{"version":3,"file":"vendor.e552cf92.js","mappings":"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WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,qBAEHJ,GAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IA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AI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKkZ,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,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AClBq3hB,eAAgBr3hB,OAChBs3hB,WAAYt3hB,OACZu3hB,gBAAiBv4U,GACjBw4U,aAAcx4U,GACdy4U,cAAez4U,GACf04U,iBAAkB14U,GAClB24U,iBAAkB34U,GAClB44U,cAAe54U,GACf64U,YAAa74U,GACb84U,UAAWpxc,QACXqxc,eAAgB/3hB,OAChBg4hB,gBAAiBh5U,GACjBi5U,mBAAoBj5U,GACpBk5U,gBAAiBl5U,GACjBm5U,iBAAkBn5U,GAClBo5U,oBAAqBp5U,GACrBq5U,oBAAqBr5U,GACrBs5U,iBAAkBt5U,GAClBu5U,kBAAmBv5U,GACnBw5U,qBAAsBx5U,GACtBy5U,aAAcz5U,GACd05U,gBAAiB15U,GACjB25U,YAAa/ohB,OACbgphB,kBAAmB7O,EACnB8O,WAAY74hB,OACZ84hB,iBAAkB95U,GAClB+5U,cAAe/5U,GACfg6U,eAAgBh6U,GAChBi6U,kBAAmBj6U,GACnBk6U,aAActphB,OACduphB,SAAUzyc,QACV0yc,gBAAiB3H,GACjB4H,cAAezphB,OACf0phB,aAAct6U,GACdu6U,aAAcv6U,GACdw6U,kBAAmB5phB,OACnB6phB,WAAY/yc,QACZgzc,qBAAsB9phB,OACtB+phB,oBAAqB/phB,OACrBgqhB,aAAclzc,QACdmzc,cAAejqhB,OACfkqhB,eAAgBlqhB,OAChBmqhB,cAAenqhB,OACfoqhB,iBAAkBpqhB,OAClBqqhB,iBAAkBvzc,QAClBv8D,QAAS60L,GACTk7U,SAAUtqhB,OACVuqhB,SAAUvqhB,OACVwqhB,cAAep6hB,OACfq6hB,cAAetQ,EACfuQ,WAAYt7U,GACZu7U,eAAgB7zc,QAChB8zc,WAAYx7U,GACZy7U,aAAcz7U,GACd07U,YAAa17U,GACb27U,iBAAkBj0c,QAElBk0c,aAAc56hB,OACd66hB,SAAU77U,GACV87U,YAAa97U,GACb+7U,UAAW/6hB,OACXg7hB,SAAUh7hB,OACVi7hB,UAAWj7hB,OACXk7hB,cAAel8U,GACfm8U,mBAAoBn8U,GACpBo8U,gBAAiBp8U,GACjBq8U,iBAAkBr8U,GAClBs8U,oBAAqBt8U,G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ACFpyU,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAEL8tmB,MAAO,CACLhumB,EAAG,MAELiumB,MAAO,CACLjumB,EAAG,MAELgnW,GAAI,CACFlqV,EAAG,yBACHwB,EAAG,IACHpe,EAAG,KAELgumB,MAAO,CACLlumB,EAAG,MAELmumB,MAAO,CACLrxlB,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAELkumB,MAAO,CACLpumB,EAAG,MAELqumB,MAAO,CACLrumB,EAAG,MAELsumB,MAAO,CACLtumB,EAAG,MAELuumB,MAAO,CACLvumB,EAAG,MAELwumB,MAAO,CACLxumB,EAAG,MAELyumB,IAAK,CACH3xlB,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAELwumB,OAAQ,CACN1umB,EAAG,OAELi9V,GAAI,CACFngV,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAELyumB,MAAO,CACL3umB,EAAG,MAEL4umB,IAAK,CACH9xlB,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAEL2umB,OAAQ,CACN7umB,EAAG,OAEL8umB,IAAK,CACHhylB,EAAG,YACHwB,EAAG,IACHpe,EAAG,KAEL6umB,OAAQ,CACN/umB,EAAG,OAELgvmB,IAAK,CACHlylB,EAAG,YACHwB,EAAG,IACHpe,EAAG,KAEL+umB,OAAQ,CACNjvmB,EAAG,OAELkvmB,GAAI,CACFpylB,EAAG,YACHwB,EAAG,IACHpe,EAAG,KAELivmB,MAAO,CACLnvmB,EAAG,MAELovmB,MAAO,CACLpvmB,EAAG,MAELokZ,GAAI,CACFtnY,EAAG,gBACHwB,EAAG,IACHpe,EAAG,KAELmvmB,MAAO,CACLrvmB,EAAG,MAELsvmB,GAAI,CACFxylB,EAAG,aACHwB,EAAG,IACHpe,EAAG,KAELqvmB,MAAO,CACLvvmB,EAAG,MAELwvmB,MAAO,CACLxvmB,EAAG,MAEL0xb,GAAI,CACF50a,EAAG,gBACHwB,EAAG,IACHpe,EAAG,KAELuvmB,QAAS,CACPzvmB,EAAG,MAEL0vmB,WAAY,CACV1vmB,EAAG,MAEL2vmB,QAAS,CACP3vmB,EAAG,MAEL4vmB,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O,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MAGLwyf,EAAyB,SAAgCj0kB,GAC3D,IAiM6B6Q,EAjMzBqjkB,EAAe,SAAsB12mB,GACvC,IACIw3e,EAGAp1a,EACAjoD,EALAm0B,OAAS,EAET+2E,OAAS,EACTzjB,OAAU,EAKVyiC,EAAc,SAAqBtwD,GACrC,YAAoB,IAANA,CAChB,EAOIswD,EAAYrkI,KACdA,EAAU,CAAC,GAGbw3e,EAAWnzW,EAAYrkI,EAAQw3e,UAAY,MAAQx3e,EAAQw3e,SAASz0d,cACpEurB,EAAS+1F,EAAYrkI,EAAQsuC,QAAUo3f,EAAQqnE,EAAev1H,IAAakuD,EAAQ1liB,EAAQsuC,QAEtF+1F,EAAY/1F,EAAO76C,KAAI66C,EAASo3f,EAAQp3f,EAAO76C,IAEpD4xH,EAASgf,EAAYrkI,EAAQqlH,QAAUpB,EAAQuzX,GAAYx3e,EAAQqlH,OAE/Dgf,EAAYhf,KAASA,EAASmyX,GAElC51Y,EAAUyiC,EAAYrkI,EAAQ4hG,SAAWtzD,EAAO/9B,EAAIvQ,EAAQ4hG,QAC5Dx/B,EAAUiiE,EAAYrkI,EAAQoiE,SAAW9zB,EAAO36C,EAAIqM,EAAQoiE,QAC5DjoD,EAAQkqH,EAAYrkI,EAAQma,OAASm0B,EAAOv8B,EAAI/R,EAAQma,MAKxD,IAAIw8lB,EAAgB,SAAuB/0gB,GAezC,IAdA,IAAIpY,EAAgB,EAChBothB,EAAe,GACfC,EAAc,GACdC,EAAe,GAIfC,GAAiB,EACjBC,GAAkB,EAClBC,GAAe,EAEfC,EAAqB,EACrBC,EAAa,EAER1hnB,EAAI,EAAGA,EAAImsG,EAAQp9F,SAAU/O,EAAG,CACvC,IAAIO,EAAI4rG,EAAQnsG,GAUhB,QARKshnB,GAAkB,CAAC,IAAK,IAAK,IAAK,KAAKp+mB,QAAQ3C,IAAM,IACxD+gnB,GAAiB,GAGdA,IACHH,GAAgB5gnB,GAGVA,GACN,IAAK,MACDkhnB,EACF,MAEF,IAAK,IACCF,IACAxthB,KAEA0thB,IAAqBC,GAEzB,MAEF,IAAK,IACHL,EAAa5ymB,KAAKgzmB,GAClBA,EAAqB,EACrB,MAEF,IAAK,IACHJ,EAAa5ymB,KAAKgzmB,GAClBF,GAAkB,GAIlBD,GAAoB,CAAC,IAAK,IAAK,IAAK,KAAKp+mB,QAAQ3C,IAAM,IACzDihnB,GAAe,EAEVD,GACHF,EAAa5ymB,KAAKgzmB,IAIlBD,IACFJ,GAAe7gnB,EAEnB,CAUA,MARqB,CACnBwzF,cAAeA,EACfothB,aAAcA,EACdC,YAAaA,EACbC,aAAcA,EACdK,WAAYA,EAIhB,EASIvokB,EAAS,SAAgB39B,EAAGa,GAC9B,IAEIslmB,EA7GQ,SAAiBnmmB,EAAG23E,GAChC,SAAUhzF,KAAK+F,QAAQsV,EAAI,IAAM23E,IAAc,KAAOA,IAAYulD,QAAQvlD,EAC5E,CAyGwBulD,CAAQv4I,KAAKM,IAAI+a,GAAIa,EAAE03E,eAEXl4F,MAAM,KAGxC,GAAIwgB,EAAEglmB,aAAatymB,OAAS,EAAG,CAK7B,IAJA,IAAI0rC,EAAU,GACVgtC,EAASk6hB,EAAY,GAAG5ymB,OACxBm6d,EAAa7sd,EAAEglmB,aAAatymB,OAAS,EAElC04E,EAAS,GAAG,CACbyhZ,GAAc,IAChBA,EAAa,GAGf,IAAIu4I,EAAqBplmB,EAAEglmB,aAAan4I,GAEpC9he,EAAQqgF,EAASg6hB,EAErBhnkB,EAAUknkB,EAAY,GAAG79gB,UAAU18F,EAAOqgF,GAAUprE,EAAEqI,MAAQ+1B,EAE9DgtC,GAAUg6hB,IAERv4I,CACJ,CAEAzub,EAAUA,EAAQqpD,UAAU,EAAGrpD,EAAQ1rC,OAAS,EAElD,CAQA,OANI0rC,EAAQ1rC,OAASsN,EAAEqlmB,aACrBjnkB,EAtCM,SAAaj/B,EAAGna,GAExB,OADAma,GAAQ,IACCzM,QAAU1N,EAAQma,EAAI,IAAIvM,MAAM5N,EAAQma,EAAEzM,OAAS,GAAG8J,KAAK,KAAO2C,CAC7E,CAmCc2mJ,CAAI1nH,EAASp+B,EAAEqlmB,cAGLrlmB,EAAE8kmB,aAAe1mkB,GAAWm0F,EAAY+ye,EAAY,IAAM,GAAKtlmB,EAAEswD,QAAUg1iB,EAAY,IAAMtlmB,EAAE+kmB,aAE9F1inB,QAAQ,IAAKkxH,EACtC,EAGIgyf,EAAez1gB,EAAQtwG,MAAM,KAC7BgmnB,EAAiBX,EAAcU,EAAa,IAEhDC,EAAejyf,OAASA,EACxBiyf,EAAel1iB,QAAUA,EACzBk1iB,EAAen9lB,MAAQA,EAEvB,IAAIo9lB,EAAiBlze,EAAYgze,EAAa,IAAMV,EAAc,IAAMU,EAAa,IAAMV,EAAcU,EAAa,IAEtHE,EAAelyf,OAASA,EACxBkyf,EAAen1iB,QAAUA,EACzBm1iB,EAAep9lB,MAAQA,EAEvB,IAAIg+e,EAAO9zX,EAAYgze,EAAa,IAAMzokB,EAAO,EAAG0okB,GAAkBD,EAAa,GAMnF,OAJKhze,EAAYgze,EAAa,MAC5Bt2E,WAAas2E,EAAa,IAGrB,SAAUpmmB,GAUf,OARAA,EAAIsP,OAAOtP,IACH,EACY29B,EAAO39B,EAAGqmmB,GACd,GAALrmmB,EACSknf,EAAKhkgB,QAAQ,IAAKkxH,GAElBz2E,EAAO39B,EAAGsmmB,EAGhC,CACF,EASI//H,GADWh1c,EAAMg1kB,SACNh1kB,EAAMg1c,UACjBnyX,EAAS7iF,EAAM6iF,OACf/2E,EAAS9L,EAAM8L,OACf8zB,EAAU5/B,EAAM4/B,QAChBjoD,EAAQqoB,EAAMroB,MACdynF,EAAUp/D,EAAMo/D,QAGpB,OAf6BvuD,EAef7Q,EAAMg1kB,SAdMd,EAcI,CAC5Bl/H,SAAUA,EACVnyX,OAAQA,EACR/2E,OAAQA,EACR8zB,QAASA,EACTjoD,MAAOA,EACPynF,QAASA,GAlBF61gB,CAAkBpkkB,EAoB7B,EAgBA,OAdAojkB,EAAuBhtZ,aAAe,CACpC+tR,SAAU,OAGZi/H,EAAuB3sZ,UAAY,CACjC0tZ,SAAUzxf,EAAU1yE,OAAO4xE,WAC3BuyX,SAAUzxX,EAAU7xH,OACpBmxH,OAAQU,EAAU7xH,OAClBo6C,OAAQy3E,EAAU7xH,OAClBkuE,QAAS2jD,EAAU7xH,OACnBimB,MAAO4rG,EAAU7xH,OACjB0tG,QAASmkB,EAAU7xH,QAGduinB,CAEN,CA/nGgF9hnB,CAAQ,EAAQ,OAAU,EAAQ,M,+BCAnH,IAAI89F,EAAa,EAAQ,OACrB49B,EAAQ,EAAQ,OAChB5f,EAAc,EAAQ,OACtBr5G,EAAW,EAAQ,KACnBgX,EAAO,cACPspmB,EAAc,EAAQ,OAEtB50lB,EAAS2tF,EAAY,GAAG3tF,QACxB60lB,EAAcllhB,EAAW1xE,WACzBnsB,EAAS69F,EAAW79F,OACpBgjnB,EAAWhjnB,GAAUA,EAAO0d,SAC5Bq+G,EAAS,EAAIgnf,EAAYD,EAAc,QAAU,KAE/CE,IAAavnf,EAAM,WAAcsnf,EAAYz9mB,OAAO09mB,GAAY,GAItE9lhB,EAAOj9F,QAAU87H,EAAS,SAAoBz8H,GAC5C,IAAI2jnB,EAAgBzpmB,EAAKhX,EAASlD,IAC9BqP,EAASo0mB,EAAYE,GACzB,OAAkB,IAAXt0mB,GAA6C,MAA7Buf,EAAO+0lB,EAAe,IAAc,EAAIt0mB,CACjE,EAAIo0mB,C,kBCtBJ,MAAMxjQ,EAAY,EAAQ,OACpBrkU,EAAU,EAAQ,OAClBgokB,EAAa,EAAQ,OACrBC,EAAe,EAAQ,OACvB7tgB,EAAU,EAAQ,OAClB2wH,EAAc,EAAQ,MACtB9F,EAAe,EAAQ,MACvBijZ,EAAmB,EAAQ,OAC3Bp/Z,EAAU,EAAQ,MAClBkiB,EAAgB,EAAQ,OACxBm9Y,EAAU,EAAQ,OAClB5jZ,EAAS,EAAQ,OACjBQ,EAAO,EAAQ,OACfkG,EAAW,EAAQ,MAEnBm9Y,EAAqB,EAAQ,MAC7BC,EAAgB,EAAQ,OAExBvgnB,EAAW,CAACovC,EAAKjP,KAA8B,IAAtBiP,EAAIruC,QAAQo/B,GACrCwjM,EAAYxjM,GAAQ+iM,EAAc/iM,KAAgB,IAARA,IAAwB,IAARA,EAC1DqglB,EAAWrglB,IAAgB,IAARA,EACnBsglB,EAAUtglB,IAAgB,IAARA,EAClBuglB,EAAiB,CAACj9X,EAAWzgP,EAAKwgP,IAAiBA,EAAaC,GAChEk9X,EAAev/kB,GAAWq7L,EAAOQ,EAAKgG,EAAY7hM,KAClDwiM,EAAgBzjM,QAAgB7wB,IAAR6wB,EACxBmjM,EAAiBl0L,GAAQ6tL,EAAKgG,EAAY7zL,EAAI7jC,IAAI1I,KAGlDmkE,EAAQy8K,GAAaA,EAAU,GAE/Bm9X,EAAen9X,GAAazlP,KAAKmE,IAAImX,MAAMtb,KAAMylP,GACjDo9X,EAAep9X,GAAazlP,KAAKkE,IAAIoX,MAAMtb,KAAMylP,GAYvD,SAASq9X,EAAShjZ,GAChB,IAAI,MAAE6X,EAAQ,MAAO7rI,GAASg0H,EAE9B,OADAh0H,EAAOo5H,EAAcpF,GAAUh0H,EAAOg0H,EAC/B,CAACh0H,KAAS6rI,EAAMpqO,IAAIu1mB,GAC7B,CAEA,SAASr9Y,EAAUC,EAAS1gO,GAC1B,OAAO0gO,EAAQn4N,IAAIuyN,GAAUA,GAAUA,EAAO96N,GAChD,CAYA,SAASH,EAAKioB,GACZ,OAAIo4M,EAAcp4M,IAAQhe,MAAMyb,QAAQuC,GAC/BxoB,OAAOO,KAAKioB,GAEZ,EAEX,CAEA,SAASi2lB,EAAqBC,EAAaC,GAEzC,GADAA,EAAeA,GAAgB,IAC1BD,EAAYp0mB,OACf,OAAOq0mB,EAGT,MAAM7/kB,EAAS4/kB,EAAY1tmB,MAAM,GAAGotC,QAC9B14B,EAAOg5lB,EAAY1tmB,MAAM,GAC/B,OAAI2tmB,EAAar0mB,OACRm0mB,EAAqB/4lB,EAAMsqF,EAAQ2ugB,EAAa11mB,IAAIq9V,GAAexnU,EAAO71B,IAAIigB,GAAS,CAACA,GAAMhlB,OAAOoiW,OAEvGm4Q,EAAqB/4lB,EAAMoZ,EAAO71B,IAAIigB,GAAQ,GACvD,CAEA,SAAS01lB,EAAkB9/kB,EAAQg5U,GACjC,IAAI+mQ,EACJ,IACEA,EAAS//kB,EAAO71B,IAAI,SAAS40B,GAC3B,OAAOhe,KAAKC,UAAU+d,EAAK,KAAM,EACnC,GAAGzpB,KAAK,KACV,CAAE,MAAOgjN,GACPynZ,EAAS//kB,EAAO1qB,KAAK,KACvB,CACA,MAAM,IAAIqJ,MAAM,sCAAwCq6V,EAAM1jW,KAAK,KAAO,gDAAkDyqmB,EAC9H,CAEA,SAASC,EAAkBC,EAAiBC,EAAc59Y,EAAS8f,EAAcp7O,EAAS44G,GACxF,GAAIqggB,EAAgBz0mB,OAAQ,CAC1B,MAAM20mB,EAAiBn5mB,EAAQo5mB,iBAAiBF,GAChD,IAAKC,IAAmBA,EAAelykB,SACrC,MAAM,IAAItvB,MAAM,yBAA2BuhmB,GAK7C,MAAMG,EAAwB/9Y,EAAQn4N,IAAIuyN,GAAUujZ,EAAgBv+mB,OAAO,CAACw7C,EAAKt7C,UAC3DsM,IAAhBwuN,EAAO96N,KAAoBs7C,EAAIt7C,GAAO86N,EAAO96N,IAC1Cs7C,GACN,CAAC,IACEolT,EAASvgI,EAASs+Y,EAAuBvpkB,GAGzCwrM,EAAU69X,EAAepsY,SAASryO,OAAO,CAACw7C,EAAKt7C,KAAQ,IACxDs7C,EACH,CAACt7C,GAAM,CAAC0gO,EAASg+Y,EAAW,KAAOl+X,EAAa9f,EAAS,KAAM1iH,EAAQx6G,OAAOxD,EAAK0+mB,MACjF,CAAC,GAEC/1mB,EAAS41mB,EAAelykB,SAASq0T,EAAQ1iP,EAAQx6G,OAAO86mB,GAAe59X,EAASt7O,GAMtF,OAJK86N,EAAcv3N,IACjBu1mB,EAAkBx9Q,EAAQ1iP,EAAQx6G,OAAO86mB,IAGpC31mB,CACT,CACF,CAEA,SAASg2mB,EAAwBvykB,GAC/B,MAAO,CAAE+mM,SAAU/mM,EACrB,CAEA,MAAMwykB,EAAmB,CAAC,aAAc,oBAAqB,cAAe,gBACtEC,EAAe,CAAC,QAAS,SACzBC,EAAc,CAClB,uBACA,kBACA,WACA,gBACA,MACA,SAGIC,EAAmB,CACvB,IAAAv5lB,CAAKi7N,GACH,GAAIA,EAAU34O,KAAKgC,MAAMyb,SAAU,CACjC,MAAMkvE,EAAagsJ,EAAUl4O,IAAI,SAAS40B,GACxC,OAAOrzB,MAAMyb,QAAQ4X,GACjBA,EACA,CAACA,EACP,GACMw1D,EAASwnI,EAAa7jN,MAAM,KAAMm+E,GAExC,GAAsB,IAAlB9B,EAAO/oF,OACT,OAAO+oF,EAAO,GACT,GAAIA,EAAO/oF,OAAS,EACzB,OAAOqwN,EAAKtnI,EAEhB,CACF,EACAqgJ,aAAY,CAACyN,EAAW22H,EAAO52H,IACTlgB,EAAcmgB,GAEf3gP,OAAO,SAASw7C,EAAK0jkB,GACtC,MAAMC,EAAex+Y,EAAUggB,EAAWu+X,GAC1C,IAAIE,EAAiB/+Y,EAAS8+Y,EAAax4mB,OAAOm6N,GAAe5iB,GAGjE,MAAMmha,EAAcD,EAAez4mB,OAAOqD,MAAMyb,SAEhD,GAAI45lB,EAAYv1mB,OAAQ,CACtB,GAAIu1mB,EAAYv1mB,SAAWs1mB,EAAet1mB,OACxC0xC,EAAI0jkB,GAAYrB,EAAYuB,OACvB,CACL,MAAME,EAAeF,EAAez4mB,OAAOk6N,GACrC0+Y,EAAmBF,EAAY52mB,IAAIo2mB,GACzCrjkB,EAAI0jkB,GAAYx+X,EAAa4+X,EAAa57mB,OAAO67mB,GAAmBL,EACtE,CACA,OAAO1jkB,CACT,CAKA,OAHA4jkB,EAAiB/+Y,EAAS++Y,EAAgBhqkB,GAE1CoG,EAAI0jkB,GAAYx+X,EAAa0+X,EAAgBF,GACtC1jkB,CACT,EAAG,CAAC,GAEN,KAAAwvE,CAAM21H,EAAW22H,EAAO52H,GACtB,MACM73O,EAxIV,SAA8B22mB,EAAc9+X,GAC1C,OAAO8+X,EAAa/2mB,IAAI,SAASm4N,EAAS10N,GACxC,IACE,OAAOw0O,EAAa9f,EAAS10N,EAC/B,CAAE,MAAOxR,GACP,MACF,CACF,GAAGiM,OAAOm6N,EACZ,CAgImB2+Y,CADMxB,EAAqBxkQ,EAAU94H,IACFD,GAC5CkgH,EAASvgI,EAASx3N,EAAQusC,GAEhC,GAAIwrT,EAAO92V,OACT,OAAO82V,CAEX,EACAluH,IAAIiO,IACK,CAAE7N,MAAO6N,IAElBz5I,QAAQy5I,GACCA,EAAUl4O,IAAIgnB,GAAK,MAAQA,EAAI,KAAK7b,KAAK,IAElD,UAAA8/N,CAAWiN,GACT,IAAI++X,EAAW/+X,EAAUnwO,MAAM,GAC3BioC,EAAS,EACb,KAAOinkB,EAAS13mB,KAAKuO,IAAMsP,OAAO+0F,UAAUrkG,KAC1CmpmB,EAAWA,EAASj3mB,IAAI8N,GAAS,GAAJA,GAC7BkiC,GAAkB,GAEpB,OAAO2kkB,EAAWsC,GAAYjnkB,CAChC,EACA,IAAA06L,CAAKwN,GACH,MAAM29H,EAAQg/P,EAAiB9mmB,MAAM,KAAMmqO,EAAUj9O,OAAOw6M,IAC5D,GAAIogK,EAAMx0W,OACR,OAAO6vN,EAAO2kJ,EAElB,GAGF2gQ,EAAiBprU,IAAM3vO,EACvB+6iB,EAAiBvjZ,KAAOx3J,EACxB+6iB,EAAiBzjZ,QAAUt3J,EAC3B+6iB,EAAiB1sY,gBAAkBqrY,EACnCqB,EAAiBzsY,qBAAuBorY,EACxCqB,EAAiBnsY,MAAQmsY,EAAiBj0f,MAC1Ci0f,EAAiB/hnB,SAAW0gnB,EAC5BqB,EAAiB/mhB,QAAUh0B,EAC3B+6iB,EAAiBjsY,YAAcisY,EAAiB/rY,aAChD+rY,EAAiBz2e,YAActkE,EAC/B+6iB,EAAiBt1P,SApMAhpI,GAAatgB,EAAS7wH,EAAQmxI,GAAYziC,GAqM3D+ga,EAAiBzrY,iBAAmBuqY,EACpCkB,EAAiBxrY,iBAAmBqqY,EACpCmB,EAAiBr1kB,MAAQ6zkB,EACzBwB,EAAiB3rY,QAAUyqY,EAC3BkB,EAAiBprY,SAAWkqY,EAC5BkB,EAAiBtrY,UAAYoqY,EAC7BkB,EAAiBjrY,cAAgB+pY,EACjCkB,EAAiB1rY,QAAUuqY,EAC3BmB,EAAiBnrY,SAAWgqY,EAC5BmB,EAAiBrrY,UAAYkqY,EAC7BmB,EAAiBhrY,cAAgB6pY,EACjCmB,EAAiB7kkB,WAAaojkB,EAC9ByB,EAAiBxsY,cAAgBmrY,EACjCqB,EAAiB5rY,SAtNAsN,GAAak9X,EAAYl9X,GAuN1Cs+X,EAAiBjzjB,MAAQkY,EACzB+6iB,EAAiBlrY,YArNG4M,GAAaA,EAAU34O,KAAK21mB,GAuNhD,MAAMgC,EAA0B,CAC9BvlkB,WAAYojkB,EACZ5zkB,MAAO6zkB,GAGT,SAAS/1lB,EAAOmqN,EAAYvsO,EAASs6mB,GACnCA,EAAeA,GAAgB,GAC/Bt6mB,EAAU+3mB,EAAa/3mB,EAAS,CAC9Bu7O,4BAA4B,EAC5Bg/X,UAAWZ,EACXP,iBAAkBiB,EAClBxzW,MAAM,IAGR,MAAMuyW,EAAmBl/mB,OAAOo7D,QAAQt1D,EAAQo5mB,kBAwE1CvzmB,EAtEN,SAASu1O,EAAa9f,EAAS7/K,EAAMm9D,GACnC0iH,EAAU64I,EAAU74I,EAAQj6N,OAAOm6N,IACnC5iH,EAAUA,GAAW,GACrB,MAAM/yG,EAASi1N,EAAcr/K,GACzBA,EACA,CAAC,EAGL,IAAK6/K,EAAQ92N,OACX,OAGF,GAAI82N,EAAQ54N,KAAK01mB,GACf,OAAO,EAGT,GAAI98Y,EAAQ1wN,MAAMytmB,GAChB,OAAO,EAIT/8Y,EAAUA,EAAQj6N,OAAOy5N,GAEzB,MAAM1zL,EAAU8zL,EAAcI,GAC9B,GAAIt7N,EAAQ6mQ,MAAQjvQ,EAASwvC,EAAS,SACpC,OAAOhlB,EAAO,CACZmrN,MAAOjS,GACNt7N,EAASs6mB,GAGd,MAAME,EAAiBpB,EAAiBj2mB,IAAI,EAAEs3mB,EAAaC,KACzDtzkB,EAAQ/lC,OAAOwgB,GAAK64lB,EAAa3tY,SAAShnM,SAASlkB,KAgCrD,OA7BA24lB,EAAep4mB,QAAQ3H,GAAQw9mB,EAAQ7wkB,EAAS3sC,IAGhD2sC,EAAQhlC,QAAQ,SAASxH,GACvB,MAAMo+B,EAASqiM,EAAUC,EAAS1gO,GAC5BygP,EAAYtgB,EAAS/hM,EAAO33B,OAAOm6N,GA3Q/C,SAAqB5gO,GACnB,OAAO,SAASoP,EAAGC,GACjB,OAAO6lC,EAAQ,CACb,CAACl1C,GAAMoP,GACN,CAAE,CAACpP,GAAMqP,GACd,CACF,CAqQ8D0wmB,CAAY//mB,IAIpE,GAAyB,IAArBygP,EAAU72O,QAAgB5M,EAAS6hnB,EAAc7+mB,GACnDiL,EAAOjL,GAAOygP,EAAU,GAAGl4O,IAAIuyN,GAAU0lB,EAAa,CAAC1lB,GAASA,SAE3D,GAAyB,IAArB2lB,EAAU72O,QAAiB5M,EAAS4hnB,EAAkB5+mB,IAAShD,EAAS8hnB,EAAa9+mB,GAEzF,CACL,MAAMqsC,EAAWjnC,EAAQu6mB,UAAU3/mB,IAAQoF,EAAQu6mB,UAAUK,gBAC7D,IAAK3zkB,EAAU,MAAM,IAAItvB,MAAM,6BAA+B/c,EAAM,gGAEpE,MAAMwnB,EAAS,CAACk5M,EAASg+Y,EAAW,KAAOl+X,EAAa9f,EAAS,KAAM1iH,EAAQx6G,OAAOxD,EAAK0+mB,IAC3FzzmB,EAAOjL,GAAOqsC,EAASo0M,EAAWziI,EAAQx6G,OAAOxD,GAAMwnB,EAAQpiB,QAE3CkH,IAAhBrB,EAAOjL,GACTk+mB,EAAkBz9X,EAAWziI,EAAQx6G,OAAOxD,SACnBsM,IAAhBrB,EAAOjL,WACTiL,EAAOjL,EAElB,MAbEiL,EAAOjL,GAAOygP,EAAU,EAc5B,GAEO+9X,EAAiB1+mB,OAAO,CAACw7C,GAAM2kkB,EAAiB1rmB,GAASvI,KAAU,IACrEsvC,KACA8ikB,EAAkBwB,EAAe5zmB,GAAQi0mB,EAAiBv/Y,EAAS8f,EAAcp7O,EAAS44G,KAC3F/yG,EACN,CAGeu1O,CADIvgB,EAAY69Y,EAASnsY,KAGxC,OAAO1mO,CACT,CAEAuc,EAAOpiB,QAAU,CACfu6mB,UAAWZ,GAGb7nhB,EAAOj9F,QAAUutB,C,+BCrVjB,IAAI8yN,EAAoB,2BACpBpkO,EAAS,EAAQ,MACjB2+W,EAA2B,EAAQ,MACnCh0H,EAAiB,EAAQ,OACzB8pO,EAAY,EAAQ,OAEpBu1I,EAAa,WAAc,OAAO1qmB,IAAM,EAE5C0hF,EAAOj9F,QAAU,SAAUkmnB,EAAqBC,EAAM9inB,EAAM+inB,GAC1D,IAAIr4W,EAAgBo4W,EAAO,YAI3B,OAHAD,EAAoBvqmB,UAAYM,EAAOokO,EAAmB,CAAEh9O,KAAMu3X,IAA2BwrP,EAAiB/inB,KAC9GujQ,EAAes/W,EAAqBn4W,GAAe,GAAO,GAC1D2iO,EAAU3iO,GAAiBk4W,EACpBC,CACT,C,qCCdA,IACQ7qmB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAUAsqmB,EAAkC,SAAU9mmB,GAO5C,SAAS8mmB,EAAiB/smB,EAAI+O,GAC1B,IAAI5I,EAAQF,EAAO3D,KAAKL,OAASA,KAWjC,OAVAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3BnG,GAAI,CACA2tB,YAAY,EACZ/lC,MAAOoY,GAEX+O,KAAM,CACF4e,YAAY,EACZ/lC,MAAOmnB,KAGR5I,CACX,CASA,OA5BAnE,EAAU+qmB,EAAkB9mmB,GAyB5B8mmB,EAAiB1qmB,UAAUsF,KAAO,WAC9B1F,KAAK6K,KAAK,UACd,EACOigmB,CACX,CA9BqC,CARV,EAAQ,QA2CnCpphB,EAAOj9F,QAAUqmnB,C,+BC1DjBpphB,EAAOj9F,QAAU,CACbioO,gBAAiB,EAAQ,OACzByvB,gBAAiB,EAAQ,OACzBqO,eAAgB,EAAQ,O,+BCJf,SAASzxI,EAAQzmG,GAA+B,OAAOymG,EAAQ,mBAAmBv0H,QAAQ,iBAAiBA,OAAO0d,SAAS,SAASoQ,GAAK,cAAcA,CAAG,EAAE,SAASA,GAAK,OAAOA,GAAK,mBAAmB9tB,QAAQ8tB,EAAI7R,cAAcjc,QAAQ8tB,IAAM9tB,OAAO4b,UAAU,gBAAgBkS,CAAG,EAAEymG,EAAQzmG,EAAI,CAACxoB,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,QAAyyC,SAAqBm6X,EAAahvX,GAAS,IAAIm7mB,GAAa,EAAGC,EAA0B,SAAGpsP,EAAahvX,GAAa06P,GAAM,EAAG27E,EAAO/mU,aAAa,SAAS9T,GAAM,IAAIosH,EAASpsH,EAAKosH,SAAS,OAAOyuN,EAAgB,QAAEl5T,cAAck+lB,EAA+B,QAAEjtR,SAAS,CAACr4V,MAAMolnB,GAAcvzf,EAAS,EAAE,CAACuzf,IAAmI,OAApH,EAAG9kS,EAAOyY,eAAeqsR,EAAa/rP,SAASsuN,gBAAgB,SAASA,GAAiB,OAAOA,GAAiB,IAAS,EAAGrnQ,EAAOrmU,SAAS,WAAW,MAAM,CAAC0qP,MAAMA,EAAMgjV,gBAAgBy9B,EAAa/rP,SAASsuN,gBAAgBvuN,WAAWgsP,EAAa/rP,SAAStrR,SAAS,EAAE,CAACq3gB,EAAazgX,GAAO,EAA33D,IAAI27E,EAAolB,SAAiC3zT,EAAIqzjB,GAAa,GAAiBrzjB,GAAKA,EAAIiwE,WAAY,OAAOjwE,EAAI,GAAS,OAANA,GAA2B,WAAfymG,EAAQzmG,IAA8B,mBAANA,EAAkB,MAAM,CAAC,QAAUA,GAAK,IAAIia,EAAMq5iB,EAAyBD,GAAa,GAAGp5iB,GAAOA,EAAM54B,IAAI2e,GAAM,OAAOia,EAAM14B,IAAIye,GAAK,IAAIm3G,EAAO,CAAC,EAAMo8c,EAAsB/7kB,OAAOwY,gBAAgBxY,OAAOyrC,yBAAyB,IAAI,IAAI/qC,KAAO8nB,EAAK,GAAS,YAAN9nB,GAAiBV,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAI9nB,GAAK,CAAC,IAAIkhH,EAAKm6d,EAAsB/7kB,OAAOyrC,yBAAyBjjB,EAAI9nB,GAAK,KAAQkhH,IAAOA,EAAK73G,KAAK63G,EAAK33G,KAAMjK,OAAOwY,eAAemnH,EAAOj/H,EAAIkhH,GAAW+d,EAAOj/H,GAAK8nB,EAAI9nB,EAAK,CAAwD,OAAtDi/H,EAAgB,QAAEn3G,EAAOia,GAAOA,EAAMx4B,IAAIue,EAAIm3G,GAAeA,CAAM,CAA/wCq8c,CAAwB,EAAQ,QAAcmlC,EAAsB9yf,EAAuB,EAAQ,QAA+B6yf,EAAiB7yf,EAAuB,EAAQ,QAAsB,SAASA,EAAuB7lG,GAAK,OAAOA,GAAKA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,EAAI,CAAC,SAASszjB,EAAyBD,GAAa,GAAoB,mBAAV52f,QAAqB,OAAO,KAAK,IAAIg3f,EAAkB,IAAIh3f,QAAYi3f,EAAiB,IAAIj3f,QAAQ,OAAO62f,EAAyB,SAAkCD,GAAa,OAAOA,EAAYK,EAAiBD,CAAiB,GAAGJ,EAAY,C,8FCGh+B,iBAA0B77d,GACxB,OAAoB,aAAiB,SAAU3pG,EAAG0yG,GAChD,OAAoB,gBAAoB,OAAO,OAAS,CAAC,EAAG1yG,EAAG,CAC7D0yG,IAAKA,EACL/I,UAAW,IAAW3pG,EAAE2pG,UAAWA,KAEvC,EACD,C,+BCTD,IAAItoB,EAAU,EAAQ,OAKtBE,EAAOj9F,QAAU6P,MAAMyb,SAAW,SAAiB4xE,GACjD,MAA6B,UAAtBH,EAAQG,EACjB,C,+BCPA73F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD,IAAIg8G,EAAW,EAAQ,OACnBC,EAAe,EAAQ,OACvBgka,EAAY,EAAQ,OACpB7vZ,EAAQ,EAAQ,OAChBm1f,EAAe,EAAQ,OACvB/rS,EAAiB,EAAQ,OAO7B,SAASgsS,EAAYx7mB,GACjB,OAAOA,EAAM4D,IACjB,CACA,SAAS63mB,EAAYz7mB,GAEjB,OADAA,EAAM2yF,KAAK+0B,QAAU,WAAc,OAAO1nH,CAAO,EAC1CA,EAAM2yF,IACjB,CACA,SAAS+ohB,EAAY17mB,GAIjB,OAHIA,EAAMlI,QAAUkI,EAAMlI,OAAOsO,OAC7BpG,EAAMoG,KAAOpG,EAAM2yF,KAAKvsF,KAAO4rG,EAASwzH,QAAQxlO,EAAMlI,OAAOsO,KAAMpG,EAAMoG,OAEtEpG,EAAMoG,IACjB,CACA,IAAIu1mB,EAAgB,SAAUC,EAA4B7ilB,GACtD,OAAO,SAAoB/4B,GACvB,IAAI67mB,EAAW77mB,EAGX67mB,GAAYA,EAAS/9gB,KAAO+9gB,EAASj4mB,MAAQi4mB,EAASj4mB,KAAKvP,MAAM,aACjEwnnB,EAAS/9gB,KAAO,mBAEpB,IAAIt1D,EA3BG,SAAUs1D,GACrB,IAAKmU,EAAa2B,SAAS9V,GACvB,OAAO,EACX,IAAI/kE,EAAyB,MAAlB+kE,EAAI/6E,OAAO,GACtB,MAAO,CAAEiV,IAAKe,EAAO+kE,EAAItE,UAAU,GAAKsE,EAAK/kE,KAAMA,EACvD,CAsBqB61S,CAASitS,EAAS/9gB,KAAMhmG,EAASkI,EAAMlI,OAChDgmG,EAAOt1D,EAAwBozkB,EAA2B/ngB,QAAQrrE,EAAOxQ,IAAK,CAC9Ew4B,OAAQxwD,EAAMwwD,QAAU,CAAC,EACzBsrjB,SAAU,SAAUC,EAAaC,GAG7B,OAFgC,IAA5BH,EAASI,gBAA4BD,IACrCD,EAAc/pgB,EAASqB,OAAO0ogB,GAAe,CAAC,EAAG,CAAE70f,SAAS,KACzD60f,CACX,IANgBF,EAAS/9gB,IAQ7B,IAAKA,EACD,OAAO,KACX,IAAK89gB,EAA2B9ngB,UAAUhW,GACtC,MAAM,IAAIlmF,MAAM,gBAAkBkmF,EAAM,eAAiB99F,EAAQ,KACrE,OAAQwoC,GAAUA,EAAOzP,KAAQ+kE,GAAQhmG,GAAUA,EAAOsvH,WAAcruF,KAAQ+kE,IAAI8iC,OAAO9iC,EAC/F,CACJ,EACIo+gB,EAAsB,SAAUtxY,GAChC,OAAO,SAA0B5qO,GAC7B,OAAQ4qO,EAAO5qO,IAAUA,EAAM89F,IAAM99F,EAASA,EAAMlI,OAASkI,EAAMlI,OAAOsvH,UAAY,IAC1F,CACJ,EASA,SAAS+0f,EAAYn8mB,GACjB,OAAOA,EAAMlI,OAASkI,EAAMlI,OAAOohF,KAAK76E,OAAO2B,GAAkB,CAACA,EACtE,CACA,SAASo8mB,EAAgBp8mB,GACrB,IAAIgmC,EAAWhmC,EAAMlI,OAASk6G,EAASqB,OAAO,CAAC,EAAGrzG,EAAMlI,OAAOkuC,UAAY,CAAC,EAE5E,OADAA,EAAShmC,EAAM4D,OAAQ,EAChBoiC,CACX,CA0CA,SAASq2kB,EAAmBr8mB,GAExB,IAA+Bs8mB,EAAYC,EAkBvCC,EAAW,SAAUhsmB,GAAK,OAAOA,EAAEismB,SAAWjsmB,EAAE8D,KAAO,EAEvDoomB,EAAqBt2f,EAAMvkB,QAAQ,CACnC,CAACukB,EAAMzjF,KAAK,aAAc,SAAUnyB,GAAK,OAAO,IAAI+qmB,EAAanlG,WAAWomG,EAAShsmB,GAAIA,EAAE6lgB,UAAW7lgB,EAAE+1L,KAAM/1L,EAAE8lgB,OAAS,GACzH,CAAClwZ,EAAMzjF,KAAK,cAAe,SAAUnyB,GAAK,OAAO,IAAI+qmB,EAAanlG,WAAWomG,EAAShsmB,GAAIA,EAAEmsmB,WAAansmB,EAAE+1L,MAAQ/1L,EAAEq9N,aAAer9N,EAAE8lgB,OAAS,GAC/I,CAAClwZ,EAAMzjF,KAAK,YAAa,SAAUnyB,GAAK,OAAO,IAAI+qmB,EAAanlG,WAAWomG,EAAShsmB,GAAI,WAAc,OAAO,IAAIA,EAAEosmB,QAAY,EAAG,GAAIpsmB,EAAE8lgB,OAAS,GACjJ,CAAClwZ,EAAMzjF,KAAK,YAAa,SAAUnyB,GAAK,OAAO,IAAI+qmB,EAAanlG,WAAWomG,EAAShsmB,GAAI,WAAc,OAAOA,EAAEqsmB,QAAU,EAAG,GAAIrsmB,EAAE8lgB,OAAQ9lgB,EAAEqsmB,SAAW,GACvJ,CAACz2f,EAAMzjF,KAAK,eAAgB,SAAUnyB,GAAK,OAAO,IAAI+qmB,EAAanlG,WAAWomG,EAAShsmB,GAAIwhG,EAAS49G,SAAU,CAACp/M,EAAEssmB,aAActsmB,EAAE8lgB,OAAS,KAE1IymG,EAAmB32f,EAAMvkB,QAAQ,CACjC,CAACukB,EAAM42f,KAAK52f,EAAMzjF,KAAK,OAAQsvE,EAAa2B,UAAW,SAAUgf,GAAS,OAAO,IAAI2of,EAAanlG,WAAWxjZ,EAAMt+G,MAAO09F,EAAS49G,SAAU,CAACh9F,EAAM56F,KAAM46F,EAAM0jZ,OAAS,GACzK,CAAClwZ,EAAM42f,KAAK52f,EAAMzjF,KAAK,OAAQsvE,EAAa7xF,SAAU,SAAUwyG,GAAS,OAAO,IAAI2of,EAAanlG,WAAWxjZ,EAAMt+G,MAAO09F,EAAS+yH,KAAKnyG,EAAM56F,KAAM46F,EAAM56F,IAAI7sB,MAAM,GAAI,GAAIynH,EAAM0jZ,OAAS,GAC1L,CAAClwZ,EAAM42f,KAAK52f,EAAMzjF,KAAK,OAAQsvE,EAAa/uF,YAAa,SAAU0vG,GAAS,OAAO,IAAI2of,EAAanlG,WAAWxjZ,EAAMt+G,MAAOs+G,EAAM56F,KA1B7G7yB,EA0B2HytH,EAAM56F,IAzBlJw+F,EAAYg5M,EAAegC,SAASh7M,UAIjCrxH,EAAY,SAAMqxH,GAAaA,EAAUoiJ,SAASzzQ,EAAIqxH,EAAU60I,WAAc,YAqBuEz4I,EAAM0jZ,QA1BvJ,IAAUnxgB,EACjBqxH,CAyBuK,KAE3Kymf,EAAkB72f,EAAMvkB,QAAQ,CAChC,CAACukB,EAAMkP,GAAGimf,EAAanlG,YAAa,SAAUhsf,GAAK,OAAOA,CAAG,GAC7D,CAtBmB,SAAUzH,GAAO,SAAUA,EAAIrO,QAASqO,EAAI0zf,UAAY,EAsBxDqmG,GACnB,CArBoB,SAAU/5lB,GAAO,SAAWA,EAAI85lB,UAAW95lB,EAAIrO,SAAWqO,EAAIk6lB,UAAYl6lB,EAAIg6lB,YAAch6lB,EAAIm6lB,aAAen6lB,EAAIi6lB,UAAY,EAqB/HF,GACpB,CApBiB,SAAU/5lB,GAAO,SAAUA,GAAOA,EAAIqV,MAAQi6E,EAAa2B,SAASjxF,EAAIqV,MAAQi6E,EAAa7xF,QAAQuC,EAAIqV,MAAQi6E,EAAa/uF,WAAWP,EAAIqV,MAAQ,EAoBrJ+klB,GACjB,CAAC32f,EAAMpuF,KAAI,GAAO,SAAUrV,GAAO,MAAM,IAAI/K,MAAM,0BAA4Bq+f,EAAUh8f,UAAU0I,GAAO,KAI1Gu6lB,EAAOl9mB,EAAMiH,QAEjB,OADYgrG,EAAa7xF,QAAQ88lB,GAAQA,GA1CVZ,EA0CgCY,EA1CpBX,EA0C0Bv8mB,EAAM02gB,eAAiB,CAAC,EAzClFv8gB,OAAOO,KAAK4hnB,GAAc,CAAC,GAAGl5mB,IAAI,SAAUkR,GAAS,MAAO,CAAGA,MAAOA,EAAO0jB,IAAKsklB,EAAWhomB,GAAQiyL,UAAMp/L,EAAWmvgB,OAAQimG,EAAgBjomB,GAAW,KA0CvJlR,IAAI65mB,EACrB,CACAnonB,EAAQunnB,mBAAqBA,EAa7B,IAAI31f,EAA8B,WAC9B,SAASA,EAAaF,EAASG,GAC3Bt2G,KAAKm2G,QAAUA,EACf,IAxHyB7T,EAwHrBhgB,EAAOtiF,KACP0oB,EAAO,WAAc,OAAOytF,EAAQt7G,KAAK,GAAK,EAC9C0/N,EAAS,SAAU5qO,GAAS,MAAsB,KAAfA,EAAM4D,IAAa,EAM1DyM,KAAK8smB,SAAW,CACZv5mB,KAAM,CAAC43mB,GACP7ohB,KAAM,CAAC8ohB,GACP3jnB,OAAQ,CARZ,SAAuBkI,GACnB,OAAI4qO,EAAO5qO,GACA,KACJwmH,EAAQt7G,KAAKynF,EAAKyqhB,WAAWp9mB,KAAW+4B,GACnD,GAKI3yB,KAAM,CAACs1mB,GAEP59gB,IAAK,CAAC69gB,EAAch1f,EAAmB5tF,IAEvCquF,UAAW,CAAC80f,EAAoBtxY,IAChCp6K,OAAQ,EAzIamiD,EAyIKgU,EAAkBhU,aAxI7C,SAAuB3yG,GAC1B,IACIq9mB,EAAar9mB,EAAM89F,KAAO99F,EAAM89F,IAAIoqI,WAAW,CAAE1C,SAAS,KAAa,GACvE83Y,EAAetrgB,EAAS/4E,OAAO+4E,EAASmjJ,OAAOnjJ,EAAS00H,KAAK1mO,EAAMwwD,QAAU,CAAC,EAAG6sjB,EAAUj6mB,IAAIgjH,EAAMzjF,KAAK,QAFxF,SAAUvzB,EAAQhB,GAAM,OAAOukG,EAAaC,WAAWxkG,EAAI,KAAMgB,EAAS,IAGhG,OAAOiumB,EAAUh/mB,OAAOi/mB,GAAcl6mB,IAAI,SAAUoN,GAAK,MAAO,CAACA,EAAEpC,GAAIoC,EAAI,GAAG7V,OAAOq3G,EAASy/O,WAAY,CAAC,EAC/G,IAsIQxqO,MAAO,GAEP/tC,KAAM,CAACijiB,GAEPn2kB,SAAU,CAACo2kB,GACX7qR,YAAa,CAAC8qR,GAEtB,CAwEA,OA7DA31f,EAAaj2G,UAAUg2G,QAAU,SAAU7iH,EAAMuB,GAC7C,IAAIg4mB,EAAW9smB,KAAK8smB,SAChBz4lB,EAAQy4lB,EAASv5mB,IAAS,GAE9B,OAAIquG,EAAa2B,SAAShwG,KAAUquG,EAAawB,UAAUtuG,GAChDuf,EAAMjgB,OAAS,EAAIigB,EAAQA,EAAM,GACvCutF,EAAa2B,SAAShwG,IAAUquG,EAAa/uF,WAAW/d,IAE7Dg4mB,EAASv5mB,GAAQ8gB,EACjBy4lB,EAASv5mB,GAAMO,KAAKgB,GACb,WAAc,OAAOg4mB,EAASv5mB,GAAMw5B,OAAO+/kB,EAASv5mB,GAAMhL,QAAQuM,EAAI,KAAO,IAAM,QAJ1F,CAKJ,EAQAuhH,EAAaj2G,UAAUspiB,MAAQ,SAAU/5iB,GACrC,IAAewmH,EAANn2G,KAAmBm2G,QAAS22f,EAA5B9smB,KAA0C8smB,SAC/CrlnB,EAASuY,KAAK+smB,WAAWp9mB,GAC7B,GAAIlI,IAAW0uH,EAAQt7G,KAAKpT,OAAQqP,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItM,KAAOsinB,EACZ,GAAKA,EAASlhnB,eAAepB,GAA7B,CAEA,IAAI83H,EAAQwqf,EAAStinB,GAAKF,OAAO,SAAU4inB,EAAU5rmB,GAAQ,OAAO,SAAUqjG,GAAU,OAAOrjG,EAAKqjG,EAAQuogB,EAAW,CAAG,EAAGvrgB,EAAS/xF,MACtIjgB,EAAMnF,GAAO83H,EAAM3yH,EAFP,CAIhB,OAAOA,CACX,EACA0mH,EAAaj2G,UAAU2smB,WAAa,SAAUp9mB,GAE1C,IAAI4D,EAAO5D,EAAM4D,MAAQ,GAErBi0E,EAAWj0E,EAAKrS,MAAM,KAM1B,GAFoB,OAFFsmF,EAASnlE,OAGvBmlE,EAASnlE,MACTmlE,EAASpzE,OAAQ,CACjB,GAAIzE,EAAMlI,OACN,MAAM,IAAI8f,MAAM,mFAAqFhU,EAAO,KAGhH,OAAOi0E,EAAStpE,KAAK,IACzB,CACA,OAAKvO,EAAMlI,OAEJm6G,EAAa2B,SAAS5zG,EAAMlI,QAAUkI,EAAMlI,OAASkI,EAAMlI,OAAO8L,KAD9D,EAEf,EACA8iH,EAAaj2G,UAAU7M,KAAO,SAAU5D,GACpC,IAAI4D,EAAO5D,EAAM4D,KACjB,IAA2B,IAAvBA,EAAKhL,QAAQ,OAAgBoH,EAAMlI,OACnC,OAAO8L,EACX,IAAIw5mB,EAAanrgB,EAAa2B,SAAS5zG,EAAMlI,QAAUkI,EAAMlI,OAASkI,EAAMlI,OAAO8L,KACnF,OAAOw5mB,EAAaA,EAAa,IAAMx5mB,EAAOA,CAClD,EACO8iH,CACX,CAvGiC,GAwGjC5xH,EAAQ4xH,aAAeA,C,+BCrRvB,IAAIuJ,EAAc,EAAQ,OACtB7vG,EAAU,EAAQ,OAElB8wU,EAAavgV,UAEbi1B,EAA2BzrC,OAAOyrC,yBAGlC43kB,EAAoCvtf,IAAgB,WAEtD,QAAa9oH,IAATkJ,KAAoB,OAAO,EAC/B,IAEElW,OAAOwY,eAAe,GAAI,SAAU,CAAEmpB,UAAU,IAASr3B,OAAS,CACpE,CAAE,MAAO6V,GACP,OAAOA,aAAiB3J,SAC1B,CACF,CATwD,GAWxDohF,EAAOj9F,QAAU0onB,EAAoC,SAAUrylB,EAAG1mB,GAChE,GAAI2b,EAAQ+K,KAAOya,EAAyBza,EAAG,UAAU2Q,SACvD,MAAM,IAAIo1T,EAAW,gCACrB,OAAO/lU,EAAE1mB,OAASA,CACtB,EAAI,SAAU0mB,EAAG1mB,GACf,OAAO0mB,EAAE1mB,OAASA,CACpB,C,+BCzBA,IAAI6rH,EAAQ,EAAQ,OAEpBv+B,EAAOj9F,QAAU,SAAUugd,EAAarjX,GACtC,IAAIp9C,EAAS,GAAGyga,GAChB,QAASzga,GAAU07E,EAAM,WAEvB17E,EAAOlkC,KAAK,KAAMshF,GAAY,WAAc,OAAO,CAAG,EAAG,EAC3D,EACF,C,+BCLA,IAAIyrhB,EAAW,EAAQ,OACnBC,EAAuB,EAAQ,MACnC,SAASlxX,EAAgBxvB,EAAkB/8N,GACvC,IAAI0c,EAAQ,IAAI+gmB,EAAqB1gZ,EAAkB/8N,GAEvD,OADA9F,OAAOmW,eAAeqM,EAAO6vO,EAAgB/7O,WACtCkM,CACX,CACA8gmB,EAASjxX,EAAiBkxX,GAC1B3rhB,EAAOj9F,QAAU03P,C,6BCDjB,IAAWkJ,EARAg+R,EAFXv5hB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,KAE3C09hB,EAMc5+hB,EAAQ4+hB,sBAAwB5+hB,EAAQ4+hB,oBAAsB,CAAC,IALhEA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,SAGjDh+R,EAGc5gQ,EAAQ4gQ,sBAAwB5gQ,EAAQ4gQ,oBAAsB,CAAC,IAFhEA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,O,+BCZ5D,IAAI37J,EAAI,EAAQ,OACZ35E,EAAU,EAAQ,OAClBy9N,EAAgB,EAAQ,OACxBv9N,EAAW,EAAQ,OACnBuiX,EAAkB,EAAQ,OAC1BtxQ,EAAoB,EAAQ,OAC5Bw6H,EAAkB,EAAQ,OAC1BmmS,EAAiB,EAAQ,OACzBrgb,EAAkB,EAAQ,OAC1ByC,EAA+B,EAAQ,OACvCqpgB,EAAc,EAAQ,OAEtBC,EAAsBtpgB,EAA6B,SAEnD+B,EAAUxE,EAAgB,WAC1B0lJ,EAAS5yP,MACT3K,EAAMnE,KAAKmE,IAKf+/F,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,QAAS0sgB,GAAuB,CAChEzymB,MAAO,SAAerO,EAAOC,GAC3B,IAKIi7G,EAAax0G,EAAQ0N,EALrBia,EAAI4gO,EAAgB17O,MACpB5L,EAAS8sH,EAAkBpmG,GAC3BrJ,EAAI+gX,EAAgB/lY,EAAO2H,GAC3Bo5mB,EAAMh7O,OAAwB17X,IAARpK,EAAoB0H,EAAS1H,EAAK0H,GAG5D,GAAI2b,EAAQ+K,KACV6sF,EAAc7sF,EAAEra,aAEZ+sO,EAAc7lI,KAAiBA,IAAgBu/I,GAAUn3O,EAAQ43F,EAAYvnG,aAEtE6P,EAAS03F,IAEE,QADpBA,EAAcA,EAAY3B,OAF1B2B,OAAc7wG,GAKZ6wG,IAAgBu/I,QAA0BpwP,IAAhB6wG,GAC5B,OAAO2lgB,EAAYxylB,EAAGrJ,EAAG+7lB,GAI7B,IADAr6mB,EAAS,SAAqB2D,IAAhB6wG,EAA4Bu/I,EAASv/I,GAAah+G,EAAI6jnB,EAAM/7lB,EAAG,IACxE5Q,EAAI,EAAG4Q,EAAI+7lB,EAAK/7lB,IAAK5Q,IAAS4Q,KAAKqJ,GAAG+mgB,EAAe1uhB,EAAQ0N,EAAGia,EAAErJ,IAEvE,OADAte,EAAOiB,OAASyM,EACT1N,CACT,G,qCC9CF,IACQ2M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAitmB,EAA6B,EAAQ,OACrCC,EAA2B,EAAQ,OAKnCC,EAAqC,SAAU3pmB,GAW/C,SAAS2pmB,EAAoBC,EAAkBC,EAA+Bt7S,EAAao7Q,EAAeh1c,EAAgB/oI,GACtH,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAM4tmB,EAAiBt3b,IAAKs3b,EAAiBruZ,WAAav/M,KA+BlF,OA9BApQ,EAAU9F,OAAOC,OAAO,CACpB2jnB,yBAA0BA,GAC3B99mB,GACH9F,OAAO0hC,iBAAiBtnB,EAAO,CAC3B4pmB,UAAW,CACPrilB,UAAU,EACV9lC,MAAO,MAEXoonB,0BAA2B,CACvBponB,MAAOiK,EAAQ89mB,0BAEnBM,+BAAgC,CAC5BronB,MAAOkonB,GAEXI,8BAA+B,CAC3BtonB,MAAO,SAAUgyI,EAAUrjC,GAAY,OAAOi+N,EAAY56L,EAAUrjC,EAAW,GAEnF45gB,sBAAuB,CACnBvonB,MAAO,SAAUgyI,EAAUe,GAAc,OAAOi1c,EAAch2c,EAAUe,EAAa,GAEzFC,eAAgB,CACZhzI,MAAO,SAAUgyI,GAAY,OAAOgB,EAAehB,EAAW,GAElEmtN,SAAU,CACNp5T,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAK8tmB,SAChB,KAGD5pmB,EAAM9N,OAAOw3mB,EACxB,CAiDA,OA5FA7tmB,EAAU4tmB,EAAqB3pmB,GA+C/B2pmB,EAAoBvtmB,UAAU+tmB,kBAAoB,SAAUv2e,GACxD,IAAI81e,EAA2B1tmB,KAAK+tmB,0BAChCzhmB,EAAQtM,KAAKskV,OAAOzwV,IAAI+jI,EAAW0+C,KAMvC,OALKhqK,IAEDA,EAAQ,IAAIohmB,EAAyB91e,EADjB53H,KAAKgumB,+BAA+Bp2e,EAAW0+C,MAEnEt2K,KAAKuM,SAASD,IAEXA,CACX,EAMAqhmB,EAAoBvtmB,UAAUhK,OAAS,SAAUw3mB,GAC7C,IAAI1pmB,EAAQlE,KACZ,GAAsB,OAAlBA,KAAK8kV,UAAqB8oR,EAAiB9oR,UAAY9kV,KAAK8kV,SAC5D,OAAO9kV,KAEXA,KAAK8tmB,UAAYF,EAAiB9oR,SAClC,IAAIspR,EAAe,IAAIl7mB,IAWvB,OAVA06mB,EAAiBtpR,OAAOtyV,QAAQ,SAAU4lI,GACtC,IAAItrH,EAAQpI,EAAMiqmB,kBAAkBv2e,GACpCtrH,EAAMlW,OAAOwhI,GACbw2e,EAAa96mB,IAAIgZ,EACrB,GACAtM,KAAKskV,OAAOtyV,QAAQ,SAAUsa,GACrB8hmB,EAAaz6mB,IAAI2Y,IAClBpI,EAAMmqmB,YAAY/hmB,EAE1B,GACQshmB,EAAiBj+mB,OACrB,IAAK,eACDqQ,KAAK8K,aACL,MACJ,IAAK,eACD9K,KAAKg5gB,eACL,MACJ,IAAK,YACDh5gB,KAAKoG,QAAQpG,KAAKs2K,IAAKt2K,KAAKu/M,UAGpC,OAAOv/M,IACX,EACO2tmB,CACX,CA9FwC,CA8FtCF,GACF/rhB,EAAOj9F,QAAUkpnB,C,kBCpHjB,IAAIpuX,EAA8B,iBAAV,EAAA59O,GAAsB,EAAAA,GAAU,EAAAA,EAAO7X,SAAWA,QAAU,EAAA6X,EAEpF+/E,EAAOj9F,QAAU86P,C,YCiBjB79J,EAAOj9F,QAXP,SAAkB4vB,EAAOurM,GAKvB,IAJA,IAAIppN,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OACnCjB,EAASmB,MAAMF,KAEVoC,EAAQpC,GACfjB,EAAOqD,GAASopN,EAASvrM,EAAM7d,GAAQA,EAAO6d,GAEhD,OAAOlhB,CACT,C,oFCVIkgU,EAAY5nN,SAASrrG,UACrBwhF,EAAc93F,OAAOsW,UAGrBkzT,EAAeD,EAAUrsU,SAGzB4E,EAAiBg2F,EAAYh2F,eAG7B2nU,EAAmBD,EAAajzT,KAAKvW,QA2CzC,QAbA,SAAuBnE,GACrB,KAAK,OAAaA,IA5CJ,oBA4Cc,OAAWA,GACrC,OAAO,EAET,IAAIu/B,GAAQ,OAAav/B,GACzB,GAAc,OAAVu/B,EACF,OAAO,EAET,IAAI+5L,EAAOrzN,EAAeyU,KAAK6kB,EAAO,gBAAkBA,EAAMzkB,YAC9D,MAAsB,mBAARw+M,GAAsBA,aAAgBA,GAClDq0G,EAAajzT,KAAK4+M,IAASs0G,CAC/B,C,qCCzDA,IAyBI+6S,EAzBA5ugB,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACI2plB,EAAmB,mBACnB7sR,EAAY,EAAQ,OACpBr8U,EAAoBq8U,EAAUr8U,kBAAmBC,EAAsBo8U,EAAUp8U,oBACjF4T,EAAI,oBAkBJ/V,EAAqB,WASrB,SAASA,EAAI29Q,EAAY9oN,EAAWu8W,EAAWC,EAAYg6L,GACvD,GAA0B,iBAAf1tV,EACP,MAAM5nQ,EAAE+rU,aAAa,aAAc,UAEvC,IAAKjtR,EACD,MAAM9+C,EAAEu1lB,kBAAkB,aAEL,iBAAdl6L,IACPA,EAAY,CAAC,GAEjBi6L,EAAYA,GAAaD,EACzBG,EAAkBn6L,GAElBzqb,OAAO0hC,iBAAiBxrB,KAAM,CAC1B2umB,WAAY,CACRhpnB,MAAOqyE,GAEX42iB,WAAY,CACRjpnB,MAAO4ub,GAEXs6L,UAAW,CACPlpnB,MAAO,IAAIuN,KAEf47mB,YAAa,CACTj7mB,IAAK,WACD,IAAIN,EAAOihb,GAAoC,iBAAfA,EAA0BA,EAAalva,EAIvE,OAHKtF,KAAK+umB,kBACNx7mB,EAAOA,EAAO,IAAMutR,GAEjBvtR,CACX,GAEJy7mB,QAAS,CACLn7mB,IAAK,WACD,IAAIgnO,EAAS2zY,EAAUxumB,KAAK8umB,aACxB9kmB,EAAQhK,KAAK4umB,WAAW9tV,IAAez7Q,EAI3C,OAFA2E,EAAkB,QAAVA,EAAkB,SAAWA,EACrC6wN,EAAOo0Y,gBAAgBjlmB,GAChB6wN,CACX,GAEJk0Y,gBAAiB,CACbl7mB,IAAK,WAED,OAA0D,IAAlD,IAAIX,IAAIpJ,OAAO8+B,OAAO5oB,KAAK4umB,aAAiB,IACxD,GAEJnnR,SAAU,CACN5zV,IAAK,WACD,OAAOsP,EAAI+rmB,eAAe36L,EAAUzzJ,IAAez7Q,EACvD,GAEJ9R,KAAM,CAAEM,IAAKmkE,EAAUhxE,SAAS00D,KAAKsc,KAE7C,CA0IA,OAlIA70D,EAAI+rmB,eAAiB,SAAU37mB,GAC3B,OAAKxN,MAAMwN,IAIX47mB,EADA57mB,EAAOA,EAAKof,eAELxP,EAAI5P,IAJA4yB,SAAS5yB,EAAM,GAK9B,EAOA4P,EAAI/C,UAAUg4M,UAAY,SAAU0oE,EAAY9oN,GAC5C,IAAIzkE,EAAOyM,KAAK8umB,YAKhB,OAHK9umB,KAAK+umB,kBACNx7mB,EAAOA,EAAK41F,UAAU,EAAG51F,EAAK8jF,YAAY,OAEvC,IAAIl0E,EAAI29Q,EAAY9oN,EAAWh4D,KAAK4umB,WAAYr7mB,EAC3D,EASA4P,EAAI/C,UAAUgvmB,UAAY,SAAUl0M,GAGhC,OAFAwzM,EAAkBxzM,GAClBpxa,OAAOC,OAAOiW,KAAK4umB,WAAY1zM,GACxBl7Z,IACX,EAQAmD,EAAI/C,UAAUna,IAAM,SAAUwhW,EAAU32J,GACpC,IAAIv9L,EAAO4P,EAAIksmB,QAAQ5nR,GAEvB,IAAKl0V,EACD,MAAM2lB,EAAEi1jB,cAAc,WAAYmhC,GAEtC/7mB,EAAOA,EAAKnL,cACZ,IAAI8sC,EAAS,EAAC,IAAIrsB,MAAO+3F,cAAertG,EAAMyM,KAAKzM,MAEnD,OADCyM,KAAKgvmB,QAAQz7mB,IAAS,WAAkB,GAAGuN,WAAM,EAAQozU,EAAc,GAAIx0O,EAAOxqE,EAAOlnC,OAAO8iM,MAC1F9wL,IACX,EAOAmD,EAAI/C,UAAUkH,MAAQ,WAClB,OAAOtH,KAAK/Z,IAAIkd,EAAIumH,MAAO,GAAG5uH,MAAMuF,KAAKlM,WAC7C,EAQAgP,EAAI/C,UAAUqlV,WAAa,SAAU8pR,GACjC,IAAIC,EA9JZ,SAAgCC,GAE5B,IADAnB,EAA4CA,GAA6C,IAAIt7mB,KAC/CW,IAAI87mB,GAC9C,OAAOnB,EAA0Cz6mB,IAAI47mB,GAEzD,IAAID,EAAsB,IAAIt8mB,IAE9B,OADAo7mB,EAA0Cv6mB,IAAI07mB,EAAsBD,GAC7DA,CACX,CAsJkCE,CAAuB1vmB,KAAK2umB,WAAWlumB,aACjE,OAAI+umB,EAAoB77mB,IAAI47mB,GACjBvvmB,MAEXwvmB,EAAoBl8mB,IAAIi8mB,GACjBvvmB,KAAK6M,KAAK0imB,GACrB,EAOApsmB,EAAI/C,UAAU2yB,KAAO,WACjB,OAAO/yB,KAAK/Z,IAAIkd,EAAIwsmB,KAAM,GAAG70mB,MAAMuF,KAAKlM,WAC5C,EAOAgP,EAAI/C,UAAUyM,KAAO,WACjB,OAAO7M,KAAK/Z,IAAIkd,EAAIysmB,KAAM,GAAG90mB,MAAMuF,KAAKlM,WAC5C,EAOAgP,EAAI/C,UAAUyvmB,SAAW,SAAUC,GAC/B,OAAI9vmB,KAAK6umB,UAAUl7mB,IAAIm8mB,GACZ9vmB,MAEXA,KAAK6umB,UAAUv7mB,IAAIw8mB,GACZ9vmB,KAAK6M,KAAKijmB,GACrB,EAOA3smB,EAAI/C,UAAU6J,MAAQ,WAClB,OAAOjK,KAAK/Z,IAAIkd,EAAI4smB,MAAO,GAAGj1mB,MAAMuF,KAAKlM,WAC7C,EAOAgP,EAAI/C,UAAU2iF,MAAQ,SAAU94E,EAAO+lmB,GAKnC,MAJI/lmB,EAAMgb,QACNhb,EAAQA,EAAMgb,MAAM+qlB,IAExBhwmB,KAAK/Z,IAAIkd,EAAI4smB,MAAO9lmB,GACdA,CACV,EACO9G,CACX,CA3MwB,GA+MxBrZ,OAAO0hC,iBAAiBroB,EAAK,CACzBumH,MAAO,CAAE/jI,MAAO,GAChBgqnB,KAAM,CAAEhqnB,MAAO,GACfiqnB,KAAM,CAAEjqnB,MAAO,GACfoqnB,MAAO,CAAEpqnB,MAAO,GAChB8rI,IAAK,CAAE9rI,MAAO,GACd0pnB,QAAS,CACL1pnB,MAAO,CACH,QACA,OACA,OACA,QACA,UAIZ,IAAIsqnB,EAAiB,CAAC,EAClBX,EAAmB,GACnBY,EAAkB/smB,EAAIksmB,QAAQt8mB,IAAI,SAAUiX,EAAO3kB,GAGnD,OAFA4qnB,EAAejmmB,IAAS,EACxBslmB,EAAiBx7mB,KAAKzO,GACf2kB,CACX,GACA,SAASmlmB,EAAiBnlmB,GACtB,KAAMA,KAASimmB,GACX,MAAM/2lB,EAAEi1jB,cAAc,QAAS+hC,EAEvC,CACA,SAASxB,EAAkBxzM,GACvBpxa,OAAOO,KAAK6wa,GAAQlpa,QAAQ,SAAU8uR,GAClCquV,EAAiBj0M,EAAOp6I,GAAYnuQ,cACxC,EACJ,CACA+uE,EAAOj9F,QAAU0e,C,+BC3RjB,IAAIwqO,EAAa,EAAQ,OACrBttI,EAAc,EAAQ,OACtB8vgB,EAA4B,EAAQ,OACpCC,EAA8B,EAAQ,OACtCjvgB,EAAW,EAAQ,OAEnBnzG,EAASqyG,EAAY,GAAGryG,QAG5B0zF,EAAOj9F,QAAUkpP,EAAW,UAAW,YAAc,SAAiBlsI,GACpE,IAAIp3G,EAAO8lnB,EAA0BzumB,EAAEy/F,EAASM,IAC5Cvf,EAAwBkuhB,EAA4B1umB,EACxD,OAAOwgF,EAAwBl0F,EAAO3D,EAAM63F,EAAsBuf,IAAOp3G,CAC3E,C,6BCbAP,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtDlB,EAAQynnB,gBAAkB,CACtB9pf,KAAM,CACFiuf,KAAM,OACNC,MAAO,SAEXzqhB,MAAO,CACH0qhB,KAAM,OACNC,OAAQ,SACRC,OAAQ,U,6BCNhB,IAAIjmnB,EAAM,CACRkmnB,kBAAmB,EACnBC,kBAAmB,EACnBC,kBAAmB,EACnBC,eAAgB,EAChBC,iBAAkB,EAClBC,gBAAiB,GAGfx6e,EAAS,CAAC,0BAA2B,0BAA2B,0BAA2B,uBAAwB,yBAA0B,yBAE7Iy6e,EAAM,CAAC,uBAAwB,uBAAwB,uBAAwB,sBAAuB,sBAAuB,sBAE7HxiU,EAAK,CAAC,sBAAuB,sBAAuB,sBAAuB,mBAAoB,qBAAsB,qBAGrH/lT,EAA6B,oBAAXtB,aAAqD,IAApBA,OAAOsB,SAA2BtB,OAAOsB,SAAW,CAAC,EAExGu1gB,EAAS,sBAAuBv1gB,GAAYqB,OAAOO,KAAKG,IAAQ+rI,EAAO,KAAM9tI,GAAY8tI,GAAUy6e,EAAI,KAAMvonB,GAAYuonB,GAAOxiU,EAAG,KAAM/lT,GAAY+lT,GAAM,GAE/J/pT,EAAQ,EAAU,CAChBmsnB,kBAAmB,SAA2BtqnB,GAC5C,OAAOA,EAAQ03gB,EAAOxzgB,EAAIomnB,qBAC5B,EACAK,0BAA2B,SAAmC3qnB,GAC5D,OAAOA,EAAQ03gB,EAAOxzgB,EAAIomnB,mBAC5B,EACA,kBAAIC,GACF,OAAOponB,EAASu1gB,EAAOxzgB,EAAIqmnB,iBAAiBn1jB,KAAKjzD,EACnD,EACAyP,iBAAkB,SAA0B8X,EAAMkuC,EAAStuD,GACzD,OAAOnH,EAASyP,iBAAiB8lgB,EAAOxzgB,EAAIwlB,IAAQkuC,EAAStuD,EAC/D,EACAuI,oBAAqB,SAA6B6X,EAAMkuC,EAAStuD,GAC/D,OAAOnH,EAAS0P,oBAAoB6lgB,EAAOxzgB,EAAIwlB,IAAQkuC,EAAStuD,EAClE,EACA,qBAAI8gnB,GACF,OAAOzphB,QAAQx+F,EAASu1gB,EAAOxzgB,EAAIkmnB,oBACrC,EACA,qBAAIA,CAAkB/olB,GAAM,EAC5B,qBAAIgplB,GACF,OAAOlonB,EAASu1gB,EAAOxzgB,EAAImmnB,mBAC7B,EACA,qBAAIA,CAAkBhplB,GAAM,EAC5B,sBAAIuplB,GACF,OAAOzonB,GAAU,KAAOu1gB,EAAOxzgB,EAAIsmnB,mBAAmB1onB,cACxD,EACA,sBAAI8onB,CAAmBhzjB,GACrB,OAAOz1D,GAAU,KAAOu1gB,EAAOxzgB,EAAIsmnB,mBAAmB1onB,eAAiB81D,CACzE,EACA,qBAAIizjB,GACF,OAAO1onB,GAAU,KAAOu1gB,EAAOxzgB,EAAIumnB,kBAAkB3onB,cACvD,EACA,qBAAI+onB,CAAkBjzjB,GACpB,OAAOz1D,GAAU,KAAOu1gB,EAAOxzgB,EAAIumnB,kBAAkB3onB,eAAiB81D,CACxE,E,kBC5DF,IAAIkzjB,EAAU,EAAQ,OAKtB1vhB,EAAOj9F,QAmZP,SAAS4snB,EAAcxoiB,EAAMx+E,EAAMuF,GAQjC,OAPKwhnB,EAAQ/mnB,KACXuF,EAAkCvF,GAAQuF,EAC1CvF,EAAO,IAGTuF,EAAUA,GAAW,CAAC,EAElBi5E,aAAgB/2C,OAlJtB,SAAyB+2C,EAAMx+E,GAE7B,IAAIwhT,EAAShjO,EAAKt3D,OAAOvtB,MAAM,aAE/B,GAAI6nT,EACF,IAAK,IAAIxmT,EAAI,EAAGA,EAAIwmT,EAAOz3S,OAAQ/O,IACjCgF,EAAKyJ,KAAK,CACRP,KAAMlO,EACN6vC,OAAQ,KACRw2V,UAAW,KACX16G,UAAU,EACVzpB,QAAQ,EACR9lC,SAAS,EACT6vZ,UAAU,EACV9/gB,QAAS,OAKf,OAAO+/gB,EAAW1oiB,EAAMx+E,EAC1B,CA+HWmnnB,CAAe3oiB,EAA4B,GAGhDuoiB,EAAQvoiB,GAxHd,SAAwBA,EAAMx+E,EAAMuF,GAGlC,IAFA,IAAI0mE,EAAQ,GAEHjxE,EAAI,EAAGA,EAAIwjF,EAAKz0E,OAAQ/O,IAC/BixE,EAAMxiE,KAAKu9mB,EAAaxoiB,EAAKxjF,GAAIgF,EAAMuF,GAAS2hB,QAKlD,OAAOggmB,EAFM,IAAIz/kB,OAAO,MAAQwkC,EAAMp4D,KAAK,KAAO,IAAK0mH,EAAMh1H,IAEnCvF,EAC5B,CA+GWonnB,CAAoC,EAA8B,EAAQ7hnB,GArGrF,SAAyBi5E,EAAMx+E,EAAMuF,GACnC,OAAO8hnB,EAAet5kB,EAAMywC,EAAMj5E,GAAUvF,EAAMuF,EACpD,CAsGS+hnB,CAAqC,EAA8B,EAAQ/hnB,EACpF,EAnaA8xF,EAAOj9F,QAAQ2zC,MAAQA,EACvBspD,EAAOj9F,QAAQ++G,QAsGf,SAAkB/wF,EAAK7iB,GACrB,OAAOginB,EAAiBx5kB,EAAM3lB,EAAK7iB,GACrC,EAvGA8xF,EAAOj9F,QAAQmtnB,iBAAmBA,EAClClwhB,EAAOj9F,QAAQitnB,eAAiBA,EAOhC,IAAIG,EAAc,IAAI//kB,OAAO,CAG3B,UAOA,0GACA5zB,KAAK,KAAM,KASb,SAASk6B,EAAO3lB,EAAK7iB,GAQnB,IAPA,IAKIw0C,EALAqtD,EAAS,GACTjnG,EAAM,EACNgM,EAAQ,EACRqyE,EAAO,GACPipiB,EAAmBlinB,GAAWA,EAAQ87X,WAAa,IAGf,OAAhCtnV,EAAMytkB,EAAYxslB,KAAK5S,KAAe,CAC5C,IAAItvB,EAAIihD,EAAI,GACR2tkB,EAAU3tkB,EAAI,GACdx/C,EAASw/C,EAAI5tC,MAKjB,GAJAqyE,GAAQp2D,EAAI3X,MAAMtE,EAAO5R,GACzB4R,EAAQ5R,EAASzB,EAAEiR,OAGf29mB,EACFlpiB,GAAQkpiB,EAAQ,OADlB,CAKA,IAAIjqnB,EAAO2qB,EAAIjc,GACX0+B,EAASkP,EAAI,GACb7wC,EAAO6wC,EAAI,GACX2vE,EAAU3vE,EAAI,GACdr6B,EAAQq6B,EAAI,GACZ/wC,EAAW+wC,EAAI,GACfktkB,EAAWltkB,EAAI,GAGfykC,IACF4oB,EAAO39F,KAAK+0E,GACZA,EAAO,IAGT,IAAI44I,EAAoB,MAAVvsL,GAA0B,MAARptC,GAAgBA,IAASotC,EACrDqyN,EAAsB,MAAbl0P,GAAiC,MAAbA,EAC7B29Q,EAAwB,MAAb39Q,GAAiC,MAAbA,EAC/Bq4X,EAAYtnV,EAAI,IAAM0tkB,EACtBtghB,EAAUuiB,GAAWhqG,EAEzB0nF,EAAO39F,KAAK,CACVP,KAAMA,GAAQ/I,IACd0qC,OAAQA,GAAU,GAClBw2V,UAAWA,EACX16G,SAAUA,EACVzpB,OAAQA,EACR9lC,QAASA,EACT6vZ,WAAYA,EACZ9/gB,QAASA,EAAUwghB,EAAYxghB,GAAY8/gB,EAAW,KAAO,KAAOW,EAAavmP,GAAa,OA9BhG,CAgCF,CAYA,OATIl1X,EAAQic,EAAIre,SACdy0E,GAAQp2D,EAAI0/F,OAAO37G,IAIjBqyE,GACF4oB,EAAO39F,KAAK+0E,GAGP4oB,CACT,CAmBA,SAASyghB,EAA0Bz/lB,GACjC,OAAO0/lB,UAAU1/lB,GAAK1uB,QAAQ,UAAW,SAAU6B,GACjD,MAAO,IAAMA,EAAEggG,WAAW,GAAG5+F,SAAS,IAAI2rB,aAC5C,EACF,CAQA,SAASy/lB,EAAgB3/lB,GACvB,OAAO0/lB,UAAU1/lB,GAAK1uB,QAAQ,QAAS,SAAU6B,GAC/C,MAAO,IAAMA,EAAEggG,WAAW,GAAG5+F,SAAS,IAAI2rB,aAC5C,EACF,CAKA,SAASi/lB,EAAkBnghB,GAKzB,IAHA,IAAIx/D,EAAU,IAAI39B,MAAMm9F,EAAOr9F,QAGtB/O,EAAI,EAAGA,EAAIosG,EAAOr9F,OAAQ/O,IACR,iBAAdosG,EAAOpsG,KAChB4sC,EAAQ5sC,GAAK,IAAIysC,OAAO,OAAS2/D,EAAOpsG,GAAGmsG,QAAU,OAIzD,OAAO,SAAUl/E,EAAKyd,GAMpB,IALA,IAAI84C,EAAO,GACP9yE,EAAOuc,GAAO,CAAC,EAEfy2E,GADUh5D,GAAQ,CAAC,GACFopO,OAAS+4W,EAA2B5phB,mBAEhDjjG,EAAI,EAAGA,EAAIosG,EAAOr9F,OAAQ/O,IAAK,CACtC,IAAI4e,EAAQwtF,EAAOpsG,GAEnB,GAAqB,iBAAV4e,EAAX,CAMA,IACI67B,EADAn6C,EAAQoQ,EAAKkO,EAAM1Q,MAGvB,GAAa,MAAT5N,EAAe,CACjB,GAAIse,EAAM+sQ,SAAU,CAEd/sQ,EAAMw9M,UACR54I,GAAQ5kE,EAAMixB,QAGhB,QACF,CACE,MAAM,IAAI50B,UAAU,aAAe2D,EAAM1Q,KAAO,kBAEpD,CAEA,GAAI69mB,EAAQzrnB,GAAZ,CACE,IAAKse,EAAMsjP,OACT,MAAM,IAAIjnP,UAAU,aAAe2D,EAAM1Q,KAAO,kCAAoCoW,KAAKC,UAAUjkB,GAAS,KAG9G,GAAqB,IAAjBA,EAAMyO,OAAc,CACtB,GAAI6P,EAAM+sQ,SACR,SAEA,MAAM,IAAI1wQ,UAAU,aAAe2D,EAAM1Q,KAAO,oBAEpD,CAEA,IAAK,IAAIyyB,EAAI,EAAGA,EAAIrgC,EAAMyO,OAAQ4xB,IAAK,CAGrC,GAFA8Z,EAAUipD,EAAOpjG,EAAMqgC,KAElBiM,EAAQ5sC,GAAGnD,KAAK49C,GACnB,MAAM,IAAIx/B,UAAU,iBAAmB2D,EAAM1Q,KAAO,eAAiB0Q,EAAMutF,QAAU,oBAAsB7nF,KAAKC,UAAUk2B,GAAW,KAGvI+oC,IAAe,IAAN7iD,EAAU/hB,EAAMixB,OAASjxB,EAAMynX,WAAa5rV,CACvD,CAGF,KAxBA,CA4BA,GAFAA,EAAU77B,EAAMqtmB,SAAWc,EAAezsnB,GAASojG,EAAOpjG,IAErDssC,EAAQ5sC,GAAGnD,KAAK49C,GACnB,MAAM,IAAIx/B,UAAU,aAAe2D,EAAM1Q,KAAO,eAAiB0Q,EAAMutF,QAAU,oBAAsB1xD,EAAU,KAGnH+oC,GAAQ5kE,EAAMixB,OAAS4K,CARvB,CA1CA,MAHE+oC,GAAQ5kE,CAsDZ,CAEA,OAAO4kE,CACT,CACF,CAQA,SAASopiB,EAAcx/lB,GACrB,OAAOA,EAAI1uB,QAAQ,6BAA8B,OACnD,CAQA,SAASiunB,EAAajomB,GACpB,OAAOA,EAAMhmB,QAAQ,gBAAiB,OACxC,CASA,SAASwtnB,EAAYn7d,EAAI/rJ,GAEvB,OADA+rJ,EAAG/rJ,KAAOA,EACH+rJ,CACT,CAQA,SAASxxB,EAAOh1H,GACd,OAAOA,EAAQyinB,UAAY,GAAK,GAClC,CAuEA,SAASX,EAAgBjghB,EAAQpnG,EAAMuF,GAChCwhnB,EAAQ/mnB,KACXuF,EAAkCvF,GAAQuF,EAC1CvF,EAAO,IAUT,IALA,IAAI44G,GAFJrzG,EAAUA,GAAW,CAAC,GAEDqzG,OACjBv2G,GAAsB,IAAhBkD,EAAQlD,IACdw+B,EAAQ,GAGH7lC,EAAI,EAAGA,EAAIosG,EAAOr9F,OAAQ/O,IAAK,CACtC,IAAI4e,EAAQwtF,EAAOpsG,GAEnB,GAAqB,iBAAV4e,EACTinB,GAAS+mlB,EAAahumB,OACjB,CACL,IAAIixB,EAAS+8kB,EAAahumB,EAAMixB,QAC5B6+E,EAAU,MAAQ9vG,EAAMutF,QAAU,IAEtCnnG,EAAKyJ,KAAKmQ,GAENA,EAAMsjP,SACRxzI,GAAW,MAAQ7+E,EAAS6+E,EAAU,MAaxC7oF,GANI6oF,EAJA9vG,EAAM+sQ,SACH/sQ,EAAMw9M,QAGCvsL,EAAS,IAAM6+E,EAAU,KAFzB,MAAQ7+E,EAAS,IAAM6+E,EAAU,MAKnC7+E,EAAS,IAAM6+E,EAAU,GAIvC,CACF,CAEA,IAAI23Q,EAAYumP,EAAarinB,EAAQ87X,WAAa,KAC9C4mP,EAAoBpnlB,EAAMpwB,OAAO4wX,EAAUt3X,UAAYs3X,EAkB3D,OAZKzoR,IACH/3E,GAASonlB,EAAoBpnlB,EAAMpwB,MAAM,GAAI4wX,EAAUt3X,QAAU82B,GAAS,MAAQwgW,EAAY,WAI9FxgW,GADEx+B,EACO,IAIAu2G,GAAUqvgB,EAAoB,GAAK,MAAQ5mP,EAAY,MAG3D6lP,EAAW,IAAIz/kB,OAAO,IAAM5G,EAAO05F,EAAMh1H,IAAWvF,EAC7D,C,+BCzYA,IAAI62H,EAAoB,EAAQ,OAEhCx/B,EAAOj9F,QAAU,SAAUkjH,EAAa/5G,EAAM2knB,GAI5C,IAHA,IAAI/7mB,EAAQ,EACRpC,EAASD,UAAUC,OAAS,EAAIm+mB,EAAUrxf,EAAkBtzH,GAC5DuF,EAAS,IAAIw0G,EAAYvzG,GACtBA,EAASoC,GAAOrD,EAAOqD,GAAS5I,EAAK4I,KAC5C,OAAOrD,CACT,C,6BCPArJ,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAA,QAYA,SAAoCkhO,GAClC,SAAS6sZ,EAAU39f,EAAYziF,EAAOoiF,EAAUC,EAAexrB,EAAUyrB,GACvE,IAAI+9f,EAAoBh+f,GAAiB,gBACrCi+f,EAAmBh+f,GAAgBF,EAEvC,GAAuB,MAAnBpiF,EAAMoiF,GACR,OAAIK,EACK,IAAIttG,MAAM,YAAc0hF,EAAW,KAAOyphB,EAAhC,2BAAsFD,EAAoB,MAGtH,KAGT,IAAK,IAAIv+mB,EAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IAC9FF,EAAKE,EAAO,GAAKJ,UAAUI,GAG7B,OAAOoxN,EAAS7kN,WAAMhK,EAAW,CAACs7B,EAAOoiF,EAAUi+f,EAAmBxphB,EAAUyphB,GAAkB1knB,OAAOqG,GAC3G,CAEA,IAAIs+mB,EAAmBH,EAAU92jB,KAAK,MAAM,GAG5C,OAFAi3jB,EAAiB99f,WAAa29f,EAAU92jB,KAAK,MAAM,GAE5Ci3jB,CACT,EACAjxhB,EAAOj9F,QAAUA,EAAiB,O,+BCzClC,IAAIilG,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,UAAY,CAC5E6jZ,MAAO,WACL,OAAO9jZ,EAAW9uN,KAAM,QAAS,GAAI,GACvC,G,kBCVF,IAAIg/M,EAAa,EAAQ,OACrBo0G,EAAe,EAAQ,OACvBy/S,EAAc,EAAQ,OAe1BnxhB,EAAOj9F,QANP,SAAyB6mD,GACvB,MAAqC,mBAAtBA,EAAO7qC,aAA8BoymB,EAAYvnkB,GAE5D,CAAC,EADD0zK,EAAWo0G,EAAa9nR,GAE9B,C,+BCdA,IAAIkiM,EAAgB,EAAQ,OACxBslY,EAAc,EAAQ,OAEtBjyR,EAAavgV,UAGjBohF,EAAOj9F,QAAU,SAAUk9F,GACzB,GAAI6rJ,EAAc7rJ,GAAW,OAAOA,EACpC,MAAM,IAAIk/P,EAAWiyR,EAAYnxhB,GAAY,wBAC/C,C,6BCTA73F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQsunB,WAAatunB,EAAQmqB,kBAAe,EAC5C,IAAImrF,EAAK,OAgCTt1G,EAAQmqB,aA9BR,SAAsBnI,EAAKF,EAAQyigB,GAE/B,IAAIgqG,EAAmBvsmB,EAAgB,EAATF,EAAc,GAExC0smB,EAAU,EACd,QAAQ,GACJ,KAAKD,EAAmB,IACpBC,EAAUl5gB,EAAMi5gB,EAAmB,GACnC,MACJ,KAAKA,EAAmB,IACpBC,EAAUl5gB,GAAOi5gB,EAAmB,KAAO,GAkBnD,OALU,EACL,MARGC,EAFA,GACCjqG,GAAiBiqG,EAAU,IAClBztnB,KAAKmE,IAAIspnB,EAAyB,IAAfjqG,EAAoB,MAGvC,GAMb,KAAWiqG,GACPA,EAAU,KACV,IAAMA,EAEnB,EAwBAxunB,EAAQsunB,WAtBR,SAAoBG,GAoBhB,OAlBKA,EAGIA,EAAW,IACR,EAEHA,EAAW,EACR,EAEHA,EAAW,IACR,EAEHA,EAAW,EACR,EAGA,EAfA,CAkBhB,C,yOCxDe,SAASC,EAA2BxviB,EAAGyviB,GACpD,IAAI3xgB,EAAuB,oBAAXj9G,QAA0Bm/E,EAAEn/E,OAAO0d,WAAayhE,EAAE,cAClE,IAAK89B,EAAI,CACP,GAAIntG,MAAMyb,QAAQ4zD,KAAO89B,GAAK,EAAA4xgB,EAAA,GAA2B1viB,KAAOyviB,GAAkBzviB,GAAyB,iBAAbA,EAAEvvE,OAAqB,CAC/GqtG,IAAI99B,EAAI89B,GACZ,IAAIp8G,EAAI,EACJ8zB,EAAI,WAAc,EACtB,MAAO,CACLl2B,EAAGk2B,EACHtY,EAAG,WACD,OAAIxb,GAAKs+E,EAAEvvE,OAAe,CACxBoN,MAAM,GAED,CACLA,MAAM,EACN7b,MAAOg+E,EAAEt+E,KAEb,EACAL,EAAG,SAAWkmH,GACZ,MAAMA,CACR,EACAxpG,EAAGyX,EAEP,CACA,MAAM,IAAI7Y,UAAU,wIACtB,CACA,IAEEooG,EAFE4qgB,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLtwnB,EAAG,WACDw+G,EAAKA,EAAGphG,KAAKsjE,EACf,EACA9iE,EAAG,WACD,IAAIS,EAAOmgG,EAAG35G,OAEd,OADAwrnB,EAAmBhymB,EAAKE,KACjBF,CACT,EACAtc,EAAG,SAAWwunB,GACZD,GAAS,EACT7qgB,EAAM8qgB,CACR,EACA9xmB,EAAG,WACD,IACO4xmB,GAAoC,MAAhB7xgB,EAAW,QAAWA,EAAW,QAC5D,CAAE,QACA,GAAI8xgB,EAAQ,MAAM7qgB,CACpB,CACF,EAEJ,C,qCCnDe,SAAS,EAAO36G,EAAQu9C,GACrC,GAAc,MAAVv9C,EACF,MAAM,IAAIuS,UAAU,iEAEtB,IAAK,IAAIgU,KAAYg3B,EACfxhD,OAAOsW,UAAUxU,eAAeyU,KAAKirC,EAAQh3B,KAE/CvmB,EAAOumB,GAAYg3B,EAAOh3B,IAG9B,OAAOvmB,CACT,C,4HCJW0lnB,EAAsB,WAC/B,SAASA,KACP,OAAgBzzmB,KAAMyzmB,IACtB,OAAgBzzmB,KAAM,gBAAY,IAClC,OAAgBA,KAAM,cAAe,EACvC,CAOA,OANA,OAAayzmB,EAAQ,CAAC,CACpBjpnB,IAAK,WACL7E,MAAO,SAAkB+tnB,EAAU7jnB,GACjC,OAAO,CACT,KAEK4jnB,CACT,CAbiC,GActBE,EAA2B,SAAUC,IAC9C,OAAUD,EAAaC,GACvB,IAAI5vmB,GAAS,OAAa2vmB,GAC1B,SAASA,EAAYhunB,EAAOkunB,EAAer7L,EAAUlkV,EAAUw/gB,GAC7D,IAAI5vmB,EAUJ,OATA,OAAgBlE,KAAM2zmB,IACtBzvmB,EAAQF,EAAO3D,KAAKL,OACdra,MAAQA,EACdue,EAAM2vmB,cAAgBA,EACtB3vmB,EAAMs0a,SAAWA,EACjBt0a,EAAMowF,SAAWA,EACbw/gB,IACF5vmB,EAAM4vmB,YAAcA,GAEf5vmB,CACT,CAYA,OAXA,OAAayvmB,EAAa,CAAC,CACzBnpnB,IAAK,WACL7E,MAAO,SAAkBkpY,EAASj/X,GAChC,OAAOoQ,KAAK6zmB,cAAchlP,EAAS7uX,KAAKra,MAAOiK,EACjD,GACC,CACDpF,IAAK,MACL7E,MAAO,SAAakpY,EAASjqQ,EAAOh1H,GAClC,OAAOoQ,KAAKw4a,SAAS3pD,EAASjqQ,EAAO5kH,KAAKra,MAAOiK,EACnD,KAEK+jnB,CACT,CA5BsC,CA4BpCF,GACSM,EAA0C,SAAUC,IAC7D,OAAUD,EAA4BC,GACtC,IAAIC,GAAU,OAAaF,GAC3B,SAASA,IACP,IAAIxmgB,GACJ,OAAgBvtG,KAAM+zmB,GACtB,IAAK,IAAI7/mB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHAg5G,EAAS0mgB,EAAQ5zmB,KAAKS,MAAMmzmB,EAAS,CAACj0mB,MAAMhS,OAAOqG,KACnD,QAAgB,OAAuBk5G,GAAS,WAtDvB,KAuDzB,QAAgB,OAAuBA,GAAS,eAAgB,GACzDA,CACT,CAaA,OAZA,OAAawmgB,EAA4B,CAAC,CACxCvpnB,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,GACxB,GAAIA,EAAMsvf,eACR,OAAO5ykB,EAET,IAAI6ykB,EAAgB,IAAItrmB,KAAK,GAG7B,OAFAsrmB,EAAcvugB,YAAYtkE,EAAKwpV,iBAAkBxpV,EAAK0pV,cAAe1pV,EAAKqlN,cAC1EwtX,EAAczie,SAASpwG,EAAK2pV,cAAe3pV,EAAK4pV,gBAAiB5pV,EAAK6pV,gBAAiB7pV,EAAK+pV,sBACrF8oP,CACT,KAEKJ,CACT,CA3BqD,CA2BnDN,GCzES56U,EAAsB,WAC/B,SAASA,KACP,OAAgB74R,KAAM64R,IACtB,OAAgB74R,KAAM,0BAAsB,IAC5C,OAAgBA,KAAM,gBAAY,IAClC,OAAgBA,KAAM,mBAAe,EACvC,CAmBA,OAlBA,OAAa64R,EAAQ,CAAC,CACpBruS,IAAK,MACL7E,MAAO,SAAayunB,EAAYnwmB,EAAOjgB,EAAO4L,GAC5C,IAAIuD,EAAS6M,KAAKo4B,MAAMg8kB,EAAYnwmB,EAAOjgB,EAAO4L,GAClD,OAAKuD,EAGE,CACLw/S,OAAQ,IAAIghU,EAAYxgnB,EAAOxN,MAAOqa,KAAK2lN,SAAU3lN,KAAKjM,IAAKiM,KAAKs0F,SAAUt0F,KAAK8zmB,aACnFtkmB,KAAMrc,EAAOqc,MAJN,IAMX,GACC,CACDhlB,IAAK,WACL7E,MAAO,SAAkB+tnB,EAAUzzU,EAAQpwS,GACzC,OAAO,CACT,KAEKgpS,CACT,CA1BiC,GCGtBw7U,EAAyB,SAAUC,IAC5C,OAAUD,EAAWC,GACrB,IAAItwmB,GAAS,OAAaqwmB,GAC1B,SAASA,IACP,IAAInwmB,GACJ,OAAgBlE,KAAMq0mB,GACtB,IAAK,IAAIngnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAwCA,OAvCA,OAAamwmB,EAAW,CAAC,CACvB7pnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOjgB,EAAMunM,IAAI6ob,EAAY,CAC3B1tnB,MAAO,iBACH1C,EAAMunM,IAAI6ob,EAAY,CAC1B1tnB,MAAO,WAGX,IAAK,QACH,OAAO1C,EAAMunM,IAAI6ob,EAAY,CAC3B1tnB,MAAO,WAIX,QACE,OAAO1C,EAAMunM,IAAI6ob,EAAY,CAC3B1tnB,MAAO,UACH1C,EAAMunM,IAAI6ob,EAAY,CAC1B1tnB,MAAO,iBACH1C,EAAMunM,IAAI6ob,EAAY,CAC1B1tnB,MAAO,WAGf,GACC,CACD8D,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,EAAOj/H,GAI/B,OAHAi/H,EAAM2mE,IAAM5lM,EACZ27C,EAAKgtQ,eAAe3oT,EAAO,EAAG,GAC9B27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK+ykB,CACT,CAtDoC,CAsDlCx7U,GC7DS07U,GCgCU/unB,KAAKC,IAAI,GAAI,GD/BzB,kBADE8unB,EAGH,qBAHGA,EAKE,kCALFA,EAOH,qBAPGA,EASA,qBATAA,EAWA,qBAXAA,EAaA,iBAbAA,EAeA,iBAfAA,EAiBD,YAjBCA,EAmBD,YAnBCA,EAsBI,MAtBJA,EAwBE,WAxBFA,EA0BI,WA1BJA,EA4BG,WA5BHA,EA+BQ,SA/BRA,EAgCU,QAhCVA,EAkCQ,aAlCRA,EAoCU,aApCVA,EAsCS,aAGTC,EACa,2BADbA,EAEF,0BAFEA,GAGa,oCAHbA,GAIC,2BAJDA,GAKgB,sCE5CpB,SAASC,GAASC,EAAe3uR,GACtC,OAAK2uR,EAGE,CACL/unB,MAAOogW,EAAM2uR,EAAc/unB,OAC3B6pB,KAAMklmB,EAAcllmB,MAJbklmB,CAMX,CACO,SAASC,GAAoBnjhB,EAAS4ihB,GAC3C,IAAIv5G,EAAcu5G,EAAWpwnB,MAAMwtG,GACnC,OAAKqpa,EAGE,CACLl1gB,MAAOwgC,SAAS00e,EAAY,GAAI,IAChCrrf,KAAM4kmB,EAAWt5mB,MAAM+/f,EAAY,GAAGzmgB,SAJ/B,IAMX,CACO,SAASwgnB,GAAqBpjhB,EAAS4ihB,GAC5C,IAAIv5G,EAAcu5G,EAAWpwnB,MAAMwtG,GACnC,OAAKqpa,EAKkB,MAAnBA,EAAY,GACP,CACLl1gB,MAAO,EACP6pB,KAAM4kmB,EAAWt5mB,MAAM,IAOpB,CACLnV,OAL4B,MAAnBk1gB,EAAY,GAAa,GAAK,IDkBX,MCjBlBA,EAAY,GAAK10e,SAAS00e,EAAY,GAAI,IAAM,GDO5B,KCNlBA,EAAY,GAAK10e,SAAS00e,EAAY,GAAI,IAAM,GD0B9B,KCzBlBA,EAAY,GAAK10e,SAAS00e,EAAY,GAAI,IAAM,IAG5Drrf,KAAM4kmB,EAAWt5mB,MAAM+/f,EAAY,GAAGzmgB,SAhB/B,IAkBX,CACO,SAASygnB,GAAqBT,GACnC,OAAOO,GAAoBJ,EAAiCH,EAC9D,CACO,SAASU,GAAaj0mB,EAAGuzmB,GAC9B,OAAQvzmB,GACN,KAAK,EACH,OAAO8zmB,GAAoBJ,EAA6BH,GAC1D,KAAK,EACH,OAAOO,GAAoBJ,EAA2BH,GACxD,KAAK,EACH,OAAOO,GAAoBJ,EAA6BH,GAC1D,KAAK,EACH,OAAOO,GAAoBJ,EAA4BH,GACzD,QACE,OAAOO,GAAoB,IAAI7ilB,OAAO,UAAYjxB,EAAI,KAAMuzmB,GAElE,CACO,SAASW,GAAmBl0mB,EAAGuzmB,GACpC,OAAQvzmB,GACN,KAAK,EACH,OAAO8zmB,GAAoBJ,EAAmCH,GAChE,KAAK,EACH,OAAOO,GAAoBJ,EAAiCH,GAC9D,KAAK,EACH,OAAOO,GAAoBJ,EAAmCH,GAChE,KAAK,EACH,OAAOO,GAAoBJ,EAAkCH,GAC/D,QACE,OAAOO,GAAoB,IAAI7ilB,OAAO,YAAcjxB,EAAI,KAAMuzmB,GAEpE,CACO,SAASY,GAAqBhoP,GACnC,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GAIT,QACE,OAAO,EAEb,CACO,SAASioP,GAAsB9oP,EAAc+oP,GAClD,IAMI/hnB,EANAginB,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAErD,GAAIE,GAAkB,GACpBjinB,EAASg5X,GAAgB,QACpB,CACL,IAAIkpP,EAAWD,EAAiB,GAGhCjinB,EAASg5X,EAF0C,IAA7B3mY,KAAKQ,MAAMqvnB,EAAW,MACpBlpP,GAAgBkpP,EAAW,IACY,IAAM,EACvE,CACA,OAAOF,EAAchinB,EAAS,EAAIA,CACpC,CACO,SAASminB,GAAgB73hB,GAC9B,OAAOA,EAAO,KAAQ,GAAKA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC9D,CC/FO,IAAI83hB,GAA0B,SAAUjB,IAC7C,OAAUiB,EAAYjB,GACtB,IAAItwmB,GAAS,OAAauxmB,GAC1B,SAASA,IACP,IAAIrxmB,GACJ,OAAgBlE,KAAMu1mB,GACtB,IAAK,IAAIrhnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC5GA,CACT,CA0CA,OAzCA,OAAaqxmB,EAAY,CAAC,CACxB/qnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,IAAIi3gB,EAAgB,SAAuBx9a,GACzC,MAAO,CACLA,KAAMA,EACN+3hB,eAA0B,OAAVvxmB,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAOwwmB,GAASK,GAAa,EAAGV,GAAan5G,GAC/C,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,SACJ69c,GACN,QACE,OAAOw5G,GAASK,GAAa7wmB,EAAM7P,OAAQggnB,GAAan5G,GAE9D,GACC,CACDzwgB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,EAAM6vnB,gBAAkB7vnB,EAAM83F,KAAO,CAC9C,GACC,CACDjzF,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,EAAOj/H,GAC/B,IAAIuvnB,EAAc5zkB,EAAKwpV,iBACvB,GAAInlY,EAAM6vnB,eAAgB,CACxB,IAAIC,EAAyBR,GAAsBtvnB,EAAM83F,KAAMy3hB,GAG/D,OAFA5zkB,EAAKgtQ,eAAemnU,EAAwB,EAAG,GAC/Cn0kB,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,CACA,IAAIm8C,EAAS,QAASmnC,GAAwB,IAAdA,EAAM2mE,IAAyB,EAAI5lM,EAAM83F,KAAvB93F,EAAM83F,KAGxD,OAFAn8C,EAAKgtQ,eAAe7wN,EAAM,EAAG,GAC7Bn8C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEKi0kB,CACT,CAxDqC,CAwDnC18U,G,wBC7DS68U,GAAmC,SAAUpB,IACtD,OAAUoB,EAAqBpB,GAC/B,IAAItwmB,GAAS,OAAa0xmB,GAC1B,SAASA,IACP,IAAIxxmB,GACJ,OAAgBlE,KAAM01mB,GACtB,IAAK,IAAIxhnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0CA,OAzCA,OAAawxmB,EAAqB,CAAC,CACjClrnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,IAAIi3gB,EAAgB,SAAuBx9a,GACzC,MAAO,CACLA,KAAMA,EACN+3hB,eAA0B,OAAVvxmB,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAOwwmB,GAASK,GAAa,EAAGV,GAAan5G,GAC/C,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,SACJ69c,GACN,QACE,OAAOw5G,GAASK,GAAa7wmB,EAAM7P,OAAQggnB,GAAan5G,GAE9D,GACC,CACDzwgB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,EAAM6vnB,gBAAkB7vnB,EAAM83F,KAAO,CAC9C,GACC,CACDjzF,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,EAAOj/H,EAAOiK,GACtC,IAAIslnB,GAAc,EAAAjpP,GAAA,GAAe3qV,EAAM1xC,GACvC,GAAIjK,EAAM6vnB,eAAgB,CACxB,IAAIC,EAAyBR,GAAsBtvnB,EAAM83F,KAAMy3hB,GAG/D,OAFA5zkB,EAAKgtQ,eAAemnU,EAAwB,EAAG7lnB,EAAQ8+X,uBACvDptV,EAAKslN,YAAY,EAAG,EAAG,EAAG,IACnB,EAAA+uX,GAAA,GAAer0kB,EAAM1xC,EAC9B,CACA,IAAI6tF,EAAS,QAASmnC,GAAwB,IAAdA,EAAM2mE,IAAyB,EAAI5lM,EAAM83F,KAAvB93F,EAAM83F,KAGxD,OAFAn8C,EAAKgtQ,eAAe7wN,EAAM,EAAG7tF,EAAQ8+X,uBACrCptV,EAAKslN,YAAY,EAAG,EAAG,EAAG,IACnB,EAAA+uX,GAAA,GAAer0kB,EAAM1xC,EAC9B,KAEK8lnB,CACT,CAxD8C,CAwD5C78U,G,WC1DS+8U,GAAiC,SAAUtB,IACpD,OAAUsB,EAAmBtB,GAC7B,IAAItwmB,GAAS,OAAa4xmB,GAC1B,SAASA,IACP,IAAI1xmB,GACJ,OAAgBlE,KAAM41mB,GACtB,IAAK,IAAI1hnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkBA,OAjBA,OAAa0xmB,EAAmB,CAAC,CAC/BprnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,GAChC,OACS8wmB,GADK,MAAV9wmB,EACwB,EAEFA,EAAM7P,OAFDggnB,EAGjC,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAag4D,EAAOk4jB,EAAQlwnB,GACjC,IAAImwnB,EAAkB,IAAIjtmB,KAAK,GAG/B,OAFAitmB,EAAgBxnU,eAAe3oT,EAAO,EAAG,GACzCmwnB,EAAgBlvX,YAAY,EAAG,EAAG,EAAG,IAC9B,EAAAJ,GAAA,GAAkBsvX,EAC3B,KAEKF,CACT,CAhC4C,CAgC1C/8U,GCjCSk9U,GAAkC,SAAUzB,IACrD,OAAUyB,EAAoBzB,GAC9B,IAAItwmB,GAAS,OAAa+xmB,GAC1B,SAASA,IACP,IAAI7xmB,GACJ,OAAgBlE,KAAM+1mB,GACtB,IAAK,IAAI7hnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACjHA,CACT,CAiBA,OAhBA,OAAa6xmB,EAAoB,CAAC,CAChCvrnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,GAChC,OACS8wmB,GADK,MAAV9wmB,EACwB,EAEFA,EAAM7P,OAFDggnB,EAGjC,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKgtQ,eAAe3oT,EAAO,EAAG,GAC9B27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEKy0kB,CACT,CA/B6C,CA+B3Cl9U,GC/BSm9U,GAA6B,SAAU1B,IAChD,OAAU0B,EAAe1B,GACzB,IAAItwmB,GAAS,OAAagymB,GAC1B,SAASA,IACP,IAAI9xmB,GACJ,OAAgBlE,KAAMg2mB,GACtB,IAAK,IAAI9hnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0DA,OAzDA,OAAa8xmB,EAAe,CAAC,CAC3BxrnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GAEN,IAAK,IACL,IAAK,KAEH,OAAO6wmB,GAAa7wmB,EAAM7P,OAAQggnB,GAEpC,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,YAGV,IAAK,MACH,OAAOp5D,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKmrV,YAA0B,GAAb9mY,EAAQ,GAAQ,GAClC27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK00kB,CACT,CAxEwC,CAwEtCn9U,GCxESo9U,GAAuC,SAAU3B,IAC1D,OAAU2B,EAAyB3B,GACnC,IAAItwmB,GAAS,OAAaiymB,GAC1B,SAASA,IACP,IAAI/xmB,GACJ,OAAgBlE,KAAMi2mB,GACtB,IAAK,IAAI/hnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0DA,OAzDA,OAAa+xmB,EAAyB,CAAC,CACrCzrnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GAEN,IAAK,IACL,IAAK,KAEH,OAAO6wmB,GAAa7wmB,EAAM7P,OAAQggnB,GAEpC,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,YAGV,IAAK,MACH,OAAOp5D,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMw5F,QAAQ42hB,EAAY,CAC/B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMw5F,QAAQ42hB,EAAY,CAC9B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKmrV,YAA0B,GAAb9mY,EAAQ,GAAQ,GAClC27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK20kB,CACT,CAxEkD,CAwEhDp9U,GCvESq9U,GAA2B,SAAU5B,IAC9C,OAAU4B,EAAa5B,GACvB,IAAItwmB,GAAS,OAAakymB,GAC1B,SAASA,IACP,IAAIhymB,GACJ,OAAgBlE,KAAMk2mB,GACtB,IAAK,IAAIhinB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAClI,QAAgB,OAAuBA,GAAQ,WAAY,KACpDA,CACT,CA8DA,OA7DA,OAAagymB,EAAa,CAAC,CACzB1rnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,IAAIi3gB,EAAgB,SAAuBt1gB,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQse,GAEN,IAAK,IACH,OAAOwwmB,GAASE,GAAoBJ,EAAuBH,GAAan5G,GAE1E,IAAK,KACH,OAAOw5G,GAASK,GAAa,EAAGV,GAAan5G,GAE/C,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,UACJ69c,GAEN,IAAK,MACH,OAAOj3gB,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKmrV,YAAY9mY,EAAO,GACxB27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK40kB,CACT,CA5EsC,CA4EpCr9U,GC5ESs9U,GAAqC,SAAU7B,IACxD,OAAU6B,EAAuB7B,GACjC,IAAItwmB,GAAS,OAAamymB,GAC1B,SAASA,IACP,IAAIjymB,GACJ,OAAgBlE,KAAMm2mB,GACtB,IAAK,IAAIjinB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA8DA,OA7DA,OAAaiymB,EAAuB,CAAC,CACnC3rnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,IAAIi3gB,EAAgB,SAAuBt1gB,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQse,GAEN,IAAK,IACH,OAAOwwmB,GAASE,GAAoBJ,EAAuBH,GAAan5G,GAE1E,IAAK,KACH,OAAOw5G,GAASK,GAAa,EAAGV,GAAan5G,GAE/C,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,UACJ69c,GAEN,IAAK,MACH,OAAOj3gB,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMu5F,MAAM62hB,EAAY,CAC7B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMu5F,MAAM62hB,EAAY,CAC5B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKmrV,YAAY9mY,EAAO,GACxB27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK60kB,CACT,CA5EgD,CA4E9Ct9U,G,YC1ESu9U,GAA+B,SAAU9B,IAClD,OAAU8B,EAAiB9B,GAC3B,IAAItwmB,GAAS,OAAaoymB,GAC1B,SAASA,IACP,IAAIlymB,GACJ,OAAgBlE,KAAMo2mB,GACtB,IAAK,IAAIlinB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0BA,OAzBA,OAAakymB,EAAiB,CAAC,CAC7B5rnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAsBH,GACnD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,EAAOiK,GACvC,OAAO,EAAA+lnB,GAAA,GC3CE,SAAoBvwgB,EAAWixgB,EAAWzmnB,IACvD,EAAA+jQ,EAAA,GAAa,EAAGx/P,WAChB,IAAImtC,GAAO,EAAA0oN,EAAA,GAAO5kJ,GACdhhH,GAAO,EAAAwvQ,EAAA,GAAUyiX,GACjBh5jB,GAAO,EAAAivU,GAAA,GAAWhrV,EAAM1xC,GAAWxL,EAEvC,OADAk9C,EAAKolN,WAAWplN,EAAKqlN,aAAsB,EAAPtpM,GAC7B/b,CACT,CDoC4Bg1kB,CAAWh1kB,EAAM37C,EAAOiK,GAAUA,EAC1D,KAEKwmnB,CACT,CAxC0C,CAwCxCv9U,G,YExCS09U,GAA6B,SAAUjC,IAChD,OAAUiC,EAAejC,GACzB,IAAItwmB,GAAS,OAAauymB,GAC1B,SAASA,IACP,IAAIrymB,GACJ,OAAgBlE,KAAMu2mB,GACtB,IAAK,IAAIrinB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,MAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0BA,OAzBA,OAAaqymB,EAAe,CAAC,CAC3B/rnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAsBH,GACnD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAChC,OAAO,EAAA6gQ,GAAA,GC3CE,SAAuBphJ,EAAWoxgB,IAC/C,EAAA7iX,EAAA,GAAa,EAAGx/P,WAChB,IAAImtC,GAAO,EAAA0oN,EAAA,GAAO5kJ,GACdovM,GAAU,EAAA5gD,EAAA,GAAU4iX,GACpBn5jB,GAAO,EAAAkvU,GAAA,GAAcjrV,GAAQkzQ,EAEjC,OADAlzQ,EAAKolN,WAAWplN,EAAKqlN,aAAsB,EAAPtpM,GAC7B/b,CACT,CDoC+Bm1kB,CAAcn1kB,EAAM37C,GAC/C,KAEK4wnB,CACT,CAxCwC,CAwCtC19U,GE1CE69U,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEC,GAA0B,SAAUtC,IAC7C,OAAUsC,EAAYtC,GACtB,IAAItwmB,GAAS,OAAa4ymB,GAC1B,SAASA,IACP,IAAI1ymB,GACJ,OAAgBlE,KAAM42mB,GACtB,IAAK,IAAI1inB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAMzB,OAJA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,cAAe,IAC9D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACtHA,CACT,CAmCA,OAlCA,OAAa0ymB,EAAY,CAAC,CACxBpsnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAsBH,GACnD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkB27C,EAAM37C,GAC7B,IACIkxnB,EAAavB,GADNh0kB,EAAKwpV,kBAEZvtS,EAAQj8C,EAAK0pV,cACjB,OAAI6rP,EACKlxnB,GAAS,GAAKA,GAASgxnB,GAAwBp5hB,GAE/C53F,GAAS,GAAKA,GAAS+wnB,GAAcn5hB,EAEhD,GACC,CACD/yF,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKolN,WAAW/gQ,GAChB27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEKs1kB,CACT,CAlDqC,CAkDnC/9U,GCtDSi+U,GAA+B,SAAUxC,IAClD,OAAUwC,EAAiBxC,GAC3B,IAAItwmB,GAAS,OAAa8ymB,GAC1B,SAASA,IACP,IAAI5ymB,GACJ,OAAgBlE,KAAM82mB,GACtB,IAAK,IAAI5inB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAMzB,OAJA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,cAAe,IAC9D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAmCA,OAlCA,OAAa4ymB,EAAiB,CAAC,CAC7BtsnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACL,IAAK,KACH,OAAO0wmB,GAAoBJ,EAA2BH,GACxD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkB27C,EAAM37C,GAG7B,OADiB2vnB,GADNh0kB,EAAKwpV,kBAGPnlY,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAElC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EAAKmrV,YAAY,EAAG9mY,GACpB27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEKw1kB,CACT,CAlD0C,CAkDxCj+U,G,YCvDa,SAASuvM,GAAUhjY,EAAW2xgB,EAAUnnnB,GACrD,IAAIxE,EAAMT,EAAOO,EAAOijY,EAAuBT,EAAiBspP,EAAuBlpP,EAAuBC,GAC9G,EAAAp6H,EAAA,GAAa,EAAGx/P,WAChB,IAAIU,GAAiB,UACjBg4X,GAAe,EAAAj5H,EAAA,GAA+0B,QAAp0BxoQ,EAA8hB,QAAthBT,EAAkd,QAAzcO,EAA6G,QAApGijY,EAAwBv+X,aAAyC,EAASA,EAAQi9X,oBAAoD,IAA1BsB,EAAmCA,EAAwBv+X,SAAyF,QAAtC89X,EAAkB99X,EAAQsuC,cAAwC,IAApBwvV,GAA4F,QAArDspP,EAAwBtpP,EAAgB99X,eAA+C,IAA1BonnB,OAA5J,EAAwMA,EAAsBnqP,oBAAoC,IAAV3hY,EAAmBA,EAAQ2J,EAAeg4X,oBAAoC,IAAVliY,EAAmBA,EAA4D,QAAnDmjY,EAAwBj5X,EAAeqpC,cAA8C,IAA1B4vV,GAAyG,QAA5DC,EAAyBD,EAAsBl+X,eAAgD,IAA3Bm+X,OAA9E,EAA2HA,EAAuBlB,oBAAmC,IAATzhY,EAAkBA,EAAO,GAGn4B,KAAMyhY,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIvlI,WAAW,oDAEvB,IAAIhmN,GAAO,EAAA0oN,EAAA,GAAO5kJ,GACd9nB,GAAM,EAAAs2K,EAAA,GAAUmjX,GAIhB15jB,IAFYigC,EAAM,EACM,GAAK,EACVuvS,EAAe,EAAI,GAAKvvS,EAH9Bh8C,EAAKmlN,YAKtB,OADAnlN,EAAKolN,WAAWplN,EAAKqlN,aAAetpM,GAC7B/b,CACT,CCdO,IAAI21kB,GAAyB,SAAU3C,IAC5C,OAAU2C,EAAW3C,GACrB,IAAItwmB,GAAS,OAAaizmB,GAC1B,SAASA,IACP,IAAI/ymB,GACJ,OAAgBlE,KAAMi3mB,GACtB,IAAK,IAAI/inB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAiEA,OAhEA,OAAa+ymB,EAAW,CAAC,CACvBzsnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOjgB,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,SACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,EAAOiK,GAGvC,OAFA0xC,EAAO8mc,GAAU9mc,EAAM37C,EAAOiK,IACzBg3P,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK21kB,CACT,CA/EoC,CA+ElCp+U,GC9ESq+U,GAA8B,SAAU5C,IACjD,OAAU4C,EAAgB5C,GAC1B,IAAItwmB,GAAS,OAAakzmB,GAC1B,SAASA,IACP,IAAIhzmB,GACJ,OAAgBlE,KAAMk3mB,GACtB,IAAK,IAAIhjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA6EA,OA5EA,OAAagzmB,EAAgB,CAAC,CAC5B1snB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,EAAO4L,GAC9C,IAAIqrgB,EAAgB,SAAuBt1gB,GACzC,IAAIwxnB,EAA8C,EAA9B3xnB,KAAKQ,OAAOL,EAAQ,GAAK,GAC7C,OAAQA,EAAQiK,EAAQi9X,aAAe,GAAK,EAAIsqP,CAClD,EACA,OAAQlzmB,GAEN,IAAK,IACL,IAAK,KAEH,OAAOwwmB,GAASK,GAAa7wmB,EAAM7P,OAAQggnB,GAAan5G,GAE1D,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,QACJ69c,GAEN,IAAK,MACH,OAAOj3gB,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,SACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,EAAOiK,GAGvC,OAFA0xC,EAAO8mc,GAAU9mc,EAAM37C,EAAOiK,IACzBg3P,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK41kB,CACT,CA3FyC,CA2FvCr+U,GC3FSu+U,GAAwC,SAAU9C,IAC3D,OAAU8C,EAA0B9C,GACpC,IAAItwmB,GAAS,OAAaozmB,GAC1B,SAASA,IACP,IAAIlzmB,GACJ,OAAgBlE,KAAMo3mB,GACtB,IAAK,IAAIljnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA6EA,OA5EA,OAAakzmB,EAA0B,CAAC,CACtC5snB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,EAAO4L,GAC9C,IAAIqrgB,EAAgB,SAAuBt1gB,GACzC,IAAIwxnB,EAA8C,EAA9B3xnB,KAAKQ,OAAOL,EAAQ,GAAK,GAC7C,OAAQA,EAAQiK,EAAQi9X,aAAe,GAAK,EAAIsqP,CAClD,EACA,OAAQlzmB,GAEN,IAAK,IACL,IAAK,KAEH,OAAOwwmB,GAASK,GAAa7wmB,EAAM7P,OAAQggnB,GAAan5G,GAE1D,IAAK,KACH,OAAOw5G,GAASzwnB,EAAM8nY,cAAcsoP,EAAY,CAC9Ch3jB,KAAM,QACJ69c,GAEN,IAAK,MACH,OAAOj3gB,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,QACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,SACPyiC,QAAS,eAGb,IAAK,SACH,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAIb,QACE,OAAOnlC,EAAMs5F,IAAI82hB,EAAY,CAC3B1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,EAAOiK,GAGvC,OAFA0xC,EAAO8mc,GAAU9mc,EAAM37C,EAAOiK,IACzBg3P,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK81kB,CACT,CA3FmD,CA2FjDv+U,GC3FSw+U,GAA4B,SAAU/C,IAC/C,OAAU+C,EAAc/C,GACxB,IAAItwmB,GAAS,OAAaqzmB,GAC1B,SAASA,IACP,IAAInzmB,GACJ,OAAgBlE,KAAMq3mB,GACtB,IAAK,IAAInjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA+EA,OA9EA,OAAamzmB,EAAc,CAAC,CAC1B7snB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,IAAIi3gB,EAAgB,SAAuBt1gB,GACzC,OAAc,IAAVA,EACK,EAEFA,CACT,EACA,OAAQse,GAEN,IAAK,IACL,IAAK,KAEH,OAAO6wmB,GAAa7wmB,EAAM7P,OAAQggnB,GAEpC,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,QAGV,IAAK,MACH,OAAOq3jB,GAASzwnB,EAAMs5F,IAAI82hB,EAAY,CACpC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eACP8xe,GAEN,IAAK,QACH,OAAOw5G,GAASzwnB,EAAMs5F,IAAI82hB,EAAY,CACpC1tnB,MAAO,SACPyiC,QAAS,eACP8xe,GAEN,IAAK,SACH,OAAOw5G,GAASzwnB,EAAMs5F,IAAI82hB,EAAY,CACpC1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eACP8xe,GAGN,QACE,OAAOw5G,GAASzwnB,EAAMs5F,IAAI82hB,EAAY,CACpC1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,QACPyiC,QAAS,gBACLnlC,EAAMs5F,IAAI82hB,EAAY,CAC1B1tnB,MAAO,SACPyiC,QAAS,eACP8xe,GAEV,GACC,CACDzwgB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAGhC,OAFA27C,EC7FS,SAAsB8jE,EAAW2xgB,IAC9C,EAAApjX,EAAA,GAAa,EAAGx/P,WAChB,IAAImpF,GAAM,EAAAs2K,EAAA,GAAUmjX,GAChBz5hB,EAAM,GAAM,IACdA,GAAY,GAEd,IACIh8C,GAAO,EAAA0oN,EAAA,GAAO5kJ,GAId/nD,IAFYigC,EAAM,EACM,GAAK,EAJd,EAKmB,EAAI,GAAKA,EAH9Bh8C,EAAKmlN,YAKtB,OADAnlN,EAAKolN,WAAWplN,EAAKqlN,aAAetpM,GAC7B/b,CACT,CD+Eag2kB,CAAah2kB,EAAM37C,GAC1B27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GACnBtlN,CACT,KAEK+1kB,CACT,CA7FuC,CA6FrCx+U,GE9FS0+U,GAA0B,SAAUjD,IAC7C,OAAUiD,EAAYjD,GACtB,IAAItwmB,GAAS,OAAauzmB,GAC1B,SAASA,IACP,IAAIrzmB,GACJ,OAAgBlE,KAAMu3mB,GACtB,IAAK,IAAIrjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCA,OAAaqzmB,EAAY,CAAC,CACxB/snB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOjgB,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAEb,IAAK,QACH,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,SACPyiC,QAAS,eAGb,QACE,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKslN,YAAYouX,GAAqBrvnB,GAAQ,EAAG,EAAG,GAC7C27C,CACT,KAEKi2kB,CACT,CAvDqC,CAuDnC1+U,GCvDS2+U,GAAkC,SAAUlD,IACrD,OAAUkD,EAAoBlD,GAC9B,IAAItwmB,GAAS,OAAawzmB,GAC1B,SAASA,IACP,IAAItzmB,GACJ,OAAgBlE,KAAMw3mB,GACtB,IAAK,IAAItjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCA,OAAaszmB,EAAoB,CAAC,CAChChtnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOjgB,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAEb,IAAK,QACH,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,SACPyiC,QAAS,eAGb,QACE,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKslN,YAAYouX,GAAqBrvnB,GAAQ,EAAG,EAAG,GAC7C27C,CACT,KAEKk2kB,CACT,CAvD6C,CAuD3C3+U,GCvDS4+U,GAA+B,SAAUnD,IAClD,OAAUmD,EAAiBnD,GAC3B,IAAItwmB,GAAS,OAAayzmB,GAC1B,SAASA,IACP,IAAIvzmB,GACJ,OAAgBlE,KAAMy3mB,GACtB,IAAK,IAAIvjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAyCA,OAxCA,OAAauzmB,EAAiB,CAAC,CAC7BjtnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOjgB,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAEb,IAAK,QACH,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,SACPyiC,QAAS,eAGb,QACE,OAAOnlC,EAAMgpY,UAAUonP,EAAY,CACjC1tnB,MAAO,OACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,cACPyiC,QAAS,gBACLnlC,EAAMgpY,UAAUonP,EAAY,CAChC1tnB,MAAO,SACPyiC,QAAS,eAGjB,GACC,CACD3+B,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKslN,YAAYouX,GAAqBrvnB,GAAQ,EAAG,EAAG,GAC7C27C,CACT,KAEKm2kB,CACT,CAvD0C,CAuDxC5+U,GCtDS6+U,GAA+B,SAAUpD,IAClD,OAAUoD,EAAiBpD,GAC3B,IAAItwmB,GAAS,OAAa0zmB,GAC1B,SAASA,IACP,IAAIxzmB,GACJ,OAAgBlE,KAAM03mB,GACtB,IAAK,IAAIxjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAkCA,OAjCA,OAAawzmB,EAAiB,CAAC,CAC7BltnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAyBH,GACtD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAChC,IAAI3D,EAAOs/C,EAAK2pV,eAAiB,GAQjC,OAPIjpY,GAAQ2D,EAAQ,GAClB27C,EAAKslN,YAAYjhQ,EAAQ,GAAI,EAAG,EAAG,GACzB3D,GAAkB,KAAV2D,EAGlB27C,EAAKslN,YAAYjhQ,EAAO,EAAG,EAAG,GAF9B27C,EAAKslN,YAAY,EAAG,EAAG,EAAG,GAIrBtlN,CACT,KAEKo2kB,CACT,CAhD0C,CAgDxC7+U,GChDS8+U,GAA+B,SAAUrD,IAClD,OAAUqD,EAAiBrD,GAC3B,IAAItwmB,GAAS,OAAa2zmB,GAC1B,SAASA,IACP,IAAIzzmB,GACJ,OAAgBlE,KAAM23mB,GACtB,IAAK,IAAIzjnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA2BA,OA1BA,OAAayzmB,EAAiB,CAAC,CAC7BntnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAyBH,GACtD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKslN,YAAYjhQ,EAAO,EAAG,EAAG,GACvB27C,CACT,KAEKq2kB,CACT,CAzC0C,CAyCxC9+U,GCzCS++U,GAA+B,SAAUtD,IAClD,OAAUsD,EAAiBtD,GAC3B,IAAItwmB,GAAS,OAAa4zmB,GAC1B,SAASA,IACP,IAAI1zmB,GACJ,OAAgBlE,KAAM43mB,GACtB,IAAK,IAAI1jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAgCA,OA/BA,OAAa0zmB,EAAiB,CAAC,CAC7BptnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAyBH,GACtD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAOhC,OANW27C,EAAK2pV,eAAiB,IACrBtlY,EAAQ,GAClB27C,EAAKslN,YAAYjhQ,EAAQ,GAAI,EAAG,EAAG,GAEnC27C,EAAKslN,YAAYjhQ,EAAO,EAAG,EAAG,GAEzB27C,CACT,KAEKs2kB,CACT,CA9C0C,CA8CxC/+U,GC9CSg/U,GAA+B,SAAUvD,IAClD,OAAUuD,EAAiBvD,GAC3B,IAAItwmB,GAAS,OAAa6zmB,GAC1B,SAASA,IACP,IAAI3zmB,GACJ,OAAgBlE,KAAM63mB,GACtB,IAAK,IAAI3jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA4BA,OA3BA,OAAa2zmB,EAAiB,CAAC,CAC7BrtnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAyBH,GACtD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,SAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAChC,IAAIylM,EAAQzlM,GAAS,GAAKA,EAAQ,GAAKA,EAEvC,OADA27C,EAAKslN,YAAYx7D,EAAO,EAAG,EAAG,GACvB9pJ,CACT,KAEKu2kB,CACT,CA1C0C,CA0CxCh/U,GC1CSi/U,GAA4B,SAAUxD,IAC/C,OAAUwD,EAAcxD,GACxB,IAAItwmB,GAAS,OAAa8zmB,GAC1B,SAASA,IACP,IAAI5zmB,GACJ,OAAgBlE,KAAM83mB,GACtB,IAAK,IAAI5jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BA,OAAa4zmB,EAAc,CAAC,CAC1BttnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAwBH,GACrD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,WAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKgnc,cAAc3if,EAAO,EAAG,GACtB27C,CACT,KAEKw2kB,CACT,CAzCuC,CAyCrCj/U,GCzCSk/U,GAA4B,SAAUzD,IAC/C,OAAUyD,EAAczD,GACxB,IAAItwmB,GAAS,OAAa+zmB,GAC1B,SAASA,IACP,IAAI7zmB,GACJ,OAAgBlE,KAAM+3mB,GACtB,IAAK,IAAI7jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BA,OAAa6zmB,EAAc,CAAC,CAC1BvtnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,EAAOjgB,GACvC,OAAQigB,GACN,IAAK,IACH,OAAO0wmB,GAAoBJ,EAAwBH,GACrD,IAAK,KACH,OAAOpwnB,EAAM8nY,cAAcsoP,EAAY,CACrCh3jB,KAAM,WAEV,QACE,OAAO03jB,GAAa7wmB,EAAM7P,OAAQggnB,GAExC,GACC,CACD5pnB,IAAK,WACL7E,MAAO,SAAkBg4D,EAAOh4D,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACD6E,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAKmrD,cAAc9mG,EAAO,GACnB27C,CACT,KAEKy2kB,CACT,CAzCuC,CAyCrCl/U,GC1CSm/U,GAAsC,SAAU1D,IACzD,OAAU0D,EAAwB1D,GAClC,IAAItwmB,GAAS,OAAag0mB,GAC1B,SAASA,IACP,IAAI9zmB,GACJ,OAAgBlE,KAAMg4mB,GACtB,IAAK,IAAI9jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CAgBA,OAfA,OAAa8zmB,EAAwB,CAAC,CACpCxtnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,GAIhC,OAAOwwmB,GAASK,GAAa7wmB,EAAM7P,OAAQggnB,GAHvB,SAAuBzunB,GACzC,OAAOH,KAAKQ,MAAML,EAAQH,KAAKC,IAAI,GAAoB,EAAfwe,EAAM7P,QAChD,EAEF,GACC,CACD5J,IAAK,MACL7E,MAAO,SAAa27C,EAAMu0kB,EAAQlwnB,GAEhC,OADA27C,EAAK+mc,mBAAmB1if,GACjB27C,CACT,KAEK02kB,CACT,CA9BiD,CA8B/Cn/U,GC7BSo/U,GAAsC,SAAU3D,IACzD,OAAU2D,EAAwB3D,GAClC,IAAItwmB,GAAS,OAAai0mB,GAC1B,SAASA,IACP,IAAI/zmB,GACJ,OAAgBlE,KAAMi4mB,GACtB,IAAK,IAAI/jnB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BA,OAAa+zmB,EAAwB,CAAC,CACpCztnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,GAChC,OAAQA,GACN,IAAK,IACH,OAAO2wmB,GAAqBJ,EAAuCJ,GACrE,IAAK,KACH,OAAOQ,GAAqBJ,EAAwBJ,GACtD,IAAK,OACH,OAAOQ,GAAqBJ,GAAuCJ,GACrE,IAAK,QACH,OAAOQ,GAAqBJ,GAA0CJ,GAExE,QACE,OAAOQ,GAAqBJ,GAA2BJ,GAE7D,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,EAAOj/H,GAC/B,OAAIi/H,EAAMsvf,eACD5ykB,EAEF,IAAIz4B,KAAKy4B,EAAKmkE,UAAY9/G,EACnC,KAEKsynB,CACT,CAzCiD,CAyC/Cp/U,GCzCSq/U,GAAiC,SAAU5D,IACpD,OAAU4D,EAAmB5D,GAC7B,IAAItwmB,GAAS,OAAak0mB,GAC1B,SAASA,IACP,IAAIh0mB,GACJ,OAAgBlE,KAAMk4mB,GACtB,IAAK,IAAIhknB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BA,OAAag0mB,EAAmB,CAAC,CAC/B1tnB,IAAK,QACL7E,MAAO,SAAeyunB,EAAYnwmB,GAChC,OAAQA,GACN,IAAK,IACH,OAAO2wmB,GAAqBJ,EAAuCJ,GACrE,IAAK,KACH,OAAOQ,GAAqBJ,EAAwBJ,GACtD,IAAK,OACH,OAAOQ,GAAqBJ,GAAuCJ,GACrE,IAAK,QACH,OAAOQ,GAAqBJ,GAA0CJ,GAExE,QACE,OAAOQ,GAAqBJ,GAA2BJ,GAE7D,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAa27C,EAAMsjF,EAAOj/H,GAC/B,OAAIi/H,EAAMsvf,eACD5ykB,EAEF,IAAIz4B,KAAKy4B,EAAKmkE,UAAY9/G,EACnC,KAEKuynB,CACT,CAzC4C,CAyC1Cr/U,GC1CSs/U,GAAsC,SAAU7D,IACzD,OAAU6D,EAAwB7D,GAClC,IAAItwmB,GAAS,OAAam0mB,GAC1B,SAASA,IACP,IAAIj0mB,GACJ,OAAgBlE,KAAMm4mB,GACtB,IAAK,IAAIjknB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbA,OAAai0mB,EAAwB,CAAC,CACpC3tnB,IAAK,QACL7E,MAAO,SAAeyunB,GACpB,OAAOS,GAAqBT,EAC9B,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAag4D,EAAOk4jB,EAAQlwnB,GACjC,MAAO,CAAC,IAAIkjB,KAAa,IAARljB,GAAe,CAC9BuunB,gBAAgB,GAEpB,KAEKiE,CACT,CA5BiD,CA4B/Ct/U,GC5BSu/U,GAA2C,SAAU9D,IAC9D,OAAU8D,EAA6B9D,GACvC,IAAItwmB,GAAS,OAAao0mB,GAC1B,SAASA,IACP,IAAIl0mB,GACJ,OAAgBlE,KAAMo4mB,GACtB,IAAK,IAAIlknB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAHA2P,EAAQF,EAAO3D,KAAKS,MAAMkD,EAAQ,CAAChE,MAAMhS,OAAOqG,KAChD,QAAgB,OAAuB6P,GAAQ,WAAY,KAC3D,QAAgB,OAAuBA,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbA,OAAak0mB,EAA6B,CAAC,CACzC5tnB,IAAK,QACL7E,MAAO,SAAeyunB,GACpB,OAAOS,GAAqBT,EAC9B,GACC,CACD5pnB,IAAK,MACL7E,MAAO,SAAag4D,EAAOk4jB,EAAQlwnB,GACjC,MAAO,CAAC,IAAIkjB,KAAKljB,GAAQ,CACvBuunB,gBAAgB,GAEpB,KAEKkE,CACT,CA5BsD,CA4BpDv/U,GCsCSw/U,GAAU,CACnBp9lB,EAAG,IAAIo5lB,EACP1wnB,EAAG,IAAI4xnB,GACPl7lB,EAAG,IAAIq7lB,GACP96lB,EAAG,IAAIg7lB,GACPlyhB,EAAG,IAAIqyhB,GACPl7lB,EAAG,IAAIm7lB,GACPnshB,EAAG,IAAIoshB,GACPxynB,EAAG,IAAIyynB,GACPv0nB,EAAG,IAAIw0nB,GACPv8lB,EAAG,IAAIw8lB,GACPj7lB,EAAG,IAAIo7lB,GACPhznB,EAAG,IAAIqznB,GACP39lB,EAAG,IAAI69lB,GACP59lB,EAAG,IAAI+9lB,GACPjynB,EAAG,IAAIkynB,GACPtxnB,EAAG,IAAIwxnB,GACP/xnB,EAAG,IAAIgynB,GACPz9mB,EAAG,IAAI29mB,GACP19mB,EAAG,IAAI29mB,GACPz+lB,EAAG,IAAI0+lB,GACPp0nB,EAAG,IAAIq0nB,GACPx8lB,EAAG,IAAIy8lB,GACP38lB,EAAG,IAAI48lB,GACPnmmB,EAAG,IAAIommB,GACP10nB,EAAG,IAAI20nB,GACP70nB,EAAG,IAAI80nB,GACPp9lB,EAAG,IAAIq9lB,GACP19lB,EAAG,IAAI29lB,GACP1xnB,EAAG,IAAI2xnB,GACPt3mB,EAAG,IAAIu3mB,GACPz9lB,EAAG,IAAI09lB,ICjFLhrP,GAAyB,wDAIzBC,GAA6B,oCAC7BC,GAAsB,eACtBC,GAAoB,MACpB+qP,GAAsB,KACtB9qP,GAAgC,WA+SrB,SAASp1V,GAAMmglB,EAAiBC,EAAmBC,EAAoB7onB,GACpF,IAAIxE,EAAMsiY,EAAiB/iY,EAAOO,EAAOwM,EAAOi2X,EAAuBC,EAAkBC,EAAuBC,EAAuBC,EAAwBC,EAAOC,EAAOC,EAAOC,EAAuBC,EAAkBC,EAAuBC,EAAwBC,GAC5Q,EAAA56H,EAAA,GAAa,EAAGx/P,WAChB,IAAIignB,EAAa7zmB,OAAOg4mB,GACpBG,EAAen4mB,OAAOi4mB,GACtB3jnB,GAAiB,UACjBqpC,EAA4L,QAAlL9yC,EAAgG,QAAxFsiY,EAAkB99X,aAAyC,EAASA,EAAQsuC,cAAwC,IAApBwvV,EAA6BA,EAAkB74X,EAAeqpC,cAA6B,IAAT9yC,EAAkBA,EAAOqjY,EAAA,EACjO,IAAKvwV,EAAOl6C,MACV,MAAM,IAAIsjQ,WAAW,sCAEvB,IAAIonI,GAAwB,EAAA96H,EAAA,GAAu3B,QAA52BjpQ,EAA6jB,QAApjBO,EAAue,QAA9dwM,EAAsH,QAA7Gi2X,EAAwB/9X,aAAyC,EAASA,EAAQ8+X,6BAA6D,IAA1Bf,EAAmCA,EAAwB/9X,SAA0F,QAAvCg+X,EAAmBh+X,EAAQsuC,cAAyC,IAArB0vV,GAA8F,QAAtDC,EAAwBD,EAAiBh+X,eAA+C,IAA1Bi+X,OAA/J,EAA2MA,EAAsBa,6BAA6C,IAAVh3X,EAAmBA,EAAQ7C,EAAe65X,6BAA6C,IAAVxjY,EAAmBA,EAA4D,QAAnD4iY,EAAwBj5X,EAAeqpC,cAA8C,IAA1B4vV,GAAyG,QAA5DC,EAAyBD,EAAsBl+X,eAAgD,IAA3Bm+X,OAA9E,EAA2HA,EAAuBW,6BAA6C,IAAV/jY,EAAmBA,EAAQ,GAGt7B,KAAM+jY,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIpnI,WAAW,6DAEvB,IAAIulI,GAAe,EAAAj5H,EAAA,GAAs1B,QAA30Bo6H,EAAkiB,QAAzhBC,EAAqd,QAA5cC,EAA6G,QAApGC,EAAwBv+X,aAAyC,EAASA,EAAQi9X,oBAAoD,IAA1BsB,EAAmCA,EAAwBv+X,SAA0F,QAAvCw+X,EAAmBx+X,EAAQsuC,cAAyC,IAArBkwV,GAA8F,QAAtDC,EAAwBD,EAAiBx+X,eAA+C,IAA1By+X,OAA/J,EAA2MA,EAAsBxB,oBAAoC,IAAVqB,EAAmBA,EAAQr5X,EAAeg4X,oBAAoC,IAAVoB,EAAmBA,EAA6D,QAApDK,EAAyBz5X,EAAeqpC,cAA+C,IAA3BowV,GAA2G,QAA7DC,EAAyBD,EAAuB1+X,eAAgD,IAA3B2+X,OAA/E,EAA4HA,EAAuB1B,oBAAoC,IAAVmB,EAAmBA,EAAQ,GAG54B,KAAMnB,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIvlI,WAAW,oDAEvB,GAAqB,KAAjBoxX,EACF,MAAmB,KAAftE,GACK,EAAApqX,EAAA,GAAOyuX,GAEP,IAAI5vmB,KAAKvjB,KAGpB,IAkBEmtZ,EAlBEkmO,EAAe,CACjBjqP,sBAAuBA,EACvB7B,aAAcA,EACd3uV,OAAQA,GAIN06kB,EAAU,CAAC,IAAI7E,GACftihB,EAASinhB,EAAa10nB,MAAMqpY,IAA4Bt6X,IAAI,SAAUo2F,GACxE,IAAI4lS,EAAiB5lS,EAAU,GAC/B,OAAI4lS,KAAkBE,EAAA,GAEbD,EADaC,EAAA,EAAeF,IACd5lS,EAAWjrD,EAAOywV,YAElCxlS,CACT,GAAGjrF,KAAK,IAAIla,MAAMopY,IACdyrP,EAAa,GACbC,EAAY3F,EAA2B1hhB,GAE3C,IACE,IAAI/2F,EAAQ,WACV,IAAIuJ,EAAQwuY,EAAM9sZ,MACZiK,SAA0CA,EAAQs/X,+BAAgC,QAAyBjrX,KAC/G,QAAoBA,EAAOy0mB,EAAcH,GAErC3onB,SAA0CA,EAAQu/X,gCAAiC,QAA0BlrX,KACjH,QAAoBA,EAAOy0mB,EAAcH,GAE3C,IAAIxpP,EAAiB9qX,EAAM,GACvB65E,EAASu6hB,GAAQtpP,GACrB,GAAIjxS,EAAQ,CACV,IAAIi7hB,EAAqBj7hB,EAAOi7hB,mBAChC,GAAIzknB,MAAMyb,QAAQgpmB,GAAqB,CACrC,IAAIC,EAAoBH,EAAWh+mB,KAAK,SAAUo+mB,GAChD,OAAOF,EAAmBpjlB,SAASsjlB,EAAUh1mB,QAAUg1mB,EAAUh1mB,QAAU8qX,CAC7E,GACA,GAAIiqP,EACF,MAAM,IAAI1xX,WAAW,sCAAsCt5P,OAAOgrnB,EAAkBE,UAAW,WAAWlrnB,OAAOiW,EAAO,sBAE5H,MAAO,GAAkC,MAA9B65E,EAAOi7hB,oBAA8BF,EAAWzknB,OAAS,EAClE,MAAM,IAAIkzP,WAAW,sCAAsCt5P,OAAOiW,EAAO,2CAE3E40mB,EAAW/knB,KAAK,CACdmQ,MAAO8qX,EACPmqP,UAAWj1mB,IAEb,IAAIm4f,EAAct+a,EAAO6nC,IAAIyuf,EAAYnwmB,EAAOi6B,EAAOl6C,MAAO20nB,GAC9D,IAAKv8G,EACH,MAAO,CACLj6f,EAAG,IAAI0G,KAAKvjB,MAGhBsznB,EAAQ9knB,KAAKsogB,EAAYzpN,QACzByhU,EAAah4G,EAAY5sf,IAC3B,KAAO,CACL,GAAIu/W,EAAe/qY,MAAMwpY,IACvB,MAAM,IAAIlmI,WAAW,iEAAmEynI,EAAiB,KAW3G,GAPc,OAAV9qX,EACFA,EAAQ,IACoB,MAAnB8qX,IACT9qX,EAA2BA,EA4EtBjgB,MAAMspY,IAAqB,GAAGvpY,QAAQwpY,GAAmB,MAxE9B,IAA9B6mP,EAAW7rnB,QAAQ0b,GAGrB,MAAO,CACL9B,EAAG,IAAI0G,KAAKvjB,MAHd8unB,EAAaA,EAAWt5mB,MAAMmJ,EAAM7P,OAMxC,CACF,EACA,IAAK0knB,EAAU71nB,MAAOwvZ,EAAQqmO,EAAUj4mB,KAAKW,MAAO,CAClD,IAAI23mB,EAAOz+mB,IACX,GAAsB,YAAlB,OAAQy+mB,GAAoB,OAAOA,EAAKh3mB,CAC9C,CAGF,CAAE,MAAOumG,GACPowgB,EAAU9znB,EAAE0jH,EACd,CAAE,QACAowgB,EAAUp3mB,GACZ,CACA,GAAI0ymB,EAAWhgnB,OAAS,GAAKkknB,GAAoBp2nB,KAAKkynB,GACpD,OAAO,IAAIvrmB,KAAKvjB,KAElB,IAAI8znB,EAAwBR,EAAQ7lnB,IAAI,SAAU4/S,GAChD,OAAOA,EAAOr+M,QAChB,GAAGlhG,KAAK,SAAUwG,EAAGC,GACnB,OAAOA,EAAID,CACb,GAAG3I,OAAO,SAAUqjG,EAAU99F,EAAO6d,GACnC,OAAOA,EAAM9rB,QAAQ+rG,KAAc99F,CACrC,GAAGzD,IAAI,SAAUuhG,GACf,OAAOskhB,EAAQ3nnB,OAAO,SAAU0hT,GAC9B,OAAOA,EAAOr+M,WAAaA,CAC7B,GAAGlhG,KAAK,SAAUwG,EAAGC,GACnB,OAAOA,EAAEi6mB,YAAcl6mB,EAAEk6mB,WAC3B,EACF,GAAG/gnB,IAAI,SAAUsmnB,GACf,OAAOA,EAAY,EACrB,GACI/3kB,GAAO,EAAA0oN,EAAA,GAAOyuX,GAClB,GAAI1ynB,MAAMu7C,EAAKmkE,WACb,OAAO,IAAI58F,KAAKvjB,KAIlB,IAGEg0nB,EAHEzqP,GAAU,EAAA3qD,EAAA,GAAgB5iS,GAAM,EAAAstV,EAAA,GAAgCttV,IAChEsjF,EAAQ,CAAC,EACT20f,EAAapG,EAA2BiG,GAE5C,IACE,IAAKG,EAAWt2nB,MAAOq2nB,EAASC,EAAW14mB,KAAKW,MAAO,CACrD,IAAImxS,GAAS2mU,EAAO3znB,MACpB,IAAKgtT,GAAOhtF,SAASkpK,EAAS8pP,GAC5B,OAAO,IAAI9vmB,KAAKvjB,KAElB,IAAI6N,GAASw/S,GAAO5+S,IAAI86X,EAASjqQ,EAAO+zf,GAEpCrknB,MAAMyb,QAAQ5c,KAChB07X,EAAU17X,GAAO,GACjB,EAAOyxH,EAAOzxH,GAAO,KAGrB07X,EAAU17X,EAEd,CACF,CAAE,MAAOu1G,GACP6wgB,EAAWv0nB,EAAE0jH,EACf,CAAE,QACA6wgB,EAAW73mB,GACb,CACA,OAAOmtX,CACT,C,uCCxce,SAASv7X,GAAI8xG,EAAWlgG,GAErC,IADA,EAAAyuP,EAAA,GAAa,EAAGx/P,YACX+Q,GAAkC,YAAtB,OAAQA,GAAwB,OAAO,IAAI2D,KAAKvjB,KACjE,IAAIomf,EAAQxme,EAASwme,OAAQ,EAAA93O,EAAA,GAAU1uP,EAASwme,OAAS,EACrDzqf,EAASikB,EAASjkB,QAAS,EAAA2yQ,EAAA,GAAU1uP,EAASjkB,QAAU,EACxD2qf,EAAQ1me,EAAS0me,OAAQ,EAAAh4O,EAAA,GAAU1uP,EAAS0me,OAAS,EACrDr4Y,EAAOruF,EAASquF,MAAO,EAAAqgK,EAAA,GAAU1uP,EAASquF,MAAQ,EAClD63F,EAAQlmL,EAASkmL,OAAQ,EAAAwoE,EAAA,GAAU1uP,EAASkmL,OAAS,EACrDC,EAAUnmL,EAASmmL,SAAU,EAAAuoE,EAAA,GAAU1uP,EAASmmL,SAAW,EAC3DC,EAAUpmL,EAASomL,SAAU,EAAAsoE,EAAA,GAAU1uP,EAASomL,SAAW,EAG3DhqJ,GAAO,EAAA0oN,EAAA,GAAO5kJ,GACdo0gB,EAAiBv4nB,GAAUyqf,GAAQ,EAAAvmY,GAAA,GAAU7jE,EAAMrgD,EAAiB,GAARyqf,GAAcpqc,EAG1Em4kB,EAAelmhB,GAAQq4Y,GAAQ,EAAAj3L,GAAA,GAAQ6kU,EAAgBjmhB,EAAe,EAARq4Y,GAAa4tI,EAK3EE,EAAyB,KADVpub,EAAyB,IADzBD,EAAkB,GAARD,IAI7B,OADgB,IAAIviL,KAAK4wmB,EAAah0gB,UAAYi0gB,EAEpD,CC7CA,IAAI55mB,GAAgB,SAASvc,EAAGsW,GAI5B,OAHAiG,GAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,GAAcvc,EAAGsW,EAC5B,EAUI8G,GAAW,WAQX,OAPAA,GAAW7W,OAAOC,QAAU,SAAkB6W,GAC1C,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KAAIS,EAAET,GAAKld,EAAEkd,IAE9E,OAAOS,CACX,EACOD,GAASG,MAAMd,KAAM7L,UAChC,EAEIwlnB,GAAqB,CACrB14Y,QAAQ,IAAAjuO,OACR4mnB,SAAU,GACVC,kBAAmB,KACnBC,yBAAyB,IAAA9mnB,OACzB+mnB,YAAa,WAAc,EAC3BC,eAAgB,WAAc,GAE9BC,GAAc,gBAAoBN,IAElCO,GAAc,SAAUv0Z,EAAUpyN,GAClC,IAAIiQ,GAAK,IAAAumO,YAAWkwY,IAAcF,EAAcv2mB,EAAGu2mB,YAAaC,EAAiBx2mB,EAAGw2mB,gBACpF,IAAAn6mB,WAAU,WAGN,OAFI8lN,GACAo0Z,EAAYxmnB,EAAMoyN,GACf,WACCA,GACAq0Z,EAAezmnB,EACvB,CACJ,EAAG,GACP,EAEI4mnB,GAAS,SAAU32mB,GACnB,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAMwK,EAAKyF,EAAGzF,GAAIiwC,EAAWxqC,EAAGwqC,SAAU87D,EAAYtmG,EAAGsmG,UAAW67G,EAAWniN,EAAGmiN,SAAUuoJ,EAAW1qW,EAAG0qW,SAAU12P,EAAWh0G,EAAGg0G,SAAU4igB,EAAmB52mB,EAAG42mB,iBAAkBC,EAAiB72mB,EAAG62mB,eAAgBC,EAAiB92mB,EAAG82mB,eAAgBC,EAAgB/2mB,EAAG+2mB,cAC3S7mhB,GAAW,IAAA8mhB,eACX72mB,GAAK,IAAAomO,YAAWkwY,IAAcL,EAAWj2mB,EAAGi2mB,SAAUC,EAAoBl2mB,EAAGk2mB,kBAAmB54Y,EAASt9N,EAAGs9N,OAC5Gt7O,GAAQ,IAAA80nB,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAAQ,GAC7F+hT,EAASllS,GAAMxK,EAMnB,OALA2mnB,GAAYv0Z,EAAUpyN,GAKd,gBAAoBmnnB,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAEmpG,UAAWA,GAAauwgB,GACvE,gBAAoBK,EAAA,EAAK5lQ,MAAOn0W,GAAS,CAAEmpO,QAASm5D,GAAUq3U,GAAiBz4mB,GAC/E,gBAAoB64mB,EAAA,EAAKh1L,QAAS/kb,GAAS,CAAE+oO,GAAI,SAAUn2O,KAAMA,EAAMwK,GAAIklS,EAAQ27B,SANrE,SAAUzyT,GACxB,IAAI3I,EAAK2I,EAAMpe,OAAQpI,EAAQ6d,EAAG7d,MAAO4N,EAAOiQ,EAAGjQ,KACnDmgG,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAOA,IACxE,EAG8GA,MAAOA,GAAS,GAAI,aAAckc,EAAO84mB,YAAa15Y,EAAOptO,IAAIN,GAAOy6C,SAAUA,EAAUkgU,SAAUA,GAAYksQ,GAAmB5igB,GAC/O,gBAAoBkjgB,EAAA,EAAKh1L,QAAQmoF,SAAUltgB,GAAS,CAAEqP,KAAM,WAAauqmB,GAAgBt5Y,EAAOptO,IAAIN,IAC5G,EAEIqnnB,GAAQ,SAAUp3mB,GAClB,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAMwK,EAAKyF,EAAGzF,GAAIiS,EAAOxM,EAAGwM,KAAMg+B,EAAWxqC,EAAGwqC,SAAUqtL,EAAS73N,EAAG63N,OAAQ1V,EAAWniN,EAAGmiN,SAAU00Z,EAAiB72mB,EAAG62mB,eAAgBQ,EAAiBr3mB,EAAGq3mB,eAAgBN,EAAgB/2mB,EAAG+2mB,cAC7N7mhB,GAAW,IAAA8mhB,eACX72mB,GAAK,IAAAomO,YAAWkwY,IAAcL,EAAWj2mB,EAAGi2mB,SAAUC,EAAoBl2mB,EAAGk2mB,kBAAmB54Y,EAASt9N,EAAGs9N,OAC5G+0E,GAAU,IAAAykU,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAAQ,GAMnG,OALAg5nB,GAAYv0Z,EAAUpyN,GAKd,gBAAoBmnnB,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAC,EAAG05mB,GACjD,gBAAoBK,EAAA,EAAKE,MAAOj6mB,GAAS,CAAEkB,MAAOA,EAAOtO,KAAMA,EAAMyiT,QAASA,IAAW,EAAO4oB,SALlF,SAAUzyT,GACxB,IAAI3I,EAAK2I,EAAMpe,OAAQioT,EAAUxyS,EAAGwyS,QAASziT,EAAOiQ,EAAGjQ,KACvDmgG,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAOqwT,IACxE,EAE2Hj4S,GAAIA,GAAMxK,EAAMyc,KAAMA,GAAQ,WAAYg+B,SAAUA,EAAUqtL,OAAQA,EAAQs/Y,YAAa15Y,EAAOptO,IAAIN,IAASsnnB,IACtO55Y,EAAOptO,IAAIN,GAAS,gBAAoB,MAAOoN,GAAS,CAAEmpG,UAAW,eAAiBywgB,GAClF,gBAAoB,QAAS,KAAMt5Y,EAAOptO,IAAIN,KAAW,KACrE,EAEIunnB,GAAc,SAAUt3mB,GACxB,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAMm2O,EAAKlmO,EAAGkmO,GAAI3rO,EAAKyF,EAAGzF,GAAIiwC,EAAWxqC,EAAGwqC,SAAU23K,EAAWniN,EAAGmiN,SAAUuoJ,EAAW1qW,EAAG0qW,SAAU8F,EAAYxwW,EAAGwwW,UAAWqmQ,EAAiB72mB,EAAG62mB,eAAgBC,EAAiB92mB,EAAG82mB,eAAgBF,EAAmB52mB,EAAG42mB,iBAAkBW,EAAmBv3mB,EAAGu3mB,iBAAkBR,EAAgB/2mB,EAAG+2mB,cACvU7mhB,GAAW,IAAA8mhB,eACX72mB,GAAK,IAAAomO,YAAWkwY,IAAcL,EAAWj2mB,EAAGi2mB,SAAUC,EAAoBl2mB,EAAGk2mB,kBAAmB54Y,EAASt9N,EAAGs9N,OAC5Gt7O,GAAQ,IAAA80nB,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAAQ,GAC7F+hT,EAASllS,GAAMxK,EACnB2mnB,GAAYv0Z,EAAUpyN,GACtB,IAAIynnB,EAAc,SAAU7umB,GACxB,IAAI3I,EAAK2I,EAAMpe,OAAQpI,EAAQ6d,EAAG7d,MAAO4N,EAAOiQ,EAAGjQ,KACnDmgG,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAOA,IACxE,EASA,OAAQ,gBAAoB+0nB,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAC,EAAG05mB,GACjD,gBAAoBK,EAAA,EAAK5lQ,MAAOn0W,GAAS,CAAEmpO,QAASm5D,GAAUq3U,GAAiBz4mB,GACiB,YAA/Fu4mB,aAA2D,EAASA,EAAiBpqmB,MAAsB,gBAAoB,IAAarP,GAAS,CAAEs6mB,UAAW,UAAW1nnB,KAAMA,EAAMwK,GAAIklS,EAAQ27B,SAVlL,SAAUj5U,GAChB,KAAVA,GAA0B,OAAVA,EAChBq1nB,EAAY,CAAEjtnB,OAAQ,CAAEpI,MAAO,KAAM4N,KAAMA,KAErB,iBAAV5N,GACZq1nB,EAAY,CAAEjtnB,OAAQ,CAAEpI,MAAOA,EAAO4N,KAAMA,IAEpD,EAGuO5N,MAAOA,EAAO,aAAckc,EAAOioG,UAAWm3H,EAAOptO,IAAIN,GAAQ,aAAe,GAAIy6C,SAAUA,EAAUkgU,SAAUA,EAAU8F,UAAWA,GAAa+mQ,IAAuB,gBAAoBL,EAAA,EAAKh1L,QAAS/kb,GAAS,CAAE+oO,GAAIA,GAAM,QAASn2O,KAAMA,EAAMwK,GAAIklS,EAAQ27B,SAAUo8S,EAAar1nB,MAAOA,GAAS,GAAI,aAAckc,EAAO84mB,YAAa15Y,EAAOptO,IAAIN,GAAOy6C,SAAUA,EAAUkgU,SAAUA,EAAU8F,UAAWA,GAAaomQ,IACroB,gBAAoBM,EAAA,EAAKh1L,QAAQmoF,SAAUltgB,GAAS,CAAEqP,KAAM,WAAauqmB,GAAgBt5Y,EAAOptO,IAAIN,IAC5G,EAEI41N,GAAW,SAAUpjI,GACrB,IAAI8vE,EAASl1J,GAAS,CAAC,EAAGolF,GAC1B,OAAO,IAAIm1hB,GAAkBrld,EACjC,EAKIqld,GAAmC,SAAUl3mB,GAE7C,SAASk3mB,IACL,OAAkB,OAAXl3mB,GAAmBA,EAAOlD,MAAMd,KAAM7L,YAAc6L,IAC/D,CACA,OAhHJ,SAAmBzc,EAAGsW,GAClB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,GAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,CAsGIT,CAAUm7mB,EAAmBl3mB,GAItBk3mB,CACX,CANsC,EAMpC,IAAAhtO,QAV4B,CAC1BnwY,IAAK,EACLxK,KAAM,MAUN4nnB,GAAc,SAAU33mB,GACxB,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAM3D,EAAU4T,EAAG5T,QAASmO,EAAKyF,EAAGzF,GAAI4nN,EAAWniN,EAAGmiN,SAAUy1Z,EAAU53mB,EAAG43mB,QAASx8S,EAAWp7T,EAAGo7T,SAAUy8S,EAAgB73mB,EAAG63mB,cAAeC,EAAY93mB,EAAG83mB,UAAWC,EAAoB/3mB,EAAG+3mB,kBAAmBlB,EAAiB72mB,EAAG62mB,eAAgBC,EAAiB92mB,EAAG82mB,eAAgBkB,EAAch4mB,EAAGg4mB,YAAajB,EAAgB/2mB,EAAG+2mB,cACzW7mhB,GAAW,IAAA8mhB,eACX72mB,GAAK,IAAAomO,YAAWkwY,IAAcL,EAAWj2mB,EAAGi2mB,SAAUC,EAAoBl2mB,EAAGk2mB,kBAAmB54Y,EAASt9N,EAAGs9N,OAChHi5Y,GAAYv0Z,EAAUpyN,GACtB,IAAIovQ,GAAW,IAAA83W,aAAY,SAAU9qnB,GACjC,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAClD,GACIu6nB,EAAqB7rnB,EAAQmD,IAAI,SAAUuyC,GAAU,OAAO6jL,GAAS7jL,EAAO0tW,OAAS,GASzF,OAAQ,gBAAoB0nO,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAC,EAAG05mB,EAAgB,CAAE,cAAe,wBAClF,gBAAoBK,EAAA,EAAK5lQ,MAAOn0W,GAAS,CAAEmpO,QAAS/rO,GAAMxK,GAAQ+mnB,GAAiBz4mB,GACnF,gBAAoB,KAAUlB,GAAS,CAAE5C,GAAIA,GAAMxK,EAAMA,KAAMA,EAAM5N,MAAOg9Q,aAA2C,EAASA,EAASqwI,OAAQpjZ,SAAU6rnB,aAA+D,EAASA,EAAmBzoO,SAAW,GAAIooO,UAAWA,EAASG,oBAAqBA,EAAmB38S,SAVnT,SAAU1qS,GACxB,IAAIwnlB,EAAWpnnB,MAAMyb,QAAQmkB,GAASA,EAAQ,CAACA,GAC3CkhI,GAAU,IAAAugP,MAAK+lO,EAAS3onB,IAAI,SAAU4onB,GAAW,OAAOxyZ,GAASwyZ,EAAU,IAC3Eh2nB,EAAQy1nB,EAAUhmd,EAAUA,EAAQ5mG,QACxCklC,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAOA,KAChEi5U,GACAA,EAASj5U,EACjB,EAG4VuP,OAAQ,CAAEk7S,QAAS,SAAUl7S,GAAU,OAAQyL,GAASA,GAAS,CAAC,EAAGzL,GAAS,CAAE+zB,YAAag4M,EAAOptO,IAAIN,GAAQ,MAAQ2B,EAAO+zB,aAAiB,GAAK2ylB,eAAgB,SAAUr1nB,GAAK,IAAIid,EAAI,OAAyB,QAAjBA,EAAKjd,EAAEgN,YAAyB,IAAPiQ,OAAgB,EAASA,EAAGxc,UAAY,EAAG60nB,eAAgB,SAAUt1nB,GAAK,IAAIid,EAAI,OAAuB,QAAfA,EAAKjd,EAAEwX,UAAuB,IAAPyF,OAAgB,EAASA,EAAGxc,UAAY,EAAGq0nB,cAAeA,EAAeC,YAAaA,GAAaE,IACzwBv6Y,EAAOptO,IAAIN,GAAS,gBAAoB,MAAOoN,GAAS,CAAEmpG,UAAW,eAAiBywgB,GAClF,gBAAoB,QAAS,KAAMt5Y,EAAOptO,IAAIN,KAAW,KACrE,EA8EIuonB,GAAYhynB,OAAOC,OA5ET,SAAUyZ,GACpB,IAAIo2mB,EAAWp2mB,EAAGo2mB,SAAUC,EAAoBr2mB,EAAGq2mB,kBAAmB79P,EAAWx4W,EAAGw4W,SAAUxkQ,EAAWh0G,EAAGg0G,SAAUmuG,EAAWniN,EAAGmiN,SAAUo2Z,EAAYv4mB,EAAGu4mB,UACzJjC,GAA0B,IAAA76mB,SAAO,IAAAjM,QACjCgpnB,GAAY,IAAA/8mB,SAAO,IAAAjM,QACnB2Q,GAAK,IAAArE,UAAS,MAAO28mB,EAAet4mB,EAAG,GAAIu4mB,EAAkBv4mB,EAAG,GAChEsB,GAAK,IAAA3F,WAAS,GAAQ68mB,EAAQl3mB,EAAG,GAAIm3mB,EAAWn3mB,EAAG,GACjCo3mB,GAAb,IAAA/8mB,UAAS,GAAwB,GACtC+nO,GAAa,IAAAozY,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAW,GAK1E0C,EAAgB,SAAUjonB,EAAMkonB,QACX,IAAjBA,IAA2BA,GAAe,GAC9C,IAAIC,EAAYR,EAAUnmnB,QAoB1B,OAnBI8vN,GACuBA,EAAStxN,GACfrC,QAAQ,SAAUwR,GAC/B,IAAIjQ,EAAOiQ,EAAGjQ,KAAM0W,EAAQzG,EAAGyG,MAC/BuymB,EAAYvymB,EAAQuymB,EAAUzonB,IAAIR,EAAM0W,GAASuymB,EAAU/llB,OAAOljC,EACtE,GAEAumnB,EAAwBjknB,QAAQkd,KAAO,GACvC+mmB,EAAwBjknB,QAAQ7D,QAAQ,SAAU2zN,EAAUpyN,GAEpD,IAAI0W,GADgB,IAApB07M,EAASvxN,QAAgBb,IAASc,EAAKd,MAAQgpnB,QAA8BzlnB,IAAdzC,EAAKd,QAEpE0W,EAAQ07M,EAAS0hB,aAA+C,EAASA,EAAWwsK,MAAMtgZ,EAAKrS,MAAM,MAAOmmP,GAC5Gm1Y,EAAYvymB,EAAQuymB,EAAUzonB,IAAIR,EAAM0W,GAASuymB,EAAU/llB,OAAOljC,GAE1E,IAEAoyN,GAAYm0Z,EAAwBjknB,QAAQkd,KAAO,KACnDipmB,EAAUnmnB,QAAU2mnB,GACxBH,EAAe,SAAU/5Q,GAAa,OAAOA,EAAY,CAAG,GACrDk6Q,CACX,EA+BA,OAbA,IAAA38mB,WAAU,WACDs8mB,GAIDG,EAAcL,GAAgB,CAAErC,SAAUA,IAC1CsC,EAAgB,OAJhBE,GAAS,EAMjB,EAAG,CAAC/0Y,KACJ,IAAAxnO,WAAU,WACNm8mB,EAAUnmnB,SAAU,IAAA7C,OACpBqpnB,EAAe,SAAU/5Q,GAAa,OAAOA,EAAY,CAAG,EAChE,EAAG,CAAC34V,KAAKC,UAAUgwmB,KACX,gBAAoBK,GAAYj8R,SAAU,CAAEr4V,MAAO,CACnDs7O,OAAQ+6Y,EAAUnmnB,QAClB+jnB,SAAUA,EACVC,kBA7DS,SAAUxlnB,GAEvB,OADA6nnB,EAAgB7nnB,GACTwlnB,EAAkBxlnB,EAC7B,EA2DQylnB,wBAAyBA,EAAwBjknB,QACjDkknB,YAzBU,SAAUxmnB,EAAMoyN,GAC9Bm0Z,EAAwBjknB,QAAUiknB,EAAwBjknB,QAAQ9B,IAAIR,EAAMoyN,EAChF,EAwBQq0Z,eAvBa,SAAUzmnB,GAC3ByonB,EAAUnmnB,QAAUmmnB,EAAUnmnB,QAAQ4gC,OAAOljC,GAC7CumnB,EAAwBjknB,QAAUiknB,EAAwBjknB,QAAQ4gC,OAAOljC,EAC7E,IAsBI,gBAAoBmnnB,EAAA,EAAM/5mB,GAAS,CAAEq7W,SArCtB,SAAU7vW,GACzBA,EAAMwgH,iBACNxgH,EAAMm3P,kBACN,IAAIk5W,EAAYF,EAAc,CAAE1C,SAAUA,IAAY,GAClD9vnB,OAAOO,KAAKmynB,EAAUxpO,QAAQ5+Y,OAAS,GAG3C4nX,EAAS7vW,EACb,GA6BmE4vmB,GAAYvkgB,GACnF,EACuC,CACnCojgB,MAAOA,GACPE,YAAaA,GACbK,YAAaA,GACbhB,OAAQA,KAGRsC,GAAkB,SAAUj5mB,GAC5B,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAMwK,EAAKyF,EAAGzF,GAAIiwC,EAAWxqC,EAAGwqC,SAAU23K,EAAWniN,EAAGmiN,SAAUuoJ,EAAW1qW,EAAG0qW,SAAU8F,EAAYxwW,EAAGwwW,UAAWqmQ,EAAiB72mB,EAAG62mB,eAAgBC,EAAiB92mB,EAAG82mB,eAAgBF,EAAmB52mB,EAAG42mB,iBAAkBG,EAAgB/2mB,EAAG+2mB,cAAe52mB,EAAKH,EAAG9Z,IAAKA,OAAa,IAAPia,EAAgB,KAAOA,EAAIsB,EAAKzB,EAAG7Z,IAAKA,OAAa,IAAPsb,EAAgB,KAAOA,EAC1XyuF,GAAW,IAAA8mhB,eACXvvgB,GAAK,IAAA8+H,YAAWkwY,IAAcL,EAAW3ugB,EAAG2ugB,SAAUC,EAAoB5ugB,EAAG4ugB,kBAAmB54Y,EAASh2H,EAAGg2H,OAC5GgiE,EAASllS,GAAMxK,EACf+tC,GAAO,IAAAm5kB,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAAQ,GAC5Fw7nB,EAAgBp7kB,GAAO,EAAAutN,EAAA,GAAUvtN,EAAKmkE,UAAW,CAAEwpJ,eAAgB,SAAY,GA4BnF,OADAirX,GAAYxwnB,GAAOC,EA1BA,SAAU23C,GAEzB,OADoBA,GAAQ53C,GAAO,IAAImf,KAAKnf,GAAKgoJ,SAAS,EAAG,EAAG,GAAKpwG,EAAKmkE,UAE/D,0BAA0Bz3G,OAAO,IAAI6a,KAAKnf,GAAKiznB,qBAAsB,KAE7Dr7kB,GAAQ33C,GAAO,IAAIkf,KAAKlf,GAAK+nJ,SAAS,GAAI,GAAI,IAAMpwG,EAAKmkE,UAEjE,0BAA0Bz3G,OAAO,IAAI6a,KAAKlf,GAAKgznB,qBAAsB,KAE5Eh3Z,EACOA,EAASrkL,QADpB,CAGJ,EAcwCqkL,EAAUpyN,GAC1C,gBAAoBmnnB,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAC,EAAG05mB,GACjD,gBAAoBK,EAAA,EAAK5lQ,MAAOn0W,GAAS,CAAEmpO,QAASm5D,GAAUq3U,GAAiBz4mB,GAC/E,gBAAoB64mB,EAAA,EAAKh1L,QAAS/kb,GAAS,CAAEqP,KAAM,OAAQzc,KAAMA,EAAMwK,GAAIklS,EAAQ27B,SAhBrE,SAAUzyT,GACxB,IAAI3I,EAAK2I,EAAMpe,OAAQ6unB,EAAep5mB,EAAG7d,MAAO4N,EAAOiQ,EAAGjQ,KACtDilT,EAAapgR,GAAMwklB,EAAc,aAAc,IAAI/zmB,MACX,iBAA1B2vS,EAAWxxT,aAIzBs6C,IACAk3Q,EAAW9mK,SAASpwG,EAAK0jG,YACzBwzK,EAAW7mK,WAAWrwG,EAAK2jG,eAE/BvxC,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAO6yT,KACxE,EAI8G7yT,MAAO+2nB,EAAe,aAAc76mB,EAAO84mB,YAAa15Y,EAAOptO,IAAIN,GAAOy6C,SAAUA,EAAUkgU,SAAUA,EAAU8F,UAAWA,EAAWtqX,IAAKA,EAAKC,IAAKA,GAAOywnB,IACxQ,gBAAoBM,EAAA,EAAKh1L,QAAQmoF,SAAUltgB,GAAS,CAAEqP,KAAM,WAAauqmB,GAAgBt5Y,EAAOptO,IAAIN,IAC5G,EAEIspnB,GAAkB,SAAUr5mB,GAC5B,IAAI3B,EAAQ2B,EAAG3B,MAAOtO,EAAOiQ,EAAGjQ,KAAMwK,EAAKyF,EAAGzF,GAAIiwC,EAAWxqC,EAAGwqC,SAAU23K,EAAWniN,EAAGmiN,SAAUuoJ,EAAW1qW,EAAG0qW,SAAU8F,EAAYxwW,EAAGwwW,UAAWqmQ,EAAiB72mB,EAAG62mB,eAAgBC,EAAiB92mB,EAAG82mB,eAAgBF,EAAmB52mB,EAAG42mB,iBAAkBG,EAAgB/2mB,EAAG+2mB,cACnR7mhB,GAAW,IAAA8mhB,eACX72mB,GAAK,IAAAomO,YAAWkwY,IAAcL,EAAWj2mB,EAAGi2mB,SAAUC,EAAoBl2mB,EAAGk2mB,kBAAmB54Y,EAASt9N,EAAGs9N,OAC5Gt7O,GAAQ,IAAA80nB,aAAY,SAAU9qnB,GAAS,OAAOA,EAAMkkZ,MAAM+lO,EAAS5rnB,OAAOuF,EAAKrS,MAAM,MAAQ,GAC7F+4D,EAAiBt0D,GAAQ,EAAA64C,GAAA,GAAO74C,EAAO,UAAY,GACnDs9S,EAASllS,GAAMxK,EACnB2mnB,GAAYv0Z,EAAUpyN,GAkBtB,IAAIupnB,EAVJ,WAII,IAHA,IAAIjumB,EAAYupB,GAAM,QAAS,QAAS,IAAIvvB,MACxC09b,EAAUnua,GAAM,QAAS,QAAS,IAAIvvB,MACtCk0mB,EAAY,GACTlumB,GAAa03b,GAChBw2K,EAAUjpnB,MAAK,EAAA0qC,GAAA,GAAO3vB,EAAW,WACjCA,EAAYvb,GAAIub,EAAW,CAAEw8K,QAAS,KAE1C,OAAO0xb,CACX,CACkBC,GAClB,OAAQ,gBAAoBtC,EAAA,EAAK1+O,MAAOr7X,GAAS,CAAC,EAAG05mB,GACjD,gBAAoBK,EAAA,EAAK5lQ,MAAOn0W,GAAS,CAAEmpO,QAASm5D,GAAUq3U,GAAiBz4mB,GAC/E,gBAAoB64mB,EAAA,EAAKh1L,QAAS/kb,GAAS,CAAE+oO,GAAI,SAAUn2O,KAAMA,EAAMwK,GAAIklS,EAAQ27B,SApBrE,SAAUzyT,GACxB,IAAI3I,EAAK2I,EAAMpe,OAAQ0gI,EAAWjrH,EAAG7d,MAAO4N,EAAOiQ,EAAGjQ,KAClDqpnB,EAAexklB,GAAMq2F,EAAU,SAAU,IAAI5lH,MAC7C2giB,EAAW7jjB,GAAS,IAAIkjB,KACxBo0mB,EAAU,IAAIp0mB,KAAK2giB,EAAS3jc,eAAiB,EAAG2jc,EAAS7jc,YAAc,EAAG6jc,EAASjkc,WAAa,EAAGq3gB,EAAa53e,WAAY43e,EAAa33e,cAC7IvxC,EAASmmhB,EAAkB,CAAED,SAAUA,EAAUrmnB,KAAMA,EAAM5N,MAAOs3nB,IACxE,EAc8Gt3nB,MAAOs0D,EAAgB,aAAcp4C,EAAO84mB,YAAa15Y,EAAOptO,IAAIN,GAAOy6C,SAAUA,EAAUkgU,SAAUA,EAAU8F,UAAWA,GAAaomQ,GACjP,gBAAoB,SAAU,CAAEz0nB,MAAO,GAAIwnD,QAAQ,IACnD2vkB,EAAY/pnB,IAAI,SAAUgyjB,GAAW,OAAQ,gBAAoB,SAAU,CAAEv6jB,IAAKu6jB,EAASp/jB,MAAOo/jB,GAAWA,EAAW,IAC5H,gBAAoB21D,EAAA,EAAKh1L,QAAQmoF,SAAUltgB,GAAS,CAAEqP,KAAM,WAAauqmB,GAAgBt5Y,EAAOptO,IAAIN,IAC5G,C,+BCpUA,IAAIooP,EAAsB,EAAQ,OAE9BhyP,EAAMnE,KAAKmE,IACXD,EAAMlE,KAAKkE,IAKfg4F,EAAOj9F,QAAU,SAAU+R,EAAOpC,GAChC,IAAIk8W,EAAU30H,EAAoBnlP,GAClC,OAAO85W,EAAU,EAAI3mX,EAAI2mX,EAAUl8W,EAAQ,GAAK1K,EAAI4mX,EAASl8W,EAC/D,C,yBCXAstF,EAAOj9F,QAAU,SAA2Bg9G,EAAIi4H,EAAUC,GACxD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACnBkS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GAEvB65H,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3Bq6b,EAAO,IAAMvqO,EACfojZ,EAAW5hZ,EAAItB,UAAYv4H,EAAGu4H,UAAY,EAC1CuqO,EAAY,OAAS24K,EACrBv4K,EAAiBljW,EAAGi5H,OACpByiZ,EAAkB17gB,EAAG0S,KAAKgwV,eAAer+O,EAASrkH,EAAG0/H,MAAMr7L,KAE7D,GADA2jE,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpD0zgB,EAAiB,CACnB,IAAIlwY,EAAgBxrI,EAAG25H,cACvB35H,EAAG25H,cAAgBE,EAAIF,eAAgB,EACvCE,EAAIhW,OAASQ,EACbwV,EAAIE,WAAasQ,EACjBxQ,EAAIpB,cAAgBD,EACpBxwH,GAAO,QAAU,EAAe,sBAAwB,EAAS,SAAW,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC9H6xH,EAAII,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW2oO,EAAM5iW,EAAG1xE,KAAKstlB,cAAc,GAC9E,IAAIz4K,EAAYvqO,EAAQ,IAAMgqO,EAAO,IACrC/oO,EAAIM,YAAYshZ,GAAY74K,EAC5B,IAAIn3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,QAAU,EAAe,eAChChI,EAAG25H,cAAgBE,EAAIF,cAAgB6R,EACvCxjI,GAAO,UAAoC,EAAe,KAC5D,MACEA,GAAO,QAAU,EAAU,kBAE7B,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kBACzI,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,8CAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAmBZ,OAlBAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,aACH0zgB,IACF1zgB,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAE9GhI,EAAG1xE,KAAKqqM,YACV3wH,GAAO,OAEHhI,EAAG0S,KAAK4wV,YAAYt7V,EAE5B,C,gMCpEI6zgB,GAAgB,OAAiB,MACrCA,EAAcj1b,YAAc,gBAC5B,IAAIk1b,GAAe,OAAmB,gBAAiB,CACrD5zY,UAAW2zY,IAETE,GAAY,OAAmB,aAAc,CAC/C7zY,UAAW,MAETtwB,EAAe,CACjBz0K,MAAM,EACNsK,WAAY,IACZogV,WAAY,eAEVmuP,EAAqB,aAAiB,SAAUC,EAAmB7qgB,GACrE,IAAI25Z,GAAmB,QAAgBkxG,EAAmB,CACxD94kB,KAAM,YAEJkuE,EAAW05Z,EAAiB15Z,SAC5BluE,EAAO4ne,EAAiB5ne,KACxB0qV,EAAak9I,EAAiBl9I,WAC9BxlR,EAAY0ia,EAAiB1ia,UAC7B0N,EAAWg1Z,EAAiBh1Z,SAC5BtE,EAAUs5Z,EAAiBt5Z,QAC3Bk8Q,EAAUo9I,EAAiBp9I,QAC3BuuP,EAAcnxG,EAAiBmxG,YAC/BzukB,EAAas9d,EAAiBt9d,WAC9B9c,GAAQ,OAA8Bo6e,EAAkB,CAAC,WAAY,OAAQ,aAAc,YAAa,WAAY,UAAW,UAAW,cAAe,eAEzJt3e,GAAS,QAAmB49E,EAAU,SACtC8qgB,GAAc,OAAiB,SAAU54nB,GACvCoqY,GACFA,GAAQ,EAAOpqY,EAEnB,GACIkyV,GAA4B,IAAfhoS,EAAsB,IAAOA,EAC1C2+T,EAAqB,gBAAoB,OAAO,OAAS,CAC3DvvW,KAAM,SACJ44U,OAAqBpgV,EAARs7B,EAAmB,CAClCygF,IAAKA,EACL/I,UAAW,IAAWA,EAAW50E,EAAQg+E,GAAWh+E,EAAS,IAAMg+E,EAASyqgB,GAAezolB,EAAS,kBAClGyolB,GAA4B,gBAAoB,IAAa,CAC/DnzlB,QAASozlB,EACT/7mB,MAAOytX,IACL93Q,GACJ,OAAK0/N,EACe,gBAAoBA,GAAY,OAAS,CAC3Dh4G,eAAe,GACd9sM,EAAO,CACRygF,SAAK/7G,EACLkoO,GAAIp6L,IACFipU,GANoBjpU,EAAOipU,EAAQ,IAOzC,GACA4vQ,EAAMp1b,YAAc,QACpBo1b,EAAMpka,aAAeA,EACrBoka,EAAMI,KAAOL,EACbC,EAAMK,QAAUP,EAChB,S,+BCnEA,IAAI7zhB,EAAI,EAAQ,OACZq0hB,EAAU,aAKdr0hB,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJlB,EAAQ,QAIgC,CACvDm9gB,OAAQ,SAAgB//Y,GACtB,OAAO8/Y,EAAQ/9mB,KAAMi+N,EAAW9pO,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EACxE,G,+DCwBF,QAJA,SAAaw0C,EAAQu9B,EAAMljF,GACzB,OAAiB,MAAV2lD,EAAiBA,GAAS,OAAQA,EAAQu9B,EAAMljF,EACzD,C,kBChCA,IAAI+1N,EAAe,EAAQ,OAsB3Bh6H,EAAOj9F,QAPP,SAAiB+F,EAAK7E,GACpB,IAAIoQ,EAAOiK,KAAKi4T,SAGhB,OAFAj4T,KAAK+S,MAAQ/S,KAAKrM,IAAInJ,GAAO,EAAI,EACjCuL,EAAKvL,GAAQkxN,QAA0B5kN,IAAVnR,EAfV,4BAekDA,EAC9Dqa,IACT,C,+BCnBA,IAAI4/G,EAAc,EAAQ,OACtBK,EAAQ,EAAQ,OAChBlzG,EAAgB,EAAQ,MAG5B20E,EAAOj9F,SAAWm7H,IAAgBK,EAAM,WAEtC,OAES,IAFFn2H,OAAOwY,eAAeyK,EAAc,OAAQ,IAAK,CACtDlZ,IAAK,WAAc,OAAO,CAAG,IAC5B+F,CACL,E,kBCXA,IAAIgoH,EAAc,EAAQ,OAqB1BlgC,EAAOj9F,QALP,SAAiB4vB,GAEf,OADsB,MAATA,GAAoBA,EAAMjgB,OACvBwtH,EAAYvtG,EAAO,GAAK,EAC1C,C,+BClBA,IAAI41N,EAAY,EAAQ,OAEpB42G,EAAavgV,UAEb29mB,EAAoB,SAAUjlmB,GAChC,IAAIpiB,EAASwK,EACbpB,KAAKqiH,QAAU,IAAIrpG,EAAE,SAAUqjR,EAAWD,GACxC,QAAgBtlS,IAAZF,QAAoCE,IAAXsK,EAAsB,MAAM,IAAIy/U,EAAW,2BACxEjqV,EAAUylS,EACVj7R,EAASg7R,CACX,GACAp8R,KAAKpJ,QAAUqzO,EAAUrzO,GACzBoJ,KAAKoB,OAAS6oO,EAAU7oO,EAC1B,EAIAsgF,EAAOj9F,QAAQid,EAAI,SAAUsX,GAC3B,OAAO,IAAIilmB,EAAkBjlmB,EAC/B,C,oHCZIklmB,EAAqB,aAAiB,SAAU9ynB,EAAMynH,GACxD,IAAIC,EAAW1nH,EAAK0nH,SAChBI,EAAU9nH,EAAK8nH,QACfirgB,EAAO/ynB,EAAK+ynB,KACZr0gB,EAAY1+G,EAAK0+G,UACjB2/H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,OAASA,EAC1Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,UAAW,OAAQ,YAAa,OAEzF8pC,GAAS,QAAmB49E,EAAU,SAC1C,OAAoB,gBAAoB62H,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAW50E,EAAQiplB,GAAQjplB,EAAS,QAASg+E,GAAWh+E,EAAS,IAAMg+E,KAEjG,GACAgrgB,EAAM71b,YAAc,QACpB61b,EAAM7ka,aApBa,CACjB8ka,MAAM,GAoBR,S,kBC1BA,EAAQ,OACRz8hB,EAAOj9F,QAAU,Y,kBCAoBi9F,EAAOj9F,UACxCi9F,EAAOj9F,QAAU,CACf25nB,OAAQ,EAAQ,OAChBrtC,OAAQ,EAAQ,OAChBstC,OAAQ,EAAQ,OAChBtqhB,cAAe,EAAQ,O,yBCyB7BrS,EAAOj9F,QAnBH,SAAoC+e,GAChC,IAAIG,EAAKH,EAAG+C,OAAQA,OAAgB,IAAP5C,EAAgB,KAAOA,EAAIsB,EAAKzB,EAAGiD,IAAKA,OAAa,IAAPxB,EAAgB,KAAOA,EAAIgmG,EAAKznG,EAAGwG,MAAOA,OAAe,IAAPihG,EAAgB,KAAOA,EACpJnhH,OAAO0hC,iBAAiBxrB,KAAM,CAC1BuG,OAAQ,CACJ5gB,MAAO4gB,EACPmlB,YAAY,GAEhBjlB,IAAK,CACD9gB,MAAO8gB,EACPilB,YAAY,GAEhB1hB,MAAO,CACHrkB,MAAOqkB,EACP0hB,YAAY,IAGxB,C,kBC5BJ,IAAIzhB,EAAQ,EAAQ,OAGpBxlB,EAAQ65nB,KAAO,WACb,MAAM,IAAI/2mB,MAAM,0BAClB,EAEA9iB,EAAQsrnB,MAAQ,CAAC,EACjBtrnB,EAAQsrnB,MAAMwO,KAAO,SAASC,GAC5B,OAAQA,GACN,KAAKv0mB,EAAMw0mB,IAAK,OAAO,EACvB,KAAKx0mB,EAAM4wF,KAAM,OAAO,EACxB,KAAK5wF,EAAMtkB,MAAO,OAAO,EACzB,KAAKskB,EAAM4oG,IAAK,OAAO,EACvB,KAAK5oG,EAAM1W,KAAM,OAAO,EACxB,KAAK0W,EAAMg0B,IAAK,OAAO,EACvB,KAAKh0B,EAAMuvF,GAAI,OAAO,EACtB,KAAKvvF,EAAMlU,KAAM,OAAO,EAE1B,OAAOkU,EAAMuvF,EACf,EAGA/0G,EAAQkrnB,KAAO,WACb,MAAM,IAAIpomB,MAAM,0BAClB,EAEA9iB,EAAQi6nB,QAAU,SAAS/4nB,GACzB,OAAiB,OAAVA,CACT,EAEAlB,EAAQk6nB,SAAW,SAAU17kB,GAC3B,MAAO,eAAiB/gD,KAAK+gD,EAC/B,EAEAx+C,EAAQm6nB,MAAQ,SAASj5nB,GACvB,MAAO,CAAEskB,EAAMtkB,MAAOskB,EAAM4oG,IAAK5oG,EAAM4wF,KAAM5wF,EAAMg0B,IAAKh0B,EAAM1W,KAAM0W,EAAMw0mB,KAAMl2nB,QAAQ5C,IAAU,GAC9E,iBAAVA,IAAuBI,MAAMJ,KAAWyqB,SAASzqB,GAC7D,EAEAlB,EAAQo6nB,QAAU,SAASl5nB,GACzB,OAAOlB,EAAQm6nB,MAAMj5nB,IAAUA,IAAUskB,EAAMuvF,EACjD,EAEA/0G,EAAQq6nB,OAAS,SAAS77kB,GACxB,QAAuC,EAA/Bz9C,KAAKQ,MAAMR,KAAKM,IAAIm9C,IAC9B,EAGAx+C,EAAQs6nB,UAAY,WAClB,MAAM,IAAIx3mB,MAAM,+BAClB,EAEA9iB,EAAQu6nB,UAAY,SAASr5nB,GAC3B,OAAiB,IAAVA,IAA4B,IAAVA,CAC3B,EAEAlB,EAAQw6nB,KAAO,SAASt5nB,GACtB,OAAOA,IAAUskB,EAAMuvF,EACzB,EAEA/0G,EAAQy6nB,UAAY,SAASv5nB,GAC3B,MAAyB,iBAAZ,CACf,EAEAlB,EAAQw6G,SAAW,SAASt5G,GAC1B,MAAyB,iBAAZ,IAAyBI,MAAMJ,IAAUyqB,SAASzqB,EACjE,EAEAlB,EAAQ06nB,MAAQ,SAASl8kB,GACvB,SAAuC,EAA/Bz9C,KAAKQ,MAAMR,KAAKM,IAAIm9C,IAC9B,EAGAx+C,EAAQ26nB,MAAQ,WACd,MAAM,IAAI73mB,MAAM,2BAClB,EAEA9iB,EAAQ46nB,OAAS,SAAS15nB,GACxB,MAAyB,iBAAZ,CACf,EAEAlB,EAAQs2B,EAAI,SAASp1B,GACnB,OAAIqa,KAAKi/F,SAASt5G,GACTA,EAELA,aAAiBkjB,KACZljB,EAAM8/G,WAED,IAAV9/G,EACK,GAEK,IAAVA,EACK,EAELqa,KAAK6+mB,QAAQl5nB,GACRA,EAEF,CACT,EAEAlB,EAAQ66nB,GAAK,WACX,OAAOr1mB,EAAMuvF,EACf,EAIA/0G,EAAQy+J,MAAQ,WACd,MAAM,IAAI37I,MAAM,2BAClB,EAGA9iB,EAAQ86nB,OAAS,WACf,MAAM,IAAIh4mB,MAAM,4BAClB,EAEA9iB,EAAQ85nB,KAAO,SAAS54nB,GACtB,OAAIqa,KAAKi/F,SAASt5G,GACT,EAELqa,KAAKq/mB,OAAO15nB,GACP,EAELqa,KAAKg/mB,UAAUr5nB,GACV,EAELqa,KAAK6+mB,QAAQl5nB,GACR,GAEL2O,MAAMyb,QAAQpqB,GACT,QADT,CAGF,C,gEClII65nB,EAA4B,gBAAoB,CAAC,GAe9C,SAASC,EAAmBvqlB,EAAQwqlB,GACzC,IAAIrrlB,GAAW,IAAA01M,YAAWy1Y,GAC1B,OAAOtqlB,GAAUb,EAASqrlB,IAAkBA,CAC9C,CAjBeF,EAAavhS,SACbuhS,EAAaxhS,Q,+BCF5B,IAAI2hS,EAAc,EAAQ,MACtB77Y,EAAS,EAAQ,OAErBpiJ,EAAOj9F,QAAU,WAChB,IAAIuxhB,EAAW2pG,IAMf,OALA77Y,EAAOh6O,OAAQ,CAAEm7H,GAAI+wZ,GAAY,CAChC/wZ,GAAI,WACH,OAAOn7H,OAAOm7H,KAAO+wZ,CACtB,IAEMA,CACR,C,+BCVA,IAAI31gB,EAAO,EAAQ,OACf4pO,EAAY,EAAQ,OACpB9oI,EAAW,EAAQ,OACnBlxF,EAAW,EAAQ,OACnB+uT,EAA2B,EAAQ,OACnCrxF,EAAa,EAAQ,OACrBtsI,EAAoB,EAAQ,MAC5Bu+gB,EAAsB,EAAQ,OAE9BntP,EAAe,SAAU8rP,GAC3B,IAAIsB,EAAuB,IAATtB,EACduB,EAAuB,IAATvB,EACdwB,EAAoB,IAATxB,EACXyB,EAAmB,IAATzB,EACd,OAAO,SAAUjzkB,EAAQx2C,EAAI/G,GAC3BozG,EAAS71D,GACT,IAAI20kB,OAAiBnpnB,IAAPhC,GACVmrnB,GAAYJ,GAAa51Y,EAAUn1O,GACvC,IAAI+gK,EAASx0D,EAAkB/1D,GAC3B30C,EAAUg3O,EAAW,WACrBzrO,EAAW2zJ,EAAO3zJ,SAClBpa,EAAO+tK,EAAO/tK,KACdmyM,EAAU,EAEd,OAAO,IAAItjM,EAAQ,SAAUC,EAASwK,GACpC,IAAI8+mB,EAA6B,SAAUj2mB,GACzC21mB,EAAoB19mB,EAAUd,EAAQ6I,EAAO7I,EAC/C,EAEIm4B,EAAO,WACT,IACE,GAAI0mlB,EAAS,IACXjhT,EAAyB/kI,EAC3B,CAAE,MAAOkmb,GAAUD,EAA2BC,EAAS,CACvDxpnB,EAAQC,QAAQuqG,EAAS9gG,EAAKvY,EAAMoa,KAAYrL,KAAK,SAAUyK,GAC7D,IACE,GAAI6/F,EAAS7/F,GAAME,KACbq+mB,GACF9xnB,EAAOqG,OAAS6lM,EAChBrjM,EAAQ7I,IACH6I,GAAQopnB,IAAkBD,QAAYjpnB,QACxC,CACL,IAAInR,EAAQ2b,EAAK3b,MACjB,IACE,GAAIs6nB,EAAS,CACX,IAAI9snB,EAAS2B,EAAGnP,EAAOs0M,GAEnB/7I,EAAU,SAAUkikB,GACtB,GAAIN,EACFvmlB,SACK,GAAIwmlB,EACTK,EAAU7mlB,IAASqmlB,EAAoB19mB,EAAUtL,GAAS,EAAOwK,QAC5D,GAAIy+mB,EACT,IACE9xnB,EAAOksM,KAAammb,EACpB7mlB,GACF,CAAE,MAAO8mlB,GAAUH,EAA2BG,EAAS,MAEvDD,EAAUR,EAAoB19mB,EAAUtL,EAASopnB,GAAWr6nB,EAAOyb,GAAUm4B,GAEjF,EAEItpB,EAAS9c,GAASwD,EAAQC,QAAQzD,GAAQ0D,KAAKqnD,EAASgikB,GACvDhikB,EAAQ/qD,EACf,MACEpF,EAAOksM,KAAat0M,EACpB4zC,GAEJ,CAAE,MAAO+mlB,GAAUJ,EAA2BI,EAAS,CACzD,CACF,CAAE,MAAOplP,GAAU95X,EAAO85X,EAAS,CACrC,EAAG95X,EACL,CAAE,MAAO6I,GAAS7I,EAAO6I,EAAQ,CACnC,EAEAsvB,GACF,EACF,CACF,EAEAmoD,EAAOj9F,QAAU,CAEfq/N,QAAS2uK,EAAa,GAEtBzgY,QAASygY,EAAa,GAEtBj4X,MAAOi4X,EAAa,GAEpBngY,KAAMmgY,EAAa,GAEnB53X,KAAM43X,EAAa,G,kBC7FrB,IAAIl5W,EAAK,EAAQ,OACbgyM,EAAc,EAAQ,OACtBg1Z,EAAU,EAAQ,OAClBtwmB,EAAW,EAAQ,OA0BvByxE,EAAOj9F,QAdP,SAAwBkB,EAAO6Q,EAAO80C,GACpC,IAAKr7B,EAASq7B,GACZ,OAAO,EAET,IAAIt7B,SAAcxZ,EAClB,SAAY,UAARwZ,EACKu7M,EAAYjgL,IAAWi1kB,EAAQ/pnB,EAAO80C,EAAOl3C,QACrC,UAAR4b,GAAoBxZ,KAAS80C,IAE7B/xB,EAAG+xB,EAAO90C,GAAQ7Q,EAG7B,C,+BC1BA,IAAIqgQ,EAAa,EAAQ,OACrBw6X,EAAuB,EAAQ,OAC/BC,EAAc,EAAQ,OACtBC,EAAuB,EAAQ,OAEnCh/hB,EAAOj9F,QAAU,SAAUq2B,EAAGtwB,EAAK7E,EAAOiK,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIm8W,EAASn8W,EAAQ87B,WACjBn4B,OAAwBuD,IAAjBlH,EAAQ2D,KAAqB3D,EAAQ2D,KAAO/I,EAEvD,GADIw7P,EAAWrgQ,IAAQ86nB,EAAY96nB,EAAO4N,EAAM3D,GAC5CA,EAAQmxH,OACNgrP,EAAQjxV,EAAEtwB,GAAO7E,EAChB+6nB,EAAqBl2nB,EAAK7E,OAC1B,CACL,IACOiK,EAAQ60H,OACJ3pG,EAAEtwB,KAAMuhX,GAAS,UADEjxV,EAAEtwB,EAEhC,CAAE,MAAOyf,GAAqB,CAC1B8hW,EAAQjxV,EAAEtwB,GAAO7E,EAChB66nB,EAAqB9+mB,EAAEoZ,EAAGtwB,EAAK,CAClC7E,MAAOA,EACP+lC,YAAY,EACZuL,cAAernC,EAAQ+wnB,gBACvBl1lB,UAAW77B,EAAQgxnB,aAEvB,CAAE,OAAO9lmB,CACX,C,gICKA,QAPA,SAAgBn1B,GACd,OAAI,OAAQA,IACH,OAASA,EAAO,MAElB,OAASA,GAAS,CAACA,IAAS,QAAU,QAAa,OAASA,IACrE,C,+BC7BA,IAAI8hhB,EAAwB,EAAQ,OAChCzhR,EAAa,EAAQ,OACrBmoR,EAAa,EAAQ,OAGrB37Q,EAFkB,EAAQ,MAEVhxJ,CAAgB,eAChCoxJ,EAAU9oQ,OAGV+2nB,EAAwE,cAApD1yG,EAAW,WAAc,OAAOh6gB,SAAW,CAAhC,IAUnCutF,EAAOj9F,QAAUgjhB,EAAwB0G,EAAa,SAAU1sa,GAC9D,IAAI3mF,EAAGknE,EAAK7uF,EACZ,YAAc2D,IAAP2qG,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDzf,EAXD,SAAUyf,EAAIj3G,GACzB,IACE,OAAOi3G,EAAGj3G,EACZ,CAAE,MAAOyf,GAAqB,CAChC,CAOoB62mB,CAAOhmmB,EAAI83O,EAAQnxJ,GAAK+wJ,IAA8BxwK,EAEpE6+hB,EAAoB1yG,EAAWrzf,GAEF,YAA5B3nB,EAASg7gB,EAAWrzf,KAAoBkrO,EAAWlrO,EAAEm4E,QAAU,YAAc9/F,CACpF,C,yBCNA,IAOI4tnB,EAPAnmmB,EAAuB,iBAAZ4a,QAAuBA,QAAU,KAC5CwrlB,EAAepmmB,GAAwB,mBAAZA,EAAE9Z,MAC7B8Z,EAAE9Z,MACF,SAAsB/S,EAAQwoC,EAAUliC,GACxC,OAAOo3G,SAASrrG,UAAUU,MAAMT,KAAKtS,EAAQwoC,EAAUliC,EACzD,EAIA0snB,EADEnmmB,GAA0B,mBAAdA,EAAEgb,QACChb,EAAEgb,QACV9rC,OAAOo4F,sBACC,SAAwBn0F,GACvC,OAAOjE,OAAOu7C,oBAAoBt3C,GAC/BC,OAAOlE,OAAOo4F,sBAAsBn0F,GACzC,EAEiB,SAAwBA,GACvC,OAAOjE,OAAOu7C,oBAAoBt3C,EACpC,EAOF,IAAIkznB,EAAc9wmB,OAAOpqB,OAAS,SAAqBJ,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAASyd,IACPA,EAAagpD,KAAK/rD,KAAKL,KACzB,CACA0hF,EAAOj9F,QAAU2e,EACjBs+E,EAAOj9F,QAAQgmH,KAwYf,SAAcmqB,EAASrhI,GACrB,OAAO,IAAIoD,QAAQ,SAAUC,EAASwK,GACpC,SAAS8/mB,EAAcx4gB,GACrBksB,EAAQhwE,eAAerxD,EAAMsjC,GAC7Bz1B,EAAOsnG,EACT,CAEA,SAAS7xE,IAC+B,mBAA3B+9F,EAAQhwE,gBACjBgwE,EAAQhwE,eAAe,QAASs8jB,GAElCtqnB,EAAQ,GAAGkE,MAAMuF,KAAKlM,WACxB,CAEAgtnB,EAA+Bvsf,EAASrhI,EAAMsjC,EAAU,CAAE4zE,MAAM,IACnD,UAATl3G,GAMR,SAAuCqhI,EAAS12E,GACpB,mBAAf02E,EAAQjqB,IACjBw2gB,EAA+Bvsf,EAAS,QAAS12E,EAPO,CAAEusD,MAAM,GASpE,CATM22gB,CAA8Bxsf,EAASssf,EAE3C,EACF,EAxZA99mB,EAAaA,aAAeA,EAE5BA,EAAahD,UAAU2zH,aAAUj9H,EACjCsM,EAAahD,UAAUwmkB,aAAe,EACtCxjkB,EAAahD,UAAU4zH,mBAAgBl9H,EAIvC,IAAIo9H,EAAsB,GAE1B,SAASmtf,EAAcxtlB,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAIvzB,UAAU,0EAA4EuzB,EAEpG,CAoCA,SAASytlB,EAAiBhra,GACxB,YAA2Bx/M,IAAvBw/M,EAAKtiF,cACA5wH,EAAa8wH,oBACfoiF,EAAKtiF,aACd,CAkDA,SAASutf,EAAaxznB,EAAQiiB,EAAM6jB,EAAUwwO,GAC5C,IAAIlhR,EACAomC,EACAzzB,EA1HsBg6mB,EAgJ1B,GApBAuR,EAAcxtlB,QAGC/8B,KADfyyB,EAASx7B,EAAOgmI,UAEdxqG,EAASx7B,EAAOgmI,QAAUjqI,OAAO4W,OAAO,MACxC3S,EAAO64kB,aAAe,SAIK9vkB,IAAvByyB,EAAO8qG,cACTtmI,EAAO8c,KAAK,cAAemF,EACf6jB,EAASA,SAAWA,EAASA,SAAWA,GAIpDtK,EAASx7B,EAAOgmI,SAElBj+H,EAAWyzB,EAAOvZ,SAGHlZ,IAAbhB,EAEFA,EAAWyzB,EAAOvZ,GAAQ6jB,IACxB9lC,EAAO64kB,kBAeT,GAbwB,mBAAb9wkB,EAETA,EAAWyzB,EAAOvZ,GAChBq0P,EAAU,CAACxwO,EAAU/9B,GAAY,CAACA,EAAU+9B,GAErCwwO,EACTvuQ,EAASqhF,QAAQtjD,GAEjB/9B,EAAShC,KAAK+/B,IAIhB1wC,EAAIm+nB,EAAiBvznB,IACb,GAAK+H,EAAS1B,OAASjR,IAAM2S,EAASw+H,OAAQ,CACpDx+H,EAASw+H,QAAS,EAGlB,IAAI16G,EAAI,IAAIrS,MAAM,+CACEzR,EAAS1B,OAAS,IAAMmM,OAAOyP,GADjC,qEAIlB4J,EAAErmB,KAAO,8BACTqmB,EAAEg7G,QAAU7mI,EACZ6rB,EAAE5J,KAAOA,EACT4J,EAAEoe,MAAQliC,EAAS1B,OA7KG07mB,EA8KHl2lB,EA7KnBgZ,SAAWA,QAAQ/lB,MAAM+lB,QAAQ/lB,KAAKijmB,EA8KxC,CAGF,OAAO/hnB,CACT,CAaA,SAASyznB,IACP,IAAKxhnB,KAAKw0H,MAGR,OAFAx0H,KAAKjS,OAAO62D,eAAe5kD,KAAKgQ,KAAMhQ,KAAKyhnB,QAC3CzhnB,KAAKw0H,OAAQ,EACY,IAArBrgI,UAAUC,OACL4L,KAAK6zB,SAASxzB,KAAKL,KAAKjS,QAC1BiS,KAAK6zB,SAAS/yB,MAAMd,KAAKjS,OAAQoG,UAE5C,CAEA,SAASutnB,EAAU3znB,EAAQiiB,EAAM6jB,GAC/B,IAAIlkC,EAAQ,CAAE6kI,OAAO,EAAOitf,YAAQ3qnB,EAAW/I,OAAQA,EAAQiiB,KAAMA,EAAM6jB,SAAUA,GACjF8tlB,EAAUH,EAAY9lkB,KAAK/rD,GAG/B,OAFAgynB,EAAQ9tlB,SAAWA,EACnBlkC,EAAM8xnB,OAASE,EACRA,CACT,CAyHA,SAASvkjB,EAAWrvE,EAAQiiB,EAAM+9O,GAChC,IAAIxkO,EAASx7B,EAAOgmI,QAEpB,QAAej9H,IAAXyyB,EACF,MAAO,GAET,IAAIorG,EAAaprG,EAAOvZ,GACxB,YAAmBlZ,IAAf69H,EACK,GAEiB,mBAAfA,EACFo5H,EAAS,CAACp5H,EAAW9gG,UAAY8gG,GAAc,CAACA,GAElDo5H,EAsDT,SAAyBn3N,GAEvB,IADA,IAAI/Q,EAAM,IAAIvxB,MAAMsiC,EAAIxiC,QACf/O,EAAI,EAAGA,EAAIwgC,EAAIzxB,SAAU/O,EAChCwgC,EAAIxgC,GAAKuxC,EAAIvxC,GAAGwuC,UAAY+C,EAAIvxC,GAElC,OAAOwgC,CACT,CA3DI+7lB,CAAgBjtf,GAAcktf,EAAWltf,EAAYA,EAAWvgI,OACpE,CAmBA,SAASsgI,EAAc1kH,GACrB,IAAIuZ,EAASvpB,KAAK+zH,QAElB,QAAej9H,IAAXyyB,EAAsB,CACxB,IAAIorG,EAAaprG,EAAOvZ,GAExB,GAA0B,mBAAf2kH,EACT,OAAO,EACF,QAAmB79H,IAAf69H,EACT,OAAOA,EAAWvgI,MAEtB,CAEA,OAAO,CACT,CAMA,SAASytnB,EAAWjrlB,EAAK/1B,GAEvB,IADA,IAAIywF,EAAO,IAAIh9F,MAAMuM,GACZxb,EAAI,EAAGA,EAAIwb,IAAKxb,EACvBisG,EAAKjsG,GAAKuxC,EAAIvxC,GAChB,OAAOisG,CACT,CA2CA,SAAS6vhB,EAA+Bvsf,EAASrhI,EAAMsgC,EAAU+wF,GAC/D,GAA0B,mBAAfgQ,EAAQjqB,GACbia,EAAMna,KACRmqB,EAAQnqB,KAAKl3G,EAAMsgC,GAEnB+gG,EAAQjqB,GAAGp3G,EAAMsgC,OAEd,IAAwC,mBAA7B+gG,EAAQ18H,iBAYxB,MAAM,IAAIoI,UAAU,6EAA+Es0H,GATnGA,EAAQ18H,iBAAiB3E,EAAM,SAASuunB,EAAanqjB,GAG/CitD,EAAMna,MACRmqB,EAAQz8H,oBAAoB5E,EAAMuunB,GAEpCjulB,EAAS8jC,EACX,EAGF,CACF,CAraA7tE,OAAOwY,eAAec,EAAc,sBAAuB,CACzDsoB,YAAY,EACZ73B,IAAK,WACH,OAAOqgI,CACT,EACAngI,IAAK,SAAS4jE,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKspjB,EAAYtpjB,GACpD,MAAM,IAAI2vL,WAAW,kGAAoG3vL,EAAM,KAEjIu8D,EAAsBv8D,CACxB,IAGFv0D,EAAagpD,KAAO,gBAEGt1D,IAAjBkJ,KAAK+zH,SACL/zH,KAAK+zH,UAAYjqI,OAAO2rC,eAAez1B,MAAM+zH,UAC/C/zH,KAAK+zH,QAAUjqI,OAAO4W,OAAO,MAC7BV,KAAK4mkB,aAAe,GAGtB5mkB,KAAKg0H,cAAgBh0H,KAAKg0H,oBAAiBl9H,CAC7C,EAIAsM,EAAahD,UAAU+zH,gBAAkB,SAAyBtzH,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKognB,EAAYpgnB,GAChD,MAAM,IAAIymP,WAAW,gFAAkFzmP,EAAI,KAG7G,OADAb,KAAKg0H,cAAgBnzH,EACdb,IACT,EAQAoD,EAAahD,UAAU2hnB,gBAAkB,WACvC,OAAOT,EAAiBthnB,KAC1B,EAEAoD,EAAahD,UAAUyK,KAAO,SAAcmF,GAE1C,IADA,IAAI3b,EAAO,GACFhP,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAKgP,EAAKP,KAAKK,UAAU9O,IAC/D,IAAI28nB,EAAoB,UAAThymB,EAEXuZ,EAASvpB,KAAK+zH,QAClB,QAAej9H,IAAXyyB,EACFy4lB,EAAWA,QAA4BlrnB,IAAjByyB,EAAOtf,WAC1B,IAAK+3mB,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAI5tf,EAGJ,GAFI//H,EAAKD,OAAS,IAChBggI,EAAK//H,EAAK,IACR+/H,aAAc7sH,MAGhB,MAAM6sH,EAGR,IAAI1rB,EAAM,IAAInhG,MAAM,oBAAsB6sH,EAAK,KAAOA,EAAGhkC,QAAU,IAAM,KAEzE,MADAsY,EAAIv/E,QAAUirG,EACR1rB,CACR,CAEA,IAAIxqD,EAAU30B,EAAOvZ,GAErB,QAAgBlZ,IAAZonD,EACF,OAAO,EAET,GAAuB,mBAAZA,EACT8ikB,EAAa9ikB,EAASl+C,KAAM3L,OAE5B,KAAI5E,EAAMyuD,EAAQ9pD,OACd4/B,EAAY6tlB,EAAW3jkB,EAASzuD,GACpC,IAASpK,EAAI,EAAGA,EAAIoK,IAAOpK,EACzB27nB,EAAahtlB,EAAU3uC,GAAI2a,KAAM3L,EAHX,CAM1B,OAAO,CACT,EAgEA+O,EAAahD,UAAUmmD,YAAc,SAAqBv2C,EAAM6jB,GAC9D,OAAO0tlB,EAAavhnB,KAAMgQ,EAAM6jB,GAAU,EAC5C,EAEAzwB,EAAahD,UAAUuqG,GAAKvnG,EAAahD,UAAUmmD,YAEnDnjD,EAAahD,UAAU6hnB,gBACnB,SAAyBjymB,EAAM6jB,GAC7B,OAAO0tlB,EAAavhnB,KAAMgQ,EAAM6jB,GAAU,EAC5C,EAoBJzwB,EAAahD,UAAUqqG,KAAO,SAAcz6F,EAAM6jB,GAGhD,OAFAwtlB,EAAcxtlB,GACd7zB,KAAK2qG,GAAG36F,EAAM0xmB,EAAU1hnB,KAAMgQ,EAAM6jB,IAC7B7zB,IACT,EAEAoD,EAAahD,UAAU8hnB,oBACnB,SAA6BlymB,EAAM6jB,GAGjC,OAFAwtlB,EAAcxtlB,GACd7zB,KAAKiinB,gBAAgBjymB,EAAM0xmB,EAAU1hnB,KAAMgQ,EAAM6jB,IAC1C7zB,IACT,EAGJoD,EAAahD,UAAUwkD,eACnB,SAAwB50C,EAAM6jB,GAC5B,IAAIjmC,EAAM27B,EAAQzgC,EAAUzD,EAAG88nB,EAK/B,GAHAd,EAAcxtlB,QAGC/8B,KADfyyB,EAASvpB,KAAK+zH,SAEZ,OAAO/zH,KAGT,QAAalJ,KADblJ,EAAO27B,EAAOvZ,IAEZ,OAAOhQ,KAET,GAAIpS,IAASimC,GAAYjmC,EAAKimC,WAAaA,EACb,MAAtB7zB,KAAK4mkB,aACT5mkB,KAAK+zH,QAAUjqI,OAAO4W,OAAO,cAEtB6oB,EAAOvZ,GACVuZ,EAAOq7B,gBACT5kD,KAAK6K,KAAK,iBAAkBmF,EAAMpiB,EAAKimC,UAAYA,SAElD,GAAoB,mBAATjmC,EAAqB,CAGrC,IAFA9E,GAAY,EAEPzD,EAAIuI,EAAKwG,OAAS,EAAG/O,GAAK,EAAGA,IAChC,GAAIuI,EAAKvI,KAAOwuC,GAAYjmC,EAAKvI,GAAGwuC,WAAaA,EAAU,CACzDsulB,EAAmBv0nB,EAAKvI,GAAGwuC,SAC3B/qC,EAAWzD,EACX,KACF,CAGF,GAAIyD,EAAW,EACb,OAAOkX,KAEQ,IAAblX,EACF8E,EAAKs6C,QAiIf,SAAmBt6C,EAAM4I,GACvB,KAAOA,EAAQ,EAAI5I,EAAKwG,OAAQoC,IAC9B5I,EAAK4I,GAAS5I,EAAK4I,EAAQ,GAC7B5I,EAAKyU,KACP,CAnIUojX,CAAU73X,EAAM9E,GAGE,IAAhB8E,EAAKwG,SACPm1B,EAAOvZ,GAAQpiB,EAAK,SAEQkJ,IAA1ByyB,EAAOq7B,gBACT5kD,KAAK6K,KAAK,iBAAkBmF,EAAMmymB,GAAoBtulB,EAC1D,CAEA,OAAO7zB,IACT,EAEJoD,EAAahD,UAAU6sH,IAAM7pH,EAAahD,UAAUwkD,eAEpDxhD,EAAahD,UAAUq0H,mBACnB,SAA4BzkH,GAC1B,IAAIgkB,EAAWzK,EAAQlkC,EAGvB,QAAeyR,KADfyyB,EAASvpB,KAAK+zH,SAEZ,OAAO/zH,KAGT,QAA8BlJ,IAA1ByyB,EAAOq7B,eAUT,OATyB,IAArBzwD,UAAUC,QACZ4L,KAAK+zH,QAAUjqI,OAAO4W,OAAO,MAC7BV,KAAK4mkB,aAAe,QACM9vkB,IAAjByyB,EAAOvZ,KACY,MAAtBhQ,KAAK4mkB,aACT5mkB,KAAK+zH,QAAUjqI,OAAO4W,OAAO,aAEtB6oB,EAAOvZ,IAEXhQ,KAIT,GAAyB,IAArB7L,UAAUC,OAAc,CAC1B,IACI5J,EADAH,EAAOP,OAAOO,KAAKk/B,GAEvB,IAAKlkC,EAAI,EAAGA,EAAIgF,EAAK+J,SAAU/O,EAEjB,oBADZmF,EAAMH,EAAKhF,KAEX2a,KAAKy0H,mBAAmBjqI,GAK1B,OAHAwV,KAAKy0H,mBAAmB,kBACxBz0H,KAAK+zH,QAAUjqI,OAAO4W,OAAO,MAC7BV,KAAK4mkB,aAAe,EACb5mkB,IACT,CAIA,GAAyB,mBAFzBg0B,EAAYzK,EAAOvZ,IAGjBhQ,KAAK4kD,eAAe50C,EAAMgkB,QACrB,QAAkBl9B,IAAdk9B,EAET,IAAK3uC,EAAI2uC,EAAU5/B,OAAS,EAAG/O,GAAK,EAAGA,IACrC2a,KAAK4kD,eAAe50C,EAAMgkB,EAAU3uC,IAIxC,OAAO2a,IACT,EAmBJoD,EAAahD,UAAU4zB,UAAY,SAAmBhkB,GACpD,OAAOotD,EAAWp9D,KAAMgQ,GAAM,EAChC,EAEA5M,EAAahD,UAAUginB,aAAe,SAAsBpymB,GAC1D,OAAOotD,EAAWp9D,KAAMgQ,GAAM,EAChC,EAEA5M,EAAasxH,cAAgB,SAASE,EAAS5kH,GAC7C,MAAqC,mBAA1B4kH,EAAQF,cACVE,EAAQF,cAAc1kH,GAEtB0kH,EAAcr0H,KAAKu0H,EAAS5kH,EAEvC,EAEA5M,EAAahD,UAAUs0H,cAAgBA,EAiBvCtxH,EAAahD,UAAU0mkB,WAAa,WAClC,OAAO9mkB,KAAK4mkB,aAAe,EAAIm6C,EAAe/gnB,KAAK+zH,SAAW,EAChE,C,yBChaQ,SAAWlzI,GAAU,aAIzB,IAAIwhoB,EACI,6DAA6DnhoB,MAAM,KACvEohoB,EACI,kDAAkDphoB,MAAM,KAEvDL,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGC,MACrG,KAEJC,YAAa,SAAUgC,EAAGq7C,GACtB,OAAKr7C,EAEM,QAAQjB,KAAKs8C,GACb8jlB,EAAuBn/nB,EAAEo6F,SAEzB8kiB,EAAoBl/nB,EAAEo6F,SAJtB8kiB,CAMf,EACAnggB,kBAAkB,EAClB9gI,SAAU,wDAAwDF,MAC9D,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG,mBACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERM,uBAAwB,kBACxBC,QAAS,SAAU8+C,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/EyCC,CAAQ,EAAQ,O,aCwaL,IAAWsuD,GAtahE,WAGE,SAAS0vkB,EAASxsG,EAAQysG,GACxBr7nB,OAAO8iS,eAAe7pR,UAAU21gB,GAAUysG,EAAMr7nB,OAAO8iS,eAAe7pR,UAAU21gB,GAClF,CAEA,SAAS0sG,EAAaz3V,EAAK14P,EAAMx9B,GAC/B,IACEhL,OAAOwY,eAAe0oR,EAAK14P,EAAM,CAACz+B,IAAKiB,GACzC,CAAE,MAAO9P,GACT,CACF,CAMA,GAJKmC,OAAOu7nB,UACVv7nB,OAAOu7nB,QAAU,CAAC,IAGfv7nB,OAAO8iS,eACV,KAAM,wDAIR,GADAy4V,QAAQC,YAAcx7nB,OAAOy7nB,UAAYF,QAAQG,UAC7CH,QAAQC,WAAY,CACtB,IAAIG,EAA2B,SAAU93V,GACvC,IAAKA,EAAI+3V,YAAa,CACf/3V,EAAIO,SAAQP,EAAIO,OAAS,CAAC,GAC/BP,EAAI+3V,YAAc,GAClB,IAAIC,EAAuBh4V,EAAIO,OAAOrzR,iBACtC8yR,EAAIO,OAAOrzR,iBAAmB,SAAU0I,EAAG9L,GACzCk2R,EAAI+3V,YAAYninB,GAAK9L,EACjBkunB,GAAsBA,EAAqBlinB,MAAMd,KAAM7L,UAC7D,CACF,CACF,EAEAounB,EAAS,OAAQ,SAAU1vkB,GACzB,OAAO,SAAU1vD,EAAGsqG,EAAK5zF,GACvBipnB,EAAyB9inB,MACzBA,KAAKijnB,MAAQx1hB,EACb,IACE56C,EAAK/xC,MAAMd,KAAM,CAAC7c,EAAGsqG,EAAK5zF,GAC5B,CAAE,MAAO7U,GACHA,EAAEorG,QAAQ7nG,QAAQ,qBAAuB,IAC3CyX,KAAKkjnB,YAAcl+nB,EACnB6tD,EAAK/xC,MAAMd,KAAM,CAAC7c,EAAG,4BAA6B0W,IAEtD,CACF,CACF,GAEA0onB,EAAS,oBAAqB,SAAU1vkB,GACtC,OAAO,SAAUxvD,GACf,OAAO2c,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAaC,kBAAoBpjnB,KAAKmjnB,aAAaC,kBAAkB//nB,GAAc,MAARwvD,EAAe,KAAOA,EAAK/xC,MAAMd,KAAM,CAAC3c,GACtJ,CACF,GAEAk/nB,EAAS,wBAAyB,SAAU1vkB,GAC1C,OAAO,WACL,OAAO7yC,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAa/3V,sBAAwBprR,KAAKmjnB,aAAa/3V,wBAAmC,MAARv4O,EAAe,KAAOA,EAAK/xC,MAAMd,KACtJ,CACF,GAEAuinB,EAAS,QAAS,SAAU1vkB,GAC1B,OAAO,WACL,OAAO7yC,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAax8hB,MAAQ3mF,KAAKmjnB,aAAax8hB,QAAmB,MAAR9zC,EAAe,KAAOA,EAAK/xC,MAAMd,KACtH,CACF,GAEAuinB,EAAS,mBAAoB,SAAU1vkB,GACrC,OAAO,SAAUg5C,EAAQlmG,GACvB,GAAe,cAAXkmG,EAAwB,CAC1Bi3hB,EAAyB9inB,MACzB,IAAI2nB,EAAMhiC,EAAMqa,MAEZ2nB,aAAe8jF,UACjB9jF,EAAI3nB,KAER,MACEA,KAAKqjnB,iBAAmBrjnB,KAAKqjnB,kBAAoB,CAAC,EAClDrjnB,KAAKqjnB,iBAAiBx3hB,GAAUlmG,EAChCktD,EAAK/xC,MAAMd,KAAM7L,UAErB,CACF,GAEAounB,EAAS,OAAQ,SAAU1vkB,GACzB,OAAO,WACL,IAAIm4O,EAAMhrR,KACV,GAAI7L,UAAU,IAAMA,UAAU,GAAGmvnB,gBAAiB,CAmFhD,IAlFA,IAAIthR,EAAW7tW,UAAU,GACrB4K,EAAS,CACX0uF,IAAKu9L,EAAIi4V,MACTM,OAAO,EACPh3lB,OAAO,EACP8V,SAAU,SAAUqmE,EAAK86gB,GACnB96gB,GAAOwtB,QAAQ3yB,SAASmF,KAAkC,IAA1BA,EAAIngH,QAAQ,WAE9CmgH,EAAM,MAERsiL,EAAIy4V,aAAc,GACb/6gB,GAAOsiL,EAAI+3V,YAAY/5Z,MAC1BgiE,EAAI+3V,YAAY/5Z,KAAK,CACnBh5M,KAAM,OACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,KAEjBn7gB,GAAOsiL,EAAI+3V,YAAYe,SAC1B94V,EAAI+3V,YAAYe,QAAQ,CACtB9zmB,KAAM,UACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,IAEV,UAARn7gB,GAAmBsiL,EAAI+3V,YAAYp8hB,OACrCqkM,EAAI+3V,YAAYp8hB,MAAM,CACpB32E,KAAM,QACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,SAEI/snB,IAAtB0snB,EAAWr2f,QAAsBs1f,EAAaz3V,EAAK,SAAU,WAC/D,OAA8B,IAAtBw4V,EAAWr2f,QAAgBzkB,GAAe,UAARA,EAAmB,IAAM86gB,EAAWr2f,MAChF,QAC8Br2H,IAA1B0snB,EAAWz6V,YAA0B05V,EAAaz3V,EAAK,aAAc,WACvE,OAAOw4V,EAAWz6V,UACpB,GACA05V,EAAaz3V,EAAK,aAAc,WAC9B,OAAO,CACT,QAC4Bl0R,IAAxB0snB,EAAWn1hB,UAAwBo0hB,EAAaz3V,EAAK,WAAY,WACnE,OAAOw4V,EAAWn1hB,QACpB,GACA,IAAIu7L,EAAO45V,EAAWt4V,eAAiBxiL,GAA6B,IAAtB86gB,EAAWr2f,QAAwB,UAARzkB,EAAkBA,OAAM5xG,GACjG2rnB,EAAaz3V,EAAK,eAAgB,WAChC,OAAOpB,CACT,GACA64V,EAAaz3V,EAAK,WAAY,WAC5B,OAAOpB,CACT,GACIlhL,GAAK+5gB,EAAaz3V,EAAK,MAAO,WAChC,OAAOtiL,CACT,GACAsiL,EAAIm4V,aAAeK,EACfx4V,EAAI+5M,oBAAoB/5M,EAAI+5M,qBAC5B/5M,EAAIvyC,QAAQuyC,EAAIvyC,QACtB,EACAn2M,SAAU,SAAUt9C,GAKlB,GAJAA,EAAE+I,OAASi9R,EACPA,EAAI+3V,YAAYzglB,UAAU0oP,EAAI+3V,YAAYzglB,SAASt9C,GACvDgmS,EAAI44V,QAAU5+nB,EAAE2zD,MAChBqyO,EAAI24V,SAAW3+nB,EAAE0+nB,OACb1+nB,EAAE2zD,QAAU3zD,EAAE0+nB,OAAQ,CAExB,IAAIx/mB,EAAQlE,KACZyH,WAAW,WACJujR,EAAIy4V,cACPz4V,EAAII,sBAAwB,WAC5B,EACAlnR,EAAMm+B,SAAS,KAAM,CAAC8qF,OAAQ,IAAK47J,WAAY,eAEnD,EAAG25V,QAAQqB,kBAAoB,IACjC,CACF,EACA/8hB,QAASgkM,EAAIq4V,iBAEftknB,KAAc,CAAC,EACfA,MAAe,CAAC,GACP1Z,EAAI,EAAGA,EAAI28W,EAASjsW,KAAK3B,OAAQ/O,IAAK,CAC7C,IAAI2tB,EAAOgvV,EAASjsW,KAAK1Q,GACT,MAAZ2tB,EAAK2U,KAAgC,MAAjB3U,EAAK2U,IAAIp0B,MAAiC,MAAjByf,EAAK2U,IAAI5U,MAAiC,MAAjBC,EAAK2U,IAAI3X,KACjFjR,EAAOypI,MAAMx1H,EAAKxoB,KAAOwoB,EAAK2U,IAE9B5oB,EAAOhJ,KAAKid,EAAKxoB,KAAOwoB,EAAK2U,GAEjC,CAEAlgB,WAAW,WACT,IAAKi7mB,QAAQsB,SACX,KAAM,iFAERh5V,EAAIm4V,aAAeT,QAAQn3V,OAAOxsR,EACpC,EAAG,EACL,KAAO,CACL,GAAIiB,KAAKkjnB,YACP,MAAMljnB,KAAKkjnB,YAEbrwkB,EAAK/xC,MAAMkqR,EAAK72R,UAClB,CACF,CACF,GACAhN,OAAO8iS,eAAeq5V,iBAAkB,EACxCn8nB,OAAOy7nB,SAAWA,SAAW,WAC3B,MAAO,CACLryf,OAAQ,SAAU/lI,EAAKm9B,EAAKp0B,GACtBo0B,EAAIs8lB,sBACNt8lB,EAAMA,EAAI5xB,KAAK,IAEjBiK,KAAKjK,KAAKjC,KAAK,CACbtJ,IAAKA,EACLm9B,IAAKA,EACLp0B,KAAMA,GAEV,EACAwC,KAAM,GACNutnB,iBAAiB,EAErB,EAEAn8nB,OAAOiiG,KAAOA,KAAO,SAAUvvF,GAC7B,MAAO,CACL9D,KAAM8D,EACNoqnB,qBAAqB,EAEzB,CACF,CAED,CA7ND,GA+NA,WASE,SAASD,IACP,IAEE,GADS,IAAI/8gB,cAAc,iCACnB,OAAO,CACjB,CAAE,MAAOjiH,GACP,QAA6D8R,IAAzDxI,UAAU41nB,UAAU,iCAAgD,OAAO,CACjF,CACA,OAAO,CACT,CAEA,SAASC,EAAU7xmB,GACjB,IAAInoB,EAAO,EAAGH,EAAM,EAEpB,GAAI7C,OAAOwuQ,OACT,OAAOA,OAAOrjP,GAAK1tB,SAGrB,GAAI0tB,EAAIvpB,aACN,GACEoB,GAASmoB,EAAI9rB,WAAa8rB,EAAIvlB,WAC9B/C,GAAQsoB,EAAI7rB,UAAY6rB,EAAIrlB,UAC5BqlB,EAAMA,EAAIvpB,mBACHupB,GAEX,MAAO,CACLnoB,KAAMA,EACNH,IAAKA,EAET,CAEA,GAAI04nB,QAAQC,WAAY,CAQtB,GAPAD,QAAQsB,SAAWA,IAGftB,QAAQG,YACVH,QAAQ0B,OAAQ,IAGb1B,QAAQn3V,OAAQ,CACnB,IAAI84V,EAAOC,EAA2Gj/nB,EAAGmR,EAAO6wG,EAA3GsT,EAASlyH,SAASskB,cAAc,UAAWw3mB,EAAa97nB,SAAS+hM,qBAAqB,UAC3G,GAAIrjM,OAAOu7nB,QAAQ2B,MACjBA,EAAQl9nB,OAAOu7nB,QAAQ2B,WAClB,GAAIl9nB,OAAOu7nB,QAAQ8B,OACxBF,EAAWn9nB,OAAOu7nB,QAAQ8B,YAE1B,IAAKn/nB,EAAI,EAAGA,EAAIk/nB,EAAWnwnB,OAAQ/O,IAGjC,IADAmR,GADA6wG,EAAMk9gB,EAAWl/nB,GAAGgiH,KACRimG,OAAO,4CACN,EAAG,CACdg3a,EAAWj9gB,EAAIle,UAAU,EAAG3yF,EAAQ,GACpC,KACF,CAIsB,MAAtBksnB,QAAQ+B,aAAoB/B,QAAQ+B,WAAaH,GACrD3pgB,EAAO18G,aAAa,MAAOomnB,GAASC,EAAW,kBAC/C77nB,SAAS+hM,qBAAqB,QAAQ,GAAGr6F,YAAYwqB,EACvD,CAEA+ngB,QAAQgC,SAAW,SAAUhhX,EAAMihX,EAAU9tU,GAC3C,IAAKmtU,IACH,KAAM,iFA8BRtgX,EAAKhoN,KAAK,aA5BU,WAClB,IAAI75C,EAAQ8inB,EAASl9nB,SACjBi8Q,EAAKnM,KAAK,YACR11P,GAAOA,EAAM6nG,YAAY,uBAExBi7gB,EAASptX,KAAK,kBACjBotX,EAASz/W,OAAO,UAChBy/W,EAASz/W,OAAO,SAChBy/W,EAASjpkB,KAAK,SAAU,SAAU5f,GAChC8olB,EAAgB9jnB,MAAMd,KAAM,CAAC87B,IAC7B+6Q,EAAS/1S,MAAMd,KAAM,CAAC87B,GACxB,GACA6olB,EAASptX,KAAK,eAAgB,SAEhC11P,EAAMooG,SAAS,sBAlFvB,SAAyBy5J,GACvB,MAAyC,UAAlCA,EAAK,GAAG1yJ,QAAQ5oH,eAA6Bs7Q,EAAKnM,KAAK,SAA+C,SAApCmM,EAAKnM,KAAK,QAAQnvQ,aAC7F,CAiFay8nB,CAAgBnhX,KACnB7hQ,EAAM1Y,IAAI,WAAY,YACnBA,IAAI,MAAOg7nB,EAAUzgX,EAAK,IAAI15Q,IAAM,MAAMb,IAAI,OAAQg7nB,EAAUzgX,EAAK,IAAIv5Q,KAAO,MAChFhB,IAAI,QAASu6Q,EAAK,GAAG/8Q,YAAc,MAAMwC,IAAI,SAAUu6Q,EAAK,GAAG78Q,aAAe,MAC9EsC,IAAI,SAAU,oBAAoBA,IAAI,UAAWu6Q,EAAKv6Q,IAAI,YAC1DA,IAAI,WAAY,UAAUA,IAAI,UAAW,UACzCA,IAAI,aAAc,WACrBw7nB,EAASx7nB,IAAI,QAASu6Q,EAAK,GAAG/8Q,YAAc,MAAMwC,IAAI,SAAUu6Q,EAAK,GAAG78Q,aAAe,MACpFsC,IAAI,WAAY,YAAYA,IAAI,MAAO,OAAOA,IAAI,OAAQ,QAGnE,GAIA,IAAIy7nB,EAAkB,SAAU9olB,GAG9B,IAFA,IAAI0sG,EAAQk6e,QAAQoC,SAAShplB,GAEpBz2C,EAAI,EAAGA,EAAImjJ,EAAMp0I,OAAQ/O,SACVyR,IAAlB0xI,EAAMnjJ,GAAG0tB,OAAoBy1H,EAAMnjJ,GAAG0tB,KAAO,QAC3Bjc,IAAlB0xI,EAAMnjJ,GAAGkO,OAAoBi1I,EAAMnjJ,GAAGkO,KAAO,aAC3BuD,IAAlB0xI,EAAMnjJ,GAAG2qB,OAAoBw4H,EAAMnjJ,GAAG2qB,KAAO,aAE9C8rB,EAAI/tC,SACP+tC,EAAI/tC,OAAS,CAAC,GAEhB+tC,EAAI/tC,OAAOy6I,MAAQA,EAEf1sG,EAAI/tC,OAAOy6I,QAAUA,IACvB1sG,EAAIiplB,SAAWv8e,IAEhB1sG,EAAIiplB,UAAYjplB,EAAI/tC,OAAOy6I,OAAOx1H,KAAO,SAAU3tB,GAClD,OAAQy2C,EAAIiplB,UAAYjplB,EAAI/tC,OAAOy6I,OAAOnjJ,IAAM,IAClD,CACF,CACF,EAEAq9nB,QAAQsC,iBAAmB,SAAUthX,EAAM51J,GACrCA,EACF41J,EAAKh6J,YAAY,sBAEjBg6J,EAAKz5J,SAAS,qBAElB,CACF,CACD,CArID,GAuIK9iH,OAAOqnP,aACVrnP,OAAOqnP,WAAa,WAClB,IAAItqO,EAAQlE,KAAMilnB,GAAc,EAChCjlnB,KAAKg0B,UAAY,CAAC,EAClBh0B,KAAK9H,iBAAmB,SAAU8X,EAAMlb,GACtCoP,EAAM8vB,UAAUhkB,GAAQ9L,EAAM8vB,UAAUhkB,IAAS,GACjD9L,EAAM8vB,UAAUhkB,GAAMlc,KAAKgB,EAC7B,EACAkL,KAAK7H,oBAAsB,SAAU6X,EAAMlb,GACrCoP,EAAM8vB,UAAUhkB,IAAO9L,EAAM8vB,UAAUhkB,GAAM+c,OAAO7oB,EAAM8vB,UAAUhkB,GAAMznB,QAAQuM,GAAK,EAC7F,EACAkL,KAAK8sP,cAAgB,SAAUhxN,GAC7B,IAAIluC,EAAOsW,EAAM8vB,UAAU8H,EAAI9rB,MAC/B,GAAIpiB,EACF,IAAK,IAAIvI,EAAI,EAAGA,EAAIuI,EAAKwG,OAAQ/O,IAC/BuI,EAAKvI,GAAGgb,KAAK6D,EAAO43B,EAG1B,EACA97B,KAAKqrR,QAAUrrR,KAAK04O,QAAU14O,KAAKy4O,OAASz4O,KAAKklnB,YAAcllnB,KAAKi/jB,UAAYj/jB,KAAKgle,WAAa,KAElG,IAAImgJ,EAAiB,SAAUn1mB,EAAM8rB,GACnC,IAAI92C,EAAI,CAACgrB,KAAMA,EAAMjiB,OAAQmW,EAAOw/mB,OAAQ5nlB,EAAI4nlB,OAAQ/qkB,MAAO7c,EAAI6c,MAAO1uC,MAAO6xB,EAAI7xB,OAErF,OADkB,MAAd6xB,EAAI3oC,SAAgBnO,EAAE+I,OAAOoF,OAAS2oC,EAAI3oC,QACvCnO,CACT,EACI6uC,EAAW,SAAUiI,GAKvB,IAAI92C,EAJCigoB,IACHA,GAAc,EACV/gnB,EAAMghnB,aAAahhnB,EAAMghnB,YAAYC,EAAe,YAAarplB,KAGtD,SAAbA,EAAI9rB,MACF9L,EAAM+6jB,WAAW/6jB,EAAM+6jB,UAAUkmD,EAAe,UAAWrplB,IAC/D92C,EAAImgoB,EAAe,OAAQrplB,GACvB53B,EAAMu0O,QAAQv0O,EAAMu0O,OAAOzzP,GAC/Bkf,EAAM4oP,cAAc9nQ,IACE,aAAb82C,EAAI9rB,MACbhrB,EAAImgoB,EAAe,WAAYrplB,GAC3B53B,EAAM8ge,YAAY9ge,EAAM8ge,WAAWhgf,GACvCkf,EAAM4oP,cAAc9nQ,KAEpBA,EAAImgoB,EAAe,QAASrplB,GACxB53B,EAAMw0O,SAASx0O,EAAMw0O,QAAQ1zP,GACjCkf,EAAM4oP,cAAc9nQ,GAExB,EACAgb,KAAK24O,cAAgB,SAAU5yG,GAC7B28e,QAAQ/pY,cAAc5yG,EAAMlyG,EAC9B,EACA7zB,KAAKolnB,WAAa,SAAUr/e,GAC1B28e,QAAQ0C,WAAWr/e,EAAMlyG,EAC3B,CACF,IAUE1sC,OAAO8iS,gBAAoB9iS,OAAOu7nB,SAAWA,QAAQC,aACvDx7nB,OAAO8iS,eAAe7pR,UAAU6qR,kBAA8Bp4O,EAY3D1rD,OAAO8iS,eAAe7pR,UAAU6qR,iBAX1B,SAAUp/L,EAAQlmG,GACvB,GAAe,cAAXkmG,EAAwB,CAC1B,IAAIlkE,EAAMhiC,EAAMqa,MAEZ2nB,aAAe8jF,UACjB9jF,EAAI3nB,KAER,MACE6yC,EAAK/xC,MAAMd,KAAM7L,UAErB,IAIJ,IAAIkxnB,EAAenvf,QAAQx0C,OAAO,eAAgB,IAElD2jiB,EAAaxgjB,QAAU,UAEvBwgjB,EAAa/4f,QAAQ,aAAc,CAAC,QAAS,KAAM,WAAY,SAAUgB,EAAOnL,EAAIsL,GAClF,IAAI89J,EAASvrR,KACburR,EAAO+5V,cAAgB,EAEvBtlnB,KAAKulnB,kBAAoB,WACvB,OAAOp+nB,OAAOiiG,MAAQjiG,OAAOiiG,KAAKhpF,UAAUtF,KAC9C,EAEA,IAAI0qnB,EAAkBxlnB,KAAKulnB,oBAE3B,SAASE,EAAS1mnB,GAChBA,EAAOwlC,OAASxlC,EAAOwlC,QAAU,OACjCxlC,EAAOioF,QAAUjoF,EAAOioF,SAAW,CAAC,EAEpC,IAAIsjB,EAAWvrG,EAAO2mnB,UAAY3mnB,EAAO2mnB,WAAavjgB,EAAGjZ,QACrDmZ,EAAU/X,EAAS+X,QAEvB,SAASsjgB,EAAe3goB,GAClBslH,EAASlyC,QACXkyC,EAASlyC,OAAOpzE,GAEdq9H,EAAQujgB,cACVn4f,EAAS,WACPpL,EAAQujgB,aAAa5goB,EACvB,EAEJ,CAEA,SAAS6goB,EAAehlnB,GACtB,OAAqB,MAAjB9B,EAAOykC,QAAkBgilB,EACpB,CACL9B,OAAQ7inB,EAAE6inB,OAAS3knB,EAAOykC,OAC1BmV,MAAQ55C,EAAOmrI,OAASnrI,EAAOmrI,MAAMn3H,MAASlS,EAAE83C,MAChD3oC,KAAMnP,EAAEmP,KAAMjR,OAAQA,EACtB8knB,kBAAkB,EAAM91nB,OAAQ8S,EAAE9S,QAG7B8S,CAEX,CAuBA,SAASilnB,IACPx4f,EAAMvuH,GAAQlI,KAAK,SAAUkjB,GACzB,GAAIyrmB,GAAmBzmnB,EAAOgnnB,aAAehnnB,EAAOinnB,WAAajnnB,EAAOmrI,MAAO,CAC7E,IAAI+7e,EAAWlnnB,EAAOmrI,OAASnrI,EAAOmrI,MAAMn3H,MAAQ,EACpD4ymB,EAAe,CACXjC,OAAQl+nB,KAAKkE,IAAIqV,EAAOivN,KAAMi4Z,GAC9BttkB,MAAOstkB,EACPlnnB,OAAQA,EACRiR,KAAM,aAGVu7Q,EAAOA,OAAOxsR,GAAQ,EACxB,MACMA,EAAOinnB,kBAAkBjnnB,EAAOinnB,UACpC17gB,EAAS1zG,QAAQmjB,EAErB,EAAG,SAAU/0B,GACXslH,EAASlpG,OAAOpc,EAClB,EAAG,SAAU6b,GACXypG,EAASlyC,OAAOv3D,EAClB,EAEJ,CAsFA,OAjIK9B,EAAOmnnB,kBACVnnnB,EAAOioF,QAAQm/hB,UAAY,WACzB,OAAO,SAAUn7V,GACVA,GAAQA,EAAIO,QAAWP,EAAIO,OAAOrzR,mBACvC6G,EAAOqnnB,MAAQp7V,EACXjsR,EAAOsnnB,OAAOtnnB,EAAOsnnB,MAAMr7V,GAC/BA,EAAIO,OAAOrzR,iBAAiB,WAAY,SAAUlT,GAChDA,EAAE+Z,OAASA,EACX4mnB,EAAeE,EAAe7goB,GAChC,GAAG,GAEHgmS,EAAIO,OAAOrzR,iBAAiB,OAAQ,SAAUlT,GACxCA,EAAE6+nB,mBACJ7+nB,EAAE+Z,OAASA,EACX4mnB,EAAeE,EAAe7goB,IAElC,GAAG,GACL,CACF,GA2BGwgoB,EAEMzmnB,EAAOgnnB,YAAchnnB,EAAOivN,OAASjvN,EAAOinnB,WACrDjnnB,EAAOykC,OAASzkC,EAAOivN,KACvBjvN,EAAOivN,MAAQjvN,EAAOgnnB,WACtBD,KACS/mnB,EAAOunnB,cAChBh5f,EAAMz5H,IAAIkL,EAAOunnB,eAAezvnB,KAAK,SAAU+yR,GACzC7qR,EAAOwnnB,yBACTxnnB,EAAOykC,OAASzkC,EAAOwnnB,yBAAyB38V,EAAK7zR,MAErDgJ,EAAOykC,OAASrd,UAA4B,MAAlByjQ,EAAK7zR,KAAKgd,KAAe62Q,EAAK7zR,KAAO6zR,EAAK7zR,KAAKgd,MAAM/rB,YAE7E+X,EAAOgnnB,aACThnnB,EAAOivN,KAAOjvN,EAAOykC,OAASzkC,EAAOgnnB,YAEvCD,GACF,EAAG,SAAU9goB,GACX,MAAMA,CACR,GACS+Z,EAAOynnB,WAChBznnB,EAAOynnB,aAAa3vnB,KAAK,SAAUkc,GACjChU,EAAOykC,OAASzwB,EACZhU,EAAOgnnB,aACThnnB,EAAOivN,KAAOjvN,EAAOykC,OAASzkC,EAAOgnnB,YAEvCD,GACF,EAAG,SAAU9goB,GACX,MAAMA,CACR,IAEI+Z,EAAOgnnB,aACThnnB,EAAOykC,OAAS,EAChBzkC,EAAOivN,KAAOjvN,EAAOykC,OAASzkC,EAAOgnnB,YAEvCD,KAlCAA,IAsCFzjgB,EAAQkub,QAAU,SAAUz7iB,GAI1B,OAHAutH,EAAQxrH,KAAK,SAAUw3F,GACrBv5F,EAAGu5F,EAASt4F,KAAMs4F,EAAS8+B,OAAQ9+B,EAASrH,QAASjoF,EACvD,GACOsjH,CACT,EAEAA,EAAQp4G,MAAQ,SAAUnV,GAIxB,OAHAutH,EAAQxrH,KAAK,KAAM,SAAUw3F,GAC3Bv5F,EAAGu5F,EAASt4F,KAAMs4F,EAAS8+B,OAAQ9+B,EAASrH,QAASjoF,EACvD,GACOsjH,CACT,EAEAA,EAAQ//E,SAAW,SAAUxtC,GAK3B,OAJAutH,EAAQujgB,aAAe9wnB,EACvButH,EAAQxrH,KAAK,KAAM,KAAM,SAAUgK,GACjC/L,EAAG+L,EACL,GACOwhH,CACT,EACAA,EAAQ17B,MAAQ07B,EAAQ2Q,MAAQ,WAM9B,OALIj0H,EAAOqnnB,OACT34f,EAAS,WACP1uH,EAAOqnnB,MAAMz/hB,OACf,GAEK07B,CACT,EACAA,EAAQ2oK,IAAM,SAAUl2R,GACP,IAAW2xnB,EAM1B,OANA1nnB,EAAOsnnB,OAAmBI,EAKvB1nnB,EAAOsnnB,MAJD,WACDI,GAAWA,EAAU3lnB,MAAMuhH,EAASluH,WACxCW,EAAGgM,MAAMuhH,EAASluH,UACpB,GAEKkuH,CACT,EAEAkpK,EAAO+5V,gBACHjjgB,EAAiB,SAAKA,EAAiB,mBAAa5W,UACtD4W,EAAiB,QAAE,WACjBkpK,EAAO+5V,eACT,GAEKjjgB,CACT,CAwBA,SAAS/wB,EAAKh/E,GACZ,IAAI2S,EAAQ,CAAC,EACb,IAAK,IAAIz6B,KAAO8nB,EACVA,EAAI1mB,eAAepB,KACrBy6B,EAAMz6B,GAAO8nB,EAAI9nB,IAGrB,OAAOy6B,CACT,CA9BAjlB,KAAK0mnB,mBAAqB,WACxB,OAAOn7V,EAAO+5V,cAAgB,CAChC,EAEAtlnB,KAAK2mnB,OAAS,SAAU5gf,EAAMxyI,GAE5B,OADAwyI,EAAK6gf,QAAUrznB,EACRwyI,CACT,EAEA/lI,KAAK6mnB,SAAW,SAAUl/lB,GACb,MAAPA,GAAgBuuG,QAAQ3yB,SAAS57E,KACnCA,EAAMhe,KAAKC,UAAU+d,IAEvB,IAAI2iG,EAAO,IAAInjI,OAAOiiG,KAAK,CAACzhE,GAAM,CAAC3X,KAAM,qBAEzC,OADAs6G,EAAKw8f,UAAW,EACTx8f,CACT,EAEAtqH,KAAK+lF,KAAO,SAAUp+D,GACpB,OAAOuuG,QAAQgjI,OAAOvxO,EACxB,EAYA3nB,KAAK+mnB,OAAS,SAAUhhf,GACtB,OAAe,MAARA,IAAiBA,aAAgB5+I,OAAOiiG,MAAS28C,EAAKihf,SAAWjhf,EAAKxyI,MAAQwyI,EAAKhzH,KAC5F,EAEA/S,KAAKurR,OAAS,SAAUxsR,EAAQkonB,GAuB9B,SAASC,EAAmBllR,EAAUr6U,EAAKn9B,GACzC,QAAYsM,IAAR6wB,EAIF,GAHIuuG,QAAQ2zF,OAAOliM,KACjBA,EAAMA,EAAIi5E,eAERs1B,QAAQ3yB,SAAS57E,GACnBq6U,EAASzxO,OAAO/lI,EAAKm9B,QAChB,GAAI4jQ,EAAOw7V,OAAOp/lB,GAAM,CAC7B,IAAIo+G,EA9BV,SAAsBA,EAAMi8N,GAC1B,GAAIj8N,EAAK+gf,SAAU,OAAO/gf,EAE1B,GADAhnI,EAAOmrI,MAAQnrI,EAAOmrI,OAASnE,EACV,MAAjBhnI,EAAOykC,QAAkBgilB,EAAiB,CACxCzmnB,EAAOivN,MAAQjvN,EAAOivN,MAAQjoF,EAAKhzH,OACrChU,EAAOinnB,WAAY,EACnBjnnB,EAAOivN,KAAOjoF,EAAKhzH,MAErB,IAAIjY,EAAQirI,EAAKjrI,MAAMiE,EAAOykC,OAAQzkC,EAAOivN,MAAQjoF,EAAKhzH,MAS1D,OARAjY,EAAMvH,KAAOwyI,EAAKxyI,KAClBuH,EAAM8rnB,QAAU7gf,EAAK6gf,QACjB7nnB,EAAOgnnB,aACT/jR,EAASzxO,OAAO,aAAcxxH,EAAOgnnB,YACrC/jR,EAASzxO,OAAO,oBAAqBxxH,EAAOivN,KAAOjvN,EAAOykC,QAC1Dw+T,EAASzxO,OAAO,eAAgB/qI,KAAKQ,MAAM+Y,EAAOykC,OAASzkC,EAAOgnnB,aAClE/jR,EAASzxO,OAAO,aAAcxxH,EAAOmrI,MAAMn3H,OAEtCjY,CACT,CACA,OAAOirI,CACT,CAUiBohf,CAAax/lB,EAAKq6U,GACzB9gX,EAAQsJ,EAAItJ,MAAM,KAClBA,EAAM,KACR6kJ,EAAK6gf,QAAU1loB,EAAM,GAAG6C,QAAQ,aAAc,IAC9CyG,EAAMtJ,EAAM,IAEd6d,EAAOqonB,SAAWronB,EAAOqonB,UAAY58nB,EACrCw3W,EAASzxO,OAAO/lI,EAAKu7I,EAAMA,EAAK6gf,SAAW7gf,EAAKxyI,KAClD,MACE,GAAI2iI,QAAQjmH,SAAS0X,GAAM,CACzB,GAAIA,EAAI0/lB,uBAAwB,KAAM,4HAA8H78nB,EAEpKm9B,EAAI0/lB,wBAAyB,EAC7B,IACE,IAAK,IAAI51mB,KAAKkW,EACZ,GAAIA,EAAI/7B,eAAe6lB,IAAY,2BAANA,EAAgC,CAC3D,IAAI61mB,EAAgC,MAApBvonB,EAAOuonB,UAAoB,MAAQvonB,EAAOuonB,UACtD3/lB,EAAIvzB,QAAU+xB,SAAS1U,IAAM,IAC/B61mB,EAA+B,MAAnBvonB,EAAOwonB,SAAmBD,EAAYvonB,EAAOwonB,UAE3DL,EAAmBllR,EAAUr6U,EAAIlW,GAAIjnB,EAAM88nB,EAAUvjoB,QAAQ,QAAS0tB,GACxE,CAEJ,CAAE,eACOkW,EAAI0/lB,sBACb,CACF,MACErlR,EAASzxO,OAAO/lI,EAAKm9B,EAI7B,CAsCA,OANKs/lB,IAAUlonB,EAASuyF,EAAKvyF,IACxBA,EAAOyonB,cACVzonB,EAAOyonB,aAAc,EA/BrBzonB,EAAOgnnB,WAAax6V,EAAOk8V,iBAAiB1onB,EAAO2onB,iBACnD3onB,EAAOgnnB,WAAahnnB,EAAOgnnB,WAAa5/lB,SAASpnB,EAAOgnnB,WAAW/+nB,YAAc,KAEjF+X,EAAOioF,QAAUjoF,EAAOioF,SAAW,CAAC,EACpCjoF,EAAOioF,QAAQ,qBAAkBlwF,EACjCiI,EAAO+mR,iBAAmB/mR,EAAO+mR,iBAC9B5vJ,QAAQnmH,QAAQhR,EAAO+mR,kBACtB/mR,EAAO+mR,iBAAmB,CAAC/mR,EAAO+mR,kBAAqB,GAC3D/mR,EAAO+mR,iBAAiBhyR,KAAK,SAAUiC,GACrC,IAAsCvL,EAAlCw3W,EAAW,IAAI76W,OAAOy7nB,SAK1B,IAAKp4nB,KAJLuL,EAAOA,GAAQgJ,EAAO+xF,QAAU,CAAC,EAC7B/xF,EAAOgnI,OACThwI,EAAKgwI,KAAOhnI,EAAOgnI,MAEThwI,EACV,GAAIA,EAAKnK,eAAepB,GAAM,CAC5B,IAAIm9B,EAAM5xB,EAAKvL,GACXuU,EAAO4onB,iBACT5onB,EAAO4onB,iBAAiB3lR,EAAUx3W,EAAKm9B,GAEvCu/lB,EAAmBllR,EAAUr6U,EAAKn9B,EAEtC,CAGF,OAAOw3W,CACT,IASKyjR,EAAS1mnB,EAClB,EAEAiB,KAAK4nnB,KAAO,SAAU7onB,GAWpB,OAVAA,EAASuyF,EAAKvyF,IACP+mR,iBAAmB/mR,EAAO+mR,kBAAoB,SAAU/vR,GAC3D,OAAK5O,OAAOm0I,aAAevlI,aAAgB5O,OAAOm0I,aAAgBvlI,aAAgB5O,OAAOiiG,KAChFrzF,EAEFu3H,EAAMzkG,SAASi9P,iBAAiB,GAAGhlR,MAAMd,KAAM7L,UACxD,EACF4K,EAAOgnnB,WAAax6V,EAAOk8V,iBAAiB1onB,EAAO2onB,iBACnD3onB,EAAOgnnB,WAAahnnB,EAAOgnnB,WAAa5/lB,SAASpnB,EAAOgnnB,WAAW/+nB,YAAc,KAE1Ey+nB,EAAS1mnB,EAClB,EAEAiB,KAAKynnB,iBAAmB,SAAUh1mB,GAChC,GAAIyjH,QAAQ3yB,SAAS9wF,GAAM,CACzB,GAAIA,EAAI66L,OAAO,SAAW76L,EAAIre,OAAS,EACrC,OAAOuc,WAA8C,KAAnC8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,SAAW76L,EAAIre,OAAS,EAC5C,OAAOuc,WAA8C,QAAnC8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,SAAW76L,EAAIre,OAAS,EAC5C,OAAOuc,WAA8C,WAAnC8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,QAAU76L,EAAIre,OAAS,EAC3C,OAAOuc,WAAW8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,QAAU76L,EAAIre,OAAS,EAC3C,OAAOuc,WAAW8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,QAAU76L,EAAIre,OAAS,EAC3C,OAAOuc,WAA8C,GAAnC8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,IAC3C,GAAIqe,EAAI66L,OAAO,QAAU76L,EAAIre,OAAS,EAC3C,OAAOuc,WAA8C,KAAnC8B,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,GAEpD,CACA,OAAOqe,CACT,EAEAzS,KAAK6nnB,UAAY,SAASp6hB,GACxB,IAAIyb,EAAQiZ,EAAGjZ,QAaf,OAZAokB,EAAM,CAAC7/B,IAAKA,EAAKlpD,OAAQ,MAAO4kP,aAAc,gBAAgBtyR,KAAK,SAAU+yR,GAC3E,IAAIk+V,EAAkB,IAAIziiB,WAAWukM,EAAK7zR,MACtCia,EAAO45Q,EAAK5iM,QAAQ,iBAAmB,aACvCsjC,EAAO,IAAInjI,OAAOiiG,KAAK,CAAC0+hB,GAAkB,CAAC93mB,KAAMA,IACjDiiB,EAAUw7D,EAAIzpG,MAAM,qBACpBiuC,EAAQ79B,OAAS,IACnBk2H,EAAK/2H,KAAO0+B,EAAQ,IAEtBi3E,EAAMtyG,QAAQ0zH,EAChB,EAAG,SAAUtlI,GACXkkH,EAAM9nG,OAAOpc,EACf,GACOkkH,EAAMmZ,OACf,EAEAriH,KAAK+nnB,YAAc,SAAUl/lB,GAC3B7oB,KAAK6oB,SAAWA,GAAY,CAAC,CAC/B,EAEA7oB,KAAK6oB,SAAW,CAAC,EACjB7oB,KAAK6kE,QAAUwgjB,EAAaxgjB,OAC9B,IAIAwgjB,EAAa/4f,QAAQ,SAAU,CAAC,SAAU,WAAY,WAAY,KAAM,aAAc,SAAU2mJ,EAAQxlJ,EAAUF,EAAUpL,EAAI6lgB,GAC9H,IAAIz8V,EAASy8V,EAmGb,SAASC,EAAiB9nkB,EAAQqoF,EAAO+uH,EAAM5uO,EAAOknR,GACpD,IAAI1rQ,EAAW,CAAConP,EAAO28V,gBAEvB,SAASC,EAAWzmnB,EAAGrc,GACrB,GAAgC,IAA5Bqc,EAAEsO,KAAKznB,QAAQ,SAAgB,CACjC,GAAI43D,EAAOqxC,UAAY+5L,EAAO68V,gBAAgB1mnB,EAAGy+C,EAAOqxC,SAAU,OAClErxC,EAAOkokB,SAAW,SAAU3hoB,EAAOE,GACjC,OAAO2kS,EAAO+8V,WAAW,cAAe/wX,EAAM5uO,EAC5C,CAAC4/lB,OAAQ7hoB,EAAO8hoB,QAAS5hoB,EAAQ6hoB,MAAO/mnB,GAC5C,EACA,IAAI2gH,EAAUkpK,EAAOtzR,OAAOyJ,EAAGy+C,GAC/Bhc,EAASrwC,KAAKuuH,GACdA,EAAQxrH,KAAK,SAAU6xnB,GACrBlgf,EAAMz7G,OAAO1nC,EAAG,EAAGqjoB,EACrB,EAAG,SAAU1joB,GACX0c,EAAEqvS,OAAS,UACVrvS,EAAEinnB,eAAkBjnnB,EAAEinnB,gBAAkB,CAAC,GAAI1wnB,QAAS,EACvDyJ,EAAEknnB,aAAe5joB,GAAKA,EAAEorG,QAAUprG,EAAEorG,QAAUprG,GAAK,KAAO,KAAO0c,GAAKA,EAAEnO,MACxEs8S,EAAQg5U,gBAAgB/0nB,KAAK,CAACP,KAAM,SAAUkzB,OAAO,IACrD8kQ,EAAOu9V,qBAAqBj5U,EAASrnK,EACvC,EACF,CACF,CAEA,IAAK,IAAInjJ,EAAI,EAAGA,EAAImjJ,EAAMp0I,OAAQ/O,IAChC8ioB,EAAW3/e,EAAMnjJ,GAAIA,GAEvB,OAAO88H,EAAGr8E,IAAI3B,EAChB,CAmKA,OAjSAonP,EAAOw9V,oBAAsB,SAAUxxX,EAAMhkQ,GAC3C,GAAkB,MAAdgkQ,EAAKhkQ,GAAe,OAAOgkQ,EAAKhkQ,GACpC,IAAIwxH,EAAMwmK,EAAO1iQ,SAASt1B,GAC1B,OAAe,MAAPwxH,GAAqBmR,QAAQ3yB,SAASwhB,GAAxBA,EAAqCp7G,KAAKC,UAAUm7G,EAC5E,EAEAwmK,EAAO+8V,WAAa,SAAU/0nB,EAAMgkQ,EAAM5uO,EAAOw3B,GAC/C,IAAI6okB,EAAUhpnB,KAAK+onB,oBAAoBxxX,EAAMhkQ,GAC7C,IAAIo1B,EAgBF,OAAOqgmB,EAfP,IACE,OAAI7okB,EACK8yN,EAAO+1W,EAAP/1W,CAAgBtqP,EAAOw3B,GAEvB8yN,EAAO+1W,EAAP/1W,CAAgBtqP,EAE3B,CAAE,MAAO3jC,GAEP,GAAIuO,EAAK+5M,OAAO,oBACd,OAAO07a,EAEP,MAAMhkoB,CAEV,CAIJ,EAEAumS,EAAO09V,eAAiB,SAAUj5mB,EAAMunP,EAAM5uO,GAC5C,IAAIugmB,EAAe39V,EAAO+8V,WAAW,kBAAmB/wX,EAAM5uO,GAC9D,OAAIugmB,IAAgBA,EAAajnU,UACxBinU,EAAajnU,SAAS/gU,MAAM,KAAKqH,QAAQynB,IAAS,CAG7D,EAEAu7Q,EAAO28V,aAAe,WACpB,IAAI3koB,EAAI4+H,EAAGjZ,QACP70G,EAAOF,UAIX,OAHAs5H,EAAS,WACPlqI,EAAEqT,QAAQkK,MAAMvd,EAAG8Q,EACrB,GACO9Q,EAAE8+H,OACX,EAEAkpK,EAAOmQ,cAAgB,WACrB,IAAIn4S,EAAI4+H,EAAGjZ,QACP70G,EAAOF,UAIX,OAHAs5H,EAAS,WACPlqI,EAAE6d,OAAON,MAAMvd,EAAG8Q,EACpB,GACO9Q,EAAE8+H,OACX,EAEAkpK,EAAO49V,aAAe,SAAU9mgB,EAAStsH,GACvC,IAAIxS,EAAI4+H,EAAGjZ,QASX,OARAmZ,EAAQxrH,KAAK,SAAU1D,GACrB5P,EAAEqT,QAAQzD,EACZ,EAAG,SAAU8W,GACXwjH,EAAS,WACP,MAAMxjH,CACR,GACA1mB,EAAEqT,QAAQb,EACZ,GACOxS,EAAE8+H,OACX,EA+DAkpK,EAAO69V,YAAc,SAAUv5U,EAASt4C,EAAM5uO,EAAO0gmB,EAAY7gf,EAAO1sG,EAAKwtlB,GAC3E,SAASlznB,EAAOoyI,EAAO+gf,EAAcC,EAAUC,EAAUC,GACvDnyX,EAAKoyX,oBAAsBnhf,EAC3B+uH,EAAKqyX,sBAAwBL,EAC7B,IAAIxjf,EAAOyC,GAASA,EAAMp0I,OAASo0I,EAAM,GAAK,KAC1Cqhf,EAAcN,GAAgBA,EAAan1nB,OAASm1nB,EAAa,GAAK,KAEtE15U,IACFtkB,EAAOu9V,qBAAqBj5U,EAASrnK,GACrCqnK,EAAQoG,cAAcyzU,EAAgB3jf,EAAOyC,IAG3C6gf,GACFp2W,EAAOo2W,EAAPp2W,CAAmBtqP,EAAO,CACxBmhmB,OAAQthf,EACRigf,MAAO1if,EACPgkf,UAAWP,EACXQ,gBAAiBP,EACjBQ,cAAeV,EACfW,aAAcL,EACdnsV,OAAQ5hQ,IAIZ,IAAIqulB,EAAe5+V,EAAO+8V,WAAW,kBAAmB/wX,GACpD4yX,GACF18f,EAAS,WACPwlJ,EAAOk3W,GAAcpgoB,OAAO4+B,EAAO+gmB,EAAgBG,EAAcN,EACnE,GAEF97f,EAAS,WAET,EACF,CAEA,IAAI28f,EAA4BC,EAAgBC,EAqC/BnonB,EArCAsnnB,EAAW,GAC1Bc,EAAW,GAAIC,EAAS,GAwC1B,SAASC,IACP,SAASrB,IACP37f,EAAS,WACPr3H,EAAOygO,EAAOwzZ,EAAer8nB,OAAOw8nB,GAAUA,EAC5C3zZ,EAAOyzZ,EAAiBt8nB,OAAOu8nB,GAAYA,EAC3C/hf,EAAOihf,EAAUC,EACrB,EAAG95nB,GAAWA,EAAQguE,SAAWhuE,EAAQguE,SAASta,QAAU1zD,EAAQguE,SAAW,EACjF,CAEA,IAAI8sjB,EAAgBC,EAAsBP,EAAcI,GAtI5D,SAAoBhif,EAAO+uH,EAAM5uO,EAAOknR,GACtC,IAAI+6U,EAAYr/V,EAAO+8V,WAAW,YAAa/wX,EAAM5uO,GACrD,IAAKiimB,IAAcr/V,EAAOs/V,sBAAwBrif,EAAMp0I,OAAQ,OAAOm3R,EAAO28V,eAC9E,GAAI0C,aAAqBn/gB,SAAU,CACjC,IAAIvC,EAAQiZ,EAAGjZ,QACf,OAAO0hhB,EAAUpif,GAAO3xI,KAAK,SAAUsJ,GACrC8nnB,EAAiB9nnB,EAAGqoI,EAAO+uH,EAAM5uO,EAAOknR,GAASh5S,KAAK,SAAUkjB,GAC9DmvF,EAAMtyG,QAAQmjB,EAChB,EAAG,SAAU/0B,GACXkkH,EAAM9nG,OAAOpc,EACf,EACF,EAAG,SAAUA,GACXkkH,EAAM9nG,OAAOpc,EACf,EACF,CACE,OAAOijoB,EAAiB2C,EAAWpif,EAAO+uH,EAAM5uO,EAAOknR,EAE3D,EAsHIi7U,CAAWJ,EAAenzX,EAAM5uO,EAAOknR,GAASh5S,KAAK,WAC/C8znB,EACFp/V,EAAO5lE,SAASyka,EAAavzZ,EAAOwzZ,EAAej2nB,OAAS,EAAGy7S,EAASt4C,EAAM5uO,GAC3E9xB,KAAK,SAAUk0nB,GACdP,EAASO,EAAiBC,YAC1BT,EAAWQ,EAAiBE,cAC5B7B,GACF,GAEFA,GAEJ,EAAG,WACD,IAAK,IAAI/joB,EAAI,EAAGA,EAAIqloB,EAAct2nB,OAAQ/O,IAAK,CAC7C,IAAIqc,EAAIgpnB,EAAcrloB,GACtB,GAAiB,WAAbqc,EAAEqvS,OAAqB,CACzB,IAAIv6S,EAAQg0nB,EAAOjioB,QAAQmZ,GACvBlL,GAAS,IACXg0nB,EAAOz9lB,OAAOv2B,EAAO,GACrB+znB,EAASz2nB,KAAK4N,IAEhB0nnB,GACF,CACF,CACF,EACF,CAEAiB,EAAiB9yX,EAAKoyX,qBAAuB,GAC7CW,EAAmB/yX,EAAKqyX,uBAAyB,GAC7C/5U,GAAWA,EAAQmH,cA1CN70S,EA2CU0tS,EAAQmH,YAAjCqzU,EA1COn0f,QAAQnmH,QAAQ5N,GAAKA,EAAI,CAACA,IA6CnC,IAAI00N,EAAO00D,EAAO+8V,WAAW,UAAW/wX,EAAM5uO,GAC9CyhmB,GAAe5hf,GAAS,IAAI1tI,MAAM,GACrB,aAAT+7N,IAA6E,IAAtD00D,EAAO+8V,WAAW,kBAAmB/wX,EAAM5uO,IAlFtE,WACE,SAASo/L,EAAOwsH,EAAIE,GAClB,OAAOF,EAAGhhV,OAASkhV,EAAGlhV,OAASghV,EAAG22S,cAAgB32S,EAAGxhU,SAAW0hU,EAAGy2S,cAAgBz2S,EAAG1hU,OACpFwhU,EAAGvkU,OAASykU,EAAGzkU,IACnB,CAEA,SAASm7mB,EAAczpnB,GACrB,IAAIskB,EACJ,IAAKA,EAAI,EAAGA,EAAIqkmB,EAAej2nB,OAAQ4xB,IACrC,GAAI+hM,EAAOrmN,EAAG2onB,EAAerkmB,IAC3B,OAAO,EAGX,IAAKA,EAAI,EAAGA,EAAIskmB,EAAiBl2nB,OAAQ4xB,IACvC,GAAI+hM,EAAOrmN,EAAG4onB,EAAiBtkmB,IAC7B,OAAO,EAGX,OAAO,CACT,CAEA,GAAIwiH,EAAO,CACT4hf,EAAc,GACdX,EAAW,GACX,IAAK,IAAIpkoB,EAAI,EAAGA,EAAImjJ,EAAMp0I,OAAQ/O,IAC5B8loB,EAAc3if,EAAMnjJ,IACtBokoB,EAAS31nB,KAAK00I,EAAMnjJ,IAEpB+koB,EAAYt2nB,KAAK00I,EAAMnjJ,GAG7B,CACF,CAmDE+loB,GAGF,IAAI1B,GAAiB7yZ,IAAS00D,EAAO+8V,WAAW,cAAe/wX,EAAM5uO,KAAW4iQ,EAAO+8V,WAAW,WAAY/wX,GAE9G,IAAI1gC,GAASuzZ,EAAYh2nB,OAAzB,CAEAm3R,EAAO+8V,WAAW,uBAAwB/wX,EAAM5uO,EAAO,CACrDmhmB,OAAQthf,EACRigf,MAAOjgf,GAASA,EAAMp0I,OAASo0I,EAAM,GAAK,KAC1Cuhf,UAAWK,EACXJ,gBAAiBP,EACjB/rV,OAAQ5hQ,IAGV,IAAI6ulB,EAAsBp/V,EAAO+8V,WAAW,yBAA0B/wX,EAAM5uO,GAExE/4B,EAAU27R,EAAO+8V,WAAW,kBAAmB/wX,EAAM5uO,GACzD4iQ,EAAO5lE,SAASyka,EAAavzZ,EAAOwzZ,EAAej2nB,OAAS,EAAGy7S,EAASt4C,EAAM5uO,GAC3E9xB,KAAK,SAAUk0nB,GACZzB,EACFlznB,EAAOg0nB,EAAa,GAAI5hf,EAAOihf,EAAUC,IAEnC95nB,GAAYA,EAAQ0wT,cAAkBqqU,EAI1CH,EAASJ,GAHTI,EAASO,EAAiBM,WAC1Bd,EAAWQ,EAAiBxB,cAI1Bh+V,EAAO+8V,WAAW,oBAAqB/wX,EAAM5uO,IAAU4iQ,EAAO+/V,kBAnNxE,SAA4B9if,EAAO+uH,EAAM5uO,GACvC,IAAIwb,EAAW,CAAConP,EAAO28V,gBAQvB,OAPAhyf,QAAQlkI,QAAQw2I,EAAO,SAAU9mI,EAAGrc,GACG,IAAjCqc,EAAEsO,KAAKznB,QAAQ,eAAuBgjS,EAAO+8V,WAAW,oBAAqB/wX,EAAM5uO,EAAO,CAAC8/lB,MAAO/mnB,KACpGyiC,EAASrwC,KAAKy3R,EAAO49V,aAAa59V,EAAOggW,kBAAkB7pnB,GAAIA,GAAG7K,KAAK,SAAU20nB,GAC/Ehjf,EAAMz7G,OAAO1nC,EAAG,EAAGmmoB,EACrB,GAEJ,GACOrpgB,EAAGr8E,IAAI3B,EAChB,CA0MQsnlB,CAAmBjB,EAAQjzX,EAAM5uO,GAAO9xB,KAAK,WAC3C4znB,GACF,GAEAA,IAGN,EAhCuC,CAiCzC,EAEOl/V,CACT,IAEA85V,EAAaz+f,UAAU,YAAa,CAAC,SAAU,WAAY,WAAY,SAAU,SAAUqsJ,EAAQxlJ,EAAUF,EAAUm+f,GACrH,IAAIC,EAAiB,GAqPrB,MAAO,CACL72f,SAAU,MACVrtB,QAAS,WACT2hB,KAAM,SAAUzgG,EAAO+6O,EAAMnM,EAAMs4C,IA1OrC,SAAwBlnR,EAAO+6O,EAAMnM,EAAMs4C,EAAS58B,EAAQxlJ,EAAUF,EAAUg+J,GAS9E,IAAI+8V,EAAa,SAAU/0nB,EAAMo1B,GAC/B,OAAO4iQ,EAAO+8V,WAAW/0nB,EAAMgkQ,EAAM5uO,EACvC,EAEA,SAASk8lB,IACP,MAAyC,UAAlCnhX,EAAK,GAAG1yJ,QAAQ5oH,eAA6BmvQ,EAAKvnP,MAAoC,SAA5BunP,EAAKvnP,KAAK5nB,aAC7E,CAEA,SAASwjoB,IACP,OAAOtD,EAAW,cAAgBA,EAAW,YAC/C,CAEA,SAASzxU,EAAS/6Q,GAChB,GAAIyvP,EAAO09V,eAAe,SAAU1xX,EAAM5uO,GAAQ,CAChD,IAAIkjmB,EAAW/vlB,EAAIiplB,UAAajplB,EAAI/tC,QAAU+tC,EAAI/tC,OAAOy6I,MAAQA,EAAQ,GAEzE,IAAKqjf,EAAU,OACf,IAAK,IAAIxmoB,EAAI,EAAGA,EAAIwmoB,EAASz3nB,OAAQ/O,IACnCmjJ,EAAM10I,KAAK+3nB,EAASxmoB,IAEtBkmS,EAAO69V,YAAYv5U,EAASt4C,EAAM5uO,EAAOijmB,IACvCpjf,EAAMp0I,OAASo0I,EAAQ,KAAM1sG,EACjC,CACF,CAEAyvP,EAAOugW,6BAA6Bj8U,EAASt4C,EAAM5uO,GAEnD,IAAIojmB,EAAY,GACZzD,EAAW,gBACbyD,EAAUj4nB,KAAK60B,EAAMw6M,OAAOmlZ,EAAW,eAAgB,WACrD3D,EAASptX,KAAK,WAAY+wX,EAAW,cAAe3/lB,GACtD,IAEE2/lB,EAAW,eACbyD,EAAUj4nB,KAAK60B,EAAMw6M,OAAOmlZ,EAAW,cAAe,WACpD3D,EAASptX,KAAK,UAAW+wX,EAAW,aAAc3/lB,GACpD,IAEE2/lB,EAAW,cACbyD,EAAUj4nB,KAAK60B,EAAMw6M,OAAOmlZ,EAAW,aAAc,WACnD3D,EAASptX,KAAK,SAAU+wX,EAAW,YAAa3/lB,GAClD,IAEFojmB,EAAUj4nB,KAAKyjQ,EAAK/oI,SAAS,SAAU,WACrCm2f,EAASptX,KAAK,SAAU+wX,EAAW,UACrC,IAyEA,IAAI0D,EAAqB,EACrBC,EAAqB,EA0BrBtH,EAAWjhX,EAEf,SAASwoX,EAAWpwlB,GACdyvP,EAAO09V,eAAe,QAAS1xX,EAAM5uO,IAAUg8lB,EAASh9lB,QAC1Dg9lB,EAASh9lB,IAAI,MACb4jQ,EAAO69V,YAAYv5U,EAASt4C,EAAM5uO,EAAOijmB,IAAkB,KAAM9vlB,GAAK,GAE1E,CAEK+olB,MACHF,EAzFF,WACE,GAAIE,IACF,OAAOnhX,EAGT,IAAIihX,EAAWzuf,QAAQ5vI,QAAQ,uBAE3Bub,EAAQq0H,QAAQ5vI,QAAQ,yBAU5B,OATAub,EAAM1Y,IAAI,aAAc,UAAUA,IAAI,WAAY,YAAYA,IAAI,WAAY,UAC3EA,IAAI,QAAS,OAAOA,IAAI,SAAU,OAAOA,IAAI,SAAU,QACvDA,IAAI,SAAU,OAAOA,IAAI,UAAW,OAAOouQ,KAAK,WAAY,MA9BjE,SAA6BotX,EAAU9inB,GACrC,SAASsqnB,EAASxkmB,GAChBg9lB,EAASptX,KAAK,KAAM,OAAS5vO,GAC7B9lB,EAAM01P,KAAK,KAAM,aAAe5vO,EAClC,CAEA,IAAK,IAAItiC,EAAI,EAAGA,EAAIq+Q,EAAK,GAAGzuQ,WAAWb,OAAQ/O,IAAK,CAClD,IAAIyvR,EAAYpR,EAAK,GAAGzuQ,WAAW5P,GACZ,SAAnByvR,EAAUvhR,MAAsC,UAAnBuhR,EAAUvhR,MAAuC,UAAnBuhR,EAAUvhR,OAChD,OAAnBuhR,EAAUvhR,MACZ44nB,EAASr3W,EAAUnvR,OACnBomoB,EAAUj4nB,KAAKyjQ,EAAK/oI,SAAS,KAAM29f,KAEnCxH,EAASptX,KAAKud,EAAUvhR,KAAQuhR,EAAUnvR,OAA6B,aAAnBmvR,EAAUvhR,MAC3C,aAAnBuhR,EAAUvhR,KAAyCuhR,EAAUnvR,MAA3BmvR,EAAUvhR,MAGlD,CACF,CAaE64nB,CAAoBzH,EAAU9inB,GAE9B8pnB,EAAe73nB,KAAK,CAACypC,GAAImmO,EAAM7wJ,IAAKhxG,IAEpCpZ,SAASiF,KAAKyiG,YAAYtuF,EAAM0uH,OAAOo0f,GAAU,IAE1CA,CACT,CAuEa0H,IAEb1H,EAASjpkB,KAAK,SAAUm7P,GAEnBguU,IAGHnhX,EAAKhoN,KAAK,QAASwwkB,GAFnBxoX,EAAKhoN,KAAK,4BA1EZ,SAAsB5f,GACpB,GAAI4nO,EAAKnM,KAAK,YAAa,OAAO,EAClC,IAAI+wX,EAAW,oBAAqB3/lB,GAApC,CAEA,IAAI5O,EA+BN,SAAqB+hB,GACnB,IAAIM,EAAUN,EAAIktZ,gBAAmBltZ,EAAIggf,eAAiBhgf,EAAIggf,cAAc9yF,eAC5E,GAAI5sZ,EAAS,CACX,GAAiB,eAAbN,EAAI9rB,KAGN,OAFAi8mB,EAAqB7vlB,EAAQ,GAAGK,QAChCuvlB,EAAqB5vlB,EAAQ,GAAGM,SACzB,EAGP,GAAiB,aAAbZ,EAAI9rB,KAAqB,CAC3B,IAAIs8mB,EAAWlwlB,EAAQ,GAAGK,QACtB8vlB,EAAWnwlB,EAAQ,GAAGM,QAC1B,GAAKl3C,KAAKM,IAAIwmoB,EAAWL,GAAsB,IAC5CzmoB,KAAKM,IAAIymoB,EAAWP,GAAsB,GAG3C,OAFAlwlB,EAAIwnO,kBACJxnO,EAAI6wF,kBACG,CAEX,CACA,OAAO,CAEX,CACF,CArDU6/f,CAAY1wlB,GAEpB,GAAS,MAAL/hB,EAAW,OAAOA,EAEtBmymB,EAAWpwlB,GAGX,IACO+olB,KAAsBp8nB,SAASiF,KAAKlG,SAASm9nB,EAAS,MACzDgH,EAAe73nB,KAAK,CAACypC,GAAImmO,EAAM7wJ,IAAK8xgB,EAASl9nB,WAC7CgB,SAASiF,KAAKyiG,YAAYw0hB,EAASl9nB,SAAS,IAC5Ck9nB,EAASjpkB,KAAK,SAAUm7P,GAE5B,CAAE,MAAO7xT,GACT,CAUA,OAvIJ,SAAiC2iY,GAE/B,IAAIxkY,EAAIwkY,EAAG3jY,MAAM,6BACjB,GAAIb,GAAKA,EAAEiR,OAAS,EAAG,CACrB,IAAI+N,EAAIupnB,EAAO7imB,SAAS4jmB,wBAA0B,EAClD,OAAOtmmB,SAAShjC,EAAE,IAAM,GAAMgjC,SAAShjC,EAAE,MAAQgf,GAAKgkB,SAAShjC,EAAE,IAAMgf,CACzE,CAGA,OAAiC,IAA1BwlX,EAAGp/X,QAAQ,WAAoB,sBAAsBrG,KAAKylY,EACnE,CAqHQ+kQ,CAAwBp+nB,UAAUC,WACpCkZ,WAAW,WACTk9mB,EAAS,GAAGv0f,OACd,EAAG,GAEHu0f,EAAS,GAAGv0f,SAGP,CA1B2C,CA2BpD,IAwEiD,IAA7C9hI,UAAUq+nB,WAAWpkoB,QAAQ,YAC/Bo8nB,EAASjpkB,KAAK,QAvBhB,SAASkxkB,EAAsB9wlB,GAC7B,GAAI6olB,IAAaA,EAASptX,KAAK,mBAAoB,CACjD,IAAKotX,EAAS,GAAG38nB,WAEf,YADA28nB,EAAW,MAGb7olB,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJqhX,EAASz/W,OAAO,SAChB,IAAIjgP,EAAQ0/lB,EAAS1/lB,QAOrB,OANA0/lB,EAAS1gX,YAAYh/O,IACrB0/lB,EAAW1/lB,GACFsyO,KAAK,kBAAmB,QACjCotX,EAASjpkB,KAAK,SAAUm7P,GACxB8tU,EAASjpkB,KAAK,QAASkxkB,GACvBjI,EAAS,GAAGv0f,SACL,CACT,CACEu0f,EAAStiX,WAAW,kBAExB,GAMIwtC,GAASA,EAAQ2H,YAAY1jT,KAAK,SAAU6zB,GAM9C,OALW,MAAPA,GAA8B,IAAfA,EAAIvzB,QACjBuwnB,EAASh9lB,OACXg9lB,EAASh9lB,IAAI,MAGVA,CACT,GAEAgB,EAAM69F,IAAI,WAAY,WACfq+f,KAAmBF,EAASl9nB,SAASm7C,SAC1CszF,QAAQlkI,QAAQ+5nB,EAAW,SAAU3/V,GACnCA,GACF,EACF,GAEA3+J,EAAS,WACP,IAAK,IAAIpoI,EAAI,EAAGA,EAAIsmoB,EAAev3nB,OAAQ/O,IAAK,CAC9C,IAAIsc,EAAIgqnB,EAAetmoB,GAClBoD,SAASiF,KAAKlG,SAASma,EAAE47B,GAAG,MAC/BoulB,EAAe5+lB,OAAO1nC,EAAG,GACzBsc,EAAEkxG,IAAIjwE,SAEV,CACF,GAEIz7C,OAAOu7nB,SAAWv7nB,OAAOu7nB,QAAQgC,UACnCv9nB,OAAOu7nB,QAAQgC,SAAShhX,EAAMihX,EAAU9tU,EAE5C,CAMIg2U,CAAelkmB,EAAO+6O,EAAMnM,EAAMs4C,EAAS58B,EAAQxlJ,EAAUF,EAAUm+f,EACzE,EAEJ,IAEA,WAmHE,SAASoB,EAAkBpB,EAAQj+f,EAAU9kG,EAAO+6O,EAAMnM,EAAMqZ,EAAem8W,EAAcC,GAC3F,SAASC,EAAiBlnf,GACxB,IAAImnf,EAAoBxB,EAAOpD,WAAW,iBAAkB/wX,EAAM5uO,GAClE+imB,EAAOyB,QAAQpnf,EAAMmnf,GAA4B,QAAE,WACjDz/f,EAAS,WACP,IAAIpmB,GAAO6lhB,EAAoBnnf,EAAKqnf,YAAcrnf,EAAKsnf,cAAgBtnf,EAAKqnf,YACxEJ,EACFtpX,EAAKv6Q,IAAI,mBAAoB,SAAYk+G,GAAO,IAAM,MAEtDq8J,EAAKnM,KAAK,MAAOlwJ,GAEfA,EACFq8J,EAAKh6J,YAAY,WAEjBg6J,EAAKz5J,SAAS,UAElB,EACF,EACF,CAEAwjB,EAAS,WACP,IAAI2+J,EAAUzjQ,EAAMw6M,OAAOo0B,EAAKqZ,GAAgB,SAAU7qI,GACxD,IA7BcxoG,EA6BVxqB,EAAOg6mB,EACX,GAAsB,iBAAlBn8W,IACG79P,IACHA,EAAO,CACLrsB,MAAOg9Q,EAAK,GAAGxhB,cAAgBwhB,EAAK,GAAGx3Q,YACvCtF,OAAQ88Q,EAAK,GAAGvhB,eAAiBuhB,EAAK,GAAGz3Q,eAG1B,IAAf8mB,EAAKrsB,OAAeS,OAAOkB,kBAAkB,CAC/C,IAAIqhC,EAAQrhC,iBAAiBq7Q,EAAK,IAC9Bh6O,EAAMhjC,OAASgjC,EAAMhjC,MAAM6B,QAAQ,OAAS,GAAKmhC,EAAM9iC,QAAU8iC,EAAM9iC,OAAO2B,QAAQ,OAAS,IACjGwqB,EAAO,CACLrsB,MAAOy/B,SAASuD,EAAMhjC,MAAMoU,MAAM,GAAI,IACtClU,OAAQu/B,SAASuD,EAAM9iC,OAAOkU,MAAM,GAAI,KAG9C,CAGF,GAAIo7H,QAAQ3yB,SAASwiC,GAEnB,OADA29H,EAAKh6J,YAAY,WACbsjhB,EACKtpX,EAAKv6Q,IAAI,mBAAoB,QAAW48I,EAAO,MAE/C29H,EAAKnM,KAAK,MAAOxxH,IAGxBA,IAAQA,EAAK/1H,MAAkD,IAA1C+1H,EAAK/1H,KAAKs9L,OAvDN,SADf/vK,EAwDuCmmO,EAAK,IAvDvD1yJ,QAAQ5oH,cAAgC,QACd,UAA7Bm1C,EAAGyzE,QAAQ5oH,cAAkC,QAChB,UAA7Bm1C,EAAGyzE,QAAQ5oH,cAAkC,QAC1C,MAqDC4koB,GAA+C,IAA/Bjnf,EAAK/1H,KAAKznB,QAAQ,SAiBpCm7Q,EAAKz5J,SAAS,WAhBVl3F,GAAQ24mB,EAAOb,qBACjB93mB,EAAKs1mB,SAAW,SAAU3hoB,EAAOE,GAC/B,OAAO8koB,EAAOpD,WAAW,cAAe/wX,EAAM5uO,EAC5C,CAAC4/lB,OAAQ7hoB,EAAO8hoB,QAAS5hoB,EAAQ6hoB,MAAO1if,GAC5C,EACA2lf,EAAOzznB,OAAO8tI,EAAMhzH,GAAMlc,KACxB,SAAU6K,GACRurnB,EAAiBvrnB,EACnB,EAAG,SAAU1c,GACX,MAAMA,CACR,IAGFiooB,EAAiBlnf,EAKvB,GAEAp9G,EAAM69F,IAAI,WAAY,WACpB4lK,GACF,EACF,EACF,CA5LAi5V,EAAa/4f,QAAQ,gBAAiB,CAAC,aAAc,WAAY,KAAM,SAAUghgB,EAAY7/f,EAAUtL,GACrG,IAAIopK,EAAS+hW,EAsGb,OArGA/hW,EAAOgiW,cAAgB,SAAUxnf,GAC/B,GAAI7P,QAAQnmH,QAAQg2H,GAAO,CACzB,IAAIxiJ,EAAI4+H,EAAGjZ,QAASlxE,EAAQ,EAa5B,OAZAk+F,QAAQlkI,QAAQ+zI,EAAM,SAAUrkI,GAC9B6pR,EAAO4hW,QAAQzrnB,GAAG,GAAe,QAAE,WAEjC,KADAs2B,IACc+tG,EAAK3xI,OAAQ,CACzB,IAAI8vH,EAAO,GACXgS,QAAQlkI,QAAQ+zI,EAAM,SAAU7F,GAC9Bhc,EAAKpwH,KAAKosI,EAAGktf,YACf,GACA7poB,EAAEqT,QAAQstH,EAAM6hB,EAClB,CACF,EACF,GACOxiJ,EAAE8+H,OACX,CACE,OAAOkpK,EAAO4hW,QAAQpnf,GAAM,EAEhC,EACAwlJ,EAAO4hW,QAAU,SAAUpnf,EAAMmnf,GAC/B,IAAKnnf,EAAM,OAAOwlJ,EAAO28V,aAAanif,EAAMA,GAC5C,GAAKmnf,GAAyC,MAApBnnf,EAAKqnf,cAA0BF,GAAyC,MAApBnnf,EAAKsnf,YACjF,OAAO9hW,EAAO28V,aAAagF,EAAoBnnf,EAAKqnf,YAAcrnf,EAAKsnf,YAAatnf,GAEtF,IAAI5lI,EAAI+snB,EAAoBnnf,EAAKynf,oBAAsBznf,EAAK0nf,oBAC5D,GAAIttnB,EAAG,OAAOA,EAEd,IAAImqG,EAAW6X,EAAGjZ,QAuElB,OAtEAukB,EAAS,WACP,GAAItmI,OAAOqnP,YAAczoG,KACrB5+I,OAAOu7nB,UAAsD,IAA3Cp0nB,UAAUC,UAAUhG,QAAQ,WAAoBw9I,EAAKhzH,KAAO,QAC9E5rB,OAAOu7nB,UAAsD,IAA3Cp0nB,UAAUC,UAAUhG,QAAQ,WAAoBw9I,EAAKhzH,KAAO,KAAU,CAG1F,IAAIs2E,EAAMliG,OAAOkiG,KAAOliG,OAAOg7kB,UAC/B,GAAI94e,GAAOA,EAAIC,kBAAoB4jiB,EAAmB,CACpD,IAAIz/hB,EACJ,IACEA,EAAMpE,EAAIC,gBAAgBy8C,EAC5B,CAAE,MAAO/gJ,GAKP,YAJAyoI,EAAS,WACPsY,EAAKsnf,YAAc,GACnB/ihB,EAASlpG,QACX,EAEF,CACAqsH,EAAS,WAEP,GADAsY,EAAKsnf,YAAc5/hB,EACfA,EAAK,CACP6c,EAAS1zG,QAAQ62F,EAAKs4C,GACtBwlJ,EAAOmiW,SAAWniW,EAAOmiW,UAAY,GACrCniW,EAAOoiW,kBAAoBpiW,EAAOoiW,mBAAqB,EACvDpiW,EAAOmiW,SAAS55nB,KAAK,CAAC25F,IAAKA,EAAK16E,KAAMgzH,EAAKhzH,OAC3Cw4Q,EAAOoiW,mBAAqB5nf,EAAKhzH,MAAQ,EAGzC,IAFA,IAAI66mB,EAAYriW,EAAO1iQ,SAASglmB,mBAAqB,UACjD5vZ,EAAYstD,EAAO1iQ,SAASilmB,sBAAwB,KAChDviW,EAAOoiW,kBAAoBC,GAAariW,EAAOmiW,SAASt5nB,OAAS6pO,IAAcstD,EAAOmiW,SAASt5nB,OAAS,GAAG,CACjH,IAAIke,EAAMi5Q,EAAOmiW,SAAS3gmB,OAAO,EAAG,GAAG,GACvCs8D,EAAI8/B,gBAAgB72G,EAAIm7E,KACxB89L,EAAOoiW,mBAAqBr7mB,EAAIS,IAClC,CACF,CACF,EACF,KAAO,CACL,IAAIg7mB,EAAa,IAAIv/Y,WACrBu/Y,EAAWt1Y,OAAS,SAAUzzP,GAC5ByoI,EAAS,WACPsY,EAAKqnf,YAAcpooB,EAAE+I,OAAOoF,OAC5Bm3G,EAAS1zG,QAAQ5R,EAAE+I,OAAOoF,OAAQ4yI,GAClCtY,EAAS,kBACAsY,EAAKqnf,WACd,EAAG,IACL,EACF,EACAW,EAAWr1Y,QAAU,WACnBjrH,EAAS,WACPsY,EAAKqnf,YAAc,GACnB9ihB,EAASlpG,QACX,EACF,EACA2snB,EAAWp1Y,cAAc5yG,EAC3B,CACF,MACEtY,EAAS,WACPsY,EAAKmnf,EAAoB,cAAgB,eAAiB,GAC1D5ihB,EAASlpG,QACX,EAEJ,IAGEjB,EADE+snB,EACEnnf,EAAKynf,oBAAsBljhB,EAAS+X,QAEpC0jB,EAAK0nf,oBAAsBnjhB,EAAS+X,SAE/B,QAAE,kBACJ0jB,EAAKmnf,EAAoB,sBAAwB,sBAC1D,GACO/snB,CACT,EACOorR,CACT,IAyFA85V,EAAaz+f,UAAU,SAAU,CAAC,SAAU,WAAY,SAAU8kgB,EAAQj+f,GACxE,MAAO,CACLqH,SAAU,KACV1L,KAAM,SAAUzgG,EAAO+6O,EAAMnM,GAC3Bu1X,EAAkBpB,EAAQj+f,EAAU9kG,EAAO+6O,EAAMnM,EAAM,SACrDm0X,EAAOpD,WAAW,YAAa/wX,EAAM5uO,IAAQ,EACjD,EAEJ,IAIA08lB,EAAaz+f,UAAU,gBAAiB,CAAC,SAAU,WAAY,SAAU8kgB,EAAQj+f,GAC/E,MAAO,CACLqH,SAAU,KACV1L,KAAM,SAAUzgG,EAAO+6O,EAAMnM,GAC3Bu1X,EAAkBpB,EAAQj+f,EAAU9kG,EAAO+6O,EAAMnM,EAAM,gBACrDm0X,EAAOpD,WAAW,YAAa/wX,EAAM5uO,IAAQ,EACjD,EAEJ,IAMA08lB,EAAaz+f,UAAU,eAAgB,CAAC,SAAU,WAAY,SAAU8kgB,EAAQj+f,GAC9E,MAAO,CACLqH,SAAU,KACV1L,KAAM,SAAUzgG,EAAO+6O,EAAMnM,GAC3B,IAAIxkP,EAAO24mB,EAAOpD,WAAW,UAAW/wX,EAAM5uO,GAC9CmkmB,EAAkBpB,EAAQj+f,EAAU9kG,EAAO+6O,EAAMnM,EAAM,eAAgBxkP,EACrE24mB,EAAOpD,WAAW,kBAAmB/wX,EAAM5uO,GAC/C,EAEJ,IAEA08lB,EAAatmnB,OAAO,CAAC,mBAAoB,SAAUq8P,GAC7CA,EAAiBkX,6BAA6BlX,EAAiBkX,4BAA4B,4DAC3FlX,EAAiBiX,4BAA4BjX,EAAiBiX,2BAA2B,2DAC/F,IAEAgzW,EAAap0nB,OAAO,aAAc,CAAC,gBAAiB,OAAQ,SAAU+8nB,EAAe74f,GACnF,OAAO,SAAU4Q,EAAMmnf,EAAmBe,GACxC,GAAI/3f,QAAQ3yB,SAASwiC,GACnB,OAAO5Q,EAAK+4f,mBAAmBnof,GAEjC,IAAI1+B,EAAM0+B,KAAUmnf,EAAoBnnf,EAAKqnf,YAAcrnf,EAAKsnf,cAAgBtnf,EAAKqnf,aACrF,OAAIrnf,IAAS1+B,IACN0+B,EAAKoof,6BAA+Bj4f,QAAQjmH,SAAS81H,KACxDA,EAAKoof,6BAA8B,EACnCH,EAAcb,QAAQpnf,EAAMmnf,IAEvB,KAELnnf,UAAaA,EAAKoof,6BACdpof,GAAQ1+B,EAAO4mhB,EAAa94f,EAAK+4f,mBAAmB7mhB,GAAOA,EAAO0+B,IAAS,GACrF,CACF,GAED,CA/PD,GAiQAs/e,EAAa/4f,QAAQ,iBAAkB,CAAC,gBAAiB,KAAM,WAAY,SAAU0hgB,EAAe7rgB,EAAIsL,GACtG,IAAI89J,EAASyiW,EAEb,SAASI,EAAkB37mB,GACzB,IAAI68M,EAAS,GAAI++Z,EAAW,GAC5B,GAAI57mB,EAAIre,OAAS,GAAgB,MAAXqe,EAAI,IAAsC,MAAxBA,EAAIA,EAAIre,OAAS,GACvDk7N,EAAS78M,EAAI02E,UAAU,EAAG12E,EAAIre,OAAS,OAClC,CACL,IAAIlT,EAAQuxB,EAAIvxB,MAAM,KACtB,GAAIA,EAAMkT,OAAS,EACjB,IAAK,IAAI/O,EAAI,EAAGA,EAAInE,EAAMkT,OAAQ/O,IAAK,CACrC,IAAI00B,EAAIq0mB,EAAkBltoB,EAAMmE,IAC5B00B,EAAEu1M,QACJA,GAAU,IAAMv1M,EAAEu1M,OAAS,IACvBjqO,EAAInE,EAAMkT,OAAS,IACrBk7N,GAAU,MAGZ++Z,EAAWA,EAASrgoB,OAAO+rB,EAAEs0mB,SAEjC,MAEyB,IAArB57mB,EAAIlqB,QAAQ,KACd8loB,EAASv6nB,KAAK,QAAUs6nB,EAAkB37mB,EAAI02E,UAAU,IAAImmI,OAAS,UAE5C,IAArB78M,EAAIlqB,QAAQ,OACdkqB,EAAM,IAAMA,GAGd68M,GADAA,EAAS,IAAM78M,EAAI1uB,QAAQ,IAAI+tC,OAAO,oCAAqC,KAAM,QAAU,KAC3E/tC,QAAQ,QAAS,MAAMA,QAAQ,QAAS,KAG9D,CACA,MAAO,CAACurO,OAAQA,EAAQ++Z,SAAUA,EACpC,CAidA,OA/cA9iW,EAAO68V,gBAAkB,SAAUrif,EAAMp+G,GACvC,IAAKA,EACH,OAAO,EAET,IAAI6pE,EAAU48hB,EAAkBzmmB,GAAMlB,GAAQ,EAC9C,GAAI+qE,EAAQ89H,QAAU99H,EAAQ89H,OAAOl7N,OAAQ,CAC3C,IAAIk7N,EAAS,IAAIx9L,OAAO0/D,EAAQ89H,OAAQ,KACxC7oM,EAAsB,MAAbs/G,EAAK/1H,MAAgBs/M,EAAOptO,KAAK6jJ,EAAK/1H,OAC/B,MAAb+1H,EAAKxyI,MAAgB+7N,EAAOptO,KAAK6jJ,EAAKxyI,KAC3C,CAEA,IADA,IAAI9D,EAAM+hG,EAAQ68hB,SAASj6nB,OACpB3E,KAAO,CACZ,IAAI6+nB,EAAU,IAAIx8lB,OAAO0/D,EAAQ68hB,SAAS5+nB,GAAM,KAChDg3B,EAAQA,IAAuB,MAAbs/G,EAAK/1H,MAAgBs+mB,EAAQpsoB,KAAK6jJ,EAAK/1H,SACzC,MAAb+1H,EAAKxyI,MAAgB+6nB,EAAQpsoB,KAAK6jJ,EAAKxyI,MAC5C,CACA,OAAOkzB,CACT,EAEA8kQ,EAAOgjW,aAAe,SAAU5mmB,GAC9B,IAAI5N,EAAI4N,EAAI3gC,WAAYwnoB,EAASz0mB,EAAEuzL,OAAO,SAM1C,OALIkhb,GAAU,EACR79mB,WAAWoJ,EAAEovE,UAAU,EAAGqliB,IAAW79mB,WAAWoJ,EAAEovE,UAAUqliB,EAAS,IAErE79mB,WAAWoJ,EAGnB,EAEAwxQ,EAAOugW,6BAA+B,SAAUj8U,EAASt4C,EAAM5uO,GACzDknR,GACFA,EAAQ2H,YAAY1jT,KAAK,SAAU00I,GACjC,GAAIqnK,EAAQsB,OAAQ,CAClB,IAAIs9U,EAAajmf,EACbA,IAAUtS,QAAQnmH,QAAQy4H,KAC5Bimf,EAAa,CAACjmf,IAEhB+iJ,EAAO5lE,SAAS8oa,EAAY,EAAG5+U,EAASt4C,EAAM5uO,GAAO9xB,KAAK,WACxD00R,EAAOu9V,qBAAqBj5U,EAAS4+U,EACvC,EACF,CACA,OAAOjmf,CACT,EAEJ,EAYA+iJ,EAAOu9V,qBAAuB,SAAUj5U,EAASrnK,IAVjD,SAA0BqnK,EAASrnK,GACpB,MAATA,GAAkBqnK,EAAQsB,SACxBtB,EAAQW,UACVX,EAAQW,YAERX,EAAQsB,QAAS,EAGvB,CAGEu9U,CAAiB7+U,EAASrnK,GAC1BtS,QAAQlkI,QAAQ69S,EAAQg5U,gBAAiB,SAAU8F,GACjD9+U,EAAQU,aAAao+U,EAAWp7nB,KAAMo7nB,EAAWlomB,MACnD,EACF,EAEA8kQ,EAAOqjW,kBAAoB,SAAUr3X,EAAM5uO,EAAOp1B,EAAMs7nB,EAAgB9of,GACtE,IAAI+of,EAAQ,MAAQv7nB,EAAK,GAAGof,cAAgBpf,EAAK4+G,OAAO,GACpDxqF,EAAM4jQ,EAAO+8V,WAAWwG,EAAOv3X,EAAM5uO,EAAO,CAAC8/lB,MAAO1if,IACxD,GAAW,MAAPp+G,IACFA,EAAM4jQ,EAAO+8V,WAAW,cAAe/wX,EAAM5uO,EAAO,CAAC8/lB,MAAO1if,KACnD,CACP,IAAI7kJ,GAAS2toB,GAAkBt7nB,GAAMrS,MAAM,KAC3CymC,EAAMA,EAAIzmC,EAAM,IACZA,EAAMkT,OAAS,IACjBuzB,EAAMA,GAAOA,EAAIzmC,EAAM,IAE3B,CAEF,OAAOymC,CACT,EAEA4jQ,EAAO5lE,SAAW,SAAUn9E,EAAOumf,EAAYl/U,EAASt4C,EAAM5uO,IAC5DknR,EAAUA,GAAW,CAAC,GACdg5U,gBAAkBh5U,EAAQg5U,iBAAmB,GAErD3yf,QAAQlkI,QAAQ69S,EAAQg5U,gBAAiB,SAAU1mnB,GACjDA,EAAEskB,OAAQ,CACZ,GAEA,IAAI6hmB,EAAa,SAAU/0nB,EAAM4sD,GAC/B,OAAOorO,EAAO+8V,WAAW/0nB,EAAMgkQ,EAAM5uO,EAAOw3B,EAC9C,EAEI6ukB,GAAiBzjW,EAAO+8V,WAAW,mBAAoB/wX,EAAM5uO,IAAU,IAAIznC,MAAM,KACjF+toB,EAAmB1jW,EAAO+8V,WAAW,uBAAwB/wX,EAAM5uO,GAEvE,GAAa,MAAT6/G,GAAkC,IAAjBA,EAAMp0I,OACzB,OAAOm3R,EAAO28V,aAAa,CAAC,WAAc1/e,EAAO,aAAgB,KAGnEA,OAAyB1xI,IAAjB0xI,EAAMp0I,OAAuB,CAACo0I,GAASA,EAAM1tI,MAAM,GAC3D,IAAIyunB,EAAe,GAEnB,SAAS2F,EAAa37nB,EAAMs7nB,EAAgB/5nB,GAC1C,GAAI0zI,EAAO,CAET,IADA,IAAInjJ,EAAImjJ,EAAMp0I,OAAQqyB,EAAQ,KACvBphC,KAAK,CACV,IAAI0gJ,EAAOyC,EAAMnjJ,GACjB,GAAI0gJ,EAAM,CACR,IAAIp+G,EAAM4jQ,EAAOqjW,kBAAkBr3X,EAAM5uO,EAAOp1B,EAAMs7nB,EAAgB9of,GAC3D,MAAPp+G,IACG7yB,EAAGixI,EAAMp+G,EAAKtiC,MACoB,IAAjC2poB,EAAczmoB,QAAQgL,IACxBwyI,EAAKgrK,OAASx9S,GACbwyI,EAAK4if,eAAkB5if,EAAK4if,gBAAkB,CAAC,GAAIp1nB,IAAQ,EAC5DwyI,EAAK6if,YAAcjhmB,GACiB,IAAhC4hmB,EAAahhoB,QAAQw9I,IACvBwjf,EAAaz1nB,KAAKiyI,GAEfkpf,GACHzmf,EAAMz7G,OAAO1nC,EAAG,GAElBohC,GAAQ,GAER+hH,EAAMz7G,OAAO1nC,EAAG,IAIxB,CACF,CACc,OAAVohC,GACFopR,EAAQg5U,gBAAgB/0nB,KAAK,CAACP,KAAMA,EAAMkzB,MAAOA,GAErD,CACF,CAEAyomB,EAAa,UAAW,KAAM3jW,EAAO68V,iBACrC8G,EAAa,UAAW,WAAY,SAAUnpf,EAAMp+G,GAClD,OAAOo+G,EAAKhzH,KAAO,IAAOw4Q,EAAOk8V,iBAAiB9/lB,EACpD,GACAunmB,EAAa,UAAW,WAAY,SAAUnpf,EAAMp+G,GAClD,OAAOo+G,EAAKhzH,KAAO,IAAOw4Q,EAAOk8V,iBAAiB9/lB,EACpD,GACA,IAAIwnmB,EAAY,EAchB,GAbAD,EAAa,eAAgB,KAAM,SAAUnpf,EAAMp+G,GAEjD,SADAwnmB,GAAappf,EAAKhzH,MACFw4Q,EAAOk8V,iBAAiB9/lB,KACtC6gH,EAAMz7G,OAAO,EAAGy7G,EAAMp0I,QACf,GAGX,GAEA86nB,EAAa,aAAc,KAAM,SAAUnpf,EAAMhsH,GAC/C,OAAa,IAANA,GAAoB,OAANA,GAAoB,KAANA,CACrC,IAEKyuH,EAAMp0I,OACT,OAAOm3R,EAAO28V,aAAa,CAAC,WAAc,GAAI,aAAgBqB,IAGhE,SAAS6F,EAAc77nB,EAAMs7nB,EAAgB7+mB,EAAMq/mB,EAASv6nB,GAC1D,SAASw6nB,EAAcpmhB,EAAO68B,EAAMp+G,GAClC,SAAS4nmB,EAAgBz6nB,GACvB,GAAIA,IACF,IAAqC,IAAjCk6nB,EAAczmoB,QAAQgL,GAAc,CAOtC,GANAwyI,EAAKgrK,OAASx9S,GACbwyI,EAAK4if,eAAkB5if,EAAK4if,gBAAkB,CAAC,GAAIp1nB,IAAQ,EAC5DwyI,EAAK6if,YAAcjhmB,GACiB,IAAhC4hmB,EAAahhoB,QAAQw9I,IACvBwjf,EAAaz1nB,KAAKiyI,IAEfkpf,EAAkB,CACrB,IAAI5poB,EAAImjJ,EAAMjgJ,QAAQw9I,GAClB1gJ,GAAK,GAAGmjJ,EAAMz7G,OAAO1nC,EAAG,EAC9B,CACA6jH,EAAMtyG,SAAQ,EAChB,KAAO,CACL,IAAIovB,EAAIwiH,EAAMjgJ,QAAQw9I,GAClB//G,GAAK,GAAGwiH,EAAMz7G,OAAO/G,EAAG,GAC5BkjF,EAAMtyG,SAAQ,EAChB,MAEAsyG,EAAMtyG,SAAQ,EAElB,CAEW,MAAP+wB,EACF0nmB,EAAQtpf,EAAMp+G,GAAK9wB,KAAK,SAAUtT,GAChCgsoB,EAAgB,WACd,OAAQz6nB,EAAGvR,EAAGokC,EAChB,EACF,EAAG,WACD4nmB,EAAgB,WACd,OAAOjH,EAAW,mBAAoB,CAACG,MAAO1if,GAChD,EACF,GAEA78B,EAAMtyG,SAAQ,EAElB,CAEA,IAAIutC,EAAW,CAAConP,EAAO28V,cAAa,IAChC1/e,IACFA,OAAyB1xI,IAAjB0xI,EAAMp0I,OAAuB,CAACo0I,GAASA,EAC/CtS,QAAQlkI,QAAQw2I,EAAO,SAAUzC,GAC/B,IAAI78B,EAAQiZ,EAAGjZ,QACf/kE,EAASrwC,KAAKo1G,EAAMmZ,UAChBryG,GAAsB,MAAb+1H,EAAK/1H,MAA2C,IAA3B+1H,EAAK/1H,KAAKs9L,OAAOt9L,GAItC,eAATzc,GAAqE,MAA5Cg4R,EAAO+8V,WAAW,gBAAiB/wX,GAC9Dg0B,EAAOikW,gBAAgBzpf,GAAMlvI,KAAK,SAAUtT,GAC1C+roB,EAAcpmhB,EAAO68B,EACnBuif,EAAW,gBAAiB,CAACG,MAAO1if,EAAMwif,OAAQhloB,EAAEmD,MAAO8hoB,QAASjloB,EAAEqD,SAC1E,EAAG,WACDsiH,EAAMtyG,SAAQ,EAChB,GACkB,aAATrD,GAAiE,MAA1Cg4R,EAAO+8V,WAAW,cAAe/wX,GACjEg0B,EAAOkkW,cAAc1pf,GAAMlvI,KAAK,SAAUtT,GACxC+roB,EAAcpmhB,EAAO68B,EACnBuif,EAAW,cAAe,CAACG,MAAO1if,EAAM2pf,UAAWnsoB,IACvD,EAAG,WACD2lH,EAAMtyG,SAAQ,EAChB,GAEA04nB,EAAcpmhB,EAAO68B,EACnBwlJ,EAAOqjW,kBAAkBr3X,EAAM5uO,EAAOp1B,EAAMs7nB,EAAgB9of,IAnB9D78B,EAAMtyG,SAAQ,EAqBlB,IAEF,IAAI+4nB,EAASxtgB,EAAGjZ,QAYhB,OAXAiZ,EAAGr8E,IAAI3B,GAAUttC,KAAK,SAAU+xB,GAE9B,IADA,IAAIkgL,GAAU,EACLzjN,EAAI,EAAGA,EAAIujC,EAAOx0B,OAAQ/O,IACjC,IAAKujC,EAAOvjC,GAAI,CACdyjN,GAAU,EACV,KACF,CAEF+mG,EAAQg5U,gBAAgB/0nB,KAAK,CAACP,KAAMA,EAAMkzB,MAAOqiL,IACjD6mb,EAAO/4nB,QAAQkyM,EACjB,GACO6mb,EAAOttgB,OAChB,CAEA,IAAIstgB,EAASxtgB,EAAGjZ,QACZ/kE,EAAW,GAkFf,OAhFAA,EAASrwC,KAAKs7nB,EAAc,YAAa,aAAc,QACrDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAOpkC,EAAEqD,QAAU+gC,CACrB,IACFwc,EAASrwC,KAAKs7nB,EAAc,YAAa,aAAc,QACrDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAOpkC,EAAEqD,QAAU+gC,CACrB,IACFwc,EAASrwC,KAAKs7nB,EAAc,WAAY,YAAa,QACnDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAOpkC,EAAEmD,OAASihC,CACpB,IACFwc,EAASrwC,KAAKs7nB,EAAc,WAAY,YAAa,QACnDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAOpkC,EAAEmD,OAASihC,CACpB,IACFwc,EAASrwC,KAAKs7nB,EAAc,aAAc,KAAM,QAC9C,SAAUrpf,EAAMp+G,GACd,OAAO4jQ,EAAO28V,aAAavgmB,EAC7B,EAAG,SAAU5N,GACX,OAAOA,CACT,IACFoqB,EAASrwC,KAAKs7nB,EAAc,QAAS,KAAM,QACzCpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GAEjC,IADA,IAAIzmC,EAAQymC,EAAI3gC,WAAW9F,MAAM,KAAMulC,GAAQ,EACtCphC,EAAI,EAAGA,EAAInE,EAAMkT,OAAQ/O,IAC5BG,KAAKM,IAAKvC,EAAEmD,MAAQnD,EAAEqD,OAAU2kS,EAAOgjW,aAAartoB,EAAMmE,KAAO,MACnEohC,GAAQ,GAGZ,OAAOA,CACT,IACF0d,EAASrwC,KAAKs7nB,EAAc,WAAY,YAAa,QACnDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAQpkC,EAAEmD,MAAQnD,EAAEqD,OAAU2kS,EAAOgjW,aAAa5mmB,GAAO,IAC3D,IACFwc,EAASrwC,KAAKs7nB,EAAc,WAAY,YAAa,QACnDpvnB,KAAKwvnB,gBAAiB,SAAUjsoB,EAAGokC,GACjC,OAAQpkC,EAAEmD,MAAQnD,EAAEqD,OAAU2kS,EAAOgjW,aAAa5mmB,IAAQ,IAC5D,IACFwc,EAASrwC,KAAKs7nB,EAAc,cAAe,eAAgB,cACzDpvnB,KAAKyvnB,cAAe,SAAUlsoB,EAAGokC,GAC/B,OAAOpkC,GAAKgoS,EAAOk8V,iBAAiB9/lB,EACtC,IACFwc,EAASrwC,KAAKs7nB,EAAc,cAAe,eAAgB,cACzDpvnB,KAAKyvnB,cAAe,SAAUlsoB,EAAGokC,GAC/B,OAAOpkC,GAAKgoS,EAAOk8V,iBAAiB9/lB,EACtC,IACFwc,EAASrwC,KAAKs7nB,EAAc,WAAY,KAAM,cAC5C,SAAUrpf,EAAMp+G,GACd,OAAO4jQ,EAAO28V,aAAavgmB,EAC7B,EAAG,SAAU5N,GACX,OAAOA,CACT,IAEFoqB,EAASrwC,KAAKs7nB,EAAc,kBAAmB,KAAM,KACnD,SAAUrpf,EAAMp+G,GACd,OAAOA,CACT,EAAG,SAAU5N,GACX,OAAa,IAANA,GAAoB,OAANA,GAAoB,KAANA,CACrC,IAEFooG,EAAGr8E,IAAI3B,GAAUttC,KAAK,WAEpB,GAAIo4nB,EACF,IAAK,IAAI5poB,EAAI,EAAGA,EAAImjJ,EAAMp0I,OAAQ/O,IACrBmjJ,EAAMnjJ,GACR0rT,QACPvoK,EAAMz7G,OAAO1nC,IAAK,GAKxB4poB,GAAmB,EACnBC,EAAa,WAAY,KAAM,SAAUnpf,EAAMp+G,EAAKtiC,GAClD,OAAO0poB,EAAa1poB,EAAIsiC,CAC1B,GAEAgomB,EAAO/4nB,QAAQ,CAAC,WAAc4xI,EAAO,aAAgB+gf,GACvD,GACOoG,EAAOttgB,OAChB,EAEAkpK,EAAOikW,gBAAkB,SAAUzpf,GACjC,GAAIA,EAAK6pf,WAAa7pf,EAAK8pf,WAAY,CACrC,IAAItsoB,EAAI4+H,EAAGjZ,QAIX,OAHAukB,EAAS,WACPlqI,EAAEqT,QAAQ,CAAClQ,MAAOq/I,EAAK6pf,UAAWhpoB,OAAQm/I,EAAK8pf,YACjD,GACOtsoB,EAAE8+H,OACX,CACA,GAAI0jB,EAAK+pf,qBAAsB,OAAO/pf,EAAK+pf,qBAE3C,IAAIxlhB,EAAW6X,EAAGjZ,QAuDlB,OAtDAukB,EAAS,WAC4B,IAA/BsY,EAAK/1H,KAAKznB,QAAQ,SAItBgjS,EAAO4hW,QAAQpnf,GAAMlvI,KAAK,SAAUs2nB,GAClC,IAAIz3Y,EAAMx/G,QAAQ5vI,QAAQ,SAASixQ,KAAK,MAAO41X,GAC5ChkoB,IAAI,aAAc,UAAUA,IAAI,WAAY,SAC5CA,IAAI,YAAa,mBAAmBA,IAAI,aAAc,mBAEzD,SAASonjB,IACP,IAAI7pjB,EAAQgvP,EAAI,GAAGwM,cAAgBxM,EAAI,GAAGxpP,YACtCtF,EAAS8uP,EAAI,GAAGyM,eAAiBzM,EAAI,GAAGzpP,aAC5CypP,EAAI9yM,SACJmjG,EAAK6pf,UAAYlpoB,EACjBq/I,EAAK8pf,WAAajpoB,EAClB0jH,EAAS1zG,QAAQ,CAAClQ,MAAOA,EAAOE,OAAQA,GAC1C,CAEA,SAASqjB,IACPyrO,EAAI9yM,SACJ0nE,EAASlpG,OAAO,aAClB,CAEAs0O,EAAI/qI,GAAG,OAAQ4lc,GACf76T,EAAI/qI,GAAG,QAAS1gG,GAEhB,IAAI8lnB,EAAiB,GACrB,SAASC,IACPvigB,EAAS,WACHioH,EAAI,GAAG1tP,aACL0tP,EAAI,GAAGxpP,YACTqkjB,IACSw/E,IAAmB,GAC5B9lnB,IAEA+lnB,IAGN,EAAG,IACL,CAEAA,GAEA95f,QAAQ5vI,QAAQmC,SAAS+hM,qBAAqB,QAAQ,IAAIj6D,OAAOmlH,EACnE,EAAG,WACDprI,EAASlpG,OAAO,aAClB,GA7CEkpG,EAASlpG,OAAO,YA8CpB,GAEA2kI,EAAK+pf,qBAAuBxlhB,EAAS+X,QACrC0jB,EAAK+pf,qBAA8B,QAAE,kBAC5B/pf,EAAK+pf,oBACd,GACO/pf,EAAK+pf,oBACd,EAEAvkW,EAAOkkW,cAAgB,SAAU1pf,GAC/B,GAAIA,EAAKkqf,aAAc,CACrB,IAAI1soB,EAAI4+H,EAAGjZ,QAIX,OAHAukB,EAAS,WACPlqI,EAAEqT,QAAQmvI,EAAKkqf,aACjB,GACO1soB,EAAE8+H,OACX,CACA,GAAI0jB,EAAKmqf,oBAAqB,OAAOnqf,EAAKmqf,oBAE1C,IAAI5lhB,EAAW6X,EAAGjZ,QAoDlB,OAnDAukB,EAAS,WAC4B,IAA/BsY,EAAK/1H,KAAKznB,QAAQ,UAAiD,IAA/Bw9I,EAAK/1H,KAAKznB,QAAQ,SAI1DgjS,EAAO4hW,QAAQpnf,GAAMlvI,KAAK,SAAUs2nB,GAClC,IAAI5vlB,EAAK24F,QAAQ5vI,QAAuC,IAA/By/I,EAAK/1H,KAAKznB,QAAQ,SAAiB,UAAY,WACrEgvQ,KAAK,MAAO41X,GAAShkoB,IAAI,aAAc,QAAQA,IAAI,WAAY,SAElE,SAASonjB,IACP,IAAIrriB,EAAWq4B,EAAG,GAAGr4B,SACrB6gI,EAAKkqf,aAAe/qnB,EACpBq4B,EAAGqF,SACH0nE,EAAS1zG,QAAQsO,EACnB,CAOAq4B,EAAGotE,GAAG,iBAAkB4lc,GACxBhzgB,EAAGotE,GAAG,QANN,WACEptE,EAAGqF,SACH0nE,EAASlpG,OAAO,aAClB,GAMA,SAAS+unB,IACP1igB,EAAS,WACHlwF,EAAG,GAAGv1C,aACJu1C,EAAG,GAAGr4B,SACRqriB,IAIA4/E,IAGN,EAAG,IACL,CAEAA,GAEAj6f,QAAQ5vI,QAAQmC,SAASiF,MAAM6iI,OAAOhzF,EACxC,EAAG,WACD+sE,EAASlpG,OAAO,aAClB,GA1CEkpG,EAASlpG,OAAO,YA2CpB,GAEA2kI,EAAKmqf,oBAAsB5lhB,EAAS+X,QACpC0jB,EAAKmqf,oBAA6B,QAAE,kBAC3Bnqf,EAAKmqf,mBACd,GACOnqf,EAAKmqf,mBACd,EACO3kW,CACT,IAGA85V,EAAa/4f,QAAQ,eAAgB,CAAC,iBAAkB,KAAM,SAAU8jgB,EAAgBjugB,GACtF,IAAIopK,EAAS6kW,EA0Ib,OA/DA7kW,EAAO8kW,cAAgB,SAAUC,EAAS/8nB,EAAMg9nB,GAG9C,IAFA,IAAI35lB,EAAM05lB,EAAQpvoB,MAAM,KAAMsvoB,EAAO55lB,EAAI,GAAG5yC,MAAM,WAAW,GAC3DwgJ,EAAO7+C,KAAK/uD,EAAI,IAAK/1B,EAAI2jI,EAAKpwI,OAAQq8nB,EAAQ,IAAIpriB,WAAWxkF,GACxDA,KACL4vnB,EAAM5vnB,GAAK2jI,EAAK5+C,WAAW/kF,GAE7B,IAAIypH,EAAO,IAAInjI,OAAOiiG,KAAK,CAACqniB,GAAQ,CAACzgnB,KAAMwgnB,IAG3C,OAFAlmgB,EAAK/2H,KAAOA,EACZ+2H,EAAK4ggB,aAAeqF,EACbjmgB,CACT,EAEAihK,EAAOs/V,kBAAoB,WACzB,IAAInnX,EAAOj7Q,SAASskB,cAAc,UAClC,OAAO5lB,OAAOw+F,MAAQ+9K,EAAKp2O,YAAco2O,EAAKp2O,WAAW,OAASnmC,OAAOiiG,IAC3E,EAEImiM,EAAOs/V,qBAET/goB,OAAOwY,eAAenb,OAAOiiG,KAAKhpF,UAAW,OAAQ,CACnDvM,IAAK,WACH,OAAOmM,KAAK0wnB,QACd,EACA38nB,IAAK,SAAUoO,GACbnC,KAAK0wnB,SAAWvunB,CAClB,EACA80B,cAAc,IAIlBs0P,EAAOtzR,OAAS,SAAU8tI,EAAMn2I,GAC9B,GAAmC,IAA/Bm2I,EAAK/1H,KAAKznB,QAAQ,SAAgB,OAAOgjS,EAAO28V,aAAanif,GAEjE,IAAIz7B,EAAW6X,EAAGjZ,QA2BlB,OA1BAqiL,EAAO4hW,QAAQpnf,GAAM,GAAMlvI,KAAK,SAAU42F,IAtF/B,SAAUkjiB,EAAQjqoB,EAAOE,EAAQkzP,EAAS9pO,EAAM+U,EAAO6rmB,EAAYvI,GAC9E,IAAI/9gB,EAAW6X,EAAGjZ,QACd2nhB,EAAgBpooB,SAASskB,cAAc,UACvC+jnB,EAAerooB,SAASskB,cAAc,OA8C1C,OA7CA+jnB,EAAa7ynB,aAAa,QAAS,oDACnCxV,SAASiF,KAAKyiG,YAAY2giB,GAE1BA,EAAar4Y,OAAS,WACpB,IAAIs4Y,EAAWD,EAAapqoB,MAAOsqoB,EAAYF,EAAalqoB,OAE5D,GADAkqoB,EAAa9ooB,WAAWkoG,YAAY4giB,GACpB,MAAZzI,IAAsD,IAAlCA,EAAS0I,EAAUC,GAI3C,IACE,GAAIjsmB,EAAO,CACT,IAAIksmB,EAAa1lW,EAAOgjW,aAAaxpmB,GACtBgsmB,EAAWC,EACXC,EAEbrqoB,GADAF,EAAQqqoB,GACSE,EAGjBvqoB,GADAE,EAASoqoB,GACQC,CAErB,CACKvqoB,IACHA,EAAQqqoB,GAELnqoB,IACHA,EAASoqoB,GAEX,IAAItuS,EA1CoB,SAAUwuS,EAAUC,EAAWvgmB,EAAU2nB,EAAWq4kB,GAChF,IAAI7rmB,EAAQ6rmB,EAAaproB,KAAKmE,IAAIinC,EAAWsgmB,EAAU34kB,EAAY44kB,GACjE3roB,KAAKkE,IAAIknC,EAAWsgmB,EAAU34kB,EAAY44kB,GAC5C,MAAO,CACLzqoB,MAAOwqoB,EAAWnsmB,EAAOn+B,OAAQuqoB,EAAYpsmB,EAC7CqsmB,QAASF,EAAWnsmB,EAAQ6L,EAAUygmB,QAASF,EAAYpsmB,EAAQwzB,EAEvE,CAmCuB+4kB,CAAwBP,EAAUC,EAAWtqoB,EAAOE,EAAQgqoB,GAC7EC,EAAcnqoB,MAAQlB,KAAKkE,IAAIg5V,EAAWh8V,MAAOA,GACjDmqoB,EAAcjqoB,OAASpB,KAAKkE,IAAIg5V,EAAW97V,OAAQA,GACrCiqoB,EAAcvjmB,WAAW,MAC/BY,UAAU4imB,EAChBtroB,KAAKkE,IAAI,GAAIg5V,EAAW0uS,QAAU,GAAI5roB,KAAKkE,IAAI,GAAIg5V,EAAW2uS,QAAU,GACxE3uS,EAAWh8V,MAAOg8V,EAAW97V,QAC/B0jH,EAAS1zG,QAAQi6nB,EAAczvjB,UAAUpxD,GAAQ,aAAc8pO,GAAW,MAC5E,CAAE,MAAO90P,GACPslH,EAASlpG,OAAOpc,EAClB,MA/BEslH,EAASlpG,OAAO,WAgCpB,EACA0vnB,EAAap4Y,QAAU,WACrBo4Y,EAAa9ooB,WAAWkoG,YAAY4giB,GACpCxmhB,EAASlpG,QACX,EACA0vnB,EAAazphB,IAAMsphB,EACZrmhB,EAAS+X,OAClB,EAqCIpqH,CAAOw1F,EAAK79F,EAAQlJ,MAAOkJ,EAAQhJ,OAAQgJ,EAAQkqP,QAASlqP,EAAQogB,MAAQ+1H,EAAK/1H,KAC/EpgB,EAAQm1B,MAAOn1B,EAAQghoB,WAAYhhoB,EAAQy4nB,UAC1CxxnB,KAAK,SAAUs2nB,GACd,GAAkB,eAAdpnf,EAAK/1H,OAAiD,IAAxBpgB,EAAQ2hoB,YACxC,IACEpE,EAAU5hW,EAAOgmW,YAAY9jiB,EAAK0/hB,EACpC,CAAE,MAAOnooB,GACPyiB,WAAW,WAAa,MAAMziB,CAAE,EAAG,EACrC,CAEF,IACE,IAAIslI,EAAOihK,EAAO8kW,cAAclD,EAASpnf,EAAKxyI,KAAMwyI,EAAKhzH,MACzDu3F,EAAS1zG,QAAQ0zH,EACnB,CAAE,MAAOtlI,GACPslH,EAASlpG,OAAOpc,EAClB,CACF,EAAG,SAAU+0B,GACD,aAANA,GACFuwF,EAAS1zG,QAAQmvI,GAEnBz7B,EAASlpG,OAAO2Y,EAClB,EACJ,EAAG,SAAU/0B,GACXslH,EAASlpG,OAAOpc,EAClB,GACOslH,EAAS+X,OAClB,EAEOkpK,CACT,IAEA,WAyUE,SAASimW,IACP,IAAIpqa,EAAM3+N,SAASskB,cAAc,OACjC,MAAQ,cAAeq6M,GAAS,WAAYA,IAAS,aAAallO,KAAKoM,UAAUC,UACnF,CA3UA82nB,EAAaz+f,UAAU,UAAW,CAAC,SAAU,WAAY,UAAW,SAAU,QAAS,KACrF,SAAUqsJ,EAAQxlJ,EAAUoC,EAAS67f,EAAQp+f,EAAOnL,GAClD,MAAO,CACL2S,SAAU,MACVrtB,QAAS,WACT2hB,KAAM,SAAUzgG,EAAO+6O,EAAMnM,EAAMs4C,IA0BzC,SAAkBlnR,EAAO+6O,EAAMnM,EAAMs4C,EAAS58B,EAAQxlJ,EAAUoC,EAAS07J,EAAQj+J,EAAOnL,GACtF,IAAIsvgB,EAAYD,IAEZlJ,EAAa,SAAU/0nB,EAAMo1B,EAAOw3B,GACtC,OAAOorO,EAAO+8V,WAAW/0nB,EAAMgkQ,EAAM5uO,EAAOw3B,EAC9C,EAWA,GATImokB,EAAW,kBACb76f,EAAS,WACH9kG,EAAM2/lB,EAAW,kBACnB3/lB,EAAM2/lB,EAAW,kBAAkB3ioB,MAAQ8roB,EAE3C9omB,EAAM2/lB,EAAW,kBAAoBmJ,CAEzC,GAEGA,EAAL,CAW+B,MAA3BnJ,EAAW,cACb/8V,EAAOugW,6BAA6Bj8U,EAASt4C,EAAM5uO,GAGrD,IAGI+omB,EAHAC,EAAe,KACfruX,EAAkB2P,EAAOq1W,EAAW,uBACpCsJ,EAAgB,EAGpBluX,EAAK,GAAGxrQ,iBAAiB,WAAY,SAAU4jC,GAC7C,IAAIy+Z,KAAiBhvK,EAAO09V,eAAe,OAAQ1xX,EAAM5uO,GAAzD,CAIA,GAHAmT,EAAI6wF,iBACA22I,EAAgB36O,IAAQmT,EAAIwnO,kBAE5Bh1Q,UAAUC,UAAUhG,QAAQ,WAAa,EAAG,CAC9C,IAAIsR,EAAIiiC,EAAI+sZ,aAAagpM,cACzB/1lB,EAAI+sZ,aAAaipM,WAAc,SAAWj4nB,GAAK,aAAeA,EAAK,OAAS,MAC9E,CACA4zH,EAAS9qF,OAAOgvlB,GACXD,IACHA,EAAsB,IAmG1B,SAAgC/omB,EAAO4uO,EAAMz7N,EAAK5sB,GAChD,IAAIoD,EAAMg2mB,EAAW,mBAAoB3/lB,EAAO,CAAC+0Q,OAAQ5hQ,IAAOi2lB,EAAS,WACzE,GAAI77f,QAAQ3yB,SAASjxF,GACnBy/mB,EAASz/mB,OACJ,GAAIA,IACLA,EAAImxB,QAAOmulB,EAAgBt/mB,EAAImxB,OAC/BnxB,EAAIslW,QAAUtlW,EAAIlR,QAAQ,CAC5B,IAAI8yB,EAAQ4H,EAAI+sZ,aAAa30Z,MAC7B,GAAa,MAATA,GAAkBA,EAAM9/B,OAK1B,IAFA,IAAIo9F,EAAUl/E,EAAIk/E,SAAW82hB,EAAW,aAAc3/lB,EAAO,CAAC+0Q,OAAQ5hQ,IAClErsC,EAAMykC,EAAM9/B,OACT3E,KAAO,CACZ,IAAK87R,EAAO68V,gBAAgBl0lB,EAAMzkC,GAAM+hG,GAAU,CAChDugiB,EAASz/mB,EAAIlR,OACb,KACF,CACE2wnB,EAASz/mB,EAAIslW,MAEjB,MAXAm6Q,EAASz/mB,EAAIslW,MAajB,CAEF1oW,EAAS6inB,EACX,CA3HIC,CAAuBrpmB,EAAO4uO,EAAMz7N,EAAK,SAAUo2Q,GACjDw/U,EAAsBx/U,EACtBxuC,EAAKz5J,SAASynhB,GACdpJ,EAAW,UAAW3/lB,EAAO,CAACspmB,aAAa,EAAMC,OAAQR,EAAqBh0V,OAAQ5hQ,GACxF,GAfqE,CAiBzE,GAAG,GACH4nO,EAAK,GAAGxrQ,iBAAiB,YAAa,SAAU4jC,IAC1Cy+Z,KAAiBhvK,EAAO09V,eAAe,OAAQ1xX,EAAM5uO,KACzDmT,EAAI6wF,iBACA22I,EAAgB36O,IAAQmT,EAAIwnO,kBAClC,GAAG,GACHI,EAAK,GAAGxrQ,iBAAiB,YAAa,SAAU4jC,IAC1Cy+Z,KAAiBhvK,EAAO09V,eAAe,OAAQ1xX,EAAM5uO,KACzDmT,EAAI6wF,iBACA22I,EAAgB36O,IAAQmT,EAAIwnO,kBAChCquX,EAAelkgB,EAAS,WAClBikgB,GAAqBhuX,EAAKh6J,YAAYgohB,GAC1CA,EAAsB,KACtBpJ,EAAW,UAAW3/lB,EAAO,CAACspmB,aAAa,EAAOv0V,OAAQ5hQ,GAC5D,EAAG81lB,GAAiB,KACtB,GAAG,GACHluX,EAAK,GAAGxrQ,iBAAiB,OAAQ,SAAU4jC,IACrCy+Z,KAAiBhvK,EAAO09V,eAAe,OAAQ1xX,EAAM5uO,KACzDmT,EAAI6wF,iBACA22I,EAAgB36O,IAAQmT,EAAIwnO,kBAC5BouX,GAAqBhuX,EAAKh6J,YAAYgohB,GAC1CA,EAAsB,KACtBS,EAA2Br2lB,EAAI+sZ,aAAc/sZ,EAAK,WACpD,GAAG,GACH4nO,EAAK,GAAGxrQ,iBAAiB,QAAS,SAAU4jC,GACtCxtC,UAAUC,UAAUnG,cAAcG,QAAQ,YAAc,GAC1D+/nB,EAAW,wBAAyB3/lB,IACpCmT,EAAI6wF,kBAEF4tU,KAAiBhvK,EAAO09V,eAAe,QAAS1xX,EAAM5uO,IAC1DwpmB,EAA2Br2lB,EAAI+rZ,eAAiB/rZ,EAAIggf,cAAcj0F,cAAe/rZ,EAAK,WACxF,GAAG,GAECxtC,UAAUC,UAAUnG,cAAcG,QAAQ,YAAc,GAC1D+/nB,EAAW,wBAAyB3/lB,KACpC+6O,EAAKnM,KAAK,mBAAmB,GAC7BmM,EAAK/4J,GAAG,WAAY,SAAU3lH,GACvBA,EAAE+sS,SAAY/sS,EAAE8sS,SACnB9sS,EAAE2nI,gBAEN,GAzEF,MAJyD,IAAnD27f,EAAW,4BAA6B3/lB,IAC1C+6O,EAAKv6Q,IAAI,UAAW,QAKxB,SAASoxc,IACP,OAAO72L,EAAKnM,KAAK,aAAe+wX,EAAW,kBAAmB3/lB,EAChE,CAwEA,SAASwpmB,EAA2B5gnB,EAAQuqB,EAAKs2lB,GAC/C,GAAK7gnB,EAAL,CAGA,IAAIvoB,EACJ,IACEA,EAAOuoB,GAAUA,EAAO26N,SAAW36N,EAAO26N,QAAQ,YACpD,CAAE,MAAOlnP,GACT,EAoEF,SAAsBkvC,EAAO23lB,EAAUwG,EAAUr3hB,GAC/C,IAAIs3hB,EAAW/mW,EAAOqjW,kBAAkBr3X,EAAM5uO,EAAO,YACrC,MAAZ2pmB,IACFA,EAAWninB,OAAOg/P,WAEpB,IAAIojX,EAAehnW,EAAOqjW,kBAAkBr3X,EAAM5uO,EAAO,gBACrC,MAAhB4pmB,IACFA,EAAepinB,OAAOg/P,WAExB,IAAIqjX,EAAalK,EAAW,gBAAiB3/lB,GACzC6/G,EAAQ,GAAI2mf,EAAY,EAE5B,SAASsD,EAAiB7glB,EAAOi3B,GAC/B,IAAIqgC,EAAQiZ,EAAGjZ,QACf,GAAa,MAATt3D,EACF,GAAIA,EAAM8glB,YAAa,CACrB,IAAIvulB,EAAW,CAAConP,EAAO28V,gBACvB,GAAIsK,EAAY,CACd,IAAIzsf,EAAO,CAAC/1H,KAAM,aAClB+1H,EAAKxyI,KAAOwyI,EAAKl9D,MAAQA,GAAQ,IAAMj3B,EAAMr+C,KAC7Ci1I,EAAM10I,KAAKiyI,EACb,CACA,IAAI4sf,EAAY/glB,EAAMghlB,eAClB1tkB,EAAU,GACV2tkB,EAAc,WAChBF,EAAUE,YAAY,SAAU/ya,GAC9B,IACOA,EAAQ1rN,QAYX8wD,EAAUA,EAAQl3D,OAAOsG,MAAM8L,UAAUtF,MAAMuF,KAAKy/M,GAAW,GAAI,IACnE+ya,MAZA38f,QAAQlkI,QAAQkzD,EAAQpqD,MAAM,GAAI,SAAU9V,GACtCwjJ,EAAMp0I,QAAUk+nB,GAAYnD,GAAaoD,GAC3CpulB,EAASrwC,KAAK2+nB,EAAiBztoB,GAAI6jF,GAAc,IAAMj3B,EAAMr+C,KAAO,KAExE,GACA4uH,EAAGr8E,IAAI3B,GAAUttC,KAAK,WACpBqyG,EAAMtyG,SACR,EAAG,SAAU5R,GACXkkH,EAAM9nG,OAAOpc,EACf,GAKJ,CAAE,MAAOA,GACPkkH,EAAM9nG,OAAOpc,EACf,CACF,EAAG,SAAUA,GACXkkH,EAAM9nG,OAAOpc,EACf,EACF,EACA6toB,GACF,MACEjhlB,EAAMm0F,KAAK,SAAUA,GACnB,IACEA,EAAKl9D,MAAQA,GAAc,IAAMk9D,EAAKxyI,KAClCi/nB,IACFzsf,EAAOwlJ,EAAOo7V,OAAO5gf,EAAMA,EAAKl9D,OAElC2/D,EAAM10I,KAAKiyI,GACXopf,GAAappf,EAAKhzH,KAClBm2F,EAAMtyG,SACR,CAAE,MAAO5R,GACPkkH,EAAM9nG,OAAOpc,EACf,CACF,EAAG,SAAUA,GACXkkH,EAAM9nG,OAAOpc,EACf,GAGJ,OAAOkkH,EAAMmZ,OACf,CAEA,IAAIl+E,EAAW,CAAConP,EAAO28V,gBAEvB,GAAIh0lB,GAASA,EAAM9/B,OAAS,GAAmC,UAA9By7H,EAAQ5mC,SAASx/E,SAChD,IAAK,IAAIpkB,EAAI,EAAGA,EAAI6uC,EAAM9/B,OAAQ/O,IAAK,CACrC,GAAI6uC,EAAM7uC,GAAGytoB,kBAAoB5+lB,EAAM7uC,GAAGytoB,oBAAsB5+lB,EAAM7uC,GAAGytoB,mBAAmBJ,YAAa,CACvG,IAAI9glB,EAAQ1d,EAAM7uC,GAAGytoB,mBACrB,GAAIlhlB,EAAM8glB,cAAgBL,EACxB,SAEW,MAATzglB,GACFzN,EAASrwC,KAAK2+nB,EAAiB7glB,GAEnC,KAAO,CACL,IAAIlwC,EAAIwyB,EAAM7uC,GAAG0toB,YACR,MAALrxnB,IACF8mI,EAAM10I,KAAK4N,GACXytnB,GAAaztnB,EAAEqR,KAEnB,CACA,GAAIy1H,EAAMp0I,OAASk+nB,GAAYnD,EAAYoD,IACvCv3hB,GAAYwtC,EAAMp0I,OAAS,EAAI,KACrC,MAEA,GAAgB,MAAZy3nB,EACF,IAAK,IAAI7lmB,EAAI,EAAGA,EAAI6lmB,EAASz3nB,OAAQ4xB,IAAK,CACxC,IAAI+/G,EAAO8lf,EAAS74mB,KAAKgT,GAKzB,IAJI+/G,EAAK/1H,MAAQ+1H,EAAKhzH,KAAO,KAC3By1H,EAAM10I,KAAKiyI,GACXopf,GAAappf,EAAKhzH,MAEhBy1H,EAAMp0I,OAASk+nB,GAAYnD,EAAYoD,IACvCv3hB,GAAYwtC,EAAMp0I,OAAS,EAAI,KACrC,CAIJ,IAAI80G,EAAQiZ,EAAGjZ,QAaf,OAZAiZ,EAAGr8E,IAAI3B,GAAUttC,KAAK,WACpB,GAAKmkG,GAAaw3hB,IAAchqf,EAAMp0I,OAKpC80G,EAAMtyG,QAAQ4xI,OAL8B,CAE5C,IADA,IAAInjJ,EAAI,EACDmjJ,EAAMnjJ,IAAwB,cAAlBmjJ,EAAMnjJ,GAAG2qB,MAAsB3qB,IAClD6jH,EAAMtyG,QAAQ,CAAC4xI,EAAMnjJ,IACvB,CAGF,EAAG,SAAUL,GACXkkH,EAAM9nG,OAAOpc,EACf,GAEOkkH,EAAMmZ,OACf,EA5LE2wgB,CAAazhnB,EAAO2iB,MAAO3iB,EAAOi3H,OAA4C,IAArC8/e,EAAW,cAAe3/lB,GACjE2/lB,EAAW,aAAeA,EAAW,cAAe3/lB,IAAQ9xB,KAAK,SAAU2xI,GACvEA,EAAMp0I,OACRg1nB,EAAY5gf,EAAO1sG,GAazB,SAA8BmmR,EAAUj5T,GACtC,IAAKuiS,EAAO09V,eAAehnU,EAAU1qD,EAAM5uO,IAA0B,iBAAT3/B,EAAmB,OAAOuiS,EAAOmQ,cAAc,IAC3G,IAAIx3K,EAAO,GACXl7H,EAAKjF,QAAQ,4CAA6C,SAAUZ,EAAG0d,EAAGwmG,GACxE6c,EAAKpwH,KAAKuzG,EACZ,GACA,IAAIljE,EAAW,GAAIqkG,EAAQ,GAC3B,GAAItkB,EAAK9vH,OAAQ,CACf8hI,QAAQlkI,QAAQkyH,EAAM,SAAUz2B,GAC9BtpD,EAASrwC,KAAKy3R,EAAOs8V,UAAUp6hB,GAAK52F,KAAK,SAAUyzH,GACjDke,EAAM10I,KAAKw2H,EACb,GACF,GACA,IAAIphB,EAAQiZ,EAAGjZ,QAMf,OALAiZ,EAAGr8E,IAAI3B,GAAUttC,KAAK,WACpBqyG,EAAMtyG,QAAQ4xI,EAChB,EAAG,SAAUxjJ,GACXkkH,EAAM9nG,OAAOpc,EACf,GACOkkH,EAAMmZ,OACf,CACA,OAAOkpK,EAAO28V,cAChB,CAjCM+K,CAAqBb,EAAcppoB,GAAM6N,KAAK,SAAU2xI,GACtD4gf,EAAY5gf,EAAO1sG,EACrB,EAEJ,EAjBmB,CAkBrB,CAEA,SAASstlB,EAAY5gf,EAAO1sG,GAC1ByvP,EAAO69V,YAAYv5U,EAASt4C,EAAM5uO,EAAO2/lB,EAAW,cAAgBA,EAAW,WAAY9/e,EAAO1sG,EACpG,CA+KF,CAhUQo3lB,CAASvqmB,EAAO+6O,EAAMnM,EAAMs4C,EAAS58B,EAAQxlJ,EAAUoC,EAAS67f,EAAQp+f,EAAOnL,EACjF,EAEJ,IAEFkjgB,EAAaz+f,UAAU,gBAAiB,WACtC,OAAO,SAAUj+F,EAAO+6O,GAClB8tX,KAAiB9tX,EAAKv6Q,IAAI,UAAW,OAC3C,CACF,GAEAk8nB,EAAaz+f,UAAU,mBAAoB,CAAC,SAAU,WAAY,SAAU,SAAUqsJ,EAAQxlJ,EAAUi+f,GACtG,OAAO,SAAU/imB,EAAO+6O,EAAMnM,GAC5B,GAAIi6X,IAAiB,CACnB,IAAIpzR,EAAQnrF,EAAOy4W,EAAOpD,WAAW,mBAAoB/wX,IACzD9pI,EAAS,WACP2wO,EAAMz1U,GACFy1U,EAAMr0W,QACRq0W,EAAMr0W,OAAO4+B,GAAO,EAExB,EACF,CACF,CACF,GAgTD,CA9UD,GAiVA08lB,EAAa/4f,QAAQ,aAAc,CAAC,eAAgB,KAAM,SAAU6mgB,EAAchxgB,GAChF,IAAIopK,EAAS4nW,EA2Rb,OAzRA5nW,EAAO+/V,gBAAkB,WACvB,OAAOnkoB,OAAOqnP,aAAc,IAAIA,YAAaE,mBAAqB68C,EAAOs/V,mBAC3E,EAqBAt/V,EAAO6nW,gBAAkB,SAAUrtf,GACjC,IAAI78B,EAAQiZ,EAAGjZ,QACXguQ,EAAS,IAAI1oI,WACb6kZ,EAAattf,EAAKjrI,MAAQirI,EAAKjrI,MAAM,EAAG,OAAairI,EAqCzD,OApCAmxO,EAAOxoI,kBAAkB2kZ,GACzBn8Q,EAAOx+H,QAAU,SAAU1zP,GACzB,OAAOkkH,EAAM9nG,OAAOpc,EACtB,EACAkyX,EAAOz+H,OAAS,SAAUzzP,GACxB,IAAImO,EAAS,CAACmgoB,YAAa,GACvB5xb,EAAO,IAAItU,SAASptL,KAAK7M,QAC7B,GAAiC,QAA7BuuM,EAAKpR,UAAU,GAAG,GAAmB,OAAOpnF,EAAMtyG,QAAQzD,GAI9D,IAFA,IAAIiB,EAASstM,EAAKrU,WAChBzoM,EAAS,EACJA,EAASwP,GAAQ,CACtB,IAAIugd,EAASjzQ,EAAKpR,UAAU1rM,GAAQ,GAEpC,GADAA,GAAU,EACK,QAAX+vd,EAAmB,CACrB,GAA2C,aAAvCjzQ,EAAKnT,UAAU3pM,GAAU,GAAG,GAAuB,OAAOskH,EAAMtyG,QAAQzD,GAE5E,IAAIogoB,EAAgD,QAAvC7xb,EAAKpR,UAAU1rM,GAAU,GAAG,GACzCA,GAAU88M,EAAKnT,UAAU3pM,EAAS,EAAG2uoB,GACrC,IAAIC,EAAO9xb,EAAKpR,UAAU1rM,EAAQ2uoB,GAClC3uoB,GAAU,EACV,IAAK,IAAIS,EAAI,EAAGA,EAAImuoB,EAAMnuoB,IACxB,GAAkD,MAA9Cq8M,EAAKpR,UAAU1rM,EAAc,GAAJS,EAASkuoB,GAAoB,CACxD,IAAID,EAAc5xb,EAAKpR,UAAU1rM,EAAc,GAAJS,EAAU,EAAGkuoB,GAMxD,OALID,GAAe,GAAKA,GAAe,IACrC5xb,EAAK+sC,UAAU7pP,EAAc,GAAJS,EAAU,EAAG,EAAGkuoB,GACzCpgoB,EAAOsgoB,iBAAmBzuoB,EAAE+I,OAAOoF,QAErCA,EAAOmgoB,YAAcA,EACdpqhB,EAAMtyG,QAAQzD,EACvB,CACJ,KAAO,IAA0B,OAArBwhd,EAA6B,MACpC/vd,GAAU88M,EAAKpR,UAAU1rM,GAAQ,EAAM,CAC9C,CACA,OAAOskH,EAAMtyG,QAAQzD,EACvB,EACO+1G,EAAMmZ,OACf,EAYAkpK,EAAOggW,kBAAoB,SAAUxlf,GACnC,GAAwC,IAApCA,EAAK/1H,KAAKznB,QAAQ,cACpB,OAAOgjS,EAAO28V,aAAanif,GAG7B,IAAIz7B,EAAW6X,EAAGjZ,QAkClB,OAjCAqiL,EAAO6nW,gBAAgBrtf,GAAMlvI,KAAK,SAAU1D,GAC1C,GAAIA,EAAOmgoB,YAAc,GAAKngoB,EAAOmgoB,YAAc,EACjD,OAAOhphB,EAAS1zG,QAAQmvI,GAE1BwlJ,EAAO4hW,QAAQpnf,GAAM,GAAMlvI,KAAK,SAAU42F,GACxC,IAAIpgE,EAAS5kC,SAASskB,cAAc,UAChC2oO,EAAMjtP,SAASskB,cAAc,OAEjC2oO,EAAI+C,OAAS,WACX,IACEprN,EAAO3mC,MAAQyM,EAAOmgoB,YAAc,EAAI59Y,EAAI9uP,OAAS8uP,EAAIhvP,MACzD2mC,EAAOzmC,OAASuM,EAAOmgoB,YAAc,EAAI59Y,EAAIhvP,MAAQgvP,EAAI9uP,OACzD,IAAIkjC,EAAMuD,EAAOC,WAAW,OA1FtC,SAAwBxD,EAAKwpmB,EAAa5soB,EAAOE,GAC/C,OAAQ0soB,GACN,KAAK,EACH,OAAOxpmB,EAAI1gC,WAAW,EAAG,EAAG,EAAG,EAAG1C,EAAO,GAC3C,KAAK,EACH,OAAOojC,EAAI1gC,WAAW,EAAG,EAAG,GAAI,EAAG1C,EAAOE,GAC5C,KAAK,EACH,OAAOkjC,EAAI1gC,UAAU,EAAG,EAAG,GAAI,EAAG,EAAGxC,GACvC,KAAK,EACH,OAAOkjC,EAAI1gC,UAAU,EAAG,EAAG,EAAG,EAAG,EAAG,GACtC,KAAK,EACH,OAAO0gC,EAAI1gC,UAAU,EAAG,GAAI,EAAG,EAAGxC,EAAQ,GAC5C,KAAK,EACH,OAAOkjC,EAAI1gC,UAAU,GAAI,GAAI,EAAG,EAAGxC,EAAQF,GAC7C,KAAK,EACIojC,EAAI1gC,UAAU,GAAI,EAAG,EAAG,EAAG,EAAG1C,GAE3C,CA0EUgtoB,CAAe5pmB,EAAK32B,EAAOmgoB,YAAa59Y,EAAIhvP,MAAOgvP,EAAI9uP,QACvDkjC,EAAIoE,UAAUwnN,EAAK,EAAG,GACtB,IAAIy3Y,EAAU9/lB,EAAO+zC,UAAU2kE,EAAK/1H,MAAQ,aAAc,MAC1Dm9mB,EAAU5hW,EAAOgmW,YAhC3B,SAA6B5soB,GAI3B,IAHA,IAAIgvoB,EAAS,GACT9wgB,EAAQ,IAAIx9B,WAAW1gG,GACvB8K,EAAMozH,EAAMwqE,WACPhoM,EAAI,EAAGA,EAAIoK,EAAKpK,IACvBsuoB,GAAUpznB,OAAOysF,aAAa61B,EAAMx9H,IAEtC,OAAO8B,OAAOm+F,KAAKquiB,EACrB,CAwBuCC,CAAoBzgoB,EAAOsgoB,kBAAmBtG,GAC3E,IAAI7igB,EAAOihK,EAAO8kW,cAAclD,EAASpnf,EAAKxyI,MAC9C+2G,EAAS1zG,QAAQ0zH,EACnB,CAAE,MAAOtlI,GACP,OAAOslH,EAASlpG,OAAOpc,EACzB,CACF,EACA0wP,EAAIgD,QAAU,WACZpuI,EAASlpG,QACX,EACAs0O,EAAIruI,IAAM5Z,CACZ,EAAG,SAAUzoG,GACXslH,EAASlpG,OAAOpc,EAClB,EACF,EAAG,SAAUA,GACXslH,EAASlpG,OAAOpc,EAClB,GACOslH,EAAS+X,OAClB,EAEAkpK,EAAOgmW,YAAc,SAAU1+kB,EAAM6sV,GAgKnC,MA/JmB,CAEnBm0P,QAAuB,oEAMvBA,SAAwB,SAAU5xoB,GAChC,IACE05I,EAAMm4f,EACNC,EAAMC,EAAMC,EAFVlya,EAAS,GACCmya,EAAO,GACDC,EAAO,GACzB9uoB,EAAI,EAEN,GAKE0uoB,GAJAp4f,EAAO15I,EAAMoD,OAIE,EACf2uoB,GAAgB,EAAPr4f,IAAa,GAJtBm4f,EAAO7xoB,EAAMoD,OAIuB,EACpC4uoB,GAAgB,GAAPH,IAAc,GAJvBI,EAAOjyoB,EAAMoD,OAIwB,EACrC8uoB,EAAc,GAAPD,EAEHnuoB,MAAM+toB,GACRG,EAAOE,EAAO,GACLpuoB,MAAMmuoB,KACfC,EAAO,IAGTpya,EAASA,EACP/hN,KAAKo0nB,QAAQ1hnB,OAAOqhnB,GACpB/znB,KAAKo0nB,QAAQ1hnB,OAAOshnB,GACpBh0nB,KAAKo0nB,QAAQ1hnB,OAAOuhnB,GACpBj0nB,KAAKo0nB,QAAQ1hnB,OAAOyhnB,GACtBx4f,EAAOm4f,EAAOI,EAAO,GACrBH,EAAOC,EAAOC,EAAOE,EAAO,SACrB9uoB,EAAIpD,EAAMmS,QAEnB,OAAO2tN,CACT,EAEA8xa,QAAuB,SAAUQ,EAAgBC,GAC3CD,EAAerwoB,MAAM,6BACvBqwoB,EAAiBA,EAAetwoB,QAAQ,0BAA2B,KAGrE,IAAIwwoB,EAAWv0nB,KAAKw0nB,SAASH,GACzB7sjB,EAAWxnE,KAAKy0nB,eAAeF,GAE/B30P,EAAQ5/X,KAAK00nB,iBAAiBJ,EAAmB9sjB,GAErD,MAAO,0BAA4BxnE,KAAK20nB,SAAS/0P,EACnD,EAGAi0P,iBAAgC,SAAUS,EAAmB9sjB,GAC3D,IAAIotjB,EAAY50nB,KAAK60nB,aAAartjB,GAChCstjB,EAAgB90nB,KAAK+0nB,WAAWT,EAAmBM,GACrD,OAAO,IAAIvviB,WAAWyviB,EACxB,EAGAjB,aAA4B,SAAUrsjB,GAEpC,IADA,IAAIm9P,EACKp+U,EAAI,EAAGA,EAAIihF,EAASpzE,OAAQ7N,IAEnC,GAAe,OADfo+U,EAAMn9P,EAASjhF,IACP,GAAwB,MAAXo+U,EAAI,GAEvB,OAAOA,EAGX,MAAO,EACT,EAGAkvT,WAA0B,SAAUS,EAAmBM,GACrD,IAAI3yN,EAAYqyN,EAAkBvwoB,QAAQ,0BAA2B,IACnE82I,EAAM76H,KAAKw0nB,SAASvyN,GACpB+yN,EAAgBn6f,EAAItyI,QAAQ,IAAK,GACjC0soB,EAAMp6f,EAAI//H,MAAM,EAAGk6nB,GACnBE,EAAMr6f,EAAI//H,MAAMk6nB,GAChB3gnB,EAAQ4gnB,EAIV,OAFA5gnB,EAAQA,EAAMrmB,OAAO4moB,IACP5moB,OAAOknoB,EAEvB,EAGArB,eAA8B,SAAUsB,GAItC,IAHA,IAAIthlB,EAAO,EACT2zB,EAAW,KAGiB,MAAxB2tjB,EAActhlB,GAA4C,MAA5BshlB,EAActhlB,EAAO,KAD/C,CAIR,GAA4B,MAAxBshlB,EAActhlB,GAA4C,MAA5BshlB,EAActhlB,EAAO,GACrDA,GAAQ,MAEL,CACH,IACEuhlB,EAAWvhlB,GAD0B,IAA1BshlB,EAActhlB,EAAO,GAAWshlB,EAActhlB,EAAO,IACrC,EAC3B8wR,EAAMwwT,EAAcr6nB,MAAM+4C,EAAMuhlB,GAClC5tjB,EAAS1zE,KAAK6wU,GACd9wR,EAAOuhlB,CACT,CACA,GAAIvhlB,EAAOshlB,EAAc/goB,OACvB,KAEJ,CAEA,OAAOozE,CACT,EAGAqsjB,SAAwB,SAAU5xoB,GAChC,IAAI05I,EAAMm4f,EACFE,EAAMC,EADEC,EAAO,GACHC,EAAO,GACzB9uoB,EAAI,EACJw1I,EAAM,GAGS,sBACFx1G,KAAKpjC,IAClB2wC,QAAQ3sC,IAAI,qIAIdhE,EAAQA,EAAM8B,QAAQ,sBAAuB,IAE7C,GAME43I,EALO37H,KAAKo0nB,QAAQ7roB,QAAQtG,EAAMywB,OAAOrtB,OAKzB,GAJhB2uoB,EAAOh0nB,KAAKo0nB,QAAQ7roB,QAAQtG,EAAMywB,OAAOrtB,QAIX,EAC9ByuoB,GAAgB,GAAPE,IAAc,GAJvBC,EAAOj0nB,KAAKo0nB,QAAQ7roB,QAAQtG,EAAMywB,OAAOrtB,QAIJ,EACrC6uoB,GAAgB,EAAPD,IAAa,GAJtBE,EAAOn0nB,KAAKo0nB,QAAQ7roB,QAAQtG,EAAMywB,OAAOrtB,OAMzCw1I,EAAI/mI,KAAK6nI,GAEI,KAATs4f,GACFp5f,EAAI/mI,KAAKggoB,GAEE,KAATK,GACFt5f,EAAI/mI,KAAKogoB,GAGXv4f,EAAOm4f,EAAOI,EAAO,GACdF,EAAOC,EAAOE,EAAO,SAErB9uoB,EAAIpD,EAAMmS,QAEnB,OAAOymI,CACT,GAEoBhuG,QAAQgmB,EAAM6sV,EACpC,EAEOn0G,CACT,G,+BC90FA,EAAQ,M,kBCFR,IAAI8pW,EAAmB,EAAQ,MAC3BtjN,EAAY,EAAQ,OACpBujN,EAAW,EAAQ,OAGnBC,EAAmBD,GAAYA,EAASE,aAmBxCA,EAAeD,EAAmBxjN,EAAUwjN,GAAoBF,EAEpE3ziB,EAAOj9F,QAAU+woB,C,+DCuBjB,SAASxza,EAAQttH,EAAM79D,GACrB,GAAmB,mBAAR69D,GAAmC,MAAZ79D,GAAuC,mBAAZA,EAC3D,MAAM,IAAIv2B,UAhDQ,uBAkDpB,IAAIwya,EAAW,WACb,IAAIz+a,EAAOF,UACP3J,EAAMqsC,EAAWA,EAAS/1B,MAAMd,KAAM3L,GAAQA,EAAK,GACnDk4B,EAAQumZ,EAASvmZ,MAErB,GAAIA,EAAM54B,IAAInJ,GACZ,OAAO+hC,EAAM14B,IAAIrJ,GAEnB,IAAI2I,EAASuhG,EAAK5zF,MAAMd,KAAM3L,GAE9B,OADAy+a,EAASvmZ,MAAQA,EAAMx4B,IAAIvJ,EAAK2I,IAAWo5B,EACpCp5B,CACT,EAEA,OADA2/a,EAASvmZ,MAAQ,IAAKy1L,EAAQguT,OAAS,KAChCl9F,CACT,CAGA9wN,EAAQguT,MAAQ,ICnEhB,IAAIylH,EAAa,mGAGbC,EAAe,WAoBnB,SCZMvioB,EF0DN,ECzDiC,SAASrP,GACxC,IAAIqP,EAAS,GAOb,OAN6B,KAAzBrP,EAAO8hG,WAAW,IACpBzyF,EAAOW,KAAK,IAEdhQ,EAAOC,QAAQ0xoB,EAAY,SAASzxoB,EAAOi/C,EAAQ8xP,EAAO4gW,GACxDxioB,EAAOW,KAAKihS,EAAQ4gW,EAAU5xoB,QAAQ2xoB,EAAc,MAASzylB,GAAUj/C,EACzE,GACOmP,CACT,ECV6B,SAAS3I,GAIlC,OAfmB,MAYf+hC,EAAMxZ,MACRwZ,EAAMwuC,QAEDvwE,CACT,GAEI+hC,EAAQp5B,EAAOo5B,MACZp5B,GATT,IACMA,EAOAo5B,C,kBCrBN,IAAIqpmB,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OASvB,SAAS3tY,EAAMpjM,GACb,IAAInvD,EAAOiK,KAAKi4T,SAAW,IAAI29T,EAAU1wkB,GACzCllD,KAAK+S,KAAOhd,EAAKgd,IACnB,CAGAu1O,EAAMloP,UAAU26D,MAAQ86jB,EACxBvtY,EAAMloP,UAAkB,OAAI01nB,EAC5BxtY,EAAMloP,UAAUvM,IAAMkioB,EACtBztY,EAAMloP,UAAUzM,IAAMqioB,EACtB1tY,EAAMloP,UAAUrM,IAAMkioB,EAEtBv0iB,EAAOj9F,QAAU6jQ,C,kBC1BjB,IAAI4tY,EAAgB,EAAQ,OACxBC,EAAa,EAAQ,OACrB5qa,EAAc,EAAQ,OA6B1B7pI,EAAOj9F,QAJP,SAAgB6mD,GACd,OAAOigL,EAAYjgL,GAAU4qlB,EAAc5qlB,GAAQ,GAAQ6qlB,EAAW7qlB,EACxE,C,YCJAo2C,EAAOj9F,QANP,SAAkBkB,GAChB,OAAO,WACL,OAAOA,CACT,CACF,C,2GC2BA,QAlCA,SAAiB2lD,EAAQu9B,EAAMljF,EAAOyzO,GACpC,KAAK,OAAS9tL,GACZ,OAAOA,EAST,IALA,IAAI90C,GAAS,EACTpC,GAHJy0E,GAAO,OAASA,EAAMv9B,IAGJl3C,OACdstK,EAAYttK,EAAS,EACrBgioB,EAAS9qlB,EAEI,MAAV8qlB,KAAoB5/nB,EAAQpC,GAAQ,CACzC,IAAI5J,GAAM,OAAMq+E,EAAKryE,IACjBi4H,EAAW9oI,EAEf,GAAY,cAAR6E,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAO8gD,EAGT,GAAI90C,GAASkrK,EAAW,CACtB,IAAI8mL,EAAW4tS,EAAO5roB,QAELsM,KADjB23H,EAAW2qG,EAAaA,EAAWovH,EAAUh+V,EAAK4roB,QAAUt/nB,KAE1D23H,GAAW,OAAS+5N,GAChBA,GACC,OAAQ3/Q,EAAKryE,EAAQ,IAAM,GAAK,CAAC,EAE1C,EACA,OAAY4/nB,EAAQ5roB,EAAKikI,GACzB2ngB,EAASA,EAAO5roB,EAClB,CACA,OAAO8gD,CACT,C,yECbe,SAAS6ve,EAAc70hB,EAAS43D,EAASh5C,EAAU1U,GAhClE,IAAuBzJ,EACjB0rB,EACAy0M,EA+BY,MAAZhiN,IAjCiBne,EAiC0BT,EA/B3C4gO,GAA8B,KAD9Bz0M,GAAM,OAAI1rB,EAAM,uBAAyB,IAC9BwB,QAAQ,MAAe,IAAO,EA+BvB2c,EA9BfyL,WAAW8B,GAAOy0M,GA8BkC,GAC3D,IAAImva,EAtBN,SAA8B/voB,EAAS4e,EAAU1U,QAC/B,IAAZA,IACFA,EAAU,GAGZ,IAAIu9R,GAAS,EACTxmD,EAAS9/N,WAAW,WACjBsmR,GAbT,SAA8BznS,GAC5B,IAAIw1C,EAAMrzC,SAASokQ,YAAY,cAC/B/wN,EAAI8xN,UAAU,iBAAiB,GAAM,GACrCtnQ,EAAQwmQ,cAAchxN,EACxB,CASiBw6lB,CAAqBhwoB,EACpC,EAAG4e,EAAW1U,GACVoyC,GAAS,OAAOt8C,EAAS,gBAAiB,WAC5CynS,GAAS,CACX,EAAG,CACDtjL,MAAM,IAER,OAAO,WACL9iG,aAAa4/N,GACb3kM,GACF,CACF,CAIsB2zlB,CAAqBjwoB,EAAS4e,EAAU1U,GACxDoyC,GAAS,OAAOt8C,EAAS,gBAAiB43D,GAC9C,OAAO,WACLm4kB,IACAzzlB,GACF,CACF,C,+BC1CA,IAAIs+E,EAAoB,EAAQ,OAIhCx/B,EAAOj9F,QAAU,SAAUq2B,EAAG9B,GAI5B,IAHA,IAAIvpB,EAAMyxH,EAAkBpmG,GACxBhC,EAAI,IAAIE,EAAEvpB,GACVgiB,EAAI,EACDA,EAAIhiB,EAAKgiB,IAAKqH,EAAErH,GAAKqJ,EAAErrB,EAAMgiB,EAAI,GACxC,OAAOqH,CACT,C,+BCTA,IAAIgrN,EAAS,EAAQ,OACjB0yZ,EAAW,EAAQ,OAEnBjwY,EAAiB,EAAQ,OACzBo5X,EAAc,EAAQ,MACtBtshB,EAAO,EAAQ,OAEf2ib,EAAWwgH,EAAS7W,IAAe71nB,QAEvCg6O,EAAOkyS,EAAU,CAChB2pG,YAAaA,EACbp5X,eAAgBA,EAChBlzJ,KAAMA,IAGP3R,EAAOj9F,QAAUuxhB,C,yBCfjB,MAAMygH,UAAoBlvnB,MACzB,WAAA9G,CAAY+5O,GACXnnM,MAAMmnM,GAAU,wBAChBx6O,KAAKzM,KAAO,aACb,CAEA,cAAImjoB,GACH,OAAO,CACR,EAGD,MAAMC,EACL,SAAO7hoB,CAAG8hoB,GACT,MAAO,IAAIC,IACH,IAAIF,EAAY,CAAC//nB,EAASwK,EAAQ01nB,KACxCD,EAAW/ioB,KAAKgjoB,GAEhBF,KAAUC,GAAYhgoB,KAAKD,EAASwK,IAGvC,CAEA,WAAAX,CAAYytP,GACXluP,KAAK+2nB,gBAAkB,GACvB/2nB,KAAKg3nB,YAAa,EAClBh3nB,KAAKi3nB,aAAc,EACnBj3nB,KAAKk3nB,iBAAkB,EAEvBl3nB,KAAKm3nB,SAAW,IAAIxgoB,QAAQ,CAACC,EAASwK,KACrCpB,KAAKo3nB,QAAUh2nB,EAEf,MAYM01nB,EAAW54kB,IAChB,IAAKl+C,KAAKg3nB,WACT,MAAM,IAAIzvnB,MAAM,kEAGjBvH,KAAK+2nB,gBAAgBjjoB,KAAKoqD,IAY3B,OATAp0D,OAAO0hC,iBAAiBsrmB,EAAU,CACjCO,aAAc,CACbxjoB,IAAK,IAAMmM,KAAKk3nB,gBAChBnjoB,IAAK+uC,IACJ9iC,KAAKk3nB,gBAAkBp0lB,MAKnBorN,EA7BWvoQ,IACZqa,KAAKi3nB,aAAgBH,EAASO,eAClCr3nB,KAAKg3nB,YAAa,EAClBpgoB,EAAQjR,KAIOskB,IAChBjK,KAAKg3nB,YAAa,EAClB51nB,EAAO6I,IAoB6B6snB,IAEvC,CAEA,IAAAjgoB,CAAKs3P,EAAaC,GAEjB,OAAOpuP,KAAKm3nB,SAAStgoB,KAAKs3P,EAAaC,EACxC,CAEA,MAAMA,GACL,OAAOpuP,KAAKm3nB,SAAStpa,MAAMugC,EAC5B,CAEA,QAAQ9H,GACP,OAAOtmP,KAAKm3nB,SAASvwiB,QAAQ0/J,EAC9B,CAEA,MAAA3jN,CAAO63M,GACN,GAAKx6O,KAAKg3nB,aAAch3nB,KAAKi3nB,YAA7B,CAMA,GAFAj3nB,KAAKi3nB,aAAc,EAEfj3nB,KAAK+2nB,gBAAgB3ioB,OAAS,EACjC,IACC,IAAK,MAAM8pD,KAAWl+C,KAAK+2nB,gBAC1B74kB,GAEF,CAAE,MAAOj0C,GAER,YADAjK,KAAKo3nB,QAAQntnB,EAEd,CAGGjK,KAAKk3nB,iBACRl3nB,KAAKo3nB,QAAQ,IAAIX,EAAYj8Y,GAhB9B,CAkBD,CAEA,cAAIk8Y,GACH,OAAO12nB,KAAKi3nB,WACb,EAGDntoB,OAAOmW,eAAe02nB,EAAYv2nB,UAAWzJ,QAAQyJ,WAErDshF,EAAOj9F,QAAUkyoB,EACjBj1iB,EAAOj9F,QAAQgyoB,YAAcA,C,cC9G5B,WACA,aA+DA,IAAIa,EAAQ9yoB,OAAO,SACf+yoB,EAAQ/yoB,OAAO,SAEfgzoB,EAAS,SAAgBhkkB,EAAOtO,GACd,iBAAVsO,IAEVtO,EAAUsO,EACVA,EAAQ,GAGTxzD,KAAK+S,KAAO,EACZ/S,KAAKwzD,MAAQA,EACbxzD,KAAKy3nB,OAASz3nB,KAAK03nB,YAAS5goB,EAC5BkJ,KAAK23nB,QAAU,IAAI3koB,IAEfkyD,IACHllD,KAAKjW,OAAOm7D,GACRsO,EAAQ,IACXxzD,KAAKwzD,MAAQxzD,KAAK+S,MAGrB,EAuNA,SAAS6knB,EAAMptoB,EAAK7E,GACnBqa,KAAKxV,IAAMA,EACXwV,KAAKra,MAAQA,EACbqa,KAAKs3nB,QAASxgoB,EACdkJ,KAAKu3nB,QAASzgoB,CACf,CAEA,SAAS+goB,EAAcC,GACtB93nB,KAAK4xC,MAAQkmlB,CACd,CAcA,SAASC,EAAYD,GACpB93nB,KAAK4xC,MAAQkmlB,CACd,CAcA,SAASE,EAAcF,GACtB93nB,KAAK4xC,MAAQkmlB,CACd,CA9PAN,EAAOp3nB,UAAU63nB,iBAAmB,SAA2BrmlB,GAC1DA,IAAU5xC,KAAK03nB,SAQf9llB,EAAM0llB,KACL1llB,IAAU5xC,KAAKy3nB,SAClBz3nB,KAAKy3nB,OAAS7llB,EAAM0llB,IAErB1llB,EAAM0llB,GAAOC,GAAS3llB,EAAM2llB,IAEzB3llB,EAAM2llB,KACT3llB,EAAM2llB,GAAOD,GAAS1llB,EAAM0llB,IAE7B1llB,EAAM0llB,QAASxgoB,EACf86C,EAAM2llB,GAASv3nB,KAAK03nB,OAChB13nB,KAAK03nB,SACR13nB,KAAK03nB,OAAOJ,GAAS1llB,GAEtB5xC,KAAK03nB,OAAS9llB,EACf,EAEA4llB,EAAOp3nB,UAAUrW,OAAS,SAAiBm7D,GAC1C,IAAItT,EACH4hB,EAAQxzD,KAAKwzD,OAASrjD,OAAOg/P,UAC9BnvQ,KAAK23nB,QAAQ58jB,QAEb,IADA,IAAI0mC,EAAKv8C,EAAQ1gE,OAAO0d,YACfg2nB,EAAMz2hB,EAAG35G,QAASowoB,EAAI12nB,KAAM02nB,EAAMz2hB,EAAG35G,OAAQ,CACrD,IAAI9C,EAAI,IAAI4yoB,EAAMM,EAAIvyoB,MAAM,GAAIuyoB,EAAIvyoB,MAAM,IAS1C,GARAqa,KAAK23nB,QAAQ5joB,IAAI/O,EAAEwF,IAAKxF,GACnB4sD,GAGJA,EAAM0llB,GAAStyoB,EACfA,EAAEuyoB,GAAS3llB,GAHX5xC,KAAKy3nB,OAASzyoB,EAKf4sD,EAAQ5sD,EACO,GAAXwuE,IACH,MAAM,IAAIjsD,MAAM,WAElB,CACAvH,KAAK03nB,OAAS9llB,EACd5xC,KAAK+S,KAAO/S,KAAK23nB,QAAQ5knB,IAC1B,EAEAyknB,EAAOp3nB,UAAUvM,IAAM,SAAcrJ,GAEpC,IAAIonD,EAAQ5xC,KAAK23nB,QAAQ9joB,IAAIrJ,GAC7B,GAAKonD,EAGL,OADA5xC,KAAKi4nB,iBAAiBrmlB,GACfA,EAAMjsD,KACd,EAEA6xoB,EAAOp3nB,UAAUrM,IAAM,SAAcvJ,EAAK7E,GACzC,IAAIisD,EAAQ5xC,KAAK23nB,QAAQ9joB,IAAIrJ,GAE7B,OAAIonD,GAEHA,EAAMjsD,MAAQA,EACdqa,KAAKi4nB,iBAAiBrmlB,GACf5xC,OAIRA,KAAK23nB,QAAQ5joB,IAAIvJ,EAAMonD,EAAQ,IAAIgmlB,EAAMptoB,EAAK7E,IAE1Cqa,KAAK03nB,QAER13nB,KAAK03nB,OAAOJ,GAAS1llB,EACrBA,EAAM2llB,GAASv3nB,KAAK03nB,QAGpB13nB,KAAKy3nB,OAAS7llB,EAIf5xC,KAAK03nB,OAAS9llB,IACZ5xC,KAAK+S,KACH/S,KAAK+S,KAAO/S,KAAKwzD,OAEpBxzD,KAAKkoC,QAGCloC,KACR,EAEAw3nB,EAAOp3nB,UAAU8nC,MAAQ,WAExB,IAAI0J,EAAQ5xC,KAAKy3nB,OACjB,GAAI7llB,EAeH,OAdI5xC,KAAKy3nB,OAAOH,IAEft3nB,KAAKy3nB,OAASz3nB,KAAKy3nB,OAAOH,GAC1Bt3nB,KAAKy3nB,OAAOF,QAASzgoB,IAGrBkJ,KAAKy3nB,YAAS3goB,EACdkJ,KAAK03nB,YAAS5goB,GAIf86C,EAAM0llB,GAAS1llB,EAAM2llB,QAASzgoB,EAC9BkJ,KAAK23nB,QAAQlhmB,OAAOmb,EAAMpnD,OACxBwV,KAAK+S,KACA,CAAC6+B,EAAMpnD,IAAKonD,EAAMjsD,MAE3B,EAMA6xoB,EAAOp3nB,UAAUvF,KAAO,SAAerQ,GACtC,IAAIxF,EAAIgb,KAAK23nB,QAAQ9joB,IAAIrJ,GACzB,OAAOxF,EAAIA,EAAEW,WAAQmR,CACtB,EAEA0goB,EAAOp3nB,UAAUzM,IAAM,SAAcnJ,GACpC,OAAOwV,KAAK23nB,QAAQhkoB,IAAInJ,EACzB,EAEAgtoB,EAAOp3nB,UAAUq2B,OAAS,SAAmBjsC,GAC5C,IAAIonD,EAAQ5xC,KAAK23nB,QAAQ9joB,IAAIrJ,GAC7B,GAAKonD,EAsBL,OArBA5xC,KAAK23nB,QAAQlhmB,OAAOmb,EAAMpnD,KACtBonD,EAAM0llB,IAAU1llB,EAAM2llB,IAEzB3llB,EAAM2llB,GAAOD,GAAS1llB,EAAM0llB,GAC5B1llB,EAAM0llB,GAAOC,GAAS3llB,EAAM2llB,IAClB3llB,EAAM0llB,IAEhB1llB,EAAM0llB,GAAOC,QAASzgoB,EAEtBkJ,KAAKy3nB,OAAS7llB,EAAM0llB,IACV1llB,EAAM2llB,IAEhB3llB,EAAM2llB,GAAOD,QAASxgoB,EAEtBkJ,KAAK03nB,OAAS9llB,EAAM2llB,IAGpBv3nB,KAAKy3nB,OAASz3nB,KAAK03nB,YAAS5goB,EAG7BkJ,KAAK+S,OACE6+B,EAAMjsD,KACd,EAEA6xoB,EAAOp3nB,UAAU26D,MAAQ,WAExB/6D,KAAKy3nB,OAASz3nB,KAAK03nB,YAAS5goB,EAC5BkJ,KAAK+S,KAAO,EACZ/S,KAAK23nB,QAAQ58jB,OACd,EAEAy8jB,EAAOp3nB,UAAU/V,KAAO,WACvB,OAAO,IAAI0toB,EAAY/3nB,KAAKy3nB,OAC7B,EAEAD,EAAOp3nB,UAAUwoB,OAAS,WACzB,OAAO,IAAIovmB,EAAch4nB,KAAKy3nB,OAC/B,EAEAD,EAAOp3nB,UAAU8kD,QAAU,WAC1B,OAAOllD,IACR,EAEAw3nB,EAAOp3nB,UAAU5b,OAAO0d,UAAY,WACnC,OAAO,IAAI21nB,EAAc73nB,KAAKy3nB,OAC/B,EAEAD,EAAOp3nB,UAAUpO,QAAU,SAAkBmmoB,EAAKC,GAC1B,iBAAZA,IACVA,EAAUp4nB,MAGX,IADA,IAAI4xC,EAAQ5xC,KAAKy3nB,OACV7llB,GACNumlB,EAAI93nB,KAAK+3nB,EAASxmlB,EAAMjsD,MAAOisD,EAAMpnD,IAAKwV,MAC1C4xC,EAAQA,EAAM0llB,EAEhB,EAGAE,EAAOp3nB,UAAUy9M,OAAS,WAIzB,IAHA,IAAI56N,EAAI,IAAIqR,MAAM0L,KAAK+S,MACtB1tB,EAAI,EACJusD,EAAQ5xC,KAAKy3nB,OACP7llB,GACN3uD,EAAEoC,KAAO,CAAEmF,IAAKonD,EAAMpnD,IAAK7E,MAAOisD,EAAMjsD,OACxCisD,EAAQA,EAAM0llB,GAEf,OAAOr0oB,CACR,EAGAu0oB,EAAOp3nB,UAAUpZ,SAAW,WAG3B,IAFA,IAAI/D,EAAI,GACP2uD,EAAQ5xC,KAAKy3nB,OACP7llB,GACN3uD,GAAKsd,OAAOqxC,EAAMpnD,KAAO,IAAMonD,EAAMjsD,OACrCisD,EAAQA,EAAM0llB,MAEbr0oB,GAAK,OAGP,OAAOA,CACR,EAYA40oB,EAAcz3nB,UAAU5b,OAAO0d,UAAY,WAC1C,OAAOlC,IACR,EACA63nB,EAAcz3nB,UAAUtY,KAAO,WAC9B,IAAIuwoB,EAAMr4nB,KAAK4xC,MACf,OAAIymlB,GACHr4nB,KAAK4xC,MAAQymlB,EAAIf,GACV,CAAE91nB,MAAM,EAAO7b,MAAO,CAAC0yoB,EAAI7toB,IAAK6toB,EAAI1yoB,SAEpC,CAAE6b,MAAM,EAAM7b,WAAOmR,EAE9B,EAKAihoB,EAAY33nB,UAAU5b,OAAO0d,UAAY,WACxC,OAAOlC,IACR,EACA+3nB,EAAY33nB,UAAUtY,KAAO,WAC5B,IAAIuwoB,EAAMr4nB,KAAK4xC,MACf,OAAIymlB,GACHr4nB,KAAK4xC,MAAQymlB,EAAIf,GACV,CAAE91nB,MAAM,EAAO7b,MAAO0yoB,EAAI7toB,MAE1B,CAAEgX,MAAM,EAAM7b,WAAOmR,EAE9B,EAKAkhoB,EAAc53nB,UAAU5b,OAAO0d,UAAY,WAC1C,OAAOlC,IACR,EACAg4nB,EAAc53nB,UAAUtY,KAAO,WAC9B,IAAIuwoB,EAAMr4nB,KAAK4xC,MACf,OAAIymlB,GACHr4nB,KAAK4xC,MAAQymlB,EAAIf,GACV,CAAE91nB,MAAM,EAAO7b,MAAO0yoB,EAAI1yoB,QAE1B,CAAE6b,MAAM,EAAM7b,WAAOmR,EAE9B,EAuBAnV,EAAE22oB,UAAUC,aAAe52oB,EAAE22oB,UAAUt1hB,OAAO,CAC7CpzG,QAAS,CACR4ooB,QAAS,GAGTxonB,KAAM,UACNyonB,cAAe,IAGhBlvlB,WAAY,SAAU35C,GACrBjO,EAAE22oB,UAAUl4nB,UAAUmpC,WAAWlpC,KAAKL,KAAMpQ,GAG5CoQ,KAAK04nB,eAAiB,CAAC,EACvB14nB,KAAK24nB,KAAO,IAAInB,EAAO,KAEvBx3nB,KAAK44nB,eAAuC,WAAtB54nB,KAAKpQ,QAAQogB,KAAoB,EAAI,EAE3DhQ,KAAK64nB,qBAAuB74nB,KAAK84nB,gBAAgBp9kB,KAAK17C,KACvD,EAEA0sU,MAAO,SAAU35U,GAChB,IAzCkBmc,EACf6pnB,EACHC,EAuCIC,EAASj5nB,KAEbre,EAAE22oB,UAAUl4nB,UAAUssU,MAAMrsU,KAAKL,KAAMjN,GACvCiN,KAAKk5nB,uBAKDl5nB,KAAKm5nB,gBACRpmoB,EAAIqmoB,gBAAgB5zb,WAAWr1G,YAAYnwF,KAAKm5nB,gBAE7Cn5nB,KAAKq5nB,uBACRtmoB,EAAIqmoB,gBAAgBxzb,YAAYz1G,YAAYnwF,KAAKq5nB,uBArDhCnqnB,EAwDP,WACL+pnB,EAAOrnP,OAGZqnP,EAAOK,cAGPC,OAAO11gB,KAAK13G,MAAMqtnB,gBAAgBP,EAAOQ,QAAS,OAAQ,WACpDR,EAAOrnP,OAGZqnP,EAAOS,mBACPT,EAAOU,gBAAiB,EACzB,GACD,EArEGZ,EAAe,EAClBC,EAAa,KAEdA,EAAa9qiB,YAAY,WACxB,GAAI6qiB,GAAgB,GAEnB,MADA3qiB,cAAc4qiB,GACR,IAAIzxnB,MAAM,4CAEXpgB,OAAOoyoB,QAAYpyoB,OAAOoyoB,OAAO11gB,MAAU18H,OAAOoyoB,OAAO11gB,KAAK7wH,MACnEo7F,cAAc4qiB,GACd9pnB,EAAS7O,KAXkB8oB,cAa1B4vmB,CACH,EAAG,IAyDH,EAEA5rT,SAAU,SAAUp6U,GACnBpR,EAAE22oB,UAAUl4nB,UAAU+sU,SAAS9sU,KAAKL,KAAMjN,GAC1CiN,KAAK45nB,UAAU9unB,aACf/X,EAAIswkB,WAAWnze,YAAYlwF,KAAK65nB,kBAC5B75nB,KAAKm5nB,gBACRx3oB,EAAE2hlB,QAAQ1giB,OAAO5iC,KAAKm5nB,gBAEnBn5nB,KAAKq5nB,uBACR13oB,EAAE2hlB,QAAQ1giB,OAAO5iC,KAAKq5nB,uBAEnBr5nB,KAAKy5nB,SACRF,OAAO11gB,KAAK13G,MAAM2tnB,eAAe95nB,KAAKy5nB,QAAS,OAEjD,EAOAM,eAAgB,SAAUC,EAAiBpqoB,GAC1C,IAAIqpoB,EAASj5nB,KASb,OAPKA,KAAKi6nB,aAAcj6nB,KAAKi6nB,WAAa,CAAC,GAC3Cj6nB,KAAKk6nB,UAAU,WACd,IACIC,EAAc,IAAIxyhB,EADJ4xhB,OAAO11gB,KAAKm2gB,IACIpqoB,GAClCuqoB,EAAY5wT,OAAO0vT,EAAOQ,SAC1BR,EAAOgB,WAAWD,GAAmBG,CACtC,GACOn6nB,IACR,EAIAo6nB,kBAAmB,SAAUJ,GAC5B,IAAIf,EAASj5nB,KASb,OAPAA,KAAKk6nB,UAAU,WACd,IAAIC,EAAclB,EAAOgB,YAAchB,EAAOgB,WAAWD,GACrDG,IACHA,EAAY5wT,OAAO,aACZ0vT,EAAOgB,WAAWD,GAE3B,GACOh6nB,IACR,EAEAk5nB,qBAAsB,WAChBl5nB,KAAK65nB,mBACT75nB,KAAK65nB,iBAAmBl4oB,EAAE2hlB,QAAQ5ikB,OACjC,MACA,kDAEDV,KAAK65nB,iBAAiB97nB,GAAK,oBAAsBpc,EAAEwpa,KAAKkvO,MAAMr6nB,KAAK65nB,kBACnE75nB,KAAK65nB,iBAAiBnwmB,MAAMhsB,cAAgB,OAC5CsC,KAAK65nB,iBAAiBnwmB,MAAM4/E,WAAa,SAEzC3nH,EAAEgjlB,SAAS13c,IAAIjtH,KAAK65nB,mBAErB75nB,KAAK4xY,KAAKmuB,eAAe5vU,YAAYnwF,KAAK65nB,kBAE1C75nB,KAAKs6nB,WAAWt6nB,KAAKpQ,QAAQ6N,SAC7B,IAAIisB,EAAQ1pB,KAAK65nB,iBAAiBnwmB,MAC9B1pB,KAAK4xY,KAAKhiZ,QAAQ2qoB,SAAW,GAEhC7wmB,EAAMhjC,MAAQ,OACdgjC,EAAM9iC,OAAS,SAEf8iC,EAAMhjC,MAAQ,OACdgjC,EAAM9iC,OAAS,QAEhB8iC,EAAMs3Z,QAAU,EAEhBhhb,KAAKw6nB,gBAAgBx6nB,KAAK65nB,iBAC3B,EAEAP,YAAa,WACZ,IAAIt5nB,KAAKy5nB,QAAT,CAIA,IAAI1moB,EAAM,IAAIwmoB,OAAO11gB,KAAK7wH,IAAIgN,KAAK65nB,iBAAkB,CACpD18nB,OAAQ,CAAEwkI,IAAK,EAAG4nF,IAAK,GACvBh1C,KAAM,EACNkmd,KAAM,EACNC,UAAW16nB,KAAKpQ,QAAQogB,KACxB2qnB,kBAAkB,EAClBC,mBAAmB,EACnBnvT,WAAW,EACXovT,wBAAwB,EACxBnnT,aAAa,EACbx+U,OAAQ8K,KAAKpQ,QAAQsF,QAAU,GAC/B8zB,gBAAiB,gBAGlBhpB,KAAKy5nB,QAAU1moB,EAEfiN,KAAK4hC,UAIL5hC,KAAKw1Z,KAAK,UAAW,CAAE31M,UAAW9sN,IAElCiN,KAAK86nB,gBACL96nB,KAAKyqG,KAAK,iBAAkBzqG,KAAK+6nB,kBAzBjC,CA0BD,EAEAP,gBAAiB,SAAyBzzoB,GACpCiZ,KAAK45nB,YAAa55nB,KAAK45nB,UAAY,IAAI30kB,iBAAiBjlD,KAAKg7nB,aAAat/kB,KAAK17C,QAGpFA,KAAK45nB,UAAUt0kB,QAAQv+D,EAAM,CAAEw+D,WAAW,EAAMC,SAAS,IAIzDlxD,MAAM8L,UAAUpO,QAAQqO,KAAKtZ,EAAKu4Q,iBAAiB,OAAQt/P,KAAK64nB,qBACjE,EAEAiC,cAAe,WACd,IAAI7B,EAASj5nB,KAETjC,EAAKmwF,YAAY,WACpB,IAGIxyD,EAHAu/lB,EAAgBhC,EAAOQ,QAAQyB,KAAKD,cACnCA,IACL7siB,cAAcrwF,GAGdjU,OAAOO,KAAK4woB,GAAejpoB,QAAQ,SAASxH,GAC3C,IAAI+yC,EAAK09lB,EAAczwoB,GACnB+yC,EAAG1pC,KACF0pC,EAAG1pC,IAAI,aAAcwzM,OACxB3rK,EAAY6B,EAGf,GAGA07lB,EAAOzjO,KAAK,iBAAkB,CAAE95X,UAAWA,IAC5C,EAAG,GACJ,EAEAq/lB,kBAAmB,SAAUhlV,GAC5B,GAAK/1S,KAAK4xY,KAAV,CAIA,IAAIr/X,EAAMgnnB,OAAO11gB,KAAKs3gB,gBAClBC,EAAMp7nB,KAAKq5nB,sBAAwBtjV,EAAGr6Q,UAAU7nC,IAAI0e,EAAI8onB,cAC5D15oB,EAAE2hlB,QAAQr5d,SAASmxhB,EAAK,+CACxBz5oB,EAAEgjlB,SAASE,wBAAwBu2D,GACnCA,EAAI1xmB,MAAM9iC,OAAS,OACnBoZ,KAAK4xY,KAAKwnP,gBAAgBxzb,YAAYz1G,YAAYiriB,GAElDp7nB,KAAKm5nB,eAAiBpjV,EAAGr6Q,UAAU7nC,IAAI0e,EAAI+onB,aAC3Ct7nB,KAAKm5nB,eAAezvmB,MAAMhsB,cAAgB,OAC1CsC,KAAK4xY,KAAKwnP,gBAAgB5zb,WAAWr1G,YAAYnwF,KAAKm5nB,eAXtD,CAYD,EAEA6B,aAAc,SAAsBO,GACnC,IAAK,IAAIl2oB,EAAI,EAAGA,EAAIk2oB,EAAUnnoB,SAAU/O,EAEvC,IADA,IAAIkvU,EAAWgnU,EAAUl2oB,GAChB2gC,EAAI,EAAGA,EAAIuuS,EAASnvQ,WAAWhxD,SAAU4xB,EAAG,CACpD,IAAIj/B,EAAOwtU,EAASnvQ,WAAWp/B,GAE3Bj/B,aAAgBs4Z,iBACnBr/Y,KAAK84nB,gBAAgB/xoB,GACXA,aAAgBQ,aAC1B+M,MAAM8L,UAAUpO,QAAQqO,KACvBtZ,EAAKu4Q,iBAAiB,OACtBt/P,KAAK64nB,qBAGR,CAEF,EAKA2C,YAAa,8CAGbC,WAAY,4CAEZ3C,gBAAiB,SAAyB4C,GACzC,IAAIt9b,EACAp6M,EAAQ03oB,EAAQr0hB,IAAIrjH,MAAMgc,KAAKw7nB,aAC/BG,EAAW,EAyBf,GAvBI33oB,GACHo6M,EAAS,CACRt8I,EAAG99D,EAAM,GACTuC,EAAGvC,EAAM,GACTL,EAAGK,EAAM,IAENgc,KAAK44nB,eAAiB,IACzB8C,EAAQhymB,MAAMs3Z,OAAS,EACvB26M,EAAW,MAGZ33oB,EAAQ03oB,EAAQr0hB,IAAIrjH,MAAMgc,KAAKy7nB,eAE9Br9b,EAAS,CACR73M,EAAGvC,EAAM,GACTL,EAAGK,EAAM,GACT89D,EAAG99D,EAAM,KAIX23oB,EAAW,GAGRv9b,EAAQ,CACX,IAAIw9b,EAAU57nB,KAAK67nB,iBAAiBz9b,GACpCs9b,EAAQhymB,MAAM5gC,SAAW,WAEzB,IAAI0B,EAAMoxoB,EAAU,IAAMD,EAE1B37nB,KAAK24nB,KAAK5koB,IAAIvJ,EAAKkxoB,GAEflxoB,KAAOwV,KAAK04nB,gBAAkB14nB,KAAK04nB,eAAeluoB,KAErDwV,KAAK04nB,eAAeluoB,GAAKwH,QAAQ,SAAUkd,GAAY,OAAOA,EAASwsnB,EAAU,UAC1E17nB,KAAK04nB,eAAeluoB,GAE7B,CACD,EAEAsxoB,WAAY,SAAU19b,EAAQ58L,GAC7B,IAAIhX,EAAMwV,KAAK67nB,iBAAiBz9b,GAC/B29b,EAAgBp6oB,EAAE2hlB,QAAQ5ikB,OAAO,OAElCq7nB,EAAcrymB,MAAM4G,UAAY,OAChCyrmB,EAAcnylB,QAAQ70C,QAAUiL,KAAK44nB,eACrCp3nB,EAAOA,EAAKk6C,KAAK17C,KAAM,KAAM+7nB,GAE7B,IAAK,IAAI12oB,EAAI,EAAGA,EAAI2a,KAAK44nB,iBAAkBvzoB,EAAG,CAC7C,IAAI22oB,EAAOxxoB,EAAM,IAAMnF,EACtBq2oB,EAAU17nB,KAAK24nB,KAAK9koB,IAAImooB,GACrBN,GACHK,EAAc5riB,YAAYnwF,KAAK6sZ,OAAO6uO,MACpCK,EAAcnylB,QAAQ70C,UAExBiL,KAAK04nB,eAAesD,GAAQh8nB,KAAK04nB,eAAesD,IAAS,GACzDh8nB,KAAK04nB,eAAesD,GAAMlooB,KACzB,SAAUlO,GACT,OAAO,SAAU81oB,GAChB91oB,EAAEuqG,YAAYnwF,KAAK6sZ,OAAO6uO,MACxB91oB,EAAEgkD,QAAQ70C,QACPoxB,SAASvgC,EAAEgkD,QAAQ70C,UACvByM,GAEF,EAAEk6C,KAAK17C,KACR,EAAE07C,KAAK17C,KARP,CAQa+7nB,IAGhB,CAKA,OAHK51mB,SAAS41mB,EAAcnylB,QAAQ70C,UACnCpT,EAAEwpa,KAAKl8Y,iBAAiBzN,GAElBu6nB,CACR,EAEAlvO,OAAQ,SAAU6uO,GACjB,IAAIO,EAAgBP,EAAQ9kY,WAAU,GAEtC,OADAqlY,EAAcvymB,MAAM4/E,WAAa,UAC1B2yhB,CACR,EAEAvC,iBAAkB,WAGjB,IAAIwC,EAAYl8nB,KAAK4xY,KAAK5jE,UACzBmuT,EAAgBn8nB,KAAKy5nB,QAAQzrT,UAEzBkuT,GAAcC,IAGlBA,IAAkBD,GAClBC,EAAgBn8nB,KAAKpQ,QAAQ6ooB,gBAI7Bz4nB,KAAKo8nB,kBAAkBD,EAEzB,EAEAC,kBAAmB,SAAUF,GACxBA,IAAcl8nB,KAAKpQ,QAAQ6ooB,gBAC9Bz4nB,KAAKpQ,QAAQ6ooB,cAAgByD,EAC7Bl8nB,KAAKq8nB,aAEP,EAEAz6lB,QAAS,SAAUzkC,GAGlB,GAAI6C,KAAKy5nB,QAAS,CACjBt8nB,EAASA,GAAU6C,KAAK4xY,KAAK5oE,YAC7B,IAAIszT,EAAU,IAAI/C,OAAO11gB,KAAK4lG,OAAOtsN,EAAOwkI,IAAKxkI,EAAOosN,KACvDh1C,EAAO/uL,KAAK+F,MAAMyU,KAAK4xY,KAAK5jE,WAC5BuuT,EAAav8nB,KAAKy5nB,QAAQzrT,UAE3BhuU,KAAKy5nB,QAAQxwT,UAAUqzT,GAGnB/nd,IAASgod,IACZv8nB,KAAKy5nB,QAAQxmT,QAAQ1+J,GAEjBv0K,KAAK25nB,gBAAkB35nB,KAAK05nB,mBAGlC,CAEA/3oB,EAAE22oB,UAAUl4nB,UAAUwhC,QAAQvhC,KAAKL,KAAM7C,EAC1C,EAKA+8nB,UAAW,SAAUhrnB,EAAUia,GAM9B,OALInpB,KAAKy5nB,QACRvqnB,EAAS7O,KAAK8oB,GAAWnpB,KAAM,CAAEjS,OAAQiS,OAEzCA,KAAK2qG,GAAG,UAAWz7F,EAAUia,GAEvBnpB,IACR,IAKDre,EAAEk9Y,UAAU29P,aAAe,SAAU5soB,GACpC,OAAO,IAAIjO,EAAE22oB,UAAUC,aAAa3ooB,EACrC,CAED,CAhwBA,E,kBCAA,IAGIy1F,EAHO,EAAQ,MAGGA,WAEtB3D,EAAOj9F,QAAU4gG,C,yBCIT,SAAWxkG,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,uFAAuFC,MAC3F,KAEJC,YACI,iEAAiED,MAC7D,KAERghI,kBAAkB,EAClB9gI,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNC,EAAG,oBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,aACJC,EAAG,YACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERM,uBAAwB,gBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO19D,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAEnD,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA9EyCC,CAAQ,EAAQ,O,+BCJ1D,IAAI8pQ,EAAe,EAAQ,OAEvBmoY,EAAW,EAAQ,OAEnBh2H,EAAWg2H,EAASnoY,EAAa,6BAErC3sK,EAAOj9F,QAAU,SAA4B8O,EAAMkpoB,GAClD,IAAIC,EAAYruY,EAAa96P,IAAQkpoB,GACrC,MAAyB,mBAAdC,GAA4Bl8H,EAASjtgB,EAAM,gBAAkB,EAChEijoB,EAASkG,GAEVA,CACR,C,kBCdA,IAAInxa,EAAc,EAAQ,OA+B1B7pI,EAAOj9F,QArBP,SAAwBk4oB,EAAUzohB,GAChC,OAAO,SAAS+oG,EAAY2C,GAC1B,GAAkB,MAAd3C,EACF,OAAOA,EAET,IAAKsO,EAAYtO,GACf,OAAO0/a,EAAS1/a,EAAY2C,GAM9B,IAJA,IAAIxrN,EAAS6oN,EAAW7oN,OACpBoC,EAAQ09G,EAAY9/G,GAAU,EAC9ByyO,EAAW/8O,OAAOmzN,IAEd/oG,EAAY19G,MAAYA,EAAQpC,KACa,IAA/CwrN,EAASinB,EAASrwO,GAAQA,EAAOqwO,KAIvC,OAAO5pB,CACT,CACF,C,kBC7BA,IAAI2/a,EAAY,EAAQ,OACpB7qN,EAAY,EAAQ,OACpBujN,EAAW,EAAQ,OAGnBuH,EAAYvH,GAAYA,EAASl9f,MAmBjCA,EAAQykgB,EAAY9qN,EAAU8qN,GAAaD,EAE/Cl7iB,EAAOj9F,QAAU2zI,C,yECMjB,QAJA,SAAqBzyI,GACnB,OAAgB,MAATA,IAAiB,OAASA,EAAMyO,WAAY,OAAWzO,EAChE,C,+BC5BA,IAAI0E,EAAO,EAAQ,MACfyyoB,EAA+B,mBAAXt4oB,QAAkD,iBAAlBA,OAAO,OAE3DuuG,EAAQjpG,OAAOsW,UAAUpZ,SACzBgH,EAASsG,MAAM8L,UAAUpS,OACzB+uoB,EAAqBjzoB,OAAOwY,eAmB5Bs+U,EAAsBm8S,GAbY,WACrC,IAAIzqnB,EAAM,CAAC,EACX,IAGC,IAAK,IAAI1Q,KAFTm7nB,EAAmBzqnB,EAAK,IAAK,CAAEoZ,YAAY,EAAO/lC,MAAO2sB,IAE3CA,EACb,OAAO,EAER,OAAOA,EAAI/rB,IAAM+rB,CAClB,CAAE,MAAOttB,GACR,OAAO,CACR,CACD,CACgDg4oB,GAE5C16nB,EAAiB,SAAUgpC,EAAQ/3C,EAAM5N,EAAOquH,GAnBnC,IAAUl/G,KAoBtBvB,KAAQ+3C,IAnBS,mBADKx2C,EAoBSk/G,IAnBmB,sBAAnBjhB,EAAM1yF,KAAKvL,IAmBIk/G,OAG9C4sO,EACHm8S,EAAmBzxlB,EAAQ/3C,EAAM,CAChC0jC,cAAc,EACdvL,YAAY,EACZ/lC,MAAOA,EACP8lC,UAAU,IAGX6f,EAAO/3C,GAAQ5N,EAEjB,EAEI6lC,EAAmB,SAAU8f,EAAQv4C,GACxC,IAAI+7S,EAAa36S,UAAUC,OAAS,EAAID,UAAU,GAAK,CAAC,EACpDi+B,EAAQ/nC,EAAK0I,GACb+poB,IACH1qmB,EAAQpkC,EAAOqS,KAAK+xB,EAAOtoC,OAAOo4F,sBAAsBnvF,KAEzD,IAAK,IAAI1N,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,GAAK,EACtCid,EAAegpC,EAAQlZ,EAAM/sC,GAAI0N,EAAIq/B,EAAM/sC,IAAKypT,EAAW18Q,EAAM/sC,IAEnE,EAEAmmC,EAAiBo1T,sBAAwBA,EAEzCl/P,EAAOj9F,QAAU+mC,C,+BCxDjB,IAAIyxmB,EAAqB,EAAQ,OAG7B52hB,EAFc,EAAQ,OAEGr4G,OAAO,SAAU,aAK9CvJ,EAAQid,EAAI5X,OAAOu7C,qBAAuB,SAA6BvqB,GACrE,OAAOminB,EAAmBninB,EAAGurF,EAC/B,C,gBCVA6vB,QAAQx0C,OAAO,kBAAmB,IAAI/7F,MAAM,wBAAyB,MAAMihI,UAAU,iBAAkB,CACrG,aAAc,UAAW,YAAa,wBAAyB,SAASV,EAAY2J,EAASmhM,EAAWksU,GACtG,MAAO,CACLv0mB,MAAO,CACLw0mB,eAAgB,IAChBC,wBAAyB,IACzBC,uBAAwB,IACxBC,uBAAwB,IACxBC,gCAAiC,IACjCC,6BAA8B,KAEhCp0gB,KAAM,SAASzgG,EAAO+6O,EAAM36I,GAC1B,IAAI00gB,EAAiBC,EAAeC,EAAkB73kB,EAAW83kB,EAA+BC,EAA8BC,EAA8BC,EAAuC7/kB,EAASt3D,EAAQo3oB,EAAgBv3oB,EAAWyG,EAAa+woB,EAAgBC,EAAyBC,EAAyBC,EAAmBC,EAkE7T3piB,EAAMxwD,EACpBk+K,EAAOhzL,EAAUuuC,EA+FvB,OAjKA0gkB,EAAgBnogB,QAAQ5vI,QAAQupI,GAChCougB,EAAiB,KACjBC,EAAgB,KAChBP,EAAmB,KACnB73kB,EAAY,KACZk4kB,GAAiB,EACjBI,GAAoB,EACpBD,EAA0B,KAC1BT,GAAgB,EAChB92oB,EAAS,SAAS88Q,GAEhB,OADAA,EAAOA,EAAK,IAAMA,EACd39Q,MAAM29Q,EAAK78Q,cACN68Q,EAAKj7Q,SAASC,gBAAgBuD,aAE9By3Q,EAAK78Q,YAEhB,EACAJ,EAAY,SAASi9Q,GACnB,GAAKA,EAAK,GAAG92Q,wBAAyB82Q,EAAKv6Q,IAAI,QAG/C,OAAOu6Q,EAAK,GAAG92Q,wBAAwB5C,IAAMkD,EAAYw2Q,EAC3D,EACAx2Q,EAAc,SAASw2Q,GAErB,OADAA,EAAOA,EAAK,IAAMA,EACd39Q,MAAMoB,OAAO+F,aACRw2Q,EAAKj7Q,SAASC,gBAAgBuE,UAE9By2Q,EAAKz8Q,cAAcC,YAAYgG,WAE1C,EACAgxD,EAAU,WACR,IAAIoglB,EAAiBC,EAAoBC,EAiBzC,OAhBI14kB,IAAcu4kB,GAChBC,EAAkB13oB,EAAOk/D,GAAa54D,EAAY44D,EAAU,GAAGr9D,SAASC,iBACxE81oB,EAAgB/3oB,EAAUi9Q,GAAQ98Q,EAAO88Q,KAEzC46X,EAAkB13oB,EAAOk/D,GACzBy4kB,EAAqB,OACQ,IAAzB93oB,EAAUq/D,KACZy4kB,EAAqB93oB,EAAUq/D,IAEjC04kB,EAAgB/3oB,EAAUi9Q,GAAQ66X,EAAqB33oB,EAAO88Q,IAE5D06X,IACFI,EAAgB53oB,GAAQ88Q,EAAK,GAAGz8Q,eAAiBy8Q,EAAK,GAAGj7Q,UAAUC,kBAEzD81oB,EAAgBF,GACA13oB,EAAOk/D,GAAam4kB,EAAiB,GAE/DN,GAAmB,EACfO,EACEv1mB,EAAMolG,SAAW7H,EAAW6H,QACvBplG,EAAMw0mB,iBAENx0mB,EAAMqlG,OAAOrlG,EAAMw0mB,qBAJ9B,IAQIO,GACF1sU,EAAUruR,OAAO+6lB,GAEZC,GAAmB,EAE9B,EA2B6B,MAAzBT,IA1BgBxoiB,EA2BCx2C,EA3BKha,EA2BIg5lB,EAzB5Bv/jB,EAAU,KACVvuC,EAAW,EACXgzL,EAAQ,WAIN,OAHAhzL,GAAW,IAAIvmB,MAAO48F,UACtBurN,EAAUruR,OAAOg7B,GACjBA,EAAU,KACH+2B,EAAKr0F,MACd,EAkBA69C,EAjBO,WACL,IAAIp1C,EAAK+4B,EAGT,OAFA/4B,GAAM,IAAID,MAAO48F,WACjB5jE,EAAYqC,GAAQp7B,EAAMsmB,KACT,GACf4hS,EAAUruR,OAAOg7B,GACjBA,EAAU,KACVvuC,EAAWtmB,EACJ4rF,EAAKr0F,QAEPs9D,OAAL,EACSA,EAAUqzP,EAAU5uG,EAAOvgL,EAAW,EAGnD,GAKFlZ,EAAM69F,IAAI,WAAY,WAMpB,GALA1gE,EAAUo/M,OAAO,SAAUhnN,GACI,MAA3BiglB,IACFA,IACAA,EAA0B,MAExBT,EACF,OAAO1sU,EAAUruR,OAAO+6lB,EAE5B,GACAI,EAA+B,SAAS37nB,GACtC,OAAO87nB,EAAiBttnB,WAAWxO,IAAM,CAC3C,EACAwmB,EAAMw6M,OAAO,yBAA0B26Z,GACvCA,EAA6Bn1mB,EAAM00mB,wBACnCQ,EAA+B,SAAS17nB,GAEtC,IADA+7nB,GAAiB/7nB,IACIw7nB,EAEnB,OADAA,GAAmB,EACZz/kB,GAEX,EACAv1B,EAAMw6M,OAAO,yBAA0B06Z,GACvCA,EAA6Bl1mB,EAAM20mB,wBACnCS,EAAwC,SAAS57nB,GAC/C,OAAOi8nB,EAAoBj8nB,CAC7B,EACAwmB,EAAMw6M,OAAO,kCAAmC46Z,GAChDA,EAAsCp1mB,EAAM40mB,kCAC5CE,EAAkB,SAASgB,GAKzB,GAJiB,MAAb34kB,GACFA,EAAUo/M,OAAO,SAAUhnN,GAE7B4H,EAAY24kB,EACQ,MAAhBA,EACF,OAAO34kB,EAAUpK,KAAK,SAAUwC,EAEpC,GACgBmglB,GACZ11mB,EAAM60mB,+BACRW,EAA0Bj4gB,EAAWM,IAAI79F,EAAM60mB,6BAA8Bt/kB,IAE/E0/kB,EAAgC,SAASa,GACvC,GAAqB,MAAhBA,GAAiD,IAAxBA,EAAarqoB,OAA3C,CAUA,GAPIqqoB,EAAah2hB,UAAsC,IAA1Bg2hB,EAAah2hB,SACxCg2hB,EAAevogB,QAAQ5vI,QAAQm4oB,GACS,mBAAxBA,EAAalugB,OAC7BkugB,EAAevogB,QAAQ5vI,QAAQm4oB,EAAaA,EAAarqoB,OAAS,IACjC,iBAAjBqqoB,IAChBA,EAAevogB,QAAQ5vI,QAAQmC,SAAS8U,cAAckhoB,KAEpC,MAAhBA,EACF,OAAOhB,EAAgBgB,GAEvB,MAAM,IAAIl3nB,MAAM,+CAXlB,CAaF,EACAohB,EAAMw6M,OAAO,0BAA2By6Z,GACxCA,EAA8Bj1mB,EAAMy0mB,yBAA2B,IAC7B,MAA9Br0gB,EAAM21gB,sBACRjB,EAAgBvngB,QAAQ5vI,QAAQo9Q,EAAKj8Q,WAEG,MAAtCshI,EAAM41gB,+BACRX,EAAiBr1mB,EAAM2lG,MAAMvF,EAAM41gB,+BAE9BjB,EAAgB1sU,EAAU,WAI/B,OAHIgtU,GACF9/kB,IAEK8yQ,EAAUruR,OAAO+6lB,EACzB,EACH,EAEJ,IAGqEh8iB,EAAOj9F,UAAYA,IACxFi9F,EAAOj9F,QAAU,kB,6BCjLnB,IAGIm6oB,EAAiB,4BAOjB5mjB,EAAmB,iBAGnBqxK,EAAU,qBACVw1Y,EAAW,iBACXC,EAAU,mBACVC,EAAU,gBACVC,EAAW,iBACX11Y,EAAU,oBAEV71B,EAAS,eACTwra,EAAY,kBACZ11Y,EAAY,kBACZ71B,EAAa,mBACbwra,EAAY,kBACZvra,EAAS,eACTwra,EAAY,kBAEZvra,EAAa,mBAEbwra,EAAiB,uBACjBvra,EAAc,oBAkBdspT,EAAe,8BAGfzc,EAAW,mBAGXl4S,EAAiB,CAAC,EACtBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAe6gC,GAAW7gC,EAAeq2a,GACzCr2a,EAAe42a,GAAkB52a,EAAes2a,GAChDt2a,EAAeqL,GAAerL,EAAeu2a,GAC7Cv2a,EAAew2a,GAAYx2a,EAAe8gC,GAC1C9gC,EAAeiL,GAAUjL,EAAey2a,GACxCz2a,EAAe+gC,GAAa/gC,EAAe02a,GAC3C12a,EAAemL,GAAUnL,EAAe22a,GACxC32a,EAAeoL,IAAc,EAG7B,IAAI2rB,EAA8B,iBAAV,EAAA59O,GAAsB,EAAAA,GAAU,EAAAA,EAAO7X,SAAWA,QAAU,EAAA6X,EAGhF69O,EAA0B,iBAARl9J,MAAoBA,MAAQA,KAAKx4F,SAAWA,QAAUw4F,KAGxE55D,EAAO62N,GAAcC,GAAY/zI,SAAS,cAATA,GAGjCkrB,EAA4ClyI,IAAYA,EAAQgkH,UAAYhkH,EAG5EmyI,EAAaD,GAA4Cj1C,IAAWA,EAAO+mB,UAAY/mB,EAMvF29iB,EAHgBzogB,GAAcA,EAAWnyI,UAAYkyI,GAGtB4oH,EAAW9kH,QAG1C66f,EAAY,WACd,IACE,OAAO+J,GAAeA,EAAY3pX,QAAQ,OAC5C,CAAE,MAAO1wR,GAAI,CACf,CAJe,GAOXuwoB,EAAmBD,GAAYA,EAASE,aAY5C,SAASzuH,EAAU1yf,EAAO2/F,GAIxB,IAHA,IAAIx9G,GAAS,EACTpC,EAASigB,EAAQA,EAAMjgB,OAAS,IAE3BoC,EAAQpC,GACf,GAAI4/G,EAAU3/F,EAAM7d,GAAQA,EAAO6d,GACjC,OAAO,EAGX,OAAO,CACT,CAqDA,SAASirnB,EAAa35oB,GAGpB,IAAIwN,GAAS,EACb,GAAa,MAATxN,GAA0C,mBAAlBA,EAAMqB,SAChC,IACEmM,KAAYxN,EAAQ,GACtB,CAAE,MAAOX,GAAI,CAEf,OAAOmO,CACT,CASA,SAASs+a,EAAW1+a,GAClB,IAAIyD,GAAS,EACTrD,EAASmB,MAAMvB,EAAIggB,MAKvB,OAHAhgB,EAAIf,QAAQ,SAASrM,EAAO6E,GAC1B2I,IAASqD,GAAS,CAAChM,EAAK7E,EAC1B,GACOwN,CACT,CAuBA,SAASu+a,EAAW39a,GAClB,IAAIyC,GAAS,EACTrD,EAASmB,MAAMP,EAAIgf,MAKvB,OAHAhf,EAAI/B,QAAQ,SAASrM,GACnBwN,IAASqD,GAAS7Q,CACpB,GACOwN,CACT,CAGA,IASM0c,EAjCW6kF,EAAMtrG,EAwBnBm2oB,EAAajroB,MAAM8L,UACnBizT,EAAY5nN,SAASrrG,UACrBwhF,EAAc93F,OAAOsW,UAGrBo/nB,EAAa92mB,EAAK,sBAGlBw0f,GACErtgB,EAAM,SAASwV,KAAKm6mB,GAAcA,EAAWn1oB,MAAQm1oB,EAAWn1oB,KAAKq8G,UAAY,KACvE,iBAAmB72F,EAAO,GAItCyjT,EAAeD,EAAUrsU,SAGzB4E,EAAiBg2F,EAAYh2F,eAO7BssU,EAAiBt2O,EAAY56F,SAG7Bo2hB,EAAatrf,OAAO,IACtBwhS,EAAajzT,KAAKzU,GAAgB7H,QAzNjB,sBAyNuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5ES,EAASkkC,EAAKlkC,OACd6gG,EAAa38D,EAAK28D,WAClBlD,EAAuBP,EAAYO,qBACnCp1D,EAASwymB,EAAWxymB,OAGpBypG,GA/Da9hC,EA+DQ5qG,OAAOO,KA/DTjB,EA+DeU,OA9D7B,SAAS6tE,GACd,OAAO+8B,EAAKtrG,EAAUuuE,GACxB,GA+DEy1H,EAAW0sV,GAAUpxf,EAAM,YAC3B11B,GAAM8mhB,GAAUpxf,EAAM,OACtB/xB,GAAUmjhB,GAAUpxf,EAAM,WAC1Bx1B,GAAM4mhB,GAAUpxf,EAAM,OACtBqmD,GAAU+qc,GAAUpxf,EAAM,WAC1BgzL,GAAeo+T,GAAUhwhB,OAAQ,UAGjCgqO,GAAqBN,GAASpmC,GAC9B2mC,GAAgBP,GAASxgO,IACzBghO,GAAoBR,GAAS78N,IAC7Bs9N,GAAgBT,GAAStgO,IACzBghO,GAAoBV,GAASzkJ,IAG7ByzC,GAAch+H,EAASA,EAAO4b,eAAYtJ,EAC1C66a,GAAgBnvT,GAAcA,GAAYm0F,aAAU7/M,EASxD,SAASu5a,GAAKnrX,GACZ,IAAI1uD,GAAS,EACTpC,EAAS8wD,EAAUA,EAAQ9wD,OAAS,EAGxC,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAyFA,SAASgklB,GAAU1wkB,GACjB,IAAI1uD,GAAS,EACTpC,EAAS8wD,EAAUA,EAAQ9wD,OAAS,EAGxC,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAuGA,SAAS6tlB,GAASv6kB,GAChB,IAAI1uD,GAAS,EACTpC,EAAS8wD,EAAUA,EAAQ9wD,OAAS,EAGxC,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAsFA,SAASk1d,GAASl+e,GAChB,IAAIpyB,GAAS,EACTpC,EAASw0B,EAASA,EAAOx0B,OAAS,EAGtC,IADA4L,KAAKi4T,SAAW,IAAIwnU,KACXjpoB,EAAQpC,GACf4L,KAAK1M,IAAIs1B,EAAOpyB,GAEpB,CAyCA,SAAS8xP,GAAMpjM,GACbllD,KAAKi4T,SAAW,IAAI29T,GAAU1wkB,EAChC,CAsHA,SAASw6c,GAAarrf,EAAO7pB,GAE3B,IADA,IAAI4J,EAASigB,EAAMjgB,OACZA,KACL,GAAImlB,GAAGlF,EAAMjgB,GAAQ,GAAI5J,GACvB,OAAO4J,EAGX,OAAQ,CACV,CA4BA,SAASozG,GAAY7hH,EAAOk7D,EAAOu4K,EAAYswB,EAASnjN,GACtD,OAAI5gD,IAAUk7D,IAGD,MAATl7D,GAA0B,MAATk7D,IAAmB5wC,GAAStqB,KAAW4iO,GAAa1nK,GAChEl7D,GAAUA,GAASk7D,GAAUA,EAoBxC,SAAyBvV,EAAQuV,EAAO+wX,EAAWx4M,EAAYswB,EAASnjN,GACtE,IAAIm5lB,EAAW3vnB,GAAQu7B,GACnBq0lB,EAAW5vnB,GAAQ8wC,GACnB++kB,EAASf,EACTgB,EAAShB,EAERa,IAEHE,GADAA,EAASzra,GAAO7oL,KACG+9M,EAAUE,EAAYq2Y,GAEtCD,IAEHE,GADAA,EAAS1ra,GAAOtzK,KACGwoM,EAAUE,EAAYs2Y,GAE3C,IAAIC,EAAWF,GAAUr2Y,IAAc+1Y,EAAah0lB,GAChDy0lB,EAAWF,GAAUt2Y,IAAc+1Y,EAAaz+kB,GAChDm/kB,EAAYJ,GAAUC,EAE1B,GAAIG,IAAcF,EAEhB,OADAv5lB,IAAUA,EAAQ,IAAI+hN,IACdo3Y,GAAYlK,GAAalqlB,GAC7BkmY,GAAYlmY,EAAQuV,EAAO+wX,EAAWx4M,EAAYswB,EAASnjN,GAmKnE,SAAoB+E,EAAQuV,EAAOmhC,EAAK4vV,EAAWx4M,EAAYswB,EAASnjN,GACtE,OAAQy7C,GACN,KAAK6xI,EACH,GAAKvoL,EAAO+hJ,YAAcxsI,EAAMwsI,YAC3B/hJ,EAAO01D,YAAcngD,EAAMmgD,WAC9B,OAAO,EAET11D,EAASA,EAAO3mD,OAChBk8D,EAAQA,EAAMl8D,OAEhB,KAAKy6oB,EACH,QAAK9zlB,EAAO+hJ,YAAcxsI,EAAMwsI,aAC3BukP,EAAU,IAAIvsV,EAAW/5C,GAAS,IAAI+5C,EAAWxkC,KAKxD,KAAKi+kB,EACL,KAAKC,EACL,KAAKE,EAGH,OAAO1lnB,IAAI+xB,GAASuV,GAEtB,KAAKm+kB,EACH,OAAO1zlB,EAAO/3C,MAAQstD,EAAMttD,MAAQ+3C,EAAO8kD,SAAWvvC,EAAMuvC,QAE9D,KAAK8uiB,EACL,KAAKC,EAIH,OAAO7zlB,GAAWuV,EAAQ,GAE5B,KAAK4yK,EACH,IAAIpL,EAAUopN,EAEhB,KAAK99M,EACH,IAAIk+M,EA5hCiB,EA4hCLnoL,EAGhB,GAFArhC,IAAYA,EAAUqpN,GAElBpmY,EAAOv4B,MAAQ8tC,EAAM9tC,OAAS8+Z,EAChC,OAAO,EAGT,IAAIjrY,EAAUL,EAAM1yC,IAAIy3C,GACxB,GAAI1E,EACF,OAAOA,GAAWia,EAEpB6oM,GAxiCuB,EA2iCvBnjN,EAAMxyC,IAAIu3C,EAAQuV,GAClB,IAAI1tD,EAASq+a,GAAYnpN,EAAQ/8K,GAAS+8K,EAAQxnK,GAAQ+wX,EAAWx4M,EAAYswB,EAASnjN,GAE1F,OADAA,EAAc,OAAE+E,GACTn4C,EAET,IA3hCY,kBA4hCV,GAAIw+a,GACF,OAAOA,GAActxa,KAAKirC,IAAWqmY,GAActxa,KAAKwgD,GAG9D,OAAO,CACT,CAjOQo/kB,CAAW30lB,EAAQuV,EAAO++kB,EAAQhuN,EAAWx4M,EAAYswB,EAASnjN,GAExE,KAt1ByB,EAs1BnBmjN,GAAiC,CACrC,IAAIw2Y,EAAeJ,GAAYl0oB,EAAeyU,KAAKirC,EAAQ,eACvD60lB,EAAeJ,GAAYn0oB,EAAeyU,KAAKwgD,EAAO,eAE1D,GAAIq/kB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe50lB,EAAO3lD,QAAU2lD,EAC/C+0lB,EAAeF,EAAet/kB,EAAMl7D,QAAUk7D,EAGlD,OADAta,IAAUA,EAAQ,IAAI+hN,IACfspL,EAAUwuN,EAAcC,EAAcjna,EAAYswB,EAASnjN,EACpE,CACF,CACA,QAAKy5lB,IAGLz5lB,IAAUA,EAAQ,IAAI+hN,IAgOxB,SAAsBh9M,EAAQuV,EAAO+wX,EAAWx4M,EAAYswB,EAASnjN,GACnE,IAAIsrY,EAtkCqB,EAskCTnoL,EACZr3N,EAAWhoC,GAAKihD,GAChBg1lB,EAAYjumB,EAASj+B,OAIzB,GAAIksoB,GAHWj2oB,GAAKw2D,GACKzsD,SAEMy9a,EAC7B,OAAO,EAGT,IADA,IAAIr7a,EAAQ8poB,EACL9poB,KAAS,CACd,IAAIhM,EAAM6nC,EAAS77B,GACnB,KAAMq7a,EAAYrnb,KAAOq2D,EAAQj1D,EAAeyU,KAAKwgD,EAAOr2D,IAC1D,OAAO,CAEX,CAEA,IAAIo8C,EAAUL,EAAM1yC,IAAIy3C,GACxB,GAAI1E,GAAWL,EAAM1yC,IAAIgtD,GACvB,OAAOja,GAAWia,EAEpB,IAAI1tD,GAAS,EACbozC,EAAMxyC,IAAIu3C,EAAQuV,GAClBta,EAAMxyC,IAAI8sD,EAAOvV,GAGjB,IADA,IAAIi1lB,EAAW1uN,IACNr7a,EAAQ8poB,GAAW,CAE1B,IAAI93S,EAAWl9S,EADf9gD,EAAM6nC,EAAS77B,IAEX8wgB,EAAWzmd,EAAMr2D,GAErB,GAAI4uO,EACF,IAAImuS,EAAW11F,EACXz4M,EAAWkuS,EAAU9+K,EAAUh+V,EAAKq2D,EAAOvV,EAAQ/E,GACnD6yL,EAAWovH,EAAU8+K,EAAU98gB,EAAK8gD,EAAQuV,EAAOta,GAGzD,UAAmBzvC,IAAbywgB,EACG/+K,IAAa8+K,GAAY11F,EAAUppF,EAAU8+K,EAAUluS,EAAYswB,EAASnjN,GAC7Eghe,GACD,CACLp0gB,GAAS,EACT,KACF,CACAotoB,IAAaA,EAAkB,eAAP/1oB,EAC1B,CACA,GAAI2I,IAAWotoB,EAAU,CACvB,IAAIC,EAAUl1lB,EAAO7qC,YACjBggoB,EAAU5/kB,EAAMpgD,YAGhB+/nB,GAAWC,KACV,gBAAiBn1lB,MAAU,gBAAiBuV,IACzB,mBAAX2/kB,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDttoB,GAAS,EAEb,CAGA,OAFAozC,EAAc,OAAE+E,GAChB/E,EAAc,OAAEsa,GACT1tD,CACT,CA7RSutoB,CAAap1lB,EAAQuV,EAAO+wX,EAAWx4M,EAAYswB,EAASnjN,GACrE,CA3DSo6lB,CAAgBh7oB,EAAOk7D,EAAO2mD,GAAa4xH,EAAYswB,EAASnjN,GACzE,CA0HA,SAASirY,GAAYn9Z,EAAOwsC,EAAO+wX,EAAWx4M,EAAYswB,EAASnjN,GACjE,IAAIsrY,EAx6BqB,EAw6BTnoL,EACZu9Q,EAAY5yf,EAAMjgB,OAClB8ygB,EAAYrmd,EAAMzsD,OAEtB,GAAI6ygB,GAAaC,KAAer1F,GAAaq1F,EAAYD,GACvD,OAAO,EAGT,IAAIrge,EAAUL,EAAM1yC,IAAIwgB,GACxB,GAAIuyB,GAAWL,EAAM1yC,IAAIgtD,GACvB,OAAOja,GAAWia,EAEpB,IAAIrqD,GAAS,EACTrD,GAAS,EACT60I,EAv7BuB,EAu7Bf0hH,EAAoC,IAAIo9Q,QAAWhwgB,EAM/D,IAJAyvC,EAAMxyC,IAAIsgB,EAAOwsC,GACjBta,EAAMxyC,IAAI8sD,EAAOxsC,KAGR7d,EAAQywgB,GAAW,CAC1B,IAAII,EAAWhzf,EAAM7d,GACjB8wgB,EAAWzmd,EAAMrqD,GAErB,GAAI4iO,EACF,IAAImuS,EAAW11F,EACXz4M,EAAWkuS,EAAUD,EAAU7wgB,EAAOqqD,EAAOxsC,EAAOkyB,GACpD6yL,EAAWiuS,EAAUC,EAAU9wgB,EAAO6d,EAAOwsC,EAAOta,GAE1D,QAAiBzvC,IAAbywgB,EAAwB,CAC1B,GAAIA,EACF,SAEFp0gB,GAAS,EACT,KACF,CAEA,GAAI60I,GACF,IAAK++X,EAAUlmd,EAAO,SAASymd,EAAUE,GACnC,IAAKx/X,EAAKr0I,IAAI6zgB,KACTH,IAAaC,GAAY11F,EAAUy1F,EAAUC,EAAUluS,EAAYswB,EAASnjN,IAC/E,OAAOyhG,EAAK10I,IAAIk0gB,EAEpB,GAAI,CACNr0gB,GAAS,EACT,KACF,OACK,GACDk0gB,IAAaC,IACX11F,EAAUy1F,EAAUC,EAAUluS,EAAYswB,EAASnjN,GACpD,CACLpzC,GAAS,EACT,KACF,CACF,CAGA,OAFAozC,EAAc,OAAElyB,GAChBkyB,EAAc,OAAEsa,GACT1tD,CACT,CA2KA,SAAS+nN,GAAWnoN,EAAKvI,GACvB,IAAIuL,EAAOhD,EAAIklU,SACf,OA0EF,SAAmBtyU,GACjB,IAAIqqB,SAAcrqB,EAClB,MAAgB,UAARqqB,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrqB,EACU,OAAVA,CACP,CA/ESqyU,CAAUxtU,GACbuL,EAAmB,iBAAPvL,EAAkB,SAAW,QACzCuL,EAAKhD,GACX,CAUA,SAAS+mhB,GAAUxue,EAAQ9gD,GACzB,IAAI7E,EAjgCN,SAAkB2lD,EAAQ9gD,GACxB,OAAiB,MAAV8gD,OAAiBx0C,EAAYw0C,EAAO9gD,EAC7C,CA+/BcoiS,CAASthP,EAAQ9gD,GAC7B,OA7SF,SAAsB7E,GACpB,SAAKsqB,GAAStqB,IAqXhB,SAAkB+uG,GAChB,QAASwob,GAAeA,KAAcxob,CACxC,CAvX0BksiB,CAASj7oB,MAGlBktB,GAAWltB,IAAU25oB,EAAa35oB,GAAUy3hB,EAAaD,GACzDj7hB,KAAKsxO,GAAS7tO,GAC/B,CAuSSk7oB,CAAal7oB,GAASA,OAAQmR,CACvC,CAnyBAu5a,GAAKjwa,UAAU26D,MAnEf,WACE/6D,KAAKi4T,SAAWv8G,GAAeA,GAAa,MAAQ,CAAC,CACvD,EAkEA20N,GAAKjwa,UAAkB,OAtDvB,SAAoB5V,GAClB,OAAOwV,KAAKrM,IAAInJ,WAAewV,KAAKi4T,SAASztU,EAC/C,EAqDA6lb,GAAKjwa,UAAUvM,IA1Cf,SAAiBrJ,GACf,IAAIuL,EAAOiK,KAAKi4T,SAChB,GAAIv8G,GAAc,CAChB,IAAIvoN,EAAS4C,EAAKvL,GAClB,OAAO2I,IAAWyroB,OAAiB9noB,EAAY3D,CACjD,CACA,OAAOvH,EAAeyU,KAAKtK,EAAMvL,GAAOuL,EAAKvL,QAAOsM,CACtD,EAoCAu5a,GAAKjwa,UAAUzM,IAzBf,SAAiBnJ,GACf,IAAIuL,EAAOiK,KAAKi4T,SAChB,OAAOv8G,QAA6B5kN,IAAdf,EAAKvL,GAAqBoB,EAAeyU,KAAKtK,EAAMvL,EAC5E,EAuBA6lb,GAAKjwa,UAAUrM,IAXf,SAAiBvJ,EAAK7E,GAGpB,OAFWqa,KAAKi4T,SACXztU,GAAQkxN,SAA0B5kN,IAAVnR,EAAuBi5oB,EAAiBj5oB,EAC9Dqa,IACT,EAmHA41nB,GAAUx1nB,UAAU26D,MAjFpB,WACE/6D,KAAKi4T,SAAW,EAClB,EAgFA29T,GAAUx1nB,UAAkB,OArE5B,SAAyB5V,GACvB,IAAIuL,EAAOiK,KAAKi4T,SACZzhU,EAAQkpgB,GAAa3pgB,EAAMvL,GAE/B,QAAIgM,EAAQ,IAIRA,GADYT,EAAK3B,OAAS,EAE5B2B,EAAKsM,MAEL0qB,EAAO1sB,KAAKtK,EAAMS,EAAO,GAEpB,GACT,EAwDAo/nB,GAAUx1nB,UAAUvM,IA7CpB,SAAsBrJ,GACpB,IAAIuL,EAAOiK,KAAKi4T,SACZzhU,EAAQkpgB,GAAa3pgB,EAAMvL,GAE/B,OAAOgM,EAAQ,OAAIM,EAAYf,EAAKS,GAAO,EAC7C,EAyCAo/nB,GAAUx1nB,UAAUzM,IA9BpB,SAAsBnJ,GACpB,OAAOk1gB,GAAa1/f,KAAKi4T,SAAUztU,IAAQ,CAC7C,EA6BAoroB,GAAUx1nB,UAAUrM,IAjBpB,SAAsBvJ,EAAK7E,GACzB,IAAIoQ,EAAOiK,KAAKi4T,SACZzhU,EAAQkpgB,GAAa3pgB,EAAMvL,GAO/B,OALIgM,EAAQ,EACVT,EAAKjC,KAAK,CAACtJ,EAAK7E,IAEhBoQ,EAAKS,GAAO,GAAK7Q,EAEZqa,IACT,EAiGAy/nB,GAASr/nB,UAAU26D,MA/DnB,WACE/6D,KAAKi4T,SAAW,CACd,KAAQ,IAAIo4G,GACZ,IAAO,IAAKr9a,IAAO4ioB,IACnB,OAAU,IAAIvlN,GAElB,EA0DAovN,GAASr/nB,UAAkB,OA/C3B,SAAwB5V,GACtB,OAAO0wN,GAAWl7M,KAAMxV,GAAa,OAAEA,EACzC,EA8CAi1oB,GAASr/nB,UAAUvM,IAnCnB,SAAqBrJ,GACnB,OAAO0wN,GAAWl7M,KAAMxV,GAAKqJ,IAAIrJ,EACnC,EAkCAi1oB,GAASr/nB,UAAUzM,IAvBnB,SAAqBnJ,GACnB,OAAO0wN,GAAWl7M,KAAMxV,GAAKmJ,IAAInJ,EACnC,EAsBAi1oB,GAASr/nB,UAAUrM,IAVnB,SAAqBvJ,EAAK7E,GAExB,OADAu1N,GAAWl7M,KAAMxV,GAAKuJ,IAAIvJ,EAAK7E,GACxBqa,IACT,EAwDA8mgB,GAAS1mgB,UAAU9M,IAAMwzgB,GAAS1mgB,UAAUtM,KAnB5C,SAAqBnO,GAEnB,OADAqa,KAAKi4T,SAASlkU,IAAIpO,EAAOi5oB,GAClB5+nB,IACT,EAiBA8mgB,GAAS1mgB,UAAUzM,IANnB,SAAqBhO,GACnB,OAAOqa,KAAKi4T,SAAStkU,IAAIhO,EAC3B,EA4FA2iQ,GAAMloP,UAAU26D,MApEhB,WACE/6D,KAAKi4T,SAAW,IAAI29T,EACtB,EAmEAttY,GAAMloP,UAAkB,OAxDxB,SAAqB5V,GACnB,OAAOwV,KAAKi4T,SAAiB,OAAEztU,EACjC,EAuDA89P,GAAMloP,UAAUvM,IA5ChB,SAAkBrJ,GAChB,OAAOwV,KAAKi4T,SAASpkU,IAAIrJ,EAC3B,EA2CA89P,GAAMloP,UAAUzM,IAhChB,SAAkBnJ,GAChB,OAAOwV,KAAKi4T,SAAStkU,IAAInJ,EAC3B,EA+BA89P,GAAMloP,UAAUrM,IAnBhB,SAAkBvJ,EAAK7E,GACrB,IAAI4mC,EAAQvsB,KAAKi4T,SACjB,GAAI1rS,aAAiBqpmB,GAAW,CAC9B,IAAI/2a,EAAQtyL,EAAM0rS,SAClB,IAAKjlU,IAAQ6rN,EAAMzqN,OAAS49a,IAE1B,OADAnzN,EAAM/qN,KAAK,CAACtJ,EAAK7E,IACVqa,KAETusB,EAAQvsB,KAAKi4T,SAAW,IAAIwnU,GAAS5gb,EACvC,CAEA,OADAtyL,EAAMx4B,IAAIvJ,EAAK7E,GACRqa,IACT,EAmdA,IAAIm0N,GAtZJ,SAAoBxuO,GAClB,OAAOuyU,EAAe73T,KAAK1a,EAC7B,EAubA,SAAS46nB,GAAQ56nB,EAAOyO,GAEtB,SADAA,EAAmB,MAAVA,EAAiB4jF,EAAmB5jF,KAE1B,iBAATzO,GAAqB+6gB,EAASx+gB,KAAKyD,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyO,CAC7C,CAgDA,SAASo/N,GAAS9+H,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO4+N,EAAajzT,KAAKq0F,EAC3B,CAAE,MAAO1vG,GAAI,CACb,IACE,OAAQ0vG,EAAO,EACjB,CAAE,MAAO1vG,GAAI,CACf,CACA,MAAO,EACT,CAkCA,SAASu0B,GAAG5zB,EAAOk7D,GACjB,OAAOl7D,IAAUk7D,GAAUl7D,GAAUA,GAASk7D,GAAUA,CAC1D,EAlIKusI,GAAY+mC,GAAO,IAAI/mC,EAAS,IAAI9xD,YAAY,MAAQu4F,GACxD7gO,IAAOmhO,GAAO,IAAInhO,KAAQygO,GAC1B98N,IAAWw9N,GAAOx9N,GAAQC,YAAc88N,GACxCxgO,IAAOihO,GAAO,IAAIjhO,KAAQygO,GAC1B5kJ,IAAWolJ,GAAO,IAAIplJ,KAAY6kJ,KACrCO,GAAS,SAASxuO,GAChB,IAAIwN,EAAS+kU,EAAe73T,KAAK1a,GAC7Bs5N,EAAO9rN,GAAUo2P,EAAY5jQ,EAAM8a,iBAAc3J,EACjDs9N,EAAanV,EAAOuU,GAASvU,QAAQnoN,EAEzC,GAAIs9N,EACF,OAAQA,GACN,KAAKN,GAAoB,OAAOD,EAChC,KAAKE,GAAe,OAAON,EAC3B,KAAKO,GAAmB,OAAON,EAC/B,KAAKO,GAAe,OAAON,EAC3B,KAAKO,GAAmB,OAAON,EAGnC,OAAOzgO,CACT,GA+JF,IAAI4c,GAAUzb,MAAMyb,QA2BpB,SAASw7M,GAAY5lO,GACnB,OAAgB,MAATA,GAAiB2iO,GAAS3iO,EAAMyO,UAAYye,GAAWltB,EAChE,CAsFA,SAASktB,GAAWltB,GAGlB,IAAIq8F,EAAM/xE,GAAStqB,GAASuyU,EAAe73T,KAAK1a,GAAS,GACzD,OAAOq8F,GAAOsnK,GA18CH,8BA08CctnK,CAC3B,CA4BA,SAASsmI,GAAS3iO,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASqyF,CAC7C,CA2BA,SAAS/nE,GAAStqB,GAChB,IAAIqqB,SAAcrqB,EAClB,QAASA,IAAkB,UAARqqB,GAA4B,YAARA,EACzC,CA0BA,SAASu4M,GAAa5iO,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAmBA,IAAI6voB,GAAeD,EAr7CnB,SAAmB7giB,GACjB,OAAO,SAAS/uG,GACd,OAAO+uG,EAAK/uG,EACd,CACF,CAi7CsCosb,CAAUwjN,GAnsBhD,SAA0B5voB,GACxB,OAAO4iO,GAAa5iO,IAClB2iO,GAAS3iO,EAAMyO,WAAao0N,EAAe0vG,EAAe73T,KAAK1a,GACnE,EA8tBA,SAAS0E,GAAKihD,GACZ,OAAOigL,GAAYjgL,GA53BrB,SAAuB3lD,EAAOigd,GAG5B,IAAIzyc,EAAU4c,GAAQpqB,IAylBxB,SAAqBA,GAEnB,OAmFF,SAA2BA,GACzB,OAAO4iO,GAAa5iO,IAAU4lO,GAAY5lO,EAC5C,CArFSg8H,CAAkBh8H,IAAUiG,EAAeyU,KAAK1a,EAAO,aAC1Dw8F,EAAqB9hF,KAAK1a,EAAO,WAAauyU,EAAe73T,KAAK1a,IAAU0jQ,EAClF,CA7lBkCvsC,CAAYn3N,GA5mB9C,SAAmBkb,EAAG++M,GAIpB,IAHA,IAAIppN,GAAS,EACTrD,EAASmB,MAAMuM,KAEVrK,EAAQqK,GACf1N,EAAOqD,GAASopN,EAASppN,GAE3B,OAAOrD,CACT,CAqmBM2toB,CAAUn7oB,EAAMyO,OAAQmM,QACxB,GAEAnM,EAASjB,EAAOiB,OAChB2soB,IAAgB3soB,EAEpB,IAAK,IAAI5J,KAAO7E,GACTigd,IAAah6c,EAAeyU,KAAK1a,EAAO6E,IACvCu2oB,IAAuB,UAAPv2oB,GAAmB+1nB,GAAQ/1nB,EAAK4J,KACpDjB,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,CA22B+B+ioB,CAAc5qlB,GAttB7C,SAAkBA,GAChB,GAsWI2zK,GADet5N,EArWF2lD,IAsWG3lD,EAAM8a,YAGnB9a,KAFqB,mBAARs5N,GAAsBA,EAAK7+M,WAAcwhF,GAtW3D,OAAO40C,EAAWlrF,GAoWtB,IAAqB3lD,EACfs5N,EAnWA9rN,EAAS,GACb,IAAK,IAAI3I,KAAOV,OAAOwhD,GACjB1/C,EAAeyU,KAAKirC,EAAQ9gD,IAAe,eAAPA,GACtC2I,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,CA2sBuD6toB,CAAS11lB,EAChE,CAEAo2C,EAAOj9F,QA1KP,SAAqBkB,EAAOk7D,EAAOu4K,GAEjC,IAAIjmO,GADJimO,EAAkC,mBAAdA,EAA2BA,OAAatiO,GAClCsiO,EAAWzzO,EAAOk7D,QAAS/pD,EACrD,YAAkBA,IAAX3D,EAAuBq0G,GAAY7hH,EAAOk7D,EAAOu4K,KAAgBjmO,CAC1E,C,4HC38CIumN,EAAY,CACd73M,MAAO,WAAiBgzG,WACxBrqF,QAAS,UAKPglW,EAA2B,aAAiB,SAAUpkY,EAAMynH,GAC9D,IAAIhxG,EAAQzW,EAAKyW,MACb2oB,EAAUp/B,EAAKo/B,QACfs/E,EAAY1+G,EAAK0+G,UACjB13E,GAAQ,OAA8BhnC,EAAM,CAAC,QAAS,UAAW,cAErE,OAAoB,gBAAoB,UAAU,OAAS,CACzDynH,IAAKA,EACL7iG,KAAM,SACN85F,UAAW,IAAW,QAASA,GAC/Bt/E,QAASA,GACR4H,GAAqB,gBAAoB,OAAQ,CAClD,cAAe,QACd,KAAsB,gBAAoB,OAAQ,CACnD03E,UAAW,WACVjoG,GACL,GACA2tX,EAAYnnM,YAAc,cAC1BmnM,EAAY91K,UAAYA,EACxB81K,EAAYn2K,aAtBO,CACjBx3M,MAAO,SAsBT,S,6BC9BA,IAAIo/nB,EAAS,iIAKbx8oB,EAAQ,EAAW,SAASmxT,GAE3B,IAAKA,EACJ,OAAO,EAER,GAAGA,EAAMxhT,OAAO,IACf,OAAO,EAGR,IADY6soB,EAAO/+oB,KAAK0zT,GAEvB,OAAO,EAGR,IAAIt/O,EAAQs/O,EAAM10T,MAAM,KACxB,QAAGo1E,EAAM,GAAGliE,OAAO,IAGDkiE,EAAM,GAAGp1E,MAAM,KAClBoR,KAAK,SAAS+1H,GAAQ,OAAOA,EAAKj0H,OAAO,EAAI,GAI7D,C,+BC5BA,IAAIisG,EAAc,EAAQ,OAEtBo/Q,EAASl4W,MACTxjB,EAAUs8G,EAAY,GAAGt8G,SAEzBuklB,EAAgC/nkB,OAAO,IAAIk/W,EAAuB,UAAXl5U,OAEvD26lB,EAA2B,uBAC3BC,EAAwBD,EAAyBh/oB,KAAKomlB,GAE1D5mf,EAAOj9F,QAAU,SAAU8hD,EAAO66lB,GAChC,GAAID,GAAyC,iBAAT56lB,IAAsBk5U,EAAO4hR,kBAC/D,KAAOD,KAAe76lB,EAAQxiD,EAAQwiD,EAAO26lB,EAA0B,IACvE,OAAO36lB,CACX,C,2ECZA,KAAO+6lB,qBAAuB,IAC9B,IAAIC,EAAmB,EACnBC,EAAc,EACdC,GAA6B,EAcjC,MAAMC,EACF,WAAAjhoB,CAAY4jX,GACRrkX,KAAK2hoB,UAAY,KAEjB3hoB,KAAK2nH,SAAW,GAChB3nH,KAAK4hoB,eAAiB,GACtB5hoB,KAAK6hoB,kBAAmB,EACxB7hoB,KAAK8hoB,mBAAoB,EAEzB9hoB,KAAKyhZ,YAAa,EAClBzhZ,KAAK+hoB,iBAAkB,EACvB/hoB,KAAKgioB,gBAAiB,EAGtBhioB,KAAKiioB,gBAAmBlsV,IACpB,IAAK/1S,KAAKkioB,qBAgNtB,SAA8BnsV,GAC1B,OAAqB,IAAdA,EAAG7jB,SAAiB6jB,EAAGjkB,OAClC,CAjNgBqwW,CAAqBpsV,IACrB/1S,KAAKoioB,SAASrsV,GAAK,CACnB,IAAI+9P,EAAM9ziB,KAAKqioB,qBAAqBtsV,GAAI,GACxC/1S,KAAK40H,QAAQzvE,QAAQ,cAAe2uf,GACpC9ziB,KAAKsioB,gBAAgBxuF,GAChB9ziB,KAAK6hoB,kBACNp5oB,SAASyP,iBAAiB,YAAa8H,KAAKuioB,iBAEhD95oB,SAASyP,iBAAiB,UAAW8H,KAAKwioB,cAC9C,GAEJxioB,KAAKuioB,gBAAmBxsV,IACpB,IAAI+9P,EAAM9ziB,KAAKqioB,qBAAqBtsV,GACpC/1S,KAAKyioB,aAAa3uF,GAClB9ziB,KAAK40H,QAAQzvE,QAAQ,cAAe2uf,IAExC9ziB,KAAKwioB,cAAiBzsV,IAClBttT,SAAS0P,oBAAoB,YAAa6H,KAAKuioB,iBAC/C95oB,SAAS0P,oBAAoB,UAAW6H,KAAKwioB,eAC7CxioB,KAAK40H,QAAQzvE,QAAQ,YAAanlD,KAAKqioB,qBAAqBtsV,IAC5D/1S,KAAK89X,WAIT99X,KAAK0ioB,iBAAoB3sV,IACrB,GAAI/1S,KAAKoioB,SAASrsV,GAAK,CACnB/1S,KAAK+hoB,iBAAkB,EACvB,IAAIjuF,EAAM9ziB,KAAK2ioB,qBAAqB5sV,GAAI,GACxC/1S,KAAK40H,QAAQzvE,QAAQ,cAAe2uf,GACpC9ziB,KAAKsioB,gBAAgBxuF,GAGrB,IAAI8uF,EAAW7sV,EAAGhoT,OACbiS,KAAK6hoB,kBACNe,EAAS1qoB,iBAAiB,YAAa8H,KAAK6ioB,iBAEhDD,EAAS1qoB,iBAAiB,WAAY8H,KAAK8ioB,gBAC3CF,EAAS1qoB,iBAAiB,cAAe8H,KAAK8ioB,gBAI9C37oB,OAAO+Q,iBAAiB,SAAU8H,KAAK+ioB,mBAAmB,EAC9D,GAEJ/ioB,KAAK6ioB,gBAAmB9sV,IACpB,IAAI+9P,EAAM9ziB,KAAK2ioB,qBAAqB5sV,GACpC/1S,KAAKyioB,aAAa3uF,GAClB9ziB,KAAK40H,QAAQzvE,QAAQ,cAAe2uf,IAExC9ziB,KAAK8ioB,eAAkB/sV,IACnB,GAAI/1S,KAAKyhZ,WAAY,CACjB,IAAImhP,EAAW7sV,EAAGhoT,OAClB60oB,EAASzqoB,oBAAoB,YAAa6H,KAAK6ioB,iBAC/CD,EAASzqoB,oBAAoB,WAAY6H,KAAK8ioB,gBAC9CF,EAASzqoB,oBAAoB,cAAe6H,KAAK8ioB,gBACjD37oB,OAAOgR,oBAAoB,SAAU6H,KAAK+ioB,mBAAmB,GAC7D/ioB,KAAK40H,QAAQzvE,QAAQ,YAAanlD,KAAK2ioB,qBAAqB5sV,IAC5D/1S,KAAK89X,UACL99X,KAAK+hoB,iBAAkB,EA2JnCR,GAAoB,EACpB95nB,WAAW,KACP85nB,GAAoB,GACrB,KAAOD,qBA5JF,GAEJthoB,KAAK+ioB,kBAAoB,KACrB/ioB,KAAKgioB,gBAAiB,GAE1BhioB,KAAKgjoB,aAAgBjtV,IACjB,IAAK/1S,KAAK6hoB,iBAAkB,CACxB,IAAIh8M,EAAS1+b,OAAOwpI,QAAU3wH,KAAKijoB,YAAejjoB,KAAKkjoB,UACnDp9M,EAAS3+b,OAAOypI,QAAU5wH,KAAKmjoB,YAAenjoB,KAAKojoB,UACvDpjoB,KAAK40H,QAAQzvE,QAAQ,cAAe,CAChC8uf,UAAWl+P,EACXstV,QAASrjoB,KAAK+hoB,gBACdJ,UAAW3hoB,KAAK2hoB,UAChB97M,QACAC,QACAlnY,OAAQinY,EAAQ7lb,KAAKsjoB,UACrBzklB,OAAQinY,EAAQ9lb,KAAKujoB,WAE7B,GAEJvjoB,KAAKqkX,YAAcA,EACnBrkX,KAAK40H,QAAU,IAAI,IACnByvP,EAAYnsX,iBAAiB,YAAa8H,KAAKiioB,iBAC/C59Q,EAAYnsX,iBAAiB,aAAc8H,KAAK0ioB,iBAAkB,CAAEr2oB,SAAS,IA0IjFm1oB,GAAe,EACK,IAAhBA,GACAr6oB,OAAO+Q,iBAAiB,YAAasroB,EAAmB,CAAEn3oB,SAAS,GA1IvE,CACA,OAAA0K,GACIiJ,KAAKqkX,YAAYlsX,oBAAoB,YAAa6H,KAAKiioB,iBACvDjioB,KAAKqkX,YAAYlsX,oBAAoB,aAAc6H,KAAK0ioB,iBAAkB,CAAEr2oB,SAAS,IA2IzFm1oB,GAAe,EACVA,GACDr6oB,OAAOgR,oBAAoB,YAAaqroB,EAAmB,CAAEn3oB,SAAS,GA3I1E,CACA,QAAA+1oB,CAASrsV,GACL,IAAI4rV,EAAY3hoB,KAAKyjoB,eAAe1tV,GAChC2tV,EAAS3tV,EAAGhoT,OAChB,SAAI4zoB,GACE3hoB,KAAK4hoB,kBAAkB,OAAe8B,EAAQ1joB,KAAK4hoB,kBACrD5hoB,KAAK2hoB,UAAYA,EACjB3hoB,KAAKyhZ,YAAa,EAClBzhZ,KAAKgioB,gBAAiB,EACf,GAGf,CACA,OAAAlkQ,GACI2jQ,GAA6B,EAC7BzhoB,KAAKyhZ,YAAa,EAClBzhZ,KAAK2hoB,UAAY,KAEjB3hoB,KAAK2joB,oBACT,CACA,cAAAF,CAAe1tV,GACX,OAAI/1S,KAAK2nH,UACE,OAAeouL,EAAGhoT,OAAQiS,KAAK2nH,UAEnC3nH,KAAKqkX,WAChB,CACA,iBAAA69Q,GACI,OAAOX,GAAoBvhoB,KAAK+hoB,eACpC,CAEA,iBAAA6B,GACQ5joB,KAAKyhZ,aACLggP,GAA6B,EAErC,CAGA,eAAAa,CAAgBvsV,GACR/1S,KAAK8hoB,oBACL9hoB,KAAKyioB,aAAa1sV,GAClB5uT,OAAO+Q,iBAAiB,SAAU8H,KAAKgjoB,cAAc,GAE7D,CACA,YAAAP,CAAa1sV,GACL/1S,KAAK8hoB,oBACL9hoB,KAAKkjoB,UAAYntV,EAAG8vI,MACpB7lb,KAAKojoB,UAAYrtV,EAAG+vI,MACpB9lb,KAAKijoB,YAAc97oB,OAAOwpI,QAC1B3wH,KAAKmjoB,YAAch8oB,OAAOypI,QAElC,CACA,kBAAA+ygB,GACQ3joB,KAAK8hoB,mBACL36oB,OAAOgR,oBAAoB,SAAU6H,KAAKgjoB,cAAc,EAEhE,CAGA,oBAAAX,CAAqBtsV,EAAI8tV,GACrB,IAAIjllB,EAAS,EACTC,EAAS,EAUb,OARIgllB,GACA7joB,KAAKsjoB,UAAYvtV,EAAG8vI,MACpB7lb,KAAKujoB,UAAYxtV,EAAG+vI,QAGpBlnY,EAASm3P,EAAG8vI,MAAQ7lb,KAAKsjoB,UACzBzklB,EAASk3P,EAAG+vI,MAAQ9lb,KAAKujoB,WAEtB,CACHtvF,UAAWl+P,EACXstV,SAAS,EACT1B,UAAW3hoB,KAAK2hoB,UAChB97M,MAAO9vI,EAAG8vI,MACVC,MAAO/vI,EAAG+vI,MACVlnY,SACAC,SAER,CACA,oBAAA8jlB,CAAqB5sV,EAAI8tV,GACrB,IACIh+M,EACAC,EAFA1pZ,EAAU25Q,EAAG35Q,QAGbwiB,EAAS,EACTC,EAAS,EAoBb,OAjBIziB,GAAWA,EAAQhoC,QACnByxb,EAAQzpZ,EAAQ,GAAGypZ,MACnBC,EAAQ1pZ,EAAQ,GAAG0pZ,QAGnBD,EAAQ9vI,EAAG8vI,MACXC,EAAQ/vI,EAAG+vI,OAGX+9M,GACA7joB,KAAKsjoB,UAAYz9M,EACjB7lb,KAAKujoB,UAAYz9M,IAGjBlnY,EAASinY,EAAQ7lb,KAAKsjoB,UACtBzklB,EAASinY,EAAQ9lb,KAAKujoB,WAEnB,CACHtvF,UAAWl+P,EACXstV,SAAS,EACT1B,UAAW3hoB,KAAK2hoB,UAChB97M,QACAC,QACAlnY,SACAC,SAER,EA4BJ,SAAS2klB,EAAkBztV,GACnB0rV,GACA1rV,EAAGppL,gBAEX,CAOA,MAAMm3gB,EACF,WAAArjoB,GACIT,KAAKk2Z,WAAY,EACjBl2Z,KAAK+joB,SAAW,KAChB/joB,KAAKgkoB,SAAW,KAChBhkoB,KAAKikoB,aAAe,KAEpBjkoB,KAAKhY,WAAaS,SAASiF,KAC3BsS,KAAKghb,OAAS,KACdhhb,KAAKkkoB,eAAiB,CAC1B,CACA,KAAAz3oB,CAAMs3oB,EAAUl+M,EAAOC,GACnB9lb,KAAK+joB,SAAWA,EAChB/joB,KAAKikoB,aAAejkoB,KAAK+joB,SAASn3oB,wBAClCoT,KAAKmkoB,YAAct+M,EAAQ1+b,OAAOwpI,QAClC3wH,KAAKokoB,YAAct+M,EAAQ3+b,OAAOypI,QAClC5wH,KAAK4+C,OAAS,EACd5+C,KAAK6+C,OAAS,EACd7+C,KAAKqkoB,kBACT,CACA,UAAAC,CAAWz+M,EAAOC,GACd9lb,KAAK4+C,OAAUinY,EAAQ1+b,OAAOwpI,QAAW3wH,KAAKmkoB,YAC9CnkoB,KAAK6+C,OAAUinY,EAAQ3+b,OAAOypI,QAAW5wH,KAAKokoB,YAC9CpkoB,KAAKqkoB,kBACT,CAEA,YAAAE,CAAavvhB,GACLA,EACKh1G,KAAKk2Z,YACFl2Z,KAAKgkoB,WACLhkoB,KAAKgkoB,SAASt6mB,MAAM8yB,QAAU,IAElCx8C,KAAKk2Z,UAAYlhT,EACjBh1G,KAAKqkoB,oBAGJrkoB,KAAKk2Z,YACNl2Z,KAAKgkoB,WACLhkoB,KAAKgkoB,SAASt6mB,MAAM8yB,QAAU,QAElCx8C,KAAKk2Z,UAAYlhT,EAEzB,CAEA,IAAAtvG,CAAK8+nB,EAAsBt1nB,GACvB,IAAI1N,EAAO,KACPxB,KAAK89X,UACL5uX,KAEAs1nB,GACAxkoB,KAAKgkoB,UACLhkoB,KAAKk2Z,WACLl2Z,KAAKkkoB,iBACJlkoB,KAAK4+C,QAAU5+C,KAAK6+C,QAErB7+C,KAAKykoB,kBAAkBjjoB,EAAMxB,KAAKkkoB,gBAGlCz8nB,WAAWjG,EAAM,EAEzB,CACA,iBAAAijoB,CAAkBv1nB,EAAUg1nB,GACxB,IAAIF,EAAWhkoB,KAAKgkoB,SAChBU,EAAoB1koB,KAAK+joB,SAASn3oB,wBACtCo3oB,EAASt6mB,MAAMwlB,WACX,OAASg1lB,EAAT,WACcA,EAAiB,MACnC,QAAWF,EAAU,CACjB75oB,KAAMu6oB,EAAkBv6oB,KACxBH,IAAK06oB,EAAkB16oB,OAE3B,QAAmBg6oB,EAAU,KACzBA,EAASt6mB,MAAMwlB,WAAa,GAC5BhgC,KAER,CACA,OAAA4uX,GACQ99X,KAAKgkoB,YACL,QAAchkoB,KAAKgkoB,UACnBhkoB,KAAKgkoB,SAAW,MAEpBhkoB,KAAK+joB,SAAW,IACpB,CACA,gBAAAM,GACQrkoB,KAAK+joB,UAAY/joB,KAAKk2Z,YACtB,QAAWl2Z,KAAK2koB,cAAe,CAC3Bx6oB,KAAM6V,KAAKikoB,aAAa95oB,KAAO6V,KAAK4+C,OACpC50D,IAAKgW,KAAKikoB,aAAaj6oB,IAAMgW,KAAK6+C,QAG9C,CACA,WAAA8llB,GACI,IAAIV,EAAejkoB,KAAKikoB,aACpBD,EAAWhkoB,KAAKgkoB,SAsBpB,OArBKA,IACDA,EAAWhkoB,KAAKgkoB,SAAWhkoB,KAAK+joB,SAASntY,WAAU,GAGnDotY,EAASt6mB,MAAMu/f,WAAa,OAC5B+6G,EAASt6mB,MAAMw/f,iBAAmB,OAClC86G,EAASt6mB,MAAMhsB,cAAgB,OAC/BsmoB,EAASr6hB,UAAUr2G,IAAI,sBACvB,QAAW0woB,EAAU,CACjBl7oB,SAAU,QACVk4b,OAAQhhb,KAAKghb,OACb13U,WAAY,GACZttE,UAAW,aACXt1C,MAAOu9oB,EAAah6oB,MAAQg6oB,EAAa95oB,KACzCvD,OAAQq9oB,EAAa/5oB,OAAS+5oB,EAAaj6oB,IAC3CC,MAAO,OACPC,OAAQ,OACR6kC,OAAQ,IAEZ/uB,KAAKhY,WAAWmoG,YAAY6ziB,IAEzBA,CACX,EAWJ,MAAMY,UAAwB,KAC1B,WAAAnkoB,CAAYokoB,EAAkBC,GAC1BzxlB,QACArzC,KAAKgjoB,aAAe,KAChBhjoB,KAAK/S,UAAY+S,KAAK6koB,iBAAiBv8E,eACvCtojB,KAAKjT,WAAaiT,KAAK6koB,iBAAiBp8E,gBACxCzojB,KAAK+koB,sBAET/koB,KAAK6koB,iBAAmBA,EACxB7koB,KAAK8koB,cAAgBA,EACrB9koB,KAAK/S,UAAY+S,KAAKgloB,cAAgBH,EAAiBv8E,eACvDtojB,KAAKjT,WAAaiT,KAAKiloB,eAAiBJ,EAAiBp8E,gBACzDzojB,KAAKnR,YAAcg2oB,EAAiB58E,iBACpCjojB,KAAKlR,aAAe+1oB,EAAiB/8E,kBACrC9njB,KAAK9T,YAAc24oB,EAAiB38E,iBACpClojB,KAAK/T,aAAe44oB,EAAiB98E,kBACrC/njB,KAAKkloB,WAAalloB,KAAKmloB,oBACnBnloB,KAAK8koB,eACL9koB,KAAKoloB,iBAAiBltoB,iBAAiB,SAAU8H,KAAKgjoB,aAE9D,CACA,OAAAjsoB,GACQiJ,KAAK8koB,eACL9koB,KAAKoloB,iBAAiBjtoB,oBAAoB,SAAU6H,KAAKgjoB,aAEjE,CACA,YAAA16E,GACI,OAAOtojB,KAAK/S,SAChB,CACA,aAAAw7jB,GACI,OAAOzojB,KAAKjT,UAChB,CACA,YAAA67jB,CAAa5+jB,GACTgW,KAAK6koB,iBAAiBj8E,aAAa5+jB,GAC9BgW,KAAK8koB,gBAGN9koB,KAAK/S,UAAYzH,KAAKmE,IAAInE,KAAKkE,IAAIM,EAAKgW,KAAK6njB,mBAAoB,GACjE7njB,KAAK+koB,qBAEb,CACA,aAAAl8E,CAAc7+jB,GACVgW,KAAK6koB,iBAAiBh8E,cAAc7+jB,GAC/BgW,KAAK8koB,gBAGN9koB,KAAKjT,WAAavH,KAAKmE,IAAInE,KAAKkE,IAAIM,EAAKgW,KAAKgojB,oBAAqB,GACnEhojB,KAAK+koB,qBAEb,CACA,cAAA78E,GACI,OAAOlojB,KAAK9T,WAChB,CACA,eAAA67jB,GACI,OAAO/njB,KAAK/T,YAChB,CACA,cAAAg8jB,GACI,OAAOjojB,KAAKnR,WAChB,CACA,eAAAi5jB,GACI,OAAO9njB,KAAKlR,YAChB,CACA,kBAAAi2oB,GACA,EAGJ,MAAMM,UAA+BT,EACjC,WAAAnkoB,CAAY88B,EAAIunmB,GACZzxlB,MAAM,IAAI,KAAwB9V,GAAKunmB,EAC3C,CACA,cAAAM,GACI,OAAOploB,KAAK6koB,iBAAiBtnmB,EACjC,CACA,iBAAA4nmB,GACI,OAAO,QAAiBnloB,KAAK6koB,iBAAiBtnmB,GAClD,EAGJ,MAAM+nmB,UAA8BV,EAChC,WAAAnkoB,CAAYqkoB,GACRzxlB,MAAM,IAAI,KAA0ByxlB,EACxC,CACA,cAAAM,GACI,OAAOj+oB,MACX,CACA,iBAAAg+oB,GACI,MAAO,CACHh7oB,KAAM6V,KAAKjT,WACX9C,MAAO+V,KAAKjT,WAAaiT,KAAK9T,YAC9BlC,IAAKgW,KAAK/S,UACV/C,OAAQ8V,KAAK/S,UAAY+S,KAAK/T,aAEtC,CAGA,kBAAA84oB,GACI/koB,KAAKkloB,WAAalloB,KAAKmloB,mBAC3B,EAMJ,MAAM1/hB,EAAiC,mBAAhByG,YAA6BA,YAAYpjG,IAAMD,KAAKC,IAO3E,MAAMy8nB,EACF,WAAA9koB,GAEIT,KAAKw1H,WAAY,EACjBx1H,KAAKwloB,YAAc,CAACr+oB,OAAQ,gBAC5B6Y,KAAKyloB,cAAgB,GACrBzloB,KAAK0loB,YAAc,IAEnB1loB,KAAK2loB,eAAiB,KACtB3loB,KAAK4loB,eAAiB,KACtB5loB,KAAK6loB,aAAc,EACnB7loB,KAAK8loB,aAAe,KAEpB9loB,KAAK+loB,aAAc,EACnB/loB,KAAKgmoB,eAAgB,EACrBhmoB,KAAKimoB,eAAgB,EACrBjmoB,KAAKkmoB,gBAAiB,EACtBlmoB,KAAKg9E,QAAU,KACX,GAAIh9E,KAAK6loB,YAAa,CAClB,IAAItzlB,EAAOvyC,KAAKmmoB,gBAAgBnmoB,KAAK2loB,eAAiBx+oB,OAAOwpI,QAAS3wH,KAAK4loB,eAAiBz+oB,OAAOypI,SACnG,GAAIr+E,EAAM,CACN,IAAIzpC,EAAM28F,IACVzlG,KAAKomoB,WAAW7zlB,GAAOzpC,EAAM9I,KAAKqmoB,gBAAkB,KACpDrmoB,KAAKq0gB,iBAAiBvrgB,EAC1B,MAEI9I,KAAK6loB,aAAc,CAE3B,EAER,CACA,KAAAp5oB,CAAMo5b,EAAOC,EAAOwgN,GACZtmoB,KAAKw1H,YACLx1H,KAAK8loB,aAAe9loB,KAAKumoB,YAAYD,GACrCtmoB,KAAK2loB,eAAiB,KACtB3loB,KAAK4loB,eAAiB,KACtB5loB,KAAK+loB,aAAc,EACnB/loB,KAAKgmoB,eAAgB,EACrBhmoB,KAAKimoB,eAAgB,EACrBjmoB,KAAKkmoB,gBAAiB,EACtBlmoB,KAAKskoB,WAAWz+M,EAAOC,GAE/B,CACA,UAAAw+M,CAAWz+M,EAAOC,GACd,GAAI9lb,KAAKw1H,UAAW,CAChB,IAAImwgB,EAAiB9/M,EAAQ1+b,OAAOwpI,QAChCi1gB,EAAiB9/M,EAAQ3+b,OAAOypI,QAChC41gB,EAAiC,OAAxBxmoB,KAAK4loB,eAA0B,EAAIA,EAAiB5loB,KAAK4loB,eAClEa,EAAiC,OAAxBzmoB,KAAK2loB,eAA0B,EAAIA,EAAiB3loB,KAAK2loB,eAClEa,EAAS,EACTxmoB,KAAK+loB,aAAc,EAEdS,EAAS,IACdxmoB,KAAKgmoB,eAAgB,GAErBS,EAAS,EACTzmoB,KAAKimoB,eAAgB,EAEhBQ,EAAS,IACdzmoB,KAAKkmoB,gBAAiB,GAE1BlmoB,KAAK2loB,eAAiBA,EACtB3loB,KAAK4loB,eAAiBA,EACjB5loB,KAAK6loB,cACN7loB,KAAK6loB,aAAc,EACnB7loB,KAAKq0gB,iBAAiB5ua,KAE9B,CACJ,CACA,IAAA//F,GACI,GAAI1F,KAAKw1H,UAAW,CAChBx1H,KAAK6loB,aAAc,EACnB,IAAK,IAAIa,KAAe1moB,KAAK8loB,aACzBY,EAAY3voB,UAEhBiJ,KAAK8loB,aAAe,IACxB,CACJ,CACA,gBAAAzxH,CAAiBvrgB,GACb9I,KAAKqmoB,eAAiBv9nB,EACtBqG,sBAAsBnP,KAAKg9E,QAC/B,CACA,UAAAopjB,CAAW7zlB,EAAM+4I,GACb,IAAI,YAAEo7c,GAAgBn0lB,GAClB,cAAEkzlB,GAAkBzloB,KACpB2moB,EAAclB,EAAgBlzlB,EAAKh6C,SACnCquoB,EACDD,EAAcA,GAAgBlB,EAAgBA,GAC7CzloB,KAAK0loB,YAAcp6c,EACnB33K,EAAO,EACX,OAAQ4+B,EAAKh/C,MACT,IAAK,OACDogB,GAAQ,EAEZ,IAAK,QACD+ynB,EAAY79E,cAAc69E,EAAYj+E,gBAAkBm+E,EAAWjznB,GACnE,MACJ,IAAK,MACDA,GAAQ,EAEZ,IAAK,SACD+ynB,EAAY99E,aAAa89E,EAAYp+E,eAAiBs+E,EAAWjznB,GAG7E,CAEA,eAAAwynB,CAAgBh8oB,EAAMH,GAClB,IAAI,cAAEy7oB,GAAkBzloB,KACpB6moB,EAAW,KACXf,EAAe9loB,KAAK8loB,cAAgB,GACxC,IAAK,IAAIY,KAAeZ,EAAc,CAClC,IAAIj5oB,EAAO65oB,EAAYxB,WACnB4B,EAAW38oB,EAAO0C,EAAK1C,KACvB48oB,EAAYl6oB,EAAK5C,MAAQE,EACzB68oB,EAAUh9oB,EAAM6C,EAAK7C,IACrBi9oB,EAAap6oB,EAAK3C,OAASF,EAE3B88oB,GAAY,GAAKC,GAAa,GAAKC,GAAW,GAAKC,GAAc,IAC7DD,GAAWvB,GAAiBzloB,KAAK+loB,aAAeW,EAAYr+E,iBAC1Dw+E,GAAYA,EAAStuoB,SAAWyuoB,KAClCH,EAAW,CAAEH,cAAanzoB,KAAM,MAAOgF,SAAUyuoB,IAEjDC,GAAcxB,GAAiBzloB,KAAKgmoB,eAAiBU,EAAYn+E,mBAC/Ds+E,GAAYA,EAAStuoB,SAAW0uoB,KAClCJ,EAAW,CAAEH,cAAanzoB,KAAM,SAAUgF,SAAU0uoB,IAMpDH,GAAYrB,GAAiBzloB,KAAKimoB,eAAiBS,EAAYl+E,mBAC7Dq+E,GAAYA,EAAStuoB,SAAWuuoB,KAClCD,EAAW,CAAEH,cAAanzoB,KAAM,OAAQgF,SAAUuuoB,IAElDC,GAAatB,GAAiBzloB,KAAKkmoB,gBAAkBQ,EAAYh+E,oBAC/Dm+E,GAAYA,EAAStuoB,SAAWwuoB,KAClCF,EAAW,CAAEH,cAAanzoB,KAAM,QAASgF,SAAUwuoB,IAG/D,CACA,OAAOF,CACX,CACA,WAAAN,CAAYD,GACR,OAAOtmoB,KAAKknoB,eAAeZ,GAAevzoB,IAAKwqC,GACvCA,IAAOp2C,OACA,IAAIm+oB,GAAsB,GAE9B,IAAID,EAAuB9nmB,GAAI,GAE9C,CACA,cAAA2pmB,CAAeZ,GACX,IAAI3/E,EAAM,GACV,IAAK,IAAIyoB,KAASpvkB,KAAKwloB,YACE,iBAAVp2D,EACPzoB,EAAI7yjB,KAAKs7kB,GAOTzoB,EAAI7yjB,QAAQQ,MAAM8L,UAAUtF,MAAMuF,KAAKimoB,EAAc1+oB,cAAc03Q,iBAAiB8vU,KAG5F,OAAOzoB,CACX,EASJ,MAAMwgF,UAAkC,KACpC,WAAA1moB,CAAY4jX,EAAa18P,GACrBt0E,MAAMgxU,GACNrkX,KAAKqkX,YAAcA,EAGnBrkX,KAAKyjC,MAAQ,KACbzjC,KAAK++C,YAAc,EACnB/+C,KAAKonoB,oBAAqB,EAC1BpnoB,KAAKqnoB,mBAAoB,EACzBrnoB,KAAKsnoB,eAAgB,EACrBtnoB,KAAKyhZ,YAAa,EAClBzhZ,KAAKunoB,cAAe,EACpBvnoB,KAAKwnoB,qBAAsB,EAC3BxnoB,KAAKynoB,eAAiB,KACtBznoB,KAAK0noB,cAAiB3xV,IACb/1S,KAAKyhZ,aACNzhZ,KAAKsnoB,eAAgB,EACrBtnoB,KAAKunoB,cAAe,EACpBvnoB,KAAKwnoB,qBAAsB,GAC3B,QAAiB/+oB,SAASiF,OAC1B,QAAmBjF,SAASiF,MAIvBqoT,EAAGstV,SACJttV,EAAGk+P,UAAUtnb,iBAEjB3sH,KAAK40H,QAAQzvE,QAAQ,cAAe4wP,GAChC/1S,KAAKsnoB,gBACJtnoB,KAAKy3Y,QAAQoqP,mBAEd7hoB,KAAKwpD,OAAO+6kB,cAAa,GACzBvkoB,KAAKwpD,OAAO/8D,MAAMspT,EAAG4rV,UAAW5rV,EAAG8vI,MAAO9vI,EAAG+vI,OAC7C9lb,KAAK2noB,WAAW5xV,GACX/1S,KAAK++C,aACN/+C,KAAK4noB,wBAAwB7xV,MAK7C/1S,KAAK6noB,cAAiB9xV,IAClB,GAAI/1S,KAAKsnoB,cAAe,CAEpB,GADAtnoB,KAAK40H,QAAQzvE,QAAQ,cAAe4wP,IAC/B/1S,KAAKwnoB,oBAAqB,CAC3B,IACIM,EADA/olB,EAAc/+C,KAAK++C,aAEnB,OAAEH,EAAM,OAAEC,GAAWk3P,EACzB+xV,EAAalplB,EAASA,EAASC,EAASA,EACpCiplB,GAAc/olB,EAAcA,GAC5B/+C,KAAK4noB,wBAAwB7xV,EAErC,CACI/1S,KAAKyhZ,aAEqB,WAAtB1rG,EAAGk+P,UAAUjkiB,OACbhQ,KAAKwpD,OAAO86kB,WAAWvuV,EAAG8vI,MAAO9vI,EAAG+vI,OACpC9lb,KAAK+noB,aAAazD,WAAWvuV,EAAG8vI,MAAO9vI,EAAG+vI,QAE9C9lb,KAAK40H,QAAQzvE,QAAQ,WAAY4wP,GAEzC,GAEJ/1S,KAAKgooB,YAAejyV,IACZ/1S,KAAKsnoB,gBACLtnoB,KAAKsnoB,eAAgB,GACrB,QAAe7+oB,SAASiF,OACxB,QAAiBjF,SAASiF,MAC1BsS,KAAK40H,QAAQzvE,QAAQ,YAAa4wP,GAC9B/1S,KAAKyhZ,aACLzhZ,KAAK+noB,aAAarioB,OAClB1F,KAAKiooB,YAAYlyV,IAEjB/1S,KAAKynoB,iBACL9/nB,aAAa3H,KAAKynoB,gBAClBznoB,KAAKynoB,eAAiB,QAIlC,IAAIhwP,EAAUz3Y,KAAKy3Y,QAAU,IAAIiqP,EAAgBr9Q,GACjDozB,EAAQ7iR,QAAQjqB,GAAG,cAAe3qG,KAAK0noB,eACvCjwP,EAAQ7iR,QAAQjqB,GAAG,cAAe3qG,KAAK6noB,eACvCpwP,EAAQ7iR,QAAQjqB,GAAG,YAAa3qG,KAAKgooB,aACjCrghB,IACA8vR,EAAQ9vR,SAAWA,GAEvB3nH,KAAKwpD,OAAS,IAAIs6kB,EAClB9joB,KAAK+noB,aAAe,IAAIxC,CAC5B,CACA,OAAAxuoB,GACIiJ,KAAKy3Y,QAAQ1gZ,UAGbiJ,KAAKgooB,YAAY,CAAC,EACtB,CACA,UAAAL,CAAW5xV,GACmB,iBAAf/1S,KAAKyjC,MACZzjC,KAAKynoB,eAAiBhgoB,WAAW,KAC7BzH,KAAKynoB,eAAiB,KACtBznoB,KAAKkooB,eAAenyV,IACrB/1S,KAAKyjC,OAGRzjC,KAAKkooB,eAAenyV,EAE5B,CACA,cAAAmyV,CAAenyV,GACX/1S,KAAKunoB,cAAe,EACpBvnoB,KAAKmooB,aAAapyV,EACtB,CACA,uBAAA6xV,CAAwB7xV,GACpB/1S,KAAKwnoB,qBAAsB,EAC3BxnoB,KAAKmooB,aAAapyV,EACtB,CACA,YAAAoyV,CAAapyV,GACL/1S,KAAKunoB,cAAgBvnoB,KAAKwnoB,sBACrBxnoB,KAAKy3Y,QAAQuqP,iBAAkBhioB,KAAKonoB,qBACrCpnoB,KAAKyhZ,YAAa,EAClBzhZ,KAAKqnoB,mBAAoB,EACzBrnoB,KAAK+noB,aAAat7oB,MAAMspT,EAAG8vI,MAAO9vI,EAAG+vI,MAAO9lb,KAAKqkX,aACjDrkX,KAAK40H,QAAQzvE,QAAQ,YAAa4wP,IACF,IAA5B/1S,KAAKonoB,oBACLpnoB,KAAKy3Y,QAAQmsP,qBAI7B,CACA,WAAAqE,CAAYlyV,GAGR/1S,KAAKwpD,OAAO9jD,KAAK1F,KAAKqnoB,kBAAmBrnoB,KAAKqma,SAAS3qX,KAAK17C,KAAM+1S,GACtE,CACA,QAAAswH,CAAStwH,GACL/1S,KAAKyhZ,YAAa,EAClBzhZ,KAAK40H,QAAQzvE,QAAQ,UAAW4wP,EACpC,CAEA,aAAAqyV,CAAcpzhB,GACVh1G,KAAKy3Y,QAAQoqP,iBAAmB7shB,CACpC,CACA,kBAAA23c,CAAmB33c,GACfh1G,KAAKwpD,OAAO+6kB,aAAavvhB,EAC7B,CACA,oBAAA43c,CAAqB53c,GACjBh1G,KAAKqnoB,kBAAoBryhB,CAC7B,CACA,oBAAA63c,CAAqB73c,GACjBh1G,KAAK+noB,aAAavygB,UAAYxgB,CAClC,EAWJ,MAAMqzhB,EACF,WAAA5noB,CAAY88B,GACRv9B,KAAKu9B,GAAKA,EACVv9B,KAAKsooB,UAAW,QAAY/qmB,GAE5Bv9B,KAAK8loB,cAAe,QAAmBvomB,GAAIxqC,IAAKw1oB,GAAa,IAAIlD,EAAuBkD,GAAU,GACtG,CACA,OAAAxxoB,GACI,IAAK,IAAI2voB,KAAe1moB,KAAK8loB,aACzBY,EAAY3voB,SAEpB,CACA,WAAAyxoB,GACI,IAAIr+oB,EAAO6V,KAAKsooB,SAASn+oB,KACzB,IAAK,IAAIu8oB,KAAe1moB,KAAK8loB,aACzB37oB,GAAQu8oB,EAAYzB,eAAiByB,EAAYj+E,gBAErD,OAAOt+jB,CACX,CACA,UAAAs+oB,GACI,IAAIz+oB,EAAMgW,KAAKsooB,SAASt+oB,IACxB,IAAK,IAAI08oB,KAAe1moB,KAAK8loB,aACzB97oB,GAAO08oB,EAAY1B,cAAgB0B,EAAYp+E,eAEnD,OAAOt+jB,CACX,CACA,gBAAA0+oB,CAAiB7iN,EAAOC,GACpB,IAAIj3Z,EAAQ,CAAE1kC,KAAM07b,EAAO77b,IAAK87b,GAChC,IAAK,IAAI4gN,KAAe1moB,KAAK8loB,aACzB,IAAK6C,EAAkBjC,EAAYtB,qBAC9B,QAAgBv2mB,EAAO63mB,EAAYxB,YACpC,OAAO,EAGf,OAAO,CACX,EAIJ,SAASyD,EAAkB5hpB,GACvB,IAAIiqH,EAAUjqH,EAAKiqH,QACnB,MAAmB,SAAZA,GAAkC,SAAZA,CACjC,CAeA,MAAM43hB,EACF,WAAAnooB,CAAYq3Y,EAAU+wP,GAElB7ooB,KAAK8ooB,kBAAmB,EACxB9ooB,KAAK+ooB,gBAAiB,EACtB/ooB,KAAKgpoB,mBAAoB,EACzBhpoB,KAAKipoB,WAAa,KAClBjpoB,KAAKkpoB,UAAY,KACjBlpoB,KAAKmpoB,SAAW,KAChBnpoB,KAAKopoB,kBAAqBrzV,IACtB,IAAI,SAAE+hG,GAAa93Y,KACnBA,KAAKipoB,WAAa,KAClBjpoB,KAAKkpoB,UAAY,KACjBlpoB,KAAKmpoB,SAAW,KAChBnpoB,KAAKgpjB,cACLhpjB,KAAKqpoB,kBAAkBtzV,GACnB/1S,KAAKipoB,aAAejpoB,KAAK+ooB,gBACzBjxP,EAASswP,eAAc,GAEvBpooB,KAAK40H,QAAQzvE,QAAQ,cAAe4wP,IAGpC+hG,EAASswP,eAAc,IAG/BpooB,KAAKspoB,gBAAmBvzV,IACpB/1S,KAAK40H,QAAQzvE,QAAQ,YAAa4wP,GAClC/1S,KAAKskoB,WAAWvuV,GAAI,IAExB/1S,KAAKupoB,eAAkBxzV,IACnB/1S,KAAK40H,QAAQzvE,QAAQ,WAAY4wP,GACjC/1S,KAAKskoB,WAAWvuV,IAEpB/1S,KAAKwpoB,gBAAmBzzV,IACpB/1S,KAAKypoB,cACLzpoB,KAAK40H,QAAQzvE,QAAQ,YAAa4wP,IAEtC/1S,KAAK0poB,cAAiB3zV,IACd/1S,KAAKkpoB,WACLlpoB,KAAK40H,QAAQzvE,QAAQ,YAAa,MAAM,EAAM4wP,GAElD/1S,KAAKmpoB,SAAWnpoB,KAAKkpoB,UACrBlpoB,KAAKkpoB,UAAY,KACjBlpoB,KAAK40H,QAAQzvE,QAAQ,UAAW4wP,IAEpC/1S,KAAK6ooB,eAAiBA,EACtB/wP,EAASljR,QAAQjqB,GAAG,cAAe3qG,KAAKopoB,mBACxCtxP,EAASljR,QAAQjqB,GAAG,YAAa3qG,KAAKspoB,iBACtCxxP,EAASljR,QAAQjqB,GAAG,WAAY3qG,KAAKupoB,gBACrCzxP,EAASljR,QAAQjqB,GAAG,YAAa3qG,KAAKwpoB,iBACtC1xP,EAASljR,QAAQjqB,GAAG,UAAW3qG,KAAK0poB,eACpC1poB,KAAK83Y,SAAWA,EAChB93Y,KAAK40H,QAAU,IAAI,GACvB,CAGA,iBAAAy0gB,CAAkBtzV,GACd,IAGI4zV,EAHAC,EAAY,CAAEz/oB,KAAM4rT,EAAG8vI,MAAO77b,IAAK+rT,EAAG+vI,OACtC+jN,EAAgBD,EAChBjI,EAAY5rV,EAAG4rV,UAEfA,aAAqBp6oB,cACrBoipB,GAAc,QAAYhI,GAC1BkI,GAAgB,QAAeA,EAAeF,IAElD,IAAIV,EAAajpoB,KAAKipoB,WAAajpoB,KAAK8poB,kBAAkBD,EAAc1/oB,KAAM0/oB,EAAc7/oB,KAC5F,GAAIi/oB,EAAY,CACZ,GAAIjpoB,KAAK8ooB,kBAAoBa,EAAa,CACtC,IAAII,GAAoB,QAAeJ,EAAaV,EAAWp8oB,MAC3Dk9oB,IACAF,GAAgB,QAAcE,GAEtC,CACA/poB,KAAKgqoB,aAAc,QAAWH,EAAeD,EACjD,MAEI5poB,KAAKgqoB,YAAc,CAAE7/oB,KAAM,EAAGH,IAAK,EAE3C,CACA,UAAAs6oB,CAAWvuV,EAAIk0V,GACX,IAAIj1O,EAAMh1Z,KAAK8poB,kBAAkB/zV,EAAG8vI,MAAQ7lb,KAAKgqoB,YAAY7/oB,KAAM4rT,EAAG+vI,MAAQ9lb,KAAKgqoB,YAAYhgpB,MAC3FigpB,GAAgBC,EAAYlqoB,KAAKkpoB,UAAWl0O,KAC5Ch1Z,KAAKkpoB,UAAYl0O,EACjBh1Z,KAAK40H,QAAQzvE,QAAQ,YAAa6vW,GAAK,EAAOj/G,GAEtD,CACA,WAAAizQ,GACIhpjB,KAAKmqoB,gBAAiB,OAAQnqoB,KAAK6ooB,eAAiBuB,IAChDA,EAAoBpykB,UAAUgxf,cACvB,IAAIq/E,EAAc+B,EAAoB7smB,KAErD,CACA,WAAAksmB,GACI,IAAI,eAAEU,GAAmBnqoB,KACzB,IAAK,IAAIjC,KAAMosoB,EACXA,EAAepsoB,GAAIhH,UAEvBiJ,KAAKmqoB,eAAiB,CAAC,CAC3B,CACA,iBAAAL,CAAkBtjpB,EAAYC,GAC1B,IAAI,eAAEoipB,EAAc,eAAEsB,GAAmBnqoB,KACrCqqoB,EAAU,KACd,IAAK,IAAItsoB,KAAM8qoB,EAAgB,CAC3B,IAAI7wkB,EAAY6wkB,EAAe9qoB,GAAIi6D,UAC/BsykB,EAAgBH,EAAepsoB,GACnC,GAAIusoB,GACAA,EAAc5B,iBAAiBlipB,EAAYC,GAAY,CACvD,IAAI8jpB,EAAaD,EAAc9B,cAC3BgC,EAAYF,EAAc7B,aAC1Bv/E,EAAe1ikB,EAAa+jpB,EAC5BphF,EAAc1ikB,EAAY+jpB,GAC1B,SAAElC,GAAagC,EACf5jpB,EAAQ4hpB,EAASr+oB,MAAQq+oB,EAASn+oB,KAClCvD,EAAS0hpB,EAASp+oB,OAASo+oB,EAASt+oB,IACxC,GAEAk/jB,GAAgB,GAAKA,EAAexikB,GAChCyikB,GAAe,GAAKA,EAAcvikB,EAAQ,CAC1C,IAAIoua,EAAMh9V,EAAUixf,SAASC,EAAcC,EAAazikB,EAAOE,GAC3Doua,IAEJ,QAAmBA,EAAIu8I,YAAYvH,YAAah1I,EAAIk/I,SAASrgiB,SAIxD7T,KAAKgpoB,mBACFsB,EAAc/smB,GAAG/1C,SAAS8ipB,EAAc/smB,GAAG31C,cAAc6ipB,iBAEzDvhF,EAAeqhF,EAAapjpB,OAAOwpI,QAASw4b,EAAcqhF,EAAYrjpB,OAAOypI,cAC/Ey5gB,GAAWr1O,EAAIr2B,MAAQ0rQ,EAAQ1rQ,SACjCq2B,EAAI01O,YAAc3soB,EAClBi3Z,EAAI7rY,QAAU6uC,EAAU7uC,QAExB6rY,EAAInoa,KAAK1C,MAAQogpB,EACjBv1O,EAAInoa,KAAK5C,OAASsgpB,EAClBv1O,EAAInoa,KAAK7C,KAAOwgpB,EAChBx1O,EAAInoa,KAAK3C,QAAUsgpB,EACnBH,EAAUr1O,EAElB,CACJ,CACJ,CACA,OAAOq1O,CACX,EAEJ,SAASH,EAAYS,EAAMC,GACvB,OAAKD,IAASC,GAGV3jjB,QAAQ0jjB,KAAU1jjB,QAAQ2jjB,KAGvB,QAAiBD,EAAKz2F,SAAU02F,EAAK12F,SAChD,CAEA,SAAS22F,EAA6B32F,EAAU/qhB,GAC5C,IAAIiJ,EAAQ,CAAC,EACb,IAAK,IAAIhpC,KAAa+/B,EAAQi7gB,YAAY0mG,oBACtChhpB,OAAOC,OAAOqoC,EAAOhpC,EAAU8qjB,EAAU/qhB,IAKjD,IAA2B83D,EAAMijd,EAF7B,OADAp6iB,OAAOC,OAAOqoC,GAGS6uD,EAHgBizd,EAIhC,CACH5ygB,MAFyB4igB,EAHoB/6gB,EAAQ+6gB,SAKvCl6S,OAAO/oK,EAAKptE,MAAMpnB,OAChCs4jB,QAAS7gB,EAAQrC,UAAU5gd,EAAKptE,MAAMpnB,MAAO,CAAEu1iB,SAAU/gd,EAAKkrd,SAC9DA,OAAQlrd,EAAKkrd,UANV/5gB,CACX,CAaA,MAAM24mB,UAAqB,IACvB,WAAAtqoB,CAAYugN,GACR3tK,MAAM2tK,GACNhhN,KAAKopoB,kBAAqBt1F,IACtB,IAAI,SAAEh8J,GAAa93Y,KACf0joB,EAAS5vF,EAAIG,UAAUlmjB,OAE3B+pZ,EAASswP,eAAepooB,KAAKg4D,UAAUuxf,kBAAkBm6E,KAG7D1joB,KAAK0poB,cAAiB3zV,IAClB,IAAI,UAAE/9O,GAAch4D,MAChB,QAAEy3Y,GAAYz3Y,KAAK83Y,SACvB,IAAKL,EAAQuqP,eAAgB,CACzB,IAAI,WAAEiH,EAAU,SAAEE,GAAanpoB,KAAKgroB,YACpC,GAAI/B,GAAcE,GAAYe,EAAYjB,EAAYE,GAAW,CAC7D,IAAI,QAAEhgnB,GAAY6uC,EACdL,EAAM7tE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8gpB,EAA6B5B,EAAW/0F,SAAU/qhB,IAAW,CAAEkziB,MAAO4sE,EAAW5sE,MAAOroB,QAASj+P,EAAGk+P,UAAWvyW,KAAMv4K,EAAQ46gB,SAAW56gB,EAAQm7gB,YAAY5iW,OACtMv4K,EAAQyrG,QAAQzvE,QAAQ,YAAawS,EACzC,CACJ,GAGJ33D,KAAK83Y,SAAW,IAAIqvP,EAA0Bnmb,EAASzjL,IACvDv9B,KAAK83Y,SAASiwP,aAAavygB,WAAY,EACvC,IAAIw1gB,EAAchroB,KAAKgroB,YAAc,IAAIpC,EAAY5ooB,KAAK83Y,UAAU,QAA2B92L,IAC/Fgqb,EAAYp2gB,QAAQjqB,GAAG,cAAe3qG,KAAKopoB,mBAC3C4B,EAAYp2gB,QAAQjqB,GAAG,UAAW3qG,KAAK0poB,cAC3C,CACA,OAAA3yoB,GACIiJ,KAAK83Y,SAAS/gZ,SAClB,EAOJ,MAAMk0oB,UAAsB,IACxB,WAAAxqoB,CAAYugN,GACR3tK,MAAM2tK,GACNhhN,KAAKkroB,cAAgB,KACrBlroB,KAAKopoB,kBAAqBrzV,IACtB,IAAI,UAAE/9O,EAAS,SAAE8/U,GAAa93Y,MAC1B,QAAEpQ,GAAYooE,EAAU7uC,QACxBginB,EAAYv7oB,EAAQoqiB,YACpBhie,EAAUuxf,kBAAkBxzQ,EAAGk+P,UAAUlmjB,QAE7C+pZ,EAASswP,eAAe+C,GAExBrzP,EAASr0W,MAAQsyQ,EAAGstV,QA6DhC,SAAkCrrkB,GAC9B,IAAI,QAAEpoE,GAAYooE,EAAU7uC,QACxBsa,EAAQ7zC,EAAQqqiB,qBAIpB,OAHa,MAATx2f,IACAA,EAAQ7zC,EAAQsmiB,gBAEbzyf,CACX,CApE0C2nmB,CAAyBpzkB,GAAa,MAExEh4D,KAAKspoB,gBAAmBvzV,IACpB/1S,KAAKg4D,UAAU7uC,QAAQm7gB,YAAY3H,SAAS5mP,IAEhD/1S,KAAKqroB,gBAAkB,CAACr2O,EAAKs2O,KACzB,IAAI,QAAEninB,GAAYnpB,KAAKg4D,UACnBkzkB,EAAgB,KAChBvwB,GAAY,EAChB,GAAI3lN,EAAK,CACL,IAAIi0O,EAAajpoB,KAAKgroB,YAAY/B,WACjBj0O,EAAI01O,cAAgBzB,EAAWyB,aACzC1qoB,KAAK+8iB,oBACJ/8iB,KAAK+8iB,kBAAkBksF,EAAYj0O,KAEvCk2O,EAsDpB,SAA+BP,EAAMC,EAAMW,GACvC,IAAIC,EAAYb,EAAKz2F,SACjBu3F,EAAYb,EAAK12F,SACjB1lQ,EAAK,CACLg9V,EAAU33nB,MAAMpnB,MAChB++oB,EAAU33nB,MAAMnnB,IAChB++oB,EAAU53nB,MAAMpnB,MAChBg/oB,EAAU53nB,MAAMnnB,KAEpB8hT,EAAGp7S,KAAK,MACR,IAAIg/B,EAAQ,CAAC,EACb,IAAK,IAAIi1Q,KAAekkW,EAA2B,CAC/C,IAAInnmB,EAAMijQ,EAAYsjW,EAAMC,GAC5B,IAAY,IAARxmmB,EACA,OAAO,KAEPA,GACAt6C,OAAOC,OAAOqoC,EAAOgS,EAE7B,CAGA,OAFAhS,EAAMve,MAAQ,CAAEpnB,MAAO+hT,EAAG,GAAI9hT,IAAK8hT,EAAG,IACtCp8Q,EAAM+5gB,OAASq/F,EAAUr/F,OAClB/5gB,CACX,CA7EoCs5mB,CAAsBzC,EAAYj0O,EAAK7rY,EAAQi7gB,YAAYmnG,4BAE1EL,IAAkB,QAAqBA,EAAel2O,EAAIu8I,YAAapohB,KACxEwxlB,GAAY,EACZuwB,EAAgB,KAExB,CACIA,EACA/hnB,EAAQuqE,SAAS,CAAE1jF,KAAM,eAAgBo3b,UAAW8jM,IAE9CI,GACNninB,EAAQuqE,SAAS,CAAE1jF,KAAM,mBAExB2qmB,GAID,WAHA,UAKC2wB,IACDtroB,KAAKkroB,cAAgBA,IAG7BlroB,KAAKwpoB,gBAAmB11F,IAChB9ziB,KAAKkroB,iBAEL,QAAkBlroB,KAAKkroB,cAAep3F,EAAK9ziB,KAAKg4D,UAAU7uC,SAC1DnpB,KAAKkroB,cAAgB,OAG7B,IAAI,UAAElzkB,GAAcgpJ,GAChB,QAAEpxN,GAAYooE,EAAU7uC,QACxB2uX,EAAW93Y,KAAK83Y,SAAW,IAAIqvP,EAA0Bnmb,EAASzjL,IACtEu6W,EAASsvP,oBAAqB,EAC9BtvP,EAAS/4V,YAAcnvD,EAAQmqiB,mBAAqB,EACpDjiJ,EAASiwP,aAAavygB,UAAY5lI,EAAQ6liB,WAC1C,IAAIu1G,EAAchroB,KAAKgroB,YAAc,IAAIpC,EAAY5ooB,KAAK83Y,UAAU,QAA2B92L,IAC/Fgqb,EAAYp2gB,QAAQjqB,GAAG,cAAe3qG,KAAKopoB,mBAC3C4B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKspoB,iBACzC0B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKqroB,iBACzCL,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKwpoB,gBAC7C,CACA,OAAAzyoB,GACIiJ,KAAK83Y,SAAS/gZ,SAClB,EAmCJ,MAAM40oB,UAAsB,IACxB,WAAAlroB,CAAYugN,GACR3tK,MAAM2tK,GAENhhN,KAAK2hoB,UAAY,KACjB3hoB,KAAK4roB,WAAa,KAClB5roB,KAAKyhZ,YAAa,EAClBzhZ,KAAKs5iB,WAAa,KAClBt5iB,KAAK22iB,eAAiB,KACtB32iB,KAAK6roB,iBAAmB,KACxB7roB,KAAK8roB,cAAgB,KACrB9roB,KAAK+roB,sBAAwB,KAC7B/roB,KAAKopoB,kBAAqBrzV,IACtB,IAAIi2V,EAAaj2V,EAAGk+P,UAAUlmjB,QAC1B,UAAEiqE,EAAS,SAAE8/U,GAAa93Y,MAC1B,OAAEwpD,GAAWsuV,GACb,QAAEloZ,GAAYooE,EAAU7uC,QACxB8inB,EAAiBj0kB,EAAU7uC,QAC/BnpB,KAAK2hoB,UAAY5rV,EAAG4rV,UACpB,IAAIiK,EAAa5roB,KAAK4roB,YAAa,OAAS71V,EAAG4rV,WAE3CuK,GADalsoB,KAAKs5iB,WAAasyF,EAAWtyF,YACbjkjB,SAASy2iB,WAC1C9riB,KAAK22iB,gBAAiB,QAAkBs1F,EAAe5nG,iBAAiB2H,WAAYkgG,GACpFp0P,EAAS/4V,YAAcg3P,EAAGstV,QAAU,EAAIzzoB,EAAQumiB,qBAChDr+I,EAASr0W,MAEJsyQ,EAAGstV,SAAW6I,IAAoBl0kB,EAAU5lC,MAAMkxhB,eAkTnE,SAAgCtrf,GAC5B,IAAI,QAAEpoE,GAAYooE,EAAU7uC,QACxBsa,EAAQ7zC,EAAQsqiB,oBAIpB,OAHa,MAATz2f,IACAA,EAAQ7zC,EAAQsmiB,gBAEbzyf,CACX,CAxToB0omB,CAAuBn0kB,GACvB,KACJpoE,EAAQw8oB,kBACR5ilB,EAAOxhE,WAAa4H,EAAQw8oB,kBAG5B5ilB,EAAOxhE,YAAa,OAAegkpB,EAAY,OAEnDxilB,EAAO06kB,eAAiBt0oB,EAAQ4liB,mBAChC,IAAI1sV,EAAU9wI,EAAUsxf,iBAAiB0iF,MACpC,OAAeA,EAAY,qBAChCl0P,EAASswP,eAAet/b,GAGxB9oM,KAAKyhZ,WAAa34M,GACditG,EAAG4rV,UAAUh4hB,UAAUniH,SAAS,uBAExCwY,KAAKspoB,gBAAmBvzV,IACpB,IAAIk2V,EAAiBjsoB,KAAKg4D,UAAU7uC,QAChCmwhB,EAAat5iB,KAAKs5iB,WAClB4yF,EAAkB5yF,EAAWjkjB,SAASy2iB,WACtC/1P,EAAGstV,QAEC6I,IAAoBlsoB,KAAKg4D,UAAU5lC,MAAMkxhB,gBACzC2oF,EAAev4iB,SAAS,CAAE1jF,KAAM,eAAgBk8nB,oBAKpDD,EAAev4iB,SAAS,CAAE1jF,KAAM,mBAEhChQ,KAAKyhZ,aACLwqP,EAAe3nG,YAAY3H,SAAS5mP,GACpCk2V,EAAer3gB,QAAQzvE,QAAQ,iBAAkB,CAC7C5nB,GAAIv9B,KAAK2hoB,UACTx1nB,MAAO,IAAI,IAAU8/nB,EAAgB3yF,EAAWv0b,IAAKu0b,EAAWjkjB,UAChE2+iB,QAASj+P,EAAGk+P,UACZvyW,KAAMuqc,EAAeloG,YAIjC/jiB,KAAKqroB,gBAAkB,CAACr2O,EAAKs2O,KACzB,IAAKtroB,KAAKyhZ,WACN,OAEJ,IAAIk1J,EAAiB32iB,KAAK22iB,eACtBsyF,EAAajpoB,KAAKgroB,YAAY/B,WAC9BgD,EAAiBjsoB,KAAKg4D,UAAU7uC,QAEhC0inB,EAAmB,KACnBt3U,EAAW,KACXw3U,EAAwB,KACxBpxB,GAAY,EACZzwlB,EAAc,CACd45hB,eAAgBnN,EAChBqN,eAAe,SACfG,SAAS,GAEb,GAAInvJ,EAAK,CACL62O,EAAmB72O,EAAI7rY,QACvB,IAAIkjnB,EAAmBR,EAAiBj8oB,QACpCq8oB,IAAmBJ,GAClBQ,EAAiBjid,UAAYiid,EAAiBh0G,WAC/C9jO,EA+MpB,SAA8Bo2U,EAAMC,EAAM0B,EAAoBC,GAC1D,IAAIf,EAAYb,EAAKz2F,SACjBu3F,EAAYb,EAAK12F,SACjBtL,EAAQ4iG,EAAU33nB,MAAMpnB,MACxBo8iB,EAAQ4iG,EAAU53nB,MAAMpnB,MACxBoojB,EAAgB,CAAC,EACjB22F,EAAUr/F,SAAWs/F,EAAUt/F,SAC/B0I,EAAc1I,OAASs/F,EAAUt/F,OACjC0I,EAAc9G,OAAS68F,EAAKzhnB,QAAQv5B,QAAQ8liB,uBAIxCkT,EAHA6iG,EAAUt/F,QAGF,OAAWmgG,GAKXA,GAGhB,IAAI9xmB,GAAQ,QAAUougB,EAAOC,EAAO8hG,EAAKxhnB,QAAQ+6gB,QAASymG,EAAKD,cAAgBE,EAAKF,YAChFC,EAAK7hG,UACL,MACAtugB,EAAMk6Q,eACNmgQ,EAAc1I,QAAS,GAE3B,IAAI53O,EAAW,CACX8gP,WAAY76gB,EACZq6gB,iBAEJ,IAAK,IAAI23F,KAAYD,EACjBC,EAASj4U,EAAUo2U,EAAMC,GAE7B,OAAOr2U,CACX,CAjP+Bk4U,CAAqBxD,EAAYj0O,EAAKh1Z,KAAKs5iB,WAAWjkjB,SAASwe,MAAMpnB,MAAOo/oB,EAAiBxnG,iBAAiBD,YAAYsoG,4BACjIn4U,IACAw3U,GAAwB,QAA0Bp1F,EAAgBk1F,EAAiBxnG,iBAAiBuT,aAAcrjP,EAAUs3U,GAC5H3hnB,EAAY85hB,cAAgB+nF,GACvB,QAAmB7hnB,EAAa8qY,EAAIu8I,YAAas6F,KAClDlxB,GAAY,EACZpmT,EAAW,KACXw3U,EAAwB,KACxB7hnB,EAAY85hB,eAAgB,YAKpC6nF,EAAmB,IAE3B,CACA7roB,KAAK2soB,YAAYd,EAAkB3hnB,GAC9BywlB,GAID,WAHA,UAKC2wB,IACGW,IAAmBJ,GACnB3B,EAAYjB,EAAYj0O,KACxBzgG,EAAW,MAEfv0T,KAAK83Y,SAAS80K,sBAAsBr4P,GAGpCv0T,KAAK83Y,SAAS60K,oBAAoB33J,IAAQh1Z,KAAK2hoB,UAAU/5oB,cAAc2V,cAAc,qBAErFyC,KAAK6roB,iBAAmBA,EACxB7roB,KAAK8roB,cAAgBv3U,EACrBv0T,KAAK+roB,sBAAwBA,IAGrC/roB,KAAKwpoB,gBAAkB,KACdxpoB,KAAKyhZ,YACNzhZ,KAAK89X,WAGb99X,KAAK0poB,cAAiB3zV,IAClB,GAAI/1S,KAAKyhZ,WAAY,CACjB,IAAIwqP,EAAiBjsoB,KAAKg4D,UAAU7uC,QAChC6qgB,EAAci4G,EAAeloG,SAC7B,iBAAE8nG,EAAgB,cAAEC,GAAkB9roB,KACtCusiB,EAAWvsiB,KAAKs5iB,WAAWv0b,IAC3Bmwb,EAAgBl1iB,KAAKs5iB,WAAWjkjB,SAChCkijB,EAAW,IAAI,IAAU00F,EAAgB1/F,EAAU2I,GACnDyB,EAAiB32iB,KAAK22iB,eACtBo1F,EAAwB/roB,KAAK+roB,uBAC7B,SAAE5C,GAAanpoB,KAAKgroB,YAQxB,GAPAhroB,KAAK4soB,YACLX,EAAer3gB,QAAQzvE,QAAQ,gBAAiB,CAC5C5nB,GAAIv9B,KAAK2hoB,UACTx1nB,MAAOoriB,EACPvD,QAASj+P,EAAGk+P,UACZvyW,KAAMsyV,IAEN83G,GAEA,GAAID,IAAqBI,EAAgB,CACrC,IAAIY,EAAkB,IAAI,IAAUZ,EAAgBF,EAAsBv9d,KAAK+9X,EAASV,OAAQqJ,EAAgB62F,EAAsBxvkB,UAAU24e,EAAcpJ,YAAc,MAC5KmgG,EAAev4iB,SAAS,CACpB1jF,KAAM,eACNg8hB,WAAY+/F,IAEhB,IAAIe,EAAiB,CACjBl2F,SAAUW,EACVpriB,MAAO0goB,EACPh2F,eAAe,OAAek1F,EAAuBE,EAAgB/2F,GACrE,MAAA6B,GACIk1F,EAAev4iB,SAAS,CACpB1jF,KAAM,eACNg8hB,WAAY2K,GAEpB,GAEAo2F,EAAc,CAAC,EACnB,IAAK,IAAI1lW,KAAe4kW,EAAe5nG,iBAAiBD,YAAY4oG,sBAChEljpB,OAAOC,OAAOgjpB,EAAa1lW,EAAYykW,EAAeG,IAE1DA,EAAer3gB,QAAQzvE,QAAQ,YAAar7D,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG+ipB,GAAiBC,GAAc,CAAExvmB,GAAIw4Q,EAAG4rV,UAAWnnmB,MAAOsxmB,EAAcz2F,WAAYrB,QAASj+P,EAAGk+P,UAAWvyW,KAAMsyV,KAC3Mi4G,EAAer3gB,QAAQzvE,QAAQ,cAAe2nlB,EAElD,MACK,GAAIjB,EAAkB,CACvB,IAAIoB,EAAiB,CACjB9goB,MAAOoriB,EACPV,eAAe,OAAeF,EAAgBs1F,EAAgB/2F,GAC9D,MAAA6B,GACIk1F,EAAev4iB,SAAS,CACpB1jF,KAAM,eACNg8hB,WAAY2K,GAEpB,GAEJs1F,EAAer3gB,QAAQzvE,QAAQ,aAAcr7D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkjpB,GAAiB,CAAEC,UAAWn3V,EAAG4rV,UAAWjgc,KAAMsyV,KAC/Hi4G,EAAev4iB,SAAS,CACpB1jF,KAAM,gBACNg8hB,WAAY2K,IAEhBs1F,EAAer3gB,QAAQzvE,QAAQ,cAAe8nlB,GAC9C,IAAIE,EAAgBpB,EAAsBv9d,KAAK+9X,EAASV,OACpDuhG,EAAqBrB,EAAsBxvkB,UAAU24e,EAAcpJ,YACnEuhG,EAAgB,IAAI,IAAUxB,EAAkBsB,EAAeC,GACnEvB,EAAiBn4iB,SAAS,CACtB1jF,KAAM,eACNg8hB,WAAY+/F,IAEhB,IAAIuB,EAAc,CACdnhoB,MAAOkhoB,EACPx2F,eAAe,OAAek1F,EAAuBF,EAAkBuB,GACvE,MAAAr2F,GACI80F,EAAiBn4iB,SAAS,CACtB1jF,KAAM,gBACNg8hB,WAAY+/F,GAEpB,GAEJF,EAAiBj3gB,QAAQzvE,QAAQ,WAAYmolB,GACzCv3V,EAAGstV,SACHwI,EAAiBn4iB,SAAS,CACtB1jF,KAAM,eACNk8nB,gBAAiBh3F,EAAcpJ,aAGvC+/F,EAAiBj3gB,QAAQzvE,QAAQ,OAAQr7D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8gpB,EAA6B1B,EAASj1F,SAAU23F,IAAoB,CAAEqB,UAAWn3V,EAAG4rV,UAAW3tF,QAASj+P,EAAGk+P,UAAWvyW,KAAMync,EAAShgnB,QAAQ46gB,WACtN8nG,EAAiBj3gB,QAAQzvE,QAAQ,eAAgBr7D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGujpB,GAAc,CAAEJ,UAAWn3V,EAAG4rV,UAAWjgc,KAAMync,EAAShgnB,QAAQ46gB,UACrJ,OAGAkoG,EAAer3gB,QAAQzvE,QAAQ,eAEvC,CACAnlD,KAAK89X,WAET,IAAI,UAAE9lU,GAAch4D,MAChB,QAAEpQ,GAAYooE,EAAU7uC,QACxB2uX,EAAW93Y,KAAK83Y,SAAW,IAAIqvP,EAA0Bnmb,EAASzjL,IACtEu6W,EAASL,QAAQ9vR,SAAWgkhB,EAAc4B,SAC1Cz1P,EAASsvP,oBAAqB,EAC9BtvP,EAASiwP,aAAavygB,UAAY5lI,EAAQ6liB,WAC1C,IAAIu1G,EAAchroB,KAAKgroB,YAAc,IAAIpC,EAAY5ooB,KAAK83Y,SAAU,MACpEkzP,EAAYlC,iBAAmB9nb,EAASi8V,eACxC+tF,EAAYp2gB,QAAQjqB,GAAG,cAAe3qG,KAAKopoB,mBAC3C4B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKspoB,iBACzC0B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKqroB,iBACzCL,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKwpoB,iBACzCwB,EAAYp2gB,QAAQjqB,GAAG,UAAW3qG,KAAK0poB,cAC3C,CACA,OAAA3yoB,GACIiJ,KAAK83Y,SAAS/gZ,SAClB,CAEA,WAAA41oB,CAAYa,EAAa79oB,GACrB,IAAIs8oB,EAAiBjsoB,KAAKg4D,UAAU7uC,QAChCsknB,EAAcztoB,KAAK6roB,iBAEnB4B,GAAeA,IAAgBD,IAG3BC,IAAgBxB,EAChBwB,EAAY/5iB,SAAS,CACjB1jF,KAAM,iBACNrgB,MAAO,CACHm0jB,eAAgBn0jB,EAAMm0jB,eACtBE,eAAe,SACfG,SAAS,KAMjBspF,EAAY/5iB,SAAS,CAAE1jF,KAAM,sBAGjCw9nB,GACAA,EAAY95iB,SAAS,CAAE1jF,KAAM,iBAAkBrgB,SAEvD,CACA,SAAAi9oB,GACI,IAAIc,EAAkB1toB,KAAKg4D,UAAU7uC,SACjC,iBAAE0inB,GAAqB7roB,KACvB6roB,GACAA,EAAiBn4iB,SAAS,CAAE1jF,KAAM,qBAGlC09nB,IAAoB7B,GACpB6B,EAAgBh6iB,SAAS,CAAE1jF,KAAM,oBAEzC,CACA,OAAA8tX,GACI99X,KAAK4roB,WAAa,KAClB5roB,KAAKyhZ,YAAa,EAClBzhZ,KAAKs5iB,WAAa,KAClBt5iB,KAAK22iB,eAAiB,KACtB32iB,KAAK6roB,iBAAmB,KACxB7roB,KAAK8roB,cAAgB,KACrB9roB,KAAK+roB,sBAAwB,IACjC,EAIJJ,EAAc4B,SAAW,2CA6CzB,MAAMI,UAAsB,IACxB,WAAAltoB,CAAYugN,GACR3tK,MAAM2tK,GAENhhN,KAAK4toB,cAAgB,KACrB5toB,KAAK6toB,YAAc,KACnB7toB,KAAKs5iB,WAAa,KAClBt5iB,KAAK22iB,eAAiB,KACtB32iB,KAAK8roB,cAAgB,KACrB9roB,KAAK+roB,sBAAwB,KAC7B/roB,KAAKopoB,kBAAqBrzV,IACtB,IAAI,UAAE/9O,GAAch4D,KAChB8toB,EAAQ9toB,KAAK+toB,WAAWh4V,GACxB4uB,GAAM,OAASmpU,GACfx0F,EAAat5iB,KAAKs5iB,WAAa30O,EAAI20O,WACvCt5iB,KAAK83Y,SAAS/4V,YAAciZ,EAAU7uC,QAAQv5B,QAAQumiB,qBAEtDn2hB,KAAK83Y,SAASswP,eAAepooB,KAAKg4D,UAAUsxf,iBAAiBvzQ,EAAGk+P,UAAUlmjB,SACrEgoT,EAAGstV,SAAWrjoB,KAAKg4D,UAAU5lC,MAAMkxhB,iBAAmBhK,EAAWjkjB,SAASy2iB,aAEnF9riB,KAAKspoB,gBAAmBvzV,IACpB,IAAI,QAAE5sR,GAAYnpB,KAAKg4D,UACnBshf,EAAat5iB,KAAKs5iB,WACtBt5iB,KAAK22iB,gBAAiB,QAAkBxthB,EAAQk7gB,iBAAiB2H,WAAYhsiB,KAAKs5iB,WAAWjkjB,SAASy2iB,YACtG,IAAIgiG,EAAQ9toB,KAAK+toB,WAAWh4V,GAC5B/1S,KAAK4toB,cAAgBE,EACrB9toB,KAAK6toB,aAAc,OAASC,GAC5B3knB,EAAQm7gB,YAAY3H,WACpBxzgB,EAAQyrG,QAAQzvE,QAAQ,mBAAoB,CACxC5nB,GAAIuwmB,EACJ3hoB,MAAO,IAAI,IAAUgd,EAASmwhB,EAAWv0b,IAAKu0b,EAAWjkjB,UACzD2+iB,QAASj+P,EAAGk+P,UACZvyW,KAAMv4K,EAAQ46gB,WAGtB/jiB,KAAKqroB,gBAAkB,CAACr2O,EAAKs2O,EAASv1V,KAClC,IAAI,QAAE5sR,GAAYnpB,KAAKg4D,UACnB2+e,EAAiB32iB,KAAK22iB,eACtBsyF,EAAajpoB,KAAKgroB,YAAY/B,WAC9B/zF,EAAgBl1iB,KAAKs5iB,WAAWjkjB,SAChCk/T,EAAW,KACXw3U,EAAwB,KACxBpxB,GAAY,EACZzwlB,EAAc,CACd45hB,eAAgBnN,EAChBqN,eAAe,SACfG,SAAS,GAETnvJ,IACiBA,EAAI01O,cAAgBzB,EAAWyB,aACzC1qoB,KAAK+8iB,oBACJ/8iB,KAAK+8iB,kBAAkBksF,EAAYj0O,KAEvCzgG,EAgGpB,SAAyBo2U,EAAMC,EAAMoD,EAAa53F,GAC9C,IAAIlS,EAAUymG,EAAKxhnB,QAAQ+6gB,QACvB0E,EAAQ+hG,EAAKz2F,SAASrgiB,MAAMpnB,MAC5Bo8iB,EAAQ+hG,EAAK12F,SAASrgiB,MAAMpnB,MAC5B+tC,GAAQ,QAAUougB,EAAOC,EAAO3E,EAASymG,EAAK7hG,WAClD,GAAIklG,GACA,GAAI9pG,EAAQ5wiB,IAAI8ijB,EAAc3pjB,MAAO+tC,GAAS47gB,EAAc1pjB,IACxD,MAAO,CAAEoojB,WAAYt6gB,QAGxB,GAAI0pgB,EAAQ5wiB,IAAI8ijB,EAAc1pjB,IAAK8tC,GAAS47gB,EAAc3pjB,MAC3D,MAAO,CAAEsojB,SAAUv6gB,GAEvB,OAAO,IACX,CA9G+ByzmB,CAAgBhF,EAAYj0O,EAAKj/G,EAAG4rV,UAAUh4hB,UAAUniH,SAAS,0BAA2B0tjB,EAAcrhiB,SAGzH0gT,IACAw3U,GAAwB,QAA0Bp1F,EAAgBxthB,EAAQk7gB,iBAAiBuT,aAAcrjP,EAAUprS,GACnHe,EAAY85hB,cAAgB+nF,GACvB,QAAmB7hnB,EAAa8qY,EAAIu8I,YAAapohB,KAClDwxlB,GAAY,EACZpmT,EAAW,KACXw3U,EAAwB,KACxB7hnB,EAAY85hB,cAAgB,OAGhC+nF,EACA5inB,EAAQuqE,SAAS,CACb1jF,KAAM,mBACNrgB,MAAOu6B,IAIXf,EAAQuqE,SAAS,CAAE1jF,KAAM,uBAExB2qmB,GAID,WAHA,UAKC2wB,IACG/2U,GAAY21U,EAAYjB,EAAYj0O,KACpCzgG,EAAW,MAEfv0T,KAAK8roB,cAAgBv3U,EACrBv0T,KAAK+roB,sBAAwBA,IAGrC/roB,KAAK0poB,cAAiB3zV,IAClB,IAAI,QAAE5sR,GAAYnpB,KAAKg4D,UACnBu0e,EAAWvsiB,KAAKs5iB,WAAWv0b,IAC3Bmwb,EAAgBl1iB,KAAKs5iB,WAAWjkjB,SAChCkijB,EAAW,IAAI,IAAUpuhB,EAASojhB,EAAU2I,GAC5CyB,EAAiB32iB,KAAK22iB,eACtBo1F,EAAwB/roB,KAAK+roB,sBAOjC,GANA5inB,EAAQyrG,QAAQzvE,QAAQ,kBAAmB,CACvC5nB,GAAIv9B,KAAK4toB,cACTzhoB,MAAOoriB,EACPvD,QAASj+P,EAAGk+P,UACZvyW,KAAMv4K,EAAQ46gB,UAEd/jiB,KAAK8roB,cAAe,CACpB,IAAIe,EAAkB,IAAI,IAAU1jnB,EAAS4inB,EAAsBv9d,KAAK+9X,EAASV,OAAQqJ,EAAgB62F,EAAsBxvkB,UAAU24e,EAAcpJ,YAAc,MACrK3ihB,EAAQuqE,SAAS,CACb1jF,KAAM,eACNg8hB,WAAY+/F,IAEhB,IAAIe,EAAiB,CACjBl2F,SAAUW,EACVpriB,MAAO0goB,EACPh2F,eAAe,OAAek1F,EAAuB5inB,EAAS+rhB,GAC9D,MAAA6B,GACI5thB,EAAQuqE,SAAS,CACb1jF,KAAM,eACNg8hB,WAAY2K,GAEpB,GAEJxthB,EAAQyrG,QAAQzvE,QAAQ,cAAer7D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG+ipB,GAAiB,CAAEvvmB,GAAIv9B,KAAK4toB,cAAe94F,WAAY90iB,KAAK8roB,cAAch3F,aAAc,OAAe,GAAIC,SAAU/0iB,KAAK8roB,cAAc/2F,WAAY,OAAe,GAAIf,QAASj+P,EAAGk+P,UAAWvyW,KAAMv4K,EAAQ46gB,WACnR56gB,EAAQyrG,QAAQzvE,QAAQ,cAAe2nlB,EAC3C,MAEI3jnB,EAAQyrG,QAAQzvE,QAAQ,kBAG5BnlD,KAAK6toB,YAAc,KACnB7toB,KAAK22iB,eAAiB,KACtB32iB,KAAK8roB,cAAgB,MAGzB,IAAI,UAAE9zkB,GAAcgpJ,EAChB82L,EAAW93Y,KAAK83Y,SAAW,IAAIqvP,EAA0Bnmb,EAASzjL,IACtEu6W,EAASL,QAAQ9vR,SAAW,oBAC5BmwR,EAASsvP,oBAAqB,EAC9BtvP,EAASiwP,aAAavygB,UAAYx9D,EAAU7uC,QAAQv5B,QAAQ6liB,WAC5D,IAAIu1G,EAAchroB,KAAKgroB,YAAc,IAAIpC,EAAY5ooB,KAAK83Y,UAAU,QAA2B92L,IAC/Fgqb,EAAYp2gB,QAAQjqB,GAAG,cAAe3qG,KAAKopoB,mBAC3C4B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKspoB,iBACzC0B,EAAYp2gB,QAAQjqB,GAAG,YAAa3qG,KAAKqroB,iBACzCL,EAAYp2gB,QAAQjqB,GAAG,UAAW3qG,KAAK0poB,cAC3C,CACA,OAAA3yoB,GACIiJ,KAAK83Y,SAAS/gZ,SAClB,CACA,UAAAg3oB,CAAWh4V,GACP,OAAO,OAAeA,EAAG4rV,UAAW,YACxC,EAyEJ,MAAMuM,EAAkB,CACpB9B,kBAAmB,KAEjB+B,EAAoB,CACtBC,UAAW,IACXC,eAAgB,IAChBC,cAAe,IACfC,UAAW,IACXC,iBAAkB,IAClBC,gBAAiB,IACjBvrF,YAAa,IACbj5C,KAAM,IACNykI,aAAc,IACdC,WAAY,KAqKhB,KAAOC,eAAiB,GAyDc,KA+FtC,IAAIp4oB,GAAQ,QAAa,CACrBjD,KAAM,4BACNs7oB,sBAAuB,CAAC9D,EAAcE,EAAeU,EAAegC,GACpEmB,qBAAsB,CApY1B,MACI,WAAAruoB,CAAY0oB,GACRnpB,KAAKmpB,QAAUA,EACfnpB,KAAK+uoB,2BAA4B,EACjC/uoB,KAAKgvoB,eAAgB,EACrBhvoB,KAAKivoB,cAAe,EACpBjvoB,KAAKu1T,SAAY25U,IACTA,EAAWl7F,UACXh0iB,KAAK+uoB,2BAA4B,IAGzC/uoB,KAAKmvoB,sBAAyBr7F,IAC1B,IAAIxb,EAAiBt4hB,KAAKmpB,QAAQv5B,QAAQ0oiB,eACtCorG,GAAS,QAAsB5vF,EAAIG,WACvCj0iB,KAAKgvoB,iBAAkB,OAAetL,EAAQprG,GAC9Ct4hB,KAAKivoB,gBAAiB,OAAevL,EAAQiI,EAAc4B,WAE/DvtoB,KAAKovoB,oBAAuBt7F,IACxB,IAAI,QAAE3qhB,GAAYnpB,MACd,gBAAEqvoB,GAAoBrvoB,KACtBsxjB,EAAgBnoiB,EAAQk7gB,iBAE5B,IAAKgrG,EAAgBrN,eAAgB,CACjC,GAAI1wE,EAAcxR,gBACb9/iB,KAAK+uoB,0BACR,CACE,IAAIp5G,EAAexsgB,EAAQv5B,QAAQ+liB,cAC/BA,GAAkBA,GAAiB31hB,KAAKgvoB,eACxC7lnB,EAAQm7gB,YAAY3H,SAASmX,EAErC,CACIwd,EAAchO,iBACbtjjB,KAAKivoB,cAEN9lnB,EAAQuqE,SAAS,CAAE1jF,KAAM,kBAEjC,CACAhQ,KAAK+uoB,2BAA4B,GAErC,IAAIM,EAAkBrvoB,KAAKqvoB,gBAAkB,IAAI3N,EAAgBj5oB,UACjE4mpB,EAAgBxN,kBAAmB,EACnCwN,EAAgBvN,mBAAoB,EACpCuN,EAAgBz6gB,QAAQjqB,GAAG,cAAe3qG,KAAKmvoB,uBAC/CE,EAAgBz6gB,QAAQjqB,GAAG,YAAa3qG,KAAKovoB,qBAI7CjmnB,EAAQyrG,QAAQjqB,GAAG,SAAU3qG,KAAKu1T,SACtC,CACA,OAAAx+T,GACIiJ,KAAKmpB,QAAQyrG,QAAQ3H,IAAI,SAAUjtH,KAAKu1T,UACxCv1T,KAAKqvoB,gBAAgBt4oB,SACzB,IAiVAu4oB,oBAAqBnI,EACrBoI,eAAgBrB,EAChBsB,iBAAkBrB,G,+BCzkEtB,IAAIsB,EAAuB,gBACvBtpZ,EAAgB,EAAQ,OACxBhlJ,EAAW,EAAQ,OACnB4iO,EAAY,EAAQ,KACpB9jN,EAAQ,EAAQ,OAChB4gZ,EAAiB,EAAQ,OAEzBv7D,EAAY,WACZo3E,EAAkB5qf,OAAO1xB,UACzBsvoB,EAAiBhzH,EAAgBp3E,GAEjCqqM,EAAc1vhB,EAAM,WAAc,MAA4D,SAArDyvhB,EAAervoB,KAAK,CAAEkR,OAAQ,IAAKqzG,MAAO,KAAmB,GAEtGgrhB,EAAiBH,GAAwBC,EAAen8oB,OAAS+xc,GAIjEqqM,GAAeC,IACjBzpZ,EAAcu2R,EAAiBp3E,EAAW,WACxC,IAAI1qb,EAAIumF,EAASnhG,MAGjB,MAAO,IAFO+jU,EAAUnpT,EAAErJ,QAEH,IADXwyT,EAAU88L,EAAejmf,GAEvC,EAAG,CAAE6pG,QAAQ,G,iDCvBf,IAAIorhB,EAAWlqpB,GACQ,mBAAVA,EACFA,EAEQ,WACb,OAAOA,CACT,EAMAmqpB,EAA6B,oBAATxtjB,KAAuBA,KAAO,KAClDytjB,EAA8B,oBAAX5opB,OAAyBA,OAAS,KACrD45H,EAAS+uhB,GAAcC,GAAa1tjB,WAKpC2tjB,EACM,SADNA,EAEO,UAFPA,EAGM,SAHNA,EAIO,UAJPA,EAKO,UAEPC,EACK,YADLA,EAEK,YAFLA,EAIK,YAJLA,EAKK,YAELC,EAES,YAKTC,EAAoB,wBAGpBC,EAAO,MACT,WAAA3voB,CAAYi0kB,EAASvokB,EAAOjC,EAASyzD,GACnC39D,KAAK00kB,QAAUA,EACf10kB,KAAKmM,MAAQA,EACbnM,KAAKkK,QAAUA,GAAW,WACxB,MAAO,CAAC,CACV,EACAlK,KAAKqwoB,aAAe,KACpBrwoB,KAAK29D,QAAUA,EACf39D,KAAKswoB,aAAe,KACpBtwoB,KAAKuwoB,SAAW,GAChBvwoB,KAAK8B,MAAO,CACd,CAKA,MAAA0uoB,CAAO7ykB,GACL39D,KAAK29D,QAAUA,EACf39D,KAAKzJ,QACLyJ,KAAKuyN,MACP,CAIA,IAAAA,GACMvyN,KAAKywoB,YAAY,aAGrBzwoB,KAAK0woB,eACL1woB,KAAK8B,MAAO,EACZ9B,KAAK00kB,QAAQi8D,OAAO78oB,KAAK,CACvBkkK,MAAOh4J,KAAK00kB,QAAQ18a,MACpB7rJ,MAAOnM,KAAKmM,MACZjC,QAASlK,KAAKkK,UACd2oG,IAAK7yG,KAAK6yG,IACV+9hB,SAAU5woB,KAAK00kB,QAAQm8D,YAE3B,CAMA,OAAAC,CAAQ3jhB,EAAQj+G,GAKd,OAJIlP,KAAKywoB,YAAYtjhB,IACnBj+G,EAASlP,KAAKqwoB,aAAahijB,UAE7BruF,KAAKuwoB,SAASz8oB,KAAK,CAAEq5H,SAAQj+G,aACtBlP,IACT,CAIA,KAAAzJ,GACEyJ,KAAK+woB,iBACL/woB,KAAK6yG,IAAM,KACX7yG,KAAKgxoB,SAAW,KAChBhxoB,KAAKqwoB,aAAe,KACpBrwoB,KAAK8B,MAAO,CACd,CAIA,YAAAmvoB,EAAa,OAAE9jhB,EAAM,SAAE9+B,EAAQ,KAAEjjG,IAC/B4U,KAAKuwoB,SAASt/oB,OAAQ5N,GAAMA,EAAE8pI,SAAWA,GAAQn7H,QAAS3O,GAAMA,EAAE6rB,SAASm/E,GAC7E,CAIA,cAAA0ijB,GACO/woB,KAAKgxoB,UAGVhxoB,KAAK00kB,QAAQznd,IAAIjtH,KAAKgxoB,SACxB,CAIA,aAAAE,GACEvpoB,aAAa3H,KAAKswoB,cAClBtwoB,KAAKswoB,aAAe,IACtB,CAIA,YAAAI,GACM1woB,KAAKswoB,cACPtwoB,KAAKkxoB,gBAEPlxoB,KAAK6yG,IAAM7yG,KAAK00kB,QAAQi8D,OAAOQ,UAC/BnxoB,KAAKgxoB,SAAWhxoB,KAAK00kB,QAAQ08D,eAAepxoB,KAAK6yG,KACjD7yG,KAAK00kB,QAAQ/pe,GAAG3qG,KAAKgxoB,SAAW9moB,IAC9BlK,KAAK+woB,iBACL/woB,KAAKkxoB,gBACLlxoB,KAAKqwoB,aAAenmoB,EACpBlK,KAAKixoB,aAAa/moB,KAEpBlK,KAAKswoB,aAAe7ooB,WAAW,KAC7BzH,KAAKmlD,QAAQ,UAAW,CAAC,IACxBnlD,KAAK29D,QACV,CAIA,WAAA8ykB,CAAYtjhB,GACV,OAAOntH,KAAKqwoB,cAAgBrwoB,KAAKqwoB,aAAaljhB,SAAWA,CAC3D,CAIA,OAAAhoE,CAAQgoE,EAAQ9+B,GACdruF,KAAK00kB,QAAQvvhB,QAAQnlD,KAAKgxoB,SAAU,CAAE7jhB,SAAQ9+B,YAChD,GAIEjqF,EAAQ,MACV,WAAA3D,CAAYyO,EAAUmioB,GACpBrxoB,KAAKkP,SAAWA,EAChBlP,KAAKqxoB,UAAYA,EACjBrxoB,KAAKoH,MAAQ,KACbpH,KAAKsxoB,MAAQ,CACf,CACA,KAAA/6oB,GACEyJ,KAAKsxoB,MAAQ,EACb3poB,aAAa3H,KAAKoH,MACpB,CAIA,eAAAmqoB,GACE5poB,aAAa3H,KAAKoH,OAClBpH,KAAKoH,MAAQK,WAAW,KACtBzH,KAAKsxoB,MAAQtxoB,KAAKsxoB,MAAQ,EAC1BtxoB,KAAKkP,YACJlP,KAAKqxoB,UAAUrxoB,KAAKsxoB,MAAQ,GACjC,GAIEE,EAAU,MACZ,WAAA/woB,CAAYu3J,EAAO73G,EAAQwwlB,GACzB3woB,KAAKrQ,MAAQqgpB,EACbhwoB,KAAKg4J,MAAQA,EACbh4J,KAAKmgD,OAAS0vlB,EAAQ1vlB,GAAU,CAAC,GACjCngD,KAAK2woB,OAASA,EACd3woB,KAAK0qG,SAAW,GAChB1qG,KAAKyxoB,WAAa,EAClBzxoB,KAAK29D,QAAU39D,KAAK2woB,OAAOhzkB,QAC3B39D,KAAK0xoB,YAAa,EAClB1xoB,KAAK2xoB,SAAW,IAAIvB,EAAKpwoB,KArKrB,WAqKgDA,KAAKmgD,OAAQngD,KAAK29D,SACtE39D,KAAK4xoB,WAAa,GAClB5xoB,KAAK6xoB,gBAAkB,GACvB7xoB,KAAK8xoB,YAAc,IAAI1toB,EAAM,KACvBpE,KAAK2woB,OAAOjplB,eACd1nD,KAAK2xe,UAEN3xe,KAAK2woB,OAAOoB,eACf/xoB,KAAK6xoB,gBAAgB/9oB,KAAKkM,KAAK2woB,OAAOtzR,QAAQ,IAAMr9W,KAAK8xoB,YAAYv7oB,UACrEyJ,KAAK6xoB,gBAAgB/9oB,KACnBkM,KAAK2woB,OAAOqB,OAAO,KACjBhyoB,KAAK8xoB,YAAYv7oB,QACbyJ,KAAKiyoB,aACPjyoB,KAAK2xe,YAIX3xe,KAAK2xoB,SAASb,QAAQ,KAAM,KAC1B9woB,KAAKrQ,MAAQqgpB,EACbhwoB,KAAK8xoB,YAAYv7oB,QACjByJ,KAAK4xoB,WAAW5/oB,QAASkgpB,GAAcA,EAAU3/a,QACjDvyN,KAAK4xoB,WAAa,KAEpB5xoB,KAAK2xoB,SAASb,QAAQ,QAAS,KAC7B9woB,KAAKrQ,MAAQqgpB,EACThwoB,KAAK2woB,OAAOjplB,eACd1nD,KAAK8xoB,YAAYP,oBAGrBvxoB,KAAKovX,QAAQ,KACXpvX,KAAK8xoB,YAAYv7oB,QACbyJ,KAAK2woB,OAAOwB,aACdnyoB,KAAK2woB,OAAO1qpB,IAAI,UAAW,SAAS+Z,KAAKg4J,SAASh4J,KAAK6woB,aACzD7woB,KAAKrQ,MAAQqgpB,EACbhwoB,KAAK2woB,OAAO/tmB,OAAO5iC,QAErBA,KAAKq9W,QAAS7iI,IACRx6O,KAAK2woB,OAAOwB,aACdnyoB,KAAK2woB,OAAO1qpB,IAAI,UAAW,SAAS+Z,KAAKg4J,QAASwiF,GAChDx6O,KAAKoyoB,aACPpyoB,KAAK2xoB,SAASp7oB,QAEhByJ,KAAKrQ,MAAQqgpB,EACThwoB,KAAK2woB,OAAOjplB,eACd1nD,KAAK8xoB,YAAYP,oBAGrBvxoB,KAAK2xoB,SAASb,QAAQ,UAAW,KAC3B9woB,KAAK2woB,OAAOwB,aACdnyoB,KAAK2woB,OAAO1qpB,IAAI,UAAW,WAAW+Z,KAAKg4J,UAAUh4J,KAAK6woB,aAAc7woB,KAAK2xoB,SAASh0kB,SACxE,IAAIyykB,EAAKpwoB,KAAMiwoB,EAAsBJ,EAAQ,CAAC,GAAI7voB,KAAK29D,SAC7D40J,OACVvyN,KAAKrQ,MAAQqgpB,EACbhwoB,KAAK2xoB,SAASp7oB,QACVyJ,KAAK2woB,OAAOjplB,eACd1nD,KAAK8xoB,YAAYP,oBAGrBvxoB,KAAK2qG,GAAGsliB,EAAsB,CAAC/loB,EAAS2oG,KACtC7yG,KAAKmlD,QAAQnlD,KAAKoxoB,eAAev+hB,GAAM3oG,IAE3C,CAMA,IAAAhM,CAAKy/D,EAAU39D,KAAK29D,SAClB,GAAI39D,KAAK0xoB,WACP,MAAM,IAAInqoB,MAAM,8FAKhB,OAHAvH,KAAK29D,QAAUA,EACf39D,KAAK0xoB,YAAa,EAClB1xoB,KAAK2xe,SACE3xe,KAAK2xoB,QAEhB,CAKA,OAAAviR,CAAQlgX,GACNlP,KAAK2qG,GAAGsliB,EAAsB/goB,EAChC,CAKA,OAAAmuW,CAAQnuW,GACN,OAAOlP,KAAK2qG,GAAGsliB,EAAuBz1Z,GAAWtrO,EAASsrO,GAC5D,CAkBA,EAAA7vI,CAAGx+F,EAAO+C,GACR,IAAI2jG,EAAM7yG,KAAKyxoB,aAEf,OADAzxoB,KAAK0qG,SAAS52G,KAAK,CAAEqY,QAAO0mG,MAAK3jG,aAC1B2jG,CACT,CAmBA,GAAAoa,CAAI9gH,EAAO0mG,GACT7yG,KAAK0qG,SAAW1qG,KAAK0qG,SAASz5G,OAAQyqD,KAC3BA,EAAKvvC,QAAUA,SAAyB,IAAR0mG,GAAuBA,IAAQn3D,EAAKm3D,MAEjF,CAIA,OAAAw/hB,GACE,OAAOryoB,KAAK2woB,OAAOjplB,eAAiB1nD,KAAKsyoB,UAC3C,CAiBA,IAAAx+oB,CAAKqY,EAAOjC,EAASyzD,EAAU39D,KAAK29D,SAElC,GADAzzD,EAAUA,GAAW,CAAC,GACjBlK,KAAK0xoB,WACR,MAAM,IAAInqoB,MAAM,kBAAkB4E,UAAcnM,KAAKg4J,mEAEvD,IAAIk6e,EAAY,IAAI9B,EAAKpwoB,KAAMmM,EAAO,WACpC,OAAOjC,CACT,EAAGyzD,GAOH,OANI39D,KAAKqyoB,UACPH,EAAU3/a,QAEV2/a,EAAUxB,eACV1woB,KAAK4xoB,WAAW99oB,KAAKo+oB,IAEhBA,CACT,CAiBA,KAAA9mY,CAAMztM,EAAU39D,KAAK29D,SACnB39D,KAAK8xoB,YAAYv7oB,QACjByJ,KAAK2xoB,SAAST,gBACdlxoB,KAAKrQ,MAAQqgpB,EACb,IAAI5gR,EAAU,KACRpvX,KAAK2woB,OAAOwB,aACdnyoB,KAAK2woB,OAAO1qpB,IAAI,UAAW,SAAS+Z,KAAKg4J,SAC3Ch4J,KAAKmlD,QAAQ8qlB,EAAsB,UAEjCsC,EAAY,IAAInC,EAAKpwoB,KAAMiwoB,EAAsBJ,EAAQ,CAAC,GAAIlykB,GAMlE,OALA40kB,EAAUzB,QAAQ,KAAM,IAAM1hR,KAAW0hR,QAAQ,UAAW,IAAM1hR,KAClEmjR,EAAUhgb,OACLvyN,KAAKqyoB,WACRE,EAAUptlB,QAAQ,KAAM,CAAC,GAEpBotlB,CACT,CAaA,SAAAC,CAAUC,EAAQvooB,EAAS9e,GACzB,OAAO8e,CACT,CAIA,QAAAwooB,CAAS16e,EAAO7rJ,EAAOjC,EAAS2moB,GAC9B,QAAI7woB,KAAKg4J,QAAUA,GAGf64e,GAAWA,IAAY7woB,KAAK6woB,YAC1B7woB,KAAK2woB,OAAOwB,aACdnyoB,KAAK2woB,OAAO1qpB,IAAI,UAAW,4BAA6B,CAAE+xK,QAAO7rJ,QAAOjC,UAAS2moB,YAC5E,GAIX,CAIA,OAAAA,GACE,OAAO7woB,KAAK2xoB,SAAS9+hB,GACvB,CAIA,MAAA8+X,CAAOh0a,EAAU39D,KAAK29D,SAChB39D,KAAK2yoB,cAGT3yoB,KAAK2woB,OAAOiC,eAAe5yoB,KAAKg4J,OAChCh4J,KAAKrQ,MAAQqgpB,EACbhwoB,KAAK2xoB,SAASnB,OAAO7ykB,GACvB,CAIA,OAAAxY,CAAQh5C,EAAOjC,EAAS2oG,EAAKg+hB,GAC3B,IAAIgC,EAAiB7yoB,KAAKwyoB,UAAUrmoB,EAAOjC,EAAS2oG,EAAKg+hB,GACzD,GAAI3moB,IAAY2ooB,EACd,MAAM,IAAItroB,MAAM,+EAElB,IAAIuroB,EAAgB9yoB,KAAK0qG,SAASz5G,OAAQyqD,GAASA,EAAKvvC,QAAUA,GAClE,IAAK,IAAI9mB,EAAI,EAAGA,EAAIytpB,EAAc1+oB,OAAQ/O,IAC7BytpB,EAAcztpB,GACpB6pB,SAAS2joB,EAAgBhgiB,EAAKg+hB,GAAW7woB,KAAK6woB,UAEvD,CAIA,cAAAO,CAAev+hB,GACb,MAAO,cAAcA,GACvB,CAIA,QAAAkgiB,GACE,OAAO/yoB,KAAKrQ,QAAUqgpB,CACxB,CAIA,SAAAiC,GACE,OAAOjyoB,KAAKrQ,QAAUqgpB,CACxB,CAIA,QAAAsC,GACE,OAAOtyoB,KAAKrQ,QAAUqgpB,CACxB,CAIA,SAAAoC,GACE,OAAOpyoB,KAAKrQ,QAAUqgpB,CACxB,CAIA,SAAA2C,GACE,OAAO3yoB,KAAKrQ,QAAUqgpB,CACxB,GAIEgD,EAAO,MACT,cAAOprX,CAAQrjP,EAAQ6wlB,EAAUpuiB,EAASt5F,EAAMiwE,EAAS2tN,EAAWp8Q,GAClE,GAAI6xG,EAAO+jX,eAAgB,CACzB,IAAImuK,EAAM,IAAIlyhB,EAAO+jX,eACrB,OAAO9ke,KAAKkzoB,eAAeD,EAAK1umB,EAAQ6wlB,EAAU1noB,EAAMiwE,EAAS2tN,EAAWp8Q,EAC9E,CAAO,GAAI6xG,EAAOkpK,eAAgB,CAChC,IAAIgpX,EAAM,IAAIlyhB,EAAOkpK,eACrB,OAAOjqR,KAAKmzoB,WAAWF,EAAK1umB,EAAQ6wlB,EAAUpuiB,EAASt5F,EAAMiwE,EAAS2tN,EAAWp8Q,EACnF,CAAO,GAAI6xG,EAAOj7B,OAASi7B,EAAOt6B,gBAChC,OAAOzmF,KAAKozoB,aAAa7umB,EAAQ6wlB,EAAUpuiB,EAASt5F,EAAMiwE,EAAS2tN,EAAWp8Q,GAE9E,MAAM,IAAI3H,MAAM,kDAEpB,CACA,mBAAO6roB,CAAa7umB,EAAQ6wlB,EAAUpuiB,EAASt5F,EAAMiwE,EAAS2tN,EAAWp8Q,GACvE,IAAItf,EAAU,CACZ20C,SACAyiD,UACAt5F,QAEE65C,EAAa,KAajB,OAZIo2B,IACFp2B,EAAa,IAAIk/C,gBACEh/E,WAAW,IAAM8/B,EAAWo/C,QAAShpB,GACxD/tE,EAAQ82F,OAASn/C,EAAWm/C,QAE9Bq6B,EAAOj7B,MAAMsviB,EAAUxloB,GAASiH,KAAMw3F,GAAaA,EAASv+D,QAAQj5B,KAAMd,GAASiK,KAAKqzoB,UAAUt9oB,IAAOc,KAAMd,GAASmZ,GAAYA,EAASnZ,IAAO83N,MAAOnlH,IACxI,eAAbA,EAAIn1G,MAAyB+3R,EAC/BA,IAEAp8Q,GAAYA,EAAS,QAGlBq4B,CACT,CACA,qBAAO2rmB,CAAeD,EAAK1umB,EAAQ6wlB,EAAU1noB,EAAMiwE,EAAS2tN,EAAWp8Q,GAarE,OAZA+joB,EAAIt1kB,QAAUA,EACds1kB,EAAIlljB,KAAKxpD,EAAQ6wlB,GACjB6d,EAAIx6Z,OAAS,KACX,IAAIpqJ,EAAWruF,KAAKqzoB,UAAUJ,EAAI/nX,cAClCh8Q,GAAYA,EAASm/E,IAEnBi9L,IACF2nX,EAAI3nX,UAAYA,GAElB2nX,EAAIjuK,WAAa,OAEjBiuK,EAAI1gb,KAAK7kO,GACFulpB,CACT,CACA,iBAAOE,CAAWF,EAAK1umB,EAAQ6wlB,EAAUpuiB,EAASt5F,EAAMiwE,EAAS2tN,EAAWp8Q,GAC1E+joB,EAAIlljB,KAAKxpD,EAAQ6wlB,GAAU,GAC3B6d,EAAIt1kB,QAAUA,EACd,IAAK,IAAKnzE,EAAK7E,KAAUmE,OAAOo7D,QAAQ8hC,GACtCisjB,EAAIhoX,iBAAiBzgS,EAAK7E,GAa5B,OAXAstpB,EAAIv6Z,QAAU,IAAMxpO,GAAYA,EAAS,MACzC+joB,EAAIluK,mBAAqB,KACvB,GAzgBM,IAygBFkuK,EAAIhyY,YAAsC/xP,EAAU,CACtD,IAAIm/E,EAAWruF,KAAKqzoB,UAAUJ,EAAI/nX,cAClCh8Q,EAASm/E,EACX,GAEEi9L,IACF2nX,EAAI3nX,UAAYA,GAElB2nX,EAAI1gb,KAAK7kO,GACFulpB,CACT,CACA,gBAAOI,CAAUzpX,GACf,IAAKA,GAAiB,KAATA,EACX,OAAO,KAET,IACE,OAAOjgR,KAAKyuB,MAAMwxP,EACpB,CAAE,MAEA,OADAh3P,SAAWA,QAAQ3sC,IAAI,gCAAiC2jS,GACjD,IACT,CACF,CACA,gBAAOpmK,CAAUlxG,EAAKghoB,GACpB,IAAIC,EAAW,GACf,IAAK,IAAI/opB,KAAO8nB,EAAK,CACnB,IAAKxoB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAK9nB,GAC7C,SAEF,IAAIgppB,EAAWF,EAAY,GAAGA,KAAa9opB,KAASA,EAChDippB,EAAWnhoB,EAAI9nB,GACK,iBAAbippB,EACTF,EAASz/oB,KAAKkM,KAAKwjH,UAAUiwhB,EAAUD,IAEvCD,EAASz/oB,KAAKw0F,mBAAmBkrjB,GAAY,IAAMlrjB,mBAAmBmrjB,GAE1E,CACA,OAAOF,EAASr1oB,KAAK,IACvB,CACA,mBAAOw1oB,CAAajmjB,EAAKttC,GACvB,GAAmC,IAA/Br2D,OAAOO,KAAK81D,GAAQ/rD,OACtB,OAAOq5F,EAET,IAAIv4D,EAASu4D,EAAIzpG,MAAM,MAAQ,IAAM,IACrC,MAAO,GAAGypG,IAAMv4D,IAASl1B,KAAKwjH,UAAUrjE,IAC1C,GAaEwzlB,EAAW,MACb,WAAAlzoB,CAAY20nB,EAAU1rnB,GAChBA,GAAkC,IAArBA,EAAUtV,QAAgBsV,EAAU,GAAGmiB,WAAWsknB,KACjEnwoB,KAAK4zoB,UAAYjujB,KAAKj8E,EAAU,GAAG5O,MAAMq1oB,MAE3CnwoB,KAAKo1nB,SAAW,KAChBp1nB,KAAKiE,MAAQ,KACbjE,KAAK6zoB,eAAgB,EACrB7zoB,KAAK8zoB,KAAuB,IAAI5gpB,IAChC8M,KAAK+zoB,kBAAmB,EACxB/zoB,KAAKg0oB,aAAe,KACpBh0oB,KAAKi0oB,kBAAoB,KACzBj0oB,KAAKk0oB,YAAc,GACnBl0oB,KAAKm0oB,OAAS,WACd,EACAn0oB,KAAK04O,QAAU,WACf,EACA14O,KAAKsmF,UAAY,WACjB,EACAtmF,KAAKo0oB,QAAU,WACf,EACAp0oB,KAAKq0oB,aAAer0oB,KAAKs0oB,kBAAkBlf,GAC3Cp1nB,KAAKihQ,WA9mByB,EA+mB9Bx5P,WAAW,IAAMzH,KAAKu0oB,OAAQ,EAChC,CACA,iBAAAD,CAAkBlf,GAChB,OAAOA,EAASrxoB,QAAQ,QAAS,WAAWA,QAAQ,SAAU,YAAYA,QAAQ,IAAI+tC,OAAO,QAAUo+mB,GAAuB,cAChI,CACA,WAAAsE,GACE,OAAOxB,EAAKU,aAAa1zoB,KAAKq0oB,aAAc,CAAEpwoB,MAAOjE,KAAKiE,OAC5D,CACA,aAAAwwoB,CAAcjmjB,EAAMgsJ,EAAQk6Z,GAC1B10oB,KAAKyN,MAAM+gF,EAAMgsJ,EAAQk6Z,GACzB10oB,KAAKihQ,WAznByB,CA0nBhC,CACA,SAAAqqB,GACEtrR,KAAK04O,QAAQ,WACb14O,KAAKy0oB,cAAc,KAAM,WAAW,EACtC,CACA,QAAA9+U,GACE,OAhoBuC,IAgoBhC31T,KAAKihQ,YAhoBkB,IAgoBmBjhQ,KAAKihQ,UACxD,CACA,IAAAszY,GACE,MAAMvtjB,EAAU,CAAE,OAAU,oBACxBhnF,KAAK4zoB,YACP5sjB,EAAQ,uBAAyBhnF,KAAK4zoB,WAExC5zoB,KAAK20oB,KAAK,MAAO3tjB,EAAS,KAAM,IAAMhnF,KAAKsrR,YAAc1B,IACvD,GAAIA,EAAM,CACR,IAAI,OAAEz8J,EAAM,MAAElpH,EAAK,SAAE6sL,GAAa84F,EAClC,GAAe,MAAXz8J,GAAiC,OAAfntH,KAAKiE,MAGzB,OAFAjE,KAAK04O,QAAQ,UACb14O,KAAKy0oB,cAAc,KAAM,gBAAgB,GAG3Cz0oB,KAAKiE,MAAQA,CACf,MACEkpH,EAAS,EAEX,OAAQA,GACN,KAAK,IACH2jE,EAAS9+L,QAASm/I,IAChB1pI,WAAW,IAAMzH,KAAKsmF,UAAU,CAAEvwF,KAAMo7I,IAAQ,KAElDnxI,KAAKu0oB,OACL,MACF,KAAK,IACHv0oB,KAAKu0oB,OACL,MACF,KAAK,IACHv0oB,KAAKihQ,WA9pB4B,EA+pBjCjhQ,KAAKm0oB,OAAO,CAAC,GACbn0oB,KAAKu0oB,OACL,MACF,KAAK,IACHv0oB,KAAK04O,QAAQ,KACb14O,KAAKyN,MAAM,KAAM,aAAa,GAC9B,MACF,KAAK,EACL,KAAK,IACHzN,KAAK04O,QAAQ,KACb14O,KAAKy0oB,cAAc,KAAM,wBAAyB,KAClD,MACF,QACE,MAAM,IAAIltoB,MAAM,yBAAyB4lH,OAGjD,CAIA,IAAAolG,CAAK7kO,GACiB,iBAATA,IACTA,EAtGoB,CAAC/I,IACzB,IAAIgvoB,EAAS,GACT9wgB,EAAQ,IAAIx9B,WAAW1gG,GACvB8K,EAAMozH,EAAMwqE,WAChB,IAAK,IAAIhoM,EAAI,EAAGA,EAAIoK,EAAKpK,IACvBsuoB,GAAUpznB,OAAOysF,aAAa61B,EAAMx9H,IAEtC,OAAOigG,KAAKquiB,IA+FDC,CAAoBlmoB,IAEzBsS,KAAKg0oB,aACPh0oB,KAAKg0oB,aAAalgpB,KAAKpG,GACdsS,KAAK+zoB,iBACd/zoB,KAAKk0oB,YAAYpgpB,KAAKpG,IAEtBsS,KAAKg0oB,aAAe,CAACtmpB,GACrBsS,KAAKi0oB,kBAAoBxsoB,WAAW,KAClCzH,KAAK40oB,UAAU50oB,KAAKg0oB,cACpBh0oB,KAAKg0oB,aAAe,MACnB,GAEP,CACA,SAAAY,CAAU9jd,GACR9wL,KAAK+zoB,kBAAmB,EACxB/zoB,KAAK20oB,KAAK,OAAQ,CAAE,eAAgB,wBAA0B7jd,EAAS5yL,KAAK,MAAO,IAAM8B,KAAK04O,QAAQ,WAAakxC,IACjH5pR,KAAK+zoB,kBAAmB,EACnBnqX,GAAwB,MAAhBA,EAAKz8J,OAGPntH,KAAKk0oB,YAAY9/oB,OAAS,IACnC4L,KAAK40oB,UAAU50oB,KAAKk0oB,aACpBl0oB,KAAKk0oB,YAAc,KAJnBl0oB,KAAK04O,QAAQkxC,GAAQA,EAAKz8J,QAC1BntH,KAAKy0oB,cAAc,KAAM,yBAAyB,KAMxD,CACA,KAAAhnoB,CAAM+gF,EAAMgsJ,EAAQk6Z,GAClB,IAAK,IAAIzB,KAAOjzoB,KAAK8zoB,KACnBb,EAAItsjB,QAEN3mF,KAAKihQ,WAptByD,EAqtB9D,IAAIlxO,EAAOjmC,OAAOC,OAAO,CAAEykG,KAAM,IAAKgsJ,YAAQ,EAAQk6Z,UAAU,GAAQ,CAAElmjB,OAAMgsJ,SAAQk6Z,aACxF10oB,KAAKk0oB,YAAc,GACnBvsoB,aAAa3H,KAAKi0oB,mBAClBj0oB,KAAKi0oB,kBAAoB,KACC,oBAAfY,WACT70oB,KAAKo0oB,QAAQ,IAAIS,WAAW,QAAS9knB,IAErC/vB,KAAKo0oB,QAAQrknB,EAEjB,CACA,IAAA4knB,CAAKpwmB,EAAQyiD,EAASt5F,EAAMonpB,EAAiB5loB,GAC3C,IAAI+joB,EAKJA,EAAMD,EAAKprX,QAAQrjP,EAAQvkC,KAAKw0oB,cAAextjB,EAASt5F,EAAMsS,KAAK29D,QAJnD,KACd39D,KAAK8zoB,KAAKr9mB,OAAOw8mB,GACjB6B,KAEsFlrX,IACtF5pR,KAAK8zoB,KAAKr9mB,OAAOw8mB,GACbjzoB,KAAK21T,YACPzmT,EAAS06Q,KAGb5pR,KAAK8zoB,KAAKxgpB,IAAI2/oB,EAChB,GAsKE8B,EAAqB,CACvBC,cAAe,EACfC,YAAa,EACbC,MAAO,CAAEphpB,KAAM,EAAGqhpB,MAAO,EAAGC,UAAW,GACvC,MAAArsjB,CAAOooD,EAAKjiI,GACV,GAAIiiI,EAAIjnI,QAAQzJ,cAAgB66H,YAC9B,OAAOpsH,EAASlP,KAAKq1oB,aAAalkgB,IAC7B,CACL,IAAIjnI,EAAU,CAACinI,EAAIy/f,SAAUz/f,EAAIt+B,IAAKs+B,EAAI6mB,MAAO7mB,EAAIhlI,MAAOglI,EAAIjnI,SAChE,OAAOgF,EAASvF,KAAKC,UAAUM,GACjC,CACF,EACA,MAAAwrI,CAAO4/f,EAAYpmoB,GACjB,GAAIomoB,EAAW70oB,cAAgB66H,YAC7B,OAAOpsH,EAASlP,KAAKu1oB,aAAaD,IAC7B,CACL,IAAK1E,EAAU/9hB,EAAKmlD,EAAO7rJ,EAAOjC,GAAWP,KAAKyuB,MAAMk9mB,GACxD,OAAOpmoB,EAAS,CAAE0hoB,WAAU/9hB,MAAKmlD,QAAO7rJ,QAAOjC,WACjD,CACF,EAEA,YAAAmroB,CAAajljB,GACX,IAAI,SAAEwgjB,EAAQ,IAAE/9hB,EAAG,MAAE1mG,EAAK,MAAE6rJ,EAAK,QAAE9tJ,GAAYkmF,EAC3ColjB,EAAax1oB,KAAKi1oB,YAAcrE,EAASx8oB,OAASy+G,EAAIz+G,OAAS4jK,EAAM5jK,OAAS+X,EAAM/X,OACpFy3F,EAAS,IAAIyvC,YAAYt7H,KAAKg1oB,cAAgBQ,GAC9C9zc,EAAO,IAAItU,SAASvhG,GACpBjnG,EAAS,EACb88M,EAAK+zc,SAAS7wpB,IAAUob,KAAKk1oB,MAAMphpB,MACnC4tM,EAAK+zc,SAAS7wpB,IAAUgspB,EAASx8oB,QACjCstM,EAAK+zc,SAAS7wpB,IAAUiuH,EAAIz+G,QAC5BstM,EAAK+zc,SAAS7wpB,IAAUozK,EAAM5jK,QAC9BstM,EAAK+zc,SAAS7wpB,IAAUunB,EAAM/X,QAC9BE,MAAMuwB,KAAK+rnB,EAAWxxZ,GAAS19C,EAAK+zc,SAAS7wpB,IAAUw6P,EAAKx5J,WAAW,KACvEtxF,MAAMuwB,KAAKguF,EAAMusI,GAAS19C,EAAK+zc,SAAS7wpB,IAAUw6P,EAAKx5J,WAAW,KAClEtxF,MAAMuwB,KAAKmzI,EAAQonF,GAAS19C,EAAK+zc,SAAS7wpB,IAAUw6P,EAAKx5J,WAAW,KACpEtxF,MAAMuwB,KAAK1Y,EAAQizO,GAAS19C,EAAK+zc,SAAS7wpB,IAAUw6P,EAAKx5J,WAAW,KACpE,IAAI8vjB,EAAW,IAAIrwjB,WAAWwG,EAAOwhG,WAAanjL,EAAQmjL,YAG1D,OAFAqod,EAAS3hpB,IAAI,IAAIsxF,WAAWwG,GAAS,GACrC6pjB,EAAS3hpB,IAAI,IAAIsxF,WAAWn7E,GAAU2hF,EAAOwhG,YACtCqod,EAAS/wpB,MAClB,EACA,YAAA4wpB,CAAa5wpB,GACX,IAAI+8M,EAAO,IAAItU,SAASzoM,GACpBmoB,EAAO40L,EAAKy8M,SAAS,GACrBw3P,EAAU,IAAIlggB,YAClB,OAAQ3oI,GACN,KAAK9M,KAAKk1oB,MAAMphpB,KACd,OAAOkM,KAAK41oB,WAAWjxpB,EAAQ+8M,EAAMi0c,GACvC,KAAK31oB,KAAKk1oB,MAAMC,MACd,OAAOn1oB,KAAK61oB,YAAYlxpB,EAAQ+8M,EAAMi0c,GACxC,KAAK31oB,KAAKk1oB,MAAME,UACd,OAAOp1oB,KAAK81oB,gBAAgBnxpB,EAAQ+8M,EAAMi0c,GAEhD,EACA,UAAAC,CAAWjxpB,EAAQ+8M,EAAMi0c,GACvB,IAAII,EAAcr0c,EAAKy8M,SAAS,GAC5B63P,EAAYt0c,EAAKy8M,SAAS,GAC1B83P,EAAYv0c,EAAKy8M,SAAS,GAC1Bv5Z,EAASob,KAAKg1oB,cAAgBh1oB,KAAKi1oB,YAAc,EACjDpE,EAAU8E,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASmxpB,IAC3DnxpB,GAAkBmxpB,EAClB,IAAI/9e,EAAQ29e,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASoxpB,IACzDpxpB,GAAkBoxpB,EAClB,IAAI7poB,EAAQwpoB,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASqxpB,IAGzD,OAFArxpB,GAAkBqxpB,EAEX,CAAErF,SAAUC,EAASh+hB,IAAK,KAAMmlD,QAAO7rJ,QAAOjC,QAD1CvlB,EAAOmW,MAAMlW,EAAQD,EAAO0oM,YAEzC,EACA,WAAAwod,CAAYlxpB,EAAQ+8M,EAAMi0c,GACxB,IAAII,EAAcr0c,EAAKy8M,SAAS,GAC5B+3P,EAAUx0c,EAAKy8M,SAAS,GACxB63P,EAAYt0c,EAAKy8M,SAAS,GAC1B83P,EAAYv0c,EAAKy8M,SAAS,GAC1Bv5Z,EAASob,KAAKg1oB,cAAgBh1oB,KAAKi1oB,YACnCpE,EAAU8E,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASmxpB,IAC3DnxpB,GAAkBmxpB,EAClB,IAAIljiB,EAAM8iiB,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASsxpB,IACvDtxpB,GAAkBsxpB,EAClB,IAAIl+e,EAAQ29e,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASoxpB,IACzDpxpB,GAAkBoxpB,EAClB,IAAI7poB,EAAQwpoB,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASqxpB,IACzDrxpB,GAAkBqxpB,EAClB,IAAIlgpB,EAAOpR,EAAOmW,MAAMlW,EAAQD,EAAO0oM,YAEvC,MAAO,CAAEujd,SAAUC,EAASh+hB,MAAKmlD,QAAO7rJ,MAAO8joB,EAAsB/loB,QADvD,CAAEijH,OAAQhhH,EAAOkiF,SAAUt4F,GAE3C,EACA,eAAA+/oB,CAAgBnxpB,EAAQ+8M,EAAMi0c,GAC5B,IAAIK,EAAYt0c,EAAKy8M,SAAS,GAC1B83P,EAAYv0c,EAAKy8M,SAAS,GAC1Bv5Z,EAASob,KAAKg1oB,cAAgB,EAC9Bh9e,EAAQ29e,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASoxpB,IACzDpxpB,GAAkBoxpB,EAClB,IAAI7poB,EAAQwpoB,EAAQjggB,OAAO/wJ,EAAOmW,MAAMlW,EAAQA,EAASqxpB,IAGzD,OAFArxpB,GAAkBqxpB,EAEX,CAAErF,SAAU,KAAM/9hB,IAAK,KAAMmlD,QAAO7rJ,QAAOjC,QADvCvlB,EAAOmW,MAAMlW,EAAQD,EAAO0oM,YAEzC,GAIE8od,EAAS,MACX,WAAA11oB,CAAY20nB,EAAUrlmB,EAAO,CAAC,GAC5B/vB,KAAKo2oB,qBAAuB,CAAErojB,KAAM,GAAItgF,MAAO,GAAIxD,MAAO,GAAImmF,QAAS,IACvEpwF,KAAKq2oB,SAAW,GAChBr2oB,KAAKs2oB,WAAa,GAClBt2oB,KAAK6yG,IAAM,EACX7yG,KAAKu2oB,YAAc,KACnBv2oB,KAAK29D,QAAU5tC,EAAK4tC,SA5/BF,IA6/BlB39D,KAAKkI,UAAY6nB,EAAK7nB,WAAa64G,EAAOu+G,WAAaq0a,EACvD3zoB,KAAKw2oB,0BAA2B,EAChCx2oB,KAAKy2oB,mBAAqB1mnB,EAAK0mnB,mBAC/Bz2oB,KAAK02oB,cAAgB,KACrB12oB,KAAK22oB,aAAe5mnB,EAAKm5D,gBAAkB63B,GAAUA,EAAO73B,eAC5DlpF,KAAK42oB,uBAAyB,EAC9B52oB,KAAK62oB,eAAiB9B,EAAmBhsjB,OAAOrtC,KAAKq5lB,GACrD/0oB,KAAK82oB,eAAiB/B,EAAmBr/f,OAAOh6F,KAAKq5lB,GACrD/0oB,KAAK+2oB,eAAgB,EACrB/2oB,KAAKg3oB,eAAgB,EACrBh3oB,KAAKi3oB,WAAalnnB,EAAKknnB,YAAc,cACrCj3oB,KAAKk3oB,aAAe,EACpBl3oB,KAAKm3oB,YAAa,EACdn3oB,KAAKkI,YAAcyroB,GACrB3zoB,KAAK+oF,OAASh5D,EAAKg5D,QAAU/oF,KAAK62oB,eAClC72oB,KAAK01I,OAAS3lH,EAAK2lH,QAAU11I,KAAK82oB,iBAElC92oB,KAAK+oF,OAAS/oF,KAAK62oB,eACnB72oB,KAAK01I,OAAS11I,KAAK82oB,gBAErB,IAAIM,EAA+B,KAC/BrH,GAAaA,EAAU73oB,mBACzB63oB,EAAU73oB,iBAAiB,WAAagzG,IAClClrG,KAAKq3oB,OACPr3oB,KAAK8K,aACLssoB,EAA+Bp3oB,KAAKk3oB,gBAGxCnH,EAAU73oB,iBAAiB,WAAagzG,IAClCksiB,IAAiCp3oB,KAAKk3oB,eACxCE,EAA+B,KAC/Bp3oB,KAAKoG,aAGT2poB,EAAU73oB,iBAAiB,mBAAoB,KACZ,WAA7BzP,SAASollB,gBACX7tkB,KAAKm3oB,YAAa,GAElBn3oB,KAAKm3oB,YAAa,EACbn3oB,KAAK0nD,eACR1nD,KAAKs3oB,SAAS,IAAMt3oB,KAAKoG,eAKjCpG,KAAKu3oB,oBAAsBxnnB,EAAKwnnB,qBAAuB,IACvDv3oB,KAAK+xoB,cAAiBT,GAChBvhnB,EAAKginB,cACAhinB,EAAKginB,cAAcT,GAEnB,CAAC,IAAK,IAAK,KAAKA,EAAQ,IAAM,IAGzCtxoB,KAAKw3oB,iBAAoBlG,GACnBvhnB,EAAKynnB,iBACAznnB,EAAKynnB,iBAAiBlG,GAEtB,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAKA,EAAQ,IAAM,IAGrEtxoB,KAAK66N,OAAS9qM,EAAK8qM,QAAU,MACxB76N,KAAK66N,QAAU9qM,EAAKzoB,QACvBtH,KAAK66N,OAAS,CAAC/tN,EAAMqkI,EAAKp7I,KACxB68B,QAAQ3sC,IAAI,GAAG6mB,MAASqkI,IAAOp7I,KAGnCiK,KAAKy3oB,kBAAoB1nnB,EAAK0nnB,mBAAqB,IACnDz3oB,KAAKmgD,OAAS0vlB,EAAQ9/mB,EAAKowB,QAAU,CAAC,GACtCngD,KAAKo1nB,SAAW,GAAGA,KAAY8a,IAC/BlwoB,KAAK03oB,IAAM3nnB,EAAK2nnB,KApkCF,QAqkCd13oB,KAAK23oB,sBAAwB,KAC7B33oB,KAAK43oB,eAAiB,KACtB53oB,KAAK63oB,oBAAsB,KAC3B73oB,KAAK83oB,eAAiB,IAAI1zoB,EAAM,KAC9B,GAAIpE,KAAKm3oB,WAGP,OAFAn3oB,KAAK/Z,IAAI,4CACT+Z,KAAKs3oB,WAGPt3oB,KAAKs3oB,SAAS,IAAMt3oB,KAAKoG,YACxBpG,KAAKw3oB,kBACRx3oB,KAAK4zoB,UAAY7jnB,EAAK6jnB,SACxB,CAIA,oBAAAmE,GACE,OAAOpE,CACT,CAOA,gBAAAqE,CAAiBC,GACfj4oB,KAAKk3oB,eACLl3oB,KAAK+2oB,eAAgB,EACrBpvoB,aAAa3H,KAAK02oB,eAClB12oB,KAAK83oB,eAAevhpB,QAChByJ,KAAKq3oB,OACPr3oB,KAAKq3oB,KAAK5poB,QACVzN,KAAKq3oB,KAAO,MAEdr3oB,KAAKkI,UAAY+voB,CACnB,CAMA,QAAAxuoB,GACE,OAAOw/E,SAASx/E,SAASzlB,MAAM,UAAY,MAAQ,IACrD,CAMA,WAAAk0pB,GACE,IAAIl4e,EAAMgze,EAAKU,aACbV,EAAKU,aAAa1zoB,KAAKo1nB,SAAUp1nB,KAAKmgD,UACtC,CAAEu3lB,IAAK13oB,KAAK03oB,MAEd,MAAsB,MAAlB13e,EAAIttJ,OAAO,GACNstJ,EAEa,MAAlBA,EAAIttJ,OAAO,GACN,GAAG1S,KAAKyJ,cAAcu2J,IAExB,GAAGhgK,KAAKyJ,gBAAgBw/E,SAAShhG,OAAO+3K,GACjD,CAUA,UAAAl1J,CAAWoE,EAAUs/E,EAAMgsJ,GACzBx6O,KAAKk3oB,eACLl3oB,KAAKg3oB,eAAgB,EACrBh3oB,KAAK+2oB,eAAgB,EACrBpvoB,aAAa3H,KAAK02oB,eAClB12oB,KAAK83oB,eAAevhpB,QACpByJ,KAAKs3oB,SAAS,KACZt3oB,KAAKg3oB,eAAgB,EACrB9noB,GAAYA,KACXs/E,EAAMgsJ,EACX,CAQA,OAAAp0O,CAAQ+5C,GACFA,IACFvtB,SAAWA,QAAQ3sC,IAAI,2FACvB+Z,KAAKmgD,OAAS0vlB,EAAQ1vlB,IAEpBngD,KAAKq3oB,OAASr3oB,KAAKg3oB,gBAGnBh3oB,KAAKy2oB,oBAAsBz2oB,KAAKkI,YAAcyroB,EAChD3zoB,KAAKm4oB,oBAAoBxE,EAAU3zoB,KAAKy2oB,oBAExCz2oB,KAAKo4oB,mBAET,CAOA,GAAAnypB,CAAI6mB,EAAMqkI,EAAKp7I,GACbiK,KAAK66N,QAAU76N,KAAK66N,OAAO/tN,EAAMqkI,EAAKp7I,EACxC,CAIA,SAAAo8oB,GACE,OAAuB,OAAhBnyoB,KAAK66N,MACd,CAQA,MAAAm3a,CAAO9ioB,GACL,IAAI2jG,EAAM7yG,KAAKmxoB,UAEf,OADAnxoB,KAAKo2oB,qBAAqBrojB,KAAKj6F,KAAK,CAAC++G,EAAK3jG,IACnC2jG,CACT,CAKA,OAAAu8Q,CAAQlgX,GACN,IAAI2jG,EAAM7yG,KAAKmxoB,UAEf,OADAnxoB,KAAKo2oB,qBAAqB3ooB,MAAM3Z,KAAK,CAAC++G,EAAK3jG,IACpC2jG,CACT,CAQA,OAAAwqQ,CAAQnuW,GACN,IAAI2jG,EAAM7yG,KAAKmxoB,UAEf,OADAnxoB,KAAKo2oB,qBAAqBnsoB,MAAMnW,KAAK,CAAC++G,EAAK3jG,IACpC2jG,CACT,CAKA,SAAA2/hB,CAAUtjoB,GACR,IAAI2jG,EAAM7yG,KAAKmxoB,UAEf,OADAnxoB,KAAKo2oB,qBAAqBhmjB,QAAQt8F,KAAK,CAAC++G,EAAK3jG,IACtC2jG,CACT,CAOA,IAAAwliB,CAAKnpoB,GACH,IAAKlP,KAAK0nD,cACR,OAAO,EAET,IAAImrD,EAAM7yG,KAAKmxoB,UACXtioB,EAAYhG,KAAKC,MACrB9I,KAAKlM,KAAK,CAAEkkK,MAAO,UAAW7rJ,MAAO,YAAajC,QAAS,CAAC,EAAG2oG,QAC/D,IAAIyliB,EAAWt4oB,KAAKwyoB,UAAWrhgB,IACzBA,EAAIt+B,MAAQA,IACd7yG,KAAKitH,IAAI,CAACqrhB,IACVppoB,EAASrG,KAAKC,MAAQ+F,MAG1B,OAAO,CACT,CAIA,gBAAAupoB,GAGE,IAAI1uoB,EAFJ1J,KAAKk3oB,eACLl3oB,KAAK+2oB,eAAgB,EAEjB/2oB,KAAK4zoB,YACPlqoB,EAAY,CAAC,UAAW,GAAGymoB,IAAoB7qjB,KAAKtlF,KAAK4zoB,WAAW7vpB,QAAQ,KAAM,QAEpFic,KAAKq3oB,KAAO,IAAIr3oB,KAAKkI,UAAUlI,KAAKk4oB,cAAexuoB,GACnD1J,KAAKq3oB,KAAKJ,WAAaj3oB,KAAKi3oB,WAC5Bj3oB,KAAKq3oB,KAAK15kB,QAAU39D,KAAKy3oB,kBACzBz3oB,KAAKq3oB,KAAKlD,OAAS,IAAMn0oB,KAAKu4oB,aAC9Bv4oB,KAAKq3oB,KAAK3+Z,QAAWzuO,GAAUjK,KAAKw4oB,YAAYvuoB,GAChDjK,KAAKq3oB,KAAK/wjB,UAAan6E,GAAUnM,KAAKy4oB,cAActsoB,GACpDnM,KAAKq3oB,KAAKjD,QAAWjooB,GAAUnM,KAAK04oB,YAAYvsoB,EAClD,CACA,UAAAwsoB,CAAWnupB,GACT,OAAOwV,KAAK22oB,cAAgB32oB,KAAK22oB,aAAa1zjB,QAAQz4F,EACxD,CACA,YAAAoupB,CAAapupB,EAAKm9B,GAChB3nB,KAAK22oB,cAAgB32oB,KAAK22oB,aAAavzjB,QAAQ54F,EAAKm9B,EACtD,CACA,mBAAAwwnB,CAAoBU,EAAmBC,EAAoB,MACzDnxoB,aAAa3H,KAAK02oB,eAClB,IAEaqC,EAFTC,GAAc,EACdC,GAAmB,EAEnBtmnB,EAAY6nN,IACdx6O,KAAK/Z,IAAI,YAAa,mBAAmB4ypB,EAAkBtlpB,UAAWinP,GACtEx6O,KAAKitH,IAAI,MAHPishB,EAGiBH,IACnBE,GAAmB,EACnBj5oB,KAAKg4oB,iBAAiBa,GACtB74oB,KAAKo4oB,oBAEP,GAAIp4oB,KAAK24oB,WAAW,gBAAgBE,EAAkBtlpB,QACpD,OAAOo/B,EAAS,aAElB3yB,KAAK02oB,cAAgBjvoB,WAAWkrB,EAAUmmnB,GAC1CC,EAAW/4oB,KAAKq9W,QAAS7iI,IACvBx6O,KAAK/Z,IAAI,YAAa,QAASu0P,GAC3By+Z,IAAqBD,IACvBrxoB,aAAa3H,KAAK02oB,eAClB/jnB,EAAS6nN,MAGTx6O,KAAKu2oB,aACPv2oB,KAAKitH,IAAI,CAACjtH,KAAKu2oB,cAEjBv2oB,KAAKu2oB,YAAcv2oB,KAAKgyoB,OAAO,KAE7B,GADAgH,GAAc,GACTC,EAIH,OAHKj5oB,KAAKw2oB,0BACRx2oB,KAAK44oB,aAAa,gBAAgBC,EAAkBtlpB,OAAQ,QAEvDyM,KAAK/Z,IAAI,YAAa,eAAe4ypB,EAAkBtlpB,iBAEhEoU,aAAa3H,KAAK02oB,eAClB12oB,KAAK02oB,cAAgBjvoB,WAAWkrB,EAAUmmnB,GAC1C94oB,KAAKq4oB,KAAM5xoB,IACTzG,KAAK/Z,IAAI,YAAa,6BAA8BwgB,GACpDzG,KAAKw2oB,0BAA2B,EAChC7uoB,aAAa3H,KAAK02oB,mBAGtB12oB,KAAKo4oB,kBACP,CACA,eAAAe,GACExxoB,aAAa3H,KAAK43oB,gBAClBjwoB,aAAa3H,KAAK23oB,sBACpB,CACA,UAAAY,GACMv4oB,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,YAAa,GAAG+Z,KAAKkI,UAAU3U,qBAAqByM,KAAKk4oB,iBACpEl4oB,KAAK+2oB,eAAgB,EACrB/2oB,KAAKg3oB,eAAgB,EACrBh3oB,KAAK42oB,yBACL52oB,KAAKo5oB,kBACLp5oB,KAAK83oB,eAAevhpB,QACpByJ,KAAKq5oB,iBACLr5oB,KAAKo2oB,qBAAqBrojB,KAAK/7F,QAAQ,EAAE,CAAEkd,KAAcA,IAC3D,CAIA,gBAAAoqoB,GACMt5oB,KAAK63oB,sBACP73oB,KAAK63oB,oBAAsB,KACvB73oB,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,YAAa,4DAExB+Z,KAAKu5oB,mBACLv5oB,KAAK+2oB,eAAgB,EACrB/2oB,KAAKs3oB,SAAS,IAAMt3oB,KAAK83oB,eAAevG,kBAr1CxB,IAq1C4D,qBAEhF,CACA,cAAA8H,GACMr5oB,KAAKq3oB,MAAQr3oB,KAAKq3oB,KAAKxD,gBAG3B7zoB,KAAK63oB,oBAAsB,KAC3B73oB,KAAKm5oB,kBACLn5oB,KAAK43oB,eAAiBnwoB,WAAW,IAAMzH,KAAKw5oB,gBAAiBx5oB,KAAKu3oB,qBACpE,CACA,QAAAD,CAASpooB,EAAUs/E,EAAMgsJ,GACvB,IAAKx6O,KAAKq3oB,KACR,OAAOnooB,GAAYA,IAErB,IAAIgooB,EAAel3oB,KAAKk3oB,aACxBl3oB,KAAKy5oB,kBAAkB,KACjBvC,IAAiBl3oB,KAAKk3oB,eAGtBl3oB,KAAKq3oB,OACH7ojB,EACFxuF,KAAKq3oB,KAAK5poB,MAAM+gF,EAAMgsJ,GAAU,IAEhCx6O,KAAKq3oB,KAAK5poB,SAGdzN,KAAK05oB,oBAAoB,KACnBxC,IAAiBl3oB,KAAKk3oB,eAGtBl3oB,KAAKq3oB,OACPr3oB,KAAKq3oB,KAAKlD,OAAS,WACnB,EACAn0oB,KAAKq3oB,KAAK3+Z,QAAU,WACpB,EACA14O,KAAKq3oB,KAAK/wjB,UAAY,WACtB,EACAtmF,KAAKq3oB,KAAKjD,QAAU,WACpB,EACAp0oB,KAAKq3oB,KAAO,MAEdnooB,GAAYA,SAGlB,CACA,iBAAAuqoB,CAAkBvqoB,EAAUoioB,EAAQ,GACpB,IAAVA,GAAgBtxoB,KAAKq3oB,MAASr3oB,KAAKq3oB,KAAKsC,eAI5ClyoB,WAAW,KACTzH,KAAKy5oB,kBAAkBvqoB,EAAUoioB,EAAQ,IACxC,IAAMA,GALPpioB,GAMJ,CACA,mBAAAwqoB,CAAoBxqoB,EAAUoioB,EAAQ,GACtB,IAAVA,GAAgBtxoB,KAAKq3oB,MA/4CqC,IA+4C7Br3oB,KAAKq3oB,KAAKp2Y,WAI3Cx5P,WAAW,KACTzH,KAAK05oB,oBAAoBxqoB,EAAUoioB,EAAQ,IAC1C,IAAMA,GALPpioB,GAMJ,CACA,WAAAwpoB,CAAYvsoB,GACNnM,KAAKq3oB,OACPr3oB,KAAKq3oB,KAAKjD,QAAU,QAEtB,IAAIwF,EAAYztoB,GAASA,EAAMqiF,KAC3BxuF,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,YAAa,QAASkmB,GACjCnM,KAAKu5oB,mBACLv5oB,KAAKm5oB,kBACAn5oB,KAAK+2oB,eAA+B,MAAd6C,GACzB55oB,KAAK83oB,eAAevG,kBAEtBvxoB,KAAKo2oB,qBAAqB3ooB,MAAMzb,QAAQ,EAAE,CAAEkd,KAAcA,EAAS/C,GACrE,CAIA,WAAAqsoB,CAAYvuoB,GACNjK,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,YAAagkB,GACxB,IAAI4voB,EAAkB75oB,KAAKkI,UACvB4xoB,EAAoB95oB,KAAK42oB,uBAC7B52oB,KAAKo2oB,qBAAqBnsoB,MAAMjY,QAAQ,EAAE,CAAEkd,MAC1CA,EAASjF,EAAO4voB,EAAiBC,MAE/BD,IAAoB75oB,KAAKkI,WAAa4xoB,EAAoB,IAC5D95oB,KAAKu5oB,kBAET,CAIA,gBAAAA,GACEv5oB,KAAKq2oB,SAASrkpB,QAAS0ilB,IACfA,EAAQu9D,aAAev9D,EAAQi+D,aAAej+D,EAAQq+D,YAC1Dr+D,EAAQvvhB,QAAQ8qlB,IAGtB,CAIA,eAAAhooB,GACE,OAAQjI,KAAKq3oB,MAAQr3oB,KAAKq3oB,KAAKp2Y,YAC7B,KAn8C4B,EAo8C1B,MAAO,aACT,KAr8CqC,EAs8CnC,MAAO,OACT,KAv8CiD,EAw8C/C,MAAO,UACT,QACE,MAAO,SAEb,CAIA,WAAAv5M,GACE,MAAkC,SAA3B1nD,KAAKiI,iBACd,CAMA,MAAA26B,CAAO8xiB,GACL10kB,KAAKitH,IAAIynd,EAAQm9D,iBACjB7xoB,KAAKq2oB,SAAWr2oB,KAAKq2oB,SAASplpB,OAAQrL,GAAMA,IAAM8ulB,EACpD,CAOA,GAAAznd,CAAI/E,GACF,IAAK,IAAI19H,KAAOwV,KAAKo2oB,qBACnBp2oB,KAAKo2oB,qBAAqB5rpB,GAAOwV,KAAKo2oB,qBAAqB5rpB,GAAKyG,OAAO,EAAE4hH,MACzC,IAAvBqV,EAAK3/H,QAAQsqH,GAG1B,CAQA,OAAA6he,CAAQ18a,EAAO+hf,EAAa,CAAC,GAC3B,IAAIC,EAAO,IAAIxI,EAAQx5e,EAAO+hf,EAAY/5oB,MAE1C,OADAA,KAAKq2oB,SAASvipB,KAAKkmpB,GACZA,CACT,CAIA,IAAAlmpB,CAAKiC,GACH,GAAIiK,KAAKmyoB,YAAa,CACpB,IAAI,MAAEn6e,EAAK,MAAE7rJ,EAAK,QAAEjC,EAAO,IAAE2oG,EAAG,SAAE+9hB,GAAa76oB,EAC/CiK,KAAK/Z,IAAI,OAAQ,GAAG+xK,KAAS7rJ,MAAUykoB,MAAa/9hB,KAAQ3oG,EAC9D,CACIlK,KAAK0nD,cACP1nD,KAAK+oF,OAAOhzF,EAAO5C,GAAW6M,KAAKq3oB,KAAK9kb,KAAKp/N,IAE7C6M,KAAKs2oB,WAAWxipB,KAAK,IAAMkM,KAAK+oF,OAAOhzF,EAAO5C,GAAW6M,KAAKq3oB,KAAK9kb,KAAKp/N,IAE5E,CAKA,OAAAg+oB,GACE,IAAI8I,EAASj6oB,KAAK6yG,IAAM,EAMxB,OALIoniB,IAAWj6oB,KAAK6yG,IAClB7yG,KAAK6yG,IAAM,EAEX7yG,KAAK6yG,IAAMoniB,EAENj6oB,KAAK6yG,IAAI7rH,UAClB,CACA,aAAAwypB,GACMx5oB,KAAK63oB,sBAAwB73oB,KAAK0nD,gBAGtC1nD,KAAK63oB,oBAAsB73oB,KAAKmxoB,UAChCnxoB,KAAKlM,KAAK,CAAEkkK,MAAO,UAAW7rJ,MAAO,YAAajC,QAAS,CAAC,EAAG2oG,IAAK7yG,KAAK63oB,sBACzE73oB,KAAK23oB,sBAAwBlwoB,WAAW,IAAMzH,KAAKs5oB,mBAAoBt5oB,KAAKu3oB,qBAC9E,CACA,eAAA6B,GACMp5oB,KAAK0nD,eAAiB1nD,KAAKs2oB,WAAWlipB,OAAS,IACjD4L,KAAKs2oB,WAAWtkpB,QAASkd,GAAaA,KACtClP,KAAKs2oB,WAAa,GAEtB,CACA,aAAAmC,CAAcyB,GACZl6oB,KAAK01I,OAAOwkgB,EAAWnkpB,KAAOo7I,IAC5B,IAAI,MAAE6mB,EAAK,MAAE7rJ,EAAK,QAAEjC,EAAO,IAAE2oG,EAAG,SAAE+9hB,GAAaz/f,EAC3Ct+B,GAAOA,IAAQ7yG,KAAK63oB,sBACtB73oB,KAAKm5oB,kBACLn5oB,KAAK63oB,oBAAsB,KAC3B73oB,KAAK43oB,eAAiBnwoB,WAAW,IAAMzH,KAAKw5oB,gBAAiBx5oB,KAAKu3oB,sBAEhEv3oB,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,UAAW,GAAGikB,EAAQijH,QAAU,MAAM6qC,KAAS7rJ,KAAS0mG,GAAO,IAAMA,EAAM,KAAO,KAAM3oG,GACnG,IAAK,IAAI7kB,EAAI,EAAGA,EAAI2a,KAAKq2oB,SAASjipB,OAAQ/O,IAAK,CAC7C,MAAMqvlB,EAAU10kB,KAAKq2oB,SAAShxpB,GACzBqvlB,EAAQg+D,SAAS16e,EAAO7rJ,EAAOjC,EAAS0moB,IAG7Cl8D,EAAQvvhB,QAAQh5C,EAAOjC,EAAS2oG,EAAK+9hB,EACvC,CACA,IAAK,IAAIvrpB,EAAI,EAAGA,EAAI2a,KAAKo2oB,qBAAqBhmjB,QAAQh8F,OAAQ/O,IAAK,CACjE,IAAK,CAAE6pB,GAAYlP,KAAKo2oB,qBAAqBhmjB,QAAQ/qG,GACrD6pB,EAASiiI,EACX,GAEJ,CACA,cAAAyhgB,CAAe56e,GACb,IAAImif,EAAan6oB,KAAKq2oB,SAASx7oB,KAAMjV,GAAMA,EAAEoyK,QAAUA,IAAUpyK,EAAE0spB,YAAc1spB,EAAEwspB,cAC/E+H,IACEn6oB,KAAKmyoB,aACPnyoB,KAAK/Z,IAAI,YAAa,4BAA4B+xK,MACpDmif,EAAW/uY,QAEf,E,kBC7kDF,IAAIq0X,EAAW,EAAQ,OACnB2a,EAAc,EAAQ,OACtBC,EAAc,EAAQ,OAU1B,SAASvzI,EAASl+e,GAChB,IAAIpyB,GAAS,EACTpC,EAAmB,MAAVw0B,EAAiB,EAAIA,EAAOx0B,OAGzC,IADA4L,KAAKi4T,SAAW,IAAIwnU,IACXjpoB,EAAQpC,GACf4L,KAAK1M,IAAIs1B,EAAOpyB,GAEpB,CAGAswgB,EAAS1mgB,UAAU9M,IAAMwzgB,EAAS1mgB,UAAUtM,KAAOsmpB,EACnDtzI,EAAS1mgB,UAAUzM,IAAM0mpB,EAEzB34jB,EAAOj9F,QAAUqihB,C,+BCzBjB,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,IAAIj+b,EAAO,EAAQ,OAEnB6Y,EAAOj9F,QAAUokF,EAAK4iC,Q,+BCJtB3hH,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAGT,IAAI+qG,EAAW5mG,OAAOC,QAAU,SAAUgE,GAAU,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAAE,IAAIksB,EAASpd,UAAU9O,GAAI,IAAK,IAAImF,KAAO+mB,EAAcznB,OAAOsW,UAAUxU,eAAeyU,KAAKkR,EAAQ/mB,KAAQuD,EAAOvD,GAAO+mB,EAAO/mB,GAAU,CAAE,OAAOuD,CAAQ,EAE3P25G,EAAe,WAAc,SAASl8E,EAAiBz9B,EAAQqkC,GAAS,IAAK,IAAI/sC,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,IAAK,CAAE,IAAIkzE,EAAanmC,EAAM/sC,GAAIkzE,EAAW7sC,WAAa6sC,EAAW7sC,aAAc,EAAO6sC,EAAWthC,cAAe,EAAU,UAAWshC,IAAYA,EAAW9sC,UAAW,GAAM3hC,OAAOwY,eAAevU,EAAQwqE,EAAW/tE,IAAK+tE,EAAa,CAAE,CAAE,OAAO,SAAUovC,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYp8E,EAAiBm8E,EAAYvnG,UAAWwnG,GAAiBC,GAAar8E,EAAiBm8E,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAIfqQ,EAAUG,EAFD,EAAQ,QAMjB+tN,EAAc/tN,EAFD,EAAQ,OAIzB,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CA8B9F,IAAIgooB,EAAc,SAAU3gU,GAG1B,SAAS2gU,KA7BX,SAAyBjlpB,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CA8BpJwnG,CAAgB9nG,KAAMs6oB,GAEtB,IAAIp2oB,EA9BR,SAAoCo+E,EAAMjiF,GAAQ,IAAKiiF,EAAQ,MAAM,IAAIwkK,eAAe,6DAAgE,OAAOzmP,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BiiF,EAAPjiF,CAAa,CA8B/N2nU,CAA2BhoU,MAAOs6oB,EAAYp6oB,WAAapW,OAAO2rC,eAAe6knB,IAAcj6oB,KAAKL,OAGhH,OADAkE,EAAMmkL,YAAc,cACbnkL,CACT,CA4DA,OA5FF,SAAmBgpG,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7sG,UAAU,kEAAoE6sG,GAAeD,EAAS9sG,UAAYtW,OAAO4W,OAAOysG,GAAcA,EAAW/sG,UAAW,CAAEK,YAAa,CAAE9a,MAAOunH,EAAUxhF,YAAY,EAAOD,UAAU,EAAMwL,cAAc,KAAek2E,IAAYrjH,OAAOmW,eAAiBnW,OAAOmW,eAAeitG,EAAUC,GAAcD,EAAShtG,UAAYitG,EAAY,CAuB3eC,CAAUktiB,EAAa3gU,GAWvBjyO,EAAa4yiB,EAAa,CAAC,CACzB9vpB,IAAK,SACL7E,MAAO,WACL,IAAIoiY,EAAS/nX,KAAKoyB,MACdkpB,EAASysU,EAAOzsU,OAChBi/lB,EAAYxyR,EAAOwyR,UACnBzwiB,EAAYi+Q,EAAOj+Q,UACnB0wiB,EAAazyR,EAAOyyR,WACpBnrnB,EAAO04V,EAAO14V,KACdivc,EAAUv2G,EAAOu2G,QACjB/qe,EAAOw0X,EAAOx0X,KACdknpB,EAAQ1yR,EAAO0yR,MACfvynB,EAAS6/V,EAAO7/V,OAChBnV,EAAOg1W,EAAOh1W,KACd2noB,EAAO3yR,EAAO2yR,KACdn0mB,EAAQwhV,EAAOxhV,MACfo0mB,EAAa5yR,EAAO/lS,IACpBA,OAAqBlrF,IAAf6jpB,EAA2B,OAASA,EAC1CC,EAAY7yR,EAAO6yR,UACnBxonB,EA3DV,SAAkC9f,EAAKjoB,GAAQ,IAAI0D,EAAS,CAAC,EAAG,IAAK,IAAI1I,KAAKitB,EAAWjoB,EAAK9B,QAAQlD,IAAM,GAAkByE,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAKjtB,KAAc0I,EAAO1I,GAAKitB,EAAIjtB,IAAM,OAAO0I,CAAQ,CA2DzM2qH,CAAyBqvQ,EAAQ,CAAC,SAAU,YAAa,YAAa,aAAc,OAAQ,UAAW,OAAQ,QAAS,SAAU,OAAQ,OAAQ,QAAS,MAAO,cAE1K8yR,EAAYD,EAAY,CAAE,aAAcA,GAAc,CAAE,eAAe,GACvElpS,EAAa,GA8BjB,OA5BI6oS,GACF7oS,EAAW59W,KAAKympB,EAAc,IAC9B7oS,EAAW59W,KAAKympB,EAAU,MAAQhnpB,IAClCwf,GAAQ2+V,EAAW59W,KAAKympB,EAAU,MAAQxnoB,IAC1C2noB,GAAQhpS,EAAW59W,KAAKympB,EAAU,YAClCE,GAAS/oS,EAAW59W,KAAKympB,EAAU,aACnCj/lB,GAAUo2T,EAAW59W,KAAKympB,EAAU,cACpCC,GAAc9oS,EAAW59W,KAAKympB,EAAU,UACxCj8K,GAAW5sH,EAAW59W,KAAKympB,EAAU,eACrClrnB,GAAQqiV,EAAW59W,KAAKympB,EAAU,WAAalrnB,IAC/CnH,GAAUwpV,EAAW59W,KAAKympB,EAAU,aAAerynB,IACnDqe,GAASmrU,EAAW59W,KAAKympB,EAAU,YAAch0mB,MAEjDmrU,EAAW59W,KAAK,MAChB49W,EAAW59W,KAAK,MAAQP,GACxBwf,GAAQ2+V,EAAW59W,KAAK,MAAQif,GAChC2noB,GAAQhpS,EAAW59W,KAAK,WACxB2mpB,GAAS/oS,EAAW59W,KAAK,YACzBwnD,GAAUo2T,EAAW59W,KAAK,aAC1B0mpB,GAAc9oS,EAAW59W,KAAK,SAC9Bwqe,GAAW5sH,EAAW59W,KAAK,cAC3Bu7B,GAAQqiV,EAAW59W,KAAK,WAAau7B,GACrCnH,GAAUwpV,EAAW59W,KAAK,aAAeo0B,GACzCqe,GAASmrU,EAAW59W,KAAK,YAAcyyC,IAIzCujE,GAAa4nQ,EAAW59W,KAAKg2G,GACtBkO,EAAQx1B,QAAQz1E,cAAci1E,EAAK0O,EAAS,CAAC,EAAGt+D,EAAOyonB,EAAW,CACvE/wiB,UAAW4nQ,EAAWxzW,KAAK,OAE/B,KAGKo8oB,CACT,CAvEkB,CAuEhBtiiB,EAAQx1B,QAAQmnJ,WAElB2wa,EAAY5gc,UAAY,CACtBkhc,UAAW10U,EAAY1jP,QAAQ1+F,OAC/Bw3D,OAAQ4qR,EAAY1jP,QAAQwyB,KAC5BlL,UAAWo8N,EAAY1jP,QAAQ1+F,OAC/By2pB,UAAWr0U,EAAY1jP,QAAQl3C,OAC/BkvmB,WAAYt0U,EAAY1jP,QAAQwyB,KAChC3lF,KAAM62S,EAAY1jP,QAAQ8yB,MAAM,CAAC,aAAc,aAC/CgpX,QAASp4J,EAAY1jP,QAAQwyB,KAC7BzhH,KAAM2yU,EAAY1jP,QAAQ1+F,OAAO+wH,WACjC4liB,MAAOv0U,EAAY1jP,QAAQwyB,KAC3B9sF,OAAQg+S,EAAY1jP,QAAQ8yB,MAAM,CAAC,GAAI,IAAK,MAC5CviG,KAAMmzT,EAAY1jP,QAAQ8yB,MAAM,CAAC,KAAM,KAAM,KAAM,KAAM,OACzDoliB,KAAMx0U,EAAY1jP,QAAQwyB,KAC1BzuE,MAAO2/R,EAAY1jP,QAAQ8yB,MAAM,CAAC,KAAM,OACxCtzB,IAAKkkP,EAAY1jP,QAAQ1+F,QAG3BW,EAAA,QAAkB61pB,EAClB54jB,EAAOj9F,QAAUA,EAAQ+9F,O,+BCvIzB,IAAI4qhB,EAAW,EAAQ,OACnB0tC,EAAsB,EAAQ,OAClC,SAAStwZ,EAAe56P,GACpB,IAAI0c,EAAQ,IAAIwuoB,EAAoBlrpB,GAEpC,OADA9F,OAAOmW,eAAeqM,EAAOk+O,EAAepqP,WACrCkM,CACX,CACA8gmB,EAAS5iX,EAAgBswZ,GACzBp5jB,EAAOj9F,QAAU+lQ,C,+BCVjB,EAAQ,OACR,IAAI9gK,EAAI,EAAQ,OACZ4nS,EAAU,EAAQ,OAKtB5nS,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM3xB,KAAM,UAAWstG,OAAQ,GAAGywR,UAAYA,GAAW,CACpFA,QAASA,G,+BCTX,IAAIjxR,EAAc,EAAQ,OACtBgT,EAAW,EAAQ,OAEnBznH,EAAiBy0G,EAAY,CAAC,EAAEz0G,gBAKpC81F,EAAOj9F,QAAUqF,OAAOg2H,QAAU,SAAgBre,EAAIj3G,GACpD,OAAOoB,EAAeynH,EAAS5R,GAAKj3G,EACtC,C,+BCVA,IAAI/C,EAAS,EAAQ,OACrB,EAAQ,OAERi6F,EAAOj9F,QAAUgD,C,kBCJjB,IAAIwoB,EAAW,EAAQ,OAGnB8qoB,EAAejxpB,OAAO4W,OAUtBs+M,EAAc,WAChB,SAAS1zK,IAAU,CACnB,OAAO,SAASpmB,GACd,IAAKjV,EAASiV,GACZ,MAAO,CAAC,EAEV,GAAI61nB,EACF,OAAOA,EAAa71nB,GAEtBomB,EAAOlrC,UAAY8kB,EACnB,IAAI/xB,EAAS,IAAIm4C,EAEjB,OADAA,EAAOlrC,eAAYtJ,EACZ3D,CACT,CACF,CAdiB,GAgBjBuuF,EAAOj9F,QAAUu6N,C,+BC5BjB,IAAI38H,EAAa,EAAQ,OAGrB//E,EAAiBxY,OAAOwY,eAE5Bo/E,EAAOj9F,QAAU,SAAU+F,EAAK7E,GAC9B,IACE2c,EAAe+/E,EAAY73F,EAAK,CAAE7E,MAAOA,EAAOsxC,cAAc,EAAMxL,UAAU,GAChF,CAAE,MAAOxhB,GACPo4E,EAAW73F,GAAO7E,CACpB,CAAE,OAAOA,CACX,C,+BCXA,IAOI3B,EAAO6gF,EAPPwd,EAAa,EAAQ,OACrB9zF,EAAY,EAAQ,OAEpBksI,EAAUp4C,EAAWo4C,QACrBm+D,EAAOv2G,EAAWu2G,KAClBl+D,EAAWD,GAAWA,EAAQC,UAAYk+D,GAAQA,EAAK/zH,QACvDm2kB,EAAKtghB,GAAYA,EAASsghB,GAG1BA,IAIFn2kB,GAHA7gF,EAAQg3pB,EAAG95pB,MAAM,MAGD,GAAK,GAAK8C,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7D6gF,GAAWt2E,MACdvK,EAAQuK,EAAUvK,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQuK,EAAUvK,MAAM,oBACb6gF,GAAW7gF,EAAM,IAIhC09F,EAAOj9F,QAAUogF,C,gDC1BjB,IAGI,EAHc/6E,OAAOsW,UAGQxU,eAcjC,QAJA,SAAiB0/C,EAAQ9gD,GACvB,OAAiB,MAAV8gD,GAAkB,EAAejrC,KAAKirC,EAAQ9gD,EACvD,E,eCkBA,QAJA,SAAa8gD,EAAQu9B,GACnB,OAAiB,MAAVv9B,IAAkB,OAAQA,EAAQu9B,EAAM,EACjD,C,aC3BAqtD,QAAQx0C,OAAO,cAAe,IAC3B/7F,MAAM,mBAAmB,CAIxBuuC,MAAO,qDAER0yF,UAAU,aAAc,CACvB,mBAAoB,WAAY,OAChC,SAASq0hB,EAAkBxthB,EAAUs/I,GACnC,MAAO,CACLtlK,QAAS,WACT9+E,MAAO,CACLknR,QAAS,IACTqrW,WAAY,KAEd9xhB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO8mL,GACpC,IAAIsrW,EAEJ,SAASC,EAAiB5slB,EAAO6uB,GAC/B,IACIg+jB,EAAiC,mBAAXh+jB,EAC1B,MAFmC,mBAAV7uB,GAEP6slB,EACT,WACL7slB,EAAM1tD,MAAMd,KAAM7L,WAClBkpF,EAAOv8E,MAAMd,KAAM7L,UACrB,EACSknpB,EACFh+jB,EAEF7uB,CACT,CAEA,SAAS8slB,EAA0Bh1pB,GAGjC,IAAIyP,EAAOzP,EAAQyP,KAAK,eACxB,OAAIA,GAAwB,iBAATA,GAA6C,gBAAxBA,EAAKwlpB,eACpCxlpB,EAEF,IACT,CAEA,SAASylpB,EAAoBhxpB,EAAK7E,GAoBhC,OAnBI47C,EAAU/2C,IACA,SAARA,IAEF7E,EAAQy1pB,EACNz1pB,EAAO,WAAagjC,EAAMqlG,QAAU,GAEtCroI,EAAQy1pB,EAAiBz1pB,EAAO81pB,IAGlC91pB,EAAQy1pB,EAAiB75mB,EAAU/2C,GAAM7E,IAChC+1pB,EAASlxpB,KAClB7E,EAAQ+1pB,EAASlxpB,GAAK7E,IAInBA,GAAkB,UAAR6E,GAA2B,mBAARA,IAChC7E,EAAQs1pB,EAAiB/mnB,OAGpBvuC,CACT,CAEA,SAASg2pB,EAAuB3yY,EAAQC,EAAQ2yY,GAS9C1lhB,QAAQlkI,QAAQuvC,EARhB,SAA2B57C,EAAO6E,GAC1BA,KAAOulC,IAGXA,EAAKvlC,GAAO,KAEhB,GAMA,IAIMqK,EAJFgnpB,EAAW,KAqDf,OAnDI5yY,GAGF/yI,QAAQlkI,QAAQi3Q,EAAQ,SAASsY,EAAU/2R,GACzC,IAAKw+Q,KAAYx+Q,KAAOw+Q,GAAS,CAC/B,GAAIx+Q,KAAOsxpB,EAMT,YAJE/rnB,EAAKvlC,GADK,gBAARA,EACU,OAEAgxpB,EAAoBhxpB,OAAKsM,IAKpCjC,IACHA,EAAiBqhI,QAAQ5vI,QAAQkkZ,GAAGuxQ,WAAWnspB,SAEjD,IAAI0gB,EAAezb,EAAerK,GAClC8lB,EAAekroB,EAAoBhxpB,EAAK8lB,GAEnCuroB,IACHA,EAAW,CAAC,GAEdA,EAASrxpB,GAAO8lB,EAChByf,EAAKvlC,GAAO8lB,CACd,CACF,GAIF4lH,QAAQlkI,QAAQg3Q,EAAQ,SAASrjR,EAAO6E,GAGtC,GAAIA,KAAOsxpB,EAMT,MALY,gBAARtxpB,IAAoC,IAAV7E,IAA6B,IAAVA,IAAmBi2pB,IAClEA,EAAuB5mmB,SAAWrvD,QAGpCoqC,EAAKvlC,GAAOgxpB,EAAoBhxpB,EAAK7E,IAIvCA,EAAQ61pB,EAAoBhxpB,EAAK7E,GAE5Bk2pB,IACHA,EAAW,CAAC,GAEdA,EAASrxpB,GAAO7E,EAChBoqC,EAAKvlC,GAAO7E,CACd,GAEOk2pB,CACT,CAkCA,SAASG,EAAkB11pB,EAASkkZ,EAAI2wQ,GACtC,IAAIhopB,EAAS,KAOb,OAbF,SAA2B7M,EAASkkZ,GAClC,IAAIyxQ,EAAe31pB,EAAQy1pB,SAAS,SAAS,UAC7C,MAAwB,UAAjBE,GAAqD,mBAAjBA,GAA+BzxQ,EAAGx3X,KAAK+ooB,SAASG,oBAC7F,CAIMC,CAAiB71pB,EAASkkZ,IACmB,WAA7ClkZ,EAAQy1pB,SAAU,SAAU,cAG9B5opB,EAASgopB,EAAWjnmB,QAEf/gD,CACT,CAgBA,SAASsopB,EAAUz2pB,EAAGwlZ,GACpBA,EAAGx3X,KAAK+ooB,SAAS/wmB,UACnB,CAKA,SAASoxmB,EAAappoB,GACpB,OAAOA,EAAKvrB,SACToT,KAAKk1B,EAAK,mBACVv5B,MAAMwc,EACX,CAEA,IAAI+c,EAAO,CAAC,EAGR+rnB,EAAgB,CAClB,mBAAehlpB,EACf,iBAAkBmkpB,EAAiB/mnB,OAGjCqN,EAAY,CACduvmB,QAAS,KACTlumB,OAAQ,KACRn2C,MAAO,KACPiZ,KAAM,KACNtP,OAAQ,MAGNslpB,EAAW,CACbW,OAAQ,MAwQV,SAASC,IACP,QAAI3znB,EAAMuynB,YAAcvynB,EAAMuynB,WAAWltmB,WAXrC6hQ,GAjPJlnR,EAAMg6P,iBAAiB,UAAW,WAEhCl1J,EAAS,WAGD6thB,EAA0Bh1pB,IAC9BA,EAAQy1pB,SAAS,UAErB,EAAG,GAAG,EACR,GAEAx6mB,EAAU90C,MAAQ,SAASzH,EAAGwlZ,GAC5B,GAA4B,SAAxBz6W,EAAK,eAA2B,CAGlC,IAAIy7d,EAAWhhH,EAAGx3X,KAAKw4e,WACM8vJ,EAA0BplhB,QAAQ5vI,QAAQtB,EAAE+I,SAClDinD,SAxEpB,aAAe9yD,MADH8wB,EAyE8Bw4e,GAxEjBrigB,IAAI,WAAa,oBAAsBjH,KAAK8wB,EAAK7pB,IAAI,WAyEnF,CA1EJ,IAAqB6pB,EA6Ebxc,EAAQ4lpB,EAAa5xQ,EAAGx3X,MAC5Bw3X,EAAGx3X,KAAK+ooB,SAAW,CACjB39S,MAAOvuD,EAAQmH,YAAYxgT,GAC3BA,MAAOA,EACP+a,OAAQjrB,EACRi2pB,WAAY/xQ,EAAGx3X,KAAKvrB,SACpB+0pB,YAAa3sW,EAAQmH,YACrBr0Q,OAAQ,WACN6nW,EAAGx3X,KAAK+ooB,SAAS9kB,aAAc,CACjC,EACAP,WAAY,WACV,OAAOlsP,EAAGx3X,KAAK+ooB,SAAS9kB,WAC1B,EACAilB,mBAAoB,WAClB,QAAS1xQ,EAAGx3X,KAAK+ooB,SAASU,mBAC5B,EACAxlB,aAAa,EACbwlB,oBAAqBjyQ,EAAGx3X,KAAK+ooB,SAASU,oBACtCzxmB,SAAU,WACRkrF,QAAQlkI,QAAQw4Y,EAAGx3X,KAAK+ooB,SAAU,SAASp2pB,EAAO6E,GAChDggZ,EAAGx3X,KAAK+ooB,SAASvxpB,QAAOsM,CAC1B,EACF,EACA4lpB,oBAAqB,GACrBC,mBAAoB,SAAUr2pB,GAC5B,OAlGR,SAA2Bs2pB,EAAet2pB,GACxC,IAAK,IAAIjB,EAAI,EAAGA,EAAIu3pB,EAAcxopB,OAAQ/O,IAAK,CAC7C,IAAIO,EAAIg3pB,EAAcv3pB,GACtB,GAAIO,EAAEU,QAAQ,KAAOA,EAAQ,GAC3B,OAAOV,CAEX,CACF,CA2Fei3pB,CAAkB78oB,KAAK08oB,oBAAqBp2pB,EACrD,EAEJ,EAEAi7C,EAAUu7mB,SAAW,SAAS93pB,EAAGwlZ,GAC/B,IAAIuyQ,EAAkBvyQ,EAAGx3X,KAAK+ooB,SAASxqoB,SAAWjrB,EAC9C02pB,EAAmBD,EACAvyQ,EAAGx3X,KAAK+ooB,SAASQ,WACjBj2pB,EACnB8J,EAAiB,CACnB9J,QAASA,EACTqiC,MAAOA,EACPo0nB,gBAAiBA,EACjBC,iBAAkBA,GAGpBxyQ,EAAGx3X,KAAK+ooB,SAASW,oBAAoB5opB,KAAK1D,GAM1C+qpB,EAAa6B,EAAiB15a,WAI9B,IAAI3hB,EA7KR,SAAgCr7N,GAC9B,IAAIq7N,EAAcr7N,EAAQy1pB,SAAS,SAAS,eAO5C,GAAIp6b,GAAeA,EAAYr7N,SAA0C,mBAAxBq7N,EAAYr7N,QAAwB,CACnF,IAAI6M,EAASwuN,EAAYr7N,UAIzB,OADS4vI,QAAQ5vI,QAAQ6M,EAE3B,CACA,OAAO,IACT,CA6JsB8ppB,CAAsB32pB,GACxC,GAAIq7N,GAAeA,EAAYvtN,OAAQ,CACrC,IAAIi6nB,EA7JV,SAAsC/noB,EAASq7N,GAI7C,IAAIu7b,EAAiBntnB,EAAK,kBAAkBhsC,QAAQ,UAAW,IAE/D,OADeuC,EAAQuU,KAAK,WAAa8mN,EAAY41C,KAAK,SAAW,UAAY2lZ,EAAiB,IAEpG,CAsJqBC,CAA4B72pB,EAASq7N,GACpDw5b,EAAaA,EAAWn+a,IAAIqxZ,EAC9B,CACF,EAEA9slB,EAAUnrC,OAAS,SAASpR,EAAGwlZ,GAI7B,IAAIA,EAAGx3X,KAAK+ooB,SAASqB,SAAU,CAC7B5yQ,EAAGx3X,KAAK+ooB,SAASsB,UAAYjB,EAAa5xQ,EAAGx3X,MAC7C,IAAIsqoB,EAAa9yQ,EAAGx3X,KAAK26L,QAAQ,sDACjC68L,EAAGx3X,KAAK+ooB,SAASuB,WAAaA,EAC9B9yQ,EAAGx3X,KAAK+ooB,SAASwB,eAAiB/yQ,EAAGx3X,KAAKvrB,SAE1C,IAAI+1pB,EAAoBhzQ,EAAGx3X,KAAK+ooB,SAASY,mBAAmBW,GAC5D9yQ,EAAGx3X,KAAK+ooB,SAAS0B,gBAAkBD,EAAkB70nB,MAAMknR,QAM3DvpT,EAAQy1pB,SAAS,SACnB,CAOA,IAAI2B,GAAiBlzQ,EAAGx3X,KAAK+ooB,SAASqB,UAAYpB,EAAiB11pB,EAASkkZ,EAAI2wQ,GAC5EuC,GAAiBA,EAActppB,SAGjC+mpB,EAAaA,EAAWn+a,IAAI0gb,IAE9B,IAAIttpB,EAAiBo6Y,EAAGx3X,KAAK+ooB,SAASY,mBAAmBr2pB,GACzD60pB,EAAWwC,SAASvtpB,EAAe4spB,kBAMhCxyQ,EAAGx3X,KAAK+ooB,SAASqB,WAClBjC,EAAa,MAOZ3wQ,EAAGx3X,KAAK+ooB,SAASqB,WAAa5yQ,EAAGx3X,KAAK+ooB,SAASrlB,cAChD/tmB,EAAMqlG,OAAO,WACX6hL,EAAQmH,YAAYjqR,OAAOy9W,EAAGx3X,KAAK+ooB,SAASsB,UAAW,EAC5B7yQ,EAAGx3X,KAAK+ooB,SAASlriB,MAC9C,EAEJ,EAEAtvE,EAAU77B,KAAO,SAAS1gB,EAAGwlZ,GAI3B,IAAIozQ,EAAY,cAAepzQ,EAAGx3X,KAAK+ooB,WACtBvxQ,EAAGx3X,KAAK+ooB,SAASrlB,aAElC,GAAIknB,IAAapzQ,EAAGx3X,KAAK+ooB,SAASqB,SAEhCz0nB,EAAMqlG,OAAO,WACX6hL,EAAQmH,YAAYjqR,OAClBy9W,EAAGx3X,KAAK+ooB,SAASsB,UAAW,EAC5BxtW,EAAQmH,YAAYjqR,OAAOy9W,EAAGx3X,KAAK+ooB,SAASvlpB,MAAO,GAAG,GAC1D,QACK,IAAKonpB,IACA1nhB,QAAQ6xF,OAAOzhO,EAAQg9O,WAAWxf,UAAWq3b,EAAWr3b,WAAY,CAM9E,IAAI45b,EAAgB1B,EAAiB11pB,EAASkkZ,EAAI2wQ,GAC9CuC,GAAiBA,EAActppB,SAGjC+mpB,EAAaA,EAAWn+a,IAAI0gb,IAE9B,IAAIttpB,EAAiBo6Y,EAAGx3X,KAAK+ooB,SAASY,mBAAmBr2pB,GACzD60pB,EAAWwC,SAASvtpB,EAAe4spB,iBACrC,CAIA7B,EAAa,IACf,EAEA55mB,EAAUuvmB,QAAU,SAAS9rpB,EAAGwlZ,GAG9BA,EAAGx3X,KAAK+ooB,SAASqB,UAAW,CAC9B,EAEA77mB,EAAUqB,OAAS,SAAS59C,EAAGwlZ,GAIvB,cAAeA,EAAGx3X,KAAK+ooB,WAC3Bz1pB,EAAQy1pB,SAAS,UACjBvxQ,EAAGx3X,KAAK+ooB,SAASp5mB,UAKd6nW,EAAGx3X,KAAK+ooB,SAASrlB,cACpB/tmB,EAAMqlG,OAAO,WACXw8Q,EAAGx3X,KAAK+ooB,SAASlriB,MAAQg/L,EAAQmH,YAAYjqR,OAC3Cy9W,EAAGx3X,KAAK+ooB,SAASvlpB,MAAO,GAAG,EAC/B,EAEJ,EAEAklpB,EAASW,OAAS,SAAU52kB,GAC1B,OAAIA,GAA0B,mBAAVA,EACX,SAAUzgF,EAAGguB,GAClB,IAAI6qoB,EAAkB7qoB,EAAK+ooB,SACvBvlpB,EAAQ4lpB,EAAappoB,GACzBA,EAAK+ooB,SAAW,CACd39S,MAAOvuD,EAAQmH,YAAYxgT,GAC3BA,MAAOA,EACP+a,OAAQjrB,EACRi2pB,WAAYvpoB,EAAKvrB,SACjB+0pB,YAAa3sW,EAAQmH,YACrB8mW,SAAU,WACR5nhB,QAAQlkI,QAAQghB,EAAK+ooB,SAAU,SAASp2pB,EAAO6E,GAC7CwoB,EAAK+ooB,SAASvxpB,QAAOsM,CACvB,GAEAkc,EAAK+ooB,SAAW8B,CAClB,GAGF,IAAI92Z,EAActhL,EAAM3kE,MAAMd,KAAM7L,WAGpC,OAFA6e,EAAK+ooB,SAAS+B,WACd9qoB,EAAK+ooB,SAASU,oBAAsBzpoB,IAAS+zO,EACtCA,CACT,EAEKthL,CACT,EAEA98C,EAAMg6P,iBAAiB,aAAc,SAAS3Z,EAAQC,GAGpD,IAAI2yY,EAAyBN,EAA0Bh1pB,GACvD,GAAMs1pB,EAAwB,CAC5B,IAAIC,EAAWF,EAAuB3yY,EAAQC,EAAQ2yY,GAElDC,GACFv1pB,EAAQy1pB,SAAS,SAAUF,EAE/B,CACF,GAAG,GAEHF,EAAuB5rnB,IAOrBg9O,EAAKh6O,KAAK,qCAAsCzsC,GAIlDA,EAAQy1pB,SAAShsnB,GAWjBusnB,EAAcyB,gBACdzB,EAAcyB,cAAgB7nhB,QAAQtmH,KAE/B,GACT,CAjRAsmH,QAAQlzB,OAAOjzE,EAAM+rnB,EAAeb,EAAkBtynB,EAAMuynB,YAEvDhlhB,QAAQ5vI,QAAQwO,IAAOohI,QAAQ5vI,QAAQwO,GAAG64G,QAiR/C2uiB,EAAcyB,cAAgB7nhB,QAAQtmH,KAEjC0soB,MACHA,EAAcyB,cAAgBp1nB,EAAMw6M,OAAO,sBAAuBm5a,KAnRlEvvY,EAAK9iQ,MAAM,2DAqRf,EAEJ,G,gGC3fJ,SAAS+zoB,EAAc/vjB,GACrB,OAAQA,GAAwB,MAAhBA,EAAKjwF,MACvB,CAUA,IAAIigpB,EAA0B,aAAiB,SAAU7ypB,EAAMynH,GAC7D,IAAI42H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,IAAMA,EACvCz7L,EAAW5iD,EAAK4iD,SAChB09d,EAAYtghB,EAAKsghB,UACjBt5e,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,cAE/D+vV,EAAc,SAAqBhvU,GACrC,IAAI8hF,EAAO77D,EAAM67D,KACbzjE,EAAU4H,EAAM5H,SAEhBwjB,GAAYgwmB,EAAc/vjB,KAC5B9hF,EAAMwgH,iBAGJ3+E,EACF7hC,EAAMm3P,kBAIJ94O,GACFA,EAAQre,EAEZ,EAqBA,OAZI6xoB,EAAc5rnB,EAAM67D,QACtB77D,EAAM9zB,KAAO8zB,EAAM9zB,MAAQ,SAG3B8zB,EAAM67D,KAAO77D,EAAM67D,MAAQ,KAGzBjgD,IACF5b,EAAM6jS,UAAY,EAClB7jS,EAAM,kBAAmB,GAGP,gBAAoBu3M,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR5H,QAAS2wT,EACTuwL,WAAW,OAvBO,SAAuBv/f,GACvB,MAAdA,EAAM3hB,MACR2hB,EAAMwgH,iBACNwuN,EAAYhvU,GAEhB,EAkBkDu/f,KAEpD,GACAuyI,EAAW51d,YAAc,aACzB,S,kBCrEA,IAAIxqF,EAAY,EAAQ,OACpBytH,EAAW,EAAQ,OACnB4yb,EAAe,EAAQ,OACvBnuoB,EAAU,EAAQ,OAqCtB2xE,EAAOj9F,QALP,SAAiBw4N,EAAY2C,GAE3B,OADW7vM,EAAQktM,GAAcp/G,EAAYytH,GACjCrO,EAAYihc,EAAat+b,GACvC,C,gDCnBA,QAXA,SAAmBruM,EAAQ8C,GACzB,IAAI7d,GAAS,EACTpC,EAASmd,EAAOnd,OAGpB,IADAigB,IAAUA,EAAQ/f,MAAMF,MACfoC,EAAQpC,GACfigB,EAAM7d,GAAS+a,EAAO/a,GAExB,OAAO6d,CACT,C,kBCjBA,IAAI8poB,EAAa,CACf,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,QAGV,IAAK,IAAIv4pB,KAAKu4pB,EAAY,CACxB,IAAI3+hB,EAAW2+hB,EAAWv4pB,GAC1B,IAAK,IAAI8b,KAAK89G,EACZ/6H,EAAQid,GAAKjd,EAAQid,IAAM89G,EAAS99G,EAExC,C,0ECdA,SAFU,OAAU,IAAM,M,+BCH1B,IAAIw/G,EAAoB,EAAQ,OAC5By6H,EAAsB,EAAQ,OAE9B0L,EAAcC,WAIlB5lK,EAAOj9F,QAAU,SAAUq2B,EAAG9B,EAAGxiB,EAAO7Q,GACtC,IAAI8J,EAAMyxH,EAAkBpmG,GACxB61W,EAAgBh1I,EAAoBnlP,GACpC4npB,EAAcztR,EAAgB,EAAIlhY,EAAMkhY,EAAgBA,EAC5D,GAAIytR,GAAe3upB,GAAO2upB,EAAc,EAAG,MAAM,IAAI/2Z,EAAY,mBAGjE,IAFA,IAAIvuO,EAAI,IAAIE,EAAEvpB,GACVgiB,EAAI,EACDA,EAAIhiB,EAAKgiB,IAAKqH,EAAErH,GAAKA,IAAM2soB,EAAcz4pB,EAAQm1B,EAAErJ,GAC1D,OAAOqH,CACT,C,6BCfAr0B,EAAQ89F,YAAa,EACrB99F,EAAA,QACA,SAAayqB,GACX,GAAI/nB,OAAOgoB,sBACT,OAAOhoB,OAAOgoB,sBAAsBD,GAGtC,IAAImvoB,EAAYl3pB,OAAO21S,6BAA+B31S,OAAOm7a,yBAE7D,OAAO+7O,EAAYA,EAAUnvoB,GAAY/nB,OAAOsgB,WAAWyH,EAAU,IAAM,GAC7E,C,+BCXA,IAAIovoB,EAAS,CAAC,EACdx0pB,OAAO0hC,iBAAiB8ynB,EAAQ,CAC5BjhN,SAAU,CACN3xa,YAAY,EACZ/lC,MAAO,EAAQ,QAEnBiuY,aAAc,CACVloW,YAAY,EACZ/lC,MAAO,EAAQ,QAEnBynB,YAAa,CACTse,YAAY,EACZ/lC,MAAO,EAAQ,QAEnBq/V,iBAAkB,CACdt5T,YAAY,EACZ/lC,MAAO,EAAQ,QAEnB44pB,gBAAiB,CACb7ynB,YAAY,EACZ/lC,MAAO,EAAQ,QAEnBimB,kBAAmB,CACf8f,YAAY,EACZ/lC,MAAO,EAAQ,QAEnB8xU,sBAAuB,CACnB/rS,YAAY,EACZ/lC,MAAO,EAAQ,UAGvB+7F,EAAOj9F,QAAU65pB,C,qCC/BjB,IACQx+oB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAUAg+oB,EAAiC,SAAUx6oB,GAO3C,SAASw6oB,EAAgBtyb,EAASwqH,EAAa+nU,GAC3C,IAAIv6oB,EAAQF,EAAO3D,KAAKL,KAAMksN,EAASwqH,IAAgB12U,KAqBvD,OApBAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B6J,UAAW,CACPpoB,MAAwC,iBAA1B+wV,EAAY3oU,UACpB2oU,EAAY3oU,UACZ0woB,EAAqB,EAAI,KAC/B/ynB,YAAY,GAEhBkza,YAAa,CACTj5c,MAA0C,iBAA5B+wV,EAAYkoH,YACpBloH,EAAYkoH,YACZ6/M,EAAqB,EAAI,KAC/B/ynB,YAAY,GAEhBvd,cAAe,CACXxoB,MAA4C,iBAA9B+wV,EAAYvoU,cACpBuoU,EAAYvoU,cACZswoB,EAAqB,EAAI,KAC/B/ynB,YAAY,KAGbxnB,CACX,CACA,OA9BAnE,EAAUy+oB,EAAiBx6oB,GA8BpBw6oB,CACX,CAhCoC,CARnB,EAAQ,QAyCzB98jB,EAAOj9F,QAAU+5pB,C,+BCxDjB,SAAShgb,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAetD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,OACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,+BCzBT,EAAQ,MAIhB90I,CAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,GAAQ,CAClCtkP,MAAO,SAAek9C,GAEpB,OAAOA,GAAWA,CACpB,G,+BCRF,IAAIymD,EAAI,EAAQ,OACZikJ,EAAa,EAAQ,OACrBhuH,EAAU,EAAQ,OAClBomI,EAA2B,EAAQ,OACnCgG,EAA6B,qBAC7B7F,EAAiB,EAAQ,OAEzBw4Z,EAA4B/wa,EAAW,WACvCgxa,EAAgBh/hB,IAAYosI,EAIhCriK,EAAE,CAAE37F,OAAQ,UAAWs8O,MAAM,EAAMxpI,OAAQ8e,GAAWosI,GAA8B,CAClFn1P,QAAS,SAAiBrQ,GACxB,OAAO2/P,EAAey4Z,GAAiB3+oB,OAAS0+oB,EAA4B34Z,EAA2B/lP,KAAMzZ,EAC/G,G,YCYFm7F,EAAOj9F,QAJP,SAAsBkB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,kBC1BA,IAAIskB,EAAQ,EAAQ,OAChB3D,EAAQ,EAAQ,OAChBs4oB,EAAQ,EAAQ,MAChB5pjB,EAAQ,EAAQ,OAChBG,EAAiB,EAAQ,MAE7B,SAASmvH,EAAQjwM,GACf,IAAIlhB,EAAS,GAQb,OANA6hG,EAAM6I,UAAUxpF,EAAO,SAAS1uB,GAC1BA,GACFwN,EAAOW,KAAKnO,EAEhB,GAEOwN,CACT,CAoBA,SAAS0rpB,EAAgBC,EAAUvgjB,GAEjC,IADA,IAAItsE,EAAU,CAAC,EACN5sC,EAAI,EAAGA,EAAIy5pB,EAAS,GAAG1qpB,SAAU/O,EACxC4sC,EAAQ5sC,IAAK,EAEf,IAAI05pB,EAAoBxgjB,EAAU,GAAGnqG,OACrC,IAAK/O,EAAI,EAAGA,EAAIk5G,EAAUnqG,SAAU/O,EAC9Bk5G,EAAUl5G,GAAG+O,OAAS2qpB,IACxBA,EAAoBxgjB,EAAUl5G,GAAG+O,QAIrC,IAAK,IAAIqd,EAAI,EAAGA,EAAIqtoB,EAAS1qpB,SAAUqd,EACrC,IAAK,IAAI+G,EAAI,EAAGA,EAAIsmoB,EAASrtoB,GAAGrd,SAAUokB,EAAG,CAG3C,IAFA,IAAIwmoB,GAAwB,EACxBC,GAAwB,EACnBj5nB,EAAI,EAAGA,EAAIu4E,EAAUnqG,SAAU4xB,EAAG,CACzC,IAAIg4E,EAAWO,EAAUv4E,GACzB,KAAIg4E,EAAS5pG,OAAS2qpB,GAAtB,CAIA,IAAIG,EAAgBlhjB,EAAS,GAC7B,GAAI8gjB,EAASrtoB,GAAG,KAAOytoB,EAAvB,CAGAD,GAAsB,EACtB,IAAK,IAAI9+oB,EAAI,EAAGA,EAAI69F,EAAS5pG,SAAU+L,EACrC,IAAK6+oB,EAGH,QAFiC,IAAhBhhjB,EAAS79F,IAAiC,MAAhB69F,EAAS79F,GAGlD6+oB,GAAwB,MACnB,CACL,IAAI9gjB,EAAoB/I,EAAe/8D,MAAM4lE,EAAS79F,GAAK,IACvDsxF,EAAS,CAAC0D,EAAegJ,YAAY2gjB,EAASrtoB,GAAG+G,GAAI28E,EAAeiJ,qBAAqBpwG,OAAOkwG,GAEpG8gjB,EAAwB7pjB,EAAekJ,QAAQ5M,EACjD,CAbJ,CALA,CAqBF,CACIwtjB,IACFhtnB,EAAQzZ,GAAKyZ,EAAQzZ,IAAMwmoB,EAE/B,CAIF,IADA,IAAI7rpB,EAAS,GACJ0N,EAAI,EAAGA,EAAIi+oB,EAAS,GAAG1qpB,SAAUyM,EACpCoxB,EAAQpxB,IACV1N,EAAOW,KAAK+M,EAAI,GAIpB,OAAO1N,CACT,CA1EA1O,EAAQ06pB,UAAY,SAASL,EAAUxomB,GACrC,IAAI9/C,EAAQ,KAUZ,OARAw+F,EAAM6I,UAAUihjB,EAAU,SAASn5pB,EAAON,GACxC,GAAIM,EAAM,KAAO2wD,EAEf,OADA9/C,EAAQnR,GACD,CAEX,GAGa,MAATmR,EACKyT,EAAMtkB,MAGR6Q,CACT,EA6DA/R,EAAQ26pB,SAAW,SAASN,EAAU3uf,EAAOnyD,GAE3C,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAErC,IAAIj1D,EAAM,EAMV,OAJAlG,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtCu1G,GAAOokjB,EAAa35pB,EACtB,GAEgC,IAAzB05pB,EAAcjrpB,OAAe6V,EAAM4wF,KAAOK,EAAMmkjB,EAAcjrpB,MACvE,EAEA3P,EAAQ86pB,OAAS,SAAST,EAAU3uf,EAAOnyD,GAEzC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIqvf,EAAe,GAMnB,OAJAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GAEO2gB,EAAM4vF,MAAMspjB,EACrB,EAEA/6pB,EAAQg7pB,QAAU,SAASX,EAAU3uf,EAAOnyD,GAE1C,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAGf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIqvf,EAAe,GAMnB,OAJAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GAEO2gB,EAAM6vF,OAAOqpjB,EACtB,EAEA/6pB,EAAQi7pB,KAAO,SAASZ,EAAU3uf,EAAOnyD,GAEvC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAGf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAIrC,OAA6B,IAAzBkvf,EAAcjrpB,OACT6V,EAAMtkB,MAIX05pB,EAAcjrpB,OAAS,EAClB6V,EAAMg0B,IAGRqhnB,EAAaD,EAAc,GACpC,EAEA56pB,EAAQk7pB,KAAO,SAASb,EAAU3uf,EAAOnyD,GAEvC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIyvf,EAAWN,EAAaD,EAAc,IAQ1C,OANArqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GAClCi6pB,EAAWN,EAAa35pB,KAC1Bi6pB,EAAWN,EAAa35pB,GAE5B,GAEOi6pB,CACT,EAEAn7pB,EAAQo7pB,KAAO,SAASf,EAAU3uf,EAAOnyD,GAEvC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAGf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAI2vf,EAAWR,EAAaD,EAAc,IAQ1C,OANArqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GAClCm6pB,EAAWR,EAAa35pB,KAC1Bm6pB,EAAWR,EAAa35pB,GAE5B,GAEOm6pB,CACT,EAEAr7pB,EAAQs7pB,SAAW,SAASjB,EAAU3uf,EAAOnyD,GAE3C,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAGf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIqvf,EAAe,GAEnBxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GACA65pB,EAAel7b,EAAQk7b,GAEvB,IAAIrspB,EAAS,EAMb,OAJA6hG,EAAM6I,UAAU2hjB,EAAc,SAAS75pB,GACrCwN,GAAUxN,CACZ,GAEOwN,CACT,EAEA1O,EAAQu7pB,OAAS,SAASlB,EAAU3uf,EAAOnyD,GAEzC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAErC,IAAIqvf,EAAe,GAOnB,OALAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GACA65pB,EAAel7b,EAAQk7b,GAEhBl5oB,EAAMiwF,MAAM57E,EAAE6koB,EACvB,EAEA/6pB,EAAQw7pB,QAAU,SAASnB,EAAU3uf,EAAOnyD,GAE1C,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIqvf,EAAe,GAOnB,OALAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GACA65pB,EAAel7b,EAAQk7b,GAEhBl5oB,EAAMiwF,MAAMr1F,EAAEs+oB,EACvB,EAEA/6pB,EAAQy7pB,KAAO,SAASpB,EAAU3uf,EAAOnyD,GAEvC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAGrC,IAAIqvf,EAAe,GAMnB,OAJAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GAEOi5pB,EAAMpojB,IAAIgpjB,EACnB,EAEA/6pB,EAAQ07pB,KAAO,SAASrB,EAAU3uf,EAAOnyD,GAEvC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAErC,IAAIqvf,EAAe,GAMnB,OAJAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GAEO2gB,EAAMmwF,IAAI97E,EAAE6koB,EACrB,EAEA/6pB,EAAQ27pB,MAAQ,SAAStB,EAAU3uf,EAAOnyD,GAExC,GAAIj4G,MAAMoqK,IAA4B,iBAAVA,EAC1B,OAAOlmJ,EAAMtkB,MAEf,IAAI05pB,EAAgBR,EAAgBC,EAAU9gjB,GAC1CshjB,EAAe,GAEnB,GAAqB,iBAAVnvf,EAAoB,CAC7B,IAAI35J,EAAQ/R,EAAQ06pB,UAAUL,EAAU3uf,GACxCmvf,EAAetqjB,EAAMxlF,KAAKsvoB,EAAStopB,GACrC,MACE8opB,EAAetqjB,EAAMxlF,KAAKsvoB,EAAS3uf,IAErC,IAAIqvf,EAAe,GAMnB,OAJAxqjB,EAAM6I,UAAUwhjB,EAAe,SAAS15pB,GACtC65pB,EAAa1rpB,KAAKwrpB,EAAa35pB,GACjC,GAEO2gB,EAAMmwF,IAAIv1F,EAAEs+oB,EACrB,C,gDChYA,QANA,SAAiB9qjB,EAAMtrG,GACrB,OAAO,SAASuuE,GACd,OAAO+8B,EAAKtrG,EAAUuuE,GACxB,CACF,C,8HCNI0olB,EAAyB,aAAiB,SAAUj1pB,EAAMynH,GAC5D,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB0N,EAAWpsH,EAAKosH,SAChBmvG,EAAYv7N,EAAKu7N,UACjB8iB,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,WAAY,YAAa,OAEnG0nH,GAAW,QAAmBA,EAAU,cACxC,IAAI3pF,GAAU,IAAAvpB,SAAQ,WACpB,MAAO,CACL+mN,UAAWA,EAEf,EAAG,CAACA,IACJ,OAAoB,gBAAoB,IAAYq3H,SAAU,CAC5Dr4V,MAAOwjC,GACO,gBAAoBwgN,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACjEygF,IAAKA,EACL/I,UAAW,IAAWA,EAAWgJ,KAC/B0E,GACN,GACA6oiB,EAAUh4d,YAAc,YACxB,S,+BC5BAv+L,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAKtD,IAAIg8G,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChBnU,EAAe,EAAQ,OACvB+ja,EAAU,EAAQ,OAiBlB26I,EAA6B,WAC7B,SAASA,IACL,IAAIp8oB,EAAQlE,KACZA,KAAKugpB,SAAW,GAChBvgpB,KAAKwgpB,aAAe,GACpBxgpB,KAAKygpB,qBAAuB,CAAC,EAC7BzgpB,KAAKo9D,WAAa,GAClBp9D,KAAK+kP,WAAa,CACd27Z,iBAAkB1gpB,KAAK0gpB,iBAAiBhlmB,KAAK17C,MAC7C2gpB,mBAAoB3gpB,KAAK2gpB,mBAAmBjlmB,KAAK17C,MACjD4gpB,mBAAoB,WAAc,OAAO18oB,EAAMq8oB,QAAU,EACzDM,mBAAoB,WAAc,OAAO38oB,EAAMs8oB,YAAc,EAC7DM,QAAS,SAAUjtnB,GAEf,OADA3vB,EAAMk5D,WAAWtpE,KAAK+/B,GACf,WAAc,OAAO8tE,EAASuV,WAAWhzG,EAAMk5D,WAAYvpC,EAAW,CACjF,EAER,CAsPA,OA1OAysnB,EAAYS,sBAAwB,SAAU53nB,EAAS63nB,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY9/pB,MAAM,KAClCggqB,EAAaD,EAAc,IAAM,WACjCE,EAAsBv/iB,EAAa2B,SAAS09iB,EAAc,IAAMA,EAAc,GAAK,IAGnFG,EAAwB,wBAAwB/7nB,KAAK67nB,GAYzD,GAXIE,IAEAD,EAAsBC,EAAsB,GAC5CF,EAAaE,EAAsB,IAEV,MAAzBF,EAAWxuoB,OAAO,KAClBwuoB,EAAaA,EAAW/uiB,OAAO,GAC/BgviB,EAAsB,IAGN,kBACF97nB,KAAK87nB,GAAsB,CACzC,IAAIE,EAAcF,EAAoBjgqB,MAAM,KACvCoJ,OAAO,SAAWihU,EAAQhlU,GAAK,OAAOglU,EAAO9jU,MAAS,EAAG0hC,GAC9Dg4nB,EAAsBE,EAAY9tpB,IACtC,KACiC,MAAxB4tpB,IACLA,EAAsBh4nB,EAAQ51B,MAElC,MAAO,CAAE2tpB,WAAYA,EAAYC,oBAAqBA,EAC1D,EACAb,EAAYlgpB,UAAUsgpB,iBAAmB,SAAUv3nB,GAC/C,OAAOnpB,KAAKshpB,aAAen4nB,GAAWnpB,KAAKshpB,YAC/C,EACAhB,EAAYlgpB,UAAUugpB,mBAAqB,SAAUjiG,EAAUn6jB,GAC3Dyb,KAAKygpB,qBAAqB/hG,GAAYn6jB,CAC1C,EACA+7pB,EAAYlgpB,UAAUu1N,iBAAmB,SAAU9sJ,EAAMgkiB,GACrD,IAAI00C,EAAavhpB,KAAKygpB,qBAAqB5zC,EAAK20C,OAChD,IAAKD,EACD,MAAM,IAAIh6oB,MAAM,2DAA6DslmB,EAAK20C,OACtF,IAAIC,EAAOF,EAAW14kB,EAAMgkiB,GAC5B,OAAOjrgB,EAAa7xF,QAAQ0xoB,GAAQA,EAAO,CAACA,EAChD,EASAnB,EAAYlgpB,UAAUshpB,qBAAuB,SAAUC,GACnDh8I,EAAQpxY,MAAMqthB,sBAAsB,cAAeD,GACnDhgjB,EAASuV,WAAWl3G,KAAKwgpB,aAAcmB,EAC3C,EACArB,EAAYlgpB,UAAUyhpB,mBAAqB,SAAUF,GACjDh8I,EAAQpxY,MAAMqthB,sBAAsB,iBAAkBD,GACtD3hpB,KAAKwgpB,aAAa1spB,KAAK6tpB,EAC3B,EACArB,EAAYlgpB,UAAUwogB,KAAO,WACzB,IAAI1kgB,EAAQlE,KACR8hpB,EAAe9hpB,KAAKugpB,SAASxtpB,IAAI,SAAUgvpB,GAAO,MAAO,CAACA,EAAIC,IAAKD,EAAM,GAAGz3pB,OAAOq3G,EAASy/O,WAAY,CAAC,GAW7G,SAAS6gU,EAAgBljpB,GAErB,IADA,IAAIoqB,EAAUpqB,EAAOmjpB,SAAS74mB,SAAUrR,EAAQ,IACvCA,GAAS7O,EAAQ1hC,QACtB0hC,EAAUA,EAAQ1hC,OACtB,OAAOuwC,CACX,CAEA,IAAImqnB,EAAepsiB,EAAMqsiB,MAAM,SAAUC,EAASC,EAAQn4pB,EAAMF,GAAS,OAAOq4pB,GAAUD,EAAQl4pB,GAAQk4pB,EAAQp4pB,GAAS,GAkBvHs4pB,EAAevipB,KAAKugpB,SAASntpB,KAAK+upB,EAhCtC,SAAqBK,GACjB,IAAIC,EAAa,SAAUt5nB,GACvB,OAAOA,GAAWA,EAAQ1hC,OAASg7pB,EAAWt5nB,EAAQ1hC,QAAU,EAAI,CACxE,EACA,OAAuC,IAA/B+6pB,EAAOR,IAAI9gqB,MAAM,KAAKkT,OAAkBqupB,EAAWD,EAAOE,gBACtE,EA2BgE,IAAI3vpB,IAjB3C,SAAUyvpB,GAC/B,IAAIG,EAAkBz+oB,EAAMs8oB,aAAavvpB,OAAOqvpB,EAAYrunB,QAAQ6vnB,EAAcU,IAOlF,OANIG,EAAgBvupB,OAAS,GAIzBuupB,EAAgBvvpB,KAAK+upB,EAAaF,GAAkB,IAEjD,CAAEO,OAAQA,EAAQb,WAAYgB,EAAgB,GACzD,GASIC,EAAqBL,EAAaxvpB,IAAI,SAAUwvH,GAAS,OAAOA,EAAMo/hB,UAAY,GAClFkB,EAAwB7ipB,KAAKwgpB,aAC5BvvpB,OAAO,SAAU8N,GAAU,OAAQ4iG,EAAS4zH,QAAQqtb,EAAoB7jpB,EAAS,GACjFhM,IAAI,SAAU4upB,GAAc,MAAO,CAAGa,YAAQ1rpB,EAAW6qpB,WAAYA,EAAe,GACzFY,EAAavwpB,QAZS,SAAUuwH,IAGkB,IAA1Cr+G,EAAMq8oB,SAASh4pB,QAAQg6H,EAAMigiB,SAC7BjgiB,EAAMigiB,OAAOM,cAAcvgiB,EAAMo/hB,WACzC,GAQA,IAAIoB,EAAYR,EAAav0pB,OAAO60pB,GACpC7ipB,KAAKo9D,WAAWprE,QAAQ,SAAUwwC,GAAM,OAAOA,EAAGugnB,EAAY,GAC9Dp9I,EAAQpxY,MAAMyuhB,cAAcD,EAChC,EAgBAzC,EAAYlgpB,UAAU6ipB,eAAiB,SAAUT,GAC7C78I,EAAQpxY,MAAM2uhB,4BAA4B,iBAAkBV,GAC5D,IAAIW,EAAUnjpB,KAAKugpB,SAMnB,OAJI4C,EAAQlypB,OADY,SAAU8wpB,GAAO,OAAOA,EAAIC,MAAQQ,EAAOR,KAAOD,EAAIP,QAAUgB,EAAOhB,KAAO,GAChEptpB,QAClCuxgB,EAAQpxY,MAAM2uhB,4BAA4B,+BAAgCV,GAC9EW,EAAQrvpB,KAAK0upB,GACbxipB,KAAK4ogB,OACE,YAEU,IADHu6I,EAAQ56pB,QAAQi6pB,IAK1B78I,EAAQpxY,MAAM2uhB,4BAA4B,mBAAoBV,GAC9D7gjB,EAASuV,WAAWisiB,EAApBxhjB,CAA6B6gjB,IAJzB78I,EAAQpxY,MAAM2uhB,4BAA4B,uCAAwCV,EAK1F,CACJ,EAMAlC,EAAYlgpB,UAAUqxnB,UAAY,WAC9B,OAAOzxnB,KAAKugpB,SAASxtpB,IAAIgjH,EAAMzjF,KAAK,OACxC,EAMAgunB,EAAYlgpB,UAAU2jC,OAAS,WAC3B,OAAO/jC,KAAKugpB,SAAStvpB,OAAO8kH,EAAMzjF,KAAK,YAAYv/B,IAAIgjH,EAAMzjF,KAAK,QACtE,EA0DAgunB,EAAYrunB,QAAU,SAAU6vnB,EAAcU,GAAU,OAAO,SAAUb,GAErE,GAAIa,EAAOhB,QAAUG,EAAWO,SAASV,MACrC,OAAO,EAEX,IAAI3kO,EAAK8kO,EAAWO,SAChBkB,EAAavmO,EAAGwmO,YAAYniqB,MAAM,KAClCoiqB,EAAcd,EAAOR,IAAI9gqB,MAAM,KAGnC,IAAKygH,EAASomH,OAAOq7b,EAAYE,EAAYxopB,MAAM,EAAIsopB,EAAWhvpB,SAC9D,OAAO,EAGX,IAAImvpB,EAAa,EAAIH,EAAWhvpB,aAAW0C,EACvC0spB,EAAoBF,EAAYxopB,MAAM,EAAGyopB,GAAWrlpB,KAAK,KACzDulpB,EAAgB3B,EAAa0B,GAAmBd,gBACpD,OAAO7lO,EAAG6mO,wBAA0BD,GAAiBA,EAAclwpB,KACvE,CAAG,EACI+spB,CACX,CAxQgC,GAyQhC77pB,EAAQ67pB,YAAcA,C,+BClStB,IAAIrgiB,EAAQ,EAAQ,OAEpBv+B,EAAOj9F,SAAWw7H,EAAM,WAEtB,IAAI/9H,EAAO,WAA4B,EAAEw5D,OAEzC,MAAsB,mBAARx5D,GAAsBA,EAAK0J,eAAe,YAC1D,E,yBCCQ,SAAW/K,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFC,MAC1F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,8DAA8DF,MAC1D,KAERG,cAAe,kCAAkCH,MAAM,KACvDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNC,EAAG,aACHC,GAAI,aACJC,EAAG,cACHC,GAAI,YACJC,EAAG,aACHC,GAAI,WACJC,EAAG,YACHC,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA3DyCC,CAAQ,EAAQ,O,gCCJ1D,SAASo/pB,IAEP,GAC4C,oBAAnCrpN,gCAC4C,mBAA5CA,+BAA+BqpN,SAcxC,IAEErpN,+BAA+BqpN,SAASA,EAC1C,CAAE,MAAOj7iB,GAGP91E,QAAQ3oB,MAAMy+F,EAChB,CACF,CAKEi7iB,GACAjikB,EAAOj9F,QAAU,EAAjB,M,yBCzBM,SAAW5D,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,oDAAoDF,MAAM,KACpEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNy+G,IAAK,mBACLC,KAAM,wBAEVj+G,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNC,EAAG,iBACHC,GAAI,cACJC,EAAG,WACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERM,uBAAwB,mBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,GAEQ,IAANA,EADA,KAII,KAGxB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,kBCN1D,IAQIq/pB,EACAC,EATA1ue,EAAM,EAAQ,OACd2iJ,EAAc,EAAQ,OAWtBgsV,EAAa,EACbC,EAAa,EA+FjBrikB,EAAOj9F,QA5FP,SAAYmL,EAASirI,EAAKj2I,GACxB,IAAIS,EAAIw1I,GAAOj2I,GAAU,EACrBiV,EAAIghI,GAAO,GAGX9zI,GADJ6I,EAAUA,GAAW,CAAC,GACH7I,MAAQ68pB,EACvBI,OAAgCltpB,IAArBlH,EAAQo0pB,SAAyBp0pB,EAAQo0pB,SAAWH,EAKnE,GAAY,MAAR98pB,GAA4B,MAAZi9pB,EAAkB,CACpC,IAAIC,EAAY9ue,IACJ,MAARpuL,IAEFA,EAAO68pB,EAAU,CACA,EAAfK,EAAU,GACVA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAGtD,MAAZD,IAEFA,EAAWH,EAAiD,OAApCI,EAAU,IAAM,EAAIA,EAAU,IAE1D,CAMA,IAAIC,OAA0BptpB,IAAlBlH,EAAQs0pB,MAAsBt0pB,EAAQs0pB,OAAQ,IAAIr7oB,MAAO48F,UAIjE0+iB,OAA0BrtpB,IAAlBlH,EAAQu0pB,MAAsBv0pB,EAAQu0pB,MAAQJ,EAAa,EAGnE/hhB,EAAMkihB,EAAQJ,GAAeK,EAAQJ,GAAY,IAcrD,GAXI/hhB,EAAK,QAA0BlrI,IAArBlH,EAAQo0pB,WACpBA,EAAWA,EAAW,EAAI,QAKvBhihB,EAAK,GAAKkihB,EAAQJ,SAAiChtpB,IAAlBlH,EAAQu0pB,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI58oB,MAAM,mDAGlBu8oB,EAAaI,EACbH,EAAaI,EACbN,EAAYG,EAMZ,IAAIxxlB,GAA4B,KAAb,WAHnB0xlB,GAAS,cAG+BC,GAAS,WACjDtqpB,EAAExU,KAAOmtE,IAAO,GAAK,IACrB34D,EAAExU,KAAOmtE,IAAO,GAAK,IACrB34D,EAAExU,KAAOmtE,IAAO,EAAI,IACpB34D,EAAExU,KAAY,IAALmtE,EAGT,IAAI4xlB,EAAOF,EAAQ,WAAc,IAAS,UAC1CrqpB,EAAExU,KAAO++pB,IAAQ,EAAI,IACrBvqpB,EAAExU,KAAa,IAAN++pB,EAGTvqpB,EAAExU,KAAO++pB,IAAQ,GAAK,GAAM,GAC5BvqpB,EAAExU,KAAO++pB,IAAQ,GAAK,IAGtBvqpB,EAAExU,KAAO2+pB,IAAa,EAAI,IAG1BnqpB,EAAExU,KAAkB,IAAX2+pB,EAGT,IAAK,IAAInjpB,EAAI,EAAGA,EAAI,IAAKA,EACvBhH,EAAExU,EAAIwb,GAAK9Z,EAAK8Z,GAGlB,OAAOg6H,GAAYi9L,EAAYj+T,EACjC,C,mEC1GA,IAAIwqpB,EAA2B,CAAC,IAAK,MACjCC,EAA0B,CAAC,KAAM,QAC9B,SAASC,EAA0BtgpB,GACxC,OAAoD,IAA7CogpB,EAAyB97pB,QAAQ0b,EAC1C,CACO,SAASugpB,EAAyBvgpB,GACvC,OAAmD,IAA5CqgpB,EAAwB/7pB,QAAQ0b,EACzC,CACO,SAASwgpB,EAAoBxgpB,EAAOu6B,EAAQv8C,GACjD,GAAc,SAAVgiB,EACF,MAAM,IAAIqjP,WAAW,qCAAqCt5P,OAAOwwC,EAAQ,0CAA0CxwC,OAAO/L,EAAO,mFAC5H,GAAc,OAAVgiB,EACT,MAAM,IAAIqjP,WAAW,iCAAiCt5P,OAAOwwC,EAAQ,0CAA0CxwC,OAAO/L,EAAO,mFACxH,GAAc,MAAVgiB,EACT,MAAM,IAAIqjP,WAAW,+BAA+Bt5P,OAAOwwC,EAAQ,sDAAsDxwC,OAAO/L,EAAO,mFAClI,GAAc,OAAVgiB,EACT,MAAM,IAAIqjP,WAAW,iCAAiCt5P,OAAOwwC,EAAQ,sDAAsDxwC,OAAO/L,EAAO,kFAE7I,C,+DCdA,IAAI00I,EAAgC,iBAAXlyI,SAAuBA,UAAYA,QAAQgkH,UAAYhkH,QAG5EmyI,EAAaD,GAAgC,iBAAVj1C,QAAsBA,SAAWA,OAAO+mB,UAAY/mB,OAMvFm1C,EAHgBD,GAAcA,EAAWnyI,UAAYkyI,EAG5B,IAAKE,YAAS//H,EAwB3C,SArBqB+/H,EAASA,EAAOC,cAAWhgI,ICHhD,WACE,OAAO,CACT,C,cCPA,WAGE,SAASyrnB,EAASxsG,EAAQysG,GACxBr7nB,OAAO8iS,eAAe7pR,UAAU21gB,GAAUysG,EAAMr7nB,OAAO8iS,eAAe7pR,UAAU21gB,GAClF,CAEA,SAAS0sG,EAAaz3V,EAAK14P,EAAMx9B,GAC/B,IACEhL,OAAOwY,eAAe0oR,EAAK14P,EAAM,CAACz+B,IAAKiB,GACzC,CAAE,MAAO9P,GACT,CACF,CAMA,GAJKmC,OAAOu7nB,UACVv7nB,OAAOu7nB,QAAU,CAAC,IAGfv7nB,OAAO8iS,eACV,KAAM,wDAIR,GADAy4V,QAAQC,YAAcx7nB,OAAOy7nB,UAAYF,QAAQG,UAC7CH,QAAQC,WAAY,CACtB,IAAIG,EAA2B,SAAU93V,GACvC,IAAKA,EAAI+3V,YAAa,CACf/3V,EAAIO,SAAQP,EAAIO,OAAS,CAAC,GAC/BP,EAAI+3V,YAAc,GAClB,IAAIC,EAAuBh4V,EAAIO,OAAOrzR,iBACtC8yR,EAAIO,OAAOrzR,iBAAmB,SAAU0I,EAAG9L,GACzCk2R,EAAI+3V,YAAYninB,GAAK9L,EACjBkunB,GAAsBA,EAAqBlinB,MAAMd,KAAM7L,UAC7D,CACF,CACF,EAEAounB,EAAS,OAAQ,SAAU1vkB,GACzB,OAAO,SAAU1vD,EAAGsqG,EAAK5zF,GACvBipnB,EAAyB9inB,MACzBA,KAAKijnB,MAAQx1hB,EACb,IACE56C,EAAK/xC,MAAMd,KAAM,CAAC7c,EAAGsqG,EAAK5zF,GAC5B,CAAE,MAAO7U,GACHA,EAAEorG,QAAQ7nG,QAAQ,qBAAuB,IAC3CyX,KAAKkjnB,YAAcl+nB,EACnB6tD,EAAK/xC,MAAMd,KAAM,CAAC7c,EAAG,4BAA6B0W,IAEtD,CACF,CACF,GAEA0onB,EAAS,oBAAqB,SAAU1vkB,GACtC,OAAO,SAAUxvD,GACf,OAAO2c,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAaC,kBAAoBpjnB,KAAKmjnB,aAAaC,kBAAkB//nB,GAAc,MAARwvD,EAAe,KAAOA,EAAK/xC,MAAMd,KAAM,CAAC3c,GACtJ,CACF,GAEAk/nB,EAAS,wBAAyB,SAAU1vkB,GAC1C,OAAO,WACL,OAAO7yC,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAa/3V,sBAAwBprR,KAAKmjnB,aAAa/3V,wBAAmC,MAARv4O,EAAe,KAAOA,EAAK/xC,MAAMd,KACtJ,CACF,GAEAuinB,EAAS,QAAS,SAAU1vkB,GAC1B,OAAO,WACL,OAAO7yC,KAAKmjnB,cAAgBnjnB,KAAKmjnB,aAAax8hB,MAAQ3mF,KAAKmjnB,aAAax8hB,QAAmB,MAAR9zC,EAAe,KAAOA,EAAK/xC,MAAMd,KACtH,CACF,GAEAuinB,EAAS,mBAAoB,SAAU1vkB,GACrC,OAAO,SAAUg5C,EAAQlmG,GACvB,GAAe,cAAXkmG,EAAwB,CAC1Bi3hB,EAAyB9inB,MACzB,IAAI2nB,EAAMhiC,EAAMqa,MAEZ2nB,aAAe8jF,UACjB9jF,EAAI3nB,KAER,MACEA,KAAKqjnB,iBAAmBrjnB,KAAKqjnB,kBAAoB,CAAC,EAClDrjnB,KAAKqjnB,iBAAiBx3hB,GAAUlmG,EAChCktD,EAAK/xC,MAAMd,KAAM7L,UAErB,CACF,GAEAounB,EAAS,OAAQ,SAAU1vkB,GACzB,OAAO,WACL,IAAIm4O,EAAMhrR,KACV,GAAI7L,UAAU,IAAMA,UAAU,GAAGmvnB,gBAAiB,CAmFhD,IAlFA,IAAIthR,EAAW7tW,UAAU,GACrB4K,EAAS,CACX0uF,IAAKu9L,EAAIi4V,MACTM,OAAO,EACPh3lB,OAAO,EACP8V,SAAU,SAAUqmE,EAAK86gB,GACnB96gB,GAAOwtB,QAAQ3yB,SAASmF,KAAkC,IAA1BA,EAAIngH,QAAQ,WAE9CmgH,EAAM,MAERsiL,EAAIy4V,aAAc,GACb/6gB,GAAOsiL,EAAI+3V,YAAY/5Z,MAC1BgiE,EAAI+3V,YAAY/5Z,KAAK,CACnBh5M,KAAM,OACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,KAEjBn7gB,GAAOsiL,EAAI+3V,YAAYe,SAC1B94V,EAAI+3V,YAAYe,QAAQ,CACtB9zmB,KAAM,UACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,IAEV,UAARn7gB,GAAmBsiL,EAAI+3V,YAAYp8hB,OACrCqkM,EAAI+3V,YAAYp8hB,MAAM,CACpB32E,KAAM,QACN0zmB,OAAQ14V,EAAI24V,SACZhrkB,MAAOqyO,EAAI44V,QACX71nB,OAAQi9R,EACR64V,kBAAkB,SAEI/snB,IAAtB0snB,EAAWr2f,QAAsBs1f,EAAaz3V,EAAK,SAAU,WAC/D,OAA8B,IAAtBw4V,EAAWr2f,QAAgBzkB,GAAe,UAARA,EAAmB,IAAM86gB,EAAWr2f,MAChF,QAC8Br2H,IAA1B0snB,EAAWz6V,YAA0B05V,EAAaz3V,EAAK,aAAc,WACvE,OAAOw4V,EAAWz6V,UACpB,GACA05V,EAAaz3V,EAAK,aAAc,WAC9B,OAAO,CACT,QAC4Bl0R,IAAxB0snB,EAAWn1hB,UAAwBo0hB,EAAaz3V,EAAK,WAAY,WACnE,OAAOw4V,EAAWn1hB,QACpB,GACA,IAAIu7L,EAAO45V,EAAWt4V,eAAiBxiL,GAA6B,IAAtB86gB,EAAWr2f,QAAwB,UAARzkB,EAAkBA,OAAM5xG,GACjG2rnB,EAAaz3V,EAAK,eAAgB,WAChC,OAAOpB,CACT,GACA64V,EAAaz3V,EAAK,WAAY,WAC5B,OAAOpB,CACT,GACIlhL,GAAK+5gB,EAAaz3V,EAAK,MAAO,WAChC,OAAOtiL,CACT,GACAsiL,EAAIm4V,aAAeK,EACfx4V,EAAI+5M,oBAAoB/5M,EAAI+5M,qBAC5B/5M,EAAIvyC,QAAQuyC,EAAIvyC,QACtB,EACAn2M,SAAU,SAAUt9C,GAKlB,GAJAA,EAAE+I,OAASi9R,EACPA,EAAI+3V,YAAYzglB,UAAU0oP,EAAI+3V,YAAYzglB,SAASt9C,GACvDgmS,EAAI44V,QAAU5+nB,EAAE2zD,MAChBqyO,EAAI24V,SAAW3+nB,EAAE0+nB,OACb1+nB,EAAE2zD,QAAU3zD,EAAE0+nB,OAAQ,CAExB,IAAIx/mB,EAAQlE,KACZyH,WAAW,WACJujR,EAAIy4V,cACPz4V,EAAII,sBAAwB,WAC5B,EACAlnR,EAAMm+B,SAAS,KAAM,CAAC8qF,OAAQ,IAAK47J,WAAY,eAEnD,EAAG25V,QAAQqB,kBAAoB,IACjC,CACF,EACA/8hB,QAASgkM,EAAIq4V,iBAEftknB,KAAc,CAAC,EACfA,MAAe,CAAC,GACP1Z,EAAI,EAAGA,EAAI28W,EAASjsW,KAAK3B,OAAQ/O,IAAK,CAC7C,IAAI2tB,EAAOgvV,EAASjsW,KAAK1Q,GACT,MAAZ2tB,EAAK2U,KAAgC,MAAjB3U,EAAK2U,IAAIp0B,MAAiC,MAAjByf,EAAK2U,IAAI5U,MAAiC,MAAjBC,EAAK2U,IAAI3X,KACjFjR,EAAOypI,MAAMx1H,EAAKxoB,KAAOwoB,EAAK2U,IAE9B5oB,EAAOhJ,KAAKid,EAAKxoB,KAAOwoB,EAAK2U,GAEjC,CAEAlgB,WAAW,WACT,IAAKi7mB,QAAQsB,SACX,KAAM,iFAERh5V,EAAIm4V,aAAeT,QAAQn3V,OAAOxsR,EACpC,EAAG,EACL,KAAO,CACL,GAAIiB,KAAKkjnB,YACP,MAAMljnB,KAAKkjnB,YAEbrwkB,EAAK/xC,MAAMkqR,EAAK72R,UAClB,CACF,CACF,GACAhN,OAAO8iS,eAAeq5V,iBAAkB,EACxCn8nB,OAAOy7nB,SAAWA,SAAW,WAC3B,MAAO,CACLryf,OAAQ,SAAU/lI,EAAKm9B,EAAKp0B,GACtBo0B,EAAIs8lB,sBACNt8lB,EAAMA,EAAI5xB,KAAK,IAEjBiK,KAAKjK,KAAKjC,KAAK,CACbtJ,IAAKA,EACLm9B,IAAKA,EACLp0B,KAAMA,GAEV,EACAwC,KAAM,GACNutnB,iBAAiB,EAErB,EAEAn8nB,OAAOiiG,KAAOA,KAAO,SAAUvvF,GAC7B,MAAO,CACL9D,KAAM8D,EACNoqnB,qBAAqB,EAEzB,CACF,CAED,CA7ND,GA+NA,WASE,SAASD,IACP,IAEE,GADS,IAAI/8gB,cAAc,iCACnB,OAAO,CACjB,CAAE,MAAOjiH,GACP,QAA6D8R,IAAzDxI,UAAU41nB,UAAU,iCAAgD,OAAO,CACjF,CACA,OAAO,CACT,CAEA,SAASC,EAAU7xmB,GACjB,IAAInoB,EAAO,EAAGH,EAAM,EAEpB,GAAI7C,OAAOwuQ,OACT,OAAOA,OAAOrjP,GAAK1tB,SAGrB,GAAI0tB,EAAIvpB,aACN,GACEoB,GAASmoB,EAAI9rB,WAAa8rB,EAAIvlB,WAC9B/C,GAAQsoB,EAAI7rB,UAAY6rB,EAAIrlB,UAC5BqlB,EAAMA,EAAIvpB,mBACHupB,GAEX,MAAO,CACLnoB,KAAMA,EACNH,IAAKA,EAET,CAEA,GAAI04nB,QAAQC,WAAY,CAQtB,GAPAD,QAAQsB,SAAWA,IAGftB,QAAQG,YACVH,QAAQ0B,OAAQ,IAGb1B,QAAQn3V,OAAQ,CACnB,IAAI84V,EAAOC,EAA2Gj/nB,EAAGmR,EAAO6wG,EAA3GsT,EAASlyH,SAASskB,cAAc,UAAWw3mB,EAAa97nB,SAAS+hM,qBAAqB,UAC3G,GAAIrjM,OAAOu7nB,QAAQ2B,MACjBA,EAAQl9nB,OAAOu7nB,QAAQ2B,WAClB,GAAIl9nB,OAAOu7nB,QAAQ8B,OACxBF,EAAWn9nB,OAAOu7nB,QAAQ8B,YAE1B,IAAKn/nB,EAAI,EAAGA,EAAIk/nB,EAAWnwnB,OAAQ/O,IAGjC,IADAmR,GADA6wG,EAAMk9gB,EAAWl/nB,GAAGgiH,KACRimG,OAAO,4CACN,EAAG,CACdg3a,EAAWj9gB,EAAIle,UAAU,EAAG3yF,EAAQ,GACpC,KACF,CAIsB,MAAtBksnB,QAAQ+B,aAAoB/B,QAAQ+B,WAAaH,GACrD3pgB,EAAO18G,aAAa,MAAOomnB,GAASC,EAAW,kBAC/C77nB,SAAS+hM,qBAAqB,QAAQ,GAAGr6F,YAAYwqB,EACvD,CAEA+ngB,QAAQgC,SAAW,SAAUhhX,EAAMihX,EAAU9tU,GAC3C,IAAKmtU,IACH,KAAM,iFA8BRtgX,EAAKhoN,KAAK,aA5BU,WAClB,IAAI75C,EAAQ8inB,EAASl9nB,SACjBi8Q,EAAKnM,KAAK,YACR11P,GAAOA,EAAM6nG,YAAY,uBAExBi7gB,EAASptX,KAAK,kBACjBotX,EAASz/W,OAAO,UAChBy/W,EAASz/W,OAAO,SAChBy/W,EAASjpkB,KAAK,SAAU,SAAU5f,GAChC8olB,EAAgB9jnB,MAAMd,KAAM,CAAC87B,IAC7B+6Q,EAAS/1S,MAAMd,KAAM,CAAC87B,GACxB,GACA6olB,EAASptX,KAAK,eAAgB,SAEhC11P,EAAMooG,SAAS,sBAlFvB,SAAyBy5J,GACvB,MAAyC,UAAlCA,EAAK,GAAG1yJ,QAAQ5oH,eAA6Bs7Q,EAAKnM,KAAK,SAA+C,SAApCmM,EAAKnM,KAAK,QAAQnvQ,aAC7F,CAiFay8nB,CAAgBnhX,KACnB7hQ,EAAM1Y,IAAI,WAAY,YACnBA,IAAI,MAAOg7nB,EAAUzgX,EAAK,IAAI15Q,IAAM,MAAMb,IAAI,OAAQg7nB,EAAUzgX,EAAK,IAAIv5Q,KAAO,MAChFhB,IAAI,QAASu6Q,EAAK,GAAG/8Q,YAAc,MAAMwC,IAAI,SAAUu6Q,EAAK,GAAG78Q,aAAe,MAC9EsC,IAAI,SAAU,oBAAoBA,IAAI,UAAWu6Q,EAAKv6Q,IAAI,YAC1DA,IAAI,WAAY,UAAUA,IAAI,UAAW,UACzCA,IAAI,aAAc,WACrBw7nB,EAASx7nB,IAAI,QAASu6Q,EAAK,GAAG/8Q,YAAc,MAAMwC,IAAI,SAAUu6Q,EAAK,GAAG78Q,aAAe,MACpFsC,IAAI,WAAY,YAAYA,IAAI,MAAO,OAAOA,IAAI,OAAQ,QAGnE,GAIA,IAAIy7nB,EAAkB,SAAU9olB,GAG9B,IAFA,IAAI0sG,EAAQk6e,QAAQoC,SAAShplB,GAEpBz2C,EAAI,EAAGA,EAAImjJ,EAAMp0I,OAAQ/O,SACVyR,IAAlB0xI,EAAMnjJ,GAAG0tB,OAAoBy1H,EAAMnjJ,GAAG0tB,KAAO,QAC3Bjc,IAAlB0xI,EAAMnjJ,GAAGkO,OAAoBi1I,EAAMnjJ,GAAGkO,KAAO,aAC3BuD,IAAlB0xI,EAAMnjJ,GAAG2qB,OAAoBw4H,EAAMnjJ,GAAG2qB,KAAO,aAE9C8rB,EAAI/tC,SACP+tC,EAAI/tC,OAAS,CAAC,GAEhB+tC,EAAI/tC,OAAOy6I,MAAQA,EAEf1sG,EAAI/tC,OAAOy6I,QAAUA,IACvB1sG,EAAIiplB,SAAWv8e,IAEhB1sG,EAAIiplB,UAAYjplB,EAAI/tC,OAAOy6I,OAAOx1H,KAAO,SAAU3tB,GAClD,OAAQy2C,EAAIiplB,UAAYjplB,EAAI/tC,OAAOy6I,OAAOnjJ,IAAM,IAClD,CACF,CACF,EAEAq9nB,QAAQsC,iBAAmB,SAAUthX,EAAM51J,GACrCA,EACF41J,EAAKh6J,YAAY,sBAEjBg6J,EAAKz5J,SAAS,qBAElB,CACF,CACD,CArID,GAuIK9iH,OAAOqnP,aACVrnP,OAAOqnP,WAAa,WAClB,IAAItqO,EAAQlE,KAAMilnB,GAAc,EAChCjlnB,KAAKg0B,UAAY,CAAC,EAClBh0B,KAAK9H,iBAAmB,SAAU8X,EAAMlb,GACtCoP,EAAM8vB,UAAUhkB,GAAQ9L,EAAM8vB,UAAUhkB,IAAS,GACjD9L,EAAM8vB,UAAUhkB,GAAMlc,KAAKgB,EAC7B,EACAkL,KAAK7H,oBAAsB,SAAU6X,EAAMlb,GACrCoP,EAAM8vB,UAAUhkB,IAAO9L,EAAM8vB,UAAUhkB,GAAM+c,OAAO7oB,EAAM8vB,UAAUhkB,GAAMznB,QAAQuM,GAAK,EAC7F,EACAkL,KAAK8sP,cAAgB,SAAUhxN,GAC7B,IAAIluC,EAAOsW,EAAM8vB,UAAU8H,EAAI9rB,MAC/B,GAAIpiB,EACF,IAAK,IAAIvI,EAAI,EAAGA,EAAIuI,EAAKwG,OAAQ/O,IAC/BuI,EAAKvI,GAAGgb,KAAK6D,EAAO43B,EAG1B,EACA97B,KAAKqrR,QAAUrrR,KAAK04O,QAAU14O,KAAKy4O,OAASz4O,KAAKklnB,YAAcllnB,KAAKi/jB,UAAYj/jB,KAAKgle,WAAa,KAElG,IAAImgJ,EAAiB,SAAUn1mB,EAAM8rB,GACnC,IAAI92C,EAAI,CAACgrB,KAAMA,EAAMjiB,OAAQmW,EAAOw/mB,OAAQ5nlB,EAAI4nlB,OAAQ/qkB,MAAO7c,EAAI6c,MAAO1uC,MAAO6xB,EAAI7xB,OAErF,OADkB,MAAd6xB,EAAI3oC,SAAgBnO,EAAE+I,OAAOoF,OAAS2oC,EAAI3oC,QACvCnO,CACT,EACI6uC,EAAW,SAAUiI,GAKvB,IAAI92C,EAJCigoB,IACHA,GAAc,EACV/gnB,EAAMghnB,aAAahhnB,EAAMghnB,YAAYC,EAAe,YAAarplB,KAGtD,SAAbA,EAAI9rB,MACF9L,EAAM+6jB,WAAW/6jB,EAAM+6jB,UAAUkmD,EAAe,UAAWrplB,IAC/D92C,EAAImgoB,EAAe,OAAQrplB,GACvB53B,EAAMu0O,QAAQv0O,EAAMu0O,OAAOzzP,GAC/Bkf,EAAM4oP,cAAc9nQ,IACE,aAAb82C,EAAI9rB,MACbhrB,EAAImgoB,EAAe,WAAYrplB,GAC3B53B,EAAM8ge,YAAY9ge,EAAM8ge,WAAWhgf,GACvCkf,EAAM4oP,cAAc9nQ,KAEpBA,EAAImgoB,EAAe,QAASrplB,GACxB53B,EAAMw0O,SAASx0O,EAAMw0O,QAAQ1zP,GACjCkf,EAAM4oP,cAAc9nQ,GAExB,EACAgb,KAAK24O,cAAgB,SAAU5yG,GAC7B28e,QAAQ/pY,cAAc5yG,EAAMlyG,EAC9B,EACA7zB,KAAKolnB,WAAa,SAAUr/e,GAC1B28e,QAAQ0C,WAAWr/e,EAAMlyG,EAC3B,CACF,E,yBChaF6tD,EAAOj9F,QAAU,WAChB,GAAsB,mBAAXD,QAAiE,mBAAjCsF,OAAOo4F,sBAAwC,OAAO,EACjG,GAA+B,iBAApB19F,OAAO0d,SAAyB,OAAO,EAElD,IAAIoQ,EAAM,CAAC,EACPknG,EAAMh1H,OAAO,QACbkgqB,EAAS56pB,OAAO0vH,GACpB,GAAmB,iBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxC1vH,OAAOsW,UAAUpZ,SAASqZ,KAAKm5G,GAA8B,OAAO,EACxE,GAA+C,oBAA3C1vH,OAAOsW,UAAUpZ,SAASqZ,KAAKqkpB,GAAiC,OAAO,EAY3E,IAAKlriB,KADLlnG,EAAIknG,GADS,GAEDlnG,EAAO,OAAO,EAC1B,GAA2B,mBAAhBxoB,OAAOO,MAAmD,IAA5BP,OAAOO,KAAKioB,GAAKle,OAAgB,OAAO,EAEjF,GAA0C,mBAA/BtK,OAAOu7C,qBAAiF,IAA3Cv7C,OAAOu7C,oBAAoB/yB,GAAKle,OAAgB,OAAO,EAE/G,IAAIuwpB,EAAO76pB,OAAOo4F,sBAAsB5vE,GACxC,GAAoB,IAAhBqyoB,EAAKvwpB,QAAgBuwpB,EAAK,KAAOnriB,EAAO,OAAO,EAEnD,IAAK1vH,OAAOsW,UAAU+hF,qBAAqB9hF,KAAKiS,EAAKknG,GAAQ,OAAO,EAEpE,GAA+C,mBAApC1vH,OAAOyrC,yBAAyC,CAC1D,IAAIgjC,EAAazuE,OAAOyrC,yBAAyBjjB,EAAKknG,GACtD,GAdY,KAcRjhD,EAAW5yE,QAA8C,IAA1B4yE,EAAW7sC,WAAuB,OAAO,CAC7E,CAEA,OAAO,CACR,C,yBCxCAg2D,EAAOj9F,QAAU,SAA6Bg9G,EAAIi4H,EAAUC,GAC1D,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BiS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACnBirI,EAAiB,GACrBpR,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3Bo6b,EAAO,MAAQtqO,EACjBuqO,EAAO,MAAQvqO,EACfojZ,EAAW5hZ,EAAItB,UAAYv4H,EAAGu4H,UAAY,EAC1CuqO,EAAY,OAAS24K,EACrB14K,EAAkB,iBAAmB1qO,EACnC8qb,EAAc96pB,OAAOO,KAAKy7N,GAAW,CAAC,GACxC++b,EAAepjjB,EAAG6jH,OAAOiY,mBAAqB,CAAC,EAC/Cunb,EAAiBh7pB,OAAOO,KAAKw6pB,GAC7BE,EAAetjjB,EAAG6jH,OAAOwX,qBACzBkob,EAAkBJ,EAAYxwpB,QAAU0wpB,EAAe1wpB,OACvD6wpB,GAAiC,IAAjBF,EAChBG,EAA6C,iBAAhBH,GAA4Bj7pB,OAAOO,KAAK06pB,GAAc3wpB,OACnF+wpB,EAAoB1jjB,EAAG1xE,KAAKq1nB,iBAC5BC,EAAmBJ,GAAiBC,GAAuBC,EAC3D1gN,EAAiBhjW,EAAG1xE,KAAK20a,cACzBC,EAAiBljW,EAAGi5H,OAClB4qb,EAAY7jjB,EAAG6jH,OAAOqY,SAC1B,GAAI2nb,KAAe7jjB,EAAG1xE,KAAKsqM,QAASirb,EAAUjrb,QAAUirb,EAAUlxpB,OAASqtG,EAAG1xE,KAAK8if,aAAc,IAAI0yI,EAAgB9jjB,EAAG0S,KAAKqxiB,OAAOF,GAKpI,GAJA77iB,GAAO,OAAS,EAAU,iBAAmB,EAAe,WACxDg7V,IACFh7V,GAAO,QAAU,EAAoB,iBAEnC47iB,EAAkB,CAMpB,GAJE57iB,GADEg7V,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEhDugN,EAAiB,CAEnB,GADAv7iB,GAAO,oBAAsB,EAAS,cAClCm7iB,EAAYxwpB,OACd,GAAIwwpB,EAAYxwpB,OAAS,EACvBq1G,GAAO,sBAAwB,EAAgB,mBAAqB,EAAS,SACxE,CACL,IAAI0kP,EAAOy2T,EACX,GAAIz2T,EAGF,IAFA,IAAkB53I,GAAM,EACtBx6I,EAAKoyR,EAAK/5V,OAAS,EACdmiN,EAAKx6I,GACV0plB,EAAet3T,EAAK53I,GAAM,GAC1B9sG,GAAO,OAAS,EAAS,OAAUhI,EAAG0S,KAAK6mH,eAAeyqb,GAAiB,GAGjF,CAEF,GAAIX,EAAe1wpB,OAAQ,CACzB,IAAIwlH,EAAOkriB,EACX,GAAIlriB,EAGF,IAFA,IAAgBizH,GAAM,EACpB7wK,EAAK49C,EAAKxlH,OAAS,EACdy4O,EAAK7wK,GACV0plB,GAAa9riB,EAAKizH,GAAM,GACxBpjI,GAAO,OAAUhI,EAAGigI,WAAWgkb,IAAe,SAAW,EAAS,IAGxE,CACAj8iB,GAAO,uBAAyB,EAAS,MAC3C,CACA,GAAyB,OAArB07iB,EACF17iB,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACL,IAAIk8iB,EAAoBlkjB,EAAGi6H,UACvBkqb,EAAsB,OAAUxhN,EAAO,OAI3C,GAHI3iW,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW0oO,EAAM3iW,EAAG1xE,KAAKstlB,eAE7D4nC,EACF,GAAIE,EACF17iB,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACLA,GAAO,IAAM,EAAe,aAC5B,IAAIo8iB,EAAqB5rb,EACzBA,EAAiBx4H,EAAGy4H,cAAgB,yBAChCY,GAAaA,IAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,qEAAwFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,qCAAwC,EAAwB,QACrN,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,oCAEPA,GAAO,wCAETA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,mDAAsDhI,EAAa,WAAI,YAAc,EAAU,KAExGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,GAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCwwH,EAAiB4rb,EACb1rb,IACF1wH,GAAO,WAEX,MACK,GAAIy7iB,EACT,GAAyB,WAArBC,EAAgC,CAClC17iB,GAAO,QAAU,EAAU,eAC3B,IAAIwjI,EAAgBxrI,EAAG25H,cACvB35H,EAAG25H,cAAgBE,EAAIF,eAAgB,EACvCE,EAAIhW,OAASy/b,EACbzpb,EAAIE,WAAa/5H,EAAG+5H,WAAa,wBACjCF,EAAIpB,cAAgBz4H,EAAGy4H,cAAgB,wBACvCoB,EAAII,UAAYj6H,EAAG1xE,KAAKgjf,uBAAyBtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW0oO,EAAM3iW,EAAG1xE,KAAKstlB,cAChH,IAAIz4K,EAAYvqO,EAAQ,IAAM+pO,EAAO,IACrC9oO,EAAIM,YAAYshZ,GAAY94K,EAC5B,IAAIl3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,SAAW,EAAe,gBAAkB,EAAU,wHAA0H,EAAU,IAAM,EAAS,SAChNhI,EAAG25H,cAAgBE,EAAIF,cAAgB6R,CACzC,MACE3R,EAAIhW,OAASy/b,EACbzpb,EAAIE,WAAa/5H,EAAG+5H,WAAa,wBACjCF,EAAIpB,cAAgBz4H,EAAGy4H,cAAgB,wBACvCoB,EAAII,UAAYj6H,EAAG1xE,KAAKgjf,uBAAyBtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW0oO,EAAM3iW,EAAG1xE,KAAKstlB,cAC5Gz4K,EAAYvqO,EAAQ,IAAM+pO,EAAO,IACrC9oO,EAAIM,YAAYshZ,GAAY94K,EACxBl3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpE0wH,IACF1wH,GAAO,SAAW,EAAe,aAIvChI,EAAGi6H,UAAYiqb,CACjB,CACIX,IACFv7iB,GAAO,OAETA,GAAO,OACH0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,IAEtB,CACA,IAAIo5a,EAAerkjB,EAAG1xE,KAAKg2nB,cAAgBtkjB,EAAG25H,cAC9C,GAAIwpb,EAAYxwpB,OAAQ,CACtB,IAAI4xpB,EAAOpB,EACX,GAAIoB,EAGF,IAFA,IAAIP,EAAcQ,GAAM,EACtBC,EAAKF,EAAK5xpB,OAAS,EACd6xpB,EAAKC,GAAI,CAEd,IAAI9gF,EAAOt/W,EADX2/b,EAAeO,EAAKC,GAAM,IAE1B,GAAIxkjB,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,KAAM,CAC9C,IAAIqgnB,EAAQ1kjB,EAAG0S,KAAK43H,YAAY05a,GAE9BW,GADAxhN,EAAYvqO,EAAQ8rb,EACNL,QAAiChvpB,IAAjBsukB,EAAK5if,SAQrC,GAPA84I,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAasQ,EAAcq6a,EAC/B7qb,EAAIpB,cAAgBD,EAAiB,IAAMx4H,EAAG0S,KAAKkyiB,eAAeZ,GAClEnqb,EAAII,UAAYj6H,EAAG0S,KAAKmyiB,QAAQ7kjB,EAAGi6H,UAAW+pb,EAAchkjB,EAAG1xE,KAAKstlB,cACpE/hZ,EAAIM,YAAYshZ,GAAYz7gB,EAAG0S,KAAK6mH,eAAeyqb,GAC/Cv4a,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAAG,CAC/Cr3N,EAAQzrI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAC7C,IAAI2hN,GAAW3hN,CACjB,MACM2hN,GAAWhiN,EACf96V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAEvD,GAAI28iB,EACF38iB,GAAO,IAAM,EAAU,QAClB,CACL,GAAI87iB,GAAiBA,EAAcE,GAAe,CAChDh8iB,GAAO,SAAW,GAAa,kBAC3Bg7V,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,OAAS,EAAe,aAC3Bk8iB,EAAoBlkjB,EAAGi6H,UACzBmqb,EAAqB5rb,EADvB,IAOIa,GALF0rb,GAAmB/kjB,EAAG0S,KAAK8mH,aAAawqb,GACtChkjB,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKmyiB,QAAQX,EAAmBF,EAAchkjB,EAAG1xE,KAAKstlB,eAE1EpjZ,EAAiBx4H,EAAGy4H,cAAgB,aAChCY,GAAaA,IAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,GAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,GAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,GAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCwwH,EAAiB4rb,EACjBpkjB,EAAGi6H,UAAYiqb,EACfl8iB,GAAO,YACT,MACM0wH,GACF1wH,GAAO,SAAW,GAAa,kBAC3Bg7V,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,OAAS,EAAe,uBAE/BA,GAAO,QAAU,GAAa,kBAC1Bg7V,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,SAGXA,GAAO,IAAM,EAAU,KACzB,CACF,CACI0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,IAEtB,CAEJ,CACA,GAAIo4a,EAAe1wpB,OAAQ,CACzB,IAAIqypB,GAAO3B,EACX,GAAI2B,GAGF,IAFA,IAAIf,GAAYgB,IAAM,EACpBC,GAAKF,GAAKrypB,OAAS,EACdsypB,GAAKC,IAENvhF,EAAOy/E,EADXa,GAAae,GAAKC,IAAM,IAEpBjljB,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,OACxCw1L,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAa/5H,EAAG+5H,WAAa,qBAAuB/5H,EAAG0S,KAAK43H,YAAY25a,IAC5Epqb,EAAIpB,cAAgBz4H,EAAGy4H,cAAgB,sBAAwBz4H,EAAG0S,KAAKkyiB,eAAeX,IAEpFj8iB,GADEg7V,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpDh7V,GAAO,QAAWhI,EAAGigI,WAAWgkb,IAAe,SAAW,EAAS,QACnEpqb,EAAII,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW0oO,EAAM3iW,EAAG1xE,KAAKstlB,cAC5Dz4K,EAAYvqO,EAAQ,IAAM+pO,EAAO,IACrC9oO,EAAIM,YAAYshZ,GAAY94K,EACxBl3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpE0wH,IACF1wH,GAAO,SAAW,EAAe,aAEnCA,GAAO,MACH0wH,IACF1wH,GAAO,SAAW,EAAe,aAEnCA,GAAO,OACH0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,KAK5B,CAKA,OAJIvS,IACF1wH,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEhDhI,EAAG0S,KAAK4wV,YAAYt7V,EAE5B,C,+BCtUA,IAEIo0I,EAFkB,EAAQ,MAElBr8I,CAAgB,SAE5B9f,EAAOj9F,QAAU,SAAUugd,GACzB,IAAI11O,EAAS,IACb,IACE,MAAM01O,GAAa11O,EACrB,CAAE,MAAOs3b,GACP,IAEE,OADAt3b,EAAOuuB,IAAS,EACT,MAAMmnN,GAAa11O,EAC5B,CAAE,MAAO4rK,GAAsB,CACjC,CAAE,OAAO,CACX,C,yBCFQ,SAAWr6Y,GAAU,aAIzB,IAAIgmqB,EAAa,SAAUhmpB,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,CAClB,EACAimpB,EAAU,CACN7jqB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJE,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRojqB,EAAY,SAAUrjkB,GAClB,OAAO,SAAUzgD,EAAQw+E,EAAe39H,EAAQ49H,GAC5C,IAAIhgH,EAAImlpB,EAAW5jnB,GACfxwB,EAAMq0oB,EAAQpjkB,GAAGmjkB,EAAW5jnB,IAIhC,OAHU,IAANvhC,IACA+Q,EAAMA,EAAIgvG,EAAgB,EAAI,IAE3BhvG,EAAI1uB,QAAQ,MAAOk/C,EAC9B,CACJ,EACAhiD,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGJ,EAAOG,aAAa,QAAS,CACpCC,OAAQA,EACRE,YAAaF,EACbG,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,cAAe,MACfC,KAAM,SAAUC,GACZ,MAAO,MAAQA,CACnB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,IAEA,GAEf,EACAG,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG8jqB,EAAU,KACb7jqB,GAAI6jqB,EAAU,KACd5jqB,EAAG4jqB,EAAU,KACb3jqB,GAAI2jqB,EAAU,KACd1jqB,EAAG0jqB,EAAU,KACbzjqB,GAAIyjqB,EAAU,KACdxjqB,EAAGwjqB,EAAU,KACbvjqB,GAAIujqB,EAAU,KACdtjqB,EAAGsjqB,EAAU,KACbrjqB,GAAIqjqB,EAAU,KACdpjqB,EAAGojqB,EAAU,KACbnjqB,GAAImjqB,EAAU,MAElB9iqB,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA5JyCC,CAAQ,EAAQ,O,+BCR1DuF,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAErB,IAAIuiqB,EAAW,EAAQ,OAQvB,SAAS/tiB,EAAkBriF,EAAKnnC,IAAkB,MAAPA,GAAeA,EAAMmnC,EAAIxiC,UAAQ3E,EAAMmnC,EAAIxiC,QAAQ,IAAK,IAAI/O,EAAI,EAAGu0H,EAAO,IAAItlH,MAAM7E,GAAMpK,EAAIoK,EAAKpK,IAAOu0H,EAAKv0H,GAAKuxC,EAAIvxC,GAAM,OAAOu0H,CAAM,CAMtL,SAAShkF,EAAQ0V,EAAQiuE,GAAkB,IAAIlvH,EAAOP,OAAOO,KAAKihD,GAAS,GAAIxhD,OAAOo4F,sBAAuB,CAAE,IAAI2xB,EAAU/pH,OAAOo4F,sBAAsB52C,GAAaiuE,IAAgB1F,EAAUA,EAAQ5iH,OAAO,SAAUuoH,GAAO,OAAO1vH,OAAOyrC,yBAAyB+V,EAAQkuE,GAAK9tF,UAAY,IAAIrhC,EAAKyJ,KAAKgN,MAAMzW,EAAMwpH,EAAU,CAAE,OAAOxpH,CAAM,CAEpV,SAASovH,EAAc1rH,GAAU,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAAE,IAAIksB,EAAyB,MAAhBpd,UAAU9O,GAAa8O,UAAU9O,GAAK,CAAC,EAAOA,EAAI,EAAKuwC,EAAQ9rC,OAAOynB,IAAS,GAAMvf,QAAQ,SAAUxH,GAAOkvH,EAAgB3rH,EAAQvD,EAAK+mB,EAAO/mB,GAAO,GAAeV,OAAO6vH,0BAA6B7vH,OAAO0hC,iBAAiBz9B,EAAQjE,OAAO6vH,0BAA0BpoG,IAAmBqkB,EAAQ9rC,OAAOynB,IAASvf,QAAQ,SAAUxH,GAAOV,OAAOwY,eAAevU,EAAQvD,EAAKV,OAAOyrC,yBAAyBhkB,EAAQ/mB,GAAO,EAAM,CAAE,OAAOuD,CAAQ,CAErhB,SAAS2rH,EAAgBpnG,EAAK9nB,EAAK7E,GAAiK,OAApJ6E,KAAO8nB,EAAOxoB,OAAOwY,eAAegQ,EAAK9nB,EAAK,CAAE7E,MAAOA,EAAO+lC,YAAY,EAAMuL,cAAc,EAAMxL,UAAU,IAAkBnZ,EAAI9nB,GAAO7E,EAAgB2sB,CAAK,CAMhN,IAAI20oB,EAAc,SAAqBh+jB,GACrC,GAAIA,GAAYA,EAASmmf,MAEvB,OAAOnmf,EAGT,IAAIi+jB,EAAcj+jB,GAAYA,EAASqkH,OAEvC,GAA2B,iBAAhB45c,GAAmD,IAAvBA,EAAY9ypB,OACjD,OAAOqlH,EAAc,CAAC,EAAGxwB,EAAU,CACjCmmf,MAAO,CAAC,IAKZ,IAIIA,EAJS83E,EAAY/9jB,UAAU,GAEdjoG,MAAM,KAEPoJ,OAAO,SAAUoL,EAAKyxpB,GAExC,IACIC,EA5CR,SAAwBxwnB,EAAKvxC,GAAK,OAUlC,SAAyBuxC,GAAO,GAAItiC,MAAMyb,QAAQ6mB,GAAM,OAAOA,CAAK,CAV3BklF,CAAgBllF,IAQzD,SAA+BA,EAAKvxC,GAAK,GAAsB,oBAAXb,QAA4BA,OAAO0d,YAAYpY,OAAO8sC,GAAjE,CAAgF,IAAIm0E,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKp0G,EAAW,IAAM,IAAK,IAAiCq0G,EAA7BxwG,EAAKi8B,EAAIpyC,OAAO0d,cAAmB8oG,GAAMG,EAAKxwG,EAAG7S,QAAQ0Z,QAAoBupG,EAAKj3G,KAAKq3G,EAAGxlH,QAAYN,GAAK0lH,EAAK32G,SAAW/O,GAA3D2lH,GAAK,GAAkE,CAAE,MAAOtC,GAAOuC,GAAK,EAAMC,EAAKxC,CAAK,CAAE,QAAU,IAAWsC,GAAsB,MAAhBrwG,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIswG,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAA3W,CAAiX,CARvakR,CAAsBrlF,EAAKvxC,IAI5F,SAAqCs+E,EAAGnoE,GAAU,GAAKmoE,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOs1C,EAAkBt1C,EAAGnoE,GAAS,IAAIqF,EAAI/W,OAAOsW,UAAUpZ,SAASqZ,KAAKsjE,GAAG7oE,MAAM,GAAI,GAAiE,MAAnD,WAAN+F,GAAkB8iE,EAAEljE,cAAaI,EAAI8iE,EAAEljE,YAAYlN,MAAgB,QAANsN,GAAqB,QAANA,EAAoBvM,MAAMuwB,KAAKhkB,GAAc,cAANA,GAAqB,2CAA2C3e,KAAK2e,GAAWo4G,EAAkBt1C,EAAGnoE,QAAzG,CAA7O,CAA+V,CAJ7T69G,CAA4BziF,EAAKvxC,IAEnI,WAA8B,MAAM,IAAIib,UAAU,4IAA8I,CAFvD47G,EAAoB,CA4C9HpR,CADDq8iB,EAAajmqB,MAAM,KACkB,GAI/D,OAAOu4H,EAAc,CAAC,EAAG/jH,EAAKgkH,EAAgB,CAAC,EAHhC0tiB,EAAqB,GACnBA,EAAqB,IAGxC,EAAG,CAAC,GACJ,OAAO3tiB,EAAc,CAAC,EAAGxwB,EAAU,CACjCmmf,MAAOA,GAEX,EA2CA3qlB,EAAiB,QAzCS,SAA6B4iqB,GACrD,IAAIvxQ,EAASuxQ,EAAUvxQ,OACnBhkY,EAAQu1oB,EAAUv1oB,MAmCtB,OAjC0B,SAA6Bm7F,GACrD,IAAIq6iB,EAAqBxxQ,EAAO,CAC9B7sT,SAAUg+jB,EAAYh6iB,EAAQhkB,UAC9B2K,OAAQqZ,EAAQrZ,SAOlB,OAAO,WACL,IAAIjkG,EAAQwE,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAKmzpB,EAE5El8pB,EAAO+I,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5E6b,EAAO5kB,EAAK4kB,KACZ9F,EAAU9e,EAAK8e,QAEnB,GAAI8F,IAASg3oB,EAASO,gBAAiB,CACrC,IAAIt+jB,EAAW/+E,EAAQ++E,SACnB2K,EAAS1pF,EAAQ0pF,OAIrB,OAHuB1pF,EAAQs9oB,iBAGL73pB,EAAQmiB,EAAMniB,EAAO,CAC7Cs5F,SAAU6sT,EAAOmxQ,EAAYh+jB,IAC7B2K,OAAQA,GAEZ,CAEA,OAAOjkG,CACT,CACF,CAGF,C,yBC7FQ,SAAW9O,GAAU,aA4ChBA,EAAOG,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJE,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJ+gI,kBAAkB,EAClB9gI,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,UACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJC,EAAG,KACHC,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERM,uBAAwB,mBACxBC,QAAS,SAAU8+C,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAnGyCC,CAAQ,EAAQ,O,yBCGlD,SAAW1D,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGC,MACzG,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,CACNg+O,WACI,gEAAgEl+O,MAC5D,KAERs9C,OAAQ,iEAAiEt9C,MACrE,KAEJm+O,SAAU,iBAEdh+O,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUE,GACd,OAAOA,EAAEc,QACL,gCACA,SAAUqkL,EAAIt9C,EAAIkU,GACd,MAAc,MAAPA,EAAalU,EAAK,KAAOA,EAAKkU,EAAK,IAC9C,EAER,EACAh8I,KAAM,SAAUC,GACZ,MAAI,4BAA4Bf,KAAKe,GAC1BA,EAAEc,QAAQ,SAAU,UAE3B,OAAO7B,KAAKe,GACLA,EAAEc,QAAQ,QAAS,YAEvBd,CACX,EACAA,EAAG,iBACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UACJC,EAAG,QACHC,GAAI,WACJC,EAAG,MACHC,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERM,uBAAwB,8BACxBC,QAAS,SAAU8+C,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,IACpB,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhGyCC,CAAQ,EAAQ,O,kBCN1D,IAAI+jQ,EAAQ,EAAQ,OAChB9gJ,EAAc,EAAQ,OA4D1B9lB,EAAOj9F,QA5CP,SAAqB6mD,EAAQ/5B,EAAQk2oB,EAAWrub,GAC9C,IAAI5iO,EAAQixpB,EAAUrzpB,OAClBA,EAASoC,EACTkxpB,GAAgBtub,EAEpB,GAAc,MAAV9tL,EACF,OAAQl3C,EAGV,IADAk3C,EAASxhD,OAAOwhD,GACT90C,KAAS,CACd,IAAIT,EAAO0xpB,EAAUjxpB,GACrB,GAAKkxpB,GAAgB3xpB,EAAK,GAClBA,EAAK,KAAOu1C,EAAOv1C,EAAK,MACtBA,EAAK,KAAMu1C,GAEnB,OAAO,CAEX,CACA,OAAS90C,EAAQpC,GAAQ,CAEvB,IAAI5J,GADJuL,EAAO0xpB,EAAUjxpB,IACF,GACXgyV,EAAWl9S,EAAO9gD,GAClBm9pB,EAAW5xpB,EAAK,GAEpB,GAAI2xpB,GAAgB3xpB,EAAK,IACvB,QAAiBe,IAAb0xV,KAA4Bh+V,KAAO8gD,GACrC,OAAO,MAEJ,CACL,IAAI/E,EAAQ,IAAI+hN,EAChB,GAAIlvB,EACF,IAAIjmO,EAASimO,EAAWovH,EAAUm/T,EAAUn9pB,EAAK8gD,EAAQ/5B,EAAQg1B,GAEnE,UAAiBzvC,IAAX3D,EACEq0G,EAAYmgjB,EAAUn/T,EAAUo/T,EAA+Cxub,EAAY7yL,GAC3FpzC,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,C,+BC3DA,SAAS00pB,EAAeC,EAAWC,GAC/B,GAAID,EAAU1zpB,SAAW2zpB,EAAW3zpB,OAChC,OAAO,EAEX,IAAK,IAAI/O,EAAI,EAAGA,EAAIyiqB,EAAU1zpB,OAAQ/O,IAClC,GAAIyiqB,EAAUziqB,KAAO0iqB,EAAW1iqB,GAC5B,OAAO,EAGf,OAAO,CACX,C,iBAyBA,QAvBA,SAAoB2iqB,EAAUx/c,GAE1B,IAAIy/c,OADY,IAAZz/c,IAAsBA,EAAUq/c,GAEpC,IACIztX,EADA8tX,EAAW,GAEXC,GAAa,EAejB,OAdA,WAEI,IADA,IAAI96H,EAAU,GACL1yhB,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpC0yhB,EAAQ1yhB,GAAMxG,UAAUwG,GAE5B,OAAIwtpB,GAAcF,IAAajopB,MAAQwoM,EAAQ6kV,EAAS66H,KAGxD9tX,EAAa4tX,EAASlnpB,MAAMd,KAAMqthB,GAClC86H,GAAa,EACbF,EAAWjopB,KACXkopB,EAAW76H,GALAjzP,CAOf,CAEJ,C,yBCxBQ,SAAWv5S,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IC,MAClJ,KAEJC,YACI,iEAAiED,MAC7D,KAERwzU,YAAa,yCACbM,kBAAmB,yCACnBD,iBAAkB,yCAClBE,uBAAwB,yCACxB7zU,SAAU,kDAAkDF,MAAM,KAClEG,cAAe,wBAAwBH,MAAM,KAC7CI,YAAa,wBAAwBJ,MAAM,KAC3CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVS,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNC,EAAG,mBACHC,GAAI,YACJC,EAAG,YACHC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJC,EAAG,QACHC,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhEyCC,CAAQ,EAAQ,O,+BCL1D,SAASi6O,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,+DCLbghB,EAA0B,iBAARl9J,MAAoBA,MAAQA,KAAKx4F,SAAWA,QAAUw4F,KAK5E,QAFW,KAAck9J,GAAY/zI,SAAS,cAATA,E,yBCLrC/pB,EAAOj9F,QAAU,SAA+Bg9G,EAAIi4H,EAAUC,GAC5D,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BiS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACnBirI,EAAiB,GACrBpR,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3Bo+oB,EAAc,CAAC,EACjBC,EAAgB,CAAC,EACjB5jN,EAAiBhjW,EAAG1xE,KAAK20a,cAC3B,IAAK4jN,KAAaxic,EAAS,CACzB,IAAIs/W,EAAOt/W,EAAQwic,GACfC,EAAQj0pB,MAAMyb,QAAQq1jB,GAAQijF,EAAgBD,EAClDG,EAAMD,GAAaljF,CACrB,CACA37d,GAAO,OAAS,EAAU,aAC1B,IAAIk8iB,EAAoBlkjB,EAAGi6H,UAE3B,IAAK,IAAI4sb,KADT7+iB,GAAO,cAAgB,EAAS,IACV4+iB,EAEpB,IADAE,EAAQF,EAAcC,IACZl0pB,OAAQ,CAKhB,GAJAq1G,GAAO,SAAW,EAAWhI,EAAG0S,KAAK43H,YAAYu8a,GAAc,kBAC3D7jN,IACFh7V,GAAO,4CAA8C,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAaqtb,GAAc,OAE1Gnub,EAAe,CACjB1wH,GAAO,SACP,IAAI0kP,EAAOo6T,EACX,GAAIp6T,EAGF,IAFA,IAAkBthH,GAAM,EACtB9wK,EAAKoyR,EAAK/5V,OAAS,EACdy4O,EAAK9wK,GACV0plB,EAAet3T,EAAKthH,GAAM,GACtBA,IACFpjI,GAAO,QAITA,GAAO,SADL88iB,EAAWlsb,GADT8rb,EAAQ1kjB,EAAG0S,KAAK43H,YAAY05a,KAEF,kBAC1BhhN,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,gBAAkB,EAAS,MAAShI,EAAG0S,KAAK6mH,eAAev5H,EAAG1xE,KAAKstlB,aAAeooC,EAAeU,GAAU,OAGtH18iB,GAAO,SACP,IAAI++iB,EAAgB,UAAY1ub,EAC9B0sb,EAAmB,OAAUgC,EAAgB,OAC3C/mjB,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG1xE,KAAKstlB,aAAe57gB,EAAG0S,KAAKipgB,YAAYuoC,EAAmB6C,GAAe,GAAQ7C,EAAoB,MAAQ6C,GAElI,IAAI1tb,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,6DAAgFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,2BAA+Bx4H,EAAG0S,KAAK8mH,aAAaqtb,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB9mjB,EAAG0S,KAAK8mH,aAA6B,GAAhBstb,EAAMn0pB,OAAcm0pB,EAAM,GAAKA,EAAMrqpB,KAAK,OAAU,QAC9X,IAArBujG,EAAG1xE,KAAK+gK,WACVrnF,GAAO,4BACa,GAAhB8+iB,EAAMn0pB,OACRq1G,GAAO,YAAehI,EAAG0S,KAAK8mH,aAAastb,EAAM,IAEjD9+iB,GAAO,cAAiBhI,EAAG0S,KAAK8mH,aAAastb,EAAMrqpB,KAAK,OAE1DurG,GAAO,kBAAqBhI,EAAG0S,KAAK8mH,aAAaqtb,GAAc,iBAE7D7mjB,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,8EAErC,KAAO,CACLA,GAAO,QACP,IAAImQ,EAAO2uiB,EACX,GAAI3uiB,EAGF,IAFA,IAAI6riB,EAAcgD,GAAM,EACtBzslB,EAAK49C,EAAKxlH,OAAS,EACdq0pB,EAAKzslB,GAAI,CACdyplB,EAAe7riB,EAAK6uiB,GAAM,GAC1B,IAAItC,EAAQ1kjB,EAAG0S,KAAK43H,YAAY05a,GAE9Bc,GADAC,EAAmB/kjB,EAAG0S,KAAK8mH,aAAawqb,GAC7Bprb,EAAQ8rb,GACjB1kjB,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKmyiB,QAAQX,EAAmBF,EAAchkjB,EAAG1xE,KAAKstlB,eAE1E5zgB,GAAO,SAAW,EAAa,kBAC3Bg7V,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,qBACiB,IAApBhI,EAAGs5H,cACLtxH,GAAO,6DAAgFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,2BAA+Bx4H,EAAG0S,KAAK8mH,aAAaqtb,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB9mjB,EAAG0S,KAAK8mH,aAA6B,GAAhBstb,EAAMn0pB,OAAcm0pB,EAAM,GAAKA,EAAMrqpB,KAAK,OAAU,QAC9X,IAArBujG,EAAG1xE,KAAK+gK,WACVrnF,GAAO,4BACa,GAAhB8+iB,EAAMn0pB,OACRq1G,GAAO,YAAehI,EAAG0S,KAAK8mH,aAAastb,EAAM,IAEjD9+iB,GAAO,cAAiBhI,EAAG0S,KAAK8mH,aAAastb,EAAMrqpB,KAAK,OAE1DurG,GAAO,kBAAqBhI,EAAG0S,KAAK8mH,aAAaqtb,GAAc,iBAE7D7mjB,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACT,CAEJ,CACAA,GAAO,QACH0wH,IACFuS,GAAkB,IAClBjjI,GAAO,WAEX,CAEFhI,EAAGi6H,UAAYiqb,EACf,IAAIhhN,EAAiBrpO,EAAIZ,OACzB,IAAK,IAAI4tb,KAAaF,EAChBhjF,EAAOgjF,EAAYE,GACnB7mjB,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,OACxC2jE,GAAO,IAAM,EAAe,iBAAmB,EAAWhI,EAAG0S,KAAK43H,YAAYu8a,GAAc,kBACxF7jN,IACFh7V,GAAO,4CAA8C,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAaqtb,GAAc,OAE9G7+iB,GAAO,OACP6xH,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAasQ,EAAcrqI,EAAG0S,KAAK43H,YAAYu8a,GACnDhtb,EAAIpB,cAAgBD,EAAiB,IAAMx4H,EAAG0S,KAAKkyiB,eAAeiC,GAClE7+iB,GAAO,KAAQhI,EAAGkkH,SAAS2V,GAAQ,IACnCA,EAAIZ,OAASiqO,EACbl7V,GAAO,OACH0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,MAQxB,OAJIvS,IACF1wH,GAAO,MAAQ,EAAmB,QAAU,EAAU,iBAElDhI,EAAG0S,KAAK4wV,YAAYt7V,EAE5B,C,oJCxIIi/iB,EAAuB,aAAiB,SAAUt2nB,EAAOygF,GAC3D,IAAI81iB,EAtBN,SAAuBv2nB,GACrB,IAAIjJ,GAAU,IAAA4gN,YAAW,KACzB,IAAK5gN,EAAS,OAAOiJ,EAErB,IAAI4jS,EAAY7sS,EAAQ6sS,UACpBD,EAAkB5sS,EAAQ4sS,gBAC1BF,EAAkB1sS,EAAQ0sS,gBAC1BrmT,GAAO,OAA8B2Z,EAAS,CAAC,YAAa,kBAAmB,oBAE/Ey/nB,GAAwC,IAArBx2nB,EAAM8c,aAA4C,IAApB1/B,EAAK0/B,WACtD1kD,GAAM,OAAa4nC,EAAMkjS,UAC7B,OAAO,OAAS,CAAC,EAAGljS,EAAO,CACzB2R,OAAwB,MAAhB3R,EAAM2R,QAAyB,MAAPv5C,GAAc,OAAawrU,KAAexrU,EAAM4nC,EAAM2R,OACtFhmC,GAAIg4T,EAAgB3jS,EAAMkjS,UAC1B,kBAAmBO,EAAgBzjS,EAAMkjS,UACzCpmR,WAAY05mB,IAAqBx2nB,EAAM8c,YAAc1/B,EAAK0/B,YAAc,KACxE+vL,aAAoC,MAAtB7sM,EAAM6sM,aAAuB7sM,EAAM6sM,aAAezvN,EAAKyvN,aACrEC,cAAsC,MAAvB9sM,EAAM8sM,cAAwB9sM,EAAM8sM,cAAgB1vN,EAAK0vN,eAE5E,CAGuB2pb,CAAcz2nB,GAC/B0gF,EAAW61iB,EAAe71iB,SAC1BhJ,EAAY6+iB,EAAe7+iB,UAC3B/lE,EAAS4knB,EAAe5knB,OACxB86L,EAAU8pb,EAAe9pb,QACzB45G,EAAakwU,EAAelwU,WAC5BC,EAAYiwU,EAAejwU,UAC3BH,EAASowU,EAAepwU,OACxBC,EAAYmwU,EAAenwU,UAC3BG,EAAWgwU,EAAehwU,SAC1B15G,EAAe0pb,EAAe1pb,aAC9BC,EAAgBypb,EAAezpb,cAC/Bg4G,EAAayxU,EAAez5mB,WAC5B45mB,EAAoBH,EAAej/a,GACnCC,OAAkC,IAAtBm/a,EAA+B,MAAQA,EAEnDt5oB,GADIm5oB,EAAerzV,UACZ,OAA8BqzV,EAAgB,CAAC,WAAY,YAAa,SAAU,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,eAAgB,gBAAiB,aAAc,KAAM,cAEvNzznB,GAAS,QAAmB49E,EAAU,YAC1C,IAAK/uE,IAAWmzS,GAAch4G,EAAe,OAAO,KACpD,IAAI6pb,EAAoB,gBAAoBp/a,GAAW,OAAS,CAAC,EAAGn6N,EAAM,CACxEqjG,IAAKA,EACLv0G,KAAM,WACN,eAAgBylC,EAChB+lE,UAAW,IAAWA,EAAW50E,EAAQ,CACvC6O,OAAQA,OAgBZ,OAbImzS,IAAY6xU,EAAoB,gBAAoB7xU,EAAY,CAClEl4G,GAAIj7L,EACJ86L,QAASA,EACT45G,WAAYA,EACZC,UAAWA,EACXH,OAAQA,EACRC,UAAWA,EACXG,SAAUA,EACV15G,aAAcA,EACdC,cAAeA,GACd6pb,IAGiB,gBAAoB,IAAW/qU,SAAU,CAC3Dr4V,MAAO,MACO,gBAAoB,IAAkBq4V,SAAU,CAC9Dr4V,MAAO,MACNojqB,GACL,GACAL,EAAQrge,YAAc,UACtB,S,+BC9EA,IAAI3+F,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjCjoO,EAAW,EAAQ,KAEnB4+F,EAAaya,EAAY,GAAGza,YAIhC8D,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,GAAQ,CACnC8joB,aAAc,WAGZ,IAFA,IAAIruoB,EAAI3zB,EAASioO,EAAuBjvN,OACpC5L,EAASumB,EAAEvmB,OACN/O,EAAI,EAAGA,EAAI+O,EAAQ/O,IAAK,CAC/B,IAAIyic,EAAWliW,EAAWjrE,EAAGt1B,GAE7B,GAA4B,QAAZ,MAAXyic,KAEDA,GAAY,SAAYzic,GAAK+O,GAA0C,QAAZ,MAAnBwxF,EAAWjrE,EAAGt1B,KAAyB,OAAO,CAC5F,CAAE,OAAO,CACX,G,2BCpBD,WAAY,IAAIhC,EAAE,SAASm1B,EAAE5e,GAAG,IAAIC,EAAE,EAAE,OAAO,WAAW,OAAOA,EAAED,EAAExF,OAAO,CAACoN,MAAK,EAAG7b,MAAMiU,EAAEC,MAAM,CAAC2H,MAAK,EAAG,CAAC,CAAC,IAIQoY,EAJJz2B,EAAE,mBAAmB2G,OAAO0hC,iBAAiB1hC,OAAOwY,eAAe,SAAS1I,EAAEC,EAAEjU,GAAG,OAAGgU,GAAGtF,MAAM8L,WAAWxG,GAAG9P,OAAOsW,YAAmBxG,EAAEC,GAAGjU,EAAED,OAATiU,CAAuB,EACNiwF,EAAzQ,SAAWjwF,GAAGA,EAAE,CAAC,iBAAiByoF,YAAYA,WAAWzoF,EAAE,iBAAiBzS,QAAQA,OAAO,iBAAiBm7F,MAAMA,KAAK,iBAAiBy+B,QAAQA,QAAQ,IAAI,IAAIlnH,EAAE,EAAEA,EAAED,EAAExF,SAASyF,EAAE,CAAC,IAAIjU,EAAEgU,EAAEC,GAAG,GAAGjU,GAAGA,EAAEJ,MAAMA,KAAK,OAAOI,CAAC,CAAC,MAAM2hB,MAAM,4BAA6B,CAAO1G,CAAEb,MAAM,SAAS+Z,EAAEngB,EAAEC,GAAG,GAAGA,EAAED,EAAE,CAAC,IAAIhU,EAAEikG,EAAEjwF,EAAEA,EAAE1Y,MAAM,KAAK,IAAI,IAAIqC,EAAE,EAAEA,EAAEqW,EAAExF,OAAO,EAAE7Q,IAAI,CAAC,IAAIyB,EAAE4U,EAAErW,GAAG,KAAKyB,KAAKY,GAAG,MAAMgU,EAAEhU,EAAEA,EAAEZ,EAAE,EAAwB6U,EAAEA,EAATtW,EAAEqC,EAAlBgU,EAAEA,EAAEA,EAAExF,OAAO,OAAoB7Q,GAAG,MAAMsW,GAAG1W,EAAEyC,EAAEgU,EAAE,CAACq9B,cAAa,EAAGxL,UAAS,EAAG9lC,MAAMkU,GAAG,CAAC,CAEjF,SAAS6pF,EAAE9pF,GAAyD,OAAtDA,EAAE,CAAC9R,KAAK8R,IAAKpV,OAAO0d,UAAU,WAAW,OAAOlC,IAAI,EAASpG,CAAC,CAC5d,SAASuI,EAAEvI,GAAG,IAAIC,EAAE,oBAAoBrV,QAAQA,OAAO0d,UAAUtI,EAAEpV,OAAO0d,UAAU,OAAOrI,EAAEA,EAAEwG,KAAKzG,GAAG,CAAC9R,KAAK0wB,EAAE5e,GAAG,CAAO,GAFzHmgB,EAAE,SAAS,SAASngB,GAA2H,SAAShU,EAAE8b,EAAEC,GAAG3B,KAAK8Y,EAAEpX,EAAEve,EAAE6c,KAAK,cAAc,CAACi3B,cAAa,EAAGxL,UAAS,EAAG9lC,MAAMgc,GAAG,CAAC,GAAG/H,EAAE,OAAOA,EAAEhU,EAAEwa,UAAUpZ,SAAS,WAAW,OAAOgZ,KAAK8Y,CAAC,EAAE,IAAIv1B,EAAE,kBAAkB,IAAIiC,KAAKm+F,WAAW,GAAG,IAAI3+F,EAAE,EAAE,OAAjU,SAAS6U,EAAE6H,GAAG,GAAG1B,gBAAgBnG,EAAE,MAAM,IAAIyG,UAAU,+BAA+B,OAAO,IAAI1a,EAAErC,GAAGme,GAAG,IAAI,IAAI1c,IAAI0c,EAAE,CAAkN,GAChWqY,EAAE,kBAAkB,SAASngB,GAAG,GAAGA,EAAE,OAAOA,EAAEA,EAAEpV,OAAO,mBAAmB,IAAI,IAAIqV,EAAE,uHAAuH3Y,MAAM,KAAK0E,EAAE,EAAEA,EAAEiU,EAAEzF,OAAOxO,IAAI,CAAC,IAAIrC,EAAEsmG,EAAEhwF,EAAEjU,IAAI,mBAAoBrC,GAAG,mBAAmBA,EAAE6c,UAAUxG,IAAIzW,EAAEI,EAAE6c,UAAUxG,EAAE,CAACq9B,cAAa,EAAGxL,UAAS,EAAG9lC,MAAM,WAAW,OAAO+9F,EAAElrE,EAAExY,MAAM,GAAG,CAAC,OAAOpG,CAAC,GACjR,mBAAmB9P,OAAOmW,eAAe2Z,EAAE9vB,OAAOmW,mBAAmB,CAAC,IAAItc,EAAEiW,EAAE,CAAC,IAAakf,EAAE,CAAC,EAAE,IAAIA,EAAE5Y,UAAlB,CAACtG,GAAE,GAA2BjW,EAAEm1B,EAAElf,EAAE,MAAMA,CAAC,CAAC,MAAMA,GAAG,CAACjW,GAAE,CAAE,CAACi2B,EAAEj2B,EAAE,SAASiW,EAAEC,GAAiB,GAAdD,EAAEsG,UAAUrG,EAAKD,EAAEsG,YAAYrG,EAAE,MAAM,IAAIyG,UAAU1G,EAAE,sBAAsB,OAAOA,CAAC,EAAE,IAAI,CAAC,IAAImf,EAAEa,EAAE,SAASZ,IAAIhZ,KAAK7c,GAAE,EAAG6c,KAAKgmB,EAAE,KAAKhmB,KAAKmC,OAAE,EAAOnC,KAAK3c,EAAE,EAAE2c,KAAK0jF,EAAE1jF,KAAKgZ,EAAE,EAAEhZ,KAAKwY,EAAE,IAAI,CACvd,SAASS,EAAErf,GAAG,GAAGA,EAAEzW,EAAE,MAAM,IAAImd,UAAU,gCAAgC1G,EAAEzW,GAAE,CAAE,CAAwK,SAAS+1B,EAAEtf,EAAEC,GAAS,OAAND,EAAEvW,EAAE,EAAQ,CAACsC,MAAMkU,EAAE,CAAC,SAASsf,EAAEvf,GAAGoG,KAAK2B,EAAE,IAAIqX,EAAEhZ,KAAKib,EAAErhB,CAAC,CAEhU,SAASqhB,EAAErhB,EAAEC,EAAEjU,EAAErC,GAAG,IAAI,IAAIyB,EAAE6U,EAAEwG,KAAKzG,EAAE+H,EAAEqkB,EAAEpgC,GAAG,KAAKZ,aAAa8E,QAAQ,MAAM,IAAIwW,UAAU,mBAAmBtb,EAAE,qBAAqB,IAAIA,EAAEwc,KAAK,OAAO5H,EAAE+H,EAAExe,GAAE,EAAG6B,EAAE,IAAI0c,EAAE1c,EAAEW,KAAK,CAAC,MAAMgc,GAAG,OAAO/H,EAAE+H,EAAEqkB,EAAE,KAAKpsB,EAAE+H,EAAE1e,EAAE0e,GAAGuZ,EAAEthB,EAAE,CAA0B,OAAzBA,EAAE+H,EAAEqkB,EAAE,KAAKziC,EAAE8c,KAAKzG,EAAE+H,EAAED,GAAUwZ,EAAEthB,EAAE,CAAC,SAASshB,EAAEthB,GAAG,KAAKA,EAAE+H,EAAEte,GAAG,IAAI,IAAIwW,EAAED,EAAEqhB,EAAErhB,EAAE+H,GAAG,GAAG9H,EAAE,OAAOD,EAAE+H,EAAExe,GAAE,EAAG,CAACwC,MAAMkU,EAAElU,MAAM6b,MAAK,EAAG,CAAC,MAAM5b,GAAGgU,EAAE+H,EAAEQ,OAAE,EAAOvI,EAAE+H,EAAE1e,EAAE2C,EAAE,CAAU,GAATgU,EAAE+H,EAAExe,GAAE,EAAMyW,EAAE+H,EAAE6W,EAAE,CAAoB,GAAnB3e,EAAED,EAAE+H,EAAE6W,EAAE5e,EAAE+H,EAAE6W,EAAE,KAAQ3e,EAAEsf,EAAE,MAAMtf,EAAEof,EAAE,MAAM,CAACtzB,MAAMkU,EAAEmpF,OAAOxhF,MAAK,EAAG,CAAC,MAAM,CAAC7b,WAAM,EAAO6b,MAAK,EAAG,CAC1e,SAAS4Z,EAAExhB,GAAGoG,KAAKlY,KAAK,SAAS+R,GAAG,OAAOD,EAAE+pE,EAAE9pE,EAAE,EAAEmG,KAAK+iF,MAAM,SAASlpF,GAAG,OAAOD,EAAE3W,EAAE4W,EAAE,EAAEmG,KAAKgjF,OAAO,SAASnpF,GAAG,OAFjH,SAAWD,EAAEC,GAAGof,EAAErf,EAAE+H,GAAG,IAAI/b,EAAEgU,EAAE+H,EAAEqkB,EAAE,OAAGpgC,EAASq1B,EAAErhB,EAAE,WAAWhU,EAAEA,EAAU,OAAE,SAASrC,GAAG,MAAM,CAACoC,MAAMpC,EAAEie,MAAK,EAAG,EAAE3H,EAAED,EAAE+H,EAAEqhF,SAAQppF,EAAE+H,EAAEqhF,OAAOnpF,GAAUqhB,EAAEthB,GAAE,CAEhCuhB,CAAEvhB,EAAEC,EAAE,EAAEmG,KAAKxb,OAAO0d,UAAU,WAAW,OAAOlC,IAAI,CAAC,CAAC,SAASgb,EAAEphB,EAAEC,GAAsD,OAAnDA,EAAE,IAAIuhB,EAAE,IAAIjC,EAAEtf,IAAIkf,GAAGnf,EAAEwG,WAAW2Y,EAAElf,EAAED,EAAEwG,WAAkBvG,CAAC,CAEzP,GALgFmf,EAAE5Y,UAAUujE,EAAE,SAAS/pE,GAAGoG,KAAKmC,EAAEvI,CAAC,EAAEof,EAAE5Y,UAAUnd,EAAE,SAAS2W,GAAGoG,KAAKwY,EAAE,CAACS,EAAErf,EAAEuf,GAAE,GAAInZ,KAAK3c,EAAE2c,KAAKgZ,GAAGhZ,KAAK0jF,CAAC,EAAE1qE,EAAE5Y,UAAU4iF,OAAO,SAASppF,GAAGoG,KAAKwY,EAAE,CAACwqE,OAAOppF,GAAGoG,KAAK3c,EAAE2c,KAAK0jF,CAAC,EAA4EvqE,EAAE/Y,UAAUujE,EAAE,SAAS/pE,GAAa,OAAVqf,EAAEjZ,KAAK2B,GAAM3B,KAAK2B,EAAEqkB,EAAS/K,EAAEjb,KAAKA,KAAK2B,EAAEqkB,EAAEl+B,KAAK8R,EAAEoG,KAAK2B,EAAEgiE,IAAG3jE,KAAK2B,EAAEgiE,EAAE/pE,GAAUshB,EAAElb,MAAK,EAC1RmZ,EAAE/Y,UAAUnd,EAAE,SAAS2W,GAAa,OAAVqf,EAAEjZ,KAAK2B,GAAM3B,KAAK2B,EAAEqkB,EAAS/K,EAAEjb,KAAKA,KAAK2B,EAAEqkB,EAAS,MAAEpsB,EAAEoG,KAAK2B,EAAEgiE,IAAG3jE,KAAK2B,EAAE1e,EAAE2W,GAAUshB,EAAElb,MAAK,EAG/Q+Z,EAAE,0BAA0B,SAASngB,GAAG,OAAOA,GAAI,WAAW,OAD4L,SAAWA,EAAEC,GAAGD,aAAa2G,SAAS3G,GAAG,IAAI,IAAIhU,EAAE,EAAErC,GAAE,EAAGyB,EAAE,CAAC8C,KAAK,WAAW,IAAIvE,GAAGqC,EAAEgU,EAAExF,OAAO,CAAC,IAAIsN,EAAE9b,IAAI,MAAM,CAACD,MAAMkU,EAAE6H,EAAE9H,EAAE8H,IAAIF,MAAK,EAAG,CAAM,OAALje,GAAE,EAAS,CAACie,MAAK,EAAG7b,WAAM,EAAO,GAA2C,OAAxCX,EAAER,OAAO0d,UAAU,WAAW,OAAOld,CAAC,EAASA,CAAC,CACnZrD,CAAEqe,KAAK,SAASnG,EAAEjU,GAAG,MAAM,CAACiU,EAAEjU,EAAE,EAAE,CAAC,GACrG,oBAAqBwjG,OAAO,oBAAqBw5hB,WAAWA,SAASxinB,UAAU/V,MAAM,CAAC,IAAI5G,EAAE,SAASmW,EAAEC,GAAG,IAAI,IAAIjU,EAAE,EAAEA,EAAEgU,EAAExF,OAAOxO,IAAIiU,EAAED,EAAEhU,GAAG,EAAEm1B,EAAE,SAASnhB,GAAG,OAAOA,EAAE7V,QAAQ,YAAY,OAAO,EAAE+2B,EAAE,SAASlhB,EAAEC,EAAEjU,GAAG,OAAGiU,aAAauvF,MAAMxjG,OAAE,IAASA,EAAE2a,OAAO3a,EAAE,IAAI,iBAAkBiU,EAAEtG,KAAKsG,EAAEtG,KAAK,OAAUsG,EAAEtG,OAAO3N,GAAG,kBAAkBkE,OAAOsW,UAAUpZ,SAASqZ,KAAKxG,KAAGA,EAAE,IAAIg/L,KAAK,CAACh/L,GAAGjU,IAAS,CAAC2a,OAAO3G,GAAGC,IAAS,CAAC0G,OAAO3G,GAAG2G,OAAO1G,GAAG,EAAEqH,EAAE,SAAStH,EAAEC,GAAG,GAAGD,EAAExF,OAAOyF,EAAE,MAAM,IAAIyG,UAAUzG,EAAE,gCACxeD,EAAExF,OAAO,YAAa,EAAEymB,EAAE,iBAAkBwnE,WAAWA,WAAW,iBAAkBl7F,OAAOA,OAAO,iBAAkBm7F,KAAKA,KAAKtiF,KAAK4a,EAAEC,EAAE+nmB,SAASjomB,EAAEE,EAAEovQ,gBAAgBpvQ,EAAEovQ,eAAe7pR,UAAUmyN,KAAK73M,EAAEG,EAAEouoB,SAASpuoB,EAAEirE,MAAMrrE,EAAEI,EAAEvsB,WAAWusB,EAAEvsB,UAAU46pB,WAAW1uoB,EAAEK,EAAExzB,SAASwzB,EAAExzB,QAAQ+Y,UAAUma,EAAEM,EAAEr2B,QAAQA,OAAOgwC,YAAYja,IAAI6uE,KAAKhpF,UAAUma,KAAK6uE,KAAKhpF,UAAUma,GAAG,QAAQ,SAASM,IAAIg+K,KAAKz4L,UAAUma,KAAKs+K,KAAKz4L,UAAUma,GAAG,SAAS,IAAI,IAAIs+K,KAAK,GAAG,GAAG,CAAC,MAAMj/L,GAAGihB,EAAEg+K,KAAK,SAASh/L,EAAEjU,EAAErC,GAC7P,OADgQsW,EAAE,IAAIuvF,KAAKvvF,EAAEtW,GAAG,CAAC,GAClfuG,OAAO0hC,iBAAiB3xB,EAAE,CAACtG,KAAK,CAAC5N,MAAMC,GAAG2yP,aAAa,CAAC5yP,QAAQpC,QAAG,IAASA,EAAEg1P,aAAa,IAAI1vO,KAAKtlB,EAAEg1P,cAAc,IAAI1vO,OAAO7hB,SAAS,CAACrB,MAAM,WAAW,MAAM,eAAe,KAAK40B,GAAGzwB,OAAOwY,eAAezI,EAAE0gB,EAAE,CAAC50B,MAAM,SAAgBkU,CAAC,CAAC,CAAC,IAAI4mN,EAAO,SAAS7mN,GAAG,OAAOA,EAAE7V,QAAQ,MAAM,OAAOA,QAAQ,MAAM,OAAOA,QAAQ,KAAK,MAAM,EAAEu2B,EAAE,SAAS1gB,GAAGoG,KAAK3a,EAAE,GAAG,IAAIwU,EAAEmG,KAAKpG,GAAGnW,EAAEmW,EAAEjJ,SAAS,SAAS/K,GAAG,GAAGA,EAAE2N,OAAO3N,EAAEooD,UAAU,WAAWpoD,EAAEoqB,MAAM,WAAWpqB,EAAEoqB,OAAOpqB,EAAEqsC,QAAQ,6BAA6B,GAAG,SAClfrsC,EAAEoqB,KAAK,CAAC,IAAIzsB,EAAEqC,EAAE4iJ,OAAO5iJ,EAAE4iJ,MAAMp0I,OAAOxO,EAAE4iJ,MAAM,CAAC,IAAIqwD,KAAK,GAAG,GAAG,CAAC7oL,KAAK,8BAA8BvsB,EAAEF,EAAE,SAASyB,GAAG6U,EAAE02H,OAAO3qI,EAAE2N,KAAKvO,EAAE,EAAE,KAAK,oBAAoBY,EAAEoqB,MAAM,eAAepqB,EAAEoqB,KAAKvsB,EAAEmC,EAAEgK,QAAQ,SAAS5K,IAAIA,EAAEgpD,UAAUhpD,EAAE29Q,UAAU9oQ,EAAE02H,OAAO3qI,EAAE2N,KAAKvO,EAAEW,MAAM,GAAG,aAAaC,EAAEoqB,MAAM,UAAUpqB,EAAEoqB,KAAKpqB,EAAEowT,SAASn8S,EAAE02H,OAAO3qI,EAAE2N,KAAK3N,EAAED,QAAQpC,EAAE,aAAaqC,EAAEoqB,KAAK+K,EAAEn1B,EAAED,OAAOC,EAAED,MAAMkU,EAAE02H,OAAO3qI,EAAE2N,KAAKhQ,GAAG,EAAE,EAK7G,IAL+GF,EAAEi3B,EAAEla,WAAYmwH,OAAO,SAAS32H,EAAEC,EAAEjU,GAAGsb,EAAE/M,UAAU,GAAG6L,KAAK3a,EAAEyO,KAAKgnB,EAAElhB,EAAEC,EAAEjU,GAAG,EAAEvC,EAAEozC,OAAO,SAAS78B,GAAGsH,EAAE/M,UACxf,GAAG,IAAI0F,EAAE,GAAGD,EAAE2G,OAAO3G,GAAGnW,EAAEuc,KAAK3a,EAAE,SAASO,GAAGA,EAAE,KAAKgU,GAAGC,EAAE/F,KAAKlO,EAAE,GAAGoa,KAAK3a,EAAEwU,CAAC,EAAExW,EAAE6hE,QAAQ,SAASrrD,IAAI,IAAIjU,EAAErC,EAAEyc,KAAK,OAAOgb,EAAEnhB,EAAE,SAAS7U,GAAiB,GAAd,GAAGA,EAAE3B,IAAIuC,EAAE,GAAM,GAAGZ,EAAE3B,EAAE,OAAOuC,EAAErC,EAAE8B,EAAE+O,OAAOpP,EAAEk0B,EAAEl0B,EAAEzB,EAAE8B,EAAEO,KAAKZ,EAAE3B,EAAE,EAAE2B,OAAE,GAAQA,EAAEY,IAAIZ,EAAE3B,EAAE,CAAC,EAAE,EAAEA,EAAE2O,QAAQ,SAAS6H,EAAEjU,GAAGsb,EAAE/M,UAAU,GAAG,IAAI,IAAI5Q,EAAE4e,EAAEnC,MAAMhb,EAAEzB,EAAEuE,QAAQ9C,EAAEwc,KAAKxc,EAAEzB,EAAEuE,OAAO,CAAC,IAAI4Z,EAAES,EAAEnd,EAAEW,OAAOX,EAAE0c,EAAE5Z,OAAOnC,MAAM+b,EAAEA,EAAE5Z,OAAOnC,MAAMkU,EAAEwG,KAAKza,EAAE8b,EAAE1c,EAAEgb,KAAK,CAAC,EAAE3c,EAAEwQ,IAAI,SAASgG,GAAGqH,EAAE/M,UAAU,GAAG,IAAIvO,EAAEoa,KAAK3a,EAAEwU,EAAE0G,OAAO1G,GAAG,IAAI,IAAItW,EAAE,EAAEA,EAAEqC,EAAEwO,OAAO7Q,IAAI,GAAGqC,EAAErC,GAAG,KAAKsW,EAAE,OAAOjU,EAAErC,GAAG,GAClf,OAAO,IAAI,EAAEF,EAAE2lG,OAAO,SAASnvF,GAAGqH,EAAE/M,UAAU,GAAG,IAAIvO,EAAE,GAA6D,OAA1DiU,EAAE0G,OAAO1G,GAAGpW,EAAEuc,KAAK3a,EAAE,SAAS9B,GAAGA,EAAE,KAAKsW,GAAGjU,EAAEkO,KAAKvQ,EAAE,GAAG,GAAUqC,CAAC,EAAEvC,EAAEsQ,IAAI,SAASkG,GAAGqH,EAAE/M,UAAU,GAAG0F,EAAE0G,OAAO1G,GAAG,IAAI,IAAIjU,EAAE,EAAEA,EAAEoa,KAAK3a,EAAE+O,OAAOxO,IAAI,GAAGoa,KAAK3a,EAAEO,GAAG,KAAKiU,EAAE,OAAM,EAAG,OAAM,CAAE,EAAExW,EAAEgH,KAAK,SAASzE,IAAI,IAAWZ,EAAE0c,EAAEC,EAAXpe,EAAEyc,KAAe,OAAOgb,EAAEp1B,EAAE,SAASgb,GAA+B,GAA5B,GAAGA,EAAEvd,IAAI2B,EAAEmd,EAAE5e,GAAGme,EAAE1c,EAAE8C,QAAW,GAAG8Y,EAAEvd,EAAG,OAAGqe,EAAEF,UAAMZ,EAAEvd,EAAE,IAASse,EAAED,EAAE/b,MAAqCuzB,EAAEtY,EAA/BuB,EAAER,GAAO7Z,OAAOnC,QAAoB+b,EAAE1c,EAAE8C,OAAO8Y,EAAEvd,EAAE,CAAC,EAAE,EAAEA,EAAE0Q,IAAI,SAASnO,EAAErC,EAAEyB,GAAGkc,EAAE/M,UAAU,GAAGvO,EAAE2a,OAAO3a,GAAG,IAAI8b,EAAE,GAAGC,EAAEmZ,EAAEl1B,EACnfrC,EAAEyB,GAAGysB,GAAE,EAAGhuB,EAAEuc,KAAK3a,EAAE,SAAS8a,GAAGA,EAAE,KAAKva,EAAE6rB,IAAIA,GAAG/P,EAAE5N,KAAK6N,IAAID,EAAE5N,KAAKqM,EAAE,GAAGsR,GAAG/P,EAAE5N,KAAK6N,GAAG3B,KAAK3a,EAAEqc,CAAC,EAAEre,EAAEulC,OAAO,SAASrlC,IAAI,IAAWme,EAAEC,EAAE8P,EAAEtR,EAAbnb,EAAEgb,KAAe,OAAOgb,EAAEz3B,EAAE,SAASgD,GAA+B,GAA5B,GAAGA,EAAElD,IAAIqe,EAAES,EAAEnd,GAAG2c,EAAED,EAAE5Z,QAAW,GAAGvB,EAAElD,EAAG,OAAGse,EAAEH,UAAMjb,EAAElD,EAAE,IAASouB,EAAE9P,EAAEhc,OAAMwa,EAAEgC,EAAEsP,IAAK3pB,OAA+BoxB,EAAE3yB,EAAxB4Z,EAAErY,OAAOnC,QAAoBgc,EAAED,EAAE5Z,OAAOvB,EAAElD,EAAE,CAAC,EAAE,EAAEi3B,EAAEla,UAAU+opB,UAAU,WAAW,IAAI,IAAI5lqB,EAAE,IAAIq3B,EAAE51B,EAAEmd,EAAEnC,MAAM0B,EAAE1c,EAAE8C,QAAQ4Z,EAAEF,KAAKE,EAAE1c,EAAE8C,OAAO,CAAC,IAAI6Z,EAAEQ,EAAET,EAAE/b,OAAO+b,EAAEC,EAAE7Z,OAAOnC,MAAMgc,EAAEA,EAAE7Z,OAAOnC,MAAMpC,EAAEgtI,OAAO7uH,EAAEC,EAAE,CAAC,OAAOpe,CAAC,EAAE+2B,EAAEla,UAAUgppB,MAAM,WAAW,IAAI7lqB,EAAE,yBACnfiC,KAAKm+F,SAAS3+F,EAAE,GAAG0c,EAAE,KAAKne,EAAE,6CAA+S,OAAlQyc,KAAKhO,QAAQ,SAAS2P,EAAE8P,GAAG,MAAM,iBAAiB9P,EAAE3c,EAAE8O,KAAK4N,EAAE++M,EAAO1lM,EAAEtJ,IAAK,YAAYsJ,EAAEpZ,GAAG,QAAS3c,EAAE8O,KAAK4N,EAAE++M,EAAO1lM,EAAEtJ,IAAK,gBAAgBgvM,EAAO9+M,EAAEpO,MAAM,uBAAuBoO,EAAEqO,MAAM,4BAA4B,WAAYrO,EAAE,OAAO,GAAG3c,EAAE8O,KAAK,KAAKvQ,EAAE,MAAa,IAAI6lG,KAAKpkG,EAAE,CAACgrB,KAAK,iCAAiCzsB,GAAG,EAAE+2B,EAAEla,UAAU5b,OAAO0d,UAAU,WAAW,OAAOlC,KAAKklD,SAAS,EAAE5qC,EAAEla,UAAUpZ,SAAS,WAAW,MAAM,mBAAmB,EACjgBwzB,IAAIA,EAAEyX,UAAUzX,EAAEyX,QAAQzX,EAAEygd,iBAAiBzgd,EAAE8wf,oBAAoB9wf,EAAE+wf,mBAAmB/wf,EAAE6uoB,kBAAkB7uoB,EAAE6wf,uBAAuB,SAAS9nhB,GAA6D,IAAI,IAAIyB,GAAlEzB,GAAGyc,KAAKvX,UAAUuX,KAAK/Y,eAAeq4Q,iBAAiB/7Q,IAAe6Q,OAAO,KAAKpP,GAAGzB,EAAEyvB,KAAKhuB,KAAKgb,OAAO,OAAO,EAAEhb,CAAC,GAAGu1B,IAAID,EAAEla,UAAUma,GAAG,YAAeI,EAAE,CAAC,IAAIN,EAAEQ,EAAEovQ,eAAe7pR,UAAU6qR,iBAAiBpwQ,EAAEovQ,eAAe7pR,UAAU6qR,iBAAiB,SAAS1nS,EAAEyB,GAAGq1B,EAAEha,KAAKL,KAAKzc,EAAEyB,GAAG,iBAAiBzB,EAAE6E,gBAAgB4X,KAAK+Y,GAAE,EAAG,EAAE8B,EAAEovQ,eAAe7pR,UAAUmyN,KAClf,SAAShvO,GAAGA,aAAa+2B,GAAG/2B,EAAEA,EAAE6lqB,QAAQpppB,KAAK+Y,GAAG/Y,KAAKirR,iBAAiB,eAAe1nS,EAAEysB,MAAM2K,EAAEta,KAAKL,KAAKzc,IAAIo3B,EAAEta,KAAKL,KAAKzc,EAAE,CAAC,CAACm3B,IAAIG,EAAEirE,MAAM,SAASviG,EAAEyB,GAA2D,OAAxDA,GAAGA,EAAE0I,MAAM1I,EAAE0I,gBAAgB4sB,IAAIt1B,EAAE0I,KAAK1I,EAAE0I,KAAK07pB,SAAgB1uoB,EAAEra,KAAKL,KAAKzc,EAAEyB,EAAE,GAAGy1B,IAAII,EAAEvsB,UAAU46pB,WAAW,SAAS3lqB,EAAEyB,GAAqC,OAAlCA,aAAas1B,IAAIt1B,EAAEA,EAAEmkqB,aAAoB1uoB,EAAEpa,KAAKL,KAAKzc,EAAEyB,EAAE,GAAG61B,EAAE+nmB,SAAStomB,CAAC,CAAG,CAnB5V,E,gDCAD,SAAe,E,SAAA,GAAmB,e,yBCQ1B,SAAWz5B,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEP+lqB,EAAa,SAAUhmpB,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,CAClB,EACAimpB,EAAU,CACN7jqB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJE,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRojqB,EAAY,SAAUrjkB,GAClB,OAAO,SAAUzgD,EAAQw+E,EAAe39H,EAAQ49H,GAC5C,IAAIhgH,EAAImlpB,EAAW5jnB,GACfxwB,EAAMq0oB,EAAQpjkB,GAAGmjkB,EAAW5jnB,IAIhC,OAHU,IAANvhC,IACA+Q,EAAMA,EAAIgvG,EAAgB,EAAI,IAE3BhvG,EAAI1uB,QAAQ,MAAOk/C,EAC9B,CACJ,EACAhiD,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGJ,EAAOG,aAAa,QAAS,CACpCC,OAAQA,EACRE,YAAaF,EACbG,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,cAAe,MACfC,KAAM,SAAUC,GACZ,MAAO,MAAQA,CACnB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,IAEA,GAEf,EACAG,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG8jqB,EAAU,KACb7jqB,GAAI6jqB,EAAU,KACd5jqB,EAAG4jqB,EAAU,KACb3jqB,GAAI2jqB,EAAU,KACd1jqB,EAAG0jqB,EAAU,KACbzjqB,GAAIyjqB,EAAU,KACdxjqB,EAAGwjqB,EAAU,KACbvjqB,GAAIujqB,EAAU,KACdtjqB,EAAGsjqB,EAAU,KACbrjqB,GAAIqjqB,EAAU,KACdpjqB,EAAGojqB,EAAU,KACbnjqB,GAAImjqB,EAAU,MAElBljqB,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAE,WAAY,SAAUH,GAClB,OAAOA,EACFC,QAAQ,MAAO,SAAUC,GACtB,OAAOlD,EAAUkD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA/KyCC,CAAQ,EAAQ,O,qCCJ1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACIyvZ,EAAmB,EAAQ,OAC3B7wa,EAAK,EAAQ,OAAyB0V,EAAI1V,EAAGm+U,WAAYC,EAAgBp+U,EAAGo+U,cAa5EuD,EAAuC,SAAUnhV,GAYjD,SAASmhV,EAAsB9uB,EAAW/pT,EAAOk1U,EAAW5xV,GACxD,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMsM,EAAM/Y,KAAM8iU,EAAU//I,IAAK1mL,IAAYoQ,KAiDrE,OAhDAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3BolpB,sBAAuB,CACnB3jqB,MAAO,WAEH,IADA,IAAI0O,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,OAAOuJ,EAAM2G,KAAK/J,MAAMoD,EAAOgwU,EAAc,CAAC7/U,GAAQA,EAAKD,OAAS,UAAY,mBAAoBsrG,EAAOrrG,IAC/G,GAEJk1pB,kBAAmB,CACf5jqB,MAAO,WAAc,OAAOue,EAAM2G,KAAK3G,EAAMslpB,eACvC,eACA,gBAAkB,GAE5BpsJ,WAAY,CACRz3gB,MAAO0wU,GAEXozV,WAAY,CACR9jqB,MAAO67V,GAEXgoU,eAAgB,CACZ99nB,YAAY,EACZ73B,IAAK,WACD,MAA2B,SAApBmM,KAAKsM,MAAMQ,MAAyB9M,KAAKsM,MAAMkpH,SAC1D,GAEJ1oH,KAAM,CACF4e,YAAY,EACZ/lC,MAAO2mB,EAAMQ,MAEjBwnF,SAAU,CACN5oE,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU79G,eACrB,GAEJlsM,MAAO,CACHof,YAAY,EACZ/lC,MAAO2mB,KAGf,CAAC,WAAY,WAAWta,QAAQ,SAAUuB,GACtC,OAAO+Y,EAAMq+F,GAAGp3G,EAAM2Q,EAAMqlpB,kBAChC,GACA,CAAC,UAAW,mBAAmBv3pB,QAAQ,SAAUuB,GAC7C,OAAO8iU,EAAU1rN,GAAGp3G,EAAM2Q,EAAMolpB,sBACpC,GACOplpB,CACX,CAmCA,OAjGAnE,EAAUolV,EAAuBnhV,GA+DjCmhV,EAAsB/kV,UAAUpZ,SAAW,WACvC,MAAO,2BAA6BgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GAClF,EAOAwtN,EAAsB/kV,UAAUmyT,YAAc,SAAUj+N,GACpD,IAAI45e,EAAiBpklB,OAAO8+B,OAAOg5T,GACnC,IAAKssP,EAAev4iB,SAAS2+D,GACzB,MAAMp7E,EAAEi1jB,cAAc,WAAYD,GAGtC,OADAlukB,KAAKo9f,WAAW7qM,YAAYj+N,GACrBt0F,IACX,EAOAmlV,EAAsB/kV,UAAUohV,UAAY,WACxC,IAAIt9U,EAAQlE,KAQZ,MAPA,CAAC,WAAY,WAAWhO,QAAQ,SAAUuB,GACtC,OAAO2Q,EAAMoI,MAAMs4C,eAAerxD,EAAM2Q,EAAMqlpB,kBAClD,GACA,CAAC,UAAW,mBAAmBv3pB,QAAQ,SAAUuB,GAC7C,OAAO2Q,EAAMk5f,WAAWx4c,eAAerxD,EAAM2Q,EAAMolpB,sBACvD,GACAtppB,KAAKyppB,WAAWzppB,MACTA,IACX,EACOmlV,CACX,CAnG0C,CAmGxCkvF,GAYF3yV,EAAOj9F,QAAU0gW,C,kBCnKjB,IAAI4hL,EAAY,EAAQ,OACpBpnT,EAAe,EAAQ,OACvB+pc,EAAW,EAAQ,OACnB35oB,EAAU,EAAQ,OAClBsrX,EAAiB,EAAQ,OA8C7B35S,EAAOj9F,QARP,SAAcw4N,EAAYjpG,EAAWuvG,GACnC,IAAI7uH,EAAO3kF,EAAQktM,GAAc8pT,EAAY2iJ,EAI7C,OAHInmc,GAAS83K,EAAep+K,EAAYjpG,EAAWuvG,KACjDvvG,OAAYl9G,GAEP49F,EAAKuoH,EAAY0C,EAAa3rG,EAAW,GAClD,C,+BC/CA,IAAItqB,EAAI,EAAQ,OACZigkB,EAAQ,cAKZjgkB,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMwwR,CAAuB,SAAW,CAC3ErzX,KAAM,WACJ,OAAO2rpB,EAAM3ppB,KACf,G,+BCTM,EAAQ,MAKhB0pF,CAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,GAAQ,CACnCqiO,OALW,EAAQ,Q,+BCDrB,IAAIznI,EAAS,EAAQ,OACjBkmI,EAAa,EAAQ,OACrB3yI,EAAW,EAAQ,OACnB9M,EAAY,EAAQ,OACpBqjjB,EAA2B,EAAQ,OAEnCljjB,EAAWH,EAAU,YACrBqsJ,EAAU9oQ,OACV+/pB,EAAkBj3Z,EAAQxyP,UAK9BshF,EAAOj9F,QAAUmlqB,EAA2Bh3Z,EAAQn9N,eAAiB,SAAU3a,GAC7E,IAAIwwB,EAAS+nE,EAASv4F,GACtB,GAAIglG,EAAOx0E,EAAQo7D,GAAW,OAAOp7D,EAAOo7D,GAC5C,IAAIjmG,EAAc6qC,EAAO7qC,YACzB,OAAIulP,EAAWvlP,IAAgB6qC,aAAkB7qC,EACxCA,EAAYL,UACZkrC,aAAkBsnN,EAAUi3Z,EAAkB,IACzD,C,+BCpBA,IAAIrmpB,EAAK,EAAQ,OAAqB6B,EAAoB7B,EAAG6B,kBAAmBC,EAAsB9B,EAAG8B,oBAQzG,SAASwkpB,EAAiBh9oB,EAAMld,GAC5BA,EAAU9F,OAAOC,OAAO,CACpByqb,WAAYlva,EACZmiV,SAAUpiV,GACXzV,GACH,IAAIm6pB,EAAgB,CAAC,EACrBA,EAAcv1O,WAAa5kb,EAAQ4kb,WACnCu1O,EAActiU,SAAW73V,EAAQ63V,gBAC1B73V,EAAQ4kb,kBACR5kb,EAAQ63V,SACf,IAAIuiU,EAAoBp6pB,EAAQo6pB,kBAGhC,cAFOp6pB,EAAQo6pB,kBACfD,EAAcj9oB,KAAQhjB,OAAOO,KAAKuF,GAASwE,OAAS,IAAIxE,EACjDo6pB,EAAkBD,GAAelzpB,KAAK,SAAUkU,GAAe,OAAOA,EAAY,EAAI,EACjG,CAwHA22E,EAAOj9F,QAAU,CACbq2N,MAzFJ,SAA+BlrN,GAC3B,OAAOk6pB,EAAiB,QAASl6pB,EACrC,EAwFImrN,MA1DJ,SAA+BnrN,GAC3B,OAAOk6pB,EAAiB,QAASl6pB,EACrC,E,kBCzFA,IAAIq6pB,EAAmB,EAAQ,OAC3Bvha,EAAc,EAAQ,OACtBwha,EAAkB,EAAQ,OAC1Bvha,EAAY,EAAQ,OACpBO,EAAkB,EAAQ,OAC1BpsC,EAAc,EAAQ,OACtB/sM,EAAU,EAAQ,OAClB4xG,EAAoB,EAAQ,OAC5BmV,EAAW,EAAQ,MACnBjkH,EAAa,EAAQ,MACrB5C,EAAW,EAAQ,OACnBy6M,EAAgB,EAAQ,OACxB8qa,EAAe,EAAQ,OACvB20B,EAAU,EAAQ,OAClB/yG,EAAgB,EAAQ,OA+E5B11d,EAAOj9F,QA9DP,SAAuB6mD,EAAQ/5B,EAAQ/mB,EAAK2uO,EAAUixb,EAAWhxb,EAAY7yL,GAC3E,IAAIiiT,EAAW2hU,EAAQ7+mB,EAAQ9gD,GAC3Bm9pB,EAAWwC,EAAQ54oB,EAAQ/mB,GAC3Bo8C,EAAUL,EAAM1yC,IAAI8zpB,GAExB,GAAI/gnB,EACFqjnB,EAAiB3+mB,EAAQ9gD,EAAKo8C,OADhC,CAIA,IAAI6nF,EAAW2qG,EACXA,EAAWovH,EAAUm/T,EAAWn9pB,EAAM,GAAK8gD,EAAQ/5B,EAAQg1B,QAC3DzvC,EAEAuzpB,OAAwBvzpB,IAAb23H,EAEf,GAAI47hB,EAAU,CACZ,IAAIxga,EAAQ95O,EAAQ43oB,GAChB2C,GAAUzga,GAAS/yH,EAAS6whB,GAC5B4C,GAAW1ga,IAAUyga,GAAU90B,EAAamyB,GAEhDl5hB,EAAWk5hB,EACP99Z,GAASyga,GAAUC,EACjBx6oB,EAAQy4U,GACV/5N,EAAW+5N,EAEJ7mO,EAAkB6mO,GACzB/5N,EAAWk6H,EAAU6/F,GAEd8hU,GACPD,GAAW,EACX57hB,EAAWi6H,EAAYi/Z,GAAU,IAE1B4C,GACPF,GAAW,EACX57hB,EAAWy7hB,EAAgBvC,GAAU,IAGrCl5hB,EAAW,GAGNi8F,EAAci9b,IAAa7qc,EAAY6qc,IAC9Cl5hB,EAAW+5N,EACP1rI,EAAY0rI,GACd/5N,EAAW2ob,EAAc5uN,GAEjBv4U,EAASu4U,KAAa31U,EAAW21U,KACzC/5N,EAAWy6H,EAAgBy+Z,KAI7B0C,GAAW,CAEf,CACIA,IAEF9jnB,EAAMxyC,IAAI4zpB,EAAUl5hB,GACpB27hB,EAAU37hB,EAAUk5hB,EAAUxub,EAAUC,EAAY7yL,GACpDA,EAAc,OAAEohnB,IAElBsC,EAAiB3+mB,EAAQ9gD,EAAKikI,EAnD9B,CAoDF,C,+BC1FA3kI,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIg8G,EAAW,EAAQ,OACnBC,EAAe,EAAQ,OAyBvBqte,EAA2B,WAM3B,SAASA,EAAUlqd,GAEf/kH,KAAKwxF,QAAU,KAEfxxF,KAAKm1N,SAAU,EACfxzH,EAASqB,OAAOhjG,KAAM+kH,EAC1B,CAsCA,OAnCAkqd,EAAU7ukB,UAAU6kH,GAAK,SAAUt9F,EAAKn9B,GAAO,OAAO,CAAM,EAE5DyklB,EAAU7ukB,UAAU2oF,OAAS,SAAUphE,EAAKn9B,GAAO,OAAOm9B,CAAK,EAE/DsnjB,EAAU7ukB,UAAUs1I,OAAS,SAAU/tH,EAAKn9B,GAAO,OAAOm9B,CAAK,EAE/DsnjB,EAAU7ukB,UAAU2nN,OAAS,SAAUnuN,EAAGC,GAAK,OAAOD,GAAKC,CAAG,EAC9Do1kB,EAAU7ukB,UAAUoqpB,YAAc,WAC9B,IAAIjilB,EAAMvoE,KAAKwxF,QAAQxqG,WACvB,OAAOuhF,EAAI4pC,OAAO,EAAG5pC,EAAIn0E,OAAS,EACtC,EACA66kB,EAAU7ukB,UAAUpZ,SAAW,WAC3B,MAAO,cAAgBgZ,KAAKzM,KAAO,GACvC,EAEA07kB,EAAU7ukB,UAAUyzQ,WAAa,SAAUlsP,GACvC,OAAO3nB,KAAKilH,GAAGt9F,GAAOA,EAAM3nB,KAAK01I,OAAO/tH,EAC5C,EAWAsnjB,EAAU7ukB,UAAUqqpB,SAAW,SAAUtgoB,EAAMwhlB,GAC3C,IAAKxhlB,EACD,OAAOnqB,KACX,GAAa,SAATmqB,IAAoBwhlB,EACpB,MAAM,IAAIpkmB,MAAM,kDACpB,OAAO,IAAImjpB,EAAU1qpB,KAAMmqB,EAC/B,EACO8kjB,CACX,CAnD8B,GAyD9B,SAASy7E,EAAU16oB,EAAMma,GACrB,IAAIjmB,EAAQlE,KAEZ,SAAS2qpB,EAAUhjoB,GACf,OAAOi6E,EAAa7xF,QAAQ4X,GAAOA,EAAOi6E,EAAawB,UAAUz7E,GAAO,CAACA,GAAO,EACpF,CAUA,SAASijoB,EAAa17oB,EAAU27oB,GAC5B,OAAO,SAAqBljoB,GACxB,GAAIi6E,EAAa7xF,QAAQ4X,IAAuB,IAAfA,EAAIvzB,OACjC,OAAOuzB,EACX,IAAIiP,EAAM+znB,EAAUhjoB,GAChBx0B,EAASwuG,EAAS5uG,IAAI6jC,EAAK1nB,GAC/B,OAA0B,IAAlB27oB,EAA0F,IAAhElpjB,EAAS1wG,OAAOkC,EAAQ,SAAU5M,GAAK,OAAQA,CAAG,GAAG6N,OAd/F,SAAqBuzB,GACjB,OAAQA,EAAIvzB,QACR,KAAK,EAAG,OACR,KAAK,EAAG,MAAgB,SAAT+1B,EAAkBxC,EAAI,GAAKA,EAC1C,QAAS,OAAOA,EAExB,CAQ8GmjoB,CAAY33pB,EACtH,CACJ,CAEA,SAAS43pB,EAAmB77oB,GACxB,OAAO,SAAqBo3U,EAAMC,GAC9B,IAAIp8V,EAAOwgqB,EAAUrkU,GAAOr8V,EAAQ0gqB,EAAUpkU,GAC9C,GAAIp8V,EAAKiK,SAAWnK,EAAMmK,OACtB,OAAO,EACX,IAAK,IAAI/O,EAAI,EAAGA,EAAI8E,EAAKiK,OAAQ/O,IAC7B,IAAK6pB,EAAS/kB,EAAK9E,GAAI4E,EAAM5E,IACzB,OAAO,EAEf,OAAO,CACX,CACJ,CACA,CAAC,SAAU,SAAU,SAAU,cAAc2M,QAAQ,SAAUuB,GAC3D,IAAIy3pB,EAAch7oB,EAAKzc,GAAMmoD,KAAK1rC,GAC9Bi7oB,EAAqB,WAAT13pB,EAAoBw3pB,EAAqBH,EACzD1mpB,EAAM3Q,GAAQ03pB,EAAUD,EAC5B,GACArpjB,EAASqB,OAAOhjG,KAAM,CAClB62G,QAAS7mG,EAAK6mG,QACdtjH,KAAMyc,EAAKzc,KACXi+F,QAASxhF,EAAKwhF,QACd2jI,QAASnlN,EAAKmlN,QACdlwG,GAAI2liB,EAAa56oB,EAAKi1G,GAAGvpE,KAAK1rC,IAAO,GACrCk7oB,WAAY/goB,GAEpB,CAvDA1lC,EAAQwqlB,UAAYA,C,+BCpFpB,IAAIzrkB,EAAK,EAAQ,OAAmBksN,EAAelsN,EAAGksN,aAAcy7b,EAAoB3npB,EAAGmwX,QACvF9hK,EAAe,qBACfluN,EAAK,EAAQ,OAAuBynpB,EAAYznpB,EAAGynpB,UAAWC,EAAW1npB,EAAG0npB,SAAUC,EAAoB3npB,EAAG2npB,kBAAmBC,EAAyB5npB,EAAG4npB,uBAAwBC,EAAsB7npB,EAAG6npB,oBAC7MC,EAAkC,CAClC,QACA,MACA,OACA,WACA,kBAEAC,EAA6B,CAC7B,SACA,WAEAC,EAAyB,CACzB,SACA,UAGAC,EAAyC,GAwB7ClqkB,EAAOj9F,QAnBP,WACI,IAAI29Z,EAAU1yL,IAGd,IAAK0yL,EACD,OAAO,EAEX,IAAIypQ,EAAkBN,EAAuBnpQ,GACzC0pQ,EAAeN,EAAoBppQ,GACnC2pQ,EAA0BX,IAC1BM,EAA6BC,EACjC,QAASvpQ,GACF+oQ,KACmB,YAAnBt5b,OACEg6b,GAAmBJ,EAAgC91nB,SAASk2nB,MAC7DP,EAAkBlpQ,MACjB0pQ,GAAgBF,EAAuCj2nB,SAASm2nB,OAChET,KAAcU,EAAwBp2nB,SAASysX,GAC5D,C,yBClCQ,SAAWvha,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,qCCL1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEJ1W,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQunqB,gCAA6B,EACrC,IAAIC,EAAwB,EAAQ,OAChCC,EAAU,EAAQ,OAsDlBF,EAA4C,SAAUhopB,GAOtD,SAASgopB,EAA2Bp8pB,GAChC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMpQ,IAAYoQ,KAK1C,OAHAkE,EAAMixY,MAAQ,6BACdjxY,EAAMi8O,gBAAkBvwP,EAAQuwP,gBAChCj8O,EAAMiopB,QAAUv8pB,EAAQu8pB,QACjBjopB,CACX,CAmGA,OAhHAnE,EAAUispB,EAA4BhopB,GActCla,OAAOwY,eAAe0ppB,EAA2B5rpB,UAAW,kBAAmB,CAI3EvM,IAAK,WACD,OAAOmM,KAAKospB,gBAChB,EAOAr4pB,IAAK,SAAU6rY,GACX,IAAIp8X,EACJ,IAAKo8X,IAAUA,EAAMv9V,WAAau9V,EAAMz9I,cACpC,MAAM,IAAI56O,MAAM,mGAEpBvH,KAAKospB,iBAAmBxsR,EAEQ,QAA/Bp8X,EAAKxD,KAAKqspB,uBAAoC,IAAP7opB,GAAyBA,EAAGigP,UACpEzjP,KAAKqspB,gBAAkB,IAC3B,EACA3goB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAe0ppB,EAA2B5rpB,UAAW,UAAW,CAInEvM,IAAK,WACD,OAAOmM,KAAKsspB,QAChB,EAIAv4pB,IAAK,SAAUo4pB,GACMriqB,OAAOO,KAAK6hqB,EAAQK,UACrB52nB,SAASw2nB,KACrBv5nB,QAAQ/lB,KAAK,mCAAmC7e,OAAOk+pB,EAAQK,SAASC,KAAM,kBAC9EL,EAAUD,EAAQK,SAASC,MAE/BxspB,KAAKsspB,SAAWH,CACpB,EACAzgoB,YAAY,EACZuL,cAAc,IAElB+0nB,EAA2B5rpB,UAAUqspB,uBAAyB,WAC1D,OAAOP,EAAQQ,mBAAmB7za,KACtC,EACAmza,EAA2B5rpB,UAAUuspB,eAAiB,WAClD,GAAK3spB,KAAK4spB,gBAAmB5spB,KAAK6spB,cAAlC,CAGA,IAAIn3a,EAAM11O,KAAKospB,iBACXU,EAAap3a,EAAIwM,aACjB6qa,EAAcr3a,EAAIyM,cAClB6qa,EAAchtpB,KAAK6spB,cAAcnmqB,MACjCumqB,EAAejtpB,KAAK6spB,cAAcjmqB,OAClCkjC,EAAM9pB,KAAK4spB,eACf,GAAI5spB,KAAKsspB,WAAaJ,EAAQK,SAASC,KACnC1ioB,EAAIoE,UAAUwnN,EAAK,EAAG,EAAGo3a,EAAYC,EAAa,EAAG,EAAGC,EAAaC,QAEpE,GAAIjtpB,KAAKsspB,WAAaJ,EAAQK,SAASW,KACxCpjoB,EAAIoE,UAAUwnN,EAAK,EAAG,EAAGo3a,EAAYC,QAEpC,GAAI/spB,KAAKsspB,WAAaJ,EAAQK,SAASY,QAAS,CACjD,IAAI3ppB,EAAKxD,KAAKotpB,gBAAgBN,EAAYC,EAAaC,EAAaC,EAAcf,EAAQK,SAASY,SAAU5mqB,EAAIid,EAAGjd,EAAG5C,EAAI6f,EAAG7f,EAAGi2B,EAAIpW,EAAGoW,EAAGv2B,EAAImgB,EAAGngB,EAClJymC,EAAIoE,UAAUwnN,EAAK,EAAG,EAAGo3a,EAAYC,EAAaxmqB,EAAG5C,EAAGi2B,EAAGv2B,EAC/D,MACK,GAAI2c,KAAKsspB,WAAaJ,EAAQK,SAASc,MAAO,CAC/C,IAAI1ppB,EAAK3D,KAAKotpB,gBAAgBN,EAAYC,EAAaC,EAAaC,EAAcf,EAAQK,SAASc,OAAQ9mqB,EAAIod,EAAGpd,EAAG5C,EAAIggB,EAAGhgB,EAAGi2B,EAAIjW,EAAGiW,EAAGv2B,EAAIsgB,EAAGtgB,EAChJymC,EAAIoE,UAAUwnN,EAAK,EAAG,EAAGo3a,EAAYC,EAAaxmqB,EAAG5C,EAAGi2B,EAAGv2B,EAC/D,CApBA,CAqBJ,EACA2oqB,EAA2B5rpB,UAAUgtpB,gBAAkB,SAAUE,EAAcj3H,EAAek3H,EAAeC,EAAgBx9oB,GAEzH,IAAI+yB,EAASwqnB,EAAgBD,EACzBG,EAAkBF,EAClBG,EAAmB3qnB,EAASszf,EAYhC,OATKrmhB,IAASk8oB,EAAQK,SAASY,SAAWO,EAAmBF,GACrDx9oB,IAASk8oB,EAAQK,SAASc,OAASG,EAAiBE,KAExDD,GADA1qnB,EAASyqnB,EAAiBE,EAE1BA,EAAmBF,GAKhB,CACHjnqB,GAHKgnqB,EAAgBE,GAAmB,EAIxC9pqB,GAHK6pqB,EAAiBE,GAAoB,EAI1C9zoB,EAAG6zoB,EACHpqqB,EAAGqqqB,EAEX,EACO1B,CACX,CAlH+C,CAkH7CC,EAAsB0B,qBACxBlpqB,EAAQunqB,2BAA6BA,C,oHCpLjC/vP,EAAyB,aAAiB,SAAU7wa,EAAMynH,GAC5D,IAAIC,EAAW1nH,EAAK0nH,SAChBqhN,EAAQ/oU,EAAK+oU,MACb1qF,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzC3/H,EAAY1+G,EAAK0+G,UACjB13E,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,QAAS,KAAM,cAExE8pC,GAAS,QAAmB49E,EAAU,aACtCl3E,EAA0B,iBAAVu4R,EAAqB,IAAMA,EAAQ,SACvD,OAAoB,gBAAoBxqF,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAWqqN,EAAQ,GAAKj/R,EAAS0G,EAAS1G,KAEpE,GACA+mY,EAAU5zO,YAAc,YACxB4zO,EAAU5iN,aApBS,CACjB86G,OAAO,GAoBT,S,+BC1Be,SAASl7M,EAAkBriF,EAAKnnC,IAClC,MAAPA,GAAeA,EAAMmnC,EAAIxiC,UAAQ3E,EAAMmnC,EAAIxiC,QAC/C,IAAK,IAAI/O,EAAI,EAAGu0H,EAAO,IAAItlH,MAAM7E,GAAMpK,EAAIoK,EAAKpK,IAAKu0H,EAAKv0H,GAAKuxC,EAAIvxC,GACnE,OAAOu0H,CACT,C,kCCJA,IAAI3vG,EAAQ,EAAQ,OAChBw+U,EAAQ,EAAQ,OAChB34T,EAAO,EAAQ,OACfklE,EAAQ,EAAQ,OAChB44jB,EAAS,EAAQ,OAErB,SAASC,EAAoB5qnB,GAC3B,MAAO,eAAiB/gD,KAAK+gD,EAC/B,CAEAx+C,EAAQqpqB,QAAU,SAASvnqB,EAAGsa,GAG5B,OAFAta,EAAIyuG,EAAMK,YAAY9uG,GACtBsa,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWzvG,EAAGsa,GACfoJ,EAAMtkB,MAGRioqB,EAAOz3U,QAAQ5vV,EAAGsa,EAC3B,EAEApc,EAAQspqB,QAAU,SAASxnqB,EAAGsa,GAG5B,OAFAta,EAAIyuG,EAAMK,YAAY9uG,GACtBsa,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWzvG,EAAGsa,GACfoJ,EAAMtkB,MAGRioqB,EAAOl4U,QAAQnvV,EAAGsa,EAC3B,EAEApc,EAAQupqB,QAAU,SAASznqB,EAAGsa,GAG5B,OAFAta,EAAIyuG,EAAMK,YAAY9uG,GACtBsa,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWzvG,EAAGsa,GACfoJ,EAAMtkB,MAGRioqB,EAAOr3U,QAAQhwV,EAAGsa,EAC3B,EAEApc,EAAQwpqB,QAAU,SAAS1nqB,EAAGsa,GAG5B,OAFAta,EAAIyuG,EAAMK,YAAY9uG,GACtBsa,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWzvG,EAAGsa,GACfoJ,EAAMtkB,MAGRioqB,EAAO13U,QAAQ3vV,EAAGsa,EAC3B,EAEApc,EAAQypqB,QAAU,SAASjrnB,GAEzB,IAAK4qnB,EAAoB5qnB,GACvB,OAAOh5B,EAAMg0B,IAIf,IAAI9qC,EAASgzB,SAAS8c,EAAQ,GAG1BkrnB,EAAclrnB,EAAOj8C,WACzB,OAA2B,KAAvBmnqB,EAAY/5pB,QAAiD,MAAhC+5pB,EAAYhlkB,UAAU,EAAG,GACjDhjE,SAASgooB,EAAYhlkB,UAAU,GAAI,GAAK,IAExCh2F,CAEX,EAGA1O,EAAQ2pqB,QAAU,SAASnrnB,EAAQornB,GAEjC,IAAKR,EAAoB5qnB,GACvB,OAAOh5B,EAAMg0B,IAIf,IAAIkwnB,EAAclrnB,EAAOj8C,WACzB,GAA2B,KAAvBmnqB,EAAY/5pB,QAAiD,MAAhC+5pB,EAAYhlkB,UAAU,EAAG,GACxD,OAAQ,aAAgBhjE,SAASgooB,EAAYhlkB,UAAU,GAAI,IAAIniG,SAAS,IAI1E,IAAImM,EAASgzB,SAAS8c,EAAQ,GAAGj8C,SAAS,IAG1C,YAAe8P,IAAXu3pB,EACKl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQ6pqB,QAAU,SAASrrnB,EAAQornB,GAEjC,IAAKR,EAAoB5qnB,GACvB,OAAOh5B,EAAMg0B,IAIf,IAAIkwnB,EAAclrnB,EAAOj8C,WACzB,GAA2B,KAAvBmnqB,EAAY/5pB,QAAiD,MAAhC+5pB,EAAYhlkB,UAAU,EAAG,GACxD,OAAQ,WAAahjE,SAASgooB,EAAYhlkB,UAAU,GAAI,IAAIniG,SAAS,GAIvE,IAAImM,EAASgzB,SAAS8c,EAAQ,GAAGj8C,SAAS,GAG1C,YAAe8P,IAAXu3pB,EACKl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQ8pqB,OAAS,SAASC,EAASC,GAIjC,OAFAD,EAAUx5jB,EAAMK,YAAYm5jB,GAC5BC,EAAUz5jB,EAAMK,YAAYo5jB,GACxBz5jB,EAAMgB,WAAWw4jB,EAASC,GACrBxkpB,EAAMtkB,MAIX6oqB,EAAU,GAAKC,EAAU,GAKzBjpqB,KAAKQ,MAAMwoqB,KAAaA,GAAWhpqB,KAAKQ,MAAMyoqB,KAAaA,GAK3DD,EAAU,gBAAmBC,EAAU,eATlCxkpB,EAAMg0B,IAcRuwnB,EAAUC,CACnB,EAEAhqqB,EAAQiqqB,UAAY,SAASzrnB,EAAQiF,GAGnC,OAFAjF,EAAS+xD,EAAMK,YAAYpyD,GAC3BiF,EAAQ8sD,EAAMK,YAAYntD,GACtB8sD,EAAMgB,WAAW/yD,EAAQiF,GACpBj+B,EAAMtkB,MAIXs9C,EAAS,GAKTz9C,KAAKQ,MAAMi9C,KAAYA,GAKvBA,EAAS,gBAKTz9C,KAAKM,IAAIoiD,GAAS,GAdbj+B,EAAMg0B,IAmBPiK,GAAS,EAAKjF,GAAUiF,EAAQjF,IAAWiF,CACrD,EAEAzjD,EAAQkqqB,MAAQ,SAASH,EAASC,GAGhC,OAFAD,EAAUx5jB,EAAMK,YAAYm5jB,GAC5BC,EAAUz5jB,EAAMK,YAAYo5jB,GACxBz5jB,EAAMgB,WAAWw4jB,EAASC,GACrBxkpB,EAAMtkB,MAIX6oqB,EAAU,GAAKC,EAAU,GAKzBjpqB,KAAKQ,MAAMwoqB,KAAaA,GAAWhpqB,KAAKQ,MAAMyoqB,KAAaA,GAK3DD,EAAU,gBAAmBC,EAAU,eATlCxkpB,EAAMg0B,IAcRuwnB,EAAUC,CACnB,EAEAhqqB,EAAQmqqB,UAAY,SAAS3rnB,EAAQiF,GAGnC,OAFAjF,EAAS+xD,EAAMK,YAAYpyD,GAC3BiF,EAAQ8sD,EAAMK,YAAYntD,GACtB8sD,EAAMgB,WAAW/yD,EAAQiF,GACpBj+B,EAAMtkB,MAIXs9C,EAAS,GAKTz9C,KAAKQ,MAAMi9C,KAAYA,GAKvBA,EAAS,gBAKTz9C,KAAKM,IAAIoiD,GAAS,GAdbj+B,EAAMg0B,IAmBPiK,GAAS,EAAKjF,GAAUiF,EAAQjF,IAAWiF,CACrD,EAEAzjD,EAAQoqqB,OAAS,SAASL,EAASC,GAGjC,OAFAD,EAAUx5jB,EAAMK,YAAYm5jB,GAC5BC,EAAUz5jB,EAAMK,YAAYo5jB,GACxBz5jB,EAAMgB,WAAWw4jB,EAASC,GACrBxkpB,EAAMtkB,MAIX6oqB,EAAU,GAAKC,EAAU,GAKzBjpqB,KAAKQ,MAAMwoqB,KAAaA,GAAWhpqB,KAAKQ,MAAMyoqB,KAAaA,GAK3DD,EAAU,gBAAmBC,EAAU,eATlCxkpB,EAAMg0B,IAcRuwnB,EAAUC,CACnB,EAEAhqqB,EAAQqqqB,QAAU,SAASzoa,EAAM0oa,EAAWnznB,GAG1C,GAFAyqN,EAAOrxJ,EAAMK,YAAYgxJ,GACzB0oa,EAAY/5jB,EAAMK,YAAY05jB,GAC1B/5jB,EAAMgB,WAAWqwJ,EAAM0oa,GACzB,OAAO1oa,EAOT,GAAe,OAHfzqN,OAAqB9kC,IAAX8kC,EAAwB,IAAMA,IAGP,MAAXA,EACpB,OAAO3xB,EAAMtkB,MAIf,GAAa,IAAT0gQ,GAA4B,IAAd0oa,EAChB,OAAO,EACF,GAAa,IAAT1oa,EACT,OAAsB,IAAd0oa,EAAmBnznB,EAASmznB,EAAU/nqB,WAAa40C,EACtD,GAAkB,IAAdmznB,EACT,OAAO1oa,EAAKr/P,WAEZ,IAAI2sB,EAAQo7oB,EAAY,EAAK,IAAM,GACnC,OAAO1oa,EAAKr/P,WAAa2sB,GAAuB,IAAdo7oB,EAAmBnznB,EAASmznB,EAAU/nqB,WAAa40C,EAEzF,EAEAn3C,EAAQuqqB,QAAU,SAAS/rnB,EAAQgsnB,EAAWC,GAE5C,IADAjsnB,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACpB,OAAO07B,EA0MT,IArMA,IAkMIorU,EAlMAjuK,EAAQ,CACV,CAAC,iBAAkB,IAAK,KAAM,UAAU,GAAO,EAAO,qBACtD,CAAC,iBAAkB,IAAK,KAAM,mBAAmB,GAAO,EAAO,qBAC/D,CAAC,iBAAkB,KAAM,KAAM,UAAU,GAAO,EAAO,qBACvD,CAAC,iBAAkB,KAAM,KAAM,UAAU,GAAO,EAAO,qBACvD,CAAC,eAAgB,KAAM,KAAM,QAAQ,GAAO,EAAO,qBACnD,CAAC,eAAgB,OAAQ,KAAM,QAAQ,GAAO,EAAO,qBACrD,CAAC,iBAAkB,QAAS,KAAM,SAAS,GAAO,EAAM,YACxD,CAAC,SAAU,IAAK,KAAM,oBAAoB,GAAM,EAAO,GACvD,CAAC,mBAAoB,MAAO,KAAM,4BAA4B,GAAM,EAAO,GAC3E,CAAC,WAAY,IAAK,CAAC,OAAQ,UAAU,GAAO,EAAM,OAClD,CAAC,MAAO,KAAM,KAAM,QAAQ,GAAO,EAAM,KACzC,CAAC,oBAAqB,KAAM,KAAM,UAAU,GAAO,EAAO,qBAC1D,CAAC,MAAO,MAAO,KAAM,YAAY,GAAO,EAAO,KAC/C,CAAC,OAAQ,IAAK,KAAM,QAAQ,GAAO,EAAO,OAC1C,CAAC,YAAa,KAAM,KAAM,iBAAiB,GAAM,EAAO,GACxD,CAAC,MAAO,MAAO,CAAC,KAAM,eAAe,GAAO,EAAM,GAClD,CAAC,MAAO,MAAO,CAAC,OAAQ,UAAU,GAAO,EAAM,eAC/C,CAAC,OAAQ,OAAQ,KAAM,eAAe,GAAO,EAAM,GACnD,CAAC,UAAW,KAAM,KAAM,sBAAsB,GAAM,EAAO,GAC3D,CAAC,2BAA4B,QAAS,KAAM,aAAa,GAAM,EAAO,GACtE,CAAC,UAAW,IAAK,KAAM,mBAAmB,GAAM,EAAO,GACvD,CAAC,iBAAkB,OAAQ,CAAC,SAAU,UAAU,GAAO,EAAM,OAC7D,CAAC,aAAc,MAAO,CAAC,QAAS,UAAU,GAAO,EAAM,eACvD,CAAC,aAAc,MAAO,CAAC,QAAS,UAAU,GAAO,EAAM,cACvD,CAAC,mBAAoB,MAAO,CAAC,QAAS,UAAU,GAAO,EAAM,qBAC7D,CAAC,cAAe,KAAM,KAAM,UAAU,GAAM,EAAM,GAClD,CAAC,aAAc,MAAO,CAAC,QAAS,UAAU,GAAO,EAAM,kBACvD,CAAC,sBAAuB,OAAQ,CAAC,SAAU,UAAU,GAAO,EAAM,YAClE,CAAC,aAAc,QAAS,CAAC,UAAW,SAAU,YAAa,UAAU,GAAO,EAAM,qBAClF,CAAC,aAAc,MAAO,CAAC,QAAS,UAAU,GAAO,EAAM,eACvD,CAAC,MAAO,MAAO,KAAM,UAAU,GAAO,EAAM,gBAC5C,CAAC,SAAU,KAAM,CAAC,KAAM,QAAQ,GAAO,EAAO,qBAC9C,CAAC,MAAO,IAAK,CAAC,OAAQ,QAAQ,GAAO,EAAM,OAC3C,CAAC,SAAU,IAAK,KAAM,SAAS,GAAO,EAAO,mBAC7C,CAAC,kBAAmB,OAAQ,KAAM,eAAe,GAAO,EAAM,kBAC9D,CAAC,OAAQ,MAAO,CAAC,MAAO,SAAS,GAAO,EAAM,MAC9C,CAAC,eAAgB,KAAM,CAAC,MAAO,UAAU,GAAO,EAAM,kBACtD,CAAC,MAAO,MAAO,KAAM,UAAU,GAAO,EAAM,OAC5C,CAAC,MAAO,MAAO,CAAC,KAAM,UAAU,GAAO,EAAM,MAC7C,CAAC,QAAS,IAAK,KAAM,wBAAwB,GAAM,EAAO,GAC1D,CAAC,cAAe,KAAM,KAAM,UAAU,GAAO,EAAM,kBACnD,CAAC,OAAQ,KAAM,KAAM,UAAU,GAAO,EAAM,OAC5C,CAAC,aAAc,MAAO,KAAM,UAAU,GAAO,EAAM,iBACnD,CAAC,MAAO,MAAO,KAAM,gBAAgB,GAAO,EAAO,KACnD,CAAC,SAAU,MAAO,KAAM,UAAU,GAAO,EAAM,eAC/C,CAAC,QAAS,IAAK,CAAC,MAAO,yBAAyB,GAAO,EAAM,GAC7D,CAAC,QAAS,QAAS,KAAM,QAAQ,GAAO,EAAM,YAC9C,CAAC,OAAQ,IAAK,KAAM,QAAQ,GAAO,EAAM,MACzC,CAAC,OAAQ,KAAM,KAAM,iBAAiB,GAAM,EAAO,GACnD,CAAC,uBAAwB,MAAO,CAAC,UAAW,UAAU,GAAO,EAAM,cACnE,CAAC,UAAW,KAAM,KAAM,QAAQ,GAAO,EAAM,KAC7C,CAAC,QAAS,IAAK,KAAM,cAAc,GAAM,EAAO,GAChD,CAAC,QAAS,KAAM,KAAM,aAAa,GAAM,EAAO,GAChD,CAAC,aAAc,KAAM,CAAC,KAAM,SAAS,GAAO,EAAM,iBAClD,CAAC,kBAAmB,MAAO,CAAC,KAAM,OAAQ,UAAU,GAAO,EAAM,aACjE,CAAC,OAAQ,IAAK,CAAC,MAAO,QAAQ,GAAO,EAAM,MAC3C,CAAC,yBAA0B,SAAU,KAAM,UAAU,GAAO,EAAM,WAClE,CAAC,yBAA0B,OAAQ,CAAC,SAAU,WAAY,QAAQ,GAAO,EAAM,WAC/E,CAAC,uBAAwB,QAAS,KAAM,UAAU,GAAO,EAAM,aAC/D,CAAC,eAAgB,QAAS,CAAC,SAAU,QAAS,QAAQ,GAAO,EAAM,aACnE,CAAC,OAAQ,KAAM,KAAM,UAAU,GAAO,EAAM,OAC5C,CAAC,qBAAsB,UAAW,KAAM,QAAQ,GAAO,EAAM,cAC7D,CAAC,aAAc,MAAO,KAAM,UAAU,GAAO,EAAM,QACnD,CAAC,QAAS,IAAK,KAAM,UAAU,GAAM,EAAM,GAC3C,CAAC,QAAS,MAAO,KAAM,sBAAsB,GAAM,EAAO,GAC1D,CAAC,SAAU,IAAK,CAAC,OAAQ,eAAe,GAAM,EAAM,GACpD,CAAC,WAAY,KAAM,KAAM,QAAQ,GAAM,EAAM,GAC7C,CAAC,OAAQ,KAAM,KAAM,SAAS,GAAO,EAAM,kBAC3C,CAAC,aAAc,KAAM,KAAM,UAAU,GAAO,EAAM,kBAClD,CAAC,QAAS,IAAK,CAAC,IAAK,MAAO,UAAU,GAAO,EAAM,MACnD,CAAC,QAAS,KAAM,KAAM,iBAAiB,GAAM,EAAO,GACpD,CAAC,MAAO,KAAM,KAAM,eAAe,GAAM,EAAO,GAChD,CAAC,UAAW,KAAM,KAAM,iBAAiB,GAAO,EAAO,OACvD,CAAC,kBAAmB,OAAQ,KAAM,UAAU,GAAO,EAAM,eACzD,CAAC,iBAAkB,MAAO,CAAC,QAAS,SAAS,GAAO,EAAM,oBAC1D,CAAC,mBAAoB,MAAO,CAAC,SAAU,SAAS,GAAM,EAAM,GAC5D,CAAC,2BAA4B,QAAS,KAAM,gBAAgB,GAAM,EAAO,GACzE,CAAC,SAAU,KAAM,CAAC,UAAW,UAAU,GAAO,EAAM,kBACpD,CAAC,2BAA4B,OAAQ,KAAM,uBAAuB,GAAM,EAAO,GAC/E,CAAC,QAAS,IAAK,KAAM,UAAU,GAAM,EAAM,GAC3C,CAAC,iBAAkB,MAAO,KAAM,SAAS,GAAO,EAAM,QACtD,CAAC,wBAAyB,OAAQ,KAAM,YAAY,GAAO,EAAO,SAClE,CAAC,SAAU,IAAK,KAAM,SAAS,GAAO,EAAO,qBAC7C,CAAC,SAAU,MAAO,CAAC,MAAO,QAAQ,GAAO,EAAM,IAC/C,CAAC,kBAAmB,OAAQ,KAAM,UAAU,GAAO,EAAM,MACzD,CAAC,OAAQ,MAAO,KAAM,uBAAuB,GAAM,EAAO,GAC1D,CAAC,SAAU,SAAU,KAAM,QAAQ,GAAO,EAAM,MAChD,CAAC,iBAAkB,IAAK,KAAM,UAAU,GAAO,EAAO,qBACtD,CAAC,eAAgB,KAAM,KAAM,QAAQ,GAAO,EAAO,qBACnD,CAAC,gBAAiB,KAAM,KAAM,SAAS,GAAO,EAAO,WACrD,CAAC,eAAgB,aAAc,KAAM,QAAQ,GAAO,EAAO,qBAC3D,CAAC,gBAAiB,IAAK,CAAC,OAAQ,UAAU,GAAO,EAAM,MACvD,CAAC,SAAU,IAAK,KAAM,SAAS,GAAM,EAAM,GAC3C,CAAC,SAAU,MAAO,KAAM,4BAA4B,GAAO,EAAO,kBAClE,CAAC,MAAO,IAAK,KAAM,uBAAuB,GAAM,EAAO,GACvD,CAAC,aAAc,MAAO,KAAM,QAAQ,GAAO,EAAM,eACjD,CAAC,SAAU,KAAM,KAAM,YAAY,GAAM,EAAO,GAChD,CAAC,gBAAiB,OAAQ,KAAM,qBAAqB,GAAM,EAAO,GAClE,CAAC,eAAgB,KAAM,KAAM,SAAS,GAAO,EAAM,WACnD,CAAC,OAAQ,KAAM,KAAM,eAAe,GAAO,EAAO,MAClD,CAAC,kBAAmB,OAAQ,KAAM,UAAU,GAAO,EAAM,oBACzD,CAAC,mBAAoB,OAAQ,CAAC,UAAW,UAAU,GAAO,EAAM,oBAChE,CAAC,QAAS,IAAK,KAAM,qBAAqB,GAAO,EAAO,IACxD,CAAC,OAAQ,OAAQ,KAAM,SAAS,GAAO,EAAM,WAC7C,CAAC,cAAe,MAAO,KAAM,SAAS,GAAO,EAAM,iBACnD,CAAC,aAAc,MAAO,KAAM,QAAQ,GAAO,EAAM,WACjD,CAAC,QAAS,KAAM,KAAM,UAAU,GAAO,EAAM,eAC7C,CAAC,SAAU,MAAO,KAAM,SAAS,GAAM,EAAO,GAC9C,CAAC,SAAU,IAAK,KAAM,SAAS,GAAO,EAAO,qBAC7C,CAAC,SAAU,IAAK,CAAC,OAAQ,QAAQ,GAAM,EAAM,GAC7C,CAAC,sBAAuB,MAAO,CAAC,YAAa,QAAQ,GAAO,EAAM,WAClE,CAAC,UAAW,IAAK,KAAM,0BAA0B,GAAM,EAAO,GAC9D,CAAC,UAAW,KAAM,KAAM,mBAAmB,GAAM,EAAO,GACxD,CAAC,OAAQ,KAAM,KAAM,QAAQ,GAAO,EAAM,aAC1C,CAAC,kBAAmB,OAAQ,CAAC,SAAU,QAAQ,GAAO,EAAM,OAC5D,CAAC,cAAe,MAAO,CAAC,QAAS,QAAQ,GAAO,EAAM,WACtD,CAAC,cAAe,MAAO,CAAC,QAAS,QAAQ,GAAO,EAAM,UACtD,CAAC,oBAAqB,MAAO,CAAC,QAAS,QAAQ,GAAO,EAAM,oBAC5D,CAAC,eAAgB,KAAM,KAAM,QAAQ,GAAM,EAAM,GACjD,CAAC,cAAe,MAAO,CAAC,QAAS,QAAQ,GAAO,EAAM,gBACtD,CAAC,uBAAwB,OAAQ,CAAC,SAAU,QAAQ,GAAO,EAAM,SACjE,CAAC,cAAe,QAAS,CAAC,UAAW,SAAU,YAAa,QAAQ,GAAO,EAAM,mBACjF,CAAC,cAAe,MAAO,CAAC,QAAS,QAAQ,GAAO,EAAM,WACtD,CAAC,eAAgB,KAAM,KAAM,UAAU,GAAO,EAAM,UACpD,CAAC,YAAa,KAAM,KAAM,eAAe,GAAM,EAAO,GACtD,CAAC,QAAS,KAAM,KAAM,aAAa,GAAO,EAAO,MACjD,CAAC,SAAU,KAAM,KAAM,uBAAuB,GAAO,EAAO,MAC5D,CAAC,QAAS,QAAS,KAAM,QAAQ,GAAO,EAAM,YAC9C,CAAC,aAAc,MAAO,KAAM,UAAU,GAAO,EAAM,YACnD,CAAC,WAAY,MAAO,KAAM,UAAU,GAAO,EAAM,YACjD,CAAC,QAAS,IAAK,KAAM,yBAAyB,GAAM,EAAM,GAC1D,CAAC,wBAAyB,IAAK,KAAM,UAAU,GAAO,EAAM,OAC5D,CAAC,MAAO,MAAO,KAAM,QAAQ,GAAO,EAAM,WAC1C,CAAC,QAAS,IAAK,KAAM,QAAQ,GAAO,EAAO,KAC3C,CAAC,YAAa,QAAS,KAAM,UAAU,GAAO,EAAM,cACpD,CAAC,cAAe,SAAU,KAAM,UAAU,GAAO,EAAM,WACvD,CAAC,kBAAmB,SAAU,KAAM,UAAU,GAAO,EAAM,YAC3D,CAAC,YAAa,KAAM,CAAC,SAAU,UAAU,GAAO,EAAM,eACtD,CAAC,mBAAoB,YAAa,KAAM,UAAU,GAAO,EAAM,aAC/D,CAAC,2BAA4B,UAAW,KAAM,QAAQ,GAAO,EAAM,YACnE,CAAC,OAAQ,IAAK,KAAM,WAAW,GAAM,EAAO,GAC5C,CAAC,OAAQ,IAAK,KAAM,SAAS,GAAM,EAAM,GACzC,CAAC,YAAa,KAAM,CAAC,MAAO,UAAU,GAAO,EAAM,MACnD,CAAC,QAAS,KAAM,KAAM,iBAAiB,GAAM,EAAO,GACpD,CAAC,OAAQ,KAAM,KAAM,UAAU,GAAO,EAAM,OAC5C,CAAC,OAAQ,KAAM,KAAM,QAAQ,GAAO,EAAM,WAKxC+ud,EAAkB,CACpBhjR,GAAI,CAAC,OAAQ,GAAI,oBAA2B,KAAM,SAClDC,GAAI,CAAC,OAAQ,GAAI,oBAAwB,KAAM,SAC/CV,GAAI,CAAC,OAAQ,GAAI,mBAAqB,KAAM,OAC5CX,GAAI,CAAC,OAAQ,GAAI,gBAAkB,KAAM,QACzCC,GAAI,CAAC,OAAQ,GAAI,cAAe,KAAM,QACtCW,GAAI,CAAC,OAAQ,GAAI,WAAY,KAAM,QACnCb,GAAI,CAAC,OAAQ,GAAI,QAAS,KAAM,QAChCG,GAAI,CAAC,OAAQ,GAAI,KAAM,KAAM,SAK3BmkR,EAAgB,CAClB/0oB,EAAG,CAAC,QAAS,KAAO,KACpBD,EAAG,CAAC,QAAS,KAAO,KACpBlB,EAAG,CAAC,MAAO,KAAO,KAClBhY,EAAG,CAAC,OAAQ,KAAO,KACnBwZ,EAAG,CAAC,OAAQ,KAAO,KACnBO,EAAG,CAAC,OAAQ,IAAO,KACnBx3B,EAAG,CAAC,OAAQ,IAAO,KACnBguB,EAAG,CAAC,OAAQ,IAAO,KACnBpuB,EAAG,CAAC,QAAS,IAAO,KACpB2B,EAAG,CAAC,QAAS,GAAO,KACpBzB,EAAG,CAAC,OAAQ,GAAO,KACnBqC,EAAG,CAAC,QAAS,IAAO,KACpBzC,EAAG,CAAC,QAAS,KAAO,KACpBugG,EAAG,CAAC,QAAS,KAAO,KACpB7iF,EAAG,CAAC,OAAQ,KAAO,KACnBV,EAAG,CAAC,OAAQ,MAAO,KACnBuB,EAAG,CAAC,QAAS,MAAO,KACpB9H,EAAG,CAAC,OAAQ,MAAO,KACnBkoD,EAAG,CAAC,QAAS,MAAO,KACpBn+D,EAAG,CAAC,QAAS,MAAO,MAIlBkhC,EAAO,KACPD,EAAK,KACLyqoB,EAAiBJ,EACjBK,EAAeJ,EACfK,EAAkB,EAClBC,EAAgB,EAIXnqqB,EAAI,EAAGA,EAAI+6M,EAAMhsM,OAAQ/O,IAChCgpX,EAAuB,OAAhBjuK,EAAM/6M,GAAG,GAAe,GAAK+6M,EAAM/6M,GAAG,IACzC+6M,EAAM/6M,GAAG,KAAOgqqB,GAAkBhhT,EAAI9lX,QAAQ8mqB,IAAmB,KACnExqoB,EAAOu7K,EAAM/6M,KAEX+6M,EAAM/6M,GAAG,KAAOiqqB,GAAgBjhT,EAAI9lX,QAAQ+mqB,IAAiB,KAC/D1qoB,EAAKw7K,EAAM/6M,IAKf,GAAa,OAATw/B,EAAe,CACjB,IAAI4qoB,EAAqBN,EAAgBF,EAAU9lkB,UAAU,EAAG,IAC5DumkB,EAAmBN,EAAcH,EAAU9lkB,UAAU,EAAG,IAG1B,OAA9B8lkB,EAAU9lkB,UAAU,EAAG,KACzBumkB,EAAmB,CAAC,QAAS,GAAO,OAIlCD,GACFF,EAAkBE,EAAmB,GACrCJ,EAAiBJ,EAAU9lkB,UAAU,IAC5BumkB,IACTH,EAAkBG,EAAiB,GACnCL,EAAiBJ,EAAU9lkB,UAAUumkB,EAAiB,GAAGt7pB,SAI3D,IAAK,IAAI4xB,EAAI,EAAGA,EAAIo6K,EAAMhsM,OAAQ4xB,IAChCqoV,EAAuB,OAAhBjuK,EAAMp6K,GAAG,GAAe,GAAKo6K,EAAMp6K,GAAG,IACzCo6K,EAAMp6K,GAAG,KAAOqpoB,GAAkBhhT,EAAI9lX,QAAQ8mqB,IAAmB,KACnExqoB,EAAOu7K,EAAMp6K,GAGnB,CAGA,GAAW,OAAPpB,EAAa,CACf,IAAI+qoB,EAAmBR,EAAgBD,EAAQ/lkB,UAAU,EAAG,IACxDymkB,EAAiBR,EAAcF,EAAQ/lkB,UAAU,EAAG,IAGxB,OAA5B+lkB,EAAQ/lkB,UAAU,EAAG,KACvBymkB,EAAiB,CAAC,QAAS,GAAO,OAIhCD,GACFH,EAAgBG,EAAiB,GACjCL,EAAeJ,EAAQ/lkB,UAAU,IACxBymkB,IACTJ,EAAgBI,EAAe,GAC/BN,EAAeJ,EAAQ/lkB,UAAUymkB,EAAe,GAAGx7pB,SAIrD,IAAK,IAAIqd,EAAI,EAAGA,EAAI2uL,EAAMhsM,OAAQqd,IAChC48V,EAAuB,OAAhBjuK,EAAM3uL,GAAG,GAAe,GAAK2uL,EAAM3uL,GAAG,IACzC2uL,EAAM3uL,GAAG,KAAO69oB,GAAgBjhT,EAAI9lX,QAAQ+mqB,IAAiB,KAC/D1qoB,EAAKw7K,EAAM3uL,GAGjB,CAGA,OAAa,OAAToT,GAAwB,OAAPD,GAKjBC,EAAK,KAAOD,EAAG,GAJV3a,EAAMuvF,GASRv2D,EAASpe,EAAK,GAAK0qoB,GAAmB3qoB,EAAG,GAAK4qoB,EACvD,EAEA/qqB,EAAQorqB,QAAU,SAAS5snB,EAAQornB,GAEjC,IADAprnB,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACpB,OAAO07B,EAIT,IAAK,iBAAiB/gD,KAAK+gD,IAAWA,GAAU,KAAOA,EAAS,IAC9D,OAAOh5B,EAAMg0B,IAIf,GAAIgF,EAAS,EACX,MAAO,IAAMnT,EAAK6hO,KAAK,IAAK,GAAK,IAAM1uN,GAAQj8C,SAAS,GAAGoN,SAAW,IAAM6uC,GAAQj8C,SAAS,GAI/F,IAAImM,EAASgzB,SAAS8c,EAAQ,IAAIj8C,SAAS,GAG3C,YAAsB,IAAXqnqB,EACFl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQqrqB,QAAU,SAAS7snB,EAAQornB,GAEjC,IADAprnB,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACpB,OAAO07B,EAIT,IAAK,kBAAkB/gD,KAAK+gD,IAAWA,GAAU,cAAgBA,EAAS,aACxE,OAAOh5B,EAAMg0B,IAIf,GAAIgF,EAAS,EACX,OAAQ,cAAgBA,GAAQj8C,SAAS,IAI3C,IAAImM,EAASgzB,SAAS8c,EAAQ,IAAIj8C,SAAS,IAG3C,YAAsB,IAAXqnqB,EACFl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQsrqB,QAAU,SAAS9snB,EAAQornB,GAEjC,IADAprnB,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACpB,OAAO07B,EAIT,IAAK,iBAAiB/gD,KAAK+gD,IAAWA,GAAU,WAAaA,EAAS,UACpE,OAAOh5B,EAAMg0B,IAIf,GAAIgF,EAAS,EACX,OAAQ,WAAaA,GAAQj8C,SAAS,GAIxC,IAAImM,EAASgzB,SAAS8c,EAAQ,IAAIj8C,SAAS,GAG3C,YAAsB,IAAXqnqB,EACFl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQurqB,MAAQ,SAASxB,EAASC,GAKhC,OAHAA,OAAuB33pB,IAAZ23pB,EAAyB,EAAIA,EACxCD,EAAUx5jB,EAAMK,YAAYm5jB,GAC5BC,EAAUz5jB,EAAMK,YAAYo5jB,GACxBz5jB,EAAMgB,WAAWw4jB,EAASC,GACrBxkpB,EAAMtkB,MAIP6oqB,IAAYC,EAAW,EAAI,CACrC,EAGAhqqB,EAAQ0klB,IAAM,SAAS8mF,EAAaC,GAMlC,OAJAA,OAA+Bp5pB,IAAhBo5pB,EAA6B,EAAIA,EAEhDD,EAAcj7jB,EAAMK,YAAY46jB,GAChCC,EAAcl7jB,EAAMK,YAAY66jB,GAC5Bl7jB,EAAMgB,WAAWi6jB,EAAaC,GACzBjmpB,EAAMtkB,MAGR8iW,EAAM0I,IAAI8+T,EACnB,EAGAxrqB,EAAQ0klB,IAAI3we,QAAU,WACpB,MAAM,IAAIjxF,MAAM,iCAClB,EAEA9iB,EAAQwklB,KAAO,SAAS1ilB,GAEtB,OAAIR,MAAMQ,GACD0jB,EAAMtkB,MAGR8iW,EAAM6I,KAAK/qW,EACpB,EAGA9B,EAAQwklB,KAAKzwe,QAAU,WACrB,MAAM,IAAIjxF,MAAM,kCAClB,EAEA9iB,EAAQ0rqB,OAAS,SAASltnB,EAAQ3hC,GAGhC,OAFAA,EAAOA,GAAQ,EACf2hC,EAAS+xD,EAAMK,YAAYpyD,GACvB+xD,EAAMgB,WAAW10F,EAAM2hC,GAClBA,EAIDA,GAAU3hC,EAAQ,EAAI,CAChC,EAEA7c,EAAQ2rqB,QAAU,SAASntnB,EAAQornB,GAEjC,IAAK,sBAAsBnsqB,KAAK+gD,GAC9B,OAAOh5B,EAAMg0B,IAIf,IAAI65V,EAA8B,KAAlB70V,EAAO7uC,QAA0D,MAAzC6uC,EAAOkmD,UAAU,EAAG,GAAG/gG,cAG3D4pE,EAAU,EAAa7rC,SAAS8c,EAAQ,IAAM,cAAgB9c,SAAS8c,EAAQ,IAGnF,GAAI+uB,GAAW,KAAOA,EAAU,IAC9B,OAAO/nD,EAAMg0B,IAIf,GAAI65V,EACF,MAAO,IAAMhoW,EAAK6hO,KAAK,IAAK,GAAK,IAAM3/L,GAAShrE,SAAS,GAAGoN,SAAW,IAAM49D,GAAShrE,SAAS,GAIjG,IAAImM,EAAS6+D,EAAQhrE,SAAS,GAG9B,YAAe8P,IAAXu3pB,EACKl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQ4rqB,QAAU,SAASptnB,GAEzB,IAAK,sBAAsB/gD,KAAK+gD,GAC9B,OAAOh5B,EAAMg0B,IAIf,IAAI+zB,EAAU7rC,SAAS8c,EAAQ,IAG/B,OAAQ+uB,GAAW,aAAgBA,EAAU,cAAgBA,CAC/D,EAEAvtE,EAAQ6rqB,QAAU,SAASrtnB,EAAQornB,GAEjC,IAAK,sBAAsBnsqB,KAAK+gD,GAC9B,OAAOh5B,EAAMg0B,IAIf,IAAI+zB,EAAU7rC,SAAS8c,EAAQ,IAG/B,GAAI+uB,EAAU,WAAaA,EAAU,aACnC,OAAO/nD,EAAMg0B,IAIf,GAAI+zB,GAAW,aACb,OAAQA,EAAU,cAAehrE,SAAS,GAI5C,IAAImM,EAAS6+D,EAAQhrE,SAAS,GAG9B,YAAe8P,IAAXu3pB,EACKl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQ8rqB,MAAQ,SAASC,GAEvB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAG1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIRH,KAAK0vB,KAAK1vB,KAAKC,IAAIc,EAAG,GAAKf,KAAKC,IAAI9B,EAAG,GAChD,EAEAc,EAAQisqB,UAAY,SAASF,GAC3B,QAAgB15pB,IAAZ05pB,IAAqC,IAAZA,IAAgC,IAAZA,EAC/C,OAAOvmpB,EAAMtkB,MAIf,GAAgB,IAAZ6qqB,GAA6B,MAAZA,EACnB,OAAO,EAIT,GAAI,CAAC,IAAK,KAAKjoqB,QAAQioqB,IAAY,EACjC,OAAO,EAOT,IAAIhtX,GAHJgtX,EAAUA,EAAQzsqB,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,KAAM,QAG5EwE,QAAQ,KACvBooqB,EAAQH,EAAQjoqB,QAAQ,KACf,IAATi7S,IACFA,EAAOgtX,EAAQjoqB,QAAQ,IAAK,IAGhB,IAAVooqB,IACFA,EAAQH,EAAQjoqB,QAAQ,IAAK,IAI/B,IAAI2rD,EAAOs8mB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,EAAGo8pB,EAAQp8pB,QACrDgpD,EAAiB,MAATlJ,GAAyB,MAATA,EAE5B,OAAIsvP,GAAQ,GAAKmtX,GAAS,EAEnBvzmB,EAKDomP,GAAQ,EACFz9S,MAAMyqqB,EAAQrnkB,UAAU,EAAGq6M,KAAUz9S,MAAMyqqB,EAAQrnkB,UAAUq6M,EAAO,EAAGgtX,EAAQp8pB,OAAS,IAC9F6V,EAAMg0B,IACN9tB,OAAOqgpB,EAAQrnkB,UAAUq6M,EAAO,EAAGgtX,EAAQp8pB,OAAS,IAE9CrO,MAAMyqqB,EAAQrnkB,UAAU,EAAGwnkB,KAAW5qqB,MAAMyqqB,EAAQrnkB,UAAUwnkB,EAAQ,EAAGH,EAAQp8pB,OAAS,IAChG6V,EAAMg0B,KACL9tB,OAAOqgpB,EAAQrnkB,UAAUwnkB,EAAQ,EAAGH,EAAQp8pB,OAAS,IAXjD6V,EAAMg0B,IAcXmf,EACMr3D,MAAMyqqB,EAAQrnkB,UAAU,EAAGqnkB,EAAQp8pB,OAAS,IAAO6V,EAAMg0B,IAAMuynB,EAAQrnkB,UAAU,EAAGqnkB,EAAQp8pB,OAAS,GAErGrO,MAAMyqqB,GAAYvmpB,EAAMg0B,IAAM,CAG5C,EAEAx5C,EAAQmsqB,WAAa,SAASJ,GAE5B,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAG1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIL,IAANY,GAAiB,IAAN5C,EACNsmB,EAAM4wF,KAIL,IAANt0G,GAAW5C,EAAI,EACV6B,KAAKytB,GAAK,EAIT,IAAN1sB,GAAW5C,EAAI,GACT6B,KAAKytB,GAAK,EAIV,IAANtvB,GAAW4C,EAAI,EACV,EAIC,IAAN5C,GAAW4C,EAAI,GACTf,KAAKytB,GAIX1sB,EAAI,EACCf,KAAKkwG,KAAK/xG,EAAI4C,GACZA,EAAI,GAAK5C,GAAK,EAChB6B,KAAKkwG,KAAK/xG,EAAI4C,GAAKf,KAAKytB,GAExBztB,KAAKkwG,KAAK/xG,EAAI4C,GAAKf,KAAKytB,EAEnC,EAEAxuB,EAAQosqB,YAAc,SAASL,GAE7B,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGjC,IAANz5D,EAAWc,EAAQqqqB,QAAQvoqB,GAAI5C,EAAGy5D,GAAQozmB,CACpD,EAEA/rqB,EAAQqsqB,MAAQ,SAASN,GAEvB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAK6xB,IAAI9wB,IAAMf,KAAKm0F,IAAIh2F,GAAK6B,KAAKm0F,KAAKh2F,IAAM,GAAI6B,KAAK4wB,IAAI7vB,IAAMf,KAAKm0F,IAAIh2F,GAAK6B,KAAKm0F,KAAKh2F,IAAM,EAAGy5D,EAC1H,EAEA34D,EAAQssqB,OAAS,SAASP,GAExB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAK6xB,IAAI1zB,IAAM6B,KAAKm0F,IAAIpzF,GAAKf,KAAKm0F,KAAKpzF,IAAM,EAAGf,KAAK4wB,IAAIzyB,IAAM6B,KAAKm0F,IAAIpzF,GAAKf,KAAKm0F,KAAKpzF,IAAM,EAAG62D,EACzH,EAEA34D,EAAQusqB,MAAQ,SAASR,GAEvB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIRlB,EAAQwsqB,MAAMxsqB,EAAQqsqB,MAAMN,GAAU/rqB,EAAQysqB,MAAMV,GAC7D,EAEA/rqB,EAAQwsqB,MAAQ,SAASE,EAAUC,GAEjC,IAAIx3pB,EAAInV,EAAQgsqB,OAAOU,GACnBt3pB,EAAIpV,EAAQisqB,UAAUS,GACtBvrqB,EAAInB,EAAQgsqB,OAAOW,GACnB7tqB,EAAIkB,EAAQisqB,UAAUU,GAE1B,GAAIp8jB,EAAMgB,WAAWp8F,EAAGC,EAAGjU,EAAGrC,GAC5B,OAAO0mB,EAAMtkB,MAIf,IAAI0rqB,EAAQF,EAAShokB,UAAUgokB,EAAS/8pB,OAAS,GAC7Ck9pB,EAAQF,EAASjokB,UAAUiokB,EAASh9pB,OAAS,GAC7CgpD,EAAO,IAQX,IAPc,MAAVi0mB,GAEiB,MAAVC,KADTl0mB,EAAO,KAMC,IAANx3D,GAAiB,IAANrC,EACb,OAAO0mB,EAAMg0B,IAIf,IAAImiG,EAAMx6I,EAAIA,EAAIrC,EAAIA,EACtB,OAAOkB,EAAQqqqB,SAASl1pB,EAAIhU,EAAIiU,EAAItW,GAAK68I,GAAMvmI,EAAIjU,EAAIgU,EAAIrW,GAAK68I,EAAKhjF,EACvE,EAEA34D,EAAQ8sqB,MAAQ,SAASf,GAEvB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAC9CgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAG/C,IAAIp4D,EAAIQ,KAAKm0F,IAAIpzF,GACjB,OAAO9B,EAAQqqqB,QAAQ9pqB,EAAIQ,KAAK6xB,IAAI1zB,GAAIqB,EAAIQ,KAAK4wB,IAAIzyB,GAAIy5D,EAC3D,EAEA34D,EAAQ+sqB,KAAO,SAAShB,GAEtB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAKS,IAAIT,KAAK0vB,KAAK3uB,EAAIA,EAAI5C,EAAIA,IAAK6B,KAAKkwG,KAAK/xG,EAAI4C,GAAI62D,EAC/E,EAEA34D,EAAQgtqB,QAAU,SAASjB,GAEzB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAKS,IAAIT,KAAK0vB,KAAK3uB,EAAIA,EAAI5C,EAAIA,IAAM6B,KAAKS,IAAI,IAAKT,KAAKkwG,KAAK/xG,EAAI4C,GAAKf,KAAKS,IAAI,IAAKm3D,EAC7G,EAEA34D,EAAQitqB,OAAS,SAASlB,GAExB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAKS,IAAIT,KAAK0vB,KAAK3uB,EAAIA,EAAI5C,EAAIA,IAAM6B,KAAKS,IAAI,GAAIT,KAAKkwG,KAAK/xG,EAAI4C,GAAKf,KAAKS,IAAI,GAAIm3D,EAC3G,EAEA34D,EAAQktqB,QAAU,SAASnB,EAASvtnB,GAClCA,EAAS+xD,EAAMK,YAAYpyD,GAC3B,IAAI18C,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAC1B,GAAIx7jB,EAAMgB,WAAW/yD,EAAQ18C,EAAG5C,GAC9B,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAC9CgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAG/C,IAAIj9C,EAAI3a,KAAKC,IAAIhB,EAAQ8rqB,MAAMC,GAAUvtnB,GAGrCriC,EAAInc,EAAQmsqB,WAAWJ,GAG3B,OAAO/rqB,EAAQqqqB,QAAQ3upB,EAAI3a,KAAK6xB,IAAI4rB,EAASriC,GAAIT,EAAI3a,KAAK4wB,IAAI6sB,EAASriC,GAAIw8C,EAC7E,EAEA34D,EAAQmtqB,UAAY,WAElB,IAAIz+pB,EAASgB,UAAU,GAEvB,IAAKA,UAAUC,OACb,OAAO6V,EAAMtkB,MAIf,IAAK,IAAIN,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAEzC,IAAIuU,EAAInV,EAAQgsqB,OAAOt9pB,GACnB0G,EAAIpV,EAAQisqB,UAAUv9pB,GACtBvN,EAAInB,EAAQgsqB,OAAOt8pB,UAAU9O,IAC7B9B,EAAIkB,EAAQisqB,UAAUv8pB,UAAU9O,IAEpC,GAAI2vG,EAAMgB,WAAWp8F,EAAGC,EAAGjU,EAAGrC,GAC5B,OAAO0mB,EAAMtkB,MAIfwN,EAAS1O,EAAQqqqB,QAAQl1pB,EAAIhU,EAAIiU,EAAItW,EAAGqW,EAAIrW,EAAIsW,EAAIjU,EACtD,CAGA,OAAOuN,CACT,EAEA1O,EAAQgsqB,OAAS,SAASD,GACxB,QAAgB15pB,IAAZ05pB,IAAqC,IAAZA,IAAgC,IAAZA,EAC/C,OAAOvmpB,EAAMtkB,MAIf,GAAgB,IAAZ6qqB,GAA6B,MAAZA,EACnB,OAAO,EAIT,GAAI,CAAC,IAAK,KAAM,KAAM,MAAO,KAAM,MAAO,IAAK,KAAM,KAAM,MAAO,KAAM,OAAOjoqB,QAAQioqB,IAAY,EACjG,OAAO,EAIT,IAAIhtX,EAAOgtX,EAAQjoqB,QAAQ,KACvBooqB,EAAQH,EAAQjoqB,QAAQ,KACf,IAATi7S,IACFA,EAAOgtX,EAAQjoqB,QAAQ,IAAK,IAEhB,IAAVooqB,IACFA,EAAQH,EAAQjoqB,QAAQ,IAAK,IAI/B,IAAI2rD,EAAOs8mB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,EAAGo8pB,EAAQp8pB,QACrDgpD,EAAiB,MAATlJ,GAAyB,MAATA,EAE5B,OAAIsvP,GAAQ,GAAKmtX,GAAS,EAEnBvzmB,EAKDomP,GAAQ,EACFz9S,MAAMyqqB,EAAQrnkB,UAAU,EAAGq6M,KAAUz9S,MAAMyqqB,EAAQrnkB,UAAUq6M,EAAO,EAAGgtX,EAAQp8pB,OAAS,IAC9F6V,EAAMg0B,IACN9tB,OAAOqgpB,EAAQrnkB,UAAU,EAAGq6M,IAEtBz9S,MAAMyqqB,EAAQrnkB,UAAU,EAAGwnkB,KAAW5qqB,MAAMyqqB,EAAQrnkB,UAAUwnkB,EAAQ,EAAGH,EAAQp8pB,OAAS,IAChG6V,EAAMg0B,IACN9tB,OAAOqgpB,EAAQrnkB,UAAU,EAAGwnkB,IAXvB1mpB,EAAMg0B,IAcXmf,EACMr3D,MAAMyqqB,EAAQrnkB,UAAU,EAAGqnkB,EAAQp8pB,OAAS,IAAO6V,EAAMg0B,IAAM,EAE/Dl4C,MAAMyqqB,GAAYvmpB,EAAMg0B,IAAMuynB,CAG5C,EAEA/rqB,EAAQotqB,MAAQ,SAASrB,GAEvB,IAAgB,IAAZA,IAAgC,IAAZA,EACtB,OAAOvmpB,EAAMtkB,MAIf,IAAIY,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIRlB,EAAQwsqB,MAAM,IAAKxsqB,EAAQqsqB,MAAMN,GAC1C,EAEA/rqB,EAAQqtqB,OAAS,SAAStB,GAExB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIRlB,EAAQwsqB,MAAM,IAAKxsqB,EAAQssqB,OAAOP,GAC3C,EAEA/rqB,EAAQysqB,MAAQ,SAASV,GAEvB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAK4wB,IAAI7vB,IAAMf,KAAKm0F,IAAIh2F,GAAK6B,KAAKm0F,KAAKh2F,IAAM,EAAG6B,KAAK6xB,IAAI9wB,IAAMf,KAAKm0F,IAAIh2F,GAAK6B,KAAKm0F,KAAKh2F,IAAM,EAAGy5D,EACzH,EAEA34D,EAAQstqB,OAAS,SAASvB,GAExB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAI9C,OAHAgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAGxC34D,EAAQqqqB,QAAQtpqB,KAAK6xB,IAAI1zB,IAAM6B,KAAKm0F,IAAIpzF,GAAKf,KAAKm0F,KAAKpzF,IAAM,EAAGf,KAAK4wB,IAAIzyB,IAAM6B,KAAKm0F,IAAIpzF,GAAKf,KAAKm0F,KAAKpzF,IAAM,EAAG62D,EACzH,EAEA34D,EAAQutqB,OAAS,SAASxB,GAExB,IAAIjqqB,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,GAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACtB,OAAOsmB,EAAMtkB,MAIf,IAAIy3D,EAAOozmB,EAAQrnkB,UAAUqnkB,EAAQp8pB,OAAS,GAC9CgpD,EAAiB,MAATA,GAAyB,MAATA,EAAgBA,EAAO,IAG/C,IAAIn6D,EAAIuC,KAAK0vB,KAAKzwB,EAAQ8rqB,MAAMC,IAG5B5vpB,EAAInc,EAAQmsqB,WAAWJ,GAG3B,OAAO/rqB,EAAQqqqB,QAAQ7rqB,EAAIuC,KAAK6xB,IAAIzW,EAAI,GAAI3d,EAAIuC,KAAK4wB,IAAIxV,EAAI,GAAIw8C,EACnE,EAEA34D,EAAQwtqB,MAAQ,SAAUzB,GAExB,IAAgB,IAAZA,IAAgC,IAAZA,EACtB,OAAOvmpB,EAAMtkB,MAIf,IAAIY,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAG1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMg0B,IAIRx5C,EAAQwsqB,MAAM,IAAKxsqB,EAAQysqB,MAAMV,GAC1C,EAEA/rqB,EAAQytqB,OAAS,SAAU1B,GAEzB,IAAgB,IAAZA,IAAgC,IAAZA,EACtB,OAAOvmpB,EAAMtkB,MAIf,IAAIY,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAG1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMg0B,IAIRx5C,EAAQwsqB,MAAM,IAAKxsqB,EAAQstqB,OAAOvB,GAC3C,EAEA/rqB,EAAQ0tqB,MAAQ,SAAShB,EAAUC,GAEjC,IAAIx3pB,EAAIoG,KAAKywpB,OAAOU,GAChBt3pB,EAAImG,KAAK0wpB,UAAUS,GACnBvrqB,EAAIoa,KAAKywpB,OAAOW,GAChB7tqB,EAAIyc,KAAK0wpB,UAAUU,GAEvB,GAAIp8jB,EAAMgB,WAAWp8F,EAAGC,EAAGjU,EAAGrC,GAC5B,OAAO0mB,EAAMtkB,MAIf,IAAI0rqB,EAAQF,EAAShokB,UAAUgokB,EAAS/8pB,OAAS,GAC7Ck9pB,EAAQF,EAASjokB,UAAUiokB,EAASh9pB,OAAS,GAC7CgpD,EAAO,IAQX,OAPc,MAAVi0mB,GAEiB,MAAVC,KADTl0mB,EAAO,KAMFp9C,KAAK8upB,QAAQl1pB,EAAIhU,EAAGiU,EAAItW,EAAG65D,EACpC,EAEA34D,EAAQ2tqB,MAAQ,WACd,IAAKj+pB,UAAUC,OACb,OAAO6V,EAAMtkB,MAQf,IANA,IAAI0O,EAAO2gG,EAAM8E,QAAQ3lG,WAGrBhB,EAASkB,EAAK,GAGThP,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAAK,CAEpC,IAAIuU,EAAIoG,KAAKywpB,OAAOt9pB,GAChB0G,EAAImG,KAAK0wpB,UAAUv9pB,GACnBvN,EAAIoa,KAAKywpB,OAAOp8pB,EAAKhP,IACrB9B,EAAIyc,KAAK0wpB,UAAUr8pB,EAAKhP,IAE5B,GAAI2vG,EAAMgB,WAAWp8F,EAAGC,EAAGjU,EAAGrC,GAC5B,OAAO0mB,EAAMtkB,MAIfwN,EAAS6M,KAAK8upB,QAAQl1pB,EAAIhU,EAAGiU,EAAItW,EACnC,CAGA,OAAO4P,CACT,EAEA1O,EAAQ4tqB,MAAQ,SAAS7B,GAEvB,IAAgB,IAAZA,IAAgC,IAAZA,EACtB,OAAOvmpB,EAAMtkB,MAIf,IAAIY,EAAI9B,EAAQgsqB,OAAOD,GACnB7sqB,EAAIc,EAAQisqB,UAAUF,GAE1B,OAAIx7jB,EAAMgB,WAAWzvG,EAAG5C,GACfsmB,EAAMtkB,MAIRqa,KAAKixpB,MAAMjxpB,KAAKkxpB,MAAMV,GAAUxwpB,KAAK8wpB,MAAMN,GACpD,EAEA/rqB,EAAQ6tqB,QAAU,SAASrvnB,EAAQornB,GAEjC,IAAK,gBAAgBnsqB,KAAK+gD,GACxB,OAAOh5B,EAAMg0B,IAIf,IAAI65V,EAA8B,KAAlB70V,EAAO7uC,QAA4C,MAA3B6uC,EAAOkmD,UAAU,EAAG,GAGxDn3B,EAAU,EAAa7rC,SAAS8c,EAAQ,GAAK,WAAa9c,SAAS8c,EAAQ,GAG/E,GAAI+uB,GAAW,KAAOA,EAAU,IAC9B,OAAO/nD,EAAMg0B,IAIf,GAAI65V,EACF,MAAO,IAAMhoW,EAAK6hO,KAAK,IAAK,GAAK,IAAM3/L,GAAShrE,SAAS,GAAGoN,SAAW,IAAM49D,GAAShrE,SAAS,GAIjG,IAAImM,EAAS6+D,EAAQhrE,SAAS,GAG9B,YAAsB,IAAXqnqB,EACFl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,EAEAx5C,EAAQ8tqB,QAAU,SAAStvnB,GAEzB,IAAK,gBAAgB/gD,KAAK+gD,GACxB,OAAOh5B,EAAMg0B,IAIf,IAAI+zB,EAAU7rC,SAAS8c,EAAQ,GAG/B,OAAQ+uB,GAAW,UAAaA,EAAU,WAAaA,CACzD,EAEAvtE,EAAQ+tqB,QAAU,SAASvvnB,EAAQornB,GAEjC,IAAK,gBAAgBnsqB,KAAK+gD,GACxB,OAAOh5B,EAAMg0B,IAIf,IAAI+zB,EAAU7rC,SAAS8c,EAAQ,GAG/B,GAAI+uB,GAAW,UACb,MAAO,MAAQA,EAAU,YAAYhrE,SAAS,IAIhD,IAAImM,EAAS6+D,EAAQhrE,SAAS,IAG9B,YAAe8P,IAAXu3pB,EACKl7pB,EAGHpN,MAAMsoqB,GACDpkpB,EAAMtkB,MAIX0oqB,EAAS,EACJpkpB,EAAMg0B,KAIfownB,EAAS7oqB,KAAKQ,MAAMqoqB,KAGFl7pB,EAAOiB,OAAU07B,EAAK6hO,KAAK,IAAK08Z,EAASl7pB,EAAOiB,QAAUjB,EAAS8W,EAAMg0B,GAE/F,C,+BCvhDA,EAAQ,OACR,IAAIyrD,EAAI,EAAQ,OACZ+okB,EAAY,EAAQ,OAKxB/okB,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM3xB,KAAM,YAAastG,OAAQ,GAAG4xjB,YAAcA,GAAa,CAC1FA,UAAWA,G,kBCVb,IAAInwpB,EAAiB,EAAQ,OAwB7Bo/E,EAAOj9F,QAbP,SAAyB6mD,EAAQ9gD,EAAK7E,GACzB,aAAP6E,GAAsB8X,EACxBA,EAAegpC,EAAQ9gD,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAS7E,EACT,UAAY,IAGd2lD,EAAO9gD,GAAO7E,CAElB,C,4NCpBA,MAAM+sqB,EAAe,CACnBl2mB,QAAS,QAEX,SAASm2mB,EAAWvnqB,GAClB,IAAI,GACF2S,EAAE,MACFpY,GACEyF,EACJ,OAAO,gBAAoB,MAAO,CAChC2S,GAAIA,EACJ2rB,MAAOgpoB,GACN/sqB,EACL,CAEA,SAASitqB,EAAWxnqB,GAClB,IAAI,GACF2S,EAAE,aACF80pB,EAAY,aACZC,EAAe,aACb1nqB,EAgBJ,OAAO,gBAAoB,MAAO,CAChC2S,GAAIA,EACJ2rB,MAhBqB,CACrB5gC,SAAU,QACVkB,IAAK,EACLG,KAAM,EACNzD,MAAO,EACPE,OAAQ,EACRmoC,QAAS,EACTusB,OAAQ,EACR9qD,QAAS,EACTlD,SAAU,SACV2hC,KAAM,gBACN8joB,SAAU,cACVC,WAAY,UAKZ10pB,KAAM,SACN,YAAaw0pB,EACb,eAAe,GACdD,EACL,CCvCA,MAAMI,GAAiC,IAAAhgoB,eAAc,MAkC/CigoB,EAAkC,CACtCznV,UAAW,iNAEP0nV,EAAuB,CAC3B,WAAAC,CAAYhoqB,GACV,IAAI,OACF24C,GACE34C,EACJ,MAAO,4BAA8B24C,EAAOhmC,GAAK,GACnD,EAEA,UAAAs1pB,CAAW1oqB,GACT,IAAI,OACFo5C,EAAM,KACNuvnB,GACE3oqB,EAEJ,OAAI2oqB,EACK,kBAAoBvvnB,EAAOhmC,GAAK,kCAAoCu1pB,EAAKv1pB,GAAK,IAGhF,kBAAoBgmC,EAAOhmC,GAAK,sCACzC,EAEA,SAAAqxU,CAAUlkV,GACR,IAAI,OACF64C,EAAM,KACNuvnB,GACEpoqB,EAEJ,OAAIooqB,EACK,kBAAoBvvnB,EAAOhmC,GAAK,oCAAsCu1pB,EAAKv1pB,GAG7E,kBAAoBgmC,EAAOhmC,GAAK,eACzC,EAEA,YAAAw1pB,CAAa77pB,GACX,IAAI,OACFqsC,GACErsC,EACJ,MAAO,0CAA4CqsC,EAAOhmC,GAAK,eACjE,GAIF,SAASy1pB,EAAcpoqB,GACrB,IAAI,cACFqoqB,EAAgBN,EAAoB,UACpCrtmB,EAAS,wBACT4tmB,EAAuB,yBACvBC,EAA2BT,GACzB9nqB,EACJ,MAAM,SACJwoqB,EAAQ,aACRf,GDhDJ,WACE,MAAOA,EAAcgB,IAAmB,IAAAv0pB,UAAS,IAMjD,MAAO,CACLs0pB,UANe,IAAA10pB,aAAYvZ,IACd,MAATA,GACFkuqB,EAAgBluqB,IAEjB,IAGDktqB,eAEJ,CCsCMiB,GACEC,GAAe,QAAY,kBAC1BC,EAASC,IAAc,IAAA30pB,WAAS,GA+DvC,IA9DA,IAAAO,WAAU,KACRo0pB,GAAW,IACV,IA7FL,SAAuBpgoB,GACrB,MAAMqgoB,GAAmB,IAAAnqb,YAAWkpb,IACpC,IAAApzpB,WAAU,KACR,IAAKq0pB,EACH,MAAM,IAAI3spB,MAAM,gEAIlB,OADoB2spB,EAAiBrgoB,IAEpC,CAACA,EAAUqgoB,GAChB,CAoFEC,EAAc,IAAAv0pB,SAAQ,KAAM,CAC1B,WAAAwzpB,CAAYzoqB,GACV,IAAI,OACFo5C,GACEp5C,EACJipqB,EAASH,EAAcL,YAAY,CACjCrvnB,WAEJ,EAEA,UAAAqwnB,CAAWlpqB,GACT,IAAI,OACF64C,EAAM,KACNuvnB,GACEpoqB,EAEAuoqB,EAAcW,YAChBR,EAASH,EAAcW,WAAW,CAChCrwnB,SACAuvnB,SAGN,EAEA,UAAAD,CAAW37pB,GACT,IAAI,OACFqsC,EAAM,KACNuvnB,GACE57pB,EACJk8pB,EAASH,EAAcJ,WAAW,CAChCtvnB,SACAuvnB,SAEJ,EAEA,SAAAlkV,CAAU4+C,GACR,IAAI,OACFjqV,EAAM,KACNuvnB,GACEtlS,EACJ4lS,EAASH,EAAcrkV,UAAU,CAC/BrrS,SACAuvnB,SAEJ,EAEA,YAAAC,CAAatlS,GACX,IAAI,OACFlqV,EAAM,KACNuvnB,GACErlS,EACJ2lS,EAASH,EAAcF,aAAa,CAClCxvnB,SACAuvnB,SAEJ,IAEE,CAACM,EAAUH,MAEVO,EACH,OAAO,KAGT,MAAMK,EAAS,gBAAoB,WAAgB,KAAM,gBAAoB1B,EAAY,CACvF50pB,GAAI21pB,EACJ/tqB,MAAOguqB,EAAyBloV,YAC9B,gBAAoBmnV,EAAY,CAClC70pB,GAAIg2pB,EACJlB,aAAcA,KAEhB,OAAO/smB,GAAY,IAAA0hR,cAAa6sV,EAAQvumB,GAAauumB,CACvD,CAEA,IAAIC,EAaJ,SAAS1kpB,IAAQ,CAEjB,SAAS2kpB,EAAUC,EAAQ5kqB,GACzB,OAAO,IAAAgQ,SAAQ,KAAM,CACnB40pB,SACA5kqB,QAAoB,MAAXA,EAAkBA,EAAU,CAAC,IAExC,CAAC4kqB,EAAQ5kqB,GACX,CAEA,SAAS6kqB,IACP,IAAK,IAAIvgqB,EAAOC,UAAUC,OAAQynY,EAAU,IAAIvnY,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAClFsnY,EAAQtnY,GAAQJ,UAAUI,GAG5B,OAAO,IAAAqL,SAAQ,IAAM,IAAIi8X,GAAS5qY,OAAOujqB,GAAoB,MAAVA,GACnD,IAAI34R,GACN,EA5BA,SAAWy4R,GACTA,EAAkB,UAAI,YACtBA,EAAiB,SAAI,WACrBA,EAAgB,QAAI,UACpBA,EAAmB,WAAI,aACvBA,EAAiB,SAAI,WACrBA,EAA0B,kBAAI,oBAC9BA,EAA6B,qBAAI,uBACjCA,EAA4B,oBAAI,qBACjC,CATD,CASGA,IAAWA,EAAS,CAAC,IAqBxB,MAAMI,EAAkC5qqB,OAAOklD,OAAO,CACpDzoD,EAAG,EACH5C,EAAG,IAML,SAASgxqB,EAAgBpvoB,EAAIC,GAC3B,OAAOhgC,KAAK0vB,KAAK1vB,KAAKC,IAAI8/B,EAAGh/B,EAAIi/B,EAAGj/B,EAAG,GAAKf,KAAKC,IAAI8/B,EAAG5hC,EAAI6hC,EAAG7hC,EAAG,GACpE,CAEA,SAASixqB,EAA2BzopB,EAAOtf,GACzC,MAAMgoqB,GAAmB,QAAoB1opB,GAE7C,OAAK0opB,GAKCA,EAAiBtuqB,EAAIsG,EAAK1C,MAAQ0C,EAAKnG,MAAQ,IAG1B,MAFrBmuqB,EAAiBlxqB,EAAIkJ,EAAK7C,KAAO6C,EAAKjG,OAAS,IAEC,IAP7C,KAQX,CAKA,SAASkuqB,EAAkB1pqB,EAAMT,GAC/B,IACEoL,MACEpQ,MAAOiU,IAEPxO,GAEF2K,MACEpQ,MAAOkU,IAEPlP,EACJ,OAAOiP,EAAIC,CACb,CAKA,SAASk7pB,EAAmB7pqB,EAAOwM,GACjC,IACE3B,MACEpQ,MAAOiU,IAEP1O,GAEF6K,MACEpQ,MAAOkU,IAEPnC,EACJ,OAAOmC,EAAID,CACb,CAMA,SAASo7pB,EAAmBhnS,GAC1B,IAAI,KACF7jY,EAAI,IACJH,EAAG,OACHpD,EAAM,MACNF,GACEsnY,EACJ,MAAO,CAAC,CACNznY,EAAG4D,EACHxG,EAAGqG,GACF,CACDzD,EAAG4D,EAAOzD,EACV/C,EAAGqG,GACF,CACDzD,EAAG4D,EACHxG,EAAGqG,EAAMpD,GACR,CACDL,EAAG4D,EAAOzD,EACV/C,EAAGqG,EAAMpD,GAEb,CACA,SAASquqB,EAAkBC,EAAY5gpB,GACrC,IAAK4gpB,GAAoC,IAAtBA,EAAW9gqB,OAC5B,OAAO,KAGT,MAAO+gqB,GAAkBD,EACzB,OAAO5gpB,EAAW6gpB,EAAe7gpB,GAAY6gpB,CAC/C,CAMA,SAASC,EAAkBvoqB,EAAM1C,EAAMH,GASrC,YARa,IAATG,IACFA,EAAO0C,EAAK1C,WAGF,IAARH,IACFA,EAAM6C,EAAK7C,KAGN,CACLzD,EAAG4D,EAAoB,GAAb0C,EAAKnG,MACf/C,EAAGqG,EAAoB,GAAd6C,EAAKjG,OAElB,CAOA,MAAMyuqB,EAAgBjqqB,IACpB,IAAI,cACFkqqB,EAAa,eACbC,EAAc,oBACdC,GACEpqqB,EACJ,MAAMqqqB,EAAaL,EAAkBE,EAAeA,EAAcnrqB,KAAMmrqB,EAActrqB,KAChFkrqB,EAAa,GAEnB,IAAK,MAAMQ,KAAsBF,EAAqB,CACpD,MAAM,GACJz3pB,GACE23pB,EACE7oqB,EAAO0oqB,EAAe1hqB,IAAIkK,GAEhC,GAAIlR,EAAM,CACR,MAAM8oqB,EAAchB,EAAgBS,EAAkBvoqB,GAAO4oqB,GAC7DP,EAAWphqB,KAAK,CACdiK,KACAhI,KAAM,CACJ2/pB,qBACA/vqB,MAAOgwqB,IAGb,CACF,CAEA,OAAOT,EAAW9hqB,KAAK0hqB,IAQnBc,EAAiBxqqB,IACrB,IAAI,cACFkqqB,EAAa,eACbC,EAAc,oBACdC,GACEpqqB,EACJ,MAAMyqqB,EAAUb,EAAmBM,GAC7BJ,EAAa,GAEnB,IAAK,MAAMQ,KAAsBF,EAAqB,CACpD,MAAM,GACJz3pB,GACE23pB,EACE7oqB,EAAO0oqB,EAAe1hqB,IAAIkK,GAEhC,GAAIlR,EAAM,CACR,MAAMipqB,EAAcd,EAAmBnoqB,GACjCw4f,EAAYwwK,EAAQvrqB,OAAO,CAACo1N,EAAagzR,EAAQl8e,IAC9CkpN,EAAci1c,EAAgBmB,EAAYt/pB,GAAQk8e,GACxD,GACGqjL,EAAoB5lpB,QAAQk1e,EAAY,GAAGtnX,QAAQ,IACzDm3hB,EAAWphqB,KAAK,CACdiK,KACAhI,KAAM,CACJ2/pB,qBACA/vqB,MAAOowqB,IAGb,CACF,CAEA,OAAOb,EAAW9hqB,KAAK0hqB,IAOzB,SAASkB,EAAqBpknB,EAAO7jD,GACnC,MAAM/D,EAAMxE,KAAKmE,IAAIoE,EAAO/D,IAAK4nD,EAAM5nD,KACjCG,EAAO3E,KAAKmE,IAAIoE,EAAO5D,KAAMynD,EAAMznD,MACnCF,EAAQzE,KAAKkE,IAAIqE,EAAO5D,KAAO4D,EAAOrH,MAAOkrD,EAAMznD,KAAOynD,EAAMlrD,OAChEwD,EAAS1E,KAAKkE,IAAIqE,EAAO/D,IAAM+D,EAAOnH,OAAQgrD,EAAM5nD,IAAM4nD,EAAMhrD,QAChEF,EAAQuD,EAAQE,EAChBvD,EAASsD,EAASF,EAExB,GAAIG,EAAOF,GAASD,EAAME,EAAQ,CAChC,MAAM+rqB,EAAaloqB,EAAOrH,MAAQqH,EAAOnH,OACnCsvqB,EAAYtknB,EAAMlrD,MAAQkrD,EAAMhrD,OAChCuvqB,EAAmBzvqB,EAAQE,EAEjC,OAAOupB,QADmBgmpB,GAAoBF,EAAaC,EAAYC,IACvCp4hB,QAAQ,GAC1C,CAGA,OAAO,CACT,CAMA,MAAMq4hB,EAAmBhrqB,IACvB,IAAI,cACFkqqB,EAAa,eACbC,EAAc,oBACdC,GACEpqqB,EACJ,MAAM8pqB,EAAa,GAEnB,IAAK,MAAMQ,KAAsBF,EAAqB,CACpD,MAAM,GACJz3pB,GACE23pB,EACE7oqB,EAAO0oqB,EAAe1hqB,IAAIkK,GAEhC,GAAIlR,EAAM,CACR,MAAMwpqB,EAAoBL,EAAqBnpqB,EAAMyoqB,GAEjDe,EAAoB,GACtBnB,EAAWphqB,KAAK,CACdiK,KACAhI,KAAM,CACJ2/pB,qBACA/vqB,MAAO0wqB,IAIf,CACF,CAEA,OAAOnB,EAAW9hqB,KAAK2hqB,IAuEzB,SAASuB,EAAaj1G,EAAOC,GAC3B,OAAOD,GAASC,EAAQ,CACtB/6jB,EAAG86jB,EAAMl3jB,KAAOm3jB,EAAMn3jB,KACtBxG,EAAG09jB,EAAMr3jB,IAAMs3jB,EAAMt3jB,KACnB0qqB,CACN,CAEA,SAAS6B,EAAuBljqB,GAC9B,OAAO,SAA0BxG,GAC/B,IAAK,IAAIqH,EAAOC,UAAUC,OAAQoiqB,EAAc,IAAIliqB,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IACzGiiqB,EAAYjiqB,EAAO,GAAKJ,UAAUI,GAGpC,OAAOiiqB,EAAYlsqB,OAAO,CAACoL,EAAK+gqB,KAAe,IAAM/gqB,EACnD1L,IAAK0L,EAAI1L,IAAMqJ,EAAWojqB,EAAW9yqB,EACrCuG,OAAQwL,EAAIxL,OAASmJ,EAAWojqB,EAAW9yqB,EAC3CwG,KAAMuL,EAAIvL,KAAOkJ,EAAWojqB,EAAWlwqB,EACvC0D,MAAOyL,EAAIzL,MAAQoJ,EAAWojqB,EAAWlwqB,IACvC,IAAKsG,GAEX,CACF,CACA,MAAM6pqB,EAA+BH,EAAuB,GAE5D,SAASI,EAAevtqB,GACtB,GAAIA,EAAUyiC,WAAW,aAAc,CACrC,MAAM+qoB,EAAiBxtqB,EAAU0R,MAAM,GAAI,GAAG5Z,MAAM,MACpD,MAAO,CACLqF,GAAIqwqB,EAAe,IACnBjzqB,GAAIizqB,EAAe,IACnB72Q,QAAS62Q,EAAe,GACxB52Q,QAAS42Q,EAAe,GAE5B,CAAO,GAAIxtqB,EAAUyiC,WAAW,WAAY,CAC1C,MAAM+qoB,EAAiBxtqB,EAAU0R,MAAM,GAAI,GAAG5Z,MAAM,MACpD,MAAO,CACLqF,GAAIqwqB,EAAe,GACnBjzqB,GAAIizqB,EAAe,GACnB72Q,QAAS62Q,EAAe,GACxB52Q,QAAS42Q,EAAe,GAE5B,CAEA,OAAO,IACT,CA6BA,MAAM/hqB,EAAiB,CACrBgiqB,iBAAiB,GAMnB,SAASv1R,EAAch7Y,EAASsJ,QACd,IAAZA,IACFA,EAAUiF,GAGZ,IAAIhI,EAAOvG,EAAQsG,wBAEnB,GAAIgD,EAAQinqB,gBAAiB,CAC3B,MAAM,UACJztqB,EAAS,gBACT0tqB,IACE,QAAUxwqB,GAAS+B,iBAAiB/B,GAEpC8C,IACFyD,EAhDN,SAA0BA,EAAMzD,EAAW0tqB,GACzC,MAAMC,EAAkBJ,EAAevtqB,GAEvC,IAAK2tqB,EACH,OAAOlqqB,EAGT,MAAM,OACJkzZ,EAAM,OACNC,EACAz5Z,EAAGywqB,EACHrzqB,EAAGszqB,GACDF,EACExwqB,EAAIsG,EAAK1C,KAAO6sqB,GAAc,EAAIj3Q,GAAUpvY,WAAWmmpB,GACvDnzqB,EAAIkJ,EAAK7C,IAAMitqB,GAAc,EAAIj3Q,GAAUrvY,WAAWmmpB,EAAgBh8pB,MAAMg8pB,EAAgBvuqB,QAAQ,KAAO,IAC3GqxB,EAAImmY,EAASlzZ,EAAKnG,MAAQq5Z,EAASlzZ,EAAKnG,MACxCrD,EAAI28Z,EAASnzZ,EAAKjG,OAASo5Z,EAASnzZ,EAAKjG,OAC/C,MAAO,CACLF,MAAOkzB,EACPhzB,OAAQvD,EACR2G,IAAKrG,EACLsG,MAAO1D,EAAIqzB,EACX1vB,OAAQvG,EAAIN,EACZ8G,KAAM5D,EAEV,CAuBa2wqB,CAAiBrqqB,EAAMzD,EAAW0tqB,GAE7C,CAEA,MAAM,IACJ9sqB,EAAG,KACHG,EAAI,MACJzD,EAAK,OACLE,EAAM,OACNsD,EAAM,MACND,GACE4C,EACJ,MAAO,CACL7C,MACAG,OACAzD,QACAE,SACAsD,SACAD,QAEJ,CAUA,SAASktqB,EAA+B7wqB,GACtC,OAAOg7Y,EAAch7Y,EAAS,CAC5BuwqB,iBAAiB,GAErB,CAoCA,SAASO,EAAuB9wqB,EAASktE,GACvC,MAAMh+D,EAAgB,GAuCtB,OAAKlP,EArCL,SAAS+wqB,EAAwBtwqB,GAC/B,GAAa,MAATysE,GAAiBh+D,EAAcpB,QAAUo/D,EAC3C,OAAOh+D,EAGT,IAAKzO,EACH,OAAOyO,EAGT,IAAI,QAAWzO,IAAkC,MAAzBA,EAAKuwqB,mBAA6B9hqB,EAAcmgC,SAAS5uC,EAAKuwqB,kBAEpF,OADA9hqB,EAAc1B,KAAK/M,EAAKuwqB,kBACjB9hqB,EAGT,KAAK,QAAczO,KAAS,QAAaA,GACvC,OAAOyO,EAGT,GAAIA,EAAcmgC,SAAS5uC,GACzB,OAAOyO,EAGT,MAAMmwjB,GAAgB,QAAUr/jB,GAAS+B,iBAAiBtB,GAQ1D,OANIA,IAAST,GAxCjB,SAAsBA,EAASq/jB,QACP,IAAlBA,IACFA,GAAgB,QAAUr/jB,GAAS+B,iBAAiB/B,IAGtD,MAAMixqB,EAAgB,wBAEtB,MADmB,CAAC,WAAY,YAAa,aAC3BjlqB,KAAKgiB,IACrB,MAAM3uB,EAAQggkB,EAAcrxiB,GAC5B,MAAwB,iBAAV3uB,GAAqB4xqB,EAAcr1qB,KAAKyD,IAE1D,CA8BU6xqB,CAAazwqB,EAAM4+jB,IACrBnwjB,EAAc1B,KAAK/M,GAlD3B,SAAiBA,EAAM4+jB,GAKrB,YAJsB,IAAlBA,IACFA,GAAgB,QAAU5+jB,GAAMsB,iBAAiBtB,IAGjB,UAA3B4+jB,EAAc78jB,QACvB,CAgDQ4J,CAAQ3L,EAAM4+jB,GACTnwjB,EAGF6hqB,EAAwBtwqB,EAAKiB,WACtC,CAMOqvqB,CAAwB/wqB,GAHtBkP,CAIX,CACA,SAASiiqB,EAA2B1wqB,GAClC,MAAO2wqB,GAA2BN,EAAuBrwqB,EAAM,GAC/D,OAAkC,MAA3B2wqB,EAAkCA,EAA0B,IACrE,CAEA,SAASC,EAAqBrxqB,GAC5B,OAAK,MAAcA,GAIf,QAASA,GACJA,GAGJ,QAAOA,IAIR,QAAWA,IAAYA,KAAY,QAAiBA,GAASgxqB,iBACxDnwqB,QAGL,QAAcb,GACTA,EAGF,KAXE,KARA,IAoBX,CAEA,SAASsxqB,EAAqBtxqB,GAC5B,OAAI,QAASA,GACJA,EAAQqqI,QAGVrqI,EAAQyG,UACjB,CACA,SAAS8qqB,EAAqBvxqB,GAC5B,OAAI,QAASA,GACJA,EAAQsqI,QAGVtqI,EAAQ2G,SACjB,CACA,SAAS6qqB,EAAqBxxqB,GAC5B,MAAO,CACLC,EAAGqxqB,EAAqBtxqB,GACxB3C,EAAGk0qB,EAAqBvxqB,GAE5B,CAEA,IAAIyxqB,EAOJ,SAASC,EAA2B1xqB,GAClC,SAAK,OAAcA,IAIZA,IAAYmC,SAAS6uqB,gBAC9B,CAEA,SAASW,EAAkBC,GACzB,MAAMC,EAAY,CAChB5xqB,EAAG,EACH5C,EAAG,GAEC++V,EAAas1U,EAA2BE,GAAsB,CAClEtxqB,OAAQO,OAAO2mG,YACfpnG,MAAOS,OAAOymG,YACZ,CACFhnG,OAAQsxqB,EAAmBjsqB,aAC3BvF,MAAOwxqB,EAAmBhsqB,aAEtBksqB,EAAY,CAChB7xqB,EAAG2xqB,EAAmBrpqB,YAAc6zV,EAAWh8V,MAC/C/C,EAAGu0qB,EAAmBppqB,aAAe4zV,EAAW97V,QAMlD,MAAO,CACL46O,MALY02b,EAAmBjrqB,WAAakrqB,EAAUx0qB,EAMtD00qB,OALaH,EAAmBnrqB,YAAcorqB,EAAU5xqB,EAMxD+xqB,SALeJ,EAAmBjrqB,WAAamrqB,EAAUz0qB,EAMzD40qB,QALcL,EAAmBnrqB,YAAcqrqB,EAAU7xqB,EAMzD6xqB,YACAD,YAEJ,EAzCA,SAAWJ,GACTA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAoB,UAAK,GAAK,UACzC,CAHD,CAGGA,IAAcA,EAAY,CAAC,IAwC9B,MAAMS,EAAmB,CACvBjyqB,EAAG,GACH5C,EAAG,IAEL,SAAS80qB,EAA2BC,EAAiBC,EAAqBvtqB,EAAMwtqB,EAAcC,GAC5F,IAAI,IACF7uqB,EAAG,KACHG,EAAI,MACJF,EAAK,OACLC,GACEkB,OAEiB,IAAjBwtqB,IACFA,EAAe,SAGW,IAAxBC,IACFA,EAAsBL,GAGxB,MAAM,MACJh3b,EAAK,SACL82b,EAAQ,OACRD,EAAM,QACNE,GACEN,EAAkBS,GAChB3pqB,EAAY,CAChBxI,EAAG,EACH5C,EAAG,GAECw9M,EAAQ,CACZ56M,EAAG,EACH5C,EAAG,GAECy2a,EACIu+P,EAAoB/xqB,OAASiyqB,EAAoBl1qB,EADrDy2a,EAEGu+P,EAAoBjyqB,MAAQmyqB,EAAoBtyqB,EAuBzD,OApBKi7O,GAASx3O,GAAO2uqB,EAAoB3uqB,IAAMowa,GAE7Crra,EAAUpL,EAAIo0qB,EAAUe,SACxB33d,EAAMx9M,EAAIi1qB,EAAepzqB,KAAKM,KAAK6yqB,EAAoB3uqB,IAAMowa,EAAmBpwa,GAAOowa,KAC7Ek+P,GAAYpuqB,GAAUyuqB,EAAoBzuqB,OAASkwa,IAE7Drra,EAAUpL,EAAIo0qB,EAAUgB,QACxB53d,EAAMx9M,EAAIi1qB,EAAepzqB,KAAKM,KAAK6yqB,EAAoBzuqB,OAASkwa,EAAmBlwa,GAAUkwa,KAG1Fm+P,GAAWtuqB,GAAS0uqB,EAAoB1uqB,MAAQmwa,GAEnDrra,EAAUxI,EAAIwxqB,EAAUgB,QACxB53d,EAAM56M,EAAIqyqB,EAAepzqB,KAAKM,KAAK6yqB,EAAoB1uqB,MAAQmwa,EAAkBnwa,GAASmwa,KAChFi+P,GAAUluqB,GAAQwuqB,EAAoBxuqB,KAAOiwa,IAEvDrra,EAAUxI,EAAIwxqB,EAAUe,SACxB33d,EAAM56M,EAAIqyqB,EAAepzqB,KAAKM,KAAK6yqB,EAAoBxuqB,KAAOiwa,EAAkBjwa,GAAQiwa,IAGnF,CACLrra,YACAoyM,QAEJ,CAEA,SAAS63d,EAAqB1yqB,GAC5B,GAAIA,IAAYmC,SAAS6uqB,iBAAkB,CACzC,MAAM,WACJ1pkB,EAAU,YACVE,GACE3mG,OACJ,MAAO,CACL6C,IAAK,EACLG,KAAM,EACNF,MAAO2jG,EACP1jG,OAAQ4jG,EACRpnG,MAAOknG,EACPhnG,OAAQknG,EAEZ,CAEA,MAAM,IACJ9jG,EAAG,KACHG,EAAI,MACJF,EAAK,OACLC,GACE5D,EAAQsG,wBACZ,MAAO,CACL5C,MACAG,OACAF,QACAC,SACAxD,MAAOJ,EAAQ4F,YACftF,OAAQN,EAAQ2F,aAEpB,CAEA,SAASgtqB,EAAiBC,GACxB,OAAOA,EAAoB5uqB,OAAO,CAACoL,EAAK3O,KAC/B,QAAI2O,EAAKoiqB,EAAqB/wqB,IACpC2tqB,EACL,CAYA,SAASyE,EAAuB7yqB,EAASygd,GAKvC,QAJgB,IAAZA,IACFA,EAAUzlE,IAGPh7Y,EACH,OAGF,MAAM,IACJ0D,EAAG,KACHG,EAAI,OACJD,EAAM,MACND,GACE88c,EAAQzgd,GACoBmxqB,EAA2BnxqB,KAMvD4D,GAAU,GAAKD,GAAS,GAAKD,GAAO7C,OAAO2mG,aAAe3jG,GAAQhD,OAAOymG,aAC3EtnG,EAAQklI,eAAe,CACrB0xL,MAAO,SACP7hF,OAAQ,UAGd,CAEA,MAAM32L,EAAa,CAAC,CAAC,IAAK,CAAC,OAAQ,SAxCnC,SAA0Bw0nB,GACxB,OAAOA,EAAoB5uqB,OAAO,CAACoL,EAAK3O,IAC/B2O,EAAMkiqB,EAAqB7wqB,GACjC,EACL,GAoCgE,CAAC,IAAK,CAAC,MAAO,UAnC9E,SAA0BmyqB,GACxB,OAAOA,EAAoB5uqB,OAAO,CAACoL,EAAK3O,IAC/B2O,EAAMmiqB,EAAqB9wqB,GACjC,EACL,IAgCA,MAAMwwZ,EACJ,WAAA92Y,CAAY5T,EAAMvG,GAChB0Z,KAAKnT,UAAO,EACZmT,KAAKtZ,WAAQ,EACbsZ,KAAKpZ,YAAS,EACdoZ,KAAKhW,SAAM,EACXgW,KAAK9V,YAAS,EACd8V,KAAK/V,WAAQ,EACb+V,KAAK7V,UAAO,EACZ,MAAM+uqB,EAAsB9B,EAAuB9wqB,GAC7C8yqB,EAAgBH,EAAiBC,GACvCl5pB,KAAKnT,KAAO,IAAKA,GAEjBmT,KAAKtZ,MAAQmG,EAAKnG,MAClBsZ,KAAKpZ,OAASiG,EAAKjG,OAEnB,IAAK,MAAOsL,EAAM7H,EAAMgvqB,KAAoB30nB,EAC1C,IAAK,MAAMl6C,KAAOH,EAChBP,OAAOwY,eAAetC,KAAMxV,EAAK,CAC/BqJ,IAAK,KACH,MAAMylqB,EAAiBD,EAAgBH,GACjCK,EAAsBH,EAAclnqB,GAAQonqB,EAClD,OAAOt5pB,KAAKnT,KAAKrC,GAAO+uqB,GAE1B7toB,YAAY,IAKlB5hC,OAAOwY,eAAetC,KAAM,OAAQ,CAClC0rB,YAAY,GAEhB,EAIF,MAAM8toB,EACJ,WAAA/4pB,CAAY1S,GACViS,KAAKjS,YAAS,EACdiS,KAAKg0B,UAAY,GAEjBh0B,KAAKyvQ,UAAY,KACfzvQ,KAAKg0B,UAAUhiC,QAAQ6hC,IACrB,IAAI4loB,EAEJ,OAAuC,OAA/BA,EAAez5pB,KAAKjS,aAAkB,EAAS0rqB,EAAathqB,uBAAuB07B,MAI/F7zB,KAAKjS,OAASA,CAChB,CAEA,GAAAuF,CAAIyhG,EAAW72C,EAAStuD,GACtB,IAAI8pqB,EAE6B,OAAhCA,EAAgB15pB,KAAKjS,SAA2B2rqB,EAAcxhqB,iBAAiB68F,EAAW72C,EAAStuD,GACpGoQ,KAAKg0B,UAAUlgC,KAAK,CAACihG,EAAW72C,EAAStuD,GAC3C,EAgBF,SAAS+pqB,EAAoBn/nB,EAAOo/nB,GAClC,MAAMh5d,EAAKp7M,KAAKM,IAAI00C,EAAMj0C,GACpBs6M,EAAKr7M,KAAKM,IAAI00C,EAAM72C,GAE1B,MAA2B,iBAAhBi2qB,EACFp0qB,KAAK0vB,KAAK0rL,GAAM,EAAIC,GAAM,GAAK+4d,EAGpC,MAAOA,GAAe,MAAOA,EACxBh5d,EAAKg5d,EAAYrzqB,GAAKs6M,EAAK+4d,EAAYj2qB,EAG5C,MAAOi2qB,EACFh5d,EAAKg5d,EAAYrzqB,EAGtB,MAAOqzqB,GACF/4d,EAAK+4d,EAAYj2qB,CAI5B,CAEA,IAAIk2qB,GAmBAC,GAPJ,SAASntiB,GAAexgH,GACtBA,EAAMwgH,gBACR,CACA,SAAS22I,GAAgBn3P,GACvBA,EAAMm3P,iBACR,EAfA,SAAWu2Z,GACTA,EAAiB,MAAI,QACrBA,EAAqB,UAAI,YACzBA,EAAmB,QAAI,UACvBA,EAAuB,YAAI,cAC3BA,EAAkB,OAAI,SACtBA,EAA2B,gBAAI,kBAC/BA,EAA4B,iBAAI,kBACjC,CARD,CAQGA,KAAcA,GAAY,CAAC,IAW9B,SAAWC,GACTA,EAAoB,MAAI,QACxBA,EAAmB,KAAI,YACvBA,EAAoB,MAAI,aACxBA,EAAmB,KAAI,YACvBA,EAAiB,GAAI,UACrBA,EAAkB,IAAI,SACtBA,EAAoB,MAAI,QACxBA,EAAkB,IAAI,KACvB,CATD,CASGA,KAAiBA,GAAe,CAAC,IAEpC,MAAMC,GAAuB,CAC3BttqB,MAAO,CAACqtqB,GAAaE,MAAOF,GAAaG,OACzCt3nB,OAAQ,CAACm3nB,GAAa9xO,KACtBt7b,IAAK,CAACotqB,GAAaE,MAAOF,GAAaG,MAAOH,GAAanrF,MAEvDurF,GAAkC,CAAC/tpB,EAAO/gB,KAC9C,IAAI,mBACF+uqB,GACE/uqB,EAEJ,OAAQ+gB,EAAMqiF,MACZ,KAAKsrkB,GAAalgf,MAChB,MAAO,IAAKugf,EACV5zqB,EAAG4zqB,EAAmB5zqB,EAAI,IAG9B,KAAKuzqB,GAAangf,KAChB,MAAO,IAAKwgf,EACV5zqB,EAAG4zqB,EAAmB5zqB,EAAI,IAG9B,KAAKuzqB,GAAa3xO,KAChB,MAAO,IAAKgyO,EACVx2qB,EAAGw2qB,EAAmBx2qB,EAAI,IAG9B,KAAKm2qB,GAAa5xO,GAChB,MAAO,IAAKiyO,EACVx2qB,EAAGw2qB,EAAmBx2qB,EAAI,MAOlC,MAAMy2qB,GACJ,WAAA35pB,CAAY2xB,GACVpyB,KAAKoyB,WAAQ,EACbpyB,KAAKq6pB,mBAAoB,EACzBr6pB,KAAKs6pB,0BAAuB,EAC5Bt6pB,KAAKg0B,eAAY,EACjBh0B,KAAKu6pB,qBAAkB,EACvBv6pB,KAAKoyB,MAAQA,EACb,MACEjmB,OAAO,OACLpe,IAEAqkC,EACJpyB,KAAKoyB,MAAQA,EACbpyB,KAAKg0B,UAAY,IAAIwloB,GAAU,QAAiBzrqB,IAChDiS,KAAKu6pB,gBAAkB,IAAIf,GAAU,QAAUzrqB,IAC/CiS,KAAKw6pB,cAAgBx6pB,KAAKw6pB,cAAc9+mB,KAAK17C,MAC7CA,KAAKy6pB,aAAez6pB,KAAKy6pB,aAAa/+mB,KAAK17C,MAC3CA,KAAKgnD,QACP,CAEA,MAAAA,GACEhnD,KAAK06pB,cACL16pB,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUc,OAAQ36pB,KAAKy6pB,cAChDz6pB,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUe,iBAAkB56pB,KAAKy6pB,cAC1DhzpB,WAAW,IAAMzH,KAAKg0B,UAAU1gC,IAAIumqB,GAAUgB,QAAS76pB,KAAKw6pB,eAC9D,CAEA,WAAAE,GACE,MAAM,WACJI,EAAU,QACVr0iB,GACEzmH,KAAKoyB,MACHrrC,EAAO+zqB,EAAW/zqB,KAAK8O,QAEzB9O,GACFoyqB,EAAuBpyqB,GAGzB0/H,EAAQiuiB,EACV,CAEA,aAAA8F,CAAcrupB,GACZ,IAAI,QAAgBA,GAAQ,CAC1B,MAAM,OACJ43B,EAAM,QACN5a,EAAO,QACPv5B,GACEoQ,KAAKoyB,OACH,cACJ2ooB,EAAgBhB,GAAoB,iBACpCiB,EAAmBd,GAA+B,eAClDe,EAAiB,UACfrrqB,GACE,KACJ4+F,GACEriF,EAEJ,GAAI4upB,EAAcruqB,IAAIipC,SAAS64D,GAE7B,YADAxuF,KAAKk7pB,UAAU/upB,GAIjB,GAAI4upB,EAAcp4nB,OAAOhN,SAAS64D,GAEhC,YADAxuF,KAAKy6pB,aAAatupB,GAIpB,MAAM,cACJmppB,GACEnsoB,EAAQtzB,QACNskqB,EAAqB7E,EAAgB,CACzC/uqB,EAAG+uqB,EAAcnrqB,KACjBxG,EAAG2xqB,EAActrqB,KACf0qqB,EAEC10pB,KAAKs6pB,uBACRt6pB,KAAKs6pB,qBAAuBH,GAG9B,MAAMgB,EAAiBH,EAAiB7upB,EAAO,CAC7C43B,SACA5a,QAASA,EAAQtzB,QACjBskqB,uBAGF,GAAIgB,EAAgB,CAClB,MAAMC,GAAmB,QAASD,EAAgBhB,GAC5CkB,EAAc,CAClB90qB,EAAG,EACH5C,EAAG,IAEC,oBACJu1qB,GACE/voB,EAAQtzB,QAEZ,IAAK,MAAM6iqB,KAAmBQ,EAAqB,CACjD,MAAMnqqB,EAAYod,EAAMqiF,MAClB,MACJgzI,EAAK,QACL+2b,EAAO,OACPF,EAAM,SACNC,EAAQ,UACRF,EAAS,UACTD,GACEF,EAAkBS,GAChB4C,EAAoBtC,EAAqBN,GACzC6C,EAAqB,CACzBh1qB,EAAGf,KAAKkE,IAAIqF,IAAc+qqB,GAAalgf,MAAQ0hf,EAAkBrxqB,MAAQqxqB,EAAkB50qB,MAAQ,EAAI40qB,EAAkBrxqB,MAAOzE,KAAKmE,IAAIoF,IAAc+qqB,GAAalgf,MAAQ0hf,EAAkBnxqB,KAAOmxqB,EAAkBnxqB,KAAOmxqB,EAAkB50qB,MAAQ,EAAGy0qB,EAAe50qB,IAC1Q5C,EAAG6B,KAAKkE,IAAIqF,IAAc+qqB,GAAa3xO,KAAOmzO,EAAkBpxqB,OAASoxqB,EAAkB10qB,OAAS,EAAI00qB,EAAkBpxqB,OAAQ1E,KAAKmE,IAAIoF,IAAc+qqB,GAAa3xO,KAAOmzO,EAAkBtxqB,IAAMsxqB,EAAkBtxqB,IAAMsxqB,EAAkB10qB,OAAS,EAAGu0qB,EAAex3qB,KAEtQ63qB,EAAazsqB,IAAc+qqB,GAAalgf,QAAU2+e,GAAWxpqB,IAAc+qqB,GAAangf,OAAS0+e,EACjGoD,EAAa1sqB,IAAc+qqB,GAAa3xO,OAASmwO,GAAYvpqB,IAAc+qqB,GAAa5xO,KAAO1mN,EAErG,GAAIg6b,GAAcD,EAAmBh1qB,IAAM40qB,EAAe50qB,EAAG,CAC3D,MAAMm1qB,EAAuBhD,EAAgB3rqB,WAAaquqB,EAAiB70qB,EACrEo1qB,EAA4B5sqB,IAAc+qqB,GAAalgf,OAAS8hf,GAAwBtD,EAAU7xqB,GAAKwI,IAAc+qqB,GAAangf,MAAQ+hf,GAAwBvD,EAAU5xqB,EAElL,GAAIo1qB,IAA8BP,EAAiBz3qB,EAOjD,YAJA+0qB,EAAgBhoiB,SAAS,CACvBvmI,KAAMuxqB,EACNx3c,SAAU+2c,IAMZI,EAAY90qB,EADVo1qB,EACcjD,EAAgB3rqB,WAAa2uqB,EAE7B3sqB,IAAc+qqB,GAAalgf,MAAQ8+e,EAAgB3rqB,WAAaqrqB,EAAU7xqB,EAAImyqB,EAAgB3rqB,WAAaorqB,EAAU5xqB,EAGnI80qB,EAAY90qB,GACdmyqB,EAAgB7vZ,SAAS,CACvB1+Q,MAAOkxqB,EAAY90qB,EACnB29N,SAAU+2c,IAId,KACF,CAAO,GAAIQ,GAAcF,EAAmB53qB,IAAMw3qB,EAAex3qB,EAAG,CAClE,MAAM+3qB,EAAuBhD,EAAgBzrqB,UAAYmuqB,EAAiBz3qB,EACpEg4qB,EAA4B5sqB,IAAc+qqB,GAAa3xO,MAAQuzO,GAAwBtD,EAAUz0qB,GAAKoL,IAAc+qqB,GAAa5xO,IAAMwzO,GAAwBvD,EAAUx0qB,EAE/K,GAAIg4qB,IAA8BP,EAAiB70qB,EAOjD,YAJAmyqB,EAAgBhoiB,SAAS,CACvB1mI,IAAK0xqB,EACLx3c,SAAU+2c,IAMZI,EAAY13qB,EADVg4qB,EACcjD,EAAgBzrqB,UAAYyuqB,EAE5B3sqB,IAAc+qqB,GAAa3xO,KAAOuwO,EAAgBzrqB,UAAYmrqB,EAAUz0qB,EAAI+0qB,EAAgBzrqB,UAAYkrqB,EAAUx0qB,EAGhI03qB,EAAY13qB,GACd+0qB,EAAgB7vZ,SAAS,CACvB7+Q,KAAMqxqB,EAAY13qB,EAClBugO,SAAU+2c,IAId,KACF,CACF,CAEAj7pB,KAAKskoB,WAAWn4nB,GAAO,SAAI,QAASgvpB,EAAgBn7pB,KAAKs6pB,sBAAuBe,GAClF,CACF,CACF,CAEA,UAAA/2B,CAAWn4nB,EAAO2xL,GAChB,MAAM,OACJ89d,GACE57pB,KAAKoyB,MACTjmB,EAAMwgH,iBACNiviB,EAAO99d,EACT,CAEA,SAAAo9d,CAAU/upB,GACR,MAAM,MACJy/G,GACE5rH,KAAKoyB,MACTjmB,EAAMwgH,iBACN3sH,KAAKinD,SACL2kE,GACF,CAEA,YAAA6uiB,CAAatupB,GACX,MAAM,SACJ2qnB,GACE92nB,KAAKoyB,MACTjmB,EAAMwgH,iBACN3sH,KAAKinD,SACL6vkB,GACF,CAEA,MAAA7vkB,GACEjnD,KAAKg0B,UAAUy7O,YACfzvQ,KAAKu6pB,gBAAgB9qZ,WACvB,EAmCF,SAASosZ,GAAqBrqjB,GAC5B,OAAOvqB,QAAQuqB,GAAc,aAAcA,EAC7C,CAEA,SAASsqjB,GAAkBtqjB,GACzB,OAAOvqB,QAAQuqB,GAAc,UAAWA,EAC1C,CAtCA4ojB,GAAe2B,WAAa,CAAC,CAC3BhnkB,UAAW,YACX72C,QAAS,CAAC/xC,EAAO/gB,EAAMT,KACrB,IAAI,cACFowqB,EAAgBhB,GAAoB,aACpCiC,GACE5wqB,GACA,OACF24C,GACEp5C,EACJ,MAAM,KACJ6jG,GACEriF,EAAM2tU,YAEV,GAAIihV,EAActuqB,MAAMkpC,SAAS64D,GAAO,CACtC,MAAMytkB,EAAYl4nB,EAAOm4nB,cAAcrmqB,QAEvC,QAAIomqB,GAAa9vpB,EAAMpe,SAAWkuqB,IAIlC9vpB,EAAMwgH,iBACU,MAAhBqviB,GAAgCA,EAAa,CAC3C7vpB,MAAOA,EAAM2tU,cAER,GACT,CAEA,OAAO,KAYX,MAAMqiV,GACJ,WAAA17pB,CAAY2xB,EAAO7I,EAAQ6yoB,GACzB,IAAIC,OAEmB,IAAnBD,IACFA,EArWN,SAAgCruqB,GAM9B,MAAM,YACJuuqB,IACE,QAAUvuqB,GACd,OAAOA,aAAkBuuqB,EAAcvuqB,GAAS,QAAiBA,EACnE,CA2VuBwuqB,CAAuBnqoB,EAAMjmB,MAAMpe,SAGtDiS,KAAKoyB,WAAQ,EACbpyB,KAAKupB,YAAS,EACdvpB,KAAKq6pB,mBAAoB,EACzBr6pB,KAAKvX,cAAW,EAChBuX,KAAKkiE,WAAY,EACjBliE,KAAKw8pB,wBAAqB,EAC1Bx8pB,KAAK6uQ,UAAY,KACjB7uQ,KAAKg0B,eAAY,EACjBh0B,KAAKy8pB,uBAAoB,EACzBz8pB,KAAKu6pB,qBAAkB,EACvBv6pB,KAAKoyB,MAAQA,EACbpyB,KAAKupB,OAASA,EACd,MAAM,MACJpd,GACEimB,GACE,OACJrkC,GACEoe,EACJnM,KAAKoyB,MAAQA,EACbpyB,KAAKupB,OAASA,EACdvpB,KAAKvX,UAAW,QAAiBsF,GACjCiS,KAAKy8pB,kBAAoB,IAAIjD,EAAUx5pB,KAAKvX,UAC5CuX,KAAKg0B,UAAY,IAAIwloB,EAAU4C,GAC/Bp8pB,KAAKu6pB,gBAAkB,IAAIf,GAAU,QAAUzrqB,IAC/CiS,KAAKw8pB,mBAA4E,OAAtDH,GAAuB,QAAoBlwpB,IAAkBkwpB,EAAuB3H,EAC/G10pB,KAAK06pB,YAAc16pB,KAAK06pB,YAAYh/mB,KAAK17C,MACzCA,KAAKskoB,WAAatkoB,KAAKskoB,WAAW5olB,KAAK17C,MACvCA,KAAKk7pB,UAAYl7pB,KAAKk7pB,UAAUx/mB,KAAK17C,MACrCA,KAAKy6pB,aAAez6pB,KAAKy6pB,aAAa/+mB,KAAK17C,MAC3CA,KAAK08pB,cAAgB18pB,KAAK08pB,cAAchhnB,KAAK17C,MAC7CA,KAAK28pB,oBAAsB38pB,KAAK28pB,oBAAoBjhnB,KAAK17C,MACzDA,KAAKgnD,QACP,CAEA,MAAAA,GACE,MAAM,OACJz9B,EACA6I,OACExiC,SAAS,qBACPgtqB,EAAoB,2BACpBC,KAGF78pB,KAgBJ,GAfAA,KAAKg0B,UAAU1gC,IAAIi2B,EAAO8mB,KAAK98C,KAAMyM,KAAKskoB,WAAY,CACpDj4oB,SAAS,IAEX2T,KAAKg0B,UAAU1gC,IAAIi2B,EAAO78B,IAAI6G,KAAMyM,KAAKk7pB,WAErC3xoB,EAAOoZ,QACT3iC,KAAKg0B,UAAU1gC,IAAIi2B,EAAOoZ,OAAOpvC,KAAMyM,KAAKy6pB,cAG9Cz6pB,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUc,OAAQ36pB,KAAKy6pB,cAChDz6pB,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUiD,UAAWnwiB,IAC9C3sH,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUe,iBAAkB56pB,KAAKy6pB,cAC1Dz6pB,KAAKu6pB,gBAAgBjnqB,IAAIumqB,GAAUkD,YAAapwiB,IAChD3sH,KAAKy8pB,kBAAkBnpqB,IAAIumqB,GAAUgB,QAAS76pB,KAAK08pB,eAE/CE,EAAsB,CACxB,GAAkC,MAA9BC,GAAsCA,EAA2B,CACnE1wpB,MAAOnM,KAAKoyB,MAAMjmB,MAClB2upB,WAAY96pB,KAAKoyB,MAAM0ooB,WACvBlrqB,QAASoQ,KAAKoyB,MAAMxiC,UAEpB,OAAOoQ,KAAK06pB,cAGd,GAAIoB,GAAkBc,GAGpB,OAFA58pB,KAAK6uQ,UAAYpnQ,WAAWzH,KAAK06pB,YAAakC,EAAqBn5nB,YACnEzjC,KAAKg9pB,cAAcJ,GAIrB,GAAIf,GAAqBe,GAEvB,YADA58pB,KAAKg9pB,cAAcJ,EAGvB,CAEA58pB,KAAK06pB,aACP,CAEA,MAAAzzmB,GACEjnD,KAAKg0B,UAAUy7O,YACfzvQ,KAAKu6pB,gBAAgB9qZ,YAGrBhoQ,WAAWzH,KAAKy8pB,kBAAkBhtZ,UAAW,IAEtB,OAAnBzvQ,KAAK6uQ,YACPlnQ,aAAa3H,KAAK6uQ,WAClB7uQ,KAAK6uQ,UAAY,KAErB,CAEA,aAAAmuZ,CAAcxrjB,EAAY5sH,GACxB,MAAM,OACJm/C,EAAM,UACNk5nB,GACEj9pB,KAAKoyB,MACT6qoB,EAAUl5nB,EAAQytE,EAAYxxG,KAAKw8pB,mBAAoB53qB,EACzD,CAEA,WAAA81qB,GACE,MAAM,mBACJ8B,GACEx8pB,MACE,QACJymH,GACEzmH,KAAKoyB,MAELoqoB,IACFx8pB,KAAKkiE,WAAY,EAEjBliE,KAAKy8pB,kBAAkBnpqB,IAAIumqB,GAAUqD,MAAO55Z,GAAiB,CAC3DvvJ,SAAS,IAGX/zG,KAAK28pB,sBAEL38pB,KAAKy8pB,kBAAkBnpqB,IAAIumqB,GAAUsD,gBAAiBn9pB,KAAK28pB,qBAC3Dl2iB,EAAQ+1iB,GAEZ,CAEA,UAAAl4B,CAAWn4nB,GACT,IAAIixpB,EAEJ,MAAM,UACJl7lB,EAAS,mBACTs6lB,EAAkB,MAClBpqoB,GACEpyB,MACE,OACJ47pB,EACAhsqB,SAAS,qBACPgtqB,IAEAxqoB,EAEJ,IAAKoqoB,EACH,OAGF,MAAM1+d,EAAsE,OAAvDs/d,GAAwB,QAAoBjxpB,IAAkBixpB,EAAwB1I,EACrGl6nB,GAAQ,QAASgioB,EAAoB1+d,GAE3C,IAAK57H,GAAa06lB,EAAsB,CACtC,GAAIf,GAAqBe,GAAuB,CAC9C,GAAsC,MAAlCA,EAAqBS,WAAqB1D,EAAoBn/nB,EAAOoioB,EAAqBS,WAC5F,OAAOr9pB,KAAKy6pB,eAGd,GAAId,EAAoBn/nB,EAAOoioB,EAAqBrkqB,UAClD,OAAOyH,KAAK06pB,aAEhB,CAEA,OAAIoB,GAAkBc,IAChBjD,EAAoBn/nB,EAAOoioB,EAAqBS,WAC3Cr9pB,KAAKy6pB,oBAIhBz6pB,KAAKg9pB,cAAcJ,EAAsBpioB,EAE3C,CAEIruB,EAAMssD,YACRtsD,EAAMwgH,iBAGRiviB,EAAO99d,EACT,CAEA,SAAAo9d,GACE,MAAM,QACJoC,EAAO,MACP1xiB,GACE5rH,KAAKoyB,MACTpyB,KAAKinD,SAEAjnD,KAAKkiE,WACRo7lB,EAAQt9pB,KAAKoyB,MAAM2R,QAGrB6nF,GACF,CAEA,YAAA6uiB,GACE,MAAM,QACJ6C,EAAO,SACPxmC,GACE92nB,KAAKoyB,MACTpyB,KAAKinD,SAEAjnD,KAAKkiE,WACRo7lB,EAAQt9pB,KAAKoyB,MAAM2R,QAGrB+ylB,GACF,CAEA,aAAA4lC,CAAcvwpB,GACRA,EAAMqiF,OAASsrkB,GAAa9xO,KAC9Bhob,KAAKy6pB,cAET,CAEA,mBAAAkC,GACE,IAAIY,EAEsD,OAAzDA,EAAwBv9pB,KAAKvX,SAAS0+b,iBAAmCo2O,EAAsB5kO,iBAClG,EAIF,MAAMpva,GAAS,CACboZ,OAAQ,CACNpvC,KAAM,iBAER88C,KAAM,CACJ98C,KAAM,eAER7G,IAAK,CACH6G,KAAM,cAGV,MAAMiqqB,WAAsBrB,GAC1B,WAAA17pB,CAAY2xB,GACV,MAAM,MACJjmB,GACEimB,EAGEgqoB,GAAiB,QAAiBjwpB,EAAMpe,QAC9CslD,MAAMjhB,EAAO7I,GAAQ6yoB,EACvB,EAGFoB,GAAczB,WAAa,CAAC,CAC1BhnkB,UAAW,gBACX72C,QAAS,CAAC9yD,EAAMT,KACd,IACEmvV,YAAa3tU,GACX/gB,GACA,aACF4wqB,GACErxqB,EAEJ,SAAKwhB,EAAMq6a,WAA8B,IAAjBr6a,EAAM+lR,SAId,MAAhB8pY,GAAgCA,EAAa,CAC3C7vpB,UAEK,OAIX,MAAMsxpB,GAAW,CACfptnB,KAAM,CACJ98C,KAAM,aAER7G,IAAK,CACH6G,KAAM,YAGV,IAAImqqB,IAEJ,SAAWA,GACTA,EAAYA,EAAwB,WAAI,GAAK,YAC9C,CAFD,CAEGA,KAAgBA,GAAc,CAAC,IAElC,cAA0BvB,GACxB,WAAA17pB,CAAY2xB,GACVihB,MAAMjhB,EAAOqroB,IAAU,QAAiBrroB,EAAMjmB,MAAMpe,QACtD,GAGUguqB,WAAa,CAAC,CACxBhnkB,UAAW,cACX72C,QAAS,CAAC9yD,EAAMT,KACd,IACEmvV,YAAa3tU,GACX/gB,GACA,aACF4wqB,GACErxqB,EAEJ,OAAIwhB,EAAM+lR,SAAWwrY,GAAYC,aAIjB,MAAhB3B,GAAgCA,EAAa,CAC3C7vpB,WAEK,MAIX,MAAMyxpB,GAAW,CACfj7nB,OAAQ,CACNpvC,KAAM,eAER88C,KAAM,CACJ98C,KAAM,aAER7G,IAAK,CACH6G,KAAM,aAiDV,IAAIsqqB,GAOAC,IArDJ,cAA0B3B,GACxB,WAAA17pB,CAAY2xB,GACVihB,MAAMjhB,EAAOwroB,GACf,CAEA,YAAOxuP,GAQL,OAJAjob,OAAO+Q,iBAAiB0lqB,GAASvtnB,KAAK98C,KAAMqc,EAAM,CAChDmkG,SAAS,EACT1nH,SAAS,IAEJ,WACLlF,OAAOgR,oBAAoBylqB,GAASvtnB,KAAK98C,KAAMqc,EACjD,EAGA,SAASA,IAAQ,CACnB,IAGUmspB,WAAa,CAAC,CACxBhnkB,UAAW,eACX72C,QAAS,CAAC9yD,EAAMT,KACd,IACEmvV,YAAa3tU,GACX/gB,GACA,aACF4wqB,GACErxqB,EACJ,MAAM,QACJyxC,GACEjwB,EAEJ,QAAIiwB,EAAQhoC,OAAS,IAIL,MAAhB4nqB,GAAgCA,EAAa,CAC3C7vpB,UAEK,OAMX,SAAW0xpB,GACTA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAAmC,cAAI,GAAK,eACjE,CAHD,CAGGA,KAAwBA,GAAsB,CAAC,IAIlD,SAAWC,GACTA,EAAeA,EAA0B,UAAI,GAAK,YAClDA,EAAeA,EAAkC,kBAAI,GAAK,mBAC3D,CAHD,CAGGA,KAAmBA,GAAiB,CAAC,IAgHxC,MAAMC,GAAsB,CAC1Bx3qB,EAAG,CACD,CAACwxqB,EAAUe,WAAW,EACtB,CAACf,EAAUgB,UAAU,GAEvBp1qB,EAAG,CACD,CAACo0qB,EAAUe,WAAW,EACtB,CAACf,EAAUgB,UAAU,IAgEzB,IAAIiF,GAQAC,IANJ,SAAWD,GACTA,EAAkBA,EAA0B,OAAI,GAAK,SACrDA,EAAkBA,EAAkC,eAAI,GAAK,iBAC7DA,EAAkBA,EAAiC,cAAI,GAAK,eAC7D,CAJD,CAIGA,KAAsBA,GAAoB,CAAC,IAI9C,SAAWC,GACTA,EAA8B,UAAI,WACnC,CAFD,CAEGA,KAAuBA,GAAqB,CAAC,IAEhD,MAAM3tpB,GAA4B,IAAItd,IAmHtC,SAASkrqB,GAAgBv4qB,EAAOw4qB,GAC9B,OAAO,QAAY1yd,GACZ9lN,EAID8lN,IAIwB,mBAAd0yd,EAA2BA,EAAUx4qB,GAASA,GAPnD,KAQR,CAACw4qB,EAAWx4qB,GACjB,CAsCA,SAASy4qB,GAAkBhzqB,GACzB,IAAI,SACF8jB,EAAQ,SACR8+B,GACE5iD,EACJ,MAAMizqB,GAAe,QAASnvpB,GACxBovpB,GAAiB,IAAA1+pB,SAAQ,KAC7B,GAAIouC,GAA8B,oBAAX7mD,aAA2D,IAA1BA,OAAO4+D,eAC7D,OAGF,MAAM,eACJA,GACE5+D,OACJ,OAAO,IAAI4+D,EAAes4mB,IAE5B,CAACrwnB,IAID,OAHA,IAAAnuC,WAAU,IACD,IAAwB,MAAlBy+pB,OAAyB,EAASA,EAAexzpB,aAC7D,CAACwzpB,IACGA,CACT,CAEA,SAASC,GAAej4qB,GACtB,OAAO,IAAIixZ,EAAKjW,EAAch7Y,GAAUA,EAC1C,CAEA,SAASk4qB,GAAQl4qB,EAASygd,EAAS03N,QACjB,IAAZ13N,IACFA,EAAUw3N,IAGZ,MAAO1xqB,EAAM6xqB,IAAW,IAAAp/pB,UAAS,MAEjC,SAASq/pB,IACPD,EAAQE,IACN,IAAKt4qB,EACH,OAAO,KAIP,IAAI8E,EADN,IAA4B,IAAxB9E,EAAQohE,YAKV,OAAoE,OAA5Dt8D,EAAsB,MAAfwzqB,EAAsBA,EAAcH,GAAwBrzqB,EAAO,KAGpF,MAAMyzqB,EAAU93N,EAAQzgd,GAExB,OAAIqjB,KAAKC,UAAUg1pB,KAAiBj1pB,KAAKC,UAAUi1pB,GAC1CD,EAGFC,GAEX,CAEA,MAAMC,EArFR,SAA6B1zqB,GAC3B,IAAI,SACF8jB,EAAQ,SACR8+B,GACE5iD,EACJ,MAAM2zqB,GAAkB,QAAS7vpB,GAC3B4vpB,GAAmB,IAAAl/pB,SAAQ,KAC/B,GAAIouC,GAA8B,oBAAX7mD,aAA6D,IAA5BA,OAAO89D,iBAC7D,OAGF,MAAM,iBACJA,GACE99D,OACJ,OAAO,IAAI89D,EAAiB85mB,IAC3B,CAACA,EAAiB/wnB,IAIrB,OAHA,IAAAnuC,WAAU,IACD,IAA0B,MAApBi/pB,OAA2B,EAASA,EAAiBh0pB,aACjE,CAACg0pB,IACGA,CACT,CAiE2BE,CAAoB,CAC3C,QAAA9vpB,CAASkmJ,GACP,GAAK9uK,EAIL,IAAK,MAAMuvK,KAAUT,EAAS,CAC5B,MAAM,KACJplJ,EAAI,OACJjiB,GACE8nK,EAEJ,GAAa,cAAT7lJ,GAAwBjiB,aAAkBxG,aAAewG,EAAOvG,SAASlB,GAAU,CACrFq4qB,IACA,KACF,CACF,CACF,IAGIL,EAAiBF,GAAkB,CACvClvpB,SAAUyvpB,IAgBZ,OAdA,QAA0B,KACxBA,IAEIr4qB,GACgB,MAAlBg4qB,GAAkCA,EAAeh5mB,QAAQh/D,GACrC,MAApBw4qB,GAAoCA,EAAiBx5mB,QAAQ78D,SAASiF,KAAM,CAC1E63D,WAAW,EACXC,SAAS,MAGO,MAAlB84mB,GAAkCA,EAAexzpB,aAC7B,MAApBg0pB,GAAoCA,EAAiBh0pB,eAEtD,CAACxkB,IACGuG,CACT,CAOA,MAAMoyqB,GAAiB,GAkFvB,SAASC,GAAsB9F,EAAe57b,QACvB,IAAjBA,IACFA,EAAe,IAGjB,MAAM2hc,GAAuB,IAAAlgqB,QAAO,MAgBpC,OAfA,IAAAY,WAAU,KACRs/pB,EAAqBtpqB,QAAU,MAEjC2nO,IACA,IAAA39N,WAAU,KACR,MAAMu/pB,EAAmBhG,IAAkB1E,EAEvC0K,IAAqBD,EAAqBtpqB,UAC5CspqB,EAAqBtpqB,QAAUujqB,IAG5BgG,GAAoBD,EAAqBtpqB,UAC5CspqB,EAAqBtpqB,QAAU,OAEhC,CAACujqB,IACG+F,EAAqBtpqB,SAAU,QAASujqB,EAAe+F,EAAqBtpqB,SAAW6+pB,CAChG,CA8CA,SAAS2K,GAAc/4qB,GACrB,OAAO,IAAAsZ,SAAQ,IAAMtZ,EA/rDvB,SAA6BA,GAC3B,MAAMI,EAAQJ,EAAQsnG,WAChBhnG,EAASN,EAAQwnG,YACvB,MAAO,CACL9jG,IAAK,EACLG,KAAM,EACNF,MAAOvD,EACPwD,OAAQtD,EACRF,QACAE,SAEJ,CAorDiC04qB,CAAoBh5qB,GAAW,KAAM,CAACA,GACvE,CAEA,MAAMi5qB,GAAiB,GA+BvB,SAASC,GAAkBz4qB,GACzB,IAAKA,EACH,OAAO,KAGT,GAAIA,EAAKywH,SAASpjH,OAAS,EACzB,OAAOrN,EAGT,MAAM6hI,EAAa7hI,EAAKywH,SAAS,GACjC,OAAO,QAAcoR,GAAcA,EAAa7hI,CAClD,CA4CA,MAAM04qB,GAAiB,CAAC,CACtBjL,OAAQgJ,GACR5tqB,QAAS,CAAC,GACT,CACD4kqB,OAAQ4F,GACRxqqB,QAAS,CAAC,IAEN8vqB,GAAc,CAClB7pqB,QAAS,CAAC,GAEN8pqB,GAAgC,CACpCl0V,UAAW,CACTs7H,QAASowN,GAEX9+H,UAAW,CACTtxF,QAASowN,EACTzlqB,SAAUssqB,GAAkB4B,cAC5BvqS,UAAW4oS,GAAmB4B,WAEhCC,YAAa,CACX/4N,QAASzlE,IAIb,MAAMy+R,WAA+B/sqB,IACnC,GAAAa,CAAIkK,GACF,IAAIiiqB,EAEJ,OAAa,MAANjiqB,GAA6C,OAA/BiiqB,EAAa3snB,MAAMx/C,IAAIkK,IAAeiiqB,OAAyBlpqB,CACtF,CAEA,OAAAgtN,GACE,OAAOxvN,MAAMuwB,KAAK7kB,KAAK4oB,SACzB,CAEA,UAAAq3oB,GACE,OAAOjgqB,KAAK8jN,UAAU7yN,OAAO7F,IAC3B,IAAI,SACF4iD,GACE5iD,EACJ,OAAQ4iD,GAEZ,CAEA,UAAAkynB,CAAWniqB,GACT,IAAIoiqB,EAAuBC,EAE3B,OAAyG,OAAjGD,EAAsD,OAA7BC,EAAYpgqB,KAAKnM,IAAIkK,SAAe,EAASqiqB,EAAUr5qB,KAAK8O,SAAmBsqqB,OAAwBrpqB,CAC1I,EAIF,MAAMupqB,GAAuB,CAC3BC,eAAgB,KAChBv8nB,OAAQ,KACR+2nB,WAAY,KACZyF,eAAgB,KAChBrL,WAAY,KACZsL,kBAAmB,KACnBC,eAA6B,IAAIztqB,IACjCuiqB,eAA6B,IAAIviqB,IACjCwiqB,oBAAkC,IAAIuK,GACtCzM,KAAM,KACNwM,YAAa,CACX39N,QAAS,CACPtsc,QAAS,MAEXhJ,KAAM,KACNo4iB,OAAQr1hB,GAEVsppB,oBAAqB,GACrBwH,wBAAyB,GACzBC,uBAAwBhB,GACxBiB,2BAA4BhxpB,EAC5BohX,WAAY,KACZ6vS,oBAAoB,GAEhBC,GAAyB,CAC7BR,eAAgB,KAChBvE,WAAY,GACZh4nB,OAAQ,KACRw8nB,eAAgB,KAChBQ,kBAAmB,CACjBt1V,UAAW,IAEb/3O,SAAU9jF,EACV6wpB,eAA6B,IAAIztqB,IACjCsgqB,KAAM,KACNsN,2BAA4BhxpB,GAExBoxpB,IAA+B,IAAA/toB,eAAc6toB,IAC7CG,IAA6B,IAAAhuoB,eAAcotoB,IAEjD,SAASa,KACP,MAAO,CACLz1V,UAAW,CACT1nS,OAAQ,KACRy4nB,mBAAoB,CAClBj2qB,EAAG,EACH5C,EAAG,GAELwkJ,MAAO,IAAIn1I,IACXi7B,UAAW,CACT1nC,EAAG,EACH5C,EAAG,IAGP00iB,UAAW,CACTvgB,WAAY,IAAIioJ,IAGtB,CACA,SAASz8c,GAAQ3zN,EAAOikG,GACtB,OAAQA,EAAO5jF,MACb,KAAKskpB,EAAOwI,UACV,MAAO,IAAKntqB,EACV87U,UAAW,IAAK97U,EAAM87U,UACpB+wV,mBAAoB5okB,EAAO4okB,mBAC3Bz4nB,OAAQ6vD,EAAO7vD,SAIrB,KAAKuwnB,EAAO6M,SACV,OAA8B,MAA1BxxqB,EAAM87U,UAAU1nS,OACXp0C,EAGF,IAAKA,EACV87U,UAAW,IAAK97U,EAAM87U,UACpBx9S,UAAW,CACT1nC,EAAGqtG,EAAOkqG,YAAYv3M,EAAIoJ,EAAM87U,UAAU+wV,mBAAmBj2qB,EAC7D5C,EAAGiwG,EAAOkqG,YAAYn6M,EAAIgM,EAAM87U,UAAU+wV,mBAAmB74qB,KAKrE,KAAK2wqB,EAAO8M,QACZ,KAAK9M,EAAO+M,WACV,MAAO,IAAK1xqB,EACV87U,UAAW,IAAK97U,EAAM87U,UACpB1nS,OAAQ,KACRy4nB,mBAAoB,CAClBj2qB,EAAG,EACH5C,EAAG,GAELsqC,UAAW,CACT1nC,EAAG,EACH5C,EAAG,KAKX,KAAK2wqB,EAAOgN,kBACV,CACE,MAAM,QACJh7qB,GACEstG,GACE,GACJ71F,GACEzX,EACEwxhB,EAAa,IAAIioJ,GAAuBpwqB,EAAM0oiB,UAAUvgB,YAE9D,OADAA,EAAW/jhB,IAAIgK,EAAIzX,GACZ,IAAKqJ,EACV0oiB,UAAW,IAAK1oiB,EAAM0oiB,UACpBvgB,cAGN,CAEF,KAAKw8I,EAAOiN,qBACV,CACE,MAAM,GACJxjqB,EAAE,IACFvT,EAAG,SACHwjD,GACE4lD,EACEttG,EAAUqJ,EAAM0oiB,UAAUvgB,WAAWjkhB,IAAIkK,GAE/C,IAAKzX,GAAWkE,IAAQlE,EAAQkE,IAC9B,OAAOmF,EAGT,MAAMmohB,EAAa,IAAIioJ,GAAuBpwqB,EAAM0oiB,UAAUvgB,YAI9D,OAHAA,EAAW/jhB,IAAIgK,EAAI,IAAKzX,EACtB0nD,aAEK,IAAKr+C,EACV0oiB,UAAW,IAAK1oiB,EAAM0oiB,UACpBvgB,cAGN,CAEF,KAAKw8I,EAAOkN,oBACV,CACE,MAAM,GACJzjqB,EAAE,IACFvT,GACEopG,EACEttG,EAAUqJ,EAAM0oiB,UAAUvgB,WAAWjkhB,IAAIkK,GAE/C,IAAKzX,GAAWkE,IAAQlE,EAAQkE,IAC9B,OAAOmF,EAGT,MAAMmohB,EAAa,IAAIioJ,GAAuBpwqB,EAAM0oiB,UAAUvgB,YAE9D,OADAA,EAAWrhf,OAAO14B,GACX,IAAKpO,EACV0oiB,UAAW,IAAK1oiB,EAAM0oiB,UACpBvgB,cAGN,CAEF,QAEI,OAAOnohB,EAGf,CAEA,SAAS8xqB,GAAar2qB,GACpB,IAAI,SACF4iD,GACE5iD,EACJ,MAAM,OACJ24C,EAAM,eACNu8nB,EAAc,eACdG,IACE,IAAA12b,YAAWi3b,IACTU,GAAyB,QAAYpB,GACrCqB,GAAmB,QAAsB,MAAV59nB,OAAiB,EAASA,EAAOhmC,IAgDtE,OA9CA,IAAA8B,WAAU,KACR,IAAImuC,IAICsynB,GAAkBoB,GAA8C,MAApBC,EAA0B,CACzE,KAAK,QAAgBD,GACnB,OAGF,GAAIj5qB,SAAS6wb,gBAAkBooP,EAAuB3zqB,OAEpD,OAGF,MAAM6zqB,EAAgBnB,EAAe5sqB,IAAI8tqB,GAEzC,IAAKC,EACH,OAGF,MAAM,cACJ1F,EAAa,KACbn1qB,GACE66qB,EAEJ,IAAK1F,EAAcrmqB,UAAY9O,EAAK8O,QAClC,OAGFsZ,sBAAsB,KACpB,IAAK,MAAM7oB,IAAW,CAAC41qB,EAAcrmqB,QAAS9O,EAAK8O,SAAU,CAC3D,IAAKvP,EACH,SAGF,MAAMu7qB,GAAgB,QAAuBv7qB,GAE7C,GAAIu7qB,EAAe,CACjBA,EAAc7wkB,QACd,KACF,CACF,GAEJ,GACC,CAACsvkB,EAAgBtynB,EAAUyynB,EAAgBkB,EAAkBD,IACzD,IACT,CAEA,SAASI,GAAehvqB,EAAW1H,GACjC,IAAI,UACFhC,KACGiL,GACDjJ,EACJ,OAAoB,MAAb0H,GAAqBA,EAAUsB,OAAStB,EAAUxI,OAAO,CAACo1N,EAAarsN,IACrEA,EAAS,CACdjK,UAAWs2N,KACRrrN,IAEJjL,GAAaA,CAClB,CAkFA,MAAM24qB,IAAsC,IAAA9uoB,eAAc,IAAKyhoB,EAC7D30Q,OAAQ,EACRC,OAAQ,IAEV,IAAIxwR,IAEJ,SAAWA,GACTA,EAAOA,EAAsB,cAAI,GAAK,gBACtCA,EAAOA,EAAqB,aAAI,GAAK,eACrCA,EAAOA,EAAoB,YAAI,GAAK,aACrC,CAJD,CAIGA,KAAWA,GAAS,CAAC,IAExB,MAAMwyiB,IAA0B,IAAAx6iB,MAAK,SAAoBp8H,GACvD,IAAI62qB,EAAuBC,EAAuBC,EAAmBC,EAErE,IAAI,GACFrkqB,EAAE,cACFskqB,EAAa,WACbC,GAAa,EAAI,SACjB9qjB,EAAQ,QACRqkR,EAAU4jS,GAAc,mBACxB8C,EAAqBnM,EAAgB,UACrCoM,EAAS,UACT1vqB,KACGs/B,GACDhnC,EACJ,MAAMskM,GAAQ,IAAAmvJ,YAAWv7H,QAASxsN,EAAWoqqB,KACtCvxqB,EAAO+jG,GAAYg8F,GACnB+ye,EAAsBC,GAnyF/B,WACE,MAAO1uoB,IAAa,IAAA10B,UAAS,IAAM,IAAIpM,KACjCghqB,GAAmB,IAAAh1pB,aAAY20B,IACnCG,EAAU1gC,IAAIugC,GACP,IAAMG,EAAUyC,OAAO5C,IAC7B,CAACG,IAYJ,MAAO,EAXU,IAAA90B,aAAY9T,IAC3B,IAAI,KACF4kB,EAAI,MACJ7D,GACE/gB,EACJ4oC,EAAUhiC,QAAQ6hC,IAChB,IAAI8uoB,EAEJ,OAA4C,OAApCA,EAAiB9uoB,EAAS7jB,SAAiB,EAAS2ypB,EAAetiqB,KAAKwzB,EAAU1nB,MAE3F,CAAC6nB,IACckgoB,EACpB,CAixF0D0O,IACjDz1iB,EAAQ01iB,IAAa,IAAAvjqB,UAASkwH,GAAOsziB,eACtC3ojB,EAAgBgT,IAAWqC,GAAOuziB,aAEtCt3V,WACE1nS,OAAQ8vd,EACR1rX,MAAOs4hB,EAAc,UACrBxyoB,GAEFoqgB,WACEvgB,WAAY09I,IAEZ7lqB,EACE5I,EAAmB,MAAZ8sgB,EAAmB4sK,EAAe5sqB,IAAIgggB,GAAY,KACzDmvK,GAAc,IAAA/jqB,QAAO,CACzBwiC,QAAS,KACTwhoB,WAAY,OAERl/nB,GAAS,IAAAnkC,SAAQ,KACrB,IAAIsjqB,EAEJ,OAAmB,MAAZrvK,EAAmB,CACxB91f,GAAI81f,EAEJ99f,KAA0D,OAAnDmtqB,EAAqB,MAARn8qB,OAAe,EAASA,EAAKgP,MAAgBmtqB,EAAaxD,GAC9E7yqB,KAAMm2qB,GACJ,MACH,CAACnvK,EAAU9sgB,IACRo8qB,GAAY,IAAAlkqB,QAAO,OAClBmkqB,EAAcC,IAAmB,IAAA/jqB,UAAS,OAC1CghqB,EAAgBgD,KAAqB,IAAAhkqB,UAAS,MAC/CikqB,IAAc,QAAenxoB,EAAOtoC,OAAO8+B,OAAOwJ,IAClDoxoB,IAAyB,QAAY,iBAAkBzlqB,GACvD0lqB,IAA6B,IAAA7jqB,SAAQ,IAAM41pB,EAAoByK,aAAc,CAACzK,IAC9EmL,IA9I2B5hqB,GA8IwByjqB,GA7IlD,IAAA5iqB,SAAQ,KAAM,CACnB6rU,UAAW,IAAKk0V,GAA8Bl0V,aAC9B,MAAV1sU,QAAiB,EAASA,GAAO0sU,WAEvC4sN,UAAW,IAAKsnI,GAA8BtnI,aAC9B,MAAVt5hB,QAAiB,EAASA,GAAOs5hB,WAEvCynI,YAAa,IAAKH,GAA8BG,eAChC,MAAV/gqB,QAAiB,EAASA,GAAO+gqB,eAGzC,CAAW,MAAV/gqB,QAAiB,EAASA,GAAO0sU,UAAqB,MAAV1sU,QAAiB,EAASA,GAAOs5hB,UAAqB,MAAVt5hB,QAAiB,EAASA,GAAO+gqB,gBAmIpH,eACJvK,GAAc,2BACdqL,GAA0B,mBAC1BC,IAp7BJ,SAA+B/oJ,EAAY1shB,GACzC,IAAI,SACF0sZ,EAAQ,aACRt6K,EAAY,OACZz+N,GACE3T,EACJ,MAAOwxH,EAAO8mjB,IAAY,IAAApkqB,UAAS,OAC7B,UACJ+1X,EAAS,QACT0xE,EAAO,SACPr1c,GACEqN,EACE4kqB,GAAgB,IAAA1kqB,QAAO64gB,GACvB9pe,EAuFN,WACE,OAAQt8C,GACN,KAAKssqB,GAAkB4F,OACrB,OAAO,EAET,KAAK5F,GAAkB6F,eACrB,OAAO/rR,EAET,QACE,OAAQA,EAEd,CAlGiByiD,GACXupO,GAAc,QAAe91nB,GAC7B4ynB,GAA6B,IAAA1hqB,aAAY,SAAUrB,QAC3C,IAARA,IACFA,EAAM,IAGJimqB,EAAYjuqB,SAIhB6tqB,EAAS/9qB,GACO,OAAVA,EACKkY,EAGFlY,EAAMqI,OAAO6P,EAAI5M,OAAO8M,IAAOpY,EAAMgwC,SAAS53B,KAEzD,EAAG,CAAC+lqB,IACEj1Z,GAAY,IAAA5vQ,QAAO,MACnBs2pB,GAAiB,QAAY9pd,IACjC,GAAIz9J,IAAa8pW,EACf,OAAOxnY,GAGT,IAAKm7L,GAAiBA,IAAkBn7L,IAAgBqzpB,EAAc9tqB,UAAYiihB,GAAuB,MAATl7Z,EAAe,CAC7G,MAAM7pH,EAAM,IAAIC,IAEhB,IAAK,IAAI8yD,KAAagyd,EAAY,CAChC,IAAKhyd,EACH,SAGF,GAAI82D,GAASA,EAAMxoH,OAAS,IAAMwoH,EAAMjnF,SAASmwB,EAAU/nD,KAAO+nD,EAAUj5D,KAAKgJ,QAAS,CAExF9C,EAAIgB,IAAI+xD,EAAU/nD,GAAI+nD,EAAUj5D,KAAKgJ,SACrC,QACF,CAEA,MAAM9O,EAAO++D,EAAU/+D,KAAK8O,QACtBhJ,EAAO9F,EAAO,IAAIwwZ,EAAKwvD,EAAQhgd,GAAOA,GAAQ,KACpD++D,EAAUj5D,KAAKgJ,QAAUhJ,EAErBA,GACFkG,EAAIgB,IAAI+xD,EAAU/nD,GAAIlR,EAE1B,CAEA,OAAOkG,CACT,CAEA,OAAO04M,GACN,CAACqsU,EAAYl7Z,EAAOk7R,EAAU9pW,EAAU+4Z,IA6B3C,OA5BA,IAAAlnc,WAAU,KACR8jqB,EAAc9tqB,QAAUiihB,GACvB,CAACA,KACJ,IAAAj4gB,WAAU,KACJmuC,GAIJ4ynB,KAEF,CAAC9oR,EAAU9pW,KACX,IAAAnuC,WAAU,KACJ+8G,GAASA,EAAMxoH,OAAS,GAC1BsvqB,EAAS,OAGb,CAAC/5pB,KAAKC,UAAUgzG,MAChB,IAAA/8G,WAAU,KACJmuC,GAAiC,iBAAdqnV,GAAgD,OAAtBxmH,EAAUh5Q,UAI3Dg5Q,EAAUh5Q,QAAU4R,WAAW,KAC7Bm5pB,IACA/xZ,EAAUh5Q,QAAU,MACnBw/X,KAEL,CAACA,EAAWrnV,EAAU4ynB,KAA+Bpjc,IAC9C,CACL+3b,iBACAqL,6BACAC,mBAA6B,MAATjkjB,EAexB,CAq0BMmnjB,CAAsBN,GAA4B,CACpD3rR,SAAU39R,EACVqjH,aAAc,CAACvvM,EAAU1nC,EAAG0nC,EAAUtqC,GACtCob,OAAQ4hqB,GAAuBtoI,YAE3ByiI,GAv+BR,SAAuB2F,EAAgB1iqB,GACrC,MAAM6jqB,EAAsB,MAAN7jqB,EAAa0iqB,EAAe5sqB,IAAIkK,QAAMjH,EACtD/P,EAAO66qB,EAAgBA,EAAc76qB,KAAK8O,QAAU,KAC1D,OAAO,QAAYmuqB,IACjB,IAAI54qB,EAEJ,OAAU,MAAN2S,EACK,KAM2C,OAA5C3S,EAAe,MAARrE,EAAeA,EAAOi9qB,GAAsB54qB,EAAO,MACjE,CAACrE,EAAMgX,GACZ,CAw9BqBkmqB,CAAcxD,EAAgB5sK,GAC3CqwK,IAAwB,IAAAtkqB,SAAQ,IAAM0gqB,GAAiB,QAAoBA,GAAkB,KAAM,CAACA,IACpG6D,GAkcN,WACE,MAAMC,GAAsG,KAApD,MAAhBhB,OAAuB,EAASA,EAAa/I,mBAC/EgK,EAAmD,iBAAf/B,GAAiD,IAAvBA,EAAWtsqB,SAAmC,IAAfssqB,EAC7FtsqB,EAAUmkH,IAAkBiqjB,IAAmCC,EAErE,MAA0B,iBAAf/B,EACF,IAAKA,EACVtsqB,WAIG,CACLA,UAEJ,CAhd0BsuqB,GACpBC,GA7zBR,SAAwBx9qB,EAAMggd,GAC5B,OAAOm3N,GAAgBn3qB,EAAMggd,EAC/B,CA2zBgCy9N,CAAe1J,GAAY6F,GAAuBl1V,UAAUs7H,SA3J5F,IAAmChoc,IAenC,SAA0C3T,GACxC,IAAI,WACF0vqB,EAAU,QACV/zN,EAAO,YACP09N,EAAW,OACX1lqB,GAAS,GACP3T,EACJ,MAAMunI,GAAc,IAAA1zH,SAAO,IACrB,EACJ1Y,EAAC,EACD5C,GACoB,kBAAXob,EAAuB,CAChCxY,EAAGwY,EACHpb,EAAGob,GACDA,GACJ,QAA0B,KAGxB,IAFkBxY,IAAM5C,IAEPm3qB,EAEf,YADAnoiB,EAAY98H,SAAU,GAIxB,GAAI88H,EAAY98H,UAAY4uqB,EAG1B,OAIF,MAAM19qB,EAAqB,MAAd+zqB,OAAqB,EAASA,EAAW/zqB,KAAK8O,QAE3D,IAAK9O,IAA6B,IAArBA,EAAK2gE,YAGhB,OAGF,MACMg9mB,EAAYpO,EADLvvN,EAAQhgd,GACgB09qB,GAarC,GAXKl+qB,IACHm+qB,EAAUn+qB,EAAI,GAGX5C,IACH+grB,EAAU/grB,EAAI,GAIhBgvI,EAAY98H,SAAU,EAElBrQ,KAAKM,IAAI4+qB,EAAUn+qB,GAAK,GAAKf,KAAKM,IAAI4+qB,EAAU/grB,GAAK,EAAG,CAC1D,MAAM+zqB,EAA0BD,EAA2B1wqB,GAEvD2wqB,GACFA,EAAwB7uZ,SAAS,CAC/B7+Q,IAAK06qB,EAAU/grB,EACfwG,KAAMu6qB,EAAUn+qB,GAGtB,GACC,CAACu0qB,EAAYv0qB,EAAG5C,EAAG8grB,EAAa19N,GACrC,CA8EE49N,CAAiC,CAC/B7J,WAAwB,MAAZjnK,EAAmB4sK,EAAe5sqB,IAAIgggB,GAAY,KAC9D90f,OAAQolqB,GAAkBS,wBAC1BH,YAAaF,GACbx9N,QAAS45N,GAAuBl1V,UAAUs7H,UAE5C,MAAMw5N,GAAiB/B,GAAQ1D,GAAY6F,GAAuBl1V,UAAUs7H,QAASw9N,IAC/E/D,GAAoBhC,GAAQ1D,GAAaA,GAAWjrjB,cAAgB,MACpEg1jB,IAAgB,IAAA5lqB,QAAO,CAC3BqhqB,eAAgB,KAChBv8nB,OAAQ,KACR+2nB,cACAxF,cAAe,KACfJ,WAAY,KACZK,kBACAkL,iBACAqE,aAAc,KACd/zS,iBAAkB,KAClBykS,sBACAlC,KAAM,KACN4F,oBAAqB,GACrB6L,wBAAyB,OAErBC,GAAWxP,EAAoB0K,WAAmE,OAAvD+B,EAAwB4C,GAAchvqB,QAAQy9pB,WAAgB,EAAS2O,EAAsBlkqB,IACxI+hqB,GArgBR,SAAiC10qB,GAC/B,IAAI,QACF27c,GACE37c,EACJ,MAAOyB,EAAM6xqB,IAAW,IAAAp/pB,UAAS,MAiB3Bg/pB,EAAiBF,GAAkB,CACvClvpB,UAjBmB,IAAAhQ,aAAYgmD,IAC/B,IAAK,MAAM,OACTn3D,KACGm3D,EACH,IAAI,QAAcn3D,GAAS,CACzB2wqB,EAAQ7xqB,IACN,MAAMgyqB,EAAU93N,EAAQh5c,GACxB,OAAOlB,EAAO,IAAKA,EACjBnG,MAAOm4qB,EAAQn4qB,MACfE,OAAQi4qB,EAAQj4qB,QACdi4qB,IAEN,KACF,GAED,CAAC93N,MAIEk+N,GAAmB,IAAA/lqB,aAAY5Y,IACnC,MAAMS,EAAOy4qB,GAAkBl5qB,GACb,MAAlBg4qB,GAAkCA,EAAexzpB,aAE7C/jB,IACgB,MAAlBu3qB,GAAkCA,EAAeh5mB,QAAQv+D,IAG3D23qB,EAAQ33qB,EAAOggd,EAAQhgd,GAAQ,OAC9B,CAACggd,EAASu3N,KACNn8N,EAAS8iG,IAAU,QAAWggI,GACrC,OAAO,IAAArlqB,SAAQ,KAAM,CACnBuic,UACAt1c,OACAo4iB,WACE,CAACp4iB,EAAMs1c,EAAS8iG,GACtB,CA6dsBigI,CAAwB,CAC1Cn+N,QAAS45N,GAAuBb,YAAY/4N,UAGxC+9N,GAAwE,OAAxD5C,EAAwBpC,GAAY39N,QAAQtsc,SAAmBqsqB,EAAwBpH,GACvG/pS,GAAmB52Q,EAA0D,OAAzCgojB,EAAoBrC,GAAYjzqB,MAAgBs1qB,EAAoB5B,GAAiB,KACzH4E,GAAkBl+kB,QAAQ64kB,GAAY39N,QAAQtsc,SAAWiqqB,GAAYjzqB,MAGrEu4qB,GAvtBC9O,EAFazpqB,GAytBes4qB,GAAkB,KAAO5E,GAxtBxCrC,GAAgBrxqB,KADtC,IAAsBA,GA2tBpB,MAAMmkY,GAAaquS,GAAcyF,IAAe,QAAUA,IAAgB,MAEpE5L,GAvtBR,SAAgCnyqB,GAC9B,MAAM+iU,GAAe,IAAA7qT,QAAOlY,GACtBy1b,GAAY,QAAY/wO,GACvB1kN,EAID0kN,GAAiBA,IAAkBwzd,IAAkBl4qB,GAAQ+iU,EAAaj0T,SAAW9O,EAAKiB,aAAe8hU,EAAaj0T,QAAQ7N,WACzHyjN,EAGF2rd,EAAuBrwqB,GAPrBk4qB,GAQR,CAACl4qB,IAIJ,OAHA,IAAA8Y,WAAU,KACRiqT,EAAaj0T,QAAU9O,GACtB,CAACA,IACGy1b,CACT,CAssB8B6oP,CAAuBlrjB,EAA4B,MAAZ6qjB,GAAmBA,GAAWlK,GAAa,MACxG4F,GA9jBR,SAAkB/vqB,EAAUo2c,QACV,IAAZA,IACFA,EAAUzlE,GAGZ,MAAOgkS,GAAgB30qB,EACjBqgY,EAAaquS,GAAciG,GAAe,QAAUA,GAAgB,OACnE10qB,EAAO20qB,IAAY,IAAAjmqB,UAASigqB,IAEnC,SAASiG,IACPD,EAAS,IACF50qB,EAASyD,OAIPzD,EAASoC,IAAIzM,GAAW0xqB,EAA2B1xqB,GAAW0qY,EAAa,IAAIumB,EAAKwvD,EAAQzgd,GAAUA,IAHpGi5qB,GAKb,CAEA,MAAMjB,EAAiBF,GAAkB,CACvClvpB,SAAUs2pB,IAOZ,OALA,QAA0B,KACN,MAAlBlH,GAAkCA,EAAexzpB,aACjD06pB,IACA70qB,EAASqB,QAAQ1L,GAA6B,MAAlBg4qB,OAAyB,EAASA,EAAeh5mB,QAAQh/D,KACpF,CAACqK,IACGC,CACT,CAkiBkC60qB,CAASvM,IAEnCwM,GAAoB5D,GAAehvqB,EAAW,CAClD1J,UAAW,CACT7C,EAAG0nC,EAAU1nC,EAAI6+qB,GAAc7+qB,EAC/B5C,EAAGsqC,EAAUtqC,EAAIyhrB,GAAczhrB,EAC/Bo8Z,OAAQ,EACRC,OAAQ,GAEVsgR,iBACAv8nB,SACAw8nB,kBACAC,qBACAzvS,oBACAuiS,KAAMuR,GAAchvqB,QAAQy9pB,KAC5BqS,gBAAiB7F,GAAYjzqB,KAC7BqsqB,uBACAwH,2BACA1vS,gBAEI40S,GAAqB1B,IAAwB,QAAIA,GAAuBj2oB,GAAa,KACrFmroB,GA1tBR,SAA0BzoqB,GACxB,MAAOk1qB,EAAmBC,IAAwB,IAAAxmqB,UAAS,MACrDymqB,GAAe,IAAA9mqB,QAAOtO,GAEtBqyoB,GAAe,IAAA9joB,aAAYiN,IAC/B,MAAMmrpB,EAAmBK,EAAqBxrpB,EAAMpe,QAE/CupqB,GAILwO,EAAqBD,GACdA,GAILA,EAAkB9xqB,IAAIujqB,EAAkBQ,EAAqBR,IACtD,IAAItkqB,IAAI6yqB,IAJN,OAMV,IAkCH,OAjCA,IAAAhmqB,WAAU,KACR,MAAMs9S,EAAmB4oX,EAAalwqB,QAEtC,GAAIlF,IAAawsT,EAAkB,CACjC2gF,EAAQ3gF,GACR,MAAMj4P,EAAUv0D,EAASoC,IAAIzM,IAC3B,MAAM0/qB,EAAoBrO,EAAqBrxqB,GAE/C,OAAI0/qB,GACFA,EAAkB9tqB,iBAAiB,SAAU8qoB,EAAc,CACzD32oB,SAAS,IAEJ,CAAC25qB,EAAmBlO,EAAqBkO,KAG3C,OACN/0qB,OAAO2gD,GAAkB,MAATA,GACnBk0nB,EAAqB5gnB,EAAQ9wD,OAAS,IAAIpB,IAAIkyD,GAAW,MACzD6gnB,EAAalwqB,QAAUlF,CACzB,CAEA,MAAO,KACLmtY,EAAQntY,GACRmtY,EAAQ3gF,IAGV,SAAS2gF,EAAQntY,GACfA,EAASqB,QAAQ1L,IACf,MAAM0/qB,EAAoBrO,EAAqBrxqB,GAC1B,MAArB0/qB,GAAqCA,EAAkB7tqB,oBAAoB,SAAU6qoB,IAEzF,GACC,CAACA,EAAcryoB,KACX,IAAAiP,SAAQ,IACTjP,EAASyD,OACJyxqB,EAAoBvxqB,MAAMuwB,KAAKghpB,EAAkBj9oB,UAAUt+B,OAAO,CAACoL,EAAKooM,KAAgB,QAAIpoM,EAAKooM,GAAc42d,GAAsBuE,EAAiBtoqB,GAGxJ+jqB,EACN,CAAC/jqB,EAAUk1qB,GAChB,CA8pBwBI,CAAiB/M,IAEjCgN,GAAmBhH,GAAsB9F,IAEzC+M,GAAwBjH,GAAsB9F,GAAe,CAACmH,KAC9DwE,IAA0B,QAAIW,GAAmBQ,IACjD5Q,GAAgBvkS,GAAmB2lS,EAAgB3lS,GAAkB20S,IAAqB,KAC1FxQ,GAAanxnB,GAAUuxnB,GAAgBiN,EAAmB,CAC9Dx+nB,SACAuxnB,iBACAC,kBACAC,oBAAqBiO,GACrBmC,wBACG,KACCQ,GAASnR,EAAkBC,GAAY,OACtC5B,GAAM+S,KAAW,IAAA/mqB,UAAS,MAI3BlW,GAl7ER,SAAqBA,EAAWi4jB,EAAOC,GACrC,MAAO,IAAKl4jB,EACV22Z,OAAQshK,GAASC,EAAQD,EAAM36jB,MAAQ46jB,EAAM56jB,MAAQ,EACrDs5Z,OAAQqhK,GAASC,EAAQD,EAAMz6jB,OAAS06jB,EAAM16jB,OAAS,EAE3D,CA66EoB0/qB,CADOnB,GAAkBO,IAAoB,QAAIA,GAAmBS,IACc,OAAnD/D,EAAqB,MAAR9O,QAAe,EAASA,GAAKzmqB,MAAgBu1qB,EAAa,KAAM7B,IACxHgG,IAAkB,IAAAtnqB,QAAO,MACzBunqB,IAAoB,IAAAtnqB,aAAY,CAACiN,EAAOxhB,KAC5C,IACE6pqB,OAAQiS,EAAM,QACd72qB,GACEjF,EAEJ,GAAyB,MAArBw4qB,EAAUttqB,QACZ,OAGF,MAAMilqB,EAAa2F,EAAe5sqB,IAAIsvqB,EAAUttqB,SAEhD,IAAKilqB,EACH,OAGF,MAAMwF,EAAiBn0pB,EAAM2tU,YACvB4sV,EAAiB,IAAID,EAAO,CAChC1ioB,OAAQo/nB,EAAUttqB,QAClBilqB,aACA3upB,MAAOm0pB,EACP1wqB,UAGAu5B,QAAS07oB,GAET,OAAAvH,CAAQv/pB,GAGN,IAFsB0iqB,EAAe5sqB,IAAIkK,GAGvC,OAGF,MAAM,YACJ4oqB,GACEpD,GAAY1tqB,QACVsW,EAAQ,CACZpO,MAEa,MAAf4oqB,GAA+BA,EAAYx6pB,GAC3Cs2pB,EAAqB,CACnBzypB,KAAM,cACN7D,SAEJ,EAEA,SAAA8wpB,CAAUl/pB,EAAIyzG,EAAYgrjB,EAAoB53qB,GAG5C,IAFsB67qB,EAAe5sqB,IAAIkK,GAGvC,OAGF,MAAM,cACJ6oqB,GACErD,GAAY1tqB,QACVsW,EAAQ,CACZpO,KACAyzG,aACAgrjB,qBACA53qB,UAEe,MAAjBgirB,GAAiCA,EAAcz6pB,GAC/Cs2pB,EAAqB,CACnBzypB,KAAM,gBACN7D,SAEJ,EAEA,OAAAs6G,CAAQ+1iB,GACN,MAAMz+pB,EAAKolqB,EAAUttqB,QAErB,GAAU,MAANkI,EACF,OAGF,MAAM6jqB,EAAgBnB,EAAe5sqB,IAAIkK,GAEzC,IAAK6jqB,EACH,OAGF,MAAM,YACJxO,GACEmQ,GAAY1tqB,QACVsW,EAAQ,CACZm0pB,iBACAv8nB,OAAQ,CACNhmC,KACAhI,KAAM6rqB,EAAc7rqB,KACpBlJ,KAAMm2qB,KAGV,IAAAvnO,yBAAwB,KACP,MAAf23N,GAA+BA,EAAYjnpB,GAC3C02pB,EAAUrziB,GAAOq3iB,cACjBnzkB,EAAS,CACP1jF,KAAMskpB,EAAOwI,UACbN,qBACAz4nB,OAAQhmC,IAEV0kqB,EAAqB,CACnBzypB,KAAM,cACN7D,UAEFk3pB,EAAgBkD,GAAgB1wqB,SAChCytqB,GAAkBhD,IAEtB,EAEA,MAAA1E,CAAO99d,GACLpqG,EAAS,CACP1jF,KAAMskpB,EAAO6M,SACbrje,eAEJ,EAEAlyE,MAAOk7iB,EAAcxS,EAAO8M,SAC5BtqC,SAAUgwC,EAAcxS,EAAO+M,cAIjC,SAASyF,EAAc92pB,GACrB,OAAO61E,iBACL,MAAM,OACJ9hD,EAAM,WACNmxnB,EAAU,KACV5B,EAAI,wBACJyR,GACEF,GAAchvqB,QAClB,IAAIsW,EAAQ,KAEZ,GAAI43B,GAAUghoB,EAAyB,CACrC,MAAM,WACJgC,GACExD,GAAY1tqB,QAChBsW,EAAQ,CACNm0pB,iBACAv8nB,OAAQA,EACRmxnB,aACA16nB,MAAOuqoB,EACPzR,QAGEtjpB,IAASskpB,EAAO8M,SAAiC,mBAAf2F,SACTpwqB,QAAQC,QAAQmwqB,EAAW56pB,MAGpD6D,EAAOskpB,EAAO+M,WAGpB,CAEA8B,EAAUttqB,QAAU,MACpB,IAAA4lc,yBAAwB,KACtB/nW,EAAS,CACP1jF,SAEF6ypB,EAAUrziB,GAAOsziB,eACjBuD,GAAQ,MACRhD,EAAgB,MAChBC,GAAkB,MAClBiD,GAAgB1wqB,QAAU,KAC1B,MAAMk/F,EAAY/kF,IAASskpB,EAAO8M,QAAU,YAAc,eAE1D,GAAIj1pB,EAAO,CACT,MAAM+xC,EAAUqlnB,GAAY1tqB,QAAQk/F,GACzB,MAAX72C,GAA2BA,EAAQ/xC,GACnCs2pB,EAAqB,CACnBzypB,KAAM+kF,EACN5oF,SAEJ,GAEJ,CACF,CAvDAo6pB,GAAgB1wqB,QAAU6wqB,GAyD5B,CAACjG,IACKuG,IAAoC,IAAA9nqB,aAAY,CAACg/C,EAASs2mB,IACvD,CAACropB,EAAO43B,KACb,MAAM+1S,EAAc3tU,EAAM2tU,YACpBmtV,EAAsBxG,EAAe5sqB,IAAIkwC,GAE/C,GACsB,OAAtBo/nB,EAAUttqB,UACToxqB,GACDntV,EAAYotV,QAAUptV,EAAY92E,iBAChC,OAGF,MAAMmka,EAAoB,CACxBpjoB,OAAQkjoB,IAIa,IAFA/onB,EAAQ/xC,EAAOqopB,EAAO5kqB,QAASu3qB,KAGpDrtV,EAAYotV,OAAS,CACnBE,WAAY5S,EAAOA,QAErB2O,EAAUttqB,QAAUkuC,EACpByioB,GAAkBr6pB,EAAOqopB,KAG5B,CAACiM,EAAgB+F,KACdzK,GAtvCR,SAA8BlgS,EAASwrS,GACrC,OAAO,IAAAznqB,SAAQ,IAAMi8X,EAAQvxY,OAAO,CAACo1N,EAAa80c,KAChD,MACEA,OAAQiS,GACNjS,EAKJ,MAAO,IAAI90c,KAJc+md,EAAO1K,WAAWhpqB,IAAIkpqB,IAAa,CAC1DlnkB,UAAWknkB,EAAUlnkB,UACrB72C,QAASmpnB,EAAoBpL,EAAU/9mB,QAASs2mB,QAGjD,IAAK,CAAC34R,EAASwrS,GACpB,CA2uCqBC,CAAqBzrS,EAASmrS,KAr2BnD,SAAwBnrS,IACtB,IAAAh8X,WAAU,KACR,IAAK,KACH,OAGF,MAAM0nqB,EAAc1rS,EAAQ9oY,IAAI3H,IAC9B,IAAI,OACFopqB,GACEppqB,EACJ,OAAuB,MAAhBopqB,EAAOplP,WAAgB,EAASolP,EAAOplP,UAEhD,MAAO,KACL,IAAK,MAAMkoO,KAAYiwB,EACT,MAAZjwB,GAA4BA,MAKlCz7Q,EAAQ9oY,IAAIpI,IACV,IAAI,OACF6pqB,GACE7pqB,EACJ,OAAO6pqB,IAEX,CA60BEgT,CAAe3rS,IACf,QAA0B,KACpB0kS,IAAkBpziB,IAAWqC,GAAOq3iB,cACtChE,EAAUrziB,GAAOuziB,cAElB,CAACxC,GAAgBpziB,KACpB,IAAAttH,WAAU,KACR,MAAM,WACJu0pB,GACEmP,GAAY1tqB,SACV,OACJkuC,EAAM,eACNu8nB,EAAc,WACdpL,EAAU,KACV5B,GACEuR,GAAchvqB,QAElB,IAAKkuC,IAAWu8nB,EACd,OAGF,MAAMn0pB,EAAQ,CACZ43B,SACAu8nB,iBACApL,aACA16nB,MAAO,CACLj0C,EAAGw+qB,GAAwBx+qB,EAC3B5C,EAAGohrB,GAAwBphrB,GAE7B2vqB,SAEF,IAAA73N,yBAAwB,KACR,MAAd24N,GAA8BA,EAAWjopB,GACzCs2pB,EAAqB,CACnBzypB,KAAM,aACN7D,aAIN,CAAC44pB,GAAwBx+qB,EAAGw+qB,GAAwBphrB,KACpD,IAAAkc,WAAU,KACR,MAAM,OACJkkC,EAAM,eACNu8nB,EAAc,WACdpL,EAAU,oBACVM,EAAmB,wBACnBuP,GACEF,GAAchvqB,QAElB,IAAKkuC,GAA+B,MAArBo/nB,EAAUttqB,UAAoByqqB,IAAmByE,EAC9D,OAGF,MAAM,WACJ1R,GACEkQ,GAAY1tqB,QACV4xqB,EAAgBjS,EAAoB3hqB,IAAIuyqB,IACxC9S,EAAOmU,GAAiBA,EAAc56qB,KAAKgJ,QAAU,CACzDkI,GAAI0pqB,EAAc1pqB,GAClBlR,KAAM46qB,EAAc56qB,KAAKgJ,QACzBE,KAAM0xqB,EAAc1xqB,KACpBi4C,SAAUy5nB,EAAcz5nB,UACtB,KACE7hC,EAAQ,CACZ43B,SACAu8nB,iBACApL,aACA16nB,MAAO,CACLj0C,EAAGw+qB,EAAwBx+qB,EAC3B5C,EAAGohrB,EAAwBphrB,GAE7B2vqB,SAEF,IAAA73N,yBAAwB,KACtB4qO,GAAQ/S,GACM,MAAdD,GAA8BA,EAAWlnpB,GACzCs2pB,EAAqB,CACnBzypB,KAAM,aACN7D,aAIN,CAACi6pB,MACD,QAA0B,KACxBvB,GAAchvqB,QAAU,CACtByqqB,iBACAv8nB,SACA+2nB,cACAxF,iBACAJ,cACAK,kBACAkL,iBACAqE,gBACA/zS,oBACAykS,sBACAlC,QACA4F,uBACA6L,4BAEF/B,EAAYntqB,QAAU,CACpB4rC,QAASsvV,GACTkyS,WAAY3N,KAEb,CAACvxnB,EAAQ+2nB,GAAY5F,GAAYI,GAAemL,EAAgBqE,GAAc/zS,GAAkBwkS,GAAgBC,EAAqBlC,GAAM4F,GAAqB6L,KAtgDrK,SAAyB35qB,GACvB,IAAI,aACFwtqB,EAAY,UACZqD,EAAY4B,GAAoB6J,QAAO,UACvCC,EAAS,aACTC,EAAY,QACZ5xqB,EAAO,SACPooF,EAAW,EAAC,MACZvrF,EAAQirqB,GAAe+J,UAAS,mBAChCjC,EAAkB,oBAClB1M,EAAmB,wBACnBwH,EAAuB,MACvBlmoB,EAAK,UACL4/X,GACEhva,EACJ,MAAM08qB,EA0GR,SAAyBn9qB,GACvB,IAAI,MACF6vC,EAAK,SACLwT,GACErjD,EACJ,MAAMo9qB,GAAgB,QAAYvtoB,GAClC,OAAO,QAAYwtoB,IACjB,GAAIh6nB,IAAa+5nB,IAAkBC,EAEjC,OAAOjK,GAGT,MAAMhvqB,EACDvJ,KAAKmuB,KAAK6mB,EAAMj0C,EAAIwhrB,EAAcxhrB,GADjCwI,EAEDvJ,KAAKmuB,KAAK6mB,EAAM72C,EAAIokrB,EAAcpkrB,GAGvC,MAAO,CACL4C,EAAG,CACD,CAACwxqB,EAAUe,UAAWkP,EAAezhrB,EAAEwxqB,EAAUe,YAA8B,IAAjB/pqB,EAC9D,CAACgpqB,EAAUgB,SAAUiP,EAAezhrB,EAAEwxqB,EAAUgB,UAA4B,IAAhBhqqB,GAE9DpL,EAAG,CACD,CAACo0qB,EAAUe,UAAWkP,EAAerkrB,EAAEo0qB,EAAUe,YAA8B,IAAjB/pqB,EAC9D,CAACgpqB,EAAUgB,SAAUiP,EAAerkrB,EAAEo0qB,EAAUgB,UAA4B,IAAhBhqqB,KAG/D,CAACi/C,EAAUxT,EAAOutoB,GACvB,CAtIuBE,CAAgB,CACnCztoB,QACAwT,UAAWh4C,KAENkyqB,EAAuBC,IAA2B,UACnDC,GAAc,IAAAnpqB,QAAO,CACzB1Y,EAAG,EACH5C,EAAG,IAEC0krB,GAAkB,IAAAppqB,QAAO,CAC7B1Y,EAAG,EACH5C,EAAG,IAECkJ,GAAO,IAAA+S,SAAQ,KACnB,OAAQq8pB,GACN,KAAK4B,GAAoB6J,QACvB,OAAO9B,EAAqB,CAC1B57qB,IAAK47qB,EAAmBjirB,EACxBuG,OAAQ07qB,EAAmBjirB,EAC3BwG,KAAMy7qB,EAAmBr/qB,EACzB0D,MAAO27qB,EAAmBr/qB,GACxB,KAEN,KAAKs3qB,GAAoByK,cACvB,OAAOV,IAEV,CAAC3L,EAAW2L,EAAchC,IACvB2C,GAAqB,IAAAtpqB,QAAO,MAC5BqjqB,GAAa,IAAApjqB,aAAY,KAC7B,MAAMw5pB,EAAkB6P,EAAmB1yqB,QAE3C,IAAK6iqB,EACH,OAGF,MAAM3rqB,EAAaq7qB,EAAYvyqB,QAAQtP,EAAI8hrB,EAAgBxyqB,QAAQtP,EAC7D0G,EAAYm7qB,EAAYvyqB,QAAQlS,EAAI0krB,EAAgBxyqB,QAAQlS,EAClE+0qB,EAAgB7vZ,SAAS97Q,EAAYE,IACpC,IACGu7qB,GAA4B,IAAA5oqB,SAAQ,IAAM/M,IAAUirqB,GAAe+J,UAAY,IAAI3O,GAAqBpopB,UAAYoopB,EAAqB,CAACrmqB,EAAOqmqB,KACvJ,IAAAr5pB,WAAU,KACR,GAAK7J,GAAYkjqB,EAAoB9kqB,QAAWvH,EAAhD,CAKA,IAAK,MAAM6rqB,KAAmB8P,EAA2B,CACvD,IAAkE,KAAhD,MAAbb,OAAoB,EAASA,EAAUjP,IAC1C,SAGF,MAAMliqB,EAAQ0iqB,EAAoB3wqB,QAAQmwqB,GACpCC,EAAsB+H,EAAwBlqqB,GAEpD,IAAKmiqB,EACH,SAGF,MAAM,UACJ5pqB,EAAS,MACToyM,GACEs3d,EAA2BC,EAAiBC,EAAqB9rqB,EAAM+rqB,EAAcx+P,GAEzF,IAAK,MAAMloa,IAAQ,CAAC,IAAK,KAClB41qB,EAAa51qB,GAAMnD,EAAUmD,MAChCivM,EAAMjvM,GAAQ,EACdnD,EAAUmD,GAAQ,GAItB,GAAIivM,EAAM56M,EAAI,GAAK46M,EAAMx9M,EAAI,EAM3B,OALAwkrB,IACAI,EAAmB1yqB,QAAU6iqB,EAC7BwP,EAAsB5F,EAAYlklB,GAClCgqlB,EAAYvyqB,QAAUsrM,OACtBkne,EAAgBxyqB,QAAU9G,EAG9B,CAEAq5qB,EAAYvyqB,QAAU,CACpBtP,EAAG,EACH5C,EAAG,GAEL0krB,EAAgBxyqB,QAAU,CACxBtP,EAAG,EACH5C,EAAG,GAELwkrB,GA5CA,MAFEA,KAgDJ,CAACvP,EAAc0J,EAAYqF,EAAWQ,EAAyBnyqB,EAASooF,EACxEz0E,KAAKC,UAAU/c,GACf8c,KAAKC,UAAUk+pB,GAAeI,EAAuBhP,EAAqBsP,EAA2B9H,EACrG/2pB,KAAKC,UAAUwwZ,IACjB,CA05CEquQ,CAAgB,IAAKtE,GACnB3poB,MAAOvM,EACP25oB,aAActS,GACdsQ,sBACA1M,uBACAwH,6BAEF,MAAMgI,IAAgB,IAAA9oqB,SAAQ,KACZ,CACdmkC,SACA+2nB,cACAyF,kBACAD,iBACApL,cACAsL,qBACAV,eACAW,iBACAjL,sBACAD,kBACAjC,QACAsN,8BACA1H,uBACAwH,2BACAC,0BACAE,sBACA7vS,gBAGD,CAACjtV,EAAQ+2nB,GAAYyF,GAAgBD,EAAgBpL,GAAYsL,GAAmBV,GAAaW,EAAgBjL,EAAqBD,GAAgBjC,GAAMsN,GAA4B1H,GAAqBwH,GAAyBC,GAAwBE,GAAoB7vS,KAC/Q23S,IAAkB,IAAA/oqB,SAAQ,KACd,CACd0gqB,iBACAvE,cACAh4nB,SACAw8nB,kBACAQ,kBAAmB,CACjBt1V,UAAW+3V,IAEb9vkB,WACA+skB,iBACAnN,QACAsN,gCAGD,CAACN,EAAgBvE,GAAYh4nB,EAAQw8nB,GAAgB7skB,EAAU8vkB,GAAwB/C,EAAgBnN,GAAMsN,KAChH,OAAO,gBAAoB3N,EAAkBj1U,SAAU,CACrDr4V,MAAO+8qB,GACN,gBAAoB1B,GAAgBhjV,SAAU,CAC/Cr4V,MAAOgjrB,IACN,gBAAoB1H,GAAcjjV,SAAU,CAC7Cr4V,MAAO+irB,IACN,gBAAoB3G,GAAuB/jV,SAAU,CACtDr4V,MAAOyD,IACNouH,IAAY,gBAAoBiqjB,GAAc,CAC/CzznB,UAA4E,KAAhD,MAAjBq0nB,OAAwB,EAASA,EAAcuG,iBACvD,gBAAoBpV,EAAe,IAAK6O,EAC3C3O,wBAAyB8P,KAkB7B,GAEMqF,IAA2B,IAAA51oB,eAAc,MACzC61oB,GAAc,SACdC,GAAY,YAClB,SAASC,GAAa59qB,GACpB,IAAI,GACF2S,EAAE,KACFhI,EAAI,SACJi4C,GAAW,EAAK,WAChB/4C,GACE7J,EACJ,MAAMZ,GAAM,QAAYu+qB,KAClB,WACJhN,EAAU,eACVuE,EAAc,OACdv8nB,EAAM,eACNw8nB,EAAc,kBACdQ,EAAiB,eACjBN,EAAc,KACdnN,IACE,IAAAvpb,YAAWi3b,KACT,KACJ1iqB,EAAOwqqB,GAAW,gBAClBG,EAAkB,YAAW,SAC7BhzW,EAAW,GACK,MAAdhhU,EAAqBA,EAAa,CAAC,EACjCwsZ,GAAwB,MAAV19W,OAAiB,EAASA,EAAOhmC,MAAQA,EACvD3U,GAAY,IAAA2gP,YAAW03K,EAAasgR,GAAyB8G,KAC5D9hrB,EAAMmirB,IAAc,WACpBhN,EAAeiN,IAAuB,UACvCn1oB,EA5hCR,SAA+BA,EAAWj2B,GACxC,OAAO,IAAA6B,SAAQ,IACNo0B,EAAU1pC,OAAO,CAACoL,EAAKtK,KAC5B,IAAI,UACF2pG,EAAS,QACT72C,GACE9yD,EAMJ,OAJAsK,EAAIq/F,GAAa5oF,IACf+xC,EAAQ/xC,EAAOpO,IAGVrI,GACN,CAAC,GACH,CAACs+B,EAAWj2B,GACjB,CA6gCoBqrqB,CAAsBrN,EAAYh+pB,GAC9CsrqB,GAAU,QAAetzqB,GA0B/B,OAzBA,QAA0B,KACxB0qqB,EAAe1sqB,IAAIgK,EAAI,CACrBA,KACAvT,MACAzD,OACAm1qB,gBACAnmqB,KAAMszqB,IAED,KACL,MAAMtirB,EAAO05qB,EAAe5sqB,IAAIkK,GAE5BhX,GAAQA,EAAKyD,MAAQA,GACvBi2qB,EAAehqoB,OAAO14B,KAI5B,CAAC0iqB,EAAgB1iqB,IASV,CACLgmC,SACAu8nB,iBACAC,iBACAtrqB,YAZyB,IAAA2K,SAAQ,KAAM,CACvCtB,OACA23T,WACA,gBAAiBjoR,EACjB,kBAAgByzW,GAAcnjZ,IAASwqqB,UAAqBhyqB,EAC5D,uBAAwBmyqB,EACxB,mBAAoBlI,EAAkBt1V,YACpC,CAACz9R,EAAU1vC,EAAM23T,EAAUwrF,EAAYwnR,EAAiBlI,EAAkBt1V,YAM5Eg2E,aACAztX,UAAWga,OAAWl3C,EAAYk9B,EAClCjtC,OACAusqB,OACA4V,aACAC,sBACA//qB,YAEJ,CAEA,SAASkgrB,KACP,OAAO,IAAAv/b,YAAWk3b,GACpB,CAEA,MAAMsI,GAAc,YACdC,GAA8B,CAClC7rmB,QAAS,IAEX,SAAS8rmB,GAAar+qB,GACpB,IAAI,KACF2K,EAAI,SACJi4C,GAAW,EAAK,GAChBjwC,EAAE,qBACF2rqB,GACEt+qB,EACJ,MAAMZ,GAAM,QAAY++qB,KAClB,OACJxloB,EAAM,SACN2vD,EAAQ,KACR4/jB,EAAI,2BACJsN,IACE,IAAA72b,YAAWi3b,IACT5xoB,GAAW,IAAAnwB,QAAO,CACtB+uC,aAEI27nB,GAA0B,IAAA1qqB,SAAO,GACjCpS,GAAO,IAAAoS,QAAO,MACd4uR,GAAa,IAAA5uR,QAAO,OAExB+uC,SAAU47nB,EAAsB,sBAChCC,EACAlsmB,QAASmsmB,GACP,IAAKN,MACJE,GAEC7rqB,GAAM,QAAwC,MAAzBgsqB,EAAgCA,EAAwB9rqB,GAmB7EugqB,EAAiBF,GAAkB,CACvClvpB,UAnBmB,IAAAhQ,aAAY,KAC1ByqqB,EAAwB9zqB,SAOH,MAAtBg4R,EAAWh4R,SACb8R,aAAakmR,EAAWh4R,SAG1Bg4R,EAAWh4R,QAAU4R,WAAW,KAC9Bm5pB,EAA2BtsqB,MAAMyb,QAAQlS,EAAIhI,SAAWgI,EAAIhI,QAAU,CAACgI,EAAIhI,UAC3Eg4R,EAAWh4R,QAAU,MACpBi0qB,IAXDH,EAAwB9zqB,SAAU,GAatC,CAACi0qB,IAGC97nB,SAAU47nB,IAA2B7loB,IAEjCkhoB,GAAmB,IAAA/lqB,aAAY,CAACqlQ,EAAYq5C,KAC3C0gX,IAID1gX,IACF0gX,EAAeyL,UAAUnsX,GACzB+rX,EAAwB9zqB,SAAU,GAGhC0uQ,GACF+5Z,EAAeh5mB,QAAQi/M,KAExB,CAAC+5Z,KACGn8N,EAAS+mO,IAAc,QAAWjE,GACnCoE,GAAU,QAAetzqB,GAwC/B,OAvCA,IAAA8J,WAAU,KACHy+pB,GAAmBn8N,EAAQtsc,UAIhCyoqB,EAAexzpB,aACf6+pB,EAAwB9zqB,SAAU,EAClCyoqB,EAAeh5mB,QAAQ68Y,EAAQtsc,WAC9B,CAACssc,EAASm8N,KACb,IAAAz+pB,WAAU,KACR6zF,EAAS,CACP1jF,KAAMskpB,EAAOgN,kBACbh7qB,QAAS,CACPyX,KACAvT,MACAwjD,WACAjnD,KAAMo7c,EACNt1c,OACAkJ,KAAMszqB,KAGH,IAAM31kB,EAAS,CACpB1jF,KAAMskpB,EAAOkN,oBACbh3qB,MACAuT,QAGJ,CAACA,KACD,IAAA8B,WAAU,KACJmuC,IAAa5e,EAASv5B,QAAQm4C,WAChC0lD,EAAS,CACP1jF,KAAMskpB,EAAOiN,qBACbxjqB,KACAvT,MACAwjD,aAEF5e,EAASv5B,QAAQm4C,SAAWA,IAE7B,CAACjwC,EAAIvT,EAAKwjD,EAAU0lD,IAChB,CACL3vD,SACAl3C,OACAm9qB,QAAiB,MAAR1W,OAAe,EAASA,EAAKv1pB,MAAQA,EAC9ChX,KAAMo7c,EACNmxN,OACA4V,aAEJ,CAEA,SAASe,GAAiB7+qB,GACxB,IAAI,UACF29B,EAAS,SACTyuF,GACEpsH,EACJ,MAAO8+qB,EAAgBC,IAAqB,IAAA7qqB,UAAS,OAC9ChZ,EAAS8jrB,IAAc,IAAA9qqB,UAAS,MACjC+qqB,GAAmB,QAAY7yjB,GAuBrC,OArBKA,GAAa0yjB,IAAkBG,GAClCF,EAAkBE,IAGpB,QAA0B,KACxB,IAAK/jrB,EACH,OAGF,MAAMkE,EAAwB,MAAlB0/qB,OAAyB,EAASA,EAAe1/qB,IACvDuT,EAAuB,MAAlBmsqB,OAAyB,EAASA,EAAe93oB,MAAMr0B,GAEvD,MAAPvT,GAAqB,MAANuT,EAKnBpH,QAAQC,QAAQmyB,EAAUhrB,EAAIzX,IAAUuQ,KAAK,KAC3CszqB,EAAkB,QALlBA,EAAkB,OAOnB,CAACphpB,EAAWmhpB,EAAgB5jrB,IACxB,gBAAoB,WAAgB,KAAMkxH,EAAU0yjB,GAAiB,IAAAxuV,cAAawuV,EAAgB,CACvGr3jB,IAAKu3jB,IACF,KACP,CAEA,MAAME,GAAmB,CACvB/jrB,EAAG,EACH5C,EAAG,EACHo8Z,OAAQ,EACRC,OAAQ,GAEV,SAASuqR,GAAyBn/qB,GAChC,IAAI,SACFosH,GACEpsH,EACJ,OAAO,gBAAoB41qB,GAAgBhjV,SAAU,CACnDr4V,MAAOm7qB,IACN,gBAAoBiB,GAAuB/jV,SAAU,CACtDr4V,MAAO2krB,IACN9yjB,GACL,CAEA,MAAMgzjB,GAAa,CACjB1hrB,SAAU,QACV2hrB,YAAa,QAGTC,GAAoBpK,IACI,QAAgBA,GACf,4BAAyBxpqB,EAGlD6zqB,IAAiC,IAAAvsV,YAAW,CAAChzV,EAAMynH,KACvD,IAAI,GACF62H,EAAE,eACF42b,EAAc,YACdgG,EAAW,SACX9ujB,EAAQ,UACR1N,EAAS,KACTj9G,EAAI,MACJ68B,EAAK,UACLtgC,EAAS,WACT8lD,EAAaw7nB,IACXt/qB,EAEJ,IAAKyB,EACH,OAAO,KAGT,MAAM+9qB,EAAyBtE,EAAcl9qB,EAAY,IAAKA,EAC5D22Z,OAAQ,EACRC,OAAQ,GAEJ9qZ,EAAS,IAAKs1qB,GAClB9jrB,MAAOmG,EAAKnG,MACZE,OAAQiG,EAAKjG,OACboD,IAAK6C,EAAK7C,IACVG,KAAM0C,EAAK1C,KACXf,UAAW,KAAIu5Z,UAAU37Z,SAAS4jrB,GAClC9T,gBAAiBwP,GAAehG,EAAiB1L,EAA2B0L,EAAgBzzqB,QAAQiK,EACpGo4C,WAAkC,mBAAfA,EAA4BA,EAAWoxnB,GAAkBpxnB,KACzExlB,GAEL,OAAO,gBAAoBggN,EAAI,CAC7B5/H,YACApgF,MAAOx0B,EACP29G,OACC2E,KAGCqzjB,GAAkCj7qB,GAAWxE,IACjD,IAAI,OACF24C,EAAM,YACN+7nB,GACE10qB,EACJ,MAAM0/qB,EAAiB,CAAC,GAClB,OACJ51qB,EAAM,UACN40G,GACEl6G,EAEJ,GAAc,MAAVsF,GAAkBA,EAAO6uC,OAC3B,IAAK,MAAOv5C,EAAK7E,KAAUmE,OAAOo7D,QAAQhwD,EAAO6uC,aACjCjtC,IAAVnR,IAIJmlrB,EAAetgrB,GAAOu5C,EAAOh9C,KAAK2iC,MAAM8T,iBAAiBhzC,GACzDu5C,EAAOh9C,KAAK2iC,MAAM2V,YAAY70C,EAAK7E,IAIvC,GAAc,MAAVuP,GAAkBA,EAAO4qqB,YAC3B,IAAK,MAAOt1qB,EAAK7E,KAAUmE,OAAOo7D,QAAQhwD,EAAO4qqB,kBACjChpqB,IAAVnR,GAIJm6qB,EAAY/4qB,KAAK2iC,MAAM2V,YAAY70C,EAAK7E,GAY5C,OARiB,MAAbmkH,GAAqBA,EAAU/lE,QACjCA,EAAOh9C,KAAK4iH,UAAUr2G,IAAIw2G,EAAU/lE,QAGrB,MAAb+lE,GAAqBA,EAAUg2jB,aACjCA,EAAY/4qB,KAAK4iH,UAAUr2G,IAAIw2G,EAAUg2jB,aAGpC,WACL,IAAK,MAAOt1qB,EAAK7E,KAAUmE,OAAOo7D,QAAQ4lnB,GACxC/moB,EAAOh9C,KAAK2iC,MAAM2V,YAAY70C,EAAK7E,GAGpB,MAAbmkH,GAAqBA,EAAU/lE,QACjCA,EAAOh9C,KAAK4iH,UAAU/mE,OAAOknE,EAAU/lE,OAE3C,GAiBIgnoB,GAAoC,CACxC7lqB,SAAU,IACVq+B,OAAQ,OACRynoB,UAjB8BrgrB,IAC9B,IACEvB,WAAW,QACTq4C,EAAO,MACPomB,IAEAl9D,EACJ,MAAO,CAAC,CACNvB,UAAW,KAAIu5Z,UAAU37Z,SAASy6C,IACjC,CACDr4C,UAAW,KAAIu5Z,UAAU37Z,SAAS6gE,MAQpCojnB,YAA0BJ,GAAgC,CACxD31qB,OAAQ,CACN6uC,OAAQ,CACNtmC,QAAS,SAuIjB,IAAIjT,GAAM,EACV,SAAS0grB,GAAOntqB,GACd,OAAO,IAAA6B,SAAQ,KACb,GAAU,MAAN7B,EAKJ,OADAvT,KACOA,IACN,CAACuT,GACN,CAEA,MAAMotqB,GAA2B,OAAW//qB,IAC1C,IAAI,YACFk7qB,GAAc,EAAK,SACnB9ujB,EACA4zjB,cAAeC,EAAmB,MAClC3hpB,EAAK,WACLwlB,EAAU,UACVp8C,EAAS,eACTw4qB,EAAiB,MAAK,UACtBxhkB,EAAS,OACTk3U,EAAS,KACP51b,EACJ,MAAM,eACJk1qB,EAAc,OACdv8nB,EAAM,eACNw8nB,EAAc,kBACdC,EAAiB,eACjBC,EAAc,oBACdjL,EAAmB,YACnBsK,EAAW,KACXxM,EAAI,uBACJqN,EAAsB,oBACtBzH,EAAmB,wBACnBwH,EAAuB,WACvB1vS,GACEs4S,KACElgrB,GAAY,IAAA2gP,YAAWg4b,IACvBv3qB,EAAM0grB,GAAiB,MAAVnnoB,OAAiB,EAASA,EAAOhmC,IAC9CwtqB,EAAoBzJ,GAAehvqB,EAAW,CAClDwtqB,iBACAv8nB,SACAw8nB,iBACAC,oBACAzvS,iBAAkB+uS,EAAYjzqB,KAC9BymqB,OACAqS,gBAAiB7F,EAAYjzqB,KAC7BqsqB,sBACAwH,0BACAt3qB,YACA4nY,eAEIyzS,EAAcvG,GAAgBqC,GAC9B6K,EAxLR,SAA0BlgrB,GACxB,IAAI,OACF6T,EAAM,eACN0hqB,EAAc,oBACdjL,EAAmB,uBACnBmL,GACEz1qB,EACJ,OAAO,QAAS,CAAC6S,EAAIhX,KACnB,GAAe,OAAXgY,EACF,OAGF,MAAMysqB,EAAkB/K,EAAe5sqB,IAAIkK,GAE3C,IAAKytqB,EACH,OAGF,MAAM1Q,EAAa0Q,EAAgBzkrB,KAAK8O,QAExC,IAAKilqB,EACH,OAGF,MAAM2Q,EAAiBjM,GAAkBz4qB,GAEzC,IAAK0krB,EACH,OAGF,MAAM,UACJrirB,IACE,QAAUrC,GAAMsB,iBAAiBtB,GAC/BgwqB,EAAkBJ,EAAevtqB,GAEvC,IAAK2tqB,EACH,OAGF,MAAMhuoB,EAA8B,mBAAXhqB,EAAwBA,EAqBrD,SAAoCnP,GAClC,MAAM,SACJsV,EAAQ,OACRq+B,EAAM,YACN0noB,EAAW,UACXD,GACE,IAAKD,MACJn7qB,GAEL,OAAO8H,IACL,IAAI,OACFqsC,EAAM,YACN+7nB,EAAW,UACX12qB,KACGomB,GACD9X,EAEJ,IAAKwN,EAEH,OAGF,MAAMs1B,EACDsloB,EAAYjzqB,KAAK1C,KAAO45C,EAAOl3C,KAAK1C,KADnCqwC,EAEDsloB,EAAYjzqB,KAAK7C,IAAM+5C,EAAOl3C,KAAK7C,IAElC4gC,EAAQ,CACZm1X,OAA6B,IAArB32Z,EAAU22Z,OAAeh8W,EAAOl3C,KAAKnG,MAAQ0C,EAAU22Z,OAAS+/Q,EAAYjzqB,KAAKnG,MAAQ,EACjGs5Z,OAA6B,IAArB52Z,EAAU42Z,OAAej8W,EAAOl3C,KAAKjG,OAASwC,EAAU42Z,OAAS8/Q,EAAYjzqB,KAAKjG,OAAS,GAE/F8krB,EAAiB,CACrBnlrB,EAAG6C,EAAU7C,EAAIi0C,EACjB72C,EAAGyF,EAAUzF,EAAI62C,KACd5P,GAEC+gpB,EAAqBX,EAAU,IAAKx7pB,EACxCu0B,SACA+7nB,cACA12qB,UAAW,CACTq4C,QAASr4C,EACTy+D,MAAO6jnB,MAGJE,GAAiBD,EAClBE,EAAeF,EAAmBA,EAAmBv3qB,OAAS,GAEpE,GAAIuV,KAAKC,UAAUgiqB,KAAmBjiqB,KAAKC,UAAUiiqB,GAEnD,OAGF,MAAM/tS,EAAyB,MAAfmtS,OAAsB,EAASA,EAAY,CACzDlnoB,SACA+7nB,iBACGtwpB,IAECuZ,EAAY+2oB,EAAY/4qB,KAAKi2F,QAAQ2ulB,EAAoB,CAC7DzmqB,WACAq+B,SACA9U,KAAM,aAER,OAAO,IAAI93B,QAAQC,IACjBmyB,EAAU+ipB,SAAW,KACR,MAAXhuS,GAA2BA,IAC3BlnY,OAIR,CAzF8Dm1qB,CAA2BhtqB,GAErF,OADAo6pB,EAAuB2B,EAAY6F,EAAuBl1V,UAAUs7H,SAC7Dh+a,EAAU,CACfgb,OAAQ,CACNhmC,KACAhI,KAAMy1qB,EAAgBz1qB,KACtBhP,KAAM+zqB,EACNjuqB,KAAM8zqB,EAAuBl1V,UAAUs7H,QAAQ+zN,IAEjD2F,iBACAX,YAAa,CACX/4qB,OACA8F,KAAM8zqB,EAAuBb,YAAY/4N,QAAQ0kO,IAEnDjW,sBACAmL,yBACAv3qB,UAAW2tqB,KAGjB,CA8HwBiV,CAAiB,CACrCjtqB,OAAQssqB,EACR5K,iBACAjL,sBACAmL,2BAII9tjB,EAAM4xjB,EAAc3E,EAAY76H,YAASnuiB,EAC/C,OAAO,gBAAoByzqB,GAA0B,KAAM,gBAAoBN,GAAkB,CAC/FlhpB,UAAWqipB,GACVrnoB,GAAUv5C,EAAM,gBAAoBmgrB,GAAmB,CACxDngrB,IAAKA,EACLuT,GAAIgmC,EAAOhmC,GACX80G,IAAKA,EACL62H,GAAI4hc,EACJhL,eAAgBA,EAChBgG,YAAaA,EACbx8jB,UAAWA,EACX56D,WAAYA,EACZriD,KAAM43qB,EACN/6oB,MAAO,CACLs3Z,YACGt3Z,GAELtgC,UAAWmirB,GACV/zjB,GAAY,Q,+BC33HjB,IAAItO,EAAQ,eASR+ikB,EAA0B,WAI1B,SAASA,IACLnirB,OAAO0hC,iBAAiBxrB,KAAM,CAC1BksqB,WAAY,CACRvmrB,MAAO,IAEXwmrB,UAAW,CACPxmrB,OAAO,EACP8lC,UAAU,GAEdw0Q,OAAQ,CACJt6S,MAAO,KACP8lC,UAAU,IAGtB,CAgCA,OA1BAwgpB,EAAS7rqB,UAAUk2H,IAAM,SAAU3wI,GAC/Bqa,KAAKmsqB,WAAY,EACjBnsqB,KAAKigS,OAASt6S,EACd,IAAI2kH,EAAWtqG,KAAKksqB,WAAWhkoB,QAI/B,OAHIoiE,GACAA,EAAS1zG,QAAQjR,GAEdqa,IACX,EAKAisqB,EAAS7rqB,UAAUm0Y,KAAO,WACtB,IAAIrwY,EAAQlE,KACZ,GAAIA,KAAKmsqB,YAAcnsqB,KAAKksqB,WAAW93qB,OAEnC,OADA4L,KAAKmsqB,WAAY,EACVx1qB,QAAQC,QAAQoJ,KAAKigS,QAEhC,IAAI31L,EAAWpB,IAEf,OADAlpG,KAAKksqB,WAAWp4qB,KAAKw2G,GACdA,EAAS+X,QAAQxrH,KAAK,SAAUlR,GAEnC,OADAue,EAAMioqB,WAAY,EACXxmrB,CACX,EACJ,EACOsmrB,CACX,CAnD6B,GAoD7BvqlB,EAAOj9F,QAAUwnrB,C,2GClBF,SAAS1jmB,EAAIjnC,EAAMp8B,GAEhC,IADA,EAAAyuP,EAAA,GAAa,EAAGx/P,YACX+Q,GAAkC,YAAtB,OAAQA,GAAwB,OAAO,IAAI2D,KAAKvjB,KACjE,IAAIomf,EAAQxme,EAASwme,OAAQ,EAAA93O,EAAA,GAAU1uP,EAASwme,OAAS,EACrDzqf,EAASikB,EAASjkB,QAAS,EAAA2yQ,EAAA,GAAU1uP,EAASjkB,QAAU,EACxD2qf,EAAQ1me,EAAS0me,OAAQ,EAAAh4O,EAAA,GAAU1uP,EAAS0me,OAAS,EACrDr4Y,EAAOruF,EAASquF,MAAO,EAAAqgK,EAAA,GAAU1uP,EAASquF,MAAQ,EAClD63F,EAAQlmL,EAASkmL,OAAQ,EAAAwoE,EAAA,GAAU1uP,EAASkmL,OAAS,EACrDC,EAAUnmL,EAASmmL,SAAU,EAAAuoE,EAAA,GAAU1uP,EAASmmL,SAAW,EAC3DC,EAAUpmL,EAASomL,SAAU,EAAAsoE,EAAA,GAAU1uP,EAASomL,SAAW,EAM3D8gf,ECtCS,SAAiBhnkB,EAAWC,IACzC,EAAAsuJ,EAAA,GAAa,EAAGx/P,WAChB,IAAIgpD,GAAS,EAAAy2M,EAAA,GAAUvuJ,GACvB,OAAO,EAAAsvM,EAAA,GAAQvvM,GAAYjoD,EAC7B,CDkCwBkvnB,EAHE,EAAAC,EAAA,GAAUhroB,EAAMrgD,EAAiB,GAARyqf,GAGAn4Y,EAAe,EAARq4Y,GAKpD2gM,EAAyB,KADVjhf,EAAyB,IADzBD,EAAkB,GAARD,IAI7B,OADgB,IAAIviL,KAAKujqB,EAAgB3mkB,UAAY8mkB,EAEvD,C,iHE5DA,SAASC,EAAUn4pB,EAAOwQ,EAAMD,GAC9B,MAAM6npB,EAAWp4pB,EAAMvZ,QAEvB,OADA2xqB,EAAS1/oB,OAAOnI,EAAK,EAAI6npB,EAASr4qB,OAASwwB,EAAKA,EAAI,EAAG6npB,EAAS1/oB,OAAOlI,EAAM,GAAG,IACzE4npB,CACT,CAYA,SAASC,EAAex4oB,EAAOtjC,GAC7B,OAAOsjC,EAAM5pC,OAAO,CAACo1N,EAAa3hN,EAAIvH,KACpC,MAAM3J,EAAO+D,EAAMiD,IAAIkK,GAMvB,OAJIlR,IACF6yN,EAAYlpN,GAAS3J,GAGhB6yN,GACNprN,MAAM4/B,EAAM9/B,QACjB,CAEA,SAASu4qB,EAAan2qB,GACpB,OAAiB,OAAVA,GAAkBA,GAAS,CACpC,CA2GA,MAAMo2qB,EAAsBxhrB,IAC1B,IAAI,MACFwF,EAAK,YACLi8qB,EAAW,UACXC,EAAS,MACTt2qB,GACEpL,EACJ,MAAM2hrB,EAAWP,EAAU57qB,EAAOk8qB,EAAWD,GACvCG,EAAUp8qB,EAAM4F,GAChBqoqB,EAAUkO,EAASv2qB,GAEzB,OAAKqoqB,GAAYmO,EAIV,CACLzmrB,EAAGs4qB,EAAQ10qB,KAAO6irB,EAAQ7irB,KAC1BxG,EAAGk7qB,EAAQ70qB,IAAMgjrB,EAAQhjrB,IACzB+1Z,OAAQ8+Q,EAAQn4qB,MAAQsmrB,EAAQtmrB,MAChCs5Z,OAAQ6+Q,EAAQj4qB,OAASomrB,EAAQpmrB,QAP1B,MAuHLmirB,EAAY,WACZ3kc,EAAuB,gBAAoB,CAC/Cyoc,aAAc,EACdI,YAAalE,EACbmE,mBAAmB,EACnBh5oB,MAAO,GACP44oB,WAAY,EACZK,gBAAgB,EAChBC,YAAa,GACb17qB,SAAUk7qB,EACV5+nB,SAAU,CACRy9R,WAAW,EACX4sN,WAAW,KAGf,SAASg1I,EAAgBjirB,GACvB,IAAI,SACFosH,EAAQ,GACRz5G,EACAm2B,MAAOo5oB,EAAgB,SACvB57qB,EAAWk7qB,EACX5+nB,SAAUu/nB,GAAe,GACvBnirB,EACJ,MAAM,OACJ24C,EAAM,YACN+7nB,EAAW,eACXvK,EAAc,KACdjC,EAAI,2BACJsN,IACE,UACEqM,GAAc,QAAYlE,EAAWhrqB,GACrCovqB,EAAiBlmlB,QAA6B,OAArB64kB,EAAYjzqB,MACrCqnC,GAAQ,IAAAt0B,SAAQ,IAAM0tqB,EAAiBv6qB,IAAIigB,GAAwB,iBAATA,GAAqB,OAAQA,EAAOA,EAAKjV,GAAKiV,GAAO,CAACs6pB,IAChH7rR,EAAuB,MAAV19W,EACb8ooB,EAAc9ooB,EAAS7P,EAAM3rC,QAAQw7C,EAAOhmC,KAAO,EACnD+uqB,EAAYxZ,EAAOp/nB,EAAM3rC,QAAQ+qqB,EAAKv1pB,KAAO,EAC7CyvqB,GAAmB,IAAAvuqB,QAAOi1B,GAC1Bu5oB,GAjRR,SAAoB7zqB,EAAGC,GACrB,GAAID,IAAMC,EACR,OAAO,EAGT,GAAID,EAAExF,SAAWyF,EAAEzF,OACjB,OAAO,EAGT,IAAK,IAAI/O,EAAI,EAAGA,EAAIuU,EAAExF,OAAQ/O,IAC5B,GAAIuU,EAAEvU,KAAOwU,EAAExU,GACb,OAAO,EAIX,OAAO,CACT,CAiQ4BqorB,CAAWx5oB,EAAOs5oB,EAAiB33qB,SACvDq3qB,GAAmC,IAAfJ,IAAqC,IAAjBD,GAAsBY,EAC9Dz/nB,EAjQR,SAA2BA,GACzB,MAAwB,kBAAbA,EACF,CACLy9R,UAAWz9R,EACXqqf,UAAWrqf,GAIRA,CACT,CAwPmB2/nB,CAAkBJ,IACnC,QAA0B,KACpBE,GAAoBhsR,GACtBm/Q,EAA2B1soB,IAE5B,CAACu5oB,EAAkBv5oB,EAAOutX,EAAYm/Q,KACzC,IAAA/gqB,WAAU,KACR2tqB,EAAiB33qB,QAAUq+B,GAC1B,CAACA,IACJ,MAAM62kB,GAAe,IAAAnrmB,SAAQ,KAAM,CACjCitqB,cACAI,cACAj/nB,WACAk/nB,oBACAh5oB,QACA44oB,YACAK,iBACAC,YAAaV,EAAex4oB,EAAOqhoB,GACnC7jqB,aAEF,CAACm7qB,EAAaI,EAAaj/nB,EAASy9R,UAAWz9R,EAASqqf,UAAW60I,EAAmBh5oB,EAAO44oB,EAAWvX,EAAgB4X,EAAgBz7qB,IACxI,OAAO,gBAAoB0yO,EAAQ45G,SAAU,CAC3Cr4V,MAAOolnB,GACNvzf,EACL,CAEA,MAAMo2jB,EAAwBxirB,IAC5B,IAAI,GACF2S,EAAE,MACFm2B,EAAK,YACL24oB,EAAW,UACXC,GACE1hrB,EACJ,OAAOohrB,EAAUt4oB,EAAO24oB,EAAaC,GAAWvkrB,QAAQwV,IAEpD8vqB,EAA8BljrB,IAClC,IAAI,YACFsirB,EAAW,UACXa,EAAS,YACTC,EAAW,MACXv3qB,EAAK,MACL09B,EAAK,SACLgwU,EAAQ,cACR8pU,EAAa,oBACbC,EAAmB,WACnB/+nB,GACEvkD,EAEJ,SAAKukD,IAAe6+nB,GAIhBC,IAAkB95oB,GAAS19B,IAAU0tW,IAIrC4pU,IAIG5pU,IAAa1tW,GAASy2qB,IAAgBgB,KAEzCvD,EAAoB,CACxBxlqB,SAAU,IACVq+B,OAAQ,QAEJ2qoB,EAAqB,YACrBC,EAAkC,KAAIj3V,WAAWlwV,SAAS,CAC9DstB,SAAU45pB,EACVhpqB,SAAU,EACVq+B,OAAQ,WAEJ6qoB,EAAoB,CACxBnF,gBAAiB,YAkDnB,SAASoF,EAAYjjrB,GACnB,IAAI,qBACFkjrB,EAAuBT,EACvB54qB,WAAYs5qB,EACZvgoB,SAAUwgoB,EACVz4qB,KAAM04qB,EAAU,YAChBC,EAAcd,EAAqB,GACnC7vqB,EACArM,SAAUi9qB,EAAa,qBACvBjF,EAAoB,WACpBx6nB,EAAaw7nB,GACXt/qB,EACJ,MAAM,MACJ8oC,EAAK,YACL+4oB,EAAW,YACXJ,EACA7+nB,SAAU4goB,EAAc,kBACxB1B,EAAiB,YACjBE,EAAW,UACXN,EAAS,eACTK,EACAz7qB,SAAUm9qB,IACR,IAAA9kc,YAAW3F,GACTp2L,EAoKR,SAAgCwgoB,EAAeI,GAC7C,IAAIE,EAAuBC,EAE3B,MAA6B,kBAAlBP,EACF,CACL/iW,UAAW+iW,EAEXn2I,WAAW,GAIR,CACL5sN,UAAiG,OAArFqjW,EAAyC,MAAjBN,OAAwB,EAASA,EAAc/iW,WAAqBqjW,EAAwBF,EAAenjW,UAC/I4sN,UAAiG,OAArF02I,EAAyC,MAAjBP,OAAwB,EAASA,EAAcn2I,WAAqB02I,EAAwBH,EAAev2I,UAEnJ,CAnLmB22I,CAAuBR,EAAeI,GACjDp4qB,EAAQ09B,EAAM3rC,QAAQwV,GACtBhI,GAAO,IAAA6J,SAAQ,KAAM,CACzBm8oB,SAAU,CACRkxB,cACAz2qB,QACA09B,YAECu6oB,IACD,CAACxB,EAAawB,EAAYj4qB,EAAO09B,IAC/B+6oB,GAA4B,IAAArvqB,SAAQ,IAAMs0B,EAAMp5B,MAAMo5B,EAAM3rC,QAAQwV,IAAM,CAACm2B,EAAOn2B,KAClF,KACJlR,EAAI,KACJ9F,EAAI,OACJijrB,EACAd,WAAYgG,IACV,QAAa,CACfnxqB,KACAhI,OACAi4C,SAAUA,EAASqqf,UACnBqxI,qBAAsB,CACpBG,sBAAuBoF,KACpBvF,MAGD,OACJ3loB,EAAM,eACNu8nB,EAAc,eACdC,EAAc,WACdtrqB,EACAi0qB,WAAYiG,EAAmB,UAC/Bn7oB,EAAS,WACTytX,EAAU,KACV6xQ,EAAI,oBACJ6V,EAAmB,UACnB//qB,IACE,QAAa,CACf2U,KACAhI,OACAd,WAAY,IAAKm5qB,KACZG,GAELvgoB,SAAUA,EAASy9R,YAEfy9V,GAAa,QAAgBgG,EAAqBC,GAClDrB,EAAY7mlB,QAAQljD,GACpBqroB,EAAetB,IAAcZ,GAAqBP,EAAaE,IAAgBF,EAAaG,GAC5FuC,GAA4BlC,GAAkB1rR,EAC9C6tR,EAAyBD,GAA4BD,EAAehmrB,EAAY,KAEhFsirB,EAAiB0D,EAAyC,MAA1BE,EAAiCA,GADrC,MAAjBX,EAAwBA,EAAgBE,GACgD,CACvGj+qB,MAAOw8qB,EACP7M,iBACAsM,cACAC,YACAt2qB,UACG,KACC0tW,GAAWyoU,EAAaE,IAAgBF,EAAaG,GAAa4B,EAAY,CAClF3wqB,KACAm2B,QACA24oB,cACAC,cACGt2qB,EACCq9f,GAAqB,MAAV9vd,OAAiB,EAASA,EAAOhmC,GAC5CqxB,IAAW,IAAAnwB,QAAO,CACtB40f,YACA3/d,QACAgwU,YACA+oU,gBAEIQ,GAAmBv5oB,IAAU9E,GAASv5B,QAAQq+B,MAC9Cq7oB,GAA6BjB,EAAqB,CACtDvqoB,SACAkpoB,cACAxrR,aACAqsR,YACA/vqB,KACAvH,QACA09B,QACAgwU,SAAU90U,GAASv5B,QAAQquW,SAC3B8pU,cAAe5+oB,GAASv5B,QAAQq+B,MAChC+5oB,oBAAqB7+oB,GAASv5B,QAAQo3qB,YACtC/9nB,aACA6+nB,YAA0C,MAA7B3+oB,GAASv5B,QAAQg+f,WAE1B27K,GAtJR,SAA6BpkrB,GAC3B,IAAI,SACF4iD,EAAQ,MACRx3C,EAAK,KACLzP,EAAI,KACJ8F,GACEzB,EACJ,MAAOokrB,EAAkBC,IAAuB,IAAAnwqB,UAAS,MACnDowqB,GAAgB,IAAAzwqB,QAAOzI,GA+B7B,OA9BA,QAA0B,KACxB,IAAKw3C,GAAYx3C,IAAUk5qB,EAAc75qB,SAAW9O,EAAK8O,QAAS,CAChE,MAAM4rC,EAAU50C,EAAKgJ,QAErB,GAAI4rC,EAAS,CACX,MAAM5rC,GAAU,QAAc9O,EAAK8O,QAAS,CAC1CghqB,iBAAiB,IAEbr8nB,EAAQ,CACZj0C,EAAGk7C,EAAQt3C,KAAO0L,EAAQ1L,KAC1BxG,EAAG89C,EAAQz3C,IAAM6L,EAAQ7L,IACzB+1Z,OAAQt+W,EAAQ/6C,MAAQmP,EAAQnP,MAChCs5Z,OAAQv+W,EAAQ76C,OAASiP,EAAQjP,SAG/B4zC,EAAMj0C,GAAKi0C,EAAM72C,IACnB8rrB,EAAoBj1oB,EAExB,CACF,CAEIhkC,IAAUk5qB,EAAc75qB,UAC1B65qB,EAAc75qB,QAAUW,IAEzB,CAACw3C,EAAUx3C,EAAOzP,EAAM8F,KAC3B,IAAAgT,WAAU,KACJ2vqB,GACFC,EAAoB,OAErB,CAACD,IACGA,CACT,CA8G2BG,CAAoB,CAC3C3hoB,UAAWuhoB,GACX/4qB,QACAzP,OACA8F,SA8BF,OA5BA,IAAAgT,WAAU,KACJiuqB,GAAa1+oB,GAASv5B,QAAQquW,WAAaA,KAC7C90U,GAASv5B,QAAQquW,SAAWA,IAG1B+oU,IAAgB79oB,GAASv5B,QAAQo3qB,cACnC79oB,GAASv5B,QAAQo3qB,YAAcA,GAG7B/4oB,IAAU9E,GAASv5B,QAAQq+B,QAC7B9E,GAASv5B,QAAQq+B,MAAQA,IAE1B,CAAC45oB,EAAW5pU,GAAU+oU,EAAa/4oB,KACtC,IAAAr0B,WAAU,KACR,GAAIg0f,KAAazke,GAASv5B,QAAQg+f,SAChC,OAGF,GAAIA,KAAazke,GAASv5B,QAAQg+f,SAEhC,YADAzke,GAASv5B,QAAQg+f,SAAWA,IAI9B,MAAMhlP,EAAYpnQ,WAAW,KAC3B2nB,GAASv5B,QAAQg+f,SAAWA,IAC3B,IACH,MAAO,IAAMlsf,aAAaknQ,IACzB,CAACglP,KACG,CACL9vd,SACA8ooB,cACA53qB,aACAc,OACAlJ,OACA2J,QACA0tW,YACAhwU,QACA81oB,SACA8D,YACArsR,aACAztX,YACAjtC,OACA+lrB,YACAxZ,OACA4V,aACAC,sBACA+F,sBACAC,sBACA/lrB,UAA+B,MAApBomrB,GAA2BA,GAAmB9D,EACzDx8nB,WAKAsgoB,IACA/B,IAAoBr+oB,GAASv5B,QAAQquW,WAAa1tW,EACzC23qB,EAGLkB,KAA6B,QAAgB/O,KAAoBpxnB,OAArE,EAII4+nB,GAAayB,GACR,KAAIr4V,WAAWlwV,SAAS,IAAKkoD,EAClC56B,SAAU45pB,SAFd,EAQJ,CAmBA,SAAS0B,EAAgBh+nB,GACvB,IAAKA,EACH,OAAO,EAGT,MAAM77C,EAAO67C,EAAM77C,KAAKF,QAExB,SAAIE,GAAQ,aAAcA,GAAiC,iBAAlBA,EAAKgmpB,UAAyB,gBAAiBhmpB,EAAKgmpB,UAAY,UAAWhmpB,EAAKgmpB,UAAY,UAAWhmpB,EAAKgmpB,SAKvJ,CAEA,MAAM8zB,EAAa,CAAC,KAAa1nP,KAAM,KAAavuQ,MAAO,KAAasuQ,GAAI,KAAavuQ,MACnFm2f,EAA8B,CAAC3jqB,EAAO/gB,KAC1C,IACE+9B,SAAS,OACP4a,EAAM,cACNuxnB,EAAa,eACbC,EAAc,oBACdC,EAAmB,KACnBlC,EAAI,oBACJ4F,IAEA9tqB,EAEJ,GAAIykrB,EAAWl6oB,SAASxpB,EAAMqiF,MAAO,CAGnC,GAFAriF,EAAMwgH,kBAED5oF,IAAWuxnB,EACd,OAGF,MAAMya,EAAqB,GAC3Bva,EAAoByK,aAAajuqB,QAAQ4/C,IACvC,IAAKA,GAAkB,MAATA,GAAiBA,EAAM5D,SACnC,OAGF,MAAMnhD,EAAO0oqB,EAAe1hqB,IAAI+9C,EAAM7zC,IAEtC,GAAKlR,EAIL,OAAQsf,EAAMqiF,MACZ,KAAK,KAAa25V,KACZmtO,EAActrqB,IAAM6C,EAAK7C,KAC3B+lrB,EAAmBj8qB,KAAK89C,GAG1B,MAEF,KAAK,KAAas2Y,GACZotO,EAActrqB,IAAM6C,EAAK7C,KAC3B+lrB,EAAmBj8qB,KAAK89C,GAG1B,MAEF,KAAK,KAAa+nI,KACZ27e,EAAcnrqB,KAAO0C,EAAK1C,MAC5B4lrB,EAAmBj8qB,KAAK89C,GAG1B,MAEF,KAAK,KAAagoI,MACZ07e,EAAcnrqB,KAAO0C,EAAK1C,MAC5B4lrB,EAAmBj8qB,KAAK89C,MAMhC,MAAMsjnB,GAAa,QAAe,CAChCnxnB,SACAuxnB,cAAeA,EACfC,iBACAC,oBAAqBua,EACrBnK,mBAAoB,OAEtB,IAAIoK,GAAY,QAAkB9a,EAAY,MAM9C,GAJI8a,KAAuB,MAAR1c,OAAe,EAASA,EAAKv1pB,KAAOm3pB,EAAW9gqB,OAAS,IACzE47qB,EAAY9a,EAAW,GAAGn3pB,IAGX,MAAbiyqB,EAAmB,CACrB,MAAMC,EAAkBza,EAAoB3hqB,IAAIkwC,EAAOhmC,IACjDmyqB,EAAe1a,EAAoB3hqB,IAAIm8qB,GACvCnR,EAAUqR,EAAe3a,EAAe1hqB,IAAIq8qB,EAAanyqB,IAAM,KAC/D0jR,EAA0B,MAAhByuZ,OAAuB,EAASA,EAAanprB,KAAK8O,QAElE,GAAI4rR,GAAWo9Y,GAAWoR,GAAmBC,EAAc,CACzD,MACMC,GADqB,QAAuB1uZ,GACKnvR,KAAK,CAAChM,EAASkQ,IAAU0iqB,EAAoB1iqB,KAAWlQ,GACzG8prB,EAAmBC,EAAgBJ,EAAiBC,GACpDI,GA6BMz2qB,EA7BmCq2qB,KA8BhDN,EADUh2qB,EA7BqBq2qB,KA8BRL,EAAgB/1qB,OAIvCw2qB,EAAgBz2qB,EAAGC,IAIjBD,EAAE7D,KAAKF,QAAQkmpB,SAASvlpB,MAAQqD,EAAE9D,KAAKF,QAAQkmpB,SAASvlpB,OArCnD5R,EAASurrB,IAAgCC,EAAmB,CAChE7prB,EAAG,EACH5C,EAAG,GACD,CACF4C,EAAG+prB,EAAgBhb,EAAc5uqB,MAAQm4qB,EAAQn4qB,MAAQ,EACzD/C,EAAG2srB,EAAgBhb,EAAc1uqB,OAASi4qB,EAAQj4qB,OAAS,GAEvD2prB,EAAkB,CACtBhqrB,EAAGs4qB,EAAQ10qB,KACXxG,EAAGk7qB,EAAQ70qB,KAGb,OADuBpF,EAAO2B,GAAK3B,EAAOjB,EAAI4srB,GAAkB,QAASA,EAAiB3rrB,EAE5F,CACF,CACF,CAaF,IAAiBgV,EAAGC,GARpB,SAASw2qB,EAAgBz2qB,EAAGC,GAC1B,SAAK+1qB,EAAgBh2qB,KAAOg2qB,EAAgB/1qB,KAIrCD,EAAE7D,KAAKF,QAAQkmpB,SAASkxB,cAAgBpzqB,EAAE9D,KAAKF,QAAQkmpB,SAASkxB,WACzE,C,kBC/vBA,IAAIuD,EAAmB,EAAQ,OA2C/B9ulB,EAAOj9F,QA3BP,SAAyB6mD,EAAQuV,EAAOomc,GAOtC,IANA,IAAIzwf,GAAS,EACTi6qB,EAAcnloB,EAAO0yD,SACrB0ykB,EAAc7vnB,EAAMm9C,SACpB5pG,EAASq8qB,EAAYr8qB,OACrBu8qB,EAAe1pL,EAAO7yf,SAEjBoC,EAAQpC,GAAQ,CACvB,IAAIjB,EAASq9qB,EAAiBC,EAAYj6qB,GAAQk6qB,EAAYl6qB,IAC9D,GAAIrD,EACF,OAAIqD,GAASm6qB,EACJx9qB,EAGFA,GAAmB,QADd8zf,EAAOzwf,IACiB,EAAI,EAE5C,CAQA,OAAO80C,EAAO90C,MAAQqqD,EAAMrqD,KAC9B,C,+BCxCA,IAAIypH,EAAQ,EAAQ,OAGpBv+B,EAAOj9F,SAAWw7H,EAAM,WAEtB,OAA+E,IAAxEn2H,OAAOwY,eAAe,CAAC,EAAG,EAAG,CAAEzO,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,E,iICSA,SAAS+8qB,EAAWC,EAAW/9oB,GAC7B,IAAI2O,GAAU,IAAAniC,UAAS,WACrB,MAAO,CACLwzB,OAAQA,EACR3/B,OAAQ09qB,IAEZ,GAAG,GACCC,GAAY,IAAA7xqB,QAAOwiC,GAEnBlV,EADe06D,QAAQn0D,GAAUg+oB,EAAUj7qB,QAAQi9B,QAtBzD,SAAwBg1nB,EAAWC,GACjC,GAAID,EAAU1zpB,SAAW2zpB,EAAW3zpB,OAClC,OAAO,EAGT,IAAK,IAAI/O,EAAI,EAAGA,EAAIyiqB,EAAU1zpB,OAAQ/O,IACpC,GAAIyiqB,EAAUziqB,KAAO0iqB,EAAW1iqB,GAC9B,OAAO,EAIX,OAAO,CACT,CAUmEwiqB,CAAe/0nB,EAAQg+oB,EAAUj7qB,QAAQi9B,SAC/Eg+oB,EAAUj7qB,QAAU,CAC7Ci9B,OAAQA,EACR3/B,OAAQ09qB,KAKV,OAHA,IAAAhxqB,WAAU,WACRixqB,EAAUj7qB,QAAU02B,CACtB,EAAG,CAACA,IACGA,EAAMp5B,MACf,CAMA,IAAIyM,EAAUgxqB,EACV1xqB,EANJ,SAAwBgQ,EAAU4jB,GAChC,OAAO89oB,EAAW,WAChB,OAAO1hqB,CACT,EAAG4jB,EACL,E,WCpCIi+oB,EAAU,SAAiB3lrB,GAC7B,IAAIpB,EAAMoB,EAAKpB,IACXC,EAAQmB,EAAKnB,MACbC,EAASkB,EAAKlB,OACdC,EAAOiB,EAAKjB,KAiBhB,MAdW,CACTH,IAAKA,EACLC,MAAOA,EACPC,OAAQA,EACRC,KAAMA,EACNzD,MAPUuD,EAAQE,EAQlBvD,OAPWsD,EAASF,EAQpBzD,EAAG4D,EACHxG,EAAGqG,EACHmT,OAAQ,CACN5W,GAAI0D,EAAQE,GAAQ,EACpBxG,GAAIuG,EAASF,GAAO,GAI1B,EACI89f,EAAS,SAAgB/5f,EAAQijrB,GACnC,MAAO,CACLhnrB,IAAK+D,EAAO/D,IAAMgnrB,EAAShnrB,IAC3BG,KAAM4D,EAAO5D,KAAO6mrB,EAAS7mrB,KAC7BD,OAAQ6D,EAAO7D,OAAS8mrB,EAAS9mrB,OACjCD,MAAO8D,EAAO9D,MAAQ+mrB,EAAS/mrB,MAEnC,EACIgnrB,EAAS,SAAgBljrB,EAAQmjrB,GACnC,MAAO,CACLlnrB,IAAK+D,EAAO/D,IAAMknrB,EAASlnrB,IAC3BG,KAAM4D,EAAO5D,KAAO+mrB,EAAS/mrB,KAC7BD,OAAQ6D,EAAO7D,OAASgnrB,EAAShnrB,OACjCD,MAAO8D,EAAO9D,MAAQinrB,EAASjnrB,MAEnC,EAWIknrB,EAAY,CACdnnrB,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAEJinrB,EAAY,SAAmBzmrB,GACjC,IAAIoxC,EAAYpxC,EAAMoxC,UAClBs1oB,EAAe1mrB,EAAMokC,OACrBA,OAA0B,IAAjBsipB,EAA0BF,EAAYE,EAC/CC,EAAe3mrB,EAAM2wD,OACrBA,OAA0B,IAAjBg2nB,EAA0BH,EAAYG,EAC/CC,EAAgB5mrB,EAAM6F,QACtBA,OAA4B,IAAlB+grB,EAA2BJ,EAAYI,EACjDC,EAAYT,EAAQjpL,EAAO/rd,EAAWhN,IACtC0ipB,EAAaV,EAAQE,EAAOl1oB,EAAWuf,IACvCo2nB,EAAaX,EAAQE,EAAOQ,EAAYjhrB,IAC5C,MAAO,CACLghrB,UAAWA,EACXz1oB,UAAWg1oB,EAAQh1oB,GACnB01oB,WAAYA,EACZC,WAAYA,EACZ3ipB,OAAQA,EACRusB,OAAQA,EACR9qD,QAASA,EAEb,EAEI4nC,EAAQ,SAAemW,GACzB,IAAI5oD,EAAQ4oD,EAAIzzC,MAAM,GAAI,GAG1B,GAAe,OAFFyzC,EAAIzzC,OAAO,GAGtB,OAAO,EAGT,IAAI3H,EAASgd,OAAOxqB,GAEpB,OADEI,MAAMoN,KAAgJ,QAAU,GAC3JA,CACT,EASIvO,EAAS,SAAgBu6C,EAAUmkB,GACrC,IA1DyBv1D,EAAQ4jrB,EA0D7B51oB,EAAYoD,EAASpD,UACrBuf,EAASnc,EAASmc,OAClBvsB,EAASoQ,EAASpQ,OAClBv+B,EAAU2uC,EAAS3uC,QACnBohrB,GA9D6BD,EA8DFrunB,EA7DxB,CACLt5D,KAFuB+D,EA8DLguC,GA5DN/xC,IAAM2nrB,EAAQhurB,EAC1BwG,KAAM4D,EAAO5D,KAAOwnrB,EAAQprrB,EAC5B2D,OAAQ6D,EAAO7D,OAASynrB,EAAQhurB,EAChCsG,MAAO8D,EAAO9D,MAAQ0nrB,EAAQprrB,IA0DhC,OAAO6qrB,EAAU,CACfr1oB,UAAW61oB,EACXt2nB,OAAQA,EACRvsB,OAAQA,EACRv+B,QAASA,GAEb,EACIqhrB,EAAa,SAAoB1yoB,EAAUvsC,GAK7C,YAJe,IAAXA,IACFA,EArBK,CACLrM,EAAGY,OAAO6F,YACVrJ,EAAGwD,OAAO+F,cAsBLtI,EAAOu6C,EAAUvsC,EAC1B,EACIk/qB,EAAe,SAAsB/1oB,EAAW7mC,GAClD,IAAI65B,EAAS,CACX/kC,IAAKouC,EAAMljC,EAAO8iO,WAClB/tO,MAAOmuC,EAAMljC,EAAO+iO,aACpB/tO,OAAQkuC,EAAMljC,EAAOgjO,cACrB/tO,KAAMiuC,EAAMljC,EAAOijO,aAEjB3nO,EAAU,CACZxG,IAAKouC,EAAMljC,EAAOg2D,YAClBjhE,MAAOmuC,EAAMljC,EAAOm2D,cACpBnhE,OAAQkuC,EAAMljC,EAAOi2D,eACrBhhE,KAAMiuC,EAAMljC,EAAOk2D,cAEjB9P,EAAS,CACXtxD,IAAKouC,EAAMljC,EAAO+4G,gBAClBhkH,MAAOmuC,EAAMljC,EAAO4wjB,kBACpB57jB,OAAQkuC,EAAMljC,EAAOg5G,mBACrB/jH,KAAMiuC,EAAMljC,EAAOi5G,kBAErB,OAAOijkB,EAAU,CACfr1oB,UAAWA,EACXhN,OAAQA,EACRv+B,QAASA,EACT8qD,OAAQA,GAEZ,EACIy2nB,EAAS,SAAgBx0oB,GAC3B,IAAIxB,EAAYwB,EAAG3wC,wBACfsI,EAAS/N,OAAOkB,iBAAiBk1C,GACrC,OAAOu0oB,EAAa/1oB,EAAW7mC,EACjC,E,WCpHA,QAjCc,SAAiBJ,GAC7B,IAAIozpB,EAAW,GACX8pB,EAAU,KAEV/mB,EAAY,WACd,IAAK,IAAI/2pB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB2zpB,EAAW7zpB,EAEP29qB,IAIJA,EAAU7iqB,sBAAsB,WAC9B6iqB,EAAU,KACVl9qB,EAAGgM,WAAM,EAAQonpB,EACnB,GACF,EAWA,OATA+C,EAAUtonB,OAAS,WACZqvoB,IAIL7pc,qBAAqB6pc,GACrBA,EAAU,KACZ,EAEO/mB,CACT,E,eCJA,SAAShlqB,EAAI+pB,EAAMogF,GAYnB,CAIA,SAASxgF,IAAQ,CAMjB,SAASmuD,EAAWxgC,EAAImtE,EAAUp7D,GAChC,IAAI2ioB,EAAavnkB,EAAS33G,IAAI,SAAU2iR,GACtC,IANgBltO,EAAQ0poB,EAMpBtirB,GANY44C,EAMS8G,EAND4ioB,EAMgBx8Z,EAAQ9lR,SAL3C,OAAS,CAAC,EAAG44C,EAAQ,CAAC,EAAG0poB,IAO9B,OADA30oB,EAAGrlC,iBAAiBw9Q,EAAQ3gL,UAAW2gL,EAAQ5gR,GAAIlF,GAC5C,WACL2tC,EAAGplC,oBAAoBu9Q,EAAQ3gL,UAAW2gL,EAAQ5gR,GAAIlF,EACxD,CACF,GACA,OAAO,WACLqirB,EAAWjgrB,QAAQ,SAAUkzQ,GAC3BA,GACF,EACF,CACF,CAtBcj/Q,EAAIy1D,KAAK,KAAM,QACjBz1D,EAAIy1D,KAAK,KAAM,SAuB3B,IAAIy2nB,GAAiB,EACjBj9oB,EAAS,mBACb,SAASk9oB,EAAahilB,GACpBpwF,KAAKowF,QAAUA,CACjB,CAMA,SAASiilB,EAAU5ta,EAAWr0K,GAC5B,IAAIq0K,EAIJ,MACQ,IAAI2ta,EADRD,EACqBj9oB,EAEAA,EAAS,MAAQk7D,GAAW,IAEvD,CAdAgilB,EAAahyqB,UAAUpZ,SAAW,WAChC,OAAOgZ,KAAKowF,OACd,EAcA,IAAIkilB,EAAgB,SAAU34V,GAG5B,SAAS24V,IAGP,IAFA,IAAIpuqB,EAEKhQ,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAsCzB,OAnCA2P,EAAQy1U,EAAiBt5U,KAAKS,MAAM64U,EAAkB,CAAC35U,MAAMhS,OAAOqG,KAAU2L,MACxEuhC,UAAY,KAClBr9B,EAAMghQ,OAASt1P,EAEf1L,EAAMquqB,cAAgB,SAAUpmqB,GAC9B,IAAIo1B,EAAYr9B,EAAMsuqB,eAElBjxoB,EAAUkgX,cACZlgX,EAAUkxoB,WAIFtmqB,EAAMlC,iBAEGmoqB,GACjBjmqB,EAAMwgH,gBAMV,EAEAzoH,EAAMsuqB,aAAe,WACnB,IAAKtuqB,EAAMq9B,UACT,MAAM,IAAIh6B,MAAM,mDAGlB,OAAOrD,EAAMq9B,SACf,EAEAr9B,EAAMwuqB,aAAe,SAAUnxoB,GAC7Br9B,EAAMq9B,UAAYA,CACpB,EAEOr9B,CACT,EA7CA,OAAeouqB,EAAe34V,GA+C9B,IAAI+nH,EAAS4wO,EAAclyqB,UA8B3B,OA5BAshc,EAAOhvH,kBAAoB,WACzB1yU,KAAKklQ,OAASnnM,EAAW52E,OAAQ,CAAC,CAChC4tG,UAAW,QACXjgG,GAAIkL,KAAKuyqB,gBAEb,EAEA7wO,EAAOnuH,qBAAuB,WAC5BvzU,KAAKklQ,QACP,EAEAw8L,EAAO/M,kBAAoB,SAA2BjsV,GACpD,KAAIA,aAAe0pkB,GASnB,MAAM1pkB,EAJJ1oG,KAAKN,SAAS,CAAC,EAKnB,EAEAgic,EAAOrjY,OAAS,WACd,OAAOr+D,KAAKoyB,MAAMolF,SAASx3G,KAAK0yqB,aAClC,EAEOJ,CACT,CA/EoB,CA+ElB,aAIExprB,EAAW,SAAkB0N,GAC/B,OAAOA,EAAQ,CACjB,EAMIm8qB,EAAe,SAAsBphqB,EAAQmmP,GAC/C,IAAIk7a,EAAerhqB,EAAOshqB,cAAgBn7a,EAAYm7a,YAClDC,EAAgBhqrB,EAASyoB,EAAO/a,OAChCu8qB,EAAcjqrB,EAAS4uQ,EAAYlhQ,OAEvC,OAAIo8qB,EACK,iDAAmDE,EAAgB,uBAAyBC,EAAc,SAG5G,+CAAiDD,EAAgB,iBAAmBvhqB,EAAOshqB,YAAc,iBAAmBn7a,EAAYm7a,YAAc,qBAAuBE,EAAc,MACpM,EAEIC,EAAc,SAAqBj1qB,EAAIwT,EAAQ0hqB,GAGjD,OAFiB1hqB,EAAOshqB,cAAgBI,EAAQJ,YAGvC,oBAAsB90qB,EAAK,kCAAoCk1qB,EAAQC,YAGzE,oBAAsBn1qB,EAAK,mBAAqBwT,EAAOshqB,YAAc,kCAAoCI,EAAQC,YAAc,mBAAqBD,EAAQJ,YAAc,QACnL,EAkBIM,EAAkB,SAAyB5hqB,GAC7C,MAAO,4DAA8DzoB,EAASyoB,EAAO/a,OAAS,IAChG,EAqBI48qB,EAAS,CACXC,4BAxEgC,8NAyEhCjgB,YAnEgB,SAAqB3mqB,GACrC,MAAO,2CAA6C3D,EAAS2D,EAAM8kB,OAAO/a,OAAS,IACrF,EAkEE88qB,aA1CiB,SAAsBl9qB,GACvC,IAAI6yF,EAAW7yF,EAAOshQ,YAEtB,GAAIzuK,EACF,OAAO0plB,EAAav8qB,EAAOmb,OAAQ03E,GAGrC,IAAIgqlB,EAAU78qB,EAAO68qB,QAErB,OAAIA,EACKD,EAAY58qB,EAAO88qB,YAAa98qB,EAAOmb,OAAQ0hqB,GAGjD,gDACT,EA6BE7jW,UAvBc,SAAmBj8U,GACjC,GAAsB,WAAlBA,EAAOqnP,OACT,MAAO,sCAAwC24b,EAAgBhgrB,EAAOoe,QAAU,SAGlF,IAAI03E,EAAW91F,EAAOukQ,YAClBu7a,EAAU9/qB,EAAO8/qB,QAErB,OAAIhqlB,EACK,6CAA+C0plB,EAAax/qB,EAAOoe,OAAQ03E,GAAY,SAG5FgqlB,EACK,6CAA+CD,EAAY7/qB,EAAO+/qB,YAAa//qB,EAAOoe,OAAQ0hqB,GAAW,SAG3G,oEAAsEE,EAAgBhgrB,EAAOoe,QAAU,MAChH,GASIy8E,EAAS,CACXznG,EAAG,EACH5C,EAAG,GAED2P,EAAM,SAAa2jf,EAAQD,GAC7B,MAAO,CACLzwf,EAAG0wf,EAAO1wf,EAAIywf,EAAOzwf,EACrB5C,EAAGszf,EAAOtzf,EAAIqzf,EAAOrzf,EAEzB,EACI8zW,EAAW,SAAkBw/I,EAAQD,GACvC,MAAO,CACLzwf,EAAG0wf,EAAO1wf,EAAIywf,EAAOzwf,EACrB5C,EAAGszf,EAAOtzf,EAAIqzf,EAAOrzf,EAEzB,EACI6kN,EAAU,SAAiByuS,EAAQD,GACrC,OAAOC,EAAO1wf,IAAMywf,EAAOzwf,GAAK0wf,EAAOtzf,IAAMqzf,EAAOrzf,CACtD,EACIkkC,EAAS,SAAgBgH,GAC3B,MAAO,CACLtoC,EAAe,IAAZsoC,EAAMtoC,GAAWsoC,EAAMtoC,EAAI,EAC9B5C,EAAe,IAAZkrC,EAAMlrC,GAAWkrC,EAAMlrC,EAAI,EAElC,EACIsiS,EAAQ,SAAe91P,EAAMxqC,EAAO+gD,GACtC,IAAIt7C,EAMJ,YAJmB,IAAfs7C,IACFA,EAAa,IAGRt7C,EAAO,CAAC,GAAQ+kC,GAAQxqC,EAAOyF,EAAc,MAAT+kC,EAAe,IAAM,KAAOuW,EAAYt7C,CACrF,EACImN,EAAW,SAAkB0+e,EAAQD,GACvC,OAAOxxf,KAAK0vB,KAAK1vB,KAAKC,IAAIuxf,EAAOzwf,EAAI0wf,EAAO1wf,EAAG,GAAKf,KAAKC,IAAIuxf,EAAOrzf,EAAIszf,EAAOtzf,EAAG,GACpF,EACIgqN,EAAU,SAAiB5/M,EAAQwqC,GACrC,OAAO/yC,KAAKkE,IAAIoX,MAAMtb,KAAM+yC,EAAOxlC,IAAI,SAAU87B,GAC/C,OAAOt2B,EAASxK,EAAQ8gC,EAC1B,GACF,EACI/tB,EAAQ,SAAehM,GACzB,OAAO,SAAU+5B,GACf,MAAO,CACLtoC,EAAGuO,EAAG+5B,EAAMtoC,GACZ5C,EAAGmR,EAAG+5B,EAAMlrC,GAEhB,CACF,EAiBI4vrB,EAAmB,SAA0Bt8nB,EAASpoB,GACxD,MAAO,CACL7kC,IAAKitD,EAAQjtD,IAAM6kC,EAAMlrC,EACzBwG,KAAM8sD,EAAQ9sD,KAAO0kC,EAAMtoC,EAC3B2D,OAAQ+sD,EAAQ/sD,OAAS2kC,EAAMlrC,EAC/BsG,MAAOgtD,EAAQhtD,MAAQ4kC,EAAMtoC,EAEjC,EACIitrB,EAAa,SAAoBv8nB,GACnC,MAAO,CAAC,CACN1wD,EAAG0wD,EAAQ9sD,KACXxG,EAAGszD,EAAQjtD,KACV,CACDzD,EAAG0wD,EAAQhtD,MACXtG,EAAGszD,EAAQjtD,KACV,CACDzD,EAAG0wD,EAAQ9sD,KACXxG,EAAGszD,EAAQ/sD,QACV,CACD3D,EAAG0wD,EAAQhtD,MACXtG,EAAGszD,EAAQ/sD,QAEf,EA0BI+kC,EAAO,SAAclhC,EAAQ20a,GAC/B,OAAIA,GAASA,EAAM+wQ,kBAhEH,SAAW/wQ,EAAOi8D,GAClC,IAAIxre,EAAS49qB,EAAQ,CACnB/mrB,IAAKxE,KAAKmE,IAAIg1e,EAAQ30e,IAAK04a,EAAM14a,KACjCC,MAAOzE,KAAKkE,IAAIi1e,EAAQ10e,MAAOy4a,EAAMz4a,OACrCC,OAAQ1E,KAAKkE,IAAIi1e,EAAQz0e,OAAQw4a,EAAMx4a,QACvCC,KAAM3E,KAAKmE,IAAIg1e,EAAQx0e,KAAMu4a,EAAMv4a,QAGrC,OAAIgJ,EAAOzM,OAAS,GAAKyM,EAAOvM,QAAU,EACjC,KAGFuM,CACR,CAoDUugrB,CAAYhxQ,EAAMixQ,cAAe5lrB,GAGnCgjrB,EAAQhjrB,EACjB,EAEI6lrB,EAAa,SAAWxorB,GAC1B,IAAIukH,EAAOvkH,EAAKukH,KACZkkkB,EAAkBzorB,EAAKyorB,gBACvB3hrB,EAAO9G,EAAK8G,KACZwwa,EAAQt3a,EAAKs3a,MACboxQ,EA/BO,SAAgB/lrB,EAAQ20a,GACnC,OAAKA,EAIE6wQ,EAAiBxlrB,EAAQ20a,EAAM9va,OAAOyqD,KAAK02nB,cAHzChmrB,CAIX,CAyBiB,CAAO4hH,EAAK6hkB,UAAW9uQ,GAClCsxQ,EAxBS,SAAkBjmrB,EAAQmE,EAAM2hrB,GAE3C,IAAIhjQ,EADN,OAAIgjQ,GAAmBA,EAAgBI,aAG9B,OAAS,CAAC,EAAGlmrB,IAAS8ib,EAAY,CAAC,GAAa3+a,EAAKxF,KAAOqB,EAAOmE,EAAKxF,KAAOmnrB,EAAgBI,YAAY/hrB,EAAKi+B,MAAO0gZ,IAGzH9ib,CACT,CAgBkBmmrB,CAASJ,EAAU5hrB,EAAM2hrB,GAEzC,MAAO,CACLlkkB,KAAMA,EACNkkkB,gBAAiBA,EACjB9voB,OAJY9U,EAAK+kpB,EAAWtxQ,GAM/B,EAEGyxQ,EAAkB,SAAW97I,EAAW+7I,GACzC/7I,EAAU31H,OAAmE2vQ,GAAU,GACxF,IAAIgC,EAAah8I,EAAU31H,MACvB4xQ,EAAa78U,EAAS28U,EAAWC,EAAWzhrB,OAAO6uC,SACnD8yoB,EAAqB1spB,EAAOyspB,GAE5B5xQ,GAAQ,OAAS,CAAC,EAAG2xQ,EAAY,CACnCzhrB,OAAQ,CACN6uC,QAAS4yoB,EAAWzhrB,OAAO6uC,QAC3B5rC,QAASu+qB,EACT/2nB,KAAM,CACJ13D,MAAO2urB,EACPP,aAAcQ,GAEhB5qrB,IAAK0qrB,EAAWzhrB,OAAOjJ,OAIvBg1e,EAAUi1M,EAAW,CACvBjkkB,KAAM0ob,EAAU15D,QAAQhvX,KACxBkkkB,gBAAiBx7I,EAAU15D,QAAQk1M,gBACnC3hrB,KAAMmmiB,EAAUnmiB,KAChBwwa,MAAOA,IAQT,OALa,OAAS,CAAC,EAAG21H,EAAW,CACnC31H,MAAOA,EACPi8D,QAASA,GAIZ,EASD,SAAS/1c,EAAO71B,GACd,OAAIjJ,OAAO8+B,OACF9+B,OAAO8+B,OAAO71B,GAGhBjJ,OAAOO,KAAK0I,GAAKA,IAAI,SAAUvI,GACpC,OAAOuI,EAAIvI,EACb,EACF,CACA,SAASmqE,EAAU/mE,EAAMomH,GACvB,GAAIpmH,EAAK+mE,UACP,OAAO/mE,EAAK+mE,UAAUq/C,GAGxB,IAAK,IAAI3uH,EAAI,EAAGA,EAAIuI,EAAKwG,OAAQ/O,IAC/B,GAAI2uH,EAAUpmH,EAAKvI,IACjB,OAAOA,EAIX,OAAQ,CACV,CACA,SAASwV,GAAKjN,EAAMomH,GAClB,GAAIpmH,EAAKiN,KACP,OAAOjN,EAAKiN,KAAKm5G,GAGnB,IAAIx9G,EAAQm+D,EAAU/mE,EAAMomH,GAE5B,OAAe,IAAXx9G,EACK5I,EAAK4I,QADd,CAKF,CACA,SAASstN,GAAQl2N,GACf,OAAO0G,MAAM8L,UAAUtF,MAAMuF,KAAKzS,EACpC,CAEA,IAAI4mrB,IAAiB,OAAW,SAAUC,GACxC,OAAOA,EAAWnqrB,OAAO,SAAU8kC,EAAUv5B,GAE3C,OADAu5B,EAASv5B,EAAQ0iE,WAAWx6D,IAAMlI,EAC3Bu5B,CACT,EAAG,CAAC,EACN,GACIslpB,IAAiB,OAAW,SAAUC,GACxC,OAAOA,EAAWrqrB,OAAO,SAAU8kC,EAAUv5B,GAE3C,OADAu5B,EAASv5B,EAAQ0iE,WAAWx6D,IAAMlI,EAC3Bu5B,CACT,EAAG,CAAC,EACN,GACIwlpB,IAAkB,OAAW,SAAUH,GACzC,OAAO7rpB,EAAO6rpB,EAChB,GACII,IAAkB,OAAW,SAAUF,GACzC,OAAO/rpB,EAAO+rpB,EAChB,GAEIG,IAA+B,OAAW,SAAUjC,EAAa8B,GACnE,IAAIxhrB,EAAS0hrB,GAAgBF,GAAY1jrB,OAAO,SAAUw6U,GACxD,OAAOonW,IAAgBpnW,EAAUlzQ,WAAWs6mB,WAC9C,GAAGz/qB,KAAK,SAAUwG,EAAGC,GACnB,OAAOD,EAAE2+D,WAAW/hE,MAAQqD,EAAE0+D,WAAW/hE,KAC3C,GACA,OAAOrD,CACT,GAEA,SAAS4hrB,GAAkBC,GACzB,OAAIA,EAAOtkT,IAAyB,YAAnBskT,EAAOtkT,GAAG1gX,KAClBglqB,EAAOtkT,GAAGh5H,YAGZ,IACT,CACA,SAASu9a,GAAcD,GACrB,OAAIA,EAAOtkT,IAAyB,YAAnBskT,EAAOtkT,GAAG1gX,KAClBglqB,EAAOtkT,GAAGuiT,QAGZ,IACT,CAEA,IAAIiC,IAA0B,OAAW,SAAUtyoB,EAAQh1C,GACzD,OAAOA,EAAKqD,OAAO,SAAU+hB,GAC3B,OAAOA,EAAKulD,WAAWx6D,KAAO6kC,EAAO21B,WAAWx6D,EAClD,EACF,GAgEIo3qB,GAAW,SAAW1pW,EAAW/zE,GACnC,OAAO+zE,EAAUlzQ,WAAWs6mB,cAAgBn7a,EAAYn/L,WAAWx6D,EACpE,EAEGq3qB,GAAgB,CAClBvmpB,MAAOm/D,EACProG,MAAO,GAEL0vrB,GAAc,CAChBC,UAAW,CAAC,EACZxwoB,QAAS,CAAC,EACVgB,IAAK,IAEHyvoB,GAAW,CACbC,UAAWH,GACXI,YAAaL,GACb1kT,GAAI,MAGFglT,GAAW,SAAWvrT,EAAYC,GACpC,OAAO,SAAUzkY,GACf,OAAOwkY,GAAcxkY,GAASA,GAASykY,CACzC,CACD,EAEGurT,GAAiC,SAAWjzQ,GAC9C,IAAIkzQ,EAAmBF,GAAShzQ,EAAM14a,IAAK04a,EAAMx4a,QAC7C2rrB,EAAqBH,GAAShzQ,EAAMv4a,KAAMu4a,EAAMz4a,OACpD,OAAO,SAAU00e,GAGf,GAFkBi3M,EAAiBj3M,EAAQ30e,MAAQ4rrB,EAAiBj3M,EAAQz0e,SAAW2rrB,EAAmBl3M,EAAQx0e,OAAS0rrB,EAAmBl3M,EAAQ10e,OAGpJ,OAAO,EAGT,IAAI6rrB,EAA+BF,EAAiBj3M,EAAQ30e,MAAQ4rrB,EAAiBj3M,EAAQz0e,QACzF6rrB,EAAiCF,EAAmBl3M,EAAQx0e,OAAS0rrB,EAAmBl3M,EAAQ10e,OAGpG,GAF2B6rrB,GAAgCC,EAGzD,OAAO,EAGT,IAAIC,EAAqBr3M,EAAQ30e,IAAM04a,EAAM14a,KAAO20e,EAAQz0e,OAASw4a,EAAMx4a,OACvE+rrB,EAAuBt3M,EAAQx0e,KAAOu4a,EAAMv4a,MAAQw0e,EAAQ10e,MAAQy4a,EAAMz4a,MAG9E,SAF8B+rrB,IAAsBC,IAMtBD,GAAsBD,GAAkCE,GAAwBH,CAEhH,CACD,EAEGI,GAA+B,SAAWxzQ,GAC5C,IAAIkzQ,EAAmBF,GAAShzQ,EAAM14a,IAAK04a,EAAMx4a,QAC7C2rrB,EAAqBH,GAAShzQ,EAAMv4a,KAAMu4a,EAAMz4a,OACpD,OAAO,SAAU00e,GAEf,OADkBi3M,EAAiBj3M,EAAQ30e,MAAQ4rrB,EAAiBj3M,EAAQz0e,SAAW2rrB,EAAmBl3M,EAAQx0e,OAAS0rrB,EAAmBl3M,EAAQ10e,MAExJ,CACD,EAEG04D,GAAW,CACb5zD,UAAW,WACXohC,KAAM,IACNgmpB,cAAe,IACf1prB,MAAO,MACPC,IAAK,SACLqmB,KAAM,SACNqjqB,eAAgB,OAChBC,aAAc,QACdC,cAAe,SAEb7joB,GAAa,CACf1jD,UAAW,aACXohC,KAAM,IACNgmpB,cAAe,IACf1prB,MAAO,OACPC,IAAK,QACLqmB,KAAM,QACNqjqB,eAAgB,MAChBC,aAAc,SACdC,cAAe,UAkCbpgR,GAAY,SAAmB9qa,GACjC,IAAImrrB,EAAgBnrrB,EAAK2C,OACrB2pQ,EAActsQ,EAAKssQ,YACnB9nJ,EAAWxkH,EAAKwkH,SAChB4mkB,EAA4BprrB,EAAKorrB,0BACjCC,EAA0BrrrB,EAAKqrrB,wBAC/BC,EAAkBF,EAvBI,SAA+BzorB,EAAQ2pQ,GACjE,IAAIq8a,EAAer8a,EAAYgrK,MAAQhrK,EAAYgrK,MAAM9va,OAAOyqD,KAAK02nB,aAAe/llB,EACpF,OAAOullB,EAAiBxlrB,EAAQgmrB,EAClC,CAoBoD4C,CAAsBJ,EAAe7+a,GAAe6+a,EACtG,OAnByB,SAA8BxorB,EAAQ2pQ,EAAa++a,GAC5E,QAAK/+a,EAAYinO,QAAQ56b,QAIlB0yoB,EAAwB/+a,EAAYinO,QAAQ56b,OAA5C0yoB,CAAoD1orB,EAC7D,CAaS6orB,CAAqBF,EAAiBh/a,EAAa++a,IAXlC,SAA6B1orB,EAAQ6hH,EAAU6mkB,GACvE,OAAOA,EAAwB7mkB,EAAxB6mkB,CAAkC1orB,EAC3C,CASwF8orB,CAAoBH,EAAiB9mkB,EAAU6mkB,EACvI,EAOIK,GAAmB,SAA0BzirB,GAC/C,OAAO6ha,IAAU,OAAS,CAAC,EAAG7ha,EAAM,CAClCoirB,wBAAyBP,KAE7B,EAsCA,SAASa,GAAsB3rrB,GAC7B,IAAI4rrB,EAAgB5rrB,EAAK4rrB,cACrBt/a,EAActsQ,EAAKssQ,YACnB+9a,EAAcrqrB,EAAKqqrB,YACnB7lkB,EAAWxkH,EAAKwkH,SAChBqnkB,EAAqB7rrB,EAAK6rrB,mBAC1B/ioB,EAAO9oD,EAAK8oD,KAChB,OAAO8ioB,EAAc1srB,OAAO,SAAiBuhT,EAAQ4/B,GACnD,IAvDiDp3U,EAuD7CtG,EAnBR,SAAmB09U,EAAWgqW,GAC5B,IAAIjE,EAAY/lW,EAAU97N,KAAK6hkB,UAC3BR,EAAW,CACbhnrB,IAAKyrrB,EAAY5mpB,MAAMlrC,EACvBsG,MAAO,EACPC,OAAQ,EACRC,KAAMsrrB,EAAY5mpB,MAAMtoC,GAE1B,OAAOwqrB,EAAQjpL,EAAO0pL,EAAWR,GACnC,CAUiBz8oB,CAAUk3S,EAAWgqW,GAC9B13qB,EAAK0tU,EAAUlzQ,WAAWx6D,GAS9B,GARA8tS,EAAO/lQ,IAAIhyC,KAAKiK,GAzDiC1J,EA0Dd,CACjCtG,OAAQA,EACR2pQ,YAAaA,EACb9nJ,SAAUA,EACV4mkB,2BAA2B,IA7DxBtgR,IAAU,OAAS,CAAC,EAAG7ha,EAAM,CAClCoirB,wBAAyBd,MAiEvB,OADA9pY,EAAOypY,UAAU7pW,EAAUlzQ,WAAWx6D,KAAM,EACrC8tS,EAGT,IAAIqrY,EAtDe,SAA0Bn5qB,EAAIm2C,EAAM+ioB,GACzD,GAAkC,kBAAvBA,EACT,OAAOA,EAGT,IAAK/ioB,EACH,OAAO,EAGT,IAAIohoB,EAAYphoB,EAAKohoB,UACjBxwoB,EAAUoP,EAAKpP,QAEnB,GAAIwwoB,EAAUv3qB,GACZ,OAAO,EAGT,IAAIqxB,EAAW0V,EAAQ/mC,GACvB,OAAOqxB,GAAWA,EAAS8npB,aAC7B,CAoCwBC,CAAiBp5qB,EAAIm2C,EAAM+ioB,GAC3ClD,EAAe,CACjBb,YAAan1qB,EACbm5qB,cAAeA,GAGjB,OADArrY,EAAO/mQ,QAAQ/mC,GAAMg2qB,EACdloY,CACT,EAAG,CACD/lQ,IAAK,GACLhB,QAAS,CAAC,EACVwwoB,UAAW,CAAC,GAEhB,CAWA,SAAS8B,GAAQhsrB,GACf,IAAIisrB,EAAoBjsrB,EAAKisrB,kBACzBC,EAAalsrB,EAAKksrB,WAClB7B,EAAcrqrB,EAAKqqrB,YACnB/9a,EAActsQ,EAAKssQ,YACnBwsG,EAdN,SAA4BywU,EAAY/krB,GACtC,IAAK+krB,EAAWvgrB,OACd,OAAO,EAGT,IAAImjrB,EAAkB5C,EAAWA,EAAWvgrB,OAAS,GAAGmkE,WAAW/hE,MACnE,OAAO5G,EAAQ0nrB,WAAaC,EAAkBA,EAAkB,CAClE,CAOiBC,CAAmBH,EAAmB,CACnDC,WAAYA,IAEd,MAAO,CACL9B,UAAWH,GACXI,YAAaA,EACb/kT,GAAI,CACF1gX,KAAM,UACN0nP,YAAa,CACXm7a,YAAan7a,EAAYn/L,WAAWx6D,GACpCvH,MAAO0tW,IAIf,CAEA,SAASuzU,GAAuB9srB,GAC9B,IAAI8gV,EAAY9gV,EAAM8gV,UAClB4rW,EAAoB1srB,EAAM0srB,kBAC1B3/a,EAAc/sQ,EAAM+sQ,YACpB9nJ,EAAWjlH,EAAMilH,SACjB6lkB,EAAc9qrB,EAAM8qrB,YACpBvhoB,EAAOvpD,EAAMupD,KACb19C,EAAQ7L,EAAM6L,MACdygrB,EAAqBtsrB,EAAMssrB,mBAC3BK,EAAanC,GAAS1pW,EAAW/zE,GAErC,GAAa,MAATlhQ,EACF,OAAO4grB,GAAQ,CACbC,kBAAmBA,EACnBC,WAAYA,EACZ7B,YAAaA,EACb/9a,YAAaA,IAIjB,IAAI1zQ,EAAQ6W,GAAKw8qB,EAAmB,SAAUrkqB,GAC5C,OAAOA,EAAKulD,WAAW/hE,QAAUA,CACnC,GAEA,IAAKxS,EACH,OAAOozrB,GAAQ,CACbC,kBAAmBA,EACnBC,WAAYA,EACZ7B,YAAaA,EACb/9a,YAAaA,IAIjB,IAAIggb,EAAkBxC,GAAwBzpW,EAAW4rW,GACrDM,EAAYN,EAAkB9urB,QAAQvE,GAU1C,MAAO,CACLwxrB,UATcuB,GAAsB,CACpCC,cAFaU,EAAgB58qB,MAAM68qB,GAGnCjgb,YAAaA,EACb+9a,YAAaA,EACbvhoB,KAAMA,EACN07D,SAAUA,EAAS8yT,MACnBu0Q,mBAAoBA,IAIpBxB,YAAaA,EACb/kT,GAAI,CACF1gX,KAAM,UACN0nP,YAAa,CACXm7a,YAAan7a,EAAYn/L,WAAWx6D,GACpCvH,MAAOA,IAIf,CAEA,SAASohrB,GAAsB1E,EAAa2E,GAC1C,OAAO5wlB,QAAQ4wlB,EAAcC,SAAS5E,GACxC,CAEA,IAqJI6E,GAAqC,SAA4C7lrB,EAAMiqC,GACzF,OAAOA,EAAIpN,OAAO78B,EAAKzF,OAAS0vC,EAAIJ,UAAU7pC,EAAK6gB,MAAQ,CAC7D,EAMIilqB,GAA8B,SAAqC9lrB,EAAMnE,EAAQkqrB,GACnF,OAAOlqrB,EAAOmE,EAAKkkrB,gBAAkB6B,EAASlppB,OAAO78B,EAAKkkrB,gBAAkB6B,EAASl8oB,UAAU7pC,EAAKokrB,eAAiB,CACvH,EAEI4B,GAAU,SAAiB9srB,GAC7B,IAAI8G,EAAO9G,EAAK8G,KACZimrB,EAAiB/srB,EAAK+srB,eACtBF,EAAW7srB,EAAK6srB,SACpB,OAAOhyZ,EAAM/zR,EAAKi+B,KAAMgopB,EAAe3G,UAAUt/qB,EAAKxF,KAAOqrrB,GAAmC7lrB,EAAM+lrB,GAAWD,GAA4B9lrB,EAAMimrB,EAAe3G,UAAWyG,GAC/K,EACIG,GAAW,SAAkBztrB,GAC/B,IAAIuH,EAAOvH,EAAMuH,KACbimrB,EAAiBxtrB,EAAMwtrB,eACvBF,EAAWttrB,EAAMstrB,SACrB,OAAOhyZ,EAAM/zR,EAAKi+B,KAAMgopB,EAAe3G,UAAUt/qB,EAAKzF,OAlBjB,SAA0CyF,EAAMiqC,GACrF,OAAOA,EAAIpN,OAAO78B,EAAKxF,KAAOyvC,EAAIJ,UAAU7pC,EAAK6gB,MAAQ,CAC3D,CAgBiEslqB,CAAiCnmrB,EAAM+lrB,GAAWD,GAA4B9lrB,EAAMimrB,EAAe3G,UAAWyG,GAC/K,EAuEIzB,GAA4B,SAAWn+I,EAAWxpgB,GACpD,IAAI6zY,EAAQ21H,EAAU31H,MAEtB,OAAKA,EAIEpva,EAAIu7B,EAAO6zY,EAAM9va,OAAOyqD,KAAK02nB,cAH3BllpB,CAIV,EAoCGyppB,GAAmC,SAAWjkrB,GAChD,IAAIkkrB,EAnCsC,SAA+CntrB,GACzF,IAAI4prB,EAAS5prB,EAAK4prB,OACdvpW,EAAYrgV,EAAKqgV,UACjB4sN,EAAYjtiB,EAAKitiB,UACjBs8I,EAAavprB,EAAKuprB,WAClBkD,EAAgBzsrB,EAAKysrB,cACrB14oB,EAAWssS,EAAU97N,KAAK5zE,UAAU5+B,OACpCuzX,EAAKskT,EAAOtkT,GAEhB,OAAK2nK,GAIA3nK,EAIW,YAAZA,EAAG1gX,KA1FY,SAAW5kB,GAC9B,IAAI4prB,EAAS5prB,EAAK4prB,OACdvpW,EAAYrgV,EAAKqgV,UACjBkpW,EAAavprB,EAAKuprB,WAClBt8I,EAAYjtiB,EAAKitiB,UACjBw/I,EAAgBzsrB,EAAKysrB,cACrBR,EAAoBvC,GAA6Bz8I,EAAU9/d,WAAWx6D,GAAI42qB,GAC1E6D,EAAgB/sW,EAAU97N,KAC1Bz9G,EAAOmmiB,EAAUnmiB,KAErB,IAAKmlrB,EAAkBjjrB,OACrB,OAlBc,SAAqBlJ,GACrC,IAAIgH,EAAOhH,EAAMgH,KACbumrB,EAAWvtrB,EAAMutrB,SACjBR,EAAW/srB,EAAM+srB,SACrB,OAAOhyZ,EAAM/zR,EAAKi+B,KAAMsopB,EAAS/G,WAAWx/qB,EAAKzF,OAASsrrB,GAAmC7lrB,EAAM+lrB,GAAWD,GAA4B9lrB,EAAMumrB,EAAS/G,WAAYuG,GACvK,CAaWS,CAAY,CACjBxmrB,KAAMA,EACNumrB,SAAUpgJ,EAAU1ob,KACpBsokB,SAAUO,IAId,IAAIhD,EAAYR,EAAOQ,UACnBC,EAAcT,EAAOS,YACrBkD,EAAenD,EAAU1voB,IAAI,GAEjC,GAAI6yoB,EAAc,CAChB,IAAIhre,EAAUgne,EAAWgE,GAEzB,GAAIf,GAAsBe,EAAcd,GACtC,OAAOO,GAAS,CACdlmrB,KAAMA,EACNimrB,eAAgBxqe,EAAQh+F,KACxBsokB,SAAUO,IAId,IAAII,EAAmBh0rB,EAAO+oN,EAAQh+F,KAAM8lkB,EAAY5mpB,OACxD,OAAOuppB,GAAS,CACdlmrB,KAAMA,EACNimrB,eAAgBS,EAChBX,SAAUO,GAEd,CAEA,IAAItkoB,EAAOmjoB,EAAkBA,EAAkBjjrB,OAAS,GAExD,GAAI8/C,EAAKqkB,WAAWx6D,KAAO0tU,EAAUlzQ,WAAWx6D,GAC9C,OAAOy6qB,EAAcz8oB,UAAU5+B,OAGjC,GAAIy6qB,GAAsB1joB,EAAKqkB,WAAWx6D,GAAI85qB,GAAgB,CAC5D,IAAIlokB,EAAO/qH,EAAOsvD,EAAKy7D,KAAM9nF,EAAOgwpB,EAAcpC,YAAY5mpB,QAC9D,OAAOqppB,GAAQ,CACbhmrB,KAAMA,EACNimrB,eAAgBxokB,EAChBsokB,SAAUO,GAEd,CAEA,OAAON,GAAQ,CACbhmrB,KAAMA,EACNimrB,eAAgBjkoB,EAAKy7D,KACrBsokB,SAAUO,GAEb,CA8BUK,CAAe,CACpB7D,OAAQA,EACRvpW,UAAWA,EACXkpW,WAAYA,EACZt8I,UAAWA,EACXw/I,cAAeA,IAhJD,SAAWzsrB,GAC7B,IAAIysrB,EAAgBzsrB,EAAKysrB,cACrB7C,EAAS5prB,EAAK4prB,OACdL,EAAavprB,EAAKuprB,WAClB1B,EAAUgC,GAAcD,GAC3B/B,GAAqEZ,GAAU,GAChF,IAAIyG,EAAc7F,EAAQC,YACtB/1qB,EAASw3qB,EAAWmE,GAAanpkB,KAAK5zE,UAAU5+B,OAChD47qB,EAtB4B,SAAW3trB,GAC3C,IAAIoqrB,EAAYpqrB,EAAKoqrB,UACjBqC,EAAgBzsrB,EAAKysrB,cACrBiB,EAAc1trB,EAAK0trB,YACnBrD,EAAcrqrB,EAAKqqrB,YACnBuD,EAAc/xlB,QAAQuulB,EAAU1woB,QAAQg0oB,IAAgBtD,EAAUF,UAAUwD,IAEhF,OAAIlB,GAAsBkB,EAAajB,GAC9BmB,EAAchrlB,EAASnmE,EAAO4tpB,EAAY5mpB,OAG5CmqpB,EAAcvD,EAAY5mpB,MAAQm/D,CAC1C,CAUkBirlB,CAA4B,CAC3CzD,UAAWR,EAAOQ,UAClBqC,cAAeA,EACfiB,YAAaA,EACbrD,YAAaT,EAAOS,cAEtB,OAAOnirB,EAAI6J,EAAQ47qB,EACpB,CAqIQG,CAAc,CACnBlE,OAAQA,EACRL,WAAYA,EACZkD,cAAeA,IApBR14oB,CAsBX,CAG4Bg6oB,CAAsC9krB,GAC5DgkiB,EAAYhkiB,EAAKgkiB,UAErB,OADuBA,EAAYm+I,GAA0Bn+I,EAAWkgJ,GAAuBA,CAEhG,EAEGa,GAAiB,SAAWxpkB,EAAUwkkB,GACxC,IAAI/2nB,EAAOo6S,EAAS28U,EAAWxkkB,EAASh9G,OAAO6uC,SAC3CsyoB,EAAelspB,EAAOw1B,GAmB1B,MAZc,CACZqlX,MAPUquQ,EAAQ,CAClB/mrB,IAAKoqrB,EAAUzwrB,EACfuG,OAAQkqrB,EAAUzwrB,EAAIisH,EAAS8yT,MAAM97a,OACrCuD,KAAMiqrB,EAAU7trB,EAChB0D,MAAOmqrB,EAAU7trB,EAAIqpH,EAAS8yT,MAAMh8a,QAIpCkM,OAAQ,CACN6uC,QAASmuE,EAASh9G,OAAO6uC,QACzB93C,IAAKimH,EAASh9G,OAAOjJ,IACrBkM,QAASu+qB,EACT/2nB,KAAM,CACJ13D,MAAO03D,EACP02nB,aAAcA,IAKrB,EAED,SAASsF,GAAcx7qB,EAAK82qB,GAC1B,OAAO92qB,EAAI9K,IAAI,SAAUgL,GACvB,OAAO42qB,EAAW52qB,EACpB,EACF,CAcA,IAsDIu7qB,GAAmC,SAAWlurB,GAChD,IALwCwkH,EAAU/gF,EAK9C0qpB,EAAsBnurB,EAAKmurB,oBAC3B9tW,EAAYrgV,EAAKqgV,UAEjB+tW,GARoC5pkB,EAOzBxkH,EAAKwkH,SAP8B/gF,EAQe0qpB,EAP1DjmrB,EAAIs8G,EAASh9G,OAAOyqD,KAAK02nB,aAAcllpB,IAQ1CjqC,EAAS6yW,EAAS+hV,EAAyB/tW,EAAU97N,KAAK5zE,UAAU5+B,QACxE,OAAO7J,EAAIm4U,EAAUu+H,OAAOjua,UAAU5+B,OAAQvY,EAC/C,EAEG60rB,GAAgC,SAAWrurB,GAC7C,IAAIqgV,EAAYrgV,EAAKqgV,UACjB/zE,EAActsQ,EAAKssQ,YACnBgib,EAAyBturB,EAAKsurB,uBAC9B9pkB,EAAWxkH,EAAKwkH,SAChB4mkB,EAA4BprrB,EAAKorrB,0BACjCmD,EAAsBvurB,EAAKwurB,eAC3BA,OAAyC,IAAxBD,GAAyCA,EAC1DE,EAAepiV,EAASiiV,EAAwBjuW,EAAU97N,KAAK5zE,UAAU5+B,QAEzE9I,EAAO,CACTtG,OAFYwlrB,EAAiB9nW,EAAU97N,KAAK5zE,UAAW89oB,GAGvDnib,YAAaA,EACb8+a,0BAA2BA,EAC3B5mkB,SAAUA,GAEZ,OAAOgqkB,EApkBoB,SAAgCvlrB,GAC3D,OAAO6ha,IAAU,OAAS,CAAC,EAAG7ha,EAAM,CAClCoirB,yBArDgDvkrB,EAqDYmC,EAAKqjQ,YAAYxlQ,KApDxE,SAAUwwa,GACf,IAAIkzQ,EAAmBF,GAAShzQ,EAAM14a,IAAK04a,EAAMx4a,QAC7C2rrB,EAAqBH,GAAShzQ,EAAMv4a,KAAMu4a,EAAMz4a,OACpD,OAAO,SAAU00e,GACf,OAAIzse,IAASywD,GACJiznB,EAAiBj3M,EAAQ30e,MAAQ4rrB,EAAiBj3M,EAAQz0e,QAG5D2rrB,EAAmBl3M,EAAQx0e,OAAS0rrB,EAAmBl3M,EAAQ10e,MACxE,CACF,MAXuC,IAAWiI,CAuDpD,CAgkB0B4nrB,CAAuBzlrB,GAAQyirB,GAAiBzirB,EACzE,EAEG0lrB,GAAkB,SAAW3urB,GAC/B,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBvuW,EAAYrgV,EAAKqgV,UACjB/zE,EAActsQ,EAAKssQ,YACnBi9a,EAAavprB,EAAKuprB,WAClBsF,EAAiB7urB,EAAK6urB,eACtBrqkB,EAAWxkH,EAAKwkH,SAChBsqkB,EAA8B9urB,EAAK8urB,4BACnCC,EAA0B/urB,EAAK+urB,wBAC/BtC,EAAgBzsrB,EAAKysrB,cAEzB,IAAKngb,EAAYliI,UACf,OAAO,KAGT,IAAI6hjB,EAAoBvC,GAA6Bp9a,EAAYn/L,WAAWx6D,GAAI42qB,GAC5E/B,EAAeuC,GAAS1pW,EAAW/zE,GACnCs9a,EAjyBkB,SAAW5prB,GACjC,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBvuW,EAAYrgV,EAAKqgV,UACjB/zE,EAActsQ,EAAKssQ,YACnB2/a,EAAoBjsrB,EAAKisrB,kBACzB4C,EAAiB7urB,EAAK6urB,eAE1B,IAAKvib,EAAY0ib,iBACf,OAAO,KAKT,IAFerF,GAAkBkF,GAG/B,OAAO,KAGT,SAASI,EAAUtsrB,GACjB,IAAI2iY,EAAK,CACP1gX,KAAM,UACNijqB,QAAS,CACPC,YAAanlrB,EACb8krB,YAAan7a,EAAYn/L,WAAWx6D,KAGxC,OAAO,OAAS,CAAC,EAAGk8qB,EAAgB,CAClCvpT,GAAIA,GAER,CAEA,IAAI5qV,EAAMm0oB,EAAezE,UAAU1voB,IAC/BkqoB,EAAYlqoB,EAAI1xC,OAAS0xC,EAAI,GAAK,KAEtC,GAAIk0oB,EACF,OAAOhK,EAAYqK,EAAUrK,GAAa,KAG5C,IAAIsK,EAAmBpF,GAAwBzpW,EAAW4rW,GAE1D,IAAKrH,EACH,OAAKsK,EAAiBlmrB,OAKfimrB,EADIC,EAAiBA,EAAiBlmrB,OAAS,GAChCmkE,WAAWx6D,IAJxB,KAOX,IAAIw8qB,EAAiB5lnB,EAAU2lnB,EAAkB,SAAU/2rB,GACzD,OAAOA,EAAEg1E,WAAWx6D,KAAOiyqB,CAC7B,IACsB,IAApBuK,GAA4HlI,GAAU,GACxI,IAAImI,EAAgBD,EAAiB,EAErC,OAAIC,EAAgB,EACX,KAIFH,EADMC,EAAiBE,GACNjinB,WAAWx6D,GACpC,CAquBc08qB,CAAkB,CAC7BT,gBAAiBA,EACjBvuW,UAAWA,EACX/zE,YAAaA,EACb2/a,kBAAmBA,EACnB4C,eAAgBA,KA9XE,SAAW7urB,GAC/B,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBpH,EAAexnrB,EAAKwnrB,aACpBnnW,EAAYrgV,EAAKqgV,UACjBkpW,EAAavprB,EAAKuprB,WAClBj9a,EAActsQ,EAAKssQ,YACnB2/a,EAAoBjsrB,EAAKisrB,kBACzB4C,EAAiB7urB,EAAK6urB,eACtBrqkB,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cACrB6C,EAAQT,EAAevpT,GAG3B,GAFCgqT,GAAgIrI,GAAU,GAExH,YAAfqI,EAAM1qqB,KAAoB,CAC5B,IAAI2qqB,EAzCU,SAAWvvrB,GAC3B,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBpH,EAAexnrB,EAAKwnrB,aACpByE,EAAoBjsrB,EAAKisrB,kBACzBpulB,EAAW79F,EAAK69F,SAEpB,IAAKoulB,EAAkBjjrB,OACrB,OAAO,KAGT,IAAIwmrB,EAAe3xlB,EAASzyF,MACxBgkrB,EAAgBR,EAAkBY,EAAe,EAAIA,EAAe,EACpErsH,EAAa8oH,EAAkB,GAAG9+mB,WAAW/hE,MAC7CkrK,EAAY21gB,EAAkBA,EAAkBjjrB,OAAS,GAAGmkE,WAAW/hE,MAG3E,OAAIgkrB,EAAgBjsH,GAIhBisH,GANa5H,EAAelxgB,EAAYA,EAAY,GAG/C,KAOF84gB,CACR,CAgBmBK,CAAY,CAC1Bb,gBAAiBA,EACjBpH,aAAcA,EACd3plB,SAAUyxlB,EAAMhjb,YAChB2/a,kBAAmBA,IAGrB,OAAiB,MAAbsD,EACK,KAGFlD,GAAuB,CAC5BhsW,UAAWA,EACX4rW,kBAAmBA,EACnB3/a,YAAaA,EACb9nJ,SAAUA,EACV17D,KAAM+loB,EAAezE,UACrBC,YAAawE,EAAexE,YAC5Bj/qB,MAAOmkrB,GAEX,CAEA,IAAIz2U,EA9FY,SAAW94W,GAC3B,IAAI4urB,EAAkB5urB,EAAK4urB,gBAEvBrF,EAAavprB,EAAKuprB,WAClB1B,EAAU7nrB,EAAK6nrB,QACf4E,EAAgBzsrB,EAAKysrB,cAEzB,IALkBzsrB,EAAKssQ,YAKN0ib,iBACf,OAAO,KAGT,IAAIU,EAAY7H,EAAQC,YAEpB6H,EADcpG,EAAWmG,GACMvinB,WAAW/hE,MAG9C,OAFuCohrB,GAAsBkD,EAAWjD,GAGlEmC,EACKe,EAGFA,EAAmB,EAGxBf,EACKe,EAAmB,EAGrBA,CACR,CAiEgBC,CAAY,CACzBhB,gBAAiBA,EACjBtib,YAAaA,EACb89a,UAAWyE,EAAezE,UAC1Bb,WAAYA,EACZ1B,QAASyH,EAAMzH,QACf4E,cAAeA,IAGjB,OAAgB,MAAZ3zU,EACK,KAGFuzU,GAAuB,CAC5BhsW,UAAWA,EACX4rW,kBAAmBA,EACnB3/a,YAAaA,EACb9nJ,SAAUA,EACV17D,KAAM+loB,EAAezE,UACrBC,YAAawE,EAAexE,YAC5Bj/qB,MAAO0tW,GAEV,CAqUO+2U,CAAgB,CACpBjB,gBAAiBA,EACjBpH,aAAcA,EACdnnW,UAAWA,EACXkpW,WAAYA,EACZj9a,YAAaA,EACb2/a,kBAAmBA,EACnB4C,eAAgBA,EAChBrqkB,SAAUA,EACViokB,cAAeA,IAGjB,IAAK7C,EACH,OAAO,KAGT,IAAIuE,EAAsBjB,GAAiC,CACzDtD,OAAQA,EACRvpW,UAAWA,EACX4sN,UAAW3gS,EACXi9a,WAAYA,EACZkD,cAAeA,IAWjB,GAT6B4B,GAA8B,CACzDhuW,UAAWA,EACX/zE,YAAaA,EACbgib,uBAAwBH,EACxB3pkB,SAAUA,EAAS8yT,MACnB8zQ,2BAA2B,EAC3BoD,gBAAgB,IAShB,MAAO,CACLsB,gBANoB5B,GAAiC,CACrDC,oBAAqBA,EACrB9tW,UAAWA,EACX77N,SAAUA,IAIVolkB,OAAQA,EACRmG,kBAAmB,MAIvB,IAAI5irB,EAAWk/V,EAAS8hV,EAAqBW,GACzCkB,EAvJsB,SAAWhwrB,GACrC,IAAI4prB,EAAS5prB,EAAK4prB,OACdplkB,EAAWxkH,EAAKwkH,SAChB8nJ,EAActsQ,EAAKssQ,YACnBi9a,EAAavprB,EAAKuprB,WAClB0G,EAAkBjwrB,EAAKiwrB,gBACvBC,EAAmBlC,GAAexpkB,EAAUt8G,EAAIs8G,EAASh9G,OAAOiD,QAASwlrB,IACzEE,EAAoB7jb,EAAYgrK,MAAQyxQ,EAAgBz8a,EAAapkQ,EAAIokQ,EAAYgrK,MAAM9va,OAAOiD,QAASwlrB,IAAoB3jb,EAC/HxjN,EAAO8goB,EAAOQ,UACdgG,EAAqBzE,GAAsB,CAC7CC,cAAeqC,GAAcnloB,EAAKpO,IAAK6uoB,GACvCj9a,YAAaA,EACb+9a,YAAaT,EAAOS,YACpB7lkB,SAAU0rkB,EAAiB54Q,MAC3BxuX,KAAMA,EACN+ioB,oBAAoB,IAElBwE,EAAsB1E,GAAsB,CAC9CC,cAAeqC,GAAcnloB,EAAKpO,IAAK6uoB,GACvCj9a,YAAa6jb,EACb9F,YAAaT,EAAOS,YACpB7lkB,SAAUA,EAAS8yT,MACnBxuX,KAAMA,EACN+ioB,oBAAoB,IAElB3B,EAAY,CAAC,EACbxwoB,EAAU,CAAC,EACX+mQ,EAAS,CAAC33P,EAAMsnoB,EAAoBC,GAoBxC,OAnBAvnoB,EAAKpO,IAAI9zC,QAAQ,SAAU+L,GACzB,IAAIg2qB,EAzCR,SAAuBh2qB,EAAI8tS,GACzB,IAAK,IAAIxmT,EAAI,EAAGA,EAAIwmT,EAAOz3S,OAAQ/O,IAAK,CACtC,IAAI0urB,EAAeloY,EAAOxmT,GAAGy/C,QAAQ/mC,GAErC,GAAIg2qB,EACF,OAAOA,CAEX,CAEA,OAAO,IACT,CA+BuB2H,CAAc39qB,EAAI8tS,GAEjCkoY,EACFjvoB,EAAQ/mC,GAAMg2qB,EAIhBuB,EAAUv3qB,IAAM,CAClB,IAEgB,OAAS,CAAC,EAAGi3qB,EAAQ,CACnCQ,UAAW,CACT1voB,IAAKoO,EAAKpO,IACVwvoB,UAAWA,EACXxwoB,QAASA,IAKd,CAuGgB62oB,CAAsB,CACnC3G,OAAQA,EACRplkB,SAAUA,EACV8nJ,YAAaA,EACbi9a,WAAYA,EACZ0G,gBAAiB9irB,IAEnB,MAAO,CACL2irB,gBAAiBf,EACjBnF,OAAQoG,EACRD,kBAAmB5irB,EAEtB,EAEGqjrB,GAAiB,SAAwBvjJ,GAC3C,IAAIxriB,EAAOwriB,EAAU15D,QAAQ56b,OAE7B,OADCl3C,GAA4GwlrB,GAAU,GAChHxlrB,CACT,EAoFIgvrB,GAAgC,SAAuCpwW,EAAWosW,GACpF,IAAI14oB,EAAWssS,EAAU97N,KAAK5zE,UAAU5+B,OACxC,OAAOy6qB,GAAsBnsW,EAAUlzQ,WAAWx6D,GAAI85qB,GAAiBpgV,EAASt4T,EAAU04oB,EAAcpC,YAAY5mpB,OAASsQ,CAC/H,EACI28oB,GAA0B,SAAiCrwW,EAAWosW,GACxE,IAAI14oB,EAAWssS,EAAU97N,KAAK5zE,UAC9B,OAAO67oB,GAAsBnsW,EAAUlzQ,WAAWx6D,GAAI85qB,GAAiBtE,EAAiBp0oB,EAAUtX,EAAOgwpB,EAAcpC,YAAY5mpB,QAAUsQ,CAC/I,EAgCI48oB,IAAiB,OAAW,SAAwB7prB,EAAM6mrB,GAC5D,IAAIhF,EAAegF,EAAW7mrB,EAAKi+B,MACnC,MAAO,CACLxqC,MAAOourB,EACPllpB,MAAOo3P,EAAM/zR,EAAKi+B,KAAM4jpB,GAE5B,GAwBIiI,GAAgB,SAAuBt5Q,EAAO/4a,GAChD,OAAO,OAAS,CAAC,EAAG+4a,EAAO,CACzB9va,QAAQ,OAAS,CAAC,EAAG8va,EAAM9va,OAAQ,CACjCjJ,IAAKA,KAGX,EAEIsyrB,GAAiB,SAAwB5jJ,EAAW5sN,EAAWkpW,GACjE,IAAIjyQ,EAAQ21H,EAAU31H,MACpByyQ,GAAS1pW,EAAW4sN,IAAyHg6I,GAAU,GACvJh6I,EAAU15D,QAAQk1M,iBAAiJxB,GAAU,GAC/K,IAAI6J,EAAkBH,GAAe1jJ,EAAUnmiB,KAAMu5U,EAAUstW,YAAYlqpB,MACvEstpB,EAnCgC,SAAyC9jJ,EAAW6jJ,EAAiBvH,GACzG,IAAIzirB,EAAOmmiB,EAAUnmiB,KAErB,GAAkC,YAA9BmmiB,EAAU9/d,WAAWpuC,KACvB,OAAO87P,EAAM/zR,EAAKi+B,KAAM+rpB,EAAgBhqrB,EAAKi+B,OAG/C,IAAIispB,EAAiB/jJ,EAAU15D,QAAQhvX,KAAK+hkB,WAAWx/qB,EAAK6gB,MAMxDspqB,EALkBvH,GAA6Bz8I,EAAU9/d,WAAWx6D,GAAI42qB,GAC5CrqrB,OAAO,SAAU4wG,EAAKzqF,GACpD,OAAOyqF,EAAMzqF,EAAUu5b,OAAOwnO,UAAUt/qB,EAAK6gB,KAC/C,EAAG,GAC6BmpqB,EAAgBhqrB,EAAKi+B,MACjBispB,EAEpC,OAAIC,GAAiB,EACZ,KAGFp2Z,EAAM/zR,EAAKi+B,KAAMkspB,EAC1B,CAeuBC,CAAgCjkJ,EAAW6jJ,EAAiBvH,GAC7E19lB,EAAQ,CACVilmB,gBAAiBA,EACjBjI,YAAakI,EACbI,kBAAmBlkJ,EAAU31H,MAAQ21H,EAAU31H,MAAM9va,OAAOjJ,IAAM,MAGpE,IAAK+4a,EAAO,CACV,IAAI85Q,EAAW5I,EAAW,CACxBjkkB,KAAM0ob,EAAU15D,QAAQhvX,KACxBkkkB,gBAAiB58lB,EACjB/kF,KAAMmmiB,EAAUnmiB,KAChBwwa,MAAO21H,EAAU31H,QAGnB,OAAO,OAAS,CAAC,EAAG21H,EAAW,CAC7B15D,QAAS69M,GAEb,CAEA,IAAIpkB,EAAY+jB,EAAiB7orB,EAAIova,EAAM9va,OAAOjJ,IAAKwyrB,GAAkBz5Q,EAAM9va,OAAOjJ,IAClF8yrB,EAAWT,GAAct5Q,EAAO01P,GAChCz5L,EAAUi1M,EAAW,CACvBjkkB,KAAM0ob,EAAU15D,QAAQhvX,KACxBkkkB,gBAAiB58lB,EACjB/kF,KAAMmmiB,EAAUnmiB,KAChBwwa,MAAO+5Q,IAET,OAAO,OAAS,CAAC,EAAGpkJ,EAAW,CAC7B15D,QAASA,EACTj8D,MAAO+5Q,GAEX,EA0KIC,GAAoB,SAAW1H,GACjC,IAAItkT,EAAKskT,EAAOtkT,GAEhB,OAAKA,EAIW,YAAZA,EAAG1gX,KACE0gX,EAAGh5H,YAAYm7a,YAGjBniT,EAAGuiT,QAAQJ,YAPT,IAQV,EAOG8J,GAAkB,SAAWvxrB,GAC/B,IAAIuE,EAAQvE,EAAKuE,MACbqgB,EAAO5kB,EAAK4kB,KACZ4sqB,EARiB,SAA0B5H,EAAQP,GACvD,IAAI12qB,EAAK2+qB,GAAkB1H,GAC3B,OAAOj3qB,EAAK02qB,EAAW12qB,GAAM,IAC/B,CAKuB8+qB,CAAiBltrB,EAAMqlrB,OAAQrlrB,EAAM+yV,WAAW+xV,YACjEqI,EAA4B71lB,QAAQ21lB,GACpCG,EAAOptrB,EAAM+yV,WAAW+xV,WAAW9krB,EAAMqtrB,SAAS3kJ,UAAUt6hB,IAC5DisqB,EAAS4S,GAAkBG,EAC3BhurB,EAAYi7qB,EAAO93qB,KAAKnD,UACxBkurB,EAAmC,aAAdlurB,IAAsC,YAATihB,GAA+B,cAATA,IAAuC,eAAdjhB,IAAwC,cAATihB,GAAiC,eAATA,GAE5J,GAAIitqB,IAAuBH,EACzB,OAAO,KAGT,IAAI9C,EAA2B,cAAThqqB,GAAiC,eAATA,EAC1Cy7T,EAAY97U,EAAM+yV,WAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IACjEm8qB,EAA8BvqrB,EAAMkG,QAAQ85G,KAAKutkB,gBACjDC,EAAoBxtrB,EAAM+yV,WAC1BiyV,EAAawI,EAAkBxI,WAC/BF,EAAa0I,EAAkB1I,WACnC,OAAOwI,EAAqBlD,GAAgB,CAC1CC,gBAAiBA,EACjBE,4BAA6BA,EAC7BzuW,UAAWA,EACX/zE,YAAasya,EACb2K,WAAYA,EACZ/kkB,SAAUjgH,EAAMigH,SAChBuqkB,wBAAyBxqrB,EAAMkG,QAAQm0c,OAAO5C,UAC9C6yO,eAAgBtqrB,EAAMqlrB,OACtB6C,cAAelorB,EAAMkorB,gBA/GL,SAAWzsrB,GAC7B,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBE,EAA8B9urB,EAAK8urB,4BACnCzuW,EAAYrgV,EAAKqgV,UACjBu+V,EAAS5+qB,EAAK4+qB,OACd2K,EAAavprB,EAAKuprB,WAClBF,EAAarprB,EAAKqprB,WAClB7kkB,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cACrBngb,EAxT0B,SAAWtsQ,GACzC,IAAI4urB,EAAkB5urB,EAAK4urB,gBACvBT,EAAsBnurB,EAAKmurB,oBAC3BhoqB,EAASnmB,EAAKmmB,OACdkjqB,EAAarprB,EAAKqprB,WAClB7kkB,EAAWxkH,EAAKwkH,SAChB7rE,EAASxyB,EAAOotd,QAAQ56b,OAE5B,IAAKA,EACH,OAAO,KAGT,IAAI7xC,EAAOqf,EAAOrf,KACdkrrB,EAAyB1H,GAAS3xoB,EAAO7xC,EAAKzF,OAAQs3C,EAAO7xC,EAAKxF,MAClEq5f,EAAa6uL,GAAgBH,GAAYxjrB,OAAO,SAAUoniB,GAC5D,OAAOA,IAAc9mhB,CACvB,GAAGtgB,OAAO,SAAUoniB,GAClB,OAAOA,EAAU7ia,SACnB,GAAGvkI,OAAO,SAAUoniB,GAClB,OAAOpxc,QAAQoxc,EAAU15D,QAAQ56b,OACnC,GAAG9yC,OAAO,SAAUoniB,GAClB,OAAOs9I,GAA+B/lkB,EAAS8yT,MAAxCizQ,CAA+CiG,GAAevjJ,GACvE,GAAGpniB,OAAO,SAAUoniB,GAClB,IAAIglJ,EAAiBzB,GAAevjJ,GAEpC,OAAI2hJ,EACKj2oB,EAAO7xC,EAAKmkrB,cAAgBgH,EAAenrrB,EAAKmkrB,cAGlDgH,EAAenrrB,EAAKkkrB,gBAAkBryoB,EAAO7xC,EAAKkkrB,eAC3D,GAAGnlrB,OAAO,SAAUoniB,GAClB,IAAIglJ,EAAiBzB,GAAevjJ,GAChCilJ,EAA8B5H,GAAS2H,EAAenrrB,EAAKzF,OAAQ4wrB,EAAenrrB,EAAKxF,MAC3F,OAAO0wrB,EAAuBC,EAAenrrB,EAAKzF,SAAW2wrB,EAAuBC,EAAenrrB,EAAKxF,OAAS4wrB,EAA4Bv5oB,EAAO7xC,EAAKzF,SAAW6wrB,EAA4Bv5oB,EAAO7xC,EAAKxF,KAC9M,GAAG0G,KAAK,SAAUwG,EAAGC,GACnB,IAAI20D,EAAQotnB,GAAehirB,GAAG1H,EAAKkkrB,gBAC/B/4lB,EAASu+lB,GAAe/hrB,GAAG3H,EAAKkkrB,gBAEpC,OAAI4D,EACKxrnB,EAAQ6uB,EAGVA,EAAS7uB,CAClB,GAAGv9D,OAAO,SAAUoniB,EAAW7hiB,EAAO6d,GACpC,OAAOunqB,GAAevjJ,GAAWnmiB,EAAKkkrB,kBAAoBwF,GAAevnqB,EAAM,IAAIniB,EAAKkkrB,eAC1F,GAEA,IAAKrwL,EAAW3xf,OACd,OAAO,KAGT,GAA0B,IAAtB2xf,EAAW3xf,OACb,OAAO2xf,EAAW,GAGpB,IAAIv+f,EAAWu+f,EAAW90f,OAAO,SAAUoniB,GAEzC,OADwBq9I,GAASkG,GAAevjJ,GAAWnmiB,EAAKzF,OAAQmvrB,GAAevjJ,GAAWnmiB,EAAKxF,KAChG6wrB,CAAkBhE,EAAoBrnrB,EAAKi+B,MACpD,GAEA,OAAwB,IAApB3oC,EAAS4M,OACJ5M,EAAS,GAGdA,EAAS4M,OAAS,EACb5M,EAAS4L,KAAK,SAAUwG,EAAGC,GAChC,OAAO+hrB,GAAehirB,GAAG1H,EAAKzF,OAASmvrB,GAAe/hrB,GAAG3H,EAAKzF,MAChE,GAAG,GAGEs5f,EAAW3yf,KAAK,SAAUwG,EAAGC,GAClC,IAAI20D,EAAQm/I,EAAQ4re,EAAqB/F,EAAWoI,GAAehirB,KAC/DyjF,EAASswH,EAAQ4re,EAAqB/F,EAAWoI,GAAe/hrB,KAEpE,OAAI20D,IAAU6uB,EACL7uB,EAAQ6uB,EAGVu+lB,GAAehirB,GAAG1H,EAAKzF,OAASmvrB,GAAe/hrB,GAAG3H,EAAKzF,MAChE,GAAG,EACJ,CAwOmB+wrB,CAA0B,CAC1CxD,gBAAiBA,EACjBT,oBAAqBW,EACrB3oqB,OAAQy4pB,EACRyK,WAAYA,EACZ7kkB,SAAUA,IAGZ,IAAK8nJ,EACH,OAAO,KAGT,IAAI2/a,EAAoBvC,GAA6Bp9a,EAAYn/L,WAAWx6D,GAAI42qB,GAC5EwD,EA1OoB,SAAW/srB,GACnC,IAAImurB,EAAsBnurB,EAAKmurB,oBAC3B3pkB,EAAWxkH,EAAKwkH,SAChB8nJ,EAActsQ,EAAKssQ,YAEnBmgb,EAAgBzsrB,EAAKysrB,cACrB5roB,EAFoB7gD,EAAKisrB,kBAEEpmrB,OAAO,SAAUw6U,GAC9C,OAAOqrW,GAAiB,CACtB/orB,OAAQ+trB,GAAwBrwW,EAAWosW,GAC3Cngb,YAAaA,EACb9nJ,SAAUA,EAAS8yT,MACnB8zQ,2BAA2B,GAE/B,GAAGpjrB,KAAK,SAAUwG,EAAGC,GACnB,IAAI4jrB,EAAcllrB,EAASghrB,EAAqB/C,GAA0B9+a,EAAamkb,GAA8BjirB,EAAGi+qB,KACpH6F,EAAcnlrB,EAASghrB,EAAqB/C,GAA0B9+a,EAAamkb,GAA8BhirB,EAAGg+qB,KAExH,OAAI4F,EAAcC,GACR,EAGNA,EAAcD,EACT,EAGF7jrB,EAAE2+D,WAAW/hE,MAAQqD,EAAE0+D,WAAW/hE,KAC3C,GACA,OAAOy1C,EAAO,IAAM,IACrB,CA8MsB0xoB,CAAoB,CACvCpE,oBAAqBW,EACrBtqkB,SAAUA,EACV8nJ,YAAaA,EACb2/a,kBAAmBA,EACnBQ,cAAeA,IAEb7C,EAtGmB,SAAW5prB,GAClC,IAAI8urB,EAA8B9urB,EAAK8urB,4BACnC/B,EAAiB/srB,EAAK+srB,eACtBd,EAAoBjsrB,EAAKisrB,kBACzB5rW,EAAYrgV,EAAKqgV,UACjBkpW,EAAavprB,EAAKuprB,WAClBj9a,EAActsQ,EAAKssQ,YACnB9nJ,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cAEzB,IAAKM,EAAgB,CACnB,GAAId,EAAkBjjrB,OACpB,OAAO,KAGT,IAAIwprB,EAAW,CACbpI,UAAWH,GACXI,YAAaL,GACb1kT,GAAI,CACF1gX,KAAM,UACN0nP,YAAa,CACXm7a,YAAan7a,EAAYn/L,WAAWx6D,GACpCvH,MAAO,KAITqnrB,EAA8BvF,GAAiC,CACjEtD,OAAQ4I,EACRnyW,UAAWA,EACX4sN,UAAW3gS,EACXi9a,WAAYA,EACZkD,cAAeA,IAEbhE,EAAkBsB,GAAS1pW,EAAW/zE,GAAeA,EAAcukb,GAAevkb,EAAa+zE,EAAWkpW,GAS9G,OAR6B8E,GAA8B,CACzDhuW,UAAWA,EACX/zE,YAAam8a,EACb6F,uBAAwBmE,EACxBjukB,SAAUA,EAAS8yT,MACnB8zQ,2BAA2B,EAC3BoD,gBAAgB,IAEcgE,EAAW,IAC7C,CAEA,IAGMlpR,EAHFopR,EAAsB72lB,QAAQizlB,EAA4Bxib,EAAYxlQ,KAAKi+B,OAASgopB,EAAexokB,KAAK5zE,UAAU5+B,OAAOu6P,EAAYxlQ,KAAKi+B,OAE1IqqpB,GACE9lR,EAAayjR,EAAe5/mB,WAAW/hE,MAEvC2hrB,EAAe5/mB,WAAWx6D,KAAO0tU,EAAUlzQ,WAAWx6D,IAItD+/qB,EAHKppR,EAOFA,EAAa,GAItB,OAAO+iR,GAAuB,CAC5BhsW,UAAWA,EACX4rW,kBAAmBA,EACnB3/a,YAAaA,EACb9nJ,SAAUA,EACV6lkB,YANgBsG,GAAerkb,EAAYxlQ,KAAMu5U,EAAUstW,YAO3D7koB,KAAMmhoB,GACN7+qB,MAAOgkrB,GAEV,CA+BcuD,CAAmB,CAC9B7D,4BAA6BA,EAC7Bxib,YAAaA,EACb+zE,UAAWA,EACXkpW,WAAYA,EACZwD,eAAgBA,EAChBd,kBAAmBA,EACnBznkB,SAAUA,EACViokB,cAAeA,IAGjB,IAAK7C,EACH,OAAO,KAGT,IAAIuE,EAAsBjB,GAAiC,CACzDtD,OAAQA,EACRvpW,UAAWA,EACX4sN,UAAW3gS,EACXi9a,WAAYA,EACZkD,cAAeA,IAOjB,MAAO,CACLqD,gBANoB5B,GAAiC,CACrDC,oBAAqBA,EACrB9tW,UAAWA,EACX77N,SAAUA,IAIVolkB,OAAQA,EACRmG,kBAAmB,KAEtB,CAmDM6C,CAAc,CACjBhE,gBAAiBA,EACjBE,4BAA6BA,EAC7BzuW,UAAWA,EACXu+V,OAAQA,EACR2K,WAAYA,EACZF,WAAYA,EACZ7kkB,SAAUjgH,EAAMigH,SAChBiokB,cAAelorB,EAAMkorB,eAExB,EAED,SAASoG,GAAkBturB,GACzB,MAAuB,aAAhBA,EAAMgG,OAAwC,eAAhBhG,EAAMgG,KAC7C,CAEA,SAASuorB,GAAkBx7Q,GACzB,IAAIkzQ,EAAmBF,GAAShzQ,EAAM14a,IAAK04a,EAAMx4a,QAC7C2rrB,EAAqBH,GAAShzQ,EAAMv4a,KAAMu4a,EAAMz4a,OACpD,OAAO,SAAa4kC,GAClB,OAAO+mpB,EAAiB/mpB,EAAMlrC,IAAMkyrB,EAAmBhnpB,EAAMtoC,EAC/D,CACF,CAiFA,IAAI43rB,GAAuB,SAA8BtxrB,EAAMgiC,GAC7D,OAAOkipB,EAAQwC,EAAiB1mrB,EAAMgiC,GACxC,EAYA,SAASuvpB,GAAehzrB,GACtB,IAAIoqrB,EAAYpqrB,EAAKoqrB,UACjBz3qB,EAAK3S,EAAK2S,GACd,OAAOkpF,QAAQuulB,EAAU1woB,QAAQ/mC,IAAOy3qB,EAAUF,UAAUv3qB,GAC9D,CAsBA,IAoHIsgrB,GAAgB,SAAWjzrB,GAC7B,IAAIkzrB,EAAalzrB,EAAKkzrB,WAClB7yW,EAAYrgV,EAAKqgV,UACjBkpW,EAAavprB,EAAKuprB,WAClBF,EAAarprB,EAAKqprB,WAClBwF,EAAiB7urB,EAAK6urB,eACtBrqkB,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cACrB0G,EAAgBJ,GAAqB1yW,EAAU97N,KAAK5zE,UAAWuipB,GAC/DE,EA9NN,SAA4B7zrB,GAC1B,IAAI4zrB,EAAgB5zrB,EAAM4zrB,cACtB9yW,EAAY9gV,EAAM8gV,UAClBgpW,EAAa9prB,EAAM8prB,WACnB1uL,EAAa6uL,GAAgBH,GAAYxjrB,OAAO,SAAU+hB,GAC5D,IAAKA,EAAKwiH,UACR,OAAO,EAGT,IA/BmBhnE,EAAO6uB,EA+BtBt5C,EAAS/wB,EAAK2rd,QAAQ56b,OAE1B,IAAKA,EACH,OAAO,EAGT,GArC0Bs5C,EAqCQt5C,KArCfyqB,EAqCA+vnB,GApCRp0rB,KAAOkzF,EAAOpzF,OAASukE,EAAMvkE,MAAQozF,EAAOlzF,MAAQqkE,EAAMxkE,IAAMqzF,EAAOnzF,QAAUskE,EAAMtkE,OAASmzF,EAAOrzF,KAqChH,OAAO,EAGT,GAAIk0rB,GAAkBn6oB,EAAlBm6oB,CAA0BK,EAAcphrB,QAC1C,OAAO,EAGT,IAAIjL,EAAO8gB,EAAK9gB,KACZusrB,EAAc16oB,EAAO5mC,OAAOjL,EAAKikrB,eACjCC,EAAiBmI,EAAcrsrB,EAAKkkrB,gBACpCC,EAAekI,EAAcrsrB,EAAKmkrB,cAClCqI,EAAchJ,GAAS3xoB,EAAO7xC,EAAKkkrB,gBAAiBryoB,EAAO7xC,EAAKmkrB,eAChEsI,EAAmBD,EAAYtI,GAC/BwI,EAAiBF,EAAYrI,GAEjC,OAAKsI,IAAqBC,IAItBD,EACKvI,EAAiBqI,EAGnBpI,EAAeoI,EACxB,GAEA,OAAK14L,EAAW3xf,OAIU,IAAtB2xf,EAAW3xf,OACN2xf,EAAW,GAAGxtb,WAAWx6D,GAjEpC,SAAyB3S,GACvB,IAAImzrB,EAAgBnzrB,EAAKmzrB,cAErBx4L,EAAa36f,EAAK26f,WAClB84L,EAFYzzrB,EAAKqgV,UAEO97N,KAAK5zE,UAAU5+B,OACvC8uC,EAAS85c,EAAWhzf,IAAI,SAAUqZ,GACpC,IAAIla,EAAOka,EAAUla,KACjBnE,EAASk4R,EAAM75Q,EAAUla,KAAKi+B,KAAMoupB,EAAcphrB,OAAOjL,EAAKi+B,MAAO/jB,EAAUujG,KAAK5zE,UAAU5+B,OAAOjL,EAAKikrB,gBAC9G,MAAO,CACLp4qB,GAAIqO,EAAUmsD,WAAWx6D,GACzBxF,SAAUA,EAASsmrB,EAAa9wrB,GAEpC,GAAGqF,KAAK,SAAUwG,EAAGC,GACnB,OAAOA,EAAEtB,SAAWqB,EAAErB,QACxB,GACA,OAAO0zC,EAAO,GAAKA,EAAO,GAAGluC,GAAK,IACpC,CAoDS+grB,CAAgB,CACrBP,cAAeA,EACf9yW,UAAWA,EACXs6K,WAAYA,IAVL,IAYX,CAuKsBg5L,CAAmB,CACrCR,cAAeA,EACf9yW,UAAWA,EACXgpW,WAAYA,IAGd,IAAK+J,EACH,OAAOjJ,GAGT,IAAI79a,EAAc+8a,EAAW+J,GACzBnH,EAAoBvC,GAA6Bp9a,EAAYn/L,WAAWx6D,GAAI42qB,GAC5EqK,EA7KoB,SAAW3mJ,EAAWvpgB,GAC9C,IAAI4zY,EAAQ21H,EAAU31H,MAEtB,OAAKA,EAIEy7Q,GAAqBrvpB,EAAM4zY,EAAM9va,OAAOyqD,KAAK13D,OAH3CmpC,CAIV,CAqKwC2spB,CAAoB/jb,EAAa6mb,GACxE,OApFqB,SAAWnzrB,GAChC,IAAIqgV,EAAYrgV,EAAKqgV,UACjBwzW,EAAa7zrB,EAAK4zrB,iCAClB/E,EAAiB7urB,EAAK6urB,eACtBvib,EAActsQ,EAAKssQ,YACnB2/a,EAAoBjsrB,EAAKisrB,kBACzBQ,EAAgBzsrB,EAAKysrB,cAEzB,IAAKngb,EAAY0ib,iBACf,OAAO,KAGT,IAAIlorB,EAAOwlQ,EAAYxlQ,KACnBujrB,EAAcsG,GAAerkb,EAAYxlQ,KAAMu5U,EAAUstW,YACzDhF,EAAe0B,EAAY9vrB,MAC3Bu5rB,EAAcD,EAAW/srB,EAAKzF,OAC9B0yrB,EAAYF,EAAW/srB,EAAKxF,KAE5BosrB,EAAcj+qB,GADIq6qB,GAAwBzpW,EAAW4rW,GACjB,SAAU3vrB,GAChD,IAAIqW,EAAKrW,EAAM6wE,WAAWx6D,GACtBqhrB,EAAY13rB,EAAMioH,KAAK5zE,UAEvBq+X,EADYglR,EAAUltrB,EAAK6gB,MAtBL,EAwBtBssqB,EAA0BzH,GAAsB75qB,EAAI85qB,GACpDmB,EAAcoF,GAAe,CAC/B5I,UAAWyE,EAAezE,UAC1Bz3qB,GAAIA,IAGN,OAAIshrB,EACErG,EACKmG,EAAYC,EAAUltrB,EAAKzF,OAAS2ta,GAAa+kR,EAAYC,EAAUltrB,EAAKxF,KAAO0ta,EAGrF8kR,EAAcE,EAAUltrB,EAAKzF,OAASsnrB,EAAe35Q,GAAa8kR,EAAcE,EAAUltrB,EAAKxF,KAAOqnrB,EAAe35Q,EAG1H4+Q,EACKmG,EAAYC,EAAUltrB,EAAKzF,OAASsnrB,EAAe35Q,GAAa+kR,EAAYC,EAAUltrB,EAAKxF,KAAOqnrB,EAAe35Q,EAGnH8kR,EAAcE,EAAUltrB,EAAKzF,OAAS2ta,GAAa8kR,EAAcE,EAAUltrB,EAAKxF,KAAO0ta,CAChG,GAEA,OAAK0+Q,EAIQ,CACXrD,YAAaA,EACbD,UAAWyE,EAAezE,UAC1B9kT,GAAI,CACF1gX,KAAM,UACNijqB,QAAS,CACPC,YAAa4F,EAAYvgnB,WAAWx6D,GACpC80qB,YAAan7a,EAAYn/L,WAAWx6D,MAVjC,IAeV,CAwBQuhrB,CAAiB,CACtBN,iCAAkCA,EAClCvzW,UAAWA,EACXwuW,eAAgBA,EAChBvib,YAAaA,EACb2/a,kBAAmBA,EACnBQ,cAAeA,KAhJI,SAAWltrB,GAChC,IAAIs0rB,EAAat0rB,EAAMq0rB,iCACnBvzW,EAAY9gV,EAAM8gV,UAClB/zE,EAAc/sQ,EAAM+sQ,YACpB2/a,EAAoB1srB,EAAM0srB,kBAC1BnjoB,EAAOvpD,EAAMupD,KACb07D,EAAWjlH,EAAMilH,SACjBiokB,EAAgBltrB,EAAMktrB,cACtB3lrB,EAAOwlQ,EAAYxlQ,KACnBujrB,EAAcsG,GAAerkb,EAAYxlQ,KAAMu5U,EAAUstW,YACzDhF,EAAe0B,EAAY9vrB,MAC3Bu5rB,EAAcD,EAAW/srB,EAAKzF,OAC9B0yrB,EAAYF,EAAW/srB,EAAKxF,KAyB5Bw3W,EAzDN,SAAiB94W,GACf,IAAIqgV,EAAYrgV,EAAKqgV,UACjB99H,EAAUviN,EAAKuiN,QAGnB,OAAKA,EAFYviN,EAAKksrB,YAUlB3pe,EAAQp1I,WAAW/hE,MAAQi1U,EAAUlzQ,WAAW/hE,MAC3Cm3M,EAAQp1I,WAAW/hE,MAAQ,EAJ3Bm3M,EAAQp1I,WAAW/hE,MAJnB,IAYX,CAuCiB+orB,CAAQ,CACrB9zW,UAAWA,EACX99H,QAzBY9yM,GADQq6qB,GAAwBzpW,EAAW4rW,GACrB,SAAU3vrB,GAC5C,IAAIqW,EAAKrW,EAAM6wE,WAAWx6D,GACtB0grB,EAAc/2rB,EAAMioH,KAAK5zE,UAAU5+B,OAAOjL,EAAKi+B,MAC/CkvpB,EAA0BzH,GAAsB75qB,EAAI85qB,GACpDmB,EAAcoF,GAAe,CAC/B5I,UAAWthoB,EACXn2C,GAAIA,IAGN,OAAIshrB,EACErG,EACKmG,GAAaV,EAGfS,EAAcT,EAAc1K,EAGjCiF,EACKmG,GAAaV,EAAc1K,EAG7BmL,EAAcT,CACvB,GAIEnH,WAAYnC,GAAS1pW,EAAW/zE,KAElC,OAAO+/a,GAAuB,CAC5BhsW,UAAWA,EACX4rW,kBAAmBA,EACnB3/a,YAAaA,EACb9nJ,SAAUA,EACV17D,KAAMA,EACNuhoB,YAAaA,EACbj/qB,MAAO0tW,GAEV,CA8FOs7U,CAAiB,CACrBR,iCAAkCA,EAClCvzW,UAAWA,EACX/zE,YAAaA,EACb2/a,kBAAmBA,EACnBnjoB,KAAM+loB,EAAezE,UACrB5lkB,SAAUA,EACViokB,cAAeA,GAElB,EAEG4H,GAAoB,SAAWhL,EAAY/1mB,GAC7C,IAAImyW,EAEJ,OAAO,OAAS,CAAC,EAAG4jQ,IAAa5jQ,EAAY,CAAC,GAAanyW,EAAQnG,WAAWx6D,IAAM2gE,EAASmyW,GAC9F,EA0DGz6a,GAAS,SAAWhL,GACtB,IAAIuE,EAAQvE,EAAKuE,MACb+vrB,EAAwBt0rB,EAAK8vrB,gBAC7ByE,EAAmBv0rB,EAAKs3V,WACxBk9V,EAAiBx0rB,EAAKwkH,SACtBiwkB,EAAez0rB,EAAK4prB,OACpBmG,EAAoB/vrB,EAAK+vrB,kBACzBvrkB,EAAWgwkB,GAAkBjwrB,EAAMigH,SACnC8yO,EAAai9V,GAAoBhwrB,EAAM+yV,WACvCw4V,EAAkBwE,GAAyB/vrB,EAAMkG,QAAQm0c,OAAO5C,UAChExid,EAAS6yW,EAASyjV,EAAiBvrrB,EAAM8xC,QAAQuoa,OAAO5C,WACxD4C,EAAS,CACXpld,OAAQA,EACRwid,UAAW8zO,EACXgC,gBAAiB5prB,EAAI3D,EAAM8xC,QAAQuoa,OAAOkzO,gBAAiBt4rB,IAEzD+qH,EAAO,CACTy3V,UAAW9zc,EAAI02c,EAAO5C,UAAWx3V,EAASh9G,OAAOiD,SACjDqnrB,gBAAiB5prB,EAAI02c,EAAOkzO,gBAAiBttkB,EAASh9G,OAAOiD,SAC7DjR,OAAQ0O,EAAI02c,EAAOpld,OAAQgrH,EAASh9G,OAAOyqD,KAAK13D,QAE9CkQ,EAAU,CACZm0c,OAAQA,EACRr6V,KAAMA,GAGR,GAAoB,eAAhBhgH,EAAMgG,MACR,OAAO,OAAS,CACdA,MAAO,cACNhG,EAAO,CACR+yV,WAAYA,EACZ9yO,SAAUA,EACV/5G,QAASA,IAIb,IAAI41U,EAAYiX,EAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAC3D+hrB,EAAYD,GAAgBxB,GAAc,CAC5CC,WAAY3ukB,EAAK/qH,OACjB6mV,UAAWA,EACXkpW,WAAYjyV,EAAWiyV,WACvBF,WAAY/xV,EAAW+xV,WACvBwF,eAAgBtqrB,EAAMqlrB,OACtBplkB,SAAUA,EACViokB,cAAelorB,EAAMkorB,gBAEnBkI,EA7EsB,SAAWp1rB,GACrC,IAAI8gV,EAAY9gV,EAAM8gV,UAClBkpW,EAAahqrB,EAAMgqrB,WACnBF,EAAa9prB,EAAM8prB,WAEnBO,EAASrqrB,EAAMqqrB,OACfgL,EA/BuB,SAAgC50rB,GAC3D,IAAI6urB,EAAiB7urB,EAAK6urB,eACtBjF,EAAS5prB,EAAK4prB,OACdP,EAAarprB,EAAKqprB,WAClBvgoB,EAAOwooB,GAAkBzC,GACzBnxqB,EAAM4zqB,GAAkB1H,GAE5B,IAAK9goB,EACH,OAAOugoB,EAGT,GAAIvgoB,IAASprC,EACX,OAAO2rqB,EAGT,IAAIwL,EAAgBxL,EAAWvgoB,GAE/B,IAAK+roB,EAActhN,QAAQk1M,gBACzB,OAAOY,EAGT,IAAI/1mB,EAhiBkB,SAA2B25d,GACjD,IAAIphd,EAAQohd,EAAU15D,QAAQk1M,gBAC7B58lB,GAAiIo7lB,GAAU,GAC5I,IAAI3vQ,EAAQ21H,EAAU31H,MAEtB,IAAKA,EAAO,CACV,IAAIw9Q,EAAYtM,EAAW,CACzBjkkB,KAAM0ob,EAAU15D,QAAQhvX,KACxBz9G,KAAMmmiB,EAAUnmiB,KAChBwwa,MAAO,KACPmxQ,gBAAiB,OAGnB,OAAO,OAAS,CAAC,EAAGx7I,EAAW,CAC7B15D,QAASuhN,GAEb,CAEA,IAAIC,EAAelpmB,EAAMslmB,kBACxB4D,GAAkK9N,GAAU,GAC7K,IAAIoK,EAAWT,GAAct5Q,EAAOy9Q,GAChCxhN,EAAUi1M,EAAW,CACvBjkkB,KAAM0ob,EAAU15D,QAAQhvX,KACxBz9G,KAAMmmiB,EAAUnmiB,KAChBwwa,MAAO+5Q,EACP5I,gBAAiB,OAEnB,OAAO,OAAS,CAAC,EAAGx7I,EAAW,CAC7B15D,QAASA,EACTj8D,MAAO+5Q,GAEX,CAigBgB2D,CAAkBH,GAChC,OAAOR,GAAkBhL,EAAY/1mB,EACvC,CAQgB2hnB,CAAuB,CACnCpG,eAHmBtvrB,EAAMsvrB,eAIzBjF,OAAQA,EACRP,WAAYA,IAEVzK,EAAS0S,GAAkB1H,GAE/B,IAAKhL,EACH,OAAOgW,EAGT,IAAI3nJ,EAAYo8I,EAAWzK,GAE3B,GAAImL,GAAS1pW,EAAW4sN,GACtB,OAAO2nJ,EAGT,GAAI3nJ,EAAU15D,QAAQk1M,gBACpB,OAAOmM,EAGT,IAAIM,EAAUrE,GAAe5jJ,EAAW5sN,EAAWkpW,GACnD,OAAO8K,GAAkBO,EAASM,EACnC,CAgD+BC,CAAsB,CAClD90W,UAAWA,EACXupW,OAAQ8K,EACR7F,eAAgBtqrB,EAAMqlrB,OACtBL,WAAYjyV,EAAWiyV,WACvBF,WAAY/xV,EAAW+xV,aAezB,OAZa,OAAS,CAAC,EAAG9krB,EAAO,CAC/BkG,QAASA,EACT6sV,WAAY,CACViyV,WAAYjyV,EAAWiyV,WACvBF,WAAYsL,GAEd/K,OAAQ8K,EACRlwkB,SAAUA,EACVurkB,kBAAmBA,GAAqB,KACxClE,oBAAoBkE,GAA4B,MAInD,EAQGqF,GAAY,SAAWp1rB,GACzB,IAAI4prB,EAAS5prB,EAAK4prB,OACdplkB,EAAWxkH,EAAKwkH,SAChB+kkB,EAAavprB,EAAKuprB,WAClBj9a,EAActsQ,EAAKssQ,YACnBu/a,EAAqB7rrB,EAAK6rrB,mBAC1B/ioB,EAAO8goB,EAAOQ,UACdwB,EAbN,SAAyBn5qB,EAAK82qB,GAC5B,OAAO92qB,EAAI9K,IAAI,SAAUgL,GACvB,OAAO42qB,EAAW52qB,EACpB,EACF,CASsB0irB,CAAgBvsoB,EAAKpO,IAAK6uoB,GAC1Ca,EAAYuB,GAAsB,CACpCC,cAAeA,EACft/a,YAAaA,EACb+9a,YAAaT,EAAOS,YACpB7lkB,SAAUA,EAAS8yT,MACnBu0Q,mBAAoBA,EACpB/ioB,KAAMA,IAER,OAAO,OAAS,CAAC,EAAG8goB,EAAQ,CAC1BQ,UAAWA,GAEd,EAEGkL,GAA2B,SAAWt1rB,GACxC,IAAI4prB,EAAS5prB,EAAK4prB,OACdvpW,EAAYrgV,EAAKqgV,UACjB4sN,EAAYjtiB,EAAKitiB,UACjBs8I,EAAavprB,EAAKuprB,WAClB/kkB,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cACrB0B,EAAsBjB,GAAiC,CACzDtD,OAAQA,EACRvpW,UAAWA,EACXkpW,WAAYA,EACZt8I,UAAWA,EACXw/I,cAAeA,IAEjB,OAAOyB,GAAiC,CACtCC,oBAAqBA,EACrB9tW,UAAWA,EACX77N,SAAUA,GAEb,EAEG+wkB,GAAc,SAAWv1rB,GAC3B,IAAIuE,EAAQvE,EAAKuE,MACbgwrB,EAAmBv0rB,EAAKs3V,WACxBk9V,EAAiBx0rB,EAAKwkH,SACD,SAAvBjgH,EAAMixrB,cAAsFvO,GAAU,GACxG,IAAIwO,EAAuBlxrB,EAAMqlrB,OAC7BplkB,EAAWgwkB,GAAkBjwrB,EAAMigH,SACnC8yO,EAAai9V,GAAoBhwrB,EAAM+yV,WACvCiyV,EAAajyV,EAAWiyV,WACxBF,EAAa/xV,EAAW+xV,WACxBhpW,EAAYkpW,EAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAChDisqB,EAAS0S,GAAkBmE,GAC9B7W,GAAwHqI,GAAU,GACnI,IAAI36a,EAAc+8a,EAAWzK,GACzBgL,EAASwL,GAAU,CACrBxL,OAAQ6L,EACRjxkB,SAAUA,EACV8nJ,YAAaA,EACbi9a,WAAYA,IAEVuG,EAAkBwF,GAAyB,CAC7C1L,OAAQA,EACRvpW,UAAWA,EACX4sN,UAAW3gS,EACXi9a,WAAYA,EACZ/kkB,SAAUA,EACViokB,cAAelorB,EAAMkorB,gBAEvB,OAAOzhrB,GAAO,CACZ4+qB,OAAQA,EACRkG,gBAAiBA,EACjBvrrB,MAAOA,EACP+yV,WAAYA,EACZ9yO,SAAUA,GAEb,EASGkxkB,GAAgB,SAAW11rB,GAC7B,IAAIqgV,EAAYrgV,EAAKqgV,UACjBsxW,EAAO3xrB,EAAK2xrB,KACZpI,EAAavprB,EAAKuprB,WAClB/kkB,EAAWxkH,EAAKwkH,SAChB6lkB,EAAcsG,GAAegB,EAAK7qrB,KAAMu5U,EAAUstW,YAClDgI,EAAajM,GAA6BiI,EAAKxknB,WAAWx6D,GAAI42qB,GAC9DqM,EAAWD,EAAWx4rB,QAAQkjV,IAClB,IAAdu1W,GAA2H3O,GAAU,GACvI,IAhB+B95mB,EAgB3By+mB,EAAgB+J,EAAWjmrB,MAAMkmrB,EAAW,GAC5ClJ,EAAWd,EAAc1srB,OAAO,SAAU8kC,EAAUpc,GAEtD,OADAoc,EAASpc,EAAKulD,WAAWx6D,KAAM,EACxBqxB,CACT,EAAG,CAAC,GACAyopB,EAAgB,CAClBoJ,cAAwC,YAAzBlE,EAAKxknB,WAAWpuC,KAC/BsrpB,YAAaA,EACbqC,SAAUA,GAkBZ,MAAO,CACL9C,OATW,CACXQ,UATcuB,GAAsB,CACpCC,cAAeA,EACft/a,YAAaqlb,EACbtH,YAAaA,EACbvhoB,KAAM,KACN07D,SAAUA,EAAS8yT,MACnBu0Q,oBAAoB,IAIpBxB,YAAaA,EACb/kT,GAAI,CACF1gX,KAAM,UACN0nP,aAvC2Bn/L,EAuCEkzQ,EAAUlzQ,WAtCpC,CACL/hE,MAAO+hE,EAAW/hE,MAClBq8qB,YAAat6mB,EAAWs6mB,gBAyCxBgF,cAAeA,EAElB,EAmJGqJ,GAAa,SAAoBvxrB,GACnC,MAA8B,SAAvBA,EAAMixrB,YACf,EAEIO,GAAsB,SAA6BxxrB,EAAO+uE,EAAS0inB,GACrE,IAAI1+V,EAtJkB,SAAWA,EAAYhkR,GAC7C,MAAO,CACLi2mB,WAAYjyV,EAAWiyV,WACvBF,WAAYgL,GAAkB/8V,EAAW+xV,WAAY/1mB,GAExD,CAiJkB2inB,CAAkB1xrB,EAAM+yV,WAAYhkR,GAErD,OAAKwinB,GAAWvxrB,IAAUyxrB,EACjBhrrB,GAAO,CACZzG,MAAOA,EACP+yV,WAAYA,IAITi+V,GAAY,CACjBhxrB,MAAOA,EACP+yV,WAAYA,GAEhB,EAEA,SAAS4+V,GAAwB3xrB,GAC/B,OAAIA,EAAM8xZ,YAAqC,SAAvB9xZ,EAAMixrB,cACrB,OAAS,CACdjrrB,MAAO,YACNhG,EAAO,CACRwrrB,kBAAmB,OAIhBxrrB,CACT,CAEA,IAAI4xrB,GAAO,CACT5rrB,MAAO,OACPs4W,UAAW,KACXuzU,aAAa,GAEXl+d,GAAU,SAAW3zN,EAAOikG,GAK9B,QAJc,IAAVjkG,IACFA,EAAQ4xrB,IAGU,UAAhB3tlB,EAAO5jF,KACT,OAAO,OAAS,CAAC,EAAGuxqB,GAAM,CACxBC,aAAa,IAIjB,GAAoB,oBAAhB5tlB,EAAO5jF,KAA4B,CACnB,SAAhBrgB,EAAMgG,OAA+H08qB,GAAU,GACjJ,IAAIoP,EAAkB7tlB,EAAO1pF,QACzB8yqB,EAAWyE,EAAgBzE,SAC3B9B,EAAkBuG,EAAgBvG,gBAClCtrkB,EAAW6xkB,EAAgB7xkB,SAC3B8yO,EAAa++V,EAAgB/+V,WAC7Bk+V,EAAea,EAAgBb,aAC/Bn1W,EAAYiX,EAAWiyV,WAAWqI,EAASvxW,UAAU1tU,IACrDg/qB,EAAOr6V,EAAW+xV,WAAWuI,EAAS3kJ,UAAUt6hB,IAChDisc,EAAS,CACX5C,UAAW8zO,EACXgC,gBAAiBzxW,EAAUu+H,OAAOjua,UAAU5+B,OAC5CvY,OAAQopG,GAENvsD,EAAU,CACZuoa,OAAQA,EACRr6V,KAAM,CACJy3V,UAAW9zc,EAAI02c,EAAO5C,UAAWx3V,EAASh9G,OAAO6uC,SACjDy7oB,gBAAiB5prB,EAAI02c,EAAO5C,UAAWx3V,EAASh9G,OAAO6uC,SACvD78C,OAAQ0O,EAAI02c,EAAO5C,UAAWx3V,EAASh9G,OAAOyqD,KAAK13D,SAGnD+7rB,EAAwB9M,GAAgBlyV,EAAW+xV,YAAYj6qB,MAAM,SAAUwY,GACjF,OAAQA,EAAK2uqB,aACf,GAEIC,EAAiBd,GAAc,CACjCr1W,UAAWA,EACXsxW,KAAMA,EACNpI,WAAYjyV,EAAWiyV,WACvB/kkB,SAAUA,IAERolkB,EAAS4M,EAAe5M,OAmB5B,MAhBa,CACXr/qB,MAAO,WACP8rZ,YAAY,EACZu7R,SAAUA,EACV4D,aAAcA,EACdl+V,WAAYA,EACZjhT,QAASA,EACT5rC,QAAS4rC,EACTigpB,sBAAuBA,EACvB1M,OAAQA,EACR6C,cAZkB+J,EAAe/J,cAajCgK,aAAc7M,EACdplkB,SAAUA,EACVurkB,kBAAmB,KACnBlE,mBAAoB,KAGxB,CAEA,GAAoB,wBAAhBrjlB,EAAO5jF,KACT,MAAoB,eAAhBrgB,EAAMgG,OAA0C,iBAAhBhG,EAAMgG,MACjChG,GAGS,aAAhBA,EAAMgG,OAAwI08qB,GAAU,IAE5I,OAAS,CACrB18qB,MAAO,cACNhG,EAAO,CACRgG,MAAO,gBAMX,GAAoB,2BAAhBi+F,EAAO5jF,KAET,MADkB,eAAhBrgB,EAAMgG,OAA0C,iBAAhBhG,EAAMgG,OAA0J08qB,GAAU,GAvM5K,SAAWjnrB,GAC7C,IAAIuE,EAAQvE,EAAKuE,MACbmyrB,EAAY12rB,EAAK02rB,UAEjBC,EAAmBD,EAAUE,SAASjvrB,IAAI,SAAUqD,GACtD,IAAIN,EAAWnG,EAAM+yV,WAAW+xV,WAAWr+qB,EAAOy8qB,aAElD,OADesB,EAAgBr+qB,EAAUM,EAAOxD,OAElD,GAEI6hrB,GAAa,OAAS,CAAC,EAAG9krB,EAAM+yV,WAAW+xV,WAAY,CAAC,EAAGD,GAAeuN,IAE1EE,EAAmBvN,GAhCa,SAAWtprB,GAC/C,IAAI82rB,EAAY92rB,EAAK82rB,UACjBC,EAAoB/2rB,EAAK+2rB,kBACzBvykB,EAAWxkH,EAAKwkH,SAChBwykB,EAAqBxykB,EAASh9G,OAAOyqD,KAAK13D,MAC9C,OAAOu8rB,EAAUnvrB,IAAI,SAAU04U,GAC7B,IAAIonW,EAAcpnW,EAAUlzQ,WAAWs6mB,YAEnCnwQ,EAdO,SAAW21H,GACxB,IAAI31H,EAAQ21H,EAAU31H,MAEtB,OADCA,GAAyG2vQ,GAAU,GAC7G3vQ,CACR,CAUe2/Q,CADGF,EAAkBtP,IAE7ByP,EAAwB5/Q,EAAM9va,OAAOyqD,KAAK13D,MAE1CkrH,EAnCc,SAAWzlH,GAC/B,IAAIqgV,EAAYrgV,EAAKqgV,UACjB82W,EAAWn3rB,EAAKxG,OAChB49rB,EAAsBp3rB,EAAKo3rB,oBAC3Bx4O,EAASpld,EAAO6mV,EAAUu+H,OAAQu4O,GAClC5ykB,EAAOkikB,EAAW7nO,EAAQw4O,GAU9B,OARY,OAAS,CAAC,EAAG/2W,EAAW,CAClC9pH,aAAa,OAAS,CAAC,EAAG8pH,EAAU9pH,YAAa,CAC/CqoP,OAAQA,IAEVA,OAAQA,EACRr6V,KAAMA,GAIT,CAmBe8ykB,CAAgB,CAC1Bh3W,UAAWA,EACX7mV,OAHgB0O,EAAI8urB,EAAoBE,GAIxCE,oBAAqB5ykB,EAASh9G,OAAO6uC,UAEvC,OAAOovE,CACT,EACD,CAcuC6xkB,CAAgC,CACpER,UAAWJ,EAAUI,UACrBC,kBAAmB1N,EACnB7kkB,SAAUjgH,EAAMigH,YAGd+kkB,GAAa,OAAS,CAAC,EAAGhlrB,EAAM+yV,WAAWiyV,WAAY,CAAC,EAAGsN,GAE/DH,EAAU7vH,SAASjgkB,QAAQ,SAAU+L,UAC5B42qB,EAAW52qB,EACpB,GACA,IAAI2kV,EAAa,CACf+xV,WAAYA,EACZE,WAAYA,GAEVgO,EAAYjG,GAAkB/srB,EAAMqlrB,QACpC4N,EAAUD,EAAYjgW,EAAW+xV,WAAWkO,GAAa,KACzDl3W,EAAYiX,EAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAC3Dg/qB,EAAOr6V,EAAW+xV,WAAW9krB,EAAMqtrB,SAAS3kJ,UAAUt6hB,IAEtD6jrB,EAAiBd,GAAc,CACjCr1W,UAAWA,EACXsxW,KAAMA,EACNpI,WAAYA,EACZ/kkB,SAAUjgH,EAAMigH,WAEdiykB,EAAeD,EAAe5M,OAC9B6C,EAAgB+J,EAAe/J,cAE/BoC,EAAiB2I,GAAWA,EAAQxI,iBAAmBzqrB,EAAMqlrB,OAAS6M,EACtE7M,EAASqJ,GAAc,CACzBC,WAAY3urB,EAAMkG,QAAQ85G,KAAK/qH,OAC/B6mV,UAAWiX,EAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAC1D42qB,WAAYjyV,EAAWiyV,WACvBF,WAAY/xV,EAAW+xV,WACvBwF,eAAgBA,EAChBrqkB,SAAUjgH,EAAMigH,SAChBiokB,cAAeA,IAIbgL,GAAgB,OAAS,CAC3BltrB,MAAO,YACNhG,EAAO,CACRgG,MAAO,WACPq/qB,OAAQA,EACR6M,aAAcA,EACdn/V,WAAYA,EACZm1V,cAAeA,EACfZ,oBAAoB,IAGtB,MAAoB,eAAhBtnrB,EAAMgG,MACDktrB,GAGS,OAAS,CACzBltrB,MAAO,gBACNktrB,EAAe,CAChBltrB,MAAO,eACP6kP,OAAQ7qP,EAAM6qP,OACdlrH,WAAW,GAId,CA2HUwzjB,CAA8B,CACnCnzrB,MAAOA,EACPmyrB,UAAWlulB,EAAO1pF,UAItB,GAAoB,SAAhB0pF,EAAO5jF,KAAiB,CAC1B,GAAoB,iBAAhBrgB,EAAMgG,MACR,OAAOhG,EAGRsurB,GAAkBturB,IAA4H0irB,GAAU,GACzJ,IAAI0Q,EAAmBnvlB,EAAO1pF,QAAQ8/b,OAEtC,OAAIxhQ,EAAQu6e,EAAkBpzrB,EAAMkG,QAAQm0c,OAAO5C,WAC1Cz3c,EAGFyG,GAAO,CACZzG,MAAOA,EACPurrB,gBAAiB6H,EACjB/N,OAAQkM,GAAWvxrB,GAASA,EAAMqlrB,OAAS,MAE/C,CAEA,GAAoB,4BAAhBphlB,EAAO5jF,KAAoC,CAC7C,GAAoB,iBAAhBrgB,EAAMgG,MACR,OAAO2rrB,GAAwB3xrB,GAGjC,GAAoB,eAAhBA,EAAMgG,MACR,OAAO2rrB,GAAwB3xrB,GAGhCsurB,GAAkBturB,IAA4H0irB,GAAU,GACzJ,IAAI2Q,EAAmBpvlB,EAAO1pF,QAC1BnM,EAAKilrB,EAAiBjlrB,GACtBq2qB,EAAY4O,EAAiB5O,UAC7BrmrB,EAAS4B,EAAM+yV,WAAW+xV,WAAW12qB,GAEzC,IAAKhQ,EACH,OAAO4B,EAGT,IAAImkrB,EAAWK,EAAgBpmrB,EAAQqmrB,GACvC,OAAO+M,GAAoBxxrB,EAAOmkrB,GAAU,EAC9C,CAEA,GAAoB,gCAAhBlglB,EAAO5jF,KAAwC,CACjD,GAAoB,iBAAhBrgB,EAAMgG,MACR,OAAOhG,EAGRsurB,GAAkBturB,IAAiI0irB,GAAU,GAC9J,IAAI4Q,EAAmBrvlB,EAAO1pF,QAC1B83Y,EAAMihS,EAAiBllrB,GACvBy3H,EAAYytjB,EAAiBztjB,UAC7B9xF,EAAU/zC,EAAM+yV,WAAW+xV,WAAWzyR,GACzCt+W,GAA2I2uoB,GAAU,GACpJ3uoB,EAAQ8xF,YAAcA,GAAgM68iB,GAAU,GAElO,IAAI3zmB,GAAU,OAAS,CAAC,EAAGh7B,EAAS,CAClC8xF,UAAWA,IAGb,OAAO2rjB,GAAoBxxrB,EAAO+uE,GAAS,EAC7C,CAEA,GAAoB,wCAAhBk1B,EAAO5jF,KAAgD,CACzD,GAAoB,iBAAhBrgB,EAAMgG,MACR,OAAOhG,EAGRsurB,GAAkBturB,IAAiI0irB,GAAU,GAC9J,IAAI6Q,EAAmBtvlB,EAAO1pF,QAC1Bi5qB,EAAOD,EAAiBnlrB,GACxBq8qB,EAAmB8I,EAAiB9I,iBACpCgJ,EAAWzzrB,EAAM+yV,WAAW+xV,WAAW0O,GAC1CC,GAAsJ/Q,GAAU,GAC/J+Q,EAAShJ,mBAAqBA,GAA6N/H,GAAU,GAEvQ,IAAIpoQ,GAAW,OAAS,CAAC,EAAGm5Q,EAAU,CACpChJ,iBAAkBA,IAGpB,OAAO+G,GAAoBxxrB,EAAOs6a,GAAU,EAC9C,CAEA,GAAoB,0BAAhBr2U,EAAO5jF,KAAkC,CAC3C,GAAoB,iBAAhBrgB,EAAMgG,OAA4C,mBAAhBhG,EAAMgG,MAC1C,OAAOhG,EAGRsurB,GAAkBturB,IAAqH0irB,GAAU,GACjJ1irB,EAAM+xrB,uBAAkJrP,GAAU,GACnK,IAAIgR,EAAazvlB,EAAO1pF,QAAQkqqB,UAEhC,GAAI5re,EAAQ74M,EAAMigH,SAASh9G,OAAOiD,QAASwtrB,GACzC,OAAO/B,GAAwB3xrB,GAGjC,IAAI2zrB,EAAYlK,GAAezprB,EAAMigH,SAAUyzkB,GAE/C,OAAInC,GAAWvxrB,GACNgxrB,GAAY,CACjBhxrB,MAAOA,EACPigH,SAAU0zkB,IAIPltrB,GAAO,CACZzG,MAAOA,EACPigH,SAAU0zkB,GAEd,CAEA,GAAoB,+BAAhB1vlB,EAAO5jF,KAAuC,CAChD,IAAKiuqB,GAAkBturB,GACrB,OAAOA,EAGT,IAAIyoqB,EAAYxkkB,EAAO1pF,QAAQkupB,UAE/B,GAAI5vd,EAAQ4vd,EAAWzoqB,EAAMigH,SAASh9G,OAAOjJ,KAC3C,OAAOgG,EAGT,IAAIqsrB,GAAgB,OAAS,CAAC,EAAGrsrB,EAAMigH,SAAU,CAC/Ch9G,QAAQ,OAAS,CAAC,EAAGjD,EAAMigH,SAASh9G,OAAQ,CAC1CjJ,IAAKyuqB,MAIT,OAAO,OAAS,CACdziqB,MAAO,YACNhG,EAAO,CACRigH,SAAUoskB,GAEd,CAEA,GAAoB,YAAhBpolB,EAAO5jF,MAAsC,cAAhB4jF,EAAO5jF,MAAwC,cAAhB4jF,EAAO5jF,MAAwC,eAAhB4jF,EAAO5jF,KAAuB,CAC3H,GAAoB,eAAhBrgB,EAAMgG,OAA0C,iBAAhBhG,EAAMgG,MACxC,OAAOhG,EAGS,aAAhBA,EAAMgG,OAA0I08qB,GAAU,GAE5J,IAAIkR,EAAW5G,GAAgB,CAC7BhtrB,MAAOA,EACPqgB,KAAM4jF,EAAO5jF,OAGf,OAAKuzqB,EAIEntrB,GAAO,CACZzG,MAAOA,EACPqlrB,OAAQuO,EAASvO,OACjBkG,gBAAiBqI,EAASrI,gBAC1BC,kBAAmBoI,EAASpI,oBAPrBxrrB,CASX,CAEA,GAAoB,iBAAhBikG,EAAO5jF,KAAyB,CAClC,IAAIwqO,EAAS5mJ,EAAO1pF,QAAQswO,OAW5B,MAVkB,eAAhB7qP,EAAMgG,OAA4J08qB,GAAU,IAE/J,OAAS,CACtB18qB,MAAO,gBACNhG,EAAO,CACRgG,MAAO,eACP25H,WAAW,EACXkrH,OAAQA,GAIZ,CAEA,GAAoB,iBAAhB5mJ,EAAO5jF,KAAyB,CAClC,IAAIwzqB,EAAmB5vlB,EAAO1pF,QAC1B+jW,EAAYu1U,EAAiBv1U,UAC7Bw1U,EAAeD,EAAiBC,aAChCC,EAAsBF,EAAiBE,oBAS3C,MARkB,aAAhB/zrB,EAAMgG,OAAwC,iBAAhBhG,EAAMgG,OAAwI08qB,GAAU,GACzK,CACb18qB,MAAO,iBACPs4W,UAAWA,EACXw1U,aAAcA,EACdC,oBAAqBA,EACrBhhW,WAAY/yV,EAAM+yV,WAGtB,CAEA,MAAoB,kBAAhB9uP,EAAO5jF,KAEF,CACLra,MAAO,OACPs4W,UAHer6Q,EAAO1pF,QAAQ+jW,UAI9BuzU,aAAa,GAIV7xrB,CACR,EAQGg0rB,GAAO,SAActvrB,GACvB,MAAO,CACL2b,KAAM,OACN9F,QAAS7V,EAEb,EAOIuvrB,GAAuB,SAA8BvvrB,GACvD,MAAO,CACL2b,KAAM,yBACN9F,QAAS7V,EAEb,EACIwvrB,GAAqB,WACvB,MAAO,CACL7zqB,KAAM,sBACN9F,QAAS,KAEb,EACI45qB,GAAwB,SAA+BzvrB,GACzD,MAAO,CACL2b,KAAM,0BACN9F,QAAS7V,EAEb,EACI0vrB,GAA2B,SAAkC1vrB,GAC/D,MAAO,CACL2b,KAAM,8BACN9F,QAAS7V,EAEb,EACI2vrB,GAAkC,SAAyC3vrB,GAC7E,MAAO,CACL2b,KAAM,sCACN9F,QAAS7V,EAEb,EACIg8C,GAAO,SAAch8C,GACvB,MAAO,CACL2b,KAAM,OACN9F,QAAS7V,EAEb,EAaIyzW,GAAS,WACX,MAAO,CACL93V,KAAM,UACN9F,QAAS,KAEb,EACI69V,GAAW,WACb,MAAO,CACL/3V,KAAM,YACN9F,QAAS,KAEb,EACI+5qB,GAAY,WACd,MAAO,CACLj0qB,KAAM,aACN9F,QAAS,KAEb,EACIg6qB,GAAW,WACb,MAAO,CACLl0qB,KAAM,YACN9F,QAAS,KAEb,EACIqgG,GAAQ,WACV,MAAO,CACLv6F,KAAM,QACN9F,QAAS,KAEb,EAOIi6qB,GAAe,SAAsB9vrB,GACvC,MAAO,CACL2b,KAAM,gBACN9F,QAAS7V,EAEb,EACI41gB,GAAO,SAAc51gB,GACvB,MAAO,CACL2b,KAAM,OACN9F,QAAS7V,EAEb,EAgII+vrB,GAEI,0BAEJnR,GAEM,EAFNA,GAGW,GAHXA,GAMM,IAQNoR,GAAoBC,kCACpB39Y,GAAc,CAChBwtB,MAAO,WAAakwX,GACpBE,KAAM,aAAeF,GAAoB,aAAeA,GACxDp6K,KAAM,SAAc/kgB,GAClB,IAAIo4iB,EAASp4iB,EAAW,KAAOk/qB,GAC/B,MAAO,aAAe9mI,EAAS,aAAeA,CAChD,EACAknI,YAAa,aAAeH,GAC5B1ie,YAAa,UAAY0ie,GAAoB,WAAaA,GAAoB,YAAcA,IAG1F/1pB,GAAS,SAAgB1pC,GAC3B,OAAO4jN,EAAQ5jN,EAAQopG,GAAU,KAAO,aAAeppG,EAAO2B,EAAI,OAAS3B,EAAOjB,EAAI,KACxF,EAEIqoH,GACM19E,GAgBNm2pB,GApCW,IAsCXC,GArCW,IAqCmBD,GAqF9BE,GAAS,SAAWv5rB,GACtB,IAAIuoG,EAAWvoG,EAAKuoG,SAChBD,EAAWtoG,EAAKsoG,SACpB,OAAO,SAAU5rG,GACf,OAAO,SAAU8rG,GACf,GAAoB,SAAhBA,EAAO5jF,KAAX,CAKA,IAAIrgB,EAAQgkG,IACR6mJ,EAAS5mJ,EAAO1pF,QAAQswO,OAE5B,GAAoB,eAAhB7qP,EAAMgG,OAOV,GAAoB,SAAhBhG,EAAMgG,MAAV,CAIuC,iBAAhBhG,EAAMgG,OAA4BhG,EAAM2/H,WACgF+ijB,GAAU,GACvI,aAAhB1irB,EAAMgG,OAAwC,iBAAhBhG,EAAMgG,OAA+H08qB,GAAU,GAC/K,IAAI2K,EAAWrtrB,EAAMqtrB,SACjBt6V,EAAa/yV,EAAM+yV,WACnBjX,EAAYiX,EAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAE3D6mrB,EAtEU,SAAWx5rB,GAC7B,IAAIuprB,EAAavprB,EAAKuprB,WAClBn6b,EAASpvP,EAAKovP,OACdqqc,EAAaz5rB,EAAKy5rB,WAClB9H,EAAO3xrB,EAAK2xrB,KACZntkB,EAAWxkH,EAAKwkH,SAChBiykB,EAAez2rB,EAAKy2rB,aAExB,OAAKgD,EAAWn0T,IAAiB,SAAXl2I,EAcK,YAAvBqqc,EAAWn0T,GAAG1gX,KACT,CACLglqB,OAAQ6P,EACRC,wBAAwB,GAQrB,CACL9P,QALoB,OAAS,CAAC,EAAG6P,EAAY,CAC7CrP,UAAWH,KAKXyP,wBAAwB,GAnBjB,CACL9P,OARyBwL,GAAU,CACnC7L,WAAYA,EACZK,OAAQ6M,EACRnqb,YAAaqlb,EACbntkB,SAAUA,EACVqnkB,oBAAoB,IAIpB6N,wBAAwB,EAmB7B,CAiC0BC,CAAc,CACjCvqc,OAAQA,EACRqqc,WAAYl1rB,EAAMqlrB,OAClB6C,cAAelorB,EAAMkorB,cACrBgK,aAAclyrB,EAAMkyrB,aACpB9E,KAAMptrB,EAAM+yV,WAAW+xV,WAAW9krB,EAAMqtrB,SAAS3kJ,UAAUt6hB,IAC3D6xG,SAAUjgH,EAAMigH,SAChB+kkB,WAAYhlrB,EAAM+yV,WAAWiyV,aAE3BK,EAAS4P,EAAe5P,OACxB8P,EAAyBF,EAAeE,uBAExCptb,EAAcotb,EAAyB/P,GAAkBC,GAAU,KACnE/B,EAAU6R,EAAyB7P,GAAcD,GAAU,KAC3DzjqB,EAAS,CACX/a,MAAOwmrB,EAASvxW,UAAUj1U,MAC1Bq8qB,YAAamK,EAAS3kJ,UAAUt6hB,IAE9B5K,EAAS,CACX+/qB,YAAaznW,EAAUlzQ,WAAWx6D,GAClCiS,KAAMy7T,EAAUlzQ,WAAWvoD,KAC3BuB,OAAQA,EACRipO,OAAQA,EACRrwN,KAAMx6B,EAAMixrB,aACZlpb,YAAaA,EACbu7a,QAASA,GAEPyQ,EAxHmB,SAAWt4rB,GACtC,IAAI4prB,EAAS5prB,EAAK4prB,OACdvpW,EAAYrgV,EAAKqgV,UACjBiX,EAAat3V,EAAKs3V,WAClB9yO,EAAWxkH,EAAKwkH,SAChBiokB,EAAgBzsrB,EAAKysrB,cACrBlD,EAAajyV,EAAWiyV,WACxBF,EAAa/xV,EAAW+xV,WACxB5B,EAAc6J,GAAkB1H,GAChCt9a,EAAcm7a,EAAc4B,EAAW5B,GAAe,KACtDkK,EAAOtI,EAAWhpW,EAAUlzQ,WAAWs6mB,aACvCmS,EAAkBtE,GAAyB,CAC7C1L,OAAQA,EACRvpW,UAAWA,EACXkpW,WAAYA,EACZkD,cAAeA,EACfx/I,UAAW3gS,GAAeqlb,EAC1BntkB,SAAUA,IAGZ,OADa6nP,EAASutV,EAAiBv5W,EAAUu+H,OAAOjua,UAAU5+B,OAEnE,CAmG+B8nrB,CAAuB,CAC/CjQ,OAAQA,EACRvpW,UAAWA,EACXiX,WAAYA,EACZ9yO,SAAUjgH,EAAMigH,SAChBiokB,cAAelorB,EAAMkorB,gBAEnB5pU,EAAY,CACd+uU,SAAUrtrB,EAAMqtrB,SAChBnF,cAAelorB,EAAMkorB,cACrB1krB,OAAQA,EACR6hrB,OAAQA,GAIV,IAF2Bxse,EAAQ74M,EAAMkG,QAAQm0c,OAAOpld,OAAQ8+rB,IAAwBz8lB,QAAQ9zF,EAAO8/qB,SAEvG,CAOA,IAAIwQ,EAlKY,SAAWr4rB,GAC/B,IAEIovP,EAASpvP,EAAKovP,OACd0qc,EAAa3srB,EAHHnN,EAAKyK,QACDzK,EAAKssQ,aAIvB,GAAIwtb,GAAc,EAChB,OAAOT,GAGT,GAAIS,GAZsB,KAaxB,MAnDW,IAsDb,IACIhgrB,EAAWu/qB,GAAcC,IADZQ,EAhBS,MAmB1B,OAAO/0qB,QADuB,WAAXqqO,EAjBI,GAiBkBt1O,EAAgCA,GAC9C64H,QAAQ,GACpC,CAgJwBonjB,CAAgB,CACjCtvrB,QAASlG,EAAMkG,QAAQm0c,OAAOpld,OAC9B8yQ,YAAagsb,EACblpc,OAAQA,IAOV9mJ,EApXG,CACL1jF,KAAM,eACN9F,QA6Wa,CACTw5qB,oBAAqBA,EACrBD,aAAcA,EACdx1U,UAAWA,IAVb,MAJEv6Q,EAASywlB,GAAa,CACpBl2U,UAAWA,IArDf,OAREv6Q,EAvRU,SAAqBr/F,GACrC,MAAO,CACL2b,KAAM,eACN9F,QAAS7V,EAEb,CAkRiB+wrB,CAAY,CACnB5qc,OAAQA,IAPZ,MAFE1yP,EAAK8rG,EAqFT,CACF,CACD,EAEG,GAAkB,WACpB,MAAO,CACLrtG,EAAGY,OAAO6F,YACVrJ,EAAGwD,OAAO+F,YAEb,EAqDD,IAIIm4rB,GAAiB,SAAW31f,GAC9B,IAAI77J,EAvCN,SAA2BzoC,GACzB,IAAIk6rB,EAAiBl6rB,EAAKk6rB,eAMtBC,EAAY,EAJhB,WACED,EAAe,KACjB,GAGI5va,EAzBN,SAAgCt/Q,GAC9B,MAAO,CACL2+F,UAAW,SACXnlG,QAAS,CACPvD,SAAS,EACT0nH,SAAS,GAEXj/G,GAAI,SAAYqX,GACVA,EAAMpe,SAAW5G,QAAUglB,EAAMpe,SAAW5G,OAAOsB,UAIvD2N,GACF,EAEJ,CAUgBovrB,CAAuBD,GACjCrgb,EAASt1P,EAEb,SAAS+lT,IACP,OAAOzwD,IAAWt1P,CACpB,CAcA,MAAO,CACLnjB,MAbF,WACIkpU,KAA4H08W,GAAU,GACxInta,EAASnnM,EAAW52E,OAAQ,CAACuuR,GAC/B,EAWEhwQ,KATF,WACGiwT,KAAuH08W,GAAU,GAClIkT,EAAU5ipB,SACVuiO,IACAA,EAASt1P,CACX,EAKE+lT,SAAUA,EAEd,CAOiB8vX,CAAkB,CAC/BH,eAAgB,SAAwBlR,GACtC1kf,EAAMh8F,SApeH,CACL1jF,KAAM,wBACN9F,QAkeoC,CAChCkqqB,UAAWA,IAEf,IAEF,OAAO,SAAUtsrB,GACf,OAAO,SAAU8rG,GACV//D,EAAS8hS,YAA8B,oBAAhB/hO,EAAO5jF,MACjC6jB,EAASpnC,QAGPonC,EAAS8hS,YAlBH,SAAmB/hO,GACjC,MAAuB,kBAAhBA,EAAO5jF,MAA4C,iBAAhB4jF,EAAO5jF,MAA2C,UAAhB4jF,EAAO5jF,IACrF,CAgBiC01qB,CAAU9xlB,IACnC//D,EAASnuB,OAGX5d,EAAK8rG,EACP,CACF,CACD,EA6GG+xlB,GAAc,SAAqBn7rB,EAAKsK,GAE1CA,GAEF,EAEI8wrB,GAAe,SAAsB5I,EAAU7ypB,GACjD,MAAO,CACL+opB,YAAa8J,EAASvxW,UAAU1tU,GAChCiS,KAAMgtqB,EAAS3kJ,UAAUrohB,KACzBuB,OAAQ,CACNshqB,YAAamK,EAAS3kJ,UAAUt6hB,GAChCvH,MAAOwmrB,EAASvxW,UAAUj1U,OAE5B2zB,KAAMA,EAEV,EAEI07pB,GAAU,SAAiBr1P,EAAWz6b,EAAM69pB,EAAUkyB,GACxD,GAAKt1P,EAAL,CAKA,IAAIu1P,EAnIoB,SAAWnyB,GACnC,IAAIjpY,GAAY,EACZq7Z,GAAY,EACZn3a,EAAYpnQ,WAAW,WACzBu+qB,GAAY,CACd,GAEI7yrB,EAAS,SAAgBi9F,GACvBu6L,GAKAq7Z,IAKJr7Z,GAAY,EACZipY,EAASxjkB,GACTzoF,aAAaknQ,GACf,EAMA,OAJA17Q,EAAOw3R,UAAY,WACjB,OAAOA,CACT,EAEOx3R,CACR,CAuGkB8yrB,CAAoBryB,GAIrCpjO,EAAUz6b,EAHK,CACb69pB,SAAUmyB,IAIPA,EAAWp7Z,aACdipY,EAASkyB,EAAkB/vrB,GAT7B,MAFE69pB,EAASkyB,EAAkB/vrB,GAa/B,EA4HIm3b,GAAa,SAAWg5P,EAAetyB,GACzC,IAAInlpB,EA3Ha,SAAWy3qB,EAAetyB,GAC3C,IAhHI1umB,EAgHAihoB,GAhHAjhoB,EAAU,GAsCP,CACL5xD,IAzBQ,SAAawB,GACrB,IAAIsxrB,EAAU3+qB,WAAW,WACvB,OAdU,SAAiB2+qB,GAC7B,IAAI5vrB,EAAQm+D,EAAUzP,EAAS,SAAUlyC,GACvC,OAAOA,EAAKozqB,UAAYA,CAC1B,IACa,IAAX5vrB,GAAmG67qB,GAAU,GAEzFntnB,EAAQn4B,OAAOv2B,EAAO,GAChB,GAEtB0Y,UACR,CAIW22qB,CAAQO,EACjB,GACIx0oB,EAAQ,CACVw0oB,QAASA,EACTl3qB,SAAUpa,GAEZowD,EAAQpxD,KAAK89C,EACf,EAiBE24D,MAfU,WACV,GAAKrlD,EAAQ9wD,OAAb,CAIA,IAAIiyrB,EAAU,GAAGr4rB,OAAOk3D,GACxBA,EAAQ9wD,OAAS,EACjBiyrB,EAAQr0rB,QAAQ,SAAU4/C,GACxBjqC,aAAaiqC,EAAMw0oB,SACnBx0oB,EAAM1iC,UACR,EAPA,CAQF,IA6EI4oY,EAAW,KAuFXmyH,EAAO,SAAc92gB,GACtB2kZ,GAAqIu6R,GAAU,GAChJv6R,EAAW,KACX6tS,GAAY,EAAa,WACvB,OAAOE,GAAQK,IAAgB92W,UAAWj8U,EAAQygqB,EAAUwf,EAAOhkW,UACrE,EACF,EAgBA,MAAO,CACLk3W,cA5GkB,SAAuBpT,EAAa/opB,GACpD2tX,GAAgJu6R,GAAU,GAC5JsT,GAAY,EAAmB,WAC7B,IAAI7wrB,EAAKoxrB,IAAgBK,gBAErBzxrB,GAKFA,EAJa,CACXo+qB,YAAaA,EACb/opB,KAAMA,GAIZ,EACF,EAgGEq8pB,YA9FgB,SAAqBxJ,EAAU7ypB,GAC7C2tX,GAAkJu6R,GAAU,GAC9JsT,GAAY,EAAqB,WAC/B,IAAI7wrB,EAAKoxrB,IAAgBO,kBAErB3xrB,GACFA,EAAG8wrB,GAAa5I,EAAU7ypB,GAE9B,EACF,EAsFE19B,MApFU,SAAeuwrB,EAAU7ypB,GACjC2tX,GAAkJu6R,GAAU,GAC9J,IAAIt8qB,EAAO6vrB,GAAa5I,EAAU7ypB,GAClC2tX,EAAW,CACT3tX,KAAMA,EACNu8pB,aAAc1J,EACd2J,aAAc5wrB,EAAKwb,OACnBq1qB,YAAa,MAEfT,EAAa7yrB,IAAI,WACfqyrB,GAAY,EAAe,WACzB,OAAOE,GAAQK,IAAgB9yB,YAAar9pB,EAAM69pB,EAAUwf,EAAOhgB,YACrE,EACF,EACF,EAuEEh9pB,OArEW,SAAgB4mrB,EAAUhI,GACrC,IAAI/rlB,EAAW8rlB,GAAkBC,GAC7B/B,EAAUgC,GAAcD,GAC3Bl9R,GAAqIu6R,GAAU,GAChJ,IAAIwU,GA/Fc,SAAyBr4nB,EAAO6uB,GACpD,GAAI7uB,IAAU6uB,EACZ,OAAO,EAGT,IAAIypmB,EAAmBt4nB,EAAMi9Q,UAAU1tU,KAAOs/E,EAAOouP,UAAU1tU,IAAMywD,EAAMi9Q,UAAUonW,cAAgBx1lB,EAAOouP,UAAUonW,aAAerknB,EAAMi9Q,UAAUz7T,OAASqtE,EAAOouP,UAAUz7T,MAAQw+C,EAAMi9Q,UAAUj1U,QAAU6mF,EAAOouP,UAAUj1U,MAC9NuwrB,EAAmBv4nB,EAAM6pe,UAAUt6hB,KAAOs/E,EAAOg7c,UAAUt6hB,IAAMywD,EAAM6pe,UAAUrohB,OAASqtE,EAAOg7c,UAAUrohB,KAC/G,OAAO82qB,GAAoBC,CAC7B,CAuF8BC,CAAgBhK,EAAUllS,EAAS4uS,cAEzDG,IACF/uS,EAAS4uS,aAAe1J,GAG1B,IA3H+CxunB,EAAO6uB,EA2HlD4pmB,GA3HkD5pmB,EA2Ha4L,IA1HxD,OADoCz6B,EA2HHspV,EAAS6uS,eA1HxB,MAAVtpmB,GAIR,MAAT7uB,GAA2B,MAAV6uB,GAId7uB,EAAMqknB,cAAgBx1lB,EAAOw1lB,aAAerknB,EAAMh4D,QAAU6mF,EAAO7mF,QAoHpEywrB,IACFnvS,EAAS6uS,aAAe19lB,GAG1B,IAAIi+lB,GAtHa,SAAwB14nB,EAAO6uB,GAClD,OAAa,MAAT7uB,GAA2B,MAAV6uB,GAIR,MAAT7uB,GAA2B,MAAV6uB,GAId7uB,EAAM0knB,cAAgB71lB,EAAO61lB,aAAe1knB,EAAMqknB,cAAgBx1lB,EAAOw1lB,WAClF,CA4G8BsU,CAAervS,EAAS8uS,YAAa3T,GAM/D,GAJIiU,IACFpvS,EAAS8uS,YAAc3T,GAGpB4T,GAAuBI,GAAuBC,EAAnD,CAIA,IAAInxrB,GAAO,OAAS,CAAC,EAAG6vrB,GAAa5I,EAAUllS,EAAS3tX,MAAO,CAC7D8opB,QAASA,EACTv7a,YAAazuK,IAGfk9lB,EAAa7yrB,IAAI,WACfqyrB,GAAY,EAAgB,WAC1B,OAAOE,GAAQK,IAAgB5S,aAAcv9qB,EAAM69pB,EAAUwf,EAAOE,aACtE,EACF,EAXA,CAYF,EAkCE/okB,MAhCU,WACTutS,GAAkHu6R,GAAU,GAC7H8T,EAAa57kB,OACf,EA8BE0/Z,KAAMA,EACNtjb,MArBU,WACV,GAAKmxT,EAAL,CAIA,IAAI3kZ,GAAS,OAAS,CAAC,EAAGyyrB,GAAa9tS,EAAS4uS,aAAc5uS,EAAS3tX,MAAO,CAC5E8opB,QAAS,KACTv7a,YAAa,KACbld,OAAQ,WAGVyvR,EAAK92gB,EARL,CASF,EAWD,CAGiBi0rB,CAAalB,EAAetyB,GAC5C,OAAO,SAAUlke,GACf,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GACf,GAAoB,2BAAhBA,EAAO5jF,KAAX,CAKA,GAAoB,oBAAhB4jF,EAAO5jF,KAA4B,CACrC,IAAIgtqB,EAAWpplB,EAAO1pF,QAAQ8yqB,SAI9B,OAHAvuqB,EAAU+3qB,YAAYxJ,EAAUpplB,EAAO1pF,QAAQ02qB,cAC/C94rB,EAAK8rG,QACLnlF,EAAUhiB,MAAMuwrB,EAAUpplB,EAAO1pF,QAAQ02qB,aAE3C,CAEA,GAAoB,kBAAhBhtlB,EAAO5jF,KAA0B,CACnC,IAAI7c,EAASygG,EAAO1pF,QAAQ+jW,UAAU96W,OAItC,OAHAsb,EAAU87F,QACVziH,EAAK8rG,QACLnlF,EAAUw7f,KAAK92gB,EAEjB,CAIA,GAFArL,EAAK8rG,GAEe,UAAhBA,EAAO5jF,KAAX,CAKA,IAAIrgB,EAAQ+/L,EAAM/7F,WAEE,aAAhBhkG,EAAMgG,OACR8Y,EAAUrY,OAAOzG,EAAMqtrB,SAAUrtrB,EAAMqlrB,OALzC,MAFEvmqB,EAAUk4E,OArBZ,MAFEl4E,EAAU63qB,cAAc1ylB,EAAO1pF,QAAQgpqB,YAAat/kB,EAAO1pF,QAAQ02qB,aAgCvE,CACF,CACF,CACD,EAEGyG,GAAsB,SAAW33f,GACnC,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GACf,GAAoB,4BAAhBA,EAAO5jF,KAAX,CAKA,IAAIrgB,EAAQ+/L,EAAM/7F,WACA,mBAAhBhkG,EAAMgG,OAAqJ08qB,GAAU,GACvK3if,EAAMh8F,SAASywlB,GAAa,CAC1Bl2U,UAAWt+W,EAAMs+W,YALnB,MAFEnmX,EAAK8rG,EAST,CACF,CACD,EAEG0zlB,GAA6B,SAAW53f,GAC1C,IAAIw1E,EAAS,KACT8sa,EAAU,KAcd,OAAO,SAAUlqrB,GACf,OAAO,SAAU8rG,GAOf,GANoB,UAAhBA,EAAO5jF,MAAoC,kBAAhB4jF,EAAO5jF,MAA4C,4BAAhB4jF,EAAO5jF,OAbvEgiqB,IACF7pc,qBAAqB6pc,GACrBA,EAAU,MAGR9sa,IACFA,IACAA,EAAS,OAUTp9Q,EAAK8rG,GAEe,iBAAhBA,EAAO5jF,KAAX,CAIA,IAAI0lQ,EAAU,CACZ3gL,UAAW,SACXnlG,QAAS,CACPmkH,SAAS,EACT1nH,SAAS,EACTo+G,MAAM,GAER31G,GAAI,WAGkB,mBAFR46L,EAAM/7F,WAERh+F,OACR+5L,EAAMh8F,SAjyBT,CACL1jF,KAAM,0BACN9F,QAAS,MAiyBL,GAEF8nqB,EAAU7iqB,sBAAsB,WAC9B6iqB,EAAU,KACV9sa,EAASnnM,EAAW52E,OAAQ,CAACuuR,GAC/B,EApBA,CAqBF,CACF,CACD,EAqFG6xa,GAAc,SAAW73f,GAC3B,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GAGf,GAFA9rG,EAAK8rG,GAEe,2BAAhBA,EAAO5jF,KAAX,CAIA,IAAIw3qB,EAAkB93f,EAAM/7F,WAEE,iBAA1B6zlB,EAAgB7xrB,QAIhB6xrB,EAAgBl4jB,WAIpBogE,EAAMh8F,SAASu2a,GAAK,CAClBzvR,OAAQgtc,EAAgBhtc,UAb1B,CAeF,CACF,CACD,EAEGitc,GAAyL,KACzLC,GAAc,SAAWt8rB,GAC3B,IA1zBqBu8rB,EA0zBjBC,EAAmBx8rB,EAAKw8rB,iBACxBC,EAAez8rB,EAAKy8rB,aACpBC,EAAe18rB,EAAK08rB,aACpB5B,EAAgB96rB,EAAK86rB,cACrBtyB,EAAWxoqB,EAAKwoqB,SAChB7rB,EAAe38oB,EAAK28oB,aACxB,OAAO,QAAczkb,GAASmke,IAAiB,SAh0B1BE,EAg0BgDG,EA/zB9D,WACL,OAAO,SAAUhgsB,GACf,OAAO,SAAU8rG,GACK,oBAAhBA,EAAO5jF,MACT23qB,EAAQ7vS,WAGU,iBAAhBlkT,EAAO5jF,MACT23qB,EAAQI,SAASn0lB,EAAO1pF,QAAQ+jW,UAAU96W,OAAOqnP,QAG/B,UAAhB5mJ,EAAO5jF,MAAoC,kBAAhB4jF,EAAO5jF,MACpC23qB,EAAQK,UAGVlgsB,EAAK8rG,EACP,CACF,CACF,GAwrB4B,SAAW+zlB,GACvC,OAAO,WACL,OAAO,SAAU7/rB,GACf,OAAO,SAAU8rG,GACK,kBAAhBA,EAAO5jF,MAA4C,UAAhB4jF,EAAO5jF,MAAoC,iBAAhB4jF,EAAO5jF,MACvE23qB,EAAQM,iBAGVngsB,EAAK8rG,EACP,CACF,CACF,CACD,CAyGqFs0lB,CAAwBN,GAv3BjG,SAAWD,GACtB,OAAO,SAAUv8rB,GACf,IAAIuoG,EAAWvoG,EAAKuoG,SAChBD,EAAWtoG,EAAKsoG,SACpB,OAAO,SAAU5rG,GACf,OAAO,SAAU8rG,GACf,GAAoB,SAAhBA,EAAO5jF,KAAX,CAKA,IAAIyxqB,EAAkB7tlB,EAAO1pF,QACzBnM,EAAK0jrB,EAAgB1jrB,GACrBm9qB,EAAkBuG,EAAgBvG,gBAClC0F,EAAea,EAAgBb,aAC/Bn/oB,EAAUkyD,IAEQ,mBAAlBlyD,EAAQ9rC,OACV+9F,EAASywlB,GAAa,CACpBl2U,UAAWxsU,EAAQwsU,aAIA,SAArBt6Q,IAAWh+F,OAAmH08qB,GAAU,GAC1I3+kB,EAAS6W,MACT7W,EA5LC,CACL1jF,KAAM,yBACN9F,QA0LkC,CAC5BgpqB,YAAan1qB,EACb6irB,aAAcA,KAEhB,IAGIh5Z,EAAU,CACZsrZ,YAAan1qB,EACboqrB,cALkB,CAClBC,yBAA2C,SAAjBxH,IAOxByH,EAAwBV,EAAQW,gBAAgB1ga,GAChDo1Z,EAAWqL,EAAsBrL,SACjCt6V,EAAa2lW,EAAsB3lW,WACnC9yO,EAAWy4kB,EAAsBz4kB,SAGrClc,EAlMC,CACL1jF,KAAM,kBACN9F,QAgM4B,CACtB8yqB,SAAUA,EACVt6V,WAAYA,EACZw4V,gBAAiBA,EACjB0F,aAAcA,EACdhxkB,SAAUA,IAvCZ,MAFE9nH,EAAK8rG,EA2CT,CACF,CACF,CACD,CAk0BgI20lB,CAAOX,GAAmBjD,GAAQ0C,GAAqBC,GAA4BC,GA3DnM,SAAWx/C,GAC1B,OAAO,SAAUr4c,GACf,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GACf,GARS,SAAoBA,GACnC,MAAuB,kBAAhBA,EAAO5jF,MAA4C,iBAAhB4jF,EAAO5jF,MAA2C,UAAhB4jF,EAAO5jF,IACrF,CAMYuwB,CAAWqzD,GAGb,OAFAm0iB,EAAarioB,YACb5d,EAAK8rG,GAIP,GAAoB,oBAAhBA,EAAO5jF,KAA4B,CACrCloB,EAAK8rG,GACL,IAAIjkG,EAAQ+/L,EAAM/7F,WAGlB,MAFkB,aAAhBhkG,EAAMgG,OAA0I08qB,GAAU,QAC5JtqC,EAAat7oB,MAAMkD,EAErB,CAEA7H,EAAK8rG,GACLm0iB,EAAan1oB,OAAO88L,EAAM/7F,WAC5B,CACF,CACF,CACD,CAoCgO2ukB,CAAWv6B,GAAes9C,GAvG/O,SAAWsC,GACrB,IAAIa,GAAa,EACjB,OAAO,WACL,OAAO,SAAU1gsB,GACf,OAAO,SAAU8rG,GACf,GAAoB,oBAAhBA,EAAO5jF,KAKT,OAJAw4qB,GAAa,EACbb,EAAQc,eAAe70lB,EAAO1pF,QAAQ8yqB,SAASvxW,UAAU1tU,IACzDjW,EAAK8rG,QACL+zlB,EAAQe,0BAMV,GAFA5gsB,EAAK8rG,GAEA40lB,EAAL,CAIA,GAAoB,UAAhB50lB,EAAO5jF,KAGT,OAFAw4qB,GAAa,OACbb,EAAQe,0BAIV,GAAoB,kBAAhB90lB,EAAO5jF,KAA0B,CACnCw4qB,GAAa,EACb,IAAIr1rB,EAASygG,EAAO1pF,QAAQ+jW,UAAU96W,OAElCA,EAAO8/qB,SACT0U,EAAQgB,eAAex1rB,EAAO+/qB,YAAa//qB,EAAO8/qB,QAAQC,aAG5DyU,EAAQe,yBACV,CAjBA,CAkBF,CACF,CACF,CACD,CAiE0Q,CAAMb,GAAe36P,GAAWg5P,EAAetyB,KACzT,EA6FGg1B,GAAe,SAAWx9rB,GAC5B,IAAI0D,EAAe1D,EAAK0D,aACpBD,EAAczD,EAAKyD,YACnBjI,EAASwE,EAAKxE,OACdF,EAAQ0E,EAAK1E,MACb0xqB,EAAY3gU,EAAS,CACvBlxW,EAAGsI,EACHlL,EAAGmL,GACF,CACDvI,EAAGG,EACH/C,EAAGiD,IAML,MAJwB,CACtBL,EAAGf,KAAKmE,IAAI,EAAGyuqB,EAAU7xqB,GACzB5C,EAAG6B,KAAKmE,IAAI,EAAGyuqB,EAAUz0qB,GAG5B,EAEG6E,GAAqB,WACvB,IAAIwgH,EAAMvgH,SAASC,gBAEnB,OADCsgH,GAAyGqpkB,GAAU,GAC7GrpkB,CACR,EAEG6/kB,GAAqB,WACvB,IAAI7/kB,EAAMxgH,KAOV,OANgBogsB,GAAa,CAC3B95rB,aAAck6G,EAAIl6G,aAClBD,YAAam6G,EAAIn6G,YACjBnI,MAAOsiH,EAAI98G,YACXtF,OAAQoiH,EAAI/8G,cAGf,EA4DD,SAAS68rB,GAAoBpynB,EAAUohV,EAAUlmW,GAC/C,OAAIA,EAAM2mB,WAAWx6D,KAAO+5Y,EAAS/5Y,IAIjC6zC,EAAM2mB,WAAWvoD,OAAS8nY,EAAS9nY,MAMV,YAFlB0mD,EAAS2he,UAAU0wJ,QAAQn3oB,EAAM2mB,WAAWs6mB,aAE9Ct6mB,WAAWpuC,IAMtB,CAEA,IAuYM6+pB,GAgYA39oB,GAvwBF49oB,GAAyB,SAAWvynB,EAAUn1B,GAChD,IAAI07K,EAAa,KACbxuM,EAvMN,SAAyBrjB,GACvB,IAAIsrE,EAAWtrE,EAAKsrE,SAChBn1B,EAAYn2C,EAAKm2C,UACjB2npB,EATG,CACLhH,UAAW,CAAC,EACZjwH,SAAU,CAAC,EACX+vH,SAAU,CAAC,GAOThQ,EAAU,KAEV5ve,EAAU,WACR4ve,IAIJzwoB,EAAUsipB,qBACV7R,EAAU7iqB,sBAAsB,WAC9B6iqB,EAAU,KAEV,IAAImX,EAAWD,EACXhH,EAAYiH,EAASjH,UACrBjwH,EAAWk3H,EAASl3H,SACpB+vH,EAAWmH,EAASnH,SACpB/qmB,EAAQntF,OAAOO,KAAK63rB,GAAWnvrB,IAAI,SAAUgL,GAC/C,OAAO24D,EAAS+0Q,UAAUs9W,QAAQhrrB,GAAIqrrB,aAAap7lB,EACrD,GAAG56F,KAAK,SAAUwG,EAAGC,GACnB,OAAOD,EAAE2+D,WAAW/hE,MAAQqD,EAAE0+D,WAAW/hE,KAC3C,GACIkoE,EAAU50E,OAAOO,KAAK23rB,GAAUjvrB,IAAI,SAAUgL,GAGhD,MAAO,CACL80qB,YAAa90qB,EACbnL,OAJU8jE,EAAS2he,UAAU0wJ,QAAQhrrB,GACpBwjC,UAAU8npB,yBAK/B,GACIl2rB,EAAS,CACX+urB,UAAWjrmB,EACXg7e,SAAUnokB,OAAOO,KAAK4nkB,GACtB+vH,SAAUtjnB,GAEZwqnB,EA3CG,CACLhH,UAAW,CAAC,EACZjwH,SAAU,CAAC,EACX+vH,SAAU,CAAC,GA0CTzgpB,EAAUi3F,QAAQrlI,EACpB,GACF,EAoCA,MAAO,CACLG,IAnCQ,SAAas+C,GACrB,IAAI7zC,EAAK6zC,EAAM2mB,WAAWx6D,GAC1BmrrB,EAAQhH,UAAUnkrB,GAAM6zC,EACxBs3oB,EAAQlH,SAASpwoB,EAAM2mB,WAAWs6mB,cAAe,EAE7CqW,EAAQj3H,SAASl0jB,WACZmrrB,EAAQj3H,SAASl0jB,GAG1BqkM,GACF,EA0BEx/J,OAxBW,SAAgBgP,GAC3B,IAAI2mB,EAAa3mB,EAAM2mB,WACvB2wnB,EAAQj3H,SAAS15f,EAAWx6D,KAAM,EAClCmrrB,EAAQlH,SAASzpnB,EAAWs6mB,cAAe,EAEvCqW,EAAQhH,UAAU3pnB,EAAWx6D,YACxBmrrB,EAAQhH,UAAU3pnB,EAAWx6D,IAGtCqkM,GACF,EAeE18L,KAbS,WACJssqB,IAIL7pc,qBAAqB6pc,GACrBA,EAAU,KACVkX,EAhFK,CACLhH,UAAW,CAAC,EACZjwH,SAAU,CAAC,EACX+vH,SAAU,CAAC,GA8Eb,EAOF,CAqHkBsH,CAAgB,CAC9B/npB,UAAW,CACTi3F,QAASj3F,EAAUqipB,qBACnBC,mBAAoBtipB,EAAUsipB,oBAEhCntnB,SAAUA,IA8DRhoD,EAAa,SAAoBvC,GAClC8wM,GAAoIo1d,GAAU,GAC/I,IAAIv6R,EAAW76L,EAAW+/d,SAASvxW,UAEhB,aAAft/T,EAAM6D,MACJ84qB,GAAoBpynB,EAAUohV,EAAU3rY,EAAMxmB,QAChD8oB,EAAUnb,IAAI6Y,EAAMxmB,OAIL,YAAfwmB,EAAM6D,MACJ84qB,GAAoBpynB,EAAUohV,EAAU3rY,EAAMxmB,QAChD8oB,EAAUm0B,OAAOz2B,EAAMxmB,MAG7B,EA8BA,MARc,CACZo+rB,yBAjG6B,SAAkChmrB,EAAIy3H,GAClE9+D,EAAS2he,UAAUz2N,OAAO7jU,IAAkJs0qB,GAAU,GAElLp1d,GAIL17K,EAAUwipB,yBAAyB,CACjChmrB,GAAIA,EACJy3H,UAAWA,GAEf,EAuFEwujB,gCArFoC,SAAyCjmrB,EAAIq8qB,GAC5En9d,IAIJvmJ,EAAS2he,UAAUz2N,OAAO7jU,IAAwJs0qB,GAAU,GAC7L9woB,EAAUyipB,gCAAgC,CACxCjmrB,GAAIA,EACJq8qB,iBAAkBA,IAEtB,EA4EEjG,gBA9DoB,SAAyBp2qB,EAAIulD,GAC5C25J,GAILvmJ,EAAS2he,UAAU0wJ,QAAQhrrB,GAAIwjC,UAAU3uC,OAAO0wD,EAClD,EAyDEwgoB,sBA3E0B,SAA+B/lrB,EAAIq2qB,GACxDn3d,IAIJvmJ,EAAS2he,UAAUz2N,OAAO7jU,IAA6Is0qB,GAAU,GAClL9woB,EAAUuipB,sBAAsB,CAC9B/lrB,GAAIA,EACJq2qB,UAAWA,IAEf,EAkEEkU,gBAzBoB,SAAyB1ga,GAC3C3qE,GAAuJo1d,GAAU,GACnK,IAAIzgoB,EAAQ8kB,EAAS+0Q,UAAUs9W,QAAQnha,EAAQsrZ,aAC3C6J,EAAOrmnB,EAAS2he,UAAU0wJ,QAAQn3oB,EAAM2mB,WAAWs6mB,aACnDmK,EAAW,CACbvxW,UAAW75R,EAAM2mB,WACjB8/d,UAAW0kJ,EAAKxknB,YAEdgxnB,EAAc7ynB,EAASitT,UAAUj1W,GAKrC,OAJAuuM,EAAa,CACX+/d,SAAUA,EACVuM,YAAaA,GA/IK,SAAWn+rB,GACjC,IA/BIwH,EACAwlqB,EACApuqB,EACAG,EACA6+G,EACAtiH,EACAE,EAyBAo2rB,EAAW5xrB,EAAK4xrB,SAChBmL,EAAgB/8rB,EAAK+8rB,cACrBzxnB,EAAWtrE,EAAKsrE,SAEhBk5C,GAnCAh9G,EAAS,KACTwlqB,EAAYywB,KACZ7+rB,EAAM4I,EAAOjP,EACbwG,EAAOyI,EAAOrM,EAEdG,GADAsiH,EAAMxgH,MACM0D,YACZtF,EAASoiH,EAAI/8G,aASF,CACby2a,MAPUquQ,EAAQ,CAClB/mrB,IAAKA,EACLG,KAAMA,EACNF,MALUE,EAAOzD,EAMjBwD,OALWF,EAAMpD,IASjBgM,OAAQ,CACN6uC,QAAS7uC,EACTiD,QAASjD,EACTjJ,IAAKyuqB,EACL/6mB,KAAM,CACJ13D,MAAOqoG,EACP+llB,aAAc/llB,MAahBw7lB,EAAe55kB,EAASh9G,OAAOiD,QAC/BknrB,EAAOC,EAAS3kJ,UAChBo8I,EAAa/9mB,EAAS2he,UAAUoxJ,aAAa1M,EAAK/sqB,MAAMjd,IAAI,SAAU6+C,GACxE,OAAOA,EAAMrQ,UAAUmopB,2BAA2BF,EAAcrB,EAClE,GACIxT,EAAaj+mB,EAAS+0Q,UAAUg+W,aAAazM,EAASvxW,UAAUz7T,MAAMjd,IAAI,SAAU6+C,GACtF,OAAOA,EAAMw3oB,aAAaI,EAC5B,GAWA,MALa,CACX9mW,WANe,CACfiyV,WAAYD,GAAeC,GAC3BF,WAAYD,GAAeC,IAK3BuI,SAAUA,EACVptkB,SAAUA,EAGb,CAwHU+5kB,CAAkB,CACvB3M,SAAUA,EACVtmnB,SAAUA,EACVyxnB,cAAevga,EAAQuga,eAE3B,EAQEF,eAzDmB,WACnB,GAAKhre,EAAL,CAIAxuM,EAAU/I,OACV,IAAIq3qB,EAAO9/d,EAAW+/d,SAAS3kJ,UAC/B3he,EAAS2he,UAAUoxJ,aAAa1M,EAAK/sqB,MAAMhe,QAAQ,SAAU4/C,GAC3D,OAAOA,EAAMrQ,UAAUqopB,aACzB,GACA3se,EAAWsse,cACXtse,EAAa,IARb,CASF,EAgDD,EAEG4se,GAAe,SAAWl6rB,EAAOoO,GACnC,MAAoB,SAAhBpO,EAAMgG,OAIU,mBAAhBhG,EAAMgG,OAINhG,EAAMs+W,UAAU96W,OAAO+/qB,cAAgBn1qB,GAIF,SAAlCpO,EAAMs+W,UAAU96W,OAAOqnP,MAC/B,EAEGsvc,GAAe,SAAWxmoB,GAC5Bn8D,OAAO0hR,SAASvlN,EAAO/8D,EAAG+8D,EAAO3/D,EAClC,EAEGomsB,IAA0B,OAAW,SAAUtV,GACjD,OAAOG,GAAgBH,GAAYxjrB,OAAO,SAAUoniB,GAClD,QAAKA,EAAU7ia,aAIV6ia,EAAU31H,KAKjB,EACF,GA6BI3ja,GAII,SAAcirrB,GAClB,OAAOxksB,KAAKC,IAAIuksB,EAAY,EAC9B,EAiBEC,GAAgB,SAAW7+rB,GAC7B,IAAI8+rB,EAAe9+rB,EAAK8+rB,aACpBC,EAAa/+rB,EAAK++rB,WAClBt0rB,EAAUzK,EAAKyK,QACfge,EAAQs2qB,EAAaD,EAEzB,OAAc,IAAVr2qB,EAEK,GAGYhe,EAAUq0rB,GACGr2qB,CAEnC,EA2BGu2qB,GAvDc,IAwDdC,GAzDiB,KAiFjBz9Z,GAAW,SAAWxhS,GACxB,IAAIk/rB,EAAiBl/rB,EAAKk/rB,eACtBz/L,EAAaz/f,EAAKy/f,WAClB0/L,EAAgBn/rB,EAAKm/rB,cACrBC,EAAyBp/rB,EAAKo/rB,uBAC9B53rB,EArDqB,SAAW03rB,EAAgBz/L,GACpD,GAAIy/L,EAAiBz/L,EAAW4/L,mBAC9B,OAAO,EAGT,GAAIH,GAAkBz/L,EAAW6/L,iBAC/B,OA5Cc,GA+ChB,GAAIJ,IAAmBz/L,EAAW4/L,mBAChC,OAZY,EAed,IAAIE,EAAiCV,GAAc,CACjDC,aAAcr/L,EAAW6/L,iBACzBP,WAAYt/L,EAAW4/L,mBACvB50rB,QAASy0rB,IAGP13rB,EAzDY,GAyDqBmM,GADE,EAAI4rrB,GAE3C,OAAOnlsB,KAAKsjE,KAAKl2D,EAClB,CAgCcg4rB,CAAqBN,EAAgBz/L,GAElD,OAAe,IAAXj4f,EACK,EAGJ43rB,EAIEhlsB,KAAKmE,IAtCU,SAAWkhsB,EAAgBN,GACjD,IAAIL,EAAeK,EACfJ,EAAaE,GAEbS,EADMjirB,KAAKC,MACKohrB,EAEpB,GAAIY,GAAWT,GACb,OAAOQ,EAGT,GAAIC,EAAUV,GACZ,OAtCY,EAyCd,IAAIW,EAAyCd,GAAc,CACzDC,aAAcE,GACdD,WAAYA,EACZt0rB,QAASi1rB,IAEPl4rB,EAASi4rB,EAAiB9rrB,GAAYgsrB,GAC1C,OAAOvlsB,KAAKsjE,KAAKl2D,EAClB,CAiBiBo4rB,CAAkBp4rB,EAAQ23rB,GAjE5B,GA8DL33rB,CAIV,EAEGq4rB,GAAkB,SAAW7/rB,GAC/B,IAAI06D,EAAY16D,EAAK06D,UACjBoloB,EAAkB9/rB,EAAK8/rB,gBACvBX,EAAgBn/rB,EAAKm/rB,cACrBr4rB,EAAO9G,EAAK8G,KACZs4rB,EAAyBp/rB,EAAKo/rB,uBAC9B3/L,EApGsB,SAAW/kc,EAAW5zD,GAOhD,MAJiB,CACfu4rB,mBAhBmB,IAaI3koB,EAAU5zD,EAAK6gB,MAItC23qB,iBAhBqB,IAaA5koB,EAAU5zD,EAAK6gB,MAMvC,CA4FkBo4qB,CAAsBrloB,EAAW5zD,GAGlD,OAFoBg5rB,EAAgBh5rB,EAAKxF,KAAOw+rB,EAAgBh5rB,EAAKzF,OAG5DmgS,GAAS,CACd09Z,eAAgBY,EAAgBh5rB,EAAKxF,KACrCm+f,WAAYA,EACZ0/L,cAAeA,EACfC,uBAAwBA,KAIpB,EAAI59Z,GAAS,CACnB09Z,eAAgBY,EAAgBh5rB,EAAKzF,OACrCo+f,WAAYA,EACZ0/L,cAAeA,EACfC,uBAAwBA,GAE3B,EAuBGY,GAAUtqrB,EAAM,SAAUnb,GAC5B,OAAiB,IAAVA,EAAc,EAAIA,CAC3B,GACI0lsB,GAAY,SAAWjgsB,GACzB,IAAIm/rB,EAAgBn/rB,EAAKm/rB,cACrBzkoB,EAAY16D,EAAK06D,UACjB64a,EAAUvze,EAAKuze,QACfxhe,EAAS/R,EAAK+R,OACdqtrB,EAAyBp/rB,EAAKo/rB,uBAC9BU,EAAkB,CACpBlhsB,IAAKmT,EAAOxZ,EAAImiE,EAAU97D,IAC1BC,MAAO67D,EAAU77D,MAAQkT,EAAO5W,EAChC2D,OAAQ47D,EAAU57D,OAASiT,EAAOxZ,EAClCwG,KAAMgT,EAAO5W,EAAIu/D,EAAU37D,MAEzBxG,EAAIsnsB,GAAgB,CACtBnloB,UAAWA,EACXoloB,gBAAiBA,EACjBX,cAAeA,EACfr4rB,KAAMywD,GACN6noB,uBAAwBA,IAEtBjksB,EAAI0ksB,GAAgB,CACtBnloB,UAAWA,EACXoloB,gBAAiBA,EACjBX,cAAeA,EACfr4rB,KAAMugD,GACN+3oB,uBAAwBA,IAEtB7sd,EAAWytd,GAAQ,CACrB7ksB,EAAGA,EACH5C,EAAGA,IAGL,GAAI6kN,EAAQm1B,EAAU3vI,GACpB,OAAO,KAGT,IAAIs9lB,EA3DoB,SAAWlgsB,GACnC,IAAI06D,EAAY16D,EAAK06D,UACjB64a,EAAUvze,EAAKuze,QACfksN,EAAiBz/rB,EAAKy/rB,eACtBU,EAAqB5sN,EAAQ/3e,OAASk/D,EAAUl/D,OAChD4ksB,EAAuB7sN,EAAQj4e,MAAQo/D,EAAUp/D,MAErD,OAAK8ksB,GAAyBD,EAI1BC,GAAwBD,EACnB,KAGF,CACLhlsB,EAAGilsB,EAAuB,EAAIX,EAAetksB,EAC7C5C,EAAG4nsB,EAAqB,EAAIV,EAAelnsB,GATpCknsB,CAWV,CAwCeY,CAAoB,CAChC3loB,UAAWA,EACX64a,QAASA,EACTksN,eAAgBltd,IAGlB,OAAK2td,EAIE9if,EAAQ8if,EAASt9lB,GAAU,KAAOs9lB,EAHhC,IAIV,EAEGI,GAAiB5qrB,EAAM,SAAUnb,GACnC,OAAc,IAAVA,EACK,EAGFA,EAAQ,EAAI,GAAK,CAC1B,GACIgmsB,IACE3C,GAAe,SAAsBj7rB,EAAQpE,GAC/C,OAAIoE,EAAS,EACJA,EAGLA,EAASpE,EACJoE,EAASpE,EAGX,CACT,EAEO,SAAUyB,GACf,IAAIyK,EAAUzK,EAAKyK,QACflM,EAAMyB,EAAKzB,IACX25D,EAASl4D,EAAKk4D,OACdsooB,EAAet4rB,EAAIuC,EAASytD,GAC5Bssf,EAAU,CACZrpjB,EAAGyisB,GAAa4C,EAAarlsB,EAAGoD,EAAIpD,GACpC5C,EAAGqlsB,GAAa4C,EAAajosB,EAAGgG,EAAIhG,IAGtC,OAAI6kN,EAAQonW,EAAS5hd,GACZ,KAGF4hd,CACT,GAEEi8I,GAAqB,SAA4BlhsB,GACnD,IAAImhsB,EAASnhsB,EAAMhB,IACfkM,EAAUlL,EAAMkL,QAChBytD,EAAS34D,EAAM24D,OACf35D,EAAM,CACRpD,EAAGf,KAAKmE,IAAIkM,EAAQtP,EAAGulsB,EAAOvlsB,GAC9B5C,EAAG6B,KAAKmE,IAAIkM,EAAQlS,EAAGmosB,EAAOnosB,IAE5BoosB,EAAiBL,GAAepooB,GAChCssf,EAAU+7I,GAAW,CACvBhisB,IAAKA,EACLkM,QAASA,EACTytD,OAAQyooB,IAGV,OAAKn8I,GAIoB,IAArBm8I,EAAexlsB,GAAyB,IAAdqpjB,EAAQrpjB,GAIb,IAArBwlsB,EAAeposB,GAAyB,IAAdisjB,EAAQjsjB,CAKxC,EACIqosB,GAAkB,SAAyBp8kB,EAAUtsD,GACvD,OAAOuooB,GAAmB,CACxBh2rB,QAAS+5G,EAASh9G,OAAOiD,QACzBlM,IAAKimH,EAASh9G,OAAOjJ,IACrB25D,OAAQA,GAEZ,EAcI2ooB,GAAqB,SAA4B5zJ,EAAW/0e,GAC9D,IAAIo/W,EAAQ21H,EAAU31H,MAEtB,QAAKA,GAIEmpR,GAAmB,CACxBh2rB,QAAS6sa,EAAM9va,OAAOiD,QACtBlM,IAAK+4a,EAAM9va,OAAOjJ,IAClB25D,OAAQA,GAEZ,EAyDI4ooB,GAAW,SAAW9gsB,GACxB,IAAIuE,EAAQvE,EAAKuE,MACb46rB,EAAgBn/rB,EAAKm/rB,cACrBC,EAAyBp/rB,EAAKo/rB,uBAC9BV,EAAe1+rB,EAAK0+rB,aACpB3V,EAAkB/orB,EAAK+orB,gBACvBh3qB,EAASxN,EAAMkG,QAAQ85G,KAAKutkB,gBAE5Bv+M,EADYhve,EAAM+yV,WAAWiyV,WAAWhlrB,EAAMqtrB,SAASvxW,UAAU1tU,IAC7C4xG,KAAK6hkB,UAE7B,GAAI7hrB,EAAM+xrB,sBAAuB,CAC/B,IAEIh+Q,EAnDoB,SAAWt4a,GACrC,IAAIwkH,EAAWxkH,EAAKwkH,SAChB+uX,EAAUvze,EAAKuze,QACfxhe,EAAS/R,EAAK+R,OAEdqtrB,EAAyBp/rB,EAAKo/rB,uBAC9B53rB,EAASy4rB,GAAU,CACrBd,cAHkBn/rB,EAAKm/rB,cAIvBzkoB,UAAW8pD,EAAS8yT,MACpBi8D,QAASA,EACTxhe,OAAQA,EACRqtrB,uBAAwBA,IAE1B,OAAO53rB,GAAUo5rB,GAAgBp8kB,EAAUh9G,GAAUA,EAAS,IAC/D,CAqCiBu5rB,CAAsB,CAClC5B,cAAeA,EACf36kB,SAJajgH,EAAMigH,SAKnB+uX,QAASA,EACTxhe,OAAQA,EACRqtrB,uBAAwBA,IAG1B,GAAI9mR,EAEF,YADAomR,EAAapmR,EAGjB,CAEA,IAAI20H,EAtZ2B,SAAWjtiB,GAC1C,IAAI+R,EAAS/R,EAAK+R,OACdu6P,EAActsQ,EAAKssQ,YACnB+8a,EAAarprB,EAAKqprB,WAEtB,GAAI/8a,EAAa,CACf,IAAI00b,EAAa3X,EAAW/8a,GAE5B,OAAK00b,EAAW1pR,MAIT0pR,EAHE,IAIX,CAEA,IAAI37qB,EAvB2B,SAAoC1iB,EAAQ0mrB,GAC3E,IAAI4X,EAAQxxrB,GAAKkvrB,GAAwBtV,GAAa,SAAUp8I,GAE9D,OADCA,EAAU31H,OAAqF2vQ,GAAU,GACnG6L,GAAkB7lJ,EAAU31H,MAAMixQ,cAAlCuK,CAAiDnwrB,EAC1D,GACA,OAAOs+rB,CACT,CAiBkBC,CAA2BnvrB,EAAQs3qB,GACnD,OAAOhkqB,CACR,CAqYiB87qB,CAA2B,CACzCpvrB,OAAQA,EACRu6P,YAAaglb,GAAkB/srB,EAAMqlrB,QACrCP,WAAY9krB,EAAM+yV,WAAW+xV,aAG/B,GAAKp8I,EAAL,CAIA,IAAI/0e,EA3DyB,SAAWl4D,GACxC,IAAIitiB,EAAYjtiB,EAAKitiB,UACjB15D,EAAUvze,EAAKuze,QACfxhe,EAAS/R,EAAK+R,OACdotrB,EAAgBn/rB,EAAKm/rB,cACrBC,EAAyBp/rB,EAAKo/rB,uBAC9B9nR,EAAQ21H,EAAU31H,MAEtB,IAAKA,EACH,OAAO,KAGT,IAAI9va,EAASy4rB,GAAU,CACrBd,cAAeA,EACfzkoB,UAAW48W,EAAMixQ,cACjBh1M,QAASA,EACTxhe,OAAQA,EACRqtrB,uBAAwBA,IAE1B,OAAO53rB,GAAUq5rB,GAAmB5zJ,EAAWzliB,GAAUA,EAAS,IACnE,CAuCc45rB,CAAyB,CACpCjC,cAAeA,EACflyJ,UAAWA,EACX15D,QAASA,EACTxhe,OAAQA,EACRqtrB,uBAAwBA,IAGtBlnoB,GACF6wnB,EAAgB97I,EAAU9/d,WAAWx6D,GAAIulD,EAX3C,CAaD,EAoEGmpoB,GAAqB,SAAWrhsB,GAClC,IAAIilD,EAAOjlD,EAAKilD,KACZ8joB,EAAkB/orB,EAAK+orB,gBACvB2V,EAAe1+rB,EAAK0+rB,aA0ExB,OAzBmB,SAAsBn6rB,GACvC,IAAIi4R,EAAUj4R,EAAMwrrB,kBAEpB,GAAKvzZ,EAAL,CAIA,IAAIlwB,EAAcglb,GAAkB/srB,EAAMqlrB,QACzCt9a,GAAsI26a,GAAU,GACjJ,IAAIqa,EAjD6B,SAAsCr0J,EAAW/0e,GAClF,IAAK2ooB,GAAmB5zJ,EAAW/0e,GACjC,OAAOA,EAGT,IAAIssf,EA7LkB,SAA6BvX,EAAW/0e,GAChE,IAAIo/W,EAAQ21H,EAAU31H,MAEtB,OAAKA,GAIAupR,GAAmB5zJ,EAAW/0e,GAI5BqooB,GAAW,CAChB91rB,QAAS6sa,EAAM9va,OAAOiD,QACtBlM,IAAK+4a,EAAM9va,OAAOjJ,IAClB25D,OAAQA,IAVD,IAYX,CA6KkBqpoB,CAAoBt0J,EAAW/0e,GAE7C,IAAKssf,EAEH,OADAukI,EAAgB97I,EAAU9/d,WAAWx6D,GAAIulD,GAClC,KAGT,IAAIspoB,EAA4Bn1V,EAASn0S,EAAQssf,GAGjD,OAFAukI,EAAgB97I,EAAU9/d,WAAWx6D,GAAI6urB,GACzBn1V,EAASn0S,EAAQspoB,EAEnC,CAiC2BC,CAA6Bl9rB,EAAM+yV,WAAW+xV,WAAW/8a,GAAckwB,GAEhG,GAAK8ka,EAAL,CAIA,IAAI98kB,EAAWjgH,EAAMigH,SACjBk9kB,EAtC0B,SAAmCpL,EAAuB9xkB,EAAUtsD,GAClG,IAAKo+nB,EACH,OAAOp+nB,EAGT,IAAK0ooB,GAAgBp8kB,EAAUtsD,GAC7B,OAAOA,EAGT,IAAIssf,EA7Oe,SAA0Bhgc,EAAUtsD,GACzD,IAAK0ooB,GAAgBp8kB,EAAUtsD,GAC7B,OAAO,KAGT,IAAI35D,EAAMimH,EAASh9G,OAAOjJ,IACtBkM,EAAU+5G,EAASh9G,OAAOiD,QAC9B,OAAO81rB,GAAW,CAChB91rB,QAASA,EACTlM,IAAKA,EACL25D,OAAQA,GAEZ,CAiOkBypoB,CAAiBn9kB,EAAUtsD,GAEzC,IAAKssf,EAEH,OADAk6I,EAAaxmoB,GACN,KAGT,IAAI0poB,EAAyBv1V,EAASn0S,EAAQssf,GAG9C,OAFAk6I,EAAakD,GACGv1V,EAASn0S,EAAQ0poB,EAEnC,CAkBwBC,CAA0Bt9rB,EAAM+xrB,sBAAuB9xkB,EAAU88kB,GAElFI,GAjEY,SAAsBn9rB,EAAO/K,GAC9C,IAAIold,EAAS12c,EAAI3D,EAAMkG,QAAQm0c,OAAO5C,UAAWxid,GACjDyrD,EAAK,CACH25Z,OAAQA,GAEZ,CAgEEkjP,CAAav9rB,EAAOm9rB,EATpB,CARA,CAkBF,CAGD,EAEGK,GAAqB,SAAW/hsB,GAClC,IAAI+orB,EAAkB/orB,EAAK+orB,gBACvB2V,EAAe1+rB,EAAK0+rB,aACpBz5oB,EAAOjlD,EAAKilD,KACZ+8oB,EAtJoB,SAAWhisB,GACnC,IACI+orB,EAAkB/orB,EAAK+orB,gBACvBkZ,EAAuB,EAFRjisB,EAAK0+rB,cAGpBwD,EAA0B,EAAQnZ,GAClCr8R,EAAW,KAEXy1S,EAAY,SAAmB59rB,GAChCmoZ,GAA6Gu6R,GAAU,GACxH,IAAImb,EAAY11S,EACZ0yS,EAAyBgD,EAAUhD,uBACnCD,EAAgBiD,EAAUjD,cAC9B2B,GAAS,CACPv8rB,MAAOA,EACPm6rB,aAAcuD,EACdlZ,gBAAiBmZ,EACjB/C,cAAeA,EACfC,uBAAwBA,GAE5B,EAwCA,MAAO,CACL/9rB,MAvCY,SAAiBkD,GAE3BmoZ,GAA0Hu6R,GAAU,GACtI,IAAIkY,EAAgB1hrB,KAAKC,MACrB2krB,GAAkB,EAElBC,EAAqB,WACvBD,GAAkB,CACpB,EAEAvB,GAAS,CACPv8rB,MAAOA,EACP46rB,cAAe,EACfC,wBAAwB,EACxBV,aAAc4D,EACdvZ,gBAAiBuZ,IAEnB51S,EAAW,CACTyyS,cAAeA,EACfC,uBAAwBiD,GAItBA,GACFF,EAAU59rB,EAEd,EAcE+V,KAZS,WACJoyY,IAILu1S,EAAqB1qpB,SACrB2qpB,EAAwB3qpB,SACxBm1W,EAAW,KACb,EAKEllZ,OAAQ26rB,EAEX,CAsFqBI,CAAoB,CACtC7D,aAAcA,EACd3V,gBAAiBA,IAEfyZ,EAAanB,GAAmB,CAClCp8oB,KAAMA,EACNy5oB,aAAcA,EACd3V,gBAAiBA,IAyBnB,MALe,CACbvhrB,OAlBW,SAAgBjD,GACP,aAAhBA,EAAMgG,QAIiB,UAAvBhG,EAAMixrB,aAKLjxrB,EAAMwrrB,mBAIXyS,EAAWj+rB,GARTy9rB,EAAcx6rB,OAAOjD,GASzB,EAIElD,MAAO2gsB,EAAc3gsB,MACrBiZ,KAAM0nrB,EAAc1nrB,KAGvB,EAEGmorB,GAAW,WACXC,GAEK,CACLzipB,KAFEA,GAAOwipB,GAAW,eAGpB3a,YAAa7noB,GAAO,gBACpBqse,UAAWrse,GAAO,eAGlBogS,GAAY,WACd,IAAIpgS,EAAOwipB,GAAW,aACtB,MAAO,CACLxipB,KAAMA,EACNqse,UAAWrse,EAAO,cAClBttC,GAAIstC,EAAO,MAEf,CAPgB,GAQZgtf,GAAY,WACd,IAAIhtf,EAAOwipB,GAAW,aACtB,MAAO,CACLxipB,KAAMA,EACNqse,UAAWrse,EAAO,cAClBttC,GAAIstC,EAAO,MAEf,CAPgB,GAQZqtnB,GAAkB,CACpBhhJ,UAAWm2K,GAAW,gCASpBE,GAAY,SAAmBp2kB,EAAOrjG,GACxC,OAAOqjG,EAAM5kH,IAAI,SAAU8vO,GACzB,IAAIl9O,EAAQk9O,EAAK3tO,OAAOof,GAExB,OAAK3uB,EAIEk9O,EAAKl7G,SAAW,MAAQhiI,EAAQ,KAH9B,EAIX,GAAGuY,KAAK,IACV,EAGI8vrB,GAAc,SAAWt2K,GAC3B,IApB6Cvuf,EAuBvC8kqB,EAaA/+oB,EAhBFg/oB,GApByC/kqB,EAoBXuuf,EAnB3B,SAAU5iQ,GACf,MAAO,IAAMA,EAAY,KAAQ3rP,EAAU,IAC7C,GAmBIglqB,GACEF,EAAa,2DACV,CACLtmkB,SAAUumkB,EAAYJ,GAAWp2K,WACjCxihB,OAAQ,CACNk5rB,OAAQ,mJACRpG,QAASiG,EACTn2S,SAXc,wBAYdu2S,cAAeJ,KA6BjBt2kB,EAAQ,EAvBNzoE,EAAa,uBAAyBy3P,GAAY69Y,YAAc,UAC7D,CACL78jB,SAAUumkB,EAAYziX,GAAUisM,WAChCxihB,OAAQ,CACN4iZ,SAAU5oW,EACVm/oB,cAAen/oB,EACfo/oB,WAAYp/oB,KAiBQi/oB,EAZR,CAChBxmkB,SAAUumkB,EAAY71J,GAAU3gB,WAChCxihB,OAAQ,CACNk5rB,OAAQ,2BAGD,CACTzmkB,SAAU,OACVzyH,OAAQ,CACN4iZ,SAAU,6OAId,MAAO,CACLs2S,OAAQL,GAAUp2kB,EAAO,UACzBqwkB,QAAS+F,GAAUp2kB,EAAO,WAC1BmgS,SAAUi2S,GAAUp2kB,EAAO,YAC3B02kB,cAAeN,GAAUp2kB,EAAO,iBAChC22kB,WAAYP,GAAUp2kB,EAAO,cAEhC,EAEG42kB,GAA8C,oBAAXpnsB,aAAqD,IAApBA,OAAOsB,eAAqE,IAAlCtB,OAAOsB,SAASskB,cAAgC,EAAA6xU,gBAAkB,EAAA/+U,UAEhL2urB,GAAU,WACZ,IAAI36oB,EAAOprD,SAAS8U,cAAc,QAElC,OADCs2C,GAA+Gw+nB,GAAU,GACnHx+nB,CACT,EAEI46oB,GAAgB,SAAuBpimB,GACzC,IAAI9uD,EAAK90C,SAASskB,cAAc,SAOhC,OALIs/E,GACF9uD,EAAGt/B,aAAa,QAASouF,GAG3B9uD,EAAGvtB,KAAO,WACHutB,CACT,EAsEImxpB,GAAkB,SAAWnxpB,GAC/B,OAAOA,GAAMA,EAAGt2C,cAAgBs2C,EAAGt2C,cAAcC,YAAcC,MAChE,EAED,SAASwnsB,GAAcpxpB,GACrB,OAAOA,aAAcmxpB,GAAgBnxpB,GAAIh2C,WAC3C,CAkHA,SAASqnsB,KACP,IAAI1poB,EAAU,CACZyvnB,WAAY,CAAC,EACbF,WAAY,CAAC,GAEXoa,EAAc,GAelB,SAASz2nB,EAAOjsD,GACV0irB,EAAYz6rB,QACdy6rB,EAAY78rB,QAAQ,SAAUwwC,GAC5B,OAAOA,EAAGr2B,EACZ,EAEJ,CAEA,SAAS2irB,EAAkB/wrB,GACzB,OAAOmnD,EAAQyvnB,WAAW52qB,IAAO,IACnC,CA4DA,SAASgxrB,EAAkBhxrB,GACzB,OAAOmnD,EAAQuvnB,WAAW12qB,IAAO,IACnC,CA2CA,MAAO,CACL0tU,UAlGiB,CACjB31Q,SAAU,SAAkBlkB,GAC1BsT,EAAQyvnB,WAAW/ioB,EAAM2mB,WAAWx6D,IAAM6zC,EAC1CwmB,EAAO,CACLpoD,KAAM,WACNrqB,MAAOisD,GAEX,EACAx7C,OAAQ,SAAgBw7C,EAAOsC,GAC7B,IAAIr+C,EAAUqvD,EAAQyvnB,WAAWzgoB,EAAKqkB,WAAWx6D,IAE5ClI,GAIDA,EAAQ+yG,WAAah3D,EAAMg3D,kBAIxB1jD,EAAQyvnB,WAAWzgoB,EAAKqkB,WAAWx6D,IAC1CmnD,EAAQyvnB,WAAW/ioB,EAAM2mB,WAAWx6D,IAAM6zC,EAC5C,EACA6kB,WAAY,SAAoB7kB,GAC9B,IAAIshoB,EAActhoB,EAAM2mB,WAAWx6D,GAC/BlI,EAAUi5rB,EAAkB5b,GAE3Br9qB,GAID+7C,EAAMg3D,WAAa/yG,EAAQ+yG,kBAIxB1jD,EAAQyvnB,WAAWzB,GAC1B96mB,EAAO,CACLpoD,KAAM,UACNrqB,MAAOisD,IAEX,EACAm3oB,QA9CF,SAA0BhrrB,GACxB,IAAI6zC,EAAQk9oB,EAAkB/wrB,GAE9B,OADC6zC,GAAuHygoB,GAAU,GAC3HzgoB,CACT,EA2CEo9oB,SAAUF,EACVltX,OAAQ,SAAgB7jU,GACtB,OAAOkpF,QAAQ6nmB,EAAkB/wrB,GACnC,EACA0rrB,aAAc,SAAsBz5qB,GAClC,OAAO4Y,EAAOs8B,EAAQyvnB,YAAY1jrB,OAAO,SAAU2gD,GACjD,OAAOA,EAAM2mB,WAAWvoD,OAASA,CACnC,EACF,GAkDAqohB,UArCiB,CACjBvie,SAAU,SAAkBlkB,GAC1BsT,EAAQuvnB,WAAW7ioB,EAAM2mB,WAAWx6D,IAAM6zC,CAC5C,EACA6kB,WAAY,SAAoB7kB,GAC9B,IAAI/7C,EAAUk5rB,EAAkBn9oB,EAAM2mB,WAAWx6D,IAE5ClI,GAID+7C,EAAMg3D,WAAa/yG,EAAQ+yG,iBAIxB1jD,EAAQuvnB,WAAW7ioB,EAAM2mB,WAAWx6D,GAC7C,EACAgrrB,QAvBF,SAA0BhrrB,GACxB,IAAI6zC,EAAQm9oB,EAAkBhxrB,GAE9B,OADC6zC,GAAuHygoB,GAAU,GAC3HzgoB,CACT,EAoBEo9oB,SAAUD,EACVntX,OAAQ,SAAgB7jU,GACtB,OAAOkpF,QAAQ8nmB,EAAkBhxrB,GACnC,EACA0rrB,aAAc,SAAsBz5qB,GAClC,OAAO4Y,EAAOs8B,EAAQuvnB,YAAYxjrB,OAAO,SAAU2gD,GACjD,OAAOA,EAAM2mB,WAAWvoD,OAASA,CACnC,EACF,GAYA2zW,UAnIF,SAAmBnhV,GAEjB,OADAqspB,EAAY/6rB,KAAK0uC,GACV,WACL,IAAIhsC,EAAQq4rB,EAAYtmsB,QAAQi6C,IAEjB,IAAXhsC,GAIJq4rB,EAAY9hqB,OAAOv2B,EAAO,EAC5B,CACF,EAyHEg7e,MAVF,WACEtsb,EAAQyvnB,WAAa,CAAC,EACtBzvnB,EAAQuvnB,WAAa,CAAC,EACtBoa,EAAYz6rB,OAAS,CACvB,EAQF,CAYA,IAAI66rB,GAAe,gBAAoB,MAEnCC,GAAiB,WACnB,IAAIxhsB,EAAOjF,SAASiF,KAEpB,OADCA,GAA+F2krB,GAAU,GACnG3krB,CACR,EAEGyhsB,GAAiB,CACnBrmsB,SAAU,WACVpC,MAAO,MACPE,OAAQ,MACRmoC,OAAQ,OACRusB,OAAQ,IACR9qD,QAAS,IACTlD,SAAU,SACV2hC,KAAM,gBACN,YAAa,eAGX0mY,GAAQ,SAAe+hH,GACzB,MAAO,oBAAsBA,CAC/B,EA2CI1/e,GAAQ,EACRnP,GAAW,CACb2mO,UAAW,MAKb,SAAS4/b,GAAYl6pB,EAAQtlC,GAK3B,YAJgB,IAAZA,IACFA,EAAUi5B,IAGLjpB,EAAQ,WACb,MAAO,GAAKs1B,EAAStlC,EAAQ4/P,UAAYx3N,IAC3C,EAAG,CAACpoC,EAAQ4/P,UAAWt6N,GACzB,CAoCA,IAAIm6pB,GAAa,gBAAoB,MAiGrC,SAASt2e,GAAYljN,GACnB,IAAIg9G,GAAM,IAAA5zG,QAAOpJ,GAIjB,OAHA,IAAAgK,WAAU,WACRgzG,EAAIh9G,QAAUA,CAChB,GACOg9G,CACT,CA2CA,IAaIy8kB,GAoSAC,GAnSAC,KAAiBF,GAAiB,CAAC,GAb3B,KAasD,EAAMA,GAd9D,IAcoF,EAAMA,IAChGG,GAA2B,SAAWtjrB,GACpCqjrB,GAAcrjrB,EAAMyrS,UACtBzrS,EAAMwgH,gBAET,EAEG+ikB,GAAqB,WACvB,IAAIrkpB,EAAO,mBAEX,MAAwB,oBAAb5iD,SACF4iD,EAIOxwC,GADC,CAACwwC,EAAM,KAAOA,EAAM,SAAWA,EAAM,MAAQA,EAAM,IAAMA,GACzC,SAAU0pD,GACzC,MAAO,KAAOA,KAAatsG,QAC7B,IACoB4iD,CACtB,CAZyB,GAqBrBskpB,GAAS,CACX3/qB,KAAM,QAwQR,SAAS4/qB,KAAU,CAEnB,IAAIC,KAAkBN,GAAkB,CAAC,GAhT1B,KAgTyD,EAAMA,GAjTjE,KAiT2F,EAAMA,GA9SnG,KA8S2H,EAAMA,GA/SlI,KA+SyJ,EAAMA,IAoJzK,IAAIO,GAAS,CACX9/qB,KAAM,QAmSJ+/qB,GAAsB,CACxB9tsB,OAAO,EACPiwS,QAAQ,EACR69B,UAAU,EACVE,QAAQ,EACR3qR,QAAQ,EACR+4N,UAAU,EACVtjD,OAAO,EACPD,OAAO,GAGT,SAASk1e,GAAuBvosB,EAAQoO,GACtC,GAAe,MAAXA,EACF,OAAO,EAKT,GAF0BoxF,QAAQ8omB,GAAoBl6rB,EAAQm7G,QAAQ5oH,gBAGpE,OAAO,EAGT,IAAI0sR,EAAYj/Q,EAAQiI,aAAa,mBAErC,MAAkB,SAAdg3Q,GAAsC,KAAdA,GAIxBj/Q,IAAYpO,GAITuosB,GAAuBvosB,EAAQoO,EAAQg6G,cAChD,CAEA,SAASoglB,GAA4BxkX,EAAWt/T,GAC9C,IAAIpe,EAASoe,EAAMpe,OAEnB,QAAK4gsB,GAAc5gsB,IAIZiisB,GAAuBvkX,EAAW19U,EAC3C,CAEA,IAAImisB,GAA6B,SAAW3ypB,GAC1C,OAAOwzoB,EAAQxzoB,EAAG3wC,yBAAyBuQ,MAC5C,EAMGgzrB,GAAuB,WACzB,IAAI9kpB,EAAO,UAEX,MAAwB,oBAAb5iD,SACF4iD,EAIGxwC,GADK,CAACwwC,EAAM,oBAAqB,yBAChB,SAAU93C,GACrC,OAAOA,KAAQlM,QAAQ+Y,SACzB,IACgBirC,CAClB,CAZ2B,GAc3B,SAAS+kpB,GAAgB7ypB,EAAIoqF,GAC3B,OAAU,MAANpqF,EACK,KAGLA,EAAG4ypB,IAAsBxokB,GACpBpqF,EAGF6ypB,GAAgB7ypB,EAAGsyE,cAAe8X,EAC3C,CAEA,SAAS0okB,GAAU9ypB,EAAIoqF,GACrB,OAAIpqF,EAAGowK,QACEpwK,EAAGowK,QAAQhmF,GAGbyokB,GAAgB7ypB,EAAIoqF,EAC7B,CA0DA,SAASgF,GAAexgH,GACtBA,EAAMwgH,gBACR,CAEA,SAAS2jkB,GAAUllsB,GACjB,IAAI6+N,EAAW7+N,EAAK6+N,SAChBt0N,EAAQvK,EAAKuK,MACb46rB,EAAenlsB,EAAKmlsB,aAGxB,OAFiBnlsB,EAAKolsB,aAEjBD,KAQDtme,IAAat0N,CASnB,CAEA,SAAS86rB,GAAS9lsB,GAChB,IAAI+lsB,EAAU/lsB,EAAM+lsB,QAChBhhgB,EAAQ/kM,EAAM+kM,MACdh5H,EAAW/rE,EAAM+rE,SACjBw8mB,EAAcvorB,EAAMuorB,YAExB,GAAIwd,EAAQC,YACV,OAAO,EAGT,IAAI/+oB,EAAQ8kB,EAAS+0Q,UAAUujX,SAAS9b,GAExC,QAAKthoB,KAKAA,EAAMhiD,QAAQ4lI,aAIdq0jB,GAAan6f,EAAM/7F,WAAYu/kB,EAKtC,CAwMA,IAAIzT,GAAiB,CAv9BrB,SAAwBmxB,GACtB,IAAIC,GAAW,IAAA5xrB,QAAO0wrB,IAClBmB,GAAkB,IAAA7xrB,QAAO2Q,GACzBmhrB,EAAsBnxrB,EAAQ,WAChC,MAAO,CACLm1F,UAAW,YACXjgG,GAAI,SAAqBqX,GACvB,IAAIA,EAAM62P,kBAxIE,IA4IR72P,EAAM+lR,UAIN/lR,EAAM2lR,SAAW3lR,EAAM4lR,SAAW5lR,EAAM6lR,UAAY7lR,EAAMi5a,QAA9D,CAIA,IAAI8tP,EAAc0d,EAAII,uBAAuB7krB,GAE7C,GAAK+mqB,EAAL,CAIA,IAAI+d,EAAUL,EAAIM,WAAWhe,EAAaxtqB,EAAM,CAC9Cw0d,YAAa/td,IAGf,GAAK8krB,EAAL,CAIA9krB,EAAMwgH,iBACN,IAAI99F,EAAQ,CACVtoC,EAAG4lB,EAAMswB,QACT94C,EAAGwoB,EAAMuwB,SAEXo0pB,EAAgBj7rB,UAChBs7rB,EAAiBF,EAASpiqB,EAR1B,CARA,CANA,CAuBF,EAEJ,EAAG,CAAC+hqB,IACAQ,EAA2BxxrB,EAAQ,WACrC,MAAO,CACLm1F,UAAW,4BACXjgG,GAAI,SAAYqX,GACd,IAAIA,EAAM62P,iBAAV,CAIA,IAAIjlQ,EAAK6yrB,EAAII,uBAAuB7krB,GAEpC,GAAKpO,EAAL,CAIA,IAAInO,EAAUghsB,EAAIS,wBAAwBtzrB,GAErCnO,IAIDA,EAAQ0hsB,yBAIPV,EAAIW,WAAWxzrB,IAIpBoO,EAAMwgH,iBAhBN,CANA,CAuBF,EAEJ,EAAG,CAACikkB,IACAY,EAAmBtyrB,EAAY,WAKjC4xrB,EAAgBj7rB,QAAUkoE,EAAW52E,OAAQ,CAACiqsB,EAA0BL,GAJ1D,CACZ1ksB,SAAS,EACT0nH,SAAS,GAGb,EAAG,CAACq9kB,EAA0BL,IAC1BrrrB,EAAOxG,EAAY,WAGA,SAFP2xrB,EAASh7rB,QAEXma,OAIZ6grB,EAASh7rB,QAAU85rB,GACnBmB,EAAgBj7rB,UAChB27rB,IACF,EAAG,CAACA,IACA7upB,EAASzjC,EAAY,WACvB,IAAIvJ,EAAQk7rB,EAASh7rB,QACrB6P,IAEmB,aAAf/P,EAAMqa,MACRra,EAAMs7rB,QAAQtupB,OAAO,CACnB8upB,sBAAsB,IAIP,YAAf97rB,EAAMqa,MACRra,EAAMs7rB,QAAQtqmB,OAElB,EAAG,CAACjhF,IACAgsrB,EAAsBxyrB,EAAY,WACpC,IAIIwrG,EAtOR,SAA4Bt/G,GAC1B,IAAIu3C,EAASv3C,EAAKu3C,OACdsrU,EAAY7iX,EAAK6iX,UACjB0jV,EAAWvmsB,EAAKumsB,SAChBC,EAAWxmsB,EAAKwmsB,SACpB,MAAO,CAAC,CACN78lB,UAAW,YACXjgG,GAAI,SAAYqX,GACd,IAAI+lR,EAAS/lR,EAAM+lR,OACfz1P,EAAUtwB,EAAMswB,QAChBC,EAAUvwB,EAAMuwB,QAEpB,GAvBc,IAuBVw1P,EAAJ,CAIA,IAAIrjQ,EAAQ,CACVtoC,EAAGk2C,EACH94C,EAAG+4C,GAED/mC,EAAQg8rB,IAEZ,GAAmB,aAAfh8rB,EAAMqa,KAGR,OAFA7D,EAAMwgH,sBACNh3H,EAAMs7rB,QAAQ5gpB,KAAKxhB,GAOrB,GAHiB,YAAfl5B,EAAMqa,MAAmGqiqB,GAAU,GApCnFlzoB,EAqCpBxpC,EAAMk5B,MArCwBh5B,EAuCCg5B,EAtC1CrpC,KAAKM,IAAI+P,EAAQtP,EAAI44C,EAAS54C,IAHZ,GAG0Cf,KAAKM,IAAI+P,EAAQlS,EAAIw7C,EAASx7C,IAHxE,EAyCrB,CAvCN,IAAwCw7C,EAAUtpC,EA2C5CsW,EAAMwgH,iBACN,IAAIskkB,EAAUt7rB,EAAMs7rB,QAAQY,UAAUhjqB,GACtC+iqB,EAAS,CACP5hrB,KAAM,WACNihrB,QAASA,GANX,CAnBA,CA2BF,GACC,CACDl8lB,UAAW,UACXjgG,GAAI,SAAYqX,GACd,IAAIxW,EAAQg8rB,IAEO,aAAfh8rB,EAAMqa,MAKV7D,EAAMwgH,iBACNh3H,EAAMs7rB,QAAQhnL,KAAK,CACjBwnL,sBAAsB,IAExBxjV,KAREtrU,GASJ,GACC,CACDoyD,UAAW,YACXjgG,GAAI,SAAYqX,GACU,aAApBwlrB,IAAW3hrB,MACb7D,EAAMwgH,iBAGRhqF,GACF,GACC,CACDoyD,UAAW,UACXjgG,GAAI,SAAYqX,GAGd,GAAmB,YAFPwlrB,IAEF3hrB,KAKV,OAzHO,KAyHH7D,EAAMyrS,SACRzrS,EAAMwgH,sBACNhqF,UAIF8spB,GAAyBtjrB,GAVvBw2B,GAWJ,GACC,CACDoyD,UAAW,SACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,SACXnlG,QAAS,CACPvD,SAAS,EACT0nH,SAAS,GAEXj/G,GAAI,WACsB,YAApB68rB,IAAW3hrB,MACb2yB,GAEJ,GACC,CACDoyD,UAAW,uBACXjgG,GAAI,SAAYqX,GACd,IAAIxW,EAAQg8rB,IACK,SAAfh8rB,EAAMqa,MAAkGqiqB,GAAU,GAEhH18qB,EAAMs7rB,QAAQK,0BAChB3upB,IAIFx2B,EAAMwgH,gBACR,GACC,CACD53B,UAAW26lB,GACX56rB,GAAI6tC,GAER,CAkHmBmvpB,CAAmB,CAChCnvpB,OAAQA,EACRsrU,UAAWvoW,EACXisrB,SAAU,WACR,OAAOd,EAASh7rB,OAClB,EACA+7rB,SAAU,SAAkBj8rB,GAC1Bk7rB,EAASh7rB,QAAUF,CACrB,IAEFm7rB,EAAgBj7rB,QAAUkoE,EAAW52E,OAAQujH,EAd/B,CACZqJ,SAAS,EACT1nH,SAAS,GAab,EAAG,CAACs2C,EAAQj9B,IACRyrrB,EAAmBjyrB,EAAY,SAA0B+xrB,EAASpiqB,GACxC,SAA1BgiqB,EAASh7rB,QAAQma,MAA4HqiqB,GAAU,GACzJwe,EAASh7rB,QAAU,CACjBma,KAAM,UACN6e,MAAOA,EACPoiqB,QAASA,GAEXS,GACF,EAAG,CAACA,IACJnD,GAA0B,WAExB,OADAiD,IACO,WACLV,EAAgBj7rB,SAClB,CACF,EAAG,CAAC27rB,GACN,EA4FA,SAA2BZ,GACzB,IAAIE,GAAkB,IAAA7xrB,QAAO2wrB,IACzBmB,EAAsBnxrB,EAAQ,WAChC,MAAO,CACLm1F,UAAW,UACXjgG,GAAI,SAAmBqX,GACrB,IAAIA,EAAM62P,kBA9YN,KAkZA72P,EAAMyrS,QAAV,CAIA,IAAIs7X,EAAc0d,EAAII,uBAAuB7krB,GAE7C,GAAK+mqB,EAAL,CAIA,IAAI6e,EAAUnB,EAAIM,WAAWhe,EAAaxtqB,EAAM,CAC9Cw0d,YAAa/td,IAGf,GAAK4lrB,EAAL,CAIA5lrB,EAAMwgH,iBACN,IAAIqlkB,GAAc,EACdf,EAAUc,EAAQE,WACtBnB,EAAgBj7rB,UAShBi7rB,EAAgBj7rB,QAAUkoE,EAAW52E,OA5H7C,SAA6B8psB,EAASvrrB,GACpC,SAASi9B,IACPj9B,IACAurrB,EAAQtupB,QACV,CAOA,MAAO,CAAC,CACNoyD,UAAW,UACXjgG,GAAI,SAAYqX,GACd,OAnUO,KAmUHA,EAAMyrS,SACRzrS,EAAMwgH,sBACNhqF,KApUI,KAwUFx2B,EAAMyrS,SACRzrS,EAAMwgH,iBAdVjnH,SACAurrB,EAAQhnL,QApTI,KAsUN99f,EAAMyrS,SACRzrS,EAAMwgH,sBACNskkB,EAAQlpV,YA1UF,KA8UJ57V,EAAMyrS,SACRzrS,EAAMwgH,sBACNskkB,EAAQnpV,UA/UC,KAmVP37V,EAAMyrS,SACRzrS,EAAMwgH,sBACNskkB,EAAQhN,aAvVA,KA2VN93qB,EAAMyrS,SACRzrS,EAAMwgH,sBACNskkB,EAAQ/M,iBAIN2L,GAAe1jrB,EAAMyrS,SACvBzrS,EAAMwgH,iBAIR8ikB,GAAyBtjrB,GAC3B,GACC,CACD4oF,UAAW,YACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,UACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,QACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,aACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,SACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,QACXjgG,GAAI6tC,EACJ/yC,QAAS,CACPvD,SAAS,IAEV,CACD0oG,UAAW26lB,GACX56rB,GAAI6tC,GAER,CA0CqDuvpB,CAAoBjB,EAASvrrB,GAAO,CAC/EquG,SAAS,EACT1nH,SAAS,GAhBX,CARA,CANA,CAqBA,SAASqZ,IACNssrB,GAAqI3f,GAAU,GAChJ2f,GAAc,EACdlB,EAAgBj7rB,UAChB27rB,GACF,CAMF,EAEJ,EAAG,CAACZ,IACAY,EAAmBtyrB,EAAY,WAKjC4xrB,EAAgBj7rB,QAAUkoE,EAAW52E,OAAQ,CAAC4psB,GAJhC,CACZ1ksB,SAAS,EACT0nH,SAAS,GAGb,EAAG,CAACg9kB,IACJxC,GAA0B,WAExB,OADAiD,IACO,WACLV,EAAgBj7rB,SAClB,CACF,EAAG,CAAC27rB,GACN,EA8IA,SAA0BZ,GACxB,IAAIC,GAAW,IAAA5xrB,QAAO6wrB,IAClBgB,GAAkB,IAAA7xrB,QAAO2Q,GACzB+hrB,EAAWzyrB,EAAY,WACzB,OAAO2xrB,EAASh7rB,OAClB,EAAG,IACC+7rB,EAAW1yrB,EAAY,SAAkBvJ,GAC3Ck7rB,EAASh7rB,QAAUF,CACrB,EAAG,IACCo7rB,EAAsBnxrB,EAAQ,WAChC,MAAO,CACLm1F,UAAW,aACXjgG,GAAI,SAAsBqX,GACxB,IAAIA,EAAM62P,iBAAV,CAIA,IAAIkwa,EAAc0d,EAAII,uBAAuB7krB,GAE7C,GAAK+mqB,EAAL,CAIA,IAAI+d,EAAUL,EAAIM,WAAWhe,EAAaxtqB,EAAM,CAC9Cw0d,YAAa/td,IAGf,GAAK8krB,EAAL,CAIA,IAAIzyN,EAAQryd,EAAMiwB,QAAQ,GAGtBvN,EAAQ,CACVtoC,EAHYi4e,EAAM/hc,QAIlB94C,EAHY66e,EAAM9hc,SAKpBo0pB,EAAgBj7rB,UAChBs7rB,EAAiBF,EAASpiqB,EAV1B,CARA,CANA,CAyBF,EAEJ,EAAG,CAAC+hqB,IACAY,EAAmBtyrB,EAAY,WAKjC4xrB,EAAgBj7rB,QAAUkoE,EAAW52E,OAAQ,CAAC4psB,GAJhC,CACZh9kB,SAAS,EACT1nH,SAAS,GAGb,EAAG,CAAC0ksB,IACArrrB,EAAOxG,EAAY,WACrB,IAAIrJ,EAAUg7rB,EAASh7rB,QAEF,SAAjBA,EAAQma,OAIS,YAAjBna,EAAQma,MACVrI,aAAa9R,EAAQs8rB,kBAGvBP,EAAS9B,IACTgB,EAAgBj7rB,UAChB27rB,IACF,EAAG,CAACA,EAAkBI,IAClBjvpB,EAASzjC,EAAY,WACvB,IAAIvJ,EAAQk7rB,EAASh7rB,QACrB6P,IAEmB,aAAf/P,EAAMqa,MACRra,EAAMs7rB,QAAQtupB,OAAO,CACnB8upB,sBAAsB,IAIP,YAAf97rB,EAAMqa,MACRra,EAAMs7rB,QAAQtqmB,OAElB,EAAG,CAACjhF,IACAgsrB,EAAsBxyrB,EAAY,WACpC,IAAItP,EAAU,CACZmkH,SAAS,EACT1nH,SAAS,GAEPgI,EAAO,CACTsuC,OAAQA,EACRsrU,UAAWvoW,EACXisrB,SAAUA,GAERS,EAAer0nB,EAAW52E,OA7LlC,SAA2BwD,GACzB,IAAIg4C,EAASh4C,EAAMg4C,OACfsrU,EAAYtjX,EAAMsjX,UAClB0jV,EAAWhnsB,EAAMgnsB,SACrB,MAAO,CAAC,CACN58lB,UAAW,YACXnlG,QAAS,CACPmkH,SAAS,GAEXj/G,GAAI,SAAYqX,GACd,IAAIxW,EAAQg8rB,IAEZ,GAAmB,aAAfh8rB,EAAMqa,KAAV,CAKAra,EAAM08rB,UAAW,EACjB,IAAIC,EAAkBnmrB,EAAMiwB,QAAQ,GAGhCvN,EAAQ,CACVtoC,EAHY+rsB,EAAgB71pB,QAI5B94C,EAHY2usB,EAAgB51pB,SAK9BvwB,EAAMwgH,iBACNh3H,EAAMs7rB,QAAQ5gpB,KAAKxhB,EAXnB,MAFE8T,GAcJ,GACC,CACDoyD,UAAW,WACXjgG,GAAI,SAAYqX,GACd,IAAIxW,EAAQg8rB,IAEO,aAAfh8rB,EAAMqa,MAKV7D,EAAMwgH,iBACNh3H,EAAMs7rB,QAAQhnL,KAAK,CACjBwnL,sBAAsB,IAExBxjV,KAREtrU,GASJ,GACC,CACDoyD,UAAW,cACXjgG,GAAI,SAAYqX,GACU,aAApBwlrB,IAAW3hrB,MAKf7D,EAAMwgH,iBACNhqF,KALEA,GAMJ,GACC,CACDoyD,UAAW,mBACXjgG,GAAI,SAAYqX,GACd,IAAIxW,EAAQg8rB,IACK,SAAfh8rB,EAAMqa,MAA8EqiqB,GAAU,GAChG,IAAI7zM,EAAQryd,EAAMiwB,QAAQ,GAE1B,GAAKoic,GAIcA,EAAM7jB,OAtGL,IAwGpB,CAIA,IAAI43O,EAAgB58rB,EAAMs7rB,QAAQK,0BAElC,GAAmB,YAAf37rB,EAAMqa,KAQV,OAAIuirB,EACE58rB,EAAM08rB,cACRlmrB,EAAMwgH,sBAIRhqF,SAIFx2B,EAAMwgH,iBAjBA4lkB,GACF5vpB,GANJ,CAuBF,GACC,CACDoyD,UAAW26lB,GACX56rB,GAAI6tC,GAER,CA2F0C6vpB,CAAkBn+rB,GAAOzE,GAC3D6isB,EAAe10nB,EAAW52E,OAhOlC,SAA2BiE,GACzB,IAAIu3C,EAASv3C,EAAKu3C,OACdgvpB,EAAWvmsB,EAAKumsB,SACpB,MAAO,CAAC,CACN58lB,UAAW,oBACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,SACXjgG,GAAI6tC,GACH,CACDoyD,UAAW,cACXjgG,GAAI,SAAYqX,GACdA,EAAMwgH,gBACR,GACC,CACD53B,UAAW,UACXjgG,GAAI,SAAYqX,GACU,aAApBwlrB,IAAW3hrB,MA9dR,KAmeH7D,EAAMyrS,SACRzrS,EAAMwgH,iBAGRhqF,KAREA,GASJ,GACC,CACDoyD,UAAW26lB,GACX56rB,GAAI6tC,GAER,CAgM0C+vpB,CAAkBr+rB,GAAOzE,GAE/DkhsB,EAAgBj7rB,QAAU,WACxBu8rB,IACAK,GACF,CACF,EAAG,CAAC9vpB,EAAQgvpB,EAAUjsrB,IAClBitrB,EAAgBzzrB,EAAY,WAC9B,IAAIvJ,EAAQg8rB,IACK,YAAfh8rB,EAAMqa,MAAmIqiqB,GAAU,GACrJ,IAAI4e,EAAUt7rB,EAAMs7rB,QAAQY,UAAUl8rB,EAAMk5B,OAC5C+iqB,EAAS,CACP5hrB,KAAM,WACNihrB,QAASA,EACToB,UAAU,GAEd,EAAG,CAACV,EAAUC,IACVT,EAAmBjyrB,EAAY,SAA0B+xrB,EAASpiqB,GAC9C,SAApB8iqB,IAAW3hrB,MAA4HqiqB,GAAU,GACnJ,IAAI8f,EAAmB1qrB,WAAWkrrB,EAtPf,KAuPnBf,EAAS,CACP5hrB,KAAM,UACN6e,MAAOA,EACPoiqB,QAASA,EACTkB,iBAAkBA,IAEpBT,GACF,EAAG,CAACA,EAAqBC,EAAUC,EAAUe,IAC7CpE,GAA0B,WAExB,OADAiD,IACO,WACLV,EAAgBj7rB,UAChB,IAAIF,EAAQg8rB,IAEO,YAAfh8rB,EAAMqa,OACRrI,aAAahS,EAAMw8rB,kBACnBP,EAAS9B,IAEb,CACF,EAAG,CAAC6B,EAAUH,EAAkBI,IAChCrD,GAA0B,WASxB,OARaxwnB,EAAW52E,OAAQ,CAAC,CAC/B4tG,UAAW,YACXjgG,GAAI,WAAe,EACnBlF,QAAS,CACPmkH,SAAS,EACT1nH,SAAS,KAIf,EAAG,GACL,GA0ZA,SAASumsB,GAAiBl7rB,GACxB,IAAIgghB,EAAYhghB,EAAMgghB,UAClBhoV,EAAQh4L,EAAMg4L,MACdh5H,EAAWh/D,EAAMg/D,SACjBm8nB,EAAgBn7rB,EAAMm7rB,cACtBC,EAAuBp7rB,EAAMo7rB,qBAC7Br+B,EAAa,GAAGzmqB,OAAO8ksB,EAAuBrzB,GAAiB,GAAIozB,GAAiB,IACpFnC,GAAU,IAAApxrB,UAAS,WACrB,OA7qCJ,WACE,IAAIsjF,EAAO,KAmBX,SAAS+xS,IACN/xS,GAA+GyvlB,GAAU,GAC1HzvlB,EAAO,IACT,CASA,MAAO,CACL+tmB,UA9BF,WACE,OAAO1pmB,QAAQrE,EACjB,EA6BE+yO,SA3BF,SAAkBhwU,GAChB,OAAOA,IAAUi9F,CACnB,EA0BEmwmB,MAxBF,SAAeC,GACXpwmB,GAAgHyvlB,GAAU,GAC5H,IAAI4gB,EAAU,CACZD,QAASA,GAGX,OADApwmB,EAAOqwmB,EACAA,CACT,EAkBEt+T,QAASA,EACTu+T,WAZF,WACMtwmB,IACFA,EAAKowmB,UACLr+T,IAEJ,EASF,CAsoCWj0X,EACT,GAAG,GACCyyrB,EAAiBj0rB,EAAY,SAAwBkwB,EAAUv5B,GAC7Du5B,EAASqyX,aAAe5rZ,EAAQ4rZ,YAClCivS,EAAQwC,YAEZ,EAAG,CAACxC,IACJnC,GAA0B,WACxB,IAAIn/pB,EAAWsgK,EAAM/7F,WAMrB,OALkB+7F,EAAMi0L,UAAU,WAChC,IAAI9tX,EAAU65L,EAAM/7F,WACpBw/lB,EAAe/jqB,EAAUv5B,GACzBu5B,EAAWv5B,CACb,EAEF,EAAG,CAAC66rB,EAAShhgB,EAAOyjgB,IACpB5E,GAA0B,WACxB,OAAOmC,EAAQwC,UACjB,EAAG,CAACxC,EAAQwC,aAmDZ,IAlDA,IAAI3B,EAAaryrB,EAAY,SAAUg0qB,GACrC,OAAOud,GAAS,CACdC,QAASA,EACTh6nB,SAAUA,EACVg5H,MAAOA,EACPwjf,YAAaA,GAEjB,EAAG,CAACwd,EAASh6nB,EAAUg5H,IACnBwhgB,EAAahyrB,EAAY,SAAUg0qB,EAAakgB,EAAWxjsB,GAC7D,OA3OJ,SAAkB1E,GAChB,IAAIwlsB,EAAUxlsB,EAAMwlsB,QAChBh5K,EAAYxshB,EAAMwshB,UAClBhoV,EAAQxkM,EAAMwkM,MACdh5H,EAAWxrE,EAAMwrE,SACjBw8mB,EAAchorB,EAAMgorB,YACpBmgB,EAAkBnosB,EAAMmosB,gBACxBn5N,EAAchve,EAAMgve,YAQxB,IAPkBu2N,GAAS,CACzBC,QAASA,EACThhgB,MAAOA,EACPh5H,SAAUA,EACVw8mB,YAAaA,IAIb,OAAO,KAGT,IAAIthoB,EAAQ8kB,EAAS+0Q,UAAUs9W,QAAQ7V,GACnC31oB,EAhGN,SAAuBm6e,EAAWw7J,GAChC,IAAIvrjB,EAAW,IAAM8jN,GAAUisM,UAAY,KAAQA,EAAY,KAE3D47K,EAAcz4rB,GADHipN,GAAQr7N,SAAS62Q,iBAAiB33I,IAChB,SAAUpqF,GACzC,OAAOA,EAAGz/B,aAAa2tU,GAAU1tU,MAAQm1qB,CAC3C,GAEA,OAAKogB,GAIA3E,GAAc2E,GAKZA,EARE,IASX,CA+EWC,CAAc77K,EAAW9le,EAAM2mB,WAAWx6D,IAEnD,IAAKw/B,EAEH,OAAO,KAGT,GAAI28b,IAAgBtob,EAAMhiD,QAAQ4jsB,4BAA8BvD,GAA4B1ypB,EAAI28b,GAC9F,OAAO,KAGT,IAAIt3Y,EAAO8tmB,EAAQqC,MAAMM,GAAmBzjrB,GACxCja,EAAQ,WAEZ,SAAS89rB,IACP,OAAO7hpB,EAAMhiD,QAAQ0hsB,uBACvB,CAEA,SAASf,IACP,OAAOG,EAAQ/6X,SAAS/yO,EAC1B,CAaA,IAAI8wmB,EAXJ,SAAqBzpe,EAAU0pe,GACzBrD,GAAU,CACZrme,SAAUA,EACVt0N,MAAOA,EACP46rB,aAAcA,EACdC,YAAY,KAEZ9ggB,EAAMh8F,SAASigmB,IAEnB,EAE0Cj4oB,KAAK,KAAM,YAErD,SAAS6soB,EAAOl0rB,GACd,SAAS45W,IACPyiV,EAAQ/7T,UACRh/X,EAAQ,WACV,CAUA,SAASiyO,EAAO4S,EAAQ5qP,GAStB,QARgB,IAAZA,IACFA,EAAU,CACR6hsB,sBAAsB,IAI1Bp9rB,EAAKypY,UAEDluY,EAAQ6hsB,qBAAsB,CAChC,IAAIvsb,EAASnnM,EAAW52E,OAAQ,CAAC,CAC/B4tG,UAAW,QACXjgG,GAAI63H,GACJ/8H,QAAS,CACP66G,MAAM,EACNp+G,SAAS,EACT0nH,SAAS,MAGbtsG,WAAWy9P,EACb,CAEA+oG,IACAv+K,EAAMh8F,SAASu2a,GAAK,CAClBzvR,OAAQA,IAEZ,CAEA,MApCc,aAAV7kP,IACFs4W,IACY,aAAVt4W,GAAoH08qB,GAAU,IAGlI3if,EAAMh8F,SAASiwlB,GAAKtvrB,EAAKu/rB,iBACzBj+rB,EAAQ,YA8BD,OAAS,CACdggU,SAAU,WACR,OAAO26X,GAAU,CACfrme,SAAU,WACVt0N,MAAOA,EACP46rB,aAAcA,EACdC,YAAY,GAEhB,EACAc,wBAAyBmC,EACzBxpL,KAAM,SAAcr6gB,GAClB,OAAOg4O,EAAO,OAAQh4O,EACxB,EACA+yC,OAAQ,SAAgB/yC,GACtB,OAAOg4O,EAAO,SAAUh4O,EAC1B,GACCyE,EAAK48rB,QACV,CAiFA,MAdc,CACZt7X,SAAU,WACR,OAAO26X,GAAU,CACfrme,SAAU,WACVt0N,MAAOA,EACP46rB,aAAcA,EACdC,YAAY,GAEhB,EACAc,wBAAyBmC,EACzB5B,UA3EF,SAAmB3W,GACjB,IAAI2Y,EAAS,EAAQ,SAAU7pP,GAC7B0pP,EAAwB,WACtB,OAAOrjpB,GAAK,CACV25Z,OAAQA,GAEZ,EACF,GACI4mP,EAAMrI,EAAO,CACfqL,eAAgB,CACd71rB,GAAIm1qB,EACJgI,gBAAiBA,EACjB0F,aAAc,SAEhB9iT,QAAS,WACP,OAAO+1T,EAAOlxpB,QAChB,EACAsupB,QAAS,CACP5gpB,KAAMwjpB,KAGV,OAAO,OAAS,CAAC,EAAGjD,EAAK,CACvBvgpB,KAAMwjpB,GAEV,EAoDE5B,SAlDF,WACE,IAAIhB,EAAU,CACZnpV,OAAQ,WACN,OAAO4rV,EAAwB5rV,GACjC,EACAm8U,UAAW,WACT,OAAOyP,EAAwBzP,GACjC,EACAl8U,SAAU,WACR,OAAO2rV,EAAwB3rV,GACjC,EACAm8U,SAAU,WACR,OAAOwP,EAAwBxP,GACjC,GAEF,OAAOqE,EAAO,CACZqL,eAAgB,CACd71rB,GAAIm1qB,EACJgI,gBAAiBgV,GAA2B3ypB,GAC5CqjpB,aAAc,QAEhB9iT,QAASluX,EACTqhrB,QAASA,GAEb,EA2BEtqmB,MAzBF,WACsB2pmB,GAAU,CAC5Brme,SAAU,WACVt0N,MAAOA,EACP46rB,aAAcA,EACdC,YAAY,KAIZE,EAAQ/7T,SAEZ,EAiBF,CAuCWytQ,CAAS,CACdsuD,QAASA,EACTh6nB,SAAUA,EACVghd,UAAWA,EACXhoV,MAAOA,EACPwjf,YAAaA,EACbmgB,gBAAiBD,EACjBl5N,YAAatqe,GAAWA,EAAQsqe,YAActqe,EAAQsqe,YAAc,MAExE,EAAG,CAACw9C,EAAWg5K,EAASh6nB,EAAUg5H,IAC9BshgB,EAAyB9xrB,EAAY,SAAUiN,GACjD,OA5UJ,SAA2CurgB,EAAWvrgB,GACpD,IAAIo7N,EAxBN,SAAwCmwS,EAAWvrgB,GACjD,IA3CiBoxB,EA2CbxvC,EAASoe,EAAMpe,OAEnB,MA7CiBwvC,EA6CFxvC,aA5CM2gsB,GAAgBnxpB,GAAIl2C,SA8CvC,OAAO,KAGT,IAAIsgI,EAZN,SAAqB+vZ,GACnB,MAAO,IAAMo2K,GAAWp2K,UAAY,KAAQA,EAAY,IAC1D,CAUiBw2K,CAAYx2K,GACvBnwS,EAAS8od,GAAUtisB,EAAQ45H,GAE/B,OAAK4/G,GAIAond,GAAcpnd,GAKZA,EARE,IASX,CAGeusd,CAA+Bp8K,EAAWvrgB,GAEvD,OAAKo7N,EAIEA,EAAOzpO,aAAagwrB,GAAW5a,aAH7B,IAIX,CAoUW6gB,CAAkCr8K,EAAWvrgB,EACtD,EAAG,CAACurgB,IACA25K,EAA0BnyrB,EAAY,SAAUnB,GAClD,IAAI6zC,EAAQ8kB,EAAS+0Q,UAAUujX,SAASjxrB,GACxC,OAAO6zC,EAAQA,EAAMhiD,QAAU,IACjC,EAAG,CAAC8mE,EAAS+0Q,YACTuoX,EAAiB90rB,EAAY,WAC1BwxrB,EAAQC,cAIbD,EAAQwC,aAEuB,SAA3BxjgB,EAAM/7F,WAAWh+F,OACnB+5L,EAAMh8F,SAAS6W,MAEnB,EAAG,CAACmmlB,EAAShhgB,IACTukgB,EAAgB/0rB,EAAYwxrB,EAAQC,UAAW,CAACD,IAChDE,EAAMhxrB,EAAQ,WAChB,MAAO,CACL2xrB,WAAYA,EACZL,WAAYA,EACZF,uBAAwBA,EACxBK,wBAAyBA,EACzB2C,eAAgBA,EAChBC,cAAeA,EAEnB,EAAG,CAAC1C,EAAYL,EAAYF,EAAwBK,EAAyB2C,EAAgBC,IAGpF5usB,EAAI,EAAGA,EAAIovqB,EAAWrgqB,OAAQ/O,IACrCovqB,EAAWpvqB,GAAGursB,EAElB,CAEA,IAAIsD,GAAmB,SAA0B9hqB,GAC/C,MAAO,CACLm0pB,gBAAiBn0pB,EAAMm0pB,gBACvBE,kBAAmBr0pB,EAAMq0pB,kBACzBrzB,YAAahhoB,EAAMghoB,YACnBhkV,UAAWh9S,EAAMg9S,UACjBkkW,aAAclhpB,EAAMkhpB,aAExB,EAEA,SAAS6gB,GAASC,GAEhB,OADCA,EAAQv+rB,SAA2Gw8qB,GAAU,GACvH+hB,EAAQv+rB,OACjB,CAEA,SAASw+rB,GAAIjiqB,GACX,IAAIslf,EAAYtlf,EAAMslf,UAClBg7J,EAAetgpB,EAAMsgpB,aACrB72S,EAAUzpW,EAAMypW,QAChBxvS,EAAQj6D,EAAMi6D,MACdgnlB,EAA8BjhpB,EAAMihpB,4BACpCihB,GAAe,IAAAr1rB,QAAO,MAEtBs1rB,EAAex7e,GAAY3mL,GAC3B8zpB,EAAgBhnrB,EAAY,WAC9B,OAAOg1rB,GAAiBK,EAAa1+rB,QACvC,EAAG,CAAC0+rB,IACA3gC,EAx9CN,SAAsBl8I,GACpB,IAAI35gB,EAAK6B,EAAQ,WACf,OAAO+1Z,GAAM+hH,EACf,EAAG,CAACA,IACA7ka,GAAM,IAAA5zG,QAAO,MAmCjB,OAlCA,IAAAY,WAAU,WACR,IAAI09B,EAAK90C,SAASskB,cAAc,OAShC,OARA8lG,EAAIh9G,QAAU0nC,EACdA,EAAGx/B,GAAKA,EACRw/B,EAAGt/B,aAAa,YAAa,aAC7Bs/B,EAAGt/B,aAAa,cAAe,SAE/B,OAASs/B,EAAG7T,MAAOylqB,IAEnBD,KAAiB/+lB,YAAY5yD,GACtB,WACL91B,WAAW,WACT,IAAI/Z,EAAOwhsB,KAEPxhsB,EAAKlG,SAAS+1C,IAChB7vC,EAAKwiG,YAAY3yD,GAGfA,IAAOs1E,EAAIh9G,UACbg9G,EAAIh9G,QAAU,KAElB,EACF,CACF,EAAG,CAACkI,IACWmB,EAAY,SAAUkxF,GACnC,IAAI7yD,EAAKs1E,EAAIh9G,QAET0nC,IACFA,EAAG6gO,YAAchuK,EAKrB,EAAG,GAEL,CAg7CiBokmB,CAAa98K,GACxB+8K,EAz5CN,SAA8B9psB,GAC5B,IAAI+shB,EAAY/shB,EAAM+shB,UAClB5nf,EAAOnlC,EAAMmlC,KACb84E,EAAWwmlB,GAAY,cAAe,CACxC5/b,UAAW,MAETzxP,EAAK6B,EAAQ,WACf,MATK,oBAHaxU,EAYE,CAClBsshB,UAAWA,EACX9ua,SAAUA,IAbO8ua,UAEmB,IADzBtshB,EAAKw9G,SAFtB,IAAsBx9G,CAgBpB,EAAG,CAACw9G,EAAU8ua,IAed,OAdA,IAAA73gB,WAAU,WACR,IAAI09B,EAAK90C,SAASskB,cAAc,OAKhC,OAJAwwB,EAAGx/B,GAAKA,EACRw/B,EAAG6gO,YAActuO,EACjByN,EAAG7T,MAAM8yB,QAAU,OACnB0yoB,KAAiB/+lB,YAAY5yD,GACtB,WACL,IAAI7vC,EAAOwhsB,KAEPxhsB,EAAKlG,SAAS+1C,IAChB7vC,EAAKwiG,YAAY3yD,EAErB,CACF,EAAG,CAACx/B,EAAI+xB,IACD/xB,CACT,CA83CsC22rB,CAAqB,CACvDh9K,UAAWA,EACX5nf,KAAMujpB,IAEJyU,EAz0DN,SAAyBpwK,EAAWrrb,GAClC,IAAIn3F,EAAS0K,EAAQ,WACnB,OAAOourB,GAAYt2K,EACrB,EAAG,CAACA,IACAi9K,GAAY,IAAA11rB,QAAO,MACnB21rB,GAAa,IAAA31rB,QAAO,MACpB41rB,EAAkB31rB,GAAY,OAAW,SAAU0+qB,GACrD,IAAIrgpB,EAAKq3pB,EAAW/+rB,QACnB0nC,GAAqH80oB,GAAU,GAChI90oB,EAAG6gO,YAAcw/a,CACnB,GAAI,IACAkX,EAAiB51rB,EAAY,SAAU0+qB,GACzC,IAAIrgpB,EAAKo3pB,EAAU9+rB,QAClB0nC,GAAqH80oB,GAAU,GAChI90oB,EAAG6gO,YAAcw/a,CACnB,EAAG,IACH2Q,GAA0B,YACrBoG,EAAU9+rB,SAAY++rB,EAAW/+rB,UAAwGw8qB,GAAU,GACtJ,IAAI+b,EAASK,GAAcpimB,GACvBwqB,EAAU43kB,GAAcpimB,GAS5B,OARAsomB,EAAU9+rB,QAAUu4rB,EACpBwG,EAAW/+rB,QAAUghH,EACrBu3kB,EAAOnwrB,aAAa4vrB,GAAW,UAAWn2K,GAC1C7ga,EAAQ54G,aAAa4vrB,GAAW,WAAYn2K,GAC5C82K,KAAUr+lB,YAAYi+lB,GACtBI,KAAUr+lB,YAAY0mB,GACtBi+kB,EAAe5/rB,EAAOk5rB,QACtByG,EAAgB3/rB,EAAO8yrB,SAChB,WACL,IAAIplpB,EAAS,SAAgBiwE,GAC3B,IAAIh9G,EAAUg9G,EAAIh9G,QACjBA,GAA4Gw8qB,GAAU,GACvHmc,KAAUt+lB,YAAYr6F,GACtBg9G,EAAIh9G,QAAU,IAChB,EAEA+sC,EAAO+xpB,GACP/xpB,EAAOgypB,EACT,CACF,EAAG,CAACvomB,EAAOyomB,EAAgBD,EAAiB3/rB,EAAOk5rB,OAAQl5rB,EAAO8yrB,QAAStwK,IAC3E,IAAI5/H,EAAW54Y,EAAY,WACzB,OAAO21rB,EAAgB3/rB,EAAO4iZ,SAChC,EAAG,CAAC+8S,EAAiB3/rB,EAAO4iZ,WACxBiwS,EAAW7orB,EAAY,SAAUs7O,GAMnCq6c,EALe,SAAXr6c,EAKYtlP,EAAOo5rB,WAJLp5rB,EAAOm5rB,cAK3B,EAAG,CAACwG,EAAiB3/rB,EAAOm5rB,cAAen5rB,EAAOo5rB,aAC9CtG,EAAU9orB,EAAY,WACnB01rB,EAAW/+rB,SAIhBg/rB,EAAgB3/rB,EAAO8yrB,QACzB,EAAG,CAAC6M,EAAiB3/rB,EAAO8yrB,UAQ5B,OAPcporB,EAAQ,WACpB,MAAO,CACLk4Y,SAAUA,EACViwS,SAAUA,EACVC,QAASA,EAEb,EAAG,CAAClwS,EAAUiwS,EAAUC,GAE1B,CAuwDqB+M,CAAgBr9K,EAAWrrb,GAC1C2omB,EAAe91rB,EAAY,SAAU00F,GACvCugmB,GAASG,GAAc5gmB,SAASE,EAClC,EAAG,IACCqhmB,EAAmBr1rB,EAAQ,WAC7B,OAAO,QAAmB,CACxBgkrB,qBAAsBA,GACtBE,sBAAuBA,GACvBC,yBAA0BA,GAC1BC,gCAAiCA,GACjCH,mBAAoBA,IACnBmR,EACL,EAAG,CAACA,IACAt+nB,EA3gDN,WACE,IAAIA,EAAW92D,EAAQgvrB,GAAgB,IAMvC,OALA,IAAA/urB,WAAU,WACR,OAAO,WACLsP,sBAAsBunD,EAAS86a,MACjC,CACF,EAAG,CAAC96a,IACGA,CACT,CAmgDiBw+nB,GACXtN,EAAmBhorB,EAAQ,WAC7B,OAAOqprB,GAAuBvynB,EAAUu+nB,EAC1C,EAAG,CAACv+nB,EAAUu+nB,IACVltD,EAAenooB,EAAQ,WACzB,OAAOutrB,IAAmB,OAAS,CACjCrD,aAAcA,GACd3V,gBAAiByT,EAAiBzT,kBACjC,QAAmB,CACpB9joB,KAAMA,IACL2kpB,IACL,EAAG,CAACpN,EAAiBzT,gBAAiB6gB,IAClCnN,EA5vDN,SAAyBnwK,GACvB,IAAIy9K,GAAa,IAAAl2rB,QAAO,CAAC,GACrBm2rB,GAAY,IAAAn2rB,QAAO,MACnBo2rB,GAAuB,IAAAp2rB,QAAO,MAC9Bq2rB,GAAe,IAAAr2rB,SAAO,GACtB62D,EAAW52D,EAAY,SAAkBnB,EAAIizF,GAC/C,IAAIp/C,EAAQ,CACV7zC,GAAIA,EACJizF,MAAOA,GAGT,OADAmkmB,EAAWt/rB,QAAQkI,GAAM6zC,EAClB,WACL,IAAIsT,EAAUiwoB,EAAWt/rB,QACXqvD,EAAQnnD,KAEN6zC,UACPsT,EAAQnnD,EAEnB,CACF,EAAG,IACCw3rB,EAAer2rB,EAAY,SAAsBs2rB,GACnD,IAAIjud,EA/CR,SAAwBmwS,EAAWw7J,GACjC,IAAIvrjB,EAAW,IAAMmmkB,GAAWp2K,UAAY,KAAQA,EAAY,KAC5D8kC,EAAW14V,GAAQr7N,SAAS62Q,iBAAiB33I,IAEjD,IAAK60b,EAASpojB,OAEZ,OAAO,KAGT,IAAImzO,EAAS1sO,GAAK2hjB,EAAU,SAAUj/gB,GACpC,OAAOA,EAAGz/B,aAAagwrB,GAAW5a,eAAiBA,CACrD,GAEA,OAAK3rc,GAKAond,GAAcpnd,GAKZA,EARE,IASX,CAuBiBkud,CAAe/9K,EAAW89K,GAEnCjud,GAAUA,IAAW9+O,SAAS6wb,eAChC/xM,EAAOv2I,OAEX,EAAG,CAAC0mb,IACAixK,EAAiBzprB,EAAY,SAAwBkwB,EAAU0ijB,GAC7DsjH,EAAUv/rB,UAAYu5B,IACxBgmqB,EAAUv/rB,QAAUi8kB,EAExB,EAAG,IACC42G,EAA0BxprB,EAAY,WACpCm2rB,EAAqBx/rB,SAIpBy/rB,EAAaz/rB,UAIlBw/rB,EAAqBx/rB,QAAUsZ,sBAAsB,WACnDkmrB,EAAqBx/rB,QAAU,KAC/B,IAAIggK,EAASu/hB,EAAUv/rB,QAEnBggK,GACF0/hB,EAAa1/hB,EAEjB,GACF,EAAG,CAAC0/hB,IACA9M,EAAiBvprB,EAAY,SAAwBnB,GACvDq3rB,EAAUv/rB,QAAU,KACpB,IAAI6/rB,EAAUjtsB,SAAS6wb,cAElBo8Q,GAIDA,EAAQ53rB,aAAagwrB,GAAW5a,eAAiBn1qB,IAIrDq3rB,EAAUv/rB,QAAUkI,EACtB,EAAG,IAoBH,OAnBAwwrB,GAA0B,WAExB,OADA+G,EAAaz/rB,SAAU,EAChB,WACLy/rB,EAAaz/rB,SAAU,EACvB,IAAIm8qB,EAAUqjB,EAAqBx/rB,QAE/Bm8qB,GACF7pc,qBAAqB6pc,EAEzB,CACF,EAAG,IACWpyqB,EAAQ,WACpB,MAAO,CACLk2D,SAAUA,EACV2ynB,eAAgBA,EAChBC,wBAAyBA,EACzBC,eAAgBA,EAEpB,EAAG,CAAC7ynB,EAAU2ynB,EAAgBC,EAAyBC,GAEzD,CAwqDqBgN,CAAgBj+K,GAC/BhoV,EAAQ9vL,EAAQ,WAClB,OAAO8nrB,GAAY,CACjB9zB,SAAUA,EACV7rB,aAAcA,EACd6/C,iBAAkBA,EAClBC,aAAcA,EACd3B,cAAeA,EACf4B,aAAcA,GAElB,EAAG,CAACl0B,EAAU7rB,EAAc6/C,EAAkBC,EAAc3B,EAAe4B,IAQ3EwM,EAAaz+rB,QAAU65L,EACvB,IAAIkmgB,EAAgB12rB,EAAY,WAC9B,IAAIrJ,EAAUs+rB,GAASG,GAGH,SAFRz+rB,EAAQ89F,WAEVh+F,OACRE,EAAQ69F,SAAS6W,KAErB,EAAG,IACCk3S,EAAaviZ,EAAY,WAC3B,IAAIvP,EAAQwksB,GAASG,GAAc3gmB,WACnC,OAAOhkG,EAAM8xZ,YAA8B,mBAAhB9xZ,EAAMgG,KACnC,EAAG,IAOH+8qB,EANmB9yqB,EAAQ,WACzB,MAAO,CACL6hZ,WAAYA,EACZgxR,SAAUmjB,EAEd,EAAG,CAACn0S,EAAYm0S,KAEhB,IAAIC,EAAa32rB,EAAY,SAAUnB,GACrC,OAAO8rrB,GAAasK,GAASG,GAAc3gmB,WAAY51F,EACzD,EAAG,IACC+3rB,EAAuB52rB,EAAY,WACrC,OAAO++qB,GAAkBkW,GAASG,GAAc3gmB,WAClD,EAAG,IACCoimB,EAAan2rB,EAAQ,WACvB,MAAO,CACL+nrB,QAASC,EACT52lB,MAAO62lB,EACPnwK,UAAWA,EACXs+K,QAASH,EACT5X,kBAAmB6X,EACnBrB,8BAA+BA,EAC/B/9nB,SAAUA,EAEd,EAAG,CAACghd,EAAWkwK,EAAkB6M,EAA+B5M,EAAcgO,EAAYC,EAAsBp/nB,IAWhH,OAVAk8nB,GAAiB,CACfl7K,UAAWA,EACXhoV,MAAOA,EACPh5H,SAAUA,EACVm8nB,cAAeh3T,EACfi3T,sBAAqD,IAA/B1gqB,EAAM0gqB,wBAE9B,IAAAjzrB,WAAU,WACR,OAAO+1rB,CACT,EAAG,CAACA,IACG,gBAAoBvG,GAAWrxW,SAAU,CAC9Cr4V,MAAOowsB,GACN,gBAAoB,EAAA/3W,SAAU,CAC/B70T,QAAS8lqB,GACTv/f,MAAOA,GACNt9J,EAAMolF,UACX,CAEA,IAAIy+kB,GAAU,EAcd,SAASC,GAAgB9jqB,GACvB,IAAIslf,EAVG93gB,EAAQ,WACb,MAAO,GAAKq2rB,IACd,EAAG,IASC5iB,EAA8BjhpB,EAAMihpB,6BAA+BD,EAAOC,4BAC9E,OAAO,gBAAoBf,EAAe,KAAM,SAAUI,GACxD,OAAO,gBAAoB2hB,GAAK,CAC9BhomB,MAAOj6D,EAAMi6D,MACbqrb,UAAWA,EACXg7J,aAAcA,EACdW,4BAA6BA,EAC7Byf,qBAAsB1gqB,EAAM0gqB,qBAC5Bj3T,QAASzpW,EAAMypW,QACf0qT,gBAAiBn0pB,EAAMm0pB,gBACvBE,kBAAmBr0pB,EAAMq0pB,kBACzBrzB,YAAahhoB,EAAMghoB,YACnBkgB,aAAclhpB,EAAMkhpB,aACpBlkW,UAAWh9S,EAAMg9S,WAChBh9S,EAAMolF,SACX,EACF,CAEA,IAAI2+kB,GAAY,SAAiB9qpB,GAC/B,OAAO,SAAU1lD,GACf,OAAO0lD,IAAS1lD,CAClB,CACF,EAEIywsB,GAAWD,GAAU,UACrBE,GAASF,GAAU,QAGnBG,IAFcH,GAAU,WAEb,SAAkB7osB,EAAUwH,GACzC,OAAOA,EAAGxH,EAASC,YAAcuH,EAAGxH,EAASE,UAC/C,GA0CI+osB,GAAuB,SAASA,EAAqBh5pB,GACvD,OAAU,MAANA,GAIAA,IAAO90C,SAASiF,MAIhB6vC,IAAO90C,SAASC,gBAPX,KAtCe,SAA6B60C,GACrD,IAAI7T,EAAQviC,OAAOkB,iBAAiBk1C,GAChCjwC,EAAW,CACbC,UAAWm8B,EAAMn8B,UACjBC,UAAWk8B,EAAMl8B,WAEnB,OAAO8osB,GAAShpsB,EAAU8osB,KAAaE,GAAShpsB,EAAU+osB,GAC5D,CA0COG,CAAoBj5pB,GAIlBA,EAHEg5pB,EAAqBh5pB,EAAGsyE,cAInC,EAgBI4mlB,GAAc,SAAWl5pB,GAC3B,MAAO,CACLh3C,EAAGg3C,EAAGxwC,WACNpJ,EAAG45C,EAAGtwC,UAET,EAEGypsB,GAAa,SAASA,EAAWn5pB,GACnC,QAAKA,IAMkB,UAFXp2C,OAAOkB,iBAAiBk1C,GAE1Bz0C,UAIH4tsB,EAAWn5pB,EAAGsyE,eACvB,EAoJI2yG,GAAY,CACdn2N,SAAS,GAEPsqsB,GAAU,CACZtqsB,SAAS,GAEPuqsB,GAAqB,SAAWhnsB,GAClC,OAAOA,EAAQw4rB,yBAA2B5le,GAAYm0e,EACvD,EAED,SAASE,GAAmBzyd,GAC1B,IAAIjxO,GAAS,IAAA42O,YAAW3F,GAExB,OADCjxO,GAAuGk/qB,GAAU,GAC3Gl/qB,CACT,CAEA,IAAI2jsB,GAA+B,SAAsCh/S,GACvE,OAAOA,GAAYA,EAASnuN,IAAIotgB,mBAAqB,IACvD,EAmKA,SAASC,KAAU,CAEnB,IAAIn9b,GAAQ,CACVnzQ,MAAO,EACPE,OAAQ,EACRmoC,OA96Nc,CACd/kC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,IA0hOJ8ssB,GAAgB,OAhEpB,SAAqB7kqB,GACnB,IAAI8kqB,GAAsB,IAAAj4rB,QAAO,MAC7Bk4rB,EAA2Bj4rB,EAAY,WACpCg4rB,EAAoBrhsB,UAIzB8R,aAAauvrB,EAAoBrhsB,SACjCqhsB,EAAoBrhsB,QAAU,KAChC,EAAG,IACCmnF,EAAU5qD,EAAM4qD,QAChBylX,EAAkBrwa,EAAMqwa,gBACxBrzE,EAAUh9V,EAAMg9V,QAChBsoJ,EAAYtlf,EAAMslf,UAElB//L,GAAY,IAAAr4U,UAA2B,SAAlB8yB,EAAM4qD,SAC3Bo6mB,EAAyBz/W,EAAU,GACnC0/W,EAA4B1/W,EAAU,IAE1C,IAAA93U,WAAU,WACR,OAAKu3rB,EAIW,SAAZp6mB,GACFm6mB,IACAE,GAA0B,GACnBL,IAGLE,EAAoBrhsB,QACfmhsB,IAGTE,EAAoBrhsB,QAAU4R,WAAW,WACvCyvrB,EAAoBrhsB,QAAU,KAC9BwhsB,GAA0B,EAC5B,GACOF,GAjBEH,EAkBX,EAAG,CAACh6mB,EAASo6mB,EAAwBD,IACrC,IAAIG,EAAkBp4rB,EAAY,SAAUiN,GACf,WAAvBA,EAAMk7U,eAIVo7G,IAEgB,UAAZzlX,GACFoyS,IAEJ,EAAG,CAACpyS,EAASoyS,EAASqzE,IAClB/4a,EA5ES,SAAkB/+B,GAC/B,IAAIyssB,EAAyBzssB,EAAMyssB,uBAC/Bz1e,EAAch3N,EAAMg3N,YACpB3kI,EAAUryF,EAAMqyF,QAChBjqE,EAxBQ,SAAiB3nB,GAC7B,IACIu2N,EAAcv2N,EAAKu2N,YAGvB,OAJ6Bv2N,EAAKgssB,wBAQlB,UANFhssB,EAAK4xF,QAGV68K,GAOF,CACLjzQ,OAAQ+6N,EAAYqoP,OAAOjua,UAAUn1C,OACrCF,MAAOi7N,EAAYqoP,OAAOjua,UAAUr1C,MACpCqoC,OAAQ4yL,EAAYqoP,OAAOj7a,OAE/B,CAMaiqY,CAAQ,CACjBo+R,uBAAwBA,EACxBz1e,YAAaA,EACb3kI,QAASA,IAEX,MAAO,CACLxgC,QAASmlK,EAAYnlK,QACrBxgB,UAAW,aACXt1C,MAAOqsB,EAAKrsB,MACZE,OAAQmsB,EAAKnsB,OACboxO,UAAWjlN,EAAKgc,OAAO/kC,IACvBiuO,YAAallN,EAAKgc,OAAO9kC,MACzBiuO,aAAcnlN,EAAKgc,OAAO7kC,OAC1BiuO,WAAYplN,EAAKgc,OAAO5kC,KACxB61b,WAAY,IACZF,SAAU,IACVpib,cAAe,OACfwxC,WAAwB,SAAZ8tC,EAAqB2pN,GAAYhlF,YAAc,KAE/D,CAqDclkL,CAAS,CACnB25pB,uBAAwBA,EACxBp6mB,QAAS5qD,EAAM4qD,QACf2kI,YAAavvL,EAAMuvL,cAErB,OAAO,gBAAoBvvL,EAAMuvL,YAAY3wG,QAAS,CACpDtnF,MAAOA,EACP,kCAAmCguf,EACnCj1E,gBAAiB60P,EACjBzklB,IAAKzgF,EAAMmlqB,UAEf,GAIIC,GAAmB,gBAAoB,MAkEvCC,GAAe,SAAUC,GAG3B,SAASD,IAGP,IAFA,IAAIvzrB,EAEKhQ,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAoBzB,OAjBA2P,EAAQwzrB,EAAqBr3rB,KAAKS,MAAM42rB,EAAsB,CAAC13rB,MAAMhS,OAAOqG,KAAU2L,MAChFrQ,MAAQ,CACZuma,UAAWjvU,QAAQ/iF,EAAMkuB,MAAMu4E,IAC/B50G,KAAMmO,EAAMkuB,MAAMu4E,GAClB3tB,QAAS94E,EAAMkuB,MAAM8kpB,eAAiBhzqB,EAAMkuB,MAAMu4E,GAAK,OAAS,QAGlEzmG,EAAMkrX,QAAU,WACc,UAAxBlrX,EAAMvU,MAAMqtF,SAIhB94E,EAAMxE,SAAS,CACbw2Z,WAAW,GAEf,EAEOhyZ,CACT,CAiDA,OA5EA,OAAeuzrB,EAAcC,GA6B7BD,EAAaj+e,yBAA2B,SAAkCpnL,EAAOziC,GAC/E,OAAKyiC,EAAM8kpB,cAQP9kpB,EAAMu4E,GACD,CACLurT,WAAW,EACXnga,KAAMq8B,EAAMu4E,GACZ3tB,QAAS,QAITrtF,EAAMuma,UACD,CACLA,WAAW,EACXnga,KAAMpG,EAAMoG,KACZinF,QAAS,SAIN,CACLk5U,WAAW,EACXl5U,QAAS,QACTjnF,KAAM,MA1BC,CACLmga,UAAWjvU,QAAQ70D,EAAMu4E,IACzB50G,KAAMq8B,EAAMu4E,GACZ3tB,QAAS,OAyBf,EAEay6mB,EAAar3rB,UAEnBi+D,OAAS,WACd,IAAKr+D,KAAKrQ,MAAMuma,UACd,OAAO,KAGT,IAAIyhS,EAAW,CACbvoU,QAASpvX,KAAKovX,QACdr5X,KAAMiK,KAAKrQ,MAAMoG,KACjBinF,QAASh9E,KAAKrQ,MAAMqtF,SAEtB,OAAOh9E,KAAKoyB,MAAMolF,SAASmglB,EAC7B,EAEOF,CACT,CA9EmB,CA8EjB,iBAOEG,GAAwB,SAA+BC,EAA2B9P,GACpF,OAAIA,EACKphZ,GAAYsjO,KAAK89K,EAAS7irB,UAG/B2yrB,EACKlxZ,GAAY49Y,KAGd59Y,GAAYwtB,KACrB,EAEI2jY,GAAqB,SAA4BC,EAAaC,GAChE,OAAKD,EAIEC,EAAkB/kB,GAAuBA,GAHvC,IAIX,EA2CA,SAASglB,GAAW1re,GAClB,MAAuB,aAAhBA,EAAOv8M,KAlChB,SAA0B8nY,GACxB,IACI37W,EADY27W,EAASrnY,UACLu5b,OAChBpld,EAASkzZ,EAASlzZ,OAClBk0rB,EAAchhS,EAASghS,YACvBiP,EAAWjwS,EAASiwS,SACpBgQ,EAAc9wmB,QAAQ6xlB,GACtB5B,EAfyB,SAAkCp/R,GAC/D,OAAmC,MAA/BA,EAASm/R,mBACJn/R,EAASm/R,mBAGO,SAAlBn/R,EAAS3tX,IAClB,CASsB+tqB,CAAyBpgT,GACzCkgT,EAAkB/wmB,QAAQ8gmB,GAC1B3+rB,EAAY4usB,EAngJV,SAAcpzsB,EAAQmzsB,GAC1B,IAAI9pqB,EAAYK,GAAO1pC,GAEvB,OAAKqpC,EAIA8pqB,EAIE9pqB,EAAY,UAAYglpB,GAAqB,IAH3ChlpB,EAJA,IAQX,CAu/IkC+9E,CAAgBpnH,EAAQmzsB,GAAe/rlB,GAAkBpnH,GAc3F,MAbY,CACVkE,SAAU,QACVkB,IAAKmyC,EAAIq1oB,UAAUxnrB,IACnBG,KAAMgyC,EAAIq1oB,UAAUrnrB,KACpB6xC,UAAW,aACXt1C,MAAOy1C,EAAIJ,UAAUr1C,MACrBE,OAAQu1C,EAAIJ,UAAUn1C,OACtBsoD,WAAY0opB,GAAsB1gB,EAAe6Q,GACjD3+rB,UAAWA,EACXqU,QAASq6rB,GAAmBC,EAAaC,GACzCh3Q,OAAQg3Q,EAnDK,KADL,IAqDRt6rB,cAAe,OAGnB,CAUsCy6rB,CAAiB5re,GAP9C,CACLnjO,UAAW4iH,IAFYoslB,EAQwD7re,GANxC3nO,QACvCsqD,WAAYkppB,EAAUC,0BAA4B,KAAO,QAH7D,IAA2BD,CAS3B,CA6GA,SAASE,GAAgBnsrB,GACvBA,EAAMwgH,gBACR,CA2GA,IAAI4rkB,GAAgB,SAAW3+rB,EAAGC,GAChC,OAAOD,IAAMC,CACd,EAEG2+rB,GAA8B,SAAWrlsB,GAC3C,IAAI8/qB,EAAU9/qB,EAAO8/qB,QACjBv7a,EAAcvkQ,EAAOukQ,YAEzB,OAAIA,EACKA,EAAYm7a,YAGjBI,EACKA,EAAQJ,YAGV,IACR,EAwGD,SAAS4lB,GAAqBC,GAC5B,MAAO,CACLj3S,YAAY,EACZu2S,iBAAiB,EACjBW,SAAS,EACTvtB,cAAe,KACfjhpB,KAAM,KACNyuqB,aAAc,KACdF,iBAAkBA,EAClB5f,YAAa,KAEjB,CAEA,IAAI+f,GAAS,CACXtse,OAAQ,CACNv8M,KAAM,YACNprB,OAAQopG,EACR0qmB,iBAAkB,KAClBL,2BAA2B,EAC3Br/U,SAAUy/U,GAAqB,QAkG/BK,GAAqB,CACvBC,sBAnoK0B,WAC1B,MAAO,CACL/orB,KAAM,0BACN9F,QAAS,KAEb,GAgoKI8urB,IAAqB,IAAA5yrB,SAbC,WACxB,IAzMI6yrB,EAMAC,EAYAC,EAuLAC,GAzMAH,GAAiB,OAAW,SAAU1ysB,EAAG5C,GAC3C,MAAO,CACL4C,EAAGA,EACH5C,EAAGA,EAEP,GACIu1sB,GAAsB,OAAW,SAAU/uqB,EAAMwuqB,EAASC,EAAc9f,EAAaiP,GACvF,MAAO,CACLtmS,YAAY,EACZk3S,QAASA,EACTX,gBAAiB/wmB,QAAQ8gmB,GACzB3c,cAAe2c,EACf59pB,KAAMA,EACNyuqB,aAAcA,EACd9f,YAAaA,EACb4f,iBAAkB,KAEtB,GACIS,GAAmB,OAAW,SAAUv0sB,EAAQulC,EAAM1Z,EAAWkorB,EAASC,EAAc9f,EAAa7B,GACvG,MAAO,CACL1qd,OAAQ,CACNv8M,KAAM,WACN+3qB,SAAU,KACV6Q,aAAcA,EACd9f,YAAaA,EACb3upB,KAAMA,EACNvlC,OAAQA,EACR6rB,UAAWA,EACXwmqB,mBAAoBA,EACpBj+T,SAAUkgV,EAAoB/uqB,EAAMwuqB,EAASC,EAAc9f,EAAa,OAG9E,GAEe,SAAkBnprB,EAAO0psB,GACtC,GAAI1psB,EAAM8xZ,WAAY,CACpB,GAAI9xZ,EAAMqtrB,SAASvxW,UAAU1tU,KAAOs7rB,EAASnmB,YAC3C,OAAO,KAGT,IAAIturB,EAAS+K,EAAMkG,QAAQm0c,OAAOpld,OAC9B6rB,EAAY9gB,EAAM+yV,WAAWiyV,WAAW0kB,EAASnmB,aACjD0lB,EAAelc,GAAkB/srB,EAAMqlrB,QACvC8D,GAhDuD9D,EAgDhBrlrB,EAAMqlrB,QA/CvCtkT,IAAyB,YAAnBskT,EAAOtkT,GAAG1gX,KAAqBglqB,EAAOtkT,GAAGuiT,QAAQC,YAAc,KAgD3E+D,EAAqBtnrB,EAAMsnrB,mBAC/B,OAAOkiB,EAAiBF,EAAer0sB,EAAO2B,EAAG3B,EAAOjB,GAAIgM,EAAMixrB,aAAcnwqB,EAAW4orB,EAASV,QAASC,EAAc9f,EAAa7B,EAC1I,CAnD2B,IAAkCjC,EAqD7D,GAAoB,mBAAhBrlrB,EAAMgG,MAA4B,CACpC,IAAIs4W,EAAYt+W,EAAMs+W,UAEtB,GAAIA,EAAU96W,OAAO+/qB,cAAgBmmB,EAASnmB,YAC5C,OAAO,KAGT,IAAIylB,EAAUU,EAASV,QACnBvM,EAAaz8rB,EAAM+yV,WAAWiyV,WAAW0kB,EAASnmB,aAClD//qB,EAAS86W,EAAU96W,OACnBg3B,EAAOh3B,EAAOg3B,KAEdmvqB,EAAgBd,GAA4BrlsB,GAE5ComsB,EAvEqB,SAAkCpmsB,GAC/D,OAAOA,EAAO8/qB,QAAU9/qB,EAAO8/qB,QAAQC,YAAc,IACvD,CAqEyBsmB,CAAyBrmsB,GAGxC40rB,EAAW,CACb7irB,SAFavV,EAAM8zrB,aAGnB5wL,MAAOuxL,GACP91pB,OAAQ3+B,EAAM+zrB,oBACdjmrB,QAAS87rB,EAAetmB,GAAuB,KAC/CropB,MAAO2uqB,EAAetmB,GAAqB,MAE7C,MAAO,CACL1md,OAAQ,CACNv8M,KAAM,WACNprB,OAAQ+K,EAAM+zrB,oBACdjzqB,UAAW27qB,EACXrE,SAAUA,EACV6Q,aAAcU,EACdxgB,YAAaygB,EACbpvqB,KAAMA,EACN8spB,mBAAoB,KACpBj+T,SAAUkgV,EAAoB/uqB,EAAMwuqB,EAASW,EAAeC,EAAcxR,IAGhF,CAEA,OAAO,IACT,GAkHI0R,EAtFN,WACE,IAAIR,GAAiB,OAAW,SAAU1ysB,EAAG5C,GAC3C,MAAO,CACL4C,EAAGA,EACH5C,EAAGA,EAEP,GACIu1sB,GAAsB,OAAWT,IACjCU,GAAmB,OAAW,SAAUv0sB,EAAQ8zsB,EAAkBL,GAKpE,YAJyB,IAArBK,IACFA,EAAmB,MAGd,CACLnse,OAAQ,CACNv8M,KAAM,YACNprB,OAAQA,EACR8zsB,iBAAkBA,EAClBL,0BAA2BA,EAC3Br/U,SAAUkgV,EAAoBR,IAGpC,GAEIgB,EAAc,SAAqBhB,GACrC,OAAOA,EAAmBS,EAAiBnrmB,EAAQ0qmB,GAAkB,GAAQ,IAC/E,EAEIx5oB,EAAW,SAAkBy6oB,EAAOC,EAAY5kB,EAAQ6C,GAC1D,IAAIgiB,EAAqB7kB,EAAOQ,UAAU1woB,QAAQ60pB,GAC9CG,EAA+B7ymB,QAAQ4wlB,EAAcoJ,eAAiBpJ,EAAcC,SAAS6hB,IAC7F1mB,EAAUgC,GAAcD,GACxB0jB,EAAmBzlB,GAAWA,EAAQC,cAAgBymB,EAAQC,EAAa,KAE/E,IAAKC,EAAoB,CACvB,IAAKC,EACH,OAAOJ,EAAYhB,GAGrB,GAAI1jB,EAAOQ,UAAUF,UAAUqkB,GAC7B,OAAO,KAGT,IAAIr2oB,EAASz7B,EAAOgwpB,EAAcpC,YAAY5mpB,OAE1CnyB,EAAUu8rB,EAAe31oB,EAAO/8D,EAAG+8D,EAAO3/D,GAE9C,OAAOw1sB,EAAiBz8rB,EAASg8rB,GAAkB,EACrD,CAEA,GAAIoB,EACF,OAAOJ,EAAYhB,GAGrB,IAAI3f,EAAa/D,EAAOS,YAAY5mpB,MAChCjqC,EAASq0sB,EAAelgB,EAAWxyrB,EAAGwyrB,EAAWp1rB,GACrD,OAAOw1sB,EAAiBv0sB,EAAQ8zsB,EAAkBmB,EAAmB3iB,cACvE,EAwBA,OAtBe,SAAkBvnrB,EAAO0psB,GACtC,GAAI1psB,EAAM8xZ,WACR,OAAI9xZ,EAAMqtrB,SAASvxW,UAAU1tU,KAAOs7rB,EAASnmB,YACpC,KAGFh0nB,EAASm6oB,EAASnmB,YAAavjrB,EAAMqtrB,SAASvxW,UAAU1tU,GAAIpO,EAAMqlrB,OAAQrlrB,EAAMkorB,eAGzF,GAAoB,mBAAhBlorB,EAAMgG,MAA4B,CACpC,IAAIs4W,EAAYt+W,EAAMs+W,UAEtB,OAAIA,EAAU96W,OAAO+/qB,cAAgBmmB,EAASnmB,YACrC,KAGFh0nB,EAASm6oB,EAASnmB,YAAajlU,EAAU96W,OAAO+/qB,YAAajlU,EAAU+mU,OAAQ/mU,EAAU4pU,cAClG,CAEA,OAAO,IACT,CAGF,CAI0BkiB,GAMxB,OAJe,SAAkBpqsB,EAAO0psB,GACtC,OAAOD,EAAiBzpsB,EAAO0psB,IAAaI,EAAkB9psB,EAAO0psB,IAAaR,EACpF,CAGF,EAIsDC,GAAoB,KAAM,CAC9E3vqB,QAAS8lqB,GACT+K,MAAM,EACNC,mBAAoB1B,IAHG,CA1VzB,SAAmBnmqB,GACjB,IAAIygF,GAAM,IAAA5zG,QAAO,MACbgmiB,EAAS/liB,EAAY,SAAUq+B,GACjCs1E,EAAIh9G,QAAU0nC,CAChB,EAAG,IACC28pB,EAASh7rB,EAAY,WACvB,OAAO2zG,EAAIh9G,OACb,EAAG,IAECsksB,EAAsBtD,GAAmBxH,IACzC33K,EAAYyiL,EAAoBziL,UAChC+8K,EAAgC0F,EAAoB1F,8BACpD/9nB,EAAWyjoB,EAAoBzjoB,SAE/B0joB,EAAuBvD,GAAmBW,IAC1CxnrB,EAAOoqrB,EAAqBpqrB,KAC5B6iqB,EAAcunB,EAAqBvnB,YAEnCt6mB,EAAa34D,EAAQ,WACvB,MAAO,CACL7B,GAAIq0B,EAAM8gpB,YACV18qB,MAAO47B,EAAM57B,MACbwZ,KAAMA,EACN6iqB,YAAaA,EAEjB,EAAG,CAACzgpB,EAAM8gpB,YAAa9gpB,EAAM57B,MAAOwZ,EAAM6iqB,IACtCr7jB,EAAWplF,EAAMolF,SACjB07jB,EAAc9gpB,EAAM8gpB,YACpB19iB,EAAYpjG,EAAMojG,UAClB87jB,EAA0Bl/pB,EAAMk/pB,wBAChCkC,EAA6BphqB,EAAMohqB,2BACnCmF,EAAUvmqB,EAAMumqB,QAChBpse,EAASn6L,EAAMm6L,OACf8te,EAA8BjoqB,EAAM2mqB,sBAInCJ,GAxHP,SAA+BtksB,GAC7B,IAAIu0G,EAAWwmlB,GAAY,aACvB72nB,EAAalkE,EAAKkkE,WAClB7B,EAAWriE,EAAKqiE,SAChB4joB,EAAkBjmsB,EAAKimsB,gBACvB9G,EAA6Bn/rB,EAAKm/rB,2BAClClC,EAA0Bj9rB,EAAKi9rB,wBAC/B97jB,EAAYnhI,EAAKmhI,UACjB5lI,EAAUgQ,EAAQ,WACpB,MAAO,CACL4zrB,2BAA4BA,EAC5BlC,wBAAyBA,EACzB97jB,UAAWA,EAEf,EAAG,CAACg+jB,EAA4Bh+jB,EAAW87jB,IACvClI,EAAelqrB,EAAY,SAAUsqrB,GACvC,IAAIjspB,EAAK+8pB,IAET,OADC/8pB,GAA2G80oB,GAAU,GA7C1H,SAAwB95mB,EAAYh7B,EAAIispB,QACjB,IAAjBA,IACFA,EAAex7lB,GAGjB,IAAIusmB,EAAiBpzsB,OAAOkB,iBAAiBk1C,GACzCxB,EAAYwB,EAAG3wC,wBACfo9c,EAAS8nO,EAAa/1oB,EAAWw+pB,GACjC5qlB,EAAOkikB,EAAW7nO,EAAQw/O,GAiB9B,MAPgB,CACdjxnB,WAAYA,EACZopJ,YAXgB,CAChBqoP,OAAQA,EACRh5V,QAASzzE,EAAGyzE,QAAQ5oH,cACpBo0D,QAAS+9oB,EAAe/9oB,SASxBu8nB,WAPe,CACfxyrB,EAAGyjd,EAAOwnO,UAAU9qrB,MACpB/C,EAAGqmd,EAAOwnO,UAAU5qrB,QAMpBojd,OAAQA,EACRr6V,KAAMA,EAGV,CAoBW6qlB,CAAejioB,EAAYh7B,EAAIispB,EACxC,EAAG,CAACjxnB,EAAY+hoB,IACZ1opB,EAAQhyC,EAAQ,WAClB,MAAO,CACLgpG,SAAUA,EACVrwC,WAAYA,EACZ3oE,QAASA,EACTw5rB,aAAcA,EAElB,EAAG,CAAC7wnB,EAAY6wnB,EAAcx5rB,EAASg5G,IACnC6xlB,GAAe,IAAAx7rB,QAAO2yC,GACtB8opB,GAAoB,IAAAz7rB,SAAO,GAC/BsvrB,GAA0B,WAExB,OADA73nB,EAAS+0Q,UAAU31Q,SAAS2koB,EAAa5ksB,SAClC,WACL,OAAO6gE,EAAS+0Q,UAAUh1Q,WAAWgkoB,EAAa5ksB,QACpD,CACF,EAAG,CAAC6gE,EAAS+0Q,YACb8iX,GAA0B,WACxB,GAAImM,EAAkB7ksB,QACpB6ksB,EAAkB7ksB,SAAU,MAD9B,CAKA,IAAIq+C,EAAOumpB,EAAa5ksB,QACxB4ksB,EAAa5ksB,QAAU+7C,EACvB8kB,EAAS+0Q,UAAUr1U,OAAOw7C,EAAOsC,EAJjC,CAKF,EAAG,CAACtC,EAAO8kB,EAAS+0Q,WACtB,CAqFIkvX,CAVmB/6rB,EAAQ,WACzB,MAAO,CACL24D,WAAYA,EACZ7B,SAAUA,EACV4joB,gBAAiBJ,EACjB1G,2BAA4BA,EAC5BlC,wBAAyBA,EACzB97jB,UAAWA,EAEf,EAAG,CAACj9D,EAAY7B,EAAUwjoB,EAAQ1G,EAA4BlC,EAAyB97jB,KAIzF,IAAIolkB,EAAkBh7rB,EAAQ,WAC5B,OAAO41H,EAAY,CACjBygM,SAAU,EACV33T,KAAM,SACN,mBAAoBm2rB,EACpB,oCAAqCvhB,EACrC,kCAAmCx7J,EACnCjsM,WAAW,EACX2nV,YAAaklC,IACX,IACN,EAAG,CAAC5gL,EAAW+8K,EAA+BvhB,EAAa19iB,IACvDqlkB,EAAY37rB,EAAY,SAAUiN,GAChB,aAAhBogN,EAAOv8M,MAINu8M,EAAOw7d,UAIe,cAAvB57qB,EAAMk7U,cAIVgzW,GACF,EAAG,CAACA,EAA6B9te,IAC7Bore,EAAW/3rB,EAAQ,WACrB,IAAI8pB,EAAQuuqB,GAAW1re,GACnBk2O,EAAkC,aAAhBl2O,EAAOv8M,MAAuBu8M,EAAOw7d,SAAW8S,EAAY,KAWlF,MAVa,CACXtD,SAAUtyJ,EACV61J,eAAgB,CACd,gCAAiCpjL,EACjC,wBAAyBw7J,EACzBxppB,MAAOA,EACP+4a,gBAAiBA,GAEnBm4P,gBAAiBA,EAGrB,EAAG,CAACljL,EAAWkjL,EAAiB1nB,EAAa3md,EAAQsue,EAAW51J,IAC5D81J,EAASn7rB,EAAQ,WACnB,MAAO,CACLszqB,YAAa36mB,EAAWx6D,GACxBiS,KAAMuoD,EAAWvoD,KACjBuB,OAAQ,CACN/a,MAAO+hE,EAAW/hE,MAClBq8qB,YAAat6mB,EAAWs6mB,aAG9B,EAAG,CAACt6mB,EAAWs6mB,YAAat6mB,EAAWx6D,GAAIw6D,EAAW/hE,MAAO+hE,EAAWvoD,OACxE,OAAOwnG,EAASmglB,EAAUpre,EAAOysJ,SAAU+hV,EAC7C,GAyPA,SAASC,GAAiB5oqB,GAIxB,OAHuBykqB,GAAmBW,IACHyD,kBAEf7oqB,EAAM8gpB,aAAgB9gpB,EAAMumqB,QAI7C,gBAAoBK,GAAoB5mqB,GAHtC,IAIX,CACA,SAAS8oqB,GAAgB9oqB,GACvB,IAAIojG,EAA4C,kBAAzBpjG,EAAM+oqB,iBAAgC/oqB,EAAM+oqB,eAC/D3H,EAA6BvsmB,QAAQ70D,EAAMgpqB,mCAC3C9J,EAA0BrqmB,QAAQ70D,EAAMk/pB,yBAC5C,OAAO,gBAAoB0J,IAAkB,OAAS,CAAC,EAAG5oqB,EAAO,CAC/DumqB,SAAS,EACTnjkB,UAAWA,EACXg+jB,2BAA4BA,EAC5BlC,wBAAyBA,IAE7B,CAmHA,IAAI+J,GAAiB,SAAwBrrrB,EAAMgtqB,GACjD,OAAOhtqB,IAASgtqB,EAAS3kJ,UAAUrohB,IACrC,EAEIsrrB,GAAe,SAAsBte,EAAUt6V,GACjD,OAAOA,EAAWiyV,WAAWqI,EAASvxW,UAAU1tU,GAClD,EA4IIs7M,GAAe,CACjBlvL,KAAM,WACNna,KAAM,UACNjhB,UAAW,WACXwssB,gBAAgB,EAChBnhB,kBAAkB,EAClBohB,yBAAyB,EACzBC,YAAa,KACbC,qBAbF,WAEE,OADCjzsB,SAASiF,MAAgG2krB,GAAU,GAC7G5prB,SAASiF,IAClB,GAYIiusB,IAAqB,IAAAv1rB,SApJG,WAC1B,IAAIw1rB,EAAoB,CACtBj6e,YAAa,KACbk6e,0BAA0B,EAC1B7iV,SAAU,CACR8iV,gBAAgB,EAChBC,iBAAkB,KAClBC,qBAAsB,KACtBC,oBAAoB,GAEtBC,SAAU,MAGRC,GAAuB,OAAS,CAAC,EAAGP,EAAmB,CACzDC,0BAA0B,IAGxBO,GAAqB,OAAW,SAAU7joB,GAC5C,MAAO,CACL26mB,YAAa36mB,EAAWx6D,GACxBiS,KAAMuoD,EAAWvoD,KACjBuB,OAAQ,CACN/a,MAAO+hE,EAAW/hE,MAClBq8qB,YAAat6mB,EAAWs6mB,aAG9B,GACIwpB,GAAc,OAAW,SAAUt+rB,EAAIy3H,EAAW8mkB,EAA2BC,EAAyBzkT,EAAU2jT,GAClH,IAAIvoB,EAAcp7R,EAASv/U,WAAWx6D,GAGtC,GAFa+5Y,EAASv/U,WAAWs6mB,cAAgB90qB,EAErC,CACV,IAAIm+rB,EAAWT,EAAc,CAC3Bp9nB,OAAQo9nB,EACR3jT,SAAUskT,EAAmBtkT,EAASv/U,aACpC,KACAikoB,EAAY,CACdV,eAAgBQ,EAChBP,iBAAkBO,EAA4BppB,EAAc,KAC5D8oB,qBAAsB9oB,EACtB+oB,oBAAoB,GAEtB,MAAO,CACLt6e,YAAam2L,EAASn2L,YACtBk6e,0BAA0B,EAC1B7iV,SAAUwjV,EACVN,SAAUA,EAEd,CAEA,IAAK1mkB,EACH,OAAO2mkB,EAGT,IAAKI,EACH,OAAOX,EAGT,IAAI5iV,EAAW,CACb8iV,eAAgBQ,EAChBP,iBAAkB7oB,EAClB8oB,qBAAsB,KACtBC,oBAAoB,GAEtB,MAAO,CACLt6e,YAAam2L,EAASn2L,YACtBk6e,0BAA0B,EAC1B7iV,SAAUA,EACVkjV,SAAU,KAEd,GAyDA,OAvDe,SAAkBvssB,EAAO0psB,GACtC,IAAIt7rB,EAAKs7rB,EAASxmB,YACd7iqB,EAAOqprB,EAASrprB,KAChBwlH,GAAa6jkB,EAASkC,eACtBE,EAAcpC,EAASoC,YAE3B,GAAI9rsB,EAAM8xZ,WAAY,CACpB,IAAIu7R,EAAWrtrB,EAAMqtrB,SAErB,IAAKqe,GAAerrrB,EAAMgtqB,GACxB,OAAOmf,EAGT,IAAIrkT,EAAWwjT,GAAate,EAAUrtrB,EAAM+yV,YACxCo5W,EAAiBpf,GAAkB/srB,EAAMqlrB,UAAYj3qB,EACzD,OAAOs+rB,EAAYt+rB,EAAIy3H,EAAWsmkB,EAAgBA,EAAgBhkT,EAAU2jT,EAC9E,CAEA,GAAoB,mBAAhB9rsB,EAAMgG,MAA4B,CACpC,IAAIs4W,EAAYt+W,EAAMs+W,UAEtB,IAAKotV,GAAerrrB,EAAMi+V,EAAU+uU,UAClC,OAAOmf,EAGT,IAAI3O,EAAY8N,GAAartV,EAAU+uU,SAAUrtrB,EAAM+yV,YAEvD,OAAO25W,EAAYt+rB,EAAIy3H,EAAWgjkB,GAA4BvqV,EAAU96W,UAAY4K,EAAI2+qB,GAAkBzuU,EAAU+mU,UAAYj3qB,EAAIyvrB,EAAWiO,EACjJ,CAEA,GAAoB,SAAhB9rsB,EAAMgG,OAAoBhG,EAAMs+W,YAAct+W,EAAM6xrB,YAAa,CACnE,IAAIib,EAAa9ssB,EAAMs+W,UAEvB,IAAKotV,GAAerrrB,EAAMysrB,EAAWzf,UACnC,OAAOmf,EAGT,IAAIvZ,EAAUlG,GAAkB+f,EAAWznB,UAAYj3qB,EACnD2+rB,EAAez1mB,QAAQw1mB,EAAWznB,OAAOtkT,IAAoC,YAA9B+rU,EAAWznB,OAAOtkT,GAAG1gX,MACpE2srB,EAASF,EAAWzf,SAAS3kJ,UAAUt6hB,KAAOA,EAElD,OAAI6krB,EACK8Z,EAAed,EAAoBO,EAGxCQ,EACKf,EAGFO,CACT,CAEA,OAAOA,CACT,CAGF,EAC2B,CACzBS,wBAx9K4B,SAAiCvosB,GAC7D,MAAO,CACL2b,KAAM,6BACN9F,QAAS7V,EAEb,GAq+K8E,KAAM,CAClF80B,QAAS8lqB,GACT+K,MAAM,EACNC,mBAAoB1B,IAHG,CA7QzB,SAAmBnmqB,GACjB,IAAI2jqB,GAAa,IAAAhsd,YAAWsld,IAC3B0G,GAAsG1jB,GAAU,GACjH,IAAI36J,EAAYq+K,EAAWr+K,UACvBumK,EAAoB8X,EAAW9X,kBAC/B4e,GAAe,IAAA59rB,QAAO,MACtB69rB,GAAiB,IAAA79rB,QAAO,MACxBu4G,EAAWplF,EAAMolF,SACjBq7jB,EAAczgpB,EAAMygpB,YACpB7iqB,EAAOoiB,EAAMpiB,KACbma,EAAOiI,EAAMjI,KACbp7B,EAAYqjC,EAAMrjC,UAClByssB,EAA0BppqB,EAAMopqB,wBAChCD,EAAiBnpqB,EAAMmpqB,eACvBnhB,EAAmBhopB,EAAMgopB,iBACzBphU,EAAW5mV,EAAM4mV,SACjBkjV,EAAW9pqB,EAAM8pqB,SACjBU,EAA0BxqqB,EAAMwqqB,wBAChClB,EAAuBtpqB,EAAMspqB,qBAC7BqB,EAAkB79rB,EAAY,WAChC,OAAO29rB,EAAahnsB,OACtB,EAAG,IACCmnsB,EAAkB99rB,EAAY,SAAUvZ,GAC1Ck3sB,EAAahnsB,QAAUlQ,CACzB,EAAG,IAICs3sB,GAHoB/9rB,EAAY,WAClC,OAAO49rB,EAAejnsB,OACxB,EAAG,IACqBqJ,EAAY,SAAUvZ,GAC5Cm3sB,EAAejnsB,QAAUlQ,CAC3B,EAAG,KAMCu3sB,EAA6Bh+rB,EAAY,WACvC++qB,KACF2e,EAAwB,CACtBxkC,UAAWywB,MAGjB,EAAG,CAAC5K,EAAmB2e,KA//BzB,SAA+BvosB,GAC7B,IAAI8osB,GAAmB,IAAAl+rB,QAAO,MAC1B82rB,EAAac,GAAmBxH,IAChCzmlB,EAAWwmlB,GAAY,aACvB14nB,EAAWq/nB,EAAWr/nB,SACtBixnB,EAAUoO,EAAWpO,QACrByV,EAAcrkf,GAAY1kN,GAC1BkkE,EAAa34D,EAAQ,WACvB,MAAO,CACL7B,GAAI1J,EAAKw+qB,YACT7iqB,KAAM3b,EAAK2b,KACXma,KAAM91B,EAAK81B,KAEf,EAAG,CAAC91B,EAAKw+qB,YAAax+qB,EAAK81B,KAAM91B,EAAK2b,OAClCqtrB,GAAyB,IAAAp+rB,QAAOs5D,GAChC+koB,EAAuB19rB,EAAQ,WACjC,OAAO,OAAW,SAAUrZ,EAAG5C,GAC5Bw5sB,EAAiBtnsB,SAA6Gw8qB,GAAU,GACzI,IAAIz/qB,EAAS,CACXrM,EAAGA,EACH5C,EAAGA,GAELgksB,EAAQ7D,sBAAsBvrnB,EAAWx6D,GAAInL,EAC/C,EACF,EAAG,CAAC2lE,EAAWx6D,GAAI4prB,IACf4V,EAAmBr+rB,EAAY,WACjC,IAAI44Y,EAAWqlT,EAAiBtnsB,QAEhC,OAAKiiZ,GAAaA,EAASnuN,IAAIotgB,kBAIxBN,GAAY3+S,EAASnuN,IAAIotgB,mBAHvB/omB,CAIX,EAAG,IACCwvmB,EAAet+rB,EAAY,WAC7B,IAAItM,EAAS2qsB,IACbD,EAAqB1qsB,EAAOrM,EAAGqM,EAAOjP,EACxC,EAAG,CAAC45sB,EAAkBD,IAClBG,EAAuB79rB,EAAQ,WACjC,OAAO,EAAQ49rB,EACjB,EAAG,CAACA,IACAE,EAAkBx+rB,EAAY,WAChC,IAAI44Y,EAAWqlT,EAAiBtnsB,QAC5B83M,EAAUmpf,GAA6Bh/S,GACzCA,GAAYnqM,GAAuH0ke,GAAU,GACjIv6R,EAASqwS,cAEXC,yBACVoV,IAIFC,GACF,EAAG,CAACA,EAAsBD,IACtB9T,EAA6BxqrB,EAAY,SAAUsqrB,EAAc55rB,GACjEutsB,EAAiBtnsB,SAA6Hw8qB,GAAU,GAC1J,IAAIjjpB,EAAWguqB,EAAYvnsB,QACvBg9G,EAAMzjF,EAAS2tqB,kBAClBlqlB,GAA2Gw/jB,GAAU,GACtH,IAAI1of,EAjOK,SAAWl9L,GAGtB,MAAO,CACLsqsB,kBAHsBR,GAAqB9psB,GAI3Ck1rB,cAHkB+U,GAAWjqsB,GAKhC,CA0NakxsB,CAAO9qlB,GACbilS,EAAW,CACbjlS,IAAKA,EACLt6C,WAAYA,EACZoxH,IAAKA,EACLw+f,cAAev4rB,GAEjButsB,EAAiBtnsB,QAAUiiZ,EAC3B,IAAIrnY,EApIW,SAAWrlB,GAC5B,IAAIynH,EAAMznH,EAAKynH,IACXt6C,EAAantE,EAAKmtE,WAClBoxH,EAAMv+L,EAAKu+L,IACX6/f,EAAep+rB,EAAKo+rB,aACpBz6rB,EAAY3D,EAAK2D,UACjBwssB,EAAiBnwsB,EAAKmwsB,eACtBnhB,EAAmBhvrB,EAAKgvrB,iBACxB3G,EAAoBrorB,EAAKqorB,kBACzBsjB,EAAoBptgB,EAAIotgB,kBACxB/sP,EAzCU,SAAmB4zP,EAAW7G,GAC5C,IAAI1rpB,EAAO0moB,EAAO6rB,GAElB,IAAK7G,EACH,OAAO1rpB,EAGT,GAAIuypB,IAAc7G,EAChB,OAAO1rpB,EAGT,IAAIrhD,EAAMqhD,EAAKomoB,WAAWznrB,IAAM+ssB,EAAkB9psB,UAC9C9C,EAAOkhD,EAAKomoB,WAAWtnrB,KAAO4ssB,EAAkBhqsB,WAChD7C,EAASF,EAAM+ssB,EAAkBjosB,aACjC7E,EAAQE,EAAO4ssB,EAAkBlosB,YAOjCktC,EAAY+rd,EANC,CACf99f,IAAKA,EACLC,MAAOA,EACPC,OAAQA,EACRC,KAAMA,GAE2BkhD,EAAKiQ,QAOxC,OANa81nB,EAAU,CACrBr1oB,UAAWA,EACXhN,OAAQsc,EAAKtc,OACbusB,OAAQjQ,EAAKiQ,OACb9qD,QAAS66C,EAAK76C,SAGlB,CAYeqtsB,CAAUhrlB,EAAKkklB,GACxBpnlB,EAAOkikB,EAAW7nO,EAAQw/O,GAE1B77e,EAAU,WACZ,IAAKopf,EACH,OAAO,KAGT,IAAI+G,EAAc/rB,EAAOglB,GACrBgH,EAAa,CACfjvsB,aAAciosB,EAAkBjosB,aAChCD,YAAakosB,EAAkBlosB,aAEjC,MAAO,CACLm7c,OAAQ8zP,EACRnulB,KAAMkikB,EAAWisB,EAAatU,GAC9B52rB,OAAQ6jsB,GAAYM,GACpBgH,WAAYA,EACZtqB,kBAAmBA,EAEvB,CAjBc,GAmBVhjqB,EA5HsB,SAAWrlB,GACrC,IAAImtE,EAAantE,EAAKmtE,WAClBi9D,EAAYpqI,EAAKoqI,UACjB4kjB,EAAmBhvrB,EAAKgvrB,iBACxBuH,EAAgBv2rB,EAAKu2rB,cACrB5yrB,EAAY3D,EAAK2D,UACjBi7c,EAAS5+c,EAAK4+c,OACdr6V,EAAOvkH,EAAKukH,KACZg+F,EAAUviN,EAAKuiN,QAEf+0N,EAAQ,WACV,IAAK/0N,EACH,OAAO,KAGT,IAAIowf,EAAapwf,EAAQowf,WACrBD,EAAcnwf,EAAQq8P,OACtBouN,EAAYwwB,GAAa,CAC3B95rB,aAAcivsB,EAAWjvsB,aACzBD,YAAakvsB,EAAWlvsB,YACxBjI,OAAQk3sB,EAAYrsB,WAAW7qrB,OAC/BF,MAAOo3sB,EAAYrsB,WAAW/qrB,QAEhC,MAAO,CACLitrB,cAAehme,EAAQh+F,KAAK6hkB,UAC5BssB,YAAaA,EACbC,WAAYA,EACZtqB,kBAAmB9le,EAAQ8le,kBAC3B7grB,OAAQ,CACN6uC,QAASksK,EAAQ/6M,OACjBiD,QAAS83M,EAAQ/6M,OACjBjJ,IAAKyuqB,EACL/6mB,KAAM,CACJ13D,MAAOqoG,EACP+llB,aAAc/llB,IAItB,CA5BY,GA8BR97F,EAAqB,aAAdnD,EAA2B4zD,GAAWlQ,GAkBjD,MAXgB,CACd8lB,WAAYA,EACZ6hnB,iBAAkBA,EAClBuH,cAAeA,EACfzvrB,KAAMA,EACNsjI,UAAWA,EACXw0U,OAAQA,EACRr6V,KAAMA,EACN+yT,MAAOA,EACPi8D,QAfYi1M,EAAW,CACvBjkkB,KAAMA,EACNkkkB,gBAAiB,KACjB3hrB,KAAMA,EACNwwa,MAAOA,IAcV,CAiEiBs7R,CAAsB,CACpCzloB,WAAYA,EACZi9D,WAAY+lkB,EACZnhB,iBAAkBA,EAClBuH,cAAeh4f,EAAIg4f,cACnB5yrB,UAAWA,EACXi7c,OAAQA,EACRr6V,KAAMA,EACNg+F,QAASA,IAEX,OAAOl9L,CACR,CAyFmB24qB,CAAa,CAC3Bv2kB,IAAKA,EACLt6C,WAAYA,EACZoxH,IAAKA,EACL6/f,aAAcA,EACdz6rB,UAAWqgC,EAASrgC,UACpBwssB,eAAgBnsqB,EAASmsqB,eACzBnhB,iBAAkBhrpB,EAASgrpB,iBAC3B3G,mBAAoBrkpB,EAASosqB,0BAE3BnnB,EAAa1qf,EAAIotgB,kBAWrB,OATI1iB,IACFA,EAAWp2qB,aAAay6pB,GAAgBhhJ,UAAWq+K,EAAWr+K,WAC9D28J,EAAWn8qB,iBAAiB,SAAUwlsB,EAAiB9G,GAAmB9+S,EAASqwS,iBAO9E13qB,CACT,EAAG,CAACslrB,EAAWr+K,UAAWn/c,EAAYmloB,EAAiBN,IACnD/T,EAAyBnqrB,EAAY,WACvC,IAAI44Y,EAAWqlT,EAAiBtnsB,QAC5B83M,EAAUmpf,GAA6Bh/S,GAE3C,OADEA,GAAYnqM,GAAyJ0ke,GAAU,GAC1KokB,GAAY9of,EACrB,EAAG,IACCi8e,EAAc1qrB,EAAY,WAC5B,IAAI44Y,EAAWqlT,EAAiBtnsB,QAC/BiiZ,GAA8Gu6R,GAAU,GACzH,IAAI1ke,EAAUmpf,GAA6Bh/S,GAC3CqlT,EAAiBtnsB,QAAU,KAEtB83M,IAIL8vf,EAAqB96pB,SACrBgrK,EAAQxvM,gBAAgBu6pB,GAAgBhhJ,WACxC/pU,EAAQx1M,oBAAoB,SAAUulsB,EAAiB9G,GAAmB9+S,EAASqwS,gBACrF,EAAG,CAACuV,EAAiBD,IACjB7qsB,EAASsM,EAAY,SAAUokD,GACjC,IAAIw0V,EAAWqlT,EAAiBtnsB,QAC/BiiZ,GAA6Gu6R,GAAU,GACxH,IAAI1ke,EAAUmpf,GAA6Bh/S,GAC1CnqM,GAA6H0ke,GAAU,GACxI1ke,EAAQ1gN,WAAaq2D,EAAO3/D,EAC5BgqN,EAAQ5gN,YAAcu2D,EAAO/8D,CAC/B,EAAG,IACCg7C,EAAY3hC,EAAQ,WACtB,MAAO,CACL8prB,2BAA4BA,EAC5BL,uBAAwBA,EACxBO,YAAaA,EACbh3rB,OAAQA,EAEZ,EAAG,CAACg3rB,EAAaF,EAA4BL,EAAwBz2rB,IACjEg/C,EAAQhyC,EAAQ,WAClB,MAAO,CACLgpG,SAAUA,EACVrwC,WAAYA,EACZh3B,UAAWA,EAEf,EAAG,CAACA,EAAWg3B,EAAYqwC,IAC3B2llB,GAA0B,WAGxB,OAFA8O,EAAuBxnsB,QAAU+7C,EAAM2mB,WACvC7B,EAAS2he,UAAUvie,SAASlkB,GACrB,WACDurpB,EAAiBtnsB,SAEnB+zrB,IAGFlznB,EAAS2he,UAAU5he,WAAW7kB,EAChC,CACF,EAAG,CAACrQ,EAAWg3B,EAAYqxnB,EAAah4oB,EAAO+1oB,EAASjxnB,EAAS2he,YACjEk2J,GAA0B,WACnB4O,EAAiBtnsB,SAItB8xrB,EAAQ5D,yBAAyBsZ,EAAuBxnsB,QAAQkI,IAAK1J,EAAKknsB,eAC5E,EAAG,CAAClnsB,EAAKknsB,eAAgB5T,IACzB4G,GAA0B,WACnB4O,EAAiBtnsB,SAItB8xrB,EAAQ3D,gCAAgCqZ,EAAuBxnsB,QAAQkI,GAAI1J,EAAK+lrB,iBAClF,EAAG,CAAC/lrB,EAAK+lrB,iBAAkBuN,GAC7B,CAi2BEsW,CAAsB,CACpBprB,YAAaA,EACb7iqB,KAAMA,EACNma,KAAMA,EACNp7B,UAAWA,EACXwssB,eAAgBA,EAChBnhB,iBAAkBA,EAClBohB,wBAAyBA,EACzBuB,gBAAiBA,IAEnB,IAAIp7e,EAAc,gBAAoB81e,GAAc,CAClD9slB,GAAIv4E,EAAMuvL,YACVu1d,cAAe9kpB,EAAMypqB,0BACpB,SAAUzwsB,GACX,IAAIgkY,EAAUhkY,EAAKgkY,QACfr5X,EAAO3K,EAAK2K,KACZinF,EAAU5xF,EAAK4xF,QACnB,OAAO,gBAAoBi6mB,GAAe,CACxCt1e,YAAa5rN,EACbq5X,QAASA,EACTmoU,SAAU0F,EACVjgnB,QAASA,EACT06b,UAAWA,EACXj1E,gBAAiBy6P,GAErB,GACIvF,EAAW/3rB,EAAQ,WACrB,MAAO,CACL23rB,SAAUyF,EACVr7e,YAAaA,EACbu8e,eAAgB,CACd,wBAAyBrrB,EACzB,gCAAiCn7J,GAGvC,EAAG,CAACA,EAAWm7J,EAAalxd,EAAaq7e,IACrC/B,EAAkBiB,EAAWA,EAASpkT,SAASo7R,YAAc,KAC7DirB,EAAmBv+rB,EAAQ,WAC7B,MAAO,CACLizqB,YAAaA,EACb7iqB,KAAMA,EACNirrB,gBAAiBA,EAErB,EAAG,CAACpoB,EAAaooB,EAAiBjrrB,IAsBlC,OAAO,gBAAoBwnrB,GAAiBx5W,SAAU,CACpDr4V,MAAOw4sB,GACN3mlB,EAASmglB,EAAU3+U,GAtBtB,WACE,IAAKkjV,EACH,OAAO,KAGT,IAAIpkT,EAAWokT,EAASpkT,SACpBz5U,EAAS69nB,EAAS79nB,OAClBt3E,EAAO,gBAAoBi0sB,GAAkB,CAC/C9nB,YAAap7R,EAASo7R,YACtB18qB,MAAOshZ,EAASvmY,OAAO/a,MACvBmisB,SAAS,EACTnjkB,WAAW,EACX87jB,yBAAyB,EACzBkC,4BAA4B,GAC3B,SAAU4K,EAAmBC,GAC9B,OAAOhgoB,EAAO+/nB,EAAmBC,EAAmBvmT,EACtD,GACA,OAAO,eAAsB/wZ,EAAM20sB,IACrC,CAIiC4C,GACnC,GAmKA3C,GAAmBtif,aAAeA,E,yBCnzQ1B,SAAWx4N,GAAU,aAIzB,IAAIwhoB,EACI,6DAA6DnhoB,MAAM,KACvEohoB,EACI,kDAAkDphoB,MAAM,KAC5DuzU,EAAc,CACV,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAEG7zU,EAAOG,aAAa,QAAS,CACpCC,OAAQ,0FAA0FC,MAC9F,KAEJC,YAAa,SAAUgC,EAAGq7C,GACtB,OAAKr7C,EAEM,QAAQjB,KAAKs8C,GACb8jlB,EAAuBn/nB,EAAEo6F,SAEzB8kiB,EAAoBl/nB,EAAEo6F,SAJtB8kiB,CAMf,EAEA3tT,YAAaA,EACbK,iBAAkBL,EAClBM,kBACI,4FACJC,uBACI,mFAEJR,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAElBrzU,SACI,6DAA6DF,MAAM,KACvEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,oBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERM,uBAAwB,kBACxBC,QAAS,SAAU8+C,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzGyCC,CAAQ,EAAQ,O,+BCL1D,EAAQ,M,+BCDR,IAAI87G,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjCjoO,EAAW,EAAQ,KACnBsgnB,EAAc,EAAQ,OAEtBvjnB,EAAUs8G,EAAY,GAAGt8G,SACzBw6sB,EAAQzsqB,OAAO,KAAOw1kB,EAAc,MACpCk3F,EAAQ1sqB,OAAO,QAAUw1kB,EAAc,MAAQA,EAAc,OAG7D70O,EAAe,SAAU8rP,GAC3B,OAAO,SAAU5rP,GACf,IAAI7uY,EAASkD,EAASioO,EAAuB0jK,IAG7C,OAFW,EAAP4rP,IAAUz6nB,EAASC,EAAQD,EAAQy6sB,EAAO,KACnC,EAAPhgF,IAAUz6nB,EAASC,EAAQD,EAAQ06sB,EAAO,OACvC16sB,CACT,CACF,EAEA49F,EAAOj9F,QAAU,CAGfgI,MAAOgmY,EAAa,GAGpB/lY,IAAK+lY,EAAa,GAGlBz0X,KAAMy0X,EAAa,G,+DC3BjBgsU,EAAU,SAAiB5rlB,GAC7B,OAAQA,GAAsB,mBAARA,EAA2B,SAAUltH,GACzDktH,EAAIh9G,QAAUlQ,CAChB,EAF2CktH,CAG7C,EAiCA,QANA,SAAuB6rlB,EAAMC,GAC3B,OAAO,IAAA/+rB,SAAQ,WACb,OA3BG,SAAmB8+rB,EAAMC,GAC9B,IAAI/ksB,EAAI6ksB,EAAQC,GACZ7ksB,EAAI4ksB,EAAQE,GAChB,OAAO,SAAUh5sB,GACXiU,GAAGA,EAAEjU,GACLkU,GAAGA,EAAElU,EACX,CACF,CAoBWi5sB,CAAUF,EAAMC,EACzB,EAAG,CAACD,EAAMC,GACZ,C,kBCrCA,IAAIE,EAAa,EAAQ,OACrBz1c,EAAS,EAAQ,OAerB1nK,EAAOj9F,QAJP,SAAsB6mD,EAAQ/5B,GAC5B,OAAO+5B,GAAUuzpB,EAAWttrB,EAAQ63O,EAAO73O,GAAS+5B,EACtD,C,+BCbA,IAAIoQ,EAAO,EAAQ,OACfulE,EAAgB,EAAQ,OACxB5N,EAAW,EAAQ,OACnB6N,EAAoB,EAAQ,OAG5BuxQ,EAAe,SAAU8rP,GAC3B,IAAIugF,EAA8B,IAATvgF,EACzB,OAAO,SAAU5rP,EAAOzuR,EAAYoyG,GAMlC,IALA,IAII3wN,EAJAm1B,EAAIu4F,EAASs/Q,GACbrwS,EAAO2+B,EAAcnmG,GACrBtkB,EAAQ0qH,EAAkB5+B,GAC1Bi/B,EAAgB7lE,EAAKwoD,EAAYoyG,GAE9B9/M,KAAU,GAGf,GADS+qH,EADT57H,EAAQ28F,EAAK9rF,GACiBA,EAAOskB,GACzB,OAAQyjmB,GAClB,KAAK,EAAG,OAAO54nB,EACf,KAAK,EAAG,OAAO6Q,EAGnB,OAAOsosB,GAAsB,OAAIhosB,CACnC,CACF,EAEA4qF,EAAOj9F,QAAU,CAGfgvQ,SAAUg/H,EAAa,GAGvBtvK,cAAesvK,EAAa,G,yBCxBtB,SAAW5xY,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAET0zU,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBC5zU,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,CACJu9C,OAAQ,8EAA8Et9C,MAClF,KAEJk+O,WACI,0EAA0El+O,MACtE,MAGZC,YACI,6DAA6DD,MAAM,KACvEE,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,kCAAkCH,MAAM,KACvDI,YAAa,qBAAqBJ,MAAM,KACxCM,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV2yU,YAAaA,EACbS,gBAAiBT,EACjBU,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJT,YACI,+KAEJK,iBACI,+KAEJC,kBACI,uIAEJC,uBACI,sFAEJ1yU,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNC,EAAG,cACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UACJC,EAAG,SACHC,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,gBAAiB,SAAUC,GAC7C,OAAOjD,EAAUiD,EACrB,EACJ,EACAC,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,MAAO,SAAUC,GACnC,OAAOlD,EAAUkD,EACrB,EACJ,EAGAjC,cAAe,qBACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,QAAbD,EACOC,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbD,EACAC,EACa,UAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAbD,EACAC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,KAEf,EACAgC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA5KyCC,CAAQ,EAAQ,O,oBCNOm9F,EAAOj9F,QAAmJ,SAASmc,GAAG,SAAS5b,EAAE2+E,GAAG,GAAG9iE,EAAE8iE,GAAG,OAAO9iE,EAAE8iE,GAAGl/E,QAAQ,IAAIY,EAAEwb,EAAE8iE,GAAG,CAACt+E,EAAEs+E,EAAEnrD,GAAE,EAAG/zB,QAAQ,CAAC,GAAG,OAAOmc,EAAE+iE,GAAGtjE,KAAKhb,EAAEZ,QAAQY,EAAEA,EAAEZ,QAAQO,GAAGK,EAAEmzB,GAAE,EAAGnzB,EAAEZ,OAAO,CAAC,IAAIoc,EAAE,CAAC,EAAE,OAAO7b,EAAE7B,EAAEyd,EAAE5b,EAAEY,EAAEib,EAAE7b,EAAEK,EAAE,SAASub,GAAG,OAAOA,CAAC,EAAE5b,EAAEzB,EAAE,SAASqd,EAAEC,EAAE8iE,GAAG3+E,EAAE2+E,EAAE/iE,EAAEC,IAAI/W,OAAOwY,eAAe1B,EAAEC,EAAE,CAACo2B,cAAa,EAAGvL,YAAW,EAAG73B,IAAI8vE,GAAG,EAAE3+E,EAAE6b,EAAE,SAASD,GAAG,IAAIC,EAAED,GAAGA,EAAE2hF,WAAW,WAAW,OAAO3hF,EAAE4hF,OAAO,EAAE,WAAW,OAAO5hF,CAAC,EAAE,OAAO5b,EAAEzB,EAAEsd,EAAE,IAAIA,GAAGA,CAAC,EAAE7b,EAAE2+E,EAAE,SAAS/iE,EAAE5b,GAAG,OAAO8E,OAAOsW,UAAUxU,eAAeyU,KAAKO,EAAE5b,EAAE,EAAEA,EAAEmb,EAAE,GAAGnb,EAAEA,EAAE/B,EAAE,EAAE,CAA1e,CAA4e,CAAC,SAAS2d,EAAE5b,EAAE6b,GAAG,aAAs5B,SAASjH,EAAEgH,GAAG,OAAOA,EAAE+P,WAAW/P,GAAGwP,SAASxP,GAAGA,EAAE,CAAC,CAAC,SAAS4X,EAAE5X,GAAG,IAAI5b,EAAE4b,EAAEhU,wBAAwB,MAAM,CAAClG,MAAMlB,KAAK+F,MAAM,iBAAiBvG,EAAE0B,MAAM1B,EAAE0B,MAAMg9Q,KAAK/8Q,aAAaC,OAAOpB,KAAK+F,MAAM,iBAAiBvG,EAAE4B,OAAO5B,EAAE4B,OAAO88Q,KAAK78Q,cAAcmD,IAAIxE,KAAK+F,MAAMvG,EAAEgF,KAAK7C,OAAO+F,aAAazE,SAASC,gBAAgBuE,YAAY9C,KAAK3E,KAAK+F,MAAMvG,EAAEmF,MAAMhD,OAAO6F,aAAavE,SAASC,gBAAgBqE,aAAawgqB,cAAc/nqB,KAAKmE,IAAIlB,SAASC,gBAAgBwD,YAAY/E,OAAOymG,YAAY,GAAG4/jB,eAAehoqB,KAAKmE,IAAIlB,SAASC,gBAAgBuD,aAAa9E,OAAO2mG,aAAa,GAAG,CAA22ChkG,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,IAAKX,EAAEilH,SAA/oF,SAAWrpG,EAAE5b,GAASA,EAAE9D,MAAM,KAAO+P,OAAO,SAAS2P,GAAG,OAAOA,EAAExM,MAAM,GAAGpC,QAAQ,SAAShN,GAAG4b,EAAE+oG,UAAU/oG,EAAE+oG,UAAUr2G,IAAItO,GAAG,+BAA+B4b,EAAEkpG,UAAU9iH,WAAW4Z,EAAEkpG,UAAUM,UAAUxpG,EAAEkpG,UAAUM,QAAQh2G,OAAO,IAAI,IAAIpP,EAAE4b,EAAEkpG,YAAYlpG,EAAEkpG,UAAU11G,OAAO,IAAI,IAAIpP,CAAC,EAAE,EAAg4EA,EAAE0kH,YAAj4E,SAAW9oG,EAAE5b,GAASA,EAAE9D,MAAM,KAAO+P,OAAO,SAAS2P,GAAG,OAAOA,EAAExM,MAAM,GAAGpC,QAAQ,SAAShN,GAAG4b,EAAE+oG,UAAU/oG,EAAE+oG,UAAU/mE,OAAO59C,GAAG,+BAA+B4b,EAAEkpG,UAAU9iH,WAAW4Z,EAAEkpG,UAAUM,QAAQxpG,EAAEkpG,UAAUM,QAAQpjH,WAAWjD,QAAQ,IAAI+tC,OAAO,QAAQ9sC,EAAE9D,MAAM,KAAKgd,KAAK,KAAK,QAAQ,MAAM,KAAK0C,EAAEkpG,UAAUlpG,EAAEkpG,UAAU9iH,WAAWjD,QAAQ,IAAI+tC,OAAO,QAAQ9sC,EAAE9D,MAAM,KAAKgd,KAAK,KAAK,QAAQ,MAAM,IAAI,EAAE,EAAw/DlZ,EAAE+5sB,WAAWnlsB,EAAE5U,EAAEJ,OAAO4zB,EAAExzB,EAAEg6sB,eAAp9C,SAAWp+rB,GAAG,IAAI5b,EAAE4b,EAAEhU,wBAAwBiU,EAAE2X,EAAE5X,GAAG+iE,EAAE,CAAC35E,IAAI,EAAEG,KAAK,GAAG9E,EAAEoD,SAASC,gBAAgBzF,EAAEoC,EAAEuH,wBAAwBmtB,EAAE5yB,OAAOkB,iBAAiBhD,GAAG,OAAOs+E,EAAE35E,IAAI/G,EAAE+G,IAAI3E,EAAEoJ,UAAUk1E,EAAEx5E,KAAKlH,EAAEkH,KAAK9E,EAAEqJ,WAAWi1E,EAAE35E,KAAK7C,OAAO+F,YAAYy2E,EAAEx5E,MAAMhD,OAAO6F,YAAY22E,EAAE35E,KAAK4P,EAAEmgB,EAAEmxC,YAAYyY,EAAEx5E,MAAMyP,EAAEmgB,EAAEqxC,aAAathE,OAAOC,OAAO8W,EAAE,CAAC7W,IAAIxE,KAAK+F,MAAMvG,EAAEgF,IAAI25E,EAAE35E,KAAKG,KAAK3E,KAAK+F,MAAMvG,EAAEmF,KAAKw5E,EAAEx5E,OAAO,EAA+lCnF,EAAE+nB,cAAhmC,SAAWnM,GAAG,IAAI5b,EAAEyD,SAASskB,cAAc,OAAO,OAAO/nB,EAAE4lM,UAAUhqL,EAAE5C,OAAOhZ,EAAE4jI,UAAU,EAAshC5jI,EAAEi6sB,aAAvhC,SAAWr+rB,GAAG,IAAI5b,EAAE4b,EAAE1f,MAAM,KAAK+P,OAAO,SAAS2P,GAAG,OAAOA,EAAExM,MAAM,GAAGrB,IAAI,SAAS6N,GAAG,OAAOulB,SAASvlB,EAAE,GAAG,GAAG,OAAO5b,EAAEoP,QAAQ,KAAK,EAAE,MAAM,CAACpK,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,KAAK,GAAG,KAAK,EAAE,MAAM,CAACH,IAAIhF,EAAE,GAAGiF,MAAMjF,EAAE,GAAGkF,OAAOlF,EAAE,GAAGmF,KAAKnF,EAAE,IAAI,KAAK,EAAE,MAAM,CAACgF,IAAIhF,EAAE,GAAGiF,MAAMjF,EAAE,GAAGkF,OAAOlF,EAAE,GAAGmF,KAAKnF,EAAE,IAAI,KAAK,EAAE,MAAM,CAACgF,IAAIhF,EAAE,GAAGiF,MAAMjF,EAAE,GAAGkF,OAAOlF,EAAE,GAAGmF,KAAKnF,EAAE,IAAI,KAAK,EAAE,MAAM,CAACgF,IAAIhF,EAAE,GAAGiF,MAAMjF,EAAE,GAAGkF,OAAOlF,EAAE,GAAGmF,KAAKnF,EAAE,IAAI,QAAQ,MAAM,IAAIuiB,MAAM,mCAAmC3G,GAAG,EAAwlB5b,EAAEwQ,cAAzlB,SAAWoL,GAA8E,SAASC,EAAED,EAAE5b,GAAG,OAAOqD,iBAAiBuY,EAAE,MAAM48B,iBAAiBx4C,EAAE,CAA0E,SAAS/B,EAAE2d,GAAG,OAAOmZ,EAAE73B,KAAhG,SAAW0e,GAAG,OAAOC,EAAED,EAAE,YAAYC,EAAED,EAAE,cAAcC,EAAED,EAAE,aAAa,CAA6Bvb,CAAEub,GAAG,CAAC,IAAImZ,EAAE,gBAAgB,KAAKnZ,aAAarZ,aAAaqZ,aAAa2gkB,YAAY,MAAM,GAAG,IAAyB/ojB,EAA1W,SAASxzB,EAAE4b,EAAEC,GAAG,OAAO,OAAOD,EAAE5Y,WAAW6Y,EAAE7b,EAAE4b,EAAE5Y,WAAW6Y,EAAE7S,OAAO,CAAC4S,IAAI,CAA6Q5b,CAAE4b,EAAE5Y,WAAW,IAAQiJ,OAAO,SAAS2P,GAAG,OAAO3d,EAAE2d,EAAE,GAAG,MAAM,CAACzZ,QAAQ6G,OAAryF,SAAW4S,GAAG,GAAGtM,MAAMyb,QAAQnP,GAAG,CAAC,IAAI,IAAI5b,EAAE,EAAE6b,EAAEvM,MAAMsM,EAAExM,QAAQpP,EAAE4b,EAAExM,OAAOpP,IAAI6b,EAAE7b,GAAG4b,EAAE5b,GAAG,OAAO6b,CAAC,CAAC,OAAOvM,MAAMuwB,KAAKjkB,EAAE,CAAqrF+iE,CAAEnrD,GAAG,EAAiLxzB,EAAE80K,KAAK,SAASl5J,EAAE5b,GAAG,IAAI6b,EAAEb,MAAr4F,SAAWY,EAAE5b,GAAG,KAAK4b,aAAa5b,GAAG,MAAM,IAAIsb,UAAU,oCAAoC,EAA6yFjb,CAAE2a,KAAKY,GAAG5b,EAAEgN,QAAQ,SAAS4O,GAAGC,EAAED,EAAE+R,eAAe/R,CAAC,EAAE,EAAE5b,EAAE+mH,aAAa,WAAW,GAAG,oBAAoBtjH,SAAS,MAAM,GAAG,IAAI,IAAImY,EAAEnY,SAASskB,cAAc,OAAO/nB,EAAE,CAAC,YAAY,kBAAkB,aAAa,eAAe,eAAe6b,EAAE,EAAEA,EAAE7b,EAAEoP,SAASyM,EAAE,CAAC,IAAI8iE,EAAE3+E,EAAE6b,GAAG,QAAG,IAASD,EAAE8oB,MAAMi6C,GAAG,OAAOA,CAAC,CAAC,CAAvO,EAA0O,EAAE,SAAS/iE,EAAE5b,EAAE6b,GAAG,aAA2G/W,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,IAAK,IAAIN,EAAE,WAAW,SAASub,EAAEA,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE3+E,EAAE6b,GAAG8iE,EAAEj4C,WAAWi4C,EAAEj4C,aAAY,EAAGi4C,EAAE1sC,cAAa,EAAG,UAAU0sC,IAAIA,EAAEl4C,UAAS,GAAI3hC,OAAOwY,eAAe1B,EAAE+iE,EAAEn5E,IAAIm5E,EAAE,CAAC,CAAC,OAAO,SAAS3+E,EAAE6b,EAAE8iE,GAAG,OAAO9iE,GAAGD,EAAE5b,EAAEob,UAAUS,GAAG8iE,GAAG/iE,EAAE5b,EAAE2+E,GAAG3+E,CAAC,CAAC,CAA/O,GAAmP/B,EAAE,WAAW,SAAS2d,EAAE5b,EAAE6b,IAAla,SAAWD,EAAE5b,GAAG,KAAK4b,aAAa5b,GAAG,MAAM,IAAIsb,UAAU,oCAAoC,EAAwUqjE,CAAE3jE,KAAKY,GAAGZ,KAAK1Z,QAAQua,EAAEb,KAAKpQ,QAAQ5K,CAAC,CAAC,OAAOK,EAAEub,EAAE,CAAC,CAACpW,IAAI,OAAO7E,MAAM,WAAWqa,KAAK1Z,QAAQojC,MAAM8yB,QAAQ,OAAO,GAAG,CAAChyD,IAAI,OAAO7E,MAAM,WAAWqa,KAAK1Z,QAAQojC,MAAM8yB,QAAQ,MAAM,GAAG,CAAChyD,IAAI,aAAa7E,MAAM,WAAW,IAAIib,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE6L,KAAKk/rB,uBAAuBl/rB,KAAKpQ,QAAQ9F,OAAOC,OAAOiW,KAAKpQ,SAAS,CAAC,EAAEgR,GAAGZ,KAAKm/rB,mBAAmB,GAAG,CAAC30sB,IAAI,oBAAoB7E,MAAM,WAAW,GAAGqa,KAAKpQ,SAASoQ,KAAKpQ,QAAQ25B,OAAO,IAAI,IAAI3oB,KAAKZ,KAAKpQ,QAAQ25B,OAAOz/B,OAAOsW,UAAUxU,eAAeyU,KAAKL,KAAKpQ,QAAQ25B,OAAO3oB,IAAIZ,KAAK1Z,QAAQ4R,iBAAiB0I,EAAEZ,KAAKpQ,QAAQ25B,OAAO3oB,GAAG,GAAG,CAACpW,IAAI,uBAAuB7E,MAAM,WAAW,GAAGqa,KAAKpQ,SAASoQ,KAAKpQ,QAAQ25B,OAAO,IAAI,IAAI3oB,KAAKZ,KAAKpQ,QAAQ25B,OAAOz/B,OAAOsW,UAAUxU,eAAeyU,KAAKL,KAAKpQ,QAAQ25B,OAAO3oB,IAAIZ,KAAK1Z,QAAQ6R,oBAAoByI,EAAEZ,KAAKpQ,QAAQ25B,OAAO3oB,GAAG,GAAG,CAACpW,IAAI,UAAU7E,MAAM,WAAWqa,KAAKk/rB,uBAAuBl/rB,KAAK1Z,QAAQ,IAAI,KAAKsa,CAAC,CAAl8B,GAAs8B5b,EAAEw9F,QAAQv/F,EAAE2d,EAAEnc,QAAQO,EAAEw9F,OAAO,EAAE,SAAS5hF,EAAE5b,EAAE6b,GAAG,aAAovB/W,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,IAAK,IAAI6yB,EAAE,WAAW,SAAS5X,EAAEA,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE3+E,EAAE6b,GAAG8iE,EAAEj4C,WAAWi4C,EAAEj4C,aAAY,EAAGi4C,EAAE1sC,cAAa,EAAG,UAAU0sC,IAAIA,EAAEl4C,UAAS,GAAI3hC,OAAOwY,eAAe1B,EAAE+iE,EAAEn5E,IAAIm5E,EAAE,CAAC,CAAC,OAAO,SAAS3+E,EAAE6b,EAAE8iE,GAAG,OAAO9iE,GAAGD,EAAE5b,EAAEob,UAAUS,GAAG8iE,GAAG/iE,EAAE5b,EAAE2+E,GAAG3+E,CAAC,CAAC,CAA/O,GAA0P0+F,EAAxhC,SAAW9iF,GAAG,OAAOA,GAAGA,EAAE2hF,WAAW3hF,EAAE,CAAC4hF,QAAQ5hF,EAAE,CAAw+B+iE,CAAP9iE,EAAE,IAAUjb,EAAEib,EAAE,GAAGV,EAAE,SAASS,GAAG,SAAS5b,IAAI,IAAI4b,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,GAAp9B,SAAWyM,EAAE5b,GAAG,KAAK4b,aAAa5b,GAAG,MAAM,IAAIsb,UAAU,oCAAoC,CAAy3Brd,CAAE+c,KAAKhb,GAAG,IAAI6b,EAAt4B,SAAWD,EAAE5b,GAAG,IAAI4b,EAAE,MAAM,IAAIkmP,eAAe,6DAA6D,OAAO9hQ,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAE4b,EAAE5b,CAAC,CAAsuB+0B,CAAE/Z,MAAMhb,EAAEkb,WAAWpW,OAAO2rC,eAAezwC,IAAIqb,KAAKL,KAAKY,GAAE,EAAGhb,EAAEmnB,eAAe,0SAA0S,OAAM,EAAGnnB,EAAEqkH,UAAUppG,EAAEva,QAAQiX,cAAc,QAAQ,cAAcsD,EAAEjR,QAAQ09G,YAAY,IAAIzsG,EAAEjR,QAAQ09G,YAAY,cAAczsG,EAAEjR,QAAQ09G,YAAY,WAAWzsG,EAAEjR,QAAQ09G,YAAY,WAAW1sG,EAAErN,MAAMsN,EAAEkkC,OAAOlkC,CAAC,CAAC,OAApzC,SAAWD,EAAE5b,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIsb,UAAU,kEAAkEtb,GAAG4b,EAAER,UAAUtW,OAAO4W,OAAO1b,GAAGA,EAAEob,UAAU,CAACK,YAAY,CAAC9a,MAAMib,EAAE8qB,YAAW,EAAGD,UAAS,EAAGwL,cAAa,KAAMjyC,IAAI8E,OAAOmW,eAAenW,OAAOmW,eAAeW,EAAE5b,GAAG4b,EAAEV,UAAUlb,EAAE,CAAigC4U,CAAE5U,EAAE4b,GAAG4X,EAAExzB,EAAE,CAAC,CAACwF,IAAI,WAAW7E,MAAM,SAASib,GAAG,IAAIC,EAAEb,KAAKpQ,QAAQg0E,cAAc,EAAED,EAAE3jE,KAAKpQ,QAAQg0E,cAAc,EAAE3gF,OAAE,EAAO82B,OAAE,EAAOngB,OAAE,EAAO,OAAOoG,KAAKpQ,QAAQ9G,UAAU,KAAK9D,EAAE8D,SAASs2sB,SAASn8sB,EAAE2d,EAAEzW,KAAK4vB,EAAEnZ,EAAE5W,IAAI4P,EAAE,OAAO,MAAM,KAAK5U,EAAE8D,SAASu2sB,UAAUp8sB,EAAE2d,EAAEzW,KAAKyW,EAAEla,MAAMi9E,EAAE5pD,EAAEnZ,EAAE5W,IAAI4P,EAAE,QAAQ,MAAM,KAAK5U,EAAE8D,SAASuyoB,aAAap4oB,EAAE2d,EAAEzW,KAAKyW,EAAEla,MAAMi9E,EAAE5pD,EAAEnZ,EAAE5W,IAAI4W,EAAEha,OAAOia,EAAEjH,EAAE,SAAS,MAAM,KAAK5U,EAAE8D,SAASwyoB,YAAYr4oB,EAAE2d,EAAEzW,KAAK4vB,EAAEnZ,EAAE5W,IAAI4W,EAAEha,OAAOia,EAAEjH,EAAE,SAAS,MAAM,QAAQ,MAAM,IAAI2N,MAAM,qBAAqBvH,KAAKpQ,QAAQ9G,UAAUgB,OAAOC,OAAOiW,KAAK1Z,QAAQojC,MAAvtE,SAAW9oB,EAAE5b,EAAE6b,GAAG,OAAO7b,KAAK4b,EAAE9W,OAAOwY,eAAe1B,EAAE5b,EAAE,CAACW,MAAMkb,EAAE6qB,YAAW,EAAGuL,cAAa,EAAGxL,UAAS,IAAK7qB,EAAE5b,GAAG6b,EAAED,CAAC,CAAsmEvb,CAAE,CAACyD,SAASkX,KAAKpQ,QAAQsgI,MAAM,QAAQ,WAAW/lI,KAAKlH,EAAE,KAAK+G,IAAI+vB,EAAE,KAAKnzB,OAAOia,EAAE,KAAKna,MAAMi9E,EAAE,MAAM/9E,EAAEmmH,aAAa,UAAUnyG,EAAE,MAAMoG,KAAK4kC,MAAM,KAAK5/C,CAAC,CAA/3C,CAAi4C0+F,EAAElB,SAASx9F,EAAEw9F,QAAQriF,EAAEA,EAAErX,SAAS,IAAIlD,EAAEk0K,KAAK,CAAC,WAAW,YAAY,eAAe,gBAAgBl5J,EAAEnc,QAAQO,EAAEw9F,OAAO,EAAE,SAAS5hF,EAAE5b,EAAE6b,GAAG,aAA4nB/W,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,IAAK,IAAIiU,EAAE,WAAW,SAASgH,EAAEA,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE3+E,EAAE6b,GAAG8iE,EAAEj4C,WAAWi4C,EAAEj4C,aAAY,EAAGi4C,EAAE1sC,cAAa,EAAG,UAAU0sC,IAAIA,EAAEl4C,UAAS,GAAI3hC,OAAOwY,eAAe1B,EAAE+iE,EAAEn5E,IAAIm5E,EAAE,CAAC,CAAC,OAAO,SAAS3+E,EAAE6b,EAAE8iE,GAAG,OAAO9iE,GAAGD,EAAE5b,EAAEob,UAAUS,GAAG8iE,GAAG/iE,EAAE5b,EAAE2+E,GAAG3+E,CAAC,CAAC,CAA/O,GAA0P0c,EAAh6B,SAAWd,GAAG,OAAOA,GAAGA,EAAE2hF,WAAW3hF,EAAE,CAAC4hF,QAAQ5hF,EAAE,CAAg3B+iE,CAAP9iE,EAAE,IAAU6iF,EAAE7iF,EAAE,GAAGjb,EAAE,SAASgb,GAAG,SAAS5b,IAAI,IAAI4b,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,GAAp9B,SAAWyM,EAAE5b,GAAG,KAAK4b,aAAa5b,GAAG,MAAM,IAAIsb,UAAU,oCAAoC,CAAy3Bjb,CAAE2a,KAAKhb,GAAG,IAAI6b,EAAt4B,SAAWD,EAAE5b,GAAG,IAAI4b,EAAE,MAAM,IAAIkmP,eAAe,6DAA6D,OAAO9hQ,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAE4b,EAAE5b,CAAC,CAAsuB/B,CAAE+c,MAAMhb,EAAEkb,WAAWpW,OAAO2rC,eAAezwC,IAAIqb,KAAKL,KAAKY,EAAEnY,SAASskB,cAAc,SAAS,OAAM,EAAG22E,EAAEumB,UAAUppG,EAAEva,QAAQ,cAAcua,EAAEjR,QAAQ09G,YAAY,IAAIzsG,EAAEjR,QAAQ09G,YAAY,cAAczsG,EAAEjR,QAAQ09G,YAAY,cAAc1sG,EAAErN,MAAMsN,EAAEkkC,OAAOlkC,CAAC,CAAC,OAAl+B,SAAWD,EAAE5b,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIsb,UAAU,kEAAkEtb,GAAG4b,EAAER,UAAUtW,OAAO4W,OAAO1b,GAAGA,EAAEob,UAAU,CAACK,YAAY,CAAC9a,MAAMib,EAAE8qB,YAAW,EAAGD,UAAS,EAAGwL,cAAa,KAAMjyC,IAAI8E,OAAOmW,eAAenW,OAAOmW,eAAeW,EAAE5b,GAAG4b,EAAEV,UAAUlb,EAAE,CAA+qB+0B,CAAE/0B,EAAE4b,GAAGhH,EAAE5U,EAAE,CAAC,CAACwF,IAAI,WAAW7E,MAAM,SAASib,GAAG,IAAIC,GAAE,EAAG6iF,EAAE9+F,QAAQ6D,SAASiF,MAAMi2E,OAAE,EAAOt+E,OAAE,EAAOpC,OAAE,EAAO82B,OAAE,EAAO,OAAO/Z,KAAKpQ,QAAQ9G,UAAU,KAAK9D,EAAE8D,SAASy8J,IAAI5hF,EAAE,IAAIt+E,EAAE,IAAIpC,EAAE2d,EAAE5W,IAAI,KAAK+vB,EAAE,OAAO,MAAM,KAAK/0B,EAAE8D,SAAS8oQ,MAAMjuL,EAAE/iE,EAAEzW,KAAKyW,EAAEla,MAAM,KAAKrB,EAAEub,EAAE5W,IAAI,KAAK/G,EAAE2d,EAAEha,OAAO,KAAKmzB,EAAEv0B,KAAKkE,IAAImX,EAAE1W,KAAK0W,EAAEna,MAAMka,EAAEzW,KAAKyW,EAAEla,MAAMka,EAAE2spB,cAAc3spB,EAAEzW,KAAKyW,EAAEla,OAAO,KAAK,MAAM,KAAK1B,EAAE8D,SAASw2sB,OAAO37nB,EAAE,IAAIt+E,EAAEub,EAAE5W,IAAI4W,EAAEha,OAAO,KAAK3D,EAAEuC,KAAKmE,IAAIkX,EAAE7W,IAAI6W,EAAEja,OAAOga,EAAE5W,IAAI4W,EAAEha,OAAOga,EAAE4spB,eAAe5spB,EAAE5W,IAAI4W,EAAEha,QAAQ,KAAKmzB,EAAE,OAAO,MAAM,KAAK/0B,EAAE8D,SAAS6nQ,KAAKhtL,EAAE,IAAIt+E,EAAEub,EAAE5W,IAAI,KAAK/G,EAAE2d,EAAEha,OAAO,KAAKmzB,EAAEnZ,EAAEzW,KAAK,KAAK,MAAM,QAAQ,MAAM,IAAIod,MAAM,qBAAqBvH,KAAKpQ,QAAQ9G,UAAUgB,OAAOC,OAAOiW,KAAK1Z,QAAQojC,MAAM,CAAC5gC,SAASkX,KAAKpQ,QAAQsgI,MAAM,QAAQ,WAAW/lI,KAAKw5E,EAAE35E,IAAI3E,EAAEuB,OAAO3D,EAAEyD,MAAMqzB,IAAI/Z,KAAK4kC,MAAM,KAAK5/C,CAAC,CAA3nC,CAA6nC0c,EAAE8gF,SAASx9F,EAAEw9F,QAAQ58F,EAAEA,EAAEkD,SAAS,IAAI46F,EAAEo2E,KAAK,CAAC,MAAM,QAAQ,SAAS,SAASl5J,EAAEnc,QAAQO,EAAEw9F,OAAO,EAAE,SAAS5hF,EAAE5b,EAAE6b,GAAG,aAAa,SAAS8iE,EAAE/iE,GAAG,OAAOA,GAAGA,EAAE2hF,WAAW3hF,EAAE,CAAC4hF,QAAQ5hF,EAAE,CAA+F,SAAS3d,IAAI,GAAG+c,KAAKmtH,SAAShrH,EAAEgrH,OAAOoykB,UAAU,MAAM,IAAIh4rB,MAAM,iCAAiC,CAAC,SAASwS,IAAI,IAAInZ,EAAEZ,KAAK7Y,OAAO+Q,iBAAiB,SAAS8H,KAAKw/rB,eAAex/rB,KAAKxK,cAAcxD,QAAQ,SAAShN,GAAGA,EAAEkT,iBAAiB,SAAS0I,EAAE4+rB,cAAc,EAAE,CAAC,SAAS5lsB,IAAI,IAAIgH,EAAEZ,KAAK7Y,OAAOgR,oBAAoB,SAAS6H,KAAKw/rB,eAAex/rB,KAAKxK,cAAcxD,QAAQ,SAAShN,GAAGA,EAAEmT,oBAAoB,SAASyI,EAAE4+rB,cAAc,EAAE,CAAC11sB,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,IAAK,IAAI6yB,EAAE,WAAW,SAAS5X,EAAEA,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE3+E,EAAE6b,GAAG8iE,EAAEj4C,WAAWi4C,EAAEj4C,aAAY,EAAGi4C,EAAE1sC,cAAa,EAAG,UAAU0sC,IAAIA,EAAEl4C,UAAS,GAAI3hC,OAAOwY,eAAe1B,EAAE+iE,EAAEn5E,IAAIm5E,EAAE,CAAC,CAAC,OAAO,SAAS3+E,EAAE6b,EAAE8iE,GAAG,OAAO9iE,GAAGD,EAAE5b,EAAEob,UAAUS,GAAG8iE,GAAG/iE,EAAE5b,EAAE2+E,GAAG3+E,CAAC,CAAC,CAA/O,GAA0P0+F,EAAE/f,EAAP9iE,EAAE,IAAiBV,EAAEwjE,EAAP9iE,EAAE,IAAUxd,EAAEwd,EAAE,GAAGtd,EAAE,CAAC+pH,YAAY,OAAO4iB,OAAM,EAAGtsD,aAAa,EAAE5tE,SAAQ,EAAGxF,QAAQ,IAAI2/H,YAAW,GAAIhuH,EAAE,WAAW,SAASvB,IAAI,IAAI5b,EAAEgb,KAAKa,EAAE1M,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAEwvE,EAAExvE,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,GAAzkC,SAAWyM,EAAE5b,GAAG,KAAK4b,aAAa5b,GAAG,MAAM,IAAIsb,UAAU,oCAAoC,EAA8+Bjb,CAAE2a,KAAKY,GAAGC,aAAaxZ,QAAQ2Y,KAAKjS,OAAO8S,GAAG8iE,EAAE9iE,GAAI7K,SAAQ,EAAIgK,KAAK1Z,QAAQmC,SAASskB,cAAc,OAAO/M,KAAKmtH,OAAOvsH,EAAEusH,OAAOsykB,OAAOz/rB,KAAK1K,WAAWxL,OAAOC,OAAO,CAAC,EAAExG,EAAEogF,IAAI3jE,KAAK0/rB,iBAAiB1/rB,KAAKpQ,SAASnH,SAASiF,KAAKyiG,YAAYnwF,KAAK1Z,SAAS0Z,KAAKw/rB,cAAc,WAAW,OAAOx6sB,EAAEmoI,SAASvsH,EAAEusH,OAAOC,SAASpoI,EAAE8D,UAAU,EAAEkX,KAAKxK,eAAc,EAAGnS,EAAEmS,eAAewK,KAAKjS,QAAQgsB,EAAE1Z,KAAKL,MAAMA,KAAKpQ,QAAQoG,SAASgK,KAAK4kC,MAAM,CAAC,OAAOpsB,EAAE5X,EAAE,CAAC,CAACpW,IAAI,mBAAmB7E,MAAM,SAASib,GAAG,IAAI5b,EAAEgb,KAAKA,KAAK2/rB,WAAW,CAAC,IAAIj8mB,EAAElB,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,MAAMzK,SAAS46F,EAAElB,QAAQ15F,SAASy8J,KAAK3kJ,IAAI,IAAI8iF,EAAElB,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,QAAQzK,SAAS46F,EAAElB,QAAQ15F,SAAS8oQ,OAAOhxP,IAAI,IAAI8iF,EAAElB,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,SAASzK,SAAS46F,EAAElB,QAAQ15F,SAASw2sB,QAAQ1+rB,IAAI,IAAI8iF,EAAElB,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,OAAOzK,SAAS46F,EAAElB,QAAQ15F,SAAS6nQ,MAAM/vP,IAAI,IAAIT,EAAEqiF,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,WAAWzK,SAASqX,EAAEqiF,QAAQ15F,SAASs2sB,UAAUx+rB,IAAI,IAAIT,EAAEqiF,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,YAAYzK,SAASqX,EAAEqiF,QAAQ15F,SAASu2sB,WAAWz+rB,IAAI,IAAIT,EAAEqiF,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,eAAezK,SAASqX,EAAEqiF,QAAQ15F,SAASuyoB,cAAcz6nB,IAAI,IAAIT,EAAEqiF,QAAQ14F,OAAOC,OAAO,CAACwJ,KAAK,cAAczK,SAASqX,EAAEqiF,QAAQ15F,SAASwyoB,aAAa16nB,KAAKZ,KAAK2/rB,WAAW3tsB,QAAQ,SAAS4O,GAAG,OAAO5b,EAAEsB,QAAQ6pG,YAAYvvF,EAAEta,QAAQ,EAAE,GAAG,CAACkE,IAAI,YAAY7E,MAAM,WAAW,IAAIib,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG6L,KAAKjS,OAAO,OAAOiS,KAAKpQ,QAAQsgI,OAAM,EAAG7sI,EAAE27sB,gBAAgBp+rB,IAAG,EAAGvd,EAAEuB,QAAQgc,EAAE,GAAG,CAACpW,IAAI,WAAW7E,MAAM,WAAW,IAAIib,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG6L,KAAKjS,OAAO9K,EAAEod,KAAKL,MAAM,IAAIhb,EAAEgb,KAAKpQ,QAAQgwsB,cAAc/+rB,EAAEb,KAAKmknB,UAAUvjnB,GAAGZ,KAAKpQ,QAAQugI,WAAWrmI,OAAOC,OAAO8W,EAAE,CAAC7W,IAAI,EAAEG,KAAK,EAAEzD,MAAM,EAAEE,OAAO,KAAKia,EAAE7W,KAAKhF,EAAEgF,IAAI6W,EAAE1W,MAAMnF,EAAEmF,KAAK0W,EAAEna,OAAO1B,EAAEmF,KAAKnF,EAAEiF,MAAM4W,EAAEja,QAAQ5B,EAAEgF,IAAIhF,EAAEkF,QAAQ8V,KAAK6/rB,YAAYh/rB,EAAE7W,MAAMgW,KAAK6/rB,WAAW71sB,KAAK6W,EAAE1W,OAAO6V,KAAK6/rB,WAAW11sB,MAAM0W,EAAEna,QAAQsZ,KAAK6/rB,WAAWn5sB,OAAOma,EAAEja,SAASoZ,KAAK6/rB,WAAWj5sB,QAAQia,EAAE0spB,gBAAgBvtpB,KAAK6/rB,WAAWtyC,eAAe1spB,EAAEi/rB,cAAc9/rB,KAAK6/rB,WAAWC,cAAc9/rB,KAAK2/rB,WAAW3tsB,QAAQ,SAAS4O,GAAG,OAAOA,EAAE9X,SAAS+X,EAAE,GAAGb,KAAK6/rB,WAAWh/rB,EAAED,IAAIZ,KAAKjS,SAAS6L,EAAEyG,KAAKL,MAAMA,KAAKjS,OAAO6S,EAAEZ,KAAKxK,eAAc,EAAGnS,EAAEmS,eAAewK,KAAKjS,QAAQgsB,EAAE1Z,KAAKL,OAAO,GAAG,CAACxV,IAAI,OAAO7E,MAAM,WAAW1C,EAAEod,KAAKL,MAAMA,KAAK1Z,QAAQojC,MAAM8yB,QAAQ,QAAQx8C,KAAKmtH,OAAOvsH,EAAEusH,OAAOC,OAAO,GAAG,CAAC5iI,IAAI,OAAO7E,MAAM,WAAW1C,EAAEod,KAAKL,MAAMA,KAAK1Z,QAAQojC,MAAM8yB,QAAQ,OAAOx8C,KAAKmtH,OAAOvsH,EAAEusH,OAAOsykB,MAAM,GAAG,CAACj1sB,IAAI,aAAa7E,MAAM,WAAW,IAAIib,EAAEZ,KAAKhb,EAAEmP,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAElR,EAAEod,KAAKL,MAAMA,KAAKpQ,QAAQ9F,OAAOC,OAAOiW,KAAKpQ,SAAS,CAAC,EAAE5K,GAAGgb,KAAKpQ,QAAQgwsB,eAAc,EAAGv8sB,EAAE47sB,cAAcj/rB,KAAKpQ,QAAQY,SAASwP,KAAK2/rB,YAAY3/rB,KAAK2/rB,WAAW3tsB,QAAQ,SAAShN,GAAG,OAAOA,EAAEsQ,WAAWsL,EAAEhR,QAAQ,EAAE,GAAG,CAACpF,IAAI,UAAU7E,MAAM,WAAW,IAAIX,EAAEgb,KAAK/c,EAAEod,KAAKL,MAAMA,KAAK2/rB,WAAW3tsB,QAAQ,SAAS4O,GAAG,OAAOA,EAAE7J,SAAS,GAAGiJ,KAAKxK,cAAcxD,QAAQ,SAAS4O,GAAGA,EAAEzI,oBAAoB,SAASnT,EAAEw6sB,cAAc,GAAGr4sB,OAAOgR,oBAAoB,SAAS6H,KAAKw/rB,eAAe/2sB,SAASiF,KAAKwiG,YAAYlwF,KAAK1Z,SAAS0Z,KAAK1Z,QAAQ,KAAK0Z,KAAKmtH,OAAOvsH,EAAEusH,OAAOoykB,SAAS,KAAK3+rB,CAAC,CAAjrG,GAAqrG5b,EAAEw9F,QAAQrgF,EAAEA,EAAEgrH,OAAO,IAAI9pI,EAAEy2K,KAAK,CAAC,SAAS,UAAU,cAAcl5J,EAAEnc,QAAQO,EAAEw9F,OAAO,G,+BCE95c,IAAIo+P,EAAsB,6BACtB++R,EAAc,EAAQ,OACtB37S,EAAOl6U,OAAOyrC,yBACdjzB,EAAiBxY,OAAOwY,eACxBy9rB,EAAUz/rB,UACVykO,EAAWj7O,OAAO2rC,eAClBo0E,EAAQ,IAEZnoB,EAAOj9F,QAAU,WAChB,IAAKm8V,IAAwB77G,EAC5B,MAAM,IAAIg7d,EAAQ,6FAEnB,IAAI/pL,EAAW2pG,IACXz6lB,EAAQ6/M,EAASl7H,GACjBtxC,EAAayrQ,EAAK9+S,EAAO,SAQ7B,OAPKqzC,GAAcA,EAAW1kE,MAAQmihB,GACrC1zgB,EAAe4iB,EAAO,QAAS,CAC9B+R,cAAc,EACdvL,YAAY,EACZ73B,IAAKmihB,IAGAA,CACR,C,gDCpBA,Q,SAFiB,EAAK3wb,U,qCCFtB,IACQvlF,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAyuE,EAAU,EAAQ,OAClB4kT,EAAyB,EAAQ,OACjC34R,EAAM,EAAQ,OAed+ta,EAAgC,SAAUjlgB,GAW1C,SAASilgB,EAAelrgB,EAAImuN,EAAS6nK,EAASisU,EAAkBC,EAAsBj3L,EAAczigB,GAChG,IAAIrC,EAAQF,EAAO3D,KAAKL,KAAMjC,EAAImuN,EAAS6nK,IAAY/zX,KACnDkgsB,EAAoBD,EAAuB,EACzCD,EAAmBC,EACnB,EAuBN,OAtBAn2sB,OAAO0hC,iBAAiBtnB,EAAO,CAC3B87rB,iBAAkB,CACdt0qB,YAAY,EACZ/lC,MAAOq6sB,GAEXC,qBAAsB,CAClBv0qB,YAAY,EACZ/lC,MAAOs6sB,GAEXj3L,aAAc,CACVt9e,YAAY,EACZ/lC,MAAOqjhB,GAEXzigB,OAAQ,CACJmlB,YAAY,EACZ/lC,MAAO4gB,GAEX25rB,kBAAmB,CACfx0qB,YAAY,EACZ/lC,MAAOu6sB,KAGRh8rB,CACX,CAiDA,OAvFAnE,EAAUkpgB,EAAgBjlgB,GA8C1BilgB,EAAej2Q,GAAK,SAAU9mC,EAAS+mC,EAAYC,GAC/C,GAAID,EAAWl1P,KAAOm1P,EAAWn1P,GAC7B,MAAM,IAAIwJ,MAAM,2BAEpB,IAAI4rP,GAAkBD,EAAWplP,UAAYmlP,EAAWnlP,WAAa,IACjEulP,EAAqBH,EAAWllP,cAAgBilP,EAAWjlP,cAC3D+lX,EAAU5gI,EAAiB,EACxBE,EAAqBF,EAAkB,EACxC,EACF6sc,EAAmBx6sB,KAAKmE,IAAIupQ,EAAWhlP,YAAc+kP,EAAW/kP,YAAa,GAC7E+xrB,EAAuB/sc,EAAW68K,gBAAkB98K,EAAW88K,gBAC/Di5F,EAAe91Q,EAAW81Q,aAAczigB,EAAS2sP,EAAW3sP,OAChE,OAAO,IAAI0igB,EAAeh2Q,EAAWl1P,GAAImuN,EAAS6nK,EAASisU,EAAkBC,EAAsBj3L,EAAczigB,EACrH,EAMA0igB,EAAeh1I,UAAY,SAAUC,GACjC,IAAIisU,EAAYjsU,EAAQnhY,IAAI,SAAUkW,GAAU,OAAOA,EAAOgrX,WAAa,GAI3E,MAAO,CACHF,QAJU74R,EAAIilmB,EAAUptsB,IAAI,SAAUqtsB,GAAW,OAAOA,EAAQrsU,OAAS,IAKzEi1I,aAJe/5b,EAAQkxnB,EAAUptsB,IAAI,SAAUqtsB,GAAW,OAAOA,EAAQp3L,YAAc,IAKvFzigB,OAJS0oE,EAAQkxnB,EAAUptsB,IAAI,SAAUqtsB,GAAW,OAAOA,EAAQ75rB,MAAQ,IAMnF,EAKA0igB,EAAe7ogB,UAAU6zX,UAAY,WACjC,MAAO,CACHF,QAAS/zX,KAAK+zX,QACdi1I,aAA2C,iBAAtBhpgB,KAAKgpgB,aAA4BhpgB,KAAKgpgB,aAAehpgB,KAAKkgsB,kBAC/E35rB,OAAQvG,KAAKuG,OAErB,EACO0igB,CACX,CAzFmC,CAyFjCp1I,GACFnyS,EAAOj9F,QAAUwkhB,C,+BC1HjB,IAAIv/a,EAAI,EAAQ,OACZ2pB,EAAW,EAAQ,OACnB6N,EAAoB,EAAQ,OAC5B49M,EAAiB,EAAQ,OACzBE,EAA2B,EAAQ,OAsBvCt1O,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM20L,MAAO,EAAGh5G,OArBhC,EAAQ,MAEMof,CAAM,WAC9B,OAAoD,aAA7C,GAAGnsH,KAAKuM,KAAK,CAAEjM,OAAQ,YAAe,EAC/C,KAIqC,WACnC,IAEEtK,OAAOwY,eAAe,GAAI,SAAU,CAAEmpB,UAAU,IAAS33B,MAC3D,CAAE,MAAOmW,GACP,OAAOA,aAAiB3J,SAC1B,CACF,CAEqC2+T,IAIyB,CAE5DnrU,KAAM,SAAckf,GAClB,IAAI8H,EAAIu4F,EAASrzG,MACbvQ,EAAMyxH,EAAkBpmG,GACxB2kM,EAAWtrN,UAAUC,OACzB4qU,EAAyBvvU,EAAMgwN,GAC/B,IAAK,IAAIp6N,EAAI,EAAGA,EAAIo6N,EAAUp6N,IAC5By1B,EAAErrB,GAAO0E,UAAU9O,GACnBoK,IAGF,OADAqvU,EAAehkT,EAAGrrB,GACXA,CACT,G,+BCvCF,IAAI4yF,EAAa,EAAQ,OAEzBX,EAAOj9F,QAAU,SAAUunQ,EAAaq0c,GACtC,IAAI14lB,EAActlB,EAAW2pK,GACzBihV,EAAYtle,GAAeA,EAAYvnG,UAC3C,OAAO6skB,GAAaA,EAAUozH,EAChC,C,+BCNA,IAAI7+lB,EAAkB,EAAQ,OAC1B2zX,EAAY,EAAQ,OAEpBqyI,EAAWhmgB,EAAgB,YAC3Bu2H,EAAiBzjO,MAAM8L,UAG3BshF,EAAOj9F,QAAU,SAAUg9G,GACzB,YAAc3qG,IAAP2qG,IAAqB0zX,EAAU7ge,QAAUmtG,GAAMs2H,EAAeyvY,KAAc/lgB,EACrF,C,+BCTA,IAAIme,EAAc,EAAQ,OACtBvf,EAAc,EAAQ,OACtBhgG,EAAO,EAAQ,OACf4/G,EAAQ,EAAQ,OAChB0pG,EAAa,EAAQ,OACrBymZ,EAA8B,EAAQ,OACtCkwF,EAA6B,EAAQ,OACrCjtlB,EAAW,EAAQ,OACnB4N,EAAgB,EAAQ,OAGxBs/kB,EAAUz2sB,OAAOC,OAEjBuY,EAAiBxY,OAAOwY,eACxBtU,EAASqyG,EAAY,GAAGryG,QAI5B0zF,EAAOj9F,SAAW87sB,GAAWtglB,EAAM,WAEjC,GAAIL,GAQiB,IARF2glB,EAAQ,CAAE1msB,EAAG,GAAK0msB,EAAQj+rB,EAAe,CAAC,EAAG,IAAK,CACnEopB,YAAY,EACZ73B,IAAK,WACHyO,EAAetC,KAAM,IAAK,CACxBra,MAAO,EACP+lC,YAAY,GAEhB,IACE,CAAE7xB,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAIif,EAAI,CAAC,EACLC,EAAI,CAAC,EAELk8F,EAASzwH,OAAO,oBAChBg8sB,EAAW,uBAIf,OAHA1nrB,EAAEm8F,GAAU,EAEZurlB,EAASt/sB,MAAM,IAAI8Q,QAAQ,SAAU0wK,GAAO3pJ,EAAE2pJ,GAAOA,CAAK,GACxB,IAA3B69hB,EAAQ,CAAC,EAAGznrB,GAAGm8F,IAAiB00G,EAAW42e,EAAQ,CAAC,EAAGxnrB,IAAI7a,KAAK,MAAQsisB,CACjF,GAAK,SAAgBzysB,EAAQwjB,GAM3B,IALA,IAAImJ,EAAI24F,EAAStlH,GACbmgP,EAAkB/5O,UAAUC,OAC5BoC,EAAQ,EACR0rF,EAAwBkuhB,EAA4B1umB,EACpDygF,EAAuBm+mB,EAA2B5+rB,EAC/CwsO,EAAkB13O,GAMvB,IALA,IAIIhM,EAJAmwB,EAAIsmG,EAAc9sH,UAAUqC,MAC5BnM,EAAO63F,EAAwBl0F,EAAO27N,EAAWhvM,GAAIunE,EAAsBvnE,IAAMgvM,EAAWhvM,GAC5FvmB,EAAS/J,EAAK+J,OACd4xB,EAAI,EAED5xB,EAAS4xB,GACdx7B,EAAMH,EAAK27B,KACN45F,IAAev/G,EAAK8hF,EAAsBxnE,EAAGnwB,KAAMkwB,EAAElwB,GAAOmwB,EAAEnwB,IAErE,OAAOkwB,CACX,EAAI6lrB,C,+BCvDJz2sB,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAErB,IAAIg8sB,EAAe,EAAQ,OAE3B,SAAS1nlB,EAAQzmG,GAAmV,OAAtOymG,EAArD,mBAAXv0H,QAAoD,iBAApBA,OAAO0d,SAAmC,SAAiBoQ,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX9tB,QAAyB8tB,EAAI7R,cAAgBjc,QAAU8tB,IAAQ9tB,OAAO4b,UAAY,gBAAkBkS,CAAK,EAAYymG,EAAQzmG,EAAM,CAyEzX7tB,EAAiB,QAvEK,SAAyB4iqB,GAC7C,IAAIxzQ,EAAQwzQ,EAAUxzQ,MAClBb,EAAOq0Q,EAAUr0Q,KAMjB0tT,EAAY,SAAmB/wsB,GACjC,IAL+BhK,EAK3BitU,EAASogF,EAAKa,EAAMlkZ,EAAO,CAAC,YAEhC,GANgB,OADehK,EAOjBitU,IAN6B,WAAnB75M,EAAQpzH,KAAuBkuZ,EAAMluZ,EAAO,CAAC,eAAgBkuZ,EAAMluZ,EAAO,CAAC,WAOjG,KAAM,iFAGR,OAAOitU,CACT,EAEI+tY,EAAc,SAAqBhxsB,GACrC,OAAOqjZ,EAAKa,EAAM6sT,EAAU/wsB,GAAQ,CAAC,aACvC,EAwCA,MAAO,CACLgxsB,YAAaA,EACbhN,UAxCc,SAAmBhksB,GACjC,OAAOqjZ,EAAKa,EAAM6sT,EAAU/wsB,GAAQ,CAAC,WACvC,EAuCE+wsB,UAAWA,EACXE,UAtCc,SAAmBjxsB,GACjC,OAAOqjZ,EAAKa,EAAM6sT,EAAU/wsB,GAAQ,CAAC,WAAY,WACnD,EAqCEu+Q,QAnCY,SAAiBv+Q,GAC7B,OAAOqjZ,EAAKa,EAAM6sT,EAAU/wsB,GAAQ,CAAC,WAAY,SACnD,EAkCEkxsB,oBA7BwB,SAA6Bh4nB,GACrD,IAAIi4nB,EAAe,KACfC,EAAY,KAChB,OAAO,SAAUpxsB,GACf,IACI86H,GADOk2kB,EAAYhxsB,IAAU,CAAC,GACd86H,SAEpB,GAAIA,IAAaq2kB,EACf,OAAOC,EAGTD,EAAer2kB,EACf,IAAIzmI,GAAQ,EAAIy8sB,EAAaO,WAAWv2kB,EAAU5hD,GAOlD,OALK7kF,GAAU+8sB,GAAa/8sB,EAAMypG,MAAQszmB,EAAUtzmB,KACjDzpG,EAAMi9sB,UAAYF,EAAUE,UAC7BF,EAAY/8sB,GAGP+8sB,CACT,CACF,EAUF,C,6DC9Ee,MAAMG,EACjB,WAAAzgsB,CAAY1K,EAAO,GAAI2pC,EAAUsvQ,GAK7B,GAJAhvS,KAAKjK,KAAOA,EACZiK,KAAK5L,OAAS4L,KAAKjK,KAAK3B,OACxB4L,KAAK0/B,QAAUA,EAEX1/B,KAAK5L,OAAS,EACd,IAAK,IAAI/O,GAAK2a,KAAK5L,QAAU,GAAK,EAAG/O,GAAK,EAAGA,IAAK2a,KAAKg7Y,MAAM31Z,EAErE,CAEA,IAAAyO,CAAKkf,GACDhT,KAAKjK,KAAKjC,KAAKkf,GACfhT,KAAK5L,SACL4L,KAAKi7Y,IAAIj7Y,KAAK5L,OAAS,EAC3B,CAEA,GAAAiO,GACI,GAAoB,IAAhBrC,KAAK5L,OAAc,OAEvB,MAAMpK,EAAMgW,KAAKjK,KAAK,GAChB7L,EAAS8V,KAAKjK,KAAKsM,MAQzB,OAPArC,KAAK5L,SAED4L,KAAK5L,OAAS,IACd4L,KAAKjK,KAAK,GAAK7L,EACf8V,KAAKg7Y,MAAM,IAGRhxZ,CACX,CAEA,IAAA2pS,GACI,OAAO3zR,KAAKjK,KAAK,EACrB,CAEA,GAAAklZ,CAAI1oY,GACA,MAAM,KAACxc,EAAI,QAAE2pC,GAAW1/B,KAClBgT,EAAOjd,EAAKwc,GAElB,KAAOA,EAAM,GAAG,CACZ,MAAM9qB,EAAU8qB,EAAM,GAAM,EACtB1c,EAAUE,EAAKtO,GACrB,GAAIi4C,EAAQ1sB,EAAMnd,IAAY,EAAG,MACjCE,EAAKwc,GAAO1c,EACZ0c,EAAM9qB,CACV,CAEAsO,EAAKwc,GAAOS,CAChB,CAEA,KAAAgoY,CAAMzoY,GACF,MAAM,KAACxc,EAAI,QAAE2pC,GAAW1/B,KAClBmhsB,EAAanhsB,KAAK5L,QAAU,EAC5B4e,EAAOjd,EAAKwc,GAElB,KAAOA,EAAM4urB,GAAY,CACrB,IAAIh3sB,EAAoB,GAAZooB,GAAO,GACfg9d,EAAOx5e,EAAK5L,GAChB,MAAMF,EAAQE,EAAO,EAMrB,GAJIF,EAAQ+V,KAAK5L,QAAUsrC,EAAQ3pC,EAAK9L,GAAQslf,GAAQ,IACpDplf,EAAOF,EACPslf,EAAOx5e,EAAK9L,IAEZy1C,EAAQ6vc,EAAMv8d,IAAS,EAAG,MAE9Bjd,EAAKwc,GAAOg9d,EACZh9d,EAAMpoB,CACV,CAEA4L,EAAKwc,GAAOS,CAChB,EAGJ,SAASg8R,EAAep1S,EAAGC,GACvB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,CACpC,C,+BC7EA,IAAItL,EAAY,EAAQ,OAExBmzF,EAAOj9F,QAAU,oBAAoBvC,KAAKqM,IAA+B,oBAAV6ysB,M,+BCC/Dt3sB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAHtD,SAAkBxC,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CAOAq+N,CAAS,EAAQ,O,oFCWF,SAAS8tc,EAAUlnkB,EAAWC,IAC3C,OAAa,EAAGlxG,WAChB,IAAIgpD,GAAS,OAAUkoD,GACvB,OAAO,OAAUD,GAAYjoD,EAC/B,C,6BCxBArzD,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ2f,WAAQ,EAChB,IAAIA,EAAuB,WACvB,SAASA,IAELpE,KAAKguN,UAAOl3N,EACZkJ,KAAKvT,OACT,CAiBA,OAhBA2X,EAAMhE,UAAU3T,MAAQ,WAEpB,OADAuT,KAAKwjC,OAAS36B,KAAKC,MACZ9I,IACX,EACAoE,EAAMhE,UAAUsF,KAAO,WAEnB,OADA1F,KAAKguN,KAAOnlN,KAAKC,MACV9I,IACX,EACAoE,EAAMhE,UAAU2F,mBAAqB,WACjC,MAAO,CACHtZ,MAAOuT,KAAKwjC,OACZ92C,IAAKsT,KAAKguN,KAEV9oN,cAAwBpO,IAAdkJ,KAAKguN,UAAqBl3N,EAAYkJ,KAAKguN,KAAOhuN,KAAKwjC,OAEzE,EACOp/B,CACX,CAvB0B,GAwB1B3f,EAAQ2f,MAAQA,C,uICWZy0O,GA5BQ,WAKH,SAKE,SAKM,SAKJ,SAQY,aAAiB,SAAUztP,EAAMynH,GACxD,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBqqN,EAAQ/oU,EAAK+oU,MACbj7O,EAAU9tF,EAAK8tF,QACfmonB,EAAgBj2sB,EAAKi2sB,cACrBxiT,EAAYzzZ,EAAKyzZ,UACjBzsX,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,QAAS,UAAW,gBAAiB,cAE/G0nH,GAAW,QAAmBA,EAAU,OACxC,IAAIzF,EAAU,IAAW8mN,GAASrhN,EAAW,SAAU55B,GAAW,UAAWmonB,GAAiB,iBAAkBxiT,GAAa/rS,EAAW,cACxI,OAAoB,gBAAoB,OAAO,OAAS,CAEtDD,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAWuD,KAErC,IACAwrI,EAAMxwD,YAAc,QACpBwwD,EAAMx/B,aAzBa,CACjB86G,OAAO,EACPj7O,SAAS,EACTmonB,eAAe,EACfxiT,WAAW,GAsBb,S,+BCvDEn9T,EAAOj9F,QAAU,EAAjB,M,+BCDF,IAAI68sB,EAAS,EAAQ,OAerB,SAAS1jgB,EAAKK,GACV,IAAI9qM,EAAS,CAAC5N,IAAUA,KAAU,KAAW,KAe7C,OAdA+7sB,EAAOz4e,UAAU5qB,EAAS,SAAUxmC,GAC5BtkK,EAAO,GAAKskK,EAAM,KAClBtkK,EAAO,GAAKskK,EAAM,IAElBtkK,EAAO,GAAKskK,EAAM,KAClBtkK,EAAO,GAAKskK,EAAM,IAElBtkK,EAAO,GAAKskK,EAAM,KAClBtkK,EAAO,GAAKskK,EAAM,IAElBtkK,EAAO,GAAKskK,EAAM,KAClBtkK,EAAO,GAAKskK,EAAM,GAE1B,GACOtkK,CACX,CACAyqM,EAAc,QAAIA,EAClBn5M,EAAQ,EAAUm5M,C,kBCpClB,IAAI38F,EAAa,EAAQ,OACrBsnH,EAAe,EAAQ,OA2B3B7mI,EAAOj9F,QALP,SAAkBkB,GAChB,MAAuB,iBAATA,GACX4iO,EAAa5iO,IArBF,mBAqBYs7G,EAAWt7G,EACvC,C,qCCzBA,IAAI85P,EAAwBz/O,MAAQA,KAAKy/O,sBAAyB,SAAUC,EAAQnxM,GAEhF,OADIzkD,OAAOwY,eAAkBxY,OAAOwY,eAAeo9O,EAAQ,MAAO,CAAE/5P,MAAO4oD,IAAiBmxM,EAAOnxM,IAAMA,EAClGmxM,CACX,EACI3+O,EAAaf,MAAQA,KAAKe,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIvK,UAAU,SAAUC,EAASwK,GAC/C,SAASC,EAAU1b,GAAS,IAAM2b,EAAKH,EAAUrZ,KAAKnC,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC1F,SAASuc,EAAS5b,GAAS,IAAM2b,EAAKH,EAAiB,MAAExb,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC7F,SAASsc,EAAKnO,GAJlB,IAAexN,EAIawN,EAAOqO,KAAO5K,EAAQzD,EAAOxN,QAJ1CA,EAIyDwN,EAAOxN,MAJhDA,aAAiBub,EAAIvb,EAAQ,IAAIub,EAAE,SAAUtK,GAAWA,EAAQjR,EAAQ,IAIjBkR,KAAKwK,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKnZ,OAClE,EACJ,EACI2Z,EAAezB,MAAQA,KAAKyB,aAAgB,SAAUT,EAAStT,GAC/D,IAAsGgU,EAAG/d,EAAGid,EAAGe,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmB,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAE7Z,KAAMma,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WAAa,OAAOlC,IAAM,GAAI2B,EACvJ,SAASM,EAAKpB,GAAK,OAAO,SAAUsB,GAAK,OACzC,SAAcC,GACV,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOqB,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxB,EAAIwB,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAElc,MAAOyc,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGI,EAAEC,QAASle,EAAIye,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcxB,GAAMwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAM,CAAEgB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIA,EAAIwB,EAAI,KAAO,CACpE,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIgB,EAAEI,IAAIlO,KAAKsO,GAAK,KAAO,CAC9DxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC5B,CAAE,MAAO5c,GAAKod,EAAK,CAAC,EAAGpd,GAAIrB,EAAI,CAAG,CAAE,QAAU+d,EAAId,EAAI,CAAG,CACzD,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,EAC9E,CAtBgDF,CAAK,CAACT,EAAGsB,GAAK,CAAG,CAuBrE,EACArY,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQi3U,yBAAsB,EAC9B,IAoHI97E,EApHA2hd,EAAuB,EAAQ,OAC/Bzhd,EAAgB,EAAQ,OACxB0hd,EAAwB,EAAQ,OAChCC,EAAyB,EAAQ,MACjCC,EAA6B,EAAQ,OACrCC,EAA0B,EAAQ,OA8GtCl9sB,EAAQi3U,oBA7GR,SAA6BkmY,EAAgBzhd,EAAiB0hd,EAAkBC,EAAoBz0qB,EAAQ00qB,EAAWnkoB,GACnH,IAAIokoB,GAA2B,EAC3B5hd,GAAqB,EAAIN,EAAcO,MAAMT,IAAqBA,EAAmBH,EAAqB,CAAC,oNAAqN,CAAC,uNACjUc,EAAclzN,EAAO3mC,MAAO85P,EAAenzN,EAAOzmC,OAClD4c,EAAK+9rB,EAAqBU,iBAAiBH,EAAmBI,iBAAkBC,EAAoB3+rB,EAAG,GAAI4+rB,EAAqB5+rB,EAAG,GACnIu8O,EAAK1yN,EAAOC,WAAW,UACvBozN,GAAe,EAAIZ,EAAca,eAAeZ,EAAIA,EAAGa,cAAeR,GACtEiid,EAActid,EAAGuid,oBACrBvid,EAAGwid,gBAAgBF,GACnB,IAAIrid,EAAiBD,EAAGyid,eACxBzid,EAAG0id,WAAW1id,EAAG2id,aAAc1id,GAC/BD,EAAG4id,WAAW5id,EAAG2id,aAAc,IAAI70T,aAAa,EAAE,GAAM,EAAK,GAAM,GAAM,EAAK,EAAK,EAAK,IAAO9tJ,EAAG6id,aAClG,IAAI3id,EAAiBF,EAAGyid,eACxBzid,EAAG0id,WAAW1id,EAAG2id,aAAczid,GAC/BF,EAAG4id,WAAW5id,EAAG2id,aAAc,IAAI70T,aAAa,CAAC,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,IAAO9tJ,EAAG6id,aAK9F,IAAIC,EAAoB9id,EAAGiC,gBAC3BjC,EAAG8C,YAAY9C,EAAGuC,WAAYugd,GAC9B9id,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGgjd,eAAgBhjd,EAAGijd,eACtDjjd,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGkjd,eAAgBljd,EAAGijd,eACtDjjd,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGmjd,mBAAoBnjd,EAAGw0O,SAC1Dx0O,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGojd,mBAAoBpjd,EAAGw0O,SAE1D,IAAI6uO,GAAsB,EAAItjd,EAAckC,eAAejC,EAAIA,EAAGkC,MAAOkgd,EAAmBC,GACxFlid,GAAoB,EAAIJ,EAAckC,eAAejC,EAAIA,EAAGkC,MAAO1B,EAAaC,GAChF6id,GAAwB,EAAI1B,EAAwB2B,4BAA4Bvjd,EAAIW,EAAcV,EAAgBC,EAAgB6hd,EAAoBsB,GACtJG,GAA2B,EAAI7B,EAA2B8B,+BAA+Bzjd,EAAIW,EAAcV,EAAgBC,EAAgBmjd,EAAqBtB,EAAoB5hd,EAAmB7yN,GACvMo2qB,EAA4C,SAA1B5B,EAAiB7xrB,MACjC,EAAIwxrB,EAAsBxtO,0BAA0Bj0O,EAAIW,EAAcV,EAAgBC,EAAgBC,EAAmB7yN,IACzH,EAAIo0qB,EAAuB9hd,2BAA2BI,EAAIC,EAAgBC,EAAgBC,EAAmBC,EAAiB9yN,GA2EpI,MAAO,CAAEgxC,OA3DT,SAAgBqloB,GACZ,OAAO3isB,EAAUf,UAAM,OAAQ,EAAQ,WACnC,OAAOyB,EAAYzB,KAAM,SAAUwD,GAW/B,OAVAu+rB,EAAUt1sB,MAAM,yBACZu1sB,GACAqB,EAAsBhloB,OAAOqloB,GAEjCH,EAAyBlloB,SACzBoloB,EAAgBploB,SACZT,IACAokoB,GAA4BA,GAEhCD,EAAUr1sB,IAAI,yBACP,CAAC,EACZ,EACJ,EACJ,EA2CyBi3sB,iBA1EzB,WACI,OAAO5isB,EAAUf,UAAM,OAAQ,EAAQ,WACnC,OAAOyB,EAAYzB,KAAM,SAAUwD,GAS/B,OARAu8O,EAAG6jd,WAAW,EAAG,EAAG,EAAG,GACvB7jd,EAAGhlL,MAAMglL,EAAG8jd,kBACZ9jd,EAAG4C,cAAc5C,EAAG+jd,UACpB/jd,EAAG8C,YAAY9C,EAAGuC,WAAYugd,GAG9B9id,EAAGgkd,WAAWhkd,EAAGuC,WAAY,EAAGvC,EAAGwC,KAAMxC,EAAGwC,KAAMxC,EAAGyC,cAAeo/c,EAAeoC,aACnFjkd,EAAGwid,gBAAgBF,GACZ,CAAC,EACZ,EACJ,EACJ,EA4D6D4B,2BA1C7D,SAAoCC,GAChC,IAAI1gd,EAAY0gd,EAAqB1gd,UAAWJ,EAAW8gd,EAAqB9gd,SAAUE,EAAgB4gd,EAAqB5gd,cAAe9/O,EAAK0gsB,EAAqBC,qBAAsBA,OAA8B,IAAP3gsB,EAAgB,CAAC,EAAIA,EACtO4gsB,EAAaD,EAAqBC,WAAYC,EAAaF,EAAqBE,WAYpF,GAX0B,iBAAfD,GACPb,EAAyBe,iBAAiBF,GAEpB,iBAAfC,GACPd,EAAyBgB,iBAAiBF,GAE1C/vsB,MAAMyb,QAAQqzO,KACgB,SAA1By+c,EAAiB7xrB,MAA6C,UAA1B6xrB,EAAiB7xrB,MACrDyzrB,EAAgBtgd,eAAeC,IAGT,UAA1By+c,EAAiB7xrB,KAAkB,CACnC,IAAIw0rB,EAAuBf,EACE,iBAAlBngd,GACPkhd,EAAqBnhd,oBAAoBC,GAEpB,iBAAdE,GACPghd,EAAqBjhd,gBAAgBC,EAE7C,KACmC,SAA1Bq+c,EAAiB7xrB,QAElBw0rB,EAAuBf,GACNtgd,eAAe,CAAC,EAAG,QACxCqhd,EAAqBnhd,oBAAoB,GAEjD,EAaqHI,QAZrH,WACIggd,EAAgBhgd,UAChB8/c,EAAyB9/c,UACzB4/c,EAAsB5/c,UACtB1D,EAAG2D,cAAcxD,GACjBH,EAAG2D,cAAc0/c,GACjBrjd,EAAG2D,cAAcm/c,GACjB9id,EAAG0kd,aAAaxkd,GAChBF,EAAG0kd,aAAazkd,GAChBD,EAAG2kd,kBAAkBrC,GACrBtid,EAAG6D,aAAalD,EACpB,EAEJ,C,yBClJQ,SAAW7/P,GAAU,aAezB,SAASotC,EAAUgV,EAAQw+E,EAAej3H,GACtC,IAAI2I,EAAS8vC,EAAS,IACtB,OAAQz4C,GACJ,IAAK,KAQD,OANI2I,GADW,IAAX8vC,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI9vC,GADW,IAAX8vC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,MAAuB,YAC3B,IAAK,KAQD,OANI9vC,GADW,IAAX8vC,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJI9vC,GADW,IAAX8vC,EACU,MAEA,QAGlB,IAAK,KAQD,OANI9vC,GADW,IAAX8vC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI9vC,GADW,IAAX8vC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAI1B,CAESpiD,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,8DAA8DD,MAC1D,KAERghI,kBAAkB,EAClB9gI,SAAU,4DAA4DF,MAClE,KAEJG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACA36F,QAAS,eACTC,SAAU,WACN,OAAQod,KAAKs9E,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uBAEnB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,cACHC,GAAI+qC,EACJ9qC,EAtIR,SAA6B8/C,EAAQw+E,EAAej3H,EAAKk3H,GACrD,GACS,MADDl3H,EAEA,OAAOi3H,EACD,eACAC,EACE,eACA,cAEpB,EA8HQt+H,GAAI6qC,EACJ5qC,EAAG4qC,EACH3qC,GAAI2qC,EACJ1qC,EAAG,MACHC,GAAIyqC,EACJxqC,EAAG,SACHC,GAAIuqC,EACJtqC,EAAG,SACHC,GAAIqqC,GAER/pC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAlKyCC,CAAQ,EAAQ,O,+BCPlD,EAAQ,MAIhBmlG,CAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMs2Y,iBAAiB,EAAMC,aAAa,GAAQ,CAC5E3oiB,kBAAmB,kB,qCCLrB,IACQn4E,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACIxhB,EAAe,EAAQ,OACvBuhsB,EAAmB,EAAQ,OAC3BC,EAA8B,EAAQ,OACtCC,EAAkB,EAAQ,OAC1BC,EAA6B,EAAQ,OACrCC,EAAmB,EAAQ,OAC3B3uY,EAA8B,EAAQ,OACtCjiN,EAAO,EAAQ,OACfpwG,EAAa,EA8BbihsB,EAA6B,SAAUhhsB,GAOvC,SAASghsB,EAAY3uY,EAAWzmU,GAC5B,IAAIsU,EAAQF,EAAO3D,KAAKL,OAASA,KAU7BskK,EA6ZZ,SAAyBggL,GACrB,IAAI2gX,EAAgB3gX,EAAOvxV,IAAI,SAAUuZ,GAAS,MAAO,CAACA,EAAMvO,GAAIuO,EAAQ,GACxE44rB,EAAqBD,EAAch0sB,OAAO,SAAUipQ,GAAY,MAA4B,UAArBA,EAAS,GAAGptP,IAAkB,GACrGq4rB,EAAqBF,EAAch0sB,OAAO,SAAUipQ,GAAY,MAA4B,UAArBA,EAAS,GAAGptP,IAAkB,GAEzG,MAAO,CACHu3U,YAAa6gX,EACb1gX,WAHoBygX,EAAch0sB,OAAO,SAAUipQ,GAAY,MAA4B,SAArBA,EAAS,GAAGptP,IAAiB,GAInGw3U,OAAQ2gX,EACR1gX,YAAa4gX,EAErB,CAxasBC,EATdx1sB,EAAU9F,OAAOC,OAAO,CACpB46sB,iBAAkBA,EAClBC,4BAA6BA,EAC7BC,gBAAiBA,EACjBC,2BAA4BA,EAC5BC,iBAAkBA,EAClB3uY,4BAA6BA,EAC7BkuB,OAAQ,IACT10V,IACmC00V,QAClCr+V,EAAM2J,EAAQ3J,IAAImyN,UAAU,UAAWl0M,GACvCmgV,EAAc,IAAIrxV,IAAIsxK,EAAQ+/K,aAC9BG,EAAa,IAAIxxV,IAAIsxK,EAAQkgL,YAC7BF,EAAS,IAAItxV,IAAIsxK,EAAQggL,QACzBC,EAAc,IAAIvxV,IAAIsxK,EAAQigL,aAgHlC,OA/GAz6V,OAAO0hC,iBAAiBtnB,EAAO,CAC3BmhsB,kBAAmB,CACf1/sB,MAAOiK,EAAQ+0sB,kBAEnBW,6BAA8B,CAC1B3/sB,MAAOiK,EAAQg1sB,6BAEnBW,iBAAkB,CACd5/sB,MAAOiK,EAAQi1sB,iBAEnBW,4BAA6B,CACzB7/sB,MAAOiK,EAAQk1sB,4BAEnBW,kBAAmB,CACf9/sB,MAAOiK,EAAQm1sB,kBAEnBW,6BAA8B,CAC1B//sB,MAAOiK,EAAQwmU,6BAEnBuvY,aAAc,CACVhgtB,MAAO0+V,GAEXuhX,YAAa,CACTjgtB,MAAO6+V,GAEXh/U,YAAa,CACT7f,QAASoe,GAEbg5f,6BAA8B,CAC1Bp3gB,MAAOiK,EAAQotgB,6BAEnBC,wBAAyB,CACrBt3gB,MAAOiK,EAAQstgB,wBAEnB93f,KAAM,CACFzf,MAAOM,GAEXm3gB,WAAY,CACRz3gB,MAAO0wU,GAEXgyM,QAAS,CACL1ihB,MAAO2+V,GAEXuhX,sBAAuB,CACnBlgtB,MAAO,IAAIqN,KAEf8ysB,iCAAkC,CAC9BngtB,MAAO,IAAIqN,KAEf+ysB,qCAAsC,CAClCpgtB,MAAO,IAAIqN,KAEfgzsB,aAAc,CACVrgtB,MAAO4+V,GAEXF,YAAa,CACT34T,YAAY,EACZ/lC,MAAO,IAAIqN,KAEfwxV,WAAY,CACR94T,YAAY,EACZ/lC,MAAO,IAAIqN,KAEfusN,SAAU,CACN7zL,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU92G,QACrB,GAEJ0mf,oBAAqB,CACjBv6qB,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU4vY,mBACrB,GAEJC,oBAAqB,CACjBx6qB,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU6vY,mBACrB,GAEJ5vhB,IAAK,CACD5qJ,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU//I,GACrB,GAEJ3mL,MAAO,CACH+7B,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU1mU,KACrB,GAEJ20V,OAAQ,CACJ54T,YAAY,EACZ/lC,MAAO,IAAIqN,KAEfuxV,YAAa,CACT74T,YAAY,EACZ/lC,MAAO,IAAIqN,OAGnBkR,EAAMmkgB,QAAQr2gB,QAAQm0sB,EAAkBzqpB,KAAK,KAAMx3C,IACnDmyT,EAAU1rN,GAAG,6BAA8B,WACvC,OAAOzmG,EAAM2G,KAAK,6BAA8B3G,EAAM+hsB,oBAAqB/hsB,EAAMgisB,sBAC5EhisB,EAAMgisB,oBAAoBprf,OAAS52M,EAAMgisB,oBAAoBnrf,OAC5D72M,EAAMgisB,oBACN,KACV,GA6TR,SAA2CvoM,EAAatnM,GACpD,IAAIpwU,EAAM03gB,EAAYv4f,KACI,iBAAtBu4f,EAAYhugB,OAIhB0mU,EAAU1rN,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GAC/C1J,EAAIqhB,MAAM,yBAA0B3X,GACpCgugB,EAAY9yf,KAAKlb,EAAOgugB,GACV,iBAAVhugB,IACA1J,EAAIqhB,MAAM,mCACV+uT,EAAUzxQ,eAAe,eAAgB84c,GACzCC,EAAY0K,QAAQr2gB,QAAQ,SAAUsa,GAClC,IAAI85rB,EAAazoM,EAAYkoM,sBAAsBhysB,IAAIyY,EAAMvO,IACzDuO,GAAS85rB,GACTA,EAAWp0sB,QAAQ,SAAUq0sB,EAAWl6rB,GACpCG,EAAMs4C,eAAez4C,EAAOk6rB,EAChC,EAER,GAIAhwY,EAAUiuB,OAAOtyV,QAAQ,SAAUs0sB,GAC/B,IAAIh6rB,EAAQqxf,EAAY0K,QAAQx0gB,IAAIyysB,EAAevosB,IAC/CqosB,EAAazoM,EAAYkoM,sBAAsBhysB,IAAIyysB,EAAevosB,IAClEuO,GAAS85rB,GACTA,EAAWp0sB,QAAQ,SAAUq0sB,EAAWl6rB,GACpCG,EAAMs4C,eAAez4C,EAAOk6rB,EAChC,EAER,GACA1oM,EAAYkoM,sBAAsB9qoB,QAClC4ic,EAAYr5K,OAAOtyV,QAAQ,SAAU61V,GACjC81K,EAAYmoM,iCAAiCjysB,IAAIg0V,EAAYlwN,UACxD3lI,QAAQ,SAAUq0sB,EAAWl6rB,GAC9B07U,EAAYjjS,eAAez4C,EAAOk6rB,EACtC,EACJ,GACA1oM,EAAYmoM,iCAAiC/qoB,QAErD,EACJ,CAtWQwroB,CAAkCrisB,EAAOmyT,GACzCpwU,EAAI8sC,KAAK,6BAA+B7uB,EAAMq7M,SAAW,KAAOr7M,EAAMq7M,SAAW,KAC1Er7M,CACX,CAyOA,OAhXAnE,EAAUilsB,EAAahhsB,GA6IvBghsB,EAAY5ksB,UAAUomsB,gBAAkB,WACpC,MAAO,CACH,CAAC,oBAAqB,0BACtB,CAAC,UAAW,gBACZ,CAAC,UAAW,gBAEpB,EAIAxB,EAAY5ksB,UAAU4ngB,2BAA6B,WAC/C,MAAO,EACX,EACAg9L,EAAY5ksB,UAAUpZ,SAAW,WAC7B,MAAO,iBAAmBgZ,KAAKwF,YAAc,KAAOxF,KAAKs2K,IAAM,GACnE,EAOA0uhB,EAAY5ksB,UAAUungB,UAAY,SAAUr7f,EAAOvO,GAC/C,IAAI9X,EAAM+Z,KAAKoF,KACf,OAAIpF,KAAKqogB,QAAQ10gB,IAAIoK,GACV,MAEXiC,KAAKqogB,QAAQt0gB,IAAIgK,EAAIuO,GACF,CACfwuM,MAAO96M,KAAK2lsB,aACZ5qf,MAAO/6M,KAAKgmsB,aACZjwsB,KAAMiK,KAAK4lsB,aACbt5rB,EAAMQ,MACK/Y,IAAIgK,EAAIuO,GACrB65rB,EAAkBnmsB,KAAMsM,EAAOvO,GAC/B9X,EAAI8sC,KAAK,eAAiBohF,EAAKwzO,WAAWr7U,GAAS,IAAKvO,GACxD9X,EAAIqhB,MAAM6sG,EAAKwzO,WAAWr7U,GAAS,IAAKA,GACjCA,EACX,EAMA04rB,EAAY5ksB,UAAU0ngB,qBAAuB,SAAUjgL,GACnD,IAAI5hW,EAAM+Z,KAAKoF,KACf,OAAIpF,KAAKskV,OAAO3wV,IAAIk0V,EAAYlwN,UACrB,MAEX33H,KAAKskV,OAAOvwV,IAAI8zV,EAAYlwN,SAAUkwN,GACR,CAC1B/sI,MAAO96M,KAAKqkV,YACZtuV,KAAMiK,KAAKwkV,WACXzpI,MAAO/6M,KAAKukV,aACdsD,EAAY/6U,MACU/Y,IAAI8zV,EAAYlwN,SAAUkwN,GAoU1D,SAAsC81K,EAAa91K,GAC/C,IAAI4+W,EAA6B,IAAIzzsB,IACX,iBAAtB2qgB,EAAYhugB,QAGhBgugB,EAAYqK,6BAA6Bh2gB,QAAQ,SAAUwR,GACvD,IAAIG,EAAK+7F,EAAOl8F,EAAI,GAAIkjsB,EAAmB/isB,EAAG,GAAI67f,EAAmB77f,EAAG,GACxE8isB,EAA2B1ysB,IAAI2ysB,EAAkB,WAE7C,IADA,IAAIrysB,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzBgjgB,EAAY9yf,KAAK/J,MAAM68f,EAAazpL,EAAcA,EAAc,CAACsrL,GAAmB9/Z,EAAOrrG,IAAQ,CAACwzV,IACxG,GACAA,EAAYl9O,GAAG+7lB,EAAkBD,EAA2B5ysB,IAAI6ysB,GACpE,GACA/oM,EAAYmoM,iCAAiC/xsB,IAAI8zV,EAAYlwN,SAAU8ukB,GAC3E,CApVQE,CAA6B3msB,KAAM6nV,GACnC5hW,EAAI8sC,KAAK,eAAiBohF,EAAKyzO,sBAAsBC,GAAe,IAAKA,EAAYlwN,UACrF1xI,EAAIqhB,MAAM6sG,EAAKyzO,sBAAsBC,GAAe,IAAKA,GAClDA,EACX,EAIAm9W,EAAY5ksB,UAAUsngB,4BAA8B,WAChD,IAAIlkgB,EAAKxD,KAAM/Z,EAAMud,EAAG4B,KAAM43f,EAA8Bx5f,EAAGu5f,6BAA8BG,EAAyB15f,EAAGy5f,wBACrH36a,EAAOtiF,KACX,GAAmB,iBAAfA,KAAKrQ,MAAT,CAGA,IAAIg1sB,EAAmB3ksB,KAAKqlsB,kBACxBT,EAA8B5ksB,KAAKslsB,6BACnCP,EAAmB/ksB,KAAKylsB,kBACxBrvY,EAA8Bp2T,KAAK0lsB,6BACnCb,EAAkB7ksB,KAAKulsB,iBACvBT,EAA6B9ksB,KAAKwlsB,4BAClClmM,EAAuBt/f,KAAKo9f,WA2EhCkC,EAAqB30Z,GAAG,aAAci8lB,GACtCtnM,EAAqB30Z,GAAG,eAAgBk8lB,GACxCvnM,EAAqBh7K,OAAOtyV,QAAQ40sB,GACpCtnM,EAAqB30Z,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GAC5C,iBAAVA,GACA1J,EAAIqhB,MAAM,4BACVg4f,EAAqB16c,eAAe,eAAgB84c,GACpD4B,EAAqB16c,eAAe,aAAcgipB,GAClDtnM,EAAqB16c,eAAe,eAAgBiipB,IAErC,cAAVl3sB,IAIL1J,EAAI8sC,KAAK,eAGTtrB,WAAW,WAAc,OAAO66E,EAAKz3E,KAAK,cAAgB,EAAG,GAErE,EArGA,CAQA,SAAS+7rB,EAAoBvwY,GACzB,IAKIwxB,EAAc,IAAIi/W,EALO,CACzBhsf,MAAO8pf,EACP7usB,KAAM+usB,EACN/pf,MAAOq7G,GACTC,EAAUvpT,OACiCupT,EAAW,CAAEpwU,IAAKA,IAC/Dq8F,EAAKwlb,qBAAqBjgL,GAC1B,IAAIogL,EAAe5xM,EAAU4xM,aACzBA,GACA8+L,EAAyB1wY,GAE7B/zO,EAAKyjnB,qCAAqChysB,IAAIsiU,EAAU//I,IAAK,WACzD,GAAI2xV,IAAiB5xM,EAAU4xM,aAAc,CAEzC,GADAA,EAAe5xM,EAAU4xM,aAGrB,YADA8+L,EAAyB1wY,IAgDzC,SAAoCA,GAChC,IAAI7yT,EAAKk8F,EAAOprG,MAAMuwB,KAAKy9D,EAAK+lb,QAAQnjd,WAAWrqD,KAAK,SAAU2I,GAE9D,OADSk8F,EAAOl8F,EAAI,GAAe,GACtB8yK,MAAQ+/I,EAAU//I,GACnC,GAAI,GAAIv4K,EAAKyF,EAAG,GAAI8I,EAAQ9I,EAAG,GAC3BqkV,EAAcvlQ,EAAKgiQ,OAAOzwV,IAAIwiU,EAAU//I,KACxChqK,GACAg2E,EAAK6lb,aAAa77f,EAAOu7U,EAAa9pV,EAE9C,CAtDYipsB,CAA2B3wY,EAC/B,CACJ,GACAA,EAAU1rN,GAAG,UAAWroB,EAAKyjnB,qCAAqClysB,IAAIwiU,EAAU//I,KACpF,CACA,SAASuwhB,EAAsBxwY,GACvBA,EAAU4xM,cACV5xM,EAAUmoD,oBAAoB,MAElC,IAAI9/S,EAAU4jB,EAAKyjnB,qCAAqClysB,IAAIwiU,EAAU//I,KAClE53G,IACA23P,EAAUzxQ,eAAe,UAAW8Z,GACpC4jB,EAAKyjnB,qCAAqCtvqB,OAAO4/R,EAAU//I,MAE/D,IAAIuxK,EAAcvlQ,EAAKgiQ,OAAOzwV,IAAIwiU,EAAU//I,KACxCuxK,GACAvlQ,EAAKgmb,wBAAwBzgL,EAErC,CACA,SAASk/W,EAAyB1wY,GAC9B,IAAI7gM,EAAY6gM,EAAU7gM,UAAWjiI,EAAO8iU,EAAU9iU,KAAMuZ,EAAOupT,EAAUvpT,KAAMwpK,EAAM+/I,EAAU//I,IAAK87I,EAAmBiE,EAAUjE,iBAAkBF,EAAgBmE,EAAUnE,cAC7K+0Y,EAAc,CACdnsf,MAAO6pf,EACP5pf,MAAOgqf,EACPhvsB,KAAM8usB,GACR/3rB,GACE+6U,EAAcvlQ,EAAKgiQ,OAAOzwV,IAAIyiL,GAIlC,GAAK2whB,GAAen6rB,IAASslT,EAAiBtlT,KAA9C,CAGA,IAAIld,EAAU,CAAE3J,IAAKA,EAAKsN,KAAMA,EAAMypgB,4BAA6BA,EAA6BE,uBAAwBA,GAOpH5wf,EAAiB,SAATQ,EACN,IAAIm6rB,EAAY3whB,EAAK87I,EAAkBxiU,GACvC,IAAIq3sB,EAAY3whB,EAAK87I,EAAkB58L,EAAW08L,EARtC,SAAUg1Y,GAAe,OAAO5nM,EAAqB2uG,8BAA8B33b,EAAK4whB,EAAc,EACpG,SAAUxukB,GACtB29L,EAAU4xM,cACV3I,EAAqB4uG,sBAAsB53b,EAAK59C,EAExD,EAGmG9oI,GACnG0yF,EAAKqlb,UAAUr7f,EAAOu7U,EAAaz1B,EAAiBr0T,GAXpD,CAYJ,CA+BJ,EAOAinsB,EAAY5ksB,UAAU+ngB,aAAe,SAAU77f,EAAOvO,GAClD,IAAKiC,KAAKqogB,QAAQ10gB,IAAIoK,GAClB,OAAO,KAEXiC,KAAKqogB,QAAQ5xe,OAAO14B,GACD,CACf+8M,MAAO96M,KAAK2lsB,aACZ5qf,MAAO/6M,KAAKgmsB,aACZjwsB,KAAMiK,KAAK4lsB,aACbt5rB,EAAMQ,MACK2pB,OAAO14B,IACHiC,KAAK6lsB,sBAAsBhysB,IAAIkK,IAAO,IAAI/K,KAChDhB,QAAQ,SAAUq0sB,EAAWl6rB,GACpCG,EAAMs4C,eAAez4C,EAAOk6rB,EAChC,GACA,IAAIpgtB,EAAM+Z,KAAKoF,KAGf,OAFAnf,EAAI8sC,KAAK,aAAeohF,EAAKwzO,WAAWr7U,GAAS,IAAKvO,GACtD9X,EAAIqhB,MAAM6sG,EAAKwzO,WAAWr7U,GAAS,IAAKA,GACjCA,CACX,EAMA04rB,EAAY5ksB,UAAUkogB,wBAA0B,SAAUzgL,GAEtD,KADAA,EAAc7nV,KAAKskV,OAAOzwV,IAAIg0V,EAAYlwN,WAEtC,OAAO,KAEX33H,KAAKskV,OAAO7tT,OAAOoxT,EAAYlwN,UACD,CAC1BmjF,MAAO96M,KAAKqkV,YACZtuV,KAAMiK,KAAKwkV,WACXzpI,MAAO/6M,KAAKukV,aACdsD,EAAY/6U,MACU2pB,OAAOoxT,EAAYlwN,WAC1B33H,KAAK8lsB,iCAAiCjysB,IAAIg0V,EAAYlwN,WAAa,IAAI3kI,KAC7EhB,QAAQ,SAAUq0sB,EAAWl6rB,GACpC07U,EAAYjjS,eAAez4C,EAAOk6rB,EACtC,GACA,IAAIpgtB,EAAM+Z,KAAKoF,KAGf,OAFAnf,EAAI8sC,KAAK,aAAeohF,EAAKyzO,sBAAsBC,GAAe,IAAKA,EAAYlwN,UACnF1xI,EAAIqhB,MAAM6sG,EAAKyzO,sBAAsBC,GAAe,IAAKA,GAClDA,CACX,EACAm9W,EAAY5ksB,UAAUy9M,OAAS,WAC3B,OAAO1pG,EAAKguO,YAAYniV,KAC5B,EACOglsB,CACX,CAlXgC,CAkX9B5hsB,GAiIF,SAAS+isB,EAAkBxoM,EAAarxf,EAAOvO,GAC3C,IAAIopsB,EAAuB,IAAIn0sB,IACL,iBAAtB2qgB,EAAYhugB,QAGhBgugB,EAAY6oM,kBAAkBx0sB,QAAQ,SAAUo1sB,GAC5C,IAAIroV,EAAaqoV,EAAU,GACvB5nM,EAAmB4nM,EAAU,GACjCD,EAAqBpzsB,IAAIgrX,EAAY,WACjC,IAAI1qX,EAAO,CAACmrgB,GAAkBxxgB,OAAO,GAAG8M,MAAMuF,KAAKlM,YACnD,OAAOwpgB,EAAY9yf,KAAK/J,MAAM68f,EAAazpL,EAAc,GAAIx0O,EAAOrrG,IACxE,GACAiY,EAAMq+F,GAAGo0Q,EAAYooV,EAAqBtzsB,IAAIkrX,GAClD,GACA4+I,EAAYkoM,sBAAsB9xsB,IAAIgK,EAAIopsB,GAC9C,CAyBAzlnB,EAAOj9F,QAAUugtB,C,oHCjmBbqC,EAAe,CAAC,KAAM,KAAM,KAAM,KAAM,MAIxCC,EAAmB,aAAiB,SAAUl8sB,EAAMynH,GACtD,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBy9lB,EAAYn8sB,EAAKm8sB,UACjB99d,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,YAAa,OAEnF+nH,GAAoB,QAAmBL,EAAU,OACjD00lB,EAAar0lB,EAAoB,QACjC9F,EAAU,GAed,OAdAg6lB,EAAar1sB,QAAQ,SAAUy1sB,GAC7B,IAEI12iB,EAFA6oJ,EAAYxnR,EAAMq1qB,UACfr1qB,EAAMq1qB,GASb,IAAIC,EAAqB,OAAbD,EAAoB,IAAMA,EAAW,GACrC,OANV12iB,EADe,MAAb6oJ,GAA0C,iBAAdA,EACvBA,EAAU7oJ,KAEV6oJ,IAISvsM,EAAQv5G,KAAK,GAAK0zsB,EAAaE,EAAQ,IAAM32iB,EACjE,GACoB,gBAAoB44E,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,eAAiB,EAAQ,CAACA,EAAWqJ,EAAmBo0lB,GAAa,cAAcv5sB,OAAOq/G,MAEzG,GACAi6lB,EAAIj/gB,YAAc,MAClBi/gB,EAAIjuf,aAnCe,CACjBkuf,WAAW,GAmCb,S,kBC1CA,IAAIr0sB,EAAM,EAAQ,OACd0c,EAAO,EAAQ,OACf8ha,EAAa,EAAQ,OAYrBi2R,EAAcz0sB,GAAQ,EAAIw+a,EAAW,IAAIx+a,EAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAAS01B,GAC1F,OAAO,IAAI11B,EAAI01B,EACjB,EAF4EhZ,EAI5E8xE,EAAOj9F,QAAUkjtB,C,qCCjBjB,IAAIltsB,EAAQ,SAAUgnG,GACpB,OAAOA,GAAMA,EAAGj8G,OAASA,MAAQi8G,CACnC,EAGA/f,EAAOj9F,QAELgW,EAA2B,iBAAd4nF,YAA0BA,aACvC5nF,EAAuB,iBAAVtT,QAAsBA,SAEnCsT,EAAqB,iBAAR6nF,MAAoBA,OACjC7nF,EAAuB,iBAAV,EAAAkH,GAAsB,EAAAA,IACnClH,EAAqB,iBAARuF,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoCyrG,SAAS,cAATA,E,+BCbtC,EAAQ,M,6BCARhnH,EAAQ89F,YAAa,EACrB99F,EAAQ69D,KAGR,SAAczhD,EAAGnX,EAAKC,GACpB,IAAIpG,EAAIoG,EAAMD,EACd,OAAOmX,IAAMlX,EAAMkX,IAAMA,EAAInX,GAAOnG,EAAIA,GAAKA,EAAImG,CACnD,C,gDCPA,Q,SAD8B,cAAoB,K,+BCAlD,IAAIwnb,EAAgB,EAAQ,OAqC5BxvV,EAAOj9F,QA7BP,SAA2B84C,GAGvB,IAAI6zY,EAAsB,EAAQ,OAC9Bh9C,EAAS,CAAC,EACVC,EAAe+8C,EAAoB98C,YAAYF,GAC/CwzU,EAbS,EAgCb,OAlBA,SAASn9d,IAEL,OADAm9d,IACO12R,EAAc78C,EAAc92V,EAAGpwB,UAfpB,KAeoDtW,KAAK,SAAU6mP,GACjF,QAAKA,MAGDkqd,EAAe,IACRn9d,IAGf,GAAG5c,MAAM,WAGL,OAAO,CACX,EACJ,CAGO4c,GAAiB7jJ,QAAQ,WAC5BwqV,EAAoBz8C,QAAQP,EAChC,EACJ,C,kBCrCA,IAAIvhX,EAAa,EAAQ,MACrB+tnB,EAAW,EAAQ,OACnB3wnB,EAAW,EAAQ,OACnBujN,EAAW,EAAQ,OASnB2pT,EAAe,8BAGf9pN,EAAY5nN,SAASrrG,UACrBwhF,EAAc93F,OAAOsW,UAGrBkzT,EAAeD,EAAUrsU,SAGzB4E,EAAiBg2F,EAAYh2F,eAG7BwxhB,EAAatrf,OAAO,IACtBwhS,EAAajzT,KAAKzU,GAAgB7H,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF29F,EAAOj9F,QARP,SAAsBkB,GACpB,SAAKsqB,EAAStqB,IAAUi7oB,EAASj7oB,MAGnBktB,EAAWltB,GAASy3hB,EAAaD,GAChCj7hB,KAAKsxO,EAAS7tO,GAC/B,C,yBCpCA,IAAIu8F,EAAwBp4F,OAAOo4F,sBAC/Bt2F,EAAiB9B,OAAOsW,UAAUxU,eAClCi8sB,EAAmB/9sB,OAAOsW,UAAU+hF,qBAsDxCT,EAAOj9F,QA5CP,WACC,IACC,IAAKqF,OAAOC,OACX,OAAO,EAMR,IAAI+9sB,EAAQ,IAAIvnsB,OAAO,OAEvB,GADAunsB,EAAM,GAAK,KACkC,MAAzCh+sB,OAAOu7C,oBAAoByiqB,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJ1itB,EAAI,EAAGA,EAAI,GAAIA,IACvB0itB,EAAM,IAAMxnsB,OAAOysF,aAAa3nG,IAAMA,EAKvC,GAAwB,eAHXyE,OAAOu7C,oBAAoB0iqB,GAAOh1sB,IAAI,SAAU8N,GAC5D,OAAOknsB,EAAMlnsB,EACd,GACW3C,KAAK,IACf,OAAO,EAIR,IAAI8psB,EAAQ,CAAC,EAIb,MAHA,uBAAuB9mtB,MAAM,IAAI8Q,QAAQ,SAAUiqQ,GAClD+rc,EAAM/rc,GAAUA,CACjB,GAEE,yBADEnyQ,OAAOO,KAAKP,OAAOC,OAAO,CAAC,EAAGi+sB,IAAQ9psB,KAAK,GAMhD,CAAE,MAAOwqG,GAER,OAAO,CACR,CACD,CAEiBu/lB,GAAoBn+sB,OAAOC,OAAS,SAAUgE,EAAQwjB,GAKtE,IAJA,IAAIsT,EAEAgvF,EADAjvF,EAtDL,SAAkB+C,GACjB,GAAIA,QACH,MAAM,IAAIrnB,UAAU,yDAGrB,OAAOxW,OAAO69B,EACf,CAgDU0rF,CAAStlH,GAGT9K,EAAI,EAAGA,EAAIkR,UAAUC,OAAQnR,IAAK,CAG1C,IAAK,IAAIuH,KAFTq6B,EAAO/6B,OAAOqK,UAAUlR,IAGnB2I,EAAeyU,KAAKwkB,EAAMr6B,KAC7Bo6B,EAAGp6B,GAAOq6B,EAAKr6B,IAIjB,GAAI03F,EAAuB,CAC1B2xB,EAAU3xB,EAAsBr9D,GAChC,IAAK,IAAIx/B,EAAI,EAAGA,EAAIwuH,EAAQz/G,OAAQ/O,IAC/BwitB,EAAiBxnsB,KAAKwkB,EAAMgvF,EAAQxuH,MACvCu/B,EAAGivF,EAAQxuH,IAAMw/B,EAAKgvF,EAAQxuH,IAGjC,CACD,CAEA,OAAOu/B,CACR,C,qCCxFA,IACQ9kB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GASA0nsB,EAAsC,SAAUlksB,GAOhD,SAASkksB,EAAqBh8e,EAASwqH,EAAa+nU,GAChD,IAAIv6oB,EAAQF,EAAO3D,KAAKL,KAAMksN,EAASwqH,EAAa+nU,IAAuBz+oB,KAe3E,OAdAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3ByyU,WAAY,CACRhxV,MAA8C,iBAAhC+wV,EAAYmoH,gBACpBnoH,EAAYmoH,gBACZ,KACNnza,YAAY,GAEhBnlB,OAAQ,CACJ5gB,MAAqC,iBAAvB+wV,EAAYnwU,OACpBmwU,EAAYnwU,OACZ,KACNmlB,YAAY,KAGbxnB,CACX,CACA,OAxBAnE,EAAUmosB,EAAsBlksB,GAwBzBkksB,CACX,CA1ByC,CAPnB,EAAQ,QAuC9BxmnB,EAAOj9F,QAAUyjtB,C,+BCtDT,EAAQ,MAIhBx+mB,CAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMs2Y,iBAAiB,EAAMC,aAAa,GAAQ,CAC5EvolB,QAAS7yC,KAAKC,IAAI,GAAI,K,gDCcxB,QAXA,SAAkB4uB,EAAOurM,GAKvB,IAJA,IAAIppN,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OACnCjB,EAASmB,MAAMF,KAEVoC,EAAQpC,GACfjB,EAAOqD,GAASopN,EAASvrM,EAAM7d,GAAQA,EAAO6d,GAEhD,OAAOlhB,CACT,C,+BCjBA,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,IAAI01E,EAAO,EAAQ,OAEnB6Y,EAAOj9F,QAAUokF,EAAKv0E,K,yBCnCd,SAAWzT,GAAU,aAIzB,IAAIghI,EAAa,CACbC,MAAO,CAEH5+H,GAAI,CAAC,UAAW,UAAW,WAC3BC,EAAG,CAAC,cAAe,iBACnBC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,EAAG,CAAC,cAAe,iBACnBC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,eAAgB,gBACpBC,GAAI,CAAC,SAAU,SAAU,WAE7Bm+H,uBAAwB,SAAU9+E,EAAQ++E,GACtC,OACI/+E,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAI++E,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EACnB,EACA/zF,UAAW,SAAUgV,EAAQw+E,EAAej3H,EAAKk3H,GAC7C,IACIO,EADAD,EAAUH,EAAWC,MAAMt3H,GAG/B,OAAmB,IAAfA,EAAI4J,OAEQ,MAAR5J,GAAei3H,EAAsB,eAClCC,GAAYD,EAAgBO,EAAQ,GAAKA,EAAQ,IAG5DC,EAAOJ,EAAWE,uBAAuB9+E,EAAQ++E,GAErC,OAARx3H,GAAgBi3H,GAA0B,WAATQ,EAC1Bh/E,EAAS,UAGbA,EAAS,IAAMg/E,EAC1B,GAGKphI,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFC,MACvF,KAEJC,YACI,2DAA2DD,MAAM,KACrEghI,kBAAkB,EAClB9gI,SAAU,wDAAwDF,MAC9D,KAEJG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACA36F,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgBod,KAAKs9E,MAC7B,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,mBACHC,GAAI2+H,EAAW5zF,UACf9qC,EAAG0+H,EAAW5zF,UACd7qC,GAAIy+H,EAAW5zF,UACf5qC,EAAGw+H,EAAW5zF,UACd3qC,GAAIu+H,EAAW5zF,UACf1qC,EAAGs+H,EAAW5zF,UACdzqC,GAAIq+H,EAAW5zF,UACfxqC,EAAGo+H,EAAW5zF,UACdvqC,GAAIm+H,EAAW5zF,UACftqC,EAAGk+H,EAAW5zF,UACdrqC,GAAIi+H,EAAW5zF,WAEnB/pC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CApIyCC,CAAQ,EAAQ,O,mBCP1D,WAEA,aAEA,IA0BI2xI,EA1BAiykB,EAAc,kBAGdC,EAAU,CACZlmf,QAAiB,CAAC,eAAgB,WAClCmmf,OAAiB,CAAC,cAAe,mBACjCC,eAAiB,CAAC,uBAAwB,WAC1CC,gBAAiB,CAAC,yBAA0B,WAC5CprpB,OAAiB,CAAC,cAAe,UACjCqrpB,eAAiB,CAAC,uBAAwB,WAC1CC,QAAiB,CAAC,eAAgB,WAClCrhO,SAAiB,CAAC,gBAAiB,UACnCt0W,YAAiB,CAAC,mBAAoB,UACtC8iL,MAAiB,CAAC,aAAc,UAChCgqF,MAAiB,CAAC,aAAc,UAChCp1Y,IAAiB,CAAC,WAAY,UAC9BqX,MAAiB,CAAC,aAAc,UAChCq8B,OAAiB,CAAC,cAAe,UACjC3qC,KAAiB,CAAC,YAAa,UAC/ByzB,MAAiB,CAAC,aAAc,UAChC0hrB,WAAiB,CAAC,mBAAoB,UACtCC,gBAAiB,CAAC,wBAAyB,WAC3CC,QAAiB,CAAC,gBAAiB,YAM0B,iBAAnBlnnB,EAAOj9F,SACjDyxI,EAAU,EAAQ,MAClBx0C,EAAOj9F,QAAU0jtB,GAEjBjykB,EAAU/uI,OAAO+uI,QAGnB,IAAIlzB,EAASkzB,EAAQlzB,OASrB,SAAS6lmB,EAAwB51b,EAAQ61b,GACvC,MAAO,CAAE1/kB,KAET,SAAczgG,EAAO4U,EAAIwrF,GACvB,IAAI7qE,EAEJ4qpB,EAAe9/e,OACZnyN,KAAK,WACJqnD,EAAU4qpB,EAAe3jqB,UAAU6/Q,EAAWznR,GAChD,GAEFA,EAAGotE,GAAG,QAAQ,WACRzsD,GACFA,EAAQ6vC,KAAKi3N,EAAWznR,IAAK1mC,KAAK,SAAS1D,GACzC,IAAI+b,EAAW+jQ,EAAOlqJ,EAAMgglB,eAAb91b,CAA6BtqP,GACpB,mBAAbzZ,GACTA,EAASpO,MAAM,KAAK3N,EACxB,EACJ,EACF,EACF,CA0BA,SAAS61sB,EAAsBx8kB,EAAWrK,EAAI8mlB,GAC5C,IACI5mlB,EADAx5F,EAAW,CAAC,EAGhB7oB,KAAKmlC,UAAY,SAASv1C,GACxB,OAAO,IAAIs5sB,EAAqB/mlB,EAAGnf,EAAO,CAAC,EACzCimmB,EACApgrB,EACAj5B,GAEJ,EAEAoQ,KAAKgpN,KAAO,WAIV,OAHK3mG,IACHA,EAiEN,SAAqBmK,EAAWrK,GAC9B,IAAI7X,EAAW6X,EAAGjZ,QAEdF,EAAMwjB,EAAU,GAChB7R,EAAS3R,EAAIj8F,cAAc,UAoB/B,OAnBA4tG,EAAOtT,IA7KiB,0CA+KxBsT,EAAO89H,OAAS,WACdnuI,EAAS1zG,SACX,EAEA+jH,EAAOoqX,mBAAqB,WAC1B,IAAIxnU,EAAKv9J,KAAKihQ,WACH,WAAP1jG,GAA0B,aAAPA,GACrBjzD,EAAS1zG,SACb,EAEA+jH,EAAO+9H,QAAU,WACfpuI,EAASlpG,OAAO,IAAImG,MAAM,8BAC5B,EAEgByhG,EAAIwhF,qBAAqB,QAAQ,GACvCr6F,YAAYwqB,GAEfrQ,EAAS+X,OAClB,CA1FgB8mlB,CAAY38kB,EAAUrK,IAE3BE,CACT,EAEAriH,KAAK6oB,SAAW,SAASj5B,GACvBozG,EAAOn6E,EAASj5B,EAClB,CACF,CAGA,SAASs5sB,EAAqB/mlB,EAAIvyH,GAChC,IAAI06G,EAAUimc,EAEVryf,EAAU4qpB,eAAe3jqB,UAAU69D,EAAO,CAAC,EAAEpzG,EAAQ,CACvDqU,MAAO,SAASA,EAAO5P,GACjBzE,EAAQqU,OAAOrU,EAAQqU,MAAMA,EAAM5P,GAEvCk8iB,GAAU,EACVjmc,EAAS1zG,QAAQ,CAACqN,EAAO5P,GAC3B,EAEA85F,OAAQ,WACFv+F,EAAQu+F,QAAQv+F,EAAQu+F,SACvBoid,GAASjmc,EAASlpG,QACzB,KAGFpB,KAAK+tF,KAAO,SAASq7mB,GAMnB,OALA9+lB,EAAW6X,EAAGjZ,QACdqnc,GAAU,EAEVryf,EAAQ6vC,KAAKq7mB,GAEN9+lB,EAAS+X,OAClB,EAEAriH,KAAKyN,MAAQ,WACX8iiB,GAAU,EAEVryf,EAAQzwC,QAEJ7d,EAAQu+F,QAAQv+F,EAAQu+F,SACxBmc,GAAUA,EAASlpG,QACzB,CACF,CAGA,SAAS4jT,EAAWznR,GAClB,IAAIyrU,EAAKjkP,EAAKp9F,EAAK/3B,EAAU,CAAC,EAE9B,IAAKo5W,KAAOo/V,EACLA,EAAQx8sB,eAAeo9W,KAG5BjkP,EAAMqjlB,EAAQp/V,GAGH,OAFXrhV,EAAMgqB,EAAWpU,EAAGg6N,KAAKxyI,EAAI,IAAIA,EAAI,OAGnCn1H,EAAQo5W,GAAOrhV,IAGnB,OAAO/3B,CACT,CA6BA,SAAS+hD,EAAWhsD,EAAOqqB,GACzB,MAAa,YAATA,EACKrqB,GAAmB,UAAVA,EACE,WAATqqB,EACFrqB,GAASwqB,OAAOxqB,GACL,oBAATqqB,EACK,SAAVrqB,EACKA,EAEAgsD,EAAWhsD,EAAM,WAEnBA,CAEX,CA5KAuwI,EAAQx0C,OAAOymnB,EAAY,IACxBvhlB,UAAU,iBAAiBiilB,GAC3BlilB,SAAS,iBA4BZ,WACE,IAAI99F,EAAW,CAAC,EAEhB7oB,KAAK6oB,SAAW,SAASj5B,GACvBozG,EAAOn6E,EAASj5B,EAClB,EAGAoQ,KAAKgpN,KAAO,SAAS8/e,GACnB,OAAOA,EAAe9/e,MACxB,EAEAhpN,KAAKgpN,KAAKpjG,QAAU,CAAC,kBAGrB5lH,KAAK4jG,KAAO,SAAS4oB,EAAWrK,GAC9B,OAAO,IAAI6mlB,EAAsBx8kB,EAAUrK,EAAGt5F,EAChD,EAEA7oB,KAAK4jG,KAAKgiB,QAAU,CAAC,YAAa,KACpC,GA7CAijlB,EAAwBjjlB,QAAU,CAAC,SAAU,iBAyK5C,CAvND,E,yBCSQ,SAAW/kI,GAAU,aAIzB,IAAIu/M,EAAQ,CACRl9M,GAAI,6BACJC,EAAG,wBACHC,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJC,EAAG,qBACHC,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyltB,EAAkBpmqB,EAAQw+E,EAAej3H,EAAKk3H,GACnD,OAAOD,EACD6/O,EAAM92W,GAAK,GACXk3H,EACE4/O,EAAM92W,GAAK,GACX82W,EAAM92W,GAAK,EACvB,CACA,SAAS8+sB,EAAQrmqB,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,EACzD,CACA,SAASq+T,EAAM92W,GACX,OAAO41M,EAAM51M,GAAKtJ,MAAM,IAC5B,CACA,SAAS+sC,EAAUgV,EAAQw+E,EAAej3H,EAAKk3H,GAC3C,IAAIvuH,EAAS8vC,EAAS,IACtB,OAAe,IAAXA,EAEI9vC,EAASk2sB,EAAkBpmqB,EAAQw+E,EAAej3H,EAAI,GAAIk3H,GAEvDD,EACAtuH,GAAUm2sB,EAAQrmqB,GAAUq+T,EAAM92W,GAAK,GAAK82W,EAAM92W,GAAK,IAE1Dk3H,EACOvuH,EAASmuW,EAAM92W,GAAK,GAEpB2I,GAAUm2sB,EAAQrmqB,GAAUq+T,EAAM92W,GAAK,GAAK82W,EAAM92W,GAAK,GAG1E,CACS3J,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,CACJu9C,OAAQ,oGAAoGt9C,MACxG,KAEJk+O,WACI,kGAAkGl+O,MAC9F,KAERm+O,SAAU,+DAEdl+O,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,CACNo9C,OAAQ,oFAAoFt9C,MACxF,KAEJk+O,WACI,2FAA2Fl+O,MACvF,KAERm+O,SAAU,cAEdh+O,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,iBAAiBJ,MAAM,KACpCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN02B,EAAG,aACH8nF,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVj+G,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EApFR,SAA0BggD,EAAQw+E,EAAej3H,EAAKk3H,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,iBAE9C,EA+EQx+H,GAAI+qC,EACJ9qC,EAAGkmtB,EACHjmtB,GAAI6qC,EACJ5qC,EAAGgmtB,EACH/ltB,GAAI2qC,EACJ1qC,EAAG8ltB,EACH7ltB,GAAIyqC,EACJxqC,EAAG4ltB,EACH3ltB,GAAIuqC,EACJtqC,EAAG0ltB,EACHzltB,GAAIqqC,GAER/pC,uBAAwB,cACxBC,QAAS,SAAU8+C,GACf,OAAOA,EAAS,MACpB,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAjIyCC,CAAQ,EAAQ,O,kBCN1D,IAAIC,EAAS,EAAQ,OACjBs4N,EAAc,EAAQ,OACtB/sM,EAAU,EAAQ,OAGlBw5rB,EAAmB/ktB,EAASA,EAAOy9hB,wBAAqBnrhB,EAc5D4qF,EAAOj9F,QALP,SAAuBkB,GACrB,OAAOoqB,EAAQpqB,IAAUm3N,EAAYn3N,OAChC4jtB,GAAoB5jtB,GAASA,EAAM4jtB,GAC1C,C,+BCfA,IAAIp1lB,EAAO,EAAQ,OAEfq1lB,EAAO,6BACPhvU,EAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAC3CivU,EAAO,oDACPC,EAAW,qFACXC,EAAM,+nCAGNC,EAAc,oLAKdvgnB,EAAM,4rDACNwgnB,EAAO,+DACPC,EAAe,4BACfC,EAA4B,+DAC5BC,EAAwB,mDAK5B,SAAS9spB,EAAQ/yB,GAEf,OADAA,EAAe,QAARA,EAAiB,OAAS,OAC1BgqF,EAAK7iB,KAAKp0C,EAAQ/yB,GAC3B,CA6DA,SAASmX,EAAK7uB,GAEZ,IAAIwf,EAAUxf,EAAIzuB,MAAMwltB,GACxB,IAAKv3qB,EAAS,OAAO,EAErB,IAAIwrD,GAAQxrD,EAAQ,GAChBsrD,GAAStrD,EAAQ,GACjBqrD,GAAOrrD,EAAQ,GAEnB,OAAOsrD,GAAS,GAAKA,GAAS,IAAMD,GAAO,GACnCA,IAAiB,GAATC,GAhBlB,SAAoBE,GAElB,OAAOA,EAAO,GAAM,IAAMA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAC/D,CAagCo5hB,CAAWp5hB,GAAQ,GAAK+8S,EAAKj9S,GAC7D,CAGA,SAASe,EAAK7rE,EAAK8+O,GACjB,IAAIt/N,EAAUxf,EAAIzuB,MAAMyltB,GACxB,IAAKx3qB,EAAS,OAAO,EAErB,IAAI7vC,EAAO6vC,EAAQ,GACf5vC,EAAS4vC,EAAQ,GACjBorD,EAASprD,EAAQ,GACjBy+f,EAAWz+f,EAAQ,GACvB,OAAS7vC,GAAQ,IAAMC,GAAU,IAAMg7F,GAAU,IAChC,IAARj7F,GAAwB,IAAVC,GAA0B,IAAVg7F,MAC9Bk0K,GAAQm/R,EACnB,CA3FAhvc,EAAOj9F,QAAUy4D,EAQjBA,EAAQ+spB,KAAO,CAEb3oqB,KAAM,6BAENg9C,KAAM,wEACN,YAAa,oGAEb0hF,IAAK,4CACL,gBAAiB,yEACjB,eAAgB4piB,EAChBn8mB,IAAKpE,EAILusN,MAAO,mHACPlnB,SAAUg7a,EAEVQ,KAAM,4EAENC,KAAM,qpCACNtgmB,MAAOA,EAEPugmB,KAAMP,EAGN,eAAgBC,EAChB,4BAA6BC,EAE7B,wBAAyBC,GAI3B9spB,EAAQq0M,KAAO,CACbjwN,KAAMA,EACNg9C,KAAMA,EACN,YAoDF,SAAmB7rE,GAEjB,IAAIqiX,EAAWriX,EAAIvxB,MAAMmptB,GACzB,OAA0B,GAAnBv1U,EAAS1gY,QAAektC,EAAKwzV,EAAS,KAAOx2S,EAAKw2S,EAAS,IAAI,EACxE,EAvDE90N,IAkEF,SAAavtJ,GAEX,OAAO63rB,EAAiBpotB,KAAKuwB,IAAQk3rB,EAAIzntB,KAAKuwB,EAChD,EApEE,gBA3DW,yoCA4DX,eAAgBm3rB,EAChBn8mB,IAAKpE,EACLusN,MAAO,2IACPlnB,SAqDF,SAAkBj8Q,GAGhB,OAAOA,EAAIre,QAAU,KAAOs1sB,EAASxntB,KAAKuwB,EAC5C,EAxDEy3rB,KAAM,4EACNC,KAAM,qpCACNtgmB,MAAOA,EACPugmB,KAAMP,EACN,eAAgBC,EAChB,4BAA6BC,EAC7B,wBAAyBC,GAsC3B,IAAIK,EAAsB,QAetBC,EAAmB,OAOnBC,EAAW,WACf,SAAS1gmB,EAAMp3F,GACb,GAAI83rB,EAASrotB,KAAKuwB,GAAM,OAAO,EAC/B,IAEE,OADA,IAAIqf,OAAOrf,IACJ,CACT,CAAE,MAAMztB,GACN,OAAO,CACT,CACF,C,+BCnJA,IAAI0kG,EAAI,EAAQ,OACZ4vI,EAAS,EAAQ,OACjBE,EAAmB,EAAQ,MAI/B9vI,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,GAAQ,CAClCnb,MAAO,SAAem6F,GAEpB,OAAOo1H,EAAOt5N,KAAMkkG,EADN/vG,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EAEtD,IAGF0iO,EAAiB,Q,kBCdjB,IAAIrN,EAAW,EAAQ,OACnB4zJ,EAAU,EAAQ,OAClBpgK,EAAe,EAAQ,OACvB6qf,EAAU,EAAQ,MAClBC,EAAa,EAAQ,OACrB14R,EAAY,EAAQ,OACpB24R,EAAkB,EAAQ,OAC1Bnrf,EAAW,EAAQ,OACnBxvM,EAAU,EAAQ,OAwCtB2xE,EAAOj9F,QA7BP,SAAqBw4N,EAAYq3X,EAAWrtF,GAExCqtF,EADEA,EAAUlglB,OACA+3N,EAASmoX,EAAW,SAAS10X,GACvC,OAAI7vM,EAAQ6vM,GACH,SAASj6N,GACd,OAAOo6X,EAAQp6X,EAA2B,IAApBi6N,EAASxrN,OAAewrN,EAAS,GAAKA,EAC9D,EAEKA,CACT,GAEY,CAACL,GAGf,IAAI/oN,GAAS,EACb89kB,EAAYnoX,EAASmoX,EAAWviK,EAAUpyN,IAE1C,IAAIxsN,EAASq3sB,EAAQvtf,EAAY,SAASt3N,EAAO6E,EAAKyyN,GAIpD,MAAO,CAAE,SAHMkP,EAASmoX,EAAW,SAAS10X,GAC1C,OAAOA,EAASj6N,EAClB,GAC+B,QAAW6Q,EAAO,MAAS7Q,EAC5D,GAEA,OAAO8ktB,EAAWt3sB,EAAQ,SAASm4C,EAAQuV,GACzC,OAAO6ppB,EAAgBp/pB,EAAQuV,EAAOomc,EACxC,EACF,C,+BC7CA,IAAIv9Z,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,WAAa,CAC7E9xD,OAAQ,WACN,OAAO6xD,EAAW9uN,KAAM,SAAU,GAAI,GACxC,G,kBCVF,IAAIiK,EAAQ,EAAQ,OAChB+qF,EAAQ,EAAQ,OAChBE,EAAc,EAAQ,OAE1BzwG,EAAQkmtB,IAAM,WAGZ,IAFA,IAAIt2sB,EAAO2gG,EAAM8E,QAAQ3lG,WACrBhB,GAAS,EACJ9N,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAC1BgP,EAAKhP,KACR8N,GAAS,GAGb,OAAOA,CACT,EAEA1O,EAAQmmtB,OAAS,WACf,GAAIz2sB,UAAUC,OAAS,EACrB,OAAO6V,EAAMuvF,GAGf,IAAIhjG,EAAQrC,UAAU,GACtB,OAAIqC,EAAQ,GAAKA,EAAQ,KAIrBrC,UAAUC,OAASoC,EAAQ,EAHtByT,EAAMtkB,MAORwO,UAAUqC,EACnB,EAEA/R,EAAQomtB,MAAQ,WACd,OAAO,CACT,EAEApmtB,EAAQqmtB,GAAK,SAAS5otB,EAAM6otB,EAAYC,GACtC,OAAO9otB,EAAO6otB,EAAaC,CAC7B,EAEAvmtB,EAAQwmtB,QAAU,SAAStltB,EAAOultB,GAChC,OAAIh2mB,EAAY2phB,QAAQl5nB,GACfultB,EAEFvltB,CACT,EAEAlB,EAAQ0mtB,KAAO,SAASxltB,EAAOyltB,GAC7B,OAAOzltB,IAAUskB,EAAMuvF,GAAK4xmB,EAAczltB,CAC5C,EAEAlB,EAAQ4mtB,IAAM,SAASC,GACrB,OAAQA,CACV,EAEA7mtB,EAAQ8mtB,GAAK,WAGX,IAFA,IAAIl3sB,EAAO2gG,EAAM8E,QAAQ3lG,WACrBhB,GAAS,EACJ9N,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAC3BgP,EAAKhP,KACP8N,GAAS,GAGb,OAAOA,CACT,EAEA1O,EAAQ+mtB,KAAO,WACb,OAAO,CACT,EAEA/mtB,EAAQgntB,IAAM,WAGZ,IAFA,IAAIp3sB,EAAO2gG,EAAM8E,QAAQ3lG,WACrBhB,EAAS,EACJ9N,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAC3BgP,EAAKhP,IACP8N,IAGJ,SAAuC,EAA/B3N,KAAKQ,MAAMR,KAAKM,IAAIqN,IAC9B,EAEA1O,EAAQintB,OAAS,WACf,IAAIv4sB,EAEJ,GAAIgB,UAAUC,OAAS,EAAI,CACzB,IAAIu3sB,EAAcx3sB,UAAU,GACxB0nK,EAAO1nK,UAAUC,OAAS,EAC1Bw3sB,EAAcpmtB,KAAKQ,MAAM61K,EAAO,GAChCgwiB,GAAkB,EAClBC,EAAmBjwiB,EAAO,GAAM,EAChCkwiB,EAAgBlwiB,EAAO,GAAM,EAAI,KAAO1nK,UAAUA,UAAUC,OAAS,GAEzE,GAAIw3sB,EACF,IAAK,IAAIp1sB,EAAQ,EAAGA,EAAQo1sB,EAAap1sB,IACvC,GAAIm1sB,IAAgBx3sB,UAAkB,EAARqC,EAAY,GAAI,CAC5CrD,EAASgB,UAAkB,EAARqC,EAAY,GAC/Bq1sB,GAAkB,EAClB,KACF,CAICA,IACH14sB,EAAS24sB,EAAmBC,EAAgB9hsB,EAAMuvF,GAEtD,MACErmG,EAAS8W,EAAMtkB,MAGjB,OAAOwN,CACT,C,+BC7GA,IAAIu2F,EAAI,EAAQ,OACZsinB,EAAmB,EAAQ,OAC3B34lB,EAAW,EAAQ,OACnB6N,EAAoB,EAAQ,OAC5By6H,EAAsB,EAAQ,OAC9BmmS,EAAqB,EAAQ,MAIjCp4b,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,GAAQ,CAClC+mrB,KAAM,WACJ,IAAIC,EAAW/3sB,UAAUC,OAASD,UAAU,QAAK2C,EAC7CgkB,EAAIu4F,EAASrzG,MACbmssB,EAAYjrlB,EAAkBpmG,GAC9BhC,EAAIgpgB,EAAmBhngB,EAAG,GAE9B,OADAhC,EAAE1kB,OAAS43sB,EAAiBlzrB,EAAGgC,EAAGA,EAAGqxrB,EAAW,OAAgBr1sB,IAAbo1sB,EAAyB,EAAIvwd,EAAoBuwd,IAC7FpzrB,CACT,G,6BCRF,SAASszrB,EAAwBC,GAC7B,OAAO,SAAUn9pB,EAAYv/C,GAGzB,OAAO28sB,EAFM38sB,EAAM0nH,UACCg1lB,IACNn9pB,EAAYv/C,EAC9B,CACJ,CAfA7F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAyBtD,IAAI4mtB,EAAaH,EAAwB,UACzC3ntB,EAAQ+ntB,mBAAqB,SAAUhnd,GACnC,OAAOA,EAAkB+yF,OAAO,CAAE5hH,QAAS,SAAUhnO,GAAS,QAASA,EAAM4oV,MAAQ,GAAKg0X,EAC9F,EAUA,IAAIE,EAAeL,EAAwB,YAC3C3ntB,EAAQiotB,qBAAuB,SAAUlnd,GACrC,OAAOA,EAAkBmnd,SAAS,CAAEj2e,SAAU,SAAU/mO,GAAS,QAASA,EAAMg9sB,QAAU,GAAKF,EACnG,EAUA,IAAIG,EAAcR,EAAwB,WAC1C3ntB,EAAQootB,oBAAsB,SAAUrnd,GACpC,OAAOA,EAAkB3mB,QAAQ,CAAEjI,SAAU,SAAUjnO,GAAS,QAASA,EAAMkvO,OAAS,GAAK+te,EACjG,C,+BCtDA,IAAIvqnB,EAAa,EAAQ,OACrB9sD,EAA2B,WAC3B6pV,EAA8B,EAAQ,OACtCj5H,EAAgB,EAAQ,OACxBu6X,EAAuB,EAAQ,OAC/B1/f,EAA4B,EAAQ,OACpCnB,EAAW,EAAQ,OAiBvBn+B,EAAOj9F,QAAU,SAAUmL,EAAS2hB,GAClC,IAGYxjB,EAAQvD,EAAKsitB,EAAgBC,EAAgBx0oB,EAHrDy0oB,EAASp9sB,EAAQ7B,OACjBk/sB,EAASr9sB,EAAQmxH,OACjB2xI,EAAS9iQ,EAAQy6O,KASrB,GANEt8O,EADEk/sB,EACO5qnB,EACAqwK,EACArwK,EAAW2qnB,IAAWtsF,EAAqBssF,EAAQ,CAAC,GAEpD3qnB,EAAW2qnB,IAAW3qnB,EAAW2qnB,GAAQ5ssB,UAExC,IAAK5V,KAAO+mB,EAAQ,CAQ9B,GAPAw7rB,EAAiBx7rB,EAAO/mB,GAGtBsitB,EAFEl9sB,EAAQs9sB,gBACV30oB,EAAahjC,EAAyBxnC,EAAQvD,KACf+tE,EAAW5yE,MACpBoI,EAAOvD,IACtBq1H,EAASotlB,EAASzitB,EAAMwitB,GAAUt6c,EAAS,IAAM,KAAOloQ,EAAKoF,EAAQixG,cAE5C/pG,IAAnBg2sB,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpD9rlB,EAA0B+rlB,EAAgBD,EAC5C,EAEIl9sB,EAAQqrN,MAAS6xf,GAAkBA,EAAe7xf,OACpDmkK,EAA4B2tV,EAAgB,QAAQ,GAEtD5md,EAAcp4P,EAAQvD,EAAKuitB,EAAgBn9sB,EAC7C,CACF,C,uBCjDQ,SAAWnL,GAAW,aAE9B,SAASqtB,IACL,IAAK,IAAI5d,EAAOC,UAAUC,OAAQ0vH,EAAOxvH,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IACzEuvH,EAAKvvH,GAAQJ,UAAUI,GAG3B,GAAIuvH,EAAK1vH,OAAS,EAAG,CACjB0vH,EAAK,GAAKA,EAAK,GAAGhpH,MAAM,GAAI,GAE5B,IADA,IAAIqysB,EAAKrplB,EAAK1vH,OAAS,EACd7N,EAAI,EAAGA,EAAI4mtB,IAAM5mtB,EACtBu9H,EAAKv9H,GAAKu9H,EAAKv9H,GAAGuU,MAAM,GAAI,GAGhC,OADAgpH,EAAKqplB,GAAMrplB,EAAKqplB,GAAIrysB,MAAM,GACnBgpH,EAAK5lH,KAAK,GACrB,CACI,OAAO4lH,EAAK,EAEpB,CACA,SAASsplB,EAAO36rB,GACZ,MAAO,MAAQA,EAAM,GACzB,CACA,SAASuxb,EAAOrgY,GACZ,YAAa7sE,IAAN6sE,EAAkB,YAAoB,OAANA,EAAa,OAAS75E,OAAOsW,UAAUpZ,SAASqZ,KAAKsjE,GAAGziF,MAAM,KAAKmhB,MAAMnhB,MAAM,KAAKgnD,QAAQ9/C,aACvI,CACA,SAASuqB,EAAYF,GACjB,OAAOA,EAAIE,aACf,CAcA,SAAS06rB,EAAUC,GACf,IAAIC,EAAU,WAEVC,EAAU,QAEVC,EAAW37rB,EAAM07rB,EAAS,YAI1BE,EAAeN,EAAOA,EAAO,UAAYK,EAAW,IAAMA,EAAWA,EAAW,IAAMA,EAAWA,GAAY,IAAML,EAAO,cAAgBK,EAAW,IAAMA,EAAWA,GAAY,IAAML,EAAO,IAAMK,EAAWA,IAGhNE,EAAe,sCACfC,EAAa97rB,EAFF,0BAEsB67rB,GAGrCE,EAAaP,EAAQ,oBAAsB,KAE3CQ,EAAeh8rB,EAAMy7rB,EAASC,EAAS,iBAJvBF,EAAQ,8EAAgF,MAKpGS,EAAUX,EAAOG,EAAUz7rB,EAAMy7rB,EAASC,EAAS,eAAiB,KACpEQ,EAAYZ,EAAOA,EAAOM,EAAe,IAAM57rB,EAAMg8rB,EAAcH,EAAc,UAAY,KAE7FM,GADab,EAAOA,EAAO,WAAa,IAAMA,EAAO,SAAWI,GAAW,IAAMJ,EAAO,IAAMI,EAAUA,GAAW,IAAMJ,EAAO,QAAUI,GAAW,IAAMA,GACtIJ,EAAOA,EAAO,WAAa,IAAMA,EAAO,SAAWI,GAAW,IAAMJ,EAAO,IAAMI,EAAUA,GAAW,IAAMJ,EAAO,UAAYI,GAAW,QAAUA,IAE7KU,EAAed,EAAOa,EAAqB,MAAQA,EAAqB,MAAQA,EAAqB,MAAQA,GACzGE,EAAOf,EAAOK,EAAW,SACzBW,EAAQhB,EAAOA,EAAOe,EAAO,MAAQA,GAAQ,IAAMD,GACnDG,EAAgBjB,EAAOA,EAAOe,EAAO,OAAS,MAAQC,GAE1DE,EAAgBlB,EAAO,SAAWA,EAAOe,EAAO,OAAS,MAAQC,GAEjEG,EAAgBnB,EAAOA,EAAOe,GAAQ,UAAYf,EAAOe,EAAO,OAAS,MAAQC,GAEjFI,EAAgBpB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,UAAYf,EAAOe,EAAO,OAAS,MAAQC,GAElHK,EAAgBrB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,UAAYf,EAAOe,EAAO,OAAS,MAAQC,GAElHM,EAAgBtB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,UAAYA,EAAO,MAAQC,GAElGO,EAAgBvB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,UAAYC,GAEnFQ,EAAgBxB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,UAAYA,GAEnFU,EAAgBzB,EAAOA,EAAOA,EAAOe,EAAO,OAAS,QAAUA,GAAQ,WAEvEW,EAAe1B,EAAO,CAACiB,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,EAAeC,GAAe3wsB,KAAK,MAC/J6wsB,EAAU3B,EAAOA,EAAOU,EAAe,IAAMJ,GAAgB,KAIjEsB,GAFa5B,EAAO0B,EAAe,QAAUC,GAExB3B,EAAO0B,EAAe1B,EAAO,eAAiBK,EAAW,QAAUsB,IAExFE,EAAa7B,EAAO,OAASK,EAAW,OAAS37rB,EAAMg8rB,EAAcH,EAAc,SAAW,KAC1FuB,EAAc9B,EAAO,MAAQA,EAAO4B,EAAqB,IAAMF,EAAe,IAAMG,GAAc,OAEtGE,EAAY/B,EAAOA,EAAOM,EAAe,IAAM57rB,EAAMg8rB,EAAcH,IAAiB,KAChFyB,EAAQhC,EAAO8B,EAAc,IAAMhB,EAAe,MAAQiB,EAA3CD,KAAmEC,GAClFE,EAAQjC,EAAOI,EAAU,KACzB8B,EAAalC,EAAOA,EAAOY,EAAY,KAAO,IAAMoB,EAAQhC,EAAO,MAAQiC,GAAS,KACpFE,EAASnC,EAAOM,EAAe,IAAM57rB,EAAMg8rB,EAAcH,EAAc,aACvE6B,EAAWpC,EAAOmC,EAAS,KAC3BE,EAAcrC,EAAOmC,EAAS,KAC9BG,EAAiBtC,EAAOA,EAAOM,EAAe,IAAM57rB,EAAMg8rB,EAAcH,EAAc,UAAY,KAClGgC,EAAgBvC,EAAOA,EAAO,MAAQoC,GAAY,KAClDI,EAAiBxC,EAAO,MAAQA,EAAOqC,EAAcE,GAAiB,KAE1EE,EAAiBzC,EAAOsC,EAAiBC,GAEzCG,EAAiB1C,EAAOqC,EAAcE,GAEtCI,EAAc,MAAQR,EAAS,IAE3BS,GADQ5C,EAAOuC,EAAgB,IAAMC,EAAiB,IAAMC,EAAiB,IAAMC,EAAiB,IAAMC,GACjG3C,EAAOA,EAAOmC,EAAS,IAAMz9rB,EAAM,WAAY+7rB,IAAe,MACvEoC,EAAY7C,EAAOA,EAAOmC,EAAS,aAAe,KAClDW,EAAa9C,EAAOA,EAAO,SAAWkC,EAAaK,GAAiB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,GACxHI,EAAO/C,EAAOW,EAAU,MAAQmC,EAAa9C,EAAO,MAAQ4C,GAAU,IAAM5C,EAAO,MAAQ6C,GAAa,KACxGG,EAAiBhD,EAAOA,EAAO,SAAWkC,EAAaK,GAAiB,IAAMC,EAAiB,IAAMC,EAAiB,IAAME,GAC5HM,EAAYjD,EAAOgD,EAAiBhD,EAAO,MAAQ4C,GAAU,IAAM5C,EAAO,MAAQ6C,GAAa,KAQnG,OAPqB7C,EAAO+C,EAAO,IAAME,GACrBjD,EAAOW,EAAU,MAAQmC,EAAa9C,EAAO,MAAQ4C,GAAU,KACtC5C,EAAOA,EAAO,UAAYA,EAAO,IAAMY,EAAY,MAAQ,KAAOoB,EAAQ,IAAMhC,EAAO,OAASiC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,EAAc,KAAO3C,EAAO,OAAS4C,EAAS,KAAa5C,EAAO,OAAS6C,EAAY,KACvS7C,EAAOA,EAAO,UAAYA,EAAO,IAAMY,EAAY,MAAQ,KAAOoB,EAAQ,IAAMhC,EAAO,OAASiC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAMC,EAAiB,IAAME,EAAc,KAAO3C,EAAO,OAAS4C,EAAS,KAAa5C,EAAO,OAAS6C,EAAY,KAC1Q7C,EAAOA,EAAO,UAAYA,EAAO,IAAMY,EAAY,MAAQ,KAAOoB,EAAQ,IAAMhC,EAAO,OAASiC,EAAQ,KAAO,MAAQ,KAAOM,EAAgB,IAAMC,EAAiB,IAAME,EAAiB,IAAMC,EAAc,KAAO3C,EAAO,OAAS4C,EAAS,KACrQ5C,EAAO,OAAS6C,EAAY,KAC1B7C,EAAO,IAAMY,EAAY,MAA6BZ,EAAO,OAASiC,EAAQ,KAClG,CACHiB,WAAY,IAAIx+qB,OAAOhgB,EAAM,MAAOy7rB,EAASC,EAAS,eAAgB,KACtE+C,aAAc,IAAIz+qB,OAAOhgB,EAAM,YAAag8rB,EAAcH,GAAe,KACzE6C,SAAU,IAAI1+qB,OAAOhgB,EAAM,kBAAmBg8rB,EAAcH,GAAe,KAC3E8C,SAAU,IAAI3+qB,OAAOhgB,EAAM,kBAAmBg8rB,EAAcH,GAAe,KAC3E+C,kBAAmB,IAAI5+qB,OAAOhgB,EAAM,eAAgBg8rB,EAAcH,GAAe,KACjFgD,UAAW,IAAI7+qB,OAAOhgB,EAAM,SAAUg8rB,EAAcH,EAAc,iBAAkBE,GAAa,KACjG+C,aAAc,IAAI9+qB,OAAOhgB,EAAM,SAAUg8rB,EAAcH,EAAc,kBAAmB,KACxFp6a,OAAQ,IAAIzhQ,OAAOhgB,EAAM,MAAOg8rB,EAAcH,GAAe,KAC7DkD,WAAY,IAAI/+qB,OAAOg8qB,EAAc,KACrCgD,YAAa,IAAIh/qB,OAAOhgB,EAAM,SAAUg8rB,EAAcF,GAAa,KACnEmD,YAAa,IAAIj/qB,OAAO47qB,EAAc,KACtCsD,YAAa,IAAIl/qB,OAAO,KAAOo8qB,EAAe,MAC9C+C,YAAa,IAAIn/qB,OAAO,SAAWg9qB,EAAe,IAAM1B,EAAOA,EAAO,eAAiBK,EAAW,QAAU,IAAMsB,EAAU,KAAO,UAE3I,CACA,IAAImC,EAAe7D,GAAU,GAEzB8D,EAAe9D,GAAU,GAEzB+D,EA2BK,SAAUx6qB,EAAKvxC,GACpB,GAAIiP,MAAMyb,QAAQ6mB,GAChB,OAAOA,EACF,GAAIpyC,OAAO0d,YAAYpY,OAAO8sC,GACnC,OA9BJ,SAAuBA,EAAKvxC,GAC1B,IAAI0lH,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKp0G,EAET,IACE,IAAK,IAAiCq0G,EAA7BxwG,EAAKi8B,EAAIpyC,OAAO0d,cAAmB8oG,GAAMG,EAAKxwG,EAAG7S,QAAQ0Z,QAChEupG,EAAKj3G,KAAKq3G,EAAGxlH,QAETN,GAAK0lH,EAAK32G,SAAW/O,GAH8C2lH,GAAK,GAKhF,CAAE,MAAOtC,GACPuC,GAAK,EACLC,EAAKxC,CACP,CAAE,QACA,KACOsC,GAAMrwG,EAAW,QAAGA,EAAW,QACtC,CAAE,QACA,GAAIswG,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOH,CACT,CAMWK,CAAcx0E,EAAKvxC,GAE1B,MAAM,IAAIib,UAAU,uDAExB,EA2BE+wsB,EAAS,WAGThmqB,EAAO,GAUPimqB,EAAgB,QAChBC,EAAgB,aAChBC,EAAkB,4BAGlBvwe,EAAS,CACZ,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKdj7O,EAAQR,KAAKQ,MACbyrtB,EAAqBlxsB,OAAOysF,aAUhC,SAAS0knB,EAAQ1hsB,GAChB,MAAM,IAAIs3O,WAAWrmB,EAAOjxN,GAC7B,CA6BA,SAAS2hsB,EAAU7ttB,EAAQgR,GAC1B,IAAIwhE,EAAQxyE,EAAO5C,MAAM,KACrBiS,EAAS,GAWb,OAVImjE,EAAMliE,OAAS,IAGlBjB,EAASmjE,EAAM,GAAK,IACpBxyE,EAASwyE,EAAM,IAMTnjE,EAhCR,SAAakhB,EAAOvf,GAGnB,IAFA,IAAI3B,EAAS,GACTiB,EAASigB,EAAMjgB,OACZA,KACNjB,EAAOiB,GAAUU,EAAGuf,EAAMjgB,IAE3B,OAAOjB,CACR,CAwBeJ,EAFdjP,EAASA,EAAOC,QAAQyttB,EAAiB,MACrBtwtB,MAAM,KACA4T,GAAIoJ,KAAK,IAEpC,CAeA,SAAS0zsB,EAAW9ttB,GAInB,IAHA,IAAIi+N,EAAS,GACT9nB,EAAU,EACV7lM,EAAStQ,EAAOsQ,OACb6lM,EAAU7lM,GAAQ,CACxB,IAAIzO,EAAQ7B,EAAO8hG,WAAWq0G,KAC9B,GAAIt0M,GAAS,OAAUA,GAAS,OAAUs0M,EAAU7lM,EAAQ,CAE3D,IAAIonF,EAAQ13F,EAAO8hG,WAAWq0G,KACN,QAAX,MAARz+G,GAEJumI,EAAOjuN,OAAe,KAARnO,IAAkB,KAAe,KAAR61F,GAAiB,QAIxDumI,EAAOjuN,KAAKnO,GACZs0M,IAEF,MACC8nB,EAAOjuN,KAAKnO,EAEd,CACA,OAAOo8N,CACR,CAUA,IAaI8vf,EAAe,SAAsBC,GACxC,OAAIA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEbzmqB,CACR,EAaI0mqB,EAAe,SAAsBvma,EAAO5Y,GAG/C,OAAO4Y,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAAR5Y,IAAc,EACzD,EAOIo/a,EAAQ,SAAex3qB,EAAOsxY,EAAWmmS,GAC5C,IAAIxgsB,EAAI,EAGR,IAFA+oB,EAAQy3qB,EAAYjstB,EAAMw0C,EA7KhB,KA6KgCA,GAAS,EACnDA,GAASx0C,EAAMw0C,EAAQsxY,GACOtxY,EAAQ03qB,IAA2BzgsB,GAAK45B,EACrE7Q,EAAQx0C,EAAMw0C,EA9JI6Q,IAgKnB,OAAOrlD,EAAMyrB,EAAI,GAAsB+oB,GAASA,EAnLtC,IAoLX,EASIk7G,EAAS,SAAgBzzJ,GAE5B,IAAI8/N,EAAS,GACTowf,EAAclwtB,EAAMmS,OACpB/O,EAAI,EACJwb,EA/LU,IAgMVuxsB,EAjMa,GAuMbC,EAAQpwtB,EAAMo1F,YArMH,KAsMXg7nB,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAIrsrB,EAAI,EAAGA,EAAIqsrB,IAASrsrB,EAExB/jC,EAAM2jG,WAAW5/D,IAAM,KAC1B0rrB,EAAQ,aAET3vf,EAAOjuN,KAAK7R,EAAM2jG,WAAW5/D,IAM9B,IAAK,IAAIxvB,EAAQ67sB,EAAQ,EAAIA,EAAQ,EAAI,EAAG77sB,EAAQ27sB,GAAuC,CAQ1F,IADA,IAAIG,EAAOjttB,EACFu0B,EAAI,EAAGnI,EAAI45B,GAAyB55B,GAAK45B,EAAM,CAEnD70C,GAAS27sB,GACZT,EAAQ,iBAGT,IAAIlma,EAAQqma,EAAa5vtB,EAAM2jG,WAAWpvF,OAEtCg1S,GAASngQ,GAAQmgQ,EAAQxlT,GAAOqrtB,EAAShstB,GAAKu0B,KACjD83rB,EAAQ,YAGTrstB,GAAKmmT,EAAQ5xR,EACb,IAAIhZ,EAAI6Q,GAAK2gsB,EAhPL,EAgPmB3gsB,GAAK2gsB,EA/OxB,MA+O6C3gsB,EAAI2gsB,EAEzD,GAAI5ma,EAAQ5qS,EACX,MAGD,IAAI2xsB,EAAalnqB,EAAOzqC,EACpBgZ,EAAI5zB,EAAMqrtB,EAASkB,IACtBb,EAAQ,YAGT93rB,GAAK24rB,CACN,CAEA,IAAI9omB,EAAMs4G,EAAO3tN,OAAS,EAC1Bg+sB,EAAOJ,EAAM3stB,EAAIittB,EAAM7omB,EAAa,GAAR6omB,GAIxBtstB,EAAMX,EAAIokH,GAAO4nmB,EAASxwsB,GAC7B6wsB,EAAQ,YAGT7wsB,GAAK7a,EAAMX,EAAIokH,GACfpkH,GAAKokH,EAGLs4G,EAAOh1L,OAAO1nC,IAAK,EAAGwb,EACvB,CAEA,OAAON,OAAO0tgB,cAAcntgB,MAAMP,OAAQwhN,EAC3C,EASIh5H,EAAS,SAAgB9mG,GAC5B,IAAI8/N,EAAS,GAMTowf,GAHJlwtB,EAAQ2vtB,EAAW3vtB,IAGKmS,OAGpByM,EA7RU,IA8RV25B,EAAQ,EACR43qB,EAhSa,GAmSbI,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB57sB,EAErB,IACC,IAAK,IAA0C27Y,EAAtCqmO,EAAY72nB,EAAMuC,OAAO0d,cAAsBswsB,GAA6B//T,EAAQqmO,EAAUhxnB,QAAQ0Z,MAAOgxsB,GAA4B,EAAM,CACvJ,IAAI10X,EAAiB20D,EAAM9sZ,MAEvBm4V,EAAiB,KACpB/7H,EAAOjuN,KAAK29sB,EAAmB3zX,GAEjC,CACD,CAAE,MAAOp1O,GACR+pmB,GAAoB,EACpBC,EAAiBhqmB,CAClB,CAAE,QACD,KACM8pmB,GAA6B15F,EAAU91hB,QAC3C81hB,EAAU91hB,QAEZ,CAAE,QACD,GAAIyvnB,EACH,MAAMC,CAER,CACD,CAEA,IAAIC,EAAc5wf,EAAO3tN,OACrBw+sB,EAAiBD,EAWrB,IALIA,GACH5wf,EAAOjuN,KApUO,KAwUR8+sB,EAAiBT,GAAa,CAIpC,IAAIhvtB,EAAIkutB,EACJwB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBj8sB,EAEtB,IACC,IAAK,IAA2CwinB,EAAvCC,EAAat3nB,EAAMuC,OAAO0d,cAAuB2wsB,GAA8Bv5F,EAASC,EAAWzxnB,QAAQ0Z,MAAOqxsB,GAA6B,EAAM,CAC7J,IAAIzvqB,EAAek2kB,EAAO3znB,MAEtBy9C,GAAgBviC,GAAKuiC,EAAejgD,IACvCA,EAAIigD,EAEN,CAID,CAAE,MAAOslE,GACRoqmB,GAAqB,EACrBC,EAAkBrqmB,CACnB,CAAE,QACD,KACMmqmB,GAA8Bt5F,EAAWv2hB,QAC7Cu2hB,EAAWv2hB,QAEb,CAAE,QACD,GAAI8vnB,EACH,MAAMC,CAER,CACD,CAEA,IAAIC,EAAwBJ,EAAiB,EACzCzvtB,EAAI0d,EAAI7a,GAAOqrtB,EAAS72qB,GAASw4qB,IACpCtB,EAAQ,YAGTl3qB,IAAUr3C,EAAI0d,GAAKmysB,EACnBnysB,EAAI1d,EAEJ,IAAI8vtB,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBr8sB,EAEtB,IACC,IAAK,IAA2Cs8sB,EAAvCC,EAAapxtB,EAAMuC,OAAO0d,cAAuB+wsB,GAA8BG,EAASC,EAAWvrtB,QAAQ0Z,MAAOyxsB,GAA6B,EAAM,CAC7J,IAAIp1X,EAAgBu1X,EAAOzttB,MAK3B,GAHIk4V,EAAgBh9U,KAAO25B,EAAQ62qB,GAClCK,EAAQ,YAEL7zX,GAAiBh9U,EAAG,CAGvB,IADA,IAAIgpF,EAAIrvD,EACC/oB,EAAI45B,GAAyB55B,GAAK45B,EAAM,CAChD,IAAIzqC,EAAI6Q,GAAK2gsB,EAxYR,EAwYsB3gsB,GAAK2gsB,EAvY3B,MAuYgD3gsB,EAAI2gsB,EACzD,GAAIvonB,EAAIjpF,EACP,MAED,IAAI0ysB,EAAUzpnB,EAAIjpF,EACd2xsB,EAAalnqB,EAAOzqC,EACxBmhN,EAAOjuN,KAAK29sB,EAAmBM,EAAanxsB,EAAI0ysB,EAAUf,EAAY,KACtE1onB,EAAI7jG,EAAMsttB,EAAUf,EACrB,CAEAxwf,EAAOjuN,KAAK29sB,EAAmBM,EAAalonB,EAAG,KAC/CuonB,EAAOJ,EAAMx3qB,EAAOw4qB,EAAuBJ,GAAkBD,GAC7Dn4qB,EAAQ,IACNo4qB,CACH,CACD,CACD,CAAE,MAAOlqmB,GACRwqmB,GAAqB,EACrBC,EAAkBzqmB,CACnB,CAAE,QACD,KACMuqmB,GAA8BI,EAAWrwnB,QAC7CqwnB,EAAWrwnB,QAEb,CAAE,QACD,GAAIkwnB,EACH,MAAMC,CAER,CACD,GAEE34qB,IACA35B,CACH,CACA,OAAOkhN,EAAO7jN,KAAK,GACpB,EAuCIq1sB,EATU,SAAiBtxtB,GAC9B,OAAO0vtB,EAAU1vtB,EAAO,SAAU6B,GACjC,OAAOyttB,EAAcrvtB,KAAK4B,GAAU,OAASilG,EAAOjlG,GAAUA,CAC/D,EACD,EAKIyvtB,EA1BY,SAAmBtxtB,GAClC,OAAO0vtB,EAAU1vtB,EAAO,SAAU6B,GACjC,OAAOwttB,EAAcpvtB,KAAK4B,GAAU4xJ,EAAO5xJ,EAAOgX,MAAM,GAAG1S,eAAiBtE,CAC7E,EACD,EAgFI0vtB,EAAU,CAAC,EACf,SAASC,EAAW/wiB,GAChB,IAAI98K,EAAI88K,EAAI98E,WAAW,GAGvB,OADIhgG,EAAI,GAAQ,KAAOA,EAAEoB,SAAS,IAAI2rB,cAAuB/sB,EAAI,IAAS,IAAMA,EAAEoB,SAAS,IAAI2rB,cAAuB/sB,EAAI,KAAU,KAAOA,GAAK,EAAI,KAAKoB,SAAS,IAAI2rB,cAAgB,KAAW,GAAJ/sB,EAAS,KAAKoB,SAAS,IAAI2rB,cAAuB,KAAO/sB,GAAK,GAAK,KAAKoB,SAAS,IAAI2rB,cAAgB,KAAO/sB,GAAK,EAAI,GAAK,KAAKoB,SAAS,IAAI2rB,cAAgB,KAAW,GAAJ/sB,EAAS,KAAKoB,SAAS,IAAI2rB,aAE/X,CACA,SAAS+gsB,EAAYjhsB,GAIjB,IAHA,IAAIkhsB,EAAS,GACTtutB,EAAI,EACJ2oN,EAAKv7L,EAAIre,OACN/O,EAAI2oN,GAAI,CACX,IAAIpoN,EAAIugC,SAAS1T,EAAI0/F,OAAO9sH,EAAI,EAAG,GAAI,IACvC,GAAIO,EAAI,IACJ+ttB,GAAUpzsB,OAAOysF,aAAapnG,GAC9BP,GAAK,OACF,GAAIO,GAAK,KAAOA,EAAI,IAAK,CAC5B,GAAIooN,EAAK3oN,GAAK,EAAG,CACb,IAAI8hC,EAAKhB,SAAS1T,EAAI0/F,OAAO9sH,EAAI,EAAG,GAAI,IACxCsutB,GAAUpzsB,OAAOysF,cAAkB,GAAJpnG,IAAW,EAAS,GAALuhC,EAClD,MACIwsrB,GAAUlhsB,EAAI0/F,OAAO9sH,EAAG,GAE5BA,GAAK,CACT,MAAO,GAAIO,GAAK,IAAK,CACjB,GAAIooN,EAAK3oN,GAAK,EAAG,CACb,IAAI4f,EAAKkhB,SAAS1T,EAAI0/F,OAAO9sH,EAAI,EAAG,GAAI,IACpC80I,EAAKh0G,SAAS1T,EAAI0/F,OAAO9sH,EAAI,EAAG,GAAI,IACxCsutB,GAAUpzsB,OAAOysF,cAAkB,GAAJpnG,IAAW,IAAW,GAALqf,IAAY,EAAS,GAALk1H,EACpE,MACIw5kB,GAAUlhsB,EAAI0/F,OAAO9sH,EAAG,GAE5BA,GAAK,CACT,MACIsutB,GAAUlhsB,EAAI0/F,OAAO9sH,EAAG,GACxBA,GAAK,CAEb,CACA,OAAOsutB,CACX,CACA,SAASC,EAA4BjU,EAAYl2rB,GAC7C,SAASoqsB,EAAiBphsB,GACtB,IAAIqhsB,EAASJ,EAAYjhsB,GACzB,OAAQqhsB,EAAO9vtB,MAAMylB,EAASonsB,YAAoBiD,EAANrhsB,CAChD,CAOA,OANIktrB,EAAWv7hB,SAAQu7hB,EAAWv7hB,OAAS7jK,OAAOo/rB,EAAWv7hB,QAAQrgL,QAAQ0lB,EAASsnsB,YAAa8C,GAAkBzrtB,cAAcrE,QAAQ0lB,EAAS6msB,WAAY,UACpIx5sB,IAAxB6osB,EAAWoU,WAAwBpU,EAAWoU,SAAWxzsB,OAAOo/rB,EAAWoU,UAAUhwtB,QAAQ0lB,EAASsnsB,YAAa8C,GAAkB9vtB,QAAQ0lB,EAAS8msB,aAAckD,GAAY1vtB,QAAQ0lB,EAASsnsB,YAAap+rB,SAC1L7b,IAApB6osB,EAAW13sB,OAAoB03sB,EAAW13sB,KAAOsY,OAAOo/rB,EAAW13sB,MAAMlE,QAAQ0lB,EAASsnsB,YAAa8C,GAAkBzrtB,cAAcrE,QAAQ0lB,EAAS+msB,SAAUiD,GAAY1vtB,QAAQ0lB,EAASsnsB,YAAap+rB,SACxL7b,IAApB6osB,EAAW92nB,OAAoB82nB,EAAW92nB,KAAOtoE,OAAOo/rB,EAAW92nB,MAAM9kF,QAAQ0lB,EAASsnsB,YAAa8C,GAAkB9vtB,QAAQ47sB,EAAWv7hB,OAAS36J,EAASgnsB,SAAWhnsB,EAASinsB,kBAAmB+C,GAAY1vtB,QAAQ0lB,EAASsnsB,YAAap+rB,SAC1N7b,IAArB6osB,EAAWvwH,QAAqBuwH,EAAWvwH,MAAQ7ukB,OAAOo/rB,EAAWvwH,OAAOrrlB,QAAQ0lB,EAASsnsB,YAAa8C,GAAkB9vtB,QAAQ0lB,EAASknsB,UAAW8C,GAAY1vtB,QAAQ0lB,EAASsnsB,YAAap+rB,SAC1K7b,IAAxB6osB,EAAW7wmB,WAAwB6wmB,EAAW7wmB,SAAWvuF,OAAOo/rB,EAAW7wmB,UAAU/qG,QAAQ0lB,EAASsnsB,YAAa8C,GAAkB9vtB,QAAQ0lB,EAASmnsB,aAAc6C,GAAY1vtB,QAAQ0lB,EAASsnsB,YAAap+rB,IAC3MgtrB,CACX,CAEA,SAASqU,EAAmBvhsB,GACxB,OAAOA,EAAI1uB,QAAQ,UAAW,OAAS,GAC3C,CACA,SAASkwtB,EAAehstB,EAAMwhB,GAC1B,IAAIwoB,EAAUhqC,EAAKjE,MAAMylB,EAASunsB,cAAgB,GAG9C9uf,EADWkvf,EAAcn/qB,EAAS,GACf,GAEvB,OAAIiwL,EACOA,EAAQhhO,MAAM,KAAK6R,IAAIihtB,GAAoB91sB,KAAK,KAEhDjW,CAEf,CACA,SAASistB,EAAejstB,EAAMwhB,GAC1B,IAAIwoB,EAAUhqC,EAAKjE,MAAMylB,EAASwnsB,cAAgB,GAE9CkD,EAAY/C,EAAcn/qB,EAAS,GACnCiwL,EAAUiyf,EAAU,GACpBzma,EAAOyma,EAAU,GAErB,GAAIjyf,EAAS,CAYT,IAXA,IAAIkyf,EAAwBlyf,EAAQ95N,cAAclH,MAAM,MAAM4vB,UAC1DujsB,EAAyBjD,EAAcgD,EAAuB,GAC9DlgqB,EAAOmgqB,EAAuB,GAC9B7lpB,EAAQ6lpB,EAAuB,GAE/BC,EAAc9lpB,EAAQA,EAAMttE,MAAM,KAAK6R,IAAIihtB,GAAsB,GACjEO,EAAargqB,EAAKhzD,MAAM,KAAK6R,IAAIihtB,GACjCQ,EAAyB/qsB,EAASunsB,YAAY9utB,KAAKqytB,EAAWA,EAAWngtB,OAAS,IAClFqgtB,EAAaD,EAAyB,EAAI,EAC1CE,EAAkBH,EAAWngtB,OAASqgtB,EACtC3jnB,EAASx8F,MAAMmgtB,GACVlutB,EAAI,EAAGA,EAAIkutB,IAAclutB,EAC9BuqG,EAAOvqG,GAAK+ttB,EAAY/ttB,IAAMgutB,EAAWG,EAAkBnutB,IAAM,GAEjEiutB,IACA1jnB,EAAO2jnB,EAAa,GAAKR,EAAenjnB,EAAO2jnB,EAAa,GAAIhrsB,IAEpE,IAWIkrsB,EAXgB7jnB,EAAOxmG,OAAO,SAAUoL,EAAKy6J,EAAO35J,GACpD,IAAK25J,GAAmB,MAAVA,EAAe,CACzB,IAAIykjB,EAAcl/sB,EAAIA,EAAItB,OAAS,GAC/BwgtB,GAAeA,EAAYp+sB,MAAQo+sB,EAAYxgtB,SAAWoC,EAC1Do+sB,EAAYxgtB,SAEZsB,EAAI5B,KAAK,CAAE0C,MAAOA,EAAOpC,OAAQ,GAEzC,CACA,OAAOsB,CACX,EAAG,IACmCtC,KAAK,SAAUwG,EAAGC,GACpD,OAAOA,EAAEzF,OAASwF,EAAExF,MACxB,GAAG,GACCygtB,OAAU,EACd,GAAIF,GAAqBA,EAAkBvgtB,OAAS,EAAG,CACnD,IAAI0gtB,EAAWhknB,EAAOh2F,MAAM,EAAG65sB,EAAkBn+sB,OAC7Cu+sB,EAAUjknB,EAAOh2F,MAAM65sB,EAAkBn+sB,MAAQm+sB,EAAkBvgtB,QACvEygtB,EAAUC,EAAS52sB,KAAK,KAAO,KAAO62sB,EAAQ72sB,KAAK,IACvD,MACI22sB,EAAU/jnB,EAAO5yF,KAAK,KAK1B,OAHIwvS,IACAmna,GAAW,IAAMnna,GAEdmna,CACX,CACI,OAAO5stB,CAEf,CACA,IAAI+stB,EAAY,kIACZC,OAAiDn+sB,IAAzB,GAAG9S,MAAM,SAAS,GAC9C,SAASo0C,EAAM88qB,GACX,IAAItltB,EAAUuE,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/EwrsB,EAAa,CAAC,EACdl2rB,GAA2B,IAAhB7Z,EAAQultB,IAAgBhE,EAAeD,EAC5B,WAAtBthtB,EAAQT,YAAwB+ltB,GAAatltB,EAAQw0K,OAASx0K,EAAQw0K,OAAS,IAAM,IAAM,KAAO8wiB,GACtG,IAAIjjrB,EAAUijrB,EAAUlxtB,MAAMgxtB,GAC9B,GAAI/irB,EAAS,CACLgjrB,GAEAtV,EAAWv7hB,OAASnyI,EAAQ,GAC5B0tqB,EAAWoU,SAAW9hrB,EAAQ,GAC9B0tqB,EAAW13sB,KAAOgqC,EAAQ,GAC1B0tqB,EAAW/wa,KAAOzoQ,SAAS8L,EAAQ,GAAI,IACvC0tqB,EAAW92nB,KAAO52C,EAAQ,IAAM,GAChC0tqB,EAAWvwH,MAAQn9iB,EAAQ,GAC3B0tqB,EAAW7wmB,SAAW78D,EAAQ,GAE1BlsC,MAAM45sB,EAAW/wa,QACjB+wa,EAAW/wa,KAAO38P,EAAQ,MAK9B0tqB,EAAWv7hB,OAASnyI,EAAQ,SAAMn7B,EAClC6osB,EAAWoU,UAAuC,IAA5BmB,EAAU3stB,QAAQ,KAAc0pC,EAAQ,QAAKn7B,EACnE6osB,EAAW13sB,MAAoC,IAA7BittB,EAAU3stB,QAAQ,MAAe0pC,EAAQ,QAAKn7B,EAChE6osB,EAAW/wa,KAAOzoQ,SAAS8L,EAAQ,GAAI,IACvC0tqB,EAAW92nB,KAAO52C,EAAQ,IAAM,GAChC0tqB,EAAWvwH,OAAoC,IAA5B8lI,EAAU3stB,QAAQ,KAAc0pC,EAAQ,QAAKn7B,EAChE6osB,EAAW7wmB,UAAuC,IAA5BomnB,EAAU3stB,QAAQ,KAAc0pC,EAAQ,QAAKn7B,EAE/D/Q,MAAM45sB,EAAW/wa,QACjB+wa,EAAW/wa,KAAOsmb,EAAUlxtB,MAAM,iCAAmCiuC,EAAQ,QAAKn7B,IAGtF6osB,EAAW13sB,OAEX03sB,EAAW13sB,KAAOistB,EAAeD,EAAetU,EAAW13sB,KAAMwhB,GAAWA,SAGtD3S,IAAtB6osB,EAAWv7hB,aAAgDttK,IAAxB6osB,EAAWoU,eAA8Cj9sB,IAApB6osB,EAAW13sB,WAA0C6O,IAApB6osB,EAAW/wa,MAAuB+wa,EAAW92nB,WAA6B/xE,IAArB6osB,EAAWvwH,WAE5It4kB,IAAtB6osB,EAAWv7hB,OAClBu7hB,EAAWxwsB,UAAY,gBACQ2H,IAAxB6osB,EAAW7wmB,SAClB6wmB,EAAWxwsB,UAAY,WAEvBwwsB,EAAWxwsB,UAAY,MANvBwwsB,EAAWxwsB,UAAY,gBASvBS,EAAQT,WAAmC,WAAtBS,EAAQT,WAA0BS,EAAQT,YAAcwwsB,EAAWxwsB,YACxFwwsB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,gBAAkBra,EAAQT,UAAY,eAGjF,IAAIimtB,EAAgB5B,GAAS5jtB,EAAQw0K,QAAUu7hB,EAAWv7hB,QAAU,IAAIh8K,eAExE,GAAKwH,EAAQyltB,gBAAoBD,GAAkBA,EAAcC,eAc7DzB,EAA4BjU,EAAYl2rB,OAdsC,CAE9E,GAAIk2rB,EAAW13sB,OAAS2H,EAAQ0ltB,YAAcF,GAAiBA,EAAcE,YAEzE,IACI3V,EAAW13sB,KAAOsrtB,EAAiB5T,EAAW13sB,KAAKlE,QAAQ0lB,EAASsnsB,YAAa2C,GAAatrtB,cAClG,CAAE,MAAOpD,GACL26sB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,kEAAoEjlB,CAC/G,CAGJ4utB,EAA4BjU,EAAYuR,EAC5C,CAKIkE,GAAiBA,EAAch9qB,OAC/Bg9qB,EAAch9qB,MAAMunqB,EAAY/vsB,EAExC,MACI+vsB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,yBAE3C,OAAO01rB,CACX,CAsBA,IAAI4V,EAAO,WACPC,EAAO,cACPC,EAAO,gBACPC,EAAO,yBACX,SAASC,EAAkB1ztB,GAEvB,IADA,IAAI8/N,EAAS,GACN9/N,EAAMmS,QACT,GAAInS,EAAM+B,MAAMuxtB,GACZtztB,EAAQA,EAAM8B,QAAQwxtB,EAAM,SACzB,GAAItztB,EAAM+B,MAAMwxtB,GACnBvztB,EAAQA,EAAM8B,QAAQyxtB,EAAM,UACzB,GAAIvztB,EAAM+B,MAAMyxtB,GACnBxztB,EAAQA,EAAM8B,QAAQ0xtB,EAAM,KAC5B1zf,EAAO1/M,WACJ,GAAc,MAAVpgB,GAA2B,OAAVA,EACxBA,EAAQ,OACL,CACH,IAAI2ztB,EAAK3ztB,EAAM+B,MAAM0xtB,GACrB,IAAIE,EAKA,MAAM,IAAIrusB,MAAM,oCAJhB,IAAItkB,EAAI2ytB,EAAG,GACX3ztB,EAAQA,EAAM6Y,MAAM7X,EAAEmR,QACtB2tN,EAAOjuN,KAAK7Q,EAIpB,CAEJ,OAAO8+N,EAAO7jN,KAAK,GACvB,CAEA,SAASslH,EAAUm8kB,GACf,IAAI/vsB,EAAUuE,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/EsV,EAAW7Z,EAAQultB,IAAMhE,EAAeD,EACxC2E,EAAY,GAEZT,EAAgB5B,GAAS5jtB,EAAQw0K,QAAUu7hB,EAAWv7hB,QAAU,IAAIh8K,eAGxE,GADIgttB,GAAiBA,EAAc5xlB,WAAW4xlB,EAAc5xlB,UAAUm8kB,EAAY/vsB,GAC9E+vsB,EAAW13sB,KAEX,GAAIwhB,EAASwnsB,YAAY/utB,KAAKy9sB,EAAW13sB,YAIpC,GAAI2H,EAAQ0ltB,YAAcF,GAAiBA,EAAcE,WAEtD,IACI3V,EAAW13sB,KAAQ2H,EAAQultB,IAAmG5B,EAAmB5T,EAAW13sB,MAA3HsrtB,EAAiB5T,EAAW13sB,KAAKlE,QAAQ0lB,EAASsnsB,YAAa2C,GAAatrtB,cACjH,CAAE,MAAOpD,GACL26sB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,+CAAkDra,EAAQultB,IAAgB,UAAV,SAAuB,kBAAoBnwtB,CACtJ,CAIZ4utB,EAA4BjU,EAAYl2rB,GACd,WAAtB7Z,EAAQT,WAA0BwwsB,EAAWv7hB,SAC7CyxiB,EAAU/htB,KAAK6rsB,EAAWv7hB,QAC1ByxiB,EAAU/htB,KAAK,MAEnB,IAAIgitB,EAhFR,SAA6BnW,EAAY/vsB,GACrC,IAAI6Z,GAA2B,IAAhB7Z,EAAQultB,IAAgBhE,EAAeD,EAClD2E,EAAY,GAehB,YAd4B/+sB,IAAxB6osB,EAAWoU,WACX8B,EAAU/htB,KAAK6rsB,EAAWoU,UAC1B8B,EAAU/htB,KAAK,WAEKgD,IAApB6osB,EAAW13sB,MAEX4ttB,EAAU/htB,KAAKogtB,EAAeD,EAAe1zsB,OAAOo/rB,EAAW13sB,MAAOwhB,GAAWA,GAAU1lB,QAAQ0lB,EAASwnsB,YAAa,SAAUrvsB,EAAGkpH,EAAIkU,GACtI,MAAO,IAAMlU,GAAMkU,EAAK,MAAQA,EAAK,IAAM,GAC/C,IAE2B,iBAApB2gkB,EAAW/wa,MAAgD,iBAApB+wa,EAAW/wa,OACzDinb,EAAU/htB,KAAK,KACf+htB,EAAU/htB,KAAKyM,OAAOo/rB,EAAW/wa,QAE9Binb,EAAUzhtB,OAASyhtB,EAAU33sB,KAAK,SAAMpH,CACnD,CA8DoBi/sB,CAAoBpW,EAAY/vsB,GAUhD,QATkBkH,IAAdg/sB,IAC0B,WAAtBlmtB,EAAQT,WACR0mtB,EAAU/htB,KAAK,MAEnB+htB,EAAU/htB,KAAKgitB,GACXnW,EAAW92nB,MAAsC,MAA9B82nB,EAAW92nB,KAAKn2D,OAAO,IAC1CmjsB,EAAU/htB,KAAK,WAGCgD,IAApB6osB,EAAW92nB,KAAoB,CAC/B,IAAI5lF,EAAI08sB,EAAW92nB,KACdj5E,EAAQomtB,cAAkBZ,GAAkBA,EAAcY,eAC3D/ytB,EAAI0ytB,EAAkB1ytB,SAER6T,IAAdg/sB,IACA7ytB,EAAIA,EAAEc,QAAQ,QAAS,SAE3B8xtB,EAAU/htB,KAAK7Q,EACnB,CASA,YARyB6T,IAArB6osB,EAAWvwH,QACXymI,EAAU/htB,KAAK,KACf+htB,EAAU/htB,KAAK6rsB,EAAWvwH,aAEFt4kB,IAAxB6osB,EAAW7wmB,WACX+mnB,EAAU/htB,KAAK,KACf+htB,EAAU/htB,KAAK6rsB,EAAW7wmB,WAEvB+mnB,EAAU33sB,KAAK,GAC1B,CAEA,SAAS+3sB,EAAkB5qqB,EAAMi2R,GAC7B,IAAI1xU,EAAUuE,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAG/EpG,EAAS,CAAC,EAqDd,OAvDwBoG,UAAU,KAI9Bk3C,EAAOjT,EAAMorF,EAAUn4E,EAAMz7C,GAAUA,GACvC0xU,EAAWlpS,EAAMorF,EAAU89M,EAAU1xU,GAAUA,MAEnDA,EAAUA,GAAW,CAAC,GACTsmtB,UAAY50Y,EAASl9J,QAC9Br2K,EAAOq2K,OAASk9J,EAASl9J,OAEzBr2K,EAAOgmtB,SAAWzyY,EAASyyY,SAC3BhmtB,EAAO9F,KAAOq5U,EAASr5U,KACvB8F,EAAO6gS,KAAO0yC,EAAS1yC,KACvB7gS,EAAO86E,KAAO8soB,EAAkBr0Y,EAASz4P,MAAQ,IACjD96E,EAAOqhlB,MAAQ9tQ,EAAS8tQ,aAEEt4kB,IAAtBwqU,EAASyyY,eAA4Cj9sB,IAAlBwqU,EAASr5U,WAAwC6O,IAAlBwqU,EAAS1yC,MAE3E7gS,EAAOgmtB,SAAWzyY,EAASyyY,SAC3BhmtB,EAAO9F,KAAOq5U,EAASr5U,KACvB8F,EAAO6gS,KAAO0yC,EAAS1yC,KACvB7gS,EAAO86E,KAAO8soB,EAAkBr0Y,EAASz4P,MAAQ,IACjD96E,EAAOqhlB,MAAQ9tQ,EAAS8tQ,QAEnB9tQ,EAASz4P,MAQsB,MAA5By4P,EAASz4P,KAAKn2D,OAAO,GACrB3kB,EAAO86E,KAAO8soB,EAAkBr0Y,EAASz4P,YAElB/xE,IAAlBu0C,EAAK0oqB,eAAwCj9sB,IAAdu0C,EAAKpjD,WAAoC6O,IAAdu0C,EAAKujP,MAAwBvjP,EAAKw9B,KAErFx9B,EAAKw9B,KAGb96E,EAAO86E,KAAOx9B,EAAKw9B,KAAK/tE,MAAM,EAAGuwC,EAAKw9B,KAAKwO,YAAY,KAAO,GAAKiqP,EAASz4P,KAF5E96E,EAAO86E,KAAOy4P,EAASz4P,KAFvB96E,EAAO86E,KAAO,IAAMy4P,EAASz4P,KAMjC96E,EAAO86E,KAAO8soB,EAAkB5ntB,EAAO86E,OAE3C96E,EAAOqhlB,MAAQ9tQ,EAAS8tQ,QAnBxBrhlB,EAAO86E,KAAOx9B,EAAKw9B,UACI/xE,IAAnBwqU,EAAS8tQ,MACTrhlB,EAAOqhlB,MAAQ9tQ,EAAS8tQ,MAExBrhlB,EAAOqhlB,MAAQ/jiB,EAAK+jiB,OAkB5BrhlB,EAAOgmtB,SAAW1oqB,EAAK0oqB,SACvBhmtB,EAAO9F,KAAOojD,EAAKpjD,KACnB8F,EAAO6gS,KAAOvjP,EAAKujP,MAEvB7gS,EAAOq2K,OAAS/4H,EAAK+4H,QAEzBr2K,EAAO+gG,SAAWwyO,EAASxyO,SACpB/gG,CACX,CAkCA,SAASootB,EAAkB1jsB,EAAK7iB,GAC5B,OAAO6iB,GAAOA,EAAIzrB,WAAWjD,QAAS6L,GAAYA,EAAQultB,IAAiChE,EAAaJ,YAAxCG,EAAaH,YAAwC2C,EACzH,CAEA,IAAIx1pB,EAAU,CACVkmH,OAAQ,OACRkxiB,YAAY,EACZl9qB,MAAO,SAAeunqB,EAAY/vsB,GAK9B,OAHK+vsB,EAAW13sB,OACZ03sB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,+BAEpC01rB,CACX,EACAn8kB,UAAW,SAAmBm8kB,EAAY/vsB,GACtC,IAAIg5F,EAAqD,UAA5CroF,OAAOo/rB,EAAWv7hB,QAAQh8K,cAYvC,OAVIu3sB,EAAW/wa,QAAUhmM,EAAS,IAAM,KAA2B,KAApB+2mB,EAAW/wa,OACtD+wa,EAAW/wa,UAAO93R,GAGjB6osB,EAAW92nB,OACZ82nB,EAAW92nB,KAAO,KAKf82nB,CACX,GAGAyW,EAAY,CACZhyiB,OAAQ,QACRkxiB,WAAYp3pB,EAAQo3pB,WACpBl9qB,MAAO8lB,EAAQ9lB,MACforF,UAAWtlE,EAAQslE,WAGvB,SAAS6ylB,EAASC,GACd,MAAsC,kBAAxBA,EAAa1tnB,OAAuB0tnB,EAAa1tnB,OAAuD,QAA9CroF,OAAO+1sB,EAAalyiB,QAAQh8K,aACxG,CAEA,IAAImutB,EAAY,CACZnyiB,OAAQ,KACRkxiB,YAAY,EACZl9qB,MAAO,SAAeunqB,EAAY/vsB,GAC9B,IAAI0mtB,EAAe3W,EAOnB,OALA2W,EAAa1tnB,OAASytnB,EAASC,GAE/BA,EAAaE,cAAgBF,EAAaztoB,MAAQ,MAAQytoB,EAAalnI,MAAQ,IAAMknI,EAAalnI,MAAQ,IAC1GknI,EAAaztoB,UAAO/xE,EACpBw/sB,EAAalnI,WAAQt4kB,EACdw/sB,CACX,EACA9ylB,UAAW,SAAmB8ylB,EAAc1mtB,GAWxC,GATI0mtB,EAAa1nb,QAAUynb,EAASC,GAAgB,IAAM,KAA6B,KAAtBA,EAAa1nb,OAC1E0nb,EAAa1nb,UAAO93R,GAGW,kBAAxBw/sB,EAAa1tnB,SACpB0tnB,EAAalyiB,OAASkyiB,EAAa1tnB,OAAS,MAAQ,KACpD0tnB,EAAa1tnB,YAAS9xF,GAGtBw/sB,EAAaE,aAAc,CAC3B,IAAIC,EAAwBH,EAAaE,aAAat1tB,MAAM,KACxDw1tB,EAAyBtF,EAAcqF,EAAuB,GAC9D5toB,EAAO6toB,EAAuB,GAC9BtnI,EAAQsnI,EAAuB,GAEnCJ,EAAaztoB,KAAOA,GAAiB,MAATA,EAAeA,OAAO/xE,EAClDw/sB,EAAalnI,MAAQA,EACrBknI,EAAaE,kBAAe1/sB,CAChC,CAGA,OADAw/sB,EAAaxnnB,cAAWh4F,EACjBw/sB,CACX,GAGAK,EAAY,CACZvyiB,OAAQ,MACRkxiB,WAAYiB,EAAUjB,WACtBl9qB,MAAOm+qB,EAAUn+qB,MACjBorF,UAAW+ylB,EAAU/ylB,WAGrB1oG,EAAI,CAAC,EAGLgzrB,EAAe,mGACfL,EAAW,cACXC,EAAeN,EAAOA,EAAO,UAAYK,EAAW,IAAMA,EAAWA,EAAW,IAAMA,EAAWA,GAAY,IAAML,EAAO,cAAgBK,EAAW,IAAMA,EAAWA,GAAY,IAAML,EAAO,IAAMK,EAAWA,IAchNmJ,GAAU9ksB,EADA,6DACe,aAEzB++rB,GAAa,IAAI/+qB,OAAOg8qB,EAAc,KACtCiD,GAAc,IAAIj/qB,OAAO47qB,EAAc,KACvCmJ,GAAiB,IAAI/krB,OAAOhgB,EAAM,MANxB,wDAMwC,QAAS,QAAS8ksB,IAAU,KAC9EE,GAAa,IAAIhlrB,OAAOhgB,EAAM,MAAOg8rB,EAJrB,uCAImD,KACnEiJ,GAAcD,GAClB,SAASjD,GAAiBphsB,GACtB,IAAIqhsB,EAASJ,EAAYjhsB,GACzB,OAAQqhsB,EAAO9vtB,MAAM6stB,IAAoBiD,EAANrhsB,CACvC,CACA,IAAIuksB,GAAY,CACZ5yiB,OAAQ,SACRhsI,MAAO,SAAkBunqB,EAAY/vsB,GACjC,IAAIqntB,EAAmBtX,EACnB/6qB,EAAKqyrB,EAAiBryrB,GAAKqyrB,EAAiBpuoB,KAAOouoB,EAAiBpuoB,KAAK3nF,MAAM,KAAO,GAE1F,GADA+1tB,EAAiBpuoB,UAAO/xE,EACpBmgtB,EAAiB7nI,MAAO,CAIxB,IAHA,IAAI8nI,GAAiB,EACjBlwnB,EAAU,CAAC,EACXmwnB,EAAUF,EAAiB7nI,MAAMlulB,MAAM,KAClCqF,EAAI,EAAG4mtB,EAAKgK,EAAQ/itB,OAAQ7N,EAAI4mtB,IAAM5mtB,EAAG,CAC9C,IAAI6wtB,EAASD,EAAQ5wtB,GAAGrF,MAAM,KAC9B,OAAQk2tB,EAAO,IACX,IAAK,KAED,IADA,IAAIC,EAAUD,EAAO,GAAGl2tB,MAAM,KACrB66H,EAAK,EAAGu7lB,EAAMD,EAAQjjtB,OAAQ2nH,EAAKu7lB,IAAOv7lB,EAC/Cn3F,EAAG9wB,KAAKujtB,EAAQt7lB,IAEpB,MACJ,IAAK,UACDk7lB,EAAiBt4O,QAAUw3O,EAAkBiB,EAAO,GAAIxntB,GACxD,MACJ,IAAK,OACDqntB,EAAiBvptB,KAAOyotB,EAAkBiB,EAAO,GAAIxntB,GACrD,MACJ,QACIsntB,GAAiB,EACjBlwnB,EAAQmvnB,EAAkBiB,EAAO,GAAIxntB,IAAYumtB,EAAkBiB,EAAO,GAAIxntB,GAG1F,CACIsntB,IAAgBD,EAAiBjwnB,QAAUA,EACnD,CACAiwnB,EAAiB7nI,WAAQt4kB,EACzB,IAAK,IAAIi9gB,EAAM,EAAGwjM,EAAO3yrB,EAAGxwB,OAAQ2/gB,EAAMwjM,IAAQxjM,EAAK,CACnD,IAAI9rY,EAAOrjH,EAAGmvf,GAAK7yhB,MAAM,KAEzB,GADA+mJ,EAAK,GAAKkukB,EAAkBlukB,EAAK,IAC5Br4I,EAAQyltB,eAQTptkB,EAAK,GAAKkukB,EAAkBlukB,EAAK,GAAIr4I,GAASxH,mBAN9C,IACI6/I,EAAK,GAAKsrkB,EAAiB4C,EAAkBlukB,EAAK,GAAIr4I,GAASxH,cACnE,CAAE,MAAOpD,GACLiytB,EAAiBhtsB,MAAQgtsB,EAAiBhtsB,OAAS,2EAA6EjlB,CACpI,CAIJ4/B,EAAGmvf,GAAO9rY,EAAK/pI,KAAK,IACxB,CACA,OAAO+4sB,CACX,EACAzzlB,UAAW,SAAsByzlB,EAAkBrntB,GAC/C,IA3wCS0iB,EA2wCLqtrB,EAAasX,EACbryrB,EA3wCDtS,OADMA,EA4wCQ2ksB,EAAiBryrB,IA3wCKtS,aAAehe,MAAQge,EAA4B,iBAAfA,EAAIle,QAAuBke,EAAIpxB,OAASoxB,EAAI47E,aAAe57E,EAAIjS,KAAO,CAACiS,GAAOhe,MAAM8L,UAAUtF,MAAMuF,KAAKiS,GAAO,GA4wC3L,GAAIsS,EAAI,CACJ,IAAK,IAAIr+B,EAAI,EAAG4mtB,EAAKvorB,EAAGxwB,OAAQ7N,EAAI4mtB,IAAM5mtB,EAAG,CACzC,IAAIixtB,EAASj3sB,OAAOqkB,EAAGr+B,IACnBkxtB,EAAQD,EAAOngoB,YAAY,KAC3BqgoB,EAAYF,EAAO18sB,MAAM,EAAG28sB,GAAO1ztB,QAAQgttB,GAAa8C,IAAkB9vtB,QAAQgttB,GAAap+rB,GAAa5uB,QAAQ8ytB,GAAgBpD,GACpI9qnB,EAAS6unB,EAAO18sB,MAAM28sB,EAAQ,GAElC,IACI9unB,EAAU/4F,EAAQultB,IAA2E5B,EAAmB5qnB,GAAxF4qnB,EAAiB4C,EAAkBxtnB,EAAQ/4F,GAASxH,cAChF,CAAE,MAAOpD,GACL26sB,EAAW11rB,MAAQ01rB,EAAW11rB,OAAS,wDAA2Dra,EAAQultB,IAAgB,UAAV,SAAuB,kBAAoBnwtB,CAC/J,CACA4/B,EAAGr+B,GAAKmxtB,EAAY,IAAM/unB,CAC9B,CACAg3mB,EAAW92nB,KAAOjkD,EAAG1mB,KAAK,IAC9B,CACA,IAAI8oF,EAAUiwnB,EAAiBjwnB,QAAUiwnB,EAAiBjwnB,SAAW,CAAC,EAClEiwnB,EAAiBt4O,UAAS33Y,EAAiB,QAAIiwnB,EAAiBt4O,SAChEs4O,EAAiBvptB,OAAMs5F,EAAc,KAAIiwnB,EAAiBvptB,MAC9D,IAAIojG,EAAS,GACb,IAAK,IAAIv9F,KAAQyzF,EACTA,EAAQzzF,KAAUunB,EAAEvnB,IACpBu9F,EAAOh9F,KAAKP,EAAKxP,QAAQgttB,GAAa8C,IAAkB9vtB,QAAQgttB,GAAap+rB,GAAa5uB,QAAQ+ytB,GAAYrD,GAAc,IAAMzsnB,EAAQzzF,GAAMxP,QAAQgttB,GAAa8C,IAAkB9vtB,QAAQgttB,GAAap+rB,GAAa5uB,QAAQgztB,GAAatD,IAMtP,OAHI3inB,EAAO18F,SACPursB,EAAWvwH,MAAQt+e,EAAO5yF,KAAK,MAE5ByhsB,CACX,GAGAgY,GAAY,kBAEZC,GAAY,CACZxziB,OAAQ,MACRhsI,MAAO,SAAkBunqB,EAAY/vsB,GACjC,IAAIqiC,EAAU0tqB,EAAW92nB,MAAQ82nB,EAAW92nB,KAAK7kF,MAAM2ztB,IACnDE,EAAgBlY,EACpB,GAAI1tqB,EAAS,CACT,IAAImyI,EAASx0K,EAAQw0K,QAAUyziB,EAAczziB,QAAU,MACnD0ziB,EAAM7lrB,EAAQ,GAAG7pC,cACjB2vtB,EAAM9lrB,EAAQ,GACd+lrB,EAAY5ziB,EAAS,KAAOx0K,EAAQkotB,KAAOA,GAC3C1C,EAAgB5B,EAAQwE,GAC5BH,EAAcC,IAAMA,EACpBD,EAAcE,IAAMA,EACpBF,EAAchvoB,UAAO/xE,EACjBs+sB,IACAyC,EAAgBzC,EAAch9qB,MAAMy/qB,EAAejotB,GAE3D,MACIiotB,EAAc5tsB,MAAQ4tsB,EAAc5tsB,OAAS,yBAEjD,OAAO4tsB,CACX,EACAr0lB,UAAW,SAAsBq0lB,EAAejotB,GAC5C,IAAIw0K,EAASx0K,EAAQw0K,QAAUyziB,EAAczziB,QAAU,MACnD0ziB,EAAMD,EAAcC,IACpBE,EAAY5ziB,EAAS,KAAOx0K,EAAQkotB,KAAOA,GAC3C1C,EAAgB5B,EAAQwE,GACxB5C,IACAyC,EAAgBzC,EAAc5xlB,UAAUq0lB,EAAejotB,IAE3D,IAAIqotB,EAAgBJ,EAChBE,EAAMF,EAAcE,IAExB,OADAE,EAAcpvoB,MAAQivoB,GAAOlotB,EAAQkotB,KAAO,IAAMC,EAC3CE,CACX,GAGApO,GAAO,2DAEPqO,GAAY,CACZ9ziB,OAAQ,WACRhsI,MAAO,SAAey/qB,EAAejotB,GACjC,IAAIuotB,EAAiBN,EAMrB,OALAM,EAAe/N,KAAO+N,EAAeJ,IACrCI,EAAeJ,SAAMjhtB,EAChBlH,EAAQsmtB,UAAciC,EAAe/N,MAAS+N,EAAe/N,KAAKpmtB,MAAM6ltB,MACzEsO,EAAelusB,MAAQkusB,EAAelusB,OAAS,sBAE5CkusB,CACX,EACA30lB,UAAW,SAAmB20lB,EAAgBvotB,GAC1C,IAAIiotB,EAAgBM,EAGpB,OADAN,EAAcE,KAAOI,EAAe/N,MAAQ,IAAIhitB,cACzCyvtB,CACX,GAGJrE,EAAQt1pB,EAAQkmH,QAAUlmH,EAC1Bs1pB,EAAQ4C,EAAUhyiB,QAAUgyiB,EAC5B5C,EAAQ+C,EAAUnyiB,QAAUmyiB,EAC5B/C,EAAQmD,EAAUvyiB,QAAUuyiB,EAC5BnD,EAAQwD,GAAU5yiB,QAAU4yiB,GAC5BxD,EAAQoE,GAAUxziB,QAAUwziB,GAC5BpE,EAAQ0E,GAAU9ziB,QAAU8ziB,GAE5BzztB,EAAQ+utB,QAAUA,EAClB/utB,EAAQgvtB,WAAaA,EACrBhvtB,EAAQivtB,YAAcA,EACtBjvtB,EAAQ2zC,MAAQA,EAChB3zC,EAAQkxtB,kBAAoBA,EAC5BlxtB,EAAQ++H,UAAYA,EACpB/+H,EAAQwxtB,kBAAoBA,EAC5BxxtB,EAAQmS,QAxTR,SAAiBwhtB,EAASC,EAAazotB,GACnC,IAAI0otB,EA9jCR,SAAgBvqtB,EAAQwjB,GACpB,IAAIe,EAAMvkB,EACV,GAAIwjB,EACA,IAAK,IAAI/mB,KAAO+mB,EACZe,EAAI9nB,GAAO+mB,EAAO/mB,GAG1B,OAAO8nB,CACX,CAsjC4BvoB,CAAO,CAAEq6K,OAAQ,QAAUx0K,GACnD,OAAO4zH,EAAUyylB,EAAkB79qB,EAAMggrB,EAASE,GAAoBlgrB,EAAMigrB,EAAaC,GAAoBA,GAAmB,GAAOA,EAC3I,EAsTA7ztB,EAAQk7C,UApTR,SAAmBqgI,EAAKpwK,GAMpB,MALmB,iBAARowK,EACPA,EAAMx8C,EAAUprF,EAAM4nI,EAAKpwK,GAAUA,GACd,WAAhBo0c,EAAOhkS,KACdA,EAAM5nI,EAAMorF,EAAUw8C,EAAKpwK,GAAUA,IAElCowK,CACX,EA8SAv7K,EAAQk7O,MA5SR,SAAe44e,EAAMC,EAAM5otB,GAWvB,MAVoB,iBAAT2otB,EACPA,EAAO/0lB,EAAUprF,EAAMmgrB,EAAM3otB,GAAUA,GACf,WAAjBo0c,EAAOu0Q,KACdA,EAAO/0lB,EAAU+0lB,EAAM3otB,IAEP,iBAAT4otB,EACPA,EAAOh1lB,EAAUprF,EAAMogrB,EAAM5otB,GAAUA,GACf,WAAjBo0c,EAAOw0Q,KACdA,EAAOh1lB,EAAUg1lB,EAAM5otB,IAEpB2otB,IAASC,CACpB,EAiSA/ztB,EAAQg0tB,gBA/RR,SAAyBhmsB,EAAK7iB,GAC1B,OAAO6iB,GAAOA,EAAIzrB,WAAWjD,QAAS6L,GAAYA,EAAQultB,IAA4BhE,EAAa59a,OAAnC29a,EAAa39a,OAA8Bkgb,EAC/G,EA8RAhvtB,EAAQ0xtB,kBAAoBA,EAE5BrstB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,GAErD,CA/5C+DpB,CAAQE,E,yBCOhE,SAAW5D,GAAU,aAIzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIvuH,EAAS8vC,EAAS,IACtB,OAAQz4C,GACJ,IAAK,IACD,OAAOi3H,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARIvuH,GADW,IAAX8vC,EACUw+E,EAAgB,UAAY,UACpB,IAAXx+E,EACGw+E,GAAiBC,EAAW,UAAY,WAC3Cz+E,EAAS,EACNw+E,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARItuH,GADW,IAAX8vC,EACUw+E,EAAgB,SAAW,SACnB,IAAXx+E,EACGw+E,GAAiBC,EAAW,SAAW,WAC1Cz+E,EAAS,EACNw+E,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARItuH,GADW,IAAX8vC,EACUw+E,EAAgB,MAAQ,MAChB,IAAXx+E,EACGw+E,GAAiBC,EAAW,MAAQ,QACvCz+E,EAAS,EACNw+E,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANIvuH,GADW,IAAX8vC,EACUw+E,GAAiBC,EAAW,MAAQ,OAC5B,IAAXz+E,EACGw+E,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARIvuH,GADW,IAAX8vC,EACUw+E,GAAiBC,EAAW,QAAU,UAC9B,IAAXz+E,EACGw+E,GAAiBC,EAAW,SAAW,WAC1Cz+E,EAAS,EACNw+E,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARIvuH,GADW,IAAX8vC,EACUw+E,GAAiBC,EAAW,OAAS,QAC7B,IAAXz+E,EACGw+E,GAAiBC,EAAW,OAAS,SACxCz+E,EAAS,EACNw+E,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,QAI9D,CAES7gI,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFC,MAC5F,KAEJC,YACI,8DAA8DD,MAC1D,KAERghI,kBAAkB,EAClB9gI,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,mBAEnB,EACA36F,QAAS,iBACTC,SAAU,WACN,OAAQod,KAAKs9E,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAEnB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNC,EAAGu+H,EACHt+H,GAAIs+H,EACJr+H,EAAGq+H,EACHp+H,GAAIo+H,EACJn+H,EAAGm+H,EACHl+H,GAAIk+H,EACJj+H,EAAGi+H,EACHh+H,GAAIg+H,EACJ/9H,EAAG+9H,EACH99H,GAAI89H,EACJ79H,EAAG69H,EACH59H,GAAI49H,GAERt9H,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/KyCC,CAAQ,EAAQ,O,yBCC1D,IAAIgf,EAAmC,WACnC,SAASA,IACLzZ,OAAO0hC,iBAAiBxrB,KAAM,CAC1B04sB,WAAY,CACRjtrB,UAAU,EACV9lC,OAAO,IAGnB,CAyBA,OApBA4d,EAAkBnD,UAAUgG,QAAU,WACtC,EAKA7C,EAAkBnD,UAAU0K,WAAa,WACrC,QAAI9K,KAAK04sB,aACL14sB,KAAK04sB,YAAa,GACX,EAGf,EAKAn1sB,EAAkBnD,UAAUo4H,QAAU,WAClC,OAAOx4H,KAAK04sB,UAChB,EACOn1sB,CACX,CAlCsC,GAmCtCm+E,EAAOj9F,QAAU8e,C,+BCzCjB,IAAI88F,EAAc,EAAQ,OACtB4pI,EAAY,EAAQ,OAExBvoJ,EAAOj9F,QAAU,SAAU6mD,EAAQ9gD,EAAK+5C,GACtC,IAEE,OAAO87D,EAAY4pI,EAAUngP,OAAOyrC,yBAAyB+V,EAAQ9gD,GAAK+5C,IAC5E,CAAE,MAAOt6B,GAAqB,CAChC,C,yECNA,MAAM0usB,EAAsB,QAC5B,SAASC,EAAa/lmB,EAAKltH,GACJ,mBAARktH,EACPA,EAAIltH,GACGktH,IACPA,EAAIh9G,QAAUlQ,EAEtB,CAMA,SAASkztB,EAAUr4J,EAAas4J,GAC5Bt4J,EAAYj0gB,OAASusqB,CACzB,CACA,SAASC,EAAYv4J,EAAaw4J,GAC9B,IAAIC,EAAe9ktB,UAAUC,OAAS,QAAsB,IAAjBD,UAAU,GAAgBA,UAAU,GAAKwktB,EACpF,MAAMO,EAAgB,GACtB14J,EAAYt3hB,SAAW8vrB,EAAajmtB,IAAKomtB,IAErC,MAAMC,EAAiB54J,EAAYt3hB,SAASruB,KAAM+uC,GAAUA,EAAQqvqB,KAAkBE,EAAYF,IAGlG,OAAKG,GAAmBD,EAAYpjtB,OAAQmjtB,EAAcvjrB,SAASyjrB,IAKnEF,EAAcpltB,KAAKsltB,GACnBtvtB,OAAOC,OAAOqvtB,EAAgBD,GACvBC,GANI,IACAD,IAOnB,CACA,SAASE,EAAUtjtB,GACf,IAAIkjtB,EAAe9ktB,UAAUC,OAAS,QAAsB,IAAjBD,UAAU,GAAgBA,UAAU,GAAKwktB,EACpF,MAAMW,EAAW,CACb/sqB,OAAQ,GACRrjB,SAAU,IAId,OAFA2vrB,EAAUS,EAAUvjtB,EAAKw2C,QACzBwsqB,EAAYO,EAAUvjtB,EAAKmzB,SAAU+vrB,GAC9BK,CACX,CAgCA,SAASC,EAAevjf,EAAOnjH,GAC3B,IAAI,OAAEjsH,EAAQ,IAAI,MAAEF,EAAO,IAAI,OAAE6vgB,GAAQ,EAAM,aAAE0iN,EAAa,KAAEjpsB,EAAK,KAAEja,EAAK,QAAEnG,EAAQ,QAAE86B,EAAS,GAAG,gBAAE8urB,EAAgB,WAAEC,KAAgBrnrB,GAAU4jM,EAClJ,MAAM0jf,GAAY,IAAAz6sB,QAAO,MACnB06sB,GAAW,IAAA16sB,UACX26sB,EAAc,KACXF,EAAU7jtB,UACf8jtB,EAAS9jtB,QAAU,IAAI,KAAQ6jtB,EAAU7jtB,QAAS,CAC9Cma,OACAja,KAAMsjtB,EAAUtjtB,EAAMkjtB,GACtBrptB,UACA86B,YAEJkurB,EAAa/lmB,EAAK8mmB,EAAS9jtB,WAEzBgktB,EAAe,KACjBjB,EAAa/lmB,EAAK,MACd8mmB,EAAS9jtB,UACT8jtB,EAAS9jtB,QAAQkB,UACjB4itB,EAAS9jtB,QAAU,OA+C3B,OA5CA,IAAAgK,WAAU,KAxFd,IAAoBupB,EAAO0wrB,GAyFdvjN,GAAUojN,EAAS9jtB,SAAWjG,IAzFvBw5B,EA0FGuwrB,EAAS9jtB,QA1FLiktB,EA0FclqtB,EAzFrCw5B,EAAMx5B,QAAU,IACTkqtB,KA0FJ,CACCvjN,EACA3mgB,KAEJ,IAAAiQ,WAAU,MACD02f,GAAUojN,EAAS9jtB,SACpBgjtB,EAAUc,EAAS9jtB,QAAQkJ,OAAOhJ,KAAMA,EAAKw2C,SAElD,CACCgqd,EACAxggB,EAAKw2C,UAET,IAAA1sC,WAAU,MACD02f,GAAUojN,EAAS9jtB,SAAWE,EAAKmzB,UACpC6vrB,EAAYY,EAAS9jtB,QAAQkJ,OAAOhJ,KAAMA,EAAKmzB,SAAU+vrB,IAE9D,CACC1iN,EACAxggB,EAAKmzB,YAET,IAAArpB,WAAU,KACD85sB,EAAS9jtB,UACV0ggB,GACAsjN,IACApysB,WAAWmysB,IAEXD,EAAS9jtB,QAAQO,OAAOqjtB,KAE7B,CACCljN,EACA3mgB,EACAmG,EAAKw2C,OACLx2C,EAAKmzB,SACLuwrB,KAEJ,IAAA55sB,WAAU,KACN+5sB,IACO,IAAIC,KAEZ,IACkB,gBAAoB,SAAU/vtB,OAAOC,OAAO,CAC7D8oH,IAAK6mmB,EACLp7sB,KAAM,MACN1X,OAAQA,EACRF,MAAOA,GACR0rC,GAAQonrB,EACf,CACA,MAAM78oB,GAAsB,IAAAyhR,YAAWm7X,GAEvC,SAASQ,EAAiB/psB,EAAMgqsB,GAE5B,OADA,KAAQlkpB,SAASkkpB,IACI,IAAA57X,YAAW,CAAChsT,EAAOygF,IAAoB,gBAAoBl2C,EAAO7yE,OAAOC,OAAO,CAAC,EAAGqoC,EAAO,CACxGygF,IAAKA,EACL7iG,KAAMA,KAGlB,CACA,MAGMiqsB,EAA2BF,EAAiB,WAAY,K,0EC9I9D,QATuB,IAA4B,SAASrlnB,EAAM5wG,GAChE,OAAO,OAAe4wG,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,OCGc/uG,EDHI7B,ECIb,WACL,OAAO6B,CACT,GDLE,UAAY,ICEhB,IAAkBA,CDAlB,EAPwC45N,EAAA,EEXxC,IAII26f,EAAYrxsB,KAAKC,ICQrB,SDGkB4rF,ECLS,EDMrB18D,EAAQ,EACRmirB,EAAa,EAEV,WACL,IAAI9/E,EAAQ6/E,IACRr4qB,EApBO,IAoBiBw4lB,EAAQ8/E,GAGpC,GADAA,EAAa9/E,EACTx4lB,EAAY,GACd,KAAM7J,GAzBI,IA0BR,OAAO7jC,UAAU,QAGnB6jC,EAAQ,EAEV,OAAO08D,EAAK5zF,WAAMhK,EAAW3C,UAC/B,GAjBF,IAAkBugG,EACZ18D,EACAmirB,C,gDENN,QAJA,SAAmB7uqB,EAAQ9gD,GACzB,OAAiB,MAAV8gD,GAAkB9gD,KAAOV,OAAOwhD,EACzC,E,eCuBA,QAJA,SAAeA,EAAQu9B,GACrB,OAAiB,MAAVv9B,IAAkB,OAAQA,EAAQu9B,EAAM,EACjD,C,yBCyBA6Y,EAAOj9F,QArCH,SAAoBynO,EAASwqH,GACzB,GAAuB,iBAAZxqH,EACP,MAAM,IAAI3kN,MAAM,6BAEpBzd,OAAO0hC,iBAAiBxrB,KAAM,CAC1BksN,QAAS,CACLvmO,MAAOumO,EACPxgM,YAAY,GAEhBisG,SAAU,CACNhyI,MAAO+wV,EAAY/+M,SACnBjsG,YAAY,GAEhB5d,UAAW,CACPnoB,MAAO+wV,EAAY5oU,UACnB4d,YAAY,GAEhB2wS,KAAM,CACF12U,MAAO+wV,EAAYra,KACnB3wS,YAAY,GAEhBxd,YAAa,CACTvoB,MAA0C,iBAA5B+wV,EAAYxoU,YACpBwoU,EAAYxoU,YACZ,KACNwd,YAAY,GAEhBwnW,MAAO,CACHvtY,MAAwC,iBAA1B+wV,EAAY0nH,UACpB1nH,EAAY0nH,UACZ,KACN1ya,YAAY,IAGxB,C,+BCpDJ,IAAI20E,EAAc,EAAQ,OACtB4f,EAAQ,EAAQ,OAChBz+B,EAAU,EAAQ,OAElBoxK,EAAU9oQ,OACV5I,EAAQm/G,EAAY,GAAGn/G,OAG3BwgG,EAAOj9F,QAAUw7H,EAAM,WAGrB,OAAQ2yI,EAAQ,KAAKzwK,qBAAqB,EAC5C,GAAK,SAAUsf,GACb,MAAuB,WAAhBjgB,EAAQigB,GAAmBvgH,EAAMugH,EAAI,IAAMmxJ,EAAQnxJ,EAC5D,EAAImxJ,C,YCFJlxK,EAAOj9F,QANP,SAAsB+F,GACpB,OAAO,SAAS8gD,GACd,OAAiB,MAAVA,OAAiBx0C,EAAYw0C,EAAO9gD,EAC7C,CACF,C,+BCTA,IAAIq5U,EAAmC,mBAAXr/U,QAAuD,iBAAvBA,OAAOgwC,YAG/DuvS,EAFY,EAAQ,MAERH,CAAU,6BAEtBw2Y,EAAsB,SAAqBz0tB,GAC9C,QAAIk+U,GAAkBl+U,GAA0B,iBAAVA,GAAsBnB,OAAOgwC,eAAe7uC,IAGtD,uBAArBo+U,EAAUp+U,EAClB,EAEI00tB,EAAoB,SAAqB10tB,GAC5C,QAAIy0tB,EAAoBz0tB,IAGP,OAAVA,GACW,iBAAVA,GACiB,iBAAjBA,EAAMyO,QACbzO,EAAMyO,QAAU,GACK,mBAArB2vU,EAAUp+U,IACkB,sBAA5Bo+U,EAAUp+U,EAAMstG,OAClB,EAEIqnnB,EAA6B,WAChC,OAAOF,EAAoBjmtB,UAC5B,CAFgC,GAIhCimtB,EAAoBC,kBAAoBA,EAExC34nB,EAAOj9F,QAAU61tB,EAA4BF,EAAsBC,C,kBChCnE,IAAIE,EAAW,EAAQ,OACnBrznB,EAAQ,EAAQ,OAsBpBxF,EAAOj9F,QAZP,SAAiB6mD,EAAQu9B,GAMvB,IAHA,IAAIryE,EAAQ,EACRpC,GAHJy0E,EAAO0xoB,EAAS1xoB,EAAMv9B,IAGJl3C,OAED,MAAVk3C,GAAkB90C,EAAQpC,GAC/Bk3C,EAASA,EAAO47C,EAAMre,EAAKryE,OAE7B,OAAQA,GAASA,GAASpC,EAAUk3C,OAASx0C,CAC/C,C,yBCnBA4qF,EAAOj9F,QAAU,+C,YCDjB,IAGI6uU,EAHY7nN,SAASrrG,UAGIpZ,SAqB7B06F,EAAOj9F,QAZP,SAAkBiwG,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO4+N,EAAajzT,KAAKq0F,EAC3B,CAAE,MAAO1vG,GAAI,CACb,IACE,OAAQ0vG,EAAO,EACjB,CAAE,MAAO1vG,GAAI,CACf,CACA,MAAO,EACT,C,+BCrBA,EAAQ,M,o8DCUJw1tB,EAQAC,EAUAC,E,KAOJ,SAASC,EAAgBrosB,GACrB,OAAOA,IAAQA,EAAI9nB,KAAO8nB,EAAIvU,GAClC,CChBA,SAAS68sB,IACL,IAAIC,EAXkB,oBAAX1ztB,OACAA,OAAOyrC,QAEU,oBAAZA,QACLA,aAGP,EAKJ,OAAIiorB,GAAiBA,EAAc50tB,IACxB40tB,EAEJ,CACH50tB,IAAK,WAAc,EACnB4mB,KAAM,WAAc,EACpB9C,MAAO,WAAc,EACrB+wsB,SAAU,WAAc,EAEhC,CACA,SAASjusB,EAAKijB,GACV8qrB,IAAa/tsB,KAAK,yBAA2BijB,EACjD,CCLA,SAASirrB,EAAWzosB,GAChB,IAAI0tqB,EAAU,CAAC,EACf,IAAK,IAAI1tpB,KAAQhgB,EACb,GAAIxoB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAKggB,GAAO,CACjD,IAAI3sC,EAAQ2sB,EAAIggB,GACZ3sC,UACAq6rB,EAAQ1tpB,GAAQ3sC,EAExB,CAEJ,OAAOq6rB,CACX,CACA,SAAS/6pB,EAAM3S,GACX,GAAIA,EAAK,CACL,IAAIG,EAAM9I,KAAKC,UAAU0I,GACzB,GAAIG,EACA,OAAO9I,KAAKyuB,MAAM3lB,EAE1B,CACA,OAAOH,CACX,CACA,SAAS+jN,EAAK/jN,KAAQ8f,GAClB,IAAI4orB,EAAS,CAAC,EACd,IAAK,IAAI76sB,KAAKmS,EACNxoB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAKnS,KAA2B,GAArBiyB,EAAM7pC,QAAQ4X,KAC9D66sB,EAAO76sB,GAAKmS,EAAInS,IAGxB,OAAO8kB,EAAM+1rB,EACjB,CACA,SAASngtB,EAAKoiN,EAAYg+f,GAEtB,IADA,IAAIr1tB,EAAIq3N,EAAW7oN,OACZxO,KAAK,CACR,IAAIotB,EAAOiqM,EAAWr3N,GAClByqH,GAAQ,EACZ,IAAK,IAAI/9E,KAAQ2orB,EACb,GAAKnxtB,OAAOsW,UAAUxU,eAAeyU,KAAK46sB,EAAc3orB,IAGpDtf,EAAKsf,KAAU2orB,EAAa3orB,GAAO,CACnC+9E,GAAQ,EACR,KACJ,CAEJ,GAAIA,EACA,OAAOr9F,CAEf,CACJ,CACA,SAASkosB,EAAQ5osB,EAAK6osB,EAAUC,GAC5B,GAAK9osB,GAAQA,EAAI+osB,OAAjB,CAGA,IAAIjylB,EAAOnkG,EAAM3S,EAAI+osB,OAAOF,IAC5B,OAAI/xlB,GAAQA,EAAK71H,MAAQ6ntB,EACjBhylB,EAAK71H,OAAS6ntB,EACPhylB,OADX,EAKOA,CARX,CAUJ,C,ibFjFA,SAAWoxlB,GACPA,EAAmB,QAAI,UACvBA,EAAmB,QAAI,UACvBA,EAAmB,QAAI,UACvBA,EAAoB,SAAI,WACxBA,EAAoB,SAAI,UAC3B,CAND,CAMGA,IAAcA,EAAY,CAAC,IAE9B,SAAWC,GACPA,EAAgC,cAAI,gBACpCA,EAA6B,WAAI,aACjCA,EAA+B,aAAI,eACnCA,EAAuC,qBAAI,aAC3CA,EAAoC,kBAAI,oBACxCA,EAA8B,YAAI,cAClCA,EAA2B,SAAI,UAClC,CARD,CAQGA,IAAqBA,EAAmB,CAAC,IAE5C,SAAWC,GACPA,EAA8B,kBAAI,mBAClCA,EAAyB,aAAI,iBAC7BA,EAAuB,WAAI,eAC3BA,EAA2B,eAAI,gBAClC,CALD,CAKGA,IAAeA,EAAa,CAAC,IGxBhC,MAAMY,UAAoB/zsB,MACtB,WAAA9G,CAAY2vF,GACR/8C,MAAM+8C,GACNtmG,OAAOmW,eAAeD,gBAAiBI,UAC3C,ECJJ,SAASmjG,EAASjxF,GACd,MAA+C,oBAAxCxoB,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,EAC1C,CACA,SAASrC,EAASqC,GACd,MAA+C,oBAAxCxoB,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,EAC1C,CAIA,SAASO,EAAW/d,GAChB,QAASA,GAA+B,sBAAzB,CAAC,EAAE9N,SAASqZ,KAAKvL,EACpC,CCRA,MAAMymtB,UAAqBD,EACvB,WAAA76sB,CAAY2jK,EAAQyzD,EAAY+xD,GAC5B,IAAIpmR,EACJ6vC,MAAkC,QAA3B7vC,EAAKq0N,EAAW5tN,aAA0B,IAAPzG,EAAgBA,EAAK+3sB,EAAaC,eAC5Ex7sB,KAAKzM,KAAO,eACZyM,KAAK4pR,KAAO,KACZ5pR,KAAKokK,OAASA,EACdpkK,KAAK63N,WAAaA,EACd+xD,IACA5pR,KAAK4pR,KAAOA,EAEpB,CACA,SAAI3/Q,GAAU,OAAOjK,KAAK63N,WAAW5tN,KAAO,CAC5C,aAAIwxsB,GAAc,OAAOz7sB,KAAKiK,KAAO,CACrC,qBAAI46E,GAAsB,OAAO7kF,KAAK63N,WAAWhzI,iBAAmB,CACpE,oBAAI62nB,GAAqB,OAAO17sB,KAAK6kF,iBAAmB,CACxD,gBAAI82nB,GAAiB,OAAO37sB,KAAK07sB,gBAAkB,CACnD,SAAInzsB,GAAU,OAAOvI,KAAK63N,WAAWtvN,KAAO,CAC5C,kBAAOqzsB,CAAY/vnB,GACf,IAAIroF,EACJ,IAAKqoF,EACD,OAAO,KAEX,MAAMge,EAAQ,qHACRgymB,EAAahwnB,EAAOtjG,QAAQ,KAC5B67K,EAASv4E,EAAO/wF,MAAM,EAAG+gtB,GACzBh6qB,EAAYgqD,EAAO/wF,MAAM+gtB,EAAa,GACtC17pB,EAAS,CAAC,EAChB,IAAIn8D,EACJ,KAA2C,QAAnCA,EAAQ6lH,EAAMxkF,KAAKwc,KACvBse,EAAOn8D,EAAM,IAA2B,QAAnBwf,EAAKxf,EAAM,UAAuB,IAAPwf,EAAgBA,EAAKxf,EAAM,GAE/E,OAAO,IAAIu3tB,EAAan3iB,EAAQjkH,EACpC,CACA,+BAAO27pB,CAAyB90nB,EAAU,CAAC,GACvC,IAAIxjF,EACJ,OAAIqP,EAAWm0E,aAAyC,EAASA,EAAQnzF,KAC9DmzF,EAAQnzF,IAAI,oBAEuB,QAAtC2P,EAAKwjF,EAAQ,2BAAwC,IAAPxjF,EAAgBA,EAAKwjF,EAAQ,mBACvF,ECvCJ,SAAS+0nB,EAAgB3ntB,GAGrB,IAFA,IACIuvF,EAAS,GACJ/9F,EAAI,EAA8BA,EAAIwO,IAAUxO,EACrD+9F,GAHgB,gEAGQn+F,KAAKQ,MADZg2tB,GACkBx2tB,KAAKm+F,WAE5C,OAAOA,CACX,CACA,SAASlgD,EAAM+qQ,GACX,OAAO,IAAI73S,QAAQ,SAAUC,GACzB6Q,WAAW7Q,EAAS43S,EACxB,EACJ,CACA,SAASyta,EAAOxpsB,EAAKypsB,GACjB,MAAM5lpB,EAAQ7jD,EAAIvxB,MAAMg7tB,GACxB,MAAO,CACH5lpB,EAAM,GACNA,EAAMvpC,OAAO,EAAGupC,EAAMliE,QAAQ8J,KAAKg+sB,GAE3C,CCvBA,SAASC,EAAc1unB,GACnB,MAAO,uBAAuBvrG,KAAKurG,EACvC,CAcA,SAAS2unB,EAAc9psB,GACnB,IAAIG,EAAM,GACV,GAAY,OAARH,EACA,IAAK,IAAI9nB,KAAO8nB,EACRxoB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAK9nB,SAC7BsM,IAAbwb,EAAI9nB,IACS,OAAb8nB,EAAI9nB,IACJioB,EAAI3e,KAAKtJ,EAAM,IAAM89F,mBAAmBh2E,EAAI9nB,KAIxD,OAAIioB,EAAIre,OACG,IAAMqe,EAAIvU,KAAK,KAGf,EAEf,CACA,SAASm+sB,EAAoBxzoB,GACzB,GAAKA,EAAL,CAGA,IAAIyzoB,EAAUzzoB,EAAK9kF,QAAQ,cAAe,IAE1C,OADUu4tB,EAAQv4tB,QAAQ,OAAQ,GAFlC,CAIJ,CFIAw3tB,EAAaC,cAAgB,yBG3C7B,MAAMe,UAAqBjB,EACvB,WAAA76sB,CAAY0wI,EAAK65I,GACb33O,MAAM89F,GACNnxI,KAAKzM,KAAO,eACZyM,KAAKy7sB,UAAY,WACjBz7sB,KAAK27sB,aAAexqkB,EACpBnxI,KAAKw8sB,UAAY,WACjBx8sB,KAAKy8sB,QAAU,WACfz8sB,KAAK08sB,YAAc,GACf1xb,IACAhrR,KAAKgrR,IAAMA,EAEnB,ECVJ,SAAS2xb,IACL,OAAOZ,EAAgB,GAC3B,CAIA,SAASa,EAAUC,EAAKjttB,EAAU,CAAC,GAE/B,OADeystB,EAAoBzstB,EAAQy7F,SAAWwxnB,EAAIjttB,QAAQy7F,MAEtE,CACA,SAASyxnB,EAAgBD,EAAKjttB,EAAU,CAAC,GACrC,MAAMy7F,EAASuxnB,EAAUC,EAAKjttB,GAE9B,OADgBy7F,EAAO9iG,QAAQ,WAAa,EAAI8iG,EAASA,EAAS,SAEtE,CAMA,SAAS0xnB,EAAaF,EAAKjttB,GACvB,GAAIuE,UAAUC,OAAS,EACnB,MAAM,IAAImotB,EAAa,wEAG3B,IAAIS,EAAeX,GADnBzstB,EAAUA,GAAW,CAAC,GACyBottB,eAAiBH,EAAIjttB,QAAQottB,aACxE3xnB,EAASuxnB,EAAUC,EAAKjttB,GACxBqttB,EAAcZ,EAAoBzstB,EAAQqttB,cAAgBJ,EAAIjttB,QAAQqttB,YACtEC,EAAWb,EAAoBzstB,EAAQsttB,WAAaL,EAAIjttB,QAAQsttB,SAChEC,EAAYd,EAAoBzstB,EAAQuttB,YAAcN,EAAIjttB,QAAQuttB,UAClEC,EAAYf,EAAoBzstB,EAAQwttB,YAAcP,EAAIjttB,QAAQwttB,UAClEv2nB,EAAUi2nB,EAAgBD,EAAKjttB,GAMnC,MAAO,CACHy7F,OAAQA,EACR2xnB,aAPJA,EAAeA,GAAgBn2nB,EAAU,gBAQrCo2nB,YAPJA,EAAcA,GAAep2nB,EAAU,eAQnCq2nB,SAPJA,EAAWA,GAAYr2nB,EAAU,YAQ7Bu2nB,UAPJA,EAAYA,GAAav2nB,EAAU,aAQ/Bs2nB,UAPJA,EAAYA,GAAat2nB,EAAU,aASvC,CC/CA,SAASw2nB,EAAgBR,EAAKS,GAC1B,MAEMC,EAAY,CACdlynB,OAHWwxnB,EAAIjttB,QAAQy7F,OAIvB64B,KAHS64lB,EAAaF,EAAKS,GAI3B/3nB,SAAU+3nB,EAAY/3nB,SACtBi4nB,YAAaF,EAAYE,YACzBr0b,aAAcm0b,EAAYn0b,aAC1Bs0b,aAAcH,EAAYG,aAC1BrprB,OAAQkprB,EAAYlprB,OACpBzkC,MAAO2ttB,EAAY3ttB,MACnB08F,MAAOixnB,EAAYjxnB,MACnBqxnB,gBAAiBJ,EAAYI,gBAC7BC,UAAWL,EAAYK,UACvBC,YAAaN,EAAYM,aAE7B,OAAyB,IAArBN,EAAYO,KACLN,EAEMzztB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGwztB,GAAY,CAAEO,aAAcR,EAAYQ,aAAcC,oBAAqBT,EAAYS,oBAAqBC,cAAeV,EAAYU,eAE5L,CCxBA,MAAMC,EAAuB,iBACvBC,EAAwB,IACxBC,EAAsB,EACtBC,EAAyB,IACzBC,EAAyB,MACzBC,EAAqB,qBACrBC,EAAqB,qBACrBC,EAAoB,oBACpBC,EAA2B,2BAC3BC,EAAkC,kCAClCC,EAA4B,4BAC5BC,EAA4B,4BAC5BC,EAA2B,cAC3BC,EAAuB,UACvBC,EAA4B,eAC5BC,EAA4B,eAC5BC,EAAsB,GACtBC,GAAsB,IACtBC,GAAgC,OAChCC,GAAkB,QCjBxB,MAAMC,WAAqB/D,EACvB,WAAA76sB,CAAYioG,EAAKsiL,EAAKjzP,GAElBsb,MADgBq1D,EAAIizmB,cAEpB37sB,KAAKzM,KAAO,eACZyM,KAAK27sB,aAAejzmB,EAAIizmB,aACxB37sB,KAAKy7sB,UAAY/ymB,EAAI+ymB,UACrBz7sB,KAAKw8sB,UAAY9zmB,EAAI8zmB,UACrBx8sB,KAAKy8sB,QAAU/zmB,EAAI+zmB,QACnBz8sB,KAAK08sB,YAAch0mB,EAAIg0mB,YACnB1xb,IACAhrR,KAAKgrR,IAAMA,GAEXjzP,IACA/3B,KAAK+3B,KAAOA,EAEpB,EChBJ,MAAMunrB,WAAmBhE,EACrB,WAAA76sB,CAAYg7sB,EAAWrb,EAASx2a,GAC5Bv2O,MAAM+spB,GACNpgsB,KAAK4pR,KAAO,KACZ5pR,KAAKzM,KAAO,aACZyM,KAAKy7sB,UAAYA,EACjBz7sB,KAAK27sB,aAAevb,EACpBpgsB,KAAKiK,MAAQwxsB,EACbz7sB,KAAK6kF,kBAAoBu7mB,EACrBx2a,IACA5pR,KAAK4pR,KAAOA,EAEpB,ECdJ,MAAMhwR,GAAI,SAAU6Y,GAAO,OAAOkzE,KAAKlzE,EAAM,EACvC5Y,GAAI,SAAU4Y,GAAO,OAAO6yE,KAAK7yE,EAAM,EACvC7sB,GAAsB,oBAAXu/F,OAAyB,KAAOA,OCC3Co6nB,GAAiB,oCACvB,SAASt+T,KACL,MAA2B,oBAAbx4Z,UAA8C,oBAAXtB,MACrD,CACA,SAASq4tB,KACL,IAAKv+T,KACD,OAAO,EAEX,MAAMjoK,EAAevwP,SAASuwP,aAC9B,QAASA,GAAgBA,GAAgB,EAC7C,CACA,SAAS6oG,KACL,OAAOvzV,UAAUC,SACrB,CACA,SAASkxtB,KACL,MAAMC,EAAQ79X,KACd,OAAO69X,IAAUH,GAAer9tB,KAAKw9tB,EACzC,CACA,SAASC,KACL,IAAK1+T,KACD,OAAO,EAEX,MAAMjoK,EAAevwP,SAASuwP,aAC9B,IAAI4me,EAAW5me,GAAgBA,EAAe,GAC9C,YAAkC,IAAvB7xP,OAAOo/F,cAAgCq5nB,CAItD,CACA,SAASC,KACL,OAAO,MAAOj6tB,SAEa,IAAbA,GAAE0kG,QACa,oBAAfjF,UAClB,CACA,SAASy6nB,KACL,OAAOD,IACX,CACA,SAASE,KACL,MAA8B,oBAAhB7ynB,WAClB,CACA,SAAS8ynB,KACL,OAAOF,MAA4BC,IACvC,CACA,SAASE,KACL,QAAKh/T,MAG+B,WAA7B95Z,OAAO8hG,SAASx/E,QAC3B,CACA,SAASy2sB,KACL,OAAOj/T,MAA4C,cAA7B95Z,OAAO8hG,SAASylM,QAC1C,CACA,SAASyxb,KACL,OAAQX,WACwB,IAArBr4tB,OAAOi5tB,WACdL,MACAF,IACR,CACA,SAASrzf,KACL,OAAOy0L,MAAoC,oBAAd3yZ,gBAA4D,IAAxBA,UAAUC,WACtE,mBAAmBrM,KAAKoM,UAAUC,aAAepH,OAAOk5tB,QACjE,CCxDA,IACIC,GADAC,GAA4B,EA4DhC,SAASC,GAAY3D,EAAKjttB,GACtB,IAAI4T,EAEJ,GADA5T,EAAUA,GAAW,CAAC,EAClBittB,EAAIjttB,QAAQ6wtB,wBACZ,IAAK,MAAMrhgB,KAAey9f,EAAIjttB,QAAQ6wtB,wBAClCrhgB,EAAYxvN,GAGpB,IAAI69F,EAAM79F,EAAQ69F,IAAKlpD,EAAS30C,EAAQ20C,OAAQlwC,EAAOzE,EAAQyE,KAAMqstB,EAAiB9wtB,EAAQ8wtB,eAAgBC,EAAc/wtB,EAAQ+wtB,YAAa14b,GAA8C,IAA5Br4R,EAAQq4R,gBACpIpyP,EAAzBgnrB,EAAIjttB,QAAQgxtB,YAAmC/qrB,QAASgrrB,EAAYhE,EAAIiE,eAAeC,aAAalE,EAAIjttB,QAAQoxtB,SAAUC,EAAgBrxtB,EAAQqxtB,cAAeC,EAA6C,QAAhC19sB,EAAKq5sB,EAAIjttB,QAAQsxtB,iBAA8B,IAAP19sB,EAAgBA,EAAK,EACzP,GAAI5T,EAAQuxtB,cAAe,CACvB,IACIC,EADgBP,EAAUQ,aACK5znB,GACnC,GAAI2znB,GAAkBv4sB,KAAKC,MAAQ,IAAOs4sB,EAAer5nB,UACrD,OAAOpxF,QAAQC,QAAQwqtB,EAAe/ynB,SAE9C,CACA,IAAIiznB,EAAsBzE,EAAI0E,eAAeC,gBACzCx6nB,EAAUl9F,OAAOC,OAAO,CAAE,OAAU,mBAAoB,eAAgB,oBAAsBu3tB,GAClGx3tB,OAAOC,OAAOi9F,EAAS61nB,EAAIjttB,QAAQo3F,QAASp3F,EAAQo3F,SACpDA,EAAU+znB,EAAW/znB,GACjB25nB,GAAep9mB,EAASo9mB,KACxB35nB,EAAuB,cAAI,UAAY25nB,GAE3C,IAKIj4mB,EAAKtkE,EAAKi+E,EALVo/lB,EAAc,CACdz6nB,UACAjxF,KAAM1B,QAAQyC,EACdmxR,mBAGJ,GAAIg5b,GAAiBhgU,MAAeigU,EAAY,EAAG,CAC/C,IAAIQ,EACAC,EACAC,EACAC,EAAa,EACjBF,EAAwB,KACpB,MAAMG,EAA6Bj5sB,KAAKC,MAAQy3sB,GAChD,OAAIuB,EAA6BZ,EACtB,IAAIvqtB,QAASC,GAAY6Q,WAAW,KAClChf,SAAS0kD,OAIVv2C,EAAQ8qtB,KAHR9qtB,KAKLsqtB,EAAYY,IAGRnrtB,QAAQC,WAGvB8qtB,EAAkC,KAC9B,GAAIj5tB,SAAS0kD,OAAQ,CACjB,IAAI40qB,EACJ,OAAO,IAAIprtB,QAASC,IAChBmrtB,EAAwB,KACft5tB,SAAS0kD,SACV1kD,SAAS0P,oBAAoB,mBAAoB4ptB,GACjDnrtB,EAAQ+qtB,OAGhBl5tB,SAASyP,iBAAiB,mBAAoB6ptB,IAEtD,CAEI,OAAOJ,KAGf,MAAMK,EAAiB,IACZnF,EAAIjttB,QAAQqytB,kBAAkB19qB,EAAQkpD,EAAKg0nB,GAAa5zf,MAAOnlH,IAElE,GADmF,iBAA3DA,aAAiC,EAASA,EAAItY,UAChDyxnB,EAAa1D,EAE/B,OADA0D,IACOD,IAEX,MAAMl5mB,IAGdk5mB,EAAiB,IACNF,IAAkC7qtB,KAAKmrtB,GAElD3/lB,EAAUu/lB,GACd,MAEIv/lB,EAAUw6lB,EAAIjttB,QAAQqytB,kBAAkB19qB,EAAQkpD,EAAKg0nB,GAEzD,OAAOp/lB,EACFxrH,KAAK,SAAU+yR,GA6BhB,OA5BAxlP,EAAMwlP,EAAKsB,eACA3nL,EAASn/D,KAChBA,EAAMz6B,KAAKyuB,MAAMgM,KACS,iBAARA,IAAqBA,EAAI4iD,UACnC1yF,MAAMyb,QAAQq0B,GACdA,EAAIpyC,QAAQghB,IACRA,EAAKg0E,QAAU4iM,EAAK5iM,UAIxB5iD,EAAI4iD,QAAU4iM,EAAK5iM,SAI3B05nB,IACKt8qB,EAAI89qB,YACLrsrB,EAAQY,OAAOwnrB,IAGnB75qB,GAAOA,EAAI89qB,YAAc99qB,EAAI2jD,WAC7BlyD,EAAQ9hC,IAAIkqtB,EAAsB75qB,EAAI89qB,WAAY99qB,EAAI2jD,UAAW80nB,EAAIjttB,QAAQoxtB,SAE7E58qB,GAAOx0C,EAAQuxtB,eACfN,EAAUsB,cAAc10nB,EAAK,CACzB1F,UAAWviG,KAAKQ,MAAM6iB,KAAKC,MAAQ,KAAQu1sB,EAC3ChwnB,SAAUjqD,IAGXA,CACX,GACKypL,MAAM,SAAU+7D,GAKjB,MAJAlhL,EAxKY,EAACm0mB,EAAK5ysB,KACtB,IAAIzG,EACJ,GAAIyG,aAAiB1C,MACjB,OAAO,IAAI83sB,GAAa,CACpB1D,aAAc1xsB,EAAMmmF,UAG5B,IACIsY,EADAkhL,EAAO3/Q,EAEPm4sB,EAAY,CAAC,EACjB,GAAIx4b,EAAKsB,cAAgB3nL,EAASqmL,EAAKsB,cACnC,IACIk3b,EAAYz4sB,KAAKyuB,MAAMwxP,EAAKsB,aAChC,CACA,MAAOlmS,GACHo9tB,EAAY,CACRzG,aAAc,gBAEtB,CAEA/xb,EAAKz8J,QAAU,MACfi1lB,EAAUzG,aAAe,iBAEzBkB,EAAIjttB,QAAQyytB,oBACZz4b,EAAOizb,EAAIjttB,QAAQyytB,kBAAkBp9rB,EAAM2kQ,KAE/C,MAAM04b,EAA2H,QAA1G9+sB,EAAK+3sB,EAAaO,yBAAyBlyb,aAAmC,EAASA,EAAK5iM,gBAA6B,IAAPxjF,EAAgBA,EAAK,GAO9J,GALIklG,EADA05mB,EAAUn4sB,OAASm4sB,EAAUv9nB,kBACvB,IAAIy6nB,GAAW8C,EAAUn4sB,MAAOm4sB,EAAUv9nB,kBAAmB+kM,GAG7D,IAAIy1b,GAAa+C,EAAWx4b,EAAM,CAAE04b,kBAE1CA,IAAkB14b,aAAmC,EAASA,EAAKz8J,SAAW,MAAQy8J,aAAmC,EAASA,EAAKz8J,QAAU,IAAK,CACtJ,MAAMo1lB,EAAahH,EAAaK,YAAY0G,GAC5C,GAAoB,MAAhB14b,EAAKz8J,QAAiG,yCAA9Eo1lB,aAA+C,EAASA,EAAWt4sB,OAAkD,CAC7I,MAAM,QAAEqiF,EAAO,WAAEk2nB,GAAeD,EAAW1qf,WAC3CnvH,EAAM,IAAI22mB,GAAa,CACnB1D,aAAc4G,EAAWt4sB,MACzByysB,YAAa,CAAC,CAAEf,aAAc4G,EAAW7G,oBAC1C9xb,EAAM9/R,OAAOC,OAAO,CACnBuiG,SAAUA,GAAYk2nB,GAAc,CAAEA,eAC9C,KACyF,UAA/ED,aAA+C,EAASA,EAAWn+iB,UACzE17D,EAAM65mB,EAEd,CACA,OAAO75mB,GAyHGuqL,CAAY4pb,EAAKjzb,GACD,aAAlBlhL,EAAI+ymB,WACJ5lrB,EAAQY,OAAOwnrB,GAEbv1mB,CACV,EACJ,CACA,SAAS70G,GAAIgptB,EAAKpvnB,EAAK79F,GAEnB,IAAIo1T,EAAa,CACbv3N,IAFJA,EAAM0unB,EAAc1unB,GAAOA,EAAMovnB,EAAI4F,kBAAoBh1nB,EAGrDlpD,OAAQ,OAGZ,OADAz6C,OAAOC,OAAOi7T,EAAYp1T,GACnB4wtB,GAAY3D,EAAK73Z,EAC5B,CACA,SAAS/oF,GAAK4gf,EAAKpvnB,EAAKp5F,EAAMzE,GAE1B,IAAI8ytB,EAAc,CACdj1nB,IAFJA,EAAM0unB,EAAc1unB,GAAOA,EAAMovnB,EAAI4F,kBAAoBh1nB,EAGrDlpD,OAAQ,OACRlwC,KAAMA,EACNqstB,gBAAgB,GAGpB,OADA52tB,OAAOC,OAAO24tB,EAAa9ytB,GACpB4wtB,GAAY3D,EAAK6F,EAC5B,CA3MIzhU,OACAs/T,GAA4B13sB,KAAKC,MACjCw3sB,GAAiC,KACxB73tB,SAAS0kD,SACVozqB,GAA4B13sB,KAAKC,QAGzCrgB,SAASyP,iBAAiB,mBAAoBootB,K,gBC5BlD,SAAS,GAAQvytB,GACf,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CACzC,IAAIksB,EAASpd,UAAU9O,GACvB,IAAK,IAAImF,KAAO+mB,EACdxjB,EAAOvD,GAAO+mB,EAAO/mB,EAEzB,CACA,OAAOuD,CACT,CAwHA,ICtHI40tB,GDsHA/xB,GAlGJ,SAASxkoB,EAAMw2pB,EAAWx0C,GACxB,SAASr6qB,EAAKR,EAAM5N,EAAOsP,GACzB,GAAwB,oBAAbxM,SAAX,CAMkC,iBAFlCwM,EAAa,GAAO,CAAC,EAAGm5qB,EAAmBn5qB,IAErBszF,UACpBtzF,EAAWszF,QAAU,IAAI1/E,KAAKA,KAAKC,MAA6B,MAArB7T,EAAWszF,UAEpDtzF,EAAWszF,UACbtzF,EAAWszF,QAAUtzF,EAAWszF,QAAQG,eAG1Cn1F,EAAO+0F,mBAAmB/0F,GACvBxP,QAAQ,uBAAwB2hG,oBAChC3hG,QAAQ,QAAS08N,QAEpB,IAAIoigB,EAAwB,GAC5B,IAAK,IAAIn7Z,KAAiBzyT,EACnBA,EAAWyyT,KAIhBm7Z,GAAyB,KAAOn7Z,GAEE,IAA9BzyT,EAAWyyT,KAWfm7Z,GAAyB,IAAM5ttB,EAAWyyT,GAAexmU,MAAM,KAAK,KAGtE,OAAQuH,SAASqgG,OACfv1F,EAAO,IAAMqvtB,EAAUl9tB,MAAMC,EAAO4N,GAAQsvtB,CAtC9C,CAuCF,CA4BA,OAAO/4tB,OAAO4W,OACZ,CACE3M,MACAF,IA7BJ,SAAcN,GACZ,GAAwB,oBAAb9K,YAA6B0L,UAAUC,QAAWb,GAA7D,CAQA,IAFA,IAAIyttB,EAAUv4tB,SAASqgG,OAASrgG,SAASqgG,OAAO5nG,MAAM,MAAQ,GAC1D4huB,EAAM,CAAC,EACFz9tB,EAAI,EAAGA,EAAI27tB,EAAQ5stB,OAAQ/O,IAAK,CACvC,IAAIixE,EAAQ0qpB,EAAQ37tB,GAAGnE,MAAM,KACzByE,EAAQ2wE,EAAMx7D,MAAM,GAAGoD,KAAK,KAEhC,IACE,IAAImyG,EAAQ3qB,mBAAmBpvB,EAAM,IAGrC,GAFAwspB,EAAIzymB,GAASuymB,EAAUl+tB,KAAKiB,EAAO0qH,GAE/B98G,IAAS88G,EACX,KAEJ,CAAE,MAAOrrH,GAAI,CACf,CAEA,OAAOuO,EAAOuvtB,EAAIvvtB,GAAQuvtB,CApB1B,CAqBF,EAMIlgrB,OAAQ,SAAUrvC,EAAM0B,GACtBlB,EACER,EACA,GACA,GAAO,CAAC,EAAG0B,EAAY,CACrBszF,SAAU,IAGhB,EACAw6nB,eAAgB,SAAU9ttB,GACxB,OAAOm3D,EAAKpsD,KAAK4itB,UAAW,GAAO,CAAC,EAAG5itB,KAAK/K,WAAYA,GAC1D,EACA+ttB,cAAe,SAAUJ,GACvB,OAAOx2pB,EAAK,GAAO,CAAC,EAAGpsD,KAAK4itB,UAAWA,GAAY5itB,KAAK/K,WAC1D,GAEF,CACEA,WAAY,CAAEtP,MAAOmE,OAAOklD,OAAOo/nB,IACnCw0C,UAAW,CAAEj9tB,MAAOmE,OAAOklD,OAAO4zqB,KAGxC,CAEUx2pB,CApHa,CACrB1nE,KAAM,SAAUiB,GAId,MAHiB,MAAbA,EAAM,KACRA,EAAQA,EAAMmV,MAAM,GAAI,IAEnBnV,EAAM5B,QAAQ,mBAAoB2hG,mBAC3C,EACAhgG,MAAO,SAAUC,GACf,OAAO2iG,mBAAmB3iG,GAAO5B,QAC/B,2CACA2hG,mBAEJ,GAwG+B,CAAE7c,KAAM,M,YCxGzC,SAASo6oB,GAAc3wsB,GACnB,OAAOA,GAAOA,EAAIqusB,WACtB,CACA,SAASuC,GAAU5wsB,GACf,OAAOA,GAAOA,EAAI6wsB,OACtB,CACA,SAASC,GAAe9wsB,GACpB,OAAOA,GAAOA,EAAI+wsB,YACtB,CCPA,SAASC,GAAOrguB,EAAG+B,GACf,IAAI4b,EAAI,CAAC,EACT,IAAK,IAAIT,KAAKld,EAAO6G,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,IAAMnb,EAAEuD,QAAQ4X,GAAK,IAC9ES,EAAET,GAAKld,EAAEkd,IACb,GAAS,MAALld,GAAqD,mBAAjC6G,OAAOo4F,sBACtB,KAAI78F,EAAI,EAAb,IAAgB8a,EAAIrW,OAAOo4F,sBAAsBj/F,GAAIoC,EAAI8a,EAAE/L,OAAQ/O,IAC3DL,EAAEuD,QAAQ4X,EAAE9a,IAAM,GAAKyE,OAAOsW,UAAU+hF,qBAAqB9hF,KAAKpd,EAAGkd,EAAE9a,MACvEub,EAAET,EAAE9a,IAAMpC,EAAEkd,EAAE9a,IAF4B,CAItD,OAAOub,CACX,CCdAilF,eAAe,GAAsB09nB,EAAY3ztB,EAAU,CAAC,GACxD,MAAM0ttB,QAAoBiG,EAAWt/sB,MAAMu/sB,mBAAmB5ztB,GACxD6ztB,EAAWpG,EAAgBkG,EAAYjG,GAC7C,IAAI,KAAEoG,EAAO,UAAS,gBAAEz7b,GAAkB,EAAI,gBAAE07b,EAA2B,cAAEC,EAAyB,OAAEC,EAAkB,UAAElG,GAA2B7ztB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw5tB,EAAW3ztB,SAAUA,GAO5M,OANa9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG05tB,GAAW,CAAEC,OACtDz7b,kBACA07b,kBACAC,gBACAC,SACAlG,aAER,CACA,SAASmG,GAA0BP,EAAY3ztB,GAC3C,MAAMm0tB,EAAY,GAAwBR,EAAY3ztB,GACtD,SAAIm0tB,aAA6C,EAASA,EAAUC,kBAIxE,CACA,SAAS,GAAwBT,EAAY3ztB,GAGzC,IAAIm0tB,EAFJn0tB,EAAUmrtB,EAAWnrtB,GACrBA,EAAU9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw5tB,EAAW3ztB,SAAUA,GAE/D,IACIm0tB,EAAYR,EAAWt4nB,mBAAmB+9H,KAAKp5N,EACnD,CACA,MAAO5K,GACP,CACA,GAAK++tB,EAGL,OAAI,GAAuBA,EAAWn0tB,GAC3Bm0tB,OAEXl3sB,EAAK,8HAET,CACAg5E,eAAe,GAAmB09nB,EAAY3ztB,GAC1CA,EAAUmrtB,EAAWnrtB,GAGrB,OAD0B,GAAwB2ztB,EADlD3ztB,EAAU9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw5tB,EAAW3ztB,SAAUA,KAKxD,GAAsB2ztB,EAAY3ztB,EAC7C,CACA,SAAS,GAAoB2ztB,EAAYxrrB,GACrCwrrB,EAAWt4nB,mBAAmBx+D,KAAKsL,EAAM,CAAEksrB,aAAa,GAC5D,CACA,SAAS,GAAqBV,GAC1BA,EAAWt4nB,mBAAmBlwB,OAClC,CACA,SAAS,GAAuBhjC,EAAMnoC,EAAU,CAAC,GAW7C,IAA8D,IAkBlE,SAA0CmoC,EAAMnoC,GAO5C,OAnCa,CACT,SACA,WACA,cACA,QACA,gBACA,sBACA,kBACA,iBAqBkB0C,KAAK9H,IACvB,MAAM7E,EAAQiK,EAAQpF,GACtB,GAAI7E,GAASA,IAAUoyC,EAAKvtC,GACxB,OAAO,GAInB,CA1BQ05tB,CAAiCnsrB,EAAMnoC,GACvC,OAAO,EAEX,MAAM,KAAE8ztB,GAAS9ztB,EACjB,OAAkD,IAKtD,SAAuCmoC,EAAM2rrB,GAEzC,QAD2BA,GAAiB,YAATA,GAA+B,YAATA,IAEjDA,IAAS3rrB,EAAK2rrB,IAK1B,CAbQS,CAA8BpsrB,EAAM2rrB,EAI5C,CCvEA,SAAS74b,GAAY9yP,GACjB,MAAO,CACHA,OACAisrB,kBAAmBjsrB,EAAKisrB,kBACxBr0tB,MAAOooC,EAAKpoC,MAEpB,CACAk2F,eAAeu+nB,GAASb,EAAY3ztB,EAAU,CAAC,GAE3C,IAAImoC,EAAO,GAAwBwrrB,EADnC3ztB,EAAUmrtB,EAAWnrtB,IAErB,GAAImoC,aAAmC,EAASA,EAAKisrB,kBACjD,OAAOn5b,GAAY9yP,GAEvBA,QAAa,GAAsBwrrB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGguC,GAAOnoC,IACtF,MAAMi3F,EAAUi2nB,EAAgByG,GAChC,IAAI,SAAEh+nB,EAAQ,YAAEi4nB,EAAW,MAAE7ttB,EAAK,OAAEykC,EAAM,gBAAE6zP,EAAe,cAAE+1b,EAAa,oBAAED,EAAmB,gBAAE4F,EAAe,cAAEC,EAAa,OAAEC,EAAM,UAAElG,EAAS,MAAEtxnB,GAAUt0D,EAC9J,MAAMssrB,EAAez0tB,EAAQy0tB,cAAgBd,EAAW3ztB,QAAQy0tB,aAChEp8b,EAAkBA,SAAyDA,EAC3E,MAAMx6L,EAAM,GAAG5G,gBACT1mC,EAASr2D,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAE07F,UAAWF,EAAU58D,MAAOyL,EAAOl2B,KAAK,KAAMmvF,aAAcmwnB,EAAalwnB,eAAgB0wnB,EAAezwnB,sBAAuBwwnB,EAAqBputB,SAAUg0tB,GAAmB,CAAEW,iBAAkBX,IAAsBC,GAAiB,CAAEW,eAAgBX,IAAoBS,GAAgB,CAAEG,cAAeH,IAAmBR,GAAU,CAAEv3nB,QAASu3nB,IAAalG,GAAa,CAAE6E,WAAY7E,IAAgBtxnB,GAAS,CAAEA,UAW7f23nB,SAPaxD,GAAY+C,EAAY,CACvCh/qB,OAAQ,OACRkpD,MACAzG,QANY,CACZ,eAAgB,qCAMhBihM,kBACA5zR,KAAM8rD,KAEqBskqB,mBACzBC,EAAU56tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGguC,GAAO,CAAEisrB,oBACrD/7b,kBACAt4R,QACAykC,SACAwvrB,gBACAD,oBAEJ,OADA,GAAoBJ,EAAYmB,GACzB75b,GAAY65b,EACvB,EHjDA,SAAW/B,GACPA,EAAkB,OAAI,cACtBA,EAAc,GAAI,UAClBA,EAAmB,QAAI,cAC1B,CAJD,CAIGA,KAAcA,GAAY,CAAC,ICsBH,mBAApBvgoB,iBAAiCA,gBG3BxC,MAAMuioB,GAAiB,SAAwBx0jB,GAC3C,OAA0B,IAAlBA,EAAMy0jB,OAClB,EACMC,GAAuC,SAA8CjxnB,GACvF,IAAIpwF,EAAIG,EACR,MAAMmhtB,EAAyB,CAAC,EAC1BC,EAAwB,GACxBC,EAA2B,CAAC,EAClC,IAAKpxnB,EAAOjuG,MAER,OADAo/tB,EAAsBjxtB,KAAK8/F,GACpB,CAAEkxnB,yBAAwBC,wBAAuBC,4BAE5D,IAAK,IAAI70jB,KAASv8D,EAAOjuG,MACjBg/tB,GAAex0jB,IACf40jB,EAAsBjxtB,KAAKq8J,GACA,QAAtB3sJ,EAAK2sJ,EAAMxqK,aAA0B,IAAP6d,GAAgBA,IAC/CshtB,EAAuB30jB,EAAM58J,MAAQ48J,EAAMxqK,QAI/Cq/tB,EAAyB70jB,EAAM58J,MAA+B,QAAtBoQ,EAAKwsJ,EAAMxqK,aAA0B,IAAPge,EAAgBA,EAAK,GAGnG,MAAO,CAAEmhtB,yBAAwBC,wBAAuBC,2BAC5D,EChBMC,GAAsB,SAA6B1B,GAAY,iBAAE2B,EAAgB,uBAAEJ,EAAyB,CAAC,EAAC,yBAAEE,EAA2B,CAAC,EAAC,UAAEG,EAAY,CAAC,IAC9J,MAAMp3tB,EAASm3tB,EAAiBj3nB,KAChC,OAAOpI,eAAgB1lC,EAAS,CAAC,GAC7B,IAAI38C,EAAIG,EACR,MAAMqjF,EAAU,CACZ,eAAgB,mBAChB,OAAUk+nB,EAAiBE,SAAW,wBAEpC13tB,EAAOic,KAAKC,UAAU9f,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG+6tB,GAAyB3kqB,GAAS6kqB,IAC5G,IACI,MAAMp1tB,EAAU,CACZ69F,IAAK1/F,EACLw2C,OAAQ2grB,EAAiB3grB,OACzByiD,UACA3yF,KAAM3G,EACNu6R,gBAA4G,QAA1FzkR,EAAK2htB,aAA6C,EAASA,EAAUl9b,uBAAoC,IAAPzkR,GAAgBA,IAE5F,SAA1B0htB,EAAiB3xtB,OAAqD,QAAhCoQ,EAAKuhtB,EAAiB3xtB,YAAyB,IAAPoQ,OAAgB,EAASA,EAAG+M,SAAS,aAEjI9gB,EAAQqxtB,eAAgB,GAE5B,MAAM5ynB,QAAiBmynB,GAAY+C,EAAY3ztB,GAC/C,OAAO2ztB,EAAWnxsB,IAAIizsB,gBAAgBv7tB,OAAOC,OAAO,CAAC,EAAGskG,GAAW82nB,GAAW,EAClF,CACA,MAAOz8mB,GACH,KAAMA,aAAe22mB,KAAmB32mB,aAAiC,EAASA,EAAIsiL,MAClF,MAAMtiL,EAEV,MAAMra,EAAWqa,EAAIsiL,IACf9gR,EAAUmkF,EAASi3nB,cAAgB37sB,KAAKyuB,MAAMi2D,EAAS68L,cACvDo3b,EAAgBj0nB,EAASrH,QAAQ,qBAAuBqH,EAASrH,QAAQ,oBACzEu+nB,EAAchC,EAAWnxsB,IAAIizsB,gBAAgBv7tB,OAAOC,OAAO,CAAC,EAAGmgB,GAAUi7sB,GAAW,GAI1F,OAHwB,MAApB92nB,EAAS8+B,QAAoC,sCAAlBm1lB,IAC3BiD,EAAYC,QAAS,GAElBD,CACX,CACJ,CACJ,EACME,GAAoB,SAA2BlC,EAAY2B,EAAkBC,GAC/E,MAAMhktB,EAAY8jtB,IACZ,cAAES,EAAa,aAAEC,EAAY,gBAAEC,GDxBF,SAAwCC,GAC3EA,EAAavxtB,MAAMyb,QAAQ81sB,GAAcA,EAAa,CAACA,GACvD,MAAMF,EAAe,GACfD,EAAgB,CAAC,EACjBE,EAAkB,CAAC,EACzB,IAAK,IAAIhynB,KAAUiynB,EAAY,CAC3B,MAAM,uBAAEf,EAAsB,sBAAEC,EAAqB,yBAAEC,GAA6BH,GAAqCjxnB,GACzH+xnB,EAAa7xtB,KAAKixtB,GAClBW,EAAc9xnB,EAAOrgG,MAAQuxtB,EAC7Bc,EAAgBhynB,EAAOrgG,MAAQyxtB,CACnC,CACA,MAAO,CAAEU,gBAAeC,eAAcC,kBAC1C,CCY6DE,CAA+BZ,GAClFtxnB,EAASzyF,EAAUoitB,EAAY,CACjC2B,mBACAJ,uBAAwBY,EAAcR,EAAiB3xtB,MACvDyxtB,yBAA0BY,EAAgBV,EAAiB3xtB,MAC3D4xtB,cAGJ,OADAvxnB,EAAO+xnB,aAAeA,EACf/xnB,CACX,EC1DMmynB,GAAgB,yCCOhBC,GAAc,CAChB,aAAe,EACf,SAAW,GAoCTC,GAAkB,CAACV,EAAa5/tB,KAClCmE,OAAOO,KAAK1E,GAAOqM,QAAQyf,IACvB,GAAU,cAANA,EAAmB,CACnB,MAAM29jB,EAAQ96kB,MAAMyb,QAAQpqB,EAAM8rB,IAAM9rB,EAAM8rB,GAAG,GAAK9rB,EAAM8rB,GAC5D,GAAqB,iBAAV29jB,EAAoB,CAC3B,MAAMj8kB,EDjDtB,UAAkB,KAAE01E,EAAI,KAAEkd,IACtB,IAAIviF,EAAIG,EAAIsB,EACZ,MAAMm4E,EAAQ,GACd,IAAIp5F,EACJ,KAA8C,QAAtCA,EAAQ+huB,GAAc1gsB,KAAKwjD,KAAiB,CAChD,MAAMvnE,EAAiI,QAAzHqC,EAA2E,QAArEH,EAAKxf,aAAqC,EAASA,EAAM6nT,cAA2B,IAAProS,OAAgB,EAASA,EAAGlC,YAAyB,IAAPqC,EAAgBA,EAA2E,QAArEsB,EAAKjhB,aAAqC,EAASA,EAAM6nT,cAA2B,IAAP5mS,OAAgB,EAASA,EAAGzO,MAC1Q8K,GACA87E,EAAMtpF,KAAKwN,EAEnB,CACA,GAAI87E,EAAMhpF,OAAS,EACf,OAEJ,MAAM8xtB,EAAW9ooB,EAAM/6E,MACvB,IAAIgvC,EAAO00C,EACX,IAAK,MAAMzkF,KAAQ87E,EACf,GAAItzF,OAAOsW,UAAUxU,eAAeyU,KAAKgxC,EAAM/vC,GAAO,CAClD,GAA0B,iBAAf+vC,EAAK/vC,GACZ,OAEJ+vC,EAAOA,EAAK/vC,EAChB,CAEJ,OAAO+vC,EAAK60qB,EAChB,CCyB+BC,CAAS,CAAEt9oB,KAAMumgB,EAAOrpf,KAAMw/nB,IAC7C,GAAIpytB,EAEA,YADAxN,EAAM8rB,GAAKte,GAIX,MAAM,IAAIoptB,EAAa,6BAA6BntI,IAE5D,CACJ,CACI96kB,MAAMyb,QAAQpqB,EAAM8rB,KACpB9rB,EAAM8rB,GAAGzf,QAAQo0tB,GAAcH,GAAgBV,EAAaa,OAYlEC,GAAmB,SAA0B9C,EAAYgC,EAAaJ,EAAY,CAAC,GACrF,IAAI3htB,EACJ,MAAM8itB,GAAsD,QAAlC9itB,EAAK+htB,EAAYgB,mBAAgC,IAAP/itB,OAAgB,EAASA,EAAG7d,QAAU,GAC1G2guB,EAAgBt0tB,QAAQu0tB,IACpB,IAAI/itB,EACJ,GAAyB,yBAArB+itB,EAAYhztB,MAC4H,4BAA5C,QAA1FiQ,EAAK+itB,aAAiD,EAASA,EAAYC,iBAA8B,IAAPhjtB,OAAgB,EAASA,EAAG,MAC9H+htB,aAAiD,EAASA,EAAYkB,wBAI5E,OAAOR,GAAgBV,EAAagB,UAHzBA,EAAYC,YAK3B,MAAME,EAAeJ,EAAgBvztB,IAAIwztB,GArBZ,EAAChD,EAAYgD,EAAapB,KACvD,GAAIoB,EAAYl9lB,IAAK,CACjB,MAAMs9lB,ECjEuB,SAAsCpD,EAAYqD,EAAkBzB,EAAY,CAAC,GAClH,OAAOyB,EAAiBt8tB,OAAO,CAACgoB,EAAKi0sB,IAAiBz8tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuoB,GAAM,CAAE,CAACi0sB,EAAYhztB,MAAOkytB,GAAkBlC,EAAYgD,EAAapB,KAAgB,CAAC,EAClL,CD+DmC0B,CAA6BtD,EAAY,CAACgD,GAAcpB,GAC7E2B,EAAWH,EAAmBJ,EAAYhztB,MAChD,OAAOzJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw8tB,GAAc,CAAE3ynB,OAAQkznB,GACnE,CACA,OAAOP,GAeiDQ,CAAyBxD,EAAYgD,EAAapB,KACpG,QAAEh8rB,EAAO,QAAE8nqB,GA5EQ,SAA8BsyB,EAAYgC,EAAaJ,EAAY,CAAC,GAC7F,MAAMl0B,EAAU,CAAC,EACX9nqB,EAAU,CAAC,EA8BjB,OA7BAr/B,OAAOO,KAAKk7tB,GACPt0tB,OAAOk/J,IAAU61jB,GAAY71jB,IAC7Bn+J,QAAQm+J,IAET,GADoD,iBAAvBo1jB,EAAYp1jB,KAAyBo1jB,EAAYp1jB,GAG1E,YADAhnI,EAAQgnI,GAASo1jB,EAAYp1jB,IAGjC,GAAIo1jB,EAAYp1jB,GAAO9mC,IAEnB,YADA4nkB,EAAQs0B,EAAYp1jB,GAAO58J,MAAQkytB,GAAkBlC,EAAYgC,EAAYp1jB,GAAQg1jB,IAGzF,MAAM3htB,EAAK+htB,EAAYp1jB,IAAUxqK,MAAOqhuB,EAAU,KAAEh3sB,GAASxM,EAAIuvB,EAAOuwrB,GAAO9/sB,EAAI,CAAC,QAAS,SAC7F2lB,EAAQgnI,GAASrmK,OAAOC,OAAO,CAAEimB,QAAQ+iB,GAC5B,WAAT/iB,GAIJmZ,EAAQgnI,GAAOxqK,MAAQ,CAAC,EACxBmE,OAAOo7D,QAAQ8hqB,GACVh1tB,QAAQ,EAAEi1tB,EAAUthuB,MACjBA,EAAM0jI,IACN4nkB,EAAQ,GAAG9giB,KAAS82jB,EAAS1ztB,MAAQ0ztB,KAAcxB,GAAkBlC,EAAY59tB,EAAOw/tB,GAGxFh8rB,EAAQgnI,GAAOxqK,MAAMshuB,GAAYthuB,KAVrCwjC,EAAQgnI,GAAOxqK,MAAQqhuB,IAcxB,CAAE79rB,UAAS8nqB,UACtB,CA2CiCi2B,CAAqB3D,EAAYgC,EAAaJ,GAC3E,MAAO,CACHuB,eACAv9rB,UACA8nqB,UAER,EE3FA,IAAI7/qB,GAAK,CACL+1sB,aCDJ,SAAsB5D,EAAYgC,EAAaJ,EAAWiC,GACtD,IAAI5jtB,EAAIG,EAAIsB,EACZ,MAAMoitB,EAAiB9B,GACjB,aAAEmB,EAAY,QAAEv9rB,EAAO,QAAE8nqB,GAAYo1B,GAAiB9C,EAAYgC,EAAaJ,GAerF,MAAO,CACHmC,QAdYzhoB,eAAgB0hoB,EAAmBC,EAAiB,CAAC,GACjE,MAAMC,EAA0Bf,EAAa7rtB,KAAM0rtB,GAAgBA,EAAYhztB,OAASg0tB,GACxF,OAAKE,EAImB,mBADPA,EAAwB7znB,OAE9Bj9F,QAAQyK,OAAO,wDAAwDmmtB,MAE3EE,EAAwB7znB,OAAO4znB,GAN3B7wtB,QAAQyK,OAAO,gCAAgCmmtB,KAO9D,EAKIG,gBAhBoB,IAAIhB,GAiBxBz1B,UACA9nqB,UACAw+rB,YAAaN,EACbO,gBAP4L,QAAvK3itB,EAA+G,QAAzGtB,EAA0D,QAApDH,EAAK6jtB,EAAeQ,kCAA+C,IAAPrktB,OAAgB,EAASA,EAAG7d,aAA0B,IAAPge,OAAgB,EAASA,EAAG9I,KAD3JmY,GAAsB,qBAAdA,EAAKzf,aACiL,IAAP0R,OAAgB,EAASA,EAAGtf,MAQhOw/tB,YACAiC,oBAER,GC3BA,MAAMU,GAAoB,SAA2BjjpB,GACjD,OAAQA,GACJ,IAAK,QACD,OAAOzzD,GACX,UAAKta,EACL,KAAK,KACD,MAAM,IAAIyQ,MAAM,2BACpB,QACI,MAAM,IAAIA,MAAM,wBAAwBs9D,oCAEpD,EACA,SAASkjpB,GAAsBljpB,GAC3B,IAAKA,EACD,MAAM,IAAIt9D,MAAM,uBAGpB,IADsBs9D,QAAyCA,EAAU,IAAI9gF,QAAQ,kBAAmB,MACnF8gF,IAAYA,EAC7B,MAAM,IAAIt9D,MAAM,yEAEpBugtB,GAAkBjjpB,EACtB,CACA,SAAS,GAAa0+oB,EAAY8D,EAAgBlC,EAAWiC,GACzD,IAAI5jtB,EACJ,MAAMqhE,EAA4G,QAAjGrhE,EAAK6jtB,aAAuD,EAASA,EAAexipB,eAA4B,IAAPrhE,EAAgBA,EAAK47sB,GAC/I2I,GAAsBljpB,GACtB,MAAM,aAAEsipB,GAAiBW,GAAkBjjpB,GAC3C,OAAOsipB,EAAa5D,EAAY8D,EAAgBlC,EAAWiC,EAC/D,CC9BA,SAASY,GAAiB11sB,GACtB,OAAOA,GAAOA,EAAIuyD,OACtB,CCQA,SAASojpB,GAAa31sB,GAClB,OAAQA,aAAegtsB,EAC3B,CCAAz5nB,eAAeqioB,GAAW3E,EAAY3ztB,EAAU,CAAC,GAC7C,IAAI4T,EACJ,IAAI6jtB,EACAD,EACJ,MAAMe,EAAmB5E,EAAWt4nB,mBAAmBm9nB,gBAAgBx4tB,GAKvE,GAJIu4tB,IACAd,EAAiBc,EAAiBd,eAClCD,EAAoBe,EAAiBf,oBAEpCC,EAAgB,CACjB,MAAMxipB,EAAUj1E,EAAQi1E,SAAWu6oB,GAC7Bz2nB,EvBJd,SAAwBk0nB,EAAKjttB,EAAU,CAAC,GAGpC,OAFegttB,EAAUC,EAAKjttB,GACR1O,MAAM,WAAW,EAE3C,CuBAuBmnuB,CAAe9E,IACxB,kBAAES,EAAiB,YAAEsE,GAAgB14tB,EACrCq4R,EAAqD,QAAlCzkR,EAAK5T,EAAQq4R,uBAAoC,IAAPzkR,GAAgBA,EACnF,IACI4jtB,GAAoB,EACpBW,GAAsBljpB,GACtB,MAAM4oB,EAAM,GAAG9E,uBACTj7F,EAAO46tB,EAAc,CAAEpG,WAAYoG,GAAgB,CAAEtE,qBACrDh9nB,EAAU,CACZ,eAAgB,sCAAsCniB,IACtD0jpB,OAAQ,sCAAsC1jpB,KAElDwipB,QAAuB7G,GAAY+C,EAAY,CAC3Ch/qB,OAAQ,OACRkpD,MACAzG,UACAihM,kBACA5zR,KAAM3G,GAEd,CACA,MAAOg7G,GACH,KAAmBA,aDpCJ22mB,ICoCY32mB,EAAIsiL,KAAOg9b,GAAiBt/mB,EAAIsiL,IAAIs6b,eAK3D,MAAM58mB,EAJN2+mB,EAAiB3+mB,EAAIsiL,IAAIs6b,aACzB8B,GAAoB,CAK5B,CACJ,CACA,MAAM,gBAAEn/b,GAAoBr4R,EAC5B,OAAO,GAAa2ztB,EAAY8D,EAAgB,CAAEp/b,mBAAmBm/b,EACzE,CC1CA,SAASoB,GAAU/1sB,GACf,OAAOA,EAAIC,OAAO,GAAGC,cAAgBF,EAAI02E,UAAU,EACvD,CACA,SAASs/nB,GAAgClC,GACrC,OAAOA,EAAY5guB,MAAMkV,KAAK,EAAGtH,UAAoB,kBAATA,EAChD,CChBA,SAASm1tB,GAAoBC,GACzB,IAAIC,EACJ,GAAIjO,EAAgBgO,GAChBC,EAAgBD,MAEf,IAAwB,iBAAbA,EAMZ,MAAM,IAAIphtB,MAAM,oCALhBqhtB,EAAgB,CACZp+tB,IAAKm+tB,EAKb,CACA,OAAOC,CACX,CACA,SAASC,GAAsBC,EAAOC,GAClC,SAAKD,GAAUC,IAGXD,EAAM/qtB,IAAMgrtB,EAAMhrtB,GACV+qtB,EAAM/qtB,KAAOgrtB,EAAMhrtB,GAE3B+qtB,EAAMt+tB,KAAOu+tB,EAAMv+tB,KACXs+tB,EAAMt+tB,MAAQu+tB,EAAMv+tB,KAGpC,CCzBA,MAAMw+tB,GACF,WAAAvotB,CAAY8ltB,EAAa39rB,EAAS,CAAC,EAAGh5B,EAAU,CAAC,GAC7CoQ,KAAK4oB,OAAS9+B,OAAOC,OAAO,CAAC,EAAG6+B,GAChC5oB,KAAKpQ,QAAU9F,OAAOC,OAAO,CAAC,EAAG6F,GACjCoQ,KAAKiptB,uBACLjptB,KAAKumtB,YAAcA,CACvB,CACA,oBAAA0C,GAKI,GAJAjptB,KAAK4oB,OAAOsgsB,eAAkBlptB,KAAK4oB,OAAOsgsB,gBAAkB,GAC5DlptB,KAAK4oB,OAAOsgsB,eAAiBlptB,KAAK4oB,OAAOsgsB,eAAen2tB,IAAI61tB,GACjDF,GAAoBE,IAE3B5otB,KAAK4oB,OAAOggsB,cAAe,CAC3B,MAAMA,EAAgBF,GAAoB1otB,KAAK4oB,OAAOggsB,eACvB5otB,KAAK4oB,OAAOsgsB,eAAe52tB,KAAKwD,GACpD+ytB,GAAsBD,EAAe9ytB,KAG5CkK,KAAK4oB,OAAOsgsB,eAAep1tB,KAAK80tB,EAExC,CACA5otB,KAAK4oB,OAAOugsB,mBAAqBnptB,KAAK4oB,OAAOsgsB,eAAe5+tB,OAAO,CAACoL,EAAKkztB,KACxC,iBAAlBA,GAA8B9+tB,OAAOO,KAAKu+tB,GAAex0tB,OAAS,GACzEsB,EAAI5B,KAAK80tB,GAENlztB,GACRsK,KAAK4oB,OAAOugsB,oBAAsB,GACzC,CACA,OAAAvzT,GACI,OAAO51Z,KAAKumtB,YAAYhztB,IAC5B,CACA,YAAA61tB,CAAajgsB,GF9BjB,IAA2BkgsB,EACnB7ltB,EEgCA,QFjCmB6ltB,EE+BgBrptB,KAAKumtB,YF7BL,QAA/B/itB,EAAK6ltB,EAAe1juB,aAA0B,IAAP6d,OAAgB,EAASA,EAAGlZ,OAAO,CAACqzO,EAAUl7L,KACrFA,EAAIk7L,UACJA,EAAS7pO,KAAK2uC,EAAIlvC,MAEfoqO,GACR,KEyByB9iO,KAAMrQ,IAASwV,KAAKkiQ,QAAQ13Q,GAKxD,CACA,OAAA0hP,CAAQ1hP,GACJ,IAAKA,EAAK,CACN,IACI45C,GF7CMilrB,EE4CmBrptB,KAAKumtB,YF1CH,QAA/B/itB,EAAK6ltB,EAAe1juB,aAA0B,IAAP6d,OAAgB,EAASA,EAAGzQ,IAAIgnB,GAAKA,EAAExmB,OE2C1DjJ,OAAO,CAACyL,EAAMvL,KAC9BuL,EAAKvL,GAAOwV,KAAKksO,QAAQ1hP,GAClBuL,GACR,CAAC,GACJ,OAAOquC,CACX,CFlDR,IAAsBilrB,EACd7ltB,EEkDA,GAA4C,mBAAjCxD,KAAK,MAAMwotB,GAAUh+tB,MAAwB,CACpD,MAAMm9B,EAAM3nB,KAAK,MAAMwotB,GAAUh+tB,MAAQwV,KAAKumtB,YAAY5guB,MAAMkV,KAAK,EAAGtH,UAAWA,IAAS/I,IAC5F,GAAIm9B,EACA,OAAOA,CAEf,CACA,GAAI3nB,KAAKjN,KAAOiN,KAAKjN,IAAIvI,GAAM,CAC3B,MAAMonD,EAAQ5xC,KAAKjN,IAAIvI,GACvB,IAAK,IAAInF,EAAI,EAAGA,EAAIusD,EAAMx9C,OAAQ/O,IAAK,CACnC,IAAIsiC,EAAM3nB,KAAK4oB,OAAOgpB,EAAMvsD,IAC5B,GAAIsiC,EACA,OAAOA,CAEf,CACJ,CACA,OAAO3nB,KAAK4oB,OAAOp+B,EACvB,CACA,OAAA03Q,CAAQ13Q,GAEJ,QAASwV,KAAKksO,QAAQ1hP,EAC1B,CACA,WAAA2nI,CAAYm3lB,EAAanzrB,GACrB,MAAM5iC,EAAOyM,KAAK41Z,UACZ9iY,EAAS9yB,KAAKw4R,YACdowb,EAAgB5otB,KAAKuptB,mBACrBv5sB,EAAO44sB,aAAqD,EAASA,EAAc54sB,KACzF,OAAOlmB,OAAOC,OAAOD,OAAOC,OAAO,CAAEwJ,OACjCu/B,UAAW9iB,GAAQ,CAAEA,SAAW44sB,GAAiB,CAAEA,iBAC3D,CACA,SAAApwb,GACI,MAAM1lQ,EAAS,GAqCf,OApC8B9yB,KAAKumtB,YAAY5guB,OAAS,IAClCqM,QAAQw3tB,IAC1B,IAAIvnuB,GACA,KAAEsR,EAAI,KAAEyc,EAAI,QAAE80B,EAAO,SAAEgsJ,GAAa04hB,EACxC,IAAgB,IAAZ1krB,EAAJ,CAGA,GAAkD,mBAAvC9kC,KAAK,WAAWwotB,GAAUj1tB,MACjCtR,EAAQ+d,KAAK,WAAWwotB,GAAUj1tB,MAASi2tB,QAE1C,GAAa,WAATx5sB,EAAmB,CACxB,IAAIy5sB,EACJ,MAAMC,GAAW1ptB,KAAKjN,IAAMiN,KAAKjN,IAAIQ,GAAQ,OAAS,GAElDk2tB,EADmB,IAAnBC,EAAQt1tB,OACAs1tB,EAAQ,GAGRA,EAAQ7utB,KAAKtH,GAAQzJ,OAAOO,KAAK2V,KAAK4oB,QAAQ+M,SAASpiC,IAE/Dk2tB,IACAxnuB,EAAQ6H,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGy/tB,GAAuB,CAAEj2tB,KAAMk2tB,IAE/E,CACKxnuB,IACDA,EAAQunuB,GAERl1tB,MAAMyb,QAAQ9tB,GACdA,EAAM+P,QAAQ3M,GAAKytC,EAAOh/B,KAAKzO,KAG3ByrM,IACA7uM,EAAM6uM,SAAWA,GAErBh+J,EAAOh/B,KAAK7R,GA3BhB,IA8BG6wC,CACX,CACA,kBAAO62rB,CAAYpD,GACf,IAAI/itB,EAAIG,EACR,GAAK4itB,EAAY5guB,MAGjB,OAA2F,QAAnFge,EAAqC,QAA/BH,EAAK+itB,EAAY5guB,MAAM,UAAuB,IAAP6d,OAAgB,EAASA,EAAGwsT,YAAyB,IAAPrsT,OAAgB,EAASA,EAAGhe,MAAM2E,OAAO,CAACwmM,EAAU3gC,KAC/IA,EAAM2gC,WACNA,EAAW,IAAIA,KAAa3gC,EAAM2gC,SAASnrM,QAExCmrM,GACR,GACP,CACA,qBAAA84hB,GACI,MAEM92rB,EAAS,IAFe9yB,KAAKumtB,YAAY5guB,OAAS,MAC3Bqa,KAAKw4R,aAKlC,IAAK,MAAMv2S,KAAS6wC,SACT9yB,KAAK4oB,OAAO3mC,EAAMsR,MAE7B,OAAOyM,KAAK4oB,MAChB,CACA,gBAAA2gsB,GACI,IAAI/ltB,EAAIG,EACR,MAAM6itB,EAAkD,QAArChjtB,EAAKxD,KAAKumtB,YAAYC,iBAA8B,IAAPhjtB,OAAgB,EAASA,EAAG7d,MAC5F,IAAK6guB,EACD,OAEJ,MAAMqD,EAA+BpB,GAAgCzotB,KAAKumtB,aAC1E,IAAKsD,EACD,OAAOrD,EAEX,MAAMzotB,EAAK8rtB,EAA6B75Z,KAAKrqU,MACxCkV,KAAK,EAAGtH,UAAoB,OAATA,GAAe5N,MACjCmkuB,EACgD,QADhCnmtB,EAAKkmtB,EAA6B75Z,KAAKrqU,MACxDkV,KAAK,EAAGtH,UAAoB,iBAATA,UAA6C,IAAPoQ,OAAgB,EAASA,EAAGhe,MAC1F,OAAOmE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGy8tB,GAAY,CAAEzotB,KACjD+rtB,gBACR,EC9JJ,SAASC,GAAgBxD,GACrB,GAAIjytB,MAAMyb,QAAQw2sB,GACd,OAAOA,EACFxztB,IAAIigB,GACe,iBAATA,GAAqC,iBAATA,GAAqC,kBAATA,EACxDA,EAEJ+2sB,GAAgB/2sB,IAG/B,MAAMoxB,EAAM,CAAC,EACb,IAAK,MAAO55C,EAAK7E,KAAUmE,OAAOo7D,QAAQqhqB,GACtC,GAAI5guB,QAGJ,GAAqB,iBAAVA,EAAoB,CAC3B,MAAMqkuB,EAAWlguB,OAAOO,KAAK1E,GAC7B,GAAI,CAAC,QAAS,QAAQgwC,SAASnrC,IACJ,IAApBw/tB,EAAS51tB,QACT,CAAC,QAAS,QAAQuhC,SAASq0rB,EAAS,IAAK,CAC5C,MAAMC,EAAgBF,GAAgBpkuB,GACtCmE,OAAOo7D,QAAQ+kqB,GAAej4tB,QAAQ,EAAExH,EAAK7E,MACzCy+C,EAAI55C,GAAO7E,GAEnB,MAEIy+C,EAAI55C,GAAOu/tB,GAAgBpkuB,EAEnC,MAEIy+C,EAAI55C,GAAO7E,EAGnB,OAAOy+C,CACX,CChCA,MAAM8lrB,WAA0BlB,GAC5B,YAAAI,GACI,QAAuC,mBAA5BpptB,KAAKumtB,YAAY3ynB,QAGE,SAA1B5zF,KAAKumtB,YAAYhztB,OAAmByM,KAAKumtB,YAAYhztB,KAAKmd,SAAS,WAGnE1Q,KAAKpQ,QAAQ0R,KAIrB,CACA,OAAA4qO,GAKI,OAJalsO,KAAKw4R,YAAYluS,OAAO,CAACoL,GAAOnC,WACzCmC,EAAInC,GAAQyM,KAAK4oB,OAAOr1B,GACjBmC,GACR,CAAC,EAER,CACA,WAAAy8H,CAAYoxlB,EAAYptrB,GACpB,MAAM5iC,EAAOyM,KAAK41Z,UACZ9iY,EAAS9yB,KAAKw4R,YACdh1R,EAAKxD,KAAKumtB,aAAa,KAC7Bt4nB,EAAI,OAAE1pD,EAAM,IAAE8kF,EAAG,QAAE+7lB,EAAO,SAAE+E,EAAQ,MACpCxkuB,EAAK,OACLiuG,GAAWpwF,EAAIgM,EAAO8zsB,GAAO9/sB,EAAI,CAAC,OAAQ,SAAU,MAAO,UAAW,WAAY,QAAS,WAC3F,OAAIowF,EACO9pG,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGylB,KAAUsjB,EAAO1+B,QAAU,CAAE0+B,WAAY,CAAE8gE,OAAQ/N,MAAO1lC,GAChGojqB,EAAWnxsB,IAAIk1sB,QAAQx9tB,OAAOC,OAAO,CAAEuX,KAAM/N,GAAQ4sD,MAGjEr2D,OAAOC,OAAO,CAAC,EAAGiW,KAAKumtB,YAClC,CACA,SAAA/tb,GACI,OAAQx4R,KAAKumtB,YAAY5guB,OAAS,IAC7BsL,OAAO,EAAGsC,UAAoB,gBAATA,GACrBR,IAAIg3tB,IACJh3tB,IAAI9Q,IACLA,EAAM+tB,KAAO/tB,EAAM+tB,MAAQ,SACpB/tB,GAEf,ECxCJ,MAAM6nC,GAAM,CACRsgsB,YAAa,CAAC,EACdC,qBAAsB,SAAUC,EAAWC,EAAQ,WAC/C,MAAO,CACHH,YAAa,CAAC,EAEtB,GAQJ,SAASI,GAAmBjF,GACxB,MAAM,gBAAEmC,EAAe,gBAAEE,GAAoBrC,EAC7C,OAAQmC,EAAgBtztB,SAAWwztB,CACvC,CAOA,SAAS6C,GAAmC9kuB,GACxC,GAAKA,GAAU2O,MAAMyb,QAAQpqB,GAG7B,OAAOA,EAAM2E,OAAO,CAACwmM,EAAUnrM,KAI3B,GAHIA,EAAMmrM,WACNA,EAAW,IAAIA,KAAanrM,EAAMmrM,SAASnrM,QAE3CA,EAAMqqU,KAAM,CACZ,MAAM06Z,EAAmBD,GAAmC9kuB,EAAMqqU,KAAKrqU,QAAU,GACjFmrM,EAAW,IAAIA,KAAa45hB,EAChC,CACA,GAAI/kuB,EAAMiK,QAAS,CACf,IAAI60T,EAAe,GACnB9+T,EAAMiK,QAAQoC,QAAQszC,IACbA,EAAO3/C,OAAiC,iBAAjB2/C,EAAO3/C,QAGnC8+T,EAAe,IAAIA,EAAcn/Q,EAAO3/C,UAE5C,MAAMgluB,EAAsBF,GAAmChma,IAAiB,GAChF3zH,EAAW,IAAIA,KAAa65hB,EAChC,CACA,OAAO75hB,GACR,GACP,CACA,SAAS85hB,GAAwBrF,EAAa31tB,GAC1C,IAAI4T,EACJ,IAAIstL,EAAW,GACf,MAAM,YAAE62hB,EAAW,gBAAED,GAAoBnC,EACnCsF,EAAiD,QAA/BrntB,EAAKmktB,EAAY72hB,gBAA6B,IAAPttL,OAAgB,EAASA,EAAG7d,MAAMoN,IAAIq9F,GAAWA,GAIhH,GAHIy6nB,IACA/5hB,EAAW,IAAIA,KAAa+5hB,KAE3Bj7tB,EAAQk7tB,qBACT,IAAK,IAAIvE,KAAemB,EAAiB,CACrC,MAAMqD,EAAgBN,GAAmClE,EAAY5guB,OACjEoluB,IACAj6hB,EAAW,IAAIA,KAAai6hB,GAEpC,CAEJ,MAAM/ilB,EAAO,CAAC,EAWd,OAVA8oD,EAAWA,EAASxmM,OAAO,CAACw7V,EAAU11P,KAClC,IAAI5sF,EACJ,MAAMhZ,EAA8B,QAAvBgZ,EAAK4sF,EAAQ46nB,YAAyB,IAAPxntB,OAAgB,EAASA,EAAGhZ,IACxE,OAAIA,GAAOw9I,EAAKx9I,IAAQ4lG,EAAQA,UAAY43C,EAAKx9I,GAAK4lG,QAC3C01P,GAEX99M,EAAKx9I,GAAO4lG,EACZ01P,EAAW,IAAIA,EAAU11P,KAE1B,IACI0gG,CACX,CA0EA,SAASm6hB,GAAmB1E,EAAa32tB,GACrC,MAAM,qBAAEk7tB,EAAoB,YAAEV,GAAgBx6tB,EAC9C,GAAK22tB,EAGL,OAAIuE,EACOZ,GAEJE,EAAY7D,EAAYhztB,KACnC,CACA,SAAS23tB,GAAc3F,EAAa38rB,EAAQh5B,GACxC,MAAMw6tB,EAAcx6tB,EAAQw6tB,YACtBU,EAAuBl7tB,EAAQk7tB,sBAC7BpD,gBAAiByD,EAAe,QAAEhisB,GAAYo8rB,EACtD,IAAI6F,EACJ,GAAIx7tB,EAAQ0R,KAAM,CACd,MAAMiltB,EAAc4E,EAAgBtwtB,KAAK,EAAGtH,UAAWA,IAAS3D,EAAQ0R,MACxE,GAAIiltB,EAAa,CACb,MAAM7rsB,EAAIuwsB,GAAmB1E,EAAa32tB,GAC1C,OAAO8qB,EAAI,IAAIA,EAAE6rsB,EAAa39rB,EAAQh5B,QAAWkH,CACrD,CAGI,YADA+V,EAAK,SAASjd,EAAQ0R,uCAG9B,CACA,MAAM+ptB,EAAuB,GAC7B,GAAIP,EACAO,EAAqBv3tB,KAAK,IAAIo2tB,GAAkBiB,EAAgB,GAAIvisB,EAAQh5B,SAG5E,IAAK,IAAI22tB,KAAe4E,EAEpB,GAD2BrhuB,OAAOO,KAAK+/tB,GAAaz0rB,SAAS4wrB,EAAYhztB,MACzE,CAKA,GADA63tB,EAAa,IADHH,GAAmB1E,EAAa32tB,GAC7B,CAAM22tB,EAAa39rB,EAAQh5B,GACpCw7tB,EAAWhC,aAAajgsB,GACxB,OAAOiisB,EAEXC,EAAqBv3tB,KAAKs3tB,EAN1B,CASR,OAAOC,EAAqB,EAChC,CACA,SAASl5lB,GAAYoxlB,EAAY6H,EAAY7F,GACzC,MAAM1vlB,EAAWu1lB,EAAWj5lB,YAAYoxlB,EAAYgC,EAAYp8rB,SAC1DmisB,EAtLV,SAAmB/F,GACf,OAAOA,EAAYmC,gBAAgBp1tB,KAAK,EAAGiB,UAAoB,SAATA,EAC1D,CAoLoBg4tB,CAAUhG,GACpBiG,EApLV,SAAqBjG,GACjB,OAAOz7tB,OAAOO,KAAKk7tB,EAAYt0B,SAAS3+rB,KAAKm5tB,GAAcA,EAAW91rB,SAAS,UACnF,CAkLsB+1rB,CAAYnG,GAC9B,OAAOz7tB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8rI,GAAYy1lB,GAAW,CAAEA,YAAcE,GAAa,CAAEA,aAC/G,CACA,SAASG,GAAqBpI,EAAYgC,EAAa31tB,EAAU,CAAC,GAC9D,MAAMmoR,EAAWyyc,GAAmBjF,GAC9Bz0hB,EAAW85hB,GAAwBrF,EAAa31tB,GACtD,GAAImoR,EACA,MAAO,CAAEwtc,cAAaxtc,WAAUjnF,YAE/B,CACD,MAAMs6hB,EAAaF,GAAc3F,EAAa,CAAC,EAAG31tB,GAC5CimI,EAAWu1lB,GAAcj5lB,GAAYoxlB,EAAY6H,EAAY7F,GACnE,OAAOz7tB,OAAOC,OAAO,CAAEw7tB,cACnBz0hB,YAAaj7D,GAAY,CAAEA,YACnC,CACJ,CCvNA,SAAS+1lB,GAAuBhjsB,GAC5B,OAAO9+B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE4nnB,YAAQ15oB,GAC9D,CACA,SAAS+0tB,GAAwBj8tB,EAAS67tB,GACtC,IAAIx6B,EAAUrhsB,EAAQqhsB,SAAW,GAOjC,OANAA,EAAUA,EAAQhgsB,OAAO2gD,GACA,iBAAVA,EACAA,IAAU65qB,EAEd75qB,EAAMr+C,OAASk4tB,GAEnB3huB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAEqhsB,WACvD,CACAprmB,eAAeimoB,GAAUvI,EAAYgC,EAAa38rB,EAAQh5B,GACtD,IAAI,gBAAE83tB,EAAe,gBAAEE,GAAoBrC,EAC3C,MAAM,KAAE7B,GAAS9ztB,EACjB,GAAIg4tB,EACA,MAAO,CAAErC,eAEb,MAAM6F,EAAaF,GAAc3F,EAAa38rB,EAAQh5B,GAChDm8tB,EAvBV,SAA6BnjsB,EAAQ28rB,GACjC,OAAOz7tB,OAAOO,KAAKk7tB,EAAYt0B,SAASp2rB,KAAK+4F,KAAYhrE,EAAO4nnB,QAAU58iB,EAAOj+D,SAAS,WAC9F,CAqB6Bq2rB,CAAoBpjsB,EAAQ28rB,GAE/Ct0B,EAAU,IADUrhsB,EAAQqhsB,SAAW,MAGrC86B,GAAoB,CAACA,IAAqB,IAElD,GAAI96B,EACA,IAAK,IAAIr9lB,KAAUq9lB,EAAS,CACxB,IAAI9woB,EAAS,CAAC,EACQ,iBAAXyzC,IACPzzC,EAASyzC,EAAOzzC,QAAU,CAAC,EAC3ByzC,EAASA,EAAOrgG,MAEpB,IAAI04tB,EAA8BL,GAAuBhjsB,GACrDsjsB,EAA+BL,GAAwBj8tB,EAASgkG,GACpE,GAA2C,mBAAhC2xnB,EAAYt0B,QAAQr9lB,GAE3B,OAAsC,KADtC2xnB,QAAoBA,EAAYt0B,QAAQr9lB,GAAQzzC,IAChCinqB,kBACLuE,GAAqBpI,EAAYgC,EAAa31tB,GAE1C,WAAXgkG,EACO,CAAE2xnB,cAAa4G,UAAU,GAE7BL,GAAUvI,EAAYgC,EAAa0G,EAA6BC,GAE3E,MAAME,EAAoB1E,EAAgB7stB,KAAK,EAAGtH,UAAWA,IAASqgG,GACtE,GAAIw4nB,EAEA,OAAsC,KADtC7G,QAAoBA,EAAY+B,QAAQ1znB,EAAQzzC,IAChCinqB,kBACLuE,GAAqBpI,EAAYgC,EAAa31tB,GAElDk8tB,GAAUvI,EAAYgC,EAAa38rB,EAAQsjsB,EAE1D,CAEJ,MAAMn0c,EAAWyyc,GAAmBjF,GACpC,GAAIxtc,EACA,MAAO,CAAEwtc,cAAaxtc,YAE1B,IAAKqzc,EAAY,CACb,GAAIx7tB,EAAQ0R,KAGR,OAFAsnB,EDuEZ,SAAoC28rB,EAAa8G,EAAiBzjsB,GAC9D,MACM29rB,GADehB,EAAYmC,iBAAmB,IACnB7stB,KAAKkf,GAAKA,EAAExmB,OAAS84tB,GACtD,OAAK9F,EAIwBA,EAAY5guB,MAAM2E,OAAO,CAAC85C,EAAKwN,KACxD,MAAM,KAAEr+C,EAAI,MAAE5N,GAAUisD,EAOxB,OALIxN,EAAI7wC,GADK,gBAATA,EACY5N,EAGAijC,EAAOr1B,GAEhB6wC,GACR,CAAC,IAZAv3B,EAAK,gCAAgCw/sB,qCAC9BzjsB,EAaf,CCzFqB0jsB,CAA2B/G,EAAa31tB,EAAQ0R,KAAMsnB,IAEzB,KADtC28rB,QAAoBA,EAAY+B,QAAQ13tB,EAAQ0R,KAAMsnB,IACtCw+rB,kBACLuE,GAAqBpI,EAAYgC,EAAa31tB,GAElD,CAAE21tB,eAEb,GAAa,YAAT7B,EACA,MAAO,CAAE6B,eAEb,MAAM,IAAIhJ,EAAa,2GAERmL,EAAgBp9tB,OAAO,CAACoL,EAAK27C,IAAS37C,EAAMA,EAAM,KAAO27C,EAAK99C,KAAO89C,EAAK99C,KAAM,aAEnG,CACA,IAAK63tB,EAAWhC,eAEZ,MAAO,CACH7D,cACA1vlB,SAHa1D,GAAYoxlB,EAAY6H,EAAY7F,IAMzD,MAAMhytB,EAAO63tB,EAAWx1T,UAClB7/Z,EAAOq1tB,EAAWl/e,UAExB,OAAsC,KADtCq5e,QAAoBA,EAAY+B,QAAQ/ztB,EAAMwC,IAC9BqxtB,kBACLuE,GAAqBpI,EAAYgC,EAAa31tB,IAEzDg5B,EAASwisB,EAAWxB,0BACpBh6tB,EAAU9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE0R,UAAMxK,KAChDg0tB,sBAAyBvF,EAAYqC,iBAAoB4C,GAAmBjF,GAQjFuG,GAAUvI,EAAYgC,EAAa38rB,EAAQh5B,GALvC,CACH21tB,cACA1vlB,SAHa1D,GAAYoxlB,EADlB2H,GAAc3F,EAAa38rB,EAAQh5B,GACD21tB,IAOrD,CCpGA,SAASgH,GAAiB38tB,GACtB,MASMg5B,EAAS9+B,OAAOC,OAAO,CAAC,EAAG6F,GAIjC,MAbqB,CACjB,OACA,cACA,UACA,kBACA,OACA,uBACA,yBAGSoC,QAAQszC,WACV1c,EAAO0c,KAEX1c,CACX,CA4IAi9D,eAAe8/B,GAAI49lB,EAAY3ztB,EAAU,CAAC,GACtC,IAAI4T,EACJ,IAAIzN,EAAO,CACPnG,UACAg5B,OAAQ2jsB,GAAiB38tB,IAE7BmG,EAjJJ,SAAwBwttB,EAAYxttB,GAChC,IAAIyN,EAAIG,EAAIsB,EAAIgmG,EAChB,IAAI,QAAEr7G,GAAYmG,EAClBnG,EAAU9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw5tB,EAAW3ztB,QAAQwiB,KAAMxiB,GACnE,IAAI,KAAE8ztB,EAAI,gBAAEz7b,EAAe,YAAEmic,EAAW,QAAEn5B,GAAarhsB,EACvD,MAAMu9H,EAASqtlB,EAAUgS,QAEzB,GADA9I,EAAOA,IAAkD,QAAxC//sB,GAAMH,EAAK+/sB,EAAWnxsB,KAAKq6sB,eAA4B,IAAP9otB,OAAgB,EAASA,EAAGtD,KAAKmD,KAAQ,UACtGkgtB,EAAM,CACmC,QAAxCz4mB,GAAMhmG,EAAKs+sB,EAAWnxsB,KAAKs6sB,eAA4B,IAAPzhnB,GAAyBA,EAAG5qG,KAAK4E,EAAIy+sB,GACtF,MAAMiJ,EFfd,SAA8BC,EAAUlJ,EAAO,WAC3C,OAAO55rB,GAAIugsB,qBAAqBuC,EAAUlJ,EAC9C,CEayB2G,CAAqB9G,EAAYG,GAClDz7b,OAA8C,IAApBA,EAAmCA,EAAkB0kc,EAAS1kc,gBACxFmic,EAAcA,GAAeuC,EAASvC,YACtCn5B,EAAUA,GAAW07B,EAAS17B,OAClC,CACA,OAAOnnsB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgM,GAAO,CAAEnG,QAAS9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE8ztB,OAC7Fz7b,kBACAmic,cACAn5B,YAAY9jkB,UACxB,CA+HW0/lB,CAAetJ,EAAYxttB,GAClCA,QA/HJ8vF,eAAqC09nB,EAAYxttB,GAC7C,MAAM,QAAEnG,GAAYmG,GACd,YAAEuytB,EAAW,gBAAErgc,EAAe,QAAEpjN,EAAO,MAAEl1E,EAAK,OAAEykC,EAAM,cAAEwvrB,EAAa,gBAAED,EAAe,OAAEE,EAAM,UAAElG,EAAS,MAAEtxnB,EAAK,qBAAEy+nB,GAA0Bl7tB,EAClJ,IAAI21tB,EACAxtrB,EAAO,GAAwBwrrB,EAAY,CAAE5ztB,QAAOi0tB,gBAAeD,oBACvE,GAAI2E,EACA/C,QAAoB2C,GAAW3E,EAAY,CAAEt7b,kBAAiBpjN,UAASyjpB,cAAawC,6BAEnF,CACD,IAAI9G,EAAoBjsrB,aAAmC,EAASA,EAAKisrB,kBACzE,IAAKA,EAAmB,CACpBT,EAAWt4nB,mBAAmBlwB,QAC9B,MAAM+xpB,QAAyB1I,GAASb,EAAY,CAChDt7b,kBACAt4R,QACAykC,SACAuvrB,kBACAC,gBACAC,SACAlG,YACAtxnB,UAEJ23nB,EAAoB8I,EAAiB9I,kBACrCjsrB,EAAO+0rB,EAAiB/0rB,IAC5B,CACAwtrB,QAAoB2C,GAAW3E,EAAY,CAAEt7b,kBAAiBpjN,UAASm/oB,oBAAmB8G,wBAC9F,CACA,OAAOhhuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgM,GAAO,CAAEwvtB,cAAaxtrB,QACjE,CAmGiBg1rB,CAAsBxJ,EAAYxttB,GAC/CA,QAnGJ8vF,eAAoC09nB,EAAYxttB,GAC5C,IAAI,YAAEwvtB,EAAW,QAAE31tB,EAAO,OAAEg5B,GAAW7yB,EACvC,MAAM,cAAEi3tB,EAAa,YAAE5C,EAAW,QAAEn5B,EAAO,KAAEyyB,EAAI,KAAEpitB,EAAI,qBAAEwptB,GAA0Bl7tB,EAEnF,IAD2C,IAAlBo9tB,KAA4B5C,GAAen5B,GAAW3vrB,GAE3E,OAAOvL,EAEX6yB,EAAS9+B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE0/rB,YAAa/C,EAAYoC,YAAYW,cACzF,MAAQ/C,YAAa0H,EAA0B,SAAEp3lB,EAAQ,SAAEs2lB,SAAoBL,GAAUvI,EAAYgC,EAAa38rB,EAAQ,CACtHwhsB,cACAn5B,UACAyyB,OACApitB,OACAwptB,yBAGJ,OADAvF,EAAc0H,EACPnjuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgM,GAAO,CAAEwvtB,cAAa1vlB,WAAUs2lB,YAC3E,CAkFiBe,CAAqB3J,EAAYxttB,GAC9CA,QApEJ8vF,eAA4B09nB,EAAYxttB,GACpC,IAAI,QAAEnG,EAAO,YAAE21tB,EAAW,SAAE4G,EAAQ,OAAEh/lB,GAAYp3H,EAClD,MAAM,sBAAEo3tB,GAA0Bv9tB,EAClC,IAGIg4tB,EACAn2nB,EACA27nB,EACAC,EACAv8hB,EACAinF,EARAu1c,GAAqB,EACrBC,GAAyB,EACzBC,GAAqB,EAczB,GAPIjI,IACA+H,KAAwB/H,EAAY6B,oBAAqB7B,EAAYC,QACrE4H,EFhCR,SAA4B7H,GACxB,MAAMnhrB,EAAM,IACN,QAAE6spB,EAAO,gBAAEy2B,GAAoBnC,EAarC,OAZIt0B,EAAQ,iCACR7spB,EAAItwC,KAAK4mtB,EAAW+S,mBAEpB/F,EAAgBp1tB,KAAK,EAAGiB,UAAoB,0BAATA,IACnC6wC,EAAItwC,KAAK4mtB,EAAWgT,cAEpBhG,EAAgBp1tB,KAAK,EAAGiB,UAAoB,iBAATA,IACnC6wC,EAAItwC,KAAK4mtB,EAAWiT,YAEpBjG,EAAgBp1tB,KAAK,EAAGiB,UAAoB,mBAATA,IACnC6wC,EAAItwC,KAAK4mtB,EAAWkT,gBAEjBxprB,CACX,CEgB0ByprB,CAAmBtI,GACrC8H,EFhBR,SAA2B9J,EAAYgC,EAAauF,GAChD,IAAItntB,EACJ,MAAM4gC,EAAM,GACN0prB,EAAgBhkuB,OAAO8+B,OAAOkB,GAAIsgsB,aACnC9/tB,OAAO,CAACyI,EAAKg7tB,KACVA,EAAgB1B,kBAChBt5tB,EAAIg7tB,EAAgB1B,iBAAmB0B,GAEpCh7tB,GACR,CAAC,GACJ,IAAK,IAAIwztB,KAAehB,EAAYmC,gBAAiB,CACjD,MAAMhtsB,EAAIuwsB,GAAmB1E,EAAa,CAAEuE,uBAAsBV,YAAa0D,IAC/E,GAAIpzsB,EAAG,CACH,MAAM0wsB,EAAa,IAAI1wsB,EAAE6rsB,GACzBnirB,EAAItwC,KAAKs3tB,EAAWj5lB,YAAYoxlB,EAAYgC,EAAYp8rB,SAC5D,CACJ,CACA,IAAK,MAAO51B,KAASzJ,OAAOo7D,QAASqgqB,EAAYt0B,SAAW,CAAC,GAAK,CAC9D,IAAI+8B,EAAU,CACVz6tB,OACAqgG,OAAQ/N,MAAO1lC,GACJojqB,EAAWnxsB,IAAIk1sB,QAAQ,CAC1Br2B,QAAS,CAAC,CAAE19rB,OAAM4sD,cAI9B,GAAI5sD,EAAKs4B,WAAW,wBAAyB,CACzC,MAAOoisB,EAAOC,GAASjS,EAAO1otB,EAAM,KAC9B46tB,EAAY5I,EAAYoC,YAAYsG,GAAOtouB,MAAMuouB,GACjD1+sB,EAAO8zsB,GAAO6K,EAAW,CAAC,OAAQ,SAAU,MAAO,UAAW,aAC9DxouB,EAAmC,QAA1B6d,EAAK2qtB,EAAUxouB,aAA0B,IAAP6d,OAAgB,EAASA,EAAGvS,OAAO+hB,GAAsB,gBAAdA,EAAKzf,MACjGy6tB,EAAUlkuB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGylB,GAAQ7pB,GAAS,CAAEA,UAAWqouB,EAC1F,CACA5prB,EAAItwC,KAAKk6tB,EACb,CACA,OAAO5prB,CACX,CEpByBgqrB,CAAkB7K,EAAYgC,EAAa31tB,EAAQk7tB,sBACpEh6hB,EAAW85hB,GAAwBrF,EAAa31tB,GAChDmoR,EAAWyyc,GAAmBjF,IAE9Bxtc,EAAU,CACV5qJ,EAASqtlB,EAAU6T,SACnB,MAAMC,EAAaxkuB,OAAOO,KAAKk7tB,EAAYt0B,SAAS78rB,OAAS,EACvDw9W,IAAc9gL,EAASj2L,KAAKs2I,GAAqB,UAAdA,EAAIovM,OAClB+tY,GAAe18W,IAA+C,IAAlC2zW,EAAY6B,kBAK/DkG,IAAuBgB,EAHvBf,GAAyB,EAK7BC,GAAqB,CACzB,MACSrB,GACLh/lB,EAASqtlB,EAAU+T,SACnBhB,GAAyB,IAEpBhI,aAAiD,EAASA,EAAYqC,mBAC3EA,EAAkBrC,EAAYqC,iBACA,IAA1BuF,GACAhgmB,EAASqtlB,EAAUgU,QACnBjB,GAAyB,IAGzB97nB,QAzDZ5L,eAAyB09nB,EAAYxttB,GACjC,IAAI,KAAEgiC,EAAI,YAAEwtrB,GAAgBxvtB,EAC5B,MAAM,gBAAE6xtB,GAAoBrC,GACtB,SAAEhgoB,EAAQ,aAAEu4nB,EAAY,gBAAEJ,EAAe,YAAEF,EAAW,KAAEt5lB,EAAI,OAAE9vF,GAAY2D,EAShF,aAR4BwrrB,EAAWt/sB,MAAMkptB,sBAAsB,CAC/DvF,kBACArioB,WACAu4nB,eACAJ,kBACAF,cACApprB,UACD8vF,IACkBzyB,MACzB,CA4C2Bg9nB,CAAUlL,EAAYxttB,GACrCo3H,EAASqtlB,EAAUgU,QACnBjB,GAAyB,IAGjC,OAAOzjuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgM,GAAO,CAAEo3H,SAC5Cy6lB,kBACAn2nB,SACA67nB,qBACAC,yBACAC,qBACAJ,kBACAC,iBACAv8hB,WACAinF,YACR,CAUiB22c,CAAanL,EAAYxttB,GACtC,MAAM,YAAEwvtB,EAAW,KAAExtrB,EAAI,mBAAEu1rB,EAAkB,uBAAEC,EAAsB,mBAAEC,EAAkB,OAAErgmB,EAAM,gBAAEigmB,EAAe,eAAEC,EAAc,OAAE57nB,EAAM,SAAEokC,EAAQ,SAAEi7D,EAAQ,MAAE7mL,EAAK,gBAAE29sB,GAAoB7xtB,EAC3L,GAAIw3tB,EACAhK,EAAWt4nB,mBAAmBlwB,MAAM,CAAEyypB,4BAItC,GADA,GAAoBjK,EAAYz5tB,OAAOC,OAAO,CAAC,EAAGguC,IAC9Cu1rB,EAAoB,CACpB,MAAQ3F,YAAaN,EAAc,kBAAED,GAAsB7B,EAC3DhC,EAAWt4nB,mBAAmB0joB,gBAAgB,CAC1CtH,iBACAD,oBACAkB,YAA4C,QAA9B9ktB,EAAK+htB,EAAYp8rB,eAA4B,IAAP3lB,OAAgB,EAASA,EAAG8ktB,YAChFtE,kBAAmBjsrB,aAAmC,EAASA,EAAKisrB,mBAE5E,CAEJ,MAAM,QAAE/yB,EAAO,QAAE9nqB,EAAO,gBAAEu+rB,EAAe,QAAEJ,EAAO,YAAEK,EAAW,kBAAEP,EAAiB,OAAE5B,GAAWD,GAAe,CAAC,EAC/G,OAAOz7tB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAEojI,OAAQA,GAAWp1F,GAAQ,CAAEA,SAAWq1rB,GAAmB,CAAEA,oBAAsBC,GAAkB,CAAEA,mBAAqB57nB,GAAU,CAAEA,WAAaokC,GAAY,CAAEA,aAAei7D,GAAYA,EAAS18L,QAAU,CAAE08L,aAAe7mL,GAAS,CAAEA,UAAYu7sB,GAAU,CAAEA,WAAY,CAAEoC,kBACtZ32B,QAASA,EAAS9nqB,QAASA,EAASu+rB,gBAAiBA,EAAiBJ,QAASA,EAASK,YAAaA,EAAaP,qBAC1H,CC5LAvhoB,eAAe+ooB,GAAarL,EAAY3ztB,EAAU,CAAC,GAI/C,OAHIA,EAAQ6wK,WAAa7wK,EAAQg5tB,gBAC7Bh5tB,EAAQg5tB,cAAgBnO,EAAiBoU,eAEtClpmB,GAAI49lB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE8ztB,KAAM,iBAC7E,CCRA,MAAMoL,GACF,WAAArutB,CAAYmotB,GACR5otB,KAAK+3B,KAAO6wrB,CAChB,ECDJ,MAAMmG,WAAsCD,GACxC,SAAAE,CAAUpmsB,GACN,SAAUA,EAAOqmsB,aAAermsB,EAAOsmsB,kBAAoBtmsB,EAAOumsB,IACtE,CACA,cAAAC,CAAexmsB,GACX,MAAM,YAAEqmsB,EAAW,iBAAEC,EAAgB,IAAEC,GAAQvmsB,EAC/C,GAAKqmsB,GAAgBC,GAAqBC,EAG1C,OAAOF,GAAe,CAAEI,SAAUH,GAAoBC,EAC1D,CACA,SAAA32b,CAAU82b,GACN,IAAI9rtB,EACJ,OAAO1Z,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAuC,QAAnCyZ,EAAK8rtB,EAAoBt/Z,YAAyB,IAAPxsT,OAAgB,EAASA,EAAG7d,MAAM,IAAK,CAAE4N,KAAM,mBAAoByc,KAAM,SAAU2tN,SAAU2xf,EAAoB3xf,UACxM,ECdJ,MAAM4xf,WAAuBR,GACzB,cAAAK,CAAexmsB,GACX,MAAM,iBAAEsmsB,GAAqBtmsB,EAC7B,GAAKsmsB,EAGL,MAAO,CAAEM,KAAMN,EACnB,ECPJ,MAAMO,WAAqBX,GACvB,SAAAE,CAAUpmsB,GACN,SAAUA,EAAOqmsB,aAAermsB,EAAO63I,UAAY73I,EAAOymsB,SAC9D,CACA,cAAAD,CAAexmsB,GACX,MAAM,YAAEqmsB,EAAW,SAAExujB,EAAQ,SAAE4ujB,EAAQ,eAAEK,GAAmB9msB,EAC5D,GAAKqmsB,GAAgBxujB,GAAa4ujB,EAGlC,OAAOJ,GAAe,CAClBI,SAAUA,GAAY5ujB,EACtBivjB,iBAER,CACA,SAAAl3b,CAAU82b,GACN,IAAI9rtB,EAAIG,EACR,MAAMmvB,EAAS,CAAChpC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAuC,QAAnCyZ,EAAK8rtB,EAAoBt/Z,YAAyB,IAAPxsT,OAAgB,EAASA,EAAG7d,MAAM,IAAK,CAAE4N,KAAM,WAAYyc,KAAM,SAAU2tN,SAAU2xf,EAAoB3xf,YAUrM,OAT2D,QAAnCh6N,EAAK2rtB,EAAoBt/Z,YAAyB,IAAPrsT,OAAgB,EAASA,EAAGhe,MAAMkV,KAAK5Y,GAAwB,mBAAfA,EAAMsR,QAErHu/B,EAAOh/B,KAAK,CACRP,KAAM,iBACNyc,KAAM,UACNnO,MAAO,mCACP87N,UAAU,IAGX7qM,CACX,EC3BJ,MAAM68rB,WAAmCb,GACrC,SAAAE,CAAUpmsB,GACN,MAAM,YAAEqmsB,GAAgBrmsB,EACxB,GAAIqmsB,GAAeA,EAAYW,aAAeX,EAAY/itB,OACtD,OAAO,EAEX,MAAM,YAAE0jtB,EAAW,SAAEC,EAAQ,OAAE3jtB,GAAW0c,EAC1C,SAAUgnsB,IAAe1jtB,OAAc2jtB,IAAY3jtB,EACvD,CACA,cAAAkjtB,CAAexmsB,GACX,MAAM,YAAEgnsB,EAAW,SAAEC,EAAQ,OAAE3jtB,GAAW0c,EAC1C,GAAK1c,IAAY0jtB,GAAgBC,GAGjC,MAAO,CACHD,YAAaC,EAAW,SAAWD,EACnCC,WACA3jtB,SAER,CACA,SAAAssR,GACI,MAAO,CACH,CAAEjlS,KAAM,cAAeyc,KAAM,SAAU2tN,UAAU,GACjD,CAAEpqO,KAAM,WAAYyc,KAAM,SAAUnO,MAAO,8BAC3C,CAAEtO,KAAM,SAAUyc,KAAM,SAAUnO,MAAO,SAAU87N,UAAU,GAErE,EC1BJ,MAAMmyf,WAAqChB,GACvC,SAAAE,CAAUpmsB,GACN,MAAM,YAAEqmsB,GAAgBrmsB,EACxB,GAAIqmsB,GAAeA,EAAY/itB,OAC3B,OAAO,EAEX,MAAM,OAAEA,GAAW0c,EACnB,QAAS1c,CACb,CACA,cAAAkjtB,CAAexmsB,GACX,MAAM,OAAE1c,GAAW0c,EACnB,GAAK1c,EAGL,MAAO,CACH0jtB,YAAa5vtB,KAAK+3B,KAAKg4rB,eAAeC,iBAAiBJ,YACvD1jtB,SAER,CACA,SAAAssR,GACI,MAAO,CACH,CAAEjlS,KAAM,SAAUyc,KAAM,SAAUnO,MAAO,SAAU87N,UAAU,GAErE,ECvBJ,MAAMsyf,WAA2BnB,GAC7B,SAAAE,CAAUpmsB,GACN,MAAM,YAAEqmsB,GAAgBrmsB,EAClBtW,EAAM28sB,GAAermsB,GACrB,WAAEsnsB,EAAU,YAAEC,GAAgB79sB,EACpC,SAAU49sB,IAAcC,EAC5B,CACA,cAAAf,CAAexmsB,GACX,MAAM,YAAEqmsB,EAAW,WAAEiB,EAAU,YAAEC,GAAgBvnsB,EACjD,GAAKqmsB,GAAgBiB,GAAeC,EAGpC,OAAOlB,GAAe,CAClBiB,aACAC,cAER,CACA,SAAA33b,GACI,MAAO,CACH,CAAEjlS,KAAM,aAAcyc,KAAM,SAAU2tN,UAAU,EAAM74L,SAAS,EAAOjjC,MAAO,eAC7E,CAAEtO,KAAM,cAAeyc,KAAM,SAAU2tN,UAAU,EAAM74L,SAAS,EAAOjjC,MAAO,eAEtF,ECtBJ,MAAMuutB,WAA6BtB,GAC/B,SAAAE,CAAUpmsB,GACN,MAAM,YAAEqmsB,GAAgBrmsB,EAClBtW,EAAM28sB,GAAermsB,GACrB,WAAEsnsB,EAAU,kBAAEG,EAAiB,cAAEC,GAAkBh+sB,EACzD,SAAU49sB,GAAcG,GAAqBC,EACjD,CACA,cAAAlB,CAAexmsB,GACX,MAAM,YAAEqmsB,EAAW,kBAAEoB,EAAiB,WAAEH,EAAU,cAAEI,GAAkB1nsB,EACtE,GAAKqmsB,GAAgBoB,GAAsBH,GAAeI,EAG1D,OAAOrB,GAAe,CAClBoB,oBACAH,aACAI,gBAER,CACA,SAAA93b,GACI,MAAO,CACH,CAAEjlS,KAAM,oBAAqByc,KAAM,SAAUnO,MAAO,qBAAsB87N,UAAU,EAAM74L,SAAS,GACnG,CAAEvxC,KAAM,aAAcyc,KAAM,SAAUnO,MAAO,cAAe87N,UAAU,EAAM74L,SAAS,GACrF,CAAEvxC,KAAM,gBAAiByc,KAAM,SAAUnO,MAAO,iBAAkB87N,UAAU,EAAM74L,SAAS,GAEnG,ECvBJ,MAAMyrrB,WAA4BvH,GAC9B,WAAAvotB,CAAY8ltB,EAAa39rB,EAAS,CAAC,GAC/ByqB,MAAMkzqB,EAAa39rB,GACnB5oB,KAAK4otB,cCGb,SAA0BrC,GACtB,IAAI/itB,EAAIG,EACR,MAAM6itB,EAAYD,EAAYC,UACxB7guB,GAAS6guB,aAA6C,EAASA,EAAU7guB,QAAU,CAAC,EAC1F,OAAQA,EAAM6E,KACV,KAAKiwtB,EAAiBoU,cAClB,OAAO,IAAIY,GAAa9puB,GAC5B,KAAK80tB,EAAiB+V,kBAClB,OAAoC,QAA/BhttB,EAAK7d,EAAMoquB,sBAAmC,IAAPvstB,OAAgB,EAASA,EAAGwstB,kBAC7D,IAAIF,GAA6BnquB,GAGjC,IAAIgquB,GAA2BhquB,GAE9C,KAAK80tB,EAAiBgW,YAClB,OAAO,IAAIlB,GAAe5puB,GAC9B,KAAK80tB,EAAiBiW,SAClB,OAAoC,QAA/B/stB,EAAKhe,EAAMoquB,sBAAmC,IAAPpstB,OAAgB,EAASA,EAAGgttB,eAC7D,IAAIP,GAAqBzquB,GAGzB,IAAIsquB,GAAmBtquB,GAEtC,QACI,OAAO,IAAIopuB,GAA8BppuB,GAErD,CD7B6B4juB,CAAiBhD,EAC1C,CACA,WAAAp0lB,CAAYoxlB,EAAYp6rB,GACpB,IAAI3lB,EACJ,MAAMqyH,EAAWxiF,MAAM8+E,YAAYoxlB,EAAYp6rB,GACzCynsB,EAAyH,QAA7FpttB,EAAK2lB,aAAyC,EAASA,EAAQynsB,gCAA6C,IAAPpttB,OAAgB,EAASA,EAAG7d,MACnK,OAAOmE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8rI,GAAW,CAAE+6lB,4BACxD,CACA,YAAAxH,GACI,OAAOpptB,KAAK4otB,cAAcoG,UAAUhvtB,KAAK4oB,OAC7C,CACA,cAAAwmsB,GACI,OAAOpvtB,KAAK4otB,cAAcwG,eAAepvtB,KAAK4oB,OAClD,CACA,mBAAAiosB,CAAoB5uuB,GAChB,OAAO+d,KAAK4otB,cAAcpwb,UAAUv2S,EACxC,CACA,qBAAA2nuB,GAGI,OAFA5ptB,KAAK4oB,OAASyqB,MAAMu2qB,wBACA9/tB,OAAOO,KAAK2V,KAAK4oB,QAAQ33B,OAAO6/tB,GAAyB,gBAAbA,GAC3CxmuB,OAAO,CAACs+B,EAAQkosB,IAAchnuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE,CAACkosB,GAAW9wtB,KAAK4oB,OAAOkosB,KAAe,CAAC,EAC1I,EEzBJ,MAAMC,WAA4BR,IAElCQ,GAAoB1E,gBAAkB,uBCFtC,MAAM2E,WAAmBhI,GACrB,YAAAI,GACI,QAASpptB,KAAK4oB,OAAOqosB,cAAsC,gBAAtBjxtB,KAAKpQ,QAAQ0R,IACtD,CACA,WAAA6wH,CAAYoxlB,EAAYp6rB,GACpB,MAAMg0D,EAAS9pC,MAAM8+E,YAAYoxlB,EAAYp6rB,GAC7C,IAAIy/rB,EAAgB5otB,KAAKuptB,mBAIzB,OAHKX,IAAkBz/rB,aAAyC,EAASA,EAAQ+nsB,wBAC7EtI,EAAgBz/rB,EAAQ+nsB,qBAAqBvruB,OAE1CmE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGozF,GAAS,CAAEyroB,gBAAer0E,KAAM,CAC/D52a,UAAU,EACV4xC,QAASvvQ,KAAKumtB,YAAYh3c,UAEtC,CACA,qBAAAq6c,GAEI,OADoB9/tB,OAAOO,KAAK2V,KAAK4oB,QAAQ33B,OAAO6/tB,GAAyB,iBAAbA,GAC3CxmuB,OAAO,CAACs+B,EAAQkosB,IAAchnuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE,CAACkosB,GAAW9wtB,KAAK4oB,OAAOkosB,KAAe,CAAC,EAC1I,EAEJE,GAAW3E,gBAAkB,cCpB7B,MAAM8E,WAAgCnI,GAClC,YAAAI,GACI,GAAIpptB,KAAK4oB,OAAO8rjB,QACZ,OAAO,EAEX,GAAI10kB,KAAK4oB,OAAOggsB,cAAe,CAC3B,MAAM,GAAE7qtB,EAAE,QAAE22kB,GAAY10kB,KAAK4oB,OAAOggsB,cACpC,GAAM7qtB,GAAQ22kB,EACV,OAAO,CAEf,CACA,OAAO,CACX,CACA,WAAAvid,CAAYoxlB,EAAYp6rB,GACpB,MAAMg0D,EAAS9pC,MAAM8+E,YAAYoxlB,EAAYp6rB,GACvCy/rB,EAAgBz/rB,EAAQ+nsB,qBAAqBvruB,MACnD,OAAOmE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGozF,GAAS,CAAEyroB,iBACtD,CACA,OAAA18e,GACI,IAAI1oO,EAEJ,MAAO,CACHoltB,cAAe,CACX7qtB,GAHiBiC,KAAKumtB,YAAY5guB,MAAM,GAAGA,MAGtBqqU,KAAKrqU,MAAM,GAAGA,MACnC+ulB,SAA+C,QAApClxkB,EAAKxD,KAAK4oB,OAAOggsB,qBAAkC,IAAPpltB,OAAgB,EAASA,EAAGkxkB,UAAY10kB,KAAK4oB,OAAO8rjB,SAE/G4zI,YAAatotB,KAAK4oB,OAAO0/rB,YAEjC,CACA,qBAAAsB,GACI5ptB,KAAK4oB,OAASyqB,MAAMu2qB,+BACb5ptB,KAAK4oB,OAAOsgsB,eACnB,MAAMkI,EAAYpxtB,KAAK4oB,OAAO8rjB,QAAU,UAAY,gBAEpD,OADoB5qlB,OAAOO,KAAK2V,KAAK4oB,QAAQ33B,OAAO6/tB,GAAYA,IAAaM,GACxD9muB,OAAO,CAACs+B,EAAQkosB,IAAchnuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE,CAACkosB,GAAW9wtB,KAAK4oB,OAAOkosB,KAAe,CAAC,EAC1I,EAEJK,GAAwB9E,gBAAkB,4BCrC1C,MAAMgF,WAA8BrI,GAChC,aAAAsI,GACI,MAAO,CACH,CAAE/9tB,KAAM,QAASyc,KAAM,SAAU2tN,UAAU,EAAM97N,MAAO,SAEhE,CACA,mBAAA0vtB,GACI,MAAO,CACH,CAAEh+tB,KAAM,cAAeyc,KAAM,SAAU2tN,UAAU,EAAM97N,MAAO,gBAEtE,CACA,YAAAuntB,GACI,OAAOnioB,QAAQjnF,KAAK4oB,OAAOgtR,OAAS51S,KAAK4oB,OAAO4osB,YACpD,CACA,WAAAr/lB,CAAYoxlB,EAAYp6rB,GACpB,MAAMg0D,EAAS9pC,MAAM8+E,YAAYoxlB,EAAYp6rB,GACvCy/rB,EAAgBz/rB,EAAQ+nsB,qBAAqBvruB,MACnD,OAAOmE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGozF,GAAS,CAAEyroB,iBACtD,CACA,OAAA18e,GACI,MAAO,CACHo8e,YAAatotB,KAAK4oB,OAAO0/rB,YACzB1ya,MAAO51S,KAAK4oB,OAAOgtR,MACnB47a,YAAaxxtB,KAAK4oB,OAAO4osB,YAEjC,CACA,qBAAA5H,GAEI,OADoB9/tB,OAAOO,KAAK2V,KAAK4oB,QAAQ33B,OAAO6/tB,IAAa,CAAC,QAAS,eAAen7rB,SAASm7rB,IAC9ExmuB,OAAO,CAACs+B,EAAQkosB,IAAchnuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE,CAACkosB,GAAW9wtB,KAAK4oB,OAAOkosB,KAAe,CAAC,EAC1I,EAEJO,GAAsBhF,gBAAkB,0BC/BxC,MAAMoF,WAA+BlB,IAErCkB,GAAuBpF,gBAAkB,0BCFzC,MAAMqF,WAAsBV,GACxB,YAAA5H,GACI,QAASpptB,KAAK4oB,OAAOqosB,cAAsC,mBAAtBjxtB,KAAKpQ,QAAQ0R,IACtD,EAEJowtB,GAAcrF,gBAAkB,iBCLhC,MAAMsF,WAA2BpB,IAEjCoB,GAAmBtF,gBAAkB,sBCArC,MAAMuF,WAAsB5I,GACxB,WAAAvotB,CAAY8ltB,EAAa39rB,EAAS,CAAC,EAAGh5B,EAAU,CAAC,GAC7CyjD,MAAMkzqB,EAAa39rB,EAAQh5B,GAC3BoQ,KAAK4otB,cAAgB,KACD5otB,KAAK6xtB,kCAErB7xtB,KAAK4otB,cAAgB5otB,KAAK4otB,cAAgB,IAAI6G,GAAa,CAAC,GAEpE,CACA,YAAArG,GACI,GAAIpptB,KAAK4otB,gBAAkB5otB,KAAK4otB,cAAcoG,UAAUhvtB,KAAK4oB,QACzD,OAAO,EAEX,MAAMkpsB,EAAwB9xtB,KAAKksO,UAAU6lf,YAC7C,QAAKD,GAG8B9xtB,KAAKumtB,YAAY5guB,MAAMkV,KAAK,EAAGtH,UAAoB,gBAATA,GAC3Cy8T,KAAKrqU,MAAM2E,OAAO,CAAC8+tB,EAAc/3qB,KAC3DA,EAAKssL,WACLyrf,EAAeA,KAAkB0I,EAAsBzgrB,EAAK99C,OAEzD61tB,IACR,EACP,CACA,6BAAAyI,GACI,OAAO7xtB,KAAKumtB,YAAY5guB,MAAMkV,KAAK,EAAGtH,UAAoB,gBAATA,EACrD,CACA,cAAAy+tB,EAAiBhia,MAAQrqU,MAAOssuB,KAC5B,MACMl8tB,EADiBk8tB,EAAkBl/tB,IAAI,EAAGQ,UAAWA,GAC/BjJ,OAAO,CAAC4nuB,EAAiBxqa,IAAmB1nT,KAAK4oB,OAAO8+R,GAAiB59T,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGmouB,GAAkB,CAAE,CAACxqa,GAAgB1nT,KAAK4oB,OAAO8+R,KAAoBwqa,EAAkB,CAAC,GAC7N,GAAiC,IAA7BpouB,OAAOO,KAAK0L,GAAM3B,OAGtB,OAAO2B,CACX,CACA,cAAAq5tB,GACI,MAAMznsB,EAAM3nB,KAAK4otB,eAAiB5otB,KAAK4otB,cAAcwG,eAAepvtB,KAAK4oB,QACzE,GAAKjB,EAGL,OAAOA,CACX,CACA,mBAAAwqsB,CAAoBlwuB,GAChB,MAAO,IAAIA,EAAM+tU,KAAKrqU,MAC1B,CACA,mBAAAkruB,CAAoB5uuB,GAChB,MAAO,IAAIA,EAAM+tU,KAAKrqU,MAC1B,CACA,gBAAAysuB,CAAiBC,GACb,OAAOA,EAAiB1suB,MAAM,GAAGqqU,KAAKrqU,MAAM2E,OAAO,CAAC22O,EAAQ9wE,KACpDA,EAAM2gC,UACNmwC,EAAOntO,KAAKq8J,EAAM2gC,SAASnrM,MAAM,GAAGyqG,SAEjC6wI,GACR,GACP,EAEJ2wf,GAAcvF,gBAAkB,iBC5DhC,MAAMiG,WAAiBtJ,GACnB,WAAAvotB,GACI4yC,SAASl/C,WACT6L,KAAKjN,IAAM,CACP,WAAc,CAAC,YAEvB,CACA,YAAAq2tB,GACI,MAAM,WAAE1lc,GAAe1jR,KAAKksO,UAC5B,QAASw3C,CACb,CACA,cAAA0rc,GACI,MAAM,YAAEH,EAAW,SAAExujB,GAAazgK,KAAK4oB,OACvC,GAAKqmsB,GAAgBxujB,EAGrB,OAAOwujB,GAAe,CAAEI,SAAU5ujB,EACtC,CACA,mBAAAowjB,CAAoB5uuB,GAChB,OAAO6H,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9H,EAAM+tU,KAAKrqU,MAAM,IAAK,CAAE4N,KAAM,WAAYoqO,SAAU17O,EAAM07O,UACrG,EAEJ20f,GAASjG,gBAAkB,WCtB3B,MAAMkG,WAA8BvJ,GAChC,cAAAoG,GACI,MAAM,YAAEoD,GAAgBxytB,KAAK4oB,OAC7B,GAAK4psB,EAGL,MAAO,CACHnD,SAAUmD,EAElB,CACA,mBAAA3B,CAAoB5uuB,GAChB,MACMsR,EAAyB,aADTyM,KAAKuptB,mBAAmBv5sB,KACF,cAAgB,mBAC5D,OAAOlmB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG9H,EAAM+tU,KAAKrqU,MAAM,IAAK,CAAE4N,QACnE,EAEJg/tB,GAAsBlG,gBAAkB,yBChBxC,MAAMoG,WAAqCF,IAE3CE,GAA6BpG,gBAAkB,iCCF/C,MAAMqG,WAAoB1J,GACtB,YAAAI,GACI,OAAO,CACX,CACA,WAAAj3lB,GACI,MAAM,KAAE5+H,EAAI,KAAEyc,EAAI,IAAE2itB,EAAG,KAAE1koB,GAASjuF,KAAKumtB,YACvC,MAAO,CACHhztB,OACAyc,OACA2itB,MACA1koB,OAER,EAEJykoB,GAAYrG,gBAAkB,eCX9B,MAAMuG,WAA4B5J,GAC9B,iBAAA6J,CAAkB3J,EAAgBt5tB,GAC9B,IAAI01C,EACJ,IAAK,IAAIsjrB,KAAiBM,EAGtB,GAFA5jrB,EAAS11C,EACJiL,KAAK,EAAG2rtB,eAAgBA,EAAUh8tB,KAAOg8tB,EAAUh8tB,MAAQo+tB,EAAcp+tB,KAC1E86C,EACA,MAGR,OAAOA,CACX,CACA,YAAA8jrB,CAAajgsB,GACT,IAAI3lB,EAAIG,EACR,MAAM,eAAEultB,EAAc,cAAEN,GAAkB5otB,KAAK4oB,OACzCihsB,EAA+BpB,GAAgCzotB,KAAKumtB,cACpE,QAAE32tB,GAAYi6tB,EACpB,IAAKX,IAAmBA,EAAe90tB,OACnC,OAAO,EAEX,GAAIumtB,EAAgBiO,IAAkBA,EAAc7qtB,GAChD,OAAO,EAEX,MAAM+0tB,EAAgB9ytB,KAAK6ytB,kBAAkB3J,EAAgBt5tB,GAC7D,GAAIkjuB,EAAe,CACf,MAAMC,GAA0B5psB,aAAyC,EAASA,EAAQ+nsB,wBAClF/nsB,aAAyC,EAASA,EAAQ+nsB,qBAAqBvruB,MAAMoY,OAA4C,QAAlCyF,EAAKsvtB,EAActM,iBAA8B,IAAPhjtB,OAAgB,EAASA,EAAGzF,IACvKi1tB,GAAoC7psB,aAAyC,EAASA,EAAQ8psB,kCAC5F9psB,aAAyC,EAASA,EAAQ8psB,+BAA+BttuB,MAAMoY,OAA4C,QAAlC4F,EAAKmvtB,EAActM,iBAA8B,IAAP7itB,OAAgB,EAASA,EAAG5F,IACvL,OAAQg1tB,IAA2BC,CACvC,CACA,OAAO,CACX,CACA,gBAAAE,CAAiBtM,GACb,MAAM,eAAEsC,EAAc,cAAEN,GAAkB5otB,KAAK4oB,OAC/C,GAAI+xrB,EAAgBiO,IAAkBA,EAAc7qtB,GAEhD,OADAiC,KAAKmztB,sBAAwBvK,EACtBA,EAEX,MAAM,QAAEh5tB,GAAYg3tB,EACd1ga,E9BhBd,SAA2Bgja,EAAgBt5tB,GACvC,IAAI01C,EACJ,IAAK,IAAIsjrB,KAAiBM,EAGtB,GAFA5jrB,EAAS11C,EACJiL,KAAK,EAAG2rtB,eAAgBA,EAAUh8tB,KAAOg8tB,EAAUh8tB,MAAQo+tB,EAAcp+tB,KAC1E86C,EACA,MAGR,OAAOA,CACX,C8BM+ButrB,CAAkB3J,EAAgBt5tB,GAGzD,OAFAoQ,KAAKmztB,sBAAwBjta,EAAesga,UAC5CxmtB,KAAKkmT,eAAiBA,EACf,CACHnoT,GAAImoT,aAAuD,EAASA,EAAevgU,MAAMqqU,KAAKrqU,MAAMkV,KAAK,EAAGtH,UAAoB,OAATA,GAAe5N,MAE9I,CACA,qBAAAytuB,CAAsB7M,GAOlB,MAAO,CAAEhztB,KAAM,gBAAiByc,KAAM,SAAUpgB,QANhC22tB,EAAY32tB,QAAQmD,IAAI,EAAG8O,QAAO2ktB,gBACvC,CACH3ktB,QACAlc,MAAO6guB,EAAUh8tB,OAI7B,CACA,qBAAAo/tB,GACI5ptB,KAAK4oB,OAASyqB,MAAMu2qB,wBACpB,MAAMV,EAAiBlptB,KAAK4oB,OAAOsgsB,eAC9Bj4tB,OAAO23tB,IACoE,IAArEC,GAAsBD,EAAe5otB,KAAKmztB,wBAErD,OAAOrpuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiW,KAAK4oB,QAAS,CAAEsgsB,kBAC3D,EChEJ,MAAMmK,WAAwCT,GAC1C,WAAAnytB,CAAY8ltB,EAAa39rB,EAAS,CAAC,EAAGh5B,EAAU,CAAC,GAC7C,IAAI4T,EACJ6vC,MAAMkzqB,EAAa39rB,EAAQh5B,GAC3B,MAAM0juB,EAAuC,oBAAtBtztB,KAAKpQ,QAAQ8ztB,MAElB,QADYlgtB,EAAKiltB,GAAgClC,GAC9D32tB,eAA4B,IAAP4T,OAAgB,EAASA,EAAGlR,KAAK,EAAGk0tB,gBAAiBA,aAA6C,EAASA,EAAUh8tB,OAASiwtB,EAAiBoU,kBAC5IyE,GAAkBtztB,KAAK4oB,OAAO63I,YACvDzgK,KAAK4oB,OAAOsgsB,eAAiB,IACtBlptB,KAAK4oB,OAAOsgsB,gBAAkB,GACjC,CAAE1+tB,IAAKiwtB,EAAiBoU,gBAGpC,EAEJwE,GAAgChH,gBAAkB,oCCjBlD,MAAMkH,WAAkCX,IAExCW,GAA0BlH,gBAAkB,8BCF5C,MAAMmH,WAAyCZ,GAC3C,WAAAnytB,GACI4yC,SAASl/C,WACT6L,KAAKjN,IAAM,CACP2wR,WAAY,CAAC,YAErB,CACA,YAAA0lc,GAEI,QADmBpptB,KAAKksO,QAAQ,eACT74L,MAAM+1qB,cACjC,CACA,gBAAA8J,CAAiBtM,GACb,IAAIpjtB,EAAIG,EAAIsB,EACZ,MAAMwutB,EAAmBpgrB,MAAM6/qB,iBAAiBtM,GAC1C8M,EAAkD,QAA9BlwtB,EAAKxD,KAAKkmT,sBAAmC,IAAP1iT,OAAgB,EAASA,EAAG7d,MAAMqqU,KAAKrqU,MAAMkV,KAAK,EAAGtH,UAAoB,eAATA,GAC1HoguB,EAAkB3ztB,KAAK4oB,OAAOgrsB,aAC/BF,aAA2D,EAASA,EAAiB/tuB,SAAqK,QAAzJsf,EAA6G,QAAvGtB,EAAK+vtB,aAA2D,EAASA,EAAiB9juB,eAA4B,IAAP+T,OAAgB,EAASA,EAAG,UAAuB,IAAPsB,OAAgB,EAASA,EAAGtf,OACnS,OAAIguuB,EACO7puB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG0puB,GAAmB,CAAEG,WAAYD,IAErEF,CACX,CACA,gBAAAI,GACI,MAAO,CAAEtguB,KAAM,WAAYyc,KAAM,SACrC,EAEJwjtB,GAAiCnH,gBAAkB,sCC1BnD,MAAMyH,WAA4B9K,GAC9B,YAAAI,GACI,OAAO,CACX,EAEJ0K,GAAoBzH,gBAAkB,wBCHtC,MAAM0H,WAA0B/K,GAC5B,WAAAvotB,CAAY8ltB,EAAa39rB,EAAS,CAAC,GAC/ByqB,MAAMkzqB,EAAa39rB,GACnB5oB,KAAK4otB,cAAgB5otB,KAAKuptB,mBAC1BvptB,KAAKg0tB,yBACT,CACA,uBAAAA,GAEI,GAD0Bh0tB,KAAKi0tB,uBAE3Bj0tB,KAAK4oB,OAAOugsB,mBAAqBnptB,KAAK4oB,OAAOugsB,mBAAmBp2tB,IAAIgD,GAC5D8ytB,GAAsB7otB,KAAK4otB,cAAe7ytB,GACnCiK,KAAKk0tB,+BAA+Bn+tB,GAExCA,OAGV,CACD,MAAMA,EAAOiK,KAAKk0tB,iCACdn+tB,GACAiK,KAAK4oB,OAAOugsB,mBAAmBr1tB,KAAKiC,EAE5C,CACJ,CACA,oBAAAk+tB,GACI,OAAOj0tB,KAAK4oB,OAAOugsB,mBACdtutB,KAAM9E,GAAS8ytB,GAAsB7otB,KAAK4otB,cAAe7ytB,GAClE,CACA,YAAAqztB,GACI,OAAOpptB,KAAK4oB,OAAOugsB,mBACd72tB,KAAKyD,GAAQ8ytB,GAAsB7otB,KAAK4otB,cAAe7ytB,GAChE,CACA,8BAAAm+tB,CAA+B7D,GAC3B,IAAI,WAAEuD,EAAU,cAAEhL,GAAkB5otB,KAAK4oB,QACpCgrsB,GAAcjZ,EAAgBiO,KAC/BgL,EAAahL,aAAqD,EAASA,EAAcgL,YAE7F,MAAM,GAAE71tB,EAAE,aAAE+rtB,GAAiB9ptB,KAAK4otB,cAC5B7ytB,EAAOjM,OAAOC,OAAOD,OAAOC,OAAO,CAAEgU,KACvC+rtB,gBAAiBuG,GAAqBA,GAAsBuD,GAAc,CAAEA,eAChF,OAAO79tB,EAAK69tB,WAAa79tB,EAAO,IACpC,CACA,+BAAA0ytB,GAGI,OAFsBzotB,KAAKumtB,YAAY5guB,MAClCkV,KAAK,EAAGtH,UAAoB,kBAATA,EAE5B,CACA,qBAAAq2tB,GACI5ptB,KAAK4oB,OAASyqB,MAAMu2qB,wBACpB,MAAMT,EAAqBnptB,KAAK4oB,OAAOugsB,mBAClCl4tB,OAAO8E,IAA4D,IAApD8ytB,GAAsB7otB,KAAK4otB,cAAe7ytB,IAC9D,OAAOjM,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiW,KAAK4oB,QAAS,CAAEugsB,sBAC3D,ECrDJ,MAAMgL,WAAsCJ,GACxC,gBAAAb,GACI,OAAOlztB,KAAKi0tB,sBAChB,CACA,qBAAAb,GACI,MAAMxK,EAAgB5otB,KAAKyotB,kCACrBmL,EAAahL,EAAc54Z,KAAKrqU,MAAMkV,KAAK,EAAGtH,UAAoB,eAATA,GAC/D,OAAIqguB,GAAcA,EAAWhkuB,QAClB,CACH2D,KAAM,aACNyc,KAAM,SACN2tN,UAAU,EACV/tO,QAASgkuB,EAAWhkuB,SAGb,IAAIg5tB,EAAc54Z,KAAKrqU,MAE1C,CACA,qBAAAikuB,GAGI,OAFA5ptB,KAAK4oB,OAASyqB,MAAMu2qB,wBACA9/tB,OAAOO,KAAK2V,KAAK4oB,QAAQ33B,OAAO6/tB,GAAyB,kBAAbA,GAC3CxmuB,OAAO,CAACs+B,EAAQkosB,IAAchnuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6+B,GAAS,CAAE,CAACkosB,GAAW9wtB,KAAK4oB,OAAOkosB,KAAe,CAAC,EAC1I,EAEJqD,GAA8B9H,gBAAkB,kCCvBhD,MAAM+H,WAAoCL,GACtC,gBAAAb,GACI,MAAM7C,EAAoBrwtB,KAAKi0tB,uBAE/B,MAAO,CACHl2tB,GAFiC0qtB,GAAgCzotB,KAAKumtB,aAErCv2Z,KAAKrqU,MACjCkV,KAAK,EAAGtH,UAAoB,OAATA,GAAe5N,MACvCiuuB,WAAYvD,EAAkBuD,WAC9BpC,YAAanB,EAAkBmB,YAEvC,CACA,qBAAA4B,CAAsB7M,GAClB,MAAO,CACH,CAAEhztB,KAAM,aAAcyc,KAAM,UAC5B,CAAEzc,KAAM,cAAesO,MAAO,eAAgBmO,KAAM,WACtDjd,IAAIigB,IACF,MAAMrtB,EAAQ4guB,EAAYv2Z,KAAKrqU,MAAMkV,KAAK8sB,GAAOA,EAAIp0B,OAASyf,EAAKzf,MACnE,OAAOzJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGpE,GAAQqtB,IAEvD,CACA,8BAAAkhtB,CAA+Bn+tB,GAC3BA,EAAOs9C,MAAM6grB,+BAA+Bn+tB,GAC5C,MAAM,YAAEy7tB,GAAgBxxtB,KAAK4oB,OAC7B,GAAK7yB,GAASy7tB,EAGd,OAAO1nuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAIgM,GAAQA,GAASy7tB,GAAe,CAAEA,eAC9E,EAEJ4C,GAA4B/H,gBAAkB,gCC9B9C,MAAMgI,WAAarL,GACf,YAAAI,GACI,QAASpptB,KAAK4oB,OAAO4P,MAA8B,SAAtBx4B,KAAKpQ,QAAQ0R,IAC9C,EAEJ+ytB,GAAKhI,gBAAkB,OCgBvB,MAAMiI,GAAqB,CACvB,SAAYhC,GACZ,oCAAqCe,GACrC,8BAA+BE,GAC/B,gCAAiCa,GACjC,kCAAmCD,GACnC,uBAAwBpD,GACxB,0BAA2BU,GAC3B,iBAAkBC,GAClB,yBAA0Ba,GAC1B,iCAAkCE,GAClC,cAAezB,GACf,4BAA6BG,GAC7B,0BAA2BE,GAC3B,eAAgBqB,GAChB,KAAQ2B,ICfNE,GAAuB,CACzB,SAAYjC,GACZ,oBAAqBA,GACrB,oCAAqCe,GACrC,8BAA+BE,GAC/B,0BAA2B9B,GAC3B,kCAAmC0C,GACnC,gCAAiCC,GACjC,sBAAuBzC,GACvB,yBAA0BY,GAC1B,iCAAkCE,GAClC,cAAezB,ICXbwD,GAAmB,CACrB,wBAAyBV,GACzB,iBAAkBlC,GAClB,gCAAiCwC,GACjC,8BAA+Bb,GAC/B,cAAevC,GACf,4BAA6BG,GAC7B,0BAA2BE,GAC3B,uBAAwBN,GACxB,KAAQsD,ICTNI,GAAoB,CACtB,SAAYnC,GACZ,sCAAuCkB,GACvC,oCAAqCH,GACrC,0BAA2B5B,GAC3B,iBAAkBC,GAClB,kCAAmCyC,GACnC,iCAAkC1B,ICzBtC,SAAS,GAAqB7F,EAAUlJ,EAAO,WAC3C,IAAI0G,EAAan5B,EAAShpa,GAAkB,EAC5C,OAAQy7b,GACJ,IAAK,WACL,IAAK,SACL,IAAK,gBACD0G,EAAcoK,GACdvsc,GAAkB,EAClB,MACJ,IAAK,kBACL,IAAK,gBACDmic,EAAcmK,GACdtjC,EAAU,CACN,+BACA,0CAEJhpa,GAAkB,EAClB,MACJ,IAAK,gBACDmic,EAAcqK,GACdxsc,GAAkB,EAClBgpa,EAAU,CACN,kBAEJ,MAMJ,QACIm5B,EAAckK,GAGtB,MAAO,CAAE5Q,OAAM0G,cAAan5B,UAAShpa,kBACzC,CCfApiM,eAAeljD,GAAO4grB,EAAY3ztB,GAC9B,MACM+8tB,EAAW,GAAqBpJ,EADzBA,EAAWt4nB,mBAAmB+9H,OACY06f,MACvD,OAAO/9lB,GAAI49lB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU+8tB,GAAW,CAAE17B,QAAS,CAAC,YAC1G,CC7BA,SAASyjC,GAAkBC,GACvB,IAAIC,EAAa,MACbC,EAAa,qBACb/loB,EAAW6loB,GAAgB,GACJ,MAAvB7loB,EAASp8E,OAAO,IAAqC,MAAvBo8E,EAASp8E,OAAO,KAC9Co8E,EAAWA,EAAS3F,UAAU,IAEP,MAAvB2F,EAASp8E,OAAO,IAAqC,MAAvBo8E,EAASp8E,OAAO,KAC9Co8E,EAAWA,EAAS3F,UAAU,IAIlC,IAFA,IACI6sI,EADA1jN,EAAM,CAAC,EAGP0jN,EAAQ6+f,EAAWxvsB,KAAKypE,IADf,CAKT,IAAItkG,EAAMwrO,EAAM,GACZrwO,EAAQqwO,EAAM,GAEd1jN,EAAI9nB,GADI,aAARA,GAA8B,iBAARA,GAAkC,SAARA,EACrC7E,EAGA+/F,mBAAmB//F,EAAM5B,QAAQ6wuB,EAAY,KAEhE,CACA,OAAOtitB,CACX,CCxBA,MAAMwitB,WAAiCxZ,EACnC,WAAA76sB,CAAY9Q,EAAOw/tB,GACf97qB,MAAM,iDAAiD87qB,KACvDnvtB,KAAKzM,KAAO,2BACZyM,KAAKrQ,MAAQA,EACbqQ,KAAKmvtB,IAAMA,CACf,EAEJ,SAAS4F,GAA2B9qtB,GAChC,MAAuB,6BAAfA,EAAM1W,IAClB,CACA,SAASyhuB,GAAsBC,GAC3B,MAAO,UAAU/yuB,KAAK+yuB,IAAY,YAAY/yuB,KAAK+yuB,EACvD,CACA,SAASC,GAAyBD,GAC9B,OAAOP,GAAkBO,EAC7B,CACApvoB,eAAesvoB,GAA0B5R,EAAYj2gB,GACjD,GAAI0nhB,GAAsB1nhB,GAAS,CAC/B,MAAM,MAAE39M,EAAK,IAAEw/tB,GAAQ+F,GAAyB5nhB,GAChD,GAAIi2gB,EAAWnxsB,IAAIgjtB,WAAW,CAAEzluB,UAC5B,aAAa4ztB,EAAWnxsB,IAAIk1sB,QAAQ,CAAE33tB,QAAOw/tB,QAG7C,MAAM,IAAI2F,GAAyBnluB,EAAOw/tB,EAElD,CACJ,CCzBA,SAAS,GAAW5L,EAAY3ztB,EAAU,CAAC,GAEvC,SADa,GAAwB2ztB,EAAY3ztB,KAC/BA,EAAQ04tB,YAC9B,CACAzioB,eAAe,GAAQ09nB,EAAY3ztB,EAAU,CAAC,GAC1C,IAAK,GAAW2ztB,EAAY3ztB,GACxB,MAAM,IAAI2stB,EAAa,4DAE3B,IAAI,KAAEmH,EAAI,MAAE/ztB,GAAUC,EACtB,IAAK8ztB,EAAM,CACP,MAAM3rrB,EAAO,GAAwBwrrB,EAAY,CAAE5ztB,UACnD+ztB,EAAO3rrB,aAAmC,EAASA,EAAK2rrB,IAC5D,CACA,OAAO/9lB,GAAI49lB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE8ztB,SACvE,CCfA79nB,eAAe0ujB,GAAKgvE,EAAY3ztB,EAAU,CAAC,GACvC,IAAI4T,EACJ,MAAM,gBAAEykR,EAAe,sBAAEklc,GAA0Bv9tB,EACnD,IAAIyluB,QAAoB,GAAQ9R,EAAY,CACxC0N,cAAc,EACdhpc,kBACAklc,0BAEJ,MAAMp1rB,EAAO,GAAwBwrrB,GACrC,IAAI+R,EAAwG,QAAxE9xtB,EAAKu0B,aAAmC,EAASA,EAAK2urB,oBAAiC,IAAPljtB,OAAgB,EAASA,EAAG3I,KAAK0rtB,GAAeA,EAAY5wrB,SAAS,SAIzL,OAHM2/rB,aAAmF,EAASA,EAA6BlhuB,SAC3HyY,EAAK,mEAELsD,OAAO+0F,UAAUt1G,EAAQ2/Q,SAClB,IAAI54Q,QAAQ,SAAUC,EAASwK,GAClCqG,WAAWo+E,iBACP,IAAIriF,EAAIG,EACR,IACI,MAAM4rQ,EAA8F,QAAnF5rQ,EAAqC,QAA/BH,EAAK6xtB,EAAYx/lB,gBAA6B,IAAPryH,OAAgB,EAASA,EAAG+woB,YAAyB,IAAP5woB,OAAgB,EAASA,EAAG4rQ,QAEpI34Q,EADA24Q,EACQglY,GAAKgvE,EAAY,CACrBh0c,YAII8ld,EAEhB,CACA,MAAO3snB,GACHtnG,EAAOsnG,EACX,CACJ,EAAG94G,EAAQ2/Q,QACf,GAEG8ld,CACX,CCrCAxvoB,eAAe,GAAiB09nB,EAAY3ztB,EAAU,CAAC,GAEnD,OADA2ztB,EAAWt4nB,mBAAmBlwB,QACvB4qD,GAAI49lB,EAAYz5tB,OAAOC,OAAO,CAAEojuB,uBAAuB,GAASv9tB,GAC3E,CCEAi2F,eAAe/vB,GAASytpB,EAAY3ztB,EAAU,CAAC,GAC3C,IAAKk0tB,GAA0BP,GAAa,CACxC,MAAM,gBAAE6J,SAA0B,GAAiB7J,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE8ztB,KAAM,WAAYsJ,eAAe,KAC5I,IAAKp9tB,EAAQ+ztB,iBAAmByJ,IAAoBA,EAAgBz3rB,SAAS+krB,EAAWgT,cACpF,MAAM,IAAInR,EAAa,yEAE/B,CACA,OAAO52lB,GAAI49lB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE8ztB,KAAM,aAC7E,CCUA79nB,eAAe0voB,GAAgBhS,EAAY3ztB,EAAU,CAAC,GAClD,MAAM+8tB,EAAW,GAAqBpJ,EAAY,mBAClD,OAAO59lB,GAAI49lB,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU+8tB,GACrE,CCxBA9moB,eAAe2voB,GAA8BjS,EAAY91nB,GACrD,MAAM11D,EAAOwrrB,EAAWt4nB,mBAAmB+9H,OAC3C,IAAKjxL,EACD,MAAM,IAAIwkrB,EAAa,4CAE3B,MAAM,aAAEuB,EAAcnutB,MAAO8luB,GAAe19rB,GACtC,aAAEkjrB,GACH,IAAI5xnB,IAAIoE,GACP99F,EAAQsrtB,EAAapntB,IAAI,SACzB+ztB,EAAkB3M,EAAapntB,IAAI,oBACnCoW,EAAQgxsB,EAAapntB,IAAI,SAC/B,GAAIoW,EACA,MAAM,IAAIq1sB,GAAWr1sB,EAAOgxsB,EAAapntB,IAAI,sBAEjD,GAAIlE,IAAU8luB,EACV,MAAM,IAAIlZ,EAAa,+DAE3B,IAAKqL,EACD,MAAM,IAAIrL,EAAa,iDAE3B,MAAM,OAAE9qnB,SAAiB8xnB,EAAWt/sB,MAAMkptB,sBAAsB,CAAEvF,kBAAiB9J,iBACnFyF,EAAWmS,aAAaC,UAAUlkoB,EACtC,CCnBA5L,eAAe+voB,GAAcrS,EAAY3ztB,EAAU,CAAC,GAEhD,GADAA,EAAQ8ztB,KAAO,iBACVI,GAA0BP,GAAa,CACxC,MAAM,gBAAE6J,SAA0B,GAAiB7J,EAAYz5tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAEo9tB,eAAe,KAC1H,GAAII,IAAoBA,EAAgBz3rB,SAAS+krB,EAAWkT,gBACxD,MAAM,IAAIrR,EAAa,wFAE/B,CACA,OAAO52lB,GAAI49lB,EAAYz5tB,OAAOC,OAAO,CAAC,EAAG6F,GAC7C,CCdA,SAASimuB,GAA2B5rtB,GAChC,MAAmB,eAAfA,EAAM1W,MAIuB,yBADd0W,EACAwxsB,SACvB,CCWA,SAASqa,GAAWlmuB,GAChB,OAAOA,EAAQiutB,MAAiC,SAAzBjutB,EAAQu5R,cAAoD,UAAzBv5R,EAAQ6ttB,YACtE,CAWA,SAASsY,GAAgBnmuB,GAGrB,OAFekmuB,GAAWlmuB,IAC0B,aAAzBA,EAAQ6ttB,aACjBt2tB,OAAO8hG,SAASqkH,OAASnmN,OAAO8hG,SAAS38F,IAC/D,CACA,SAAS,GAAgBuwtB,GACrB,IA1BJ,SAAuB78iB,EAAK68iB,GACxB,IAAImZ,EAAanZ,EAAIjttB,QACrB,SAAKowK,IAAQg2jB,EAAWxY,cAGuB,IAAxCx9iB,EAAIz3K,QAAQytuB,EAAWxY,YAClC,CAoBSyY,CAAc9uuB,OAAO8hG,SAASgF,KAAM4unB,GACrC,OAAO,EAEX,IAzCqBvwtB,EAyCjB4puB,EAAWJ,GAAWjZ,EAAIjttB,SAC1B+kuB,EAAeoB,GAAgBlZ,EAAIjttB,SACvC,GAlCJ,SAAuB+kuB,GACnB,MAAO,YAAYzyuB,KAAKyyuB,IAAiB,uBAAuBzyuB,KAAKyyuB,EACzE,CAgCQwB,CAAcxB,GACd,OAAO,EAEX,GAAIuB,EAAU,CACV,IAAIE,EA5CZ,SAA8BzB,GAC1B,MAAO,WAAWzyuB,KAAKyyuB,EAC3B,CA0CsB0B,CAAqB1B,IAzC3C,SAA4BA,GACxB,MAAO,uBAAuBzyuB,KAAKyyuB,EACvC,CAuC4D2B,CAAmB3B,GACvE,OAAOyB,CACX,CACA,OAlDqB9puB,EAkDEnF,OAAO8hG,SAAS38F,KAjDhC,wBAAwBpK,KAAKoK,EAkDxC,CACA,SAASiquB,GAAsB1Z,EAAK8X,GAChC,IAAKA,EAAc,CACf,IAAK,GAAgB9X,GACjB,OAAO,EAEX8X,EAAeoB,GAAgBlZ,EAAIjttB,QACvC,CACA,MAAO,gCAAgC1N,KAAKyyuB,EAChD,C,gBC1DA,MAAM6B,GACF,WAAA/1tB,GACIT,KAAKy2tB,aAAe,CAAC,uBACrBz2tB,KAAK02tB,yBACT,CACA,cAAAC,CAAehtiB,GACX3pL,KAAKy2tB,aAAa3iuB,KAAK61L,EAC3B,CACA,aAAA63hB,GACI,MAAO,CAAE,6BAA8BxhtB,KAAKy2tB,aAAav4tB,KAAK,KAClE,CACA,UAAAkxgB,GACI,MAAO,QACX,CACA,uBAAAsnN,GACI,GAAIz1U,OAAgBxmR,KAAYA,GAAQC,SACpC,OAEJ,MAAQ3zI,KAAM89E,GAAY41D,GAAQC,SAClC16H,KAAKy2tB,aAAa3iuB,KAAK,UAAU+wE,IACrC,ECtBJ,SAASomN,GAAiBs4b,EAAYqT,EAAYC,GAC9CtT,EAAW3ztB,QAAQo3F,QAAUu8nB,EAAW3ztB,QAAQo3F,SAAW,CAAC,EAC5Du8nB,EAAW3ztB,QAAQo3F,QAAQ4voB,GAAcC,CAC7C,CCCA,SAASC,GAAkBrktB,GAEvB,OAAOsktB,GADGl9tB,GAAE4Y,GAEhB,CACA,SAASsktB,GAAkBC,GACvB,OAAOA,EAAIjzuB,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAAKA,QAAQ,MAAO,GACtE,CACA,SAASkzuB,GAAkBC,GACvB,OAAOA,EAAKnzuB,QAAQ,KAAM,KAAKA,QAAQ,KAAM,IACjD,CACA,SAASozuB,GAAkBD,GACvB,IAAIF,EAAMC,GAAkBC,GAC5B,OAAQF,EAAI5iuB,OAAS,GACjB,KAAK,EACD,MACJ,KAAK,EACD4iuB,GAAO,KACP,MACJ,KAAK,EACDA,GAAO,IACP,MACJ,QACI,MAAM,IAAIza,EAAa,yBAE/B,IAAI6a,EAAOx9tB,GAAEo9tB,GACb,IACI,OAAOtxoB,mBAAmB+6H,OAAO22gB,GACrC,CACA,MAAOpyuB,GACH,OAAOoyuB,CACX,CACJ,CACA,SAASC,GAAe5ktB,GAEpB,IADA,IAAI9tB,EAAS,IAAI0gG,WAAW5yE,EAAIre,QACvB/O,EAAI,EAAGA,EAAIotB,EAAIre,OAAQ/O,IAC5BV,EAAOU,GAAKotB,EAAImzE,WAAWvgG,GAE/B,OAAOV,CACX,CACA,SAAS2yuB,GAAgB7ktB,GACrB,OAAO7Y,GAAEq9tB,GAAkBxktB,GAC/B,CACA,SAAS8ktB,GAAkBL,GACvB,OAAO7xoB,WAAWxgE,KAAKyysB,GAAgBJ,GAAQtxuB,GAAMA,EAAEggG,WAAW,GACtE,CACA,SAAS4xoB,GAAkB9/hB,GACvB,OAAO79L,GAAE,IAAIwrF,WAAWqyG,GAAKptM,OAAO,CAACrH,EAAGw0uB,IAASx0uB,EAAIsd,OAAOysF,aAAayqoB,GAAO,IACpF,CChDA,SAASC,GAAYjltB,GACjB,IAAI9tB,GAAS,IAAIuoG,aAAcnE,OAAOt2E,GACtC,OAAO7sB,GAAE0kG,OAAO2C,OAAO,UAAWtoG,GAAQkS,KAAK,SAAUm8kB,GACrD,IACI2kJ,EADY,IAAItyoB,WAAW2tf,GACLl4kB,MAAM,EAAG,IAGnC,OADWg8tB,GADAv2tB,OAAOysF,aAAalsF,MAAM,KAAM62tB,GAG/C,EACJ,CCRA,SAASC,GAAYzU,EAAS34tB,GAC1BA,EAAMy6B,EAAMz6B,GACZ,IACIqtuB,EAAO,CACPtkuB,KAAM,oBACNjH,KAAM,CAAEiH,KAAM,YAKlB,cADO/I,EAAIstuB,IACJlyuB,GAAE0kG,OAAOytoB,UARH,MAQqBvtuB,EAAKqtuB,GAHrB,EACL,CAAC,WAGThhuB,KAAK,SAAUmhuB,GAChB,IAAIC,EAAM9U,EAAQjiuB,MAAM,KACpBgpB,EAAUmttB,GAAeY,EAAI,GAAK,IAAMA,EAAI,IAE5CnsoB,EAAYuroB,GADGC,GAAgBW,EAAI,KAEvC,OAAOryuB,GAAE0kG,OAAO4toB,OAAOL,EAAMG,EAAWlsoB,EAAW5hF,EACvD,EACJ,CCnBA,MAAMiutB,GACF,WAAA13tB,CAAY7Q,EAAU,CAAEwouB,OAAO,IAC3Bp4tB,KAAK48G,MAAQ,GACb58G,KAAK8hC,SAAU,EACf9hC,KAAKpQ,QAAUA,CACnB,CACA,IAAAkE,CAAKywC,EAAQ8zrB,KAAehkuB,GACxB,OAAO,IAAIsC,QAAQ,CAACC,EAASwK,KACrBpB,KAAK48G,MAAMxoH,OAAS,IACO,IAAvB4L,KAAKpQ,QAAQwouB,OACbvrtB,EAAK,iJAIb7M,KAAK48G,MAAM9oH,KAAK,CACZywC,SACA8zrB,aACAhkuB,OACAuC,UACAwK,WAEJpB,KAAK2lH,OAEb,CACA,GAAAA,GACI,IAAI3lH,KAAK8hC,SAGiB,IAAtB9hC,KAAK48G,MAAMxoH,OAAf,CAGA4L,KAAK8hC,SAAU,EACf,I3FvBWxvB,E2FuBPgmtB,EAAYt4tB,KAAK48G,MAAM10E,QACvB9D,EAAMk0rB,EAAU/zrB,OAAOzjC,MAAMw3tB,EAAUD,WAAYC,EAAUjkuB,O3FxBtDie,E2FyBG8xB,I3FxBJ9xB,EAAIs0E,SAAmC,mBAAhBt0E,EAAIs0E,Q2FyBjCxiD,EAAIvtC,KAAKyhuB,EAAU1huB,QAAS0huB,EAAUl3tB,QAAQwlF,QAAQ,KAClD5mF,KAAK8hC,SAAU,EACf9hC,KAAK2lH,SAIT2ymB,EAAU1huB,QAAQwtC,GAClBpkC,KAAK8hC,SAAU,EACf9hC,KAAK2lH,MAbT,CAeJ,EC5CJ,SAAS4ymB,GAAQ94lB,GACb,OAAQ,IAAMA,EAAIz4I,SAAS,KAAKmrH,QAAQ,EAC5C,CAsBA,IAAIqmnB,GAAO,CACPrZ,8BAA6B,GAC7BsZ,iBAjBJ,SAA0BvjsB,GACtB,IAAIgvJ,EAAWhvJ,GAAU,GAIzB,OAHIgvJ,EAAS9vL,OAAS6qtB,IAClB/6hB,GATR,SAAyB9vL,GACrB,IAAIwF,EAAI,IAAIyrF,WAAW7/F,KAAKsjE,KAAK10D,EAAS,IAG1C,OAFAxO,GAAEw/F,gBAAgBxrF,GACRtF,MAAMuwB,KAAKjrB,EAAG2+tB,IAASr6tB,KAAK,IAC3BpD,MAAM,EAAG1G,EACxB,CAI8BskuB,CAAgBzZ,EAAsB/6hB,EAAS9vL,SAElEk0F,mBAAmB47F,GAAUppL,MAAM,EAAGoktB,GACjD,EAYIyZ,iBAXJ,SAA0BlmtB,GACtB,IAAI9tB,GAAS,IAAIuoG,aAAcnE,OAAOt2E,GACtC,OAAO7sB,GAAE0kG,OAAO2C,OAAO,UAAWtoG,GAAQkS,KAAK,SAAUm8kB,GAGrD,OADW8jJ,GADAv2tB,OAAOysF,aAAalsF,MAAM,KAAM,IAAIukF,WAAW2tf,IAG9D,EACJ,GCvBA,SAAS,GAAY/ukB,GACjB,IACI0jF,EADAswoB,EAAMh0tB,EAAM/iB,MAAM,KAEtB,IACIymG,EAAe,CACXkE,OAAQliF,KAAKyuB,MAAM++rB,GAAkBc,EAAI,KACzC/ttB,QAASP,KAAKyuB,MAAM++rB,GAAkBc,EAAI,KAC1CnsoB,UAAWmsoB,EAAI,GAEvB,CACA,MAAOjzuB,GACH,MAAM,IAAIu3tB,EAAa,kBAC3B,CACA,OAAO50nB,CACX,CCdA,SAASixoB,GAAsB/b,GAC3B,MAAM,KAAEgB,EAAI,SAAEt4nB,EAAQ,YAAEi4nB,EAAW,aAAEr0b,EAAY,aAAEs0b,EAAY,OAAErprB,EAAM,UAAEuprB,EAAS,OAAEkG,EAAM,MAAEl0tB,EAAK,gBAAE+ttB,EAAe,KAAEmb,GAAShc,EAAIjttB,QAC3HkpuB,EAAqB73U,KAAc95Z,OAAO8hG,SAASgF,UAAOn3F,EAChE,OAAOiktB,EAAW,CACd8C,OACAt4nB,WACAi4nB,YAAaA,GAAesb,EAC5B3vc,aAAcA,GAAgB,CAAC,QAAS,YACxCs0b,eACA9ttB,MAAOA,GAASgttB,IAChBtwnB,MzFNG0vnB,EAAgB,IyFOnB3nrB,OAAQA,GAAU,CAAC,SAAU,SAC7BuprB,YACAkG,SACAnG,kBACAmb,QAER,CChBA,MACME,GAAS,WACf,SAASC,GAAiB1mtB,GACtB,OAAS21sB,GAAa31sB,IpEK1B,SAAwBA,GACpB,OAAQA,aAAeipsB,CAC3B,CoEPkC0d,CAAe3mtB,KACvB,mBAAlBA,EAAImpsB,SACZ,CAOA,SAASyd,GAAkBC,EAAU,IACjC,MAAO,IAAIvzuB,GAAEw/F,gBAAgB,IAAIC,WAAW8zoB,KAAWpmuB,IAAIoP,GAAKA,EAAEnb,SAAS,KAAKkX,KAAK,GACzF,CA8CA2nF,eAAeuzoB,GAAkB70rB,KAAWlwC,GACxC,MAAMq7L,QA9BC,IAAI/4L,QAAQ,CAACC,EAASwK,KACzB,IACI,MACM6xoB,EADY9rpB,OAAOi5tB,UACHrynB,KAlCX,aAkCgC,GAC3CkljB,EAAIv6Z,QAAU,WACVt3O,EAAO6xoB,EAAIhpoB,MACf,EACAgpoB,EAAIomF,gBAAkB,WACPpmF,EAAI9/oB,OACZmmuB,kBAAkBP,GACzB,EACA9lF,EAAIsmF,UAAY,WACZ,MAAMhiT,EAAK07N,EAAI9/oB,OACTo4f,EAAKh0E,EAAG89S,YAAY0D,GAAQ,aAClCxtO,EAAG7yQ,QAAU,WACTt3O,EAAOmqf,EAAGthf,MACd,EACA,MAAMylL,EAAQ67T,EAAGiuO,YAAYT,IAC7BniuB,EAAQ84L,GACR67T,EAAGkuO,WAAa,WACZliT,EAAG9pa,OACP,CACJ,CACJ,CACA,MAAOi7F,GACHtnG,EAAOsnG,EACX,IAKJ,OAAO,IAAI/xG,QAAQ,CAACC,EAASwK,KACzB,MAAM6xoB,EAAMvjd,EAAMnrJ,MAAWlwC,GAC7B4+oB,EAAIsmF,UAAY,WACZ3iuB,EAAQq8oB,EACZ,EACAA,EAAIv6Z,QAAU,WACVt3O,EAAO6xoB,EAAIhpoB,MACf,GAER,CAKA47E,eAAe6zoB,GAAYC,GACvB,GAAIA,EAAQ,CACR,MAAM1mF,QAAYmmF,GAAkB,MAAOO,GAC3C,GAAI1mF,EAAI9/oB,OACJ,OAAO8/oB,EAAI9/oB,MAEnB,CACA,MAAM,IAAIoptB,EAAa,uDAAsDod,EAAS,KAAKA,KAAY,IAC3G,CACA9zoB,eAAe+zoB,GAAiBD,SACtBP,GAAkB,SAAUO,EACtC,CAUA9zoB,eAAeg0oB,GAA4BC,EAAcrooB,GACrD,IAAIjuF,EACJ,IAAIu2tB,GAAc,EAClB,MAAM,YAAEpZ,EAAW,aAAE0C,GAAiB5xnB,EACjB,WAAjBqooB,GAA6BnZ,GAAyC,SAA1BA,EAAYqZ,YAAyB3W,IACjF0W,GAAc,GAEG,YAAjBD,GAA8BzW,IAAiB1C,IAC/CoZ,GAAc,GAElB,MAAMJ,EAAqG,QAA3Fn2tB,EAAKm9sB,aAAiD,EAASA,EAAYsZ,kBAA+B,IAAPz2tB,EAAgBA,EAAK6/sB,aAAmD,EAASA,EAAa4W,WAC7MF,GAAeJ,SACTC,GAAiBD,EAE/B,CACA9zoB,eAAeq0oB,IAAkB,QAAEC,EAAO,IAAE1soB,EAAG,OAAElpD,EAAM,MAAE8nD,EAAK,YAAEs0nB,IAC5D,MAAM,IAAEyZ,EAAG,IAAEC,EAAG,EAAEr1uB,EAAC,EAAE6b,EAAC,EAAEta,EAAC,EAAE5C,SAAYiC,GAAE0kG,OAAOgwoB,UAAU,MAAOH,EAAQI,WACnE1uoB,EAAS,CACXK,IAAK,QACLsuoB,IAAK,WACLC,IAAK,CAAEL,MAAKC,MAAKr1uB,IAAG6b,IAAGta,IAAG5C,MAExBooG,EAAS,CACX2uoB,IAAKn2rB,EACLo2rB,IAAKltoB,EACLrJ,IAAK5+F,KAAKQ,MAAM6iB,KAAKC,MAAQ,KAC7B8xtB,IAAK1B,MAQT,OANI7soB,IACAN,EAAOM,MAAQA,GAEfs0nB,IACA50nB,EAAO8uoB,UAzGfh1oB,eAA+B86nB,GAC3B,MAAMh8tB,GAAS,IAAIuoG,aAAcnE,OAAO43nB,GAClCr0tB,QAAa1G,GAAE0kG,OAAO2C,OAAO,UAAWtoG,GAC9C,OAAOkV,GAAE0G,OAAOysF,aAAalsF,MAAM,KAAM,IAAIukF,WAAW/4F,KACnDvI,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAAKA,QAAQ,MAAO,GAChE,CAoG2B+2uB,CAAgBna,IA3H3C96nB,eAAyBgG,EAAQE,EAAQgvoB,GACrC,MAAMlnrB,EAAOijrB,GAAkBnttB,KAAKC,UAAUiiF,IACxCn+F,EAAOopuB,GAAkBnttB,KAAKC,UAAUmiF,IAE9C,MAAO,GAAGl4C,KAAQnmD,KAAQqpuB,GAAkBS,SADpB5xuB,GAAE0kG,OAAO32E,KAAK,CAAEpgB,KAAMwnuB,EAAWC,UAAUznuB,MAAQwnuB,EAAY1D,GAAe,GAAGxjrB,KAAQnmD,SAErH,CAwHWutuB,CAAUpvoB,EAAQE,EAAQouoB,EAAQe,WAC7C,CC7FAr1oB,eAAes1oB,GAAiBte,GAAK,IAAEpvnB,EAAG,KAAE13F,EAAI,MAAEs2F,EAAK,YAAE+uoB,IACrD,IAAI53tB,EAAIG,EACR,MAAM4gC,EAAS,OACTyiD,EAAU,CACZ,eAAgB,qCAEpB,GAAI61nB,EAAIjttB,QAAQipuB,KAAM,CAClB,IAAKuC,EACD,MAAM,IAAI7e,EAAa,mDAE3B,MAAM8e,QDoFdx1oB,gBAA2C,QAAEs0oB,EAAO,IAAE1soB,EAAG,OAAElpD,EAAM,MAAE8nD,IAC/D,MAAMlsC,EAAS,CAAEg6qB,UAAS1soB,MAAKlpD,UAI/B,OAHI8nD,IACAlsC,EAAOksC,MAAQA,GAEZ6toB,GAAkB/5qB,EAC7B,CC1F4Bm7qB,CAA4B,CAAE7toB,MAAKlpD,SAAQ8nD,QAAO8toB,QAASiB,IAC/Ep0oB,EAAQu0oB,KAAOF,CACnB,CACA,IAOI,aANmB7a,GAAY3D,EAAK,CAChCpvnB,MACAlpD,SACAlwC,KAAM0B,EACNixF,WAGR,CACA,MAAO0hB,GACH,GAAIswnB,GAAiBtwnB,KAASrc,EAAO,CACjC,MAAMmvoB,EAAgC,QAAnBh4tB,EAAKklG,EAAIkhL,YAAyB,IAAPpmR,OAAgB,EAASA,EAAGwjF,QAAQ,cAClF,IAAKw0oB,EACD,MAAM,IAAInc,GAAa,CAAE1D,aAAc,8CAAoE,QAAnBh4sB,EAAK+kG,EAAIkhL,YAAyB,IAAPjmR,EAAgBA,OAAK7M,GAG5I,OAAOqkuB,GAAiBte,EAAK,CAAEpvnB,MAAK13F,OAAMqluB,cAAa/uoB,MAAOmvoB,GAClE,CACA,MAAM9ynB,CACV,CACJ,CCrEA,SAAS+ynB,GAAa5e,EAAKxxnB,GAEvB,OAAOx3F,GAAIgptB,GADUxxnB,GAAUwxnB,EAAIjttB,QAAQy7F,QACX,oCAAqC,CACjE81nB,eAAe,GAEvB,CCJAt7nB,eAAe,GAAYg3nB,EAAK54sB,EAAOy3tB,GACnC,IAAKz3tB,IAAUA,EAAMk/sB,QACjB,MAAM,IAAI5G,EAAa,iCAE3B,MAAM0b,EAAM,GAAYh0tB,EAAMk/sB,SACxBwY,GAAoBD,aAA2D,EAASA,EAAiBrwoB,SAAWwxnB,EAAIjttB,QAAQy7F,QAChI,OAAEA,SAAiBowoB,GAAa5e,EAAK8e,GACrCC,EAAoB9xuB,OAAOC,OAAO,CACpCw7F,SAAUs3nB,EAAIjttB,QAAQ21F,SACtBm4nB,gBAAiBb,EAAIjttB,QAAQ8ttB,iBAC9Bge,EAAkB,CACjBrwoB,WAGJ,GCrBJ,SAAwBwxnB,EAAK9wnB,EAAQ2voB,GACjC,MAAMvvoB,EAAMuvoB,EAAiBn2oB,SACvB0G,EAAMyvoB,EAAiBrwoB,OACvBgB,EAAQqvoB,EAAiBrvoB,MACzBwvoB,EAAMH,EAAiB/d,UAC7B,IAAK5xnB,IAAWE,IAAQE,EACpB,MAAM,IAAIownB,EAAa,oDAE3B,GAAIlwnB,GAASN,EAAOM,QAAUA,EAC1B,MAAM,IAAIkwnB,EAAa,yDAE3B,MAAMzzsB,EAAMtjB,KAAKQ,MAAM6iB,KAAKC,MAAQ,KACpC,GAAIijF,EAAOE,MAAQA,EACf,MAAM,IAAIswnB,EAAa,eAAiBxwnB,EAAOE,IAAxB,qBACEA,EAAM,KAEnC,GAAK33F,MAAMyb,QAAQg8E,EAAOI,MAAQJ,EAAOI,IAAI5jG,QAAQ4jG,GAAO,IACtD73F,MAAMyb,QAAQg8E,EAAOI,MAAQJ,EAAOI,MAAQA,EAC9C,MAAM,IAAIownB,EAAa,iBAAmBxwnB,EAAOI,IAA1B,qBACEA,EAAM,KAEnC,GAAI0voB,GAAO9voB,EAAO8voB,MAAQA,EACtB,MAAM,IAAItf,EAAa,YAAcxwnB,EAAO8voB,IAArB,gCACaA,EAAM,KAE9C,GAAI9voB,EAAO3H,IAAM2H,EAAOpS,IACpB,MAAM,IAAI4ioB,EAAa,wCAE3B,IAAKM,EAAIjttB,QAAQksuB,eAAgB,CAC7B,GAAKhztB,EAAM+zsB,EAAIjttB,QAAQmsuB,aAAgBhwoB,EAAOpS,IAC1C,MAAM,IAAI4ioB,EAAa,0CAE3B,GAAIxwnB,EAAO3H,IAAOt7E,EAAM+zsB,EAAIjttB,QAAQmsuB,aAChC,MAAM,IAAIxf,EAAa,mCAE/B,CACJ,CDhBIyf,CAAenf,EAAKob,EAAI/ttB,QAAS0xtB,GACQ,GAArCA,EAAkBle,kBAA4Bb,EAAIl+gB,SAASmhhB,yBAC3D,OAAO77sB,EAEX,MAAMzZ,QDZV,SAAgBqytB,EAAKxxnB,EAAQ4woB,GACzB,IAAIpb,EAAYhE,EAAIiE,eAAeC,aAAalE,EAAIjttB,QAAQoxtB,SAC5D,OAAOya,GAAa5e,EAAKxxnB,GACpBx0F,KAAK,SAAUqluB,GAChB,IAAIC,EAAUD,EAAoB,SAE9B9a,EADgBP,EAAUQ,aACK8a,GACnC,GAAI/a,GAAkBv4sB,KAAKC,MAAQ,IAAOs4sB,EAAer5nB,UAAW,CAChE,IAAIq0oB,EAAYvhuB,EAAKumtB,EAAe/ynB,SAAShkG,KAAM,CAC/C4xuB,IAAKA,IAET,GAAIG,EACA,OAAOA,CAEf,CAEA,OADAvb,EAAUwb,aAAaF,GAChBtouB,GAAIgptB,EAAKsf,EAAS,CACrBhb,eAAe,IAEdtqtB,KAAK,SAAUutC,GAChB,IAAI55C,EAAMqQ,EAAKupC,EAAI/5C,KAAM,CACrB4xuB,IAAKA,IAET,GAAIzxuB,EACA,OAAOA,EAEX,MAAM,IAAI+xtB,EAAa,eAAiB0f,EAAM,uCAClD,EACJ,EACJ,CCjBsBzwR,CAAOqxQ,EAAK54sB,EAAMonF,OAAQ4soB,EAAIpsoB,OAAOowoB,KAEvD,UADoBrE,GAAc3ztB,EAAMk/sB,QAAS34tB,GAE7C,MAAM,IAAI+xtB,EAAa,oCAE3B,GAAImf,GAAoBA,EAAiB/a,aAAe18sB,EAAM8nF,OAAOuwoB,eAC9C5E,GAAYgE,EAAiB/a,eACnC18sB,EAAM8nF,OAAOuwoB,QACtB,MAAM,IAAI/f,EAAa,kCAG/B,OAAOt4sB,CACX,CEjBA4hF,eAAe02oB,GAAoB1f,EAAKS,EAAal5qB,EAAK8/E,GACtD,IAAI1gH,EAAIG,EAER,IADkC,IAArBk5sB,EAAIjttB,QAAQiutB,OACZz5qB,EAAIoqD,MAAQpqD,EAAIo4rB,kBACzB,OAAO3f,EAAI54sB,MAAMkptB,sBAAsBrjuB,OAAOC,OAAO,CAAC,EAAGuztB,EAAa,CAClEmf,kBAAmBr4rB,EAAIoqD,KACvBo5nB,gBAAiBxjrB,EAAIo4rB,mBACrBt4mB,GAERo5lB,EAAcA,GAAesb,GAAsB/b,GACnD34lB,EAAOA,GAAQ64lB,EAAaF,EAAKS,GACjC,IAIIlprB,EAJA+0P,EAAem0b,EAAYn0b,cAAgB,GAC1C70R,MAAMyb,QAAQo5Q,IAAkC,SAAjBA,IAChCA,EAAe,CAACA,IAIhB/0P,EADAgQ,EAAIzb,MACKyb,EAAIzb,MAAMznC,MAAM,KAGhB+jC,EAAMq4rB,EAAYlprB,QAE/B,MAAMmxD,EAAW+3nB,EAAY/3nB,UAAYs3nB,EAAIjttB,QAAQ21F,SAErD,GAhCJ,SAA0BnhD,EAAKs4rB,GAC3B,GAAIt4rB,EAAW,OAAKA,EAAuB,kBACvC,MAAM,IAAIk7qB,GAAWl7qB,EAAW,MAAGA,EAAuB,mBAE9D,GAAIA,EAAIz0C,QAAU+suB,EAAY/suB,MAC1B,MAAM,IAAI4stB,EAAa,wDAE/B,CAwBIogB,CAAiBv4rB,EAAKk5qB,GAClBA,EAAYub,KAAM,CAClB,MAAM,kBAAE+D,GAAwG,QAAjFj5tB,EAA4B,QAAtBH,EAAKq5sB,EAAIjttB,eAA4B,IAAP4T,OAAgB,EAASA,EAAGq5tB,mBAAgC,IAAPl5tB,EAAgBA,EAAK,CAAEi5tB,mBAAmB,GAClK,IAAKA,GAAwC,SAAnBx4rB,EAAI04rB,WAC1B,MAAM,IAAIvgB,EAAa,yFAE/B,CACA,MAAMwgB,EAAY,CAAC,EACbC,EAAY54rB,EAAI8jD,WAChB8xoB,EAAY51rB,EAAI04rB,WAChBnc,EAAcv8qB,EAAIirD,aAClB8znB,EAAU/+qB,EAAIsjD,SACd27nB,EAAej/qB,EAAI4jD,cACnBl/E,EAAMtjB,KAAKQ,MAAM6iB,KAAKC,MAAQ,KACpC,GAAI63sB,EAAa,CACb,MAAMsc,EAAYpgB,EAAI54sB,MAAMyxI,OAAOirkB,GACnCoc,EAAUpc,YAAc,CACpBA,YAAaA,EACb50nB,OAAQkxoB,EAAU/ytB,QAClB69E,UAAW53E,OAAO6stB,GAAal0tB,EAC/BkxtB,UAAWA,EACX5lsB,OAAQA,EACR4orB,aAAc94lB,EAAK84lB,aACnBC,YAAa/4lB,EAAK+4lB,aAElBK,EAAY2c,aACZ8C,EAAUpc,YAAYsZ,WAAa3c,EAAY2c,YAE/C3c,EAAYM,cACZmf,EAAUpc,YAAY/C,YAAcN,EAAYM,YAExD,CAiBA,GAhBIyF,IACA0Z,EAAU1Z,aAAe,CACrBA,aAAcA,EACdt7nB,UAAW53E,OAAO6stB,GAAal0tB,EAC/BsrB,OAAQA,EACR8orB,SAAUh5lB,EAAKg5lB,SACfF,aAAc94lB,EAAK84lB,aACnB3xnB,OAAQ64B,EAAK74B,QAEbiynB,EAAY2c,aACZ8C,EAAU1Z,aAAa4W,WAAa3c,EAAY2c,YAEhD3c,EAAYM,cACZmf,EAAU1Z,aAAazF,YAAcN,EAAYM,cAGrDuF,EAAS,CACT,MAAM+Z,EAAQrgB,EAAI54sB,MAAMyxI,OAAOytkB,GACzBga,EAAa,CACfha,QAASA,EACTp3nB,OAAQmxoB,EAAMhztB,QACd69E,UAAWm1oB,EAAMhztB,QAAQyvE,IAAMujpB,EAAMhztB,QAAQk6E,IAAMt7E,EACnDsrB,OAAQA,EACR4orB,aAAc94lB,EAAK84lB,aACnB3xnB,OAAQ64B,EAAK74B,OACb9F,SAAUA,GAEV+3nB,EAAYM,cACZuf,EAAWvf,YAAcN,EAAYM,aAEzC,MAAM8d,EAAmB,CACrBn2oB,SAAUA,EACV8F,OAAQ64B,EAAK74B,OACbgB,MAAOixnB,EAAYjxnB,MACnBs0nB,YAAaA,EACbhD,UAAWL,EAAYK,gBAES7mtB,IAAhCwmtB,EAAYI,kBACZge,EAAiBhe,gBAAkBJ,EAAYI,uBAE7C,GAAYb,EAAKsgB,EAAYzB,GACnCqB,EAAU5Z,QAAUga,CACxB,CACA,IAAuC,IAAnCh0c,EAAa5gS,QAAQ,WAAoBw0uB,EAAUpc,YACnD,MAAM,IAAIpE,EAAa,iHAE3B,IAA0C,IAAtCpzb,EAAa5gS,QAAQ,cAAuBw0uB,EAAU5Z,QACtD,MAAM,IAAI5G,EAAa,gHAE3B,MAAO,CACH9qnB,OAAQsroB,EACRptuB,MAAOy0C,EAAIz0C,MACX6+F,KAAMpqD,EAAIoqD,KACV26L,eAER,CCtHAtjM,eAAe,GAAsBg3nB,EAAKS,EAAap5lB,GACnDA,EAAOA,GAAQ64lB,EAAaF,EAAKS,GACjCA,EAAcxztB,OAAOC,OAAO,CAAC,EAAG6uuB,GAAsB/b,GAAM53rB,EAAMq4rB,IAClE,MAAM,kBAAEmf,EAAiB,gBAAE7U,EAAe,aAAE9J,EAAY,SAAEv4nB,EAAQ,YAAEi4nB,EAAW,OAAEpprB,EAAM,gBAAEsprB,EAAe,MAAE/ttB,EAAK,UAAEgutB,EAAS,KAAEkb,EAAI,WAAEoB,EAAU,YAAErc,GAAgBN,EACxJ8f,EAAkB,CACpB73oB,WACAi4nB,cACAif,oBACA7U,kBACA9J,eACA+a,QAEE1vc,EAAe,CAAC,UACY,IAA9B/0P,EAAO7rC,QAAQ,WACf4gS,EAAar1R,KAAK,YAEtB,MAAMupuB,EAAwB,CAC1B93oB,WACAi4nB,cACApprB,SACA+0P,eACAu0b,kBACAC,YACAC,eAEJ,IACI,GAAIib,EACA,GAAIoB,EAAY,CACZ,MAAME,QAAgBT,GAAYO,GAClCmD,EAAgBhC,YAAcjB,EAC9BkD,EAAsBxE,KAAOA,EAC7BwE,EAAsBpD,WAAaA,CACvC,KACK,CACD,MAAM,QAAEE,EAAO,UAAEmD,SNiDjCz3oB,iBACI,MAAMy3oB,EAAYpE,GAAkB,GAC9BiB,QA9EVt0oB,iBACI,MAAMm1oB,EAAY,CACdznuB,KAAM,oBACNjH,KAAM,UACNixuB,cAAe,KACfC,eAAgB,IAAIn4oB,WAAW,CAAC,EAAM,EAAM,KAEhD,OAAOz/F,GAAE0kG,OAAOmzoB,YAAYzC,GAAW,EAAO,CAAC,OAAQ,UAC3D,CAsE0B0C,GAEtB,aAvBJ73oB,eAA4B8zoB,EAAQQ,GAEhC,aADMf,GAAkB,MAAOe,EAASR,GACjCQ,CACX,CAmBUwD,CAAaL,EAAWnD,GACvB,CAAEA,UAASmD,YACtB,CMtDqDM,GACrCR,EAAgBhC,YAAcjB,EAC9BkD,EAAsBxE,KAAOA,EAC7BwE,EAAsBpD,WAAaqD,CACvC,CAEJ,MAAMO,QLyBdh4oB,eAAmCg3nB,EAAKjttB,EAASs0H,IAnEjD,SAAyBt0H,GACrB,IAAKA,EAAQ21F,SACT,MAAM,IAAIg3nB,EAAa,2EAE3B,IAAK3stB,EAAQ4ttB,YACT,MAAM,IAAIjB,EAAa,sEAE3B,IAAK3stB,EAAQ6suB,oBAAsB7suB,EAAQg4tB,gBACvC,MAAM,IAAIrL,EAAa,6EAE3B,IAAK3stB,EAAQkutB,aACT,MAAM,IAAIvB,EAAa,gFAE/B,CAuDIuhB,CAAgBluuB,GAChB,IAAImG,EAvDR,SAAqB8mtB,EAAKjttB,GACtB,IAAIuwD,EAAS46pB,EAAW,CACpB,UAAanrtB,EAAQ21F,SACrB,aAAgB31F,EAAQ4ttB,YACxB,WAAc5ttB,EAAQg4tB,gBAAkB,mBAAqB,qBAC7D,cAAiBh4tB,EAAQkutB,eAEzBlutB,EAAQg4tB,gBACRznqB,EAAyB,iBAAIvwD,EAAQg4tB,gBAEhCh4tB,EAAQ6suB,oBACbt8qB,EAAOquC,KAAO5+F,EAAQ6suB,mBAE1B,MAAM,aAAEpY,GAAiBxH,EAAIjttB,QAI7B,OAHIy0tB,IACAlkqB,EAAsB,cAAIkkqB,GAEvBjI,EAAcj8pB,GAAQrlD,MAAM,EACvC,CAqCeijuB,CAAYlhB,EAAKjttB,GAM5B,OAAOuruB,GAAiBte,EALT,CACXpvnB,IAAKy2B,EAAKg5lB,SACVnntB,OACAqluB,YAAaxruB,aAAyC,EAASA,EAAQwruB,aAG/E,CKlCoC4C,CAAoBnhB,EAAKugB,EAAiBl5mB,GAChE+5mB,QAAsB1B,GAAoB1f,EAAKwgB,EAAuBQ,EAAe35mB,GAG3F,OAFA+5mB,EAAczvoB,KAAOiuoB,EACrBwB,EAActuuB,MAAQA,EACfsuuB,CACX,CACA,QACIphB,EAAI5xnB,mBAAmBlwB,OAC3B,CACJ,CC3DA,MAAMmjqB,GAAkB,KACxB,SAAS33qB,GAAY2hS,EAAa30V,EAAMuB,GAChCozV,EAAYhwV,iBACZgwV,EAAYhwV,iBAAiB3E,EAAMuB,GAGnCozV,EAAYq9F,YAAY,KAAOhyb,EAAMuB,EAE7C,CACA,SAAS8vD,GAAesjS,EAAa30V,EAAMuB,GACnCozV,EAAY/vV,oBACZ+vV,EAAY/vV,oBAAoB5E,EAAMuB,GAGtCozV,EAAYo9F,YAAY,KAAO/xb,EAAMuB,EAE7C,CAOA,SAASqpuB,GAAU92nB,EAAKz3G,GACpB,IAAI0mD,EAAQ1mD,EAAQwuuB,YAAc,iDAGlC,OAAOj3uB,OAAO4mG,KAAKsZ,EAAK/wD,EAFP,sFAGrB,CACA,SAAS+nrB,GAAuBxhB,EAAKl/oB,EAAShuE,GAC1C,IAAI2uuB,EACAzvd,EAgBJ,OAf2B,IAAIl4Q,QAAQ,SAAUC,EAASwK,GACtDk9tB,EAAkB,SAAyBt5uB,GACvC,GAAKA,EAAE+Q,MAAQ/Q,EAAE+Q,KAAKpG,QAAUA,EAGhC,OAAI3K,EAAEgpG,SAAW6unB,EAAI4F,kBACVrhtB,EAAO,IAAIm7sB,EAAa,yDAEnC3ltB,EAAQ5R,EAAE+Q,KACd,EACAwwD,GAAYp/D,OAAQ,UAAWm3uB,GAC/Bzvd,EAAYpnQ,WAAW,WACnBrG,EAAO,IAAIm7sB,EAAa,wBAC5B,EAAG5+oB,GAAWugqB,GAClB,GAEKt3oB,QAAQ,WACTj/E,aAAaknQ,GACbjqN,GAAez9D,OAAQ,UAAWm3uB,EACtC,EACJ,CCZAz4oB,eAAe,GAAmBg3nB,EAAKS,EAAc,CAAC,GAClD,MAAMz0rB,EAAW+vsB,GAAsB/b,GAEvC,IADAS,EAAcxztB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8+B,GAAWy0rB,IACzCub,OAAShc,EAAIl+gB,SAASwhhB,kBAClC,MAAM,IAAI5D,EAAa,6DAE3B,OAAyB,IAArBe,EAAYO,KACLP,EAtBfz3nB,eAA2Bg3nB,EAAKS,GAC5B,IAAI,aAAEQ,EAAY,cAAEE,EAAa,oBAAED,GAAwBT,EAY3D,OAXAU,EAAgBA,GAAiBnB,EAAIjttB,QAAQoutB,cACxCA,IAxBT,SAA2BnB,GACvB,IAAKA,EAAIl+gB,SAASqhhB,kBAAmB,CACjC,IAAIhkb,EAAe,sFAOnB,MANK6gb,EAAIl+gB,SAASshhB,YACdjkb,GAAgB,oGAEf6gb,EAAIl+gB,SAASohhB,mBACd/jb,GAAgB,0GAEd,IAAIugb,EAAavgb,EAC3B,CACJ,CAcQuic,CAAkB1hB,GAClBiB,EAAeA,GAAgB0a,GAAKC,mBACpCza,QAAsBwa,GAAKG,iBAAiB7a,IAEhDC,QAjBJl4nB,eAA2Cg3nB,EAAKkB,GAI5C,GAHAA,EAAsBA,GAAuBlB,EAAIjttB,QAAQmutB,qBAAuBoB,IAGlC,YAFdsc,GAAa5e,IACqB,kCAAK,IAC3Dt0tB,QAAQw1tB,GAChB,MAAM,IAAIxB,EAAa,iCAE3B,OAAOwB,CACX,CASgCygB,CAA4B3hB,EAAKkB,GAC/Cj0tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuztB,GAAc,CAAEn0b,aAAc,OACxE20b,eACAE,gBACAD,uBAER,CAUW0gB,CAAY5hB,EAAKS,EAC5B,CCNA,SAASohB,GAAqBphB,GAC1B,IAAIqhB,EA1CR,SAAyCrhB,GACrC,IAAKA,EAAY/3nB,SACb,MAAM,IAAIg3nB,EAAa,2EAE3B,GAAIh5mB,EAAS+5mB,EAAYn0b,gBAA4D,IAA3Cm0b,EAAYn0b,aAAa5gS,QAAQ,KACvE,MAAM,IAAIg0tB,EAAa,4DAE3B,IAAImgB,EAAc,CACd,UAAapf,EAAY/3nB,SACzB,eAAkB+3nB,EAAYU,cAC9B,sBAAyBV,EAAYS,oBACrC,QAAWT,EAAY9gqB,QACvB,IAAO8gqB,EAAYqV,IACnB,UAAarV,EAAYshB,SACzB,WAActhB,EAAYuhB,UAC1B,QAAWvhB,EAAYuG,OACvB,MAASvG,EAAYjxnB,MACrB,OAAUixnB,EAAYttnB,OACtB,aAAgBstnB,EAAYE,YAC5B,cAAiBF,EAAYG,aAC7B,cAAiBH,EAAYn0b,aAC7B,aAAgBm0b,EAAYwhB,aAC5B,MAASxhB,EAAY3ttB,MACrB,WAAc2ttB,EAAYK,UAC1B,kBAAqBL,EAAYyhB,iBAQrC,GANArC,EAAc3hB,EAAW2hB,GACzB,CAAC,YAAa,gBAAiB,qBAAqB1quB,QAAQ,SAAUgtuB,GAC9D1quB,MAAMyb,QAAQ2stB,EAAYsC,MAC1BtC,EAAYsC,GAActC,EAAYsC,GAAY9guB,KAAK,KAE/D,IACsD,IAAlDo/sB,EAAYn0b,aAAa5gS,QAAQ,cACS,IAA1C+0tB,EAAYlprB,OAAO7rC,QAAQ,UAC3B,MAAM,IAAIg0tB,EAAa,qFAK3B,OAHSe,EAAYlprB,SACjBsosB,EAAY/zsB,MAAQ20rB,EAAYlprB,OAAOl2B,KAAK,MAEzCw+tB,CACX,CAE2BuC,CAAgC3hB,GACvD,OAAOlB,EAActytB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG40uB,GAAoBrhB,EAAYM,aAAe9ztB,OAAOC,OAAO,CAAC,EAAGuztB,EAAYM,cACtI,CCzCA,SAASzxG,GAAS0wG,EAAKjttB,GACnB,GAAIuE,UAAUC,OAAS,EACnB,OAAOuC,QAAQyK,OAAO,IAAIm7sB,EAAa,qEAG3C,MAAM2iB,GADNtvuB,EAAUA,GAAW,CAAC,GACMsvuB,YAE5B,OADAtvuB,EAAQsvuB,iBAAcpouB,EACf,GAAmB+ltB,EAAKjttB,GAC1BiH,KAAK,SAAUymtB,GAChB,IAcIr1a,EAAsB/jL,EHZf7c,EACXF,EGyBA,OApBIv3G,EAAQkvuB,aACRh1uB,OAAOC,OAAOuztB,EATU,CACxBttnB,OAAQ,OACRytnB,aAAc,oBACdjhqB,QAAS,OAQJ5sD,EAAQ+iuB,KACb7ouB,OAAOC,OAAOuztB,EAPC,CACf9gqB,QAAS,UASb0nE,EAAO64lB,EAAaF,EAAKS,GAEzBr1a,GADWr4S,EAAQkutB,aAAe55lB,EAAKg5lB,SAAWh5lB,EAAK84lB,cAC/B0hB,GAAqBphB,GAEzCA,EAAYwhB,cAAwC,OAAxBxhB,EAAY9gqB,QAC7B,SAEkB,UAAxB8gqB,EAAY9gqB,QACN5sD,EAAQuvuB,SAAW,YAAc,QAGjC,YAGX,IAAK,SACD,IAAIC,EAAgBf,GAAuBxhB,EAAKjttB,EAAQ+tE,QAAS2/oB,EAAY3ttB,OACzE0vuB,GH7BDh4nB,EG6BsB4gM,GH5BjC9gM,EAAS1+G,SAASskB,cAAc,WAC7B2c,MAAM8yB,QAAU,OACvB2qD,EAAOE,IAAMA,EACN5+G,SAASiF,KAAKyiG,YAAYgX,IG0BrB,OAAOi4nB,EACFvouB,KAAK,SAAUutC,GAChB,OAAOm4rB,GAAoB1f,EAAKS,EAAal5qB,EAAK8/E,EACtD,GACKt9B,QAAQ,WACT,IAAIpjF,EACA/a,SAASiF,KAAKlG,SAAS63uB,KACW,QAAjC77tB,EAAK67tB,EAASxvnB,qBAAkC,IAAPrsG,GAAyBA,EAAG0sF,YAAYmvoB,GAE1F,GACJ,IAAK,QACD,IAAIC,EACJ,GAAiC,sBAA7BhiB,EAAYG,aAAsC,CAClD,IAAKZ,EAAIl+gB,SAASghhB,8BACd,MAAM,IAAIpD,EAAa,sDAE3B+iB,EAAejB,GAAuBxhB,EAAKjttB,EAAQ+tE,QAAS2/oB,EAAY3ttB,MAC5E,CAqBA,OApBIuvuB,GACAA,EAAYj2oB,SAASl/F,OAAOk+S,GAEb,IAAItxS,QAAQ,SAAUC,EAASwK,GAC9C,IAAIm+tB,EAAcrxoB,YAAY,WACrBgxoB,IAAeA,EAAY/woB,SAC5BC,cAAcmxoB,GACdn+tB,EAAO,IAAIm7sB,EAAa,wCAEhC,EAAG,KACH+iB,EACKzouB,KAAK,SAAUutC,GAChBgqD,cAAcmxoB,GACd3ouB,EAAQwtC,EACZ,GACKypL,MAAM,SAAUnlH,GACjBta,cAAcmxoB,GACdn+tB,EAAOsnG,EACX,EACJ,GAEK7xG,KAAK,SAAUutC,GAChB,OAAOm4rB,GAAoB1f,EAAKS,EAAal5qB,EAAK8/E,EACtD,GACKt9B,QAAQ,WACLs4oB,IAAgBA,EAAY/woB,QAC5B+woB,EAAYzxtB,OAEpB,GACJ,IAAK,YACD,IAAI+xtB,EH1CpB,SAA6B3iB,EAAKl/oB,EAAS+2gB,EAAS/klB,GAChD,IAAIk/Q,EAeJ,OAdgB,IAAIl4Q,QAAQ,CAACC,EAASwK,KAClCszkB,EAAQpuf,UAAan6E,IACjB,GAAKA,EAAM44a,WAAc54a,EAAMpW,KAG/B,MAA0B,iBAAfoW,EAAMpW,MAAqBpG,IAAUwc,EAAMpW,KAAKpG,MAChDiH,EAAQ9M,OAAOC,OAAO,CAAC,EAAGoiB,EAAMpW,YAE3CqL,EAAO,IAAIm7sB,EAAa,2CAE5B1tc,EAAYpnQ,WAAW,WACnBrG,EAAO,IAAIm7sB,EAAa,wBAC5B,EAAG5+oB,GAAWugqB,MAGbt3oB,QAAQ,KACTj/E,aAAaknQ,GACb6lU,EAAQjnkB,SAEhB,CGqBiCgytB,CAAoB5iB,EAAKjttB,EAAQ+tE,QAAS/tE,EAAQ8klB,QAAS4oI,EAAY3ttB,OACxF,IAAIuvuB,EAIA,MAAM,IAAI3iB,EAAa,+BAE3B,OALI2iB,EAAYj2oB,SAASl/F,OAAOk+S,GAKzBu3b,EACF3ouB,KAAK,SAAUutC,GAChB,OAAOm4rB,GAAoB1f,EAAKS,EAAal5qB,EAAK8/E,EACtD,GACJ,QACI,MAAM,IAAIq4lB,EAAa,gDAEnC,EACJ,CC5GA,SAASmjB,GAAiB7iB,EAAKjttB,GAC3B,OAAIuE,UAAUC,OAAS,EACZuC,QAAQyK,OAAO,IAAIm7sB,EAAa,8EAE3C3stB,EAAUq1B,EAAMr1B,IAAY,CAAC,EAC7B9F,OAAOC,OAAO6F,EAAS,CACnBogG,OAAQ,OACRytnB,aAAc,oBACdjhqB,QAAS,OAEN2vjB,GAAS0wG,EAAKjttB,GACzB,CCHA,SAAS+vuB,GAAa9iB,EAAKjttB,GACvB,GAAIuE,UAAUC,OAAS,EACnB,OAAOuC,QAAQyK,OAAO,IAAIm7sB,EAAa,yEAE3C,MAAM,YAAEqjB,GAAgBhwuB,EAASuwD,EAASmjqB,GAAO1ztB,EAAS,CAAC,gBACrDsvuB,EAAcf,GAAUyB,QAAiDA,EAAc,IAAKz/qB,GAOlG,OANAvwD,EAAUq1B,EAAMk7B,IAAW,CAAC,EAC5Br2D,OAAOC,OAAOo2D,EAAQ,CAClB3D,QAAS,QACTihqB,aAAc,oBACdyhB,gBAEG/yH,GAAS0wG,EAAK18pB,EACzB,CACA,SAAS0/qB,GAAgBhjB,EAAKjttB,GAC1B,IACI,IAAKkwuB,iBACD,MAAM,IAAIvjB,EAAa,iFAE3B,IAAK3stB,EAAQ4ttB,YACT,MAAM,IAAIjB,EAAa,2DAEtB3stB,EAAQD,QACTC,EAAQD,MAAQgttB,KAEpB,MAAMuiB,EAAcf,GAAU,IAAKvuuB,GAC7B8klB,EAAU,IAAIorJ,iBAAiB,kBAAkBlwuB,EAAQD,SAS/D,IAAIowuB,EARJnwuB,EAAUq1B,EAAMr1B,IAAY,CAAC,EAC7B9F,OAAOC,OAAO6F,EAAS,CACnB4sD,QAAS,QACTihqB,aAAc,QACdyhB,cACAC,UAAU,EACVzqJ,YAaJ,MAAO,CACHryd,QAXY,IAAI1rH,QAAQ,CAACC,EAASwK,KAClC2+tB,EAAgB3+tB,EACT+qmB,GAAS0wG,EAAKjttB,GAChBiH,KAAMutC,GAAQxtC,EAAQwtC,IACtBypL,MAAMnlH,GAAOtnG,EAAOsnG,MAQzB/lE,OANW,KACX+xiB,EAAQjnkB,QACRsytB,EAAc,IAAIxjB,EAAa,yBAMvC,CACA,MAAO7zmB,GACH,MAAO,CACH2Z,QAAS1rH,QAAQyK,OAAOsnG,GACxB/lE,OAAQ,OAEhB,CACJ,CC9DAkjD,eAAem6oB,GAAgBnjB,EAAKjttB,GAChC,GAAIuE,UAAUC,OAAS,EACnB,OAAOuC,QAAQyK,OAAO,IAAIm7sB,EAAa,4EAE3C3stB,EAAUq1B,EAAMr1B,IAAY,CAAC,EAC7B,MAAM0ttB,QAAoB,GAAmBT,EAAKjttB,GAC5CmoC,EAAOslrB,EAAgBR,EAAKS,GAC5Br1a,EAAalwQ,EAAKmsF,KAAK84lB,aAAe0hB,GAAqBphB,GACjET,EAAI5xnB,mBAAmBx+D,KAAKsL,GACxB8krB,EAAIjttB,QAAQqwuB,YACZpjB,EAAIjttB,QAAQqwuB,YAAYh4b,GAGxB9gT,OAAO8hG,SAASl/F,OAAOk+S,EAE/B,CCWA,SAASi4b,GAAgBrjB,GACrB,IAAIsjB,EAAsBtjB,EAAIjttB,QAAQiutB,KAAO,QAAU,WAEvD,OADmBhB,EAAIjttB,QAAQ6ttB,cAAgB0iB,CAEnD,CACA,SAASC,GAA0BvjB,EAAKjttB,GAEhC2zG,EADJ3zG,EAAUA,GAAW,CAAC,KAElBA,EAAU,CAAE69F,IAAK79F,IAKrB,IAGIywuB,EAHA5yoB,EAAM79F,EAAQ69F,IACdgwnB,EAAe7ttB,EAAQ6ttB,cAAgByiB,GAAgBrjB,GACvDyjB,EAAYzjB,EAAI54sB,MAAMs8tB,aAAaC,eAQvC,KALIH,EADiB,UAAjB5iB,EACWhwnB,EAAMA,EAAItE,UAAUsE,EAAIllG,QAAQ,MAAQ+3uB,EAAUhzhB,OAGlD7/G,EAAMA,EAAItE,UAAUsE,EAAIllG,QAAQ,MAAQ+3uB,EAAUh0uB,MAG7D,MAAM,IAAIiwtB,EAAa,wCAE3B,OAAOmY,GAAkB2L,EAC7B,CAKAx6oB,eAAe06oB,GAAa1jB,EAAKjttB,GAEzB2zG,EADJ3zG,EAAUA,GAAW,CAAC,KAElBA,EAAU,CAAE69F,IAAK79F,IAKrB,MAAMw0C,EAAMg8rB,GAA0BvjB,EAAKjttB,GACrCD,EAAQy0C,EAAIz0C,MACZ+suB,EAAc7f,EAAI5xnB,mBAAmB+9H,KAAK,CAC5Cr5N,UAEJ,IAAK+suB,EAAa,CACd,GAAI7f,EAAIjttB,QAAQiutB,KACZ,MAAM,IAAItB,EAAa,+JAA2JzltB,GAEtL,MAAM,IAAIyltB,EAAa,wDAC3B,CACA,MAAMr4lB,EAAOw4mB,EAAYx4mB,KAKzB,cAJOw4mB,EAAYx4mB,KACdt0H,EAAQ69F,KAzBjB,SAAmCovnB,EAAKjttB,GAEnB,WADIA,EAAQ6ttB,cAAgByiB,GAAgBrjB,IAxCjE,SAAsBA,GAClB,IAAI4jB,EAAgB5jB,EAAI54sB,MAAMs8tB,aAAaG,cACvCC,EAAY9jB,EAAI54sB,MAAMs8tB,aAAaK,eACnCN,EAAYzjB,EAAI54sB,MAAMs8tB,aAAaC,eACnCC,GAAiBA,EAAc52W,aAC/B42W,EAAc52W,aAAa,KAAM82W,EAAUrqrB,MAAOgqrB,EAAU71mB,SAAW61mB,EAAUh0uB,MAGjFg0uB,EAAUhzhB,OAAS,EAE3B,CA+B+BuzhB,CAAahkB,GApD5C,SAAoBA,GAChB,IAAI4jB,EAAgB5jB,EAAI54sB,MAAMs8tB,aAAaG,cACvCC,EAAY9jB,EAAI54sB,MAAMs8tB,aAAaK,eACnCN,EAAYzjB,EAAI54sB,MAAMs8tB,aAAaC,eACnCC,GAAiBA,EAAc52W,aAC/B42W,EAAc52W,aAAa,KAAM82W,EAAUrqrB,MAAOgqrB,EAAU71mB,SAAW61mB,EAAUhzhB,QAGjFgzhB,EAAUh0uB,KAAO,EAEzB,CA0CmDw0uB,CAAWjkB,EAC9D,CAuBQkkB,CAA0BlkB,EAAKjttB,GAE5B2suB,GAAoB1f,EAAK6f,EAAat4rB,EAAK8/E,GAC7C2pG,MAAMnlH,IAMP,MALKmtnB,GAA2BntnB,IAC5Bm0mB,EAAI5xnB,mBAAmBlwB,MAAM,CACzBprE,UAGF+4G,IAEL7xG,KAAKutC,IACNy4qB,EAAI5xnB,mBAAmBlwB,MAAM,CACzBprE,UAEGy0C,GAEf,CChGAyhD,eAAem7oB,GAAuBnkB,EAAKS,EAAa2jB,GACpD,MAAM,SAAE17oB,EAAQ,KAAEszoB,GAAShc,EAAIjttB,QAC/B,IAAK21F,EACD,MAAM,IAAIg3nB,EAAa,4EAE3B,IACI,MAAM2kB,EAAmBp3uB,OAAOC,OAAO,CAAC,EAAGuztB,EAAa,CAAE/3nB,aACtD07oB,EAAmBrjB,cACnBsjB,EAAiBtjB,YAAcqjB,EAAmBrjB,aAEtD,MAAMujB,EAAiBr3uB,OAAOC,OAAO,CAAC,EAAGm3uB,GACzC,GAAIrI,EAAM,CACN,MAAMsB,QAAgBT,GAAYuH,aAA+D,EAASA,EAAmBhH,YAC7HkH,EAAe/F,YAAcjB,EAC7B+G,EAAiBrI,KAAOA,EACxBqI,EAAiBjH,WAAagH,EAAmBhH,UACrD,CACA,MAAMgE,Qd8Ddp4oB,eAAgCg3nB,EAAKjttB,EAASyztB,GAC1C,MAAMtttB,EAAOjM,OAAOo7D,QAAQ,CACxBugC,UAAW71F,EAAQ21F,SACnBwB,WAAY,gBACZp+D,MAAO06rB,EAAajvrB,OAAOl2B,KAAK,KAChC8pF,cAAeq7nB,EAAaA,eAC7BtwtB,IAAI,UAAWQ,EAAM5N,IACpB,OAAO4N,EAAO,IAAM+0F,mBAAmB3iG,EAC3C,GAAGuY,KAAK,KACR,IAAIuvF,EAAM41nB,EAAanG,SASvB,OARItttB,EAAQgutB,aAAe9ztB,OAAOO,KAAKuF,EAAQgutB,aAAaxptB,QAAU,IAClEq5F,GAAO2unB,EAAcxstB,EAAQgutB,cAO1Bud,GAAiBte,EALT,CACXpvnB,MACA13F,OACAqluB,YAAaxruB,aAAyC,EAASA,EAAQwruB,aAG/E,CcjFoCgG,CAAiBvkB,EAAKskB,EAAgBF,GAC5D/8mB,EAAO64lB,EAAaF,EAAKS,IACzB,OAAE7rnB,SAAiB8qoB,GAAoB1f,EAAKqkB,EAAkBjD,EAAe/5mB,IAC7E,aAAEm/lB,GAAiB5xnB,EAIzB,OAHI4xnB,IC5BZ,SAA4BzptB,EAAGC,GAC3B,OAAQD,EAAEyptB,eAAiBxptB,EAAEwptB,YACjC,CD0B6Bge,CAAmBhe,EAAc4d,IAClDpkB,EAAI6Y,aAAa4L,mBAAmBje,GAEjC5xnB,CACX,CACA,MAAOiX,GAIH,M1BpBGu/mB,GADyBh+sB,E0BkBGy+F,I1BhBX,kBAApBz+F,EAAMwxsB,WACiB,6CAAvBxxsB,EAAM0xsB,c0BgBFkB,EAAI6Y,aAAa6L,qBAEf74nB,CACV,C1BtBJ,IAAoCz+F,C0BuBpC,CEnCA,SAASu3tB,KACL,MAAM,IAAIjlB,EAAa,qFAC3B,CACA,SAASklB,GAAeC,EAAejwoB,GACnC,OAAIyxnB,GAAUwe,GACHjwoB,EAAO0xnB,QAEdF,GAAcye,GACPjwoB,EAAOkvnB,iBAElB6gB,IACJ,CACA37oB,eAAe87oB,GAAW9kB,EAAK54sB,GACtBi/sB,GAAUj/sB,IAAWg/sB,GAAch/sB,IACpCu9tB,KAEJ,IAAI/voB,EAASornB,EAAI6Y,aAAakM,gBAC9B,GAAInwoB,EAAO4xnB,aAIP,OAHA5xnB,QAAeuvoB,GAAuBnkB,EAAK,CACvCzorB,OAAQnwB,EAAMmwB,QACfq9D,EAAO4xnB,cACHoe,GAAex9tB,EAAOwtF,GAEjC,IAAI03L,EAEAA,EADA0zb,EAAIjttB,QAAQiutB,KACG,OAEVoF,GAAch/sB,GACJ,QAGA,WAEnB,MAAM,OAAEmwB,EAAM,aAAE4orB,EAAY,YAAEC,EAAW,OAAE5xnB,EAAM,WAAE4uoB,EAAU,YAAErc,GAAgB35sB,EAC/E,OAAOy7tB,GAAiB7iB,EAAK,CACzB1zb,eACA/0P,SACA4orB,eACAC,cACA5xnB,SACA4uoB,aACArc,gBAEC/mtB,KAAK,SAAUutC,GAChB,OAAOq9rB,GAAex9tB,EAAOmgC,EAAIqtD,OACrC,EACJ,CCzCA5L,eAAeg8oB,GAAYhlB,EAAKjttB,GAC5B,IAAI4T,EACJ,MAAMiuF,EAAqF,QAA3EjuF,EAAK5T,aAAyC,EAASA,EAAQ6hG,cAA2B,IAAPjuF,EAAgBA,EAAKq5sB,EAAI6Y,aAAakM,gBACzI,GAAInwoB,EAAO4xnB,aACP,OAAO2d,GAAuBnkB,EAAKjttB,GAAW,CAAC,EAAG6hG,EAAO4xnB,cAE7D,IAAK5xnB,EAAOkvnB,cAAgBlvnB,EAAO0xnB,QAC/B,MAAM,IAAI5G,EAAa,2DAE3B,MAAMoE,EAAclvnB,EAAOkvnB,aAAe,CAAC,EACrCwC,EAAU1xnB,EAAO0xnB,SAAW,CAAC,EAC7B/urB,EAASusrB,EAAYvsrB,QAAU+urB,EAAQ/urB,OAC7C,IAAKA,EACD,MAAM,IAAImorB,EAAa,sDAE3B,MAAMS,EAAe2D,EAAY3D,cAAgBmG,EAAQnG,aACzD,IAAKA,EACD,MAAM,IAAIT,EAAa,4DAE3B,MAAMU,EAAc0D,EAAY1D,aAAeJ,EAAIjttB,QAAQqttB,YACrD5xnB,EAAS83nB,EAAQ93nB,QAAUwxnB,EAAIjttB,QAAQy7F,OACvC4uoB,EAAatZ,aAAiD,EAASA,EAAYsZ,WACnFrc,GAAe+C,aAAiD,EAASA,EAAY/C,eAAiBuF,aAAyC,EAASA,EAAQvF,aAStK,GARAhutB,EAAU9F,OAAOC,OAAO,CACpBqqC,SACA4orB,eACAC,cACA5xnB,SACA4uoB,aACArc,eACDhutB,GACCittB,EAAIjttB,QAAQiutB,KACZjutB,EAAQu5R,aAAe,WAEtB,CACD,MAAM,aAAEA,GAAiByvc,GAAsB/b,GAC/CjttB,EAAQu5R,aAAeA,CAC3B,CACA,OAAOu2c,GAAiB7iB,EAAKjttB,GACxBiH,KAAKutC,GAAOA,EAAIqtD,OACzB,CCzCA5L,eAAei8oB,GAAYjlB,EAAK54sB,GAC5B,IAAI08sB,EAAc,GACd0C,EAAe,GAKnB,GAJIp/sB,IACA08sB,EAAc18sB,EAAM08sB,YACpB0C,EAAep/sB,EAAMo/sB,eAEpB1C,IAAgB0C,EACjB,MAAM,IAAI9G,EAAa,sDAE3B,IAAIh3nB,EAAWs3nB,EAAIjttB,QAAQ21F,SACvB8+nB,EAAexH,EAAIjttB,QAAQy0tB,aAC/B,IAAK9+nB,EACD,MAAM,IAAIg3nB,EAAa,8EAQ3B,OAAOtgf,GAAK4gf,EANIE,EAAaF,GAAKO,UACvBhB,EAAc,CACrB2lB,gBAAiB1e,EAAe,gBAAkB,eAClDp/sB,MAAOo/sB,GAAgB1C,IACxB7ltB,MAAM,GAEyB,CAC9BksF,QAAS,CACL,eAAgB,oCAChB,cAAiB,SAJEntF,GAAfwqtB,EAAiB,GAAG9+nB,KAAY8+nB,IAAoB9+nB,KAOpE,CC1BA,MAAMy8oB,GAAU,CACZrhB,YAAa,eACbwC,QAAS,WACTE,aAAc,iBAElBx9nB,eAAeo8oB,GAAeplB,EAAK/vsB,EAAM7I,GACrC,IAAIT,EACJ,IAAI6nF,EACA9F,EAAWs3nB,EAAIjttB,QAAQ21F,SACvB8+nB,EAAexH,EAAIjttB,QAAQy0tB,aAI/B,GAHKpgtB,IACDA,EAAQ44sB,EAAI6Y,aAAajH,YAAY3htB,KAEpC7I,EACD,MAAM,IAAIs4sB,EAAa,kBAAkBzvsB,6BAS7C,GANIu+E,EADAv+E,IAAS61sB,GAAUuf,OACVj+tB,aAAqC,EAASA,EAAMonF,OAGkB,QAArE7nF,EAAKS,aAAqC,EAASA,EAAM8nF,cAA2B,IAAPvoF,OAAgB,EAASA,EAAGyoF,IAEvHZ,EAASA,GAAUwxnB,EAAIjttB,QAAQy7F,QAC1B9F,EACD,MAAM,IAAIg3nB,EAAa,kFAE3B,IAAKlxnB,EACD,MAAM,IAAIkxnB,EAAa,yBAE3B,MAAQ4lB,uBAAwBC,SAAwB3G,GAAa5e,EAAKxxnB,GACpEg3oB,EAA4BxouB,GAAfwqtB,EAAiB,GAAG9+nB,KAAY8+nB,IAAoB9+nB,GAKvE,OAAO02I,GAAK4gf,EAAKulB,EAJJhmB,EAAc,CACvB2lB,gBAAiBC,GAAQl1tB,GACzB7I,MAAOA,EAAM6I,KACdhS,MAAM,GAC6B,CAClCksF,QAAS,CACL,eAAgB,oCAChB,cAAiB,SAAWq7oB,IAGxC,CCzCA,SAASC,GAAoBzlB,EAAKjttB,GAE9B,MAAMuwD,ECIV,SAA0C08pB,EAAKjttB,GAC3C,OAdJ,SAAuBuwD,GAGnB,KAFAA,EAASr2D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGo2D,GAAS,CAC9CgpO,aAAc,OAAQn5L,OAAQ,uBAAwB6znB,OAAQ,KACtDkb,gBACR,MAAM,IAAIxiB,EAAa,uCAE3B,IAAKp8pB,EAAOw9pB,UACR,MAAM,IAAIpB,EAAa,gCAI3B,cAFOp8pB,EAAO/rB,cACP+rB,EAAOksC,MACPlsC,CACX,CAEWoirB,CAAcz4uB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,ECdtD,SAA6C8ytB,GACzC,MAAM,SAAEt3nB,EAAQ,YAAEi4nB,EAAW,aAAEC,EAAY,MAAE9ttB,GAAWkttB,EAAIjttB,QACtDkpuB,EAAqB73U,KAAc95Z,OAAO8hG,SAASgF,UAAOn3F,EAChE,OAAOiktB,EAAW,CACdx1nB,WACAi4nB,YAAaA,GAAesb,EAC5Brb,eACA9ttB,MAAOA,GAASgttB,IAChBxzb,aAAc,OACdn5L,OAAQ,wBAEhB,CDGyDwyoB,CAAoC3lB,IAAOjttB,GACpG,CDNmB6yuB,CAAiC5lB,EADhDjttB,EAAUq1B,EAAMr1B,IAAY,CAAC,GAEvBmoC,EGZV,SAAuC8krB,EAAK18pB,GAcxC,MAXkB,CACdkrC,OAHWwxnB,EAAIjttB,QAAQy7F,OAIvB64B,KAHS64lB,EAAaF,EAAK18pB,GAI3BolC,SAAUplC,EAAOolC,SACjBi4nB,YAAar9pB,EAAOq9pB,YACpBr0b,aAAchpO,EAAOgpO,aACrBs0b,aAAct9pB,EAAOs9pB,aACrB9ttB,MAAOwwD,EAAOxwD,MACdgutB,UAAWx9pB,EAAOw9pB,UAClBohB,gBAAiB5+qB,EAAO4+qB,gBAGhC,CHHiB2D,CAA8B7lB,EAAK18pB,GAC1C8nP,EAAalwQ,EAAKmsF,KAAK84lB,aAAe0hB,GAAqBv+qB,GACjE08pB,EAAI5xnB,mBAAmBx+D,KAAKsL,GACxB8krB,EAAIjttB,QAAQqwuB,YACZpjB,EAAIjttB,QAAQqwuB,YAAYh4b,GAGxB9gT,OAAO8hG,SAASl/F,OAAOk+S,EAE/B,CIHA,SAAS06b,GAAe9lB,EAAKjgmB,GACzB,MAAMgmnB,EAAYr+rB,GACP4zrB,GAAa/3tB,UAAUtM,KAAK4nD,KAAKkhE,EAAOr4E,EAAQ,MAErDs+rB,EAAoBD,EAAS5C,GAAgBtkrB,KAAK,KAAMmhqB,IACxDimB,EAAiBF,EAASrC,GAAa7krB,KAAK,KAAMmhqB,IAClDkmB,EAAkBj5uB,OAAOC,OAAO+4uB,EAAgB,CAClDpC,YAAa,WACT,OAAOv5uB,OAAO8lH,OAClB,EACAuznB,aAAc,WACV,OAAOr5uB,OAAO8hG,QAClB,EACA23oB,aAAc,WACV,OAAOz5uB,OAAOsB,QAClB,IAEEwb,EAAQ,CACVu/sB,mBAAoB,GAAmB9nqB,KAAK,KAAMmhqB,GAClDsQ,sBAAuB,GAAsBzxqB,KAAK,KAAMmhqB,GACxD6iB,iBAAkBA,GAAiBhkrB,KAAK,KAAMmhqB,GAC9C8iB,aAAcA,GAAajkrB,KAAK,KAAMmhqB,GACtCgjB,gBAAiBA,GAAgBnkrB,KAAK,KAAMmhqB,GAC5CmjB,gBAAiB6C,EACjBtC,aAAcwC,EACdrtlB,OAAQ,GACRstlB,OAAQlB,GAAYpmrB,KAAK,KAAMmhqB,GAC/BomB,MAAOtB,GAAWjmrB,KAAK,KAAMmhqB,GAC7BmkB,uBAAwBA,GAAuBtlrB,KAAK,KAAMmhqB,GAC1DglB,YAAaA,GAAYnmrB,KAAK,KAAMmhqB,GACpCqmB,YAAa,CAACC,EAAmBC,ICxCzCv9oB,eAA2Bg3nB,EAAKsmB,EAAmBC,GAO/C,GANKD,IACDA,SAA2BtmB,EAAI6Y,aAAajH,aAAa9N,aAExDyiB,IACDA,SAAuBvmB,EAAI6Y,aAAajH,aAAatL,UAEpDggB,IAAsBlgB,GAAckgB,GACrC,OAAOxsuB,QAAQyK,OAAO,IAAIm7sB,EAAa,gDAE3C,IAAK6mB,IAAkBlgB,GAAUkgB,GAC7B,OAAOzsuB,QAAQyK,OAAO,IAAIm7sB,EAAa,4CAE3C,MAAM3stB,EAAU,CACZ69F,IAAK01oB,EAAkBlmB,YACvB14qB,OAAQ,MACRo8qB,YAAawiB,EAAkBxiB,aAEnC,GAAI9D,EAAIjttB,QAAQipuB,KAAM,CAClB,MAAM7xoB,QAAgB61nB,EAAIwmB,4BAA4Bv5uB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAE+wtB,YAAawiB,KAC/GvzuB,EAAQo3F,QAAUA,SACXp3F,EAAQ+wtB,WACnB,CACA,OAAOH,GAAY3D,EAAKjttB,GACnBiH,KAAKysuB,GACFA,EAAS/6pB,MAAQ66pB,EAAcr3oB,OAAOxjB,IAC/B+6pB,EAEJ3suB,QAAQyK,OAAO,IAAIm7sB,EAAa,4DAEtC1uf,MAAM,SAAUnlH,GACjB,IAAIllG,EACJ,GAAIklG,aAAe6ymB,IAAiBsB,EAAIjttB,QAAQipuB,KAAM,CAClD,MAAM,MAAE5utB,EAAK,iBAAEyxsB,GAAqBhzmB,EACpC,MAAM,IAAI42mB,GAAWr1sB,EAAOyxsB,EAChC,CACA,IAAKmB,EAAIjttB,QAAQipuB,KAAM,CACnB,IAAI7zuB,EAAI0jH,EAIR,GAHIA,aAAe22mB,KAA+E,QAA7D77sB,EAAKklG,aAAiC,EAASA,EAAI3wE,YAAyB,IAAPv0B,OAAgB,EAASA,EAAG8+sB,iBAClIt9tB,EAAIu2tB,EAAaK,YAAYlzmB,EAAI3wE,KAAKuqrB,gBAEtCt9tB,aAAau2tB,EAAc,CAC3B,MAAM,MAAEtxsB,EAAK,iBAAEyxsB,GAAqB12tB,EACpC,MAAM,IAAIs6tB,GAAWr1sB,EAAOyxsB,EAChC,CACJ,CACA,MAAMhzmB,CACV,EACJ,CDPmBw6nB,CAAYrmB,EAAKsmB,EAAmBC,GAE/ClL,OAAQ,GAAYx8qB,KAAK,KAAMmhqB,GAC/B0mB,gBAAiB,GAAgB7nrB,KAAK,KAAMmhqB,GAC5CqL,WAAY+Z,GAAevmrB,KAAK,KAAMmhqB,IAa1C,MAXe,CACX,mBACA,eACA,SACA,QACA,yBACA,eAEG7qtB,QAAQxH,IACXyZ,EAAMzZ,GAAOo4uB,EAAS3+tB,EAAMzZ,MAEzByZ,CACX,CEjEA,SAASu/tB,GAAcv/tB,EAAO+L,GAC1B,IAAKkzsB,GAAUj/sB,KAAWg/sB,GAAch/sB,KAAWm/sB,GAAen/sB,GAC9D,MAAM,IAAIs4sB,EAAa,iHAE3B,GAAa,gBAATvssB,IAA2BizsB,GAAch/sB,GACzC,MAAM,IAAIs4sB,EAAa,uBAE3B,GAAa,YAATvssB,IAAuBkzsB,GAAUj/sB,GACjC,MAAM,IAAIs4sB,EAAa,mBAE3B,GAAa,iBAATvssB,IAA4BozsB,GAAen/sB,GAC3C,MAAM,IAAIs4sB,EAAa,uBAE/B,CCjBA,MAAMknB,GACF,WAAAhjuB,CAAYijuB,GACR1juB,KAAK0juB,YAAcv9sB,SAASu9sB,GAAe,EAC/C,CACA,aAAOhjuB,GAEH,OAAO,IAAI+iuB,GADO,EAEtB,CACA,GAAA36tB,GAEI,OADWD,KAAKC,MAAQ9I,KAAK0juB,aAAe,GAEhD,ECXJ,MAAMC,GAAgB,UAChBC,GAAgB,UAChBC,GAAc,QACdC,GAAgB,UAEhBC,GAAoB,cCSpB/vuB,GAAkB,CACpBgwuB,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,0BAA0B,EAC1BtusB,aAAS/+B,EACTstuB,mBAAoB,GACpBh8oB,WAAYk2nB,GAQhB,MAAM+lB,GACF,WAAA5juB,CAAYo8sB,EAAKjttB,EAAU,CAAC,GAGxB,GAFAoQ,KAAK68sB,IAAMA,EACX78sB,KAAK40H,QAAUiolB,EAAIjolB,SACd50H,KAAK40H,QACN,MAAM,IAAI2nlB,EAAa,qDAE3B3stB,EAAU9F,OAAOC,OAAO,CAAC,EAAGiK,GAAiB+mtB,EAAWnrtB,IACnDswtB,OACDtwtB,EAAQw0uB,mBAAqBpwuB,GAAgBowuB,oBAEjDpkuB,KAAKpQ,QAAUA,EACf,MAAM00uB,EAAiBvpB,EAAW,CAC9B3ynB,WAAYx4F,EAAQw4F,WACpBQ,OAAQh5F,EAAQg5F,SAEW,iBAApBh5F,EAAQimC,QACfyusB,EAAeC,gBAAkB30uB,EAAQimC,QAEpCjmC,EAAQimC,UACbyusB,EAAeE,YAAc50uB,EAAQimC,SAEzC71B,KAAK61B,QAAUgnrB,EAAIiE,eAAe2jB,gBAAgB36uB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGu6uB,GAAiB,CAAEI,oBAAoB,KACzH1kuB,KAAKowkB,MAAQqzJ,GAAS/iuB,SACtBV,KAAKrQ,MA7BF,CACHg1uB,eAAgB,CAAC,EACjBC,aAAc,KA4BlB,CACA,EAAAj6nB,CAAGx+F,EAAO+xC,EAAS/0B,GACXA,EACAnpB,KAAK40H,QAAQjqB,GAAGx+F,EAAO+xC,EAAS/0B,GAGhCnpB,KAAK40H,QAAQjqB,GAAGx+F,EAAO+xC,EAE/B,CACA,GAAA+uE,CAAI9gH,EAAO+xC,GACHA,EACAl+C,KAAK40H,QAAQ3H,IAAI9gH,EAAO+xC,GAGxBl+C,KAAK40H,QAAQ3H,IAAI9gH,EAEzB,CACA,KAAA1f,GACQuT,KAAKpQ,QAAQu0uB,0BACbnkuB,KAAKmkuB,2BAETnkuB,KAAK6kuB,2BACL7kuB,KAAKrQ,MAAMsye,SAAU,CACzB,CACA,IAAAv8d,GACI1F,KAAK8kuB,6BACL9kuB,KAAKrQ,MAAMsye,SAAU,CACzB,CACA,SAAA8iQ,GACI,QAAS/kuB,KAAKrQ,MAAMsye,OACxB,CACA,UAAAj9K,GACI,OAAO//R,EAAMjlB,KAAKpQ,QACtB,CACA,aAAAo1uB,CAAc/guB,GACV,MAAMmguB,EAAqBpkuB,KAAKpQ,QAAQw0uB,oBAAsB,EAE9D,OADiBnguB,EAAM8jF,UAAYq8oB,CAEvC,CACA,UAAAa,CAAWhhuB,GAEP,OADiBjE,KAAKgluB,cAAc/guB,IACfjE,KAAKowkB,MAAMtnkB,KACpC,CACA,WAAAo8tB,CAAY16uB,EAAKyZ,GACbjE,KAAK40H,QAAQ/pH,KAAK84tB,GAAen5uB,EAAKyZ,EAC1C,CACA,WAAAkhuB,CAAY36uB,EAAK46uB,EAAYC,GACzBrluB,KAAK40H,QAAQ/pH,KAAK+4tB,GAAep5uB,EAAK46uB,EAAYC,EACtD,CACA,SAAAC,CAAU96uB,EAAKyZ,GACXjE,KAAK40H,QAAQ/pH,KAAKg5tB,GAAar5uB,EAAKyZ,EACxC,CACA,WAAAshuB,CAAY/6uB,EAAKyZ,GACbjE,KAAK40H,QAAQ/pH,KAAKi5tB,GAAet5uB,EAAKyZ,EAC1C,CACA,SAAAuhuB,CAAUv7tB,GACNjK,KAAK40H,QAAQ/pH,KD1GD,QC0GmBZ,EACnC,CACA,uBAAAw7tB,CAAwBj7uB,GACpBmd,aAAa3H,KAAKrQ,MAAMg1uB,eAAen6uB,WAChCwV,KAAKrQ,MAAMg1uB,eAAen6uB,GACjCwV,KAAKrQ,MAAMi1uB,aAAe,IAC9B,CACA,0BAAAE,GACI,IAAIH,EAAiB3kuB,KAAKrQ,MAAMg1uB,eAChC,IAAK,IAAIn6uB,KAAOm6uB,EACP76uB,OAAOsW,UAAUxU,eAAeyU,KAAKskuB,EAAgBn6uB,IAG1DwV,KAAKyluB,wBAAwBj7uB,EAErC,CACA,qBAAAk7uB,CAAsBl7uB,EAAKyZ,GACvB,IAAIm/sB,GAAen/sB,GAAnB,CAGA,IAAI0huB,EAAa3luB,KAAKgluB,cAAc/guB,GAChC2huB,EAA+D,IAA7CpgvB,KAAKmE,IAAIg8uB,EAAa3luB,KAAKowkB,MAAMtnkB,MAAO,GAC9D9I,KAAKyluB,wBAAwBj7uB,GAC7B,IAAIq7uB,EAAqBp+tB,WAAW,KAChCzH,KAAKkluB,YAAY16uB,EAAKyZ,IACvB2huB,GACH5luB,KAAKrQ,MAAMg1uB,eAAen6uB,GAAOq7uB,CAPjC,CAQJ,CACA,wBAAAhB,GACI,IAAIiB,EAAe9luB,KAAK61B,QAAQwrrB,aAChC,IAAK,IAAI72tB,KAAOs7uB,EACZ,GAAKh8uB,OAAOsW,UAAUxU,eAAeyU,KAAKyluB,EAAct7uB,GAAxD,CAGA,IAAIyZ,EAAQ6huB,EAAat7uB,GACzBwV,KAAK0luB,sBAAsBl7uB,EAAKyZ,EAFhC,CAIR,CACA,0BAAA8huB,GACI/luB,KAAK8kuB,6BACL9kuB,KAAK6kuB,0BACT,CACA,GAAAvxuB,CAAI9I,EAAKyZ,GACL,IAAI6huB,EAAe9luB,KAAK61B,QAAQwrrB,aAChCmiB,GAAcv/tB,GACd6huB,EAAat7uB,GAAOyZ,EACpBjE,KAAK61B,QAAQmwsB,WAAWF,GACxB9luB,KAAKimuB,sBACLjmuB,KAAKsluB,UAAU96uB,EAAKyZ,GACpBjE,KAAK0luB,sBAAsBl7uB,EAAKyZ,EACpC,CACA,OAAAiiuB,CAAQ17uB,GAEJ,OADmBwV,KAAK61B,QAAQwrrB,aACZ72tB,EACxB,CACA,SAAMqJ,CAAIrJ,GACN,OAAOwV,KAAKkmuB,QAAQ17uB,EACxB,CACA,aAAAo3uB,GACI,MAAMnwoB,EAAS,CAAC,EACVq0oB,EAAe9luB,KAAK61B,QAAQwrrB,aAalC,OAZAv3tB,OAAOO,KAAKy7uB,GAAc9zuB,QAAQxH,IAC9B,MAAMyZ,EAAQ6huB,EAAat7uB,GACvBy4tB,GAAch/sB,GACdwtF,EAAOkvnB,YAAc18sB,EAEhBi/sB,GAAUj/sB,GACfwtF,EAAO0xnB,QAAUl/sB,EAEZm/sB,GAAen/sB,KACpBwtF,EAAO4xnB,aAAep/sB,KAGvBwtF,CACX,CACA,eAAMg9nB,GACF,OAAOzutB,KAAK4huB,eAChB,CACA,mBAAAuE,CAAoBn2tB,GAChB,MAAM81tB,EAAe9luB,KAAK61B,QAAQwrrB,aAOlC,OANYv3tB,OAAOO,KAAKy7uB,GAAc70uB,OAAOzG,IACzC,MAAMyZ,EAAQ6huB,EAAat7uB,GAC3B,OAAQy4tB,GAAch/sB,IAAmB,gBAAT+L,GACxBkzsB,GAAUj/sB,IAAmB,YAAT+L,GACpBozsB,GAAen/sB,IAAmB,iBAAT+L,IAClC,EAEP,CACA,YAAAo2tB,CAAaniuB,GACT,GAAIg/sB,GAAch/sB,GACd,MAAO,cAEX,GAAIi/sB,GAAUj/sB,GACV,MAAO,UAEX,GAAIm/sB,GAAen/sB,GACf,MAAO,eAEX,MAAM,IAAIs4sB,EAAa,qBAC3B,CACA,mBAAA0pB,GACI,GAAIzmB,KAAgB,CAChB,MAAM3prB,EAAU71B,KAAK61B,QAAQwrrB,aAC7BrhtB,KAAK40H,QAAQ/pH,KAAKk5tB,GAAmBlusB,EACzC,CACJ,CACA,UAAAwrrB,GACI,OAAOrhtB,KAAK61B,OAChB,CACA,SAAA8/rB,CAAUlkoB,EACV40oB,EAAeC,EAAWC,GACtB,MAAMC,EAAsB,CAACh8uB,EAAKyZ,KAC9B,MAAM+L,EAAOhQ,KAAKomuB,aAAaniuB,GAClB,gBAAT+L,EACAq2tB,GAAiBA,EAAc77uB,EAAKyZ,GAEtB,YAAT+L,EACLs2tB,GAAaA,EAAU97uB,EAAKyZ,GAEd,iBAAT+L,GACLu2tB,GAAkBA,EAAe/7uB,EAAKyZ,IAGxCwiuB,EAAc,CAACj8uB,EAAKyZ,KACtBjE,KAAKsluB,UAAU96uB,EAAKyZ,GACpBjE,KAAK0luB,sBAAsBl7uB,EAAKyZ,GAChCuiuB,EAAoBh8uB,EAAKyZ,IAEvByiuB,EAAgB,CAACl8uB,EAAKyZ,EAAOohuB,KAC/BrluB,KAAKmluB,YAAY36uB,EAAKyZ,EAAOohuB,GAC7BrluB,KAAKyluB,wBAAwBj7uB,GAC7BwV,KAAK0luB,sBAAsBl7uB,EAAKyZ,GAChCuiuB,EAAoBh8uB,EAAKyZ,IAEvB0iuB,EAAgB,CAACn8uB,EAAKyZ,KACxBjE,KAAKyluB,wBAAwBj7uB,GAC7BwV,KAAKuluB,YAAY/6uB,EAAKyZ,GACtBuiuB,EAAoBh8uB,EAAKyZ,IAEvB2/P,EAAQ,CAAC,UAAW,cAAe,gBACnCgje,EAAiB5muB,KAAK4huB,gBAC5Bh+d,EAAM5xQ,QAASge,IACX,MAAM/L,EAAQwtF,EAAOzhF,GACjB/L,GACAu/tB,GAAcv/tB,EAAO+L,KAG7B,MAAM6lB,EAAU+tO,EAAMt5Q,OAAO,CAACurC,EAAS7lB,KACnC,MAAM/L,EAAQwtF,EAAOzhF,GAKrB,OAJI/L,IAEA4xB,EADmB71B,KAAKmmuB,oBAAoBn2tB,IAASA,GAC/B/L,GAEnB4xB,GACR,CAAC,GACJ71B,KAAK61B,QAAQmwsB,WAAWnwsB,GACxB71B,KAAKimuB,sBACLrie,EAAM5xQ,QAAQge,IACV,MAAM62tB,EAAWp1oB,EAAOzhF,GAClB82tB,EAAgBF,EAAe52tB,GAC/Bo4E,EAAapoF,KAAKmmuB,oBAAoBn2tB,IAASA,EACjD62tB,GAAYC,GACZH,EAAcv+oB,EAAY0+oB,GAC1BL,EAAYr+oB,EAAYy+oB,GACxBH,EAAct+oB,EAAYy+oB,EAAUC,IAE/BD,EACLJ,EAAYr+oB,EAAYy+oB,GAEnBC,GACLH,EAAcv+oB,EAAY0+oB,IAGtC,CACA,MAAAlksB,CAAOp4C,GACHwV,KAAKyluB,wBAAwBj7uB,GAC7B,IAAIs7uB,EAAe9luB,KAAK61B,QAAQwrrB,aAC5B0lB,EAAejB,EAAat7uB,UACzBs7uB,EAAat7uB,GACpBwV,KAAK61B,QAAQmwsB,WAAWF,GACxB9luB,KAAKimuB,sBACLjmuB,KAAKuluB,YAAY/6uB,EAAKu8uB,EAC1B,CACA,gBAAMpF,CAAW19tB,GACb,IAAIT,EACJ,OAAiC,QAAzBA,EAAKxD,KAAK68sB,IAAI54sB,aAA0B,IAAPT,OAAgB,EAASA,EAAGy/tB,MAAMh/tB,EAC/E,CACA,aAAAu/tB,CAAcv/tB,GACV,OAAOu/tB,GAAcv/tB,EACzB,CACA,KAAAg/tB,CAAMz4uB,GACF,GAAIwV,KAAKrQ,MAAMi1uB,aACX,OAAO5kuB,KAAKrQ,MAAMi1uB,aAEtB,IACI,IAAI3guB,EAAQjE,KAAKkmuB,QAAQ17uB,GACzB,IAAIw8uB,OAAwBlwuB,IAAVmN,EAClB,IAAKA,GAAiB,gBAARzZ,EAAuB,CACjC,MAAMy8uB,EAAajnuB,KAAKmmuB,oBAAoB,gBAE5Ca,OAA+BlwuB,IADVkJ,KAAKkmuB,QAAQe,EAEtC,CACA,IAAKD,EACD,MAAM,IAAIzqB,EAAa,8CAAgD/xtB,EAE/E,CACA,MAAOk+G,GAEH,OADA1oG,KAAKwluB,UAAU98nB,GACR/xG,QAAQyK,OAAOsnG,EAC1B,CAsBA,OArBA1oG,KAAKyluB,wBAAwBj7uB,GACRwV,KAAKrQ,MAAMi1uB,aAAe5kuB,KAAK68sB,IAAI54sB,MAAM49tB,cACzDhruB,KAAK46F,IAEN,GADAzxF,KAAK21tB,UAAUlkoB,IACVxtF,GAAiB,gBAARzZ,EAAuB,CACjC,MAAMm2tB,EAAclvnB,EAAoB,YAExC,OADAzxF,KAAKmluB,YAAY36uB,EAAKm2tB,EAAa,MAC5BA,CACX,CAEA,OAAOlvnB,EADWzxF,KAAKomuB,aAAaniuB,MAGnC4pN,MAAMnlH,IAIP,MAHA1oG,KAAK4iC,OAAOp4C,GACZk+G,EAAIw+nB,SAAW18uB,EACfwV,KAAKwluB,UAAU98nB,GACTA,IAEL9hB,QAAQ,KACT5mF,KAAKrQ,MAAMi1uB,aAAe,MAGlC,CACA,KAAA7pqB,GACI,MAAM02B,EAASzxF,KAAK4huB,gBACpB5huB,KAAK8kuB,6BACL9kuB,KAAK61B,QAAQwmsB,eACbr8tB,KAAKimuB,sBACLn8uB,OAAOO,KAAKonG,GAAQz/F,QAAQxH,IACxBwV,KAAKuluB,YAAY/6uB,EAAKinG,EAAOjnG,KAErC,CACA,wBAAA25uB,GACI,MAAM2B,EAAe9luB,KAAK61B,QAAQwrrB,aAC5B8lB,EAAgB,CAAC,EACvBr9uB,OAAOO,KAAKy7uB,GAAc9zuB,QAAQxH,IAC1Bs7uB,EAAat7uB,GAAK48uB,gBAClBD,EAAc38uB,GAAOs7uB,EAAat7uB,UAC3Bs7uB,EAAat7uB,MAG5BwV,KAAK61B,QAAQmwsB,WAAWF,GACxB9luB,KAAKimuB,sBACLn8uB,OAAOO,KAAK88uB,GAAen1uB,QAAQxH,IAC/BwV,KAAKyluB,wBAAwBj7uB,GAC7BwV,KAAKuluB,YAAY/6uB,EAAK28uB,EAAc38uB,KAE5C,CACA,kBAAA82uB,CAAmBr9tB,GACf,MAAMzZ,EAAMwV,KAAKmmuB,oBAAoB,iBAAmBpnB,EACxD,IAAI+mB,EAAe9luB,KAAK61B,QAAQwrrB,aAChCmiB,GAAcv/tB,GACd6huB,EAAat7uB,GAAOyZ,EACpBjE,KAAK61B,QAAQmwsB,WAAWF,GACxB9luB,KAAKimuB,qBACT,CACA,kBAAA1E,GACI,MAAM/2uB,EAAMwV,KAAKmmuB,oBAAoB,iBAAmBpnB,EACxD/+sB,KAAK4iC,OAAOp4C,EAChB,CACA,qBAAA68uB,GACI,MAAM51oB,EAASzxF,KAAK4huB,gBACpB93uB,OAAOO,KAAKonG,GAAQz/F,QAAQxH,IACxBinG,EAAOjnG,GAAK48uB,eAAgB,IAEhCpnuB,KAAK21tB,UAAUlkoB,EACnB,EC7XJ,IAAImvnB,GAAc,CACd0mB,uBAAwB,WACpB,IACI,IAAIzxsB,EAAU71B,KAAKunuB,kBACnB,OAAOvnuB,KAAKwnuB,YAAY3xsB,EAC5B,CACA,MAAO7wC,GACH,OAAO,CACX,CACJ,EACAyivB,yBAA0B,WACtB,IACI,IAAI5xsB,EAAU71B,KAAK0nuB,oBACnB,OAAO1nuB,KAAKwnuB,YAAY3xsB,EAC5B,CACA,MAAO7wC,GACH,OAAO,CACX,CACJ,EACA2ivB,gBAAiB,SAAUnD,GACvB,IAAIrnc,GAAY,EAChB,OAAQqnc,GACJ,IAAK,iBACDrnc,EAAYn9R,KAAKynuB,2BACjB,MACJ,IAAK,eACDtqc,EAAYn9R,KAAKsnuB,yBACjB,MACJ,IAAK,SACL,IAAK,SACDnqc,GAAY,EACZ,MACJ,QACIA,GAAY,EAGpB,OAAOA,CACX,EACAyqc,iBAAkB,SAAUpD,EAAa50uB,GACrC,IAAI20uB,EACJ,OAAQC,GACJ,IAAK,iBACDD,EAAkBvkuB,KAAK0nuB,oBACvB,MACJ,IAAK,eACDnD,EAAkBvkuB,KAAKunuB,kBACvB,MACJ,IAAK,SACDhD,EAAkBvkuB,KAAK6nuB,iBAAiBj4uB,GACxC,MACJ,IAAK,SACD20uB,EAAkBvkuB,KAAK8nuB,qBACvB,MACJ,QACI,MAAM,IAAIvrB,EAAa,gCAAgCioB,KAE/D,OAAOD,CACX,EACAwD,gBAAiB,SAAUnke,GACvB,IAAIoke,EACAC,EAIJ,OAFAD,GADApke,EAAQA,EAAM9oQ,SACEotC,QAChB+/rB,EAAWrke,EAAMxvQ,OAASwvQ,EAAM,GAAK,KAChCqke,EAGDjouB,KAAK2nuB,gBAAgBK,GACdA,GAEXn7tB,EAAK,gCAAgCm7tB,mBAAyBC,MACvDjouB,KAAK+nuB,gBAAgBnke,IANjBoke,CAOf,EACAT,gBAAiB,WAIb,OAHI/nB,OAAmBr4tB,OAAO+gvB,YAC1B/gvB,OAAO+gvB,UAAY,WAAc,GAE9BhlpB,YACX,EACAwkpB,kBAAmB,WACf,OAAOx+oB,cACX,EACA2+oB,iBAAkB,SAAUj4uB,GACxB,MAAMg5F,EAASh5F,EAAQg5F,OACjBC,EAAWj5F,EAAQi5F,SACnBs/oB,EAAgBv4uB,EAAQu4uB,cAC9B,QAAsB,IAAXv/oB,QAA8C,IAAbC,EACxC,MAAM,IAAI0znB,EAAa,sEAE3B,MAAM1mrB,EAAU,CACZotD,QAASjjF,KAAK61B,QAAQhiC,IACtBuvF,QAAS,CAAC54F,EAAK7E,EAAOoiG,EAAY,8BAC9BA,EAAaogpB,EAAgB,KAAOpgpB,EACpC/nF,KAAK61B,QAAQ9hC,IAAIvJ,EAAK7E,EAAOoiG,EAAW,CACpCa,OAAQA,EACRC,SAAUA,KAGlB1F,WAAa34F,IACTwV,KAAK61B,QAAQY,OAAOjsC,KAG5B,OAAKoF,EAAQ80uB,mBAGN,CACHzhpB,QAAS,SAAUz4F,GACf,IAAIuL,EAAO8/B,EAAQotD,UACft9F,EAAQ,CAAC,EAMb,OALAmE,OAAOO,KAAK0L,GAAM/D,QAAQyf,IACC,IAAnBA,EAAElpB,QAAQiC,KACV7E,EAAM8rB,EAAE1tB,QAAQ,GAAGyG,KAAQ,KAAOmf,KAAKyuB,MAAMriC,EAAK0b,OAGnD9H,KAAKC,UAAUjkB,EAC1B,EACAy9F,QAAS,SAAU54F,EAAK7E,GACpB,IAAIyivB,EAAiBz+tB,KAAKyuB,MAAMp4B,KAAKijF,QAAQz4F,IAC7C7E,EAAQgkB,KAAKyuB,MAAMzyC,GACnBmE,OAAOO,KAAK1E,GAAOqM,QAAQyf,IACvB,IAAI22E,EAAa59F,EAAM,IAAMinB,EACzB42tB,EAAe1+tB,KAAKC,UAAUjkB,EAAM8rB,IACxCokB,EAAQutD,QAAQgF,EAAYigpB,UACrBD,EAAe32tB,KAE1B3nB,OAAOO,KAAK+9uB,GAAgBp2uB,QAAQyf,IAChCokB,EAAQstD,WAAW34F,EAAM,IAAMinB,IAEvC,EACA0xE,WAAY,SAAU34F,GAClB,IAAI49uB,EAAiBz+tB,KAAKyuB,MAAMp4B,KAAKijF,QAAQz4F,IAC7CV,OAAOO,KAAK+9uB,GAAgBp2uB,QAAQyf,IAChCokB,EAAQstD,WAAW34F,EAAM,IAAMinB,IAEvC,GA/BOokB,CAiCf,EACAyysB,cAAe,CAAC,EAChBR,mBAAoB,WAChB,MAAO,CACH7kpB,QAAUz4F,GACCwV,KAAKsouB,cAAc99uB,GAE9B44F,QAAS,CAAC54F,EAAK7E,KACXqa,KAAKsouB,cAAc99uB,GAAO7E,GAGtC,EACA6hvB,YAAa,SAAU3xsB,GACnB,IAAIrrC,EAAM,oBACV,IAGI,OAFAqrC,EAAQutD,QAAQ54F,EAAKA,GACrBqrC,EAAQstD,WAAW34F,IACZ,CACX,CACA,MAAOxF,GACH,OAAO,CACX,CACJ,EACA6wC,QAAS,CACL9hC,IAAK,SAAUR,EAAM5N,EAAOoiG,EAAWn4F,GACnC,MAAM,SAAEi5F,EAAQ,OAAED,GAAWh5F,EAC7B,QAAsB,IAAXg5F,QAA8C,IAAbC,EACxC,MAAM,IAAI0znB,EAAa,iEAE3B,IAAIgsB,EAAgB,CAChB1/pB,KAAMj5E,EAAQi5E,MAAQ,IACtB+f,SACAC,YAMJ,OAJOhgF,KAAKuvB,MAAM2vD,KACdwgpB,EAAchgpB,QAAU,IAAI1/E,KAAKk/E,IAErC,GAAQh0F,IAAIR,EAAM5N,EAAO4ivB,GAClBvouB,KAAKnM,IAAIN,EACpB,EACAM,IAAK,SAAUN,GACX,OAAKY,UAAUC,OAGR,GAAQP,IAAIN,GAFR,GAAQM,KAGvB,EACA4iC,OAAQ,SAAUljC,GACd,OAAO,GAAQqvC,OAAOrvC,EAAM,CAAEs1E,KAAM,KACxC,I,gBChLR,MACM2/pB,GAAkB,CACpBC,uBAAwB,KACxBC,cAAe,GAEbC,GAA0B,kBAWhC,MAAMC,GACF,WAAAnouB,CAAYo8sB,GACR,IAAKA,EAAIjolB,QACL,MAAM,IAAI2nlB,EAAa,yDAE3Bv8sB,KAAK6ouB,KAAOhsB,EACZ78sB,KAAK8ouB,SAAWh/uB,OAAOC,OAAO,CAAC,EAAGy+uB,IAClCxouB,KAAK+ouB,WAvBc,KAwBnB/ouB,KAAKgpuB,YAAc,CAAC,EACpBhpuB,KAAKipuB,eAAiB,KACtBjpuB,KAAKkpuB,gBAAkB,IAAI/Q,GAAa,CACpCC,OAAO,IAEXvb,EAAI6Y,aAAa/qnB,GAAGk5nB,GAAa,CAACr5uB,EAAKyZ,KACnCjE,KAAKmpuB,eAAe,CAAEh9tB,MAAO03tB,GAAar5uB,MAAKyZ,UAC/CjE,KAAKopuB,oBAETvsB,EAAI6Y,aAAa/qnB,GAAGm5nB,GAAe,CAACt5uB,EAAKyZ,KACrCjE,KAAKmpuB,eAAe,CAAEh9tB,MAAO23tB,GAAet5uB,MAAKyZ,UACjDjE,KAAKopuB,mBAEb,CACA,cAAAD,CAAev5uB,GACXoQ,KAAKgpuB,YAAcp5uB,CACvB,CACA,YAAAy5uB,GACI,OAAOrpuB,KAAK+ouB,UAChB,CACA,oBAAAO,GACI,OAAOtpuB,KAAKipuB,cAChB,CACA,qBAAMG,GACF,MAAM,mBAAEG,EAAkB,QAAEC,GAAYxpuB,KAAK6ouB,KAAKj5uB,QAC5C3J,EAAOknI,IACT,MAAM,MAAEhhH,EAAK,IAAE3hB,EAAG,MAAEyZ,GAAUjE,KAAKgpuB,YACnCpuB,IAAa7wsB,MAAM,uCAAuCoC,YAAgBghH,KAC1EytlB,IAAa30tB,IAAIuE,EAAKyZ,GACtB22sB,IAAa30tB,IAAI,oBAAqB+Z,KAAK+ouB,YAC3CnuB,IAAaE,WACb96sB,KAAKgpuB,YAAc,CAAC,GAElBS,EAAuBC,IAlDb,IAACpnY,EAAW3yW,IAmDa+5uB,GAnDxBpnY,EAmDOtiW,KAAK+ouB,aA/C1BzmY,EAAU3yQ,kBAAoBhgG,EAAMggG,iBACpChmF,KAAKC,UAAU04V,EAAU6gX,WAAax5sB,KAAKC,UAAUja,EAAMwztB,UAC3Dx5sB,KAAKC,UAAU04V,EAAUq+W,eAAiBh3sB,KAAKC,UAAUja,EAAMgxtB,cAC/Dr+W,EAAUr4V,QAAUta,EAAMsa,MA6CrBu/tB,GAAWvjvB,EAAI,cAGnB+Z,KAAKipuB,eAAiBjpuB,KAAK+ouB,WAC3B/ouB,KAAK+ouB,WAAaW,EAClB1puB,KAAK6ouB,KAAKj0mB,QAAQ/pH,KAAK89tB,GAAyB7+uB,OAAOC,OAAO,CAAC,EAAG2/uB,IAClEF,GAAWvjvB,EAAI,aAEb0jvB,EAAgBC,GACX5puB,KAAK8ouB,SAASL,uBAAuB5xuB,KAAK,KAC7C,MAAMgzuB,EAAa7puB,KAAK8ouB,SAASL,uBACjC,OAAIoB,GAAcA,IAAeD,EACtBD,EAAaE,GAEjB7puB,KAAKqpuB,iBAGpB,GAAIrpuB,KAAK8ouB,SAASL,uBAAwB,CACtC,GAAIzouB,KAAK8ouB,SAASJ,eAvEG,GAyEjB,OADAc,GAAWvjvB,EAAI,cACR0jvB,EAAa3puB,KAAK8ouB,SAASL,wBAGlCzouB,KAAK8ouB,SAASL,uBAAuB9lsB,QAE7C,CACA,MAAMmnsB,EAAoB,IAAI,GAAY,CAAClzuB,EAASgL,EAAGk1nB,KACnDA,EAASO,cAAe,EACxBP,EAAS,KACL92nB,KAAK8ouB,SAASL,uBAAyB,KACvCzouB,KAAK8ouB,SAASJ,cAAgB1ouB,KAAK8ouB,SAASJ,cAAgB,EAC5Dc,GAAWvjvB,EAAI,cAEnB,MAAM8jvB,EAAkBL,IAChBI,EAAkBpzG,WAClB9/nB,KAGJ6yuB,EAAoBC,GACpB9yuB,IACAoJ,KAAK8ouB,SAAWh/uB,OAAOC,OAAO,CAAC,EAAGy+uB,MAEtCxouB,KAAK6ouB,KAAKl5oB,kBACL94F,KAAK,KACN,GAAIizuB,EAAkBpzG,WAElB,YADA9/nB,IAGJ,MAAM,YAAE+ptB,EAAW,QAAEwC,EAAO,aAAEE,GAAiBrjtB,KAAK6ouB,KAAKnT,aAAakM,gBAChE8H,EAAY,CACd/oB,cACAwC,UACAE,eACA1znB,mBAAoBgxnB,IAAewC,KAEvBomB,EACVvpuB,KAAKkpuB,gBAAgBp1uB,KAAKy1uB,EAAoB,KAAMvpuB,KAAK6ouB,KAAMa,GAC/D/yuB,QAAQC,QAAQ8yuB,IAEjB7yuB,KAAK6yuB,GAAaK,EAAeL,IACjC77gB,MAAM5jN,GAAS8/tB,EAAe,CAC/BppB,cACAwC,UACAE,eACA1znB,iBAAiB,EACjB1lF,eAKZ,OADAjK,KAAK8ouB,SAASL,uBAAyBqB,EAChCH,EAAaG,EACxB,CACA,SAAAnmX,CAAUzlU,GACNl+C,KAAK6ouB,KAAKj0mB,QAAQjqB,GAAGg+nB,GAAyBzqrB,EAClD,CACA,WAAAqroB,CAAYrroB,GACRl+C,KAAK6ouB,KAAKj0mB,QAAQ3H,IAAI07mB,GAAyBzqrB,EACnD,EC/IJ,MAAM8rrB,GACF,WAAAvpuB,CAAYi1tB,EAAc9luB,EAAU,CAAC,GACjCoQ,KAAKiie,SAAU,EACfjie,KAAK01tB,aAAeA,EACpB11tB,KAAKpQ,QAAUA,EACfoQ,KAAKiquB,eAAiB,GACtBjquB,KAAKkquB,sBAAwBlquB,KAAKkquB,sBAAsBxurB,KAAK17C,KACjE,CACA,mBAAAmquB,GACI,IAAI/lsB,GAAM,EAEV,GADApkC,KAAKiquB,eAAen2uB,KAAK+U,KAAKC,OAC1B9I,KAAKiquB,eAAe71uB,QAAU,GAAI,CAClC,MAAM69sB,EAAYjysB,KAAKiquB,eAAe/hsB,QAEtC9D,EADiBpkC,KAAKiquB,eAAejquB,KAAKiquB,eAAe71uB,OAAS,GAChD69sB,EAAa,GACnC,CACA,OAAO7tqB,CACX,CACA,kBAAAgmsB,GACI,QAASpquB,KAAKpQ,QAAQs0uB,aAAejjV,IACzC,CACA,oBAAAopV,GACI,MACM54oB,EADezxF,KAAK01tB,aAAarU,aACXA,aAC5Bv3tB,OAAOO,KAAKonG,GAAQz/F,QAAQxH,IACxB,MAAMyZ,EAAQwtF,EAAOjnG,IAChB44tB,GAAen/sB,IAAUjE,KAAK01tB,aAAauP,WAAWhhuB,IACvDjE,KAAKkquB,sBAAsB1/uB,IAGvC,CACA,qBAAA0/uB,CAAsB1/uB,GAClB,GAAIwV,KAAKpQ,QAAQo0uB,UACb,GAAIhkuB,KAAKmquB,sBAAuB,CAC5B,MAAMlguB,EAAQ,IAAIsysB,EAAa,iCAC/Bv8sB,KAAK01tB,aAAa8P,UAAUv7tB,EAChC,MAEIjK,KAAK01tB,aAAauN,MAAMz4uB,GAAKqjO,MAAM,aAGlC7tN,KAAKpQ,QAAQq0uB,YAClBjkuB,KAAK01tB,aAAa9yrB,OAAOp4C,EAEjC,CACA,QAAAimsB,GACI,SAAUzwrB,KAAKpQ,QAAQo0uB,YAAehkuB,KAAKpQ,QAAQq0uB,YAAgBjkuB,KAAKiie,QAC5E,CACA,WAAMx1e,GACEuT,KAAKywrB,aACLzwrB,KAAK01tB,aAAa/qnB,GAAGg5nB,GAAe3juB,KAAKkquB,uBACrClquB,KAAK01tB,aAAaqP,aAClB/kuB,KAAKqquB,uBAETrquB,KAAKiie,SAAU,EAEvB,CACA,UAAMv8d,GACE1F,KAAKiie,UACLjie,KAAK01tB,aAAazomB,IAAI02mB,GAAe3juB,KAAKkquB,uBAC1ClquB,KAAKiquB,eAAiB,GACtBjquB,KAAKiie,SAAU,EAEvB,CACA,SAAA8iQ,GACI,OAAO/kuB,KAAKiie,OAChB,EC9EgCtre,QAAQC,SAAQ,GAA7C,IACI0zuB,GAAwB3zuB,QAAQC,SAAQ,GACxC2zuB,GAAwB5zuB,QAAQC,UACpC,SAAS85kB,GAAMpyf,EAAMkspB,GAE1B,OADKlspB,IAAMA,EAAO,GACX,IAAI3nF,QAAQ,SAAUytC,GAC3B,OAAO38B,WAAW,WAChB,OAAO28B,EAAIomsB,EACb,EAAGlspB,EACL,EACF,CAQO,SAASmspB,KACd,OAAOjlvB,KAAKm+F,SAAS38F,SAAS,IAAImiG,UAAU,EAC9C,CACA,IAAIuhpB,GAAS,EACTpjY,GAAa,EASV,SAASqjY,KACd,IAAIn8b,GAAK,IAAI3lS,MAAO48F,UACpB,OAAI+oM,IAAOk8b,GAEG,IAALl8b,KADP84D,IAGAojY,GAASl8b,EACT84D,GAAa,EACD,IAAL94D,EAEX,CCFO,IAAIo8b,GAAe,CACxBlquB,OA3CK,SAAgBmquB,GACrB,IAAIl7uB,EAAQ,CACVm7uB,iBAAkB,KAClB1vT,GAAI,IAAI0kT,iBAAiB+K,GACzBE,OAAQ,IAQV,OALAp7uB,EAAMyrb,GAAG90V,UAAY,SAAU6qD,GACzBxhJ,EAAMm7uB,kBACRn7uB,EAAMm7uB,iBAAiB35lB,EAAIp7I,KAE/B,EACOpG,CACT,EA+BE8d,MA9BK,SAAeu9tB,GACpBA,EAAa5vT,GAAG3ta,QAChBu9tB,EAAaD,OAAS,EACxB,EA4BEv4F,UAnBK,SAAmBw4F,EAAcl2uB,GACtCk2uB,EAAaF,iBAAmBh2uB,CAClC,EAkBEyxF,YA5BK,SAAqBykpB,EAAcC,GACxC,IAEE,OADAD,EAAa5vT,GAAG70V,YAAY0kpB,GAAa,GAClCV,EACT,CAAE,MAAO7hoB,GACP,OAAO/xG,QAAQyK,OAAOsnG,EACxB,CACF,EAsBEwioB,UAlBK,WACL,GAAuB,oBAAX/jvB,QAA0C,oBAATm7F,MAAqD,mBAArBw9oB,iBAM3E,OAAO,EALP,GAAIA,iBAAiBqL,QACnB,MAAM,IAAI5juB,MAAM,uGAElB,OAAO,CAIX,EAUEyI,KAjDgB,SAkDhBo7tB,oBAVK,WACL,OAAO,GACT,EASET,aApDwB,ICItBU,GAA8B,WAC9B,SAASA,EAAa3qc,GAClB1gS,KAAK0gS,IAAMA,EACX1gS,KAAKjN,IAAM,IAAIC,IAKfgN,KAAK6jC,KAAM,CACf,CAwBA,OAvBAwnsB,EAAajruB,UAAUzM,IAAM,SAAUhO,GACnC,OAAOqa,KAAKjN,IAAIY,IAAIhO,EACxB,EACA0lvB,EAAajruB,UAAU9M,IAAM,SAAU3N,GACnC,IAAIue,EAAQlE,KACZA,KAAKjN,IAAIgB,IAAIpO,EAAOmjB,MAOf9I,KAAK6jC,MACN7jC,KAAK6jC,KAAM,EACXp8B,WAAW,WACPvD,EAAM2/B,KAAM,EAerB,SAA4BynsB,GAO/B,IANA,IAAIC,EAAYziuB,KAAQwiuB,EAAa5qc,IACjCx+R,EAAWopuB,EAAav4uB,IAAIvO,OAAO0d,cAK1B,CACT,IAAIpa,EAAOoa,EAASpa,OAAOnC,MAC3B,IAAKmC,EACD,OAEJ,IAAInC,EAAQmC,EAAK,GAEjB,KADWA,EAAK,GACLyjvB,GAKP,OAJAD,EAAav4uB,IAAI0jC,OAAO9wC,EAMhC,CACJ,CApCgB6lvB,CAAmBtnuB,EACvB,EAAG,GAEX,EACAmnuB,EAAajruB,UAAU26D,MAAQ,WAC3B/6D,KAAKjN,IAAIgoE,OACb,EACOswqB,CACX,CAlCiC,GA+D1B,SAASviuB,KACZ,OAAO,IAAID,MAAO48F,SACtB,CCtEO,SAAS,KACd,IAAIgmoB,EAAkBt3uB,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvFvE,EAAU+Z,KAAKyuB,MAAMzuB,KAAKC,UAAU6huB,IA6BxC,YA1BwC,IAA7B77uB,EAAQ87uB,mBAAkC97uB,EAAQ87uB,kBAAmB,GAG3E97uB,EAAQ+7uB,MAAK/7uB,EAAQ+7uB,IAAM,CAAC,GAE5B/7uB,EAAQ+7uB,IAAIjrc,MAAK9wS,EAAQ+7uB,IAAIjrc,IAAM,MACnC9wS,EAAQ+7uB,IAAIC,mBAAkBh8uB,EAAQ+7uB,IAAIC,iBAAmB,KAE9DH,EAAgBE,KAA8C,mBAAhCF,EAAgBE,IAAIv3F,UAAwBxkpB,EAAQ+7uB,IAAIv3F,QAAUq3F,EAAgBE,IAAIv3F,SAGnHxkpB,EAAQg6F,eAAch6F,EAAQg6F,aAAe,CAAC,GAC9Ch6F,EAAQg6F,aAAaiipB,gBAAej8uB,EAAQg6F,aAAaiipB,cAAgB,KAG1EJ,EAAgBnthB,UAAS1uN,EAAQ0uN,QAAUmthB,EAAgBnthB,SAG1D1uN,EAAQ7I,OAAM6I,EAAQ7I,KAAO,CAAC,GAC9B6I,EAAQ7I,KAAK25S,MAAK9wS,EAAQ7I,KAAK25S,IAAM,MAKrC9wS,EAAQ7I,KAAK+kvB,oBAAmBl8uB,EAAQ7I,KAAK+kvB,kBAAoB,WAC9B,IAA7Bl8uB,EAAQ7I,KAAKglvB,cAA6Bn8uB,EAAQ7I,KAAKglvB,aAAc,GACzEn8uB,CACT,CCtBO,IAIHo8uB,GAAkB,WAMXC,GAAuB,CAChCC,WAAY,WAGP,SAASC,KACd,GAAyB,oBAAd/rB,UAA2B,OAAOA,UAC7C,GAAsB,oBAAXj5tB,OAAwB,CACjC,QAAmC,IAAxBA,OAAOilvB,aAA8B,OAAOjlvB,OAAOilvB,aAC9D,QAAsC,IAA3BjlvB,OAAOklvB,gBAAiC,OAAOllvB,OAAOklvB,gBACjE,QAAkC,IAAvBllvB,OAAOmlvB,YAA6B,OAAOnlvB,OAAOmlvB,WAC/D,CACA,OAAO,CACT,CAOO,SAASC,GAA2BhhP,GACrCA,EAAGihP,QACLjhP,EAAGihP,QAEP,CAuNA,SAASC,GAAU98uB,GACbA,EAAMw+F,QACVu+oB,GAAgB/8uB,GAAOkH,KAAK,WAC1B,OAAO65kB,GAAM/glB,EAAMC,QAAQ+7uB,IAAIC,iBACjC,GAAG/0uB,KAAK,WACN,OAAO41uB,GAAU98uB,EACnB,EACF,CAWA,SAAS+8uB,GAAgB/8uB,GAEvB,OAAIA,EAAMw+F,OAAeo8oB,GAGpB56uB,EAAMm7uB,iBAtKN,SAA+BvzT,EAAIo1T,GACxC,IAAIphP,EAAKh0E,EAAG89S,YAAY2W,GAAiB,WAAYC,IACjDzS,EAAcjuO,EAAGiuO,YAAYwS,IAC7BnmtB,EAAM,GACN+mtB,EAAgBC,YAAYjrhB,MAAM+qhB,EAAe,EAAGpnvB,KAOxD,GAAIi0uB,EAAYxwoB,OAAQ,CACtB,IAAI8jpB,EAAgBtT,EAAYxwoB,OAAO4jpB,GACvC,OAAO,IAAIj2uB,QAAQ,SAAUytC,EAAKC,GAChCyosB,EAAcp0f,QAAU,SAAUhwI,GAChC,OAAOrkE,EAAIqkE,EACb,EACAokoB,EAAcvT,UAAY,SAAUv0uB,GAClCo/C,EAAIp/C,EAAE+I,OAAOoF,OACf,CACF,EACF,CAYA,OAAO,IAAIwD,QAAQ,SAAUytC,EAAKC,GAChC,IAAI0osB,EAZN,WAIE,IAEE,OADAH,EAAgBC,YAAYjrhB,MAAM+qhB,EAAe,EAAGpnvB,KAC7Ci0uB,EAAYwT,WAAWJ,EAChC,CAAE,MAAO5nvB,GACP,OAAOw0uB,EAAYwT,YACrB,CACF,CAE0BA,GACxBD,EAAkBr0f,QAAU,SAAUhwI,GACpC,OAAOrkE,EAAIqkE,EACb,EACAqkoB,EAAkBxT,UAAY,SAAUxjb,GACtC,IAAIjpO,EAASipO,EAAGhoT,OAAOoF,OACnB25E,EACEA,EAAOnnF,MAAMoY,GAAK4uuB,EAAe,EACnC7/pB,EAAiB,SAAE6/pB,EAAe,IAElC9mtB,EAAI/xB,KAAKg5E,EAAOnnF,OAChBmnF,EAAiB,aAGnBy/pB,GAA2BhhP,GAC3Bnnd,EAAIve,GAER,CACF,EACF,CAkHSontB,CAAsBt9uB,EAAM4nb,GAAI5nb,EAAMg9uB,cAAc91uB,KAAK,SAAUq2uB,GACxE,IAAIC,EAAcD,EAKdj8uB,OAAO,SAAUm8uB,GACnB,QAASA,CACX,GAAGr6uB,IAAI,SAAUq6uB,GAIf,OAHIA,EAAOrvuB,GAAKpO,EAAMg9uB,eACpBh9uB,EAAMg9uB,aAAeS,EAAOrvuB,IAEvBqvuB,CACT,GAAGn8uB,OAAO,SAAUm8uB,GAClB,OA9BN,SAAwBA,EAAQz9uB,GAC9B,QAAIy9uB,EAAOhjC,OAASz6sB,EAAMy6sB,MACtBz6sB,EAAM09uB,KAAK15uB,IAAIy5uB,EAAOrvuB,KACtBqvuB,EAAOr3uB,KAAKuoF,KAAO3uF,EAAM29uB,qBAE/B,CAyBaC,CAAeH,EAAQz9uB,EAChC,GAAGyD,KAAK,SAAUo6uB,EAASC,GACzB,OAAOD,EAAQlvpB,KAAOmvpB,EAAQnvpB,IAChC,GAOA,OANA6upB,EAAYn7uB,QAAQ,SAAUo7uB,GACxBz9uB,EAAMm7uB,mBACRn7uB,EAAM09uB,KAAK/5uB,IAAI85uB,EAAOrvuB,IACtBpO,EAAMm7uB,iBAAiBsC,EAAOr3uB,MAElC,GACOw0uB,EACT,GA1BoCA,EA2BtC,CA2BO,IAAImD,GAAkB,CAC3BhtuB,OAxHK,SAAgBmquB,EAAaj7uB,GAElC,OADAA,EAAU,GAAwBA,GA7K7B,SAAwBi7uB,GAC7B,IAGI8C,EAnCU,8BAmCW9C,EAOrB+C,EAVYzB,KAUYp+oB,KAAK4/oB,GAQjC,OAPAC,EAAYvU,gBAAkB,SAAUtjb,GAC7BA,EAAGhoT,OAAOoF,OAChBmmuB,kBAAkB0S,GAAiB,CACpC6B,QAAS,KACTC,eAAe,GAEnB,EACO,IAAIn3uB,QAAQ,SAAUytC,EAAKC,GAChCupsB,EAAYl1f,QAAU,SAAUq9D,GAC9B,OAAO1xQ,EAAI0xQ,EACb,EACA63b,EAAYrU,UAAY,WACtBn1rB,EAAIwpsB,EAAYz6uB,OAClB,CACF,EACF,CAmJS46uB,CAAelD,GAAah0uB,KAAK,SAAU0gb,GAChD,IAAI5nb,EAAQ,CACVw+F,QAAQ,EACRw+oB,aAAc,EACd9B,YAAaA,EACbj7uB,QAASA,EACTw6sB,KAAMqgC,KAMN4C,KAAM,IAAIhC,GAA+B,EAAlBz7uB,EAAQ+7uB,IAAIjrc,KAEnCstc,kBAAmBzD,GACnBO,iBAAkB,KAClBmD,kBAAmB,GACnB12T,GAAIA,GAoBN,OAXAA,EAAG68N,QAAU,WACXzkpB,EAAMw+F,QAAS,EACXv+F,EAAQ+7uB,IAAIv3F,SAASxkpB,EAAQ+7uB,IAAIv3F,SACvC,EAOAq4F,GAAU98uB,GACHA,CACT,EACF,EAgFE8d,MA5BK,SAAeu9tB,GACpBA,EAAa78oB,QAAS,EACtB68oB,EAAazzT,GAAG9pa,OAClB,EA0BE+koB,UAdK,SAAmBw4F,EAAcl2uB,EAAIwpF,GAC1C0spB,EAAasC,qBAAuBhvpB,EACpC0spB,EAAaF,iBAAmBh2uB,EAChC43uB,GAAgB1B,EAClB,EAWEzkpB,YA1BK,SAAqBykpB,EAAcC,GASxC,OARAD,EAAagD,kBAAoBhD,EAAagD,kBAAkBn3uB,KAAK,WACnE,OA9OG,SAAsB0gb,EAAI22T,EAAYjD,GAC3C,IACIkD,EAAc,CAChB/jC,KAAM8jC,EACN5vpB,MAHS,IAAIz1E,MAAO48F,UAIpB1vG,KAAMk1uB,GAEJ1/O,EAAKh0E,EAAG89S,YAAY,CAAC2W,IAAkB,YAAaC,IACxD,OAAO,IAAIt1uB,QAAQ,SAAUytC,EAAKC,GAChCknd,EAAGkuO,WAAa,WACd,OAAOr1rB,GACT,EACAmnd,EAAG7yQ,QAAU,SAAUq9D,GACrB,OAAO1xQ,EAAI0xQ,EACb,EACkBw1M,EAAGiuO,YAAYwS,IACrB14uB,IAAI66uB,GAChB5B,GAA2BhhP,EAC7B,EACF,CA2NW6iP,CAAapD,EAAazzT,GAAIyzT,EAAa5gC,KAAM6gC,EAC1D,GAAGp0uB,KAAK,WACmB,IJ3SpBrR,KAAKQ,MAAsB,GAAhBR,KAAKm+F,SI2SP,IA5GX,SAA0BqnpB,GAC/B,OA1B6BzzT,EA0BPyzT,EAAazzT,GA1BF72I,EA0BMsqc,EAAap7uB,QAAQ+7uB,IAAIjrc,IAzB5D6qc,GAAY,IAAI1iuB,MAAO48F,UAAYi7L,EACnC6qN,EAAKh0E,EAAG89S,YAAY2W,GAAiB,WAAYC,IACjDzS,EAAcjuO,EAAGiuO,YAAYwS,IAC7BnmtB,EAAM,GACH,IAAIlvB,QAAQ,SAAUytC,GAC3Bo1rB,EAAYwT,aAAazT,UAAY,SAAUxjb,GAC7C,IAAIjpO,EAASipO,EAAGhoT,OAAOoF,OACvB,GAAI25E,EAAQ,CACV,IAAIuhqB,EAASvhqB,EAAOnnF,MAChB0ovB,EAAO/vpB,KAAOitpB,GAChB1ltB,EAAI/xB,KAAKu6uB,GAETvhqB,EAAiB,aAGjBy/pB,GAA2BhhP,GAC3Bnnd,EAAIve,GAER,MACEue,EAAIve,EAER,CACF,IAGqEhvB,KAAK,SAAUy3uB,GAClF,OA1CG,SAA4BtD,EAAcntuB,GAC/C,GAAImtuB,EAAa78oB,OACf,OAAOx3F,QAAQC,QAAQ,IAEzB,IACI4iuB,EADKwR,EAAazzT,GAAG89S,YAAY2W,GAAiB,YAAaC,IAC9CzS,YAAYwS,IACjC,OAAOr1uB,QAAQmvC,IAAIjoC,EAAI9K,IAAI,SAAUgL,GACnC,IAAIwwuB,EAAgB/U,EAAoB,OAAEz7tB,GAC1C,OAAO,IAAIpH,QAAQ,SAAUytC,GAC3BmqsB,EAAchV,UAAY,WACxB,OAAOn1rB,GACT,CACF,EACF,GACF,CA4BWoqsB,CAAmBxD,EAAcsD,EAAOv7uB,IAAI,SAAUo+I,GAC3D,OAAOA,EAAIpzI,EACb,GACF,GA9BK,IAAwBw5a,EAAI72I,EAC7B6qc,EACAhgP,EACAiuO,EACA3zsB,CA2BN,CAwGM4otB,CAAiBzD,EAErB,GACOA,EAAagD,iBACtB,EAiBE9C,UAXK,WACL,QAASiB,IACX,EAUEn8tB,KA9TgB,MA+ThBo7tB,oBAVK,SAA6Bx7uB,GAClC,OAAsC,EAA/BA,EAAQ+7uB,IAAIC,gBACrB,EASEjB,aA7UwB,ICSnB,SAASpD,KACd,IAAIrkpB,EACJ,GAAsB,oBAAX/7F,OAAwB,OAAO,KAC1C,IACE+7F,EAAe/7F,OAAO+7F,aACtBA,EAAe/7F,OAAO,8BAAgCA,OAAO+7F,YAC/D,CAAE,MAAOl+F,GAIT,CACA,OAAOk+F,CACT,CACO,SAASkF,GAAWyipB,GACzB,MArBe,2BAqBKA,CACtB,CAmFO,SAAS,KACd,IAAI6D,EAAKnH,KACT,IAAKmH,EAAI,OAAO,EAChB,IACE,IAAIlkvB,EAAM,2BACVkkvB,EAAGtrpB,QAAQ54F,EAAK,SAChBkkvB,EAAGvrpB,WAAW34F,EAChB,CAAE,MAAOxF,GAIP,OAAO,CACT,CACA,OAAO,CACT,CAUO,IAAI2pvB,GAAqB,CAC9BjuuB,OA9DK,SAAgBmquB,EAAaj7uB,GAElC,GADAA,EAAU,GAAwBA,IAC7B,KACH,MAAM,IAAI2X,MAAM,iDAElB,IAAI6isB,EAAOqgC,KAOP4C,EAAO,IAAIhC,GAAaz7uB,EAAQg6F,aAAaiipB,eAC7Cl8uB,EAAQ,CACVk7uB,YAAaA,EACbzgC,KAAMA,EACNijC,KAAMA,GAYR,OATA19uB,EAAMkkC,SAhCD,SAAiCg3sB,GACtC,IAAIrgvB,EAAM49F,GAAWyipB,GACjBh3sB,EAAW,SAAkBkiR,GA8BqB,IAAUq3b,EA7B1Dr3b,EAAGvrT,MAAQA,IA6B+C4ivB,EA5BzDzjuB,KAAKyuB,MAAM29Q,EAAGtnL,UA6Bd9+H,EAAMm7uB,kBACPsC,EAAOhjC,OAASA,GACfgjC,EAAOnpuB,QAASopuB,EAAK15uB,IAAIy5uB,EAAOnpuB,SACjCmpuB,EAAOr3uB,KAAKuoF,MAAQ8upB,EAAOr3uB,KAAKuoF,KAAO3uF,EAAM29uB,uBAEjDD,EAAK/5uB,IAAI85uB,EAAOnpuB,OAChBtU,EAAMm7uB,iBAAiBsC,EAAOr3uB,QAjChC,EAEA,OADA5O,OAAO+Q,iBAAiB,UAAW27B,GAC5BA,CACT,CAuBmB+6sB,CAAwB/D,GASlCl7uB,CACT,EAkCE8d,MAjCK,SAAeu9tB,GAjCf,IAAoCn3sB,IAkCdm3sB,EAAan3sB,SAjCxC1sC,OAAOgR,oBAAoB,UAAW07B,EAkCxC,EAgCE2+mB,UA/BK,SAAmBw4F,EAAcl2uB,EAAIwpF,GAC1C0spB,EAAasC,qBAAuBhvpB,EACpC0spB,EAAaF,iBAAmBh2uB,CAClC,EA6BEyxF,YAzGK,SAAqBykpB,EAAcC,GACxC,OAAO,IAAIt0uB,QAAQ,SAAUytC,GAC3BssiB,KAAQ75kB,KAAK,WACX,IAAIrM,EAAM49F,GAAW4ipB,EAAaH,aAC9BgE,EAAW,CACb5quB,MAAOwmuB,KACPnspB,MAAM,IAAIz1E,MAAO48F,UACjB1vG,KAAMk1uB,EACN7gC,KAAM4gC,EAAa5gC,MAEjBzktB,EAAQgkB,KAAKC,UAAUiluB,GAC3BtH,KAAkBnkpB,QAAQ54F,EAAK7E,GAO/B,IAAIowT,EAAKttT,SAASokQ,YAAY,SAC9BkpD,EAAGnoD,UAAU,WAAW,GAAM,GAC9BmoD,EAAGvrT,IAAMA,EACTurT,EAAGtnL,SAAW9oI,EACdwB,OAAO2lQ,cAAcipD,GACrB3xQ,GACF,EACF,EACF,EAgFE8msB,UAAW,GACXl7tB,KAtIgB,eAuIhBo7tB,oBAhBK,WACL,IACI78uB,EAAYD,UAAUC,UAAUnG,cACpC,OAAImG,EAAUonC,SAAS,YAAcpnC,EAAUonC,SAAS,UAE/Cm5sB,IAJS,GAOpB,EASEnE,aA1IwB,ICVf,GAAe,GAEtBoE,GAAoB,IAAI77uB,IAsCjB87uB,GAAiB,CAC1BtuuB,OAtCK,SAAgBmquB,GACrB,IAAIl7uB,EAAQ,CACV4D,KAAMs3uB,EACNC,iBAAkB,MAGpB,OADAiE,GAAkBz7uB,IAAI3D,GACfA,CACT,EAgCE8d,MA/BK,SAAeu9tB,GACpB+D,GAA0B,OAAE/D,EAC9B,EA8BEx4F,UAZK,SAAmBw4F,EAAcl2uB,GACtCk2uB,EAAaF,iBAAmBh2uB,CAClC,EAWEyxF,YA9BK,SAAqBykpB,EAAcC,GACxC,OAAO,IAAIt0uB,QAAQ,SAAUytC,GAC3B,OAAO38B,WAAW,WACGnT,MAAMuwB,KAAKkqtB,IACjB99uB,OAAO,SAAUyjlB,GAC5B,OAAOA,EAAQnhlB,OAASy3uB,EAAaz3uB,IACvC,GAAGtC,OAAO,SAAUyjlB,GAClB,OAAOA,IAAYs2J,CACrB,GAAG/5uB,OAAO,SAAUyjlB,GAClB,QAASA,EAAQo2J,gBACnB,GAAG94uB,QAAQ,SAAU0ilB,GACnB,OAAOA,EAAQo2J,iBAAiBG,EAClC,GACA7msB,GACF,EAAG,EACL,EACF,EAeE8msB,UAXK,WACL,OAAO,CACT,EAUEl7tB,KA7CgB,WA8ChBo7tB,oBAVK,WACL,OAAO,CACT,EASET,aAAc,IC1CZsE,GAAU,CAACrE,GAEf8C,GAAiBiB,ICDNO,GAA0B,IAAIh8uB,IACrCi8uB,GAAS,EACF,GAAmB,SAA0B57uB,EAAM3D,GA0L9D,IAAyB8klB,EACnB06J,ERlMoB98tB,EQSxBtS,KAAKjC,GAAKoxuB,KACVD,GAAwB57uB,IAAI0M,MAC5BA,KAAKzM,KAAOA,EAIZyM,KAAKpQ,QAAU,GAAwBA,GACvCoQ,KAAKukC,ODTA,SAAsB30C,GAC3B,IAAIy/uB,EAAgB,GAAGrhvB,OAAO4B,EAAQ0uN,QAAS2whB,IAASh+uB,OAAOg2F,SAK/D,GAAIr3F,EAAQogB,KAAM,CAChB,GAAqB,aAAjBpgB,EAAQogB,KAEV,OAAOg/tB,GAET,IAAInptB,EAAMwptB,EAAcx0uB,KAAK,SAAU1X,GACrC,OAAOA,EAAE6sB,OAASpgB,EAAQogB,IAC5B,GACA,GAAK6V,EAAwE,OAAOA,EAA1E,MAAM,IAAIte,MAAM,eAAiB3X,EAAQogB,KAAO,aAC5D,CAMKpgB,EAAQ87uB,mBACX2D,EAAgBA,EAAcp+uB,OAAO,SAAU9N,GAC7C,MAAkB,QAAXA,EAAE6sB,IACX,IAEF,IAAIs/tB,EAAYD,EAAcx0uB,KAAK,SAAU0pC,GAC3C,OAAOA,EAAO2msB,WAChB,GACA,GAAKoE,EAKH,OAAOA,EAJP,MAAM,IAAI/nuB,MAAM,6BAA+BoC,KAAKC,UAAUqluB,GAAQl8uB,IAAI,SAAU5P,GAClF,OAAOA,EAAE6sB,IACX,IAIJ,CC3BgB,CAAahQ,KAAKpQ,SAGhCoQ,KAAKuvuB,KAAM,EAOXvvuB,KAAKwvuB,MAAQ,KAKbxvuB,KAAKyvuB,OAAS,CACZr/oB,QAAS,GACT62hB,SAAU,IAQZjnnB,KAAK0vuB,KAAO,IAAIx8uB,IAOhB8M,KAAK2vuB,MAAQ,GAKb3vuB,KAAK4vuB,OAAS,MRrDUt9tB,EQkMpB88tB,GADmB16J,EA3IP10kB,MA4IWukC,OAAO7jC,OAAOg0kB,EAAQnhlB,KAAMmhlB,EAAQ9klB,WRjM7B,mBAAb0iB,EAAIzb,MQmMvB69kB,EAAQk7J,OAASR,EACjBA,EAAav4uB,KAAK,SAAU5T,GAK1ByxlB,EAAQ/ve,OAAS1hH,CACnB,IAEAyxlB,EAAQ/ve,OAASyqoB,CAtJrB,EAuHA,SAASS,GAAMC,EAAkB9/tB,EAAMmhI,GACrC,IACIi8lB,EAAS,CACX9upB,KAFSwxpB,EAAiBvrsB,OAAOomsB,eAGjC36tB,KAAMA,EACNja,KAAMo7I,GAGR,OADmB2+lB,EAAiBF,OAASE,EAAiBF,OAASrF,IACnD1zuB,KAAK,WACvB,IAAIk5uB,EAAcD,EAAiBvrsB,OAAOgiD,YAAYuppB,EAAiBnroB,OAAQyooB,GAO/E,OAJA0C,EAAiBJ,KAAKp8uB,IAAIy8uB,GAC1BA,EAAmB,QAAIl5uB,KAAK,WAC1B,OAAOi5uB,EAAiBJ,KAAa,OAAEK,EACzC,GACOA,CACT,EACF,CAgBA,SAASC,GAAqBt7J,GAC5B,OAAIA,EAAQ+6J,OAAOr/oB,QAAQh8F,OAAS,GAChCsglB,EAAQ+6J,OAAOxoH,SAAS7ynB,OAAS,CAEvC,CACA,SAAS67uB,GAAmBv7J,EAAS1kkB,EAAMsC,GACzCoikB,EAAQ+6J,OAAOz/tB,GAAMlc,KAAKwe,GAS5B,SAAyBoikB,GACvB,IAAKA,EAAQ66J,KAAOS,GAAqBt7J,GAAU,CAGjD,IAAIw7J,EAAa,SAAoB9C,GACnC14J,EAAQ+6J,OAAOrC,EAAOp9tB,MAAMhe,QAAQ,SAAUm+uB,GAU5C,IACIC,EAAiBD,EAAe7xpB,KADb,IAEnB8upB,EAAO9upB,MAAQ8xpB,GACjBD,EAAer7uB,GAAGs4uB,EAAOr3uB,KAE7B,EACF,EACIuoF,EAAOo2f,EAAQnwiB,OAAOomsB,eACtBj2J,EAAQk7J,OACVl7J,EAAQk7J,OAAO/4uB,KAAK,WAClB69kB,EAAQ66J,KAAM,EACd76J,EAAQnwiB,OAAOiumB,UAAU99D,EAAQ/ve,OAAQuroB,EAAY5xpB,EACvD,IAEAo2f,EAAQ66J,KAAM,EACd76J,EAAQnwiB,OAAOiumB,UAAU99D,EAAQ/ve,OAAQuroB,EAAY5xpB,GAEzD,CACF,CAzCE+xpB,CAAgB37J,EAClB,CACA,SAAS47J,GAAsB57J,EAAS1kkB,EAAMsC,GAC5CoikB,EAAQ+6J,OAAOz/tB,GAAQ0kkB,EAAQ+6J,OAAOz/tB,GAAM/e,OAAO,SAAU0yE,GAC3D,OAAOA,IAAMrxD,CACf,GAqCF,SAAwBoikB,GACtB,GAAIA,EAAQ66J,MAAQS,GAAqBt7J,GAAU,CAEjDA,EAAQ66J,KAAM,EACd,IAAIjxpB,EAAOo2f,EAAQnwiB,OAAOomsB,eAC1Bj2J,EAAQnwiB,OAAOiumB,UAAU99D,EAAQ/ve,OAAQ,KAAMrmB,EACjD,CACF,CA3CEiypB,CAAe77J,EACjB,CA9JA,GAAiBy2J,SAAU,EA4B3B,GAAiB/quB,UAAY,CAC3BmmF,YAAa,SAAqB4qD,GAChC,GAAInxI,KAAKmuF,OACP,MAAM,IAAI5mF,MAAM,gFAMhBoC,KAAKC,UAAUunI,IAEjB,OAAO0+lB,GAAM7vuB,KAAM,UAAWmxI,EAChC,EACAq/lB,aAAc,SAAsBr/lB,GAClC,OAAO0+lB,GAAM7vuB,KAAM,WAAYmxI,EACjC,EACA,aAAI7qD,CAAUxxF,GACZ,IACI27uB,EAAY,CACdnypB,KAFSt+E,KAAKukC,OAAOomsB,eAGrB71uB,GAAIA,GAENw7uB,GAAsBtwuB,KAAM,UAAWA,KAAKwvuB,OACxC16uB,GAAoB,mBAAPA,GACfkL,KAAKwvuB,MAAQiB,EACbR,GAAmBjwuB,KAAM,UAAWywuB,IAEpCzwuB,KAAKwvuB,MAAQ,IAEjB,EACAt3uB,iBAAkB,SAA0B8X,EAAMlb,GAMhDm7uB,GAAmBjwuB,KAAMgQ,EAJT,CACdsuE,KAFSt+E,KAAKukC,OAAOomsB,eAGrB71uB,GAAIA,GAGR,EACAqD,oBAAqB,SAA6B6X,EAAMlb,GAItDw7uB,GAAsBtwuB,KAAMgQ,EAHlBhQ,KAAKyvuB,OAAOz/tB,GAAMnV,KAAK,SAAUyX,GACzC,OAAOA,EAAIxd,KAAOA,CACpB,GAEF,EACA2Y,MAAO,WACL,IAAIvJ,EAAQlE,KACZ,IAAIA,KAAKmuF,OAAT,CAGA+gpB,GAAgC,OAAElvuB,MAClCA,KAAKmuF,QAAS,EACd,IAAIuipB,EAAe1wuB,KAAK4vuB,OAAS5vuB,KAAK4vuB,OAASrF,GAG/C,OAFAvquB,KAAKwvuB,MAAQ,KACbxvuB,KAAKyvuB,OAAOr/oB,QAAU,GACfsgpB,EAEN75uB,KAAK,WACJ,OAAOF,QAAQmvC,IAAIxxC,MAAMuwB,KAAK3gB,EAAMwruB,MACtC,GAEC74uB,KAAK,WACJ,OAAOF,QAAQmvC,IAAI5hC,EAAMyruB,MAAM58uB,IAAI,SAAU+B,GAC3C,OAAOA,GACT,GACF,GAEC+B,KAAK,WACJ,OAAOqN,EAAMqgC,OAAO92B,MAAMvJ,EAAMygG,OAClC,EApBA,CAqBF,EACA,QAAI30F,GACF,OAAOhQ,KAAKukC,OAAOv0B,IACrB,EACA,YAAI+ioB,GACF,OAAO/yoB,KAAKmuF,MACd,G,4BCjKEwipB,GAD0F,qBAAjF7mvB,OAAOsW,UAAUpZ,SAASqZ,UAAwB,IAAZ,GAA0B,GAAU,GCRhF,SAAiBvL,GACtB,GAAQ61G,GAAG,OAAQ,WACjB,OAAO71G,GACT,GAQA,GAAQ61G,GAAG,aAAc,WACvB,OAAO71G,IAAK+B,KAAK,WACf,OAAO,GAAQ02P,MACjB,EACF,GAEA,GAAQ5iJ,GAAG,SAAU,WACnB,OAAO71G,IAAK+B,KAAK,WACf,OAAO,GAAQ02P,MACjB,EACF,GAEA,GAAQ5iJ,GAAG,oBAAqB,SAAUjC,GACxC,OAAO5zG,IAAK+B,KAAK,WACf+7B,QAAQ2hG,MAAM7rB,GACd,GAAQ6kJ,KAAK,IACf,EACF,EACF,EC3BO,SAAoBz4P,GACzB,GAAiC,mBAAtBmjP,mBAAoC31J,gBAAgB21J,kBAAmB,CAOhF,IAAI24f,EAAWtupB,KAAK70E,MAAMiuC,KAAK4mC,MAC/BA,KAAK70E,MAAQ,WAEX,OADA3Y,IACO87uB,GACT,CACF,KAAO,CAKL,GAAuC,mBAA5BzpvB,OAAO+Q,iBAChB,OAMF/Q,OAAO+Q,iBAAiB,eAAgB,WACtCpD,GACF,GAAG,GAMH3N,OAAO+Q,iBAAiB,SAAU,WAChCpD,GACF,GAAG,EACL,CAMF,EFlCI+7uB,GAAY,IAAI39uB,IAChB49uB,IAAmB,EAyBhB,SAASC,KACd,IAAI5ssB,EAAW,GAKf,OAJA0ssB,GAAU7+uB,QAAQ,SAAU8C,GAC1BqvC,EAASrwC,KAAKgB,KACd+7uB,GAAkB,OAAE/7uB,EACtB,GACO6B,QAAQmvC,IAAI3B,EACrB,CGtCO,SAAS6ssB,GAAkBC,EAAer9oB,GAC/C,IAAIs9oB,EAAU,CACZ/ntB,QAAS,SACTyqE,OAAQA,EACR3vF,MAAOgtuB,EAAchtuB,OAEvB,OAAOgtuB,EAAcnB,iBAAiBU,aAAaU,EACrD,CACO,SAASC,GAASF,GACvBA,EAAcG,UAAW,EACzBH,EAAcI,YAAa,EAC3B,IAAIC,EHGC,SAAax8uB,GAElB,GARIg8uB,KAGJA,IAAmB,EACnBH,GAAWI,KAIO,mBAAPj8uB,EACT,MAAM,IAAIyS,MAAM,2BAYlB,OAVAspuB,GAAUv9uB,IAAIwB,GACE,CACd8tC,OAAQ,WACN,OAAOiusB,GAAkB,OAAE/7uB,EAC7B,EACA6wH,IAAK,WAEH,OADAkrnB,GAAkB,OAAE/7uB,GACbA,GACT,EAGJ,CGnBiB,CAAU,WACvB,OAAOm8uB,EAAcM,KACvB,GACAN,EAAcO,KAAK19uB,KAAKw9uB,GACxB,IAAIG,EAAmB,SAA0BtgmB,GAC3B,WAAhBA,EAAIhoH,SAAuC,UAAfgoH,EAAIv9C,QAClCo9oB,GAAkBC,EAAe,QAEf,WAAhB9/lB,EAAIhoH,SAAuC,SAAfgoH,EAAIv9C,QAAsBq9oB,EAAcS,QAStET,EAAcS,OAAQ,EACtBT,EAAcU,OACdX,GAAkBC,EAAe,QAErC,EAIA,OAFAA,EAAcnB,iBAAiB53uB,iBAAiB,WAAYu5uB,GAC5DR,EAAcW,OAAO99uB,KAAK29uB,GACnBT,GAAkBC,EAAe,OAC1C,CCnCO,IAAIY,GAAwB,SAA+B/B,EAAkBlgvB,GAClF,IAAIsU,EAAQlE,KACZA,KAAK8vuB,iBAAmBA,EACxBA,EAAiBH,MAAM77uB,KAAK,WAC1B,OAAOoQ,EAAMqtuB,KACf,GACAvxuB,KAAKnQ,SAAWD,EAChBoQ,KAAKoxuB,UAAW,EAChBpxuB,KAAK8xuB,QAAS,EACd9xuB,KAAKiE,MAAQwmuB,KACbzquB,KAAK4xuB,OAAS,GACd5xuB,KAAKwxuB,KAAO,GACZxxuB,KAAK2xuB,KAAO,WAAa,EACzB3xuB,KAAK0xuB,OAAQ,EAEb1xuB,KAAK+xuB,MAAQ,CAAC,EAGd/xuB,KAAKgyuB,GAAK,cAAgBlC,EAAiBvrsB,OAAOv0B,KAAO,KAAO8/tB,EAAiBv8uB,IACnF,EACAs+uB,GAAsBzxuB,UAAY,CAChC6xuB,UAAW,WACT,IAAI1koB,EAASvtG,KACb,OAAO1R,UAAU4jvB,MAAM9iK,QAAQv4kB,KAAK,SAAUq7uB,GAC5C,IAAIC,EAAgBD,EAAME,KAAOF,EAAME,KAAKnhvB,OAAO,SAAU2xF,GAC3D,OAAOA,EAAKrvF,OAASg6G,EAAOykoB,EAC9B,GAAK,GACL,SAAIG,GAAiBA,EAAc/9uB,OAAS,EAK9C,EACF,EACAi+uB,gBAAiB,WACf,IAAI/joB,EAAStuG,KACb,IAAKA,KAAKsyuB,MAAO,CACftyuB,KAAK+xuB,MAAMnsvB,EAAI,IAAI6gG,gBACnB,IAAI8rpB,EAAgB,IAAI57uB,QAAQ,SAAUytC,EAAKC,GAC7CiqE,EAAOyjoB,MAAM3tsB,IAAMA,EACnBkqE,EAAOyjoB,MAAM1tsB,IAAMA,CACrB,GACArkC,KAAKsyuB,MAAQ,IAAI37uB,QAAQ,SAAUytC,GACjC91C,UAAU4jvB,MAAMtqd,QAAQt5K,EAAO0joB,GAAI,CACjCtrpB,OAAQ4nB,EAAOyjoB,MAAMnsvB,EAAE8gG,QACtB,WAKD,OAHA4nB,EAAOyjoB,MAAMnsvB,OAAIkR,EACjBq6uB,GAAS7ioB,GACTlqE,IACOmusB,CACT,GAAU,MAAE,WAAa,EAC3B,EACF,CACA,OAAOvyuB,KAAKsyuB,KACd,EACA,eAAIE,CAAYnvsB,GAEhB,EACAkusB,IAAK,WACH,IAAIhjoB,EAASvuG,KAmBb,OAlBAA,KAAK4xuB,OAAO5/uB,QAAQ,SAAU6hC,GAC5B,OAAO06E,EAAOuhoB,iBAAiB33uB,oBAAoB,WAAY07B,EACjE,GACA7zB,KAAK4xuB,OAAS,GACd5xuB,KAAKwxuB,KAAKx/uB,QAAQ,SAAUygvB,GAC1B,OAAOA,EAAI7vsB,QACb,GACA5iC,KAAKwxuB,KAAO,GACRxxuB,KAAKoxuB,WACPpxuB,KAAKoxuB,UAAW,GAElBpxuB,KAAK8xuB,QAAS,EACV9xuB,KAAK+xuB,MAAM3tsB,KACbpkC,KAAK+xuB,MAAM3tsB,MAETpkC,KAAK+xuB,MAAMnsvB,GACboa,KAAK+xuB,MAAMnsvB,EAAE+gG,MAAM,sCAEdqqpB,GAAkBhxuB,KAAM,QACjC,GCpFF,IAAI0yuB,GAAiB,SAAwB5C,EAAkBlgvB,GAC7D,IAAIsU,EAAQlE,KACZA,KAAK8vuB,iBAAmBA,EACxB9vuB,KAAKnQ,SAAWD,EAChBoQ,KAAKoxuB,UAAW,EAChBpxuB,KAAKqxuB,YAAa,EAClBrxuB,KAAK8xuB,QAAS,EACd9xuB,KAAKiE,MAAQwmuB,KAObzquB,KAAK2yuB,MAAQpI,GAEbvquB,KAAK4yuB,OAAS,EAGd5yuB,KAAKwxuB,KAAO,GACZxxuB,KAAK4xuB,OAAS,GACd5xuB,KAAK2xuB,KAAO,WAAa,EACzB3xuB,KAAK0xuB,OAAQ,EAOb,IAAImB,EAAoB,SAA2B1hmB,GAC7B,WAAhBA,EAAIhoH,UACa,UAAfgoH,EAAIv9C,SACN1vF,EAAMmtuB,YAAa,GAEF,SAAflgmB,EAAIv9C,SACN1vF,EAAMmtuB,YAAa,GAGzB,EACArxuB,KAAK8vuB,iBAAiB53uB,iBAAiB,WAAY26uB,GACnD7yuB,KAAK4xuB,OAAO99uB,KAAK++uB,EACnB,EACAH,GAAetyuB,UAAY,CACzB6xuB,UAAW,WACT,OAAOt7uB,QAAQC,QAAQoJ,KAAKqxuB,WAC9B,EAMAyB,UAAW,SAEXC,GACE,IAAIxloB,EAASvtG,KACb,OAAIA,KAAKoxuB,SACA1gK,GAAM,GAAG,GAEd1wkB,KAAK8xuB,OACAphK,GAAM,GAAG,GAOd1wkB,KAAK4yuB,OAAS,EACT5yuB,KAAK2yuB,OAyFd3yuB,KAAK4yuB,OAAS5yuB,KAAK4yuB,OAAS,EAC5B5yuB,KAAK2yuB,MAAQ3yuB,KAAK2yuB,MAAM97uB,KAAK,WAC3B,OArFa,WAMb,GAAI02G,EAAO6joB,SACT,OAAO9G,GAET,IACI0I,EADAC,GAAe,EAQfC,EAAsB,IAAIv8uB,QAAQ,SAAUytC,GAC9C4usB,EAA6B,WAC3BC,GAAe,EACf7usB,GACF,CACF,GACI+usB,EAAgB,SAAuBhimB,GACrB,WAAhBA,EAAIhoH,SAAwBgoH,EAAIltI,OAASspG,EAAOtpG,QAC/B,UAAfktI,EAAIv9C,QAEFu9C,EAAIltI,MAAQspG,EAAOtpG,OAKrB+uuB,IAGe,SAAf7hmB,EAAIv9C,SAENo/oB,IACAzloB,EAAO8joB,YAAa,GAG1B,EACA9joB,EAAOuioB,iBAAiB53uB,iBAAiB,WAAYi7uB,GAYrD,IAAIC,EAAoBL,EAAwD,EAA/BxloB,EAAO19G,SAASwjvB,aAAmB9loB,EAAO19G,SAASwjvB,aACpG,OAAOrC,GAAkBzjoB,EAAQ,SAChC12G,KAAK,WACJ,OAAOF,QAAQ+Q,KAAK,CAACgpkB,GAAM0iK,GAAoBF,EAAoBr8uB,KAAK,WACtE,OAAOF,QAAQyK,OAAO,IAAImG,MAC5B,IACF,GAEC1Q,KAAK,WACJ,OAAOm6uB,GAAkBzjoB,EAAQ,QACnC,GAEC12G,KAAK,WACJ,OAAOF,QAAQ+Q,KAAK,CAACgpkB,GAAM0iK,GAAoBF,EAAoBr8uB,KAAK,WACtE,OAAOF,QAAQyK,OAAO,IAAImG,MAC5B,IACF,GAAU,MAAE,WAAa,GAAG1Q,KAAK,WAE/B,OADA02G,EAAOuioB,iBAAiB33uB,oBAAoB,WAAYg7uB,IACnDF,GAEI9B,GAAS5joB,GAAQ12G,KAAK,WAC3B,OAAO,CACT,EAKJ,EACF,CAGSy8uB,EACT,GAAGz8uB,KAAK,WACN02G,EAAOqloB,OAASrloB,EAAOqloB,OAAS,CAClC,GACO5yuB,KAAK2yuB,MAAM97uB,KAAK,WACrB,OAAO02G,EAAO6joB,QAChB,GACF,EACAiB,gBAAiB,WAKf,OAHCryuB,KAAKuzuB,OACJvzuB,KAAKuzuB,MA6BmBtC,EA7BSjxuB,MA8BnBoxuB,SACT7G,GAEF,IAAI5zuB,QAAQ,SAAUytC,GAC3B,IAAIE,GAAW,EACf,SAASsjM,IACHtjM,IAGJA,GAAW,EACX2ssB,EAAcnB,iBAAiB33uB,oBAAoB,WAAYq7uB,GAC/DpvsB,GAAI,GACN,CAGA6ssB,EAAc6B,YAAYj8uB,KAAK,WACzBo6uB,EAAcG,UAChBxpgB,GAEJ,GAMoB,SAAS6rgB,IAC3B,OAAO/iK,GAAMugK,EAAcphvB,SAAS+7uB,kBAAkB/0uB,KAAK,WACzD,IAAIo6uB,EAAca,SAAUxtsB,EAG5B,OAAI2ssB,EAAcG,cAChBxpgB,IAEOqpgB,EAAc6B,WAAU,GAAMj8uB,KAAK,WACpCo6uB,EAAcG,SAChBxpgB,IAEA6rgB,GAEJ,EAEJ,EACF,CACAA,GAGA,IAAID,EAAoB,SAA2BrimB,GAC7B,WAAhBA,EAAIhoH,SAAuC,UAAfgoH,EAAIv9C,SAClCq9oB,EAAcI,YAAa,EAC3BJ,EAAc6B,YAAYj8uB,KAAK,WACzBo6uB,EAAcG,UAChBxpgB,GAEJ,GAEJ,EACAqpgB,EAAcnB,iBAAiB53uB,iBAAiB,WAAYs7uB,GAC5DvC,EAAcW,OAAO99uB,KAAK0/uB,EAC5B,IAtFSxzuB,KAAKuzuB,KA2BhB,IAA8BtC,CA1B5B,EACA,eAAIuB,CAAY19uB,GACdkL,KAAK2xuB,KAAO78uB,CACd,EACAy8uB,IAAK,WACH,IAAIjjoB,EAAStuG,KAcb,OAbAA,KAAK4xuB,OAAO5/uB,QAAQ,SAAU6hC,GAC5B,OAAOy6E,EAAOwhoB,iBAAiB33uB,oBAAoB,WAAY07B,EACjE,GACA7zB,KAAK4xuB,OAAS,GACd5xuB,KAAKwxuB,KAAKx/uB,QAAQ,SAAUygvB,GAC1B,OAAOA,EAAI7vsB,QACb,GACA5iC,KAAKwxuB,KAAO,GACRxxuB,KAAKoxuB,WACPpxuB,KAAKqxuB,YAAa,EAClBrxuB,KAAKoxuB,UAAW,GAElBpxuB,KAAK8xuB,QAAS,EACPd,GAAkBhxuB,KAAM,QACjC,GChLF,MAAM0zuB,GACF,WAAAjzuB,CAAYi1tB,EAAc9luB,EAAU,CAAC,GACjCoQ,KAAKiie,SAAU,EACfjie,KAAK2zuB,mBAAoB,EACzB3zuB,KAAK01tB,aAAeA,EACpB11tB,KAAKpQ,QAAUA,EACfoQ,KAAK4zuB,oBAAsB5zuB,KAAK4zuB,oBAAoBl4rB,KAAK17C,MACzDA,KAAK6zuB,sBAAwB7zuB,KAAK6zuB,sBAAsBn4rB,KAAK17C,MAC7DA,KAAK8zuB,sBAAwB9zuB,KAAK8zuB,sBAAsBp4rB,KAAK17C,MAC7DA,KAAK+zuB,oBAAsB/zuB,KAAK+zuB,oBAAoBr4rB,KAAK17C,MACzDA,KAAKg0uB,qBAAuBh0uB,KAAKg0uB,qBAAqBt4rB,KAAK17C,KAC/D,CACA,kBAAAoquB,GACI,OAAO,CACX,CACA,SAAArF,GACI,OAAO/kuB,KAAKiie,OAChB,CACA,QAAAwuN,GACI,QAASzwrB,KAAKpQ,QAAQs0uB,aAAejjV,OAAgBjhZ,KAAKiie,OAC9D,CACA,WAAMx1e,GACF,IAAKuT,KAAKywrB,WACN,OAEJ,MAAM,gBAAEwjD,GAAoBj0uB,KAAKpQ,QACjC,IACIoQ,KAAK00kB,QAAU,IAAI,GAAiBu/J,EACxC,CACA,MAAOvroB,GACH,MAAM,IAAI6zmB,EAAa,0DAC3B,CACAv8sB,KAAK01tB,aAAa/qnB,GAAGk5nB,GAAa7juB,KAAK4zuB,qBACvC5zuB,KAAK01tB,aAAa/qnB,GAAGm5nB,GAAe9juB,KAAK6zuB,uBACzC7zuB,KAAK01tB,aAAa/qnB,GAAGi5nB,GAAe5juB,KAAK8zuB,uBACzC9zuB,KAAK01tB,aAAa/qnB,GAAGo5nB,GAAmB/juB,KAAK+zuB,qBAC7C/zuB,KAAK00kB,QAAQx8kB,iBAAiB,UAAW8H,KAAKg0uB,sBAC9Ch0uB,KAAKiie,SAAU,CACnB,CACA,UAAMv8d,GACF,IAAIlC,EAAIG,EACJ3D,KAAKiie,UACLjie,KAAK01tB,aAAazomB,IAAI42mB,GAAa7juB,KAAK4zuB,qBACxC5zuB,KAAK01tB,aAAazomB,IAAI62mB,GAAe9juB,KAAK6zuB,uBAC1C7zuB,KAAK01tB,aAAazomB,IAAI22mB,GAAe5juB,KAAK8zuB,uBAC1C9zuB,KAAK01tB,aAAazomB,IAAI82mB,GAAmB/juB,KAAK+zuB,qBACtB,QAAvBvwuB,EAAKxD,KAAK00kB,eAA4B,IAAPlxkB,GAAyBA,EAAGrL,oBAAoB,UAAW6H,KAAKg0uB,4BACjE,QAAvBrwuB,EAAK3D,KAAK00kB,eAA4B,IAAP/wkB,OAAgB,EAASA,EAAG8J,SACnEzN,KAAK00kB,aAAU59kB,EACfkJ,KAAKiie,SAAU,EAEvB,CACA,mBAAA2xQ,CAAoBppvB,EAAKyZ,GACrB,IAAIT,EACCxD,KAAK2zuB,oBAGc,QAAvBnwuB,EAAKxD,KAAK00kB,eAA4B,IAAPlxkB,GAAyBA,EAAG+iF,YAAY,CACpEv2E,KAAM6ztB,GACNr5uB,MACAyZ,UAER,CACA,qBAAA4vuB,CAAsBrpvB,EAAKyZ,GACvB,IAAIT,EACCxD,KAAK2zuB,oBAGc,QAAvBnwuB,EAAKxD,KAAK00kB,eAA4B,IAAPlxkB,GAAyBA,EAAG+iF,YAAY,CACpEv2E,KAAM8ztB,GACNt5uB,MACAyZ,UAER,CACA,qBAAA6vuB,CAAsBtpvB,EAAKyZ,EAAOohuB,GAC9B,IAAI7huB,EACCxD,KAAK2zuB,oBAGc,QAAvBnwuB,EAAKxD,KAAK00kB,eAA4B,IAAPlxkB,GAAyBA,EAAG+iF,YAAY,CACpEv2E,KAAM4ztB,GACNp5uB,MACAyZ,QACAohuB,aAER,CACA,mBAAA0O,CAAoBl+sB,GAChB,IAAIryB,EACoB,QAAvBA,EAAKxD,KAAK00kB,eAA4B,IAAPlxkB,GAAyBA,EAAG+iF,YAAY,CACpEv2E,KAAM+ztB,GACNlusB,WAER,CACA,oBAAAm+sB,CAAqB7imB,GAEjB,OADAnxI,KAAK2zuB,mBAAoB,EACjBximB,EAAInhI,MACR,KAAK+ztB,GACD/juB,KAAK01tB,aAAarU,aAAa2kB,WAAW70lB,EAAIt7G,SAC9C,MACJ,KAAKgusB,GACD7juB,KAAK01tB,aAAa4P,UAAUn0lB,EAAI3mJ,IAAK2mJ,EAAIltI,OACzCjE,KAAK01tB,aAAagQ,sBAAsBv0lB,EAAI3mJ,IAAK2mJ,EAAIltI,OACrD,MACJ,KAAK6/tB,GACD9juB,KAAK01tB,aAAa+P,wBAAwBt0lB,EAAI3mJ,KAC9CwV,KAAK01tB,aAAa6P,YAAYp0lB,EAAI3mJ,IAAK2mJ,EAAIltI,OAC3C,MACJ,KAAK2/tB,GACD5juB,KAAK01tB,aAAayP,YAAYh0lB,EAAI3mJ,IAAK2mJ,EAAIltI,MAAOktI,EAAIk0lB,UAG9DrluB,KAAK2zuB,mBAAoB,CAC7B,ECpHJ,MAAMO,GACF,WAAAzzuB,CAAY7Q,EAAU,CAAC,GACnBoQ,KAAKiie,SAAU,EACfjie,KAAKpQ,QAAUA,EACfoQ,KAAKm0uB,kBAAoBn0uB,KAAKm0uB,kBAAkBz4rB,KAAK17C,MACrDA,KAAKo0uB,SAAWp0uB,KAAKo0uB,SAAS14rB,KAAK17C,KACvC,CACA,iBAAAm0uB,GACA,CACA,cAAMC,GACF,IAAI5wuB,EAAIG,QACuC,QAAvCA,GAAMH,EAAKxD,KAAKpQ,SAASwkvB,gBAA6B,IAAPzwuB,OAAgB,EAASA,EAAGtD,KAAKmD,GAC5F,CACA,QAAA4tuB,GACI,IAAI5tuB,EACJ,SAAkC,QAAvBA,EAAKxD,KAAKq0uB,eAA4B,IAAP7wuB,OAAgB,EAASA,EAAG4tuB,SAC1E,CACA,SAAAa,GACI,IAAIzuuB,EACJ,SAAkC,QAAvBA,EAAKxD,KAAKq0uB,eAA4B,IAAP7wuB,OAAgB,EAASA,EAAGyuuB,UAC1E,CACA,WAAMxlvB,GACF,GAAIuT,KAAKywrB,WAAY,CACjB,MAAM,oBAAE6jD,GAAwBt0uB,KAAKpQ,QACrCoQ,KAAK00kB,QAAU,IAAI,GAAiB4/J,GACpCt0uB,KAAKq0uB,QFyOV,SAA8B3/J,EAAS9klB,GAC5C,GAAI8klB,EAAQ6/J,eACV,MAAM,IAAIhtuB,MAAM,iDAElB3X,EAfF,SAAiCA,EAAS8klB,GASxC,OARK9klB,IAASA,EAAU,CAAC,IACzBA,EAAU+Z,KAAKyuB,MAAMzuB,KAAKC,UAAUha,KACvBg8uB,mBACXh8uB,EAAQg8uB,iBAAmB,KAExBh8uB,EAAQyjvB,eACXzjvB,EAAQyjvB,aAAe3+J,EAAQnwiB,OAAO6msB,oBAAoB12J,EAAQ9klB,UAE7DA,CACT,CAKY,CAAwBA,EAAS8klB,GAC3C,IAAI2/J,EdhOqB,oBAAd/lvB,gBAAwD,IAApBA,UAAU4jvB,OAA4D,mBAA5B5jvB,UAAU4jvB,MAAMtqd,QcgOpE,IAAIiqd,GAAsBn9J,EAAS9klB,GAAW,IAAI8ivB,GAAeh+J,EAAS9klB,GAK/G,OAJA8klB,EAAQi7J,MAAM77uB,KAAK,WACjB,OAAOugvB,EAAQ9C,KACjB,GACA78J,EAAQ6/J,eAAiBF,EAClBA,CACT,CEpP2BG,CAAqBx0uB,KAAK00kB,SACzC10kB,KAAKq0uB,QAAQ7B,YAAcxyuB,KAAKm0uB,kBAChCn0uB,KAAKq0uB,QAAQhC,kBAAkBx7uB,KAAKmJ,KAAKo0uB,UACzCp0uB,KAAKiie,SAAU,CACnB,CACJ,CACA,UAAMv8d,GACE1F,KAAKiie,UACDjie,KAAKq0uB,gBACCr0uB,KAAKq0uB,QAAQ9C,MACnBvxuB,KAAKq0uB,aAAUv9uB,GAEfkJ,KAAK00kB,UACL10kB,KAAK00kB,QAAQ87J,aAAe,IAAM75uB,QAAQC,gBACpCoJ,KAAK00kB,QAAQjnkB,QACnBzN,KAAK00kB,aAAU59kB,GAEnBkJ,KAAKiie,SAAU,EAEvB,CACA,kBAAAmoQ,GACI,OAAO,CACX,CACA,SAAArF,GACI,OAAO/kuB,KAAKiie,OAChB,CACA,QAAAwuN,GACI,OAAOxvS,OAAgBjhZ,KAAKiie,OAChC,ECtDJ,MAAMwyQ,GAAS,IAAMjvvB,KAAKQ,MAAM6iB,KAAKC,MAAQ,KAC7C,MAAM4ruB,GACF,WAAAj0uB,CAAYi1tB,EAAc9luB,EAAU,CAAC,GACjCoQ,KAAKiie,SAAU,EACfjie,KAAK20uB,YAAc,EACnB30uB,KAAK01tB,aAAeA,EACpB11tB,KAAKpQ,QAAUA,EACfoQ,KAAK40uB,sBAAwB50uB,KAAK60uB,uBAAuBn5rB,KAAK17C,KAClE,CACA,sBAAA60uB,GACI,GAAIpsvB,SAAS0kD,OACTntC,KAAK20uB,WAAaF,UAEjB,GAAIz0uB,KAAK20uB,WAAa,GAAMF,KAAWz0uB,KAAK20uB,YAAc30uB,KAAKpQ,QAAQklvB,sBAAwB,CAChG,MAAM,YAAEn0B,EAAW,QAAEwC,GAAYnjtB,KAAK01tB,aAAakM,gBACnD,GAAMjhB,GAAe3gtB,KAAK01tB,aAAauP,WAAWtkB,GAAc,CAC5D,MAAMn2tB,EAAMwV,KAAK01tB,aAAayQ,oBAAoB,eAClDnmuB,KAAK01tB,aAAauN,MAAMz4uB,GAAKqjO,MAAM,OACvC,MACK,GAAMs1f,GAAWnjtB,KAAK01tB,aAAauP,WAAW9hB,GAAU,CACzD,MAAM34tB,EAAMwV,KAAK01tB,aAAayQ,oBAAoB,WAClDnmuB,KAAK01tB,aAAauN,MAAMz4uB,GAAKqjO,MAAM,OACvC,CACJ,CACJ,CACA,WAAMphO,GACEuT,KAAKywrB,YAAgBhosB,WACrBA,SAASyP,iBAAiB,mBAAoB8H,KAAK40uB,uBACnD50uB,KAAKiie,SAAU,EAEvB,CACA,UAAMv8d,GACEjd,WACAA,SAAS0P,oBAAoB,mBAAoB6H,KAAK40uB,uBACtD50uB,KAAKiie,SAAU,EAEvB,CACA,QAAAwuN,GACI,OAAOxvS,QACDjhZ,KAAKpQ,QAAQo0uB,aACbhkuB,KAAKpQ,QAAQmlvB,uBACd/0uB,KAAKiie,OACd,CACA,kBAAAmoQ,GACI,OAAO,CACX,CACA,SAAArF,GACI,OAAO/kuB,KAAKiie,OAChB,EC5CJ,MAAM+yQ,GAAa,YACbC,GAAe,cACfC,GAAkB,iBAClBC,GAA0B,uBAChC,MAAMC,GACF,WAAA30uB,CAAYo8sB,EAAKjttB,EAAU,CAAC,GACxBoQ,KAAK68sB,IAAMA,EACX78sB,KAAKo0uB,SAAWp0uB,KAAKo0uB,SAAS14rB,KAAK17C,MACnC,MAAM,UAAEgkuB,EAAS,WAAEC,EAAU,YAAEC,GAAgBrnB,EAAI6Y,aAAa1wa,aAChEp1T,EAAQ0kvB,oBAAsB1kvB,EAAQ0kvB,qBAAuB1kvB,EAAQylvB,qBACrEr1uB,KAAKpQ,QAAU9F,OAAOC,OAAO,CAAC,EAAGqrvB,GAAevgvB,eAAgB,CAAEmvuB,YAAWC,aAAYC,eAAe,CACpGoQ,oBAAqB,GAAGz3B,EAAIjttB,QAAQ21F,oBACpC0upB,gBAAiB,GAAGp3B,EAAIjttB,QAAQ21F,iBACjCw1nB,EAAWnrtB,IACdoQ,KAAKiie,SAAU,EACfjie,KAAKmhU,SAAW,IAAInuU,IACpBoivB,GAAeE,cAActjvB,QAAQuB,IACjC,MAAMgivB,EAAMv1uB,KAAKw1uB,cAAcjivB,GAC3BgivB,GACAv1uB,KAAKmhU,SAASptU,IAAIR,EAAMgivB,IAGpC,CACA,cAAMnB,GACEp0uB,KAAKiie,eACCjie,KAAKy1uB,eAEnB,CACA,QAAArE,GACI,IAAI5tuB,EACJ,OAAmD,QAA3CA,EAAKxD,KAAKkoQ,WAAWgte,WAAqC,IAAP1xuB,OAAgB,EAASA,EAAG4tuB,UAC3F,CACA,gBAAAsE,GACI,MAAO,IAAI11uB,KAAKmhU,SAASv4S,UAAUt2B,KAAKqjvB,GAAOA,EAAIllD,YAAcklD,EAAIvL,qBACzE,CACA,WAAM39uB,GACEuT,KAAKiie,gBAGHjie,KAAKy1uB,gBACXz1uB,KAAKiie,SAAU,EACnB,CACA,UAAMv8d,SACI1F,KAAK41uB,eACX51uB,KAAKiie,SAAU,CACnB,CACA,UAAA/5N,CAAW30Q,GACP,OAAOyM,KAAKmhU,SAASttU,IAAIN,EAC7B,CACA,mBAAMkivB,GACF,IAAK,MAAOlivB,EAAMoivB,KAAQ31uB,KAAKmhU,SAASj8Q,UAChCllD,KAAK61uB,gBAAgBtivB,EAAMoivB,UACrBA,EAAIlpvB,OAGtB,CACA,kBAAMmpvB,GACF,IAAK,MAAMD,KAAO31uB,KAAKmhU,SAASv4S,eACtB+stB,EAAIjwuB,MAElB,CACA,eAAAmwuB,CAAgBtivB,EAAMoivB,GAClB,IAAIllD,EAAWklD,EAAIllD,aAAeklD,EAAI5Q,YAOtC,OANIxxuB,IAAS2hvB,GACTzkD,IAAaA,EAAWzwrB,KAAK01uB,oBAExBC,EAAIvL,sBACT35C,IAAaA,EAAWzwrB,KAAKoxuB,YAE1B3gD,CACX,CACA,aAAA+kD,CAAcjivB,GACV,MAAMmiuB,EAAe11tB,KAAK68sB,IAAI6Y,aAC9B,IAAIppmB,EACJ,OAAQ/4H,GACJ,KAAK2hvB,GACD5onB,EAAU,IAAI4nnB,GAAsBpqvB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiW,KAAKpQ,SAAU,CAAEwkvB,SAAUp0uB,KAAKo0uB,YACpG,MACJ,KAAKY,GACD1onB,EAAU,IAAI09mB,GAAiBtU,EAAc5ruB,OAAOC,OAAO,CAAC,EAAGiW,KAAKpQ,UACpE,MACJ,KAAKqlvB,GACD3onB,EAAU,IAAIonnB,GAAmBhe,EAAc5ruB,OAAOC,OAAO,CAAC,EAAGiW,KAAKpQ,UACtE,MACJ,KAAKulvB,GACD7onB,EAAU,IAAIoonB,GAA4Bhf,EAAc5ruB,OAAOC,OAAO,CAAC,EAAGiW,KAAKpQ,UAC/E,MACJ,QACI,MAAM,IAAI2X,MAAM,mBAAmBhU,KAE3C,OAAO+4H,CACX,ECzFJ,SAASwpnB,GAAcj5B,GACnB,OAAOA,EAAIk5B,QAAQlivB,MACdgD,KAAK,SAAUutC,GAChB,MAAmB,WAAfA,EAAI+oF,MAIZ,GACK0gG,MAAM,WACP,OAAO,CACX,EACJ,CACA,SAAS8qb,GAAWkkE,GAChB,OAAOhptB,GAAIgptB,EAAK,sBAAuB,CAAE50b,iBAAiB,IACrDpxR,KAAK,SAAUk/uB,GAChB,IAAI3xsB,EAAMiyL,EAAK0/gB,EAAS,UAOxB,OANA3xsB,EAAImrO,QAAU,WACV,OAAOtzC,GAAK4gf,EAAK3B,EAAQ66B,EAAS,WAAW9npB,KAAM,CAAC,EAAG,CAAEg6L,iBAAiB,GAC9E,EACA7jP,EAAI4nD,KAAO,WACP,OAAOn4F,GAAIgptB,EAAK3B,EAAQ66B,EAAS,QAAQ9npB,KAAM,CAAEg6L,iBAAiB,GACtE,EACO7jP,CACX,GACKypL,MAAM,WACP,MAAO,CAAE1gG,OAAQ,WACrB,EACJ,CACA,SAAS6onB,GAAan5B,GAClB,OAAO2D,GAAY3D,EAAK,CACpBpvnB,IAAKovnB,EAAI4F,kBAAoB,sBAC7Bl+qB,OAAQ,SACR0jP,iBAAiB,GAEzB,CACA,SAASgud,GAAep5B,GACpB,OAAO5gf,GAAK4gf,EAAK,wCAAyC,CAAC,EAAG,CAAE50b,iBAAiB,GACrF,CACA,SAASiud,GAAqBr5B,EAAKiiB,EAAcqX,GAC7CA,EAAcA,GAAehvvB,OAAO8hG,SAASgF,KAC7C9mG,OAAO8hG,SAASl/F,OAAO8ytB,EAAI4F,kBAAoB,+BAC3CrG,EAAc,CACVg6B,2BAA2B,EAC3BnyuB,MAAO66tB,EACPqX,YAAaA,IAEzB,CC/CA,SAAS,GAAmBE,EAA2BC,EAAoBC,GACvE,MAAMrxc,ECHV,SAA4Boxc,GACxB,MAAME,EACF,WAAA/1uB,IAAepM,GACX,MAAMzE,EAAU,IAAI0mvB,EAAmBjivB,EAAKD,QAASC,EAAK,IAAW,CAAC,GACtE2L,KAAKpQ,QAAUmrtB,EAAWnrtB,GAC1BoQ,KAAK40H,QAAU,IAAI,GACnB50H,KAAK2+L,SAAW,CACpB,EAQJ,OANA63iB,EAAa73iB,SAAW,EACxB63iB,EAAa90Z,UAAY,EACzB80Z,EAAa73iB,SAAW63iB,EAAap2uB,UAAUu+L,SAAW,EAC1D70M,OAAOC,OAAOysvB,EAAc,CACxB90Z,UAAS,IAEN80Z,CACX,CDbiB,CAAmBF,GAC1BG,EETV,SAAsBvxc,EAAMwxc,GACxB,OAAO,cAA8Bxxc,EACjC,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT,MAAM,eAAEystB,EAAc,QAAEE,EAAO,YAAEJ,GAAgB5gtB,KAAKpQ,QACtDoQ,KAAK8gtB,eAAiB,IAAI41B,EAAe51B,EAAgBE,EAASJ,EACtE,CACA,YAAAyb,GACA,EAER,CFDwB,CAAan3b,EAAMmxc,GACjCM,EGLV,SAAmBzxc,GACf,OAAO,cAA2BA,EAC9B,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAKuhtB,eAAiB,IAAIiV,GAC1Bx2tB,KAAK4nnB,KAAO,CACR38V,iBAAkBA,GAAiBvvO,KAAK,KAAM17C,MAEtD,CACA,UAAA42uB,CAAW5vpB,GACPhnF,KAAKpQ,QAAQo3F,QAAUl9F,OAAOC,OAAO,CAAC,EAAGiW,KAAKpQ,QAAQo3F,QAASA,EACnE,CACA,eAAAy7nB,GACI,OAAOzitB,KAAKpQ,QAAQy7F,OAAOnqG,MAAM,YAAY,EACjD,CACA,SAAA21vB,CAAU9mtB,GAON,OAAOl8B,GAAImM,KAND,yBAA2Bo8sB,EAAcrsrB,GACrC,CACVi3D,QAAS,CACL,OAAU,yBAItB,EAER,CHpBqB,CAAUyvpB,GAGrBK,EIPV,SAAmB5xc,GACf,OAAO,cAA2BA,EAC9B,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAK+2uB,iBAAmB,IAAInO,GAAiB5ouB,MAC7CA,KAAKg3uB,eAAiB,IAAI5B,GAAep1uB,KAAMA,KAAKpQ,QAAQuxU,SAChE,CACA,WAAM10U,SACIuT,KAAKg3uB,eAAevqvB,QAC1BuT,KAAK01tB,aAAajpuB,QACbuT,KAAKiE,MAAMs/tB,yBACNvjuB,KAAK+2uB,iBAAiB3N,iBAEpC,CACA,UAAM1juB,GACF1F,KAAK01tB,aAAahwtB,aACZ1F,KAAKg3uB,eAAetxuB,MAC9B,CACA,oBAAMuxuB,CAAeC,SACXl3uB,KAAKm3uB,yBAAoBrgvB,EAAWogvB,EAC9C,CACA,yBAAMC,CAAoB1lpB,EAAQylpB,GAC9B,IAAIvnvB,EAAQqQ,KAAKpQ,QAAQD,MACzB,GAAI8hG,EACAzxF,KAAK01tB,aAAaC,UAAUlkoB,GAC5BylpB,EAAcA,GAAel3uB,KAAKo3uB,eAAep3uB,KAAKpQ,QAAQD,WAE7D,KAAIqQ,KAAKujuB,kBAaV,OAZA,IAEI5zuB,SAD4BywuB,GAA0BpguB,KAAM,CAAC,IACvCrQ,MACtBunvB,EAAcA,GAAel3uB,KAAKo3uB,eAAeznvB,SAC3CqQ,KAAKq3uB,yBACf,CACA,MAAOryvB,GAEH,YADMgb,KAAK+2uB,iBAAiB3N,kBACtBpkvB,CACV,CAIJ,OACMgb,KAAK+2uB,iBAAiB3N,kBAC5BppuB,KAAKs3uB,kBAAkB3nvB,GACvB,MAAM,mBAAE4nvB,GAAuBv3uB,KAAKpQ,QAChC2nvB,QACMA,EAAmBv3uB,KAAMk3uB,GAE1BA,GACL/vvB,OAAO8hG,SAASllG,QAAQmzvB,EAEhC,CACA,sBAAAM,CAAuB/ppB,EAAMtmG,OAAO8hG,SAASgF,MACzC,MAAM7pD,EAAMg8rB,GAA0BpguB,KAAM,CAAEy9sB,aAAc,QAAShwnB,QACrE,IAAIrpD,EAAIz0C,MAMJ,MAAM,IAAI4stB,EAAa,oCANZ,CACX,MAAM7nI,EAAU,IAAIorJ,iBAAiB,kBAAkB17rB,EAAIz0C,SAC3D+klB,EAAQnuf,YAAYniD,GACpBswiB,EAAQjnkB,OACZ,CAIJ,EAER,CJzDiBgquB,CKMjB,SAAoBvyc,EAAMqxc,GACtB,IAAI/yuB,EACJ,MAAMk0uB,GClBkBC,EDkBmBzyc,ECjBpC,cAA8Byyc,EACjC,cAAAC,CAAeV,EAAavnvB,GACDixtB,GAAY8mB,oBACpBtkpB,QAAQ47nB,EAA2Bk4B,IAClDvnvB,EAAQA,GAASqQ,KAAKpQ,QAAQD,QAEJqQ,KAAK8gtB,eAAe+2B,wBAC5Bz0pB,QAAQzzF,EAAOunvB,EAErC,CACA,cAAAE,CAAeznvB,GAEX,GADAA,EAAQA,GAASqQ,KAAKpQ,QAAQD,MACnB,CACP,MACMunvB,EADgBl3uB,KAAK8gtB,eAAe+2B,wBACR50pB,QAAQtzF,GAC1C,GAAIunvB,EACA,OAAOA,CAEf,CACA,MAAMrhtB,EAAU+qrB,GAAY8mB,oBAC5B,OAAO7xsB,GAAUA,EAAQotD,QAAQ+7nB,SAA0ClotB,CAC/E,CACA,iBAAAwgvB,CAAkB3nvB,GAId,GAHgBixtB,GAAY8mB,oBACpBvkpB,WAAW67nB,GACnBrvtB,EAAQA,GAASqQ,KAAKpQ,QAAQD,MACnB,CACP,MAAMmovB,EAAgB93uB,KAAK8gtB,eAAe+2B,wBAC1CC,EAAc30pB,YAAc20pB,EAAc30pB,WAAWxzF,EACzD,CACJ,IA/BR,IAA4BgovB,EDmBxB,OAAOn0uB,EAAK,cAA4Bk0uB,EAChC,WAAAj3uB,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAKirF,mBAAqB,IAAIsrpB,EAA8BzsvB,OAAOC,OAAO,CACtE+2tB,eAAgB9gtB,KAAK8gtB,gBACtB9gtB,KAAKpQ,QAAQq7F,qBAChBjrF,KAAK69sB,KAAO,CACRsB,8BAA+BqZ,GAAKrZ,8BACpCsZ,iBAAkBD,GAAKC,iBACvBE,iBAAkBH,GAAKG,kBAE3B34tB,KAAK8ouB,SAAW,CAAEiP,aAAa,GAC/B/3uB,KAAKg4uB,YAAc,IAAI7f,GACvBn4tB,KAAKiE,MAAQ0+tB,GAAe3iuB,KAAMA,KAAKg4uB,aACvCh4uB,KAAK01tB,aAAe,IAAI2O,GAAarkuB,KAAMA,KAAKpQ,QAAQ8luB,cACxD11tB,KAAKi4uB,UlCkCV,CACHC,UAAW,CACP5V,oBAAqBA,GAAoB5mrB,KAAK,KkCpCT17C,OACrC,CACA,YAAAq8tB,GACIhprB,MAAMgprB,eACNr8tB,KAAK01tB,aAAa36pB,OACtB,CACA,qBAAM40B,CAAgB//F,EAAU,CAAC,GAC7B,MAAM,UAAEo0uB,EAAS,WAAEC,GAAejkuB,KAAK01tB,aAAa1wa,aAC9Cgib,EAAcp3uB,EAAQuovB,eAA4C,UAA3BvovB,EAAQuovB,eAA6BnU,EAC5EoU,EAAexovB,EAAQuovB,eAA4C,WAA3BvovB,EAAQuovB,eAA8BlU,EACpF,IAAI,YAAEtjB,GAAgB3gtB,KAAK01tB,aAAakM,gBACxC,GAAIjhB,GAAe3gtB,KAAK01tB,aAAauP,WAAWtkB,GAE5C,GADAA,OAAc7ptB,EACVkwuB,EACA,IACIrmB,QAAoB3gtB,KAAK01tB,aAAauN,MAAM,cAChD,CACA,MAAOz/tB,GACP,MAEK40uB,GACLp4uB,KAAK01tB,aAAa9yrB,OAAO,eAGjC,IAAI,QAAEugrB,GAAYnjtB,KAAK01tB,aAAakM,gBACpC,GAAIze,GAAWnjtB,KAAK01tB,aAAauP,WAAW9hB,GAExC,GADAA,OAAUrstB,EACNkwuB,EACA,IACI7jB,QAAgBnjtB,KAAK01tB,aAAauN,MAAM,UAC5C,CACA,MAAOt/tB,GACP,MAEKy0uB,GACLp4uB,KAAK01tB,aAAa9yrB,OAAO,WAGjC,SAAU+9qB,IAAewC,EAC7B,CACA,wBAAMk1B,CAAmBtotB,EAAO,CAAC,GAC7B,MAAM,YAAEmntB,GAAgBnntB,EAAMuotB,EAAmBh1B,GAAOvzrB,EAAM,CAAC,gBAC/D,IAAI/vB,KAAK8ouB,SAASiP,YAAlB,CAGA/3uB,KAAK8ouB,SAASiP,aAAc,EAC5B,IACQb,GACAl3uB,KAAK43uB,eAAeV,GAExB,MAAM/2rB,EAASr2D,OAAOC,OAAO,CACzBqqC,OAAQp0B,KAAKpQ,QAAQwkC,QAAU,CAAC,SAAU,QAAS,YACpDkktB,SACGt4uB,KAAKiE,MAAM+7tB,gBAAgB7/qB,EACrC,CACA,QACIngD,KAAK8ouB,SAASiP,aAAc,CAChC,CAbA,CAcJ,CACA,aAAMrppB,GACF,MAAM,QAAEy0nB,EAAO,YAAExC,GAAgB3gtB,KAAK01tB,aAAakM,gBACnD,OAAO5huB,KAAKiE,MAAMi/tB,YAAYviB,EAAawC,EAC/C,CACA,UAAAv7nB,GACI,MAAM,QAAEu7nB,GAAYnjtB,KAAK01tB,aAAakM,gBACtC,OAAOze,EAAUA,EAAQA,aAAUrstB,CACvC,CACA,cAAAyhvB,GACI,MAAM,YAAE53B,GAAgB3gtB,KAAK01tB,aAAakM,gBAC1C,OAAOjhB,EAAcA,EAAYA,iBAAc7ptB,CACnD,CACA,eAAA0hvB,GACI,MAAM,aAAEn1B,GAAiBrjtB,KAAK01tB,aAAakM,gBAC3C,OAAOve,EAAeA,EAAaA,kBAAevstB,CACtD,CACA,2BAAM2hvB,GACF,IAAIj1uB,EACJ,MAAM,YAAEm9sB,GAAgB3gtB,KAAK01tB,aAAakM,gBAC1C,GAAIjhB,IAAgB3gtB,KAAK01tB,aAAauP,WAAWtkB,GAC7C,OAAOA,EAAYA,YAEvB,IACI,MAAMn2tB,EAAMwV,KAAK01tB,aAAayQ,oBAAoB,eAC5CliuB,QAAcjE,KAAK01tB,aAAauN,MAAMz4uB,QAAiCA,EAAM,eACnF,OAAkF,QAA1EgZ,EAAKS,aAAqC,EAASA,EAAM08sB,mBAAgC,IAAPn9sB,EAAgBA,EAAK,IACnH,CACA,MAAOklG,GAEH,OADA1oG,KAAK40H,QAAQ/pH,KAAK,QAAS69F,GACpB,IACX,CACJ,CACA,6BAAM2uoB,GACF,MAAM,OAAE5lpB,EAAM,aAAE03L,SAAuBnpR,KAAKiE,MAAMs8tB,eAC7B,SAAjBp3c,GACAnpR,KAAK01tB,aAAaC,UAAUlkoB,EAEpC,CACA,eAAA8xoB,GACI,OAAO,GAAgBvjuB,KAC3B,CACA,MAAA04uB,GACI,QAAS14uB,KAAKpQ,QAAQiutB,IAC1B,CACA,eAAA86B,CAAgBxvd,GACZ,OrEvHhB,SAAyBA,EAAcv5R,GACnC,IAAI+ovB,GAAkB,EAOtB,OALIA,EADArkvB,MAAMyb,QAAQngB,EAAQu5R,eAAiBv5R,EAAQu5R,aAAa/0R,OAC1CxE,EAAQu5R,aAAa5gS,QAAQ4gS,IAAiB,EAG9Cv5R,EAAQu5R,eAAiBA,EAExCwvd,CACX,CqE8GuB,CAAgBxvd,EAAcnpR,KAAKpQ,QAC9C,CACA,uBAAAgpvB,GACI,OAAO54uB,KAAK24uB,gBAAgB,OAChC,CACA,qBAAME,CAAgBjpvB,GAClB,IAAKA,EAAQ+wtB,YAAa,CACtB,MAAMA,SAAqB3gtB,KAAK01tB,aAAajH,aAAa9N,YAC1D/wtB,EAAQ+wtB,YAAcA,aAAiD,EAASA,EAAYA,WAChG,CACA,OAAOH,GAAYxgtB,KAAMpQ,EAC7B,CACA,uBAAMkpvB,CAAkBn4B,GACpB,IAAKA,EAAa,CACd,MAAMlvnB,QAAezxF,KAAK01tB,aAAajH,YACvC9N,EAAclvnB,EAAOkvnB,YACrB,MAAMo4B,EAAiB/4uB,KAAK01tB,aAAayQ,oBAAoB,eAC7DnmuB,KAAK01tB,aAAa9yrB,OAAOm2sB,GACrB/4uB,KAAKpQ,QAAQipuB,YACPgB,GAA4B,SAAUpooB,EAEpD,CACA,OAAKkvnB,EAGE3gtB,KAAKiE,MAAM++tB,OAAOriB,GAFdhqtB,QAAQC,QAAQ,KAG/B,CACA,wBAAMoivB,CAAmB31B,GACrB,IAAKA,EAAc,CACf,MAAM5xnB,QAAezxF,KAAK01tB,aAAajH,YACvCpL,EAAe5xnB,EAAO4xnB,aACtB,MAAM41B,EAAkBj5uB,KAAK01tB,aAAayQ,oBAAoB,gBAC9DnmuB,KAAK01tB,aAAa9yrB,OAAOq2sB,GACrBj5uB,KAAKpQ,QAAQipuB,YACPgB,GAA4B,UAAWpooB,EAErD,CACA,OAAK4xnB,EAGErjtB,KAAKiE,MAAM++tB,OAAO3f,GAFd1stB,QAAQC,QAAQ,KAG/B,CACA,qBAAAsivB,CAAsBtpvB,EAAU,CAAC,GAC7B,IAAI,QAAEuztB,EAAO,sBAAEg2B,EAAqB,MAAExpvB,GAAWC,EAIjD,GAHKuztB,IACDA,EAAUnjtB,KAAK01tB,aAAakM,gBAAgBze,UAE3CA,EACD,MAAO,QAEmBrstB,IAA1BqivB,IACAA,EAAwBn5uB,KAAKpQ,QAAQupvB,uBAEzC,MAAMh8B,EAAYJ,EAAa/8sB,MAAMm9sB,UAC/Bi8B,EAAcj2B,EAAQA,QAC5B,IAAIk2B,EAAYl8B,EAAY,kBAAoB70nB,mBAAmB8wpB,GAOnE,OANID,IACAE,GAAa,6BAA+B/wpB,mBAAmB6wpB,IAE/DxpvB,IACA0pvB,GAAa,UAAY/wpB,mBAAmB34F,IAEzC0pvB,CACX,CACA,aAAMC,CAAQ1pvB,GACV,IAAI4T,EACJ5T,EAAU9F,OAAOC,OAAO,CAAC,EAAG6F,GAC5B,MAAM2pvB,EAAapyvB,OAAO8hG,SAAS+E,OAC7BwrpB,EAAaryvB,OAAO8hG,SAASgF,KAC7BkrpB,EAA0D,OAAlCvpvB,EAAQupvB,sBAAiC,KAClEvpvB,EAAQupvB,uBACFn5uB,KAAKpQ,QAAQupvB,uBACbI,EACL5pvB,EAAQC,aAAyC,EAASA,EAAQD,MACxE,IAAIgxtB,EAAc/wtB,EAAQ+wtB,YACtB0C,EAAezztB,EAAQyztB,aAC3B,MAAMy1B,GAAkD,IAA9BlpvB,EAAQkpvB,kBAC5BE,GAAoD,IAA/BppvB,EAAQopvB,mBAC/BA,QAA8C,IAAjB31B,IAC7BA,EAAerjtB,KAAK01tB,aAAakM,gBAAgBve,cAEjDy1B,QAA4C,IAAhBn4B,IAC5BA,EAAc3gtB,KAAK01tB,aAAakM,gBAAgBjhB,aAE/C/wtB,EAAQuztB,UACTvztB,EAAQuztB,QAAUnjtB,KAAK01tB,aAAakM,gBAAgBze,SAEpD61B,GAAsB31B,SAChBrjtB,KAAKg5uB,mBAAmB31B,GAE9By1B,GAAqBn4B,SACf3gtB,KAAK84uB,kBAAkBn4B,GAEjC,MAAMsZ,EAAyG,QAA3Fz2tB,EAAKm9sB,aAAiD,EAASA,EAAYsZ,kBAA+B,IAAPz2tB,EAAgBA,EAAK6/sB,aAAmD,EAASA,EAAa4W,WACjNj6tB,KAAKpQ,QAAQipuB,MAAQoB,SACfL,GAAiBK,GAE3B,MAAMof,EAAYr5uB,KAAKk5uB,sBAAsBpvvB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,GAAU,CAAEupvB,2BACzF,GAAKE,EAsBD,OAPIzpvB,EAAQ6pvB,0BACRz5uB,KAAK01tB,aAAa36pB,QAGlB/6D,KAAK01tB,aAAa2R,wBAEtBlgvB,OAAO8hG,SAASl/F,OAAOsvvB,IAChB,EAtBK,CACZ,MAAMK,QAAsB15uB,KAAKg2uB,eAC3Bx4B,EAAc,IAAIn0nB,IAAI8vpB,GAAyBI,GAUrD,OATI5pvB,GACA6ttB,EAAYvC,aAAa1qlB,OAAO,QAAS5gI,GAEzCwpvB,IAA0BK,EAC1BryvB,OAAO8hG,SAASgF,KAAOuvnB,EAAYvvnB,KAGnC9mG,OAAO8hG,SAASl/F,OAAOyztB,EAAYvvnB,MAEhCyrpB,CACX,CAWJ,CACA,iCAAMrW,CAA4BljrB,GAC9B,IAAKngD,KAAKpQ,QAAQipuB,KACd,MAAM,IAAItc,EAAa,mDAE3B,IAAI,YAAEoE,GAAgBxgqB,EAItB,GAHKwgqB,IACDA,EAAe3gtB,KAAK01tB,aAAakM,gBAAiBjhB,cAEjDA,EACD,MAAM,IAAIpE,EAAa,oDAE3B,MAAM4d,QAAgBT,GAAY/Y,aAAiD,EAASA,EAAYsZ,YAClGoB,QAAcnB,GAAkBpwuB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGo2D,GAAS,CAAEg6qB,UAASxZ,YAAaA,EAAYA,eACnH,MAAO,CACHg5B,cAAe,QAAQh5B,EAAYA,cACnCi5B,KAAMve,EAEd,CACA,sBAAMwe,CAAiBC,GAAW,GAC9B,IAAIt2uB,EAAIG,EACR,GAAIm2uB,EACA,O3DhMpBj0pB,uBACUuzoB,GAAkB,QAC5B,C2D8L2B2gB,GAEX,MAAMtopB,QAAezxF,KAAK01tB,aAAajH,YACjC0L,GAAyC,QAA7B32tB,EAAKiuF,EAAOkvnB,mBAAgC,IAAPn9sB,OAAgB,EAASA,EAAGy2tB,cAA+C,QAA9Bt2tB,EAAK8tF,EAAO4xnB,oBAAiC,IAAP1/sB,OAAgB,EAASA,EAAGs2tB,YAClKE,SACMP,GAAiBO,EAE/B,CACA,sBAAA6f,CAAuBhzpB,GACnB,IAAIxjF,EACJ,MAAMy2uB,EAAU1+B,EAAaO,yBAAyB90nB,GAEtD,GAAIgyoB,GADWzd,EAAaK,YAAYq+B,QAAyCA,EAAU,KAC7D,CAC1B,IAAI5tpB,EAAQ,KAKZ,OAJIx5E,EAAWm0E,aAAyC,EAASA,EAAQnzF,OACrEw4F,EAAQrF,EAAQnzF,IAAI,eAExBw4F,EAAsF,QAA7E7oF,EAAK6oF,QAAqCA,EAAQrF,EAAQ,qBAAkC,IAAPxjF,EAAgBA,EAAKwjF,EAAQ,cACpHqF,CACX,CACA,OAAO,IACX,IAEDlH,OAAS,EACZ3hF,CACR,CL1SsB,COVtB,SAAsB0hS,GAClB,OAAO,cAA8BA,EACjC,WAAAzkS,IAAepM,GCFvB,IAA0BwotB,EDGdxpqB,SAASh/C,GACT2L,KAAK+1uB,SCJSl5B,EDIkB78sB,KCHxB,CACZyN,MAAOuouB,GAAat6rB,KAAK,KAAMmhqB,GAC/Bj7Y,OAAQk0a,GAAcp6rB,KAAK,KAAMmhqB,GACjChptB,IAAK8kpB,GAAWj9lB,KAAK,KAAMmhqB,GAC3Bttc,QAAS0me,GAAev6rB,KAAK,KAAMmhqB,GACnCq5B,qBAAsBA,GAAqBx6rB,KAAK,KAAMmhqB,IDDtD,CACA,YAAAm5B,GACI,OAAOh2uB,KAAK+1uB,QAAQtouB,QACf5W,KAAKgvF,UACN7lF,KAAKq8tB,gBACE,IAENxugB,MAAM,SAAU7oO,GACjB,GAAe,iBAAXA,EAAEuO,MAA2C,aAAhBvO,EAAEy2tB,UAC/B,OAAO,EAEX,MAAMz2tB,CACV,EACJ,EAER,CPXwB,CAAa2xvB,GACSJ,IAE1C,OAAOO,CACX,CSHA,SAAS,GAAYj6B,EAAKjttB,GACtB,IAAI4T,EACJ,IAAKi8sB,KACD,OAAO9otB,QAAQyK,OAAO,IAAIm7sB,EAAa,mDAE3C,MAAMz2pB,EAA2F,QAA9EtiD,EAAK5T,aAAyC,EAASA,EAAQk2D,iBAA8B,IAAPtiD,EAAgBA,EAAK/a,SAASiF,KACvI,IAAIiwE,EACAwpC,EACAtzE,EACJ,MAAMwuF,EAAU,IAAI1rH,QAAQ,SAAUC,EAASwK,GAC3C+lG,EAAS1+G,SAASskB,cAAc,UAChCo6F,EAAOz9E,MAAM8yB,QAAU,OACvB3oB,EAAW,SAAkB7uC,GACzB,IAAIwe,EACJ,IAfuB,EAAC2jG,EAAQh7F,IAAUA,EAAMoF,SAAW41F,EAAOG,cAe7D4yoB,CAA2B/yoB,EAAQniH,GACpC,OAEJ,IAAKA,IAAMA,EAAE+Q,MAAQ/Q,EAAEgpG,SAAW6unB,EAAI4F,kBAClC,OAEJ,IAAItxkB,EACJ,IACIA,EAAMxnI,KAAKyuB,MAAMpzC,EAAE+Q,KACvB,CACA,MAAO2yG,GACH,MACJ,CACA,OAAKyoC,EAGY,yBAAbA,EAAInhI,KACGpZ,EAAQu6I,EAAIgpmB,aAED,4BAAbhpmB,EAAInhI,KAMF5O,EAAO,IAAIm7sB,EAAa,iBALiD,QAA/E/4sB,EAAK2jG,aAAuC,EAASA,EAAOG,qBAAkC,IAAP9jG,GAAyBA,EAAG+iF,YAAY58E,KAAKC,UAAU,CAC3IoG,KAAM,mBACNhrB,EAAEgpG,cATV,CAcJ,EACAznC,GAAYp/D,OAAQ,UAAW0sC,GAC/BszE,EAAOE,IAAMw1mB,EAAI4F,kBAAoB,mCACrC38pB,EAAUqqC,YAAYgX,GACtBxpC,EAAUl2D,WAAW,WACjBrG,EAAO,IAAIm7sB,EAAa,4BAC5B,GAAI3stB,aAAyC,EAASA,EAAQ+tE,UAAY,KAC9E,GACA,OAAO0kD,EAAQz7B,QAAQ,WACnB,IAAIpjF,EACJmE,aAAag2D,GACb/Y,GAAez9D,OAAQ,UAAW0sC,GAC9BiyB,EAAUt+D,SAAS2/G,KACa,QAA/B3jG,EAAK2jG,EAAO0I,qBAAkC,IAAPrsG,GAAyBA,EAAG0sF,YAAYiX,GAExF,EACJ,CX8BAiuoB,GAAeE,cAAgB,CAACN,GAAYC,GAAcC,GAAiBC,IAC3EC,GAAevgvB,eAAiB,CAC5BmvuB,WAAW,EACXC,YAAY,EACZC,aAAa,EACb6Q,sBAAsB,EACtBD,sBAAuB,MYvG3B,MAAMsF,GAAyB,CAACxpB,EAA2B,MACvD,MAAM3B,EAAc,GASpB,OARA2B,EAAyB5+tB,QAASqovB,IACN,aAApBA,EAAY7vvB,KACZykuB,EAAYn7tB,KAAK,CACbkc,KAAM,aACNjS,GAAIw5tB,GAAkB8iB,EAAYC,kBAIvCrrB,GAELsrB,GAAiC,CAACC,EAAgB5pB,KAC7C,CACH2J,UAAW,CACPptjB,GAAIqtkB,EAAertkB,GACnBnhF,KAAM,CACFjuF,GAAIw5tB,GAAkBijB,EAAexupB,KAAKjuF,IAC1CxK,KAAMinvB,EAAexupB,KAAKz4F,KAC1B80L,YAAamyjB,EAAexupB,KAAKq8F,aAErCoyjB,UAAWljB,GAAkBijB,EAAeC,WAC5CC,iBAAkBF,EAAeE,iBACjCvqB,YAAaqqB,EAAerqB,YAC5BwqB,uBAAwBH,EAAeG,uBACvCC,mBAAoBR,GAAuBxpB,MAIjDiqB,GAAgC,CAAClqB,EAAeC,KAC3C,CACH2J,UAAWzwuB,OAAOC,OAAO,CAAE0wvB,UAAWljB,GAAkB5G,EAAc8pB,WAAYK,iBAAkBnqB,EAAcmqB,iBAAkBC,iBAAkBX,GAAuBxpB,IAA8BD,EAAcqqB,MAAQ,CAAEA,KAAMrqB,EAAcqqB,SAGzPC,GAAkBC,IACpB,MAAM7spB,EAAW6spB,EAAW7spB,SAI5B,MAAO,CACHtwF,GAJOm9uB,EAAWn9uB,GAKlBmytB,WAJesH,GAAkBnpoB,EAAS8spB,gBAK1ChrB,YAJgBqH,GAAkBnpoB,EAAS+spB,qBAO7CC,GAAgBH,IAClB,MAAM7spB,EAAW6spB,EAAW7spB,SAK5B,MAAO,CACHtwF,GALOm9uB,EAAWn9uB,GAMlBmytB,WALesH,GAAkBnpoB,EAAS8spB,gBAM1C9qB,kBALsBmH,GAAkBnpoB,EAASgioB,mBAMjDC,cALkBkH,GAAkBnpoB,EAASvC,aC3C/CwvpB,GAA0B,CAC5Br3uB,MAAO,CACHs3uB,aAAc,CACV,eACA,iBACA,WAGRhvtB,MAAO,CACHgvtB,aAAc,CACV,eACA,iBACA,WAGRlmB,YAAa,CACTkmB,aAAc,CACV,iBACA,eACA,WAGR,qBAAsB,CAClBA,aAAc,CACV,iBAGR,eAAgB,CACZA,aAAc,CACV,kBCpCZ,MAAMC,GAA0B,0BAiChC,SAASpoG,GAAa7umB,EAAQkpD,EAAKp5F,GAC/B,IAAI3G,EAAO2G,EAAK0B,KACZixF,EAAU3yF,EAAK2yF,SAAW,CAAC,EAC3Bg+L,EAAeh+L,EAAQ,iBAAmBA,EAAQ,iBAAmB,GACrEt5F,GAAwB,iBAATA,IACX8tvB,GAAwBt5vB,KAAK8iS,GAC7Bt3R,EAAOic,KAAKC,UAAUlc,GAED,sCAAhBs3R,IACLt3R,EAAO5D,OAAOo7D,QAAQx3D,GACjBqF,IAAI,EAAEijO,EAAOrwO,KAAW,GAAGqwO,KAAS1tI,mBAAmB3iG,MACvDuY,KAAK,OAGlB,IACIu9uB,GADQt0vB,OAAO2+F,OAAS,IACH2H,EAAK,CAC1BlpD,OAAQA,EACRyiD,QAAS3yF,EAAK2yF,QACdt5F,KAAMA,EACNuhuB,YAAa56tB,EAAK4zR,gBAAkB,UAAY,SAKpD,OAHKwzd,EAAa70pB,UACd60pB,EAAe9kvB,QAAQC,QAAQ6kvB,IAE5BA,EAAa5kvB,KAAK,SAAUw3F,GAC/B,IAAIpkF,GAASokF,EAASpoE,GAClBknG,EAAS9+B,EAAS8+B,OACtB,OA3DR,SAAkB9+B,GACd,OAAIA,EAASrH,QAAQnzF,IAAI,iBACrBw6F,EAASrH,QAAQnzF,IAAI,gBAAgBzL,cAAcG,QAAQ,qBAAuB,EAC3E8lG,EAAStI,OACX8nI,MAAM7oO,IACA,CACHilB,MAAOjlB,EACP22tB,aAAc,qCAKfttnB,EAASv+D,MAExB,CA6Ce4rtB,CAASrtpB,GACXx3F,KAAKd,GA7ClB,SAAsBo3H,EAAQp3H,EAAMs4F,GAChC,MAAMp+E,EAA2B,iBAATla,EAClBixF,EAAU,CAAC,EACjB,IAAK,MAAMw7G,KAAQn0G,EAASrH,QAAQ9hC,UAChC8hC,EAAQw7G,EAAK,IAAMA,EAAK,GAE5B,MAAMrvM,EAAS,CACX+3R,aAAcj7Q,EAAWtG,KAAKC,UAAU7T,GAAQA,EAChDo3H,OAAQA,EACRnmC,WAMJ,OAJI/2E,IACA9c,EAAOg2R,aAAe,OACtBh2R,EAAOmytB,aAAevvtB,GAEnB5C,CACX,CA8BmBwovB,CAAaxunB,EAAQp3H,EAAMs4F,IAEjCx3F,KAAK1D,IACN,IAAIqQ,EACJ,GAAIyG,IAAyC,QAA9BzG,EAAKrQ,EAAOmytB,oBAAiC,IAAP9htB,OAAgB,EAASA,EAAGyG,OAC7E,MAAM9W,EAEV,OAAOA,GAEf,EACJ,CC7CA,SAASyovB,KACL,MAAMC,EC1BV,WACI,MAAMC,ECAV,WACI,MAAMC,ECLC,MACH,WAAAt7uB,CAAYpM,GACR2L,KAAKwpuB,UAAYn1uB,EAAKm1uB,OAC1B,GDGJ,OAAO,cAAwCuS,EAC3C,WAAAt7uB,CAAYpM,GACRg/C,MAAMh/C,GACN2L,KAAKghtB,QJgCjB,SAA2B3stB,EAAO,CAAC,EAAG4rtB,GAClC,IAAI+7B,EAAiB3nvB,EAAK2stB,SAAW,CAAC,EAgBtC,YAfqC,IAA1Bg7B,EAAepzpB,SACtBozpB,EAAepzpB,OAASq3nB,QAEW,IAA5B+7B,EAAenzpB,WACtBmzpB,EAAenzpB,SAAWmzpB,EAAepzpB,OAAS,OAAS,OAE3DozpB,EAAepzpB,SAAWq3nB,IAC1BpzsB,EAAK,2LAGLmvuB,EAAepzpB,QAAS,GAEI,SAA5BozpB,EAAenzpB,UAAwBmzpB,EAAepzpB,SACtDozpB,EAAenzpB,SAAW,OAEvBmzpB,CACX,CIlD2BC,CAAkB5nvB,EAAM4rtB,MACvCjgtB,KAAK4gtB,YAAcvstB,EAAKustB,aJPV92tB,OAAOC,OAAO,CAAC,EAAG62tB,GAAa,CACjD0nB,cAAe,CAAC,IIOZtouB,KAAK8gtB,eAAiBh3tB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuxvB,IAA0BjnvB,EAAKystB,eACzF,EAER,CDVsCo7B,GAClC,OAAO,cAAqCJ,EACxC,WAAAr7uB,CAAYpM,GACRg/C,MAAMh/C,GACN2L,KAAKqrF,OAASh3F,EAAKg3F,OACnBrrF,KAAKqitB,kBAAoBhutB,EAAKgutB,kBAC9BritB,KAAKgnF,QAAU3yF,EAAK2yF,QACpBhnF,KAAKiitB,kBAAoB5ttB,EAAK4ttB,mBAAqB7uE,GACnDpzoB,KAAKygtB,wBAA0BpstB,EAAKostB,wBACpCzgtB,KAAKkhtB,UAAY7stB,EAAK6stB,SAC1B,EAER,CDamCi7B,GAC/B,OAAO,cAAsCN,EACzC,WAAAp7uB,CAAY7Q,GACRyjD,MAAMzjD,GA1BlB,SAA2ByE,GAEvB,IAAI+/B,GADJ//B,EAAOA,GAAQ,CAAC,GACE+/B,OAClB,GAAIA,IAAW9/B,MAAMyb,QAAQqkB,GACzB,MAAM,IAAImorB,EAAa,kGAG3B,IAAIlxnB,EAASh3F,EAAKg3F,OAClB,IAAKA,EACD,MAAM,IAAIkxnB,EAAa,iIAI3B,IADiB,IAAIzqrB,OAAO,iBACZ5vC,KAAKmpG,GACjB,MAAM,IAAIkxnB,EAAa,4HAG3B,IAAuC,IAAnClxnB,EAAO9iG,QAAQ,eACf,MAAM,IAAIg0tB,EAAa,yIAG/B,CAMY6/B,CAAkBxsvB,GAClBoQ,KAAKqrF,OAASgxnB,EAAoBzstB,EAAQy7F,QAC1CrrF,KAAKk9sB,SAAWb,EAAoBzstB,EAAQsttB,UAC5Cl9sB,KAAKg9sB,aAAeX,EAAoBzstB,EAAQottB,cAChDh9sB,KAAKi9sB,YAAcZ,EAAoBzstB,EAAQqttB,aAC/Cj9sB,KAAKo9sB,UAAYf,EAAoBzstB,EAAQwttB,WAC7Cp9sB,KAAKm9sB,UAAYd,EAAoBzstB,EAAQuttB,WAC7Cn9sB,KAAK69sB,MAAwB,IAAjBjutB,EAAQiutB,KACpB79sB,KAAKulF,SAAW31F,EAAQ21F,SACxBvlF,KAAKw9sB,YAAc5ttB,EAAQ4ttB,YACvBv8T,OACAjhZ,KAAKw9sB,Y/J1CrB,SAAuB/vnB,EAAM,GAAI5G,GAC7B,OAAIs1nB,EAAc1unB,GACPA,GAEX5G,EAAUw1nB,EAAoBx1nB,GACZ,MAAX4G,EAAI,GAAa,GAAG5G,IAAU4G,IAAQ,GAAG5G,KAAW4G,IAC/D,C+JoCmC4upB,CAAczsvB,EAAQ4ttB,YAAar2tB,OAAO8hG,SAAS+E,SAE1EhuF,KAAKmpR,aAAev5R,EAAQu5R,aAC5BnpR,KAAKy9sB,aAAe7ttB,EAAQ6ttB,aAC5Bz9sB,KAAKrQ,MAAQC,EAAQD,MACrBqQ,KAAKo0B,OAASxkC,EAAQwkC,OACtBp0B,KAAK09sB,kBAAoB9ttB,EAAQ8ttB,gBACjC19sB,KAAKg+sB,cAAgBputB,EAAQoutB,cAC7Bh+sB,KAAK+9sB,oBAAsBnutB,EAAQmutB,oBACnC/9sB,KAAK29sB,UAAY/ttB,EAAQ+ttB,UACzB39sB,KAAK6jtB,OAASj0tB,EAAQi0tB,OACtB7jtB,KAAK64tB,MAAwB,IAAjBjpuB,EAAQipuB,KACpB74tB,KAAK68tB,YAAc/yuB,OAAOC,OAAO,CAAE6yuB,mBAAmB,GAAShtuB,EAAQituB,aACvE78tB,KAAK01tB,aAAe9luB,EAAQ8luB,aAC5B11tB,KAAKm5uB,sBAAwBvpvB,EAAQupvB,sBACrCn5uB,KAAKu3uB,mBAAqB3nvB,EAAQ2nvB,mBAClCv3uB,KAAKirF,mBAAqBnhG,OAAOC,OAAO,CAAEuyvB,qBI7D1B,GJ6DiD1svB,EAAQq7F,oBACzEjrF,KAAKqktB,aAAez0tB,EAAQy0tB,aAC5BrktB,KAAKiguB,YAAcrwuB,EAAQqwuB,YAC3BjguB,KAAK87tB,iBAAmBlsuB,EAAQksuB,eAC3BlsuB,EAAQmsuB,cAAyC,IAAzBnsuB,EAAQmsuB,aAIjC/7tB,KAAK+7tB,aAAensuB,EAAQmsuB,aAH5B/7tB,KAAK+7tB,aAAe3d,CAK5B,EAER,CKvEA,MAAMm+B,GACF,WAAA97uB,CAAYo1B,EAAS2mtB,GACjB,IAAK3mtB,EACD,MAAM,IAAI0mrB,EAAa,yBAE3B,GAA2B,iBAAhBigC,IAA6BA,EAAYpovB,OAChD,MAAM,IAAImotB,EAAa,6BAE3Bv8sB,KAAKw8uB,YAAcA,EACnBx8uB,KAAKukuB,gBAAkB1usB,CAC3B,CACA,OAAAotD,CAAQz4F,GACJ,OAAOwV,KAAKqhtB,aAAa72tB,EAC7B,CACA,OAAA44F,CAAQ54F,EAAK7E,GACT,OAAOqa,KAAKmitB,cAAc33tB,EAAK7E,EACnC,CACA,UAAAw9F,CAAW34F,GACP,OAAOwV,KAAKq8tB,aAAa7xuB,EAC7B,CACA,UAAA62tB,GACI,IAAIo7B,EAAgBz8uB,KAAKukuB,gBAAgBthpB,QAAQjjF,KAAKw8uB,aACtDC,EAAgBA,GAAiB,KACjC,IACI,OAAO9yuB,KAAKyuB,MAAMqktB,EACtB,CACA,MAAOz3vB,GACH,MAAM,IAAIu3tB,EAAa,mCAAqCv8sB,KAAKw8uB,YACrE,CACJ,CACA,UAAAxW,CAAW1ztB,GACP,IACI,IAAImquB,EAAgBnquB,EAAM3I,KAAKC,UAAU0I,GAAO,KAChDtS,KAAKukuB,gBAAgBnhpB,QAAQpjF,KAAKw8uB,YAAaC,EACnD,CACA,MAAOz3vB,GACH,MAAM,IAAIu3tB,EAAa,0BAA4Bv8sB,KAAKw8uB,YAC5D,CACJ,CACA,YAAAngB,CAAa7xuB,GACT,GAAKA,EAAL,CASA,IAAI8nB,EAAMtS,KAAKqhtB,oBACR/usB,EAAI9nB,GACXwV,KAAKgmuB,WAAW1ztB,EAHhB,MAPQtS,KAAKukuB,gBAAgBphpB,WACrBnjF,KAAKukuB,gBAAgBphpB,WAAWnjF,KAAKw8uB,aAGrCx8uB,KAAKgmuB,YAOjB,CACA,aAAA7jB,CAAc33tB,EAAK7E,GACf,IAAI2sB,EAAMtS,KAAKqhtB,aACf/usB,EAAI9nB,GAAO7E,EACXqa,KAAKgmuB,WAAW1ztB,EACpB,ECtDJ,SAASoquB,GAAkC9svB,GAClCqxZ,MAAgBrxZ,EAAQ20uB,iBAAoB30uB,EAAQw4F,YACrDv7E,EAAK,8KAEb,CACA,MAAM8vuB,GACF,WAAAl8uB,CAAYm8uB,EAAuBrU,EAAe3nB,GAC9C5gtB,KAAK48uB,sBAAwBA,EAC7B58uB,KAAKuouB,cAAgBA,EACrBvouB,KAAK4gtB,YAAcA,CACvB,CACA,oBAAAi8B,CAAqBC,EAAaC,GAC9B,OAAOjzvB,OAAOC,OAAO,CAAC,EAAGiW,KAAK48uB,sBAAsBE,GAAcC,EACtE,CACA,UAAA17B,CAAWzxtB,GAEP,IADAA,EAAU9F,OAAOC,OAAO,CAAC,EAAGiW,KAAKuouB,cAAe34uB,IACpC20uB,gBACR,OAAO30uB,EAAQ20uB,gBAEnB,IAAI,YAAEC,EAAW,aAAE+W,GAAiB3rvB,EAIpC,GAHoB,mBAAhB40uB,IACA50uB,EAAQu4uB,eAAgB,GAExB3D,GAAe+W,EAAc,CAC7B,MAAMnpuB,EAAMmpuB,EAAahzvB,QAAQi8uB,GAC7BpytB,GAAO,IACPmpuB,EAAeA,EAAazgvB,MAAMsX,GAClCoytB,OAAc1tuB,EAEtB,CAIA,OAHK0tuB,IACDA,EAAcxkuB,KAAK4gtB,YAAYmnB,gBAAgBwT,IAE5Cv7uB,KAAK4gtB,YAAYgnB,iBAAiBpD,EAAa50uB,EAC1D,CACA,eAAA60uB,CAAgB70uB,GAEZ8svB,GADA9svB,EAAUoQ,KAAK68uB,qBAAqB,QAASjtvB,IAE7C,MAAMimC,EAAU71B,KAAKqhtB,WAAWzxtB,GAC1Bw4F,EAAax4F,EAAQw4F,YAAck2nB,EACzC,OAAO,IAAIi+B,GAAY1mtB,EAASuyD,EACpC,CACA,YAAA24nB,CAAanxtB,GACTA,EAAUoQ,KAAK68uB,qBAAqB,QAASjtvB,GAC7C,MAAMimC,EAAU71B,KAAKqhtB,WAAWzxtB,GAC1Bw4F,EAAax4F,EAAQw4F,YAAcm2nB,EACzC,OAAO,IAAIg+B,GAAY1mtB,EAASuyD,EACpC,ECpDJ,SAAS40pB,GAAuB1quB,GAC5B,SAAKA,GAAsB,iBAARA,GAAkD,IAA9BxoB,OAAO8+B,OAAOtW,GAAKle,OAI9D,CA0BA,SAAS6ovB,GAAkB3quB,GACvB,SA1BJ,SAAgCA,GAC5B,SAAK0quB,GAAuB1quB,KAGnBA,EAAIkrsB,cAAiBlrsB,EAAI62Q,aACtC,CAqBQ+zd,CAAuB5quB,KAR/B,SAAqCA,GACjC,QAAK0quB,GAAuB1quB,SAGkExb,IAApEhN,OAAO8+B,OAAOtW,GAAKzX,KAAMlV,GAA4B,iBAAVA,EAEzE,CAEuCw3vB,CAA4B7quB,GAInE,CClCA,MAAM8quB,GACF,WAAA38uB,CAAYmstB,EAAUh9tB,GAClB,MAAM,IAAEw0C,GAAQx0C,GACV,QAAEo3F,GAAY5iD,EAAK50B,EAAO8zsB,GAAOl/qB,EAAK,CAAC,YACzC4iD,IACAhnF,KAAKgnF,QAAUA,GAEnBl9F,OAAOO,KAAKmlB,GAAMxd,QAAQxH,IACV,WAARA,IAGJwV,KAAKxV,GAAOglB,EAAKhlB,KAEzB,ECPJq7F,eAAew3pB,GAAYzwB,EAAUh9tB,EAAS0tvB,EAAmBF,IAC7D,MAAQz8B,YAAa48B,GAAmB3wB,EAAS8I,aAAakM,gBACxD4b,EAAU5tvB,EAAQ+wtB,aAAe48B,EACjClypB,EAASuhoB,EAASnK,mBAClB,IAAEh1nB,EAAG,OAAElpD,EAAM,QAAEr6B,GAAYta,EAC3Bq4S,EAAax6M,EAAI5hE,WAAWw/D,GAAUoC,EAAM,GAAGpC,IAASoC,IAC9D,IAAK+vpB,EACD,MAAM,IAAIjhC,EAAa,+DAE3B,IAAIoE,EAAc68B,EAClB,MAAMx2c,EAAcl9S,OAAOC,OAAO,CAAEi9F,QAAS,CAAE,OAAU,0BAA4ByG,IAAKw6M,EAAY1jQ,UAAWr6B,GAAW,CAAE7V,KAAM6V,IACpI,GAAI0itB,EAASh9tB,QAAQipuB,KAAM,CACvB,GAA2B,iBAAhBlY,EACP,MAAM,IAAIpE,EAAa,uDAE3B,MAAM,cAAEo9B,EAAa,KAAEC,SAAehtB,EAASyW,4BAA4B,CACvE9+rB,SACAkpD,IAAKw6M,EACL04a,gBAEJ35a,EAAYhgN,QAAQ2ypB,cAAgBA,EACpC3yc,EAAYhgN,QAAQ4ypB,KAAOA,CAC/B,MAEIj5B,EAAqC,iBAAhBA,EAA2BA,EAAcA,EAAYA,YAC1E35a,EAAY25a,YAAcA,EAE9B,MAAMv8qB,QAAYo8qB,GAAYoM,EAAU5lb,GACxC,IAAInhR,EAaJ,OAXIA,EADAvxB,MAAMyb,QAAQq0B,GACRA,EAAIrxC,IAAIigB,GAAQ,IAAIsquB,EAAiB1wB,EAAU,CACjDxorB,IAAKpxB,EACL2tsB,iBAIE,IAAI28B,EAAiB1wB,EAAU,CACjCxorB,MACAu8qB,gBAGD96rB,CACX,CACA,SAAS43tB,IAA2B,SAAE7wB,EAAQ,YAAEjM,EAAW,WAAE16e,EAAU,MAAElyC,GAAUupjB,EAAmBF,IAClG,IAAK,MAAM74sB,IAAU,CAAC,MAAO,OAAQ,MAAO,UACxC,GAAIA,EAAOn8C,gBAAkB69O,EAAY,CACrC,MAAM78G,EAAO2qE,EAAMzxG,KACnB,OAAO,MAAQp4E,GAAYmzuB,GAAYzwB,EAAU,CAC7CjM,cACAlznB,IAAK27B,EAAKn7B,KACV1pD,SACAr6B,WACDozuB,EACP,CAEJ,MAAMl0nB,EAAO2qE,EAAMkyC,GACnB,IAAK78G,EACD,MAAM,IAAImzlB,EAAa,qCAAqCt2e,KAEhE,OAAO,MAAQ/7N,GAAYmzuB,GAAYzwB,EAAU,CAC7CjM,cACAlznB,IAAK27B,EAAKn7B,KACV1pD,OAAQ6kF,EAAKsO,MAAMm4a,MAAM,GACzB3liB,WACDozuB,EACP,CCvEA,MAAMI,WAA2BN,GAC7B,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,UAAE+tvB,EAAS,WAAEC,EAAU,QAAEC,GAAYjuvB,EAAQw0C,IACnDpkC,KAAK29uB,UAAYA,EACjB39uB,KAAK49uB,WAAaA,EAClB59uB,KAAK69uB,QAAUA,CACnB,ECPJ,MAAMC,WAAiCV,GACnC,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChBoQ,KAAK0kC,WAAa90C,EAAQw0C,IAAIM,UAClC,ECNJ,IAAIq5sB,GAKAvunB,GAKAwunB,IATJ,SAAWD,GACPA,EAAmB,QAAI,UACvBA,EAAqB,UAAI,WAC5B,CAHD,CAGGA,KAAcA,GAAY,CAAC,IAE9B,SAAWvunB,GACPA,EAAiB,SAAI,WACrBA,EAAmB,WAAI,YAC1B,CAHD,CAGGA,KAAWA,GAAS,CAAC,IAExB,SAAWwunB,GACPA,EAA6B,aAAI,eACjCA,EAAuB,OAAI,QAC9B,CAHD,CAGGA,KAAmBA,GAAiB,CAAC,ICRxC,MAAMC,GAAap4pB,MAAO+moB,EAAUh9tB,UACNytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBACLlpD,OAAQ,MACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,aACxE+8B,IAGDQ,GAAgBr4pB,MAAO+moB,EAAUh9tB,KACnC,MAAM,QAAEsa,EAAO,YAAEy2sB,GAAgB/wtB,EAOjC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBACLlpD,OAAQ,MACRr6B,UACAy2sB,eACD+8B,KAGDS,GAAmBt4pB,MAAO+moB,EAAUh9tB,UACZytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,gCACLlpD,OAAQ,MACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,aACxEm9B,IC3BP,MAAMM,WAA+BhB,GACjC,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,IAAEw0C,GAAQx0C,GACV,GAAEmO,EAAE,QAAE8/uB,EAAO,UAAE91pB,EAAS,OAAEolC,GAAW/oF,EAC3CpkC,KAAKjC,GAAKA,EACViC,KAAK+nF,UAAYA,EACjB/nF,KAAK69uB,QAAUA,EACf79uB,KAAKmtH,OAASA,CAClB,ECPJ,MAAMkxnB,WAAkCjB,GACpC,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,YAAE+wtB,EAAW,IAAEv8qB,GAAQx0C,GACvB,GAAEmO,EAAE,UAAEgqF,EAAS,QAAE81pB,EAAO,OAAE1wnB,EAAM,OAAEkulB,GAAWj3qB,EACnDpkC,KAAKjC,GAAKA,EACViC,KAAK+nF,UAAYA,EACjB/nF,KAAK69uB,QAAUA,EACf79uB,KAAKmtH,OAASA,EACdntH,KAAKu0oB,KAAO1ujB,UACR,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,OACZlyC,MAAOsnhB,GACR+iC,IACH,aAAatpvB,KAEjBkL,KAAKk4tB,OAASryoB,MAAO37E,IACjB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,GACRgjC,IACH,aAAavpvB,EAAGoV,GAExB,EC1BJ,MAAMo0uB,WAAyBlB,GAC3B,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,YAAE+wtB,EAAW,IAAEv8qB,GAAQx0C,GACvB,GAAEmO,EAAE,QAAE8/uB,EAAO,MAAEU,EAAK,OAAEpxnB,EAAM,OAAEkulB,GAAWj3qB,EAC/CpkC,KAAKjC,GAAKA,EACViC,KAAK69uB,QAAUA,EACf79uB,KAAKu+uB,MAAQA,EACbv+uB,KAAKmtH,OAASA,EACdntH,KAAKnM,IAAMgyF,UACP,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,MACZlyC,MAAOsnhB,GACRijC,IACH,aAAaxpvB,KAEjBkL,KAAKy2B,OAASovD,UACV,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,IAEX,aAAavmtB,KAEjBkL,KAAKy6uB,UAAY50pB,UACb,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,YACZlyC,MAAOsnhB,GACRgjC,IACH,aAAavpvB,KAEbumtB,EAAO9mE,OACPv0oB,KAAKu0oB,KAAO1ujB,UACR,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,OACZlyC,MAAOsnhB,GACR+iC,IACH,aAAatpvB,MAGjBumtB,EAAO6c,SACPl4tB,KAAKk4tB,OAASryoB,MAAO37E,IACjB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,IAEX,aAAavmtB,EAAGoV,IAG5B,ECzDJ,MAAMs0uB,GAAY34pB,MAAO+moB,EAAUh9tB,UACLytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,wBACLlpD,OAAQ,MACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,aACxE29B,IAGDG,GAAW54pB,MAAO+moB,EAAUh9tB,KAC9B,MAAM,GAAEmO,EAAE,YAAE4itB,GAAgB/wtB,EAM5B,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,IAC9BwmC,OAAQ,MACRo8qB,eACD29B,KAGDI,GAAW74pB,MAAO+moB,EAAUh9tB,KAC9B,MAAM,YAAE+wtB,EAAW,QAAEz2sB,GAAYta,EAOjC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,wBACLlpD,OAAQ,OACRr6B,UACAy2sB,eACD29B,KAGDK,GAAc94pB,MAAO+moB,EAAUh9tB,KACjC,MAAM,GAAEmO,EAAE,YAAE4itB,GAAgB/wtB,EAM5B,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,IAC9BwmC,OAAQ,SACRo8qB,iBAIFi+B,GAAqB/4pB,MAAO+moB,EAAUh9tB,KACxC,MAAM,GAAEmO,EAAE,YAAE4itB,GAAgB/wtB,EAM5B,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,cAC9BwmC,OAAQ,OACRo8qB,eACD09B,KAGDQ,GAAoBh5pB,MAAO+moB,EAAUh9tB,KACvC,MAAM,QAAEkvvB,EAAO,YAAEC,EAAW,YAAEp+B,GAAgB/wtB,EAM9C,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyBqxpB,eAAqBC,IACnDx6sB,OAAQ,OACRo8qB,eACD09B,KAGDW,GAAuBn5pB,MAAO+moB,EAAUh9tB,KAC1C,MAAM,QAAEkvvB,EAAO,YAAEC,EAAW,QAAE70uB,EAAO,YAAEy2sB,GAAgB/wtB,EAOvD,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyBqxpB,eAAqBC,WACnDx6sB,OAAQ,OACRr6B,UACAy2sB,iBC/DR,MAAMs+B,WAAyB7B,GAC3B,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,IAAEw0C,EAAG,YAAEu8qB,GAAgB/wtB,GACvB,GAAEmO,EAAE,QAAE8/uB,EAAO,OAAE1wnB,EAAM,OAAEkulB,GAAWj3qB,EACxCpkC,KAAKjC,GAAKA,EACViC,KAAK69uB,QAAUA,EACf79uB,KAAKmtH,OAASA,EACdntH,KAAKnM,IAAMgyF,UACP,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,MACZlyC,MAAOsnhB,GACR4jC,IACH,aAAanqvB,KAEjBkL,KAAKy2B,OAASovD,UACV,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,IAEX,aAAavmtB,KAEjBkL,KAAKy6uB,UAAY50pB,MAAO37E,IACpB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,YACZlyC,MAAOsnhB,IAEX,aAAavmtB,EAAGoV,IAEhBmxsB,EAAO6c,SACPl4tB,KAAKk4tB,OAASryoB,MAAO37E,IACjB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,IAEX,aAAavmtB,EAAGoV,IAG5B,EC5CJ,MAAMg1uB,GAAYr5pB,MAAO+moB,EAAUh9tB,UACLytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,wBACLlpD,OAAQ,MACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,aACxEs+B,IAGDE,GAAWt5pB,MAAO+moB,EAAUh9tB,KAC9B,MAAM,YAAE+wtB,EAAW,GAAE5itB,GAAOnO,EAM5B,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,IAC9BwmC,OAAQ,MACRo8qB,eACDs+B,KAGDG,GAAWv5pB,MAAO+moB,EAAUh9tB,KAC9B,MAAM,YAAE+wtB,EAAW,QAAEz2sB,GAAYta,EAOjC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,wBACLlpD,OAAQ,OACRr6B,UACAy2sB,eACDs+B,KAGDI,GAAcx5pB,MAAO+moB,EAAUh9tB,KACjC,MAAM,GAAEmO,EAAE,YAAE4itB,GAAgB/wtB,EAM5B,aAL0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,IAC9BwmC,OAAQ,SACRo8qB,iBAIF2+B,GAAqBz5pB,MAAO+moB,EAAUh9tB,KACxC,MAAM,YAAE+wtB,EAAW,GAAE5itB,EAAE,QAAEmM,GAAYta,EAOrC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,cAC9BwmC,OAAQ,OACRr6B,UACAy2sB,iBAIF4+B,GAAuB15pB,MAAO+moB,EAAUh9tB,KAC1C,MAAM,GAAEmO,EAAE,QAAEmM,EAAO,YAAEy2sB,GAAgB/wtB,EAOrC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,yBAAyB1vF,WAC9BwmC,OAAQ,OACRr6B,UACAy2sB,iBCrDR,MAAM6+B,WAA4BpC,GAC9B,WAAA38uB,CAAYmstB,EAAUh9tB,GAClByjD,MAAMu5qB,EAAUh9tB,GAChB,MAAM,IAAEw0C,EAAG,YAAEu8qB,GAAgB/wtB,GACvB,GAAEmO,EAAE,OAAEovH,EAAM,QAAEsynB,EAAO,YAAEC,EAAW,OAAErkC,GAAWj3qB,EACrDpkC,KAAKjC,GAAKA,EACViC,KAAKmtH,OAASA,EACdntH,KAAKy/uB,QAAUA,EACfz/uB,KAAK0/uB,YAAcA,EACf1/uB,KAAKmtH,QAAU6wnB,GAAe2B,aAC9B3/uB,KAAK4/uB,OAAS/5pB,MAAO37E,IACjB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,GACRmkC,IACH,aAAa1qvB,EAAGoV,KAIpBlK,KAAKnM,IAAMgyF,UACP,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,MACZlyC,MAAOsnhB,GACRmkC,IACH,aAAa1qvB,KAEjBkL,KAAK5J,OAASyvF,MAAO37E,IACjB,MAAMpV,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,MACZlyC,MAAOsnhB,GACRmkC,IACH,aAAa1qvB,EAAGoV,IAEpBlK,KAAKy2B,OAASovD,UACV,MAAM/wF,EAAK2ovB,GAA2B,CAClC7wB,WACAjM,cACA16e,WAAY,SACZlyC,MAAOsnhB,IAEX,aAAavmtB,KAGzB,ECjDJ,MAAM+qvB,GAAch6pB,MAAO+moB,EAAUh9tB,UACPytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,0BACLlpD,OAAQ,MACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,aACxE6+B,IAGDM,GAAiBj6pB,MAAO+moB,EAAUh9tB,KACpC,MAAM,YAAE+wtB,EAAW,QAAEz2sB,GAAYta,EAOjC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,0BACLlpD,OAAQ,OACRr6B,UACAy2sB,eACD6+B,KAGDO,GAAiBl6pB,MAAO+moB,EAAUh9tB,KACpC,MAAM,YAAE+wtB,EAAW,QAAEz2sB,GAAYta,EAOjC,aAN0BytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,0BACLlpD,OAAQ,MACRr6B,UACAy2sB,eACD6+B,KAGDQ,GAAiBn6pB,MAAO+moB,EAAUh9tB,UACVytvB,GAAYzwB,EAAU,CAC5Cn/nB,IAAK,0BACLlpD,OAAQ,SACRo8qB,YAAa/wtB,aAAyC,EAASA,EAAQ+wtB,cCpC/E,SAASs/B,GAAc77sB,EAAKx0C,GACxB,IAAIswvB,EAAY,CAAC,EAKjB,OAJAp2vB,OAAOC,OAAOm2vB,EAAWtwvB,IACpBswvB,EAAUh+B,YAAc99qB,EAAI89qB,aAC7Bg+B,EAAUh+B,WAAa99qB,EAAI89qB,YAExBg+B,CACX,CCEA,SAASC,GAAkBtjC,EAAKxotB,GAE5B,OADAA,EAAO4rvB,GAAcpjC,EAAKxotB,GACnB4nO,GAAK4gf,EAAKA,EAAI4F,kBAAoB,gBAAiBputB,EAAM,CAAE4zR,iBAAiB,GACvF,CAuCA,SAASm4d,GAAkBvjC,GACvB,QAASwjC,GAAmBxjC,EAChC,CACA,SAASyjC,GAAkBzjC,EAAKtxN,EAAI99Z,EAAKp5F,EAAMzE,GAE3C,OAAOqsO,GAAK4gf,EAAKpvnB,EAAKp5F,EADtBzE,EAAU9F,OAAOC,OAAO,CAAEk+R,iBAAiB,GAAQr4R,IAE9CiH,KAAK,SAAUutC,GAChB,OAAOmnd,EAAGg1P,kBAAkBn8sB,EAChC,EACJ,CACA,SAASi8sB,GAAmBxjC,GAExB,OADgBA,EAAIjttB,QAAQgxtB,YAAY/qrB,QACzBhiC,IAAIoqtB,EACvB,CCrDA,SAASuiC,GAAQ3jC,EAAKtxN,EAAInnd,EAAK9xB,EAAK82G,EAAMvW,GACtC,GAAIv+G,MAAMyb,QAAQq5G,GACd,OAAO,SAAU71H,EAAMw8B,GACnB,IAAKx8B,EACD,MAAM,IAAIgptB,EAAa,4BAE3B,IAAItpf,EAAKp4N,EAAKuuH,EAAM,CAAE71H,KAAMA,IAC5B,IAAK0/N,EACD,MAAM,IAAIspf,EAAa,+BAE3B,OAAOikC,GAAQ3jC,EAAKtxN,EAAInnd,EAAK9xB,EAAK2gN,EAAIpgH,EAA/B2toB,CAAoCzwtB,EAC/C,EAEC,GAAIq5F,EAAKsO,OACVtO,EAAKsO,MAAMm4a,OACiB,IAA5Bzmb,EAAKsO,MAAMm4a,MAAMz7iB,OAEjB,OADag1H,EAAKsO,MAAMm4a,MAAM,IAE1B,IAAK,MACD,OAAO,WACH,OAAOh8iB,GAAIgptB,EAAKzzlB,EAAKn7B,KAAM,CAAEg6L,iBAAiB,GAClD,EACJ,IAAK,OACD,OAAO,SAAUl4P,GACT8iF,GAAOA,EAAI4toB,YACX5toB,EAAI4toB,WAAY,GAEpB,IAAI1qvB,EAAOkqvB,GAAc77sB,EAAKrU,GACX,eAAfqU,EAAI+oF,QAA0C,kBAAf/oF,EAAI+oF,QACnCrjI,OAAOC,OAAOgM,EAAM,CAChB2qvB,WAAYpuuB,EAAIouuB,WAChB/5nB,SAAUr0G,EAAIq0G,WAGtB,IAAIxmE,EAAS,CAAC,EACVwgsB,EAAW5qvB,EAAK4qvB,SACpB,QAAiB7pvB,IAAb6pvB,EAAwB,CACxB,GAAwB,mBAAbA,EACP,IACIxgsB,EAAOwgsB,WAAaA,GACxB,CACA,MAAO37vB,GACH,OAAO2R,QAAQyK,OAAO,IAAIm7sB,EAAa,kCAC3C,MAEkB,OAAbokC,IACLxgsB,EAAOwgsB,WAAaA,GAExB5qvB,EAAOsgO,EAAKtgO,EAAM,WACtB,CACA,IAAI6qvB,EAAiB7qvB,EAAK6qvB,eAC1B,QAAuB9pvB,IAAnB8pvB,EAA8B,CAC9B,GAA8B,mBAAnBA,EACP,IACIzgsB,EAAOygsB,iBAAmBA,GAC9B,CACA,MAAO57vB,GACH,OAAO2R,QAAQyK,OAAO,IAAIm7sB,EAAa,wCAC3C,MAEwB,OAAnBqkC,IACLzgsB,EAAOygsB,iBAAmBA,GAE9B7qvB,EAAOsgO,EAAKtgO,EAAM,iBACtB,MACSA,EAAK8nvB,cACmB/mvB,IAA7Bf,EAAK8nvB,QAAQgD,cACT9qvB,EAAK8nvB,QAAQgD,cACb1gsB,EAAO0gsB,aAAc,GAEzB9qvB,EAAK8nvB,QAAUxnhB,EAAKtgO,EAAK8nvB,QAAS,gBAEtC,IAAI5vpB,EAAOm7B,EAAKn7B,KAAOmunB,EAAcj8pB,GACrC,OAAOmgsB,GAAkBzjC,EAAKtxN,EAAIt9Z,EAAMl4F,EAC5C,EAGhB,CCtFA,MAAM+qvB,WAA0BxlC,EAC5B,WAAA76sB,GAEI4yC,MADgB,kCAEpB,ECQJ,SAAS0tsB,GAAUlkC,EAAKz4qB,EAAKyuE,GACzB,OAAO,SAAUjjH,GACb,IAAIoxvB,EACAJ,EACAD,EACAM,E5LbM3uuB,I4LcG1iB,E5Lb8B,oBAAxC9F,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,G4Lc9B0uuB,EAAUpxvB,EAELqgB,EAASrgB,KAEdoxvB,EAAUpxvB,EAAQ6zC,MAClBm9sB,EAAiBhxvB,EAAQgxvB,eACzBD,EAAW/wvB,EAAQ+wvB,SACnBM,EAAsBrxvB,EAAQqxvB,qBAE7BD,GAAuB,IAAZA,IACZA,EAAU9iC,GAEd,IAAIgjC,EAAWhmC,EAAQ92qB,EAAK,OAAQ,QAgCpCyuE,EAAI4toB,WAAY,EAChB,IAAI5+B,EAAa,EACbs/B,EAAgB,WAChB,OAAKtuoB,EAAI4toB,UAlCb,WACI,IAAI1wtB,EAAO,CAAC,EACZ,GAAwB,mBAAb4wtB,EACP,IACI5wtB,EAAK4wtB,WAAaA,GACtB,CACA,MAAO37vB,GACH,OAAO2R,QAAQyK,OAAO,IAAIm7sB,EAAa,kCAC3C,MAEKokC,UACL5wtB,EAAK4wtB,WAAaA,GAEtB,GAA8B,mBAAnBC,EACP,IACI7wtB,EAAK6wtB,iBAAmBA,GAC5B,CACA,MAAO57vB,GACH,OAAO2R,QAAQyK,OAAO,IAAIm7sB,EAAa,wCAC3C,MAEKqkC,UACL7wtB,EAAK6wtB,iBAAmBA,GAE5B,IAAI3ypB,EAAOizpB,EAASjzpB,KAAOmunB,EAAcrsrB,GACzC,OAAOksM,GAAK4gf,EAAK5unB,EJnD7B,SAAuB7pD,GACnB,OAAO67sB,GAAc77sB,EACzB,CIiDmCg9sB,CAAch9sB,GAAM,CACvCs8qB,gBAAgB,EAChBz4b,iBAAiB,EACjBg5b,eAAe,GAEvB,CAOWogC,GACFxqvB,KAAK,SAAUyqvB,GAEhB,GADAz/B,EAAa,EACTy/B,EAAQC,cAAyC,YAAzBD,EAAQC,aAA4B,CAC5D,IAAK1uoB,EAAI4toB,UACL,MAAM,IAAIK,GAKd,MAHmC,mBAAxBG,GACPA,EAAoBK,GAEjB79sB,EAAMu9sB,GAASnqvB,KAAKsqvB,EAC/B,CAGI,OADAtuoB,EAAI4toB,WAAY,EACT5jC,EAAItxN,GAAGg1P,kBAAkBe,EAExC,GACKzzhB,MAAM,SAAUnlH,GACjB,GAAIA,EAAIsiL,MACgB,IAAnBtiL,EAAIsiL,IAAI79J,QAAmC,MAAnBzkB,EAAIsiL,IAAI79J,SACjC00lB,GAAc,EAAG,CACjB,IAAI2/B,EAAwC,IAA1Bh8vB,KAAKC,IAAI,EAAGo8tB,GAE9B,OADAA,IACOp+qB,EAAM+9sB,GACR3qvB,KAAKsqvB,EACd,CACA,MAAMz4oB,CACV,GA7BW/xG,QAAQyK,OAAO,IAAI0/uB,GA8BlC,EACA,OAAOK,IACFtzhB,MAAM,SAAUnlH,GAEjB,MADAmK,EAAI4toB,WAAY,EACV/3oB,CACV,EACJ,CACJ,CCtGA,SAAS+4oB,GAAgB5kC,EAAKtxN,EAAInnd,EAAK9xB,EAAKugG,GAGxC,GADAvgG,EAAM2S,EADN3S,EAAMA,GAAO8xB,GAET9vC,MAAMyb,QAAQuC,GAAM,CAEpB,IADA,IAAIk3U,EAAS,GACJ7lR,EAAI,EAAG+9qB,EAAKpvuB,EAAIle,OAAQuvE,EAAI+9qB,EAAI/9qB,IACrC6lR,EAAO11V,KAAK2tvB,GAAgB5kC,EAAKtxN,EAAInnd,EAAK9xB,EAAIqxD,GAAIkvC,IAEtD,OAAO22O,CACX,CACA,IAAIm4Z,EAAWrvuB,EAAIsvuB,WAAa,CAAC,EACjC,IAAK,IAAIp3vB,KAAOm3vB,EACP73vB,OAAOsW,UAAUxU,eAAeyU,KAAKshvB,EAAUn3vB,KAGhDylB,EAAS0xuB,EAASn3vB,KAAS8J,MAAMyb,QAAQ4xuB,EAASn3vB,OAClDm3vB,EAASn3vB,GAAOi3vB,GAAgB5kC,EAAKtxN,EAAInnd,EAAKu9sB,EAASn3vB,GAAMqoH,IAGrE,IAAI6yK,ECpBR,SAAmBm3b,EAAKtxN,EAAInnd,EAAK9xB,EAAKugG,GAClC,IAAI6yK,EAAM,CAAC,EACX,IAAK,IAAIy1b,KAAY7osB,EAAI+osB,OACrB,GAAKvxtB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAI+osB,OAAQF,GAAtD,CAGA,IAAI/xlB,EAAO92G,EAAI+osB,OAAOF,GAItB,GAHiB,SAAbA,IACAA,EAAW/xlB,EAAK71H,MAEhB61H,EAAKp5G,KACL01Q,EAAIy1b,GAAY/xlB,OAGpB,GACS,SADD+xlB,EAEAz1b,EAAI6uX,KAAOwsG,GAAUlkC,EAAKz4qB,EAAKyuE,OAEnC,CACI,IAAI/9G,EAAK0rvB,GAAQ3jC,EAAKtxN,EAAInnd,EAAK9xB,EAAK82G,EAAMvW,GACtC/9G,IACA4wR,EAAIy1b,GAAYrmtB,EACpB,CAjBR,CAoBJ,OAAO4wR,CACX,CDNcm8d,CAAUhlC,EAAKtxN,EAAInnd,EAAK9xB,EAAKugG,GAIvC,OAHA/oH,OAAOC,OAAO43vB,EAAUj8d,GACxBpzQ,EAAM+jN,EAAK/jN,EAAK,YAAa,UAC7BxoB,OAAOC,OAAOuoB,EAAKqvuB,GACZrvuB,CACX,CE1BA,MAAMwvuB,GACF,WAAArhvB,CAAYo8sB,EAAKtxN,EAAInnd,EAAM,MACvBpkC,KAAKjK,UAAOe,EACZkJ,KAAKmtH,YAASr2H,EACVstC,IACApkC,KAAKjK,KAAOquC,EACZt6C,OAAOC,OAAOiW,KAAMyhvB,GAAgB5kC,EAAKtxN,EAAInnd,EAAKA,EAAK,CAAC,WACjDpkC,KAAKkitB,WACO,uBAAf99qB,EAAI+oF,QAAoC/oF,EAAIi3qB,SAC5Cr7sB,KAAK2iC,OAAS,WACV,OAAOhsC,QAAQC,QAAQ20f,EAAGg1P,oBAC9B,GAGZ,ECbJ,SAASwB,GAA0BllC,GAC/B,MAAMtxN,EAAK,CACPp+X,OAAQgznB,GAAkBzksB,KAAK,KAAMmhqB,GACrC5plB,OAAO5+H,GPOf,SAA2BwotB,EAAKtxN,EAAIl3f,GAChC,IAAKA,IAASA,EAAK6ttB,WAAY,CAC3B,IAAIA,EAAam+B,GAAmBxjC,GACpC,IAAIqF,EAMA,OAAOvrtB,QAAQyK,OAAO,IAAIm7sB,EAAa,6BALvClotB,EAAO,CACH6ttB,WAAYA,EAMxB,CACA,OAAOi+B,GAAkBtjC,EAAKxotB,GACzBwC,KAAK,SAAUutC,GAChB,OAAOmnd,EAAGg1P,kBAAkBn8sB,EAChC,EACJ,COtBmB49sB,CAAkBnlC,EAAKtxN,EAAIl3f,GAEtCutU,OAAQw+a,GAAkB1ksB,KAAK,KAAMmhqB,GACrCqL,WAAW7ztB,GPoBnB,SAAyBwotB,EAAKtxN,EAAIl3f,GAC9B,IAAKA,IAASA,EAAK6ttB,WAAY,CAC3B,IAAIA,EAAam+B,GAAmBxjC,GACpC,IAAIqF,EAMA,OAAOvrtB,QAAQyK,OAAO,IAAIm7sB,EAAa,+BALvClotB,EAAO,CACH6ttB,WAAYA,EAMxB,CACA,OAKJ,SAAyBrF,EAAKxotB,GAE1B,OADAA,EAAO4rvB,GAAcpjC,EAAKxotB,GACnB4nO,GAAK4gf,EAAKA,EAAI4F,kBAAoB,2BAA4BputB,EAAM,CAAE4zR,iBAAiB,GAClG,CARWg6d,CAAgBplC,EAAKxotB,GACvBwC,KAAK,SAAUutC,GAChB,OAAOmnd,EAAGg1P,kBAAkBn8sB,EAChC,EACJ,COnCmB89sB,CAAgBrlC,EAAKtxN,EAAIl3f,GAEpCksvB,kBAAoBn8sB,GACT,IAAI09sB,GAAqBjlC,EAAKtxN,EAAInnd,GAE7Ck8sB,kBAAmB,CAAC7ypB,EAAKp5F,EAAMzE,IACpB0wvB,GAAkBzjC,EAAKtxN,EAAI99Z,EAAKp5F,EAAMzE,IAGrD,OAAO27f,CACX,CC8FA,MAAM+qP,GCjHN,WACI,MAAM6L,ECMV,WACI,MAAMC,EAA0BxG,KAChC,OAAO,cAAqCwG,EACxC,WAAA3hvB,CAAY7Q,GACRyjD,MAAMzjD,GACNoQ,KAAKmhU,SAAWvxU,EAAQuxU,SACxBnhU,KAAKupuB,mBAAqB35uB,EAAQ25uB,kBACtC,EAER,CDfmC8Y,GAC/B,OAAO,cAAoCF,EACvC,WAAA1hvB,CAAY7Q,GACRyjD,MAAMzjD,GACNoQ,KAAK0jtB,KAAO9ztB,EAAQ8ztB,KACpB1jtB,KAAK2jtB,gBAAkB/ztB,EAAQ+ztB,gBAC/B3jtB,KAAK4jtB,cAAgBh0tB,EAAQg0tB,cAC7B5jtB,KAAKoS,IAAMxiB,EAAQwiB,GACvB,EAER,CDsG2BkwuB,GACrB5L,GG3GN,WACI,MAAM6L,ECFC,cAAkC5F,GACrC,WAAAl8uB,CAAYm8uB,EAAuBrU,EAAe3nB,GAC9CvtqB,MAAMupsB,EAAuBrU,EAAe3nB,EAChD,CACA,qBAAA4hC,CAAsB5yvB,GAElB8svB,GADA9svB,EAAUoQ,KAAK68uB,qBAAqB,cAAejtvB,IAEnD,MAAMimC,EAAU71B,KAAKqhtB,WAAWzxtB,GAC1Bw4F,EAAax4F,EAAQw4F,YAAcq2nB,EACzC,OAAO,IAAI89B,GAAY1mtB,EAASuyD,EACpC,CACA,0BAAAq6pB,CAA2B7yvB,GAEvB8svB,GADA9svB,EAAUoQ,KAAK68uB,qBAAqB,qBAAsBjtvB,IAE1D,MAAMimC,EAAU71B,KAAKqhtB,WAAWzxtB,GAC1Bw4F,EAAax4F,EAAQw4F,YAAcs2nB,EACzC,OAAO,IAAI69B,GAAY1mtB,EAASuyD,EACpC,CACA,qBAAAyvpB,CAAsBjovB,GAElB8svB,GADA9svB,EAAUoQ,KAAK68uB,qBAAqB,eAAgBjtvB,IAEpD,MAAMimC,EAAU71B,KAAKqhtB,WAAWzxtB,GAC1Bw4F,EAAax4F,EAAQw4F,YAAcu2nB,EACzC,OAAO,IAAI49B,GAAY1mtB,EAASuyD,EACpC,GDrBJ,OAAO,cAAgCm6pB,EACnC,WAAA9hvB,CAAYm8uB,EAAuBrU,EAAe3nB,GAC9CvtqB,MAAMupsB,EAAuBrU,EAAe3nB,EAChD,CACA,qBAAA8hC,CAAsB9yvB,GAClB,IAAIimC,EACJ,GAAIorX,KACA,IACIprX,EAAU71B,KAAK4gtB,YAAYgnB,iBAAiB,SAAUh4uB,EAC1D,CACA,MAAO5K,GACH6nB,EAAK,0IACT,KAEC,CACD,MAAM81uB,EAAqB3ivB,KAAKwivB,sBAAsB5yvB,GAClD+yvB,IACA9stB,EAAU,CACNotD,QAAUz4F,IACN,MAAM6quB,EAAcstB,EAAmBthC,aACvC,OAAIgU,GAAeA,EAAY7quB,GACpB6quB,EAAY7quB,GAEhB,MAEX44F,QAAS,CAAC54F,EAAKm9B,KACX,MAAM0tsB,EAAcstB,EAAmBthC,aACvC,IAAKgU,EACD,MAAM,IAAI9Y,EAAa,yDAE3B8Y,EAAY7quB,GAAOm9B,EACnBg7tB,EAAmB3c,WAAW3Q,IAElClyoB,WAAa34F,IACT,MAAM6quB,EAAcstB,EAAmBthC,aAClCgU,WAGEA,EAAY7quB,GACnBm4vB,EAAmB3c,WAAW3Q,MAI9C,CACA,OAAKx/rB,EAGE,IAAI0mtB,GAAY1mtB,EAAS+orB,GAFrB,IAGf,EAER,CHuDuBgkC,GAEjBC,GKnHN,SAA2BxM,EAA2BC,EAAoBC,GACtE,MAAMO,EAAO,GAAmBT,EAA2BC,EAAoBC,GCAnF,IAAkBrxc,EACV1hS,EDCJ,OCFc0hS,EDCW4xc,GCClBtzuB,EAAK,cAA0B0hS,EAC9B,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAKoS,ICkBrB,SAAsByqsB,GtKbtB,IAA2BimC,IsKcL,CACd14B,YAAa,EACbC,qBAAoB,ItKfxBvguB,OAAOC,OAAO+/B,GAAKg5tB,GsKiBnB,MAAMC,EAAwB,GAAiBrnsB,KAAK,KAAMmhqB,GAmC1D,MAlCY,CACRuH,SAAUA,GAAS1oqB,KAAK,KAAMmhqB,GAC9BqL,WAAYA,GAAWxsqB,KAAK,KAAMmhqB,GAClCwI,gBAAiB,GAAa3pqB,KAAK,KAAMmhqB,GACzC+R,aAAcA,GAAalzqB,KAAK,KAAMmhqB,GACtC/mpB,SAAUA,GAASpa,KAAK,KAAMmhqB,GAC9BpwtB,MAAOs2vB,EACPC,iBAAkBD,EAClBxuG,KAAMA,GAAK74lB,KAAK,KAAMmhqB,GACtByK,QAAS,GAAQ5rqB,KAAK,KAAMmhqB,GAC5Bl6qB,OAAQA,GAAO+Y,KAAK,KAAMmhqB,GAC1B0Y,gBAAiBA,GAAgB75qB,KAAK,KAAMmhqB,GAC5C2Y,8BAA+BA,GAA8B95qB,KAAK,KAAMmhqB,GACxE0Z,sBAAuBA,GAAsB76qB,KAAK,KAAMmhqB,GACxDgZ,2BAA0B,GAC1BV,0BAA2BA,GAA0Bz5qB,KAAK,KAAMmhqB,GAChEmY,sBAAqB,GACrBE,yBAAwB,GACxBH,2BAA0B,GAC1BkuB,wBAAyB,GAAwBvnsB,KAAK,KAAMmhqB,GAC5DqmC,sBAAuB,GAAsBxnsB,KAAK,KAAMmhqB,GACxDsmC,mBAAoB,GAAmBznsB,KAAK,KAAMmhqB,GAClDumC,oBAAqB,GAAoB1nsB,KAAK,KAAMmhqB,GACpDwmC,qBAAsB,GAAqB3nsB,KAAK,KAAMmhqB,GACtDymC,uBAAsB,GACtB52B,QAAUhJ,IACN7G,EAAIjttB,QAAQ8ztB,KAAOA,GAEvB+I,QAAS,IACE5P,EAAIjttB,QAAQ8ztB,KAEvB0R,WAAY,GAAW15qB,KAAK,KAAMmhqB,GAClC+Y,cAAeA,GAAcl6qB,KAAK,KAAMmhqB,GAGhD,CD3D2B0mC,CAAavjvB,MACxBA,KAAKm6uB,YAAc,GAAYz+rB,KAAK,KAAM17C,KAC9C,IAEDwjvB,SAAW,EACdhgvB,CDPR,CL+GgBigvB,CAAkB/M,GAAgBJ,GQnHlD,WACI,MAAMoN,ECEC,MACH,WAAAjjvB,CAAY7Q,GACRoQ,KAAK8gtB,eAAiBlxtB,EAAQkxtB,eAC9B9gtB,KAAKs8uB,qBAAsD,IAAhC1svB,EAAQ0svB,oBACnCt8uB,KAAK2jvB,kBAAgD,IAA7B/zvB,EAAQ+zvB,iBAChC3jvB,KAAKpQ,QAAUA,CACnB,CACA,KAAAmrE,CAAMnrE,EAAU,CAAC,GACb,MAAM+yvB,EAAqB3ivB,KAAK8gtB,eAAe0hC,wBACzCzqtB,EAAO4qtB,EAAmBthC,aAEhC,GADAshC,EAAmBtmB,eACfr8tB,KAAKs8uB,sBAAsD,IAA/B1svB,EAAQ49tB,mBAA8B,CAClE,MAAM79tB,EAAQC,EAAQD,QAAUooC,aAAmC,EAASA,EAAKpoC,OAC7EA,GCepB,SAA2CmxtB,EAAgBnxtB,GACvD,MAAMmovB,EAAgBh3B,EAAe2hC,6BAC/Bv9rB,EAAU4yrB,EAAcz2B,oBACvBn8pB,EAAQv1D,GACfmovB,EAAc9R,WAAW9grB,EAC7B,CDnBoB0+rB,CAAkC5jvB,KAAK8gtB,eAAgBnxtB,EAE/D,CACJ,CACA,IAAA88B,CAAKsL,EAAMnoC,EAAU,CAAC,GAClB,IAAIimC,EAAU71B,KAAK8gtB,eAAe0hC,wBAE9BvF,GADQpntB,EAAQwrrB,gBACWzxtB,EAAQq0tB,aACnCp3sB,EAAK,2GAETgpB,EAAQmwsB,WAAWjusB,GACf/3B,KAAKs8uB,qBAAuBvktB,EAAKpoC,OCfjD,SAAwCmxtB,EAAgBnxtB,EAAOooC,GAC3D,MAAM+/sB,EAAgBh3B,EAAe2hC,6BAC/Bv9rB,EAAU4yrB,EAAcz2B,aAC9Bn8pB,EAAQv1D,GAAS,CACbk0vB,YAAah7uB,KAAKC,MAClBustB,YAAat9rB,GAEjB+/sB,EAAc9R,WAAW9grB,EAC7B,CDQgB4+rB,CAA+B9jvB,KAAK8gtB,eAAgB/orB,EAAKpoC,MAAOooC,EAExE,CACA,MAAA6pS,CAAOhyU,EAAU,CAAC,GACd,IAEI,QADaoQ,KAAKgpN,KAAKp5N,EAE3B,CACA,MAAO4T,GACH,OAAO,CACX,CACJ,CACA,IAAAwlN,CAAKp5N,EAAU,CAAC,GACZ,IAAImoC,EACJ,OAAI/3B,KAAKs8uB,qBAAuB1svB,EAAQD,QC1CpD,SAA4BmxtB,GACxB,MAAMg3B,EAAgBh3B,EAAe2hC,6BAC/Bv9rB,EAAU4yrB,EAAcz2B,aAC9Bv3tB,OAAOO,KAAK66D,GAASlzD,QAAQrC,IACzB,MAAMiiD,EAAQsT,EAAQv1D,GACVkZ,KAAKC,MAAQ8oC,EAAMiysB,YANZ,aAQR3+rB,EAAQv1D,KAGvBmovB,EAAc9R,WAAW9grB,EAC7B,CDgCgB6+rB,CAAmB/jvB,KAAK8gtB,gBACxB/orB,ECvBhB,SAA0C+orB,EAAgBnxtB,GACtD,MAEMiiD,EAFgBkvqB,EAAe2hC,6BACPphC,aACR1xtB,GACtB,OAAIiiD,GAASA,EAAMyjrB,aAAe4nB,GAAkBrrsB,EAAMyjrB,aAC/CzjrB,EAAMyjrB,YAEV,IACX,CDeuB2uB,CAAiChkvB,KAAK8gtB,eAAgBlxtB,EAAQD,OACjEstvB,GAAkBlltB,IACXA,GAIfA,EADc/3B,KAAK8gtB,eAAe0hC,wBACnBnhC,aACX47B,GAAkBlltB,GACXA,EAEJ,KACX,GDtDJ,OAAO,cAAoC2rtB,EACvC,WAAAjjvB,CAAY7Q,GACRyjD,MAAMzjD,EACV,CACA,KAAAmrE,CAAMnrE,EAAU,CAAC,GACbyjD,MAAM0nB,MAAMnrE,IACqB,IAA7BA,EAAQq0vB,kBACRjkvB,KAAKikvB,kBAEb,CACA,eAAAt1B,CAAgB54tB,GACZ,IAAKiK,KAAK2jvB,iBACN,OAEJ,MAAM9ttB,EAAU71B,KAAK8gtB,eAAe4hC,wBAC/B7stB,GAGLA,EAAQmwsB,WAAWjwuB,EACvB,CACA,eAAAqytB,CAAgBx4tB,GACZ,IAAKoQ,KAAK2jvB,iBACN,OAAO,KAEX,MAAM9ttB,EAAU71B,KAAK8gtB,eAAe4hC,wBACpC,IAAK7stB,EACD,OAAO,KAEX,MAAMqutB,EAAcrutB,EAAQwrrB,aAC5B,IAAK6iC,IAAgBl8B,GAAiBk8B,EAAY78B,gBAC9C,OAAO,KAEX,GAAIz3tB,EAAS,CACT,MAAM,YAAE04tB,EAAW,kBAAEtE,GAAsBp0tB,EAC3C,IAAKA,EAAQk7tB,sBAAwBxC,GAAe47B,EAAY57B,cAAgBA,EAC5E,OAAO,KAEX,GAAItE,GAAqBkgC,EAAYlgC,oBAAsBA,EACvD,OAAO,IAEf,CACA,OAAOkgC,CACX,CACA,gBAAAD,GACI,IAAKjkvB,KAAK2jvB,iBACN,OAEJ,MAAM9ttB,EAAU71B,KAAK8gtB,eAAe4hC,wBACpC7stB,SAAkDA,EAAQwmsB,cAC9D,EAER,CR6D2B8nB,IWnH3B,IAAwBj/c,GXsHxB,MAAMk/c,GYnHN,SAAoBl/c,GAChB,OAAO,cAAyBA,EAC5B,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAKqkvB,MAAQrkvB,KAAKurf,GAAKw2P,GAA0B/hvB,MACjDA,KAAKm6uB,YAAc,GAAYz+rB,KAAK,KAAM17C,KAC9C,CACA,YAAMskvB,CAAOv0tB,GACTA,EAAO9K,EAAM8K,GAAQ,CAAC,GACtB,MAAMw0tB,EAAsB30vB,WACjBmgC,EAAKy0tB,gBACLxkvB,KAAKurf,GAAG+0P,kBAAkB,gBAAiBvwtB,EAAMngC,IAE5D,OAAKmgC,EAAKy0tB,gBAGHxkvB,KAAKm6uB,cACPtjvB,KAAK,SAAUsjvB,GAChB,OAAOoK,EAAmB,CACtBv9pB,QAAS,CACL,uBAAwBmzpB,IAGpC,GATWoK,GAUf,CACA,2BAAME,CAAsB10tB,GACxB,OAAO/vB,KAAKskvB,OAAOv0tB,EACvB,CACA,cAAA20tB,CAAe30tB,GACX,OAAO/vB,KAAKurf,GAAG+0P,kBAAkB,kCAAmCvwtB,EACxE,CACA,aAAA6lsB,CAAc7lsB,GACV,OAAO/vB,KAAKurf,GAAG+0P,kBAAkB,gCAAiCvwtB,EACtE,CACA,mBAAA40tB,CAAoB50tB,GAChB,MAAM,0BAAE60tB,GAA8B70tB,EAAM17B,EAAOivtB,GAAOvzrB,EAAM,CAAC,8BAIjE,OAHI60tB,IACAvwvB,EAAKzE,QAAU,CAAEg1vB,8BAEd5kvB,KAAKurf,GAAG+0P,kBAAkB,+BAAgCjsvB,EACrE,EAER,CZyEkBwwvB,EWtHM3/c,GXqHa29c,GWpH1B,cAAgC39c,GACnC,WAAAzkS,IAAepM,GACXg/C,SAASh/C,GACT2L,KAAK8kvB,UAAYh7vB,OAAOo7D,QAAQ,GAC3Bj0D,OAAO,EAAEsC,KAAmB,YAATA,GACnBjJ,OAAO,CAACoL,GAAMnC,EAAMuB,MACrBY,EAAInC,GAAQuB,EAAG4mD,KAAK,KAAM17C,MACnBtK,GACR,CAAC,EACR,KX6GR,MAAMqvvB,WAAiBX,GACnB,WAAA3jvB,CAAY7Q,GACRyjD,MAAMzjD,EACV,E,+BavIJ,IAAI8iB,EAAS,gBACT1rB,EAAW,EAAQ,KACnB4kQ,EAAsB,EAAQ,OAC9BwpO,EAAiB,EAAQ,OACzBC,EAAyB,EAAQ,OAEjC2vR,EAAkB,kBAClBz4f,EAAmBX,EAAoB73P,IACvCwhe,EAAmB3pO,EAAoBU,UAAU04f,GAIrD5vR,EAAe70d,OAAQ,SAAU,SAAUi1d,GACzCjpO,EAAiBvsP,KAAM,CACrBgQ,KAAMg1uB,EACNlhwB,OAAQkD,EAASwue,GACjBh/d,MAAO,GAIX,EAAG,WACD,IAGIq4B,EAHAl/B,EAAQ4le,EAAiBv1d,MACzBlc,EAAS6L,EAAM7L,OACf0S,EAAQ7G,EAAM6G,MAElB,OAAIA,GAAS1S,EAAOsQ,OAAeihe,OAAuBv+d,GAAW,IACrE+3B,EAAQnc,EAAO5uB,EAAQ0S,GACvB7G,EAAM6G,OAASq4B,EAAMz6B,OACdihe,EAAuBxmc,GAAO,GACvC,E,yBCrBQ,SAAWhuC,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFC,MACxF,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,yDAAyDF,MAC/D,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQod,KAAKs9E,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wBAEnB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNC,EAAG,kBACHC,GAAI,aACJC,EAAG,SACHC,GAAI,YACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJo2B,EAAG,UACHi/H,GAAI,aACJp1J,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERM,uBAAwB,8BACxBC,QAAS,SAAU8+C,GACf,IAAIikiB,EAAYjkiB,EAAS,GACrBkkiB,EAAclkiB,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhBkkiB,EACAlkiB,EAAS,MACTkkiB,EAAc,IAAMA,EAAc,GAClClkiB,EAAS,MACK,IAAdikiB,EACAjkiB,EAAS,MACK,IAAdikiB,EACAjkiB,EAAS,MACK,IAAdikiB,GAAiC,IAAdA,EACnBjkiB,EAAS,MAETA,EAAS,KAExB,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA3FyCC,CAAQ,EAAQ,O,yBCL1Dm9F,EAAOj9F,QAAU,SAA2Bg9G,EAAIi4H,EAAUC,GACxD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACnBmS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,IACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,MAKvG,IAAIqphB,EAAW,SAAWnrhB,EAC1B,IAAKmS,EACH,GAAInmB,EAAQ1xN,OAASqtG,EAAG1xE,KAAK8if,cAAgBpxa,EAAG6jH,OAAO5gL,YAAc56C,OAAOO,KAAKo3G,EAAG6jH,OAAO5gL,YAAYtwC,OAAQ,CAC7G,IAAIkxpB,EAAY,GACZn3T,EAAOroI,EACX,GAAIqoI,EAGF,IAFA,IAAIm6T,EAAW/xc,GAAM,EACnBx6I,EAAKoyR,EAAK/5V,OAAS,EACdmiN,EAAKx6I,GAAI,CACduslB,EAAYn6T,EAAK53I,GAAM,GACvB,IAAI2uiB,EAAezjpB,EAAG6jH,OAAO5gL,WAAW4jnB,GAClC48F,GAAgBzjpB,EAAG0S,KAAKgwV,eAAe+gT,EAAczjpB,EAAG0/H,MAAMr7L,OAClEw/mB,EAAUA,EAAUlxpB,QAAUk0pB,EAElC,CAEJ,MACMhD,EAAYx/b,EAGpB,GAAImmB,GAAWq5a,EAAUlxpB,OAAQ,CAC/B,IAAIuxpB,EAAoBlkjB,EAAGi6H,UACzByphB,EAAgBl5gB,GAAWq5a,EAAUlxpB,QAAUqtG,EAAG1xE,KAAK8if,aACvDpuE,EAAiBhjW,EAAG1xE,KAAK20a,cAC3B,GAAIvqO,EAEF,GADA1wH,GAAO,eAAiB,EAAS,KAC7B07oB,EAAe,CACZl5gB,IACHxiI,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAEvE,IAEE+8iB,EAAmB,QADnBgC,EAAgB,SAAW1ub,EAAO,KADhC+S,EAAK,IAAM/S,GACgC,KACA,OAC3Cr4H,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKipgB,YAAYuoC,EAAmB6C,EAAe/mjB,EAAG1xE,KAAKstlB,eAE/E5zgB,GAAO,QAAU,EAAW,YACxBwiI,IACFxiI,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,SAAW,EAAW,MAAQ,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC7Jg7V,IACFh7V,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,UAAY,EAAW,cAC1BwiI,IACFxiI,GAAO,SAETA,GAAO,UAAY,EAAW,UAC1BqxH,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,EAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,YACT,KAAO,CACLA,GAAO,SACP,IAwBIqxH,EAxBAlhH,EAAO0riB,EACX,GAAI1riB,EAGF,IAFA,IAAkBizH,GAAM,EACtB7wK,EAAK49C,EAAKxlH,OAAS,EACdy4O,EAAK7wK,GACVyplB,EAAe7riB,EAAKizH,GAAM,GACtBA,IACFpjI,GAAO,QAITA,GAAO,SADL88iB,EAAWlsb,GADT8rb,EAAQ1kjB,EAAG0S,KAAK43H,YAAY05a,KAEF,kBAC1BhhN,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,gBAAkB,EAAS,MAAShI,EAAG0S,KAAK6mH,eAAev5H,EAAG1xE,KAAKstlB,aAAeooC,EAAeU,GAAU,OAGtH18iB,GAAO,QAEL+8iB,EAAmB,QADjBgC,EAAgB,UAAY1ub,GACe,OAC3Cr4H,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG1xE,KAAKstlB,aAAe57gB,EAAG0S,KAAKipgB,YAAYuoC,EAAmB6C,GAAe,GAAQ7C,EAAoB,MAAQ6C,IAE9H1tb,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,EAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,YACT,MAEA,GAAI07oB,EAAe,CAIjB,IACE38F,EAJGv8a,IACHxiI,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAIrE+8iB,EAAmB,QADnBgC,EAAgB,SAAW1ub,EAAO,KADhC+S,EAAK,IAAM/S,GACgC,KACA,OAC3Cr4H,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKipgB,YAAYuoC,EAAmB6C,EAAe/mjB,EAAG1xE,KAAKstlB,eAE3EpxY,IACFxiI,GAAO,QAAU,EAAa,sBAAwB,EAAa,sBAC3C,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,EAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,0FAA4F,EAAa,sBAElHA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,aAAe,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC9Ig7V,IACFh7V,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,qBACiB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,EAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,mFACHwiI,IACFxiI,GAAO,QAEX,KAAO,CACL,IAAIu8iB,EAAOV,EACX,GAAIU,EAGF,IAFA,IAAIP,EAAcQ,GAAM,EACtBC,EAAKF,EAAK5xpB,OAAS,EACd6xpB,EAAKC,GAAI,CACdT,EAAeO,EAAKC,GAAM,GAC1B,IAAIE,EAAQ1kjB,EAAG0S,KAAK43H,YAAY05a,GAE9Bc,GADAC,EAAmB/kjB,EAAG0S,KAAK8mH,aAAawqb,GAC7Bprb,EAAQ8rb,GACjB1kjB,EAAG1xE,KAAKgjf,yBACVtxa,EAAGi6H,UAAYj6H,EAAG0S,KAAKmyiB,QAAQX,EAAmBF,EAAchkjB,EAAG1xE,KAAKstlB,eAE1E5zgB,GAAO,SAAW,EAAa,kBAC3Bg7V,IACFh7V,GAAO,8CAAgD,EAAU,MAAUhI,EAAG0S,KAAK8mH,aAAawqb,GAAiB,OAEnHh8iB,GAAO,qBACiB,IAApBhI,EAAGs5H,cACLtxH,GAAO,yDAA4EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kCAAqC,EAAqB,QACnM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBACHhI,EAAG1xE,KAAKgjf,uBACVtpa,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACT,CAEJ,CAEFhI,EAAGi6H,UAAYiqb,CACjB,MAAWxrb,IACT1wH,GAAO,gBAET,OAAOA,CACT,C,yBC1QA/nB,EAAOj9F,QAAU,SAA+Bg9G,EAAIi4H,EAAUC,GAC5D,IAUEkS,EAVEpiI,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UAEzBC,EAAQ,QAAUN,GAAY,IAC9BkS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAEjB,IAAIs/hB,EAAkB,aAAZ1rhB,EAA0B,IAAM,IAC1CjwH,GAAO,QACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,sBAExD,IAApBhI,EAAG1xE,KAAKitf,QACVvza,GAAO,IAAM,EAAU,WAEvBA,GAAO,eAAiB,EAAU,KAEpCA,GAAO,IAAM,EAAQ,IAAM,EAAiB,OAC5C,IAAImiI,EAAgBlS,EAChBoB,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,iBAAoBmiI,GAAiB,gBAAkB,oCAA0CnqI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAAyB,EAAiB,OACxM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,8BAELA,GADc,aAAZiwH,EACK,SAEA,UAETjwH,GAAO,SAELA,GADEwiI,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdxiI,GAAO,iBAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAK,EAEdxiI,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,aChFA,MACE,IAAIzkH,EAAI,CACJ,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MAAMv1B,OAChBQ,EAAEP,QAAUk/E,GAEd,KAAM3+E,IACJA,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,OAAQA,EAAE3lB,QACR,KAAK,EACH,OAAOpP,EAAEqb,KAAKO,GAChB,KAAK,EACH,OAAO5b,EAAEqb,KAAKO,EAAGmZ,EAAE,IACrB,KAAK,EACH,OAAO/0B,EAAEqb,KAAKO,EAAGmZ,EAAE,GAAIA,EAAE,IAC3B,KAAK,EACH,OAAO/0B,EAAEqb,KAAKO,EAAGmZ,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEnC,OAAO/0B,EAAE8b,MAAMF,EAAGmZ,EACpB,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAImgB,EAAE,MACN10B,EAAI00B,EAAE,MACNvB,EAAIuB,EAAE,MACN2pE,EAAI55F,OAAOsW,UAAUxU,eACvB5G,EAAEP,QAAU,SAASO,EAAG4b,GACtB,IAAImZ,EAAIlZ,EAAE7b,GACRY,GAAKm0B,GAAK92B,EAAE+B,GACZmb,GAAK4Z,IAAMn0B,GAAKgU,EAAE5U,GAClB3B,GAAK02B,IAAMn0B,IAAMua,GAAKqY,EAAExzB,GACxB7B,EAAI42B,GAAKn0B,GAAKua,GAAK9c,EACnBE,EAAIJ,EAAIwgF,EAAE3+E,EAAEoP,OAAQmM,QAAU,GAC9BmB,EAAIne,EAAE6Q,OACR,IAAK,IAAIzQ,KAAKqB,GACV4b,IAAM8iF,EAAErjF,KAAKrb,EAAGrB,IACfR,IACE,UAAYQ,GACVwc,IAAM,UAAYxc,GAAK,UAAYA,IACnCN,IAAM,UAAYM,GAAK,cAAgBA,GAAK,cAAgBA,IAC7D0B,EAAE1B,EAAG+d,KACTne,EAAEuQ,KAAKnQ,GACX,OAAOJ,CACT,GAEF,KAAMyB,IACJA,EAAEP,QAAU,SAASO,EAAG4b,GACtB,IAAK,IAAImZ,GAAK,EAAG4pD,EAAI,MAAQ3+E,EAAI,EAAIA,EAAEoP,OAAQnR,EAAIqR,MAAMqvE,KAAM5pD,EAAI4pD,GACjE1gF,EAAE82B,GAAKnZ,EAAE5b,EAAE+0B,GAAIA,EAAG/0B,GACpB,OAAO/B,CACT,GAEF,KAAM,CAAC+B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAI/W,OAAOsW,UAAUxU,eACvB5G,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,IAAIngB,EAAI5U,EAAE4b,GACTC,EAAER,KAAKrb,EAAG4b,IAAM3d,EAAE2W,EAAGmgB,UAAO,IAAWA,GAAKnZ,KAAK5b,IAAO2+E,EAAE3+E,EAAG4b,EAAGmZ,EACnE,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACV/0B,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,aAAenZ,GAAK+iE,EAChBA,EAAE3+E,EAAG4b,EAAG,CAAEq2B,cAAc,EAAIvL,YAAY,EAAI/lC,MAAOo0B,EAAG0R,UAAU,IAC/DzmC,EAAE4b,GAAKmZ,CACd,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI+pE,EAAIA,EAAEnvC,iBAAc,EAC1BxvC,EAAEP,QAAU,SAASO,GACnB,OAAO,MAAQA,OACX,IAAWA,EAAI,qBAAuB,gBACtC4U,GAAKA,KAAK9P,OAAO9E,GAAK/B,EAAE+B,GAAK6b,EAAE7b,EACrC,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,OAAO/B,EAAE+B,IAAM,sBAAwB2+E,EAAE3+E,EAC3C,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAImgB,EAAE,KACN10B,EAAI,8BACJmzB,EAAIizF,SAASrrG,UACbsjF,EAAI55F,OAAOsW,UACXxa,EAAI4yB,EAAExxB,SACNmZ,EAAIujF,EAAE93F,eACNvI,EAAIyuC,OACF,IACElsC,EACGya,KAAKF,GACLpc,QAAQ,sBAAuB,QAC/BA,QAAQ,yDAA0D,SACrE,KAENiB,EAAEP,QAAU,SAASO,GACnB,SAAU6b,EAAE7b,IAAM/B,EAAE+B,MAAQ2+E,EAAE3+E,GAAK3B,EAAIgC,GAAGnD,KAAK0X,EAAE5U,GACnD,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI,CAAC,EACNA,EAAE,yBAA2BA,EAAE,yBAA2BA,EAAE,sBAAwBA,EACnF,uBACEA,EAAE,uBAAyBA,EAAE,uBAAyBA,EACxD,8BACEA,EAAE,wBAA0BA,EAAE,yBAA0B,EACzDA,EAAE,sBAAwBA,EAAE,kBAAoBA,EAAE,wBAA0BA,EAC3E,oBACEA,EAAE,qBAAuBA,EAAE,iBAAmBA,EAAE,kBAAoBA,EACtE,qBACEA,EAAE,gBAAkBA,EAAE,mBAAqBA,EAAE,mBAAqBA,EACpE,mBACEA,EAAE,gBAAkBA,EAAE,mBAAqBA,EAAE,qBAAsB,EACtE5U,EAAEP,QAAU,SAASO,GACpB,OAAO6b,EAAE7b,IAAM/B,EAAE+B,EAAEoP,WAAawF,EAAE+pE,EAAE3+E,GACtC,GAEJ,IAAK,CAACA,EAAG4b,EAAGmZ,KACV,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAI/W,OAAOsW,UAAUxU,eACvB5G,EAAEP,QAAU,SAASO,GACnB,IAAK2+E,EAAE3+E,GAAI,OAAO/B,EAAE+B,GACpB,IAAI4b,EAAI,GACR,IAAK,IAAImZ,KAAKjwB,OAAO9E,GAAI6b,EAAER,KAAKrb,EAAG+0B,IAAM,eAAiBA,GAAKnZ,EAAE9M,KAAKimB,GACtE,OAAOnZ,CACT,GAEF,IAAK,CAAC5b,EAAG4b,EAAGmZ,KACV,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI9P,OAAOsW,UAAUxU,eACvB5G,EAAEP,QAAU,SAASO,GACnB,IAAK2+E,EAAE3+E,GAAI,OAAO6b,EAAE7b,GACpB,IAAI4b,EAAI3d,EAAE+B,GACR+0B,EAAI,GACN,IAAK,IAAI10B,KAAKL,GAAI,eAAiBK,IAAOub,GAAKhH,EAAEyG,KAAKrb,EAAGK,KAAQ00B,EAAEjmB,KAAKzO,GACxE,OAAO00B,CACT,GAEF,KAAM/0B,IACJA,EAAEP,QAAU,SAASO,GACnB,OAAO,SAAS4b,GACd,OAAO,MAAQ5b,OAAI,EAASA,EAAE4b,EAChC,CACF,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,IACR/0B,EAAEP,QAAU,SAASO,EAAG4b,GACtB,OAAOC,EAAE5d,EAAE+B,EAAG4b,EAAG+iE,GAAI3+E,EAAI,GAC3B,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI3W,EACA,SAAS+B,EAAG4b,GACV,OAAO3d,EAAE+B,EAAG,WAAY,CACtBiyC,cAAc,EACdvL,YAAY,EACZ/lC,MAAOg+E,EAAE/iE,GACT6qB,UAAU,GAEd,EACA5qB,EACN7b,EAAEP,QAAUmV,GAEd,KAAM5U,IACJA,EAAEP,QAAU,SAASO,EAAG4b,GACtB,IAAK,IAAImZ,GAAK,EAAG4pD,EAAIrvE,MAAMtP,KAAM+0B,EAAI/0B,GAAK2+E,EAAE5pD,GAAKnZ,EAAEmZ,GACnD,OAAO4pD,CACT,GAEF,IAAK,CAAC3+E,EAAG4b,EAAGmZ,KACV,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAImgB,EAAE,MACN10B,EAAIs+E,EAAIA,EAAEvjE,eAAY,EACtBoY,EAAInzB,EAAIA,EAAE2B,cAAW,EACvBhC,EAAEP,QAAU,SAASO,EAAE4b,GACrB,GAAI,iBAAmBA,EAAG,OAAOA,EACjC,GAAIC,EAAED,GAAI,OAAO3d,EAAE2d,EAAG5b,GAAK,GAC3B,GAAI4U,EAAEgH,GAAI,OAAO4X,EAAIA,EAAEnY,KAAKO,GAAK,GACjC,IAAImZ,EAAInZ,EAAI,GACZ,MAAO,KAAOmZ,GAAK,EAAInZ,IAAK,IAAY,KAAOmZ,CACjD,GAEF,KAAM/0B,IACJA,EAAEP,QAAU,SAASO,GACnB,OAAO,SAAS4b,GACd,OAAO5b,EAAE4b,EACX,CACF,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACV/0B,EAAEP,QAAU,SAASO,EAAG4b,GACtB,OAAO+iE,EAAE/iE,EAAG,SAASA,GACnB,OAAO5b,EAAE4b,EACX,EACF,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,EAAGlZ,GAC5B,IAAIjH,GAAKmgB,EACTA,IAAMA,EAAI,CAAC,GACX,IAAK,IAAI10B,GAAK,EAAGmzB,EAAI5X,EAAExM,SAAU/O,EAAImzB,GAAK,CACxC,IAAIkrE,EAAI9iF,EAAEvb,GACRO,EAAIib,EAAIA,EAAEkZ,EAAE2pE,GAAI1+F,EAAE0+F,GAAIA,EAAG3pE,EAAG/0B,QAAK,OACnC,IAAWY,IAAMA,EAAIZ,EAAE0+F,IAAK9pF,EAAI3W,EAAE82B,EAAG2pE,EAAG99F,GAAK+9E,EAAE5pD,EAAG2pE,EAAG99F,EACvD,CACA,OAAOm0B,CACT,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MAAM,sBAChB/0B,EAAEP,QAAUk/E,GAEd,KAAM,CAAC3+E,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,OAAO2+E,EAAE,SAAS/iE,EAAGmZ,GACnB,IAAI4pD,GAAK,EACP9iE,EAAIkZ,EAAE3lB,OACNwF,EAAIiH,EAAI,EAAIkZ,EAAElZ,EAAI,QAAK,EACvBxb,EAAIwb,EAAI,EAAIkZ,EAAE,QAAK,EACrB,IACEngB,EAAI5U,EAAEoP,OAAS,GAAK,mBAAqBwF,GAAKiH,IAAKjH,QAAK,EACtDvU,GAAKpC,EAAE82B,EAAE,GAAIA,EAAE,GAAI10B,KAAQuU,EAAIiH,EAAI,OAAI,EAASjH,EAAKiH,EAAI,GACzDD,EAAI9W,OAAO8W,KACX+iE,EAAI9iE,GAEN,CACA,IAAI2X,EAAIuB,EAAE4pD,GACVnrD,GAAKxzB,EAAE4b,EAAG4X,EAAGmrD,EAAG/pE,EAClB,CACA,OAAOgH,CACT,EACF,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI6G,OAAOsW,UACXS,EAAI5d,EAAE2I,eACR5G,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,EAAGngB,GAC5B,YAAO,IAAW5U,GAAM2+E,EAAE3+E,EAAG/B,EAAE82B,MAAQlZ,EAAER,KAAKzG,EAAGmgB,GAAMnZ,EAAI5b,CAC7D,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,KACR92B,EAAI,WACF,IACE,IAAI+B,EAAI2+E,EAAE75E,OAAQ,kBAClB,OAAO9E,EAAE,CAAC,EAAG,GAAI,CAAC,GAAIA,CACxB,CAAE,MAAOA,GAAI,CACd,CALG,GAMNA,EAAEP,QAAUxB,GAEd,KAAM,CAAC+B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,KAAFA,CAAQ,CAAE,IAAK,QAAS,IAAK,OAAQ,IAAK,OAAQ,IAAK,SAAU,IAAK,UAC9E/0B,EAAEP,QAAUk/E,GAEd,KAAM3+E,IACJ,IAAI4b,EAAI,CACN,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAEZ5b,EAAEP,QAAU,SAASO,GACnB,MAAO,KAAO4b,EAAE5b,EAClB,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI,iBAAmB5pD,EAAEpY,GAAKoY,EAAEpY,GAAKoY,EAAEpY,EAAE7X,SAAWA,QAAUiwB,EAAEpY,EACpE3c,EAAEP,QAAUk/E,GAEd,IAAK,CAAC3+E,EAAG4b,EAAGmZ,KACV,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,EAAG4b,GACtB,IAAImZ,EAAI92B,EAAE+B,EAAG4b,GACb,OAAO+iE,EAAE5pD,GAAKA,OAAI,CACpB,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,KAAFA,CAAQjwB,OAAO2rC,eAAgB3rC,QACvC9E,EAAEP,QAAUk/E,GAEd,KAAM,CAAC3+E,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI6G,OAAOsW,UACXS,EAAI5d,EAAE2I,eACNgO,EAAI3W,EAAE+D,SACN3B,EAAIs+E,EAAIA,EAAEnvC,iBAAc,EAC1BxvC,EAAEP,QAAU,SAASO,GACnB,IAAI4b,EAAIC,EAAER,KAAKrb,EAAGK,GAChB00B,EAAI/0B,EAAEK,GACR,IACEL,EAAEK,QAAK,EACP,IAAIs+E,GAAI,CACV,CAAE,MAAO3+E,GAAI,CACb,IAAI/B,EAAI2W,EAAEyG,KAAKrb,GACf,OAAO2+E,IAAM/iE,EAAK5b,EAAEK,GAAK00B,SAAY/0B,EAAEK,IAAKpC,CAC9C,GAEF,KAAM+B,IACJA,EAAEP,QAAU,SAASO,EAAG4b,GACtB,OAAO,MAAQ5b,OAAI,EAASA,EAAE4b,EAChC,GAEF,KAAM5b,IACJ,IAAI4b,EAAI,mBACR5b,EAAEP,QAAU,SAASO,EAAG+0B,GACtB,IAAI4pD,SAAW3+E,EACf,SACK+0B,EAAI,MAAQA,EAAI,iBAAmBA,KACrC,UAAY4pD,GAAM,UAAYA,GAAK/iE,EAAE1e,KAAK8C,KAC3CA,GAAK,GACLA,EAAI,GAAK,GACTA,EAAI+0B,CAER,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAImgB,EAAE,MACR/0B,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,IAAKngB,EAAEmgB,GAAI,OAAO,EAClB,IAAI10B,SAAWub,EACf,SAAU,UAAYvb,EAAIpC,EAAE82B,IAAMlZ,EAAED,EAAGmZ,EAAE3lB,QAAU,UAAY/O,GAAKub,KAAKmZ,IAAM4pD,EAAE5pD,EAAEnZ,GAAI5b,EACzF,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EACF1gF,EAAI82B,EAAE,MACNlZ,GAAK8iE,EAAI,SAASt+C,KAAMpiC,GAAKA,EAAEoH,MAAQpH,EAAEoH,KAAKq8G,UAAa,KACvD,iBAAmB/iC,EACnB,GACN3+E,EAAEP,QAAU,SAASO,GACnB,QAAS6b,GAAKA,KAAK7b,CACrB,GAEF,KAAMA,IACJ,IAAI4b,EAAI9W,OAAOsW,UACfpb,EAAEP,QAAU,SAASO,GACnB,IAAI+0B,EAAI/0B,GAAKA,EAAEyb,YACf,OAAOzb,KAAQ,mBAAqB+0B,GAAKA,EAAE3Z,WAAcQ,EAC3D,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,KAAFA,CAAQjwB,OAAOO,KAAMP,QAC7B9E,EAAEP,QAAUk/E,GAEd,KAAM3+E,IACJA,EAAEP,QAAU,SAASO,GACnB,IAAI4b,EAAI,GACR,GAAI,MAAQ5b,EAAG,IAAK,IAAI+0B,KAAKjwB,OAAO9E,GAAI4b,EAAE9M,KAAKimB,GAC/C,OAAOnZ,CACT,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX/0B,EAAI+0B,EAAEsruB,IAAIrgwB,GACV,IAAI2+E,EAAI5pD,EAAE,MACR92B,EAAI2d,IAAMA,EAAE6nG,UAAY7nG,EACxBC,EAAI5d,GAAK+B,IAAMA,EAAEyjH,UAAYzjH,EAC7B4U,EAAIiH,GAAKA,EAAEpc,UAAYxB,GAAK0gF,EAAE82D,QAC9Bp1I,EAAI,WACF,IACE,OAAOuU,GAAKA,EAAE87Q,SAAW97Q,EAAE87Q,QAAQ,OACrC,CAAE,MAAO1wR,GAAI,CACd,CAJG,GAKNA,EAAEP,QAAUY,GAEd,KAAML,IACJ,IAAI4b,EAAI9W,OAAOsW,UAAUpZ,SACzBhC,EAAEP,QAAU,SAASO,GACnB,OAAO4b,EAAEP,KAAKrb,EAChB,GAEF,KAAMA,IACJA,EAAEP,QAAU,SAASO,EAAG4b,GACtB,OAAO,SAASmZ,GACd,OAAO/0B,EAAE4b,EAAEmZ,GACb,CACF,GAEF,KAAM,CAAC/0B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAIuC,KAAKmE,IACX3E,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,OACGnZ,EAAI3d,OAAE,IAAW2d,EAAI5b,EAAEoP,OAAS,EAAIwM,EAAG,GACxC,WACE,IAAK,IAAIC,EAAI1M,UAAWyF,GAAK,EAAGvU,EAAIpC,EAAE4d,EAAEzM,OAASwM,EAAG,GAAI4X,EAAIlkB,MAAMjP,KAAMuU,EAAIvU,GAC1EmzB,EAAE5e,GAAKiH,EAAED,EAAIhH,GACfA,GAAK,EACL,IAAK,IAAI8pF,EAAIpvF,MAAMsM,EAAI,KAAMhH,EAAIgH,GAAK8iF,EAAE9pF,GAAKiH,EAAEjH,GAC/C,OAAQ8pF,EAAE9iF,GAAKmZ,EAAEvB,GAAKmrD,EAAE3+E,EAAGgb,KAAM0jF,EACnC,CAEJ,GAEF,KAAM1+F,IACJA,EAAEP,QAAU,oBAEd,KAAMO,IACJA,EAAEP,QAAU,mBAEd,KAAMO,IACJA,EAAEP,QAAU,oBAEd,KAAM,CAACO,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI,iBAAmBq/F,MAAQA,MAAQA,KAAKx4F,SAAWA,QAAUw4F,KACjEzhF,EAAI8iE,GAAK1gF,GAAKwoH,SAAS,cAATA,GAChBzmH,EAAEP,QAAUoc,GAEd,GAAI,CAAC7b,EAAG4b,EAAGmZ,KACT,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,KAAFA,CAAQ4pD,GACd3+E,EAAEP,QAAUxB,GAEd,KAAM+B,IACJ,IAAI4b,EAAIiI,KAAKC,IACb9jB,EAAEP,QAAU,SAASO,GACnB,IAAI+0B,EAAI,EACN4pD,EAAI,EACN,OAAO,WACL,IAAI1gF,EAAI2d,IACNC,EAAI,IAAM5d,EAAI0gF,GAChB,GAAMA,EAAI1gF,EAAI4d,EAAI,GAChB,KAAMkZ,GAAK,IAAK,OAAO5lB,UAAU,QAC5B4lB,EAAI,EACX,OAAO/0B,EAAE8b,WAAM,EAAQ3M,UACzB,CACF,GAEF,IAAKnP,IACH,IAAI4b,EAAI6qG,SAASrrG,UAAUpZ,SAC3BhC,EAAEP,QAAU,SAASO,GACnB,GAAI,MAAQA,EAAG,CACb,IACE,OAAO4b,EAAEP,KAAKrb,EAChB,CAAE,MAAOA,GAAI,CACb,IACE,OAAOA,EAAI,EACb,CAAE,MAAOA,GAAI,CACf,CACA,MAAO,EACT,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI3W,EAAE,SAAS+B,EAAG4b,EAAGmZ,EAAG92B,GACtB0gF,EAAE/iE,EAAGC,EAAED,GAAI5b,EAAG/B,EAChB,GACF+B,EAAEP,QAAUmV,GAEd,KAAM,CAAC5U,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI3W,EAAE,SAAS+B,EAAG4b,GAChB,IACE,OAAO+iE,EAAE3+E,OAAG,EAAQ4b,EACtB,CAAE,MAAO5b,GACP,OAAO6b,EAAE7b,GAAKA,EAAI,IAAIuiB,MAAMviB,EAC9B,CACF,GACFA,EAAEP,QAAUmV,GAEd,KAAM5U,IACJA,EAAEP,QAAU,SAASO,GACnB,OAAO,WACL,OAAOA,CACT,CACF,GAEF,KAAMA,IACJA,EAAEP,QAAU,SAASO,EAAG4b,GACtB,OAAO5b,IAAM4b,GAAM5b,GAAKA,GAAK4b,GAAKA,CACpC,GAEF,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAI,WACJjH,EAAIk4B,OAAOjxB,EAAE0Q,QACfvsB,EAAEP,QAAU,SAASO,GACnB,OAAQA,EAAI/B,EAAE+B,KAAO4U,EAAE1X,KAAK8C,GAAKA,EAAEjB,QAAQ8c,EAAG8iE,GAAK3+E,CACrD,GAEF,KAAMA,IACJA,EAAEP,QAAU,SAASO,GACnB,OAAOA,CACT,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAI/W,OAAOsW,UACXxG,EAAIiH,EAAEjV,eACNvG,EAAIwb,EAAEshF,qBACN3pE,EAAImrD,EACF,WACE,OAAOxvE,SACR,CAFD,IAIEwvE,EACA,SAAS3+E,GACP,OAAO/B,EAAE+B,IAAM4U,EAAEyG,KAAKrb,EAAG,YAAcK,EAAEgb,KAAKrb,EAAG,SACnD,EACNA,EAAEP,QAAU+zB,GAEd,KAAMxzB,IACJ,IAAI4b,EAAItM,MAAMyb,QACd/qB,EAAEP,QAAUmc,GAEd,KAAM,CAAC5b,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,OAAO,MAAQA,GAAK/B,EAAE+B,EAAEoP,UAAYuvE,EAAE3+E,EACxC,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX/0B,EAAI+0B,EAAEsruB,IAAIrgwB,GACV,IAAI2+E,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAID,IAAMA,EAAE6nG,UAAY7nG,EACxBhH,EAAIiH,GAAK7b,IAAMA,EAAEyjH,UAAYzjH,EAC7BK,EAAIuU,GAAKA,EAAEnV,UAAYoc,EAAI8iE,EAAEkzD,YAAS,EACtCr+G,GAAKnzB,EAAIA,EAAEyxI,cAAW,IAAW7zI,EACnC+B,EAAEP,QAAU+zB,GAEd,KAAM,CAACxzB,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,IAAK/B,EAAE+B,GAAI,OAAO,EAClB,IAAI4b,EAAI+iE,EAAE3+E,GACV,MACE,kBAAoB4b,GACpB,yBAA2BA,GAC1B,iBAAmB5b,EAAEorG,SAAW,iBAAmBprG,EAAEuO,OAASsN,EAAE7b,EAErE,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,IAAK/B,EAAE+B,GAAI,OAAO,EAClB,IAAI4b,EAAI+iE,EAAE3+E,GACV,MACE,qBAAuB4b,GACvB,8BAAgCA,GAChC,0BAA4BA,GAC5B,kBAAoBA,CAExB,GAEF,KAAM5b,IACJA,EAAEP,QAAU,SAASO,GACnB,MAAO,iBAAmBA,GAAKA,GAAK,GAAKA,EAAI,GAAK,GAAKA,GAAK,gBAC9D,GAEF,KAAMA,IACJA,EAAEP,QAAU,SAASO,GACnB,IAAI4b,SAAW5b,EACf,OAAO,MAAQA,IAAM,UAAY4b,GAAK,YAAcA,EACtD,GAEF,KAAM5b,IACJA,EAAEP,QAAU,SAASO,GACnB,OAAO,MAAQA,GAAK,iBAAmBA,CACzC,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAI6xG,SAASrrG,UACb/a,EAAIyE,OAAOsW,UACXoY,EAAI5e,EAAE5S,SACN08F,EAAIr+F,EAAEuG,eACNhG,EAAI4yB,EAAEnY,KAAKvW,QACb9E,EAAEP,QAAU,SAASO,GACnB,IAAK6b,EAAE7b,IAAM,mBAAqB2+E,EAAE3+E,GAAI,OAAO,EAC/C,IAAI4b,EAAI3d,EAAE+B,GACV,GAAI,OAAS4b,EAAG,OAAO,EACvB,IAAImZ,EAAI2pE,EAAErjF,KAAKO,EAAG,gBAAkBA,EAAEH,YACtC,MAAO,mBAAqBsZ,GAAKA,aAAaA,GAAKvB,EAAEnY,KAAK0Z,IAAMn0B,CAClE,GAEF,KAAM,CAACZ,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,MAAO,iBAAmBA,GAAM/B,EAAE+B,IAAM,mBAAqB2+E,EAAE3+E,EACjE,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAIiH,GAAKA,EAAE20nB,aACXnwoB,EAAIuU,EAAI3W,EAAE2W,GAAK+pE,EACjB3+E,EAAEP,QAAUY,GAEd,KAAM,CAACL,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,KACNlZ,EAAIkZ,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,OAAO6b,EAAE7b,GAAK2+E,EAAE3+E,GAAK/B,EAAE+B,EACzB,GAEF,KAAM,CAACA,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,KACNlZ,EAAIkZ,EAAE,MACR/0B,EAAEP,QAAU,SAASO,GACnB,OAAO6b,EAAE7b,GAAK2+E,EAAE3+E,GAAG,GAAM/B,EAAE+B,EAC7B,GAEF,KAAMA,IACJA,EAAEP,QAAU,WACV,OAAO,CACT,GAEF,KAAM,CAACO,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI82B,EAAE,MACNlZ,EAAIkZ,EAAE,MACNngB,EAAImgB,EAAE,MACN10B,EAAI00B,EAAE,MACNvB,EAAIuB,EAAE,MACN2pE,EAAI3pE,EAAE,MACNn0B,EAAIm0B,EAAE,MACN5Z,EAAI4Z,EAAE,MACN12B,EAAI02B,EAAE,MACN52B,EAAI42B,EAAE,MACNx2B,EAAI,iBACJme,EAAI,qBACJ/d,EAAI,gCACJie,EAAI,kCACJD,EAAI,OACJQ,EAAI,yBACNnd,EAAEP,QAAU,SAASO,EAAG4b,EAAGmZ,GACzB,IAAIlgB,EAAIxW,EAAEiiwB,QAAQ1jvB,EAAE2+M,kBAAoBl9N,EACxC02B,GAAK2pE,EAAE1+F,EAAG4b,EAAGmZ,KAAOnZ,OAAI,GAAU5b,EAAI7B,EAAE6B,GAAM4b,EAAI+iE,EAAE,CAAC,EAAG/iE,EAAG/G,EAAGD,GAC9D,IAAInW,EACF8C,EACA5E,EAAIgiF,EAAE,CAAC,EAAG/iE,EAAE0kvB,QAASzrvB,EAAEyrvB,QAAS1rvB,GAChCosB,EAAIpgC,EAAEjE,GACN8vB,EAAI5Q,EAAElf,EAAGqkC,GACThN,EAAI,EACJ9X,EAAIN,EAAE0mB,aAAe3lB,EACrBgZ,EAAI,WACJ1B,EAAI6Y,QACDlxB,EAAE6/M,QAAU9+M,GAAG4P,OACd,IACArQ,EAAEqQ,OACF,KACCrQ,IAAMf,EAAIyB,EAAID,GAAG4P,OAClB,KACC3Q,EAAE4/M,UAAY7+M,GAAG4P,OAClB,KACF,KAEFmJ,EAAI,cAAe9Z,EAAI,iBAAmBA,EAAEoyR,UAAY,KAAO,GACjEhuS,EAAEjB,QAAQk1B,EAAG,SAASrY,EAAGmZ,EAAG4pD,EAAG1gF,EAAG4d,EAAGjH,GACnC,OACE+pE,IAAMA,EAAI1gF,GACT03B,GAAK31B,EAAE8V,MAAMke,EAAGpf,GAAG7V,QAAQoe,EAAG9c,GAC/B00B,IAAOt2B,GAAI,EAAMk3B,GAAK,YAAcZ,EAAI,UACxClZ,IAAOta,GAAI,EAAMo0B,GAAK,OAAS9Z,EAAI,eACnC8iE,IAAMhpD,GAAK,iBAAmBgpD,EAAI,+BACjC3qD,EAAIpf,EAAIgH,EAAExM,OACXwM,CAEJ,GACG+Z,GAAK,OACR,IAAIG,EAAIla,EAAEsgN,SACVpmM,IAAMH,EAAI,iBAAmBA,EAAI,SAC9BA,GAAKp0B,EAAIo0B,EAAE52B,QAAQR,EAAG,IAAMo3B,GAAG52B,QAAQ2d,EAAG,MAAM3d,QAAQJ,EAAG,OAC3Dg3B,EACC,aACCG,GAAK,OACN,SACCA,EAAI,GAAK,wBACV,qBACCr3B,EAAI,mBAAqB,KACzB8C,EACG,uFACA,OACJo0B,EACA,gBACJ,IAAIf,EAAI32B,EAAE,WACR,OAAOwoH,SAASzlF,EAAGtL,EAAI,UAAYC,GAAG7Z,WAAM,EAAQ2Q,EACtD,GACA,GAAMmI,EAAErI,OAASoJ,EAAInC,EAAEoB,GAAK,MAAMA,EAClC,OAAOA,CACT,GAEF,KAAM,CAAC50B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,MACR92B,EAAI,CACFw9N,OAAQ1mM,EAAE,MACVymM,SAAUzmM,EAAE,MACZuN,YAAavN,EAAE,MACfmnM,SAAU,GACVokiB,QAAS,CAAE1jvB,EAAG,CAAE6+M,OAAQ98I,KAE5B3+E,EAAEP,QAAUxB,GAEd,KAAM,CAAC+B,EAAG4b,EAAGmZ,KACX,IAAI4pD,EAAI5pD,EAAE,KACV/0B,EAAEP,QAAU,SAASO,GACnB,OAAO,MAAQA,EAAI,GAAK2+E,EAAE3+E,EAC5B,IAGJ4b,EAAI,CAAC,EACP,SAASmZ,EAAE4pD,GACT,IAAI1gF,EAAI2d,EAAE+iE,GACV,QAAI,IAAW1gF,EAAG,OAAOA,EAAEwB,QAC3B,IAAIoc,EAAKD,EAAE+iE,GAAK,CAAE5lE,GAAI4lE,EAAG+/iB,QAAQ,EAAIj/nB,QAAS,CAAC,GAC/C,OAAOO,EAAE2+E,GAAG9iE,EAAGA,EAAEpc,QAASs1B,GAAKlZ,EAAE6inB,QAAS,EAAK7inB,EAAEpc,OACnD,CACCs1B,EAAElZ,EAAI7b,IACL,IAAI4b,EAAI5b,GAAKA,EAAEu9F,WAAa,IAAMv9F,EAAEw9F,QAAU,IAAMx9F,EACpD,OAAO+0B,EAAEx2B,EAAEqd,EAAG,CAAEhH,EAAGgH,IAAMA,GAExBmZ,EAAEx2B,EAAI,CAACyB,EAAG4b,KACT,IAAK,IAAI+iE,KAAK/iE,EACZmZ,EAAE4pD,EAAE/iE,EAAG+iE,KAAO5pD,EAAE4pD,EAAE3+E,EAAG2+E,IAAM75E,OAAOwY,eAAetd,EAAG2+E,EAAG,CAAEj4C,YAAY,EAAI73B,IAAK+M,EAAE+iE,MAEnF5pD,EAAEpY,EAAI,WACL,GAAI,iBAAmB0gF,WAAY,OAAOA,WAC1C,IACE,OAAOriF,MAAQ,IAAIyrG,SAAS,cAAb,EACjB,CAAE,MAAOzmH,GACP,GAAI,iBAAmBmC,OAAQ,OAAOA,MACxC,CACD,CAPM,GAQN4yB,EAAE4pD,EAAI,CAAC3+E,EAAG4b,IAAM9W,OAAOsW,UAAUxU,eAAeyU,KAAKrb,EAAG4b,GACxDmZ,EAAEsruB,IAAMrgwB,IAAOA,EAAE48W,MAAQ,GAAK58W,EAAEwyH,WAAaxyH,EAAEwyH,SAAW,IAAKxyH,GAChE,MACE,aACA,IAAIA,EAAI+0B,EAAE,MACRnZ,EAAImZ,EAAElZ,EAAE7b,GACV,MAAM2+E,EAAI,CACR4hrB,MAAO,CAAExitB,OAAQ,SAAUyZ,QAAS,QAASovP,SAAU,GACvD7uG,KAAM,CAAEh6J,OAAQ,OAAQyZ,QAAS,OAAQovP,SAAU,GACnD3uG,WAAY,CAAEl6J,OAAQ,KAAOyZ,QAAS,aAAcovP,SAAU,GAC9D45c,SAAU,CAAEzitB,OAAQ,KAAMyZ,QAAS,WAAYovP,SAAU,GACzDzuG,OAAQ,CAAEp6J,OAAQ,EAAGyZ,QAAS,SAAUovP,SAAU,GAClDvuG,MAAO,CAAEt6J,OAAQ,OAAS,KAAMyZ,QAAS,QAASovP,SAAU,GAC5D65c,OAAQ,CAAE1itB,OAAQ,QAASyZ,QAAS,SAAUovP,SAAU,GACxD85c,SAAU,CAAE3itB,OAAQ,EAAGyZ,QAAS,WAAYovP,SAAU,GACtD+5c,QAAS,CAAE5itB,OAAQ,WAAYyZ,QAAS,UAAWovP,SAAU,IAE/D,IAAI3oT,EAAI,UACN4d,EAAI,CACFg8L,YAAa,UACbC,YAAa,UACbtoL,QAAS,kBACTuoL,KAAM,gBACNC,OAAQ,MAAQ/5M,EAChBg6M,WAAY,UACZC,WAAY,UACZC,OAAQl6M,EACRm6M,OAAQn6M,EACRo6M,MAAO,kBACPC,YAAa,WACbC,YAAa,WACbC,cAAev6M,EAAI,KACnByxB,QAAS,EACT+oL,MAAO,mBAEX,SAAS7jM,EAAE5U,EAAG4b,EAAGmZ,QACf,IAAWA,IAAMA,EAAI,CAAC,GACtB,IAAI4pD,EAAI,CAAE3zD,KAAM,WAChB,OACG,IAAM+J,EAAEhc,IAAMgc,EAAEhc,MAAQ4lE,EAAE5lE,GAAKgc,EAAEhc,IAClCgc,EAAE6jL,OAASj6H,EAAEi6H,KAAO7jL,EAAE6jL,MACrBj6H,EAAEj/B,WAAa9jC,GAAK,CAAC,EACrB+iE,EAAEk6H,SAAW74M,EACd2+E,CAEJ,CACA,SAASt+E,EAAEL,EAAG4b,EAAGmZ,GACf,QAAK,IAAWA,IAAMA,EAAI,CAAC,GAAI/0B,EAAEoP,OAAS,EACxC,MAAM,IAAImT,MAAM,yDAClB,OAAO3N,EAAE,CAAEoW,KAAM,aAAc8tL,YAAa94M,GAAK4b,EAAGmZ,EACtD,CACA,SAASvB,EAAExzB,EAAG4b,QACZ,IAAWA,IAAMA,EAAI,cACrB,IAAImZ,EAAIlZ,EAAED,GACV,IAAKmZ,EAAG,MAAM,IAAIxS,MAAM3G,EAAI,qBAC5B,OAAO5b,EAAI+0B,CACb,CACA,SAAS2pE,EAAE1+F,GACT,OAAQA,EAAI,IAAOQ,KAAKytB,GAAK,GAC/B,CACA,SAASrtB,EAAEZ,GACT,IAAKA,EAAG,MAAM,IAAIuiB,MAAM,qBACxB,IAAKjT,MAAMyb,QAAQ/qB,GAAI,CACrB,GAAI,YAAcA,EAAEgrB,MAAQ,OAAShrB,EAAE64M,UAAY,UAAY74M,EAAE64M,SAAS7tL,KACxE,OAAOhrB,EAAE64M,SAASC,YACpB,GAAI,UAAY94M,EAAEgrB,KAAM,OAAOhrB,EAAE84M,WACnC,CACA,GAAIxpM,MAAMyb,QAAQ/qB,IAAMA,EAAEoP,QAAU,IAAME,MAAMyb,QAAQ/qB,EAAE,MAAQsP,MAAMyb,QAAQ/qB,EAAE,IAChF,OAAOA,EACT,MAAM,IAAIuiB,MAAM,qDAClB,CACA,MAAMpH,EAAI,SAASnb,EAAG4b,EAAGmZ,QACvB,IAAWA,IAAMA,EAAI,CAAC,GACtB,IAAI4pD,EAAI/9E,EAAEZ,GACR/B,EAAI2C,EAAEgb,GACNC,EAAI6iF,EAAEzgG,EAAE,GAAK0gF,EAAE,IACf/pE,EAAI8pF,EAAEzgG,EAAE,GAAK0gF,EAAE,IACft+E,EAAIq+F,EAAE/f,EAAE,IACRxjE,EAAIujF,EAAEzgG,EAAE,IACRI,EACEmC,KAAKC,IAAID,KAAK4wB,IAAIvV,EAAI,GAAI,GAAKrb,KAAKC,IAAID,KAAK4wB,IAAIxc,EAAI,GAAI,GAAKpU,KAAK6xB,IAAIhyB,GAAKG,KAAK6xB,IAAIlX,GACzF,OAAOqY,EAAE,EAAIhzB,KAAK4vB,MAAM5vB,KAAK0vB,KAAK7xB,GAAImC,KAAK0vB,KAAK,EAAI7xB,IAAK02B,EAAEqmL,MAC7D,EACA,SAAS/8M,EAAE2B,EAAG4b,EAAGmZ,GACf,GAAI,OAAS/0B,EACX,IACE,IAAI2+E,EACF1gF,EACA4d,EACAjH,EACAvU,EACAmzB,EACAkrE,EACA99F,EACAua,EAAI,EACJhd,EAAI,EACJI,EAAIyB,EAAEgrB,KACNtO,EAAI,sBAAwBne,EAC5BI,EAAI,YAAcJ,EAClBqe,EAAIF,EAAI1c,EAAE25M,SAASvqM,OAAS,EAC5BuN,EAAI,EACNA,EAAIC,EACJD,IACA,CACAtc,GAAKO,KACA89F,EAAIhiF,EAAI1c,EAAE25M,SAASh9L,GAAGk8L,SAAWl6M,EAAIqB,EAAE64M,SAAW74M,IACrD,uBAAyB0+F,EAAE1zE,MACzB0zE,EAAEm7G,WAAWzqM,OACb,EACJ,IAAK,IAAI+N,EAAI,EAAGA,EAAI9c,EAAG8c,IAAK,CAC1B,IAAItI,EAAI,EACNpW,EAAI,EACN,GAAI,QAAUmW,EAAIhU,EAAI89F,EAAEm7G,WAAW18L,GAAKuhF,GAAI,CAC1ClrE,EAAI5e,EAAEkkM,YACN,IAAIv3M,EAAIqT,EAAEoW,KACV,OAAU7P,GAAK4Z,GAAM,YAAcxzB,GAAK,iBAAmBA,EAAK,EAAI,EAAIA,GACtE,KAAK,KACH,MACF,IAAK,QACH,IAAI,IAAOqa,EAAE4X,EAAGr1B,EAAGwe,EAAG9H,EAAGpW,GAAI,OAAO,EACpCN,IAAK0W,IACL,MACF,IAAK,aACL,IAAK,aACH,IAAK8pE,EAAI,EAAGA,EAAInrD,EAAEpkB,OAAQuvE,IAAK,CAC7B,IAAI,IAAO/iE,EAAE4X,EAAEmrD,GAAIxgF,EAAGwe,EAAG9H,EAAGpW,GAAI,OAAO,EACvCN,IAAK,eAAiBoD,GAAKsT,GAC7B,CACA,eAAiBtT,GAAKsT,IACtB,MACF,IAAK,UACL,IAAK,kBACH,IAAK8pE,EAAI,EAAGA,EAAInrD,EAAEpkB,OAAQuvE,IAAK,CAC7B,IAAK1gF,EAAI,EAAGA,EAAIu1B,EAAEmrD,GAAGvvE,OAAS+L,EAAGld,IAAK,CACpC,IAAI,IAAO2d,EAAE4X,EAAEmrD,GAAG1gF,GAAIE,EAAGwe,EAAG9H,EAAGpW,GAAI,OAAO,EAC1CN,GACF,CACA,oBAAsBoD,GAAKsT,IAAK,YAActT,GAAK9C,GACrD,CACA,YAAc8C,GAAKsT,IACnB,MACF,IAAK,eACH,IAAK8pE,EAAI,EAAGA,EAAInrD,EAAEpkB,OAAQuvE,IAAK,CAC7B,IAAKlgF,EAAI,EAAGR,EAAI,EAAGA,EAAIu1B,EAAEmrD,GAAGvvE,OAAQnR,IAAK,CACvC,IAAK4d,EAAI,EAAGA,EAAI2X,EAAEmrD,GAAG1gF,GAAGmR,OAAS+L,EAAGU,IAAK,CACvC,IAAI,IAAOD,EAAE4X,EAAEmrD,GAAG1gF,GAAG4d,GAAI1d,EAAGwe,EAAG9H,EAAGpW,GAAI,OAAO,EAC7CN,GACF,CACAM,GACF,CACAoW,GACF,CACA,MACF,IAAK,qBACH,IAAK8pE,EAAI,EAAGA,EAAI/pE,EAAEilM,WAAWzqM,OAAQuvE,IACnC,IAAI,IAAOtgF,EAAEuW,EAAEilM,WAAWl7H,GAAI/iE,EAAGmZ,GAAI,OAAO,EAC9C,MACF,QACE,MAAM,IAAIxS,MAAM,yBAEtB,CACF,CACF,CACJ,CACA,SAASpkB,EAAE6B,EAAG4b,GACZ,IAAImZ,EACF4pD,EACA1gF,EACA4d,EACAjH,EACAvU,EACAmzB,EACAkrE,EACA99F,EACAua,EACA9c,EAAI,EACJF,EAAI,sBAAwB6B,EAAEgrB,KAC9BzsB,EAAI,YAAcyB,EAAEgrB,KACpBtO,EAAIve,EAAI6B,EAAE25M,SAASvqM,OAAS,EAC9B,IAAK2lB,EAAI,EAAGA,EAAIrY,EAAGqY,IAAK,CACtB,IACE10B,EAAIlC,EAAI6B,EAAE25M,SAAS5kL,GAAG8jL,SAAWt6M,EAAIyB,EAAE64M,SAAW74M,EAChD0+F,EAAIvgG,EAAI6B,EAAE25M,SAAS5kL,GAAG2qB,WAAanhD,EAAIyB,EAAE0/C,WAAa,CAAC,EACvD9+C,EAAIzC,EAAI6B,EAAE25M,SAAS5kL,GAAG6jL,KAAOr6M,EAAIyB,EAAE44M,UAAO,EAC1Cz9L,EAAIhd,EAAI6B,EAAE25M,SAAS5kL,GAAGhc,GAAKxa,EAAIyB,EAAE+Y,QAAK,EACtCnE,GAAK4e,IAAMnzB,GAAK,uBAAyBA,EAAE2qB,MAAQ3qB,EAAEw5M,WAAWzqM,OAAS,EACzEnR,EAAI,EACNA,EAAI2W,EACJ3W,IAEA,GAAI,QAAU4d,EAAI2X,EAAInzB,EAAEw5M,WAAW57M,GAAKoC,GACtC,OAAQwb,EAAEmP,MACR,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACH,IAAI,IAAOpP,EAAEC,EAAGxd,EAAGqgG,EAAG99F,EAAGua,GAAI,OAAO,EACpC,MACF,IAAK,qBACH,IAAKwjE,EAAI,EAAGA,EAAI9iE,EAAEg+L,WAAWzqM,OAAQuvE,IACnC,IAAI,IAAO/iE,EAAEC,EAAEg+L,WAAWl7H,GAAItgF,EAAGqgG,EAAG99F,EAAGua,GAAI,OAAO,EACpD,MACF,QACE,MAAM,IAAIoH,MAAM,8BAEjB,IAAI,IAAO3G,EAAE,KAAMvd,EAAGqgG,EAAG99F,EAAGua,GAAI,OAAO,EAC9C9c,GACF,CACF,CA4BA,SAASqe,EAAE1c,EAAG4b,EAAGmZ,GACf,IAAI4pD,EAAI5pD,EACN92B,GAAI,EACN,OACE,SAAU+B,EAAG4b,IA/BjB,SAAW5b,EAAG4b,GACZzd,EAAE6B,EAAG,SAASA,EAAG+0B,EAAG4pD,EAAG1gF,EAAG4d,GACxB,IAAIxb,EACFmzB,EAAI,OAASxzB,EAAI,KAAOA,EAAEgrB,KAC5B,OAAQwI,GACN,KAAK,KACL,IAAK,QACL,IAAK,aACL,IAAK,UACH,OAAO,IAAO5X,EAAEhH,EAAE5U,EAAG2+E,EAAG,CAAEi6H,KAAM36M,EAAG8a,GAAI8C,IAAMkZ,EAAG,SAAM,EAE1D,OAAQvB,GACN,IAAK,aACHnzB,EAAI,QACJ,MACF,IAAK,kBACHA,EAAI,aACJ,MACF,IAAK,eACHA,EAAI,UAER,IAAK,IAAIq+F,EAAI,EAAGA,EAAI1+F,EAAE84M,YAAY1pM,OAAQsvF,IAAK,CAC7C,IAAI99F,EAAIZ,EAAE84M,YAAYp6G,GACtB,IAAI,IAAO9iF,EAAEhH,EAAE,CAAEoW,KAAM3qB,EAAGy4M,YAAal4M,GAAK+9E,GAAI5pD,EAAG2pE,GAAI,OAAO,CAChE,CACF,EACF,CAMMngG,CAAEyB,EAAG,SAASA,EAAG+0B,EAAG4pD,GAClB,IAAI1gF,EAAI,EACR,GAAI+B,EAAE64M,SAAU,CACd,IAAIh9L,EAAI7b,EAAE64M,SAAS7tL,KACnB,GAAI,UAAYnP,GAAK,eAAiBA,EAAG,CACvC,IAAIjH,EACF4e,EAAI,EACJkrE,EAAI,EACJ99F,EAAI,EACN,OACE,IACEvC,EAAE2B,EAAG,SAAS6b,EAAGV,EAAG9c,EAAGF,EAAGI,GACxB,QAAI,IAAWqW,GAAKmgB,EAAIvB,GAAKr1B,EAAIugG,GAAKngG,EAAIqC,EACxC,OAAQgU,EAAIiH,EAAK2X,EAAIuB,EAAK2pE,EAAIvgG,EAAKyC,EAAIrC,OAAUN,EAAI,GACvD,IAAIye,EAAIrc,EAAE,CAACuU,EAAGiH,GAAI7b,EAAE0/C,YACpB,IAAI,IAAO9jC,EAAEc,EAAGqY,EAAG4pD,EAAGpgF,EAAGN,GAAI,OAAO,EACpCA,IAAM2W,EAAIiH,CACZ,SAAM,CAEZ,CACF,CACF,EACD,CAvBD,CAuBG7b,EAAG,SAASA,EAAG6b,EAAGjH,EAAGvU,EAAGmzB,GACxBmrD,GAAI,IAAO1gF,QAAK,IAAW82B,EAAI/0B,EAAI4b,EAAE+iE,EAAG3+E,EAAG6b,EAAGjH,EAAGvU,EAAGmzB,GAAMv1B,GAAI,CACjE,GACA0gF,CAEJ,CACA,IAAIhgF,EAAI,QAqCR,SAASge,EAAE3c,GACT,IAAI4b,EAAI,EACR,GAAI5b,GAAKA,EAAEoP,OAAS,EAAG,CACrBwM,GAAKpb,KAAKM,IAAIqc,EAAEnd,EAAE,KAClB,IAAK,IAAI+0B,EAAI,EAAGA,EAAI/0B,EAAEoP,OAAQ2lB,IAAKnZ,GAAKpb,KAAKM,IAAIqc,EAAEnd,EAAE+0B,IACvD,CACA,OAAOnZ,CACT,CACA,SAASuB,EAAEnd,GACT,IAAI4b,EACFmZ,EACA4pD,EACA1gF,EACA4d,EACAjH,EACAvU,EAAI,EACJmzB,EAAIxzB,EAAEoP,OACR,GAAIokB,EAAI,EAAG,CACT,IAAK5e,EAAI,EAAGA,EAAI4e,EAAG5e,IACjBA,IAAM4e,EAAI,GACJmrD,EAAInrD,EAAI,EAAKv1B,EAAIu1B,EAAI,EAAK3X,EAAI,GAChCjH,IAAM4e,EAAI,GAAMmrD,EAAInrD,EAAI,EAAKv1B,EAAI,EAAK4d,EAAI,IAAQ8iE,EAAI/pE,EAAK3W,EAAI2W,EAAI,EAAKiH,EAAIjH,EAAI,GACjFgH,EAAI5b,EAAE2+E,GACN5pD,EAAI/0B,EAAE/B,GACNoC,IAAMwU,EAAE7U,EAAE6b,GAAG,IAAMhH,EAAE+G,EAAE,KAAOpb,KAAK4wB,IAAIvc,EAAEkgB,EAAE,KAChD10B,EAAIA,EAAI1B,EAAIA,EAAI,CAClB,CACA,OAAO0B,CACT,CACA,SAASwU,EAAE7U,GACT,OAAOA,EAAIQ,KAAKytB,GAAK,GACvB,CACA,SAASxvB,EAAEuB,GACT,OAAOA,EAAI,GAAK,IAAMA,EAAEgC,WAAahC,EAAEgC,UACzC,CACA,SAAST,EAAEvB,EAAG4b,EAAGmZ,GACf,MAAM4pD,EAAIn+E,KAAKM,IAAId,GACjB/B,EAAIuC,KAAKQ,MAAM29E,GACf9iE,EAAIrb,KAAKQ,MAAM,IAAM29E,EAAI1gF,IACzB2W,EAAIpU,KAAK+F,MAAM,MAAQo4E,EAAI1gF,EAAI4d,EAAI,IAAM,KAAO,IAChDxb,EAAIs+E,IAAM3+E,EAAI4b,EAAImZ,EACpB,OAAOt2B,EAAER,GAAK,SAAWQ,EAAEod,GAAK,KAAOpd,EAAEmW,GAAK,KAAOvU,CACvD,CACA,SAAS2gC,EAAEhhC,GACT,MAAM4b,EAAI5b,EAAEA,EAAEoP,OAAS,GACrB2lB,EAAI/0B,EAAE+N,IAAI/N,GAAK,CAACA,EAAE28I,IAAK38I,EAAEukO,MACzB5lJ,EAAIhiF,EAAEikwB,SAAS7ruB,GACf92B,EAAItB,EAAE29M,QAAQvlL,GACdlZ,EACE,KACEjH,EAAI+pE,EAAEkirB,iBACR,KAAYxgwB,EAAI,CAAE+6M,MAAO,iBAAoB/6M,EAAI,CAAC,GAClDqc,EACE9H,EACA,SAAS5U,EAAG4b,GACV,IAAImZ,EAAInZ,EAAEi9L,SAASC,YACnB,OAAO94M,EAAImb,EAAE4Z,EAAE,GAAIA,EAAE,GAAI10B,EAC3B,EACA,IAEN,IAAIuU,EAAGvU,EACP,MAAMmzB,EAjGR,SAAWxzB,GACT,OAAO,SAAUA,GACf,IAAI2+E,EA+BJ,EA9BA,OACExgF,EAAE6B,EAAG,SAASA,EAAG/B,EAAG4d,EAAGjH,EAAGvU,GACxBs+E,EAMJ,SAAS3+E,EAAG4b,GACV,OACE5b,EACA,SAAUA,GACR,IAAI4b,EACFmZ,EAAI,EACN,OAAQ/0B,EAAEgrB,MACR,IAAK,UACH,OAAOrO,EAAE3c,EAAE84M,aACb,IAAK,eACH,IAAKl9L,EAAI,EAAGA,EAAI5b,EAAE84M,YAAY1pM,OAAQwM,IAAKmZ,GAAKpY,EAAE3c,EAAE84M,YAAYl9L,IAChE,OAAOmZ,EACT,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,kBACH,OAAO,EAEX,OAAO,CACR,CAhBD,CAgBGnZ,EAEP,CA3BsCA,CAAE+iE,EAAG3+E,EACzC,GACA2+E,CAEH,CARM,CASL3+E,EAyBJ,CA8DY4c,CAAE3e,EAAE4iwB,aACd,MAAO,CACLC,UAAW,CACTtiwB,GAAI,CAAE+C,EAAGqa,EAAE2oN,IAAK5lO,EAAGid,EAAE+gI,KACrBoknB,IAAK,CAAEx/vB,EAAGA,EAAEqa,EAAE2oN,IAAK,IAAK,KAAM5lO,EAAG4C,EAAEqa,EAAE+gI,IAAK,IAAK,OAEjDvtI,OAAQyM,EACRiuB,KAAMtW,EAEV,CACA,SAAS/G,EAAEzsB,EAAG4b,GACZ,OAAOA,IAAMA,EAAInY,UAAWmY,EAAErD,cAAcvY,EAC9C,CACA,SAASg0B,EAAEh0B,GACT,GAAIA,EAAG,OAAOA,EAAEiZ,aAAa,QAAS,iBAAkBjZ,CAC1D,CACA,SAASkc,EAAElc,GACT,GAAIA,EAAG,OAAOA,EAAEmZ,gBAAgB,SAAUnZ,CAC5C,CACA,MAAM21B,EAAI,CAAEqruB,YAAa,UAAWC,eAAgB,WACpD,MAAMhtuB,EACJ,WAAAxY,CAAYzb,GACVgb,KAAKnQ,SAAWlO,EAAEqhH,OAAO,CAAC,EAAGroF,EAAG3a,KAAKnQ,SAAU7K,EACjD,CACA,SAAAkhwB,CAAUlhwB,GACR,MAAO,CACLmhwB,YAAa,CACXC,WAAW,EACXr4tB,OAAQ,EACR/G,MAAOhnB,KAAKnQ,SAASm2vB,YACrB/+tB,OAAQ,EACRxpB,QAAS,GACTivd,UAAW1sd,KAAKnQ,SAASm2vB,YACzB/kU,YAAa,GACbn3U,UAAW,qBAEbssS,YAAa,CACXgwW,WAAW,EACXz3tB,QAAQ,EACR+9b,UAAW1sd,KAAKnQ,SAASm2vB,YACzB/kU,YAAa,GACbn3U,UAAW,qBAEbu8oB,gBAAiB,CACfD,WAAW,EACXp/tB,MAAOhnB,KAAKnQ,SAASm2vB,YACrB/+tB,OAAQ,EACRxpB,QAAS,GACTgxB,MAAM,EACNq7E,UAAW,yBAEbw8oB,cAAe,CACbF,WAAW,EACXr4tB,OAAQ,EACR/G,MAAOhnB,KAAKnQ,SAASm2vB,YACrB/+tB,OAAQ,EACRxpB,QAAS,EACTivd,UAAW1sd,KAAKnQ,SAASm2vB,YACzB/kU,YAAa,GACbn3U,UAAW,uBAEby8oB,oBAAqB,CACnBH,WAAW,EACXr4tB,OAAQ,EACR/G,MAAOhnB,KAAKnQ,SAASm2vB,YACrB/+tB,OAAQ,EACRxpB,QAAS,EACTivd,UAAW1sd,KAAKnQ,SAASm2vB,YACzB/kU,YAAa,EACbn3U,UAAW,8BAEb08oB,WAAY,CACVJ,WAAW,EACXp/tB,MAAOhnB,KAAKnQ,SAASo2vB,eACrBh/tB,OAAQ,EACRxpB,QAAS,GACTivd,UAAW1sd,KAAKnQ,SAASo2vB,eACzBhlU,YAAa,GACbn3U,UAAW,4BAEb28oB,WAAY,CACVL,WAAW,EACXp/tB,MAAOhnB,KAAKnQ,SAASo2vB,eACrBh/tB,OAAQ,EACRxpB,QAAS,GACTgxB,MAAM,EACNq7E,UAAW,4BAEb48oB,YAAa,CACXN,WAAW,EACXr4tB,OAAQ,EACR/G,MAAOhnB,KAAKnQ,SAASo2vB,eACrBh/tB,OAAQ,EACRxpB,QAAS,EACTivd,UAAW1sd,KAAKnQ,SAASo2vB,eACzBhlU,YAAa,GACbn3U,UAAW,8BAEb9kH,EACJ,EAEF,SAAS01B,EAAE11B,EAAG4b,EAAI,EAAGmZ,EAAI,IAAK4pD,EAAI,KAChC,MAAM1gF,EAAI+B,EAAI,EAAI,IAAM,GACtB6b,EAAIrb,KAAKM,KAAKd,GAAK,GACnB4U,EAAIusB,SAAStlB,EAAEk9H,QAAQn9H,GAAI,IAAM,GACjCvb,EAAIuU,EAAExF,OAAS,EAAIwF,EAAExF,OAAS,EAAI,EACpC,MAAO,CACLnR,EACAoC,EAAIuU,EAAEu4G,OAAO,EAAG9sH,GAAKs+E,EAAI,GACzB/pE,EAAEu4G,OAAO9sH,GAAGtB,QAAQ,iBAAkB,KAAO4/E,GAC7C/iE,EACI,GAAGmZ,IAAIv0B,KAAKM,IAAI+a,EAAIjH,GACjBmkI,QAAQn9H,GACR9F,MAAM,KACT,IACJoD,KAAK,GACT,CACA,MAAM4c,EAAI,CAAEwquB,QAAS,CAAEp5Q,aAAcxxd,GAAK4M,YAAa,mBACrD1N,EAAIhZ,IACF,y4BACAka,GAEFhC,EAAIlY,IACF,gmBACAka,GAEF5B,EAAItY,IACF,ohBACAka,GAEF4uE,EAAI9oF,IACF,8UACAka,GAEFC,EAAIna,IACF,sXACAka,GAEHn5B,EAAE+jc,QAAQihU,QAAUhlwB,EAAE+jc,QAAQ1iV,OAAO,CACpC4jpB,WAAY,0BACZh3vB,QAAS,CACPmG,KAAM,GACNqqM,MAAO,CAAC,EACR7zJ,QAAQ,EACRzjD,SAAU,WACV+9vB,kBAAmB,OACnBC,gBAAiB,QACjBd,YAAa,UACbC,eAAgB,UAChBc,cAAe,IACfC,aAAc,CAAEl9oB,UAAW,8BAA+Bm9oB,eAAgB,CAAC,GAAI,MAEjF19sB,WAAY,SAASvkD,GACnBrD,EAAE2T,WAAW0K,KAAMhb,GACnB,MAAQghwB,YAAaplvB,EAAGqlvB,eAAgBlsuB,GAAM/Z,KAAKpQ,QAClDoQ,KAAKknvB,SAAW,IAAIjuuB,EAAE,CAAE+suB,YAAaplvB,EAAGqlvB,eAAgBlsuB,IACtD/Z,KAAKpQ,QAAQwwM,MAAQz+M,EAAEqhH,OAAO,CAAC,EAAGr/B,EAAG3jE,KAAKpQ,QAAQwwM,OAClDpgM,KAAKgiZ,IAAM,EACZh9Z,EAAE+Q,KAAQiK,KAAKmnvB,aAAeniwB,EAAE+Q,KAASiK,KAAKmnvB,aAAennvB,KAAKpQ,QAAQmG,MAC1E,IAAO/Q,EAAEunD,SAAWvsC,KAAKpQ,QAAQ28C,OAASvnD,EAAEunD,OAChD,EACAmgS,MAAO,SAAS1nV,GACd,GACIgb,KAAK4xY,KAAO5sZ,EACdgb,KAAKonvB,cACLpiwB,EAAE2lH,GAAG,QAAS3qG,KAAKqnvB,UAAWrnvB,MAC7BA,KAAKsnvB,OAAS3lwB,EAAE4lwB,aAAaC,MAAMxiwB,GACpCgb,KAAKmnvB,aAAa/yvB,OAAS,EAC3B,CACA4L,KAAKynvB,cAAgB,KACrB,IAAK,IAAIziwB,EAAI,EAAGA,EAAIgb,KAAKmnvB,aAAa/yvB,OAAQpP,IAC3Cgb,KAAK0nvB,SAAW1nvB,KAAKmnvB,aAAaniwB,GAAGuzC,OACpCv4B,KAAKmnvB,aAAaniwB,GAAG0/C,WAChB1kC,KAAK2nvB,eAAiB3nvB,KAAKmnvB,aAAaniwB,GAAG0/C,WAC3C1kC,KAAK2nvB,eAAiB,CAAEp0vB,KAAM,IACnCyM,KAAK4nvB,4BACT5iwB,EAAE6iwB,YACJ,MACG7nvB,KAAK0nvB,SAAW,GAAM1nvB,KAAK2nvB,eAAiB,CAAEp0vB,KAAM,IAAQyM,KAAKynvB,cAAgB,KACpF,OAAOznvB,KAAKqjkB,UACd,EACAl2P,SAAU,SAASnoV,GACjBA,EAAEioI,IAAI,QAASjtH,KAAKqnvB,UAAWrnvB,MAAOhb,EAAE8iwB,YAAY9nvB,KAAKsnvB,OAC3D,EACAF,YAAa,WACX,MAAMpiwB,EAAIgb,KAAK4mvB,WACbhmvB,EAAKZ,KAAKqjkB,WAAa1hlB,EAAE2hlB,QAAQ5ikB,OAAO,MAAO,GAAG1b,iBACnD4b,EAAEgqL,UAAYhxK,EAAE,CAAEwkV,MAAO,CAAEt0P,UAAW9kH,KACrC4b,EAAE3C,aAAa,iBAAiB,GAChCtc,EAAEgjlB,SAASE,wBAAwBjkkB,GACnCjf,EAAEgjlB,SAASojL,yBAAyBnnvB,GACtC,MAAMmZ,EAAK/Z,KAAKgovB,QAAUv2uB,EAAE,aAAc7Q,GAC1CZ,KAAKiovB,aAAex2uB,EAAE,kBAAmB7Q,GACzC,MAAM+iE,EAAIlyD,EAAE,YAAa7Q,GACvB3d,EAAIwuB,EAAE,aAAc7Q,GACpBC,EAAI4Q,EAAE,aAAc7Q,GACtB,GACIZ,KAAKkovB,aAAez2uB,EAAE,kBAAmB7Q,GAC1CZ,KAAKmovB,iBAAmB12uB,EAAE,sBAAuB7Q,GACjDZ,KAAKoovB,WAAa32uB,EAAE,gBAAiB7Q,GACrCZ,KAAKqovB,SAAW52uB,EAAE,cAAe7Q,GACjCZ,KAAKsovB,cAAgB72uB,EAAE,mBAAoB7Q,GAC5CZ,KAAKqnvB,YACLrnvB,KAAKuovB,2BACJvovB,KAAKwovB,WAAa,EACnB7mwB,EAAEmrR,QAAQ05B,UACP7kT,EAAEgjlB,SAASh6d,GAAG/pG,EAAG,aAAcZ,KAAKyovB,QAASzovB,MAC9Cre,EAAEgjlB,SAASh6d,GAAG/pG,EAAG,aAAcZ,KAAKqnvB,UAAWrnvB,OACjDre,EAAEgjlB,SAASh6d,GAAG5wF,EAAG,QAASp4B,EAAEgjlB,SAASj/jB,MACrC/jB,EAAEmrR,QAAQ0xN,MACN78e,EAAEgjlB,SAASh6d,GAAG5wF,EAAG,QAAS/Z,KAAKyovB,QAASzovB,MACxCre,EAAEgjlB,SAASh6d,GAAG5wF,EAAG,QAAS/Z,KAAKyovB,QAASzovB,MAC5Cre,EAAEgjlB,SAASh6d,GAAGhnC,EAAG,QAAShiF,EAAEgjlB,SAASj/jB,MACrC/jB,EAAEgjlB,SAASh6d,GAAGhnC,EAAG,QAAS3jE,KAAK0ovB,cAAe1ovB,MAC9Cre,EAAEgjlB,SAASh6d,GAAG1nH,EAAG,QAAStB,EAAEgjlB,SAASj/jB,MACrC/jB,EAAEgjlB,SAASh6d,GAAG1nH,EAAG,QAAS+c,KAAK2ovB,cAAe3ovB,MAC9Cre,EAAEgjlB,SAASh6d,GAAG9pG,EAAG,QAASlf,EAAEgjlB,SAASj/jB,MACrC/jB,EAAEgjlB,SAASh6d,GAAG9pG,EAAG,QAASb,KAAK4nvB,0BAA2B5nvB,MAC1DA,KAAKpQ,QAAQ28C,OACb,CACA,MAAMvnD,EAAIysB,EAAE,iBAAkB7Q,GAC9Bjf,EAAEgjlB,SAASh6d,GAAG3lH,EAAG,QAASrD,EAAEgjlB,SAASj/jB,MACnC/jB,EAAEgjlB,SAASh6d,GAAG3lH,EAAG,QAASgb,KAAK4ovB,iBAAkB5ovB,KACrD,MAAOgZ,EAAEvH,EAAE,iBAAkB7Q,GAC/B,EACAiovB,cAAe,WACb7ovB,KAAK2ovB,eACP,EACAG,aAAc,WACZ9ovB,KAAK0ovB,eACP,EACAK,cAAe,WACb/ovB,KAAK4nvB,2BACP,EACAoB,gBAAiB,SAAShkwB,GACvBgb,KAAKwovB,WAAaxjwB,EACjBgb,KAAKwovB,WAAa,IAAMxovB,KAAKwovB,WAAa,GAC1CxovB,KAAKipvB,kBACT,EACAL,iBAAkB,WACf5ovB,KAAKwovB,YAAc,EAClBxovB,KAAKwovB,WAAa,IAAMxovB,KAAKwovB,WAAa,GAC1CxovB,KAAKipvB,kBACT,EACAR,QAAS,WACPzvuB,EAAEhZ,KAAKgovB,SAAU9mvB,EAAElB,KAAKiovB,aAC1B,EACAZ,UAAW,WACTrnvB,KAAKkpvB,UAAYlwuB,EAAEhZ,KAAKiovB,cAAe/mvB,EAAElB,KAAKgovB,SAChD,EACAO,yBAA0B,WACxBvvuB,EAAEhZ,KAAKoovB,YACLpvuB,EAAEhZ,KAAKqovB,UACPrvuB,EAAEhZ,KAAKsovB,eACPtvuB,EAAEhZ,KAAKmovB,kBACPjnvB,EAAElB,KAAKkovB,aACX,EACAiB,8BAA+B,WAC7BnwuB,EAAEhZ,KAAKqovB,UACLnnvB,EAAElB,KAAKoovB,YACPlnvB,EAAElB,KAAKsovB,eACPtvuB,EAAEhZ,KAAKkovB,cACPhnvB,EAAElB,KAAKmovB,iBACX,EACAiB,gCAAiC,WAC/BpwuB,EAAEhZ,KAAKoovB,YACLlnvB,EAAElB,KAAKqovB,UACPnnvB,EAAElB,KAAKsovB,eACPtvuB,EAAEhZ,KAAKkovB,cACPhnvB,EAAElB,KAAKmovB,iBACX,EACAO,cAAe,WACZ1ovB,KAAKkpvB,SAAU,EACblpvB,KAAKqpvB,iBAAmB1nwB,EAAE2nwB,eAAe9B,MAAMxnvB,KAAKsnvB,QACpDtnvB,KAAKupvB,eAAiB5nwB,EAAEgzd,OAAO30c,KAAK4xY,KAAK5oE,YAAa,CACrDo9a,WAAW,EACXoD,aAAcxpvB,KAAKpQ,QAAQm3vB,cAC3BtpvB,QAAS,EACTgsvB,gBAAgB,IACfjC,MAAMxnvB,KAAKsnvB,QACdtnvB,KAAK0pvB,wBACL1pvB,KAAKupvB,eACF5+oB,GAAG,WAAY3qG,KAAK2pvB,mBAAoB3pvB,MACxC2qG,GAAG,WAAY3qG,KAAK4nvB,0BAA2B5nvB,MAC/C2qG,GAAG,QAAS3qG,KAAK4pvB,oBAAqB5pvB,MACzCA,KAAK4xY,KACFjnS,GAAG,YAAa3qG,KAAK6pvB,mBAAoB7pvB,MACzC2qG,GAAG,WAAY3qG,KAAK2pvB,mBAAoB3pvB,MACxC2qG,GAAG,OAAQ3qG,KAAK8pvB,qBAAsB9pvB,MACtC2qG,GAAG,SAAU3qG,KAAK0pvB,sBAAuB1pvB,MAC5Cre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAY,aAAcrjkB,KAAK2pvB,mBAAoB3pvB,MACtEA,KAAKmpvB,gCACLnpvB,KAAK4xY,KAAK4jB,KAAK,eAAgB,MAAM,EACzC,EACAu0V,eAAgB,WACd,MAAM/kwB,EAAIrD,EAAEqhH,OAAO,CAAC,EAAGhjG,KAAKynvB,cAAe,CAAElvtB,OAAQv4B,KAAK0nvB,WAC1D1nvB,KAAK2ovB,gBAAiB3ovB,KAAK4xY,KAAK4jB,KAAK,gBAAiBxwa,GAAG,EAC3D,EACA2jwB,cAAe,WACZ3ovB,KAAKkpvB,SAAU,EACdvnwB,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAY,YAAarjkB,KAAK2pvB,mBAAoB3pvB,MACrEA,KAAK0nvB,SAAW,GAChB1nvB,KAAKynvB,cAAgB,KACtBznvB,KAAKqpvB,mBACFrpvB,KAAKqpvB,iBAAiBW,cAAehqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKqpvB,mBACrErpvB,KAAKiqvB,cAAgBjqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKiqvB,cAClDjqvB,KAAKkqvB,cAAgBlqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKkqvB,cAClDlqvB,KAAKmqvB,kBAAoBnqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKmqvB,kBACrDnqvB,KAAKiqvB,aAAe,KACpBjqvB,KAAKkqvB,aAAe,KACpBlqvB,KAAKmqvB,iBAAmB,KACzBnqvB,KAAKupvB,iBACFvpvB,KAAKupvB,eACHt8nB,IAAI,WAAYjtH,KAAK2pvB,mBAAoB3pvB,MACzCitH,IAAI,WAAYjtH,KAAK4nvB,0BAA2B5nvB,MAChDitH,IAAI,QAASjtH,KAAK4pvB,oBAAqB5pvB,MAC1CA,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKupvB,iBAC/BvpvB,KAAK4xY,KACF3kR,IAAI,YAAajtH,KAAK6pvB,mBAAoB7pvB,MAC1CitH,IAAI,WAAYjtH,KAAK2pvB,mBAAoB3pvB,MACzCitH,IAAI,OAAQjtH,KAAK8pvB,qBAAsB9pvB,MACvCitH,IAAI,SAAUjtH,KAAK0pvB,sBAAuB1pvB,MAC5CA,KAAKqpvB,iBAAmB,KACzBrpvB,KAAKuovB,2BACLvovB,KAAKqnvB,WACT,EACAyC,qBAAsB,WACpB9pvB,KAAKupvB,eAAea,UAAUpqvB,KAAK4xY,KAAK5oE,YAC1C,EACA0gb,sBAAuB,WACrB1pvB,KAAKupvB,eAAec,QAAQ1owB,EAAE2owB,QAAQ,CAAEC,SAAUvqvB,KAAK4xY,KAAKonB,UAAUwxV,WAAW,KACnF,EACAC,8BAA+B,SAASzlwB,GACtC,MAAM4b,EAAIZ,KAAKpQ,QAAQwwM,MACvB,MAAO,CACLsqjB,cAAe3wuB,EACb/0B,EAAEoP,OACF4L,KAAKpQ,QAAQi3vB,kBACb7mvB,KAAKpQ,QAAQ+6vB,oBACb3qvB,KAAKpQ,QAAQg7vB,SACb5qvB,KAAKpQ,QAAQi7vB,cAEfC,YAAa/wuB,EACX/0B,EAAE8pC,KACF9uB,KAAKpQ,QAAQk3vB,gBACb9mvB,KAAKpQ,QAAQm7vB,kBACb/qvB,KAAKpQ,QAAQg7vB,SACb5qvB,KAAKpQ,QAAQi7vB,eAGjB,SAAS9wuB,EAAE/0B,EAAG+0B,EAAG92B,EAAG4d,EAAGjH,GACrB,GAAImgB,GAAKnZ,EAAEmZ,GAAI,CACb,IAAI10B,EAAIs+E,EAAE3+E,EAAG4b,EAAEmZ,GAAIlZ,EAAGjH,GAItB,OAHI3W,GAAK2d,EAAE3d,KACToC,EAAI,GAAGA,MAAMs+E,EAAE3+E,EAAG4b,EAAE3d,GAAI4d,EAAGjH,OAEtBvU,CACT,CACA,OAAOs+E,EAAE3+E,EAAG,KAAM6b,EAAGjH,EACvB,CACA,SAAS+pE,EAAE3+E,EAAG4b,EAAGmZ,EAAG4pD,GAClB,MAAM1gF,EAAItB,EAAEqhH,OAAO,CAAEjgE,OAAQ,EAAG6oQ,SAAU,GAAKhrS,GAC/C,MAAO,CACL8Z,EAAE11B,EAAI/B,EAAE8/C,OAAQ9/C,EAAE2oT,SAAU7xR,GAAK,IAAK4pD,GAAK,KAC3C,CACE4hrB,MAAO,QACPxojB,KAAM,OACNE,WAAY,aACZuojB,SAAU,WACVrojB,OAAQ,SACRE,MAAO,QACPoojB,OAAQ,UACRC,SAAU,YACVC,QAAS,YACT1iwB,EAAEu5D,UAAYv5D,EAAEu5D,SAClBt+C,KAAK,IACT,CACF,EACA8svB,eAAgB,WACd,MAAMhmwB,EAAIghC,EAAEhmB,KAAK0nvB,UACf9mvB,EAAKZ,KAAKynvB,cAAgB9lwB,EAAEqhH,OAAO,CAAC,EAAGh+G,EAAGgb,KAAKyqvB,8BAA8BzlwB,GAAI,CAC/Eq1D,WAAYr6C,KAAK0nvB,SAAStzvB,SAE9B4L,KAAKqovB,SAASz9jB,UAAY9xK,EAAE,CAAEslV,MAAOx9V,GACvC,EACAipvB,mBAAoB,SAAS7kwB,GAC3Bgb,KAAKiqvB,aACDjqvB,KAAKiqvB,aAAaG,UAAUplwB,EAAEimwB,QAC7BjrvB,KAAKiqvB,aAAetowB,EAAEupwB,aACrBlmwB,EAAEimwB,OACFjrvB,KAAKknvB,SAAShB,UAAU,gBACxBsB,MAAMxnvB,KAAKsnvB,QACftnvB,KAAKiqvB,aAAakB,cACtB,EACAvD,0BAA2B,WACzB,MAAM5iwB,EAAIgb,KAAK0nvB,SACf,IAAI9mvB,EAAGmZ,EACP,GAAK/Z,KAAKqpvB,kBAAoBrpvB,KAAK2ovB,iBAAkB3jwB,EAAEoP,OAAS,OAChEpP,EAAEoP,OAAS,GAAKpP,EAAE8O,KAAK9O,EAAE,IACzB,MAAM2+E,EAAI39C,EAAEhhC,GACZ,IAAMA,EAAEoP,QACF4L,KAAK2nvB,eAAe5pvB,GAAKiC,KAAK2nvB,eAAe5pvB,GAC3CiC,KAAK2nvB,eAAe5pvB,GACpB,QAAQiC,KAAKgiZ,MAChBphZ,EAAIjf,EAAEupwB,aAAalmwB,EAAE,GAAIgb,KAAKknvB,SAAShB,UAAU,gBACjDnsuB,EAAIb,EAAE,CAAEklV,MAAOz6R,KAChB,IAAM3+E,EAAEoP,QACJ4L,KAAK2nvB,eAAe5pvB,GAAKiC,KAAK2nvB,eAAe5pvB,GAC3CiC,KAAK2nvB,eAAe5pvB,GACpB,OAAOiC,KAAKgiZ,MACfphZ,EAAIjf,EAAEikwB,SAAS5gwB,EAAGgb,KAAKknvB,SAAShB,UAAU,eAC1CnsuB,EAAI2vE,EAAE,CAAE00Q,MAAOz8W,EAAEqhH,OAAO,CAAC,EAAGr/B,EAAG3jE,KAAKyqvB,8BAA8B9mrB,QACjE3jE,KAAK2nvB,eAAe5pvB,GAAKiC,KAAK2nvB,eAAe5pvB,GAC3CiC,KAAK2nvB,eAAe5pvB,GACpB,UAAUiC,KAAKgiZ,MAClBphZ,EAAIjf,EAAE29M,QAAQt6M,EAAGgb,KAAKknvB,SAAShB,UAAU,eACzCnsuB,EAAIgB,EAAE,CAAEqjV,MAAOz8W,EAAEqhH,OAAO,CAAC,EAAGr/B,EAAG3jE,KAAKyqvB,8BAA8B9mrB,OACzE,MAAM1gF,EAAI+c,KAAK2nvB,eAAep0vB,KAC7BqN,EAAE2qM,QAAU,CAAEv7L,KAAM,UAAW00B,WAAY1kC,KAAK2nvB,gBAC9C3nvB,KAAK2nvB,eAAiB,CAAEp0vB,KAAM,IAC9ByM,KAAKgiZ,IAAMhiZ,KAAKgiZ,IAAM,EACzB,MAAMnhZ,EAAIlf,EAAE2hlB,QAAQ5ikB,OAAO,MAAO,IAClCG,EAAE+pL,UAAY7wK,EACd,MAAMngB,EAAI6X,EAAE,aAAc5Q,GAC1BjH,IACGjY,EAAEgjlB,SAASh6d,GAAG/wG,EAAG,QAASjY,EAAEgjlB,SAASj/jB,MACtC/jB,EAAEgjlB,SAASh6d,GACT/wG,EACA,QACA,WACEgH,EAAEmoG,UACE/oG,KAAK4xY,KAAKw5W,UAAUxqvB,EAAEmoG,YAAa,CAAEv4G,QAAS,CAAC,GAAI,IAAKgooB,QAAS,KACjE53nB,EAAEyqvB,YAAcz4tB,QAAQ3sC,IAAI,SAAU+Z,KAAK4xY,KAAK5+D,MAAMpyU,EAAEyqvB,aAC9D,EACArrvB,OAEJ,MAAM3a,EAAIosB,EAAE,mBAAoB5Q,GAChCxb,IACG1D,EAAEgjlB,SAASh6d,GAAGtlH,EAAG,QAAS1D,EAAEgjlB,SAASj/jB,MACtC/jB,EAAEgjlB,SAASh6d,GACTtlH,EACA,QACA,WACE2a,KAAKsnvB,OAAOQ,YAAYlnvB,EAC1B,EACAZ,OAEFY,EAAE4mvB,MAAMxnvB,KAAKsnvB,QACb1mvB,EAAE0qvB,UAAUzqvB,EAAGb,KAAKpQ,QAAQo3vB,cAC5BhnvB,KAAKpQ,QAAQ28C,QACXtpD,EAAEmR,OAAS,GACXwM,EAAE2qvB,YAAYtowB,EAAG,CAAE8L,UAAW,MAAOy8vB,WAAW,IAClD5qvB,EAAEmoG,UACEnoG,EAAE6qvB,UAAU7qvB,EAAEmoG,YAAYigO,aAC1BpoU,EAAEyqvB,WAAazqvB,EAAE6qvB,UAAU7qvB,EAAEyqvB,aACnC,MAAM7yuB,EAAI5X,EAAE8qvB,OAAOC,SAASn0oB,SAASo0oB,UAAU,aAC/ChrvB,EAAE8qvB,OAAOC,SAASn0oB,SAASo0oB,UAAU,aAAajmwB,MAAQ1C,EAC1D,MAAMygG,EAAI1jF,KACVY,EAAE+pG,GAAG,aAAc,YACfjnB,EAAE9zF,QAAQ28C,QAAU,IAAMm3C,EAAE8kqB,YAC5B,8BAAgC5nvB,EAAEhR,QAAQk6G,cACxClpG,EAAEirvB,cACFrzuB,EAAE7yB,MAAMyO,OAAS,GACjBwM,EAAE2qvB,YAAYtowB,EAAG,CAAE8L,UAAW,MAAOy8vB,WAAW,IAClDhzuB,EAAE7yB,MAAMyO,OAAS,GACZwM,EAAEkrvB,kBAAkBtzuB,EAAE7yB,OAASib,EAAE2qM,QAAQ7mK,WAAWnxC,KAAOilB,EAAE7yB,OAC9Dib,EAAEmrvB,gBACV,GACE/rvB,KAAKqpvB,mBAAqBrpvB,KAAKgrvB,iBAAkBhrvB,KAAK+pvB,iBAC1D,EACAH,oBAAqB,SAAS5kwB,GAC5B,MAAM4b,EAAIZ,KAAK4xY,KAAKo6W,mBAAmBhnwB,EAAE82hB,eACvC/hgB,EAAI/Z,KAAK0nvB,SAAS1nvB,KAAK0nvB,SAAStzvB,OAAS,GACzCuvE,EAAI3jE,KAAKknvB,SAAShB,UAAU,iBAC7BnsuB,GAAKnZ,EAAEmnN,OAAOhuM,KACZ/Z,KAAK0nvB,SAAS5zvB,KAAK8M,GACpBZ,KAAKisvB,gBAAgBjsvB,KAAK0nvB,UAC1B1nvB,KAAKksvB,oBAAoBlsvB,KAAK0nvB,UAC9B1nvB,KAAKqpvB,iBAAiB8C,UAAU,SAASnnwB,GACvCA,EAAE4gF,SAASjC,GAAI3+E,EAAEoiF,OAASpiF,EAAEoiF,MAAMnpE,aAAa,QAAS0lE,EAAEmmC,UAC5D,GACA9pG,KAAKosvB,cAAcxrvB,GACnBZ,KAAKmqvB,kBAAoBnqvB,KAAKmqvB,iBAAiBgB,eAC/CnrvB,KAAKqpvB,iBAAiB8B,gBACtBnrvB,KAAKgrvB,iBACLhrvB,KAAKopvB,iCACT,EACAO,mBAAoB,WAClB3pvB,KAAKiqvB,eACFjqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKiqvB,cAAgBjqvB,KAAKiqvB,aAAe,KACtE,EACAhB,iBAAkB,WAChB,MAAMjkwB,EAAIgb,KACVA,KAAK4xY,KAAKu6W,UAAU,SAASvrvB,GAC3B,mBAAqBA,EAAEilvB,WACrBjlvB,EAAEhR,QAAQk6G,WACV,IAAMlpG,EAAEhR,QAAQk6G,UAAUvhH,QAAQ,kBAClCqY,EAAEkrvB,kBAAkB9mwB,EAAEqnwB,sBAAsBzrvB,GAChD,EACF,EACAyrvB,sBAAuB,SAASrnwB,GAC9B,MAAM4b,EAAI5b,EAAE0mwB,OAAOC,SAASn0oB,SAASo0oB,UAAU,aAAajmwB,MAC5D,OAAQX,EAAE4K,QAAQk6G,WAChB,IAAK,2BACH,OAAQ9pG,KAAKwovB,YACX,KAAK,EACH5nvB,EAAExM,OAAS,EAAIpP,EAAE8mwB,kBAAkBlrvB,GAAK5b,EAAE+mwB,gBAC1C,MACF,KAAK,EACH/mwB,EAAE6mwB,cAAgB7mwB,EAAEumwB,YAAY,GAAI,CAAEx8vB,UAAW,MAAOy8vB,WAAW,IACjExmwB,EAAE8mwB,kBACA9rvB,KAAKyqvB,8BAA8BzkuB,EAAEhhC,EAAE0iwB,SAAS,KAAKgD,eAEzD,MACF,KAAK,EACH1lwB,EAAE8mwB,kBACA9rvB,KAAKyqvB,8BAA8BzkuB,EAAEhhC,EAAE0iwB,SAAS,KAAKoD,aAG3D,MACF,IAAK,2BACH,GAAI,IAAM9qvB,KAAKwovB,WAAY,CACzBxjwB,EAAE6mwB,cAAgB7mwB,EAAEumwB,YAAY,GAAI,CAAEx8vB,UAAW,MAAOy8vB,WAAW,IACjExmwB,EAAE8mwB,kBACA9rvB,KAAKyqvB,8BAA8BzkuB,EAAEhhC,EAAE0iwB,WAAWgD,eAEtD,KACF,CACA9pvB,EAAExM,OAAS,EAAIpP,EAAE8mwB,kBAAkBlrvB,GAAK5b,EAAE+mwB,gBAC1C,MACF,IAAK,4BACHnrvB,EAAExM,OAAS,EAAIpP,EAAE8mwB,kBAAkBlrvB,GAAK5b,EAAE+mwB,gBAEhD,EACAK,cAAe,SAASpnwB,GACtBrD,EAAEupwB,aAAalmwB,EAAGgb,KAAKknvB,SAAShB,UAAU,wBAAwBsB,MAChExnvB,KAAKqpvB,iBAET,EACA4C,gBAAiB,SAASjnwB,GACxBA,EAAEoP,OAAS,EACP4L,KAAKkqvB,eACJlqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKkqvB,cAAgBlqvB,KAAKkqvB,aAAe,MAClElqvB,KAAKkqvB,aACHlqvB,KAAKkqvB,aAAaoC,WAAWtnwB,GAC5Bgb,KAAKkqvB,aAAevowB,EAAE29M,QAAQt6M,EAAGgb,KAAKknvB,SAAShB,UAAU,gBAAgBsB,MACxExnvB,KAAKsnvB,OAEf,EACA4E,oBAAqB,SAASlnwB,GAC5BA,EAAEoP,OAAS,EACP4L,KAAKmqvB,mBACJnqvB,KAAKsnvB,OAAOQ,YAAY9nvB,KAAKmqvB,kBAAoBnqvB,KAAKmqvB,iBAAmB,MAC1EnqvB,KAAKmqvB,iBACHnqvB,KAAKmqvB,iBAAiBmC,WAAWtnwB,GAChCgb,KAAKmqvB,iBAAmBxowB,EAAEikwB,SACzB5gwB,EACAgb,KAAKknvB,SAAShB,UAAU,oBACxBsB,MAAMxnvB,KAAKsnvB,OACrB,IAEA3lwB,EAAEqR,IAAIu5vB,aAAa,CAAEC,gBAAgB,IACrC7qwB,EAAEqR,IAAIy5vB,YAAY,WAChBzsvB,KAAKpQ,QAAQ48vB,iBACVxsvB,KAAKwsvB,gBAAiB,IAAI7qwB,EAAE+jc,QAAQihU,SAAUa,MAAMxnvB,MACzD,GACCre,EAAEyuT,QAAQ22J,QAAU,SAAS/hd,GAC5B,OAAO,IAAIrD,EAAE+jc,QAAQihU,QAAQ3hwB,EAC/B,CACH,EAx6BD,EAy6BH,EAvrDD,E,yBCQA,IAAIqe,EAAoC,WAIpC,SAASA,IACLvZ,OAAO0hC,iBAAiBxrB,KAAM,CAC1B0svB,SAAU,CACN/mwB,MAAO,CACH,CAAE81G,YAAa,EAAGD,UAAW,GAC7B,CAAEC,YAAa,EAAGD,UAAW,MAI7C,CAqBA,OAhBAn4F,EAAmBjD,UAAUvM,IAAM,WAC/B,IAAI24V,EAAUxsV,KAAK0svB,SACfC,EAAoBnga,EAAQ,GAAG/wP,YAAc+wP,EAAQ,GAAG/wP,aAAgBl2G,IAE5E,OADqBinW,EAAQ,GAAGhxP,UAAYgxP,EAAQ,GAAGhxP,WAC/BmxpB,CAC5B,EAMAtpvB,EAAmBjD,UAAUuO,UAAY,SAAU6sF,EAAWC,GAC1D,IAAI+wP,EAAUxsV,KAAK0svB,SACnBlga,EAAQtkT,QACRskT,EAAQ14V,KAAK,CAAE2nG,YAAaA,EAAaD,UAAWA,GACxD,EACOn4F,CACX,CAnCuC,GAoCvCq+E,EAAOj9F,QAAU4e,C,kBC5CjB,EAAQ,MACR,EAAQ,OAERq+E,EAAOj9F,QAAU,U,+BCOjB,IAAImowB,EAAS,EAAQ,OACjBC,EAAU,EAAQ,KAClB98uB,EAAU,EAAQ,OAmDtB,SAAS+8uB,IACP,OAAOj2nB,EAAOk2nB,oBACV,WACA,UACN,CAEA,SAASvqD,EAAclsf,EAAMliN,GAC3B,GAAI04vB,IAAe14vB,EACjB,MAAM,IAAIkzP,WAAW,8BAcvB,OAZIzwH,EAAOk2nB,qBAETz2iB,EAAO,IAAIjxH,WAAWjxF,IACjB8L,UAAY22H,EAAOz2H,WAGX,OAATk2M,IACFA,EAAO,IAAIz/E,EAAOziI,IAEpBkiN,EAAKliN,OAASA,GAGTkiN,CACT,CAYA,SAASz/E,EAAQl/D,EAAKq1rB,EAAkB54vB,GACtC,KAAKyiI,EAAOk2nB,qBAAyB/svB,gBAAgB62H,GACnD,OAAO,IAAIA,EAAOl/D,EAAKq1rB,EAAkB54vB,GAI3C,GAAmB,iBAARujE,EAAkB,CAC3B,GAAgC,iBAArBq1rB,EACT,MAAM,IAAIzlvB,MACR,qEAGJ,OAAO2zH,EAAYl7H,KAAM23D,EAC3B,CACA,OAAO9yC,EAAK7kB,KAAM23D,EAAKq1rB,EAAkB54vB,EAC3C,CAUA,SAASywB,EAAMyxL,EAAM3wN,EAAOqnwB,EAAkB54vB,GAC5C,GAAqB,iBAAVzO,EACT,MAAM,IAAI2a,UAAU,yCAGtB,MAA2B,oBAAhBg7H,aAA+B31I,aAAiB21I,YA6H7D,SAA0Bg7E,EAAMjiM,EAAO2sF,EAAY5sG,GAGjD,GAFAigB,EAAMg5K,WAEFrsF,EAAa,GAAK3sF,EAAMg5K,WAAarsF,EACvC,MAAM,IAAIsmJ,WAAW,6BAGvB,GAAIjzO,EAAMg5K,WAAarsF,GAAc5sG,GAAU,GAC7C,MAAM,IAAIkzP,WAAW,6BAmBvB,OAfEjzO,OADiBvd,IAAfkqG,QAAuClqG,IAAX1C,EACtB,IAAIixF,WAAWhxE,QACHvd,IAAX1C,EACD,IAAIixF,WAAWhxE,EAAO2sF,GAEtB,IAAI3b,WAAWhxE,EAAO2sF,EAAY5sG,GAGxCyiI,EAAOk2nB,qBAETz2iB,EAAOjiM,GACFnU,UAAY22H,EAAOz2H,UAGxBk2M,EAAO22iB,EAAc32iB,EAAMjiM,GAEtBiiM,CACT,CAxJW42iB,CAAgB52iB,EAAM3wN,EAAOqnwB,EAAkB54vB,GAGnC,iBAAVzO,EAwFb,SAAqB2wN,EAAMxyN,EAAQ4mK,GAKjC,GAJwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGR7zB,EAAOs2nB,WAAWzimB,GACrB,MAAM,IAAIpqJ,UAAU,8CAGtB,IAAIlM,EAAwC,EAA/Bi5L,EAAWvpM,EAAQ4mK,GAG5Bs/D,GAFJ1T,EAAOksf,EAAalsf,EAAMliN,IAER1O,MAAM5B,EAAQ4mK,GAShC,OAPIs/D,IAAW51N,IAIbkiN,EAAOA,EAAKx7M,MAAM,EAAGkvN,IAGhB1T,CACT,CA7GWqsH,CAAWrsH,EAAM3wN,EAAOqnwB,GAsJnC,SAAqB12iB,EAAMhkM,GACzB,GAAIukH,EAAOC,SAASxkH,GAAM,CACxB,IAAI7iB,EAA4B,EAAtBumT,EAAQ1jS,EAAIle,QAGtB,OAAoB,KAFpBkiN,EAAOksf,EAAalsf,EAAM7mN,IAEjB2E,QAITke,EAAIg/E,KAAKglH,EAAM,EAAG,EAAG7mN,GAHZ6mN,CAKX,CAEA,GAAIhkM,EAAK,CACP,GAA4B,oBAAhBgpH,aACRhpH,EAAI3tB,kBAAkB22I,aAAgB,WAAYhpH,EACpD,MAA0B,iBAAfA,EAAIle,SA+8CLuzB,EA/8CkCrV,EAAIle,SAg9CrCuzB,EA/8CF66qB,EAAalsf,EAAM,GAErB22iB,EAAc32iB,EAAMhkM,GAG7B,GAAiB,WAAbA,EAAItC,MAAqBD,EAAQuC,EAAIvc,MACvC,OAAOk3vB,EAAc32iB,EAAMhkM,EAAIvc,KAEnC,CAs8CF,IAAgB4xB,EAp8Cd,MAAM,IAAIrnB,UAAU,qFACtB,CA/KS6kB,CAAWmxL,EAAM3wN,EAC1B,CA2BA,SAASynwB,EAAYr6uB,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAIzS,UAAU,oCACf,GAAIyS,EAAO,EAChB,MAAM,IAAIu0O,WAAW,uCAEzB,CA0BA,SAASpsH,EAAao7E,EAAMvjM,GAG1B,GAFAq6uB,EAAWr6uB,GACXujM,EAAOksf,EAAalsf,EAAMvjM,EAAO,EAAI,EAAoB,EAAhBijS,EAAQjjS,KAC5C8jH,EAAOk2nB,oBACV,IAAK,IAAI1nwB,EAAI,EAAGA,EAAI0tB,IAAQ1tB,EAC1BixN,EAAKjxN,GAAK,EAGd,OAAOixN,CACT,CAuCA,SAAS22iB,EAAe32iB,EAAMjiM,GAC5B,IAAIjgB,EAASigB,EAAMjgB,OAAS,EAAI,EAA4B,EAAxB4hT,EAAQ3hS,EAAMjgB,QAClDkiN,EAAOksf,EAAalsf,EAAMliN,GAC1B,IAAK,IAAI/O,EAAI,EAAGA,EAAI+O,EAAQ/O,GAAK,EAC/BixN,EAAKjxN,GAAgB,IAAXgvB,EAAMhvB,GAElB,OAAOixN,CACT,CA8DA,SAAS0/F,EAAS5hT,GAGhB,GAAIA,GAAU04vB,IACZ,MAAM,IAAIxlgB,WAAW,0DACawlgB,IAAa9lwB,SAAS,IAAM,UAEhE,OAAgB,EAAToN,CACT,CAqFA,SAASi5L,EAAYvpM,EAAQ4mK,GAC3B,GAAI7zB,EAAOC,SAAShzI,GAClB,OAAOA,EAAOsQ,OAEhB,GAA2B,oBAAhBknI,aAA6D,mBAAvBA,YAAYsgF,SACxDtgF,YAAYsgF,OAAO93N,IAAWA,aAAkBw3I,aACnD,OAAOx3I,EAAOupM,WAEM,iBAAXvpM,IACTA,EAAS,GAAKA,GAGhB,IAAI2L,EAAM3L,EAAOsQ,OACjB,GAAY,IAAR3E,EAAW,OAAO,EAItB,IADA,IAAI49vB,GAAc,IAEhB,OAAQ3imB,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOj7J,EACT,IAAK,OACL,IAAK,QACL,UAAKqH,EACH,OAAOw2vB,EAAYxpwB,GAAQsQ,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN3E,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAO89vB,EAAczpwB,GAAQsQ,OAC/B,QACE,GAAIi5vB,EAAa,OAAOC,EAAYxpwB,GAAQsQ,OAC5Cs2J,GAAY,GAAKA,GAAUtiK,cAC3BilwB,GAAc,EAGtB,CAGA,SAASG,EAAc9imB,EAAUj+J,EAAOC,GACtC,IAAI2gwB,GAAc,EAclB,SALcv2vB,IAAVrK,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQuT,KAAK5L,OACf,MAAO,GAOT,SAJY0C,IAARpK,GAAqBA,EAAMsT,KAAK5L,UAClC1H,EAAMsT,KAAK5L,QAGT1H,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKi+J,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAO+imB,EAASztvB,KAAMvT,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOghwB,EAAU1tvB,KAAMvT,EAAOC,GAEhC,IAAK,QACH,OAAOihwB,EAAW3tvB,KAAMvT,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOkhwB,EAAY5tvB,KAAMvT,EAAOC,GAElC,IAAK,SACH,OAAOmhwB,EAAY7tvB,KAAMvT,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOohwB,EAAa9tvB,KAAMvT,EAAOC,GAEnC,QACE,GAAI2gwB,EAAa,MAAM,IAAI/svB,UAAU,qBAAuBoqJ,GAC5DA,GAAYA,EAAW,IAAItiK,cAC3BilwB,GAAc,EAGtB,CAMA,SAAS36pB,EAAM74F,EAAGgH,EAAG1d,GACnB,IAAIkC,EAAIwU,EAAEgH,GACVhH,EAAEgH,GAAKhH,EAAE1W,GACT0W,EAAE1W,GAAKkC,CACT,CAkIA,SAAS0owB,EAAsBppwB,EAAQgjC,EAAKq5E,EAAY0pD,EAAU3iF,GAEhE,GAAsB,IAAlBpjF,EAAOyP,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAf4sG,GACT0pD,EAAW1pD,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACVj7G,MAAMi7G,KAERA,EAAaj5B,EAAM,EAAKpjF,EAAOyP,OAAS,GAItC4sG,EAAa,IAAGA,EAAar8G,EAAOyP,OAAS4sG,GAC7CA,GAAcr8G,EAAOyP,OAAQ,CAC/B,GAAI2zE,EAAK,OAAQ,EACZi5B,EAAar8G,EAAOyP,OAAS,CACpC,MAAO,GAAI4sG,EAAa,EAAG,CACzB,IAAIj5B,EACC,OAAQ,EADJi5B,EAAa,CAExB,CAQA,GALmB,iBAARr5E,IACTA,EAAMkvG,EAAOhyG,KAAK8C,EAAK+iI,IAIrB7zB,EAAOC,SAASnvG,GAElB,OAAmB,IAAfA,EAAIvzB,QACE,EAEH45vB,EAAarpwB,EAAQgjC,EAAKq5E,EAAY0pD,EAAU3iF,GAClD,GAAmB,iBAARpgD,EAEhB,OADAA,GAAY,IACRkvG,EAAOk2nB,qBACiC,mBAAjC1nqB,WAAWjlF,UAAU7X,QAC1Bw/E,EACKsd,WAAWjlF,UAAU7X,QAAQ8X,KAAK1b,EAAQgjC,EAAKq5E,GAE/C3b,WAAWjlF,UAAUi3E,YAAYh3E,KAAK1b,EAAQgjC,EAAKq5E,GAGvDgtpB,EAAarpwB,EAAQ,CAAEgjC,GAAOq5E,EAAY0pD,EAAU3iF,GAG7D,MAAM,IAAIznE,UAAU,uCACtB,CAEA,SAAS0tvB,EAAcp3tB,EAAKjP,EAAKq5E,EAAY0pD,EAAU3iF,GACrD,IA0BI1iF,EA1BA4owB,EAAY,EACZhnP,EAAYrwe,EAAIxiC,OAChB85vB,EAAYvmuB,EAAIvzB,OAEpB,QAAiB0C,IAAb4zJ,IAEe,UADjBA,EAAWnqJ,OAAOmqJ,GAAUtiK,gBACY,UAAbsiK,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI9zH,EAAIxiC,OAAS,GAAKuzB,EAAIvzB,OAAS,EACjC,OAAQ,EAEV65vB,EAAY,EACZhnP,GAAa,EACbinP,GAAa,EACbltpB,GAAc,CAChB,CAGF,SAASt8G,EAAMm2I,EAAKx1I,GAClB,OAAkB,IAAd4owB,EACKpznB,EAAIx1I,GAEJw1I,EAAIsznB,aAAa9owB,EAAI4owB,EAEhC,CAGA,GAAIlmrB,EAAK,CACP,IAAIqmrB,GAAc,EAClB,IAAK/owB,EAAI27G,EAAY37G,EAAI4hhB,EAAW5hhB,IAClC,GAAIX,EAAKkyC,EAAKvxC,KAAOX,EAAKijC,GAAqB,IAAhBymuB,EAAoB,EAAI/owB,EAAI+owB,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa/owB,GAChCA,EAAI+owB,EAAa,IAAMF,EAAW,OAAOE,EAAaH,OAEtC,IAAhBG,IAAmB/owB,GAAKA,EAAI+owB,GAChCA,GAAc,CAGpB,MAEE,IADIptpB,EAAaktpB,EAAYjnP,IAAWjma,EAAaima,EAAYinP,GAC5D7owB,EAAI27G,EAAY37G,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIgrH,GAAQ,EACHrqF,EAAI,EAAGA,EAAIkouB,EAAWlouB,IAC7B,GAAIthC,EAAKkyC,EAAKvxC,EAAI2gC,KAAOthC,EAAKijC,EAAK3B,GAAI,CACrCqqF,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOhrH,CACpB,CAGF,OAAQ,CACV,CAcA,SAASgpwB,EAAUxznB,EAAK/2I,EAAQc,EAAQwP,GACtCxP,EAASurB,OAAOvrB,IAAW,EAC3B,IAAIi9C,EAAYg5F,EAAIzmI,OAASxP,EACxBwP,GAGHA,EAAS+b,OAAO/b,IACHytC,IACXztC,EAASytC,GAJXztC,EAASytC,EASX,IAAIystB,EAASxqwB,EAAOsQ,OACpB,GAAIk6vB,EAAS,GAAM,EAAG,MAAM,IAAIhuvB,UAAU,sBAEtClM,EAASk6vB,EAAS,IACpBl6vB,EAASk6vB,EAAS,GAEpB,IAAK,IAAIjpwB,EAAI,EAAGA,EAAI+O,IAAU/O,EAAG,CAC/B,IAAI8yC,EAAShS,SAASriC,EAAOquH,OAAW,EAAJ9sH,EAAO,GAAI,IAC/C,GAAIU,MAAMoyC,GAAS,OAAO9yC,EAC1Bw1I,EAAIj2I,EAASS,GAAK8yC,CACpB,CACA,OAAO9yC,CACT,CAEA,SAASkpwB,EAAW1znB,EAAK/2I,EAAQc,EAAQwP,GACvC,OAAOo6vB,EAAWlB,EAAYxpwB,EAAQ+2I,EAAIzmI,OAASxP,GAASi2I,EAAKj2I,EAAQwP,EAC3E,CAEA,SAASq6vB,EAAY5znB,EAAK/2I,EAAQc,EAAQwP,GACxC,OAAOo6vB,EAq6BT,SAAuB/7uB,GAErB,IADA,IAAIi8uB,EAAY,GACPrpwB,EAAI,EAAGA,EAAIotB,EAAIre,SAAU/O,EAEhCqpwB,EAAU56vB,KAAyB,IAApB2e,EAAImzE,WAAWvgG,IAEhC,OAAOqpwB,CACT,CA56BoBC,CAAa7qwB,GAAS+2I,EAAKj2I,EAAQwP,EACvD,CAEA,SAASw6vB,EAAa/znB,EAAK/2I,EAAQc,EAAQwP,GACzC,OAAOq6vB,EAAW5znB,EAAK/2I,EAAQc,EAAQwP,EACzC,CAEA,SAASy6vB,EAAah0nB,EAAK/2I,EAAQc,EAAQwP,GACzC,OAAOo6vB,EAAWjB,EAAczpwB,GAAS+2I,EAAKj2I,EAAQwP,EACxD,CAEA,SAAS06vB,EAAWj0nB,EAAK/2I,EAAQc,EAAQwP,GACvC,OAAOo6vB,EAk6BT,SAAyB/7uB,EAAK2tL,GAG5B,IAFA,IAAIx6M,EAAG2tC,EAAIC,EACPk7tB,EAAY,GACPrpwB,EAAI,EAAGA,EAAIotB,EAAIre,WACjBgsM,GAAS,GAAK,KADa/6M,EAIhCkuC,GADA3tC,EAAI6sB,EAAImzE,WAAWvgG,KACT,EACVmuC,EAAK5tC,EAAI,IACT8owB,EAAU56vB,KAAK0/B,GACfk7tB,EAAU56vB,KAAKy/B,GAGjB,OAAOm7tB,CACT,CAh7BoBK,CAAejrwB,EAAQ+2I,EAAIzmI,OAASxP,GAASi2I,EAAKj2I,EAAQwP,EAC9E,CAiFA,SAASy5vB,EAAahznB,EAAKpuI,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQmuI,EAAIzmI,OACtBw4vB,EAAOoC,cAAcn0nB,GAErB+xnB,EAAOoC,cAAcn0nB,EAAI//H,MAAMrO,EAAOC,GAEjD,CAEA,SAASghwB,EAAW7ynB,EAAKpuI,EAAOC,GAC9BA,EAAMlH,KAAKkE,IAAImxI,EAAIzmI,OAAQ1H,GAI3B,IAHA,IAAI03C,EAAM,GAEN/+C,EAAIoH,EACDpH,EAAIqH,GAAK,CACd,IAQMuiwB,EAAYC,EAAWC,EAAYC,EARrCC,EAAYx0nB,EAAIx1I,GAChBystB,EAAY,KACZw9C,EAAoBD,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAIhqwB,EAAIiqwB,GAAoB5iwB,EAG1B,OAAQ4iwB,GACN,KAAK,EACCD,EAAY,MACdv9C,EAAYu9C,GAEd,MACF,KAAK,EAEyB,MAAV,KADlBJ,EAAap0nB,EAAIx1I,EAAI,OAEnB+pwB,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBn9C,EAAYs9C,GAGhB,MACF,KAAK,EACHH,EAAap0nB,EAAIx1I,EAAI,GACrB6pwB,EAAYr0nB,EAAIx1I,EAAI,GACQ,MAAV,IAAb4pwB,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEt9C,EAAYs9C,GAGhB,MACF,KAAK,EACHH,EAAap0nB,EAAIx1I,EAAI,GACrB6pwB,EAAYr0nB,EAAIx1I,EAAI,GACpB8pwB,EAAat0nB,EAAIx1I,EAAI,GACO,MAAV,IAAb4pwB,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5Ct9C,EAAYs9C,GAMJ,OAAdt9C,GAGFA,EAAY,MACZw9C,EAAmB,GACVx9C,EAAY,QAErBA,GAAa,MACb1tqB,EAAItwC,KAAKg+sB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvB1tqB,EAAItwC,KAAKg+sB,GACTzstB,GAAKiqwB,CACP,CAEA,OAQF,SAAgCC,GAC9B,IAAI9/vB,EAAM8/vB,EAAWn7vB,OACrB,GAAI3E,GAAO+/vB,EACT,OAAOjvvB,OAAOysF,aAAalsF,MAAMP,OAAQgvvB,GAM3C,IAFA,IAAInrtB,EAAM,GACN/+C,EAAI,EACDA,EAAIoK,GACT20C,GAAO7jC,OAAOysF,aAAalsF,MACzBP,OACAgvvB,EAAWz0vB,MAAMzV,EAAGA,GAAKmqwB,IAG7B,OAAOprtB,CACT,CAxBSqrtB,CAAsBrrtB,EAC/B,CA/8BA3/C,EAAQoyI,OAASA,EACjBpyI,EAAQirwB,WAoTR,SAAqBt7vB,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJyiI,EAAOmE,OAAO5mI,EACvB,EAxTA3P,EAAQkrwB,kBAAoB,GA0B5B94nB,EAAOk2nB,yBAAqDj2vB,IAA/B,EAAA6K,EAAOorvB,oBAChC,EAAAprvB,EAAOorvB,oBAQX,WACE,IACE,IAAIn2tB,EAAM,IAAIyuD,WAAW,GAEzB,OADAzuD,EAAI12B,UAAY,CAACA,UAAWmlF,WAAWjlF,UAAWg5L,IAAK,WAAc,OAAO,EAAG,GAC1D,KAAdxiK,EAAIwiK,OACiB,mBAAjBxiK,EAAI2sG,UACuB,IAAlC3sG,EAAI2sG,SAAS,EAAG,GAAG8pD,UACzB,CAAE,MAAOroM,GACP,OAAO,CACT,CACF,CAjBI4qwB,GAKJnrwB,EAAQqowB,WAAaA,IAkErBj2nB,EAAOg5nB,SAAW,KAGlBh5nB,EAAOi5nB,SAAW,SAAUl5tB,GAE1B,OADAA,EAAI12B,UAAY22H,EAAOz2H,UAChBw2B,CACT,EA0BAigG,EAAOhyG,KAAO,SAAUl/B,EAAOqnwB,EAAkB54vB,GAC/C,OAAOywB,EAAK,KAAMl/B,EAAOqnwB,EAAkB54vB,EAC7C,EAEIyiI,EAAOk2nB,sBACTl2nB,EAAOz2H,UAAUF,UAAYmlF,WAAWjlF,UACxCy2H,EAAO32H,UAAYmlF,WACG,oBAAX7gG,QAA0BA,OAAOurwB,SACxCl5nB,EAAOryI,OAAOurwB,WAAal5nB,GAE7B/sI,OAAOwY,eAAeu0H,EAAQryI,OAAOurwB,QAAS,CAC5CpqwB,MAAO,KACPsxC,cAAc,KAiCpB4/F,EAAOmE,MAAQ,SAAUjoH,EAAM0b,EAAMi8H,GACnC,OArBF,SAAgB4rD,EAAMvjM,EAAM0b,EAAMi8H,GAEhC,OADA0imB,EAAWr6uB,GACPA,GAAQ,EACHyvrB,EAAalsf,EAAMvjM,QAEfjc,IAAT23B,EAIyB,iBAAbi8H,EACV83iB,EAAalsf,EAAMvjM,GAAM0b,KAAKA,EAAMi8H,GACpC83iB,EAAalsf,EAAMvjM,GAAM0b,KAAKA,GAE7B+zqB,EAAalsf,EAAMvjM,EAC5B,CAOSioH,CAAM,KAAMjoH,EAAM0b,EAAMi8H,EACjC,EAgBA7zB,EAAOqE,YAAc,SAAUnoH,GAC7B,OAAOmoH,EAAY,KAAMnoH,EAC3B,EAIA8jH,EAAOm5nB,gBAAkB,SAAUj9uB,GACjC,OAAOmoH,EAAY,KAAMnoH,EAC3B,EAgHA8jH,EAAOC,SAAW,SAAmBj9H,GACnC,QAAe,MAALA,IAAaA,EAAEo2vB,UAC3B,EAEAp5nB,EAAOn3F,QAAU,SAAkB9lC,EAAGC,GACpC,IAAKg9H,EAAOC,SAASl9H,KAAOi9H,EAAOC,SAASj9H,GAC1C,MAAM,IAAIyG,UAAU,6BAGtB,GAAI1G,IAAMC,EAAG,OAAO,EAKpB,IAHA,IAAItT,EAAIqT,EAAExF,OACNzQ,EAAIkW,EAAEzF,OAED/O,EAAI,EAAGoK,EAAMjK,KAAKkE,IAAInD,EAAG5C,GAAI0B,EAAIoK,IAAOpK,EAC/C,GAAIuU,EAAEvU,KAAOwU,EAAExU,GAAI,CACjBkB,EAAIqT,EAAEvU,GACN1B,EAAIkW,EAAExU,GACN,KACF,CAGF,OAAIkB,EAAI5C,GAAW,EACfA,EAAI4C,EAAU,EACX,CACT,EAEAswI,EAAOs2nB,WAAa,SAAqBzimB,GACvC,OAAQnqJ,OAAOmqJ,GAAUtiK,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EAEAyuI,EAAO7oI,OAAS,SAAiBJ,EAAMwG,GACrC,IAAK2b,EAAQniB,GACX,MAAM,IAAI0S,UAAU,+CAGtB,GAAoB,IAAhB1S,EAAKwG,OACP,OAAOyiI,EAAOmE,MAAM,GAGtB,IAAI31I,EACJ,QAAeyR,IAAX1C,EAEF,IADAA,EAAS,EACJ/O,EAAI,EAAGA,EAAIuI,EAAKwG,SAAU/O,EAC7B+O,GAAUxG,EAAKvI,GAAG+O,OAItB,IAAIzP,EAASkyI,EAAOqE,YAAY9mI,GAC5Bme,EAAM,EACV,IAAKltB,EAAI,EAAGA,EAAIuI,EAAKwG,SAAU/O,EAAG,CAChC,IAAIw1I,EAAMjtI,EAAKvI,GACf,IAAKwxI,EAAOC,SAAS+D,GACnB,MAAM,IAAIv6H,UAAU,+CAEtBu6H,EAAIvpC,KAAK3sG,EAAQ4tB,GACjBA,GAAOsoH,EAAIzmI,MACb,CACA,OAAOzP,CACT,EA6CAkyI,EAAOw2D,WAAaA,EA0EpBx2D,EAAOz2H,UAAU6vvB,WAAY,EAQ7Bp5nB,EAAOz2H,UAAU8vvB,OAAS,WACxB,IAAIzgwB,EAAMuQ,KAAK5L,OACf,GAAI3E,EAAM,GAAM,EACd,MAAM,IAAI63P,WAAW,6CAEvB,IAAK,IAAIjiQ,EAAI,EAAGA,EAAIoK,EAAKpK,GAAK,EAC5BqtG,EAAK1yF,KAAM3a,EAAGA,EAAI,GAEpB,OAAO2a,IACT,EAEA62H,EAAOz2H,UAAU+vvB,OAAS,WACxB,IAAI1gwB,EAAMuQ,KAAK5L,OACf,GAAI3E,EAAM,GAAM,EACd,MAAM,IAAI63P,WAAW,6CAEvB,IAAK,IAAIjiQ,EAAI,EAAGA,EAAIoK,EAAKpK,GAAK,EAC5BqtG,EAAK1yF,KAAM3a,EAAGA,EAAI,GAClBqtG,EAAK1yF,KAAM3a,EAAI,EAAGA,EAAI,GAExB,OAAO2a,IACT,EAEA62H,EAAOz2H,UAAUgwvB,OAAS,WACxB,IAAI3gwB,EAAMuQ,KAAK5L,OACf,GAAI3E,EAAM,GAAM,EACd,MAAM,IAAI63P,WAAW,6CAEvB,IAAK,IAAIjiQ,EAAI,EAAGA,EAAIoK,EAAKpK,GAAK,EAC5BqtG,EAAK1yF,KAAM3a,EAAGA,EAAI,GAClBqtG,EAAK1yF,KAAM3a,EAAI,EAAGA,EAAI,GACtBqtG,EAAK1yF,KAAM3a,EAAI,EAAGA,EAAI,GACtBqtG,EAAK1yF,KAAM3a,EAAI,EAAGA,EAAI,GAExB,OAAO2a,IACT,EAEA62H,EAAOz2H,UAAUpZ,SAAW,WAC1B,IAAIoN,EAAuB,EAAd4L,KAAK5L,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBD,UAAUC,OAAqBs5vB,EAAU1tvB,KAAM,EAAG5L,GAC/Co5vB,EAAa1svB,MAAMd,KAAM7L,UAClC,EAEA0iI,EAAOz2H,UAAU2nN,OAAS,SAAiBluN,GACzC,IAAKg9H,EAAOC,SAASj9H,GAAI,MAAM,IAAIyG,UAAU,6BAC7C,OAAIN,OAASnG,GACsB,IAA5Bg9H,EAAOn3F,QAAQ1/B,KAAMnG,EAC9B,EAEAg9H,EAAOz2H,UAAUsuY,QAAU,WACzB,IAAIj8X,EAAM,GACN9oB,EAAMlF,EAAQkrwB,kBAKlB,OAJI3vvB,KAAK5L,OAAS,IAChBqe,EAAMzS,KAAKhZ,SAAS,MAAO,EAAG2C,GAAK3F,MAAM,SAASka,KAAK,KACnD8B,KAAK5L,OAASzK,IAAK8oB,GAAO,UAEzB,WAAaA,EAAM,GAC5B,EAEAokH,EAAOz2H,UAAUs/B,QAAU,SAAkB3xC,EAAQtB,EAAOC,EAAK2jwB,EAAWC,GAC1E,IAAKz5nB,EAAOC,SAAS/oI,GACnB,MAAM,IAAIuS,UAAU,6BAgBtB,QAbcxJ,IAAVrK,IACFA,EAAQ,QAEEqK,IAARpK,IACFA,EAAMqB,EAASA,EAAOqG,OAAS,QAEf0C,IAAdu5vB,IACFA,EAAY,QAEEv5vB,IAAZw5vB,IACFA,EAAUtwvB,KAAK5L,QAGb3H,EAAQ,GAAKC,EAAMqB,EAAOqG,QAAUi8vB,EAAY,GAAKC,EAAUtwvB,KAAK5L,OACtE,MAAM,IAAIkzP,WAAW,sBAGvB,GAAI+ogB,GAAaC,GAAW7jwB,GAASC,EACnC,OAAO,EAET,GAAI2jwB,GAAaC,EACf,OAAQ,EAEV,GAAI7jwB,GAASC,EACX,OAAO,EAQT,GAAIsT,OAASjS,EAAQ,OAAO,EAS5B,IAPA,IAAIxH,GAJJ+pwB,KAAa,IADbD,KAAe,GAMX1swB,GAPJ+I,KAAS,IADTD,KAAW,GASPgD,EAAMjK,KAAKkE,IAAInD,EAAG5C,GAElB4swB,EAAWvwvB,KAAKlF,MAAMu1vB,EAAWC,GACjCE,EAAaziwB,EAAO+M,MAAMrO,EAAOC,GAE5BrH,EAAI,EAAGA,EAAIoK,IAAOpK,EACzB,GAAIkrwB,EAASlrwB,KAAOmrwB,EAAWnrwB,GAAI,CACjCkB,EAAIgqwB,EAASlrwB,GACb1B,EAAI6swB,EAAWnrwB,GACf,KACF,CAGF,OAAIkB,EAAI5C,GAAW,EACfA,EAAI4C,EAAU,EACX,CACT,EA4HAswI,EAAOz2H,UAAUu1B,SAAW,SAAmBhO,EAAKq5E,EAAY0pD,GAC9D,OAAoD,IAA7C1qJ,KAAKzX,QAAQo/B,EAAKq5E,EAAY0pD,EACvC,EAEA7zB,EAAOz2H,UAAU7X,QAAU,SAAkBo/B,EAAKq5E,EAAY0pD,GAC5D,OAAOqjmB,EAAqB/tvB,KAAM2nB,EAAKq5E,EAAY0pD,GAAU,EAC/D,EAEA7zB,EAAOz2H,UAAUi3E,YAAc,SAAsB1vD,EAAKq5E,EAAY0pD,GACpE,OAAOqjmB,EAAqB/tvB,KAAM2nB,EAAKq5E,EAAY0pD,GAAU,EAC/D,EAiDA7zB,EAAOz2H,UAAU1a,MAAQ,SAAgB5B,EAAQc,EAAQwP,EAAQs2J,GAE/D,QAAe5zJ,IAAXlS,EACF8lK,EAAW,OACXt2J,EAAS4L,KAAK5L,OACdxP,EAAS,OAEJ,QAAekS,IAAX1C,GAA0C,iBAAXxP,EACxC8lK,EAAW9lK,EACXwP,EAAS4L,KAAK5L,OACdxP,EAAS,MAEJ,KAAIwrB,SAASxrB,GAWlB,MAAM,IAAI2iB,MACR,2EAXF3iB,GAAkB,EACdwrB,SAAShc,IACXA,GAAkB,OACD0C,IAAb4zJ,IAAwBA,EAAW,UAEvCA,EAAWt2J,EACXA,OAAS0C,EAOb,CAEA,IAAI+qC,EAAY7hC,KAAK5L,OAASxP,EAG9B,SAFekS,IAAX1C,GAAwBA,EAASytC,KAAWztC,EAASytC,GAEpD/9C,EAAOsQ,OAAS,IAAMA,EAAS,GAAKxP,EAAS,IAAOA,EAASob,KAAK5L,OACrE,MAAM,IAAIkzP,WAAW,0CAGlB58F,IAAUA,EAAW,QAG1B,IADA,IAAI2imB,GAAc,IAEhB,OAAQ3imB,GACN,IAAK,MACH,OAAO2jmB,EAASruvB,KAAMlc,EAAQc,EAAQwP,GAExC,IAAK,OACL,IAAK,QACH,OAAOm6vB,EAAUvuvB,KAAMlc,EAAQc,EAAQwP,GAEzC,IAAK,QACH,OAAOq6vB,EAAWzuvB,KAAMlc,EAAQc,EAAQwP,GAE1C,IAAK,SACL,IAAK,SACH,OAAOw6vB,EAAY5uvB,KAAMlc,EAAQc,EAAQwP,GAE3C,IAAK,SAEH,OAAOy6vB,EAAY7uvB,KAAMlc,EAAQc,EAAQwP,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO06vB,EAAU9uvB,KAAMlc,EAAQc,EAAQwP,GAEzC,QACE,GAAIi5vB,EAAa,MAAM,IAAI/svB,UAAU,qBAAuBoqJ,GAC5DA,GAAY,GAAKA,GAAUtiK,cAC3BilwB,GAAc,EAGtB,EAEAx2nB,EAAOz2H,UAAUy9M,OAAS,WACxB,MAAO,CACL7tM,KAAM,SACNja,KAAMzB,MAAM8L,UAAUtF,MAAMuF,KAAKL,KAAK+qG,MAAQ/qG,KAAM,GAExD,EAsFA,IAAIwvvB,EAAuB,KAoB3B,SAAS7B,EAAY9ynB,EAAKpuI,EAAOC,GAC/B,IAAIm5B,EAAM,GACVn5B,EAAMlH,KAAKkE,IAAImxI,EAAIzmI,OAAQ1H,GAE3B,IAAK,IAAIrH,EAAIoH,EAAOpH,EAAIqH,IAAOrH,EAC7BwgC,GAAOtlB,OAAOysF,aAAsB,IAAT6tC,EAAIx1I,IAEjC,OAAOwgC,CACT,CAEA,SAAS+nuB,EAAa/ynB,EAAKpuI,EAAOC,GAChC,IAAIm5B,EAAM,GACVn5B,EAAMlH,KAAKkE,IAAImxI,EAAIzmI,OAAQ1H,GAE3B,IAAK,IAAIrH,EAAIoH,EAAOpH,EAAIqH,IAAOrH,EAC7BwgC,GAAOtlB,OAAOysF,aAAa6tC,EAAIx1I,IAEjC,OAAOwgC,CACT,CAEA,SAAS4nuB,EAAU5ynB,EAAKpuI,EAAOC,GAC7B,IAAI+C,EAAMorI,EAAIzmI,SAET3H,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAM+C,KAAK/C,EAAM+C,GAGxC,IADA,IAAIg6G,EAAM,GACDpkH,EAAIoH,EAAOpH,EAAIqH,IAAOrH,EAC7BokH,GAAOgnpB,EAAM51nB,EAAIx1I,IAEnB,OAAOokH,CACT,CAEA,SAASqkpB,EAAcjznB,EAAKpuI,EAAOC,GAGjC,IAFA,IAAIm2H,EAAQgY,EAAI//H,MAAMrO,EAAOC,GACzB03C,EAAM,GACD/+C,EAAI,EAAGA,EAAIw9H,EAAMzuH,OAAQ/O,GAAK,EACrC++C,GAAO7jC,OAAOysF,aAAa61B,EAAMx9H,GAAoB,IAAfw9H,EAAMx9H,EAAI,IAElD,OAAO++C,CACT,CAyCA,SAASsstB,EAAa9rwB,EAAQ8tJ,EAAKt+I,GACjC,GAAKxP,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAI0iQ,WAAW,sBAC3D,GAAI1iQ,EAAS8tJ,EAAMt+I,EAAQ,MAAM,IAAIkzP,WAAW,wCAClD,CA8JA,SAASqpgB,EAAU91nB,EAAKl1I,EAAOf,EAAQ8tJ,EAAK/oJ,EAAKD,GAC/C,IAAKmtI,EAAOC,SAAS+D,GAAM,MAAM,IAAIv6H,UAAU,+CAC/C,GAAI3a,EAAQgE,GAAOhE,EAAQ+D,EAAK,MAAM,IAAI49P,WAAW,qCACrD,GAAI1iQ,EAAS8tJ,EAAM7X,EAAIzmI,OAAQ,MAAM,IAAIkzP,WAAW,qBACtD,CAiDA,SAASspgB,EAAmB/1nB,EAAKl1I,EAAOf,EAAQiswB,GAC1ClrwB,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIN,EAAI,EAAG2gC,EAAIxgC,KAAKkE,IAAImxI,EAAIzmI,OAASxP,EAAQ,GAAIS,EAAI2gC,IAAK3gC,EAC7Dw1I,EAAIj2I,EAASS,IAAMM,EAAS,KAAS,GAAKkrwB,EAAexrwB,EAAI,EAAIA,MAClC,GAA5BwrwB,EAAexrwB,EAAI,EAAIA,EAE9B,CA4BA,SAASyrwB,EAAmBj2nB,EAAKl1I,EAAOf,EAAQiswB,GAC1ClrwB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIN,EAAI,EAAG2gC,EAAIxgC,KAAKkE,IAAImxI,EAAIzmI,OAASxP,EAAQ,GAAIS,EAAI2gC,IAAK3gC,EAC7Dw1I,EAAIj2I,EAASS,GAAMM,IAAuC,GAA5BkrwB,EAAexrwB,EAAI,EAAIA,GAAU,GAEnE,CAiJA,SAAS0rwB,EAAcl2nB,EAAKl1I,EAAOf,EAAQ8tJ,EAAK/oJ,EAAKD,GACnD,GAAI9E,EAAS8tJ,EAAM7X,EAAIzmI,OAAQ,MAAM,IAAIkzP,WAAW,sBACpD,GAAI1iQ,EAAS,EAAG,MAAM,IAAI0iQ,WAAW,qBACvC,CAEA,SAAS0pgB,EAAYn2nB,EAAKl1I,EAAOf,EAAQiswB,EAAcI,GAKrD,OAJKA,GACHF,EAAal2nB,EAAKl1I,EAAOf,EAAQ,GAEnCiowB,EAAQnnwB,MAAMm1I,EAAKl1I,EAAOf,EAAQiswB,EAAc,GAAI,GAC7CjswB,EAAS,CAClB,CAUA,SAASsswB,EAAar2nB,EAAKl1I,EAAOf,EAAQiswB,EAAcI,GAKtD,OAJKA,GACHF,EAAal2nB,EAAKl1I,EAAOf,EAAQ,GAEnCiowB,EAAQnnwB,MAAMm1I,EAAKl1I,EAAOf,EAAQiswB,EAAc,GAAI,GAC7CjswB,EAAS,CAClB,CAhdAiyI,EAAOz2H,UAAUtF,MAAQ,SAAgBrO,EAAOC,GAC9C,IAoBIykwB,EApBA1hwB,EAAMuQ,KAAK5L,OAqBf,IApBA3H,IAAUA,GAGE,GACVA,GAASgD,GACG,IAAGhD,EAAQ,GACdA,EAAQgD,IACjBhD,EAAQgD,IANV/C,OAAcoK,IAARpK,EAAoB+C,IAAQ/C,GASxB,GACRA,GAAO+C,GACG,IAAG/C,EAAM,GACVA,EAAM+C,IACf/C,EAAM+C,GAGJ/C,EAAMD,IAAOC,EAAMD,GAGnBoqI,EAAOk2nB,qBACToE,EAASnxvB,KAAKujI,SAAS92I,EAAOC,IACvBwT,UAAY22H,EAAOz2H,cACrB,CACL,IAAIgxvB,EAAW1kwB,EAAMD,EACrB0kwB,EAAS,IAAIt6nB,EAAOu6nB,OAAUt6vB,GAC9B,IAAK,IAAIzR,EAAI,EAAGA,EAAI+rwB,IAAY/rwB,EAC9B8rwB,EAAO9rwB,GAAK2a,KAAK3a,EAAIoH,EAEzB,CAEA,OAAO0kwB,CACT,EAUAt6nB,EAAOz2H,UAAUixvB,WAAa,SAAqBzswB,EAAQyoM,EAAY4jkB,GACrErswB,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GAAUP,EAAY9rwB,EAAQyoM,EAAYrtL,KAAK5L,QAKpD,IAHA,IAAIuzB,EAAM3nB,KAAKpb,GACXo7I,EAAM,EACN36I,EAAI,IACCA,EAAIgoM,IAAertD,GAAO,MACjCr4G,GAAO3nB,KAAKpb,EAASS,GAAK26I,EAG5B,OAAOr4G,CACT,EAEAkvG,EAAOz2H,UAAUkxvB,WAAa,SAAqB1swB,EAAQyoM,EAAY4jkB,GACrErswB,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GACHP,EAAY9rwB,EAAQyoM,EAAYrtL,KAAK5L,QAKvC,IAFA,IAAIuzB,EAAM3nB,KAAKpb,IAAWyoM,GACtBrtD,EAAM,EACHqtD,EAAa,IAAMrtD,GAAO,MAC/Br4G,GAAO3nB,KAAKpb,IAAWyoM,GAAcrtD,EAGvC,OAAOr4G,CACT,EAEAkvG,EAAOz2H,UAAUmxvB,UAAY,SAAoB3swB,EAAQqswB,GAEvD,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpC4L,KAAKpb,EACd,EAEAiyI,EAAOz2H,UAAUoxvB,aAAe,SAAuB5swB,EAAQqswB,GAE7D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpC4L,KAAKpb,GAAWob,KAAKpb,EAAS,IAAM,CAC7C,EAEAiyI,EAAOz2H,UAAU+tvB,aAAe,SAAuBvpwB,EAAQqswB,GAE7D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACnC4L,KAAKpb,IAAW,EAAKob,KAAKpb,EAAS,EAC7C,EAEAiyI,EAAOz2H,UAAU27I,aAAe,SAAuBn3J,EAAQqswB,GAG7D,OAFKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,SAElC4L,KAAKpb,GACTob,KAAKpb,EAAS,IAAM,EACpBob,KAAKpb,EAAS,IAAM,IACD,SAAnBob,KAAKpb,EAAS,EACrB,EAEAiyI,EAAOz2H,UAAUqxvB,aAAe,SAAuB7swB,EAAQqswB,GAG7D,OAFKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QAEpB,SAAf4L,KAAKpb,IACTob,KAAKpb,EAAS,IAAM,GACrBob,KAAKpb,EAAS,IAAM,EACrBob,KAAKpb,EAAS,GAClB,EAEAiyI,EAAOz2H,UAAUsxvB,UAAY,SAAoB9swB,EAAQyoM,EAAY4jkB,GACnErswB,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GAAUP,EAAY9rwB,EAAQyoM,EAAYrtL,KAAK5L,QAKpD,IAHA,IAAIuzB,EAAM3nB,KAAKpb,GACXo7I,EAAM,EACN36I,EAAI,IACCA,EAAIgoM,IAAertD,GAAO,MACjCr4G,GAAO3nB,KAAKpb,EAASS,GAAK26I,EAM5B,OAFIr4G,IAFJq4G,GAAO,OAESr4G,GAAOniC,KAAKC,IAAI,EAAG,EAAI4nM,IAEhC1lK,CACT,EAEAkvG,EAAOz2H,UAAUuxvB,UAAY,SAAoB/swB,EAAQyoM,EAAY4jkB,GACnErswB,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GAAUP,EAAY9rwB,EAAQyoM,EAAYrtL,KAAK5L,QAKpD,IAHA,IAAI/O,EAAIgoM,EACJrtD,EAAM,EACNr4G,EAAM3nB,KAAKpb,IAAWS,GACnBA,EAAI,IAAM26I,GAAO,MACtBr4G,GAAO3nB,KAAKpb,IAAWS,GAAK26I,EAM9B,OAFIr4G,IAFJq4G,GAAO,OAESr4G,GAAOniC,KAAKC,IAAI,EAAG,EAAI4nM,IAEhC1lK,CACT,EAEAkvG,EAAOz2H,UAAUwxvB,SAAW,SAAmBhtwB,EAAQqswB,GAErD,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACtB,IAAf4L,KAAKpb,IAC0B,GAA5B,IAAOob,KAAKpb,GAAU,GADKob,KAAKpb,EAE3C,EAEAiyI,EAAOz2H,UAAUyxvB,YAAc,SAAsBjtwB,EAAQqswB,GACtDA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QAC3C,IAAIuzB,EAAM3nB,KAAKpb,GAAWob,KAAKpb,EAAS,IAAM,EAC9C,OAAc,MAAN+iC,EAAsB,WAANA,EAAmBA,CAC7C,EAEAkvG,EAAOz2H,UAAU0xvB,YAAc,SAAsBltwB,EAAQqswB,GACtDA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QAC3C,IAAIuzB,EAAM3nB,KAAKpb,EAAS,GAAMob,KAAKpb,IAAW,EAC9C,OAAc,MAAN+iC,EAAsB,WAANA,EAAmBA,CAC7C,EAEAkvG,EAAOz2H,UAAU2xvB,YAAc,SAAsBntwB,EAAQqswB,GAG3D,OAFKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QAEnC4L,KAAKpb,GACVob,KAAKpb,EAAS,IAAM,EACpBob,KAAKpb,EAAS,IAAM,GACpBob,KAAKpb,EAAS,IAAM,EACzB,EAEAiyI,EAAOz2H,UAAU4xvB,YAAc,SAAsBptwB,EAAQqswB,GAG3D,OAFKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QAEnC4L,KAAKpb,IAAW,GACrBob,KAAKpb,EAAS,IAAM,GACpBob,KAAKpb,EAAS,IAAM,EACpBob,KAAKpb,EAAS,EACnB,EAEAiyI,EAAOz2H,UAAU6xvB,YAAc,SAAsBrtwB,EAAQqswB,GAE3D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpCy4vB,EAAQnowB,KAAKsb,KAAMpb,GAAQ,EAAM,GAAI,EAC9C,EAEAiyI,EAAOz2H,UAAU8xvB,YAAc,SAAsBttwB,EAAQqswB,GAE3D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpCy4vB,EAAQnowB,KAAKsb,KAAMpb,GAAQ,EAAO,GAAI,EAC/C,EAEAiyI,EAAOz2H,UAAU47I,aAAe,SAAuBp3J,EAAQqswB,GAE7D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpCy4vB,EAAQnowB,KAAKsb,KAAMpb,GAAQ,EAAM,GAAI,EAC9C,EAEAiyI,EAAOz2H,UAAU+xvB,aAAe,SAAuBvtwB,EAAQqswB,GAE7D,OADKA,GAAUP,EAAY9rwB,EAAQ,EAAGob,KAAK5L,QACpCy4vB,EAAQnowB,KAAKsb,KAAMpb,GAAQ,EAAO,GAAI,EAC/C,EAQAiyI,EAAOz2H,UAAUgyvB,YAAc,SAAsBzswB,EAAOf,EAAQyoM,EAAY4jkB,GAC9EtrwB,GAASA,EACTf,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GAEHN,EAAS3wvB,KAAMra,EAAOf,EAAQyoM,EADf7nM,KAAKC,IAAI,EAAG,EAAI4nM,GAAc,EACO,GAGtD,IAAIrtD,EAAM,EACN36I,EAAI,EAER,IADA2a,KAAKpb,GAAkB,IAARe,IACNN,EAAIgoM,IAAertD,GAAO,MACjChgI,KAAKpb,EAASS,GAAMM,EAAQq6I,EAAO,IAGrC,OAAOp7I,EAASyoM,CAClB,EAEAx2D,EAAOz2H,UAAUiyvB,YAAc,SAAsB1swB,EAAOf,EAAQyoM,EAAY4jkB,GAC9EtrwB,GAASA,EACTf,GAAkB,EAClByoM,GAA0B,EACrB4jkB,GAEHN,EAAS3wvB,KAAMra,EAAOf,EAAQyoM,EADf7nM,KAAKC,IAAI,EAAG,EAAI4nM,GAAc,EACO,GAGtD,IAAIhoM,EAAIgoM,EAAa,EACjBrtD,EAAM,EAEV,IADAhgI,KAAKpb,EAASS,GAAa,IAARM,IACVN,GAAK,IAAM26I,GAAO,MACzBhgI,KAAKpb,EAASS,GAAMM,EAAQq6I,EAAO,IAGrC,OAAOp7I,EAASyoM,CAClB,EAEAx2D,EAAOz2H,UAAUkyvB,WAAa,SAAqB3swB,EAAOf,EAAQqswB,GAMhE,OALAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,IAAM,GACjDiyI,EAAOk2nB,sBAAqBpnwB,EAAQH,KAAKQ,MAAML,IACpDqa,KAAKpb,GAAmB,IAARe,EACTf,EAAS,CAClB,EAUAiyI,EAAOz2H,UAAUmyvB,cAAgB,SAAwB5swB,EAAOf,EAAQqswB,GAUtE,OATAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,MAAQ,GACpDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAmB,IAARe,EAChBqa,KAAKpb,EAAS,GAAMe,IAAU,GAE9BirwB,EAAkB5wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAUoyvB,cAAgB,SAAwB7swB,EAAOf,EAAQqswB,GAUtE,OATAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,MAAQ,GACpDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAWe,IAAU,EAC1Bqa,KAAKpb,EAAS,GAAc,IAARe,GAEpBirwB,EAAkB5wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EASAiyI,EAAOz2H,UAAUqyvB,cAAgB,SAAwB9swB,EAAOf,EAAQqswB,GAYtE,OAXAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,WAAY,GACxDiyI,EAAOk2nB,qBACT/svB,KAAKpb,EAAS,GAAMe,IAAU,GAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,GAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,EAC9Bqa,KAAKpb,GAAmB,IAARe,GAEhBmrwB,EAAkB9wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAUsyvB,cAAgB,SAAwB/swB,EAAOf,EAAQqswB,GAYtE,OAXAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,WAAY,GACxDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAWe,IAAU,GAC1Bqa,KAAKpb,EAAS,GAAMe,IAAU,GAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,EAC9Bqa,KAAKpb,EAAS,GAAc,IAARe,GAEpBmrwB,EAAkB9wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAUuyvB,WAAa,SAAqBhtwB,EAAOf,EAAQyoM,EAAY4jkB,GAG5E,GAFAtrwB,GAASA,EACTf,GAAkB,GACbqswB,EAAU,CACb,IAAIz9rB,EAAQhuE,KAAKC,IAAI,EAAG,EAAI4nM,EAAa,GAEzCsjkB,EAAS3wvB,KAAMra,EAAOf,EAAQyoM,EAAY75H,EAAQ,GAAIA,EACxD,CAEA,IAAInuE,EAAI,EACJ26I,EAAM,EACNz3D,EAAM,EAEV,IADAvoE,KAAKpb,GAAkB,IAARe,IACNN,EAAIgoM,IAAertD,GAAO,MAC7Br6I,EAAQ,GAAa,IAAR4iF,GAAsC,IAAzBvoE,KAAKpb,EAASS,EAAI,KAC9CkjF,EAAM,GAERvoE,KAAKpb,EAASS,IAAOM,EAAQq6I,EAAQ,GAAKz3D,EAAM,IAGlD,OAAO3jF,EAASyoM,CAClB,EAEAx2D,EAAOz2H,UAAUwyvB,WAAa,SAAqBjtwB,EAAOf,EAAQyoM,EAAY4jkB,GAG5E,GAFAtrwB,GAASA,EACTf,GAAkB,GACbqswB,EAAU,CACb,IAAIz9rB,EAAQhuE,KAAKC,IAAI,EAAG,EAAI4nM,EAAa,GAEzCsjkB,EAAS3wvB,KAAMra,EAAOf,EAAQyoM,EAAY75H,EAAQ,GAAIA,EACxD,CAEA,IAAInuE,EAAIgoM,EAAa,EACjBrtD,EAAM,EACNz3D,EAAM,EAEV,IADAvoE,KAAKpb,EAASS,GAAa,IAARM,IACVN,GAAK,IAAM26I,GAAO,MACrBr6I,EAAQ,GAAa,IAAR4iF,GAAsC,IAAzBvoE,KAAKpb,EAASS,EAAI,KAC9CkjF,EAAM,GAERvoE,KAAKpb,EAASS,IAAOM,EAAQq6I,EAAQ,GAAKz3D,EAAM,IAGlD,OAAO3jF,EAASyoM,CAClB,EAEAx2D,EAAOz2H,UAAUyyvB,UAAY,SAAoBltwB,EAAOf,EAAQqswB,GAO9D,OANAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,KAAO,KAClDiyI,EAAOk2nB,sBAAqBpnwB,EAAQH,KAAKQ,MAAML,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCqa,KAAKpb,GAAmB,IAARe,EACTf,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAU0yvB,aAAe,SAAuBntwB,EAAOf,EAAQqswB,GAUpE,OATAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,OAAS,OACrDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAmB,IAARe,EAChBqa,KAAKpb,EAAS,GAAMe,IAAU,GAE9BirwB,EAAkB5wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAU2yvB,aAAe,SAAuBptwB,EAAOf,EAAQqswB,GAUpE,OATAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,OAAS,OACrDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAWe,IAAU,EAC1Bqa,KAAKpb,EAAS,GAAc,IAARe,GAEpBirwB,EAAkB5wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAU4yvB,aAAe,SAAuBrtwB,EAAOf,EAAQqswB,GAYpE,OAXAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,YAAa,YACzDiyI,EAAOk2nB,qBACT/svB,KAAKpb,GAAmB,IAARe,EAChBqa,KAAKpb,EAAS,GAAMe,IAAU,EAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,GAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,IAE9BmrwB,EAAkB9wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAEAiyI,EAAOz2H,UAAU6yvB,aAAe,SAAuBttwB,EAAOf,EAAQqswB,GAapE,OAZAtrwB,GAASA,EACTf,GAAkB,EACbqswB,GAAUN,EAAS3wvB,KAAMra,EAAOf,EAAQ,EAAG,YAAa,YACzDe,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxCkxI,EAAOk2nB,qBACT/svB,KAAKpb,GAAWe,IAAU,GAC1Bqa,KAAKpb,EAAS,GAAMe,IAAU,GAC9Bqa,KAAKpb,EAAS,GAAMe,IAAU,EAC9Bqa,KAAKpb,EAAS,GAAc,IAARe,GAEpBmrwB,EAAkB9wvB,KAAMra,EAAOf,GAAQ,GAElCA,EAAS,CAClB,EAeAiyI,EAAOz2H,UAAU8yvB,aAAe,SAAuBvtwB,EAAOf,EAAQqswB,GACpE,OAAOD,EAAWhxvB,KAAMra,EAAOf,GAAQ,EAAMqswB,EAC/C,EAEAp6nB,EAAOz2H,UAAU+yvB,aAAe,SAAuBxtwB,EAAOf,EAAQqswB,GACpE,OAAOD,EAAWhxvB,KAAMra,EAAOf,GAAQ,EAAOqswB,EAChD,EAUAp6nB,EAAOz2H,UAAUgzvB,cAAgB,SAAwBztwB,EAAOf,EAAQqswB,GACtE,OAAOC,EAAYlxvB,KAAMra,EAAOf,GAAQ,EAAMqswB,EAChD,EAEAp6nB,EAAOz2H,UAAUizvB,cAAgB,SAAwB1twB,EAAOf,EAAQqswB,GACtE,OAAOC,EAAYlxvB,KAAMra,EAAOf,GAAQ,EAAOqswB,EACjD,EAGAp6nB,EAAOz2H,UAAUkxF,KAAO,SAAevjG,EAAQmxrB,EAAazyrB,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMsT,KAAK5L,QAC9B8qrB,GAAenxrB,EAAOqG,SAAQ8qrB,EAAcnxrB,EAAOqG,QAClD8qrB,IAAaA,EAAc,GAC5BxyrB,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBsB,EAAOqG,QAAgC,IAAhB4L,KAAK5L,OAAc,OAAO,EAGrD,GAAI8qrB,EAAc,EAChB,MAAM,IAAI53b,WAAW,6BAEvB,GAAI76P,EAAQ,GAAKA,GAASuT,KAAK5L,OAAQ,MAAM,IAAIkzP,WAAW,6BAC5D,GAAI56P,EAAM,EAAG,MAAM,IAAI46P,WAAW,2BAG9B56P,EAAMsT,KAAK5L,SAAQ1H,EAAMsT,KAAK5L,QAC9BrG,EAAOqG,OAAS8qrB,EAAcxyrB,EAAMD,IACtCC,EAAMqB,EAAOqG,OAAS8qrB,EAAczyrB,GAGtC,IACIpH,EADAoK,EAAM/C,EAAMD,EAGhB,GAAIuT,OAASjS,GAAUtB,EAAQyyrB,GAAeA,EAAcxyrB,EAE1D,IAAKrH,EAAIoK,EAAM,EAAGpK,GAAK,IAAKA,EAC1B0I,EAAO1I,EAAI65rB,GAAel/qB,KAAK3a,EAAIoH,QAEhC,GAAIgD,EAAM,MAASonI,EAAOk2nB,oBAE/B,IAAK1nwB,EAAI,EAAGA,EAAIoK,IAAOpK,EACrB0I,EAAO1I,EAAI65rB,GAAel/qB,KAAK3a,EAAIoH,QAGrC44F,WAAWjlF,UAAUrM,IAAIsM,KACvBtS,EACAiS,KAAKujI,SAAS92I,EAAOA,EAAQgD,GAC7ByvrB,GAIJ,OAAOzvrB,CACT,EAMAonI,EAAOz2H,UAAUquB,KAAO,SAAe9G,EAAKl7B,EAAOC,EAAKg+J,GAEtD,GAAmB,iBAAR/iI,EAAkB,CAS3B,GARqB,iBAAVl7B,GACTi+J,EAAWj+J,EACXA,EAAQ,EACRC,EAAMsT,KAAK5L,QACa,iBAAR1H,IAChBg+J,EAAWh+J,EACXA,EAAMsT,KAAK5L,QAEM,IAAfuzB,EAAIvzB,OAAc,CACpB,IAAIo6F,EAAO7mE,EAAIi+D,WAAW,GACtB4I,EAAO,MACT7mE,EAAM6mE,EAEV,CACA,QAAiB13F,IAAb4zJ,GAA8C,iBAAbA,EACnC,MAAM,IAAIpqJ,UAAU,6BAEtB,GAAwB,iBAAboqJ,IAA0B7zB,EAAOs2nB,WAAWzimB,GACrD,MAAM,IAAIpqJ,UAAU,qBAAuBoqJ,EAE/C,KAA0B,iBAAR/iI,IAChBA,GAAY,KAId,GAAIl7B,EAAQ,GAAKuT,KAAK5L,OAAS3H,GAASuT,KAAK5L,OAAS1H,EACpD,MAAM,IAAI46P,WAAW,sBAGvB,GAAI56P,GAAOD,EACT,OAAOuT,KAQT,IAAI3a,EACJ,GANAoH,KAAkB,EAClBC,OAAcoK,IAARpK,EAAoBsT,KAAK5L,OAAS1H,IAAQ,EAE3Ci7B,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKtiC,EAAIoH,EAAOpH,EAAIqH,IAAOrH,EACzB2a,KAAK3a,GAAKsiC,MAEP,CACL,IAAIk7F,EAAQgU,EAAOC,SAASnvG,GACxBA,EACA2luB,EAAY,IAAIz2nB,EAAOlvG,EAAK+iI,GAAU1jK,YACtCyI,EAAMozH,EAAMzuH,OAChB,IAAK/O,EAAI,EAAGA,EAAIqH,EAAMD,IAASpH,EAC7B2a,KAAK3a,EAAIoH,GAASo2H,EAAMx9H,EAAIoK,EAEhC,CAEA,OAAOuQ,IACT,EAKA,IAAIszvB,EAAoB,qBAmBxB,SAAS7C,EAAO5vvB,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAE7Z,SAAS,IAC7B6Z,EAAE7Z,SAAS,GACpB,CAEA,SAASsmwB,EAAaxpwB,EAAQs8M,GAE5B,IAAI0xgB,EADJ1xgB,EAAQA,GAAS76M,IAMjB,IAJA,IAAI6O,EAAStQ,EAAOsQ,OAChBm/vB,EAAgB,KAChB1woB,EAAQ,GAEHx9H,EAAI,EAAGA,EAAI+O,IAAU/O,EAAG,CAI/B,IAHAystB,EAAYhutB,EAAO8hG,WAAWvgG,IAGd,OAAUystB,EAAY,MAAQ,CAE5C,IAAKyhD,EAAe,CAElB,GAAIzhD,EAAY,MAAQ,EAEjB1xgB,GAAS,IAAM,GAAGv9E,EAAM/uH,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAIzO,EAAI,IAAM+O,EAAQ,EAEtBgsM,GAAS,IAAM,GAAGv9E,EAAM/uH,KAAK,IAAM,IAAM,KAC9C,QACF,CAGAy/vB,EAAgBzhD,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjB1xgB,GAAS,IAAM,GAAGv9E,EAAM/uH,KAAK,IAAM,IAAM,KAC9Cy/vB,EAAgBzhD,EAChB,QACF,CAGAA,EAAkE,OAArDyhD,EAAgB,OAAU,GAAKzhD,EAAY,MAC1D,MAAWyhD,IAEJnzjB,GAAS,IAAM,GAAGv9E,EAAM/uH,KAAK,IAAM,IAAM,KAMhD,GAHAy/vB,EAAgB,KAGZzhD,EAAY,IAAM,CACpB,IAAK1xgB,GAAS,GAAK,EAAG,MACtBv9E,EAAM/uH,KAAKg+sB,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAK1xgB,GAAS,GAAK,EAAG,MACtBv9E,EAAM/uH,KACJg+sB,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAK1xgB,GAAS,GAAK,EAAG,MACtBv9E,EAAM/uH,KACJg+sB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAIvqsB,MAAM,sBARhB,IAAK64L,GAAS,GAAK,EAAG,MACtBv9E,EAAM/uH,KACJg+sB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOjvlB,CACT,CA2BA,SAAS0qoB,EAAe96uB,GACtB,OAAOm6uB,EAAO4G,YAhIhB,SAAsB/gvB,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIzU,KAAayU,EAAIzU,OAClByU,EAAI1uB,QAAQ,aAAc,GACnC,CAbQ0vwB,CAAWhhvB,GAAK1uB,QAAQuvwB,EAAmB,KAEzCl/vB,OAAS,EAAG,MAAO,GAE3B,KAAOqe,EAAIre,OAAS,GAAM,GACxBqe,GAAY,IAEd,OAAOA,CACT,CAsH4BihvB,CAAYjhvB,GACxC,CAEA,SAAS+7uB,EAAYnnpB,EAAK0pC,EAAKnsJ,EAAQwP,GACrC,IAAK,IAAI/O,EAAI,EAAGA,EAAI+O,KACb/O,EAAIT,GAAUmsJ,EAAI38I,QAAY/O,GAAKgiH,EAAIjzG,UADhB/O,EAE5B0rJ,EAAI1rJ,EAAIT,GAAUyiH,EAAIhiH,GAExB,OAAOA,CACT,C,yBC/uDQ,SAAWxE,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,iFAAiFF,MAC7E,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfod,KAAKs9E,OAA8B,IAAft9E,KAAKs9E,MAC1B,wBACA,uBACV,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNC,EAAG,kBACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERM,uBAAwB,WACxBC,QAAS,MACTogY,YAAa,iBAKpB,CA9DyChgY,CAAQ,EAAQ,O,yBCGlD,SAAW1D,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,sFAAsFC,MAC1F,KAEJC,YACI,sFAAsFD,MAClF,KAERE,SAAU,yDAAyDF,MAC/D,KAEJG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVC,cAAe,qDACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAGM,eAAbD,GACa,UAAbA,GACa,iBAAbA,EAEOC,EACa,iBAAbD,GAA4C,QAAbA,EAC/BC,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,EAE1C,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,IAAIo+G,EAAY,IAAPt+G,EAAaC,EACtB,OAAIq+G,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,KAEf,EACAn+G,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRM,uBAAwB,6BACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAEnB,EACAp/C,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAE,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAK,KAAM,CAEFC,IAAK,EACLC,IAAK,IAMhB,CAnHyCC,CAAQ,EAAQ,O,+BCiB1DuF,OAAOwY,eAAe7d,EAAS,KAA/B,CACEinC,YAAY,EACZ73B,IAAK,WACH,OAAOmzpB,EAASlzpB,IAClB,IAEFhK,OAAOwY,eAAe7d,EAAS,KAA/B,CACEinC,YAAY,EACZ73B,IAAK,WACH,OAAOmzpB,EAASjjqB,OAClB,IAQF+F,OAAOwY,eAAe7d,EAAS,KAA/B,CACEinC,YAAY,EACZ73B,IAAK,WACH,OAAOmzpB,EAASl9R,MAClB,IAoBgIrlY,EAAQ,GAAgBA,EAAQ,QAAkB,EAEpL,IAAIkvwB,EAAmBx7oB,EAAuB,EAAQ,QAElDy7oB,EAAWz7oB,EAAuB,EAAQ,QAE1C07oB,EAAa17oB,EAAuB,EAAQ,QAE5C49d,EAAa59d,EAAuB,EAAQ,QAE5C6uiB,EAAW,EAAQ,OAEL7uiB,EAAuB,EAAQ,QAEjD,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAE,QAAWA,EAAO,CAEhG,IAAIwhvB,GAA+B,EAAIH,EAA0B,SAAG59K,EAAoB,SACxFtxlB,EAAQ,GAAkBqvwB,EAC1B,IAAIC,GAA6B,EAAIH,EAAkB,SAAG79K,EAAoB,SAC9EtxlB,EAAQ,GAAgBsvwB,EAExB,IAAIC,GAAgC,EAAIH,EAAoB,SAAG99K,EAAoB,SACjEi+K,EAAiBrzD,YACnBqzD,EAAiBrgE,UACnBqgE,EAAiB9lf,QACf8lf,EAAiBtzD,UACjBszD,EAAiBpzD,UACPozD,EAAiBnzD,mB,6BC1F3C/2sB,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAGTlB,EAAA,QAAkB,SAAUmvG,GAC1B,OAAOA,GAA0B,iBAAhBA,EAAO5jF,KAA0B,8CAAgD,wCACpG,EAEA0xE,EAAOj9F,QAAUA,EAAiB,O,+BCTlC,IAAIilG,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4gB,EAAgB,EAAQ,OACxBy6H,EAAkB,EAAQ,OAC1BniB,EAAsB,EAAQ,OAE9B06hB,EAAa5zpB,EAAY,GAAGniG,MAOhCwrF,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OALhBogB,IAAkBn3H,SACPyvO,EAAoB,OAAQ,MAIL,CAClDr7N,KAAM,SAAcsxP,GAClB,OAAOykgB,EAAWv4gB,EAAgB17O,WAAqBlJ,IAAd04P,EAA0B,IAAMA,EAC3E,G,+DCPF,SAASv2I,EAAkBriF,EAAKnnC,IAAkB,MAAPA,GAAeA,EAAMmnC,EAAIxiC,UAAQ3E,EAAMmnC,EAAIxiC,QAAQ,IAAK,IAAI/O,EAAI,EAAGu0H,EAAO,IAAItlH,MAAM7E,GAAMpK,EAAIoK,EAAKpK,IAAOu0H,EAAKv0H,GAAKuxC,EAAIvxC,GAAM,OAAOu0H,CAAM,CA2BtL,QAlBuB,SAA0B3M,GAC/C,OAAO,SAAUyiF,GACf,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GAEf,GAAIA,EAAO5jF,OAAS,KAClB,OAAOloB,EAAK8rG,GAGd,IA5BoBh9D,EA4BhB6qpB,EAAkB7tlB,EAAO1pF,QACzBq6B,EAASk9oB,EAAgBl9oB,OACzBlwC,EAAOotrB,EAAgBptrB,KAC3B44G,EAAQ1oE,GAAQzjC,MAAMmsG,EAvB9B,SAA4Br2E,GAAO,GAAItiC,MAAMyb,QAAQ6mB,GAAM,OAAOqiF,EAAkBriF,EAAM,CARhDsiF,CAAdtiF,EA+B8BviC,IAzB1D,SAA0B8kH,GAAQ,GAAsB,oBAAX30H,QAA0BA,OAAO0d,YAAYpY,OAAOqvH,GAAO,OAAO7kH,MAAMuwB,KAAKs0F,EAAO,CAN5DC,CAAiBxiF,IAItF,SAAqC+sC,EAAGnoE,GAAU,GAAKmoE,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOs1C,EAAkBt1C,EAAGnoE,GAAS,IAAIqF,EAAI/W,OAAOsW,UAAUpZ,SAASqZ,KAAKsjE,GAAG7oE,MAAM,GAAI,GAAiE,MAAnD,WAAN+F,GAAkB8iE,EAAEljE,cAAaI,EAAI8iE,EAAEljE,YAAYlN,MAAgB,QAANsN,GAAqB,QAANA,EAAoBvM,MAAMuwB,KAAKhkB,GAAc,cAANA,GAAqB,2CAA2C3e,KAAK2e,GAAWo4G,EAAkBt1C,EAAGnoE,QAAzG,CAA7O,CAA+V,CAJjU69G,CAA4BziF,IAE1H,WAAgC,MAAM,IAAIt2B,UAAU,uIAAyI,CAF3Dg5G,GAgC5H,CACF,CACF,CACF,C,kBCnCA,IAAIomZ,EAAe,EAAQ,OAe3Bh+a,EAAOj9F,QAJP,SAAsB+F,GACpB,OAAOk1gB,EAAa1/f,KAAKi4T,SAAUztU,IAAQ,CAC7C,C,+BCZA,IAAIo1H,EAAc,EAAQ,OACtBK,EAAQ,EAAQ,OAIpBv+B,EAAOj9F,QAAUm7H,GAAeK,EAAM,WAEpC,OAGiB,KAHVn2H,OAAOwY,eAAe,WAA0B,EAAG,YAAa,CACrE3c,MAAO,GACP8lC,UAAU,IACTrrB,SACL,E,+BCXA,IAAIspF,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,QAAU,CAC1ExmJ,IAAK,WACH,OAAOumJ,EAAW9uN,KAAM,MAAO,GAAI,GACrC,G,6BCTF,IAAIk0vB,EAAwB,CAAC,EAAE/xqB,qBAE3B5sD,EAA2BzrC,OAAOyrC,yBAGlC4+tB,EAAc5+tB,IAA6B2+tB,EAAsB7zvB,KAAK,CAAE,EAAG,GAAK,GAIpF5b,EAAQid,EAAIyyvB,EAAc,SAA8B35uB,GACtD,IAAI+9C,EAAahjC,EAAyBv1B,KAAMwa,GAChD,QAAS+9C,GAAcA,EAAW7sC,UACpC,EAAIwouB,C,kBCbJ,EAAQ,OACRxyqB,EAAOj9F,QAAU,U,+DCqBF,SAAS8a,IACtB,IAAIy0pB,GAAU,IAAA/0pB,SAAO,GACjBP,GAAY,IAAAO,QAAO,WACrB,OAAO+0pB,EAAQn+pB,OACjB,GAMA,OALA,IAAAgK,WAAU,WACR,OAAO,WACLm0pB,EAAQn+pB,SAAU,CACpB,CACF,EAAG,IACI6I,EAAU7I,OACnB,C,yBChCA6rF,EAAOj9F,QAAU,SAAsBg9G,EAAIi4H,EAAUC,GACnD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BiS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACvB65H,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC/B,GAAIy3F,EAAG0S,KAAKgwV,eAAer+O,EAASrkH,EAAG0/H,MAAMr7L,KAAM,CACjDw1L,EAAIhW,OAASQ,EACbwV,EAAIE,WAAasQ,EACjBxQ,EAAIpB,cAAgBD,EACpBxwH,GAAO,QAAU,EAAU,eAC3B,IAGI2qpB,EAHAnnhB,EAAgBxrI,EAAG25H,cACvB35H,EAAG25H,cAAgBE,EAAIF,eAAgB,EACvCE,EAAIP,cAAe,EAEfO,EAAIvrM,KAAKqqM,YACXg6hB,EAAmB94hB,EAAIvrM,KAAKqqM,UAC5BkB,EAAIvrM,KAAKqqM,WAAY,GAEvB3wH,GAAO,IAAOhI,EAAGkkH,SAAS2V,GAAQ,IAClCA,EAAIP,cAAe,EACfq5hB,IAAkB94hB,EAAIvrM,KAAKqqM,UAAYg6hB,GAC3C3ypB,EAAG25H,cAAgBE,EAAIF,cAAgB6R,EACvCxjI,GAAO,QAAU,EAAe,SAChC,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,oDAAuEhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kBACpI,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,sCAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrHhI,EAAG1xE,KAAKqqM,YACV3wH,GAAO,MAEX,MACEA,GAAO,kBACiB,IAApBhI,EAAGs5H,cACLtxH,GAAO,oDAAuEhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kBACpI,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,sCAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,+EACH0wH,IACF1wH,GAAO,kBAGX,OAAOA,CACT,C,kBClFA,IAAIo1lB,EAAa,EAAQ,OACrBw1D,EAAe,EAAQ,OAc3B3yqB,EAAOj9F,QAJP,SAAuB8sB,EAAQ+5B,GAC7B,OAAOuzpB,EAAWttrB,EAAQ8ivB,EAAa9ivB,GAAS+5B,EAClD,C,+BCZA,IAAI06M,EAAa,EAAQ,OACrB/1O,EAAW,EAAQ,OACnBuwmB,EAAuB,EAAQ,OAC/B3qjB,EAAgB,EAAQ,MACxB2rC,EAAkB,EAAQ,OAC1Bi/gB,EAAc,EAAQ,OAEtB6zI,EAAe9ypB,EAAgB,eAC/BopJ,EAAoBn/I,SAASrrG,UAI3Bk0vB,KAAgB1pgB,GACpB41X,EAAqB9+mB,EAAEkpP,EAAmB0pgB,EAAc,CAAE3uwB,MAAO86nB,EAAY,SAAU3lmB,GACrF,IAAKkrO,EAAWhmP,QAAUiQ,EAAS6K,GAAI,OAAO,EAC9C,IAAI5Z,EAAIlB,KAAKI,UACb,OAAO6P,EAAS/O,GAAK20D,EAAc30D,EAAG4Z,GAAKA,aAAa9a,IAC1D,EAAGs0vB,I,+BCjBL,IAAI5qqB,EAAI,EAAQ,OACZ6qqB,EAAa,mBACb/6hB,EAAmB,EAAQ,MAE3Bg7hB,EAAa,YACbC,GAAc,EAIdD,IAAc,IAAIlgwB,MAAM,GAAGkgwB,GAAY,WAAcC,GAAc,CAAO,GAI9E/qqB,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAAQ4zpB,GAAe,CACvD9/rB,UAAW,SAAmBuvC,GAC5B,OAAOqwpB,EAAWv0vB,KAAMkkG,EAAY/vG,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EAC5E,IAIF0iO,EAAiBg7hB,E,+BCpBjB,IAAIvliB,EAAyB,EAAQ,OAEjC2jC,EAAU9oQ,OAId43F,EAAOj9F,QAAU,SAAUk9F,GACzB,OAAOixK,EAAQ3jC,EAAuBttI,GACxC,C,qCCRA,IACQ7hF,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk0vB,EAAa,EAAQ,OACrBC,EAA8B,EAAQ,OACtCC,EAAqB,4BAsBrB34gB,EAA4B,SAAUj4O,GAOtC,SAASi4O,EAAW89R,EAAuBnqhB,GACvC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAM+5gB,EAAuBnqhB,IAAYoQ,KA4CjE,OA3CAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B2wvB,kBAAmB,CACflvwB,MAAO,KACP8lC,UAAU,GAEdqpuB,aAAc,CACVnvwB,OAAO,EACP8lC,UAAU,GAEdspuB,YAAa,CACTpvwB,MAAO,KACP8lC,UAAU,GAEdupuB,aAAc,CACVrvwB,MAAO,KACP8lC,UAAU,GAEdwpuB,wBAAyB,CACrBtvwB,MAAO,KACP8lC,UAAU,GAEdypuB,kBAAmB,CACfvvwB,MAAO,CAAC,EACR8lC,UAAU,GAEd0puB,eAAgB,CACZxvwB,MAAO,KACP8lC,UAAU,GAEdi3T,WAAY,CACRh3T,YAAY,EACZ/lC,MAAO,CACHe,MAAO,KACPE,OAAQ,OAGhBw2P,UAAW,CACP1xN,YAAY,EACZ/lC,MAAO,KACP8lC,UAAU,KAGlBvnB,EAAM+wvB,wBAA0B,IAAKrlwB,EAAQ+kwB,6BAA+BA,GAA6BzwvB,EAAMkB,MACxGlB,CACX,CA4YA,OAhcAnE,EAAUk8O,EAAYj4O,GAwDtBi4O,EAAW77O,UAAUm8O,yBAA2B,SAAUE,QACjC,IAAjBA,IAA2BA,GAAe,GAC9C,IAAI24gB,GAAmB,EACnBhlqB,EAAU,GACV5sF,EAAKxD,KAAK2sN,iBAoBd,OApB0CnpN,EAAGxN,UAEzCo/vB,GAAmB,EACnBhlqB,EAAU,gCAEK,UALgD5sF,EAAGy9P,aAMlEm0f,GAAmB,EACnBhlqB,EAAU,6BAETpwF,KAAKo9O,YACNg4gB,GAAmB,EACnBhlqB,EAAU,gCAETpwF,KAAK++f,aAAahsf,MAAS0pO,IAC5B24gB,GAAmB,EACnBhlqB,EAAU,kEAEVA,GACApwF,KAAKoF,KAAKkC,MAAM8oF,GAEb,CAAEglqB,iBAAkBA,EAAkBhlqB,QAASA,EAC1D,EAIA6rJ,EAAW77O,UAAU+8O,eAAiB,WAClC,IAAIj5O,EAAQlE,KACZ,GAAIA,KAAK80vB,aACL90vB,KAAKoF,KAAKkC,MAAM,mEADpB,CAIA,IAAKtH,KAAKu8O,2BAA2B64gB,iBAGjC,OAFAp1vB,KAAK80vB,cAAe,OACpB90vB,KAAKoF,KAAKkC,MAAM,uDAGpBtH,KAAK80vB,cAAe,EACpB90vB,KAAKi1vB,wBAAwBpqvB,KAAK,SAClC7K,KAAKoF,KAAKkC,MAAM,0BAChB,IACI+tvB,EADAxmvB,EAAYhG,KAAKC,MAErB9I,KAAKu9O,SAASE,OAAO5mP,KAAK,WACtB,IAAIy+vB,EAAe,SAAU9ytB,GACzB76B,aAAazD,EAAM2wvB,mBACnB,IAAIrxvB,EAAKU,EAAMyoN,iBAAiBG,cAAciuK,UAAWA,OAAmB,IAAPv3X,EAAgBoxvB,EAAqBpxvB,EAEtGigC,EADkBj+C,KAAKQ,MAAM,IAAO+0Y,GACVs6X,GAC1B5xtB,EAAQ,GAAqC,iBAAzB4xtB,KACpB5xtB,EAAQ,GAEZv/B,EAAM2wvB,kBAAoBptvB,WAAW+6B,EAAIiB,EAC7C,EACIg3F,EAAU,WACV,IAAI86nB,EAAcrxvB,EAAMq4O,2BACxB,IAAKg5gB,EAAYH,iBAIb,OAHAlxvB,EAAM4wvB,cAAe,EACrB5wvB,EAAM+wvB,wBAAwBpqvB,KAAK,OAAQ0qvB,EAAYnlqB,cACvDlsF,EAAMkB,KAAKkC,MAAM,qDAGrBuH,EAAYhG,KAAKC,MACjB,IAAItF,EAAKU,EAAMyoN,iBAAiBG,cAAenpN,EAAKH,EAAG9c,MAAOA,OAAe,IAAPid,EAAgB,EAAIA,EAAIsB,EAAKzB,EAAG5c,OAAQA,OAAgB,IAAPqe,EAAgB,EAAIA,EAGvIf,EAAM8wvB,cAAgB9wvB,EAAM8wvB,aAAatuwB,QAAUA,IACnDwd,EAAM8wvB,aAAatuwB,MAAQA,EAC3Bwd,EAAM8wvB,aAAapuwB,OAASA,GAE5Bsd,EAAM6wvB,cACF7wvB,EAAM6wvB,YAAYruwB,QAAUA,IAC5Bwd,EAAM6wvB,YAAYruwB,MAAQA,EAC1Bwd,EAAM6wvB,YAAYnuwB,OAASA,GAE/Bsd,EAAM6wvB,YAAYznuB,WAAW,MAAMY,UAAUhqB,EAAMq5O,SAAU,EAAG,EAAG72P,EAAOE,IAE9E,IAAIuM,EAAS,KACb,IACI,IAAIlR,EAAyD,UAAjDiiB,EAAMgxvB,kBAAkBM,qBAAmCtxvB,EAAMq5O,SAAWr5O,EAAM6wvB,YAC9F5hwB,EAAS+Q,EAAMk5O,UAAUq4gB,aAAaxzwB,EAAOiiB,EAAM8wvB,aACvD,CACA,MAAOpqhB,GACH1mO,EAAMkB,KAAKkC,MAAM,iDAAkDsjO,EACvE,EACEz3O,aAAkBwD,QAAWxD,EAASwD,QAAQC,QAAQzD,IACnD0D,KAAK,WACFqN,EAAM8wvB,eAC2C,mBAAtC9wvB,EAAM24O,eAAe64gB,cAC5BxxvB,EAAM24O,eAAe64gB,eAEzBxxvB,EAAM+wvB,wBAAwBpqvB,KAAK,SAE3C,GACK+7E,QAAQ,WACTyuqB,EAAuBxsvB,KAAKC,MAAQ+F,EACpCymvB,EAAa76nB,EACjB,EACJ,EACA66nB,EAAa76nB,EACjB,GAAGozF,MAAM,SAAU5jN,GAAS,OAAO/F,EAAMkB,KAAK6E,MAAM,iCAAkC,CAAEA,MAAOA,EAAOqC,MAAOpI,GAAU,EApEvH,CAqEJ,EAIA+3O,EAAW77O,UAAU09D,YAAc,WAC/B,IAAI55D,EAAQlE,KACZgE,EAAO5D,UAAU09D,YAAYz9D,KAAKL,MAC9BA,KAAKu9O,WACLv9O,KAAKu9O,SAASo4gB,iBAAmB,WACzBC,EAAkB1xvB,EAAOA,EAAMq5O,YAC/Br5O,EAAMw+U,WAAWh8V,MAAQwd,EAAMq5O,SAASs4gB,WACxC3xvB,EAAMw+U,WAAW97V,OAASsd,EAAMq5O,SAASuid,YAEjD,EACA9/rB,KAAKu9O,SAASu4gB,SAAW,WACjBF,EAAkB1xvB,EAAOA,EAAMq5O,YAC/Br5O,EAAMw+U,WAAWh8V,MAAQwd,EAAMq5O,SAASs4gB,WACxC3xvB,EAAMw+U,WAAW97V,OAASsd,EAAMq5O,SAASuid,YACrC57rB,EAAM6guB,YACN7guB,EAAMkB,KAAKkC,MAAM,sBAAuBpD,EAAMw+U,YAC9Cx+U,EAAM2G,KAAKoxO,EAAW85gB,mBAAoB7xvB,IAGtD,EAER,EAIA+3O,EAAW77O,UAAUi9O,kBAAoB,WACrC,IAAID,EAAYp9O,KAAKo9O,UACrB,GAAIA,EAAW,CACX,IAAI44gB,EAAmBlswB,OAAOC,OAAO,CAAC,EAAGiW,KAAKk1vB,mBAC9Cl1vB,KAAKi9O,gBAAgBG,GACrBp9O,KAAKg9O,aAAaI,EAAW44gB,EACjC,CACJ,EAIA/5gB,EAAW77O,UAAUojC,OAAS,SAAUyytB,GAKpC,OAJAj2vB,KAAK0iV,WAAWh8V,MAAQuvwB,EAAQJ,WAChC71vB,KAAK0iV,WAAW97V,OAASqvwB,EAAQn2D,YACjC9/rB,KAAKoF,KAAKkC,MAAM,cAAetH,KAAK0iV,YACpC1iV,KAAK6K,KAAKoxO,EAAW85gB,mBAAoB/1vB,MAClCgE,EAAO5D,UAAUojC,OAAOnjC,KAAKL,KAAMi2vB,EAC9C,EAsBAh6gB,EAAW77O,UAAU48O,aAAe,SAAUI,EAAWxtP,GACrD,IAAIsU,EAAQlE,KACZ,IAAKo9O,GAA+C,mBAA3BA,EAAUq4gB,aAC/B,MAAM,IAAIluvB,MAAM,yDAEpB,GAAIvH,KAAKo9O,UACL,MAAM,IAAI71O,MAAM,4CAEpB,IAAKvH,KAAKu9O,SACN,MAAM,IAAIh2O,MAAM,wCAEpBvH,KAAKoF,KAAKkC,MAAM,0CAA2C81O,GACtDp9O,KAAKm1vB,iBACNn1vB,KAAKm1vB,eAAiB,WAClBjxvB,EAAMkB,KAAKkC,MAAM,4BAIbpD,EAAM24O,eAAe3vO,QACrBhJ,EAAMkB,KAAKkC,MAAM,kFACjBpD,EAAMm5O,oBAEd,EACAr9O,KAAK2sN,iBAAiBz0N,iBAAiB,SAAU8H,KAAKm1vB,iBAE1Dn1vB,KAAKk1vB,kBAAoBtlwB,GAAW,CAAC,EACrC,IAAI4T,EAAKxD,KAAKk1vB,kBAAmBM,EAAuBhyvB,EAAGgyvB,qBAAsBU,EAA+B1yvB,EAAG0yvB,6BACnH,GAA+B,oBAApBn5rB,iBAA4D,oBAAzBy4rB,EAC1C,MAAM,IAAIjuvB,MAAM,qDAEpB,GAAIiuvB,GAAiD,UAAzBA,GAA6D,WAAzBA,GAA8D,oBAAzBA,EACjG,MAAM,IAAIjuvB,MAAM,mCAAqCiuvB,GAEpDA,IACDA,EAAkD,oBAApBz4rB,gBAAkC,SAAW,mBAE/E,IAAIp5D,EAAK3D,KAAK2sN,iBAAiBG,cAAe7nN,EAAKtB,EAAGjd,MAAOA,OAAe,IAAPue,EAAgB,EAAIA,EAAIgmG,EAAKtnG,EAAG/c,OAAQA,OAAgB,IAAPqkH,EAAgB,EAAIA,EAAIC,EAAKvnG,EAAGo3X,UAAWA,OAAmB,IAAP7vR,EAAgB0ppB,EAAqB1ppB,EAmBlN,GAlB6B,oBAAzBsqpB,IACAx1vB,KAAK+0vB,YAAc,IAAIh4rB,gBAAgBr2E,EAAOE,IAErB,WAAzB4uwB,IACAx1vB,KAAK+0vB,YAActswB,SAASskB,cAAc,WAE1C/M,KAAK+0vB,cACL/0vB,KAAK+0vB,YAAYruwB,MAAQA,EACzBsZ,KAAK+0vB,YAAYnuwB,OAASA,GAE9BoZ,KAAKg1vB,aAAevswB,SAASskB,cAAc,UAC3C/M,KAAKg1vB,aAAatuwB,MAAQA,EAC1BsZ,KAAKg1vB,aAAapuwB,OAASA,EAI3BsvwB,EAA+BA,GAAgC,MACrDl2vB,KAAKg1vB,aAAa1nuB,WAAW4ouB,GAEnC,MAAM,IAAI3uvB,MAAM,4CAA8C2uvB,EAA+B,KAKjG,IAAIC,EAAqD,oBAAlCC,+BAAiDA,8BAA8Bh2vB,WAElC,mBAAzDg2vB,8BAA8Bh2vB,UAAUs1vB,aAA8B,OAAI5+vB,EAerF,OAdAkJ,KAAK68O,eAAiB78O,KAAKg1vB,aAAar9b,cAAcw+b,GAAWv+b,YAAY,GAC7E53T,KAAK68O,eAAe7mP,QAAUgK,KAAK2sN,iBAAiB32N,QACpDgK,KAAKo9O,UAAYA,EACjBp9O,KAAKi1vB,wBAAwBpqvB,KAAK,MAAO,CACrCuyO,UAAWA,EACXi5gB,cAAezvwB,EACf0vwB,aAAc5vwB,EACd6vwB,eAAgBx7X,EAChBy7X,mBAAoBx2vB,KAAKhZ,WAAW2uC,SAAS,oBAC7C6/tB,qBAAsBA,EACtBU,6BAA8BA,IAElCl2vB,KAAKk9O,kCACLl9O,KAAKm9O,iBACEn9O,IACX,EA+DAi8O,EAAW77O,UAAU4mD,OAAS,WAC1B,IAAI7zD,EAAS6Q,EAAO5D,UAAU4mD,OAAOlmD,MAAMd,KAAM7L,WAIjD,OAHI6L,KAAKo9O,WACLp9O,KAAKm9O,iBAEFhqP,CACX,EAwBA8oP,EAAW77O,UAAU6mD,OAAS,WAC1B,OAAOjjD,EAAO5D,UAAU6mD,OAAOnmD,MAAMd,KAAM7L,UAC/C,EAuBA8nP,EAAW77O,UAAU68O,gBAAkB,SAAUG,GAC7C,IAAKA,EACD,MAAM,IAAI71O,MAAM,4DAEpB,IAAKvH,KAAKo9O,UACN,MAAM,IAAI71O,MAAM,wCAEpB,GAAI61O,IAAcp9O,KAAKo9O,UACnB,MAAM,IAAI71O,MAAM,mEAcpB,OAZAvH,KAAKi1vB,wBAAwBpqvB,KAAK,UAClC7K,KAAKoF,KAAKkC,MAAM,8CAA+C81O,GAC/Dz1O,aAAa3H,KAAK60vB,mBAClB70vB,KAAK2sN,iBAAiBx0N,oBAAoB,SAAU6H,KAAKm1vB,gBACzDn1vB,KAAKk1vB,kBAAoB,CAAC,EAC1Bl1vB,KAAKm1vB,eAAiB,KACtBn1vB,KAAK80vB,cAAe,EACpB90vB,KAAKo9O,UAAY,KACjBp9O,KAAK68O,eAAiB,KACtB78O,KAAK+0vB,YAAc,KACnB/0vB,KAAKg1vB,aAAe,KACpBh1vB,KAAKk9O,kCACEl9O,IACX,EACOi8O,CACX,CAlc+B,CAkc7By4gB,GAEF,SAASkB,EAAkBtpvB,EAAOo3P,GAC9B,OAAOp3P,EAAMo2U,WAAWh8V,QAAUg9Q,EAAKmyf,YAChCvpvB,EAAMo2U,WAAW97V,SAAW88Q,EAAKo8b,WAC5C,CAJA7jd,EAAW85gB,mBAAqB,oBAuFhCr0qB,EAAOj9F,QAAUw3P,C,qCCjkBjB,IACQn8O,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAMAktmB,EAA0C,SAAU1pmB,GAQpD,SAAS0pmB,EAAyBphmB,EAAO4lT,GACrC,OAAOluT,EAAO3D,KAAKL,KAAMsM,EAAMgqK,IAAKhqK,EAAM/Y,KAAM+Y,EAAMQ,KAAMR,EAAMtW,QAASsW,EAAMgoF,SAAU49N,IAAkBlyT,IACjH,CAcA,OAvBAD,EAAU2tmB,EAA0B1pmB,GAkBpC0pmB,EAAyBttmB,UAAUhK,OAAS,SAAUkW,GAGlD,OAFAtM,KAAK+tG,OAAOzhG,EAAMtW,SAClBgK,KAAKuyT,YAAYjmT,EAAMgoF,UAChBt0F,IACX,EACO0tmB,CACX,CAzB6C,CAJP,EAAQ,QAmC9ChshB,EAAOj9F,QAAUipnB,C,+BCjDjB,IAAIovB,EAAa,EAAQ,OAEzBp7iB,EAAOj9F,QAAU,WAChB,OAAOq4oB,OAAkBt4oB,OAAOgwC,WACjC,C,kBCNA,IAAI+lrB,EAAW,EAAQ,OACnBz9f,EAAc,EAAQ,OACtB/sM,EAAU,EAAQ,OAClBwwmB,EAAU,EAAQ,OAClBj4Z,EAAW,EAAQ,OACnBphI,EAAQ,EAAQ,OAiCpBxF,EAAOj9F,QAtBP,SAAiB6mD,EAAQu9B,EAAM4trB,GAO7B,IAJA,IAAIjgwB,GAAS,EACTpC,GAHJy0E,EAAO0xoB,EAAS1xoB,EAAMv9B,IAGJl3C,OACdjB,GAAS,IAEJqD,EAAQpC,GAAQ,CACvB,IAAI5J,EAAM08F,EAAMre,EAAKryE,IACrB,KAAMrD,EAAmB,MAAVm4C,GAAkBmrtB,EAAQnrtB,EAAQ9gD,IAC/C,MAEF8gD,EAASA,EAAO9gD,EAClB,CACA,OAAI2I,KAAYqD,GAASpC,EAChBjB,KAETiB,EAAmB,MAAVk3C,EAAiB,EAAIA,EAAOl3C,SAClBk0N,EAASl0N,IAAWmsnB,EAAQ/1nB,EAAK4J,KACjD2b,EAAQu7B,IAAWwxK,EAAYxxK,GACpC,C,yBCnCA,IAAIrlD,EAAMT,KAAKS,IACXq0G,EAAS90G,KAAK80G,OAGlB5Y,EAAOj9F,QAAUe,KAAKkuB,OAAS,SAAentB,GAC5C,OAAON,EAAIM,GAAK+zG,CAClB,C,mCCNA,IAAI35F,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACArK,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQiywB,eAAY,EAIpB,IAAIA,EAA2B,WAC3B,SAASA,IACL12vB,KAAK22vB,aAAe,IAAI3jwB,IACxBgN,KAAK42vB,SAAW,IAAI5jwB,GACxB,CAsDA,OArDA0jwB,EAAUt2vB,UAAU1T,IAAM,SAAU6G,GAChC,IAAI+pjB,EAASt9iB,KAAK42vB,SAAS/iwB,IAAIN,GAC1B+pjB,IAGLA,EAAO5wjB,IAAMmc,KAAKC,MAClBw0iB,EAAO75gB,MAAQ65gB,EAAO5wjB,IAAM4wjB,EAAO7wjB,MACnCuT,KAAK62vB,MAAMtjwB,EAAMoN,EAAS,CAAC,EAAG28iB,IAClC,EACAo5M,EAAUt2vB,UAAU02vB,gBAAkB,SAAUvjwB,GAC5C,IAAIwjwB,EAAc/2vB,KAAK22vB,aAAa9iwB,IAAIN,GACxC,GAAKwjwB,GAAgBA,EAAY3iwB,OAGjC,OAAO2iwB,EAAYhkwB,IAAI,SAAUuqjB,GAAU,OAAOA,EAAO75gB,KAAO,GAC3Dn5C,OAAO,SAAUquD,EAAOhzD,GAAS,OAAOgzD,EAAShzD,CAAO,EAAG,GAAKoxwB,EAAY3iwB,MACrF,EACAsiwB,EAAUt2vB,UAAU42vB,SAAW,WAC3B,OAAO1iwB,MAAMuwB,KAAK7kB,KAAK22vB,aAAatswB,OACxC,EACAqswB,EAAUt2vB,UAAU62vB,QAAU,SAAU1jwB,GACpC,IAAIwjwB,EAAc/2vB,KAAK22vB,aAAa9iwB,IAAIN,GACxC,GAAKwjwB,KAAeA,EAAY3iwB,OAAS,GAAzC,CAGA,IAAI8iwB,EAAaH,EAAYA,EAAY3iwB,OAAS,GAAG1H,IAAMqqwB,EAAY,GAAGtqwB,MAC1E,OAAQsqwB,EAAY3iwB,OAAS8iwB,EAAc,GAF3C,CAGJ,EACAR,EAAUt2vB,UAAU3T,MAAQ,SAAU8G,GAClC,IAAI+pjB,EAASt9iB,KAAK42vB,SAAS/iwB,IAAIN,GAC1B+pjB,IACDA,EAAS,CAAC,EACVt9iB,KAAK42vB,SAAS7iwB,IAAIR,EAAM+pjB,IAE5BA,EAAO7wjB,MAAQoc,KAAKC,aACbw0iB,EAAO5wjB,WACP4wjB,EAAO75gB,KAClB,EACAiztB,EAAUt2vB,UAAUy2vB,MAAQ,SAAUtjwB,EAAM+pjB,GACxC,IAAIy5M,EAAc/2vB,KAAK22vB,aAAa9iwB,IAAIN,GACnCwjwB,IACDA,EAAc,GACd/2vB,KAAK22vB,aAAa5iwB,IAAIR,EAAMwjwB,IAEhCA,EAAYjjwB,KAAKwpjB,GACby5M,EAAY3iwB,OAASsiwB,EAAUS,WAC/BJ,EAAYhquB,OAAO,EAAGgquB,EAAY3iwB,OAASsiwB,EAAUS,UAE7D,EAIAT,EAAUS,UAAY,GACfT,CACX,CA3D8B,GA4D9BjywB,EAAQiywB,UAAYA,C,oBC5E4Ch1qB,EAAOj9F,QAG/D,WAAe,aAMvB,SAAS2ywB,EAAgBxguB,EAAKnlB,EAAGtnB,EAAMF,EAAOy1C,GAE1C,KAAOz1C,EAAQE,GAAM,CACjB,GAAIF,EAAQE,EAAO,IAAK,CACpB,IAAI0W,EAAI5W,EAAQE,EAAO,EACnBhH,EAAIsuB,EAAItnB,EAAO,EACf23D,EAAIt8D,KAAKS,IAAI4a,GACb5d,EAAI,GAAMuC,KAAKm0F,IAAI,EAAI73B,EAAI,GAC3B66S,EAAK,GAAMn3W,KAAK0vB,KAAK4sC,EAAI7+D,GAAK4d,EAAI5d,GAAK4d,IAAM1d,EAAI0d,EAAI,EAAI,GAAK,EAAI,GAGtEu2vB,EAAgBxguB,EAAKnlB,EAFPjsB,KAAKmE,IAAIQ,EAAM3E,KAAKQ,MAAMyrB,EAAItuB,EAAIF,EAAI4d,EAAI87V,IACzCn3W,KAAKkE,IAAIO,EAAOzE,KAAKQ,MAAMyrB,GAAK5Q,EAAI1d,GAAKF,EAAI4d,EAAI87V,IACrBj9T,EAC/C,CAEA,IAAI9+B,EAAIg2B,EAAInlB,GACRpsB,EAAI8E,EACJ67B,EAAI/7B,EAKR,IAHAyoG,EAAK97D,EAAKzsC,EAAMsnB,GACZiuB,EAAQ9I,EAAI3sC,GAAQ2W,GAAK,GAAG8xF,EAAK97D,EAAKzsC,EAAMF,GAEzC5E,EAAI2gC,GAAG,CAIV,IAHA0sE,EAAK97D,EAAKvxC,EAAG2gC,GACb3gC,IACA2gC,IACO0Z,EAAQ9I,EAAIvxC,GAAIub,GAAK,GAAGvb,IAC/B,KAAOq6C,EAAQ9I,EAAI5Q,GAAIplB,GAAK,GAAGolB,GACnC,CAE8B,IAA1B0Z,EAAQ9I,EAAIzsC,GAAOyW,GAAU8xF,EAAK97D,EAAKzsC,EAAM67B,GAG7C0sE,EAAK97D,IADL5Q,EACa/7B,GAGb+7B,GAAKvU,IAAGtnB,EAAO67B,EAAI,GACnBvU,GAAKuU,IAAG/7B,EAAQ+7B,EAAI,EAC5B,CACJ,CAEA,SAAS0sE,EAAK97D,EAAKvxC,EAAG2gC,GAClB,IAAIhB,EAAM4R,EAAIvxC,GACduxC,EAAIvxC,GAAKuxC,EAAI5Q,GACb4Q,EAAI5Q,GAAKhB,CACb,CAEA,SAASgqR,EAAep1S,EAAGC,GACvB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,CACpC,CAEA,OAtDA,SAAqB+8B,EAAKnlB,EAAGtnB,EAAMF,EAAOy1C,GACtC03tB,EAAgBxguB,EAAKnlB,EAAGtnB,GAAQ,EAAGF,GAAU2sC,EAAIxiC,OAAS,EAAIsrC,GAAWsvQ,EAC7E,CAsDC,CA7DgFzqT,E,gGC4CjF,QAxCmB,SAAsB6tC,GACvC,IAAIo6e,GAAmB,QAAgBp6e,EAAO,CAC5C4jS,UAAW,aAETj4T,EAAKyugB,EAAiBzugB,GACtBs5vB,EAAwB7qP,EAAiB8qP,gBACzC/hc,EAAWi3M,EAAiBj3M,SAC5BS,EAAYw2M,EAAiBx2M,UAC7B9mR,EAAas9d,EAAiBt9d,WAC9B+vL,EAAeutS,EAAiBvtS,aAChCC,EAAgBstS,EAAiBttS,cACjC1nH,EAAWg1Z,EAAiBh1Z,SAE5B8/oB,GAAkB,IAAA13vB,SAAQ,WAC5B,OAAOy3vB,GAAyB,SAAU7swB,EAAKwlB,GAC7C,OAAOjS,EAAKA,EAAK,IAAMiS,EAAO,IAAMxlB,EAAM,IAC5C,CACF,EAAG,CAACuT,EAAIs5vB,IACJE,GAAa,IAAA33vB,SAAQ,WACvB,MAAO,CACL21T,SAAUA,EACVS,UAAWA,EACX9mR,WAAYA,EACZ+vL,aAAcA,IAAgB,EAC9BC,cAAeA,IAAiB,EAChC62F,gBAAiB,SAAyBvrU,GACxC,OAAO8swB,EAAgB9swB,EAAK,UAC9B,EACAqrU,gBAAiB,SAAyBrrU,GACxC,OAAO8swB,EAAgB9swB,EAAK,MAC9B,EAEJ,EAAG,CAAC+qU,EAAUS,EAAW9mR,EAAY+vL,EAAcC,EAAeo4hB,IAClE,OAAoB,gBAAoB,IAAWt5a,SAAU,CAC3Dr4V,MAAO4xwB,GACO,gBAAoB,IAAkBv5a,SAAU,CAC9Dr4V,MAAO4vU,GAAY,MAClB/9M,GACL,C,yBCnCA91B,EAAOj9F,QAHP,SAAaq7f,GACT,OAAOA,EAAGx1f,OAAO,SAAU3G,EAAG4C,GAAK,MAAoB,iBAANA,EAAiBA,EAAI5C,EAAIA,CAAG,EAAG,EACpF,C,+BCNA,IAAI6f,EAAK,EAAQ,OAAyBg0vB,EAA+Bh0vB,EAAGg0vB,6BAA8BC,EAA8Bj0vB,EAAGi0vB,4BAKvIC,EAAsC,WAMtC,SAASA,EAAqBvxvB,EAAgBvW,GAC1CA,EAAU9F,OAAOC,OAAO,CACpB4twB,sBAAuBH,EACvBI,sBAAuBH,GACxB7nwB,GACH9F,OAAO0hC,iBAAiBxrB,KAAM,CAC1B63vB,uBAAwB,CACpBlywB,MAAOiK,EAAQ+nwB,uBAEnBG,uBAAwB,CACpBnywB,MAAOiK,EAAQgowB,uBAEnBG,cAAe,CACXpywB,MAAO,KACP8lC,UAAU,GAEdusuB,gBAAiB,CACbrywB,MAAOwgB,GAEX8xvB,OAAQ,CACJtywB,MAAO,KACP8lC,UAAU,GAEdysuB,6BAA8B,CAC1BvywB,MAAO,KACP8lC,UAAU,IAGtB,CAwFA,OAvFAisuB,EAAqBt3vB,UAAU+3vB,mBAAqB,SAAU7xvB,GAK1D,OAJiBhS,MAAMuwB,KAAKve,EAAMsiB,UACD/tB,KAAK,SAAUwvO,GAAQ,MAAqB,mBAAdA,EAAKr6N,MAA6Bq6N,EAAK4xN,SAAW,IAGvF,CACtBjub,cAAe,EACfF,UAAWtoB,KAAK+F,OAAM,IAAKsd,MAAQ48F,WAE3C,EAKAiypB,EAAqBt3vB,UAAUg4vB,uBAAyB,WACpD,IAAIl0vB,EAAQlE,KACZ,OAAOA,KAAKg4vB,gBAAgB36T,WAAWxmc,KAAK,SAAUyP,GAAS,OAAOpC,EAAMi0vB,mBAAmB7xvB,EAAQ,GAAGunN,MAAM,WAC5G,OAAO,IACX,EACJ,EAIA6piB,EAAqBt3vB,UAAUi4vB,4BAA8B,SAAUnpvB,GACnE,IAAIhL,EAAQlE,KACRkP,GAAkD,OAAtClP,KAAKk4vB,8BAEjBl4vB,KAAKk4vB,6BAA+B,WACiB,iBAA7Ch0vB,EAAM8zvB,gBAAgBjwvB,oBAEtBmH,GAER,EACAlP,KAAKg4vB,gBAAgB9/vB,iBAAiB,2BAA4B8H,KAAKk4vB,gCAEjEhpvB,GAAYlP,KAAKk4vB,+BAEvBl4vB,KAAKg4vB,gBAAgB7/vB,oBAAoB,2BAA4B6H,KAAKk4vB,8BAC1El4vB,KAAKk4vB,6BAA+B,KAE5C,EAOAR,EAAqBt3vB,UAAU3T,MAAQ,SAAU6rwB,GAC7C,IAAIp0vB,EAAQlE,KACZA,KAAK0F,OACL1F,KAAKi4vB,OAAS/pqB,YAAY,WACtBhqF,EAAMk0vB,yBAAyBvhwB,KAAK,SAAU0hwB,GACrCA,IAMAr0vB,EAAM6zvB,eAAiB7zvB,EAAM6zvB,cAAc/pvB,gBAAkBuqvB,EAASvqvB,gBACvE9J,EAAM6zvB,cAAgBQ,EAEtBr0vB,EAAMm0vB,4BAA4B,OAElCE,EAASzqvB,UAAY5J,EAAM6zvB,cAAcjqvB,WAAa5J,EAAM4zvB,yBAEX,iBAA7C5zvB,EAAM8zvB,gBAAgBjwvB,mBACtBuwvB,IAE4C,OAAvCp0vB,EAAMg0vB,8BACXh0vB,EAAMm0vB,4BAA4BC,IAG9C,EACJ,EAAGt4vB,KAAK63vB,uBACZ,EAKAH,EAAqBt3vB,UAAUsF,KAAO,WAClC1F,KAAKq4vB,4BAA4B,MACb,OAAhBr4vB,KAAKi4vB,SACL7pqB,cAAcpuF,KAAKi4vB,QACnBj4vB,KAAKi4vB,OAAS,KACdj4vB,KAAK+3vB,cAAgB,KAE7B,EACOL,CACX,CA3HyC,GA4HzCh2qB,EAAOj9F,QAAUizwB,C,8vBC3GjB,IAAIc,EAAS,SAITC,EAAO,GACPC,EAAOD,GAIPE,EAAU,CAAC,EAOf,SAASC,EAAO/lpB,GACVA,IACFA,EAAIltH,OAAQ,EAEhB,CAKA,SAASkzwB,IAAW,CAEpB,SAASC,EAAW3/oB,GAIlB,YAHkBriH,IAAdqiH,EAAKpmG,OACPomG,EAAKpmG,KAAOomG,EAAKi1R,UAAU2qX,IAEtB5/oB,EAAKpmG,IACd,CAEA,SAASimvB,EAAU7/oB,EAAM3iH,GAQvB,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIyiwB,EAAcziwB,IAAU,EAC5B,GAAI,GAAKyiwB,IAAgBziwB,GAAyB,aAAhByiwB,EAChC,OAAO3zwB,IAETkR,EAAQyiwB,CACV,CACA,OAAOziwB,EAAQ,EAAIsiwB,EAAW3/oB,GAAQ3iH,EAAQA,CAChD,CAEA,SAASuiwB,IACP,OAAO,CACT,CAEA,SAASG,EAAWnogB,EAAOrkQ,EAAKqmB,GAC9B,OACc,IAAVg+O,IAAgBoogB,EAAMpogB,SACZj6P,IAATic,GAAsBg+O,IAAUh+O,UAC1Bjc,IAARpK,QAA+BoK,IAATic,GAAsBrmB,GAAOqmB,EAExD,CAEA,SAASqmvB,EAAarogB,EAAOh+O,GAC3B,OAAOsmvB,EAAatogB,EAAOh+O,EAAM,EACnC,CAEA,SAASumvB,EAAW5swB,EAAKqmB,GACvB,OAAOsmvB,EAAa3swB,EAAKqmB,EAAMA,EACjC,CAEA,SAASsmvB,EAAa7iwB,EAAOuc,EAAMwmvB,GAGjC,YAAiBziwB,IAAVN,EACH+iwB,EACAJ,EAAM3iwB,GACNuc,IAASxtB,IACPwtB,EAC4B,EAA5BvtB,KAAKmE,IAAI,EAAGopB,EAAOvc,QACZM,IAATic,GAAsBA,IAASvc,EAC/BA,EACwB,EAAxBhR,KAAKkE,IAAIqpB,EAAMvc,EACrB,CAEA,SAAS2iwB,EAAMxzwB,GAEb,OAAOA,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,IAAU,GACpD,CAEA,IAAI6zwB,EAAuB,6BAE3B,SAASxjX,EAAayjX,GACpB,OAAOxyqB,QAAQwyqB,GAAmBA,EAAgBD,GACpD,CAEA,IAAIE,EAAkB,0BAEtB,SAAS/mX,EAAQgnX,GACf,OAAO1yqB,QAAQ0yqB,GAAcA,EAAWD,GAC1C,CAEA,IAAIE,EAAoB,4BAExB,SAAShnX,EAAUinX,GACjB,OAAO5yqB,QAAQ4yqB,GAAgBA,EAAaD,GAC9C,CAEA,SAAS/mX,EAAcinX,GACrB,OAAOnnX,EAAQmnX,IAAqBlnX,EAAUknX,EAChD,CAEA,IAAIvkX,EAAa,SAAoB5vZ,GACnC,OAAOqwZ,EAAarwZ,GAASA,EAAQ8vZ,EAAI9vZ,EAC3C,EAEIo0wB,EAAgC,SAAUxkX,GAC5C,SAASwkX,EAAgBp0wB,GACvB,OAAOgtZ,EAAQhtZ,GAASA,EAAQq0wB,EAASr0wB,EAC3C,CAMA,OAJK4vZ,IAAawkX,EAAgB75vB,UAAYq1Y,GAC9CwkX,EAAgB35vB,UAAYtW,OAAO4W,OAAQ60Y,GAAcA,EAAWn1Y,WACpE25vB,EAAgB35vB,UAAUK,YAAcs5vB,EAEjCA,CACT,CAVmC,CAUjCxkX,GAEE0kX,EAAkC,SAAU1kX,GAC9C,SAAS0kX,EAAkBt0wB,GACzB,OAAOitZ,EAAUjtZ,GAASA,EAAQu0wB,EAAWv0wB,EAC/C,CAMA,OAJK4vZ,IAAa0kX,EAAkB/5vB,UAAYq1Y,GAChD0kX,EAAkB75vB,UAAYtW,OAAO4W,OAAQ60Y,GAAcA,EAAWn1Y,WACtE65vB,EAAkB75vB,UAAUK,YAAcw5vB,EAEnCA,CACT,CAVqC,CAUnC1kX,GAEE4kX,EAA8B,SAAU5kX,GAC1C,SAAS4kX,EAAcx0wB,GACrB,OAAOqwZ,EAAarwZ,KAAWktZ,EAAcltZ,GAASA,EAAQy0wB,EAAOz0wB,EACvE,CAMA,OAJK4vZ,IAAa4kX,EAAcj6vB,UAAYq1Y,GAC5C4kX,EAAc/5vB,UAAYtW,OAAO4W,OAAQ60Y,GAAcA,EAAWn1Y,WAClE+5vB,EAAc/5vB,UAAUK,YAAc05vB,EAE/BA,CACT,CAViC,CAU/B5kX,GAEFA,EAAWlH,MAAQ0rX,EACnBxkX,EAAWjH,QAAU2rX,EACrB1kX,EAAWriZ,IAAMinwB,EAEjB,IAAIE,EAAgB,wBAEpB,SAAS/qX,EAAMgrX,GACb,OAAOrzqB,QAAQqzqB,GAAYA,EAASD,GACtC,CAEA,IAAIE,EAAmB,2BAEvB,SAASllX,EAASmlX,GAChB,OAAOvzqB,QAAQuzqB,GAAeA,EAAYD,GAC5C,CAEA,SAASxkX,EAAY0kX,GACnB,OAAOzkX,EAAaykX,IAAmBplX,EAASolX,EAClD,CAEA,IAAIC,EAAoB,4BAExB,SAAS5nX,EAAU6nX,GACjB,OAAO1zqB,QAAQ0zqB,GAAgBA,EAAaD,GAC9C,CAEA,IAIIE,EAAyC,mBAAXp2wB,QAAyBA,OAAO0d,SAC9D24vB,EAAuB,aAEvBC,EAAkBF,GAAwBC,EAE1C9nX,EAAW,SAAkBjrZ,GAC/BkY,KAAKlY,KAAOA,CACd,EAiBA,SAASizwB,EAAc/qvB,EAAMyB,EAAGtP,EAAG64vB,GACjC,IAAIr1wB,EAAiB,IAATqqB,EAAayB,EAAa,IAATzB,EAAa7N,EAAI,CAACsP,EAAGtP,GAOlD,OANA64vB,EACKA,EAAer1wB,MAAQA,EACvBq1wB,EAAiB,CAChBr1wB,MAAOA,EACP6b,MAAM,GAELw5vB,CACT,CAEA,SAASC,IACP,MAAO,CAAEt1wB,WAAOmR,EAAW0K,MAAM,EACnC,CAEA,SAAS05vB,EAAYC,GACnB,QAAI7mwB,MAAMyb,QAAQorvB,MAKTC,EAAcD,EACzB,CAEA,SAASE,EAAWC,GAClB,OAAOA,GAA+C,mBAAvBA,EAAcxzwB,IAC/C,CAEA,SAASs5G,EAAYylI,GACnB,IAAIsvB,EAAailgB,EAAcv0hB,GAC/B,OAAOsvB,GAAcA,EAAW91P,KAAKwmO,EACvC,CAEA,SAASu0hB,EAAcv0hB,GACrB,IAAIsvB,EACFtvB,IACE+zhB,GAAwB/zhB,EAAS+zhB,IACjC/zhB,EAASg0hB,IACb,GAA0B,mBAAf1kgB,EACT,OAAOA,CAEX,CAxDA48I,EAAS3yY,UAAUpZ,SAAW,WAC5B,MAAO,YACT,EAEA+rZ,EAASxE,KAjBU,EAkBnBwE,EAASvE,OAjBY,EAkBrBuE,EAAStE,QAjBa,EAmBtBsE,EAAS3yY,UAAUsuY,QAAUqE,EAAS3yY,UAAUozN,SAAW,WACzD,OAAOxzN,KAAKhZ,UACd,EACA+rZ,EAAS3yY,UAAU06vB,GAAmB,WACpC,OAAO96vB,IACT,EAuDA,IAAIpU,EAAiB9B,OAAOsW,UAAUxU,eAEtC,SAAS2/N,EAAY5lO,GACnB,SAAI2O,MAAMyb,QAAQpqB,IAA2B,iBAAVA,IAKjCA,GACiB,iBAAVA,GACPwqB,OAAO+0F,UAAUv/G,EAAMyO,SACvBzO,EAAMyO,QAAU,IACE,IAAjBzO,EAAMyO,OAE2B,IAA9BtK,OAAOO,KAAK1E,GAAOyO,OAGnBzO,EAAMiG,eAAejG,EAAMyO,OAAS,GAE5C,CAEA,IAAIqhZ,EAAoB,SAAUF,GAChC,SAASE,EAAI9vZ,GACX,OAAOA,QACH41wB,KACAxlX,EAAYpwZ,GACZA,EAAMgpZ,QAyUd,SAAsBhpZ,GACpB,IA9WyBw1wB,EACrBhlgB,EA6WA2yF,EAAM0ya,GAAyB71wB,GACnC,GAAImjW,EACF,OA/WE3yF,EAAailgB,EADQD,EAgXEx1wB,KA9WNwwQ,IAAeglgB,EAAcj2sB,QA+W5C4jS,EAAIqmD,eA5WZ,SAAwBgsX,GACtB,IAAIhlgB,EAAailgB,EAAcD,GAC/B,OAAOhlgB,GAAcA,IAAeglgB,EAAc9wwB,IACpD,CA0WQoxwB,CAAe91wB,GACfmjW,EAAIumD,WACJvmD,EAEN,GAAqB,iBAAVnjW,EACT,OAAO,IAAI+1wB,EAAU/1wB,GAEvB,MAAM,IAAI2a,UACR,mEAAqE3a,EAEzE,CAvVQg2wB,CAAah2wB,EACnB,CA0DA,OAxDK4vZ,IAAaE,EAAIv1Y,UAAYq1Y,GAClCE,EAAIr1Y,UAAYtW,OAAO4W,OAAQ60Y,GAAcA,EAAWn1Y,WACxDq1Y,EAAIr1Y,UAAUK,YAAcg1Y,EAE5BA,EAAIr1Y,UAAUuuY,MAAQ,WACpB,OAAO3uY,IACT,EAEAy1Y,EAAIr1Y,UAAUpZ,SAAW,WACvB,OAAOgZ,KAAK4uY,WAAW,QAAS,IAClC,EAEA6G,EAAIr1Y,UAAUyuY,YAAc,WAK1B,OAJK7uY,KAAKixC,QAAUjxC,KAAK8uY,oBACvB9uY,KAAKixC,OAASjxC,KAAK+uY,WAAWjrL,UAC9B9jN,KAAK+S,KAAO/S,KAAKixC,OAAO78C,QAEnB4L,IACT,EAIAy1Y,EAAIr1Y,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAChD,IAAIyb,EAAQvsB,KAAKixC,OACjB,GAAI1kB,EAAO,CAGT,IAFA,IAAIxZ,EAAOwZ,EAAMn4B,OACb/O,EAAI,EACDA,IAAM0tB,GAAM,CACjB,IAAI6+B,EAAQrlB,EAAMzb,EAAUiC,IAAS1tB,EAAIA,KACzC,IAAqC,IAAjCyP,EAAG88C,EAAM,GAAIA,EAAM,GAAI5xC,MACzB,KAEJ,CACA,OAAO3a,CACT,CACA,OAAO2a,KAAK8uY,kBAAkBh6Y,EAAIgc,EACpC,EAIA2kY,EAAIr1Y,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACpD,IAAIyb,EAAQvsB,KAAKixC,OACjB,GAAI1kB,EAAO,CACT,IAAIxZ,EAAOwZ,EAAMn4B,OACb/O,EAAI,EACR,OAAO,IAAI0tZ,EAAS,WAClB,GAAI1tZ,IAAM0tB,EACR,MAtHD,CAAEptB,WAAOmR,EAAW0K,MAAM,GAwH3B,IAAIowC,EAAQrlB,EAAMzb,EAAUiC,IAAS1tB,EAAIA,KACzC,OAAO01wB,EAAc/qvB,EAAM4hC,EAAM,GAAIA,EAAM,GAC7C,EACF,CACA,OAAO5xC,KAAKivY,mBAAmBj/X,EAAMc,EACvC,EAEO2kY,CACT,CAlEuB,CAkErBF,GAEEykX,EAAyB,SAAUvkX,GACrC,SAASukX,EAASr0wB,GAChB,OAAOA,QACH41wB,KAAgBrsX,aAChB8G,EAAarwZ,GACbgtZ,EAAQhtZ,GACNA,EAAMgpZ,QACNhpZ,EAAMwpZ,eACRkG,EAAS1vZ,GACTA,EAAMgpZ,QACNitX,GAAkBj2wB,EACxB,CAUA,OARK8vZ,IAAMukX,EAAS95vB,UAAYu1Y,GAChCukX,EAAS55vB,UAAYtW,OAAO4W,OAAQ+0Y,GAAOA,EAAIr1Y,WAC/C45vB,EAAS55vB,UAAUK,YAAcu5vB,EAEjCA,EAAS55vB,UAAU8uY,WAAa,WAC9B,OAAOlvY,IACT,EAEOg6vB,CACT,CAtB4B,CAsB1BvkX,GAEEykX,EAA2B,SAAUzkX,GACvC,SAASykX,EAAWv0wB,GAClB,OAAOA,QACH41wB,KACAvlX,EAAarwZ,GACbgtZ,EAAQhtZ,GACNA,EAAMopZ,WACNppZ,EAAMypZ,eACRiG,EAAS1vZ,GACTA,EAAMgpZ,QAAQI,WACd8sX,GAAoBl2wB,EAC1B,CAkBA,OAhBK8vZ,IAAMykX,EAAWh6vB,UAAYu1Y,GAClCykX,EAAW95vB,UAAYtW,OAAO4W,OAAQ+0Y,GAAOA,EAAIr1Y,WACjD85vB,EAAW95vB,UAAUK,YAAcy5vB,EAEnCA,EAAWlngB,GAAK,WACd,OAAOkngB,EAAW/lwB,UACpB,EAEA+lwB,EAAW95vB,UAAUgvY,aAAe,WAClC,OAAOpvY,IACT,EAEAk6vB,EAAW95vB,UAAUpZ,SAAW,WAC9B,OAAOgZ,KAAK4uY,WAAW,QAAS,IAClC,EAEOsrX,CACT,CA9B8B,CA8B5BzkX,GAEE2kX,EAAuB,SAAU3kX,GACnC,SAAS2kX,EAAOz0wB,GACd,OACEqwZ,EAAarwZ,KAAWktZ,EAAcltZ,GAASA,EAAQu0wB,EAAWv0wB,IAClE0pZ,UACJ,CAcA,OAZKoG,IAAM2kX,EAAOl6vB,UAAYu1Y,GAC9B2kX,EAAOh6vB,UAAYtW,OAAO4W,OAAQ+0Y,GAAOA,EAAIr1Y,WAC7Cg6vB,EAAOh6vB,UAAUK,YAAc25vB,EAE/BA,EAAOpngB,GAAK,WACV,OAAOongB,EAAOjmwB,UAChB,EAEAimwB,EAAOh6vB,UAAUivY,SAAW,WAC1B,OAAOrvY,IACT,EAEOo6vB,CACT,CApB0B,CAoBxB3kX,GAEFA,EAAInG,MAAQA,EACZmG,EAAIpH,MAAQ2rX,EACZvkX,EAAIviZ,IAAMknwB,EACV3kX,EAAInH,QAAU4rX,EAEdzkX,EAAIr1Y,UAAUi6vB,IAAiB,EAI/B,IAAIyB,EAAyB,SAAU5B,GACrC,SAAS4B,EAASznvB,GAChBrU,KAAKuvY,OAASl7X,EACdrU,KAAK+S,KAAOsB,EAAMjgB,MACpB,CAoCA,OAlCK8lwB,IAAa4B,EAAS57vB,UAAYg6vB,GACvC4B,EAAS17vB,UAAYtW,OAAO4W,OAAQw5vB,GAAcA,EAAW95vB,WAC7D07vB,EAAS17vB,UAAUK,YAAcq7vB,EAEjCA,EAAS17vB,UAAUvM,IAAM,SAAc2C,EAAOulwB,GAC5C,OAAO/7vB,KAAKrM,IAAI6C,GAASwJ,KAAKuvY,OAAOypX,EAAUh5vB,KAAMxJ,IAAUulwB,CACjE,EAEAD,EAAS17vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAIrD,IAHA,IAAIuD,EAAQrU,KAAKuvY,OACbx8X,EAAOsB,EAAMjgB,OACb/O,EAAI,EACDA,IAAM0tB,GAAM,CACjB,IAAI2jP,EAAK5lP,EAAUiC,IAAS1tB,EAAIA,IAChC,IAAgC,IAA5ByP,EAAGuf,EAAMqiP,GAAKA,EAAI12P,MACpB,KAEJ,CACA,OAAO3a,CACT,EAEAy2wB,EAAS17vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACzD,IAAIuD,EAAQrU,KAAKuvY,OACbx8X,EAAOsB,EAAMjgB,OACb/O,EAAI,EACR,OAAO,IAAI0tZ,EAAS,WAClB,GAAI1tZ,IAAM0tB,EACR,MA1PC,CAAEptB,WAAOmR,EAAW0K,MAAM,GA4P7B,IAAIk1P,EAAK5lP,EAAUiC,IAAS1tB,EAAIA,IAChC,OAAO01wB,EAAc/qvB,EAAM0mP,EAAIriP,EAAMqiP,GACvC,EACF,EAEOolgB,CACT,CAzC4B,CAyC1B5B,GAEEwB,EAA0B,SAAU1B,GACtC,SAAS0B,EAAUpwtB,GACjB,IAAIjhD,EAAOP,OAAOO,KAAKihD,GAAQt9C,OAC7BlE,OAAOo4F,sBAAwBp4F,OAAOo4F,sBAAsB52C,GAAU,IAExEtrC,KAAKwvY,QAAUlkW,EACftrC,KAAK+0B,MAAQ1qC,EACb2V,KAAK+S,KAAO1oB,EAAK+J,MACnB,CA6CA,OA3CK4lwB,IAAW0B,EAAUx7vB,UAAY85vB,GACtC0B,EAAUt7vB,UAAYtW,OAAO4W,OAAQs5vB,GAAYA,EAAS55vB,WAC1Ds7vB,EAAUt7vB,UAAUK,YAAci7vB,EAElCA,EAAUt7vB,UAAUvM,IAAM,SAAcrJ,EAAKuxwB,GAC3C,YAAoBjlwB,IAAhBilwB,GAA8B/7vB,KAAKrM,IAAInJ,GAGpCwV,KAAKwvY,QAAQhlZ,GAFXuxwB,CAGX,EAEAL,EAAUt7vB,UAAUzM,IAAM,SAAcnJ,GACtC,OAAOoB,EAAeyU,KAAKL,KAAKwvY,QAAShlZ,EAC3C,EAEAkxwB,EAAUt7vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAKtD,IAJA,IAAIw6B,EAAStrC,KAAKwvY,QACdnlZ,EAAO2V,KAAK+0B,MACZhiB,EAAO1oB,EAAK+J,OACZ/O,EAAI,EACDA,IAAM0tB,GAAM,CACjB,IAAIvoB,EAAMH,EAAKymB,EAAUiC,IAAS1tB,EAAIA,KACtC,IAAmC,IAA/ByP,EAAGw2C,EAAO9gD,GAAMA,EAAKwV,MACvB,KAEJ,CACA,OAAO3a,CACT,EAEAq2wB,EAAUt7vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GAC1D,IAAIw6B,EAAStrC,KAAKwvY,QACdnlZ,EAAO2V,KAAK+0B,MACZhiB,EAAO1oB,EAAK+J,OACZ/O,EAAI,EACR,OAAO,IAAI0tZ,EAAS,WAClB,GAAI1tZ,IAAM0tB,EACR,MAlTC,CAAEptB,WAAOmR,EAAW0K,MAAM,GAoT7B,IAAIhX,EAAMH,EAAKymB,EAAUiC,IAAS1tB,EAAIA,KACtC,OAAO01wB,EAAc/qvB,EAAMxlB,EAAK8gD,EAAO9gD,GACzC,EACF,EAEOkxwB,CACT,CAtD6B,CAsD3B1B,GACF0B,EAAUt7vB,UAAUs6vB,IAAqB,EAEzC,IAiDIsB,EAjDAC,GAA8B,SAAU/B,GAC1C,SAAS+B,EAAch/iB,GACrBj9M,KAAKyvY,YAAcxyL,EACnBj9M,KAAK+S,KAAOkqM,EAAW7oN,QAAU6oN,EAAWlqM,IAC9C,CAwCA,OAtCKmnvB,IAAa+B,EAAc/7vB,UAAYg6vB,GAC5C+B,EAAc77vB,UAAYtW,OAAO4W,OAAQw5vB,GAAcA,EAAW95vB,WAClE67vB,EAAc77vB,UAAUK,YAAcw7vB,EAEtCA,EAAc77vB,UAAU0uY,kBAAoB,SAA4Bh6Y,EAAIgc,GAC1E,GAAIA,EACF,OAAO9Q,KAAK6uY,cAAcT,UAAUt5Y,EAAIgc,GAE1C,IACI5O,EAAWk/F,EADEphG,KAAKyvY,aAElB26E,EAAa,EACjB,GAAIixS,EAAWn5vB,GAEb,IADA,IAAIZ,IACKA,EAAOY,EAASpa,QAAQ0Z,OACY,IAAvC1M,EAAGwM,EAAK3b,MAAOyke,IAAcpqd,QAKrC,OAAOoqd,CACT,EAEA6xS,EAAc77vB,UAAU6uY,mBAAqB,SAA6Bj/X,EAAMc,GAC9E,GAAIA,EACF,OAAO9Q,KAAK6uY,cAAcG,WAAWh/X,EAAMc,GAE7C,IACI5O,EAAWk/F,EADEphG,KAAKyvY,aAEtB,IAAK4rX,EAAWn5vB,GACd,OAAO,IAAI6wY,EAASkoX,GAEtB,IAAI7wS,EAAa,EACjB,OAAO,IAAIr3E,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,OAAOwZ,EAAKE,KAAOF,EAAOy5vB,EAAc/qvB,EAAMo6c,IAAc9od,EAAK3b,MACnE,EACF,EAEOs2wB,CACT,CA7CiC,CA6C/B/B,GAMF,SAASqB,KACP,OAAOS,IAAcA,EAAY,IAAIF,EAAS,IAChD,CAEA,SAASF,GAAkBj2wB,GACzB,IAAImjW,EAAM0ya,GAAyB71wB,GACnC,GAAImjW,EACF,OAAOA,EAAIqmD,eAEb,GAAqB,iBAAVxpZ,EACT,OAAO,IAAI+1wB,EAAU/1wB,GAEvB,MAAM,IAAI2a,UACR,2EACE3a,EAEN,CAEA,SAASk2wB,GAAoBl2wB,GAC3B,IAAImjW,EAAM0ya,GAAyB71wB,GACnC,GAAImjW,EACF,OAAOA,EAET,MAAM,IAAIxoV,UACR,kDAAoD3a,EAExD,CAmBA,SAAS61wB,GAAyB71wB,GAChC,OAAO4lO,EAAY5lO,GACf,IAAIm2wB,EAASn2wB,GACbu1wB,EAAYv1wB,GACZ,IAAIs2wB,GAAct2wB,QAClBmR,CACN,CAEA,IAAIolwB,GAAgB,wBAEpB,SAAS/ygB,GAAMgzgB,GACb,OAAOl1qB,QAAQk1qB,GAAYA,EAASD,IACtC,CAEA,SAASnqX,GAAaqqX,GACpB,OAAOjzgB,GAAMizgB,IAAoBtpX,EAAUspX,EAC7C,CAEA,SAASnmX,GAAcomX,GACrB,OAAOp1qB,QACLo1qB,GAC+B,mBAAtBA,EAAWt0iB,QACa,mBAAxBs0iB,EAAW3sX,SAExB,CAwDA,SAASzqR,GAAGq3oB,EAAQC,GAClB,GAAID,IAAWC,GAAWD,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,EAET,GAC4B,mBAAnBD,EAAO3ljB,SACY,mBAAnB4ljB,EAAO5ljB,QACd,CAGA,IAFA2ljB,EAASA,EAAO3ljB,cAChB4ljB,EAASA,EAAO5ljB,YACU2ljB,GAAWA,GAAUC,GAAWA,EACxD,OAAO,EAET,IAAKD,IAAWC,EACd,OAAO,CAEX,CACA,SACEtmX,GAAcqmX,IACdrmX,GAAcsmX,IACdD,EAAOv0iB,OAAOw0iB,GAElB,CAEA,IAAI5sX,GACmB,mBAAdnqZ,KAAKmqZ,OAAqD,IAA9BnqZ,KAAKmqZ,KAAK,WAAY,GACrDnqZ,KAAKmqZ,KACL,SAAc/1Y,EAAGC,GAGf,IAAIjU,EAAQ,OAFZgU,GAAK,GAGDrW,EAAQ,OAFZsW,GAAK,GAIL,OAAQjU,EAAIrC,IAAQqW,IAAM,IAAMrW,EAAIqC,GAAKiU,IAAM,KAAQ,KAAQ,GAAM,CACvE,EAMN,SAAS2iwB,GAAIzukB,GACX,OAASA,IAAQ,EAAK,WAAqB,WAANA,CACvC,CAEA,IAAI0ukB,GAAiB3ywB,OAAOsW,UAAUu2M,QAEtC,SAASrqN,GAAKq3E,GACZ,GAAS,MAALA,EACF,OAAO+4rB,GAAY/4rB,GAGrB,GAA0B,mBAAfA,EAAE+rU,SAEX,OAAO8sX,GAAI74rB,EAAE+rU,SAAS/rU,IAGxB,IA0LerxD,EAvISxuB,EACpB64wB,EApDAx6vB,GA0LWmQ,EA1LCqxD,GA2LLgzI,UAAY8ljB,IAAyC,mBAAhBnqvB,EAAIqkM,QAChDrkM,EAAIqkM,QAAQrkM,GACZA,EA3LJ,GAAS,MAALnQ,EACF,OAAOu6vB,GAAYv6vB,GAGrB,cAAeA,GACb,IAAK,UAIH,OAAOA,EAAI,WAAa,WAC1B,IAAK,SACH,OAuBN,SAAoBtB,GAClB,GAAIA,GAAMA,GAAKA,IAAMtb,IACnB,OAAO,EAET,IAAI+G,EAAW,EAAJuU,EAIX,IAHIvU,IAASuU,IACXvU,GAAY,WAAJuU,GAEHA,EAAI,YAETvU,GADAuU,GAAK,WAGP,OAAO27vB,GAAIlwwB,EACb,CApCaswwB,CAAWz6vB,GACpB,IAAK,SACH,OAAOA,EAAE/N,OAASyowB,SAsCP/lwB,KADX6lwB,EAASG,GADWh5wB,EAnCCqe,MAsCvBw6vB,EAASI,GAAWj5wB,GAChBk5wB,KAA2BC,KAC7BD,GAAyB,EACzBF,GAAkB,CAAC,GAErBE,KACAF,GAAgBh5wB,GAAU64wB,GAErBA,GA7CCI,GAAW56vB,GACjB,IAAK,SACL,IAAK,WACH,OAyEN,SAAmBmQ,GACjB,IAAIqqvB,EACJ,GAAIO,SAEapmwB,KADf6lwB,EAASQ,GAAQtpwB,IAAIye,IAEnB,OAAOqqvB,EAKX,QAAe7lwB,KADf6lwB,EAASrqvB,EAAI8qvB,KAEX,OAAOT,EAGT,IAAKU,GAAmB,CAEtB,QAAevmwB,KADf6lwB,EAASrqvB,EAAI6vE,sBAAwB7vE,EAAI6vE,qBAAqBi7qB,KAE5D,OAAOT,EAIT,QAAe7lwB,KADf6lwB,EA8DJ,SAAuB51wB,GACrB,GAAIA,GAAQA,EAAK0hH,SAAW,EAC1B,OAAQ1hH,EAAK0hH,UACX,KAAK,EACH,OAAO1hH,EAAK6oZ,SACd,KAAK,EACH,OAAO7oZ,EAAK2B,iBAAmB3B,EAAK2B,gBAAgBknZ,SAG5D,CAvEa0tX,CAAchrvB,IAErB,OAAOqqvB,CAEX,CAIA,GAFAA,EAASY,KAELL,GACFC,GAAQppwB,IAAIue,EAAKqqvB,OACZ,SAAqB7lwB,IAAjBs0C,KAAoD,IAAtBA,GAAa94B,GACpD,MAAM,IAAI/K,MAAM,mDACX,GAAI81vB,GACTvzwB,OAAOwY,eAAegQ,EAAK8qvB,GAAc,CACvC1xuB,YAAY,EACZuL,cAAc,EACdxL,UAAU,EACV9lC,MAAOg3wB,SAEJ,QACwB7lwB,IAA7Bwb,EAAI6vE,sBACJ7vE,EAAI6vE,uBAAyB7vE,EAAI7R,YAAYL,UAAU+hF,qBAMvD7vE,EAAI6vE,qBAAuB,WACzB,OAAOniF,KAAKS,YAAYL,UAAU+hF,qBAAqBrhF,MACrDd,KACA7L,UAEJ,EACAme,EAAI6vE,qBAAqBi7qB,IAAgBT,MACpC,SAAqB7lwB,IAAjBwb,EAAIm2F,SAOb,MAAM,IAAIlhG,MAAM,sDAFhB+K,EAAI8qvB,IAAgBT,CAGtB,EAEA,OAAOA,CACT,CA1Iaa,CAAUr7vB,GACnB,IAAK,SACH,OA0DN,SAAoBq3G,GAClB,IAAImjpB,EAAS77wB,GAAU04H,GACvB,YAAe1iH,IAAX6lwB,IAIJA,EAASY,KAETz8wB,GAAU04H,GAAOmjpB,GALRA,CAQX,CArEac,CAAWt7vB,GACpB,QACE,GAA0B,mBAAfA,EAAEnb,SACX,OAAO+1wB,GAAW56vB,EAAEnb,YAEtB,MAAM,IAAIugB,MAAM,qBAAuBpF,EAAI,sBAEjD,CAEA,SAASu6vB,GAAYgB,GACnB,OAAmB,OAAZA,EAAmB,WAA6B,UACzD,CAiCA,SAASX,GAAWj5wB,GAQlB,IADA,IAAI64wB,EAAS,EACJjmgB,EAAK,EAAGA,EAAK5yQ,EAAOsQ,OAAQsiQ,IACnCimgB,EAAU,GAAKA,EAAS74wB,EAAO8hG,WAAW8wK,GAAO,EAEnD,OAAO8lgB,GAAIG,EACb,CAmFA,IAAIvxtB,GAAethD,OAAOshD,aAGtBiytB,GAAoB,WACtB,IAEE,OADAvzwB,OAAOwY,eAAe,CAAC,EAAG,IAAK,CAAC,IACzB,CACT,CAAE,MAAOtd,GACP,OAAO,CACT,CACD,CAPuB,GA4BxB,SAASu4wB,KACP,IAAIA,IAAaI,GAIjB,OAHkB,WAAdA,KACFA,GAAc,GAETJ,CACT,CAGA,IACIJ,GADAD,GAAkC,mBAAZnurB,QAEtBmurB,KACFC,GAAU,IAAIpurB,SAGhB,IAAIjuF,GAAYgJ,OAAO4W,OAAO,MAE1Bi9vB,GAAc,EAEdP,GAAe,oBACG,mBAAX54wB,SACT44wB,GAAe54wB,OAAO44wB,KAGxB,IAAIP,GAA+B,GAC/BI,GAA6B,IAC7BD,GAAyB,EACzBF,GAAkB,CAAC,EAEnBc,GAAgC,SAAU5D,GAC5C,SAAS4D,EAAgBt5lB,EAASu5lB,GAChC79vB,KAAK6vY,MAAQvrO,EACbtkK,KAAK8vY,SAAW+tX,EAChB79vB,KAAK+S,KAAOuxJ,EAAQvxJ,IACtB,CAgDA,OA9CKinvB,IAAW4D,EAAgB19vB,UAAY85vB,GAC5C4D,EAAgBx9vB,UAAYtW,OAAO4W,OAAQs5vB,GAAYA,EAAS55vB,WAChEw9vB,EAAgBx9vB,UAAUK,YAAcm9vB,EAExCA,EAAgBx9vB,UAAUvM,IAAM,SAAcrJ,EAAKuxwB,GACjD,OAAO/7vB,KAAK6vY,MAAMh8Y,IAAIrJ,EAAKuxwB,EAC7B,EAEA6B,EAAgBx9vB,UAAUzM,IAAM,SAAcnJ,GAC5C,OAAOwV,KAAK6vY,MAAMl8Y,IAAInJ,EACxB,EAEAozwB,EAAgBx9vB,UAAU2vY,SAAW,WACnC,OAAO/vY,KAAK6vY,MAAME,UACpB,EAEA6tX,EAAgBx9vB,UAAU0Q,QAAU,WAClC,IAAIgtvB,EAAW99vB,KAEX+9vB,EAAmBC,GAAeh+vB,MAAM,GAI5C,OAHKA,KAAK8vY,WACRiuX,EAAiBhuX,SAAW,WAAc,OAAO+tX,EAASjuX,MAAMlB,QAAQ79X,SAAW,GAE9EitvB,CACT,EAEAH,EAAgBx9vB,UAAUrN,IAAM,SAAckrwB,EAAQ90uB,GACpD,IAAI20uB,EAAW99vB,KAEXk+vB,EAAiBC,GAAWn+vB,KAAMi+vB,EAAQ90uB,GAI9C,OAHKnpB,KAAK8vY,WACRouX,EAAenuX,SAAW,WAAc,OAAO+tX,EAASjuX,MAAMlB,QAAQ57Y,IAAIkrwB,EAAQ90uB,EAAU,GAEvF+0uB,CACT,EAEAN,EAAgBx9vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAC5D,IAAIgtvB,EAAW99vB,KAEf,OAAOA,KAAK6vY,MAAMzB,UAAU,SAAUjsY,EAAGsP,GAAK,OAAO3c,EAAGqN,EAAGsP,EAAGqsvB,EAAW,EAAGhtvB,EAC9E,EAEA8svB,EAAgBx9vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GAChE,OAAO9Q,KAAK6vY,MAAMb,WAAWh/X,EAAMc,EACrC,EAEO8svB,CACT,CAtDmC,CAsDjC5D,GACF4D,GAAgBx9vB,UAAUs6vB,IAAqB,EAE/C,IAAI0D,GAAkC,SAAUlE,GAC9C,SAASkE,EAAkBjlpB,GACzBn5G,KAAK6vY,MAAQ12R,EACbn5G,KAAK+S,KAAOomG,EAAKpmG,IACnB,CAwCA,OAtCKmnvB,IAAakE,EAAkBl+vB,UAAYg6vB,GAChDkE,EAAkBh+vB,UAAYtW,OAAO4W,OAAQw5vB,GAAcA,EAAW95vB,WACtEg+vB,EAAkBh+vB,UAAUK,YAAc29vB,EAE1CA,EAAkBh+vB,UAAUu1B,SAAW,SAAmBhwC,GACxD,OAAOqa,KAAK6vY,MAAMl6W,SAAShwC,EAC7B,EAEAy4wB,EAAkBh+vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAC9D,IAAIgtvB,EAAW99vB,KAEX3a,EAAI,EAER,OADAyrB,GAAWgovB,EAAW94vB,MACfA,KAAK6vY,MAAMzB,UAChB,SAAUjsY,GAAK,OAAOrN,EAAGqN,EAAG2O,EAAUgtvB,EAAS/qvB,OAAS1tB,EAAIA,IAAKy4wB,EAAW,EAC5EhtvB,EAEJ,EAEAstvB,EAAkBh+vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GAClE,IAAIgtvB,EAAW99vB,KAEXkC,EAAWlC,KAAK6vY,MAAMb,WAj4BT,EAi4BoCl+X,GACjDzrB,EAAI,EAER,OADAyrB,GAAWgovB,EAAW94vB,MACf,IAAI+yY,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,OAAOwZ,EAAKE,KACRF,EACAy5vB,EACE/qvB,EACAc,EAAUgtvB,EAAS/qvB,OAAS1tB,EAAIA,IAChCic,EAAK3b,MACL2b,EAER,EACF,EAEO88vB,CACT,CA7CqC,CA6CnClE,GAEEmE,GAA8B,SAAUjE,GAC1C,SAASiE,EAAcllpB,GACrBn5G,KAAK6vY,MAAQ12R,EACbn5G,KAAK+S,KAAOomG,EAAKpmG,IACnB,CA0BA,OAxBKqnvB,IAASiE,EAAcn+vB,UAAYk6vB,GACxCiE,EAAcj+vB,UAAYtW,OAAO4W,OAAQ05vB,GAAUA,EAAOh6vB,WAC1Di+vB,EAAcj+vB,UAAUK,YAAc49vB,EAEtCA,EAAcj+vB,UAAUzM,IAAM,SAAcnJ,GAC1C,OAAOwV,KAAK6vY,MAAMl6W,SAASnrC,EAC7B,EAEA6zwB,EAAcj+vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAC1D,IAAIgtvB,EAAW99vB,KAEf,OAAOA,KAAK6vY,MAAMzB,UAAU,SAAUjsY,GAAK,OAAOrN,EAAGqN,EAAGA,EAAG27vB,EAAW,EAAGhtvB,EAC3E,EAEAutvB,EAAcj+vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GAC9D,IAAI5O,EAAWlC,KAAK6vY,MAAMb,WAz6BT,EAy6BoCl+X,GACrD,OAAO,IAAIiiY,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,OAAOwZ,EAAKE,KACRF,EACAy5vB,EAAc/qvB,EAAM1O,EAAK3b,MAAO2b,EAAK3b,MAAO2b,EAClD,EACF,EAEO+8vB,CACT,CA/BiC,CA+B/BjE,GAEEkE,GAAoC,SAAUtE,GAChD,SAASsE,EAAoBp5sB,GAC3BllD,KAAK6vY,MAAQ3qV,EACbllD,KAAK+S,KAAOmyC,EAAQnyC,IACtB,CAqDA,OAnDKinvB,IAAWsE,EAAoBp+vB,UAAY85vB,GAChDsE,EAAoBl+vB,UAAYtW,OAAO4W,OAAQs5vB,GAAYA,EAAS55vB,WACpEk+vB,EAAoBl+vB,UAAUK,YAAc69vB,EAE5CA,EAAoBl+vB,UAAU2uY,SAAW,WACvC,OAAO/uY,KAAK6vY,MAAMlB,OACpB,EAEA2vX,EAAoBl+vB,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAChE,IAAIgtvB,EAAW99vB,KAEf,OAAOA,KAAK6vY,MAAMzB,UAAU,SAAUx8V,GAGpC,GAAIA,EAAO,CACT2stB,GAAc3stB,GACd,IAAI4stB,EAAoBxoX,EAAapkW,GACrC,OAAO98C,EACL0pwB,EAAoB5stB,EAAM/9C,IAAI,GAAK+9C,EAAM,GACzC4stB,EAAoB5stB,EAAM/9C,IAAI,GAAK+9C,EAAM,GACzCkstB,EAEJ,CACF,EAAGhtvB,EACL,EAEAwtvB,EAAoBl+vB,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACpE,IAAI5O,EAAWlC,KAAK6vY,MAAMb,WAt9BT,EAs9BoCl+X,GACrD,OAAO,IAAIiiY,EAAS,WAClB,OAAa,CACX,IAAIzxY,EAAOY,EAASpa,OACpB,GAAIwZ,EAAKE,KACP,OAAOF,EAET,IAAIswC,EAAQtwC,EAAK3b,MAGjB,GAAIisD,EAAO,CACT2stB,GAAc3stB,GACd,IAAI4stB,EAAoBxoX,EAAapkW,GACrC,OAAOmptB,EACL/qvB,EACAwuvB,EAAoB5stB,EAAM/9C,IAAI,GAAK+9C,EAAM,GACzC4stB,EAAoB5stB,EAAM/9C,IAAI,GAAK+9C,EAAM,GACzCtwC,EAEJ,CACF,CACF,EACF,EAEOg9vB,CACT,CA1DuC,CA0DrCtE,GAQF,SAASyE,GAAYxhjB,GACnB,IAAIyhjB,EAAeC,GAAa1hjB,GAmChC,OAlCAyhjB,EAAa7uX,MAAQ5yL,EACrByhjB,EAAa3rvB,KAAOkqM,EAAWlqM,KAC/B2rvB,EAAarvuB,KAAO,WAAc,OAAO4tL,CAAY,EACrDyhjB,EAAa5tvB,QAAU,WACrB,IAAIitvB,EAAmB9gjB,EAAWnsM,QAAQhQ,MAAMd,MAEhD,OADA+9vB,EAAiB1uuB,KAAO,WAAc,OAAO4tL,EAAWnsM,SAAW,EAC5DitvB,CACT,EACAW,EAAa/qwB,IAAM,SAAUnJ,GAAO,OAAOyyN,EAAWtnL,SAASnrC,EAAM,EACrEk0wB,EAAa/ouB,SAAW,SAAUnrC,GAAO,OAAOyyN,EAAWtpN,IAAInJ,EAAM,EACrEk0wB,EAAa7vX,YAAc+vX,GAC3BF,EAAa5vX,kBAAoB,SAAUh6Y,EAAIgc,GAC7C,IAAIgtvB,EAAW99vB,KAEf,OAAOi9M,EAAWmxL,UAAU,SAAUjsY,EAAGsP,GAAK,OAA8B,IAAvB3c,EAAG2c,EAAGtP,EAAG27vB,EAAqB,EAAGhtvB,EACxF,EACA4tvB,EAAazvX,mBAAqB,SAAUj/X,EAAMc,GAChD,GAzgCkB,IAygCdd,EAA0B,CAC5B,IAAI9N,EAAW+6M,EAAW+xL,WAAWh/X,EAAMc,GAC3C,OAAO,IAAIiiY,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,IAAKwZ,EAAKE,KAAM,CACd,IAAIiQ,EAAInQ,EAAK3b,MAAM,GACnB2b,EAAK3b,MAAM,GAAK2b,EAAK3b,MAAM,GAC3B2b,EAAK3b,MAAM,GAAK8rB,CAClB,CACA,OAAOnQ,CACT,EACF,CACA,OAAO27M,EAAW+xL,WAthCD,IAuhCfh/X,EAxhCa,EACE,EAwhCfc,EAEJ,EACO4tvB,CACT,CAEA,SAASP,GAAWlhjB,EAAYghjB,EAAQ90uB,GACtC,IAAI+0uB,EAAiBS,GAAa1hjB,GAkClC,OAjCAihjB,EAAenrvB,KAAOkqM,EAAWlqM,KACjCmrvB,EAAevqwB,IAAM,SAAUnJ,GAAO,OAAOyyN,EAAWtpN,IAAInJ,EAAM,EAClE0zwB,EAAerqwB,IAAM,SAAUrJ,EAAKuxwB,GAClC,IAAI55vB,EAAI86M,EAAWppN,IAAIrJ,EAAKmuwB,GAC5B,OAAOx2vB,IAAMw2vB,EACToD,EACAkC,EAAO59vB,KAAK8oB,EAAShnB,EAAG3X,EAAKyyN,EACnC,EACAihjB,EAAepvX,kBAAoB,SAAUh6Y,EAAIgc,GAC/C,IAAIgtvB,EAAW99vB,KAEf,OAAOi9M,EAAWmxL,UAChB,SAAUjsY,EAAGsP,EAAG7rB,GAAK,OAA0D,IAAnDkP,EAAGmpwB,EAAO59vB,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,GAAI6rB,EAAGqsvB,EAAqB,EACtFhtvB,EAEJ,EACAotvB,EAAejvX,mBAAqB,SAAUj/X,EAAMc,GAClD,IAAI5O,EAAW+6M,EAAW+xL,WAhjCR,EAgjCoCl+X,GACtD,OAAO,IAAIiiY,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,GAAIwZ,EAAKE,KACP,OAAOF,EAET,IAAIswC,EAAQtwC,EAAK3b,MACb6E,EAAMonD,EAAM,GAChB,OAAOmptB,EACL/qvB,EACAxlB,EACAyzwB,EAAO59vB,KAAK8oB,EAASyoB,EAAM,GAAIpnD,EAAKyyN,GACpC37M,EAEJ,EACF,EACO48vB,CACT,CAEA,SAASF,GAAe/gjB,EAAY4gjB,GAClC,IAAIC,EAAW99vB,KAEX+9vB,EAAmBY,GAAa1hjB,GA2CpC,OA1CA8gjB,EAAiBluX,MAAQ5yL,EACzB8gjB,EAAiBhrvB,KAAOkqM,EAAWlqM,KACnCgrvB,EAAiBjtvB,QAAU,WAAc,OAAOmsM,CAAY,EACxDA,EAAW5tL,OACb0uuB,EAAiB1uuB,KAAO,WACtB,IAAIqvuB,EAAeD,GAAYxhjB,GAE/B,OADAyhjB,EAAa5tvB,QAAU,WAAc,OAAOmsM,EAAW5tL,MAAQ,EACxDqvuB,CACT,GAEFX,EAAiBlqwB,IAAM,SAAUrJ,EAAKuxwB,GAAe,OAAO9+iB,EAAWppN,IAAIgqwB,EAAUrzwB,GAAO,EAAIA,EAAKuxwB,EAAc,EACnHgC,EAAiBpqwB,IAAM,SAAUnJ,GAAO,OAAOyyN,EAAWtpN,IAAIkqwB,EAAUrzwB,GAAO,EAAIA,EAAM,EACzFuzwB,EAAiBpouB,SAAW,SAAUhwC,GAAS,OAAOs3N,EAAWtnL,SAAShwC,EAAQ,EAClFo4wB,EAAiBlvX,YAAc+vX,GAC/Bb,EAAiB3vX,UAAY,SAAUt5Y,EAAIgc,GACzC,IAAIgtvB,EAAW99vB,KAEX3a,EAAI,EAER,OADAyrB,GAAWgovB,EAAW77iB,GACfA,EAAWmxL,UAChB,SAAUjsY,EAAGsP,GAAK,OAAO3c,EAAGqN,EAAG07vB,EAAUpsvB,EAAIX,EAAUgtvB,EAAS/qvB,OAAS1tB,EAAIA,IAAKy4wB,EAAW,GAC5FhtvB,EAEL,EACAitvB,EAAiB/uX,WAAa,SAAUh/X,EAAMc,GAC5C,IAAIzrB,EAAI,EACRyrB,GAAWgovB,EAAW77iB,GACtB,IAAI/6M,EAAW+6M,EAAW+xL,WAlmCR,GAkmCqCl+X,GACvD,OAAO,IAAIiiY,EAAS,WAClB,IAAIzxY,EAAOY,EAASpa,OACpB,GAAIwZ,EAAKE,KACP,OAAOF,EAET,IAAIswC,EAAQtwC,EAAK3b,MACjB,OAAOo1wB,EACL/qvB,EACA6tvB,EAAUjstB,EAAM,GAAK9gC,EAAUgtvB,EAAS/qvB,OAAS1tB,EAAIA,IACrDusD,EAAM,GACNtwC,EAEJ,EACF,EACOy8vB,CACT,CAEA,SAASc,GAAc5hjB,EAAYjpG,EAAW7qF,EAAS00uB,GACrD,IAAIiB,EAAiBH,GAAa1hjB,GA2ClC,OA1CI4gjB,IACFiB,EAAenrwB,IAAM,SAAUnJ,GAC7B,IAAI2X,EAAI86M,EAAWppN,IAAIrJ,EAAKmuwB,GAC5B,OAAOx2vB,IAAMw2vB,KAAa3kpB,EAAU3zG,KAAK8oB,EAAShnB,EAAG3X,EAAKyyN,EAC5D,EACA6hjB,EAAejrwB,IAAM,SAAUrJ,EAAKuxwB,GAClC,IAAI55vB,EAAI86M,EAAWppN,IAAIrJ,EAAKmuwB,GAC5B,OAAOx2vB,IAAMw2vB,GAAW3kpB,EAAU3zG,KAAK8oB,EAAShnB,EAAG3X,EAAKyyN,GACpD96M,EACA45vB,CACN,GAEF+C,EAAehwX,kBAAoB,SAAUh6Y,EAAIgc,GAC/C,IAAIgtvB,EAAW99vB,KAEXoqd,EAAa,EAOjB,OANAntQ,EAAWmxL,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GACnC,GAAIouH,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,GAEhC,OADAwke,IACOt1d,EAAGqN,EAAG07vB,EAAUpsvB,EAAI24c,EAAa,EAAG0zS,EAE/C,EAAGhtvB,GACIs5c,CACT,EACA00S,EAAe7vX,mBAAqB,SAAUj/X,EAAMc,GAClD,IAAI5O,EAAW+6M,EAAW+xL,WA/oCR,EA+oCoCl+X,GAClDs5c,EAAa,EACjB,OAAO,IAAIr3E,EAAS,WAClB,OAAa,CACX,IAAIzxY,EAAOY,EAASpa,OACpB,GAAIwZ,EAAKE,KACP,OAAOF,EAET,IAAIswC,EAAQtwC,EAAK3b,MACb6E,EAAMonD,EAAM,GACZjsD,EAAQisD,EAAM,GAClB,GAAIoiE,EAAU3zG,KAAK8oB,EAASxjC,EAAO6E,EAAKyyN,GACtC,OAAO89iB,EAAc/qvB,EAAM6tvB,EAAUrzwB,EAAM4/d,IAAczke,EAAO2b,EAEpE,CACF,EACF,EACOw9vB,CACT,CAmCA,SAASC,GAAa9hjB,EAAY8zC,EAAOrkQ,EAAKmxwB,GAC5C,IAAI7uV,EAAe/xN,EAAWlqM,KAE9B,GAAImmvB,EAAWnogB,EAAOrkQ,EAAKsib,GACzB,OAAO/xN,EAGT,IAAI+hjB,EAAgB5F,EAAarogB,EAAOi+K,GACpCiwV,EAAc3F,EAAW5swB,EAAKsib,GAKlC,GAAIgwV,GAAkBA,GAAiBC,GAAgBA,EACrD,OAAOF,GAAa9hjB,EAAW0xL,QAAQE,cAAe99I,EAAOrkQ,EAAKmxwB,GAOpE,IACIqB,EADAC,EAAeF,EAAcD,EAE7BG,GAAiBA,IACnBD,EAAYC,EAAe,EAAI,EAAIA,GAGrC,IAAIC,EAAWT,GAAa1hjB,GAqE5B,OAjEAmijB,EAASrsvB,KACO,IAAdmsvB,EAAkBA,EAAajijB,EAAWlqM,MAAQmsvB,QAAcpowB,GAE7D+mwB,GAAWvuX,EAAMryL,IAAeiijB,GAAa,IAChDE,EAASvrwB,IAAM,SAAU2C,EAAOulwB,GAE9B,OADAvlwB,EAAQwiwB,EAAUh5vB,KAAMxJ,KACR,GAAKA,EAAQ0owB,EACzBjijB,EAAWppN,IAAI2C,EAAQwowB,EAAejD,GACtCA,CACN,GAGFqD,EAAStwX,kBAAoB,SAAUh6Y,EAAIgc,GACzC,IAAIgtvB,EAAW99vB,KAEf,GAAkB,IAAdk/vB,EACF,OAAO,EAET,GAAIpuvB,EACF,OAAO9Q,KAAK6uY,cAAcT,UAAUt5Y,EAAIgc,GAE1C,IAAI2mf,EAAU,EACV4nQ,GAAa,EACbj1S,EAAa,EAUjB,OATAntQ,EAAWmxL,UAAU,SAAUjsY,EAAGsP,GAChC,IAAM4tvB,KAAeA,EAAa5nQ,IAAYunQ,GAE5C,OADA50S,KAEoD,IAAlDt1d,EAAGqN,EAAG07vB,EAAUpsvB,EAAI24c,EAAa,EAAG0zS,IACpC1zS,IAAe80S,CAGrB,GACO90S,CACT,EAEAg1S,EAASnwX,mBAAqB,SAAUj/X,EAAMc,GAC5C,GAAkB,IAAdouvB,GAAmBpuvB,EACrB,OAAO9Q,KAAK6uY,cAAcG,WAAWh/X,EAAMc,GAG7C,GAAkB,IAAdouvB,EACF,OAAO,IAAInsX,EAASkoX,GAEtB,IAAI/4vB,EAAW+6M,EAAW+xL,WAAWh/X,EAAMc,GACvC2mf,EAAU,EACVrtC,EAAa,EACjB,OAAO,IAAIr3E,EAAS,WAClB,KAAO0kH,IAAYunQ,GACjB98vB,EAASpa,OAEX,KAAMsie,EAAa80S,EACjB,MAjvCC,CAAEv5wB,WAAOmR,EAAW0K,MAAM,GAmvC7B,IAAIF,EAAOY,EAASpa,OACpB,OAAI+1wB,GA3xCW,IA2xCA7tvB,GAA2B1O,EAAKE,KACtCF,EAGAy5vB,EAAc/qvB,EAAMo6c,EAAa,EAhyC7B,IA+xCTp6c,OACyClZ,EAEFwK,EAAK3b,MAAM,GAFE2b,EAG1D,EACF,EAEO89vB,CACT,CA6CA,SAASE,GAAiBrijB,EAAYjpG,EAAW7qF,EAAS00uB,GACxD,IAAI0B,EAAeZ,GAAa1hjB,GAiDhC,OAhDAsijB,EAAazwX,kBAAoB,SAAUh6Y,EAAIgc,GAC7C,IAAIgtvB,EAAW99vB,KAEf,GAAI8Q,EACF,OAAO9Q,KAAK6uY,cAAcT,UAAUt5Y,EAAIgc,GAE1C,IAAIuuvB,GAAa,EACbj1S,EAAa,EAOjB,OANAntQ,EAAWmxL,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GACnC,IAAMy5wB,KAAeA,EAAarrpB,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,IAE9D,OADAwke,IACOt1d,EAAGqN,EAAG07vB,EAAUpsvB,EAAI24c,EAAa,EAAG0zS,EAE/C,GACO1zS,CACT,EACAm1S,EAAatwX,mBAAqB,SAAUj/X,EAAMc,GAChD,IAAIgtvB,EAAW99vB,KAEf,GAAI8Q,EACF,OAAO9Q,KAAK6uY,cAAcG,WAAWh/X,EAAMc,GAE7C,IAAI5O,EAAW+6M,EAAW+xL,WA12CR,EA02CoCl+X,GAClD0uvB,GAAW,EACXp1S,EAAa,EACjB,OAAO,IAAIr3E,EAAS,WAClB,IAAIzxY,EACAmQ,EACAtP,EACJ,EAAG,CAED,IADAb,EAAOY,EAASpa,QACP0Z,KACP,OAAIq8vB,GAr3CO,IAq3CI7tvB,EACN1O,EAGAy5vB,EAAc/qvB,EAAMo6c,IA13CpB,IAy3CLp6c,OACuClZ,EAEFwK,EAAK3b,MAAM,GAFE2b,GAIxD,IAAIswC,EAAQtwC,EAAK3b,MACjB8rB,EAAImgC,EAAM,GACVzvC,EAAIyvC,EAAM,GACV4ttB,IAAaA,EAAWxrpB,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAGqsvB,GACxD,OAAS0B,GACT,OAj4CgB,IAi4CTxvvB,EAA2B1O,EAAOy5vB,EAAc/qvB,EAAMyB,EAAGtP,EAAGb,EACrE,EACF,EACOi+vB,CACT,CAmDA,SAASE,GAAexijB,EAAY6E,EAAO+7iB,GACzC,IAAI6B,EAAef,GAAa1hjB,GAmDhC,OAlDAyijB,EAAa5wX,kBAAoB,SAAUh6Y,EAAIgc,GAC7C,GAAIA,EACF,OAAO9Q,KAAK6uY,cAAcT,UAAUt5Y,EAAIgc,GAE1C,IAAIs5c,EAAa,EACb1yJ,GAAU,EAed,OAdA,SAASioc,EAASxmpB,EAAMympB,GACtBzmpB,EAAKi1R,UAAU,SAAUjsY,EAAGsP,GAS1B,QARMqwM,GAAS89iB,EAAe99iB,IAAUk0L,EAAa7zY,GACnDw9vB,EAASx9vB,EAAGy9vB,EAAe,IAE3Bx1S,KAC0D,IAAtDt1d,EAAGqN,EAAG07vB,EAAUpsvB,EAAI24c,EAAa,EAAGs1S,KACtChoc,GAAU,KAGNA,CACV,EAAG5mT,EACL,CACA6uvB,CAAS1ijB,EAAY,GACdmtQ,CACT,EACAs1S,EAAazwX,mBAAqB,SAAUj/X,EAAMc,GAChD,GAAIA,EACF,OAAO9Q,KAAK6uY,cAAcG,WAAWh/X,EAAMc,GAE7C,IAAI5O,EAAW+6M,EAAW+xL,WAAWh/X,EAAMc,GACvCy1B,EAAQ,GACR6jb,EAAa,EACjB,OAAO,IAAIr3E,EAAS,WAClB,KAAO7wY,GAAU,CACf,IAAIZ,EAAOY,EAASpa,OACpB,IAAkB,IAAdwZ,EAAKE,KAAT,CAIA,IAAIW,EAAIb,EAAK3b,MAIb,GAl+Cc,IA+9CVqqB,IACF7N,EAAIA,EAAE,IAEF2/M,KAASv7K,EAAMnyC,OAAS0tN,KAAUk0L,EAAa7zY,GAInD,OAAO07vB,EAAUv8vB,EAAOy5vB,EAAc/qvB,EAAMo6c,IAAcjod,EAAGb,GAH7DilC,EAAMzyC,KAAKoO,GACXA,EAAWC,EAAE6sY,WAAWh/X,EAAMc,EAPhC,MAFE5O,EAAWqkC,EAAMlkC,KAarB,CACA,MAn8CG,CAAE1c,WAAOmR,EAAW0K,MAAM,EAo8C/B,EACF,EACOk+vB,CACT,CA2CA,SAASG,GAAY5ijB,EAAYuhC,EAAYy/gB,GACtCz/gB,IACHA,EAAashhB,IAEf,IAAIC,EAAoBptX,EAAQ11L,GAC5BzmN,EAAQ,EACR0uD,EAAU+3J,EACX0xL,QACA57Y,IAAI,SAAUoP,EAAGsP,GAAK,MAAO,CAACA,EAAGtP,EAAG3L,IAASynwB,EAASA,EAAO97vB,EAAGsP,EAAGwrM,GAAc96M,EAAI,GACrF4tY,WACAjsL,UAYH,OAXA5+J,EACG9xD,KAAK,SAAUwG,EAAGC,GAAK,OAAO2kP,EAAW5kP,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,EAAI,GACrE7H,QACC+twB,EACI,SAAU59vB,EAAG9c,GACX6/D,EAAQ7/D,GAAG+O,OAAS,CACtB,EACA,SAAU+N,EAAG9c,GACX6/D,EAAQ7/D,GAAK8c,EAAE,EACjB,GAED49vB,EACH/F,EAAS90sB,GACT0tV,EAAU31L,GACVi9iB,EAAWh1sB,GACXk1sB,EAAOl1sB,EACb,CAEA,SAAS86sB,GAAW/ijB,EAAYuhC,EAAYy/gB,GAI1C,GAHKz/gB,IACHA,EAAashhB,IAEX7B,EAAQ,CACV,IAAIrstB,EAAQqrK,EACT0xL,QACA57Y,IAAI,SAAUoP,EAAGsP,GAAK,MAAO,CAACtP,EAAG87vB,EAAO97vB,EAAGsP,EAAGwrM,GAAc,GAC5D3yN,OAAO,SAAUsP,EAAGC,GAAK,OAAQomwB,GAAWzhhB,EAAY5kP,EAAE,GAAIC,EAAE,IAAMA,EAAID,CAAI,GACjF,OAAOg4C,GAASA,EAAM,EACxB,CACA,OAAOqrK,EAAW3yN,OAAO,SAAUsP,EAAGC,GAAK,OAAQomwB,GAAWzhhB,EAAY5kP,EAAGC,GAAKA,EAAID,CAAI,EAC5F,CAEA,SAASqmwB,GAAWzhhB,EAAY5kP,EAAGC,GACjC,IAAIqmwB,EAAO1hhB,EAAW3kP,EAAGD,GAGzB,OACY,IAATsmwB,GAAcrmwB,IAAMD,IAAMC,SAAiCA,GAAMA,IAClEqmwB,EAAO,CAEX,CAEA,SAASC,GAAeC,EAASC,EAAQC,EAAOvrX,GAC9C,IAAIwrX,EAAc5B,GAAayB,GAC3BI,EAAQ,IAAI1E,EAASwE,GAAOvtwB,IAAI,SAAU1N,GAAK,OAAOA,EAAE0tB,IAAM,GAqDlE,OApDAwtvB,EAAYxtvB,KAAOgiY,EAASyrX,EAAM72wB,MAAQ62wB,EAAM92wB,MAGhD62wB,EAAYnyX,UAAY,SAAUt5Y,EAAIgc,GAiBpC,IAHA,IACIxP,EADAY,EAAWlC,KAAKgvY,WAlmDH,EAkmD8Bl+X,GAE3Cs5c,EAAa,IACR9od,EAAOY,EAASpa,QAAQ0Z,OACY,IAAvC1M,EAAGwM,EAAK3b,MAAOyke,IAAcpqd,QAInC,OAAOoqd,CACT,EACAm2S,EAAYtxX,mBAAqB,SAAUj/X,EAAMc,GAC/C,IAAI2vvB,EAAYH,EAAMvtwB,IACpB,SAAU1N,GAAK,OAASA,EAAIkwZ,EAAWlwZ,GAAK+7G,EAAYtwF,EAAUzrB,EAAEyrB,UAAYzrB,EAAK,GAEnF+ke,EAAa,EACbs2S,GAAS,EACb,OAAO,IAAI3tX,EAAS,WAClB,IAAI31T,EAKJ,OAJKsjrB,IACHtjrB,EAAQqjrB,EAAU1twB,IAAI,SAAU1N,GAAK,OAAOA,EAAEyC,MAAQ,GACtD44wB,EAAS3rX,EAAS33T,EAAM5iF,MAAM,SAAUvX,GAAK,OAAOA,EAAEue,IAAM,GAAK47E,EAAM9qF,KAAK,SAAUrP,GAAK,OAAOA,EAAEue,IAAM,IAExGk/vB,EAjlDD,CAAE/6wB,WAAOmR,EAAW0K,MAAM,GAolDtBu5vB,EACL/qvB,EACAo6c,IACAi2S,EAAOv/vB,MACL,KACAs8E,EAAMrqF,IAAI,SAAU9P,GAAK,OAAOA,EAAE0C,KAAO,IAG/C,EACF,EACO46wB,CACT,CAIA,SAASI,GAAMxnpB,EAAM2vO,GACnB,OAAO3vO,IAAS2vO,EAAM3vO,EAAOm2R,EAAMn2R,GAAQ2vO,EAAM3vO,EAAK14G,YAAYqoV,EACpE,CAEA,SAASy1a,GAAc3stB,GACrB,GAAIA,IAAU9nD,OAAO8nD,GACnB,MAAM,IAAItxC,UAAU,0BAA4BsxC,EAEpD,CAEA,SAASgvtB,GAAgB3jjB,GACvB,OAAO01L,EAAQ11L,GACX88iB,EACAnnX,EAAU31L,GACVg9iB,EACAE,CACN,CAEA,SAASwE,GAAa1hjB,GACpB,OAAOnzN,OAAO4W,QACXiyY,EAAQ11L,GACL+8iB,EACApnX,EAAU31L,GACVi9iB,EACAE,GACFh6vB,UAEN,CAEA,SAASw+vB,KACP,OAAI5+vB,KAAK6vY,MAAMhB,aACb7uY,KAAK6vY,MAAMhB,cACX7uY,KAAK+S,KAAO/S,KAAK6vY,MAAM98X,KAChB/S,MAEFy1Y,EAAIr1Y,UAAUyuY,YAAYxuY,KAAKL,KACxC,CAEA,SAAS8/vB,GAAkBlmwB,EAAGC,GAC5B,YAAU/C,IAAN8C,QAAyB9C,IAAN+C,EACd,OAGC/C,IAAN8C,EACK,OAGC9C,IAAN+C,GACM,EAGHD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CAClC,CAEA,SAASgnwB,GAAQjquB,EAAKhyC,GACpBA,EAASA,GAAU,EAGnB,IAFA,IAAI6K,EAAMjK,KAAKmE,IAAI,EAAGitC,EAAIxiC,OAASxP,GAC/Bk8wB,EAAS,IAAIxswB,MAAM7E,GACdinQ,EAAK,EAAGA,EAAKjnQ,EAAKinQ,IACzBoqgB,EAAOpqgB,GAAM9/N,EAAI8/N,EAAK9xQ,GAExB,OAAOk8wB,CACT,CAEA,SAASzuF,GAAU5ta,EAAWx6P,GAC5B,IAAKw6P,EAAa,MAAM,IAAIl9P,MAAM0C,EACpC,CAEA,SAAS82vB,GAAkBhuvB,GACzBs/pB,GACEt/pB,IAASxtB,IACT,oDAEJ,CAEA,SAASy7wB,GAAcnzB,GACrB,GAAItihB,EAAYsihB,IAA+B,iBAAZA,EACjC,OAAOA,EAET,GAAI/6V,EAAU+6V,GACZ,OAAOA,EAAQ/phB,UAEjB,MAAM,IAAIxjN,UACR,0DAA4DutuB,EAEhE,CA9uBAuwB,GAAkBh+vB,UAAUyuY,YAC1B+uX,GAAgBx9vB,UAAUyuY,YAC1BwvX,GAAcj+vB,UAAUyuY,YACxByvX,GAAoBl+vB,UAAUyuY,YAC5B+vX,GA4uBJ,IAAI53wB,GAAW8C,OAAOsW,UAAUpZ,SAEhC,SAAS0jO,GAAc/kO,GAErB,IACGA,GACgB,iBAAVA,GACkB,oBAAzBqB,GAASqZ,KAAK1a,GAEd,OAAO,EAGT,IAAIu/B,EAAQp7B,OAAO2rC,eAAe9vC,GAClC,GAAc,OAAVu/B,EACF,OAAO,EAMT,IAFA,IAAI+7uB,EAAc/7uB,EACdg8uB,EAAYp3wB,OAAO2rC,eAAevQ,GACjB,OAAdg8uB,GACLD,EAAcC,EACdA,EAAYp3wB,OAAO2rC,eAAewruB,GAEpC,OAAOA,IAAgB/7uB,CACzB,CAMA,SAASi8uB,GAAgBx7wB,GACvB,MACmB,iBAAVA,IACNowZ,EAAYpwZ,IAAU2O,MAAMyb,QAAQpqB,IAAU+kO,GAAc/kO,GAEjE,CAEA,SAASy7wB,GAAYz7wB,GACnB,IACE,MAAwB,iBAAVA,EAAqBgkB,KAAKC,UAAUjkB,GAAS4a,OAAO5a,EACpE,CAAE,MAAO07wB,GACP,OAAO13vB,KAAKC,UAAUjkB,EACxB,CACF,CAEA,SAASgO,GAAIspN,EAAYzyN,GACvB,OAAOurZ,EAAY94L,GACfA,EAAWtpN,IAAInJ,GACf22wB,GAAgBlkjB,IAAerxN,EAAeyU,KAAK48M,EAAYzyN,EACrE,CAEA,SAASqJ,GAAIopN,EAAYzyN,EAAKuxwB,GAC5B,OAAOhmX,EAAY94L,GACfA,EAAWppN,IAAIrJ,EAAKuxwB,GACnBpowB,GAAIspN,EAAYzyN,GAES,mBAAnByyN,EAAWppN,IAClBopN,EAAWppN,IAAIrJ,GACfyyN,EAAWzyN,GAHXuxwB,CAIN,CAEA,SAASn/f,GAAY/3O,GACnB,GAAIvwB,MAAMyb,QAAQ8U,GAChB,OAAOg8uB,GAAQh8uB,GAEjB,IAAID,EAAK,CAAC,EACV,IAAK,IAAIp6B,KAAOq6B,EACVj5B,EAAeyU,KAAKwkB,EAAMr6B,KAC5Bo6B,EAAGp6B,GAAOq6B,EAAKr6B,IAGnB,OAAOo6B,CACT,CAEA,SAASge,GAAOq6K,EAAYzyN,GAC1B,IAAK22wB,GAAgBlkjB,GACnB,MAAM,IAAI38M,UACR,2CAA6C28M,GAGjD,GAAI84L,EAAY94L,GAAa,CAC3B,IAAKA,EAAWr6K,OACd,MAAM,IAAItiC,UACR,2DAA6D28M,GAGjE,OAAOA,EAAWr6K,OAAOp4C,EAC3B,CACA,IAAKoB,EAAeyU,KAAK48M,EAAYzyN,GACnC,OAAOyyN,EAET,IAAIqkjB,EAAiB1kgB,GAAY3/C,GAMjC,OALI3oN,MAAMyb,QAAQuxvB,GAChBA,EAAev0uB,OAAOviC,EAAK,UAEpB82wB,EAAe92wB,GAEjB82wB,CACT,CAEA,SAASvtwB,GAAIkpN,EAAYzyN,EAAK7E,GAC5B,IAAKw7wB,GAAgBlkjB,GACnB,MAAM,IAAI38M,UACR,2CAA6C28M,GAGjD,GAAI84L,EAAY94L,GAAa,CAC3B,IAAKA,EAAWlpN,IACd,MAAM,IAAIuM,UACR,wDAA0D28M,GAG9D,OAAOA,EAAWlpN,IAAIvJ,EAAK7E,EAC7B,CACA,GAAIiG,EAAeyU,KAAK48M,EAAYzyN,IAAQ7E,IAAUs3N,EAAWzyN,GAC/D,OAAOyyN,EAET,IAAIqkjB,EAAiB1kgB,GAAY3/C,GAEjC,OADAqkjB,EAAe92wB,GAAO7E,EACf27wB,CACT,CAEA,SAASC,GAAWtkjB,EAAY4whB,EAASkuB,EAAav/a,GAC/CA,IACHA,EAAUu/a,EACVA,OAAcjlwB,GAEhB,IAAI0qwB,EAAeC,GACjB1rX,EAAY94L,GACZA,EACA+jjB,GAAcnzB,GACd,EACAkuB,EACAv/a,GAEF,OAAOglb,IAAiB7I,EAAUoD,EAAcyF,CAClD,CAEA,SAASC,GACPC,EACA5rwB,EACA+3uB,EACAxovB,EACA02wB,EACAv/a,GAEA,IAAImlb,EAAY7rwB,IAAa6iwB,EAC7B,GAAItzwB,IAAMwovB,EAAQz5uB,OAAQ,CACxB,IAAIwtwB,EAAgBD,EAAY5F,EAAcjmwB,EAC1C24H,EAAW+tN,EAAQolb,GACvB,OAAOnzoB,IAAamzoB,EAAgB9rwB,EAAW24H,CACjD,CACA,IAAKkzoB,IAAcR,GAAgBrrwB,GACjC,MAAM,IAAIwK,UACR,0DACEutuB,EAAQ/yuB,MAAM,EAAGzV,GAAG0N,IAAIquwB,IACxB,MACAtrwB,GAGN,IAAItL,EAAMqjvB,EAAQxovB,GACdw8wB,EAAeF,EAAYhJ,EAAU9kwB,GAAIiC,EAAUtL,EAAKmuwB,GACxDmJ,EAAcL,GAChBI,IAAiBlJ,EAAU+I,EAAc3rX,EAAY8rX,GACrDA,EACAh0B,EACAxovB,EAAI,EACJ02wB,EACAv/a,GAEF,OAAOslb,IAAgBD,EACnB/rwB,EACAgswB,IAAgBnJ,EAChB/1tB,GAAO9sC,EAAUtL,GACjBuJ,GACE4twB,EAAaD,EAAcK,KAAa,CAAC,EAAKjswB,EAC9CtL,EACAs3wB,EAER,CAEA,SAASE,GAAQ/kjB,EAAY4whB,EAASlovB,GACpC,OAAO47wB,GAAWtkjB,EAAY4whB,EAAS8qB,EAAS,WAAc,OAAOhzwB,CAAO,EAC9E,CAEA,SAAS6qZ,GAAMq9V,EAAS1ruB,GACtB,OAAO6/vB,GAAQhiwB,KAAM6tuB,EAAS1ruB,EAChC,CAEA,SAASsuY,GAASxzL,EAAY4whB,GAC5B,OAAO0zB,GAAWtkjB,EAAY4whB,EAAS,WAAc,OAAO8qB,CAAS,EACvE,CAEA,SAASjoX,GAASm9V,GAChB,OAAOp9V,GAASzwY,KAAM6tuB,EACxB,CAEA,SAASo0B,GAAShljB,EAAYzyN,EAAKuxwB,EAAav/a,GAC9C,OAAO+kb,GAAWtkjB,EAAY,CAACzyN,GAAMuxwB,EAAav/a,EACpD,CAEA,SAASpmV,GAAO5L,EAAKuxwB,EAAav/a,GAChC,OAA4B,IAArBroV,UAAUC,OACb5J,EAAIwV,MACJiiwB,GAASjiwB,KAAMxV,EAAKuxwB,EAAav/a,EACvC,CAEA,SAASm0D,GAASk9V,EAASkuB,EAAav/a,GACtC,OAAO+kb,GAAWvhwB,KAAM6tuB,EAASkuB,EAAav/a,EAChD,CAEA,SAAS0lb,KAEP,IADA,IAAI5B,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OACxB3E,KAAQ6wwB,EAAO7wwB,GAAQ0E,UAAW1E,GAE1C,OAAO0ywB,GAAmBniwB,KAAMsgwB,EAClC,CAEA,SAAS8B,GAAYpwvB,GAEnB,IADA,IAAIsuvB,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OAAS,EACjC3E,KAAQ,GAAI6wwB,EAAO7wwB,GAAQ0E,UAAW1E,EAAM,GAEpD,GAAsB,mBAAXuiB,EACT,MAAM,IAAI1R,UAAU,4BAA8B0R,GAEpD,OAAOmwvB,GAAmBniwB,KAAMsgwB,EAAOtuvB,EACzC,CAEA,SAASmwvB,GAAmBlljB,EAAYoljB,EAAarwvB,GAEnD,IADA,IAAIsuvB,EAAQ,GACH5pgB,EAAK,EAAGA,EAAK2rgB,EAAYjuwB,OAAQsiQ,IAAM,CAC9C,IAAI4rgB,EAAevI,EAAgBsI,EAAY3rgB,IACrB,IAAtB4rgB,EAAavvvB,MACfutvB,EAAMxswB,KAAKwuwB,EAEf,CACA,OAAqB,IAAjBhC,EAAMlswB,OACD6oN,EAGqB,IAA5BA,EAAW0xL,QAAQ57X,MAClBkqM,EAAW+yL,WACK,IAAjBswX,EAAMlswB,OAID6oN,EAAWgzL,cAAc,SAAUhzL,GASxC,IARA,IAAIsljB,EAAsBvwvB,EACtB,SAAUrsB,EAAO6E,GACfy3wB,GAAShljB,EAAYzyN,EAAKmuwB,EAAS,SAAU1vf,GAAU,OAAOA,IAAW0vf,EAAUhzwB,EAAQqsB,EAAOi3P,EAAQtjR,EAAO6E,EAAM,EAEzH,EACA,SAAU7E,EAAO6E,GACfyyN,EAAWlpN,IAAIvJ,EAAK7E,EACtB,EACK+wQ,EAAK,EAAGA,EAAK4pgB,EAAMlswB,OAAQsiQ,IAClC4pgB,EAAM5pgB,GAAI1kQ,QAAQuwwB,EAEtB,GAdStljB,EAAWx8M,YAAY6/vB,EAAM,GAexC,CAEA,SAASxuvB,GAAMmrM,GAEb,IADA,IAAIlrM,EAAU,GAAItiB,EAAM0E,UAAUC,OAAS,EACnC3E,KAAQ,GAAIsiB,EAAStiB,GAAQ0E,UAAW1E,EAAM,GAEtD,OAAO+ywB,GAAiBvljB,EAAYlrM,EACtC,CAEA,SAASmnN,GAAUlnN,EAAQirM,GAEzB,IADA,IAAIlrM,EAAU,GAAItiB,EAAM0E,UAAUC,OAAS,EACnC3E,KAAQ,GAAIsiB,EAAStiB,GAAQ0E,UAAW1E,EAAM,GAEtD,OAAO+ywB,GAAiBvljB,EAAYlrM,EAASC,EAC/C,CAEA,SAASywvB,GAAYxljB,GAEnB,IADA,IAAIlrM,EAAU,GAAItiB,EAAM0E,UAAUC,OAAS,EACnC3E,KAAQ,GAAIsiB,EAAStiB,GAAQ0E,UAAW1E,EAAM,GAEtD,OAAOizwB,GAAqBzljB,EAAYlrM,EAC1C,CAEA,SAAS4wvB,GAAgB3wvB,EAAQirM,GAE/B,IADA,IAAIlrM,EAAU,GAAItiB,EAAM0E,UAAUC,OAAS,EACnC3E,KAAQ,GAAIsiB,EAAStiB,GAAQ0E,UAAW1E,EAAM,GAEtD,OAAOizwB,GAAqBzljB,EAAYlrM,EAASC,EACnD,CAEA,SAAS0wvB,GAAqBzljB,EAAYlrM,EAASC,GACjD,OAAOwwvB,GAAiBvljB,EAAYlrM,EA6CtC,SAAwBC,GAUtB,OATA,SAAS4wvB,EAAWrhf,EAAU9yJ,EAAUjkI,GACtC,OAAO22wB,GAAgB5/e,IACrB4/e,GAAgB1yoB,KAekBo0oB,EAdXp0oB,EAevBq0oB,EAASrtX,EAfIl0H,GAgBbwhf,EAASttX,EAAIotX,GAIfjwX,EAAUkwX,KAAYlwX,EAAUmwX,IAChCpwX,EAAQmwX,KAAYnwX,EAAQowX,IApBxBP,GAAiBjhf,EAAU,CAAC9yJ,GAAWm0oB,GACvC5wvB,EACAA,EAAOuvQ,EAAU9yJ,EAAUjkI,GAC3BikI,EAUR,IAAwCo0oB,EAClCC,EACAC,CAXJ,CAEF,CAxD+CC,CAAehxvB,GAC9D,CAEA,SAASwwvB,GAAiBvljB,EAAYlrM,EAASC,GAC7C,IAAKmvvB,GAAgBlkjB,GACnB,MAAM,IAAI38M,UACR,+CAAiD28M,GAGrD,GAAI84L,EAAY94L,GACd,MAAyB,mBAAXjrM,GAAyBirM,EAAWic,UAC9Cjc,EAAWic,UAAUp4N,MAAMm8M,EAAY,CAAEjrM,GAAShkB,OAAQ+jB,IAC1DkrM,EAAWnrM,MACXmrM,EAAWnrM,MAAMhR,MAAMm8M,EAAYlrM,GACnCkrM,EAAWjvN,OAAO8S,MAAMm8M,EAAYlrM,GAyB1C,IAvBA,IAAIhC,EAAUzb,MAAMyb,QAAQktM,GACxBxnN,EAASwnN,EACTs4L,EAAaxlY,EAAUkqvB,EAAoBF,EAC3CkJ,EAAYlzvB,EACZ,SAAUpqB,GAEJ8P,IAAWwnN,IACbxnN,EAASmnQ,GAAYnnQ,IAEvBA,EAAO3B,KAAKnO,EACd,EACA,SAAUA,EAAO6E,GACf,IAAI04wB,EAASt3wB,EAAeyU,KAAK5K,EAAQjL,GACrC24wB,EACFD,GAAUlxvB,EAASA,EAAOvc,EAAOjL,GAAM7E,EAAO6E,GAAO7E,EAClDu9wB,GAAUC,IAAY1twB,EAAOjL,KAE5BiL,IAAWwnN,IACbxnN,EAASmnQ,GAAYnnQ,IAEvBA,EAAOjL,GAAO24wB,EAElB,EACK99wB,EAAI,EAAGA,EAAI0sB,EAAQ3d,OAAQ/O,IAClCkwZ,EAAWxjY,EAAQ1sB,IAAI2M,QAAQixwB,GAEjC,OAAOxtwB,CACT,CA+BA,SAASm7Y,KAEP,IADA,IAAI0vX,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OACxB3E,KAAQ6wwB,EAAO7wwB,GAAQ0E,UAAW1E,GAE1C,OAAOizwB,GAAqB1iwB,KAAMsgwB,EACpC,CAEA,SAASzvX,GAAc7+X,GAErB,IADA,IAAIsuvB,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OAAS,EACjC3E,KAAQ,GAAI6wwB,EAAO7wwB,GAAQ0E,UAAW1E,EAAM,GAEpD,OAAOizwB,GAAqB1iwB,KAAMsgwB,EAAOtuvB,EAC3C,CAEA,SAAS8+X,GAAQ+8V,GAEf,IADA,IAAIyyB,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OAAS,EACjC3E,KAAQ,GAAI6wwB,EAAO7wwB,GAAQ0E,UAAW1E,EAAM,GAEpD,OAAO8xwB,GAAWvhwB,KAAM6tuB,EAASk0B,KAAY,SAAU5+wB,GAAK,OAAOq/wB,GAAiBr/wB,EAAGm9wB,EAAQ,EACjG,CAEA,SAASvvX,GAAY88V,GAEnB,IADA,IAAIyyB,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OAAS,EACjC3E,KAAQ,GAAI6wwB,EAAO7wwB,GAAQ0E,UAAW1E,EAAM,GAEpD,OAAO8xwB,GAAWvhwB,KAAM6tuB,EAASk0B,KAAY,SAAU5+wB,GAAK,OAAOu/wB,GAAqBv/wB,EAAGm9wB,EAAQ,EAErG,CAEA,SAASrwX,GAAcn7Y,GACrB,IAAI8vtB,EAAU5ktB,KAAKkwY,YAEnB,OADAp7Y,EAAG8vtB,GACIA,EAAQz0U,aAAey0U,EAAQx0U,cAAcpwY,KAAKgwY,WAAahwY,IACxE,CAEA,SAASkwY,KACP,OAAOlwY,KAAKgwY,UAAYhwY,KAAOA,KAAKowY,cAAc,IAAIyoX,EACxD,CAEA,SAAS7nX,KACP,OAAOhxY,KAAKowY,eACd,CAEA,SAASD,KACP,OAAOnwY,KAAKqwY,SACd,CAEA,IAAIr9Y,GAAoB,SAAU+mwB,GAChC,SAAS/mwB,EAAIrN,GACX,OAAOA,QACHo8wB,KACA54gB,GAAMxjQ,KAAWmtZ,EAAUntZ,GAC3BA,EACAo8wB,KAAW9xX,cAAc,SAAUl9Y,GACjC,IAAIomH,EAAO4gpB,EAAgBp0wB,GAC3Bo7wB,GAAkB5npB,EAAKpmG,MACvBomG,EAAKnnH,QAAQ,SAAUmQ,EAAGsP,GAAK,OAAO1e,EAAIgB,IAAI0d,EAAGtP,EAAI,EACvD,EACN,CA2HA,OAzHK43vB,IAAkB/mwB,EAAIkN,UAAY65vB,GACvC/mwB,EAAIoN,UAAYtW,OAAO4W,OAAQq5vB,GAAmBA,EAAgB35vB,WAClEpN,EAAIoN,UAAUK,YAAczN,EAE5BA,EAAIggQ,GAAK,WAEP,IADA,IAAIs8G,EAAY,GAAI7/W,EAAM0E,UAAUC,OAC5B3E,KAAQ6/W,EAAW7/W,GAAQ0E,UAAW1E,GAE9C,OAAOsywB,KAAW9xX,cAAc,SAAUl9Y,GACxC,IAAK,IAAI1N,EAAI,EAAGA,EAAIiqX,EAAUl7W,OAAQ/O,GAAK,EAAG,CAC5C,GAAIA,EAAI,GAAKiqX,EAAUl7W,OACrB,MAAM,IAAImT,MAAM,0BAA4B+nW,EAAUjqX,IAExD0N,EAAIgB,IAAIu7W,EAAUjqX,GAAIiqX,EAAUjqX,EAAI,GACtC,CACF,EACF,EAEA2N,EAAIoN,UAAUpZ,SAAW,WACvB,OAAOgZ,KAAK4uY,WAAW,QAAS,IAClC,EAIA57Y,EAAIoN,UAAUvM,IAAM,SAAc4d,EAAGsqvB,GACnC,OAAO/7vB,KAAK22G,MACR32G,KAAK22G,MAAM9iH,IAAI,OAAGiD,EAAW2a,EAAGsqvB,GAChCA,CACN,EAIA/owB,EAAIoN,UAAUrM,IAAM,SAAc0d,EAAGtP,GACnC,OAAOihwB,GAAUpjwB,KAAMyR,EAAGtP,EAC5B,EAEAnP,EAAIoN,UAAUwiC,OAAS,SAAiBnxB,GACtC,OAAO2xvB,GAAUpjwB,KAAMyR,EAAGknvB,EAC5B,EAEA3lwB,EAAIoN,UAAUkwY,UAAY,SAAoBjmZ,GAC5C,IAAI4yN,EAAas4L,EAAWlrZ,GAE5B,OAAwB,IAApB4yN,EAAWlqM,KACN/S,KAGFA,KAAKiwY,cAAc,SAAUl9Y,GAClCkqN,EAAWjrN,QAAQ,SAAUxH,GAAO,OAAOuI,EAAI6vC,OAAOp4C,EAAM,EAC9D,EACF,EAEAwI,EAAIoN,UAAU26D,MAAQ,WACpB,OAAkB,IAAd/6D,KAAK+S,KACA/S,KAELA,KAAKgwY,WACPhwY,KAAK+S,KAAO,EACZ/S,KAAK22G,MAAQ,KACb32G,KAAKuwY,YAASz5Y,EACdkJ,KAAKqwY,WAAY,EACVrwY,MAEF+hwB,IACT,EAIA/uwB,EAAIoN,UAAUhN,KAAO,SAAeorP,GAElC,OAAOk3J,GAAWmqX,GAAY7/vB,KAAMw+O,GACtC,EAEAxrP,EAAIoN,UAAU6jN,OAAS,SAAiBg6iB,EAAQz/gB,GAE9C,OAAOk3J,GAAWmqX,GAAY7/vB,KAAMw+O,EAAYy/gB,GAClD,EAEAjrwB,EAAIoN,UAAUrN,IAAM,SAAckrwB,EAAQ90uB,GACxC,IAAI20uB,EAAW99vB,KAEf,OAAOA,KAAKiwY,cAAc,SAAUl9Y,GAClCA,EAAIf,QAAQ,SAAUrM,EAAO6E,GAC3BuI,EAAIgB,IAAIvJ,EAAKyzwB,EAAO59vB,KAAK8oB,EAASxjC,EAAO6E,EAAKszwB,GAChD,EACF,EACF,EAIA9qwB,EAAIoN,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACpD,OAAO,IAAIuyvB,GAAYrjwB,KAAMgQ,EAAMc,EACrC,EAEA9d,EAAIoN,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAChD,IAAIgtvB,EAAW99vB,KAEXoqd,EAAa,EAMjB,OALApqd,KAAK22G,OACH32G,KAAK22G,MAAMyzH,QAAQ,SAAUx4L,GAE3B,OADAw4a,IACOt1d,EAAG88C,EAAM,GAAIA,EAAM,GAAIkstB,EAChC,EAAGhtvB,GACEs5c,CACT,EAEAp3d,EAAIoN,UAAUgwY,cAAgB,SAAwBa,GACpD,OAAIA,IAAYjxY,KAAKgwY,UACZhwY,KAEJixY,EAQE1gI,GAAQvwQ,KAAK+S,KAAM/S,KAAK22G,MAAOs6R,EAASjxY,KAAKuwY,QAPhC,IAAdvwY,KAAK+S,KACAgvvB,MAET/hwB,KAAKgwY,UAAYiB,EACjBjxY,KAAKqwY,WAAY,EACVrwY,KAGX,EAEOhN,CACT,CAvIuB,CAuIrB+mwB,GAEF/mwB,GAAIm2P,MAAQA,GAEZ,IAAIm6gB,GAAetwwB,GAAIoN,UACvBkjwB,GAAapH,KAAiB,EAC9BoH,GAAa9K,GAAU8K,GAAa1guB,OACpC0guB,GAAa7zf,UAAY6zf,GAAahzX,UACtCgzX,GAAa9yX,MAAQA,GACrB8yX,GAAa7yX,SAAW6yX,GAAa5yX,SAAWA,GAChD4yX,GAAaltwB,OAASA,GACtBktwB,GAAa3yX,SAAWA,GACxB2yX,GAAaxxvB,MAAQwxvB,GAAat1wB,OAASk0wB,GAC3CoB,GAAapqiB,UAAYkpiB,GACzBkB,GAAa1yX,UAAYA,GACzB0yX,GAAazyX,cAAgBA,GAC7ByyX,GAAaxyX,QAAUA,GACvBwyX,GAAavyX,YAAcA,GAC3BuyX,GAAarzX,cAAgBA,GAC7BqzX,GAAanzX,WAAaA,GAC1BmzX,GAAatyX,YAAcA,GAC3BsyX,GAAa,qBAAuBA,GAAapzX,UAAYA,GAC7DozX,GAAa,qBAAuB,SAAUnwwB,EAAQyjC,GACpD,OAAOzjC,EAAOY,IAAI6iC,EAAI,GAAIA,EAAI,GAChC,EACA0suB,GAAa,uBAAyB,SAAUhxvB,GAC9C,OAAOA,EAAI0+X,aACb,EAIA,IAAIuyX,GAAe,SAAsBtyX,EAAS/rV,GAChDllD,KAAKixY,QAAUA,EACfjxY,KAAKklD,QAAUA,CACjB,EAEAq+sB,GAAanjwB,UAAUvM,IAAM,SAAcq0C,EAAOgpW,EAAS1mZ,EAAKuxwB,GAE9D,IADA,IAAI72sB,EAAUllD,KAAKklD,QACVwxM,EAAK,EAAGjnQ,EAAMy1D,EAAQ9wD,OAAQsiQ,EAAKjnQ,EAAKinQ,IAC/C,GAAIzxI,GAAGz6H,EAAK06D,EAAQwxM,GAAI,IACtB,OAAOxxM,EAAQwxM,GAAI,GAGvB,OAAOqlgB,CACT,EAEAwH,GAAanjwB,UAAUhK,OAAS,SAAiB66Y,EAAS/oW,EAAOgpW,EAAS1mZ,EAAK7E,EAAO69wB,EAAeC,GAMnG,IALA,IAAIlztB,EAAU5qD,IAAUgzwB,EAEpBzzsB,EAAUllD,KAAKklD,QACf9yC,EAAM,EACN3iB,EAAMy1D,EAAQ9wD,OACXge,EAAM3iB,IACPw1H,GAAGz6H,EAAK06D,EAAQ9yC,GAAK,IADTA,KAKlB,IAAIwvT,EAASxvT,EAAM3iB,EAEnB,GAAImyU,EAAS18Q,EAAQ9yC,GAAK,KAAOzsB,EAAQ4qD,EACvC,OAAOvwC,KAMT,GAHA44vB,EAAO6K,IACNlztB,IAAYqxR,IAAWg3b,EAAO4K,IAE3BjztB,GAA8B,IAAnB2U,EAAQ9wD,OAAvB,CAIA,IAAKwtU,IAAWrxR,GAAW2U,EAAQ9wD,QAAUsvwB,GAC3C,OAueJ,SAAqBzyX,EAAS/rV,EAAS16D,EAAK7E,GACrCsrZ,IACHA,EAAU,IAAI4nX,GAGhB,IADA,IAAI9xwB,EAAO,IAAI48wB,GAAU1yX,EAAS3kZ,GAAK9B,GAAM,CAACA,EAAK7E,IAC1C+wQ,EAAK,EAAGA,EAAKxxM,EAAQ9wD,OAAQsiQ,IAAM,CAC1C,IAAI9kN,EAAQsT,EAAQwxM,GACpB3vQ,EAAOA,EAAKqP,OAAO66Y,EAAS,OAAGn6Y,EAAW86C,EAAM,GAAIA,EAAM,GAC5D,CACA,OAAO7qD,CACT,CAjfW68wB,CAAY3yX,EAAS/rV,EAAS16D,EAAK7E,GAG5C,IAAIk+wB,EAAa5yX,GAAWA,IAAYjxY,KAAKixY,QACzC6yX,EAAaD,EAAa3+sB,EAAU27sB,GAAQ37sB,GAchD,OAZI08Q,EACErxR,EACFn+B,IAAQ3iB,EAAM,EACVq0wB,EAAWzhwB,MACVyhwB,EAAW1xvB,GAAO0xvB,EAAWzhwB,MAElCyhwB,EAAW1xvB,GAAO,CAAC5nB,EAAK7E,GAG1Bm+wB,EAAWhwwB,KAAK,CAACtJ,EAAK7E,IAGpBk+wB,GACF7jwB,KAAKklD,QAAU4+sB,EACR9jwB,MAGF,IAAIujwB,GAAatyX,EAAS6yX,EA1BjC,CA2BF,EAEA,IAAIC,GAAoB,SAA2B9yX,EAAS53K,EAAQlxF,GAClEnoI,KAAKixY,QAAUA,EACfjxY,KAAKq5N,OAASA,EACdr5N,KAAKmoI,MAAQA,CACf,EAEA47nB,GAAkB3jwB,UAAUvM,IAAM,SAAcq0C,EAAOgpW,EAAS1mZ,EAAKuxwB,QACnDjlwB,IAAZo6Y,IACFA,EAAU5kZ,GAAK9B,IAEjB,IAAIw5wB,EAAM,KAAiB,IAAV97tB,EAAcgpW,EAAUA,IAAYhpW,GAASwwtB,GAC1Dr/hB,EAASr5N,KAAKq5N,OAClB,OAA0B,KAAlBA,EAAS2qiB,GACbjI,EACA/7vB,KAAKmoI,MAAM87nB,GAAS5qiB,EAAU2qiB,EAAM,IAAKnwwB,IACvCq0C,EAriFI,EAsiFJgpW,EACA1mZ,EACAuxwB,EAER,EAEAgI,GAAkB3jwB,UAAUhK,OAAS,SAAiB66Y,EAAS/oW,EAAOgpW,EAAS1mZ,EAAK7E,EAAO69wB,EAAeC,QACxF3swB,IAAZo6Y,IACFA,EAAU5kZ,GAAK9B,IAEjB,IAAI05wB,GAAyB,IAAVh8tB,EAAcgpW,EAAUA,IAAYhpW,GAASwwtB,EAC5DsL,EAAM,GAAKE,EACX7qiB,EAASr5N,KAAKq5N,OACduoG,EAA4B,KAAlBvoG,EAAS2qiB,GAEvB,IAAKpic,GAAUj8U,IAAUgzwB,EACvB,OAAO34vB,KAGT,IAAIoS,EAAM6xvB,GAAS5qiB,EAAU2qiB,EAAM,GAC/B77nB,EAAQnoI,KAAKmoI,MACbphJ,EAAO66U,EAASz5L,EAAM/1H,QAAOtb,EAC7B2qR,EAAUm5H,GACZ7zZ,EACAkqZ,EACA/oW,EA/jFQ,EAgkFRgpW,EACA1mZ,EACA7E,EACA69wB,EACAC,GAGF,GAAIhif,IAAY16R,EACd,OAAOiZ,KAGT,IAAK4hU,GAAUngD,GAAWt5I,EAAM/zI,QAAU+vwB,GACxC,OAibJ,SAAqBlzX,EAAS9oQ,EAAOkxF,EAAQ+qiB,EAAWr9wB,GAGtD,IAFA,IAAIixC,EAAQ,EACRqsuB,EAAgB,IAAI/vwB,MAAMmkwB,GACrB/hgB,EAAK,EAAc,IAAXr9B,EAAcq9B,IAAMr9B,KAAY,EAC/CgriB,EAAc3tgB,GAAe,EAATr9B,EAAalxF,EAAMnwG,UAAWlhC,EAGpD,OADAutwB,EAAcD,GAAar9wB,EACpB,IAAIu9wB,GAAiBrzX,EAASj5W,EAAQ,EAAGqsuB,EAClD,CAzbWE,CAAYtzX,EAAS9oQ,EAAOkxF,EAAQ6qiB,EAAazif,GAG1D,GACEmgD,IACCngD,GACgB,IAAjBt5I,EAAM/zI,QACNowwB,GAAWr8nB,EAAY,EAAN/1H,IAEjB,OAAO+1H,EAAY,EAAN/1H,GAGf,GAAIwvT,GAAUngD,GAA4B,IAAjBt5I,EAAM/zI,QAAgBowwB,GAAW/if,GACxD,OAAOA,EAGT,IAAIoif,EAAa5yX,GAAWA,IAAYjxY,KAAKixY,QACzCwzX,EAAY7ic,EAAUngD,EAAUpoD,EAASA,EAAS2qiB,EAAO3qiB,EAAS2qiB,EAClEU,EAAW9ic,EACXngD,EACEkjf,GAAMx8nB,EAAO/1H,EAAKqvQ,EAASoif,GAycnC,SAAmBxvvB,EAAOjC,EAAKwyvB,GAC7B,IAAIC,EAASxwvB,EAAMjgB,OAAS,EAC5B,GAAIwwwB,GAAWxyvB,IAAQyyvB,EAErB,OADAxwvB,EAAMhS,MACCgS,EAIT,IAFA,IAAIo4pB,EAAW,IAAIn4qB,MAAMuwwB,GACrB10rB,EAAQ,EACHumL,EAAK,EAAGA,EAAKmugB,EAAQnugB,IACxBA,IAAOtkP,IACT+9D,EAAQ,GAEVs8lB,EAAS/1a,GAAMriP,EAAMqiP,EAAKvmL,GAE5B,OAAOs8lB,CACT,CAvdQq4F,CAAU38nB,EAAO/1H,EAAKyxvB,GAqb9B,SAAkBxvvB,EAAOjC,EAAKuV,EAAKi9uB,GACjC,IAAIC,EAASxwvB,EAAMjgB,OAAS,EAC5B,GAAIwwwB,GAAWxyvB,EAAM,IAAMyyvB,EAEzB,OADAxwvB,EAAMjC,GAAOuV,EACNtT,EAIT,IAFA,IAAIo4pB,EAAW,IAAIn4qB,MAAMuwwB,GACrB10rB,EAAQ,EACHumL,EAAK,EAAGA,EAAKmugB,EAAQnugB,IACxBA,IAAOtkP,GACTq6pB,EAAS/1a,GAAM/uO,EACfwoD,GAAS,GAETs8lB,EAAS/1a,GAAMriP,EAAMqiP,EAAKvmL,GAG9B,OAAOs8lB,CACT,CArcMs4F,CAAS58nB,EAAO/1H,EAAKqvQ,EAASoif,GAElC,OAAIA,GACF7jwB,KAAKq5N,OAASoriB,EACdzkwB,KAAKmoI,MAAQu8nB,EACN1kwB,MAGF,IAAI+jwB,GAAkB9yX,EAASwzX,EAAWC,EACnD,EAEA,IAAIJ,GAAmB,SAA0BrzX,EAASj5W,EAAOmwG,GAC/DnoI,KAAKixY,QAAUA,EACfjxY,KAAKg4B,MAAQA,EACbh4B,KAAKmoI,MAAQA,CACf,EAEAm8nB,GAAiBlkwB,UAAUvM,IAAM,SAAcq0C,EAAOgpW,EAAS1mZ,EAAKuxwB,QAClDjlwB,IAAZo6Y,IACFA,EAAU5kZ,GAAK9B,IAEjB,IAAI4nB,GAAiB,IAAV81B,EAAcgpW,EAAUA,IAAYhpW,GAASwwtB,EACpD3xwB,EAAOiZ,KAAKmoI,MAAM/1H,GACtB,OAAOrrB,EACHA,EAAK8M,IAAIq0C,EA1nFH,EA0nFkBgpW,EAAS1mZ,EAAKuxwB,GACtCA,CACN,EAEAuI,GAAiBlkwB,UAAUhK,OAAS,SAAiB66Y,EAAS/oW,EAAOgpW,EAAS1mZ,EAAK7E,EAAO69wB,EAAeC,QACvF3swB,IAAZo6Y,IACFA,EAAU5kZ,GAAK9B,IAEjB,IAAI4nB,GAAiB,IAAV81B,EAAcgpW,EAAUA,IAAYhpW,GAASwwtB,EACpDnotB,EAAU5qD,IAAUgzwB,EACpBxwnB,EAAQnoI,KAAKmoI,MACbphJ,EAAOohJ,EAAM/1H,GAEjB,GAAIm+B,IAAYxpD,EACd,OAAOiZ,KAGT,IAAIyhR,EAAUm5H,GACZ7zZ,EACAkqZ,EACA/oW,EA9oFQ,EA+oFRgpW,EACA1mZ,EACA7E,EACA69wB,EACAC,GAEF,GAAIhif,IAAY16R,EACd,OAAOiZ,KAGT,IAAI8wC,EAAW9wC,KAAKg4B,MACpB,GAAKjxC,GAEE,IAAK06R,KACV3wO,EACek0tB,GACb,OAgVN,SAAmB/zX,EAAS9oQ,EAAOnwG,EAAOituB,GAIxC,IAHA,IAAI5riB,EAAS,EACT6riB,EAAW,EACXC,EAAc,IAAI7wwB,MAAM0jC,GACnB0+N,EAAK,EAAGstgB,EAAM,EAAGv0wB,EAAM04I,EAAM/zI,OAAQsiQ,EAAKjnQ,EAAKinQ,IAAMstgB,IAAQ,EAAG,CACvE,IAAIj9wB,EAAOohJ,EAAMuuH,QACJ5/P,IAAT/P,GAAsB2vQ,IAAOuugB,IAC/B5riB,GAAU2qiB,EACVmB,EAAYD,KAAcn+wB,EAE9B,CACA,OAAO,IAAIg9wB,GAAkB9yX,EAAS53K,EAAQ8riB,EAChD,CA5VaC,CAAUn0X,EAAS9oQ,EAAOr3F,EAAU1+B,QAJ7C0+B,IAQF,IAAI+ytB,EAAa5yX,GAAWA,IAAYjxY,KAAKixY,QACzCyzX,EAAWC,GAAMx8nB,EAAO/1H,EAAKqvQ,EAASoif,GAE1C,OAAIA,GACF7jwB,KAAKg4B,MAAQ8Y,EACb9wC,KAAKmoI,MAAQu8nB,EACN1kwB,MAGF,IAAIskwB,GAAiBrzX,EAASngW,EAAU4ztB,EACjD,EAEA,IAAIW,GAAoB,SAA2Bp0X,EAASC,EAAShsV,GACnEllD,KAAKixY,QAAUA,EACfjxY,KAAKkxY,QAAUA,EACflxY,KAAKklD,QAAUA,CACjB,EAEAmgtB,GAAkBjlwB,UAAUvM,IAAM,SAAcq0C,EAAOgpW,EAAS1mZ,EAAKuxwB,GAEnE,IADA,IAAI72sB,EAAUllD,KAAKklD,QACVwxM,EAAK,EAAGjnQ,EAAMy1D,EAAQ9wD,OAAQsiQ,EAAKjnQ,EAAKinQ,IAC/C,GAAIzxI,GAAGz6H,EAAK06D,EAAQwxM,GAAI,IACtB,OAAOxxM,EAAQwxM,GAAI,GAGvB,OAAOqlgB,CACT,EAEAsJ,GAAkBjlwB,UAAUhK,OAAS,SAAiB66Y,EAAS/oW,EAAOgpW,EAAS1mZ,EAAK7E,EAAO69wB,EAAeC,QACxF3swB,IAAZo6Y,IACFA,EAAU5kZ,GAAK9B,IAGjB,IAAI+lD,EAAU5qD,IAAUgzwB,EAExB,GAAIznX,IAAYlxY,KAAKkxY,QACnB,OAAI3gW,EACKvwC,MAET44vB,EAAO6K,GACP7K,EAAO4K,GACA8B,GAActlwB,KAAMixY,EAAS/oW,EAAOgpW,EAAS,CAAC1mZ,EAAK7E,KAM5D,IAHA,IAAIu/D,EAAUllD,KAAKklD,QACf9yC,EAAM,EACN3iB,EAAMy1D,EAAQ9wD,OACXge,EAAM3iB,IACPw1H,GAAGz6H,EAAK06D,EAAQ9yC,GAAK,IADTA,KAKlB,IAAIwvT,EAASxvT,EAAM3iB,EAEnB,GAAImyU,EAAS18Q,EAAQ9yC,GAAK,KAAOzsB,EAAQ4qD,EACvC,OAAOvwC,KAMT,GAHA44vB,EAAO6K,IACNlztB,IAAYqxR,IAAWg3b,EAAO4K,GAE3BjztB,GAAmB,IAAR9gD,EACb,OAAO,IAAIk0wB,GAAU1yX,EAASjxY,KAAKkxY,QAAShsV,EAAc,EAAN9yC,IAGtD,IAAIyxvB,EAAa5yX,GAAWA,IAAYjxY,KAAKixY,QACzC6yX,EAAaD,EAAa3+sB,EAAU27sB,GAAQ37sB,GAchD,OAZI08Q,EACErxR,EACFn+B,IAAQ3iB,EAAM,EACVq0wB,EAAWzhwB,MACVyhwB,EAAW1xvB,GAAO0xvB,EAAWzhwB,MAElCyhwB,EAAW1xvB,GAAO,CAAC5nB,EAAK7E,GAG1Bm+wB,EAAWhwwB,KAAK,CAACtJ,EAAK7E,IAGpBk+wB,GACF7jwB,KAAKklD,QAAU4+sB,EACR9jwB,MAGF,IAAIqlwB,GAAkBp0X,EAASjxY,KAAKkxY,QAAS4yX,EACtD,EAEA,IAAIH,GAAY,SAAmB1yX,EAASC,EAASt/V,GACnD5xC,KAAKixY,QAAUA,EACfjxY,KAAKkxY,QAAUA,EACflxY,KAAK4xC,MAAQA,CACf,EAEA+xtB,GAAUvjwB,UAAUvM,IAAM,SAAcq0C,EAAOgpW,EAAS1mZ,EAAKuxwB,GAC3D,OAAO92oB,GAAGz6H,EAAKwV,KAAK4xC,MAAM,IAAM5xC,KAAK4xC,MAAM,GAAKmqtB,CAClD,EAEA4H,GAAUvjwB,UAAUhK,OAAS,SAAiB66Y,EAAS/oW,EAAOgpW,EAAS1mZ,EAAK7E,EAAO69wB,EAAeC,GAChG,IAAIlztB,EAAU5qD,IAAUgzwB,EACpB4M,EAAWtgpB,GAAGz6H,EAAKwV,KAAK4xC,MAAM,IAClC,OAAI2ztB,EAAW5/wB,IAAUqa,KAAK4xC,MAAM,GAAKrB,GAChCvwC,MAGT44vB,EAAO6K,GAEHlztB,OACFqotB,EAAO4K,GAIL+B,EACEt0X,GAAWA,IAAYjxY,KAAKixY,SAC9BjxY,KAAK4xC,MAAM,GAAKjsD,EACTqa,MAEF,IAAI2jwB,GAAU1yX,EAASjxY,KAAKkxY,QAAS,CAAC1mZ,EAAK7E,KAGpDizwB,EAAO4K,GACA8B,GAActlwB,KAAMixY,EAAS/oW,EAAO57C,GAAK9B,GAAM,CAACA,EAAK7E,KAC9D,EAIA49wB,GAAanjwB,UAAUgqO,QAAUi7hB,GAAkBjlwB,UAAUgqO,QAC3D,SAAUt1O,EAAIgc,GAEZ,IADA,IAAIo0C,EAAUllD,KAAKklD,QACVwxM,EAAK,EAAG8ugB,EAAWtgtB,EAAQ9wD,OAAS,EAAGsiQ,GAAM8ugB,EAAU9ugB,IAC9D,IAAkD,IAA9C5hQ,EAAGowD,EAAQp0C,EAAU00vB,EAAW9ugB,EAAKA,IACvC,OAAO,CAGb,EAEFqtgB,GAAkB3jwB,UAAUgqO,QAAUk6hB,GAAiBlkwB,UAAUgqO,QAC/D,SAAUt1O,EAAIgc,GAEZ,IADA,IAAIq3H,EAAQnoI,KAAKmoI,MACRuuH,EAAK,EAAG8ugB,EAAWr9nB,EAAM/zI,OAAS,EAAGsiQ,GAAM8ugB,EAAU9ugB,IAAM,CAClE,IAAI3vQ,EAAOohJ,EAAMr3H,EAAU00vB,EAAW9ugB,EAAKA,GAC3C,GAAI3vQ,IAAsC,IAA9BA,EAAKqjP,QAAQt1O,EAAIgc,GAC3B,OAAO,CAEX,CACF,EAGF6yvB,GAAUvjwB,UAAUgqO,QAAU,SAAUt1O,EAAIgc,GAC1C,OAAOhc,EAAGkL,KAAK4xC,MACjB,EAEA,IAyEI6ztB,GAzEApC,GAA4B,SAAUtwX,GACxC,SAASswX,EAAYtwwB,EAAKid,EAAMc,GAC9B9Q,KAAK6oC,MAAQ74B,EACbhQ,KAAKmxY,SAAWrgY,EAChB9Q,KAAKq2B,OAAStjC,EAAI4jH,OAAS+upB,GAAiB3ywB,EAAI4jH,MAClD,CA2CA,OAzCKo8R,IAAWswX,EAAYnjwB,UAAY6yY,GACxCswX,EAAYjjwB,UAAYtW,OAAO4W,OAAQqyY,GAAYA,EAAS3yY,WAC5DijwB,EAAYjjwB,UAAUK,YAAc4iwB,EAEpCA,EAAYjjwB,UAAUtY,KAAO,WAG3B,IAFA,IAAIkoB,EAAOhQ,KAAK6oC,MACZtC,EAAQvmC,KAAKq2B,OACVkQ,GAAO,CACZ,IAAIx/C,EAAOw/C,EAAMx/C,KACbyP,EAAQ+vC,EAAM/vC,QACdgvwB,OAAW,EACf,GAAIz+wB,EAAK6qD,OACP,GAAc,IAAVp7C,EACF,OAAOmvwB,GAAiB31vB,EAAMjpB,EAAK6qD,YAEhC,GAAI7qD,EAAKm+D,SAEd,GAAI1uD,IADJgvwB,EAAWz+wB,EAAKm+D,QAAQ9wD,OAAS,GAE/B,OAAOuxwB,GACL31vB,EACAjpB,EAAKm+D,QAAQllD,KAAKmxY,SAAWq0X,EAAWhvwB,EAAQA,SAKpD,GAAIA,IADJgvwB,EAAWz+wB,EAAKohJ,MAAM/zI,OAAS,GACR,CACrB,IAAIwxwB,EAAU7+wB,EAAKohJ,MAAMnoI,KAAKmxY,SAAWq0X,EAAWhvwB,EAAQA,GAC5D,GAAIovwB,EAAS,CACX,GAAIA,EAAQh0tB,MACV,OAAO+ztB,GAAiB31vB,EAAM41vB,EAAQh0tB,OAExCrL,EAAQvmC,KAAKq2B,OAASqvuB,GAAiBE,EAASr/tB,EAClD,CACA,QACF,CAEFA,EAAQvmC,KAAKq2B,OAASr2B,KAAKq2B,OAAO+6W,MACpC,CACA,MAhpFK,CAAEzrZ,WAAOmR,EAAW0K,MAAM,EAipFjC,EAEO6hwB,CACT,CAjD+B,CAiD7BtwX,GAEF,SAAS4yX,GAAiB31vB,EAAM4hC,GAC9B,OAAOmptB,EAAc/qvB,EAAM4hC,EAAM,GAAIA,EAAM,GAC7C,CAEA,SAAS8ztB,GAAiB3+wB,EAAM8zC,GAC9B,MAAO,CACL9zC,KAAMA,EACNyP,MAAO,EACP46Y,OAAQv2W,EAEZ,CAEA,SAAS01O,GAAQx9P,EAAM2V,EAAMuoX,EAAS3kZ,GACpC,IAAIyG,EAAMjJ,OAAO4W,OAAO4iwB,IAMxB,OALAvwwB,EAAIggB,KAAOA,EACXhgB,EAAI4jH,MAAQjuF,EACZ31B,EAAIi9Y,UAAYiB,EAChBl+Y,EAAIw9Y,OAASjkZ,EACbyG,EAAIs9Y,WAAY,EACTt9Y,CACT,CAGA,SAASgvwB,KACP,OAAO0D,KAAcA,GAAYl1f,GAAQ,GAC3C,CAEA,SAAS6yf,GAAUrwwB,EAAK0e,EAAGtP,GACzB,IAAI0jwB,EACA3nsB,EACJ,GAAKnrE,EAAI4jH,MAMF,CACL,IAAI6spB,EAz4FC,CAAE79wB,OAAO,GA04FV89wB,EA14FC,CAAE99wB,OAAO,GAq5Fd,GAVAkgxB,EAAUjrX,GACR7nZ,EAAI4jH,MACJ5jH,EAAIi9Y,UACJ,OACAl5Y,EACA2a,EACAtP,EACAqhwB,EACAC,IAEGA,EAAS99wB,MACZ,OAAOoN,EAETmrE,EAAUnrE,EAAIggB,MAAQywvB,EAAc79wB,MAASwc,IAAMw2vB,GAAW,EAAI,EAAK,EACzE,KAvBgB,CACd,GAAIx2vB,IAAMw2vB,EACR,OAAO5lwB,EAETmrE,EAAU,EACV2nsB,EAAU,IAAItC,GAAaxwwB,EAAIi9Y,UAAW,CAAC,CAACv+X,EAAGtP,IACjD,CAkBA,OAAIpP,EAAIi9Y,WACNj9Y,EAAIggB,KAAOmrD,EACXnrE,EAAI4jH,MAAQkvpB,EACZ9ywB,EAAIw9Y,YAASz5Y,EACb/D,EAAIs9Y,WAAY,EACTt9Y,GAEF8ywB,EAAUt1f,GAAQryM,EAAS2nsB,GAAW9D,IAC/C,CAEA,SAASnnX,GACP7zZ,EACAkqZ,EACA/oW,EACAgpW,EACA1mZ,EACA7E,EACA69wB,EACAC,GAEA,OAAK18wB,EAQEA,EAAKqP,OACV66Y,EACA/oW,EACAgpW,EACA1mZ,EACA7E,EACA69wB,EACAC,GAdI99wB,IAAUgzwB,EACL5xwB,GAET6xwB,EAAO6K,GACP7K,EAAO4K,GACA,IAAIG,GAAU1yX,EAASC,EAAS,CAAC1mZ,EAAK7E,IAWjD,CAEA,SAAS6+wB,GAAWz9wB,GAClB,OACEA,EAAK0Z,cAAgBkjwB,IAAa58wB,EAAK0Z,cAAgB4kwB,EAE3D,CAEA,SAASC,GAAcv+wB,EAAMkqZ,EAAS/oW,EAAOgpW,EAASt/V,GACpD,GAAI7qD,EAAKmqZ,UAAYA,EACnB,OAAO,IAAIm0X,GAAkBp0X,EAASC,EAAS,CAACnqZ,EAAK6qD,MAAOA,IAG9D,IAGI6vO,EAHAqkf,GAAkB,IAAV59tB,EAAcnhD,EAAKmqZ,QAAUnqZ,EAAKmqZ,UAAYhpW,GAASwwtB,EAC/DqN,GAAkB,IAAV79tB,EAAcgpW,EAAUA,IAAYhpW,GAASwwtB,EAGrDvwnB,EACF29nB,IAASC,EACL,CAACT,GAAcv+wB,EAAMkqZ,EAAS/oW,EA59F1B,EA49FyCgpW,EAASt/V,KACpD6vO,EAAU,IAAIkif,GAAU1yX,EAASC,EAASt/V,GAC5Ck0tB,EAAOC,EAAO,CAACh/wB,EAAM06R,GAAW,CAACA,EAAS16R,IAEhD,OAAO,IAAIg9wB,GAAkB9yX,EAAU,GAAK60X,EAAS,GAAKC,EAAO59nB,EACnE,CAsCA,SAAS87nB,GAAS19wB,GAMhB,OAHAA,GADAA,GAAS,WADTA,GAAMA,GAAK,EAAK,cACSA,GAAK,EAAK,aACzBA,GAAK,GAAM,UAGV,KAFXA,GAAKA,GAAK,IACLA,GAAK,GAEZ,CAEA,SAASo+wB,GAAMtwvB,EAAOjC,EAAKuV,EAAKi9uB,GAC9B,IAAIn4F,EAAWm4F,EAAUvwvB,EAAQwsvB,GAAQxsvB,GAEzC,OADAo4pB,EAASr6pB,GAAOuV,EACT8kpB,CACT,CAsCA,IAAIi3F,GAAqBjL,EACrB0L,GAA0B1L,GAC1BuM,GAA0BvM,EAE1BuN,GAAiB,yBAErB,SAASv0X,GAAOw0X,GACd,OAAOh/qB,QAAQg/qB,GAAaA,EAAUD,IACxC,CAEA,IAAIrwX,GAAqB,SAAUskX,GACjC,SAAStkX,EAAKhwZ,GACZ,IAAIk0Q,EAAQqsgB,KACZ,GAAIvgxB,QACF,OAAOk0Q,EAET,GAAI43I,GAAO9rZ,GACT,OAAOA,EAET,IAAIwzH,EAAO8gpB,EAAkBt0wB,GACzBotB,EAAOomG,EAAKpmG,KAChB,OAAa,IAATA,EACK8mP,GAETkngB,GAAkBhuvB,GACdA,EAAO,GAAKA,EAAO0lvB,EACd0N,GAAS,EAAGpzvB,EAplGb,EAolG0B,KAAM,IAAIqzvB,GAAMjtpB,EAAK2qG,YAEhD+1C,EAAMo2I,cAAc,SAAUriZ,GACnCA,EAAKyjZ,QAAQt+X,GACbomG,EAAKnnH,QAAQ,SAAUmQ,EAAG9c,GAAK,OAAOuI,EAAKmG,IAAI1O,EAAG8c,EAAI,EACxD,GACF,CA+LA,OA7LK83vB,IAAoBtkX,EAAKz1Y,UAAY+5vB,GAC1CtkX,EAAKv1Y,UAAYtW,OAAO4W,OAAQu5vB,GAAqBA,EAAkB75vB,WACvEu1Y,EAAKv1Y,UAAUK,YAAck1Y,EAE7BA,EAAK3iJ,GAAK,WACR,OAAOhzP,KAAK7L,UACd,EAEAwhZ,EAAKv1Y,UAAUpZ,SAAW,WACxB,OAAOgZ,KAAK4uY,WAAW,SAAU,IACnC,EAIA+G,EAAKv1Y,UAAUvM,IAAM,SAAc2C,EAAOulwB,GAExC,IADAvlwB,EAAQwiwB,EAAUh5vB,KAAMxJ,KACX,GAAKA,EAAQwJ,KAAK+S,KAAM,CAEnC,IAAIhsB,EAAOs/wB,GAAYrmwB,KADvBxJ,GAASwJ,KAAKmgJ,SAEd,OAAOp5J,GAAQA,EAAKstB,MAAM7d,EAAQkiwB,EACpC,CACA,OAAOqD,CACT,EAIApmX,EAAKv1Y,UAAUrM,IAAM,SAAcyC,EAAO7Q,GACxC,OAiVJ,SAAoBiI,EAAM4I,EAAO7Q,GAG/B,IAFA6Q,EAAQwiwB,EAAUprwB,EAAM4I,KAEVA,EACZ,OAAO5I,EAGT,GAAI4I,GAAS5I,EAAKmlB,MAAQvc,EAAQ,EAChC,OAAO5I,EAAKqiZ,cAAc,SAAUriZ,GAClC4I,EAAQ,EACJ8vwB,GAAc14wB,EAAM4I,GAAOzC,IAAI,EAAGpO,GAClC2gxB,GAAc14wB,EAAM,EAAG4I,EAAQ,GAAGzC,IAAIyC,EAAO7Q,EACnD,GAGF6Q,GAAS5I,EAAKuyJ,QAEd,IAAIomnB,EAAU34wB,EAAK0jZ,MACfu0X,EAAUj4wB,EAAK+oH,MACf8spB,EAj9GG,CAAE99wB,OAAO,GA+9GhB,OAbI6Q,GAASgwwB,GAAc54wB,EAAK2jZ,WAC9Bg1X,EAAUE,GAAYF,EAAS34wB,EAAKoiZ,UAAW,EAAGx5Y,EAAO7Q,EAAO89wB,GAEhEoC,EAAUY,GACRZ,EACAj4wB,EAAKoiZ,UACLpiZ,EAAK4jZ,OACLh7Y,EACA7Q,EACA89wB,GAICA,EAAS99wB,MAIViI,EAAKoiZ,WACPpiZ,EAAK+oH,MAAQkvpB,EACbj4wB,EAAK0jZ,MAAQi1X,EACb34wB,EAAK2iZ,YAASz5Y,EACdlJ,EAAKyiZ,WAAY,EACVziZ,GAEFu4wB,GAASv4wB,EAAKuyJ,QAASvyJ,EAAK2jZ,UAAW3jZ,EAAK4jZ,OAAQq0X,EAASU,GAV3D34wB,CAWX,CA9XW84wB,CAAW1mwB,KAAMxJ,EAAO7Q,EACjC,EAEAgwZ,EAAKv1Y,UAAUwiC,OAAS,SAAiBpsC,GACvC,OAAQwJ,KAAKrM,IAAI6C,GAEH,IAAVA,EACAwJ,KAAKkoC,QACL1xC,IAAUwJ,KAAK+S,KAAO,EACtB/S,KAAKqC,MACLrC,KAAK+sB,OAAOv2B,EAAO,GALnBwJ,IAMN,EAEA21Y,EAAKv1Y,UAAU+wF,OAAS,SAAiB36F,EAAO7Q,GAC9C,OAAOqa,KAAK+sB,OAAOv2B,EAAO,EAAG7Q,EAC/B,EAEAgwZ,EAAKv1Y,UAAU26D,MAAQ,WACrB,OAAkB,IAAd/6D,KAAK+S,KACA/S,KAELA,KAAKgwY,WACPhwY,KAAK+S,KAAO/S,KAAKmgJ,QAAUngJ,KAAKuxY,UAAY,EAC5CvxY,KAAKwxY,OA9oGC,EA+oGNxxY,KAAK22G,MAAQ32G,KAAKsxY,MAAQtxY,KAAKuwY,YAASz5Y,EACxCkJ,KAAKqwY,WAAY,EACVrwY,MAEFkmwB,IACT,EAEAvwX,EAAKv1Y,UAAUtM,KAAO,WACpB,IAAI80B,EAASz0B,UACTwywB,EAAU3mwB,KAAK+S,KACnB,OAAO/S,KAAKiwY,cAAc,SAAUriZ,GAClC04wB,GAAc14wB,EAAM,EAAG+4wB,EAAU/9uB,EAAOx0B,QACxC,IAAK,IAAIsiQ,EAAK,EAAGA,EAAK9tO,EAAOx0B,OAAQsiQ,IACnC9oQ,EAAKmG,IAAI4ywB,EAAUjwgB,EAAI9tO,EAAO8tO,GAElC,EACF,EAEAi/I,EAAKv1Y,UAAUiC,IAAM,WACnB,OAAOikwB,GAActmwB,KAAM,GAAI,EACjC,EAEA21Y,EAAKv1Y,UAAU+2E,QAAU,WACvB,IAAIvuD,EAASz0B,UACb,OAAO6L,KAAKiwY,cAAc,SAAUriZ,GAClC04wB,GAAc14wB,GAAOg7B,EAAOx0B,QAC5B,IAAK,IAAIsiQ,EAAK,EAAGA,EAAK9tO,EAAOx0B,OAAQsiQ,IACnC9oQ,EAAKmG,IAAI2iQ,EAAI9tO,EAAO8tO,GAExB,EACF,EAEAi/I,EAAKv1Y,UAAU8nC,MAAQ,WACrB,OAAOo+tB,GAActmwB,KAAM,EAC7B,EAIA21Y,EAAKv1Y,UAAUpS,OAAS,WAItB,IAHA,IAAI44wB,EAAczywB,UAEd0ywB,EAAO,GACFxhxB,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CACzC,IAAIs8F,EAAWilrB,EAAYvhxB,GACvByjW,EAAMmxa,EACY,iBAAbt4qB,GAAyBu5qB,EAAYv5qB,GACxCA,EACA,CAACA,IAEU,IAAbmnQ,EAAI/1U,MACN8zvB,EAAK/ywB,KAAKg1V,EAEd,CACA,OAAoB,IAAhB+9a,EAAKzywB,OACA4L,KAES,IAAdA,KAAK+S,MAAe/S,KAAKgwY,WAA6B,IAAhB62X,EAAKzywB,OAGxC4L,KAAKiwY,cAAc,SAAUriZ,GAClCi5wB,EAAK70wB,QAAQ,SAAU82V,GAAO,OAAOA,EAAI92V,QAAQ,SAAUrM,GAAS,OAAOiI,EAAKkG,KAAKnO,EAAQ,EAAI,EACnG,GAJSqa,KAAKS,YAAYomwB,EAAK,GAKjC,EAEAlxX,EAAKv1Y,UAAUixY,QAAU,SAAkBt+X,GACzC,OAAOuzvB,GAActmwB,KAAM,EAAG+S,EAChC,EAEA4iY,EAAKv1Y,UAAUrN,IAAM,SAAckrwB,EAAQ90uB,GACzC,IAAI20uB,EAAW99vB,KAEf,OAAOA,KAAKiwY,cAAc,SAAUriZ,GAClC,IAAK,IAAIvI,EAAI,EAAGA,EAAIy4wB,EAAS/qvB,KAAM1tB,IACjCuI,EAAKmG,IAAI1O,EAAG44wB,EAAO59vB,KAAK8oB,EAASv7B,EAAKiG,IAAIxO,GAAIA,EAAGy4wB,GAErD,EACF,EAIAnoX,EAAKv1Y,UAAUtF,MAAQ,SAAgBi2P,EAAOrkQ,GAC5C,IAAIqmB,EAAO/S,KAAK+S,KAChB,OAAImmvB,EAAWnogB,EAAOrkQ,EAAKqmB,GAClB/S,KAEFsmwB,GACLtmwB,KACAo5vB,EAAarogB,EAAOh+O,GACpBumvB,EAAW5swB,EAAKqmB,GAEpB,EAEA4iY,EAAKv1Y,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACrD,IAAIta,EAAQsa,EAAU9Q,KAAK+S,KAAO,EAC9B6V,EAASk+uB,GAAY9mwB,KAAM8Q,GAC/B,OAAO,IAAIiiY,EAAS,WAClB,IAAIptZ,EAAQijC,IACZ,OAAOjjC,IAAUohxB,GAxhGd,CAAEphxB,WAAOmR,EAAW0K,MAAM,GA0hGzBu5vB,EAAc/qvB,EAAMc,IAAYta,EAAQA,IAAS7Q,EACvD,EACF,EAEAgwZ,EAAKv1Y,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAIjD,IAHA,IAEInrB,EAFA6Q,EAAQsa,EAAU9Q,KAAK+S,KAAO,EAC9B6V,EAASk+uB,GAAY9mwB,KAAM8Q,IAEvBnrB,EAAQijC,OAAcm+uB,KACyB,IAAjDjywB,EAAGnP,EAAOmrB,IAAYta,EAAQA,IAASwJ,QAI7C,OAAOxJ,CACT,EAEAm/Y,EAAKv1Y,UAAUgwY,cAAgB,SAAwBa,GACrD,OAAIA,IAAYjxY,KAAKgwY,UACZhwY,KAEJixY,EAQEk1X,GACLnmwB,KAAKmgJ,QACLngJ,KAAKuxY,UACLvxY,KAAKwxY,OACLxxY,KAAK22G,MACL32G,KAAKsxY,MACLL,EACAjxY,KAAKuwY,QAda,IAAdvwY,KAAK+S,KACAmzvB,MAETlmwB,KAAKgwY,UAAYiB,EACjBjxY,KAAKqwY,WAAY,EACVrwY,KAWX,EAEO21Y,CACT,CAtNwB,CAsNtBskX,GAEFtkX,GAAKlE,OAASA,GAEd,IAAIu1X,GAAgBrxX,GAAKv1Y,UACzB4mwB,GAAchB,KAAkB,EAChCgB,GAAcxO,GAAUwO,GAAcpkuB,OACtCokuB,GAAcl1vB,MAAQk1vB,GAAch5wB,OACpCg5wB,GAAcx2X,MAAQA,GACtBw2X,GAAct2X,SAAWs2X,GAAcv2X,SAAWC,GAClDs2X,GAAc5wwB,OAASA,GACvB4wwB,GAAcr2X,SAAWA,GACzBq2X,GAAcl2X,QAAUA,GACxBk2X,GAAcj2X,YAAcA,GAC5Bi2X,GAAc/2X,cAAgBA,GAC9B+2X,GAAc72X,WAAaA,GAC3B62X,GAAch2X,YAAcA,GAC5Bg2X,GAAc,qBAAuBA,GAAc92X,UAAYA,GAC/D82X,GAAc,qBAAuB,SAAU7zwB,EAAQyjC,GACrD,OAAOzjC,EAAOW,KAAK8iC,EACrB,EACAowuB,GAAc,uBAAyB,SAAU10vB,GAC/C,OAAOA,EAAI0+X,aACb,EAEA,IAAIo1X,GAAQ,SAAe/xvB,EAAO48X,GAChCjxY,KAAKqU,MAAQA,EACbrU,KAAKixY,QAAUA,CACjB,EAIAm1X,GAAMhmwB,UAAUsxY,aAAe,SAAuBT,EAASjnY,EAAOxT,GACpE,GAAIA,IAAUwT,EAAQ,GAAKA,EAA8B,IAAtBhK,KAAKqU,MAAMjgB,OAC5C,OAAO4L,KAET,IAAIinwB,EAAezwwB,IAAUwT,EAAS0uvB,EACtC,GAAIuO,GAAejnwB,KAAKqU,MAAMjgB,OAC5B,OAAO,IAAIgywB,GAAM,GAAIn1X,GAEvB,IACIi2X,EADAC,EAAgC,IAAhBF,EAEpB,GAAIj9vB,EAAQ,EAAG,CACb,IAAIo9vB,EAAWpnwB,KAAKqU,MAAM4yvB,GAG1B,IAFAC,EACEE,GAAYA,EAAS11X,aAAaT,EAASjnY,EAv0GrC,EAu0GoDxT,MAC3C4wwB,GAAYD,EAC3B,OAAOnnwB,IAEX,CACA,GAAImnwB,IAAkBD,EACpB,OAAOlnwB,KAET,IAAIoqL,EAAWi9kB,GAAcrnwB,KAAMixY,GACnC,IAAKk2X,EACH,IAAK,IAAIzwgB,EAAK,EAAGA,EAAKuwgB,EAAavwgB,IACjCtsE,EAAS/1K,MAAMqiP,QAAM5/P,EAMzB,OAHIowwB,IACF98kB,EAAS/1K,MAAM4yvB,GAAeC,GAEzB98kB,CACT,EAEAg8kB,GAAMhmwB,UAAUuxY,YAAc,SAAsBV,EAASjnY,EAAOxT,GAClE,GAAIA,KAAWwT,EAAQ,GAAKA,EAAQ,IAA4B,IAAtBhK,KAAKqU,MAAMjgB,OACnD,OAAO4L,KAET,IAKIknwB,EALAI,EAAc9wwB,EAAQ,IAAOwT,EAAS0uvB,EAC1C,GAAI4O,GAAatnwB,KAAKqU,MAAMjgB,OAC1B,OAAO4L,KAIT,GAAIgK,EAAQ,EAAG,CACb,IAAIo9vB,EAAWpnwB,KAAKqU,MAAMizvB,GAG1B,IAFAJ,EACEE,GAAYA,EAASz1X,YAAYV,EAASjnY,EAx2GpC,EAw2GmDxT,MAC1C4wwB,GAAYE,IAActnwB,KAAKqU,MAAMjgB,OAAS,EAC7D,OAAO4L,IAEX,CAEA,IAAIoqL,EAAWi9kB,GAAcrnwB,KAAMixY,GAKnC,OAJA7mN,EAAS/1K,MAAM0Y,OAAOu6uB,EAAY,GAC9BJ,IACF98kB,EAAS/1K,MAAMizvB,GAAaJ,GAEvB98kB,CACT,EAEA,IA6EIm9kB,GA7EAR,GAAO,CAAC,EAEZ,SAASD,GAAYl5wB,EAAMkjB,GACzB,IAAI3mB,EAAOyD,EAAKuyJ,QACZl2J,EAAQ2D,EAAK2jZ,UACb39R,EAAU4ypB,GAAcv8wB,GACxByqO,EAAO9mO,EAAK0jZ,MAEhB,OAEA,SAASk2X,EAAkBzgxB,EAAMijB,EAAOplB,GACtC,OAAiB,IAAVolB,EAKT,SAAqBjjB,EAAMnC,GACzB,IAAIyvB,EAAQzvB,IAAWgvH,EAAU8gH,GAAQA,EAAKrgN,MAAQttB,GAAQA,EAAKstB,MAC/DwQ,EAAOjgC,EAASuF,EAAO,EAAIA,EAAOvF,EAClCggC,EAAK36B,EAAQrF,EAIjB,OAHIggC,EAAK6zuB,IACP7zuB,EAAK6zuB,GAEA,WACL,GAAI5zuB,IAASD,EACX,OAAOmivB,GAET,IAAI30vB,EAAMtB,IAAY8T,EAAKC,IAC3B,OAAOxQ,GAASA,EAAMjC,EACxB,CACF,CAlBMq1vB,CAAY1gxB,EAAMnC,GAoBxB,SAAqBmC,EAAMijB,EAAOplB,GAChC,IAAIgkC,EACAvU,EAAQttB,GAAQA,EAAKstB,MACrBwQ,EAAOjgC,EAASuF,EAAO,EAAKA,EAAOvF,GAAWolB,EAC9C4a,EAAmC,GAA5B36B,EAAQrF,GAAWolB,GAI9B,OAHI4a,EAAK6zuB,IACP7zuB,EAAK6zuB,GAEA,WACL,OAAa,CACX,GAAI7vuB,EAAQ,CACV,IAAIjjC,EAAQijC,IACZ,GAAIjjC,IAAUohxB,GACZ,OAAOphxB,EAETijC,EAAS,IACX,CACA,GAAI/D,IAASD,EACX,OAAOmivB,GAET,IAAI30vB,EAAMtB,IAAY8T,EAAKC,IAC3B+D,EAAS4+uB,EACPnzvB,GAASA,EAAMjC,GACfpI,EA76GE,EA86GFplB,GAAUwtB,GAAOpI,GAErB,CACF,CACF,CA/CM09vB,CAAY3gxB,EAAMijB,EAAOplB,EAC/B,CANO4ixB,CAAkB55wB,EAAK+oH,MAAO/oH,EAAK4jZ,OAAQ,EAqDpD,CAEA,SAAS20X,GAASn4qB,EAAQ7P,EAAUn0E,EAAO0e,EAAMgsM,EAAMu8K,EAAS3kZ,GAC9D,IAAIsB,EAAO9D,OAAO4W,OAAOsmwB,IAUzB,OATAp5wB,EAAKmlB,KAAOorE,EAAW6P,EACvBpgG,EAAKuyJ,QAAUnyD,EACfpgG,EAAK2jZ,UAAYpzT,EACjBvwF,EAAK4jZ,OAASxnY,EACdpc,EAAK+oH,MAAQjuF,EACb96B,EAAK0jZ,MAAQ58K,EACb9mO,EAAKoiZ,UAAYiB,EACjBrjZ,EAAK2iZ,OAASjkZ,EACdsB,EAAKyiZ,WAAY,EACVziZ,CACT,CAGA,SAASs4wB,KACP,OAAOqB,KAAeA,GAAapB,GAAS,EAAG,EAr8GrC,GAs8GZ,CAiDA,SAASM,GAAY1/wB,EAAMkqZ,EAASjnY,EAAOxT,EAAO7Q,EAAO89wB,GACvD,IAMIhif,EANArvQ,EAAO5b,IAAUwT,EAAS0uvB,EAC1BiP,EAAU5gxB,GAAQqrB,EAAMrrB,EAAKstB,MAAMjgB,OACvC,IAAKuzwB,QAAqB7wwB,IAAVnR,EACd,OAAOoB,EAKT,GAAIijB,EAAQ,EAAG,CACb,IAAI49vB,EAAY7gxB,GAAQA,EAAKstB,MAAMjC,GAC/By1vB,EAAepB,GACjBmB,EACA32X,EACAjnY,EArgHM,EAsgHNxT,EACA7Q,EACA89wB,GAEF,OAAIoE,IAAiBD,EACZ7gxB,IAET06R,EAAU4lf,GAActgxB,EAAMkqZ,IACtB58X,MAAMjC,GAAOy1vB,EACdpmf,EACT,CAEA,OAAIkmf,GAAW5gxB,EAAKstB,MAAMjC,KAASzsB,EAC1BoB,GAGL08wB,GACF7K,EAAO6K,GAGThif,EAAU4lf,GAActgxB,EAAMkqZ,QAChBn6Y,IAAVnR,GAAuBysB,IAAQqvQ,EAAQptQ,MAAMjgB,OAAS,EACxDqtR,EAAQptQ,MAAMhS,MAEdo/Q,EAAQptQ,MAAMjC,GAAOzsB,EAEhB87R,EACT,CAEA,SAAS4lf,GAActgxB,EAAMkqZ,GAC3B,OAAIA,GAAWlqZ,GAAQkqZ,IAAYlqZ,EAAKkqZ,QAC/BlqZ,EAEF,IAAIq/wB,GAAMr/wB,EAAOA,EAAKstB,MAAMvZ,QAAU,GAAIm2Y,EACnD,CAEA,SAASo1X,GAAYz4wB,EAAMozrB,GACzB,GAAIA,GAAYwlF,GAAc54wB,EAAK2jZ,WACjC,OAAO3jZ,EAAK0jZ,MAEd,GAAI0vS,EAAW,GAAMpzrB,EAAK4jZ,OA9iHhB,EA8iHiC,CAGzC,IAFA,IAAIzqZ,EAAO6G,EAAK+oH,MACZ3sG,EAAQpc,EAAK4jZ,OACVzqZ,GAAQijB,EAAQ,GACrBjjB,EAAOA,EAAKstB,MAAO2sqB,IAAah3qB,EAAS0uvB,GACzC1uvB,GAnjHM,EAqjHR,OAAOjjB,CACT,CACF,CAEA,SAASu/wB,GAAc14wB,EAAMmjQ,EAAOrkQ,QAGpBoK,IAAVi6P,IACFA,GAAS,QAECj6P,IAARpK,IACFA,GAAO,GAET,IAAIo7wB,EAAQl6wB,EAAKoiZ,WAAa,IAAI6oX,EAC9BkP,EAAYn6wB,EAAKuyJ,QACjB6nnB,EAAcp6wB,EAAK2jZ,UACnB02X,EAAYF,EAAYh3gB,EACxBm3gB,OACMpxwB,IAARpK,EACIs7wB,EACAt7wB,EAAM,EACNs7wB,EAAct7wB,EACdq7wB,EAAYr7wB,EAClB,GAAIu7wB,IAAcF,GAAaG,IAAgBF,EAC7C,OAAOp6wB,EAIT,GAAIq6wB,GAAaC,EACf,OAAOt6wB,EAAKmtE,QAQd,IALA,IAAIotsB,EAAWv6wB,EAAK4jZ,OAChBq0X,EAAUj4wB,EAAK+oH,MAGfyxpB,EAAc,EACXH,EAAYG,EAAc,GAC/BvC,EAAU,IAAIO,GACZP,GAAWA,EAAQxxvB,MAAMjgB,OAAS,MAAC0C,EAAW+uwB,GAAW,GACzDiC,GAGFM,GAAe,IADfD,GA/lHQ,GAkmHNC,IACFH,GAAaG,EACbL,GAAaK,EACbF,GAAeE,EACfJ,GAAeI,GAOjB,IAJA,IAAIC,EAAgB7B,GAAcwB,GAC9BM,EAAgB9B,GAAc0B,GAG3BI,GAAiB,GAAMH,EA7mHpB,GA8mHRtC,EAAU,IAAIO,GACZP,GAAWA,EAAQxxvB,MAAMjgB,OAAS,CAACyxwB,GAAW,GAC9CiC,GAEFK,GAlnHQ,EAsnHV,IAAII,EAAU36wB,EAAK0jZ,MACfi1X,EACF+B,EAAgBD,EACZhC,GAAYz4wB,EAAMs6wB,EAAc,GAChCI,EAAgBD,EAChB,IAAIjC,GAAM,GAAI0B,GACdS,EAGN,GACEA,GACAD,EAAgBD,GAChBJ,EAAYD,GACZO,EAAQl0vB,MAAMjgB,OACd,CAGA,IADA,IAAIrN,EADJ8+wB,EAAUwB,GAAcxB,EAASiC,GAExB99vB,EAAQm+vB,EAAUn+vB,EAvoHnB,EAuoHkCA,GAvoHlC,EAuoHkD,CACxD,IAAIoI,EAAOi2vB,IAAkBr+vB,EAAS0uvB,EACtC3xwB,EAAOA,EAAKstB,MAAMjC,GAAOi1vB,GAActgxB,EAAKstB,MAAMjC,GAAM01vB,EAC1D,CACA/gxB,EAAKstB,MAAOg0vB,IA3oHJ,EA2oH+B3P,GAAQ6P,CACjD,CAQA,GALIL,EAAcF,IAChBzB,EAAUA,GAAWA,EAAQ50X,YAAYm2X,EAAO,EAAGI,IAIjDD,GAAaK,EACfL,GAAaK,EACbJ,GAAeI,EACfH,EAvpHQ,EAwpHRtC,EAAU,KACVU,EAAUA,GAAWA,EAAQ70X,aAAao2X,EAAO,EAAGG,QAG/C,GAAIA,EAAYF,GAAaO,EAAgBD,EAAe,CAIjE,IAHAD,EAAc,EAGPvC,GAAS,CACd,IAAI2C,EAAcP,IAAcE,EAAYzP,EAC5C,GAAK8P,IAAeF,IAAkBH,EAAYzP,EAChD,MAEE8P,IACFJ,IAAgB,GAAKD,GAAYK,GAEnCL,GAxqHM,EAyqHNtC,EAAUA,EAAQxxvB,MAAMm0vB,EAC1B,CAGI3C,GAAWoC,EAAYF,IACzBlC,EAAUA,EAAQn0X,aAAao2X,EAAOK,EAAUF,EAAYG,IAE1DvC,GAAWyC,EAAgBD,IAC7BxC,EAAUA,EAAQl0X,YAChBm2X,EACAK,EACAG,EAAgBF,IAGhBA,IACFH,GAAaG,EACbF,GAAeE,EAEnB,CAEA,OAAIx6wB,EAAKoiZ,WACPpiZ,EAAKmlB,KAAOm1vB,EAAcD,EAC1Br6wB,EAAKuyJ,QAAU8nnB,EACfr6wB,EAAK2jZ,UAAY22X,EACjBt6wB,EAAK4jZ,OAAS22X,EACdv6wB,EAAK+oH,MAAQkvpB,EACbj4wB,EAAK0jZ,MAAQi1X,EACb34wB,EAAK2iZ,YAASz5Y,EACdlJ,EAAKyiZ,WAAY,EACVziZ,GAEFu4wB,GAAS8B,EAAWC,EAAaC,EAAUtC,EAASU,EAC7D,CAEA,SAASC,GAAczzvB,GACrB,OAAOA,EAAO0lvB,EAAO,EAAM1lvB,EAAO,IA5sHxB,IA6sHZ,CAEA,IA2GI01vB,GA3GA/yX,GAA2B,SAAU1iZ,GACvC,SAAS0iZ,EAAW/vZ,GAClB,OAAOA,QACH+ixB,KACA32X,GAAapsZ,GACbA,EACA+ixB,KAAkBz4X,cAAc,SAAUl9Y,GACxC,IAAIomH,EAAO4gpB,EAAgBp0wB,GAC3Bo7wB,GAAkB5npB,EAAKpmG,MACvBomG,EAAKnnH,QAAQ,SAAUmQ,EAAGsP,GAAK,OAAO1e,EAAIgB,IAAI0d,EAAGtP,EAAI,EACvD,EACN,CA6EA,OA3EKnP,IAAM0iZ,EAAWx1Y,UAAYlN,GAClC0iZ,EAAWt1Y,UAAYtW,OAAO4W,OAAQ1N,GAAOA,EAAIoN,WACjDs1Y,EAAWt1Y,UAAUK,YAAci1Y,EAEnCA,EAAW1iJ,GAAK,WACd,OAAOhzP,KAAK7L,UACd,EAEAuhZ,EAAWt1Y,UAAUpZ,SAAW,WAC9B,OAAOgZ,KAAK4uY,WAAW,eAAgB,IACzC,EAIA8G,EAAWt1Y,UAAUvM,IAAM,SAAc4d,EAAGsqvB,GAC1C,IAAIvlwB,EAAQwJ,KAAK4xY,KAAK/9Y,IAAI4d,GAC1B,YAAiB3a,IAAVN,EAAsBwJ,KAAK6xY,MAAMh+Y,IAAI2C,GAAO,GAAKulwB,CAC1D,EAIArmX,EAAWt1Y,UAAU26D,MAAQ,WAC3B,OAAkB,IAAd/6D,KAAK+S,KACA/S,KAELA,KAAKgwY,WACPhwY,KAAK+S,KAAO,EACZ/S,KAAK4xY,KAAK72U,QACV/6D,KAAK6xY,MAAM92U,QACX/6D,KAAKqwY,WAAY,EACVrwY,MAEF0owB,IACT,EAEAhzX,EAAWt1Y,UAAUrM,IAAM,SAAc0d,EAAGtP,GAC1C,OAAOwmwB,GAAiB3owB,KAAMyR,EAAGtP,EACnC,EAEAuzY,EAAWt1Y,UAAUwiC,OAAS,SAAiBnxB,GAC7C,OAAOk3vB,GAAiB3owB,KAAMyR,EAAGknvB,EACnC,EAEAjjX,EAAWt1Y,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GACvD,IAAIgtvB,EAAW99vB,KAEf,OAAOA,KAAK6xY,MAAMzD,UAChB,SAAUx8V,GAAS,OAAOA,GAAS98C,EAAG88C,EAAM,GAAIA,EAAM,GAAIkstB,EAAW,EACrEhtvB,EAEJ,EAEA4kY,EAAWt1Y,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GAC3D,OAAO9Q,KAAK6xY,MAAM1C,eAAeH,WAAWh/X,EAAMc,EACpD,EAEA4kY,EAAWt1Y,UAAUgwY,cAAgB,SAAwBa,GAC3D,GAAIA,IAAYjxY,KAAKgwY,UACnB,OAAOhwY,KAET,IAAI4owB,EAAS5owB,KAAK4xY,KAAKxB,cAAca,GACjCtnR,EAAU3pH,KAAK6xY,MAAMzB,cAAca,GACvC,OAAKA,EAUE43X,GAAeD,EAAQj/oB,EAASsnR,EAASjxY,KAAKuwY,QATjC,IAAdvwY,KAAK+S,KACA21vB,MAET1owB,KAAKgwY,UAAYiB,EACjBjxY,KAAKqwY,WAAY,EACjBrwY,KAAK4xY,KAAOg3X,EACZ5owB,KAAK6xY,MAAQloR,EACN3pH,KAGX,EAEO01Y,CACT,CAzF8B,CAyF5B1iZ,IAOF,SAAS61wB,GAAe91wB,EAAKnF,EAAMqjZ,EAAS3kZ,GAC1C,IAAIw8wB,EAAOh/wB,OAAO4W,OAAOg1Y,GAAWt1Y,WAOpC,OANA0owB,EAAK/1vB,KAAOhgB,EAAMA,EAAIggB,KAAO,EAC7B+1vB,EAAKl3X,KAAO7+Y,EACZ+1wB,EAAKj3X,MAAQjkZ,EACbk7wB,EAAK94X,UAAYiB,EACjB63X,EAAKv4X,OAASjkZ,EACdw8wB,EAAKz4X,WAAY,EACVy4X,CACT,CAGA,SAASJ,KACP,OACED,KACCA,GAAoBI,GAAe9G,KAAYmE,MAEpD,CAEA,SAASyC,GAAiBG,EAAMr3vB,EAAGtP,GACjC,IAIIymwB,EACAj/oB,EALA52H,EAAM+1wB,EAAKl3X,KACXhkZ,EAAOk7wB,EAAKj3X,MACZxsZ,EAAI0N,EAAIc,IAAI4d,GACZ9d,OAAYmD,IAANzR,EAGV,GAAI8c,IAAMw2vB,EAAS,CAEjB,IAAKhlwB,EACH,OAAOm1wB,EAELl7wB,EAAKmlB,MAAQ0lvB,GAAQ7qwB,EAAKmlB,MAAmB,EAAXhgB,EAAIggB,MAExC61vB,GADAj/oB,EAAU/7H,EAAKqD,OAAO,SAAU2gD,EAAOx/B,GAAO,YAAiBtb,IAAV86C,GAAuBvsD,IAAM+sB,CAAK,IAEpF88X,aACAn8Y,IAAI,SAAU6+C,GAAS,OAAOA,EAAM,EAAI,GACxCviB,OACAyiX,QACCg3X,EAAK94X,YACP44X,EAAO54X,UAAYrmR,EAAQqmR,UAAY84X,EAAK94X,aAG9C44X,EAAS71wB,EAAI6vC,OAAOnxB,GACpBk4G,EAAUtkI,IAAMuI,EAAKmlB,KAAO,EAAInlB,EAAKyU,MAAQzU,EAAKmG,IAAI1O,OAAGyR,GAE7D,MAAO,GAAInD,EAAK,CACd,GAAIwO,IAAMvU,EAAKiG,IAAIxO,GAAG,GACpB,OAAOyjxB,EAETF,EAAS71wB,EACT42H,EAAU/7H,EAAKmG,IAAI1O,EAAG,CAACosB,EAAGtP,GAC5B,MACEymwB,EAAS71wB,EAAIgB,IAAI0d,EAAG7jB,EAAKmlB,MACzB42G,EAAU/7H,EAAKmG,IAAInG,EAAKmlB,KAAM,CAACtB,EAAGtP,IAEpC,OAAI2mwB,EAAK94X,WACP84X,EAAK/1vB,KAAO61vB,EAAO71vB,KACnB+1vB,EAAKl3X,KAAOg3X,EACZE,EAAKj3X,MAAQloR,EACbm/oB,EAAKv4X,YAASz5Y,EACdgywB,EAAKz4X,WAAY,EACVy4X,GAEFD,GAAeD,EAAQj/oB,EAChC,CArEA+rR,GAAW3D,aAAeA,GAE1B2D,GAAWt1Y,UAAUs6vB,IAAqB,EAC1ChlX,GAAWt1Y,UAAUo4vB,GAAU9iX,GAAWt1Y,UAAUwiC,OAoEpD,IAAImmuB,GAAkB,0BAEtB,SAAS72X,GAAQ82X,GACf,OAAO/hrB,QAAQ+hrB,GAAcA,EAAWD,IAC1C,CAEA,IAAIzghB,GAAsB,SAAU2xgB,GAClC,SAAS3xgB,EAAM3iQ,GACb,OAAOA,QACHsjxB,KACA/2X,GAAQvsZ,GACRA,EACAsjxB,KAAaj3X,QAAQrsZ,EAC3B,CAqLA,OAnLKs0wB,IAAoB3xgB,EAAMpoP,UAAY+5vB,GAC3C3xgB,EAAMloP,UAAYtW,OAAO4W,OAAQu5vB,GAAqBA,EAAkB75vB,WACxEkoP,EAAMloP,UAAUK,YAAc6nP,EAE9BA,EAAM0K,GAAK,WACT,OAAOhzP,KAAK7L,UACd,EAEAm0P,EAAMloP,UAAUpZ,SAAW,WACzB,OAAOgZ,KAAK4uY,WAAW,UAAW,IACpC,EAIAtmJ,EAAMloP,UAAUvM,IAAM,SAAc2C,EAAOulwB,GACzC,IAAIlotB,EAAO7zC,KAAKiyY,MAEhB,IADAz7Y,EAAQwiwB,EAAUh5vB,KAAMxJ,GACjBq9C,GAAQr9C,KACbq9C,EAAOA,EAAK/rD,KAEd,OAAO+rD,EAAOA,EAAKluD,MAAQo2wB,CAC7B,EAEAzzgB,EAAMloP,UAAUuzR,KAAO,WACrB,OAAO3zR,KAAKiyY,OAASjyY,KAAKiyY,MAAMtsZ,KAClC,EAIA2iQ,EAAMloP,UAAUtM,KAAO,WACrB,IAAI8ywB,EAAczywB,UAElB,GAAyB,IAArBA,UAAUC,OACZ,OAAO4L,KAIT,IAFA,IAAIk+D,EAAUl+D,KAAK+S,KAAO5e,UAAUC,OAChCy/C,EAAO7zC,KAAKiyY,MACPv7I,EAAKviQ,UAAUC,OAAS,EAAGsiQ,GAAM,EAAGA,IAC3C7iN,EAAO,CACLluD,MAAOihxB,EAAYlwgB,GACnB5uQ,KAAM+rD,GAGV,OAAI7zC,KAAKgwY,WACPhwY,KAAK+S,KAAOmrD,EACZl+D,KAAKiyY,MAAQp+V,EACb7zC,KAAKuwY,YAASz5Y,EACdkJ,KAAKqwY,WAAY,EACVrwY,MAEFkpwB,GAAUhrsB,EAASrqB,EAC5B,EAEAy0M,EAAMloP,UAAU4xY,QAAU,SAAkB74R,GAE1C,GAAkB,KADlBA,EAAO8gpB,EAAkB9gpB,IAChBpmG,KACP,OAAO/S,KAET,GAAkB,IAAdA,KAAK+S,MAAcm/X,GAAQ/4R,GAC7B,OAAOA,EAET4npB,GAAkB5npB,EAAKpmG,MACvB,IAAImrD,EAAUl+D,KAAK+S,KACf8gC,EAAO7zC,KAAKiyY,MAQhB,OAPA94R,EAAKi1R,UAAU,SAAUzoZ,GACvBu4E,IACArqB,EAAO,CACLluD,MAAOA,EACPmC,KAAM+rD,EAEV,GAAiB,GACb7zC,KAAKgwY,WACPhwY,KAAK+S,KAAOmrD,EACZl+D,KAAKiyY,MAAQp+V,EACb7zC,KAAKuwY,YAASz5Y,EACdkJ,KAAKqwY,WAAY,EACVrwY,MAEFkpwB,GAAUhrsB,EAASrqB,EAC5B,EAEAy0M,EAAMloP,UAAUiC,IAAM,WACpB,OAAOrC,KAAKlF,MAAM,EACpB,EAEAwtP,EAAMloP,UAAU26D,MAAQ,WACtB,OAAkB,IAAd/6D,KAAK+S,KACA/S,KAELA,KAAKgwY,WACPhwY,KAAK+S,KAAO,EACZ/S,KAAKiyY,WAAQn7Y,EACbkJ,KAAKuwY,YAASz5Y,EACdkJ,KAAKqwY,WAAY,EACVrwY,MAEFipwB,IACT,EAEA3ghB,EAAMloP,UAAUtF,MAAQ,SAAgBi2P,EAAOrkQ,GAC7C,GAAIwswB,EAAWnogB,EAAOrkQ,EAAKsT,KAAK+S,MAC9B,OAAO/S,KAET,IAAIg/vB,EAAgB5F,EAAarogB,EAAO/wP,KAAK+S,MAE7C,GADkBumvB,EAAW5swB,EAAKsT,KAAK+S,QACnB/S,KAAK+S,KAEvB,OAAOknvB,EAAkB75vB,UAAUtF,MAAMuF,KAAKL,KAAM+wP,EAAOrkQ,GAI7D,IAFA,IAAIwxE,EAAUl+D,KAAK+S,KAAOisvB,EACtBnrtB,EAAO7zC,KAAKiyY,MACT+sX,KACLnrtB,EAAOA,EAAK/rD,KAEd,OAAIkY,KAAKgwY,WACPhwY,KAAK+S,KAAOmrD,EACZl+D,KAAKiyY,MAAQp+V,EACb7zC,KAAKuwY,YAASz5Y,EACdkJ,KAAKqwY,WAAY,EACVrwY,MAEFkpwB,GAAUhrsB,EAASrqB,EAC5B,EAIAy0M,EAAMloP,UAAUgwY,cAAgB,SAAwBa,GACtD,OAAIA,IAAYjxY,KAAKgwY,UACZhwY,KAEJixY,EAQEi4X,GAAUlpwB,KAAK+S,KAAM/S,KAAKiyY,MAAOhB,EAASjxY,KAAKuwY,QAPlC,IAAdvwY,KAAK+S,KACAk2vB,MAETjpwB,KAAKgwY,UAAYiB,EACjBjxY,KAAKqwY,WAAY,EACVrwY,KAGX,EAIAsoP,EAAMloP,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAClD,IAAIgtvB,EAAW99vB,KAEf,GAAI8Q,EACF,OAAO,IAAIgrvB,EAAS97vB,KAAK8jN,WAAWsqL,UAClC,SAAUjsY,EAAGsP,GAAK,OAAO3c,EAAGqN,EAAGsP,EAAGqsvB,EAAW,EAC7ChtvB,GAKJ,IAFA,IAAIs5c,EAAa,EACbrje,EAAOiZ,KAAKiyY,MACTlrZ,IACsC,IAAvC+N,EAAG/N,EAAKpB,MAAOyke,IAAcpqd,OAGjCjZ,EAAOA,EAAKe,KAEd,OAAOsie,CACT,EAEA9hO,EAAMloP,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACtD,GAAIA,EACF,OAAO,IAAIgrvB,EAAS97vB,KAAK8jN,WAAWkrL,WAAWh/X,EAAMc,GAEvD,IAAIs5c,EAAa,EACbrje,EAAOiZ,KAAKiyY,MAChB,OAAO,IAAIc,EAAS,WAClB,GAAIhsZ,EAAM,CACR,IAAIpB,EAAQoB,EAAKpB,MAEjB,OADAoB,EAAOA,EAAKe,KACLizwB,EAAc/qvB,EAAMo6c,IAAczke,EAC3C,CACA,MAv1HG,CAAEA,WAAOmR,EAAW0K,MAAM,EAw1H/B,EACF,EAEO8mP,CACT,CA7LyB,CA6LvB2xgB,GAEF3xgB,GAAM4pJ,QAAUA,GAEhB,IA0BIi3X,GA1BAC,GAAiB9ghB,GAAMloP,UAgB3B,SAAS8owB,GAAUn2vB,EAAM8gC,EAAMo9V,EAAS3kZ,GACtC,IAAIyG,EAAMjJ,OAAO4W,OAAO0owB,IAMxB,OALAr2wB,EAAIggB,KAAOA,EACXhgB,EAAIk/Y,MAAQp+V,EACZ9gD,EAAIi9Y,UAAYiB,EAChBl+Y,EAAIw9Y,OAASjkZ,EACbyG,EAAIs9Y,WAAY,EACTt9Y,CACT,CAGA,SAASk2wB,KACP,OAAOE,KAAgBA,GAAcD,GAAU,GACjD,CA5BAE,GAAeL,KAAmB,EAClCK,GAAelhuB,MAAQkhuB,GAAe/mwB,IACtC+mwB,GAAejyrB,QAAUiyrB,GAAet1wB,KACxCs1wB,GAAej3X,WAAai3X,GAAep3X,QAC3Co3X,GAAen5X,cAAgBA,GAC/Bm5X,GAAej5X,WAAaA,GAC5Bi5X,GAAep4X,YAAcA,GAC7Bo4X,GAAe,qBAAuBA,GAAel5X,UAAYA,GACjEk5X,GAAe,qBAAuB,SAAUj2wB,EAAQyjC,GACtD,OAAOzjC,EAAOgkF,QAAQvgD,EACxB,EACAwyuB,GAAe,uBAAyB,SAAU92vB,GAChD,OAAOA,EAAI0+X,aACb,EAiBA,IAAIq4X,GAAgB,wBAEpB,SAASjxoB,GAAMkxoB,GACb,OAAOrirB,QAAQqirB,GAAYA,EAASD,IACtC,CAEA,SAASp0X,GAAas0X,GACpB,OAAOnxoB,GAAMmxoB,IAAoBz2X,EAAUy2X,EAC7C,CAEA,SAASx/iB,GAAUnwN,EAAGC,GACpB,GAAID,IAAMC,EACR,OAAO,EAGT,IACGm8Y,EAAan8Y,SACF/C,IAAX8C,EAAEmZ,WAAiCjc,IAAX+C,EAAEkZ,MAAsBnZ,EAAEmZ,OAASlZ,EAAEkZ,WAChDjc,IAAb8C,EAAE22Y,aACYz5Y,IAAb+C,EAAE02Y,QACF32Y,EAAE22Y,SAAW12Y,EAAE02Y,QACjBoC,EAAQ/4Y,KAAO+4Y,EAAQ94Y,IACvB+4Y,EAAUh5Y,KAAOg5Y,EAAU/4Y,IAC3Bi5Y,EAAUl5Y,KAAOk5Y,EAAUj5Y,GAE3B,OAAO,EAGT,GAAe,IAAXD,EAAEmZ,MAAyB,IAAXlZ,EAAEkZ,KACpB,OAAO,EAGT,IAAIy2vB,GAAkB32X,EAAcj5Y,GAEpC,GAAIk5Y,EAAUl5Y,GAAI,CAChB,IAAIsrD,EAAUtrD,EAAEsrD,UAChB,OACErrD,EAAEW,MAAM,SAAU2H,EAAGsP,GACnB,IAAImgC,EAAQsT,EAAQp9D,OAAOnC,MAC3B,OAAOisD,GAASqzE,GAAGrzE,EAAM,GAAIzvC,KAAOqnwB,GAAkBvkpB,GAAGrzE,EAAM,GAAIngC,GACrE,IAAMyzC,EAAQp9D,OAAO0Z,IAEzB,CAEA,IAAIiowB,GAAU,EAEd,QAAe3ywB,IAAX8C,EAAEmZ,KACJ,QAAejc,IAAX+C,EAAEkZ,KACyB,mBAAlBnZ,EAAEi1Y,aACXj1Y,EAAEi1Y,kBAEC,CACL46X,GAAU,EACV,IAAI7nwB,EAAIhI,EACRA,EAAIC,EACJA,EAAI+H,CACN,CAGF,IAAI8nwB,GAAW,EACXC,EAAQ9vwB,EAAEu0Y,UAAU,SAAUjsY,EAAGsP,GACnC,GACE+3vB,GACK5vwB,EAAEjG,IAAIwO,GACPsnwB,GACCxkpB,GAAG9iH,EAAGvI,EAAE/F,IAAI4d,EAAGknvB,KACf1zoB,GAAGrrH,EAAE/F,IAAI4d,EAAGknvB,GAAUx2vB,GAG3B,OADAunwB,GAAW,GACJ,CAEX,GAEA,OAAOA,GAAY9vwB,EAAEmZ,OAAS42vB,CAChC,CAEA,SAAS5kjB,GAAMkiB,EAAM3oB,GACnB,IAAIsrjB,EAAY,SAAUp/wB,GACxBy8O,EAAK7mO,UAAU5V,GAAO8zN,EAAQ9zN,EAChC,EAIA,OAHAV,OAAOO,KAAKi0N,GAAStsN,QAAQ43wB,GAC7B9/wB,OAAOo4F,uBACLp4F,OAAOo4F,sBAAsBo8H,GAAStsN,QAAQ43wB,GACzC3iiB,CACT,CAEA,SAAS+rK,GAAKrtZ,GACZ,IAAKA,GAA0B,iBAAVA,EACnB,OAAOA,EAET,IAAKqwZ,EAAarwZ,GAAQ,CACxB,IAAKw7wB,GAAgBx7wB,GACnB,OAAOA,EAETA,EAAQ8vZ,EAAI9vZ,EACd,CACA,GAAIgtZ,EAAQhtZ,GAAQ,CAClB,IAAIkkxB,EAAW,CAAC,EAIhB,OAHAlkxB,EAAMyoZ,UAAU,SAAUjsY,EAAGsP,GAC3Bo4vB,EAASp4vB,GAAKuhY,GAAK7wY,EACrB,GACO0nwB,CACT,CACA,IAAI12wB,EAAS,GAIb,OAHAxN,EAAMyoZ,UAAU,SAAUjsY,GACxBhP,EAAOW,KAAKk/Y,GAAK7wY,GACnB,GACOhP,CACT,CAEA,IAAID,GAAoB,SAAUinwB,GAChC,SAASjnwB,EAAIvN,GACX,OAAOA,QACHmkxB,KACA1xoB,GAAMzyI,KAAWmtZ,EAAUntZ,GAC3BA,EACAmkxB,KAAW75X,cAAc,SAAUl8Y,GACjC,IAAIolH,EAAOghpB,EAAcx0wB,GACzBo7wB,GAAkB5npB,EAAKpmG,MACvBomG,EAAKnnH,QAAQ,SAAUmQ,GAAK,OAAOpO,EAAIT,IAAI6O,EAAI,EACjD,EACN,CAsLA,OApLKg4vB,IAAgBjnwB,EAAIgN,UAAYi6vB,GACrCjnwB,EAAIkN,UAAYtW,OAAO4W,OAAQy5vB,GAAiBA,EAAc/5vB,WAC9DlN,EAAIkN,UAAUK,YAAcvN,EAE5BA,EAAI8/P,GAAK,WACP,OAAOhzP,KAAK7L,UACd,EAEAjB,EAAIk/Y,SAAW,SAAmBzsZ,GAChC,OAAOqa,KAAK+5vB,EAAgBp0wB,GAAO0sZ,SACrC,EAEAn/Y,EAAIk3B,UAAY,SAAoB05F,GAElC,OADAA,EAAOyxR,EAAWzxR,GAAMggG,WACZ1vN,OACR21wB,GAAa3/uB,UAAUtpB,MAAM5N,EAAI4wH,EAAKzhH,OAAQyhH,GAC9CgmpB,IACN,EAEA52wB,EAAIo/Y,MAAQ,SAAgBxuR,GAE1B,OADAA,EAAOyxR,EAAWzxR,GAAMggG,WACZ1vN,OACR21wB,GAAaz3X,MAAMxxY,MAAM5N,EAAI4wH,EAAKzhH,OAAQyhH,GAC1CgmpB,IACN,EAEA52wB,EAAIkN,UAAUpZ,SAAW,WACvB,OAAOgZ,KAAK4uY,WAAW,QAAS,IAClC,EAIA17Y,EAAIkN,UAAUzM,IAAM,SAAchO,GAChC,OAAOqa,KAAK4xY,KAAKj+Y,IAAIhO,EACvB,EAIAuN,EAAIkN,UAAU9M,IAAM,SAAc3N,GAChC,OAAOqkxB,GAAUhqwB,KAAMA,KAAK4xY,KAAK79Y,IAAIpO,EAAOA,GAC9C,EAEAuN,EAAIkN,UAAUwiC,OAAS,SAAiBj9C,GACtC,OAAOqkxB,GAAUhqwB,KAAMA,KAAK4xY,KAAKhvW,OAAOj9C,GAC1C,EAEAuN,EAAIkN,UAAU26D,MAAQ,WACpB,OAAOivsB,GAAUhqwB,KAAMA,KAAK4xY,KAAK72U,QACnC,EAIA7nE,EAAIkN,UAAUrN,IAAM,SAAckrwB,EAAQ90uB,GACxC,IAAI20uB,EAAW99vB,KAGXiqwB,GAAa,EAEbrB,EAASoB,GACXhqwB,KACAA,KAAK4xY,KAAK+C,WAAW,SAAU9hS,GAC7B,IAAI1wG,EAAI0wG,EAAI,GAER05G,EAAS0xiB,EAAO59vB,KAAK8oB,EAAShnB,EAAGA,EAAG27vB,GAMxC,OAJIvxiB,IAAWpqN,IACb8nwB,GAAa,GAGR,CAAC19iB,EAAQA,EAClB,EAAGpjM,IAGL,OAAO8gvB,EAAarB,EAAS5owB,IAC/B,EAEA9M,EAAIkN,UAAUkyY,MAAQ,WAEpB,IADA,IAAIguX,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OACxB3E,KAAQ6wwB,EAAO7wwB,GAAQ0E,UAAW1E,GAG1C,OAAqB,KADrB6wwB,EAAQA,EAAMrvwB,OAAO,SAAU1K,GAAK,OAAkB,IAAXA,EAAEwsB,IAAY,IAC/C3e,OACD4L,KAES,IAAdA,KAAK+S,MAAe/S,KAAKgwY,WAA8B,IAAjBswX,EAAMlswB,OAGzC4L,KAAKiwY,cAAc,SAAUl8Y,GAClC,IAAK,IAAI2iQ,EAAK,EAAGA,EAAK4pgB,EAAMlswB,OAAQsiQ,IACT,iBAAd4pgB,EAAM5pgB,GACf3iQ,EAAIT,IAAIgtwB,EAAM5pgB,IAEdyjgB,EAAcmG,EAAM5pgB,IAAK1kQ,QAAQ,SAAUrM,GAAS,OAAOoO,EAAIT,IAAI3N,EAAQ,EAGjF,GAVSqa,KAAKS,YAAY6/vB,EAAM,GAWlC,EAEAptwB,EAAIkN,UAAUgqB,UAAY,WAExB,IADA,IAAIk2uB,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OACxB3E,KAAQ6wwB,EAAO7wwB,GAAQ0E,UAAW1E,GAE1C,GAAqB,IAAjB6wwB,EAAMlswB,OACR,OAAO4L,KAETsgwB,EAAQA,EAAMvtwB,IAAI,SAAUomH,GAAQ,OAAOghpB,EAAchhpB,EAAO,GAChE,IAAIqxJ,EAAW,GAMf,OALAxqQ,KAAKhO,QAAQ,SAAUrM,GAChB26wB,EAAM9lwB,MAAM,SAAU2+G,GAAQ,OAAOA,EAAKxjF,SAAShwC,EAAQ,IAC9D6kR,EAAS12Q,KAAKnO,EAElB,GACOqa,KAAKiwY,cAAc,SAAUl8Y,GAClCy2Q,EAASx4Q,QAAQ,SAAUrM,GACzBoO,EAAI6uC,OAAOj9C,EACb,EACF,EACF,EAEAuN,EAAIkN,UAAUq3V,SAAW,WAEvB,IADA,IAAI6oa,EAAQ,GAAI7wwB,EAAM0E,UAAUC,OACxB3E,KAAQ6wwB,EAAO7wwB,GAAQ0E,UAAW1E,GAE1C,GAAqB,IAAjB6wwB,EAAMlswB,OACR,OAAO4L,KAETsgwB,EAAQA,EAAMvtwB,IAAI,SAAUomH,GAAQ,OAAOghpB,EAAchhpB,EAAO,GAChE,IAAIqxJ,EAAW,GAMf,OALAxqQ,KAAKhO,QAAQ,SAAUrM,GACjB26wB,EAAMhuwB,KAAK,SAAU6mH,GAAQ,OAAOA,EAAKxjF,SAAShwC,EAAQ,IAC5D6kR,EAAS12Q,KAAKnO,EAElB,GACOqa,KAAKiwY,cAAc,SAAUl8Y,GAClCy2Q,EAASx4Q,QAAQ,SAAUrM,GACzBoO,EAAI6uC,OAAOj9C,EACb,EACF,EACF,EAEAuN,EAAIkN,UAAUhN,KAAO,SAAeorP,GAElC,OAAOo3J,GAAWiqX,GAAY7/vB,KAAMw+O,GACtC,EAEAtrP,EAAIkN,UAAU6jN,OAAS,SAAiBg6iB,EAAQz/gB,GAE9C,OAAOo3J,GAAWiqX,GAAY7/vB,KAAMw+O,EAAYy/gB,GAClD,EAEA/qwB,EAAIkN,UAAU+vY,WAAa,WACzB,OAAOnwY,KAAK4xY,KAAKzB,YACnB,EAEAj9Y,EAAIkN,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAChD,IAAIgtvB,EAAW99vB,KAEf,OAAOA,KAAK4xY,KAAKxD,UAAU,SAAU38X,GAAK,OAAO3c,EAAG2c,EAAGA,EAAGqsvB,EAAW,EAAGhtvB,EAC1E,EAEA5d,EAAIkN,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACpD,OAAO9Q,KAAK4xY,KAAK5C,WAAWh/X,EAAMc,EACpC,EAEA5d,EAAIkN,UAAUgwY,cAAgB,SAAwBa,GACpD,GAAIA,IAAYjxY,KAAKgwY,UACnB,OAAOhwY,KAET,IAAI4owB,EAAS5owB,KAAK4xY,KAAKxB,cAAca,GACrC,OAAKA,EAQEjxY,KAAKuyY,OAAOq2X,EAAQ33X,GAPP,IAAdjxY,KAAK+S,KACA/S,KAAKwyY,WAEdxyY,KAAKgwY,UAAYiB,EACjBjxY,KAAK4xY,KAAOg3X,EACL5owB,KAGX,EAEO9M,CACT,CAlMuB,CAkMrBinwB,GAEFjnwB,GAAIklI,MAAQA,GAEZ,IAsCI8xoB,GAtCAH,GAAe72wB,GAAIkN,UAiBvB,SAAS4pwB,GAAUj2wB,EAAK60wB,GACtB,OAAI70wB,EAAIi8Y,WACNj8Y,EAAIgf,KAAO61vB,EAAO71vB,KAClBhf,EAAI69Y,KAAOg3X,EACJ70wB,GAEF60wB,IAAW70wB,EAAI69Y,KAClB79Y,EACgB,IAAhB60wB,EAAO71vB,KACPhf,EAAIy+Y,UACJz+Y,EAAIw+Y,OAAOq2X,EACjB,CAEA,SAAStosB,GAAQvtE,EAAKk+Y,GACpB,IAAIl9Y,EAAMjK,OAAO4W,OAAOqpwB,IAIxB,OAHAh2wB,EAAIgf,KAAOhgB,EAAMA,EAAIggB,KAAO,EAC5Bhf,EAAI69Y,KAAO7+Y,EACXgB,EAAIi8Y,UAAYiB,EACTl9Y,CACT,CAGA,SAAS+1wB,KACP,OAAOI,KAAcA,GAAY5psB,GAAQyhsB,MAC3C,CAxCAgI,GAAaV,KAAiB,EAC9BU,GAAavR,GAAUuR,GAAannuB,OACpCmnuB,GAAaj4vB,MAAQi4vB,GAAa/7wB,OAAS+7wB,GAAaz3X,MACxDy3X,GAAa95X,cAAgBA,GAC7B85X,GAAa/4X,YAAcA,GAC3B+4X,GAAa,qBAAuBA,GAAa75X,UAAYA,GAC7D65X,GAAa,qBAAuB,SAAU52wB,EAAQyjC,GACpD,OAAOzjC,EAAOG,IAAIsjC,EACpB,EACAmzuB,GAAa,uBAAyB,SAAUz3vB,GAC9C,OAAOA,EAAI0+X,aACb,EAEA+4X,GAAav3X,QAAUs3X,GACvBC,GAAax3X,OAASjyU,GAiCtB,IAkII6psB,GAlIA7wlB,GAAsB,SAAU4glB,GAClC,SAAS5glB,EAAM7sL,EAAOC,EAAK4U,GACzB,KAAMtB,gBAAgBs5K,GACpB,OAAO,IAAIA,EAAM7sL,EAAOC,EAAK4U,GAe/B,GAbA+wqB,GAAmB,IAAT/wqB,EAAY,4BACtB7U,EAAQA,GAAS,OACLqK,IAARpK,IACFA,EAAMnH,KAER+b,OAAgBxK,IAATwK,EAAqB,EAAI9b,KAAKM,IAAIwb,GACrC5U,EAAMD,IACR6U,GAAQA,GAEVtB,KAAKwjC,OAAS/2C,EACduT,KAAKguN,KAAOthO,EACZsT,KAAKyyY,MAAQnxY,EACbtB,KAAK+S,KAAOvtB,KAAKmE,IAAI,EAAGnE,KAAKsjE,MAAMp8D,EAAMD,GAAS6U,EAAO,GAAK,GAC5C,IAAdtB,KAAK+S,KAAY,CACnB,GAAIo3vB,GACF,OAAOA,GAETA,GAAcnqwB,IAChB,CACF,CAuGA,OArGKk6vB,IAAa5glB,EAAMp5K,UAAYg6vB,GACpC5glB,EAAMl5K,UAAYtW,OAAO4W,OAAQw5vB,GAAcA,EAAW95vB,WAC1Dk5K,EAAMl5K,UAAUK,YAAc64K,EAE9BA,EAAMl5K,UAAUpZ,SAAW,WACzB,OAAkB,IAAdgZ,KAAK+S,KACA,WAGP,WACA/S,KAAKwjC,OACL,MACAxjC,KAAKguN,MACW,IAAfhuN,KAAKyyY,MAAc,OAASzyY,KAAKyyY,MAAQ,IAC1C,IAEJ,EAEAn5N,EAAMl5K,UAAUvM,IAAM,SAAc2C,EAAOulwB,GACzC,OAAO/7vB,KAAKrM,IAAI6C,GACZwJ,KAAKwjC,OAASw1tB,EAAUh5vB,KAAMxJ,GAASwJ,KAAKyyY,MAC5CspX,CACN,EAEAzilB,EAAMl5K,UAAUu1B,SAAW,SAAmBwre,GAC5C,IAAIipQ,GAAiBjpQ,EAAcnhgB,KAAKwjC,QAAUxjC,KAAKyyY,MACvD,OACE23X,GAAiB,GACjBA,EAAgBpqwB,KAAK+S,MACrBq3vB,IAAkB5kxB,KAAKQ,MAAMokxB,EAEjC,EAEA9wlB,EAAMl5K,UAAUtF,MAAQ,SAAgBi2P,EAAOrkQ,GAC7C,OAAIwswB,EAAWnogB,EAAOrkQ,EAAKsT,KAAK+S,MACvB/S,MAET+wP,EAAQqogB,EAAarogB,EAAO/wP,KAAK+S,OACjCrmB,EAAM4swB,EAAW5swB,EAAKsT,KAAK+S,QAChBg+O,EACF,IAAIz3E,EAAM,EAAG,GAEf,IAAIA,EACTt5K,KAAKnM,IAAIk9P,EAAO/wP,KAAKguN,MACrBhuN,KAAKnM,IAAInH,EAAKsT,KAAKguN,MACnBhuN,KAAKyyY,OAET,EAEAn5N,EAAMl5K,UAAU7X,QAAU,SAAkB44gB,GAC1C,IAAIkpQ,EAAclpQ,EAAcnhgB,KAAKwjC,OACrC,GAAI6muB,EAAcrqwB,KAAKyyY,QAAU,EAAG,CAClC,IAAIj8Y,EAAQ6zwB,EAAcrqwB,KAAKyyY,MAC/B,GAAIj8Y,GAAS,GAAKA,EAAQwJ,KAAK+S,KAC7B,OAAOvc,CAEX,CACA,OAAQ,CACV,EAEA8iL,EAAMl5K,UAAUi3E,YAAc,SAAsB8pb,GAClD,OAAOnhgB,KAAKzX,QAAQ44gB,EACtB,EAEA7nV,EAAMl5K,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAKlD,IAJA,IAAIiC,EAAO/S,KAAK+S,KACZzR,EAAOtB,KAAKyyY,MACZ9sZ,EAAQmrB,EAAU9Q,KAAKwjC,QAAUzwB,EAAO,GAAKzR,EAAOtB,KAAKwjC,OACzDn+C,EAAI,EACDA,IAAM0tB,IACyC,IAAhDje,EAAGnP,EAAOmrB,EAAUiC,IAAS1tB,EAAIA,IAAK2a,OAG1Cra,GAASmrB,GAAWxP,EAAOA,EAE7B,OAAOjc,CACT,EAEAi0L,EAAMl5K,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACtD,IAAIiC,EAAO/S,KAAK+S,KACZzR,EAAOtB,KAAKyyY,MACZ9sZ,EAAQmrB,EAAU9Q,KAAKwjC,QAAUzwB,EAAO,GAAKzR,EAAOtB,KAAKwjC,OACzDn+C,EAAI,EACR,OAAO,IAAI0tZ,EAAS,WAClB,GAAI1tZ,IAAM0tB,EACR,MAl1IC,CAAEptB,WAAOmR,EAAW0K,MAAM,GAo1I7B,IAAIW,EAAIxc,EAER,OADAA,GAASmrB,GAAWxP,EAAOA,EACpBy5vB,EAAc/qvB,EAAMc,EAAUiC,IAAS1tB,EAAIA,IAAK8c,EACzD,EACF,EAEAm3K,EAAMl5K,UAAU2nN,OAAS,SAAiBlnK,GACxC,OAAOA,aAAiBy4H,EACpBt5K,KAAKwjC,SAAWqd,EAAMrd,QACpBxjC,KAAKguN,OAASntK,EAAMmtK,MACpBhuN,KAAKyyY,QAAU5xV,EAAM4xV,MACvB1oL,GAAU/pN,KAAM6gD,EACtB,EAEOy4H,CACT,CAhIyB,CAgIvB4glB,GAIF,SAASoQ,GAAQrtjB,EAAYstjB,EAAexO,GAG1C,IAFA,IAAIluB,EAAUmzB,GAAcuJ,GACxBllxB,EAAI,EACDA,IAAMwovB,EAAQz5uB,QAEnB,IADA6oN,EAAappN,GAAIopN,EAAY4whB,EAAQxovB,KAAMszwB,MACxBA,EACjB,OAAOoD,EAGX,OAAO9+iB,CACT,CAEA,SAAS42L,GAAM02X,EAAexO,GAC5B,OAAOuO,GAAQtqwB,KAAMuqwB,EAAexO,EACtC,CAEA,SAASyO,GAAQvtjB,EAAY4whB,GAC3B,OAAOy8B,GAAQrtjB,EAAY4whB,EAAS8qB,KAAaA,CACnD,CAMA,SAAStlpB,KACP0tpB,GAAkB/gwB,KAAK+S,MACvB,IAAIu4B,EAAS,CAAC,EAId,OAHAtrC,KAAKouY,UAAU,SAAUjsY,EAAGsP,GAC1B65B,EAAO75B,GAAKtP,CACd,GACOmpC,CACT,CAGAiqW,EAAW7C,WAAasD,EACxBT,EAAW5C,QAAUA,EACrB4C,EAAW3C,UAAYA,EACvB2C,EAAW1C,cAAgBA,EAC3B0C,EAAWzC,UAAYA,EAEvByC,EAAWxC,SAAWA,EAEtBhuL,GAAMwwL,EAAY,CAGhBzxL,QAAS,WACPi9iB,GAAkB/gwB,KAAK+S,MACvB,IAAIsB,EAAQ,IAAI/f,MAAM0L,KAAK+S,MAAQ,GAC/B03vB,EAAY93X,EAAQ3yY,MACpB3a,EAAI,EAKR,OAJA2a,KAAKouY,UAAU,SAAUjsY,EAAGsP,GAE1B4C,EAAMhvB,KAAOolxB,EAAY,CAACh5vB,EAAGtP,GAAKA,CACpC,GACOkS,CACT,EAEA+6X,aAAc,WACZ,OAAO,IAAIgvX,GAAkBp+vB,KAC/B,EAEAgzY,KAAM,WACJ,OAAOA,GAAKhzY,KACd,EAEAkvY,WAAY,WACV,OAAO,IAAI0uX,GAAgB59vB,MAAM,EACnC,EAEA8xY,MAAO,WAEL,OAAO9+Y,GAAIgN,KAAKkvY,aAClB,EAEA77R,SAAUA,GAEV4/R,aAAc,WAEZ,OAAOyC,GAAW11Y,KAAKkvY,aACzB,EAEAgE,aAAc,WAEZ,OAAO0C,GAAWjD,EAAQ3yY,MAAQA,KAAK+vY,WAAa/vY,KACtD,EAEAmzY,MAAO,WAEL,OAAOjgZ,GAAIy/Y,EAAQ3yY,MAAQA,KAAK+vY,WAAa/vY,KAC/C,EAEAqvY,SAAU,WACR,OAAO,IAAIgvX,GAAcr+vB,KAC3B,EAEA2uY,MAAO,WACL,OAAOiE,EAAU5yY,MACbA,KAAKovY,eACLuD,EAAQ3yY,MACRA,KAAKkvY,aACLlvY,KAAKqvY,UACX,EAEA+D,QAAS,WAEP,OAAO9qJ,GAAMqqJ,EAAQ3yY,MAAQA,KAAK+vY,WAAa/vY,KACjD,EAEAqzY,OAAQ,WAEN,OAAOsC,GAAKhD,EAAQ3yY,MAAQA,KAAK+vY,WAAa/vY,KAChD,EAIAhZ,SAAU,WACR,MAAO,cACT,EAEA4nZ,WAAY,SAAoB/6V,EAAM6gL,GACpC,OAAkB,IAAd10N,KAAK+S,KACA8gC,EAAO6gL,EAGd7gL,EACA,IACA7zC,KAAK2uY,QAAQ57Y,IAAIiN,KAAKszY,kBAAkBp1Y,KAAK,MAC7C,IACAw2N,CAEJ,EAIA1mO,OAAQ,WAEN,IADA,IAAI46B,EAAS,GAAIn5B,EAAM0E,UAAUC,OACzB3E,KAAQm5B,EAAQn5B,GAAQ0E,UAAW1E,GAE3C,OAAOkxwB,GAAM3gwB,KAhpGjB,SAAuBi9M,EAAYr0L,GACjC,IAAIm3uB,EAAoBptX,EAAQ11L,GAC5BqjjB,EAAQ,CAACrjjB,GACVjvN,OAAO46B,GACP71B,IAAI,SAAUoP,GAQb,OAPK6zY,EAAa7zY,GAIP49vB,IACT59vB,EAAI43vB,EAAgB53vB,IAJpBA,EAAI49vB,EACAnE,GAAkBz5vB,GAClB05vB,GAAoBvnwB,MAAMyb,QAAQ5N,GAAKA,EAAI,CAACA,IAI3CA,CACT,GACClR,OAAO,SAAUkR,GAAK,OAAkB,IAAXA,EAAE4Q,IAAY,GAE9C,GAAqB,IAAjButvB,EAAMlswB,OACR,OAAO6oN,EAGT,GAAqB,IAAjBqjjB,EAAMlswB,OAAc,CACtB,IAAIwzH,EAAY04oB,EAAM,GACtB,GACE14oB,IAAcq1F,GACb8ijB,GAAqBptX,EAAQ/qR,IAC7BgrR,EAAU31L,IAAe21L,EAAUhrR,GAEpC,OAAOA,CAEX,CAEA,IAAI8ipB,EAAY,IAAI5O,EAASwE,GAe7B,OAdIP,EACF2K,EAAYA,EAAUx7X,aACZ0D,EAAU31L,KACpBytjB,EAAYA,EAAUr7X,aAExBq7X,EAAYA,EAAU5wqB,SAAQ,IACpB/mF,KAAOutvB,EAAMh2wB,OAAO,SAAU4wG,EAAK4tP,GAC3C,QAAYhyV,IAARokG,EAAmB,CACrB,IAAInoF,EAAO+1U,EAAI/1U,KACf,QAAajc,IAATic,EACF,OAAOmoF,EAAMnoF,CAEjB,CACF,EAAG,GACI23vB,CACT,CAimGuBC,CAAc3qwB,KAAM4oB,GACzC,EAEA+M,SAAU,SAAkBwre,GAC1B,OAAOnhgB,KAAK1N,KAAK,SAAU3M,GAAS,OAAOs/H,GAAGt/H,EAAOw7gB,EAAc,EACrE,EAEAj8c,QAAS,WACP,OAAOllD,KAAKgvY,WA/hJM,EAgiJpB,EAEAx0Y,MAAO,SAAew5G,EAAW7qF,GAC/B43uB,GAAkB/gwB,KAAK+S,MACvB,IAAIk/E,GAAc,EAOlB,OANAjyF,KAAKouY,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GAC7B,IAAKouH,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,GAEjC,OADAqsG,GAAc,GACP,CAEX,GACOA,CACT,EAEAhhG,OAAQ,SAAgB+iH,EAAW7qF,GACjC,OAAOw3uB,GAAM3gwB,KAAM6+vB,GAAc7+vB,KAAMg0G,EAAW7qF,GAAS,GAC7D,EAEAg7L,UAAW,SAAmBnwG,EAAW7qF,GACvC,OA33GJ,SAA0B8zL,EAAYjpG,EAAW7qF,GAC/C,IAAIyhvB,EAAcj4X,EAAQ11L,GACtB4uF,EAAS,CAAC,GAAI,IAClB5uF,EAAWmxL,UAAU,SAAUjsY,EAAGsP,GAChCo6R,EAAO73L,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAGwrM,GAAc,EAAI,GAAGnpN,KACxD82wB,EAAc,CAACn5vB,EAAGtP,GAAKA,EAE3B,GACA,IAAI0owB,EAASjK,GAAgB3jjB,GAC7B,OAAO4uF,EAAO94S,IAAI,SAAU6jC,GAAO,OAAO+puB,GAAM1jjB,EAAY4tjB,EAAOj0uB,GAAO,EAC5E,CAi3GWk0uB,CAAiB9qwB,KAAMg0G,EAAW7qF,EAC3C,EAEAtuB,KAAM,SAAcm5G,EAAW7qF,EAAS4yuB,GACtC,IAAInqtB,EAAQ5xC,KAAKuzY,UAAUv/R,EAAW7qF,GACtC,OAAOyoB,EAAQA,EAAM,GAAKmqtB,CAC5B,EAEA/pwB,QAAS,SAAiB+4wB,EAAY5hvB,GAEpC,OADA43uB,GAAkB/gwB,KAAK+S,MAChB/S,KAAKouY,UAAUjlX,EAAU4hvB,EAAWrvtB,KAAKvyB,GAAW4hvB,EAC7D,EAEA7swB,KAAM,SAAcsxP,GAClBuxgB,GAAkB/gwB,KAAK+S,MACvBy8O,OAA0B14P,IAAd04P,EAA0B,GAAKA,EAAY,IACvD,IAAIw7gB,EAAS,GACTnnI,GAAU,EAKd,OAJA7joB,KAAKouY,UAAU,SAAUjsY,GACvB0hoB,EAAWA,GAAU,EAAUmnI,GAAUx7gB,EACzCw7gB,GAAU7owB,QAAgCA,EAAEnb,WAAa,EAC3D,GACOgkxB,CACT,EAEA3gxB,KAAM,WACJ,OAAO2V,KAAKgvY,WA/kJG,EAglJjB,EAEAj8Y,IAAK,SAAakrwB,EAAQ90uB,GACxB,OAAOw3uB,GAAM3gwB,KAAMm+vB,GAAWn+vB,KAAMi+vB,EAAQ90uB,GAC9C,EAEA7+B,OAAQ,SAAkBg5N,EAAS2njB,EAAkB9hvB,GACnD,OAAO7+B,GACL0V,KACAsjN,EACA2njB,EACA9hvB,EACAh1B,UAAUC,OAAS,GACnB,EAEJ,EAEAq3S,YAAa,SAAqBnoF,EAAS2njB,EAAkB9hvB,GAC3D,OAAO7+B,GACL0V,KACAsjN,EACA2njB,EACA9hvB,EACAh1B,UAAUC,OAAS,GACnB,EAEJ,EAEA0c,QAAS,WACP,OAAO6vvB,GAAM3gwB,KAAMg+vB,GAAeh+vB,MAAM,GAC1C,EAEAlF,MAAO,SAAei2P,EAAOrkQ,GAC3B,OAAOi0wB,GAAM3gwB,KAAM++vB,GAAa/+vB,KAAM+wP,EAAOrkQ,GAAK,GACpD,EAEA4F,KAAM,SAAc0hH,EAAW7qF,GAC7B43uB,GAAkB/gwB,KAAK+S,MACvB,IAAIk/E,GAAc,EAOlB,OANAjyF,KAAKouY,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GAC7B,GAAIouH,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,GAEhC,OADAqsG,GAAc,GACP,CAEX,GACOA,CACT,EAEA7+F,KAAM,SAAcorP,GAClB,OAAOmihB,GAAM3gwB,KAAM6/vB,GAAY7/vB,KAAMw+O,GACvC,EAEA51N,OAAQ,WACN,OAAO5oB,KAAKgvY,WApoJK,EAqoJnB,EAIAwE,QAAS,WACP,OAAOxzY,KAAKlF,MAAM,GAAI,EACxB,EAEA0iN,QAAS,WACP,YAAqB1mN,IAAdkJ,KAAK+S,KAAmC,IAAd/S,KAAK+S,MAAc/S,KAAK1N,KAAK,WAAc,OAAO,CAAM,EAC3F,EAEA0lC,MAAO,SAAeg8E,EAAW7qF,GAC/B,OAAO2vuB,EACL9kpB,EAAYh0G,KAAK2uY,QAAQ19Y,OAAO+iH,EAAW7qF,GAAWnpB,KAE1D,EAEAyzY,QAAS,SAAiBy3X,EAAS/hvB,GACjC,OAp/GJ,SAAwB8zL,EAAYiujB,EAAS/hvB,GAC3C,IAAI0iR,EAAS74S,KAAMk9Y,YAInB,OAHAjzL,EAAWmxL,UAAU,SAAUjsY,EAAGsP,GAChCo6R,EAAOz1S,OAAO80wB,EAAQ7qwB,KAAK8oB,EAAShnB,EAAGsP,EAAGwrM,GAAa,EAAG,SAAUrjN,GAAK,OAAOA,EAAI,CAAG,EACzF,GACOiyS,EAAOmlG,aAChB,CA8+GWm6X,CAAenrwB,KAAMkrwB,EAAS/hvB,EACvC,EAEA4+L,OAAQ,SAAgBlnK,GACtB,OAAOkpK,GAAU/pN,KAAM6gD,EACzB,EAEAkuV,SAAU,WACR,IAAI9xL,EAAaj9M,KACjB,GAAIi9M,EAAWhsK,OAEb,OAAO,IAAI6qtB,EAAS7+iB,EAAWhsK,QAEjC,IAAIm6tB,EAAkBnujB,EAAW0xL,QAAQ57Y,IAAIs4wB,IAAaj8X,eAE1D,OADAg8X,EAAgBj8X,aAAe,WAAc,OAAOlyL,EAAW0xL,OAAS,EACjEy8X,CACT,EAEA13X,UAAW,SAAmB1/R,EAAW7qF,GACvC,OAAOnpB,KAAK/O,OAAO+rO,GAAIhpH,GAAY7qF,EACrC,EAEAoqX,UAAW,SAAmBv/R,EAAW7qF,EAAS4yuB,GAChD,IAAI1rpB,EAAQ0rpB,EAOZ,OANA/7vB,KAAKouY,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GAC7B,GAAIouH,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,GAEhC,OADAyqH,EAAQ,CAAC5+F,EAAGtP,IACL,CAEX,GACOkuG,CACT,EAEAwyG,QAAS,SAAiB7uG,EAAW7qF,GACnC,IAAIyoB,EAAQ5xC,KAAKuzY,UAAUv/R,EAAW7qF,GACtC,OAAOyoB,GAASA,EAAM,EACxB,EAEA6hN,SAAU,SAAkBz/I,EAAW7qF,EAAS4yuB,GAC9C,OAAO/7vB,KAAKkvY,aAAap+X,UAAUjW,KAAKm5G,EAAW7qF,EAAS4yuB,EAC9D,EAEApoX,cAAe,SAAuB3/R,EAAW7qF,EAAS4yuB,GACxD,OAAO/7vB,KAAKkvY,aACTp+X,UACAyiY,UAAUv/R,EAAW7qF,EAAS4yuB,EACnC,EAEAnoX,YAAa,SAAqB5/R,EAAW7qF,GAC3C,OAAOnpB,KAAKkvY,aAAap+X,UAAU+xM,QAAQ7uG,EAAW7qF,EACxD,EAEAqlC,MAAO,SAAeutsB,GACpB,OAAO/7vB,KAAKnF,KAAKk+vB,EAAY,KAAMgD,EACrC,EAEAtsiB,QAAS,SAAiBwuiB,EAAQ90uB,GAChC,OAAOw3uB,GAAM3gwB,KAjuGjB,SAAwBi9M,EAAYghjB,EAAQ90uB,GAC1C,IAAI0hvB,EAASjK,GAAgB3jjB,GAC7B,OAAOA,EACJ0xL,QACA57Y,IAAI,SAAUoP,EAAGsP,GAAK,OAAOo5vB,EAAO5M,EAAO59vB,KAAK8oB,EAAShnB,EAAGsP,EAAGwrM,GAAc,GAC7EnjH,SAAQ,EACb,CA2tGuBwxqB,CAAetrwB,KAAMi+vB,EAAQ90uB,GAClD,EAEA2wE,QAAS,SAAiBgoH,GACxB,OAAO6+iB,GAAM3gwB,KAAMy/vB,GAAez/vB,KAAM8hN,GAAO,GACjD,EAEAqtL,aAAc,WACZ,OAAO,IAAImvX,GAAoBt+vB,KACjC,EAEAnM,IAAK,SAAa03wB,EAAWxP,GAC3B,OAAO/7vB,KAAKnF,KAAK,SAAU+G,EAAGpX,GAAO,OAAOy6H,GAAGz6H,EAAK+gxB,EAAY,OAAGz0wB,EAAWilwB,EAChF,EAEAloX,MAAOA,GAEPp6K,QAAS,SAAiByxiB,EAAS/hvB,GACjC,OAvjHJ,SAAwB8zL,EAAYiujB,EAAS/hvB,GAC3C,IAAIyhvB,EAAcj4X,EAAQ11L,GACtB4uF,GAAUinG,EAAU71L,GAAcy4L,KAAe1iZ,MAAOk9Y,YAC5DjzL,EAAWmxL,UAAU,SAAUjsY,EAAGsP,GAChCo6R,EAAOz1S,OACL80wB,EAAQ7qwB,KAAK8oB,EAAShnB,EAAGsP,EAAGwrM,GAC5B,SAAUrjN,GAAK,OAASA,EAAIA,GAAK,IAAO9F,KAAK82wB,EAAc,CAACn5vB,EAAGtP,GAAKA,GAAIvI,CAAI,EAEhF,GACA,IAAIixwB,EAASjK,GAAgB3jjB,GAC7B,OAAO4uF,EAAO94S,IAAI,SAAU6jC,GAAO,OAAO+puB,GAAM1jjB,EAAY4tjB,EAAOj0uB,GAAO,GAAGo6W,aAC/E,CA4iHWw6X,CAAexrwB,KAAMkrwB,EAAS/hvB,EACvC,EAEAx1B,IAAK,SAAa43wB,GAChB,OAAOvrwB,KAAKnM,IAAI03wB,EAAW5S,KAAaA,CAC1C,EAEA92Z,MAxUF,SAAe0oa,GACb,OAAOC,GAAQxqwB,KAAMuqwB,EACvB,EAwUEz2X,SAAU,SAAkB36R,GAE1B,OADAA,EAAgC,mBAAlBA,EAAKxjF,SAA0BwjF,EAAOo8R,EAAWp8R,GACxDn5G,KAAKxF,MAAM,SAAU7U,GAAS,OAAOwzH,EAAKxjF,SAAShwC,EAAQ,EACpE,EAEAouZ,WAAY,SAAoB56R,GAE9B,OADAA,EAAgC,mBAAlBA,EAAK26R,SAA0B36R,EAAOo8R,EAAWp8R,IACnD26R,SAAS9zY,KACvB,EAEAg0Y,MAAO,SAAemtH,GACpB,OAAOnhgB,KAAK6iN,QAAQ,SAAUl9N,GAAS,OAAOs/H,GAAGt/H,EAAOw7gB,EAAc,EACxE,EAEA9uH,OAAQ,WACN,OAAOryY,KAAK2uY,QAAQ57Y,IAAI04wB,IAAWr8X,cACrC,EAEAl7V,KAAM,SAAc6ntB,GAClB,OAAO/7vB,KAAK2uY,QAAQ79X,UAAU09C,MAAMutsB,EACtC,EAEA9nX,UAAW,SAAmBktH,GAC5B,OAAOnhgB,KAAKkvY,aAAap+X,UAAUkjY,MAAMmtH,EAC3C,EAEAx3gB,IAAK,SAAa60P,GAChB,OAAOwhhB,GAAWhgwB,KAAMw+O,EAC1B,EAEA01J,MAAO,SAAe+pX,EAAQz/gB,GAC5B,OAAOwhhB,GAAWhgwB,KAAMw+O,EAAYy/gB,EACtC,EAEAv0wB,IAAK,SAAa80P,GAChB,OAAOwhhB,GACLhgwB,KACAw+O,EAAa8tD,GAAI9tD,GAAckthB,GAEnC,EAEAv3X,MAAO,SAAe8pX,EAAQz/gB,GAC5B,OAAOwhhB,GACLhgwB,KACAw+O,EAAa8tD,GAAI9tD,GAAckthB,GAC/BzN,EAEJ,EAEAzuvB,KAAM,WACJ,OAAOxP,KAAKlF,MAAM,EACpB,EAEA09B,KAAM,SAAc2kB,GAClB,OAAkB,IAAXA,EAAen9C,KAAOA,KAAKlF,MAAMtV,KAAKmE,IAAI,EAAGwzD,GACtD,EAEAi3V,SAAU,SAAkBj3V,GAC1B,OAAkB,IAAXA,EAAen9C,KAAOA,KAAKlF,MAAM,GAAItV,KAAKmE,IAAI,EAAGwzD,GAC1D,EAEAk3V,UAAW,SAAmBrgS,EAAW7qF,GACvC,OAAOw3uB,GAAM3gwB,KAAMs/vB,GAAiBt/vB,KAAMg0G,EAAW7qF,GAAS,GAChE,EAEAmrX,UAAW,SAAmBtgS,EAAW7qF,GACvC,OAAOnpB,KAAKq0Y,UAAUr3K,GAAIhpH,GAAY7qF,EACxC,EAEA86L,OAAQ,SAAgBg6iB,EAAQz/gB,GAC9B,OAAOmihB,GAAM3gwB,KAAM6/vB,GAAY7/vB,KAAMw+O,EAAYy/gB,GACnD,EAEA1pX,KAAM,SAAcp3V,GAClB,OAAOn9C,KAAKlF,MAAM,EAAGtV,KAAKmE,IAAI,EAAGwzD,GACnC,EAEAq3V,SAAU,SAAkBr3V,GAC1B,OAAOn9C,KAAKlF,OAAOtV,KAAKmE,IAAI,EAAGwzD,GACjC,EAEAs3V,UAAW,SAAmBzgS,EAAW7qF,GACvC,OAAOw3uB,GAAM3gwB,KAthHjB,SAA0Bi9M,EAAYjpG,EAAW7qF,GAC/C,IAAIwivB,EAAehN,GAAa1hjB,GAuChC,OAtCA0ujB,EAAa78X,kBAAoB,SAAUh6Y,EAAIgc,GAC7C,IAAIgtvB,EAAW99vB,KAEf,GAAI8Q,EACF,OAAO9Q,KAAK6uY,cAAcT,UAAUt5Y,EAAIgc,GAE1C,IAAIs5c,EAAa,EAIjB,OAHAntQ,EAAWmxL,UACT,SAAUjsY,EAAGsP,EAAG7rB,GAAK,OAAOouH,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAG7rB,MAAQwke,GAAct1d,EAAGqN,EAAGsP,EAAGqsvB,EAAW,GAE/F1zS,CACT,EACAuhT,EAAa18X,mBAAqB,SAAUj/X,EAAMc,GAChD,IAAIgtvB,EAAW99vB,KAEf,GAAI8Q,EACF,OAAO9Q,KAAK6uY,cAAcG,WAAWh/X,EAAMc,GAE7C,IAAI5O,EAAW+6M,EAAW+xL,WA3zCR,EA2zCoCl+X,GAClD86vB,GAAY,EAChB,OAAO,IAAI74X,EAAS,WAClB,IAAK64X,EACH,MAzxCC,CAAEjmxB,WAAOmR,EAAW0K,MAAM,GA2xC7B,IAAIF,EAAOY,EAASpa,OACpB,GAAIwZ,EAAKE,KACP,OAAOF,EAET,IAAIswC,EAAQtwC,EAAK3b,MACb8rB,EAAImgC,EAAM,GACVzvC,EAAIyvC,EAAM,GACd,OAAKoiE,EAAU3zG,KAAK8oB,EAAShnB,EAAGsP,EAAGqsvB,GAx0CnB,IA40CT9tvB,EAA2B1O,EAAOy5vB,EAAc/qvB,EAAMyB,EAAGtP,EAAGb,IAHjEsqwB,GAAY,EAnyCX,CAAEjmxB,WAAOmR,EAAW0K,MAAM,GAuyC/B,EACF,EACOmqwB,CACT,CA6+GuBE,CAAiB7rwB,KAAMg0G,EAAW7qF,GACvD,EAEAurX,UAAW,SAAmB1gS,EAAW7qF,GACvC,OAAOnpB,KAAKy0Y,UAAUz3K,GAAIhpH,GAAY7qF,EACxC,EAEA/yB,OAAQ,SAAgBtB,GACtB,OAAOA,EAAGkL,KACZ,EAEA+vY,SAAU,WACR,OAAO/vY,KAAKovY,cACd,EAIAM,SAAU,WACR,OAAO1vY,KAAKuwY,SAAWvwY,KAAKuwY,OA2QhC,SAAwBtzL,GACtB,GAAIA,EAAWlqM,OAASxtB,IACtB,OAAO,EAET,IAAI8kQ,EAAUyoJ,EAAU71L,GACpB6ujB,EAAQn5X,EAAQ11L,GAChB55N,EAAIgnQ,EAAU,EAAI,EAkBtB,OAGF,SAA0Bt3O,EAAM1vB,GAQ9B,OAPAA,EAAIssZ,GAAKtsZ,EAAG,YACZA,EAAIssZ,GAAMtsZ,GAAK,GAAOA,KAAO,GAAK,WAClCA,EAAIssZ,GAAMtsZ,GAAK,GAAOA,KAAO,GAAK,GAElCA,EAAIssZ,IADJtsZ,GAAMA,EAAI,WAAc,GAAK0vB,GACf1vB,IAAM,GAAK,YAEzBA,EAAIm5wB,IADJn5wB,EAAIssZ,GAAKtsZ,EAAKA,IAAM,GAAK,aACZA,IAAM,GAErB,CAZS0oxB,CAjBI9ujB,EAAWmxL,UACpB09X,EACIzhhB,EACE,SAAUloP,EAAGsP,GACXpuB,EAAK,GAAKA,EAAI2oxB,GAAU1/wB,GAAK6V,GAAI7V,GAAKmlB,IAAO,CAC/C,EACA,SAAUtP,EAAGsP,GACXpuB,EAAKA,EAAI2oxB,GAAU1/wB,GAAK6V,GAAI7V,GAAKmlB,IAAO,CAC1C,EACF44O,EACA,SAAUloP,GACR9e,EAAK,GAAKA,EAAIiJ,GAAK6V,GAAM,CAC3B,EACA,SAAUA,GACR9e,EAAKA,EAAIiJ,GAAK6V,GAAM,CACtB,GAEwB9e,EAChC,CApSyC4oxB,CAAejswB,MACtD,IASF,IAAIkswB,GAAsB32X,EAAWn1Y,UACrC8rwB,GAAoB1S,IAAwB,EAC5C0S,GAAoBpR,GAAmBoR,GAAoBtjvB,OAC3DsjvB,GAAoBrujB,OAASqujB,GAAoBpojB,QACjDoojB,GAAoB54X,iBAAmB8tX,GACvC8K,GAAoBx9X,QAAUw9X,GAAoB14iB,SAAW,WAC3D,OAAOxzN,KAAKhZ,UACd,EACAklxB,GAAoB5ppB,MAAQ4ppB,GAAoBz8iB,QAChDy8iB,GAAoB1kxB,SAAW0kxB,GAAoBv2uB,SAEnDovL,GAAMg1iB,EAAiB,CAGrB1quB,KAAM,WACJ,OAAOsxuB,GAAM3gwB,KAAMy+vB,GAAYz+vB,MACjC,EAEA20Y,WAAY,SAAoBspX,EAAQ90uB,GACtC,IAAI20uB,EAAW99vB,KAEXoqd,EAAa,EACjB,OAAOu2S,GACL3gwB,KACAA,KAAK2uY,QACF57Y,IAAI,SAAUoP,EAAGsP,GAAK,OAAOwsvB,EAAO59vB,KAAK8oB,EAAS,CAAC1X,EAAGtP,GAAIiod,IAAc0zS,EAAW,GACnF3uX,eAEP,EAEAyF,QAAS,SAAiBqpX,EAAQ90uB,GAChC,IAAI20uB,EAAW99vB,KAEf,OAAO2gwB,GACL3gwB,KACAA,KAAK2uY,QACFt/W,OACAt8B,IAAI,SAAU0e,EAAGtP,GAAK,OAAO87vB,EAAO59vB,KAAK8oB,EAAS1X,EAAGtP,EAAG27vB,EAAW,GACnEzuuB,OAEP,IAGF,IAAI88uB,GAA2BpS,EAAgB35vB,UAC/C+rwB,GAAyBzS,IAAmB,EAC5CyS,GAAyBrR,GAAmBoR,GAAoBhntB,QAChEintB,GAAyBtujB,OAASxqG,GAClC84pB,GAAyB74X,iBAAmB,SAAUnxY,EAAGsP,GAAK,OAAO2vvB,GAAY3vvB,GAAK,KAAO2vvB,GAAYj/vB,EAAI,EAE7G4iN,GAAMk1iB,EAAmB,CAGvB/qX,WAAY,WACV,OAAO,IAAI0uX,GAAgB59vB,MAAM,EACnC,EAIA/O,OAAQ,SAAgB+iH,EAAW7qF,GACjC,OAAOw3uB,GAAM3gwB,KAAM6+vB,GAAc7+vB,KAAMg0G,EAAW7qF,GAAS,GAC7D,EAEAwrC,UAAW,SAAmBq/C,EAAW7qF,GACvC,IAAIyoB,EAAQ5xC,KAAKuzY,UAAUv/R,EAAW7qF,GACtC,OAAOyoB,EAAQA,EAAM,IAAM,CAC7B,EAEArpD,QAAS,SAAiB44gB,GACxB,IAAI32gB,EAAMwV,KAAKg0Y,MAAMmtH,GACrB,YAAerqgB,IAARtM,GAAqB,EAAIA,CAClC,EAEA6sF,YAAa,SAAqB8pb,GAChC,IAAI32gB,EAAMwV,KAAKi0Y,UAAUktH,GACzB,YAAerqgB,IAARtM,GAAqB,EAAIA,CAClC,EAEAsmB,QAAS,WACP,OAAO6vvB,GAAM3gwB,KAAMg+vB,GAAeh+vB,MAAM,GAC1C,EAEAlF,MAAO,SAAei2P,EAAOrkQ,GAC3B,OAAOi0wB,GAAM3gwB,KAAM++vB,GAAa/+vB,KAAM+wP,EAAOrkQ,GAAK,GACpD,EAEAqgC,OAAQ,SAAgBv2B,EAAO41wB,GAC7B,IAAIC,EAAUl4wB,UAAUC,OAExB,GADAg4wB,EAAY5mxB,KAAKmE,IAAIyixB,GAAa,EAAG,GACrB,IAAZC,GAA8B,IAAZA,IAAkBD,EACtC,OAAOpswB,KAKTxJ,EAAQ4iwB,EAAa5iwB,EAAOA,EAAQ,EAAIwJ,KAAKg4B,QAAUh4B,KAAK+S,MAC5D,IAAIu5vB,EAAUtswB,KAAKlF,MAAM,EAAGtE,GAC5B,OAAOmqwB,GACL3gwB,KACY,IAAZqswB,EACIC,EACAA,EAAQt+wB,OAAO6ywB,GAAQ1swB,UAAW,GAAI6L,KAAKlF,MAAMtE,EAAQ41wB,IAEjE,EAIAjpjB,cAAe,SAAuBnvG,EAAW7qF,GAC/C,IAAIyoB,EAAQ5xC,KAAK2zY,cAAc3/R,EAAW7qF,GAC1C,OAAOyoB,EAAQA,EAAM,IAAM,CAC7B,EAEA4c,MAAO,SAAeutsB,GACpB,OAAO/7vB,KAAKnM,IAAI,EAAGkowB,EACrB,EAEAjiqB,QAAS,SAAiBgoH,GACxB,OAAO6+iB,GAAM3gwB,KAAMy/vB,GAAez/vB,KAAM8hN,GAAO,GACjD,EAEAjuN,IAAK,SAAa2C,EAAOulwB,GAEvB,OADAvlwB,EAAQwiwB,EAAUh5vB,KAAMxJ,IACT,GACbwJ,KAAK+S,OAASxtB,UACCuR,IAAdkJ,KAAK+S,MAAsBvc,EAAQwJ,KAAK+S,KACvCgpvB,EACA/7vB,KAAKnF,KAAK,SAAU+G,EAAGpX,GAAO,OAAOA,IAAQgM,CAAO,OAAGM,EAAWilwB,EACxE,EAEApowB,IAAK,SAAa6C,GAEhB,OADAA,EAAQwiwB,EAAUh5vB,KAAMxJ,KAEb,SACMM,IAAdkJ,KAAK+S,KACF/S,KAAK+S,OAASxtB,KAAYiR,EAAQwJ,KAAK+S,MACd,IAAzB/S,KAAKzX,QAAQiO,GAErB,EAEAq+Y,UAAW,SAAmBrlJ,GAC5B,OAAOmxgB,GAAM3gwB,KA7+GjB,SAA0Bi9M,EAAYuyC,GACpC,IAAI+8gB,EAAqB5N,GAAa1hjB,GA6BtC,OA5BAsvjB,EAAmBx5vB,KAAOkqM,EAAWlqM,MAA0B,EAAlBkqM,EAAWlqM,KAAW,EACnEw5vB,EAAmBz9X,kBAAoB,SAAUh6Y,EAAIgc,GACnD,IAAIgtvB,EAAW99vB,KAEXoqd,EAAa,EAMjB,OALAntQ,EAAWmxL,UACT,SAAUjsY,GAAK,QAASiod,IAAwD,IAA1Ct1d,EAAG06P,EAAW46N,IAAc0zS,MAC9B,IAAlChpwB,EAAGqN,EAAGiod,IAAc0zS,EAAqB,EAC3ChtvB,GAEKs5c,CACT,EACAmiT,EAAmBt9X,mBAAqB,SAAUj/X,EAAMc,GACtD,IAEIxP,EAFAY,EAAW+6M,EAAW+xL,WAvgDT,EAugDoCl+X,GACjDs5c,EAAa,EAEjB,OAAO,IAAIr3E,EAAS,WAClB,QAAKzxY,GAAQ8od,EAAa,KACxB9od,EAAOY,EAASpa,QACP0Z,KACAF,EAGJ8od,EAAa,EAChB2wS,EAAc/qvB,EAAMo6c,IAAc56N,GAClCurgB,EAAc/qvB,EAAMo6c,IAAc9od,EAAK3b,MAAO2b,EACpD,EACF,EACOirwB,CACT,CA88GuBC,CAAiBxswB,KAAMwvP,GAC5C,EAEAslJ,WAAY,WACV,IAAIutX,EAAc,CAACriwB,MAAMhS,OAAO6ywB,GAAQ1swB,YACpCs4wB,EAAStM,GAAengwB,KAAK2uY,QAASurX,EAAWlngB,GAAIqvgB,GACrDqK,EAAcD,EAAO3yqB,SAAQ,GAIjC,OAHI2yqB,EAAO15vB,OACT25vB,EAAY35vB,KAAO05vB,EAAO15vB,KAAOsvvB,EAAYjuwB,QAExCuswB,GAAM3gwB,KAAM0swB,EACrB,EAEAr6X,OAAQ,WACN,OAAO/4N,GAAM,EAAGt5K,KAAK+S,KACvB,EAEAmhC,KAAM,SAAc6ntB,GAClB,OAAO/7vB,KAAKnM,KAAK,EAAGkowB,EACtB,EAEA1nX,UAAW,SAAmBrgS,EAAW7qF,GACvC,OAAOw3uB,GAAM3gwB,KAAMs/vB,GAAiBt/vB,KAAMg0G,EAAW7qF,GAAS,GAChE,EAEAwtH,IAAK,WAEH,OAAOgqnB,GAAM3gwB,KAAMmgwB,GAAengwB,KAAM2swB,GADtB,CAAC3swB,MAAMhS,OAAO6ywB,GAAQ1swB,aAE1C,EAEA4gZ,OAAQ,WAEN,OAAO4rX,GAAM3gwB,KAAMmgwB,GAAengwB,KAAM2swB,GADtB,CAAC3swB,MAAMhS,OAAO6ywB,GAAQ1swB,aAC4B,GACtE,EAEA6gZ,QAAS,SAAiBqrX,GACxB,IAAIgC,EAAcxB,GAAQ1swB,WAE1B,OADAkuwB,EAAY,GAAKriwB,KACV2gwB,GAAM3gwB,KAAMmgwB,GAAengwB,KAAMqgwB,EAAQgC,GAClD,IAGF,IAAIuK,GAA6B3S,EAAkB75vB,UACnDwswB,GAA2BhT,IAAqB,EAChDgT,GAA2BlS,IAAqB,EAEhD31iB,GAAMo1iB,EAAe,CAGnBtmwB,IAAK,SAAalO,EAAOo2wB,GACvB,OAAO/7vB,KAAKrM,IAAIhO,GAASA,EAAQo2wB,CACnC,EAEApmuB,SAAU,SAAkBhwC,GAC1B,OAAOqa,KAAKrM,IAAIhO,EAClB,EAIA0sZ,OAAQ,WACN,OAAOryY,KAAK+vY,UACd,IAGF,IAAI88X,GAAyB1S,EAAc/5vB,UAa3C,SAAS9V,GAAO2yN,EAAYqG,EAASwpjB,EAAW3jvB,EAAS4jvB,EAAUj8vB,GAUjE,OATAiwvB,GAAkB9jjB,EAAWlqM,MAC7BkqM,EAAWmxL,UAAU,SAAUjsY,EAAGsP,EAAG7rB,GAC/BmnxB,GACFA,GAAW,EACXD,EAAY3qwB,GAEZ2qwB,EAAYxpjB,EAAQjjN,KAAK8oB,EAAS2jvB,EAAW3qwB,EAAGsP,EAAG7rB,EAEvD,EAAGkrB,GACIg8vB,CACT,CAEA,SAASrB,GAAUtpwB,EAAGsP,GACpB,OAAOA,CACT,CAEA,SAAS45vB,GAAYlpwB,EAAGsP,GACtB,MAAO,CAACA,EAAGtP,EACb,CAEA,SAAS66N,GAAIhpH,GACX,OAAO,WACL,OAAQA,EAAUlzG,MAAMd,KAAM7L,UAChC,CACF,CAEA,SAASm4S,GAAIt4L,GACX,OAAO,WACL,OAAQA,EAAUlzG,MAAMd,KAAM7L,UAChC,CACF,CAEA,SAASw4wB,KACP,OAAO9L,GAAQ1swB,UACjB,CAEA,SAASu3wB,GAAqB9xwB,EAAGC,GAC/B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CAClC,CAwCA,SAASmywB,GAAUpywB,EAAGC,GACpB,OAAQD,EAAKC,EAAI,YAAcD,GAAK,IAAMA,GAAK,GAAO,CACxD,CA7FAizwB,GAAuBl5wB,IAAMu4wB,GAAoBv2uB,SACjDk3uB,GAAuBrlxB,SAAWqlxB,GAAuBl3uB,SACzDk3uB,GAAuBxixB,KAAOwixB,GAAuBjkvB,OAIrDm8L,GAAMi1iB,EAAUmS,IAChBpnjB,GAAMm1iB,EAAY0S,IAClB7njB,GAAMq1iB,EAAQyS,IAuFd,IAAIj3X,GAA2B,SAAU1iZ,GACvC,SAAS0iZ,EAAWjwZ,GAClB,OAAOA,QACHqnxB,KACA/3X,GAAatvZ,GACbA,EACAqnxB,KAAkB/8X,cAAc,SAAUl8Y,GACxC,IAAIolH,EAAOghpB,EAAcx0wB,GACzBo7wB,GAAkB5npB,EAAKpmG,MACvBomG,EAAKnnH,QAAQ,SAAUmQ,GAAK,OAAOpO,EAAIT,IAAI6O,EAAI,EACjD,EACN,CAkBA,OAhBKjP,IAAM0iZ,EAAW11Y,UAAYhN,GAClC0iZ,EAAWx1Y,UAAYtW,OAAO4W,OAAQxN,GAAOA,EAAIkN,WACjDw1Y,EAAWx1Y,UAAUK,YAAcm1Y,EAEnCA,EAAW5iJ,GAAK,WACd,OAAOhzP,KAAK7L,UACd,EAEAyhZ,EAAWxD,SAAW,SAAmBzsZ,GACvC,OAAOqa,KAAK+5vB,EAAgBp0wB,GAAO0sZ,SACrC,EAEAuD,EAAWx1Y,UAAUpZ,SAAW,WAC9B,OAAOgZ,KAAK4uY,WAAW,eAAgB,IACzC,EAEOgH,CACT,CA9B8B,CA8B5B1iZ,IAEF0iZ,GAAWX,aAAeA,GAE1B,IAiBIg4X,GAjBAC,GAAsBt3X,GAAWx1Y,UASrC,SAAS+swB,GAAep6wB,EAAKk+Y,GAC3B,IAAIl9Y,EAAMjK,OAAO4W,OAAOwswB,IAIxB,OAHAn5wB,EAAIgf,KAAOhgB,EAAMA,EAAIggB,KAAO,EAC5Bhf,EAAI69Y,KAAO7+Y,EACXgB,EAAIi8Y,UAAYiB,EACTl9Y,CACT,CAGA,SAASi5wB,KACP,OACEC,KAAsBA,GAAoBE,GAAezE,MAE7D,CArBAwE,GAAoBxS,IAAqB,EACzCwS,GAAoBv2nB,IAAMi2nB,GAA2Bj2nB,IACrDu2nB,GAAoBl4X,QAAU43X,GAA2B53X,QACzDk4X,GAAoBn4X,OAAS63X,GAA2B73X,OAExDm4X,GAAoB16X,QAAUw6X,GAC9BE,GAAoB36X,OAAS46X,GAiB7B,IAAIC,GAAc,CAChBC,eAAgB,EAChBC,cAAe,GAuBbp/X,GAAS,SAAgBq/X,EAAeh6wB,GAC1C,IAAIi6wB,GArBN,SAAqCD,GACnC,GAAIl4X,EAASk4X,GACX,MAAM,IAAIhmwB,MACR,4GAIJ,GAAIwuY,EAAYw3X,GACd,MAAM,IAAIhmwB,MACR,gHAIJ,GAAsB,OAAlBgmwB,GAAmD,iBAAlBA,EACnC,MAAM,IAAIhmwB,MACR,oGAGN,CAKEkmwB,CAA4BF,GAE5B,IAAIlzlB,EAAa,SAAgBzxJ,GAC/B,IAAIk1uB,EAAW99vB,KAEf,GAAI4oB,aAAkByxJ,EACpB,OAAOzxJ,EAET,KAAM5oB,gBAAgBq6K,GACpB,OAAO,IAAIA,EAAWzxJ,GAExB,IAAK4kvB,EAAgB,CACnBA,GAAiB,EACjB,IAAInjxB,EAAOP,OAAOO,KAAKkjxB,GACnB38kB,EAAW88kB,EAAoBx4X,SAAW,CAAC,EAI/Cw4X,EAAoBv4X,MAAQ5hZ,EAC5Bm6wB,EAAoB34uB,MAAQ1qC,EAC5BqjxB,EAAoBt4X,eAAiBm4X,EACrC,IAAK,IAAIloxB,EAAI,EAAGA,EAAIgF,EAAK+J,OAAQ/O,IAAK,CACpC,IAAImvH,EAAWnqH,EAAKhF,GACpBurM,EAAQp8E,GAAYnvH,EAChBqoxB,EAAoBl5pB,GAEH,iBAAZ5hF,SACLA,QAAQ/lB,MACR+lB,QAAQ/lB,KACN,iBACE8gwB,GAAW3twB,MACX,mBACAw0G,EACA,yDAINshc,GAAQ43N,EAAqBl5pB,EAEjC,CACF,CAQA,OAPAx0G,KAAKgwY,eAAYl5Y,EACjBkJ,KAAKqlQ,QAAUswI,KAAO1F,cAAc,SAAUz3X,GAC5CA,EAAE64X,QAAQysX,EAAS/ouB,MAAM3gC,QACzB2lwB,EAAgBnxuB,GAAQ52B,QAAQ,SAAUmQ,EAAGsP,GAC3C+G,EAAEzkB,IAAI+pwB,EAAS5oX,SAASzjY,GAAItP,IAAM27vB,EAAS1oX,eAAe3jY,QAAK3a,EAAYqL,EAC7E,EACF,GACOnC,IACT,EAEI0twB,EAAuBrzlB,EAAWj6K,UACpCtW,OAAO4W,OAAOktwB,IAOhB,OANAF,EAAoBjtwB,YAAc45K,EAE9B9mL,IACF8mL,EAAWgO,YAAc90L,GAGpB8mL,CACT,EAEA6zN,GAAO9tY,UAAUpZ,SAAW,WAI1B,IAHA,IAEIyqB,EAFAgB,EAAMk7vB,GAAW3twB,MAAQ,MACzB3V,EAAO2V,KAAK+0B,MAEP1vC,EAAI,EAAGmzB,EAAInuB,EAAK+J,OAAQ/O,IAAMmzB,EAAGnzB,IAExCotB,IAAQptB,EAAI,KAAO,KADnBosB,EAAIpnB,EAAKhF,IACoB,KAAO+7wB,GAAYphwB,KAAKnM,IAAI4d,IAE3D,OAAOgB,EAAM,IACf,EAEAy7X,GAAO9tY,UAAU2nN,OAAS,SAAiBlnK,GACzC,OACE7gD,OAAS6gD,GACRw0V,EAASx0V,IAAUgttB,GAAU7twB,MAAM+nN,OAAO8ljB,GAAUhttB,GAEzD,EAEAqtV,GAAO9tY,UAAUsvY,SAAW,WAC1B,OAAOm+X,GAAU7twB,MAAM0vY,UACzB,EAIAxB,GAAO9tY,UAAUzM,IAAM,SAAc8d,GACnC,OAAOzR,KAAKk1Y,SAAStpZ,eAAe6lB,EACtC,EAEAy8X,GAAO9tY,UAAUvM,IAAM,SAAc4d,EAAGsqvB,GACtC,IAAK/7vB,KAAKrM,IAAI8d,GACZ,OAAOsqvB,EAET,IAAIvlwB,EAAQwJ,KAAKk1Y,SAASzjY,GACtB9rB,EAAQqa,KAAKqlQ,QAAQxxQ,IAAI2C,GAC7B,YAAiBM,IAAVnR,EAAsBqa,KAAKo1Y,eAAe3jY,GAAK9rB,CACxD,EAIAuoZ,GAAO9tY,UAAUrM,IAAM,SAAc0d,EAAGtP,GACtC,GAAInC,KAAKrM,IAAI8d,GAAI,CACf,IAAIwtR,EAAYj/R,KAAKqlQ,QAAQtxQ,IAC3BiM,KAAKk1Y,SAASzjY,GACdtP,IAAMnC,KAAKo1Y,eAAe3jY,QAAK3a,EAAYqL,GAE7C,GAAI88R,IAAcj/R,KAAKqlQ,UAAYrlQ,KAAKgwY,UACtC,OAAO89X,GAAW9twB,KAAMi/R,EAE5B,CACA,OAAOj/R,IACT,EAEAkuY,GAAO9tY,UAAUwiC,OAAS,SAAiBnxB,GACzC,OAAOzR,KAAKjM,IAAI0d,EAClB,EAEAy8X,GAAO9tY,UAAU26D,MAAQ,WACvB,IAAIkkO,EAAYj/R,KAAKqlQ,QAAQtqM,QAAQs2U,QAAQrxY,KAAK+0B,MAAM3gC,QAExD,OAAO4L,KAAKgwY,UAAYhwY,KAAO8twB,GAAW9twB,KAAMi/R,EAClD,EAEAivG,GAAO9tY,UAAU+vY,WAAa,WAC5B,OAAOnwY,KAAKqlQ,QAAQ8qI,YACtB,EAEAjC,GAAO9tY,UAAUuuY,MAAQ,WACvB,OAAOk/X,GAAU7twB,KACnB,EAEAkuY,GAAO9tY,UAAU4yY,KAAO,WACtB,OAAOA,GAAKhzY,KACd,EAEAkuY,GAAO9tY,UAAU8kD,QAAU,WACzB,OAAOllD,KAAKgvY,WAn2KQ,EAo2KtB,EAEAd,GAAO9tY,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACvD,OAAO+8vB,GAAU7twB,MAAMgvY,WAAWh/X,EAAMc,EAC1C,EAEAo9X,GAAO9tY,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GACnD,OAAO+8vB,GAAU7twB,MAAMouY,UAAUt5Y,EAAIgc,EACvC,EAEAo9X,GAAO9tY,UAAUgwY,cAAgB,SAAwBa,GACvD,GAAIA,IAAYjxY,KAAKgwY,UACnB,OAAOhwY,KAET,IAAIi/R,EAAYj/R,KAAKqlQ,QAAQ+qI,cAAca,GAC3C,OAAKA,EAKE68X,GAAW9twB,KAAMi/R,EAAWgyG,IAJjCjxY,KAAKgwY,UAAYiB,EACjBjxY,KAAKqlQ,QAAU45B,EACRj/R,KAGX,EAEAkuY,GAAOmH,SAAWA,EAClBnH,GAAOoH,mBAAqBq4X,GAC5B,IAAIC,GAAkB1/X,GAAO9tY,UAyB7B,SAAS0twB,GAAWC,EAAYnlvB,EAAQqoX,GACtC,IAAIp7O,EAAS/rK,OAAO4W,OAAO5W,OAAO2rC,eAAes4uB,IAGjD,OAFAl4mB,EAAOwvG,QAAUz8O,EACjBitI,EAAOm6O,UAAYiB,EACZp7O,CACT,CAEA,SAAS83mB,GAAW93mB,GAClB,OAAOA,EAAOp1J,YAAY4nL,aAAexyB,EAAOp1J,YAAYlN,MAAQ,QACtE,CAEA,SAASs6wB,GAAUh4mB,GACjB,OAAO+lmB,GAAkB/lmB,EAAO9gI,MAAMhiC,IAAI,SAAU0e,GAAK,MAAO,CAACA,EAAGokJ,EAAOhiK,IAAI4d,GAAK,GACtF,CAEA,SAASqkiB,GAAQ11iB,EAAW7M,GAC1B,IACEzJ,OAAOwY,eAAelC,EAAW7M,EAAM,CACrCM,IAAK,WACH,OAAOmM,KAAKnM,IAAIN,EAClB,EACAQ,IAAK,SAAUpO,GACb0srB,GAAUryqB,KAAKgwY,UAAW,sCAC1BhwY,KAAKjM,IAAIR,EAAM5N,EACjB,GAEJ,CAAE,MAAOskB,GAET,CACF,CArDA2jwB,GAAgBrT,IAAoB,EACpCqT,GAAgBpV,GAAUoV,GAAgBhruB,OAC1CgruB,GAAgBl9X,SAAWk9X,GAAgBn9X,SAAWC,GACtDk9X,GAAgB/5X,MAAQA,GACxB+5X,GAAgB/ra,MAAQqqa,GAAoBrqa,MAC5C+ra,GAAgB97vB,MAAQowvB,GACxB0L,GAAgB10iB,UAAYkpiB,GAC5BwL,GAAgB98X,QAAUA,GAC1B88X,GAAgBh9X,UAAYA,GAC5Bg9X,GAAgB/8X,cAAgBA,GAChC+8X,GAAgB78X,YAAcA,GAC9B68X,GAAgBp9X,MAAQA,GACxBo9X,GAAgBx3wB,OAASA,GACzBw3wB,GAAgBj9X,SAAWA,GAC3Bi9X,GAAgB39X,cAAgBA,GAChC29X,GAAgB19X,UAAYA,GAC5B09X,GAAgB58X,YAAcA,GAC9B48X,GAAgB9S,GAAmB8S,GAAgB1otB,QACnD0otB,GAAgB/vjB,OAAS+vjB,GAAgBv6pB,SACvC64pB,GAAoB74pB,SACtBu6pB,GAAgBl/X,QAAUk/X,GAAgBp6iB,SAAW,WACnD,OAAOxzN,KAAKhZ,UACd,EAqCA,IA6FIgnxB,GA7FAn4X,GAAuB,SAAUqkX,GACnC,SAASrkX,EAAOlwZ,EAAOs6N,GACrB,KAAMjgN,gBAAgB61Y,GACpB,OAAO,IAAIA,EAAOlwZ,EAAOs6N,GAI3B,GAFAjgN,KAAKigS,OAASt6S,EACdqa,KAAK+S,UAAiBjc,IAAVmpN,EAAsB16N,IAAWC,KAAKmE,IAAI,EAAGs2N,GACvC,IAAdjgN,KAAK+S,KAAY,CACnB,GAAIi7vB,GACF,OAAOA,GAETA,GAAehuwB,IACjB,CACF,CA6EA,OA3EKk6vB,IAAarkX,EAAO31Y,UAAYg6vB,GACrCrkX,EAAOz1Y,UAAYtW,OAAO4W,OAAQw5vB,GAAcA,EAAW95vB,WAC3Dy1Y,EAAOz1Y,UAAUK,YAAco1Y,EAE/BA,EAAOz1Y,UAAUpZ,SAAW,WAC1B,OAAkB,IAAdgZ,KAAK+S,KACA,YAEF,YAAc/S,KAAKigS,OAAS,IAAMjgS,KAAK+S,KAAO,UACvD,EAEA8iY,EAAOz1Y,UAAUvM,IAAM,SAAc2C,EAAOulwB,GAC1C,OAAO/7vB,KAAKrM,IAAI6C,GAASwJ,KAAKigS,OAAS87d,CACzC,EAEAlmX,EAAOz1Y,UAAUu1B,SAAW,SAAmBwre,GAC7C,OAAOl8Y,GAAGjlH,KAAKigS,OAAQkhO,EACzB,EAEAtrH,EAAOz1Y,UAAUtF,MAAQ,SAAgBi2P,EAAOrkQ,GAC9C,IAAIqmB,EAAO/S,KAAK+S,KAChB,OAAOmmvB,EAAWnogB,EAAOrkQ,EAAKqmB,GAC1B/S,KACA,IAAI61Y,EACF71Y,KAAKigS,OACLq5d,EAAW5swB,EAAKqmB,GAAQqmvB,EAAarogB,EAAOh+O,GAEpD,EAEA8iY,EAAOz1Y,UAAU0Q,QAAU,WACzB,OAAO9Q,IACT,EAEA61Y,EAAOz1Y,UAAU7X,QAAU,SAAkB44gB,GAC3C,OAAIl8Y,GAAGjlH,KAAKigS,OAAQkhO,GACX,GAED,CACV,EAEAtrH,EAAOz1Y,UAAUi3E,YAAc,SAAsB8pb,GACnD,OAAIl8Y,GAAGjlH,KAAKigS,OAAQkhO,GACXnhgB,KAAK+S,MAEN,CACV,EAEA8iY,EAAOz1Y,UAAUguY,UAAY,SAAoBt5Y,EAAIgc,GAGnD,IAFA,IAAIiC,EAAO/S,KAAK+S,KACZ1tB,EAAI,EACDA,IAAM0tB,IAC+C,IAAtDje,EAAGkL,KAAKigS,OAAQnvR,EAAUiC,IAAS1tB,EAAIA,IAAK2a,QAIlD,OAAO3a,CACT,EAEAwwZ,EAAOz1Y,UAAU4uY,WAAa,SAAqBh/X,EAAMc,GACvD,IAAIgtvB,EAAW99vB,KAEX+S,EAAO/S,KAAK+S,KACZ1tB,EAAI,EACR,OAAO,IAAI0tZ,EAAS,WAAc,OAAO1tZ,IAAM0tB,EAj+K1C,CAAEptB,WAAOmR,EAAW0K,MAAM,GAm+KzBu5vB,EAAc/qvB,EAAMc,EAAUiC,IAAS1tB,EAAIA,IAAKy4wB,EAAS79d,OAAS,EAE1E,EAEA41G,EAAOz1Y,UAAU2nN,OAAS,SAAiBlnK,GACzC,OAAOA,aAAiBg1V,EACpB5wR,GAAGjlH,KAAKigS,OAAQp/O,EAAMo/O,QACtBl2E,GAAUlpK,EAChB,EAEOg1V,CACT,CA3F0B,CA2FxBqkX,GAIF,SAASpkX,GAAOnwZ,EAAOi9tB,GACrB,OAAOqrD,GACL,GACArrD,GAAasrD,GACbvoxB,EACA,GACAi9tB,GAAaA,EAAUxutB,OAAS,EAAI,QAAK0C,EACzC,CAAE,GAAInR,GAEV,CAEA,SAASsoxB,GAAW1nuB,EAAOq8qB,EAAWj9tB,EAAO6E,EAAKqjvB,EAASprd,GACzD,GACmB,iBAAV98R,IACNowZ,EAAYpwZ,KACZ4lO,EAAY5lO,IAAUu1wB,EAAYv1wB,IAAU+kO,GAAc/kO,IAC3D,CACA,IAAK4gD,EAAMh+C,QAAQ5C,GACjB,MAAM,IAAI2a,UAAU,kDAEtBimC,EAAMzyC,KAAKnO,GACXkovB,GAAmB,KAARrjvB,GAAcqjvB,EAAQ/5uB,KAAKtJ,GACtC,IAAI2jxB,EAAYvrD,EAAUvitB,KACxBoiR,EACAj4R,EACAirZ,EAAI9vZ,GAAOoN,IAAI,SAAUoP,EAAGsP,GAAK,OAAOw8vB,GAAW1nuB,EAAOq8qB,EAAWzgtB,EAAGsP,EAAGo8tB,EAASlovB,EAAQ,GAE5FkovB,GAAWA,EAAQ/yuB,SAIrB,OAFAyrC,EAAMlkC,MACNwruB,GAAWA,EAAQxruB,MACZ8rwB,CACT,CACA,OAAOxoxB,CACT,CAEA,SAASuoxB,GAAiBz8vB,EAAGtP,GAE3B,OAAOywY,EAAUzwY,GAAKA,EAAEkxY,SAAWV,EAAQxwY,GAAKA,EAAE2vY,QAAU3vY,EAAEgxY,OAChE,CAEA,IAAItuU,GAAU,QA4DV2wU,GAAWD,EAEf,SA5DgB,CACd1wU,QAASA,GAET0wU,WAAYA,EAEZC,SAAUD,EAEVE,IAAKA,EACLziZ,IAAKA,GACL0iZ,WAAYA,GACZC,KAAMA,GACNrtJ,MAAOA,GACPp1P,IAAKA,GACL0iZ,WAAYA,GACZw3X,YAAaA,GAEbl/X,OAAQA,GACR50N,MAAOA,GACPu8N,OAAQA,GAER5wR,GAAIA,GACJ6wR,OAAQA,GACRxpZ,KAAMA,GAENypZ,YAAaA,EACbC,aAAcA,EACdrD,QAASA,EACTC,UAAWA,EACXC,cAAeA,EACfC,UAAWA,EACXmD,cAAeA,GACfvrL,cAAeA,GACf4kL,MAAOA,EACPmC,OAAQA,GACRtoJ,MAAOA,GACP4oJ,aAAcA,GACdG,QAASA,GACT95Q,MAAOA,GACP68Q,aAAcA,GACdI,SAAUA,EAEVxhZ,IAAKA,GACLggZ,MAAOy2X,GACP32wB,IAAKA,GACLkuW,MAAO2oa,GACP14vB,MAAOA,GACP8+X,UAAW6xX,GACXvpiB,UAAWA,GACX23K,cAAe8xX,GACf//tB,OAAQA,GACR6tW,SAAUA,GACV18Y,IAAKA,GACLy8Y,MAAOwxX,GACP5rwB,OAAQ6rwB,GACRtxX,SAAU4wX,G,kBCr0LZ,IAAIl8qB,EAAa,EAAQ,OAezB3D,EAAOj9F,QANP,SAA0BuulB,GACxB,IAAI7/kB,EAAS,IAAI6/kB,EAAYvykB,YAAYuykB,EAAY3lZ,YAErD,OADA,IAAIhoG,EAAWlyF,GAAQY,IAAI,IAAIsxF,EAAW2tf,IACnC7/kB,CACT,C,+BCZArJ,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD,IAAIg8G,EAAW,EAAQ,OACnBgqJ,EAAuB,WACvB,SAASA,EAAMyihB,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCruwB,KAAKouwB,OAASA,EACdpuwB,KAAKquwB,OAASA,EACdruwB,KAAKsuwB,gBAAkB,GACvBtuwB,KAAKuuwB,QAAU5sqB,EAAS6sqB,OAAOxuwB,KAAKsuwB,gBACxC,CAoCA,OAnCA3ihB,EAAMvrP,UAAUyjG,QAAU,SAAU7wF,GAChC,IAAIkhB,EAAQl0B,KAAKouwB,OAIjB,OAHAl6uB,EAAMpgC,KAAKkf,GACPhT,KAAKquwB,QAAUn6uB,EAAM9/B,OAAS4L,KAAKquwB,QACnCruwB,KAAKyuwB,QACFz7vB,CACX,EACA24O,EAAMvrP,UAAUquwB,MAAQ,WACpB,IAAIz7vB,EAAOhT,KAAKouwB,OAAOlmuB,QAEvB,OADAloC,KAAKsuwB,gBAAgBt8wB,QAAQ,SAAU8C,GAAM,OAAOA,EAAGke,EAAO,GACvDA,CACX,EACA24O,EAAMvrP,UAAU8gU,QAAU,WACtB,GAAIlhU,KAAK+S,OACL,OAAO/S,KAAKouwB,OAAOrhvB,OAAO,EAAG,GAAG,EACxC,EACA4+N,EAAMvrP,UAAU26D,MAAQ,WACpB,IAAIllE,EAAUmK,KAAKouwB,OAEnB,OADApuwB,KAAKouwB,OAAS,GACPv4wB,CACX,EACA81P,EAAMvrP,UAAU2S,KAAO,WACnB,OAAO/S,KAAKouwB,OAAOh6wB,MACvB,EACAu3P,EAAMvrP,UAAUwiC,OAAS,SAAU5vB,GAC/B,IAAIZ,EAAMpS,KAAKouwB,OAAO7lxB,QAAQyqB,GAC9B,OAAOZ,GAAO,GAAKpS,KAAKouwB,OAAOrhvB,OAAO3a,EAAK,GAAG,EAClD,EACAu5O,EAAMvrP,UAAUogU,SAAW,WACvB,OAAOxgU,KAAKouwB,OAAOpuwB,KAAKouwB,OAAOh6wB,OAAS,EAC5C,EACAu3P,EAAMvrP,UAAUsuwB,SAAW,WACvB,GAAI1uwB,KAAK+S,OACL,OAAO/S,KAAKouwB,OAAO,EAC3B,EACOzihB,CACX,CA7C0B,GA8C1BlnQ,EAAQknQ,MAAQA,C,kBClDhB,IAAIgjhB,EAAiB,EAAQ,OACzBxpjB,EAAa,EAAQ,MACrB96N,EAAO,EAAQ,OAanBq3F,EAAOj9F,QAJP,SAAoB6mD,GAClB,OAAOqjuB,EAAerjuB,EAAQjhD,EAAM86N,EACtC,C,uBCb8J,SAASvkN,GAAG,aAAa,SAAS5b,IAAI,CAAC,SAAS6b,EAAED,GAAGZ,KAAKowF,QAAQxvF,GAAG,EAAE,CAAC,SAASvb,EAAEub,GAAGZ,KAAKowF,QAAQxvF,GAAG,EAAE,CAAC,SAASmZ,EAAEnZ,GAAGZ,KAAKowF,QAAQxvF,GAAG,EAAE,CAAC,SAAS+iE,IAAI,CAAC,SAAS1gF,EAAE2d,GAAG,OAAO,OAAOA,EAAEiiY,GAAGjiY,EAAEomB,KAAK,CAAC,SAASptB,EAAEgH,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAEnZ,MAAM,CAAC,SAASi8F,EAAE9iF,EAAE5b,GAAG,OAAO4b,IAAIA,EAAEomB,MAAMhiC,EAAE,CAAC,SAASwzB,EAAE5X,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAEzW,IAAI,CAAC,SAASvE,EAAEgb,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAE3W,KAAK,CAAC,SAASkW,IAAIH,KAAK4uwB,MAAM,KAAK5uwB,KAAK6uwB,MAAM,CAAC,CAAC,SAASxrxB,IAAI,CAAC,SAASqe,IAAI1B,KAAK8uwB,OAAO,GAAG36wB,UAAU,aAAaovY,IAAIvjY,KAAK+uwB,OAAO56wB,UAAU,GAAG,CAAC,SAASwN,IAAI,CAAC,SAASpe,EAAEqd,GAAGZ,KAAKowF,QAAQxvF,GAAG,EAAE,CAAC,SAASjd,IAAIqc,KAAK8uwB,OAAO,EAAE,CAAC,SAASx6wB,MAAM8L,WAAWtW,OAAOwY,eAAehO,MAAM8L,UAAU,OAAO,CAAC62B,cAAa,EAAGtxC,MAAM,SAASib,GAAG,GAAG,MAASZ,KAAkB,MAAM,IAAIM,UAAUN,KAAK,qBAAqB,IAAIhb,EAAE8E,OAAOkW,MAAMa,EAAErb,KAAKmE,IAAInE,KAAKkE,IAAI1E,EAAEoP,OAAO,kBAAkB,IAAI,EAAE/O,EAAE,KAAK8O,WAAUgyB,SAAShW,OAAOhc,UAAU,IAAI,KAAO,EAAE9O,EAAEA,EAAE,EAAEG,KAAKmE,IAAIkX,EAAExb,EAAE,GAAGG,KAAKkE,IAAIrE,EAAEwb,GAAG,IAAIkZ,EAAE,KAAK5lB,gBAAW,IAASA,UAAU,GAAGgyB,SAAShW,OAAOhc,UAAU,IAAI,KAAK,EAAE0M,EAAE,IAAIkZ,EAAEA,EAAE,EAAEv0B,KAAKmE,IAAIkX,EAAE1M,UAAU,GAAG,GAAG3O,KAAKkE,IAAIqwB,EAAElZ,GAAGxb,EAAE00B,GAAG/0B,EAAEK,GAAGub,IAAIvb,EAAE,OAAOL,CAAC,EAAEymC,UAAS,IAAKtb,OAAOC,SAASD,OAAOC,UAAU,SAASxP,GAAG,MAAM,iBAAiBA,GAAGwP,SAASxP,EAAE,EAAEuP,OAAO+0F,UAAU/0F,OAAO+0F,WAAW,SAAStkG,GAAG,MAAM,iBAAiBA,GAAGwP,SAASxP,IAAIpb,KAAKQ,MAAM4a,KAAKA,CAAC,EAAEuP,OAAOQ,WAAWR,OAAOQ,YAAYA,WAAWR,OAAOpqB,MAAMoqB,OAAOpqB,OAAO,SAAS6a,GAAG,OAAOA,GAAGA,CAAC,EAAEpb,KAAKwpxB,MAAMxpxB,KAAKwpxB,OAAO,SAASpuwB,GAAG,OAAOA,EAAE,EAAEpb,KAAKsjE,KAAKloD,GAAGpb,KAAKQ,MAAM4a,EAAE,EAAE,IAAIgB,EAAE,WAAW,EAAEA,EAAExB,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAErtwB,EAAExB,UAAUwtG,SAAS,WAAW,OAAOhsG,CAAC,EAAEA,EAAExB,UAAU8uwB,oBAAoB,SAAStuwB,EAAE5b,EAAE6b,GAAG,OAAOrb,KAAKM,IAAI8a,EAAE5b,IAAI6b,CAAC,EAAE,IAAI1d,EAAE,SAASyd,GAAG,SAAS5b,EAAEA,GAAG4b,EAAEP,KAAKL,KAAKhb,GAAGgb,KAAKzM,KAAK,2BAA2ByM,KAAKowF,QAAQprG,EAAEgb,KAAKumC,OAAM,IAAK3lC,GAAG2lC,KAAK,CAAC,OAAO3lC,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,CAAC,CAArN,CAAuNuiB,OAAOpF,EAAE,WAAW,EAAEgZ,EAAE,CAACg0P,UAAU,CAACl4O,cAAa,IAAK90B,EAAEpc,MAAM,SAAS6a,GAAG,OAAOuP,OAAOpqB,MAAM6a,EAAE,EAAEuB,EAAEgtwB,iBAAiB,SAASvuwB,GAAG,OAAOA,CAAC,EAAEuB,EAAEitwB,iBAAiB,SAASxuwB,GAAG,OAAOA,CAAC,EAAEuB,EAAEktwB,WAAW,SAASzuwB,GAAG,OAAOuP,OAAOC,SAASxP,EAAE,EAAEua,EAAEg0P,UAAUt7Q,IAAI,WAAW,OAAOsc,OAAOg/P,SAAS,EAAErlR,OAAO0hC,iBAAiBrpB,EAAEgZ,GAAG,IAAIjC,EAAE,WAAW,EAAE3yB,EAAE,WAAW,EAAEw0B,EAAE,WAAW,EAAE/B,EAAE,SAASpY,IAAI,GAAGZ,KAAKzZ,EAAE,KAAKyZ,KAAKrc,EAAE,KAAKqc,KAAK8hD,EAAE,KAAK,IAAI3tD,UAAUC,OAAO4L,KAAKzZ,EAAE,EAAEyZ,KAAKrc,EAAE,EAAEqc,KAAK8hD,EAAElhD,EAAE0uwB,mBAAmB,GAAG,IAAIn7wB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG6L,KAAKzZ,EAAEvB,EAAEuB,EAAEyZ,KAAKrc,EAAEqB,EAAErB,EAAEqc,KAAK8hD,EAAE98D,EAAE88D,CAAC,MAAM,IAAI3tD,UAAUC,QAAQ4L,KAAKzZ,EAAE4N,UAAU,GAAG6L,KAAKrc,EAAEwQ,UAAU,GAAG6L,KAAK8hD,EAAElhD,EAAE0uwB,eAAe,IAAIn7wB,UAAUC,SAAS4L,KAAKzZ,EAAE4N,UAAU,GAAG6L,KAAKrc,EAAEwQ,UAAU,GAAG6L,KAAK8hD,EAAE3tD,UAAU,GAAG,EAAEwmB,EAAE,CAAC40vB,sBAAsB,CAACt4uB,cAAa,GAAIu4uB,iBAAiB,CAACv4uB,cAAa,GAAIq4uB,cAAc,CAACr4uB,cAAa,GAAI3c,EAAE,CAAC2c,cAAa,GAAI5c,EAAE,CAAC4c,cAAa,GAAI7c,EAAE,CAAC6c,cAAa,IAAKje,EAAE5Y,UAAUqvwB,YAAY,SAAS7uwB,EAAE5b,GAAG,OAAO4b,GAAG,KAAKoY,EAAEsB,EAAEta,KAAKzZ,EAAEvB,EAAE,MAAM,KAAKg0B,EAAEqB,EAAEra,KAAKrc,EAAEqB,EAAE,MAAM,KAAKg0B,EAAEoB,EAAEpa,KAAK8hD,EAAE98D,EAAE,MAAM,QAAQ,MAAM,IAAI7B,EAAE,2BAA2Byd,GAAG,EAAEoY,EAAE5Y,UAAUsvwB,SAAS,WAAW,GAAG,IAAIv7wB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKzZ,IAAIqa,EAAEra,GAAGyZ,KAAKrc,IAAIid,EAAEjd,CAAC,CAAC,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,QAAQyN,EAAEstwB,oBAAoBlvwB,KAAKzZ,EAAEvB,EAAEuB,EAAEsa,MAAMe,EAAEstwB,oBAAoBlvwB,KAAKrc,EAAEqB,EAAErB,EAAEkd,EAAE,CAAC,EAAEmY,EAAE5Y,UAAUuvwB,YAAY,SAAS/uwB,GAAG,OAAOA,GAAG,KAAKoY,EAAEsB,EAAE,OAAOta,KAAKzZ,EAAE,KAAKyyB,EAAEqB,EAAE,OAAOra,KAAKrc,EAAE,KAAKq1B,EAAEoB,EAAE,OAAOpa,KAAK8hD,EAAE,MAAM,IAAI3+D,EAAE,2BAA2Byd,EAAE,EAAEoY,EAAE5Y,UAAUwvwB,SAAS,SAAShvwB,GAAG,OAAOZ,KAAKzZ,IAAIqa,EAAEra,GAAGyZ,KAAKrc,IAAIid,EAAEjd,IAAIqc,KAAK8hD,IAAIlhD,EAAEkhD,GAAG3/C,EAAEpc,MAAMia,KAAK8hD,KAAK3/C,EAAEpc,MAAM6a,EAAEkhD,EAAE,EAAE9oC,EAAE5Y,UAAU2nN,OAAO,SAASnnN,GAAG,OAAOA,aAAaoY,GAAGhZ,KAAK0vwB,SAAS9uwB,EAAE,EAAEoY,EAAE5Y,UAAUyvwB,SAAS,SAASjvwB,EAAE5b,GAAG,OAAO4c,EAAEstwB,oBAAoBlvwB,KAAK8hD,EAAElhD,EAAEkhD,EAAE98D,EAAE,EAAEg0B,EAAE5Y,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAKzZ,EAAEvB,EAAEuB,GAAG,EAAEyZ,KAAKzZ,EAAEvB,EAAEuB,EAAE,EAAEyZ,KAAKrc,EAAEqB,EAAErB,GAAG,EAAEqc,KAAKrc,EAAEqB,EAAErB,EAAE,EAAE,CAAC,EAAEq1B,EAAE5Y,UAAU6kB,MAAM,WAAW,EAAEjM,EAAE5Y,UAAUkxF,KAAK,WAAW,OAAO,IAAIt4E,EAAEhZ,KAAK,EAAEgZ,EAAE5Y,UAAUpZ,SAAS,WAAW,MAAM,IAAIgZ,KAAKzZ,EAAE,KAAKyZ,KAAKrc,EAAE,KAAKqc,KAAK8hD,EAAE,GAAG,EAAE9oC,EAAE5Y,UAAU0vwB,WAAW,SAASlvwB,GAAG,IAAI5b,EAAEgb,KAAKzZ,EAAEqa,EAAEra,EAAEsa,EAAEb,KAAKrc,EAAEid,EAAEjd,EAAE0B,EAAE2a,KAAK8hD,EAAElhD,EAAEkhD,EAAE,OAAOt8D,KAAK0vB,KAAKlwB,EAAEA,EAAE6b,EAAEA,EAAExb,EAAEA,EAAE,EAAE2zB,EAAE5Y,UAAU7H,SAAS,SAASqI,GAAG,IAAI5b,EAAEgb,KAAKzZ,EAAEqa,EAAEra,EAAEsa,EAAEb,KAAKrc,EAAEid,EAAEjd,EAAE,OAAO6B,KAAK0vB,KAAKlwB,EAAEA,EAAE6b,EAAEA,EAAE,EAAEmY,EAAE5Y,UAAUsvY,SAAS,WAAW,IAAI9uY,EAAE,GAAG,OAAmC,IAA5BA,EAAE,GAAGA,EAAEoY,EAAE02X,SAAS1vY,KAAKzZ,IAAUyyB,EAAE02X,SAAS1vY,KAAKrc,EAAE,EAAEq1B,EAAE5Y,UAAU2vwB,cAAc,SAASnvwB,GAAGZ,KAAKzZ,EAAEqa,EAAEra,EAAEyZ,KAAKrc,EAAEid,EAAEjd,EAAEqc,KAAK8hD,EAAElhD,EAAEkhD,CAAC,EAAE9oC,EAAE5Y,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE3yB,EAAEvB,EAAE,EAAEg0B,EAAE5Y,UAAUwtG,SAAS,WAAW,OAAO50F,CAAC,EAAEA,EAAE02X,SAAS,WAAW,GAAG,IAAIv7Y,UAAUC,OAAO,CAAC,IAAmBpP,EAAEmd,EAAEgtwB,iBAAjBh7wB,UAAU,IAA2B,OAAO3O,KAAKwpxB,OAAOhqxB,EAAEA,KAAK,GAAG,CAAC,EAAE21B,EAAE40vB,sBAAsB17wB,IAAI,WAAW,OAAOlS,CAAC,EAAEg5B,EAAE60vB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE8mB,EAAE20vB,cAAcz7wB,IAAI,WAAW,OAAOsO,EAAE7c,GAAG,EAAEq1B,EAAEL,EAAEzmB,IAAI,WAAW,OAAO,CAAC,EAAE8mB,EAAEN,EAAExmB,IAAI,WAAW,OAAO,CAAC,EAAE8mB,EAAEP,EAAEvmB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiBxS,EAAE2B,GAAG,IAAIh5B,EAAE,SAASif,GAAG,GAAGZ,KAAKgwwB,kBAAkB,EAAE,IAAI77wB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG,GAAG,IAAInP,GAAG,IAAIA,EAAE,MAAM,IAAI7B,EAAE,2CAA2C6c,KAAKgwwB,kBAAkBhrxB,CAAC,CAAC,EAAErD,EAAEye,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,IAAI6b,EAAED,EAAEvb,EAAEL,EAAE+0B,EAAEp4B,EAAE+9C,QAAQ7+B,EAAEta,EAAElB,EAAEkB,GAAG,GAAG,IAAIwzB,EAAE,OAAOA,EAAE,IAAI4pD,EAAEhiF,EAAE+9C,QAAQ7+B,EAAEld,EAAE0B,EAAE1B,GAAG,OAAG,IAAIggF,EAASA,EAAK3jE,KAAKgwwB,mBAAmB,EAAS,EAASruxB,EAAE+9C,QAAQ7+B,EAAEihD,EAAEz8D,EAAEy8D,EAAE,EAAEngE,EAAEye,UAAU6uwB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAEp5B,EAAEye,UAAUwtG,SAAS,WAAW,OAAOjsH,CAAC,EAAEA,EAAE+9C,QAAQ,SAAS9+B,EAAE5b,GAAG,OAAO4b,EAAE5b,GAAG,EAAE4b,EAAE5b,EAAE,EAAEmd,EAAEpc,MAAM6a,GAAGuB,EAAEpc,MAAMf,GAAG,GAAG,EAAEmd,EAAEpc,MAAMf,GAAG,EAAE,CAAC,EAAE,IAAI6U,EAAE,WAAW,EAAEA,EAAEuG,UAAUM,OAAO,WAAW,EAAE7G,EAAEuG,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEp1wB,EAAEuG,UAAUwtG,SAAS,WAAW,OAAO/zG,CAAC,EAAE,IAAI+f,EAAE,WAAW,EAAEkB,EAAE,CAACm1vB,SAAS,CAACh5uB,cAAa,GAAIi5uB,SAAS,CAACj5uB,cAAa,GAAIk5uB,SAAS,CAACl5uB,cAAa,GAAIm5uB,KAAK,CAACn5uB,cAAa,IAAKrd,EAAExZ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEr1vB,EAAExZ,UAAUwtG,SAAS,WAAW,OAAOh0F,CAAC,EAAEA,EAAEy2vB,iBAAiB,SAASzvwB,GAAG,OAAOA,GAAG,KAAKgZ,EAAEu2vB,SAAS,MAAM,IAAI,KAAKv2vB,EAAEs2vB,SAAS,MAAM,IAAI,KAAKt2vB,EAAEq2vB,SAAS,MAAM,IAAI,KAAKr2vB,EAAEw2vB,KAAK,MAAM,IAAI,MAAM,IAAIjtxB,EAAE,2BAA2Byd,EAAE,EAAEka,EAAEm1vB,SAASp8wB,IAAI,WAAW,OAAO,CAAC,EAAEinB,EAAEo1vB,SAASr8wB,IAAI,WAAW,OAAO,CAAC,EAAEinB,EAAEq1vB,SAASt8wB,IAAI,WAAW,OAAO,CAAC,EAAEinB,EAAEs1vB,KAAKv8wB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiB5R,EAAEkB,GAAG,IAAIJ,EAAE,SAAS9Z,EAAE5b,GAAG,OAAO4b,EAAEquwB,aAAaruwB,EAAEquwB,cAAc1mxB,QAAQvD,IAAI,CAAC,EAAE41B,EAAE,WAAW,EAAE1Z,EAAE,CAACovwB,OAAO,CAACr5uB,cAAa,IAAKrc,EAAExa,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEr0vB,EAAExa,UAAUwtG,SAAS,WAAW,OAAOhzF,CAAC,EAAEA,EAAElH,MAAM,SAAS9S,GAAG,IAAI5b,EAAEQ,KAAKS,IAAI2a,GAAG,OAAOuB,EAAEktwB,WAAWrqxB,IAAKmd,EAAEpc,MAAMf,GAAVA,EAAeA,EAAE41B,EAAE01vB,MAAM,EAAE11vB,EAAElxB,IAAI,SAASkX,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAEnZ,EAAE,OAAO5b,EAAE+0B,IAAIA,EAAE/0B,GAAG6b,EAAEkZ,IAAIA,EAAElZ,GAAGxb,EAAE00B,IAAIA,EAAE10B,GAAG00B,CAAC,EAAEa,EAAEsvW,MAAM,WAAW,GAAG,iBAAiB/1X,UAAU,IAAI,iBAAiBA,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIyM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOyM,EAAE5b,EAAEA,EAAE4b,EAAEC,EAAEA,EAAED,CAAC,CAAC,GAAGuP,OAAO+0F,UAAU/wG,UAAU,KAAKgc,OAAO+0F,UAAU/wG,UAAU,KAAKgc,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAI9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG,OAAO9O,EAAE00B,EAAEA,EAAE10B,EAAEs+E,EAAEA,EAAEt+E,CAAC,CAAC,EAAEu1B,EAAE0nC,KAAK,SAAS1hD,EAAE5b,GAAG,OAAO4b,EAAE,EAAE5b,IAAI4b,EAAE5b,EAAE4b,EAAE5b,CAAC,EAAE41B,EAAEjxB,IAAI,WAAW,GAAG,IAAIwK,UAAUC,OAAO,CAAC,IAAmBpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAA3C8O,UAAU,GAAqC,OAAOnP,EAAEK,IAAIA,EAAEL,GAAG6b,EAAExb,IAAIA,EAAEwb,GAAGxb,CAAC,CAAC,GAAG,IAAI8O,UAAUC,OAAO,CAAC,IAAmBuvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAA1DvvF,UAAU,GAAoD,OAAOwvE,EAAE+f,IAAIA,EAAE/f,GAAG1gF,EAAEygG,IAAIA,EAAEzgG,GAAG2W,EAAE8pF,IAAIA,EAAE9pF,GAAG8pF,CAAC,CAAC,EAAE9oE,EAAEq0D,QAAQ,SAASruE,EAAE5b,GAAG,OAAO4b,EAAE5b,GAAG,CAAC,EAAEkc,EAAEovwB,OAAOz8wB,IAAI,WAAW,OAAOrO,KAAKS,IAAI,GAAG,EAAE6D,OAAO0hC,iBAAiB5Q,EAAE1Z,GAAG,IAAI+X,EAAE,SAASrY,GAAGZ,KAAKyS,IAAI7R,CAAC,EAAEqY,EAAE7Y,UAAUmwH,OAAO,SAAS3vH,GAAGZ,KAAKyS,KAAK7R,CAAC,EAAEqY,EAAE7Y,UAAUmwwB,UAAU,SAAS3vwB,EAAE5b,GAAGgb,KAAKyS,IAAIzS,KAAKyS,IAAI0/F,OAAO,EAAEvxG,GAAG5b,EAAEgb,KAAKyS,IAAI0/F,OAAOvxG,EAAE,EAAE,EAAEqY,EAAE7Y,UAAUpZ,SAAS,SAAS4Z,GAAG,OAAOZ,KAAKyS,GAAG,EAAE,IAAIhvB,EAAE,SAASmd,GAAGZ,KAAKra,MAAMib,CAAC,EAAEnd,EAAE2c,UAAUowwB,SAAS,WAAW,OAAOxwwB,KAAKra,KAAK,EAAElC,EAAE2c,UAAUsoM,UAAU,SAAS9nM,GAAG,OAAOZ,KAAKra,MAAMib,GAAG,EAAEZ,KAAKra,MAAMib,EAAE,EAAE,CAAC,EAAEnd,EAAEsC,MAAM,SAAS6a,GAAG,OAAOuP,OAAOpqB,MAAM6a,EAAE,EAAE,IAAIkY,EAAE,WAAW,EAAEA,EAAEk7Q,aAAa,SAASpzR,GAAG,OAAOA,GAAG,IAAIA,GAAG,GAAG,MAAMA,CAAC,EAAEkY,EAAEnG,YAAY,SAAS/R,GAAG,OAAOA,EAAE+R,aAAa,EAAE,IAAIwG,EAAE,SAASvY,IAAI,GAAGZ,KAAKywwB,IAAI,EAAEzwwB,KAAK0wwB,IAAI,EAAE,IAAIv8wB,UAAUC,OAAO4L,KAAKosD,KAAK,QAAQ,GAAG,IAAIj4D,UAAUC,OAAQ,GAAG,iBAAiBD,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG6L,KAAKosD,KAAKpnE,EAAE,MAAM,GAAGmP,UAAU,aAAayM,EAAE,CAAC,IAAIC,EAAE1M,UAAU,GAAG6L,KAAKosD,KAAKvrD,EAAE,KAAS,iBAAiB1M,UAAU,IAAuByM,EAAEP,KAAKL,KAAKY,EAAEw3B,MAA3BjkC,UAAU,UAAiC,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKosD,KAAKryC,EAAE4pD,EAAE,CAAC,EAAE1oD,EAAE,CAAChI,GAAG,CAACgkB,cAAa,GAAI05uB,OAAO,CAAC15uB,cAAa,GAAI25uB,KAAK,CAAC35uB,cAAa,GAAI/d,EAAE,CAAC+d,cAAa,GAAI3xC,IAAI,CAAC2xC,cAAa,GAAI45uB,IAAI,CAAC55uB,cAAa,GAAI66N,MAAM,CAAC76N,cAAa,GAAI65uB,iBAAiB,CAAC75uB,cAAa,GAAI85uB,IAAI,CAAC95uB,cAAa,GAAI+5uB,IAAI,CAAC/5uB,cAAa,GAAIg6uB,sBAAsB,CAACh6uB,cAAa,GAAIi6uB,aAAa,CAACj6uB,cAAa,IAAK9d,EAAE/Y,UAAU+uL,GAAG,SAASvuL,GAAG,OAAOZ,KAAKywwB,IAAI7vwB,EAAE6vwB,KAAKzwwB,KAAKywwB,MAAM7vwB,EAAE6vwB,MAAMzwwB,KAAK0wwB,KAAK9vwB,EAAE8vwB,GAAG,EAAEv3vB,EAAE/Y,UAAU+wwB,yBAAyB,SAASvwwB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKla,MAAMT,EAAE8zB,EAAEi4vB,UAAUvwwB,EAAE4vwB,KAAK12vB,EAAEZ,EAAE43vB,IAAItrxB,IAAIJ,IAAIwb,EAAEA,EAAE4mP,OAAO1tO,IAAI8wV,GAAG1xV,EAAE43vB,MAAMlwwB,EAAEA,EAAE4mP,OAAOtuO,EAAE43vB,KAAK1rxB,GAAG,GAAGwb,EAAEiqW,GAAG3xV,EAAE63vB,OAAOnwwB,EAAEA,EAAE5O,SAASknB,EAAE43vB,KAAK1rxB,GAAG,GAAG,IAAI,IAAIs+E,EAAEt+E,EAAE,EAAEpC,EAAE,IAAIg2B,EAAErf,EAAEuf,EAAE23vB,iBAAiB,EAAEptrB,EAAE,EAAEA,GAAG9pF,EAAE8pF,IAAI,CAAC9iF,GAAG8iF,IAAI/f,GAAG1gF,EAAEstI,OAAO,KAAK,IAAI/3G,EAAEhzB,KAAKwpxB,MAAMnuwB,EAAE4vwB,KAAK,GAAGj4vB,EAAE,EAAE,MAAM,IAAI5yB,GAAE,EAAGua,EAAE,EAAEqY,EAAE,GAAG5yB,GAAE,EAAGua,EAAE,KAAKA,EAAE,IAAIqY,EAAEv1B,EAAEstI,OAAOpwH,GAAGU,EAAEA,EAAE42V,SAASt+U,EAAEw9L,QAAQn+L,IAAIvmB,SAASknB,EAAE43vB,KAAKnrxB,GAAGib,EAAEwwwB,QAAQl4vB,EAAE43vB,KAAK,IAAI1txB,GAAE,EAAGqe,EAAEyX,EAAEi4vB,UAAUvwwB,EAAE4vwB,KAAK,GAAG/uwB,EAAE,GAAGlc,KAAKM,IAAI4b,IAAI9H,EAAE8pF,IAAIrgG,GAAE,IAAKA,EAAE,KAAK,CAAC,OAAO2B,EAAE,GAAGK,EAAEpC,EAAE+D,UAAU,EAAEmyB,EAAE/Y,UAAUkxwB,IAAI,WAAW,OAAOtxwB,KAAK/N,SAAS+N,KAAK,EAAEmZ,EAAE/Y,UAAUmxwB,YAAY,WAAW,OAAOvxwB,KAAKywwB,IAAIzwwB,KAAK0wwB,GAAG,EAAEv3vB,EAAE/Y,UAAUq3V,SAAS,WAAW,GAAGtjW,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAK1M,IAAIsN,EAAEinB,SAAS,CAAC,GAAG,iBAAiB1zB,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK1M,KAAKtO,EAAE,CAAC,EAAEm0B,EAAE/Y,UAAU2nN,OAAO,WAAW,GAAG,IAAI5zN,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKywwB,MAAM7vwB,EAAE6vwB,KAAKzwwB,KAAK0wwB,MAAM9vwB,EAAE8vwB,GAAG,CAAC,EAAEv3vB,EAAE/Y,UAAU4qS,OAAO,WAAW,OAAO,IAAIhrS,KAAKywwB,KAAK,IAAIzwwB,KAAK0wwB,GAAG,EAAEv3vB,EAAE/Y,UAAUoxwB,aAAa,WAAW,GAAGr9wB,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAKja,QAAQia,KAAKA,KAAKqxwB,SAASzwwB,EAAE6vwB,KAAK7vwB,EAAE8vwB,IAAI,CAAC,GAAG,iBAAiBv8wB,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAO6L,KAAKja,QAAQia,KAAKA,KAAKqxwB,SAASrsxB,EAAE,EAAE,CAAC,EAAEm0B,EAAE/Y,UAAUqxwB,uBAAuB,WAAW,OAAOzxwB,KAAKgrS,SAAS,MAAMhrS,KAAKja,QAAQ,OAAO,IAAI,EAAEozB,EAAE/Y,UAAU1W,IAAI,SAASkX,GAAG,OAAOZ,KAAKmvL,GAAGvuL,GAAGZ,KAAKY,CAAC,EAAEuY,EAAE/Y,UAAUsxwB,WAAW,WAAW,GAAG,IAAIv9wB,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAK0xwB,WAAW9wwB,EAAE6vwB,IAAI7vwB,EAAE8vwB,IAAI,CAAC,GAAG,iBAAiBv8wB,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK0xwB,WAAW1sxB,EAAE,EAAE,CAAC,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAyCuvE,EAAc/pE,EAAO8pF,EAAc99F,EAAxEib,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE,KAAY92B,EAAE,KAAmBu1B,EAAE,KAAYrY,EAAE,KAAK,OAAOujF,EAAE1jF,KAAKywwB,IAAI5vwB,EAAoEV,GAApC4Z,GAA9BvB,EAAEW,EAAE24O,MAAMpuK,IAAE3pE,EAAEvB,EAAEkrE,KAAsCzgG,GAApCkd,EAAEgZ,EAAE24O,MAAMjxP,IAAc5d,EAAEkd,EAAEU,KAAEjb,EAAE89F,EAAE7iF,GAAsBkZ,GAAdngB,EAAEiH,EAAE5d,IAA5B0gF,EAAE+f,EAAE3pE,GAAwC92B,EAAE0gF,EAAE/pE,EAAkCuG,EAAEujF,GAAlClrE,GAAGxY,KAAKywwB,IAAI7qxB,EAAEua,EAAEH,KAAK0wwB,IAAIhtrB,EAAEr+F,GAAGwb,GAAQb,KAAKywwB,IAAItwwB,EAAEH,KAAK0wwB,IAAIhtrB,EAAEvjF,EAAEqY,EAAExY,IAAI,CAAC,EAAEmZ,EAAE/Y,UAAUuxwB,KAAK,WAAW,MAAM,MAAM3xwB,KAAKywwB,IAAI,KAAKzwwB,KAAK0wwB,IAAI,GAAG,EAAEv3vB,EAAE/Y,UAAUqnP,OAAO,WAAW,GAAGtzP,UAAU,aAAaglB,EAAE,CAAC,IAA0BtY,EAAckZ,EAAO4pD,EAAc/pE,EAAzDgH,EAAEzM,UAAU,GAAGnP,EAAE,KAAYK,EAAE,KAAmBpC,EAAE,KAAYygG,EAAE,KAAoK,OAA/J7iF,GAAG8iE,EAAE3jE,KAAKywwB,IAAI7vwB,EAAE6vwB,MAAMzrxB,GAAG/B,EAAEk2B,EAAE24O,MAAMnuL,IAAI3+E,EAAE/B,EAAE0gF,IAAI+f,EAAE1+F,GAAGK,GAAGq+F,EAAEvqE,EAAE24O,MAAMlxP,EAAE6vwB,MAAMprxB,EAAEq+F,EAAE9iF,EAAE6vwB,OAAO72wB,EAAE+pE,EAAE/iE,EAAE6vwB,KAAKzrxB,GAAG+0B,EAAEnZ,EAAE6vwB,IAAIprxB,GAAGwb,EAAExb,EAAEwb,EAAEkZ,EAAE92B,GAAG+c,KAAKywwB,IAAI72wB,EAAE8pF,EAAE1jF,KAAK0wwB,IAAI/ssB,EAAE/iE,EAAE8vwB,KAAK9vwB,EAAE6vwB,IAAW,IAAIt3vB,EAAEuqE,EAAE/f,EAAE1gF,EAAE0gF,EAAE+f,EAAEzgG,EAAE,CAAC,GAAG,iBAAiBkR,UAAU,GAAG,CAAC,IAAIqkB,EAAErkB,UAAU,GAAG,OAAOgO,EAAEpc,MAAMyyB,GAAGW,EAAEy4vB,YAAYz4vB,EAAEm4E,KAAKtxF,MAAM0xwB,WAAWl5vB,EAAE,EAAE,CAAC,EAAEW,EAAE/Y,UAAUmrW,GAAG,SAAS3qW,GAAG,OAAOZ,KAAKywwB,IAAI7vwB,EAAE6vwB,KAAKzwwB,KAAKywwB,MAAM7vwB,EAAE6vwB,MAAMzwwB,KAAK0wwB,KAAK9vwB,EAAE8vwB,GAAG,EAAEv3vB,EAAE/Y,UAAU3a,IAAI,SAASmb,GAAG,GAAG,IAAIA,EAAE,OAAOuY,EAAEw9L,QAAQ,GAAG,IAAI3xN,EAAE,IAAIm0B,EAAEnZ,MAAMa,EAAEsY,EAAEw9L,QAAQ,GAAGtxN,EAAEG,KAAKM,IAAI8a,GAAG,GAAGvb,EAAE,EAAE,KAAKA,EAAE,GAAGA,EAAE,GAAG,GAAGwb,EAAEgxwB,aAAa7sxB,IAAIK,GAAG,GAAG,IAAIL,EAAEA,EAAEssxB,YAAYzwwB,EAAE7b,EAAE,OAAO4b,EAAE,EAAEC,EAAEixwB,aAAajxwB,CAAC,EAAEsY,EAAE/Y,UAAU0oD,KAAK,WAAW,GAAG9oD,KAAKja,QAAQ,OAAOozB,EAAE7zB,IAAI,IAAIsb,EAAEpb,KAAKsjE,KAAK9oD,KAAKywwB,KAAKzrxB,EAAE,EAAE,OAAO4b,IAAIZ,KAAKywwB,MAAMzrxB,EAAEQ,KAAKsjE,KAAK9oD,KAAK0wwB,MAAM,IAAIv3vB,EAAEvY,EAAE5b,EAAE,EAAEm0B,EAAE/Y,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAKywwB,IAAIzrxB,EAAEyrxB,KAAK,EAAEzwwB,KAAKywwB,IAAIzrxB,EAAEyrxB,IAAI,EAAEzwwB,KAAK0wwB,IAAI1rxB,EAAE0rxB,KAAK,EAAE1wwB,KAAK0wwB,IAAI1rxB,EAAE0rxB,IAAI,EAAE,CAAC,EAAEv3vB,EAAE/Y,UAAU2xwB,KAAK,WAAW,OAAG/xwB,KAAKja,QAAeia,KAAYA,KAAK1M,IAAI,IAAItN,OAAO,EAAEmzB,EAAE/Y,UAAUo4a,SAAS,WAAW,GAAGrkb,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAKosD,KAAKxrD,GAAGZ,IAAI,CAAC,GAAG,iBAAiB7L,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAO6L,KAAKosD,KAAKpnE,GAAGgb,IAAI,CAAC,EAAEmZ,EAAE/Y,UAAUzW,IAAI,SAASiX,GAAG,OAAOZ,KAAKurW,GAAG3qW,GAAGZ,KAAKY,CAAC,EAAEuY,EAAE/Y,UAAU8U,KAAK,WAAW,GAAGlV,KAAKgrS,SAAS,OAAO7xR,EAAEw9L,QAAQ,GAAG,GAAG32M,KAAKgywB,aAAa,OAAO74vB,EAAE7zB,IAAI,IAAIsb,EAAE,EAAEpb,KAAK0vB,KAAKlV,KAAKywwB,KAAKzrxB,EAAEgb,KAAKywwB,IAAI7vwB,EAAEC,EAAEsY,EAAEw9L,QAAQ3xN,GAAGK,EAAE2a,KAAKy3V,SAAS52V,EAAEywwB,OAAOb,KAAK,GAAG7vwB,GAAG,OAAOC,EAAEvN,IAAIjO,EAAE,EAAE8zB,EAAE/Y,UAAUixwB,QAAQ,WAAW,GAAG,IAAIl9wB,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAKqxwB,QAAQzwwB,EAAE6vwB,IAAI7vwB,EAAE8vwB,IAAI,CAAC,GAAG,iBAAiBv8wB,UAAU,GAAG,CAAC,IAAmB0M,EAAOxb,EAAO00B,EAAc92B,EAAO2W,EAAlD5U,EAAEmP,UAAU,GAAwBwvE,EAAE,KAAmB,OAAiCA,GAA1B5pD,EAAE/Z,KAAKywwB,IAAIzrxB,IAAE/B,EAAE82B,EAAE/Z,KAAKywwB,KAAgDprxB,GAAnBuU,GAAnB+pE,EAAE3+E,EAAE/B,GAAG+c,KAAKywwB,IAAI9ssB,IAAO3jE,KAAK0wwB,MAAe32vB,GAAXlZ,EAAEkZ,EAAEngB,IAAYoG,KAAKywwB,IAAI5vwB,EAAExb,EAAE2a,KAAK0wwB,IAAIrrxB,GAAGwb,EAAEb,KAAKywwB,KAAKzwwB,IAAI,CAAC,MAAM,GAAG,IAAI7L,UAAUC,OAAO,CAAC,IAAkCxO,EAAOua,EAAcuB,EAAqB/d,EAAxE+/F,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAiB9Q,EAAE,KAAYse,EAAE,KAAKpe,EAAE,KAAYme,EAAE1B,KAAKywwB,IAAI/srB,EAAEvjF,EAAEH,KAAK0wwB,IAAIl4vB,EAAE7W,EAAED,GAAGne,EAAEme,EAAE1B,KAAKywwB,KAAKptxB,EAAE8c,GAAGxc,EAAEwc,EAAEH,KAAK0wwB,KAAK,IAAI9uwB,GAAGhc,EAAE8b,GAAGne,GAAGoe,EAAE+hF,EAAEngG,GAAGyc,KAAKywwB,IAAI9uwB,IAAIxB,KAAK5c,GAAGF,EAAEm1B,EAAE70B,GAAGqc,KAAK0wwB,IAAIrtxB,KAAKE,GAAGme,EAAE9b,KAAKzC,EAAEI,GAAGqC,EAAEgc,GAAG,OAAO5B,KAAKywwB,IAAI7uwB,EAAE5B,KAAK0wwB,IAAIvtxB,EAAE6c,IAAI,CAAC,EAAEmZ,EAAE/Y,UAAUyxwB,aAAa,WAAW,GAAG,IAAI19wB,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAO6L,KAAK6xwB,aAAajxwB,EAAE6vwB,IAAI7vwB,EAAE8vwB,IAAI,CAAC,GAAG,iBAAiBv8wB,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK6xwB,aAAa7sxB,EAAE,EAAE,CAAC,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAyCuvE,EAAc/pE,EAAnDiH,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE,KAAY92B,EAAE,KAAYygG,EAAE,KAAKlrE,EAAE,KAAKuB,GAAG2pE,EAAEvqE,EAAE24O,MAAM9xP,KAAKywwB,KAAKzwwB,KAAKywwB,IAAIj4vB,EAAEW,EAAE24O,MAAMjxP,EAAEkZ,EAAE2pE,EAAE3pE,EAAE4pD,EAAE3jE,KAAKywwB,IAAI12vB,EAAE92B,EAAEu1B,EAAE3X,EAAE,IAAIjb,GAAG89F,EAAE1jF,KAAKywwB,IAAI5vwB,IAAI2X,EAAEuB,GAAG92B,EAAEu1B,EAAEv1B,GAAGygG,EAAE3pE,GAAGngB,EAAEiH,EAAE5d,GAAG0gF,EAAE1gF,EAAE0gF,EAAE/pE,GAAGoG,KAAKywwB,IAAIprxB,EAAE2a,KAAK0wwB,IAAI7vwB,IAAIV,EAAEqY,GAAGuB,EAAE2pE,EAAE99F,GAAG,OAAOoa,KAAKywwB,IAAI7qxB,EAAEoa,KAAK0wwB,IAAIvwwB,EAAEH,IAAI,CAAC,EAAEmZ,EAAE/Y,UAAU6xwB,QAAQ,WAAW,OAAOjywB,KAAK6xwB,aAAa7xwB,KAAK,EAAEmZ,EAAE/Y,UAAUpa,MAAM,WAAW,GAAGga,KAAKja,QAAQ,OAAOozB,EAAE7zB,IAAI,IAAIsb,EAAEpb,KAAKQ,MAAMga,KAAKywwB,KAAKzrxB,EAAE,EAAE,OAAO4b,IAAIZ,KAAKywwB,MAAMzrxB,EAAEQ,KAAKQ,MAAMga,KAAK0wwB,MAAM,IAAIv3vB,EAAEvY,EAAE5b,EAAE,EAAEm0B,EAAE/Y,UAAUynB,OAAO,WAAW,OAAO7nB,KAAKja,QAAQia,KAAK,IAAImZ,GAAGnZ,KAAKywwB,KAAKzwwB,KAAK0wwB,IAAI,EAAEv3vB,EAAE/Y,UAAU6kB,MAAM,WAAW,EAAE9L,EAAE/Y,UAAUnO,SAAS,WAAW,GAAGkC,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAOyM,EAAE7a,QAAQozB,EAAEy4vB,YAAYz4vB,EAAEm4E,KAAKtxF,MAAM6xwB,aAAajxwB,EAAE,CAAC,GAAG,iBAAiBzM,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAOgO,EAAEpc,MAAMf,GAAGm0B,EAAEy4vB,YAAYz4vB,EAAEm4E,KAAKtxF,MAAM6xwB,aAAa7sxB,EAAE,EAAE,CAAC,EAAEm0B,EAAE/Y,UAAUra,MAAM,WAAW,OAAOoc,EAAEpc,MAAMia,KAAKywwB,IAAI,EAAEt3vB,EAAE/Y,UAAUowwB,SAAS,WAAW,OAAOhrxB,KAAKwpxB,MAAMhvwB,KAAKywwB,IAAI,EAAEt3vB,EAAE/Y,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAEuY,EAAEi4vB,UAAUpxwB,KAAKywwB,KAAK,OAAO7vwB,IAAI,GAAGA,GAAG,GAAGZ,KAAKkywB,qBAAqBlywB,KAAKmywB,eAAe,EAAEh5vB,EAAE/Y,UAAU8xwB,mBAAmB,WAAW,IAAItxwB,EAAEZ,KAAKyxwB,yBAAyB,GAAG,OAAO7wwB,EAAE,OAAOA,EAAE,IAAI5b,EAAE,IAAIsP,MAAM,GAAGm6B,KAAK,MAAM5tB,EAAEb,KAAKmxwB,0BAAyB,EAAGnsxB,GAAGK,EAAEL,EAAE,GAAG,EAAE+0B,EAAElZ,EAAE,GAAG,MAAMA,EAAE6R,OAAO,GAAGqH,EAAE,IAAIlZ,OAAO,GAAGxb,EAAE,EAAE00B,EAAE,KAAKZ,EAAEi5vB,aAAa,KAAK/sxB,GAAGwb,OAAO,IAAI,IAAIA,EAAEtY,QAAQ,KAAK,CAAC,IAAIo7E,EAAEt+E,EAAEwb,EAAEzM,OAAO2lB,EAAElZ,EAAEsY,EAAEi5vB,aAAa,IAAIzusB,GAAG,IAAI,CAAC,OAAO3jE,KAAKgywB,aAAa,IAAIj4vB,EAAEA,CAAC,EAAEZ,EAAE/Y,UAAU0xwB,WAAW,WAAW,IAAW9sxB,EAAcK,EAAO00B,EAAc92B,EAA1C2d,EAAE,KAAYC,EAAE,KAAmB8iE,EAAE,KAAY/pE,EAAE,KAAK5U,GAAG+0B,EAAE,EAAE/Z,KAAKywwB,MAAM7vwB,GAAG+iE,EAAExqD,EAAE24O,MAAM/3O,IAAInZ,EAAE+iE,EAAE5pD,IAAIlZ,GAAGjH,EAAEuf,EAAE24O,MAAM9xP,KAAKywwB,KAAKzwwB,KAAKywwB,IAAI,IAAI/srB,EAAE3pE,GAAG4pD,GAAG,GAAG1gF,EAAE82B,EAAE/Z,KAAKywwB,MAAM72wB,EAAEgH,GAAGC,EAAEjH,EAAEiH,GAAG5d,EAAE2d,GAAGvb,EAAE2a,KAAKywwB,IAAI5vwB,GAAG7b,EAAE6b,EAAE7b,EAAEK,GAAG00B,EAAE/Z,KAAK0wwB,KAAK1wwB,KAAKywwB,KAAK,OAAO,IAAIt3vB,EAAEuqE,EAAE3pE,EAAE2pE,EAAE/f,EAAE,EAAExqD,EAAE/Y,UAAU+xwB,cAAc,WAAW,GAAGnywB,KAAKgrS,SAAS,OAAO7xR,EAAE+3vB,aAAa,IAAItwwB,EAAEZ,KAAKyxwB,yBAAyB,GAAG,OAAO7wwB,EAAE,OAAOA,EAAE,IAAI5b,EAAE,IAAIsP,MAAM,GAAGm6B,KAAK,MAAM5tB,EAAEb,KAAKmxwB,0BAAyB,EAAGnsxB,GAAGK,EAAE8zB,EAAE83vB,sBAAsBjsxB,EAAE,GAAG,GAAG,MAAM6b,EAAE6R,OAAO,GAAG,MAAM,IAAInL,MAAM,uBAAuB1G,GAAG,IAAIkZ,EAAE,GAAGlZ,EAAEzM,OAAO,IAAI2lB,EAAElZ,EAAEsoF,UAAU,IAAI,IAAIxlB,EAAE9iE,EAAE6R,OAAO,GAAG,IAAIqH,EAAE,OAAO/Z,KAAKgywB,aAAa,IAAIrusB,EAAEt+E,EAAEs+E,EAAEt+E,CAAC,EAAE8zB,EAAE/Y,UAAUta,IAAI,WAAW,OAAOka,KAAKja,QAAQozB,EAAE7zB,IAAI0a,KAAKgywB,aAAahywB,KAAK6nB,SAAS,IAAI1O,EAAEnZ,KAAK,EAAEmZ,EAAE/Y,UAAUiywB,WAAW,WAAW,OAAOrywB,KAAKywwB,IAAI,GAAG,IAAIzwwB,KAAKywwB,MAAMzwwB,KAAK0wwB,IAAI,CAAC,EAAEv3vB,EAAE/Y,UAAU0qW,GAAG,SAASlqW,GAAG,OAAOZ,KAAKywwB,IAAI7vwB,EAAE6vwB,KAAKzwwB,KAAKywwB,MAAM7vwB,EAAE6vwB,MAAMzwwB,KAAK0wwB,IAAI9vwB,EAAE8vwB,GAAG,EAAEv3vB,EAAE/Y,UAAU9M,IAAI,WAAW,GAAGa,UAAU,aAAaglB,EAAE,CAAC,IAAIvY,EAAEzM,UAAU,GAAG,OAAOglB,EAAEm4E,KAAKtxF,MAAMqxwB,QAAQzwwB,EAAE,CAAC,GAAG,iBAAiBzM,UAAU,GAAG,CAAC,IAAInP,EAAEmP,UAAU,GAAG,OAAOglB,EAAEm4E,KAAKtxF,MAAMqxwB,QAAQrsxB,EAAE,CAAC,EAAEm0B,EAAE/Y,UAAUgsD,KAAK,WAAW,GAAG,IAAIj4D,UAAUC,QAAQ,GAAG,iBAAiBD,UAAU,GAAG,CAAC,IAAIyM,EAAEzM,UAAU,GAAG6L,KAAKywwB,IAAI7vwB,EAAEZ,KAAK0wwB,IAAI,CAAC,MAAM,GAAGv8wB,UAAU,aAAaglB,EAAE,CAAC,IAAIn0B,EAAEmP,UAAU,GAAG6L,KAAKywwB,IAAIzrxB,EAAEyrxB,IAAIzwwB,KAAK0wwB,IAAI1rxB,EAAE0rxB,GAAG,OAAO,GAAG,IAAIv8wB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKywwB,IAAI5vwB,EAAEb,KAAK0wwB,IAAIrrxB,CAAC,CAAC,EAAE8zB,EAAE/Y,UAAUyqW,GAAG,SAASjqW,GAAG,OAAOZ,KAAKywwB,IAAI7vwB,EAAE6vwB,KAAKzwwB,KAAKywwB,MAAM7vwB,EAAE6vwB,MAAMzwwB,KAAK0wwB,IAAI9vwB,EAAE8vwB,GAAG,EAAEv3vB,EAAE/Y,UAAU4xwB,WAAW,WAAW,OAAOhywB,KAAKywwB,IAAI,GAAG,IAAIzwwB,KAAKywwB,MAAMzwwB,KAAK0wwB,IAAI,CAAC,EAAEv3vB,EAAE/Y,UAAU4uwB,MAAM,WAAW,OAAOhvwB,KAAKja,QAAQozB,EAAE7zB,IAAI0a,KAAKqywB,aAAarywB,KAAKha,QAAQga,KAAK8oD,MAAM,EAAE3vC,EAAE/Y,UAAUkywB,OAAO,WAAW,OAAOtywB,KAAKywwB,IAAI,EAAE,EAAEzwwB,KAAKywwB,IAAI,GAAG,EAAEzwwB,KAAK0wwB,IAAI,EAAE,EAAE1wwB,KAAK0wwB,IAAI,GAAG,EAAE,CAAC,EAAEv3vB,EAAE/Y,UAAU6uwB,YAAY,WAAW,MAAM,CAACjqxB,EAAEk0B,EAAE3yB,EAAE,EAAE4yB,EAAE/Y,UAAUwtG,SAAS,WAAW,OAAOz0F,CAAC,EAAEA,EAAEm4vB,IAAI,SAAS1wwB,GAAG,OAAOuY,EAAEw9L,QAAQ/1M,GAAGixwB,aAAajxwB,EAAE,EAAEuY,EAAEw9L,QAAQ,WAAW,MAAG,iBAAiBxiN,UAAU,GAA8BglB,EAAEif,MAAtBjkC,UAAU,IAAwB,iBAAiBA,UAAU,GAA8B,IAAIglB,EAAxBhlB,UAAU,SAAlD,CAAqE,EAAEglB,EAAEjE,KAAK,SAAStU,GAAG,OAAOuY,EAAEw9L,QAAQ/1M,GAAGsU,MAAM,EAAEiE,EAAEif,MAAM,SAASx3B,GAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAED,EAAExM,OAAO0kB,EAAEk7Q,aAAapzR,EAAE8R,OAAO1tB,KAAKA,IAAI,IAAIK,GAAE,EAAG,GAAGL,EAAE6b,EAAE,CAAC,IAAIkZ,EAAEnZ,EAAE8R,OAAO1tB,GAAG,MAAM+0B,GAAG,MAAMA,IAAI/0B,IAAI,MAAM+0B,IAAI10B,GAAE,GAAI,CAAC,IAAI,IAAIs+E,EAAE,IAAIxqD,EAAEl2B,EAAE,EAAE2W,EAAE,EAAE8pF,EAAE,IAAI1+F,GAAG6b,IAAI,CAAC,IAAI2X,EAAE5X,EAAE8R,OAAO1tB,GAAG,GAAGA,IAAI8zB,EAAEy5vB,QAAQ/5vB,GAAG,CAAC,IAAI5yB,EAAE4yB,EAAE,IAAImrD,EAAEkusB,aAAa14vB,EAAE43vB,KAAKptsB,EAAE0tsB,QAAQzrxB,GAAG3C,GAAG,KAAK,CAAC,GAAG,MAAMu1B,EAAE,CAAC,GAAG,MAAMA,GAAG,MAAMA,EAAE,CAAC,IAAIrY,EAAES,EAAEuoF,UAAUnkG,GAAG,IAAI0+F,EAAEjgG,EAAE0iC,SAAShmB,EAAE,CAAC,MAAMnb,GAAG,MAAMA,aAAauiB,MAAM,IAAIA,MAAM,oBAAoBpH,EAAE,cAAcS,GAAG5b,CAAC,CAAC,KAAK,CAAC,MAAM,IAAIuiB,MAAM,yBAAyBiR,EAAE,iBAAiBxzB,EAAE,cAAc4b,EAAE,CAAChH,EAAE3W,CAAC,CAAC,CAAC,IAAII,EAAEsgF,EAAEjiE,EAAEze,EAAE2W,EAAE8pF,EAAE,GAAG,IAAIhiF,EAAEre,EAAEsgF,OAAO,GAAGjiE,EAAE,EAAE,CAAC,IAAIC,EAAEwX,EAAE43vB,IAAItrxB,IAAIic,GAAGre,EAAEsgF,EAAE8jL,OAAO9lP,EAAE,MAAM,GAAGD,EAAE,EAAE,CAAC,IAAIne,EAAE41B,EAAE43vB,IAAItrxB,KAAKic,GAAGre,EAAEsgF,EAAE1xE,SAAS1O,EAAE,CAAC,OAAO8B,EAAEhC,EAAEwkC,SAASxkC,CAAC,EAAE81B,EAAEy4vB,UAAU,WAAW,OAAO,IAAIz4vB,EAAEhX,EAAE7c,IAAI6c,EAAE7c,IAAI,EAAE6zB,EAAEm4E,KAAK,SAAS1wF,GAAG,OAAO,IAAIuY,EAAEvY,EAAE,EAAEuY,EAAEi4vB,UAAU,SAASxwwB,GAAG,IAAI5b,EAAEQ,KAAKM,IAAI8a,GAAGC,EAAErb,KAAKS,IAAIjB,GAAGQ,KAAKS,IAAI,IAAIZ,EAAEG,KAAKwpxB,MAAMxpxB,KAAKQ,MAAM6a,IAAI,OAAO,GAAGrb,KAAKC,IAAI,GAAGJ,IAAIL,IAAIK,GAAG,GAAGA,CAAC,EAAE8zB,EAAEi5vB,aAAa,SAASxxwB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIoY,EAAE5zB,EAAE,EAAEA,EAAEL,EAAEK,IAAIwb,EAAE0vH,OAAO3vH,GAAG,OAAOC,EAAE7Z,UAAU,EAAEi0B,EAAEhI,GAAGpf,IAAI,WAAW,OAAO,IAAIslB,EAAE,kBAAkB,sBAAuB,EAAE8B,EAAE01vB,OAAO98wB,IAAI,WAAW,OAAO,IAAIslB,EAAE,kBAAkB,sBAAuB,EAAE8B,EAAE21vB,KAAK/8wB,IAAI,WAAW,OAAO,IAAIslB,EAAE,mBAAmB,qBAAsB,EAAE8B,EAAE/B,EAAErlB,IAAI,WAAW,OAAO,IAAIslB,EAAE,kBAAkB,sBAAuB,EAAE8B,EAAE31B,IAAIuO,IAAI,WAAW,OAAO,IAAIslB,EAAEhX,EAAE7c,IAAI6c,EAAE7c,IAAI,EAAE21B,EAAE41vB,IAAIh9wB,IAAI,WAAW,OAAO,mBAAoB,EAAEonB,EAAE62O,MAAMj+P,IAAI,WAAW,OAAO,SAAS,EAAEonB,EAAE61vB,iBAAiBj9wB,IAAI,WAAW,OAAO,EAAE,EAAEonB,EAAE81vB,IAAIl9wB,IAAI,WAAW,OAAOslB,EAAEw9L,QAAQ,GAAG,EAAE17L,EAAE+1vB,IAAIn9wB,IAAI,WAAW,OAAOslB,EAAEw9L,QAAQ,EAAE,EAAE17L,EAAEg2vB,sBAAsBp9wB,IAAI,WAAW,MAAM,GAAG,EAAEonB,EAAEi2vB,aAAar9wB,IAAI,WAAW,MAAM,OAAO,EAAE/J,OAAO0hC,iBAAiBrS,EAAE8B,GAAG,IAAI4uE,EAAE,WAAW,EAAE9wE,EAAE,CAACy5vB,gBAAgB,CAACv7uB,cAAa,IAAK4yD,EAAEzpF,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEplrB,EAAEzpF,UAAUwtG,SAAS,WAAW,OAAO/jB,CAAC,EAAEA,EAAEm9G,iBAAiB,SAASpmM,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEwkG,EAAE4orB,uBAAuB7xwB,EAAE5b,EAAE6b,GAAG,GAAGxb,GAAG,EAAE,OAAOA,EAAE,IAAI00B,EAAEZ,EAAEw9L,QAAQ3xN,EAAEuB,GAAG8qxB,SAASzwwB,EAAEra,GAAGo9E,EAAExqD,EAAEw9L,QAAQ3xN,EAAErB,GAAG0txB,SAASzwwB,EAAEjd,GAAGV,EAAEk2B,EAAEw9L,QAAQ91M,EAAEta,GAAG8qxB,SAASrsxB,EAAEuB,GAAGqT,EAAEuf,EAAEw9L,QAAQ91M,EAAEld,GAAG0txB,SAASrsxB,EAAErB,GAAG,OAAOo2B,EAAE83vB,aAAaj4wB,GAAG43wB,aAAa7tsB,EAAEkusB,aAAa5uxB,IAAIqvxB,QAAQ,EAAEzorB,EAAE6orB,aAAa,SAAS9xwB,EAAE5b,EAAE6b,EAAExb,GAAG,OAAOub,EAAE3O,SAAS5M,GAAGmsxB,aAAaxsxB,EAAEiN,SAAS4O,IAAIyxwB,QAAQ,EAAEzorB,EAAE86H,aAAa,SAAS/jN,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAEZ,EAAEw9L,QAAQtxN,EAAE1B,GAAG6txB,aAAa3wwB,EAAEld,GAAGkuxB,aAAa14vB,EAAEw9L,QAAQ3xN,EAAEuB,GAAGirxB,aAAa5wwB,EAAEra,IAAIo9E,EAAExqD,EAAEw9L,QAAQtxN,EAAEkB,GAAGirxB,aAAa3wwB,EAAEta,GAAGsrxB,aAAa14vB,EAAEw9L,QAAQ3xN,EAAErB,GAAG6txB,aAAa5wwB,EAAEjd,IAAIV,EAAE82B,EAAE09U,SAAS9zR,GAAG/pE,EAAEuf,EAAEw9L,QAAQtxN,EAAEkB,GAAGirxB,aAAa3wwB,EAAEta,GAAGsrxB,aAAa14vB,EAAEw9L,QAAQ/1M,EAAEjd,GAAG6txB,aAAa3wwB,EAAEld,IAAI+/F,EAAEvqE,EAAEw9L,QAAQtxN,EAAE1B,GAAG6txB,aAAa3wwB,EAAEld,GAAGkuxB,aAAa14vB,EAAEw9L,QAAQ/1M,EAAEra,GAAGirxB,aAAa3wwB,EAAEta,IAAIiyB,EAAE5e,EAAE69V,SAAS/zQ,GAAGgurB,WAAWzuxB,GAAGsuxB,cAAc3rxB,EAAEuzB,EAAEw9L,QAAQ/1M,EAAEra,GAAG8qxB,QAAQl4vB,EAAEw9L,QAAQ3xN,EAAEuB,GAAGirxB,aAAa5wwB,EAAEra,GAAGsrxB,aAAar5vB,IAAI+4vB,cAAcpxwB,EAAEgZ,EAAEw9L,QAAQ3xN,EAAEuB,GAAGirxB,aAAa5wwB,EAAEra,GAAGsrxB,aAAa14vB,EAAEw9L,QAAQ/1M,EAAEjd,GAAG6txB,aAAa3wwB,EAAEld,IAAIN,EAAE81B,EAAEw9L,QAAQ3xN,EAAErB,GAAG6txB,aAAa5wwB,EAAEjd,GAAGkuxB,aAAa14vB,EAAEw9L,QAAQ/1M,EAAEra,GAAGirxB,aAAa3wwB,EAAEta,IAAImb,EAAEvB,EAAEs3V,SAASp0W,GAAGquxB,WAAWzuxB,GAAGsuxB,cAAc5vwB,EAAEwX,EAAEw9L,QAAQ91M,EAAEld,GAAG0txB,QAAQl4vB,EAAEw9L,QAAQtxN,EAAE1B,GAAG6txB,aAAa3wwB,EAAEld,GAAGkuxB,aAAanwwB,IAAI6vwB,cAAc,OAAO,IAAIv4vB,EAAEpzB,EAAE+b,EAAE,EAAEkoF,EAAE4orB,uBAAuB,SAAS7xwB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,KAAK00B,GAAGnZ,EAAEra,EAAEsa,EAAEta,IAAIvB,EAAErB,EAAEkd,EAAEld,GAAGggF,GAAG/iE,EAAEjd,EAAEkd,EAAEld,IAAIqB,EAAEuB,EAAEsa,EAAEta,GAAGtD,EAAE82B,EAAE4pD,EAAE,GAAG5pD,EAAE,EAAE,CAAC,GAAG4pD,GAAG,EAAE,OAAOkmB,EAAEyorB,OAAOrvxB,GAAGoC,EAAE00B,EAAE4pD,CAAC,KAAK,CAAC,KAAK5pD,EAAE,GAAG,OAAO8vE,EAAEyorB,OAAOrvxB,GAAG,GAAG0gF,GAAG,EAAE,OAAOkmB,EAAEyorB,OAAOrvxB,GAAGoC,GAAG00B,EAAE4pD,CAAC,CAAC,IAAI/pE,EAAEiwF,EAAE2orB,gBAAgBntxB,EAAE,OAAOpC,GAAG2W,IAAI3W,GAAG2W,EAAEiwF,EAAEyorB,OAAOrvxB,GAAG,CAAC,EAAE4mG,EAAEyorB,OAAO,SAAS1xwB,GAAG,OAAOA,EAAE,EAAE,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEmY,EAAEy5vB,gBAAgB3+wB,IAAI,WAAW,OAAO,KAAK,EAAE/J,OAAO0hC,iBAAiBq+D,EAAE9wE,GAAG,IAAIyB,EAAE,WAAW,EAAEC,EAAE,CAACH,EAAE,CAAC2c,cAAa,GAAI5c,EAAE,CAAC4c,cAAa,GAAI7c,EAAE,CAAC6c,cAAa,GAAIxzC,EAAE,CAACwzC,cAAa,IAAKxc,EAAEH,EAAEzmB,IAAI,WAAW,OAAO,CAAC,EAAE4mB,EAAEJ,EAAExmB,IAAI,WAAW,OAAO,CAAC,EAAE4mB,EAAEL,EAAEvmB,IAAI,WAAW,OAAO,CAAC,EAAE4mB,EAAEh3B,EAAEoQ,IAAI,WAAW,OAAO,CAAC,EAAE2mB,EAAEpa,UAAUqvwB,YAAY,SAAS7uwB,EAAE5b,EAAE6b,GAAG,EAAE2Z,EAAEpa,UAAU2S,KAAK,WAAW,EAAEyH,EAAEpa,UAAUuvwB,YAAY,SAAS/uwB,EAAE5b,GAAG,EAAEw1B,EAAEpa,UAAUuywB,cAAc,WAAW,EAAEn4vB,EAAEpa,UAAUwywB,kBAAkB,SAAShywB,GAAG,EAAE4Z,EAAEpa,UAAUgprB,aAAa,WAAW,EAAE5uqB,EAAEpa,UAAU22Z,KAAK,SAASn2Z,GAAG,EAAE4Z,EAAEpa,UAAU6kB,MAAM,WAAW,EAAEzK,EAAEpa,UAAUyywB,eAAe,SAASjywB,GAAG,EAAE4Z,EAAEpa,UAAUkxF,KAAK,WAAW,EAAE92E,EAAEpa,UAAU42Z,KAAK,SAASp2Z,GAAG,EAAE4Z,EAAEpa,UAAU0ywB,kBAAkB,WAAW,EAAEt4vB,EAAEpa,UAAU6uwB,YAAY,WAAW,MAAM,CAAC1oxB,EAAE,EAAEi0B,EAAEpa,UAAUwtG,SAAS,WAAW,OAAOpzF,CAAC,EAAE1wB,OAAO0hC,iBAAiBhR,EAAEC,GAAG,IAAIqnC,EAAE,WAAW,EAAExnC,EAAE,SAAS1Z,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,KAAK,6DAA6D,CAAC,OAAOY,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAzR,CAA2R88D,GAAGznC,EAAE,WAAW,EAAEA,EAAE04vB,UAAU,SAASnywB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI,IAAI4pD,EAAE,EAAE1gF,EAAE+B,EAAE/B,EAAE+B,EAAE+0B,EAAE92B,IAAI4d,EAAExb,EAAEs+E,GAAG/iE,EAAE3d,GAAG0gF,GAAG,EAAEtpD,EAAE0xN,YAAY,SAASnrO,GAAG,MAAM,CAAC,iBAAiB,MAAMA,EAAE,EAAE,IAAI6Q,EAAE,SAAS7Q,IAAI,GAAGZ,KAAKzZ,EAAE,KAAKyZ,KAAKrc,EAAE,KAAKqc,KAAK4Z,EAAE,KAAK,IAAIzlB,UAAUC,OAAO4L,KAAKzZ,EAAE,EAAEyZ,KAAKrc,EAAE,EAAEqc,KAAK4Z,EAAE,OAAO,GAAG,IAAIzlB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG6L,KAAKzZ,EAAEvB,EAAEuB,EAAEyZ,KAAKrc,EAAEqB,EAAErB,EAAEqc,KAAK4Z,EAAE,CAAC,MAAM,GAAG,IAAIzlB,UAAUC,QAAQ,GAAG,iBAAiBD,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAI0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKzZ,EAAEsa,EAAEb,KAAKrc,EAAE0B,EAAE2a,KAAK4Z,EAAE,CAAC,MAAM,GAAGzlB,UAAU,aAAayM,GAAGzM,UAAU,aAAayM,EAAE,CAAC,IAAImZ,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKzZ,EAAEwzB,EAAEp2B,EAAEggF,EAAE/pD,EAAE+pD,EAAEhgF,EAAEo2B,EAAEH,EAAE5Z,KAAKrc,EAAEggF,EAAEp9E,EAAEwzB,EAAEH,EAAEG,EAAExzB,EAAEo9E,EAAE/pD,EAAE5Z,KAAK4Z,EAAEG,EAAExzB,EAAEo9E,EAAEhgF,EAAEggF,EAAEp9E,EAAEwzB,EAAEp2B,CAAC,MAAM,GAAGwQ,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAa6kB,EAAE,CAAC,IAAI/1B,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKzZ,EAAEtD,EAAEU,EAAEiW,EAAEjW,EAAEqc,KAAKrc,EAAEiW,EAAErT,EAAEtD,EAAEsD,EAAEyZ,KAAK4Z,EAAE32B,EAAEsD,EAAEqT,EAAEjW,EAAEiW,EAAErT,EAAEtD,EAAEU,CAAC,OAAO,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAIsvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAGvO,EAAEuO,UAAU,GAAG6L,KAAKzZ,EAAEm9F,EAAE1jF,KAAKrc,EAAE60B,EAAExY,KAAK4Z,EAAEh0B,CAAC,MAAM,GAAG,IAAIuO,UAAUC,OAAO,CAAC,IAAI+L,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAAEvN,UAAU,GAAGwN,EAAExN,UAAU,GAAG5Q,EAAE4c,EAAExc,EAAEN,EAAEM,EAAEA,EAAEN,EAAEkD,EAAE4Z,EAAE5Z,EAAEqb,EAAEzB,EAAE5Z,EAAElD,EAAEM,EAAEN,EAAEkD,EAAE4Z,EAAExc,EAAER,EAAEue,EAAE/d,EAAEge,EAAEhe,EAAEwe,EAAER,EAAEpb,EAAEmb,EAAEnb,EAAE40B,EAAEzZ,EAAEnb,EAAEob,EAAEhe,EAAEge,EAAEpb,EAAEmb,EAAE/d,EAAEqc,KAAKzZ,EAAE5C,EAAEw3B,EAAEhZ,EAAEP,EAAE5B,KAAKrc,EAAER,EAAEye,EAAEre,EAAE43B,EAAEnb,KAAK4Z,EAAEr2B,EAAE4e,EAAEhf,EAAEQ,CAAC,CAAC,EAAE8tB,EAAErR,UAAU42Z,KAAK,WAAW,IAAIp2Z,EAAEZ,KAAKrc,EAAEqc,KAAK4Z,EAAE,GAAGzX,EAAEpc,MAAM6a,IAAIuB,EAAEktwB,WAAWzuwB,GAAG,MAAM,IAAI0Z,EAAE,OAAO1Z,CAAC,EAAE6Q,EAAErR,UAAU22Z,KAAK,WAAW,IAAIn2Z,EAAEZ,KAAKzZ,EAAEyZ,KAAK4Z,EAAE,GAAGzX,EAAEpc,MAAM6a,IAAIuB,EAAEktwB,WAAWzuwB,GAAG,MAAM,IAAI0Z,EAAE,OAAO1Z,CAAC,EAAE6Q,EAAErR,UAAUuywB,cAAc,WAAW,IAAI/xwB,EAAE,IAAIoY,EAAE,OAAOpY,EAAEra,EAAEyZ,KAAK+2Z,OAAOn2Z,EAAEjd,EAAEqc,KAAKg3Z,OAAOp2Z,CAAC,EAAE6Q,EAAErR,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEx9vB,EAAErR,UAAUwtG,SAAS,WAAW,OAAOn8F,CAAC,EAAEA,EAAEkzM,aAAa,SAAS/jN,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAEnZ,EAAEjd,EAAEqB,EAAErB,EAAEggF,EAAE3+E,EAAEuB,EAAEqa,EAAEra,EAAEtD,EAAE2d,EAAEra,EAAEvB,EAAErB,EAAEqB,EAAEuB,EAAEqa,EAAEjd,EAAEiW,EAAEiH,EAAEld,EAAE0B,EAAE1B,EAAE+/F,EAAEr+F,EAAEkB,EAAEsa,EAAEta,EAAEiyB,EAAE3X,EAAEta,EAAElB,EAAE1B,EAAE0B,EAAEkB,EAAEsa,EAAEld,EAAEiC,EAAEm0B,EAAE2pE,EAAE9pF,EAAE+pE,EAAExjE,GAAGwjE,EAAEnrD,EAAEkrE,EAAEzgG,GAAG2C,EAAEvC,GAAGuW,EAAE3W,EAAE82B,EAAEvB,GAAG5yB,EAAE,GAAGuc,EAAEpc,MAAMoa,IAAIgC,EAAEktwB,WAAWlvwB,IAAIgC,EAAEpc,MAAM1C,IAAI8e,EAAEktwB,WAAWhsxB,GAAG,MAAM,IAAIi3B,EAAE,OAAO,IAAItB,EAAE7Y,EAAE9c,EAAE,EAAE,IAAI2iC,EAAE,SAASplB,IAAI,GAAGZ,KAAKgzwB,MAAM,KAAKhzwB,KAAKizwB,MAAM,KAAKjzwB,KAAKkzwB,MAAM,KAAKlzwB,KAAKmzwB,MAAM,KAAK,IAAIh/wB,UAAUC,OAAO4L,KAAKosD,YAAY,GAAG,IAAIj4D,UAAUC,QAAQ,GAAGD,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG6L,KAAKosD,KAAKpnE,EAAEuB,EAAEvB,EAAEuB,EAAEvB,EAAErB,EAAEqB,EAAErB,EAAE,MAAM,GAAGwQ,UAAU,aAAayM,EAAE,CAAC,IAAIC,EAAE1M,UAAU,GAAG6L,KAAKosD,KAAKvrD,EAAE,OAAO,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKosD,KAAK/mE,EAAEkB,EAAEwzB,EAAExzB,EAAElB,EAAE1B,EAAEo2B,EAAEp2B,EAAE,MAAM,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAIuvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAG6L,KAAKosD,KAAKuX,EAAE1gF,EAAE2W,EAAE8pF,EAAE,CAAC,EAAExoE,EAAE,CAACs0vB,iBAAiB,CAACv4uB,cAAa,IAAKjR,EAAE5lB,UAAUgzwB,QAAQ,WAAW,OAAOpzwB,KAAKmoU,WAAWnoU,KAAKooU,WAAW,EAAEpiT,EAAE5lB,UAAU2nN,OAAO,SAASnnN,GAAG,KAAKA,aAAaolB,GAAG,OAAM,EAAG,IAAIhhC,EAAE4b,EAAE,OAAOZ,KAAKo8M,SAASp3N,EAAEo3N,SAASp8M,KAAKizwB,QAAQjuxB,EAAEquxB,WAAWrzwB,KAAKmzwB,QAAQnuxB,EAAEsuxB,WAAWtzwB,KAAKgzwB,QAAQhuxB,EAAEuuxB,WAAWvzwB,KAAKkzwB,QAAQluxB,EAAEwuxB,SAAS,EAAExtvB,EAAE5lB,UAAUukN,aAAa,SAAS/jN,GAAG,GAAGZ,KAAKo8M,UAAUx7M,EAAEw7M,WAAWp8M,KAAKo7Y,WAAWx6Y,GAAG,OAAO,IAAIolB,EAAE,IAAIhhC,EAAEgb,KAAKgzwB,MAAMpywB,EAAEoywB,MAAMhzwB,KAAKgzwB,MAAMpywB,EAAEoywB,MAAMnywB,EAAEb,KAAKkzwB,MAAMtywB,EAAEsywB,MAAMlzwB,KAAKkzwB,MAAMtywB,EAAEsywB,MAAM7txB,EAAE2a,KAAKizwB,MAAMrywB,EAAEqywB,MAAMjzwB,KAAKizwB,MAAMrywB,EAAEqywB,MAAMl5vB,EAAE/Z,KAAKmzwB,MAAMvywB,EAAEuywB,MAAMnzwB,KAAKmzwB,MAAMvywB,EAAEuywB,MAAM,OAAO,IAAIntvB,EAAEhhC,EAAEK,EAAEwb,EAAEkZ,EAAE,EAAEiM,EAAE5lB,UAAUg8M,OAAO,WAAW,OAAOp8M,KAAKizwB,MAAMjzwB,KAAKgzwB,KAAK,EAAEhtvB,EAAE5lB,UAAUizwB,QAAQ,WAAW,OAAOrzwB,KAAKizwB,KAAK,EAAEjtvB,EAAE5lB,UAAUqzwB,OAAO,WAAW,GAAG,IAAIt/wB,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAG,OAAO6L,KAAKyzwB,OAAO7ywB,EAAEra,EAAEqa,EAAEjd,EAAE,CAAC,GAAGwQ,UAAU,aAAa6xB,EAAE,CAAC,IAAIhhC,EAAEmP,UAAU,GAAG,OAAO6L,KAAKo8M,WAAWp3N,EAAEo3N,UAAWp3N,EAAEuuxB,WAAWvzwB,KAAKgzwB,OAAOhuxB,EAAEquxB,WAAWrzwB,KAAKizwB,OAAOjuxB,EAAEwuxB,WAAWxzwB,KAAKkzwB,OAAOluxB,EAAEsuxB,WAAWtzwB,KAAKmzwB,KAAM,CAAC,MAAM,GAAG,IAAIh/wB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO6L,KAAKo8M,UAAWv7M,GAAGb,KAAKgzwB,OAAOnywB,GAAGb,KAAKizwB,OAAO5txB,GAAG2a,KAAKkzwB,OAAO7txB,GAAG2a,KAAKmzwB,KAAM,CAAC,EAAEntvB,EAAE5lB,UAAUg7Y,WAAW,WAAW,GAAG,IAAIjnZ,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa6xB,EAAE,CAAC,IAAIplB,EAAEzM,UAAU,GAAG,OAAO6L,KAAKo8M,WAAWx7M,EAAEw7M,YAAYx7M,EAAEoywB,MAAMhzwB,KAAKizwB,OAAOrywB,EAAEqywB,MAAMjzwB,KAAKgzwB,OAAOpywB,EAAEsywB,MAAMlzwB,KAAKmzwB,OAAOvywB,EAAEuywB,MAAMnzwB,KAAKkzwB,MAAM,CAAC,GAAG/+wB,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG,OAAO6L,KAAKo7Y,WAAWp2Z,EAAEuB,EAAEvB,EAAErB,EAAE,CAAC,MAAM,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO6L,KAAKo8M,YAAYv7M,EAAEb,KAAKizwB,OAAOpywB,EAAEb,KAAKgzwB,OAAO3txB,EAAE2a,KAAKmzwB,OAAO9txB,EAAE2a,KAAKkzwB,MAAM,CAAC,EAAEltvB,EAAE5lB,UAAUozwB,QAAQ,WAAW,OAAOxzwB,KAAKkzwB,KAAK,EAAEltvB,EAAE5lB,UAAUmzwB,QAAQ,WAAW,OAAOvzwB,KAAKgzwB,KAAK,EAAEhtvB,EAAE5lB,UAAUszwB,gBAAgB,WAAW,GAAG,IAAIv/wB,UAAUC,QAAQ,GAAGD,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAG6L,KAAK0zwB,gBAAgB9ywB,EAAEra,EAAEqa,EAAEjd,EAAE,MAAM,GAAGwQ,UAAU,aAAa6xB,EAAE,CAAC,IAAIhhC,EAAEmP,UAAU,GAAG,GAAGnP,EAAEo3N,SAAS,OAAO,KAAKp8M,KAAKo8M,UAAUp8M,KAAKgzwB,MAAMhuxB,EAAEuuxB,UAAUvzwB,KAAKizwB,MAAMjuxB,EAAEquxB,UAAUrzwB,KAAKkzwB,MAAMluxB,EAAEwuxB,UAAUxzwB,KAAKmzwB,MAAMnuxB,EAAEsuxB,YAAYtuxB,EAAEguxB,MAAMhzwB,KAAKgzwB,QAAQhzwB,KAAKgzwB,MAAMhuxB,EAAEguxB,OAAOhuxB,EAAEiuxB,MAAMjzwB,KAAKizwB,QAAQjzwB,KAAKizwB,MAAMjuxB,EAAEiuxB,OAAOjuxB,EAAEkuxB,MAAMlzwB,KAAKkzwB,QAAQlzwB,KAAKkzwB,MAAMluxB,EAAEkuxB,OAAOluxB,EAAEmuxB,MAAMnzwB,KAAKmzwB,QAAQnzwB,KAAKmzwB,MAAMnuxB,EAAEmuxB,OAAO,OAAO,GAAG,IAAIh/wB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKo8M,UAAUp8M,KAAKgzwB,MAAMnywB,EAAEb,KAAKizwB,MAAMpywB,EAAEb,KAAKkzwB,MAAM7txB,EAAE2a,KAAKmzwB,MAAM9txB,IAAIwb,EAAEb,KAAKgzwB,QAAQhzwB,KAAKgzwB,MAAMnywB,GAAGA,EAAEb,KAAKizwB,QAAQjzwB,KAAKizwB,MAAMpywB,GAAGxb,EAAE2a,KAAKkzwB,QAAQlzwB,KAAKkzwB,MAAM7txB,GAAGA,EAAE2a,KAAKmzwB,QAAQnzwB,KAAKmzwB,MAAM9txB,GAAG,CAAC,EAAE2gC,EAAE5lB,UAAUuzwB,UAAU,WAAW,GAAG3zwB,KAAKo8M,SAAS,OAAO,EAAE,IAAIx7M,EAAEZ,KAAKmoU,WAAWnjV,EAAEgb,KAAKooU,YAAY,OAAOxnU,EAAE5b,EAAE4b,EAAE5b,CAAC,EAAEghC,EAAE5lB,UAAU+nU,SAAS,WAAW,OAAOnoU,KAAKo8M,SAAS,EAAEp8M,KAAKizwB,MAAMjzwB,KAAKgzwB,KAAK,EAAEhtvB,EAAE5lB,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAKo8M,SAASp3N,EAAEo3N,SAAS,GAAG,EAAEp3N,EAAEo3N,SAAS,EAAEp8M,KAAKgzwB,MAAMhuxB,EAAEguxB,OAAO,EAAEhzwB,KAAKgzwB,MAAMhuxB,EAAEguxB,MAAM,EAAEhzwB,KAAKkzwB,MAAMluxB,EAAEkuxB,OAAO,EAAElzwB,KAAKkzwB,MAAMluxB,EAAEkuxB,MAAM,EAAElzwB,KAAKizwB,MAAMjuxB,EAAEiuxB,OAAO,EAAEjzwB,KAAKizwB,MAAMjuxB,EAAEiuxB,MAAM,EAAEjzwB,KAAKmzwB,MAAMnuxB,EAAEmuxB,OAAO,EAAEnzwB,KAAKmzwB,MAAMnuxB,EAAEmuxB,MAAM,EAAE,CAAC,EAAEntvB,EAAE5lB,UAAU6tB,UAAU,SAASrtB,EAAE5b,GAAG,GAAGgb,KAAKo8M,SAAS,OAAO,KAAKp8M,KAAKosD,KAAKpsD,KAAKuzwB,UAAU3ywB,EAAEZ,KAAKqzwB,UAAUzywB,EAAEZ,KAAKwzwB,UAAUxuxB,EAAEgb,KAAKszwB,UAAUtuxB,EAAE,EAAEghC,EAAE5lB,UAAUpZ,SAAS,WAAW,MAAM,OAAOgZ,KAAKgzwB,MAAM,MAAMhzwB,KAAKizwB,MAAM,KAAKjzwB,KAAKkzwB,MAAM,MAAMlzwB,KAAKmzwB,MAAM,GAAG,EAAEntvB,EAAE5lB,UAAUwzwB,UAAU,WAAW5zwB,KAAKgzwB,MAAM,EAAEhzwB,KAAKizwB,OAAO,EAAEjzwB,KAAKkzwB,MAAM,EAAElzwB,KAAKmzwB,OAAO,CAAC,EAAEntvB,EAAE5lB,UAAUgoU,UAAU,WAAW,OAAOpoU,KAAKo8M,SAAS,EAAEp8M,KAAKmzwB,MAAMnzwB,KAAKkzwB,KAAK,EAAEltvB,EAAE5lB,UAAUyzwB,UAAU,WAAW,GAAG7zwB,KAAKo8M,SAAS,OAAO,EAAE,IAAIx7M,EAAEZ,KAAKmoU,WAAWnjV,EAAEgb,KAAKooU,YAAY,OAAOxnU,EAAE5b,EAAE4b,EAAE5b,CAAC,EAAEghC,EAAE5lB,UAAU4wqB,SAAS,WAAW,GAAG,IAAI78qB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKgxqB,SAASpwqB,EAAEA,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAKo8M,SAAS,OAAO,KAAKp8M,KAAKgzwB,OAAOhuxB,EAAEgb,KAAKizwB,OAAOjuxB,EAAEgb,KAAKkzwB,OAAOrywB,EAAEb,KAAKmzwB,OAAOtywB,GAAGb,KAAKgzwB,MAAMhzwB,KAAKizwB,OAAOjzwB,KAAKkzwB,MAAMlzwB,KAAKmzwB,QAAQnzwB,KAAK4zwB,WAAW,CAAC,EAAE5tvB,EAAE5lB,UAAU5Y,SAAS,WAAW,GAAG,IAAI2M,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa6xB,EAAE,CAAC,IAAIplB,EAAEzM,UAAU,GAAG,OAAO6L,KAAKyzwB,OAAO7ywB,EAAE,CAAC,GAAGzM,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG,OAAO6L,KAAKyzwB,OAAOzuxB,EAAE,CAAC,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO6L,KAAKyzwB,OAAO5ywB,EAAExb,EAAE,CAAC,EAAE2gC,EAAE5lB,UAAU0zwB,OAAO,WAAW,OAAO9zwB,KAAKo8M,SAAS,KAAK,IAAIpjM,GAAGhZ,KAAKuzwB,UAAUvzwB,KAAKqzwB,WAAW,GAAGrzwB,KAAKwzwB,UAAUxzwB,KAAKszwB,WAAW,EAAE,EAAEttvB,EAAE5lB,UAAUgsD,KAAK,WAAW,GAAG,IAAIj4D,UAAUC,OAAO4L,KAAK4zwB,iBAAiB,GAAG,IAAIz/wB,UAAUC,QAAQ,GAAGD,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAG6L,KAAKosD,KAAKxrD,EAAEra,EAAEqa,EAAEra,EAAEqa,EAAEjd,EAAEid,EAAEjd,EAAE,MAAM,GAAGwQ,UAAU,aAAa6xB,EAAE,CAAC,IAAIhhC,EAAEmP,UAAU,GAAG6L,KAAKgzwB,MAAMhuxB,EAAEguxB,MAAMhzwB,KAAKizwB,MAAMjuxB,EAAEiuxB,MAAMjzwB,KAAKkzwB,MAAMluxB,EAAEkuxB,MAAMlzwB,KAAKmzwB,MAAMnuxB,EAAEmuxB,KAAK,OAAO,GAAG,IAAIh/wB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKosD,KAAKvrD,EAAEta,EAAElB,EAAEkB,EAAEsa,EAAEld,EAAE0B,EAAE1B,EAAE,MAAM,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG4lB,EAAE4pD,GAAG3jE,KAAKgzwB,MAAMj5vB,EAAE/Z,KAAKizwB,MAAMtvsB,IAAI3jE,KAAKgzwB,MAAMrvsB,EAAE3jE,KAAKizwB,MAAMl5vB,GAAG92B,EAAE2W,GAAGoG,KAAKkzwB,MAAMjwxB,EAAE+c,KAAKmzwB,MAAMv5wB,IAAIoG,KAAKkzwB,MAAMt5wB,EAAEoG,KAAKmzwB,MAAMlwxB,EAAE,CAAC,EAAE+iC,EAAE5lB,UAAUkzwB,QAAQ,WAAW,OAAOtzwB,KAAKmzwB,KAAK,EAAEntvB,EAAE5lB,UAAU7H,SAAS,SAASqI,GAAG,GAAGZ,KAAKo7Y,WAAWx6Y,GAAG,OAAO,EAAE,IAAI5b,EAAE,EAAEgb,KAAKizwB,MAAMrywB,EAAEoywB,MAAMhuxB,EAAE4b,EAAEoywB,MAAMhzwB,KAAKizwB,MAAMjzwB,KAAKgzwB,MAAMpywB,EAAEqywB,QAAQjuxB,EAAEgb,KAAKgzwB,MAAMpywB,EAAEqywB,OAAO,IAAIpywB,EAAE,EAAE,OAAOb,KAAKmzwB,MAAMvywB,EAAEsywB,MAAMrywB,EAAED,EAAEsywB,MAAMlzwB,KAAKmzwB,MAAMnzwB,KAAKkzwB,MAAMtywB,EAAEuywB,QAAQtywB,EAAEb,KAAKkzwB,MAAMtywB,EAAEuywB,OAAO,IAAInuxB,EAAE6b,EAAE,IAAIA,EAAE7b,EAAEQ,KAAK0vB,KAAKlwB,EAAEA,EAAE6b,EAAEA,EAAE,EAAEmlB,EAAE5lB,UAAUsvY,SAAS,WAAW,IAAI9uY,EAAE,GAAG,OAAmG,IAAhCA,EAAE,IAAhCA,EAAE,IAAhCA,EAAE,GAAGA,EAAEoY,EAAE02X,SAAS1vY,KAAKgzwB,QAAch6vB,EAAE02X,SAAS1vY,KAAKizwB,QAAcj6vB,EAAE02X,SAAS1vY,KAAKkzwB,QAAcl6vB,EAAE02X,SAAS1vY,KAAKmzwB,MAAM,EAAEntvB,EAAE5lB,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAEl0B,EAAE,EAAEghC,EAAE5lB,UAAUwtG,SAAS,WAAW,OAAO5nF,CAAC,EAAEA,EAAEo1X,WAAW,WAAW,GAAG,IAAIjnZ,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAO0M,EAAEta,IAAIqa,EAAEra,EAAEvB,EAAEuB,EAAEqa,EAAEra,EAAEvB,EAAEuB,IAAIsa,EAAEta,IAAIqa,EAAEra,EAAEvB,EAAEuB,EAAEqa,EAAEra,EAAEvB,EAAEuB,IAAIsa,EAAEld,IAAIid,EAAEjd,EAAEqB,EAAErB,EAAEid,EAAEjd,EAAEqB,EAAErB,IAAIkd,EAAEld,IAAIid,EAAEjd,EAAEqB,EAAErB,EAAEid,EAAEjd,EAAEqB,EAAErB,EAAE,CAAC,GAAG,IAAIwQ,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEpU,KAAKkE,IAAIi6E,EAAEp9E,EAAEtD,EAAEsD,GAAGm9F,EAAEl+F,KAAKmE,IAAIg6E,EAAEp9E,EAAEtD,EAAEsD,GAAGiyB,EAAEhzB,KAAKkE,IAAIrE,EAAEkB,EAAEwzB,EAAExzB,GAAGX,EAAEJ,KAAKmE,IAAItE,EAAEkB,EAAEwzB,EAAExzB,GAAG,QAAQiyB,EAAEkrE,GAAO99F,EAAEgU,IAAKA,EAAEpU,KAAKkE,IAAIi6E,EAAEhgF,EAAEV,EAAEU,GAAG+/F,EAAEl+F,KAAKmE,IAAIg6E,EAAEhgF,EAAEV,EAAEU,GAAG60B,EAAEhzB,KAAKkE,IAAIrE,EAAE1B,EAAEo2B,EAAEp2B,GAAGiC,EAAEJ,KAAKmE,IAAItE,EAAE1B,EAAEo2B,EAAEp2B,GAAK60B,EAAEkrE,GAAM99F,EAAEgU,GAAI,CAAC,EAAEshB,EAAEs0vB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxF,EAAE9K,GAAG,IAAIX,EAAE,CAACw5vB,QAAQ,iCAAiCC,aAAa,wBAAwBC,OAAO,MAAMC,WAAW,cAAcC,iBAAiB,wBAAwBC,WAAW,uBAAuBp5vB,EAAE,SAASpa,GAAGZ,KAAKq0wB,gBAAgBzzwB,GAAG,IAAIsqG,EAAE,EAAElwF,EAAE5a,UAAU1b,KAAK,SAASkc,GAAG,IAAI5b,EAAE6b,EAAExb,EAAEub,EAAEA,EAAE7c,QAAQ,UAAU,KAAK,IAAIg2B,EAAEQ,EAAEw5vB,QAAQ1uvB,KAAKzkB,GAAG,IAAI,IAAIA,EAAE0sM,OAAO,YAAYvzL,EAAEQ,EAAEy5vB,aAAa3uvB,KAAKzkB,IAAI,QAAG,GAAQmZ,IAAIlZ,EAAEkZ,EAAE,GAAG3xB,cAAc/C,EAAE00B,EAAE,GAAGc,EAAEha,KAAK7b,EAAE61B,EAAEha,GAAGC,MAAMd,KAAK,CAAC3a,WAAM,IAASL,EAAE,MAAM,IAAIuiB,MAAM,uBAAuB3G,GAAG,OAAO5b,CAAC,EAAEg2B,EAAE5a,UAAU1a,MAAM,SAASkb,GAAG,OAAOZ,KAAKs0wB,gBAAgB1zwB,EAAE,EAAEoa,EAAE5a,UAAUk0wB,gBAAgB,SAAS1zwB,GAAG,IAAI5b,EAAE4b,EAAE2zwB,kBAAkBnsxB,cAAc,IAAIgzB,EAAEp2B,GAAG,OAAO,KAAK,IAAI6b,EAAE7b,EAAE2tB,cAAc,OAAO/R,EAAE48M,UAAU38M,EAAE,SAASA,EAAE,IAAIua,EAAEp2B,GAAG8b,MAAMd,KAAK,CAACY,IAAI,GAAG,EAAE,IAAIwa,EAAE,CAACikL,WAAW,SAASz+L,GAAG,OAAOA,EAAEra,EAAE,IAAIqa,EAAEjd,CAAC,EAAEkrC,MAAM,SAASjuB,GAAG,OAAOwa,EAAEikL,WAAWh/L,KAAKL,KAAKY,EAAE4zwB,aAAaA,aAAa,GAAG,EAAEC,WAAW,SAAS7zwB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAE8zwB,YAAYtgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAK,IAAIsnB,EAAEyT,MAAM/tB,MAAMd,KAAK,CAACY,EAAE8zwB,YAAY7zwB,KAAK,KAAK,OAAO7b,EAAEkZ,KAAK,IAAI,EAAEy2wB,WAAW,SAAS/zwB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAEymE,QAAQmtsB,aAAapgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAKsnB,EAAEikL,WAAWv+L,MAAMd,KAAK,CAACY,EAAEymE,QAAQmtsB,aAAa3zwB,MAAM,OAAO7b,EAAEkZ,KAAK,IAAI,EAAE02wB,WAAW,SAASh0wB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAEymE,QAAQmtsB,aAAapgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAKsnB,EAAEikL,WAAWv+L,MAAMd,KAAK,CAACY,EAAEymE,QAAQmtsB,aAAa3zwB,MAAM,OAAO7b,EAAEkZ,KAAK,IAAI,EAAE22wB,gBAAgB,SAASj0wB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAE8zwB,YAAYtgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAK,IAAIsnB,EAAEu5vB,WAAW7zwB,MAAMd,KAAK,CAACY,EAAE8zwB,YAAY7zwB,KAAK,KAAK,OAAO7b,EAAEkZ,KAAK,IAAI,EAAEohM,QAAQ,SAAS1+L,GAAG,IAAI5b,EAAE,GAAGA,EAAE8O,KAAK,IAAIsnB,EAAEu5vB,WAAW7zwB,MAAMd,KAAK,CAACY,EAAEk0wB,SAAS,KAAK,IAAI,IAAIj0wB,EAAE,EAAExb,EAAEub,EAAEm0wB,OAAO3gxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAK,IAAIsnB,EAAEu5vB,WAAW7zwB,MAAMd,KAAK,CAACY,EAAEm0wB,OAAOl0wB,KAAK,KAAK,OAAO7b,EAAEkZ,KAAK,IAAI,EAAE82wB,aAAa,SAASp0wB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAE8zwB,YAAYtgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAK,IAAIsnB,EAAEkkL,QAAQx+L,MAAMd,KAAK,CAACY,EAAE8zwB,YAAY7zwB,KAAK,KAAK,OAAO7b,EAAEkZ,KAAK,IAAI,EAAE+2wB,mBAAmB,SAASr0wB,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAExb,EAAEub,EAAE8zwB,YAAYtgxB,OAAOyM,EAAExb,IAAIwb,EAAE7b,EAAE8O,KAAKkM,KAAKs0wB,gBAAgB1zwB,EAAE8zwB,YAAY7zwB,KAAK,OAAO7b,EAAEkZ,KAAK,IAAI,GAAG2c,EAAE,CAACgU,MAAM,SAASjuB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBa,cAAc,IAAIlwxB,EAAE4b,EAAE5C,OAAO9c,MAAMq5B,EAAE05vB,QAAQ,OAAOj0wB,KAAKq0wB,gBAAgBa,YAAY,IAAIl8vB,EAAE7I,OAAOQ,WAAW3rB,EAAE,IAAImrB,OAAOQ,WAAW3rB,EAAE,KAAK,EAAEyvxB,WAAW,SAAS7zwB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBc,mBAAmB,IAAI,IAAInwxB,EAAE6b,EAAED,EAAE5C,OAAO9c,MAAM,KAAKmE,EAAE,GAAG00B,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,IAAI5pD,EAAE/0B,EAAE6b,EAAEkZ,GAAGh2B,QAAQw2B,EAAE65vB,WAAW,MAAM/uxB,EAAEyO,KAAK+mB,EAAEgU,MAAM/tB,MAAMd,KAAK,CAAChb,KAAK,OAAOgb,KAAKq0wB,gBAAgBc,iBAAiB9vxB,EAAE,EAAEsvxB,WAAW,SAAS/zwB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBe,mBAAmB,IAAI,IAAIpwxB,EAAE6b,EAAED,EAAE5C,OAAO9c,MAAM,KAAKmE,EAAE,GAAG00B,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,IAAI5pD,EAAE/0B,EAAE6b,EAAEkZ,GAAG/b,OAAO9c,MAAMq5B,EAAE05vB,QAAQ5uxB,EAAEyO,KAAK,IAAIklB,EAAE7I,OAAOQ,WAAW3rB,EAAE,IAAImrB,OAAOQ,WAAW3rB,EAAE,MAAM,OAAOgb,KAAKq0wB,gBAAgBe,iBAAiB/vxB,EAAE,EAAEuvxB,WAAW,SAASh0wB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBgB,mBAAmB,IAAI,IAAIrwxB,EAAE6b,EAAED,EAAE5C,OAAO9c,MAAM,KAAKmE,EAAE,GAAG00B,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,IAAI5pD,EAAE/0B,EAAE6b,EAAEkZ,GAAG/b,OAAO9c,MAAMq5B,EAAE05vB,QAAQ5uxB,EAAEyO,KAAK,IAAIklB,EAAE7I,OAAOQ,WAAW3rB,EAAE,IAAImrB,OAAOQ,WAAW3rB,EAAE,MAAM,OAAOgb,KAAKq0wB,gBAAgBgB,iBAAiBhwxB,EAAE,EAAEwvxB,gBAAgB,SAASj0wB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBiB,wBAAwB,IAAI,IAAItwxB,EAAE6b,EAAED,EAAE5C,OAAO9c,MAAMq5B,EAAE25vB,YAAY7uxB,EAAE,GAAG00B,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,IAAI5pD,EAAE/0B,EAAE6b,EAAEkZ,GAAGh2B,QAAQw2B,EAAE65vB,WAAW,MAAM/uxB,EAAEyO,KAAK+mB,EAAE85vB,WAAW7zwB,MAAMd,KAAK,CAAChb,KAAK,OAAOgb,KAAKq0wB,gBAAgBiB,sBAAsBjwxB,EAAE,EAAEi6M,QAAQ,SAAS1+L,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBkB,gBAAgB,IAAI,IAAIvwxB,EAAE6b,EAAExb,EAAE00B,EAAE4pD,EAAE/iE,EAAE5C,OAAO9c,MAAMq5B,EAAE25vB,YAAYjxxB,EAAE,GAAG2W,EAAE,EAAE8pF,EAAE/f,EAAEvvE,OAAOwF,EAAE8pF,IAAI9pF,EAAE5U,EAAE2+E,EAAE/pE,GAAG7V,QAAQw2B,EAAE65vB,WAAW,MAAMvzwB,EAAEga,EAAE85vB,WAAW7zwB,MAAMd,KAAK,CAAChb,IAAIK,EAAE2a,KAAKq0wB,gBAAgBgB,iBAAiBx0wB,EAAEwmE,SAAS,IAAIztE,EAAEmgB,EAAE10B,EAAEpC,EAAE6Q,KAAKzO,GAAG,OAAO2a,KAAKq0wB,gBAAgBkB,cAAcx7vB,EAAE92B,EAAE,EAAE+xxB,aAAa,SAASp0wB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBmB,qBAAqB,IAAI,IAAIxwxB,EAAE6b,EAAED,EAAE5C,OAAO9c,MAAMq5B,EAAE45vB,kBAAkB9uxB,EAAE,GAAG00B,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,IAAI5pD,EAAE/0B,EAAE6b,EAAEkZ,GAAGh2B,QAAQw2B,EAAE65vB,WAAW,MAAM/uxB,EAAEyO,KAAK+mB,EAAEykL,QAAQx+L,MAAMd,KAAK,CAAChb,KAAK,OAAOgb,KAAKq0wB,gBAAgBmB,mBAAmBnwxB,EAAE,EAAE4vxB,mBAAmB,SAASr0wB,GAAG,QAAG,IAASA,EAAE,OAAOZ,KAAKq0wB,gBAAgBoB,2BAA2B,IAAI,IAAIzwxB,GAAG4b,EAAEA,EAAE7c,QAAQ,kBAAkB,QAAQia,OAAO9c,MAAM,KAAK2f,EAAE,GAAGxb,EAAE,EAAE00B,EAAE/0B,EAAEoP,OAAO/O,EAAE00B,IAAI10B,EAAEwb,EAAE/M,KAAKkM,KAAKtb,KAAKM,EAAEK,KAAK,OAAO2a,KAAKq0wB,gBAAgBoB,yBAAyB50wB,EAAE,GAAGuZ,EAAE,SAASxZ,GAAGZ,KAAK89E,OAAO,IAAI9iE,EAAEpa,EAAE,EAAEwZ,EAAEha,UAAU1a,MAAM,SAASkb,GAAG,OAAOZ,KAAK89E,OAAOp4F,MAAMkb,EAAE,EAAEwZ,EAAEquL,aAAa,SAAS7nM,EAAE5b,GAAG,GAAG,IAAImP,UAAUC,OAAO,MAAM,IAAImT,MAAM,mBAAmB,MAAM,gBAAgB3G,EAAEra,EAAE,IAAIqa,EAAEjd,EAAE,KAAKqB,EAAEuB,EAAE,IAAIvB,EAAErB,EAAE,IAAI,EAAE,IAAI+lG,EAAE,SAAS9oF,GAAG,SAAS5b,EAAEA,GAAG4b,EAAEP,KAAKL,KAAKhb,GAAGgb,KAAKzM,KAAK,mBAAmByM,KAAKowF,QAAQprG,EAAEgb,KAAKumC,OAAM,IAAK3lC,GAAG2lC,KAAK,CAAC,OAAO3lC,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,CAAC,CAA7M,CAA+MuiB,OAAOk3H,GAAG,SAAS79H,GAAG,SAAS5b,IAAI,GAAG4b,EAAEP,KAAKL,MAAM,IAAI7L,UAAUC,OAAOwM,EAAEP,KAAKL,WAAW,GAAG,IAAI7L,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAGyM,EAAEP,KAAKL,KAAKhb,EAAE,CAAC,CAAC,OAAO4b,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAlU,CAAoU0kG,GAAG44S,GAAG,WAAW,EAAEA,GAAGliY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE3sY,GAAGliY,UAAUwtG,SAAS,WAAW,OAAO00R,EAAE,EAAEA,GAAGozY,qBAAqB,WAAW,GAAG,IAAIvhxB,UAAUC,OAAOkuY,GAAGozY,qBAAqB,WAAW,GAAG,IAAIvhxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,MAAM,IAAIsqI,GAAG,2BAA2B,OAAO79H,EAAE,KAAKA,EAAE,IAAI,CAAC,EAAE0hY,GAAG2lO,OAAO,WAAW,IAAMjjnB,EAAE,GAAG,IAAImP,UAAUC,OAAsBkuY,GAAG2lO,OAAhB9zmB,UAAU,GAAe,WAAW,GAAG,IAAIA,UAAUC,SAAwBpP,EAAEmP,UAAU,IAAzBA,UAAU,IAAsB,MAAM,OAAOnP,EAAE,IAAIy5I,GAAG,IAAIA,GAAGz5I,EAAE,EAAEs9Y,GAAGv6K,OAAO,WAAW,IAAInnN,EAAE5b,EAAE6b,EAAE,GAAG,IAAI1M,UAAUC,OAAqCkuY,GAAGv6K,OAAjCnnN,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAiB,WAAW,GAAG,IAAIA,UAAUC,SAASwM,EAAEzM,UAAU,GAAkB0M,EAAE1M,UAAU,KAA3BnP,EAAEmP,UAAU,IAAqB4zN,OAAOnnN,IAAI,MAAM,IAAI69H,GAAG,YAAY79H,EAAE,oBAAoB5b,GAAG,OAAO6b,EAAE,KAAKA,EAAE,IAAI,EAAE,IAAI0hY,GAAG,WAAWviY,KAAKy+U,QAAQ,KAAKz+U,KAAK21wB,YAAYrhxB,MAAM,GAAGm6B,OAAO17B,IAAI,WAAW,OAAOuB,MAAM,EAAE,GAAG0L,KAAK41wB,OAAO,IAAIthxB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAK61wB,cAAc,KAAK71wB,KAAK81wB,UAAU,KAAK91wB,KAAK+1wB,IAAI,KAAK/1wB,KAAKg2wB,IAAI,KAAKh2wB,KAAKi2wB,gBAAgB,KAAKj2wB,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAEhZ,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAEhZ,KAAK+1wB,IAAI/1wB,KAAK41wB,OAAO,GAAG51wB,KAAKg2wB,IAAIh2wB,KAAK41wB,OAAO,GAAG51wB,KAAKy+U,QAAQ,CAAC,EAAEh9O,GAAG,CAACy0qB,eAAe,CAACj/uB,cAAa,GAAIk/uB,aAAa,CAACl/uB,cAAa,GAAIm/uB,UAAU,CAACn/uB,cAAa,GAAIo/uB,gBAAgB,CAACp/uB,cAAa,GAAIq/uB,mBAAmB,CAACr/uB,cAAa,GAAIs/uB,uBAAuB,CAACt/uB,cAAa,IAAKsrW,GAAGniY,UAAUo2wB,qBAAqB,SAAS51wB,EAAE5b,GAAG,OAAOgb,KAAKy2wB,sBAAsBz2wB,KAAK61wB,cAAcj1wB,GAAG5b,EAAE,EAAEu9Y,GAAGniY,UAAUs2wB,mBAAmB,WAAW,IAAI91wB,EAAE,IAAIqY,EAAE,OAAOjZ,KAAK22wB,cAAc/1wB,EAAE2vH,OAAO,aAAavwH,KAAK81wB,WAAWl1wB,EAAE2vH,OAAO,WAAWvwH,KAAK42wB,eAAeh2wB,EAAE2vH,OAAO,cAAc3vH,EAAE5Z,UAAU,EAAEu7Y,GAAGniY,UAAUy2wB,oBAAoB,SAASj2wB,EAAE5b,EAAE6b,EAAExb,GAAG2a,KAAK21wB,YAAY,GAAG,GAAG/0wB,EAAEZ,KAAK21wB,YAAY,GAAG,GAAG3wxB,EAAEgb,KAAK21wB,YAAY,GAAG,GAAG90wB,EAAEb,KAAK21wB,YAAY,GAAG,GAAGtwxB,EAAE2a,KAAKy+U,QAAQz+U,KAAK82wB,iBAAiBl2wB,EAAE5b,EAAE6b,EAAExb,EAAE,EAAEk9Y,GAAGniY,UAAU22wB,mBAAmB,WAAW,OAAO/2wB,KAAKy+U,OAAO,EAAE8jD,GAAGniY,UAAUq2wB,oBAAoB,WAAW,GAAG,IAAItixB,UAAUC,OAAO,OAAO4L,KAAK61wB,gBAAgB71wB,KAAK61wB,cAAcvhxB,MAAM,GAAGm6B,OAAO17B,IAAI,WAAW,OAAOuB,MAAM,EAAE,GAAG0L,KAAKy2wB,oBAAoB,GAAGz2wB,KAAKy2wB,oBAAoB,SAAS,GAAG,IAAItixB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKg3wB,gBAAgBp2wB,EAAE,GAAGZ,KAAKg3wB,gBAAgBp2wB,EAAE,IAAIZ,KAAK61wB,cAAcj1wB,GAAG,GAAG,EAAEZ,KAAK61wB,cAAcj1wB,GAAG,GAAG,IAAIZ,KAAK61wB,cAAcj1wB,GAAG,GAAG,EAAEZ,KAAK61wB,cAAcj1wB,GAAG,GAAG,EAAE,CAAC,EAAE2hY,GAAGniY,UAAU62wB,SAAS,WAAW,OAAOj3wB,KAAKk3wB,mBAAmBl3wB,KAAK81wB,SAAS,EAAEvzY,GAAGniY,UAAU+2wB,kBAAkB,SAASv2wB,GAAGZ,KAAKi2wB,gBAAgBr1wB,CAAC,EAAE2hY,GAAGniY,UAAUg3wB,uBAAuB,WAAW,GAAG,IAAIjjxB,UAAUC,OAAO,QAAQ4L,KAAKo3wB,uBAAuB,MAAMp3wB,KAAKo3wB,uBAAuB,GAAG,GAAG,IAAIjjxB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,EAAEA,EAAEgb,KAAKy+U,QAAQz5V,IAAI,IAAIgb,KAAK41wB,OAAO5wxB,GAAG0qxB,SAAS1vwB,KAAK21wB,YAAY/0wB,GAAG,MAAMZ,KAAK41wB,OAAO5wxB,GAAG0qxB,SAAS1vwB,KAAK21wB,YAAY/0wB,GAAG,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,EAAE2hY,GAAGniY,UAAU6/Z,gBAAgB,SAASr/Z,GAAG,OAAOZ,KAAK41wB,OAAOh1wB,EAAE,EAAE2hY,GAAGniY,UAAUu2wB,WAAW,WAAW,OAAO32wB,KAAKk3wB,oBAAoBl3wB,KAAK81wB,SAAS,EAAEvzY,GAAGniY,UAAU82wB,gBAAgB,WAAW,OAAOl3wB,KAAKy+U,UAAU8jD,GAAG8zY,eAAe,EAAE9zY,GAAGniY,UAAU42wB,gBAAgB,SAASp2wB,EAAE5b,GAAG,OAAOu9Y,GAAG80Y,oBAAoBr3wB,KAAK41wB,OAAO5wxB,GAAGgb,KAAK21wB,YAAY/0wB,GAAG,GAAGZ,KAAK21wB,YAAY/0wB,GAAG,GAAG,EAAE2hY,GAAGniY,UAAUw2wB,YAAY,WAAW,OAAO52wB,KAAKy+U,UAAU8jD,GAAGg0Y,sBAAsB,EAAEh0Y,GAAGniY,UAAUpZ,SAAS,WAAW,OAAOozB,EAAEquL,aAAazoM,KAAK21wB,YAAY,GAAG,GAAG31wB,KAAK21wB,YAAY,GAAG,IAAI,MAAMv7vB,EAAEquL,aAAazoM,KAAK21wB,YAAY,GAAG,GAAG31wB,KAAK21wB,YAAY,GAAG,IAAI31wB,KAAK02wB,oBAAoB,EAAEn0Y,GAAGniY,UAAUk3wB,YAAY,SAAS12wB,EAAE5b,GAAG,OAAOgb,KAAK21wB,YAAY/0wB,GAAG5b,EAAE,EAAEu9Y,GAAGniY,UAAUm3wB,eAAe,SAAS32wB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKy+U,QAAQz5V,IAAI,GAAGgb,KAAK41wB,OAAO5wxB,GAAG0qxB,SAAS9uwB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE2hY,GAAGniY,UAAUo3wB,4BAA4B,SAAS52wB,EAAE5b,GAAG,OAAOgb,KAAKy2wB,sBAAsBz2wB,KAAK41wB,OAAO51wB,KAAK61wB,cAAcj1wB,GAAG5b,GAAG,EAAEu9Y,GAAGniY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE1sY,GAAGniY,UAAUwtG,SAAS,WAAW,OAAO20R,EAAE,EAAEA,GAAG80Y,oBAAoB,SAASz2wB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEG,KAAKM,IAAI+a,EAAEta,EAAEvB,EAAEuB,GAAGwzB,EAAEv0B,KAAKM,IAAI+a,EAAEld,EAAEqB,EAAErB,GAAGggF,GAAG,EAAE,GAAG/iE,EAAEmnN,OAAO/iO,GAAG2+E,EAAE,OAAO,GAAG/iE,EAAEmnN,OAAOlnN,GAAG8iE,EAAEt+E,EAAE00B,EAAE10B,EAAE00B,MAAM,CAAC,IAAI92B,EAAEuC,KAAKM,IAAI8a,EAAEra,EAAEvB,EAAEuB,GAAGqT,EAAEpU,KAAKM,IAAI8a,EAAEjd,EAAEqB,EAAErB,GAAG,KAAKggF,EAAEt+E,EAAE00B,EAAE92B,EAAE2W,IAAIgH,EAAEmnN,OAAO/iO,KAAK2+E,EAAEn+E,KAAKmE,IAAI1G,EAAE2W,GAAG,CAAC,OAAO0oY,GAAG2lO,SAAS,IAAItkiB,IAAI/iE,EAAEmnN,OAAO/iO,IAAI,4BAA4B2+E,CAAC,EAAE4+T,GAAGk1Y,6BAA6B,SAAS72wB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEra,EAAEvB,EAAEuB,EAAEwzB,EAAEnZ,EAAEjd,EAAEqB,EAAErB,EAAEggF,EAAEn+E,KAAK0vB,KAAK7vB,EAAEA,EAAE00B,EAAEA,GAAG,OAAOuoX,GAAG2lO,SAAS,IAAItkiB,IAAI/iE,EAAEmnN,OAAO/iO,IAAI,gCAAgC2+E,CAAC,EAAE89B,GAAGy0qB,eAAerixB,IAAI,WAAW,OAAO,CAAC,EAAE4tG,GAAG00qB,aAAatixB,IAAI,WAAW,OAAO,CAAC,EAAE4tG,GAAG20qB,UAAUvixB,IAAI,WAAW,OAAO,CAAC,EAAE4tG,GAAG40qB,gBAAgBxixB,IAAI,WAAW,OAAO,CAAC,EAAE4tG,GAAG60qB,mBAAmBzixB,IAAI,WAAW,OAAO,CAAC,EAAE4tG,GAAG80qB,uBAAuB1ixB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiB+2W,GAAG9gS,IAAI,IAAI57G,GAAG,SAAS+a,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUs3wB,qBAAqB,SAAS92wB,GAAG,IAAI5b,EAAE,IAAIghC,EAAEhmB,KAAK21wB,YAAY,GAAG,GAAG31wB,KAAK21wB,YAAY,GAAG,IAAI90wB,EAAE,IAAImlB,EAAEhmB,KAAK21wB,YAAY,GAAG,GAAG31wB,KAAK21wB,YAAY,GAAG,IAAI,OAAO3wxB,EAAEwC,SAASoZ,IAAIC,EAAErZ,SAASoZ,EAAE,EAAE5b,EAAEob,UAAUy2wB,oBAAoB,WAAW,GAAG,IAAI1ixB,UAAUC,OAAO,OAAOwM,EAAER,UAAUy2wB,oBAAoB/1wB,MAAMd,KAAK7L,WAAW,IAAInP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,GAAG6L,KAAK81wB,WAAU,EAAG9vvB,EAAEo1X,WAAWv6Y,EAAExb,EAAEL,IAAI,IAAI0rY,GAAG1pL,iBAAiBnmM,EAAExb,EAAEL,IAAI,IAAI0rY,GAAG1pL,iBAAiB3hN,EAAEwb,EAAE7b,GAAG,OAAOgb,KAAK81wB,WAAU,GAAI9wxB,EAAE+iO,OAAOlnN,IAAI7b,EAAE+iO,OAAO1iO,MAAM2a,KAAK81wB,WAAU,GAAI91wB,KAAKy+U,QAAQ79U,EAAE01wB,mBAAmB,KAAKt2wB,KAAKy+U,QAAQ79U,EAAEy1wB,eAAe,EAAErxxB,EAAEob,UAAUu3wB,mBAAmB,SAAS/2wB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAGA,EAAExzB,EAAEyZ,KAAK43wB,mBAAmBh3wB,EAAEra,EAAEvB,EAAEuB,EAAEsa,EAAEta,EAAElB,EAAEkB,GAAGwzB,EAAEp2B,EAAEqc,KAAK43wB,mBAAmBh3wB,EAAEjd,EAAEqB,EAAErB,EAAEkd,EAAEld,EAAE0B,EAAE1B,GAAGid,EAAEra,GAAGwzB,EAAExzB,EAAEqa,EAAEjd,GAAGo2B,EAAEp2B,EAAEqB,EAAEuB,GAAGwzB,EAAExzB,EAAEvB,EAAErB,GAAGo2B,EAAEp2B,EAAEkd,EAAEta,GAAGwzB,EAAExzB,EAAEsa,EAAEld,GAAGo2B,EAAEp2B,EAAE0B,EAAEkB,GAAGwzB,EAAExzB,EAAElB,EAAE1B,GAAGo2B,EAAEp2B,CAAC,EAAEqB,EAAEob,UAAUy3wB,4BAA4B,SAASj3wB,EAAEC,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE,KAAK,IAAIA,EAAElyD,EAAEkzM,aAAa/jN,EAAEC,EAAExb,EAAE00B,EAAE,CAAC,MAAM92B,GAAG,KAAKA,aAAaq3B,GAAG,MAAMr3B,EAAE0gF,EAAE3+E,EAAE8yxB,gBAAgBl3wB,EAAEC,EAAExb,EAAE00B,EAAE,CAAC,OAAO4pD,CAAC,EAAE3+E,EAAEob,UAAUukN,aAAa,SAAS/jN,EAAEC,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE3jE,KAAK+3wB,8BAA8Bn3wB,EAAEC,EAAExb,EAAE00B,GAAG,OAAO/Z,KAAK03wB,qBAAqB/zsB,KAAKA,EAAE,IAAI3qD,EAAEh0B,EAAE8yxB,gBAAgBl3wB,EAAEC,EAAExb,EAAE00B,KAAK,OAAO/Z,KAAKi2wB,iBAAiBj2wB,KAAKi2wB,gBAAgB+B,YAAYr0sB,GAAGA,CAAC,EAAE3+E,EAAEob,UAAUw3wB,mBAAmB,SAASh3wB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAEnZ,EAAE+iE,EAAEn+E,KAAKM,IAAIi0B,GAAG,OAAOv0B,KAAKM,IAAId,GAAG2+E,IAAI5pD,EAAE/0B,EAAE2+E,EAAEn+E,KAAKM,IAAId,IAAIQ,KAAKM,IAAI+a,GAAG8iE,IAAI5pD,EAAElZ,EAAE8iE,EAAEn+E,KAAKM,IAAI+a,IAAIrb,KAAKM,IAAIT,GAAGs+E,IAAI5pD,EAAE10B,GAAG00B,CAAC,EAAE/0B,EAAEob,UAAU63wB,QAAQ,SAASr3wB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAEkmB,EAAE86H,aAAa/jN,EAAE5b,EAAE6b,EAAExb,GAAGpC,EAAE+c,KAAK03wB,qBAAqB/zsB,GAAGtpD,EAAEovF,IAAIyuqB,QAAQ,eAAej1xB,EAAE,2BAA2B0gF,GAAG5pD,EAAExhB,SAASorE,GAAG,MAAMtpD,EAAEovF,IAAIyuqB,QAAQ,cAAcn+vB,EAAExhB,SAASorE,GAAG,EAAE3+E,EAAEob,UAAU23wB,8BAA8B,SAASn3wB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE,IAAIf,EAAEpY,GAAG+iE,EAAE,IAAI3qD,EAAEh0B,GAAG/B,EAAE,IAAI+1B,EAAEnY,GAAGjH,EAAE,IAAIof,EAAE3zB,GAAGq+F,EAAE,IAAI1qE,EAAEhZ,KAAKm4wB,qBAAqBp+vB,EAAE4pD,EAAE1gF,EAAE2W,EAAE8pF,GAAG,IAAIlrE,EAAExY,KAAK63wB,4BAA4B99vB,EAAE4pD,EAAE1gF,EAAE2W,GAAG,OAAO4e,EAAEjyB,GAAGm9F,EAAEn9F,EAAEiyB,EAAE70B,GAAG+/F,EAAE//F,EAAE60B,CAAC,EAAExzB,EAAEob,UAAUg4wB,6BAA6B,SAASpzxB,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE39C,EAAEo1X,WAAWp2Z,EAAE6b,EAAExb,GAAGpC,EAAE+iC,EAAEo1X,WAAWp2Z,EAAE6b,EAAEkZ,GAAGngB,EAAEosB,EAAEo1X,WAAW/1Z,EAAE00B,EAAE/0B,GAAG0+F,EAAE19D,EAAEo1X,WAAW/1Z,EAAE00B,EAAElZ,GAAG,OAAO8iE,GAAG1gF,GAAG+c,KAAK41wB,OAAO,GAAGvwxB,EAAE2a,KAAK41wB,OAAO,GAAG77vB,EAAEnZ,EAAE21wB,wBAAwB38wB,GAAG8pF,GAAG1jF,KAAK41wB,OAAO,GAAG5wxB,EAAEgb,KAAK41wB,OAAO,GAAG/0wB,EAAED,EAAE21wB,wBAAwB5ysB,GAAG/pE,GAAGoG,KAAK41wB,OAAO,GAAGvwxB,EAAE2a,KAAK41wB,OAAO,GAAG5wxB,GAAGK,EAAE0iO,OAAO/iO,IAAI/B,GAAGygG,EAAE9iF,EAAE21wB,uBAAuB31wB,EAAE01wB,oBAAoB3ysB,GAAG+f,GAAG1jF,KAAK41wB,OAAO,GAAGvwxB,EAAE2a,KAAK41wB,OAAO,GAAG/0wB,GAAGxb,EAAE0iO,OAAOlnN,IAAI5d,GAAG2W,EAAEgH,EAAE21wB,uBAAuB31wB,EAAE01wB,oBAAoBrzxB,GAAG2W,GAAGoG,KAAK41wB,OAAO,GAAG77vB,EAAE/Z,KAAK41wB,OAAO,GAAG5wxB,GAAG+0B,EAAEguM,OAAO/iO,IAAI2+E,GAAG+f,EAAE9iF,EAAE21wB,uBAAuB31wB,EAAE01wB,oBAAoBrzxB,GAAGygG,GAAG1jF,KAAK41wB,OAAO,GAAG77vB,EAAE/Z,KAAK41wB,OAAO,GAAG/0wB,GAAGkZ,EAAEguM,OAAOlnN,IAAI8iE,GAAG/pE,EAAEgH,EAAE21wB,uBAAuB31wB,EAAE01wB,oBAAoB11wB,EAAEy1wB,eAAe,EAAErxxB,EAAEob,UAAU+3wB,qBAAqB,SAASv3wB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE/iE,EAAEra,EAAEvB,EAAEuB,EAAEqa,EAAEra,EAAEvB,EAAEuB,EAAEtD,EAAE2d,EAAEjd,EAAEqB,EAAErB,EAAEid,EAAEjd,EAAEqB,EAAErB,EAAEiW,EAAEgH,EAAEra,EAAEvB,EAAEuB,EAAEqa,EAAEra,EAAEvB,EAAEuB,EAAEm9F,EAAE9iF,EAAEjd,EAAEqB,EAAErB,EAAEid,EAAEjd,EAAEqB,EAAErB,EAAE60B,EAAE3X,EAAEta,EAAElB,EAAEkB,EAAEsa,EAAEta,EAAElB,EAAEkB,EAAEX,EAAEib,EAAEld,EAAE0B,EAAE1B,EAAEkd,EAAEld,EAAE0B,EAAE1B,EAAEwc,EAAEU,EAAEta,EAAElB,EAAEkB,EAAEsa,EAAEta,EAAElB,EAAEkB,EAAElD,EAAEwd,EAAEld,EAAE0B,EAAE1B,EAAEkd,EAAEld,EAAE0B,EAAE1B,EAAE+d,IAAIiiE,EAAEnrD,EAAEmrD,EAAEnrD,IAAI5e,EAAEuG,EAAEvG,EAAEuG,IAAI,EAAEwB,IAAI1e,EAAE2C,EAAE3C,EAAE2C,IAAI89F,EAAErgG,EAAEqgG,EAAErgG,IAAI,EAAE02B,EAAExzB,EAAEmb,EAAEqY,EAAEp2B,EAAEge,EAAEf,EAAEra,GAAGwzB,EAAExzB,EAAEqa,EAAEjd,GAAGo2B,EAAEp2B,EAAEqB,EAAEuB,GAAGwzB,EAAExzB,EAAEvB,EAAErB,GAAGo2B,EAAEp2B,EAAEkd,EAAEta,GAAGwzB,EAAExzB,EAAEsa,EAAEld,GAAGo2B,EAAEp2B,EAAE0B,EAAEkB,GAAGwzB,EAAExzB,EAAElB,EAAE1B,GAAGo2B,EAAEp2B,CAAC,EAAEqB,EAAEob,UAAU02wB,iBAAiB,SAAS9xxB,EAAE6b,EAAExb,EAAE00B,GAAG,GAAG/Z,KAAK81wB,WAAU,GAAI9vvB,EAAEo1X,WAAWp2Z,EAAE6b,EAAExb,EAAE00B,GAAG,OAAOnZ,EAAEy1wB,gBAAgB,IAAI1ysB,EAAE+sT,GAAG1pL,iBAAiBhiN,EAAE6b,EAAExb,GAAGpC,EAAEytY,GAAG1pL,iBAAiBhiN,EAAE6b,EAAEkZ,GAAG,GAAG4pD,EAAE,GAAG1gF,EAAE,GAAG0gF,EAAE,GAAG1gF,EAAE,EAAE,OAAO2d,EAAEy1wB,gBAAgB,IAAIz8wB,EAAE82X,GAAG1pL,iBAAiB3hN,EAAE00B,EAAE/0B,GAAG0+F,EAAEgtS,GAAG1pL,iBAAiB3hN,EAAE00B,EAAElZ,GAAG,OAAGjH,EAAE,GAAG8pF,EAAE,GAAG9pF,EAAE,GAAG8pF,EAAE,EAAS9iF,EAAEy1wB,gBAAuB,IAAI1ysB,GAAG,IAAI1gF,GAAG,IAAI2W,GAAG,IAAI8pF,EAAE1jF,KAAKo4wB,6BAA6BpzxB,EAAE6b,EAAExb,EAAE00B,IAAI,IAAI4pD,GAAG,IAAI1gF,GAAG,IAAI2W,GAAG,IAAI8pF,GAAG1jF,KAAK81wB,WAAU,EAAG9wxB,EAAE0qxB,SAASrqxB,IAAIL,EAAE0qxB,SAAS31vB,GAAG/Z,KAAK41wB,OAAO,GAAG5wxB,EAAE6b,EAAE6uwB,SAASrqxB,IAAIwb,EAAE6uwB,SAAS31vB,GAAG/Z,KAAK41wB,OAAO,GAAG/0wB,EAAE,IAAI8iE,EAAE3jE,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAE3zB,GAAG,IAAIpC,EAAE+c,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAEe,GAAG,IAAIngB,EAAEoG,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAEh0B,GAAG,IAAI0+F,IAAI1jF,KAAK41wB,OAAO,GAAG,IAAI58vB,EAAEnY,MAAMb,KAAK81wB,WAAU,EAAG91wB,KAAK41wB,OAAO,GAAG51wB,KAAK2kN,aAAa3/N,EAAE6b,EAAExb,EAAE00B,IAAInZ,EAAE01wB,mBAAmB,EAAEtxxB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,EAAE8yxB,gBAAgB,SAASl3wB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAEnZ,EAAE+iE,EAAE+sT,GAAG2nZ,kBAAkBz3wB,EAAEC,EAAExb,GAAGpC,EAAEytY,GAAG2nZ,kBAAkBrzxB,EAAE6b,EAAExb,GAAG,OAAOpC,EAAE0gF,IAAIA,EAAE1gF,EAAE82B,EAAE/0B,IAAI/B,EAAEytY,GAAG2nZ,kBAAkBx3wB,EAAED,EAAE5b,IAAI2+E,IAAIA,EAAE1gF,EAAE82B,EAAElZ,IAAI5d,EAAEytY,GAAG2nZ,kBAAkBhzxB,EAAEub,EAAE5b,IAAI2+E,IAAIA,EAAE1gF,EAAE82B,EAAE10B,GAAG00B,CAAC,EAAE/0B,CAAC,CAA3jI,CAA6jIu9Y,IAAIv2O,GAAG,WAAW,EAAEA,GAAG5rJ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjjnB,GAAG5rJ,UAAUwtG,SAAS,WAAW,OAAOo+C,EAAE,EAAEA,GAAGg7C,iBAAiB,SAASpmM,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEL,EAAEuB,EAAEqa,EAAEra,EAAEwzB,EAAE/0B,EAAErB,EAAEid,EAAEjd,EAAEggF,EAAE9iE,EAAEta,EAAEvB,EAAEuB,EAAEtD,EAAE4d,EAAEld,EAAEqB,EAAErB,EAAE,OAAOqoK,GAAG0mnB,aAAartxB,EAAE00B,EAAE4pD,EAAE1gF,EAAE,EAAE+oK,GAAG0mnB,aAAa,SAAS9xwB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE,KAAK4pD,EAAE,KAAK1gF,EAAE,KAAK,GAAG82B,EAAE,EAAE,IAAInZ,GAAG,IAAIvb,EAAE,OAAO,IAAIL,GAAG,IAAI6b,EAAE,EAAE7b,EAAE,EAAE6b,EAAE,GAAGkZ,EAAEA,EAAElZ,EAAE,EAAEkZ,GAAGA,EAAE,GAAG,IAAI/0B,GAAG,IAAI6b,EAAE,OAAOxb,EAAE,EAAEub,EAAE,EAAEmZ,GAAGA,EAAEnZ,EAAE,GAAGmZ,EAAEA,EAAE,GAAG/0B,EAAE,EAAEK,EAAE,EAAEL,GAAGK,IAAI00B,GAAGA,EAAE4pD,EAAE/iE,EAAEA,EAAEC,EAAEA,EAAE8iE,EAAEA,EAAE3+E,EAAEA,EAAEK,EAAEA,EAAEs+E,GAAG3+E,IAAIK,GAAG00B,GAAGA,EAAElZ,GAAGA,EAAExb,GAAGA,IAAIs+E,EAAE/iE,EAAEA,GAAGC,EAAEA,EAAE8iE,EAAEA,EAAE3+E,EAAEA,GAAGK,EAAEA,EAAEs+E,GAAGt+E,EAAE,GAAGL,GAAGK,GAAG00B,GAAGA,EAAEnZ,GAAGA,EAAE5b,GAAGA,IAAI2+E,GAAG/iE,EAAEA,EAAEC,EAAEA,EAAE8iE,EAAEA,GAAG3+E,EAAEA,EAAEK,EAAEA,EAAEs+E,GAAG3+E,GAAGK,GAAGub,GAAGA,EAAE5b,GAAGA,EAAE6b,GAAGA,EAAExb,GAAGA,IAAI00B,GAAGA,EAAE4pD,GAAG/iE,EAAEA,GAAGC,EAAEA,EAAE8iE,EAAEA,GAAG3+E,EAAEA,GAAGK,EAAEA,EAAEs+E,GAAG/iE,EAAE,EAAE,CAAC,KAAKC,EAAE,GAAG,OAAOkZ,EAAE,KAAKnZ,GAAGC,GAAG,OAAOkZ,CAAC,KAAK,CAAC,GAAGlZ,EAAE,EAAE,OAAOkZ,EAAE,KAAKnZ,GAAGC,GAAG,OAAOkZ,EAAEA,GAAGA,EAAEnZ,GAAGA,EAAEC,GAAGA,CAAC,CAAC,OAAO,CAAC,IAA6Bxb,IAA1BpC,EAAEuC,KAAKQ,MAAM6a,EAAED,IAAgB5b,GAAG,EAAE,OAAO+0B,EAAE,GAAG10B,EAAEL,EAAE,OAAO+0B,EAAE,GAAGnZ,GAA9CC,GAAG5d,EAAE2d,GAA6CC,GAAG,GAAG7b,EAAEK,EAAEA,EAAE,OAAO00B,MAAM,CAAC,GAAG/0B,EAAEK,EAAEA,EAAE,OAAO00B,EAAElZ,EAAED,EAAEC,EAAExb,EAAEL,EAAEK,EAAE00B,GAAGA,CAAC,CAAC,GAAG,IAAI10B,EAAE,OAAO,IAAIwb,EAAE,GAAGkZ,EAAE,GAAG,IAAIlZ,EAAE,OAAOkZ,EAAE,IAA6B/0B,IAA1B/B,EAAEuC,KAAKQ,MAAM4a,EAAEC,IAAgBxb,GAAG,EAAE,OAAO00B,EAAE,GAAG/0B,EAAEK,EAAE,OAAO00B,EAAE,GAAGlZ,GAA9CD,GAAG3d,EAAE4d,GAA6CD,GAAG,GAAGvb,EAAEL,EAAEA,EAAE,OAAO+0B,MAAM,CAAC,GAAG10B,EAAEL,EAAEA,EAAE,OAAO+0B,EAAEnZ,EAAEC,EAAED,EAAE5b,EAAEK,EAAEL,EAAE+0B,GAAGA,CAAC,CAAC,GAAG,IAAI/0B,EAAE,OAAO,IAAI4b,EAAE,EAAEmZ,EAAE,GAAG,IAAInZ,EAAE,OAAOmZ,CAAC,CAAC,EAAE,IAAI+tD,GAAG,WAAW9nE,KAAKs4wB,GAAG,KAAKt4wB,KAAKu4wB,eAAe,EAAEv4wB,KAAKw4wB,mBAAkB,EAAG,IAAI53wB,EAAEzM,UAAU,GAAG6L,KAAKs4wB,GAAG13wB,CAAC,EAAEknE,GAAG1nE,UAAUq4wB,aAAa,SAAS73wB,EAAE5b,GAAG,GAAG4b,EAAEra,EAAEyZ,KAAKs4wB,GAAG/xxB,GAAGvB,EAAEuB,EAAEyZ,KAAKs4wB,GAAG/xxB,EAAE,OAAO,KAAK,GAAGyZ,KAAKs4wB,GAAG/xxB,IAAIvB,EAAEuB,GAAGyZ,KAAKs4wB,GAAG30xB,IAAIqB,EAAErB,EAAE,OAAOqc,KAAKw4wB,mBAAkB,EAAG,KAAK,GAAG53wB,EAAEjd,IAAIqc,KAAKs4wB,GAAG30xB,GAAGqB,EAAErB,IAAIqc,KAAKs4wB,GAAG30xB,EAAE,CAAC,IAAIkd,EAAED,EAAEra,EAAElB,EAAEL,EAAEuB,EAAE,OAAOsa,EAAExb,IAAIwb,EAAE7b,EAAEuB,EAAElB,EAAEub,EAAEra,GAAGyZ,KAAKs4wB,GAAG/xxB,GAAGsa,GAAGb,KAAKs4wB,GAAG/xxB,GAAGlB,IAAI2a,KAAKw4wB,mBAAkB,GAAI,IAAI,CAAC,GAAG53wB,EAAEjd,EAAEqc,KAAKs4wB,GAAG30xB,GAAGqB,EAAErB,GAAGqc,KAAKs4wB,GAAG30xB,GAAGqB,EAAErB,EAAEqc,KAAKs4wB,GAAG30xB,GAAGid,EAAEjd,GAAGqc,KAAKs4wB,GAAG30xB,EAAE,CAAC,IAAIo2B,EAAEnZ,EAAEra,EAAEyZ,KAAKs4wB,GAAG/xxB,EAAEo9E,EAAE/iE,EAAEjd,EAAEqc,KAAKs4wB,GAAG30xB,EAAEV,EAAE+B,EAAEuB,EAAEyZ,KAAKs4wB,GAAG/xxB,EAAEqT,EAAE5U,EAAErB,EAAEqc,KAAKs4wB,GAAG30xB,EAAE+/F,EAAEsoE,GAAG0mnB,aAAa34vB,EAAE4pD,EAAE1gF,EAAE2W,GAAG,GAAG,IAAI8pF,EAAE,OAAO1jF,KAAKw4wB,mBAAkB,EAAG,KAAK5+wB,EAAE+pE,IAAI+f,GAAGA,GAAGA,EAAE,GAAG1jF,KAAKu4wB,gBAAgB,CAAC,EAAEzwsB,GAAG1nE,UAAUs4wB,iBAAiB,WAAW,OAAO14wB,KAAK2gsB,gBAAgB/mrB,EAAEu2vB,QAAQ,EAAErosB,GAAG1nE,UAAUugsB,YAAY,WAAW,OAAO3gsB,KAAKw4wB,kBAAkB5+vB,EAAEs2vB,SAASlwwB,KAAKu4wB,eAAe,GAAG,EAAE3+vB,EAAEq2vB,SAASr2vB,EAAEu2vB,QAAQ,EAAErosB,GAAG1nE,UAAUu4wB,YAAY,WAAW,OAAO34wB,KAAKw4wB,iBAAiB,EAAE1wsB,GAAG1nE,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnnsB,GAAG1nE,UAAUwtG,SAAS,WAAW,OAAO9lC,EAAE,EAAEA,GAAG8wsB,kBAAkB,WAAW,GAAGzkxB,UAAU,aAAa6kB,GAAG0B,EAAEvmB,UAAU,GAAGqmB,GAAG,CAAC,IAAI,IAAmBx1B,EAAEmP,UAAU,GAAG0M,EAAE,IAAIinE,GAAlC3zE,UAAU,IAA8B9O,EAAE,IAAI2zB,EAAEe,EAAE,IAAIf,EAAE2qD,EAAE,EAAEA,EAAE3+E,EAAE+tB,OAAO4wD,IAAI,GAAG3+E,EAAE2txB,cAAchvsB,EAAEt+E,GAAGL,EAAE2txB,cAAchvsB,EAAE,EAAE5pD,GAAGlZ,EAAE43wB,aAAapzxB,EAAE00B,GAAGlZ,EAAE83wB,cAAc,OAAO93wB,EAAE8/rB,cAAc,OAAO9/rB,EAAE8/rB,aAAa,CAAC,GAAGxssB,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAaG,MAAM,CAAC,IAAI,IAAmBsF,EAAEzF,UAAU,GAAGuvF,EAAE,IAAI5b,GAAlC3zE,UAAU,IAA8BqkB,EAAE,EAAEA,EAAE5e,EAAExF,OAAOokB,IAAI,CAAC,IAAI5yB,EAAEgU,EAAE4e,GAAGrY,EAAEvG,EAAE4e,EAAE,GAAG,GAAGkrE,EAAE+0rB,aAAa7yxB,EAAEua,GAAGujF,EAAEi1rB,cAAc,OAAOj1rB,EAAEi9mB,aAAa,CAAC,OAAOj9mB,EAAEi9mB,aAAa,CAAC,EAAE,IAAIjwU,GAAG,WAAW,EAAE8R,GAAG,CAACq2Y,UAAU,CAAC5hvB,cAAa,GAAI26N,MAAM,CAAC36N,cAAa,GAAI6hvB,iBAAiB,CAAC7hvB,cAAa,GAAI05N,KAAK,CAAC15N,cAAa,GAAIm/uB,UAAU,CAACn/uB,cAAa,GAAI8hvB,SAAS,CAAC9hvB,cAAa,IAAKy5V,GAAGtwX,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEv+Y,GAAGtwX,UAAUwtG,SAAS,WAAW,OAAO8iR,EAAE,EAAEA,GAAG1pL,iBAAiB,SAASpmM,EAAE5b,EAAE6b,GAAG,OAAOgpF,EAAEm9G,iBAAiBpmM,EAAE5b,EAAE6b,EAAE,EAAE6vX,GAAGsoZ,WAAW,WAAW,GAAG7kxB,UAAU,aAAaG,MAAM,CAAC,IAAIsM,EAAEzM,UAAU,GAAG,GAAGyM,EAAExM,OAAO,EAAE,OAAO,EAAE,IAAI,IAAIpP,EAAE,EAAE6b,EAAED,EAAE,GAAGra,EAAElB,EAAE,EAAEA,EAAEub,EAAExM,OAAO,EAAE/O,IAAI,CAAC,IAAI00B,EAAEnZ,EAAEvb,GAAGkB,EAAEsa,EAAE8iE,EAAE/iE,EAAEvb,EAAE,GAAG1B,EAAEqB,GAAG+0B,GAAGnZ,EAAEvb,EAAE,GAAG1B,EAAEggF,EAAE,CAAC,OAAO3+E,EAAE,CAAC,CAAC,GAAG01B,EAAEvmB,UAAU,GAAGqmB,GAAG,CAAC,IAAIv3B,EAAEkR,UAAU,GAAGyF,EAAE3W,EAAE8vB,OAAO,GAAGnZ,EAAE,EAAE,OAAO,EAAE,IAAI8pF,EAAE,IAAI1qE,EAAER,EAAE,IAAIQ,EAAEpzB,EAAE,IAAIozB,EAAE/1B,EAAE0vxB,cAAc,EAAEn6vB,GAAGv1B,EAAE0vxB,cAAc,EAAE/sxB,GAAG,IAAIua,EAAEqY,EAAEjyB,EAAEX,EAAEW,GAAG4Z,EAAE,IAAI,IAAI9c,EAAE,EAAEqe,EAAE,EAAEA,EAAE9H,EAAE,EAAE8H,IAAIgiF,EAAE//F,EAAE60B,EAAE70B,EAAE60B,EAAEjyB,EAAEX,EAAEW,EAAEiyB,EAAE70B,EAAEiC,EAAEjC,EAAEV,EAAE0vxB,cAAcjxwB,EAAE,EAAE9b,GAAGA,EAAEW,GAAG4Z,EAAE9c,GAAGm1B,EAAEjyB,GAAGm9F,EAAE//F,EAAEiC,EAAEjC,GAAG,OAAON,EAAE,CAAC,CAAC,EAAEqtY,GAAGuoZ,iBAAiB,SAASr4wB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,EAAEmnN,OAAO/iO,GAAG,OAAO0rY,GAAG2nZ,kBAAkBz3wB,EAAEC,EAAExb,GAAG,GAAGwb,EAAEknN,OAAO1iO,GAAG,OAAOqrY,GAAG2nZ,kBAAkBhzxB,EAAEub,EAAE5b,GAAG,IAAI+0B,GAAE,EAAG,GAAGiM,EAAEo1X,WAAWx6Y,EAAE5b,EAAE6b,EAAExb,GAAG,CAAC,IAAIs+E,GAAG3+E,EAAEuB,EAAEqa,EAAEra,IAAIlB,EAAE1B,EAAEkd,EAAEld,IAAIqB,EAAErB,EAAEid,EAAEjd,IAAI0B,EAAEkB,EAAEsa,EAAEta,GAAG,GAAG,IAAIo9E,EAAE5pD,GAAE,MAAO,CAAC,IAAI92B,GAAG2d,EAAEjd,EAAEkd,EAAEld,IAAI0B,EAAEkB,EAAEsa,EAAEta,IAAIqa,EAAEra,EAAEsa,EAAEta,IAAIlB,EAAE1B,EAAEkd,EAAEld,GAAGiW,IAAIgH,EAAEjd,EAAEkd,EAAEld,IAAIqB,EAAEuB,EAAEqa,EAAEra,IAAIqa,EAAEra,EAAEsa,EAAEta,IAAIvB,EAAErB,EAAEid,EAAEjd,IAAIggF,EAAE+f,EAAEzgG,EAAE0gF,GAAG+f,EAAE,GAAGA,EAAE,GAAG9pF,EAAE,GAAGA,EAAE,KAAKmgB,GAAE,EAAG,CAAC,MAAMA,GAAE,EAAG,OAAOA,EAAEa,EAAElxB,IAAIgnY,GAAG2nZ,kBAAkBz3wB,EAAEC,EAAExb,GAAGqrY,GAAG2nZ,kBAAkBrzxB,EAAE6b,EAAExb,GAAGqrY,GAAG2nZ,kBAAkBx3wB,EAAED,EAAE5b,GAAG0rY,GAAG2nZ,kBAAkBhzxB,EAAEub,EAAE5b,IAAI,CAAC,EAAE0rY,GAAGwoZ,cAAc,SAASt4wB,EAAE5b,GAAG,OAAO0rY,GAAGkoZ,kBAAkBh4wB,EAAE5b,KAAK40B,EAAEu2vB,QAAQ,EAAEz/Y,GAAGyoZ,cAAc,SAASv4wB,GAAG,IAAI5b,EAAE4b,EAAEmS,OAAO,GAAG/tB,GAAG,EAAE,OAAO,EAAE,IAAI6b,EAAE,EAAExb,EAAE,IAAI2zB,EAAEpY,EAAE+xwB,cAAc,EAAEttxB,GAAG,IAAI,IAAI00B,EAAE10B,EAAEkB,EAAEo9E,EAAEt+E,EAAE1B,EAAEV,EAAE,EAAEA,EAAE+B,EAAE/B,IAAI,CAAC2d,EAAE+xwB,cAAc1vxB,EAAEoC,GAAG,IAAIuU,EAAEvU,EAAEkB,EAAEm9F,EAAEr+F,EAAE1B,EAAE60B,EAAE5e,EAAEmgB,EAAEn0B,EAAE89F,EAAE/f,EAAE9iE,GAAGrb,KAAK0vB,KAAKsD,EAAEA,EAAE5yB,EAAEA,GAAGm0B,EAAEngB,EAAE+pE,EAAE+f,CAAC,CAAC,OAAO7iF,CAAC,EAAE6vX,GAAG0oZ,MAAM,SAASx4wB,GAAG,IAAI5b,EAAE4b,EAAExM,OAAO,EAAE,GAAGpP,EAAE,EAAE,MAAM,IAAI7B,EAAE,qEAAqE,IAAI,IAAI0d,EAAED,EAAE,GAAGvb,EAAE,EAAE00B,EAAE,EAAEA,GAAG/0B,EAAE+0B,IAAI,CAAC,IAAI4pD,EAAE/iE,EAAEmZ,GAAG4pD,EAAEhgF,EAAEkd,EAAEld,IAAIkd,EAAE8iE,EAAEt+E,EAAE00B,EAAE,CAAC,IAAI92B,EAAEoC,EAAE,IAAIpC,GAAG,GAAG,IAAIA,EAAE+B,SAAS4b,EAAE3d,GAAGysxB,SAAS7uwB,IAAI5d,IAAIoC,GAAG,IAAIuU,EAAEvU,EAAE,GAAGuU,GAAGA,EAAE,GAAG5U,QAAQ4b,EAAEhH,GAAG81wB,SAAS7uwB,IAAIjH,IAAIvU,GAAG,IAAIq+F,EAAE9iF,EAAE3d,GAAGu1B,EAAE5X,EAAEhH,GAAG,GAAG8pF,EAAEgsrB,SAAS7uwB,IAAI2X,EAAEk3vB,SAAS7uwB,IAAI6iF,EAAEgsrB,SAASl3vB,GAAG,OAAM,EAAG,IAAI5yB,EAAE8qY,GAAG2oZ,mBAAmB31rB,EAAE7iF,EAAE2X,GAAQ,OAAS,IAAI5yB,EAAE89F,EAAEn9F,EAAEiyB,EAAEjyB,EAAEX,EAAE,CAAG,EAAE8qY,GAAGkoZ,kBAAkB,SAASh4wB,EAAE5b,GAAG,OAAO8iF,GAAG8wsB,kBAAkBh4wB,EAAE5b,EAAE,EAAE0rY,GAAG4oZ,+BAA+B,SAAS14wB,EAAE5b,EAAE6b,GAAG,IAAIxb,GAAGwb,EAAEta,EAAEvB,EAAEuB,IAAIsa,EAAEta,EAAEvB,EAAEuB,IAAIsa,EAAEld,EAAEqB,EAAErB,IAAIkd,EAAEld,EAAEqB,EAAErB,GAAGo2B,IAAI/0B,EAAErB,EAAEid,EAAEjd,IAAIkd,EAAEta,EAAEvB,EAAEuB,IAAIvB,EAAEuB,EAAEqa,EAAEra,IAAIsa,EAAEld,EAAEqB,EAAErB,IAAI0B,EAAE,OAAOG,KAAKM,IAAIi0B,GAAGv0B,KAAK0vB,KAAK7vB,EAAE,EAAEqrY,GAAG2oZ,mBAAmB,SAASz4wB,EAAE5b,EAAE6b,GAAG,OAAO6vX,GAAG1pL,iBAAiBpmM,EAAE5b,EAAE6b,EAAE,EAAE6vX,GAAG2nZ,kBAAkB,WAAW,GAAG,IAAIlkxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,GAAG,IAAInP,EAAEoP,OAAO,MAAM,IAAIjR,EAAE,+CAA+C,IAAI,IAAI0d,EAAED,EAAErI,SAASvT,EAAE,IAAIK,EAAE,EAAEA,EAAEL,EAAEoP,OAAO,EAAE/O,IAAI,CAAC,IAAI00B,EAAE22W,GAAG2nZ,kBAAkBz3wB,EAAE5b,EAAEK,GAAGL,EAAEK,EAAE,IAAI00B,EAAElZ,IAAIA,EAAEkZ,EAAE,CAAC,OAAOlZ,CAAC,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAIuvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG,GAAGlR,EAAEsD,IAAIqT,EAAErT,GAAGtD,EAAEU,IAAIiW,EAAEjW,EAAE,OAAOggF,EAAEprE,SAAStV,GAAG,IAAIygG,GAAG9pF,EAAErT,EAAEtD,EAAEsD,IAAIqT,EAAErT,EAAEtD,EAAEsD,IAAIqT,EAAEjW,EAAEV,EAAEU,IAAIiW,EAAEjW,EAAEV,EAAEU,GAAG60B,IAAImrD,EAAEp9E,EAAEtD,EAAEsD,IAAIqT,EAAErT,EAAEtD,EAAEsD,IAAIo9E,EAAEhgF,EAAEV,EAAEU,IAAIiW,EAAEjW,EAAEV,EAAEU,IAAI+/F,EAAE,GAAGlrE,GAAG,EAAE,OAAOmrD,EAAEprE,SAAStV,GAAG,GAAGu1B,GAAG,EAAE,OAAOmrD,EAAEprE,SAASqB,GAAG,IAAIhU,IAAI3C,EAAEU,EAAEggF,EAAEhgF,IAAIiW,EAAErT,EAAEtD,EAAEsD,IAAItD,EAAEsD,EAAEo9E,EAAEp9E,IAAIqT,EAAEjW,EAAEV,EAAEU,IAAI+/F,EAAE,OAAOl+F,KAAKM,IAAIF,GAAGJ,KAAK0vB,KAAKwuE,EAAE,CAAC,EAAEgtS,GAAG6oZ,SAAS,SAAS34wB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIhb,GAAGR,EAAE,EAAEA,EAAEL,EAAEoP,OAAO/O,IAAI,CAAC,IAAI00B,EAAE/0B,EAAEK,EAAE,GAAGs+E,EAAE3+E,EAAEK,GAAG,GAAGwb,EAAEg2wB,oBAAoBj2wB,EAAEmZ,EAAE4pD,GAAG9iE,EAAEq2wB,kBAAkB,OAAM,CAAE,CAAC,OAAM,CAAE,EAAE10Y,GAAGq2Y,UAAUhlxB,IAAI,WAAW,OAAO,CAAC,EAAE2uY,GAAG5wI,MAAM/9P,IAAI,WAAW,OAAO68X,GAAGmoZ,SAAS,EAAEr2Y,GAAGs2Y,iBAAiBjlxB,IAAI,WAAW,OAAO,CAAC,EAAE2uY,GAAG7xI,KAAK98P,IAAI,WAAW,OAAO68X,GAAGooZ,gBAAgB,EAAEt2Y,GAAG4zY,UAAUvixB,IAAI,WAAW,OAAO,CAAC,EAAE2uY,GAAGu2Y,SAASllxB,IAAI,WAAW,OAAO68X,GAAG0lZ,SAAS,EAAEtsxB,OAAO0hC,iBAAiBklW,GAAG8R,IAAI,IAAI13B,GAAG,WAAW,EAAEA,GAAG1qW,UAAUnP,OAAO,SAAS2P,GAAG,EAAEkqW,GAAG1qW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnka,GAAG1qW,UAAUwtG,SAAS,WAAW,OAAOk9P,EAAE,EAAE,IAAI9hO,GAAG,WAAW,IAAIpoI,EAAEzM,UAAU,GAAG6L,KAAKw5wB,UAAU,KAAKx5wB,KAAKy5wB,SAAS,KAAKz5wB,KAAK05wB,MAAM,KAAK15wB,KAAK25wB,UAAU,KAAK35wB,KAAKy5wB,SAAS74wB,EAAEZ,KAAK05wB,MAAM94wB,EAAEg5wB,SAAS,EAAEvgvB,GAAG,CAACm2uB,iBAAiB,CAACv4uB,cAAa,GAAI4ivB,gBAAgB,CAAC5ivB,cAAa,GAAI6ivB,qBAAqB,CAAC7ivB,cAAa,GAAI8ivB,qBAAqB,CAAC9ivB,cAAa,GAAI+ivB,qBAAqB,CAAC/ivB,cAAa,GAAIgjvB,0BAA0B,CAAChjvB,cAAa,GAAIijvB,kBAAkB,CAACjjvB,cAAa,GAAIkjvB,uBAAuB,CAACljvB,cAAa,GAAImjvB,6BAA6B,CAACnjvB,cAAa,GAAIojvB,sBAAsB,CAACpjvB,cAAa,IAAK+xG,GAAG5oI,UAAUk+L,qBAAqB,WAAW,OAAOt+L,KAAKs6wB,iBAAiBtxoB,GAAGoxoB,4BAA4B,EAAEpxoB,GAAG5oI,UAAUm6wB,WAAW,WAAW,OAAOv6wB,KAAKy5wB,QAAQ,EAAEzwoB,GAAG5oI,UAAUo6wB,aAAa,SAAS55wB,GAAG,OAAOZ,IAAI,EAAEgpI,GAAG5oI,UAAUgzwB,QAAQ,WAAW,OAAO,CAAC,EAAEpqoB,GAAG5oI,UAAUq6wB,YAAY,WAAW,OAAM,CAAE,EAAEzxoB,GAAG5oI,UAAU2nN,OAAO,WAAW,GAAG5zN,UAAU,aAAa60I,GAAG,CAAC,IAAIpoI,EAAEzM,UAAU,GAAG,OAAO,OAAOyM,GAAGZ,KAAK06wB,WAAW95wB,EAAE,CAAC,GAAGzM,UAAU,aAAarK,OAAO,CAAC,IAAI9E,EAAEmP,UAAU,GAAG,KAAKnP,aAAagkJ,IAAI,OAAM,EAAG,IAAInoI,EAAE7b,EAAE,OAAOgb,KAAK26wB,YAAY95wB,EAAE,CAAC,EAAEmoI,GAAG5oI,UAAUu6wB,YAAY,SAAS/5wB,GAAG,OAAOZ,OAAOY,GAAGZ,KAAK26wB,YAAY/5wB,EAAE,EAAE,EAAEooI,GAAG5oI,UAAUw6wB,gBAAgB,WAAW56wB,KAAKc,MAAMkoI,GAAGqxoB,sBAAsB,EAAErxoB,GAAG5oI,UAAUy6wB,sBAAsB,WAAW76wB,KAAKw5wB,UAAU,IAAI,EAAExwoB,GAAG5oI,UAAU06wB,WAAW,SAASl6wB,GAAG,OAAO,OAAOA,GAAGZ,KAAK43V,OAAO+ib,YAAY/5wB,EAAEg3V,OAAO,EAAE5uN,GAAG5oI,UAAU26wB,UAAU,WAAW,OAAO,CAAC,EAAE/xoB,GAAG5oI,UAAU46wB,iBAAiB,WAAW,OAAO,CAAC,EAAEhyoB,GAAG5oI,UAAUsoM,UAAU,WAAW,GAAG,IAAIv0M,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE4b,EAAE,OAAOZ,KAAKs6wB,iBAAiBt1xB,EAAEs1xB,eAAet6wB,KAAKs6wB,eAAet1xB,EAAEs1xB,eAAet6wB,KAAKw9M,WAAWx4N,EAAEw4N,UAAU,EAAEx9M,KAAKw9M,WAAW,EAAEx4N,EAAEw4N,UAAU,EAAEx9M,KAAKi7wB,mBAAmBr6wB,EAAE,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO6L,KAAKs6wB,iBAAiBz5wB,EAAEy5wB,eAAet6wB,KAAKs6wB,eAAez5wB,EAAEy5wB,eAAet6wB,KAAKw9M,WAAW38M,EAAE28M,UAAU,EAAEx9M,KAAKw9M,WAAW,EAAE38M,EAAE28M,UAAU,EAAEx9M,KAAKi7wB,mBAAmBp6wB,EAAExb,EAAE,CAAC,EAAE2jJ,GAAG5oI,UAAU86wB,YAAY,WAAW,OAAOl7wB,KAAK25wB,SAAS,EAAE3woB,GAAG5oI,UAAUw5wB,QAAQ,WAAW,OAAO55wB,KAAK05wB,KAAK,EAAE1woB,GAAG5oI,UAAUmpM,YAAY,WAAW,OAAOvpM,KAAKu6wB,aAAaY,WAAWn7wB,KAAKo7wB,sBAAsB,EAAEpyoB,GAAG5oI,UAAUi7wB,2BAA2B,SAASz6wB,GAAG,GAAGA,EAAE05wB,iBAAiBtxoB,GAAGoxoB,6BAA6B,MAAM,IAAIj3xB,EAAE,4DAA4D,EAAE6lJ,GAAG5oI,UAAUu/N,MAAM,SAAS/+N,EAAE5b,EAAE6b,GAAG,OAAO,IAAIA,EAAED,EAAEmnN,OAAO/iO,GAAG4b,EAAErI,SAASvT,IAAI6b,CAAC,EAAEmoI,GAAG5oI,UAAUw3V,KAAK,WAAW,IAAIh3V,EAAEZ,KAAKsxF,OAAO,OAAO1wF,EAAE++B,YAAY/+B,CAAC,EAAEooI,GAAG5oI,UAAUk7wB,kBAAkB,WAAW,OAAOt7wB,KAAKy5wB,SAAS6B,mBAAmB,EAAEtyoB,GAAG5oI,UAAUg7wB,oBAAoB,WAAW,OAAO,OAAOp7wB,KAAKw5wB,YAAYx5wB,KAAKw5wB,UAAUx5wB,KAAKu7wB,2BAA2B,IAAIv1vB,EAAEhmB,KAAKw5wB,UAAU,EAAExwoB,GAAG5oI,UAAUo7wB,QAAQ,SAAS56wB,GAAGZ,KAAK05wB,MAAM94wB,CAAC,EAAEooI,GAAG5oI,UAAUq7wB,YAAY,SAAS76wB,GAAGZ,KAAK25wB,UAAU/4wB,CAAC,EAAEooI,GAAG5oI,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,IAAI,IAAI6b,EAAED,EAAEsB,WAAW7c,EAAEL,EAAEkd,WAAWrB,EAAE66wB,WAAWr2xB,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAElZ,EAAE/Y,OAAO67E,EAAEt+E,EAAEyC,OAAO7E,EAAE82B,EAAE2uL,UAAU/kI,GAAG,GAAG,IAAI1gF,EAAE,OAAOA,CAAC,CAAC,OAAO4d,EAAE66wB,UAAU,EAAEr2xB,EAAEq2xB,WAAW,EAAE,CAAC,EAAE1yoB,GAAG5oI,UAAUsvY,SAAS,WAAW,OAAO1vY,KAAKo7wB,sBAAsB1rY,UAAU,EAAE1mQ,GAAG5oI,UAAUu7wB,8BAA8B,WAAW,OAAO37wB,KAAKs6wB,iBAAiBtxoB,GAAGoxoB,8BAA8Bp6wB,KAAKs6wB,iBAAiBtxoB,GAAG8woB,sBAAsB95wB,KAAKs6wB,iBAAiBtxoB,GAAGixoB,2BAA2Bj6wB,KAAKs6wB,iBAAiBtxoB,GAAGmxoB,sBAAsB,EAAEnxoB,GAAG5oI,UAAU6uwB,YAAY,WAAW,MAAM,CAAC1oxB,EAAE2yB,EAAEl0B,EAAE,EAAEgkJ,GAAG5oI,UAAUwtG,SAAS,WAAW,OAAOo7B,EAAE,EAAEA,GAAG4yoB,oBAAoB,SAASh7wB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAExM,OAAOpP,IAAI,IAAI4b,EAAE5b,GAAGw4N,UAAU,OAAM,EAAG,OAAM,CAAE,EAAEx0E,GAAG6yoB,gBAAgB,SAASj7wB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAExM,OAAOpP,IAAI,GAAG,OAAO4b,EAAE5b,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEq0C,GAAGm2uB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAEwlC,GAAGwgvB,gBAAgBhmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAGygvB,qBAAqBjmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG0gvB,qBAAqBlmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG2gvB,qBAAqBnmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG4gvB,0BAA0BpmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG6gvB,kBAAkBrmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG8gvB,uBAAuBtmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAG+gvB,6BAA6BvmxB,IAAI,WAAW,OAAO,CAAC,EAAEwlC,GAAGghvB,sBAAsBxmxB,IAAI,WAAW,OAAOq9K,EAAE,EAAEpnL,OAAO0hC,iBAAiBw9G,GAAG3vG,IAAI,IAAI63I,GAAG,WAAW,EAAEA,GAAG+9lB,YAAY,WAAW,MAAM,CAACnka,GAAG,EAAE55L,GAAGjgL,OAAO,SAAS2P,GAAGA,EAAEi6wB,uBAAuB,EAAE,IAAIlrnB,GAAG,WAAW,EAAEA,GAAGvvJ,UAAUnP,OAAO,SAAS2P,GAAG,EAAE+uJ,GAAGvvJ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEt/mB,GAAGvvJ,UAAUwtG,SAAS,WAAW,OAAO+hD,EAAE,EAAE,IAAIk7M,GAAG,WAAW,EAAE7oO,GAAG,CAAC85oB,qBAAqB,CAAC7kvB,cAAa,GAAI8kvB,yBAAyB,CAAC9kvB,cAAa,GAAI+kvB,oCAAoC,CAAC/kvB,cAAa,GAAIglvB,mCAAmC,CAAChlvB,cAAa,GAAIilvB,mBAAmB,CAACjlvB,cAAa,GAAIklvB,uBAAuB,CAACllvB,cAAa,GAAImlvB,mCAAmC,CAACnlvB,cAAa,GAAIolvB,kCAAkC,CAACplvB,cAAa,GAAIqlvB,sBAAsB,CAACrlvB,cAAa,IAAK4zU,GAAGzqW,UAAUm8wB,aAAa,SAAS37wB,GAAG,EAAEiqW,GAAGzqW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpka,GAAGzqW,UAAUwtG,SAAS,WAAW,OAAOi9P,EAAE,EAAE7oO,GAAG85oB,qBAAqBjoxB,IAAI,WAAW,OAAO6uY,EAAE,EAAE1gQ,GAAG+5oB,yBAAyBloxB,IAAI,WAAW,OAAOq2L,EAAE,EAAEloD,GAAGg6oB,oCAAoCnoxB,IAAI,WAAW,OAAOgyI,EAAE,EAAE7D,GAAGi6oB,mCAAmCpoxB,IAAI,WAAW,OAAO4uY,EAAE,EAAEzgQ,GAAGk6oB,mBAAmBroxB,IAAI,WAAW,OAAO,IAAI6uY,EAAE,EAAE1gQ,GAAGm6oB,uBAAuBtoxB,IAAI,WAAW,OAAO,IAAIq2L,EAAE,EAAEloD,GAAGo6oB,mCAAmCvoxB,IAAI,WAAW,OAAO,IAAIgyI,EAAE,EAAE7D,GAAGq6oB,kCAAkCxoxB,IAAI,WAAW,OAAO,IAAI4uY,EAAE,EAAEzgQ,GAAGs6oB,sBAAsBzoxB,IAAI,WAAW,OAAOg3W,GAAGqxa,kBAAkB,EAAEpyxB,OAAO0hC,iBAAiBq/U,GAAG7oO,IAAI,IAAI0gQ,GAAG,WAAW,EAAEA,GAAGtiY,UAAUm8wB,aAAa,SAAS37wB,GAAG,OAAOA,EAAE,GAAG,CAAC,EAAE8hY,GAAGtiY,UAAU6uwB,YAAY,WAAW,MAAM,CAACpka,GAAG,EAAE63B,GAAGtiY,UAAUwtG,SAAS,WAAW,OAAO80R,EAAE,EAAE,IAAIx4M,GAAG,WAAW,EAAEA,GAAG9pL,UAAUm8wB,aAAa,SAAS37wB,GAAG,OAAOA,EAAE,CAAC,EAAEspL,GAAG9pL,UAAU6uwB,YAAY,WAAW,MAAM,CAACpka,GAAG,EAAE3gL,GAAG9pL,UAAUwtG,SAAS,WAAW,OAAOs8E,EAAE,EAAE,IAAIrkD,GAAG,WAAW,EAAEA,GAAGzlI,UAAUm8wB,aAAa,SAAS37wB,GAAG,OAAOA,EAAE,CAAC,EAAEilI,GAAGzlI,UAAU6uwB,YAAY,WAAW,MAAM,CAACpka,GAAG,EAAEhlO,GAAGzlI,UAAUwtG,SAAS,WAAW,OAAOi4B,EAAE,EAAE,IAAI48P,GAAG,WAAW,EAAEA,GAAGriY,UAAUm8wB,aAAa,SAAS37wB,GAAG,OAAO,IAAIA,CAAC,EAAE6hY,GAAGriY,UAAU6uwB,YAAY,WAAW,MAAM,CAACpka,GAAG,EAAE43B,GAAGriY,UAAUwtG,SAAS,WAAW,OAAO60R,EAAE,EAAE,IAAIc,GAAG,WAAW,EAAEA,GAAGnjY,UAAU9M,IAAI,WAAW,EAAEiwY,GAAGnjY,UAAU2uwB,OAAO,WAAW,EAAExrY,GAAGnjY,UAAUo9M,QAAQ,WAAW,EAAE+lL,GAAGnjY,UAAU8B,SAAS,WAAW,EAAEqhY,GAAGnjY,UAAU2S,KAAK,WAAW,EAAEwwX,GAAGnjY,UAAU0jN,QAAQ,WAAW,EAAEy/K,GAAGnjY,UAAUwiC,OAAO,WAAW,GAAG/hC,EAAET,UAAU,IAAImH,OAAOhU,KAAK,4BAA4B,IAAIowY,GAAG,WAAW,EAAEA,GAAGvjY,UAAUs7wB,QAAQ,WAAW,EAAE/3Y,GAAGvjY,UAAUtY,KAAK,WAAW,EAAE67Y,GAAGvjY,UAAUwiC,OAAO,WAAW,EAAE,IAAIggW,GAAG,SAAShiY,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUvM,IAAI,WAAW,EAAE7O,EAAEob,UAAUrM,IAAI,WAAW,EAAE/O,EAAEob,UAAUo9M,QAAQ,WAAW,EAAEx4N,CAAC,CAA3O,CAA6Ou+Y,KAAKl+Y,EAAE+a,UAAU,IAAImH,OAAOhU,KAAK,yBAAyB,IAAIswY,GAAG,SAASjjY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK8uwB,OAAO,GAAG36wB,UAAU,aAAaovY,IAAIvjY,KAAK+uwB,OAAO56wB,UAAU,GAAG,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUo8wB,eAAe,WAAW,EAAEx3xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAACruwB,EAAE2iY,GAAG,EAAEv+Y,EAAEob,UAAU9M,IAAI,SAASsN,GAAG,OAAO,IAAIzM,UAAUC,OAAO4L,KAAK8uwB,OAAOh7wB,KAAK8M,GAAGZ,KAAK8uwB,OAAO/hvB,OAAO54B,UAAU,GAAGA,UAAU,KAAI,CAAE,EAAEnP,EAAEob,UAAU26D,MAAM,WAAW/6D,KAAK8uwB,OAAO,EAAE,EAAE9pxB,EAAEob,UAAU2uwB,OAAO,SAASnuwB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW17wB,KAAK1M,IAAItO,EAAE8C,QAAQ,OAAM,CAAE,EAAE9C,EAAEob,UAAUrM,IAAI,SAAS6M,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK8uwB,OAAOluwB,GAAG,OAAOZ,KAAK8uwB,OAAOluwB,GAAG5b,EAAE6b,CAAC,EAAE7b,EAAEob,UAAU8B,SAAS,WAAW,OAAO,IAAI+gY,GAAGjjY,KAAK,EAAEhb,EAAEob,UAAUvM,IAAI,SAAS+M,GAAG,GAAGA,EAAE,GAAGA,GAAGZ,KAAK+S,OAAO,MAAM,IAAIlS,EAAE,OAAOb,KAAK8uwB,OAAOluwB,EAAE,EAAE5b,EAAEob,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAK8uwB,OAAO16wB,MAAM,EAAEpP,EAAEob,UAAU2S,KAAK,WAAW,OAAO/S,KAAK8uwB,OAAO16wB,MAAM,EAAEpP,EAAEob,UAAU0jN,QAAQ,WAAW,IAAI,IAAIljN,EAAE,GAAG5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAI4b,EAAE9M,KAAKkM,KAAK8uwB,OAAO9pxB,IAAI,OAAO4b,CAAC,EAAE5b,EAAEob,UAAUwiC,OAAO,SAAShiC,GAAG,IAAI,IAAI5b,GAAE,EAAG6b,EAAE,EAAExb,EAAE2a,KAAK8uwB,OAAO16wB,OAAOyM,EAAExb,EAAEwb,IAAI,GAAGb,KAAK8uwB,OAAOjuwB,KAAKD,EAAE,CAACZ,KAAK8uwB,OAAO/hvB,OAAOlsB,EAAE,GAAG7b,GAAE,EAAG,KAAK,CAAC,OAAOA,CAAC,EAAEA,CAAC,CAA1nC,CAA4nC49Y,IAAIK,GAAG,SAASriY,GAAG,SAAS5b,EAAEA,GAAG4b,EAAEP,KAAKL,MAAMA,KAAKy8wB,WAAWz3xB,EAAEgb,KAAK08wB,UAAU,CAAC,CAAC,OAAO97wB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUtY,KAAK,WAAW,GAAGkY,KAAK08wB,YAAY18wB,KAAKy8wB,WAAW1pwB,OAAO,MAAM,IAAI1tB,EAAE,OAAO2a,KAAKy8wB,WAAW5oxB,IAAImM,KAAK08wB,YAAY,EAAE13xB,EAAEob,UAAUs7wB,QAAQ,WAAW,OAAO17wB,KAAK08wB,UAAU18wB,KAAKy8wB,WAAW1pwB,MAAM,EAAE/tB,EAAEob,UAAUrM,IAAI,SAAS6M,GAAG,OAAOZ,KAAKy8wB,WAAW1oxB,IAAIiM,KAAK08wB,UAAU,EAAE97wB,EAAE,EAAE5b,EAAEob,UAAUwiC,OAAO,WAAW5iC,KAAKy8wB,WAAW75uB,OAAO5iC,KAAKy8wB,WAAW5oxB,IAAImM,KAAK08wB,WAAW,EAAE13xB,CAAC,CAA9hB,CAAgiB2+Y,IAAIhB,GAAG,SAAS/hY,GAAG,SAAS5b,IAAI,GAAG4b,EAAEP,KAAKL,MAAM,IAAI7L,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG6L,KAAKw8wB,eAAex3xB,EAAEoP,QAAQ4L,KAAK1M,IAAItO,GAAE,EAAG,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKw8wB,eAAe37wB,EAAEzM,QAAQ4L,KAAK1M,IAAIuN,EAAExb,EAAE,CAAC,CAACub,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC87wB,eAAe,CAAC1lvB,cAAa,IAAK,OAAOp2B,EAAE87wB,eAAe9oxB,IAAI,WAAW,OAAO,IAAIS,MAAM,GAAGm6B,KAAK,KAAK,EAAEzpC,EAAEob,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAKnM,IAAI+M,EAAE,EAAE5b,EAAEob,UAAU2uwB,OAAO,WAAW,GAAG,IAAI56wB,UAAUC,OAAO,CAAC,IAAI,IAAmByM,EAAE1M,UAAU,GAAG9O,GAAE,EAAG00B,EAAjC5lB,UAAU,GAA2B+N,WAAW6X,EAAE2hwB,WAAW17wB,KAAK1M,IAAIymB,EAAEjyB,OAAO+Y,GAAGxb,GAAE,EAAG,OAAOA,CAAC,CAAC,OAAOub,EAAER,UAAU2uwB,OAAOjuwB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAU6kB,MAAM,WAAW,IAAI,IAAIjgC,EAAE4b,EAAER,UAAU6kB,MAAM5kB,KAAKL,MAAMa,EAAE,EAAEA,EAAEb,KAAK+S,OAAOlS,IAAI7b,EAAEsO,IAAIuN,EAAEb,KAAKnM,IAAIgN,GAAGywF,QAAQ,OAAOtsG,CAAC,EAAEA,EAAEob,UAAU0ywB,kBAAkB,WAAW,OAAO9ywB,KAAK8jN,QAAQ9+N,EAAE23xB,eAAe,EAAE33xB,EAAEob,UAAU9M,IAAI,WAAW,GAAG,IAAIa,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAGyM,EAAER,UAAU9M,IAAI+M,KAAKL,KAAKhb,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaG,OAAO,kBAAkBH,UAAU,GAAG,CAAC,IAAI0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO6L,KAAK1M,IAAIuN,EAAExb,GAAE,IAAI,CAAE,CAAC,GAAG8O,UAAU,aAAa6kB,GAAG,kBAAkB7kB,UAAU,GAAG,CAAC,IAAI4lB,EAAE5lB,UAAU,GAAG,IAAIA,UAAU,IAAI6L,KAAK+S,QAAQ,GAAM/S,KAAKnM,IAAImM,KAAK+S,OAAO,GAAG28vB,SAAS31vB,GAAG,OAAO,KAAKnZ,EAAER,UAAU9M,IAAI+M,KAAKL,KAAK+Z,EAAE,MAAM,GAAG5lB,UAAU,aAAarK,QAAQ,kBAAkBqK,UAAU,GAAG,CAAC,IAAIwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAG,OAAO6L,KAAK1M,IAAIqwE,EAAE1gF,IAAG,CAAE,CAAC,MAAM,GAAG,IAAIkR,UAAUC,OAAO,CAAC,GAAG,kBAAkBD,UAAU,IAAIA,UAAU,aAAaG,OAAO,kBAAkBH,UAAU,GAAG,CAAC,IAAIyF,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAG,GAAGA,UAAU,GAAG,IAAI,IAAIqkB,EAAE,EAAEA,EAAE5e,EAAExF,OAAOokB,IAAIxY,KAAK1M,IAAIsG,EAAE4e,GAAGkrE,QAAQ,IAAI,IAAI99F,EAAEgU,EAAExF,OAAO,EAAExO,GAAG,EAAEA,IAAIoa,KAAK1M,IAAIsG,EAAEhU,GAAG89F,GAAG,OAAM,CAAE,CAAC,GAAG,kBAAkBvvF,UAAU,IAAIgc,OAAO+0F,UAAU/wG,UAAU,KAAKA,UAAU,aAAa6kB,EAAE,CAAC,IAAI7Y,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAG,IAAIA,UAAU,GAAG,CAAC,IAAIuN,EAAE1B,KAAK+S,OAAO,GAAGrR,EAAE,EAAE,CAAC,GAAGvB,EAAE,GAAMH,KAAKnM,IAAIsM,EAAE,GAAGuvwB,SAASrsxB,GAAG,OAAO,KAAK,GAAG8c,EAAEuB,GAAM1B,KAAKnM,IAAIsM,GAAGuvwB,SAASrsxB,GAAG,OAAO,IAAK,CAAC,CAACud,EAAER,UAAU9M,IAAI+M,KAAKL,KAAKG,EAAE9c,EAAE,CAAC,MAAM,GAAG,IAAI8Q,UAAUC,OAAO,CAAC,IAAIuN,EAAExN,UAAU,GAAG5Q,EAAE4Q,UAAU,GAAGxQ,EAAEwQ,UAAU,GAAGyN,EAAEzN,UAAU,GAAGhR,EAAE,EAAEQ,EAAEie,IAAIze,GAAG,GAAG,IAAI,IAAIgf,EAAExe,EAAEwe,IAAIP,EAAEO,GAAGhf,EAAE6c,KAAK1M,IAAIqO,EAAEQ,GAAG5e,GAAG,OAAM,CAAE,CAAC,EAAEyB,EAAEob,UAAUw8wB,UAAU,WAAW58wB,KAAK+S,OAAO,GAAG/S,KAAK1M,IAAI,IAAI0lB,EAAEhZ,KAAKnM,IAAI,KAAI,EAAG,EAAE7O,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE8E,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAr5E,CAAu5E6+Y,IAAIJ,GAAG,WAAW,EAAErhQ,GAAG,CAACy6oB,kBAAkB,CAAC5lvB,cAAa,GAAI6lvB,wBAAwB,CAAC7lvB,cAAa,GAAI0lvB,eAAe,CAAC1lvB,cAAa,IAAKmrG,GAAGy6oB,kBAAkBhpxB,IAAI,WAAW,OAAOgiJ,EAAE,EAAEzT,GAAG06oB,wBAAwBjpxB,IAAI,WAAW,OAAOyvY,EAAE,EAAElhQ,GAAGu6oB,eAAe9oxB,IAAI,WAAW,OAAO,IAAIS,MAAM,GAAGm6B,KAAK,KAAK,EAAEg1W,GAAGrjY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExrY,GAAGrjY,UAAUwtG,SAAS,WAAW,OAAO61R,EAAE,EAAEA,GAAGs5Y,OAAO,SAASn8wB,GAAG,QAAQA,EAAExM,OAAO,IAAMwM,EAAE,GAAG8uwB,SAAS9uwB,EAAEA,EAAExM,OAAO,IAAG,EAAEqvY,GAAGu5Y,YAAY,SAASp8wB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAIxb,EAAEub,EAAEC,GAAG,GAAG4iY,GAAGl7Y,QAAQlD,EAAEL,GAAG,EAAE,OAAOK,CAAC,CAAC,OAAO,IAAI,EAAEo+Y,GAAG7wY,OAAO,SAASgO,EAAE5b,GAAG,IAAI6b,EAAE4iY,GAAGl7Y,QAAQvD,EAAE4b,GAAG,GAAGC,EAAE,EAAE,OAAO,KAAK,IAAIxb,EAAE,IAAIiP,MAAMsM,EAAExM,QAAQq6B,KAAK,MAAMpU,EAAE04vB,UAAUnywB,EAAEC,EAAExb,EAAE,EAAEub,EAAExM,OAAOyM,GAAGwZ,EAAE04vB,UAAUnywB,EAAE,EAAEvb,EAAEub,EAAExM,OAAOyM,EAAEA,GAAGwZ,EAAE04vB,UAAU1txB,EAAE,EAAEub,EAAE,EAAEA,EAAExM,OAAO,EAAEqvY,GAAG17K,OAAO,WAAW,GAAG,IAAI5zN,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,GAAGyM,IAAI5b,EAAE,OAAM,EAAG,GAAG,OAAO4b,GAAG,OAAO5b,EAAE,OAAM,EAAG,GAAG4b,EAAExM,SAASpP,EAAEoP,OAAO,OAAM,EAAG,IAAI,IAAIyM,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,IAAID,EAAEC,GAAGknN,OAAO/iO,EAAE6b,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG,GAAG9O,IAAI00B,EAAE,OAAM,EAAG,GAAG,OAAO10B,GAAG,OAAO00B,EAAE,OAAM,EAAG,GAAG10B,EAAE+O,SAAS2lB,EAAE3lB,OAAO,OAAM,EAAG,IAAI,IAAInR,EAAE,EAAEA,EAAEoC,EAAE+O,OAAOnR,IAAI,GAAG,IAAI0gF,EAAEjkC,QAAQr6C,EAAEpC,GAAG82B,EAAE92B,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,EAAEwgZ,GAAG9+K,aAAa,SAAS/jN,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAI8hY,GAAGt9Y,EAAE,EAAEA,EAAEub,EAAExM,OAAO/O,IAAIL,EAAEo2Z,WAAWx6Y,EAAEvb,KAAKwb,EAAEvN,IAAIsN,EAAEvb,IAAG,GAAI,OAAOwb,EAAEiywB,mBAAmB,EAAErvY,GAAGw5Y,kBAAkB,SAASr8wB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAExM,OAAOpP,IAAI,GAAG4b,EAAE5b,EAAE,GAAG+iO,OAAOnnN,EAAE5b,IAAI,OAAM,EAAG,OAAM,CAAE,EAAEy+Y,GAAGy5Y,qBAAqB,SAASt8wB,GAAG,OAAI6iY,GAAGw5Y,kBAAkBr8wB,GAAmB,IAAI+hY,GAAG/hY,GAAE,GAAIkywB,oBAAtBlywB,CAAyC,EAAE6iY,GAAG3yX,QAAQ,SAASlQ,GAAG,IAAI,IAAI5b,EAAE4b,EAAExM,OAAO,EAAEyM,EAAErb,KAAKwpxB,MAAMhqxB,EAAE,GAAGK,EAAE,EAAEA,GAAGwb,EAAExb,IAAI,CAAC,IAAI00B,EAAEnZ,EAAEvb,GAAGub,EAAEvb,GAAGub,EAAE5b,EAAEK,GAAGub,EAAE5b,EAAEK,GAAG00B,CAAC,CAAC,EAAE0pX,GAAG05Y,WAAW,SAASv8wB,GAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,OAAOD,EAAEC,IAAI7b,IAAI,IAAIK,EAAE,IAAIiP,MAAMtP,GAAGypC,KAAK,MAAM,GAAG,IAAIzpC,EAAE,OAAOK,EAAE,IAAI,IAAI00B,EAAE,EAAE4pD,EAAE,EAAEA,EAAE/iE,EAAExM,OAAOuvE,IAAI,OAAO/iE,EAAE+iE,KAAKt+E,EAAE00B,KAAKnZ,EAAE+iE,IAAI,OAAOt+E,CAAC,EAAEo+Y,GAAG25Y,SAAS,WAAW,GAAG,IAAIjpxB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAIsP,MAAMsM,EAAExM,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI7b,EAAE6b,GAAG,IAAImY,EAAEpY,EAAEC,IAAI,OAAO7b,CAAC,CAAC,GAAG,IAAImP,UAAUC,OAAO,IAAI,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAAE,EAAEA,EAAE9pF,EAAE8pF,IAAI/f,EAAE1gF,EAAEygG,GAAG,IAAI1qE,EAAE3zB,EAAE00B,EAAE2pE,GAAG,EAAE+/S,GAAG45Y,gBAAgB,SAASz8wB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAIxb,EAAEub,EAAEC,GAAGkZ,EAAE/0B,EAAE4b,EAAExM,OAAOyM,EAAE,GAAG,GAAG,IAAIxb,EAAEqjN,UAAU3uL,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAE0pX,GAAG56L,SAAS,SAASjoM,GAAG,IAAI,IAAI5b,EAAE,IAAIghC,EAAEnlB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI7b,EAAE0uxB,gBAAgB9ywB,EAAEC,IAAI,OAAO7b,CAAC,EAAEy+Y,GAAGqvY,kBAAkB,SAASlywB,GAAG,OAAOA,EAAEkjN,QAAQ2/K,GAAGk5Y,eAAe,EAAEl5Y,GAAG65Y,6BAA6B,SAAS18wB,EAAE5b,GAAG,OAAOA,EAAEoP,QAAQwM,EAAE5b,EAAE,EAAE,EAAEy+Y,GAAGl7Y,QAAQ,SAASqY,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,GAAGD,EAAEmnN,OAAO/iO,EAAE6b,IAAI,OAAOA,EAAE,OAAO,CAAC,EAAE4iY,GAAG85Y,oBAAoB,SAAS38wB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEQ,KAAKwpxB,MAAMpuwB,EAAExM,OAAO,GAAGpP,IAAI,CAAC,IAAI6b,EAAED,EAAExM,OAAO,EAAEpP,EAAEK,EAAEub,EAAE5b,GAAG0jN,UAAU9nM,EAAEC,IAAI,GAAG,IAAIxb,EAAE,OAAOA,CAAC,CAAC,OAAO,CAAC,EAAEo+Y,GAAG/jW,QAAQ,SAAS9+B,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAED,EAAExM,QAAQyM,EAAE7b,EAAEoP,QAAQ,CAAC,IAAI/O,EAAEub,EAAEC,GAAG6nM,UAAU1jN,EAAE6b,IAAI,GAAG,IAAIxb,EAAE,OAAOA,EAAEwb,GAAG,CAAC,OAAOA,EAAE7b,EAAEoP,QAAQ,EAAEyM,EAAED,EAAExM,OAAO,EAAE,CAAC,EAAEqvY,GAAG+5Y,cAAc,SAAS58wB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,KAAK,OAAO7b,GAAGA,EAAE0jN,UAAU9nM,EAAEC,IAAI,KAAK7b,EAAE4b,EAAEC,IAAI,OAAO7b,CAAC,EAAEy+Y,GAAGg6Y,QAAQ,SAAS78wB,EAAE5b,EAAE6b,GAAG7b,EAAE41B,EAAEsvW,MAAMllY,EAAE,EAAE4b,EAAExM,QAAQ,IAAI/O,GAAGwb,EAAE+Z,EAAEsvW,MAAMrpX,GAAG,EAAED,EAAExM,SAASpP,EAAE,EAAE6b,EAAE,IAAIxb,EAAE,GAAGL,GAAG4b,EAAExM,SAAS/O,EAAE,GAAGwb,EAAE7b,IAAIK,EAAE,GAAG,IAAI00B,EAAE,IAAIzlB,MAAMjP,GAAGopC,KAAK,MAAM,GAAG,IAAIppC,EAAE,OAAO00B,EAAE,IAAI,IAAI4pD,EAAE,EAAE1gF,EAAE+B,EAAE/B,GAAG4d,EAAE5d,IAAI82B,EAAE4pD,KAAK/iE,EAAE3d,GAAG,OAAO82B,CAAC,EAAEjwB,OAAO0hC,iBAAiBi4W,GAAGrhQ,IAAI,IAAIyT,GAAG,WAAW,EAAEA,GAAGz1I,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,OAAOy+Y,GAAG/jW,QAAQ9+B,EAAE5b,EAAE,EAAE6wJ,GAAGz1I,UAAU6uwB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAE86H,GAAGz1I,UAAUwtG,SAAS,WAAW,OAAOioC,EAAE,EAAE,IAAIytP,GAAG,WAAW,EAAEA,GAAGljY,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,IAAI6b,EAAED,EAAEvb,EAAEL,EAAE,GAAG6b,EAAEzM,OAAO/O,EAAE+O,OAAO,OAAO,EAAE,GAAGyM,EAAEzM,OAAO/O,EAAE+O,OAAO,OAAO,EAAE,GAAG,IAAIyM,EAAEzM,OAAO,OAAO,EAAE,IAAI2lB,EAAE0pX,GAAG/jW,QAAQ7+B,EAAExb,GAAG,OAAOo+Y,GAAG45Y,gBAAgBx8wB,EAAExb,GAAG,EAAE00B,CAAC,EAAEupX,GAAGljY,UAAUs9wB,WAAW,SAAS98wB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEvb,EAAEL,EAAE,GAAG6b,EAAEzM,OAAO/O,EAAE+O,OAAO,OAAO,EAAE,GAAGyM,EAAEzM,OAAO/O,EAAE+O,OAAO,OAAO,EAAE,GAAG,IAAIyM,EAAEzM,OAAO,OAAO,EAAE,IAAI,IAAI2lB,EAAE0pX,GAAG85Y,oBAAoB18wB,GAAG8iE,EAAE8/T,GAAG85Y,oBAAoBl4xB,GAAGpC,EAAE82B,EAAE,EAAE,EAAElZ,EAAEzM,OAAO,EAAEwF,EAAE+pE,EAAE,EAAE,EAAE9iE,EAAEzM,OAAO,EAAEsvF,EAAE,EAAEA,EAAE7iF,EAAEzM,OAAOsvF,IAAI,CAAC,IAAIlrE,EAAE3X,EAAE5d,GAAGylN,UAAUrjN,EAAEuU,IAAI,GAAG,IAAI4e,EAAE,OAAOA,EAAEv1B,GAAG82B,EAAEngB,GAAG+pE,CAAC,CAAC,OAAO,CAAC,EAAE2/T,GAAGljY,UAAU6uwB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAEuoX,GAAGljY,UAAUwtG,SAAS,WAAW,OAAO01R,EAAE,EAAE,IAAIP,GAAG,WAAW,EAAEA,GAAG3iY,UAAUvM,IAAI,WAAW,EAAEkvY,GAAG3iY,UAAUk2H,IAAI,WAAW,EAAEysQ,GAAG3iY,UAAU2S,KAAK,WAAW,EAAEgwX,GAAG3iY,UAAUwoB,OAAO,WAAW,EAAEm6W,GAAG3iY,UAAUu9wB,SAAS,WAAW,EAAE,IAAIn6Y,GAAG,SAAS5iY,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,CAAC,CAAhJ,CAAkJ+9Y,KAAKhpX,EAAE3Z,UAAU,IAAImH,OAAOhU,KAAK,yBAAyBowE,EAAEvjE,UAAU,IAAImjY,IAAI/7Y,SAAS,WAAW,EAAE,IAAIs7Y,GAAG,SAASliY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK8uwB,OAAO,GAAG36wB,UAAU,aAAaovY,IAAIvjY,KAAK+uwB,OAAO56wB,UAAU,GAAG,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU5Y,SAAS,SAASoZ,GAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAK,GAAGgb,KAAK8uwB,OAAO9pxB,KAAK4b,EAAE,OAAM,EAAG,OAAM,CAAE,EAAE5b,EAAEob,UAAU9M,IAAI,SAASsN,GAAG,OAAOZ,KAAKxY,SAASoZ,KAAKZ,KAAK8uwB,OAAOh7wB,KAAK8M,IAAG,EAAG,EAAE5b,EAAEob,UAAU2uwB,OAAO,SAASnuwB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW17wB,KAAK1M,IAAItO,EAAE8C,QAAQ,OAAM,CAAE,EAAE9C,EAAEob,UAAUwiC,OAAO,SAAShiC,GAAG,MAAM,IAAI2G,KAAK,EAAEviB,EAAEob,UAAU2S,KAAK,WAAW,OAAO/S,KAAK8uwB,OAAO16wB,MAAM,EAAEpP,EAAEob,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAK8uwB,OAAO16wB,MAAM,EAAEpP,EAAEob,UAAU0jN,QAAQ,WAAW,IAAI,IAAIljN,EAAE,GAAG5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAI4b,EAAE9M,KAAKkM,KAAK8uwB,OAAO9pxB,IAAI,OAAO4b,CAAC,EAAE5b,EAAEob,UAAU8B,SAAS,WAAW,OAAO,IAAIkhY,GAAGpjY,KAAK,EAAEhb,CAAC,CAApzB,CAAszB2+E,GAAGy/T,GAAG,SAASxiY,GAAG,SAAS5b,EAAEA,GAAG4b,EAAEP,KAAKL,MAAMA,KAAK49wB,SAAS54xB,EAAEgb,KAAK08wB,UAAU,CAAC,CAAC,OAAO97wB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUtY,KAAK,WAAW,GAAGkY,KAAK08wB,YAAY18wB,KAAK49wB,SAAS7qwB,OAAO,MAAM,IAAI1tB,EAAE,OAAO2a,KAAK49wB,SAAS9O,OAAO9uwB,KAAK08wB,YAAY,EAAE13xB,EAAEob,UAAUs7wB,QAAQ,WAAW,OAAO17wB,KAAK08wB,UAAU18wB,KAAK49wB,SAAS7qwB,MAAM,EAAE/tB,EAAEob,UAAUwiC,OAAO,WAAW,MAAM,IAAI7oB,CAAC,EAAE/0B,CAAC,CAA7Z,CAA+Z2+Y,IAAId,GAAG,GAAG1iY,EAAEC,UAAU,IAAIojY,IAAI3vY,IAAI,SAAS+M,GAAG,IAAI,IAAI5b,EAAEgb,KAAK4uwB,MAAM,OAAO5pxB,GAAG,CAAC,IAAI6b,EAAED,EAAE8nM,UAAU1jN,EAAEwF,KAAK,GAAGqW,EAAE,EAAE7b,EAAEA,EAAEmF,SAAS,CAAC,KAAK0W,EAAE,GAAG,OAAO7b,EAAEW,MAAMX,EAAEA,EAAEiF,KAAK,CAAC,CAAC,OAAO,IAAI,EAAEkW,EAAEC,UAAUk2H,IAAI,SAAS11H,EAAE5b,GAAG,GAAG,OAAOgb,KAAK4uwB,MAAM,OAAO5uwB,KAAK4uwB,MAAM,CAACpkxB,IAAIoW,EAAEjb,MAAMX,EAAEmF,KAAK,KAAKF,MAAM,KAAKxC,OAAO,KAAKu/B,MAAM67W,GAAGj2G,SAAS,WAAW,OAAO5sR,KAAKra,KAAK,EAAE6ld,OAAO,WAAW,OAAOxrc,KAAKxV,GAAG,GAAGwV,KAAK6uwB,MAAM,EAAE,KAAK,IAAIhuwB,EAAExb,EAAE00B,EAAE/Z,KAAK4uwB,MAAM,GAAG,GAAG/twB,EAAEkZ,GAAG10B,EAAEub,EAAE8nM,UAAU3uL,EAAEvvB,MAAM,EAAEuvB,EAAEA,EAAE5vB,SAAS,CAAC,KAAK9E,EAAE,GAAG,CAAC,IAAIs+E,EAAE5pD,EAAEp0B,MAAM,OAAOo0B,EAAEp0B,MAAMX,EAAE2+E,CAAC,CAAC5pD,EAAEA,EAAE9vB,KAAK,QAAQ,OAAO8vB,GAAG,IAAI92B,EAAE,CAACuH,IAAIoW,EAAEzW,KAAK,KAAKF,MAAM,KAAKtE,MAAMX,EAAEyC,OAAOoZ,EAAEmmB,MAAM67W,GAAGj2G,SAAS,WAAW,OAAO5sR,KAAKra,KAAK,EAAE6ld,OAAO,WAAW,OAAOxrc,KAAKxV,GAAG,GAAG,OAAOnF,EAAE,EAAEwb,EAAE1W,KAAKlH,EAAE4d,EAAE5W,MAAMhH,EAAE+c,KAAK69wB,kBAAkB56xB,GAAG+c,KAAK6uwB,QAAQ,IAAI,EAAE1uwB,EAAEC,UAAUy9wB,kBAAkB,SAASj9wB,GAAG,IAAIA,EAAEomB,MAAM,EAAE,MAAMpmB,GAAGA,IAAIZ,KAAK4uwB,OAAO,IAAIhuwB,EAAEnZ,OAAOu/B,OAAO,GAAGptB,EAAEgH,KAAK4X,EAAE5e,EAAEA,EAAEgH,KAAK,CAAC,IAAI5b,EAAEY,EAAEgU,EAAEA,EAAEgH,KAAK,IAAI3d,EAAE+B,IAAI0+F,EAAE9pF,EAAEgH,GAAGiiY,IAAIn/S,EAAE1+F,EAAE69Y,IAAIn/S,EAAE9pF,EAAEA,EAAEgH,IAAI,GAAGA,EAAEhH,EAAEA,EAAEgH,MAAMA,IAAIhb,EAAEgU,EAAEgH,MAAMA,EAAEhH,EAAEgH,GAAGZ,KAAK89wB,WAAWl9wB,IAAI8iF,EAAE9pF,EAAEgH,GAAGiiY,IAAIn/S,EAAE9pF,EAAEA,EAAEgH,IAAI,GAAGZ,KAAK+9wB,YAAYnkxB,EAAEA,EAAEgH,KAAK,KAAK,CAAC,IAAIC,EAAE2X,EAAE5e,EAAEA,EAAEgH,KAAK,IAAI3d,EAAE4d,IAAI6iF,EAAE9pF,EAAEgH,GAAGiiY,IAAIn/S,EAAE7iF,EAAEgiY,IAAIn/S,EAAE9pF,EAAEA,EAAEgH,IAAI,GAAGA,EAAEhH,EAAEA,EAAEgH,MAAMA,IAAI4X,EAAE5e,EAAEgH,MAAMA,EAAEhH,EAAEgH,GAAGZ,KAAK+9wB,YAAYn9wB,IAAI8iF,EAAE9pF,EAAEgH,GAAGiiY,IAAIn/S,EAAE9pF,EAAEA,EAAEgH,IAAI,GAAGZ,KAAK89wB,WAAWlkxB,EAAEA,EAAEgH,KAAK,CAACZ,KAAK4uwB,MAAM5nvB,MAAM67W,EAAE,EAAE1iY,EAAEC,UAAUwoB,OAAO,WAAW,IAAIhoB,EAAE,IAAIijY,GAAG7+Y,EAAEgb,KAAKg+wB,gBAAgB,GAAG,OAAOh5xB,EAAE,IAAI4b,EAAEtN,IAAItO,EAAEW,OAAO,QAAQX,EAAEmb,EAAE89wB,UAAUj5xB,KAAK4b,EAAEtN,IAAItO,EAAEW,OAAO,OAAOib,CAAC,EAAET,EAAEC,UAAUu9wB,SAAS,WAAW,IAAI/8wB,EAAE,IAAIkiY,GAAG99Y,EAAEgb,KAAKg+wB,gBAAgB,GAAG,OAAOh5xB,EAAE,IAAI4b,EAAEtN,IAAItO,GAAG,QAAQA,EAAEmb,EAAE89wB,UAAUj5xB,KAAK4b,EAAEtN,IAAItO,GAAG,OAAO4b,CAAC,EAAET,EAAEC,UAAU09wB,WAAW,SAASl9wB,GAAG,GAAG,MAAMA,EAAE,CAAC,IAAI5b,EAAE4b,EAAE3W,MAAM2W,EAAE3W,MAAMjF,EAAEmF,KAAK,MAAMnF,EAAEmF,OAAOnF,EAAEmF,KAAK1C,OAAOmZ,GAAG5b,EAAEyC,OAAOmZ,EAAEnZ,OAAO,OAAOmZ,EAAEnZ,OAAOuY,KAAK4uwB,MAAM5pxB,EAAE4b,EAAEnZ,OAAO0C,OAAOyW,EAAEA,EAAEnZ,OAAO0C,KAAKnF,EAAE4b,EAAEnZ,OAAOwC,MAAMjF,EAAEA,EAAEmF,KAAKyW,EAAEA,EAAEnZ,OAAOzC,CAAC,CAAC,EAAEmb,EAAEC,UAAU29wB,YAAY,SAASn9wB,GAAG,GAAG,MAAMA,EAAE,CAAC,IAAI5b,EAAE4b,EAAEzW,KAAKyW,EAAEzW,KAAKnF,EAAEiF,MAAM,MAAMjF,EAAEiF,QAAQjF,EAAEiF,MAAMxC,OAAOmZ,GAAG5b,EAAEyC,OAAOmZ,EAAEnZ,OAAO,OAAOmZ,EAAEnZ,OAAOuY,KAAK4uwB,MAAM5pxB,EAAE4b,EAAEnZ,OAAOwC,QAAQ2W,EAAEA,EAAEnZ,OAAOwC,MAAMjF,EAAE4b,EAAEnZ,OAAO0C,KAAKnF,EAAEA,EAAEiF,MAAM2W,EAAEA,EAAEnZ,OAAOzC,CAAC,CAAC,EAAEmb,EAAEC,UAAU49wB,cAAc,WAAW,IAAIp9wB,EAAEZ,KAAK4uwB,MAAM,GAAG,MAAMhuwB,EAAE,KAAK,MAAMA,EAAEzW,MAAMyW,EAAEA,EAAEzW,KAAK,OAAOyW,CAAC,EAAET,EAAE89wB,UAAU,SAASr9wB,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAG,OAAOA,EAAE3W,MAAM,CAAC,IAAI,IAAIjF,EAAE4b,EAAE3W,MAAM,OAAOjF,EAAEmF,MAAMnF,EAAEA,EAAEmF,KAAK,OAAOnF,CAAC,CAAC,IAAI,IAAI6b,EAAED,EAAEnZ,OAAOpC,EAAEub,EAAE,OAAOC,GAAGxb,IAAIwb,EAAE5W,OAAO5E,EAAEwb,EAAEA,EAAEA,EAAEpZ,OAAO,OAAOoZ,CAAC,EAAEV,EAAEC,UAAU2S,KAAK,WAAW,OAAO/S,KAAK6uwB,KAAK,EAAE,IAAI1rY,GAAG,WAAW,EAAEA,GAAG/iY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9rY,GAAG/iY,UAAUwtG,SAAS,WAAW,OAAOu1R,EAAE,EAAE9/Y,EAAE+c,UAAU,IAAIujE,GAAGjiE,EAAEtB,UAAU,IAAI/c,GAAGmE,SAAS,SAASoZ,GAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAK,GAAG,IAAIgb,KAAK8uwB,OAAO9pxB,GAAG0jN,UAAU9nM,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEc,EAAEtB,UAAU9M,IAAI,SAASsN,GAAG,GAAGZ,KAAKxY,SAASoZ,GAAG,OAAM,EAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAK,GAAG,IAAIgb,KAAK8uwB,OAAO9pxB,GAAG0jN,UAAU9nM,GAAG,OAAOZ,KAAK8uwB,OAAO/hvB,OAAO/nC,EAAE,EAAE4b,IAAG,EAAG,OAAOZ,KAAK8uwB,OAAOh7wB,KAAK8M,IAAG,CAAE,EAAEc,EAAEtB,UAAU2uwB,OAAO,SAASnuwB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW17wB,KAAK1M,IAAItO,EAAE8C,QAAQ,OAAM,CAAE,EAAE4Z,EAAEtB,UAAUwiC,OAAO,SAAShiC,GAAG,MAAM,IAAImZ,CAAC,EAAErY,EAAEtB,UAAU2S,KAAK,WAAW,OAAO/S,KAAK8uwB,OAAO16wB,MAAM,EAAEsN,EAAEtB,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAK8uwB,OAAO16wB,MAAM,EAAEsN,EAAEtB,UAAU0jN,QAAQ,WAAW,IAAI,IAAIljN,EAAE,GAAG5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAI4b,EAAE9M,KAAKkM,KAAK8uwB,OAAO9pxB,IAAI,OAAO4b,CAAC,EAAEc,EAAEtB,UAAU8B,SAAS,WAAW,OAAO,IAAImhY,GAAGrjY,KAAK,EAAE,IAAIqjY,GAAG,SAASziY,GAAGZ,KAAKk+wB,SAASt9wB,EAAEZ,KAAK08wB,UAAU,CAAC,EAAEr5Y,GAAGjjY,UAAUtY,KAAK,WAAW,GAAGkY,KAAK08wB,YAAY18wB,KAAKk+wB,SAASnrwB,OAAO,MAAM,IAAI1tB,EAAE,OAAO2a,KAAKk+wB,SAASpP,OAAO9uwB,KAAK08wB,YAAY,EAAEr5Y,GAAGjjY,UAAUs7wB,QAAQ,WAAW,OAAO17wB,KAAK08wB,UAAU18wB,KAAKk+wB,SAASnrwB,MAAM,EAAEswX,GAAGjjY,UAAUwiC,OAAO,WAAW,MAAM,IAAI7oB,CAAC,EAAE,IAAI6pX,GAAG,WAAW,EAAEA,GAAGxwY,KAAK,WAAW,IAAIwN,EAAE5b,EAAE6b,EAAExb,EAAE00B,EAAE5lB,UAAU,GAAG,GAAG,IAAIA,UAAUC,OAAO/O,EAAE,SAASub,EAAE5b,GAAG,OAAO4b,EAAE8nM,UAAU1jN,EAAE,EAAE+0B,EAAE3mB,KAAK/N,QAAQ,GAAG,IAAI8O,UAAUC,OAAOyM,EAAE1M,UAAU,GAAG9O,EAAE,SAASub,EAAE5b,GAAG,OAAO6b,EAAE6+B,QAAQ9+B,EAAE5b,EAAE,EAAE+0B,EAAE3mB,KAAK/N,QAAQ,GAAG,IAAI8O,UAAUC,OAAO,EAAEpP,EAAE+0B,EAAEjf,MAAM3G,UAAU,GAAGA,UAAU,KAAKf,OAAO,IAAIuwE,EAAE5pD,EAAEjf,MAAM,EAAE3G,UAAU,IAAInG,OAAOhJ,EAAE+0B,EAAEjf,MAAM3G,UAAU,GAAG4lB,EAAE3lB,SAAS,IAAI2lB,EAAEgT,OAAO,EAAEhT,EAAE3lB,QAAQwM,EAAE,EAAEA,EAAE+iE,EAAEvvE,OAAOwM,IAAImZ,EAAEjmB,KAAK6vE,EAAE/iE,GAAG,MAAM,GAAG,IAAIzM,UAAUC,OAAO,IAAIpP,EAAE+0B,EAAEjf,MAAM3G,UAAU,GAAGA,UAAU,IAAI0M,EAAE1M,UAAU,GAAG9O,EAAE,SAASub,EAAE5b,GAAG,OAAO6b,EAAE6+B,QAAQ9+B,EAAE5b,EAAE,EAAEA,EAAEoO,KAAK/N,GAAGs+E,EAAE5pD,EAAEjf,MAAM,EAAE3G,UAAU,IAAInG,OAAOhJ,EAAE+0B,EAAEjf,MAAM3G,UAAU,GAAG4lB,EAAE3lB,SAAS2lB,EAAEgT,OAAO,EAAEhT,EAAE3lB,QAAQwM,EAAE,EAAEA,EAAE+iE,EAAEvvE,OAAOwM,IAAImZ,EAAEjmB,KAAK6vE,EAAE/iE,GAAG,EAAEgjY,GAAGu6Y,OAAO,SAASv9wB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAE,EAAExb,EAAEub,EAAExM,OAAOyM,EAAExb,EAAEwb,IAAI7b,EAAEsO,IAAIsN,EAAEC,IAAI,OAAO7b,CAAC,EAAE,IAAIk/Y,GAAG,WAAW,EAAEhpC,GAAG,CAACh6V,EAAE,CAAC+1B,cAAa,GAAIt1C,EAAE,CAACs1C,cAAa,GAAIne,EAAE,CAACme,cAAa,GAAI4zqB,MAAM,CAAC5zqB,cAAa,GAAIu0qB,KAAK,CAACv0qB,cAAa,GAAImnvB,SAAS,CAACnnvB,cAAa,GAAIonvB,UAAU,CAACpnvB,cAAa,GAAIqnvB,SAAS,CAACrnvB,cAAa,GAAIsnvB,aAAa,CAACtnvB,cAAa,GAAIunvB,MAAM,CAACvnvB,cAAa,GAAIwnvB,MAAM,CAACxnvB,cAAa,GAAIynvB,MAAM,CAACznvB,cAAa,IAAKikU,GAAGh6V,EAAErN,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAGv5W,EAAEkS,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAGpiV,EAAEjlB,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAG2vW,MAAMh3sB,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAGswW,KAAK33sB,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAGkjb,SAASvqxB,IAAI,WAAW,OAAO,CAAC,EAAEqnW,GAAGmjb,UAAUxqxB,IAAI,WAAW,MAAM,GAAG,EAAEqnW,GAAGojb,SAASzqxB,IAAI,WAAW,MAAM,GAAG,EAAEqnW,GAAGqjb,aAAa1qxB,IAAI,WAAW,MAAM,GAAG,EAAEqnW,GAAGsjb,MAAM3qxB,IAAI,WAAW,MAAM,GAAG,EAAEqnW,GAAGujb,MAAM5qxB,IAAI,WAAW,MAAM,GAAG,EAAEqnW,GAAGwjb,MAAM7qxB,IAAI,WAAW,MAAM,GAAG,EAAEqwY,GAAG9jY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/qY,GAAG9jY,UAAUwtG,SAAS,WAAW,OAAOs2R,EAAE,EAAEA,GAAGy6Y,kBAAkB,SAAS/9wB,GAAG,OAAOA,GAAG,KAAKsjY,GAAG2mU,MAAM,OAAO3mU,GAAGm6Y,UAAU,KAAKn6Y,GAAGsnU,KAAK,OAAOtnU,GAAGo6Y,SAAS,KAAKp6Y,GAAGk6Y,SAAS,OAAOl6Y,GAAGq6Y,aAAa,KAAKr6Y,GAAGhjY,EAAE,OAAOgjY,GAAGs6Y,MAAM,KAAKt6Y,GAAGviZ,EAAE,OAAOuiZ,GAAGu6Y,MAAM,KAAKv6Y,GAAGprX,EAAE,OAAOorX,GAAGw6Y,MAAM,MAAM,IAAIv7xB,EAAE,4BAA4Byd,EAAE,EAAEsjY,GAAG06Y,iBAAiB,SAASh+wB,GAAG,OAAOkY,EAAEnG,YAAY/R,IAAI,KAAKsjY,GAAGm6Y,UAAU,OAAOn6Y,GAAG2mU,MAAM,KAAK3mU,GAAGo6Y,SAAS,OAAOp6Y,GAAGsnU,KAAK,KAAKtnU,GAAGq6Y,aAAa,OAAOr6Y,GAAGk6Y,SAAS,KAAKl6Y,GAAGs6Y,MAAM,OAAOt6Y,GAAGhjY,EAAE,KAAKgjY,GAAGu6Y,MAAM,OAAOv6Y,GAAGviZ,EAAE,KAAKuiZ,GAAGw6Y,MAAM,OAAOx6Y,GAAGprX,EAAE,MAAM,IAAI31B,EAAE,6BAA6Byd,EAAE,EAAE9W,OAAO0hC,iBAAiB04W,GAAGhpC,IAAI,IAAIE,GAAG,WAAW,EAAEA,GAAGh7V,UAAUnP,OAAO,SAAS2P,GAAG,EAAEw6V,GAAGh7V,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7za,GAAGh7V,UAAUwtG,SAAS,WAAW,OAAOwtP,EAAE,EAAE,IAAI0oC,GAAG,WAAW,EAAEA,GAAG1jY,UAAUnP,OAAO,SAAS2P,EAAE5b,GAAG,EAAE8+Y,GAAG1jY,UAAUsgwB,OAAO,WAAW,EAAE58X,GAAG1jY,UAAUy+wB,kBAAkB,WAAW,EAAE/6Y,GAAG1jY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnrY,GAAG1jY,UAAUwtG,SAAS,WAAW,OAAOk2R,EAAE,EAAE,IAAIJ,GAAG,SAAS9iY,GAAG,SAAS5b,EAAEA,EAAE6b,GAAG,GAAGD,EAAEP,KAAKL,KAAKa,GAAGb,KAAK00wB,YAAY1vxB,GAAG,GAAG4b,EAAEi7wB,gBAAgB77wB,KAAK00wB,aAAa,MAAM,IAAIvxxB,EAAE,4CAA4C,CAACyd,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUm7wB,wBAAwB,WAAW,IAAI,IAAI36wB,EAAE,IAAIolB,EAAEhhC,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,EAAE8ywB,gBAAgB1zwB,KAAK00wB,YAAY1vxB,GAAGo2xB,uBAAuB,OAAOx6wB,CAAC,EAAE5b,EAAEob,UAAUo6wB,aAAa,SAAS55wB,GAAG,OAAOZ,KAAK00wB,YAAY9zwB,EAAE,EAAE5b,EAAEob,UAAUk6wB,aAAa,WAAW,OAAO15wB,EAAEw5wB,4BAA4B,EAAEp1xB,EAAEob,UAAU0+wB,eAAe,WAAW,IAAI,IAAIl+wB,EAAE,IAAItM,MAAM0L,KAAK++wB,gBAAgBtwvB,KAAK,MAAMzpC,GAAG,EAAE6b,EAAE,EAAEA,EAAEb,KAAK00wB,YAAYtgxB,OAAOyM,IAAI,IAAI,IAAIxb,EAAE2a,KAAK00wB,YAAY7zwB,GAAGi+wB,iBAAiB/kwB,EAAE,EAAEA,EAAE10B,EAAE+O,OAAO2lB,IAAInZ,IAAI5b,GAAGK,EAAE00B,GAAG,OAAOnZ,CAAC,EAAE5b,EAAEob,UAAUgzwB,QAAQ,WAAW,IAAI,IAAIxywB,EAAE,EAAE5b,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,GAAGZ,KAAK00wB,YAAY1vxB,GAAGouxB,UAAU,OAAOxywB,CAAC,EAAE5b,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,IAAI6L,KAAKg/wB,kBAAkBh6xB,GAAG,OAAM,EAAG,IAAIK,EAAEL,EAAE,GAAGgb,KAAK00wB,YAAYtgxB,SAAS/O,EAAEqvxB,YAAYtgxB,OAAO,OAAM,EAAG,IAAI,IAAI2lB,EAAE,EAAEA,EAAE/Z,KAAK00wB,YAAYtgxB,OAAO2lB,IAAI,IAAI/Z,KAAK00wB,YAAY36vB,GAAG4gwB,YAAYt1xB,EAAEqvxB,YAAY36vB,GAAGlZ,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAUu/B,UAAU,WAAW,IAAI,IAAI/+B,EAAE,EAAEA,EAAEZ,KAAK00wB,YAAYtgxB,OAAOwM,IAAIZ,KAAK00wB,YAAY9zwB,GAAG++B,YAAYikW,GAAGxwY,KAAK4M,KAAK00wB,YAAY,EAAE1vxB,EAAEob,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKw9M,UAAU,KAAKx9M,KAAK00wB,YAAY,GAAG/B,eAAe,EAAE3txB,EAAEob,UAAU6+wB,qBAAqB,WAAW,IAAI,IAAIr+wB,EAAEsjY,GAAG2mU,MAAM7ltB,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,EAAEpb,KAAKmE,IAAIiX,EAAEZ,KAAK00wB,YAAY1vxB,GAAGi6xB,wBAAwB,OAAOr+wB,CAAC,EAAE5b,EAAEob,UAAUgprB,aAAa,WAAW,IAAI,IAAIxorB,EAAEsjY,GAAG2mU,MAAM7ltB,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,EAAEpb,KAAKmE,IAAIiX,EAAEZ,KAAK00wB,YAAY1vxB,GAAGoksB,gBAAgB,OAAOxorB,CAAC,EAAE5b,EAAEob,UAAU26wB,UAAU,WAAW,IAAI,IAAIn6wB,EAAE,EAAE5b,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,GAAGZ,KAAK00wB,YAAY1vxB,GAAG+1xB,YAAY,OAAOn6wB,CAAC,EAAE5b,EAAEob,UAAU2+wB,aAAa,WAAW,IAAI,IAAIn+wB,EAAE,EAAE5b,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI4b,GAAGZ,KAAK00wB,YAAY1vxB,GAAG+5xB,eAAe,OAAOn+wB,CAAC,EAAE5b,EAAEob,UAAU46wB,iBAAiB,WAAW,OAAOh7wB,KAAK00wB,YAAYtgxB,MAAM,EAAEpP,EAAEob,UAAU0Q,QAAQ,WAAW,IAAI,IAAIlQ,EAAEZ,KAAK00wB,YAAYtgxB,OAAOpP,EAAE,IAAIsP,MAAMsM,GAAG6tB,KAAK,MAAM5tB,EAAE,EAAEA,EAAEb,KAAK00wB,YAAYtgxB,OAAOyM,IAAI7b,EAAE6b,GAAGb,KAAK00wB,YAAY7zwB,GAAGiQ,UAAU,OAAO9Q,KAAKu6wB,aAAa9E,yBAAyBzwxB,EAAE,EAAEA,EAAEob,UAAU66wB,mBAAmB,WAAW,GAAG,IAAI9mxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAI0c,EAAEkiY,GAAGu6Y,OAAOn+wB,KAAK00wB,cAAc7zwB,EAAE,IAAIa,EAAEkiY,GAAGu6Y,OAAOv9wB,EAAE8zwB,cAAc,OAAO10wB,KAAK0/B,QAAQ16C,EAAE6b,EAAE,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI,IAAmB2lB,EAAE5lB,UAAU,GAAGwvE,EAA5BxvE,UAAU,GAAsBlR,EAAE+c,KAAKg7wB,mBAAmBphxB,EAAE+pE,EAAEq3sB,mBAAmBt3rB,EAAE,EAAEA,EAAEzgG,GAAGygG,EAAE9pF,GAAG,CAAC,IAAI4e,EAAExY,KAAKw6wB,aAAa92rB,GAAG99F,EAAE+9E,EAAE62sB,aAAa92rB,GAAGvjF,EAAEqY,EAAEyiwB,mBAAmBr1xB,EAAEm0B,GAAG,GAAG,IAAI5Z,EAAE,OAAOA,EAAEujF,GAAG,CAAC,OAAOA,EAAEzgG,EAAE,EAAEygG,EAAE9pF,GAAG,EAAE,CAAC,CAAC,EAAE5U,EAAEob,UAAUU,MAAM,WAAW,GAAG4Z,EAAEvmB,UAAU,GAAGw7J,IAAI,IAAI,IAAI/uJ,EAAEzM,UAAU,GAAGnP,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAIgb,KAAK00wB,YAAY1vxB,GAAG8b,MAAMF,QAAQ,GAAG8Z,EAAEvmB,UAAU,GAAG2vY,IAAI,CAAC,IAAIjjY,EAAE1M,UAAU,GAAG,GAAG,IAAI6L,KAAK00wB,YAAYtgxB,OAAO,OAAO,KAAK,IAAI,IAAI/O,EAAE,EAAEA,EAAE2a,KAAK00wB,YAAYtgxB,SAAS4L,KAAK00wB,YAAYrvxB,GAAGyb,MAAMD,IAAIA,EAAE6/vB,UAAUr7wB,KAAKwb,EAAEg+wB,qBAAqB7+wB,KAAK46wB,iBAAiB,MAAM,GAAGlgwB,EAAEvmB,UAAU,GAAGinW,IAAI,CAAC,IAAIrhV,EAAE5lB,UAAU,GAAG4lB,EAAE9oB,OAAO+O,MAAM,IAAI,IAAI2jE,EAAE,EAAEA,EAAE3jE,KAAK00wB,YAAYtgxB,OAAOuvE,IAAI3jE,KAAK00wB,YAAY/wsB,GAAG7iE,MAAMiZ,EAAE,MAAM,GAAGW,EAAEvmB,UAAU,GAAG22W,IAAI,CAAC,IAAI7nX,EAAEkR,UAAU,GAAGlR,EAAEgO,OAAO+O,MAAM,IAAI,IAAIpG,EAAE,EAAEA,EAAEoG,KAAK00wB,YAAYtgxB,OAAOwF,IAAIoG,KAAK00wB,YAAY96wB,GAAGkH,MAAM7d,EAAE,CAAC,EAAE+B,EAAEob,UAAU8+wB,YAAY,WAAW,OAAOl/wB,KAAKq7wB,2BAA2Br7wB,MAAMsiY,GAAGozY,uBAAuB,IAAI,EAAE1wxB,EAAEob,UAAU6kB,MAAM,WAAW,IAAIjgC,EAAE4b,EAAER,UAAU6kB,MAAM5kB,KAAKL,MAAMhb,EAAE0vxB,YAAY,IAAIpgxB,MAAM0L,KAAK00wB,YAAYtgxB,QAAQq6B,KAAK,MAAM,IAAI,IAAI5tB,EAAE,EAAEA,EAAEb,KAAK00wB,YAAYtgxB,OAAOyM,IAAI7b,EAAE0vxB,YAAY7zwB,GAAGb,KAAK00wB,YAAY7zwB,GAAGokB,QAAQ,OAAOjgC,CAAC,EAAEA,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,oBAAoB,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAE,IAAItM,MAAM0L,KAAK00wB,YAAYtgxB,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAID,EAAEC,GAAGb,KAAK00wB,YAAY7zwB,GAAGywF,OAAO,OAAO,IAAItsG,EAAE4b,EAAEZ,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAUo9M,QAAQ,WAAW,IAAI,IAAI58M,EAAE,EAAEA,EAAEZ,KAAK00wB,YAAYtgxB,OAAOwM,IAAI,IAAIZ,KAAK00wB,YAAY9zwB,GAAG48M,UAAU,OAAM,EAAG,OAAM,CAAE,EAAEx4N,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAnuI,CAAquIgkJ,IAAIm7P,GAAG,SAASvjY,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAACyM,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUk6wB,aAAa,WAAW,OAAOtxoB,GAAGixoB,yBAAyB,EAAEj1xB,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,QAAQ6L,KAAKg/wB,kBAAkBh6xB,IAAI4b,EAAER,UAAUu6wB,YAAYt6wB,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAOj/wB,KAAK+yoB,WAAW7uQ,GAAG2mU,MAAM,CAAC,EAAE7ltB,EAAEob,UAAU2yoB,SAAS,WAAW,GAAG/yoB,KAAKw9M,UAAU,OAAM,EAAG,IAAI,IAAI58M,EAAE,EAAEA,EAAEZ,KAAK00wB,YAAYtgxB,OAAOwM,IAAI,IAAIZ,KAAK00wB,YAAY9zwB,GAAGmyoB,WAAW,OAAM,EAAG,OAAM,CAAE,EAAE/tpB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU0Q,QAAQ,WAAW,IAAI,IAAIlQ,EAAEZ,KAAK00wB,YAAYtgxB,OAAOpP,EAAE,IAAIsP,MAAMsM,GAAG6tB,KAAK,MAAM5tB,EAAE,EAAEA,EAAEb,KAAK00wB,YAAYtgxB,OAAOyM,IAAI7b,EAAE4b,EAAE,EAAEC,GAAGb,KAAK00wB,YAAY7zwB,GAAGiQ,UAAU,OAAO9Q,KAAKu6wB,aAAajF,sBAAsBtwxB,EAAE,EAAEA,EAAEob,UAAU8+wB,YAAY,WAAW,OAAO,IAAI96Y,GAAGpkY,MAAMk/wB,aAAa,EAAEl6xB,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,iBAAiB,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAE,IAAItM,MAAM0L,KAAK00wB,YAAYtgxB,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAID,EAAEC,GAAGb,KAAK00wB,YAAY7zwB,GAAGywF,OAAO,OAAO,IAAItsG,EAAE4b,EAAEZ,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC9rY,GAAG,EAAEn+Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAt6C,CAAw6C0+Y,IAAIU,GAAG,WAAW,GAAGpkY,KAAKm/wB,MAAM,KAAKn/wB,KAAKo/wB,UAAU,KAAKp/wB,KAAKq/wB,QAAQ,KAAKr/wB,KAAKs/wB,aAAa,KAAK,IAAInrxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE6lX,GAAGqxa,mBAAmBl8wB,KAAKm/wB,MAAMv+wB,EAAEZ,KAAKo/wB,UAAUx+wB,EAAE25wB,aAAav6wB,KAAKq/wB,QAAQr6xB,CAAC,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKm/wB,MAAMt+wB,EAAEb,KAAKo/wB,UAAUv+wB,EAAE05wB,aAAav6wB,KAAKq/wB,QAAQh6xB,CAAC,CAAC,EAAE++Y,GAAGhkY,UAAUm/wB,wBAAwB,SAAS3+wB,GAAG,GAAGZ,KAAKm/wB,MAAM3hkB,UAAU,OAAOx9M,KAAKw/wB,qBAAqB,IAAIx6xB,EAAEgb,KAAKy/wB,2BAA2B7+wB,GAAG,OAAO,IAAI5b,EAAEoP,OAAO4L,KAAKo/wB,UAAUlK,YAAYlwxB,EAAE,IAAIgb,KAAKo/wB,UAAUM,2BAA2B16xB,EAAE,EAAEo/Y,GAAGhkY,UAAU8+wB,YAAY,WAAW,OAAOl/wB,KAAKm/wB,iBAAiBj8Y,GAAGljY,KAAK2/wB,mBAAmB3/wB,KAAKm/wB,OAAOn/wB,KAAKm/wB,iBAAiBh7Y,GAAGnkY,KAAKu/wB,wBAAwBv/wB,KAAKm/wB,OAAOn/wB,KAAKm/wB,MAAMD,aAAa,EAAE96Y,GAAGhkY,UAAUu/wB,mBAAmB,SAAS/+wB,GAAG,OAAGZ,KAAKm/wB,MAAM3hkB,UAAiBx9M,KAAKw/wB,qBAAwB5+wB,EAAEmyoB,WAAmB/yoB,KAAKq/wB,QAAQ9C,aAAa,GAAG37wB,EAAEg/wB,gBAAgB5/wB,KAAKo/wB,UAAUjK,mBAA0Bn1wB,KAAKo/wB,UAAUjK,iBAAiB,CAACv0wB,EAAEg/wB,gBAAgBh/wB,EAAEi/wB,eAAe,EAAEz7Y,GAAGhkY,UAAUo/wB,mBAAmB,WAAW,OAAOx/wB,KAAKo/wB,UAAUjK,kBAAkB,EAAE/wY,GAAGhkY,UAAUq/wB,2BAA2B,SAAS7+wB,GAAG,IAAI5b,EAAE,IAAI6+Y,GAAG7jY,KAAKs/wB,aAAa,IAAIn/wB,EAAE,IAAI,IAAIU,EAAE,EAAEA,EAAED,EAAEo6wB,mBAAmBn6wB,IAAI,CAAC,IAAIxb,EAAEub,EAAE45wB,aAAa35wB,GAAG,IAAIxb,EAAE05xB,iBAAiB/+wB,KAAK8/wB,YAAYz6xB,EAAE06xB,eAAe,IAAI//wB,KAAK8/wB,YAAYz6xB,EAAE06xB,eAAe16xB,EAAE05xB,eAAe,IAAI,CAAC,IAAI,IAAIhlwB,EAAE/Z,KAAKs/wB,aAAa3B,WAAWz7wB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAO7E,EAAE0gF,EAAEipN,WAAW50P,MAAMh4B,KAAKq/wB,QAAQ9C,aAAat5xB,IAAI+B,EAAEsO,IAAIqwE,EAAE6nY,SAAS,CAAC,OAAO/nE,GAAGqvY,kBAAkB9txB,EAAE,EAAEo/Y,GAAGhkY,UAAU0/wB,YAAY,SAASl/wB,GAAG,IAAI5b,EAAEgb,KAAKs/wB,aAAazrxB,IAAI+M,GAAG,OAAO5b,IAAIA,EAAE,IAAIg+Y,GAAGhjY,KAAKs/wB,aAAahppB,IAAI11H,EAAE5b,IAAIA,EAAEgzC,OAAO,EAAEosW,GAAGhkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7qY,GAAGhkY,UAAUwtG,SAAS,WAAW,OAAOw2R,EAAE,EAAEA,GAAG86Y,YAAY,WAAW,OAAG,IAAI/qxB,UAAUC,OAAkC,IAAIgwY,GAAxBjwY,UAAU,IAAoB+qxB,cAAiB,IAAI/qxB,UAAUC,OAAiD,IAAIgwY,GAAvCjwY,UAAU,GAAKA,UAAU,IAAsB+qxB,mBAA9E,CAA4F,EAAE,IAAIl8Y,GAAG,WAAWhjY,KAAKg4B,MAAM,IAAI,EAAEgrW,GAAG5iY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjsY,GAAG5iY,UAAUwtG,SAAS,WAAW,OAAOo1R,EAAE,EAAE,IAAIe,GAAG,WAAW,EAAEC,GAAG,CAACg8Y,QAAQ,CAAC/ovB,cAAa,GAAIgpvB,uBAAuB,CAAChpvB,cAAa,IAAK8sW,GAAG3jY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAElrY,GAAG3jY,UAAUwtG,SAAS,WAAW,OAAOm2R,EAAE,EAAEA,GAAGxvG,MAAM,SAAS3zR,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIvM,MAAMtP,GAAGypC,KAAK,MAAMppC,EAAE,EAAEA,EAAEL,EAAEK,IAAIwb,EAAExb,GAAGub,EAAE,OAAOL,OAAOM,EAAE,EAAEkjY,GAAGm8Y,cAAc,WAAW,GAAG,IAAI/rxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAI,WAAW,EAAE6b,EAAE,IAAI,WAAW,CAAf,CAAiB7b,GAAG,OAAO4b,EAAEu/wB,gBAAgBt/wB,GAAG7b,EAAEgC,UAAU,CAAC,GAAG,IAAImN,UAAUC,OAAO,CAAC,IAAI,IAAmB2lB,EAAE5lB,UAAU,GAAGwvE,EAAE,GAAG1gF,EAAE,IAAI,WAAW,CAAf,CAAiB,IAAI,WAAW,CAAf,CAAiB8gZ,GAAGm8Y,cAAxE/rxB,UAAU,MAAiFyF,EAAE,EAAEA,EAAEmgB,EAAEngB,IAAI,IAAI+pE,GAAG1gF,EAAEm9xB,WAAWr8Y,GAAGi8Y,OAAO,CAAC,MAAMp/wB,GAAG,KAAKA,aAAae,GAAG,MAAMf,EAAE0hY,GAAGozY,sBAAsB,CAAC,OAAO/xsB,CAAC,CAAC,EAAEogU,GAAG7iZ,MAAM,SAAS0f,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEoP,OAAO/O,EAAE,IAAIw+Y,GAAG9pX,EAAE,GAAGnZ,EAAE+iE,EAAE5pD,EAAExxB,QAAQvD,GAAG2+E,GAAG,GAAG,CAAC,IAAI1gF,EAAE82B,EAAEovE,UAAU,EAAExlB,GAAGt+E,EAAEiO,IAAIrQ,GAAG0gF,GAAG5pD,EAAEA,EAAEovE,UAAUxlB,EAAE9iE,IAAItY,QAAQvD,EAAE,CAAC+0B,EAAE3lB,OAAO,GAAG/O,EAAEiO,IAAIymB,GAAG,IAAI,IAAIngB,EAAE,IAAItF,MAAMjP,EAAE0tB,QAAQ0b,KAAK,MAAMi1D,EAAE,EAAEA,EAAE9pF,EAAExF,OAAOsvF,IAAI9pF,EAAE8pF,GAAGr+F,EAAEwO,IAAI6vF,GAAG,OAAO9pF,CAAC,EAAEmqY,GAAG/8Y,SAAS,WAAW,GAAG,IAAImN,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO4vY,GAAGk8Y,uBAAuBzhvB,OAAO59B,EAAE,CAAC,EAAEmjY,GAAGkwY,OAAO,SAASrzwB,GAAG,OAAOmjY,GAAGxvG,MAAM,IAAI3zR,EAAE,EAAEojY,GAAGg8Y,QAAQnsxB,IAAI,WAAW,OAAOwmB,EAAE0xN,YAAY,iBAAiB,EAAEi4J,GAAGi8Y,uBAAuBpsxB,IAAI,WAAW,OAAO,IAAI,WAAW,CAAf,CAAiB,MAAM,EAAE/J,OAAO0hC,iBAAiBu4W,GAAGC,IAAI,IAAIC,GAAG,WAAW,EAAEA,GAAG7jY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEhrY,GAAG7jY,UAAUwtG,SAAS,WAAW,OAAOq2R,EAAE,EAAEA,GAAGo8Y,UAAU,SAASz/wB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI,IAAI00B,EAAEv0B,KAAKkE,IAAIkX,EAAEworB,eAAevorB,EAAEuorB,gBAAgBzlnB,EAAE,EAAEA,EAAE5pD,EAAE4pD,IAAI9iE,EAAE4uwB,YAAYpqxB,EAAEs+E,EAAE/iE,EAAE+uwB,YAAY3qxB,EAAE2+E,GAAG,EAAEsgU,GAAG84Y,OAAO,SAASn8wB,GAAG,IAAI5b,EAAE4b,EAAEmS,OAAO,OAAO,IAAI/tB,KAAKA,GAAG,IAAK4b,EAAE+uwB,YAAY,EAAEn1vB,EAAEF,KAAK1Z,EAAE+uwB,YAAY3qxB,EAAE,EAAEw1B,EAAEF,IAAI1Z,EAAE+uwB,YAAY,EAAEn1vB,EAAEH,KAAKzZ,EAAE+uwB,YAAY3qxB,EAAE,EAAEw1B,EAAEH,EAAG,EAAE4pX,GAAGz7L,QAAQ,SAAS5nM,EAAE5b,GAAG,IAAI6b,EAAED,EAAEmS,OAAO,GAAGlS,IAAI7b,EAAE+tB,OAAO,OAAM,EAAG,IAAI,IAAI1tB,EAAEG,KAAKkE,IAAIkX,EAAEworB,eAAepksB,EAAEoksB,gBAAgBrvqB,EAAE,EAAEA,EAAElZ,EAAEkZ,IAAI,IAAI,IAAI4pD,EAAE,EAAEA,EAAEt+E,EAAEs+E,IAAI,CAAC,IAAI1gF,EAAE2d,EAAE+uwB,YAAY51vB,EAAE4pD,GAAG/pE,EAAE5U,EAAE2qxB,YAAY51vB,EAAE4pD,GAAG,KAAG/iE,EAAE+uwB,YAAY51vB,EAAE4pD,KAAK3+E,EAAE2qxB,YAAY51vB,EAAE4pD,IAAMxhE,EAAEpc,MAAM9C,IAAKkf,EAAEpc,MAAM6T,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEqqY,GAAGjhS,OAAO,SAASpiG,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEF,OAAOG,EAAE7b,EAAEoksB,gBAAgBrvqB,EAAE/0B,EAAE+tB,OAAO,GAAGkxX,GAAG3yS,KAAKtsG,EAAE,EAAEK,EAAE,EAAE00B,GAAGA,EAAE,EAAE,IAAI,IAAI4pD,EAAE5pD,EAAE4pD,EAAE9iE,EAAE8iE,IAAIsgU,GAAG3yS,KAAKtsG,EAAE+0B,EAAE,EAAE10B,EAAEs+E,EAAE,GAAG,OAAOt+E,CAAC,EAAE4+Y,GAAGnzX,QAAQ,SAASlQ,GAAG,IAAI,IAAI5b,EAAE4b,EAAEmS,OAAO,EAAElS,EAAErb,KAAKwpxB,MAAMhqxB,EAAE,GAAGK,EAAE,EAAEA,GAAGwb,EAAExb,IAAI4+Y,GAAGvxS,KAAK9xF,EAAEvb,EAAEL,EAAEK,EAAE,EAAE4+Y,GAAGvxS,KAAK,SAAS9xF,EAAE5b,EAAE6b,GAAG,GAAG7b,IAAI6b,EAAE,OAAO,KAAK,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEworB,eAAe/jsB,IAAI,CAAC,IAAI00B,EAAEnZ,EAAE+uwB,YAAY3qxB,EAAEK,GAAGub,EAAE6uwB,YAAYzqxB,EAAEK,EAAEub,EAAE+uwB,YAAY9uwB,EAAExb,IAAIub,EAAE6uwB,YAAY5uwB,EAAExb,EAAE00B,EAAE,CAAC,EAAEkqX,GAAG3yS,KAAK,SAAS1wF,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI,IAAI4pD,EAAE,EAAEA,EAAE5pD,EAAE4pD,IAAIsgU,GAAGo8Y,UAAUz/wB,EAAE5b,EAAE2+E,EAAE9iE,EAAExb,EAAEs+E,EAAE,EAAEsgU,GAAGj9Y,SAAS,WAAW,GAAG,IAAImN,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE4b,EAAEmS,OAAO,GAAG,IAAI/tB,EAAE,MAAM,KAAK,IAAI6b,EAAED,EAAEworB,eAAe/jsB,EAAE,IAAI4zB,EAAE5zB,EAAEkrI,OAAO,KAAK,IAAI,IAAIx2G,EAAE,EAAEA,EAAE/0B,EAAE+0B,IAAI,CAACA,EAAE,GAAG10B,EAAEkrI,OAAO,KAAK,IAAI,IAAI5sD,EAAE,EAAEA,EAAE9iE,EAAE8iE,IAAIA,EAAE,GAAGt+E,EAAEkrI,OAAO,KAAKlrI,EAAEkrI,OAAOwzQ,GAAG/8Y,SAAS4Z,EAAE+uwB,YAAY51vB,EAAE4pD,IAAI,CAAC,OAAOt+E,EAAEkrI,OAAO,KAAKlrI,EAAE2B,UAAU,CAAC,EAAEi9Y,GAAGq8Y,gBAAgB,SAAS1/wB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAE+tB,OAAO,OAAG,IAAIlS,EAAS7b,EAAK6b,GAAG,EAASojY,GAAGs8Y,iBAAiB3/wB,EAAE5b,EAAE,GAAUA,EAAE2qxB,YAAY,EAAEn1vB,EAAEF,KAAKt1B,EAAE2qxB,YAAY9uwB,EAAE,EAAE2Z,EAAEF,IAAIt1B,EAAE2qxB,YAAY,EAAEn1vB,EAAEH,KAAKr1B,EAAE2qxB,YAAY9uwB,EAAE,EAAE2Z,EAAEH,GAAGr1B,EAAEi/Y,GAAGs8Y,iBAAiB3/wB,EAAE5b,EAAE6b,EAAE,EAAE,EAAEojY,GAAGs8Y,iBAAiB,SAAS3/wB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEF,OAAOG,EAAE7b,EAAEoksB,gBAAgBrvqB,EAAE/0B,EAAE+tB,OAAOkxX,GAAG3yS,KAAKtsG,EAAE,EAAEK,EAAE,EAAE00B,GAAG,IAAI,IAAI4pD,EAAE5pD,EAAE4pD,EAAE9iE,EAAE8iE,IAAIsgU,GAAG3yS,KAAKtsG,EAAE,EAAEK,EAAEs+E,EAAE,GAAG,OAAOt+E,CAAC,EAAE,IAAI69Y,GAAG,SAAStiY,GAAG,SAAS5b,EAAEA,EAAE6b,GAAGD,EAAEP,KAAKL,KAAKa,GAAGb,KAAKqnE,QAAQ,KAAKrnE,KAAKosD,KAAKpnE,EAAE,CAAC4b,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUm7wB,wBAAwB,WAAW,OAAOv7wB,KAAKw9M,UAAU,IAAIx3L,EAAEhmB,KAAKqnE,QAAQwrsB,eAAe,IAAI7svB,EAAE,EAAEhhC,EAAEob,UAAU28wB,OAAO,WAAW,OAAO/8wB,KAAK+yoB,YAAY/yoB,KAAKwgxB,UAAU,EAAEx7xB,EAAEob,UAAUk6wB,aAAa,WAAW,OAAO15wB,EAAEm5wB,oBAAoB,EAAE/0xB,EAAEob,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKqnE,QAAQyrsB,mBAAmB,EAAE9txB,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,IAAI6L,KAAKg/wB,kBAAkBh6xB,GAAG,OAAM,EAAG,IAAIK,EAAEL,EAAE,GAAGgb,KAAKqnE,QAAQt0D,SAAS1tB,EAAEgiF,QAAQt0D,OAAO,OAAM,EAAG,IAAI,IAAIgH,EAAE,EAAEA,EAAE/Z,KAAKqnE,QAAQt0D,OAAOgH,IAAI,IAAI/Z,KAAK2/N,MAAM3/N,KAAKqnE,QAAQsrsB,cAAc54vB,GAAG10B,EAAEgiF,QAAQsrsB,cAAc54vB,GAAGlZ,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAUu/B,UAAU,WAAW,IAAI,IAAI/+B,EAAE,EAAEA,EAAEpb,KAAKwpxB,MAAMhvwB,KAAKqnE,QAAQt0D,OAAO,GAAGnS,IAAI,CAAC,IAAI5b,EAAEgb,KAAKqnE,QAAQt0D,OAAO,EAAEnS,EAAE,IAAIZ,KAAKqnE,QAAQsrsB,cAAc/xwB,GAAGmnN,OAAO/nN,KAAKqnE,QAAQsrsB,cAAc3txB,IAAI,OAAOgb,KAAKqnE,QAAQsrsB,cAAc/xwB,GAAG8nM,UAAU1oM,KAAKqnE,QAAQsrsB,cAAc3txB,IAAI,GAAGi/Y,GAAGnzX,QAAQ9Q,KAAKqnE,SAAS,IAAI,CAAC,EAAEriF,EAAEob,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKw9M,UAAU,KAAKx9M,KAAKqnE,QAAQsrsB,cAAc,EAAE,EAAE3txB,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAOj/wB,KAAK+yoB,WAAW7uQ,GAAG2mU,MAAM,CAAC,EAAE7ltB,EAAEob,UAAU2yoB,SAAS,WAAW,OAAO/yoB,KAAKw9M,WAAWx9M,KAAK+/wB,eAAe,GAAGrQ,SAAS1vwB,KAAK+/wB,eAAe//wB,KAAK++wB,eAAe,GAAG,EAAE/5xB,EAAEob,UAAUy/wB,YAAY,WAAW,OAAO7/wB,KAAKw9M,UAAU,KAAKx9M,KAAKygxB,UAAUzgxB,KAAK++wB,eAAe,EAAE,EAAE/5xB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU26wB,UAAU,WAAW,OAAOrqZ,GAAGyoZ,cAAcn5wB,KAAKqnE,QAAQ,EAAEriF,EAAEob,UAAU2+wB,aAAa,WAAW,OAAO/+wB,KAAKqnE,QAAQt0D,MAAM,EAAE/tB,EAAEob,UAAU0Q,QAAQ,WAAW,IAAIlQ,EAAEZ,KAAKqnE,QAAQiqB,OAAqB,OAAd2yS,GAAGnzX,QAAQlQ,GAAUZ,KAAKu6wB,aAAanF,iBAAiBx0wB,EAAE,EAAE5b,EAAEob,UAAU66wB,mBAAmB,WAAW,GAAG,IAAI9mxB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,EAAE6b,EAAE,EAAE7b,EAAEgb,KAAKqnE,QAAQt0D,QAAQlS,EAAED,EAAEymE,QAAQt0D,QAAQ,CAAC,IAAI1tB,EAAE2a,KAAKqnE,QAAQsrsB,cAAc3txB,GAAG0jN,UAAU9nM,EAAEymE,QAAQsrsB,cAAc9xwB,IAAI,GAAG,IAAIxb,EAAE,OAAOA,EAAEL,IAAI6b,GAAG,CAAC,OAAO7b,EAAEgb,KAAKqnE,QAAQt0D,OAAO,EAAElS,EAAED,EAAEymE,QAAQt0D,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI5e,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAG,OAAOA,UAAU,GAAGurC,QAAQ1/B,KAAKqnE,QAAQttD,EAAEstD,QAAQ,CAAC,EAAEriF,EAAEob,UAAUU,MAAM,WAAW,GAAG4Z,EAAEvmB,UAAU,GAAGw7J,IAAI,IAAI,IAAI/uJ,EAAEzM,UAAU,GAAGnP,EAAE,EAAEA,EAAEgb,KAAKqnE,QAAQt0D,OAAO/tB,IAAI4b,EAAE3P,OAAO+O,KAAKqnE,QAAQsrsB,cAAc3txB,SAAS,GAAG01B,EAAEvmB,UAAU,GAAG2vY,IAAI,CAAC,IAAIjjY,EAAE1M,UAAU,GAAG,GAAG,IAAI6L,KAAKqnE,QAAQt0D,OAAO,OAAO,KAAK,IAAI,IAAI1tB,EAAE,EAAEA,EAAE2a,KAAKqnE,QAAQt0D,SAASlS,EAAE5P,OAAO+O,KAAKqnE,QAAQhiF,IAAIwb,EAAE6/vB,UAAUr7wB,KAAKwb,EAAEg+wB,qBAAqB7+wB,KAAK46wB,iBAAiB,MAASlgwB,EAAEvmB,UAAU,GAAGinW,KAAuC1gV,EAAEvmB,UAAU,GAAG22W,MAAjD32W,UAAU,GAAGlD,OAAO+O,KAA4D,EAAEhb,EAAEob,UAAU8+wB,YAAY,WAAW,OAAO,IAAI96Y,GAAGpkY,MAAMk/wB,aAAa,EAAEl6xB,EAAEob,UAAU4+wB,kBAAkB,SAASp+wB,GAAG,OAAOA,aAAa5b,CAAC,EAAEA,EAAEob,UAAU6kB,MAAM,WAAW,IAAIjgC,EAAE4b,EAAER,UAAU6kB,MAAM5kB,KAAKL,MAAM,OAAOhb,EAAEqiF,QAAQrnE,KAAKqnE,QAAQpiD,QAAQjgC,CAAC,EAAEA,EAAEob,UAAU2/wB,eAAe,SAASn/wB,GAAG,OAAOZ,KAAKqnE,QAAQsrsB,cAAc/xwB,EAAE,EAAE5b,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,YAAY,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,OAAO,IAAItsG,EAAEgb,KAAKqnE,QAAQiqB,OAAOtxF,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAUsgxB,sBAAsB,WAAW,OAAO1gxB,KAAKqnE,OAAO,EAAEriF,EAAEob,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAKqnE,QAAQt0D,MAAM,EAAE/tB,EAAEob,UAAUgsD,KAAK,SAASxrD,GAAG,GAAG,OAAOA,IAAIA,EAAEZ,KAAKu6wB,aAAaoG,+BAA+BjgxB,OAAO,KAAK,IAAIE,EAAEmS,OAAO,MAAM,IAAI5vB,EAAE,iDAAiDyd,EAAEmS,OAAO,yBAAyB/S,KAAKqnE,QAAQzmE,CAAC,EAAE5b,EAAEob,UAAUwgxB,aAAa,SAAShgxB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKqnE,QAAQt0D,OAAO/tB,IAAI,GAAGgb,KAAKqnE,QAAQsrsB,cAAc3txB,GAAG+iO,OAAOnnN,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE5b,EAAEob,UAAUw/wB,cAAc,WAAW,OAAO5/wB,KAAKw9M,UAAU,KAAKx9M,KAAKygxB,UAAU,EAAE,EAAEz7xB,EAAEob,UAAUqgxB,UAAU,SAAS7/wB,GAAG,OAAOZ,KAAKu6wB,aAAarF,YAAYl1wB,KAAKqnE,QAAQsrsB,cAAc/xwB,GAAG,EAAE5b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC9rY,GAAG,EAAEn+Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAx/H,CAA0/HgkJ,IAAIs7P,GAAG,WAAW,EAAEA,GAAGlkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE3qY,GAAGlkY,UAAUwtG,SAAS,WAAW,OAAO02R,EAAE,EAAE,IAAIC,GAAG,SAAS3jY,GAAG,SAAS5b,EAAEA,EAAE6b,GAAGD,EAAEP,KAAKL,KAAKa,GAAGb,KAAKw0wB,aAAaxvxB,GAAG,KAAKgb,KAAKosD,KAAKpsD,KAAKw0wB,aAAa,CAAC5zwB,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUm7wB,wBAAwB,WAAW,GAAGv7wB,KAAKw9M,UAAU,OAAO,IAAIx3L,EAAE,IAAIplB,EAAE,IAAIolB,EAAE,OAAOplB,EAAE8ywB,gBAAgB1zwB,KAAKw0wB,aAAaz9W,KAAK,GAAG/2Z,KAAKw0wB,aAAax9W,KAAK,IAAIp2Z,CAAC,EAAE5b,EAAEob,UAAUk6wB,aAAa,WAAW,OAAO15wB,EAAEi5wB,eAAe,EAAE70xB,EAAEob,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKw9M,UAAU,GAAG,CAACx9M,KAAK2ywB,gBAAgB,EAAE3txB,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,QAAQ6L,KAAKg/wB,kBAAkBh6xB,QAAQgb,KAAKw9M,YAAYx4N,EAAEw4N,YAAYx9M,KAAKw9M,YAAYx4N,EAAEw4N,WAAWx9M,KAAK2/N,MAAM36O,EAAE2txB,gBAAgB3ywB,KAAK2ywB,gBAAgB9xwB,GAAG,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAUu/B,UAAU,WAAW,EAAE36C,EAAEob,UAAUuywB,cAAc,WAAW,OAAO,IAAI3ywB,KAAKw0wB,aAAazhwB,OAAO/S,KAAKw0wB,aAAa7B,cAAc,GAAG,IAAI,EAAE3txB,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAO/6Y,GAAG2mU,KAAK,EAAE7ltB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU2+wB,aAAa,WAAW,OAAO/+wB,KAAKw9M,UAAU,EAAE,CAAC,EAAEx4N,EAAEob,UAAU0Q,QAAQ,WAAW,OAAO9Q,KAAKsxF,MAAM,EAAEtsG,EAAEob,UAAU22Z,KAAK,WAAW,GAAG,OAAO/2Z,KAAK2ywB,gBAAgB,MAAM,IAAIprwB,MAAM,8BAA8B,OAAOvH,KAAK2ywB,gBAAgBpsxB,CAAC,EAAEvB,EAAEob,UAAU66wB,mBAAmB,WAAW,GAAG,IAAI9mxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAK2ywB,gBAAgBjqkB,UAAU9nM,EAAE+xwB,gBAAgB,CAAC,GAAG,IAAIx+wB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG,OAAOA,UAAU,GAAGurC,QAAQ1/B,KAAKw0wB,aAAaxvxB,EAAEwvxB,aAAa,CAAC,EAAExvxB,EAAEob,UAAUU,MAAM,WAAW,GAAG4Z,EAAEvmB,UAAU,GAAGw7J,IAAI,CAAC,IAAI/uJ,EAAEzM,UAAU,GAAG,GAAG6L,KAAKw9M,UAAU,OAAO,KAAK58M,EAAE3P,OAAO+O,KAAK2ywB,gBAAgB,MAAM,GAAGj4vB,EAAEvmB,UAAU,GAAG2vY,IAAI,CAAC,IAAI9+Y,EAAEmP,UAAU,GAAG,GAAG6L,KAAKw9M,UAAU,OAAO,KAAKx4N,EAAEiM,OAAO+O,KAAKw0wB,aAAa,GAAGxvxB,EAAE65xB,qBAAqB7+wB,KAAK46wB,iBAAiB,MAASlgwB,EAAEvmB,UAAU,GAAGinW,KAAuC1gV,EAAEvmB,UAAU,GAAG22W,MAAjD32W,UAAU,GAAGlD,OAAO+O,KAA4D,EAAEhb,EAAEob,UAAU8+wB,YAAY,WAAW,OAAOl/wB,KAAKu6wB,aAAa9E,yBAAyB,KAAK,EAAEzwxB,EAAEob,UAAU6kB,MAAM,WAAW,IAAIjgC,EAAE4b,EAAER,UAAU6kB,MAAM5kB,KAAKL,MAAM,OAAOhb,EAAEwvxB,aAAax0wB,KAAKw0wB,aAAavvvB,QAAQjgC,CAAC,EAAEA,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,OAAO,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,OAAO,IAAItsG,EAAEgb,KAAKw0wB,aAAaljrB,OAAOtxF,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAUsgxB,sBAAsB,WAAW,OAAO1gxB,KAAKw0wB,YAAY,EAAExvxB,EAAEob,UAAU42Z,KAAK,WAAW,GAAG,OAAOh3Z,KAAK2ywB,gBAAgB,MAAM,IAAIprwB,MAAM,8BAA8B,OAAOvH,KAAK2ywB,gBAAgBhvxB,CAAC,EAAEqB,EAAEob,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAKw0wB,aAAazhwB,MAAM,EAAE/tB,EAAEob,UAAUgsD,KAAK,SAASxrD,GAAG,OAAOA,IAAIA,EAAEZ,KAAKu6wB,aAAaoG,+BAA+BjgxB,OAAO,KAAK4hY,GAAG2lO,OAAOrnmB,EAAEmS,QAAQ,GAAG/S,KAAKw0wB,aAAa5zwB,CAAC,EAAE5b,EAAEob,UAAUogxB,SAAS,WAAW,OAAM,CAAE,EAAEx7xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC3qY,GAAG,EAAEt/Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAA16F,CAA46FgkJ,IAAIq7P,GAAG,WAAW,EAAEA,GAAGjkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5qY,GAAGjkY,UAAUwtG,SAAS,WAAW,OAAOy2R,EAAE,EAAE,IAAIG,GAAG,SAAS5jY,GAAG,SAAS5b,EAAEA,EAAE6b,EAAExb,GAAG,GAAGub,EAAEP,KAAKL,KAAK3a,GAAG2a,KAAK80wB,OAAO,KAAK90wB,KAAK+0wB,OAAO,KAAK,OAAO/vxB,IAAIA,EAAEgb,KAAKu6wB,aAAalF,oBAAoB,OAAOx0wB,IAAIA,EAAE,IAAID,EAAEi7wB,gBAAgBh7wB,GAAG,MAAM,IAAI1d,EAAE,wCAAwC,GAAG6B,EAAEw4N,WAAW58M,EAAEg7wB,oBAAoB/6wB,GAAG,MAAM,IAAI1d,EAAE,oCAAoC6c,KAAK80wB,OAAO9vxB,EAAEgb,KAAK+0wB,OAAOl0wB,CAAC,CAACD,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUm7wB,wBAAwB,WAAW,OAAOv7wB,KAAK80wB,OAAOsG,qBAAqB,EAAEp2xB,EAAEob,UAAUk6wB,aAAa,WAAW,OAAO15wB,EAAEs5wB,iBAAiB,EAAEl1xB,EAAEob,UAAU0+wB,eAAe,WAAW,GAAG9+wB,KAAKw9M,UAAU,MAAM,GAAG,IAAI,IAAI58M,EAAE,IAAItM,MAAM0L,KAAK++wB,gBAAgBtwvB,KAAK,MAAMzpC,GAAG,EAAE6b,EAAEb,KAAK80wB,OAAOgK,iBAAiBz5xB,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO/O,IAAIub,IAAI5b,GAAG6b,EAAExb,GAAG,IAAI,IAAI00B,EAAE,EAAEA,EAAE/Z,KAAK+0wB,OAAO3gxB,OAAO2lB,IAAI,IAAI,IAAI4pD,EAAE3jE,KAAK+0wB,OAAOh7vB,GAAG+kwB,iBAAiB77xB,EAAE,EAAEA,EAAE0gF,EAAEvvE,OAAOnR,IAAI2d,IAAI5b,GAAG2+E,EAAE1gF,GAAG,OAAO2d,CAAC,EAAE5b,EAAEob,UAAUgzwB,QAAQ,WAAW,IAAIxywB,EAAE,EAAEA,GAAGpb,KAAKM,IAAI4qY,GAAGsoZ,WAAWh5wB,KAAK80wB,OAAO4L,0BAA0B,IAAI,IAAI17xB,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAI4b,GAAGpb,KAAKM,IAAI4qY,GAAGsoZ,WAAWh5wB,KAAK+0wB,OAAO/vxB,GAAG07xB,0BAA0B,OAAO9/wB,CAAC,EAAE5b,EAAEob,UAAUq6wB,YAAY,WAAW,GAAG,IAAIz6wB,KAAK6gxB,qBAAqB,OAAM,EAAG,GAAG,OAAO7gxB,KAAK80wB,OAAO,OAAM,EAAG,GAAG,IAAI90wB,KAAK80wB,OAAOiK,eAAe,OAAM,EAAG,IAAI,IAAIn+wB,EAAEZ,KAAK80wB,OAAO4L,wBAAwB17xB,EAAEgb,KAAKo7wB,sBAAsBv6wB,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIxb,EAAEub,EAAEm2Z,KAAKl2Z,GAAG,GAAGxb,IAAIL,EAAEuuxB,WAAWluxB,IAAIL,EAAEquxB,UAAU,OAAM,EAAG,IAAIt5vB,EAAEnZ,EAAEo2Z,KAAKn2Z,GAAG,GAAGkZ,IAAI/0B,EAAEwuxB,WAAWz5vB,IAAI/0B,EAAEsuxB,UAAU,OAAM,CAAE,CAAC,IAAI,IAAI3vsB,EAAE/iE,EAAEm2Z,KAAK,GAAG9za,EAAE2d,EAAEo2Z,KAAK,GAAGp9Z,EAAE,EAAEA,GAAG,EAAEA,IAAI,CAAC,IAAI8pF,EAAE9iF,EAAEm2Z,KAAKn9Z,GAAG4e,EAAE5X,EAAEo2Z,KAAKp9Z,GAAG,GAAG8pF,IAAI/f,IAAKnrD,IAAIv1B,GAAG,OAAM,EAAG0gF,EAAE+f,EAAEzgG,EAAEu1B,CAAC,CAAC,OAAM,CAAE,EAAExzB,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,IAAI6L,KAAKg/wB,kBAAkBh6xB,GAAG,OAAM,EAAG,IAAIK,EAAEL,EAAE+0B,EAAE/Z,KAAK80wB,OAAOnxsB,EAAEt+E,EAAEyvxB,OAAO,IAAI/6vB,EAAE4gwB,YAAYh3sB,EAAE9iE,GAAG,OAAM,EAAG,GAAGb,KAAK+0wB,OAAO3gxB,SAAS/O,EAAE0vxB,OAAO3gxB,OAAO,OAAM,EAAG,IAAI,IAAInR,EAAE,EAAEA,EAAE+c,KAAK+0wB,OAAO3gxB,OAAOnR,IAAI,IAAI+c,KAAK+0wB,OAAO9xxB,GAAG03xB,YAAYt1xB,EAAE0vxB,OAAO9xxB,GAAG4d,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAUu/B,UAAU,WAAW,GAAG,IAAIxrC,UAAUC,OAAO,CAAC4L,KAAK2/B,UAAU3/B,KAAK80wB,QAAO,GAAI,IAAI,IAAIl0wB,EAAE,EAAEA,EAAEZ,KAAK+0wB,OAAO3gxB,OAAOwM,IAAIZ,KAAK2/B,UAAU3/B,KAAK+0wB,OAAOn0wB,IAAG,GAAIgjY,GAAGxwY,KAAK4M,KAAK+0wB,OAAO,MAAM,GAAG,IAAI5gxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAGnP,EAAEw4N,UAAU,OAAO,KAAK,IAAIn4N,EAAE,IAAIiP,MAAMtP,EAAE85xB,iBAAiB1qxB,OAAO,GAAGq6B,KAAK,MAAMpU,EAAE04vB,UAAU/txB,EAAE85xB,iBAAiB,EAAEz5xB,EAAE,EAAEA,EAAE+O,QAAQ,IAAI2lB,EAAE0pX,GAAG+5Y,cAAcx4xB,EAAE85xB,kBAAkBr7Y,GAAG7wY,OAAOvN,EAAE00B,GAAGM,EAAE04vB,UAAU1txB,EAAE,EAAEL,EAAE85xB,iBAAiB,EAAEz5xB,EAAE+O,QAAQpP,EAAE85xB,iBAAiBz5xB,EAAE+O,QAAQ/O,EAAE,GAAGqrY,GAAG0oZ,MAAMp0xB,EAAE85xB,oBAAoBj+wB,GAAG4iY,GAAG3yX,QAAQ9rB,EAAE85xB,iBAAiB,CAAC,EAAE95xB,EAAEob,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAK80wB,OAAOnC,eAAe,EAAE3txB,EAAEob,UAAUygxB,mBAAmB,WAAW,OAAO7gxB,KAAK+0wB,OAAO3gxB,MAAM,EAAEpP,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAO,CAAC,EAAEj6xB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU26wB,UAAU,WAAW,IAAIn6wB,EAAE,EAAEA,GAAGZ,KAAK80wB,OAAOiG,YAAY,IAAI,IAAI/1xB,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAI4b,GAAGZ,KAAK+0wB,OAAO/vxB,GAAG+1xB,YAAY,OAAOn6wB,CAAC,EAAE5b,EAAEob,UAAU2+wB,aAAa,WAAW,IAAI,IAAIn+wB,EAAEZ,KAAK80wB,OAAOiK,eAAe/5xB,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAI4b,GAAGZ,KAAK+0wB,OAAO/vxB,GAAG+5xB,eAAe,OAAOn+wB,CAAC,EAAE5b,EAAEob,UAAU0Q,QAAQ,WAAW,IAAIlQ,EAAEZ,KAAKsxF,OAAO1wF,EAAEk0wB,OAAO90wB,KAAK80wB,OAAOxjrB,OAAOxgF,UAAUlQ,EAAEm0wB,OAAO,IAAIzgxB,MAAM0L,KAAK+0wB,OAAO3gxB,QAAQq6B,KAAK,MAAM,IAAI,IAAIzpC,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAI4b,EAAEm0wB,OAAO/vxB,GAAGgb,KAAK+0wB,OAAO/vxB,GAAGssG,OAAOxgF,UAAU,OAAOlQ,CAAC,EAAE5b,EAAEob,UAAU0gxB,WAAW,WAAW,OAAO9gxB,KAAK+gxB,kBAAkBD,YAAY,EAAE97xB,EAAEob,UAAU66wB,mBAAmB,WAAW,GAAG,IAAI9mxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEgb,KAAK80wB,OAAOj0wB,EAAED,EAAEk0wB,OAAO,OAAO9vxB,EAAEi2xB,mBAAmBp6wB,EAAE,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAmB2lB,EAAE5lB,UAAU,GAAGwvE,EAA5BxvE,UAAU,GAAsBlR,EAAE+c,KAAK80wB,OAAOl7wB,EAAE+pE,EAAEmxsB,OAAOpxrB,EAAEzgG,EAAEg4xB,mBAAmBrhxB,EAAEmgB,GAAG,GAAG,IAAI2pE,EAAE,OAAOA,EAAE,IAAI,IAAIlrE,EAAExY,KAAK6gxB,qBAAqBj7xB,EAAE+9E,EAAEk9sB,qBAAqB1gxB,EAAE,EAAEA,EAAEqY,GAAGrY,EAAEva,GAAG,CAAC,IAAIvC,EAAE2c,KAAKghxB,iBAAiB7gxB,GAAGuB,EAAEiiE,EAAEq9sB,iBAAiB7gxB,GAAGwB,EAAEte,EAAE43xB,mBAAmBv5wB,EAAEqY,GAAG,GAAG,IAAIpY,EAAE,OAAOA,EAAExB,GAAG,CAAC,OAAOA,EAAEqY,EAAE,EAAErY,EAAEva,GAAG,EAAE,CAAC,CAAC,EAAEZ,EAAEob,UAAUU,MAAM,SAASF,GAAG,GAAG8Z,EAAE9Z,EAAE+uJ,IAAI,CAAC3vJ,KAAK80wB,OAAOh0wB,MAAMF,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAIgb,KAAK+0wB,OAAO/vxB,GAAG8b,MAAMF,EAAE,MAAM,GAAG8Z,EAAE9Z,EAAEkjY,IAAI,CAAC,GAAG9jY,KAAK80wB,OAAOh0wB,MAAMF,IAAIA,EAAE8/vB,SAAS,IAAI,IAAI7/vB,EAAE,EAAEA,EAAEb,KAAK+0wB,OAAO3gxB,SAAS4L,KAAK+0wB,OAAOl0wB,GAAGC,MAAMF,IAAIA,EAAE8/vB,UAAU7/vB,KAAKD,EAAEi+wB,qBAAqB7+wB,KAAK46wB,iBAAiB,MAAM,GAAGlgwB,EAAE9Z,EAAEw6V,IAAIx6V,EAAE3P,OAAO+O,WAAW,GAAG0a,EAAE9Z,EAAEkqW,IAAI,CAAClqW,EAAE3P,OAAO+O,MAAMA,KAAK80wB,OAAOh0wB,MAAMF,GAAG,IAAI,IAAIvb,EAAE,EAAEA,EAAE2a,KAAK+0wB,OAAO3gxB,OAAO/O,IAAI2a,KAAK+0wB,OAAO1vxB,GAAGyb,MAAMF,EAAE,CAAC,EAAE5b,EAAEob,UAAU8+wB,YAAY,WAAW,GAAGl/wB,KAAKw9M,UAAU,OAAOx9M,KAAKu6wB,aAAajF,wBAAwB,IAAI10wB,EAAE,IAAItM,MAAM0L,KAAK+0wB,OAAO3gxB,OAAO,GAAGq6B,KAAK,MAAM7tB,EAAE,GAAGZ,KAAK80wB,OAAO,IAAI,IAAI9vxB,EAAE,EAAEA,EAAEgb,KAAK+0wB,OAAO3gxB,OAAOpP,IAAI4b,EAAE5b,EAAE,GAAGgb,KAAK+0wB,OAAO/vxB,GAAG,OAAO4b,EAAExM,QAAQ,EAAE4L,KAAKu6wB,aAAalF,iBAAiBz0wB,EAAE,GAAG8/wB,yBAAyB1gxB,KAAKu6wB,aAAajF,sBAAsB10wB,EAAE,EAAE5b,EAAEob,UAAU6kB,MAAM,WAAW,IAAIjgC,EAAE4b,EAAER,UAAU6kB,MAAM5kB,KAAKL,MAAMhb,EAAE8vxB,OAAO90wB,KAAK80wB,OAAO7vvB,QAAQjgC,EAAE+vxB,OAAO,IAAIzgxB,MAAM0L,KAAK+0wB,OAAO3gxB,QAAQq6B,KAAK,MAAM,IAAI,IAAI5tB,EAAE,EAAEA,EAAEb,KAAK+0wB,OAAO3gxB,OAAOyM,IAAI7b,EAAE+vxB,OAAOl0wB,GAAGb,KAAK+0wB,OAAOl0wB,GAAGokB,QAAQ,OAAOjgC,CAAC,EAAEA,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,SAAS,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAEZ,KAAK80wB,OAAOxjrB,OAAOzwF,EAAE,IAAIvM,MAAM0L,KAAK+0wB,OAAO3gxB,QAAQq6B,KAAK,MAAMppC,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO/O,IAAIwb,EAAExb,GAAG2a,KAAK+0wB,OAAO1vxB,GAAGisG,OAAO,OAAO,IAAItsG,EAAE4b,EAAEC,EAAEb,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAU2gxB,gBAAgB,WAAW,OAAO/gxB,KAAK80wB,MAAM,EAAE9vxB,EAAEob,UAAUo9M,QAAQ,WAAW,OAAOx9M,KAAK80wB,OAAOt3jB,SAAS,EAAEx4N,EAAEob,UAAU4gxB,iBAAiB,SAASpgxB,GAAG,OAAOZ,KAAK+0wB,OAAOn0wB,EAAE,EAAE5b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC5qY,GAAG,EAAEr/Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAA96K,CAAg7KgkJ,IAAI/+C,GAAG,SAASrpF,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAACyM,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUk6wB,aAAa,WAAW,OAAOtxoB,GAAG8woB,oBAAoB,EAAE90xB,EAAEob,UAAU0oM,QAAQ,WAAW,OAAM,CAAE,EAAE9jN,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,QAAQ6L,KAAKg/wB,kBAAkBh6xB,IAAI4b,EAAER,UAAUu6wB,YAAYt6wB,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAUuywB,cAAc,WAAW,GAAG,IAAIx+wB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK00wB,YAAY1vxB,GAAG2txB,eAAe,CAAC,OAAO/xwB,EAAER,UAAUuywB,cAAc7xwB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAO/6Y,GAAG2mU,KAAK,EAAE7ltB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU8+wB,YAAY,WAAW,OAAOl/wB,KAAKu6wB,aAAa9E,yBAAyB,KAAK,EAAEzwxB,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,YAAY,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAE,IAAItM,MAAM0L,KAAK00wB,YAAYtgxB,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAID,EAAEC,GAAGb,KAAK00wB,YAAY7zwB,GAAGywF,OAAO,OAAO,IAAItsG,EAAE4b,EAAEZ,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC3qY,GAAG,EAAEt/Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAA3wC,CAA6wC0+Y,IAAI15S,GAAG,SAASppF,GAAG,SAAS5b,EAAEA,EAAE6b,GAAG7b,aAAag0B,GAAGnY,aAAaqqG,KAAKlmH,EAAE6b,EAAE8/wB,+BAA+BjgxB,OAAO1b,IAAI4b,EAAEP,KAAKL,KAAKhb,EAAE6b,GAAGb,KAAKihxB,sBAAsB,CAACrgxB,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAACqgxB,mBAAmB,CAACjqvB,cAAa,GAAIu4uB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUk6wB,aAAa,WAAW,OAAOtxoB,GAAGgxoB,oBAAoB,EAAEh1xB,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAO/6Y,GAAG2mU,KAAK,EAAE7ltB,EAAEob,UAAU2yoB,SAAS,WAAW,QAAQ/yoB,KAAKw9M,WAAW58M,EAAER,UAAU2yoB,SAAS1yoB,KAAKL,KAAK,EAAEhb,EAAEob,UAAU0Q,QAAQ,WAAW,IAAIlQ,EAAEZ,KAAKqnE,QAAQiqB,OAAqB,OAAd2yS,GAAGnzX,QAAQlQ,GAAUZ,KAAKu6wB,aAAalF,iBAAiBz0wB,EAAE,EAAE5b,EAAEob,UAAU6gxB,qBAAqB,WAAW,IAAIjhxB,KAAKw9M,YAAY58M,EAAER,UAAU2yoB,SAAS1yoB,KAAKL,MAAM,MAAM,IAAI7c,EAAE,wDAAwD,GAAG6c,KAAK0gxB,wBAAwB3twB,QAAQ,GAAG/S,KAAK0gxB,wBAAwB3twB,OAAO/tB,EAAEk8xB,mBAAmB,MAAM,IAAI/9xB,EAAE,iDAAiD6c,KAAK0gxB,wBAAwB3twB,OAAO,wBAAwB,EAAE/tB,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,YAAY,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,OAAO,IAAItsG,EAAEgb,KAAKqnE,QAAQiqB,OAAOtxF,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAEqgxB,mBAAmBrtxB,IAAI,WAAW,OAAO,CAAC,EAAEgN,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAx3C,CAA03Ck+Y,IAAI3wD,GAAG,SAAS3xU,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAACyM,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAAC2uwB,iBAAiB,CAACv4uB,cAAa,IAAK,OAAOjyC,EAAEob,UAAUk6wB,aAAa,WAAW,OAAOtxoB,GAAGmxoB,sBAAsB,EAAEn1xB,EAAEob,UAAUu6wB,YAAY,WAAW,GAAG,IAAIxmxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,QAAQ6L,KAAKg/wB,kBAAkBh6xB,IAAI4b,EAAER,UAAUu6wB,YAAYt6wB,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,EAAER,UAAUu6wB,YAAY75wB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAU6+wB,qBAAqB,WAAW,OAAO,CAAC,EAAEj6xB,EAAEob,UAAUgprB,aAAa,WAAW,OAAO,CAAC,EAAEpksB,EAAEob,UAAU0Q,QAAQ,WAAW,IAAI,IAAIlQ,EAAEZ,KAAK00wB,YAAYtgxB,OAAOpP,EAAE,IAAIsP,MAAMsM,GAAG6tB,KAAK,MAAM5tB,EAAE,EAAEA,EAAEb,KAAK00wB,YAAYtgxB,OAAOyM,IAAI7b,EAAE6b,GAAGb,KAAK00wB,YAAY7zwB,GAAGiQ,UAAU,OAAO9Q,KAAKu6wB,aAAa/E,mBAAmBxwxB,EAAE,EAAEA,EAAEob,UAAU8+wB,YAAY,WAAW,GAAGl/wB,KAAKw9M,UAAU,OAAOx9M,KAAKu6wB,aAAajF,wBAAwB,IAAI,IAAI10wB,EAAE,IAAIijY,GAAG7+Y,EAAE,EAAEA,EAAEgb,KAAK00wB,YAAYtgxB,OAAOpP,IAAI,IAAI,IAAI6b,EAAEb,KAAK00wB,YAAY1vxB,GAAGk6xB,cAAc75xB,EAAE,EAAEA,EAAEwb,EAAEm6wB,mBAAmB31xB,IAAIub,EAAEtN,IAAIuN,EAAE25wB,aAAan1xB,IAAI,IAAI00B,EAAE,IAAIzlB,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAOzuB,KAAKu6wB,aAAajF,sBAAsB10wB,EAAEkjN,QAAQ/pM,GAAG,EAAE/0B,EAAEob,UAAUm0wB,gBAAgB,WAAW,MAAM,cAAc,EAAEvvxB,EAAEob,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAE,IAAItM,MAAM0L,KAAK00wB,YAAYtgxB,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAID,EAAEC,GAAGb,KAAK00wB,YAAY7zwB,GAAGywF,OAAO,OAAO,IAAItsG,EAAE4b,EAAEZ,KAAKy5wB,SAAS,EAAEz0xB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,CAAC5qY,GAAG,EAAEr/Y,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAE2uwB,iBAAiB37wB,IAAI,WAAW,OAAO,iBAAiB,EAAE/J,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAA9/C,CAAggD0+Y,IAAIz4B,GAAG,SAASrqW,GAAGZ,KAAKy5wB,SAAS74wB,GAAG,KAAKZ,KAAKmhxB,mBAAkB,CAAE,EAAE/qoB,GAAG,CAACgroB,sBAAsB,CAACnqvB,cAAa,GAAIoqvB,oBAAoB,CAACpqvB,cAAa,GAAIqqvB,4BAA4B,CAACrqvB,cAAa,IAAKg0U,GAAG7qW,UAAUmhxB,gBAAgB,SAAS3gxB,GAAGZ,KAAKmhxB,kBAAkBvgxB,CAAC,EAAEqqW,GAAG7qW,UAAU84W,KAAK,SAASt4W,EAAE5b,GAAG,GAAG,OAAO4b,EAAE,OAAO,KAAK,IAAIC,EAAEb,KAAKwhxB,aAAa5gxB,EAAE5b,GAAG,OAAOgb,KAAKmhxB,mBAAmBtgxB,EAAE46wB,YAAY76wB,EAAEs6wB,eAAer6wB,CAAC,EAAEoqW,GAAG7qW,UAAUohxB,aAAa,SAAS5gxB,EAAE5b,GAAG,OAAO,OAAOgb,KAAKy5wB,WAAWz5wB,KAAKy5wB,SAAS74wB,EAAE25wB,cAAc35wB,aAAa8iY,GAAG1jY,KAAKyhxB,uBAAuB7gxB,EAAE5b,GAAG4b,aAAa4jY,GAAGxkY,KAAK0hxB,YAAY9gxB,EAAE5b,GAAG4b,aAAa2jY,IAA2B3jY,aAAasiY,GAArCl+Y,EAAEk0X,KAAKt4W,EAAEZ,KAAKy5wB,WAAmDn3Y,GAAGozY,qBAAqB,+BAA+B90wB,EAAEgtG,WAAWgoT,WAAW,KAAK,EAAE3qD,GAAG7qW,UAAUqhxB,uBAAuB,SAAS7gxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEk0X,KAAKt4W,EAAEZ,KAAKy5wB,UAAUp0xB,EAAE,IAAIw+Y,GAAG9pX,EAAE,EAAEA,EAAElZ,EAAEm6wB,mBAAmBjhwB,IAAI,CAAC,IAAI4pD,EAAE3jE,KAAKk5W,KAAKr4W,EAAE25wB,aAAazgwB,GAAG/0B,GAAG,OAAO2+E,GAAGA,EAAE65I,WAAWn4N,EAAEiO,IAAIqwE,EAAE,CAAC,OAAO9iE,EAAE+sG,aAAa3jB,GAAGjqF,KAAKy5wB,SAAStE,iBAAiB9vxB,EAAEy+N,QAAQ,KAAKjjN,EAAE+sG,aAAau2R,GAAGnkY,KAAKy5wB,SAASnE,sBAAsBjwxB,EAAEy+N,QAAQ,KAAKjjN,EAAE+sG,aAAa2kO,GAAGvyU,KAAKy5wB,SAASjE,mBAAmBnwxB,EAAEy+N,QAAQ,KAAK9jN,KAAKy5wB,SAAShE,yBAAyBpwxB,EAAEy+N,QAAQ,IAAI,EAAEmnJ,GAAG7qW,UAAUshxB,YAAY,SAAS9gxB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAEk0X,KAAKt4W,EAAEZ,KAAKy5wB,UAAU,GAAG,OAAO54wB,IAAIA,EAAEb,KAAKy5wB,SAASlE,cAAc,OAAO10wB,EAAE28M,UAAU,OAAO38M,EAAE,IAAIxb,EAAE2a,KAAKk5W,KAAKr4W,EAAEkgxB,kBAAkB/7xB,GAAG,GAAG,OAAOK,GAAGA,EAAEm4N,UAAU,OAAOx9M,KAAKy5wB,SAASlE,gBAAgB,IAAI,IAAIx7vB,EAAE,IAAI8pX,GAAGlgU,EAAE,EAAEA,EAAE9iE,EAAEggxB,qBAAqBl9sB,IAAI,CAAC,IAAI1gF,EAAE+c,KAAKk5W,KAAKr4W,EAAEmgxB,iBAAiBr9sB,GAAG3+E,GAAG,OAAO/B,GAAGA,EAAEu6N,WAAWzjM,EAAEzmB,IAAIrQ,EAAE,CAAC,OAAO+c,KAAKy5wB,SAASlE,cAAclwxB,EAAE00B,EAAE+pM,QAAQ,IAAI,EAAEmnJ,GAAG7qW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEhka,GAAG7qW,UAAUwtG,SAAS,WAAW,OAAOq9P,EAAE,EAAEA,GAAG02a,wBAAwB,WAAW,EAAEvroB,GAAGgroB,sBAAsBvtxB,IAAI,WAAW,OAAO48F,EAAE,EAAE2lD,GAAGiroB,oBAAoBxtxB,IAAI,WAAW,OAAOw+U,EAAE,EAAEj8L,GAAGkroB,4BAA4BztxB,IAAI,WAAW,OAAOm3W,EAAE,EAAElhX,OAAO0hC,iBAAiBy/U,GAAG70N,IAAI,IAAI3lD,GAAG,WAAW,EAAEA,GAAGrwF,UAAU84W,KAAK,SAASt4W,EAAE5b,GAAG,OAAO4b,CAAC,EAAE6vF,GAAGrwF,UAAU6uwB,YAAY,WAAW,MAAM,CAAChka,GAAG02a,wBAAwB,EAAElxrB,GAAGrwF,UAAUwtG,SAAS,WAAW,OAAOnd,EAAE,EAAE,IAAI4hP,GAAG,WAAW,EAAEA,GAAGjyU,UAAU84W,KAAK,SAASt4W,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK4hxB,gBAAgBhhxB,EAAEk+wB,iBAAiBl+wB,GAAG,OAAO,OAAOC,EAAED,EAAEA,aAAaopF,GAAGhlG,EAAEqwxB,iBAAiBx0wB,GAAGD,aAAasiY,GAAGl+Y,EAAEowxB,iBAAiBv0wB,GAAGD,aAAa2jY,GAAG1jY,EAAEzM,OAAO,EAAEpP,EAAEkwxB,YAAYr0wB,EAAE,IAAI7b,EAAEkwxB,cAAct0wB,CAAC,EAAEyxU,GAAGjyU,UAAU6uwB,YAAY,WAAW,MAAM,CAAChka,GAAG02a,wBAAwB,EAAEtvc,GAAGjyU,UAAUwtG,SAAS,WAAW,OAAOykO,EAAE,EAAE,IAAI24B,GAAG,WAAW,EAAEA,GAAG5qW,UAAU84W,KAAK,SAASt4W,EAAE5b,GAAG,OAAO4b,aAAaopF,GAAGhlG,EAAEqwxB,iBAAiBr1wB,KAAKk5W,KAAKt4W,EAAE8/wB,wBAAwB9/wB,IAAIA,aAAasiY,GAAGl+Y,EAAEowxB,iBAAiBp1wB,KAAKk5W,KAAKt4W,EAAE8/wB,wBAAwB9/wB,IAAIA,aAAa2jY,GAAGv/Y,EAAEkwxB,YAAYl1wB,KAAKk5W,KAAKt4W,EAAE8/wB,wBAAwB9/wB,IAAIA,CAAC,EAAEoqW,GAAG5qW,UAAU6uwB,YAAY,WAAW,MAAM,CAAChka,GAAG02a,wBAAwB,EAAE32a,GAAG5qW,UAAUwtG,SAAS,WAAW,OAAOo9P,EAAE,EAAE,IAAIE,GAAG,WAAW,GAAGlrW,KAAKosrB,WAAW,EAAEpsrB,KAAKw0wB,aAAa,KAAK,IAAIrgxB,UAAUC,QAAQ,GAAGD,UAAU,aAAaG,MAAM0L,KAAKw0wB,aAAargxB,UAAU,GAAG6L,KAAKosrB,WAAW,OAAO,GAAGj8qB,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAIyM,EAAEzM,UAAU,GAAG6L,KAAKw0wB,aAAa,IAAIlgxB,MAAMsM,GAAG6tB,KAAK,MAAM,IAAI,IAAIzpC,EAAE,EAAEA,EAAE4b,EAAE5b,IAAIgb,KAAKw0wB,aAAaxvxB,GAAG,IAAIg0B,CAAC,MAAM,GAAG0B,EAAEvmB,UAAU,GAAGqmB,GAAG,CAAC,IAAI3Z,EAAE1M,UAAU,GAAG,GAAG,OAAO0M,EAAE,OAAOb,KAAKw0wB,aAAa,IAAIlgxB,MAAM,GAAGm6B,KAAK,MAAM,KAAKzuB,KAAKosrB,WAAWvrrB,EAAEuorB,eAAepprB,KAAKw0wB,aAAa,IAAIlgxB,MAAMuM,EAAEkS,QAAQ0b,KAAK,MAAM,IAAI,IAAIppC,EAAE,EAAEA,EAAE2a,KAAKw0wB,aAAapgxB,OAAO/O,IAAI2a,KAAKw0wB,aAAanvxB,GAAGwb,EAAE+xwB,kBAAkBvtxB,EAAE,OAAO,GAAG,IAAI8O,UAAUC,OAAO,GAAGD,UAAU,aAAaG,OAAO6b,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAI4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKw0wB,aAAaz6vB,EAAE/Z,KAAKosrB,WAAWzonB,EAAE,OAAO5pD,IAAI/Z,KAAKw0wB,aAAa,IAAIlgxB,MAAM,GAAGm6B,KAAK,MAAM,MAAM,GAAGte,OAAO+0F,UAAU/wG,UAAU,KAAKgc,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAIlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKw0wB,aAAa,IAAIlgxB,MAAMrR,GAAGwrC,KAAK,MAAMzuB,KAAKosrB,WAAWxyrB,EAAE,IAAI,IAAI8pF,EAAE,EAAEA,EAAEzgG,EAAEygG,IAAI1jF,KAAKw0wB,aAAa9wrB,GAAG,IAAI1qE,CAAC,CAAC,EAAEm2K,GAAG,CAACqglB,iBAAiB,CAACv4uB,cAAa,IAAKi0U,GAAG9qW,UAAUqvwB,YAAY,SAAS7uwB,EAAE5b,EAAE6b,GAAG,OAAO7b,GAAG,KAAKw1B,EAAEF,EAAEta,KAAKw0wB,aAAa5zwB,GAAGra,EAAEsa,EAAE,MAAM,KAAK2Z,EAAEH,EAAEra,KAAKw0wB,aAAa5zwB,GAAGjd,EAAEkd,EAAE,MAAM,KAAK2Z,EAAEJ,EAAEpa,KAAKw0wB,aAAa5zwB,GAAGkhD,EAAEjhD,EAAE,MAAM,QAAQ,MAAM,IAAI1d,EAAE,yBAAyB,EAAE+nX,GAAG9qW,UAAU2S,KAAK,WAAW,OAAO/S,KAAKw0wB,aAAapgxB,MAAM,EAAE82W,GAAG9qW,UAAUuvwB,YAAY,SAAS/uwB,EAAE5b,GAAG,OAAOA,GAAG,KAAKw1B,EAAEF,EAAE,OAAOta,KAAKw0wB,aAAa5zwB,GAAGra,EAAE,KAAKi0B,EAAEH,EAAE,OAAOra,KAAKw0wB,aAAa5zwB,GAAGjd,EAAE,KAAK62B,EAAEJ,EAAE,OAAOpa,KAAKw0wB,aAAa5zwB,GAAGkhD,EAAE,OAAO3/C,EAAE7c,GAAG,EAAE4lX,GAAG9qW,UAAUuywB,cAAc,WAAW,GAAG,IAAIx+wB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKw0wB,aAAa5zwB,EAAE,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG0M,EAAEta,EAAEyZ,KAAKw0wB,aAAaxvxB,GAAGuB,EAAEsa,EAAEld,EAAEqc,KAAKw0wB,aAAaxvxB,GAAGrB,EAAEkd,EAAEihD,EAAE9hD,KAAKw0wB,aAAaxvxB,GAAG88D,CAAC,CAAC,EAAEopT,GAAG9qW,UAAUwywB,kBAAkB,SAAShywB,GAAG,OAAO,IAAIoY,EAAEhZ,KAAKw0wB,aAAa5zwB,GAAG,EAAEsqW,GAAG9qW,UAAUgprB,aAAa,WAAW,OAAOpprB,KAAKosrB,UAAU,EAAElhV,GAAG9qW,UAAU22Z,KAAK,SAASn2Z,GAAG,OAAOZ,KAAKw0wB,aAAa5zwB,GAAGra,CAAC,EAAE2kX,GAAG9qW,UAAU6kB,MAAM,WAAW,IAAI,IAAIrkB,EAAE,IAAItM,MAAM0L,KAAK+S,QAAQ0b,KAAK,MAAMzpC,EAAE,EAAEA,EAAEgb,KAAKw0wB,aAAapgxB,OAAOpP,IAAI4b,EAAE5b,GAAGgb,KAAKw0wB,aAAaxvxB,GAAGigC,QAAQ,OAAO,IAAIimV,GAAGtqW,EAAEZ,KAAKosrB,WAAW,EAAElhV,GAAG9qW,UAAUyywB,eAAe,SAASjywB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKw0wB,aAAapgxB,OAAOpP,IAAI4b,EAAE8ywB,gBAAgB1zwB,KAAKw0wB,aAAaxvxB,IAAI,OAAO4b,CAAC,EAAEsqW,GAAG9qW,UAAUkxF,KAAK,WAAW,IAAI,IAAI1wF,EAAE,IAAItM,MAAM0L,KAAK+S,QAAQ0b,KAAK,MAAMzpC,EAAE,EAAEA,EAAEgb,KAAKw0wB,aAAapgxB,OAAOpP,IAAI4b,EAAE5b,GAAGgb,KAAKw0wB,aAAaxvxB,GAAGssG,OAAO,OAAO,IAAI45Q,GAAGtqW,EAAEZ,KAAKosrB,WAAW,EAAElhV,GAAG9qW,UAAUpZ,SAAS,WAAW,GAAGgZ,KAAKw0wB,aAAapgxB,OAAO,EAAE,CAAC,IAAIwM,EAAE,IAAIqY,EAAE,GAAGjZ,KAAKw0wB,aAAapgxB,QAAQwM,EAAE2vH,OAAO,KAAK3vH,EAAE2vH,OAAOvwH,KAAKw0wB,aAAa,IAAI,IAAI,IAAIxvxB,EAAE,EAAEA,EAAEgb,KAAKw0wB,aAAapgxB,OAAOpP,IAAI4b,EAAE2vH,OAAO,MAAM3vH,EAAE2vH,OAAOvwH,KAAKw0wB,aAAaxvxB,IAAI,OAAO4b,EAAE2vH,OAAO,KAAK3vH,EAAE5Z,UAAU,CAAC,MAAM,IAAI,EAAEkkX,GAAG9qW,UAAU42Z,KAAK,SAASp2Z,GAAG,OAAOZ,KAAKw0wB,aAAa5zwB,GAAGjd,CAAC,EAAEunX,GAAG9qW,UAAU0ywB,kBAAkB,WAAW,OAAO9ywB,KAAKw0wB,YAAY,EAAEtpa,GAAG9qW,UAAU6uwB,YAAY,WAAW,MAAM,CAACz0vB,EAAEx1B,EAAE,EAAEkmX,GAAG9qW,UAAUwtG,SAAS,WAAW,OAAOs9P,EAAE,EAAE/7K,GAAGqglB,iBAAiB37wB,IAAI,WAAW,OAAO,iBAAiB,EAAE/J,OAAO0hC,iBAAiB0/U,GAAG/7K,IAAI,IAAIlwC,GAAG,WAAW,EAAEmsN,GAAG,CAACoka,iBAAiB,CAACv4uB,cAAa,GAAI4qvB,eAAe,CAAC5qvB,cAAa,IAAKgoH,GAAG7+I,UAAU0hxB,YAAY,WAAW,OAAO7ioB,GAAG5pJ,UAAU,EAAE4pJ,GAAG7+I,UAAUM,OAAO,WAAW,GAAG,IAAIvM,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaG,MAA0B,OAAO,IAAI42W,GAAxB/2W,UAAU,IAAoB,GAAGumB,EAAEvmB,UAAU,GAAGqmB,GAAuB,OAAO,IAAI0wV,GAAxB/2W,UAAU,GAAoB,MAAM,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,OAAO9O,EAAE,IAAIA,EAAE,GAAGA,EAAE,EAAE,IAAI6lX,GAAGrqW,GAAG,IAAIqqW,GAAGrqW,EAAExb,EAAE,CAAC,EAAE45J,GAAG7+I,UAAU6uwB,YAAY,WAAW,MAAM,CAACp1wB,EAAE7U,EAAE,EAAEi6J,GAAG7+I,UAAUwtG,SAAS,WAAW,OAAOqxC,EAAE,EAAEA,GAAG5pJ,SAAS,WAAW,OAAO4pJ,GAAG4ioB,cAAc,EAAEz2a,GAAGoka,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAEu3W,GAAGy2a,eAAehuxB,IAAI,WAAW,OAAO,IAAIorJ,EAAE,EAAEn1J,OAAO0hC,iBAAiByzH,GAAGmsN,IAAI,IAAIE,GAAG,SAAS1qW,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK+oU,KAAK,IAAI/1U,GAAG,CAAC,OAAO4N,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUvM,IAAI,SAAS+M,GAAG,OAAOZ,KAAK+oU,KAAKl1U,IAAI+M,IAAI,IAAI,EAAE5b,EAAEob,UAAUk2H,IAAI,SAAS11H,EAAE5b,GAAG,OAAOgb,KAAK+oU,KAAKh1U,IAAI6M,EAAE5b,GAAGA,CAAC,EAAEA,EAAEob,UAAUwoB,OAAO,WAAW,IAAI,IAAIhoB,EAAE,IAAIijY,GAAG7+Y,EAAEgb,KAAK+oU,KAAKngT,SAAS/nB,EAAE7b,EAAE8C,QAAQ+Y,EAAEW,MAAMZ,EAAEtN,IAAIuN,EAAElb,OAAOkb,EAAE7b,EAAE8C,OAAO,OAAO8Y,CAAC,EAAE5b,EAAEob,UAAUu9wB,SAAS,WAAW,IAAI/8wB,EAAE,IAAIkiY,GAAG,OAAO9iY,KAAK+oU,KAAK7jR,UAAUlzD,QAAQ,SAAShN,GAAG,OAAO4b,EAAEtN,IAAItO,EAAE,GAAG4b,CAAC,EAAE5b,EAAEob,UAAU2S,KAAK,WAAW,OAAO/S,KAAK+oU,KAAKh2T,MAAM,EAAE/tB,CAAC,CAA/iB,CAAijB+9Y,IAAI53B,GAAG,SAASvqW,IAAI,GAAGZ,KAAK+hxB,WAAW,KAAK/hxB,KAAK08X,OAAO,KAAK,IAAIvoY,UAAUC,OAAO4L,KAAK+hxB,WAAWnhxB,EAAEohxB,cAAc,GAAG,IAAI7txB,UAAUC,OAAO,GAAGD,UAAU,aAAas4M,GAAG,CAAC,IAAIznN,EAAEmP,UAAU,GAAG6L,KAAK+hxB,WAAW/8xB,EAAEA,IAAI4b,EAAE6vP,OAAOzwP,KAAKiixB,SAAS,EAAE,MAAM,GAAG,iBAAiB9txB,UAAU,GAAG,CAAC,IAAI0M,EAAE1M,UAAU,GAAG6L,KAAK+hxB,WAAWnhxB,EAAE6vP,MAAMzwP,KAAKiixB,SAASphxB,EAAE,MAAM,GAAG1M,UAAU,aAAayM,EAAE,CAAC,IAAIvb,EAAE8O,UAAU,GAAG6L,KAAK+hxB,WAAW18xB,EAAE08xB,WAAW/hxB,KAAK08X,OAAOr3Y,EAAEq3Y,MAAM,CAAC,EAAEnxB,GAAG,CAACika,iBAAiB,CAACv4uB,cAAa,GAAIirvB,oBAAoB,CAACjrvB,cAAa,IAAKk0U,GAAG/qW,UAAU2nN,OAAO,SAASnnN,GAAG,KAAKA,aAAauqW,IAAI,OAAM,EAAG,IAAInmX,EAAE4b,EAAE,OAAOZ,KAAK+hxB,aAAa/8xB,EAAE+8xB,YAAY/hxB,KAAK08X,SAAS13Y,EAAE03Y,MAAM,EAAEvxB,GAAG/qW,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAEC,EAAEb,KAAKmixB,8BAA8B98xB,EAAEL,EAAEm9xB,8BAA8B,OAAO,IAAI1+xB,EAAEod,GAAG6nM,UAAU,IAAIjlN,EAAE4B,GAAG,EAAE8lX,GAAG/qW,UAAUi3D,SAAS,WAAW,OAAOr3D,KAAK08X,MAAM,EAAEvxB,GAAG/qW,UAAUgixB,WAAW,WAAW,OAAOpixB,KAAK+hxB,aAAa52a,GAAG62a,UAAUhixB,KAAK+hxB,aAAa52a,GAAGk3a,eAAe,EAAEl3a,GAAG/qW,UAAU64Z,QAAQ,WAAW,OAAOj5Z,KAAK+hxB,UAAU,EAAE52a,GAAG/qW,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAE,UAAU,OAAOZ,KAAK+hxB,aAAa52a,GAAG62a,SAASphxB,EAAE,WAAWZ,KAAK+hxB,aAAa52a,GAAGk3a,gBAAgBzhxB,EAAE,kBAAkBZ,KAAK+hxB,aAAa52a,GAAG16G,QAAQ7vP,EAAE,gBAAgBZ,KAAKq3D,WAAW,KAAKz2D,CAAC,EAAEuqW,GAAG/qW,UAAU43wB,YAAY,WAAW,GAAG,iBAAiB7jxB,UAAU,GAAG,CAAC,IAAIyM,EAAEzM,UAAU,GAAG,OAAGgO,EAAEpc,MAAM6a,IAAeZ,KAAK+hxB,aAAa52a,GAAGk3a,gBAA1BzhxB,EAA2DZ,KAAK+hxB,aAAa52a,GAAG16G,MAAMjrQ,KAAK+F,MAAMqV,EAAEZ,KAAK08X,QAAQ18X,KAAK08X,OAAO97X,CAAC,CAAC,GAAGzM,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG,GAAG6L,KAAK+hxB,aAAa52a,GAAG62a,SAAS,OAAO,KAAKh9xB,EAAEuB,EAAEyZ,KAAKg4wB,YAAYhzxB,EAAEuB,GAAGvB,EAAErB,EAAEqc,KAAKg4wB,YAAYhzxB,EAAErB,EAAE,CAAC,EAAEwnX,GAAG/qW,UAAU+hxB,4BAA4B,WAAW,IAAIvhxB,EAAE,GAAG,OAAOZ,KAAK+hxB,aAAa52a,GAAG62a,SAASphxB,EAAE,GAAGZ,KAAK+hxB,aAAa52a,GAAGk3a,gBAAgBzhxB,EAAE,EAAEZ,KAAK+hxB,aAAa52a,GAAG16G,QAAQ7vP,EAAE,EAAEpb,KAAKwpxB,MAAMxpxB,KAAKsjE,KAAKtjE,KAAKS,IAAI+Z,KAAKq3D,YAAY7xE,KAAKS,IAAI,OAAO2a,CAAC,EAAEuqW,GAAG/qW,UAAU6hxB,SAAS,SAASrhxB,GAAGZ,KAAK08X,OAAOl3Y,KAAKM,IAAI8a,EAAE,EAAEuqW,GAAG/qW,UAAU6uwB,YAAY,WAAW,MAAM,CAACjqxB,EAAEk0B,EAAE,EAAEiyV,GAAG/qW,UAAUwtG,SAAS,WAAW,OAAOu9P,EAAE,EAAEA,GAAGm3a,YAAY,SAAS1hxB,EAAE5b,GAAG,OAAO4b,EAAE8nM,UAAU1jN,IAAI,EAAE4b,EAAE5b,CAAC,EAAEumX,GAAGika,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE03W,GAAG22a,oBAAoBruxB,IAAI,WAAW,OAAO,gBAAgB,EAAE/J,OAAO0hC,iBAAiB2/U,GAAGI,IAAI,IAAI9+J,GAAG,SAAS7rM,EAAE5b,GAAGgb,KAAKm1Y,MAAMnwZ,GAAG,KAAK4b,EAAE2hxB,cAAcjspB,IAAItxI,EAAEgb,KAAK,EAAEqrW,GAAG,CAACmka,iBAAiB,CAACv4uB,cAAa,GAAIsrvB,cAAc,CAACtrvB,cAAa,IAAKw1K,GAAGrsM,UAAU0hxB,YAAY,WAAW,OAAOr1kB,GAAG81kB,cAAc1uxB,IAAImM,KAAKm1Y,MAAM,EAAE1oM,GAAGrsM,UAAUpZ,SAAS,WAAW,OAAOgZ,KAAKm1Y,KAAK,EAAE1oM,GAAGrsM,UAAU6uwB,YAAY,WAAW,MAAM,CAACjqxB,EAAE,EAAEynN,GAAGrsM,UAAUwtG,SAAS,WAAW,OAAO6+F,EAAE,EAAE4+J,GAAGmka,iBAAiB37wB,IAAI,WAAW,OAAO,iBAAiB,EAAEw3W,GAAGk3a,cAAc1uxB,IAAI,WAAW,OAAO,IAAIy3W,EAAE,EAAExhX,OAAO0hC,iBAAiBihL,GAAG4+J,IAAIF,GAAGtmN,KAAK4nD,GAAG0+J,GAAG16G,MAAM,IAAIhkD,GAAG,SAAS0+J,GAAG62a,SAAS,IAAIv1kB,GAAG,YAAY0+J,GAAGk3a,gBAAgB,IAAI51kB,GAAG,mBAAmB,IAAIvhG,GAAG,SAAStqG,IAAIZ,KAAKi2wB,gBAAgB,IAAI9qa,GAAGnrW,KAAK05wB,MAAM,EAAE15wB,KAAKwixB,2BAA2B5hxB,EAAE6hxB,sCAAsC,IAAItuxB,UAAUC,SAAS,IAAID,UAAUC,OAAOsmB,EAAEvmB,UAAU,GAAG0F,GAAGmG,KAAKwixB,2BAA2BruxB,UAAU,GAAGA,UAAU,aAAag3W,KAAKnrW,KAAKi2wB,gBAAgB9hxB,UAAU,IAAI,IAAIA,UAAUC,QAAQ4L,KAAKi2wB,gBAAgB9hxB,UAAU,GAAG6L,KAAK05wB,MAAMvlxB,UAAU,IAAI,IAAIA,UAAUC,SAAS4L,KAAKi2wB,gBAAgB9hxB,UAAU,GAAG6L,KAAK05wB,MAAMvlxB,UAAU,GAAG6L,KAAKwixB,2BAA2BruxB,UAAU,IAAI,EAAEq3W,GAAG,CAACgka,iBAAiB,CAACv4uB,cAAa,IAAKi0E,GAAG9qG,UAAU+6wB,WAAW,SAASv6wB,GAAG,OAAOA,EAAEw7M,SAASp8M,KAAKk1wB,YAAY,MAAMt0wB,EAAE2ywB,YAAY3ywB,EAAEyywB,WAAWzywB,EAAE4ywB,YAAY5ywB,EAAE0ywB,UAAUtzwB,KAAKk1wB,YAAY,IAAIl8vB,EAAEpY,EAAE2ywB,UAAU3ywB,EAAE4ywB,YAAY5ywB,EAAE2ywB,YAAY3ywB,EAAEyywB,WAAWzywB,EAAE4ywB,YAAY5ywB,EAAE0ywB,UAAUtzwB,KAAKo1wB,iBAAiB,CAAC,IAAIp8vB,EAAEpY,EAAE2ywB,UAAU3ywB,EAAE4ywB,WAAW,IAAIx6vB,EAAEpY,EAAEyywB,UAAUzywB,EAAE0ywB,aAAatzwB,KAAKu1wB,cAAcv1wB,KAAKq1wB,iBAAiB,CAAC,IAAIr8vB,EAAEpY,EAAE2ywB,UAAU3ywB,EAAE4ywB,WAAW,IAAIx6vB,EAAEpY,EAAE2ywB,UAAU3ywB,EAAE0ywB,WAAW,IAAIt6vB,EAAEpY,EAAEyywB,UAAUzywB,EAAE0ywB,WAAW,IAAIt6vB,EAAEpY,EAAEyywB,UAAUzywB,EAAE4ywB,WAAW,IAAIx6vB,EAAEpY,EAAE2ywB,UAAU3ywB,EAAE4ywB,aAAa,KAAK,EAAEtoqB,GAAG9qG,UAAUg1wB,iBAAiB,SAASx0wB,GAAG,OAAOA,EAAEA,aAAatM,MAAM,IAAI4uY,GAAGljY,KAAK2gxB,+BAA+BjgxB,OAAOE,GAAGZ,MAAM0a,EAAE9Z,EAAE4Z,GAAG,IAAI0oX,GAAGtiY,EAAEZ,WAAM,EAAO,IAAIkjY,GAAGljY,KAAK2gxB,+BAA+BjgxB,OAAO,IAAIV,KAAK,EAAEkrG,GAAG9qG,UAAUk1wB,sBAAsB,WAAW,OAAG,IAAInhxB,UAAUC,OAAc,IAAI+vY,GAAG,KAAKnkY,MAAS,IAAI7L,UAAUC,OAAkC,IAAI+vY,GAAxBhwY,UAAU,GAAmB6L,WAA5D,CAAkE,EAAEkrG,GAAG9qG,UAAUsixB,cAAc,SAAS9hxB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,GAAE,EAAGxb,GAAE,EAAG00B,EAAEnZ,EAAEsB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAO7E,EAAE0gF,EAAEiqC,WAAW,OAAO5oH,IAAIA,EAAE/B,GAAGA,IAAI+B,IAAI6b,GAAE,GAAI8iE,EAAEg4sB,kCAAkCt2xB,GAAE,EAAG,CAAC,GAAG,OAAOL,EAAE,OAAOgb,KAAKy1wB,2BAA2B,GAAG50wB,GAAGxb,EAAE,OAAO2a,KAAKy1wB,yBAAyBvqqB,GAAGy3qB,gBAAgB/hxB,IAAI,IAAIhH,EAAEgH,EAAEsB,WAAWpa,OAAO,GAAG8Y,EAAEmS,OAAO,EAAE,CAAC,GAAGnZ,aAAa4qY,GAAG,OAAOxkY,KAAKw1wB,mBAAmBtqqB,GAAG03qB,eAAehixB,IAAI,GAAGhH,aAAaspY,GAAG,OAAOljY,KAAKs1wB,sBAAsBpqqB,GAAG23qB,kBAAkBjixB,IAAI,GAAGhH,aAAa2qY,GAAG,OAAOvkY,KAAKm1wB,iBAAiBjqqB,GAAG43qB,aAAalixB,IAAI0hY,GAAGozY,qBAAqB,oBAAoB97wB,EAAEg0G,WAAWgoT,UAAU,CAAC,OAAOh8Z,CAAC,EAAEsxG,GAAG9qG,UAAUs/wB,2BAA2B,SAAS9+wB,GAAG,OAAOZ,KAAKm1wB,iBAAiB,OAAOv0wB,EAAEZ,KAAK2gxB,+BAA+BjgxB,OAAOE,GAAG,KAAK,EAAEsqG,GAAG9qG,UAAU80wB,YAAY,WAAW,GAAG,IAAI/gxB,UAAUC,OAAO,OAAO4L,KAAKk1wB,YAAYl1wB,KAAK2gxB,+BAA+BjgxB,OAAO,KAAK,GAAG,IAAIvM,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAG,OAAO6L,KAAKk1wB,YAAY,OAAOt0wB,EAAEZ,KAAK2gxB,+BAA+BjgxB,OAAO,CAACE,IAAI,KAAK,CAAC,GAAG8Z,EAAEvmB,UAAU,GAAGqmB,GAAuB,OAAO,IAAI+pX,GAAxBpwY,UAAU,GAAmB6L,KAAM,CAAC,EAAEkrG,GAAG9qG,UAAUugxB,6BAA6B,WAAW,OAAO3gxB,KAAKwixB,0BAA0B,EAAEt3qB,GAAG9qG,UAAUm1wB,cAAc,WAAW,GAAG,IAAIphxB,UAAUC,OAAO,OAAO,IAAIowY,GAAG,KAAK,KAAKxkY,MAAM,GAAG,IAAI7L,UAAUC,OAAO,CAAC,GAAGsmB,EAAEvmB,UAAU,GAAGqmB,GAAG,CAAC,IAAI5Z,EAAEzM,UAAU,GAAG,OAAO6L,KAAKu1wB,cAAcv1wB,KAAKq1wB,iBAAiBz0wB,GAAG,CAAC,GAAGzM,UAAU,aAAaG,MAAM,CAAC,IAAItP,EAAEmP,UAAU,GAAG,OAAO6L,KAAKu1wB,cAAcv1wB,KAAKq1wB,iBAAiBrwxB,GAAG,CAAC,GAAGmP,UAAU,aAAa61F,GAAG,CAAC,IAAInpF,EAAE1M,UAAU,GAAG,OAAO6L,KAAKu1wB,cAAc10wB,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI1M,UAAUC,OAA0C,OAAO,IAAIowY,GAAvCrwY,UAAU,GAAKA,UAAU,GAAqB6L,KAAM,EAAEkrG,GAAG9qG,UAAUw5wB,QAAQ,WAAW,OAAO55wB,KAAK05wB,KAAK,EAAExuqB,GAAG9qG,UAAUq1wB,yBAAyB,WAAW,OAAG,IAAIthxB,UAAUC,OAAc,IAAIsvY,GAAG,KAAK1jY,MAAS,IAAI7L,UAAUC,OAAkC,IAAIsvY,GAAxBvvY,UAAU,GAAmB6L,WAA5D,CAAkE,EAAEkrG,GAAG9qG,UAAU2ixB,eAAe,SAASnixB,GAAG,OAAO,IAAIqqW,GAAGjrW,MAAMk5W,KAAKt4W,EAAE,CAACs4W,KAAK,WAAW,GAAG,IAAI/kX,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKwixB,2BAA2B9hxB,OAAOE,EAAE,CAAC,GAAG,EAAEsqG,GAAG9qG,UAAUk7wB,kBAAkB,WAAW,OAAOt7wB,KAAKi2wB,eAAe,EAAE/qqB,GAAG9qG,UAAUi1wB,iBAAiB,WAAW,GAAG,IAAIlhxB,UAAUC,OAAO,OAAO4L,KAAKq1wB,iBAAiBr1wB,KAAK2gxB,+BAA+BjgxB,OAAO,KAAK,GAAG,IAAIvM,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaG,MAAM,CAAC,IAAIsM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKq1wB,iBAAiB,OAAOz0wB,EAAEZ,KAAK2gxB,+BAA+BjgxB,OAAOE,GAAG,KAAK,CAAC,GAAG8Z,EAAEvmB,UAAU,GAAGqmB,GAAuB,OAAO,IAAIwvE,GAAxB71F,UAAU,GAAmB6L,KAAM,CAAC,EAAEkrG,GAAG9qG,UAAUo1wB,mBAAmB,WAAW,OAAG,IAAIrhxB,UAAUC,OAAc,IAAIm+U,GAAG,KAAKvyU,MAAS,IAAI7L,UAAUC,OAAkC,IAAIm+U,GAAxBp+U,UAAU,GAAmB6L,WAA5D,CAAkE,EAAEkrG,GAAG9qG,UAAU+0wB,iBAAiB,WAAW,GAAG,IAAIhhxB,UAAUC,OAAO,OAAO,IAAI61F,GAAG,KAAKjqF,MAAM,GAAG,IAAI7L,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaG,MAA0B,OAAO,IAAI21F,GAAxB91F,UAAU,GAAmB6L,MAAM,GAAG7L,UAAU,aAAaG,MAAM,CAAC,IAAItP,EAAEmP,UAAU,GAAG,OAAO6L,KAAKm1wB,iBAAiB,OAAOnwxB,EAAEgb,KAAK2gxB,+BAA+BjgxB,OAAO1b,GAAG,KAAK,CAAC,GAAG01B,EAAEvmB,UAAU,GAAGqmB,GAAG,CAAC,IAAI3Z,EAAE1M,UAAU,GAAG,GAAG,OAAO0M,EAAE,OAAOb,KAAKm1wB,iBAAiB,IAAI7gxB,MAAM,GAAGm6B,KAAK,OAAO,IAAI,IAAIppC,EAAE,IAAIiP,MAAMuM,EAAEkS,QAAQ0b,KAAK,MAAM1U,EAAE,EAAEA,EAAElZ,EAAEkS,OAAOgH,IAAI,CAAC,IAAI4pD,EAAE3jE,KAAK2gxB,+BAA+BjgxB,OAAO,EAAEG,EAAEuorB,gBAAgBnlT,GAAG3yS,KAAKzwF,EAAEkZ,EAAE4pD,EAAE,EAAE,GAAGt+E,EAAE00B,GAAG/Z,KAAKk1wB,YAAYvxsB,EAAE,CAAC,OAAO3jE,KAAKm1wB,iBAAiB9vxB,EAAE,CAAC,CAAC,EAAE6lH,GAAG9qG,UAAU6uwB,YAAY,WAAW,MAAM,CAACjqxB,EAAE,EAAEkmH,GAAG9qG,UAAUwtG,SAAS,WAAW,OAAO1C,EAAE,EAAEA,GAAG83qB,oBAAoB,SAASpixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAGy3qB,gBAAgB,SAAS/hxB,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAGu3qB,oCAAoC,WAAW,OAAOxjoB,GAAG5pJ,UAAU,EAAE61G,GAAG+3qB,uBAAuB,SAASrixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAG23qB,kBAAkB,SAASjixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAGg4qB,kBAAkB,SAAStixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAGi4qB,kBAAkB,SAASvixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAG43qB,aAAa,SAASlixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAG03qB,eAAe,SAAShixB,GAAG,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM,OAAO7tB,EAAEkjN,QAAQ9+N,EAAE,EAAEkmH,GAAGk4qB,6BAA6B,SAASxixB,EAAE5b,GAAG,OAAOA,EAAEs2xB,oBAAoBtD,YAAYp3wB,GAAG5b,EAAEu1xB,aAAarF,YAAYt0wB,EAAE,EAAE4qW,GAAGgka,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiB0/E,GAAGsgQ,IAAI,IAAIG,GAAG,CAAC,QAAQ,aAAa,aAAa,kBAAkB,UAAU,gBAAgBc,GAAG,SAAS7rW,GAAGZ,KAAKq0wB,gBAAgBzzwB,GAAG,IAAIsqG,EAAE,EAAEuhQ,GAAGrsW,UAAU1b,KAAK,SAASkc,GAAG,IAAI5b,EAAE6b,GAAG7b,EAAE,iBAAiB4b,EAAE+I,KAAKyuB,MAAMx3B,GAAGA,GAAGoP,KAAK,IAAIm8V,GAAGtrW,GAAG,MAAM,IAAI0G,MAAM,yBAAyBviB,EAAEgrB,MAAM,OAAO,IAAI27V,GAAGpjX,QAAQsY,GAAGsrW,GAAGtrW,GAAGC,MAAMd,KAAK,CAAChb,EAAE84M,cAAc,uBAAuBj9L,EAAEsrW,GAAGtrW,GAAGC,MAAMd,KAAK,CAAChb,EAAE65M,aAAastK,GAAGtrW,GAAGC,MAAMd,KAAK,CAAChb,GAAG,EAAEynX,GAAGrsW,UAAU1a,MAAM,SAASkb,GAAG,IAAI5b,EAAE4b,EAAE2zwB,kBAAkB,IAAI7oa,GAAG1mX,GAAG,MAAM,IAAIuiB,MAAM,6BAA6B,OAAOmkW,GAAG1mX,GAAG8b,MAAMd,KAAK,CAACY,GAAG,EAAE,IAAIurW,GAAG,CAACygI,QAAQ,SAAShse,GAAG,IAAI5b,EAAE,CAAC,EAAE,IAAI,IAAI6b,KAAKD,EAAE5b,EAAE6b,GAAGD,EAAEC,GAAG,GAAGD,EAAEi9L,SAAS,CAAC,IAAIx4M,EAAEub,EAAEi9L,SAAS7tL,KAAK,IAAIm8V,GAAG9mX,GAAG,MAAM,IAAIkiB,MAAM,yBAAyB3G,EAAEoP,MAAMhrB,EAAE64M,SAAS79L,KAAKtb,KAAKkc,EAAEi9L,SAAS,CAAC,OAAOj9L,EAAEg9L,OAAO54M,EAAE44M,KAAKuuK,GAAGvuK,KAAK98L,MAAMd,KAAK,CAACY,EAAEg9L,QAAQ54M,CAAC,EAAE6nf,kBAAkB,SAASjse,GAAG,IAAI5b,EAAE,CAAC,EAAE,GAAG4b,EAAE+9L,SAAS,CAAC35M,EAAE25M,SAAS,GAAG,IAAI,IAAI99L,EAAE,EAAEA,EAAED,EAAE+9L,SAASvqM,SAASyM,EAAE7b,EAAE25M,SAAS7qM,KAAKkM,KAAKtb,KAAKkc,EAAE+9L,SAAS99L,IAAI,CAAC,OAAOD,EAAEg9L,OAAO54M,EAAE44M,KAAK59L,KAAKo4B,MAAMwlK,KAAK98L,MAAMd,KAAK,CAACY,EAAEg9L,QAAQ54M,CAAC,EAAE84M,YAAY,SAASl9L,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAEC,GAAG7b,EAAE8O,KAAK,IAAIklB,EAAE3zB,EAAE,GAAGA,EAAE,IAAI,CAAC,OAAOL,CAAC,EAAE44M,KAAK,SAASh9L,GAAG,OAAOZ,KAAKq0wB,gBAAgBgB,iBAAiB,CAAC,IAAIr8vB,EAAEpY,EAAE,GAAGA,EAAE,IAAI,IAAIoY,EAAEpY,EAAE,GAAGA,EAAE,IAAI,IAAIoY,EAAEpY,EAAE,GAAGA,EAAE,IAAI,IAAIoY,EAAEpY,EAAE,GAAGA,EAAE,IAAI,IAAIoY,EAAEpY,EAAE,GAAGA,EAAE,KAAK,EAAEgmN,MAAM,SAAShmN,GAAG,IAAI5b,EAAE,IAAIg0B,EAAEpY,EAAE,GAAGA,EAAE,IAAI,OAAOZ,KAAKq0wB,gBAAgBa,YAAYlwxB,EAAE,EAAE+nf,WAAW,SAASnse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,SAASyM,EAAE7b,EAAE8O,KAAKq4W,GAAGvlJ,MAAM9lN,MAAMd,KAAK,CAACY,EAAEC,MAAM,OAAOb,KAAKq0wB,gBAAgBc,iBAAiBnwxB,EAAE,EAAE88M,WAAW,SAASlhM,GAAG,IAAI5b,EAAEmnX,GAAGruK,YAAYh9L,MAAMd,KAAK,CAACY,IAAI,OAAOZ,KAAKq0wB,gBAAgBe,iBAAiBpwxB,EAAE,EAAEiof,gBAAgB,SAASrse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,SAASyM,EAAE7b,EAAE8O,KAAKq4W,GAAGrqK,WAAWhhM,MAAMd,KAAK,CAACY,EAAEC,MAAM,OAAOb,KAAKq0wB,gBAAgBiB,sBAAsBtwxB,EAAE,EAAE+xZ,QAAQ,SAASn2Y,GAAG,IAAI,IAAI5b,EAAEmnX,GAAGruK,YAAYh9L,MAAMd,KAAK,CAACY,EAAE,KAAKC,EAAEb,KAAKq0wB,gBAAgBgB,iBAAiBrwxB,GAAGK,EAAE,GAAG00B,EAAE,EAAEA,EAAEnZ,EAAExM,SAAS2lB,EAAE,CAAC,IAAI4pD,EAAE/iE,EAAEmZ,GAAG92B,EAAEkpX,GAAGruK,YAAYh9L,MAAMd,KAAK,CAAC2jE,IAAI/pE,EAAEoG,KAAKq0wB,gBAAgBgB,iBAAiBpyxB,GAAGoC,EAAEyO,KAAK8F,EAAE,CAAC,OAAOoG,KAAKq0wB,gBAAgBkB,cAAc10wB,EAAExb,EAAE,EAAE8nf,aAAa,SAASvse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAEC,GAAG7b,EAAE8O,KAAKq4W,GAAG4qC,QAAQj2Y,MAAMd,KAAK,CAAC3a,IAAI,CAAC,OAAO2a,KAAKq0wB,gBAAgBmB,mBAAmBxwxB,EAAE,EAAEoof,mBAAmB,SAASxse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAEC,GAAG7b,EAAE8O,KAAKkM,KAAKtb,KAAKW,GAAG,CAAC,OAAO2a,KAAKq0wB,gBAAgBoB,yBAAyBzwxB,EAAE,GAAG0mX,GAAG,CAACrsK,WAAW,SAASz+L,GAAG,MAAM,CAACA,EAAEra,EAAEqa,EAAEjd,EAAE,EAAEijO,MAAM,SAAShmN,GAAG,MAAM,CAACoP,KAAK,QAAQ8tL,YAAY4tK,GAAGrsK,WAAWv+L,MAAMd,KAAK,CAACY,EAAE+xwB,kBAAkB,EAAE5lS,WAAW,SAASnse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAE8zwB,YAAYtgxB,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAE8zwB,YAAY7zwB,GAAGkZ,EAAE2xV,GAAG9kJ,MAAM9lN,MAAMd,KAAK,CAAC3a,IAAIL,EAAE8O,KAAKimB,EAAE+jL,YAAY,CAAC,MAAM,CAAC9tL,KAAK,aAAa8tL,YAAY94M,EAAE,EAAE88M,WAAW,SAASlhM,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAED,EAAEk+wB,iBAAiBz5xB,EAAE,EAAEA,EAAEwb,EAAEzM,SAAS/O,EAAE,CAAC,IAAI00B,EAAElZ,EAAExb,GAAGL,EAAE8O,KAAK43W,GAAGrsK,WAAWv+L,MAAMd,KAAK,CAAC+Z,IAAI,CAAC,MAAM,CAAC/J,KAAK,aAAa8tL,YAAY94M,EAAE,EAAEiof,gBAAgB,SAASrse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAE8zwB,YAAYtgxB,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAE8zwB,YAAY7zwB,GAAGkZ,EAAE2xV,GAAG5pK,WAAWhhM,MAAMd,KAAK,CAAC3a,IAAIL,EAAE8O,KAAKimB,EAAE+jL,YAAY,CAAC,MAAM,CAAC9tL,KAAK,kBAAkB8tL,YAAY94M,EAAE,EAAE+xZ,QAAQ,SAASn2Y,GAAG,IAAI5b,EAAE,GAAG6b,EAAE6qW,GAAG5pK,WAAWhhM,MAAMd,KAAK,CAACY,EAAEk0wB,SAAS9vxB,EAAE8O,KAAK+M,EAAEi9L,aAAa,IAAI,IAAIz4M,EAAE,EAAEA,EAAEub,EAAEm0wB,OAAO3gxB,SAAS/O,EAAE,CAAC,IAAI00B,EAAEnZ,EAAEm0wB,OAAO1vxB,GAAGs+E,EAAE+nS,GAAG5pK,WAAWhhM,MAAMd,KAAK,CAAC+Z,IAAI/0B,EAAE8O,KAAK6vE,EAAEm6H,YAAY,CAAC,MAAM,CAAC9tL,KAAK,UAAU8tL,YAAY94M,EAAE,EAAEmof,aAAa,SAASvse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAE8zwB,YAAYtgxB,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAE8zwB,YAAY7zwB,GAAGkZ,EAAE2xV,GAAGqrC,QAAQj2Y,MAAMd,KAAK,CAAC3a,IAAIL,EAAE8O,KAAKimB,EAAE+jL,YAAY,CAAC,MAAM,CAAC9tL,KAAK,eAAe8tL,YAAY94M,EAAE,EAAEoof,mBAAmB,SAASxse,GAAG,IAAI,IAAI5b,EAAE,GAAG6b,EAAE,EAAEA,EAAED,EAAE8zwB,YAAYtgxB,SAASyM,EAAE,CAAC,IAAIxb,EAAEub,EAAE8zwB,YAAY7zwB,GAAGkZ,EAAE10B,EAAEkvxB,kBAAkBvvxB,EAAE8O,KAAK43W,GAAG3xV,GAAGjZ,MAAMd,KAAK,CAAC3a,IAAI,CAAC,MAAM,CAAC2qB,KAAK,qBAAqB6uL,WAAW75M,EAAE,GAAGgoX,GAAG,SAASpsW,GAAGZ,KAAKq0wB,gBAAgBzzwB,GAAG,IAAIsqG,GAAGlrG,KAAKqjxB,eAAerjxB,KAAKq0wB,gBAAgBiH,oBAAoBt7wB,KAAK89E,OAAO,IAAI2uR,GAAGzsW,KAAKq0wB,gBAAgB,EAAErna,GAAG5sW,UAAU1b,KAAK,SAASkc,GAAG,IAAI5b,EAAEgb,KAAK89E,OAAOp5F,KAAKkc,GAAG,OAAOZ,KAAKqjxB,eAAepqX,YAAY9tD,GAAG16G,OAAOzwP,KAAKsjxB,gBAAgBt+xB,GAAGA,CAAC,EAAEgoX,GAAG5sW,UAAUkjxB,gBAAgB,SAAS1ixB,GAAG,IAAI5b,EAAE6b,EAAE,GAAGD,EAAEy+L,WAAWr/L,KAAKqjxB,eAAerL,YAAYp3wB,EAAEy+L,iBAAiB,GAAGz+L,EAAE23B,OAAO,IAAIvzC,EAAE,EAAE6b,EAAED,EAAE23B,OAAOnkC,OAAOpP,EAAE6b,EAAE7b,IAAIgb,KAAKqjxB,eAAerL,YAAYp3wB,EAAE23B,OAAOvzC,SAAS,GAAG4b,EAAEi+L,WAAW,IAAI75M,EAAE,EAAE6b,EAAED,EAAEi+L,WAAWzqM,OAAOpP,EAAE6b,EAAE7b,IAAIgb,KAAKsjxB,gBAAgB1ixB,EAAEi+L,WAAW75M,GAAG,EAAE,IAAI2uK,GAAG,WAAW3zJ,KAAK89E,OAAO,IAAI2uR,GAAGzsW,KAAKq0wB,gBAAgB,EAAE1gnB,GAAGvzJ,UAAU1a,MAAM,SAASkb,GAAG,OAAOZ,KAAK89E,OAAOp4F,MAAMkb,EAAE,EAAE,IAAIsrW,GAAG,WAAW,EAAEG,GAAG,CAAC36O,GAAG,CAACz6F,cAAa,GAAI05N,KAAK,CAAC15N,cAAa,GAAI26N,MAAM,CAAC36N,cAAa,IAAKi1U,GAAG9rW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/ia,GAAG9rW,UAAUwtG,SAAS,WAAW,OAAOs+P,EAAE,EAAEA,GAAGq3a,SAAS,SAAS3ixB,GAAG,OAAOA,IAAIsrW,GAAGv7G,KAAKu7G,GAAGt6G,MAAMhxP,IAAIsrW,GAAGt6G,MAAMs6G,GAAGv7G,KAAK/vP,CAAC,EAAEyrW,GAAG36O,GAAG79H,IAAI,WAAW,OAAO,CAAC,EAAEw4W,GAAG17G,KAAK98P,IAAI,WAAW,OAAO,CAAC,EAAEw4W,GAAGz6G,MAAM/9P,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiB0gV,GAAGG,KAAK9oX,EAAE6c,UAAU,IAAImH,OAAOhU,KAAK,uBAAuB5P,EAAEyc,UAAU,IAAIwiY,IAAItvY,IAAI,SAASsN,GAAG,OAAOZ,KAAK8uwB,OAAOh7wB,KAAK8M,IAAG,CAAE,EAAEjd,EAAEyc,UAAUvM,IAAI,SAAS+M,GAAG,GAAGA,EAAE,GAAGA,GAAGZ,KAAK+S,OAAO,MAAM,IAAIxL,MAAM,OAAOvH,KAAK8uwB,OAAOluwB,EAAE,EAAEjd,EAAEyc,UAAUtM,KAAK,SAAS8M,GAAG,OAAOZ,KAAK8uwB,OAAOh7wB,KAAK8M,GAAGA,CAAC,EAAEjd,EAAEyc,UAAUiC,IAAI,SAASzB,GAAG,GAAG,IAAIZ,KAAK8uwB,OAAO16wB,OAAO,MAAM,IAAI7Q,EAAE,OAAOyc,KAAK8uwB,OAAOzswB,KAAK,EAAE1e,EAAEyc,UAAUuzR,KAAK,WAAW,GAAG,IAAI3zR,KAAK8uwB,OAAO16wB,OAAO,MAAM,IAAI7Q,EAAE,OAAOyc,KAAK8uwB,OAAO9uwB,KAAK8uwB,OAAO16wB,OAAO,EAAE,EAAEzQ,EAAEyc,UAAUy5P,MAAM,WAAW,OAAO,IAAI75P,KAAK8uwB,OAAO16wB,MAAM,EAAEzQ,EAAEyc,UAAUo9M,QAAQ,WAAW,OAAOx9M,KAAK65P,OAAO,EAAEl2Q,EAAEyc,UAAUktM,OAAO,SAAS1sM,GAAG,OAAOZ,KAAK8uwB,OAAOvmxB,QAAQqY,EAAE,EAAEjd,EAAEyc,UAAU2S,KAAK,WAAW,OAAO/S,KAAK8uwB,OAAO16wB,MAAM,EAAEzQ,EAAEyc,UAAU0jN,QAAQ,WAAW,IAAI,IAAIljN,EAAE,GAAG5b,EAAE,EAAE6b,EAAEb,KAAK8uwB,OAAO16wB,OAAOpP,EAAE6b,EAAE7b,IAAI4b,EAAE9M,KAAKkM,KAAK8uwB,OAAO9pxB,IAAI,OAAO4b,CAAC,EAAE,IAAIqrW,GAAG,WAAWjsW,KAAKwjxB,WAAW,EAAExjxB,KAAKyjxB,UAAU,KAAKzjxB,KAAK0jxB,OAAO,KAAK1jxB,KAAK2jxB,YAAY,IAAI,EAAE13a,GAAG7rW,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKyjxB,SAAS,EAAEx3a,GAAG7rW,UAAUwjxB,iBAAiB,SAAShjxB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK6jxB,0BAA0BjjxB,EAAE5b,GAAG,OAAO6b,EAAE,IAAIA,EAAEb,KAAK6jxB,0BAA0BjjxB,EAAE5b,EAAE,IAAI6b,EAAE,IAAIb,KAAKyjxB,UAAU,KAAKzjxB,KAAK8jxB,4BAA4BljxB,IAAIC,CAAC,EAAEorW,GAAG7rW,UAAU2jxB,0BAA0B,WAAW,IAAInjxB,EAAEZ,KAAK0jxB,OAAOM,UAAUlF,iBAAiBx8Y,GAAG2lO,OAAOjomB,KAAKwjxB,UAAU,GAAGxjxB,KAAKwjxB,UAAU5ixB,EAAExM,OAAO,0DAA0D,IAAIpP,EAAE4b,EAAEZ,KAAKwjxB,UAAU,GAAG3ixB,EAAED,EAAEZ,KAAKwjxB,UAAU,GAAGn+xB,EAAEqrY,GAAG2oZ,mBAAmBr5wB,KAAKyjxB,UAAU5ixB,EAAE7b,GAAG+0B,GAAE,GAAG/0B,EAAErB,EAAEqc,KAAKyjxB,UAAU9/xB,GAAGkd,EAAEld,EAAEqc,KAAKyjxB,UAAU9/xB,GAAG0B,IAAIqrY,GAAGooZ,kBAAsB9zxB,EAAErB,EAAEqc,KAAKyjxB,UAAU9/xB,GAAGkd,EAAEld,EAAEqc,KAAKyjxB,UAAU9/xB,GAAG0B,IAAIqrY,GAAGmoZ,aAAxD9+vB,GAAE,GAAwEA,IAAI/Z,KAAKwjxB,UAAUxjxB,KAAKwjxB,UAAU,EAAE,EAAEv3a,GAAG7rW,UAAUyjxB,0BAA0B,SAASjjxB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEojxB,UAAUlF,iBAAiB,GAAG95xB,EAAE,GAAGA,EAAE,GAAG6b,EAAEzM,OAAO,OAAO,EAAE,GAAGyM,EAAE7b,GAAGrB,IAAIkd,EAAE7b,EAAE,GAAGrB,EAAE,OAAO,EAAE,IAAI0B,EAAE6mX,GAAGv7G,KAAK,OAAO9vP,EAAE7b,GAAGrB,EAAEkd,EAAE7b,EAAE,GAAGrB,IAAI0B,EAAE6mX,GAAGt6G,OAAOvsQ,CAAC,EAAE4mX,GAAG7rW,UAAU4jxB,QAAQ,WAAW,OAAOhkxB,KAAK2jxB,WAAW,EAAE13a,GAAG7rW,UAAU0jxB,4BAA4B,SAASljxB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEojxB,UAAUlF,iBAAiBj+wB,EAAE,EAAEA,EAAE7b,EAAEoP,OAAO,EAAEyM,KAAK,OAAOb,KAAKyjxB,WAAWz+xB,EAAE6b,GAAGta,EAAEyZ,KAAKyjxB,UAAUl9xB,KAAKyZ,KAAK0jxB,OAAO9ixB,EAAEZ,KAAKwjxB,UAAU3ixB,EAAEb,KAAKyjxB,UAAUz+xB,EAAE6b,GAAG,EAAEorW,GAAG7rW,UAAU6jxB,wBAAwB,WAAW,IAAIrjxB,EAAEZ,KAAK0jxB,OAAOh4kB,UAAUw4kB,WAAWlkxB,KAAK0jxB,OAAO9ixB,EAAEujxB,mBAAmBnkxB,KAAK0jxB,OAAOU,cAAcpkxB,KAAK0jxB,OAAO1jxB,KAAK0jxB,OAAOW,SAASrkxB,KAAKwjxB,UAAUxjxB,KAAK0jxB,OAAOM,UAAUlF,iBAAiB1qxB,OAAO,EAAE,EAAE63W,GAAG7rW,UAAUkkxB,SAAS,SAAS1jxB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO+Y,EAAEujxB,aAAapkxB,KAAK8jxB,4BAA4BjjxB,EAAE,CAACyhY,GAAG2lO,OAAO,IAAIjomB,KAAKwjxB,WAAWxjxB,KAAKyjxB,UAAU17jB,OAAO/nN,KAAK0jxB,OAAO/Q,iBAAiB,yCAAyC,IAAI3ywB,KAAKwjxB,UAAUxjxB,KAAKikxB,0BAA0BjkxB,KAAK+jxB,4BAA4B/jxB,KAAK2jxB,YAAY3jxB,KAAK0jxB,OAAO1jxB,KAAK4jxB,iBAAiB5jxB,KAAK0jxB,OAAO1jxB,KAAKwjxB,aAAat3a,GAAGv7G,OAAO3wP,KAAK2jxB,YAAY3jxB,KAAK0jxB,OAAOW,SAAS,EAAEp4a,GAAG7rW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEhja,GAAG7rW,UAAUwtG,SAAS,WAAW,OAAOq+P,EAAE,EAAE,IAAIU,GAAG,SAAS/rW,GAAG,SAAS5b,EAAE6b,EAAExb,GAAGub,EAAEP,KAAKL,KAAKhb,EAAEu/xB,aAAa1jxB,EAAExb,IAAI2a,KAAKq5B,GAAGh0C,EAAE,IAAI2zB,EAAE3zB,GAAG,KAAK2a,KAAKzM,KAAK,mBAAmB,CAAC,OAAOqN,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKq5B,EAAE,EAAEr0C,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,EAAEu/xB,aAAa,SAAS3jxB,EAAE5b,GAAG,OAAOA,EAAE4b,EAAEA,EAAE,MAAM5b,EAAE,IAAI,EAAEA,CAAC,CAAtZ,CAAwZ0kG,GAAG6iR,GAAG,WAAWvsW,KAAK8uwB,OAAO,EAAE,EAAEvia,GAAGnsW,UAAUokxB,QAAQ,SAAS5jxB,GAAGZ,KAAK8uwB,OAAOh7wB,KAAK8M,EAAE,EAAE2rW,GAAGnsW,UAAUqkxB,YAAY,WAAW,OAAOzkxB,KAAK8uwB,OAAO5muB,OAAO,EAAEqkU,GAAGnsW,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAK8uwB,OAAO16wB,MAAM,EAAE,IAAIkwI,GAAG,WAAWtkI,KAAK0kxB,QAAQ,KAAK1kxB,KAAK2kxB,aAAa,IAAI9gZ,GAAG7jY,KAAK4kxB,OAAO,IAAI/gZ,GAAG7jY,KAAK6kxB,gBAAgB,KAAK7kxB,KAAK8kxB,KAAK,KAAK9kxB,KAAK0kxB,QAAQ,IAAIz4a,EAAE,EAAE3nO,GAAGlkI,UAAU2kxB,kBAAkB,WAAW,IAAI,IAAInkxB,EAAEZ,KAAK2kxB,aAAazixB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOk9xB,YAAW,EAAI,EAAE1gpB,GAAGlkI,UAAU6kxB,uBAAuB,WAAW,OAAOjlxB,KAAK6kxB,eAAe,EAAEvgpB,GAAGlkI,UAAU8kxB,iBAAiB,SAAStkxB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,EAAED,EAAEsjxB,WAAWhixB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,GAAGzC,EAAE8/xB,aAAa9/xB,EAAEg/xB,SAASc,YAAY,CAACngyB,EAAEK,EAAE,KAAK,CAAC,CAAC,GAAG,OAAOL,EAAE,MAAM,IAAI2nX,GAAG,4CAA4C/rW,EAAE+xwB,iBAAiB/xwB,EAAEsjxB,WAAWkB,cAAcpgyB,GAAG,IAAI,IAAI+0B,EAAEnZ,EAAEsjxB,WAAWhixB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAO67E,EAAEqhtB,YAAW,GAAIhlxB,KAAKqlxB,cAAc1htB,EAAE,CAAC,EAAE2gE,GAAGlkI,UAAUklxB,aAAa,SAAS1kxB,GAAGZ,KAAK+kxB,oBAAoB,IAAI//xB,EAAEgb,KAAK0kxB,QAAQV,UAAUh/xB,EAAEugyB,cAAcr5a,GAAGt6G,MAAMhxP,GAAGZ,KAAKqlxB,cAAcrgyB,GAAGgb,KAAKolxB,cAAcpgyB,EAAE,EAAEs/I,GAAGlkI,UAAUM,OAAO,SAASE,GAAGZ,KAAKwlxB,aAAa5kxB,GAAGZ,KAAK0kxB,QAAQJ,SAAStkxB,KAAK2kxB,cAAc3kxB,KAAK6kxB,gBAAgB7kxB,KAAK0kxB,QAAQ/R,eAAe,EAAEruoB,GAAGlkI,UAAUqlxB,gBAAgB,WAAW,IAAI,IAAI7kxB,EAAEZ,KAAK2kxB,aAAazixB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO9C,EAAE0xa,SAASxqD,GAAGt6G,QAAQ,GAAG5sQ,EAAE0xa,SAASxqD,GAAGv7G,OAAO,IAAI3rQ,EAAE0gyB,sBAAsB1gyB,EAAE2gyB,aAAY,EAAG,CAAC,EAAErhpB,GAAGlkI,UAAUglxB,cAAc,SAASxkxB,GAAG,IAAI5b,EAAE,IAAI89Y,GAAGjiY,EAAE,IAAI0rW,GAAGlnX,EAAEub,EAAE8qM,UAAU,IAAI7qM,EAAE2jxB,QAAQn/xB,GAAGL,EAAEsO,IAAIjO,GAAGub,EAAEokxB,YAAW,IAAKnkxB,EAAE28M,WAAW,CAAC,IAAIzjM,EAAElZ,EAAE4jxB,cAAcz/xB,EAAEsO,IAAIymB,GAAG/Z,KAAKklxB,iBAAiBnrwB,GAAG,IAAI,IAAI4pD,EAAE5pD,EAAEmqwB,WAAWhixB,WAAWyhE,EAAE+3sB,WAAW,CAAC,IAAIz4xB,EAAE0gF,EAAE77E,OAAOu8xB,SAAS,IAAIphyB,EAAEkiyB,YAAY,CAAC,IAAIvrxB,EAAE3W,EAAEyoN,UAAU1mN,EAAEwC,SAASoS,KAAKiH,EAAE2jxB,QAAQ5qxB,GAAG5U,EAAEsO,IAAIsG,GAAG,CAAC,CAAC,CAAC,EAAE0qI,GAAGlkI,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAK6kxB,gBAAgBt+xB,EAAEvB,EAAE6/xB,gBAAgBt+xB,GAAG,EAAEyZ,KAAK6kxB,gBAAgBt+xB,EAAEvB,EAAE6/xB,gBAAgBt+xB,EAAE,EAAE,CAAC,EAAE+9I,GAAGlkI,UAAUmpM,YAAY,WAAW,GAAG,OAAOvpM,KAAK8kxB,KAAK,CAAC,IAAI,IAAIlkxB,EAAE,IAAIolB,EAAEhhC,EAAEgb,KAAK2kxB,aAAazixB,WAAWld,EAAE02xB,WAAW,IAAI,IAAI76wB,EAAE7b,EAAE8C,OAAOk8xB,UAAUlF,iBAAiBz5xB,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO,EAAE/O,IAAIub,EAAE8ywB,gBAAgB7ywB,EAAExb,IAAI2a,KAAK8kxB,KAAKlkxB,CAAC,CAAC,OAAOZ,KAAK8kxB,IAAI,EAAExgpB,GAAGlkI,UAAUolxB,aAAa,SAAS5kxB,GAAG,IAAI5b,EAAE,IAAIrB,EAAE,IAAIqB,EAAEsO,IAAIsN,IAAI5b,EAAE60Q,SAAS,CAAC,IAAIh5P,EAAE7b,EAAEqd,MAAMrC,KAAK1M,IAAIuN,EAAE7b,EAAE,CAAC,EAAEs/I,GAAGlkI,UAAUilxB,cAAc,SAASzkxB,GAAG,IAAI5b,EAAE4b,EAAEyjxB,SAASr/xB,EAAEktP,SAASg6H,GAAGv7G,KAAK/vP,EAAE81Z,SAASxqD,GAAGt6G,QAAQ5sQ,EAAEktP,SAASg6H,GAAGt6G,MAAMhxP,EAAE81Z,SAASxqD,GAAGv7G,MAAM,EAAErsH,GAAGlkI,UAAU9M,IAAI,SAASsN,EAAE5b,GAAG4b,EAAEokxB,YAAW,GAAIhlxB,KAAK4kxB,OAAOtxxB,IAAIsN,GAAG,IAAI,IAAIC,EAAED,EAAEsjxB,WAAWhixB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOkY,KAAK2kxB,aAAarxxB,IAAIjO,GAAG,IAAI00B,EAAE10B,EAAEg/xB,SAAS34kB,UAAU3xL,EAAEorwB,aAAangyB,EAAE8O,KAAKimB,EAAE,CAAC,EAAEuqH,GAAGlkI,UAAUwlxB,SAAS,WAAW,OAAO5lxB,KAAK4kxB,MAAM,EAAEtgpB,GAAGlkI,UAAUylxB,iBAAiB,WAAW,OAAO7lxB,KAAK2kxB,YAAY,EAAErgpB,GAAGlkI,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEorH,GAAGlkI,UAAUwtG,SAAS,WAAW,OAAO02B,EAAE,EAAE,IAAI8nO,GAAG,SAASxrW,IAAI,GAAGZ,KAAKipF,SAAS,KAAK,IAAI90F,UAAUC,QAAQ,GAAGD,UAAU,aAAaG,MAAM,CAAC,IAAItP,EAAEmP,UAAU,GAAG6L,KAAKosD,KAAKpnE,EAAEoP,OAAO,MAAM,GAAG+b,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAI0M,EAAE1M,UAAU,GAAG6L,KAAKosD,KAAK,GAAGpsD,KAAKipF,SAASijR,GAAGx6O,IAAI7wH,CAAC,MAAM,GAAG1M,UAAU,aAAayM,EAAE,CAAC,IAAIvb,EAAE8O,UAAU,GAAG,GAAG6L,KAAKosD,KAAK/mE,EAAE4jG,SAAS70F,QAAQ,OAAO/O,EAAE,IAAI,IAAI00B,EAAE,EAAEA,EAAE/Z,KAAKipF,SAAS70F,OAAO2lB,IAAI/Z,KAAKipF,SAASlvE,GAAG10B,EAAE4jG,SAASlvE,EAAE,OAAO,GAAG,IAAI5lB,UAAUC,OAAO,CAAC,IAAIuvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKosD,KAAK,GAAGpsD,KAAKipF,SAASijR,GAAGx6O,IAAI/tD,EAAE3jE,KAAKipF,SAASijR,GAAGv7G,MAAM1tQ,EAAE+c,KAAKipF,SAASijR,GAAGt6G,OAAOh4P,CAAC,CAAC,EAAEwyW,GAAGhsW,UAAU0lxB,gBAAgB,SAASllxB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKipF,SAAS70F,OAAOpP,IAAIgb,KAAKipF,SAASjkG,GAAG4b,CAAC,EAAEwrW,GAAGhsW,UAAUg8M,OAAO,WAAW,IAAI,IAAIx7M,EAAE,EAAEA,EAAEZ,KAAKipF,SAAS70F,OAAOwM,IAAI,GAAGZ,KAAKipF,SAASroF,KAAKgZ,EAAEw2vB,KAAK,OAAM,EAAG,OAAM,CAAE,EAAEhka,GAAGhsW,UAAU2lxB,sBAAsB,SAASnlxB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKipF,SAAS70F,OAAOpP,IAAIgb,KAAKipF,SAASjkG,KAAK40B,EAAEw2vB,OAAOpwwB,KAAKipF,SAASjkG,GAAG4b,EAAE,EAAEwrW,GAAGhsW,UAAU4lxB,OAAO,WAAW,OAAO,IAAIhmxB,KAAKipF,SAAS70F,MAAM,EAAEg4W,GAAGhsW,UAAU0R,MAAM,SAASlR,GAAG,GAAGA,EAAEqoF,SAAS70F,OAAO4L,KAAKipF,SAAS70F,OAAO,CAAC,IAAIpP,EAAE,IAAIsP,MAAM,GAAGm6B,KAAK,MAAMzpC,EAAEknX,GAAGx6O,IAAI1xH,KAAKipF,SAASijR,GAAGx6O,IAAI1sI,EAAEknX,GAAGv7G,MAAM/2O,EAAEw2vB,KAAKprxB,EAAEknX,GAAGt6G,OAAOh4O,EAAEw2vB,KAAKpwwB,KAAKipF,SAASjkG,CAAC,CAAC,IAAI,IAAI6b,EAAE,EAAEA,EAAEb,KAAKipF,SAAS70F,OAAOyM,IAAIb,KAAKipF,SAASpoF,KAAK+Y,EAAEw2vB,MAAMvvwB,EAAED,EAAEqoF,SAAS70F,SAAS4L,KAAKipF,SAASpoF,GAAGD,EAAEqoF,SAASpoF,GAAG,EAAEurW,GAAGhsW,UAAU6lxB,aAAa,WAAW,OAAOjmxB,KAAKipF,QAAQ,EAAEmjR,GAAGhsW,UAAUivB,KAAK,WAAW,GAAGrvB,KAAKipF,SAAS70F,QAAQ,EAAE,OAAO,KAAK,IAAIwM,EAAEZ,KAAKipF,SAASijR,GAAGv7G,MAAM3wP,KAAKipF,SAASijR,GAAGv7G,MAAM3wP,KAAKipF,SAASijR,GAAGt6G,OAAO5xP,KAAKipF,SAASijR,GAAGt6G,OAAOhxP,CAAC,EAAEwrW,GAAGhsW,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAE,IAAIqY,EAAE,OAAOjZ,KAAKipF,SAAS70F,OAAO,GAAGwM,EAAE2vH,OAAO32G,EAAEy2vB,iBAAiBrwwB,KAAKipF,SAASijR,GAAGv7G,QAAQ/vP,EAAE2vH,OAAO32G,EAAEy2vB,iBAAiBrwwB,KAAKipF,SAASijR,GAAGx6O,MAAM1xH,KAAKipF,SAAS70F,OAAO,GAAGwM,EAAE2vH,OAAO32G,EAAEy2vB,iBAAiBrwwB,KAAKipF,SAASijR,GAAGt6G,SAAShxP,EAAE5Z,UAAU,EAAEolX,GAAGhsW,UAAU8lxB,aAAa,SAAStlxB,EAAE5b,EAAE6b,GAAGb,KAAKipF,SAASijR,GAAGx6O,IAAI9wH,EAAEZ,KAAKipF,SAASijR,GAAGv7G,MAAM3rQ,EAAEgb,KAAKipF,SAASijR,GAAGt6G,OAAO/wP,CAAC,EAAEurW,GAAGhsW,UAAUvM,IAAI,SAAS+M,GAAG,OAAOA,EAAEZ,KAAKipF,SAAS70F,OAAO4L,KAAKipF,SAASroF,GAAGgZ,EAAEw2vB,IAAI,EAAEhka,GAAGhsW,UAAUo9c,OAAO,WAAW,OAAOx9c,KAAKipF,SAAS70F,OAAO,CAAC,EAAEg4W,GAAGhsW,UAAU+lxB,UAAU,WAAW,IAAI,IAAIvlxB,EAAE,EAAEA,EAAEZ,KAAKipF,SAAS70F,OAAOwM,IAAI,GAAGZ,KAAKipF,SAASroF,KAAKgZ,EAAEw2vB,KAAK,OAAM,EAAG,OAAM,CAAE,EAAEhka,GAAGhsW,UAAU6/tB,YAAY,WAAW,GAAG,IAAI9ruB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKiguB,YAAY/zX,GAAGx6O,GAAG9wH,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKipF,SAASjkG,GAAG6b,CAAC,CAAC,EAAEurW,GAAGhsW,UAAUgsD,KAAK,SAASxrD,GAAGZ,KAAKipF,SAAS,IAAI30F,MAAMsM,GAAG6tB,KAAK,MAAMzuB,KAAK8lxB,gBAAgBlswB,EAAEw2vB,KAAK,EAAEhka,GAAGhsW,UAAUgmxB,cAAc,SAASxlxB,EAAE5b,GAAG,OAAOgb,KAAKipF,SAASjkG,KAAK4b,EAAEqoF,SAASjkG,EAAE,EAAEonX,GAAGhsW,UAAUimxB,kBAAkB,SAASzlxB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKipF,SAAS70F,OAAOpP,IAAI,GAAGgb,KAAKipF,SAASjkG,KAAK4b,EAAE,OAAM,EAAG,OAAM,CAAE,EAAEwrW,GAAGhsW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7ia,GAAGhsW,UAAUwtG,SAAS,WAAW,OAAOw+P,EAAE,EAAE,IAAIU,GAAG,SAASlsW,IAAI,GAAGZ,KAAKsqI,IAAI,IAAIh2I,MAAM,GAAGm6B,KAAK,MAAM,IAAIt6B,UAAUC,QAAQ,GAAG+b,OAAO+0F,UAAU/wG,UAAU,IAAI,CAAC,IAAInP,EAAEmP,UAAU,GAAG6L,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGpnX,GAAGgb,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGpnX,EAAE,MAAM,GAAGmP,UAAU,aAAayM,EAAE,CAAC,IAAIC,EAAE1M,UAAU,GAAG6L,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGvrW,EAAEypI,IAAI,IAAItqI,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGvrW,EAAEypI,IAAI,GAAG,OAAO,GAAG,IAAIn2I,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGxyV,EAAEw2vB,MAAMpwwB,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGxyV,EAAEw2vB,MAAMpwwB,KAAKsqI,IAAIjlJ,GAAG46uB,YAAYlmtB,EAAE,MAAM,GAAG,IAAI5lB,UAAUC,OAAO,CAAC,IAAIuvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGzoS,EAAE1gF,EAAE2W,GAAGoG,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGzoS,EAAE1gF,EAAE2W,EAAE,MAAM,GAAG,IAAIzF,UAAUC,OAAO,CAAC,IAAIsvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAGvO,EAAEuO,UAAU,GAAGgM,EAAEhM,UAAU,GAAG6L,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGxyV,EAAEw2vB,KAAKx2vB,EAAEw2vB,KAAKx2vB,EAAEw2vB,MAAMpwwB,KAAKsqI,IAAI,GAAG,IAAI8hO,GAAGxyV,EAAEw2vB,KAAKx2vB,EAAEw2vB,KAAKx2vB,EAAEw2vB,MAAMpwwB,KAAKsqI,IAAI5mD,GAAGwisB,aAAa1twB,EAAE5yB,EAAEua,EAAE,CAAC,EAAE2sW,GAAG1sW,UAAUkmxB,iBAAiB,WAAW,IAAI1lxB,EAAE,EAAE,OAAOZ,KAAKsqI,IAAI,GAAG8xE,UAAUx7M,IAAIZ,KAAKsqI,IAAI,GAAG8xE,UAAUx7M,IAAIA,CAAC,EAAEksW,GAAG1sW,UAAU0lxB,gBAAgB,SAASllxB,EAAE5b,GAAGgb,KAAKsqI,IAAI1pI,GAAGklxB,gBAAgB9gyB,EAAE,EAAE8nX,GAAG1sW,UAAUg8M,OAAO,SAASx7M,GAAG,OAAOZ,KAAKsqI,IAAI1pI,GAAGw7M,QAAQ,EAAE0wJ,GAAG1sW,UAAU2lxB,sBAAsB,WAAW,GAAG,IAAI5xxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK+lxB,sBAAsB,EAAEnlxB,GAAGZ,KAAK+lxB,sBAAsB,EAAEnlxB,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKsqI,IAAItlJ,GAAG+gyB,sBAAsBllxB,EAAE,CAAC,EAAEisW,GAAG1sW,UAAU4lxB,OAAO,SAASplxB,GAAG,OAAOZ,KAAKsqI,IAAI1pI,GAAGolxB,QAAQ,EAAEl5a,GAAG1sW,UAAU0R,MAAM,SAASlR,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE,EAAEA,IAAI,OAAOgb,KAAKsqI,IAAItlJ,IAAI,OAAO4b,EAAE0pI,IAAItlJ,GAAGgb,KAAKsqI,IAAItlJ,GAAG,IAAIonX,GAAGxrW,EAAE0pI,IAAItlJ,IAAIgb,KAAKsqI,IAAItlJ,GAAG8sB,MAAMlR,EAAE0pI,IAAItlJ,GAAG,EAAE8nX,GAAG1sW,UAAUivB,KAAK,WAAWrvB,KAAKsqI,IAAI,GAAGj7G,OAAOrvB,KAAKsqI,IAAI,GAAGj7G,MAAM,EAAEy9U,GAAG1sW,UAAUugsB,YAAY,WAAW,GAAG,IAAIxssB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKsqI,IAAI1pI,GAAG/M,IAAIq4W,GAAGx6O,GAAG,CAAC,GAAG,IAAIv9H,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAO6L,KAAKsqI,IAAItlJ,GAAG6O,IAAIgN,EAAE,CAAC,EAAEisW,GAAG1sW,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAE,IAAIqY,EAAE,OAAO,OAAOjZ,KAAKsqI,IAAI,KAAK1pI,EAAE2vH,OAAO,MAAM3vH,EAAE2vH,OAAOvwH,KAAKsqI,IAAI,GAAGtjJ,aAAa,OAAOgZ,KAAKsqI,IAAI,KAAK1pI,EAAE2vH,OAAO,OAAO3vH,EAAE2vH,OAAOvwH,KAAKsqI,IAAI,GAAGtjJ,aAAa4Z,EAAE5Z,UAAU,EAAE8lX,GAAG1sW,UAAUo9c,OAAO,WAAW,GAAG,IAAIrpd,UAAUC,OAAO,OAAO4L,KAAKsqI,IAAI,GAAGkzU,UAAUx9c,KAAKsqI,IAAI,GAAGkzU,SAAS,GAAG,IAAIrpd,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKsqI,IAAI1pI,GAAG48c,QAAQ,CAAC,EAAE1wG,GAAG1sW,UAAU+lxB,UAAU,SAASvlxB,GAAG,OAAOZ,KAAKsqI,IAAI1pI,GAAGulxB,WAAW,EAAEr5a,GAAG1sW,UAAU6/tB,YAAY,WAAW,GAAG,IAAI9ruB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKsqI,IAAI1pI,GAAGq/tB,YAAY/zX,GAAGx6O,GAAG1sI,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKsqI,IAAIzpI,GAAGo/tB,YAAY56uB,EAAE00B,EAAE,CAAC,EAAE+yV,GAAG1sW,UAAUgmxB,cAAc,SAASxlxB,EAAE5b,GAAG,OAAOgb,KAAKsqI,IAAI,GAAG87oB,cAAcxlxB,EAAE0pI,IAAI,GAAGtlJ,IAAIgb,KAAKsqI,IAAI,GAAG87oB,cAAcxlxB,EAAE0pI,IAAI,GAAGtlJ,EAAE,EAAE8nX,GAAG1sW,UAAUimxB,kBAAkB,SAASzlxB,EAAE5b,GAAG,OAAOgb,KAAKsqI,IAAI1pI,GAAGylxB,kBAAkBrhyB,EAAE,EAAE8nX,GAAG1sW,UAAUmmxB,OAAO,SAAS3lxB,GAAGZ,KAAKsqI,IAAI1pI,GAAG48c,WAAWx9c,KAAKsqI,IAAI1pI,GAAG,IAAIwrW,GAAGpsW,KAAKsqI,IAAI1pI,GAAGqoF,SAAS,IAAI,EAAE6jR,GAAG1sW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnia,GAAG1sW,UAAUwtG,SAAS,WAAW,OAAOk/P,EAAE,EAAEA,GAAG05a,YAAY,SAAS5lxB,GAAG,IAAI,IAAI5b,EAAE,IAAI8nX,GAAGlzV,EAAEw2vB,MAAMvvwB,EAAE,EAAEA,EAAE,EAAEA,IAAI7b,EAAEi7uB,YAAYp/tB,EAAED,EAAE+/rB,YAAY9/rB,IAAI,OAAO7b,CAAC,EAAE,IAAI4nX,GAAG,WAAW5sW,KAAKymxB,SAAS,KAAKzmxB,KAAK0mxB,gBAAgB,EAAE1mxB,KAAK2mxB,OAAO,IAAI9iZ,GAAG7jY,KAAK4mxB,KAAK,IAAI/iZ,GAAG7jY,KAAK6mxB,OAAO,IAAI/5a,GAAGlzV,EAAEw2vB,MAAMpwwB,KAAK8mxB,MAAM,KAAK9mxB,KAAK+mxB,QAAQ,KAAK/mxB,KAAK80wB,OAAO,KAAK90wB,KAAK+0wB,OAAO,IAAIlxY,GAAG7jY,KAAKgnxB,iBAAiB,KAAK,IAAIpmxB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKgnxB,iBAAiBhiyB,EAAEgb,KAAKinxB,cAAcrmxB,GAAGZ,KAAKknxB,aAAa,EAAEt6a,GAAGxsW,UAAU8mxB,YAAY,WAAW,GAAG,OAAOlnxB,KAAK8mxB,MAAM,OAAO,KAAK,IAAI,IAAIlmxB,EAAE,IAAItM,MAAM0L,KAAK4mxB,KAAK7zwB,QAAQ0b,KAAK,MAAMzpC,EAAE,EAAEA,EAAEgb,KAAK4mxB,KAAK7zwB,OAAO/tB,IAAI4b,EAAE5b,GAAGgb,KAAK4mxB,KAAK/yxB,IAAI7O,GAAGgb,KAAK8mxB,MAAM9mxB,KAAKgnxB,iBAAiB3R,iBAAiBz0wB,GAAGZ,KAAK+mxB,QAAQr2Z,GAAG0oZ,MAAMp5wB,KAAK8mxB,MAAMhI,iBAAiB,EAAElya,GAAGxsW,UAAU+mxB,WAAW,WAAW,OAAO,IAAInnxB,KAAK6mxB,OAAOP,kBAAkB,EAAE15a,GAAGxsW,UAAU6mxB,cAAc,SAASrmxB,GAAGZ,KAAKymxB,SAAS7lxB,EAAE,IAAI5b,EAAE4b,EAAEC,GAAE,EAAG,EAAE,CAAC,GAAG,OAAO7b,EAAE,MAAM,IAAI2nX,GAAG,2BAA2B,GAAG3nX,EAAEoiyB,gBAAgBpnxB,KAAK,MAAM,IAAI2sW,GAAG,uDAAuD3nX,EAAE2txB,iBAAiB3ywB,KAAK2mxB,OAAOrzxB,IAAItO,GAAG,IAAIK,EAAEL,EAAEqiyB,WAAW/kZ,GAAG2lO,OAAO5inB,EAAEm4d,UAAUx9c,KAAKsnxB,WAAWjiyB,GAAG2a,KAAKunxB,UAAUviyB,EAAEg/xB,UAAUh/xB,EAAEo/xB,YAAYvjxB,GAAGA,GAAE,EAAGb,KAAKwnxB,YAAYxiyB,EAAEgb,MAAMhb,EAAEgb,KAAKynxB,QAAQziyB,EAAE,OAAOA,IAAIgb,KAAKymxB,SAAS,EAAE75a,GAAGxsW,UAAUsnxB,cAAc,WAAW,OAAO1nxB,KAAK8mxB,KAAK,EAAEl6a,GAAGxsW,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAK4mxB,KAAK/yxB,IAAI+M,EAAE,EAAEgsW,GAAGxsW,UAAUunxB,qBAAqB,WAAW3nxB,KAAK0mxB,eAAe,EAAE,IAAI9lxB,EAAEZ,KAAKymxB,SAAS,EAAE,CAAC,IAAIzhyB,EAAE4b,EAAE8qM,UAAUw4kB,WAAW0D,kBAAkB5nxB,MAAMhb,EAAEgb,KAAK0mxB,iBAAiB1mxB,KAAK0mxB,eAAe1hyB,GAAG4b,EAAEZ,KAAKynxB,QAAQ7mxB,EAAE,OAAOA,IAAIZ,KAAKymxB,UAAUzmxB,KAAK0mxB,gBAAgB,CAAC,EAAE95a,GAAGxsW,UAAUmnxB,UAAU,SAAS3mxB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEk+wB,iBAAiB,GAAG95xB,EAAE,CAAC,IAAI+0B,EAAE,EAAElZ,IAAIkZ,EAAE,GAAG,IAAI,IAAI4pD,EAAE5pD,EAAE4pD,EAAEt+E,EAAE+O,OAAOuvE,IAAI3jE,KAAK4mxB,KAAKtzxB,IAAIjO,EAAEs+E,GAAG,KAAK,CAAC,IAAI1gF,EAAEoC,EAAE+O,OAAO,EAAEyM,IAAI5d,EAAEoC,EAAE+O,OAAO,GAAG,IAAI,IAAIwF,EAAE3W,EAAE2W,GAAG,EAAEA,IAAIoG,KAAK4mxB,KAAKtzxB,IAAIjO,EAAEuU,GAAG,CAAC,EAAEgzW,GAAGxsW,UAAU2oM,OAAO,WAAW,OAAO/oM,KAAK+mxB,OAAO,EAAEn6a,GAAGxsW,UAAUulxB,YAAY,WAAW,IAAI/kxB,EAAEZ,KAAKymxB,SAAS,GAAG7lxB,EAAEojxB,UAAU2B,aAAY,GAAI/kxB,EAAEA,EAAE6mxB,gBAAgB7mxB,IAAIZ,KAAKymxB,SAAS,EAAE75a,GAAGxsW,UAAUynxB,cAAc,SAASjnxB,GAAG,IAAI5b,EAAEgb,KAAK0nxB,gBAAgB,IAAI1iyB,EAAEo2xB,sBAAsB5zxB,SAASoZ,GAAG,OAAM,EAAG,IAAI8vX,GAAGwoZ,cAAct4wB,EAAE5b,EAAE85xB,kBAAkB,OAAM,EAAG,IAAI,IAAIj+wB,EAAEb,KAAK+0wB,OAAO7ywB,WAAWrB,EAAE66wB,WAAY,GAAG76wB,EAAE/Y,OAAO+/xB,cAAcjnxB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEgsW,GAAGxsW,UAAU0nxB,QAAQ,SAASlnxB,GAAGZ,KAAK+0wB,OAAOzhxB,IAAIsN,EAAE,EAAEgsW,GAAGxsW,UAAU2nxB,QAAQ,WAAW,OAAO,OAAO/nxB,KAAK80wB,MAAM,EAAEloa,GAAGxsW,UAAUinxB,SAAS,WAAW,OAAOrnxB,KAAK6mxB,MAAM,EAAEj6a,GAAGxsW,UAAU8jxB,SAAS,WAAW,OAAOlkxB,KAAK2mxB,MAAM,EAAE/5a,GAAGxsW,UAAU4nxB,iBAAiB,WAAW,OAAOhoxB,KAAK0mxB,eAAe,GAAG1mxB,KAAK2nxB,uBAAuB3nxB,KAAK0mxB,cAAc,EAAE95a,GAAGxsW,UAAU6nxB,SAAS,WAAW,OAAOjoxB,KAAK80wB,MAAM,EAAEloa,GAAGxsW,UAAUknxB,WAAW,WAAW,GAAG,IAAInzxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKsnxB,WAAW1mxB,EAAE,GAAGZ,KAAKsnxB,WAAW1mxB,EAAE,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAmByM,EAAE1M,UAAU,GAAG9O,EAA5B8O,UAAU,GAAsBwssB,YAAY9/rB,EAAEqrW,GAAGt6G,OAAO,GAAGvsQ,IAAIu0B,EAAEw2vB,KAAK,OAAO,KAAK,GAAGpwwB,KAAK6mxB,OAAOlmF,YAAY9/rB,KAAK+Y,EAAEw2vB,KAAK,OAAOpwwB,KAAK6mxB,OAAO5mD,YAAYp/tB,EAAExb,GAAG,IAAI,CAAC,EAAEunX,GAAGxsW,UAAU8nxB,SAAS,SAAStnxB,GAAGZ,KAAK80wB,OAAOl0wB,EAAE,OAAOA,GAAGA,EAAEknxB,QAAQ9nxB,KAAK,EAAE4sW,GAAGxsW,UAAUkpM,UAAU,SAAS1oM,GAAG,IAAI,IAAI5b,EAAE,IAAIsP,MAAM0L,KAAK+0wB,OAAOhiwB,QAAQ0b,KAAK,MAAM5tB,EAAE,EAAEA,EAAEb,KAAK+0wB,OAAOhiwB,OAAOlS,IAAI7b,EAAE6b,GAAGb,KAAK+0wB,OAAOlhxB,IAAIgN,GAAG6mxB,gBAAgB,OAAO9mxB,EAAE20wB,cAAcv1wB,KAAK0nxB,gBAAgB1iyB,EAAE,EAAE4nX,GAAGxsW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEria,GAAGxsW,UAAUwtG,SAAS,WAAW,OAAOg/P,EAAE,EAAE,IAAIF,GAAG,SAAS9rW,GAAG,SAAS5b,IAAI,IAAIA,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAGyM,EAAEP,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUonxB,YAAY,SAAS5mxB,EAAE5b,GAAG4b,EAAEunxB,eAAenjyB,EAAE,EAAEA,EAAEob,UAAUqnxB,QAAQ,SAAS7mxB,GAAG,OAAOA,EAAEwnxB,YAAY,EAAEpjyB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAApX,CAAsX4nX,IAAIn5M,GAAG,SAAS7yJ,GAAG,SAAS5b,IAAI,IAAIA,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAGyM,EAAEP,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUioxB,kBAAkB,WAAW,IAAIznxB,EAAE,IAAIijY,GAAG7+Y,EAAEgb,KAAKymxB,SAAS,EAAE,CAAC,GAAG,OAAOzhyB,EAAEsjyB,iBAAiB,CAAC,IAAIznxB,EAAE,IAAI6rW,GAAG1nX,EAAEgb,KAAKgnxB,kBAAkBpmxB,EAAEtN,IAAIuN,EAAE,CAAC7b,EAAEA,EAAEyiyB,SAAS,OAAOziyB,IAAIgb,KAAKymxB,UAAU,OAAO7lxB,CAAC,EAAE5b,EAAEob,UAAUonxB,YAAY,SAAS5mxB,EAAE5b,GAAG4b,EAAE4mxB,YAAYxiyB,EAAE,EAAEA,EAAEob,UAAUmoxB,qCAAqC,WAAW,IAAI3nxB,EAAEZ,KAAKymxB,SAAS,GAAG7lxB,EAAE8qM,UAAUw4kB,WAAWsE,yBAAyBxoxB,MAAMY,EAAEA,EAAE6mxB,gBAAgB7mxB,IAAIZ,KAAKymxB,SAAS,EAAEzhyB,EAAEob,UAAUqnxB,QAAQ,SAAS7mxB,GAAG,OAAOA,EAAE6mxB,SAAS,EAAEziyB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAtuB,CAAwuB4nX,IAAIC,GAAG,WAAW,GAAG7sW,KAAK6mxB,OAAO,KAAK7mxB,KAAKyoxB,aAAY,EAAGzoxB,KAAK0oxB,YAAW,EAAG1oxB,KAAK2oxB,eAAc,EAAG3oxB,KAAK4oxB,YAAW,EAAG,IAAIz0xB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK6mxB,OAAOjmxB,CAAC,CAAC,EAAEisW,GAAGzsW,UAAU4kxB,WAAW,SAASpkxB,GAAGZ,KAAK4oxB,WAAWhoxB,CAAC,EAAEisW,GAAGzsW,UAAUulxB,YAAY,SAAS/kxB,GAAGZ,KAAKyoxB,YAAY7nxB,CAAC,EAAEisW,GAAGzsW,UAAUyoxB,UAAU,WAAW,OAAO7oxB,KAAK0oxB,UAAU,EAAE77a,GAAGzsW,UAAU0oxB,aAAa,WAAW,OAAO9oxB,KAAK2oxB,aAAa,EAAE97a,GAAGzsW,UAAU2oxB,SAAS,SAASnoxB,GAAGZ,KAAK6mxB,OAAOjmxB,CAAC,EAAEisW,GAAGzsW,UAAUinxB,SAAS,WAAW,OAAOrnxB,KAAK6mxB,MAAM,EAAEh6a,GAAGzsW,UAAU4oxB,WAAW,SAASpoxB,GAAGZ,KAAK0oxB,WAAW9nxB,EAAEZ,KAAK2oxB,eAAc,CAAE,EAAE97a,GAAGzsW,UAAU6oxB,SAAS,SAASroxB,GAAG0hY,GAAG2lO,OAAOjomB,KAAK6mxB,OAAOP,oBAAoB,EAAE,uBAAuBtmxB,KAAKkpxB,UAAUtoxB,EAAE,EAAEisW,GAAGzsW,UAAU+oxB,WAAW,WAAW,OAAOnpxB,KAAKyoxB,WAAW,EAAE57a,GAAGzsW,UAAU+kxB,UAAU,WAAW,OAAOnlxB,KAAK4oxB,UAAU,EAAE/7a,GAAGzsW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpia,GAAGzsW,UAAUwtG,SAAS,WAAW,OAAOi/P,EAAE,EAAE,IAAII,GAAG,SAASrsW,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAKopxB,OAAO,KAAKppxB,KAAK2mxB,OAAO,KAAK,IAAI3hyB,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKopxB,OAAOpkyB,EAAEgb,KAAK2mxB,OAAO9lxB,EAAEb,KAAK6mxB,OAAO,IAAI/5a,GAAG,EAAElzV,EAAEw2vB,KAAK,CAAC,OAAOxvwB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUipxB,uBAAuB,WAAW,IAAI,IAAIzoxB,EAAEZ,KAAKkkxB,WAAWA,WAAWhixB,WAAWtB,EAAE86wB,WAAY,GAAG96wB,EAAE9Y,OAAOk8xB,UAAUmF,aAAa,OAAM,EAAG,OAAM,CAAE,EAAEnkyB,EAAEob,UAAU+mxB,WAAW,WAAW,OAAO,IAAInnxB,KAAK6mxB,OAAOP,kBAAkB,EAAEthyB,EAAEob,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKopxB,MAAM,EAAEpkyB,EAAEob,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAEs3wB,QAAQ,QAAQl4wB,KAAKopxB,OAAO,SAASppxB,KAAK6mxB,OAAO,EAAE7hyB,EAAEob,UAAU8oxB,UAAU,SAAStoxB,GAAG,EAAE5b,EAAEob,UAAUmpxB,sBAAsB,SAAS3oxB,EAAE5b,GAAG,IAAI6b,EAAE+Y,EAAEw2vB,KAAK,GAAGvvwB,EAAEb,KAAK6mxB,OAAOlmF,YAAY37sB,IAAI4b,EAAEw7M,OAAOp3N,GAAG,CAAC,IAAIK,EAAEub,EAAE+/rB,YAAY37sB,GAAG6b,IAAI+Y,EAAEs2vB,WAAWrvwB,EAAExb,EAAE,CAAC,OAAOwb,CAAC,EAAE7b,EAAEob,UAAU2oxB,SAAS,WAAW,GAAG,IAAI50xB,UAAUC,OAAO,OAAOwM,EAAER,UAAU2oxB,SAASjoxB,MAAMd,KAAK7L,WAAW,IAAInP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAO6L,KAAK6mxB,OAAO7mxB,KAAK6mxB,OAAO,IAAI/5a,GAAG9nX,EAAE6b,GAAGb,KAAK6mxB,OAAO5mD,YAAYj7uB,EAAE6b,EAAE,EAAE7b,EAAEob,UAAU8jxB,SAAS,WAAW,OAAOlkxB,KAAK2mxB,MAAM,EAAE3hyB,EAAEob,UAAUknxB,WAAW,WAAW,GAAGnzxB,UAAU,aAAanP,EAAE,CAAC,IAAI4b,EAAEzM,UAAU,GAAG6L,KAAKsnxB,WAAW1mxB,EAAEimxB,OAAO,MAAM,GAAG1yxB,UAAU,aAAa24W,GAAG,IAAI,IAAIjsW,EAAE1M,UAAU,GAAG9O,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAI00B,EAAE/Z,KAAKupxB,sBAAsB1oxB,EAAExb,GAAG2a,KAAK6mxB,OAAOlmF,YAAYt7sB,KAAKu0B,EAAEw2vB,MAAMpwwB,KAAK6mxB,OAAO5mD,YAAY56uB,EAAE00B,EAAE,CAAC,EAAE/0B,EAAEob,UAAU9M,IAAI,SAASsN,GAAGZ,KAAK2mxB,OAAOx1rB,OAAOvwF,GAAGA,EAAEisa,QAAQ7sa,KAAK,EAAEhb,EAAEob,UAAUopxB,iBAAiB,SAAS5oxB,GAAG,GAAG,OAAOZ,KAAK6mxB,OAAO,OAAO,KAAK,IAAI7hyB,EAAE40B,EAAEw2vB,KAAK,OAAOpwwB,KAAK6mxB,SAAS7hyB,EAAEgb,KAAK6mxB,OAAOlmF,YAAY//rB,IAAI,IAAIC,EAAE,KAAK,GAAO7b,IAAQ40B,EAAEs2vB,SAASrvwB,EAAE+Y,EAAEq2vB,cAAuCpvwB,EAAE+Y,EAAEs2vB,SAASlwwB,KAAK6mxB,OAAO5mD,YAAYr/tB,EAAEC,EAAE,EAAE7b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAxwD,CAA0wD6nX,IAAIjB,GAAG,WAAW5rW,KAAKypxB,QAAQ,IAAItpxB,EAAEH,KAAK0pxB,SAAS,KAAK,IAAI9oxB,EAAEzM,UAAU,GAAG6L,KAAK0pxB,SAAS9oxB,CAAC,EAAEgrW,GAAGxrW,UAAUvF,KAAK,SAAS+F,GAAG,OAAOZ,KAAKypxB,QAAQ51xB,IAAI+M,EAAE,EAAEgrW,GAAGxrW,UAAUupxB,QAAQ,WAAW,GAAGx1xB,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAGnP,EAAEgb,KAAKypxB,QAAQ51xB,IAAI+M,GAAG,OAAO,OAAO5b,IAAIA,EAAEgb,KAAK0pxB,SAASE,WAAWhpxB,GAAGZ,KAAKypxB,QAAQnzpB,IAAI11H,EAAE5b,IAAIA,CAAC,CAAC,GAAGmP,UAAU,aAAa84W,GAAG,CAAC,IAAIpsW,EAAE1M,UAAU,GAAG9O,EAAE2a,KAAKypxB,QAAQ51xB,IAAIgN,EAAE8xwB,iBAAiB,OAAO,OAAOttxB,GAAG2a,KAAKypxB,QAAQnzpB,IAAIz1H,EAAE8xwB,gBAAgB9xwB,GAAGA,IAAIxb,EAAEiiyB,WAAWzmxB,GAAGxb,EAAE,CAAC,EAAEumX,GAAGxrW,UAAUkpxB,MAAM,SAAS1oxB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOwhyB,MAAM1oxB,EAAG,EAAEgrW,GAAGxrW,UAAU8B,SAAS,WAAW,OAAOlC,KAAKypxB,QAAQ7gwB,SAAS1mB,UAAU,EAAE0pW,GAAGxrW,UAAUwoB,OAAO,WAAW,OAAO5oB,KAAKypxB,QAAQ7gwB,QAAQ,EAAEgjV,GAAGxrW,UAAUypxB,iBAAiB,SAASjpxB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAEb,KAAKkC,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOzC,EAAEgiyB,WAAW1mF,YAAY//rB,KAAKgZ,EAAEs2vB,UAAUlrxB,EAAEsO,IAAIjO,EAAE,CAAC,OAAOL,CAAC,EAAE4mX,GAAGxrW,UAAU9M,IAAI,SAASsN,GAAG,IAAI5b,EAAE4b,EAAE+xwB,gBAAgB3ywB,KAAK2pxB,QAAQ3kyB,GAAGsO,IAAIsN,EAAE,EAAEgrW,GAAGxrW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAErja,GAAGxrW,UAAUwtG,SAAS,WAAW,OAAOg+P,EAAE,EAAE,IAAIl4M,GAAG,WAAW,EAAEy5M,GAAG,CAACzvQ,GAAG,CAACzmE,cAAa,GAAI6yvB,GAAG,CAAC7yvB,cAAa,GAAI8yvB,GAAG,CAAC9yvB,cAAa,GAAI+yvB,GAAG,CAAC/yvB,cAAa,IAAKy8H,GAAGtzJ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEv7mB,GAAGtzJ,UAAUwtG,SAAS,WAAW,OAAO8lD,EAAE,EAAEA,GAAGu2nB,WAAW,SAASrpxB,GAAG,OAAOA,IAAI8yJ,GAAGh2D,IAAI98F,IAAI8yJ,GAAGo2nB,EAAE,EAAEp2nB,GAAGw2nB,WAAW,SAAStpxB,EAAE5b,GAAG,OAAG4b,IAAI5b,GAAkB,IAAK4b,EAAE5b,EAAE,GAAG,CAAC,EAAE0uK,GAAGy2nB,gBAAgB,SAASvpxB,EAAE5b,GAAG,GAAG4b,IAAI5b,EAAE,OAAO4b,EAAE,GAAG,IAAKA,EAAE5b,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI6b,EAAED,EAAE5b,EAAE4b,EAAE5b,EAAE,OAAO,IAAI6b,GAAG,KAAKD,EAAE5b,EAAE4b,EAAE5b,GAAG,EAAE6b,CAAC,EAAE6yJ,GAAG02nB,cAAc,SAASxpxB,EAAE5b,GAAG,OAAOA,IAAI0uK,GAAGs2nB,GAAGppxB,IAAI8yJ,GAAGs2nB,IAAIppxB,IAAI8yJ,GAAGq2nB,GAAGnpxB,IAAI5b,GAAG4b,IAAI5b,EAAE,CAAC,EAAE0uK,GAAG22nB,SAAS,WAAW,GAAG,iBAAiBl2xB,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIyM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,GAAG,IAAIyM,GAAG,IAAI5b,EAAE,MAAM,IAAI7B,EAAE,2CAA2Cyd,EAAE,KAAK5b,EAAE,MAAM,OAAO4b,GAAG,EAAE5b,GAAG,EAAE0uK,GAAGh2D,GAAGg2D,GAAGs2nB,GAAGhlyB,GAAG,EAAE0uK,GAAGo2nB,GAAGp2nB,GAAGq2nB,EAAE,CAAC,GAAG51xB,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAa6kB,EAAE,CAAC,IAAInY,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,GAAG9O,EAAEkB,IAAIsa,EAAEta,GAAGlB,EAAE1B,IAAIkd,EAAEld,EAAE,MAAM,IAAIR,EAAE,wDAAwD0d,GAAG,OAAOxb,EAAEkB,GAAGsa,EAAEta,EAAElB,EAAE1B,GAAGkd,EAAEld,EAAE+vK,GAAGh2D,GAAGg2D,GAAGs2nB,GAAG3kyB,EAAE1B,GAAGkd,EAAEld,EAAE+vK,GAAGo2nB,GAAGp2nB,GAAGq2nB,EAAE,CAAC,EAAE58a,GAAGzvQ,GAAG7pG,IAAI,WAAW,OAAO,CAAC,EAAEs5W,GAAG28a,GAAGj2xB,IAAI,WAAW,OAAO,CAAC,EAAEs5W,GAAG48a,GAAGl2xB,IAAI,WAAW,OAAO,CAAC,EAAEs5W,GAAG68a,GAAGn2xB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiBkoI,GAAGy5M,IAAI,IAAID,GAAG,WAAW,GAAGltW,KAAKsqxB,MAAM,KAAKtqxB,KAAK6mxB,OAAO,KAAK7mxB,KAAK8sa,MAAM,KAAK9sa,KAAKuqxB,IAAI,KAAKvqxB,KAAKwqxB,IAAI,KAAKxqxB,KAAKyqxB,IAAI,KAAKzqxB,KAAK0qxB,IAAI,KAAK1qxB,KAAK2qxB,UAAU,KAAK,IAAIx2xB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKsqxB,MAAM1pxB,CAAC,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKsqxB,MAAMtlyB,EAAEgb,KAAKosD,KAAKvrD,EAAExb,GAAG2a,KAAK6mxB,OAAO,IAAI,MAAM,GAAG,IAAI1yxB,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKsqxB,MAAMvwwB,EAAE/Z,KAAKosD,KAAKuX,EAAE1gF,GAAG+c,KAAK6mxB,OAAOjtxB,CAAC,CAAC,EAAEszW,GAAG9sW,UAAUwqxB,iBAAiB,SAAShqxB,GAAG,OAAOZ,KAAKyqxB,MAAM7pxB,EAAE6pxB,KAAKzqxB,KAAK0qxB,MAAM9pxB,EAAE8pxB,IAAI,EAAE1qxB,KAAK2qxB,UAAU/pxB,EAAE+pxB,UAAU,EAAE3qxB,KAAK2qxB,UAAU/pxB,EAAE+pxB,WAAW,EAAEj6Z,GAAG2oZ,mBAAmBz4wB,EAAE2pxB,IAAI3pxB,EAAE4pxB,IAAIxqxB,KAAKwqxB,IAAI,EAAEt9a,GAAG9sW,UAAUyqxB,MAAM,WAAW,OAAO7qxB,KAAK0qxB,GAAG,EAAEx9a,GAAG9sW,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKuqxB,GAAG,EAAEr9a,GAAG9sW,UAAUysa,QAAQ,SAASjsa,GAAGZ,KAAK8sa,MAAMlsa,CAAC,EAAEssW,GAAG9sW,UAAUkpxB,MAAM,SAAS1oxB,GAAG,IAAI5b,EAAEQ,KAAK4vB,MAAMpV,KAAK0qxB,IAAI1qxB,KAAKyqxB,KAAK5pxB,EAAEb,KAAK4tG,WAAWgoT,UAAUvwa,EAAEwb,EAAEw2E,YAAY,KAAKt9D,EAAElZ,EAAEsoF,UAAU9jG,EAAE,GAAGub,EAAE0oxB,MAAM,KAAKvvwB,EAAE,KAAK/Z,KAAKuqxB,IAAI,MAAMvqxB,KAAKwqxB,IAAI,IAAIxqxB,KAAK2qxB,UAAU,IAAI3lyB,EAAE,MAAMgb,KAAK6mxB,OAAO,EAAE35a,GAAG9sW,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAK4qxB,iBAAiB5lyB,EAAE,EAAEkoX,GAAG9sW,UAAU0qxB,sBAAsB,WAAW,OAAO9qxB,KAAKwqxB,GAAG,EAAEt9a,GAAG9sW,UAAU2qxB,MAAM,WAAW,OAAO/qxB,KAAKyqxB,GAAG,EAAEv9a,GAAG9sW,UAAUinxB,SAAS,WAAW,OAAOrnxB,KAAK6mxB,MAAM,EAAE35a,GAAG9sW,UAAU4jxB,QAAQ,WAAW,OAAOhkxB,KAAKsqxB,KAAK,EAAEp9a,GAAG9sW,UAAU4qxB,YAAY,WAAW,OAAOhrxB,KAAK2qxB,SAAS,EAAEz9a,GAAG9sW,UAAUsrM,QAAQ,WAAW,OAAO1rM,KAAK8sa,KAAK,EAAE5/D,GAAG9sW,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAEpb,KAAK4vB,MAAMpV,KAAK0qxB,IAAI1qxB,KAAKyqxB,KAAKzlyB,EAAEgb,KAAK4tG,WAAWgoT,UAAU/0Z,EAAE7b,EAAEqyF,YAAY,KAAK,MAAM,KAAKryF,EAAEmkG,UAAUtoF,EAAE,GAAG,KAAKb,KAAKuqxB,IAAI,MAAMvqxB,KAAKwqxB,IAAI,IAAIxqxB,KAAK2qxB,UAAU,IAAI/pxB,EAAE,MAAMZ,KAAK6mxB,MAAM,EAAE35a,GAAG9sW,UAAU6qxB,aAAa,SAASrqxB,GAAG,EAAEssW,GAAG9sW,UAAUgsD,KAAK,SAASxrD,EAAE5b,GAAGgb,KAAKuqxB,IAAI3pxB,EAAEZ,KAAKwqxB,IAAIxlyB,EAAEgb,KAAKyqxB,IAAIzlyB,EAAEuB,EAAEqa,EAAEra,EAAEyZ,KAAK0qxB,IAAI1lyB,EAAErB,EAAEid,EAAEjd,EAAEqc,KAAK2qxB,UAAUj3nB,GAAG22nB,SAASrqxB,KAAKyqxB,IAAIzqxB,KAAK0qxB,KAAKpoZ,GAAG2lO,SAAS,IAAIjomB,KAAKyqxB,KAAK,IAAIzqxB,KAAK0qxB,KAAK,yCAAyC,EAAEx9a,GAAG9sW,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEg0V,GAAG9sW,UAAUwtG,SAAS,WAAW,OAAOs/P,EAAE,EAAE,IAAIlB,GAAG,SAASprW,GAAG,SAAS5b,IAAI,IAAIA,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAGyM,EAAEP,KAAKL,KAAKhb,GAAGgb,KAAKkrxB,WAAW,KAAKlrxB,KAAKyoxB,aAAY,EAAGzoxB,KAAK4oxB,YAAW,EAAG5oxB,KAAKmrxB,KAAK,KAAKnrxB,KAAK2rgB,MAAM,KAAK3rgB,KAAKorxB,SAAS,KAAKprxB,KAAKqrxB,UAAU,KAAKrrxB,KAAKsrxB,aAAa,KAAKtrxB,KAAKurxB,OAAO,CAAC,GAAG,KAAK,KAAKvrxB,KAAKkrxB,WAAWrqxB,EAAEA,EAAEb,KAAKosD,KAAKpnE,EAAE2txB,cAAc,GAAG3txB,EAAE2txB,cAAc,QAAQ,CAAC,IAAIttxB,EAAEL,EAAE+5xB,eAAe,EAAE/+wB,KAAKosD,KAAKpnE,EAAE2txB,cAActtxB,GAAGL,EAAE2txB,cAActtxB,EAAE,GAAG,CAAC2a,KAAKwrxB,sBAAsB,CAAC,OAAO5qxB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUgoxB,WAAW,WAAW,OAAOpoxB,KAAKorxB,QAAQ,EAAEpmyB,EAAEob,UAAUs2Z,SAAS,SAAS91Z,GAAG,OAAOZ,KAAKurxB,OAAO3qxB,EAAE,EAAE5b,EAAEob,UAAU4kxB,WAAW,SAASpkxB,GAAGZ,KAAK4oxB,WAAWhoxB,CAAC,EAAE5b,EAAEob,UAAUorxB,qBAAqB,WAAWxrxB,KAAK6mxB,OAAO,IAAI/5a,GAAG9sW,KAAKsqxB,MAAMjD,YAAYrnxB,KAAKkrxB,YAAYlrxB,KAAK6mxB,OAAOx3vB,MAAM,EAAErqC,EAAEob,UAAUqnxB,QAAQ,WAAW,OAAOznxB,KAAK2rgB,KAAK,EAAE3mhB,EAAEob,UAAU8xO,SAAS,SAAStxO,EAAE5b,GAAG,IAAI,MAAMgb,KAAKurxB,OAAO3qxB,IAAIZ,KAAKurxB,OAAO3qxB,KAAK5b,EAAE,MAAM,IAAI2nX,GAAG,+BAA+B3sW,KAAK2ywB,iBAAiB3ywB,KAAKurxB,OAAO3qxB,GAAG5b,CAAC,EAAEA,EAAEob,UAAUslxB,mBAAmB,WAAW,IAAI,IAAI9kxB,GAAE,EAAG5b,EAAE,EAAEA,EAAE,EAAEA,IAAIgb,KAAK6mxB,OAAOrpU,OAAOx4d,IAAIgb,KAAK6mxB,OAAOlmF,YAAY37sB,EAAEknX,GAAGv7G,QAAQ/2O,EAAEq2vB,UAAUjwwB,KAAK6mxB,OAAOlmF,YAAY37sB,EAAEknX,GAAGt6G,SAASh4O,EAAEq2vB,WAAWrvwB,GAAE,GAAI,OAAOA,CAAC,EAAE5b,EAAEob,UAAUqrxB,WAAW,SAAS7qxB,GAAGZ,KAAKorxB,SAASxqxB,CAAC,EAAE5b,EAAEob,UAAUkpxB,MAAM,SAAStkyB,GAAG4b,EAAER,UAAUkpxB,MAAMjpxB,KAAKL,KAAKhb,GAAGA,EAAEskyB,MAAM,IAAItpxB,KAAKurxB,OAAOr/a,GAAGv7G,MAAM,IAAI3wP,KAAKurxB,OAAOr/a,GAAGt6G,QAAQ5sQ,EAAEskyB,MAAM,KAAKtpxB,KAAK0rxB,gBAAgB,KAAK1rxB,KAAKyoxB,aAAazjyB,EAAEskyB,MAAM,YAAY,EAAEtkyB,EAAEob,UAAU+nxB,eAAe,SAASvnxB,GAAGZ,KAAKsrxB,aAAa1qxB,CAAC,EAAE5b,EAAEob,UAAUurxB,WAAW,WAAW,IAAI/qxB,EAAEZ,KAAK6mxB,OAAOb,OAAO,IAAIhmxB,KAAK6mxB,OAAOb,OAAO,GAAGhhyB,GAAGgb,KAAK6mxB,OAAOrpU,OAAO,IAAIx9c,KAAK6mxB,OAAOR,kBAAkB,EAAEzswB,EAAEu2vB,UAAUtvwB,GAAGb,KAAK6mxB,OAAOrpU,OAAO,IAAIx9c,KAAK6mxB,OAAOR,kBAAkB,EAAEzswB,EAAEu2vB,UAAU,OAAOvvwB,GAAG5b,GAAG6b,CAAC,EAAE7b,EAAEob,UAAUonxB,YAAY,SAAS5mxB,GAAGZ,KAAKqrxB,UAAUzqxB,CAAC,EAAE5b,EAAEob,UAAUkoxB,eAAe,WAAW,OAAOtoxB,KAAKsrxB,YAAY,EAAEtmyB,EAAEob,UAAUsrxB,cAAc,WAAW,IAAI9qxB,EAAEZ,KAAKsqxB,MAAMoB,gBAAgB,OAAO1rxB,KAAKkrxB,aAAatqxB,GAAGA,GAAGA,CAAC,EAAE5b,EAAEob,UAAUulxB,YAAY,SAAS/kxB,GAAGZ,KAAKyoxB,YAAY7nxB,CAAC,EAAE5b,EAAEob,UAAUikxB,OAAO,WAAW,OAAOrkxB,KAAKmrxB,IAAI,EAAEnmyB,EAAEob,UAAUgkxB,UAAU,WAAW,OAAOpkxB,KAAKkrxB,UAAU,EAAElmyB,EAAEob,UAAU4jxB,QAAQ,WAAW,OAAOhkxB,KAAKsqxB,KAAK,EAAEtlyB,EAAEob,UAAUwrxB,UAAU,SAAShrxB,GAAGZ,KAAKspxB,MAAM1oxB,GAAGA,EAAE0oxB,MAAM,KAAKtpxB,KAAKkrxB,WAAWlrxB,KAAKsqxB,MAAMhB,MAAM1oxB,GAAGZ,KAAKsqxB,MAAMuB,aAAajrxB,EAAE,EAAE5b,EAAEob,UAAU0rxB,OAAO,SAASlrxB,GAAGZ,KAAKmrxB,KAAKvqxB,CAAC,EAAE5b,EAAEob,UAAU2rxB,eAAe,SAASnrxB,GAAGZ,KAAKglxB,WAAWpkxB,GAAGZ,KAAKmrxB,KAAKnG,WAAWpkxB,EAAE,EAAE5b,EAAEob,UAAUmlxB,cAAc,SAAS3kxB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKgkxB,UAAU0H,gBAAgB1rxB,KAAKkrxB,aAAarqxB,GAAGA,GAAG,IAAIxb,EAAE,EAAEub,IAAIsrW,GAAGv7G,OAAOtrQ,GAAG,GAAG,IAAI00B,EAAEmyV,GAAGq3a,SAAS3ixB,GAAG+iE,EAAE3+E,EAAE6b,EAAExb,EAAE2a,KAAKkyO,SAAStxO,EAAE5b,GAAGgb,KAAKkyO,SAASn4N,EAAE4pD,EAAE,EAAE3+E,EAAEob,UAAUgnxB,YAAY,WAAW,OAAOpnxB,KAAKqrxB,SAAS,EAAErmyB,EAAEob,UAAU+oxB,WAAW,WAAW,OAAOnpxB,KAAKyoxB,WAAW,EAAEzjyB,EAAEob,UAAU4rxB,QAAQ,SAASprxB,GAAGZ,KAAK2rgB,MAAM/qgB,CAAC,EAAE5b,EAAEob,UAAU+kxB,UAAU,WAAW,OAAOnlxB,KAAK4oxB,UAAU,EAAE5jyB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,EAAEinyB,YAAY,SAASrrxB,EAAE5b,GAAG,OAAO4b,IAAIgZ,EAAEu2vB,UAAUnrxB,IAAI40B,EAAEq2vB,SAAS,EAAErvwB,IAAIgZ,EAAEq2vB,UAAUjrxB,IAAI40B,EAAEu2vB,UAAU,EAAE,CAAC,EAAEnrxB,CAAC,CAA7gG,CAA+gGkoX,IAAInxV,GAAG,WAAW,EAAEA,GAAG3b,UAAUwpxB,WAAW,SAAShpxB,GAAG,OAAO,IAAIqsW,GAAGrsW,EAAE,KAAK,EAAEmb,GAAG3b,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAElzvB,GAAG3b,UAAUwtG,SAAS,WAAW,OAAO7xF,EAAE,EAAE,IAAI2oX,GAAG,WAAW,GAAG1kY,KAAK2mxB,OAAO,IAAI9iZ,GAAG7jY,KAAK4kxB,OAAO,KAAK5kxB,KAAKksxB,aAAa,IAAIroZ,GAAG,IAAI1vY,UAAUC,OAAO4L,KAAK4kxB,OAAO,IAAIh5a,GAAG,IAAI7vV,SAAS,GAAG,IAAI5nB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK4kxB,OAAO,IAAIh5a,GAAGhrW,EAAE,CAAC,EAAE8jY,GAAGtkY,UAAU+rxB,WAAW,SAASvrxB,GAAGA,EAAEs3wB,QAAQ,UAAU,IAAI,IAAIlzxB,EAAE,EAAEA,EAAEgb,KAAK2mxB,OAAO5zwB,OAAO/tB,IAAI,CAAC4b,EAAEs3wB,QAAQ,QAAQlzxB,EAAE,KAAK,IAAI6b,EAAEb,KAAK2mxB,OAAO9yxB,IAAI7O,GAAG6b,EAAEyoxB,MAAM1oxB,GAAGC,EAAEurxB,OAAO9C,MAAM1oxB,EAAE,CAAC,EAAE8jY,GAAGtkY,UAAUvF,KAAK,SAAS+F,GAAG,OAAOZ,KAAK4kxB,OAAO/pxB,KAAK+F,EAAE,EAAE8jY,GAAGtkY,UAAUupxB,QAAQ,WAAW,GAAGx1xB,UAAU,aAAa84W,GAAG,CAAC,IAAIrsW,EAAEzM,UAAU,GAAG,OAAO6L,KAAK4kxB,OAAO+E,QAAQ/oxB,EAAE,CAAC,GAAGzM,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG,OAAO6L,KAAK4kxB,OAAO+E,QAAQ3kyB,EAAE,CAAC,EAAE0/Y,GAAGtkY,UAAUisxB,gBAAgB,WAAW,OAAOrsxB,KAAK4kxB,OAAO1ixB,UAAU,EAAEwiY,GAAGtkY,UAAUksxB,wBAAwB,WAAW,IAAI,IAAI1rxB,EAAEZ,KAAK4kxB,OAAO1ixB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOo8xB,WAAWoI,yBAA0B,EAAE5nZ,GAAGtkY,UAAUmsxB,aAAa,SAAS3rxB,GAAGyZ,EAAEovF,IAAIyuqB,QAAQt3wB,EAAE,EAAE8jY,GAAGtkY,UAAUosxB,eAAe,SAAS5rxB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK4kxB,OAAO/pxB,KAAK7V,GAAG,GAAG,OAAO6b,EAAE,OAAM,EAAG,IAAIxb,EAAEwb,EAAEwmxB,WAAW,OAAO,OAAOhiyB,GAAGA,EAAEs7sB,YAAY//rB,KAAKgZ,EAAEs2vB,QAAQ,EAAExrY,GAAGtkY,UAAUqsxB,qBAAqB,WAAW,IAAI,IAAI7rxB,EAAEZ,KAAK4kxB,OAAO1ixB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOo8xB,WAAWuI,sBAAuB,EAAE/nZ,GAAGtkY,UAAUssxB,qBAAqB,SAAS9rxB,EAAE5b,EAAE6b,EAAExb,GAAG,QAAQub,EAAEmnN,OAAOlnN,IAAK6vX,GAAG2oZ,mBAAmBz4wB,EAAE5b,EAAEK,KAAKqrY,GAAG0lZ,WAAW1inB,GAAG22nB,SAASzpxB,EAAE5b,KAAK0uK,GAAG22nB,SAASxpxB,EAAExb,EAAG,EAAEq/Y,GAAGtkY,UAAUusxB,YAAY,WAAW,OAAO3sxB,KAAKksxB,YAAY,EAAExnZ,GAAGtkY,UAAUwsxB,WAAW,SAAShsxB,GAAGyZ,EAAEovF,IAAI6/qB,MAAM1oxB,EAAE,EAAE8jY,GAAGtkY,UAAUysxB,gBAAgB,WAAW,OAAO7sxB,KAAK2mxB,OAAOzkxB,UAAU,EAAEwiY,GAAGtkY,UAAU0sxB,wBAAwB,SAASlsxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAEb,KAAK2mxB,OAAO5zwB,OAAOlS,IAAI,CAAC,IAAIxb,EAAE2a,KAAK2mxB,OAAO9yxB,IAAIgN,GAAGkZ,EAAE10B,EAAEy5xB,iBAAiB,GAAG9+wB,KAAK0sxB,qBAAqB9rxB,EAAE5b,EAAE+0B,EAAE,GAAGA,EAAE,IAAI,OAAO10B,EAAE,GAAG2a,KAAK0sxB,qBAAqB9rxB,EAAE5b,EAAE+0B,EAAEA,EAAE3lB,OAAO,GAAG2lB,EAAEA,EAAE3lB,OAAO,IAAI,OAAO/O,CAAC,CAAC,OAAO,IAAI,EAAEq/Y,GAAGtkY,UAAU2sxB,WAAW,SAASnsxB,GAAGZ,KAAK2mxB,OAAOrzxB,IAAIsN,EAAE,EAAE8jY,GAAGtkY,UAAU4sxB,YAAY,SAASpsxB,GAAG,IAAI,IAAI5b,EAAEgb,KAAK2sxB,cAAczqxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO,GAAG+Y,EAAEmjxB,YAAYpjxB,EAAE,OAAOC,CAAC,CAAC,OAAO,IAAI,EAAE6jY,GAAGtkY,UAAU6sxB,SAAS,SAASrsxB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOkY,KAAK2mxB,OAAOrzxB,IAAIuN,GAAG,IAAIxb,EAAE,IAAI2mX,GAAGnrW,GAAE,GAAIkZ,EAAE,IAAIiyV,GAAGnrW,GAAE,GAAIxb,EAAEymyB,OAAO/xwB,GAAGA,EAAE+xwB,OAAOzmyB,GAAG2a,KAAK1M,IAAIjO,GAAG2a,KAAK1M,IAAIymB,EAAE,CAAC,EAAE2qX,GAAGtkY,UAAU9M,IAAI,SAASsN,GAAGZ,KAAK4kxB,OAAOtxxB,IAAIsN,GAAGZ,KAAKksxB,aAAa54xB,IAAIsN,EAAE,EAAE8jY,GAAGtkY,UAAUwlxB,SAAS,WAAW,OAAO5lxB,KAAK4kxB,OAAOh8vB,QAAQ,EAAE87W,GAAGtkY,UAAUkkxB,SAAS,SAAS1jxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAEb,KAAK2mxB,OAAO5zwB,OAAOlS,IAAI,CAAC,IAAIxb,EAAE2a,KAAK2mxB,OAAO9yxB,IAAIgN,GAAGkZ,EAAE10B,EAAEy5xB,iBAAiB,GAAGl+wB,EAAEmnN,OAAOhuM,EAAE,KAAK/0B,EAAE+iO,OAAOhuM,EAAE,IAAI,OAAO10B,CAAC,CAAC,OAAO,IAAI,EAAEq/Y,GAAGtkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEvqY,GAAGtkY,UAAUwtG,SAAS,WAAW,OAAO82R,EAAE,EAAEA,GAAG4nZ,wBAAwB,SAAS1rxB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOo8xB,WAAWoI,yBAA0B,EAAE,IAAI7gb,GAAG,WAAWzrW,KAAKgnxB,iBAAiB,KAAKhnxB,KAAKktxB,WAAW,IAAIrpZ,GAAG,IAAIjjY,EAAEzM,UAAU,GAAG6L,KAAKgnxB,iBAAiBpmxB,CAAC,EAAE6qW,GAAGrrW,UAAU+sxB,mBAAmB,SAASvsxB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAEub,EAAEsB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAOiyB,EAAEgvL,SAASloM,EAAEvN,IAAIymB,GAAG/0B,EAAEsO,IAAIymB,EAAE,CAAC,EAAE0xV,GAAGrrW,UAAUgtxB,gBAAgB,SAASxsxB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOwhN,UAAUtpM,KAAKgnxB,kBAAkBhiyB,EAAEsO,IAAIjO,EAAE,CAAC,OAAOL,CAAC,EAAEymX,GAAGrrW,UAAUitxB,eAAe,SAASzsxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEkd,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,GAAG,OAAOzC,EAAE4iyB,WAAW,CAAC,IAAIluwB,EAAE/Z,KAAK6pM,uBAAuBxkN,EAAEub,GAAG,GAAG,OAAOmZ,EAAE,MAAM,IAAI4yV,GAAG,mCAAmCtnX,EAAEstxB,cAAc,IAAIttxB,EAAE6iyB,SAASnuwB,EAAE,CAAC,CAAC,EAAE0xV,GAAGrrW,UAAUktxB,sBAAsB,SAAS1sxB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,IAAIw+Y,GAAG9pX,EAAEnZ,EAAEsB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAO,GAAG67E,EAAEqktB,mBAAmB,EAAE,CAACrktB,EAAE4ktB,uCAAuC,IAAItlyB,EAAE0gF,EAAE0ktB,oBAAoBzuxB,EAAEoG,KAAKutxB,UAAUtqyB,GAAG,OAAO2W,GAAGoG,KAAKwtxB,kBAAkB5zxB,EAAE3W,GAAG+B,EAAEsO,IAAIsG,IAAIiH,EAAEkuwB,OAAO9rxB,EAAE,MAAMoC,EAAEiO,IAAIqwE,EAAE,CAAC,OAAOt+E,CAAC,EAAEomX,GAAGrrW,UAAUynxB,cAAc,SAASjnxB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKktxB,WAAWhrxB,WAAWld,EAAE02xB,WAAY,GAAG12xB,EAAE8C,OAAO+/xB,cAAcjnxB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE6qW,GAAGrrW,UAAUqtxB,sBAAsB,SAAS7sxB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,GAAGzC,EAAE8jyB,cAAc9jyB,EAAEgiyB,WAAW7pU,UAAU,OAAOn4d,EAAE+hyB,cAAc,CAAC,IAAIrtwB,EAAE,IAAI05I,GAAGpuK,EAAE2a,KAAKgnxB,kBAAkBhiyB,EAAEsO,IAAIymB,GAAGA,EAAE4rwB,aAAa,CAAC,CAAC,OAAO3gyB,CAAC,EAAEymX,GAAGrrW,UAAUotxB,kBAAkB,SAAS5sxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEkd,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOzC,EAAE0jN,UAAU1jN,EAAE6iyB,SAAStnxB,EAAE,CAAC,EAAE6qW,GAAGrrW,UAAUstxB,YAAY,WAAW,OAAO1txB,KAAKotxB,gBAAgBptxB,KAAKktxB,WAAW,EAAEzhb,GAAGrrW,UAAUypM,uBAAuB,SAASjpM,EAAE5b,GAAG,IAAI,IAAI6b,EAAED,EAAE8mxB,gBAAgBriyB,EAAEwb,EAAEu6wB,sBAAsBrhwB,EAAElZ,EAAEk/wB,eAAe,GAAGp8sB,EAAE,KAAK1gF,EAAE,KAAK2W,EAAE5U,EAAEkd,WAAWtI,EAAE8hxB,WAAW,CAAC,IAAIh4rB,EAAE9pF,EAAE9R,OAAO0wB,EAAEkrE,EAAEgksB,gBAAgB9hyB,EAAE4yB,EAAE4iwB,sBAAsB,OAAOz3sB,IAAI1gF,EAAE0gF,EAAE+jtB,gBAAgBtM,uBAAuB,IAAIj7wB,GAAE,EAAGva,EAAE4B,SAASnC,IAAIqrY,GAAGwoZ,cAAcn/vB,EAAEvB,EAAEsmwB,oBAAoB3+wB,GAAE,GAAIA,IAAI,OAAOwjE,GAAG1gF,EAAEuE,SAAS5B,MAAM+9E,EAAE+f,EAAE,CAAC,OAAO/f,CAAC,EAAE8nS,GAAGrrW,UAAUmtxB,UAAU,SAAS3sxB,GAAG,IAAI,IAAI5b,EAAE,EAAE6b,EAAE,KAAKxb,EAAEub,EAAEsB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAOiyB,EAAEgvL,WAAWloM,EAAEkZ,EAAE/0B,IAAI,CAAC,OAAOs9Y,GAAG2lO,OAAOjjnB,GAAG,EAAE,4CAA4C6b,CAAC,EAAE4qW,GAAGrrW,UAAU9M,IAAI,WAAW,GAAG,IAAIa,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK1M,IAAIsN,EAAE+rxB,cAAc/rxB,EAAEglxB,WAAW,MAAM,GAAG,IAAIzxxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAkBuwY,GAAG4nZ,wBAAhBn4xB,UAAU,IAAiC,IAAI9O,EAAE2a,KAAKytxB,sBAAsBzoyB,GAAG+0B,EAAE,IAAI8pX,GAAGlgU,EAAE3jE,KAAKstxB,sBAAsBjoyB,EAAE2a,KAAKktxB,WAAWnzwB,GAAG/Z,KAAKmtxB,mBAAmBxptB,EAAE3jE,KAAKktxB,WAAWnzwB,GAAG/Z,KAAKqtxB,eAAertxB,KAAKktxB,WAAWnzwB,EAAE,CAAC,EAAE0xV,GAAGrrW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExja,GAAGrrW,UAAUwtG,SAAS,WAAW,OAAO69P,EAAE,EAAE,IAAIe,GAAG,WAAW,EAAEA,GAAGpsW,UAAU2oG,UAAU,WAAW,EAAEyjQ,GAAGpsW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEzia,GAAGpsW,UAAUwtG,SAAS,WAAW,OAAO4+P,EAAE,EAAE,IAAI54M,GAAG,WAAW5zJ,KAAK2txB,QAAQ,KAAK3txB,KAAK4txB,MAAM,KAAK,IAAIhtxB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK2txB,QAAQ/sxB,EAAEZ,KAAK4txB,MAAM5oyB,CAAC,EAAE4uK,GAAGxzJ,UAAU6iF,QAAQ,WAAW,OAAOjjF,KAAK4txB,KAAK,EAAEh6nB,GAAGxzJ,UAAU2oG,UAAU,WAAW,OAAO/oG,KAAK2txB,OAAO,EAAE/5nB,GAAGxzJ,UAAU6uwB,YAAY,WAAW,MAAM,CAACzia,GAAGxnX,EAAE,EAAE4uK,GAAGxzJ,UAAUwtG,SAAS,WAAW,OAAOgmD,EAAE,EAAE,IAAIw5M,GAAG,WAAWptW,KAAKkyE,MAAM,KAAKlyE,KAAKouwB,OAAO,KAAKpuwB,KAAKkyE,MAAM,EAAElyE,KAAKouwB,OAAO,IAAIvqY,GAAG7jY,KAAKouwB,OAAO96wB,IAAI,KAAK,EAAE85W,GAAGhtW,UAAUm0oB,KAAK,WAAW,GAAGv0oB,KAAKw9M,UAAU,OAAO,KAAK,IAAI58M,EAAEZ,KAAKouwB,OAAOv6wB,IAAI,GAAG,OAAOmM,KAAKouwB,OAAOr6wB,IAAI,EAAEiM,KAAKouwB,OAAOv6wB,IAAImM,KAAKkyE,QAAQlyE,KAAKkyE,OAAO,EAAElyE,KAAK6txB,QAAQ,GAAGjtxB,CAAC,EAAEwsW,GAAGhtW,UAAU2S,KAAK,WAAW,OAAO/S,KAAKkyE,KAAK,EAAEk7R,GAAGhtW,UAAUytxB,QAAQ,SAASjtxB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,EAAEb,KAAKouwB,OAAOv6wB,IAAI+M,GAAG,EAAEA,GAAGZ,KAAKkyE,SAASltF,EAAE,EAAE4b,KAAKZ,KAAKkyE,OAAOlyE,KAAKouwB,OAAOv6wB,IAAI7O,EAAE,GAAG0jN,UAAU1oM,KAAKouwB,OAAOv6wB,IAAI7O,IAAI,GAAGA,IAAIgb,KAAKouwB,OAAOv6wB,IAAI7O,GAAG0jN,UAAU7nM,GAAG,GAAGD,EAAE5b,EAAEgb,KAAKouwB,OAAOr6wB,IAAI6M,EAAEZ,KAAKouwB,OAAOv6wB,IAAI7O,IAAIgb,KAAKouwB,OAAOr6wB,IAAI6M,EAAEC,EAAE,EAAEusW,GAAGhtW,UAAU26D,MAAM,WAAW/6D,KAAKkyE,MAAM,EAAElyE,KAAKouwB,OAAOrzsB,OAAO,EAAEqyS,GAAGhtW,UAAUo9M,QAAQ,WAAW,OAAO,IAAIx9M,KAAKkyE,KAAK,EAAEk7R,GAAGhtW,UAAU9M,IAAI,SAASsN,GAAGZ,KAAKouwB,OAAO96wB,IAAI,MAAM0M,KAAKkyE,OAAO,EAAE,IAAIltF,EAAEgb,KAAKkyE,MAAM,IAAIlyE,KAAKouwB,OAAOr6wB,IAAI,EAAE6M,GAAGA,EAAE8nM,UAAU1oM,KAAKouwB,OAAOv6wB,IAAIrO,KAAKwpxB,MAAMhqxB,EAAE,KAAK,EAAEA,GAAG,EAAEgb,KAAKouwB,OAAOr6wB,IAAI/O,EAAEgb,KAAKouwB,OAAOv6wB,IAAIrO,KAAKwpxB,MAAMhqxB,EAAE,KAAKgb,KAAKouwB,OAAOr6wB,IAAI/O,EAAE4b,EAAE,EAAEwsW,GAAGhtW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7ha,GAAGhtW,UAAUwtG,SAAS,WAAW,OAAOw/P,EAAE,EAAE,IAAIq3B,GAAG,WAAW,EAAEA,GAAGrkY,UAAU0txB,UAAU,SAASltxB,GAAG,EAAE6jY,GAAGrkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExqY,GAAGrkY,UAAUwtG,SAAS,WAAW,OAAO62R,EAAE,EAAE,IAAIp3B,GAAG,WAAW,EAAEA,GAAGjtW,UAAU+wF,OAAO,SAASvwF,EAAE5b,GAAG,EAAEqoX,GAAGjtW,UAAUwiC,OAAO,SAAShiC,EAAE5b,GAAG,EAAEqoX,GAAGjtW,UAAUgvkB,MAAM,WAAW,EAAE/hO,GAAGjtW,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5ha,GAAGjtW,UAAUwtG,SAAS,WAAW,OAAOy/P,EAAE,EAAE,IAAIlpV,GAAG,WAAW,GAAGnkB,KAAK+txB,iBAAiB,IAAIlqZ,GAAG7jY,KAAK2txB,QAAQ,KAAK3txB,KAAKwxY,OAAO,KAAK,IAAIr9Y,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKwxY,OAAO5wY,CAAC,CAAC,EAAEmsW,GAAG,CAACyia,iBAAiB,CAACv4uB,cAAa,IAAK9S,GAAG/jB,UAAU4txB,SAAS,WAAW,OAAOhuxB,KAAKwxY,MAAM,EAAErtX,GAAG/jB,UAAU2S,KAAK,WAAW,OAAO/S,KAAK+txB,iBAAiBh7wB,MAAM,EAAEoR,GAAG/jB,UAAU6txB,mBAAmB,WAAW,OAAOjuxB,KAAK+txB,gBAAgB,EAAE5pwB,GAAG/jB,UAAU8txB,kBAAkB,SAASttxB,GAAG0hY,GAAG2lO,OAAO,OAAOjomB,KAAK2txB,SAAS3txB,KAAK+txB,iBAAiBz6xB,IAAIsN,EAAE,EAAEujB,GAAG/jB,UAAUo9M,QAAQ,WAAW,OAAOx9M,KAAK+txB,iBAAiBvwkB,SAAS,EAAEr5L,GAAG/jB,UAAU2oG,UAAU,WAAW,OAAO,OAAO/oG,KAAK2txB,UAAU3txB,KAAK2txB,QAAQ3txB,KAAKmuxB,iBAAiBnuxB,KAAK2txB,OAAO,EAAExpwB,GAAG/jB,UAAU6uwB,YAAY,WAAW,MAAM,CAACzia,GAAGxnX,EAAE,EAAEm/B,GAAG/jB,UAAUwtG,SAAS,WAAW,OAAOzpF,EAAE,EAAE4oV,GAAGyia,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBrH,GAAG4oV,IAAI,IAAIlB,GAAG,WAAW,EAAEA,GAAGj9D,aAAa,WAAW,MAAM,CAAClvQ,QAAQ,SAAS9+B,EAAE5b,GAAG,OAAOA,EAAE0jN,UAAU9nM,EAAE,EAAE,EAAEirW,GAAGniX,IAAI,SAASkX,GAAG,OAAOirW,GAAGz4W,KAAKwN,GAAGA,EAAE/M,IAAI,EAAE,EAAEg4W,GAAGz4W,KAAK,SAASwN,EAAE5b,GAAG,IAAI6b,EAAED,EAAEkjN,UAAU9+N,EAAE4+Y,GAAGxwY,KAAKyN,EAAE7b,GAAG4+Y,GAAGxwY,KAAKyN,GAAG,IAAI,IAAIxb,EAAEub,EAAEsB,WAAW6X,EAAE,EAAE4pD,EAAE9iE,EAAEzM,OAAO2lB,EAAE4pD,EAAE5pD,IAAI10B,EAAEyC,OAAOzC,EAAE0O,IAAI8M,EAAEkZ,GAAG,EAAE8xV,GAAGuib,cAAc,SAASxtxB,GAAG,IAAI5b,EAAE,IAAI6+Y,GAAG,OAAO7+Y,EAAEsO,IAAIsN,GAAG5b,CAAC,EAAE,IAAIw7V,GAAG,WAAWxgV,KAAKquxB,YAAY,KAAKruxB,KAAKsuxB,YAAY,KAAKtuxB,KAAKuuxB,UAAU,KAAKvuxB,KAAKwuxB,cAAc,KAAK,IAAI5txB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKquxB,YAAYztxB,EAAEZ,KAAKsuxB,YAAYtpyB,EAAEgb,KAAKwuxB,cAAc3txB,EAAEb,KAAKuuxB,UAAUvuxB,KAAKzH,UAAU,EAAEioV,GAAGpgV,UAAUquxB,cAAc,SAAS7txB,EAAE5b,GAAG,IAAI6b,EAAE2/U,GAAGkuc,YAAY1uxB,KAAKquxB,aAAahpyB,EAAEm7V,GAAGkuc,YAAY1uxB,KAAKsuxB,aAAa,GAAGztxB,GAAGxb,EAAE,OAAOm7V,GAAG1xT,KAAK9uB,KAAKquxB,aAAa7tc,GAAG1xT,KAAK9uB,KAAKsuxB,cAActuxB,KAAK8nf,OAAO9nf,KAAKquxB,YAAYruxB,KAAKsuxB,YAAY1txB,EAAE5b,GAAG,OAAOgb,KAAK8nf,OAAO9nf,KAAKsuxB,YAAYtuxB,KAAKquxB,YAAYztxB,EAAE5b,GAAG,MAAM,GAAG6b,EAAE,OAAOb,KAAK8nf,OAAO9nf,KAAKquxB,YAAYruxB,KAAKsuxB,YAAY1txB,EAAE5b,GAAG,KAAK,GAAGK,EAAE,OAAO2a,KAAK8nf,OAAO9nf,KAAKsuxB,YAAYtuxB,KAAKquxB,YAAYztxB,EAAE5b,GAAG,KAAK,MAAM,IAAI7B,EAAE,iCAAiC,EAAEq9V,GAAGpgV,UAAUuuxB,SAAS,WAAW,QAAQnuc,GAAGkuc,YAAY1uxB,KAAKquxB,cAAc7tc,GAAGkuc,YAAY1uxB,KAAKsuxB,aAAa,EAAE9tc,GAAGpgV,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAKuuxB,UAAUvpyB,EAAEupyB,WAAW,EAAEvuxB,KAAKuuxB,UAAUvpyB,EAAEupyB,UAAU,EAAE,CAAC,EAAE/tc,GAAGpgV,UAAU0nf,OAAO,SAASlnf,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI,IAAI00B,EAAEnZ,EAAEqtxB,qBAAqB/rxB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAO7E,EAAE,IAAIu9V,GAAG78Q,EAAE3+E,EAAEgb,KAAKwuxB,eAAevryB,EAAE2ryB,cAAcvpyB,GAAGwb,EAAEvN,IAAIrQ,EAAE,CAAC,EAAEu9V,GAAGpgV,UAAUyuxB,aAAa,SAASjuxB,GAAG,OAAO,IAAIA,EAAEZ,KAAKquxB,YAAYruxB,KAAKsuxB,WAAW,EAAE9tc,GAAGpgV,UAAUwuxB,YAAY,WAAW,OAAO5uxB,KAAKuuxB,SAAS,EAAE/tc,GAAGpgV,UAAU7H,SAAS,WAAW,OAAOyH,KAAK2uxB,WAAW3uxB,KAAKwuxB,cAAcj2xB,SAASyH,KAAKquxB,YAAYruxB,KAAKsuxB,aAAatuxB,KAAKquxB,YAAYtlrB,YAAYxwG,SAASyH,KAAKsuxB,YAAYvlrB,YAAY,EAAEy3O,GAAGpgV,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEsnU,GAAGpgV,UAAUwtG,SAAS,WAAW,OAAO4yO,EAAE,EAAEA,GAAG1xT,KAAK,SAASluB,GAAG,OAAOA,EAAEmoG,YAAYqqqB,SAAS,EAAE5yb,GAAGkuc,YAAY,SAAS9txB,GAAG,OAAOA,aAAaujB,EAAE,EAAE,IAAIu8T,GAAG,SAAS9/U,IAAI,GAAGZ,KAAK22G,MAAM,KAAK32G,KAAK8uxB,QAAO,EAAG9uxB,KAAK+uxB,gBAAgB,IAAIlrZ,GAAG7jY,KAAKgvxB,cAAc,KAAK,IAAI76xB,UAAUC,OAAO,CAAC,IAAIpP,EAAE4b,EAAEquxB,sBAAsBjvxB,KAAKgvxB,cAAchqyB,CAAC,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAGmuY,GAAG2lO,OAAOpnmB,EAAE,EAAE,wCAAwCb,KAAKgvxB,cAAcnuxB,CAAC,CAAC,EAAEy/U,GAAG,CAAC4uc,aAAa,CAACj4vB,cAAa,GAAIu4uB,iBAAiB,CAACv4uB,cAAa,GAAIg4vB,sBAAsB,CAACh4vB,cAAa,IAAKypT,GAAGtgV,UAAU+uxB,gBAAgB,WAAW,OAAOnvxB,KAAKgvxB,aAAa,EAAEtuc,GAAGtgV,UAAUgvxB,SAAS,SAASxuxB,GAAG,OAAOA,EAAE/M,IAAI+M,EAAEmS,OAAO,EAAE,EAAE2tU,GAAGtgV,UAAU2S,KAAK,WAAW,GAAG,IAAI5e,UAAUC,OAAO,OAAO4L,KAAKw9M,UAAU,GAAGx9M,KAAK0piB,QAAQ1piB,KAAK+S,KAAK/S,KAAK22G,QAAQ,GAAG,IAAIxiH,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAE,EAAE5b,EAAEmP,UAAU,GAAG85xB,qBAAqB/rxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO+Y,aAAasjB,GAAGvjB,GAAGZ,KAAK+S,KAAKlS,GAAGA,aAAa+yJ,KAAKhzJ,GAAG,EAAE,CAAC,OAAOA,CAAC,CAAC,EAAE8/U,GAAGtgV,UAAU+iF,WAAW,SAASviF,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,KAAKxb,EAAEub,EAAEqtxB,qBAAqB/rxB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAOiyB,aAAa65I,IAAI75I,EAAEkpE,YAAYj+F,IAAI6b,EAAEkZ,EAAE,CAAC,OAAO,OAAOlZ,IAAID,EAAEqtxB,qBAAqBrrvB,OAAO/hC,IAAG,EAAG,EAAE6/U,GAAGtgV,UAAUivxB,UAAU,WAAW,GAAG,IAAIl7xB,UAAUC,OAAO,CAAC4L,KAAK0piB,QAAQ,IAAI9oiB,EAAEZ,KAAKqvxB,UAAUrvxB,KAAK22G,OAAO,OAAO,OAAO/1G,EAAE,IAAIijY,GAAGjjY,CAAC,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAI,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE,IAAIgjY,GAAGx+Y,EAAEL,EAAEipyB,qBAAqB/rxB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAO,GAAGiyB,aAAaoK,GAAG,CAAC,IAAIw/C,EAAE3jE,KAAKqvxB,UAAUt1wB,GAAG,OAAO4pD,GAAG9iE,EAAEvN,IAAIqwE,EAAE,MAAM5pD,aAAa65I,GAAG/yJ,EAAEvN,IAAIymB,EAAEkpE,WAAWq/S,GAAGozY,sBAAsB,CAAC,OAAO70wB,EAAEkS,QAAQ,EAAE,KAAKlS,CAAC,CAAC,EAAE6/U,GAAGtgV,UAAU+wF,OAAO,SAASvwF,EAAE5b,GAAGs9Y,GAAG2lO,QAAQjomB,KAAK8uxB,OAAO,0EAA0E9uxB,KAAK+uxB,gBAAgBz7xB,IAAI,IAAIsgK,GAAGhzJ,EAAE5b,GAAG,EAAE07V,GAAGtgV,UAAUkvxB,kBAAkB,WAAW,GAAG,IAAIn7xB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAI6+Y,GAAG,OAAO7jY,KAAKsvxB,kBAAkB1uxB,EAAEZ,KAAK22G,MAAM3xH,GAAGA,CAAC,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG,GAAGmuY,GAAG2lO,OAAOpnmB,GAAG,GAAGxb,EAAE2oyB,aAAantxB,EAAE,OAAOkZ,EAAEzmB,IAAIjO,GAAG,KAAK,IAAI,IAAIs+E,EAAEt+E,EAAE4oyB,qBAAqB/rxB,WAAWyhE,EAAE+3sB,WAAW,CAAC,IAAIz4xB,EAAE0gF,EAAE77E,OAAO7E,aAAakhC,GAAGnkB,KAAKsvxB,kBAAkBzuxB,EAAE5d,EAAE82B,IAAIuoX,GAAG2lO,OAAOhlnB,aAAa2wK,KAAK,IAAI/yJ,GAAGkZ,EAAEzmB,IAAIrQ,GAAG,CAAC,OAAO,IAAI,CAAC,EAAEy9V,GAAGtgV,UAAUgvkB,MAAM,WAAW,GAAG,IAAIj7kB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK0piB,QAAQ,IAAI1kjB,EAAE,IAAI6+Y,GAAG,OAAO7jY,KAAKw9M,WAAax9M,KAAKuvxB,kBAAkBn0Y,WAAWp7Y,KAAK22G,MAAM5N,YAAYnoG,IAAIZ,KAAKovkB,MAAMxukB,EAAEZ,KAAK22G,MAAM3xH,GAAxFA,CAA6F,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,GAAG6L,KAAK0piB,QAAQ1piB,KAAKw9M,UAAU,OAAO,KAAKx9M,KAAKuvxB,kBAAkBn0Y,WAAWp7Y,KAAK22G,MAAM5N,YAAYloG,IAAIb,KAAKovkB,MAAMvukB,EAAEb,KAAK22G,MAAMtxH,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,GAAGsmB,EAAEvmB,UAAU,GAAGswY,KAAKtwY,UAAU,aAAarK,QAAQqK,UAAU,aAAagwB,GAAG,IAAI,IAAIpK,EAAE5lB,UAAU,GAAkBlR,EAAEkR,UAAU,GAAGyF,EAA5BzF,UAAU,GAAsB85xB,qBAAqBvqsB,EAAE,EAAEA,EAAE9pF,EAAEmZ,OAAO2wE,IAAI,CAAC,IAAIlrE,EAAE5e,EAAE/F,IAAI6vF,GAAG1jF,KAAKuvxB,kBAAkBn0Y,WAAW5iY,EAAEuwF,YAAYhvF,KAAKvB,aAAa2L,GAAGnkB,KAAKovkB,MAAMr1jB,EAAEvB,EAAEv1B,GAAGu1B,aAAao7I,GAAG3wK,EAAE6qyB,UAAUt1wB,EAAEyqE,WAAWq/S,GAAGozY,uBAAuB,MAAM,GAAGh7vB,EAAEvmB,UAAU,GAAGyuY,KAAKzuY,UAAU,aAAarK,QAAQqK,UAAU,aAAagwB,GAAG,IAAI,IAAIv+B,EAAEuO,UAAU,GAAkB9Q,EAAE8Q,UAAU,GAAGuN,EAA5BvN,UAAU,GAAsB85xB,qBAAqBtsxB,EAAE,EAAEA,EAAED,EAAEqR,OAAOpR,IAAI,CAAC,IAAIpe,EAAEme,EAAE7N,IAAI8N,GAAG3B,KAAKuvxB,kBAAkBn0Y,WAAW73Z,EAAEwlH,YAAYnjH,KAAKrC,aAAa4gC,GAAGnkB,KAAKovkB,MAAMxplB,EAAErC,EAAEF,GAAGE,aAAaqwK,GAAGvwK,EAAEiQ,IAAI/P,EAAE0/F,WAAWq/S,GAAGozY,uBAAuB,CAAC,EAAEh1b,GAAGtgV,UAAUspiB,MAAM,WAAW,GAAG1piB,KAAK8uxB,OAAO,OAAO,KAAK9uxB,KAAK22G,MAAM32G,KAAK+uxB,gBAAgBvxkB,UAAUx9M,KAAK4pxB,WAAW,GAAG5pxB,KAAKwvxB,mBAAmBxvxB,KAAK+uxB,iBAAiB,GAAG/uxB,KAAK+uxB,gBAAgB,KAAK/uxB,KAAK8uxB,QAAO,CAAE,EAAEpuc,GAAGtgV,UAAUqvxB,QAAQ,WAAW,OAAOzvxB,KAAK0piB,QAAQ1piB,KAAK22G,KAAK,EAAE+pO,GAAGtgV,UAAUwiC,OAAO,WAAW,GAAG,IAAIzuC,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK0piB,UAAU1piB,KAAKuvxB,kBAAkBn0Y,WAAWp7Y,KAAK22G,MAAM5N,YAAYnoG,IAAIZ,KAAK4iC,OAAOhiC,EAAEZ,KAAK22G,MAAM3xH,EAAE,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAE3jE,KAAKmjF,WAAW99F,EAAE00B,GAAG,GAAG4pD,EAAE,OAAM,EAAG,IAAI,IAAI1gF,EAAE,KAAK2W,EAAEvU,EAAE4oyB,qBAAqB/rxB,WAAWtI,EAAE8hxB,WAAW,CAAC,IAAIh4rB,EAAE9pF,EAAE9R,OAAO,GAAGkY,KAAKuvxB,kBAAkBn0Y,WAAW13T,EAAEqlB,YAAYloG,IAAK6iF,aAAav/D,KAAKw/C,EAAE3jE,KAAK4iC,OAAO/hC,EAAE6iF,EAAE3pE,IAAK,CAAC92B,EAAEygG,EAAE,KAAK,CAAC,CAAC,OAAO,OAAOzgG,GAAGA,EAAEgryB,qBAAqBzwkB,WAAWn4N,EAAE4oyB,qBAAqBrrvB,OAAO3/C,GAAG0gF,CAAC,CAAC,EAAE+8Q,GAAGtgV,UAAUovxB,mBAAmB,SAAS5uxB,EAAE5b,GAAGs9Y,GAAG2lO,QAAQrnmB,EAAE48M,WAAW,IAAI38M,EAAEb,KAAK0vxB,uBAAuB9uxB,EAAE5b,EAAE,GAAG,OAAO,IAAI6b,EAAEkS,OAAOlS,EAAEhN,IAAI,GAAGmM,KAAKwvxB,mBAAmB3uxB,EAAE7b,EAAE,EAAE,EAAE07V,GAAGtgV,UAAU0hN,MAAM,WAAW,GAAG,IAAI3tN,UAAUC,OAAO,OAAO4L,KAAKw9M,UAAU,GAAGx9M,KAAK0piB,QAAQ1piB,KAAK8hN,MAAM9hN,KAAK22G,QAAQ,GAAG,IAAIxiH,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAE,EAAE5b,EAAEmP,UAAU,GAAG85xB,qBAAqB/rxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO,GAAG+Y,aAAasjB,GAAG,CAAC,IAAI9+B,EAAE2a,KAAK8hN,MAAMjhN,GAAGxb,EAAEub,IAAIA,EAAEvb,EAAE,CAAC,CAAC,OAAOub,EAAE,CAAC,CAAC,EAAE8/U,GAAGtgV,UAAUsvxB,uBAAuB,SAAS9uxB,EAAE5b,GAAGs9Y,GAAG2lO,QAAQrnmB,EAAE48M,WAAW,IAAI38M,EAAE,IAAIgjY,GAAGhjY,EAAEvN,IAAI0M,KAAK4pxB,WAAW5kyB,IAAI,IAAIK,EAAE,IAAIw+Y,GAAGjjY,GAAGirW,GAAGz4W,KAAK/N,EAAE2a,KAAK2vxB,iBAAiB,IAAI,IAAI51wB,EAAE10B,EAAE6c,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAOkY,KAAKovxB,SAASvuxB,GAAGotxB,qBAAqBl7wB,SAAS/S,KAAKmvxB,mBAAmBtuxB,EAAEvN,IAAI0M,KAAK4pxB,WAAW5kyB,IAAIgb,KAAKovxB,SAASvuxB,GAAGqtxB,kBAAkBvqtB,EAAE,CAAC,OAAO9iE,CAAC,EAAE6/U,GAAGtgV,UAAUo9M,QAAQ,WAAW,OAAOx9M,KAAK8uxB,OAAO9uxB,KAAK22G,MAAM6mG,UAAUx9M,KAAK+uxB,gBAAgBvxkB,SAAS,EAAEkjI,GAAGtgV,UAAU6uwB,YAAY,WAAW,MAAM,CAACjqxB,EAAE,EAAE07V,GAAGtgV,UAAUwtG,SAAS,WAAW,OAAO8yO,EAAE,EAAEA,GAAGkvc,eAAe,SAAShvxB,EAAE5b,GAAG,OAAO4b,EAAE5b,EAAE,EAAE4b,EAAE5b,GAAG,EAAE,CAAC,EAAEs7V,GAAG4uc,aAAar7xB,IAAI,WAAW,OAAO8wY,EAAE,EAAErkD,GAAGkvb,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAEysV,GAAG2uc,sBAAsBp7xB,IAAI,WAAW,OAAO,EAAE,EAAE/J,OAAO0hC,iBAAiBk1T,GAAGJ,IAAI,IAAIqkD,GAAG,WAAW,EAAEh6R,GAAG,WAAW,EAAEA,GAAGvqG,UAAU7H,SAAS,SAASqI,EAAE5b,GAAG,EAAE2lH,GAAGvqG,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEtkqB,GAAGvqG,UAAUwtG,SAAS,WAAW,OAAOjD,EAAE,EAAE,IAAIi6R,GAAG,SAAShkY,GAAG,SAASC,EAAE7b,GAAGA,EAAEA,GAAG6b,EAAEouxB,sBAAsBruxB,EAAEP,KAAKL,KAAKhb,EAAE,CAAC4b,IAAIC,EAAEX,UAAUU,IAAIC,EAAET,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYI,EAAE,IAAIxb,EAAE,CAACwqyB,YAAY,CAAC54vB,cAAa,GAAIu4uB,iBAAiB,CAACv4uB,cAAa,GAAI64vB,YAAY,CAAC74vB,cAAa,GAAI84vB,YAAY,CAAC94vB,cAAa,GAAI+4vB,aAAa,CAAC/4vB,cAAa,GAAIg4vB,sBAAsB,CAACh4vB,cAAa,IAAK,OAAOp2B,EAAET,UAAU6vxB,yCAAyC,SAASrvxB,EAAE5b,GAAGs9Y,GAAG2lO,OAAOrnmB,EAAExM,OAAO,GAAG,IAAI,IAAIyM,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAExM,OAAO/O,IAAIwb,EAAEkuwB,OAAO/uwB,KAAKkwxB,wCAAwCtvxB,EAAEvb,GAAGL,IAAI,OAAO6b,CAAC,EAAEA,EAAET,UAAUwpxB,WAAW,SAAShpxB,GAAG,OAAO,IAAIkvV,GAAGlvV,EAAE,EAAEC,EAAET,UAAU2S,KAAK,WAAW,OAAO,IAAI5e,UAAUC,OAAOwM,EAAER,UAAU2S,KAAK1S,KAAKL,MAAMY,EAAER,UAAU2S,KAAKjS,MAAMd,KAAK7L,UAAU,EAAE0M,EAAET,UAAU+wF,OAAO,WAAW,GAAG,IAAIh9F,UAAUC,OAAO,OAAOwM,EAAER,UAAU+wF,OAAOrwF,MAAMd,KAAK7L,WAAW,IAAInP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAGnP,EAAEo3N,SAAS,OAAO,KAAKx7M,EAAER,UAAU+wF,OAAO9wF,KAAKL,KAAKhb,EAAE6b,EAAE,EAAEA,EAAET,UAAUmvxB,gBAAgB,WAAW,OAAO1uxB,EAAEmvxB,YAAY,EAAEnvxB,EAAET,UAAU+vxB,eAAe,SAASvvxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAErb,KAAKwpxB,MAAMxpxB,KAAKsjE,KAAKloD,EAAEmS,OAAO/tB,IAAIK,EAAE,IAAIiP,MAAMtP,GAAGypC,KAAK,MAAM1U,EAAEnZ,EAAEsB,WAAWyhE,EAAE,EAAEA,EAAE3+E,EAAE2+E,IAAI,CAACt+E,EAAEs+E,GAAG,IAAIkgU,GAAG,IAAI,IAAI5gZ,EAAE,EAAE82B,EAAE2hwB,WAAWz4xB,EAAE4d,GAAG,CAAC,IAAIjH,EAAEmgB,EAAEjyB,OAAOzC,EAAEs+E,GAAGrwE,IAAIsG,GAAG3W,GAAG,CAAC,CAAC,OAAOoC,CAAC,EAAEwb,EAAET,UAAUgvkB,MAAM,WAAW,GAAG,IAAIj7kB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG,OAAOyM,EAAER,UAAUgvkB,MAAM/ukB,KAAKL,KAAKhb,EAAE,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAGyM,EAAER,UAAUgvkB,MAAM/ukB,KAAKL,KAAKa,EAAExb,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,GAAGsmB,EAAEvmB,UAAU,GAAGswY,KAAKtwY,UAAU,aAAarK,QAAQqK,UAAU,aAAagwB,GAAG,CAAC,IAAIpK,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyM,EAAER,UAAUgvkB,MAAM/ukB,KAAKL,KAAK+Z,EAAE4pD,EAAE1gF,EAAE,MAAM,GAAGy3B,EAAEvmB,UAAU,GAAGyuY,KAAKzuY,UAAU,aAAarK,QAAQqK,UAAU,aAAagwB,GAAG,CAAC,IAAIvqB,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAGyM,EAAER,UAAUgvkB,MAAM/ukB,KAAKL,KAAKpG,EAAE8pF,EAAElrE,EAAE,CAAC,EAAE3X,EAAET,UAAUuvxB,cAAc,WAAW,OAAO9uxB,EAAEkvxB,WAAW,EAAElvxB,EAAET,UAAU8vxB,wCAAwC,SAASlryB,EAAE6b,GAAG,OAAOD,EAAER,UAAUsvxB,uBAAuBrvxB,KAAKL,KAAKhb,EAAE6b,EAAE,EAAEA,EAAET,UAAUwiC,OAAO,WAAW,GAAG,IAAIzuC,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOyM,EAAER,UAAUwiC,OAAOviC,KAAKL,KAAKhb,EAAE6b,EAAE,CAAC,OAAOD,EAAER,UAAUwiC,OAAO9hC,MAAMd,KAAK7L,UAAU,EAAE0M,EAAET,UAAU0hN,MAAM,WAAW,OAAO,IAAI3tN,UAAUC,OAAOwM,EAAER,UAAU0hN,MAAMzhN,KAAKL,MAAMY,EAAER,UAAU0hN,MAAMhhN,MAAMd,KAAK7L,UAAU,EAAE0M,EAAET,UAAUsvxB,uBAAuB,SAAS9uxB,EAAE5b,GAAGs9Y,GAAG2lO,QAAQrnmB,EAAE48M,WAAW,IAAIn4N,EAAEG,KAAKwpxB,MAAMxpxB,KAAKsjE,KAAKloD,EAAEmS,OAAO/S,KAAKmvxB,oBAAoBp1wB,EAAE,IAAI8pX,GAAGjjY,GAAGirW,GAAGz4W,KAAK2mB,EAAElZ,EAAEivxB,aAAa,IAAInstB,EAAE3jE,KAAKmwxB,eAAep2wB,EAAEv0B,KAAKwpxB,MAAMxpxB,KAAKsjE,KAAKtjE,KAAK0vB,KAAK7vB,MAAM,OAAO2a,KAAKiwxB,yCAAyCtstB,EAAE3+E,EAAE,EAAE6b,EAAET,UAAUgwxB,iBAAiB,WAAW,GAAG,IAAIj8xB,UAAUC,OAAO,CAAC,GAAGsmB,EAAEvmB,UAAU,GAAGw2G,IAAI,CAAC,IAAI/pG,EAAEzM,UAAU,GAAGnP,EAAE,IAAIw7V,GAAGxgV,KAAKyvxB,UAAUzvxB,KAAKyvxB,UAAU7uxB,GAAG,OAAOZ,KAAKowxB,iBAAiBpryB,EAAE,CAAC,GAAGmP,UAAU,aAAaqsV,GAAG,CAAC,IAAIn7V,EAAE8O,UAAU,GAAG,OAAO6L,KAAKowxB,iBAAiB/qyB,EAAE8c,EAAEkR,kBAAkB,CAAC,MAAM,GAAG,IAAIlf,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa0M,GAAG6Z,EAAEvmB,UAAU,GAAGw2G,IAAI,CAAC,IAAI5wF,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAE,IAAIu9V,GAAGxgV,KAAKyvxB,UAAU11wB,EAAE01wB,UAAU9rtB,GAAG,OAAO3jE,KAAKowxB,iBAAiBntyB,EAAE,CAAC,GAAGkR,UAAU,aAAaqsV,IAAI,iBAAiBrsV,UAAU,GAAG,CAAC,IAAIyF,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAE,KAAK5yB,EAAE,IAAIwnX,GAAG,IAAIxnX,EAAE0N,IAAIsG,IAAIhU,EAAE43N,WAAW95H,EAAE,GAAG,CAAC,IAAIvjF,EAAEva,EAAE2upB,OAAOlxpB,EAAE8c,EAAEyuxB,cAAc,GAAGvryB,GAAGqgG,EAAE,MAAMvjF,EAAEwuxB,YAAYjrsB,EAAErgG,EAAEm1B,EAAErY,GAAGA,EAAEsuxB,cAAc7oyB,EAAE89F,EAAE,CAAC,MAAM,CAAClrE,EAAEq2wB,aAAa,GAAG5rsB,UAAUzqE,EAAEq2wB,aAAa,GAAG5rsB,UAAU,CAAC,MAAM,GAAG,IAAI9uF,UAAUC,OAAO,CAAC,IAAkC7Q,EAAE4Q,UAAU,GAAGxQ,EAAE,IAAIiwK,GAAjDz/J,UAAU,GAAKA,UAAU,IAAgCyN,EAAE,IAAI4+U,GAAGxgV,KAAKyvxB,UAAU9ryB,EAAEJ,GAAG,OAAOyc,KAAKowxB,iBAAiBxuxB,GAAG,EAAE,CAAC,EAAEf,EAAET,UAAU6uwB,YAAY,WAAW,MAAM,CAAC5ha,GAAGroX,EAAE,EAAE6b,EAAET,UAAUwtG,SAAS,WAAW,OAAO/sG,CAAC,EAAEA,EAAEwvxB,QAAQ,SAASzvxB,GAAG,OAAOC,EAAEyvxB,IAAI1vxB,EAAE2ywB,UAAU3ywB,EAAEyywB,UAAU,EAAExywB,EAAEyvxB,IAAI,SAAS1vxB,EAAE5b,GAAG,OAAO4b,EAAE5b,GAAG,CAAC,EAAE6b,EAAE0vxB,QAAQ,SAAS3vxB,GAAG,OAAOC,EAAEyvxB,IAAI1vxB,EAAE4ywB,UAAU5ywB,EAAE0ywB,UAAU,EAAEjuxB,EAAEwqyB,YAAYh8xB,IAAI,WAAW,OAAOi8V,EAAE,EAAEzqW,EAAEmqxB,iBAAiB37wB,IAAI,WAAW,OAAO,iBAAiB,EAAExO,EAAEyqyB,YAAYj8xB,IAAI,WAAW,MAAM,CAACo7wB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAE2kB,QAAQ,SAAS16C,EAAEK,GAAG,OAAOub,EAAEgvxB,eAAe/uxB,EAAEwvxB,QAAQrryB,EAAE+jH,aAAaloG,EAAEwvxB,QAAQhryB,EAAE0jH,aAAa,EAAE,EAAE1jH,EAAE0qyB,YAAYl8xB,IAAI,WAAW,MAAM,CAACo7wB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAE2kB,QAAQ,SAAS16C,EAAEK,GAAG,OAAOub,EAAEgvxB,eAAe/uxB,EAAE0vxB,QAAQvryB,EAAE+jH,aAAaloG,EAAE0vxB,QAAQlryB,EAAE0jH,aAAa,EAAE,EAAE1jH,EAAE2qyB,aAAan8xB,IAAI,WAAW,MAAM,CAACo7wB,YAAY,WAAW,MAAM,CAACruwB,EAAEsuxB,aAAa,EAAE9zY,WAAW,SAASx6Y,EAAE5b,GAAG,OAAO4b,EAAEw6Y,WAAWp2Z,EAAE,EAAE,EAAEK,EAAE4pyB,sBAAsBp7xB,IAAI,WAAW,OAAO,EAAE,EAAE/J,OAAO0hC,iBAAiB3qB,EAAExb,GAAGwb,CAAC,CAA9yI,CAAgzI6/U,IAAIoP,GAAG,SAASlvV,GAAG,SAAS5b,IAAI,IAAIA,EAAEmP,UAAU,GAAGyM,EAAEP,KAAKL,KAAKhb,EAAE,CAAC,OAAO4b,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU+txB,cAAc,WAAW,IAAI,IAAIvtxB,EAAE,KAAK5b,EAAEgb,KAAKiuxB,qBAAqB/rxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO,OAAO8Y,EAAEA,EAAE,IAAIolB,EAAEnlB,EAAEkoG,aAAanoG,EAAE8ywB,gBAAgB7ywB,EAAEkoG,YAAY,CAAC,OAAOnoG,CAAC,EAAE5b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAApb,CAAsbm/B,IAAI0gX,GAAG,WAAW,EAAEA,GAAGzkY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpqY,GAAGzkY,UAAUwtG,SAAS,WAAW,OAAOi3R,EAAE,EAAEA,GAAG2rZ,aAAa,SAAS5vxB,EAAE5b,GAAG,OAAO4b,EAAE5b,GAAG,EAAE4b,EAAE5b,EAAE,EAAE,CAAC,EAAE6/Y,GAAGnlW,QAAQ,SAAS9+B,EAAE5b,EAAE6b,GAAG,GAAG7b,EAAE0qxB,SAAS7uwB,GAAG,OAAO,EAAE,IAAIxb,EAAEw/Y,GAAG2rZ,aAAaxryB,EAAEuB,EAAEsa,EAAEta,GAAGwzB,EAAE8qX,GAAG2rZ,aAAaxryB,EAAErB,EAAEkd,EAAEld,GAAG,OAAOid,GAAG,KAAK,EAAE,OAAOikY,GAAG4rZ,aAAapryB,EAAE00B,GAAG,KAAK,EAAE,OAAO8qX,GAAG4rZ,aAAa12wB,EAAE10B,GAAG,KAAK,EAAE,OAAOw/Y,GAAG4rZ,aAAa12wB,GAAG10B,GAAG,KAAK,EAAE,OAAOw/Y,GAAG4rZ,cAAcpryB,EAAE00B,GAAG,KAAK,EAAE,OAAO8qX,GAAG4rZ,cAAcpryB,GAAG00B,GAAG,KAAK,EAAE,OAAO8qX,GAAG4rZ,cAAc12wB,GAAG10B,GAAG,KAAK,EAAE,OAAOw/Y,GAAG4rZ,cAAc12wB,EAAE10B,GAAG,KAAK,EAAE,OAAOw/Y,GAAG4rZ,aAAapryB,GAAG00B,GAAG,OAAOuoX,GAAGozY,qBAAqB,wBAAwB,CAAC,EAAE7wY,GAAG4rZ,aAAa,SAAS7vxB,EAAE5b,GAAG,OAAO4b,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAE5b,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAIggZ,GAAG,WAAWhlY,KAAK0wxB,WAAW,KAAK1wxB,KAAKy3J,MAAM,KAAKz3J,KAAK2wxB,aAAa,KAAK3wxB,KAAK4wxB,eAAe,KAAK5wxB,KAAK6wxB,YAAY,KAAK,IAAIjwxB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAK0wxB,WAAW9vxB,EAAEZ,KAAKy3J,MAAM,IAAIz+I,EAAEh0B,GAAGgb,KAAK2wxB,aAAa9vxB,EAAEb,KAAK4wxB,eAAevryB,EAAE2a,KAAK6wxB,aAAa7ryB,EAAE0qxB,SAAS9uwB,EAAE+xwB,cAAc9xwB,GAAG,EAAEmkY,GAAG5kY,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKy3J,KAAK,EAAEutO,GAAG5kY,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAE0oxB,MAAMtpxB,KAAKy3J,OAAO72J,EAAE0oxB,MAAM,YAAYtpxB,KAAK2wxB,aAAa,EAAE3rZ,GAAG5kY,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAK2wxB,aAAa3ryB,EAAE2ryB,cAAc,EAAE3wxB,KAAK2wxB,aAAa3ryB,EAAE2ryB,aAAa,EAAE3wxB,KAAKy3J,MAAMi4mB,SAAS1qxB,EAAEyyK,OAAO,EAAEotO,GAAGnlW,QAAQ1/B,KAAK4wxB,eAAe5wxB,KAAKy3J,MAAMzyK,EAAEyyK,MAAM,EAAEutO,GAAG5kY,UAAUu2wB,WAAW,SAAS/1wB,GAAG,OAAO,IAAIZ,KAAK2wxB,eAAe3wxB,KAAK6wxB,aAAa7wxB,KAAK2wxB,eAAe/vxB,CAAC,EAAEokY,GAAG5kY,UAAU0wxB,WAAW,WAAW,OAAO9wxB,KAAK6wxB,WAAW,EAAE7rZ,GAAG5kY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAE8rX,GAAG5kY,UAAUwtG,SAAS,WAAW,OAAOo3R,EAAE,EAAE,IAAID,GAAG,WAAW/kY,KAAK+wxB,SAAS,IAAI5wxB,EAAEH,KAAKsqxB,MAAM,KAAK,IAAI1pxB,EAAEzM,UAAU,GAAG6L,KAAKsqxB,MAAM1pxB,CAAC,EAAEmkY,GAAG3kY,UAAU4wxB,oBAAoB,WAAW,IAAIpwxB,EAAE,IAAI+hY,GAAG3iY,KAAKixxB,eAAe,IAAI,IAAIjsyB,EAAEgb,KAAKkC,WAAWrB,EAAE7b,EAAE8C,OAAO9C,EAAE02xB,WAAW,CAAC,IAAIr2xB,EAAEL,EAAE8C,OAAOkY,KAAKkxxB,mBAAmBrwxB,EAAExb,EAAEub,GAAGC,EAAExb,CAAC,CAAC,OAAOub,EAAEkywB,mBAAmB,EAAE/tY,GAAG3kY,UAAU+wxB,kBAAkB,WAAW,IAAIvwxB,EAAE,IAAIijY,GAAG7jY,KAAKoxxB,+BAA+BxwxB,GAAGZ,KAAKqxxB,kCAAkCzwxB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO0oxB,WAAWxwwB,KAAK1M,IAAI0M,KAAKsqxB,MAAM3X,cAAc9xwB,GAAGA,EAAE,CAAC,EAAEkkY,GAAG3kY,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAEs3wB,QAAQ,kBAAkB,IAAI,IAAIlzxB,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOwhyB,MAAM1oxB,EAAG,EAAEmkY,GAAG3kY,UAAUixxB,kCAAkC,SAASzwxB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKsqxB,MAAMv3wB,OAAO,EAAE/tB,IAAI,CAAC,IAAI6b,EAAEb,KAAKsqxB,MAAM3X,cAAc3txB,GAAGK,EAAE2a,KAAKsqxB,MAAM3X,cAAc3txB,EAAE,GAAG6b,EAAE6uwB,SAASrqxB,IAAIub,EAAEtN,IAAI,IAAI7P,EAAEuB,EAAE,GAAG,CAAC,EAAE+/Y,GAAG3kY,UAAU8wxB,mBAAmB,SAAStwxB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE2a,KAAKsqxB,MAAM3X,cAAc3txB,EAAE2ryB,cAAc52wB,EAAE/0B,EAAE8ryB,eAAe9ryB,EAAEyyK,MAAMi4mB,SAASrqxB,GAAGwb,EAAEvN,IAAI,IAAI0lB,EAAEpY,EAAE62J,QAAO,GAAI,IAAI,IAAI9zF,EAAE/iE,EAAE+vxB,aAAa,EAAEhttB,GAAG3+E,EAAE2ryB,aAAahttB,IAAI9iE,EAAEvN,IAAI0M,KAAKsqxB,MAAM3X,cAAchvsB,IAAI5pD,GAAGlZ,EAAEvN,IAAI,IAAI0lB,EAAEh0B,EAAEyyK,OAAO,EAAEstO,GAAG3kY,UAAU8B,SAAS,WAAW,OAAOlC,KAAK+wxB,SAASnowB,SAAS1mB,UAAU,EAAE6iY,GAAG3kY,UAAUkxxB,cAAc,SAAS1wxB,GAAGZ,KAAKixxB,eAAejxxB,KAAKmxxB,oBAAoB,IAAI,IAAInsyB,EAAEgb,KAAKkC,WAAWrB,EAAE7b,EAAE8C,OAAO9C,EAAE02xB,WAAW,CAAC,IAAIr2xB,EAAEL,EAAE8C,OAAOiyB,EAAE/Z,KAAKuxxB,gBAAgB1wxB,EAAExb,GAAGub,EAAEtN,IAAIymB,GAAGlZ,EAAExb,CAAC,CAAC,EAAE0/Y,GAAG3kY,UAAUoxxB,kBAAkB,SAAS5wxB,EAAE5b,EAAE6b,GAAG,IAAID,EAAE62J,MAAMi4mB,SAAS1qxB,EAAEyyK,OAAO,OAAM,EAAG,IAAIpyK,EAAEL,EAAE2ryB,aAAa/vxB,EAAE+vxB,aAAa,OAAO3ryB,EAAE8ryB,cAAczryB,IAAI,IAAIA,IAAIwb,EAAE,GAAGD,EAAE+vxB,aAAa,GAAE,EAAG,EAAE5rZ,GAAG3kY,UAAUgxxB,+BAA+B,SAASxwxB,GAAG,IAAI,IAAI5b,EAAE,IAAIsP,MAAM,GAAGm6B,KAAK,MAAM5tB,EAAEb,KAAKkC,WAAW7c,EAAEwb,EAAE/Y,OAAO+Y,EAAE66wB,WAAW,CAAC,IAAI3hwB,EAAElZ,EAAE/Y,OAAOkY,KAAKwxxB,kBAAkBnsyB,EAAE00B,EAAE/0B,IAAI4b,EAAEtN,IAAI,IAAI7P,EAAEuB,EAAE,KAAKK,EAAE00B,CAAC,CAAC,EAAEgrX,GAAG3kY,UAAU4jxB,QAAQ,WAAW,OAAOhkxB,KAAKsqxB,KAAK,EAAEvlZ,GAAG3kY,UAAU6wxB,aAAa,WAAW,IAAIrwxB,EAAEZ,KAAKsqxB,MAAMv3wB,OAAO,EAAE/S,KAAK1M,IAAI0M,KAAKsqxB,MAAM3X,cAAc,GAAG,GAAG3ywB,KAAK1M,IAAI0M,KAAKsqxB,MAAM3X,cAAc/xwB,GAAGA,EAAE,EAAEmkY,GAAG3kY,UAAUmxxB,gBAAgB,SAAS3wxB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAE2ryB,aAAa/vxB,EAAE+vxB,aAAa,EAAEtryB,EAAE2a,KAAKsqxB,MAAM3X,cAAc3txB,EAAE2ryB,cAAc52wB,EAAE/0B,EAAE8ryB,eAAe9ryB,EAAEyyK,MAAMi4mB,SAASrqxB,GAAG00B,GAAGlZ,IAAI,IAAI8iE,EAAE,IAAIrvE,MAAMuM,GAAG4tB,KAAK,MAAMxrC,EAAE,EAAE0gF,EAAE1gF,KAAK,IAAI+1B,EAAEpY,EAAE62J,OAAO,IAAI,IAAI79J,EAAEgH,EAAE+vxB,aAAa,EAAE/2xB,GAAG5U,EAAE2ryB,aAAa/2xB,IAAI+pE,EAAE1gF,KAAK+c,KAAKsqxB,MAAM3X,cAAc/4wB,GAAG,OAAOmgB,IAAI4pD,EAAE1gF,GAAG,IAAI+1B,EAAEh0B,EAAEyyK,QAAQ,IAAIytO,GAAGvhU,EAAE3jE,KAAKsqxB,MAAMp+iB,UAAU,EAAE64J,GAAG3kY,UAAU9M,IAAI,SAASsN,EAAE5b,GAAG,IAAI6b,EAAE,IAAImkY,GAAGhlY,KAAKsqxB,MAAM1pxB,EAAE5b,EAAEgb,KAAKsqxB,MAAMmH,iBAAiBzsyB,IAAIK,EAAE2a,KAAK+wxB,SAASl9xB,IAAIgN,GAAG,OAAO,OAAOxb,GAAGi9Y,GAAG2lO,OAAO5inB,EAAEoyK,MAAMi4mB,SAAS9uwB,GAAG,gDAAgDvb,IAAI2a,KAAK+wxB,SAASz6pB,IAAIz1H,EAAEA,GAAGA,EAAE,EAAEkkY,GAAG3kY,UAAUsxxB,2BAA2B,SAAS9wxB,GAAG,IAAI5b,EAAEgb,KAAKsqxB,MAAMxL,iBAAiBj+wB,EAAED,EAAE/M,IAAI,GAAG8+wB,cAAc,GAAG,IAAI9xwB,EAAE6uwB,SAAS1qxB,EAAE,IAAI,MAAM,IAAI0kG,EAAE,iCAAiC7oF,GAAG,IAAIxb,EAAEub,EAAE/M,IAAI+M,EAAEmS,OAAO,GAAG+rwB,iBAAiB/kwB,EAAE10B,EAAEA,EAAE+O,OAAO,GAAG,IAAI2lB,EAAE21vB,SAAS1qxB,EAAEA,EAAEoP,OAAO,IAAI,MAAM,IAAIs1F,EAAE,+BAA+B3vE,EAAE,EAAEgrX,GAAG3kY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAElqY,GAAG3kY,UAAUwtG,SAAS,WAAW,OAAOm3R,EAAE,EAAE,IAAII,GAAG,WAAW,EAAEA,GAAG/kY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9pY,GAAG/kY,UAAUwtG,SAAS,WAAW,OAAOu3R,EAAE,EAAEA,GAAGwsZ,OAAO,WAAW,GAAG,iBAAiBx9xB,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIyM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,GAAG,IAAIyM,GAAG,IAAI5b,EAAE,MAAM,IAAI7B,EAAE,yCAAyCyd,EAAE,KAAK5b,EAAE,MAAM,IAAI6b,EAAErb,KAAKM,IAAI8a,GAAGvb,EAAEG,KAAKM,IAAId,GAAG,OAAO4b,GAAG,EAAE5b,GAAG,EAAE6b,GAAGxb,EAAE,EAAE,EAAEwb,GAAGxb,EAAE,EAAE,EAAEL,GAAG,EAAE6b,GAAGxb,EAAE,EAAE,EAAEwb,GAAGxb,EAAE,EAAE,CAAC,CAAC,GAAG8O,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAa6kB,EAAE,CAAC,IAAIe,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAE0gF,EAAEp9E,EAAEwzB,EAAExzB,EAAEqT,EAAE+pE,EAAEhgF,EAAEo2B,EAAEp2B,EAAE,GAAG,IAAIV,GAAG,IAAI2W,EAAE,MAAM,IAAIzW,EAAE,sDAAsD42B,GAAG,OAAOorX,GAAGwsZ,OAAO1uyB,EAAE2W,EAAE,CAAC,EAAE,IAAIkrY,GAAG,WAAW,EAAEA,GAAG1kY,UAAU0+wB,eAAe,WAAW,EAAEh6Y,GAAG1kY,UAAU2S,KAAK,WAAW,EAAE+xX,GAAG1kY,UAAUuywB,cAAc,SAAS/xwB,GAAG,EAAEkkY,GAAG1kY,UAAU2yoB,SAAS,WAAW,EAAEjuQ,GAAG1kY,UAAU+yU,QAAQ,SAASvyU,GAAG,EAAEkkY,GAAG1kY,UAAU8rO,QAAQ,WAAW,EAAE44J,GAAG1kY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnqY,GAAG1kY,UAAUwtG,SAAS,WAAW,OAAOk3R,EAAE,EAAE,IAAIhwY,GAAG,WAAW,EAAEA,GAAGsL,UAAUwxxB,gBAAgB,SAAShxxB,EAAE5b,GAAG,EAAE8P,GAAGsL,UAAU6uwB,YAAY,WAAW,MAAM,CAACnqY,GAAG,EAAEhwY,GAAGsL,UAAUwtG,SAAS,WAAW,OAAO94G,EAAE,EAAE,IAAIowY,GAAG,WAAWllY,KAAK6xxB,UAAU,IAAI9sZ,GAAG/kY,MAAMA,KAAK4mxB,KAAK,KAAK5mxB,KAAK8oC,MAAM,KAAK,IAAIloC,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK4mxB,KAAKhmxB,EAAEZ,KAAK8oC,MAAM9jD,CAAC,EAAEkgZ,GAAG9kY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAK4mxB,IAAI,EAAE1hZ,GAAG9kY,UAAU2S,KAAK,WAAW,OAAO/S,KAAK4mxB,KAAKxyxB,MAAM,EAAE8wY,GAAG9kY,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAK4mxB,KAAKhmxB,EAAE,EAAEskY,GAAG9kY,UAAU2yoB,SAAS,WAAW,OAAO/yoB,KAAK4mxB,KAAK,GAAG7+jB,OAAO/nN,KAAK4mxB,KAAK5mxB,KAAK4mxB,KAAKxyxB,OAAO,GAAG,EAAE8wY,GAAG9kY,UAAUqxxB,iBAAiB,SAAS7wxB,GAAG,OAAOA,IAAIZ,KAAK4mxB,KAAKxyxB,OAAO,GAAG,EAAE4L,KAAK8xxB,WAAW9xxB,KAAK2ywB,cAAc/xwB,GAAGZ,KAAK2ywB,cAAc/xwB,EAAE,GAAG,EAAEskY,GAAG9kY,UAAU+yU,QAAQ,SAASvyU,GAAGZ,KAAK8oC,MAAMloC,CAAC,EAAEskY,GAAG9kY,UAAU0xxB,WAAW,SAASlxxB,EAAE5b,GAAG,OAAO4b,EAAE8uwB,SAAS1qxB,GAAG,EAAEmgZ,GAAGwsZ,OAAO/wxB,EAAE5b,EAAE,EAAEkgZ,GAAG9kY,UAAU8rO,QAAQ,WAAW,OAAOlsO,KAAK8oC,KAAK,EAAEo8V,GAAG9kY,UAAUwxxB,gBAAgB,WAAW,GAAG,IAAIz9xB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK+xxB,oBAAoBnxxB,EAAE5b,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAmB/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAE,IAAI3qD,EAAjD7kB,UAAU,GAA2C8ra,gBAAgBlmZ,IAAI/Z,KAAK4xxB,gBAAgBjutB,EAAEt+E,EAAE,CAAC,EAAE6/Y,GAAG9kY,UAAUpZ,SAAS,WAAW,OAAOozB,EAAEquL,aAAa,IAAIyiK,GAAGlrW,KAAK4mxB,MAAM,EAAE1hZ,GAAG9kY,UAAU4xxB,YAAY,WAAW,OAAOhyxB,KAAK6xxB,SAAS,EAAE3sZ,GAAG9kY,UAAU2xxB,oBAAoB,SAASnxxB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAEK,EAAEwb,EAAE,EAAE,GAAGxb,EAAE2a,KAAK4mxB,KAAKxyxB,OAAO,CAAC,IAAI2lB,EAAE/Z,KAAK4mxB,KAAKvhyB,GAAGub,EAAE8uwB,SAAS31vB,KAAKlZ,EAAExb,EAAE,CAAC,OAAO2a,KAAK6xxB,UAAUv+xB,IAAIsN,EAAEC,EAAE,EAAEqkY,GAAG9kY,UAAU6xxB,iBAAiB,SAASrxxB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEm2wB,qBAAqB1xxB,IAAI2a,KAAK4xxB,gBAAgBhxxB,EAAE5b,EAAE6b,EAAExb,EAAE,EAAE6/Y,GAAG9kY,UAAU6uwB,YAAY,WAAW,MAAM,CAACn6wB,GAAG,EAAEowY,GAAG9kY,UAAUwtG,SAAS,WAAW,OAAOs3R,EAAE,EAAEA,GAAGgtZ,mBAAmB,WAAW,GAAG,IAAI/9xB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAI6+Y,GAAG,OAAOqB,GAAGgtZ,mBAAmBtxxB,EAAE5b,GAAGA,CAAC,CAAC,GAAG,IAAImP,UAAUC,OAAO,IAAI,IAAmB/O,EAAE8O,UAAU,GAAG4lB,EAA5B5lB,UAAU,GAAsB+N,WAAW6X,EAAE2hwB,WAAY3hwB,EAAEjyB,OAAOkqyB,cAAcV,cAAcjsyB,EAAG,EAAE,IAAI4/Y,GAAG,WAAW,GAAGjlY,KAAKgoE,GAAG,KAAKhoE,KAAKulB,GAAG,KAAK,IAAIpxB,UAAUC,OAAO4L,KAAKgoE,GAAG,IAAIhvD,EAAEhZ,KAAKulB,GAAG,IAAIvM,OAAO,GAAG,IAAI7kB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKgoE,GAAG,IAAIhvD,EAAEpY,EAAEonE,IAAIhoE,KAAKulB,GAAG,IAAIvM,EAAEpY,EAAE2kB,GAAG,MAAM,GAAG,IAAIpxB,UAAUC,OAAO4L,KAAKgoE,GAAG7zE,UAAU,GAAG6L,KAAKulB,GAAGpxB,UAAU,QAAQ,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKgoE,GAAG,IAAIhvD,EAAEh0B,EAAE6b,GAAGb,KAAKulB,GAAG,IAAIvM,EAAE3zB,EAAE00B,EAAE,CAAC,EAAEsrX,GAAG,CAACmqY,iBAAiB,CAACv4uB,cAAa,IAAKguW,GAAG7kY,UAAUg4C,KAAK,WAAW,OAAO5yD,KAAKkE,IAAIsW,KAAKgoE,GAAGzhF,EAAEyZ,KAAKulB,GAAGh/B,EAAE,EAAE0+Y,GAAG7kY,UAAU4mM,iBAAiB,WAAW,GAAG7yM,UAAU,aAAa8wY,GAAG,CAAC,IAAIrkY,EAAEzM,UAAU,GAAGnP,EAAE0rY,GAAG1pL,iBAAiBhnM,KAAKgoE,GAAGhoE,KAAKulB,GAAG3kB,EAAEonE,IAAInnE,EAAE6vX,GAAG1pL,iBAAiBhnM,KAAKgoE,GAAGhoE,KAAKulB,GAAG3kB,EAAE2kB,IAAI,OAAOvgC,GAAG,GAAG6b,GAAG,GAAgB7b,GAAG,GAAG6b,GAAG,EAAvBrb,KAAKmE,IAAI3E,EAAE6b,GAA4B,CAAC,CAAC,GAAG1M,UAAU,aAAa6kB,EAAE,CAAC,IAAI3zB,EAAE8O,UAAU,GAAG,OAAOu8X,GAAG1pL,iBAAiBhnM,KAAKgoE,GAAGhoE,KAAKulB,GAAGlgC,EAAE,CAAC,EAAE4/Y,GAAG7kY,UAAU+6wB,WAAW,SAASv6wB,GAAG,OAAOA,EAAEw0wB,iBAAiB,CAACp1wB,KAAKgoE,GAAGhoE,KAAKulB,IAAI,EAAE0/W,GAAG7kY,UAAUhG,WAAW,WAAW,OAAO4F,KAAKgoE,GAAGzhF,IAAIyZ,KAAKulB,GAAGh/B,CAAC,EAAE0+Y,GAAG7kY,UAAU2nN,OAAO,SAASnnN,GAAG,KAAKA,aAAaqkY,IAAI,OAAM,EAAG,IAAIjgZ,EAAE4b,EAAE,OAAOZ,KAAKgoE,GAAG+/I,OAAO/iO,EAAEgjF,KAAKhoE,KAAKulB,GAAGwiM,OAAO/iO,EAAEugC,GAAG,EAAE0/W,GAAG7kY,UAAUukN,aAAa,SAAS/jN,GAAG,IAAI5b,EAAE,IAAIa,GAAG,OAAOb,EAAE6xxB,oBAAoB72wB,KAAKgoE,GAAGhoE,KAAKulB,GAAG3kB,EAAEonE,GAAGpnE,EAAE2kB,IAAIvgC,EAAEkyxB,kBAAkBlyxB,EAAEi7a,gBAAgB,GAAG,IAAI,EAAEh7B,GAAG7kY,UAAUq1e,QAAQ,WAAW,GAAGthf,UAAU,aAAa6kB,EAAE,CAAC,IAAIpY,EAAEzM,UAAU,GAAG,GAAGyM,EAAEmnN,OAAO/nN,KAAKgoE,KAAKpnE,EAAEmnN,OAAO/nN,KAAKulB,IAAI,OAAO,IAAIvM,EAAEpY,GAAG,IAAI5b,EAAEgb,KAAKmyxB,iBAAiBvxxB,GAAGC,EAAE,IAAImY,EAAE,OAAOnY,EAAEta,EAAEyZ,KAAKgoE,GAAGzhF,EAAEvB,GAAGgb,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,GAAGsa,EAAEld,EAAEqc,KAAKgoE,GAAGrkF,EAAEqB,GAAGgb,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,GAAGkd,CAAC,CAAC,GAAG1M,UAAU,aAAa8wY,GAAG,CAAC,IAAI5/Y,EAAE8O,UAAU,GAAG4lB,EAAE/Z,KAAKmyxB,iBAAiB9syB,EAAE2iF,IAAIrE,EAAE3jE,KAAKmyxB,iBAAiB9syB,EAAEkgC,IAAI,GAAGxL,GAAG,GAAG4pD,GAAG,EAAE,OAAO,KAAK,GAAG5pD,GAAG,GAAG4pD,GAAG,EAAE,OAAO,KAAK,IAAI1gF,EAAE+c,KAAKy1e,QAAQpwf,EAAE2iF,IAAIjuD,EAAE,IAAI92B,EAAE+c,KAAKgoE,IAAIjuD,EAAE,IAAI92B,EAAE+c,KAAKulB,IAAI,IAAI3rB,EAAEoG,KAAKy1e,QAAQpwf,EAAEkgC,IAAI,OAAOo+C,EAAE,IAAI/pE,EAAEoG,KAAKgoE,IAAIrE,EAAE,IAAI/pE,EAAEoG,KAAKulB,IAAI,IAAI0/W,GAAGhiZ,EAAE2W,EAAE,CAAC,EAAEqrY,GAAG7kY,UAAUu/B,UAAU,WAAW3/B,KAAKulB,GAAGmjL,UAAU1oM,KAAKgoE,IAAI,GAAGhoE,KAAK8Q,SAAS,EAAEm0X,GAAG7kY,UAAU+U,MAAM,WAAW,OAAO3vB,KAAK4vB,MAAMpV,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,EAAEqc,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,EAAE,EAAE0+Y,GAAG7kY,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAO,IAAIA,EAAEZ,KAAKgoE,GAAGhoE,KAAKulB,EAAE,EAAE0/W,GAAG7kY,UAAUgyxB,sBAAsB,SAASxxxB,GAAG,OAAO8vX,GAAG4oZ,+BAA+B14wB,EAAEZ,KAAKgoE,GAAGhoE,KAAKulB,GAAG,EAAE0/W,GAAG7kY,UAAUi4C,KAAK,WAAW,OAAO7yD,KAAKkE,IAAIsW,KAAKgoE,GAAGrkF,EAAEqc,KAAKulB,GAAG5hC,EAAE,EAAEshZ,GAAG7kY,UAAUiyxB,SAAS,WAAW,OAAOptZ,GAAGotZ,SAASryxB,KAAKgoE,GAAGhoE,KAAKulB,GAAG,EAAE0/W,GAAG7kY,UAAU+xxB,iBAAiB,SAASvxxB,GAAG,GAAGA,EAAEmnN,OAAO/nN,KAAKgoE,IAAI,OAAO,EAAE,GAAGpnE,EAAEmnN,OAAO/nN,KAAKulB,IAAI,OAAO,EAAE,IAAIvgC,EAAEgb,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,EAAEsa,EAAEb,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,EAAE0B,EAAEL,EAAEA,EAAE6b,EAAEA,EAAE,OAAGxb,GAAG,EAAS8c,EAAE7c,MAAYsb,EAAEra,EAAEyZ,KAAKgoE,GAAGzhF,GAAGvB,GAAG4b,EAAEjd,EAAEqc,KAAKgoE,GAAGrkF,GAAGkd,GAAGxb,CAAC,EAAE4/Y,GAAG7kY,UAAUkyxB,cAAc,SAAS1xxB,GAAG,IAAI5b,EAAEgb,KAAK2kN,aAAa/jN,GAAG,GAAG,OAAO5b,EAAE,MAAM,CAACA,EAAEA,GAAG,IAAI6b,EAAE,IAAIvM,MAAM,GAAGm6B,KAAK,MAAMppC,EAAE8c,EAAEgtQ,UAAUp1P,EAAE,KAAK4pD,EAAE3jE,KAAK6gf,aAAajgf,EAAEonE,IAAI3iF,EAAEs+E,EAAEprE,SAASqI,EAAEonE,IAAInnE,EAAE,GAAG8iE,EAAE9iE,EAAE,GAAGD,EAAEonE,GAAG,IAAI/kF,EAAE+c,KAAK6gf,aAAajgf,EAAE2kB,KAAKxL,EAAE92B,EAAEsV,SAASqI,EAAE2kB,KAAKlgC,IAAIA,EAAE00B,EAAElZ,EAAE,GAAG5d,EAAE4d,EAAE,GAAGD,EAAE2kB,IAAI,IAAI3rB,EAAEgH,EAAEigf,aAAa7gf,KAAKgoE,KAAKjuD,EAAEngB,EAAErB,SAASyH,KAAKgoE,KAAK3iF,IAAIA,EAAE00B,EAAElZ,EAAE,GAAGb,KAAKgoE,GAAGnnE,EAAE,GAAGjH,GAAG,IAAI8pF,EAAE9iF,EAAEigf,aAAa7gf,KAAKulB,IAAI,OAAOxL,EAAE2pE,EAAEnrF,SAASyH,KAAKulB,KAAKlgC,IAAIA,EAAE00B,EAAElZ,EAAE,GAAGb,KAAKulB,GAAG1kB,EAAE,GAAG6iF,GAAG7iF,CAAC,EAAEokY,GAAG7kY,UAAUygf,aAAa,SAASjgf,GAAG,IAAI5b,EAAEgb,KAAKmyxB,iBAAiBvxxB,GAAG,OAAG5b,EAAE,GAAGA,EAAE,EAASgb,KAAKy1e,QAAQ70e,GAAUZ,KAAKgoE,GAAGzvE,SAASqI,GAAGZ,KAAKulB,GAAGhtB,SAASqI,GAAGZ,KAAKgoE,GAAGhoE,KAAKulB,EAAE,EAAE0/W,GAAG7kY,UAAU83C,KAAK,WAAW,OAAO1yD,KAAKmE,IAAIqW,KAAKgoE,GAAGzhF,EAAEyZ,KAAKulB,GAAGh/B,EAAE,EAAE0+Y,GAAG7kY,UAAU26wB,UAAU,WAAW,OAAO/6wB,KAAKgoE,GAAGzvE,SAASyH,KAAKulB,GAAG,EAAE0/W,GAAG7kY,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAEC,EAAEb,KAAKgoE,GAAG0gI,UAAU1jN,EAAEgjF,IAAI,OAAO,IAAInnE,EAAEA,EAAEb,KAAKulB,GAAGmjL,UAAU1jN,EAAEugC,GAAG,EAAE0/W,GAAG7kY,UAAU0Q,QAAQ,WAAW,IAAIlQ,EAAEZ,KAAKgoE,GAAGhoE,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKulB,GAAG3kB,CAAC,EAAEqkY,GAAG7kY,UAAUs6wB,WAAW,SAAS95wB,GAAG,OAAOZ,KAAKgoE,GAAG+/I,OAAOnnN,EAAEonE,MAAMhoE,KAAKulB,GAAGwiM,OAAOnnN,EAAE2kB,KAAKvlB,KAAKgoE,GAAG+/I,OAAOnnN,EAAE2kB,MAAMvlB,KAAKulB,GAAGwiM,OAAOnnN,EAAEonE,GAAG,EAAEi9T,GAAG7kY,UAAUmyxB,iBAAiB,SAAS3xxB,GAAG,IAAI,OAAO6Q,EAAEkzM,aAAa3kN,KAAKgoE,GAAGhoE,KAAKulB,GAAG3kB,EAAEonE,GAAGpnE,EAAE2kB,GAAG,CAAC,MAAM3kB,GAAG,KAAKA,aAAa0Z,GAAG,MAAM1Z,CAAC,CAAC,OAAO,IAAI,EAAEqkY,GAAG7kY,UAAU+3C,KAAK,WAAW,OAAO3yD,KAAKmE,IAAIqW,KAAKgoE,GAAGrkF,EAAEqc,KAAKulB,GAAG5hC,EAAE,EAAEshZ,GAAG7kY,UAAUoyxB,iBAAiB,SAAS5xxB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKgoE,GAAGzhF,EAAEqa,GAAGZ,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,GAAGlB,EAAE2a,KAAKgoE,GAAGrkF,EAAEid,GAAGZ,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,GAAGo2B,EAAE/Z,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,EAAEo9E,EAAE3jE,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,EAAEV,EAAEuC,KAAK0vB,KAAK6E,EAAEA,EAAE4pD,EAAEA,GAAG/pE,EAAE,EAAE8pF,EAAE,EAAE,GAAG,IAAI1+F,EAAE,CAAC,GAAG/B,GAAG,EAAE,MAAM,IAAIskB,MAAM,uDAAuD3N,EAAE5U,EAAE+0B,EAAE92B,EAAEygG,EAAE1+F,EAAE2+E,EAAE1gF,CAAC,CAAC,OAAO,IAAI+1B,EAAEnY,EAAE6iF,EAAEr+F,EAAEuU,EAAE,EAAEqrY,GAAG7kY,UAAUqyxB,eAAe,WAAW,GAAG,IAAIt+xB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKyyxB,eAAe7xxB,EAAEonE,GAAGpnE,EAAE2kB,GAAG,MAAM,GAAG,IAAIpxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKgoE,GAAGzhF,EAAEvB,EAAEuB,EAAEyZ,KAAKgoE,GAAGrkF,EAAEqB,EAAErB,EAAEqc,KAAKulB,GAAGh/B,EAAEsa,EAAEta,EAAEyZ,KAAKulB,GAAG5hC,EAAEkd,EAAEld,CAAC,CAAC,EAAEshZ,GAAG7kY,UAAUsyxB,gBAAgB,SAAS9xxB,GAAG,IAAI5b,EAAEgb,KAAKmyxB,iBAAiBvxxB,GAAG,OAAO5b,EAAE,EAAEA,EAAE,GAAGA,EAAE,GAAGmd,EAAEpc,MAAMf,MAAMA,EAAE,GAAGA,CAAC,EAAEigZ,GAAG7kY,UAAUpZ,SAAS,WAAW,MAAM,eAAegZ,KAAKgoE,GAAGzhF,EAAE,IAAIyZ,KAAKgoE,GAAGrkF,EAAE,KAAKqc,KAAKulB,GAAGh/B,EAAE,IAAIyZ,KAAKulB,GAAG5hC,EAAE,GAAG,EAAEshZ,GAAG7kY,UAAUozC,aAAa,WAAW,OAAOxzC,KAAKgoE,GAAGrkF,IAAIqc,KAAKulB,GAAG5hC,CAAC,EAAEshZ,GAAG7kY,UAAU7H,SAAS,WAAW,GAAGpE,UAAU,aAAa8wY,GAAG,CAAC,IAAIrkY,EAAEzM,UAAU,GAAG,OAAOu8X,GAAGuoZ,iBAAiBj5wB,KAAKgoE,GAAGhoE,KAAKulB,GAAG3kB,EAAEonE,GAAGpnE,EAAE2kB,GAAG,CAAC,GAAGpxB,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG,OAAOu8X,GAAG2nZ,kBAAkBrzxB,EAAEgb,KAAKgoE,GAAGhoE,KAAKulB,GAAG,CAAC,EAAE0/W,GAAG7kY,UAAUuyxB,WAAW,SAAS/xxB,GAAG,IAAI5b,EAAE,IAAIg0B,EAAE,OAAOh0B,EAAEuB,EAAEyZ,KAAKgoE,GAAGzhF,EAAEqa,GAAGZ,KAAKulB,GAAGh/B,EAAEyZ,KAAKgoE,GAAGzhF,GAAGvB,EAAErB,EAAEqc,KAAKgoE,GAAGrkF,EAAEid,GAAGZ,KAAKulB,GAAG5hC,EAAEqc,KAAKgoE,GAAGrkF,GAAGqB,CAAC,EAAEigZ,GAAG7kY,UAAUsvY,SAAS,WAAW,IAAI9uY,EAAEuB,EAAEgtwB,iBAAiBnvwB,KAAKgoE,GAAGzhF,GAAGqa,GAAG,GAAGuB,EAAEgtwB,iBAAiBnvwB,KAAKgoE,GAAGrkF,GAAG,IAAIqB,EAAEQ,KAAKwpxB,MAAMpuwB,GAAGpb,KAAKwpxB,MAAMpuwB,GAAG,IAAIC,EAAEsB,EAAEgtwB,iBAAiBnvwB,KAAKulB,GAAGh/B,GAAuC,OAApCsa,GAAG,GAAGsB,EAAEgtwB,iBAAiBnvwB,KAAKulB,GAAG5hC,GAAUqB,EAAGQ,KAAKwpxB,MAAMnuwB,GAAGrb,KAAKwpxB,MAAMnuwB,GAAG,GAAI,EAAEokY,GAAG7kY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAEl0B,EAAE,EAAEigZ,GAAG7kY,UAAUwtG,SAAS,WAAW,OAAOq3R,EAAE,EAAEA,GAAGotZ,SAAS,SAASzxxB,EAAE5b,GAAG,OAAO,IAAIg0B,GAAGpY,EAAEra,EAAEvB,EAAEuB,GAAG,GAAGqa,EAAEjd,EAAEqB,EAAErB,GAAG,EAAE,EAAE0hZ,GAAGmqY,iBAAiB37wB,IAAI,WAAW,OAAO,kBAAkB,EAAE/J,OAAO0hC,iBAAiBy5W,GAAGI,IAAI,IAAIr6R,GAAG,WAAWhrG,KAAK4yxB,SAAS,IAAI5swB,EAAEhmB,KAAK6yxB,SAAS,IAAI7swB,EAAEhmB,KAAK8yxB,aAAa,IAAI7tZ,GAAGjlY,KAAK+yxB,aAAa,IAAI9tZ,EAAE,EAAEj6R,GAAG5qG,UAAUwviB,QAAQ,WAAW,GAAG,IAAIz7iB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAmBpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAvDA,UAAU,GAAkD6+xB,eAAehuyB,EAAEgb,KAAK8yxB,cAAcjyxB,EAAEmyxB,eAAe3tyB,EAAE2a,KAAK+yxB,cAAc/yxB,KAAK4viB,QAAQ5viB,KAAK8yxB,aAAa9yxB,KAAK+yxB,aAAa,CAAC,EAAE/nrB,GAAG5qG,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjkqB,GAAG5qG,UAAUwtG,SAAS,WAAW,OAAO5C,EAAE,EAAE,IAAIk6I,GAAG,WAAWllP,KAAK4mxB,KAAK,KAAK5mxB,KAAKwjC,OAAO,KAAKxjC,KAAKguN,KAAK,KAAKhuN,KAAK8kxB,KAAK,KAAK9kxB,KAAKm2B,SAAS,KAAKn2B,KAAKgiZ,IAAI,KAAK,IAAIphZ,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAK4mxB,KAAKhmxB,EAAEZ,KAAKwjC,OAAOx+C,EAAEgb,KAAKguN,KAAKntN,EAAEb,KAAKm2B,SAAS9wC,CAAC,EAAE6/P,GAAG9kP,UAAU4yxB,eAAe,SAASpyxB,EAAE5b,GAAGA,EAAEgjF,GAAGhoE,KAAK4mxB,KAAKhmxB,GAAG5b,EAAEugC,GAAGvlB,KAAK4mxB,KAAKhmxB,EAAE,EAAE,EAAEskP,GAAG9kP,UAAU6yxB,cAAc,SAASryxB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/Z,KAAK4mxB,KAAK5hyB,GAAG2+E,EAAE3jE,KAAK4mxB,KAAK/lxB,GAAG,GAAGxb,EAAEutyB,SAASxmuB,KAAKryC,EAAE4pD,GAAG9iE,EAAE7b,GAAG,EAAE,OAAOK,EAAE4qU,OAAOjwT,KAAKhb,GAAG,KAAK,IAAI4b,EAAEw6Y,WAAW/1Z,EAAEutyB,UAAU,OAAO,KAAK,IAAI3vyB,EAAEuC,KAAKwpxB,OAAOhqxB,EAAE6b,GAAG,GAAG7b,EAAE/B,GAAG+c,KAAKizxB,cAAcryxB,EAAE5b,EAAE/B,EAAEoC,GAAGpC,EAAE4d,GAAGb,KAAKizxB,cAAcryxB,EAAE3d,EAAE4d,EAAExb,EAAE,EAAE6/P,GAAG9kP,UAAU0+wB,eAAe,WAAW,IAAI,IAAIl+wB,EAAE,IAAItM,MAAM0L,KAAKguN,KAAKhuN,KAAKwjC,OAAO,GAAG/U,KAAK,MAAMzpC,EAAE,EAAE6b,EAAEb,KAAKwjC,OAAO3iC,GAAGb,KAAKguN,KAAKntN,IAAID,EAAE5b,KAAKgb,KAAK4mxB,KAAK/lxB,GAAG,OAAOD,CAAC,EAAEskP,GAAG9kP,UAAU8yxB,gBAAgB,SAAStyxB,EAAE5b,GAAGgb,KAAKmzxB,wBAAwBnzxB,KAAKwjC,OAAOxjC,KAAKguN,KAAKptN,EAAEA,EAAE4iC,OAAO5iC,EAAEotN,KAAKhpO,EAAE,EAAEkgQ,GAAG9kP,UAAU+4Z,MAAM,SAASv4Z,GAAGZ,KAAKgiZ,IAAIphZ,CAAC,EAAEskP,GAAG9kP,UAAU6vT,OAAO,SAASrvT,EAAE5b,GAAGgb,KAAKizxB,cAAcryxB,EAAEZ,KAAKwjC,OAAOxjC,KAAKguN,KAAKhpO,EAAE,EAAEkgQ,GAAG9kP,UAAUmpM,YAAY,WAAW,GAAG,OAAOvpM,KAAK8kxB,KAAK,CAAC,IAAIlkxB,EAAEZ,KAAK4mxB,KAAK5mxB,KAAKwjC,QAAQx+C,EAAEgb,KAAK4mxB,KAAK5mxB,KAAKguN,MAAMhuN,KAAK8kxB,KAAK,IAAI9+vB,EAAEplB,EAAE5b,EAAE,CAAC,OAAOgb,KAAK8kxB,IAAI,EAAE5/hB,GAAG9kP,UAAUgzxB,YAAY,WAAW,OAAOpzxB,KAAKguN,IAAI,EAAEk3B,GAAG9kP,UAAUizxB,cAAc,WAAW,OAAOrzxB,KAAKwjC,MAAM,EAAE0hN,GAAG9kP,UAAUktB,WAAW,WAAW,OAAOttB,KAAKm2B,QAAQ,EAAE+uN,GAAG9kP,UAAUu1Z,MAAM,WAAW,OAAO31Z,KAAKgiZ,GAAG,EAAE98J,GAAG9kP,UAAU+yxB,wBAAwB,SAASvyxB,EAAE5b,EAAE6b,EAAExb,EAAE00B,EAAE4pD,GAAG,IAAI1gF,EAAE+c,KAAK4mxB,KAAKhmxB,GAAGhH,EAAEoG,KAAK4mxB,KAAK5hyB,GAAG0+F,EAAE7iF,EAAE+lxB,KAAKvhyB,GAAGmzB,EAAE3X,EAAE+lxB,KAAK7swB,GAAG,GAAG/0B,EAAE4b,GAAG,GAAGmZ,EAAE10B,GAAG,EAAE,OAAOs+E,EAAEise,QAAQ5viB,KAAKY,EAAEC,EAAExb,GAAG,KAAK,GAAGs+E,EAAEivtB,SAASxmuB,KAAKnpE,EAAE2W,GAAG+pE,EAAEkvtB,SAASzmuB,KAAKs3B,EAAElrE,IAAImrD,EAAEivtB,SAASx3Y,WAAWz3U,EAAEkvtB,UAAU,OAAO,KAAK,IAAIjtyB,EAAEJ,KAAKwpxB,OAAOpuwB,EAAE5b,GAAG,GAAGmb,EAAE3a,KAAKwpxB,OAAO3pxB,EAAE00B,GAAG,GAAGnZ,EAAEhb,IAAIP,EAAE8a,GAAGH,KAAKmzxB,wBAAwBvyxB,EAAEhb,EAAEib,EAAExb,EAAE8a,EAAEwjE,GAAGxjE,EAAE4Z,GAAG/Z,KAAKmzxB,wBAAwBvyxB,EAAEhb,EAAEib,EAAEV,EAAE4Z,EAAE4pD,IAAI/9E,EAAEZ,IAAIK,EAAE8a,GAAGH,KAAKmzxB,wBAAwBvtyB,EAAEZ,EAAE6b,EAAExb,EAAE8a,EAAEwjE,GAAGxjE,EAAE4Z,GAAG/Z,KAAKmzxB,wBAAwBvtyB,EAAEZ,EAAE6b,EAAEV,EAAE4Z,EAAE4pD,GAAG,EAAEuhL,GAAG9kP,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/phB,GAAG9kP,UAAUwtG,SAAS,WAAW,OAAOs3I,EAAE,EAAE,IAAIkgJ,GAAG,WAAW,EAAEA,GAAGhlY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7pY,GAAGhlY,UAAUwtG,SAAS,WAAW,OAAOw3R,EAAE,EAAEA,GAAGkuZ,qBAAqB,SAAS1yxB,GAAG,IAAI5b,EAAE,EAAE6b,EAAE,IAAIgjY,GAAGhjY,EAAEvN,IAAI,IAAI7P,EAAEuB,IAAI,EAAE,CAAC,IAAIK,EAAE+/Y,GAAGmuZ,aAAa3yxB,EAAE5b,GAAG6b,EAAEvN,IAAI,IAAI7P,EAAE4B,IAAIL,EAAEK,CAAC,OAAOL,EAAE4b,EAAExM,OAAO,GAAG,OAAOgxY,GAAGouZ,WAAW3yxB,EAAE,EAAEukY,GAAGmuZ,aAAa,SAAS3yxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAE6b,EAAED,EAAExM,OAAO,GAAGwM,EAAEC,GAAG6uwB,SAAS9uwB,EAAEC,EAAE,KAAKA,IAAI,GAAGA,GAAGD,EAAExM,OAAO,EAAE,OAAOwM,EAAExM,OAAO,EAAE,IAAI,IAAI/O,EAAEquK,GAAG22nB,SAASzpxB,EAAEC,GAAGD,EAAEC,EAAE,IAAIkZ,EAAE/0B,EAAE,EAAE+0B,EAAEnZ,EAAExM,SAAawM,EAAEmZ,EAAE,GAAG21vB,SAAS9uwB,EAAEmZ,KAAQ25I,GAAG22nB,SAASzpxB,EAAEmZ,EAAE,GAAGnZ,EAAEmZ,MAAM10B,IAAQ00B,IAAI,OAAOA,EAAE,CAAC,EAAEqrX,GAAGquZ,UAAU,WAAW,GAAG,IAAIt/xB,UAAUC,OAA2B,OAAOgxY,GAAGquZ,UAAvBt/xB,UAAU,GAAyB,MAAM,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAI,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE,IAAIw+Y,GAAG9pX,EAAEqrX,GAAGkuZ,qBAAqBtuyB,GAAG2+E,EAAE,EAAEA,EAAE5pD,EAAE3lB,OAAO,EAAEuvE,IAAI,CAAC,IAAI1gF,EAAE,IAAIiiQ,GAAGlgQ,EAAE+0B,EAAE4pD,GAAG5pD,EAAE4pD,EAAE,GAAG9iE,GAAGxb,EAAEiO,IAAIrQ,EAAE,CAAC,OAAOoC,CAAC,CAAC,EAAE+/Y,GAAGouZ,WAAW,SAAS5yxB,GAAG,IAAI,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM5tB,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI7b,EAAE6b,GAAGD,EAAE/M,IAAIgN,GAAG2vwB,WAAW,OAAOxrxB,CAAC,EAAE,IAAImhZ,GAAG,WAAW,EAAEA,GAAG/lY,UAAUszxB,aAAa,SAAS9yxB,GAAG,EAAEulY,GAAG/lY,UAAU8xxB,mBAAmB,WAAW,EAAE/rZ,GAAG/lY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9oY,GAAG/lY,UAAUwtG,SAAS,WAAW,OAAOu4R,EAAE,EAAE,IAAIG,GAAG,WAAW,GAAGtmY,KAAK2zxB,QAAQ,KAAK,IAAIx/xB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK4zxB,sBAAsBhzxB,EAAE,CAAC,EAAE0lY,GAAGlmY,UAAUwzxB,sBAAsB,SAAShzxB,GAAGZ,KAAK2zxB,QAAQ/yxB,CAAC,EAAE0lY,GAAGlmY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC9oY,GAAG,EAAEG,GAAGlmY,UAAUwtG,SAAS,WAAW,OAAO04R,EAAE,EAAE,IAAIb,GAAG,SAAS7kY,GAAG,SAAS5b,EAAEA,GAAGA,EAAE4b,EAAEP,KAAKL,KAAKhb,GAAG4b,EAAEP,KAAKL,MAAMA,KAAK6zxB,YAAY,IAAIhwZ,GAAG7jY,KAAK8zxB,OAAO,IAAIlvZ,GAAG5kY,KAAK+zxB,WAAW,EAAE/zxB,KAAKg0xB,iBAAiB,KAAKh0xB,KAAKi0xB,WAAW,CAAC,CAACrzxB,IAAI5b,EAAEkb,UAAUU,IAAI5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,YAAYK,YAAYzb,EAAE,IAAI6b,EAAE,CAACqzxB,qBAAqB,CAACj9vB,cAAa,IAAK,OAAOjyC,EAAEob,UAAU+zxB,kBAAkB,WAAW,OAAOn0xB,KAAK6zxB,WAAW,EAAE7uyB,EAAEob,UAAU8xxB,mBAAmB,WAAW,OAAOhtZ,GAAGgtZ,mBAAmBlyxB,KAAKg0xB,iBAAiB,EAAEhvyB,EAAEob,UAAUqqa,SAAS,WAAW,OAAOzqa,KAAK8zxB,MAAM,EAAE9uyB,EAAEob,UAAU9M,IAAI,SAASsN,GAAG,IAAI,IAAI5b,EAAEogZ,GAAGquZ,UAAU7yxB,EAAEk+wB,iBAAiBl+wB,GAAGsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO+Y,EAAEs4Z,MAAMn5Z,KAAK+zxB,cAAc/zxB,KAAK8zxB,OAAO3isB,OAAOtwF,EAAE0oM,cAAc1oM,GAAGb,KAAK6zxB,YAAYvgyB,IAAIuN,EAAE,CAAC,EAAE7b,EAAEob,UAAUszxB,aAAa,SAAS9yxB,GAAGZ,KAAKg0xB,iBAAiBpzxB,EAAE,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW17wB,KAAK1M,IAAItO,EAAE8C,QAAQkY,KAAKo0xB,iBAAiB,EAAEpvyB,EAAEob,UAAUg0xB,gBAAgB,WAAW,IAAI,IAAIxzxB,EAAE,IAAI4lY,GAAGxmY,KAAK2zxB,SAAS3uyB,EAAEgb,KAAK6zxB,YAAY3xxB,WAAWld,EAAE02xB,WAAW,IAAI,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAE2a,KAAK8zxB,OAAO1kN,MAAMvukB,EAAE0oM,eAAernM,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAO,GAAGiyB,EAAE47Y,QAAQ90Z,EAAE80Z,UAAU90Z,EAAEqyxB,gBAAgBn5wB,EAAEnZ,GAAGZ,KAAKi0xB,cAAcj0xB,KAAK2zxB,QAAQjzB,SAAS,OAAO,IAAI,CAAC,EAAE17wB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAE6b,EAAEqzxB,qBAAqBrgyB,IAAI,WAAW,OAAO2yY,EAAE,EAAE18Y,OAAO0hC,iBAAiBxmC,EAAE6b,GAAG7b,CAAC,CAAhzC,CAAkzCshZ,IAAIE,GAAG,SAAS5lY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAKq0xB,IAAI,KAAK,IAAIrvyB,EAAEmP,UAAU,GAAG6L,KAAKq0xB,IAAIrvyB,CAAC,CAAC,OAAO4b,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUwviB,QAAQ,WAAW,GAAG,IAAIz7iB,UAAUC,OAAO,OAAOwM,EAAER,UAAUwviB,QAAQ9uiB,MAAMd,KAAK7L,WAAW,IAAmB0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAA1DxvE,UAAU,GAAoDm5B,aAAarqC,EAAEoC,EAAEioC,aAAattB,KAAKq0xB,IAAIC,qBAAqB3wtB,EAAE9iE,EAAE5d,EAAE82B,EAAE,EAAE/0B,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAA1f,CAA4fgmH,IAAI86R,GAAG,SAASllY,IAAI,GAAGZ,KAAKu0xB,kBAAkB3zxB,EAAE4zxB,0BAA0Bx0xB,KAAKy0xB,aAAa7zxB,EAAE8zxB,UAAU10xB,KAAK20xB,WAAW/zxB,EAAEg0xB,WAAW50xB,KAAK60xB,YAAYj0xB,EAAEk0xB,oBAAoB90xB,KAAK+0xB,gBAAe,EAAG/0xB,KAAKg1xB,gBAAgBp0xB,EAAEq0xB,wBAAwB,IAAI9gyB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG6L,KAAKk1xB,oBAAoBlwyB,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKk1xB,oBAAoBr0xB,GAAGb,KAAKm1xB,eAAe9vyB,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAG6L,KAAKk1xB,oBAAoBn7wB,GAAG/Z,KAAKm1xB,eAAexxtB,GAAG3jE,KAAKo1xB,aAAanyyB,GAAG+c,KAAKq1xB,cAAcz7xB,EAAE,CAAC,EAAE4rY,GAAG,CAACkvZ,UAAU,CAACz9vB,cAAa,GAAIq+vB,SAAS,CAACr+vB,cAAa,GAAIs+vB,WAAW,CAACt+vB,cAAa,GAAI29vB,WAAW,CAAC39vB,cAAa,GAAIu+vB,WAAW,CAACv+vB,cAAa,GAAIw+vB,WAAW,CAACx+vB,cAAa,GAAIu9vB,0BAA0B,CAACv9vB,cAAa,GAAI69vB,oBAAoB,CAAC79vB,cAAa,GAAIg+vB,wBAAwB,CAACh+vB,cAAa,IAAK6uW,GAAG1lY,UAAUs1xB,eAAe,WAAW,OAAO11xB,KAAKy0xB,YAAY,EAAE3uZ,GAAG1lY,UAAUu1xB,cAAc,WAAW,OAAO31xB,KAAK+0xB,cAAc,EAAEjvZ,GAAG1lY,UAAU80xB,oBAAoB,SAASt0xB,GAAGZ,KAAKu0xB,kBAAkB3zxB,EAAE,IAAIZ,KAAKu0xB,oBAAoBv0xB,KAAK20xB,WAAW7uZ,GAAG2vZ,YAAYz1xB,KAAKu0xB,kBAAkB,IAAIv0xB,KAAK20xB,WAAW7uZ,GAAG0vZ,WAAWx1xB,KAAK60xB,YAAYrvyB,KAAKM,IAAIka,KAAKu0xB,oBAAoB3zxB,GAAG,IAAIZ,KAAKu0xB,kBAAkB,GAAGv0xB,KAAK20xB,aAAa7uZ,GAAG8uZ,aAAa50xB,KAAKu0xB,kBAAkBzuZ,GAAG0uZ,0BAA0B,EAAE1uZ,GAAG1lY,UAAUw1xB,aAAa,WAAW,OAAO51xB,KAAK20xB,UAAU,EAAE7uZ,GAAG1lY,UAAUg1xB,aAAa,SAASx0xB,GAAGZ,KAAK20xB,WAAW/zxB,CAAC,EAAEklY,GAAG1lY,UAAUy1xB,kBAAkB,SAASj1xB,GAAGZ,KAAKg1xB,gBAAgBp0xB,EAAE,EAAE,EAAEA,CAAC,EAAEklY,GAAG1lY,UAAU01xB,kBAAkB,WAAW,OAAO91xB,KAAKg1xB,eAAe,EAAElvZ,GAAG1lY,UAAU21xB,oBAAoB,WAAW,OAAO/1xB,KAAKu0xB,iBAAiB,EAAEzuZ,GAAG1lY,UAAU+0xB,eAAe,SAASv0xB,GAAGZ,KAAKy0xB,aAAa7zxB,CAAC,EAAEklY,GAAG1lY,UAAU41xB,cAAc,WAAW,OAAOh2xB,KAAK60xB,WAAW,EAAE/uZ,GAAG1lY,UAAUi1xB,cAAc,SAASz0xB,GAAGZ,KAAK60xB,YAAYj0xB,CAAC,EAAEklY,GAAG1lY,UAAU61xB,eAAe,SAASr1xB,GAAGZ,KAAK+0xB,eAAen0xB,CAAC,EAAEklY,GAAG1lY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnpY,GAAG1lY,UAAUwtG,SAAS,WAAW,OAAOk4R,EAAE,EAAEA,GAAGowZ,oBAAoB,SAASt1xB,GAAG,IAAI5b,EAAEQ,KAAKytB,GAAG,EAAErS,EAAE,OAAO,EAAEpb,KAAK6xB,IAAIryB,EAAE,EAAE,EAAEwgZ,GAAGkvZ,UAAU7gyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAG8vZ,SAASzhyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAG+vZ,WAAW1hyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGovZ,WAAW/gyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGgwZ,WAAW3hyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGiwZ,WAAW5hyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGgvZ,0BAA0B3gyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGsvZ,oBAAoBjhyB,IAAI,WAAW,OAAO,CAAC,EAAE2xY,GAAGyvZ,wBAAwBphyB,IAAI,WAAW,MAAM,GAAG,EAAE/J,OAAO0hC,iBAAiBs6W,GAAGN,IAAI,IAAIY,GAAG,SAASxlY,GAAGZ,KAAKm2xB,aAAa,KAAKn2xB,KAAKo2xB,WAAW,KAAKp2xB,KAAKq2xB,kBAAkB3la,GAAGooZ,iBAAiB94wB,KAAKs2xB,WAAW11xB,GAAG,IAAI,EAAE0kY,GAAG,CAACixZ,KAAK,CAACt/vB,cAAa,GAAIuhuB,OAAO,CAACvhuB,cAAa,GAAIu/vB,KAAK,CAACv/vB,cAAa,GAAIw/vB,iBAAiB,CAACx/vB,cAAa,IAAKmvW,GAAGhmY,UAAUs2xB,YAAY,SAAS91xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/Z,KAAKs2xB,WAAW11xB,GAAG+iE,EAAE3jE,KAAKs2xB,WAAWtxyB,GAAG/B,EAAE+c,KAAKs2xB,WAAWz1xB,GAAG,QAAQb,KAAK22xB,UAAU58wB,EAAE4pD,EAAE1gF,MAAO+c,KAAK42xB,UAAU78wB,EAAE4pD,EAAE1gF,EAAEoC,IAAI2a,KAAK62xB,iBAAiB98wB,EAAE4pD,EAAE/iE,EAAEC,EAAExb,EAAG,EAAE+gZ,GAAGhmY,UAAU02xB,yBAAyB,WAAW,IAAI,IAAIl2xB,EAAE,EAAE5b,EAAEgb,KAAK+2xB,wBAAwBn2xB,GAAGC,EAAEb,KAAK+2xB,wBAAwB/xyB,GAAGK,GAAE,EAAGwb,EAAEb,KAAKs2xB,WAAWliyB,QAAQ,CAAC,IAAI2lB,GAAE,EAAG/Z,KAAK02xB,YAAY91xB,EAAE5b,EAAE6b,EAAEb,KAAKm2xB,gBAAgBn2xB,KAAKo2xB,WAAWpxyB,GAAGohZ,GAAGoyX,OAAOz+uB,GAAE,EAAG10B,GAAE,GAAIub,EAAEmZ,EAAElZ,EAAE7b,EAAEA,EAAEgb,KAAK+2xB,wBAAwBn2xB,GAAGC,EAAEb,KAAK+2xB,wBAAwB/xyB,EAAE,CAAC,OAAOK,CAAC,EAAE+gZ,GAAGhmY,UAAU42xB,mBAAmB,SAASp2xB,EAAE5b,EAAE6b,EAAExb,GAAG,OAAKqrY,GAAG2oZ,mBAAmBz4wB,EAAE5b,EAAE6b,KAAKb,KAAKq2xB,mBAAmC3la,GAAG2nZ,kBAAkBrzxB,EAAE4b,EAAEC,GAAGxb,CAAC,EAAE+gZ,GAAGhmY,UAAUy2xB,iBAAiB,SAASj2xB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAEn+E,KAAKwpxB,OAAO3pxB,EAAEwb,GAAGulY,GAAGqwZ,kBAAkB9ytB,GAAG,IAAIA,EAAE,GAAG,IAAI,IAAI1gF,EAAE4d,EAAE5d,EAAEoC,EAAEpC,GAAG0gF,EAAE,IAAI3jE,KAAK42xB,UAAUh2xB,EAAE5b,EAAEgb,KAAKs2xB,WAAWrzyB,GAAG82B,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEqsX,GAAGhmY,UAAUu2xB,UAAU,SAAS/1xB,EAAE5b,EAAE6b,GAA+D,OAAtD6vX,GAAG2oZ,mBAAmBz4wB,EAAE5b,EAAE6b,KAAKb,KAAKq2xB,iBAA0B,EAAEjwZ,GAAGhmY,UAAU62xB,SAAS,SAASr2xB,GAAGZ,KAAKm2xB,aAAa3wyB,KAAKM,IAAI8a,GAAGA,EAAE,IAAIZ,KAAKq2xB,kBAAkB3la,GAAGmoZ,WAAW74wB,KAAKo2xB,WAAW,IAAI9hyB,MAAM0L,KAAKs2xB,WAAWliyB,QAAQq6B,KAAK,MAAM,IAAIzpC,GAAE,EAAG,GAAGA,EAAEgb,KAAK82xB,iCAAiC9xyB,GAAG,OAAOgb,KAAKk3xB,cAAc,EAAE9wZ,GAAGhmY,UAAU22xB,wBAAwB,SAASn2xB,GAAG,IAAI,IAAI5b,EAAE4b,EAAE,EAAE5b,EAAEgb,KAAKs2xB,WAAWliyB,QAAQ4L,KAAKo2xB,WAAWpxyB,KAAKohZ,GAAGoyX,QAAQxzwB,IAAI,OAAOA,CAAC,EAAEohZ,GAAGhmY,UAAUw2xB,UAAU,SAASh2xB,EAAE5b,EAAE6b,EAAExb,GAAG,OAAOqrY,GAAG2nZ,kBAAkBrzxB,EAAE4b,EAAEC,GAAGxb,CAAC,EAAE+gZ,GAAGhmY,UAAU82xB,aAAa,WAAW,IAAI,IAAIt2xB,EAAE,IAAI+hY,GAAG39Y,EAAE,EAAEA,EAAEgb,KAAKs2xB,WAAWliyB,OAAOpP,IAAIgb,KAAKo2xB,WAAWpxyB,KAAKohZ,GAAGoyX,QAAQ53vB,EAAEtN,IAAI0M,KAAKs2xB,WAAWtxyB,IAAI,OAAO4b,EAAEkywB,mBAAmB,EAAE1sY,GAAGhmY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7oY,GAAGhmY,UAAUwtG,SAAS,WAAW,OAAOw4R,EAAE,EAAEA,GAAG6wZ,SAAS,SAASr2xB,EAAE5b,GAAG,OAAO,IAAIohZ,GAAGxlY,GAAGq2xB,SAASjyyB,EAAE,EAAEsgZ,GAAGixZ,KAAK1iyB,IAAI,WAAW,OAAO,CAAC,EAAEyxY,GAAGkzX,OAAO3kwB,IAAI,WAAW,OAAO,CAAC,EAAEyxY,GAAGkxZ,KAAK3iyB,IAAI,WAAW,OAAO,CAAC,EAAEyxY,GAAGmxZ,iBAAiB5iyB,IAAI,WAAW,OAAO,EAAE,EAAE/J,OAAO0hC,iBAAiB46W,GAAGd,IAAI,IAAIC,GAAG,WAAWvlY,KAAKm3xB,QAAQ,KAAKn3xB,KAAKi2wB,gBAAgB,KAAKj2wB,KAAKo3xB,uBAAuB,EAAEp3xB,KAAKm3xB,QAAQ,IAAItzZ,EAAE,EAAEqC,GAAG,CAACmxZ,sBAAsB,CAACpgwB,cAAa,IAAKsuW,GAAGnlY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKm3xB,QAAQrzkB,QAAQyhL,GAAG8xZ,sBAAsB,EAAE9xZ,GAAGnlY,UAAU+2wB,kBAAkB,SAASv2wB,GAAGZ,KAAKi2wB,gBAAgBr1wB,CAAC,EAAE2kY,GAAGnlY,UAAUk3xB,MAAM,SAAS12xB,GAAG,IAAI5b,EAAE,IAAIg0B,EAAEpY,GAAG,GAAGZ,KAAKi2wB,gBAAgB+B,YAAYhzxB,GAAGgb,KAAKu3xB,YAAYvyyB,GAAG,OAAO,KAAKgb,KAAKm3xB,QAAQ7jyB,IAAItO,EAAE,EAAEugZ,GAAGnlY,UAAUo3xB,OAAO,WAAW,EAAEjyZ,GAAGnlY,UAAUq3xB,OAAO,SAAS72xB,EAAE5b,GAAG,GAAGA,EAAE,IAAI,IAAI6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAIb,KAAKs3xB,MAAM12xB,EAAEC,SAAS,IAAI,IAAIxb,EAAEub,EAAExM,OAAO,EAAE/O,GAAG,EAAEA,IAAI2a,KAAKs3xB,MAAM12xB,EAAEvb,GAAG,EAAEkgZ,GAAGnlY,UAAUm3xB,YAAY,SAAS32xB,GAAG,GAAGZ,KAAKm3xB,QAAQpkxB,OAAO,EAAE,OAAM,EAAG,IAAI/tB,EAAEgb,KAAKm3xB,QAAQtjyB,IAAImM,KAAKm3xB,QAAQpkxB,OAAO,GAAG,OAAOnS,EAAErI,SAASvT,GAAGgb,KAAKo3xB,sBAAsB,EAAE7xZ,GAAGnlY,UAAUpZ,SAAS,WAAW,OAAM,IAAKkkH,IAAIkqqB,iBAAiBp1wB,KAAK8+wB,kBAAkB93xB,UAAU,EAAEu+Y,GAAGnlY,UAAUw8wB,UAAU,WAAW,GAAG58wB,KAAKm3xB,QAAQpkxB,OAAO,EAAE,OAAO,KAAK,IAAInS,EAAE,IAAIoY,EAAEhZ,KAAKm3xB,QAAQtjyB,IAAI,IAAI7O,EAAEgb,KAAKm3xB,QAAQtjyB,IAAImM,KAAKm3xB,QAAQpkxB,OAAO,GAAG,GAAGnS,EAAEmnN,OAAO/iO,GAAG,OAAO,KAAKgb,KAAKm3xB,QAAQ7jyB,IAAIsN,EAAE,EAAE2kY,GAAGnlY,UAAUs3xB,yBAAyB,SAAS92xB,GAAGZ,KAAKo3xB,uBAAuBx2xB,CAAC,EAAE2kY,GAAGnlY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE1pY,GAAGnlY,UAAUwtG,SAAS,WAAW,OAAO23R,EAAE,EAAEW,GAAGmxZ,sBAAsBxjyB,IAAI,WAAW,OAAO,IAAIS,MAAM,GAAGm6B,KAAK,KAAK,EAAE3kC,OAAO0hC,iBAAiB+5W,GAAGW,IAAI,IAAIN,GAAG,WAAW,EAAE5uN,GAAG,CAAC2gnB,WAAW,CAAC1gwB,cAAa,GAAI2gwB,UAAU,CAAC3gwB,cAAa,GAAI4gwB,UAAU,CAAC5gwB,cAAa,GAAI6hvB,iBAAiB,CAAC7hvB,cAAa,GAAI4hvB,UAAU,CAAC5hvB,cAAa,GAAIm5uB,KAAK,CAACn5uB,cAAa,IAAK2uW,GAAGxlY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAErpY,GAAGxlY,UAAUwtG,SAAS,WAAW,OAAOg4R,EAAE,EAAEA,GAAGnxX,UAAU,SAAS7T,GAAG,OAAO,IAAIA,EAAEpb,KAAKytB,EAAE,EAAE2yX,GAAGjmW,UAAU,SAAS/+B,GAAG,KAAKA,EAAEpb,KAAKytB,IAAIrS,GAAGglY,GAAG+xZ,WAAW,KAAK/2xB,IAAIpb,KAAKytB,IAAIrS,GAAGglY,GAAG+xZ,WAAW,OAAO/2xB,CAAC,EAAEglY,GAAGzwX,MAAM,WAAW,GAAG,IAAIhhB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO3O,KAAK4vB,MAAMxU,EAAEjd,EAAEid,EAAEra,EAAE,CAAC,GAAG,IAAI4N,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAEwb,EAAEta,EAAEvB,EAAEuB,EAAEwzB,EAAElZ,EAAEld,EAAEqB,EAAErB,EAAE,OAAO6B,KAAK4vB,MAAM2E,EAAE10B,EAAE,CAAC,EAAEugZ,GAAGkyZ,QAAQ,SAASl3xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEra,EAAEvB,EAAEuB,EAAEwzB,EAAEnZ,EAAEjd,EAAEqB,EAAErB,EAAE,OAAO0B,GAAGwb,EAAEta,EAAEvB,EAAEuB,GAAGwzB,GAAGlZ,EAAEld,EAAEqB,EAAErB,GAAG,CAAC,EAAEiiZ,GAAGmyZ,SAAS,SAASn3xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEra,EAAEvB,EAAEuB,EAAEwzB,EAAEnZ,EAAEjd,EAAEqB,EAAErB,EAAE,OAAO0B,GAAGwb,EAAEta,EAAEvB,EAAEuB,GAAGwzB,GAAGlZ,EAAEld,EAAEqB,EAAErB,GAAG,CAAC,EAAEiiZ,GAAGoyZ,cAAc,SAASp3xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEugZ,GAAGzwX,MAAMnwB,EAAE4b,GAAGmZ,EAAE6rX,GAAGzwX,MAAMnwB,EAAE6b,GAAG,OAAOrb,KAAKM,IAAIi0B,EAAE10B,EAAE,EAAEugZ,GAAGqyZ,kBAAkB,SAASr3xB,GAAG,GAAGA,EAAE,EAAE,CAAC,KAAKA,EAAE,GAAGA,GAAGglY,GAAG+xZ,WAAW/2xB,GAAGglY,GAAG+xZ,aAAa/2xB,EAAE,EAAE,KAAK,CAAC,KAAKA,GAAGglY,GAAG+xZ,YAAY/2xB,GAAGglY,GAAG+xZ,WAAW/2xB,EAAE,IAAIA,EAAE,EAAE,CAAC,OAAOA,CAAC,EAAEglY,GAAGsyZ,aAAa,SAASt3xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEugZ,GAAGzwX,MAAMnwB,EAAE4b,GAAGmZ,EAAE6rX,GAAGzwX,MAAMnwB,EAAE6b,GAAG,OAAO+kY,GAAGvoV,KAAKh4D,EAAE00B,EAAE,EAAE6rX,GAAGvoV,KAAK,SAASz8C,EAAE5b,GAAG,IAAI6b,EAAE,KAAK,OAAOA,EAAED,EAAE5b,EAAEA,EAAE4b,EAAEA,EAAE5b,GAAGQ,KAAKytB,KAAKpS,EAAE,EAAErb,KAAKytB,GAAGpS,GAAGA,CAAC,EAAE+kY,GAAGrxX,UAAU,SAAS3T,GAAG,OAAOA,EAAEpb,KAAKytB,GAAG,GAAG,EAAE2yX,GAAGuyZ,QAAQ,SAASv3xB,EAAE5b,GAAG,IAAI6b,EAAErb,KAAK4wB,IAAIpxB,EAAE4b,GAAG,OAAOC,EAAE,EAAE+kY,GAAGkzY,iBAAiBj4wB,EAAE,EAAE+kY,GAAGizY,UAAUjzY,GAAGwqY,IAAI,EAAExqY,GAAGwyZ,qBAAqB,SAASx3xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEugZ,GAAGzwX,MAAMnwB,EAAE4b,GAAGmZ,EAAE6rX,GAAGzwX,MAAMnwB,EAAE6b,GAAGxb,EAAE,OAAO00B,IAAIv0B,KAAKytB,GAAG8G,EAAE6rX,GAAG+xZ,WAAW59wB,EAAEv0B,KAAKytB,GAAG8G,EAAE6rX,GAAG+xZ,WAAW59wB,CAAC,EAAEi9J,GAAG2gnB,WAAW9jyB,IAAI,WAAW,OAAO,EAAErO,KAAKytB,EAAE,EAAE+jK,GAAG4gnB,UAAU/jyB,IAAI,WAAW,OAAOrO,KAAKytB,GAAG,CAAC,EAAE+jK,GAAG6gnB,UAAUhkyB,IAAI,WAAW,OAAOrO,KAAKytB,GAAG,CAAC,EAAE+jK,GAAG8hmB,iBAAiBjlxB,IAAI,WAAW,OAAO68X,GAAGooZ,gBAAgB,EAAE9hmB,GAAG6hmB,UAAUhlxB,IAAI,WAAW,OAAO68X,GAAGmoZ,SAAS,EAAE7hmB,GAAGo5lB,KAAKv8wB,IAAI,WAAW,OAAO68X,GAAG0lZ,SAAS,EAAEtsxB,OAAO0hC,iBAAiBo6W,GAAG5uN,IAAI,IAAI2uN,GAAG,SAAS/kY,IAAIZ,KAAKq4xB,sBAAsB,EAAEr4xB,KAAKs4xB,oBAAoB,KAAKt4xB,KAAKu4xB,wBAAwB,EAAEv4xB,KAAKw4xB,SAAS,KAAKx4xB,KAAKuuxB,UAAU,EAAEvuxB,KAAKi2wB,gBAAgB,KAAKj2wB,KAAKy4xB,WAAW,KAAKz4xB,KAAK04xB,IAAI,KAAK14xB,KAAK24xB,IAAI,KAAK34xB,KAAK44xB,IAAI,KAAK54xB,KAAK64xB,IAAI,KAAK74xB,KAAK84xB,MAAM,IAAI7zZ,GAAGjlY,KAAK+4xB,MAAM,IAAI9zZ,GAAGjlY,KAAKg5xB,SAAS,IAAI/zZ,GAAGjlY,KAAKi5xB,SAAS,IAAIh0Z,GAAGjlY,KAAKk5xB,MAAM,EAAEl5xB,KAAKm5xB,wBAAuB,EAAG,IAAIn0yB,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKi2wB,gBAAgBjxxB,EAAEgb,KAAKy4xB,WAAW53xB,EAAEb,KAAK04xB,IAAI,IAAI7yyB,GAAGma,KAAKs4xB,oBAAoB9yyB,KAAKytB,GAAG,EAAEpS,EAAEk1xB,sBAAsBl1xB,EAAEk1xB,uBAAuB,GAAGl1xB,EAAE+0xB,iBAAiB9vZ,GAAG8uZ,aAAa50xB,KAAKu4xB,wBAAwB33xB,EAAEw4xB,4BAA4Bp5xB,KAAKosD,KAAK/mE,EAAE,EAAEwvK,GAAG,CAACwkoB,iCAAiC,CAACpiwB,cAAa,GAAIqiwB,wCAAwC,CAACriwB,cAAa,GAAIsiwB,kCAAkC,CAACtiwB,cAAa,GAAImiwB,2BAA2B,CAACniwB,cAAa,IAAK0uW,GAAGvlY,UAAUo5xB,eAAe,SAAS54xB,EAAE5b,GAAG,GAAGgb,KAAK24xB,IAAI34xB,KAAK44xB,IAAI54xB,KAAK44xB,IAAI54xB,KAAK64xB,IAAI74xB,KAAK64xB,IAAIj4xB,EAAEZ,KAAK84xB,MAAMrG,eAAezyxB,KAAK24xB,IAAI34xB,KAAK44xB,KAAK54xB,KAAKy5xB,qBAAqBz5xB,KAAK84xB,MAAM94xB,KAAKk5xB,MAAMl5xB,KAAKuuxB,UAAUvuxB,KAAKg5xB,UAAUh5xB,KAAK+4xB,MAAMtG,eAAezyxB,KAAK44xB,IAAI54xB,KAAK64xB,KAAK74xB,KAAKy5xB,qBAAqBz5xB,KAAK+4xB,MAAM/4xB,KAAKk5xB,MAAMl5xB,KAAKuuxB,UAAUvuxB,KAAKi5xB,UAAUj5xB,KAAK44xB,IAAI7wkB,OAAO/nN,KAAK64xB,KAAK,OAAO,KAAK,IAAIh4xB,EAAE6vX,GAAG2oZ,mBAAmBr5wB,KAAK24xB,IAAI34xB,KAAK44xB,IAAI54xB,KAAK64xB,KAAKxzyB,EAAEwb,IAAI6vX,GAAGmoZ,WAAW74wB,KAAKk5xB,QAAQhtb,GAAGv7G,MAAM9vP,IAAI6vX,GAAGooZ,kBAAkB94wB,KAAKk5xB,QAAQhtb,GAAGt6G,MAAM,IAAI/wP,EAAEb,KAAK05xB,aAAa10yB,GAAGK,EAAE2a,KAAK25xB,eAAe94xB,EAAE7b,GAAGgb,KAAK45xB,cAAc/4xB,EAAE7b,EAAE,EAAE2gZ,GAAGvlY,UAAUy5xB,cAAc,SAASj5xB,EAAE5b,GAAG,IAAI6b,EAAE,IAAIokY,GAAGrkY,EAAE5b,GAAGK,EAAE,IAAI4/Y,GAAGjlY,KAAKy5xB,qBAAqB54xB,EAAEqrW,GAAGv7G,KAAK3wP,KAAKuuxB,UAAUlpyB,GAAG,IAAI00B,EAAE,IAAIkrX,GAAGjlY,KAAKy5xB,qBAAqB54xB,EAAEqrW,GAAGt6G,MAAM5xP,KAAKuuxB,UAAUx0wB,GAAG,IAAI4pD,EAAE3+E,EAAEuB,EAAEqa,EAAEra,EAAEtD,EAAE+B,EAAErB,EAAEid,EAAEjd,EAAEiW,EAAEpU,KAAK4vB,MAAMnyB,EAAE0gF,GAAG,OAAO3jE,KAAKy4xB,WAAW/C,kBAAkB,KAAK5vZ,GAAG4uZ,UAAU10xB,KAAKw4xB,SAASlB,MAAMjyyB,EAAEkgC,IAAIvlB,KAAK85xB,aAAa90yB,EAAE4U,EAAEpU,KAAKytB,GAAG,EAAErZ,EAAEpU,KAAKytB,GAAG,EAAEy9W,GAAGmoZ,UAAU74wB,KAAKuuxB,WAAWvuxB,KAAKw4xB,SAASlB,MAAMv9wB,EAAEwL,IAAI,MAAM,KAAKugX,GAAGwvZ,SAASt1xB,KAAKw4xB,SAASlB,MAAMjyyB,EAAEkgC,IAAIvlB,KAAKw4xB,SAASlB,MAAMv9wB,EAAEwL,IAAI,MAAM,KAAKugX,GAAGyvZ,WAAW,IAAI7xsB,EAAE,IAAI1qE,EAAE0qE,EAAEn9F,EAAEf,KAAKM,IAAIka,KAAKuuxB,WAAW/oyB,KAAK6xB,IAAIzd,GAAG8pF,EAAE//F,EAAE6B,KAAKM,IAAIka,KAAKuuxB,WAAW/oyB,KAAK4wB,IAAIxc,GAAG,IAAI4e,EAAE,IAAIQ,EAAE3zB,EAAEkgC,GAAGh/B,EAAEm9F,EAAEn9F,EAAElB,EAAEkgC,GAAG5hC,EAAE+/F,EAAE//F,GAAGiC,EAAE,IAAIozB,EAAEe,EAAEwL,GAAGh/B,EAAEm9F,EAAEn9F,EAAEwzB,EAAEwL,GAAG5hC,EAAE+/F,EAAE//F,GAAGqc,KAAKw4xB,SAASlB,MAAM9+wB,GAAGxY,KAAKw4xB,SAASlB,MAAM1xyB,GAAG,EAAE+/Y,GAAGvlY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKw4xB,SAAS1Z,gBAAgB,EAAEn5Y,GAAGvlY,UAAU25xB,aAAa,SAASn5xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,GAAE,EAAG4pD,EAAE,KAAK,IAAIA,EAAElyD,EAAEkzM,aAAa3/N,EAAEgjF,GAAGhjF,EAAEugC,GAAG1kB,EAAEmnE,GAAGnnE,EAAE0kB,KAAKlgC,GAAG,EAAE,EAAEs+E,EAAEprE,SAASqI,GAAGpb,KAAKM,IAAIT,IAAI2a,KAAKy4xB,WAAWzC,kBAAkBj8wB,GAAE,EAAG,CAAC,MAAMnZ,GAAG,KAAKA,aAAa0Z,GAAG,MAAM1Z,EAAE+iE,EAAE,IAAI3qD,EAAE,EAAE,GAAGe,GAAE,CAAE,CAACA,EAAE/Z,KAAKw4xB,SAASlB,MAAM3ztB,GAAG3jE,KAAKg6xB,oBAAoBh1yB,EAAE6b,EAAExb,EAAE2a,KAAKy4xB,WAAWzC,gBAAgB,EAAErwZ,GAAGvlY,UAAU65xB,gBAAgB,SAASr5xB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE3+E,EAAEuB,EAAEqa,EAAEra,EAAEtD,EAAE+B,EAAErB,EAAEid,EAAEjd,EAAEiW,EAAEpU,KAAK4vB,MAAMnyB,EAAE0gF,GAAG+f,EAAE7iF,EAAEta,EAAEqa,EAAEra,EAAEiyB,EAAE3X,EAAEld,EAAEid,EAAEjd,EAAEiC,EAAEJ,KAAK4vB,MAAMoD,EAAEkrE,GAAGr+F,IAAIqrY,GAAGmoZ,UAAUj/wB,GAAGhU,IAAIgU,GAAG,EAAEpU,KAAKytB,IAAIrZ,GAAGhU,IAAIgU,GAAG,EAAEpU,KAAKytB,IAAIjT,KAAKw4xB,SAASlB,MAAMtyyB,GAAGgb,KAAK85xB,aAAal5xB,EAAEhH,EAAEhU,EAAEP,EAAE00B,GAAG/Z,KAAKw4xB,SAASlB,MAAMz2xB,EAAE,EAAE8kY,GAAGvlY,UAAUu5xB,eAAe,SAAS/4xB,EAAE5b,GAAG,GAAGgb,KAAKg5xB,SAASzzwB,GAAGhtB,SAASyH,KAAKi5xB,SAASjxtB,IAAIhoE,KAAKuuxB,UAAU5oZ,GAAG0zZ,iCAAiC,OAAOr5xB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKg5xB,SAASzzwB,IAAI,KAAKvlB,KAAKy4xB,WAAW7C,iBAAiB9vZ,GAAG0vZ,WAAWx1xB,KAAK+5xB,aAAa/5xB,KAAK44xB,IAAI54xB,KAAKg5xB,SAASh5xB,KAAKi5xB,SAASj5xB,KAAKuuxB,WAAWvuxB,KAAKy4xB,WAAW7C,iBAAiB9vZ,GAAG2vZ,WAAWz1xB,KAAKk6xB,aAAal6xB,KAAKg5xB,SAASh5xB,KAAKi5xB,WAAWj0yB,GAAGgb,KAAKw4xB,SAASlB,MAAMt3xB,KAAKg5xB,SAASzzwB,IAAIvlB,KAAKi6xB,gBAAgBj6xB,KAAK44xB,IAAI54xB,KAAKg5xB,SAASzzwB,GAAGvlB,KAAKi5xB,SAASjxtB,GAAGpnE,EAAEZ,KAAKuuxB,WAAWvuxB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKi5xB,SAASjxtB,IAAI,EAAE29T,GAAGvlY,UAAU+5xB,aAAa,SAASv5xB,GAAGZ,KAAKw4xB,SAASlB,MAAM,IAAIt+wB,EAAEpY,EAAEra,EAAEyZ,KAAKuuxB,UAAU3txB,EAAEjd,EAAEqc,KAAKuuxB,YAAYvuxB,KAAKw4xB,SAASlB,MAAM,IAAIt+wB,EAAEpY,EAAEra,EAAEyZ,KAAKuuxB,UAAU3txB,EAAEjd,EAAEqc,KAAKuuxB,YAAYvuxB,KAAKw4xB,SAASlB,MAAM,IAAIt+wB,EAAEpY,EAAEra,EAAEyZ,KAAKuuxB,UAAU3txB,EAAEjd,EAAEqc,KAAKuuxB,YAAYvuxB,KAAKw4xB,SAASlB,MAAM,IAAIt+wB,EAAEpY,EAAEra,EAAEyZ,KAAKuuxB,UAAU3txB,EAAEjd,EAAEqc,KAAKuuxB,YAAYvuxB,KAAKw4xB,SAAS5b,WAAW,EAAEj3Y,GAAGvlY,UAAUg6xB,YAAY,SAASx5xB,EAAE5b,GAAGgb,KAAKw4xB,SAASf,OAAO72xB,EAAE5b,EAAE,EAAE2gZ,GAAGvlY,UAAUi6xB,gBAAgB,WAAWr6xB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKi5xB,SAASjxtB,GAAG,EAAE29T,GAAGvlY,UAAUk6xB,eAAe,WAAWt6xB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKi5xB,SAAS1zwB,GAAG,EAAEogX,GAAGvlY,UAAUm6xB,iBAAiB,SAAS35xB,EAAE5b,EAAE6b,GAAGb,KAAK44xB,IAAIh4xB,EAAEZ,KAAK64xB,IAAI7zyB,EAAEgb,KAAKk5xB,MAAMr4xB,EAAEb,KAAK+4xB,MAAMtG,eAAe7xxB,EAAE5b,GAAGgb,KAAKy5xB,qBAAqBz5xB,KAAK+4xB,MAAMl4xB,EAAEb,KAAKuuxB,UAAUvuxB,KAAKi5xB,SAAS,EAAEtzZ,GAAGvlY,UAAU45xB,oBAAoB,SAASp5xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/Z,KAAK84xB,MAAMvzwB,GAAGo+C,EAAEiiU,GAAGzwX,MAAM4E,EAAE/Z,KAAK84xB,MAAM9wtB,IAAI/kF,EAAE2iZ,GAAGwyZ,qBAAqBp4xB,KAAK84xB,MAAM9wtB,GAAGjuD,EAAE/Z,KAAK+4xB,MAAMxzwB,IAAI,EAAE3rB,EAAEgsY,GAAGjmW,UAAUgkC,EAAE1gF,GAAGygG,EAAEkiT,GAAGjmW,UAAU/lC,EAAEpU,KAAKytB,IAAIuF,EAAEnzB,EAAEwb,EAAEjb,EAAEib,EAAE2X,EAAEhzB,KAAKM,IAAIN,KAAK4wB,IAAInzB,IAAIkd,EAAE4Z,EAAExzB,EAAEiyB,EAAEhzB,KAAK6xB,IAAIqsE,GAAGrgG,EAAE02B,EAAEp2B,EAAE60B,EAAEhzB,KAAK4wB,IAAIstE,GAAGhiF,EAAE,IAAIsX,EAAE7Y,EAAE9c,GAAGse,EAAE,IAAIsjY,GAAGlrX,EAAErY,GAAGne,EAAEoe,EAAE6wxB,iBAAiB,EAAE5syB,GAAGjC,EAAEge,EAAE6wxB,iBAAiB,GAAG5syB,GAAGoa,KAAKk5xB,QAAQhtb,GAAGv7G,MAAM3wP,KAAKw4xB,SAASlB,MAAM/zyB,GAAGyc,KAAKw4xB,SAASlB,MAAM3zyB,KAAKqc,KAAKw4xB,SAASlB,MAAM3zyB,GAAGqc,KAAKw4xB,SAASlB,MAAM/zyB,GAAG,EAAEoiZ,GAAGvlY,UAAUq5xB,qBAAqB,SAAS74xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/0B,IAAIknX,GAAGv7G,KAAK,GAAG,EAAEhtL,EAAE/iE,EAAE2kB,GAAGh/B,EAAEqa,EAAEonE,GAAGzhF,EAAEtD,EAAE2d,EAAE2kB,GAAG5hC,EAAEid,EAAEonE,GAAGrkF,EAAEiW,EAAEpU,KAAK0vB,KAAKyuD,EAAEA,EAAE1gF,EAAEA,GAAGygG,EAAE3pE,EAAElZ,EAAE8iE,EAAE/pE,EAAE4e,EAAEuB,EAAElZ,EAAE5d,EAAE2W,EAAEvU,EAAE2iF,GAAGzhF,EAAEqa,EAAEonE,GAAGzhF,EAAEiyB,EAAEnzB,EAAE2iF,GAAGrkF,EAAEid,EAAEonE,GAAGrkF,EAAE+/F,EAAEr+F,EAAEkgC,GAAGh/B,EAAEqa,EAAE2kB,GAAGh/B,EAAEiyB,EAAEnzB,EAAEkgC,GAAG5hC,EAAEid,EAAE2kB,GAAG5hC,EAAE+/F,CAAC,EAAEiiT,GAAGvlY,UAAU05xB,aAAa,SAASl5xB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAEt+E,IAAIqrY,GAAGmoZ,WAAW,EAAE,EAAE51xB,EAAEuC,KAAKM,IAAId,EAAE6b,GAAGjH,EAAEpU,KAAKwpxB,MAAM/rxB,EAAE+c,KAAKs4xB,oBAAoB,IAAI,GAAG1+xB,EAAE,EAAE,OAAO,KAAK,IAAI,IAAI8pF,EAAEzgG,EAAE2W,EAAE4e,EAAE,EAAE5yB,EAAE,IAAIozB,EAAER,EAAEv1B,GAAG,CAAC,IAAIkd,EAAEnb,EAAE2+E,EAAEnrD,EAAE5yB,EAAEW,EAAEqa,EAAEra,EAAEwzB,EAAEv0B,KAAK6xB,IAAIlX,GAAGva,EAAEjC,EAAEid,EAAEjd,EAAEo2B,EAAEv0B,KAAK4wB,IAAIjW,GAAGH,KAAKw4xB,SAASlB,MAAM1xyB,GAAG4yB,GAAGkrE,CAAC,CAAC,EAAEiiT,GAAGvlY,UAAUw5xB,cAAc,SAASh5xB,EAAE5b,GAAG,GAAGgb,KAAK04xB,IAAI7hB,oBAAoB72wB,KAAKg5xB,SAAShxtB,GAAGhoE,KAAKg5xB,SAASzzwB,GAAGvlB,KAAKi5xB,SAASjxtB,GAAGhoE,KAAKi5xB,SAAS1zwB,IAAIvlB,KAAK04xB,IAAIxhB,kBAAkBl3wB,KAAKw4xB,SAASlB,MAAMt3xB,KAAK04xB,IAAIz4X,gBAAgB,SAAS,GAAGjga,KAAKm5xB,wBAAuB,EAAGn5xB,KAAKg5xB,SAASzzwB,GAAGhtB,SAASyH,KAAKi5xB,SAASjxtB,IAAIhoE,KAAKuuxB,UAAU5oZ,GAAG2zZ,wCAAwCt5xB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKg5xB,SAASzzwB,QAAQ,CAAC,GAAGvlB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKg5xB,SAASzzwB,IAAIvlB,KAAKu4xB,wBAAwB,EAAE,CAAC,IAAI13xB,EAAE,IAAImY,GAAGhZ,KAAKu4xB,wBAAwBv4xB,KAAKg5xB,SAASzzwB,GAAGh/B,EAAEyZ,KAAK44xB,IAAIryyB,IAAIyZ,KAAKu4xB,wBAAwB,IAAIv4xB,KAAKu4xB,wBAAwBv4xB,KAAKg5xB,SAASzzwB,GAAG5hC,EAAEqc,KAAK44xB,IAAIj1yB,IAAIqc,KAAKu4xB,wBAAwB,IAAIv4xB,KAAKw4xB,SAASlB,MAAMz2xB,GAAG,IAAIxb,EAAE,IAAI2zB,GAAGhZ,KAAKu4xB,wBAAwBv4xB,KAAKi5xB,SAASjxtB,GAAGzhF,EAAEyZ,KAAK44xB,IAAIryyB,IAAIyZ,KAAKu4xB,wBAAwB,IAAIv4xB,KAAKu4xB,wBAAwBv4xB,KAAKi5xB,SAASjxtB,GAAGrkF,EAAEqc,KAAK44xB,IAAIj1yB,IAAIqc,KAAKu4xB,wBAAwB,IAAIv4xB,KAAKw4xB,SAASlB,MAAMjyyB,EAAE,MAAM2a,KAAKw4xB,SAASlB,MAAMt3xB,KAAK44xB,KAAK54xB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKi5xB,SAASjxtB,GAAG,CAAC,EAAE29T,GAAGvlY,UAAUo6xB,aAAa,SAAS55xB,GAAG,IAAI5b,EAAE,IAAIg0B,EAAEpY,EAAEra,EAAEyZ,KAAKuuxB,UAAU3txB,EAAEjd,GAAGqc,KAAKw4xB,SAASlB,MAAMtyyB,GAAGgb,KAAK85xB,aAAal5xB,EAAE,EAAE,EAAEpb,KAAKytB,IAAI,EAAEjT,KAAKuuxB,WAAWvuxB,KAAKw4xB,SAAS5b,WAAW,EAAEj3Y,GAAGvlY,UAAU85xB,aAAa,SAASt5xB,EAAE5b,GAAGgb,KAAKw4xB,SAASlB,MAAM12xB,EAAE2kB,IAAIvlB,KAAKw4xB,SAASlB,MAAMtyyB,EAAEgjF,GAAG,EAAE29T,GAAGvlY,UAAUgsD,KAAK,SAASxrD,GAAGZ,KAAKuuxB,UAAU3txB,EAAEZ,KAAKq4xB,sBAAsBz3xB,GAAG,EAAEpb,KAAK6xB,IAAIrX,KAAKs4xB,oBAAoB,IAAIt4xB,KAAKw4xB,SAAS,IAAIjzZ,GAAGvlY,KAAKw4xB,SAASrhB,kBAAkBn3wB,KAAKi2wB,iBAAiBj2wB,KAAKw4xB,SAASd,yBAAyB92xB,EAAE+kY,GAAG4zZ,kCAAkC,EAAE5zZ,GAAGvlY,UAAUs5xB,aAAa,SAAS94xB,GAAGZ,KAAK04xB,IAAI7hB,oBAAoB72wB,KAAK24xB,IAAI34xB,KAAK44xB,IAAI54xB,KAAK44xB,IAAI54xB,KAAK64xB,KAAK74xB,KAAK04xB,IAAI3hB,sBAAsB,IAAI/2wB,KAAKy4xB,WAAW7C,iBAAiB9vZ,GAAG2vZ,YAAYz1xB,KAAKy4xB,WAAW7C,iBAAiB9vZ,GAAG0vZ,YAAY50xB,GAAGZ,KAAKw4xB,SAASlB,MAAMt3xB,KAAKg5xB,SAASzzwB,IAAIvlB,KAAKw4xB,SAASlB,MAAMt3xB,KAAKi5xB,SAASjxtB,KAAKhoE,KAAKi6xB,gBAAgBj6xB,KAAK44xB,IAAI54xB,KAAKg5xB,SAASzzwB,GAAGvlB,KAAKi5xB,SAASjxtB,GAAG0oT,GAAGmoZ,UAAU74wB,KAAKuuxB,WAAW,EAAE5oZ,GAAGvlY,UAAUw8wB,UAAU,WAAW58wB,KAAKw4xB,SAAS5b,WAAW,EAAEj3Y,GAAGvlY,UAAUq6xB,sBAAsB,WAAW,OAAOz6xB,KAAKm5xB,sBAAsB,EAAExzZ,GAAGvlY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEtpY,GAAGvlY,UAAUwtG,SAAS,WAAW,OAAO+3R,EAAE,EAAE9wO,GAAGwkoB,iCAAiCxlyB,IAAI,WAAW,MAAM,IAAI,EAAEghK,GAAGykoB,wCAAwCzlyB,IAAI,WAAW,MAAM,IAAI,EAAEghK,GAAG0koB,kCAAkC1lyB,IAAI,WAAW,OAAO,IAAI,EAAEghK,GAAGukoB,2BAA2BvlyB,IAAI,WAAW,OAAO,EAAE,EAAE/J,OAAO0hC,iBAAiBm6W,GAAG9wO,IAAI,IAAI6wO,GAAG,WAAW1lY,KAAKuuxB,UAAU,EAAEvuxB,KAAKi2wB,gBAAgB,KAAKj2wB,KAAKy4xB,WAAW,KAAK,IAAI73xB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKi2wB,gBAAgBr1wB,EAAEZ,KAAKy4xB,WAAWzzyB,CAAC,EAAE0gZ,GAAGtlY,UAAUs6xB,eAAe,SAAS95xB,EAAE5b,GAAG,GAAGgb,KAAKuuxB,UAAUvpyB,EAAE,IAAIA,EAAE,OAAO,KAAK,IAAI6b,EAAE7b,EAAE,EAAEK,EAAEG,KAAKM,IAAId,GAAG+0B,EAAE/Z,KAAK26xB,UAAUt1yB,GAAGub,EAAExM,QAAQ,EAAE4L,KAAK46xB,kBAAkBh6xB,EAAE,GAAGmZ,GAAG/Z,KAAK66xB,mBAAmBj6xB,EAAEC,EAAEkZ,GAAG,IAAI4pD,EAAE5pD,EAAE+kwB,iBAAiB,OAAOj+wB,GAAG4iY,GAAG3yX,QAAQ6yD,GAAGA,CAAC,EAAE+hU,GAAGtlY,UAAU06xB,8BAA8B,SAASl6xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE2a,KAAK+6xB,kBAAkB/6xB,KAAKuuxB,WAAW,GAAGvpyB,EAAE,CAAC6b,EAAEu5xB,YAAYx5xB,GAAE,GAAI,IAAImZ,EAAEqsX,GAAG6wZ,SAASr2xB,GAAGvb,GAAGs+E,EAAE5pD,EAAE3lB,OAAO,EAAEyM,EAAE05xB,iBAAiBxgxB,EAAE4pD,GAAG5pD,EAAE4pD,EAAE,GAAGuoS,GAAGv7G,MAAM9vP,EAAEw5xB,kBAAkB,IAAI,IAAIp3yB,EAAE0gF,EAAE,EAAE1gF,GAAG,EAAEA,IAAI4d,EAAE24xB,eAAez/wB,EAAE92B,IAAG,EAAG,KAAK,CAAC4d,EAAEu5xB,YAAYx5xB,GAAE,GAAI,IAAIhH,EAAEwsY,GAAG6wZ,SAASr2xB,EAAEvb,GAAGq+F,EAAE9pF,EAAExF,OAAO,EAAEyM,EAAE05xB,iBAAiB3gyB,EAAE,GAAGA,EAAE,GAAGsyW,GAAGv7G,MAAM9vP,EAAEw5xB,kBAAkB,IAAI,IAAI7hxB,EAAE,EAAEA,GAAGkrE,EAAElrE,IAAI3X,EAAE24xB,eAAe5/xB,EAAE4e,IAAG,EAAG,CAAC3X,EAAEy5xB,iBAAiBz5xB,EAAE+7wB,WAAW,EAAEl3Y,GAAGtlY,UAAU46xB,uBAAuB,SAASp6xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE2a,KAAK+6xB,kBAAkB/6xB,KAAKuuxB,WAAWvpyB,IAAIknX,GAAGt6G,QAAQvsQ,GAAGA,GAAG,IAAI00B,EAAEqsX,GAAG6wZ,SAASr2xB,EAAEvb,GAAGs+E,EAAE5pD,EAAE3lB,OAAO,EAAEyM,EAAE05xB,iBAAiBxgxB,EAAE4pD,EAAE,GAAG5pD,EAAE,GAAG/0B,GAAG,IAAI,IAAI/B,EAAE,EAAEA,GAAG0gF,EAAE1gF,IAAI,CAAC,IAAI2W,EAAE,IAAI3W,EAAE4d,EAAE24xB,eAAez/wB,EAAE92B,GAAG2W,EAAE,CAACiH,EAAE+7wB,WAAW,EAAEl3Y,GAAGtlY,UAAU66xB,uBAAuB,SAASr6xB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK+6xB,kBAAkB/6xB,KAAKuuxB,WAAWlpyB,EAAE+gZ,GAAG6wZ,SAASr2xB,EAAEC,GAAGkZ,EAAE10B,EAAE+O,OAAO,EAAEpP,EAAEu1yB,iBAAiBl1yB,EAAE,GAAGA,EAAE,GAAG6mX,GAAGv7G,MAAM,IAAI,IAAIhtL,EAAE,EAAEA,GAAG5pD,EAAE4pD,IAAI3+E,EAAEw0yB,eAAen0yB,EAAEs+E,IAAG,GAAI3+E,EAAEs1yB,iBAAiBt1yB,EAAE60yB,cAAcx0yB,EAAE00B,EAAE,GAAG10B,EAAE00B,IAAI,IAAI92B,EAAEmjZ,GAAG6wZ,SAASr2xB,GAAGC,GAAGjH,EAAE3W,EAAEmR,OAAO,EAAEpP,EAAEu1yB,iBAAiBt3yB,EAAE2W,GAAG3W,EAAE2W,EAAE,GAAGsyW,GAAGv7G,MAAM,IAAI,IAAIjtK,EAAE9pF,EAAE,EAAE8pF,GAAG,EAAEA,IAAI1+F,EAAEw0yB,eAAev2yB,EAAEygG,IAAG,GAAI1+F,EAAEs1yB,iBAAiBt1yB,EAAE60yB,cAAc52yB,EAAE,GAAGA,EAAE,IAAI+B,EAAE43xB,WAAW,EAAEl3Y,GAAGtlY,UAAUw6xB,kBAAkB,SAASh6xB,EAAE5b,GAAG,OAAOgb,KAAKy4xB,WAAW/C,kBAAkB,KAAK5vZ,GAAG4uZ,UAAU1vyB,EAAEw1yB,aAAa55xB,GAAG,MAAM,KAAKklY,GAAGyvZ,WAAWvwyB,EAAEm1yB,aAAav5xB,GAAG,EAAE8kY,GAAGtlY,UAAU86xB,aAAa,SAASt6xB,EAAE5b,GAAG,GAAGgb,KAAKuuxB,UAAUvpyB,EAAEA,EAAE,IAAIgb,KAAKy4xB,WAAW9C,gBAAgB,OAAO,KAAK,GAAG,IAAI3wyB,EAAE,OAAO,KAAK,IAAI6b,EAAErb,KAAKM,IAAId,GAAGK,EAAE2a,KAAK26xB,UAAU95xB,GAAG,GAAGD,EAAExM,QAAQ,EAAE4L,KAAK46xB,kBAAkBh6xB,EAAE,GAAGvb,QAAQ,GAAG2a,KAAKy4xB,WAAW9C,gBAAgB,CAAC,IAAI57wB,EAAE/0B,EAAE,EAAEgb,KAAK86xB,8BAA8Bl6xB,EAAEmZ,EAAE10B,EAAE,MAAM2a,KAAKi7xB,uBAAuBr6xB,EAAEvb,GAAG,OAAOA,EAAEy5xB,gBAAgB,EAAEp5Y,GAAGtlY,UAAU+6xB,oBAAoB,WAAW,OAAOn7xB,KAAKy4xB,UAAU,EAAE/yZ,GAAGtlY,UAAU26xB,kBAAkB,SAASn6xB,GAAG,OAAOA,EAAEZ,KAAKy4xB,WAAW3C,mBAAmB,EAAEpwZ,GAAGtlY,UAAUg7xB,aAAa,SAASx6xB,EAAE5b,EAAE6b,GAAG,GAAGb,KAAKuuxB,UAAU1txB,EAAED,EAAExM,QAAQ,EAAE,OAAO4L,KAAKk7xB,aAAat6xB,EAAEC,GAAG,GAAG,IAAIA,EAAE,OAAO6kY,GAAG21Z,gBAAgBz6xB,GAAG,IAAIvb,EAAE2a,KAAK26xB,UAAU95xB,GAAG,OAAOb,KAAKg7xB,uBAAuBp6xB,EAAE5b,EAAEK,GAAGA,EAAEy5xB,gBAAgB,EAAEp5Y,GAAGtlY,UAAUy6xB,mBAAmB,SAASj6xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE2a,KAAK+6xB,kBAAkB/6xB,KAAKuuxB,WAAW,GAAGvpyB,EAAE,CAAC,IAAI+0B,EAAEqsX,GAAG6wZ,SAASr2xB,GAAGvb,GAAGs+E,EAAE5pD,EAAE3lB,OAAO,EAAEyM,EAAE05xB,iBAAiBxgxB,EAAE4pD,GAAG5pD,EAAE4pD,EAAE,GAAGuoS,GAAGv7G,MAAM9vP,EAAEw5xB,kBAAkB,IAAI,IAAIp3yB,EAAE0gF,EAAE,EAAE1gF,GAAG,EAAEA,IAAI4d,EAAE24xB,eAAez/wB,EAAE92B,IAAG,EAAG,KAAK,CAAC,IAAI2W,EAAEwsY,GAAG6wZ,SAASr2xB,EAAEvb,GAAGq+F,EAAE9pF,EAAExF,OAAO,EAAEyM,EAAE05xB,iBAAiB3gyB,EAAE,GAAGA,EAAE,GAAGsyW,GAAGv7G,MAAM9vP,EAAEw5xB,kBAAkB,IAAI,IAAI7hxB,EAAE,EAAEA,GAAGkrE,EAAElrE,IAAI3X,EAAE24xB,eAAe5/xB,EAAE4e,IAAG,EAAG,CAAC3X,EAAEy5xB,gBAAgB,EAAE50Z,GAAGtlY,UAAUu6xB,UAAU,SAAS/5xB,GAAG,OAAO,IAAI+kY,GAAG3lY,KAAKi2wB,gBAAgBj2wB,KAAKy4xB,WAAW73xB,EAAE,EAAE8kY,GAAGtlY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEvpY,GAAGtlY,UAAUwtG,SAAS,WAAW,OAAO83R,EAAE,EAAEA,GAAG21Z,gBAAgB,SAASz6xB,GAAG,IAAI,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAExM,QAAQq6B,KAAK,MAAM5tB,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI7b,EAAE6b,GAAG,IAAImY,EAAEpY,EAAEC,IAAI,OAAO7b,CAAC,EAAE,IAAIghZ,GAAG,WAAWhmY,KAAKs7xB,WAAW,KAAKt7xB,KAAKq5iB,KAAK,IAAIp0K,GAAGjlY,KAAKu7xB,KAAK,IAAI7qa,GAAG,IAAI9vX,EAAEzM,UAAU,GAAG6L,KAAKs7xB,WAAW16xB,CAAC,EAAEqlY,GAAG,CAACu1Z,aAAa,CAACvkwB,cAAa,IAAK+uW,GAAG5lY,UAAUq7xB,oBAAoB,WAAW,GAAG,IAAItnyB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,IAAI6+Y,GAAGhjY,EAAEb,KAAKs7xB,WAAWp5xB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOiyB,EAAE10B,EAAEkkN,cAAc3oM,EAAEjd,EAAEo2B,EAAEy5vB,WAAW5ywB,EAAEjd,EAAEo2B,EAAEu5vB,WAAWtzwB,KAAKy7xB,oBAAoB76xB,EAAEvb,EAAEwgyB,mBAAmB7gyB,EAAE,CAAC,OAAOA,CAAC,CAAC,GAAG,IAAImP,UAAUC,OAAO,GAAGsmB,EAAEvmB,UAAU,GAAGyuY,KAAKzuY,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAa63W,IAAG,IAAI,IAAIroS,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAAEzgG,EAAE+gyB,UAAUlF,iBAAiBtmwB,EAAE,EAAEA,EAAEkrE,EAAEtvF,OAAO,EAAEokB,IAA8F,GAAzFxY,KAAKq5iB,KAAKrxe,GAAG0b,EAAElrE,GAAGxY,KAAKq5iB,KAAK9zhB,GAAGm+D,EAAElrE,EAAE,GAAGxY,KAAKq5iB,KAAKrxe,GAAGrkF,EAAEqc,KAAKq5iB,KAAK9zhB,GAAG5hC,GAAGqc,KAAKq5iB,KAAKvoiB,YAAetrB,KAAKmE,IAAIqW,KAAKq5iB,KAAKrxe,GAAGzhF,EAAEyZ,KAAKq5iB,KAAK9zhB,GAAGh/B,GAAGo9E,EAAEp9E,GAAMyZ,KAAKq5iB,KAAK7lgB,gBAAgBmwB,EAAEhgF,EAAEqc,KAAKq5iB,KAAKrxe,GAAGrkF,GAAGggF,EAAEhgF,EAAEqc,KAAKq5iB,KAAK9zhB,GAAG5hC,GAAG+sY,GAAG2oZ,mBAAmBr5wB,KAAKq5iB,KAAKrxe,GAAGhoE,KAAKq5iB,KAAK9zhB,GAAGo+C,KAAK+sT,GAAG9+H,OAAO,CAAC,IAAIhsQ,EAAE3C,EAAEyza,SAASxqD,GAAGv7G,MAAM3wP,KAAKq5iB,KAAKrxe,GAAG+/I,OAAOrkI,EAAElrE,MAAM5yB,EAAE3C,EAAEyza,SAASxqD,GAAGt6G,QAAQ,IAAIzxP,EAAE,IAAIomY,GAAGvmY,KAAKq5iB,KAAKzzjB,GAAGgU,EAAEtG,IAAI6M,EAAE,OAAO,GAAGua,EAAEvmB,UAAU,GAAGyuY,KAAKzuY,UAAU,aAAa6kB,GAAG0B,EAAEvmB,UAAU,GAAGyuY,IAAI,IAAI,IAAIv/Y,EAAE8Q,UAAU,GAAkBwN,EAAExN,UAAU,GAAG5Q,EAA5B4Q,UAAU,GAAsB+N,WAAW3e,EAAEm4xB,WAAW,CAAC,IAAI/3xB,EAAEJ,EAAEuE,OAAOnE,EAAEygyB,aAAapkxB,KAAKy7xB,oBAAoBp4yB,EAAEM,EAAEge,EAAE,CAAC,EAAEqkY,GAAG5lY,UAAUs2Z,SAAS,SAAS91Z,GAAG,IAAI5b,EAAEgb,KAAKy7xB,oBAAoB76xB,GAAG,OAAG,IAAI5b,EAAE+tB,OAAc,EAAS84V,GAAGniX,IAAI1E,GAAG02yB,UAAU,EAAE11Z,GAAG5lY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjpY,GAAG5lY,UAAUwtG,SAAS,WAAW,OAAOo4R,EAAE,EAAEC,GAAGu1Z,aAAa3nyB,IAAI,WAAW,OAAO0yY,EAAE,EAAEz8Y,OAAO0hC,iBAAiBw6W,GAAGC,IAAI,IAAIM,GAAG,WAAWvmY,KAAK27xB,WAAW,KAAK37xB,KAAK07xB,WAAW,KAAK,IAAI96xB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK27xB,WAAW,IAAI12Z,GAAGrkY,GAAGZ,KAAK07xB,WAAW12yB,CAAC,EAAEuhZ,GAAGnmY,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,GAAGZ,KAAK27xB,WAAWvjvB,QAAQpzD,EAAE22yB,WAAWzjvB,OAAO,OAAO,EAAE,GAAGl4C,KAAK27xB,WAAWzjvB,QAAQlzD,EAAE22yB,WAAWvjvB,OAAO,OAAO,EAAE,IAAIv3C,EAAEb,KAAK27xB,WAAW30lB,iBAAiBhiN,EAAE22yB,YAAY,OAAO,IAAI96xB,GAAI,IAAIA,GAAG,EAAE7b,EAAE22yB,WAAW30lB,iBAAiBhnM,KAAK27xB,aAA9C96xB,EAA6Db,KAAK27xB,WAAWjzlB,UAAU1jN,EAAE22yB,WAAW,EAAEp1Z,GAAGnmY,UAAUw7xB,SAAS,SAASh7xB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEonE,GAAG0gI,UAAU1jN,EAAEgjF,IAAI,OAAO,IAAInnE,EAAEA,EAAED,EAAE2kB,GAAGmjL,UAAU1jN,EAAEugC,GAAG,EAAEghX,GAAGnmY,UAAUpZ,SAAS,WAAW,OAAOgZ,KAAK27xB,WAAW30yB,UAAU,EAAEu/Y,GAAGnmY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEqtX,GAAGnmY,UAAUwtG,SAAS,WAAW,OAAO24R,EAAE,EAAE,IAAIO,GAAG,SAASlmY,EAAE5b,EAAE6b,GAAGb,KAAKgoE,GAAGpnE,GAAG,KAAKZ,KAAKulB,GAAGvgC,GAAG,KAAKgb,KAAKwlB,GAAG3kB,GAAG,IAAI,EAAEimY,GAAG1mY,UAAU0uB,KAAK,WAAW,OAAOg4W,GAAGh4W,KAAK9uB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU44wB,WAAW,WAAW,OAAOlyY,GAAGkyY,WAAWh5wB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAUy7xB,aAAa,SAASj7xB,GAAG,GAAG,OAAOA,EAAE,MAAM,IAAIzd,EAAE,2BAA2B,OAAO2jZ,GAAG+0Z,aAAaj7xB,EAAEZ,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU07xB,kBAAkB,WAAW,OAAOh1Z,GAAGg1Z,kBAAkB97xB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU03xB,QAAQ,WAAW,OAAOhxZ,GAAGgxZ,QAAQ93xB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU27xB,aAAa,WAAW,OAAOj1Z,GAAGi1Z,aAAa/7xB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU47xB,OAAO,WAAW,OAAOl1Z,GAAGk1Z,OAAOh8xB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAUs2Y,SAAS,WAAW,OAAO5P,GAAG4P,SAAS12Y,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU67xB,SAAS,WAAW,OAAOn1Z,GAAGm1Z,SAASj8xB,KAAKgoE,GAAGhoE,KAAKulB,GAAGvlB,KAAKwlB,GAAG,EAAEshX,GAAG1mY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnoY,GAAG1mY,UAAUwtG,SAAS,WAAW,OAAOk5R,EAAE,EAAEA,GAAGh4W,KAAK,SAASluB,EAAE5b,EAAE6b,GAAG,OAAOrb,KAAKM,MAAM+a,EAAEta,EAAEqa,EAAEra,IAAIvB,EAAErB,EAAEid,EAAEjd,IAAIqB,EAAEuB,EAAEqa,EAAEra,IAAIsa,EAAEld,EAAEid,EAAEjd,IAAI,EAAE,EAAEmjZ,GAAGkyY,WAAW,SAASp4wB,EAAE5b,EAAE6b,GAAG,QAAQA,EAAEta,EAAEqa,EAAEra,IAAIvB,EAAErB,EAAEid,EAAEjd,IAAIqB,EAAEuB,EAAEqa,EAAEra,IAAIsa,EAAEld,EAAEid,EAAEjd,IAAI,CAAC,EAAEmjZ,GAAG9+L,IAAI,SAASpnM,EAAE5b,EAAE6b,EAAExb,GAAG,OAAOub,EAAEvb,EAAEL,EAAE6b,CAAC,EAAEimY,GAAG+0Z,aAAa,SAASj7xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/0B,EAAEuB,EAAEo9E,EAAE3+E,EAAErB,EAAEV,EAAE4d,EAAEta,EAAEwzB,EAAEngB,EAAEvU,EAAEkB,EAAEwzB,EAAE2pE,EAAE7iF,EAAEld,EAAEggF,EAAEnrD,EAAEnzB,EAAE1B,EAAEggF,EAAE/9E,EAAE3C,EAAEu1B,EAAE5e,EAAE8pF,EAAEvjF,EAAES,EAAEra,EAAEwzB,EAAE12B,EAAEud,EAAEjd,EAAEggF,EAAEjiE,GAAG8W,EAAErY,EAAEvG,EAAEvW,GAAGuC,EAAE+b,IAAI+hF,EAAEvjF,EAAEld,EAAEI,GAAGuC,EAAE,OAAOZ,EAAE88D,EAAEpgD,GAAGb,EAAEihD,EAAE98D,EAAE88D,GAAGngD,GAAGtc,EAAEy8D,EAAE98D,EAAE88D,EAAE,EAAEglV,GAAGg1Z,kBAAkB,SAASl7xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAErI,SAASvT,GAAG+0B,EAAE/0B,EAAEuT,SAASsI,GAAG8iE,EAAE9iE,EAAEtI,SAASqI,GAAG3d,EAAEoC,EAAE,OAAO00B,EAAE92B,IAAIA,EAAE82B,GAAG4pD,EAAE1gF,IAAIA,EAAE0gF,GAAG1gF,CAAC,EAAE6jZ,GAAGgxZ,QAAQ,SAASl3xB,EAAE5b,EAAE6b,GAAG,QAAQ+kY,GAAGkyZ,QAAQl3xB,EAAE5b,EAAE6b,MAAO+kY,GAAGkyZ,QAAQ9yyB,EAAE6b,EAAED,MAAMglY,GAAGkyZ,QAAQj3xB,EAAED,EAAE5b,EAAG,EAAE8hZ,GAAGi1Z,aAAa,SAASn7xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEwb,EAAEta,EAAEwzB,EAAElZ,EAAEld,EAAEggF,EAAE/iE,EAAEra,EAAElB,EAAEpC,EAAE2d,EAAEjd,EAAEo2B,EAAEngB,EAAE5U,EAAEuB,EAAElB,EAAEq+F,EAAE1+F,EAAErB,EAAEo2B,EAAEvB,EAAE,EAAEsuX,GAAG9+L,IAAIrkI,EAAE1gF,EAAE2W,EAAE8pF,GAAG99F,EAAEkhZ,GAAG9+L,IAAI/kN,EAAE0gF,EAAEA,EAAE1gF,EAAEA,EAAEygG,EAAE9pF,EAAEA,EAAE8pF,EAAEA,GAAGvjF,EAAE2mY,GAAG9+L,IAAIrkI,EAAEA,EAAEA,EAAE1gF,EAAEA,EAAE2W,EAAEA,EAAEA,EAAE8pF,EAAEA,GAAG,OAAO,IAAI1qE,EAAE3zB,EAAEO,EAAE4yB,EAAEuB,EAAE5Z,EAAEqY,EAAE,EAAEsuX,GAAGo1Z,sBAAsB,SAASt7xB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAEuB,EAAEqa,EAAEra,EAAElB,EAAEL,EAAErB,EAAEid,EAAEjd,EAAEo2B,EAAE,IAAItI,EAAE7Q,EAAEra,EAAEsa,EAAE,EAAED,EAAEjd,EAAE0B,EAAE,EAAE,GAAGs+E,EAAE,IAAIlyD,EAAE7Q,EAAEra,EAAElB,EAAEwb,EAAE,EAAED,EAAEjd,EAAEkd,EAAExb,EAAE,EAAE,GAAG,OAAO,IAAIosB,EAAEsI,EAAE4pD,EAAE,EAAEmjU,GAAGq1Z,cAAc,SAASv7xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEL,EAAEuT,SAASqI,GAAGmZ,EAAE10B,GAAGA,EAAEL,EAAEuT,SAASsI,IAAI8iE,EAAE9iE,EAAEta,EAAEqa,EAAEra,EAAEtD,EAAE4d,EAAEld,EAAEid,EAAEjd,EAAE,OAAO,IAAIq1B,EAAEpY,EAAEra,EAAEwzB,EAAE4pD,EAAE/iE,EAAEjd,EAAEo2B,EAAE92B,EAAE,EAAE6jZ,GAAGk1Z,OAAO,SAASp7xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEL,EAAEuB,EAAEqa,EAAEra,EAAEwzB,EAAE/0B,EAAErB,EAAEid,EAAEjd,EAAEggF,EAAE3+E,EAAE88D,EAAElhD,EAAEkhD,EAAE7+D,EAAE4d,EAAEta,EAAEqa,EAAEra,EAAEqT,EAAEiH,EAAEld,EAAEid,EAAEjd,EAAE+/F,EAAE7iF,EAAEihD,EAAElhD,EAAEkhD,EAAEtpC,EAAEuB,EAAE2pE,EAAE/f,EAAE/pE,EAAEhU,EAAE+9E,EAAE1gF,EAAEoC,EAAEq+F,EAAEvjF,EAAE9a,EAAEuU,EAAEmgB,EAAE92B,EAAEI,EAAEm1B,EAAEA,EAAE5yB,EAAEA,EAAEua,EAAEA,EAAmB,OAAf3a,KAAK0vB,KAAK7xB,GAAG,CAAU,EAAEyjZ,GAAG4P,SAAS,SAAS91Y,EAAE5b,EAAE6b,GAAG,IAAIxb,GAAGub,EAAEra,EAAEvB,EAAEuB,EAAEsa,EAAEta,GAAG,EAAEwzB,GAAGnZ,EAAEjd,EAAEqB,EAAErB,EAAEkd,EAAEld,GAAG,EAAE,OAAO,IAAIq1B,EAAE3zB,EAAE00B,EAAE,EAAE+sX,GAAGm1Z,SAAS,SAASr7xB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEL,EAAEuT,SAASsI,GAAGkZ,EAAEnZ,EAAErI,SAASsI,GAAG8iE,EAAE/iE,EAAErI,SAASvT,GAAG/B,EAAEoC,EAAE00B,EAAE4pD,EAAE/pE,GAAGvU,EAAEub,EAAEra,EAAEwzB,EAAE/0B,EAAEuB,EAAEo9E,EAAE9iE,EAAEta,GAAGtD,EAAEygG,GAAGr+F,EAAEub,EAAEjd,EAAEo2B,EAAE/0B,EAAErB,EAAEggF,EAAE9iE,EAAEld,GAAGV,EAAE,OAAO,IAAI+1B,EAAEpf,EAAE8pF,EAAE,EAAE,IAAImjT,GAAG,WAAW7mY,KAAKo8xB,WAAW,KAAKp8xB,KAAKuuxB,UAAU,KAAKvuxB,KAAKq8xB,cAAc,KAAKr8xB,KAAKs8xB,WAAW,IAAIz4Z,GAAG,IAAIjjY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKo8xB,WAAWx7xB,EAAEZ,KAAKuuxB,UAAUvpyB,EAAEgb,KAAKq8xB,cAAcx7xB,CAAC,EAAEgmY,GAAGzmY,UAAUm8xB,SAAS,SAAS37xB,GAAG,GAAGZ,KAAKuuxB,WAAW,EAAE,OAAO,KAAK,IAAIvpyB,EAAE4b,EAAEk+wB,iBAAiBj+wB,EAAEb,KAAKq8xB,cAAcnB,aAAal2yB,EAAEgb,KAAKuuxB,WAAWvuxB,KAAKw8xB,SAAS37xB,EAAE+Y,EAAEu2vB,SAASv2vB,EAAEq2vB,SAAS,EAAEppY,GAAGzmY,UAAUq8xB,WAAW,SAAS77xB,GAAG,IAAI5b,EAAEgb,KAAKuuxB,UAAU1txB,EAAEqrW,GAAGv7G,KAAK3wP,KAAKuuxB,UAAU,IAAIvpyB,GAAGgb,KAAKuuxB,UAAU1txB,EAAEqrW,GAAGt6G,OAAO,IAAIvsQ,EAAEub,EAAEmgxB,kBAAkBhnwB,EAAE0pX,GAAGy5Y,qBAAqB73xB,EAAEy5xB,kBAAkB,GAAG9+wB,KAAKuuxB,UAAU,GAAGvuxB,KAAK08xB,mBAAmBr3yB,EAAE2a,KAAKuuxB,WAAW,OAAO,KAAK,GAAGvuxB,KAAKuuxB,WAAW,GAAGx0wB,EAAE3lB,OAAO,EAAE,OAAO,KAAK4L,KAAK28xB,eAAe5ixB,EAAE/0B,EAAE6b,EAAE+Y,EAAEu2vB,SAASv2vB,EAAEq2vB,UAAU,IAAI,IAAItssB,EAAE,EAAEA,EAAE/iE,EAAEigxB,qBAAqBl9sB,IAAI,CAAC,IAAI1gF,EAAE2d,EAAEogxB,iBAAiBr9sB,GAAG/pE,EAAE6pY,GAAGy5Y,qBAAqBj6xB,EAAE67xB,kBAAkB9+wB,KAAKuuxB,UAAU,GAAGvuxB,KAAK08xB,mBAAmBz5yB,GAAG+c,KAAKuuxB,YAAYvuxB,KAAK28xB,eAAe/iyB,EAAE5U,EAAEknX,GAAGq3a,SAAS1ixB,GAAG+Y,EAAEq2vB,SAASr2vB,EAAEu2vB,SAAS,CAAC,EAAEtpY,GAAGzmY,UAAUw8xB,2BAA2B,SAASh8xB,EAAE5b,GAAG,IAAI6b,EAAE,IAAIimY,GAAGlmY,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIvb,EAAEwb,EAAEo7xB,WAAW,OAAOvra,GAAG2nZ,kBAAkBhzxB,EAAEwb,EAAEmnE,GAAGnnE,EAAE0kB,IAAI//B,KAAKM,IAAId,EAAE,EAAE6hZ,GAAGzmY,UAAUy8xB,cAAc,SAASj8xB,GAAG,GAAGZ,KAAKuuxB,WAAW,IAAIvuxB,KAAKq8xB,cAAclB,sBAAsBxF,gBAAgB,OAAO,KAAK,IAAI3wyB,EAAEy+Y,GAAGy5Y,qBAAqBt8wB,EAAEk+wB,kBAAkBj+wB,EAAEb,KAAKq8xB,cAAcnB,aAAal2yB,EAAEgb,KAAKuuxB,WAAWvuxB,KAAKw8xB,SAAS37xB,EAAE+Y,EAAEu2vB,SAASv2vB,EAAEq2vB,SAAS,EAAEppY,GAAGzmY,UAAUo8xB,SAAS,SAAS57xB,EAAE5b,EAAE6b,GAAG,GAAG,OAAOD,GAAGA,EAAExM,OAAO,EAAE,OAAO,KAAK,IAAI/O,EAAE,IAAI6/Y,GAAGtkY,EAAE,IAAIksW,GAAG,EAAElzV,EAAEs2vB,SAASlrxB,EAAE6b,IAAIb,KAAKs8xB,WAAWhpyB,IAAIjO,EAAE,EAAEwhZ,GAAGzmY,UAAU08xB,UAAU,WAAW,OAAO98xB,KAAK1M,IAAI0M,KAAKo8xB,YAAYp8xB,KAAKs8xB,UAAU,EAAEz1Z,GAAGzmY,UAAUu8xB,eAAe,SAAS/7xB,EAAE5b,EAAE6b,EAAExb,EAAE00B,GAAG,GAAG,IAAI/0B,GAAG4b,EAAExM,OAAO41F,GAAGk3rB,mBAAmB,OAAO,KAAK,IAAIv9sB,EAAEt+E,EAAEpC,EAAE82B,EAAEnZ,EAAExM,QAAQ41F,GAAGk3rB,oBAAoBxwZ,GAAG0oZ,MAAMx4wB,KAAK+iE,EAAE5pD,EAAE92B,EAAEoC,EAAEwb,EAAEqrW,GAAGq3a,SAAS1ixB,IAAI,IAAIjH,EAAEoG,KAAKq8xB,cAAcjB,aAAax6xB,EAAEC,EAAE7b,GAAGgb,KAAKw8xB,SAAS5iyB,EAAE+pE,EAAE1gF,EAAE,EAAE4jZ,GAAGzmY,UAAU9M,IAAI,SAASsN,GAAG,GAAGA,EAAE48M,UAAU,OAAO,KAAK58M,aAAa4jY,GAAGxkY,KAAKy8xB,WAAW77xB,GAAGA,aAAasiY,GAAGljY,KAAK68xB,cAAcj8xB,GAAGA,aAAa2jY,GAAGvkY,KAAKu8xB,SAAS37xB,IAAGA,aAAaqpF,IAAyBrpF,aAAaujY,IAAyBvjY,aAAa2xU,IAAyB3xU,aAAa8iY,KAA/G1jY,KAAK+8xB,cAAcn8xB,EAAqH,EAAEimY,GAAGzmY,UAAUs8xB,mBAAmB,SAAS97xB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEk+wB,iBAAiB,GAAGj+wB,EAAEzM,OAAO,EAAE,OAAOpP,EAAE,EAAE,GAAG,IAAI6b,EAAEzM,OAAO,OAAO4L,KAAK48xB,2BAA2B/7xB,EAAE7b,GAAG,IAAIK,EAAEub,EAAEw6wB,sBAAsBrhwB,EAAEv0B,KAAKkE,IAAIrE,EAAE+iV,YAAY/iV,EAAE8iV,YAAY,OAAOnjV,EAAE,GAAG,EAAEQ,KAAKM,IAAId,GAAG+0B,CAAC,EAAE8sX,GAAGzmY,UAAU28xB,cAAc,SAASn8xB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAEo6wB,mBAAmBh2xB,IAAI,CAAC,IAAI6b,EAAED,EAAE45wB,aAAax1xB,GAAGgb,KAAK1M,IAAIuN,EAAE,CAAC,EAAEgmY,GAAGzmY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpoY,GAAGzmY,UAAUwtG,SAAS,WAAW,OAAOi5R,EAAE,EAAE,IAAIE,GAAG,WAAW,EAAEA,GAAG3mY,UAAU48xB,OAAO,SAASp8xB,GAAG,EAAEmmY,GAAG3mY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEloY,GAAG3mY,UAAUwtG,SAAS,WAAW,OAAOm5R,EAAE,EAAE,IAAIN,GAAG,WAAWzmY,KAAKi9xB,QAAQ,KAAKj9xB,KAAKk9xB,SAAS,KAAKl9xB,KAAKm9xB,KAAK,KAAKn9xB,KAAK8zxB,OAAO,KAAK9zxB,KAAKo9xB,uBAAuB,KAAK,IAAIx8xB,EAAEzM,UAAU,GAAG6L,KAAKi9xB,QAAQr8xB,EAAEZ,KAAKk9xB,UAAS,EAAGl9xB,KAAK8zxB,OAAO,EAAE9zxB,KAAKm9xB,KAAKv8xB,EAAEo6wB,kBAAkB,EAAEv0Y,GAAGrmY,UAAUtY,KAAK,WAAW,GAAGkY,KAAKk9xB,SAAS,OAAOl9xB,KAAKk9xB,UAAS,EAAGz2Z,GAAG42Z,SAASr9xB,KAAKi9xB,UAAUj9xB,KAAK8zxB,SAAS9zxB,KAAKi9xB,QAAQ,GAAG,OAAOj9xB,KAAKo9xB,uBAAuB,CAAC,GAAGp9xB,KAAKo9xB,uBAAuB1hB,UAAU,OAAO17wB,KAAKo9xB,uBAAuBt1yB,OAAOkY,KAAKo9xB,uBAAuB,IAAI,CAAC,GAAGp9xB,KAAK8zxB,QAAQ9zxB,KAAKm9xB,KAAK,MAAM,IAAI93yB,EAAE,IAAIub,EAAEZ,KAAKi9xB,QAAQziB,aAAax6wB,KAAK8zxB,UAAU,OAAOlzxB,aAAa8iY,IAAI1jY,KAAKo9xB,uBAAuB,IAAI32Z,GAAG7lY,GAAGZ,KAAKo9xB,uBAAuBt1yB,QAAQ8Y,CAAC,EAAE6lY,GAAGrmY,UAAUwiC,OAAO,WAAW,MAAM,IAAIr7B,MAAMvH,KAAK4tG,WAAWgoT,UAAU,EAAEnvB,GAAGrmY,UAAUs7wB,QAAQ,WAAW,GAAG17wB,KAAKk9xB,SAAS,OAAM,EAAG,GAAG,OAAOl9xB,KAAKo9xB,uBAAuB,CAAC,GAAGp9xB,KAAKo9xB,uBAAuB1hB,UAAU,OAAM,EAAG17wB,KAAKo9xB,uBAAuB,IAAI,CAAC,QAAQp9xB,KAAK8zxB,QAAQ9zxB,KAAKm9xB,KAAK,EAAE12Z,GAAGrmY,UAAU6uwB,YAAY,WAAW,MAAM,CAACtrY,GAAG,EAAE8C,GAAGrmY,UAAUwtG,SAAS,WAAW,OAAO64R,EAAE,EAAEA,GAAG42Z,SAAS,SAASz8xB,GAAG,QAAQA,aAAa8iY,GAAG,EAAE,IAAI2C,GAAG,WAAWrmY,KAAKm/wB,MAAM,KAAK,IAAIv+wB,EAAEzM,UAAU,GAAG6L,KAAKm/wB,MAAMv+wB,CAAC,EAAEylY,GAAGjmY,UAAU48xB,OAAO,SAASp8xB,GAAG,OAAOylY,GAAG22Z,OAAOp8xB,EAAEZ,KAAKm/wB,MAAM,EAAE94Y,GAAGjmY,UAAU6uwB,YAAY,WAAW,MAAM,CAACloY,GAAG,EAAEV,GAAGjmY,UAAUwtG,SAAS,WAAW,OAAOy4R,EAAE,EAAEA,GAAG6yY,cAAc,SAASt4wB,EAAE5b,GAAG,QAAQA,EAAEo2xB,sBAAsBhgY,WAAWx6Y,IAAI8vX,GAAGwoZ,cAAct4wB,EAAE5b,EAAE85xB,iBAAiB,EAAEz4Y,GAAGi3Z,uBAAuB,SAAS18xB,EAAE5b,GAAG,GAAGA,EAAEw4N,UAAU,OAAM,EAAG,IAAI38M,EAAE7b,EAAE+7xB,kBAAkB,IAAI16Y,GAAG6yY,cAAct4wB,EAAEC,GAAG,OAAM,EAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEL,EAAE67xB,qBAAqBx7xB,IAAI,CAAC,IAAI00B,EAAE/0B,EAAEg8xB,iBAAiB37xB,GAAG,GAAGghZ,GAAG6yY,cAAct4wB,EAAEmZ,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEssX,GAAGwhZ,cAAc,SAASjnxB,EAAE5b,GAAG,GAAGA,aAAaw/Y,GAAG,OAAO6B,GAAGi3Z,uBAAuB18xB,EAAE5b,GAAG,GAAGA,aAAa0+Y,GAAG,IAAI,IAAI7iY,EAAE,IAAI4lY,GAAGzhZ,GAAG6b,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,GAAGzC,IAAIL,GAAGqhZ,GAAGwhZ,cAAcjnxB,EAAEvb,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEghZ,GAAG22Z,OAAO,SAASp8xB,EAAE5b,GAAG,OAAOA,EAAEw4N,UAAU5jM,EAAEu2vB,SAAS9pY,GAAGwhZ,cAAcjnxB,EAAE5b,GAAG40B,EAAEq2vB,SAASr2vB,EAAEu2vB,QAAQ,EAAE,IAAInpY,GAAG,WAAWhnY,KAAKu9xB,SAAS,IAAIp9xB,EAAEH,KAAKw9xB,UAAU,KAAKx9xB,KAAKy9xB,kBAAkB,CAAC7jxB,EAAEw2vB,KAAKx2vB,EAAEw2vB,KAAK,EAAEppY,GAAG5mY,UAAUs9xB,UAAU,SAAS98xB,GAAGZ,KAAKkkxB,WAAW,IAAIl/xB,EAAEgb,KAAKw9xB,UAAUj1yB,QAAQqY,GAAGC,EAAE7b,EAAE,EAAE,OAAO,IAAIA,IAAI6b,EAAEb,KAAKw9xB,UAAUzqxB,OAAO,GAAG/S,KAAKw9xB,UAAU3pyB,IAAIgN,EAAE,EAAEmmY,GAAG5mY,UAAUu9xB,oBAAoB,SAAS/8xB,GAAG,IAAI,IAAI5b,EAAE40B,EAAEw2vB,KAAKvvwB,EAAEb,KAAKkC,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOu/xB,WAAWhiyB,EAAEm4d,OAAO58c,IAAIvb,EAAEs7sB,YAAY//rB,EAAEsrW,GAAGv7G,QAAQ/2O,EAAEw2vB,OAAOprxB,EAAEK,EAAEs7sB,YAAY//rB,EAAEsrW,GAAGv7G,MAAM,CAAC,GAAG3rQ,IAAI40B,EAAEw2vB,KAAK,OAAO,KAAK,IAAI,IAAIr2vB,EAAE/0B,EAAE2+E,EAAE3jE,KAAKkC,WAAWyhE,EAAE+3sB,WAAW,CAAC,IAAIz4xB,EAAE0gF,EAAE77E,OAAO8R,EAAE3W,EAAEokyB,WAAW,GAAGztxB,EAAE+msB,YAAY//rB,EAAEsrW,GAAGx6O,MAAM93G,EAAEw2vB,MAAMx2wB,EAAEqmuB,YAAYr/tB,EAAEsrW,GAAGx6O,GAAG33G,GAAGngB,EAAE4jd,OAAO58c,GAAG,CAAC,IAAI8iF,EAAE9pF,EAAE+msB,YAAY//rB,EAAEsrW,GAAGv7G,MAAMn4O,EAAE5e,EAAE+msB,YAAY//rB,EAAEsrW,GAAGt6G,OAAO,GAAGp5O,IAAIoB,EAAEw2vB,KAAK,CAAC,GAAG53vB,IAAIuB,EAAE,MAAM,IAAI4yV,GAAG,yBAAyB1pX,EAAE0vxB,iBAAiBjvrB,IAAI9pE,EAAEw2vB,MAAM9tY,GAAGozY,qBAAqB,8BAA8BzyxB,EAAE0vxB,gBAAgB,KAAK54vB,EAAE2pE,CAAC,MAAM4+S,GAAG2lO,OAAOrumB,EAAE+msB,YAAY//rB,EAAEsrW,GAAGv7G,QAAQ/2O,EAAEw2vB,KAAK,0BAA0Bx2wB,EAAEqmuB,YAAYr/tB,EAAEsrW,GAAGt6G,MAAM73O,GAAGngB,EAAEqmuB,YAAYr/tB,EAAEsrW,GAAGv7G,KAAK52O,EAAE,CAAC,CAAC,EAAEitX,GAAG5mY,UAAUuywB,cAAc,WAAW,IAAI/xwB,EAAEZ,KAAKkC,WAAW,OAAItB,EAAE86wB,UAA6B96wB,EAAE9Y,OAAO6qxB,gBAArB,IAAoC,EAAE3rY,GAAG5mY,UAAUkpxB,MAAM,SAAS1oxB,GAAGyZ,EAAEovF,IAAIyuqB,QAAQ,kBAAkBl4wB,KAAK2ywB,iBAAiB,IAAI,IAAI3txB,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOwhyB,MAAM1oxB,EAAG,EAAEomY,GAAG5mY,UAAUw9xB,uBAAuB,SAASh9xB,GAAG,OAAOZ,KAAK69xB,qBAAqBj9xB,EAAEk9xB,uBAAuB99xB,KAAK+9xB,0BAA0B,EAAE,EAAE/2Z,GAAG5mY,UAAU29xB,0BAA0B,SAASn9xB,GAAG,IAAI5b,EAAEgb,KAAKkkxB,WAAW,GAAGl/xB,EAAE+tB,QAAQ,EAAE,OAAM,EAAG,IAAIlS,EAAE7b,EAAE+tB,OAAO,EAAE1tB,EAAEL,EAAE6O,IAAIgN,GAAGwmxB,WAAW1mF,YAAY//rB,EAAEsrW,GAAGv7G,MAAM2xI,GAAG2lO,OAAO5inB,IAAIu0B,EAAEw2vB,KAAK,8BAA8B,IAAI,IAAIr2vB,EAAE10B,EAAEs+E,EAAE3jE,KAAKkC,WAAWyhE,EAAE+3sB,WAAW,CAAC,IAAIz4xB,EAAE0gF,EAAE77E,OAAOu/xB,WAAW/kZ,GAAG2lO,OAAOhlnB,EAAEu6d,OAAO58c,GAAG,uBAAuB,IAAIhH,EAAE3W,EAAE09sB,YAAY//rB,EAAEsrW,GAAGv7G,MAAMjtK,EAAEzgG,EAAE09sB,YAAY//rB,EAAEsrW,GAAGt6G,OAAO,GAAGh4P,IAAI8pF,EAAE,OAAM,EAAG,GAAGA,IAAI3pE,EAAE,OAAM,EAAGA,EAAEngB,CAAC,CAAC,OAAM,CAAE,EAAEotY,GAAG5mY,UAAUu0D,UAAU,SAAS/zD,GAAGZ,KAAKkC,WAAW,IAAI,IAAIld,EAAE,EAAEA,EAAEgb,KAAKw9xB,UAAUzqxB,OAAO/tB,IAAK,GAAGgb,KAAKw9xB,UAAU3pyB,IAAI7O,KAAK4b,EAAE,OAAO5b,EAAE,OAAO,CAAC,EAAEgiZ,GAAG5mY,UAAU8B,SAAS,WAAW,OAAOlC,KAAKkkxB,WAAWhixB,UAAU,EAAE8kY,GAAG5mY,UAAU8jxB,SAAS,WAAW,OAAO,OAAOlkxB,KAAKw9xB,YAAYx9xB,KAAKw9xB,UAAU,IAAI35Z,GAAG7jY,KAAKu9xB,SAAS30wB,WAAW5oB,KAAKw9xB,SAAS,EAAEx2Z,GAAG5mY,UAAUugsB,YAAY,SAAS//rB,EAAE5b,EAAE6b,GAAG,OAAOb,KAAKy9xB,kBAAkB78xB,KAAKgZ,EAAEw2vB,OAAOpwwB,KAAKy9xB,kBAAkB78xB,GAAGylY,GAAG22Z,OAAOh4yB,EAAE6b,EAAED,GAAGo9xB,gBAAgBh+xB,KAAKy9xB,kBAAkB78xB,EAAE,EAAEomY,GAAG5mY,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAE,IAAIqY,EAAErY,EAAE2vH,OAAO,kBAAkBvwH,KAAK2ywB,iBAAiB/xwB,EAAE2vH,OAAO,MAAM,IAAI,IAAIvrI,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO8Y,EAAE2vH,OAAO1vH,GAAGD,EAAE2vH,OAAO,KAAK,CAAC,OAAO3vH,EAAE5Z,UAAU,EAAEggZ,GAAG5mY,UAAUy9xB,qBAAqB,SAASj9xB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOmjyB,aAAarqxB,EAAG,EAAEomY,GAAG5mY,UAAU69xB,iBAAiB,SAASr9xB,GAAGZ,KAAK69xB,qBAAqBj9xB,EAAE,GAAGk9xB,uBAAuB99xB,KAAK29xB,oBAAoB,GAAG39xB,KAAK29xB,oBAAoB,GAAG,IAAI,IAAI34yB,EAAE,EAAC,GAAG,GAAI6b,EAAEb,KAAKkC,WAAWrB,EAAE66wB,WAAW,IAAI,IAAIr2xB,EAAEwb,EAAE/Y,OAAOu/xB,WAAWttwB,EAAE,EAAEA,EAAE,EAAEA,IAAI10B,EAAE2gyB,OAAOjswB,IAAI10B,EAAEs7sB,YAAY5mrB,KAAKH,EAAEs2vB,WAAWlrxB,EAAE+0B,IAAG,GAAI,IAAI,IAAI4pD,EAAE3jE,KAAKkC,WAAWyhE,EAAE+3sB,WAAW,IAAI,IAAIz4xB,EAAE0gF,EAAE77E,OAAO8R,EAAE3W,EAAEokyB,WAAW3jsB,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAG9pF,EAAEusxB,UAAUzisB,GAAG,CAAC,IAAIlrE,EAAEoB,EAAEw2vB,KAAK,GAAGprxB,EAAE0+F,GAAGlrE,EAAEoB,EAAEu2vB,aAAa,CAAC,IAAIvqxB,EAAE3C,EAAE0vxB,gBAAgBn6vB,EAAExY,KAAK2gsB,YAAYj9mB,EAAE99F,EAAEgb,EAAE,CAAChH,EAAEmsxB,sBAAsBrisB,EAAElrE,EAAE,CAAC,EAAEwuX,GAAG5mY,UAAU89xB,UAAU,WAAW,OAAOl+xB,KAAKu9xB,SAASxqxB,MAAM,EAAEi0X,GAAG5mY,UAAU+9xB,cAAc,SAASv9xB,EAAE5b,GAAGgb,KAAKu9xB,SAASjnqB,IAAI11H,EAAE5b,GAAGgb,KAAKw9xB,UAAU,IAAI,EAAEx2Z,GAAG5mY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjoY,GAAG5mY,UAAUwtG,SAAS,WAAW,OAAOo5R,EAAE,EAAE,IAAIC,GAAG,SAASrmY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAKo+xB,oBAAoB,KAAKp+xB,KAAK6mxB,OAAO,KAAK7mxB,KAAKq+xB,uBAAuB,EAAEr+xB,KAAKs+xB,qBAAqB,CAAC,CAAC,OAAO19xB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUksxB,wBAAwB,WAAWtsxB,KAAKu+xB,qBAAqB,IAAI,IAAI39xB,EAAE,KAAK5b,EAAE,KAAK6b,EAAEb,KAAKq+xB,uBAAuBh5yB,EAAE,EAAEA,EAAE2a,KAAKo+xB,oBAAoBrrxB,OAAO1tB,IAAI,CAAC,IAAI00B,EAAE/Z,KAAKo+xB,oBAAoBvqyB,IAAIxO,GAAGs+E,EAAE5pD,EAAEsqwB,SAAS,GAAGtqwB,EAAEstwB,WAAW7pU,SAAS,OAAO,OAAO58c,GAAGmZ,EAAEovwB,eAAevoxB,EAAEmZ,GAAGlZ,GAAG,KAAKb,KAAKq+xB,uBAAuB,IAAI16tB,EAAEwltB,aAAa,SAASnkyB,EAAE2+E,EAAE9iE,EAAEb,KAAKs+xB,qBAAqB,MAAM,KAAKt+xB,KAAKs+xB,qBAAqB,IAAIvkxB,EAAEovwB,aAAa,SAASnkyB,EAAEgnyB,QAAQjywB,GAAGlZ,EAAEb,KAAKq+xB,uBAAuB,CAAC,GAAGx9xB,IAAIb,KAAKs+xB,qBAAqB,CAAC,GAAG,OAAO19xB,EAAE,MAAM,IAAI+rW,GAAG,4BAA4B3sW,KAAK2ywB,iBAAiBrwY,GAAG2lO,OAAOrnmB,EAAEuoxB,aAAa,wCAAwCnkyB,EAAEgnyB,QAAQprxB,EAAE,CAAC,EAAE5b,EAAEob,UAAU+wF,OAAO,SAASvwF,GAAG,IAAI5b,EAAE4b,EAAEZ,KAAKm+xB,cAAcn5yB,EAAEA,EAAE,EAAEA,EAAEob,UAAU+jxB,iBAAiB,WAAW,IAAIvjxB,EAAEZ,KAAKkkxB,WAAWl/xB,EAAE4b,EAAEmS,OAAO,GAAG/tB,EAAE,EAAE,OAAO,KAAK,IAAI6b,EAAED,EAAE/M,IAAI,GAAG,GAAG,IAAI7O,EAAE,OAAO6b,EAAE,IAAIxb,EAAEub,EAAE/M,IAAI7O,EAAE,GAAG+0B,EAAElZ,EAAEmqxB,cAAcrntB,EAAEt+E,EAAE2lyB,cAAc,OAAOt3nB,GAAGu2nB,WAAWlwwB,IAAI25I,GAAGu2nB,WAAWtmtB,GAAG9iE,EAAE6yJ,GAAGu2nB,WAAWlwwB,IAAI25I,GAAGu2nB,WAAWtmtB,GAAG,IAAI9iE,EAAEgqxB,QAAQhqxB,EAAE,IAAIxb,EAAEwlyB,QAAQxlyB,GAAGi9Y,GAAGozY,qBAAqB,+CAA+C,MAAMrwxB,CAAC,EAAEL,EAAEob,UAAUkpxB,MAAM,SAAS1oxB,GAAGyZ,EAAEovF,IAAIyuqB,QAAQ,qBAAqBl4wB,KAAK2ywB,iBAAiB,IAAI,IAAI3txB,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO8Y,EAAE0oxB,MAAM,QAAQzoxB,EAAEyoxB,MAAM1oxB,GAAGA,EAAEs3wB,UAAUt3wB,EAAE0oxB,MAAM,OAAOzoxB,EAAEwjxB,SAASiF,MAAM1oxB,GAAGA,EAAEs3wB,SAAS,CAAC,EAAElzxB,EAAEob,UAAUm+xB,mBAAmB,WAAW,GAAG,OAAOv+xB,KAAKo+xB,oBAAoB,OAAOp+xB,KAAKo+xB,oBAAoBp+xB,KAAKo+xB,oBAAoB,IAAIv6Z,GAAG,IAAI,IAAIjjY,EAAEZ,KAAKkC,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,QAAQ9C,EAAEmkyB,cAAcnkyB,EAAEq/xB,SAAS8E,eAAenpxB,KAAKo+xB,oBAAoB9qyB,IAAItO,EAAE,CAAC,OAAOgb,KAAKo+xB,mBAAmB,EAAEp5yB,EAAEob,UAAUo+xB,gBAAgB,SAAS59xB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOu/xB,WAAWxmxB,EAAEklxB,sBAAsB,EAAEnlxB,EAAE+/rB,YAAY,IAAI9/rB,EAAEklxB,sBAAsB,EAAEnlxB,EAAE+/rB,YAAY,GAAG,CAAC,EAAE37sB,EAAEob,UAAUqsxB,qBAAqB,WAAWzsxB,KAAKkkxB,WAAW,IAAI,IAAItjxB,EAAE,KAAK5b,EAAE,KAAK6b,EAAEb,KAAKw9xB,UAAUzqxB,OAAO,EAAElS,GAAG,EAAEA,IAAI,CAAC,IAAIxb,EAAE2a,KAAKw9xB,UAAU3pyB,IAAIgN,GAAGkZ,EAAE10B,EAAEg/xB,SAAS,OAAOr/xB,IAAIA,EAAE+0B,GAAG,OAAOnZ,GAAGmZ,EAAEiywB,QAAQprxB,GAAGA,EAAEvb,CAAC,CAACL,EAAEgnyB,QAAQprxB,EAAE,EAAE5b,EAAEob,UAAUglxB,cAAc,WAAW,GAAG,IAAIjxxB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEgb,KAAK20D,UAAU/zD,GAAGC,EAAED,EAAE81Z,SAASxqD,GAAGv7G,MAAMtrQ,EAAEub,EAAE81Z,SAASxqD,GAAGt6G,OAAO73O,EAAE/Z,KAAKolxB,cAAcpgyB,EAAE,EAAEgb,KAAKw9xB,UAAUzqxB,OAAOlS,GAAG,GAAGb,KAAKolxB,cAAc,EAAEpgyB,EAAE+0B,KAAK10B,EAAE,MAAM,IAAIsnX,GAAG,qBAAqB/rW,EAAE+xwB,gBAAgB,MAAM,GAAG,IAAIx+wB,UAAUC,OAAO,CAAC,IAAI,IAAmBnR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAA3CvvF,UAAU,GAAqCuvF,EAAEzgG,EAAEygG,IAAI,CAAC,IAAIlrE,EAAExY,KAAKw9xB,UAAU3pyB,IAAI6vF,GAAGlrE,EAAE+swB,cAAcr5a,GAAGt6G,MAAMh4P,GAAGA,EAAE4e,EAAEk+Y,SAASxqD,GAAGv7G,KAAK,CAAC,OAAO/2P,CAAC,CAAC,EAAE5U,EAAEob,UAAUq+xB,eAAe,WAAW,IAAI,IAAI79xB,EAAEZ,KAAKkC,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO9C,EAAEqiyB,WAAWv1wB,MAAM9sB,EAAEq/xB,SAASgD,WAAW,CAAC,EAAEriyB,EAAEob,UAAUooxB,yBAAyB,SAAS5nxB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,EAAE,KAAKxb,EAAE2a,KAAKq+xB,uBAAuBtkxB,EAAE/Z,KAAKo+xB,oBAAoBrrxB,OAAO,EAAEgH,GAAG,EAAEA,IAAI,CAAC,IAAI4pD,EAAE3jE,KAAKo+xB,oBAAoBvqyB,IAAIkmB,GAAG92B,EAAE0gF,EAAE0gtB,SAAS,OAAO,OAAOr/xB,GAAG2+E,EAAEyjtB,gBAAgBxmxB,IAAI5b,EAAE2+E,GAAGt+E,GAAG,KAAK2a,KAAKq+xB,uBAAuB,GAAGp7yB,EAAEmkyB,gBAAgBxmxB,EAAE,SAASC,EAAE5d,EAAEoC,EAAE2a,KAAKs+xB,qBAAqB,MAAM,KAAKt+xB,KAAKs+xB,qBAAqB,GAAG36tB,EAAEyjtB,gBAAgBxmxB,EAAE,SAASC,EAAE4qxB,WAAW9ntB,GAAGt+E,EAAE2a,KAAKq+xB,uBAAuB,CAACh5yB,IAAI2a,KAAKs+xB,uBAAuBh8Z,GAAG2lO,OAAO,OAAOjjnB,EAAE,yCAAyCs9Y,GAAG2lO,OAAOjjnB,EAAEoiyB,gBAAgBxmxB,EAAE,wCAAwCC,EAAE4qxB,WAAWzmyB,GAAG,EAAEA,EAAEob,UAAUwnxB,kBAAkB,WAAW,GAAG,IAAIzzxB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAE,EAAE5b,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOqhyB,cAAcvoxB,IAAI,OAAOA,CAAC,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAI,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE,EAAE00B,EAAE/Z,KAAKkC,WAAW6X,EAAE2hwB,WAAY3hwB,EAAEjyB,OAAOs/xB,gBAAgBvmxB,GAAGxb,IAAI,OAAOA,CAAC,CAAC,EAAEL,EAAEob,UAAUinxB,SAAS,WAAW,OAAOrnxB,KAAK6mxB,MAAM,EAAE7hyB,EAAEob,UAAUs+xB,qBAAqB,WAAW,IAAI,IAAI99xB,EAAEgZ,EAAEw2vB,KAAKprxB,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAEwb,EAAEwjxB,SAAS,IAAIxjxB,EAAE8qxB,aAAa,CAAC,GAAG9qxB,EAAEsoxB,aAAa,CAACvoxB,EAAEgZ,EAAEq2vB,SAAS,KAAK,CAAC,GAAG5qxB,EAAE8jyB,aAAa,CAACvoxB,EAAEgZ,EAAEu2vB,SAAS,KAAK,CAAC,CAAC,CAAC,GAAGvvwB,IAAIgZ,EAAEw2vB,KAAK,OAAO,KAAK,IAAI,IAAIr2vB,EAAEnZ,EAAE+iE,EAAE3jE,KAAKkC,WAAWyhE,EAAE+3sB,WAAW,CAAC,IAAIz4xB,EAAE0gF,EAAE77E,OAAO8R,EAAE3W,EAAEohyB,SAASphyB,EAAE0oyB,aAAa1oyB,EAAE+gyB,UAAUgF,WAAWjvwB,IAAIH,EAAEq2vB,WAAWhtxB,EAAEkmyB,eAAepvwB,EAAEH,EAAEu2vB,UAAUv2wB,EAAEuvxB,eAAepvwB,EAAEH,EAAEq2vB,UAAU,CAAC,EAAEjrxB,EAAEob,UAAU69xB,iBAAiB,SAASj5yB,GAAG4b,EAAER,UAAU69xB,iBAAiB59xB,KAAKL,KAAKhb,GAAGgb,KAAK6mxB,OAAO,IAAI/5a,GAAGlzV,EAAEw2vB,MAAM,IAAI,IAAIvvwB,EAAEb,KAAKkC,WAAWrB,EAAE66wB,WAAW,IAAI,IAAIr2xB,EAAEwb,EAAE/Y,OAAOk8xB,UAAUqD,WAAWttwB,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAI4pD,EAAEt+E,EAAEs7sB,YAAY5mrB,GAAG4pD,IAAI/pD,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEs2vB,UAAUlwwB,KAAK6mxB,OAAO5mD,YAAYlmtB,EAAEH,EAAEq2vB,SAAS,CAAC,EAAEjrxB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAA3kJ,CAA6kJgiZ,IAAInB,GAAG,SAASjlY,GAAG,SAAS5b,IAAI4b,EAAEE,MAAMd,KAAK7L,UAAU,CAAC,OAAOyM,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUwpxB,WAAW,SAAShpxB,GAAG,OAAO,IAAIqsW,GAAGrsW,EAAE,IAAIqmY,GAAG,EAAEjiZ,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAnS,CAAqS+2B,IAAI2qX,GAAG,SAAS9lY,IAAIZ,KAAK4mxB,KAAK,KAAK5mxB,KAAK2+xB,aAAa,KAAK,IAAI35yB,EAAEmP,UAAU,GAAG6L,KAAK4mxB,KAAK5hyB,EAAEgb,KAAK2+xB,aAAa/9xB,EAAE0ynB,YAAYtuoB,EAAE,EAAE0hZ,GAAGtmY,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAO8lY,GAAGk4Z,gBAAgB5+xB,KAAK4mxB,KAAK5mxB,KAAK2+xB,aAAa35yB,EAAE4hyB,KAAK5hyB,EAAE25yB,aAAa,EAAEj4Z,GAAGtmY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEwtX,GAAGtmY,UAAUwtG,SAAS,WAAW,OAAO84R,EAAE,EAAEA,GAAG4sP,YAAY,SAAS1ynB,GAAG,OAAO,IAAI6iY,GAAG85Y,oBAAoB38wB,EAAE,EAAE8lY,GAAGk4Z,gBAAgB,SAASh+xB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI,IAAI00B,EAAE/0B,EAAE,GAAG,EAAE2+E,EAAEt+E,EAAE,GAAG,EAAEpC,EAAE+B,EAAE4b,EAAExM,QAAQ,EAAEwF,EAAEvU,EAAEwb,EAAEzM,QAAQ,EAAEsvF,EAAE1+F,EAAE,EAAE4b,EAAExM,OAAO,EAAEokB,EAAEnzB,EAAE,EAAEwb,EAAEzM,OAAO,IAAI,CAAC,IAAIxO,EAAEgb,EAAE8iF,GAAGglH,UAAU7nM,EAAE2X,IAAI,GAAG,IAAI5yB,EAAE,OAAOA,EAAE,IAAIua,GAAGujF,GAAG3pE,KAAK92B,EAAEI,GAAGm1B,GAAGmrD,KAAK/pE,EAAE,GAAGuG,IAAI9c,EAAE,OAAO,EAAE,IAAI8c,GAAG9c,EAAE,OAAO,EAAE,GAAG8c,GAAG9c,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIsjZ,GAAG,WAAW3mY,KAAK2mxB,OAAO,IAAI9iZ,GAAG7jY,KAAK6+xB,QAAQ,IAAI1+xB,CAAC,EAAEwmY,GAAGvmY,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAE0oxB,MAAM,sBAAsB,IAAI,IAAItkyB,EAAE,EAAEA,EAAEgb,KAAK2mxB,OAAO5zwB,OAAO/tB,IAAI,CAAC,IAAI6b,EAAEb,KAAK2mxB,OAAO9yxB,IAAI7O,GAAGA,EAAE,GAAG4b,EAAE0oxB,MAAM,KAAK1oxB,EAAE0oxB,MAAM,KAAK,IAAI,IAAIjkyB,EAAEwb,EAAEi+wB,iBAAiB/kwB,EAAE,EAAEA,EAAE10B,EAAE+O,OAAO2lB,IAAIA,EAAE,GAAGnZ,EAAE0oxB,MAAM,KAAK1oxB,EAAE0oxB,MAAMjkyB,EAAE00B,GAAGxzB,EAAE,IAAIlB,EAAE00B,GAAGp2B,GAAGid,EAAEs3wB,QAAQ,IAAI,CAACt3wB,EAAE0oxB,MAAM,MAAM,EAAE3iZ,GAAGvmY,UAAU2uwB,OAAO,SAASnuwB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW17wB,KAAK1M,IAAItO,EAAE8C,OAAO,EAAE6+Y,GAAGvmY,UAAU0+xB,cAAc,SAASl+xB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAK2mxB,OAAO5zwB,OAAO/tB,IAAI,GAAGgb,KAAK2mxB,OAAO9yxB,IAAI7O,GAAG+iO,OAAOnnN,GAAG,OAAO5b,EAAE,OAAO,CAAC,EAAE2hZ,GAAGvmY,UAAU8B,SAAS,WAAW,OAAOlC,KAAK2mxB,OAAOzkxB,UAAU,EAAEykY,GAAGvmY,UAAU8jxB,SAAS,WAAW,OAAOlkxB,KAAK2mxB,MAAM,EAAEhgZ,GAAGvmY,UAAUvM,IAAI,SAAS+M,GAAG,OAAOZ,KAAK2mxB,OAAO9yxB,IAAI+M,EAAE,EAAE+lY,GAAGvmY,UAAU2+xB,cAAc,SAASn+xB,GAAG,IAAI5b,EAAE,IAAI0hZ,GAAG9lY,EAAEk+wB,kBAAkB,OAAO9+wB,KAAK6+xB,QAAQhryB,IAAI7O,EAAE,EAAE2hZ,GAAGvmY,UAAU9M,IAAI,SAASsN,GAAGZ,KAAK2mxB,OAAOrzxB,IAAIsN,GAAG,IAAI5b,EAAE,IAAI0hZ,GAAG9lY,EAAEk+wB,kBAAkB9+wB,KAAK6+xB,QAAQvoqB,IAAItxI,EAAE4b,EAAE,EAAE+lY,GAAGvmY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEtoY,GAAGvmY,UAAUwtG,SAAS,WAAW,OAAO+4R,EAAE,EAAE,IAAIC,GAAG,WAAW,EAAEA,GAAGxmY,UAAUk0xB,qBAAqB,SAAS1zxB,EAAE5b,EAAE6b,EAAExb,GAAG,EAAEuhZ,GAAGxmY,UAAUsgwB,OAAO,WAAW,EAAE95X,GAAGxmY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEroY,GAAGxmY,UAAUwtG,SAAS,WAAW,OAAOg5R,EAAE,EAAE,IAAIb,GAAG,WAAW/lY,KAAKg/xB,kBAAiB,EAAGh/xB,KAAKi/xB,YAAW,EAAGj/xB,KAAKk/xB,oBAAmB,EAAGl/xB,KAAKm/xB,cAAa,EAAGn/xB,KAAKo/xB,yBAAyB,KAAKp/xB,KAAK04xB,IAAI,KAAK14xB,KAAKq/xB,oBAAoB,KAAKr/xB,KAAKs/xB,iBAAiB,EAAEt/xB,KAAKu/xB,yBAAyB,EAAEv/xB,KAAKw/xB,uBAAuB,EAAEx/xB,KAAKy/xB,SAAS,EAAE,IAAI7+xB,EAAEzM,UAAU,GAAG6L,KAAK04xB,IAAI93xB,CAAC,EAAEmlY,GAAG3lY,UAAUs/xB,sBAAsB,SAAS9+xB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,IAAIC,GAAG,IAAIb,KAAK04xB,IAAI3hB,qBAAqB,CAAC,GAAGhxY,GAAG45Z,mBAAmB36yB,EAAEK,GAAG,OAAM,EAAG,GAAGub,EAAEmyoB,WAAW,CAAC,IAAIh5nB,EAAEnZ,EAAEmS,OAAO,EAAE,GAAG,IAAI/tB,GAAGK,IAAI00B,GAAG,IAAI10B,GAAGL,IAAI+0B,EAAE,OAAM,CAAE,CAAC,CAAC,OAAM,CAAE,EAAEgsX,GAAG3lY,UAAUw/xB,2BAA2B,WAAW,OAAO5/xB,KAAKo/xB,wBAAwB,EAAEr5Z,GAAG3lY,UAAUy/xB,8BAA8B,WAAW,OAAO7/xB,KAAKk/xB,kBAAkB,EAAEn5Z,GAAG3lY,UAAU0/xB,mBAAmB,WAAW,OAAO9/xB,KAAK04xB,GAAG,EAAE3yZ,GAAG3lY,UAAU2/xB,sBAAsB,WAAW,OAAO//xB,KAAKi/xB,UAAU,EAAEl5Z,GAAG3lY,UAAUk0xB,qBAAqB,SAAS1zxB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,IAAIC,GAAG7b,IAAIK,EAAE,OAAO,KAAK2a,KAAKy/xB,WAAW,IAAI1lxB,EAAEnZ,EAAEk+wB,iBAAiB95xB,GAAG2+E,EAAE/iE,EAAEk+wB,iBAAiB95xB,EAAE,GAAG/B,EAAE4d,EAAEi+wB,iBAAiBz5xB,GAAGuU,EAAEiH,EAAEi+wB,iBAAiBz5xB,EAAE,GAAG2a,KAAK04xB,IAAI7hB,oBAAoB98vB,EAAE4pD,EAAE1gF,EAAE2W,GAAGoG,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAKs/xB,mBAAmBt/xB,KAAK04xB,IAAIthB,2BAA2Bp3wB,KAAKu/xB,2BAA2Bv/xB,KAAKm/xB,cAAa,GAAIn/xB,KAAK0/xB,sBAAsB9+xB,EAAE5b,EAAE6b,EAAExb,KAAK2a,KAAKg/xB,kBAAiB,EAAGp+xB,EAAEqxxB,iBAAiBjyxB,KAAK04xB,IAAI1zyB,EAAE,GAAG6b,EAAEoxxB,iBAAiBjyxB,KAAK04xB,IAAIrzyB,EAAE,GAAG2a,KAAK04xB,IAAIzhB,aAAaj3wB,KAAKw/xB,yBAAyBx/xB,KAAKi/xB,YAAW,EAAGj/xB,KAAKk/xB,oBAAmB,IAAK,EAAEn5Z,GAAG3lY,UAAU82wB,gBAAgB,WAAW,OAAOl3wB,KAAKg/xB,gBAAgB,EAAEj5Z,GAAG3lY,UAAUsgwB,OAAO,WAAW,OAAM,CAAE,EAAE36X,GAAG3lY,UAAU4/xB,wBAAwB,WAAW,OAAOhgyB,KAAKm/xB,YAAY,EAAEp5Z,GAAG3lY,UAAU6uwB,YAAY,WAAW,MAAM,CAACroY,GAAG,EAAEb,GAAG3lY,UAAUwtG,SAAS,WAAW,OAAOm4R,EAAE,EAAEA,GAAG45Z,mBAAmB,SAAS/+xB,EAAE5b,GAAG,OAAO,IAAIQ,KAAKM,IAAI8a,EAAE5b,EAAE,EAAE,IAAImiZ,GAAG,WAAWnnY,KAAKy3J,MAAM,KAAKz3J,KAAK2wxB,aAAa,KAAK3wxB,KAAKgoN,KAAK,KAAK,IAAIpnN,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKy3J,MAAM,IAAIz+I,EAAEpY,GAAGZ,KAAK2wxB,aAAa3ryB,EAAEgb,KAAKgoN,KAAKnnN,CAAC,EAAEsmY,GAAG/mY,UAAU6/xB,gBAAgB,WAAW,OAAOjgyB,KAAK2wxB,YAAY,EAAExpZ,GAAG/mY,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAKy3J,KAAK,EAAE0vO,GAAG/mY,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAE0oxB,MAAMtpxB,KAAKy3J,OAAO72J,EAAE0oxB,MAAM,YAAYtpxB,KAAK2wxB,cAAc/vxB,EAAEs3wB,QAAQ,WAAWl4wB,KAAKgoN,KAAK,EAAEm/K,GAAG/mY,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAK0/B,QAAQ16C,EAAE2ryB,aAAa3ryB,EAAEgjO,KAAK,EAAEm/K,GAAG/mY,UAAUu2wB,WAAW,SAAS/1wB,GAAG,OAAO,IAAIZ,KAAK2wxB,cAAc,IAAI3wxB,KAAKgoN,MAAMhoN,KAAK2wxB,eAAe/vxB,CAAC,EAAEumY,GAAG/mY,UAAUpZ,SAAS,WAAW,OAAOgZ,KAAKy3J,MAAM,YAAYz3J,KAAK2wxB,aAAa,WAAW3wxB,KAAKgoN,IAAI,EAAEm/K,GAAG/mY,UAAUwuxB,YAAY,WAAW,OAAO5uxB,KAAKgoN,IAAI,EAAEm/K,GAAG/mY,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,OAAOgb,KAAK2wxB,aAAa/vxB,GAAG,EAAEZ,KAAK2wxB,aAAa/vxB,EAAE,EAAEZ,KAAKgoN,KAAKhjO,GAAG,EAAEgb,KAAKgoN,KAAKhjO,EAAE,EAAE,CAAC,EAAEmiZ,GAAG/mY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEiuX,GAAG/mY,UAAUwtG,SAAS,WAAW,OAAOu5R,EAAE,EAAE,IAAIC,GAAG,WAAWpnY,KAAK+wxB,SAAS,IAAI5wxB,EAAEH,KAAKuyC,KAAK,KAAK,IAAI3xC,EAAEzM,UAAU,GAAG6L,KAAKuyC,KAAK3xC,CAAC,EAAEwmY,GAAGhnY,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAEs3wB,QAAQ,kBAAkB,IAAI,IAAIlzxB,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOwhyB,MAAM1oxB,EAAG,EAAEwmY,GAAGhnY,UAAU8B,SAAS,WAAW,OAAOlC,KAAK+wxB,SAASnowB,SAAS1mB,UAAU,EAAEklY,GAAGhnY,UAAUkxxB,cAAc,SAAS1wxB,GAAGZ,KAAKixxB,eAAe,IAAI,IAAIjsyB,EAAEgb,KAAKkC,WAAWrB,EAAE7b,EAAE8C,OAAO9C,EAAE02xB,WAAW,CAAC,IAAIr2xB,EAAEL,EAAE8C,OAAOiyB,EAAE/Z,KAAKuxxB,gBAAgB1wxB,EAAExb,GAAGub,EAAEtN,IAAIymB,GAAGlZ,EAAExb,CAAC,CAAC,EAAE+hZ,GAAGhnY,UAAU6wxB,aAAa,WAAW,IAAIrwxB,EAAEZ,KAAKuyC,KAAK2tvB,IAAI9ryB,OAAO,EAAE4L,KAAK1M,IAAI0M,KAAKuyC,KAAK2tvB,IAAI,GAAG,EAAE,GAAGlgyB,KAAK1M,IAAI0M,KAAKuyC,KAAK2tvB,IAAIt/xB,GAAGA,EAAE,EAAE,EAAEwmY,GAAGhnY,UAAUmxxB,gBAAgB,SAAS3wxB,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAE2ryB,aAAa/vxB,EAAE+vxB,aAAa,EAAEtryB,EAAE2a,KAAKuyC,KAAK2tvB,IAAIl7yB,EAAE2ryB,cAAc52wB,EAAE/0B,EAAEgjO,KAAK,IAAIhjO,EAAEyyK,MAAMi4mB,SAASrqxB,GAAG00B,GAAGlZ,IAAI,IAAI8iE,EAAE,IAAIrvE,MAAMuM,GAAG4tB,KAAK,MAAMxrC,EAAE,EAAE0gF,EAAE1gF,KAAK,IAAI+1B,EAAEpY,EAAE62J,OAAO,IAAI,IAAI79J,EAAEgH,EAAE+vxB,aAAa,EAAE/2xB,GAAG5U,EAAE2ryB,aAAa/2xB,IAAI+pE,EAAE1gF,KAAK+c,KAAKuyC,KAAK2tvB,IAAItmyB,GAAG,OAAOmgB,IAAI4pD,EAAE1gF,GAAG+B,EAAEyyK,OAAO,IAAI8yO,GAAG5mU,EAAE,IAAImpS,GAAG9sW,KAAKuyC,KAAKs0uB,QAAQ,EAAEz/Y,GAAGhnY,UAAU9M,IAAI,SAASsN,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAI8hZ,GAAGvmY,EAAE5b,EAAE6b,GAAGkZ,EAAE/Z,KAAK+wxB,SAASl9xB,IAAIxO,GAAG,OAAO,OAAO00B,EAAEA,GAAG/Z,KAAK+wxB,SAASz6pB,IAAIjxI,EAAEA,GAAGA,EAAE,EAAE+hZ,GAAGhnY,UAAUm3wB,eAAe,SAAS32wB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKkC,WAAWld,EAAE02xB,WAAY,GAAG12xB,EAAE8C,OAAO2vK,MAAMswD,OAAOnnN,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEwmY,GAAGhnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE7nY,GAAGhnY,UAAUwtG,SAAS,WAAW,OAAOw5R,EAAE,EAAE,IAAIF,GAAG,WAAW,EAAEA,GAAG9mY,UAAUkzxB,qBAAqB,SAAS1yxB,GAAG,IAAI5b,EAAE,EAAE6b,EAAE,IAAIgjY,GAAGhjY,EAAEvN,IAAI,IAAI7P,EAAEuB,IAAI,EAAE,CAAC,IAAIK,EAAE2a,KAAKuzxB,aAAa3yxB,EAAE5b,GAAG6b,EAAEvN,IAAI,IAAI7P,EAAE4B,IAAIL,EAAEK,CAAC,OAAOL,EAAE4b,EAAExM,OAAO,GAAG,OAAO8yY,GAAGssZ,WAAW3yxB,EAAE,EAAEqmY,GAAG9mY,UAAUmzxB,aAAa,SAAS3yxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE6yJ,GAAG22nB,SAASzpxB,EAAE5b,GAAG4b,EAAE5b,EAAE,IAAIK,EAAEL,EAAE,EAAEK,EAAEub,EAAExM,QAAYs/J,GAAG22nB,SAASzpxB,EAAEvb,EAAE,GAAGub,EAAEvb,MAAMwb,GAAQxb,IAAI,OAAOA,EAAE,CAAC,EAAE6hZ,GAAG9mY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/nY,GAAG9mY,UAAUwtG,SAAS,WAAW,OAAOs5R,EAAE,EAAEA,GAAGssZ,WAAW,SAAS5yxB,GAAG,IAAI,IAAI5b,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM5tB,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI7b,EAAE6b,GAAGD,EAAE/M,IAAIgN,GAAG2vwB,WAAW,OAAOxrxB,CAAC,EAAE,IAAIqiZ,GAAG,WAAWrnY,KAAKhb,EAAE,KAAKgb,KAAKkgyB,IAAI,KAAKlgyB,KAAKm8M,WAAW,KAAKn8M,KAAKoqM,KAAK,IAAIpkL,EAAEhmB,KAAKqqM,KAAK,IAAIrkL,EAAE,IAAIplB,EAAEzM,UAAU,GAAG6L,KAAKhb,EAAE4b,EAAEZ,KAAKkgyB,IAAIt/xB,EAAEk+wB,iBAAiB,IAAI95xB,EAAE,IAAIkiZ,GAAGlnY,KAAKm8M,WAAWn3N,EAAEsuyB,qBAAqBtzxB,KAAKkgyB,IAAI,EAAE74Z,GAAGjnY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKkgyB,GAAG,EAAE74Z,GAAGjnY,UAAUizwB,QAAQ,SAASzywB,GAAG,IAAI5b,EAAEgb,KAAKkgyB,IAAIlgyB,KAAKm8M,WAAWv7M,IAAIra,EAAEsa,EAAEb,KAAKkgyB,IAAIlgyB,KAAKm8M,WAAWv7M,EAAE,IAAIra,EAAE,OAAOvB,EAAE6b,EAAE7b,EAAE6b,CAAC,EAAEwmY,GAAGjnY,UAAUmzwB,QAAQ,SAAS3ywB,GAAG,IAAI5b,EAAEgb,KAAKkgyB,IAAIlgyB,KAAKm8M,WAAWv7M,IAAIra,EAAEsa,EAAEb,KAAKkgyB,IAAIlgyB,KAAKm8M,WAAWv7M,EAAE,IAAIra,EAAE,OAAOvB,EAAE6b,EAAE7b,EAAE6b,CAAC,EAAEwmY,GAAGjnY,UAAU+/xB,0BAA0B,WAAW,GAAG,IAAIhsyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKmgyB,0BAA0BngyB,KAAKm8M,WAAWv7M,GAAGZ,KAAKm8M,WAAWv7M,EAAE,GAAG5b,EAAEA,EAAEm3N,WAAWt7M,GAAG7b,EAAEm3N,WAAWt7M,EAAE,GAAGxb,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAGvO,EAAEoa,KAAKkgyB,IAAInmxB,GAAG5Z,EAAEH,KAAKkgyB,IAAIv8tB,GAAGtgF,EAAEJ,EAAEi9yB,IAAItmyB,GAAG8H,EAAEze,EAAEi9yB,IAAIx8sB,GAAG,GAAG/f,EAAE5pD,GAAG,GAAG2pE,EAAE9pF,GAAG,EAAE,OAAO4e,EAAEy5wB,iBAAiBjyxB,KAAKhb,EAAE+0B,EAAE92B,EAAE+B,EAAE4U,GAAG,KAAK,GAAGoG,KAAKoqM,KAAKh+I,KAAKxmE,EAAEua,GAAGH,KAAKqqM,KAAKj+I,KAAK/oE,EAAEqe,IAAI1B,KAAKoqM,KAAKgxM,WAAWp7Y,KAAKqqM,MAAM,OAAO,KAAK,IAAI1oM,EAAEnc,KAAKwpxB,OAAOj1vB,EAAE4pD,GAAG,GAAGpgF,EAAEiC,KAAKwpxB,OAAOp1wB,EAAE8pF,GAAG,GAAG3pE,EAAEpY,IAAI/H,EAAErW,GAAGyc,KAAKmgyB,0BAA0BpmxB,EAAEpY,EAAE1e,EAAE2W,EAAErW,EAAEi1B,GAAGj1B,EAAEmgG,GAAG1jF,KAAKmgyB,0BAA0BpmxB,EAAEpY,EAAE1e,EAAEM,EAAEmgG,EAAElrE,IAAI7W,EAAEgiE,IAAI/pE,EAAErW,GAAGyc,KAAKmgyB,0BAA0Bx+xB,EAAEgiE,EAAE1gF,EAAE2W,EAAErW,EAAEi1B,GAAGj1B,EAAEmgG,GAAG1jF,KAAKmgyB,0BAA0Bx+xB,EAAEgiE,EAAE1gF,EAAEM,EAAEmgG,EAAElrE,GAAG,CAAC,EAAE6uX,GAAGjnY,UAAUggyB,gBAAgB,WAAW,OAAOpgyB,KAAKm8M,UAAU,EAAEkrL,GAAGjnY,UAAUigyB,kBAAkB,SAASz/xB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAEb,KAAKm8M,WAAW/nN,OAAO,EAAEyM,IAAI,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEu7M,WAAW/nN,OAAO,EAAE/O,IAAI2a,KAAKmgyB,0BAA0Bt/xB,EAAED,EAAEvb,EAAEL,EAAE,EAAEqiZ,GAAGjnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5nY,GAAGjnY,UAAUwtG,SAAS,WAAW,OAAOy5R,EAAE,EAAE,IAAIgD,GAAG,SAASzpY,IAAIZ,KAAKurxB,OAAOj3xB,MAAM,GAAGm6B,OAAO17B,IAAI,WAAW,OAAOuB,MAAM,EAAE,GAAG,IAAI,IAAItP,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAI6b,EAAE,EAAEA,EAAE,EAAEA,IAAIb,KAAKurxB,OAAOvmyB,GAAG6b,GAAGD,EAAE0/xB,UAAU,EAAEh2Z,GAAG,CAACg2Z,WAAW,CAACrpwB,cAAa,IAAKozW,GAAGjqY,UAAUs2Z,SAAS,SAAS91Z,EAAE5b,GAAG,OAAOgb,KAAKurxB,OAAO3qxB,GAAG5b,EAAE,EAAEqlZ,GAAGjqY,UAAU8xO,SAAS,SAAStxO,EAAE5b,EAAE6b,GAAGb,KAAKurxB,OAAO3qxB,GAAG5b,GAAG6b,CAAC,EAAEwpY,GAAGjqY,UAAUg8M,OAAO,WAAW,GAAG,IAAIjoN,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAI5b,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAGgb,KAAKurxB,OAAO3qxB,GAAG5b,KAAKqlZ,GAAGi2Z,WAAW,OAAM,EAAG,OAAM,CAAE,CAAC,GAAG,IAAInsyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG,OAAO6L,KAAKurxB,OAAO1qxB,GAAG,KAAKwpY,GAAGi2Z,UAAU,CAAC,GAAG,IAAInsyB,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG,OAAO6L,KAAKurxB,OAAOlmyB,GAAG00B,KAAKswX,GAAGi2Z,UAAU,CAAC,EAAEj2Z,GAAGjqY,UAAUu/B,UAAU,WAAW,IAAI,IAAI/+B,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAIZ,KAAKo8M,OAAOx7M,GAAG,CAAC,IAAI5b,EAAEgb,KAAKurxB,OAAO3qxB,GAAG,GAAGZ,KAAKurxB,OAAO3qxB,GAAG,GAAG5b,IAAIA,EAAEgb,KAAKurxB,OAAO3qxB,GAAG,IAAI5b,EAAE,IAAIA,EAAE,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIxb,EAAE,EAAE2a,KAAKurxB,OAAO3qxB,GAAGC,GAAG7b,IAAIK,EAAE,GAAG2a,KAAKurxB,OAAO3qxB,GAAGC,GAAGxb,CAAC,CAAC,CAAC,EAAEglZ,GAAGjqY,UAAUmgyB,SAAS,SAAS3/xB,GAAG,OAAOZ,KAAKurxB,OAAO3qxB,GAAGsrW,GAAGt6G,OAAO5xP,KAAKurxB,OAAO3qxB,GAAGsrW,GAAGv7G,KAAK,EAAE05I,GAAGjqY,UAAUugsB,YAAY,SAAS//rB,EAAE5b,GAAG,OAAOgb,KAAKurxB,OAAO3qxB,GAAG5b,IAAI,EAAE40B,EAAEu2vB,SAASv2vB,EAAEq2vB,QAAQ,EAAE5lY,GAAGjqY,UAAUpZ,SAAS,WAAW,MAAM,MAAMgZ,KAAKurxB,OAAO,GAAG,GAAG,IAAIvrxB,KAAKurxB,OAAO,GAAG,GAAG,OAAOvrxB,KAAKurxB,OAAO,GAAG,GAAG,IAAIvrxB,KAAKurxB,OAAO,GAAG,EAAE,EAAElhZ,GAAGjqY,UAAU9M,IAAI,WAAW,GAAG,IAAIa,UAAUC,OAAO,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAI6b,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIxb,EAAEub,EAAE+/rB,YAAY37sB,EAAE6b,GAAGxb,IAAIu0B,EAAEu2vB,UAAU9qxB,IAAIu0B,EAAEq2vB,WAAWjwwB,KAAKo8M,OAAOp3N,EAAE6b,GAAGb,KAAKurxB,OAAOvmyB,GAAG6b,GAAGwpY,GAAGm2Z,gBAAgBn7yB,GAAG2a,KAAKurxB,OAAOvmyB,GAAG6b,IAAIwpY,GAAGm2Z,gBAAgBn7yB,GAAG,MAAM,GAAG,IAAI8O,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGA,UAAU,KAAKylB,EAAEq2vB,UAAUjwwB,KAAKurxB,OAAOxxwB,GAAG4pD,IAAI,CAAC,EAAE0mU,GAAGjqY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5kY,GAAGjqY,UAAUwtG,SAAS,WAAW,OAAOy8R,EAAE,EAAEA,GAAGm2Z,gBAAgB,SAAS5/xB,GAAG,OAAOA,IAAIgZ,EAAEu2vB,SAAS,EAAEvvwB,IAAIgZ,EAAEq2vB,SAAS,EAAE5lY,GAAGi2Z,UAAU,EAAEh2Z,GAAGg2Z,WAAWzsyB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiB6+W,GAAGC,IAAI,IAAIC,GAAG,SAAS3pY,GAAG,SAAS5b,IAAI,GAAG4b,EAAEP,KAAKL,MAAMA,KAAKkgyB,IAAI,KAAKlgyB,KAAK8kxB,KAAK,KAAK9kxB,KAAKosxB,OAAO,IAAIhlZ,GAAGpnY,MAAMA,KAAKm1Y,MAAM,KAAKn1Y,KAAKygyB,KAAK,KAAKzgyB,KAAK0gyB,aAAY,EAAG1gyB,KAAKurxB,OAAO,IAAIlhZ,GAAGrqY,KAAK2gyB,YAAY,EAAE,IAAIxsyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAGnP,EAAEqb,KAAKL,KAAKa,EAAE,KAAK,MAAM,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKkgyB,IAAI76yB,EAAE2a,KAAK6mxB,OAAO9swB,CAAC,CAAC,CAAC,OAAOnZ,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUs2Z,SAAS,WAAW,OAAO12Z,KAAKurxB,MAAM,EAAEvmyB,EAAEob,UAAUwgyB,iBAAiB,WAAW,IAAIhgyB,EAAE,IAAItM,MAAM,GAAGm6B,KAAK,MAAwC,OAAlC7tB,EAAE,GAAGZ,KAAKkgyB,IAAI,GAAGt/xB,EAAE,GAAGZ,KAAKkgyB,IAAI,GAAU,IAAIl7yB,EAAE4b,EAAEksW,GAAG05a,YAAYxmxB,KAAK6mxB,QAAQ,EAAE7hyB,EAAEob,UAAU+mxB,WAAW,WAAW,OAAOnnxB,KAAK0gyB,WAAW,EAAE17yB,EAAEob,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKkgyB,GAAG,EAAEl7yB,EAAEob,UAAUygyB,YAAY,SAASjgyB,GAAGZ,KAAK0gyB,YAAY9/xB,CAAC,EAAE5b,EAAEob,UAAUg5Z,QAAQ,SAASx4Z,GAAGZ,KAAKm1Y,MAAMv0Y,CAAC,EAAE5b,EAAEob,UAAU2nN,OAAO,SAASnnN,GAAG,KAAKA,aAAa5b,GAAG,OAAM,EAAG,IAAI6b,EAAED,EAAE,GAAGZ,KAAKkgyB,IAAI9ryB,SAASyM,EAAEq/xB,IAAI9ryB,OAAO,OAAM,EAAG,IAAI,IAAI/O,GAAE,EAAG00B,GAAE,EAAG4pD,EAAE3jE,KAAKkgyB,IAAI9ryB,OAAOnR,EAAE,EAAEA,EAAE+c,KAAKkgyB,IAAI9ryB,OAAOnR,IAAI,GAAG+c,KAAKkgyB,IAAIj9yB,GAAGysxB,SAAS7uwB,EAAEq/xB,IAAIj9yB,MAAMoC,GAAE,GAAI2a,KAAKkgyB,IAAIj9yB,GAAGysxB,SAAS7uwB,EAAEq/xB,MAAMv8tB,MAAM5pD,GAAE,IAAK10B,IAAI00B,EAAE,OAAM,EAAG,OAAM,CAAE,EAAE/0B,EAAEob,UAAUuywB,cAAc,WAAW,GAAG,IAAIx+wB,UAAUC,OAAO,OAAO4L,KAAKkgyB,IAAI9ryB,OAAO,EAAE4L,KAAKkgyB,IAAI,GAAG,KAAK,GAAG,IAAI/ryB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKkgyB,IAAIt/xB,EAAE,CAAC,EAAE5b,EAAEob,UAAUkpxB,MAAM,SAAS1oxB,GAAGA,EAAE0oxB,MAAM,QAAQtpxB,KAAKm1Y,MAAM,MAAMv0Y,EAAE0oxB,MAAM,gBAAgB,IAAI,IAAItkyB,EAAE,EAAEA,EAAEgb,KAAKkgyB,IAAI9ryB,OAAOpP,IAAIA,EAAE,GAAG4b,EAAE0oxB,MAAM,KAAK1oxB,EAAE0oxB,MAAMtpxB,KAAKkgyB,IAAIl7yB,GAAGuB,EAAE,IAAIyZ,KAAKkgyB,IAAIl7yB,GAAGrB,GAAGid,EAAE0oxB,MAAM,MAAMtpxB,KAAK6mxB,OAAO,IAAI7mxB,KAAK2gyB,YAAY,EAAE37yB,EAAEob,UAAU8oxB,UAAU,SAAStoxB,GAAG5b,EAAEikyB,SAASjpxB,KAAK6mxB,OAAOjmxB,EAAE,EAAE5b,EAAEob,UAAU0gyB,YAAY,WAAW,QAAQ9gyB,KAAK6mxB,OAAOrpU,UAAW,IAAIx9c,KAAKkgyB,IAAI9ryB,UAAU4L,KAAKkgyB,IAAI,GAAGn4kB,OAAO/nN,KAAKkgyB,IAAI,GAAI,EAAEl7yB,EAAEob,UAAU2yoB,SAAS,WAAW,OAAO/yoB,KAAKkgyB,IAAI,GAAGn4kB,OAAO/nN,KAAKkgyB,IAAIlgyB,KAAKkgyB,IAAI9ryB,OAAO,GAAG,EAAEpP,EAAEob,UAAU2gyB,uBAAuB,WAAW,OAAO/gyB,KAAKkgyB,IAAI9ryB,OAAO,CAAC,EAAEpP,EAAEob,UAAUsrxB,cAAc,WAAW,OAAO1rxB,KAAK2gyB,WAAW,EAAE37yB,EAAEob,UAAU2+wB,aAAa,WAAW,OAAO/+wB,KAAKkgyB,IAAI9ryB,MAAM,EAAEpP,EAAEob,UAAUyrxB,aAAa,SAASjrxB,GAAGA,EAAE0oxB,MAAM,QAAQtpxB,KAAKm1Y,MAAM,MAAM,IAAI,IAAInwZ,EAAEgb,KAAKkgyB,IAAI9ryB,OAAO,EAAEpP,GAAG,EAAEA,IAAI4b,EAAE0oxB,MAAMtpxB,KAAKkgyB,IAAIl7yB,GAAG,KAAK4b,EAAEs3wB,QAAQ,GAAG,EAAElzxB,EAAEob,UAAU4gyB,qBAAqB,WAAW,OAAO,OAAOhhyB,KAAKygyB,OAAOzgyB,KAAKygyB,KAAK,IAAIp5Z,GAAGrnY,OAAOA,KAAKygyB,IAAI,EAAEz7yB,EAAEob,UAAUmpM,YAAY,WAAW,GAAG,OAAOvpM,KAAK8kxB,KAAK,CAAC9kxB,KAAK8kxB,KAAK,IAAI9+vB,EAAE,IAAI,IAAIplB,EAAE,EAAEA,EAAEZ,KAAKkgyB,IAAI9ryB,OAAOwM,IAAIZ,KAAK8kxB,KAAKpR,gBAAgB1zwB,KAAKkgyB,IAAIt/xB,GAAG,CAAC,OAAOZ,KAAK8kxB,IAAI,EAAE9/xB,EAAEob,UAAUwxxB,gBAAgB,SAAShxxB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE,IAAIf,EAAEpY,EAAEq/Z,gBAAgB56a,IAAIs+E,EAAE3+E,EAAE/B,EAAE2d,EAAEo2wB,gBAAgBn2wB,EAAExb,GAAGuU,EAAE+pE,EAAE,EAAE,GAAG/pE,EAAEoG,KAAKkgyB,IAAI9ryB,OAAO,CAAC,IAAIsvF,EAAE1jF,KAAKkgyB,IAAItmyB,GAAGmgB,EAAE21vB,SAAShsrB,KAAK/f,EAAE/pE,EAAE3W,EAAE,EAAE,CAAC+c,KAAKosxB,OAAO94xB,IAAIymB,EAAE4pD,EAAE1gF,EAAE,EAAE+B,EAAEob,UAAUpZ,SAAS,WAAW,IAAI4Z,EAAE,IAAIqY,EAAErY,EAAE2vH,OAAO,QAAQvwH,KAAKm1Y,MAAM,MAAMv0Y,EAAE2vH,OAAO,gBAAgB,IAAI,IAAIvrI,EAAE,EAAEA,EAAEgb,KAAKkgyB,IAAI9ryB,OAAOpP,IAAIA,EAAE,GAAG4b,EAAE2vH,OAAO,KAAK3vH,EAAE2vH,OAAOvwH,KAAKkgyB,IAAIl7yB,GAAGuB,EAAE,IAAIyZ,KAAKkgyB,IAAIl7yB,GAAGrB,GAAG,OAAOid,EAAE2vH,OAAO,MAAMvwH,KAAK6mxB,OAAO,IAAI7mxB,KAAK2gyB,aAAa//xB,EAAE5Z,UAAU,EAAEhC,EAAEob,UAAU6gyB,iBAAiB,SAASrgyB,GAAG,GAAGZ,KAAKkgyB,IAAI9ryB,SAASwM,EAAEs/xB,IAAI9ryB,OAAO,OAAM,EAAG,IAAI,IAAIpP,EAAE,EAAEA,EAAEgb,KAAKkgyB,IAAI9ryB,OAAOpP,IAAI,IAAIgb,KAAKkgyB,IAAIl7yB,GAAG0qxB,SAAS9uwB,EAAEs/xB,IAAIl7yB,IAAI,OAAM,EAAG,OAAM,CAAE,EAAEA,EAAEob,UAAU8gyB,cAAc,SAAStgyB,GAAGZ,KAAK2gyB,YAAY//xB,CAAC,EAAE5b,EAAEob,UAAU+gyB,wBAAwB,WAAW,OAAOnhyB,KAAKosxB,MAAM,EAAEpnyB,EAAEob,UAAU6xxB,iBAAiB,SAASrxxB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEm2wB,qBAAqB1xxB,IAAI2a,KAAK4xxB,gBAAgBhxxB,EAAE5b,EAAE6b,EAAExb,EAAE,EAAEL,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,EAAEikyB,SAAS,WAAW,GAAG,IAAI90xB,UAAUC,OAAO,OAAOwM,EAAER,UAAU6oxB,SAASnoxB,MAAMd,KAAK7L,WAAW,IAAInP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG0M,EAAEugyB,kBAAkBp8yB,EAAE27sB,YAAY,EAAEz0V,GAAGx6O,IAAI1sI,EAAE27sB,YAAY,EAAEz0V,GAAGx6O,IAAI,GAAG1sI,EAAEw4d,WAAW38c,EAAEugyB,kBAAkBp8yB,EAAE27sB,YAAY,EAAEz0V,GAAGv7G,MAAM3rQ,EAAE27sB,YAAY,EAAEz0V,GAAGv7G,MAAM,GAAG9vP,EAAEugyB,kBAAkBp8yB,EAAE27sB,YAAY,EAAEz0V,GAAGt6G,OAAO5sQ,EAAE27sB,YAAY,EAAEz0V,GAAGt6G,OAAO,GAAG,EAAE5sQ,CAAC,CAA/pH,CAAiqH6nX,IAAIn2G,GAAG,SAAS91P,GAAGZ,KAAKqhyB,uBAAuB,KAAKrhyB,KAAKshyB,cAAc,KAAKthyB,KAAKo/wB,UAAU,KAAKp/wB,KAAKuhyB,OAAO,KAAKvhyB,KAAKw9xB,UAAU,IAAI72Z,GAAG3mY,KAAKy4xB,WAAW73xB,GAAG,IAAI,EAAE81P,GAAGt2P,UAAUohyB,yBAAyB,SAAS5gyB,GAAGZ,KAAKqhyB,uBAAuBzgyB,CAAC,EAAE81P,GAAGt2P,UAAUqhyB,iBAAiB,SAAS7gyB,GAAG,IAAI5b,EAAEgb,KAAKw9xB,UAAUuB,cAAcn+xB,GAAG,GAAG,OAAO5b,EAAE,CAAC,IAAI6b,EAAE7b,EAAEqiyB,WAAWhiyB,EAAEub,EAAEymxB,WAAWriyB,EAAEi8yB,iBAAiBrgyB,KAAKvb,EAAE,IAAIynX,GAAGlsW,EAAEymxB,aAAah4vB,OAAOxuB,EAAEiR,MAAMzsB,GAAG,IAAI00B,EAAE28O,GAAGwsR,WAAW79hB,GAAGs+E,EAAE3+E,EAAE0myB,gBAAgB3xwB,EAAE/0B,EAAEk8yB,cAAcv9tB,EAAE,MAAM3jE,KAAKw9xB,UAAUlqyB,IAAIsN,GAAGA,EAAEsgyB,cAAcxqiB,GAAGwsR,WAAWtihB,EAAEymxB,YAAY,EAAE3whB,GAAGt2P,UAAUshyB,eAAe,SAAS9gyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIgjY,GAAGx+Y,EAAEub,EAAEsB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAO67E,EAAE5pD,EAAEkrwB,yBAAyBhiyB,EAAE,IAAI+iZ,GAAGnlY,GAAG61Z,SAAS/yV,GAAG5pD,EAAEurwB,aAAariyB,GAAG82B,EAAE0rwB,kBAAkB5kxB,EAAEvN,IAAIymB,GAAG/0B,EAAEsO,IAAIymB,EAAE8rwB,mBAAmB9rwB,EAAE6rwB,WAAW,CAAC,EAAElvhB,GAAGt2P,UAAUuhyB,gBAAgB,SAAS/gyB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEglxB,WAAW1jxB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,IAAIzC,EAAE8/xB,YAAY,CAAC,IAAIprwB,EAAE,IAAIuqH,GAAGvqH,EAAErZ,OAAOrb,GAAGL,EAAEsO,IAAIymB,EAAE,CAAC,CAAC,OAAO8xV,GAAGz4W,KAAKpO,EAAE6mX,GAAGj9D,gBAAgB5pT,CAAC,EAAE0xQ,GAAGt2P,UAAUwhyB,0BAA0B,WAAW,OAAO5hyB,KAAKo/wB,UAAU7J,eAAe,EAAE7+gB,GAAGt2P,UAAUyhyB,SAAS,SAASjhyB,GAAG,GAAG,OAAOZ,KAAKshyB,cAAc,OAAOthyB,KAAKshyB,cAAc,IAAIt8yB,EAAE,IAAIygZ,GAAG5kY,EAAE,IAAIhb,GAAG,OAAOgb,EAAEs2wB,kBAAkBv2wB,GAAG5b,EAAE4uyB,sBAAsB,IAAI7tZ,GAAGllY,IAAI7b,CAAC,EAAE0xQ,GAAGt2P,UAAUzb,OAAO,SAASic,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKqhyB,uBAAuB,OAAOxgyB,IAAIA,EAAED,EAAE06wB,qBAAqBt7wB,KAAKo/wB,UAAUx+wB,EAAE25wB,aAAa,IAAIl1xB,EAAE,IAAIqgZ,GAAG7kY,EAAEb,KAAKy4xB,YAAY1+wB,EAAE,IAAI8sX,GAAGjmY,EAAE5b,EAAEK,GAAGy3yB,YAAY,GAAG/ixB,EAAEhH,QAAQ,EAAE,OAAO/S,KAAK4hyB,4BAA4B5hyB,KAAK8hyB,kBAAkB/nxB,EAAElZ,GAAGb,KAAKuhyB,OAAO,IAAI78Z,GAAG,IAAImB,IAAI7lY,KAAKuhyB,OAAOtU,SAASjtxB,KAAKw9xB,UAAUtZ,YAAY,IAAIvgtB,EAAE3jE,KAAK2hyB,gBAAgB3hyB,KAAKuhyB,QAAQt+yB,EAAE,IAAIwoX,GAAGzrW,KAAKo/wB,WAAWp/wB,KAAK0hyB,eAAe/9tB,EAAE1gF,GAAG,IAAI2W,EAAE3W,EAAEyqyB,cAAc,OAAG9zxB,EAAEmZ,QAAQ,EAAS/S,KAAK4hyB,4BAAmC5hyB,KAAKo/wB,UAAUsD,cAAc9oxB,EAAE,EAAE88P,GAAGt2P,UAAU0hyB,kBAAkB,SAASlhyB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK6hyB,SAAS78yB,GAAG6b,EAAE6yxB,aAAa9yxB,GAAG,IAAI,IAAIvb,EAAEwb,EAAEqxxB,qBAAqBhwxB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAO67E,EAAE5pD,EAAE+kwB,iBAAiB,GAAG,IAAIn7sB,EAAEvvE,SAASuvE,EAAE,GAAG+rsB,SAAS/rsB,EAAE,IAAI,CAAC,IAAI1gF,EAAE82B,EAAEmyN,UAAUtyO,EAAE,IAAI2wY,GAAGxwX,EAAE+kwB,iBAAiB,IAAIhya,GAAG7pX,IAAI+c,KAAKyhyB,iBAAiB7nyB,EAAE,CAAC,CAAC,EAAE88P,GAAGt2P,UAAU2hyB,SAAS,SAASnhyB,GAAGZ,KAAKshyB,cAAc1gyB,CAAC,EAAE81P,GAAGt2P,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEv4gB,GAAGt2P,UAAUwtG,SAAS,WAAW,OAAO8oJ,EAAE,EAAEA,GAAGwsR,WAAW,SAAStihB,GAAG,IAAI5b,EAAE4b,EAAE+/rB,YAAY,EAAEz0V,GAAGv7G,MAAM9vP,EAAED,EAAE+/rB,YAAY,EAAEz0V,GAAGt6G,OAAO,OAAO5sQ,IAAI40B,EAAEq2vB,UAAUpvwB,IAAI+Y,EAAEu2vB,SAAS,EAAEnrxB,IAAI40B,EAAEu2vB,UAAUtvwB,IAAI+Y,EAAEq2vB,UAAU,EAAE,CAAC,EAAEv5gB,GAAGsriB,kBAAkB,SAASphyB,GAAG,IAAI,IAAI5b,EAAE,IAAIkmH,GAAGrqG,EAAE,IAAIgjY,GAAGjjY,EAAE86wB,WAAW,CAAC,IAAIr2xB,EAAEub,EAAE9Y,OAAOiyB,EAAE/0B,EAAEowxB,iBAAiB/vxB,EAAEy5xB,kBAAkBj+wB,EAAEvN,IAAIymB,EAAE,CAAC,OAAO/0B,EAAE09xB,cAAc7hxB,EAAE,EAAE,IAAIm5F,GAAG,WAAW,GAAGh6F,KAAKiiyB,OAAO,KAAKjiyB,KAAKkiyB,aAAa,KAAKliyB,KAAKmiyB,SAAS,KAAKniyB,KAAKoiyB,SAAS,KAAKpiyB,KAAKqiyB,WAAU,EAAG,IAAIluyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKiiyB,OAAOrhyB,EAAEZ,KAAKkiyB,aAAal9yB,EAAEgb,KAAKmiyB,SAAS,EAAEniyB,KAAKoiyB,SAAS,EAAEpiyB,KAAKqiyB,WAAWriyB,KAAKsiyB,oBAAoB,MAAM,GAAG,IAAInuyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKiiyB,OAAOphyB,EAAEb,KAAKkiyB,aAAa78yB,EAAE2a,KAAKmiyB,SAASpoxB,EAAE/Z,KAAKoiyB,SAASz+tB,EAAE3jE,KAAKqiyB,WAAWriyB,KAAKsiyB,oBAAoB,CAAC,EAAEtosB,GAAG55F,UAAUkhe,QAAQ,WAAW,GAAG5md,EAAEvmB,UAAU,GAAGovY,IAAI,IAAI,IAAI3iY,EAAEzM,UAAU,GAAG+N,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAOkY,KAAKshe,QAAQt8e,EAAE85xB,iBAAiB,MAAM,GAAG3qxB,UAAU,aAAaG,MAAM,CAAC,IAAI,IAAIuM,EAAE1M,UAAU,GAAG9O,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO/O,IAAIwb,EAAExb,GAAGkB,EAAEsa,EAAExb,GAAGkB,EAAEyZ,KAAKkiyB,aAAaliyB,KAAKmiyB,SAASthyB,EAAExb,GAAG1B,EAAEkd,EAAExb,GAAG1B,EAAEqc,KAAKkiyB,aAAaliyB,KAAKoiyB,SAAS,IAAIvhyB,EAAEzM,QAAQyM,EAAE,GAAG6uwB,SAAS7uwB,EAAE,KAAKwZ,EAAEovF,IAAIyuqB,QAAQr3wB,EAAE,CAAC,EAAEm5F,GAAG55F,UAAUwqB,MAAM,WAAW,GAAGlQ,EAAEvmB,UAAU,GAAGovY,IAAI,CAAC,IAAI,IAAI3iY,EAAEzM,UAAU,GAAGnP,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO9C,EAAEsO,IAAI,IAAI4xY,GAAGllY,KAAK4qB,MAAMvlC,EAAEy5xB,kBAAkBz5xB,EAAE6mP,WAAW,CAAC,OAAOlnP,CAAC,CAAC,GAAGmP,UAAU,aAAaG,MAAM,CAAC,IAAI,IAAIylB,EAAE5lB,UAAU,GAAGwvE,EAAE,IAAIrvE,MAAMylB,EAAE3lB,QAAQq6B,KAAK,MAAMxrC,EAAE,EAAEA,EAAE82B,EAAE3lB,OAAOnR,IAAI0gF,EAAE1gF,GAAG,IAAI+1B,EAAExzB,KAAK+F,OAAOwuB,EAAE92B,GAAGsD,EAAEyZ,KAAKmiyB,UAAUniyB,KAAKkiyB,cAAc18yB,KAAK+F,OAAOwuB,EAAE92B,GAAGU,EAAEqc,KAAKoiyB,UAAUpiyB,KAAKkiyB,cAAcnoxB,EAAE92B,GAAG6+D,GAAG,OAAO2hV,GAAGy5Y,qBAAqBv5sB,EAAE,CAAC,EAAEq2B,GAAG55F,UAAUkiyB,mBAAmB,WAAW,OAAO,IAAItiyB,KAAKkiyB,YAAY,EAAElosB,GAAG55F,UAAU8xxB,mBAAmB,WAAW,IAAItxxB,EAAEZ,KAAKiiyB,OAAO/P,qBAAqB,OAAOlyxB,KAAKqiyB,WAAWriyB,KAAKshe,QAAQ1ge,GAAGA,CAAC,EAAEo5F,GAAG55F,UAAUszxB,aAAa,SAAS9yxB,GAAG,IAAI5b,EAAE4b,EAAEZ,KAAKqiyB,YAAYr9yB,EAAEgb,KAAK4qB,MAAMhqB,IAAIZ,KAAKiiyB,OAAOvO,aAAa1uyB,EAAE,EAAEg1G,GAAG55F,UAAU6uwB,YAAY,WAAW,MAAM,CAAC9oY,GAAG,EAAEnsS,GAAG55F,UAAUwtG,SAAS,WAAW,OAAO5T,EAAE,EAAE,IAAI+4C,GAAG,WAAW/yI,KAAK04xB,IAAI,IAAI7yyB,GAAGma,KAAKuiyB,YAAY,KAAK,IAAI3hyB,EAAEzM,UAAU,GAAG6L,KAAKuiyB,YAAY3hyB,CAAC,EAAE+xI,GAAG,CAAC+8M,KAAK,CAACz4T,cAAa,IAAK87G,GAAG3yI,UAAUoiyB,8BAA8B,WAAW,GAAG,IAAIruyB,UAAUC,OAAO,IAAI,IAAIwM,EAAEZ,KAAKuiyB,YAAYrgyB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAOg3xB,iBAAiB9+wB,KAAKwiyB,8BAA8Bx9yB,EAAE,GAAGgb,KAAKuiyB,aAAaviyB,KAAKwiyB,8BAA8Bx9yB,EAAEA,EAAEoP,OAAO,GAAG4L,KAAKuiyB,YAAY,MAAM,GAAG,IAAIpuyB,UAAUC,OAAO,IAAI,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG+N,WAAW7c,EAAEq2xB,WAAW,IAAI,IAAI3hwB,EAAE10B,EAAEyC,OAAOg3xB,iBAAiBn7sB,EAAE,EAAEA,EAAE5pD,EAAE3lB,OAAO,EAAEuvE,IAAI,GAAG5pD,EAAE4pD,GAAGokJ,OAAOlnN,GAAG,MAAM,IAAI6oF,EAAE,iDAAiD/lB,EAAE,QAAQ9iE,EAAE,EAAEkyI,GAAG3yI,UAAUqiyB,2BAA2B,WAAW,GAAG,IAAItuyB,UAAUC,OAAO,IAAI,IAAIwM,EAAEZ,KAAKuiyB,YAAYrgyB,WAAWtB,EAAE86wB,WAAW,IAAI,IAAI12xB,EAAE4b,EAAE9Y,OAAO+Y,EAAEb,KAAKuiyB,YAAYrgyB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOkY,KAAKyiyB,2BAA2Bz9yB,EAAEK,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,IAAI,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAE82B,EAAE+kwB,iBAAiBllxB,EAAE+pE,EAAEm7sB,iBAAiBp7rB,EAAE,EAAEA,EAAEzgG,EAAEmR,OAAO,EAAEsvF,IAAI,IAAI,IAAIlrE,EAAE,EAAEA,EAAE5e,EAAExF,OAAO,EAAEokB,IAAIxY,KAAKyiyB,2BAA2B1oxB,EAAE2pE,EAAE/f,EAAEnrD,QAAQ,GAAG,IAAIrkB,UAAUC,OAAO,CAAC,IAAIxO,EAAEuO,UAAU,GAAGgM,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAAEvN,UAAU,GAAG,GAAGvO,IAAIvC,GAAG8c,IAAIuB,EAAE,OAAO,KAAK,IAAIC,EAAE/b,EAAEk5xB,iBAAiB3+wB,GAAG5c,EAAEqC,EAAEk5xB,iBAAiB3+wB,EAAE,GAAGxc,EAAEN,EAAEy7xB,iBAAiBp9wB,GAAGE,EAAEve,EAAEy7xB,iBAAiBp9wB,EAAE,GAAG,GAAG1B,KAAK04xB,IAAI7hB,oBAAoBl1wB,EAAEpe,EAAEI,EAAEie,GAAG5B,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAK04xB,IAAIzhB,YAAYj3wB,KAAKggyB,wBAAwBhgyB,KAAK04xB,IAAI/2xB,EAAEpe,IAAIyc,KAAKggyB,wBAAwBhgyB,KAAK04xB,IAAI/0yB,EAAEie,IAAI,MAAM,IAAI8nF,EAAE,mCAAmC/nF,EAAE,IAAIpe,EAAE,QAAQI,EAAE,IAAIie,EAAE,CAAC,EAAEmxI,GAAG3yI,UAAUsiyB,WAAW,WAAW1iyB,KAAKwiyB,gCAAgCxiyB,KAAKyiyB,6BAA6BziyB,KAAK2iyB,gBAAgB,EAAE5vpB,GAAG3yI,UAAUuiyB,eAAe,WAAW,GAAG,IAAIxuyB,UAAUC,OAAO,IAAI,IAAIwM,EAAEZ,KAAKuiyB,YAAYrgyB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAOkY,KAAK2iyB,eAAe39yB,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,IAAI,IAAIyM,EAAE1M,UAAU,GAAG2qxB,iBAAiBz5xB,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO,EAAE/O,IAAI2a,KAAK4iyB,cAAc/hyB,EAAExb,GAAGwb,EAAExb,EAAE,GAAGwb,EAAExb,EAAE,GAAG,EAAE0tJ,GAAG3yI,UAAU4/xB,wBAAwB,SAASp/xB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEm2wB,qBAAqB1xxB,IAAI,CAAC,IAAI00B,EAAEnZ,EAAEq/Z,gBAAgB56a,GAAG,IAAI00B,EAAEguM,OAAO/iO,KAAK+0B,EAAEguM,OAAOlnN,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEkyI,GAAG3yI,UAAUwiyB,cAAc,SAAShiyB,EAAE5b,EAAE6b,GAAG,GAAGD,EAAEmnN,OAAOlnN,GAAG,MAAM,IAAI6oF,EAAE,+BAA+BqpD,GAAG28M,KAAK0lb,iBAAiB,CAACx0wB,EAAE5b,EAAE6b,IAAI,EAAEkyI,GAAG3yI,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEl8nB,GAAG3yI,UAAUwtG,SAAS,WAAW,OAAOmlC,EAAE,EAAEJ,GAAG+8M,KAAK77V,IAAI,WAAW,OAAO,IAAIq3G,EAAE,EAAEphH,OAAO0hC,iBAAiBunH,GAAGJ,IAAI,IAAIqgC,GAAG,WAAWhzK,KAAK04xB,IAAI,KAAK14xB,KAAK6iyB,IAAI,KAAK7iyB,KAAK8iyB,YAAY,KAAK9iyB,KAAK+iyB,UAAU,KAAK/iyB,KAAKgjyB,UAAU,KAAKhjyB,KAAKijyB,UAAU,KAAKjjyB,KAAKkiyB,aAAa,KAAKliyB,KAAKgzwB,MAAM,KAAKhzwB,KAAKizwB,MAAM,KAAKjzwB,KAAKkzwB,MAAM,KAAKlzwB,KAAKmzwB,MAAM,KAAKnzwB,KAAKkjyB,QAAQ,IAAI5uyB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKmjyB,SAAS,KAAK,IAAIviyB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAK8iyB,YAAYliyB,EAAEZ,KAAK6iyB,IAAIjiyB,EAAEZ,KAAKkiyB,aAAal9yB,EAAEgb,KAAK04xB,IAAI73xB,EAAE7b,GAAG,EAAE,MAAM,IAAI7B,EAAE,iCAAiC,IAAI6B,IAAIgb,KAAK6iyB,IAAI,IAAI7pxB,EAAEhZ,KAAK4qB,MAAMhqB,EAAEra,GAAGyZ,KAAK4qB,MAAMhqB,EAAEjd,IAAIqc,KAAKgjyB,UAAU,IAAIhqxB,EAAEhZ,KAAKijyB,UAAU,IAAIjqxB,GAAGhZ,KAAKojyB,YAAYpjyB,KAAK6iyB,IAAI,EAAEr4Z,GAAG,CAAC64Z,0BAA0B,CAACpswB,cAAa,IAAK+7I,GAAG5yK,UAAUkjyB,iBAAiB,SAAS1iyB,EAAE5b,GAAG,IAAI6b,EAAErb,KAAKkE,IAAIkX,EAAEra,EAAEvB,EAAEuB,GAAGlB,EAAEG,KAAKmE,IAAIiX,EAAEra,EAAEvB,EAAEuB,GAAGwzB,EAAEv0B,KAAKkE,IAAIkX,EAAEjd,EAAEqB,EAAErB,GAAGggF,EAAEn+E,KAAKmE,IAAIiX,EAAEjd,EAAEqB,EAAErB,GAAGV,EAAE+c,KAAKizwB,MAAMpywB,GAAGb,KAAKgzwB,MAAM3txB,GAAG2a,KAAKmzwB,MAAMp5vB,GAAG/Z,KAAKkzwB,MAAMvvsB,EAAE,GAAG1gF,EAAE,OAAM,EAAG,IAAI2W,EAAEoG,KAAKujyB,0BAA0B3iyB,EAAE5b,GAAG,OAAOs9Y,GAAG2lO,SAAShlnB,GAAG2W,GAAG,2BAA2BA,CAAC,EAAEo5K,GAAG5yK,UAAUgjyB,YAAY,SAASxiyB,GAAGZ,KAAKgzwB,MAAMpywB,EAAEra,EAAE,GAAGyZ,KAAKizwB,MAAMrywB,EAAEra,EAAE,GAAGyZ,KAAKkzwB,MAAMtywB,EAAEjd,EAAE,GAAGqc,KAAKmzwB,MAAMvywB,EAAEjd,EAAE,GAAGqc,KAAKkjyB,QAAQ,GAAG,IAAIlqxB,EAAEhZ,KAAKizwB,MAAMjzwB,KAAKmzwB,OAAOnzwB,KAAKkjyB,QAAQ,GAAG,IAAIlqxB,EAAEhZ,KAAKgzwB,MAAMhzwB,KAAKmzwB,OAAOnzwB,KAAKkjyB,QAAQ,GAAG,IAAIlqxB,EAAEhZ,KAAKgzwB,MAAMhzwB,KAAKkzwB,OAAOlzwB,KAAKkjyB,QAAQ,GAAG,IAAIlqxB,EAAEhZ,KAAKizwB,MAAMjzwB,KAAKkzwB,MAAM,EAAElgmB,GAAG5yK,UAAUg7Y,WAAW,SAASx6Y,EAAE5b,GAAG,OAAO,IAAIgb,KAAKkiyB,aAAaliyB,KAAKsjyB,iBAAiB1iyB,EAAE5b,IAAIgb,KAAKwjyB,WAAW5iyB,EAAEZ,KAAKgjyB,WAAWhjyB,KAAKwjyB,WAAWx+yB,EAAEgb,KAAKijyB,WAAWjjyB,KAAKsjyB,iBAAiBtjyB,KAAKgjyB,UAAUhjyB,KAAKijyB,WAAW,EAAEjwnB,GAAG5yK,UAAUwqB,MAAM,SAAShqB,GAAG,OAAOpb,KAAK+F,MAAMqV,EAAEZ,KAAKkiyB,aAAa,EAAElvnB,GAAG5yK,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAK8iyB,WAAW,EAAE9vnB,GAAG5yK,UAAUojyB,WAAW,SAAS5iyB,EAAE5b,GAAGA,EAAEuB,EAAEyZ,KAAK4qB,MAAMhqB,EAAEra,GAAGvB,EAAErB,EAAEqc,KAAK4qB,MAAMhqB,EAAEjd,EAAE,EAAEqvL,GAAG5yK,UAAUqjyB,gBAAgB,WAAW,GAAG,OAAOzjyB,KAAKmjyB,SAAS,CAAC,IAAIviyB,EAAEoyK,GAAGqwnB,0BAA0BrjyB,KAAKkiyB,aAAaliyB,KAAKmjyB,SAAS,IAAIn9wB,EAAEhmB,KAAK8iyB,YAAYv8yB,EAAEqa,EAAEZ,KAAK8iyB,YAAYv8yB,EAAEqa,EAAEZ,KAAK8iyB,YAAYn/yB,EAAEid,EAAEZ,KAAK8iyB,YAAYn/yB,EAAEid,EAAE,CAAC,OAAOZ,KAAKmjyB,QAAQ,EAAEnwnB,GAAG5yK,UAAUsjyB,uBAAuB,SAAS9iyB,EAAE5b,GAAG,OAAOgb,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,OAAMljyB,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIxhB,qBAAoB,EAAElkmB,GAAG5yK,UAAUmjyB,0BAA0B,SAAS3iyB,EAAE5b,GAAG,IAAI6b,GAAE,EAAGxb,GAAE,EAAG,OAAO2a,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,OAAMljyB,KAAK04xB,IAAIzhB,aAAaj3wB,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIzhB,aAAaj3wB,KAAK04xB,IAAIxhB,oBAAoBr2wB,GAAE,GAAIb,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIzhB,aAAaj3wB,KAAK04xB,IAAIxhB,oBAAoB7xxB,GAAE,GAAI2a,KAAK04xB,IAAI7hB,oBAAoBj2wB,EAAE5b,EAAEgb,KAAKkjyB,QAAQ,GAAGljyB,KAAKkjyB,QAAQ,IAAMljyB,KAAK04xB,IAAIzhB,YAAgBp2wB,GAAIxb,GAAOub,EAAEmnN,OAAO/nN,KAAK6iyB,MAAQ79yB,EAAE+iO,OAAO/nN,KAAK6iyB,QAAS,EAAE7vnB,GAAG5yK,UAAUujyB,eAAe,SAAS/iyB,EAAE5b,GAAG,IAAI6b,EAAED,EAAE+xwB,cAAc3txB,GAAGK,EAAEub,EAAE+xwB,cAAc3txB,EAAE,GAAG,QAAQgb,KAAKo7Y,WAAWv6Y,EAAExb,KAAKub,EAAEgxxB,gBAAgB5xxB,KAAK2ywB,gBAAgB3txB,IAAG,EAAG,EAAEguL,GAAG5yK,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEj8lB,GAAG5yK,UAAUwtG,SAAS,WAAW,OAAOolE,EAAE,EAAEw3N,GAAG64Z,0BAA0BxvyB,IAAI,WAAW,MAAM,GAAG,EAAE/J,OAAO0hC,iBAAiBwnJ,GAAGw3N,IAAI,IAAIC,GAAG,WAAWzqY,KAAK4yxB,SAAS,IAAI5swB,EAAEhmB,KAAK4jyB,gBAAgB,IAAI3+Z,EAAE,EAAEwF,GAAGrqY,UAAU6vT,OAAO,WAAW,GAAG,IAAI97T,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAmBpP,EAAEmP,UAAU,GAAzBA,UAAU,GAAoB6+xB,eAAehuyB,EAAEgb,KAAK4jyB,iBAAiB5jyB,KAAKiwT,OAAOjwT,KAAK4jyB,gBAAgB,CAAC,EAAEn5Z,GAAGrqY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExkY,GAAGrqY,UAAUwtG,SAAS,WAAW,OAAO68R,EAAE,EAAE,IAAIn8T,GAAG,WAAWtuE,KAAK8zxB,OAAO,KAAK,IAAIlzxB,EAAEzM,UAAU,GAAG6L,KAAK8zxB,OAAOlzxB,CAAC,EAAE+pY,GAAG,CAACk5Z,mBAAmB,CAAC5swB,cAAa,IAAKq3C,GAAGluE,UAAUmkrB,KAAK,WAAW,GAAG,IAAIpwrB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKukrB,KAAK3jrB,EAAE,MAAM,EAAE,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE/0B,EAAEy+yB,kBAAkB9/tB,EAAE,IAAIpwC,GAAGvuC,EAAE6b,EAAExb,GAAG,OAAO2a,KAAK8zxB,OAAO1kN,MAAMr1jB,EAAE,CAACk1vB,YAAY,WAAW,MAAM,CAACxqY,GAAG,EAAEqpZ,UAAU,SAASltxB,GAAGA,EAAEqvT,OAAOl2S,EAAE4pD,EAAE,IAAIA,EAAEmguB,aAAa,CAAC,EAAEx1tB,GAAGluE,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE3gsB,GAAGluE,UAAUwtG,SAAS,WAAW,OAAOt/B,EAAE,EAAEq8T,GAAGk5Z,mBAAmBhwyB,IAAI,WAAW,OAAO0/B,EAAE,EAAEzpC,OAAO0hC,iBAAiB8iD,GAAGq8T,IAAI,IAAIp3W,GAAG,SAAS3yB,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK+jyB,UAAU,KAAK/jyB,KAAKgkyB,YAAY,KAAKhkyB,KAAKikyB,qBAAqB,KAAKjkyB,KAAKkkyB,cAAa,EAAG,IAAIl/yB,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAK+jyB,UAAU/+yB,EAAEgb,KAAKgkyB,YAAYnjyB,EAAEb,KAAKikyB,qBAAqB5+yB,CAAC,CAAC,OAAOub,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU0jyB,YAAY,WAAW,OAAO9jyB,KAAKkkyB,YAAY,EAAEl/yB,EAAEob,UAAU6vT,OAAO,WAAW,GAAG,IAAI97T,UAAUC,OAAO,OAAOwM,EAAER,UAAU6vT,OAAOnvT,MAAMd,KAAK7L,WAAW,IAAmB0M,EAAE1M,UAAU,GAAG9O,EAA5B8O,UAAU,GAAsBm5B,aAAa,GAAG,OAAOttB,KAAKgkyB,aAAa3+yB,IAAI2a,KAAKgkyB,aAAanjyB,IAAIb,KAAKikyB,qBAAqB,OAAO,KAAKjkyB,KAAKkkyB,aAAalkyB,KAAK+jyB,UAAUJ,eAAet+yB,EAAEwb,EAAE,EAAE7b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAnxB,CAAqxBylZ,IAAI9/P,GAAG,WAAW3qI,KAAK04xB,IAAI,KAAK14xB,KAAKmkyB,uBAAuB,KAAK,IAAIvjyB,EAAEzM,UAAU,GAAG6L,KAAK04xB,IAAI93xB,EAAEZ,KAAKmkyB,uBAAuB,IAAItga,EAAE,EAAEl5P,GAAGvqI,UAAUk0xB,qBAAqB,SAAS1zxB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,IAAIC,GAAG7b,IAAIK,EAAE,OAAO,KAAK,IAAI00B,EAAEnZ,EAAEk+wB,iBAAiB95xB,GAAG2+E,EAAE/iE,EAAEk+wB,iBAAiB95xB,EAAE,GAAG/B,EAAE4d,EAAEi+wB,iBAAiBz5xB,GAAGuU,EAAEiH,EAAEi+wB,iBAAiBz5xB,EAAE,GAAG,GAAG2a,KAAK04xB,IAAI7hB,oBAAoB98vB,EAAE4pD,EAAE1gF,EAAE2W,GAAGoG,KAAK04xB,IAAIxhB,mBAAmBl3wB,KAAK04xB,IAAIthB,yBAAyB,CAAC,IAAI,IAAI1zrB,EAAE,EAAEA,EAAE1jF,KAAK04xB,IAAI3hB,qBAAqBrzrB,IAAI1jF,KAAKmkyB,uBAAuB7wyB,IAAI0M,KAAK04xB,IAAIz4X,gBAAgBv8U,IAAI9iF,EAAEqxxB,iBAAiBjyxB,KAAK04xB,IAAI1zyB,EAAE,GAAG6b,EAAEoxxB,iBAAiBjyxB,KAAK04xB,IAAIrzyB,EAAE,EAAE,CAAC,EAAEslJ,GAAGvqI,UAAUsgwB,OAAO,WAAW,OAAM,CAAE,EAAE/1nB,GAAGvqI,UAAUgkyB,yBAAyB,WAAW,OAAOpkyB,KAAKmkyB,sBAAsB,EAAEx5pB,GAAGvqI,UAAU6uwB,YAAY,WAAW,MAAM,CAACroY,GAAG,EAAEj8P,GAAGvqI,UAAUwtG,SAAS,WAAW,OAAO+8B,EAAE,EAAE,IAAI+/P,GAAG,WAAW1qY,KAAKqkyB,IAAI,KAAKrkyB,KAAK04xB,IAAI,KAAK14xB,KAAKkiyB,aAAa,KAAKliyB,KAAKiiyB,OAAO,KAAKjiyB,KAAKskyB,cAAc,KAAKtkyB,KAAKg0xB,iBAAiB,KAAK,IAAIpzxB,EAAEzM,UAAU,GAAG6L,KAAKqkyB,IAAIzjyB,EAAEZ,KAAK04xB,IAAI,IAAI7yyB,GAAGma,KAAK04xB,IAAIvhB,kBAAkBv2wB,GAAGZ,KAAKkiyB,aAAathyB,EAAEy2D,UAAU,EAAEqzU,GAAGtqY,UAAUmkyB,iBAAiB,SAAS3jyB,GAAG,IAAI5b,EAAEkgZ,GAAGgtZ,mBAAmBtxxB,GAAGC,EAAE,IAAIkyI,GAAG/tJ,GAAG,IAAI6b,EAAE6hyB,YAAY,CAAC,MAAM9hyB,GAAG,KAAKA,aAAakhD,GAAG,MAAMlhD,EAAEA,EAAEu/wB,iBAAiB,CAAC,EAAEz1Y,GAAGtqY,UAAU8xxB,mBAAmB,WAAW,OAAOhtZ,GAAGgtZ,mBAAmBlyxB,KAAKg0xB,iBAAiB,EAAEtpZ,GAAGtqY,UAAUokyB,UAAU,SAAS5jyB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKykyB,0BAA0B7jyB,EAAE5b,GAAGgb,KAAK0kyB,yBAAyB7jyB,GAAGb,KAAK2kyB,mBAAmB/jyB,EAAE,EAAE8pY,GAAGtqY,UAAUqkyB,0BAA0B,SAAS7jyB,EAAE5b,GAAG,IAAI6b,EAAE,IAAI8pI,GAAG3lJ,GAAG,OAAOgb,KAAKiiyB,OAAOrO,sBAAsB/yxB,GAAGb,KAAKiiyB,OAAOvO,aAAa9yxB,GAAGC,EAAEujyB,0BAA0B,EAAE15Z,GAAGtqY,UAAUukyB,mBAAmB,WAAW,GAAGjqxB,EAAEvmB,UAAU,GAAGovY,IAAI,IAAI,IAAI3iY,EAAEzM,UAAU,GAAG+N,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAOkY,KAAK2kyB,mBAAmB3/yB,EAAE,MAAM,GAAGmP,UAAU,aAAa+wY,GAAG,IAAI,IAAIrkY,EAAE1M,UAAU,GAAG9O,EAAEwb,EAAEi+wB,iBAAiB/kwB,EAAE,EAAEA,EAAE10B,EAAE+O,OAAO2lB,IAAI,CAAC,IAAI4pD,EAAE,IAAIqvG,GAAG3tL,EAAE00B,GAAG/Z,KAAKkiyB,aAAaliyB,KAAK04xB,KAAK14xB,KAAKskyB,cAAc//G,KAAK5gnB,EAAE9iE,EAAEkZ,IAAIlZ,EAAE+wxB,gBAAgBvsyB,EAAE00B,GAAGA,EAAE,CAAC,EAAE2wX,GAAGtqY,UAAUszxB,aAAa,SAAS9yxB,GAAGZ,KAAKg0xB,iBAAiBpzxB,EAAEZ,KAAKiiyB,OAAO,IAAIx8Z,GAAGzlY,KAAKskyB,cAAc,IAAIh2tB,GAAGtuE,KAAKiiyB,OAAOx3X,YAAYzqa,KAAKwkyB,UAAU5jyB,EAAEZ,KAAK04xB,IAAI,EAAEhuZ,GAAGtqY,UAAUskyB,yBAAyB,SAAS9jyB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAE,IAAI2tL,GAAGnyK,EAAEb,KAAKkiyB,aAAaliyB,KAAK04xB,KAAK14xB,KAAKskyB,cAAc//G,KAAKl/rB,EAAE,CAAC,EAAEqlZ,GAAGtqY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC9oY,GAAG,EAAEuE,GAAGtqY,UAAUwtG,SAAS,WAAW,OAAO88R,EAAE,EAAE,IAAIzkQ,GAAG,WAAW,GAAGjmI,KAAK4kyB,SAAS,KAAK5kyB,KAAKuuxB,UAAU,KAAKvuxB,KAAKy4xB,WAAW,IAAI3yZ,GAAG9lY,KAAK6kyB,gBAAgB,KAAK7kyB,KAAK8kyB,eAAe,KAAK,IAAI3wyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK4kyB,SAAShkyB,CAAC,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAK4kyB,SAAS5/yB,EAAEgb,KAAKy4xB,WAAW53xB,CAAC,CAAC,EAAEi4H,GAAG,CAAC47pB,UAAU,CAACz9vB,cAAa,GAAI8twB,SAAS,CAAC9twB,cAAa,GAAIq+vB,SAAS,CAACr+vB,cAAa,GAAIs+vB,WAAW,CAACt+vB,cAAa,GAAI+twB,qBAAqB,CAAC/twB,cAAa,IAAKgvG,GAAG7lI,UAAU6kyB,qBAAqB,SAASrkyB,GAAG,IAAI5b,EAAE,IAAIg1G,GAAG,IAAI0wS,GAAG,IAAIv/B,GAAG,IAAIvqW,EAAEy2D,YAAYx2D,EAAE,IAAI61P,GAAG12P,KAAKy4xB,YAAY53xB,EAAE2gyB,yBAAyB5gyB,GAAGC,EAAEkhyB,SAAS/8yB,GAAGgb,KAAK6kyB,gBAAgBhkyB,EAAElc,OAAOqb,KAAK4kyB,SAAS5kyB,KAAKuuxB,UAAU,EAAEtopB,GAAG7lI,UAAU8kyB,uBAAuB,WAAW,IAAItkyB,EAAEZ,KAAK,GAAG,IAAI7L,UAAUC,OAAO,CAAC,IAAI,IAAIpP,EAAEihJ,GAAG++pB,qBAAqBhgzB,GAAG,EAAEA,IAAI,CAAC,IAAI4b,EAAEskyB,uBAAuBlgzB,EAAE,CAAC,MAAMA,GAAG,KAAKA,aAAa2nX,IAAI,MAAM3nX,EAAE4b,EAAEkkyB,eAAe9/yB,CAAC,CAAC,GAAG,OAAO4b,EAAEikyB,gBAAgB,OAAO,IAAI,CAAC,MAAM7kyB,KAAK8kyB,cAAc,CAAC,GAAG,IAAI3wyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE4gJ,GAAGk/pB,qBAAqBnlyB,KAAK4kyB,SAAS5kyB,KAAKuuxB,UAAU1txB,GAAGkZ,EAAE,IAAIoxV,GAAG9lX,GAAG2a,KAAKilyB,qBAAqBlrxB,EAAE,CAAC,EAAEksH,GAAG7lI,UAAUglyB,gBAAgB,WAAW,GAAGplyB,KAAKqlyB,0BAA0B,OAAOrlyB,KAAK6kyB,gBAAgB,OAAO,KAAK,IAAIjkyB,EAAEZ,KAAK4kyB,SAASrqB,aAAae,oBAAoB16wB,EAAEq4Z,YAAY9tD,GAAG16G,MAAMzwP,KAAKilyB,qBAAqBrkyB,GAAGZ,KAAKklyB,wBAAwB,EAAEj/pB,GAAG7lI,UAAU80xB,oBAAoB,SAASt0xB,GAAGZ,KAAKy4xB,WAAWvD,oBAAoBt0xB,EAAE,EAAEqlI,GAAG7lI,UAAUilyB,wBAAwB,WAAW,IAAI,IAAIzkyB,EAAE,IAAI81P,GAAG12P,KAAKy4xB,YAAYz4xB,KAAK6kyB,gBAAgBjkyB,EAAEjc,OAAOqb,KAAK4kyB,SAAS5kyB,KAAKuuxB,UAAU,CAAC,MAAM3txB,GAAG,KAAKA,aAAa8oF,GAAG,MAAM9oF,EAAEZ,KAAK8kyB,eAAelkyB,CAAC,CAAC,EAAEqlI,GAAG7lI,UAAUklyB,kBAAkB,SAAS1kyB,GAAG,OAAOZ,KAAKuuxB,UAAU3txB,EAAEZ,KAAKolyB,kBAAkBplyB,KAAK6kyB,eAAe,EAAE5+pB,GAAG7lI,UAAU+0xB,eAAe,SAASv0xB,GAAGZ,KAAKy4xB,WAAWtD,eAAev0xB,EAAE,EAAEqlI,GAAG7lI,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEhpoB,GAAG7lI,UAAUwtG,SAAS,WAAW,OAAOq4B,EAAE,EAAEA,GAAGs/pB,SAAS,WAAW,GAAG,IAAIpxyB,UAAUC,OAAO,CAAC,IAAmBpP,EAAEmP,UAAU,GAAG,OAAO,IAAI8xI,GAAvC9xI,UAAU,IAAmCmxyB,kBAAkBtgzB,EAAE,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,GAAG+b,OAAO+0F,UAAU/wG,UAAU,KAAKA,UAAU,aAAa60I,IAAI,iBAAiB70I,UAAU,GAAG,CAAC,IAAmB9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAE,IAAIsiE,GAAjD9xI,UAAU,IAAsE,OAAzBwvE,EAAEuxtB,oBAAoBn7wB,GAAU4pD,EAAE2huB,kBAAkBjgzB,EAAE,CAAC,GAAG8O,UAAU,aAAa2xY,IAAI3xY,UAAU,aAAa60I,IAAI,iBAAiB70I,UAAU,GAAG,CAAC,IAAmByF,EAAEzF,UAAU,GAAkB,OAAO,IAAI8xI,GAAtD9xI,UAAU,GAAoBA,UAAU,IAAsBmxyB,kBAAkB1ryB,EAAE,CAAC,MAAM,GAAG,IAAIzF,UAAUC,OAAO,CAAC,IAAmBxO,EAAEuO,UAAU,GAAGgM,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAAE,IAAIukI,GAAhE9xI,UAAU,IAAyG,OAA7CuN,EAAEwzxB,oBAAoB/0xB,GAAGuB,EAAEyzxB,eAAe9xyB,GAAUqe,EAAE4jyB,kBAAkB1/yB,EAAE,CAAC,EAAEqgJ,GAAGk/pB,qBAAqB,SAASvkyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEw6wB,sBAAsBrhwB,EAAEa,EAAEjxB,IAAInE,KAAKM,IAAIT,EAAEguxB,WAAW7txB,KAAKM,IAAIT,EAAEiuxB,WAAW9txB,KAAKM,IAAIT,EAAEkuxB,WAAW/txB,KAAKM,IAAIT,EAAEmuxB,YAAY,GAAGxuxB,EAAE,EAAEA,EAAE,GAAG2+E,EAAE9iE,EAAErb,KAAKwpxB,MAAMxpxB,KAAKS,IAAI8zB,GAAGv0B,KAAKS,IAAI,IAAI,GAAG,OAAOT,KAAKC,IAAI,GAAGk+E,EAAE,EAAEm1D,GAAG47pB,UAAU7gyB,IAAI,WAAW,OAAOiyY,GAAG4uZ,SAAS,EAAE57pB,GAAGisqB,SAASlxyB,IAAI,WAAW,OAAOiyY,GAAGwvZ,QAAQ,EAAEx8pB,GAAGw8pB,SAASzhyB,IAAI,WAAW,OAAOiyY,GAAGwvZ,QAAQ,EAAEx8pB,GAAGy8pB,WAAW1hyB,IAAI,WAAW,OAAOiyY,GAAGyvZ,UAAU,EAAEz8pB,GAAGksqB,qBAAqBnxyB,IAAI,WAAW,OAAO,EAAE,EAAE/J,OAAO0hC,iBAAiBy6G,GAAGnN,IAAI,IAAIn+H,GAAG,WAAWqF,KAAK6iyB,IAAI,CAAC,IAAI7pxB,EAAE,IAAIA,GAAGhZ,KAAKuuxB,UAAUpsxB,EAAE7c,IAAI0a,KAAKwlyB,SAAQ,CAAE,EAAE7qyB,GAAGyF,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAK6iyB,GAAG,EAAEloyB,GAAGyF,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAK6iyB,IAAIjiyB,EAAE,EAAEjG,GAAGyF,UAAUqlyB,WAAW,WAAW,GAAG,IAAItxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKylyB,WAAW7kyB,EAAEiiyB,IAAI,GAAGjiyB,EAAEiiyB,IAAI,GAAG,MAAM,GAAG,IAAI1uyB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAKwlyB,QAAQ,OAAOxlyB,KAAKupC,WAAWvkD,EAAE6b,GAAG,KAAK,IAAIxb,EAAEL,EAAEuT,SAASsI,GAAGxb,EAAE2a,KAAKuuxB,WAAWvuxB,KAAKupC,WAAWvkD,EAAE6b,EAAExb,EAAE,CAAC,EAAEsV,GAAGyF,UAAUmpC,WAAW,WAAW,GAAG,IAAIp1C,UAAUC,OAAO4L,KAAKwlyB,SAAQ,OAAQ,GAAG,IAAIrxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK6iyB,IAAI,GAAG9yB,cAAcnvwB,GAAGZ,KAAK6iyB,IAAI,GAAG9yB,cAAc/qxB,GAAGgb,KAAKuuxB,UAAU3txB,EAAErI,SAASvT,GAAGgb,KAAKwlyB,SAAQ,CAAE,MAAM,GAAG,IAAIrxyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAK6iyB,IAAI,GAAG9yB,cAAclvwB,GAAGb,KAAK6iyB,IAAI,GAAG9yB,cAAc1qxB,GAAG2a,KAAKuuxB,UAAUx0wB,EAAE/Z,KAAKwlyB,SAAQ,CAAE,CAAC,EAAE7qyB,GAAGyF,UAAUwuxB,YAAY,WAAW,OAAO5uxB,KAAKuuxB,SAAS,EAAE5zxB,GAAGyF,UAAUslyB,WAAW,WAAW,GAAG,IAAIvxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK0lyB,WAAW9kyB,EAAEiiyB,IAAI,GAAGjiyB,EAAEiiyB,IAAI,GAAG,MAAM,GAAG,IAAI1uyB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAKwlyB,QAAQ,OAAOxlyB,KAAKupC,WAAWvkD,EAAE6b,GAAG,KAAK,IAAIxb,EAAEL,EAAEuT,SAASsI,GAAGxb,EAAE2a,KAAKuuxB,WAAWvuxB,KAAKupC,WAAWvkD,EAAE6b,EAAExb,EAAE,CAAC,EAAEsV,GAAGyF,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEt0wB,GAAGyF,UAAUwtG,SAAS,WAAW,OAAOjzG,EAAE,EAAE,IAAIo2L,GAAG,WAAW,EAAEA,GAAG3wL,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEl+kB,GAAG3wL,UAAUwtG,SAAS,WAAW,OAAOmjF,EAAE,EAAEA,GAAG40mB,gBAAgB,WAAW,GAAGxxyB,UAAU,aAAawG,IAAIxG,UAAU,aAAa+uY,IAAI/uY,UAAU,aAAa6kB,EAAE,IAAI,IAAmBh0B,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAA3C8O,UAAU,GAAqC2qxB,iBAAiB/kwB,EAAE,IAAIkrX,GAAGthU,EAAE,EAAEA,EAAEt+E,EAAE+O,OAAO,EAAEuvE,IAAI,CAAC5pD,EAAE04wB,eAAeptyB,EAAEs+E,GAAGt+E,EAAEs+E,EAAE,IAAI,IAAI1gF,EAAE82B,EAAE8me,aAAa77f,GAAG6b,EAAE4kyB,WAAWxizB,EAAE+B,EAAE,MAAM,GAAGmP,UAAU,aAAawG,IAAIxG,UAAU,aAAaqwY,IAAIrwY,UAAU,aAAa6kB,EAAE,CAAC,IAAIpf,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAG48L,GAAG40mB,gBAAgB/ryB,EAAEmnxB,kBAAkBr9rB,EAAElrE,GAAG,IAAI,IAAI5yB,EAAE,EAAEA,EAAEgU,EAAEinxB,qBAAqBj7xB,IAAImrM,GAAG40mB,gBAAgB/ryB,EAAEonxB,iBAAiBp7xB,GAAG89F,EAAElrE,EAAE,MAAM,GAAGrkB,UAAU,aAAawG,IAAIxG,UAAU,aAAa60I,IAAI70I,UAAU,aAAa6kB,EAAE,CAAC,IAAI7Y,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAAEvN,UAAU,GAAG,GAAGgM,aAAa+iY,GAAGnyM,GAAG40mB,gBAAgBxlyB,EAAE9c,EAAEqe,QAAQ,GAAGvB,aAAaqkY,GAAGzzM,GAAG40mB,gBAAgBxlyB,EAAE9c,EAAEqe,QAAQ,GAAGvB,aAAaujY,GAAG,IAAI,IAAI/hY,EAAExB,EAAE5c,EAAE,EAAEA,EAAEoe,EAAEq5wB,mBAAmBz3xB,IAAI,CAAC,IAAII,EAAEge,EAAE64wB,aAAaj3xB,GAAGwtM,GAAG40mB,gBAAgBhizB,EAAEN,EAAEqe,EAAE,MAAMA,EAAE+jyB,WAAWtlyB,EAAEwywB,gBAAgBtvxB,EAAE,MAAM,GAAG8Q,UAAU,aAAawG,IAAIxG,UAAU,aAAa8wY,IAAI9wY,UAAU,aAAa6kB,EAAE,CAAC,IAAmB71B,EAAEgR,UAAU,GAAGgO,EAAEhO,UAAU,GAAGgnB,EAA3ChnB,UAAU,GAAqC0sf,aAAa19f,GAAGgf,EAAEsjyB,WAAWtqxB,EAAEh4B,EAAE,CAAC,EAAE,IAAIynZ,GAAG,SAAShqY,GAAGZ,KAAK4lyB,WAAW,IAAIjryB,GAAGqF,KAAKo8xB,WAAWx7xB,GAAG,IAAI,EAAE0qY,GAAG,CAACu6Z,uBAAuB,CAAC5uwB,cAAa,GAAI6uwB,0BAA0B,CAAC7uwB,cAAa,IAAK2zW,GAAGxqY,UAAU2lyB,2BAA2B,SAASnlyB,GAAG,IAAI5b,EAAE,IAAI6zI,GAAG74H,KAAKo8xB,YAAYx7xB,EAAEE,MAAM9b,GAAGgb,KAAK4lyB,WAAWF,WAAW1gzB,EAAEghzB,sBAAsB,EAAEp7Z,GAAGxqY,UAAU6lyB,yBAAyB,SAASrlyB,GAAG,IAAI5b,EAAE,IAAI0mZ,GAAG1rY,KAAKo8xB,YAAYx7xB,EAAEE,MAAM9b,GAAGgb,KAAK4lyB,WAAWF,WAAW1gzB,EAAEghzB,sBAAsB,EAAEp7Z,GAAGxqY,UAAU8lyB,aAAa,SAAStlyB,GAAG,OAAOZ,KAAKimyB,yBAAyBrlyB,GAAGZ,KAAK+lyB,2BAA2BnlyB,GAAGZ,KAAK4lyB,WAAWhX,aAAa,EAAEhkZ,GAAGxqY,UAAU+lyB,kBAAkB,WAAW,OAAOnmyB,KAAK4lyB,UAAU,EAAEh7Z,GAAGxqY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAErkY,GAAGxqY,UAAUwtG,SAAS,WAAW,OAAOg9R,EAAE,EAAEU,GAAGu6Z,uBAAuBhyyB,IAAI,WAAW,OAAO63Y,EAAE,EAAEJ,GAAGw6Z,0BAA0BjyyB,IAAI,WAAW,OAAOglI,EAAE,EAAE/uI,OAAO0hC,iBAAiBo/W,GAAGU,IAAI,IAAII,GAAG,SAAS9qY,GAAGZ,KAAK4lyB,WAAW,IAAIjryB,GAAGqF,KAAKomyB,WAAW,IAAIzryB,GAAGqF,KAAKm/wB,MAAMv+wB,GAAG,IAAI,EAAE8qY,GAAGtrY,UAAUnP,OAAO,SAAS2P,GAAGZ,KAAKomyB,WAAW78vB,aAAawnJ,GAAG40mB,gBAAgB3lyB,KAAKm/wB,MAAMv+wB,EAAEZ,KAAKomyB,YAAYpmyB,KAAK4lyB,WAAWF,WAAW1lyB,KAAKomyB,WAAW,EAAE16Z,GAAGtrY,UAAU4lyB,oBAAoB,WAAW,OAAOhmyB,KAAK4lyB,UAAU,EAAEl6Z,GAAGtrY,UAAU6uwB,YAAY,WAAW,MAAM,CAACt/mB,GAAG,EAAE+7O,GAAGtrY,UAAUwtG,SAAS,WAAW,OAAO89R,EAAE,EAAE,IAAI7yQ,GAAG,SAASj4H,GAAGZ,KAAK4lyB,WAAW,IAAIjryB,GAAGqF,KAAKomyB,WAAW,IAAIzryB,GAAGqF,KAAKm/wB,MAAMv+wB,GAAG,IAAI,EAAEi4H,GAAGz4H,UAAUnP,OAAO,SAAS2P,EAAE5b,GAAG,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAI6b,EAAED,EAAE+xwB,cAAc3txB,EAAE,GAAGK,EAAEub,EAAE+xwB,cAAc3txB,GAAG+0B,EAAE,IAAIf,GAAGnY,EAAEta,EAAElB,EAAEkB,GAAG,GAAGsa,EAAEld,EAAE0B,EAAE1B,GAAG,GAAGqc,KAAKomyB,WAAW78vB,aAAawnJ,GAAG40mB,gBAAgB3lyB,KAAKm/wB,MAAMplwB,EAAE/Z,KAAKomyB,YAAYpmyB,KAAK4lyB,WAAWF,WAAW1lyB,KAAKomyB,WAAW,EAAEvtqB,GAAGz4H,UAAUsgwB,OAAO,WAAW,OAAM,CAAE,EAAE7noB,GAAGz4H,UAAUy+wB,kBAAkB,WAAW,OAAM,CAAE,EAAEhmpB,GAAGz4H,UAAU4lyB,oBAAoB,WAAW,OAAOhmyB,KAAK4lyB,UAAU,EAAE/sqB,GAAGz4H,UAAU6uwB,YAAY,WAAW,MAAM,CAACnrY,GAAG,EAAEjrQ,GAAGz4H,UAAUwtG,SAAS,WAAW,OAAOirB,EAAE,EAAE,IAAI+yQ,GAAG,SAAShrY,GAAGZ,KAAKqmyB,OAAOzlyB,GAAG,IAAI,EAAEgrY,GAAGxrY,UAAUnP,OAAO,SAAS2P,GAAGA,aAAa4jY,IAAIxkY,KAAKqmyB,OAAO/yyB,IAAIsN,EAAE,EAAEgrY,GAAGxrY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC7za,GAAG,EAAEwwC,GAAGxrY,UAAUwtG,SAAS,WAAW,OAAOg+R,EAAE,EAAEA,GAAG8hZ,YAAY,WAAW,GAAG,IAAIv5xB,UAAUC,OAA2B,OAAOw3Y,GAAG8hZ,YAAvBv5xB,UAAU,GAA2B,IAAI0vY,IAAI,GAAG,IAAI1vY,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOnP,aAAaw/Y,GAAG3jY,EAAEvN,IAAItO,GAAGA,aAAa0+Y,IAAI1+Y,EAAE8b,MAAM,IAAI8qY,GAAG/qY,IAAIA,CAAC,CAAC,EAAE,IAAIkzJ,GAAG,WAAW,GAAG/zJ,KAAKsmyB,OAAO,KAAKtmyB,KAAKumyB,uBAAsB,EAAG,IAAIpyyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKsmyB,OAAO1lyB,CAAC,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKsmyB,OAAOthzB,EAAEgb,KAAKumyB,sBAAsB1lyB,CAAC,CAAC,EAAEkzJ,GAAG3zJ,UAAUnP,OAAO,SAAS2P,GAAG,GAAGZ,KAAKumyB,uBAAuB3lyB,aAAaopF,GAAG,CAAC,IAAIhlG,EAAE4b,EAAE25wB,aAAanF,iBAAiBx0wB,EAAE8/wB,yBAAyB,OAAO1gxB,KAAKsmyB,OAAOhzyB,IAAItO,GAAG,IAAI,CAAC4b,aAAasiY,IAAIljY,KAAKsmyB,OAAOhzyB,IAAIsN,EAAE,EAAEmzJ,GAAG3zJ,UAAUomyB,qBAAqB,SAAS5lyB,GAAGZ,KAAKumyB,sBAAsB3lyB,CAAC,EAAEmzJ,GAAG3zJ,UAAU6uwB,YAAY,WAAW,MAAM,CAACnka,GAAG,EAAE/2M,GAAG3zJ,UAAUwtG,SAAS,WAAW,OAAOmmD,EAAE,EAAEA,GAAGiqoB,YAAY,WAAW,GAAG,IAAI7pyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAOyM,EAAE25wB,aAAamI,cAAc3unB,GAAG0yoB,SAAS7lyB,GAAG,CAAC,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOnP,EAAEu1xB,aAAamI,cAAc3unB,GAAG0yoB,SAASzhzB,EAAE6b,GAAG,CAAC,EAAEkzJ,GAAG0yoB,SAAS,WAAW,GAAG,IAAItyyB,UAAUC,OAA2B,OAAO2/J,GAAG0yoB,SAAvBtyyB,UAAU,IAAwB,GAAI,GAAG,IAAIA,UAAUC,OAAO,CAAC,GAAGsmB,EAAEvmB,UAAU,GAAGovY,KAAK7oX,EAAEvmB,UAAU,GAAGovY,IAAI,CAAC,IAAI,IAAmB1iY,EAAE1M,UAAU,GAAG9O,EAA5B8O,UAAU,GAAsB+N,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAOisK,GAAG0yoB,SAAS1sxB,EAAElZ,EAAE,CAAC,OAAOA,CAAC,CAAC,GAAG1M,UAAU,aAAa60I,IAAI,kBAAkB70I,UAAU,GAAG,CAAC,IAAIwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAE,IAAIiqY,GAAG,OAAOlgU,EAAE7iE,MAAM,IAAIizJ,GAAGn6J,EAAE3W,IAAI2W,CAAC,CAAC,GAAGzF,UAAU,aAAa60I,IAAItuH,EAAEvmB,UAAU,GAAGovY,IAAI,CAAC,IAAI7/S,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAG,OAAOuvF,aAAaw/S,GAAG1qX,EAAEllB,IAAIowF,GAAGA,EAAE5iF,MAAM,IAAIizJ,GAAGv7I,IAAIA,CAAC,CAAC,MAAM,GAAG,IAAIrkB,UAAUC,OAAO,CAAC,GAAG,kBAAkBD,UAAU,IAAIumB,EAAEvmB,UAAU,GAAGovY,KAAK7oX,EAAEvmB,UAAU,GAAGovY,IAAI,CAAC,IAAI,IAAmBpjY,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAA3CvN,UAAU,GAAqC+N,WAAWR,EAAEg6wB,WAAW,CAAC,IAAI/5wB,EAAED,EAAE5Z,OAAOisK,GAAG0yoB,SAAS9kyB,EAAExB,EAAE9c,EAAE,CAAC,OAAO8c,CAAC,CAAC,GAAG,kBAAkBhM,UAAU,IAAIA,UAAU,aAAa60I,IAAItuH,EAAEvmB,UAAU,GAAGovY,IAAI,CAAC,IAAmB5/Y,EAAEwQ,UAAU,GAAGyN,EAAEzN,UAAU,GAAG,OAA3CA,UAAU,GAA0C2M,MAAM,IAAIizJ,GAAGpwK,EAAEie,IAAIje,CAAC,CAAC,CAAC,EAAE,IAAIknZ,GAAG,WAAW,GAAG7qY,KAAK0myB,cAAc77b,GAAGyxa,sBAAsBt8wB,KAAK2myB,MAAM,KAAK3myB,KAAK4myB,eAAe,KAAK,IAAIzyyB,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,GAAG,OAAOyM,EAAE,MAAM,IAAIzd,EAAE,yBAAyB6c,KAAK0myB,cAAc9lyB,CAAC,CAAC,EAAEiqY,GAAGzqY,UAAUymyB,eAAe,WAAW,GAAG1yyB,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAaqwY,GAAG,CAAC,IAAI5jY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,GAAGnP,EAAEw4N,UAAU,OAAO5jM,EAAEu2vB,SAAS,IAAItvwB,EAAE7b,EAAE+7xB,kBAAkB17xB,EAAE2a,KAAK8myB,oBAAoBlmyB,EAAEC,GAAG,GAAGxb,IAAIu0B,EAAEu2vB,SAAS,OAAOv2vB,EAAEu2vB,SAAS,GAAG9qxB,IAAIu0B,EAAEs2vB,SAAS,OAAOt2vB,EAAEs2vB,SAAS,IAAI,IAAIn2vB,EAAE,EAAEA,EAAE/0B,EAAE67xB,qBAAqB9mwB,IAAI,CAAC,IAAI4pD,EAAE3+E,EAAEg8xB,iBAAiBjnwB,GAAG92B,EAAE+c,KAAK8myB,oBAAoBlmyB,EAAE+iE,GAAG,GAAG1gF,IAAI22B,EAAEq2vB,SAAS,OAAOr2vB,EAAEu2vB,SAAS,GAAGltxB,IAAI22B,EAAEs2vB,SAAS,OAAOt2vB,EAAEs2vB,QAAQ,CAAC,OAAOt2vB,EAAEq2vB,QAAQ,CAAC,GAAG97wB,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAa+uY,GAAG,CAAC,IAAItpY,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAG,IAAIuvF,EAAE03rB,sBAAsBhgY,WAAWxhZ,GAAG,OAAOggB,EAAEu2vB,SAAS,IAAI33vB,EAAEkrE,EAAEo7rB,iBAAiB,OAAOp7rB,EAAEqvjB,aAAan5oB,EAAEmuN,OAAOvvM,EAAE,MAAM5e,EAAEmuN,OAAOvvM,EAAEA,EAAEpkB,OAAO,IAAIs8X,GAAG6oZ,SAAS3/wB,EAAE4e,GAAGoB,EAAEq2vB,SAASr2vB,EAAEu2vB,SAASv2vB,EAAEs2vB,QAAQ,CAAC,GAAG/7wB,UAAU,aAAa6kB,GAAG7kB,UAAU,aAAaowY,GAAG,CAAC,IAAI3+Y,EAAEuO,UAAU,GAAG,OAAOA,UAAU,GAAGw+wB,gBAAgBjD,SAAS9pxB,GAAGg0B,EAAEq2vB,SAASr2vB,EAAEu2vB,QAAQ,CAAC,EAAEtlY,GAAGzqY,UAAU0myB,oBAAoB,SAASlmyB,EAAE5b,GAAG,OAAOA,EAAEo2xB,sBAAsBhgY,WAAWx6Y,GAAG8vX,GAAGkoZ,kBAAkBh4wB,EAAE5b,EAAE85xB,kBAAkBllwB,EAAEu2vB,QAAQ,EAAEtlY,GAAGzqY,UAAUg7Y,WAAW,SAASx6Y,EAAE5b,GAAG,OAAOgb,KAAKg9xB,OAAOp8xB,EAAE5b,KAAK40B,EAAEu2vB,QAAQ,EAAEtlY,GAAGzqY,UAAU2myB,mBAAmB,SAASnmyB,GAAGA,IAAIgZ,EAAEq2vB,WAAWjwwB,KAAK2myB,OAAM,GAAI/lyB,IAAIgZ,EAAEs2vB,UAAUlwwB,KAAK4myB,gBAAgB,EAAE/7Z,GAAGzqY,UAAU4myB,gBAAgB,SAASpmyB,EAAE5b,GAAG,GAAGA,aAAau/Y,IAAIvkY,KAAK+myB,mBAAmB/myB,KAAK6myB,eAAejmyB,EAAE5b,IAAIA,aAAak+Y,GAAGljY,KAAK+myB,mBAAmB/myB,KAAK6myB,eAAejmyB,EAAE5b,SAAS,GAAGA,aAAaw/Y,GAAGxkY,KAAK+myB,mBAAmB/myB,KAAK6myB,eAAejmyB,EAAE5b,SAAS,GAAGA,aAAam/Y,GAAG,IAAI,IAAItjY,EAAE7b,EAAEK,EAAE,EAAEA,EAAEwb,EAAEm6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAElZ,EAAE25wB,aAAan1xB,GAAG2a,KAAK+myB,mBAAmB/myB,KAAK6myB,eAAejmyB,EAAEmZ,GAAG,MAAM,GAAG/0B,aAAautV,GAAG,IAAI,IAAI5uQ,EAAE3+E,EAAE/B,EAAE,EAAEA,EAAE0gF,EAAEq3sB,mBAAmB/3xB,IAAI,CAAC,IAAI2W,EAAE+pE,EAAE62sB,aAAav3xB,GAAG+c,KAAK+myB,mBAAmB/myB,KAAK6myB,eAAejmyB,EAAEhH,GAAG,MAAM,GAAG5U,aAAa0+Y,GAAG,IAAI,IAAIhgT,EAAE,IAAI+iT,GAAGzhZ,GAAG0+F,EAAEg4rB,WAAW,CAAC,IAAIljwB,EAAEkrE,EAAE57F,OAAO0wB,IAAIxzB,GAAGgb,KAAKgnyB,gBAAgBpmyB,EAAE4X,EAAE,CAAC,EAAEqyX,GAAGzqY,UAAU48xB,OAAO,SAASp8xB,EAAE5b,GAAG,OAAOA,EAAEw4N,UAAU5jM,EAAEu2vB,SAASnrxB,aAAak+Y,IAA4Bl+Y,aAAaw/Y,GAAtCxkY,KAAK6myB,eAAejmyB,EAAE5b,IAA6Cgb,KAAK2myB,OAAM,EAAG3myB,KAAK4myB,eAAe,EAAE5myB,KAAKgnyB,gBAAgBpmyB,EAAE5b,GAAGgb,KAAK0myB,cAAcnqB,aAAav8wB,KAAK4myB,gBAAgBhtxB,EAAEs2vB,SAASlwwB,KAAK4myB,eAAe,GAAG5myB,KAAK2myB,MAAM/sxB,EAAEq2vB,SAASr2vB,EAAEu2vB,SAAS,EAAEtlY,GAAGzqY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpkY,GAAGzqY,UAAUwtG,SAAS,WAAW,OAAOi9R,EAAE,EAAE,IAAIW,GAAG,SAAS5qY,IAAI,GAAGZ,KAAK2umB,WAAW,KAAK3umB,KAAKinyB,UAAU,KAAKjnyB,KAAK6iyB,IAAI,KAAK,IAAI1uyB,UAAUC,OAA0CwM,EAAEP,KAAKL,KAAnC7L,UAAU,GAAgCyM,EAAEsmyB,YAA7B/yyB,UAAU,SAAuC,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAK2umB,WAAWtpnB,EAAE2a,KAAKinyB,UAAUltxB,EAAE/Z,KAAK6iyB,IAAIl/tB,CAAC,CAAC,EAAE0yQ,GAAG,CAAC6wd,YAAY,CAACjwwB,cAAa,IAAKu0W,GAAGprY,UAAU+myB,aAAa,WAAW,OAAOnnyB,KAAKinyB,YAAYz7Z,GAAG07Z,WAAW,EAAE17Z,GAAGprY,UAAUuywB,cAAc,WAAW,OAAO3ywB,KAAK6iyB,GAAG,EAAEr3Z,GAAGprY,UAAUgnyB,qBAAqB,WAAW,OAAOpnyB,KAAK2umB,UAAU,EAAEnjO,GAAGprY,UAAU6/xB,gBAAgB,WAAW,OAAOjgyB,KAAKinyB,SAAS,EAAEz7Z,GAAGprY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEzjY,GAAGprY,UAAUwtG,SAAS,WAAW,OAAO49R,EAAE,EAAEn1D,GAAG6wd,YAAYrzyB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiBggX,GAAGn1D,IAAI,IAAI8c,GAAG,SAASvyV,GAAGZ,KAAK4mxB,KAAKhmxB,GAAG,IAAI,EAAEuyV,GAAG/yV,UAAUnP,OAAO,SAAS2P,GAAGA,aAAa2jY,IAAIvkY,KAAK4mxB,KAAKtzxB,IAAIsN,EAAE,EAAEuyV,GAAG/yV,UAAU6uwB,YAAY,WAAW,MAAM,CAAC7za,GAAG,EAAEjI,GAAG/yV,UAAUwtG,SAAS,WAAW,OAAOulP,EAAE,EAAEA,GAAGs2E,UAAU,WAAW,GAAG,IAAIt1a,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAOyM,aAAa2jY,GAAG14B,GAAGuib,cAAcxtxB,GAAGuyV,GAAGs2E,UAAU7oa,EAAE,IAAIijY,GAAG,CAAC,GAAG,IAAI1vY,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOnP,aAAau/Y,GAAG1jY,EAAEvN,IAAItO,GAAGA,aAAa0+Y,IAAI1+Y,EAAE8b,MAAM,IAAIqyV,GAAGtyV,IAAIA,CAAC,CAAC,EAAE,IAAIwqY,GAAG,WAAWrrY,KAAKqnyB,WAAW,KAAK,IAAIzmyB,EAAEzM,UAAU,GAAG6L,KAAKqnyB,WAAWzmyB,CAAC,EAAEyqY,GAAGjrY,UAAUnP,OAAO,SAAS2P,IAAIA,aAAa2jY,IAAI3jY,aAAasiY,IAAItiY,aAAa4jY,KAAKxkY,KAAKqnyB,WAAW/zyB,IAAI,IAAIk4Y,GAAG5qY,EAAE,EAAEA,EAAE+xwB,iBAAiB,EAAEtnY,GAAGjrY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC7za,GAAG,EAAEiwC,GAAGjrY,UAAUwtG,SAAS,WAAW,OAAOy9R,EAAE,EAAEA,GAAG46Y,aAAa,SAASrlxB,GAAG,IAAI5b,EAAE,IAAI6+Y,GAAG,OAAOjjY,EAAEE,MAAM,IAAIuqY,GAAGrmZ,IAAIA,CAAC,EAAE,IAAIgmZ,GAAG,WAAW,GAAGhrY,KAAKm/wB,MAAM,KAAKn/wB,KAAKsnyB,mBAAmB,EAAEtnyB,KAAKunyB,WAAW,IAAI18Z,GAAG7qY,KAAKwnyB,qBAAqB,KAAKxnyB,KAAKynyB,aAAatlyB,EAAEgtQ,UAAU,IAAIh7Q,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKm/wB,MAAM,CAACv+wB,EAAE5b,GAAGgb,KAAKsnyB,mBAAmB,CAAC,MAAM,GAAG,IAAInzyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKm/wB,MAAM,IAAI7qxB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKm/wB,MAAM,GAAGt+wB,EAAEb,KAAKm/wB,MAAM,GAAG95xB,EAAE2a,KAAKsnyB,mBAAmBvtxB,CAAC,CAAC,EAAEixX,GAAG5qY,UAAUsnyB,2BAA2B,WAAW,GAAG,IAAIvzyB,UAAUC,OAAO,CAAC,IAAIwM,EAAE,IAAItM,MAAM,GAAGm6B,KAAK,MAAM,GAAGzuB,KAAK0nyB,2BAA2B,EAAE9myB,GAAGZ,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,KAAKtnyB,KAAK0nyB,2BAA2B,EAAE9myB,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE,EAAEL,EAAE+0B,EAAE6xX,GAAG8hZ,YAAY1txB,KAAKm/wB,MAAMn6xB,IAAI,GAAG+0B,EAAEhH,OAAO,EAAE,CAAC,IAAI4wD,EAAE0nU,GAAG46Y,aAAajmxB,KAAKm/wB,MAAM95xB,IAAI,GAAG2a,KAAK0nyB,2BAA2B/juB,EAAE5pD,EAAElZ,GAAGb,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAOtnyB,KAAKwnyB,qBAAqBnizB,GAAGwb,EAAE,GAAGb,KAAKwnyB,qBAAqBxizB,GAAG6b,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI1M,UAAUC,OAAO,GAAGD,UAAU,aAAaG,OAAOomB,EAAEvmB,UAAU,GAAGyuY,KAAKloX,EAAEvmB,UAAU,GAAGyuY,KAAK,IAAI,IAAI3/Y,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAE,EAAEA,EAAEv1B,EAAE8vB,OAAOyF,IAAI,IAAI,IAAI5yB,EAAE3C,EAAE4Q,IAAI2kB,GAAGrY,EAAE,EAAEA,EAAEvG,EAAEmZ,OAAO5S,IAAI,GAAGH,KAAK0nyB,2BAA2B9hzB,EAAEgU,EAAE/F,IAAIsM,GAAGujF,GAAG1jF,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,UAAU,GAAGnzyB,UAAU,aAAaG,OAAOH,UAAU,aAAaq3Y,IAAIr3Y,UAAU,aAAaqwY,GAAG,CAAC,IAAInhZ,EAAE8Q,UAAU,GAAGuN,EAAEvN,UAAU,GAAGwN,EAAExN,UAAU,GAAG5Q,EAAEF,EAAEsvxB,gBAAgB,GAAG/4vB,EAAEu2vB,WAAWnwwB,KAAKunyB,WAAWvK,OAAOz5yB,EAAEme,GAAG,OAAO1B,KAAKynyB,aAAa,EAAE9lyB,EAAE,GAAGte,EAAEse,EAAE,GAAG,IAAI6pY,GAAG9pY,EAAEne,GAAG,IAAI,CAAC,EAAEynZ,GAAG5qY,UAAUunyB,8BAA8B,SAAS/myB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEmS,OAAO1tB,IAAI,IAAI,IAAI00B,EAAEnZ,EAAE/M,IAAIxO,GAAGs+E,EAAE,EAAEA,EAAE3+E,EAAE+tB,OAAO4wD,IAAI,CAAC,IAAI1gF,EAAE+B,EAAE6O,IAAI8vE,GAAG,GAAG3jE,KAAK4nyB,mBAAmB7txB,EAAE92B,EAAE4d,GAAGb,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,IAAI,CAAC,EAAEt8Z,GAAG5qY,UAAUynyB,qBAAqB,WAAW,IAAIjnyB,EAAE,IAAItM,MAAM,GAAGm6B,KAAK,MAAMzpC,EAAE+uK,GAAG0yoB,SAASzmyB,KAAKm/wB,MAAM,IAAIt+wB,EAAEkzJ,GAAG0yoB,SAASzmyB,KAAKm/wB,MAAM,IAAI95xB,EAAE8tW,GAAGs2E,UAAUzpa,KAAKm/wB,MAAM,IAAIplwB,EAAEo5U,GAAGs2E,UAAUzpa,KAAKm/wB,MAAM,IAAI,OAAOn/wB,KAAK8nyB,wBAAwB9izB,EAAE6b,EAAED,GAAGZ,KAAK+nyB,kBAAkBnnyB,GAAE,GAAIZ,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,MAAM1myB,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKZ,KAAK2nyB,8BAA8B3izB,EAAE+0B,EAAEnZ,GAAGZ,KAAK+nyB,kBAAkBnnyB,GAAE,GAAIZ,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,MAAM1myB,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKZ,KAAK2nyB,8BAA8B9myB,EAAExb,EAAEub,GAAGZ,KAAK+nyB,kBAAkBnnyB,GAAE,GAAIZ,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,MAAM1myB,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKZ,KAAKgoyB,yBAAyB3izB,EAAE00B,EAAEnZ,QAAQZ,KAAK+nyB,kBAAkBnnyB,GAAE,KAAM,EAAEoqY,GAAG5qY,UAAU6nyB,iBAAiB,WAAW,OAAOjoyB,KAAK4nyB,qBAAqB5nyB,KAAKwnyB,oBAAoB,EAAEx8Z,GAAG5qY,UAAU2nyB,kBAAkB,SAASnnyB,EAAE5b,GAAG,GAAG,OAAO4b,EAAE,GAAG,OAAO,KAAK5b,GAAGgb,KAAKwnyB,qBAAqB,GAAG5myB,EAAE,GAAGZ,KAAKwnyB,qBAAqB,GAAG5myB,EAAE,KAAKZ,KAAKwnyB,qBAAqB,GAAG5myB,EAAE,GAAGZ,KAAKwnyB,qBAAqB,GAAG5myB,EAAE,GAAG,EAAEoqY,GAAG5qY,UAAU8nyB,cAAc,WAAqC,OAA1BloyB,KAAK4nyB,qBAA2B,CAAC5nyB,KAAKwnyB,qBAAqB,GAAG70B,gBAAgB3ywB,KAAKwnyB,qBAAqB,GAAG70B,gBAAgB,EAAE3nY,GAAG5qY,UAAUwnyB,mBAAmB,WAAW,GAAG,IAAIzzyB,UAAUC,OAAO,CAAC,GAAG,OAAO4L,KAAKwnyB,qBAAqB,OAAO,KAAK,GAAGxnyB,KAAKwnyB,qBAAqB,IAAIlzyB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAK0nyB,6BAA6B1nyB,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,KAAKtnyB,KAAK6nyB,sBAAsB,MAAM,GAAG,IAAI1zyB,UAAUC,OAAO,GAAGD,UAAU,aAAaG,OAAOH,UAAU,aAAa+uY,IAAI/uY,UAAU,aAAaowY,GAAG,CAAC,IAAI3jY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAGyM,EAAEw6wB,sBAAsB7ixB,SAASvT,EAAEo2xB,uBAAuBp7wB,KAAKynyB,aAAa,OAAO,KAAK,IAAI,IAAIpizB,EAAEub,EAAEk+wB,iBAAiB/kwB,EAAE/0B,EAAE2txB,gBAAgBhvsB,EAAE,EAAEA,EAAEt+E,EAAE+O,OAAO,EAAEuvE,IAAI,CAAC,IAAI1gF,EAAEytY,GAAG2nZ,kBAAkBt+vB,EAAE10B,EAAEs+E,GAAGt+E,EAAEs+E,EAAE,IAAI,GAAG1gF,EAAE+c,KAAKynyB,aAAa,CAACznyB,KAAKynyB,aAAaxkzB,EAAE,IAAI2W,EAAE,IAAIqrY,GAAG5/Y,EAAEs+E,GAAGt+E,EAAEs+E,EAAE,IAAIk9a,aAAa9me,GAAGlZ,EAAE,GAAG,IAAI2qY,GAAG5qY,EAAE+iE,EAAE/pE,GAAGiH,EAAE,GAAG,IAAI2qY,GAAGxmZ,EAAE,EAAE+0B,EAAE,CAAC,GAAG/Z,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,IAAI,CAAC,MAAM,GAAGnzyB,UAAU,aAAaG,OAAOH,UAAU,aAAa+uY,IAAI/uY,UAAU,aAAa+uY,GAAG,CAAC,IAAIx/S,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAGvO,EAAEuO,UAAU,GAAG,GAAGuvF,EAAE03rB,sBAAsB7ixB,SAASigB,EAAE4iwB,uBAAuBp7wB,KAAKynyB,aAAa,OAAO,KAAK,IAAI,IAAItnyB,EAAEujF,EAAEo7rB,iBAAiBz7xB,EAAEm1B,EAAEsmwB,iBAAiBp9wB,EAAE,EAAEA,EAAEvB,EAAE/L,OAAO,EAAEsN,IAAI,IAAI,IAAIC,EAAE,EAAEA,EAAEte,EAAE+Q,OAAO,EAAEuN,IAAI,CAAC,IAAIpe,EAAEmtY,GAAGuoZ,iBAAiB94wB,EAAEuB,GAAGvB,EAAEuB,EAAE,GAAGre,EAAEse,GAAGte,EAAEse,EAAE,IAAI,GAAGpe,EAAEyc,KAAKynyB,aAAa,CAACznyB,KAAKynyB,aAAalkzB,EAAE,IAAII,EAAE,IAAIshZ,GAAG9kY,EAAEuB,GAAGvB,EAAEuB,EAAE,IAAIE,EAAE,IAAIqjY,GAAG5hZ,EAAEse,GAAGte,EAAEse,EAAE,IAAIxe,EAAEQ,EAAE2uyB,cAAc1wxB,GAAGhc,EAAE,GAAG,IAAI4lZ,GAAG9nT,EAAEhiF,EAAEve,EAAE,IAAIyC,EAAE,GAAG,IAAI4lZ,GAAGhzX,EAAE7W,EAAExe,EAAE,GAAG,CAAC,GAAG6c,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,IAAI,CAAC,CAAC,EAAEt8Z,GAAG5qY,UAAU4nyB,yBAAyB,SAASpnyB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEmS,OAAO1tB,IAAI,IAAI,IAAI00B,EAAEnZ,EAAE/M,IAAIxO,GAAGs+E,EAAE,EAAEA,EAAE3+E,EAAE+tB,OAAO4wD,IAAI,CAAC,IAAI1gF,EAAE+B,EAAE6O,IAAI8vE,GAAG/pE,EAAEmgB,EAAE44vB,gBAAgBp6wB,SAAStV,EAAE0vxB,iBAAiB,GAAG/4wB,EAAEoG,KAAKynyB,eAAeznyB,KAAKynyB,aAAa7tyB,EAAEiH,EAAE,GAAG,IAAI2qY,GAAGzxX,EAAE,EAAEA,EAAE44vB,iBAAiB9xwB,EAAE,GAAG,IAAI2qY,GAAGvoZ,EAAE,EAAEA,EAAE0vxB,kBAAkB3ywB,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,IAAI,CAAC,EAAEt8Z,GAAG5qY,UAAU7H,SAAS,WAAW,GAAG,OAAOyH,KAAKm/wB,MAAM,IAAI,OAAOn/wB,KAAKm/wB,MAAM,GAAG,MAAM,IAAIh8xB,EAAE,qCAAqC,OAAO6c,KAAKm/wB,MAAM,GAAG3hkB,WAAWx9M,KAAKm/wB,MAAM,GAAG3hkB,UAAU,GAAGx9M,KAAK4nyB,qBAAqB5nyB,KAAKynyB,aAAa,EAAEz8Z,GAAG5qY,UAAU0nyB,wBAAwB,SAASlnyB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,EAAEA,EAAEub,EAAEmS,OAAO1tB,IAAI,IAAI,IAAI00B,EAAEnZ,EAAE/M,IAAIxO,GAAGs+E,EAAE,EAAEA,EAAE3+E,EAAE+tB,OAAO4wD,IAAI,CAAC,IAAI1gF,EAAE+B,EAAE6O,IAAI8vE,GAAG,GAAG3jE,KAAK4nyB,mBAAmB7txB,EAAE92B,EAAE4d,GAAGb,KAAKynyB,cAAcznyB,KAAKsnyB,mBAAmB,OAAO,IAAI,CAAC,EAAEt8Z,GAAG5qY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjkY,GAAG5qY,UAAUwtG,SAAS,WAAW,OAAOo9R,EAAE,EAAEA,GAAGzyY,SAAS,SAASqI,EAAE5b,GAAG,OAAO,IAAIgmZ,GAAGpqY,EAAE5b,GAAGuT,UAAU,EAAEyyY,GAAGm9Z,iBAAiB,SAASvnyB,EAAE5b,EAAE6b,GAAG,OAAO,IAAImqY,GAAGpqY,EAAE5b,EAAE6b,GAAGtI,YAAYsI,CAAC,EAAEmqY,GAAGk9Z,cAAc,SAAStnyB,EAAE5b,GAAG,OAAO,IAAIgmZ,GAAGpqY,EAAE5b,GAAGkjzB,eAAe,EAAE,IAAI38Z,GAAG,WAAWvrY,KAAK6iyB,IAAI,CAAC,IAAI7pxB,EAAE,IAAIA,GAAGhZ,KAAKuuxB,UAAUpsxB,EAAE7c,IAAI0a,KAAKwlyB,SAAQ,CAAE,EAAEj6Z,GAAGnrY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAK6iyB,GAAG,EAAEt3Z,GAAGnrY,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAK6iyB,IAAIjiyB,EAAE,EAAE2qY,GAAGnrY,UAAUqlyB,WAAW,WAAW,GAAG,IAAItxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKylyB,WAAW7kyB,EAAEiiyB,IAAI,GAAGjiyB,EAAEiiyB,IAAI,GAAG,MAAM,GAAG,IAAI1uyB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAKwlyB,QAAQ,OAAOxlyB,KAAKupC,WAAWvkD,EAAE6b,GAAG,KAAK,IAAIxb,EAAEL,EAAEuT,SAASsI,GAAGxb,EAAE2a,KAAKuuxB,WAAWvuxB,KAAKupC,WAAWvkD,EAAE6b,EAAExb,EAAE,CAAC,EAAEkmZ,GAAGnrY,UAAUmpC,WAAW,WAAW,GAAG,IAAIp1C,UAAUC,OAAO4L,KAAKwlyB,SAAQ,OAAQ,GAAG,IAAIrxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK6iyB,IAAI,GAAG9yB,cAAcnvwB,GAAGZ,KAAK6iyB,IAAI,GAAG9yB,cAAc/qxB,GAAGgb,KAAKuuxB,UAAU3txB,EAAErI,SAASvT,GAAGgb,KAAKwlyB,SAAQ,CAAE,MAAM,GAAG,IAAIrxyB,UAAUC,OAAO,CAAC,IAAIyM,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAK6iyB,IAAI,GAAG9yB,cAAclvwB,GAAGb,KAAK6iyB,IAAI,GAAG9yB,cAAc1qxB,GAAG2a,KAAKuuxB,UAAUx0wB,EAAE/Z,KAAKwlyB,SAAQ,CAAE,CAAC,EAAEj6Z,GAAGnrY,UAAUpZ,SAAS,WAAW,OAAOozB,EAAEquL,aAAazoM,KAAK6iyB,IAAI,GAAG7iyB,KAAK6iyB,IAAI,GAAG,EAAEt3Z,GAAGnrY,UAAUwuxB,YAAY,WAAW,OAAO5uxB,KAAKuuxB,SAAS,EAAEhjZ,GAAGnrY,UAAUslyB,WAAW,WAAW,GAAG,IAAIvxyB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAK0lyB,WAAW9kyB,EAAEiiyB,IAAI,GAAGjiyB,EAAEiiyB,IAAI,GAAG,MAAM,GAAG,IAAI1uyB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,GAAG6L,KAAKwlyB,QAAQ,OAAOxlyB,KAAKupC,WAAWvkD,EAAE6b,GAAG,KAAK,IAAIxb,EAAEL,EAAEuT,SAASsI,GAAGxb,EAAE2a,KAAKuuxB,WAAWvuxB,KAAKupC,WAAWvkD,EAAE6b,EAAExb,EAAE,CAAC,EAAEkmZ,GAAGnrY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE1jY,GAAGnrY,UAAUwtG,SAAS,WAAW,OAAO29R,EAAE,EAAE,IAAIR,GAAG,WAAW,EAAEA,GAAG3qY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAElkY,GAAG3qY,UAAUwtG,SAAS,WAAW,OAAOm9R,EAAE,EAAEA,GAAG46Z,gBAAgB,WAAW,GAAGxxyB,UAAU,aAAao3Y,IAAIp3Y,UAAU,aAAa+uY,IAAI/uY,UAAU,aAAa6kB,EAAE,IAAI,IAAIpY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE,IAAI4/Y,GAAGlrX,EAAEnZ,EAAEk+wB,iBAAiBn7sB,EAAE,EAAEA,EAAE5pD,EAAE3lB,OAAO,EAAEuvE,IAAI,CAACt+E,EAAEotyB,eAAe14wB,EAAE4pD,GAAG5pD,EAAE4pD,EAAE,IAAI,IAAI1gF,EAAEoC,EAAEw7f,aAAa77f,GAAG6b,EAAE4kyB,WAAWxizB,EAAE+B,EAAE,MAAM,GAAGmP,UAAU,aAAao3Y,IAAIp3Y,UAAU,aAAaqwY,IAAIrwY,UAAU,aAAa6kB,EAAE,CAAC,IAAIpf,EAAEzF,UAAU,GAAGuvF,EAAEvvF,UAAU,GAAGqkB,EAAErkB,UAAU,GAAG42Y,GAAG46Z,gBAAgB/ryB,EAAEmnxB,kBAAkBr9rB,EAAElrE,GAAG,IAAI,IAAI5yB,EAAE,EAAEA,EAAEgU,EAAEinxB,qBAAqBj7xB,IAAImlZ,GAAG46Z,gBAAgB/ryB,EAAEonxB,iBAAiBp7xB,GAAG89F,EAAElrE,EAAE,MAAM,GAAGrkB,UAAU,aAAao3Y,IAAIp3Y,UAAU,aAAa60I,IAAI70I,UAAU,aAAa6kB,EAAE,CAAC,IAAI7Y,EAAEhM,UAAU,GAAG9Q,EAAE8Q,UAAU,GAAGuN,EAAEvN,UAAU,GAAG,GAAGgM,aAAa+iY,GAAG6H,GAAG46Z,gBAAgBxlyB,EAAE9c,EAAEqe,QAAQ,GAAGvB,aAAaqkY,GAAGuG,GAAG46Z,gBAAgBxlyB,EAAE9c,EAAEqe,QAAQ,GAAGvB,aAAaujY,GAAG,IAAI,IAAI/hY,EAAExB,EAAE5c,EAAE,EAAEA,EAAEoe,EAAEq5wB,mBAAmBz3xB,IAAI,CAAC,IAAII,EAAEge,EAAE64wB,aAAaj3xB,GAAGwnZ,GAAG46Z,gBAAgBhizB,EAAEN,EAAEqe,EAAE,MAAMA,EAAE+jyB,WAAWtlyB,EAAEwywB,gBAAgBtvxB,EAAE,MAAM,GAAG8Q,UAAU,aAAao3Y,IAAIp3Y,UAAU,aAAa8wY,IAAI9wY,UAAU,aAAa6kB,EAAE,CAAC,IAAmB71B,EAAEgR,UAAU,GAAGgO,EAAEhO,UAAU,GAAGgnB,EAA3ChnB,UAAU,GAAqC0sf,aAAa19f,GAAGgf,EAAEsjyB,WAAWtqxB,EAAEh4B,EAAE,CAAC,EAAE,IAAIgoZ,GAAG,WAAWnrY,KAAKooyB,IAAI,KAAKpoyB,KAAKqoyB,IAAI,KAAKroyB,KAAKsoyB,QAAQ,IAAI/8Z,GAAGvrY,KAAKuoyB,aAAa,EAAE,IAAI3nyB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKooyB,IAAIxnyB,EAAEZ,KAAKqoyB,IAAIrjzB,CAAC,EAAE8lZ,GAAG,CAAC+6Z,uBAAuB,CAAC5uwB,cAAa,GAAIuxwB,qCAAqC,CAACvxwB,cAAa,IAAKk0W,GAAG/qY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAKsoyB,QAAQxpB,gBAAgB,EAAE3zY,GAAG/qY,UAAUqoyB,mBAAmB,SAAS7nyB,GAAG,GAAGA,EAAE,GAAGA,GAAG,EAAE,MAAM,IAAIzd,EAAE,wCAAwC6c,KAAKuoyB,aAAa3nyB,CAAC,EAAEuqY,GAAG/qY,UAAUi+F,QAAQ,SAASz9F,EAAE5b,GAAGgb,KAAK0oyB,wBAAwB9nyB,EAAE5b,EAAEgb,KAAKsoyB,SAAStoyB,KAAK0oyB,wBAAwB1jzB,EAAE4b,EAAEZ,KAAKsoyB,QAAQ,EAAEn9Z,GAAG/qY,UAAU7H,SAAS,WAAW,OAAOyH,KAAKq+F,QAAQr+F,KAAKooyB,IAAIpoyB,KAAKqoyB,KAAKroyB,KAAKsoyB,QAAQ1Z,aAAa,EAAEzjZ,GAAG/qY,UAAUsoyB,wBAAwB,SAAS9nyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAIwuK,GAAG7uK,GAAG,GAAG4b,EAAEE,MAAMzb,GAAGwb,EAAE6kyB,WAAWrgzB,EAAE2gzB,uBAAuBhmyB,KAAKuoyB,aAAa,EAAE,CAAC,IAAIxuxB,EAAE,IAAIqxX,GAAGpmZ,EAAEgb,KAAKuoyB,cAAc3nyB,EAAEE,MAAMiZ,GAAGlZ,EAAE6kyB,WAAW3rxB,EAAEisxB,sBAAsB,CAAC,EAAE76Z,GAAG/qY,UAAUuoyB,iBAAiB,WAAW,OAAO3oyB,KAAK0oyB,wBAAwB1oyB,KAAKooyB,IAAIpoyB,KAAKqoyB,IAAIroyB,KAAKsoyB,SAAStoyB,KAAKsoyB,QAAQ1Z,aAAa,EAAEzjZ,GAAG/qY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9jY,GAAG/qY,UAAUwtG,SAAS,WAAW,OAAOu9R,EAAE,EAAEA,GAAG5yY,SAAS,WAAW,GAAG,IAAIpE,UAAUC,OAA0C,OAAO,IAAI+2Y,GAAvCh3Y,UAAU,GAAKA,UAAU,IAAsBoE,WAAW,GAAG,IAAIpE,UAAUC,OAAO,CAAC,IAAkC2lB,EAAE5lB,UAAU,GAAGwvE,EAAE,IAAIwnU,GAAjDh3Y,UAAU,GAAKA,UAAU,IAAgC,OAAOwvE,EAAE8kuB,mBAAmB1uxB,GAAG4pD,EAAEprE,UAAU,CAAC,EAAEuyY,GAAG+6Z,uBAAuBhyyB,IAAI,WAAW,OAAOggK,EAAE,EAAEi3O,GAAG09Z,qCAAqC30yB,IAAI,WAAW,OAAOu3Y,EAAE,EAAEthZ,OAAO0hC,iBAAiB2/W,GAAGL,IAAI,IAAIj3O,GAAG,WAAW7zJ,KAAK4lyB,WAAW,IAAIr6Z,GAAGvrY,KAAKomyB,WAAW,IAAI76Z,GAAGvrY,KAAK4oyB,eAAe,IAAI79Z,GAAG/qY,KAAKm/wB,MAAM,KAAK,IAAIv+wB,EAAEzM,UAAU,GAAG6L,KAAKm/wB,MAAMv+wB,CAAC,EAAEizJ,GAAGzzJ,UAAUnP,OAAO,SAAS2P,GAAGZ,KAAKomyB,WAAW78vB,aAAawhW,GAAG46Z,gBAAgB3lyB,KAAKm/wB,MAAMv+wB,EAAEZ,KAAKomyB,YAAYpmyB,KAAK4lyB,WAAWF,WAAW1lyB,KAAKomyB,WAAW,EAAEvyoB,GAAGzzJ,UAAU4lyB,oBAAoB,WAAW,OAAOhmyB,KAAK4lyB,UAAU,EAAE/xoB,GAAGzzJ,UAAU6uwB,YAAY,WAAW,MAAM,CAACt/mB,GAAG,EAAEkE,GAAGzzJ,UAAUwtG,SAAS,WAAW,OAAOimD,EAAE,EAAE,IAAIu3O,GAAG,WAAWprY,KAAK4lyB,WAAW,IAAIr6Z,GAAGvrY,KAAKomyB,WAAW,IAAI76Z,GAAGvrY,KAAKm/wB,MAAM,KAAKn/wB,KAAK6oyB,YAAY,EAAE,IAAIjoyB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKm/wB,MAAMv+wB,EAAEZ,KAAK6oyB,YAAYrjzB,KAAKwpxB,MAAMxpxB,KAAK+F,MAAM,EAAEvG,GAAG,EAAEomZ,GAAGhrY,UAAUnP,OAAO,SAAS2P,EAAE5b,GAAG,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAI,IAAI6b,EAAED,EAAE+xwB,cAAc3txB,EAAE,GAAGK,EAAEub,EAAE+xwB,cAAc3txB,GAAG+0B,GAAG10B,EAAEkB,EAAEsa,EAAEta,GAAGyZ,KAAK6oyB,YAAYlluB,GAAGt+E,EAAE1B,EAAEkd,EAAEld,GAAGqc,KAAK6oyB,YAAY5lzB,EAAE,EAAEA,EAAE+c,KAAK6oyB,YAAY5lzB,IAAI,CAAC,IAAI2W,EAAEiH,EAAEta,EAAEtD,EAAE82B,EAAE2pE,EAAE7iF,EAAEld,EAAEV,EAAE0gF,EAAEnrD,EAAE,IAAIQ,EAAEpf,EAAE8pF,GAAG1jF,KAAKomyB,WAAW78vB,aAAawhW,GAAG46Z,gBAAgB3lyB,KAAKm/wB,MAAM3mwB,EAAExY,KAAKomyB,YAAYpmyB,KAAK4lyB,WAAWF,WAAW1lyB,KAAKomyB,WAAW,CAAC,EAAEh7Z,GAAGhrY,UAAUsgwB,OAAO,WAAW,OAAM,CAAE,EAAEt1X,GAAGhrY,UAAUy+wB,kBAAkB,WAAW,OAAM,CAAE,EAAEzzY,GAAGhrY,UAAU4lyB,oBAAoB,WAAW,OAAOhmyB,KAAK4lyB,UAAU,EAAEx6Z,GAAGhrY,UAAU6uwB,YAAY,WAAW,MAAM,CAACnrY,GAAG,EAAEsH,GAAGhrY,UAAUwtG,SAAS,WAAW,OAAOw9R,EAAE,EAAE,IAAIO,GAAG,SAAS/qY,EAAE5b,EAAE6b,GAAGb,KAAK8oyB,kBAAkB,KAAK9oyB,KAAK+oyB,kBAAkB,KAAK/oyB,KAAKgpyB,kBAAkB,KAAKhpyB,KAAKipyB,kBAAkB,KAAKjpyB,KAAKkpyB,UAAS,EAAGlpyB,KAAKmpyB,QAAQ,KAAKnpyB,KAAKopyB,eAAe,KAAKppyB,KAAKqpyB,gBAAgB,KAAKrpyB,KAAKspyB,OAAO1oyB,GAAG,KAAKZ,KAAKupyB,aAAavkzB,GAAG,KAAKgb,KAAKy+U,QAAQ59U,GAAG,IAAI,EAAEmrY,GAAG,CAACw9Z,QAAQ,CAACvywB,cAAa,GAAIwywB,uBAAuB,CAACxywB,cAAa,IAAK00W,GAAGvrY,UAAUspyB,qBAAqB,SAAS9oyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAI8lZ,GAAGnmZ,EAAE4b,GAAG,GAAGvb,EAAEojzB,mBAAmB,KAAKzoyB,KAAKipyB,kBAAkB5jzB,EAAEsjzB,mBAAmB3oyB,KAAKipyB,kBAAkBpoyB,EAAE,CAACb,KAAKkpyB,UAAS,EAAG,IAAInvxB,EAAE10B,EAAEy5xB,iBAAiB9+wB,KAAKopyB,eAAervxB,EAAE,GAAG/Z,KAAKqpyB,gBAAgBzoyB,EAAE25wB,aAAanF,iBAAiBr7vB,GAAG/Z,KAAKmpyB,QAAQ,yDAAyDnpyB,KAAKipyB,kBAAkB,OAAO7uxB,EAAEquL,aAAa1uL,EAAE,GAAGA,EAAE,IAAI,GAAG,CAAC,EAAE4xX,GAAGvrY,UAAU0oM,QAAQ,WAAW,IAAIloM,EAAEpb,KAAKM,IAAIka,KAAKupyB,cAAcvkzB,EAAE2mZ,GAAG89Z,uBAAuB7oyB,EAAE,OAAOZ,KAAK8oyB,kBAAkBloyB,EAAE5b,EAAEgb,KAAK+oyB,kBAAkBnoyB,EAAE5b,KAAKgb,KAAKspyB,OAAO9rlB,YAAYx9M,KAAKy+U,QAAQjhI,aAAax9M,KAAKupyB,aAAa,EAAEvpyB,KAAK2pyB,qBAAqB3pyB,KAAK4pyB,qBAAqBj+Z,GAAG69Z,SAASnvxB,EAAEovF,IAAIyuqB,QAAQ,aAAal4wB,KAAKgpyB,kBAAkB,WAAW,EAAEhpyB,KAAKgpyB,kBAAkBhpyB,KAAKupyB,cAAc,eAAevpyB,KAAKipyB,kBAAkB,WAAWjpyB,KAAKipyB,kBAAkBjpyB,KAAKupyB,aAAa,IAAIvpyB,KAAKkpyB,SAAS,EAAEv9Z,GAAGvrY,UAAUwpyB,mBAAmB,WAAW,KAAK5pyB,KAAKspyB,kBAAkB9ka,IAAIxkY,KAAKspyB,kBAAkB/2d,IAAIvyU,KAAKspyB,kBAAkB5la,IAAI,OAAO,KAAK,IAAI9iY,EAAEZ,KAAK6pyB,gBAAgB7pyB,KAAKspyB,QAAQ,GAAGtpyB,KAAK8pyB,qBAAqBlpyB,EAAEZ,KAAKy+U,QAAQz+U,KAAK8oyB,oBAAoB9oyB,KAAKkpyB,SAAS,OAAO,KAAKlpyB,KAAK0pyB,qBAAqB9oyB,EAAEZ,KAAKy+U,QAAQz+U,KAAK+oyB,kBAAkB,EAAEp9Z,GAAGvrY,UAAU2pyB,kBAAkB,WAAW,OAAO/pyB,KAAKqpyB,eAAe,EAAE19Z,GAAGvrY,UAAU0pyB,qBAAqB,SAASlpyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAI2lZ,GAAGpqY,EAAE5b,EAAE6b,GAAG,GAAGb,KAAKgpyB,kBAAkB3jzB,EAAEkT,WAAWyH,KAAKgpyB,kBAAkBnoyB,EAAE,CAACb,KAAKkpyB,UAAS,EAAG,IAAInvxB,EAAE10B,EAAE6izB,gBAAgBloyB,KAAKopyB,eAAe/jzB,EAAE6izB,gBAAgB,GAAGloyB,KAAKqpyB,gBAAgBzoyB,EAAE25wB,aAAanF,iBAAiBr7vB,GAAG/Z,KAAKmpyB,QAAQ,yDAAyDnpyB,KAAKgpyB,kBAAkB,OAAO5uxB,EAAEquL,aAAa1uL,EAAE,GAAGA,EAAE,IAAI,IAAI,CAAC,EAAE4xX,GAAGvrY,UAAUupyB,mBAAmB,WAAW,IAAI/oyB,EAAEZ,KAAKy+U,QAAQygc,cAAc,GAAGl/wB,KAAK8pyB,qBAAqB9pyB,KAAKspyB,OAAO1oyB,EAAEZ,KAAK8oyB,oBAAoB9oyB,KAAKkpyB,SAAS,OAAO,KAAKlpyB,KAAK0pyB,qBAAqB1pyB,KAAKspyB,OAAO1oyB,EAAEZ,KAAK+oyB,kBAAkB,EAAEp9Z,GAAGvrY,UAAU4pyB,iBAAiB,WAAW,OAAOhqyB,KAAKopyB,cAAc,EAAEz9Z,GAAGvrY,UAAUypyB,gBAAgB,SAASjpyB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAE,IAAIkzJ,GAAG/uK,GAAGK,EAAEumZ,GAAG8hZ,YAAY9sxB,GAAGsB,WAAW7c,EAAEq2xB,WAAYr2xB,EAAEyC,OAAOgZ,MAAMD,GAAG,OAAOD,EAAE25wB,aAAamI,cAAc19xB,EAAE,EAAE2mZ,GAAGvrY,UAAU6pyB,gBAAgB,WAAW,OAAOjqyB,KAAKmpyB,OAAO,EAAEx9Z,GAAGvrY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEtjY,GAAGvrY,UAAUwtG,SAAS,WAAW,OAAO+9R,EAAE,EAAEK,GAAGw9Z,QAAQ31yB,IAAI,WAAW,OAAM,CAAE,EAAEm4Y,GAAGy9Z,uBAAuB51yB,IAAI,WAAW,MAAM,IAAI,EAAE/J,OAAO0hC,iBAAiBmgX,GAAGK,IAAI,IAAIl4O,GAAG,SAASlzJ,EAAE5b,EAAE6b,GAAGb,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAU,KAAKlqyB,KAAKopyB,eAAe,KAAKppyB,KAAKqpyB,gBAAgB,KAAKrpyB,KAAKspyB,OAAO1oyB,GAAG,KAAKZ,KAAKuuxB,UAAUvpyB,GAAG,KAAKgb,KAAKy+U,QAAQ59U,GAAG,IAAI,EAAEorY,GAAG,CAACu9Z,QAAQ,CAACvywB,cAAa,GAAIkzwB,kBAAkB,CAAClzwB,cAAa,IAAK68H,GAAG1zJ,UAAU0oM,QAAQ,WAAW,OAAO9oM,KAAKoqyB,iBAAiBpqyB,KAAKkpyB,UAAUlpyB,KAAKqqyB,qBAAqBrqyB,KAAKkpyB,UAAUlpyB,KAAKsqyB,gBAAgBtqyB,KAAKkpyB,UAAUlpyB,KAAKuqyB,YAAYvqyB,KAAKkpyB,UAAUlpyB,KAAKwqyB,gBAAgBxqyB,KAAKkpyB,UAAUlpyB,KAAKkpyB,UAAUlpyB,KAAKkpyB,UAAUlpyB,KAAKkpyB,UAAUlpyB,KAAKkpyB,QAAQ,EAAEp1oB,GAAG1zJ,UAAUkqyB,cAAc,WAAW,GAAGtqyB,KAAKuuxB,UAAU,EAAE,OAAO,KAAK,IAAI3txB,EAAEZ,KAAKuuxB,UAAUz6nB,GAAGq2oB,kBAAkB,IAAIvpyB,IAAIA,EAAE,MAAM,IAAI5b,EAAE,IAAIghC,EAAEhmB,KAAKspyB,OAAOluB,uBAAuBp2xB,EAAEgsrB,SAAShxqB,KAAKuuxB,WAAW,IAAI1txB,EAAE,IAAImlB,EAAEhmB,KAAKy+U,QAAQ28b,uBAAuBv6wB,EAAEmwqB,SAASpwqB,GAAGC,EAAErZ,SAASxC,KAAKgb,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAU,+BAA+BlqyB,KAAKqpyB,gBAAgBrpyB,KAAKspyB,OAAO/uB,aAAaY,WAAWt6wB,IAAIb,KAAKiJ,OAAO,WAAW,EAAE6qJ,GAAG1zJ,UAAUoqyB,cAAc,WAAW,IAAI5pyB,EAAE,IAAI+qY,GAAG3rY,KAAKspyB,OAAOtpyB,KAAKuuxB,UAAUvuxB,KAAKy+U,SAAS79U,EAAEkoM,YAAY9oM,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAUtpyB,EAAEqpyB,kBAAkBjqyB,KAAKopyB,eAAexoyB,EAAEopyB,mBAAmBhqyB,KAAKqpyB,gBAAgBzoyB,EAAEmpyB,qBAAqB/pyB,KAAKiJ,OAAO,WAAW,EAAE6qJ,GAAG1zJ,UAAUmqyB,UAAU,WAAW,IAAI3pyB,EAAEZ,KAAKspyB,OAAOl2B,UAAUpuxB,EAAEgb,KAAKy+U,QAAQ20b,UAAUpzwB,KAAKuuxB,UAAU,GAAG3txB,EAAE5b,IAAIgb,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAU,gDAAgDlqyB,KAAKqpyB,gBAAgBrpyB,KAAKy+U,SAASz+U,KAAKuuxB,UAAU,GAAG3txB,EAAE5b,IAAIgb,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAU,+CAA+ClqyB,KAAKqpyB,gBAAgBrpyB,KAAKy+U,SAASz+U,KAAKiJ,OAAO,OAAO,EAAE6qJ,GAAG1zJ,UAAUgqyB,eAAe,WAAWpqyB,KAAKy+U,mBAAmB+lD,IAAIxkY,KAAKy+U,mBAAmBlM,KAAKvyU,KAAKkpyB,UAAS,GAAIlpyB,KAAKkqyB,UAAU,0BAA0BlqyB,KAAKqpyB,gBAAgBrpyB,KAAKy+U,QAAQz+U,KAAKiJ,OAAO,YAAY,EAAE6qJ,GAAG1zJ,UAAU2pyB,kBAAkB,WAAW,OAAO/pyB,KAAKqpyB,eAAe,EAAEv1oB,GAAG1zJ,UAAU4pyB,iBAAiB,WAAW,OAAOhqyB,KAAKopyB,cAAc,EAAEt1oB,GAAG1zJ,UAAUiqyB,mBAAmB,WAAW,OAAOrqyB,KAAKspyB,OAAOlgH,gBAAgB,GAAOpprB,KAAKuuxB,UAAU,EAApB,MAA4BvuxB,KAAKy+U,QAAQjhI,YAAYx9M,KAAKkpyB,UAAS,EAAGlpyB,KAAKkqyB,UAAU,sBAAsBlqyB,KAAKqpyB,gBAAgBrpyB,KAAKy+U,cAAcz+U,KAAKiJ,OAAO,iBAAiB,EAAE6qJ,GAAG1zJ,UAAU6I,OAAO,SAASrI,GAAG,IAAIkzJ,GAAG01oB,QAAQ,OAAO,KAAKnvxB,EAAEovF,IAAIyuqB,QAAQ,SAASt3wB,EAAE,MAAMZ,KAAKkpyB,SAAS,SAAS,UAAU,EAAEp1oB,GAAG1zJ,UAAU6pyB,gBAAgB,WAAW,OAAOjqyB,KAAKkqyB,SAAS,EAAEp2oB,GAAG1zJ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEn7mB,GAAG1zJ,UAAUwtG,SAAS,WAAW,OAAOkmD,EAAE,EAAEA,GAAG22oB,WAAW,SAAS7pyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAIyuK,GAAGlzJ,EAAE5b,EAAE6b,GAAG,OAAOxb,EAAEyjN,UAAU,KAAKzjN,EAAE4kzB,iBAAiB,EAAEn2oB,GAAGg1C,QAAQ,SAASloM,EAAE5b,EAAE6b,GAAG,QAAQ,IAAIizJ,GAAGlzJ,EAAE5b,EAAE6b,GAAGioM,SAAS,EAAEmjM,GAAGu9Z,QAAQ31yB,IAAI,WAAW,OAAM,CAAE,EAAEo4Y,GAAGk+Z,kBAAkBt2yB,IAAI,WAAW,MAAM,IAAI,EAAE/J,OAAO0hC,iBAAiBsoI,GAAGm4O,IAAI,IAAIJ,GAAG,WAAW7rY,KAAK4mxB,KAAK,KAAK5mxB,KAAK8oC,MAAM,KAAK,IAAIloC,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK4mxB,KAAKhmxB,EAAEZ,KAAK8oC,MAAM9jD,CAAC,EAAE6mZ,GAAGzrY,UAAU0+wB,eAAe,WAAW,OAAO9+wB,KAAK4mxB,IAAI,EAAE/6Y,GAAGzrY,UAAU2S,KAAK,WAAW,OAAO/S,KAAK4mxB,KAAKxyxB,MAAM,EAAEy3Y,GAAGzrY,UAAUuywB,cAAc,SAAS/xwB,GAAG,OAAOZ,KAAK4mxB,KAAKhmxB,EAAE,EAAEirY,GAAGzrY,UAAU2yoB,SAAS,WAAW,OAAO/yoB,KAAK4mxB,KAAK,GAAG7+jB,OAAO/nN,KAAK4mxB,KAAK5mxB,KAAK4mxB,KAAKxyxB,OAAO,GAAG,EAAEy3Y,GAAGzrY,UAAUqxxB,iBAAiB,SAAS7wxB,GAAG,OAAOA,IAAIZ,KAAK4mxB,KAAKxyxB,OAAO,GAAG,EAAE+wY,GAAGwsZ,OAAO3xxB,KAAK2ywB,cAAc/xwB,GAAGZ,KAAK2ywB,cAAc/xwB,EAAE,GAAG,EAAEirY,GAAGzrY,UAAU+yU,QAAQ,SAASvyU,GAAGZ,KAAK8oC,MAAMloC,CAAC,EAAEirY,GAAGzrY,UAAU8rO,QAAQ,WAAW,OAAOlsO,KAAK8oC,KAAK,EAAE+iW,GAAGzrY,UAAUpZ,SAAS,WAAW,OAAOozB,EAAEquL,aAAa,IAAIyiK,GAAGlrW,KAAK4mxB,MAAM,EAAE/6Y,GAAGzrY,UAAU6uwB,YAAY,WAAW,MAAM,CAACnqY,GAAG,EAAE+G,GAAGzrY,UAAUwtG,SAAS,WAAW,OAAOi+R,EAAE,EAAE,IAAIJ,GAAG,WAAWzrY,KAAK0qyB,uBAAsB,EAAG1qyB,KAAK2qyB,yBAAwB,EAAG3qyB,KAAK04xB,IAAI,KAAK14xB,KAAK4qyB,sBAAsB,KAAK5qyB,KAAK6qyB,aAAa,KAAK7qyB,KAAK8qyB,eAAe,IAAIjna,GAAG7jY,KAAK+qyB,mBAAmB,EAAE/qyB,KAAKgryB,oBAAmB,EAAG,IAAIpqyB,EAAEzM,UAAU,GAAG6L,KAAK04xB,IAAI93xB,EAAEZ,KAAK4qyB,sBAAsB,IAAI,EAAEn/Z,GAAGrrY,UAAU6qyB,wBAAwB,WAAW,OAAOjryB,KAAK4qyB,qBAAqB,EAAEn/Z,GAAGrrY,UAAU8qyB,wBAAwB,SAAStqyB,GAAGZ,KAAK2qyB,wBAAwB/pyB,CAAC,EAAE6qY,GAAGrrY,UAAU+qyB,wBAAwB,WAAW,OAAOnryB,KAAK6qyB,YAAY,EAAEp/Z,GAAGrrY,UAAU43B,MAAM,WAAW,OAAOh4B,KAAK+qyB,kBAAkB,EAAEt/Z,GAAGrrY,UAAUgryB,iBAAiB,WAAW,OAAOpryB,KAAK8qyB,cAAc,EAAEr/Z,GAAGrrY,UAAUiryB,wBAAwB,SAASzqyB,GAAGZ,KAAK0qyB,sBAAsB9pyB,CAAC,EAAE6qY,GAAGrrY,UAAUkryB,qBAAqB,SAAS1qyB,GAAGZ,KAAKgryB,mBAAmBpqyB,CAAC,EAAE6qY,GAAGrrY,UAAUk0xB,qBAAqB,SAAS1zxB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI2a,KAAK0qyB,uBAAuB1qyB,KAAKk3wB,kBAAkB,OAAO,KAAK,GAAGt2wB,IAAIC,GAAG7b,IAAIK,EAAE,OAAO,KAAK,GAAG2a,KAAK2qyB,0BAA8B3qyB,KAAKuryB,aAAa3qyB,EAAE5b,KAAIgb,KAAKuryB,aAAa1qyB,EAAExb,GAAI,OAAO,KAAK,IAAI00B,EAAEnZ,EAAEk+wB,iBAAiB95xB,GAAG2+E,EAAE/iE,EAAEk+wB,iBAAiB95xB,EAAE,GAAG/B,EAAE4d,EAAEi+wB,iBAAiBz5xB,GAAGuU,EAAEiH,EAAEi+wB,iBAAiBz5xB,EAAE,GAAG2a,KAAK04xB,IAAI7hB,oBAAoB98vB,EAAE4pD,EAAE1gF,EAAE2W,GAAGoG,KAAK04xB,IAAIxhB,mBAAmBl3wB,KAAK04xB,IAAIthB,2BAA2Bp3wB,KAAK6qyB,aAAa,IAAIv2yB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAK6qyB,aAAa,GAAG9wxB,EAAE/Z,KAAK6qyB,aAAa,GAAGlnuB,EAAE3jE,KAAK6qyB,aAAa,GAAG5nzB,EAAE+c,KAAK6qyB,aAAa,GAAGjxyB,EAAEoG,KAAK4qyB,sBAAsB5qyB,KAAK04xB,IAAIz4X,gBAAgB,GAAGjga,KAAKgryB,oBAAoBhryB,KAAK8qyB,eAAex3yB,IAAI0M,KAAK4qyB,uBAAuB5qyB,KAAK+qyB,qBAAqB,EAAEt/Z,GAAGrrY,UAAUmryB,aAAa,SAAS3qyB,EAAE5b,GAAG,OAAO,IAAIA,GAAGA,GAAG4b,EAAEmS,OAAO,CAAC,EAAE04X,GAAGrrY,UAAU82wB,gBAAgB,WAAW,OAAO,OAAOl3wB,KAAK4qyB,qBAAqB,EAAEn/Z,GAAGrrY,UAAUsgwB,OAAO,WAAW,OAAO1gwB,KAAK0qyB,uBAAuB,OAAO1qyB,KAAK4qyB,qBAAqB,EAAEn/Z,GAAGrrY,UAAU6uwB,YAAY,WAAW,MAAM,CAACroY,GAAG,EAAE6E,GAAGrrY,UAAUwtG,SAAS,WAAW,OAAO69R,EAAE,EAAEA,GAAG+/Z,6BAA6B,SAAS5qyB,GAAG,IAAI5b,EAAE,IAAIymZ,GAAG7qY,GAAG,OAAO5b,EAAEqmzB,yBAAwB,GAAIrmzB,CAAC,EAAEymZ,GAAGgga,4BAA4B,SAAS7qyB,GAAG,OAAO,IAAI6qY,GAAG7qY,EAAE,EAAE6qY,GAAGiga,0BAA0B,SAAS9qyB,GAAG,IAAI5b,EAAE,IAAIymZ,GAAG7qY,GAAG,OAAO5b,EAAEqmzB,yBAAwB,GAAIrmzB,EAAEsmzB,sBAAqB,GAAItmzB,CAAC,EAAE,IAAIknZ,GAAG,WAAWlsY,KAAK04xB,IAAI,IAAI7yyB,GAAGma,KAAKuiyB,YAAY,KAAKviyB,KAAK0qyB,uBAAsB,EAAG1qyB,KAAK2zxB,QAAQ,KAAK3zxB,KAAKkpyB,UAAS,EAAG,IAAItoyB,EAAEzM,UAAU,GAAG6L,KAAKuiyB,YAAY3hyB,CAAC,EAAEsrY,GAAG9rY,UAAUylrB,QAAQ,WAAW,GAAG,OAAO7lrB,KAAK2zxB,QAAQ,OAAO,KAAK3zxB,KAAKyiyB,4BAA4B,EAAEv2Z,GAAG9rY,UAAUgryB,iBAAiB,WAAW,OAAOpryB,KAAK2zxB,QAAQyX,kBAAkB,EAAEl/Z,GAAG9rY,UAAU0oM,QAAQ,WAAW,OAAO9oM,KAAK6lrB,UAAU7lrB,KAAKkpyB,QAAQ,EAAEh9Z,GAAG9rY,UAAUiryB,wBAAwB,SAASzqyB,GAAGZ,KAAK0qyB,sBAAsB9pyB,CAAC,EAAEsrY,GAAG9rY,UAAUqiyB,2BAA2B,WAAWziyB,KAAKkpyB,UAAS,EAAGlpyB,KAAK2zxB,QAAQ,IAAIloZ,GAAGzrY,KAAK04xB,KAAK14xB,KAAK2zxB,QAAQ0X,wBAAwBrryB,KAAK0qyB,uBAAuB,IAAI9pyB,EAAE,IAAI6kY,GAAG,GAAG7kY,EAAEgzxB,sBAAsB5zxB,KAAK2zxB,SAAS/yxB,EAAE8yxB,aAAa1zxB,KAAKuiyB,aAAaviyB,KAAK2zxB,QAAQzc,kBAAkB,OAAOl3wB,KAAKkpyB,UAAS,EAAG,IAAI,EAAEh9Z,GAAG9rY,UAAUsiyB,WAAW,WAAW,GAAG1iyB,KAAK6lrB,WAAW7lrB,KAAKkpyB,SAAS,MAAM,IAAIv8b,GAAG3sW,KAAKiqyB,kBAAkBjqyB,KAAK2zxB,QAAQsX,0BAA0B,EAAE/+Z,GAAG9rY,UAAU6pyB,gBAAgB,WAAW,GAAGjqyB,KAAKkpyB,SAAS,MAAM,yBAAyB,IAAItoyB,EAAEZ,KAAK2zxB,QAAQwX,0BAA0B,MAAM,wCAAwC/wxB,EAAEquL,aAAa7nM,EAAE,GAAGA,EAAE,IAAI,QAAQwZ,EAAEquL,aAAa7nM,EAAE,GAAGA,EAAE,GAAG,EAAEsrY,GAAG9rY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/iY,GAAG9rY,UAAUwtG,SAAS,WAAW,OAAOs+R,EAAE,EAAEA,GAAGy/Z,qBAAqB,SAAS/qyB,GAAG,IAAI5b,EAAE,IAAIknZ,GAAGtrY,GAAG,OAAO5b,EAAEqmzB,yBAAwB,GAAIrmzB,EAAE8jN,UAAU9jN,EAAEomzB,kBAAkB,EAAE,IAAIj/Z,GAAG,SAASvrY,IAAIZ,KAAK4ryB,IAAI,KAAK,IAAI5mzB,EAAEmP,UAAU,GAAG6L,KAAK4ryB,IAAI,IAAI1/Z,GAAGtrY,EAAEiryB,iBAAiB7mzB,GAAG,EAAEmnZ,GAAG/rY,UAAUsiyB,WAAW,WAAW1iyB,KAAK4ryB,IAAIlJ,YAAY,EAAEv2Z,GAAG/rY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9iY,GAAG/rY,UAAUwtG,SAAS,WAAW,OAAOu+R,EAAE,EAAEA,GAAG0/Z,iBAAiB,SAASjryB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO9C,EAAEsO,IAAI,IAAIu4Y,GAAGxmZ,EAAEy5xB,iBAAiBz5xB,GAAG,CAAC,OAAOL,CAAC,EAAEmnZ,GAAGu2Z,WAAW,SAAS9hyB,GAAG,IAAIurY,GAAGvrY,GAAG8hyB,YAAY,EAAE,IAAIz3Z,GAAG,SAASrqY,GAAGZ,KAAK8ryB,OAAOlryB,CAAC,EAAEqqY,GAAG7qY,UAAUrN,IAAI,SAAS6N,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAE,EAAEA,EAAED,EAAEo6wB,mBAAmBn6wB,IAAI,CAAC,IAAIxb,EAAE2a,KAAK8ryB,OAAO/4yB,IAAI6N,EAAE45wB,aAAa35wB,IAAIxb,EAAEm4N,WAAWx4N,EAAEsO,IAAIjO,EAAE,CAAC,OAAOub,EAAE25wB,aAAa9E,yBAAyBvqqB,GAAGy3qB,gBAAgB39xB,GAAG,EAAEimZ,GAAG7qY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEhkY,GAAG7qY,UAAUwtG,SAAS,WAAW,OAAOq9R,EAAE,EAAEA,GAAGl4Y,IAAI,SAAS6N,EAAE5b,GAAG,OAAO,IAAIimZ,GAAGjmZ,GAAG+N,IAAI6N,EAAE,EAAE,IAAIkrY,GAAG,WAAW9rY,KAAK+ryB,IAAI,KAAK/ryB,KAAKgnxB,iBAAiB,KAAKhnxB,KAAKunyB,WAAW,KAAKvnyB,KAAKgsyB,eAAe,IAAInoa,GAAG7jY,KAAKisyB,gBAAgB,IAAIpoa,GAAG,IAAIjjY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAK+ryB,IAAInryB,EAAEZ,KAAKgnxB,iBAAiBhiyB,EAAEgb,KAAKunyB,WAAW1myB,CAAC,EAAEirY,GAAG1rY,UAAU8ryB,aAAa,SAAStryB,GAAG,IAAI,IAAI5b,EAAEgb,KAAK+ryB,IAAII,WAAWxf,cAAczqxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOkY,KAAKosyB,gBAAgBvryB,EAAED,EAAEZ,KAAKgsyB,gBAAgBhsyB,KAAKqsyB,yBAAyBxryB,EAAED,EAAEZ,KAAKgsyB,eAAe,CAAC,EAAElga,GAAG1rY,UAAUksyB,kBAAkB,SAAS1ryB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKunyB,WAAWvK,OAAOp8xB,EAAE+xwB,gBAAgB3ywB,KAAK+ryB,IAAIQ,eAAevnzB,IAAI4b,EAAEymxB,WAAWpnD,YAAYj7uB,EAAE6b,EAAE,EAAEirY,GAAG1rY,UAAUspiB,MAAM,SAAS9oiB,GAAG,OAAOZ,KAAK0+xB,uBAAuB1+xB,KAAKksyB,aAAatryB,GAAGZ,KAAKwsyB,WAAW5ryB,GAAGZ,KAAKisyB,eAAe,EAAEnga,GAAG1rY,UAAUgsyB,gBAAgB,SAASxryB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEymxB,WAAWttwB,EAAEnZ,EAAEojxB,UAAUpjxB,EAAE+qxB,eAAe/qxB,EAAEukxB,cAAch8Y,GAAGsja,aAAapnzB,EAAEL,IAAI+0B,EAAE8uwB,cAAchoxB,EAAEvN,IAAIymB,GAAGnZ,EAAEmrxB,gBAAe,IAAK,EAAEjgZ,GAAG1rY,UAAUs+xB,qBAAqB,WAAW,IAAI,IAAI99xB,EAAEZ,KAAK+ryB,IAAII,WAAWvmB,WAAW1jxB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOo8xB,WAAWwa,uBAAuB,IAAI,IAAI15yB,EAAEgb,KAAK+ryB,IAAII,WAAWxf,cAAczqxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAEwb,EAAEmjxB,UAAU,GAAGnjxB,EAAE8qxB,eAAetmyB,EAAEyjyB,eAAe,CAAC,IAAI/uwB,EAAE/Z,KAAK+ryB,IAAIW,aAAa7ryB,EAAE8xwB,iBAAiBttxB,EAAE2jyB,WAAWjvwB,EAAE,CAAC,CAAC,EAAE+xX,GAAG1rY,UAAUusyB,mBAAmB,SAAS/ryB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAEwb,EAAEwmxB,WAAWxmxB,EAAEsmxB,eAAe9hyB,EAAE+2N,OAAO,GAAGp8M,KAAKssyB,kBAAkBzryB,EAAE,GAAGb,KAAKssyB,kBAAkBzryB,EAAE,GAAG,CAAC,EAAEirY,GAAG1rY,UAAUosyB,WAAW,SAAS5ryB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKgsyB,eAAe9pyB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAE2a,KAAKgnxB,iBAAiB5R,iBAAiBv0wB,EAAEi+wB,kBAAkB9+wB,KAAKisyB,gBAAgB34yB,IAAIjO,GAAGwb,EAAE8kxB,aAAY,EAAG,CAAC,EAAE75Y,GAAG1rY,UAAUisyB,yBAAyB,SAASzryB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEub,EAAEymxB,WAAW,OAAOzmxB,EAAE+qxB,cAAkB/qxB,EAAEukxB,aAAiBvkxB,EAAE8kxB,sBAA0B9kxB,EAAEojxB,UAAUmF,aAAhE,MAAmF7mZ,GAAG2lO,SAASrnmB,EAAEuoxB,cAAcvoxB,EAAEyjxB,SAAS8E,gBAAgBvoxB,EAAEojxB,UAAUmF,mBAAmBhgZ,GAAGsja,aAAapnzB,EAAEL,IAAIA,IAAImkZ,GAAGyja,eAAe/ryB,EAAEvN,IAAIsN,EAAEojxB,WAAWpjxB,EAAEmrxB,gBAAe,KAAM,EAAEjgZ,GAAG1rY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnjY,GAAG1rY,UAAUwtG,SAAS,WAAW,OAAOk+R,EAAE,EAAE,IAAI93O,GAAG,WAAWh0J,KAAK+ryB,IAAI,KAAK/ryB,KAAKgnxB,iBAAiB,KAAKhnxB,KAAK6syB,iBAAiB,IAAIhpa,GAAG,IAAIjjY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK+ryB,IAAInryB,EAAEZ,KAAKgnxB,iBAAiBhiyB,CAAC,EAAEgvK,GAAG5zJ,UAAU0syB,yBAAyB,SAASlsyB,GAAG,IAAI5b,EAAE4b,EAAE+xwB,gBAAgB,IAAI3ywB,KAAK+ryB,IAAIgB,cAAc/nzB,GAAG,CAAC,IAAI6b,EAAEb,KAAKgnxB,iBAAiB9R,YAAYlwxB,GAAGgb,KAAK6syB,iBAAiBv5yB,IAAIuN,EAAE,CAAC,EAAEmzJ,GAAG5zJ,UAAU4syB,6BAA6B,SAASpsyB,GAAG,IAAI,IAAI5b,EAAEgb,KAAK+ryB,IAAII,WAAWvmB,WAAW1jxB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO,KAAI+Y,EAAEsoxB,cAAgBtoxB,EAAEwoxB,0BAA2B,IAAIxoxB,EAAEqjxB,WAAWga,aAAat9xB,IAAIuoY,GAAGyja,cAAe,CAAC,IAAIvnzB,EAAEwb,EAAEwmxB,WAAWl+Y,GAAGsja,aAAapnzB,EAAEub,IAAIZ,KAAK8syB,yBAAyBjsyB,EAAE,CAAC,CAAC,EAAEmzJ,GAAG5zJ,UAAUspiB,MAAM,SAAS9oiB,GAAG,OAAOZ,KAAKgtyB,6BAA6BpsyB,GAAGZ,KAAK6syB,gBAAgB,EAAE74oB,GAAG5zJ,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEj7mB,GAAG5zJ,UAAUwtG,SAAS,WAAW,OAAOomD,EAAE,EAAE,IAAI+3O,GAAG,WAAW/rY,KAAKo8xB,WAAW,KAAKp8xB,KAAKy5wB,SAAS,KAAKz5wB,KAAKityB,qBAAoB,EAAGjtyB,KAAKktyB,iCAAgC,EAAGltyB,KAAKmtyB,sBAAqB,EAAGntyB,KAAKotyB,eAAc,CAAE,EAAErha,GAAG3rY,UAAUityB,eAAe,SAASzsyB,EAAE5b,GAAG,OAAOgb,KAAKy5wB,SAASvE,YAAYl1wB,KAAKstyB,qBAAqB1syB,EAAE8/wB,wBAAwB9/wB,GAAG,EAAEmrY,GAAG3rY,UAAUmtyB,iBAAiB,SAAS3syB,EAAE5b,GAAG,IAAI6b,GAAE,EAAGxb,EAAE2a,KAAKwtyB,oBAAoB5syB,EAAEmgxB,kBAAkBngxB,GAAG,OAAOvb,GAAGA,aAAa2kG,KAAK3kG,EAAEm4N,YAAY38M,GAAE,GAAI,IAAI,IAAIkZ,EAAE,IAAI8pX,GAAGlgU,EAAE,EAAEA,EAAE/iE,EAAEigxB,qBAAqBl9sB,IAAI,CAAC,IAAI1gF,EAAE+c,KAAKwtyB,oBAAoB5syB,EAAEogxB,iBAAiBr9sB,GAAG/iE,GAAG,OAAO3d,GAAGA,EAAEu6N,YAAYv6N,aAAa+mG,KAAKnpF,GAAE,GAAIkZ,EAAEzmB,IAAIrQ,GAAG,CAAC,GAAG4d,EAAE,OAAOb,KAAKy5wB,SAASlE,cAAclwxB,EAAE00B,EAAE+pM,QAAQ,KAAK,IAAIlqN,EAAE,IAAIiqY,GAAG,OAAO,OAAOx+Y,GAAGuU,EAAEtG,IAAIjO,GAAGuU,EAAEm1wB,OAAOh1vB,GAAG/Z,KAAKy5wB,SAASiJ,cAAc9oxB,EAAE,EAAEmyY,GAAG3rY,UAAUqtyB,yBAAyB,SAAS7syB,GAAG,OAAOZ,KAAKy5wB,SAASkH,+BAA+BjgxB,OAAOE,EAAE,EAAEmrY,GAAG3rY,UAAUstyB,iBAAiB,WAAW,OAAO1tyB,KAAKo8xB,UAAU,EAAErwZ,GAAG3rY,UAAUutyB,yBAAyB,SAAS/syB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAEo6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAE/Z,KAAK4tyB,oBAAoBhtyB,EAAE45wB,aAAan1xB,GAAGub,GAAG,OAAOmZ,IAAIA,EAAEyjM,WAAW38M,EAAEvN,IAAIymB,GAAG,CAAC,OAAO/Z,KAAKy5wB,SAASiJ,cAAc7hxB,EAAE,EAAEkrY,GAAG3rY,UAAUktyB,qBAAqB,SAAS1syB,EAAE5b,GAAG,OAAOgb,KAAKsxF,KAAK1wF,EAAE,EAAEmrY,GAAG3rY,UAAUwtyB,oBAAoB,SAAShtyB,EAAE5b,GAAG,OAAOgb,KAAKy5wB,SAASrE,iBAAiBp1wB,KAAKstyB,qBAAqB1syB,EAAE8/wB,wBAAwB9/wB,GAAG,EAAEmrY,GAAG3rY,UAAUytyB,oBAAoB,SAASjtyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAEo6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAE/Z,KAAKqtyB,eAAezsyB,EAAE45wB,aAAan1xB,GAAGub,GAAG,OAAOmZ,IAAIA,EAAEyjM,WAAW38M,EAAEvN,IAAIymB,GAAG,CAAC,OAAO/Z,KAAKy5wB,SAASiJ,cAAc7hxB,EAAE,EAAEkrY,GAAG3rY,UAAU0tyB,sBAAsB,SAASltyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAEo6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAE/Z,KAAKutyB,iBAAiB3syB,EAAE45wB,aAAan1xB,GAAGub,GAAG,OAAOmZ,IAAIA,EAAEyjM,WAAW38M,EAAEvN,IAAIymB,GAAG,CAAC,OAAO/Z,KAAKy5wB,SAASiJ,cAAc7hxB,EAAE,EAAEkrY,GAAG3rY,UAAUkxF,KAAK,SAAS1wF,GAAG,OAAOA,EAAE0wF,MAAM,EAAEy6S,GAAG3rY,UAAU2tyB,4BAA4B,SAASntyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAEo6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAE/Z,KAAK5W,UAAUwX,EAAE45wB,aAAan1xB,IAAI,OAAO00B,IAAI/Z,KAAKityB,qBAAqBlzxB,EAAEyjM,WAAW38M,EAAEvN,IAAIymB,GAAG,CAAC,OAAO/Z,KAAKktyB,gCAAgCltyB,KAAKy5wB,SAAShE,yBAAyBvqqB,GAAGy3qB,gBAAgB9hxB,IAAIb,KAAKy5wB,SAASiJ,cAAc7hxB,EAAE,EAAEkrY,GAAG3rY,UAAUhX,UAAU,SAASwX,GAAG,GAAGZ,KAAKo8xB,WAAWx7xB,EAAEZ,KAAKy5wB,SAAS74wB,EAAE25wB,aAAa35wB,aAAa2jY,GAAG,OAAOvkY,KAAKqtyB,eAAezsyB,EAAE,MAAM,GAAGA,aAAaqpF,GAAG,OAAOjqF,KAAK6tyB,oBAAoBjtyB,EAAE,MAAM,GAAGA,aAAaopF,GAAG,OAAOhqF,KAAKwtyB,oBAAoB5syB,EAAE,MAAM,GAAGA,aAAasiY,GAAG,OAAOljY,KAAK4tyB,oBAAoBhtyB,EAAE,MAAM,GAAGA,aAAaujY,GAAG,OAAOnkY,KAAK2tyB,yBAAyB/syB,EAAE,MAAM,GAAGA,aAAa4jY,GAAG,OAAOxkY,KAAKutyB,iBAAiB3syB,EAAE,MAAM,GAAGA,aAAa2xU,GAAG,OAAOvyU,KAAK8tyB,sBAAsBltyB,EAAE,MAAM,GAAGA,aAAa8iY,GAAG,OAAO1jY,KAAK+tyB,4BAA4BntyB,EAAE,MAAM,MAAM,IAAIzd,EAAE,6BAA6Byd,EAAEgtG,WAAWgoT,UAAU,EAAE7pB,GAAG3rY,UAAUotyB,oBAAoB,SAAS5syB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKstyB,qBAAqB1syB,EAAE8/wB,wBAAwB9/wB,GAAG,GAAG,OAAOC,EAAE,OAAOb,KAAKy5wB,SAASpE,iBAAiB,MAAM,IAAIhwxB,EAAEwb,EAAEkS,OAAO,OAAO1tB,EAAE,GAAGA,EAAE,IAAI2a,KAAKotyB,cAAcptyB,KAAKy5wB,SAASrE,iBAAiBv0wB,GAAGb,KAAKy5wB,SAASpE,iBAAiBx0wB,EAAE,EAAEkrY,GAAG3rY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEljY,GAAG3rY,UAAUwtG,SAAS,WAAW,OAAOm+R,EAAE,EAAE,IAAIb,GAAG,SAAStqY,IAAI,GAAGZ,KAAKguyB,eAAe,EAAEhuyB,KAAKiuyB,QAAQ,KAAKjuyB,KAAKq5iB,KAAK,IAAIp0K,GAAGjlY,KAAKkuyB,gCAA+B,EAAGluyB,KAAKmuyB,WAAU,EAAGh6yB,UAAU,aAAa+uY,IAAI,iBAAiB/uY,UAAU,GAAG,CAAC,IAAmB0M,EAAE1M,UAAU,GAAGyM,EAAEP,KAAKL,KAAnC7L,UAAU,GAAgC2qxB,iBAAiBj+wB,EAAE,MAAM,GAAG1M,UAAU,aAAaG,OAAO,iBAAiBH,UAAU,GAAG,CAAC,IAAI9O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG6L,KAAKiuyB,QAAQ5ozB,EAAE2a,KAAKmuyB,UAAUvtyB,EAAEmyoB,SAAS1tpB,GAAG2a,KAAKguyB,eAAej0xB,CAAC,CAAC,EAAEmxX,GAAG9qY,UAAUguyB,aAAa,SAASxtyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAEb,KAAKmuyB,UAAUvtyB,EAAEmS,OAAO,EAAEnS,EAAEmS,OAAO1tB,EAAE,EAAEA,EAAEwb,EAAExb,IAAI,CAAC,IAAI00B,EAAEnZ,EAAE/M,IAAIxO,GAAGs+E,EAAE3jE,KAAKquyB,kBAAkBt0xB,EAAE/0B,GAAG,OAAO2+E,IAAI/iE,EAAE7M,IAAI1O,EAAE,IAAI2zB,EAAE2qD,IAAI,IAAIt+E,GAAG2a,KAAKmuyB,WAAWvtyB,EAAE7M,IAAI6M,EAAEmS,OAAO,EAAE,IAAIiG,EAAE2qD,IAAI,CAAC,EAAEunU,GAAG9qY,UAAUiuyB,kBAAkB,SAASztyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE7b,EAAEoP,OAAOyM,IAAI,CAAC,GAAGD,EAAE8uwB,SAAS1qxB,EAAE6b,IAAI,OAAO,KAAK,GAAGD,EAAErI,SAASvT,EAAE6b,IAAIb,KAAKguyB,eAAe,OAAOhpzB,EAAE6b,EAAE,CAAC,OAAO,IAAI,EAAEqqY,GAAG9qY,UAAUkuyB,OAAO,SAAS1tyB,GAAG,IAAI5b,EAAE,IAAI29Y,GAAG3iY,KAAKiuyB,SAAuD,OAA9CjuyB,KAAKouyB,aAAappzB,EAAE4b,GAAGZ,KAAKuuyB,aAAavpzB,EAAE4b,GAAU5b,EAAE8txB,mBAAmB,EAAE5nY,GAAG9qY,UAAUmuyB,aAAa,SAAS3tyB,EAAE5b,GAAG,GAAG,IAAIA,EAAEoP,OAAO,OAAO,KAAK,IAAIyM,EAAE7b,EAAEoP,OAAOpP,EAAE,GAAG0qxB,SAAS1qxB,EAAEA,EAAEoP,OAAO,MAAMyM,EAAE7b,EAAEoP,OAAO,GAAG,IAAI,IAAI/O,EAAE,EAAEA,EAAEwb,EAAExb,IAAI,CAAC,IAAI00B,EAAE/0B,EAAEK,GAAGs+E,EAAE3jE,KAAKwuyB,uBAAuBz0xB,EAAEnZ,GAAG+iE,GAAG,GAAG/iE,EAAEtN,IAAIqwE,EAAE,EAAE,IAAI3qD,EAAEe,IAAG,EAAG,CAAC,EAAEmxX,GAAG9qY,UAAUouyB,uBAAuB,SAAS5tyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAEsB,EAAEgtQ,UAAU9pR,GAAG,EAAE00B,EAAE,EAAEA,EAAE/0B,EAAE+tB,OAAO,EAAEgH,IAAI,CAAC,GAAG/Z,KAAKq5iB,KAAKrxe,GAAGhjF,EAAE6O,IAAIkmB,GAAG/Z,KAAKq5iB,KAAK9zhB,GAAGvgC,EAAE6O,IAAIkmB,EAAE,GAAG/Z,KAAKq5iB,KAAKrxe,GAAG0nsB,SAAS9uwB,IAAIZ,KAAKq5iB,KAAK9zhB,GAAGmqvB,SAAS9uwB,GAAG,CAAC,GAAGZ,KAAKkuyB,+BAA+B,SAAS,OAAO,CAAC,CAAC,IAAIvquB,EAAE3jE,KAAKq5iB,KAAK9gjB,SAASqI,GAAG+iE,EAAE3jE,KAAKguyB,gBAAgBrquB,EAAE9iE,IAAIA,EAAE8iE,EAAEt+E,EAAE00B,EAAE,CAAC,OAAO10B,CAAC,EAAE6lZ,GAAG9qY,UAAUquyB,iCAAiC,SAAS7tyB,GAAGZ,KAAKkuyB,+BAA+BttyB,CAAC,EAAEsqY,GAAG9qY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/jY,GAAG9qY,UAAUwtG,SAAS,WAAW,OAAOs9R,EAAE,EAAEA,GAAG6nQ,SAAS,SAASnyoB,GAAG,QAAQA,EAAExM,QAAQ,IAAIwM,EAAE,GAAG8uwB,SAAS9uwB,EAAEA,EAAExM,OAAO,GAAG,EAAE,IAAIi4Y,GAAG,SAASzrY,GAAGZ,KAAK0uyB,SAAS9tyB,GAAG,IAAI,EAAE0rY,GAAG,CAACqia,sBAAsB,CAAC13wB,cAAa,IAAKo1W,GAAGjsY,UAAUkuyB,OAAO,SAAS1tyB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK4uyB,yBAAyBhuyB,GAAG,OAAO,IAAIwrY,GAAGpnZ,EAAE6b,GAAGzX,UAAU4W,KAAK0uyB,SAAS,EAAEria,GAAGjsY,UAAUyuyB,WAAW,SAASjuyB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAK4uyB,yBAAyB5uyB,KAAK0uyB,UAAUrpzB,EAAE,IAAI+mZ,GAAGxrY,EAAEC,GAAE,GAAIzX,UAAU4W,KAAK0uyB,UAAU30xB,EAAE10B,EAAE,OAAOL,GAAG01B,EAAEX,EAAEsqX,MAAMtqX,EAAE10B,EAAEV,OAAO,IAAIo1B,CAAC,EAAEsyX,GAAGjsY,UAAU0uyB,qBAAqB,SAASluyB,GAAG,OAAOZ,KAAK+uyB,4BAA4BnuyB,GAAG,EAAE,EAAEyrY,GAAGjsY,UAAUwuyB,yBAAyB,SAAShuyB,GAAG,IAAI,IAAI5b,EAAE,IAAI0c,EAAEb,EAAED,EAAEk+wB,iBAAiBz5xB,EAAE,EAAEA,EAAEwb,EAAEzM,OAAO/O,IAAIL,EAAEsO,IAAIuN,EAAExb,IAAI,OAAOL,EAAE8+N,QAAQ,IAAIxvN,MAAM,GAAGm6B,KAAK,MAAM,EAAE49W,GAAGjsY,UAAU2uyB,4BAA4B,SAASnuyB,GAAG,IAAI,IAAI5b,EAAEmd,EAAEgtQ,UAAUtuQ,EAAE,EAAEA,EAAED,EAAExM,OAAO,EAAEyM,IAAI,CAAC,IAAIxb,EAAEub,EAAEC,GAAGtI,SAASqI,EAAEC,EAAE,IAAIxb,EAAEL,IAAIA,EAAEK,EAAE,CAAC,OAAOL,CAAC,EAAEqnZ,GAAGjsY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5iY,GAAGjsY,UAAUwtG,SAAS,WAAW,OAAOy+R,EAAE,EAAEA,GAAGk4S,KAAK,SAAS3jrB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAIiP,MAAM,GAAGm6B,KAAK,MAAM1U,EAAE,IAAIsyX,GAAGzrY,GAAGvb,EAAE,GAAG00B,EAAEu0xB,OAAOtpzB,EAAE6b,GAAG,IAAI8iE,EAAE,IAAI0oU,GAAGrnZ,GAAG,OAAOK,EAAE,GAAGs+E,EAAE2quB,OAAOjpzB,EAAE,GAAGwb,GAAGxb,CAAC,EAAEgnZ,GAAG2ia,4BAA4B,WAAW,GAAG,IAAI76yB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEqnZ,GAAG4ia,8BAA8BruyB,GAAGC,EAAED,EAAE06wB,oBAAoB,GAAGz6wB,EAAEo4Z,YAAY9tD,GAAG16G,MAAM,CAAC,IAAIprQ,EAAE,EAAEwb,EAAEw2D,WAAW,EAAE,MAAMhyE,EAAEL,IAAIA,EAAEK,EAAE,CAAC,OAAOL,CAAC,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG,OAAO3O,KAAKkE,IAAI2iZ,GAAG2ia,4BAA4Bj1xB,GAAGsyX,GAAG2ia,4BAA4BrruB,GAAG,CAAC,EAAE0oU,GAAG4ia,8BAA8B,SAASruyB,GAAG,IAAI5b,EAAE4b,EAAEw6wB,sBAAsB,OAAO51xB,KAAKkE,IAAI1E,EAAEojV,YAAYpjV,EAAEmjV,YAAYkkE,GAAGsia,qBAAqB,EAAEtia,GAAGwia,WAAW,SAASjuyB,EAAE5b,EAAE6b,GAAG,OAAO,IAAIwrY,GAAGzrY,GAAGiuyB,WAAW7pzB,EAAE6b,EAAE,EAAEyrY,GAAGqia,sBAAsB96yB,IAAI,WAAW,OAAO,IAAI,EAAE/J,OAAO0hC,iBAAiB6gX,GAAGC,IAAI,IAAIF,GAAG,SAASxrY,GAAG,SAAS5b,EAAEA,EAAE6b,EAAExb,GAAGub,EAAEP,KAAKL,MAAMA,KAAKguyB,eAAehpzB,GAAG,KAAKgb,KAAKkvyB,SAASruyB,GAAG,KAAKb,KAAKmvyB,iBAAY,IAAS9pzB,GAAGA,CAAC,CAAC,OAAOub,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUgvyB,SAAS,SAASxuyB,EAAE5b,GAAG,IAAI6b,EAAE,IAAIqqY,GAAGtqY,EAAEZ,KAAKguyB,gBAAgB,OAAOntyB,EAAE4tyB,iCAAiCzuyB,KAAKmvyB,aAAatuyB,EAAEytyB,OAAOtpzB,EAAE,EAAEA,EAAEob,UAAUktyB,qBAAqB,SAAS1syB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEkywB,oBAAoBztxB,EAAE2a,KAAKovyB,SAASvuyB,EAAEb,KAAKkvyB,UAAU,OAAOlvyB,KAAKy5wB,SAASkH,+BAA+BjgxB,OAAOrb,EAAE,EAAEL,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAA7mB,CAA+mB+mZ,IAAIl/J,GAAG,WAAW7sO,KAAKqvyB,UAAS,EAAGrvyB,KAAKsvyB,yBAAyB,GAAGtvyB,KAAKuvyB,YAAY,EAAEvvyB,KAAKwvyB,eAAe,IAAI,EAAE3ikB,GAAGzsO,UAAUqvyB,UAAU,WAAW,OAAOttyB,EAAEitwB,iBAAiBpvwB,KAAKuvyB,YAAY,EAAE1ikB,GAAGzsO,UAAU9M,IAAI,SAASsN,GAAG,IAAI5b,EAAEmd,EAAEgtwB,iBAAiBvuwB,GAAG,OAAGZ,KAAKqvyB,UAAgBrvyB,KAAKuvyB,YAAYvqzB,EAAEgb,KAAKwvyB,eAAe3ikB,GAAG6ikB,YAAY1vyB,KAAKuvyB,aAAavvyB,KAAKqvyB,UAAS,EAAG,MAAQxikB,GAAG6ikB,YAAY1qzB,KAAKgb,KAAKwvyB,gBAAsBxvyB,KAAKuvyB,YAAY,EAAE,OAAKvvyB,KAAKsvyB,yBAAyBzikB,GAAG8ikB,6BAA6B3vyB,KAAKuvyB,YAAYvqzB,QAAGgb,KAAKuvyB,YAAY1ikB,GAAG+ikB,cAAc5vyB,KAAKuvyB,YAAY,IAAI,GAAGvvyB,KAAKsvyB,4BAA0B,EAAEzikB,GAAGzsO,UAAUpZ,SAAS,WAAW,GAAG,IAAImN,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmd,EAAEitwB,iBAAiBxuwB,GAAGC,EAAE,mEAAmEsB,EAAE0tyB,eAAejvyB,GAAGvb,EAAEwb,EAAEsoF,UAAUtoF,EAAEzM,OAAO,IAAI,OAAO/O,EAAE8jG,UAAU,EAAE,GAAG,KAAK9jG,EAAE8jG,UAAU,EAAE,IAAI,SAAS9jG,EAAE8jG,UAAU,IAAI,MAAMnkG,EAAE,IAAI,CAAC,EAAE6nP,GAAGzsO,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpiiB,GAAGzsO,UAAUwtG,SAAS,WAAW,OAAOi/H,EAAE,EAAEA,GAAGijkB,OAAO,SAASlvyB,EAAE5b,GAAG,OAAW4b,EAAE,GAAG5b,EAAG,EAAE,CAAC,EAAE6nP,GAAG6ikB,YAAY,SAAS9uyB,GAAG,OAAOA,GAAG,EAAE,EAAEisO,GAAG+ikB,cAAc,SAAShvyB,EAAE5b,GAAG,OAAO4b,KAAK,GAAG5b,GAAG,EAAE,EAAE6nP,GAAG8ikB,6BAA6B,SAAS/uyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAExb,EAAE,GAAGA,GAAG,EAAEA,IAAI,CAAC,GAAGwnP,GAAGijkB,OAAOlvyB,EAAEvb,KAAKwnP,GAAGijkB,OAAO9qzB,EAAEK,GAAG,OAAOwb,EAAEA,GAAG,CAAC,OAAO,EAAE,EAAE,IAAIymY,GAAG,WAAWtnY,KAAK+vyB,aAAa,KAAK/vyB,KAAKgwyB,UAAU,IAAIzoa,EAAE,EAAEnzQ,GAAG,CAAC67qB,uBAAuB,CAACh5wB,cAAa,GAAIi5wB,WAAW,CAACj5wB,cAAa,IAAKqwW,GAAGlnY,UAAU+vyB,cAAc,SAASvvyB,GAAG,IAAI5b,EAAE,IAAIwiZ,GAAGxnY,KAAK+vyB,cAAcnvyB,EAAEE,MAAM9b,GAAG4b,EAAEg6wB,iBAAiB,EAAEtzY,GAAGlnY,UAAUgwyB,iBAAiB,SAASxvyB,GAAG,GAAG,IAAIZ,KAAK+vyB,aAAaxpzB,GAAG,IAAIyZ,KAAK+vyB,aAAapszB,EAAE,OAAOid,EAAE,IAAI5b,EAAE,IAAIg0B,EAAEhZ,KAAK+vyB,cAAc/qzB,EAAEuB,GAAGvB,EAAEuB,EAAEvB,EAAErB,GAAGqB,EAAErB,EAAE,IAAIkd,EAAE,IAAI2mY,GAAGxiZ,GAAG,OAAO4b,EAAEE,MAAMD,GAAGD,EAAEg6wB,kBAAkBh6wB,CAAC,EAAE0mY,GAAGlnY,UAAUiwyB,oBAAoB,WAAW,OAAOrwyB,KAAK+vyB,YAAY,EAAEzoa,GAAGlnY,UAAU9M,IAAI,SAASsN,GAAGA,EAAEE,MAAMd,KAAKgwyB,WAAWhwyB,KAAK+vyB,aAAa/vyB,KAAKgwyB,UAAUK,qBAAqB,EAAE/oa,GAAGlnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE3nY,GAAGlnY,UAAUwtG,SAAS,WAAW,OAAO05R,EAAE,EAAElzQ,GAAG67qB,uBAAuBp8yB,IAAI,WAAW,OAAO0zY,EAAE,EAAEnzQ,GAAG87qB,WAAWr8yB,IAAI,WAAW,OAAO2zY,EAAE,EAAE19Y,OAAO0hC,iBAAiB87W,GAAGlzQ,IAAI,IAAImzQ,GAAG,WAAWvnY,KAAKswyB,aAAa,IAAIzjkB,GAAG7sO,KAAKuwyB,aAAa,IAAI1jkB,EAAE,EAAE06J,GAAGnnY,UAAUnP,OAAO,SAAS2P,GAAGZ,KAAKswyB,aAAah9yB,IAAIsN,EAAEra,GAAGyZ,KAAKuwyB,aAAaj9yB,IAAIsN,EAAEjd,EAAE,EAAE4jZ,GAAGnnY,UAAUiwyB,oBAAoB,WAAW,OAAO,IAAIr3xB,EAAEhZ,KAAKswyB,aAAab,YAAYzvyB,KAAKuwyB,aAAad,YAAY,EAAEloa,GAAGnnY,UAAU6uwB,YAAY,WAAW,MAAM,CAACt/mB,GAAG,EAAE43O,GAAGnnY,UAAUwtG,SAAS,WAAW,OAAO25R,EAAE,EAAE,IAAIC,GAAG,WAAWxnY,KAAK2yT,MAAM,KAAK,IAAI/xT,EAAEzM,UAAU,GAAG6L,KAAK2yT,MAAM/xT,CAAC,EAAE4mY,GAAGpnY,UAAUnP,OAAO,SAAS2P,EAAE5b,GAAG,IAAI6b,EAAED,EAAE+uwB,YAAY3qxB,EAAE,GAAGgb,KAAK2yT,MAAMpsU,EAAElB,EAAEub,EAAE+uwB,YAAY3qxB,EAAE,GAAGgb,KAAK2yT,MAAMhvU,EAAEid,EAAE6uwB,YAAYzqxB,EAAE,EAAE6b,GAAGD,EAAE6uwB,YAAYzqxB,EAAE,EAAEK,EAAE,EAAEmiZ,GAAGpnY,UAAUsgwB,OAAO,WAAW,OAAM,CAAE,EAAEl5X,GAAGpnY,UAAUy+wB,kBAAkB,WAAW,OAAM,CAAE,EAAEr3Y,GAAGpnY,UAAU6uwB,YAAY,WAAW,MAAM,CAACnrY,GAAG,EAAE0D,GAAGpnY,UAAUwtG,SAAS,WAAW,OAAO45R,EAAE,EAAE,IAAInnQ,GAAG,SAASz/H,EAAE5b,GAAGgb,KAAKm/wB,MAAM,IAAI7qxB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKguyB,eAAe,KAAKhuyB,KAAKwwyB,KAAK,KAAKxwyB,KAAKm/wB,MAAM,GAAGv+wB,EAAEZ,KAAKm/wB,MAAM,GAAGn6xB,EAAEgb,KAAK8uyB,sBAAsB,EAAEzuqB,GAAGjgI,UAAUqwyB,SAAS,SAAS7vyB,GAAG,OAAO,IAAIyrY,GAAGzrY,GAAG0tyB,OAAO1tyB,EAAEZ,KAAKguyB,eAAe,EAAE3tqB,GAAGjgI,UAAUgwyB,iBAAiB,SAASxvyB,GAAGZ,KAAKwwyB,KAAK,IAAIlpa,GAAGtnY,KAAKwwyB,KAAKl9yB,IAAIsN,EAAE,IAAIZ,KAAKwwyB,KAAKl9yB,IAAIsN,EAAE,IAAI,IAAI5b,EAAE,IAAIsP,MAAM,GAAGm6B,KAAK,MAAM,OAAOzpC,EAAE,GAAGgb,KAAKwwyB,KAAKJ,iBAAiBxvyB,EAAE,GAAG0wF,QAAQtsG,EAAE,GAAGgb,KAAKwwyB,KAAKJ,iBAAiBxvyB,EAAE,GAAG0wF,QAAQtsG,CAAC,EAAEq7I,GAAGjgI,UAAUswyB,cAAc,SAAS9vyB,GAAG,OAAOZ,KAAKwwyB,KAAKL,cAAcvvyB,GAAGA,CAAC,EAAEy/H,GAAGjgI,UAAUklyB,kBAAkB,SAAS1kyB,GAAG,IAAI5b,EAAEgb,KAAKukrB,KAAKvkrB,KAAKm/wB,OAAOt+wB,EAAEsoY,GAAGwna,UAAU3rzB,EAAE,GAAGA,EAAE,GAAG4b,GAAG,OAAOZ,KAAK0wyB,cAAc7vyB,EAAE,EAAEw/H,GAAGjgI,UAAUsiyB,WAAW,SAAS9hyB,GAAGA,EAAEkoM,WAAWzuL,EAAEovF,IAAIyuqB,QAAQ,8BAA8B,EAAE73oB,GAAGjgI,UAAU0uyB,qBAAqB,WAAW9uyB,KAAKguyB,eAAe3ha,GAAG2ia,4BAA4BhvyB,KAAKm/wB,MAAM,GAAGn/wB,KAAKm/wB,MAAM,GAAG,EAAE9+oB,GAAGjgI,UAAUmkrB,KAAK,SAAS3jrB,GAAG,IAAI5b,EAAEgb,KAAKowyB,iBAAiBxvyB,GAAG,OAAOyrY,GAAGk4S,KAAKv/rB,EAAE,GAAGA,EAAE,GAAGgb,KAAKguyB,eAAe,EAAE3tqB,GAAGjgI,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5uoB,GAAGjgI,UAAUwtG,SAAS,WAAW,OAAOyyB,EAAE,EAAEA,GAAGswqB,UAAU,SAAS/vyB,EAAE5b,EAAE6b,GAAG,OAAO,IAAIw/H,GAAGz/H,EAAE5b,GAAGsgzB,kBAAkBzkyB,EAAE,EAAEw/H,GAAGiyQ,MAAM,SAAS1xY,EAAE5b,GAAG,OAAOq7I,GAAGswqB,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyna,MAAM,EAAEvwqB,GAAGskF,aAAa,SAAS/jN,EAAE5b,GAAG,OAAOq7I,GAAGswqB,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyja,aAAa,EAAEvsqB,GAAGwwqB,cAAc,SAASjwyB,EAAE5b,GAAG,OAAOq7I,GAAGswqB,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG2na,cAAc,EAAEzwqB,GAAGmkF,WAAW,SAAS5jN,EAAE5b,GAAG,OAAOq7I,GAAGswqB,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG4na,WAAW,EAAE,IAAItpa,GAAG,SAAS7mY,EAAE5b,GAAGgb,KAAKm/wB,MAAM,IAAI7qxB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKm/wB,MAAM,GAAGv+wB,EAAEZ,KAAKm/wB,MAAM,GAAGn6xB,CAAC,EAAEyiZ,GAAGrnY,UAAUklyB,kBAAkB,SAAS1kyB,GAAG,IAAI5b,EAAE,KAAK6b,GAAE,EAAGxb,EAAE,KAAK,IAAIL,EAAEmkZ,GAAGwna,UAAU3wyB,KAAKm/wB,MAAM,GAAGn/wB,KAAKm/wB,MAAM,GAAGv+wB,GAAGC,GAAE,CAAE,CAAC,MAAMD,GAAG,KAAKA,aAAa8oF,GAAG,MAAM9oF,EAAEvb,EAAEub,CAAC,CAAC,IAAIC,EAAE,IAAI7b,EAAEq7I,GAAGswqB,UAAU3wyB,KAAKm/wB,MAAM,GAAGn/wB,KAAKm/wB,MAAM,GAAGv+wB,EAAE,CAAC,MAAMA,GAAG,MAAMA,aAAa8oF,EAAErkG,EAAEub,CAAC,CAAC,OAAO5b,CAAC,EAAEyiZ,GAAGrnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExnY,GAAGrnY,UAAUwtG,SAAS,WAAW,OAAO65R,EAAE,EAAEA,GAAGkpa,UAAU,SAAS/vyB,EAAE5b,EAAE6b,GAAG,OAAO,IAAI4mY,GAAG7mY,EAAE5b,GAAGsgzB,kBAAkBzkyB,EAAE,EAAE4mY,GAAG6K,MAAM,SAAS1xY,EAAE5b,GAAG,OAAOyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyna,MAAM,EAAEnpa,GAAG9iL,aAAa,SAAS/jN,EAAE5b,GAAG,OAAOyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyja,aAAa,EAAEnla,GAAGopa,cAAc,SAASjwyB,EAAE5b,GAAG,OAAOyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG2na,cAAc,EAAErpa,GAAGjjL,WAAW,SAAS5jN,EAAE5b,GAAG,OAAOyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG4na,WAAW,EAAE,IAAIrpa,GAAG,WAAW1nY,KAAKgxyB,IAAI,KAAKhxyB,KAAKixyB,WAAW,KAAK,IAAIrwyB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAKgxyB,IAAIpwyB,EAAEZ,KAAKixyB,WAAWjszB,CAAC,EAAE0iZ,GAAGtnY,UAAUuryB,qBAAqB,SAAS/qyB,EAAE5b,GAAGgb,KAAKgxyB,IAAI7Q,0BAA0BngyB,KAAKixyB,WAAWrwyB,EAAEowyB,IAAIpwyB,EAAEqwyB,WAAWjszB,EAAE,EAAE0iZ,GAAGtnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEvnY,GAAGtnY,UAAUwtG,SAAS,WAAW,OAAO85R,EAAE,EAAE,IAAI/nS,GAAG,SAAS/+F,IAAI,GAAGZ,KAAK6mxB,OAAO,KAAK7mxB,KAAKkxyB,QAAQ,KAAKlxyB,KAAKmxyB,WAAW,KAAKnxyB,KAAKoxyB,aAAa,KAAKpxyB,KAAKqxyB,kBAAkB,KAAKrxyB,KAAK+6W,KAAK,KAAK,IAAI5mX,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAKmxyB,WAAWvwyB,EAAE43vB,OAAOx4vB,KAAKkxyB,QAAQlszB,EAAEgb,KAAKoxyB,aAAavwyB,CAAC,MAAM,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKmxyB,WAAWvwyB,EAAE0wyB,OAAOtxyB,KAAK6mxB,OAAOxhyB,EAAE2a,KAAKkxyB,QAAQn3xB,EAAE/Z,KAAK+6W,KAAKp3S,CAAC,CAAC,EAAEgkU,GAAG,CAAC2pa,OAAO,CAACr6wB,cAAa,GAAIuhuB,OAAO,CAACvhuB,cAAa,IAAK0oE,GAAGv/F,UAAUmxyB,SAAS,WAAW,OAAOvxyB,KAAKmxyB,aAAaxxsB,GAAG64pB,MAAM,EAAE74pB,GAAGv/F,UAAUoxyB,oBAAoB,SAAS5wyB,GAAGZ,KAAKqxyB,kBAAkBzwyB,CAAC,EAAE++F,GAAGv/F,UAAUqxyB,UAAU,WAAW,OAAOzxyB,KAAK+6W,IAAI,EAAEp7Q,GAAGv/F,UAAUsoM,UAAU,SAAS9nM,GAAG,IAAI5b,EAAE4b,EAAE,OAAOZ,KAAKkxyB,QAAQlszB,EAAEkszB,SAAS,EAAElxyB,KAAKkxyB,QAAQlszB,EAAEkszB,QAAQ,EAAElxyB,KAAKmxyB,WAAWnszB,EAAEmszB,YAAY,EAAEnxyB,KAAKmxyB,WAAWnszB,EAAEmszB,WAAW,EAAE,CAAC,EAAExxsB,GAAGv/F,UAAUsxyB,eAAe,WAAW,OAAO1xyB,KAAKoxyB,YAAY,EAAEzxsB,GAAGv/F,UAAUuxyB,SAAS,WAAW,OAAO3xyB,KAAKmxyB,aAAaxxsB,GAAG2xsB,MAAM,EAAE3xsB,GAAGv/F,UAAUwxyB,YAAY,SAAShxyB,GAAG,OAAO,OAAOZ,KAAK6mxB,QAAQ7mxB,KAAK6mxB,SAASjmxB,EAAEimxB,MAAM,EAAElnrB,GAAGv/F,UAAUyxyB,oBAAoB,WAAW,OAAO7xyB,KAAKqxyB,iBAAiB,EAAE1xsB,GAAGv/F,UAAU6uwB,YAAY,WAAW,MAAM,CAAC/1vB,EAAE,EAAEymF,GAAGv/F,UAAUwtG,SAAS,WAAW,OAAOjO,EAAE,EAAEgoS,GAAG2pa,OAAOz9yB,IAAI,WAAW,OAAO,CAAC,EAAE8zY,GAAG6wX,OAAO3kwB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiBm0E,GAAGgoS,IAAI,IAAIE,GAAG,WAAW,EAAEA,GAAGznY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpnY,GAAGznY,UAAUwtG,SAAS,WAAW,OAAOi6R,EAAE,EAAE,IAAID,GAAG,WAAW5nY,KAAKg/xB,kBAAiB,EAAGh/xB,KAAKi/xB,YAAW,EAAGj/xB,KAAKk/xB,oBAAmB,EAAGl/xB,KAAKo/xB,yBAAyB,KAAKp/xB,KAAK04xB,IAAI,KAAK14xB,KAAK8xyB,eAAe,KAAK9xyB,KAAK+xyB,gBAAgB,KAAK/xyB,KAAKq/xB,oBAAoB,KAAKr/xB,KAAKgyyB,kBAAkB,EAAEhyyB,KAAKy/xB,SAAS,EAAEz/xB,KAAKiyyB,UAAU,KAAKjyyB,KAAKkyyB,SAAQ,EAAGlyyB,KAAKmyyB,sBAAqB,EAAG,IAAIvxyB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAK04xB,IAAI93xB,EAAEZ,KAAK8xyB,eAAe9szB,EAAEgb,KAAK+xyB,gBAAgBlxyB,CAAC,EAAE+mY,GAAGxnY,UAAUs/xB,sBAAsB,SAAS9+xB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,IAAIC,GAAG,IAAIb,KAAK04xB,IAAI3hB,qBAAqB,CAAC,GAAGnvY,GAAG+3Z,mBAAmB36yB,EAAEK,GAAG,OAAM,EAAG,GAAGub,EAAEmyoB,WAAW,CAAC,IAAIh5nB,EAAEnZ,EAAEm+wB,eAAe,EAAE,GAAG,IAAI/5xB,GAAGK,IAAI00B,GAAG,IAAI10B,GAAGL,IAAI+0B,EAAE,OAAM,CAAE,CAAC,CAAC,OAAM,CAAE,EAAE6tX,GAAGxnY,UAAUw/xB,2BAA2B,WAAW,OAAO5/xB,KAAKo/xB,wBAAwB,EAAEx3Z,GAAGxnY,UAAUgyyB,qBAAqB,SAASxxyB,GAAGZ,KAAKmyyB,qBAAqBvxyB,CAAC,EAAEgnY,GAAGxnY,UAAUy/xB,8BAA8B,WAAW,OAAO7/xB,KAAKk/xB,kBAAkB,EAAEt3Z,GAAGxnY,UAAUiyyB,wBAAwB,SAASzxyB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEkd,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO6qxB,gBAAgB,GAAG/xwB,EAAE22wB,eAAelyxB,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEuiZ,GAAGxnY,UAAU2/xB,sBAAsB,WAAW,OAAO//xB,KAAKi/xB,UAAU,EAAEr3Z,GAAGxnY,UAAU82wB,gBAAgB,WAAW,OAAOl3wB,KAAKg/xB,gBAAgB,EAAEp3Z,GAAGxnY,UAAUsgwB,OAAO,WAAW,OAAO1gwB,KAAKkyyB,OAAO,EAAEtqa,GAAGxnY,UAAUkyyB,gBAAgB,SAAS1xyB,EAAE5b,GAAG,QAAO,OAAOA,IAAMgb,KAAKqyyB,wBAAwBzxyB,EAAE5b,EAAE,MAAOgb,KAAKqyyB,wBAAwBzxyB,EAAE5b,EAAE,IAAI,EAAE4iZ,GAAGxnY,UAAUmyyB,iBAAiB,SAAS3xyB,EAAE5b,GAAGgb,KAAKiyyB,UAAU,IAAI39yB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKiyyB,UAAU,GAAGrxyB,EAAEZ,KAAKiyyB,UAAU,GAAGjtzB,CAAC,EAAE4iZ,GAAGxnY,UAAU6xxB,iBAAiB,SAASrxxB,EAAE5b,EAAE6b,EAAExb,GAAG,GAAGub,IAAIC,GAAG7b,IAAIK,EAAE,OAAO,KAAK2a,KAAKy/xB,WAAW,IAAI1lxB,EAAEnZ,EAAEk+wB,iBAAiB95xB,GAAG2+E,EAAE/iE,EAAEk+wB,iBAAiB95xB,EAAE,GAAG/B,EAAE4d,EAAEi+wB,iBAAiBz5xB,GAAGuU,EAAEiH,EAAEi+wB,iBAAiBz5xB,EAAE,GAAG2a,KAAK04xB,IAAI7hB,oBAAoB98vB,EAAE4pD,EAAE1gF,EAAE2W,GAAGoG,KAAK04xB,IAAIxhB,oBAAoBl3wB,KAAK+xyB,kBAAkBnxyB,EAAEigyB,aAAY,GAAIhgyB,EAAEggyB,aAAY,IAAK7gyB,KAAKgyyB,oBAAoBhyyB,KAAK0/xB,sBAAsB9+xB,EAAE5b,EAAE6b,EAAExb,KAAK2a,KAAKg/xB,kBAAiB,GAAIh/xB,KAAK8xyB,gBAAgB9xyB,KAAK04xB,IAAIzhB,aAAar2wB,EAAEqxxB,iBAAiBjyxB,KAAK04xB,IAAI1zyB,EAAE,GAAG6b,EAAEoxxB,iBAAiBjyxB,KAAK04xB,IAAIrzyB,EAAE,IAAI2a,KAAK04xB,IAAIzhB,aAAaj3wB,KAAKo/xB,yBAAyBp/xB,KAAK04xB,IAAIz4X,gBAAgB,GAAG3uU,OAAOtxF,KAAKi/xB,YAAW,EAAGj/xB,KAAKmyyB,uBAAuBnyyB,KAAKkyyB,SAAQ,GAAIlyyB,KAAKsyyB,gBAAgBtyyB,KAAK04xB,IAAI14xB,KAAKiyyB,aAAajyyB,KAAKk/xB,oBAAmB,KAAM,EAAEt3Z,GAAGxnY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAErnY,GAAGxnY,UAAUwtG,SAAS,WAAW,OAAOg6R,EAAE,EAAEA,GAAG+3Z,mBAAmB,SAAS/+xB,EAAE5b,GAAG,OAAO,IAAIQ,KAAKM,IAAI8a,EAAE5b,EAAE,EAAE,IAAIsuO,GAAG,SAAS1yN,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAKupB,OAAO,IAAIs6W,GAAG7jY,KAAKwyyB,UAAU,IAAI,CAAC,OAAO5xyB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUqyyB,cAAc,WAAW5mc,GAAGz4W,KAAK4M,KAAKupB,QAAQ,IAAI,IAAI3oB,EAAE,EAAEA,EAAEZ,KAAKupB,OAAOxW,OAAOnS,IAAI,CAAC,IAAI5b,EAAEgb,KAAKupB,OAAO11B,IAAI+M,GAAG5b,EAAEuszB,YAAYvszB,EAAE0szB,iBAAiBF,oBAAoB5wyB,EAAE,CAAC,EAAE5b,EAAEob,UAAUuryB,qBAAqB,WAAW,GAAG,IAAIx3yB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKwyyB,UAAU,EAAExyyB,KAAKyyyB,gBAAgB,IAAI,IAAIztzB,EAAE,EAAEA,EAAEgb,KAAKupB,OAAOxW,OAAO/tB,IAAI,CAAC,IAAI6b,EAAEb,KAAKupB,OAAO11B,IAAI7O,GAAG,GAAG6b,EAAE8wyB,YAAY3xyB,KAAK0yyB,gBAAgB1tzB,EAAE6b,EAAEgxyB,sBAAsBhxyB,EAAED,GAAGA,EAAE8/vB,SAAS,KAAK,CAAC,MAAM,GAAG,IAAIvswB,UAAUC,OAAO,GAAGD,UAAU,aAAayzY,IAAIltX,EAAEvmB,UAAU,GAAGyuY,KAAKloX,EAAEvmB,UAAU,GAAGyuY,IAAI,CAAC,IAAIv9Y,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAKitxB,SAAS5nyB,EAAEA,GAAG2a,KAAKitxB,SAASlzwB,EAAEA,GAAG/Z,KAAK2ryB,qBAAqBhouB,EAAE,MAAM,GAAG,kBAAkBxvE,UAAU,IAAIumB,EAAEvmB,UAAU,GAAGyuY,KAAKzuY,UAAU,aAAayzY,GAAG,CAAC,IAAI3kZ,EAAEkR,UAAU,GAAGyF,EAAEzF,UAAU,GAAGA,UAAU,GAAG6L,KAAKitxB,SAAShqyB,EAAE,MAAM+c,KAAKitxB,SAAShqyB,GAAG+c,KAAK2ryB,qBAAqB/xyB,EAAE,CAAC,EAAE5U,EAAEob,UAAUurM,QAAQ,SAAS/qM,EAAE5b,GAAG,IAAI,IAAI6b,EAAED,EAAEogyB,uBAAuB37yB,EAAEwb,EAAEu/xB,kBAAkBrmxB,EAAE,EAAEA,EAAE10B,EAAE+O,OAAO,EAAE2lB,IAAI,CAAC,IAAI4pD,EAAE,IAAI+jU,GAAG7mY,EAAEkZ,GAAG92B,EAAE,IAAI08G,GAAG36G,EAAE6b,EAAE0ywB,QAAQx5vB,GAAG4pD,GAAG3jE,KAAKupB,OAAOj2B,IAAIrQ,GAAG+c,KAAKupB,OAAOj2B,IAAI,IAAIqsG,GAAG9+F,EAAEwywB,QAAQt5vB,GAAG92B,GAAG,CAAC,EAAE+B,EAAEob,UAAUsyyB,gBAAgB,SAAS9xyB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI,IAAI00B,EAAElZ,EAAE4wyB,YAAY9tuB,EAAE/iE,EAAE+iE,EAAE3+E,EAAE2+E,IAAI,CAAC,IAAI1gF,EAAE+c,KAAKupB,OAAO11B,IAAI8vE,GAAG,GAAG1gF,EAAE0uzB,WAAW,CAAC,IAAI/3yB,EAAE3W,EAAEwuzB,YAAY5wyB,EAAE+wyB,YAAY3uzB,KAAK82B,EAAE4xxB,qBAAqB/xyB,EAAEvU,GAAG2a,KAAKwyyB,YAAY,CAAC,CAAC,EAAExtzB,EAAEob,UAAU6sxB,SAAS,WAAW,GAAG,IAAI94xB,UAAUC,OAAO,IAAI,IAAIwM,EAAEzM,UAAU,GAAG+N,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAOkY,KAAK2rM,QAAQ3mN,EAAEA,EAAE,MAAM,GAAG,IAAImP,UAAUC,OAAO,IAAI,IAAmB/O,EAAE8O,UAAU,GAAG4lB,EAA5B5lB,UAAU,GAAsB+N,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAOkY,KAAK2rM,QAAQhoI,EAAEt+E,EAAE,CAAC,EAAEL,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAzyD,CAA2yD6iZ,IAAI3lQ,GAAG,WAAWliI,KAAK2yyB,KAAKxwyB,EAAEkR,kBAAkBrT,KAAKm9xB,KAAKh7xB,EAAEkrC,iBAAiB,EAAEy6V,GAAG,CAAC8qa,eAAe,CAAC37wB,cAAa,IAAKirG,GAAG9hI,UAAUyyyB,OAAO,WAAW,OAAO7yyB,KAAK2yyB,IAAI,EAAEzwqB,GAAG9hI,UAAUg7Y,WAAW,SAASx6Y,EAAE5b,GAAG,QAAQgb,KAAK2yyB,KAAK3tzB,GAAGgb,KAAKm9xB,KAAKv8xB,EAAE,EAAEshI,GAAG9hI,UAAU0yyB,OAAO,WAAW,OAAO9yyB,KAAKm9xB,IAAI,EAAEj7pB,GAAG9hI,UAAUpZ,SAAS,WAAW,OAAOozB,EAAEquL,aAAa,IAAIzvL,EAAEhZ,KAAK2yyB,KAAK,GAAG,IAAI35xB,EAAEhZ,KAAKm9xB,KAAK,GAAG,EAAEj7pB,GAAG9hI,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE/soB,GAAG9hI,UAAUwtG,SAAS,WAAW,OAAOs0B,EAAE,EAAE4lQ,GAAG8qa,eAAe/+yB,IAAI,WAAW,OAAOm0Y,EAAE,EAAEl+Y,OAAO0hC,iBAAiB02G,GAAG4lQ,IAAI,IAAIE,GAAG,WAAW,EAAEA,GAAG5nY,UAAUs/B,QAAQ,SAAS9+B,EAAE5b,GAAG,IAAI6b,EAAED,EAAEvb,EAAEL,EAAE+0B,GAAGlZ,EAAE8xyB,KAAK9xyB,EAAEs8xB,MAAM,EAAEx5tB,GAAGt+E,EAAEstzB,KAAKttzB,EAAE83yB,MAAM,EAAE,OAAOpjxB,EAAE4pD,GAAG,EAAE5pD,EAAE4pD,EAAE,EAAE,CAAC,EAAEqkU,GAAG5nY,UAAU6uwB,YAAY,WAAW,MAAM,CAACl0vB,EAAE,EAAEitX,GAAG5nY,UAAUwtG,SAAS,WAAW,OAAOo6R,EAAE,EAAE,IAAID,GAAG,SAASnnY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK4txB,MAAM,KAAK,IAAI5oyB,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAK2yyB,KAAK3tzB,EAAEgb,KAAKm9xB,KAAKt8xB,EAAEb,KAAK4txB,MAAMvoyB,CAAC,CAAC,OAAOub,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUgvkB,MAAM,SAASxukB,EAAE5b,EAAE6b,GAAG,IAAIb,KAAKo7Y,WAAWx6Y,EAAE5b,GAAG,OAAO,KAAK6b,EAAEitxB,UAAU9txB,KAAK4txB,MAAM,EAAE5oyB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAla,CAAoak9I,IAAI+lQ,GAAG,SAASrnY,GAAG,SAAS5b,IAAI4b,EAAEP,KAAKL,MAAMA,KAAK+yyB,OAAO,KAAK/yyB,KAAKgzyB,OAAO,KAAK,IAAIhuzB,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG6L,KAAK+yyB,OAAO/tzB,EAAEgb,KAAKgzyB,OAAOnyyB,EAAEb,KAAKizyB,YAAYjzyB,KAAK+yyB,OAAO/yyB,KAAKgzyB,OAAO,CAAC,OAAOpyyB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAU6yyB,YAAY,SAASryyB,EAAE5b,GAAGgb,KAAK2yyB,KAAKntzB,KAAKkE,IAAIkX,EAAE+xyB,KAAK3tzB,EAAE2tzB,MAAM3yyB,KAAKm9xB,KAAK33yB,KAAKmE,IAAIiX,EAAEu8xB,KAAKn4yB,EAAEm4yB,KAAK,EAAEn4yB,EAAEob,UAAUgvkB,MAAM,SAASxukB,EAAE5b,EAAE6b,GAAG,IAAIb,KAAKo7Y,WAAWx6Y,EAAE5b,GAAG,OAAO,KAAK,OAAOgb,KAAK+yyB,QAAQ/yyB,KAAK+yyB,OAAO3jO,MAAMxukB,EAAE5b,EAAE6b,GAAG,OAAOb,KAAKgzyB,QAAQhzyB,KAAKgzyB,OAAO5jO,MAAMxukB,EAAE5b,EAAE6b,EAAE,EAAE7b,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAnnB,CAAqnBk9I,IAAIlmB,GAAG,WAAWh8G,KAAKkzyB,QAAQ,IAAIrva,GAAG7jY,KAAK22G,MAAM,KAAK32G,KAAKwxY,OAAO,CAAC,EAAEx1R,GAAG57G,UAAU+yyB,UAAU,WAAWtnc,GAAGz4W,KAAK4M,KAAKkzyB,QAAQ,IAAIhxqB,GAAG0wqB,gBAAgB,IAAI,IAAIhyyB,EAAEZ,KAAKkzyB,QAAQluzB,EAAE,KAAK6b,EAAE,IAAIgjY,KAAK,CAAC,GAAG7jY,KAAKozyB,WAAWxyyB,EAAEC,GAAG,IAAIA,EAAEkS,OAAO,OAAOlS,EAAEhN,IAAI,GAAG7O,EAAE4b,EAAEA,EAAEC,EAAEA,EAAE7b,CAAC,CAAC,EAAEg3H,GAAG57G,UAAU+wF,OAAO,SAASvwF,EAAE5b,EAAE6b,GAAG,GAAG,OAAOb,KAAK22G,MAAM,MAAM,IAAIpvG,MAAM,qDAAqDvH,KAAKkzyB,QAAQ5/yB,IAAI,IAAIy0Y,GAAGnnY,EAAE5b,EAAE6b,GAAG,EAAEm7G,GAAG57G,UAAUgvkB,MAAM,SAASxukB,EAAE5b,EAAE6b,GAAGb,KAAKosD,OAAOpsD,KAAK22G,MAAMy4d,MAAMxukB,EAAE5b,EAAE6b,EAAE,EAAEm7G,GAAG57G,UAAUizyB,UAAU,WAAW,GAAG,OAAOrzyB,KAAK22G,MAAM,OAAO,KAAK32G,KAAK22G,MAAM32G,KAAKmzyB,WAAW,EAAEn3rB,GAAG57G,UAAUkzyB,UAAU,SAAS1yyB,GAAGyZ,EAAEovF,IAAIyuqB,QAAQ99vB,EAAEquL,aAAa,IAAIzvL,EAAEpY,EAAE+xyB,KAAK3yyB,KAAKwxY,QAAQ,IAAIx4X,EAAEpY,EAAEu8xB,KAAKn9xB,KAAKwxY,SAAS,EAAEx1R,GAAG57G,UAAUgsD,KAAK,WAAW,GAAG,OAAOpsD,KAAK22G,MAAM,OAAO,KAAK32G,KAAKqzyB,WAAW,EAAEr3rB,GAAG57G,UAAUgzyB,WAAW,SAASxyyB,EAAE5b,GAAGgb,KAAKwxY,SAASxsZ,EAAE+1E,QAAQ,IAAI,IAAIl6D,EAAE,EAAEA,EAAED,EAAEmS,OAAOlS,GAAG,EAAE,CAAC,IAAIxb,EAAEub,EAAE/M,IAAIgN,GAAG,GAAG,QAAQA,EAAE,EAAED,EAAEmS,OAAOnS,EAAE/M,IAAIgN,GAAG,MAAM7b,EAAEsO,IAAIjO,OAAO,CAAC,IAAI00B,EAAE,IAAIkuX,GAAGrnY,EAAE/M,IAAIgN,GAAGD,EAAE/M,IAAIgN,EAAE,IAAI7b,EAAEsO,IAAIymB,EAAE,CAAC,CAAC,EAAEiiG,GAAG57G,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjzpB,GAAG57G,UAAUwtG,SAAS,WAAW,OAAOoO,EAAE,EAAE,IAAIksR,GAAG,WAAWloY,KAAKouwB,OAAO,IAAIvqY,EAAE,EAAEqE,GAAG9nY,UAAU0txB,UAAU,SAASltxB,GAAGZ,KAAKouwB,OAAO96wB,IAAIsN,EAAE,EAAEsnY,GAAG9nY,UAAUmzyB,SAAS,WAAW,OAAOvzyB,KAAKouwB,MAAM,EAAElmY,GAAG9nY,UAAU6uwB,YAAY,WAAW,MAAM,CAACxqY,GAAG,EAAEyD,GAAG9nY,UAAUwtG,SAAS,WAAW,OAAOs6R,EAAE,EAAE,IAAIhyC,GAAG,WAAWl2V,KAAK8zxB,OAAO,KAAK,IAAIlzxB,EAAEzM,UAAU,GAAG,IAAIumB,EAAE9Z,EAAEyjY,IAAI,MAAM,IAAIlhZ,EAAE,8BAA8B6c,KAAK8zxB,OAAO,IAAIxrZ,GAAG1nY,EAAE,EAAEqoY,GAAG,CAACuqa,eAAe,CAACv8wB,cAAa,GAAIw8wB,wBAAwB,CAACx8wB,cAAa,IAAKi/T,GAAG91V,UAAU48xB,OAAO,SAASp8xB,GAAG,IAAI5b,EAAE,IAAI8iF,GAAGlnE,GAAGC,EAAE,IAAIwoY,GAAGrkZ,GAAG,OAAOgb,KAAK8zxB,OAAO1kN,MAAMxukB,EAAEjd,EAAEid,EAAEjd,EAAEkd,GAAG7b,EAAE27sB,aAAa,EAAEzqW,GAAG91V,UAAU6uwB,YAAY,WAAW,MAAM,CAACloY,GAAG,EAAE7wC,GAAG91V,UAAUwtG,SAAS,WAAW,OAAOsoP,EAAE,EAAE+yC,GAAGuqa,eAAe3/yB,IAAI,WAAW,OAAOw1Y,EAAE,EAAEJ,GAAGwqa,wBAAwB5/yB,IAAI,WAAW,OAAOy0Y,EAAE,EAAEx+Y,OAAO0hC,iBAAiB0qU,GAAG+yC,IAAI,IAAII,GAAG,WAAWrpY,KAAK0zyB,SAAS,KAAK,IAAI9yyB,EAAEzM,UAAU,GAAG6L,KAAK0zyB,SAAS9yyB,CAAC,EAAEyoY,GAAGjpY,UAAU0txB,UAAU,SAASltxB,GAAG,IAAI5b,EAAE4b,EAAEZ,KAAK0zyB,SAASj7B,aAAazzxB,EAAE2txB,cAAc,GAAG3txB,EAAE2txB,cAAc,GAAG,EAAEtpY,GAAGjpY,UAAU6uwB,YAAY,WAAW,MAAM,CAACxqY,GAAG,EAAE4E,GAAGjpY,UAAUwtG,SAAS,WAAW,OAAOy7R,EAAE,EAAE,IAAIf,GAAG,WAAWtoY,KAAK8zxB,OAAO,IAAI93qB,GAAG,IAAIp7G,EAAEzM,UAAU,GAAG6L,KAAKosD,KAAKxrD,EAAE,EAAE0nY,GAAGloY,UAAUgsD,KAAK,SAASxrD,GAAG,IAAI,IAAI5b,EAAE+uK,GAAG0yoB,SAAS7lyB,GAAGsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOg3xB,iBAAiB9+wB,KAAK2zyB,QAAQ9yyB,EAAE,CAAC,EAAEynY,GAAGloY,UAAUuzyB,QAAQ,SAAS/yyB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAExM,OAAOpP,IAAI,CAAC,IAAI6b,EAAE,IAAIokY,GAAGrkY,EAAE5b,EAAE,GAAG4b,EAAE5b,IAAIK,EAAEG,KAAKkE,IAAImX,EAAEmnE,GAAGrkF,EAAEkd,EAAE0kB,GAAG5hC,GAAGo2B,EAAEv0B,KAAKmE,IAAIkX,EAAEmnE,GAAGrkF,EAAEkd,EAAE0kB,GAAG5hC,GAAGqc,KAAK8zxB,OAAO3isB,OAAO9rG,EAAE00B,EAAElZ,EAAE,CAAC,EAAEynY,GAAGloY,UAAUgvkB,MAAM,WAAW,GAAG,IAAIj7kB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE,IAAIqnY,GAAG,OAAOloY,KAAK8zxB,OAAO1kN,MAAMxukB,EAAE5b,EAAE6b,GAAGA,EAAE0yyB,UAAU,CAAC,GAAG,IAAIp/yB,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAG6L,KAAK8zxB,OAAO1kN,MAAM/plB,EAAE00B,EAAE4pD,EAAE,CAAC,EAAE2kU,GAAGloY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE3mY,GAAGloY,UAAUwtG,SAAS,WAAW,OAAO06R,EAAE,EAAE,IAAIiB,GAAG,SAAS3oY,GAAG,SAAS5b,IAAI,GAAG4b,EAAEP,KAAKL,MAAMA,KAAK4zyB,YAAY,KAAK5zyB,KAAK6zyB,aAAa,IAAIvoc,GAAGtrW,KAAK8zyB,kBAAkB,KAAK9zyB,KAAK+zyB,+BAA8B,EAAG/zyB,KAAKg0yB,UAAU,KAAKh0yB,KAAKi0yB,eAAe,KAAKj0yB,KAAKk0yB,kBAAiB,EAAGl0yB,KAAKm0yB,cAAc,KAAKn0yB,KAAKo0yB,eAAe,KAAKp0yB,KAAKunyB,WAAW,IAAI18Z,GAAG,IAAI12Y,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAEwlX,GAAGyxa,sBAAsBt8wB,KAAKg0yB,UAAUhvzB,EAAEgb,KAAK4zyB,YAAY/yyB,EAAEb,KAAK8zyB,kBAAkBzuzB,EAAE,OAAOwb,GAAGb,KAAK1M,IAAIuN,EAAE,MAAM,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAG6L,KAAKg0yB,UAAUj6xB,EAAE/Z,KAAK4zyB,YAAYjwuB,EAAE3jE,KAAK8zyB,kBAAkB7wzB,EAAE,OAAO0gF,GAAG3jE,KAAK1M,IAAIqwE,EAAE,CAAC,CAAC,OAAO/iE,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUi0yB,oBAAoB,SAASzzyB,EAAEC,GAAG,IAAIxb,EAAE2a,KAAK4kxB,OAAO+E,QAAQ9oxB,GAAGwmxB,WAAWttwB,EAAE,EAAS10B,EAAEs7sB,YAAY//rB,EAAEsrW,GAAGx6O,MAAM93G,EAAEs2vB,UAAUn2vB,IAAI,IAAI4pD,EAAE3+E,EAAEsvzB,kBAAkBt0yB,KAAK8zyB,kBAAkB/5xB,GAAG10B,EAAE46uB,YAAYr/tB,EAAE+iE,EAAE,EAAE3+E,EAAEob,UAAUm0yB,iBAAiB,WAAW,GAAG,IAAIpgzB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG,OAAO6L,KAAKu0yB,iBAAiB3zyB,EAAE5b,GAAE,EAAG,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAmB/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAE,IAAIikU,GAAjDzzY,UAAU,IAA4C,GAAG,GAAIwvE,EAAEyuuB,qBAAqBr4xB,GAAG,IAAI92B,EAAE+c,KAAKw0yB,2BAA2B56yB,EAAEoG,KAAK4zyB,uBAAuB5ptB,IAAIhqF,KAAK4zyB,uBAAuBpva,IAAIxkY,KAAK4zyB,uBAAuBrhe,GAAG7uP,EAAEr+F,IAAIuU,EAAE,OAAO3W,EAAE0ozB,qBAAqB3ryB,KAAK2mxB,OAAOhjtB,EAAE+f,GAAG1jF,KAAKy0yB,yBAAyBz0yB,KAAKg0yB,WAAWrwuB,CAAC,CAAC,EAAE3+E,EAAEob,UAAUs0yB,kBAAkB,SAAS9zyB,GAAG,IAAI,IAAI5b,EAAEgb,KAAK2mxB,OAAOzkxB,WAAWld,EAAE02xB,WAAY12xB,EAAE8C,OAAOskyB,OAAOkF,cAAc1wxB,EAAG,EAAE5b,EAAEob,UAAUu0yB,yBAAyB,SAAS/zyB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAIuiZ,GAAG5iZ,EAAE6b,GAAE,GAAqE,OAAjExb,EAAEktzB,iBAAiBvyyB,KAAK6pxB,mBAAmBjpxB,EAAEipxB,oBAA2B7pxB,KAAKw0yB,2BAA2B7I,qBAAqB3ryB,KAAK2mxB,OAAO/lxB,EAAE+lxB,OAAOthyB,GAAGA,CAAC,EAAEL,EAAEob,UAAU49xB,YAAY,WAAW,OAAOh+xB,KAAK4zyB,WAAW,EAAE5uzB,EAAEob,UAAU09xB,oBAAoB,WAAW,OAAO99xB,KAAK8zyB,iBAAiB,EAAE9uzB,EAAEob,UAAUw0yB,gBAAgB,WAAW,OAAO50yB,KAAKk0yB,gBAAgB,EAAElvzB,EAAEob,UAAUm8xB,SAAS,WAAW,GAAGpoyB,UAAU,aAAaowY,GAAG,CAAC,IAAI3jY,EAAEzM,UAAU,GAAGw+wB,gBAAgB3ywB,KAAK60yB,YAAY70yB,KAAKg0yB,UAAUpzyB,EAAEgZ,EAAEq2vB,SAAS,MAAM,GAAG97wB,UAAU,aAAa6kB,EAAE,CAAC,IAAIh0B,EAAEmP,UAAU,GAAG6L,KAAK60yB,YAAY70yB,KAAKg0yB,UAAUhvzB,EAAE40B,EAAEq2vB,SAAS,CAAC,EAAEjrxB,EAAEob,UAAUq8xB,WAAW,SAAS77xB,GAAGZ,KAAK28xB,eAAe/7xB,EAAEmgxB,kBAAkBnnwB,EAAEu2vB,SAASv2vB,EAAEq2vB,UAAU,IAAI,IAAIjrxB,EAAE,EAAEA,EAAE4b,EAAEigxB,qBAAqB77xB,IAAI,CAAC,IAAI6b,EAAED,EAAEogxB,iBAAiBh8xB,GAAGgb,KAAK28xB,eAAe97xB,EAAE+Y,EAAEq2vB,SAASr2vB,EAAEu2vB,SAAS,CAAC,EAAEnrxB,EAAEob,UAAUurM,QAAQ,SAAS/qM,GAAGZ,KAAK+sxB,WAAWnsxB,GAAG,IAAI5b,EAAE4b,EAAEk+wB,iBAAiB9+wB,KAAK60yB,YAAY70yB,KAAKg0yB,UAAUhvzB,EAAE,GAAG40B,EAAEs2vB,UAAUlwwB,KAAK60yB,YAAY70yB,KAAKg0yB,UAAUhvzB,EAAEA,EAAEoP,OAAO,GAAGwlB,EAAEs2vB,SAAS,EAAElrxB,EAAEob,UAAUy8xB,cAAc,SAASj8xB,GAAG,IAAI5b,EAAEy+Y,GAAGy5Y,qBAAqBt8wB,EAAEk+wB,kBAAkB,GAAG95xB,EAAEoP,OAAO,EAAE,OAAO4L,KAAKk0yB,kBAAiB,EAAGl0yB,KAAKm0yB,cAAcnvzB,EAAE,GAAG,KAAK,IAAI6b,EAAE,IAAI0pY,GAAGvlZ,EAAE,IAAI8nX,GAAG9sW,KAAKg0yB,UAAUp6xB,EAAEq2vB,WAAWjwwB,KAAK6zyB,aAAav9qB,IAAI11H,EAAEC,GAAGb,KAAK+sxB,WAAWlsxB,GAAGyhY,GAAG2lO,OAAOjjnB,EAAEoP,QAAQ,EAAE,sCAAsC4L,KAAKq0yB,oBAAoBr0yB,KAAKg0yB,UAAUhvzB,EAAE,IAAIgb,KAAKq0yB,oBAAoBr0yB,KAAKg0yB,UAAUhvzB,EAAEA,EAAEoP,OAAO,GAAG,EAAEpP,EAAEob,UAAU00yB,gBAAgB,WAAW,OAAO90yB,KAAKm0yB,aAAa,EAAEnvzB,EAAEob,UAAU20yB,kBAAkB,WAAW,IAAI,IAAIn0yB,EAAEZ,KAAK6pxB,mBAAmB7kyB,EAAE,IAAIsP,MAAMsM,EAAEmS,QAAQ0b,KAAK,MAAM5tB,EAAE,EAAExb,EAAEub,EAAEsB,WAAW7c,EAAEq2xB,WAAW,CAAC,IAAI3hwB,EAAE10B,EAAEyC,OAAO9C,EAAE6b,KAAKkZ,EAAE44vB,gBAAgBrhrB,MAAM,CAAC,OAAOtsG,CAAC,EAAEA,EAAEob,UAAUypxB,iBAAiB,WAAW,OAAO,OAAO7pxB,KAAKi0yB,iBAAiBj0yB,KAAKi0yB,eAAej0yB,KAAK4kxB,OAAOiF,iBAAiB7pxB,KAAKg0yB,YAAYh0yB,KAAKi0yB,cAAc,EAAEjvzB,EAAEob,UAAU40yB,wBAAwB,SAASp0yB,EAAE5b,EAAE6b,GAAG,GAAGb,KAAKwsxB,eAAe5rxB,EAAE5b,GAAG,OAAO,KAAK6b,IAAI+Y,EAAEs2vB,UAAUlwwB,KAAK+zyB,8BAA8B/zyB,KAAKq0yB,oBAAoBzzyB,EAAE5b,GAAGgb,KAAK60yB,YAAYj0yB,EAAE5b,EAAE6b,EAAE,EAAE7b,EAAEob,UAAUu8xB,eAAe,SAAS/7xB,EAAE5b,EAAE6b,GAAG,GAAGD,EAAE48M,UAAU,OAAO,KAAK,IAAIn4N,EAAEo+Y,GAAGy5Y,qBAAqBt8wB,EAAEk+wB,kBAAkB,GAAGz5xB,EAAE+O,OAAO,EAAE,OAAO4L,KAAKk0yB,kBAAiB,EAAGl0yB,KAAKm0yB,cAAc9uzB,EAAE,GAAG,KAAK,IAAI00B,EAAE/0B,EAAE2+E,EAAE9iE,EAAE6vX,GAAG0oZ,MAAM/zxB,KAAK00B,EAAElZ,EAAE8iE,EAAE3+E,GAAG,IAAI/B,EAAE,IAAIsnZ,GAAGllZ,EAAE,IAAIynX,GAAG9sW,KAAKg0yB,UAAUp6xB,EAAEs2vB,SAASn2vB,EAAE4pD,IAAI3jE,KAAK6zyB,aAAav9qB,IAAI11H,EAAE3d,GAAG+c,KAAK+sxB,WAAW9pyB,GAAG+c,KAAK60yB,YAAY70yB,KAAKg0yB,UAAU3uzB,EAAE,GAAGu0B,EAAEs2vB,SAAS,EAAElrxB,EAAEob,UAAUy0yB,YAAY,SAASj0yB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE2a,KAAK4kxB,OAAO+E,QAAQ3kyB,GAAG+0B,EAAE10B,EAAEgiyB,WAAW,OAAOttwB,EAAE10B,EAAEwhyB,OAAO,IAAI/5a,GAAGlsW,EAAEC,GAAGkZ,EAAEkmtB,YAAYr/tB,EAAEC,EAAE,EAAE7b,EAAEob,UAAUo0yB,yBAAyB,WAAW,OAAO,IAAIlhlB,EAAE,EAAEtuO,EAAEob,UAAUq0yB,yBAAyB,SAAS7zyB,GAAG,IAAI,IAAI5b,EAAEgb,KAAK2mxB,OAAOzkxB,WAAWld,EAAE02xB,WAAW,IAAI,IAAI76wB,EAAE7b,EAAE8C,OAAOzC,EAAEwb,EAAEwmxB,WAAW1mF,YAAY//rB,GAAGmZ,EAAElZ,EAAEurxB,OAAOlqxB,WAAW6X,EAAE2hwB,WAAW,CAAC,IAAI/3sB,EAAE5pD,EAAEjyB,OAAOkY,KAAKg1yB,wBAAwBp0yB,EAAE+iE,EAAE8zF,MAAMpyK,EAAE,CAAC,EAAEL,EAAEob,UAAU9M,IAAI,WAAW,GAAG,IAAIa,UAAUC,OAAO,OAAOwM,EAAER,UAAU9M,IAAIwN,MAAMd,KAAK7L,WAAW,IAAInP,EAAEmP,UAAU,GAAG,GAAGnP,EAAEw4N,UAAU,OAAO,KAAK,GAAGx4N,aAAautV,KAAKvyU,KAAK+zyB,+BAA8B,GAAI/uzB,aAAaw/Y,GAAGxkY,KAAKy8xB,WAAWz3yB,QAAQ,GAAGA,aAAak+Y,GAAGljY,KAAK68xB,cAAc73yB,QAAQ,GAAGA,aAAau/Y,GAAGvkY,KAAKu8xB,SAASv3yB,QAAQ,GAAGA,aAAailG,GAAGjqF,KAAK+8xB,cAAc/3yB,QAAQ,GAAGA,aAAam/Y,GAAGnkY,KAAK+8xB,cAAc/3yB,QAAQ,GAAGA,aAAautV,GAAGvyU,KAAK+8xB,cAAc/3yB,OAAO,CAAC,KAAKA,aAAa0+Y,IAAI,MAAM,IAAIn8X,MAAMviB,EAAE4oH,WAAWgoT,WAAW51Z,KAAK+8xB,cAAc/3yB,EAAE,CAAC,EAAEA,EAAEob,UAAU28xB,cAAc,SAASn8xB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAE4b,EAAEo6wB,mBAAmBh2xB,IAAI,CAAC,IAAI6b,EAAED,EAAE45wB,aAAax1xB,GAAGgb,KAAK1M,IAAIuN,EAAE,CAAC,EAAE7b,EAAEob,UAAU48xB,OAAO,SAASp8xB,GAAG,OAAO8Z,EAAE1a,KAAK4zyB,YAAYvva,KAAKrkY,KAAK4zyB,YAAY54B,mBAAmB,IAAI,OAAOh7wB,KAAKo0yB,iBAAiBp0yB,KAAKo0yB,eAAe,IAAIl+c,GAAGl2V,KAAK4zyB,cAAc5zyB,KAAKo0yB,eAAepX,OAAOp8xB,IAAIZ,KAAKunyB,WAAWvK,OAAOp8xB,EAAEZ,KAAK4zyB,YAAY,EAAE5uzB,EAAEob,UAAUkkxB,SAAS,WAAW,GAAG,IAAInwxB,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG,OAAO6L,KAAK6zyB,aAAahgzB,IAAI7O,EAAE,CAAC,OAAO4b,EAAER,UAAUkkxB,SAASxjxB,MAAMd,KAAK7L,UAAU,EAAEnP,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,EAAEsvzB,kBAAkB,SAAS1zyB,EAAE5b,GAAG,OAAO4b,EAAE27wB,aAAav3xB,GAAG40B,EAAEs2vB,SAASt2vB,EAAEq2vB,QAAQ,EAAEjrxB,CAAC,CAAnmL,CAAqmL0/Y,IAAIiE,GAAG,WAAW,GAAG3oY,KAAK04xB,IAAI,IAAI7yyB,GAAGma,KAAKi1yB,sBAAsB,KAAKj1yB,KAAKk1yB,KAAK,KAAK,IAAI/gzB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG6L,KAAKm1yB,wBAAwBv0yB,EAAE06wB,qBAAqBt7wB,KAAKk1yB,KAAK,IAAI5gzB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKk1yB,KAAK,GAAG,IAAI3ra,GAAG,EAAE3oY,EAAE,MAAM,GAAG,IAAIzM,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAEwlX,GAAGyxa,sBAAsBt3xB,EAAEs2xB,oBAAoB5ykB,UAAU7nM,EAAEy6wB,sBAAsB,EAAEt7wB,KAAKm1yB,wBAAwBnwzB,EAAEs2xB,qBAAqBt7wB,KAAKm1yB,wBAAwBt0yB,EAAEy6wB,qBAAqBt7wB,KAAKk1yB,KAAK,IAAI5gzB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKk1yB,KAAK,GAAG,IAAI3ra,GAAG,EAAEvkZ,EAAEK,GAAG2a,KAAKk1yB,KAAK,GAAG,IAAI3ra,GAAG,EAAE1oY,EAAExb,EAAE,MAAM,GAAG,IAAI8O,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAG4lB,EAAEuhwB,oBAAoB5ykB,UAAU/kI,EAAE23sB,sBAAsB,EAAEt7wB,KAAKm1yB,wBAAwBp7xB,EAAEuhwB,qBAAqBt7wB,KAAKm1yB,wBAAwBxxuB,EAAE23sB,qBAAqBt7wB,KAAKk1yB,KAAK,IAAI5gzB,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAKk1yB,KAAK,GAAG,IAAI3ra,GAAG,EAAExvX,EAAE92B,GAAG+c,KAAKk1yB,KAAK,GAAG,IAAI3ra,GAAG,EAAE5lU,EAAE1gF,EAAE,CAAC,EAAE0lZ,GAAGvoY,UAAUmsyB,eAAe,SAAS3ryB,GAAG,OAAOZ,KAAKk1yB,KAAKt0yB,GAAGo9xB,aAAa,EAAEr1Z,GAAGvoY,UAAU+0yB,wBAAwB,SAASv0yB,GAAGZ,KAAKi1yB,sBAAsBr0yB,EAAEZ,KAAK04xB,IAAIvhB,kBAAkBn3wB,KAAKi1yB,sBAAsB,EAAEtsa,GAAGvoY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEtmY,GAAGvoY,UAAUwtG,SAAS,WAAW,OAAO+6R,EAAE,EAAE,IAAIN,GAAG,WAAW,EAAEA,GAAGjoY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE5mY,GAAGjoY,UAAUwtG,SAAS,WAAW,OAAOy6R,EAAE,EAAEA,GAAGt1Y,IAAI,WAAW,GAAGoB,UAAU,aAAa60I,IAAItuH,EAAEvmB,UAAU,GAAGk0Y,GAAG+sa,OAAO,CAAC,IAAI,IAAIx0yB,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE,IAAIgjY,GAAGx+Y,EAAE,EAAEA,EAAEub,EAAEo6wB,mBAAmB31xB,IAAI,CAAC,IAAI00B,EAAE/0B,EAAE+N,IAAI6N,EAAE45wB,aAAan1xB,IAAI,OAAO00B,GAAGlZ,EAAEvN,IAAIymB,EAAE,CAAC,OAAOnZ,EAAE25wB,aAAamI,cAAc7hxB,EAAE,CAAC,GAAG6Z,EAAEvmB,UAAU,GAAGovY,KAAK7oX,EAAEvmB,UAAU,GAAGk0Y,GAAG+sa,OAAO,CAAC,IAAI,IAAIzxuB,EAAExvE,UAAU,GAAGlR,EAAEkR,UAAU,GAAGyF,EAAE,IAAIiqY,GAAGngT,EAAE/f,EAAEzhE,WAAWwhF,EAAEg4rB,WAAW,CAAC,IAAIljwB,EAAEkrE,EAAE57F,OAAOlC,EAAE3C,EAAE8P,IAAIylB,GAAG,OAAO5yB,GAAGgU,EAAEtG,IAAI1N,EAAE,CAAC,OAAOgU,CAAC,CAAC,EAAEyuY,GAAG+sa,MAAM,WAAW,EAAE,IAAIjsa,GAAG,SAASvoY,GAAG,SAAS5b,IAAI,IAAIA,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAGyM,EAAEP,KAAKL,KAAKhb,EAAE6b,GAAGb,KAAKunyB,WAAW,IAAI18Z,GAAG7qY,KAAKo/wB,UAAU,KAAKp/wB,KAAKq1yB,YAAY,KAAKr1yB,KAAKuhyB,OAAO,KAAKvhyB,KAAKw9xB,UAAU,IAAI72Z,GAAG3mY,KAAKs1yB,gBAAgB,IAAIzxa,GAAG7jY,KAAKisyB,gBAAgB,IAAIpoa,GAAG7jY,KAAK6syB,iBAAiB,IAAIhpa,GAAG7jY,KAAKuhyB,OAAO,IAAI78Z,GAAG,IAAImB,IAAI7lY,KAAKo/wB,UAAUp6xB,EAAEu1xB,YAAY,CAAC,OAAO35wB,IAAI5b,EAAEkb,UAAUU,GAAG5b,EAAEob,UAAUtW,OAAO4W,OAAOE,GAAGA,EAAER,WAAWpb,EAAEob,UAAUK,YAAYzb,EAAEA,EAAEob,UAAUqhyB,iBAAiB,SAAS7gyB,GAAG,IAAI5b,EAAEgb,KAAKw9xB,UAAUuB,cAAcn+xB,GAAG,GAAG,OAAO5b,EAAE,CAAC,IAAI6b,EAAE7b,EAAEqiyB,WAAWhiyB,EAAEub,EAAEymxB,WAAWriyB,EAAEi8yB,iBAAiBrgyB,KAAKvb,EAAE,IAAIynX,GAAGlsW,EAAEymxB,aAAah4vB,OAAO,IAAItV,EAAE/0B,EAAE0xa,WAAW38Y,EAAEqiM,UAAUriM,EAAEzmB,IAAIuN,GAAGkZ,EAAEzmB,IAAIjO,GAAGwb,EAAEiR,MAAMzsB,EAAE,MAAM2a,KAAKw9xB,UAAUlqyB,IAAIsN,EAAE,EAAE5b,EAAEob,UAAU+ryB,SAAS,WAAW,OAAOnsyB,KAAKuhyB,MAAM,EAAEv8yB,EAAEob,UAAUm1yB,2BAA2B,WAAW,IAAI,IAAI30yB,EAAEZ,KAAKuhyB,OAAO5U,cAAczqxB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO+Y,EAAE7b,EAAEq/xB,SAASr/xB,EAAEmkyB,cAActoxB,EAAEsoxB,eAAenkyB,EAAE2gyB,aAAY,GAAI9kxB,EAAE8kxB,aAAY,GAAI,CAAC,EAAE3gyB,EAAEob,UAAU2syB,cAAc,SAASnsyB,GAAG,QAAQZ,KAAK6oxB,UAAUjoxB,EAAEZ,KAAKisyB,oBAAoBjsyB,KAAK6oxB,UAAUjoxB,EAAEZ,KAAKs1yB,gBAAgB,EAAEtwzB,EAAEob,UAAUglyB,gBAAgB,SAASxkyB,EAAEC,EAAExb,EAAE00B,GAAG,IAAI4pD,EAAE,IAAIkgU,GAAG,OAAOlgU,EAAEorsB,OAAOnuwB,GAAG+iE,EAAEorsB,OAAOluwB,GAAG8iE,EAAEorsB,OAAO1pxB,GAAGs+E,EAAE65I,UAAUx4N,EAAEwwzB,kBAAkBz7xB,EAAE/Z,KAAKk1yB,KAAK,GAAGlX,cAAch+xB,KAAKk1yB,KAAK,GAAGlX,cAAch+xB,KAAKo/wB,WAAWp/wB,KAAKo/wB,UAAUsD,cAAc/+sB,EAAE,EAAE3+E,EAAEob,UAAUq+xB,eAAe,WAAW,IAAI,IAAI79xB,EAAEZ,KAAKuhyB,OAAO3b,WAAW1jxB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOo8xB,WAAWua,gBAAiB,EAAEz5yB,EAAEob,UAAUyoxB,UAAU,SAASjoxB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE7b,EAAEkd,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO,GAAGkY,KAAKunyB,WAAWvK,OAAOp8xB,EAAEvb,KAAKu0B,EAAEu2vB,SAAS,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEnrxB,EAAEob,UAAUq1yB,sBAAsB,WAAW,IAAI,IAAI70yB,EAAE,IAAIijY,GAAG7+Y,EAAEgb,KAAKw9xB,UAAUt7xB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO+Y,EAAEigyB,gBAAgB97yB,EAAE49C,SAAShiC,EAAEtN,IAAIuN,EAAE+/xB,oBAAoB,CAAC5gyB,KAAKw9xB,UAAUzuB,OAAOnuwB,EAAE,EAAE5b,EAAEob,UAAUs1yB,oBAAoB,WAAW,IAAI,IAAI90yB,EAAEZ,KAAKuhyB,OAAO3b,WAAW1jxB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO+Y,EAAE7b,EAAEk/xB,WAAWmD,WAAWriyB,EAAEqiyB,WAAWv1wB,MAAMjR,EAAE,CAAC,EAAE7b,EAAEob,UAAUklyB,kBAAkB,SAAS1kyB,GAAG,OAAOZ,KAAK21yB,eAAe/0yB,GAAGZ,KAAKq1yB,WAAW,EAAErwzB,EAAEob,UAAUw1yB,kBAAkB,SAASh1yB,GAAG,IAAI,IAAI5b,EAAE4b,EAAEsB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOkY,KAAKyhyB,iBAAiB5gyB,EAAE,CAAC,EAAE7b,EAAEob,UAAUu1yB,eAAe,SAAS/0yB,GAAGZ,KAAK61yB,WAAW,GAAG71yB,KAAK61yB,WAAW,GAAG71yB,KAAKk1yB,KAAK,GAAGX,iBAAiBv0yB,KAAK04xB,KAAI,GAAI14xB,KAAKk1yB,KAAK,GAAGX,iBAAiBv0yB,KAAK04xB,KAAI,GAAI14xB,KAAKk1yB,KAAK,GAAGP,yBAAyB30yB,KAAKk1yB,KAAK,GAAGl1yB,KAAK04xB,KAAI,GAAI,IAAI1zyB,EAAE,IAAI6+Y,GAAG7jY,KAAKk1yB,KAAK,GAAGR,kBAAkB1vzB,GAAGgb,KAAKk1yB,KAAK,GAAGR,kBAAkB1vzB,GAAGgb,KAAK41yB,kBAAkB5wzB,GAAGgb,KAAK81yB,0BAA0B91yB,KAAKy1yB,wBAAwBtpa,GAAGu2Z,WAAW1iyB,KAAKw9xB,UAAUtZ,YAAYlkxB,KAAKuhyB,OAAOtU,SAASjtxB,KAAKw9xB,UAAUtZ,YAAYlkxB,KAAKi+xB,mBAAmBj+xB,KAAK+1yB,uBAAuB/1yB,KAAKg2yB,oBAAoBp1yB,GAAGZ,KAAKu1yB,6BAA6B,IAAI10yB,EAAE,IAAI4qW,GAAGzrW,KAAKo/wB,WAAWv+wB,EAAEvN,IAAI0M,KAAKuhyB,QAAQvhyB,KAAKs1yB,gBAAgBz0yB,EAAE6sxB,cAAc,IAAIroyB,EAAE,IAAIymZ,GAAG9rY,KAAKA,KAAKo/wB,UAAUp/wB,KAAKunyB,YAAYvnyB,KAAKisyB,gBAAgB5mzB,EAAEqkjB,MAAM9oiB,GAAG,IAAImZ,EAAE,IAAIi6I,GAAGh0J,KAAKA,KAAKo/wB,UAAUp/wB,KAAKunyB,YAAYvnyB,KAAK6syB,iBAAiB9yxB,EAAE2vhB,MAAM9oiB,GAAGZ,KAAKq1yB,YAAYr1yB,KAAKolyB,gBAAgBplyB,KAAK6syB,iBAAiB7syB,KAAKisyB,gBAAgBjsyB,KAAKs1yB,gBAAgB10yB,EAAE,EAAE5b,EAAEob,UAAU61yB,oBAAoB,SAASr1yB,EAAE5b,GAAG,IAAI6b,EAAEb,KAAKunyB,WAAWvK,OAAOp8xB,EAAE+xwB,gBAAgB3ywB,KAAKk1yB,KAAKlwzB,GAAGg5yB,eAAep9xB,EAAEymxB,WAAWpnD,YAAYj7uB,EAAE6b,EAAE,EAAE7b,EAAEob,UAAUy1yB,WAAW,SAASj1yB,GAAG,IAAI,IAAI5b,EAAEgb,KAAKk1yB,KAAKt0yB,GAAGyrxB,kBAAkBrnyB,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOkY,KAAKuhyB,OAAO5X,QAAQ9oxB,EAAE8xwB,iBAAiBoW,SAASnoxB,EAAEC,EAAEwmxB,WAAW1mF,YAAY//rB,GAAG,CAAC,EAAE5b,EAAEob,UAAU41yB,oBAAoB,SAASp1yB,GAAG,IAAI,IAAIC,EAAEb,KAAKuhyB,OAAO5U,cAAczqxB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOiyB,EAAE10B,EAAEgiyB,WAAWttwB,EAAEyjc,WAAWn4d,EAAEqgyB,sBAAsB1gyB,EAAEynzB,aAAa1yxB,EAAE4mrB,YAAY,EAAEz0V,GAAGt6G,OAAO73O,EAAE4mrB,YAAY,EAAEz0V,GAAGt6G,OAAOhxP,IAAIvb,EAAEsgyB,aAAY,EAAG,CAAC,EAAE3gyB,EAAEob,UAAU01yB,wBAAwB,WAAW,IAAI,IAAIl1yB,EAAEZ,KAAKw9xB,UAAUt7xB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO+Y,EAAE7b,EAAEqiyB,WAAWhiyB,EAAEL,EAAE0xa,WAAW,IAAIrxa,EAAE+2N,SAAS,CAAC/2N,EAAEs6C,YAAY,IAAI,IAAI5lB,EAAE,EAAEA,EAAE,EAAEA,IAAIlZ,EAAEu7M,OAAOriM,KAAKlZ,EAAE28c,UAAUn4d,EAAE+2N,OAAOriM,KAAK,IAAI10B,EAAEk7yB,SAASxmxB,GAAGlZ,EAAE0lxB,OAAOxswB,IAAIuoX,GAAG2lO,QAAQ5inB,EAAE+2N,OAAOriM,EAAEmyV,GAAGv7G,MAAM,+CAA+C9vP,EAAEo/tB,YAAYlmtB,EAAEmyV,GAAGv7G,KAAKtrQ,EAAEs7sB,YAAY5mrB,EAAEmyV,GAAGv7G,OAAO2xI,GAAG2lO,QAAQ5inB,EAAE+2N,OAAOriM,EAAEmyV,GAAGt6G,OAAO,gDAAgD/wP,EAAEo/tB,YAAYlmtB,EAAEmyV,GAAGt6G,MAAMvsQ,EAAEs7sB,YAAY5mrB,EAAEmyV,GAAGt6G,SAAS,CAAC,CAAC,EAAE5sQ,EAAEob,UAAU69xB,iBAAiB,WAAW,IAAI,IAAIr9xB,EAAEZ,KAAKuhyB,OAAO3b,WAAW1jxB,WAAWtB,EAAE86wB,WAAY96wB,EAAE9Y,OAAOo8xB,WAAW+Z,iBAAiBj+xB,KAAKk1yB,MAAMl1yB,KAAKy+xB,iBAAiBz+xB,KAAK01yB,qBAAqB,EAAE1wzB,EAAEob,UAAU21yB,qBAAqB,WAAW,IAAI,IAAIn1yB,EAAEZ,KAAKuhyB,OAAO3b,WAAW1jxB,WAAWtB,EAAE86wB,WAAW,CAAC,IAAI12xB,EAAE4b,EAAE9Y,OAAO+Y,EAAE7b,EAAEqiyB,WAAWriyB,EAAEmiyB,eAAetmxB,EAAEu7M,OAAO,GAAGp8M,KAAKi2yB,oBAAoBjxzB,EAAE,GAAGgb,KAAKi2yB,oBAAoBjxzB,EAAE,IAAIA,EAAEk/xB,WAAWsa,gBAAgB39xB,EAAE,CAAC,EAAE7b,EAAEob,UAAUssyB,aAAa,SAAS9ryB,GAAG,QAAQZ,KAAK6oxB,UAAUjoxB,EAAEZ,KAAKs1yB,gBAAgB,EAAEtwzB,EAAEob,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjqxB,EAAEob,UAAUwtG,SAAS,WAAW,OAAO5oH,CAAC,EAAEA,CAAC,CAAxxJ,CAA0xJ2jZ,IAAIQ,GAAGwna,UAAU,SAAS/vyB,EAAE5b,EAAE6b,GAAG,OAAO,IAAIsoY,GAAGvoY,EAAE5b,GAAGsgzB,kBAAkBzkyB,EAAE,EAAEsoY,GAAGxkL,aAAa,SAAS/jN,EAAE5b,GAAG,GAAG4b,EAAE48M,WAAWx4N,EAAEw4N,UAAU,OAAO2rL,GAAGqsa,kBAAkBrsa,GAAGyja,aAAahsyB,EAAE5b,EAAE4b,EAAE25wB,cAAc,GAAG35wB,EAAE09L,uBAAuB,CAAC,IAAIz9L,EAAE7b,EAAE,OAAOimZ,GAAGl4Y,IAAI6N,EAAE,CAACquwB,YAAY,WAAW,MAAM,CAAC5mY,GAAG+sa,MAAM,EAAErizB,IAAI,SAAS6N,GAAG,OAAOA,EAAE+jN,aAAa9jN,EAAE,GAAG,CAAC,OAAOD,EAAEy6wB,2BAA2Bz6wB,GAAGA,EAAEy6wB,2BAA2Br2xB,GAAGyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyja,aAAa,EAAEzja,GAAG0na,cAAc,SAASjwyB,EAAE5b,GAAG,GAAG4b,EAAE48M,WAAWx4N,EAAEw4N,UAAU,CAAC,GAAG58M,EAAE48M,WAAWx4N,EAAEw4N,UAAU,OAAO2rL,GAAGqsa,kBAAkBrsa,GAAG2na,cAAclwyB,EAAE5b,EAAE4b,EAAE25wB,cAAc,GAAG35wB,EAAE48M,UAAU,OAAOx4N,EAAEssG,OAAO,GAAGtsG,EAAEw4N,UAAU,OAAO58M,EAAE0wF,MAAM,CAAC,OAAO1wF,EAAEy6wB,2BAA2Bz6wB,GAAGA,EAAEy6wB,2BAA2Br2xB,GAAGyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG2na,cAAc,EAAE3na,GAAG+sa,gBAAgB,SAASt1yB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAEL,EAAEoksB,eAAervqB,EAAElZ,EAAEuorB,eAAezlnB,GAAG,EAAE,OAAO/iE,GAAG,KAAKuoY,GAAGyja,aAAajpuB,EAAEn+E,KAAKkE,IAAIrE,EAAE00B,GAAG,MAAM,KAAKovX,GAAGyna,MAAMjtuB,EAAEn+E,KAAKmE,IAAItE,EAAE00B,GAAG,MAAM,KAAKovX,GAAG4na,WAAWptuB,EAAEt+E,EAAE,MAAM,KAAK8jZ,GAAG2na,cAAcntuB,EAAEn+E,KAAKmE,IAAItE,EAAE00B,GAAG,OAAO4pD,CAAC,EAAEwlU,GAAGqsa,kBAAkB,SAAS50yB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE,KAAK,OAAOovX,GAAG+sa,gBAAgBt1yB,EAAE5b,EAAE6b,IAAI,KAAK,EAAEkZ,EAAE10B,EAAEowxB,yBAAyB,IAAInhxB,MAAM,GAAGm6B,KAAK,OAAO,MAAM,KAAK,EAAE1U,EAAE10B,EAAE6vxB,cAAc,MAAM,KAAK,EAAEn7vB,EAAE10B,EAAE+vxB,mBAAmB,MAAM,KAAK,EAAEr7vB,EAAE10B,EAAEkwxB,gBAAgB,OAAOx7vB,CAAC,EAAEovX,GAAG3kL,WAAW,SAAS5jN,EAAE5b,GAAG,OAAO4b,EAAE48M,UAAU2rL,GAAGqsa,kBAAkBrsa,GAAG4na,WAAWnwyB,EAAE5b,EAAE4b,EAAE25wB,cAAcv1xB,EAAEw4N,UAAU58M,EAAE0wF,QAAQ1wF,EAAEy6wB,2BAA2Bz6wB,GAAGA,EAAEy6wB,2BAA2Br2xB,GAAGyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAG4na,YAAY,EAAE5na,GAAGsja,aAAa,WAAW,GAAG,IAAIt4yB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAED,EAAE+/rB,YAAY,GAAGt7sB,EAAEub,EAAE+/rB,YAAY,GAAG,OAAOx3T,GAAGsja,aAAa5ryB,EAAExb,EAAEL,EAAE,CAAC,GAAG,IAAImP,UAAUC,OAAO,CAAC,IAAI2lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAkB,OAAO4lB,IAAIH,EAAEs2vB,WAAWn2vB,EAAEH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEs2vB,WAAWvssB,EAAE/pD,EAAEq2vB,UAAxE97wB,UAAU,IAA2E,KAAKg1Y,GAAGyja,aAAa,OAAO7yxB,IAAIH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEq2vB,SAAS,KAAK9mY,GAAGyna,MAAM,OAAO72xB,IAAIH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEq2vB,SAAS,KAAK9mY,GAAG4na,WAAW,OAAOh3xB,IAAIH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEq2vB,SAAS,KAAK9mY,GAAG2na,cAAc,OAAO/2xB,IAAIH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEq2vB,UAAUl2vB,IAAIH,EAAEq2vB,UAAUtssB,IAAI/pD,EAAEq2vB,SAAS,OAAM,CAAE,CAAC,EAAE9mY,GAAGyja,aAAa,EAAEzja,GAAGyna,MAAM,EAAEzna,GAAG4na,WAAW,EAAE5na,GAAG2na,cAAc,EAAE,IAAI3oa,GAAG,WAAWnoY,KAAK6vL,GAAG,KAAK7vL,KAAKm2yB,2BAA2B,KAAKn2yB,KAAKo2yB,UAAU,KAAKp2yB,KAAKunyB,WAAW,IAAI18Z,GAAG7qY,KAAKq5iB,KAAK,IAAIp0K,GAAG,IAAIrkY,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG6L,KAAK6vL,GAAGjvL,EAAEZ,KAAKm2yB,2BAA2BnxzB,EAAEgb,KAAKo2yB,UAAUp2yB,KAAKq2yB,gBAAgBz1yB,EAAE,EAAEunY,GAAG/nY,UAAUk2yB,4BAA4B,SAAS11yB,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKo2yB,UAAUp7B,mBAAmBh2xB,IAAI,IAAI,IAAI6b,EAAEb,KAAKo2yB,UAAU57B,aAAax1xB,GAAG07xB,wBAAwBr7xB,EAAE,EAAEA,EAAEwb,EAAEkS,OAAO,EAAE1tB,IAAuE,GAAlEwb,EAAE8xwB,cAActtxB,EAAE2a,KAAKq5iB,KAAKrxe,IAAInnE,EAAE8xwB,cAActtxB,EAAE,EAAE2a,KAAKq5iB,KAAK9zhB,IAAOvlB,KAAKq5iB,KAAK9gjB,SAASqI,IAAIZ,KAAKm2yB,2BAA2B,OAAM,EAAG,OAAM,CAAE,EAAEhua,GAAG/nY,UAAUugsB,YAAY,SAAS//rB,GAAG,OAAOZ,KAAKs2yB,4BAA4B11yB,GAAGgZ,EAAEs2vB,SAASlwwB,KAAKunyB,WAAWvK,OAAOp8xB,EAAEZ,KAAK6vL,GAAG,EAAEs4M,GAAG/nY,UAAUi2yB,gBAAgB,SAASz1yB,GAAG,IAAI5b,EAAE,IAAIojZ,GAAGxnY,EAAEE,MAAM9b,GAAG,IAAI6b,EAAE7b,EAAEuxzB,cAAclxzB,EAAE6lH,GAAG23qB,kBAAkBhixB,GAAG,OAAOD,EAAE25wB,aAAajF,sBAAsBjwxB,EAAE,EAAE8iZ,GAAG/nY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAE9mY,GAAG/nY,UAAUwtG,SAAS,WAAW,OAAOu6R,EAAE,EAAE,IAAIC,GAAG,WAAWpoY,KAAKo2yB,UAAU,KAAKp2yB,KAAKo2yB,UAAU,IAAIvya,EAAE,EAAEuE,GAAGhoY,UAAUm2yB,YAAY,WAAW,OAAOv2yB,KAAKo2yB,SAAS,EAAEhua,GAAGhoY,UAAUnP,OAAO,SAAS2P,GAAG,GAAGA,aAAa4jY,GAAG,CAAC,IAAIx/Y,EAAE4b,EAAEZ,KAAKo2yB,UAAU9izB,IAAItO,EAAE+7xB,mBAAmB,IAAI,IAAIlgxB,EAAE,EAAEA,EAAE7b,EAAE67xB,qBAAqBhgxB,IAAIb,KAAKo2yB,UAAU9izB,IAAItO,EAAEg8xB,iBAAiBngxB,GAAG,CAAC,EAAEunY,GAAGhoY,UAAU6uwB,YAAY,WAAW,MAAM,CAAC7za,GAAG,EAAEgtC,GAAGhoY,UAAUwtG,SAAS,WAAW,OAAOw6R,EAAE,EAAE,IAAIY,GAAG,WAAWhpY,KAAK6vL,GAAG,KAAK7vL,KAAKw2yB,SAAQ,EAAGx2yB,KAAKy2yB,UAAS,EAAG,IAAI71yB,EAAEzM,UAAU,GAAG6L,KAAK6vL,GAAGjvL,CAAC,EAAEooY,GAAG5oY,UAAUs2yB,cAAc,SAAS91yB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAEub,EAAEk+wB,iBAAiB/kwB,EAAE,EAAEA,EAAE10B,EAAE+O,OAAO,EAAE2lB,IAAI/Z,KAAK22yB,oBAAoBtxzB,EAAE00B,GAAG10B,EAAE00B,EAAE,GAAG/0B,EAAE6b,EAAE,EAAEmoY,GAAG5oY,UAAUw2yB,mBAAmB,SAASh2yB,EAAE5b,GAAGgb,KAAKw2yB,QAAQ51yB,EAAEZ,KAAKy2yB,SAASzxzB,CAAC,EAAEgkZ,GAAG5oY,UAAUqpa,UAAU,SAAS7oa,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAEkzJ,GAAG0yoB,SAASzmyB,KAAK6vL,IAAI3tL,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOkY,KAAK02yB,cAAcrxzB,EAAEub,EAAE5b,EAAE,CAAC,OAAOA,CAAC,EAAEgkZ,GAAG5oY,UAAUu2yB,oBAAoB,SAAS/1yB,EAAE5b,EAAE6b,EAAExb,GAAG,IAAI00B,EAAE/0B,EAAEuB,EAAEqa,EAAEra,EAAEo9E,EAAE3+E,EAAErB,EAAEid,EAAEjd,EAAEV,EAAEuC,KAAK0vB,KAAK6E,EAAEA,EAAE4pD,EAAEA,GAAG/pE,EAAEiH,EAAEkZ,EAAE92B,EAAEygG,EAAE7iF,EAAE8iE,EAAE1gF,EAAEu1B,GAAGxzB,EAAEuB,EAAEqa,EAAEra,GAAG,EAAEX,GAAGZ,EAAErB,EAAEid,EAAEjd,GAAG,EAAE,GAAGqc,KAAKw2yB,QAAQ,CAAC,IAAIr2yB,EAAE,IAAI6Y,EAAER,EAAEkrE,EAAE99F,EAAEgU,GAAGvU,EAAEiO,IAAI6M,EAAE,CAAC,GAAGH,KAAKy2yB,SAAS,CAAC,IAAIpzzB,EAAE,IAAI21B,EAAER,EAAEkrE,EAAE99F,EAAEgU,GAAGvU,EAAEiO,IAAIjQ,EAAE,CAAC,EAAE2lZ,GAAG5oY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEjmY,GAAG5oY,UAAUwtG,SAAS,WAAW,OAAOo7R,EAAE,EAAE,IAAIP,GAAG,SAAS7nY,IAAIZ,KAAKm/wB,MAAM,KAAKn/wB,KAAK62yB,WAAW,KAAK72yB,KAAKy+T,UAAU,IAAInqU,MAAM,GAAGm6B,KAAK,MAAMzuB,KAAK82yB,iBAAiB,KAAK92yB,KAAKm2yB,2BAA2Bv1yB,EAAEm2yB,UAAU/2yB,KAAKg3yB,YAAY,IAAInza,GAAG,IAAI7+Y,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG6L,KAAKm2yB,2BAA2Bv1yB,EAAEq2yB,iCAAiCjyzB,EAAE6b,GAAGb,KAAKm/wB,MAAM,CAACn6xB,EAAE6b,EAAExb,GAAG2a,KAAK62yB,WAAW,CAAC,IAAI1ua,GAAGnoY,KAAKm/wB,MAAM,GAAGn/wB,KAAKm2yB,4BAA4B,IAAIhua,GAAGnoY,KAAKm/wB,MAAM,GAAGn/wB,KAAKm2yB,4BAA4B,IAAIhua,GAAGnoY,KAAKm/wB,MAAM,GAAGn/wB,KAAKm2yB,4BAA4B,EAAEjta,GAAG,CAAC6ta,UAAU,CAAC9/wB,cAAa,IAAKwxW,GAAGroY,UAAU82yB,aAAa,SAASt2yB,EAAE5b,EAAE6b,GAAGwZ,EAAEovF,IAAIyuqB,QAAQ,8BAA8Bt+vB,EAAEy2vB,iBAAiBrrxB,EAAE,IAAI,MAAM40B,EAAEy2vB,iBAAiBrrxB,EAAE,IAAI,cAAc6b,EAAE,IAAI,KAAK,WAAW+Y,EAAEy2vB,iBAAiBrrxB,EAAE,IAAI,EAAEyjZ,GAAGroY,UAAU0oM,QAAQ,SAASloM,GAA0F,OAAvFZ,KAAKm3yB,WAAWn3yB,KAAKm/wB,MAAM,IAAIn/wB,KAAKm3yB,WAAWn3yB,KAAKm/wB,MAAM,IAAUn/wB,KAAK0iyB,WAAW9hyB,EAAW,EAAE6nY,GAAGroY,UAAUsiyB,WAAW,WAAW,GAAG,IAAIvuyB,UAAUC,OAAO,CAAC,IAAI,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAE,EAAEA,EAAEgb,KAAKg3yB,YAAYjkyB,OAAO/tB,IAAI,CAAC,IAAI6b,EAAEb,KAAKg3yB,YAAYnjzB,IAAI7O,GAAG,IAAIgb,KAAK0iyB,WAAW9hyB,EAAEC,GAAG,OAAOb,KAAK82yB,iBAAiBj2yB,GAAE,CAAE,CAAC,OAAM,CAAE,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAG,OAAO6L,KAAKy+T,UAAU,GAAGz+T,KAAK62yB,WAAW,GAAGl2G,YAAY5mrB,GAAG/Z,KAAKy+T,UAAU,GAAGz+T,KAAK62yB,WAAW,GAAGl2G,YAAY5mrB,GAAG/Z,KAAKy+T,UAAU,GAAGz+T,KAAK62yB,WAAW,GAAGl2G,YAAY5mrB,KAAK0uX,GAAG2ua,YAAYp3yB,KAAKy+T,UAAU7kT,EAAEs2vB,WAAWlwwB,KAAKq3yB,cAAchyzB,EAAE2a,KAAKy+T,UAAU,CAAC,EAAEgqE,GAAGroY,UAAU+2yB,WAAW,SAASv2yB,GAAG,IAAI5b,EAAE,IAAIgkZ,GAAGpoY,GAAGZ,KAAKg3yB,YAAYjoC,OAAO/pxB,EAAEykb,UAAU,EAAEzpa,KAAKm2yB,4BAA4B,EAAE1ta,GAAGroY,UAAUi3yB,cAAc,SAASz2yB,EAAE5b,GAAG,IAAI6b,EAAEsoY,GAAGsja,aAAaznzB,EAAE,GAAGA,EAAE,GAAG4b,GAAGvb,IAAIwb,EAAE7b,EAAE,KAAK40B,EAAEq2vB,UAAU,OAAO5qxB,GAAG2a,KAAKk3yB,aAAat2yB,EAAE5b,EAAE6b,GAAGxb,CAAC,EAAEojZ,GAAGroY,UAAUk3yB,mBAAmB,WAAW,OAAOt3yB,KAAK82yB,gBAAgB,EAAErua,GAAGroY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAExmY,GAAGroY,UAAUwtG,SAAS,WAAW,OAAO66R,EAAE,EAAEA,GAAG2ua,YAAY,SAASx2yB,EAAE5b,GAAG,IAAI,IAAI6b,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAGD,EAAEC,KAAK7b,EAAE,OAAM,EAAG,OAAM,CAAE,EAAEyjZ,GAAGwua,iCAAiC,SAASr2yB,EAAE5b,GAAG,OAAOQ,KAAKkE,IAAI2iZ,GAAG4ia,8BAA8BruyB,GAAGyrY,GAAG4ia,8BAA8BjqzB,GAAG,EAAEyjZ,GAAG3/L,QAAQ,SAASloM,EAAE5b,EAAE6b,EAAExb,GAAG,OAAO,IAAIojZ,GAAG7nY,EAAE5b,EAAEK,GAAGyjN,QAAQjoM,EAAE,EAAEqoY,GAAG6ta,UAAUljzB,IAAI,WAAW,OAAO,IAAI,EAAE/J,OAAO0hC,iBAAiBi9W,GAAGS,IAAI,IAAIV,GAAG,SAAS5nY,EAAE5b,GAAGgb,KAAKu3yB,aAAa,KAAKv3yB,KAAKw3yB,YAAW,EAAGx3yB,KAAKy3yB,YAAY,KAAKz3yB,KAAKu3yB,aAAa32yB,EAAE82yB,eAAe1yzB,GAAGgb,KAAKy3yB,YAAYzyzB,CAAC,EAAEwjZ,GAAGpoY,UAAUu3yB,gBAAgB,SAAS/2yB,EAAE5b,GAAG,GAAG,OAAO4b,EAAE,OAAO,KAAK,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEo6wB,mBAAmBn6wB,IAAI,CAAC,IAAIxb,EAAEub,EAAE45wB,aAAa35wB,GAAGb,KAAKw3yB,YAAYnyzB,EAAEm4N,WAAWx4N,EAAEsO,IAAIjO,EAAE,CAAC,EAAEmjZ,GAAGpoY,UAAU6yqB,QAAQ,WAAW,IAAI,IAAIryqB,EAAE,IAAIijY,GAAG7+Y,EAAEgb,KAAKy3yB,YAAYv1yB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAOkY,KAAK23yB,gBAAgB92yB,EAAED,EAAE,CAAC,OAAO,IAAIA,EAAEmS,OAAO,OAAO/S,KAAKu3yB,aAAav3yB,KAAKu3yB,aAAa9hC,yBAAyB,MAAM,KAAKz1wB,KAAKu3yB,aAAa70B,cAAc9hxB,EAAE,EAAE4nY,GAAGpoY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEzmY,GAAGpoY,UAAUwtG,SAAS,WAAW,OAAO46R,EAAE,EAAEA,GAAGyqS,QAAQ,WAAW,OAAG,IAAI9+qB,UAAUC,OAAkC,IAAIo0Y,GAAxBr0Y,UAAU,IAAoB8+qB,UAAa,IAAI9+qB,UAAUC,OAAiD,IAAIo0Y,GAAGA,GAAGova,WAA7CzjzB,UAAU,GAAKA,UAAU,KAAqC8+qB,UAAa,IAAI9+qB,UAAUC,OAAgE,IAAIo0Y,GAAGA,GAAGova,WAA5DzjzB,UAAU,GAAKA,UAAU,GAAKA,UAAU,KAAuC8+qB,eAA9G,CAAwH,EAAEzqS,GAAGkva,eAAe,SAAS92yB,GAAG,OAAOA,EAAE48M,UAAU,KAAK58M,EAAEsB,WAAWpa,OAAOyyxB,YAAY,EAAE/xY,GAAGova,WAAW,WAAW,GAAG,IAAIzjzB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAGnP,EAAEmP,UAAU,GAAG0M,EAAE,IAAIgjY,GAAG,OAAOhjY,EAAEvN,IAAIsN,GAAGC,EAAEvN,IAAItO,GAAG6b,CAAC,CAAC,GAAG,IAAI1M,UAAUC,OAAO,CAAC,IAAI/O,EAAE8O,UAAU,GAAG4lB,EAAE5lB,UAAU,GAAGwvE,EAAExvE,UAAU,GAAGlR,EAAE,IAAI4gZ,GAAG,OAAO5gZ,EAAEqQ,IAAIjO,GAAGpC,EAAEqQ,IAAIymB,GAAG92B,EAAEqQ,IAAIqwE,GAAG1gF,CAAC,CAAC,EAAE,IAAI6lZ,GAAG,WAAW9oY,KAAK63yB,YAAY,KAAK73yB,KAAKu3yB,aAAa,KAAK,IAAI32yB,EAAEzM,UAAU,GAAG6L,KAAK63yB,YAAYj3yB,EAAE,OAAOZ,KAAK63yB,cAAc73yB,KAAK63yB,YAAY,IAAIh0a,GAAG,EAAE0E,GAAG,CAACuva,sBAAsB,CAAC7gxB,cAAa,IAAK6xW,GAAG1oY,UAAU23yB,mBAAmB,SAASn3yB,GAAG,IAAI,IAAI5b,EAAE,IAAI6+Y,GAAGhjY,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAOiyB,EAAE,KAAKW,EAAEr1B,EAAEu9Y,IAAI7oX,EAAE/Z,KAAKg4yB,UAAU3yzB,GAAGA,aAAa2jJ,KAAKjvH,EAAE10B,GAAGL,EAAEsO,IAAIymB,EAAE,CAAC,OAAO/0B,CAAC,EAAE8jZ,GAAG1oY,UAAU63yB,kBAAkB,SAASr3yB,EAAE5b,EAAE6b,GAAG,IAAI,IAAIxb,EAAE,IAAIw+Y,GAAG9pX,EAAE,EAAEA,EAAE/0B,EAAEg2xB,mBAAmBjhwB,IAAI,CAAC,IAAI4pD,EAAE3+E,EAAEw1xB,aAAazgwB,GAAG4pD,EAAEy3sB,sBAAsBhgY,WAAWx6Y,GAAGvb,EAAEiO,IAAIqwE,GAAG9iE,EAAEvN,IAAIqwE,EAAE,CAAC,OAAO3jE,KAAKu3yB,aAAa70B,cAAcr9xB,EAAE,EAAEyjZ,GAAG1oY,UAAU83yB,eAAe,SAASt3yB,EAAE5b,GAAG,IAAI6b,EAAED,EAAEw6wB,sBAAsB/1xB,EAAEL,EAAEo2xB,sBAAsB,IAAIv6wB,EAAEu6Y,WAAW/1Z,GAAI,OAAOmjZ,GAAGyqS,QAAQryqB,EAAE5b,GAAG,GAAG4b,EAAEo6wB,oBAAoB,GAAGh2xB,EAAEg2xB,oBAAoB,EAAE,OAAOh7wB,KAAKm4yB,YAAYv3yB,EAAE5b,GAAG,IAAI+0B,EAAElZ,EAAE8jN,aAAat/N,GAAG,OAAO2a,KAAKo4yB,+BAA+Bx3yB,EAAE5b,EAAE+0B,EAAE,EAAE+uX,GAAG1oY,UAAUkyY,MAAM,WAAW,GAAG,OAAOtyY,KAAK63yB,YAAY,MAAM,IAAItwyB,MAAM,yCAAyC,GAAGvH,KAAK63yB,YAAYr6lB,UAAU,OAAO,KAAKx9M,KAAKu3yB,aAAav3yB,KAAK63yB,YAAY31yB,WAAWpa,OAAOyyxB,aAAa,IAAI,IAAI35wB,EAAE,IAAIgkY,GAAGkE,GAAGgva,uBAAuB9yzB,EAAEgb,KAAK63yB,YAAY31yB,WAAWld,EAAE02xB,WAAW,CAAC,IAAI76wB,EAAE7b,EAAE8C,OAAO8Y,EAAEuwF,OAAOtwF,EAAEu6wB,sBAAsBv6wB,EAAE,CAACb,KAAK63yB,YAAY,KAAK,IAAIxyzB,EAAEub,EAAEyuxB,YAAY,OAAOrvxB,KAAKg4yB,UAAU3yzB,EAAE,EAAEyjZ,GAAG1oY,UAAUi4yB,YAAY,WAAW,GAAG,IAAIlkzB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAO6L,KAAKq4yB,YAAYz3yB,EAAE,EAAEA,EAAEmS,OAAO,CAAC,GAAG,IAAI5e,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG9O,EAAE8O,UAAU,GAAG,GAAG9O,EAAEwb,GAAG,EAAE,CAAC,IAAIkZ,EAAE+uX,GAAGk1Z,YAAYh5yB,EAAE6b,GAAG,OAAOb,KAAKs4yB,UAAUv+xB,EAAE,KAAK,CAAC,GAAG10B,EAAEwb,GAAG,EAAE,OAAOb,KAAKs4yB,UAAUxva,GAAGk1Z,YAAYh5yB,EAAE6b,GAAGioY,GAAGk1Z,YAAYh5yB,EAAE6b,EAAE,IAAI,IAAI8iE,EAAEn+E,KAAKwpxB,OAAO3pxB,EAAEwb,GAAG,GAAG5d,EAAE+c,KAAKq4yB,YAAYrzzB,EAAE6b,EAAE8iE,GAAG/pE,EAAEoG,KAAKq4yB,YAAYrzzB,EAAE2+E,EAAEt+E,GAAG,OAAO2a,KAAKs4yB,UAAUr1zB,EAAE2W,EAAE,CAAC,EAAEkvY,GAAG1oY,UAAUm4yB,cAAc,SAAS33yB,GAAG,IAAI,IAAI5b,EAAE,KAAK6b,EAAED,EAAEsB,WAAWrB,EAAE66wB,WAAW,CAAC,IAAIr2xB,EAAEwb,EAAE/Y,OAAO9C,EAAE,OAAOA,EAAEK,EAAEisG,OAAOtsG,EAAEstZ,MAAMjtZ,EAAE,CAAC,OAAOL,CAAC,EAAE8jZ,GAAG1oY,UAAUk4yB,UAAU,SAAS13yB,EAAE5b,GAAG,OAAO,OAAO4b,GAAG,OAAO5b,EAAE,KAAK,OAAO4b,EAAE5b,EAAEssG,OAAO,OAAOtsG,EAAE4b,EAAE0wF,OAAOtxF,KAAKk4yB,eAAet3yB,EAAE5b,EAAE,EAAE8jZ,GAAG1oY,UAAU+3yB,YAAY,SAASv3yB,EAAE5b,GAAG,OAAO8jZ,GAAG0va,mBAAmB53yB,EAAE0xY,MAAMttZ,GAAG,EAAE8jZ,GAAG1oY,UAAU43yB,UAAU,SAASp3yB,GAAG,IAAI5b,EAAEgb,KAAK+3yB,mBAAmBn3yB,GAAG,OAAOZ,KAAKq4yB,YAAYrzzB,EAAE,EAAE8jZ,GAAG1oY,UAAUg4yB,+BAA+B,SAASx3yB,EAAE5b,EAAE6b,GAAG,IAAIxb,EAAE,IAAIw+Y,GAAG9pX,EAAE/Z,KAAKi4yB,kBAAkBp3yB,EAAED,EAAEvb,GAAGs+E,EAAE3jE,KAAKi4yB,kBAAkBp3yB,EAAE7b,EAAEK,GAAGpC,EAAE+c,KAAKm4yB,YAAYp+xB,EAAE4pD,GAAY,OAATt+E,EAAEiO,IAAIrQ,GAAUulZ,GAAGyqS,QAAQ5trB,EAAE,EAAEyjZ,GAAG1oY,UAAUq4yB,YAAY,WAAW,GAAG,IAAItkzB,UAAUC,OAAO,CAAC,IAAIwM,EAAEzM,UAAU,GAAG,OAAOyM,EAAE/M,IAAI,GAAG0mxB,aAAamI,cAAc9hxB,GAAGjc,OAAO,EAAE,CAAC,GAAG,IAAIwP,UAAUC,OAAO,CAAC,IAAIpP,EAAEmP,UAAU,GAAG0M,EAAE1M,UAAU,GAAG,OAAOnP,EAAEu1xB,aAAa9E,yBAAyB,CAACzwxB,EAAE6b,IAAIlc,OAAO,EAAE,CAAC,EAAEmkZ,GAAG1oY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEnmY,GAAG1oY,UAAUwtG,SAAS,WAAW,OAAOk7R,EAAE,EAAEA,GAAG0va,mBAAmB,SAAS53yB,GAAG,GAAG8Z,EAAE9Z,EAAEyjY,IAAI,OAAOzjY,EAAE,IAAI5b,EAAE4mZ,GAAG8hZ,YAAY9sxB,GAAG,OAAO,IAAI5b,EAAE+tB,OAAO/tB,EAAE6O,IAAI,GAAG+M,EAAE25wB,aAAa/E,mBAAmBtqqB,GAAG03qB,eAAe59xB,GAAG,EAAE8jZ,GAAGk1Z,YAAY,SAASp9xB,EAAE5b,GAAG,OAAOA,GAAG4b,EAAEmS,OAAO,KAAKnS,EAAE/M,IAAI7O,EAAE,EAAE8jZ,GAAGwJ,MAAM,SAAS1xY,GAAG,OAAO,IAAIkoY,GAAGloY,GAAG0xY,OAAO,EAAE/J,GAAGuva,sBAAsBjkzB,IAAI,WAAW,OAAO,CAAC,EAAE/J,OAAO0hC,iBAAiBs9W,GAAGP,IAAI,IAAIM,GAAG,WAAW,EAAEA,GAAGzoY,UAAU6uwB,YAAY,WAAW,MAAM,EAAE,EAAEpmY,GAAGzoY,UAAUwtG,SAAS,WAAW,OAAOi7R,EAAE,EAAEA,GAAGyJ,MAAM,SAAS1xY,EAAE5b,GAAG,GAAG4b,EAAE48M,WAAWx4N,EAAEw4N,UAAU,CAAC,GAAG58M,EAAE48M,WAAWx4N,EAAEw4N,UAAU,OAAO2rL,GAAGqsa,kBAAkBrsa,GAAGyna,MAAMhwyB,EAAE5b,EAAE4b,EAAE25wB,cAAc,GAAG35wB,EAAE48M,UAAU,OAAOx4N,EAAEssG,OAAO,GAAGtsG,EAAEw4N,UAAU,OAAO58M,EAAE0wF,MAAM,CAAC,OAAO1wF,EAAEy6wB,2BAA2Bz6wB,GAAGA,EAAEy6wB,2BAA2Br2xB,GAAGyiZ,GAAGkpa,UAAU/vyB,EAAE5b,EAAEmkZ,GAAGyna,MAAM,EAAEhwyB,EAAE83yB,cAAc1rc,GAAGpsW,EAAE+3yB,cAAchlpB,GAAG/yJ,EAAEg4yB,UAAUzva,GAAGvoY,EAAEi4yB,QAAQhwa,GAAGjoY,EAAEk4yB,SAAS7yqB,GAAGn8I,OAAOwY,eAAe1B,EAAE,aAAa,CAACjb,OAAM,GAAI,CAA91yUX,CAAEP,E,yBCKtE,IAAIs0zB,EAA2C,WAK3C,SAASA,EAA0BC,GAC/B,IAAI90yB,EAAQlE,UACI,IAAZg5yB,IAAsBA,EAAU,GACpClvzB,OAAO0hC,iBAAiBxrB,KAAM,CAC1Bo9D,WAAY,CACRz3E,MAAO,IAEXszzB,oBAAqB,CACjBtzzB,MAAO,WACHue,EAAMg1yB,aAA0C,YAA7BzwzB,SAASollB,gBAChC,KAGR,IAAK,IAAIxolB,EAAI,EAAGA,EAAI2zzB,EAAS3zzB,IACzB2a,KAAKo9D,WAAWtpE,KAAK,GAE7B,CA2FA,OAvFAilzB,EAA0B34yB,UAAU26D,MAAQ,WAExC,IADA,IAAIi+uB,EAAUh5yB,KAAKo9D,WAAWhpE,OACrB/O,EAAI,EAAGA,EAAI2zzB,EAAS3zzB,IACzB2a,KAAKo9D,WAAW/3E,GAAK,EAE7B,EACA0zzB,EAA0B34yB,UAAU+4yB,eAAiB,WACjD,OAAOn5yB,KAAKo9D,WAAW9yE,OAAO,SAAU0tC,EAAOohxB,GAAkB,OAAOphxB,EAAQohxB,EAAehlzB,MAAQ,EAAG,EAC9G,EAMA2kzB,EAA0B34yB,UAAU84yB,aAAe,SAAUhjZ,GAMzD,IALA,IAAIhyZ,EAAQlE,KACRqiH,EAAU1rH,QAAQC,UAClBi0M,EAAU,SAAUl1M,GACpB0sH,EAAUA,EAAQxrH,KAAK,WAAc,OAAOqN,EAAMm1yB,kBAAkB1jzB,EAAOuga,EAAY,EAC3F,EACSvga,EAAQ,EAAGA,GAASqK,KAAKo9D,WAAWhpE,OAAQuB,IACjDk1M,EAAQl1M,GAEZ,OAAO0sH,CACX,EAKA02rB,EAA0B34yB,UAAUi5yB,kBAAoB,SAAU1jzB,EAAOuga,GACrE,IAAIkjZ,EAAiBp5yB,KAAKo9D,WAAWznE,EAAQ,GAC7C,OAAOgB,QAAQmvC,IAAIszwB,EAAermzB,IAAI,SAAU8gC,GAC5C,IAAIhO,EAAMgO,EAASqiY,GACnB,OAAOrwY,aAAelvB,QAAUkvB,EAAMlvB,QAAQC,QAAQivB,EAC1D,GACJ,EAKAkzxB,EAA0B34yB,UAAUojC,OAAS,WACzC/6C,SAASyP,iBAAiB,mBAAoB8H,KAAKi5yB,oBACvD,EAKAF,EAA0B34yB,UAAU8gE,MAAQ,WACxCz4E,SAAS0P,oBAAoB,mBAAoB6H,KAAKi5yB,oBAC1D,EAOAF,EAA0B34yB,UAAUoukB,mBAAqB,SAAU74kB,EAAOk+B,GACtE,GAAqB,iBAAVl+B,GAAsBA,GAAS,GAAKA,EAAQqK,KAAKo9D,WAAWhpE,OACnE,MAAM,IAAImT,MAAM,kBAAmB5R,GAOvC,OALqBqK,KAAKo9D,WAAWznE,EAAQ,GAC9B7B,KAAK+/B,GACU,IAA1B7zB,KAAKm5yB,kBACLn5yB,KAAKwjC,SAEFxjC,IACX,EAOA+4yB,EAA0B34yB,UAAUqukB,oBAAsB,SAAU94kB,EAAOk+B,GACvE,GAAqB,iBAAVl+B,GAAsBA,GAAS,GAAKA,EAAQqK,KAAKo9D,WAAWhpE,OACnE,MAAM,IAAImT,MAAM,kBAAmB5R,GAEvC,IAAIyjzB,EAAiBp5yB,KAAKo9D,WAAWznE,EAAQ,GACzCa,EAAQ4izB,EAAe7wzB,QAAQsrC,GAOnC,OANe,IAAXr9B,IACA4izB,EAAersxB,OAAOv2B,EAAO,GACC,IAA1BwJ,KAAKm5yB,kBACLn5yB,KAAKkhE,SAGNlhE,IACX,EACO+4yB,CACX,CAjH8C,GAkH9Cr3tB,EAAOj9F,QAAU,IAAIs0zB,EAA0B,E,kBCvH/C,IAAIt5K,EAAW,EAAQ,OAiDvB,SAASz9a,EAAQttH,EAAM79D,GACrB,GAAmB,mBAAR69D,GAAmC,MAAZ79D,GAAuC,mBAAZA,EAC3D,MAAM,IAAIv2B,UAhDQ,uBAkDpB,IAAIwya,EAAW,WACb,IAAIz+a,EAAOF,UACP3J,EAAMqsC,EAAWA,EAAS/1B,MAAMd,KAAM3L,GAAQA,EAAK,GACnDk4B,EAAQumZ,EAASvmZ,MAErB,GAAIA,EAAM54B,IAAInJ,GACZ,OAAO+hC,EAAM14B,IAAIrJ,GAEnB,IAAI2I,EAASuhG,EAAK5zF,MAAMd,KAAM3L,GAE9B,OADAy+a,EAASvmZ,MAAQA,EAAMx4B,IAAIvJ,EAAK2I,IAAWo5B,EACpCp5B,CACT,EAEA,OADA2/a,EAASvmZ,MAAQ,IAAKy1L,EAAQguT,OAASyvH,GAChC3sN,CACT,CAGA9wN,EAAQguT,MAAQyvH,EAEhB/9iB,EAAOj9F,QAAUu9N,C,+BCvEjB,IAAIt4H,EAAI,EAAQ,OACZ4vtB,EAAQ,cACR9/kB,EAAmB,EAAQ,MAE3B82B,EAAO,OACPmkgB,GAAc,EAIdnkgB,IAAQ,IAAIh8P,MAAM,GAAGg8P,GAAM,WAAcmkgB,GAAc,CAAO,GAIlE/qqB,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAAQ4zpB,GAAe,CACvD55vB,KAAM,SAAcqpG,GAClB,OAAOo1sB,EAAMt5yB,KAAMkkG,EAAY/vG,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EACvE,IAIF0iO,EAAiB82B,E,0ICrBjB,IAAIzvP,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,EAAEY,EAAE,CAAC,EAAE3C,EAAE,GAAG2W,EAAE,oEAAoE,SAASvW,EAAEwd,EAAE2X,GAAG,IAAI,IAAIkrE,KAAKlrE,EAAE3X,EAAE6iF,GAAGlrE,EAAEkrE,GAAG,OAAO7iF,CAAC,CAAC,SAASsB,EAAEtB,GAAG,IAAI2X,EAAE3X,EAAE7Y,WAAWwwB,GAAGA,EAAE03E,YAAYrvF,EAAE,CAAC,SAASld,EAAE60B,EAAEkrE,EAAEr+F,GAAG,IAAIub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE,CAAC,EAAE,IAAIiiE,KAAK+f,EAAE,OAAO/f,EAAE/iE,EAAE8iF,EAAE/f,GAAG,OAAOA,EAAE5pD,EAAE2pE,EAAE/f,GAAGjiE,EAAEiiE,GAAG+f,EAAE/f,GAAG,GAAGxvE,UAAUC,OAAO,IAAIsN,EAAE81G,SAASrjH,UAAUC,OAAO,EAAEyM,EAAER,KAAKlM,UAAU,GAAG9O,GAAG,mBAAmBmzB,GAAG,MAAMA,EAAE6gM,aAAa,IAAI11I,KAAKnrD,EAAE6gM,kBAAa,IAAS33M,EAAEiiE,KAAKjiE,EAAEiiE,GAAGnrD,EAAE6gM,aAAa11I,IAAI,OAAOxjE,EAAEqY,EAAE9W,EAAEd,EAAEmZ,EAAE,KAAK,CAAC,SAAS5Z,EAAEU,EAAExb,EAAEub,EAAEmZ,EAAE4pD,GAAG,IAAIjiE,EAAE,CAACsO,KAAKnP,EAAEuxB,MAAM/sC,EAAEmF,IAAIoW,EAAEiyG,IAAI94F,EAAE4lU,IAAI,KAAKn/U,GAAG,KAAKs+U,IAAI,EAAEQ,IAAI,KAAKM,SAAI,EAAOX,IAAI,KAAKI,IAAI,KAAK5+U,iBAAY,EAAO8+U,IAAI,MAAM57Q,IAAI+f,EAAE/f,GAAG,OAAO,MAAMA,GAAG,MAAMnrD,EAAEioU,OAAOjoU,EAAEioU,MAAM/+U,GAAGA,CAAC,CAAC,SAASne,IAAI,MAAM,CAACsS,QAAQ,KAAK,CAAC,SAAS+L,EAAEf,GAAG,OAAOA,EAAE22G,QAAQ,CAA4N,SAAS39G,EAAEgH,EAAE2X,EAAEkrE,GAAG,MAAMlrE,EAAE,GAAG3X,EAAEw+B,YAAY7mB,EAAE,MAAMkrE,EAAE,GAAGA,GAAG7iF,EAAE2X,GAAG,MAAMkrE,EAAE,GAAG,iBAAiBA,GAAG9pF,EAAE1X,KAAKs2B,GAAGkrE,EAAEA,EAAE,IAAI,CAAC,SAAS/hF,EAAEd,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,GAAG,IAAImZ,EAAElZ,EAAE,GAAG,UAAU2X,EAAE,GAAG,iBAAiBkrE,EAAE7iF,EAAE6oB,MAAMsgG,QAAQtmC,MAAM,CAAC,GAAG,iBAAiBr+F,IAAIwb,EAAE6oB,MAAMsgG,QAAQ3kI,EAAE,IAAIA,EAAE,IAAImzB,KAAKnzB,EAAEq+F,GAAGlrE,KAAKkrE,GAAG7pF,EAAEgH,EAAE6oB,MAAMlR,EAAE,IAAI,GAAGkrE,EAAE,IAAIlrE,KAAKkrE,EAAEr+F,GAAGq+F,EAAElrE,KAAKnzB,EAAEmzB,IAAI3e,EAAEgH,EAAE6oB,MAAMlR,EAAEkrE,EAAElrE,GAAG,MAAM,GAAG,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAGuB,EAAEvB,KAAKA,EAAEA,EAAEz0B,QAAQ,WAAW,KAAKy0B,EAAEA,EAAEpwB,gBAAgByY,EAAE2X,EAAEpwB,cAAc0S,MAAM,GAAG0d,EAAE1d,MAAM,GAAG+F,EAAE2X,IAAI3X,EAAE2X,EAAE,CAAC,GAAG3X,EAAE2X,EAAEA,EAAEuB,GAAG2pE,EAAEA,EAAEr+F,GAAGwb,EAAE3I,iBAAiBsgB,EAAEuB,EAAEH,EAAEz2B,EAAE42B,GAAGlZ,EAAE1I,oBAAoBqgB,EAAEuB,EAAEH,EAAEz2B,EAAE42B,QAAQ,GAAG,4BAA4BvB,EAAE,CAAC,GAAG5X,EAAE4X,EAAEA,EAAEz0B,QAAQ,cAAc,KAAKA,QAAQ,SAAS,UAAU,GAAG,UAAUy0B,GAAG,WAAWA,GAAG,SAASA,GAAG,SAASA,GAAG,SAASA,GAAG,aAAaA,GAAG,aAAaA,GAAGA,KAAK3X,EAAE,IAAIA,EAAE2X,GAAG,MAAMkrE,EAAE,GAAGA,EAAE,MAAM7iF,CAAC,CAAC,MAAMA,GAAG,CAAC,mBAAmB6iF,IAAI,MAAMA,IAAG,IAAKA,IAAI,GAAGlrE,EAAEjwB,QAAQ,KAAKsY,EAAE1C,gBAAgBqa,GAAG3X,EAAE5C,aAAaua,EAAEkrE,GAAG,CAAC,CAAC,SAASvgG,EAAE0d,GAAGD,GAAE,EAAG,IAAI,OAAOZ,KAAKwY,EAAE3X,EAAEmP,MAAK,GAAIwI,EAAErM,MAAMqM,EAAErM,MAAMtL,GAAGA,EAAE,CAAC,QAAQD,GAAE,CAAE,CAAC,CAAC,SAASgZ,EAAE/Y,GAAGD,GAAE,EAAG,IAAI,OAAOZ,KAAKwY,EAAE3X,EAAEmP,MAAK,GAAIwI,EAAErM,MAAMqM,EAAErM,MAAMtL,GAAGA,EAAE,CAAC,QAAQD,GAAE,CAAE,CAAC,CAAC,SAASra,EAAEsa,EAAE2X,GAAGxY,KAAKoyB,MAAMvxB,EAAEb,KAAKmpB,QAAQ3Q,CAAC,CAAC,SAASM,EAAEjY,EAAE2X,GAAG,GAAG,MAAMA,EAAE,OAAO3X,EAAEL,GAAGsY,EAAEjY,EAAEL,GAAGK,EAAEL,GAAGm/U,IAAIp3V,QAAQsY,GAAG,GAAG,KAAK,IAAI,IAAI6iF,EAAElrE,EAAE3X,EAAE8+U,IAAIvrV,OAAOokB,IAAI,GAAG,OAAOkrE,EAAE7iF,EAAE8+U,IAAInnU,KAAK,MAAMkrE,EAAE47P,IAAI,OAAO57P,EAAE47P,IAAI,MAAM,mBAAmBz+U,EAAEmP,KAAK8I,EAAEjY,GAAG,IAAI,CAAC,SAASK,EAAEL,GAAG,IAAI2X,EAAEkrE,EAAE,GAAG,OAAO7iF,EAAEA,EAAEL,KAAK,MAAMK,EAAEo+U,IAAI,CAAC,IAAIp+U,EAAEy+U,IAAIz+U,EAAEo+U,IAAI5zS,KAAK,KAAK7yB,EAAE,EAAEA,EAAE3X,EAAE8+U,IAAIvrV,OAAOokB,IAAI,GAAG,OAAOkrE,EAAE7iF,EAAE8+U,IAAInnU,KAAK,MAAMkrE,EAAE47P,IAAI,CAACz+U,EAAEy+U,IAAIz+U,EAAEo+U,IAAI5zS,KAAKq4C,EAAE47P,IAAI,KAAK,CAAC,OAAOp+U,EAAEL,EAAE,CAAC,CAAC,SAASmY,EAAEnY,GAAGD,EAAE6G,WAAW5G,GAAGa,EAAEb,EAAE,CAAC,SAAS6Z,EAAE7Z,KAAKA,EAAE++U,MAAM/+U,EAAE++U,KAAI,IAAK7lU,EAAEjmB,KAAK+M,KAAK6oF,EAAEq1P,OAAOp7Q,IAAInrD,EAAEwqhB,sBAAsBr/d,EAAEnrD,EAAEwqhB,oBAAoBhqhB,GAAG0wE,EAAE,CAAC,SAASA,IAAI,IAAI7oF,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,EAAE+iE,EAAEjiE,EAAE1c,EAAE,IAAI+0B,EAAE3mB,KAAK,SAASyN,EAAE2X,GAAG,OAAO3X,EAAE0+U,IAAIT,IAAItmU,EAAE+mU,IAAIT,GAAG,GAAGj+U,EAAEkZ,EAAEmuB,SAASrnC,EAAE++U,MAAMpnU,EAAEuB,EAAE3lB,OAAO/O,OAAE,EAAOub,OAAE,EAAOc,GAAGiiE,GAAG+f,EAAE7iF,GAAG0+U,KAAKD,KAAKt6V,EAAE0+F,EAAEy7P,OAAO95V,EAAE,IAAIub,EAAEvd,EAAE,CAAC,EAAEsgF,IAAI47Q,IAAI57Q,EAAE47Q,IAAI,EAAE97V,EAAEuB,EAAE2+E,EAAE/iE,EAAE8iF,EAAE61tB,SAAI,IAASv0zB,EAAEyid,gBAAgB,MAAM9jY,EAAE07Q,IAAI,CAAC39U,GAAG,KAAKrc,EAAE,MAAMqc,EAAEoX,EAAE6qD,GAAGjiE,EAAEiiE,EAAE07Q,KAAKtkU,EAAE11B,EAAEs+E,GAAGA,EAAE27Q,KAAK59U,GAAGR,EAAEyiE,IAAI5pD,EAAE3lB,OAAOokB,GAAGuB,EAAE3mB,KAAK,SAASyN,EAAE2X,GAAG,OAAO3X,EAAE0+U,IAAIT,IAAItmU,EAAE+mU,IAAIT,GAAG,IAAIp1P,EAAEq1P,IAAI,CAAC,CAAC,SAAS7jU,EAAEra,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,EAAE4U,GAAG,IAAIvW,EAAE8e,EAAExe,EAAEJ,EAAEkuB,EAAE5X,EAAE8H,EAAExe,EAAEkC,GAAGA,EAAEs6V,KAAK18V,EAAE22B,EAAEz2B,EAAEiR,OAAO,IAAIsvF,EAAEi8P,IAAI,GAAGt8V,EAAE,EAAEA,EAAEm1B,EAAEpkB,OAAO/Q,IAAI,GAAG,OAAOE,EAAEmgG,EAAEi8P,IAAIt8V,GAAG,OAAOE,EAAEi1B,EAAEn1B,KAAK,kBAAkBE,EAAE,KAAK,iBAAiBA,GAAG,iBAAiBA,GAAG,iBAAiBA,EAAE4c,EAAE,KAAK5c,EAAE,KAAK,KAAKA,GAAG+Q,MAAMyb,QAAQxsB,GAAG4c,EAAEyB,EAAE,CAAC41G,SAASj0H,GAAG,KAAK,KAAK,MAAMA,EAAEu7V,IAAI,EAAE3+U,EAAE5c,EAAEysB,KAAKzsB,EAAE6uC,MAAM7uC,EAAEiH,IAAIjH,EAAEsvH,IAAItvH,EAAEsvH,IAAI,KAAKtvH,EAAEg8V,KAAKh8V,GAAG,CAAC,GAAGA,EAAEid,GAAGkjF,EAAEngG,EAAEu7V,IAAIp7P,EAAEo7P,IAAI,EAAE,QAAQn7V,EAAER,EAAEE,KAAKM,GAAGJ,EAAEiH,KAAK7G,EAAE6G,KAAKjH,EAAEysB,OAAOrsB,EAAEqsB,KAAK7sB,EAAEE,QAAG,OAAY,IAAI8e,EAAE,EAAEA,EAAEyX,EAAEzX,IAAI,CAAC,IAAIxe,EAAER,EAAEgf,KAAK5e,EAAEiH,KAAK7G,EAAE6G,KAAKjH,EAAEysB,OAAOrsB,EAAEqsB,KAAK,CAAC7sB,EAAEgf,QAAG,EAAO,KAAK,CAACxe,EAAE,IAAI,CAACF,EAAEod,EAAEtd,EAAEI,EAAEA,GAAGiC,EAAEgb,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,EAAE4U,GAAG6X,EAAEluB,EAAE+7V,KAAKn9U,EAAE5e,EAAEsvH,MAAMlvH,EAAEkvH,KAAK1wG,IAAIR,IAAIA,EAAE,IAAIhe,EAAEkvH,KAAKlxG,EAAE7N,KAAKnQ,EAAEkvH,IAAI,KAAKtvH,GAAGoe,EAAE7N,KAAKqO,EAAE5e,EAAE07V,KAAKxtU,EAAEluB,IAAI,MAAMkuB,GAAG,MAAM5X,IAAIA,EAAE4X,GAAG,mBAAmBluB,EAAEysB,MAAMzsB,EAAEo8V,MAAMh8V,EAAEg8V,IAAIp8V,EAAEq8V,IAAI56V,EAAEm2B,EAAE53B,EAAEyB,EAAE6b,GAAG7b,EAAE88D,EAAEjhD,EAAEtd,EAAEI,EAAER,EAAEsuB,EAAEzsB,GAAG,mBAAmB0+F,EAAE1zE,OAAO0zE,EAAEk8P,IAAI56V,IAAIA,GAAGrB,EAAE27V,KAAKt6V,GAAGA,EAAEgD,YAAY6Y,IAAI7b,EAAE8zB,EAAEn1B,GAAG,CAAC,IAAI+/F,EAAE47P,IAAIzlV,EAAExW,EAAEu2B,EAAEv2B,KAAK,MAAMF,EAAEE,KAAK,mBAAmBqgG,EAAE1zE,MAAM,MAAM7sB,EAAEE,GAAGi8V,KAAKn8V,EAAEE,GAAGi8V,KAAK57P,EAAEk8P,MAAMl8P,EAAEk8P,IAAIj+V,EAAE0D,GAAGqjI,aAAa7+B,EAAE1mG,EAAEE,GAAGF,EAAEE,KAAK,GAAGse,EAAE,IAAIte,EAAE,EAAEA,EAAEse,EAAEvN,OAAO/Q,IAAIs3B,EAAEhZ,EAAEte,GAAGse,IAAIte,GAAGse,IAAIte,GAAG,CAAC,SAAS83B,EAAEta,EAAE2X,EAAEkrE,GAAG,IAAI,IAAIr+F,EAAEub,EAAEC,EAAE8+U,IAAI5lU,EAAE,EAAEnZ,GAAGmZ,EAAEnZ,EAAExM,OAAO2lB,KAAK10B,EAAEub,EAAEmZ,MAAM10B,EAAEmb,GAAGK,EAAE2X,EAAE,mBAAmBnzB,EAAE2qB,KAAKmL,EAAE91B,EAAEmzB,EAAEkrE,GAAG5hC,EAAE4hC,EAAEr+F,EAAEA,EAAEub,EAAEvb,EAAEi6V,IAAI9mU,IAAI,OAAOA,CAAC,CAAC,SAASwN,EAAEnlB,EAAE2X,GAAG,OAAOA,EAAEA,GAAG,GAAG,MAAM3X,GAAG,kBAAkBA,IAAIvM,MAAMyb,QAAQlP,GAAGA,EAAEvO,KAAK,SAASuO,GAAGmlB,EAAEnlB,EAAE2X,EAAE,GAAGA,EAAE1kB,KAAK+M,IAAI2X,CAAC,CAAC,SAASspC,EAAEjhD,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,EAAEmZ,GAAG,IAAI4pD,EAAEjiE,EAAE1c,EAAE,QAAG,IAASwzB,EAAEonU,IAAIj8Q,EAAEnrD,EAAEonU,IAAIpnU,EAAEonU,SAAI,OAAY,GAAG,MAAMl8P,GAAG9iF,GAAGmZ,GAAG,MAAMnZ,EAAE5Y,WAAW6Y,EAAE,GAAG,MAAMkZ,GAAGA,EAAE/xB,aAAa6Y,EAAEA,EAAEsvF,YAAYvvF,GAAG+iE,EAAE,SAAS,CAAC,IAAIjiE,EAAEqY,EAAE/0B,EAAE,GAAG0c,EAAEA,EAAEgnH,cAAc1jI,EAAEK,EAAE+O,OAAOpP,GAAG,EAAE,GAAG0c,GAAGd,EAAE,MAAMC,EAAEA,EAAE8nH,aAAa/nH,EAAEmZ,GAAG4pD,EAAE5pD,CAAC,CAAC,YAAO,IAAS4pD,EAAEA,EAAE/iE,EAAE8nH,WAAW,CAAC,SAAS/mI,EAAEkf,GAAG,IAAI2X,EAAEkrE,EAAEr+F,EAAE,GAAG,MAAMwb,EAAEmP,MAAM,iBAAiBnP,EAAEmP,KAAK,OAAOnP,EAAEy+U,IAAI,GAAGz+U,EAAE8+U,IAAI,IAAInnU,EAAE3X,EAAE8+U,IAAIvrV,OAAO,EAAEokB,GAAG,EAAEA,IAAI,IAAIkrE,EAAE7iF,EAAE8+U,IAAInnU,MAAMnzB,EAAE1D,EAAE+hG,IAAI,OAAOr+F,EAAE,OAAO,IAAI,CAAC,SAAS5B,EAAEod,EAAE6iF,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,EAAEY,GAAG,IAAI3C,EAAE2W,EAAEuI,EAAExe,EAAEwc,EAAE5c,EAAEkuB,EAAE5X,EAAE8H,EAAExe,EAAEy2B,EAAEd,EAAE5X,EAAE8X,EAAE0B,EAAEgvE,EAAEhG,EAAE1zE,KAAK,QAAG,IAAS0zE,EAAEjjF,YAAY,OAAO,KAAK,MAAMpb,EAAEg6V,MAAMz5V,EAAEP,EAAEg6V,IAAIr6V,EAAE0+F,EAAE47P,IAAIj6V,EAAEi6V,IAAI57P,EAAE27P,IAAI,KAAK17Q,EAAE,CAAC3+E,KAAK/B,EAAEu1B,EAAEsmU,MAAM77V,EAAEygG,GAAG,IAAI7iF,EAAE,GAAG,mBAAmB6oF,EAAE,CAAC,GAAG7vF,EAAE6pF,EAAEtxD,MAAMzwB,GAAG1e,EAAEymG,EAAEyvH,cAAcv4M,EAAE3d,EAAEg8V,KAAK97V,EAAEF,EAAE0e,EAAEA,EAAEywB,MAAMzsC,MAAM1C,EAAEud,GAAGI,EAAEvb,EAAE45V,IAAIxtU,GAAG7X,EAAE8pF,EAAEu7P,IAAI55V,EAAE45V,KAAKz+U,GAAG5G,EAAE4/yB,KAAK,cAAc9vtB,GAAGA,EAAEtpF,UAAUi+D,OAAOqlB,EAAEu7P,IAAIrlV,EAAE,IAAI8vF,EAAE7vF,EAAE1W,IAAIugG,EAAEu7P,IAAIrlV,EAAE,IAAIrT,EAAEsT,EAAE1W,GAAGyW,EAAE6G,YAAYipF,EAAE9vF,EAAEykE,OAAOtlD,GAAGpX,GAAGA,EAAE4mE,IAAI3uE,GAAGA,EAAEw4B,MAAMv4B,EAAED,EAAEjK,QAAQiK,EAAEjK,MAAM,CAAC,GAAGiK,EAAEuvB,QAAQhmC,EAAEyW,EAAE2/yB,IAAI34yB,EAAEuB,EAAEvI,EAAEgmV,KAAI,EAAGhmV,EAAEylV,IAAI,GAAGzlV,EAAE6/yB,IAAI,IAAI,MAAM7/yB,EAAE8/yB,MAAM9/yB,EAAE8/yB,IAAI9/yB,EAAEjK,OAAO,MAAM+5F,EAAE8vH,2BAA2B5/M,EAAE8/yB,KAAK9/yB,EAAEjK,QAAQiK,EAAE8/yB,IAAIr2zB,EAAE,CAAC,EAAEuW,EAAE8/yB,MAAMr2zB,EAAEuW,EAAE8/yB,IAAIhwtB,EAAE8vH,yBAAyB3/M,EAAED,EAAE8/yB,OAAO/1zB,EAAEiW,EAAEw4B,MAAMjyB,EAAEvG,EAAEjK,MAAMiK,EAAE2lV,IAAI77P,EAAEvhF,EAAE,MAAMunF,EAAE8vH,0BAA0B,MAAM5/M,EAAEk1b,oBAAoBl1b,EAAEk1b,qBAAqB,MAAMl1b,EAAE84U,mBAAmB94U,EAAEylV,IAAIvrV,KAAK8F,EAAE84U,uBAAuB,CAAC,GAAG,MAAMhpP,EAAE8vH,0BAA0B3/M,IAAIlW,GAAG,MAAMiW,EAAE+0b,2BAA2B/0b,EAAE+0b,0BAA0B90b,EAAE1W,IAAIyW,EAAE0lV,KAAK,MAAM1lV,EAAEw5U,wBAAuB,IAAKx5U,EAAEw5U,sBAAsBv5U,EAAED,EAAE8/yB,IAAIv2zB,IAAIugG,EAAE67P,MAAMl6V,EAAEk6V,IAAI,CAAC,IAAI77P,EAAE67P,MAAMl6V,EAAEk6V,MAAM3lV,EAAEw4B,MAAMv4B,EAAED,EAAEjK,MAAMiK,EAAE8/yB,IAAI9/yB,EAAEgmV,KAAI,GAAIl8P,EAAE47P,IAAIj6V,EAAEi6V,IAAI57P,EAAEi8P,IAAIt6V,EAAEs6V,IAAIj8P,EAAEi8P,IAAI3tV,QAAQ,SAAS6O,GAAGA,IAAIA,EAAEL,GAAGkjF,EAAE,GAAG9pE,EAAE,EAAEA,EAAEhgB,EAAE6/yB,IAAIrlzB,OAAOwlB,IAAIhgB,EAAEylV,IAAIvrV,KAAK8F,EAAE6/yB,IAAI7/xB,IAAIhgB,EAAE6/yB,IAAI,GAAG7/yB,EAAEylV,IAAIjrV,QAAQsN,EAAE5N,KAAK8F,GAAG,MAAMiH,CAAC,CAAC,MAAMjH,EAAEg6b,qBAAqBh6b,EAAEg6b,oBAAoB/5b,EAAED,EAAE8/yB,IAAIv2zB,GAAG,MAAMyW,EAAEy5U,oBAAoBz5U,EAAEylV,IAAIvrV,KAAK,WAAW8F,EAAEy5U,mBAAmB1vV,EAAEwc,EAAE5c,EAAE,EAAE,CAAC,GAAGqW,EAAEuvB,QAAQhmC,EAAEyW,EAAEw4B,MAAMv4B,EAAED,EAAEulV,IAAIt+U,EAAEiY,EAAEN,EAAEumU,IAAI79U,EAAE,EAAE,cAAcwoF,GAAGA,EAAEtpF,UAAUi+D,OAAO,CAAC,IAAIzkE,EAAEjK,MAAMiK,EAAE8/yB,IAAI9/yB,EAAEgmV,KAAI,EAAG9mU,GAAGA,EAAE4qE,GAAGzgG,EAAE2W,EAAEykE,OAAOzkE,EAAEw4B,MAAMx4B,EAAEjK,MAAMiK,EAAEuvB,SAASnQ,EAAE,EAAEA,EAAEpf,EAAE6/yB,IAAIrlzB,OAAO4kB,IAAIpf,EAAEylV,IAAIvrV,KAAK8F,EAAE6/yB,IAAIzgyB,IAAIpf,EAAE6/yB,IAAI,EAAE,MAAM,GAAG7/yB,EAAEgmV,KAAI,EAAG9mU,GAAGA,EAAE4qE,GAAGzgG,EAAE2W,EAAEykE,OAAOzkE,EAAEw4B,MAAMx4B,EAAEjK,MAAMiK,EAAEuvB,SAASvvB,EAAEjK,MAAMiK,EAAE8/yB,UAAU9/yB,EAAEgmV,OAAO1+U,EAAE,IAAItH,EAAEjK,MAAMiK,EAAE8/yB,IAAI,MAAM9/yB,EAAEqmV,kBAAkBr/U,EAAEvd,EAAEA,EAAE,CAAC,EAAEud,GAAGhH,EAAEqmV,oBAAoB99U,GAAG,MAAMvI,EAAE8+W,0BAA0Bn1X,EAAEqW,EAAE8+W,wBAAwB/0X,EAAEwc,IAAIua,EAAE,MAAMz3B,GAAGA,EAAE+sB,OAAOpO,GAAG,MAAM3e,EAAEuH,IAAIvH,EAAEmvC,MAAMolF,SAASv0H,EAAEi4B,EAAEra,EAAEvM,MAAMyb,QAAQ2K,GAAGA,EAAE,CAACA,GAAGgpE,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,EAAEY,GAAGgU,EAAEyxC,KAAKq4C,EAAE47P,IAAI57P,EAAE27P,IAAI,KAAKzlV,EAAEylV,IAAIjrV,QAAQsN,EAAE5N,KAAK8F,GAAG6X,IAAI7X,EAAE4/yB,IAAI5/yB,EAAE4G,GAAG,MAAM5G,EAAE0lV,KAAI,CAAE,MAAM,MAAM37Q,GAAG+f,EAAE67P,MAAMl6V,EAAEk6V,KAAK77P,EAAEi8P,IAAIt6V,EAAEs6V,IAAIj8P,EAAE47P,IAAIj6V,EAAEi6V,KAAK57P,EAAE47P,IAAIxkU,EAAEz1B,EAAEi6V,IAAI57P,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE9b,IAAI3C,EAAEu1B,EAAEwmU,SAAS/7V,EAAEygG,EAAE,CAAC,MAAM7iF,GAAG6iF,EAAE67P,IAAI,MAAM35V,GAAG,MAAM+9E,KAAK+f,EAAE47P,IAAIt6V,EAAE0+F,EAAE27P,MAAMz5V,EAAE+9E,EAAEA,EAAEp7E,QAAQvD,IAAI,MAAMwzB,EAAE8mU,IAAIz+U,EAAE6iF,EAAEr+F,EAAE,CAAC,CAAC,SAAS01B,EAAEla,EAAE6iF,GAAGlrE,EAAEymU,KAAKzmU,EAAEymU,IAAIv7P,EAAE7iF,GAAGA,EAAEvO,KAAK,SAASoxF,GAAG,IAAI7iF,EAAE6iF,EAAE27P,IAAI37P,EAAE27P,IAAI,GAAGx+U,EAAEvO,KAAK,SAASuO,GAAGA,EAAER,KAAKqjF,EAAE,EAAE,CAAC,MAAM7iF,GAAG2X,EAAE8mU,IAAIz+U,EAAE6iF,EAAE67P,IAAI,CAAC,EAAE,CAAC,SAASzkU,EAAEtC,EAAEkrE,EAAEr+F,EAAEub,EAAEmZ,EAAE4pD,EAAEjiE,EAAE1c,GAAG,IAAI/B,EAAE2W,EAAEvW,EAAEM,EAAE0B,EAAE+sC,MAAMjyB,EAAEujF,EAAEtxD,MAAM7uC,EAAEmgG,EAAE1zE,KAAKpO,EAAE,EAAE,GAAG,QAAQre,IAAIw2B,GAAE,GAAI,MAAM4pD,EAAE,KAAK/hE,EAAE+hE,EAAEvvE,OAAOwN,IAAI,IAAI3e,EAAE0gF,EAAE/hE,KAAK,iBAAiB3e,KAAKM,IAAIA,EAAEN,EAAE02zB,YAAYp2zB,EAAE,IAAIN,EAAEwlH,UAAU,CAACjwF,EAAEv1B,EAAE0gF,EAAE/hE,GAAG,KAAK,KAAK,CAAC,GAAG,MAAM4W,EAAE,CAAC,GAAG,OAAOj1B,EAAE,OAAOkF,SAASyhI,eAAe/pH,GAAGqY,EAAEuB,EAAEtxB,SAAS8rc,gBAAgB,6BAA6Bhxc,GAAGkF,SAASskB,cAAcxpB,EAAE4c,EAAE8kH,IAAI9kH,GAAGwjE,EAAE,KAAK3+E,GAAE,CAAE,CAAC,GAAG,OAAOzB,EAAEI,IAAIwc,GAAGnb,GAAGwzB,EAAEziB,OAAOoK,IAAIqY,EAAEziB,KAAKoK,OAAO,CAAC,GAAGwjE,EAAEA,GAAG9iE,EAAER,KAAKmY,EAAE2xG,YAAYvwH,GAAGjW,EAAE0B,EAAE+sC,OAAOxsC,GAAGg0b,wBAAwBv2b,EAAE8c,EAAEy5a,yBAAyB50b,EAAE,CAAC,GAAG,MAAM2+E,EAAE,IAAIhgF,EAAE,CAAC,EAAEie,EAAE,EAAEA,EAAE4W,EAAEvjB,WAAWb,OAAOwN,IAAIje,EAAE60B,EAAEvjB,WAAW2M,GAAGrO,MAAMilB,EAAEvjB,WAAW2M,GAAGjc,OAAOtC,GAAGuW,KAAKvW,IAAIuW,GAAGvW,EAAE8/b,QAAQvpb,EAAEupb,QAAQ9/b,EAAE8/b,SAAS3qa,EAAEoyK,aAAapyK,EAAEoyK,UAAUvnM,GAAGA,EAAE8/b,QAAQ,IAAI,CAAC,GAAt3N,SAAWtib,EAAE2X,EAAEkrE,EAAEr+F,EAAEub,GAAG,IAAImZ,EAAE,IAAIA,KAAK2pE,EAAE,aAAa3pE,GAAG,QAAQA,GAAGA,KAAKvB,GAAG7W,EAAEd,EAAEkZ,EAAE,KAAK2pE,EAAE3pE,GAAG10B,GAAG,IAAI00B,KAAKvB,EAAE5X,GAAG,mBAAmB4X,EAAEuB,IAAI,aAAaA,GAAG,QAAQA,GAAG,UAAUA,GAAG,YAAYA,GAAG2pE,EAAE3pE,KAAKvB,EAAEuB,IAAIpY,EAAEd,EAAEkZ,EAAEvB,EAAEuB,GAAG2pE,EAAE3pE,GAAG10B,EAAE,CAA+pNosB,CAAE+G,EAAErY,EAAExc,EAAEo2B,EAAE/0B,GAAG3B,EAAEqgG,EAAEi8P,IAAI,QAAQ,GAAG/9U,EAAE8hF,EAAEtxD,MAAMolF,SAASt8F,EAAE1C,EAAElkB,MAAMyb,QAAQnO,GAAGA,EAAE,CAACA,GAAG8hF,EAAEr+F,EAAEub,EAAEmZ,GAAG,kBAAkBx2B,EAAEogF,EAAEjiE,EAAEiiE,EAAEA,EAAE,GAAGt+E,EAAEs6V,KAAK7mU,EAAEzzB,EAAE,GAAGL,GAAG,MAAM2+E,EAAE,IAAI/hE,EAAE+hE,EAAEvvE,OAAOwN,KAAK,MAAM+hE,EAAE/hE,IAAIO,EAAEwhE,EAAE/hE,IAAI5c,IAAI,UAAUmb,QAAG,KAAUyB,EAAEzB,EAAExa,SAASic,IAAI4W,EAAE7yB,OAAO,aAAapC,IAAIqe,GAAG,WAAWre,GAAGqe,IAAIje,EAAEgC,QAAQgc,EAAE6W,EAAE,QAAQ5W,EAAEje,EAAEgC,OAAM,GAAI,YAAYwa,QAAG,KAAUyB,EAAEzB,EAAE61S,UAAUp0S,IAAI4W,EAAEw9R,SAASr0S,EAAE6W,EAAE,UAAU5W,EAAEje,EAAEqyT,SAAQ,GAAI,CAAC,OAAOx9R,CAAC,CAAC,SAASmC,EAAE9Z,EAAE6iF,EAAEr+F,GAAG,IAAI,mBAAmBwb,EAAEA,EAAE6iF,GAAG7iF,EAAEhL,QAAQ6tF,CAAC,CAAC,MAAM7iF,GAAG2X,EAAE8mU,IAAIz+U,EAAExb,EAAE,CAAC,CAAC,SAASwkG,EAAEhpF,EAAE6iF,EAAEr+F,GAAG,IAAIub,EAAEmZ,EAAE,GAAGvB,EAAE0mU,SAAS1mU,EAAE0mU,QAAQr+U,IAAID,EAAEC,EAAEgyG,OAAOjyG,EAAE/K,SAAS+K,EAAE/K,UAAUgL,EAAEy+U,KAAK3kU,EAAE/Z,EAAE,KAAK8iF,IAAI,OAAO9iF,EAAEC,EAAEo+U,KAAK,CAAC,GAAGr+U,EAAE2yU,qBAAqB,IAAI3yU,EAAE2yU,sBAAsB,CAAC,MAAM1yU,GAAG2X,EAAE8mU,IAAIz+U,EAAE6iF,EAAE,CAAC9iF,EAAEyqC,KAAKzqC,EAAEu+U,IAAI,KAAKt+U,EAAEo+U,SAAI,CAAM,CAAC,GAAGr+U,EAAEC,EAAE8+U,IAAI,IAAI5lU,EAAE,EAAEA,EAAEnZ,EAAExM,OAAO2lB,IAAInZ,EAAEmZ,IAAI8vE,EAAEjpF,EAAEmZ,GAAG2pE,EAAEr+F,GAAG,mBAAmBwb,EAAEmP,MAAM3qB,GAAG,MAAMwb,EAAEy+U,KAAKn9U,EAAEtB,EAAEy+U,KAAKz+U,EAAEL,GAAGK,EAAEy+U,IAAIz+U,EAAE++U,SAAI,CAAM,CAAC,SAAS7mU,EAAElY,EAAE2X,EAAEkrE,GAAG,OAAO1jF,KAAKS,YAAYI,EAAE6iF,EAAE,CAAC,SAASzqE,EAAEyqE,EAAEr+F,EAAEub,GAAG,IAAImZ,EAAE4pD,EAAEjiE,EAAE8W,EAAEhY,IAAIgY,EAAEhY,GAAGkjF,EAAEr+F,GAAGs+E,GAAG5pD,EAAE,mBAAmBnZ,GAAG,KAAKA,GAAGA,EAAE++U,KAAKt6V,EAAEs6V,IAAIj+U,EAAE,GAAGje,EAAE4B,EAAEq+F,IAAI3pE,GAAGnZ,GAAGvb,GAAGs6V,IAAIh8V,EAAEie,EAAE,KAAK,CAAC8hF,IAAI/f,GAAG/9E,EAAEA,OAAE,IAASP,EAAEoid,iBAAiB1tb,GAAGnZ,EAAE,CAACA,GAAG+iE,EAAE,KAAKt+E,EAAEujI,WAAW/nH,EAAER,KAAKhb,EAAE8kI,YAAY,KAAKzoH,GAAGqY,GAAGnZ,EAAEA,EAAE+iE,EAAEA,EAAE27Q,IAAIj6V,EAAEujI,WAAW7uG,GAAGgB,EAAErZ,EAAEgiF,EAAE,CAAC,SAASxqE,EAAErY,EAAE2X,GAAGS,EAAEpY,EAAE2X,EAAEU,EAAE,CAAC,SAASC,EAAEX,EAAEkrE,EAAEr+F,GAAG,IAAIub,EAAEmZ,EAAE4pD,EAAEjiE,EAAEre,EAAE,CAAC,EAAEm1B,EAAE4Z,OAAO,IAAIuxC,KAAK+f,EAAE,OAAO/f,EAAE/iE,EAAE8iF,EAAE/f,GAAG,OAAOA,EAAE5pD,EAAE2pE,EAAE/f,GAAGjiE,EAAEiiE,GAAG+f,EAAE/f,GAAG,OAAOxvE,UAAUC,OAAO,IAAIsN,EAAE81G,SAASrjH,UAAUC,OAAO,EAAEyM,EAAER,KAAKlM,UAAU,GAAG9O,GAAG8a,EAAEqY,EAAExI,KAAKtO,EAAEd,GAAG4X,EAAEhuB,IAAIuvB,GAAGvB,EAAEq6F,IAAI,KAAK,CAAC,SAAS53F,EAAEpa,EAAE2X,GAAG,IAAIkrE,EAAE,CAACu7P,IAAIzmU,EAAE,OAAOxzB,IAAIwb,GAAGK,EAAEo9U,SAAS,SAASp9U,EAAE2X,GAAG,OAAO3X,EAAE22G,SAASh/F,EAAE,EAAEwlU,SAAS,SAASn9U,GAAG,IAAI6iF,EAAEr+F,EAAE,OAAO2a,KAAKigV,kBAAkBv8P,EAAE,IAAIr+F,EAAE,CAAC,GAAGmzB,GAAGxY,KAAKA,KAAKigV,gBAAgB,WAAW,OAAO56V,CAAC,EAAE2a,KAAKozU,sBAAsB,SAASvyU,GAAGb,KAAKoyB,MAAMzsC,QAAQkb,EAAElb,OAAO+9F,EAAEpxF,KAAK,SAASuO,GAAGA,EAAEy+U,KAAI,EAAG5kU,EAAE7Z,EAAE,EAAE,EAAEb,KAAKuoE,IAAI,SAAS1nE,GAAG6iF,EAAE5vF,KAAK+M,GAAG,IAAI2X,EAAE3X,EAAE0yU,qBAAqB1yU,EAAE0yU,qBAAqB,WAAW7vP,EAAE32D,OAAO22D,EAAEn7F,QAAQsY,GAAG,GAAG2X,GAAGA,EAAEnY,KAAKQ,EAAE,CAAC,GAAGA,EAAE22G,QAAQ,GAAG,OAAO9zB,EAAEs6P,SAASx9U,GAAGkjF,EAAEu6P,SAAS9kI,YAAYz1H,CAAC,CAAC7iF,EAAE5d,EAAE6X,MAAM0d,EAAE,CAAC8mU,IAAI,SAASz+U,EAAE2X,EAAEkrE,EAAEr+F,GAAG,IAAI,IAAIub,EAAEmZ,EAAE4pD,EAAEnrD,EAAEA,EAAEhY,IAAI,IAAII,EAAE4X,EAAEymU,OAAOr+U,EAAEJ,GAAG,IAAI,IAAIuZ,EAAEnZ,EAAEH,cAAc,MAAMsZ,EAAEw/L,2BAA2B34M,EAAElB,SAASqa,EAAEw/L,yBAAyB14M,IAAI8iE,EAAE/iE,EAAEg/U,KAAK,MAAMh/U,EAAE+zb,oBAAoB/zb,EAAE+zb,kBAAkB9zb,EAAExb,GAAG,CAAC,GAAGs+E,EAAE/iE,EAAEg/U,KAAKj8Q,EAAE,OAAO/iE,EAAE44yB,IAAI54yB,CAAC,CAAC,MAAM4X,GAAG3X,EAAE2X,CAAC,CAAC,MAAM3X,CAAC,GAAG6iF,EAAE,EAAEr+F,EAAE,SAASwb,GAAG,OAAO,MAAMA,QAAG,IAASA,EAAEJ,WAAW,EAAEG,GAAE,EAAGra,EAAE6Z,UAAUV,SAAS,SAASmB,EAAE2X,GAAG,IAAIkrE,EAAEA,EAAE,MAAM1jF,KAAK05yB,KAAK15yB,KAAK05yB,MAAM15yB,KAAKrQ,MAAMqQ,KAAK05yB,IAAI15yB,KAAK05yB,IAAIr2zB,EAAE,CAAC,EAAE2c,KAAKrQ,OAAO,mBAAmBkR,IAAIA,EAAEA,EAAExd,EAAE,CAAC,EAAEqgG,GAAG1jF,KAAKoyB,QAAQvxB,GAAGxd,EAAEqgG,EAAE7iF,GAAG,MAAMA,GAAGb,KAAKu/U,MAAM/mU,GAAGxY,KAAKy5yB,IAAI3lzB,KAAK0kB,GAAGkC,EAAE1a,MAAM,EAAEzZ,EAAE6Z,UAAU/J,YAAY,SAASwK,GAAGb,KAAKu/U,MAAMv/U,KAAKs/U,KAAI,EAAGz+U,GAAGb,KAAKq/U,IAAIvrV,KAAK+M,GAAG6Z,EAAE1a,MAAM,EAAEzZ,EAAE6Z,UAAUi+D,OAAOz8D,EAAEmY,EAAE,GAAGrY,EAAE,mBAAmB/K,QAAQA,QAAQyJ,UAAUvJ,KAAK6kD,KAAK/kD,QAAQC,WAAW6Q,WAAWiiF,EAAEq1P,IAAI,EAAE/5V,EAAE,C,+BCC1vU,IAAIq7G,EAAc,EAAQ,OACtB4f,EAAQ,EAAQ,OAChB+lI,EAAa,EAAQ,OACrBlmI,EAAS,EAAQ,OACjBF,EAAc,EAAQ,OACtBg6rB,EAA6B,sBAC7B9ljB,EAAgB,EAAQ,OACxBlI,EAAsB,EAAQ,OAE9BiujB,EAAuBjujB,EAAoBqc,QAC3CstN,EAAmB3pO,EAAoB/3P,IACvC4tF,EAAUlhF,OAEV+B,EAAiBxY,OAAOwY,eACxBgxG,EAAcjT,EAAY,GAAGvlG,OAC7B/W,EAAUs8G,EAAY,GAAGt8G,SACzBma,EAAOmiG,EAAY,GAAGniG,MAEtB47yB,EAAsBl6rB,IAAgBK,EAAM,WAC9C,OAAsF,IAA/E39G,EAAe,WAA0B,EAAG,SAAU,CAAE3c,MAAO,IAAKyO,MAC7E,GAEI2lzB,EAAWx5yB,OAAOA,QAAQrf,MAAM,UAEhCu/nB,EAAc/+hB,EAAOj9F,QAAU,SAAUkB,EAAO4N,EAAM3D,GACf,YAArC0jH,EAAY7xB,EAAQluF,GAAO,EAAG,KAChCA,EAAO,IAAMxP,EAAQ09F,EAAQluF,GAAO,wBAAyB,MAAQ,KAEnE3D,GAAWA,EAAQ8mD,SAAQnjD,EAAO,OAASA,GAC3C3D,GAAWA,EAAQ+iT,SAAQp/S,EAAO,OAASA,KAC1CusH,EAAOn6H,EAAO,SAAYi0zB,GAA8Bj0zB,EAAM4N,OAASA,KACtEqsH,EAAat9G,EAAe3c,EAAO,OAAQ,CAAEA,MAAO4N,EAAM0jC,cAAc,IACvEtxC,EAAM4N,KAAOA,GAEhBumzB,GAAuBlqzB,GAAWkwH,EAAOlwH,EAAS,UAAYjK,EAAMyO,SAAWxE,EAAQiqN,OACzFv3M,EAAe3c,EAAO,SAAU,CAAEA,MAAOiK,EAAQiqN,QAEnD,IACMjqN,GAAWkwH,EAAOlwH,EAAS,gBAAkBA,EAAQ6Q,YACnDm/G,GAAat9G,EAAe3c,EAAO,YAAa,CAAE8lC,UAAU,IAEvD9lC,EAAMya,YAAWza,EAAMya,eAAYtJ,EAChD,CAAE,MAAOmT,GAAqB,CAC9B,IAAIta,EAAQkqzB,EAAqBl0zB,GAG/B,OAFGm6H,EAAOnwH,EAAO,YACjBA,EAAM4hB,OAASrT,EAAK67yB,EAAyB,iBAARxmzB,EAAmBA,EAAO,KACxD5N,CACX,EAIA8lH,SAASrrG,UAAUpZ,SAAWy5nB,EAAY,WACxC,OAAOz6X,EAAWhmP,OAASu1d,EAAiBv1d,MAAMuR,QAAUuiP,EAAc9zP,KAC5E,EAAG,W,yBC5CK,SAAWnf,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wCAAwCC,MAC5C,KAEJC,YAAa,yCAAyCD,MAClD,KAEJE,SAAU,8BAA8BF,MAAM,KAC9CG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,gBAAgBJ,MAAM,KACnCM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN02B,EAAG,WACH8nF,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVz+G,cAAe,oBACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,OAAbD,GAAkC,OAAbA,GAAkC,OAAbA,EACnCC,EACa,OAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAbD,GAAkC,OAAbA,EACrBC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,IAAIo+G,EAAY,IAAPt+G,EAAaC,EACtB,OAAIq+G,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,IAEf,EACAn+G,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdqB,uBAAwB,iBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAngD,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNC,EAAG,KACHC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,SAMf,CAtGyCW,CAAQ,EAAQ,O,+BCN1D,IAEIy1zB,EAFa,EAAQ,OAEO5pyB,SAKhCsxE,EAAOj9F,QAAU0rB,OAAOC,UAAY,SAAkBqxF,GACpD,MAAoB,iBAANA,GAAkBu4sB,EAAev4sB,EACjD,C,+BCTA,IAAI/X,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjC0sB,EAAsB,EAAQ,OAC9B30P,EAAW,EAAQ,KAEnBssH,EAAcjT,EAAY,GAAGvlG,OAC7BnR,EAAMnE,KAAKmE,IACXD,EAAMlE,KAAKkE,IAOfggG,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,QAJrB,GAAGsR,QAA8B,MAApB,KAAKA,QAAQ,IAIa,CACnDA,OAAQ,SAAgB1lH,EAAO2H,GAC7B,IAGI6lzB,EAAWC,EAHX5jmB,EAAOtvN,EAASioO,EAAuBjvN,OACvC+S,EAAOujM,EAAKliN,OACZ+lzB,EAAWx+jB,EAAoBlvP,GAKnC,OAHI0tzB,IAAa50zB,MAAU40zB,EAAW,GAClCA,EAAW,IAAGA,EAAWxwzB,EAAIopB,EAAOonyB,EAAU,KAClDF,OAAuBnjzB,IAAX1C,EAAuB2e,EAAO4oO,EAAoBvnP,KAC7C,GAAK6lzB,IAAc10zB,KAE7B40zB,IADPD,EAASxwzB,EAAIywzB,EAAWF,EAAWlnyB,IADkB,GAEpBugG,EAAYgjG,EAAM6jmB,EAAUD,EAC/D,G,sHCjBEtuzB,EAHc9B,OAAOsW,UAGQxU,eAqCjC,QA3BA,SAAuBjG,EAAOigd,GAC5B,IAAI/7M,GAAQ,OAAQlkQ,GAChBy0zB,GAASvwjB,IAAS,OAAYlkQ,GAC9B2kqB,GAAUzga,IAAUuwjB,IAAS,OAASz0zB,GACtC00zB,GAAUxwjB,IAAUuwjB,IAAU9vJ,IAAU,OAAa3kqB,GACrDo7oB,EAAcl3Y,GAASuwjB,GAAS9vJ,GAAU+vJ,EAC1ClnzB,EAAS4toB,GAAc,OAAUp7oB,EAAMyO,OAAQmM,QAAU,GACzDnM,EAASjB,EAAOiB,OAEpB,IAAK,IAAI5J,KAAO7E,GACTigd,IAAah6c,EAAeyU,KAAK1a,EAAO6E,IACvCu2oB,IAEQ,UAAPv2oB,GAEC8/pB,IAAkB,UAAP9/pB,GAA0B,UAAPA,IAE9B6vzB,IAAkB,UAAP7vzB,GAA0B,cAAPA,GAA8B,cAAPA,KAEtD,OAAQA,EAAK4J,KAElBjB,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,C,2GCzCe,SAAS84X,EAAe7mR,EAAWx1G,GAChD,IAAIxE,EAAMT,EAAOO,EAAOyiY,EAAuBD,EAAiBspP,EAAuBlpP,EAAuBC,GAC9G,OAAa,EAAG55X,WAChB,IAAImtC,GAAO,OAAO8jE,GACd3nB,EAAOn8C,EAAKwpV,iBACZj2X,GAAiB,SACjB65X,GAAwB,OAAm3B,QAAx2BtjY,EAAyjB,QAAjjBT,EAAoe,QAA3dO,EAAsH,QAA7GyiY,EAAwB/9X,aAAyC,EAASA,EAAQ8+X,6BAA6D,IAA1Bf,EAAmCA,EAAwB/9X,SAAyF,QAAtC89X,EAAkB99X,EAAQsuC,cAAwC,IAApBwvV,GAA4F,QAArDspP,EAAwBtpP,EAAgB99X,eAA+C,IAA1BonnB,OAA5J,EAAwMA,EAAsBtoP,6BAA6C,IAAVxjY,EAAmBA,EAAQ2J,EAAe65X,6BAA6C,IAAV/jY,EAAmBA,EAA4D,QAAnDmjY,EAAwBj5X,EAAeqpC,cAA8C,IAA1B4vV,GAAyG,QAA5DC,EAAyBD,EAAsBl+X,eAAgD,IAA3Bm+X,OAA9E,EAA2HA,EAAuBW,6BAA4C,IAATtjY,EAAkBA,EAAO,GAGh7B,KAAMsjY,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIpnI,WAAW,6DAEvB,IAAIgzjB,EAAsB,IAAIzxyB,KAAK,GACnCyxyB,EAAoBhsgB,eAAe7wN,EAAO,EAAG,EAAGixS,GAChD4rb,EAAoB1zjB,YAAY,EAAG,EAAG,EAAG,GACzC,IAAIgwO,GAAkB,OAAe0jV,EAAqB1qzB,GACtD2qzB,EAAsB,IAAI1xyB,KAAK,GACnC0xyB,EAAoBjsgB,eAAe7wN,EAAM,EAAGixS,GAC5C6rb,EAAoB3zjB,YAAY,EAAG,EAAG,EAAG,GACzC,IAAIkwO,GAAkB,OAAeyjV,EAAqB3qzB,GAC1D,OAAI0xC,EAAKmkE,WAAamxX,EAAgBnxX,UAC7BhoB,EAAO,EACLn8C,EAAKmkE,WAAaqxX,EAAgBrxX,UACpChoB,EAEAA,EAAO,CAElB,C,+BChCgG,IAAoFnrE,EAAvKxoB,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,aAAE,EAA+I,IAAIi7H,IAAxDptG,EAAlD,EAAQ,SAA2DA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,IAAkC,QAAE2gB,cAAc,CAAC,GAAGxuC,EAAiB,QAAEi7H,C,kBCA5S,IAAI86rB,EAAe,EAAQ,OACvBC,EAAmB,EAAQ,OAC3B5pO,EAAQ,EAAQ,OAChB3pf,EAAQ,EAAQ,OA4BpBxF,EAAOj9F,QAJP,SAAkBokF,GAChB,OAAOgogB,EAAMhogB,GAAQ2xuB,EAAatztB,EAAMre,IAAS4xuB,EAAiB5xuB,EACpE,C,kBC7BA,IAAIigL,EAAa,EAAQ,OASrBl9P,EAHc9B,OAAOsW,UAGQxU,eAgFjC81F,EAAOj9F,QAjEP,SAAsB6mD,EAAQuV,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GACnE,IAAIsrY,EAtBqB,EAsBTnoL,EACZr3N,EAAWy2N,EAAWx9M,GACtBg1lB,EAAYjumB,EAASj+B,OAIzB,GAAIksoB,GAHWx3Y,EAAWjoM,GACDzsD,SAEMy9a,EAC7B,OAAO,EAGT,IADA,IAAIr7a,EAAQ8poB,EACL9poB,KAAS,CACd,IAAIhM,EAAM6nC,EAAS77B,GACnB,KAAMq7a,EAAYrnb,KAAOq2D,EAAQj1D,EAAeyU,KAAKwgD,EAAOr2D,IAC1D,OAAO,CAEX,CAEA,IAAIkwzB,EAAan0wB,EAAM1yC,IAAIy3C,GACvB87d,EAAa7ge,EAAM1yC,IAAIgtD,GAC3B,GAAI65vB,GAActzS,EAChB,OAAOszS,GAAc75vB,GAASumd,GAAc97d,EAE9C,IAAIn4C,GAAS,EACbozC,EAAMxyC,IAAIu3C,EAAQuV,GAClBta,EAAMxyC,IAAI8sD,EAAOvV,GAGjB,IADA,IAAIi1lB,EAAW1uN,IACNr7a,EAAQ8poB,GAAW,CAE1B,IAAI93S,EAAWl9S,EADf9gD,EAAM6nC,EAAS77B,IAEX8wgB,EAAWzmd,EAAMr2D,GAErB,GAAI4uO,EACF,IAAImuS,EAAW11F,EACXz4M,EAAWkuS,EAAU9+K,EAAUh+V,EAAKq2D,EAAOvV,EAAQ/E,GACnD6yL,EAAWovH,EAAU8+K,EAAU98gB,EAAK8gD,EAAQuV,EAAOta,GAGzD,UAAmBzvC,IAAbywgB,EACG/+K,IAAa8+K,GAAY11F,EAAUppF,EAAU8+K,EAAU59Q,EAAStwB,EAAY7yL,GAC7Eghe,GACD,CACLp0gB,GAAS,EACT,KACF,CACAotoB,IAAaA,EAAkB,eAAP/1oB,EAC1B,CACA,GAAI2I,IAAWotoB,EAAU,CACvB,IAAIC,EAAUl1lB,EAAO7qC,YACjBggoB,EAAU5/kB,EAAMpgD,YAGhB+/nB,GAAWC,KACV,gBAAiBn1lB,MAAU,gBAAiBuV,IACzB,mBAAX2/kB,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDttoB,GAAS,EAEb,CAGA,OAFAozC,EAAc,OAAE+E,GAChB/E,EAAc,OAAEsa,GACT1tD,CACT,C,+BCtFA,IAAIu2F,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,SAAW,CAC3E3lG,KAAM,SAAc37B,GAClB,OAAOqhI,EAAW9uN,KAAM,IAAK,OAAQytF,EACvC,G,+BCTF,IAAIjM,EAAU,EAAQ,OAClB8f,EAAY,EAAQ,OACpByE,EAAoB,EAAQ,OAC5BovX,EAAY,EAAQ,OAGpBqyI,EAFkB,EAAQ,MAEfhmgB,CAAgB,YAE/B9f,EAAOj9F,QAAU,SAAUg9G,GACzB,IAAKsE,EAAkBtE,GAAK,OAAOH,EAAUG,EAAI+lgB,IAC5ClmgB,EAAUG,EAAI,eACd0zX,EAAU3zY,EAAQigB,GACzB,C,+BCZA,IAAIr+F,EAAe,sBACf+iV,EAA+C,sDACnDzkQ,EAAOj9F,QAAU0hW,EAA6C/iV,EAAc,CAAC,U,+HCSzEu3yB,EAAwB,aAAiB,SAAUvvzB,EAAMynH,GAC3D,IAAI9uE,EAAS34C,EAAK24C,OACdiK,EAAW5iD,EAAK4iD,SAChB87D,EAAY1+G,EAAK0+G,UACjBpgF,EAAQt+B,EAAKs+B,MACbkxxB,EAAcxvzB,EAAKwvzB,YACnBpjsB,EAAWpsH,EAAKosH,SAChBplF,GAAQ,OAA8BhnC,EAAM,CAAC,SAAU,WAAY,YAAa,QAAS,cAAe,aAExGu+O,EAAY5lM,GAAUiK,EAAW,OAASiwmB,EAAA,EAC9C,OAAoB,gBAAoB,KAAM,CAC5CpriB,IAAKA,EACLnpF,MAAOA,EACPogF,UAAW,IAAWA,EAAW,YAAa,CAC5C/lE,OAAQA,EACRiK,SAAUA,KAEE,gBAAoB27L,GAAW,OAAS,CACtD7/H,UAAW,YACX97D,SAAUA,GACT5b,GAAQolF,EAAUzzE,GAAU62wB,GAA4B,gBAAoB,OAAQ,CACrF9wsB,UAAW,WACV8wsB,IACL,GACAD,EAASthmB,aA7BU,CACjBt1K,QAAQ,EACRiK,UAAU,EACV4swB,YAAa,aA2BfD,EAAStynB,YAAc,WACvB,UAEA,SAASwynB,EAAatnzB,EAAM+c,EAAczO,GAKxC,SAAS8/f,EAAOh3gB,GACd,IAAI6sH,EAAW7sH,EAAM6sH,SACjBplF,GAAQ,OAA8BznC,EAAO,CAAC,aAElD,OAAoB,gBAAoBgwzB,EAAUvoxB,EAAoB,gBAAoB,OAAQ,CAChG,cAAe,QACdolF,GAAYlnG,GAA4B,gBAAoB,OAAQ,CACrEw5F,UAAW,WACVjoG,GACL,CAGA,YAhBc,IAAVA,IACFA,EAAQtO,GAcVougB,EAAOt5U,YAAc90L,EACdougB,CACT,CAEO,IAAIm5S,EAAQD,EAAa,QAAS,KAC9BE,EAAOF,EAAa,OAAQ,IAAK,YACjCG,EAAWH,EAAa,WAAY,IAAK,QACzCI,EAAOJ,EAAa,OAAQ,KAC5BK,EAAOL,EAAa,OAAQ,KCjDnCM,EAA0B,aAAiB,SAAU/vzB,EAAMynH,GAC7D,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB0N,EAAWpsH,EAAKosH,SAChBzkG,EAAO3nB,EAAK2nB,KACZqf,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,WAAY,SAElF+nH,GAAoB,QAAmBL,EAAU,cACrD,OAAoB,gBAAoB,MAAM,OAAS,CACrDD,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAWqJ,EAAmBpgG,GAAQogG,EAAoB,IAAMpgG,KACpFykG,EACN,GACA2jsB,EAAWL,MAAQA,EACnBK,EAAWJ,KAAOA,EAClBI,EAAWH,SAAWA,EACtBG,EAAWluS,KAAO,EAClBkuS,EAAWF,KAAOA,EAClBE,EAAWD,KAAOA,EAClB,S,+BClCA,IAAIxxtB,EAAI,EAAQ,OACZrpF,EAAO,EAAQ,OACfs/G,EAAU,EAAQ,OAClBy7rB,EAAe,EAAQ,OACvBp1jB,EAAa,EAAQ,OACrBs2R,EAA4B,EAAQ,OACpC7mf,EAAiB,EAAQ,OACzBx1B,EAAiB,EAAQ,OACzBorP,EAAiB,EAAQ,OACzB+zH,EAA8B,EAAQ,OACtCj5H,EAAgB,EAAQ,OACxB3kJ,EAAkB,EAAQ,OAC1B2zX,EAAY,EAAQ,OACpBkmV,EAAgB,EAAQ,OAExB5rK,EAAuB2rK,EAAatwjB,OACpC8ujB,EAA6BwB,EAAarwjB,aAC1CjmB,EAAoBu2kB,EAAcv2kB,kBAClCw2kB,EAAyBD,EAAcC,uBACvC9zM,EAAWhmgB,EAAgB,YAC3B+sS,EAAO,OACPC,EAAS,SACTC,EAAU,UAEVi8N,EAAa,WAAc,OAAO1qmB,IAAM,EAE5C0hF,EAAOj9F,QAAU,SAAU+wZ,EAAUo1N,EAAMD,EAAqB7inB,EAAMyzzB,EAASC,EAAQj7rB,GACrF+7Z,EAA0BquF,EAAqBC,EAAM9inB,GAErD,IAqBI2zzB,EAA0Bn9lB,EAASo9lB,EArBnCC,EAAqB,SAAUC,GACjC,GAAIA,IAASL,GAAWM,EAAiB,OAAOA,EAChD,IAAKP,GAA0BM,GAAQA,KAAQE,EAAmB,OAAOA,EAAkBF,GAE3F,OAAQA,GACN,KAAKrta,EACL,KAAKC,EACL,KAAKC,EAAS,OAAO,WAAqB,OAAO,IAAIk8N,EAAoB3qmB,KAAM47yB,EAAO,EAGxF,OAAO,WAAc,OAAO,IAAIjxM,EAAoB3qmB,KAAO,CAC7D,EAEIwyP,EAAgBo4W,EAAO,YACvBmxM,GAAwB,EACxBD,EAAoBtma,EAASp1Y,UAC7B47yB,EAAiBF,EAAkBt0M,IAClCs0M,EAAkB,eAClBP,GAAWO,EAAkBP,GAC9BM,GAAmBP,GAA0BU,GAAkBL,EAAmBJ,GAClFU,EAA6B,UAATrxM,GAAmBkxM,EAAkB52vB,SAA4B82vB,EA+BzF,GA3BIC,IACFR,EAA2BhmxB,EAAewmxB,EAAkB57yB,KAAK,IAAIm1Y,OACpC1rZ,OAAOsW,WAAaq7yB,EAAyB3zzB,OACvE63H,GAAWlqF,EAAegmxB,KAA8B32kB,IACvD7kO,EACFA,EAAew7yB,EAA0B32kB,GAC/BkhB,EAAWy1jB,EAAyBj0M,KAC9CrhX,EAAcs1jB,EAA0Bj0M,EAAUkD,IAItDr/W,EAAeowjB,EAA0BjpjB,GAAe,GAAM,GAC1D7yI,IAASw1W,EAAU3iO,GAAiBk4W,IAKxC+kC,GAAwB8rK,IAAY/sa,GAAUwta,GAAkBA,EAAezozB,OAASi7Y,KACrF7uR,GAAWi6rB,EACdx6b,EAA4B08b,EAAmB,OAAQtta,IAEvDuta,GAAwB,EACxBF,EAAkB,WAAoB,OAAOx7yB,EAAK27yB,EAAgBh8yB,KAAO,IAKzEu7yB,EAMF,GALAj9lB,EAAU,CACR11L,OAAQ+yxB,EAAmBnta,GAC3BnkZ,KAAMmxzB,EAASK,EAAkBF,EAAmBpta,GACpDrpV,QAASy2vB,EAAmBlta,IAE1BluR,EAAQ,IAAKm7rB,KAAOp9lB,GAClBg9lB,GAA0BS,KAA2BL,KAAOI,KAC9D31jB,EAAc21jB,EAAmBJ,EAAKp9lB,EAAQo9lB,SAE3ChytB,EAAE,CAAE37F,OAAQ68mB,EAAM1llB,OAAO,EAAM27E,OAAQy6sB,GAA0BS,GAAyBz9lB,GASnG,OALM3+F,IAAWY,GAAWu7rB,EAAkBt0M,KAAcq0M,GAC1D11jB,EAAc21jB,EAAmBt0M,EAAUq0M,EAAiB,CAAEtozB,KAAMgozB,IAEtEpmV,EAAUy1I,GAAQixM,EAEXv9lB,CACT,C,yBCpGA58H,EAAOj9F,QAAU,SAAmCg9G,EAAIi4H,EAAUC,GAChE,IAUEkS,EAVEpiI,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UAEzBC,EAAQ,QAAUN,GAAY,IAC9BkS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAGjBr8G,GAAO,QACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,gBAAkB,EAAU,aALb,iBAAZiwH,EAA8B,IAAM,KAKW,IAAM,EAAiB,OAChF,IAAIkS,EAAgBlS,EAChBoB,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,iBAAoBmiI,GAAiB,oBAAsB,oCAA0CnqI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAAyB,EAAiB,OAC5M,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gCAELA,GADc,iBAAZiwH,EACK,OAEA,QAETjwH,GAAO,SAELA,GADEwiI,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdxiI,GAAO,iBAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAK,EAEdxiI,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,kBC3EA,IAAImshB,EAAY,EAAQ,OAcxBl0iB,EAAOj9F,QALP,WACEub,KAAKi4T,SAAW,IAAI29T,EACpB51nB,KAAK+S,KAAO,CACd,C,+BCXAjpB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD,IAAIu2zB,EAAe,EAAQ,OACvBC,EAAW,EAAQ,OACnBC,EAAY,EAAQ,OACpBz6sB,EAAW,EAAQ,OACvB,SAAS06sB,EAAmB1pf,GACxBA,EAAM2pf,cAAcF,EAAUr2S,WAAWc,SAASs1S,EAASI,SAAU5pf,EAAMC,QAAS,IACpFD,EAAM2pf,cAAcF,EAAUr2S,WAAWc,SAASq1S,EAAahle,WAAYvkB,GAAQ,IACnFA,EAAM2pf,cAAcF,EAAUr2S,WAAWc,SAAS,eAAgBl0M,GAAQ,IAC1EA,EAAM2pf,cAAcF,EAAUr2S,WAAWc,SAAS,eAAgBl0M,EAAMxyQ,UAAW,IACnFwyQ,EAAM/7F,WAAW5kO,QAAQ,SAAUrC,GAC/BgjU,EAAM2pf,cAAcF,EAAUr2S,WAAWc,SAAS,UAAWl3gB,GAAQA,EACzE,EACJ,CACAlL,EAAQ+3zB,2BAA6B,SAAUh3jB,GAC3C,OAAOA,EAAkB2tE,SAAS,CAAC,EAAGkpf,EAC1C,EACA,IAAII,EAAoB,CAAC,eAAgBP,EAAahle,YAClDwle,EAAe/6sB,EAAS4zH,QAAQknlB,GAKpCh4zB,EAAQk4zB,mBAAqB,SAAUhqf,GACnC,IAAIxqL,EAAQxmC,EAAS/4E,OAAO+pS,EAAMn8F,eAAelsO,OAAOq3G,EAASi0H,QAAS,IAAItrO,OAAOq3G,EAASi7sB,MAAO,IAEjGC,EAA4B,SAAU9iyB,GACtC,OAAO2iyB,EAAa3iyB,EAAE9V,OAASm4yB,EAAUr2S,WAAWc,SAAS9sf,EAAE9V,MAAO,MAAQ8V,CAClF,EACAouH,EAAMn2I,QAAQ,SAAUjL,GACpBA,EAAKm6V,YAAcn6V,EAAKm6V,YAAYnuV,IAAI8pzB,EAC5C,EACJ,C,YCrBAn7tB,EAAOj9F,QAJP,SAAqBkB,GACnB,OAAOqa,KAAKi4T,SAAStkU,IAAIhO,EAC3B,C,kBCXA,IAAIm3zB,EAAqB,EAAQ,MAC7BC,EAAuB,EAAQ,OAEnCr7tB,EAAOj9F,QAAU,SAAyBoqC,EAAO+pG,EAAInsI,EAAOC,GACxD,OAAIksI,EAAGxkI,OAAS,GAAKE,MAAMyb,QAAQ6oH,EAAG,IAC3BmkrB,EAAqBluxB,EAAO+pG,EAAInsI,EAAOC,GAEvCowzB,EAAmBjuxB,EAAO+pG,EAAInsI,EAAOC,EAEpD,EACAg1F,EAAOj9F,QAAQ2xoB,OAAS2mL,EACxBr7tB,EAAOj9F,QAAQwntB,KAAO6wG,C,+BCVtB,IAAIpztB,EAAI,EAAQ,OACZwgJ,EAA6B,EAAQ,OAKzCxgJ,EAAE,CAAE37F,OAAQ,UAAWs8O,MAAM,EAAMxpI,OAJF,sBAIwC,CACvEz/F,OAAQ,SAAgB2Y,GACtB,IAAIuwN,EAAaJ,EAA2BxoO,EAAE1B,MAG9C,OADAg9yB,EADuB1ykB,EAAWlpO,QACjB2Y,GACVuwN,EAAWjoH,OACpB,G,YCbF,SAASnpG,IAGT,CAEAA,EAAE9Y,UAAY,CACZuqG,GAAI,SAAUp3G,EAAM2b,EAAU4a,GAC5B,IAAI9kC,EAAIgb,KAAKhb,IAAMgb,KAAKhb,EAAI,CAAC,GAO7B,OALCA,EAAEuO,KAAUvO,EAAEuO,GAAQ,KAAKO,KAAK,CAC/BgB,GAAIoa,EACJ4a,IAAKA,IAGA9pB,IACT,EAEAyqG,KAAM,SAAUl3G,EAAM2b,EAAU4a,GAC9B,IAAIw4D,EAAOtiF,KACX,SAAS6zB,IACPyuD,EAAK2qC,IAAI15H,EAAMsgC,GACf3kB,EAASpO,MAAMgpB,EAAK31B,UACtB,CAGA,OADA0/B,EAASjyB,EAAIsN,EACNlP,KAAK2qG,GAAGp3G,EAAMsgC,EAAU/J,EACjC,EAEAjf,KAAM,SAAUtX,GAMd,IALA,IAAIwC,EAAO,GAAG+E,MAAMuF,KAAKlM,UAAW,GAChC8ozB,IAAWj9yB,KAAKhb,IAAMgb,KAAKhb,EAAI,CAAC,IAAIuO,IAAS,IAAIuH,QACjDzV,EAAI,EACJoK,EAAMwtzB,EAAO7ozB,OAET/O,EAAIoK,EAAKpK,IACf43zB,EAAO53zB,GAAGyP,GAAGgM,MAAMm8yB,EAAO53zB,GAAGykC,IAAK/zB,GAGpC,OAAOiK,IACT,EAEAitH,IAAK,SAAU15H,EAAM2b,GACnB,IAAIlqB,EAAIgb,KAAKhb,IAAMgb,KAAKhb,EAAI,CAAC,GACzBk4zB,EAAOl4zB,EAAEuO,GACT4pzB,EAAa,GAEjB,GAAID,GAAQhuyB,EACV,IAAK,IAAI7pB,EAAI,EAAGoK,EAAMytzB,EAAK9ozB,OAAQ/O,EAAIoK,EAAKpK,IACtC63zB,EAAK73zB,GAAGyP,KAAOoa,GAAYguyB,EAAK73zB,GAAGyP,GAAG8M,IAAMsN,GAC9CiuyB,EAAWrpzB,KAAKopzB,EAAK73zB,IAY3B,OAJC83zB,EAAiB,OACdn4zB,EAAEuO,GAAQ4pzB,SACHn4zB,EAAEuO,GAENyM,IACT,GAGF0hF,EAAOj9F,QAAUy0B,C,+BChEjB,IAAIwwE,EAAI,EAAQ,OACZ13F,EAAU,EAAQ,OAKtB03F,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAAQ,GAAG7uG,UAAYA,GAAW,CAClEA,QAASA,G,cCHX,SAAU7K,EAAQ+uI,GAAU,aAE5B,IAAIknrB,EAAkBlnrB,EAAQk5L,SAAS,aAKnCiuf,EAAoB,oCAsBxB,SAASC,EAAoBj2sB,EAAK0pC,GAOhC,IAAK,IAAIvmJ,KANTumJ,EAAMA,GAAO,CAAC,EAEd7a,EAAQlkI,QAAQ++I,EAAK,SAASprJ,EAAO6E,UAC5BumJ,EAAIvmJ,EACb,GAEgB68G,GACVA,EAAIz7G,eAAepB,IAA4B,MAAlBA,EAAIkoB,OAAO,IAAgC,MAAlBloB,EAAIkoB,OAAO,KACnEq+H,EAAIvmJ,GAAO68G,EAAI78G,IAInB,OAAOumJ,CACT,CAkcA7a,EAAQx0C,OAAO,aAAc,CAAC,OAC5B3uD,KAAK,CAAEu+R,eAAgB,UACvB3qM,SAAS,YAAa,WACpB,IAAI42rB,EAA0B,6BAE1B52rB,EAAW3mH,KAmEfA,KAAK6oB,SAAW,CAEd20xB,sBAAsB,EAGtBC,aAAa,EAGbxsH,QAAS,CACP,IAAO,CAAC1spB,OAAQ,OAChB,KAAQ,CAACA,OAAQ,QACjB,MAAS,CAACA,OAAQ,MAAOx0B,SAAS,GAClC,OAAU,CAACw0B,OAAQ,UACnB,OAAU,CAACA,OAAQ,YAIvBvkC,KAAK4jG,KAAO,CAAC,QAAS,OAAQ,KAAM,WAAY,SAAS0pB,EAAOy/I,EAAM5qJ,EAAIsL,GAExE,IAAI79G,EAAOsmH,EAAQtmH,KACf5d,EAAUkkI,EAAQlkI,QAClBgxG,EAASkzB,EAAQlzB,OACjB1R,EAAO4kC,EAAQ5kC,KACfvhF,EAAUmmH,EAAQnmH,QAClBqzF,EAAY8yB,EAAQ9yB,UACpBvwF,EAAaqjH,EAAQrjH,WACrBqB,EAAWgiH,EAAQhiH,SACnBomP,EAAiBpkI,EAAQwnrB,iBACzBnjjB,EAAmBrkI,EAAQynrB,mBAE/B,SAASC,EAAM78lB,EAAUl4L,GACvB7oB,KAAK+gN,SAAWA,EAChB/gN,KAAK6oB,SAAWm6E,EAAO,CAAC,EAAG2jB,EAAS99F,SAAUA,GAC9C7oB,KAAKgtmB,UAAY,CAAC,CACpB,CA6SA,OA3SA4wM,EAAMx9yB,UAAY,CAChBy9yB,aAAc,SAAS9+yB,EAAQohD,EAAQ29vB,GACrC,IAEEn2xB,EACAo2xB,EAHEz7tB,EAAOtiF,KACTytF,EAAMqwtB,GAAax7tB,EAAKy+H,SAGxBi9lB,EAAkB,GAEhBhxM,EAAY1qhB,EAAK0qhB,UAAYljnB,OAAO4W,OAAO,MAC/C1O,EAAQy7F,EAAIvsG,MAAM,MAAO,SAAS80O,GAChC,GAAc,mBAAVA,EACF,MAAMonlB,EAAgB,UAAW,kDAE7B,IAAItrxB,OAAO,UAAU5vC,KAAK8zO,IAAWA,GACxC,IAAIlkM,OAAO,eAAiBkkM,EAAQ,WAAW9zO,KAAKurG,KACrDu/gB,EAAUh3Y,GAAS,CACjBiolB,kBAAmB,IAAKnsxB,OAAO,UAAYkkM,EAAQ,aAAc9zO,KAAKurG,IAG5E,GAEAA,GADAA,EAAMA,EAAI1pG,QAAQ,OAAQ,MAChBA,QAAQw5zB,EAAyB,SAASv5zB,GAElD,OADAg6zB,EAAkBh6zB,EACX,EACT,GAEAm8D,EAASA,GAAU,CAAC,EACpBnuD,EAAQswF,EAAK0qhB,UAAW,SAASkxM,EAAWC,GAC1Cx2xB,EAAMw4B,EAAOv0D,eAAeuyzB,GAAYh+vB,EAAOg+vB,GAAY77tB,EAAKz5D,SAASs1xB,GACrE/6sB,EAAUz7E,IAAgB,OAARA,GAElBo2xB,EADEG,EAAUD,kBACC3jjB,EAAe3yO,GAAK,GAEpB4yO,EAAiB5yO,GAEhC8lE,EAAMA,EAAI1pG,QAAQ,IAAI+tC,OAAO,IAAMqsxB,EAAW,UAAW,KAAM,SAASn6zB,EAAOuhC,GAC7E,OAAOw4xB,EAAax4xB,CACtB,IAEAkoE,EAAMA,EAAI1pG,QAAQ,IAAI+tC,OAAO,QAAUqsxB,EAAW,UAAW,KAAM,SAASn6zB,EACxEo6zB,EAAgB1plB,GAClB,MAAuB,MAAnBA,EAAKhiN,OAAO,GACPgiN,EAEA0plB,EAAiB1plB,CAE5B,EAEJ,GAGIpyI,EAAKz5D,SAAS20xB,uBAChB/vtB,EAAMA,EAAI1pG,QAAQ,OAAQ,KAAO,KAKnC0pG,EAAMA,EAAI1pG,QAAQ,oBAAqB,KAGvCgb,EAAO0uF,IAAMuwtB,EAAkBvwtB,EAAI1pG,QAAQ,eAAgB,MAI3DiO,EAAQmuD,EAAQ,SAASx6D,EAAO6E,GACzB83F,EAAK0qhB,UAAUxinB,KAClBuU,EAAOohD,OAASphD,EAAOohD,QAAU,CAAC,EAClCphD,EAAOohD,OAAO31D,GAAO7E,EAEzB,EACF,GAIF,SAAyB8nG,EAAK4wtB,EAAeptH,EAASrhsB,GACpD,IAAIs7B,EAAQ,IAAI0yxB,EAAMnwtB,EAAK79F,GAe3B,SAAS0uzB,EAA2BjwtB,GAClC,OAAOA,EAASkwtB,QAClB,CAEA,SAASC,EAAS74zB,GAChB23zB,EAAoB33zB,GAAS,CAAC,EAAGqa,KACnC,CAwMA,OA3NAixrB,EAAUjulB,EAAO,CAAC,EAAG2jB,EAAS99F,SAASooqB,QAASA,GAqBhDutH,EAASp+yB,UAAUy9M,OAAS,WAC1B,IAAI9nN,EAAOitG,EAAO,CAAC,EAAGhjG,MAItB,cAHOjK,EAAK0ozB,gBACL1ozB,EAAK2ozB,iBACL3ozB,EAAK4ozB,eACL5ozB,CACT,EAEA/D,EAAQi/rB,EAAS,SAASr9lB,EAAQrgG,GAChC,IAAIqrzB,GAA6B,IAAnBhrtB,EAAOgrtB,UAAwC,IAAnBhrtB,EAAOgrtB,SAAqB,sBAAsB18zB,KAAK0xG,EAAOrvD,QACpGs6wB,EAAiBjrtB,EAAOj2B,QACxB8/uB,EAAcr6sB,EAAUxP,EAAO6ptB,aAC/B7ptB,EAAO6ptB,YAAcvyxB,EAAMrC,SAAS40xB,YAEpCoB,IAAmB3qyB,EAAS2qyB,KAC9B9xiB,EAAKzlQ,MAAM,yQAKJssF,EAAOj2B,QACdkhvB,EAAiB,MAGnBL,EAASjrzB,GAAQ,SAAS0d,EAAI0kU,EAAIoxP,EAAIC,GACpC,IAAiBjxkB,EAAM+8T,EAAWuqD,EAA9Bl9T,EAAS,CAAC,EAEd,OAAQhsD,UAAUC,QAChB,KAAK,EACHipX,EAAU2pN,EACVl0Q,EAAYi0Q,EAEd,KAAK,EACL,KAAK,EACH,IAAIl0jB,EAAW8iU,GAUR,CACLx1R,EAASlvC,EACTlb,EAAO4/U,EACP7iB,EAAYi0Q,EACZ,KACF,CAdE,GAAIl0jB,EAAW5B,GAAK,CAClB6hT,EAAY7hT,EACZosW,EAAU1nC,EACV,KACF,CAEA7iB,EAAY6iB,EACZ0nC,EAAU0pN,EASd,KAAK,EACCl0jB,EAAW5B,GAAK6hT,EAAY7hT,EACvB2tyB,EAAS7ozB,EAAOkb,EACpBkvC,EAASlvC,EACd,MACF,KAAK,EAAG,MACR,QACE,MAAMmsyB,EAAgB,UACpB,+EACAjpzB,UAAUC,QAGhB,IAcI0qzB,EACAC,EACA1wtB,EAhBA2wtB,EAAiBh/yB,gBAAgBw+yB,EACjC74zB,EAAQq5zB,EAAiBjpzB,EAAQ69F,EAAO7jF,QAAU,GAAK,IAAIyuyB,EAASzozB,GACpEkpzB,EAAa,CAAC,EACdC,EAAqBtrtB,EAAOwrH,aAAexrH,EAAOwrH,YAAYwoE,cAAW9wR,EACzEqozB,EAA0BvrtB,EAAOwrH,aAAexrH,EAAOwrH,YAAYyoE,mBACrE/wR,EACEsozB,EAAsBxrtB,EAAOwrH,aAAexrH,EAAOwrH,YAAY/wH,UACjEiwtB,EACEe,EAA2BzrtB,EAAOwrH,aAAexrH,EAAOwrH,YAAY0oE,eACtE3lK,EAAG/gH,OACDk+yB,EAAkBxsf,EAAY,SAASnrS,GACzCmrS,EAAUnrS,EAAK0mE,EAASrH,QAASqH,EAAS8+B,OAAQ9+B,EAAS06L,WAC7D,OAAIjyR,EACAyozB,EAAgBlic,QAAWvmX,EAK/B9E,EAAQ4hG,EAAQ,SAASjuG,EAAO6E,GAC9B,OAAQA,GACN,QACEy0zB,EAAWz0zB,GAAO8mG,EAAK3rG,GAEzB,IAAK,SACL,IAAK,UACL,IAAK,cACL,IAAK,eAGT,IAEKq5zB,GAAkBvB,IACrBqB,EAAkB38rB,EAAGjZ,QACrB+1sB,EAAWthvB,QAAUmhvB,EAAgBz8rB,QAEjCw8rB,IACFE,EAAwBtxrB,EAASqxrB,EAAgBlozB,QAASiozB,KAI1DD,IAASK,EAAWlpzB,KAAOA,GAC/Bm1B,EAAM2yxB,aAAaoB,EACjBj8sB,EAAO,CAAC,EA5Hd,SAAuBjtG,EAAMypzB,GAC3B,IAAI3hzB,EAAM,CAAC,EAOX,OANA2hzB,EAAex8sB,EAAO,CAAC,EAAGq7sB,EAAemB,GACzCxtzB,EAAQwtzB,EAAc,SAAS75zB,EAAO6E,GAChCqoB,EAAWltB,KAAUA,EAAQA,EAAMoQ,IACvC8H,EAAIrT,GAAO7E,GAASA,EAAM+sB,QAA8B,MAApB/sB,EAAM+sB,OAAO,GA/pB7D,SAA0BJ,EAAKu2D,GAC7B,IANF,SAA2BA,GACzB,OAAgB,MAARA,GAAyB,KAATA,GAAwB,mBAATA,GACnCw0uB,EAAkBn7zB,KAAK,IAAM2mF,EACnC,CAGO42uB,CAAkB52uB,GACrB,MAAMu0uB,EAAgB,YAAa,wCAAyCv0uB,GAG9E,IADA,IAAIx+E,EAAOw+E,EAAK3nF,MAAM,KACbmE,EAAI,EAAGqxQ,EAAKrsQ,EAAK+J,OAAQ/O,EAAIqxQ,GAAMxgI,EAAQ9yB,UAAU9wF,GAAMjtB,IAAK,CACvE,IAAImF,EAAMH,EAAKhF,GACfitB,EAAe,OAARA,EAAgBA,EAAI9nB,QAAOsM,CACpC,CACA,OAAOwb,CACT,CAspBcotyB,CAAiB3pzB,EAAMpQ,EAAMwsH,OAAO,IAAMxsH,CAC9C,GACOkY,CACT,CAmHiB8hzB,CAAc5pzB,EAAM69F,EAAOzzC,QAAU,CAAC,GAAIA,GACrDyzC,EAAOnG,KAGT,IAAI40B,EAAUF,EACZvrH,QAAQqozB,GACRpozB,KAAKqozB,GACLrxlB,MAAMsxlB,GACNtozB,KAAKy2H,GAqDP,OAnDAjL,EAAUA,EAAQxrH,KAAK,SAAS+yR,GAC9B,IAAI7zR,EAAO6zR,EAAK7zR,KAEhB,GAAIA,EAAM,CAER,GAAIga,EAAQha,OAAa69F,EAAO7jF,QAC9B,MAAMqtyB,EAAgB,SAClB,0HACoD7pzB,EAAMqgG,EAAO7jF,QAAU,QAAU,SACvFA,EAAQha,GAAQ,QAAU,SAAUkpzB,EAAW16wB,OAAQ06wB,EAAWxxtB,KAEtE,GAAImG,EAAO7jF,QACTpqB,EAAMyO,OAAS,EACfpC,EAAQ+D,EAAM,SAASid,GACD,iBAATA,EACTrtB,EAAMmO,KAAK,IAAI0qzB,EAASxryB,IAKxBrtB,EAAMmO,KAAKkf,EAEf,OACK,CACL,IAAIqvG,EAAU18H,EAAM84zB,SACpBnB,EAAoBvnzB,EAAMpQ,GAC1BA,EAAM84zB,SAAWp8rB,CACnB,CACF,CAIA,OAFAunK,EAAK20hB,SAAW54zB,EAChB0oG,EAAWu7L,EACJw1hB,EAAoBx1hB,EAC7B,EAAG,SAASg2hB,GAGV,OAFAA,EAAoBrB,SAAW54zB,EAC/B0oG,EAAWuxtB,EACJP,EAAyBO,EAClC,IAEAv9rB,EAAUA,EAAiB,QAAE,WAC3B18H,EAAM+4zB,WAAY,GACbM,GAAkBvB,IACrB93zB,EAAMg5zB,eAAiB/uyB,EACvB69G,EAAS9qF,OAAOo8wB,GAChBD,EAAkBC,EAAwBE,EAAWthvB,QAAU,KAEnE,IAGQ9mE,KAAKyozB,EAAiBC,GAEzBP,EAYE38rB,GARL18H,EAAM84zB,SAAWp8rB,EACjB18H,EAAM+4zB,WAAY,EACdjB,IAAa93zB,EAAMg5zB,eAQzB,SAAuBh5zB,GACrB08H,EAAQwrG,MAAMj+M,GACU,OAApBkvyB,GACFA,EAAgBlozB,QAAQjR,EAE5B,GAXSA,EAYX,EAGA64zB,EAASp+yB,UAAU,IAAM7M,GAAQ,SAAS4sD,EAAQowf,EAAStmiB,GACrD4I,EAAWstC,KACbl2C,EAAQsmiB,EAASA,EAAUpwf,EAAQA,EAAS,CAAC,GAE/C,IAAIhtD,EAASqrzB,EAASjrzB,GAAM8M,KAAKL,KAAMmgD,EAAQngD,KAAMuwiB,EAAStmiB,GAC9D,OAAO9W,EAAOsrzB,UAAYtrzB,CAC5B,CACF,GAEOqrzB,CACT,CAGF,EACF,EAGD,CAz4BD,CAy4BGr3zB,OAAQA,OAAO+uI,Q,+BC54BlB,EAAQ,M,YCDR,IAIIgklB,EAAYrxsB,KAAKC,IA+BrB44E,EAAOj9F,QApBP,SAAkBiwG,GAChB,IAAI18D,EAAQ,EACRmirB,EAAa,EAEjB,OAAO,WACL,IAAI9/E,EAAQ6/E,IACRr4qB,EApBO,IAoBiBw4lB,EAAQ8/E,GAGpC,GADAA,EAAa9/E,EACTx4lB,EAAY,GACd,KAAM7J,GAzBI,IA0BR,OAAO7jC,UAAU,QAGnB6jC,EAAQ,EAEV,OAAO08D,EAAK5zF,WAAMhK,EAAW3C,UAC/B,CACF,C,yBCjCAutF,EAAOj9F,QAAU,SAA2Bg9G,EAAIi4H,EAAUC,GACxD,IAAIlwH,EAAM,GACNmwH,GAA8B,IAArBn4H,EAAG6jH,OAAOsU,OACrBimlB,EAAep+sB,EAAG0S,KAAK2rsB,qBAAqBr+sB,EAAG6jH,OAAQ7jH,EAAG0/H,MAAMr7L,IAAK,QACrEq4P,EAAM18L,EAAGnf,KAAKiub,OAAO9ua,EAAG6jH,QAY1B,GAXI7jH,EAAG+/H,QACL/3H,GAAO,mBACHmwH,IACFn4H,EAAG5b,OAAQ,EACX4jB,GAAO,UAETA,GAAO,sFACH00L,IAAQ18L,EAAG1xE,KAAKuxM,YAAc7/H,EAAG1xE,KAAK8xM,eACxCp4H,GAAO,kBAA2B00L,EAA3B,SAGa,kBAAb18L,EAAG6jH,SAAyBu6lB,IAAgBp+sB,EAAG6jH,OAAOU,KAAO,CAClE0T,EAAW,eAAf,IACII,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UAEzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACvB,IAAkB,IAAdr4H,EAAG6jH,OAAkB,CACnB7jH,EAAG+/H,MACLrH,GAAgB,EAEhB1wH,GAAO,QAAU,EAAW,cAE1BqxH,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,6DAAiGhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kBAC9J,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0CAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,mDAAsDhI,EAAa,WAAI,YAAc,EAAU,KAExGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,8EAErC,MACMhI,EAAG+/H,MAEH/3H,GADEmwH,EACK,iBAEA,yCAGTnwH,GAAO,QAAU,EAAW,YAMhC,OAHIhI,EAAG+/H,QACL/3H,GAAO,yBAEFA,CACT,CACA,GAAIhI,EAAG+/H,MAAO,CACZ,IAAIu+kB,EAAOt+sB,EAAG+/H,MACZ1H,EAAOr4H,EAAGz3F,MAAQ,EAClB+vN,EAAWt4H,EAAGu4H,UAAY,EAC1BK,EAAQ,OACV54H,EAAGg0Q,OAASh0Q,EAAG7qG,QAAQopzB,SAASv+sB,EAAGnf,KAAKiub,OAAO9ua,EAAG/4E,KAAK48L,SACvD7jH,EAAGi5H,OAASj5H,EAAGi5H,QAAUj5H,EAAGg0Q,cACrBh0Q,EAAG+/H,MACV//H,EAAGm6H,YAAc,MAAC9kO,GAClB2yG,GAAO,wBACPA,GAAO,wBACPA,GAAO,gDACT,KAAO,CAKL,GAJIqwH,EAAOr4H,EAAGz3F,MAEZqwN,EAAQ,SADRN,EAAWt4H,EAAGu4H,YACgB,IAC5BmkE,IAAK18L,EAAGi5H,OAASj5H,EAAG7qG,QAAQ62F,IAAIgU,EAAGi5H,OAAQyjE,IAC3CvkE,IAAWn4H,EAAG5b,MAAO,MAAM,IAAIt+E,MAAM,+BACzCkiG,GAAO,aAAe,EAAS,YACjC,CACI6wH,EAAS,QAAUR,EACrBK,GAAiB14H,EAAG1xE,KAAKqqM,UAD3B,IAEE6llB,EAAkB,GAClBC,EAAkB,GAEhBC,EAAc1+sB,EAAG6jH,OAAOt1M,KAC1BowyB,EAAe9rzB,MAAMyb,QAAQowyB,GAK/B,GAJIC,GAAsC,GAAtBD,EAAY/rzB,SAC9B+rzB,EAAcA,EAAY,GAC1BC,GAAe,GAEb3+sB,EAAG6jH,OAAOU,MAAQ65lB,EAAc,CAClC,GAA0B,QAAtBp+sB,EAAG1xE,KAAKswxB,WACV,MAAM,IAAI94yB,MAAM,qDAAuDk6F,EAAGy4H,cAAgB,8BAC1D,IAAvBz4H,EAAG1xE,KAAKswxB,aACjBR,GAAe,EACfp+sB,EAAGo5H,OAAOhuN,KAAK,6CAA+C40F,EAAGy4H,cAAgB,KAErF,CAIA,GAHIz4H,EAAG6jH,OAAO2+G,UAAYxiO,EAAG1xE,KAAKk0S,WAChCx6N,GAAO,IAAOhI,EAAG0/H,MAAMr7L,IAAIm+R,SAASz1O,KAAKiT,EAAI,aAE3C0+sB,EAAa,CACf,GAAI1+sB,EAAG1xE,KAAKuwxB,YACV,IAAIC,EAAiB9+sB,EAAG0S,KAAKqssB,cAAc/+sB,EAAG1xE,KAAKuwxB,YAAaH,GAElE,IAAIM,EAAch/sB,EAAG0/H,MAAMyiC,MAAMu8iB,GACjC,GAAII,GAAkBH,IAAgC,IAAhBK,GAAyBA,IAAgBC,EAAgBD,GAAe,CACxG30kB,EAAcrqI,EAAG+5H,WAAa,QAChCvB,EAAiBx4H,EAAGy4H,cAAgB,QAClC4R,EAAcrqI,EAAG+5H,WAAa,QAChCvB,EAAiBx4H,EAAGy4H,cAAgB,QAHtC,IAIEymlB,EAAUP,EAAe,iBAAmB,gBAE9C,GADA32sB,GAAO,QAAWhI,EAAG0S,KAAKwssB,GAASR,EAAa9llB,GAAO,GAAS,OAC5DkmlB,EAAgB,CAClB,IAAIK,EAAY,WAAa9mlB,EAC3B+mlB,EAAW,UAAY/mlB,EACzBrwH,GAAO,QAAU,EAAc,aAAe,EAAU,KAC7B,SAAvBhI,EAAG1xE,KAAKuwxB,cACV72sB,GAAO,QAAU,EAAc,iCAAqC,EAAU,MAAQ,EAAc,gBAEtGA,GAAO,QAAU,EAAa,iBAC9B,IAAIq3sB,EAAkB,GAClB3yd,EAAOoyd,EACX,GAAIpyd,EAGF,IAFA,IAAIqzT,EAAO30a,GAAM,EACf9wK,EAAKoyR,EAAK/5V,OAAS,EACdy4O,EAAK9wK,GACVyllB,EAAQrzT,EAAKthH,GAAM,GACfA,IACFpjI,GAAO,QAAU,EAAa,qBAC9Bq3sB,GAAmB,KAEM,SAAvBr/sB,EAAG1xE,KAAKuwxB,aAAmC,SAAT9+J,IACpC/3iB,GAAO,QAAU,EAAc,kBAAsB,EAAU,mBAAqB,EAAa,MAAQ,EAAU,MAAQ,EAAU,QAAU,EAAc,aAAe,EAAU,SAE3K,UAAT+3iB,EACF/3iB,GAAO,QAAU,EAAc,mBAAuB,EAAc,kBAAsB,EAAa,WAAe,EAAU,cAAgB,EAAU,cAAgB,EAAa,UACrK,UAAT+3iB,GAA8B,WAATA,GAC9B/3iB,GAAO,QAAU,EAAc,oBAAwB,EAAU,iBAAmB,EAAc,mBAAuB,EAAU,OAAS,EAAU,QAAU,EAAU,IAC7J,WAAT+3iB,IACF/3iB,GAAO,SAAW,EAAU,SAE9BA,GAAO,MAAQ,EAAa,OAAS,EAAU,MAC7B,WAAT+3iB,EACT/3iB,GAAO,QAAU,EAAU,mBAAuB,EAAU,aAAe,EAAU,cAAgB,EAAa,sBAAwB,EAAU,kBAAsB,EAAU,WAAa,EAAa,YAC5L,QAAT+3iB,EACT/3iB,GAAO,QAAU,EAAU,cAAkB,EAAU,aAAe,EAAU,eAAiB,EAAa,YAC9E,SAAvBhI,EAAG1xE,KAAKuwxB,aAAmC,SAAT9+J,IAC3C/3iB,GAAO,QAAU,EAAc,mBAAuB,EAAc,mBAAuB,EAAc,oBAAwB,EAAU,aAAe,EAAa,OAAS,EAAU,OAIhMA,GAAO,IAAM,EAAoB,QAAU,EAAa,wBACpDqxH,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,qDAAyFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAE7KxwH,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,QACkB,IAArBhI,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0BAELA,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,cACP,IAAI0jI,EAAcpT,EAAW,QAAWA,EAAW,GAAM,IAAM,aAE/DtwH,GAAO,IAAM,EAAU,MAAQ,EAAa,KACvCswH,IACHtwH,GAAO,OAAS,EAAgB,mBAElCA,GAAO,IAAM,EAAgB,KALLswH,EAAWt4H,EAAGm6H,YAAY7B,GAAY,sBAKH,OAAS,EAAa,MACnF,MACMe,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,qDAAyFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAE7KxwH,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,QACkB,IAArBhI,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0BAELA,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAGrCA,GAAO,KACT,CACF,CACA,GAAIhI,EAAG6jH,OAAOU,OAAS65lB,EACrBp2sB,GAAO,IAAOhI,EAAG0/H,MAAMr7L,IAAIkgL,KAAKx3H,KAAKiT,EAAI,QAAW,IAChD04H,IACF1wH,GAAO,qBAELA,GADEs2sB,EACK,IAEA,QAAU,EAEnBt2sB,GAAO,OACPy2sB,GAAmB,SAEhB,CACL,IAAItmsB,EAAOnY,EAAG0/H,MACd,GAAIvnH,EAGF,IAFA,IAAiB6uiB,GAAM,EACrBzslB,EAAK49C,EAAKxlH,OAAS,EACdq0pB,EAAKzslB,GAEV,GAAI0kvB,EADJD,EAAc7msB,EAAK6uiB,GAAM,IACS,CAIhC,GAHIg4J,EAAYzwyB,OACdy5F,GAAO,QAAWhI,EAAG0S,KAAK4ssB,cAAcN,EAAYzwyB,KAAMqqN,GAAU,QAElE54H,EAAG1xE,KAAKg2nB,cAAgBtkjB,EAAG25H,cAC7B,GAAwB,UAApBqllB,EAAYzwyB,MAAoByxF,EAAG6jH,OAAO5gL,WAAY,CACpDohL,EAAUrkH,EAAG6jH,OAAO5gL,WAAxB,IAEIshnB,EADYl8pB,OAAOO,KAAKy7N,GAE5B,GAAIkgc,EAGF,IAFA,IAAIP,EAAcQ,GAAM,EACtBC,EAAKF,EAAK5xpB,OAAS,EACd6xpB,EAAKC,QAGWpvpB,KADjBsukB,EAAOt/W,EADX2/b,EAAeO,EAAKC,GAAM,KAEjBzjkB,UAEPinB,GAAO,UADHm7V,EAAYvqO,EAAQ54H,EAAG0S,KAAK43H,YAAY05a,IACZ,mBAAqB,EAAc,MACxC,UAAvBhkjB,EAAG1xE,KAAKg2nB,YACVt8iB,GAAO,IAAOhI,EAAGkgI,WAAWyjW,EAAK5if,SAAY,IAE7CinB,GAAO,IAAO9/F,KAAKC,UAAUw7jB,EAAK5if,SAAY,IAEhDinB,GAAO,KAIf,MAAO,GAAwB,SAApBg3sB,EAAYzwyB,MAAmB1b,MAAMyb,QAAQ0xF,EAAG6jH,OAAOpxL,OAAQ,CACxE,IAAIuynB,EAAOhljB,EAAG6jH,OAAOpxL,MACrB,GAAIuynB,EACF,CAAU55a,GAAM,EAEhB,IAFA,IAAIu4V,EACFuhF,EAAKF,EAAKrypB,OAAS,EACdy4O,EAAK85a,GAAI,CAGZ,IAAI/hN,OADe9tc,KADrBsukB,EAAOqhF,EAAK55a,GAAM,IACTrqJ,UAEPinB,GAAO,UADHm7V,EAAYvqO,EAAQ,IAAMwS,EAAK,KACH,mBAAqB,EAAc,MACxC,UAAvBprI,EAAG1xE,KAAKg2nB,YACVt8iB,GAAO,IAAOhI,EAAGkgI,WAAWyjW,EAAK5if,SAAY,IAE7CinB,GAAO,IAAO9/F,KAAKC,UAAUw7jB,EAAK5if,SAAY,IAEhDinB,GAAO,KAEX,CAbsB,CAe1B,CAEF,IA2BQqxH,EA3BJkmlB,EAAOP,EAAY9osB,MACvB,GAAIqpsB,EAGF,IAFA,IAAIz0kB,EAAO00kB,GAAM,EACfC,EAAKF,EAAK5szB,OAAS,EACd6szB,EAAKC,GAEV,GAAIC,EADJ50kB,EAAQy0kB,EAAKC,GAAM,IACQ,CACzB,IAAI/zkB,EAAQX,EAAM/9I,KAAKiT,EAAI8qI,EAAMtJ,QAASw9kB,EAAYzwyB,MAClDk9N,IACFzjI,GAAO,IAAM,EAAU,IACnB0wH,IACF8llB,GAAmB,KAGzB,CAOJ,GAJI9llB,IACF1wH,GAAO,IAAM,EAAoB,IACjCw2sB,EAAkB,IAEhBQ,EAAYzwyB,OACdy5F,GAAO,MACH02sB,GAAeA,IAAgBM,EAAYzwyB,OAASuwyB,GACtD92sB,GAAO,WACHqiI,EAAcrqI,EAAG+5H,WAAa,QAChCvB,EAAiBx4H,EAAGy4H,cAAgB,SAClCY,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,qDAAyFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAE7KxwH,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,QACkB,IAArBhI,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0BAELA,GADE22sB,EACK,GAAMD,EAAYjizB,KAAK,KAEvB,GAAK,EAEdurG,GAAO,MAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MAGP0wH,IACF1wH,GAAO,mBAELA,GADEs2sB,EACK,IAEA,QAAU,EAEnBt2sB,GAAO,OACPy2sB,GAAmB,IAEvB,CAGN,CAqBA,SAASQ,EAAgBD,GAEvB,IADA,IAAI9osB,EAAQ8osB,EAAY9osB,MACftyH,EAAI,EAAGA,EAAIsyH,EAAMvjH,OAAQ/O,IAChC,GAAI87zB,EAAexpsB,EAAMtyH,IAAK,OAAO,CACzC,CAEA,SAAS87zB,EAAe50kB,GACtB,YAAoCz1O,IAA7B2qG,EAAG6jH,OAAOinB,EAAMtJ,UAA2BsJ,EAAM60kB,YAG1D,SAAoC70kB,GAElC,IADA,IAAIsyV,EAAOtyV,EAAM60kB,WACR/7zB,EAAI,EAAGA,EAAIw5kB,EAAKzqkB,OAAQ/O,IAC/B,QAA2ByR,IAAvB2qG,EAAG6jH,OAAOu5W,EAAKx5kB,IAAmB,OAAO,CACjD,CAPwEg8zB,CAA2B90kB,EACnG,CAOA,OAnCIpS,IACF1wH,GAAO,IAAM,EAAoB,KAE/Bs2sB,GACEnmlB,GACFnwH,GAAO,6CACPA,GAAO,+CAEPA,GAAO,+BACPA,GAAO,gCAETA,GAAO,wBAEPA,GAAO,QAAU,EAAW,sBAAwB,EAAS,IAE/DA,EAAMhI,EAAG0S,KAAK4wV,YAAYt7V,GACtBs2sB,IACFt2sB,EAAMhI,EAAG0S,KAAKmtsB,iBAAiB73sB,EAAKmwH,IAkB/BnwH,CACT,C,qCC1bA,IACQ3pG,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAG,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACIiP,EAAe,sBACfy+U,EAAe,sBAIf0/d,EAAWl/tB,WACXi9I,EAAYiilB,EAASjilB,UAAYiilB,EAASjilB,UAAY,EAAQ,MAC9D97N,EAAK,EAAQ,OAAiBg+yB,EAA8Bh+yB,EAAGg+yB,4BAA6BC,EAAgCj+yB,EAAGi+yB,8BAC/HttsB,EAAO,EAAQ,OACfutsB,EAAmB,EAAQ,OAQ3Bn+yB,EAAmC,SAAUS,GAU7C,SAAST,EAAkBU,EAAO09yB,EAASC,EAAY78yB,EAAawD,EAAO3Y,GACvE,IAAIsU,EAAQF,EAAO3D,KAAKL,OAASA,KA+CjC,OA9CApQ,EAAU9F,OAAOC,OAAO,CACpB83zB,QAASC,EAAc/8yB,EAAawD,GAAS,kBAC7Cw5yB,qBA7BiB,EA8BjBC,oBA7BgB,GA8BhBzzzB,UAAWszV,IACXviH,UAAWA,GACZ1vO,GACH9F,OAAO0hC,iBAAiBtnB,EAAO,CAC3B+9yB,kBAAmB,CACft8zB,MAAO,EACP8lC,UAAU,GAEdy2xB,YAAa,CACTv8zB,MAAO,IAEXw8zB,gBAAiB,CACbx8zB,MAAOwuH,EAAKjL,SAEhBk5sB,uBAAwB,CACpBz8zB,MAAOiK,EAAQmyzB,qBACft2xB,UAAU,GAEdq0H,IAAK,CACDn6J,MAAO,KACP8lC,UAAU,GAEd42xB,WAAY,CACR18zB,MAAOiK,EAAQ0vO,aAGvBp7N,EAAMi+yB,gBAAgB9/rB,QAAQxrH,KAAK,SAAU2M,GACzC,IAAI8+yB,EAAU9+yB,EAAG8+yB,QAASC,EAAiB/+yB,EAAG++yB,eAC1CjguB,EAAOp+E,EACXA,EAAMymG,GAAG,eAAgB,SAAS63sB,EAAev4yB,GAE7C,GADAq4E,EAAKmguB,SAAW,KACZx4yB,GAASq4E,EAAK8/tB,uBAAyB,EAGvC,OAFA9/tB,EAAKz3E,KAAK,qBAwK9B,SAAmB4D,EAAWxK,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,GAC/E,IAAI8yzB,EAAkB75yB,KAAKC,MAAQ2F,EAAUwzyB,kBACzCU,EAAa/yzB,EAAQoyzB,oBAAsBU,EAC3CC,EAAa,EACbl7yB,WAAW,WACPrB,EAAQqI,EAAWxK,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,EAC5E,EAAG+yzB,GAGPv8yB,EAAQqI,EAAWxK,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,EAC5E,CAjLoBgzzB,CAAUtguB,EAAMr+E,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,GAGzE0yF,EAAK19B,eAAe,eAAgB49vB,EACxC,GACAp8yB,EAAQlC,EAAOD,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,EACxE,GAAGi+N,MAAM,WAET,GACO3pN,CACX,CAgEA,OA1HAnE,EAAUwD,EAAmBS,GAiE7BT,EAAkBnD,UAAUgG,QAAU,SAAUk8yB,EAASC,GACrDvizB,KAAKmizB,gBAAgBvrzB,QAAQ,CAAE0rzB,QAASA,EAASC,eAAgBA,GACrE,EAMAh/yB,EAAkBnD,UAAUyizB,SAAW,SAAU12yB,GAC7CA,EAAM4puB,QAAU/1uB,KAAKyizB,SACrBzizB,KAAK8/I,IAAIyyE,KAAK5oN,KAAKC,UAAUuC,GACjC,EAKA5I,EAAkBnD,UAAU0K,WAAa,WACrC,GAAiB,OAAb9K,KAAK8/I,KACF9/I,KAAK8/I,IAAImhH,aAAejhQ,KAAKqizB,WAAWS,SACxC9izB,KAAK8/I,IAAImhH,aAAejhQ,KAAKqizB,WAAWU,OAC3C,OAAO,EAEX,IACI/izB,KAAK8/I,IAAIryI,OACb,CACA,MAAOxD,GAEP,CAEA,OADAjK,KAAK6K,KAAK,iBACH,CACX,EAQAtH,EAAkBnD,UAAUo4H,QAAU,SAAUwqrB,EAAWjutB,EAAW7qF,GAClE,OAAiB,OAAblK,KAAK8/I,KACD9/I,KAAK8/I,IAAImhH,aAAejhQ,KAAKqizB,WAAWS,SACrC9izB,KAAK8/I,IAAImhH,aAAejhQ,KAAKqizB,WAAWU,WAGH,iBAAlB/izB,KAAKyizB,SAC7BzizB,KAAK6izB,SAASnnwB,KAAK17C,MACnBA,KAAKkizB,YAAYpuzB,KAAK4nD,KAAK17C,KAAKkizB,cACrB,CACbn4yB,MAAOi5yB,EACPzvzB,KAAMwhG,EACN7qF,QAASA,EACT4D,UAAWjF,KAAKC,MAChBkH,KAAM,QACN60D,QAAS,KAEN,EACX,EACOthE,CACX,CA5HsC,CA4HpCH,GAaF,SAASgD,EAAQqI,EAAWxK,EAAO09yB,EAASC,EAAYU,EAASC,EAAgB3yzB,GAC7E6e,EAAUwzyB,kBAAoBp5yB,KAAKC,MACnC2F,EAAU2zyB,yBACV3zyB,EAAUqxI,IAAM,IAAIlwJ,EAAQ0vO,UAAU1vO,EAAQiyzB,SAC9C,IAAI7hqB,EAAKvxI,EAAUqxI,IACnBE,EAAG9nJ,iBAAiB,QAAS,SAAUiU,GA3JrB,MA4JVA,EAAMqiF,KAIV//E,EAAU5D,KAAK,eAAgB,IAAItD,MAAM,mBAAqB4E,EAAMqiF,KAAO,KAAOriF,EAAMquO,SAHpF/rO,EAAU5D,KAAK,eAIvB,GACAm1I,EAAG9nJ,iBAAiB,UAAW,SAAUk4F,IAyC7C,SAA+B3hF,EAAW4/E,EAAUz+F,GAChD,OAAQy+F,EAASr+E,MACb,IAAK,YACDvB,EAAUg0yB,SAAWp0tB,EAAS0npB,QAC9BtnuB,EAAU2zyB,uBAAyBxyzB,EAAQmyzB,qBAC3CtzyB,EAAUyzyB,YAAYn1xB,OAAO,GAAG/6B,QAAQyc,EAAUo0yB,SAAUp0yB,GAC5DA,EAAU5D,KAAK,aACf,MACJ,IAAK,QACD4D,EAAUqxI,IAAIryI,QACdgB,EAAU5D,KAAK,eAAgB,IAAItD,MAAM8mF,EAAS+B,UAG9D,CArDQ6ytB,CAAsBx0yB,EAAW9E,KAAKyuB,MAAMg4D,EAAQr6F,MAAOnG,EAC/D,GACAowJ,EAAG9nJ,iBAAiB,OAAQ,WACxB,IAAIgrzB,EAAiB,CACjBlzyB,KAAM,UACN/L,MAAOA,EACP4gE,QAAS,GAEbq+uB,EAAez0yB,UAAY,CACvBlb,KAAMouzB,EACNC,WAAYA,EACZrzzB,UAAWqB,EAAQrB,UACnBg0zB,eAAgBA,EAChBD,QAASA,GAETZ,EAAiByB,SACjBD,EAAez0yB,UAAY9N,EAASA,EAAS,CAAC,EAAGuizB,EAAez0yB,WAAY+yyB,GAEvEE,EAAiB0B,aACtBF,EAAez0yB,UAAY9N,EAASA,EAAS,CAAC,EAAGuizB,EAAez0yB,WAAYgzyB,IAEhFzhqB,EAAGuyE,KAAK5oN,KAAKC,UAAUs5yB,GAC3B,EACJ,CAOA,SAASpB,EAAc/8yB,EAAawD,GAChC,MAAuB,SAAhBxD,EAAyB,eAAiBwD,EAAQ,cACnD,eAAiBxD,EAAc,IAAMwD,EAAQ,aACvD,CAgEAm5E,EAAOj9F,QAAU8e,C,yBCnSjBm+E,EAAOj9F,QAAU,SAA8Bg9G,EAAIi4H,EAAUC,GAC3D,IAUEkS,EAVEpiI,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UAEzBC,EAAQ,QAAUN,GAAY,IAC9BkS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAGjBr8G,GAAO,QACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,YALD,YAAZiwH,EAAyB,IAAM,KAKG,IAAM,EAAiB,OACnE,IAAIkS,EAAgBlS,EAChBoB,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,iBAAoBmiI,GAAiB,eAAiB,oCAA0CnqI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAAyB,EAAiB,OACvM,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gCAELA,GADc,YAAZiwH,EACK,OAEA,QAETjwH,GAAO,SAELA,GADEwiI,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdxiI,GAAO,YAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAK,EAEdxiI,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,0KC/DI45sB,EAA6B,aAAiB,SAAUj4zB,EAAMynH,GAChE,IAAIC,EAAW1nH,EAAK0nH,SAChB/uE,EAAS34C,EAAK24C,OACdiK,EAAW5iD,EAAK4iD,SAChB87D,EAAY1+G,EAAK0+G,UACjBoJ,EAAU9nH,EAAK8nH,QACftf,EAASxoG,EAAKwoG,OACd81I,EAAKt+O,EAAKs+O,GACV4rF,EAAWlqU,EAAKkqU,SAChB9qS,EAAUp/B,EAAKo/B,QACf4H,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,SAAU,WAAY,YAAa,UAAW,SAAU,KAAM,WAAY,YAEvI0nH,GAAW,QAAmBA,EAAU,mBACxC,IAAIqoO,GAAc,IAAAj8U,aAAY,SAAUiN,GACtC,GAAI6hC,EAGF,OAFA7hC,EAAMwgH,sBACNxgH,EAAMm3P,kBAIJ94O,GAASA,EAAQre,EACvB,EAAG,CAAC6hC,EAAUxjB,IAOd,OALIwjB,QAA+Bl3C,IAAnBs7B,EAAM6jS,WACpB7jS,EAAM6jS,UAAY,EAClB7jS,EAAM,kBAAmB,GAGP,gBAAoBijS,EAAAv8S,GAAiB,OAAS,CAChE+5F,IAAKA,GACJzgF,EAAO,CAERkjS,UAAU,OAAaA,EAAUljS,EAAM67D,MAEvCy7I,GAAIA,IAAO91I,EAASxhE,EAAM67D,KAAO,IAAM,SAAW,OAClDzjE,QAAS2wT,EACTrxO,UAAW,IAAWA,EAAWgJ,EAAU/uE,GAAU,SAAUiK,GAAY,WAAYklE,GAAWJ,EAAW,IAAMI,EAAStf,GAAUkf,EAAW,aAErJ,GACAuwsB,EAAchqmB,aA5CK,CACjBnmG,aAASp8G,EACTitC,QAAQ,EACRiK,UAAU,GA0CZq1wB,EAAch7nB,YAAc,gBAC5B,UC5CA,IAIIi7nB,EAAyB,aAAiB,SAAUlxxB,EAAOygF,GAC7D,IAYI0wsB,EAZA/2S,GAAmB,QAAgBp6e,EAAO,CAC5C4jS,UAAW,aAETlsN,EAAY0ia,EAAiB1ia,UAC7B05sB,EAAkBh3S,EAAiB15Z,SACnCI,EAAUs5Z,EAAiBt5Z,QAC3BzgE,EAAa+5d,EAAiB/5d,WAC9Bi6d,EAAsBF,EAAiB9iS,GACvCA,OAA6B,IAAxBgjS,EAAiC,MAAQA,EAC9C4O,GAAkB,OAA8B9O,EAAkB,CAAC,YAAa,WAAY,UAAW,aAAc,OAErH15Z,GAAW,QAAmB0wsB,EAAiB,cAUnD,OANED,EADE9wwB,GACiC,IAAfA,EAAsB,aAAe,cAAgBA,EAErD,KAIF,gBAAoBgxwB,EAAA3qyB,GAAa,OAAS,CAC5D+5F,IAAKA,GACJyoa,EAAiB,CAClB5xS,GAAIA,EACJ5/H,UAAW,IAAWA,EAAWgJ,EAAUI,GAAWJ,EAAW,IAAMI,EAASqwsB,GAAqBzwsB,EAAW,IAAMywsB,KAE1H,GACAD,EAAUjqmB,aAjCS,CACjBnmG,aAASp8G,EACT27C,gBAAY37C,GAgCdwszB,EAAUj7nB,YAAc,YACxBi7nB,EAAUr2S,KAAO,EACjB,S,qCC5CA,IACQntgB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAu2H,EAAiB,EAAQ,OACzBk1iB,EAAW,EAAQ,OACnBj1iB,EAAU,EAAQ,OA6DlB0srB,EAAyC,SAAU1/yB,GAOnD,SAAS0/yB,EAAwBtsrB,EAAap3B,EAA6BpwG,GACvE,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMo3H,EAAa,kBAAmBxnI,IAAYoQ,KA8C1E,OA7CAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3BstY,OAAQ,CACJ7rZ,MAAO,KACP8lC,UAAU,GAEd4jlB,QAAS,CACL1pnB,MAAO,KACP8lC,UAAU,GAEdk4xB,cAAe,CACXh+zB,MAAO,IAAIqN,IACXy4B,UAAU,GAEdm4xB,sBAAuB,CACnBj+zB,MAAO,IAAIsmrB,GAEf43I,aAAc,CACVl+zB,MAAO,IAAIqxI,EAAQ,WAEf9yH,EAAM2/yB,aAAarsrB,SAAoC,IAA3BtzH,EAAM2/yB,aAAapgxB,OAC/Cv/B,EAAM4/yB,2BACV,EA1FuB,KA0Fc,IAEzCC,4BAA6B,CACzBlwzB,IAAK,WACD,MAAO,CACHmwzB,YAAahktB,EAA4Br0E,MACzCs4xB,kBAAmBjktB,EAA4BC,OAEvD,KAGR/7F,EAAMymG,GAAG,QAAS,SAAUziG,GACxBA,EAAUyiG,GAAG,UAAW,SAAUva,GAC9BlsF,EAAMkB,KAAKkC,MAAM,aAAc8oF,GAEtB,oBADDA,EAAQpgF,MAER9L,EAAMggzB,6BAA6B9ztB,EAK/C,EACJ,GACAlsF,EAAM4/yB,4BACC5/yB,CACX,CA6GA,OAnKAnE,EAAU2jzB,EAAyB1/yB,GAuDnCla,OAAOwY,eAAeohzB,EAAwBtjzB,UAAW,QAAS,CAK9DvM,IAAK,WACD,OAAOmM,KAAKwxY,MAChB,EACA9lX,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAeohzB,EAAwBtjzB,UAAW,SAAU,CAK/DvM,IAAK,WACD,OAAOmM,KAAKqvmB,OAChB,EACA3jlB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAeohzB,EAAwBtjzB,UAAW,eAAgB,CAKrEvM,IAAK,WACD,OAAOmM,KAAK2jzB,aAChB,EACAj4xB,YAAY,EACZuL,cAAc,IASlBysxB,EAAwBtjzB,UAAU8jzB,6BAA+B,SAAU9ztB,GACvE,IAAIlsF,EAAQlE,KACR0+D,GAAU,EACV10D,EAAQ,KACR2hB,EAAQykE,EAAUA,EAAQzkE,MAAQ,KACjB,iBAAVA,GAEP3hB,EAAQ2hB,EACR3rB,KAAKqvmB,QAAU,MAEO,iBAAV1jlB,GAAsBA,IAIlC3rB,KAAKqvmB,QAAU1jlB,EACf3hB,EAA+B,iBAAhB2hB,EAAM3hB,MACf2hB,EAAM3hB,MACNxkB,KAAKkE,IAAIiiC,EAAMmvL,MAAMyX,KAAM5mM,EAAMmvL,MAAM0X,KAAM7mM,EAAMovL,MAAMwX,KAAM5mM,EAAMovL,MAAMyX,OAEvE,OAAVxoN,GAAkBhK,KAAKgK,QAAUA,IACjChK,KAAKwxY,OAASxnY,EACd00D,GAAU,GAEd1+D,KAAK2jzB,cAAgBvztB,GAAWA,EAAQ+ztB,QAClC/ztB,EAAQ+ztB,QAAQ75zB,OAAO,SAAU4wa,EAAQ5oZ,GAKvC,OAJapO,EAAMy/yB,cAAc9vzB,IAAIye,EAAIgkK,MAAQ,CAAC,GACvCtsK,QAAUsI,EAAItI,QACrB00D,GAAU,GAEPw8V,EAAOnna,IAAIue,EAAIgkK,IAAKhkK,EAC/B,EAAG,IAAItf,KACLgN,KAAK2jzB,cACPjlvB,GACA1+D,KAAK6K,KAAK,WAGd7K,KAAK6jzB,aAAarsrB,SAhMa,KAmM3Bx3H,KAAK6jzB,aAAazrrB,OAClB3wH,WAAW,WAAc,OAAOvD,EAAM4/yB,2BAA6B,EAAG,IAE9E,EAMAJ,EAAwBtjzB,UAAU0jzB,0BAA4B,WAC1D,IAAI5/yB,EAAQlE,KAEZ,OADAA,KAAK6jzB,aAAa9ovB,QACX/6D,KAAK4jzB,sBAAsBrva,OAAO19Y,KAAK,SAAUutzB,GAChDlgzB,EAAMi0H,YACNj0H,EAAMi0H,WAAWK,QA+BjC,SAA2C4rrB,EAAsBC,GAC7D,OAAOv6zB,OAAOC,OAAO,CAAEimB,KAAM,mBAAqBo0yB,EAAsBC,EAC5E,CAjCyCC,CAAkCF,EAAsBlgzB,EAAM6/yB,6BAE/F,GAAGn9tB,QAAQ,WACP1iF,EAAM2/yB,aAAap3zB,OACvB,EACJ,EAOAi3zB,EAAwBtjzB,UAAUk2H,IAAM,SAAU8trB,GAC9CpkzB,KAAK4jzB,sBAAsBttrB,IAAI8trB,EACnC,EACOV,CACX,CArK4C,CAqK1C3srB,GAkBFr1C,EAAOj9F,QAAUi/zB,C,+BCpQjBj/zB,EAAQ89F,YAAa,EAErB,IAAImO,EAAW5mG,OAAOC,QAAU,SAAUgE,GAAU,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAAE,IAAIksB,EAASpd,UAAU9O,GAAI,IAAK,IAAImF,KAAO+mB,EAAcznB,OAAOsW,UAAUxU,eAAeyU,KAAKkR,EAAQ/mB,KAAQuD,EAAOvD,GAAO+mB,EAAO/mB,GAAU,CAAE,OAAOuD,CAAQ,EAI3Pw2zB,EAAkBpssB,EAFD,EAAQ,OAMzBqssB,EAAYrssB,EAFD,EAAQ,QAMnBsssB,EAActssB,EAFD,EAAQ,QAIzB,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CAI9F,IAAIoyyB,EAAM,WACR,SAASA,EAAIC,IAHf,SAAyBtvzB,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAIpJwnG,CAAgB9nG,KAAM0kzB,GAItB1kzB,KAAK4kzB,UAAW,EAChB5kzB,KAAK6kzB,UAAW,EAChB7kzB,KAAK8kzB,WAAa,IAAIL,EAAYjiuB,QAAQmiuB,GAAY,IACxD,CAuIA,OArIAD,EAAItkzB,UAAUwqU,QAAU,SAAiBztU,EAAQo3K,EAAMwwoB,GACrD/kzB,KAAK8kzB,WAAW3nzB,OAASqnzB,EAAUhiuB,QAAQ6lI,QAAQlrN,GACnD6C,KAAK8kzB,WAAWvwoB,MAAQA,EACxBv0K,KAAK8kzB,WAAWC,SAAWA,EAC3B/kzB,KAAK6kzB,UAAW,CAClB,EAEAH,EAAItkzB,UAAUuwU,YAAc,SAAqBjqV,EAAOE,GACtDoZ,KAAK8kzB,WAAWp+zB,MAAQA,EACxBsZ,KAAK8kzB,WAAWl+zB,OAASA,EACzBoZ,KAAK4kzB,UAAW,CAClB,EAEAF,EAAItkzB,UAAU6sU,uBAAyB,SAAgCppN,EAAMmhsB,GAC3EhlzB,KAAK2oU,MAAQ9kN,EACb7jH,KAAKilzB,qBAAuBD,CAC9B,EAEAN,EAAItkzB,UAAU6xU,WAAa,WACzB,OAAOjyU,KAAK4kzB,UAAY5kzB,KAAK6kzB,QAC/B,EAEAH,EAAItkzB,UAAUoyU,QAAU,WACtB,OAAOxyU,KAAK4kzB,QACd,EAKAF,EAAItkzB,UAAU8kzB,wBAA0B,SAAiCC,GACvE,OAAOnlzB,KAAK8kzB,WAAWM,cAAcZ,EAAUhiuB,QAAQ6lI,QAAQ88lB,GACjE,EAQAT,EAAItkzB,UAAUilzB,qBAAuB,SAA8BF,GACjE,GAAInlzB,KAAKilzB,qBAAsB,CAC7B,IAAIt9e,EAAS,IAAI3nU,KAAK2oU,MAAMl/G,OAAO07lB,EAASxjrB,IAAKwjrB,EAAS57lB,KAC1D,OAAOvpN,KAAKilzB,qBAAqBI,qBAAqB19e,EACxD,CACA,OAAO3nU,KAAKklzB,wBAAwBC,EACtC,EAKAT,EAAItkzB,UAAUklzB,2BAA6B,SAAoCH,GAC7E,GAAInlzB,KAAKilzB,qBAAsB,CAC7B,IAAIt9e,EAAS,IAAI3nU,KAAK2oU,MAAMl/G,OAAO07lB,EAASxjrB,IAAKwjrB,EAAS57lB,KAC1D,OAAOvpN,KAAKilzB,qBAAqBK,2BAA2B39e,EAC9D,CAEA,IAAItuS,EAAKr5B,KAAKklzB,wBAAwBC,GAMtC,OALA9rxB,EAAG9yC,GAAKyZ,KAAK8kzB,WAAWS,UAAY//zB,KAAK+F,MAAM8tC,EAAG9yC,EAAIyZ,KAAK8kzB,WAAWS,WAEtElsxB,EAAG9yC,GAAKyZ,KAAK8kzB,WAAWp+zB,MAAQ,EAChC2yC,EAAG11C,GAAKqc,KAAK8kzB,WAAWl+zB,OAAS,EAE1ByyC,CACT,EAKAqrxB,EAAItkzB,UAAUstU,2BAA6B,SAAoC83e,GAC7E,GAAIxlzB,KAAKilzB,qBAAsB,CAC7B,IAAIt9e,EAAS3nU,KAAKilzB,qBAAqBv3e,2BAA2B83e,GAClE,MAAO,CAAE7jrB,IAAKgmM,EAAOhmM,MAAO4nF,IAAKo+G,EAAOp+G,MAC1C,CAEA,IAAIk8lB,EAAO/0tB,EAAS,CAAC,EAAG80tB,GACxBC,EAAKl/zB,GAAKyZ,KAAK8kzB,WAAWp+zB,MAAQ,EAClC++zB,EAAK9h0B,GAAKqc,KAAK8kzB,WAAWl+zB,OAAS,EACnC,IAAI8+zB,EAAQ1lzB,KAAK8kzB,WAAWa,cAAcpB,EAAgB/huB,QAAQ6lI,QAAQo9lB,IAG1E,OADAC,EAAMn8lB,KAAO,IAAM/jO,KAAK+F,MAAMm6zB,EAAMn8lB,IAAM,KACnCm8lB,CACT,EAEAhB,EAAItkzB,UAAU+nU,SAAW,WACvB,OAAOnoU,KAAK8kzB,WAAWp+zB,KACzB,EAEAg+zB,EAAItkzB,UAAUgoU,UAAY,WACxB,OAAOpoU,KAAK8kzB,WAAWl+zB,MACzB,EAEA89zB,EAAItkzB,UAAU4tU,QAAU,WACtB,OAAOhuU,KAAK8kzB,WAAWvwoB,IACzB,EAEAmwoB,EAAItkzB,UAAU4oU,UAAY,WAGxB,OAFYhpU,KAAK8kzB,WAAWa,cAAc,CAAEp/zB,EAAG,EAAG5C,EAAG,GAGvD,EAEA+g0B,EAAItkzB,UAAU2oG,UAAY,SAAmB3hD,EAASw+vB,GACpD,IAAIC,EAAOz+vB,GAAWA,EAAQ,IAAM,EAChC0+vB,EAAO1+vB,GAAWA,EAAQ,IAAM,EAChC2+vB,EAAO3+vB,GAAWA,EAAQ,IAAM,EAChC4+vB,EAAO5+vB,GAAWA,EAAQ,IAAM,EAEpC,GAAIpnD,KAAKmoU,WAAa29e,EAAOE,EAAO,GAAKhmzB,KAAKooU,YAAcy9e,EAAOE,EAAO,EAAG,CAC3E,IAAIE,EAAgBjmzB,KAAK8kzB,WAAWa,cAAcpB,EAAgB/huB,QAAQ6lI,QAAQ,CAChF9hO,EAAGy/zB,EAAOhmzB,KAAKmoU,WAAa,EAC5BxkV,EAAGki0B,EAAO7lzB,KAAKooU,YAAc,KAE3B89e,EAAoBlmzB,KAAK8kzB,WAAWa,cAAcpB,EAAgB/huB,QAAQ6lI,QAAQ,CACpF9hO,EAAGyZ,KAAKmoU,WAAa,EAAI29e,EACzBni0B,EAAGqc,KAAKooU,YAAc,EAAI29e,KAGxB3hxB,EAAM,CAAC6hxB,EAActkrB,IAAKskrB,EAAc18lB,IAC5C28lB,EAAkBvkrB,IAAKukrB,EAAkB38lB,IACzC28lB,EAAkBvkrB,IAAKskrB,EAAc18lB,IACrC08lB,EAActkrB,IAAKukrB,EAAkB38lB,KAOrC,OALIq8lB,IACFxhxB,EAAMA,EAAIrxC,IAAI,SAAUgnB,GACtB,OAAOv0B,KAAK+F,MAAMwuB,EAAI6ryB,GAAeA,CACvC,IAEKxhxB,CACT,CAEA,MAAO,CAAC,EAAG,EAAG,EAAG,EACnB,EAEOsgxB,CACT,CAjJU,GAmJVjg0B,EAAA,QAAkBig0B,C,+BCxKlB,IAAIh7tB,EAAI,EAAQ,OACZy8tB,EAAY,EAAQ,MACpBlmsB,EAAQ,EAAQ,OAGhBmmsB,EAAkB9xzB,MAAM6xzB,UAa5Bz8tB,EAAE,CAAE37F,OAAQ,QAASs8O,MAAM,EAAMxpI,QAXDultB,GAAmBnmsB,EAAM,WACvD,IAAIg6E,EAAU,EAKd,OAJAmsnB,EAAgB/lzB,KAAK,WAEnB,OADA45L,IACO,EACT,EAAG,CAAE7lM,OAAQ,IACM,IAAZ6lM,CACT,IAIqE,CACnEksnB,UAAWA,G,yBCVL,SAAWtl0B,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,4EAA4EF,MACxE,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNC,EAAG,YACHC,GAAI,cACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERM,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA5DyCC,CAAQ,EAAQ,O,+DCiB1D,QAbA,SAAyB+mD,EAAQ9gD,EAAK7E,GACzB,aAAP6E,GAAsB,KACxB,OAAe8gD,EAAQ9gD,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAS7E,EACT,UAAY,IAGd2lD,EAAO9gD,GAAO7E,CAElB,C,kBCtBA,IAAIszO,EAAY,EAAQ,OACpBhpN,EAAW,EAAQ,OA0BvByxE,EAAOj9F,QAVP,SAAS4h0B,EAAoB79d,EAAUm/T,EAAUn9pB,EAAK8gD,EAAQ/5B,EAAQg1B,GAOpE,OANIt2B,EAASu4U,IAAav4U,EAAS03oB,KAEjCphnB,EAAMxyC,IAAI4zpB,EAAUn/T,GACpBvvH,EAAUuvH,EAAUm/T,OAAU7wpB,EAAWuvzB,EAAqB9/wB,GAC9DA,EAAc,OAAEohnB,IAEXn/T,CACT,C,qCCvBA,IACQ1oV,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACI0hyB,EAA8B,EAAQ,OACtChqJ,EAAc,EAAQ,OACtBvoP,EAAQ,EAAQ,OAChB3ma,EAAc,EAAQ,OACtBm5yB,EAAmB,EAAQ,OAC3B/izB,EAAK,EAAQ,MAAgBquN,EAAeruN,EAAGquN,aAAcK,EAA6B1uN,EAAG0uN,2BAA4BC,EAAmC3uN,EAAG2uN,iCAC/JxuN,EAAK,EAAQ,OAAYwjV,EAAkBxjV,EAAGwjV,gBAAiBssC,EAAiB9vX,EAAG8vX,eAAgBD,EAAc7vX,EAAG6vX,YAAajsC,EAAgB5jV,EAAG4jV,cAAeH,EAAkBzjV,EAAGyjV,gBACxLo/d,EAAmC,YAAnB30lB,IAYhB40lB,EAAyC,SAAUzizB,GAEnD,SAASyizB,EAAwBjzS,EAAepia,QACtB,IAAlBoia,IAA4BA,EAAgB,CAAC,GACjD,IAAItvgB,EAAQF,EAAO3D,KAAKL,OAASA,KAC7BuzgB,EAAmBzphB,OAAOC,OAAOyphB,EAAc3ngB,mBAC7C,CAAE66yB,cAAelzS,EAAc3ngB,oBAC/B,CAAC,EAAG2ngB,GACV//I,EAAevvX,EAAO,eACtBuvX,EAAevvX,EAAO,wBACtB,IAAIyizB,EAAY90lB,EAAa0hT,EAAiBzjT,cAC1C3pN,EAAiB,IAAIyF,kBAAkB2ngB,EAAkBnia,GA8D7D,OA7DAtnH,OAAO0hC,iBAAiBtnB,EAAO,CAC3B0izB,sBAAuB,CACnBjh0B,MAAO,IAAIqN,IACXy4B,UAAU,GAEdo7xB,aAAc,CACVlh0B,MAAO,IAAIynB,GAEf4qvB,gBAAiB,CACbrywB,MAAOwgB,GAEX2gzB,mBAAoB,CAChBnh0B,MAAO,KACP8lC,UAAU,GAEds7xB,oBAAqB,CACjBph0B,MAAO,KACP8lC,UAAU,GAEdu7xB,yBAA0B,CACtBrh0B,MAAO,IAAIqN,IACXy4B,UAAU,GAEdw7xB,WAAY,CACRth0B,MAAOgh0B,GAEXO,SAAU,CACNvh0B,MAAO,IAAIqN,KAEfm0zB,qBAAsB,CAClBxh0B,MAAO,IAAIoub,GAEfqzY,eAAgB,CACZzh0B,MAAO,IAAIqN,IACXy4B,UAAU,KAGlBtlB,EAAejO,iBAAiB,cAAe,SAAUiU,GACrDk7yB,EAAgBl7yB,EAAMuokB,SACtBxwkB,EAAM4oP,cAAc3gP,EACxB,GACAhG,EAAejO,iBAAiB,uBAAwB,WAEpD,IADA,IAAI7D,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEa,WAAlCwL,EAAemhzB,iBACfpjzB,EAAM0izB,sBAAwB,IAAI5zzB,IAAIkR,EAAMkjzB,iBAE3CljzB,EAAM4izB,oBAAuB5izB,EAAM6izB,qBACpC7izB,EAAM4oP,cAAchsP,MAAMoD,EAAOgwU,EAAc,GAAIx0O,EAAOrrG,IAElE,GACA8R,EAAeohzB,QAAU,WAGzB,EACuC,mBAA5BphzB,EAAeoG,UACtBpG,EAAeqhzB,UAAUtjzB,EAAM2izB,cAEnCz/d,EAAgBx7U,kBAAkBxL,UAAW8D,EAAOiC,GAC7CjC,CACX,CAiQA,OA1UAnE,EAAU0mzB,EAAyBzizB,GA0EnCla,OAAOwY,eAAemkzB,EAAwBrmzB,UAAW,mBAAoB,CACzEvM,IAAK,WACD,OAAOmM,KAAK8mzB,mBAAqB9mzB,KAAK8mzB,mBAAqB9mzB,KAAKg4vB,gBAAgByvD,gBACpF,EACA/7xB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAemkzB,EAAwBrmzB,UAAW,oBAAqB,CAC1EvM,IAAK,WACD,OAAOmM,KAAK+mzB,oBAAsB/mzB,KAAK+mzB,oBAAsB/mzB,KAAKg4vB,gBAAgB0vD,iBACtF,EACAh8xB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAemkzB,EAAwBrmzB,UAAW,iBAAkB,CACvEvM,IAAK,WACD,OAAImM,KAAK8mzB,mBACE,mBAEF9mzB,KAAK+mzB,oBACH,oBAEJ/mzB,KAAKg4vB,gBAAgBsvD,cAChC,EACA57xB,YAAY,EACZuL,cAAc,IAMlBwvxB,EAAwBrmzB,UAAUmM,SAAW,SAAUD,GAGnD,IAFA,IAAI9I,EACAgM,EAAO,GACF7U,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpC6U,EAAK7U,EAAK,GAAKxG,UAAUwG,GAE7B,GAA6C,mBAAlCqF,KAAKg4vB,gBAAgBzrvB,SAC5B,OAAQ/I,EAAKxD,KAAKg4vB,iBAAiBzrvB,SAASzL,MAAM0C,EAAI0wU,EAAc,CAAC5nU,GAAQozF,EAAOlwF,KAExF,GAA4C,WAAxCxP,KAAKg4vB,gBAAgBsvD,eACrB,MAAM,IAAI//yB,MAAM,gCAAkC+E,EAAMvO,GAAK,eAAiBuO,EAAMQ,KAAO,kCAE/F,IAAI1E,EAASpI,KAAKknzB,SAASrzzB,IAAIyY,GAC/B,GAAIlE,GAAUA,EAAOkE,MACjB,MAAM,IAAI/E,MAAM,iCAAmC+E,EAAMvO,GAAK,eAAiBuO,EAAMQ,KAAO,uCAOhG,OALA9M,KAAKg4vB,gBAAgB2vD,aAAa3nzB,KAAK6mzB,cACvC7mzB,KAAK6mzB,aAAat6yB,SAASD,GAC3BtM,KAAKg4vB,gBAAgBwvD,UAAUxnzB,KAAK6mzB,cACpCz+yB,EAAS,IAAIm+yB,EAAiBj6yB,GAC9BtM,KAAKknzB,SAASnzzB,IAAIuY,EAAOlE,GAClBA,CACX,EAKAq+yB,EAAwBrmzB,UAAUiumB,YAAc,SAAUjmmB,GACtD,GAA4C,WAAxCpI,KAAKg4vB,gBAAgBsvD,eACrB,MAAM,IAAI//yB,MAAM,+DAEpB,GAA6C,mBAAlCvH,KAAKg4vB,gBAAgBzrvB,SAC5B,IACI,OAAOvM,KAAKg4vB,gBAAgB3pJ,YAAYjmmB,EAC5C,CACA,MAAOpjB,GAMP,KAEC,CACD,IAAIsnB,EAAQlE,EAAOkE,MACnB,IAAKA,EACD,QAEJlE,EAASpI,KAAKknzB,SAASrzzB,IAAIyY,KACblE,EAAOkE,QACjBlE,EAAOkE,MAAQ,KACftM,KAAKg4vB,gBAAgB2vD,aAAa3nzB,KAAK6mzB,cACvC7mzB,KAAK6mzB,aAAax4M,YAAY/hmB,GAC9BtM,KAAKg4vB,gBAAgBwvD,UAAUxnzB,KAAK6mzB,cAE5C,CACJ,EACAJ,EAAwBrmzB,UAAU+H,WAAa,WAC3C,MAA6C,mBAAlCnI,KAAKg4vB,gBAAgBzrvB,SACrBvM,KAAKg4vB,gBAAgB7vvB,aAEzB7T,MAAMuwB,KAAK7kB,KAAKknzB,SAASt+xB,SACpC,EACA69xB,EAAwBrmzB,UAAUiM,gBAAkB,SAAUD,GAG1D,IAFA,IAKIi2G,EALAn+G,EAAQlE,KACRwP,EAAO,GACF7U,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpC6U,EAAK7U,EAAK,GAAKxG,UAAUwG,GAc7B,OAPI0nH,EAJwB,sBAAxBriH,KAAKsnzB,eAIKtnzB,KAAKmnzB,qBAAqB/ksB,KAAK,OAAOvrH,KAAK,WACjD,OAAOqN,EAAM8zvB,gBAAgB3rvB,gBAAgBD,EACjD,GAGUpM,KAAKg4vB,gBAAgB3rvB,gBAAgBD,GAE5CoD,EAAKpb,OAAS,EACfmzV,EAAczmV,WAAM,EAAQozU,EAAc,CAAC7xN,GAAU3iB,EAAOlwF,KAAU6yG,CAChF,EAIAoksB,EAAwBrmzB,UAAUqN,MAAQ,WACV,WAAxBzN,KAAKsnzB,iBACLtnzB,KAAK8mzB,mBAAqB,KAC1B9mzB,KAAK+mzB,oBAAsB,KAC3B/mzB,KAAKg4vB,gBAAgBvqvB,QAE7B,EAOAg5yB,EAAwBrmzB,UAAUwM,aAAe,WAG7C,IAFA,IAKIy1G,EALAn+G,EAAQlE,KACR3L,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAmCzB,OA/BI0nH,EADAriH,KAAK+mzB,oBACK/mzB,KAAKg4vB,gBAAgBrrvB,qBAAqB3M,KAAK+mzB,qBAAqBlwzB,KAAK,WAK/E,OADAqN,EAAMijzB,qBAAqBlxqB,QACpB/xI,EAAM8zvB,gBAAgBprvB,cACjC,GAAG/V,KAAK,SAAUqV,GAKd,OAJAhI,EAAM6izB,oBAAsB,KAG5B7izB,EAAM8izB,yBAAyBjsvB,QACxB,IAAIurvB,EAA4B,CACnCt2yB,KAAM,SACN47M,IAAKuF,EAAsBjtN,EAAM+izB,WAAY/izB,EAAMkjzB,eAAgBl7yB,EAAO0/M,MAElF,EAAG,SAAU3hN,GAET,MADA/F,EAAM6izB,oBAAsB,KACtB98yB,CACV,GAGUjK,KAAKg4vB,gBAAgBprvB,eAAe/V,KAAK,SAAUqV,GAIzD,OADAhI,EAAM8izB,yBAAyBjsvB,QACxB,IAAIurvB,EAA4B,CACnCt2yB,KAAM,SACN47M,IAAKuF,EAAsBjtN,EAAM+izB,WAAY/izB,EAAMkjzB,eAAgBl7yB,EAAO0/M,MAElF,GAEGv3N,EAAKD,OAAS,EACfmzV,EAAczmV,WAAM,EAAQozU,EAAc,CAAC7xN,GAAU3iB,EAAOrrG,KAAUguH,CAChF,EACAoksB,EAAwBrmzB,UAAUqM,YAAc,WAG5C,IAFA,IAAIvI,EAAQlE,KACR3L,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IAAI6I,EAAKk8F,EAAOrrG,EAAM,GAAI07C,EAAOvsC,EAAG,GAAIwsC,EAAOxsC,EAAG,GAC9C5T,EADyD4T,EAAG,IAC1CusC,GAAQ,CAAC,EAC/B,GAAIyjV,IAAe,CAEf,GAAI5jY,EAAQiuhB,sBAAwB79gB,KAAK4nzB,qBAAuBpB,IAAiBqB,EAA4B7nzB,KAAM,UAAW,QACnHpQ,EAAQkuhB,oBACf,IACI99gB,KAAK4nzB,kBAAoBpB,EACnBxmzB,KAAKgwN,eAAe,QAAS,CAAEjhO,UAAW,aAC1CiR,KAAKgwN,eAAe,QAC9B,CACA,MAAOhrO,GACH,OAAO2R,QAAQyK,OAAOpc,EAC1B,CACJ,CACA,GAAI4K,EAAQiuhB,sBAAwB79gB,KAAK8nzB,qBAAuBtB,IAAiBqB,EAA4B7nzB,KAAM,UAAW,QACnHpQ,EAAQiuhB,oBACf,IACI79gB,KAAK8nzB,kBAAoBtB,EACnBxmzB,KAAKgwN,eAAe,QAAS,CAAEjhO,UAAW,aAC1CiR,KAAKgwN,eAAe,QAC9B,CACA,MAAOhrO,GACH,OAAO2R,QAAQyK,OAAOpc,EAC1B,CACJ,CACJ,CACA,IAAIq9H,EAAUriH,KAAKg4vB,gBAAgBvrvB,YAAY7c,GAASiH,KAAK,SAAUmV,GAInE,OADA9H,EAAM8izB,yBAAyBjsvB,QACxB,IAAIurvB,EAA4B,CACnCt2yB,KAAMhE,EAAMgE,KACZ47M,IAAKuF,EAAsBjtN,EAAM+izB,WAAY/izB,EAAMkjzB,eAAgBp7yB,EAAM4/M,MAEjF,GACA,OAAOv3N,EAAKD,OAAS,EACfmzV,EAAcllO,EAAStyE,EAAMC,GAC7BqyE,CACV,EACAoksB,EAAwBrmzB,UAAU2nzB,kBAAoB,SAAUlmzB,EAAOmmzB,GACnEA,EAmKR,SAA6BA,GAKzB,OAJAA,EAAkBl+zB,OAAOC,OAAO,CAAC,EAAGi+zB,GAChCC,KAAgC,sBAAuBD,IACvDA,EAAgBE,kBAAoBF,EAAgB79jB,mBAEjD69jB,CACX,CAzK0BG,CAAoBH,GACtC,IAAII,EAAcpozB,KAAKg4vB,gBAAgB+vD,kBAAkBlmzB,EAAOmmzB,GAEhE,OADAX,EAAgBe,GACTA,CACX,EACA3B,EAAwBrmzB,UAAUsM,oBAAsB,WAEpD,IADA,IAAIrY,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IAAI6I,EAAKk8F,EAAOrrG,EAAM,GAAIy+H,EAActvH,EAAG,GAAIusC,EAAOvsC,EAAG,GAAIwsC,EAAOxsC,EAAG,GAGnExD,KAAKgnzB,yBAAyBj0yB,KAAO,IACrC/S,KAAKonzB,eAAiB,IAAIp0zB,IAAIgN,KAAKgnzB,0BACnChnzB,KAAKgnzB,yBAAyBjsvB,SAElC,IAAIsnD,EAAUgmsB,EAAerozB,MAAM,EAAM8yH,GACzC,OAAOz+H,EAAKD,OAAS,EACfmzV,EAAcllO,EAAStyE,EAAMC,GAC7BqyE,CACV,EACAoksB,EAAwBrmzB,UAAUuM,qBAAuB,WAErD,IADA,IAAItY,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IAAI6I,EAAKk8F,EAAOrrG,EAAM,GAAIy+H,EAActvH,EAAG,GAAIusC,EAAOvsC,EAAG,GAAIwsC,EAAOxsC,EAAG,GAGvExD,KAAKgnzB,yBAAyBjsvB,QAC9B,IAAIsnD,EAAUgmsB,EAAerozB,MAAM,EAAO8yH,GAC1C,OAAOz+H,EAAKD,OAAS,EACfmzV,EAAcllO,EAAStyE,EAAMC,GAC7BqyE,CACV,EACOoksB,CACX,CA5U4C,CA4U1CnqJ,GAQF,SAAS+rJ,EAAelizB,EAAgBwlB,EAAOmnG,GAiB3C,IAIIzQ,EApB0Br2G,EAgB1Bs8yB,EAAoB38xB,EAAQxlB,EAAe2gzB,mBAAqB3gzB,EAAe4gzB,oBAC/EwB,EAAqB58xB,EAAQxlB,EAAe4gzB,oBAAsB5gzB,EAAe2gzB,mBACjF0B,EAAoB78xB,EAAQ,mBAAqB,oBACjDjf,EAAsBif,EAAQ,sBAAwB,uBAE1D,IAAKA,GAAS48xB,GAA2C,WAArBz1rB,EAAY9iH,KAC5CqyG,EA0CR,SAAyBl8G,EAAgB+F,GAErC,IAAIo8yB,EAAoBnizB,EAAe2gzB,mBACvC,OAAO3gzB,EAAe6xvB,gBAAgBtrvB,oBAAoB47yB,GAAmBzxzB,KAAK,WAE9E,OADAsP,EAAe2gzB,mBAAqB,KAC7B3gzB,EAAewG,qBAAqBT,EAC/C,GAAGrV,KAAK,WAIJsP,EAAeghzB,qBAAqBlxqB,OACxC,EACJ,CAtDkBwyqB,CAAgBtizB,EAAgB2sH,QAEzC,GAAyB,UAArBA,EAAY9iH,KAAkB,CACnC,GAAI7J,EAAemhzB,iBAAmBkB,GAAuD,WAAlCrizB,EAAemhzB,eAEtE,OAAO3wzB,QAAQyK,OAAO,IAAImG,MAAM,eAAiBokB,EAAQ,QAAU,UAAY,mBAAqBxlB,EAAemhzB,iBAMlHgB,GAAmE,QAA9CnizB,EAAeghzB,qBAAqBx3zB,OAC1DwW,EAAeghzB,qBAAqBhzY,QAExC,IAAIu0Y,EAAyBvizB,EAAemhzB,eApClBt7yB,EAqCL+hP,EAAOj7H,GApCxBnnG,EACAxlB,EAAe2gzB,mBAAqB96yB,EAGpC7F,EAAe4gzB,oBAAsB/6yB,EAiCzCq2G,EAAU1rH,QAAQC,UAEduP,EAAemhzB,iBAAmBoB,GAClCrmsB,EAAQxrH,KAAK,WAAc,OAAOsP,EAAe2mP,cAAc,IAAI6xQ,MAAM,wBAA0B,EAE3G,KAC8B,aAArB7rY,EAAY9iH,OACb7J,EAAemhzB,iBAAmBkB,EAElCnmsB,EAAU1rH,QAAQyK,OAAO,IAAImG,MAAM,oBAAsBokB,EAAQ,QAAU,UAAY,mBAAqBxlB,EAAemhzB,kBAtC3H37xB,EACAxlB,EAAe2gzB,mBAAqB,KAGpC3gzB,EAAe4gzB,oBAAsB,KA2CrC5gzB,EAAe6gzB,yBAA2B,IAAIh0zB,IAAImT,EAAeihzB,gBACjEjhzB,EAAeihzB,eAAiB,IAAIp0zB,IAAImT,EAAeygzB,wBACvDvksB,EAAU1rH,QAAQC,WACVC,KAAK,WAAc,OAAOsP,EAAe2mP,cAAc,IAAI6xQ,MAAM,wBAA0B,KAG3G,OAAOt8Y,GAAWl8G,EAAe6xvB,gBAAgBtrvB,GAAqBqhP,EAAOj7H,GACjF,CAqBA,SAAS+0rB,EAA4B1hzB,EAAgB2G,GACjD,QAAS3G,EAAeg8f,kBAAkBtngB,KAAK,SAAU2I,GACrD,IAAIG,EAAKH,EAAG+yB,SACRtxB,QADoC,IAAPtB,EAAgB,CAAC,EAAIA,GACpC2I,MAClB,YADwC,IAAPrH,EAAgB,CAAC,EAAIA,GACzC6H,OAASA,CAC1B,EACJ,CACA,SAASihP,EAAOj7H,GACZ,OAAIA,aAAuBwzrB,GACnBxzrB,EAAY61rB,aACL71rB,EAAY61rB,aAGpB,IAAIlxf,sBAAsB3kM,EACrC,CASA,SAASm1rB,IACL,MAAO,sBAAuBW,eAAexozB,aACpC,sBAAuBwozB,eAAexozB,UACnD,CAoBA,SAASinzB,EAAgBe,GAiBrB,OAhBAt+zB,OAAOwY,eAAe8lzB,EAAa,iBAAkB,CACjDzi0B,MAAsC,QAA/Byi0B,EAAYh+jB,eACb,KACAg+jB,EAAYh+jB,iBAElB69jB,KAKAn+zB,OAAOwY,eAAe8lzB,EAAa,oBAAqB,CACpDzi0B,MAAyC,QAAlCyi0B,EAAYF,kBACb,KACAE,EAAYF,oBAGnBE,CACX,CAUA,SAASj3lB,EAAsBw1lB,EAAWkC,EAAej9lB,GACrD,MAAqB,YAAd+6lB,EACDx0lB,EAAiC02lB,EAAej9lB,GAChDsG,EAA2B22lB,EAAej9lB,EACpD,CA1KAu7H,EAAgBv7U,kBAAkBxL,UAAWqmzB,EAAwBrmzB,UAAW,mBA2KhFshF,EAAOj9F,QAAUgi0B,C,yBCtiBT,SAAW5l0B,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wCAAwCC,MAC5C,KAEJC,YAAa,yCAAyCD,MAClD,KAEJE,SAAU,8BAA8BF,MAAM,KAC9CG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,gBAAgBJ,MAAM,KACnCM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN02B,EAAG,WACH8nF,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVz+G,cAAe,oBACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,OAAbD,GAAkC,OAAbA,GAAkC,OAAbA,EACnCC,EACa,OAAbD,GAAkC,OAAbA,EACrBC,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,EAE1C,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,IAAIo+G,EAAY,IAAPt+G,EAAaC,EACtB,OAAIq+G,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,IAEf,EACAn+G,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUomB,GAChB,OAAIA,EAAI1kB,SAAW4b,KAAK5b,OACb,WAEA,UAEf,EACAzB,QAAS,SACTC,SAAU,SAAUkmB,GAChB,OAAI9I,KAAK5b,SAAW0kB,EAAI1kB,OACb,WAEA,UAEf,EACAvB,SAAU,KAEdqB,uBAAwB,iBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAngD,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNC,EAAG,KACHC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,OACJo2B,EAAG,MACHi/H,GAAI,OACJp1J,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERQ,KAAM,CAEFC,IAAK,EACLC,IAAK,IAMhB,CA1HyCC,CAAQ,EAAQ,O,YCR1Dm9F,EAAOj9F,QAAU,SAASqk0B,EAAYnlvB,GAYpC,OAXA75E,OAAOklD,OAAO20B,GAEd75E,OAAOu7C,oBAAoBs+B,GAAG3xE,QAAQ,SAAUsgC,IAC1CqxC,EAAE/3E,eAAe0mC,IACN,OAAZqxC,EAAErxC,IACkB,iBAAZqxC,EAAErxC,IAAyC,mBAAZqxC,EAAErxC,IACxCxoC,OAAOi/zB,SAASplvB,EAAErxC,KACpBw2xB,EAAWnlvB,EAAErxC,GAEjB,GAEOqxC,CACT,C,uJCFI/zD,EAAO,WAAiB,EAmG5B,QAjG+B,aAAiB,SAAUxkB,EAAMynH,GAC9D,IAcIkjN,EAAiBF,EAdjBpsF,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,KAAOA,EACxC8rF,EAAWnqU,EAAKmqU,SAChBS,EAAY5qU,EAAK4qU,UACjB13T,EAAOlT,EAAKkT,KACZotgB,EAAYtghB,EAAKsghB,UACjBt5e,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,YAAa,OAAQ,cAIpFiL,GAAc,SACd2yzB,GAAkB,IAAA/pzB,SAAO,GACzBw2T,GAAiB,IAAA1rF,YAAW,KAC5BwthB,GAAa,IAAAxthB,YAAW,KAGxBwthB,IACFj5vB,EAAOA,GAAQ,UACf03T,EAAYuhc,EAAWvhc,UACvBD,EAAkBwhc,EAAWxhc,gBAC7BF,EAAkB0hc,EAAW1hc,iBAG/B,IAAIozf,GAAW,IAAAhqzB,QAAO,MAElBiqzB,EAAqB,SAA4Btk0B,GACnD,IAAIuk0B,EAAkBF,EAASpzzB,QAC/B,IAAKszzB,EAAiB,OAAO,KAC7B,IAAIj1xB,GAAQ,OAAIi1xB,EAAiB,sCAC7BC,EAAcD,EAAgB5rzB,cAAc,WAChD,IAAK6rzB,EAAa,OAAO,KACzB,IAAI5yzB,EAAQ09B,EAAM3rC,QAAQ6g0B,GAC1B,IAAe,IAAX5yzB,EAAc,OAAO,KACzB,IAAIk0X,EAAYl0X,EAAQ5R,EAGxB,OAFI8lY,GAAax2V,EAAM9/B,SAAQs2X,EAAY,GACvCA,EAAY,IAAGA,EAAYx2V,EAAM9/B,OAAS,GACvC8/B,EAAMw2V,EACf,EAEIoiJ,EAAe,SAAsBtihB,EAAK2hB,GACjC,MAAP3hB,IACA+qU,GAAUA,EAAS/qU,EAAK2hB,GACxBspT,GAAgBA,EAAejrU,EAAK2hB,GAC1C,GA4BA,IAAAtM,WAAU,WACR,GAAIopzB,EAASpzzB,SAAWmzzB,EAAgBnzzB,QAAS,CAC/C,IAAIuzzB,EAAcH,EAASpzzB,QAAQ0H,cAAc,8BAC7C6rzB,GAAaA,EAAYp4tB,OAC/B,CAEAg4tB,EAAgBnzzB,SAAU,CAC5B,GACA,IAAI2hV,GAAY,OAAc3kO,EAAKo2sB,GACnC,OAAoB,gBAAoB,IAAkBjre,SAAU,CAClEr4V,MAAOmnhB,GACO,gBAAoB,IAAW9uL,SAAU,CACvDr4V,MAAO,CACL2Y,KAAMA,EAEN03T,WAAW,OAAaA,GACxBD,gBAAiBA,GAAmBnmT,EACpCimT,gBAAiBA,GAAmBjmT,IAExB,gBAAoB+5N,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACjEs5e,UA9CkB,SAAuBv/f,GAEzC,IAAIk9yB,EAEJ,OAHI39S,GAAWA,EAAUv/f,GAGjBA,EAAM3hB,KACZ,IAAK,YACL,IAAK,UACH6+zB,EAAkBH,GAAoB,GACtC,MAEF,IAAK,aACL,IAAK,YACHG,EAAkBH,EAAmB,GACrC,MAEF,QACE,OAGCG,IACLl9yB,EAAMwgH,iBACNmgZ,EAAau8S,EAAgBz/wB,QAAQ0/wB,WAAYn9yB,GACjD68yB,EAAgBnzzB,SAAU,EAC1BQ,IACF,EAuBEw8G,IAAK2kO,EACLl5U,KAAMA,MAEV,E,+BC5GA,IAAI+jF,EAAa,EAAQ,OACrB49B,EAAQ,EAAQ,OAChB5f,EAAc,EAAQ,OACtBr5G,EAAW,EAAQ,KACnBgX,EAAO,cACPspmB,EAAc,EAAQ,OAEtBiiN,EAAYlnuB,EAAWl8D,SACvB3hC,EAAS69F,EAAW79F,OACpBgjnB,EAAWhjnB,GAAUA,EAAO0d,SAC5BkX,EAAM,YACNiM,EAAOg7E,EAAYjnF,EAAIiM,MACvBk7F,EAA2C,IAAlCgpsB,EAAUjiN,EAAc,OAAmD,KAApCiiN,EAAUjiN,EAAc,SAEtEE,IAAavnf,EAAM,WAAcspsB,EAAUz/zB,OAAO09mB,GAAY,GAIpE9lhB,EAAOj9F,QAAU87H,EAAS,SAAkBz8H,EAAQo0G,GAClD,IAAIv9E,EAAI3c,EAAKhX,EAASlD,IACtB,OAAOyl0B,EAAU5uyB,EAAIu9E,IAAU,IAAO7yE,EAAKjM,EAAKuB,GAAK,GAAK,IAC5D,EAAI4uyB,C,gDCTJ,QANA,SAAmB70tB,GACjB,OAAO,SAAS/uG,GACd,OAAO+uG,EAAK/uG,EACd,CACF,C,0ECJIiG,EAHc9B,OAAOsW,UAGQxU,eAoBjC,QARA,SAAqB0/C,EAAQ9gD,EAAK7E,GAChC,IAAI6iW,EAAWl9S,EAAO9gD,GAChBoB,EAAeyU,KAAKirC,EAAQ9gD,KAAQ,OAAGg+V,EAAU7iW,UACxCmR,IAAVnR,GAAyB6E,KAAO8gD,KACnC,OAAgBA,EAAQ9gD,EAAK7E,EAEjC,C,+BCzBe,SAAS6j0B,EAAgB7lvB,GAItC,OAHA6lvB,EAAkB1/zB,OAAOmW,eAAiBnW,OAAO2rC,eAAeimB,OAAS,SAAyBioB,GAChG,OAAOA,EAAEzjE,WAAapW,OAAO2rC,eAAekuC,EAC9C,EACO6lvB,EAAgB7lvB,EACzB,C,0CCFe,SAAS8lvB,EAAaC,GACnC,IAAIC,ECJS,WACb,GAAuB,oBAAZn0xB,UAA4BA,QAAQ23iB,UAAW,OAAO,EACjE,GAAI33iB,QAAQ23iB,UAAUlyX,KAAM,OAAO,EACnC,GAAqB,mBAAVpmL,MAAsB,OAAO,EACxC,IAEE,OADAoyD,QAAQ7mF,UAAUu2M,QAAQt2M,KAAKm1B,QAAQ23iB,UAAUlmf,QAAS,GAAI,WAAa,KACpE,CACT,CAAE,MAAOjiG,GACP,OAAO,CACT,CACF,CDNkC,GAChC,OAAO,WACL,IACEmO,EADEy2zB,EAAQ,EAAeF,GAE3B,GAAIC,EAA2B,CAC7B,IAAIzkX,EAAY,EAAellc,MAAMS,YACrCtN,EAASqiC,QAAQ23iB,UAAUy8O,EAAOz1zB,UAAW+wc,EAC/C,MACE/xc,EAASy2zB,EAAM9ozB,MAAMd,KAAM7L,WAE7B,OEZW,SAAoCmuF,EAAMjiF,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIC,UAAU,4DAEtB,OAAO,EAAAupzB,EAAA,GAAsBvnuB,EAC/B,CFKW,CAA0BtiF,KAAM7M,EACzC,CACF,C,+BGdA,IAAI22zB,EAAsB,EAAQ,OAC9B75yB,EAAW,EAAQ,OACnBg/M,EAAyB,EAAQ,OACjC86lB,EAAqB,EAAQ,OAMjCrouB,EAAOj9F,QAAUqF,OAAOmW,iBAAmB,aAAe,CAAC,EAAI,WAC7D,IAEI0yS,EAFAq3gB,GAAiB,EACjB9n0B,EAAO,CAAC,EAEZ,KACEywT,EAASm3gB,EAAoBhg0B,OAAOsW,UAAW,YAAa,QACrDle,EAAM,IACb8n0B,EAAiB9n0B,aAAgBoS,KACnC,CAAE,MAAO2V,GAAqB,CAC9B,OAAO,SAAwB6Q,EAAGoK,GAGhC,OAFA+pM,EAAuBn0M,GACvBivyB,EAAmB7kyB,GACdjV,EAAS6K,IACVkvyB,EAAgBr3gB,EAAO73R,EAAGoK,GACzBpK,EAAE5a,UAAYglB,EACZpK,GAHkBA,CAI3B,CACF,CAjB+D,QAiBzDhkB,E,0ECRS,SAASmzzB,EAAU7ktB,IAChC,OAAa,EAAGjxG,WAChB,IAAImtC,GAAO,OAAO8jE,GACd3nB,EAAOn8C,EAAKukE,cAGhB,OAFAvkE,EAAKskE,YAAYnoB,EAAO,EAAG,EAAG,GAC9Bn8C,EAAKowG,SAAS,GAAI,GAAI,GAAI,KACnBpwG,CACT,C,qCC1BA,IACQxhC,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAOA8xN,EAAyC,SAAUtuN,GAMnD,SAASsuN,EAAwB43lB,GAC7B,OAAOlmzB,EAAO3D,KAAKL,KAAMkqzB,IAAoBlqzB,IACjD,CACA,OARAD,EAAUuyN,EAAyBtuN,GAQ5BsuN,CACX,CAV4C,CALR,EAAQ,QAgB5C5wI,EAAOj9F,QAAU6tO,C,gDCJjB,QAJA,SAAsB3sO,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,+BCzBA,IAAI8hhB,EAAwB,EAAQ,OAChCjmb,EAAU,EAAQ,OAItBE,EAAOj9F,QAAUgjhB,EAAwB,CAAC,EAAEzghB,SAAW,WACrD,MAAO,WAAaw6F,EAAQxhF,MAAQ,GACtC,C,8CCJImqzB,EAAY,MAUZtzrB,EAAS,gBACT1xC,EAAS,EAAAxjF,EAAOwjF,QAAU,EAAAxjF,EAAO8jgB,SAEjCtgb,GAAUA,EAAOC,gBACnB1D,EAAOj9F,QAKT,SAAsBsuB,EAAMyvB,GAE1B,GAAIzvB,EAjBW,WAiBQ,MAAM,IAAIu0O,WAAW,mCAE5C,IAAIzkI,EAAQgU,EAAOqE,YAAYnoH,GAE/B,GAAIA,EAAO,EACT,GAAIA,EAAOo3yB,EAET,IAAK,IAAIC,EAAY,EAAGA,EAAYr3yB,EAAMq3yB,GAAaD,EAGrDhluB,EAAOC,gBAAgBy9B,EAAM/nH,MAAMsvzB,EAAWA,EAAYD,SAG5DhluB,EAAOC,gBAAgBy9B,GAI3B,MAAkB,mBAAPrgF,EACFi4F,EAAQ2gK,SAAS,WACtB54P,EAAG,KAAMqgF,EACX,GAGKA,CACT,EA7BEnhC,EAAOj9F,QAVT,WACE,MAAM,IAAI8iB,MAAM,iHAClB,C,yBCXAm6E,EAAOj9F,QAAW,SAAUkkC,GACxB,IAAIsgE,EAAWtgE,EAAMsgE,SAAUI,EAAM1gE,EAAM0gE,IAC3C,MAAI,CAACJ,EAAUI,GAAK/2F,KAAK,SAAUs+rB,GAAO,OAAQA,CAAK,GAC5C,SAAmClvmB,GACtC,OAAO/qF,QAAQyK,OAAO,IAAImG,MAAM,qBAAuBm6E,EAAS,oCACpE,GAEJ/4D,EAAM0hyB,6BAA+B,CAErC,EACO,SAAuB3ouB,GAC1B,OAAIA,KAAU/4D,EAAM0hyB,6BACT1zzB,QAAQC,QAAQ+xB,EAAM0hyB,6BAA6B3ouB,IAKvD,IAAI+pB,SAAS,QAAS,kBAAoB,IAAIpiB,EAAI3H,EAAQuH,GAAY,oDAAsDvH,EAAS,WAArI,CAAiJ/4D,EAC5J,EACJ,CAnBiB,CAmBf05D,W,qdCpB4K,SAASzhF,GAAG,aAAa,MAAM5b,EAAE,UAAkC,SAAS+0B,EAAEnZ,EAAE5b,EAAE6b,EAAEkZ,EAAE4pD,GAAG,IAAIjiE,EAAErc,EAAEq+F,EAAE99F,EAAE3C,EAAE+B,EAAE,GAAG4U,EAAEmgB,EAAE,GAAGx2B,EAAE,EAAEi1B,EAAE,EAAE5e,EAAE3W,GAAG2W,GAAG3W,GAAGye,EAAEze,EAAEA,EAAE+B,IAAIzB,KAAKme,EAAE9H,EAAEA,EAAEmgB,IAAIvB,IAAI,IAAIrY,EAAE,EAAE,GAAG5c,EAAEqd,GAAG4X,EAAE3X,EAAE,IAAIjH,EAAE3W,GAAG2W,GAAG3W,GAAGygG,EAAEhiF,IAAIrc,EAAEpC,EAAEye,GAAGze,GAAGA,EAAE+B,IAAIzB,KAAKmgG,EAAEhiF,IAAIrc,EAAEuU,EAAE8H,GAAG9H,GAAGA,EAAEmgB,IAAIvB,IAAI9W,EAAErc,EAAE,IAAIq+F,IAAI/f,EAAExjE,KAAKujF,GAAGngG,EAAEqd,GAAG4X,EAAE3X,GAAGjH,EAAE3W,GAAG2W,GAAG3W,GAAGygG,EAAEhiF,IAAIrc,EAAEqc,EAAEze,IAAI2C,EAAEP,EAAEqc,KAAKze,EAAE2C,GAAG3C,EAAE+B,IAAIzB,KAAKmgG,EAAEhiF,IAAIrc,EAAEqc,EAAE9H,IAAIhU,EAAEP,EAAEqc,KAAK9H,EAAEhU,GAAGgU,EAAEmgB,IAAIvB,IAAI9W,EAAErc,EAAE,IAAIq+F,IAAI/f,EAAExjE,KAAKujF,GAAG,KAAKngG,EAAEqd,GAAG8iF,EAAEhiF,IAAIrc,EAAEqc,EAAEze,IAAI2C,EAAEP,EAAEqc,KAAKze,EAAE2C,GAAG3C,EAAE+B,IAAIzB,GAAGme,EAAErc,EAAE,IAAIq+F,IAAI/f,EAAExjE,KAAKujF,GAAG,KAAKlrE,EAAE3X,GAAG6iF,EAAEhiF,IAAIrc,EAAEqc,EAAE9H,IAAIhU,EAAEP,EAAEqc,KAAK9H,EAAEhU,GAAGgU,EAAEmgB,IAAIvB,GAAG9W,EAAErc,EAAE,IAAIq+F,IAAI/f,EAAExjE,KAAKujF,GAAG,OAAO,IAAIhiF,GAAG,IAAIvB,IAAIwjE,EAAExjE,KAAKuB,GAAGvB,CAAC,CAAC,SAASwjE,EAAE/iE,GAAG,OAAO,IAAIy/L,aAAaz/L,EAAE,CAAC,MAA8Ehb,EAAE+9E,EAAE,GAAG1gF,EAAE0gF,EAAE,GAAG/pE,EAAE+pE,EAAE,IAAIpgF,EAAEogF,EAAE,IAAInrD,EAAEmrD,EAAE,GAAG/iE,EAAE0pzB,SAAS,SAAS1pzB,EAAE+iE,EAAExjE,EAAEtG,EAAElW,EAAEN,GAAG,MAAMI,GAAGkgF,EAAEtgF,IAAI8c,EAAExc,GAAG4C,GAAGqa,EAAEjd,IAAIkW,EAAExW,GAAG2iC,EAAEviC,EAAE8C,EAAE,GAAG,IAAI9C,GAAG,IAAI8C,GAAG9C,EAAE,GAAG8C,EAAE,EAAE,OAAOy/B,EAAE,MAAM7iC,EAAEqC,KAAKM,IAAIrC,EAAE8C,GAAG,OAAOf,KAAKM,IAAIkgC,IAA7P,sBAAmQ7iC,EAAE6iC,GAAG,SAASplB,EAAE+iE,EAAEjiE,EAAEvB,EAAEtG,EAAElW,EAAEN,GAAG,IAAII,EAAE8C,EAAEy/B,EAAE7iC,EAAEye,EAAEO,EAAEyX,EAAEd,EAAEK,EAAE2B,EAAE5Z,EAAES,EAAE8P,EAAEo4E,EAAE/nC,EAAE/oC,EAAEC,EAAEC,EAAE,MAAMC,EAAEtY,EAAE/G,EAAEohB,EAAEvZ,EAAE7H,EAAEqhB,EAAEyoD,EAAEhgF,EAAEw3B,EAAEhb,EAAExc,EAAEie,GAAGkgD,GAAGhpC,EAAEI,GAAGU,GAAGzX,EAAEnd,EAAEk0B,IAAI/W,EAAE+W,MAAM4B,EAAEK,GAAGhC,GAAGhX,EAAEnd,EAAEm2B,IAAIhZ,EAAEgZ,OAAO0uE,EAAE3wE,EAAEiC,GAAGvB,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAK5Z,EAAE4gD,GAAG9oC,GAAGF,EAAEoC,GAAGtB,GAAGzX,EAAEnd,EAAEk2B,IAAI/Y,EAAE+Y,MAAMJ,EAAEG,GAAG9B,GAAGhX,EAAEnd,EAAEi2B,IAAI9Y,EAAE8Y,OAAOlC,EAAEmC,EAAED,GAAGrB,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAKl1B,EAAE,GAAGk8D,GAAG5gD,EAAEU,IAAIA,EAAEoX,GAAGpX,GAAG6P,EAAEo4E,IAAIloF,EAAEkoF,EAAE3oF,IAAIU,EAAED,EAAEkoF,KAAK3oF,EAAEU,KAAKV,EAAEuQ,EAAEsH,GAAGnzB,EAAE,GAAG6rB,GAAGvQ,EAAEU,IAAIA,EAAEmX,GAAGnX,GAAGqX,EAAEtX,EAAET,GAAGS,EAAE/b,EAAE,GAAG+b,GAAGsX,EAAErX,IAAIV,EAAEU,GAAGhc,EAAE,GAAGqzB,EAAE,IAAImC,EAAE,SAASxa,EAAE5b,GAAG,IAAI6b,EAAE7b,EAAE,GAAG,IAAI,IAAI+0B,EAAE,EAAEA,EAA0B,EAAtBA,IAAIlZ,GAAG7b,EAAE+0B,GAAG,OAAOlZ,CAAC,CAA7D,CAA+D,EAAEjb,GAAGo1B,EAAxqB,sBAA4qB33B,EAAE,GAAG+3B,GAAGJ,IAAII,GAAGJ,EAAE,OAAOI,EAAE,GAAG33B,EAAEmd,GAAGsY,GAAGtX,EAAEhB,EAAEsY,KAAKtX,EAAE/H,GAAGmsB,EAAEtkB,GAAGuZ,GAAGrZ,EAAEF,EAAEuZ,KAAKrZ,EAAE/H,GAAGtT,EAAEo9E,GAAGzoD,GAAGtZ,EAAE+hE,EAAEzoD,KAAKtZ,EAAEje,GAAGR,EAAEgd,GAAGgb,GAAGvZ,EAAEzB,EAAEgb,KAAKvZ,EAAEje,GAAG,IAAIF,GAAG,IAAI8C,GAAG,IAAIy/B,GAAG,IAAI7iC,EAAE,OAAOi4B,EAAE,GAAGJ,EAAhzB,sBAAozB33B,EAA75C,sBAAi6CmC,KAAKM,IAAIs1B,IAAIA,GAAGlC,EAAE/1B,EAAEg4B,EAAE13B,GAAGy3B,EAAE8K,EAAE/K,EAAE10B,KAAKy0B,IAAII,GAAGJ,EAAE,OAAOI,EAAExZ,GAAGkgD,GAAGhpC,EAAEr1B,GAAGm2B,GAAGzX,EAAEnd,EAAEvB,IAAI0e,EAAE1e,MAAMq3B,EAAEK,GAAGhC,GAAGhX,EAAEnd,EAAEm2B,IAAIhZ,EAAEgZ,OAAO0uE,EAAEpmG,EAAE03B,GAAGvB,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAK5Z,EAAE4gD,GAAG9oC,GAAGF,EAAEvyB,GAAGqzB,GAAGzX,EAAEnd,EAAEuB,IAAI4b,EAAE5b,MAAMu0B,EAAEG,GAAG9B,GAAGhX,EAAEnd,EAAEi2B,IAAI9Y,EAAE8Y,OAAOlC,EAAExyB,EAAE00B,GAAGrB,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAKtC,EAAE,GAAGspC,GAAG5gD,EAAEU,IAAIA,EAAEoX,GAAGpX,GAAG6P,EAAEo4E,IAAIloF,EAAEkoF,EAAE3oF,IAAIU,EAAED,EAAEkoF,KAAK3oF,EAAEU,KAAKV,EAAEuQ,EAAEsH,GAAGP,EAAE,GAAG/G,GAAGvQ,EAAEU,IAAIA,EAAEmX,GAAGnX,GAAGqX,EAAEtX,EAAET,GAAGS,EAAE6W,EAAE,GAAG7W,GAAGsX,EAAErX,IAAIV,EAAEU,GAAG4W,EAAE,GAAGS,EAAE,MAAMt3B,EAAEo4B,EAAE,EAAEn0B,EAAE,EAAE4yB,EAAEv1B,GAAG2e,GAAGkgD,GAAGhpC,EAAEI,GAAGU,GAAGzX,EAAEnd,EAAEk0B,IAAI/W,EAAE+W,MAAM4B,EAAE33B,GAAGg2B,GAAGhX,EAAEnd,EAAE7B,IAAIgf,EAAEhf,OAAO0mG,EAAE3wE,EAAE/1B,GAAGy2B,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAK5Z,EAAE4gD,GAAG9oC,GAAGF,EAAEoC,GAAGtB,GAAGzX,EAAEnd,EAAEk2B,IAAI/Y,EAAE+Y,MAAMJ,EAAEkL,GAAG7M,GAAGhX,EAAEnd,EAAEghC,IAAI7jB,EAAE6jB,OAAOjN,EAAEmC,EAAE8K,GAAGpM,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAKtC,EAAE,GAAGspC,GAAG5gD,EAAEU,IAAIA,EAAEoX,GAAGpX,GAAG6P,EAAEo4E,IAAIloF,EAAEkoF,EAAE3oF,IAAIU,EAAED,EAAEkoF,KAAK3oF,EAAEU,KAAKV,EAAEuQ,EAAEsH,GAAGP,EAAE,GAAG/G,GAAGvQ,EAAEU,IAAIA,EAAEmX,GAAGnX,GAAGqX,EAAEtX,EAAET,GAAGS,EAAE6W,EAAE,GAAG7W,GAAGsX,EAAErX,IAAIV,EAAEU,GAAG4W,EAAE,GAAGS,EAAE,MAAM8B,EAAEhB,EAAEp4B,EAAEsB,EAAE,EAAEu1B,EAAE5e,GAAGgI,GAAGkgD,GAAGhpC,EAAEr1B,GAAGm2B,GAAGzX,EAAEnd,EAAEvB,IAAI0e,EAAE1e,MAAMq3B,EAAE33B,GAAGg2B,GAAGhX,EAAEnd,EAAE7B,IAAIgf,EAAEhf,OAAO0mG,EAAEpmG,EAAEN,GAAGy2B,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAK5Z,EAAE4gD,GAAG9oC,GAAGF,EAAEvyB,GAAGqzB,GAAGzX,EAAEnd,EAAEuB,IAAI4b,EAAE5b,MAAMu0B,EAAEkL,GAAG7M,GAAGhX,EAAEnd,EAAEghC,IAAI7jB,EAAE6jB,OAAOjN,EAAExyB,EAAEy/B,GAAGpM,EAAET,EAAEL,EAAEK,EAAES,EAAEkB,KAAKtC,EAAE,GAAGspC,GAAG5gD,EAAEU,IAAIA,EAAEoX,GAAGpX,GAAG6P,EAAEo4E,IAAIloF,EAAEkoF,EAAE3oF,IAAIU,EAAED,EAAEkoF,KAAK3oF,EAAEU,KAAKV,EAAEuQ,EAAEsH,GAAGP,EAAE,GAAG/G,GAAGvQ,EAAEU,IAAIA,EAAEmX,GAAGnX,GAAGqX,EAAEtX,EAAET,GAAGS,EAAE6W,EAAE,GAAG7W,GAAGsX,EAAErX,IAAIV,EAAEU,GAAG4W,EAAE,GAAGS,EAAE,MAAM4B,EAAEd,EAAEgB,EAAEnhB,EAAE,EAAE4e,EAAEj1B,GAAG,OAAOA,EAAEs3B,EAAE,EAAE,CAAlhD,CAAohDja,EAAE+iE,EAAExjE,EAAEtG,EAAElW,EAAEN,EAAEF,EAAE,EAAEyd,EAAE2pzB,aAAa,SAAS3pzB,EAAE5b,EAAE6b,EAAEkZ,EAAE4pD,EAAEjiE,GAAG,OAAO1c,EAAE0c,IAAIb,EAAE8iE,IAAI/iE,EAAE+iE,IAAI5pD,EAAErY,EAAE,EAAE5X,OAAOwY,eAAe1B,EAAE,aAAa,CAACjb,OAAM,GAAI,CAAhnFX,CAAEP,E,uBCS7D,SAAWA,GAAW,aAY7B,SAASu+G,EAAOy7b,GACf,IAAIp5iB,EAAG2gC,EAAGv2B,EAAK43G,EAEf,IAAKrhF,EAAI,EAAGv2B,EAAM0E,UAAUC,OAAQ4xB,EAAIv2B,EAAKu2B,IAE5C,IAAK3gC,KADLgiH,EAAMlzG,UAAU6xB,GAEfy4gB,EAAKp5iB,GAAKgiH,EAAIhiH,GAGhB,OAAOo5iB,CACR,CAIA,IAAI+rR,EAAW1g0B,OAAO4W,QAAU,WAC/B,SAASyY,IAAK,CACd,OAAO,SAAU+L,GAEhB,OADA/L,EAAE/Y,UAAY8kB,EACP,IAAI/L,CACZ,CACA,CAN+B,GAWhC,SAASuiC,EAAK5mD,EAAIwd,GACjB,IAAIxX,EAAQxG,MAAM8L,UAAUtF,MAE5B,GAAIhG,EAAG4mD,KACN,OAAO5mD,EAAG4mD,KAAK56C,MAAMhM,EAAIgG,EAAMuF,KAAKlM,UAAW,IAGhD,IAAIE,EAAOyG,EAAMuF,KAAKlM,UAAW,GAEjC,OAAO,WACN,OAAOW,EAAGgM,MAAMwR,EAAKje,EAAKD,OAASC,EAAKrG,OAAO8M,EAAMuF,KAAKlM,YAAcA,UACzE,CACD,CAIA,IAAIg7uB,EAAS,EAIb,SAAS90G,EAAM/nnB,GAId,MAHM,gBAAiBA,IACtBA,EAAiB,cAAM68tB,GAEjB78tB,EAAIm4yB,WACZ,CASA,SAAStomB,EAASrtN,EAAIwpF,EAAMn1D,GAC3B,IAAIy5D,EAAMvuF,EAAM42pB,EAAW7oc,EAwB3B,OAtBAA,EAAQ,WAEPx/H,GAAO,EACHvuF,IACH42pB,EAAUnqpB,MAAMqoB,EAAS90B,GACzBA,GAAO,EAET,EAEA42pB,EAAY,WACProkB,EAEHvuF,EAAOF,WAIPW,EAAGgM,MAAMqoB,EAASh1B,WAClBsT,WAAW26M,EAAO9jI,GAClBsE,GAAO,EAET,EAEOqokB,CACR,CAMA,SAASy/J,EAAQnk0B,EAAGstB,EAAO82yB,GAC1B,IAAIhh0B,EAAMkqB,EAAM,GACZnqB,EAAMmqB,EAAM,GACZtwB,EAAIoG,EAAMD,EACd,OAAOnD,IAAMoD,GAAOgh0B,EAAapk0B,IAAMA,EAAImD,GAAOnG,EAAIA,GAAKA,EAAImG,CAChE,CAIA,SAASkh0B,IAAY,OAAO,CAAO,CAMnC,SAASC,EAAU5sxB,EAAKu6C,GACvB,IAAkB,IAAdA,EAAuB,OAAOv6C,EAClC,IAAIx4C,EAAMD,KAAKC,IAAI,QAAkBqR,IAAd0hF,EAA0B,EAAIA,GACrD,OAAOhzF,KAAK+F,MAAM0yC,EAAMx4C,GAAOA,CAChC,CAIA,SAASuY,EAAKyU,GACb,OAAOA,EAAIzU,KAAOyU,EAAIzU,OAASyU,EAAI1uB,QAAQ,aAAc,GAC1D,CAIA,SAAS+m0B,EAAWr4yB,GACnB,OAAOzU,EAAKyU,GAAKvxB,MAAM,MACxB,CAIA,SAASoU,EAAWgd,EAAK1iB,GAIxB,IAAK,IAAIvK,KAHJyE,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAK,aAC9CA,EAAI1iB,QAAU0iB,EAAI1iB,QAAU46zB,EAASl4yB,EAAI1iB,SAAW,CAAC,GAExCA,EACb0iB,EAAI1iB,QAAQvK,GAAKuK,EAAQvK,GAE1B,OAAOitB,EAAI1iB,OACZ,CAOA,SAASm7zB,EAAez4yB,EAAK04yB,EAAax1jB,GACzC,IAAIr1M,EAAS,GACb,IAAK,IAAI96D,KAAKitB,EACb6tC,EAAOrsD,KAAKw0F,mBAAmBktK,EAAYnwQ,EAAEstB,cAAgBttB,GAAK,IAAMijG,mBAAmBh2E,EAAIjtB,KAEhG,OAAU2l0B,IAA6C,IAA9BA,EAAYzi0B,QAAQ,KAAqB,IAAN,KAAa43D,EAAOjiD,KAAK,IACtF,CAEA,IAAI+szB,EAAa,sBAOjB,SAASlqmB,EAAStuM,EAAK1c,GACtB,OAAO0c,EAAI1uB,QAAQkn0B,EAAY,SAAUx4yB,EAAKjoB,GAC7C,IAAI7E,EAAQoQ,EAAKvL,GAEjB,QAAcsM,IAAVnR,EACH,MAAM,IAAI4hB,MAAM,kCAAoCkL,GAKrD,MAH4B,mBAAV9sB,IACjBA,EAAQA,EAAMoQ,IAERpQ,CACR,EACD,CAIA,IAAIoqB,EAAUzb,MAAMyb,SAAW,SAAUuC,GACxC,MAAgD,mBAAxCxoB,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,EACxC,EAIA,SAAS/pB,EAAQ8rB,EAAOkpB,GACvB,IAAK,IAAIl4C,EAAI,EAAGA,EAAIgvB,EAAMjgB,OAAQ/O,IACjC,GAAIgvB,EAAMhvB,KAAOk4C,EAAM,OAAOl4C,EAE/B,OAAQ,CACT,CAMA,IAAI6l0B,EAAgB,6DAIpB,SAASC,EAAY53zB,GACpB,OAAOpM,OAAO,SAAWoM,IAASpM,OAAO,MAAQoM,IAASpM,OAAO,KAAOoM,EACzE,CAEA,IAAIqva,EAAW,EAGf,SAASwoZ,EAAat2zB,GACrB,IAAIwpF,GAAQ,IAAIz1E,KACZotgB,EAAazwhB,KAAKmE,IAAI,EAAG,IAAM20F,EAAOskV,IAG1C,OADAA,EAAWtkV,EAAO23b,EACX9uhB,OAAOsgB,WAAW3S,EAAImhhB,EAC9B,CAEA,IAAIo1S,EAAYlk0B,OAAOgoB,uBAAyBg8yB,EAAY,0BAA4BC,EACpFE,EAAWnk0B,OAAOghP,sBAAwBgjlB,EAAY,yBACxDA,EAAY,gCAAkC,SAAUptzB,GAAM5W,OAAOwgB,aAAa5J,EAAK,EAQzF,SAASkR,EAAiBna,EAAIq0B,EAASq5L,GACtC,IAAIA,GAAa6omB,IAAcD,EAG9B,OAAOC,EAAUhrzB,KAAKlZ,OAAQu0D,EAAK5mD,EAAIq0B,IAFvCr0B,EAAGuL,KAAK8oB,EAIV,CAIA,SAASoiyB,EAAgBxtzB,GACpBA,GACHutzB,EAASjrzB,KAAKlZ,OAAQ4W,EAExB,CAEA,IAAIotZ,EAAO,CACTjrZ,UAAW,KACX8iG,OAAQA,EACRtiG,OAAQ8pzB,EACR9uwB,KAAMA,EACN,UAAIyzrB,GAAY,OAAOA,CAAQ,EAC/B90G,MAAOA,EACPl4a,SAAUA,EACVuomB,QAASA,EACTE,QAASA,EACTC,UAAWA,EACX7szB,KAAMA,EACN8szB,WAAYA,EACZx1zB,WAAYA,EACZy1zB,eAAgBA,EAChBhqmB,SAAUA,EACVhxM,QAASA,EACTxnB,QAASA,EACT2i0B,cAAeA,EACfG,UAAWA,EACXC,SAAUA,EACVr8yB,iBAAkBA,EAClBs8yB,gBAAiBA,GAWnB,SAASC,IAAS,CAElBA,EAAMxotB,OAAS,SAAU5wE,GAKxB,IAAIq5xB,EAAW,WAEdn2zB,EAAW0K,MAGPA,KAAKupC,YACRvpC,KAAKupC,WAAWzoC,MAAMd,KAAM7L,WAI7B6L,KAAK0rzB,eACN,EAEIzqD,EAAcwqD,EAASt+Z,UAAYntZ,KAAKI,UAExC8kB,EAAQslyB,EAASvpD,GAMrB,IAAK,IAAI57wB,KALT6/B,EAAMzkB,YAAcgrzB,EAEpBA,EAASrrzB,UAAY8kB,EAGPllB,KACTlW,OAAOsW,UAAUxU,eAAeyU,KAAKL,KAAM3a,IAAY,cAANA,GAA2B,cAANA,IACzEom0B,EAASpm0B,GAAK2a,KAAK3a,IA4CrB,OAvCI+sC,EAAMu5xB,SACT3otB,EAAOyotB,EAAUr5xB,EAAMu5xB,SAIpBv5xB,EAAMuD,WAuEX,SAAoCA,GAEnC,GAAiB,oBAANh0C,GAAsBA,GAAMA,EAAEiq0B,MAAzC,CAEAj2xB,EAAW5lB,EAAQ4lB,GAAYA,EAAW,CAACA,GAE3C,IAAK,IAAItwC,EAAI,EAAGA,EAAIswC,EAASvhC,OAAQ/O,IAChCswC,EAAStwC,KAAO1D,EAAEiq0B,MAAMxxX,QAC3Bxna,QAAQ/lB,KAAK,kIAE8B,IAAItF,OAAQg/B,MARC,CAW3D,CAnFEslxB,CAA2Bz5xB,EAAMuD,UACjCqtE,EAAOliG,MAAM,KAAM,CAACokB,GAAOl3B,OAAOokC,EAAMuD,YAIzCqtE,EAAO99E,EAAOkN,UACPlN,EAAMymyB,eACNzmyB,EAAMyQ,SAGTzQ,EAAMt1B,UACTs1B,EAAMt1B,QAAUqxwB,EAAYrxwB,QAAU46zB,EAASvpD,EAAYrxwB,SAAW,CAAC,EACvEozG,EAAO99E,EAAMt1B,QAASwiC,EAAMxiC,UAG7Bs1B,EAAM4myB,WAAa,GAGnB5myB,EAAMwmyB,cAAgB,WAErB,IAAI1rzB,KAAK+rzB,iBAAT,CAEI9qD,EAAYyqD,eACfzqD,EAAYyqD,cAAcrrzB,KAAKL,MAGhCA,KAAK+rzB,kBAAmB,EAExB,IAAK,IAAI1m0B,EAAI,EAAGoK,EAAMy1B,EAAM4myB,WAAW13zB,OAAQ/O,EAAIoK,EAAKpK,IACvD6/B,EAAM4myB,WAAWzm0B,GAAGgb,KAAKL,KATW,CAWtC,EAEOyrzB,CACR,EAKAD,EAAM5of,QAAU,SAAUxwS,GACzB,IAAIkwR,EAAgBtiT,KAAKI,UAAUxQ,QAMnC,OALAozG,EAAOhjG,KAAKI,UAAWgyB,GACnBA,EAAMxiC,UACToQ,KAAKI,UAAUxQ,QAAU0yT,EACzBtiT,KAAKusvB,aAAan6tB,EAAMxiC,UAElBoQ,IACR,EAIAwrzB,EAAMj/D,aAAe,SAAU38vB,GAE9B,OADAozG,EAAOhjG,KAAKI,UAAUxQ,QAASA,GACxBoQ,IACR,EAIAwrzB,EAAM/+D,YAAc,SAAU33vB,GAC7B,IAAIT,EAAOC,MAAM8L,UAAUtF,MAAMuF,KAAKlM,UAAW,GAE7Ci4D,EAAqB,mBAAPt3D,EAAoBA,EAAK,WAC1CkL,KAAKlL,GAAIgM,MAAMd,KAAM3L,EACtB,EAIA,OAFA2L,KAAKI,UAAU0rzB,WAAa9rzB,KAAKI,UAAU0rzB,YAAc,GACzD9rzB,KAAKI,UAAU0rzB,WAAWh4zB,KAAKs4D,GACxBpsD,IACR,EA0CA,IAAIo6b,EAAS,CAQZzvV,GAAI,SAAUi5J,EAAO9uQ,EAAIq0B,GAGxB,GAAqB,iBAAVy6O,EACV,IAAK,IAAI5zP,KAAQ4zP,EAGhB5jQ,KAAKgszB,IAAIh8yB,EAAM4zP,EAAM5zP,GAAOlb,QAO7B,IAAK,IAAIzP,EAAI,EAAGoK,GAFhBm0Q,EAAQknjB,EAAWlnjB,IAESxvQ,OAAQ/O,EAAIoK,EAAKpK,IAC5C2a,KAAKgszB,IAAIpojB,EAAMv+Q,GAAIyP,EAAIq0B,GAIzB,OAAOnpB,IACR,EAaAitH,IAAK,SAAU22I,EAAO9uQ,EAAIq0B,GAEzB,GAAKh1B,UAAUC,OAIR,GAAqB,iBAAVwvQ,EACjB,IAAK,IAAI5zP,KAAQ4zP,EAChB5jQ,KAAKu1Z,KAAKvlZ,EAAM4zP,EAAM5zP,GAAOlb,OAGxB,CACN8uQ,EAAQknjB,EAAWlnjB,GAGnB,IADA,IAAI6L,EAAiC,IAArBt7Q,UAAUC,OACjB/O,EAAI,EAAGoK,EAAMm0Q,EAAMxvQ,OAAQ/O,EAAIoK,EAAKpK,IACxCoqR,EACHzvQ,KAAKu1Z,KAAK3xJ,EAAMv+Q,IAEhB2a,KAAKu1Z,KAAK3xJ,EAAMv+Q,GAAIyP,EAAIq0B,EAG3B,aAlBQnpB,KAAK+zH,QAoBb,OAAO/zH,IACR,EAGAgszB,IAAK,SAAUh8yB,EAAMlb,EAAIq0B,EAAS8iyB,GACjC,GAAkB,mBAAPn3zB,GAMX,IAAyC,IAArCkL,KAAKkszB,SAASl8yB,EAAMlb,EAAIq0B,GAA5B,CAIIA,IAAYnpB,OAEfmpB,OAAUryB,GAGX,IAAIu9H,EAAc,CAACv/H,GAAIA,EAAIg1B,IAAKX,GAC5B8iyB,IACH53rB,EAAY5pB,MAAO,GAGpBzqG,KAAK+zH,QAAU/zH,KAAK+zH,SAAW,CAAC,EAChC/zH,KAAK+zH,QAAQ/jH,GAAQhQ,KAAK+zH,QAAQ/jH,IAAS,GAC3ChQ,KAAK+zH,QAAQ/jH,GAAMlc,KAAKugI,EAdxB,OAPCzhG,QAAQ/lB,KAAK,+BAAiC/X,EAsBhD,EAEAyga,KAAM,SAAUvlZ,EAAMlb,EAAIq0B,GACzB,IAAI6K,EACA3uC,EACAoK,EAEJ,GAAKuQ,KAAK+zH,UAIV//F,EAAYh0B,KAAK+zH,QAAQ/jH,IAKzB,GAAyB,IAArB7b,UAAUC,OAad,GAAkB,mBAAPU,EAAX,CAMA,IAAI0B,EAAQwJ,KAAKkszB,SAASl8yB,EAAMlb,EAAIq0B,GACpC,IAAc,IAAV3yB,EAAiB,CACpB,IAAIq9B,EAAWG,EAAUx9B,GACrBwJ,KAAKmszB,eAERt4xB,EAAS/+B,GAAK81zB,EAGd5qzB,KAAK+zH,QAAQ/jH,GAAQgkB,EAAYA,EAAUl5B,SAE5Ck5B,EAAUjH,OAAOv2B,EAAO,EACzB,CAdA,MAFCo8B,QAAQ/lB,KAAK,+BAAiC/X,OAd/C,CACC,GAAIkL,KAAKmszB,aAGR,IAAK9m0B,EAAI,EAAGoK,EAAMukC,EAAU5/B,OAAQ/O,EAAIoK,EAAKpK,IAC5C2uC,EAAU3uC,GAAGyP,GAAK81zB,SAIb5qzB,KAAK+zH,QAAQ/jH,EAErB,CAoBD,EAMAwlZ,KAAM,SAAUxlZ,EAAMja,EAAMq2zB,GAC3B,IAAKpszB,KAAKqszB,QAAQr8yB,EAAMo8yB,GAAc,OAAOpszB,KAE7C,IAAImM,EAAQ62F,EAAO,CAAC,EAAGjtG,EAAM,CAC5Bia,KAAMA,EACNjiB,OAAQiS,KACRsszB,aAAcv2zB,GAAQA,EAAKu2zB,cAAgBtszB,OAG5C,GAAIA,KAAK+zH,QAAS,CACjB,IAAI//F,EAAYh0B,KAAK+zH,QAAQ/jH,GAC7B,GAAIgkB,EAAW,CACdh0B,KAAKmszB,aAAgBnszB,KAAKmszB,aAAe,GAAM,EAC/C,IAAK,IAAI9m0B,EAAI,EAAGoK,EAAMukC,EAAU5/B,OAAQ/O,EAAIoK,EAAKpK,IAAK,CACrD,IAAImzB,EAAIwb,EAAU3uC,GAEdyP,EAAK0jB,EAAE1jB,GACP0jB,EAAEiyF,MACLzqG,KAAKitH,IAAIj9G,EAAMlb,EAAI0jB,EAAEsR,KAEtBh1B,EAAGuL,KAAKmY,EAAEsR,KAAO9pB,KAAMmM,EACxB,CAEAnM,KAAKmszB,cACN,CACD,CAOA,OALIC,GAEHpszB,KAAKuszB,gBAAgBpgzB,GAGfnM,IACR,EAMAqszB,QAAS,SAAUr8yB,EAAMlb,EAAIq0B,EAASijyB,GACjB,iBAATp8yB,GACV4iB,QAAQ/lB,KAAK,mCAId,IAAIw2B,EAAMvuC,EACQ,mBAAPA,IACVs3zB,IAAct3zB,EACduuC,OAAMvsC,EACNqyB,OAAUryB,GAGX,IAAIk9B,EAAYh0B,KAAK+zH,SAAW/zH,KAAK+zH,QAAQ/jH,GAC7C,GAAIgkB,GAAaA,EAAU5/B,SACgB,IAAtC4L,KAAKkszB,SAASl8yB,EAAMqzB,EAAKla,GAC5B,OAAO,EAIT,GAAIijyB,EAEH,IAAK,IAAIruzB,KAAMiC,KAAKwszB,cACnB,GAAIxszB,KAAKwszB,cAAczuzB,GAAIsuzB,QAAQr8yB,EAAMlb,EAAIq0B,EAASijyB,GAAc,OAAO,EAG7E,OAAO,CACR,EAGAF,SAAU,SAAUl8yB,EAAMlb,EAAIq0B,GAC7B,IAAKnpB,KAAK+zH,QACT,OAAO,EAGR,IAAI//F,EAAYh0B,KAAK+zH,QAAQ/jH,IAAS,GACtC,IAAKlb,EACJ,QAASk/B,EAAU5/B,OAGhB+0B,IAAYnpB,OAEfmpB,OAAUryB,GAGX,IAAK,IAAIzR,EAAI,EAAGoK,EAAMukC,EAAU5/B,OAAQ/O,EAAIoK,EAAKpK,IAChD,GAAI2uC,EAAU3uC,GAAGyP,KAAOA,GAAMk/B,EAAU3uC,GAAGykC,MAAQX,EAClD,OAAO9jC,EAGT,OAAO,CAER,EAIAolH,KAAM,SAAUm5J,EAAO9uQ,EAAIq0B,GAG1B,GAAqB,iBAAVy6O,EACV,IAAK,IAAI5zP,KAAQ4zP,EAGhB5jQ,KAAKgszB,IAAIh8yB,EAAM4zP,EAAM5zP,GAAOlb,GAAI,QAOjC,IAAK,IAAIzP,EAAI,EAAGoK,GAFhBm0Q,EAAQknjB,EAAWlnjB,IAESxvQ,OAAQ/O,EAAIoK,EAAKpK,IAC5C2a,KAAKgszB,IAAIpojB,EAAMv+Q,GAAIyP,EAAIq0B,GAAS,GAIlC,OAAOnpB,IACR,EAIAyszB,eAAgB,SAAUn6yB,GAGzB,OAFAtS,KAAKwszB,cAAgBxszB,KAAKwszB,eAAiB,CAAC,EAC5CxszB,KAAKwszB,cAAcnyL,EAAM/nnB,IAAQA,EAC1BtS,IACR,EAIA0szB,kBAAmB,SAAUp6yB,GAI5B,OAHItS,KAAKwszB,sBACDxszB,KAAKwszB,cAAcnyL,EAAM/nnB,IAE1BtS,IACR,EAEAuszB,gBAAiB,SAAUvn0B,GAC1B,IAAK,IAAI+Y,KAAMiC,KAAKwszB,cACnBxszB,KAAKwszB,cAAczuzB,GAAIy3Z,KAAKxwa,EAAEgrB,KAAMgzF,EAAO,CAC1C27R,MAAO35Y,EAAE+I,OACT4+zB,eAAgB3n0B,EAAE+I,QAChB/I,IAAI,EAET,GAODo1c,EAAOlic,iBAAmBkic,EAAOzvV,GAOjCyvV,EAAOjic,oBAAsBiic,EAAOwyX,uBAAyBxyX,EAAOntU,IAIpEmtU,EAAOyyX,wBAA0BzyX,EAAO3vV,KAIxC2vV,EAAO0yX,UAAY1yX,EAAO5kC,KAI1B4kC,EAAO2yX,kBAAoB3yX,EAAOiyX,QAElC,IAAI7htB,EAAUghtB,EAAMxotB,OAAOo3V,GA0B3B,SAASxzO,EAAMrgO,EAAG5C,EAAG4H,GAEpByU,KAAKzZ,EAAKgF,EAAQ/F,KAAK+F,MAAMhF,GAAKA,EAElCyZ,KAAKrc,EAAK4H,EAAQ/F,KAAK+F,MAAM5H,GAAKA,CACnC,CAEA,IAAIqrxB,EAAQxpxB,KAAKwpxB,OAAS,SAAU7swB,GACnC,OAAOA,EAAI,EAAI3c,KAAKQ,MAAMmc,GAAK3c,KAAKsjE,KAAK3mD,EAC1C,EA4KA,SAAS6qzB,EAAQzm0B,EAAG5C,EAAG4H,GACtB,OAAIhF,aAAaqgO,EACTrgO,EAEJwpB,EAAQxpB,GACJ,IAAIqgO,EAAMrgO,EAAE,GAAIA,EAAE,IAEtBA,QACIA,EAES,iBAANA,GAAkB,MAAOA,GAAK,MAAOA,EACxC,IAAIqgO,EAAMrgO,EAAEA,EAAGA,EAAE5C,GAElB,IAAIijO,EAAMrgO,EAAG5C,EAAG4H,EACxB,CA2BA,SAAS0h0B,EAAOrzzB,EAAGC,GAClB,GAAKD,EAIL,IAFA,IAAI2+B,EAAS1+B,EAAI,CAACD,EAAGC,GAAKD,EAEjBvU,EAAI,EAAGoK,EAAM8oC,EAAOnkC,OAAQ/O,EAAIoK,EAAKpK,IAC7C2a,KAAKgjG,OAAOzqE,EAAOlzC,GAErB,CAkLA,SAAS6n0B,EAAStzzB,EAAGC,GACpB,OAAKD,GAAKA,aAAaqzzB,EACfrzzB,EAED,IAAIqzzB,EAAOrzzB,EAAGC,EACtB,CAgCA,SAASszzB,EAAaC,EAASC,GAC9B,GAAKD,EAIL,IAFA,IAAIE,EAAUD,EAAU,CAACD,EAASC,GAAWD,EAEpC/n0B,EAAI,EAAGoK,EAAM69zB,EAAQl5zB,OAAQ/O,EAAIoK,EAAKpK,IAC9C2a,KAAKgjG,OAAOsqtB,EAAQjo0B,GAEtB,CA6MA,SAASko0B,EAAe3zzB,EAAGC,GAC1B,OAAID,aAAauzzB,EACTvzzB,EAED,IAAIuzzB,EAAavzzB,EAAGC,EAC5B,CA2BA,SAAS4vN,EAAO9nF,EAAK4nF,EAAK8kJ,GACzB,GAAItoX,MAAM47I,IAAQ57I,MAAMwjO,GACvB,MAAM,IAAIhiN,MAAM,2BAA6Bo6H,EAAM,KAAO4nF,EAAM,KAKjEvpN,KAAK2hI,KAAOA,EAIZ3hI,KAAKupN,KAAOA,OAIAzyN,IAARu3W,IACHruW,KAAKquW,KAAOA,EAEd,CAkEA,SAASm/c,EAAS5zzB,EAAGC,EAAGjU,GACvB,OAAIgU,aAAa6vN,EACT7vN,EAEJmW,EAAQnW,IAAsB,iBAATA,EAAE,GACT,IAAbA,EAAExF,OACE,IAAIq1N,EAAO7vN,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEhB,IAAbA,EAAExF,OACE,IAAIq1N,EAAO7vN,EAAE,GAAIA,EAAE,IAEpB,KAEJA,QACIA,EAES,iBAANA,GAAkB,QAASA,EAC9B,IAAI6vN,EAAO7vN,EAAE+nI,IAAK,QAAS/nI,EAAIA,EAAE2vN,IAAM3vN,EAAE6nM,IAAK7nM,EAAEy0W,UAE9Cv3W,IAAN+C,EACI,KAED,IAAI4vN,EAAO7vN,EAAGC,EAAGjU,EACzB,CAlxBAghO,EAAMxmN,UAAY,CAIjB6kB,MAAO,WACN,OAAO,IAAI2hM,EAAM5mN,KAAKzZ,EAAGyZ,KAAKrc,EAC/B,EAIA2P,IAAK,SAAUu7B,GAEd,OAAO7uB,KAAKilB,QAAQs8C,KAAKyrvB,EAAQn+xB,GAClC,EAEA0yC,KAAM,SAAU1yC,GAIf,OAFA7uB,KAAKzZ,GAAKsoC,EAAMtoC,EAChByZ,KAAKrc,GAAKkrC,EAAMlrC,EACTqc,IACR,EAIAy3V,SAAU,SAAU5oU,GACnB,OAAO7uB,KAAKilB,QAAQwoyB,UAAUT,EAAQn+xB,GACvC,EAEA4+xB,UAAW,SAAU5+xB,GAGpB,OAFA7uB,KAAKzZ,GAAKsoC,EAAMtoC,EAChByZ,KAAKrc,GAAKkrC,EAAMlrC,EACTqc,IACR,EAIA0tzB,SAAU,SAAUzvxB,GACnB,OAAOj+B,KAAKilB,QAAQ0oyB,UAAU1vxB,EAC/B,EAEA0vxB,UAAW,SAAU1vxB,GAGpB,OAFAj+B,KAAKzZ,GAAK03C,EACVj+B,KAAKrc,GAAKs6C,EACHj+B,IACR,EAIAwqvB,WAAY,SAAUvstB,GACrB,OAAOj+B,KAAKilB,QAAQ2oyB,YAAY3vxB,EACjC,EAEA2vxB,YAAa,SAAU3vxB,GAGtB,OAFAj+B,KAAKzZ,GAAK03C,EACVj+B,KAAKrc,GAAKs6C,EACHj+B,IACR,EAOA6tzB,QAAS,SAAUh/xB,GAClB,OAAO,IAAI+3L,EAAM5mN,KAAKzZ,EAAIsoC,EAAMtoC,EAAGyZ,KAAKrc,EAAIkrC,EAAMlrC,EACnD,EAKAmq0B,UAAW,SAAUj/xB,GACpB,OAAO,IAAI+3L,EAAM5mN,KAAKzZ,EAAIsoC,EAAMtoC,EAAGyZ,KAAKrc,EAAIkrC,EAAMlrC,EACnD,EAIA4H,MAAO,WACN,OAAOyU,KAAKilB,QAAQ4iM,QACrB,EAEAA,OAAQ,WAGP,OAFA7nN,KAAKzZ,EAAIf,KAAK+F,MAAMyU,KAAKzZ,GACzByZ,KAAKrc,EAAI6B,KAAK+F,MAAMyU,KAAKrc,GAClBqc,IACR,EAIAha,MAAO,WACN,OAAOga,KAAKilB,QAAQ8oyB,QACrB,EAEAA,OAAQ,WAGP,OAFA/tzB,KAAKzZ,EAAIf,KAAKQ,MAAMga,KAAKzZ,GACzByZ,KAAKrc,EAAI6B,KAAKQ,MAAMga,KAAKrc,GAClBqc,IACR,EAIA8oD,KAAM,WACL,OAAO9oD,KAAKilB,QAAQ+oyB,OACrB,EAEAA,MAAO,WAGN,OAFAhuzB,KAAKzZ,EAAIf,KAAKsjE,KAAK9oD,KAAKzZ,GACxByZ,KAAKrc,EAAI6B,KAAKsjE,KAAK9oD,KAAKrc,GACjBqc,IACR,EAIAgvwB,MAAO,WACN,OAAOhvwB,KAAKilB,QAAQgpyB,QACrB,EAEAA,OAAQ,WAGP,OAFAjuzB,KAAKzZ,EAAIyoxB,EAAMhvwB,KAAKzZ,GACpByZ,KAAKrc,EAAIqrxB,EAAMhvwB,KAAKrc,GACbqc,IACR,EAIAkuzB,WAAY,SAAUr/xB,GAGrB,IAAItoC,GAFJsoC,EAAQm+xB,EAAQn+xB,IAEFtoC,EAAIyZ,KAAKzZ,EACnB5C,EAAIkrC,EAAMlrC,EAAIqc,KAAKrc,EAEvB,OAAO6B,KAAK0vB,KAAK3uB,EAAIA,EAAI5C,EAAIA,EAC9B,EAIAokO,OAAQ,SAAUl5L,GAGjB,OAFAA,EAAQm+xB,EAAQn+xB,IAEHtoC,IAAMyZ,KAAKzZ,GACjBsoC,EAAMlrC,IAAMqc,KAAKrc,CACzB,EAIA6D,SAAU,SAAUqnC,GAGnB,OAFAA,EAAQm+xB,EAAQn+xB,GAETrpC,KAAKM,IAAI+oC,EAAMtoC,IAAMf,KAAKM,IAAIka,KAAKzZ,IACnCf,KAAKM,IAAI+oC,EAAMlrC,IAAM6B,KAAKM,IAAIka,KAAKrc,EAC3C,EAIAqD,SAAU,WACT,MAAO,SACC6j0B,EAAU7qzB,KAAKzZ,GAAK,KACpBsk0B,EAAU7qzB,KAAKrc,GAAK,GAC7B,GAgEDsp0B,EAAO7szB,UAAY,CAOlB4iG,OAAQ,SAAU1wF,GACjB,IAAI67yB,EAAMC,EACV,IAAK97yB,EAAO,OAAOtS,KAEnB,GAAIsS,aAAes0M,GAA2B,iBAAXt0M,EAAI,IAAmB,MAAOA,EAChE67yB,EAAOC,EAAOpB,EAAQ16yB,QAMtB,GAHA67yB,GADA77yB,EAAM46yB,EAAS56yB,IACJ5oB,IACX0k0B,EAAO97yB,EAAI3oB,KAENwk0B,IAASC,EAAQ,OAAOpuzB,KAgB9B,OATKA,KAAKtW,KAAQsW,KAAKrW,KAItBqW,KAAKtW,IAAInD,EAAIf,KAAKkE,IAAIyk0B,EAAK5n0B,EAAGyZ,KAAKtW,IAAInD,GACvCyZ,KAAKrW,IAAIpD,EAAIf,KAAKmE,IAAIyk0B,EAAK7n0B,EAAGyZ,KAAKrW,IAAIpD,GACvCyZ,KAAKtW,IAAI/F,EAAI6B,KAAKkE,IAAIyk0B,EAAKxq0B,EAAGqc,KAAKtW,IAAI/F,GACvCqc,KAAKrW,IAAIhG,EAAI6B,KAAKmE,IAAIyk0B,EAAKzq0B,EAAGqc,KAAKrW,IAAIhG,KANvCqc,KAAKtW,IAAMyk0B,EAAKlpyB,QAChBjlB,KAAKrW,IAAMyk0B,EAAKnpyB,SAOVjlB,IACR,EAIAgpU,UAAW,SAAUz9U,GACpB,OAAOyh0B,GACEhtzB,KAAKtW,IAAInD,EAAIyZ,KAAKrW,IAAIpD,GAAK,GAC3ByZ,KAAKtW,IAAI/F,EAAIqc,KAAKrW,IAAIhG,GAAK,EAAG4H,EACxC,EAIA8i0B,cAAe,WACd,OAAOrB,EAAQhtzB,KAAKtW,IAAInD,EAAGyZ,KAAKrW,IAAIhG,EACrC,EAIA2q0B,YAAa,WACZ,OAAOtB,EAAQhtzB,KAAKrW,IAAIpD,EAAGyZ,KAAKtW,IAAI/F,EACrC,EAIA4q0B,WAAY,WACX,OAAOvuzB,KAAKtW,GACb,EAIA8k0B,eAAgB,WACf,OAAOxuzB,KAAKrW,GACb,EAIAqva,QAAS,WACR,OAAOh5Z,KAAKrW,IAAI8tW,SAASz3V,KAAKtW,IAC/B,EAOAlC,SAAU,SAAU8qB,GACnB,IAAI5oB,EAAKC,EAeT,OAZC2oB,EADqB,iBAAXA,EAAI,IAAmBA,aAAes0M,EAC1CommB,EAAQ16yB,GAER46yB,EAAS56yB,cAGG26yB,GAClBvj0B,EAAM4oB,EAAI5oB,IACVC,EAAM2oB,EAAI3oB,KAEVD,EAAMC,EAAM2oB,EAGL5oB,EAAInD,GAAKyZ,KAAKtW,IAAInD,GAClBoD,EAAIpD,GAAKyZ,KAAKrW,IAAIpD,GAClBmD,EAAI/F,GAAKqc,KAAKtW,IAAI/F,GAClBgG,EAAIhG,GAAKqc,KAAKrW,IAAIhG,CAC3B,EAKAy3Z,WAAY,SAAUr7W,GACrBA,EAASmtxB,EAASntxB,GAElB,IAAIr2C,EAAMsW,KAAKtW,IACXC,EAAMqW,KAAKrW,IACXwk0B,EAAOpuxB,EAAOr2C,IACd0k0B,EAAOruxB,EAAOp2C,IACd8k0B,EAAeL,EAAK7n0B,GAAKmD,EAAInD,GAAO4n0B,EAAK5n0B,GAAKoD,EAAIpD,EAClDmo0B,EAAeN,EAAKzq0B,GAAK+F,EAAI/F,GAAOwq0B,EAAKxq0B,GAAKgG,EAAIhG,EAEtD,OAAO8q0B,GAAeC,CACvB,EAKAC,SAAU,SAAU5uxB,GACnBA,EAASmtxB,EAASntxB,GAElB,IAAIr2C,EAAMsW,KAAKtW,IACXC,EAAMqW,KAAKrW,IACXwk0B,EAAOpuxB,EAAOr2C,IACd0k0B,EAAOruxB,EAAOp2C,IACdil0B,EAAaR,EAAK7n0B,EAAImD,EAAInD,GAAO4n0B,EAAK5n0B,EAAIoD,EAAIpD,EAC9Cso0B,EAAaT,EAAKzq0B,EAAI+F,EAAI/F,GAAOwq0B,EAAKxq0B,EAAIgG,EAAIhG,EAElD,OAAOir0B,GAAaC,CACrB,EAIA/lnB,QAAS,WACR,SAAU9oM,KAAKtW,MAAOsW,KAAKrW,IAC5B,EAOA69J,IAAK,SAAUsnqB,GACd,IAAIpl0B,EAAMsW,KAAKtW,IACfC,EAAMqW,KAAKrW,IACXol0B,EAAevp0B,KAAKM,IAAI4D,EAAInD,EAAIoD,EAAIpD,GAAKuo0B,EACzCE,EAAcxp0B,KAAKM,IAAI4D,EAAI/F,EAAIgG,EAAIhG,GAAKmr0B,EAGxC,OAAO5B,EACNF,EAAQtj0B,EAAInD,EAAIwo0B,EAAcrl0B,EAAI/F,EAAIqr0B,GACtChC,EAAQrj0B,EAAIpD,EAAIwo0B,EAAcpl0B,EAAIhG,EAAIqr0B,GACxC,EAKAjnmB,OAAQ,SAAUhoL,GACjB,QAAKA,IAELA,EAASmtxB,EAASntxB,GAEX//B,KAAKtW,IAAIq+N,OAAOhoL,EAAOwuxB,eAC7BvuzB,KAAKrW,IAAIo+N,OAAOhoL,EAAOyuxB,kBACzB,GAwDDrB,EAAa/szB,UAAY,CAQxB4iG,OAAQ,SAAU1wF,GACjB,IAEI28yB,EAAKC,EAFL58e,EAAKtyU,KAAKmvzB,WACV58e,EAAKvyU,KAAKovzB,WAGd,GAAI98yB,aAAem3M,EAClBwlmB,EAAM38yB,EACN48yB,EAAM58yB,MAEA,MAAIA,aAAe66yB,GAOzB,OAAO76yB,EAAMtS,KAAKgjG,OAAOwqtB,EAASl7yB,IAAQi7yB,EAAej7yB,IAAQtS,KAHjE,GAHAivzB,EAAM38yB,EAAI68yB,WACVD,EAAM58yB,EAAI88yB,YAELH,IAAQC,EAAO,OAAOlvzB,IAI5B,CAYA,OAVKsyU,GAAOC,GAIXD,EAAG3wM,IAAMn8I,KAAKkE,IAAIul0B,EAAIttrB,IAAK2wM,EAAG3wM,KAC9B2wM,EAAG/oH,IAAM/jO,KAAKkE,IAAIul0B,EAAI1lmB,IAAK+oH,EAAG/oH,KAC9BgpH,EAAG5wM,IAAMn8I,KAAKmE,IAAIul0B,EAAIvtrB,IAAK4wM,EAAG5wM,KAC9B4wM,EAAGhpH,IAAM/jO,KAAKmE,IAAIul0B,EAAI3lmB,IAAKgpH,EAAGhpH,OAN9BvpN,KAAKmvzB,WAAa,IAAI1lmB,EAAOwlmB,EAAIttrB,IAAKstrB,EAAI1lmB,KAC1CvpN,KAAKovzB,WAAa,IAAI3lmB,EAAOylmB,EAAIvtrB,IAAKutrB,EAAI3lmB,MAQpCvpN,IACR,EAMAwnJ,IAAK,SAAUsnqB,GACd,IAAIx8e,EAAKtyU,KAAKmvzB,WACV58e,EAAKvyU,KAAKovzB,WACVL,EAAevp0B,KAAKM,IAAIwsV,EAAG3wM,IAAM4wM,EAAG5wM,KAAOmtrB,EAC3CE,EAAcxp0B,KAAKM,IAAIwsV,EAAG/oH,IAAMgpH,EAAGhpH,KAAOulmB,EAE9C,OAAO,IAAI3B,EACH,IAAI1jmB,EAAO6oH,EAAG3wM,IAAMotrB,EAAcz8e,EAAG/oH,IAAMylmB,GAC3C,IAAIvlmB,EAAO8oH,EAAG5wM,IAAMotrB,EAAcx8e,EAAGhpH,IAAMylmB,GACpD,EAIAhmf,UAAW,WACV,OAAO,IAAIv/G,GACFzpN,KAAKmvzB,WAAWxtrB,IAAM3hI,KAAKovzB,WAAWztrB,KAAO,GAC7C3hI,KAAKmvzB,WAAW5lmB,IAAMvpN,KAAKovzB,WAAW7lmB,KAAO,EACvD,EAIA8lmB,aAAc,WACb,OAAOrvzB,KAAKmvzB,UACb,EAIAG,aAAc,WACb,OAAOtvzB,KAAKovzB,UACb,EAIAG,aAAc,WACb,OAAO,IAAI9lmB,EAAOzpN,KAAKwvzB,WAAYxvzB,KAAKyvzB,UACzC,EAIAC,aAAc,WACb,OAAO,IAAIjmmB,EAAOzpN,KAAK2vzB,WAAY3vzB,KAAK4vzB,UACzC,EAIAH,QAAS,WACR,OAAOzvzB,KAAKmvzB,WAAW5lmB,GACxB,EAIAommB,SAAU,WACT,OAAO3vzB,KAAKmvzB,WAAWxtrB,GACxB,EAIAiurB,QAAS,WACR,OAAO5vzB,KAAKovzB,WAAW7lmB,GACxB,EAIAimmB,SAAU,WACT,OAAOxvzB,KAAKovzB,WAAWztrB,GACxB,EAQAn6I,SAAU,SAAU8qB,GAElBA,EADqB,iBAAXA,EAAI,IAAmBA,aAAem3M,GAAU,QAASn3M,EAC7Dk7yB,EAASl7yB,GAETi7yB,EAAej7yB,GAGtB,IAEI28yB,EAAKC,EAFL58e,EAAKtyU,KAAKmvzB,WACV58e,EAAKvyU,KAAKovzB,WAUd,OAPI98yB,aAAe66yB,GAClB8B,EAAM38yB,EAAI+8yB,eACVH,EAAM58yB,EAAIg9yB,gBAEVL,EAAMC,EAAM58yB,EAGL28yB,EAAIttrB,KAAO2wM,EAAG3wM,KAASutrB,EAAIvtrB,KAAO4wM,EAAG5wM,KACrCstrB,EAAI1lmB,KAAO+oH,EAAG/oH,KAAS2lmB,EAAI3lmB,KAAOgpH,EAAGhpH,GAC9C,EAIA6xL,WAAY,SAAUr7W,GACrBA,EAASwtxB,EAAextxB,GAExB,IAAIuyS,EAAKtyU,KAAKmvzB,WACV58e,EAAKvyU,KAAKovzB,WACVH,EAAMlvxB,EAAOsvxB,eACbH,EAAMnvxB,EAAOuvxB,eAEbO,EAAiBX,EAAIvtrB,KAAO2wM,EAAG3wM,KAASstrB,EAAIttrB,KAAO4wM,EAAG5wM,IACtDmurB,EAAiBZ,EAAI3lmB,KAAO+oH,EAAG/oH,KAAS0lmB,EAAI1lmB,KAAOgpH,EAAGhpH,IAE1D,OAAOsmmB,GAAiBC,CACzB,EAIAnB,SAAU,SAAU5uxB,GACnBA,EAASwtxB,EAAextxB,GAExB,IAAIuyS,EAAKtyU,KAAKmvzB,WACV58e,EAAKvyU,KAAKovzB,WACVH,EAAMlvxB,EAAOsvxB,eACbH,EAAMnvxB,EAAOuvxB,eAEbS,EAAeb,EAAIvtrB,IAAM2wM,EAAG3wM,KAASstrB,EAAIttrB,IAAM4wM,EAAG5wM,IAClDqurB,EAAed,EAAI3lmB,IAAM+oH,EAAG/oH,KAAS0lmB,EAAI1lmB,IAAMgpH,EAAGhpH,IAEtD,OAAOwmmB,GAAeC,CACvB,EAIAC,aAAc,WACb,MAAO,CAACjwzB,KAAKyvzB,UAAWzvzB,KAAK2vzB,WAAY3vzB,KAAK4vzB,UAAW5vzB,KAAKwvzB,YAAYtxzB,KAAK,IAChF,EAIA6pN,OAAQ,SAAUhoL,EAAQmwxB,GACzB,QAAKnwxB,IAELA,EAASwtxB,EAAextxB,GAEjB//B,KAAKmvzB,WAAWpnmB,OAAOhoL,EAAOsvxB,eAAgBa,IAC9ClwzB,KAAKovzB,WAAWrnmB,OAAOhoL,EAAOuvxB,eAAgBY,GACtD,EAIApnnB,QAAS,WACR,SAAU9oM,KAAKmvzB,aAAcnvzB,KAAKovzB,WACnC,GA+DD3lmB,EAAOrpN,UAAY,CAGlB2nN,OAAQ,SAAUz1M,EAAK49yB,GACtB,QAAK59yB,IAELA,EAAMk7yB,EAASl7yB,GAEF9sB,KAAKmE,IACVnE,KAAKM,IAAIka,KAAK2hI,IAAMrvH,EAAIqvH,KACxBn8I,KAAKM,IAAIka,KAAKupN,IAAMj3M,EAAIi3M,aAEAzyN,IAAdo5zB,EAA0B,KAASA,GACtD,EAIAlp0B,SAAU,SAAUwxF,GACnB,MAAO,UACCqyuB,EAAU7qzB,KAAK2hI,IAAKnpD,GAAa,KACjCqyuB,EAAU7qzB,KAAKupN,IAAK/wI,GAAa,GAC1C,EAIA01uB,WAAY,SAAUrtwB,GACrB,OAAOsvwB,EAAM53zB,SAASyH,KAAMwtzB,EAAS3swB,GACtC,EAIAyB,KAAM,WACL,OAAO6twB,EAAMC,WAAWpwzB,KACzB,EAIAktzB,SAAU,SAAUmD,GACnB,IAAIC,EAAc,IAAMD,EAAe,SACnCE,EAAcD,EAAc9q0B,KAAK6xB,IAAK7xB,KAAKytB,GAAK,IAAOjT,KAAK2hI,KAEhE,OAAO4rrB,EACC,CAACvtzB,KAAK2hI,IAAM2urB,EAAatwzB,KAAKupN,IAAMgnmB,GACpC,CAACvwzB,KAAK2hI,IAAM2urB,EAAatwzB,KAAKupN,IAAMgnmB,GAC7C,EAEAtryB,MAAO,WACN,OAAO,IAAIwkM,EAAOzpN,KAAK2hI,IAAK3hI,KAAKupN,IAAKvpN,KAAKquW,IAC5C,GA0DD,IAwLM9qX,EAxLFit0B,EAAM,CAGTC,cAAe,SAAUxlE,EAAQ12kB,GAChC,IAAIm8oB,EAAiB1wzB,KAAK22e,WAAWlB,QAAQw1Q,GACzCrguB,EAAQ5qB,KAAK4qB,MAAM2pJ,GAEvB,OAAOv0K,KAAK2wzB,eAAeC,WAAWF,EAAgB9lyB,EACvD,EAKAimyB,cAAe,SAAUhiyB,EAAO0lJ,GAC/B,IAAI3pJ,EAAQ5qB,KAAK4qB,MAAM2pJ,GACnBu8oB,EAAqB9wzB,KAAK2wzB,eAAeI,YAAYliyB,EAAOjE,GAEhE,OAAO5qB,KAAK22e,WAAWq6U,UAAUF,EAClC,EAKAr7U,QAAS,SAAUw1Q,GAClB,OAAOjrvB,KAAK22e,WAAWlB,QAAQw1Q,EAChC,EAKA+lE,UAAW,SAAUniyB,GACpB,OAAO7uB,KAAK22e,WAAWq6U,UAAUniyB,EAClC,EAMAjE,MAAO,SAAU2pJ,GAChB,OAAO,IAAM/uL,KAAKC,IAAI,EAAG8uL,EAC1B,EAKAA,KAAM,SAAU3pJ,GACf,OAAOplC,KAAKS,IAAI2kC,EAAQ,KAAOplC,KAAKU,GACrC,EAIA+q0B,mBAAoB,SAAU18oB,GAC7B,GAAIv0K,KAAKkxzB,SAAY,OAAO,KAE5B,IAAIr3zB,EAAImG,KAAK22e,WAAW52c,OACpB98C,EAAI+c,KAAK4qB,MAAM2pJ,GAInB,OAAO,IAAI04oB,EAHDjtzB,KAAK2wzB,eAAevn0B,UAAUyQ,EAAEnQ,IAAKzG,GACrC+c,KAAK2wzB,eAAevn0B,UAAUyQ,EAAElQ,IAAK1G,GAGhD,EAqBAiu0B,UAAU,EAKVd,WAAY,SAAUnlE,GACrB,IAAI1hiB,EAAMvpN,KAAKmxzB,QAAUzG,EAAQz/D,EAAO1hiB,IAAKvpN,KAAKmxzB,SAAS,GAAQlmE,EAAO1hiB,IAI1E,OAAO,IAAIE,EAHDzpN,KAAKoxzB,QAAU1G,EAAQz/D,EAAOtpnB,IAAK3hI,KAAKoxzB,SAAS,GAAQnmE,EAAOtpnB,IAGnD4nF,EAFb0hiB,EAAO58Y,IAGlB,EAMAgjd,iBAAkB,SAAUtxxB,GAC3B,IAAI5iC,EAAS4iC,EAAOipS,YAChBsof,EAAYtxzB,KAAKowzB,WAAWjzzB,GAC5Bo0zB,EAAWp0zB,EAAOwkI,IAAM2vrB,EAAU3vrB,IAClC6vrB,EAAWr0zB,EAAOosN,IAAM+nmB,EAAU/nmB,IAEtC,GAAiB,IAAbgomB,GAA+B,IAAbC,EACrB,OAAOzxxB,EAGR,IAAIuyS,EAAKvyS,EAAOsvxB,eACZ98e,EAAKxyS,EAAOuvxB,eAIhB,OAAO,IAAInC,EAHC,IAAI1jmB,EAAO6oH,EAAG3wM,IAAM4vrB,EAAUj/e,EAAG/oH,IAAMiomB,GACvC,IAAI/nmB,EAAO8oH,EAAG5wM,IAAM4vrB,EAAUh/e,EAAGhpH,IAAMiomB,GAGpD,GAaGrB,EAAQnttB,EAAO,CAAC,EAAGwttB,EAAK,CAC3BW,QAAS,EAAE,IAAK,KAKhBv2yB,EAAG,OAGHriB,SAAU,SAAUk5zB,EAASC,GAC5B,IAAI1jyB,EAAMxoC,KAAKytB,GAAK,IAChBitL,EAAOuxnB,EAAQ9vrB,IAAM3zG,EACrBmyK,EAAOuxnB,EAAQ/vrB,IAAM3zG,EACrB2jyB,EAAUns0B,KAAK4wB,KAAKs7yB,EAAQ/vrB,IAAM8vrB,EAAQ9vrB,KAAO3zG,EAAM,GACvD4jyB,EAAUps0B,KAAK4wB,KAAKs7yB,EAAQnomB,IAAMkomB,EAAQlomB,KAAOv7L,EAAM,GACvDp0B,EAAI+3zB,EAAUA,EAAUns0B,KAAK6xB,IAAI6oL,GAAQ16M,KAAK6xB,IAAI8oL,GAAQyxnB,EAAUA,EACpEhs0B,EAAI,EAAIJ,KAAK4vB,MAAM5vB,KAAK0vB,KAAKtb,GAAIpU,KAAK0vB,KAAK,EAAItb,IACnD,OAAOoG,KAAK4a,EAAIh1B,CACjB,IAYGis0B,EAAc,QAEdC,EAAoB,CAEvBl3yB,EAAGi3yB,EACHE,aAAc,cAEdt8U,QAAS,SAAUw1Q,GAClB,IAAI1nwB,EAAIiC,KAAKytB,GAAK,IACdtpB,EAAMqW,KAAK+xzB,aACXpwrB,EAAMn8I,KAAKmE,IAAInE,KAAKkE,IAAIC,EAAKshwB,EAAOtpnB,MAAOh4I,GAC3CysB,EAAM5wB,KAAK4wB,IAAIurH,EAAMp+I,GAEzB,OAAO,IAAIqjO,EACV5mN,KAAK4a,EAAIqwuB,EAAO1hiB,IAAMhmO,EACtByc,KAAK4a,EAAIp1B,KAAKS,KAAK,EAAImwB,IAAQ,EAAIA,IAAQ,EAC7C,EAEA46yB,UAAW,SAAUniyB,GACpB,IAAItrC,EAAI,IAAMiC,KAAKytB,GAEnB,OAAO,IAAIw2M,GACT,EAAIjkO,KAAKkwG,KAAKlwG,KAAKm0F,IAAI9qD,EAAMlrC,EAAIqc,KAAK4a,IAAOp1B,KAAKytB,GAAK,GAAM1vB,EAC9DsrC,EAAMtoC,EAAIhD,EAAIyc,KAAK4a,EACrB,EAEAmlB,QACKx8C,EAAIsu0B,EAAcrs0B,KAAKytB,GACpB,IAAIg6yB,EAAO,EAAE1p0B,GAAIA,GAAI,CAACA,EAAGA,MAyBlC,SAASyu0B,EAAep4zB,EAAGC,EAAGjU,EAAGrC,GAChC,GAAIwsB,EAAQnW,GAMX,OAJAoG,KAAKwD,GAAK5J,EAAE,GACZoG,KAAK2D,GAAK/J,EAAE,GACZoG,KAAKiF,GAAKrL,EAAE,QACZoG,KAAKirG,GAAKrxG,EAAE,IAGboG,KAAKwD,GAAK5J,EACVoG,KAAK2D,GAAK9J,EACVmG,KAAKiF,GAAKrf,EACVoa,KAAKirG,GAAK1nH,CACX,CAuCA,SAAS0u0B,EAAiBr4zB,EAAGC,EAAGjU,EAAGrC,GAClC,OAAO,IAAIyu0B,EAAep4zB,EAAGC,EAAGjU,EAAGrC,EACpC,CAvCAyu0B,EAAe5xzB,UAAY,CAI1BhX,UAAW,SAAUylC,EAAOjE,GAC3B,OAAO5qB,KAAK4wzB,WAAW/hyB,EAAM5J,QAAS2F,EACvC,EAGAgmyB,WAAY,SAAU/hyB,EAAOjE,GAI5B,OAHAA,EAAQA,GAAS,EACjBiE,EAAMtoC,EAAIqkC,GAAS5qB,KAAKwD,GAAKqrB,EAAMtoC,EAAIyZ,KAAK2D,IAC5CkrB,EAAMlrC,EAAIinC,GAAS5qB,KAAKiF,GAAK4pB,EAAMlrC,EAAIqc,KAAKirG,IACrCp8E,CACR,EAKAkiyB,YAAa,SAAUliyB,EAAOjE,GAE7B,OADAA,EAAQA,GAAS,EACV,IAAIg8L,GACF/3L,EAAMtoC,EAAIqkC,EAAQ5qB,KAAK2D,IAAM3D,KAAKwD,IAClCqrB,EAAMlrC,EAAIinC,EAAQ5qB,KAAKirG,IAAMjrG,KAAKiF,GAC5C,GA0BD,IAAIitzB,EAAWlvtB,EAAO,CAAC,EAAGmttB,EAAO,CAChC3huB,KAAM,YACNmoZ,WAAYm7U,EAEZnB,eAAiB,WAChB,IAAI/lyB,EAAQ,IAAOplC,KAAKytB,GAAK6+yB,EAAkBl3yB,GAC/C,OAAOq3yB,EAAiBrnyB,EAAO,IAAMA,EAAO,GAC7C,CAHgB,KAMbunyB,EAAanvtB,EAAO,CAAC,EAAGkvtB,EAAU,CACrC1juB,KAAM,gBAUP,SAAS4juB,EAAU7+zB,GAClB,OAAO9K,SAAS8rc,gBAAgB,6BAA8Bhhc,EAC/D,CAKA,SAAS8+zB,EAAaC,EAAOnkuB,GAC5B,IACA9oG,EAAG2gC,EAAGv2B,EAAK8i0B,EAAMh6xB,EAAQp4B,EADrBsS,EAAM,GAGV,IAAKptB,EAAI,EAAGoK,EAAM6i0B,EAAMl+zB,OAAQ/O,EAAIoK,EAAKpK,IAAK,CAG7C,IAAK2gC,EAAI,EAAGusyB,GAFZh6xB,EAAS+5xB,EAAMjt0B,IAEW+O,OAAQ4xB,EAAIusyB,EAAMvsyB,IAE3CvT,IAAQuT,EAAI,IAAM,MADlB7lB,EAAIo4B,EAAOvS,IACgBz/B,EAAI,IAAM4Z,EAAExc,EAIxC8uB,GAAO07E,EAAU2+K,GAAQugM,IAAM,IAAM,IAAO,EAC7C,CAGA,OAAO56b,GAAO,MACf,CAiBA,IAmIK20M,EAnID19L,EAAQjhC,SAASC,gBAAgBghC,MAGjCuhV,EAAK,kBAAmB9jX,OAGxBqr0B,GAAQvnd,IAAOxiX,SAASyP,iBAGxBq6C,GAAO,gBAAiBjkD,aAAe,iBAAkB7F,UAIzD8tI,GAASk8rB,GAAkB,UAI3BjshB,GAAUishB,GAAkB,WAG5BC,GAAYD,GAAkB,cAAgBA,GAAkB,aAGhEE,GAAYxsyB,SAAS,qBAAqBd,KAAK/2B,UAAUC,WAAW,GAAI,IAExEqk0B,GAAepshB,IAAWishB,GAAkB,WAAaE,GAAY,OAAS,cAAexr0B,QAG7F0r0B,KAAU1r0B,OAAO0r0B,MAGjB/gmB,IAAUv/K,IAAQkgxB,GAAkB,UAGpCK,GAAQL,GAAkB,WAAal8rB,KAAWs8rB,KAAU5nd,EAG5Dj5I,IAAUF,IAAU2gmB,GAAkB,UAEtCM,GAAUN,GAAkB,WAI5BO,GAAU,gBAAiBtpyB,EAG3B19B,GAA4C,IAAtCsC,UAAU+6B,SAAS9gC,QAAQ,OAGjC0q0B,GAAOhod,GAAO,eAAgBvhV,EAG9BwpyB,GAAY,oBAAqB/r0B,QAAY,QAAS,IAAIA,OAAOgs0B,kBAAuBT,GAGxFU,GAAU,mBAAoB1pyB,EAI9B2pyB,IAASls0B,OAAOms0B,eAAiBL,IAAQC,IAAYE,MAAaJ,KAAYD,GAG9Ezwa,GAAgC,oBAAhBgxO,aAA+Bm/L,GAAkB,UAGjEc,GAAejxa,IAAU/rR,GAIzBi9rB,GAAiBlxa,IAAU4wa,GAI3BO,IAAats0B,OAAOus0B,cAAgBvs0B,OAAOws0B,eAI3Cl8a,MAAatwZ,OAAOus0B,eAAgBD,IAOpCG,GAAc,iBAAkBzs0B,UAAYA,OAAO0s0B,WAKnDr1V,IAASr3e,OAAO2s0B,aAAeF,IAAen8a,IAG9Cs8a,GAAczxa,IAAUuwa,GAIxBmB,GAAc1xa,IAAUwwa,GAIxBmB,IAAU9s0B,OAAOmE,kBAAqBnE,OAAOylV,OAAOsnf,WAAa/s0B,OAAOylV,OAAOunf,aAAgB,EAI/FC,GAAiB,WACpB,IAAIC,GAAwB,EAC5B,IACC,IAAItkyB,EAAOjmC,OAAOwY,eAAe,CAAC,EAAG,UAAW,CAC/CzO,IAAK,WACJwg0B,GAAwB,CACzB,IAEDlt0B,OAAO+Q,iBAAiB,0BAA2B0yzB,EAAS76xB,GAC5D5oC,OAAOgR,oBAAoB,0BAA2ByyzB,EAAS76xB,EAChE,CAAE,MAAO/qC,GAET,CACA,OAAOqv0B,CACR,CAdoB,GAkBhBC,KACM7r0B,SAASskB,cAAc,UAAUugB,WAKvCinyB,MAAW9r0B,SAAS8rc,kBAAmB69X,EAAU,OAAOoC,eAExDC,KAAcF,MACbntmB,EAAM3+N,SAASskB,cAAc,QAC7B69K,UAAY,SAC2C,gCAAnDw8B,EAAIx+F,YAAcw+F,EAAIx+F,WAAWwxT,eAKtCs6Y,IAAOH,IAAU,WACpB,IACC,IAAIntmB,EAAM3+N,SAASskB,cAAc,OACjCq6M,EAAIx8B,UAAY,qBAEhB,IAAIp1E,EAAQ4xG,EAAIx+F,WAGhB,OAFApT,EAAM9rF,MAAMw6L,SAAW,oBAEhB1uG,GAA+B,iBAAdA,EAAMm/sB,GAE/B,CAAE,MAAO3v0B,GACR,OAAO,CACR,CACD,CAboB,GAsBpB,SAASyt0B,GAAkBhgzB,GAC1B,OAAOnkB,UAAUC,UAAUnG,cAAcG,QAAQkqB,IAAQ,CAC1D,CAGA,IAAIq6P,GAAU,CACbm+F,GAAIA,EACJund,MAAOA,GACPjgxB,KAAMA,GACNgkF,OAAQA,GACRiwK,QAASA,GACTkshB,UAAWA,GACXE,aAAcA,GACdC,MAAOA,GACP/gmB,OAAQA,GACRghmB,MAAOA,GACP9gmB,OAAQA,GACR+gmB,QAASA,GACTC,QAASA,GACThn0B,IAAKA,GACLin0B,KAAMA,GACNC,SAAUA,GACVE,QAASA,GACTC,MAAOA,GACP/wa,OAAQA,GACRixa,aAAcA,GACdC,eAAgBA,GAChBC,UAAWA,GACXh8a,QAASA,GACT+mF,MAAOA,GACPo1V,YAAaA,GACbG,YAAaA,GACbC,YAAaA,GACbC,OAAQA,GACRG,cAAeA,GACf/myB,OAAQinyB,GACRjnX,IAAKknX,GACLG,IAAKA,GACLD,UAAWA,GACXG,IA5C+C,IAAtCtm0B,UAAU+6B,SAAS9gC,QAAQ,OA6CpCss0B,MA1CmD,IAAxCvm0B,UAAU+6B,SAAS9gC,QAAQ,UAiDnCus0B,GAAiBhojB,GAAQ2mjB,UAAY,gBAAoB,cACzDsB,GAAiBjojB,GAAQ2mjB,UAAY,gBAAoB,cACzDuB,GAAiBlojB,GAAQ2mjB,UAAY,cAAoB,YACzDwB,GAAiBnojB,GAAQ2mjB,UAAY,kBAAoB,gBACzDyB,GAAS,CACZjxwB,WAAc6wwB,GACd5wwB,UAAc6wwB,GACd5wwB,SAAc6wwB,GACdG,YAAcF,IAEX1tlB,GAAS,CACZtjL,WAuED,SAAyB/F,EAASl5D,GAE7BA,EAAEow0B,sBAAwBpw0B,EAAEuhc,cAAgBvhc,EAAEow0B,sBACjDzosB,GAAe3nI,GAEhBqw0B,GAAen3wB,EAASl5D,EACzB,EA5ECk/D,UAAcmxwB,GACdlxwB,SAAckxwB,GACdF,YAAcE,IAEXC,GAAY,CAAC,EACbC,IAAsB,EAK1B,SAASC,GAAmBljzB,EAAKtC,EAAMkuC,GAItC,MAHa,eAATluC,IAoCCulzB,KAEJ9s0B,SAASyP,iBAAiB48zB,GAAcW,IAAoB,GAC5Dht0B,SAASyP,iBAAiB68zB,GAAcW,IAAoB,GAC5Djt0B,SAASyP,iBAAiB88zB,GAAYW,IAAkB,GACxDlt0B,SAASyP,iBAAiB+8zB,GAAgBU,IAAkB,GAE5DJ,IAAsB,IAxClBhulB,GAAOv3N,IAIZkuC,EAAUqpL,GAAOv3N,GAAM0rC,KAAK17C,KAAMk+C,GAClC5rC,EAAIpa,iBAAiBg9zB,GAAOllzB,GAAOkuC,GAAS,GACrCA,IALNtrB,QAAQ/lB,KAAK,yBAA0BmD,GAChC46yB,EAKT,CAUA,SAAS6K,GAAmBzw0B,GAC3Bsw0B,GAAUtw0B,EAAE64b,WAAa74b,CAC1B,CAEA,SAAS0w0B,GAAmB1w0B,GACvBsw0B,GAAUtw0B,EAAE64b,aACfy3Y,GAAUtw0B,EAAE64b,WAAa74b,EAE3B,CAEA,SAAS2w0B,GAAiB3w0B,UAClBsw0B,GAAUtw0B,EAAE64b,UACpB,CAeA,SAASw3Y,GAAen3wB,EAASl5D,GAChC,GAAIA,EAAEuhc,eAAiBvhc,EAAE4w0B,sBAAwB,SAAjD,CAGA,IAAK,IAAIvw0B,KADTL,EAAEo3C,QAAU,GACEk5xB,GACbtw0B,EAAEo3C,QAAQtoC,KAAKwh0B,GAAUjw0B,IAE1BL,EAAEgkc,eAAiB,CAAChkc,GAEpBk5D,EAAQl5D,EAR6D,CAStE,CAkHA,IA8OI6w0B,GACAC,GACAC,GAwCAC,GAAiBC,GAxRjBC,GAAYC,GACf,CAAC,YAAa,kBAAmB,aAAc,eAAgB,gBAO5DC,GAAaD,GAChB,CAAC,mBAAoB,aAAc,cAAe,gBAAiB,iBAIhEE,GACY,qBAAfD,IAAoD,gBAAfA,GAA+BA,GAAa,MAAQ,gBAM1F,SAASvi0B,GAAIkK,GACZ,MAAqB,iBAAPA,EAAkBtV,SAAS6zE,eAAev+D,GAAMA,CAC/D,CAKA,SAAS0/B,GAASF,EAAI7T,GACrB,IAAI/jC,EAAQ43C,EAAG7T,MAAMA,IAAW6T,EAAG+4xB,cAAgB/4xB,EAAG+4xB,aAAa5syB,GAEnE,KAAM/jC,GAAmB,SAAVA,IAAqB8C,SAASvB,YAAa,CACzD,IAAIiC,EAAMV,SAASvB,YAAYmB,iBAAiBk1C,EAAI,MACpD53C,EAAQwD,EAAMA,EAAIugC,GAAS,IAC5B,CACA,MAAiB,SAAV/jC,EAAmB,KAAOA,CAClC,CAIA,SAAS4w0B,GAASvltB,EAASlH,EAAWhkD,GACrC,IAAIvoB,EAAK90C,SAASskB,cAAcikG,GAMhC,OALAzzE,EAAGusE,UAAYA,GAAa,GAExBhkD,GACHA,EAAUqqC,YAAY5yD,GAEhBA,CACR,CAIA,SAASqF,GAAOrF,GACf,IAAI91C,EAAS81C,EAAGv1C,WACZP,GACHA,EAAOyoG,YAAY3yD,EAErB,CAIA,SAASs8N,GAAMt8N,GACd,KAAOA,EAAGqrF,YACTrrF,EAAG2yD,YAAY3yD,EAAGqrF,WAEpB,CAIA,SAAS4tsB,GAAQj5xB,GAChB,IAAI91C,EAAS81C,EAAGv1C,WACZP,GAAUA,EAAO02Q,YAAc5gO,GAClC91C,EAAO0oG,YAAY5yD,EAErB,CAIA,SAASk5xB,GAAOl5xB,GACf,IAAI91C,EAAS81C,EAAGv1C,WACZP,GAAUA,EAAOmhI,aAAerrF,GACnC91C,EAAOkhI,aAAaprF,EAAI91C,EAAOmhI,WAEjC,CAIA,SAAS1e,GAAS3sE,EAAIhqC,GACrB,QAAqBuD,IAAjBymC,EAAGosE,UACN,OAAOpsE,EAAGosE,UAAUniH,SAAS+L,GAE9B,IAAIu2G,EAAY8D,GAASrwE,GACzB,OAAOusE,EAAU11G,OAAS,GAAK,IAAI09B,OAAO,UAAYv+B,EAAO,WAAWrR,KAAK4nH,EAC9E,CAIA,SAASG,GAAS1sE,EAAIhqC,GACrB,QAAqBuD,IAAjBymC,EAAGosE,UAEN,IADA,IAAI0D,EAAUy9sB,EAAWv3zB,GAChBlO,EAAI,EAAGoK,EAAM49G,EAAQj5G,OAAQ/O,EAAIoK,EAAKpK,IAC9Ck4C,EAAGosE,UAAUr2G,IAAI+5G,EAAQhoH,SAEpB,IAAK6kH,GAAS3sE,EAAIhqC,GAAO,CAC/B,IAAIu2G,EAAY8D,GAASrwE,GACzB+tO,GAAS/tO,GAAKusE,EAAYA,EAAY,IAAM,IAAMv2G,EACnD,CACD,CAIA,SAASm2G,GAAYnsE,EAAIhqC,QACHuD,IAAjBymC,EAAGosE,UACNpsE,EAAGosE,UAAU/mE,OAAOrvC,GAEpB+3Q,GAAS/tO,EAAIv/B,GAAM,IAAM4vG,GAASrwE,GAAM,KAAKx5C,QAAQ,IAAMwP,EAAO,IAAK,MAEzE,CAIA,SAAS+3Q,GAAS/tO,EAAIhqC,QACQuD,IAAzBymC,EAAGusE,UAAUM,QAChB7sE,EAAGusE,UAAYv2G,EAGfgqC,EAAGusE,UAAUM,QAAU72G,CAEzB,CAIA,SAASq6G,GAASrwE,GAMjB,OAHIA,EAAGshc,uBACNthc,EAAKA,EAAGshc,2BAEuB/ne,IAAzBymC,EAAGusE,UAAUM,QAAwB7sE,EAAGusE,UAAYvsE,EAAGusE,UAAUM,OACzE,CAKA,SAASkwhB,GAAW/8lB,EAAI53C,GACnB,YAAa43C,EAAG7T,MACnB6T,EAAG7T,MAAMjsB,QAAU9X,EACT,WAAY43C,EAAG7T,OAK3B,SAAuB6T,EAAI53C,GAC1B,IAAIsL,GAAS,EACTqnS,EAAa,mCAGjB,IACCrnS,EAASssC,EAAGykQ,QAAQhvR,KAAKslR,EAC1B,CAAE,MAAOtzS,GAGR,GAAc,IAAVW,EAAe,MACpB,CAEAA,EAAQH,KAAK+F,MAAc,IAAR5F,GAEfsL,GACHA,EAAOyl0B,QAAqB,MAAV/w0B,EAClBsL,EAAO0l0B,QAAUhx0B,GAEjB43C,EAAG7T,MAAMz4B,QAAU,WAAaqnS,EAAa,YAAc3yS,EAAQ,GAErE,CAzBEix0B,CAAcr5xB,EAAI53C,EAEpB,CA6BA,SAASww0B,GAAS/jyB,GAGjB,IAFA,IAAI1I,EAAQjhC,SAASC,gBAAgBghC,MAE5BrkC,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,IACjC,GAAI+sC,EAAM/sC,KAAMqkC,EACf,OAAO0I,EAAM/sC,GAGf,OAAO,CACR,CAMA,SAAS83C,GAAaI,EAAI34C,EAAQgmC,GACjC,IAAIrY,EAAM3tB,GAAU,IAAIgiO,EAAM,EAAG,GAEjCrpL,EAAG7T,MAAMwsyB,KACPppjB,GAAQmmjB,KACR,aAAe1gzB,EAAIhsB,EAAI,MAAQgsB,EAAI5uB,EAAI,MACvC,eAAiB4uB,EAAIhsB,EAAI,MAAQgsB,EAAI5uB,EAAI,UACzCinC,EAAQ,UAAYA,EAAQ,IAAM,GACrC,CAMA,SAAS+rY,GAAYp5X,EAAI1O,GAGxB0O,EAAGs5xB,aAAehoyB,EAGdi+O,GAAQumjB,MACXl2xB,GAAaI,EAAI1O,IAEjB0O,EAAG7T,MAAMv/B,KAAO0kC,EAAMtoC,EAAI,KAC1Bg3C,EAAG7T,MAAM1/B,IAAM6kC,EAAMlrC,EAAI,KAE3B,CAIA,SAASmza,GAAYv5X,GAIpB,OAAOA,EAAGs5xB,cAAgB,IAAIjwmB,EAAM,EAAG,EACxC,CAaA,GAAI,kBAAmBn+N,SACtBot0B,GAAuB,WACtBlrtB,GAAGxjH,OAAQ,cAAewlI,GAC3B,EACAmpsB,GAAsB,WACrB7osB,GAAI9lI,OAAQ,cAAewlI,GAC5B,MACM,CACN,IAAImqsB,GAAqBX,GACxB,CAAC,aAAc,mBAAoB,cAAe,gBAAiB,iBAEpEN,GAAuB,WACtB,GAAIiB,GAAoB,CACvB,IAAIptyB,EAAQjhC,SAASC,gBAAgBghC,MACrCqsyB,GAAcrsyB,EAAMotyB,IACpBptyB,EAAMotyB,IAAsB,MAC7B,CACD,EACAhB,GAAsB,WACjBgB,KACHru0B,SAASC,gBAAgBghC,MAAMotyB,IAAsBf,GACrDA,QAAcj/zB,EAEhB,CACD,CAKA,SAASig0B,KACRpstB,GAAGxjH,OAAQ,YAAawlI,GACzB,CAIA,SAASqqsB,KACR/psB,GAAI9lI,OAAQ,YAAawlI,GAC1B,CAQA,SAASsqsB,GAAe3w0B,GACvB,MAA6B,IAAtBA,EAAQ2vU,UACd3vU,EAAUA,EAAQ0B,WAEd1B,EAAQojC,QACbwtyB,KACAlB,GAAkB1v0B,EAClB2v0B,GAAgB3v0B,EAAQojC,MAAMytyB,aAC9B7w0B,EAAQojC,MAAMytyB,aAAe,OAC7BxstB,GAAGxjH,OAAQ,UAAW+v0B,IACvB,CAIA,SAASA,KACHlB,KACLA,GAAgBtsyB,MAAMytyB,aAAelB,GACrCD,QAAkBl/zB,EAClBm/zB,QAAgBn/zB,EAChBm2H,GAAI9lI,OAAQ,UAAW+v0B,IACxB,CAIA,SAASE,GAAmB9w0B,GAC3B,GACCA,EAAUA,EAAQ0B,mBACR1B,EAAQK,aAAgBL,EAAQO,cAAiBP,IAAYmC,SAASiF,OACjF,OAAOpH,CACR,CAMA,SAAS+wE,GAAS/wE,GACjB,IAAIuG,EAAOvG,EAAQsG,wBAEnB,MAAO,CACNrG,EAAGsG,EAAKnG,MAAQJ,EAAQK,aAAe,EACvChD,EAAGkJ,EAAKjG,OAASN,EAAQO,cAAgB,EACzCww0B,mBAAoBxq0B,EAEtB,CAEA,IAAIy2kB,GAAU,CACZpjkB,UAAW,KACXg2zB,UAAWA,GACXE,WAAYA,GACZC,eAAgBA,GAChBxi0B,IAAKA,GACL4pC,SAAUA,GACV/8B,OAAQ61zB,GACR3zxB,OAAQA,GACRi3N,MAAOA,GACP28jB,QAASA,GACTC,OAAQA,GACRvstB,SAAUA,GACVD,SAAUA,GACVP,YAAaA,GACb4hK,SAAUA,GACV19J,SAAUA,GACV0shB,WAAYA,GACZ67L,SAAUA,GACVh5xB,aAAcA,GACdw5X,YAAaA,GACbG,YAAaA,GACb,wBAAI++Z,GAA0B,OAAOA,EAAsB,EAC3D,uBAAIC,GAAyB,OAAOA,EAAqB,EACzDiB,iBAAkBA,GAClBC,gBAAiBA,GACjBC,eAAgBA,GAChBC,eAAgBA,GAChBE,mBAAoBA,GACpB//vB,SAAUA,IAmBZ,SAASszC,GAAGr4F,EAAKsxP,EAAO9uQ,EAAIq0B,GAE3B,GAAIy6O,GAA0B,iBAAVA,EACnB,IAAK,IAAI5zP,KAAQ4zP,EAChB0zjB,GAAOhlzB,EAAKtC,EAAM4zP,EAAM5zP,GAAOlb,QAKhC,IAAK,IAAIzP,EAAI,EAAGoK,GAFhBm0Q,EAAQknjB,EAAWlnjB,IAESxvQ,OAAQ/O,EAAIoK,EAAKpK,IAC5Ciy0B,GAAOhlzB,EAAKsxP,EAAMv+Q,GAAIyP,EAAIq0B,GAI5B,OAAOnpB,IACR,CAEA,IAAIu3zB,GAAY,kBAkBhB,SAAStqsB,GAAI36G,EAAKsxP,EAAO9uQ,EAAIq0B,GAE5B,GAAyB,IAArBh1B,UAAUC,OACboj0B,GAAYllzB,UACLA,EAAIilzB,SAEL,GAAI3zjB,GAA0B,iBAAVA,EAC1B,IAAK,IAAI5zP,KAAQ4zP,EAChB6zjB,GAAUnlzB,EAAKtC,EAAM4zP,EAAM5zP,GAAOlb,QAMnC,GAFA8uQ,EAAQknjB,EAAWlnjB,GAEM,IAArBzvQ,UAAUC,OACboj0B,GAAYllzB,EAAK,SAAUtC,GAC1B,OAAiC,IAA1BznB,EAAQq7Q,EAAO5zP,EACvB,QAEA,IAAK,IAAI3qB,EAAI,EAAGoK,EAAMm0Q,EAAMxvQ,OAAQ/O,EAAIoK,EAAKpK,IAC5Coy0B,GAAUnlzB,EAAKsxP,EAAMv+Q,GAAIyP,EAAIq0B,GAKhC,OAAOnpB,IACR,CAEA,SAASw3zB,GAAYllzB,EAAKu4P,GACzB,IAAK,IAAI9sQ,KAAMuU,EAAIilzB,IAAY,CAC9B,IAAIvnzB,EAAOjS,EAAG7c,MAAM,MAAM,GACrB2pR,IAAYA,EAAS76P,IACzBynzB,GAAUnlzB,EAAKtC,EAAM,KAAM,KAAMjS,EAEnC,CACD,CAEA,IAAI25zB,GAAa,CAChBp6jB,WAAY,YACZD,WAAY,WACZs6jB,QAAS,YAAaxw0B,SAAW,cAGlC,SAASmw0B,GAAOhlzB,EAAKtC,EAAMlb,EAAIq0B,GAC9B,IAAIprB,EAAKiS,EAAOqqnB,EAAMvloB,IAAOq0B,EAAU,IAAMkxmB,EAAMlxmB,GAAW,IAE9D,GAAI7W,EAAIilzB,KAAcjlzB,EAAIilzB,IAAWx5zB,GAAO,OAAOiC,KAEnD,IAAIk+C,EAAU,SAAUl5D,GACvB,OAAO8P,EAAGuL,KAAK8oB,GAAW7W,EAAKttB,GAAKmC,OAAOglB,MAC5C,EAEIyrzB,EAAkB15wB,GAEjB4uN,GAAQ8mjB,aAAe9mjB,GAAQ2qI,SAAqC,IAA1BznY,EAAKznB,QAAQ,SAE3D21D,EAAUs3wB,GAAmBljzB,EAAKtC,EAAMkuC,GAE9B4uN,GAAQ0xN,OAAmB,aAATxud,EAC5BkuC,EAxiBF,SAA8B5rC,EAAK4rC,GAElC5rC,EAAIpa,iBAAiB,WAAYgmD,GAKjC,IACI6hR,EADA7rR,EAAO,EAEX,SAAS2jxB,EAAY7y0B,GACpB,GAAiB,IAAbA,EAAE+6U,QAKN,GAAsB,UAAlB/6U,EAAEuhc,eACJvhc,EAAE8y0B,oBAAuB9y0B,EAAE8y0B,mBAAmBC,kBADhD,CAWA,IAAIlvvB,EAAOmvvB,GAAmBhz0B,GAC9B,IAAI6jF,EAAKv2E,KAAK,SAAUirC,GACvB,OAAOA,aAAc06xB,kBAAoB16xB,EAAGtoC,WAAWkwU,GACxD,IACEt8P,EAAKv2E,KAAK,SAAUirC,GACpB,OACCA,aAAc+jiB,kBACd/jiB,aAAc26xB,iBAEhB,GARD,CAaA,IAAIpvzB,EAAMD,KAAKC,MACXA,EAAMorC,GA1CA,IA4CM,MADf6rR,GAEC7hR,EA9DJ,SAAsB/xC,GAGrB,IACImmB,EAAMjtC,EADN8y0B,EAAW,CAAC,EAEhB,IAAK9y0B,KAAK8mB,EACTmmB,EAAOnmB,EAAM9mB,GACb8y0B,EAAS9y0B,GAAKitC,GAAQA,EAAKopB,KAAOppB,EAAKopB,KAAKvvC,GAASmmB,EAOtD,OALAnmB,EAAQgszB,EACRA,EAASnozB,KAAO,WAChBmozB,EAASp4f,OAAS,EAClBo4f,EAASpzY,WAAY,EACrBozY,EAASC,YAAa,EACfD,CACR,CA+CYE,CAAarz0B,IAGtB+6U,EAAS,EAEV7rR,EAAOprC,CAXP,CAnBA,OARCi3T,EAAS/6U,EAAE+6U,MAuCb,CAIA,OAFAztT,EAAIpa,iBAAiB,QAAS2/zB,GAEvB,CACNS,SAAUp6wB,EACV25wB,YAAaA,EAEf,CA8eYU,CAAqBjmzB,EAAK4rC,GAE1B,qBAAsB5rC,EAEnB,eAATtC,GAAkC,cAATA,GAAiC,UAATA,GAA8B,eAATA,EACzEsC,EAAIpa,iBAAiBw/zB,GAAW1nzB,IAASA,EAAMkuC,IAAS4uN,GAAQsnjB,eAAgB,CAAC/n0B,SAAS,IAEvE,eAAT2jB,GAAkC,eAATA,GACnCkuC,EAAU,SAAUl5D,GACnBA,EAAIA,GAAKmC,OAAOglB,MACZqszB,GAAiBlmzB,EAAKttB,IACzB4y0B,EAAgB5y0B,EAElB,EACAstB,EAAIpa,iBAAiBw/zB,GAAW1nzB,GAAOkuC,GAAS,IAGhD5rC,EAAIpa,iBAAiB8X,EAAM4nzB,GAAiB,GAI7CtlzB,EAAIiza,YAAY,KAAOv1a,EAAMkuC,GAG9B5rC,EAAIilzB,IAAajlzB,EAAIilzB,KAAc,CAAC,EACpCjlzB,EAAIilzB,IAAWx5zB,GAAMmgD,CACtB,CAEA,SAASu5wB,GAAUnlzB,EAAKtC,EAAMlb,EAAIq0B,EAASprB,GAC1CA,EAAKA,GAAMiS,EAAOqqnB,EAAMvloB,IAAOq0B,EAAU,IAAMkxmB,EAAMlxmB,GAAW,IAChE,IAAI+0B,EAAU5rC,EAAIilzB,KAAcjlzB,EAAIilzB,IAAWx5zB,GAE/C,IAAKmgD,EAAW,OAAOl+C,MAElB8sQ,GAAQ8mjB,aAAe9mjB,GAAQ2qI,SAAqC,IAA1BznY,EAAKznB,QAAQ,SA1pB7D,SAA+B+pB,EAAKtC,EAAMkuC,GACpCg3wB,GAAOllzB,GAIZsC,EAAIna,oBAAoB+8zB,GAAOllzB,GAAOkuC,GAAS,GAH9CtrB,QAAQ/lB,KAAK,yBAA0BmD,EAIzC,CAqpBEyozB,CAAsBnmzB,EAAKtC,EAAMkuC,GAEvB4uN,GAAQ0xN,OAAmB,aAATxud,EAjhB9B,SAAiCsC,EAAKygiB,GACrCzgiB,EAAIna,oBAAoB,WAAY46iB,EAASulR,UAC7ChmzB,EAAIna,oBAAoB,QAAS46iB,EAAS8kR,YAC3C,CA+gBEa,CAAwBpmzB,EAAK4rC,GAEnB,wBAAyB5rC,EAEnCA,EAAIna,oBAAoBu/zB,GAAW1nzB,IAASA,EAAMkuC,GAAS,GAG3D5rC,EAAIgza,YAAY,KAAOt1a,EAAMkuC,GAG9B5rC,EAAIilzB,IAAWx5zB,GAAM,IACtB,CASA,SAASulQ,GAAgBt+Q,GAUxB,OARIA,EAAEs+Q,gBACLt+Q,EAAEs+Q,kBACQt+Q,EAAE82hB,cACZ92hB,EAAE82hB,cAAcn2gB,UAAW,EAE3B3gB,EAAEm7V,cAAe,EAGXngV,IACR,CAIA,SAAS+nvB,GAAyBxqtB,GAEjC,OADA+5xB,GAAO/5xB,EAAI,QAAS+lO,IACbtjQ,IACR,CAKA,SAAS6kkB,GAAwBtniB,GAGhC,OAFAotE,GAAGptE,EAAI,4CAA6C+lO,IACpD/lO,EAA2B,wBAAI,EACxBv9B,IACR,CAOA,SAAS2sH,GAAe3nI,GAMvB,OALIA,EAAE2nI,eACL3nI,EAAE2nI,iBAEF3nI,EAAEitG,aAAc,EAEVjyF,IACR,CAIA,SAAS0F,GAAK1gB,GAGb,OAFA2nI,GAAe3nI,GACfs+Q,GAAgBt+Q,GACTgb,IACR,CAMA,SAASg4zB,GAAmBjihB,GAC3B,GAAIA,EAAG2xO,aACN,OAAO3xO,EAAG2xO,eAMX,IAHA,IAAI7+c,EAAO,GACPtrC,EAAKw4Q,EAAGhoT,OAELwvC,GACNsrC,EAAK/0E,KAAKypC,GACVA,EAAKA,EAAGv1C,WAET,OAAO6gF,CACR,CAMA,SAAS8vvB,GAAiB3z0B,EAAG8gE,GAC5B,IAAKA,EACJ,OAAO,IAAI8gK,EAAM5hO,EAAEy3C,QAASz3C,EAAE03C,SAG/B,IAAI9R,EAAQysC,GAASvR,GACjBlhE,EAASgmC,EAAMysyB,mBAEnB,OAAO,IAAIzwmB,GAGT5hO,EAAEy3C,QAAU73C,EAAOuF,MAAQygC,EAAMrkC,EAAIu/D,EAAUp3D,YAC/C1J,EAAE03C,QAAU93C,EAAOoF,KAAO4gC,EAAMjnC,EAAImiE,EAAUr3D,UAEjD,CAOA,IAAImq0B,GACF9rjB,GAAQ+njB,OAAS/njB,GAAQh7C,OAAU3qO,OAAOmE,iBAC3CwhR,GAAQ8njB,IAAgC,EAA1Bzt0B,OAAOmE,iBACrBnE,OAAOmE,iBAAmB,EAAI,EAAInE,OAAOmE,iBAAmB,EAM7D,SAASut0B,GAAc7z0B,GACtB,OAAQ8nR,GAAY,KAAI9nR,EAAEmkc,YAAc,EAChCnkc,EAAE65D,QAA0B,IAAhB75D,EAAEskc,WAAoBtkc,EAAE65D,OAAS+5wB,GAC7C5z0B,EAAE65D,QAA0B,IAAhB75D,EAAEskc,UAA+B,IAAXtkc,EAAE65D,OACpC75D,EAAE65D,QAA0B,IAAhB75D,EAAEskc,UAA+B,IAAXtkc,EAAE65D,OACpC75D,EAAE45D,QAAU55D,EAAEqkc,OAAU,EACzBrkc,EAAEokc,YAAcpkc,EAAEmkc,aAAenkc,EAAEokc,YAAc,EAChDpkc,EAAE+6U,QAAUv6U,KAAKM,IAAId,EAAE+6U,QAAU,MAAqB,IAAX/6U,EAAE+6U,OAC9C/6U,EAAE+6U,OAAS/6U,EAAE+6U,QAAU,MAAQ,GAC/B,CACR,CAGA,SAASy4f,GAAiBj7xB,EAAIv4C,GAE7B,IAAI28Q,EAAU38Q,EAAE48Q,cAEhB,IAAKD,EAAW,OAAO,EAEvB,IACC,KAAOA,GAAYA,IAAYpkO,GAC9BokO,EAAUA,EAAQ35Q,UAEpB,CAAE,MAAO0gH,GACR,OAAO,CACR,CACA,OAAQi5J,IAAYpkO,CACrB,CAEA,IAAIoniB,GAAW,CACbzkkB,UAAW,KACXyqG,GAAIA,GACJsiB,IAAKA,GACLq2I,gBAAiBA,GACjBykf,yBAA0BA,GAC1BljL,wBAAyBA,GACzBl4c,eAAgBA,GAChBjnH,KAAMA,GACNsyzB,mBAAoBA,GACpBW,iBAAkBA,GAClBE,cAAeA,GACfL,iBAAkBA,GAClBjywB,YAAaokD,GACb/lD,eAAgBqoE,IAiCd6rsB,GAAetutB,EAAQxH,OAAO,CAOjC2iB,IAAK,SAAUpoF,EAAIw7xB,EAAQ7zzB,EAAU8zzB,GACpCh5zB,KAAK0F,OAEL1F,KAAKi5zB,IAAM17xB,EACXv9B,KAAKk5zB,aAAc,EACnBl5zB,KAAK0iC,UAAYx9B,GAAY,IAC7BlF,KAAKm5zB,cAAgB,EAAI3z0B,KAAKmE,IAAIqv0B,GAAiB,GAAK,IAExDh5zB,KAAKo5zB,UAAYtia,GAAYv5X,GAC7Bv9B,KAAKtD,QAAUq8zB,EAAOthe,SAASz3V,KAAKo5zB,WACpCp5zB,KAAK8ja,YAAc,IAAIj7Z,KAIvB7I,KAAKw1Z,KAAK,SAEVx1Z,KAAKq5zB,UACN,EAIA3zzB,KAAM,WACA1F,KAAKk5zB,cAEVl5zB,KAAKyyY,OAAM,GACXzyY,KAAKs5zB,YACN,EAEAD,SAAU,WAETr5zB,KAAKu5zB,QAAUtqzB,EAAiBjP,KAAKq5zB,SAAUr5zB,MAC/CA,KAAKyyY,OACN,EAEAA,MAAO,SAAUlnZ,GAChB,IAAIy4C,GAAY,IAAIn7B,KAAU7I,KAAK8ja,WAC/B5+Z,EAA4B,IAAjBlF,KAAK0iC,UAEhBsB,EAAU9+B,EACblF,KAAKw5zB,UAAUx5zB,KAAKy5zB,SAASz1xB,EAAU9+B,GAAW3Z,IAElDyU,KAAKw5zB,UAAU,GACfx5zB,KAAKs5zB,YAEP,EAEAE,UAAW,SAAUl3xB,EAAU/2C,GAC9B,IAAIgnB,EAAMvS,KAAKo5zB,UAAU9l0B,IAAI0M,KAAKtD,QAAQ8tvB,WAAWlotB,IACjD/2C,GACHgnB,EAAIs1M,SAEL8uM,GAAY32Z,KAAKi5zB,IAAK1mzB,GAItBvS,KAAKw1Z,KAAK,OACX,EAEA8ja,UAAW,WACV/N,EAAgBvrzB,KAAKu5zB,SAErBv5zB,KAAKk5zB,aAAc,EAGnBl5zB,KAAKw1Z,KAAK,MACX,EAEAika,SAAU,SAAU74zB,GACnB,OAAO,EAAIpb,KAAKC,IAAI,EAAImb,EAAGZ,KAAKm5zB,cACjC,IAsBGnm0B,GAAMw3G,EAAQxH,OAAO,CAExBpzG,QAAS,CAKR8p0B,IAAKxH,EAIL/0zB,YAAQrG,EAIRy9K,UAAMz9K,EAMN+wU,aAAS/wU,EAMT0hoB,aAAS1hoB,EAIT6pE,OAAQ,GAORg5vB,eAAW7i0B,EAKX8i0B,cAAU9i0B,EAOV+i0B,eAAe,EAIfC,uBAAwB,EAKxBC,eAAe,EAMfC,qBAAqB,EAMrBC,iBAAkB,QASlB1/L,SAAU,EAOV2/L,UAAW,EAIXC,aAAa,GAGd5wxB,WAAY,SAAUxrC,EAAInO,GACzBA,EAAU0F,EAAW0K,KAAMpQ,GAI3BoQ,KAAKo6zB,UAAY,GACjBp6zB,KAAK6hD,QAAU,CAAC,EAChB7hD,KAAKq6zB,iBAAmB,CAAC,EACzBr6zB,KAAKs6zB,cAAe,EAEpBt6zB,KAAKu6zB,eAAex8zB,GACpBiC,KAAKonvB,cAGLpnvB,KAAKw6zB,UAAY9+wB,EAAK17C,KAAKw6zB,UAAWx6zB,MAEtCA,KAAKy6zB,cAED7q0B,EAAQ+p0B,WACX35zB,KAAK06zB,aAAa9q0B,EAAQ+p0B,gBAGN7i0B,IAAjBlH,EAAQ2kL,OACXv0K,KAAK26zB,MAAQ36zB,KAAK46zB,WAAWhr0B,EAAQ2kL,OAGlC3kL,EAAQuN,aAA2BrG,IAAjBlH,EAAQ2kL,MAC7Bv0K,KAAK4qU,QAAQ4if,EAAS59zB,EAAQuN,QAASvN,EAAQ2kL,KAAM,CAACh+K,OAAO,IAG9DyJ,KAAK0rzB,gBAGL1rzB,KAAK66zB,cAAgBzE,IAActpjB,GAAQumjB,QAAUvmjB,GAAQinjB,aAC3D/zzB,KAAKpQ,QAAQiq0B,cAIX75zB,KAAK66zB,gBACR76zB,KAAK86zB,mBACLnwtB,GAAG3qG,KAAKk2B,OAAQmgyB,GAAgBr2zB,KAAK+6zB,oBAAqB/6zB,OAG3DA,KAAKg7zB,WAAWh7zB,KAAKpQ,QAAQ+wE,OAC9B,EAQAiqQ,QAAS,SAAUztU,EAAQo3K,EAAM3kL,GAQhC,OANA2kL,OAAgBz9K,IAATy9K,EAAqBv0K,KAAK26zB,MAAQ36zB,KAAK46zB,WAAWrmpB,GACzDp3K,EAAS6C,KAAKi7zB,aAAazN,EAASrwzB,GAASo3K,EAAMv0K,KAAKpQ,QAAQ+p0B,WAChE/p0B,EAAUA,GAAW,CAAC,EAEtBoQ,KAAKkhE,QAEDlhE,KAAKk7zB,UAAYtr0B,EAAQ2G,QAAqB,IAAZ3G,SAEbkH,IAApBlH,EAAQotF,UACXptF,EAAQ2kL,KAAOvxE,EAAO,CAAChmB,QAASptF,EAAQotF,SAAUptF,EAAQ2kL,MAC1D3kL,EAAQur0B,IAAMn4tB,EAAO,CAAChmB,QAASptF,EAAQotF,QAAS93E,SAAUtV,EAAQsV,UAAWtV,EAAQur0B,MAIzEn7zB,KAAK26zB,QAAUpmpB,EAC3Bv0K,KAAKo7zB,kBAAoBp7zB,KAAKo7zB,iBAAiBj+zB,EAAQo3K,EAAM3kL,EAAQ2kL,MACrEv0K,KAAKq7zB,gBAAgBl+zB,EAAQvN,EAAQur0B,OAIrCxzzB,aAAa3H,KAAKs7zB,YACXt7zB,OAKTA,KAAKq8nB,WAAWl/nB,EAAQo3K,EAAM3kL,EAAQur0B,KAAOvr0B,EAAQur0B,IAAII,aAElDv7zB,KACR,EAIAizU,QAAS,SAAU1+J,EAAM3kL,GACxB,OAAKoQ,KAAKk7zB,QAIHl7zB,KAAK4qU,QAAQ5qU,KAAKgpU,YAAaz0J,EAAM,CAACA,KAAM3kL,KAHlDoQ,KAAK26zB,MAAQpmpB,EACNv0K,KAGT,EAIAw7zB,OAAQ,SAAUhhyB,EAAO5qC,GAExB,OADA4qC,EAAQA,IAAUsyO,GAAQumjB,MAAQrzzB,KAAKpQ,QAAQsq0B,UAAY,GACpDl6zB,KAAKizU,QAAQjzU,KAAK26zB,MAAQngyB,EAAO5qC,EACzC,EAIA6r0B,QAAS,SAAUjhyB,EAAO5qC,GAEzB,OADA4qC,EAAQA,IAAUsyO,GAAQumjB,MAAQrzzB,KAAKpQ,QAAQsq0B,UAAY,GACpDl6zB,KAAKizU,QAAQjzU,KAAK26zB,MAAQngyB,EAAO5qC,EACzC,EAQA8r0B,cAAe,SAAUzwE,EAAQ12kB,EAAM3kL,GACtC,IAAIg7B,EAAQ5qB,KAAK27zB,aAAapnpB,GAC1BqnpB,EAAW57zB,KAAKg5Z,UAAU00Z,SAAS,GAGnCrwzB,GAFiB4tvB,aAAkBrkiB,EAAQqkiB,EAASjrvB,KAAK67zB,uBAAuB5wE,IAElDxzZ,SAASmke,GAAUpxE,WAAW,EAAI,EAAI5/tB,GACpE0myB,EAAYtxzB,KAAK87zB,uBAAuBF,EAASto0B,IAAI+J,IAEzD,OAAO2C,KAAK4qU,QAAQ0mf,EAAW/8oB,EAAM,CAACA,KAAM3kL,GAC7C,EAEAms0B,qBAAsB,SAAUh8xB,EAAQnwC,GAEvCA,EAAUA,GAAW,CAAC,EACtBmwC,EAASA,EAAOgpE,UAAYhpE,EAAOgpE,YAAcwktB,EAAextxB,GAEhE,IAAIi8xB,EAAYhP,EAAQp9zB,EAAQqs0B,gBAAkBrs0B,EAAQY,SAAW,CAAC,EAAG,IACrE0r0B,EAAYlP,EAAQp9zB,EAAQus0B,oBAAsBvs0B,EAAQY,SAAW,CAAC,EAAG,IAEzE+jL,EAAOv0K,KAAKo8zB,cAAcr8xB,GAAQ,EAAOi8xB,EAAU1o0B,IAAI4o0B,IAI3D,IAFA3npB,EAAmC,iBAApB3kL,EAAQ4ooB,QAAwBhzoB,KAAKkE,IAAIkG,EAAQ4ooB,QAASjkd,GAAQA,KAEpEhvL,IACZ,MAAO,CACN4X,OAAQ4iC,EAAOipS,YACfz0J,KAAMA,GAIR,IAAI8npB,EAAgBH,EAAUzke,SAASuke,GAAWtO,SAAS,GAEvD4O,EAAUt8zB,KAAKy1e,QAAQ11c,EAAOsvxB,eAAgB96oB,GAC9CgopB,EAAUv8zB,KAAKy1e,QAAQ11c,EAAOuvxB,eAAgB/6oB,GAGlD,MAAO,CACNp3K,OAHY6C,KAAKgxzB,UAAUsL,EAAQhp0B,IAAIip0B,GAAS7O,SAAS,GAAGp6zB,IAAI+o0B,GAAgB9npB,GAIhFA,KAAMA,EAER,EAKA62kB,UAAW,SAAUrrtB,EAAQnwC,GAI5B,KAFAmwC,EAASwtxB,EAAextxB,IAEZ+oK,UACX,MAAM,IAAIvhM,MAAM,yBAGjB,IAAIxZ,EAASiS,KAAK+7zB,qBAAqBh8xB,EAAQnwC,GAC/C,OAAOoQ,KAAK4qU,QAAQ78U,EAAOoP,OAAQpP,EAAOwmL,KAAM3kL,EACjD,EAKA4s0B,SAAU,SAAU5s0B,GACnB,OAAOoQ,KAAKorvB,UAAU,CAAC,EAAE,IAAK,KAAM,CAAC,GAAI,MAAOx7vB,EACjD,EAIAojV,MAAO,SAAU71U,EAAQvN,GACxB,OAAOoQ,KAAK4qU,QAAQztU,EAAQ6C,KAAK26zB,MAAO,CAACQ,IAAKvr0B,GAC/C,EAIA6s0B,MAAO,SAAU730B,EAAQgL,GAIxB,GAFAA,EAAUA,GAAW,CAAC,IADtBhL,EAASoo0B,EAAQpo0B,GAAQ2G,SAGbhF,IAAM3B,EAAOjB,EACxB,OAAOqc,KAAKw1Z,KAAK,WAIlB,IAAwB,IAApB5la,EAAQotF,UAAqBh9E,KAAKg5Z,UAAUxxa,SAAS5C,GAExD,OADAob,KAAKq8nB,WAAWr8nB,KAAKgxzB,UAAUhxzB,KAAKy1e,QAAQz1e,KAAKgpU,aAAa11U,IAAI1O,IAAUob,KAAKguU,WAC1EhuU,KAkBR,GAfKA,KAAK08zB,WACT18zB,KAAK08zB,SAAW,IAAI5D,GAEpB94zB,KAAK08zB,SAAS/xtB,GAAG,CAChB,KAAQ3qG,KAAK28zB,qBACb,IAAO38zB,KAAK48zB,qBACV58zB,OAICpQ,EAAQ2r0B,aACZv7zB,KAAKw1Z,KAAK,cAIa,IAApB5la,EAAQotF,QAAmB,CAC9BitB,GAASjqG,KAAK68zB,SAAU,oBAExB,IAAI9D,EAAS/4zB,KAAK88zB,iBAAiBrle,SAAS7yW,GAAQ2G,QACpDyU,KAAK08zB,SAAS/2sB,IAAI3lH,KAAK68zB,SAAU9D,EAAQnp0B,EAAQsV,UAAY,IAAMtV,EAAQop0B,cAC5E,MACCh5zB,KAAK+8zB,UAAUn40B,GACfob,KAAKw1Z,KAAK,QAAQA,KAAK,WAGxB,OAAOx1Z,IACR,EAKAg9zB,MAAO,SAAUC,EAAcC,EAAYtt0B,GAG1C,IAAwB,KADxBA,EAAUA,GAAW,CAAC,GACVotF,UAAsB8vL,GAAQumjB,MACzC,OAAOrzzB,KAAK4qU,QAAQqyf,EAAcC,EAAYtt0B,GAG/CoQ,KAAKkhE,QAEL,IAAIr8C,EAAO7kB,KAAKy1e,QAAQz1e,KAAKgpU,aACzBpkT,EAAK5kB,KAAKy1e,QAAQwnV,GAClBlqzB,EAAO/S,KAAKg5Z,UACZmka,EAAYn9zB,KAAK26zB,MAErBsC,EAAezP,EAASyP,GACxBC,OAA4Bpm0B,IAAfom0B,EAA2BC,EAAYD,EAEpD,IAAIl9V,EAAKx6e,KAAKmE,IAAIopB,EAAKxsB,EAAGwsB,EAAKpvB,GAC3B0jC,EAAK24c,EAAKhge,KAAK27zB,aAAawB,EAAWD,GACvCE,EAAMx4yB,EAAGspyB,WAAWrpyB,IAAU,EAC9Bw4yB,EAAM,KACNC,EAAOD,OAEX,SAAStjzB,EAAE10B,GACV,IAIIwU,GAFKwtB,EAAKA,EAAK24c,EAAKA,GAFf36e,GAAK,EAAI,GAEgBi40B,EAAOA,EAAOF,EAAKA,IAC5C,GAFA/30B,EAAIgiC,EAAK24c,GAEAs9V,EAAOF,GAErBtie,EAAKt1W,KAAK0vB,KAAKrb,EAAIA,EAAI,GAAKA,EAMhC,OAFcihW,EAAK,MAAe,GAAKt1W,KAAKS,IAAI60W,EAGjD,CAEA,SAASyie,EAAK18zB,GAAK,OAAQrb,KAAKm0F,IAAI94E,GAAKrb,KAAKm0F,KAAK94E,IAAM,CAAG,CAC5D,SAAS28zB,EAAK38zB,GAAK,OAAQrb,KAAKm0F,IAAI94E,GAAKrb,KAAKm0F,KAAK94E,IAAM,CAAG,CAG5D,IAAIk5F,EAAKhgF,EAAE,GAGX,SAAS2pE,EAAEzgG,GAAK,OAAO+8e,GAAMw9V,EAAKzjuB,IALRwjuB,EAAZ18zB,EAK+Bk5F,EAAKsjuB,EAAMp60B,GALpBu60B,EAAK38zB,IAKoB08zB,EAAKxjuB,IAAOujuB,EALzE,IAAcz8zB,CAKiE,CAI/E,IAAIpU,EAAQoc,KAAKC,MACb6R,GAAKZ,EAAE,GAAKggF,GAAMsjuB,EAClBn4zB,EAAWtV,EAAQsV,SAAW,IAAOtV,EAAQsV,SAAW,IAAOyV,EAAI,GAwBvE,OAHA3a,KAAKy9zB,YAAW,EAAM7t0B,EAAQ2r0B,aAnB9B,SAAS74Z,IACR,IAAI9ha,GAAKiI,KAAKC,MAAQrc,GAASyY,EAC3BjiB,EARL,SAAiB2d,GAAK,OAAO,EAAIpb,KAAKC,IAAI,EAAImb,EAAG,IAAM,CAQ9C88zB,CAAQ98zB,GAAK+Z,EAEjB/Z,GAAK,GACRZ,KAAK29zB,YAAc1uzB,EAAiByzZ,EAAO1ia,MAE3CA,KAAK49zB,MACJ59zB,KAAKgxzB,UAAUnsyB,EAAKvxB,IAAIsxB,EAAG6yU,SAAS5yU,GAAM2luB,WAAW9mqB,EAAEzgG,GAAKm60B,IAAMD,GAClEn9zB,KAAK69zB,aAAa79V,EAlBrB,SAAW/8e,GAAK,OAAO+8e,GAAMw9V,EAAKzjuB,GAAMyjuB,EAAKzjuB,EAAKsjuB,EAAMp60B,GAAK,CAkBnC22B,CAAE32B,GAAIk60B,GAC7B,CAACH,OAAO,KAGTh9zB,KACE49zB,MAAMX,EAAcC,GACpBY,UAAS,EAEb,EAIMz9zB,KAAKL,MACJA,IACR,EAKA+9zB,YAAa,SAAUh+xB,EAAQnwC,GAC9B,IAAI7B,EAASiS,KAAK+7zB,qBAAqBh8xB,EAAQnwC,GAC/C,OAAOoQ,KAAKg9zB,MAAMjv0B,EAAOoP,OAAQpP,EAAOwmL,KAAM3kL,EAC/C,EAIA8q0B,aAAc,SAAU36xB,GAOvB,OANAA,EAASwtxB,EAAextxB,GAEpB//B,KAAKqszB,QAAQ,UAAWrszB,KAAKg+zB,sBAChCh+zB,KAAKitH,IAAI,UAAWjtH,KAAKg+zB,qBAGrBj+xB,EAAO+oK,WAKZ9oM,KAAKpQ,QAAQ+p0B,UAAY55xB,EAErB//B,KAAKk7zB,SACRl7zB,KAAKg+zB,sBAGCh+zB,KAAK2qG,GAAG,UAAW3qG,KAAKg+zB,uBAV9Bh+zB,KAAKpQ,QAAQ+p0B,UAAY,KAClB35zB,KAUT,EAIAi+zB,WAAY,SAAU1ppB,GACrB,IAAI2ppB,EAAUl+zB,KAAKpQ,QAAQi4U,QAG3B,OAFA7nU,KAAKpQ,QAAQi4U,QAAUtzJ,EAEnBv0K,KAAKk7zB,SAAWgD,IAAY3ppB,IAC/Bv0K,KAAKw1Z,KAAK,oBAENx1Z,KAAKguU,UAAYhuU,KAAKpQ,QAAQi4U,SAC1B7nU,KAAKizU,QAAQ1+J,GAIfv0K,IACR,EAIAm+zB,WAAY,SAAU5ppB,GACrB,IAAI2ppB,EAAUl+zB,KAAKpQ,QAAQ4ooB,QAG3B,OAFAx4nB,KAAKpQ,QAAQ4ooB,QAAUjkd,EAEnBv0K,KAAKk7zB,SAAWgD,IAAY3ppB,IAC/Bv0K,KAAKw1Z,KAAK,oBAENx1Z,KAAKguU,UAAYhuU,KAAKpQ,QAAQ4ooB,SAC1Bx4nB,KAAKizU,QAAQ1+J,GAIfv0K,IACR,EAIAo+zB,gBAAiB,SAAUr+xB,EAAQnwC,GAClCoQ,KAAKq+zB,kBAAmB,EACxB,IAAIlh0B,EAAS6C,KAAKgpU,YACdsof,EAAYtxzB,KAAKi7zB,aAAa99zB,EAAQ6C,KAAK26zB,MAAOpN,EAAextxB,IAOrE,OALK5iC,EAAO4qN,OAAOupmB,IAClBtxzB,KAAKgzU,MAAMs+e,EAAW1h0B,GAGvBoQ,KAAKq+zB,kBAAmB,EACjBr+zB,IACR,EAOAs+zB,UAAW,SAAUrzE,EAAQr7vB,GAG5B,IAAIos0B,EAAYhP,GAFhBp9zB,EAAUA,GAAW,CAAC,GAEUqs0B,gBAAkBrs0B,EAAQY,SAAW,CAAC,EAAG,IACrE0r0B,EAAYlP,EAAQp9zB,EAAQus0B,oBAAsBvs0B,EAAQY,SAAW,CAAC,EAAG,IACzE+t0B,EAAcv+zB,KAAKy1e,QAAQz1e,KAAKgpU,aAChCw1f,EAAax+zB,KAAKy1e,QAAQw1Q,GAC1BwzE,EAAcz+zB,KAAK0+zB,iBACnBC,EAAezR,EAAS,CAACuR,EAAY/00B,IAAI4J,IAAI0o0B,GAAYyC,EAAY900B,IAAI8tW,SAASyke,KAClF0C,EAAaD,EAAa3la,UAE9B,IAAK2la,EAAan30B,SAASg30B,GAAa,CACvCx+zB,KAAKq+zB,kBAAmB,EACxB,IAAIhh0B,EAAemh0B,EAAW/me,SAASkne,EAAa31f,aAChDpkV,EAAS+50B,EAAa37tB,OAAOw7tB,GAAYxla,UAAUvhE,SAASmne,GAChEL,EAAYh40B,GAAK8W,EAAa9W,EAAI,GAAK3B,EAAO2B,EAAI3B,EAAO2B,EACzDg40B,EAAY560B,GAAK0Z,EAAa1Z,EAAI,GAAKiB,EAAOjB,EAAIiB,EAAOjB,EACzDqc,KAAKgzU,MAAMhzU,KAAKgxzB,UAAUuN,GAAc3u0B,GACxCoQ,KAAKq+zB,kBAAmB,CACzB,CACA,OAAOr+zB,IACR,EAeA6+zB,eAAgB,SAAUjv0B,GACzB,IAAKoQ,KAAKk7zB,QAAW,OAAOl7zB,KAE5BpQ,EAAUozG,EAAO,CAChBhmB,SAAS,EACTm+uB,KAAK,IACS,IAAZvr0B,EAAmB,CAACotF,SAAS,GAAQptF,GAExC,IAAI+2wB,EAAU3mwB,KAAKg5Z,UACnBh5Z,KAAKs6zB,cAAe,EACpBt6zB,KAAK8+zB,YAAc,KAEnB,IAAI5gwB,EAAUl+D,KAAKg5Z,UACf+la,EAAYp4D,EAAQ+mD,SAAS,GAAGni0B,QAChC+l0B,EAAYpzvB,EAAQwvvB,SAAS,GAAGni0B,QAChC3G,EAASm60B,EAAUtne,SAAS65d,GAEhC,OAAK1s0B,EAAO2B,GAAM3B,EAAOjB,GAErBiM,EAAQotF,SAAWptF,EAAQur0B,IAC9Bn7zB,KAAKy8zB,MAAM730B,IAGPgL,EAAQur0B,KACXn7zB,KAAK+8zB,UAAUn40B,GAGhBob,KAAKw1Z,KAAK,QAEN5la,EAAQov0B,iBACXr3zB,aAAa3H,KAAKs7zB,YAClBt7zB,KAAKs7zB,WAAa7zzB,WAAWi0C,EAAK17C,KAAKw1Z,KAAMx1Z,KAAM,WAAY,MAE/DA,KAAKw1Z,KAAK,YAOLx1Z,KAAKw1Z,KAAK,SAAU,CAC1BmxW,QAASA,EACTzosB,QAASA,KAzB2Bl+D,IA2BtC,EAKA0F,KAAM,WAKL,OAJA1F,KAAKizU,QAAQjzU,KAAK46zB,WAAW56zB,KAAK26zB,QAC7B36zB,KAAKpQ,QAAQ2qoB,UACjBv6nB,KAAKw1Z,KAAK,aAEJx1Z,KAAKkhE,OACb,EAWA87tB,OAAQ,SAAUptyB,GAWjB,GATAA,EAAUoQ,KAAKi/zB,eAAiBj8tB,EAAO,CACtCrlC,QAAS,IACT0iO,OAAO,GAKLzwS,KAEG,gBAAiBtB,WAKtB,OAJA0R,KAAKk/zB,wBAAwB,CAC5B1wuB,KAAM,EACN4B,QAAS,+BAEHpwF,KAGR,IAAIm/zB,EAAazjxB,EAAK17C,KAAKo/zB,2BAA4Bp/zB,MACnDq9W,EAAU3hU,EAAK17C,KAAKk/zB,wBAAyBl/zB,MAQjD,OANIpQ,EAAQywS,MACXrgS,KAAKq/zB,iBACG/w0B,UAAUgx0B,YAAYC,cAAcJ,EAAY9hd,EAASztX,GAEjEtB,UAAUgx0B,YAAYE,mBAAmBL,EAAY9hd,EAASztX,GAExDoQ,IACR,EAMAy/zB,WAAY,WAOX,OANInx0B,UAAUgx0B,aAAehx0B,UAAUgx0B,YAAYI,YAClDpx0B,UAAUgx0B,YAAYI,WAAW1/zB,KAAKq/zB,kBAEnCr/zB,KAAKi/zB,iBACRj/zB,KAAKi/zB,eAAer0f,SAAU,GAExB5qU,IACR,EAEAk/zB,wBAAyB,SAAUj1zB,GAClC,GAAKjK,KAAKqjkB,WAAWonP,YAArB,CAEA,IAAI7k0B,EAAIqkB,EAAMukF,KACV4B,EAAUnmF,EAAMmmF,UACD,IAANxqG,EAAU,oBACJ,IAANA,EAAU,uBAAyB,WAE5Coa,KAAKi/zB,eAAer0f,UAAY5qU,KAAKk7zB,SACxCl7zB,KAAKw8zB,WAMNx8zB,KAAKw1Z,KAAK,gBAAiB,CAC1BhnU,KAAM5oG,EACNwqG,QAAS,sBAAwBA,EAAU,KAhBA,CAkB7C,EAEAgvuB,2BAA4B,SAAU7szB,GACrC,GAAKvS,KAAKqjkB,WAAWonP,YAArB,CAEA,IAEIx/D,EAAS,IAAIxhiB,EAFPl3M,EAAI6rL,OAAOuhoB,SACXptzB,EAAI6rL,OAAOwhoB,WAEjB7/xB,EAASkrtB,EAAOiiE,SAA+B,EAAtB36yB,EAAI6rL,OAAOyhoB,UACpCjw0B,EAAUoQ,KAAKi/zB,eAEnB,GAAIrv0B,EAAQg7U,QAAS,CACpB,IAAIr2J,EAAOv0K,KAAKo8zB,cAAcr8xB,GAC9B//B,KAAK4qU,QAAQqgb,EAAQr7vB,EAAQ4ooB,QAAUhzoB,KAAKkE,IAAI6qL,EAAM3kL,EAAQ4ooB,SAAWjkd,EAC1E,CAEA,IAAIx+K,EAAO,CACVk1vB,OAAQA,EACRlrtB,OAAQA,EACRjyB,UAAWyE,EAAIzE,WAGhB,IAAK,IAAIzoB,KAAKktB,EAAI6rL,OACY,iBAAlB7rL,EAAI6rL,OAAO/4M,KACrB0Q,EAAK1Q,GAAKktB,EAAI6rL,OAAO/4M,IAOvB2a,KAAKw1Z,KAAK,gBAAiBz/Z,EA5BiB,CA6B7C,EAMA8tQ,WAAY,SAAUtwQ,EAAMus0B,GAC3B,IAAKA,EAAgB,OAAO9/zB,KAE5B,IAAIk+C,EAAUl+C,KAAKzM,GAAQ,IAAIus0B,EAAa9/zB,MAQ5C,OANAA,KAAKo6zB,UAAUtm0B,KAAKoqD,GAEhBl+C,KAAKpQ,QAAQ2D,IAChB2qD,EAAQ6vD,SAGF/tG,IACR,EAIA4iC,OAAQ,WAKP,GAHA5iC,KAAKy6zB,aAAY,GACbz6zB,KAAKpQ,QAAQ+p0B,WAAa35zB,KAAKitH,IAAI,UAAWjtH,KAAKg+zB,qBAEnDh+zB,KAAK+/zB,eAAiB//zB,KAAKqjkB,WAAWonP,YACzC,MAAM,IAAIljzB,MAAM,qDAGjB,WAEQvH,KAAKqjkB,WAAWonP,mBAChBzqzB,KAAK+/zB,YACb,CAAE,MAAO/60B,GAERgb,KAAKqjkB,WAAWonP,iBAAc3zzB,EAE9BkJ,KAAK+/zB,kBAAejp0B,CACrB,CA2BA,IAAIzR,EACJ,IAAKA,UA1ByByR,IAA1BkJ,KAAKq/zB,kBACRr/zB,KAAKy/zB,aAGNz/zB,KAAKkhE,QAELt+B,GAAO5iC,KAAK68zB,UAER78zB,KAAKgg0B,kBACRhg0B,KAAKgg0B,mBAEFhg0B,KAAKig0B,iBACR1U,EAAgBvrzB,KAAKig0B,gBACrBjg0B,KAAKig0B,eAAiB,MAGvBjg0B,KAAKkg0B,iBAEDlg0B,KAAKk7zB,SAIRl7zB,KAAKw1Z,KAAK,UAIDx1Z,KAAK6hD,QACd7hD,KAAK6hD,QAAQx8D,GAAGu9C,SAEjB,IAAKv9C,KAAK2a,KAAKmg0B,OACdv9xB,GAAO5iC,KAAKmg0B,OAAO960B,IAQpB,OALA2a,KAAK6hD,QAAU,GACf7hD,KAAKmg0B,OAAS,UACPng0B,KAAK68zB,gBACL78zB,KAAKog0B,UAELpg0B,IACR,EAOAqg0B,WAAY,SAAU9s0B,EAAMuyD,GAC3B,IACIijmB,EAAOwtK,GAAS,MADJ,gBAAkBhj0B,EAAO,YAAcA,EAAKxP,QAAQ,OAAQ,IAAM,QAAU,IACtD+hE,GAAa9lD,KAAK68zB,UAKxD,OAHItp0B,IACHyM,KAAKmg0B,OAAO5s0B,GAAQw1pB,GAEdA,CACR,EAMA//U,UAAW,WAGV,OAFAhpU,KAAKsg0B,iBAEDtg0B,KAAK8+zB,cAAgB9+zB,KAAKug0B,SACtBvg0B,KAAK8+zB,YAAY75yB,QAElBjlB,KAAKwg0B,mBAAmBxg0B,KAAKyg0B,uBACrC,EAIAzyf,QAAS,WACR,OAAOhuU,KAAK26zB,KACb,EAIA5xtB,UAAW,WACV,IAAIhpE,EAAS//B,KAAK0+zB,iBAIlB,OAAO,IAAIvR,EAHFntzB,KAAKgxzB,UAAUjxxB,EAAOsuxB,iBACtBruzB,KAAKgxzB,UAAUjxxB,EAAOuuxB,eAGhC,EAIAoS,WAAY,WACX,YAAgC5p0B,IAAzBkJ,KAAKpQ,QAAQi4U,QAAwB7nU,KAAK2g0B,gBAAkB,EAAI3g0B,KAAKpQ,QAAQi4U,OACrF,EAIA+4f,WAAY,WACX,YAAgC9p0B,IAAzBkJ,KAAKpQ,QAAQ4ooB,aACM1hoB,IAAxBkJ,KAAK6g0B,eAA+Bt70B,IAAWya,KAAK6g0B,eACrD7g0B,KAAKpQ,QAAQ4ooB,OACf,EAOA4jM,cAAe,SAAUr8xB,EAAQK,EAAQ5vC,GACxCuvC,EAASwtxB,EAAextxB,GACxBvvC,EAAUw8zB,EAAQx8zB,GAAW,CAAC,EAAG,IAEjC,IAAI+jL,EAAOv0K,KAAKguU,WAAa,EACzBtkV,EAAMsW,KAAK0g0B,aACX/20B,EAAMqW,KAAK4g0B,aACXv6hB,EAAKtmQ,EAAOwvxB,eACZl9e,EAAKtyS,EAAO2vxB,eACZ38yB,EAAO/S,KAAKg5Z,UAAUvhE,SAASjnW,GAC/Bsw0B,EAAa5T,EAASltzB,KAAKy1e,QAAQpjK,EAAI99J,GAAOv0K,KAAKy1e,QAAQpvM,EAAI9xH,IAAOykP,UACtEurR,EAAOz3a,GAAQumjB,MAAQrzzB,KAAKpQ,QAAQ2qoB,SAAW,EAC/CwmM,EAAShuzB,EAAKxsB,EAAIu60B,EAAWv60B,EAC7By60B,EAASjuzB,EAAKpvB,EAAIm90B,EAAWn90B,EAC7BinC,EAAQwV,EAAS56C,KAAKmE,IAAIo30B,EAAQC,GAAUx70B,KAAKkE,IAAIq30B,EAAQC,GASjE,OAPAzspB,EAAOv0K,KAAK69zB,aAAajzyB,EAAO2pJ,GAE5BgwgB,IACHhwgB,EAAO/uL,KAAK+F,MAAMgpL,GAAQgwgB,EAAO,OAASA,EAAO,KACjDhwgB,EAAOn0I,EAAS56C,KAAKsjE,KAAKyrH,EAAOgwgB,GAAQA,EAAO/+rB,KAAKQ,MAAMuuL,EAAOgwgB,GAAQA,GAGpE/+rB,KAAKmE,IAAID,EAAKlE,KAAKkE,IAAIC,EAAK4qL,GACpC,EAIAykP,QAAS,WAQR,OAPKh5Z,KAAKkyE,QAASlyE,KAAKs6zB,eACvBt6zB,KAAKkyE,MAAQ,IAAI00I,EAChB5mN,KAAKqjkB,WAAWn3kB,aAAe,EAC/B8T,KAAKqjkB,WAAWp3kB,cAAgB,GAEjC+T,KAAKs6zB,cAAe,GAEdt6zB,KAAKkyE,MAAMjtD,OACnB,EAKAy5yB,eAAgB,SAAUvh0B,EAAQo3K,GACjC,IAAI0spB,EAAejh0B,KAAKkh0B,iBAAiB/j0B,EAAQo3K,GACjD,OAAO,IAAI04oB,EAAOgU,EAAcA,EAAa3t0B,IAAI0M,KAAKg5Z,WACvD,EAQAmoa,eAAgB,WAEf,OADAnh0B,KAAKsg0B,iBACEtg0B,KAAKoh0B,YACb,EAKAC,oBAAqB,SAAU9spB,GAC9B,OAAOv0K,KAAKpQ,QAAQ8p0B,IAAIzI,wBAA4Bn6zB,IAATy9K,EAAqBv0K,KAAKguU,UAAYz5J,EAClF,EAMAiwZ,QAAS,SAAUukF,GAClB,MAAuB,iBAATA,EAAoB/opB,KAAKmg0B,OAAOp3K,GAAQA,CACvD,EAKAh8U,SAAU,WACT,OAAO/sU,KAAKmg0B,MACb,EAIApga,aAAc,WACb,OAAO//Z,KAAKqjkB,UACb,EAQAs4P,aAAc,SAAU2F,EAAQC,GAE/B,IAAI7H,EAAM15zB,KAAKpQ,QAAQ8p0B,IAEvB,OADA6H,OAAwBzq0B,IAAbyq0B,EAAyBvh0B,KAAK26zB,MAAQ4G,EAC1C7H,EAAI9uyB,MAAM02yB,GAAU5H,EAAI9uyB,MAAM22yB,EACtC,EAMA1D,aAAc,SAAUjzyB,EAAO22yB,GAC9B,IAAI7H,EAAM15zB,KAAKpQ,QAAQ8p0B,IACvB6H,OAAwBzq0B,IAAbyq0B,EAAyBvh0B,KAAK26zB,MAAQ4G,EACjD,IAAIhtpB,EAAOmlpB,EAAInlpB,KAAK3pJ,EAAQ8uyB,EAAI9uyB,MAAM22yB,IACtC,OAAOx70B,MAAMwuL,GAAQhvL,IAAWgvL,CACjC,EAOAkhU,QAAS,SAAUw1Q,EAAQ12kB,GAE1B,OADAA,OAAgBz9K,IAATy9K,EAAqBv0K,KAAK26zB,MAAQpmpB,EAClCv0K,KAAKpQ,QAAQ8p0B,IAAIjJ,cAAcjD,EAASviE,GAAS12kB,EACzD,EAIAy8oB,UAAW,SAAUniyB,EAAO0lJ,GAE3B,OADAA,OAAgBz9K,IAATy9K,EAAqBv0K,KAAK26zB,MAAQpmpB,EAClCv0K,KAAKpQ,QAAQ8p0B,IAAI7I,cAAc7D,EAAQn+xB,GAAQ0lJ,EACvD,EAKAispB,mBAAoB,SAAU3xyB,GAC7B,IAAI6hyB,EAAiB1D,EAAQn+xB,GAAOv7B,IAAI0M,KAAKmh0B,kBAC7C,OAAOnh0B,KAAKgxzB,UAAUN,EACvB,EAKA8Q,mBAAoB,SAAUv2E,GAE7B,OADqBjrvB,KAAKy1e,QAAQ+3U,EAASviE,IAASpjiB,SAC9B4lmB,UAAUztzB,KAAKmh0B,iBACtC,EAQA/Q,WAAY,SAAUnlE,GACrB,OAAOjrvB,KAAKpQ,QAAQ8p0B,IAAItJ,WAAW5C,EAASviE,GAC7C,EAQAomE,iBAAkB,SAAUpmE,GAC3B,OAAOjrvB,KAAKpQ,QAAQ8p0B,IAAIrI,iBAAiB9D,EAAetiE,GACzD,EAKA1yvB,SAAU,SAAUk5zB,EAASC,GAC5B,OAAO1xzB,KAAKpQ,QAAQ8p0B,IAAInh0B,SAASi1zB,EAASiE,GAAUjE,EAASkE,GAC9D,EAKA+P,2BAA4B,SAAU5yyB,GACrC,OAAOm+xB,EAAQn+xB,GAAO4oU,SAASz3V,KAAK88zB,iBACrC,EAKA4E,2BAA4B,SAAU7yyB,GACrC,OAAOm+xB,EAAQn+xB,GAAOv7B,IAAI0M,KAAK88zB,iBAChC,EAKAhB,uBAAwB,SAAUjtyB,GACjC,IAAI8yyB,EAAa3h0B,KAAKyh0B,2BAA2BzU,EAAQn+xB,IACzD,OAAO7uB,KAAKwg0B,mBAAmBmB,EAChC,EAKA9F,uBAAwB,SAAU5wE,GACjC,OAAOjrvB,KAAK0h0B,2BAA2B1h0B,KAAKwh0B,mBAAmBhU,EAASviE,IACzE,EAKA22E,2BAA4B,SAAU580B,GACrC,OAAO2z0B,GAAiB3z0B,EAAGgb,KAAKqjkB,WACjC,EAKAw+P,uBAAwB,SAAU780B,GACjC,OAAOgb,KAAKyh0B,2BAA2Bzh0B,KAAK4h0B,2BAA2B580B,GACxE,EAKAgnwB,mBAAoB,SAAUhnwB,GAC7B,OAAOgb,KAAKwg0B,mBAAmBxg0B,KAAK6h0B,uBAAuB780B,GAC5D,EAKAu10B,eAAgB,SAAUx8zB,GACzB,IAAI+nD,EAAY9lD,KAAKqjkB,WAAaxvkB,GAAIkK,GAEtC,IAAK+nD,EACJ,MAAM,IAAIv+C,MAAM,4BACV,GAAIu+C,EAAU2kwB,YACpB,MAAM,IAAIljzB,MAAM,yCAGjBojG,GAAG7kD,EAAW,SAAU9lD,KAAK8h0B,UAAW9h0B,MACxCA,KAAK+/zB,aAAe1lM,EAAMv0kB,EAC3B,EAEAshsB,YAAa,WACZ,IAAIthsB,EAAY9lD,KAAKqjkB,WAErBrjkB,KAAK+h0B,cAAgB/h0B,KAAKpQ,QAAQmq0B,eAAiBjtjB,GAAQumjB,MAE3DpptB,GAASnkD,EAAW,qBAClBgnN,GAAQ0xN,MAAQ,iBAAmB,KACnC1xN,GAAQmnjB,OAAS,kBAAoB,KACrCnnjB,GAAQ0ljB,MAAQ,iBAAmB,KACnC1ljB,GAAQ96C,OAAS,kBAAoB,KACrChyN,KAAK+h0B,cAAgB,qBAAuB,KAE9C,IAAIj50B,EAAW20C,GAASqoB,EAAW,YAElB,aAAbh9D,GAAwC,aAAbA,GAAwC,UAAbA,GAAqC,WAAbA,IACjFg9D,EAAUp8B,MAAM5gC,SAAW,YAG5BkX,KAAKgi0B,aAEDhi0B,KAAKii0B,iBACRji0B,KAAKii0B,iBAEP,EAEAD,WAAY,WACX,IAAIE,EAAQli0B,KAAKmg0B,OAAS,CAAC,EAC3Bng0B,KAAKmi0B,eAAiB,CAAC,EAcvBni0B,KAAK68zB,SAAW78zB,KAAKqg0B,WAAW,UAAWrg0B,KAAKqjkB,YAChD1sK,GAAY32Z,KAAK68zB,SAAU,IAAIj2mB,EAAM,EAAG,IAIxC5mN,KAAKqg0B,WAAW,YAGhBrg0B,KAAKqg0B,WAAW,eAGhBrg0B,KAAKqg0B,WAAW,cAGhBrg0B,KAAKqg0B,WAAW,cAGhBrg0B,KAAKqg0B,WAAW,eAGhBrg0B,KAAKqg0B,WAAW,aAEXrg0B,KAAKpQ,QAAQoq0B,sBACjB/vtB,GAASi4tB,EAAME,WAAY,qBAC3Bn4tB,GAASi4tB,EAAMG,WAAY,qBAE7B,EAMAhmM,WAAY,SAAUl/nB,EAAQo3K,EAAMgnpB,GACnC5ka,GAAY32Z,KAAK68zB,SAAU,IAAIj2mB,EAAM,EAAG,IAExC,IAAIg2U,GAAW58hB,KAAKk7zB,QACpBl7zB,KAAKk7zB,SAAU,EACf3mpB,EAAOv0K,KAAK46zB,WAAWrmpB,GAEvBv0K,KAAKw1Z,KAAK,gBAEV,IAAI8sa,EAActi0B,KAAK26zB,QAAUpmpB,EACjCv0K,KACEy9zB,WAAW6E,EAAa/G,GACxBqC,MAAMzg0B,EAAQo3K,GACduppB,SAASwE,GAKXti0B,KAAKw1Z,KAAK,aAKNonI,GACH58hB,KAAKw1Z,KAAK,OAEZ,EAEAioa,WAAY,SAAU6E,EAAa/G,GAWlC,OANI+G,GACHti0B,KAAKw1Z,KAAK,aAEN+la,GACJv7zB,KAAKw1Z,KAAK,aAEJx1Z,IACR,EAEA49zB,MAAO,SAAUzg0B,EAAQo3K,EAAMx+K,EAAMws0B,QACvBzr0B,IAATy9K,IACHA,EAAOv0K,KAAK26zB,OAEb,IAAI2H,EAActi0B,KAAK26zB,QAAUpmpB,EAqBjC,OAnBAv0K,KAAK26zB,MAAQpmpB,EACbv0K,KAAK8+zB,YAAc3h0B,EACnB6C,KAAKoh0B,aAAeph0B,KAAKwi0B,mBAAmBrl0B,GAEvCol0B,EAYMxs0B,GAAQA,EAAK0s0B,OACvBzi0B,KAAKw1Z,KAAK,OAAQz/Z,KATdus0B,GAAgBvs0B,GAAQA,EAAK0s0B,QAChCzi0B,KAAKw1Z,KAAK,OAAQz/Z,GAMnBiK,KAAKw1Z,KAAK,OAAQz/Z,IAIZiK,IACR,EAEA89zB,SAAU,SAAUwE,GAUnB,OAPIA,GACHti0B,KAAKw1Z,KAAK,WAMJx1Z,KAAKw1Z,KAAK,UAClB,EAEAt0V,MAAO,WAKN,OAJAqqvB,EAAgBvrzB,KAAK29zB,aACjB39zB,KAAK08zB,UACR18zB,KAAK08zB,SAASh3zB,OAER1F,IACR,EAEA+8zB,UAAW,SAAUn40B,GACpB+xa,GAAY32Z,KAAK68zB,SAAU78zB,KAAK88zB,iBAAiBrle,SAAS7yW,GAC3D,EAEA890B,aAAc,WACb,OAAO1i0B,KAAK4g0B,aAAe5g0B,KAAK0g0B,YACjC,EAEA1C,oBAAqB,WACfh+zB,KAAKq+zB,kBACTr+zB,KAAKo+zB,gBAAgBp+zB,KAAKpQ,QAAQ+p0B,UAEpC,EAEA2G,eAAgB,WACf,IAAKtg0B,KAAKk7zB,QACT,MAAM,IAAI3zzB,MAAM,iCAElB,EAKAkzzB,YAAa,SAAU73xB,GACtB5iC,KAAK2i0B,SAAW,CAAC,EACjB3i0B,KAAK2i0B,SAAStoM,EAAMr6nB,KAAKqjkB,aAAerjkB,KAExC,IAAI4i0B,EAAQhgyB,EAASqqF,GAAMtiB,GA6B3Bi4tB,EAAM5i0B,KAAKqjkB,WAAY,mGAC6CrjkB,KAAK6i0B,gBAAiB7i0B,MAEtFA,KAAKpQ,QAAQuq0B,aAChByI,EAAMz70B,OAAQ,SAAU6Y,KAAKw6zB,UAAWx6zB,MAGrC8sQ,GAAQumjB,OAASrzzB,KAAKpQ,QAAQqq0B,mBAChCr3xB,EAAS5iC,KAAKitH,IAAMjtH,KAAK2qG,IAAItqG,KAAKL,KAAM,UAAWA,KAAK8i0B,WAE3D,EAEAtI,UAAW,WACVjP,EAAgBvrzB,KAAKig0B,gBACrBjg0B,KAAKig0B,eAAiBhxzB,EACd,WAAcjP,KAAK6+zB,eAAe,CAACG,iBAAiB,GAAQ,EAAGh/zB,KACxE,EAEA8h0B,UAAW,WACV9h0B,KAAKqjkB,WAAWp2kB,UAAa,EAC7B+S,KAAKqjkB,WAAWt2kB,WAAa,CAC9B,EAEA+10B,WAAY,WACX,IAAIvwzB,EAAMvS,KAAK88zB,iBACXt30B,KAAKmE,IAAInE,KAAKM,IAAIysB,EAAIhsB,GAAIf,KAAKM,IAAIysB,EAAI5uB,KAAOqc,KAAKpQ,QAAQqq0B,kBAG9Dj6zB,KAAKq8nB,WAAWr8nB,KAAKgpU,YAAahpU,KAAKguU,UAEzC,EAEA+0f,kBAAmB,SAAU/90B,EAAGgrB,GAO/B,IANA,IACIjiB,EADAg0e,EAAU,GAEVihW,EAAmB,aAAThzzB,GAAgC,cAATA,EACjCq3F,EAAMriH,EAAE+I,QAAU/I,EAAEk3b,WACpBpkC,GAAW,EAERzwS,GAAK,CAEX,IADAt5G,EAASiS,KAAK2i0B,SAAStoM,EAAMhzhB,OACL,UAATr3F,GAA6B,aAATA,IAAwBhQ,KAAKij0B,gBAAgBl10B,GAAS,CAExF+pZ,GAAW,EACX,KACD,CACA,GAAI/pZ,GAAUA,EAAOs+zB,QAAQr8yB,GAAM,GAAO,CACzC,GAAIgzzB,IAAYxK,GAAiBnxtB,EAAKriH,GAAM,MAE5C,GADA+8e,EAAQjue,KAAK/F,GACTi10B,EAAW,KAChB,CACA,GAAI37tB,IAAQrnG,KAAKqjkB,WAAc,MAC/Bh8d,EAAMA,EAAIr/G,UACX,CAIA,OAHK+5e,EAAQ3te,QAAW0jZ,GAAakrb,IAAWhj0B,KAAKqszB,QAAQr8yB,GAAM,KAClE+xd,EAAU,CAAC/he,OAEL+he,CACR,EAEAmhW,iBAAkB,SAAU3lyB,GAC3B,KAAOA,GAAMA,IAAOv9B,KAAKqjkB,YAAY,CACpC,GAAI9liB,EAA2B,uBAAK,OAAO,EAC3CA,EAAKA,EAAGv1C,UACT,CACD,EAEA660B,gBAAiB,SAAU790B,GAC1B,IAAIu4C,EAAMv4C,EAAE+I,QAAU/I,EAAEk3b,WACxB,MAAKl8a,KAAKk7zB,SAAW39xB,EAA4B,yBAAgB,UAAXv4C,EAAEgrB,MAAoBhQ,KAAKkj0B,iBAAiB3lyB,IAAlG,CAIA,IAAIvtB,EAAOhrB,EAAEgrB,KAEA,cAATA,GAEHinzB,GAAe15xB,GAGhBv9B,KAAKmj0B,cAAcn+0B,EAAGgrB,EATtB,CAUD,EAEAozzB,aAAc,CAAC,QAAS,WAAY,YAAa,WAAY,eAE7DD,cAAe,SAAUn+0B,EAAGgrB,EAAMqzzB,GAEjC,GAAe,UAAXr+0B,EAAEgrB,KAAkB,CAMvB,IAAIszzB,EAAQtguB,EAAO,CAAC,EAAGh+G,GACvBs+0B,EAAMtzzB,KAAO,WACbhQ,KAAKmj0B,cAAcG,EAAOA,EAAMtzzB,KAAMqzzB,EACvC,CAGA,IAAIthW,EAAU/he,KAAK+i0B,kBAAkB/90B,EAAGgrB,GAExC,GAAIqzzB,EAAe,CAElB,IADA,IAAIv9e,EAAW,GACNzgW,EAAI,EAAGA,EAAIg+0B,EAAcjv0B,OAAQ/O,IACrCg+0B,EAAch+0B,GAAGgn0B,QAAQr8yB,GAAM,IAClC81U,EAAShyV,KAAKuv0B,EAAch+0B,IAG9B08e,EAAUj8I,EAAS93V,OAAO+ze,EAC3B,CAEA,GAAKA,EAAQ3te,OAAb,CAEa,gBAAT4b,GACH28G,GAAe3nI,GAGhB,IAAI+I,EAASg0e,EAAQ,GACjBhse,EAAO,CACV+lhB,cAAe92hB,GAGhB,GAAe,aAAXA,EAAEgrB,MAAkC,YAAXhrB,EAAEgrB,MAAiC,UAAXhrB,EAAEgrB,KAAkB,CACxE,IAAIuzzB,EAAWx10B,EAAOs9vB,aAAet9vB,EAAOy10B,SAAWz10B,EAAOy10B,SAAW,IACzEzt0B,EAAK0t0B,eAAiBF,EACrBvj0B,KAAK67zB,uBAAuB9t0B,EAAOs9vB,aAAerrvB,KAAK4h0B,2BAA2B580B,GACnF+Q,EAAK4r0B,WAAa3h0B,KAAKyh0B,2BAA2B1r0B,EAAK0t0B,gBACvD1t0B,EAAKk1vB,OAASs4E,EAAWx10B,EAAOs9vB,YAAcrrvB,KAAKwg0B,mBAAmBzq0B,EAAK4r0B,WAC5E,CAEA,IAAKt80B,EAAI,EAAGA,EAAI08e,EAAQ3te,OAAQ/O,IAE/B,GADA08e,EAAQ18e,GAAGmwa,KAAKxlZ,EAAMja,GAAM,GACxBA,EAAK+lhB,cAAcn2gB,WACsB,IAA3Co8d,EAAQ18e,GAAGuK,QAAQ8z0B,sBAAuE,IAAtCn70B,EAAQyX,KAAKoj0B,aAAcpzzB,GAAiB,MAtBpE,CAwBhC,EAEAizzB,gBAAiB,SAAU3wzB,GAE1B,OADAA,EAAMA,EAAIwlY,UAAYxlY,EAAIwlY,SAAS9hZ,UAAYsc,EAAMtS,MACzC83Y,UAAYxlY,EAAIwlY,SAASjnS,SAAa7wG,KAAK2j0B,SAAW3j0B,KAAK2j0B,QAAQ9ytB,OAChF,EAEAqvtB,eAAgB,WACf,IAAK,IAAI760B,EAAI,EAAGoK,EAAMuQ,KAAKo6zB,UAAUhm0B,OAAQ/O,EAAIoK,EAAKpK,IACrD2a,KAAKo6zB,UAAU/00B,GAAGyoH,SAEpB,EAQAoshB,UAAW,SAAUhrnB,EAAUia,GAM9B,OALInpB,KAAKk7zB,QACRhszB,EAAS7O,KAAK8oB,GAAWnpB,KAAM,CAACjS,OAAQiS,OAExCA,KAAK2qG,GAAG,OAAQz7F,EAAUia,GAEpBnpB,IACR,EAKA88zB,eAAgB,WACf,OAAOhma,GAAY92Z,KAAK68zB,WAAa,IAAIj2mB,EAAM,EAAG,EACnD,EAEA25mB,OAAQ,WACP,IAAIhuzB,EAAMvS,KAAK88zB,iBACf,OAAOvqzB,IAAQA,EAAIw1M,OAAO,CAAC,EAAG,GAC/B,EAEAm5mB,iBAAkB,SAAU/j0B,EAAQo3K,GAInC,OAHkBp3K,QAAmBrG,IAATy9K,EAC3Bv0K,KAAKwi0B,mBAAmBrl0B,EAAQo3K,GAChCv0K,KAAKmh0B,kBACa1pe,SAASz3V,KAAK88zB,iBAClC,EAEA0F,mBAAoB,SAAUrl0B,EAAQo3K,GACrC,IAAIqnpB,EAAW57zB,KAAKg5Z,UAAU20Z,UAAU,GACxC,OAAO3tzB,KAAKy1e,QAAQt4e,EAAQo3K,GAAMk5oB,UAAUmO,GAAUr6vB,KAAKvhE,KAAK88zB,kBAAkBj1mB,QACnF,EAEA+7mB,uBAAwB,SAAU34E,EAAQ12kB,EAAMp3K,GAC/C,IAAIs0B,EAAUzxB,KAAKwi0B,mBAAmBrl0B,EAAQo3K,GAC9C,OAAOv0K,KAAKy1e,QAAQw1Q,EAAQ12kB,GAAMk5oB,UAAUh8xB,EAC7C,EAEAoyyB,8BAA+B,SAAUC,EAAcvvpB,EAAMp3K,GAC5D,IAAIs0B,EAAUzxB,KAAKwi0B,mBAAmBrl0B,EAAQo3K,GAC9C,OAAO24oB,EAAS,CACfltzB,KAAKy1e,QAAQquV,EAAazU,eAAgB96oB,GAAMk5oB,UAAUh8xB,GAC1DzxB,KAAKy1e,QAAQquV,EAAavU,eAAgBh7oB,GAAMk5oB,UAAUh8xB,GAC1DzxB,KAAKy1e,QAAQquV,EAAapU,eAAgBn7oB,GAAMk5oB,UAAUh8xB,GAC1DzxB,KAAKy1e,QAAQquV,EAAaxU,eAAgB/6oB,GAAMk5oB,UAAUh8xB,IAE5D,EAGAgvyB,qBAAsB,WACrB,OAAOzg0B,KAAKyh0B,2BAA2Bzh0B,KAAKg5Z,UAAU20Z,UAAU,GACjE,EAGAoW,iBAAkB,SAAU94E,GAC3B,OAAOjrvB,KAAKwh0B,mBAAmBv2E,GAAQxzZ,SAASz3V,KAAKyg0B,uBACtD,EAGAxF,aAAc,SAAU99zB,EAAQo3K,EAAMx0I,GAErC,IAAKA,EAAU,OAAO5iC,EAEtB,IAAI6m0B,EAAchk0B,KAAKy1e,QAAQt4e,EAAQo3K,GACnCqnpB,EAAW57zB,KAAKg5Z,UAAU00Z,SAAS,GACnCuW,EAAa,IAAIhX,EAAO+W,EAAYvse,SAASmke,GAAWoI,EAAY1w0B,IAAIso0B,IACxEh30B,EAASob,KAAKkk0B,iBAAiBD,EAAYlkyB,EAAQw0I,GAKvD,OAAI/uL,KAAKM,IAAIlB,EAAO2B,IAAM,GAAKf,KAAKM,IAAIlB,EAAOjB,IAAM,EAC7CwZ,EAGD6C,KAAKgxzB,UAAUgT,EAAY1w0B,IAAI1O,GAAS2vL,EAChD,EAGA4vpB,aAAc,SAAUv/0B,EAAQm7C,GAC/B,IAAKA,EAAU,OAAOn7C,EAEtB,IAAIq/0B,EAAajk0B,KAAK0+zB,iBAClB0F,EAAY,IAAInX,EAAOgX,EAAWv60B,IAAI4J,IAAI1O,GAASq/0B,EAAWt60B,IAAI2J,IAAI1O,IAE1E,OAAOA,EAAO0O,IAAI0M,KAAKkk0B,iBAAiBE,EAAWrkyB,GACpD,EAGAmkyB,iBAAkB,SAAUG,EAAU1K,EAAWplpB,GAChD,IAAI+vpB,EAAqBpX,EACjBltzB,KAAKy1e,QAAQkkV,EAAUrK,eAAgB/6oB,GACvCv0K,KAAKy1e,QAAQkkV,EAAUtK,eAAgB96oB,IAE3Cv4K,EAAYso0B,EAAmB560B,IAAI+tW,SAAS4se,EAAS360B,KACrDuS,EAAYqo0B,EAAmB360B,IAAI8tW,SAAS4se,EAAS160B,KAKzD,OAAO,IAAIi9N,EAHF5mN,KAAKuk0B,SAASvo0B,EAAUzV,GAAI0V,EAAU1V,GACtCyZ,KAAKuk0B,SAASvo0B,EAAUrY,GAAIsY,EAAUtY,GAGhD,EAEA4g1B,SAAU,SAAUp60B,EAAMF,GACzB,OAAOE,EAAOF,EAAQ,EACrBzE,KAAK+F,MAAMpB,EAAOF,GAAS,EAC3BzE,KAAKmE,IAAI,EAAGnE,KAAKsjE,KAAK3+D,IAAS3E,KAAKmE,IAAI,EAAGnE,KAAKQ,MAAMiE,GACxD,EAEA2w0B,WAAY,SAAUrmpB,GACrB,IAAI7qL,EAAMsW,KAAK0g0B,aACX/20B,EAAMqW,KAAK4g0B,aACXr8I,EAAOz3a,GAAQumjB,MAAQrzzB,KAAKpQ,QAAQ2qoB,SAAW,EAInD,OAHIgqD,IACHhwgB,EAAO/uL,KAAK+F,MAAMgpL,EAAOgwgB,GAAQA,GAE3B/+rB,KAAKmE,IAAID,EAAKlE,KAAKkE,IAAIC,EAAK4qL,GACpC,EAEAoopB,qBAAsB,WACrB38zB,KAAKw1Z,KAAK,OACX,EAEAona,oBAAqB,WACpBlztB,GAAY1pG,KAAK68zB,SAAU,oBAC3B78zB,KAAKw1Z,KAAK,UACX,EAEA6la,gBAAiB,SAAUl+zB,EAAQvN,GAElC,IAAIhL,EAASob,KAAK+j0B,iBAAiB5m0B,GAAQ8wzB,SAG3C,SAAqC,KAAhCr+zB,GAAWA,EAAQotF,WAAsBh9E,KAAKg5Z,UAAUxxa,SAAS5C,KAEtEob,KAAKy8zB,MAAM730B,EAAQgL,GAEZ,GACR,EAEAkr0B,iBAAkB,WAEjB,IAAI7lyB,EAAQj1B,KAAKk2B,OAASqgyB,GAAS,MAAO,uCAC1Cv2zB,KAAKmg0B,OAAO17P,QAAQt0e,YAAYl7D,GAEhCj1B,KAAK2qG,GAAG,WAAY,SAAU3lH,GAC7B,IAAIstC,EAAO4jyB,GACP9s0B,EAAY4W,KAAKk2B,OAAOxM,MAAM4I,GAElC6K,GAAan9B,KAAKk2B,OAAQl2B,KAAKy1e,QAAQzwf,EAAEmY,OAAQnY,EAAEuvL,MAAOv0K,KAAK27zB,aAAa320B,EAAEuvL,KAAM,IAGhFnrL,IAAc4W,KAAKk2B,OAAOxM,MAAM4I,IAAStyB,KAAKwk0B,gBACjDxk0B,KAAKyk0B,sBAEP,EAAGzk0B,MAEHA,KAAK2qG,GAAG,eAAgB3qG,KAAK0k0B,aAAc1k0B,MAE3CA,KAAKgszB,IAAI,SAAUhszB,KAAK2k0B,kBAAmB3k0B,KAC5C,EAEA2k0B,kBAAmB,WAClB/hyB,GAAO5iC,KAAKk2B,QACZl2B,KAAKitH,IAAI,eAAgBjtH,KAAK0k0B,aAAc1k0B,aACrCA,KAAKk2B,MACb,EAEAwuyB,aAAc,WACb,IAAI9+0B,EAAIoa,KAAKgpU,YACTlnR,EAAI9hD,KAAKguU,UACb7wS,GAAan9B,KAAKk2B,OAAQl2B,KAAKy1e,QAAQ7vf,EAAGk8D,GAAI9hD,KAAK27zB,aAAa75wB,EAAG,GACpE,EAEAi5wB,oBAAqB,SAAU/10B,GAC1Bgb,KAAKwk0B,gBAAkBx/0B,EAAEqiW,aAAa9+V,QAAQ,cAAgB,GACjEyX,KAAKyk0B,sBAEP,EAEAG,kBAAmB,WAClB,OAAQ5k0B,KAAKqjkB,WAAW57R,uBAAuB,yBAAyBrzS,MACzE,EAEAgn0B,iBAAkB,SAAUj+zB,EAAQo3K,EAAM3kL,GAEzC,GAAIoQ,KAAKwk0B,eAAkB,OAAO,EAKlC,GAHA500B,EAAUA,GAAW,CAAC,GAGjBoQ,KAAK66zB,gBAAqC,IAApBjr0B,EAAQotF,SAAqBh9E,KAAK4k0B,qBACrDp/0B,KAAKM,IAAIyuL,EAAOv0K,KAAK26zB,OAAS36zB,KAAKpQ,QAAQkq0B,uBAA0B,OAAO,EAGpF,IAAIlvyB,EAAQ5qB,KAAK27zB,aAAapnpB,GAC1B3vL,EAASob,KAAK+j0B,iBAAiB5m0B,GAAQwwzB,UAAU,EAAI,EAAI/iyB,GAG7D,SAAwB,IAApBh7B,EAAQotF,UAAqBh9E,KAAKg5Z,UAAUxxa,SAAS5C,KAEzDqqB,EAAiB,WAChBjP,KACKy9zB,YAAW,EAAM7t0B,EAAQ2r0B,cAAe,GACxCsJ,aAAa1n0B,EAAQo3K,GAAM,EACjC,EAAGv0K,MAEI,GACR,EAEA6k0B,aAAc,SAAU1n0B,EAAQo3K,EAAMuwpB,EAAWC,GAC3C/k0B,KAAK68zB,WAENiI,IACH9k0B,KAAKwk0B,gBAAiB,EAGtBxk0B,KAAKgl0B,iBAAmB7n0B,EACxB6C,KAAKil0B,eAAiB1wpB,EAEtBtqE,GAASjqG,KAAK68zB,SAAU,sBAMzB78zB,KAAKw1Z,KAAK,WAAY,CACrBr4Z,OAAQA,EACRo3K,KAAMA,EACNwwpB,SAAUA,IAGN/k0B,KAAKkl0B,qBACTll0B,KAAKkl0B,mBAAqBll0B,KAAK26zB,QAAU36zB,KAAKil0B,gBAG/Cjl0B,KAAK49zB,MAAM59zB,KAAKgl0B,iBAAkBhl0B,KAAKil0B,oBAAgBnu0B,GAAW,GAGlE2Q,WAAWi0C,EAAK17C,KAAKyk0B,qBAAsBzk0B,MAAO,KACnD,EAEAyk0B,qBAAsB,WAChBzk0B,KAAKwk0B,iBAENxk0B,KAAK68zB,UACRnztB,GAAY1pG,KAAK68zB,SAAU,qBAG5B78zB,KAAKwk0B,gBAAiB,EAEtBxk0B,KAAK49zB,MAAM59zB,KAAKgl0B,iBAAkBhl0B,KAAKil0B,oBAAgBnu0B,GAAW,GAE9DkJ,KAAKkl0B,oBACRll0B,KAAKw1Z,KAAK,eAEJx1Z,KAAKkl0B,mBAEZll0B,KAAKw1Z,KAAK,QAEVx1Z,KAAK89zB,UAAS,GACf,IA0BD,IAAIp4Y,GAAU8lY,EAAMxotB,OAAO,CAG1BpzG,QAAS,CAIR9G,SAAU,YAGXygD,WAAY,SAAU35C,GACrB0F,EAAW0K,KAAMpQ,EAClB,EAQAkna,YAAa,WACZ,OAAO92Z,KAAKpQ,QAAQ9G,QACrB,EAIA6ta,YAAa,SAAU7ta,GACtB,IAAIiK,EAAMiN,KAAK4xY,KAYf,OAVI7+Y,GACHA,EAAIoy0B,cAAcnl0B,MAGnBA,KAAKpQ,QAAQ9G,SAAWA,EAEpBiK,GACHA,EAAIqy0B,WAAWpl0B,MAGTA,IACR,EAIA+/Z,aAAc,WACb,OAAO//Z,KAAKqjkB,UACb,EAIAmkL,MAAO,SAAUz0vB,GAChBiN,KAAK4iC,SACL5iC,KAAK4xY,KAAO7+Y,EAEZ,IAAI+yD,EAAY9lD,KAAKqjkB,WAAarjkB,KAAK0sU,MAAM35U,GACzCwf,EAAMvS,KAAK82Z,cACX47E,EAAS3/e,EAAIqmoB,gBAAgB7mnB,GAYjC,OAVA03F,GAASnkD,EAAW,oBAEW,IAA3BvzC,EAAIhqB,QAAQ,UACfmqf,EAAO/pX,aAAa7iE,EAAW4sb,EAAO9pX,YAEtC8pX,EAAOviZ,YAAYrqC,GAGpB9lD,KAAK4xY,KAAKjnS,GAAG,SAAU3qG,KAAK4iC,OAAQ5iC,MAE7BA,IACR,EAIA4iC,OAAQ,WACP,OAAK5iC,KAAK4xY,MAIVhvW,GAAO5iC,KAAKqjkB,YAERrjkB,KAAKmtU,UACRntU,KAAKmtU,SAASntU,KAAK4xY,MAGpB5xY,KAAK4xY,KAAK3kR,IAAI,SAAUjtH,KAAK4iC,OAAQ5iC,MACrCA,KAAK4xY,KAAO,KAEL5xY,MAZCA,IAaT,EAEAql0B,cAAe,SAAUrg1B,GAEpBgb,KAAK4xY,MAAQ5sZ,GAAKA,EAAE2oG,QAAU,GAAK3oG,EAAE6oG,QAAU,GAClD7tF,KAAK4xY,KAAKmuB,eAAe/uU,OAE3B,IAGGo/M,GAAU,SAAUxgT,GACvB,OAAO,IAAI81b,GAAQ91b,EACpB,EAiBAoD,GAAI4vU,QAAQ,CAGXwigB,WAAY,SAAUh1hB,GAErB,OADAA,EAAQo3c,MAAMxnvB,MACPA,IACR,EAIAml0B,cAAe,SAAU/0hB,GAExB,OADAA,EAAQxtQ,SACD5iC,IACR,EAEAii0B,gBAAiB,WAChB,IAAIpsK,EAAU71pB,KAAKo5nB,gBAAkB,CAAC,EAClC5gnB,EAAI,WACJstC,EAAY9lD,KAAKsl0B,kBACT/O,GAAS,MAAO/9yB,EAAI,oBAAqBxY,KAAKqjkB,YAE1D,SAASkiQ,EAAaC,EAAOC,GAC5B,IAAI37tB,EAAYtxF,EAAIgtzB,EAAQ,IAAMhtzB,EAAIitzB,EAEtC5vK,EAAQ2vK,EAAQC,GAASlP,GAAS,MAAOzstB,EAAWhkD,EACrD,CAEAy/wB,EAAa,MAAO,QACpBA,EAAa,MAAO,SACpBA,EAAa,SAAU,QACvBA,EAAa,SAAU,QACxB,EAEAvF,iBAAkB,WACjB,IAAK,IAAI360B,KAAK2a,KAAKo5nB,gBAClBx2lB,GAAO5iC,KAAKo5nB,gBAAgB/zoB,IAE7Bu9C,GAAO5iC,KAAKsl0B,0BACLtl0B,KAAKo5nB,uBACLp5nB,KAAKsl0B,iBACb,IA0CD,IAAII,GAAShgZ,GAAQ1iV,OAAO,CAG3BpzG,QAAS,CAGR+10B,WAAW,EACX780B,SAAU,WAIV880B,YAAY,EAIZC,gBAAgB,EAKhBC,YAAY,EAQZC,aAAc,SAAUC,EAAQC,EAAQC,EAAOC,GAC9C,OAAOD,EAAQC,GAAS,EAAKA,EAAQD,EAAQ,EAAI,CAClD,GAGD38xB,WAAY,SAAU68xB,EAAYC,EAAUz20B,GAS3C,IAAK,IAAIvK,KARTiQ,EAAW0K,KAAMpQ,GAEjBoQ,KAAKsm0B,oBAAsB,GAC3Btm0B,KAAK6hD,QAAU,GACf7hD,KAAKum0B,YAAc,EACnBvm0B,KAAKwm0B,gBAAiB,EACtBxm0B,KAAKym0B,eAAgB,EAEPL,EACbpm0B,KAAK0m0B,UAAUN,EAAW/g1B,GAAIA,GAG/B,IAAKA,KAAKgh1B,EACTrm0B,KAAK0m0B,UAAUL,EAAShh1B,GAAIA,GAAG,EAEjC,EAEAqnV,MAAO,SAAU35U,GAChBiN,KAAKonvB,cACLpnvB,KAAK4hC,UAEL5hC,KAAK4xY,KAAO7+Y,EACZA,EAAI43G,GAAG,UAAW3qG,KAAK2m0B,qBAAsB3m0B,MAE7C,IAAK,IAAI3a,EAAI,EAAGA,EAAI2a,KAAK6hD,QAAQztD,OAAQ/O,IACxC2a,KAAK6hD,QAAQx8D,GAAGs5Y,MAAMh0R,GAAG,aAAc3qG,KAAK4m0B,eAAgB5m0B,MAG7D,OAAOA,KAAKqjkB,UACb,EAEAmkL,MAAO,SAAUz0vB,GAGhB,OAFA2yb,GAAQtlb,UAAUonvB,MAAMnnvB,KAAKL,KAAMjN,GAE5BiN,KAAK6m0B,uBACb,EAEA15f,SAAU,WACTntU,KAAK4xY,KAAK3kR,IAAI,UAAWjtH,KAAK2m0B,qBAAsB3m0B,MAEpD,IAAK,IAAI3a,EAAI,EAAGA,EAAI2a,KAAK6hD,QAAQztD,OAAQ/O,IACxC2a,KAAK6hD,QAAQx8D,GAAGs5Y,MAAM1xQ,IAAI,aAAcjtH,KAAK4m0B,eAAgB5m0B,KAE/D,EAIA8m0B,aAAc,SAAUnoc,EAAOprY,GAE9B,OADAyM,KAAK0m0B,UAAU/nc,EAAOprY,GACdyM,KAAS,KAAIA,KAAK4hC,UAAY5hC,IACvC,EAIA+9X,WAAY,SAAUY,EAAOprY,GAE5B,OADAyM,KAAK0m0B,UAAU/nc,EAAOprY,GAAM,GACpByM,KAAS,KAAIA,KAAK4hC,UAAY5hC,IACvC,EAIA8nvB,YAAa,SAAUnpX,GACtBA,EAAM1xQ,IAAI,aAAcjtH,KAAK4m0B,eAAgB5m0B,MAE7C,IAAIsS,EAAMtS,KAAK+m0B,UAAU1sM,EAAM17P,IAI/B,OAHIrsX,GACHtS,KAAK6hD,QAAQ90B,OAAO/sB,KAAK6hD,QAAQt5D,QAAQ+pB,GAAM,GAExCtS,KAAS,KAAIA,KAAK4hC,UAAY5hC,IACvC,EAIA8nf,OAAQ,WACP79Y,GAASjqG,KAAKqjkB,WAAY,mCAC1BrjkB,KAAKgn0B,SAASt9yB,MAAM9iC,OAAS,KAC7B,IAAIqg1B,EAAmBjn0B,KAAK4xY,KAAKonB,UAAUr1a,GAAKqc,KAAKqjkB,WAAW58kB,UAAY,IAQ5E,OAPIwg1B,EAAmBjn0B,KAAKgn0B,SAAS/60B,cACpCg+G,GAASjqG,KAAKgn0B,SAAU,oCACxBhn0B,KAAKgn0B,SAASt9yB,MAAM9iC,OAASqg1B,EAAmB,MAEhDv9tB,GAAY1pG,KAAKgn0B,SAAU,oCAE5Bhn0B,KAAK2m0B,uBACE3m0B,IACR,EAIAkn0B,SAAU,WAET,OADAx9tB,GAAY1pG,KAAKqjkB,WAAY,mCACtBrjkB,IACR,EAEAonvB,YAAa,WACZ,IAAIt9oB,EAAY,yBACZhkD,EAAY9lD,KAAKqjkB,WAAakzP,GAAS,MAAOzstB,GAC9C67tB,EAAY3l0B,KAAKpQ,QAAQ+10B,UAG7B7/wB,EAAU7nD,aAAa,iBAAiB,GAExC4mkB,GAAwB/+gB,GACxBiisB,GAAyBjisB,GAEzB,IAAIimK,EAAU/rN,KAAKgn0B,SAAWzQ,GAAS,UAAWzstB,EAAY,SAE1D67tB,IACH3l0B,KAAK4xY,KAAKjnS,GAAG,QAAS3qG,KAAKkn0B,SAAUln0B,MAErC2qG,GAAG7kD,EAAW,CACbw3M,WAAYt9P,KAAKmn0B,cACjB9pkB,WAAYr9P,KAAKkn0B,UACfln0B,OAGJ,IAAIopH,EAAOppH,KAAKon0B,YAAc7Q,GAAS,IAAKzstB,EAAY,UAAWhkD,GACnEsjE,EAAKn7B,KAAO,IACZm7B,EAAK9yE,MAAQ,SACb8yE,EAAKnrH,aAAa,OAAQ,UAE1B0sG,GAAGye,EAAM,CACRi+sB,QAAS,SAAUri1B,GACA,KAAdA,EAAE4yT,SACL53S,KAAKmn0B,eAEP,EAEA/2sB,MAAO,SAAUprI,GAChB2nI,GAAe3nI,GACfgb,KAAKmn0B,eACN,GACEnn0B,MAEE2l0B,GACJ3l0B,KAAK8nf,SAGN9nf,KAAKsn0B,gBAAkB/Q,GAAS,MAAOzstB,EAAY,QAASiiH,GAC5D/rN,KAAKun0B,WAAahR,GAAS,MAAOzstB,EAAY,aAAciiH,GAC5D/rN,KAAKwn0B,cAAgBjR,GAAS,MAAOzstB,EAAY,YAAaiiH,GAE9DjmK,EAAUqqC,YAAY47H,EACvB,EAEAg7mB,UAAW,SAAUhp0B,GACpB,IAAK,IAAI1Y,EAAI,EAAGA,EAAI2a,KAAK6hD,QAAQztD,OAAQ/O,IAExC,GAAI2a,KAAK6hD,QAAQx8D,IAAMg1oB,EAAMr6nB,KAAK6hD,QAAQx8D,GAAGs5Y,SAAW5gY,EACvD,OAAOiC,KAAK6hD,QAAQx8D,EAGvB,EAEAqh1B,UAAW,SAAU/nc,EAAOprY,EAAMilO,GAC7Bx4N,KAAK4xY,MACRjT,EAAMh0R,GAAG,aAAc3qG,KAAK4m0B,eAAgB5m0B,MAG7CA,KAAK6hD,QAAQ/tD,KAAK,CACjB6qY,MAAOA,EACPprY,KAAMA,EACNilO,QAASA,IAGNx4N,KAAKpQ,QAAQk20B,YAChB9l0B,KAAK6hD,QAAQzuD,KAAKsoD,EAAK,SAAU9hD,EAAGC,GACnC,OAAOmG,KAAKpQ,QAAQm20B,aAAans0B,EAAE+kY,MAAO9kY,EAAE8kY,MAAO/kY,EAAErG,KAAMsG,EAAEtG,KAC9D,EAAGyM,OAGAA,KAAKpQ,QAAQg20B,YAAcjnc,EAAMm5B,YACpC93Z,KAAKum0B,cACL5nc,EAAMm5B,UAAU93Z,KAAKum0B,cAGtBvm0B,KAAK6m0B,uBACN,EAEAjlyB,QAAS,WACR,IAAK5hC,KAAKqjkB,WAAc,OAAOrjkB,KAE/B65P,GAAM75P,KAAKsn0B,iBACXztkB,GAAM75P,KAAKwn0B,eAEXxn0B,KAAKsm0B,oBAAsB,GAC3B,IAAImB,EAAmBC,EAAiBri1B,EAAGitB,EAAKq1zB,EAAkB,EAElE,IAAKti1B,EAAI,EAAGA,EAAI2a,KAAK6hD,QAAQztD,OAAQ/O,IACpCitB,EAAMtS,KAAK6hD,QAAQx8D,GACnB2a,KAAK4n0B,SAASt1zB,GACdo1zB,EAAkBA,GAAmBp1zB,EAAIkmN,QACzCivmB,EAAoBA,IAAsBn1zB,EAAIkmN,QAC9CmvmB,GAAoBr1zB,EAAIkmN,QAAc,EAAJ,EAWnC,OAPIx4N,KAAKpQ,QAAQi20B,iBAChB4B,EAAoBA,GAAqBE,EAAkB,EAC3D3n0B,KAAKsn0B,gBAAgB59yB,MAAM8yB,QAAUirxB,EAAoB,GAAK,QAG/Dzn0B,KAAKun0B,WAAW79yB,MAAM8yB,QAAUkrxB,GAAmBD,EAAoB,GAAK,OAErEzn0B,IACR,EAEA4m0B,eAAgB,SAAU5h1B,GACpBgb,KAAKwm0B,gBACTxm0B,KAAK4hC,UAGN,IAAItvB,EAAMtS,KAAK+m0B,UAAU1sM,EAAMr1oB,EAAE+I,SAW7BiiB,EAAOsC,EAAIkmN,QACF,QAAXxzO,EAAEgrB,KAAiB,aAAe,gBACvB,QAAXhrB,EAAEgrB,KAAiB,kBAAoB,KAErCA,GACHhQ,KAAK4xY,KAAK4jB,KAAKxlZ,EAAMsC,EAEvB,EAGAu1zB,oBAAqB,SAAUt00B,EAAMyiT,GAEpC,IAAI8xhB,EAAY,qEACdv00B,EAAO,KAAOyiT,EAAU,qBAAuB,IAAM,KAEnD+xhB,EAAgBt/0B,SAASskB,cAAc,OAG3C,OAFAg7zB,EAAcn9oB,UAAYk9oB,EAEnBC,EAAcn/sB,UACtB,EAEAg/sB,SAAU,SAAUt1zB,GACnB,IAEIrwB,EAFA4f,EAAQpZ,SAASskB,cAAc,SAC/BipS,EAAUh2S,KAAK4xY,KAAKo2b,SAAS11zB,EAAIqsX,OAGjCrsX,EAAIkmN,UACPv2O,EAAQwG,SAASskB,cAAc,UACzBiD,KAAO,WACb/tB,EAAM6nH,UAAY,kCAClB7nH,EAAM42b,eAAiB7iI,GAEvB/zT,EAAQ+d,KAAK6n0B,oBAAoB,uBAAyBxtM,EAAMr6nB,MAAOg2S,GAGxEh2S,KAAKsm0B,oBAAoBxy0B,KAAK7R,GAC9BA,EAAMgm1B,QAAU5tM,EAAM/nnB,EAAIqsX,OAE1Bh0R,GAAG1oH,EAAO,QAAS+d,KAAKko0B,cAAelo0B,MAEvC,IAAIzM,EAAO9K,SAASskB,cAAc,QAClCxZ,EAAKq3L,UAAY,IAAMt4K,EAAI/e,KAI3B,IAAI6gY,EAAS3rY,SAASskB,cAAc,QAUpC,OARAlL,EAAMsuF,YAAYikS,GAClBA,EAAOjkS,YAAYluG,GACnBmyY,EAAOjkS,YAAY58F,IAEH+e,EAAIkmN,QAAUx4N,KAAKwn0B,cAAgBxn0B,KAAKsn0B,iBAC9Cn3uB,YAAYtuF,GAEtB7B,KAAK2m0B,uBACE9k0B,CACR,EAEAqm0B,cAAe,WAEd,IAAIlo0B,KAAKym0B,cAAT,CAIA,IACIxk1B,EAAO08Y,EADP7rW,EAAS9yB,KAAKsm0B,oBAEd6B,EAAc,GACdC,EAAgB,GAEpBpo0B,KAAKwm0B,gBAAiB,EAEtB,IAAK,IAAInh1B,EAAIytC,EAAO1+B,OAAS,EAAG/O,GAAK,EAAGA,IACvCpD,EAAQ6wC,EAAOztC,GACfs5Y,EAAQ3+X,KAAK+m0B,UAAU9k1B,EAAMgm1B,SAAStpc,MAElC18Y,EAAM+zT,QACTmyhB,EAAYr00B,KAAK6qY,GACN18Y,EAAM+zT,SACjBoyhB,EAAct00B,KAAK6qY,GAKrB,IAAKt5Y,EAAI,EAAGA,EAAI+i1B,EAAch00B,OAAQ/O,IACjC2a,KAAK4xY,KAAKo2b,SAASI,EAAc/i1B,KACpC2a,KAAK4xY,KAAKk2W,YAAYsgF,EAAc/i1B,IAGtC,IAAKA,EAAI,EAAGA,EAAI8i1B,EAAY/z0B,OAAQ/O,IAC9B2a,KAAK4xY,KAAKo2b,SAASG,EAAY9i1B,KACnC2a,KAAK4xY,KAAKixB,SAASsla,EAAY9i1B,IAIjC2a,KAAKwm0B,gBAAiB,EAEtBxm0B,KAAKql0B,eAlCL,CAmCD,EAEAsB,qBAAsB,WAMrB,IALA,IACI1k1B,EACA08Y,EAFA7rW,EAAS9yB,KAAKsm0B,oBAGd/xpB,EAAOv0K,KAAK4xY,KAAK5jE,UAEZ3oV,EAAIytC,EAAO1+B,OAAS,EAAG/O,GAAK,EAAGA,IACvCpD,EAAQ6wC,EAAOztC,GACfs5Y,EAAQ3+X,KAAK+m0B,UAAU9k1B,EAAMgm1B,SAAStpc,MACtC18Y,EAAM+rD,cAAsCl3C,IAA1B6nY,EAAM/uY,QAAQi4U,SAAyBtzJ,EAAOoqN,EAAM/uY,QAAQi4U,cAClC/wU,IAA1B6nY,EAAM/uY,QAAQ4ooB,SAAyBjkd,EAAOoqN,EAAM/uY,QAAQ4ooB,OAGhF,EAEAquM,sBAAuB,WAItB,OAHI7m0B,KAAK4xY,OAAS5xY,KAAKpQ,QAAQ+10B,WAC9B3l0B,KAAK8nf,SAEC9nf,IACR,EAEAmn0B,cAAe,WACd,IAAIp7mB,EAAU/rN,KAAKgn0B,SACnBhn0B,KAAKym0B,eAAgB,EACrB97tB,GAAGohH,EAAS,QAASp/F,IACrB3sH,KAAK8nf,SACL,IAAIxxS,EAAOt2M,KACXyH,WAAW,WACVwlH,GAAI8+F,EAAS,QAASp/F,IACtB2pF,EAAKmwnB,eAAgB,CACtB,EACD,IAmBG4B,GAAO3iZ,GAAQ1iV,OAAO,CAGzBpzG,QAAS,CACR9G,SAAU,UAIVw/0B,WAAY,oCAIZC,YAAa,UAIbC,YAAa,2CAIbC,aAAc,YAGf/7f,MAAO,SAAU35U,GAChB,IAAI+ue,EAAW,uBACXh8a,EAAYywwB,GAAS,MAAOz0V,EAAW,gBACvClye,EAAUoQ,KAAKpQ,QAUnB,OARAoQ,KAAK0o0B,cAAiB1o0B,KAAK2o0B,cAAc/40B,EAAQ040B,WAAY140B,EAAQ240B,YAC7DzmW,EAAW,MAAQh8a,EAAW9lD,KAAK4o0B,SAC3C5o0B,KAAK6o0B,eAAiB7o0B,KAAK2o0B,cAAc/40B,EAAQ440B,YAAa540B,EAAQ640B,aAC9D3mW,EAAW,OAAQh8a,EAAW9lD,KAAK8o0B,UAE3C9o0B,KAAK+o0B,kBACLh20B,EAAI43G,GAAG,2BAA4B3qG,KAAK+o0B,gBAAiB/o0B,MAElD8lD,CACR,EAEAqnR,SAAU,SAAUp6U,GACnBA,EAAIk6H,IAAI,2BAA4BjtH,KAAK+o0B,gBAAiB/o0B,KAC3D,EAEA8tG,QAAS,WAGR,OAFA9tG,KAAKgp0B,WAAY,EACjBhp0B,KAAK+o0B,kBACE/o0B,IACR,EAEA+tG,OAAQ,WAGP,OAFA/tG,KAAKgp0B,WAAY,EACjBhp0B,KAAK+o0B,kBACE/o0B,IACR,EAEA4o0B,QAAS,SAAU5j1B,IACbgb,KAAKgp0B,WAAahp0B,KAAK4xY,KAAK+ob,MAAQ36zB,KAAK4xY,KAAKgvb,cAClD5g0B,KAAK4xY,KAAK4pb,OAAOx7zB,KAAK4xY,KAAKhiZ,QAAQsq0B,WAAal10B,EAAEgtS,SAAW,EAAI,GAEnE,EAEA82iB,SAAU,SAAU9j1B,IACdgb,KAAKgp0B,WAAahp0B,KAAK4xY,KAAK+ob,MAAQ36zB,KAAK4xY,KAAK8ub,cAClD1g0B,KAAK4xY,KAAK6pb,QAAQz7zB,KAAK4xY,KAAKhiZ,QAAQsq0B,WAAal10B,EAAEgtS,SAAW,EAAI,GAEpE,EAEA22iB,cAAe,SAAU3/0B,EAAMstD,EAAOwzD,EAAWhkD,EAAWhxD,GAC3D,IAAIs0H,EAAOmtsB,GAAS,IAAKzstB,EAAWhkD,GAgBpC,OAfAsjE,EAAKwhE,UAAY5hM,EACjBogI,EAAKn7B,KAAO,IACZm7B,EAAK9yE,MAAQA,EAKb8yE,EAAKnrH,aAAa,OAAQ,UAC1BmrH,EAAKnrH,aAAa,aAAcq4C,GAEhCuuhB,GAAwBz7c,GACxBze,GAAGye,EAAM,QAAS1jH,IAClBilG,GAAGye,EAAM,QAASt0H,EAAIkL,MACtB2qG,GAAGye,EAAM,QAASppH,KAAKql0B,cAAerl0B,MAE/BopH,CACR,EAEA2/sB,gBAAiB,WAChB,IAAIh20B,EAAMiN,KAAK4xY,KACX9nS,EAAY,mBAEhBJ,GAAY1pG,KAAK0o0B,cAAe5+tB,GAChCJ,GAAY1pG,KAAK6o0B,eAAgB/+tB,GACjC9pG,KAAK0o0B,cAAczq0B,aAAa,gBAAiB,SACjD+B,KAAK6o0B,eAAe5q0B,aAAa,gBAAiB,UAE9C+B,KAAKgp0B,WAAaj20B,EAAI4n0B,QAAU5n0B,EAAI2t0B,gBACvCz2tB,GAASjqG,KAAK6o0B,eAAgB/+tB,GAC9B9pG,KAAK6o0B,eAAe5q0B,aAAa,gBAAiB,UAE/C+B,KAAKgp0B,WAAaj20B,EAAI4n0B,QAAU5n0B,EAAI6t0B,gBACvC32tB,GAASjqG,KAAK0o0B,cAAe5+tB,GAC7B9pG,KAAK0o0B,cAAczq0B,aAAa,gBAAiB,QAEnD,IAODjL,GAAIu5vB,aAAa,CAChB08E,aAAa,IAGdj20B,GAAIy5vB,YAAY,WACXzsvB,KAAKpQ,QAAQq50B,cAKhBjp0B,KAAKip0B,YAAc,IAAIZ,GACvBro0B,KAAKol0B,WAAWpl0B,KAAKip0B,aAEvB,GAKA,IAkBIj+wB,GAAQ06X,GAAQ1iV,OAAO,CAG1BpzG,QAAS,CACR9G,SAAU,aAIV8nC,SAAU,IAIVs4yB,QAAQ,EAIRC,UAAU,GAMXz8f,MAAO,SAAU35U,GAChB,IAAI+2G,EAAY,wBACZhkD,EAAYywwB,GAAS,MAAOzstB,GAC5Bl6G,EAAUoQ,KAAKpQ,QAOnB,OALAoQ,KAAKop0B,WAAWx50B,EAASk6G,EAAY,QAAShkD,GAE9C/yD,EAAI43G,GAAG/6G,EAAQy50B,eAAiB,UAAY,OAAQrp0B,KAAK4hC,QAAS5hC,MAClEjN,EAAImnoB,UAAUl6nB,KAAK4hC,QAAS5hC,MAErB8lD,CACR,EAEAqnR,SAAU,SAAUp6U,GACnBA,EAAIk6H,IAAIjtH,KAAKpQ,QAAQy50B,eAAiB,UAAY,OAAQrp0B,KAAK4hC,QAAS5hC,KACzE,EAEAop0B,WAAY,SAAUx50B,EAASk6G,EAAWhkD,GACrCl2D,EAAQs50B,SACXlp0B,KAAKsp0B,QAAU/S,GAAS,MAAOzstB,EAAWhkD,IAEvCl2D,EAAQu50B,WACXnp0B,KAAKup0B,QAAUhT,GAAS,MAAOzstB,EAAWhkD,GAE5C,EAEAlkB,QAAS,WACR,IAAI7uC,EAAMiN,KAAK4xY,KACXjuZ,EAAIoP,EAAIima,UAAUr1a,EAAI,EAEtB6l1B,EAAYz20B,EAAIwF,SACnBxF,EAAI+o0B,uBAAuB,CAAC,EAAGn40B,IAC/BoP,EAAI+o0B,uBAAuB,CAAC97zB,KAAKpQ,QAAQghC,SAAUjtC,KAEpDqc,KAAKw/D,cAAcgqwB,EACpB,EAEAhqwB,cAAe,SAAUgqwB,GACpBxp0B,KAAKpQ,QAAQs50B,QAAUM,GAC1Bxp0B,KAAKyp0B,cAAcD,GAEhBxp0B,KAAKpQ,QAAQu50B,UAAYK,GAC5Bxp0B,KAAK0p0B,gBAAgBF,EAEvB,EAEAC,cAAe,SAAUD,GACxB,IAAIrsoB,EAASn9L,KAAK2p0B,aAAaH,GAC3B3n0B,EAAQs7L,EAAS,IAAOA,EAAS,KAAQA,EAAS,IAAQ,MAE9Dn9L,KAAK4p0B,aAAa5p0B,KAAKsp0B,QAASzn0B,EAAOs7L,EAASqsoB,EACjD,EAEAE,gBAAiB,SAAUF,GAC1B,IACIK,EAAUxsoB,EAAON,EADjB+soB,EAAsB,UAAZN,EAGVM,EAAU,MACbD,EAAWC,EAAU,KACrBzsoB,EAAQr9L,KAAK2p0B,aAAaE,GAC1B7p0B,KAAK4p0B,aAAa5p0B,KAAKup0B,QAASlsoB,EAAQ,MAAOA,EAAQwsoB,KAGvD9soB,EAAO/8L,KAAK2p0B,aAAaG,GACzB9p0B,KAAK4p0B,aAAa5p0B,KAAKup0B,QAASxsoB,EAAO,MAAOA,EAAO+soB,GAEvD,EAEAF,aAAc,SAAUh/yB,EAAOkF,EAAM/K,GACpC6F,EAAMlB,MAAMhjC,MAAQlB,KAAK+F,MAAMyU,KAAKpQ,QAAQghC,SAAW7L,GAAS,KAChE6F,EAAMggK,UAAY96J,CACnB,EAEA65yB,aAAc,SAAU1ryB,GACvB,IAAI8ryB,EAAQvk1B,KAAKC,IAAI,IAAKD,KAAKQ,MAAMi4C,GAAO,IAAI7pC,OAAS,GACrD7Q,EAAI06C,EAAM8ryB,EAOd,OAAOA,GALHxm1B,GAAK,GAAK,GACVA,GAAK,EAAI,EACTA,GAAK,EAAI,EACTA,GAAK,EAAI,EAAI,EAGlB,IAqBGym1B,GAActkZ,GAAQ1iV,OAAO,CAGhCpzG,QAAS,CACR9G,SAAU,cAIVosC,OAAQ,sFAAwF43O,GAAQ2njB,UAAYwV,oQAAsB,IAAM,eAGjJ1gyB,WAAY,SAAU35C,GACrB0F,EAAW0K,KAAMpQ,GAEjBoQ,KAAKkq0B,cAAgB,CAAC,CACvB,EAEAx9f,MAAO,SAAU35U,GAMhB,IAAK,IAAI1N,KALT0N,EAAIo30B,mBAAqBnq0B,KACzBA,KAAKqjkB,WAAakzP,GAAS,MAAO,+BAClC1xP,GAAwB7kkB,KAAKqjkB,YAGftwkB,EAAI8uD,QACb9uD,EAAI8uD,QAAQx8D,GAAG+k1B,gBAClBpq0B,KAAKqq0B,eAAet30B,EAAI8uD,QAAQx8D,GAAG+k1B,kBAQrC,OAJApq0B,KAAK4hC,UAEL7uC,EAAI43G,GAAG,WAAY3qG,KAAKsq0B,gBAAiBtq0B,MAElCA,KAAKqjkB,UACb,EAEAl2P,SAAU,SAAUp6U,GACnBA,EAAIk6H,IAAI,WAAYjtH,KAAKsq0B,gBAAiBtq0B,KAC3C,EAEAsq0B,gBAAiB,SAAUv0hB,GACtBA,EAAG4oF,MAAMyrc,iBACZpq0B,KAAKqq0B,eAAet0hB,EAAG4oF,MAAMyrc,kBAC7Br0hB,EAAG4oF,MAAMl0R,KAAK,SAAU,WACvBzqG,KAAKuq0B,kBAAkBx0hB,EAAG4oF,MAAMyrc,iBACjC,EAAGpq0B,MAEL,EAIAwq0B,UAAW,SAAUt1yB,GAGpB,OAFAl1B,KAAKpQ,QAAQslC,OAASA,EACtBl1B,KAAK4hC,UACE5hC,IACR,EAIAqq0B,eAAgB,SAAUv6yB,GACzB,OAAKA,GAEA9vB,KAAKkq0B,cAAcp6yB,KACvB9vB,KAAKkq0B,cAAcp6yB,GAAQ,GAE5B9vB,KAAKkq0B,cAAcp6yB,KAEnB9vB,KAAK4hC,UAEE5hC,MATaA,IAUrB,EAIAuq0B,kBAAmB,SAAUz6yB,GAC5B,OAAKA,GAED9vB,KAAKkq0B,cAAcp6yB,KACtB9vB,KAAKkq0B,cAAcp6yB,KACnB9vB,KAAK4hC,WAGC5hC,MAPaA,IAQrB,EAEA4hC,QAAS,WACR,GAAK5hC,KAAK4xY,KAAV,CAEA,IAAI64b,EAAU,GAEd,IAAK,IAAIpl1B,KAAK2a,KAAKkq0B,cACdlq0B,KAAKkq0B,cAAc7k1B,IACtBol1B,EAAQ320B,KAAKzO,GAIf,IAAIql1B,EAAmB,GAEnB1q0B,KAAKpQ,QAAQslC,QAChBw1yB,EAAiB520B,KAAKkM,KAAKpQ,QAAQslC,QAEhCu1yB,EAAQr20B,QACXs20B,EAAiB520B,KAAK220B,EAAQvs0B,KAAK,OAGpC8B,KAAKqjkB,WAAWz4Y,UAAY8/oB,EAAiBxs0B,KAAK,sCAnBxB,CAoB3B,IAODlL,GAAIu5vB,aAAa,CAChB49E,oBAAoB,IAGrBn30B,GAAIy5vB,YAAY,WACXzsvB,KAAKpQ,QAAQu60B,qBAChB,IAAIH,IAAcxiF,MAAMxnvB,KAE1B,GASA0lb,GAAQggZ,OAASA,GACjBhgZ,GAAQ2iZ,KAAOA,GACf3iZ,GAAQ16X,MAAQA,GAChB06X,GAAQskZ,YAAcA,GAEtB55hB,GAAQzvO,OApaK,SAAUylwB,EAAYC,EAAUz20B,GAC5C,OAAO,IAAI810B,GAAOU,EAAYC,EAAUz20B,EACzC,EAmaAwgT,GAAQ77H,KAxRG,SAAU3kL,GACpB,OAAO,IAAIy40B,GAAKz40B,EACjB,EAuRAwgT,GAAQxlR,MAxJI,SAAUh7B,GACrB,OAAO,IAAIo7D,GAAMp7D,EAClB,EAuJAwgT,GAAQu6hB,YAZU,SAAU/60B,GAC3B,OAAO,IAAIo60B,GAAYp60B,EACxB,EAqBA,IAAIg70B,GAAUpf,EAAMxotB,OAAO,CAC1Bz5D,WAAY,SAAUx2C,GACrBiN,KAAK4xY,KAAO7+Y,CACb,EAIAg7G,OAAQ,WACP,OAAI/tG,KAAK4/Y,WAET5/Y,KAAK4/Y,UAAW,EAChB5/Y,KAAK6q0B,YAHuB7q0B,IAK7B,EAIA8tG,QAAS,WACR,OAAK9tG,KAAK4/Y,UAEV5/Y,KAAK4/Y,UAAW,EAChB5/Y,KAAK8q0B,cACE9q0B,MAJsBA,IAK9B,EAIAhK,QAAS,WACR,QAASgK,KAAK4/Y,QACf,IAaDgrb,GAAQpjF,MAAQ,SAAUz0vB,EAAKQ,GAE9B,OADAR,EAAI8wQ,WAAWtwQ,EAAMyM,MACdA,IACR,EAEA,IAAI4rzB,GAAQ,CAACxxX,OAAQA,GAkBjB2wY,GAAQj+jB,GAAQ0xN,MAAQ,uBAAyB,YAEjDwsW,GAAYxguB,EAAQxH,OAAO,CAE9BpzG,QAAS,CAMRq70B,eAAgB,GAKjB1hyB,WAAY,SAAUjjD,EAAS4k1B,EAAiBjU,EAAgBrn0B,GAC/D0F,EAAW0K,KAAMpQ,GAEjBoQ,KAAKmuE,SAAW7nF,EAChB0Z,KAAKmr0B,iBAAmBD,GAAmB5k1B,EAC3C0Z,KAAKor0B,gBAAkBnU,CACxB,EAIAlptB,OAAQ,WACH/tG,KAAK4/Y,WAETj1S,GAAG3qG,KAAKmr0B,iBAAkBJ,GAAO/q0B,KAAKqr0B,QAASrr0B,MAE/CA,KAAK4/Y,UAAW,EACjB,EAIA9xS,QAAS,WACH9tG,KAAK4/Y,WAINorb,GAAUx9I,YAAcxtrB,MAC3BA,KAAKsr0B,YAAW,GAGjBr+sB,GAAIjtH,KAAKmr0B,iBAAkBJ,GAAO/q0B,KAAKqr0B,QAASrr0B,MAEhDA,KAAK4/Y,UAAW,EAChB5/Y,KAAKug0B,QAAS,EACf,EAEA8K,QAAS,SAAUrm1B,GAGlB,GAAKgb,KAAK4/Y,WAEV5/Y,KAAKug0B,QAAS,GAEVr2tB,GAASlqG,KAAKmuE,SAAU,sBAE5B,GAAInpF,EAAEo3C,SAAgC,IAArBp3C,EAAEo3C,QAAQhoC,OAEtB420B,GAAUx9I,YAAcxtrB,MAC3BA,KAAKsr0B,kBAKP,KAAIN,GAAUx9I,WAAaxosB,EAAEgtS,UAA0B,IAAZhtS,EAAEitS,OAA8B,IAAbjtS,EAAEktS,SAAkBltS,EAAEo3C,UACpF4uyB,GAAUx9I,UAAYxtrB,KAElBA,KAAKor0B,iBACRnU,GAAej3zB,KAAKmuE,UAGrB4ovB,KACAlB,KAEI71zB,KAAKur0B,UAAT,CAIAvr0B,KAAKw1Z,KAAK,QAEV,IAAIhnW,EAAQxpE,EAAEo3C,QAAUp3C,EAAEo3C,QAAQ,GAAKp3C,EACnCwm1B,EAAcpU,GAAmBp3zB,KAAKmuE,UAE1CnuE,KAAKyr0B,YAAc,IAAI7knB,EAAMp4J,EAAM/xB,QAAS+xB,EAAM9xB,SAClD18B,KAAKo5zB,UAAYtia,GAAY92Z,KAAKmuE,UAGlCnuE,KAAK0r0B,aAAer0wB,GAASm0wB,GAE7B,IAAIG,EAAwB,cAAX3m1B,EAAEgrB,KACnB26F,GAAGliH,SAAUkj1B,EAAa,YAAc,YAAa3r0B,KAAK4r0B,QAAS5r0B,MACnE2qG,GAAGliH,SAAUkj1B,EAAa,UAAY,uBAAwB3r0B,KAAK6r0B,MAAO7r0B,KAjB9C,CAkB7B,EAEA4r0B,QAAS,SAAU5m1B,GAGlB,GAAKgb,KAAK4/Y,SAEV,GAAI56Z,EAAEo3C,SAAWp3C,EAAEo3C,QAAQhoC,OAAS,EACnC4L,KAAKug0B,QAAS,MADf,CAKA,IAAI/xwB,EAASxpE,EAAEo3C,SAAgC,IAArBp3C,EAAEo3C,QAAQhoC,OAAepP,EAAEo3C,QAAQ,GAAKp3C,EAC9DJ,EAAS,IAAIgiO,EAAMp4J,EAAM/xB,QAAS+xB,EAAM9xB,SAAS+wxB,UAAUztzB,KAAKyr0B,cAE/D7m1B,EAAO2B,GAAM3B,EAAOjB,KACrB6B,KAAKM,IAAIlB,EAAO2B,GAAKf,KAAKM,IAAIlB,EAAOjB,GAAKqc,KAAKpQ,QAAQq70B,iBAK3Drm1B,EAAO2B,GAAKyZ,KAAK0r0B,aAAanl1B,EAC9B3B,EAAOjB,GAAKqc,KAAK0r0B,aAAa/n1B,EAE9BgpI,GAAe3nI,GAEVgb,KAAKug0B,SAGTvg0B,KAAKw1Z,KAAK,aAEVx1Z,KAAKug0B,QAAS,EAEdt2tB,GAASxhH,SAASiF,KAAM,oBAExBsS,KAAK8r0B,YAAc9m1B,EAAE+I,QAAU/I,EAAEk3b,WAG7B/0b,OAAO4k1B,oBAAsB/r0B,KAAK8r0B,uBAAuB3k1B,OAAO4k1B,qBACnE/r0B,KAAK8r0B,YAAc9r0B,KAAK8r0B,YAAY3vZ,yBAErClyU,GAASjqG,KAAK8r0B,YAAa,wBAG5B9r0B,KAAKgs0B,QAAUhs0B,KAAKo5zB,UAAU9l0B,IAAI1O,GAClCob,KAAKur0B,SAAU,EAEfvr0B,KAAKm9D,WAAan4E,EAClBgb,KAAKis0B,mBAtCL,CAuCD,EAEAA,gBAAiB,WAChB,IAAIjn1B,EAAI,CAAC82hB,cAAe97gB,KAAKm9D,YAK7Bn9D,KAAKw1Z,KAAK,UAAWxwa,GACrB2xa,GAAY32Z,KAAKmuE,SAAUnuE,KAAKgs0B,SAIhChs0B,KAAKw1Z,KAAK,OAAQxwa,EACnB,EAEA6m1B,MAAO,WAGD7r0B,KAAK4/Y,UACV5/Y,KAAKsr0B,YACN,EAEAA,WAAY,SAAUY,GACrBxiuB,GAAYjhH,SAASiF,KAAM,oBAEvBsS,KAAK8r0B,cACRpiuB,GAAY1pG,KAAK8r0B,YAAa,uBAC9B9r0B,KAAK8r0B,YAAc,MAGpB7+sB,GAAIxkI,SAAU,sBAAuBuX,KAAK4r0B,QAAS5r0B,MACnDitH,GAAIxkI,SAAU,+BAAgCuX,KAAK6r0B,MAAO7r0B,MAE1Dg3zB,KACAlB,KAEA,IAAIqW,EAAcns0B,KAAKug0B,QAAUvg0B,KAAKur0B,QAEtCvr0B,KAAKur0B,SAAU,EACfP,GAAUx9I,WAAY,EAElB2+I,GAGHns0B,KAAKw1Z,KAAK,UAAW,CACpB02a,UAAWA,EACX3z0B,SAAUyH,KAAKgs0B,QAAQ9d,WAAWluzB,KAAKo5zB,YAG1C,IAeD,SAASgT,GAAY7zyB,EAAQwH,EAAQx0C,GACpC,IAAI8g1B,EAEAhn1B,EAAG2gC,EAAGvU,EACN7X,EAAGC,EACHpK,EAAK8iD,EAAMpyC,EAHXyoM,EAAQ,CAAC,EAAG,EAAG,EAAG,GAKtB,IAAKvjN,EAAI,EAAGoK,EAAM8oC,EAAOnkC,OAAQ/O,EAAIoK,EAAKpK,IACzCkzC,EAAOlzC,GAAGin1B,MAAQC,GAAYh0yB,EAAOlzC,GAAI06C,GAI1C,IAAKtuB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAIvB,IAHA8gC,EAAOq2J,EAAMn3L,GACb46zB,EAAgB,GAEXhn1B,EAAI,EAAwB2gC,GAArBv2B,EAAM8oC,EAAOnkC,QAAkB,EAAG/O,EAAIoK,EAAKu2B,EAAI3gC,IAC1DuU,EAAI2+B,EAAOlzC,GACXwU,EAAI0+B,EAAOvS,GAGLpsB,EAAE0y0B,MAAQ/5xB,EAUH14C,EAAEyy0B,MAAQ/5xB,KACtBpyC,EAAIqs0B,GAAqB3y0B,EAAGD,EAAG24C,EAAMxS,EAAQx0C,IAC3C+g1B,MAAQC,GAAYps0B,EAAG4/B,GACzBssyB,EAAcv40B,KAAKqM,KAXftG,EAAEyy0B,MAAQ/5xB,KACbpyC,EAAIqs0B,GAAqB3y0B,EAAGD,EAAG24C,EAAMxS,EAAQx0C,IAC3C+g1B,MAAQC,GAAYps0B,EAAG4/B,GACzBssyB,EAAcv40B,KAAKqM,IAEpBks0B,EAAcv40B,KAAK8F,IASrB2+B,EAAS8zyB,CACV,CAEA,OAAO9zyB,CACR,CAKA,SAASk0yB,GAAcnf,EAASoM,GAC/B,IAAIr00B,EAAG2gC,EAAGT,EAAIC,EAAI9jB,EAAGotB,EAAMvoC,EAAG5C,EAAGwZ,EAEjC,IAAKmwzB,GAA8B,IAAnBA,EAAQl5zB,OACvB,MAAM,IAAImT,MAAM,sBAGZoiP,GAAO2jkB,KACX16xB,QAAQ/lB,KAAK,0DACbygzB,EAAUA,EAAQ,IAGnB,IAAIof,EAAiBlf,EAAS,CAAC,EAAG,IAE9BztxB,EAASwtxB,EAAeD,GACXvtxB,EAAOwvxB,eAAerB,WAAWnuxB,EAAOsvxB,gBAAkBtvxB,EAAOuvxB,eAAepB,WAAWnuxB,EAAOwvxB,gBAElG,OAEhBmd,EAAiBh2b,GAAS42a,IAG3B,IAAI79zB,EAAM69zB,EAAQl5zB,OACdmkC,EAAS,GACb,IAAKlzC,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CACzB,IAAI4lwB,EAASuiE,EAASF,EAAQjo0B,IAC9BkzC,EAAOzkC,KAAK4l0B,EAAIjkV,QAAQ+3U,EAAS,CAACviE,EAAOtpnB,IAAM+qsB,EAAe/qsB,IAAKspnB,EAAO1hiB,IAAMmjnB,EAAenjnB,OAChG,CAKA,IAHAz6L,EAAOvoC,EAAI5C,EAAI,EAGV0B,EAAI,EAAG2gC,EAAIv2B,EAAM,EAAGpK,EAAIoK,EAAKu2B,EAAI3gC,IACrCkgC,EAAKgT,EAAOlzC,GACZmgC,EAAK+S,EAAOvS,GAEZtkB,EAAI6jB,EAAG5hC,EAAI6hC,EAAGj/B,EAAIi/B,EAAG7hC,EAAI4hC,EAAGh/B,EAC5BA,IAAMg/B,EAAGh/B,EAAIi/B,EAAGj/B,GAAKmb,EACrB/d,IAAM4hC,EAAG5hC,EAAI6hC,EAAG7hC,GAAK+d,EACrBotB,GAAY,EAAJptB,EAKRvE,EAFY,IAAT2xB,EAEMyJ,EAAO,GAEP,CAAChyC,EAAIuoC,EAAMnrC,EAAImrC,GAGzB,IAAI69yB,EAAejT,EAAI1I,UAAUhE,EAAQ7vzB,IACzC,OAAOqwzB,EAAS,CAACmf,EAAahrsB,IAAM+qsB,EAAe/qsB,IAAKgrsB,EAAapjnB,IAAMmjnB,EAAenjnB,KAC3F,CAKA,SAASmtL,GAASt4M,GAIjB,IAHA,IAAIwuoB,EAAS,EACTC,EAAS,EACTp90B,EAAM,EACDpK,EAAI,EAAGA,EAAI+4M,EAAOhqM,OAAQ/O,IAAK,CACvC,IAAI4lwB,EAASuiE,EAASpvnB,EAAO/4M,IAC7Bun1B,GAAU3hF,EAAOtpnB,IACjBkrsB,GAAU5hF,EAAO1hiB,IACjB95N,GACD,CACA,OAAO+9zB,EAAS,CAACof,EAASn90B,EAAKo90B,EAASp90B,GACzC,CAEA,IAiHIq90B,GAjHAC,GAAW,CACb7s0B,UAAW,KACXks0B,YAAaA,GACbK,cAAeA,GACf/1b,SAAUA,IAoBZ,SAASugZ,GAAS1+vB,EAAQ8koB,GACzB,IAAKA,IAAc9koB,EAAOnkC,OACzB,OAAOmkC,EAAOz9B,QAGf,IAAIky0B,EAAc3vK,EAAYA,EAQ9B,OAgBD,SAAqB9koB,EAAQy0yB,GAE5B,IAAIv90B,EAAM8oC,EAAOnkC,OAEb4+c,EAAU,WADgB3tX,iBAAevuF,EAAY,GAAKuuF,WAAa/wF,OACxC7E,GAE/Bujd,EAAQ,GAAKA,EAAQvjd,EAAM,GAAK,EAEpCw90B,GAAgB10yB,EAAQy6a,EAASg6X,EAAa,EAAGv90B,EAAM,GAEvD,IAAIpK,EACA6n1B,EAAY,GAEhB,IAAK7n1B,EAAI,EAAGA,EAAIoK,EAAKpK,IAChB2td,EAAQ3td,IACX6n1B,EAAUp50B,KAAKykC,EAAOlzC,IAIxB,OAAO6n1B,CACR,CAtCcC,CAHT50yB,EAkEL,SAAuBA,EAAQy0yB,GAG9B,IAFA,IAAII,EAAgB,CAAC70yB,EAAO,IAEnBlzC,EAAI,EAAGw1C,EAAO,EAAGprC,EAAM8oC,EAAOnkC,OAAQ/O,EAAIoK,EAAKpK,IACnDgo1B,GAAQ90yB,EAAOlzC,GAAIkzC,EAAOsC,IAASmyyB,IACtCI,EAAct50B,KAAKykC,EAAOlzC,IAC1Bw1C,EAAOx1C,GAMT,OAHIw1C,EAAOprC,EAAM,GAChB290B,EAAct50B,KAAKykC,EAAO9oC,EAAM,IAE1B290B,CACR,CA/EcE,CAAc/0yB,EAAQy0yB,GAGFA,EAGlC,CAIA,SAASO,GAAuBpt0B,EAAGolB,EAAIC,GACtC,OAAOhgC,KAAK0vB,KAAKs4zB,GAAyBrt0B,EAAGolB,EAAIC,GAAI,GACtD,CA+BA,SAASynzB,GAAgB10yB,EAAQy6a,EAASg6X,EAAax+wB,EAAOta,GAE7D,IACA19C,EAAOnR,EAAGoo1B,EADNC,EAAY,EAGhB,IAAKro1B,EAAImpE,EAAQ,EAAGnpE,GAAK6uD,EAAO,EAAG7uD,KAClCoo1B,EAASD,GAAyBj1yB,EAAOlzC,GAAIkzC,EAAOi2B,GAAQj2B,EAAO2b,IAAO,IAE7Dw5xB,IACZl30B,EAAQnR,EACRqo1B,EAAYD,GAIVC,EAAYV,IACfh6X,EAAQx8c,GAAS,EAEjBy20B,GAAgB10yB,EAAQy6a,EAASg6X,EAAax+wB,EAAOh4D,GACrDy20B,GAAgB10yB,EAAQy6a,EAASg6X,EAAax20B,EAAO09C,GAEvD,CAyBA,SAASy5xB,GAAY/z0B,EAAGC,EAAGkmC,EAAQ6tyB,EAAari1B,GAC/C,IAGIsi1B,EAAS1t0B,EAAG2t0B,EAHZC,EAAQH,EAAcd,GAAYP,GAAY3y0B,EAAGmmC,GACjDiuyB,EAAQzB,GAAY1y0B,EAAGkmC,GAO3B,IAFI+syB,GAAYkB,IAEH,CAEZ,KAAMD,EAAQC,GACb,MAAO,CAACp00B,EAAGC,GAIZ,GAAIk00B,EAAQC,EACX,OAAO,EAMRF,EAAUvB,GADVps0B,EAAIqs0B,GAAqB5y0B,EAAGC,EAD5Bg00B,EAAUE,GAASC,EACqBjuyB,EAAQx0C,GACvBw0C,GAErB8tyB,IAAYE,GACfn00B,EAAIuG,EACJ4t0B,EAAQD,IAERj00B,EAAIsG,EACJ6t0B,EAAQF,EAEV,CACD,CAEA,SAAStB,GAAqB5y0B,EAAGC,EAAG20F,EAAMzuD,EAAQx0C,GACjD,IAIIhF,EAAG5C,EAJHi9M,EAAK/mM,EAAEtT,EAAIqT,EAAErT,EACbs6M,EAAKhnM,EAAElW,EAAIiW,EAAEjW,EACb+F,EAAMq2C,EAAOr2C,IACbC,EAAMo2C,EAAOp2C,IAoBjB,OAjBW,EAAP6kG,GACHjoG,EAAIqT,EAAErT,EAAIq6M,GAAMj3M,EAAIhG,EAAIiW,EAAEjW,GAAKk9M,EAC/Bl9M,EAAIgG,EAAIhG,GAES,EAAP6qG,GACVjoG,EAAIqT,EAAErT,EAAIq6M,GAAMl3M,EAAI/F,EAAIiW,EAAEjW,GAAKk9M,EAC/Bl9M,EAAI+F,EAAI/F,GAES,EAAP6qG,GACVjoG,EAAIoD,EAAIpD,EACR5C,EAAIiW,EAAEjW,EAAIk9M,GAAMl3M,EAAIpD,EAAIqT,EAAErT,GAAKq6M,GAEd,EAAPpyG,IACVjoG,EAAImD,EAAInD,EACR5C,EAAIiW,EAAEjW,EAAIk9M,GAAMn3M,EAAInD,EAAIqT,EAAErT,GAAKq6M,GAGzB,IAAIgmB,EAAMrgO,EAAG5C,EAAG4H,EACxB,CAEA,SAASgh1B,GAAYps0B,EAAG4/B,GACvB,IAAIyuD,EAAO,EAcX,OAZIruF,EAAE5Z,EAAIw5C,EAAOr2C,IAAInD,EACpBioG,GAAQ,EACEruF,EAAE5Z,EAAIw5C,EAAOp2C,IAAIpD,IAC3BioG,GAAQ,GAGLruF,EAAExc,EAAIo8C,EAAOr2C,IAAI/F,EACpB6qG,GAAQ,EACEruF,EAAExc,EAAIo8C,EAAOp2C,IAAIhG,IAC3B6qG,GAAQ,GAGFA,CACR,CAGA,SAAS6+uB,GAAQ9nzB,EAAIC,GACpB,IAAIo7K,EAAKp7K,EAAGj/B,EAAIg/B,EAAGh/B,EACfs6M,EAAKr7K,EAAG7hC,EAAI4hC,EAAG5hC,EACnB,OAAOi9M,EAAKA,EAAKC,EAAKA,CACvB,CAGA,SAAS2soB,GAAyBrt0B,EAAGolB,EAAIC,EAAIiozB,GAC5C,IAKI7s0B,EALAra,EAAIg/B,EAAGh/B,EACP5C,EAAI4hC,EAAG5hC,EACPi9M,EAAKp7K,EAAGj/B,EAAIA,EACZs6M,EAAKr7K,EAAG7hC,EAAIA,EACZqzP,EAAMp2C,EAAKA,EAAKC,EAAKA,EAkBzB,OAfIm2C,EAAM,KACTp2O,IAAMT,EAAE5Z,EAAIA,GAAKq6M,GAAMzgM,EAAExc,EAAIA,GAAKk9M,GAAMm2C,GAEhC,GACPzwP,EAAIi/B,EAAGj/B,EACP5C,EAAI6hC,EAAG7hC,GACGid,EAAI,IACdra,GAAKq6M,EAAKhgM,EACVjd,GAAKk9M,EAAKjgM,IAIZggM,EAAKzgM,EAAE5Z,EAAIA,EACXs6M,EAAK1gM,EAAExc,EAAIA,EAEJ8p1B,EAAS7soB,EAAKA,EAAKC,EAAKA,EAAK,IAAI+lB,EAAMrgO,EAAG5C,EAClD,CAKA,SAASgmQ,GAAO2jkB,GACf,OAAQv9yB,EAAQu9yB,EAAQ,KAAiC,iBAAlBA,EAAQ,GAAG,SAA4C,IAAlBA,EAAQ,GAAG,EACxF,CAEA,SAAS2gB,GAAM3gB,GAEd,OADA16xB,QAAQ/lB,KAAK,kEACN88O,GAAO2jkB,EACf,CAKA,SAAS4gB,GAAe5gB,EAASoM,GAChC,IAAIr00B,EAAG8o1B,EAAUC,EAASpmnB,EAAMziM,EAAIC,EAAIT,EAAO5nB,EAE/C,IAAKmwzB,GAA8B,IAAnBA,EAAQl5zB,OACvB,MAAM,IAAImT,MAAM,sBAGZoiP,GAAO2jkB,KACX16xB,QAAQ/lB,KAAK,0DACbygzB,EAAUA,EAAQ,IAGnB,IAAIof,EAAiBlf,EAAS,CAAC,EAAG,IAE9BztxB,EAASwtxB,EAAeD,GACXvtxB,EAAOwvxB,eAAerB,WAAWnuxB,EAAOsvxB,gBAAkBtvxB,EAAOuvxB,eAAepB,WAAWnuxB,EAAOwvxB,gBAElG,OAEhBmd,EAAiBh2b,GAAS42a,IAG3B,IAAI79zB,EAAM69zB,EAAQl5zB,OACdmkC,EAAS,GACb,IAAKlzC,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CACzB,IAAI4lwB,EAASuiE,EAASF,EAAQjo0B,IAC9BkzC,EAAOzkC,KAAK4l0B,EAAIjkV,QAAQ+3U,EAAS,CAACviE,EAAOtpnB,IAAM+qsB,EAAe/qsB,IAAKspnB,EAAO1hiB,IAAMmjnB,EAAenjnB,OAChG,CAEA,IAAKlkO,EAAI,EAAG8o1B,EAAW,EAAG9o1B,EAAIoK,EAAM,EAAGpK,IACtC8o1B,GAAY51yB,EAAOlzC,GAAG6o0B,WAAW31xB,EAAOlzC,EAAI,IAAM,EAInD,GAAiB,IAAb8o1B,EACHhx0B,EAASo7B,EAAO,QAEhB,IAAKlzC,EAAI,EAAG2iO,EAAO,EAAG3iO,EAAIoK,EAAM,EAAGpK,IAMlC,GALAkgC,EAAKgT,EAAOlzC,GACZmgC,EAAK+S,EAAOlzC,EAAI,IAEhB2iO,GADAomnB,EAAU7ozB,EAAG2oyB,WAAW1oyB,IAGb2ozB,EAAU,CACpBppzB,GAASijM,EAAOmmnB,GAAYC,EAC5Bjx0B,EAAS,CACRqoB,EAAGj/B,EAAIw+B,GAASS,EAAGj/B,EAAIg/B,EAAGh/B,GAC1Bi/B,EAAG7hC,EAAIohC,GAASS,EAAG7hC,EAAI4hC,EAAG5hC,IAE3B,KACD,CAIF,IAAIgp1B,EAAejT,EAAI1I,UAAUhE,EAAQ7vzB,IACzC,OAAOqwzB,EAAS,CAACmf,EAAahrsB,IAAM+qsB,EAAe/qsB,IAAKgrsB,EAAapjnB,IAAMmjnB,EAAenjnB,KAC3F,CAEA,IAAI8knB,GAAW,CACbnu0B,UAAW,KACX+2xB,SAAUA,GACVs2C,uBAAwBA,GACxBe,sBAvQF,SAA+Bnu0B,EAAGolB,EAAIC,GACrC,OAAOgozB,GAAyBrt0B,EAAGolB,EAAIC,EACxC,EAsQEmozB,YAAaA,GACbnB,qBAAsBA,GACtBD,YAAaA,GACbiB,yBAA0BA,GAC1B7jlB,OAAQA,GACRsklB,MAAOA,GACPC,eAAgBA,IAgBdK,GAAS,CACZ94V,QAAS,SAAUw1Q,GAClB,OAAO,IAAIrkiB,EAAMqkiB,EAAO1hiB,IAAK0hiB,EAAOtpnB,IACrC,EAEAqvrB,UAAW,SAAUniyB,GACpB,OAAO,IAAI46L,EAAO56L,EAAMlrC,EAAGkrC,EAAMtoC,EAClC,EAEAw5C,OAAQ,IAAIktxB,EAAO,EAAE,KAAM,IAAK,CAAC,IAAK,MAUnCuhB,GAAW,CACd5zzB,EAAG,QACH6zzB,QAAS,kBAET1uyB,OAAQ,IAAIktxB,EAAO,EAAE,gBAAiB,gBAAiB,CAAC,eAAgB,iBAExEx3U,QAAS,SAAUw1Q,GAClB,IAAI1nwB,EAAIiC,KAAKytB,GAAK,IACd8G,EAAI/Z,KAAK4a,EACTj3B,EAAIsnwB,EAAOtpnB,IAAMp+I,EACjByhC,EAAMhlB,KAAKyu0B,QAAU10zB,EACrB/0B,EAAIQ,KAAK0vB,KAAK,EAAI8P,EAAMA,GACxB0pzB,EAAM1p1B,EAAIQ,KAAK4wB,IAAIzyB,GAEnBs9W,EAAKz7W,KAAKu+B,IAAIv+B,KAAKytB,GAAK,EAAItvB,EAAI,GAAK6B,KAAKC,KAAK,EAAIip1B,IAAQ,EAAIA,GAAM1p1B,EAAI,GAG7E,OAFArB,GAAKo2B,EAAIv0B,KAAKS,IAAIT,KAAKmE,IAAIs3W,EAAI,QAExB,IAAIr6I,EAAMqkiB,EAAO1hiB,IAAMhmO,EAAIw2B,EAAGp2B,EACtC,EAEAqt0B,UAAW,SAAUniyB,GAQpB,IAPA,IAO4B6/yB,EAPxBnr1B,EAAI,IAAMiC,KAAKytB,GACf8G,EAAI/Z,KAAK4a,EACToK,EAAMhlB,KAAKyu0B,QAAU10zB,EACrB/0B,EAAIQ,KAAK0vB,KAAK,EAAI8P,EAAMA,GACxBi8U,EAAKz7W,KAAKm0F,KAAK9qD,EAAMlrC,EAAIo2B,GACzBi9L,EAAMxxN,KAAKytB,GAAK,EAAI,EAAIztB,KAAKkwG,KAAKurQ,GAE7B57W,EAAI,EAAGsp1B,EAAO,GAAUtp1B,EAAI,IAAMG,KAAKM,IAAI6o1B,GAAQ,KAAMtp1B,IACjEqp1B,EAAM1p1B,EAAIQ,KAAK4wB,IAAI4gM,GACnB03nB,EAAMlp1B,KAAKC,KAAK,EAAIip1B,IAAQ,EAAIA,GAAM1p1B,EAAI,GAE1CgyN,GADA23nB,EAAOnp1B,KAAKytB,GAAK,EAAI,EAAIztB,KAAKkwG,KAAKurQ,EAAKyte,GAAO13nB,EAIhD,OAAO,IAAIyS,EAAOzS,EAAMzzN,EAAGsrC,EAAMtoC,EAAIhD,EAAIw2B,EAC1C,GA0BGvjB,GAAQ,CACV0J,UAAW,KACXqu0B,OAAQA,GACRC,SAAUA,GACV1c,kBAAmBA,GASjB8c,GAAW5ruB,EAAO,CAAC,EAAGmttB,EAAO,CAChC3huB,KAAM,YACNmoZ,WAAY63V,GAEZ7d,eAAiB,WAChB,IAAI/lyB,EAAQ,IAAOplC,KAAKytB,GAAKu7zB,GAAS5zzB,GACtC,OAAOq3yB,EAAiBrnyB,EAAO,IAAMA,EAAO,GAC7C,CAHgB,KAmBbikzB,GAAW7ruB,EAAO,CAAC,EAAGmttB,EAAO,CAChC3huB,KAAM,YACNmoZ,WAAY43V,GACZ5d,eAAgBsB,EAAiB,EAAI,IAAK,GAAI,EAAI,IAAK,MAapD6c,GAAS9ruB,EAAO,CAAC,EAAGwttB,EAAK,CAC5B75U,WAAY43V,GACZ5d,eAAgBsB,EAAiB,EAAG,GAAI,EAAG,GAE3CrnyB,MAAO,SAAU2pJ,GAChB,OAAO/uL,KAAKC,IAAI,EAAG8uL,EACpB,EAEAA,KAAM,SAAU3pJ,GACf,OAAOplC,KAAKS,IAAI2kC,GAASplC,KAAKU,GAC/B,EAEAqS,SAAU,SAAUk5zB,EAASC,GAC5B,IAAI9wnB,EAAK8wnB,EAAQnomB,IAAMkomB,EAAQlomB,IAC3B1oB,EAAK6wnB,EAAQ/vrB,IAAM8vrB,EAAQ9vrB,IAE/B,OAAOn8I,KAAK0vB,KAAK0rL,EAAKA,EAAKC,EAAKA,EACjC,EAEAqwnB,UAAU,IAGXV,EAAIL,MAAQA,EACZK,EAAIoe,SAAWA,GACfpe,EAAI0B,SAAWA,EACf1B,EAAI2B,WAAaA,EACjB3B,EAAIqe,SAAWA,GACfre,EAAIse,OAASA,GA2Bb,IAAIlwc,GAAQp0R,EAAQxH,OAAO,CAG1BpzG,QAAS,CAGRm5pB,KAAM,cAIN4hL,YAAa,KAEbjH,qBAAqB,GAStBl8E,MAAO,SAAUz0vB,GAEhB,OADAA,EAAI8va,SAAS7ia,MACNA,IACR,EAIA4iC,OAAQ,WACP,OAAO5iC,KAAKk3G,WAAWl3G,KAAK4xY,MAAQ5xY,KAAK+u0B,UAC1C,EAQA73tB,WAAY,SAAU5kG,GAIrB,OAHIA,GACHA,EAAIw1uB,YAAY9nvB,MAEVA,IACR,EAIAwkkB,QAAS,SAAUjxkB,GAClB,OAAOyM,KAAK4xY,KAAK4yL,QAAQjxkB,EAAQyM,KAAKpQ,QAAQ2D,IAASA,EAAQyM,KAAKpQ,QAAQm5pB,KAC7E,EAEAimL,qBAAsB,SAAUpsM,GAE/B,OADA5ioB,KAAK4xY,KAAK+wb,SAAStoM,EAAMuI,IAAa5ioB,KAC/BA,IACR,EAEAiv0B,wBAAyB,SAAUrsM,GAElC,cADO5ioB,KAAK4xY,KAAK+wb,SAAStoM,EAAMuI,IACzB5ioB,IACR,EAIAoq0B,eAAgB,WACf,OAAOpq0B,KAAKpQ,QAAQ+60B,WACrB,EAEAuE,UAAW,SAAUlq1B,GACpB,IAAI+N,EAAM/N,EAAE+I,OAGZ,GAAKgF,EAAIi10B,SAASho0B,MAAlB,CAKA,GAHAA,KAAK4xY,KAAO7+Y,EACZiN,KAAK66zB,cAAgB9n0B,EAAI8n0B,cAErB76zB,KAAKugjB,UAAW,CACnB,IAAIh3hB,EAASvpB,KAAKugjB,YAClBxtjB,EAAI43G,GAAGphF,EAAQvpB,MACfA,KAAKyqG,KAAK,SAAU,WACnB13G,EAAIk6H,IAAI1jG,EAAQvpB,KACjB,EAAGA,KACJ,CAEAA,KAAK0sU,MAAM35U,GAEXiN,KAAKw1Z,KAAK,OACVzia,EAAIyia,KAAK,WAAY,CAAC72B,MAAO3+X,MAhBM,CAiBpC,IAoCDhN,GAAI4vU,QAAQ,CAGXigG,SAAU,SAAUlkC,GACnB,IAAKA,EAAMuwc,UACV,MAAM,IAAI3n0B,MAAM,uCAGjB,IAAIxJ,EAAKs8nB,EAAM17P,GACf,OAAI3+X,KAAK6hD,QAAQ9jD,KACjBiC,KAAK6hD,QAAQ9jD,GAAM4gY,EAEnBA,EAAMowc,UAAY/u0B,KAEd2+X,EAAMwwc,WACTxwc,EAAMwwc,UAAUnv0B,MAGjBA,KAAKk6nB,UAAUv7P,EAAMuwc,UAAWvwc,IATD3+X,IAYhC,EAIA8nvB,YAAa,SAAUnpX,GACtB,IAAI5gY,EAAKs8nB,EAAM17P,GAEf,OAAK3+X,KAAK6hD,QAAQ9jD,IAEdiC,KAAKk7zB,SACRv8b,EAAMxxD,SAASntU,aAGTA,KAAK6hD,QAAQ9jD,GAEhBiC,KAAKk7zB,UACRl7zB,KAAKw1Z,KAAK,cAAe,CAAC72B,MAAOA,IACjCA,EAAM62B,KAAK,WAGZ72B,EAAMiT,KAAOjT,EAAMowc,UAAY,KAExB/u0B,MAfyBA,IAgBjC,EAIAgo0B,SAAU,SAAUrpc,GACnB,OAAO07P,EAAM17P,KAAU3+X,KAAK6hD,OAC7B,EAUAsqsB,UAAW,SAAU5ntB,EAAQpb,GAC5B,IAAK,IAAI9jC,KAAK2a,KAAK6hD,QAClBtd,EAAOlkC,KAAK8oB,EAASnpB,KAAK6hD,QAAQx8D,IAEnC,OAAO2a,IACR,EAEAg7zB,WAAY,SAAUr6vB,GAGrB,IAAK,IAAIt7E,EAAI,EAAGoK,GAFhBkxE,EAASA,EAAU5wD,EAAQ4wD,GAAUA,EAAS,CAACA,GAAW,IAE7BvsE,OAAQ/O,EAAIoK,EAAKpK,IAC7C2a,KAAK6ia,SAASliW,EAAOt7E,GAEvB,EAEA+p1B,cAAe,SAAUzwc,GACnB54Y,MAAM44Y,EAAM/uY,QAAQ4ooB,UAAazyoB,MAAM44Y,EAAM/uY,QAAQi4U,WACzD7nU,KAAKq6zB,iBAAiBhgM,EAAM17P,IAAUA,EACtC3+X,KAAKqv0B,oBAEP,EAEAC,iBAAkB,SAAU3wc,GAC3B,IAAI5gY,EAAKs8nB,EAAM17P,GAEX3+X,KAAKq6zB,iBAAiBt8zB,YAClBiC,KAAKq6zB,iBAAiBt8zB,GAC7BiC,KAAKqv0B,oBAEP,EAEAA,kBAAmB,WAClB,IAAIxngB,EAAUtiV,IACVizoB,GAAU,IACV+2M,EAAcvv0B,KAAK0i0B,eAEvB,IAAK,IAAIr90B,KAAK2a,KAAKq6zB,iBAAkB,CACpC,IAAIzq0B,EAAUoQ,KAAKq6zB,iBAAiBh10B,GAAGuK,QAEvCi4U,OAA8B/wU,IAApBlH,EAAQi4U,QAAwBA,EAAUriV,KAAKkE,IAAIm+U,EAASj4U,EAAQi4U,SAC9E2wT,OAA8B1hoB,IAApBlH,EAAQ4ooB,QAAwBA,EAAUhzoB,KAAKmE,IAAI6uoB,EAAS5ooB,EAAQ4ooB,QAC/E,CAEAx4nB,KAAK6g0B,eAAiBroM,KAAY,SAAY1hoB,EAAY0hoB,EAC1Dx4nB,KAAK2g0B,eAAiB94f,IAAYtiV,SAAWuR,EAAY+wU,EAMrD0ngB,IAAgBvv0B,KAAK0i0B,gBACxB1i0B,KAAKw1Z,KAAK,yBAGkB1+Z,IAAzBkJ,KAAKpQ,QAAQ4ooB,SAAyBx4nB,KAAK6g0B,gBAAkB7g0B,KAAKguU,UAAYhuU,KAAK6g0B,gBACtF7g0B,KAAKizU,QAAQjzU,KAAK6g0B,qBAEU/p0B,IAAzBkJ,KAAKpQ,QAAQi4U,SAAyB7nU,KAAK2g0B,gBAAkB3g0B,KAAKguU,UAAYhuU,KAAK2g0B,gBACtF3g0B,KAAKizU,QAAQjzU,KAAK2g0B,eAEpB,IAqBD,IAAI6O,GAAa5wc,GAAM57R,OAAO,CAE7Bz5D,WAAY,SAAUo3B,EAAQ/wE,GAK7B,IAAIvK,EAAGoK,EAEP,GANA6F,EAAW0K,KAAMpQ,GAEjBoQ,KAAK6hD,QAAU,CAAC,EAIZ8e,EACH,IAAKt7E,EAAI,EAAGoK,EAAMkxE,EAAOvsE,OAAQ/O,EAAIoK,EAAKpK,IACzC2a,KAAK6ia,SAASliW,EAAOt7E,GAGxB,EAIAw9a,SAAU,SAAUlkC,GACnB,IAAI5gY,EAAKiC,KAAKyv0B,WAAW9wc,GAQzB,OANA3+X,KAAK6hD,QAAQ9jD,GAAM4gY,EAEf3+X,KAAK4xY,MACR5xY,KAAK4xY,KAAKixB,SAASlkC,GAGb3+X,IACR,EAOA8nvB,YAAa,SAAUnpX,GACtB,IAAI5gY,EAAK4gY,KAAS3+X,KAAK6hD,QAAU88U,EAAQ3+X,KAAKyv0B,WAAW9wc,GAQzD,OANI3+X,KAAK4xY,MAAQ5xY,KAAK6hD,QAAQ9jD,IAC7BiC,KAAK4xY,KAAKk2W,YAAY9nvB,KAAK6hD,QAAQ9jD,WAG7BiC,KAAK6hD,QAAQ9jD,GAEbiC,IACR,EAOAgo0B,SAAU,SAAUrpc,GAEnB,OAD+B,iBAAVA,EAAqBA,EAAQ3+X,KAAKyv0B,WAAW9wc,MAChD3+X,KAAK6hD,OACxB,EAIAmosB,YAAa,WACZ,OAAOhqvB,KAAKmsvB,UAAUnsvB,KAAK8nvB,YAAa9nvB,KACzC,EAMAslO,OAAQ,SAAUW,GACjB,IACI5gP,EAAGs5Y,EADHtqY,EAAOC,MAAM8L,UAAUtF,MAAMuF,KAAKlM,UAAW,GAGjD,IAAK9O,KAAK2a,KAAK6hD,SACd88U,EAAQ3+X,KAAK6hD,QAAQx8D,IAEX4gP,IACT04J,EAAM14J,GAAYnlO,MAAM69X,EAAOtqY,GAIjC,OAAO2L,IACR,EAEA0sU,MAAO,SAAU35U,GAChBiN,KAAKmsvB,UAAUp5vB,EAAI8va,SAAU9va,EAC9B,EAEAo6U,SAAU,SAAUp6U,GACnBiN,KAAKmsvB,UAAUp5vB,EAAI+0vB,YAAa/0vB,EACjC,EASAo5vB,UAAW,SAAU5ntB,EAAQpb,GAC5B,IAAK,IAAI9jC,KAAK2a,KAAK6hD,QAClBtd,EAAOlkC,KAAK8oB,EAASnpB,KAAK6hD,QAAQx8D,IAEnC,OAAO2a,IACR,EAIAq2Z,SAAU,SAAUt4Z,GACnB,OAAOiC,KAAK6hD,QAAQ9jD,EACrB,EAIAw/Z,UAAW,WACV,IAAI58V,EAAS,GAEb,OADA3gE,KAAKmsvB,UAAUxrrB,EAAO7sE,KAAM6sE,GACrBA,CACR,EAIAm3V,UAAW,SAAUkpB,GACpB,OAAOhhb,KAAKslO,OAAO,YAAa07M,EACjC,EAIAyuZ,WAAY,SAAU9wc,GACrB,OAAO07P,EAAM17P,EACd,IAgCG+wc,GAAeF,GAAWxsuB,OAAO,CAEpC6/T,SAAU,SAAUlkC,GACnB,OAAI3+X,KAAKgo0B,SAASrpc,GACV3+X,MAGR2+X,EAAM8tb,eAAezszB,MAErBwv0B,GAAWpv0B,UAAUyia,SAASxia,KAAKL,KAAM2+X,GAIlC3+X,KAAKw1Z,KAAK,WAAY,CAAC72B,MAAOA,IACtC,EAEAmpX,YAAa,SAAUnpX,GACtB,OAAK3+X,KAAKgo0B,SAASrpc,IAGfA,KAAS3+X,KAAK6hD,UACjB88U,EAAQ3+X,KAAK6hD,QAAQ88U,IAGtBA,EAAM+tb,kBAAkB1szB,MAExBwv0B,GAAWpv0B,UAAU0nvB,YAAYznvB,KAAKL,KAAM2+X,GAIrC3+X,KAAKw1Z,KAAK,cAAe,CAAC72B,MAAOA,KAZhC3+X,IAaT,EAIA4lE,SAAU,SAAUl8C,GACnB,OAAO1pB,KAAKslO,OAAO,WAAY57M,EAChC,EAIAyhuB,aAAc,WACb,OAAOnrvB,KAAKslO,OAAO,eACpB,EAIAqqmB,YAAa,WACZ,OAAO3v0B,KAAKslO,OAAO,cACpB,EAIAv8H,UAAW,WACV,IAAIhpE,EAAS,IAAIotxB,EAEjB,IAAK,IAAIpvzB,KAAMiC,KAAK6hD,QAAS,CAC5B,IAAI88U,EAAQ3+X,KAAK6hD,QAAQ9jD,GACzBgiC,EAAOijE,OAAO27R,EAAM51R,UAAY41R,EAAM51R,YAAc41R,EAAM0sX,YAC3D,CACA,OAAOtrtB,CACR,IAqCG6vyB,GAAOpkB,EAAMxotB,OAAO,CA0CvBpzG,QAAS,CACRig1B,YAAa,CAAC,EAAG,GACjBC,cAAe,CAAC,EAAG,GAMnB7vc,aAAa,GAGd12V,WAAY,SAAU35C,GACrB0F,EAAW0K,KAAMpQ,EAClB,EAKAmg1B,WAAY,SAAUC,GACrB,OAAOhw0B,KAAKiw0B,YAAY,OAAQD,EACjC,EAIAE,aAAc,SAAUF,GACvB,OAAOhw0B,KAAKiw0B,YAAY,SAAUD,EACnC,EAEAC,YAAa,SAAU180B,EAAMy80B,GAC5B,IAAI3ouB,EAAMrnG,KAAKmw0B,YAAY580B,GAE3B,IAAK8zG,EAAK,CACT,GAAa,SAAT9zG,EACH,MAAM,IAAIgU,MAAM,mDAEjB,OAAO,IACR,CAEA,IAAImuO,EAAM11O,KAAKow0B,WAAW/ouB,EAAK2ouB,GAA+B,QAApBA,EAAQh/tB,QAAoBg/tB,EAAU,MAOhF,OANAhw0B,KAAKqw0B,eAAe36lB,EAAKniP,IAErByM,KAAKpQ,QAAQqwY,aAA4C,KAA7BjgY,KAAKpQ,QAAQqwY,eAC5CvqJ,EAAIuqJ,aAA2C,IAA7BjgY,KAAKpQ,QAAQqwY,YAAuB,GAAKjgY,KAAKpQ,QAAQqwY,aAGlEvqJ,CACR,EAEA26lB,eAAgB,SAAU36lB,EAAKniP,GAC9B,IAAI3D,EAAUoQ,KAAKpQ,QACf0g1B,EAAa1g1B,EAAQ2D,EAAO,QAEN,iBAAf+80B,IACVA,EAAa,CAACA,EAAYA,IAG3B,IAAIv9zB,EAAOi6yB,EAAQsjB,GACf/khB,EAASyhgB,EAAiB,WAATz5zB,GAAqB3D,EAAQ2g1B,cAAgB3g1B,EAAQ4g1B,YAC9Dz9zB,GAAQA,EAAK26yB,SAAS,GAAG,IAErCh4kB,EAAI5rI,UAAY,kBAAoBv2G,EAAO,KAAO3D,EAAQk6G,WAAa,IAEnEyhN,IACH71E,EAAIhsN,MAAMyuM,YAAeozF,EAAOhlU,EAAK,KACrCmvP,EAAIhsN,MAAMsuM,WAAeuzF,EAAO5nU,EAAK,MAGlCovB,IACH2iO,EAAIhsN,MAAMhjC,MAASqsB,EAAKxsB,EAAI,KAC5BmvP,EAAIhsN,MAAM9iC,OAASmsB,EAAKpvB,EAAI,KAE9B,EAEAys1B,WAAY,SAAU/ouB,EAAK9pE,GAG1B,OAFAA,EAAKA,GAAM90C,SAASskB,cAAc,QAC/Bs6F,IAAMA,EACF9pE,CACR,EAEA4yyB,YAAa,SAAU580B,GACtB,OAAOu5Q,GAAQmnjB,QAAUj0zB,KAAKpQ,QAAQ2D,EAAO,cAAgByM,KAAKpQ,QAAQ2D,EAAO,MAClF,IA0BD,IAAIk90B,GAAcb,GAAK5suB,OAAO,CAE7BpzG,QAAS,CACR8ykB,QAAe,kBACfguQ,cAAe,qBACfC,UAAe,oBACfpmF,SAAa,CAAC,GAAI,IAClBimF,WAAa,CAAC,GAAI,IAClBX,YAAa,CAAC,GAAI,IAClBC,cAAe,CAAC,IAAK,IACrBc,WAAa,CAAC,GAAI,KAGnBT,YAAa,SAAU580B,GAStB,MARqC,iBAA1Bk90B,GAAYI,YACtBJ,GAAYI,UAAY7w0B,KAAK8w0B,oBAOtB9w0B,KAAKpQ,QAAQih1B,WAAaJ,GAAYI,WAAajB,GAAKxv0B,UAAU+v0B,YAAY9v0B,KAAKL,KAAMzM,EAClG,EAEAw90B,UAAW,SAAUlowB,GACpB,IAAI8xH,EAAQ,SAAUloL,EAAK2jI,EAAIhkI,GAC9B,IAAIpuB,EAAQoyJ,EAAG/wH,KAAK5S,GACpB,OAAOzuB,GAASA,EAAMouB,EACvB,EAEA,OADAy2D,EAAO8xH,EAAM9xH,EAAM,yBAA0B,KAC9B8xH,EAAM9xH,EAAM,yBAA0B,EACtD,EAEAiowB,gBAAiB,WAChB,IAAIvzyB,EAAKg5xB,GAAS,MAAQ,4BAA6B9t0B,SAASiF,MAC5Dm7E,EAAOprC,GAASF,EAAI,qBACbE,GAASF,EAAI,mBAIxB,GAFA90C,SAASiF,KAAKwiG,YAAY3yD,GAC1BsrC,EAAO7oE,KAAK+w0B,UAAUlowB,GACV,OAAOA,EACnB,IAAIugD,EAAO3gI,SAAS8U,cAAc,6BAClC,OAAK6rH,EACEA,EAAKn7B,KAAK9E,UAAU,EAAGigC,EAAKn7B,KAAK75F,OAAS,GAAuB,GADpD,EAErB,IAqBG480B,GAAapG,GAAQ5nuB,OAAO,CAC/Bz5D,WAAY,SAAUora,GACrB30c,KAAKix0B,QAAUt8X,CAChB,EAEAk2X,SAAU,WACT,IAAIp2d,EAAOz0W,KAAKix0B,QAAQC,MAEnBlx0B,KAAKmx0B,aACTnx0B,KAAKmx0B,WAAa,IAAInG,GAAUv2d,EAAMA,GAAM,IAG7Cz0W,KAAKmx0B,WAAWxmuB,GAAG,CAClB+zX,UAAW1+d,KAAKox0B,aAChBC,QAASrx0B,KAAKsx0B,WACdz6X,KAAM72c,KAAKyuU,QACX8igB,QAASvx0B,KAAK2uU,YACZ3uU,MAAM+tG,SAET9D,GAASwqQ,EAAM,2BAChB,EAEAq2d,YAAa,WACZ9q0B,KAAKmx0B,WAAWlktB,IAAI,CACnByxW,UAAW1+d,KAAKox0B,aAChBC,QAASrx0B,KAAKsx0B,WACdz6X,KAAM72c,KAAKyuU,QACX8igB,QAASvx0B,KAAK2uU,YACZ3uU,MAAM8tG,UAEL9tG,KAAKix0B,QAAQC,OAChBxnuB,GAAY1pG,KAAKix0B,QAAQC,MAAO,2BAElC,EAEArguB,MAAO,WACN,OAAO7wG,KAAKmx0B,YAAcnx0B,KAAKmx0B,WAAW5Q,MAC3C,EAEAiR,WAAY,SAAUxs1B,GACrB,IAAI2vd,EAAS30c,KAAKix0B,QACdl+0B,EAAM4hd,EAAO/iE,KACbzwM,EAAQnhM,KAAKix0B,QAAQrh1B,QAAQ6h1B,aAC7Bjh1B,EAAUwP,KAAKix0B,QAAQrh1B,QAAQq3vB,eAC/ByqF,EAAU56a,GAAY69C,EAAOu8X,OAC7BnxyB,EAAShtC,EAAI2r0B,iBACb1wuB,EAASj7F,EAAIou0B,iBAEbwQ,EAAYzkB,EACfntxB,EAAOr2C,IAAI+j0B,UAAUz/tB,GAAQ16F,IAAI9C,GACjCuvC,EAAOp2C,IAAI8j0B,UAAUz/tB,GAAQypQ,SAASjnW,IAGvC,IAAKmh1B,EAAUnq1B,SAASkq1B,GAAU,CAEjC,IAAIE,EAAW5kB,GACbxn0B,KAAKmE,IAAIgo1B,EAAUho1B,IAAIpD,EAAGmr1B,EAAQnr1B,GAAKor1B,EAAUho1B,IAAIpD,IAAMw5C,EAAOp2C,IAAIpD,EAAIor1B,EAAUho1B,IAAIpD,IACxFf,KAAKkE,IAAIio1B,EAAUjo1B,IAAInD,EAAGmr1B,EAAQnr1B,GAAKor1B,EAAUjo1B,IAAInD,IAAMw5C,EAAOr2C,IAAInD,EAAIor1B,EAAUjo1B,IAAInD,IAExFf,KAAKmE,IAAIgo1B,EAAUho1B,IAAIhG,EAAG+t1B,EAAQ/t1B,GAAKgu1B,EAAUho1B,IAAIhG,IAAMo8C,EAAOp2C,IAAIhG,EAAIgu1B,EAAUho1B,IAAIhG,IACxF6B,KAAKkE,IAAIio1B,EAAUjo1B,IAAI/F,EAAG+t1B,EAAQ/t1B,GAAKgu1B,EAAUjo1B,IAAI/F,IAAMo8C,EAAOr2C,IAAI/F,EAAIgu1B,EAAUjo1B,IAAI/F,IACxF6mwB,WAAWrpjB,GAEbpuM,EAAI0p0B,MAAMmV,EAAU,CAAC50vB,SAAS,IAE9Bh9E,KAAKmx0B,WAAWnF,QAAQzqwB,KAAKqwwB,GAC7B5x0B,KAAKmx0B,WAAW/X,UAAU73vB,KAAKqwwB,GAE/Bj7a,GAAYg+C,EAAOu8X,MAAOlx0B,KAAKmx0B,WAAWnF,SAC1Chs0B,KAAKyuU,QAAQzpV,GAEbgb,KAAK6x0B,YAAc5i0B,EAAiBjP,KAAKwx0B,WAAW91xB,KAAK17C,KAAMhb,GAChE,CACD,EAEAos1B,aAAc,WAQbpx0B,KAAK8x0B,WAAa9x0B,KAAKix0B,QAAQ5lF,YAG/BrrvB,KAAKix0B,QAAQppF,YAAc7nvB,KAAKix0B,QAAQppF,aAExC7nvB,KAAKix0B,QACHz7a,KAAK,aACLA,KAAK,YACR,EAEA87a,WAAY,SAAUts1B,GACjBgb,KAAKix0B,QAAQrh1B,QAAQmi1B,UACxBxmB,EAAgBvrzB,KAAK6x0B,aACrB7x0B,KAAK6x0B,YAAc5i0B,EAAiBjP,KAAKwx0B,WAAW91xB,KAAK17C,KAAMhb,IAEjE,EAEAypV,QAAS,SAAUzpV,GAClB,IAAI2vd,EAAS30c,KAAKix0B,QACdl0qB,EAAS43S,EAAOq9X,QAChBN,EAAU56a,GAAY69C,EAAOu8X,OAC7BjmF,EAASt2S,EAAO/iE,KAAK4ub,mBAAmBkR,GAGxC30qB,GACH45P,GAAY55P,EAAQ20qB,GAGrB/8X,EAAOs9X,QAAUhnF,EACjBjmwB,EAAEimwB,OAASA,EACXjmwB,EAAEkt1B,UAAYly0B,KAAK8x0B,WAInBn9X,EACKn/C,KAAK,OAAQxwa,GACbwwa,KAAK,OAAQxwa,EACnB,EAEA2pV,WAAY,SAAU3pV,GAIpBum0B,EAAgBvrzB,KAAK6x0B,oBAIf7x0B,KAAK8x0B,WACZ9x0B,KAAKix0B,QACAz7a,KAAK,WACLA,KAAK,UAAWxwa,EACtB,IAgBGmt1B,GAASvzc,GAAM57R,OAAO,CAIzBpzG,QAAS,CAKR6kX,KAAM,IAAIg8d,GAGVh7X,aAAa,EAIb28X,UAAU,EAKV97xB,MAAO,GAKP+3T,IAAK,SAILm7Y,aAAc,EAId/rvB,QAAS,EAIT400B,aAAa,EAIbC,WAAY,IAIZvpL,KAAM,aAINs5K,WAAY,aAKZqB,qBAAqB,EAMrBj6E,gBAAgB,EAKhBh+a,WAAW,EAIXsmgB,SAAS,EAKT9qF,eAAgB,CAAC,GAAI,IAIrBwqF,aAAc,IAQfloyB,WAAY,SAAU0htB,EAAQr7vB,GAC7B0F,EAAW0K,KAAMpQ,GACjBoQ,KAAKiy0B,QAAUzkB,EAASviE,EACzB,EAEAv+a,MAAO,SAAU35U,GAChBiN,KAAK66zB,cAAgB76zB,KAAK66zB,eAAiB9n0B,EAAInD,QAAQoq0B,oBAEnDh6zB,KAAK66zB,eACR9n0B,EAAI43G,GAAG,WAAY3qG,KAAK6k0B,aAAc7k0B,MAGvCA,KAAKuy0B,YACLvy0B,KAAK5J,QACN,EAEA+2U,SAAU,SAAUp6U,GACfiN,KAAK83Y,UAAY93Y,KAAK83Y,SAAS9hZ,YAClCgK,KAAKpQ,QAAQ67U,WAAY,EACzBzrU,KAAK83Y,SAASgzb,sBAER9q0B,KAAK83Y,SAER93Y,KAAK66zB,eACR9n0B,EAAIk6H,IAAI,WAAYjtH,KAAK6k0B,aAAc7k0B,MAGxCA,KAAKwy0B,cACLxy0B,KAAKyy0B,eACN,EAEAlyR,UAAW,WACV,MAAO,CACNhsY,KAAMv0K,KAAK5J,OACXs80B,UAAW1y0B,KAAK5J,OAElB,EAIAi1vB,UAAW,WACV,OAAOrrvB,KAAKiy0B,OACb,EAIA7nF,UAAW,SAAUa,GACpB,IAAIinF,EAAYly0B,KAAKiy0B,QAMrB,OALAjy0B,KAAKiy0B,QAAUzkB,EAASviE,GACxBjrvB,KAAK5J,SAIE4J,KAAKw1Z,KAAK,OAAQ,CAAC08a,UAAWA,EAAWjnF,OAAQjrvB,KAAKiy0B,SAC9D,EAIAU,gBAAiB,SAAU/t1B,GAE1B,OADAob,KAAKpQ,QAAQ45vB,aAAe5kwB,EACrBob,KAAK5J,QACb,EAIAw80B,QAAS,WACR,OAAO5y0B,KAAKpQ,QAAQ6kX,IACrB,EAIA41Y,QAAS,SAAU51Y,GAalB,OAXAz0W,KAAKpQ,QAAQ6kX,KAAOA,EAEhBz0W,KAAK4xY,OACR5xY,KAAKuy0B,YACLvy0B,KAAK5J,UAGF4J,KAAK0rvB,QACR1rvB,KAAKsrvB,UAAUtrvB,KAAK0rvB,OAAQ1rvB,KAAK0rvB,OAAO97vB,SAGlCoQ,IACR,EAEAm3D,WAAY,WACX,OAAOn3D,KAAKkx0B,KACb,EAEA960B,OAAQ,WAEP,GAAI4J,KAAKkx0B,OAASlx0B,KAAK4xY,KAAM,CAC5B,IAAIr/X,EAAMvS,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKiy0B,SAAS1m1B,QACrDyU,KAAK6y0B,QAAQtg0B,EACd,CAEA,OAAOvS,IACR,EAEAuy0B,UAAW,WACV,IAAI3i1B,EAAUoQ,KAAKpQ,QACfkj1B,EAAa,iBAAmB9y0B,KAAK66zB,cAAgB,WAAa,QAElEpmd,EAAO7kX,EAAQ6kX,KAAKs7d,WAAW/v0B,KAAKkx0B,OACpC6B,GAAU,EAGVt+d,IAASz0W,KAAKkx0B,QACblx0B,KAAKkx0B,OACRlx0B,KAAKwy0B,cAENO,GAAU,EAENnj1B,EAAQ0mD,QACXm+T,EAAKn+T,MAAQ1mD,EAAQ0mD,OAGD,QAAjBm+T,EAAKzjQ,UACRyjQ,EAAKpG,IAAMz+W,EAAQy+W,KAAO,KAI5BpkQ,GAASwqQ,EAAMq+d,GAEXlj1B,EAAQwi1B,WACX39d,EAAKx+C,SAAW,IAChBw+C,EAAKx2W,aAAa,OAAQ,WAG3B+B,KAAKkx0B,MAAQz8d,EAET7kX,EAAQyi1B,aACXry0B,KAAK2qG,GAAG,CACPqouB,UAAWhz0B,KAAKiz0B,cAChBC,SAAUlz0B,KAAKmz0B,eAIbnz0B,KAAKpQ,QAAQ65vB,gBAChB9+oB,GAAG8pQ,EAAM,QAASz0W,KAAKoz0B,YAAapz0B,MAGrC,IAAIqz0B,EAAYzj1B,EAAQ6kX,KAAKy7d,aAAalw0B,KAAKgy0B,SAC3CsB,GAAY,EAEZD,IAAcrz0B,KAAKgy0B,UACtBhy0B,KAAKyy0B,gBACLa,GAAY,GAGTD,IACHppuB,GAASopuB,EAAWP,GACpBO,EAAUhle,IAAM,IAEjBruW,KAAKgy0B,QAAUqB,EAGXzj1B,EAAQ6N,QAAU,GACrBuC,KAAKuz0B,iBAIFR,GACH/y0B,KAAKwkkB,UAAUr0e,YAAYnwF,KAAKkx0B,OAEjClx0B,KAAKwz0B,mBACDH,GAAaC,GAChBtz0B,KAAKwkkB,QAAQ50kB,EAAQyy0B,YAAYlyuB,YAAYnwF,KAAKgy0B,QAEpD,EAEAQ,YAAa,WACRxy0B,KAAKpQ,QAAQyi1B,aAChBry0B,KAAKitH,IAAI,CACR+ltB,UAAWhz0B,KAAKiz0B,cAChBC,SAAUlz0B,KAAKmz0B,eAIbnz0B,KAAKpQ,QAAQ65vB,gBAChBx8nB,GAAIjtH,KAAKkx0B,MAAO,QAASlx0B,KAAKoz0B,YAAapz0B,MAG5C4iC,GAAO5iC,KAAKkx0B,OACZlx0B,KAAKiv0B,wBAAwBjv0B,KAAKkx0B,OAElClx0B,KAAKkx0B,MAAQ,IACd,EAEAuB,cAAe,WACVzy0B,KAAKgy0B,SACRpvyB,GAAO5iC,KAAKgy0B,SAEbhy0B,KAAKgy0B,QAAU,IAChB,EAEAa,QAAS,SAAUtg0B,GAEdvS,KAAKkx0B,OACRv6a,GAAY32Z,KAAKkx0B,MAAO3+zB,GAGrBvS,KAAKgy0B,SACRr7a,GAAY32Z,KAAKgy0B,QAASz/zB,GAG3BvS,KAAKyz0B,QAAUlh0B,EAAI5uB,EAAIqc,KAAKpQ,QAAQ45vB,aAEpCxpvB,KAAKmz0B,cACN,EAEAO,cAAe,SAAU9u1B,GACpBob,KAAKkx0B,QACRlx0B,KAAKkx0B,MAAMxnzB,MAAMs3Z,OAAShhb,KAAKyz0B,QAAU7u1B,EAE3C,EAEAig1B,aAAc,SAAU77d,GACvB,IAAIz2V,EAAMvS,KAAK4xY,KAAKgyb,uBAAuB5j0B,KAAKiy0B,QAASjpe,EAAIz0L,KAAMy0L,EAAI7rW,QAAQ5R,QAE/EyU,KAAK6y0B,QAAQtg0B,EACd,EAEAih0B,iBAAkB,WAEjB,GAAKxz0B,KAAKpQ,QAAQ6ld,cAElBxrW,GAASjqG,KAAKkx0B,MAAO,uBAErBlx0B,KAAKgv0B,qBAAqBhv0B,KAAKkx0B,OAE3BF,IAAY,CACf,IAAIvlgB,EAAYzrU,KAAKpQ,QAAQ67U,UACzBzrU,KAAK83Y,WACRrsE,EAAYzrU,KAAK83Y,SAAS9hZ,UAC1BgK,KAAK83Y,SAAShqS,WAGf9tG,KAAK83Y,SAAW,IAAIk5b,GAAWhx0B,MAE3ByrU,GACHzrU,KAAK83Y,SAAS/pS,QAEhB,CACD,EAIAushB,WAAY,SAAU78nB,GAMrB,OALAuC,KAAKpQ,QAAQ6N,QAAUA,EACnBuC,KAAK4xY,MACR5xY,KAAKuz0B,iBAGCvz0B,IACR,EAEAuz0B,eAAgB,WACf,IAAI910B,EAAUuC,KAAKpQ,QAAQ6N,QAEvBuC,KAAKkx0B,OACR52M,GAAWt6nB,KAAKkx0B,MAAOzz0B,GAGpBuC,KAAKgy0B,SACR13M,GAAWt6nB,KAAKgy0B,QAASv00B,EAE3B,EAEAw10B,cAAe,WACdjz0B,KAAK0z0B,cAAc1z0B,KAAKpQ,QAAQ0i1B,WACjC,EAEAa,aAAc,WACbnz0B,KAAK0z0B,cAAc,EACpB,EAEAN,YAAa,WACZ,IAAIrg1B,EAAMiN,KAAK4xY,KACf,GAAK7+Y,EAAL,CAEA,IAAI4g1B,EAAW3z0B,KAAKpQ,QAAQ6kX,KAAK7kX,QAC7BmjB,EAAO4g0B,EAASppF,SAAWyiE,EAAQ2mB,EAASppF,UAAYyiE,EAAQ,EAAG,GACnEzhgB,EAASoohB,EAASnD,WAAaxjB,EAAQ2mB,EAASnD,YAAcxjB,EAAQ,EAAG,GAE7Ej6zB,EAAIur0B,UAAUt+zB,KAAKiy0B,QAAS,CAC3BhW,eAAgB1wgB,EAChB4wgB,mBAAoBppzB,EAAK0kV,SAASlsC,IARf,CAUrB,EAEAqohB,gBAAiB,WAChB,OAAO5z0B,KAAKpQ,QAAQ6kX,KAAK7kX,QAAQig1B,WAClC,EAEAgE,kBAAmB,WAClB,OAAO7z0B,KAAKpQ,QAAQ6kX,KAAK7kX,QAAQkg1B,aAClC,IAqBD,IAAInla,GAAO/rC,GAAM57R,OAAO,CAIvBpzG,QAAS,CAGR++B,QAAQ,EAIR3H,MAAO,UAIPC,OAAQ,EAIRxpB,QAAS,EAITooE,QAAS,QAITH,SAAU,QAIVq5V,UAAW,KAIXzM,WAAY,KAIZ7jY,MAAM,EAINi+b,UAAW,KAIXzrC,YAAa,GAIb6yZ,SAAU,UAKVr+X,aAAa,EAKbiuX,qBAAqB,GAGtByL,UAAW,SAAUp80B,GAGpBiN,KAAKog0B,UAAYrt0B,EAAIgh1B,YAAY/z0B,KAClC,EAEA0sU,MAAO,WACN1sU,KAAKog0B,UAAU4T,UAAUh00B,MACzBA,KAAKi00B,SACLj00B,KAAKog0B,UAAU8T,SAASl00B,KACzB,EAEAmtU,SAAU,WACTntU,KAAKog0B,UAAU+T,YAAYn00B,KAC5B,EAIAu2f,OAAQ,WAIP,OAHIv2f,KAAK4xY,MACR5xY,KAAKog0B,UAAUgU,YAAYp00B,MAErBA,IACR,EAIA4lE,SAAU,SAAUl8C,GAQnB,OAPAp0B,EAAW0K,KAAM0pB,GACb1pB,KAAKog0B,YACRpg0B,KAAKog0B,UAAUiU,aAAar00B,MACxBA,KAAKpQ,QAAQ++B,QAAUjF,GAAS5/B,OAAOsW,UAAUxU,eAAeyU,KAAKqpB,EAAO,WAC/E1pB,KAAKs00B,iBAGAt00B,IACR,EAIAmrvB,aAAc,WAIb,OAHInrvB,KAAKog0B,WACRpg0B,KAAKog0B,UAAU6S,cAAcjz0B,MAEvBA,IACR,EAIA2v0B,YAAa,WAIZ,OAHI3v0B,KAAKog0B,WACRpg0B,KAAKog0B,UAAUmU,aAAav00B,MAEtBA,IACR,EAEAm3D,WAAY,WACX,OAAOn3D,KAAKonE,KACb,EAEA6swB,OAAQ,WAEPj00B,KAAKw00B,WACLx00B,KAAK4hC,SACN,EAEA6yyB,gBAAiB,WAEhB,OAAQz00B,KAAKpQ,QAAQ++B,OAAS3uB,KAAKpQ,QAAQq3B,OAAS,EAAI,IACrDjnB,KAAKog0B,UAAUxw0B,QAAQytqB,WAAa,EACxC,IAWGq3K,GAAe/pa,GAAK3nU,OAAO,CAI9BpzG,QAAS,CACR6+B,MAAM,EAINV,OAAQ,IAGTwb,WAAY,SAAU0htB,EAAQr7vB,GAC7B0F,EAAW0K,KAAMpQ,GACjBoQ,KAAKiy0B,QAAUzkB,EAASviE,GACxBjrvB,KAAKwj0B,QAAUxj0B,KAAKpQ,QAAQm+B,MAC7B,EAIAq8tB,UAAW,SAAUa,GACpB,IAAIinF,EAAYly0B,KAAKiy0B,QAMrB,OALAjy0B,KAAKiy0B,QAAUzkB,EAASviE,GACxBjrvB,KAAKu2f,SAIEv2f,KAAKw1Z,KAAK,OAAQ,CAAC08a,UAAWA,EAAWjnF,OAAQjrvB,KAAKiy0B,SAC9D,EAIA5mF,UAAW,WACV,OAAOrrvB,KAAKiy0B,OACb,EAIAlra,UAAW,SAAUh5Y,GAEpB,OADA/tB,KAAKpQ,QAAQm+B,OAAS/tB,KAAKwj0B,QAAUz1yB,EAC9B/tB,KAAKu2f,QACb,EAIAzvF,UAAW,WACV,OAAO9ma,KAAKwj0B,OACb,EAEA59vB,SAAW,SAAUh2E,GACpB,IAAIm+B,EAASn+B,GAAWA,EAAQm+B,QAAU/tB,KAAKwj0B,QAG/C,OAFA74Z,GAAKvqa,UAAUwlE,SAASvlE,KAAKL,KAAMpQ,GACnCoQ,KAAK+ma,UAAUh5Y,GACR/tB,IACR,EAEAw00B,SAAU,WACTx00B,KAAK200B,OAAS300B,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKiy0B,SAChDjy0B,KAAKs00B,eACN,EAEAA,cAAe,WACd,IAAIv6zB,EAAI/Z,KAAKwj0B,QACT5ie,EAAK5gW,KAAK400B,UAAY76zB,EACtBH,EAAI5Z,KAAKy00B,kBACTt00B,EAAI,CAAC4Z,EAAIH,EAAGgnV,EAAKhnV,GACrB5Z,KAAK600B,UAAY,IAAI5nB,EAAOjtzB,KAAK200B,OAAOl9e,SAASt3V,GAAIH,KAAK200B,OAAOrh1B,IAAI6M,GACtE,EAEAyhC,QAAS,WACJ5hC,KAAK4xY,MACR5xY,KAAKo00B,aAEP,EAEAA,YAAa,WACZp00B,KAAKog0B,UAAU0U,cAAc900B,KAC9B,EAEA+00B,OAAQ,WACP,OAAO/00B,KAAKwj0B,UAAYxj0B,KAAKog0B,UAAUzyC,QAAQvyY,WAAWp7Y,KAAK600B,UAChE,EAGAG,eAAgB,SAAU700B,GACzB,OAAOA,EAAE+tzB,WAAWluzB,KAAK200B,SAAW300B,KAAKwj0B,QAAUxj0B,KAAKy00B,iBACzD,IA0BD,IAAIpioB,GAASqioB,GAAa1xuB,OAAO,CAEhCz5D,WAAY,SAAU0htB,EAAQr7vB,EAASql1B,GAQtC,GAPuB,iBAAZrl1B,IAEVA,EAAUozG,EAAO,CAAC,EAAGiyuB,EAAe,CAAClnzB,OAAQn+B,KAE9C0F,EAAW0K,KAAMpQ,GACjBoQ,KAAKiy0B,QAAUzkB,EAASviE,GAEpBllwB,MAAMia,KAAKpQ,QAAQm+B,QAAW,MAAM,IAAIxmB,MAAM,+BAKlDvH,KAAKk10B,SAAWl10B,KAAKpQ,QAAQm+B,MAC9B,EAIAg5Y,UAAW,SAAUh5Y,GAEpB,OADA/tB,KAAKk10B,SAAWnnzB,EACT/tB,KAAKu2f,QACb,EAIAzvF,UAAW,WACV,OAAO9ma,KAAKk10B,QACb,EAIAnsuB,UAAW,WACV,IAAIr/B,EAAO,CAAC1pE,KAAKwj0B,QAASxj0B,KAAK400B,UAAY500B,KAAKwj0B,SAEhD,OAAO,IAAIrW,EACVntzB,KAAK4xY,KAAK4ub,mBAAmBxg0B,KAAK200B,OAAOl9e,SAAS/tR,IAClD1pE,KAAK4xY,KAAK4ub,mBAAmBxg0B,KAAK200B,OAAOrh1B,IAAIo2E,IAC/C,EAEA9D,SAAU+kW,GAAKvqa,UAAUwlE,SAEzB4uwB,SAAU,WAET,IAAIjrnB,EAAMvpN,KAAKiy0B,QAAQ1onB,IACnB5nF,EAAM3hI,KAAKiy0B,QAAQtwsB,IACnB5uI,EAAMiN,KAAK4xY,KACX8nb,EAAM3m0B,EAAInD,QAAQ8p0B,IAEtB,GAAIA,EAAInh0B,WAAa43zB,EAAM53zB,SAAU,CACpC,IAAIhV,EAAIiC,KAAKytB,GAAK,IACdki0B,EAAQn10B,KAAKk10B,SAAW/kB,EAAMv1yB,EAAKr3B,EACnCyG,EAAM+I,EAAI0if,QAAQ,CAAC9zW,EAAMwzsB,EAAM5rnB,IAC/Br/N,EAAS6I,EAAI0if,QAAQ,CAAC9zW,EAAMwzsB,EAAM5rnB,IAClCppN,EAAInW,EAAIsJ,IAAIpJ,GAAQwj0B,SAAS,GAC7BvtnB,EAAOptM,EAAIi+zB,UAAU7wzB,GAAGwhI,IACxByzsB,EAAO5v1B,KAAK+vG,MAAM/vG,KAAK6xB,IAAI89zB,EAAO5x1B,GAAKiC,KAAK4wB,IAAIurH,EAAMp+I,GAAKiC,KAAK4wB,IAAI+pL,EAAO58M,KAClEiC,KAAK6xB,IAAIsqH,EAAMp+I,GAAKiC,KAAK6xB,IAAI8oL,EAAO58M,KAAOA,GAEpDwC,MAAMqv1B,IAAkB,IAATA,KAClBA,EAAOD,EAAO3v1B,KAAK6xB,IAAI7xB,KAAKytB,GAAK,IAAM0uH,IAGxC3hI,KAAK200B,OAASx00B,EAAEs3V,SAAS1kW,EAAIou0B,kBAC7Bnh0B,KAAKwj0B,QAAUz90B,MAAMqv1B,GAAQ,EAAIj10B,EAAE5Z,EAAIwM,EAAI0if,QAAQ,CAACt1S,EAAMopB,EAAM6rnB,IAAO7u1B,EACvEyZ,KAAK400B,SAAWz00B,EAAExc,EAAIqG,EAAIrG,CAE3B,KAAO,CACN,IAAI+t0B,EAAUgI,EAAI1I,UAAU0I,EAAIjkV,QAAQz1e,KAAKiy0B,SAASx6e,SAAS,CAACz3V,KAAKk10B,SAAU,KAE/El10B,KAAK200B,OAAS5h1B,EAAIyu0B,mBAAmBxh0B,KAAKiy0B,SAC1Cjy0B,KAAKwj0B,QAAUxj0B,KAAK200B,OAAOpu1B,EAAIwM,EAAIyu0B,mBAAmB9P,GAASnr0B,CAChE,CAEAyZ,KAAKs00B,eACN,IAqDD,IAAIe,GAAW1qa,GAAK3nU,OAAO,CAI1BpzG,QAAS,CAIR0l1B,aAAc,EAIdC,QAAQ,GAGThsyB,WAAY,SAAU+jxB,EAAS19zB,GAC9B0F,EAAW0K,KAAMpQ,GACjBoQ,KAAKw10B,YAAYloB,EAClB,EAIAmoB,WAAY,WACX,OAAOz10B,KAAK0nvB,QACb,EAIA4E,WAAY,SAAUghE,GAErB,OADAttzB,KAAKw10B,YAAYloB,GACVttzB,KAAKu2f,QACb,EAIA/4S,QAAS,WACR,OAAQx9M,KAAK0nvB,SAAStzvB,MACvB,EAIAsh1B,kBAAmB,SAAUv10B,GAM5B,IALA,IAGIolB,EAAIC,EAHJu5B,EAAcx5D,IACd6qe,EAAW,KACXziR,EAAU6/nB,GAGLxnzB,EAAI,EAAG2vzB,EAAO310B,KAAK410B,OAAOxh1B,OAAQ4xB,EAAI2vzB,EAAM3vzB,IAGpD,IAFA,IAAIuS,EAASv4B,KAAK410B,OAAO5vzB,GAEhB3gC,EAAI,EAAGoK,EAAM8oC,EAAOnkC,OAAQ/O,EAAIoK,EAAKpK,IAAK,CAIlD,IAAIoo1B,EAAS9/nB,EAAQxtM,EAHrBolB,EAAKgT,EAAOlzC,EAAI,GAChBmgC,EAAK+S,EAAOlzC,IAEoB,GAE5Boo1B,EAAS1uxB,IACZA,EAAc0uxB,EACdr9W,EAAWziR,EAAQxtM,EAAGolB,EAAIC,GAE5B,CAKD,OAHI4qc,IACHA,EAAS73d,SAAW/S,KAAK0vB,KAAK6pC,IAExBqxa,CACR,EAIApnJ,UAAW,WAEV,IAAKhpU,KAAK4xY,KACT,MAAM,IAAIrqY,MAAM,kDAEjB,OAAO2m0B,GAAelu0B,KAAK610B,gBAAiB710B,KAAK4xY,KAAKhiZ,QAAQ8p0B,IAC/D,EAIA3wtB,UAAW,WACV,OAAO/oG,KAAK2txB,OACb,EAMAmoD,UAAW,SAAU7qF,EAAQqiE,GAK5B,OAJAA,EAAUA,GAAWttzB,KAAK610B,gBAC1B5qF,EAASuiE,EAASviE,GAClBqiE,EAAQx5zB,KAAKm3vB,GACbjrvB,KAAK2txB,QAAQ3qrB,OAAOiopB,GACbjrvB,KAAKu2f,QACb,EAEAi/U,YAAa,SAAUloB,GACtBttzB,KAAK2txB,QAAU,IAAIw/B,EACnBntzB,KAAK0nvB,SAAW1nvB,KAAK+10B,gBAAgBzoB,EACtC,EAEAuoB,cAAe,WACd,OAAOlslB,GAAO3pP,KAAK0nvB,UAAY1nvB,KAAK0nvB,SAAW1nvB,KAAK0nvB,SAAS,EAC9D,EAGAquF,gBAAiB,SAAUzoB,GAI1B,IAHA,IAAIn6zB,EAAS,GACT84sB,EAAOtid,GAAO2jkB,GAETjo0B,EAAI,EAAGoK,EAAM69zB,EAAQl5zB,OAAQ/O,EAAIoK,EAAKpK,IAC1C4mtB,GACH94sB,EAAO9N,GAAKmo0B,EAASF,EAAQjo0B,IAC7B2a,KAAK2txB,QAAQ3qrB,OAAO7vG,EAAO9N,KAE3B8N,EAAO9N,GAAK2a,KAAK+10B,gBAAgBzoB,EAAQjo0B,IAI3C,OAAO8N,CACR,EAEAqh1B,SAAU,WACT,IAAInQ,EAAW,IAAIpX,EACnBjtzB,KAAKg20B,OAAS,GACdh20B,KAAKi20B,gBAAgBj20B,KAAK0nvB,SAAU1nvB,KAAKg20B,OAAQ3R,GAE7Crk0B,KAAK2txB,QAAQ7klB,WAAau7nB,EAASv7nB,YACtC9oM,KAAKk20B,aAAe7R,EACpBrk0B,KAAKs00B,gBAEP,EAEAA,cAAe,WACd,IAAI16zB,EAAI5Z,KAAKy00B,kBACTt00B,EAAI,IAAIymN,EAAMhtM,EAAGA,GAEhB5Z,KAAKk20B,eAIVl20B,KAAK600B,UAAY,IAAI5nB,EAAO,CAC3BjtzB,KAAKk20B,aAAaxs1B,IAAI+tW,SAASt3V,GAC/BH,KAAKk20B,aAAavs1B,IAAI2J,IAAI6M,KAE5B,EAGA810B,gBAAiB,SAAU3oB,EAASn6zB,EAAQgj1B,GAC3C,IAEI9w1B,EAAG24M,EAFHiugB,EAAOqhH,EAAQ,aAAc7jmB,EAC7Bh6N,EAAM69zB,EAAQl5zB,OAGlB,GAAI63sB,EAAM,CAET,IADAjugB,EAAO,GACF34M,EAAI,EAAGA,EAAIoK,EAAKpK,IACpB24M,EAAK34M,GAAK2a,KAAK4xY,KAAK4vb,mBAAmBlU,EAAQjo0B,IAC/C8w1B,EAAgBnzuB,OAAOg7F,EAAK34M,IAE7B8N,EAAOW,KAAKkqM,EACb,MACC,IAAK34M,EAAI,EAAGA,EAAIoK,EAAKpK,IACpB2a,KAAKi20B,gBAAgB3oB,EAAQjo0B,GAAI8N,EAAQgj1B,EAG5C,EAGAC,YAAa,WACZ,IAAIr2yB,EAAS//B,KAAKog0B,UAAUzyC,QAG5B,GADA3txB,KAAK410B,OAAS,GACT510B,KAAK600B,WAAc700B,KAAK600B,UAAUz5b,WAAWr7W,GAIlD,GAAI//B,KAAKpQ,QAAQ2l1B,OAChBv10B,KAAK410B,OAAS510B,KAAKg20B,WADpB,CAKA,IACI3w1B,EAAG2gC,EAAGvU,EAAGhiB,EAAK8i0B,EAAMzyxB,EAASvH,EAD7B+9B,EAAQt2D,KAAK410B,OAGjB,IAAKvw1B,EAAI,EAAGosB,EAAI,EAAGhiB,EAAMuQ,KAAKg20B,OAAO5h1B,OAAQ/O,EAAIoK,EAAKpK,IAGrD,IAAK2gC,EAAI,EAAGusyB,GAFZh6xB,EAASv4B,KAAKg20B,OAAO3w1B,IAEK+O,OAAQ4xB,EAAIusyB,EAAO,EAAGvsyB,KAC/C8Z,EAAU6tyB,GAAYp1yB,EAAOvS,GAAIuS,EAAOvS,EAAI,GAAI+Z,EAAQ/Z,GAAG,MAI3DswC,EAAM7kD,GAAK6kD,EAAM7kD,IAAM,GACvB6kD,EAAM7kD,GAAG3d,KAAKgsC,EAAQ,IAGjBA,EAAQ,KAAOvH,EAAOvS,EAAI,IAAQA,IAAMusyB,EAAO,IACnDj8vB,EAAM7kD,GAAG3d,KAAKgsC,EAAQ,IACtBruB,KAnBH,CAuBD,EAGA4k0B,gBAAiB,WAIhB,IAHA,IAAI//wB,EAAQt2D,KAAK410B,OACbv4K,EAAYr9pB,KAAKpQ,QAAQ0l1B,aAEpBjw1B,EAAI,EAAGoK,EAAM6mE,EAAMliE,OAAQ/O,EAAIoK,EAAKpK,IAC5CixE,EAAMjxE,GAAK4xyB,GAAS3guB,EAAMjxE,GAAIg4qB,EAEhC,EAEAz7nB,QAAS,WACH5hC,KAAK4xY,OAEV5xY,KAAKo20B,cACLp20B,KAAKq20B,kBACLr20B,KAAKo00B,cACN,EAEAA,YAAa,WACZp00B,KAAKog0B,UAAUkW,YAAYt20B,KAC5B,EAGAg10B,eAAgB,SAAU700B,EAAGguF,GAC5B,IAAI9oG,EAAG2gC,EAAGvU,EAAGhiB,EAAK8i0B,EAAMlqsB,EACpBzuG,EAAI5Z,KAAKy00B,kBAEb,IAAKz00B,KAAK600B,YAAc700B,KAAK600B,UAAUrt1B,SAAS2Y,GAAM,OAAO,EAG7D,IAAK9a,EAAI,EAAGoK,EAAMuQ,KAAK410B,OAAOxh1B,OAAQ/O,EAAIoK,EAAKpK,IAG9C,IAAK2gC,EAAI,EAAuBvU,GAApB8gzB,GAFZlqsB,EAAOroH,KAAK410B,OAAOvw1B,IAEK+O,QAAmB,EAAG4xB,EAAIusyB,EAAM9gzB,EAAIuU,IAC3D,IAAKmoE,GAAiB,IAANnoE,IAEZunzB,GAAuBpt0B,EAAGkoH,EAAK52G,GAAI42G,EAAKriG,KAAOpM,EAClD,OAAO,EAIV,OAAO,CACR,IAaDy7zB,GAASpH,MAAQA,GAgDjB,IAAIl3b,GAAUs+b,GAASryuB,OAAO,CAE7BpzG,QAAS,CACR6+B,MAAM,GAGP+uL,QAAS,WACR,OAAQx9M,KAAK0nvB,SAAStzvB,SAAW4L,KAAK0nvB,SAAS,GAAGtzvB,MACnD,EAIA40U,UAAW,WAEV,IAAKhpU,KAAK4xY,KACT,MAAM,IAAIrqY,MAAM,kDAEjB,OAAOkl0B,GAAczs0B,KAAK610B,gBAAiB710B,KAAK4xY,KAAKhiZ,QAAQ8p0B,IAC9D,EAEAqc,gBAAiB,SAAUzoB,GAC1B,IAAIn6zB,EAASki1B,GAASj10B,UAAU210B,gBAAgB110B,KAAKL,KAAMstzB,GACvD79zB,EAAM0D,EAAOiB,OAMjB,OAHI3E,GAAO,GAAK0D,EAAO,aAAcs2N,GAAUt2N,EAAO,GAAG40N,OAAO50N,EAAO1D,EAAM,KAC5E0D,EAAOkP,MAEDlP,CACR,EAEAqi1B,YAAa,SAAUloB,GACtB+nB,GAASj10B,UAAUo10B,YAAYn10B,KAAKL,KAAMstzB,GACtC3jkB,GAAO3pP,KAAK0nvB,YACf1nvB,KAAK0nvB,SAAW,CAAC1nvB,KAAK0nvB,UAExB,EAEAmuF,cAAe,WACd,OAAOlslB,GAAO3pP,KAAK0nvB,SAAS,IAAM1nvB,KAAK0nvB,SAAS,GAAK1nvB,KAAK0nvB,SAAS,GAAG,EACvE,EAEA0uF,YAAa,WAGZ,IAAIr2yB,EAAS//B,KAAKog0B,UAAUzyC,QACxB/zwB,EAAI5Z,KAAKpQ,QAAQq3B,OACjB9mB,EAAI,IAAIymN,EAAMhtM,EAAGA,GAMrB,GAHAmmB,EAAS,IAAIktxB,EAAOltxB,EAAOr2C,IAAI+tW,SAASt3V,GAAI4/B,EAAOp2C,IAAI2J,IAAI6M,IAE3DH,KAAK410B,OAAS,GACT510B,KAAK600B,WAAc700B,KAAK600B,UAAUz5b,WAAWr7W,GAIlD,GAAI//B,KAAKpQ,QAAQ2l1B,OAChBv10B,KAAK410B,OAAS510B,KAAKg20B,YAIpB,IAAK,IAAqCO,EAAjClx1B,EAAI,EAAGoK,EAAMuQ,KAAKg20B,OAAO5h1B,OAAiB/O,EAAIoK,EAAKpK,KAC3Dkx1B,EAAUnK,GAAYps0B,KAAKg20B,OAAO3w1B,GAAI06C,GAAQ,IAClC3rC,QACX4L,KAAK410B,OAAO9h1B,KAAKyi1B,EAGpB,EAEAnC,YAAa,WACZp00B,KAAKog0B,UAAUkW,YAAYt20B,MAAM,EAClC,EAGAg10B,eAAgB,SAAU700B,GACzB,IACIkoH,EAAM9iG,EAAIC,EAAIngC,EAAG2gC,EAAGvU,EAAGhiB,EAAK8i0B,EAD5BnyxB,GAAS,EAGb,IAAKpgC,KAAK600B,YAAc700B,KAAK600B,UAAUrt1B,SAAS2Y,GAAM,OAAO,EAG7D,IAAK9a,EAAI,EAAGoK,EAAMuQ,KAAK410B,OAAOxh1B,OAAQ/O,EAAIoK,EAAKpK,IAG9C,IAAK2gC,EAAI,EAAuBvU,GAApB8gzB,GAFZlqsB,EAAOroH,KAAK410B,OAAOvw1B,IAEK+O,QAAmB,EAAG4xB,EAAIusyB,EAAM9gzB,EAAIuU,IAC3DT,EAAK8iG,EAAKriG,GACVR,EAAK6iG,EAAK52G,GAEJ8T,EAAG5hC,EAAIwc,EAAExc,GAAQ6hC,EAAG7hC,EAAIwc,EAAExc,GAAQwc,EAAE5Z,GAAKi/B,EAAGj/B,EAAIg/B,EAAGh/B,IAAM4Z,EAAExc,EAAI4hC,EAAG5hC,IAAM6hC,EAAG7hC,EAAI4hC,EAAG5hC,GAAK4hC,EAAGh/B,IAC/F65C,GAAUA,GAMb,OAAOA,GAAUi1yB,GAASj10B,UAAU400B,eAAe300B,KAAKL,KAAMG,GAAG,EAClE,IA+BD,IAAIq20B,GAAU9G,GAAa1suB,OAAO,CAoDjCz5D,WAAY,SAAU00J,EAASruM,GAC9B0F,EAAW0K,KAAMpQ,GAEjBoQ,KAAK6hD,QAAU,CAAC,EAEZo8I,GACHj+L,KAAKy20B,QAAQx4oB,EAEf,EAIAw4oB,QAAS,SAAUx4oB,GAClB,IACI54M,EAAGoK,EAAK87M,EADR5M,EAAW5uL,EAAQkuL,GAAWA,EAAUA,EAAQU,SAGpD,GAAIA,EAAU,CACb,IAAKt5M,EAAI,EAAGoK,EAAMkvM,EAASvqM,OAAQ/O,EAAIoK,EAAKpK,MAE3CkmN,EAAU5M,EAASt5M,IACPw5M,YAAc0M,EAAQ1N,UAAY0N,EAAQ5M,UAAY4M,EAAQzN,cACzE99L,KAAKy20B,QAAQlroB,GAGf,OAAOvrM,IACR,CAEA,IAAIpQ,EAAUoQ,KAAKpQ,QAEnB,GAAIA,EAAQqB,SAAWrB,EAAQqB,OAAOgtM,GAAY,OAAOj+L,KAEzD,IAAI2+X,EAAQ+3c,GAAgBz4oB,EAASruM,GACrC,OAAK+uY,GAGLA,EAAMpzL,QAAUoroB,GAAU14oB,GAE1B0gM,EAAM9pY,eAAiB8pY,EAAM/uY,QAC7BoQ,KAAK420B,WAAWj4c,GAEZ/uY,EAAQin1B,eACXjn1B,EAAQin1B,cAAc54oB,EAAS0gM,GAGzB3+X,KAAK6ia,SAASlkC,IAXb3+X,IAYT,EAKA420B,WAAY,SAAUj4c,GACrB,YAAc7nY,IAAV6nY,EACI3+X,KAAKmsvB,UAAUnsvB,KAAK420B,WAAY520B,OAGxC2+X,EAAM/uY,QAAUozG,EAAO,CAAC,EAAG27R,EAAM9pY,gBACjCmL,KAAK820B,eAAen4c,EAAO3+X,KAAKpQ,QAAQ85B,OACjC1pB,KACR,EAIA4lE,SAAU,SAAUl8C,GACnB,OAAO1pB,KAAKmsvB,UAAU,SAAUxtX,GAC/B3+X,KAAK820B,eAAen4c,EAAOj1W,EAC5B,EAAG1pB,KACJ,EAEA820B,eAAgB,SAAUn4c,EAAOj1W,GAC5Bi1W,EAAM/4T,WACY,mBAAVl8C,IACVA,EAAQA,EAAMi1W,EAAMpzL,UAErBozL,EAAM/4T,SAASl8C,GAEjB,IAUD,SAASgtzB,GAAgBz4oB,EAASruM,GAEjC,IAKIq7vB,EAAQqiE,EAASjo0B,EAAGoK,EALpBouM,EAA4B,YAAjBI,EAAQjuL,KAAqBiuL,EAAQJ,SAAWI,EAC3DG,EAASP,EAAWA,EAASC,YAAc,KAC3Cn9H,EAAS,GACTo2wB,EAAenn1B,GAAWA,EAAQmn1B,aAClCC,EAAkBpn1B,GAAWA,EAAQqn1B,gBAAkBA,GAG3D,IAAK74oB,IAAWP,EACf,OAAO,KAGR,OAAQA,EAAS7tL,MACjB,IAAK,QAEJ,OAAOkn0B,GAAcH,EAAc94oB,EADnCgtjB,EAAS+rF,EAAgB54oB,GAC2BxuM,GAErD,IAAK,aACJ,IAAKvK,EAAI,EAAGoK,EAAM2uM,EAAOhqM,OAAQ/O,EAAIoK,EAAKpK,IACzC4lwB,EAAS+rF,EAAgB54oB,EAAO/4M,IAChCs7E,EAAO7sE,KAAKoj1B,GAAcH,EAAc94oB,EAASgtjB,EAAQr7vB,IAE1D,OAAO,IAAI8/0B,GAAa/uwB,GAEzB,IAAK,aACL,IAAK,kBAEJ,OADA2svB,EAAU6pB,GAAgB/4oB,EAA0B,eAAlBP,EAAS7tL,KAAwB,EAAI,EAAGgn0B,GACnE,IAAI3B,GAAS/nB,EAAS19zB,GAE9B,IAAK,UACL,IAAK,eAEJ,OADA09zB,EAAU6pB,GAAgB/4oB,EAA0B,YAAlBP,EAAS7tL,KAAqB,EAAI,EAAGgn0B,GAChE,IAAIjgc,GAAQu2a,EAAS19zB,GAE7B,IAAK,qBACJ,IAAKvK,EAAI,EAAGoK,EAAMouM,EAASgB,WAAWzqM,OAAQ/O,EAAIoK,EAAKpK,IAAK,CAC3D,IAAI+x1B,EAAWV,GAAgB,CAC9B74oB,SAAUA,EAASgB,WAAWx5M,GAC9B2qB,KAAM,UACN00B,WAAYu5J,EAAQv5J,YAClB90C,GAECwn1B,GACHz2wB,EAAO7sE,KAAKsj1B,EAEd,CACA,OAAO,IAAI1H,GAAa/uwB,GAEzB,IAAK,oBACJ,IAAKt7E,EAAI,EAAGoK,EAAMouM,EAASc,SAASvqM,OAAQ/O,EAAIoK,EAAKpK,IAAK,CACzD,IAAIgy1B,EAAeX,GAAgB74oB,EAASc,SAASt5M,GAAIuK,GAErDyn1B,GACH12wB,EAAO7sE,KAAKuj1B,EAEd,CACA,OAAO,IAAI3H,GAAa/uwB,GAEzB,QACC,MAAM,IAAIp5D,MAAM,2BAElB,CAEA,SAAS2v0B,GAAcI,EAAgBr5oB,EAASgtjB,EAAQr7vB,GACvD,OAAO0n1B,EACNA,EAAer5oB,EAASgtjB,GACxB,IAAIknF,GAAOlnF,EAAQr7vB,GAAWA,EAAQ2n1B,uBAAyB3n1B,EACjE,CAKA,SAASqn1B,GAAe74oB,GACvB,OAAO,IAAIqrB,EAAOrrB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAChD,CAMA,SAAS+4oB,GAAgB/4oB,EAAQo5oB,EAAYR,GAG5C,IAFA,IAEqC/rF,EAFjCqiE,EAAU,GAELjo0B,EAAI,EAAGoK,EAAM2uM,EAAOhqM,OAAgB/O,EAAIoK,EAAKpK,IACrD4lwB,EAASusF,EACRL,GAAgB/4oB,EAAO/4M,GAAImy1B,EAAa,EAAGR,IAC1CA,GAAmBC,IAAgB74oB,EAAO/4M,IAE5Cio0B,EAAQx5zB,KAAKm3vB,GAGd,OAAOqiE,CACR,CAKA,SAASmqB,GAAexsF,EAAQzyqB,GAE/B,YAAsB1hF,KADtBm0vB,EAASuiE,EAASviE,IACJ58Y,IACb,CAACw8c,EAAU5/D,EAAO1hiB,IAAK/wI,GAAYqyuB,EAAU5/D,EAAOtpnB,IAAKnpD,GAAYqyuB,EAAU5/D,EAAO58Y,IAAK71R,IAC3F,CAACqyuB,EAAU5/D,EAAO1hiB,IAAK/wI,GAAYqyuB,EAAU5/D,EAAOtpnB,IAAKnpD,GAC3D,CAMA,SAASk/vB,GAAgBpqB,EAASkqB,EAAYrpvB,EAAQ3V,GAGrD,IAFA,IAAI4lH,EAAS,GAEJ/4M,EAAI,EAAGoK,EAAM69zB,EAAQl5zB,OAAQ/O,EAAIoK,EAAKpK,IAE9C+4M,EAAOtqM,KAAK0j1B,EACXE,GAAgBpqB,EAAQjo0B,GAAIskQ,GAAO2jkB,EAAQjo0B,IAAM,EAAImy1B,EAAa,EAAGrpvB,EAAQ3V,GAC7Ei/vB,GAAenqB,EAAQjo0B,GAAImzF,IAO7B,OAJKg/vB,GAAcrpvB,GAAUiwG,EAAOhqM,OAAS,GAC5CgqM,EAAOtqM,KAAKsqM,EAAO,GAAGtjM,SAGhBsjM,CACR,CAEA,SAASu5oB,GAAWh5c,EAAOi5c,GAC1B,OAAOj5c,EAAMpzL,QACZvoG,EAAO,CAAC,EAAG27R,EAAMpzL,QAAS,CAAC1N,SAAU+5oB,IACrCjB,GAAUiB,EACZ,CAIA,SAASjB,GAAU14oB,GAClB,MAAqB,YAAjBA,EAAQjuL,MAAuC,sBAAjBiuL,EAAQjuL,KAClCiuL,EAGD,CACNjuL,KAAM,UACN00B,WAAY,CAAC,EACbm5J,SAAUI,EAEZ,CAEA,IAAI45oB,GAAiB,CACpBhyF,UAAW,SAAUrtqB,GACpB,OAAOm/vB,GAAW330B,KAAM,CACvBgQ,KAAM,QACN8tL,YAAa25oB,GAAez30B,KAAKqrvB,YAAa7yqB,IAEhD,GA2HD,SAASs/vB,GAAQ75oB,EAASruM,GACzB,OAAO,IAAI4m1B,GAAQv4oB,EAASruM,EAC7B,CArHAui1B,GAAOvvgB,QAAQi1gB,IAMfxloB,GAAOuwH,QAAQi1gB,IACfnD,GAAa9xgB,QAAQi1gB,IAOrBxC,GAASzygB,QAAQ,CAChBijb,UAAW,SAAUrtqB,GACpB,IAAIs6I,GAAS62B,GAAO3pP,KAAK0nvB,UAIzB,OAAOiwF,GAAW330B,KAAM,CACvBgQ,MAAO8iN,EAAQ,QAAU,IAAM,aAC/Bh1B,YAJY45oB,GAAgB130B,KAAK0nvB,SAAU50hB,EAAQ,EAAI,GAAG,EAAOt6I,IAMnE,IAODu+T,GAAQn0E,QAAQ,CACfijb,UAAW,SAAUrtqB,GACpB,IAAIu/vB,GAASpulB,GAAO3pP,KAAK0nvB,UACrB50hB,EAAQilnB,IAAUpulB,GAAO3pP,KAAK0nvB,SAAS,IAEvCtpjB,EAASs5oB,GAAgB130B,KAAK0nvB,SAAU50hB,EAAQ,EAAIilnB,EAAQ,EAAI,GAAG,EAAMv/vB,GAM7E,OAJKu/vB,IACJ35oB,EAAS,CAACA,IAGJu5oB,GAAW330B,KAAM,CACvBgQ,MAAO8iN,EAAQ,QAAU,IAAM,UAC/Bh1B,YAAaM,GAEf,IAKDoxoB,GAAW5sgB,QAAQ,CAClBv5H,aAAc,SAAU7wH,GACvB,IAAI4lH,EAAS,GAMb,OAJAp+L,KAAKmsvB,UAAU,SAAUxtX,GACxBvgM,EAAOtqM,KAAK6qY,EAAMknX,UAAUrtqB,GAAWqlH,SAASC,YACjD,GAEO65oB,GAAW330B,KAAM,CACvBgQ,KAAM,aACN8tL,YAAaM,GAEf,EAKAynjB,UAAW,SAAUrtqB,GAEpB,IAAIxoE,EAAOhQ,KAAKurM,SAAWvrM,KAAKurM,QAAQ1N,UAAY79L,KAAKurM,QAAQ1N,SAAS7tL,KAE1E,GAAa,eAATA,EACH,OAAOhQ,KAAKqpM,aAAa7wH,GAG1B,IAAI8lH,EAAgC,uBAATtuL,EACvBgo0B,EAAQ,GAmBZ,OAjBAh40B,KAAKmsvB,UAAU,SAAUxtX,GACxB,GAAIA,EAAMknX,UAAW,CACpB,IAAI9/pB,EAAO44S,EAAMknX,UAAUrtqB,GAC3B,GAAI8lH,EACH05oB,EAAMlk1B,KAAKiyF,EAAK83G,cACV,CACN,IAAI0N,EAAUoroB,GAAU5wvB,GAEH,sBAAjBwlH,EAAQv7L,KACXgo0B,EAAMlk1B,KAAKgN,MAAMk30B,EAAOzsoB,EAAQ5M,UAEhCq5oB,EAAMlk1B,KAAKy3M,EAEb,CACD,CACD,GAEIjN,EACIq5oB,GAAW330B,KAAM,CACvB6+L,WAAYm5oB,EACZho0B,KAAM,uBAID,CACNA,KAAM,oBACN2uL,SAAUq5oB,EAEZ,IAaD,IAAI5soB,GAAU0soB,GAkBVG,GAAer5c,GAAM57R,OAAO,CAI/BpzG,QAAS,CAGR6N,QAAS,EAIT4wW,IAAK,GAILonG,aAAa,EAMbx1E,aAAa,EAIbi4c,gBAAiB,GAIjBl3Z,OAAQ,EAIRl3U,UAAW,IAGZvgE,WAAY,SAAUkkD,EAAK1tD,EAAQnwC,GAClCoQ,KAAKwrF,KAAOiC,EACZztF,KAAK2txB,QAAU4/B,EAAextxB,GAE9BzqC,EAAW0K,KAAMpQ,EAClB,EAEA88U,MAAO,WACD1sU,KAAKm40B,SACTn40B,KAAKo40B,aAEDp40B,KAAKpQ,QAAQ6N,QAAU,GAC1BuC,KAAKuz0B,kBAIHvz0B,KAAKpQ,QAAQ6ld,cAChBxrW,GAASjqG,KAAKm40B,OAAQ,uBACtBn40B,KAAKgv0B,qBAAqBhv0B,KAAKm40B,SAGhCn40B,KAAKwkkB,UAAUr0e,YAAYnwF,KAAKm40B,QAChCn40B,KAAKi00B,QACN,EAEA9mgB,SAAU,WACTvqS,GAAO5iC,KAAKm40B,QACRn40B,KAAKpQ,QAAQ6ld,aAChBz1c,KAAKiv0B,wBAAwBjv0B,KAAKm40B,OAEpC,EAIA79M,WAAY,SAAU78nB,GAMrB,OALAuC,KAAKpQ,QAAQ6N,QAAUA,EAEnBuC,KAAKm40B,QACRn40B,KAAKuz0B,iBAECvz0B,IACR,EAEA4lE,SAAU,SAAUyywB,GAInB,OAHIA,EAAU560B,SACbuC,KAAKs6nB,WAAW+9M,EAAU560B,SAEpBuC,IACR,EAIAmrvB,aAAc,WAIb,OAHInrvB,KAAK4xY,MACR4kb,GAAQx2zB,KAAKm40B,QAEPn40B,IACR,EAIA2v0B,YAAa,WAIZ,OAHI3v0B,KAAK4xY,MACR6kb,GAAOz2zB,KAAKm40B,QAENn40B,IACR,EAIAs40B,OAAQ,SAAU7qvB,GAMjB,OALAztF,KAAKwrF,KAAOiC,EAERztF,KAAKm40B,SACRn40B,KAAKm40B,OAAO9wuB,IAAM5Z,GAEZztF,IACR,EAIAu40B,UAAW,SAAUx4yB,GAMpB,OALA//B,KAAK2txB,QAAU4/B,EAAextxB,GAE1B//B,KAAK4xY,MACR5xY,KAAKi00B,SAECj00B,IACR,EAEAugjB,UAAW,WACV,IAAIh3hB,EAAS,CACZgrJ,KAAMv0K,KAAKi00B,OACXvB,UAAW1y0B,KAAKi00B,QAOjB,OAJIj00B,KAAK66zB,gBACRtxyB,EAAOivzB,SAAWx40B,KAAK6k0B,cAGjBt7yB,CACR,EAIAuuY,UAAW,SAAUnya,GAGpB,OAFAqa,KAAKpQ,QAAQoxb,OAASr7b,EACtBqa,KAAK0z0B,gBACE1z0B,IACR,EAIA+oG,UAAW,WACV,OAAO/oG,KAAK2txB,OACb,EAKAx2tB,WAAY,WACX,OAAOn3D,KAAKm40B,MACb,EAEAC,WAAY,WACX,IAAIK,EAA2C,QAAtBz40B,KAAKwrF,KAAKwlB,QAC/B0kI,EAAM11O,KAAKm40B,OAASM,EAAqBz40B,KAAKwrF,KAAO+quB,GAAS,OAElEtstB,GAASyrI,EAAK,uBACV11O,KAAK66zB,eAAiB5wtB,GAASyrI,EAAK,yBACpC11O,KAAKpQ,QAAQk6G,WAAaG,GAASyrI,EAAK11O,KAAKpQ,QAAQk6G,WAEzD4rI,EAAIgjmB,cAAgB9tB,EACpBl1kB,EAAIijmB,YAAc/tB,EAIlBl1kB,EAAI+C,OAAS/8L,EAAK17C,KAAKw1Z,KAAMx1Z,KAAM,QACnC01O,EAAIgD,QAAUh9L,EAAK17C,KAAK440B,gBAAiB540B,KAAM,UAE3CA,KAAKpQ,QAAQqwY,aAA4C,KAA7BjgY,KAAKpQ,QAAQqwY,eAC5CvqJ,EAAIuqJ,aAA2C,IAA7BjgY,KAAKpQ,QAAQqwY,YAAuB,GAAKjgY,KAAKpQ,QAAQqwY,aAGrEjgY,KAAKpQ,QAAQoxb,QAChBhhb,KAAK0z0B,gBAGF+E,EACHz40B,KAAKwrF,KAAOkqJ,EAAIruI,KAIjBquI,EAAIruI,IAAMrnG,KAAKwrF,KACfkqJ,EAAI24H,IAAMruW,KAAKpQ,QAAQy+W,IACxB,EAEAw2d,aAAc,SAAU7/0B,GACvB,IAAI4lC,EAAQ5qB,KAAK4xY,KAAK+pb,aAAa320B,EAAEuvL,MACjC3vL,EAASob,KAAK4xY,KAAKiyb,8BAA8B7j0B,KAAK2txB,QAAS3oyB,EAAEuvL,KAAMvvL,EAAEmY,QAAQzT,IAErFyzC,GAAan9B,KAAKm40B,OAAQvz1B,EAAQgmC,EACnC,EAEAqpzB,OAAQ,WACP,IAAIr0c,EAAQ5/X,KAAKm40B,OACbp4yB,EAAS,IAAIktxB,EACTjtzB,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAK2txB,QAAQ4hC,gBAC1CvvzB,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAK2txB,QAAQ+hC,iBAC9C38yB,EAAOgtB,EAAOi5X,UAElBrC,GAAY/2B,EAAO7/V,EAAOr2C,KAE1Bk2Y,EAAMl2W,MAAMhjC,MAASqsB,EAAKxsB,EAAI,KAC9Bq5Y,EAAMl2W,MAAM9iC,OAASmsB,EAAKpvB,EAAI,IAC/B,EAEA4v1B,eAAgB,WACfj5M,GAAWt6nB,KAAKm40B,OAAQn40B,KAAKpQ,QAAQ6N,QACtC,EAEAi20B,cAAe,WACV1z0B,KAAKm40B,aAAkCrh1B,IAAxBkJ,KAAKpQ,QAAQoxb,QAAgD,OAAxBhhb,KAAKpQ,QAAQoxb,SACpEhhb,KAAKm40B,OAAOzuzB,MAAMs3Z,OAAShhb,KAAKpQ,QAAQoxb,OAE1C,EAEA43Z,gBAAiB,WAGhB540B,KAAKw1Z,KAAK,SAEV,IAAIqjb,EAAW740B,KAAKpQ,QAAQso1B,gBACxBW,GAAY740B,KAAKwrF,OAASqtvB,IAC7B740B,KAAKwrF,KAAOqtvB,EACZ740B,KAAKm40B,OAAO9wuB,IAAMwxuB,EAEpB,EAIA7vgB,UAAW,WACV,OAAOhpU,KAAK2txB,QAAQ3kd,WACrB,IA6BG8vgB,GAAeb,GAAaj1uB,OAAO,CAItCpzG,QAAS,CAIRod,UAAU,EAIVusB,MAAM,EAKNw/yB,iBAAiB,EAIjB7r0B,OAAO,EAIPD,aAAa,GAGdmr0B,WAAY,WACX,IAAIK,EAA2C,UAAtBz40B,KAAKwrF,KAAKwlB,QAC/BzmE,EAAMvqC,KAAKm40B,OAASM,EAAqBz40B,KAAKwrF,KAAO+quB,GAAS,SAalE,GAXAtstB,GAAS1/D,EAAK,uBACVvqC,KAAK66zB,eAAiB5wtB,GAAS1/D,EAAK,yBACpCvqC,KAAKpQ,QAAQk6G,WAAaG,GAAS1/D,EAAKvqC,KAAKpQ,QAAQk6G,WAEzDv/D,EAAImuyB,cAAgB9tB,EACpBrgxB,EAAIouyB,YAAc/tB,EAIlBrgxB,EAAIyuyB,aAAet9xB,EAAK17C,KAAKw1Z,KAAMx1Z,KAAM,QAErCy40B,EAAJ,CAGC,IAFA,IAAIQ,EAAiB1uyB,EAAIigJ,qBAAqB,UAC1Cz4K,EAAU,GACLiU,EAAI,EAAGA,EAAIizzB,EAAe7k1B,OAAQ4xB,IAC1CjU,EAAQje,KAAKml1B,EAAejzzB,GAAGqhF,KAGhCrnG,KAAKwrF,KAAQytvB,EAAe7k1B,OAAS,EAAK2d,EAAU,CAACw4B,EAAI88D,IAE1D,KATA,CAWKt3F,EAAQ/P,KAAKwrF,QAASxrF,KAAKwrF,KAAO,CAACxrF,KAAKwrF,QAExCxrF,KAAKpQ,QAAQmp1B,iBAAmBjv1B,OAAOsW,UAAUxU,eAAeyU,KAAKkqC,EAAI7gB,MAAO,eACpF6gB,EAAI7gB,MAAiB,UAAI,QAE1B6gB,EAAIv9B,WAAahN,KAAKpQ,QAAQod,SAC9Bu9B,EAAIhR,OAASv5B,KAAKpQ,QAAQ2pC,KAC1BgR,EAAIr9B,QAAUlN,KAAKpQ,QAAQsd,MAC3Bq9B,EAAIt9B,cAAgBjN,KAAKpQ,QAAQqd,YACjC,IAAK,IAAI5nB,EAAI,EAAGA,EAAI2a,KAAKwrF,KAAKp3F,OAAQ/O,IAAK,CAC1C,IAAIksB,EAASglzB,GAAS,UACtBhlzB,EAAO81F,IAAMrnG,KAAKwrF,KAAKnmG,GACvBklD,EAAI4lD,YAAY5+E,EACjB,CAfA,CAgBD,IAqCD,IAAI2n0B,GAAajB,GAAaj1uB,OAAO,CACpCo1uB,WAAY,WACX,IAAI76yB,EAAKv9B,KAAKm40B,OAASn40B,KAAKwrF,KAE5Bye,GAAS1sE,EAAI,uBACTv9B,KAAK66zB,eAAiB5wtB,GAAS1sE,EAAI,yBACnCv9B,KAAKpQ,QAAQk6G,WAAaG,GAAS1sE,EAAIv9B,KAAKpQ,QAAQk6G,WAExDvsE,EAAGm7yB,cAAgB9tB,EACnBrtxB,EAAGo7yB,YAAc/tB,CAClB,IAwBD,IAAIuuB,GAAav6c,GAAM57R,OAAO,CAI7BpzG,QAAS,CAGR6ld,aAAa,EAIb7wd,OAAQ,CAAC,EAAG,GAIZklH,UAAW,GAIXi/iB,UAAMjypB,EAKN+vG,QAAS,IAGVt9D,WAAY,SAAU35C,EAAS2hB,GAC1B3hB,IAAYA,aAAmB65N,GAAU15M,EAAQngB,KACpDoQ,KAAKiy0B,QAAUzkB,EAAS59zB,GACxB0F,EAAW0K,KAAMuR,KAEjBjc,EAAW0K,KAAMpQ,GACjBoQ,KAAKo50B,QAAU7n0B,GAEZvR,KAAKpQ,QAAQi3G,UAChB7mG,KAAK2rvB,SAAW3rvB,KAAKpQ,QAAQi3G,QAE/B,EAKAwyuB,OAAQ,SAAUtm1B,GAKjB,OAJAA,EAAMoB,UAAUC,OAASrB,EAAMiN,KAAKo50B,QAAQxnc,MACnCo2b,SAASho0B,OACjBjN,EAAI8va,SAAS7ia,MAEPA,IACR,EAMAyN,MAAO,WAIN,OAHIzN,KAAK4xY,MACR5xY,KAAK4xY,KAAKk2W,YAAY9nvB,MAEhBA,IACR,EAMAgoP,OAAQ,SAAU22I,GAcjB,OAbI3+X,KAAK4xY,KACR5xY,KAAKyN,SAEDtZ,UAAUC,OACb4L,KAAKo50B,QAAUz6c,EAEfA,EAAQ3+X,KAAKo50B,QAEdp50B,KAAKs50B,eAGLt50B,KAAKq50B,OAAO16c,EAAMiT,OAEZ5xY,IACR,EAEA0sU,MAAO,SAAU35U,GAChBiN,KAAK66zB,cAAgB9n0B,EAAI8n0B,cAEpB76zB,KAAKqjkB,YACTrjkB,KAAKonvB,cAGFr0vB,EAAIgv0B,eACPznM,GAAWt6nB,KAAKqjkB,WAAY,GAG7B17jB,aAAa3H,KAAKu50B,gBAClBv50B,KAAKwkkB,UAAUr0e,YAAYnwF,KAAKqjkB,YAChCrjkB,KAAK5J,SAEDrD,EAAIgv0B,eACPznM,GAAWt6nB,KAAKqjkB,WAAY,GAG7BrjkB,KAAKmrvB,eAEDnrvB,KAAKpQ,QAAQ6ld,cAChBxrW,GAASjqG,KAAKqjkB,WAAY,uBAC1BrjkB,KAAKgv0B,qBAAqBhv0B,KAAKqjkB,YAEjC,EAEAl2P,SAAU,SAAUp6U,GACfA,EAAIgv0B,eACPznM,GAAWt6nB,KAAKqjkB,WAAY,GAC5BrjkB,KAAKu50B,eAAiB9x0B,WAAWi0C,EAAK9Y,QAAQ9rC,EAAWkJ,KAAKqjkB,YAAa,MAE3EzgiB,GAAO5iC,KAAKqjkB,YAGTrjkB,KAAKpQ,QAAQ6ld,cAChB/rW,GAAY1pG,KAAKqjkB,WAAY,uBAC7BrjkB,KAAKiv0B,wBAAwBjv0B,KAAKqjkB,YAEpC,EAKAgoL,UAAW,WACV,OAAOrrvB,KAAKiy0B,OACb,EAIA7nF,UAAW,SAAUa,GAMpB,OALAjrvB,KAAKiy0B,QAAUzkB,EAASviE,GACpBjrvB,KAAK4xY,OACR5xY,KAAKis0B,kBACLjs0B,KAAKwx0B,cAECxx0B,IACR,EAIAw2I,WAAY,WACX,OAAOx2I,KAAK2rvB,QACb,EAKA6tF,WAAY,SAAU3yuB,GAGrB,OAFA7mG,KAAK2rvB,SAAW9kpB,EAChB7mG,KAAK5J,SACE4J,IACR,EAIAm3D,WAAY,WACX,OAAOn3D,KAAKqjkB,UACb,EAIAjtkB,OAAQ,WACF4J,KAAK4xY,OAEV5xY,KAAKqjkB,WAAW35iB,MAAM4/E,WAAa,SAEnCtpG,KAAKy50B,iBACLz50B,KAAK4/D,gBACL5/D,KAAKis0B,kBAELjs0B,KAAKqjkB,WAAW35iB,MAAM4/E,WAAa,GAEnCtpG,KAAKwx0B,aACN,EAEAjxR,UAAW,WACV,IAAIh3hB,EAAS,CACZgrJ,KAAMv0K,KAAKis0B,gBACXyG,UAAW1y0B,KAAKis0B,iBAMjB,OAHIjs0B,KAAK66zB,gBACRtxyB,EAAOivzB,SAAWx40B,KAAK6k0B,cAEjBt7yB,CACR,EAIAmwzB,OAAQ,WACP,QAAS150B,KAAK4xY,MAAQ5xY,KAAK4xY,KAAKo2b,SAASho0B,KAC1C,EAIAmrvB,aAAc,WAIb,OAHInrvB,KAAK4xY,MACR4kb,GAAQx2zB,KAAKqjkB,YAEPrjkB,IACR,EAIA2v0B,YAAa,WAIZ,OAHI3v0B,KAAK4xY,MACR6kb,GAAOz2zB,KAAKqjkB,YAENrjkB,IACR,EAGAs50B,aAAc,SAAUruF,GACvB,IAAI15uB,EAASvR,KAAKo50B,QAClB,IAAK7n0B,EAAOqgY,KAAQ,OAAO,EAE3B,GAAIrgY,aAAkBm+zB,GAAc,CACnCn+zB,EAAS,KACT,IAAIovD,EAAS3gE,KAAKo50B,QAAQv3xB,QAC1B,IAAK,IAAI9jD,KAAM4iE,EACd,GAAIA,EAAO5iE,GAAI6zY,KAAM,CACpBrgY,EAASovD,EAAO5iE,GAChB,KACD,CAED,IAAKwT,EAAU,OAAO,EAGtBvR,KAAKo50B,QAAU7n0B,CAChB,CAEA,IAAK05uB,EACJ,GAAI15uB,EAAOy3T,UACViib,EAAS15uB,EAAOy3T,iBACV,GAAIz3T,EAAO85uB,UACjBJ,EAAS15uB,EAAO85uB,gBACV,KAAI95uB,EAAOw3F,UAGjB,MAAM,IAAIxhG,MAAM,sCAFhB0jvB,EAAS15uB,EAAOw3F,YAAYigO,WAG7B,CASD,OAPAhpU,KAAKoqvB,UAAUa,GAEXjrvB,KAAK4xY,MAER5xY,KAAK5J,UAGC,CACR,EAEAqj1B,eAAgB,WACf,GAAKz50B,KAAK2rvB,SAAV,CAEA,IAAI5kwB,EAAOiZ,KAAK250B,aACZ9yuB,EAAoC,mBAAlB7mG,KAAK2rvB,SAA2B3rvB,KAAK2rvB,SAAS3rvB,KAAKo50B,SAAWp50B,MAAQA,KAAK2rvB,SAEjG,GAAuB,iBAAZ9kpB,EACV9/G,EAAK6jM,UAAY/jF,MACX,CACN,KAAO9/G,EAAKm4Z,iBACXn4Z,EAAKmpG,YAAYnpG,EAAK6hI,YAEvB7hI,EAAKopG,YAAY0W,EAClB,CAMA7mG,KAAKw1Z,KAAK,gBAlBoB,CAmB/B,EAEAy2a,gBAAiB,WAChB,GAAKjs0B,KAAK4xY,KAAV,CAEA,IAAIr/X,EAAMvS,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKiy0B,SACxCrt1B,EAASoo0B,EAAQhtzB,KAAKpQ,QAAQhL,QAC9B2mU,EAASvrT,KAAK450B,aAEd550B,KAAK66zB,cACRlka,GAAY32Z,KAAKqjkB,WAAY9wjB,EAAIjf,IAAIi4T,IAErC3mU,EAASA,EAAO0O,IAAIif,GAAKjf,IAAIi4T,GAG9B,IAAIrhU,EAAS8V,KAAK650B,kBAAoBj11B,EAAOjB,EACzCwG,EAAO6V,KAAK850B,gBAAkBt01B,KAAK+F,MAAMyU,KAAK+50B,gBAAkB,GAAKn11B,EAAO2B,EAGhFyZ,KAAKqjkB,WAAW35iB,MAAMx/B,OAASA,EAAS,KACxC8V,KAAKqjkB,WAAW35iB,MAAMv/B,KAAOA,EAAO,IAjBV,CAkB3B,EAEAyv1B,WAAY,WACX,MAAO,CAAC,EAAG,EACZ,IAID5m1B,GAAI4vU,QAAQ,CACXo3gB,aAAc,SAAUC,EAAcpzuB,EAASokpB,EAAQr7vB,GACtD,IAAI4oO,EAAU3xH,EAOd,OANM2xH,aAAmByhnB,IACxBzhnB,EAAU,IAAIyhnB,EAAarq1B,GAAS4p1B,WAAW3yuB,IAE5CokpB,GACHzyhB,EAAQ4xhB,UAAUa,GAEZzyhB,CACR,IAIDomK,GAAMh8D,QAAQ,CACbo3gB,aAAc,SAAUC,EAAct/iB,EAAK9zL,EAASj3G,GACnD,IAAI4oO,EAAU3xH,EAQd,OAPI2xH,aAAmByhnB,GACtB3k1B,EAAWkjO,EAAS5oO,GACpB4oO,EAAQ4gnB,QAAUp50B,OAElBw4N,EAAWmiE,IAAQ/qS,EAAW+qS,EAAM,IAAIs/iB,EAAarq1B,EAASoQ,OACtDw50B,WAAW3yuB,GAEb2xH,CACR,IAqCD,IAAI0hnB,GAAQf,GAAWn2uB,OAAO,CAI7BpzG,QAAS,CAGRm5pB,KAAM,YAINnkqB,OAAQ,CAAC,EAAG,GAIZgsC,SAAU,IAIVkliB,SAAU,GAOVv9gB,UAAW,KAKXw5xB,SAAS,EAKToI,sBAAuB,KAKvBC,0BAA2B,KAI3BnzF,eAAgB,CAAC,EAAG,GAKpBozF,YAAY,EAIZ9qd,aAAa,EAKb+qd,WAAW,EAKXC,kBAAkB,EAQlBzwuB,UAAW,IAOZuvuB,OAAQ,SAAUtm1B,GAQjB,QAPAA,EAAMoB,UAAUC,OAASrB,EAAMiN,KAAKo50B,QAAQxnc,MAEnCo2b,SAASho0B,OAASjN,EAAI24vB,QAAU34vB,EAAI24vB,OAAO97vB,QAAQ0q1B,WAC3Dvn1B,EAAI+0vB,YAAY/0vB,EAAI24vB,QAErB34vB,EAAI24vB,OAAS1rvB,KAENm50B,GAAW/40B,UAAUi50B,OAAOh50B,KAAKL,KAAMjN,EAC/C,EAEA25U,MAAO,SAAU35U,GAChBom1B,GAAW/40B,UAAUssU,MAAMrsU,KAAKL,KAAMjN,GAMtCA,EAAIyia,KAAK,YAAa,CAACxwU,MAAOhlF,OAE1BA,KAAKo50B,UAKRp50B,KAAKo50B,QAAQ5jb,KAAK,YAAa,CAACxwU,MAAOhlF,OAAO,GAGxCA,KAAKo50B,mBAAmBzua,IAC7B3qa,KAAKo50B,QAAQzuuB,GAAG,WAAY24J,IAG/B,EAEA6pE,SAAU,SAAUp6U,GACnBom1B,GAAW/40B,UAAU+sU,SAAS9sU,KAAKL,KAAMjN,GAMzCA,EAAIyia,KAAK,aAAc,CAACxwU,MAAOhlF,OAE3BA,KAAKo50B,UAKRp50B,KAAKo50B,QAAQ5jb,KAAK,aAAc,CAACxwU,MAAOhlF,OAAO,GACzCA,KAAKo50B,mBAAmBzua,IAC7B3qa,KAAKo50B,QAAQnstB,IAAI,WAAYq2I,IAGhC,EAEAi9S,UAAW,WACV,IAAIh3hB,EAAS4vzB,GAAW/40B,UAAUmgjB,UAAUlgjB,KAAKL,MAUjD,YARkClJ,IAA9BkJ,KAAKpQ,QAAQ4q1B,aAA6Bx60B,KAAKpQ,QAAQ4q1B,aAAex60B,KAAK4xY,KAAKhiZ,QAAQ6q1B,qBAC3FlxzB,EAAOmxzB,SAAW160B,KAAKyN,OAGpBzN,KAAKpQ,QAAQyq1B,aAChB9wzB,EAAOoxzB,QAAU360B,KAAKwx0B,YAGhBjozB,CACR,EAEA69tB,YAAa,WACZ,IAAIlytB,EAAS,gBACT4wB,EAAY9lD,KAAKqjkB,WAAakzP,GAAS,MAC1CrhyB,EAAS,KAAOl1B,KAAKpQ,QAAQk6G,WAAa,IAC1C,0BAEG64G,EAAU3iN,KAAK460B,SAAWrkB,GAAS,MAAOrhyB,EAAS,mBAAoB4wB,GAU3E,GATA9lD,KAAK250B,aAAepjB,GAAS,MAAOrhyB,EAAS,WAAYytL,GAEzDkiX,GAAwB/+gB,GACxBiisB,GAAyB/nvB,KAAK250B,cAC9BhvuB,GAAG7kD,EAAW,cAAew9M,IAE7BtjQ,KAAK660B,cAAgBtkB,GAAS,MAAOrhyB,EAAS,iBAAkB4wB,GAChE9lD,KAAK860B,KAAOvkB,GAAS,MAAOrhyB,EAAS,OAAQl1B,KAAK660B,eAE9C760B,KAAKpQ,QAAQ2/X,YAAa,CAC7B,IAAIA,EAAcvvX,KAAK+60B,aAAexkB,GAAS,IAAKrhyB,EAAS,gBAAiB4wB,GAC9EypU,EAAYtxX,aAAa,OAAQ,UACjCsxX,EAAYtxX,aAAa,aAAc,eACvCsxX,EAAYthS,KAAO,SACnBshS,EAAY3kM,UAAY,yCAExBjgF,GAAG4kR,EAAa,QAAS,SAAUx5E,GAClCppL,GAAeopL,GACf/1S,KAAKyN,OACN,EAAGzN,KACJ,CACD,EAEA4/D,cAAe,WACd,IAAI9Z,EAAY9lD,KAAK250B,aACjBjwzB,EAAQo8B,EAAUp8B,MAEtBA,EAAMhjC,MAAQ,GACdgjC,EAAMspoB,WAAa,SAEnB,IAAItsqB,EAAQo/D,EAAUn/D,YACtBD,EAAQlB,KAAKkE,IAAIhD,EAAOsZ,KAAKpQ,QAAQghC,UACrClqC,EAAQlB,KAAKmE,IAAIjD,EAAOsZ,KAAKpQ,QAAQkmkB,UAErCpsiB,EAAMhjC,MAASA,EAAQ,EAAK,KAC5BgjC,EAAMspoB,WAAa,GAEnBtpoB,EAAM9iC,OAAS,GAEf,IAAIA,EAASk/D,EAAUj/D,aACnB0xD,EAAYv4C,KAAKpQ,QAAQ2oD,UACzByiyB,EAAgB,yBAEhBziyB,GAAa3xD,EAAS2xD,GACzB7uB,EAAM9iC,OAAS2xD,EAAY,KAC3B0xD,GAASnkD,EAAWk1xB,IAEpBtxuB,GAAY5jD,EAAWk1xB,GAGxBh70B,KAAK+50B,gBAAkB/50B,KAAKqjkB,WAAW18kB,WACxC,EAEAk+0B,aAAc,SAAU7/0B,GACvB,IAAIutB,EAAMvS,KAAK4xY,KAAKgyb,uBAAuB5j0B,KAAKiy0B,QAASjt1B,EAAEuvL,KAAMvvL,EAAEmY,QAC/DouT,EAASvrT,KAAK450B,aAClBjjb,GAAY32Z,KAAKqjkB,WAAY9wjB,EAAIjf,IAAIi4T,GACtC,EAEAimhB,WAAY,WACX,GAAKxx0B,KAAKpQ,QAAQmi1B,QAKlB,GAJI/x0B,KAAK4xY,KAAK8qb,UAAY18zB,KAAK4xY,KAAK8qb,SAASh3zB,OAIzC1F,KAAKi70B,aACRj70B,KAAKi70B,cAAe,MADrB,CAKA,IAAIlo1B,EAAMiN,KAAK4xY,KACX15K,EAAe/xM,SAASsX,GAASz9B,KAAKqjkB,WAAY,gBAAiB,KAAO,EAC1E63Q,EAAkBl70B,KAAKqjkB,WAAWx8kB,aAAeqxO,EACjDijnB,EAAiBn70B,KAAK+50B,gBACtBqB,EAAW,IAAIx0nB,EAAM5mN,KAAK850B,gBAAiBoB,EAAkBl70B,KAAK650B,kBAEtEuB,EAAS75wB,KAAKu1V,GAAY92Z,KAAKqjkB,aAE/B,IAAIg4Q,EAAeto1B,EAAI2u0B,2BAA2B0Z,GAC9C5q1B,EAAUw8zB,EAAQhtzB,KAAKpQ,QAAQq3vB,gBAC/B+0E,EAAYhP,EAAQhtzB,KAAKpQ,QAAQuq1B,uBAAyB3p1B,GAC1D0r0B,EAAYlP,EAAQhtzB,KAAKpQ,QAAQwq1B,2BAA6B5p1B,GAC9DuiB,EAAOhgB,EAAIima,UACXp4N,EAAK,EACLC,EAAK,EAELw6oB,EAAa901B,EAAI401B,EAAiBjf,EAAU310B,EAAIwsB,EAAKxsB,IACxDq6M,EAAKy6oB,EAAa901B,EAAI401B,EAAiBpo0B,EAAKxsB,EAAI210B,EAAU310B,GAEvD801B,EAAa901B,EAAIq6M,EAAKo7nB,EAAUz10B,EAAI,IACvCq6M,EAAKy6oB,EAAa901B,EAAIy10B,EAAUz10B,GAE7B801B,EAAa131B,EAAIu31B,EAAkBhf,EAAUv40B,EAAIovB,EAAKpvB,IACzDk9M,EAAKw6oB,EAAa131B,EAAIu31B,EAAkBno0B,EAAKpvB,EAAIu40B,EAAUv40B,GAExD031B,EAAa131B,EAAIk9M,EAAKm7nB,EAAUr40B,EAAI,IACvCk9M,EAAKw6oB,EAAa131B,EAAIq40B,EAAUr40B,IAO7Bi9M,GAAMC,KAEL7gM,KAAKpQ,QAAQyq1B,aAChBr60B,KAAKi70B,cAAe,GAGrBlo1B,EACKyia,KAAK,gBACLina,MAAM,CAAC77nB,EAAIC,IA3CjB,CA6CD,EAEA+4oB,WAAY,WAEX,OAAO5sB,EAAQhtzB,KAAKo50B,SAAWp50B,KAAKo50B,QAAQxF,gBAAkB5z0B,KAAKo50B,QAAQxF,kBAAoB,CAAC,EAAG,GACpG,IAoBD5g1B,GAAIu5vB,aAAa,CAChBkuF,mBAAmB,IAMpBzn1B,GAAI4vU,QAAQ,CAMX6ob,UAAW,SAAUzmqB,EAAOimqB,EAAQr7vB,GAInC,OAHAoQ,KAAKg60B,aAAaE,GAAOl1vB,EAAOimqB,EAAQr7vB,GACrCyp1B,OAAOr50B,MAEHA,IACR,EAIA6nvB,WAAY,SAAU7iqB,GAKrB,OAJAA,EAAQ7wF,UAAUC,OAAS4wF,EAAQhlF,KAAK0rvB,SAEvC1mqB,EAAMv3E,QAEAzN,IACR,IAmBD4+X,GAAMh8D,QAAQ,CAMb0ob,UAAW,SAAUzkpB,EAASj3G,GAY7B,OAXAoQ,KAAK0rvB,OAAS1rvB,KAAKg60B,aAAaE,GAAOl60B,KAAK0rvB,OAAQ7kpB,EAASj3G,GACxDoQ,KAAKs70B,sBACTt70B,KAAK2qG,GAAG,CACPylB,MAAOpwH,KAAKu70B,WACZC,SAAUx70B,KAAKy70B,YACf74yB,OAAQ5iC,KAAK6nvB,WACbx3sB,KAAMrwC,KAAK070B,aAEZ170B,KAAKs70B,qBAAsB,GAGrBt70B,IACR,EAIA270B,YAAa,WAWZ,OAVI370B,KAAK0rvB,SACR1rvB,KAAKitH,IAAI,CACRmD,MAAOpwH,KAAKu70B,WACZC,SAAUx70B,KAAKy70B,YACf74yB,OAAQ5iC,KAAK6nvB,WACbx3sB,KAAMrwC,KAAK070B,aAEZ170B,KAAKs70B,qBAAsB,EAC3Bt70B,KAAK0rvB,OAAS,MAER1rvB,IACR,EAIAyrvB,UAAW,SAAUR,GAUpB,OATIjrvB,KAAK0rvB,SACF1rvB,gBAAgB0v0B,KACrB1v0B,KAAK0rvB,OAAO0tF,QAAUp50B,MAEnBA,KAAK0rvB,OAAO4tF,aAAaruF,GAAUjrvB,KAAKiy0B,UAE3Cjy0B,KAAK0rvB,OAAO2tF,OAAOr50B,KAAK4xY,OAGnB5xY,IACR,EAIA6nvB,WAAY,WAIX,OAHI7nvB,KAAK0rvB,QACR1rvB,KAAK0rvB,OAAOj+uB,QAENzN,IACR,EAIA470B,YAAa,WAIZ,OAHI570B,KAAK0rvB,QACR1rvB,KAAK0rvB,OAAO1jgB,OAAOhoP,MAEbA,IACR,EAIA670B,YAAa,WACZ,QAAQ770B,KAAK0rvB,QAAS1rvB,KAAK0rvB,OAAOguF,QACnC,EAIAoC,gBAAiB,SAAUj1uB,GAI1B,OAHI7mG,KAAK0rvB,QACR1rvB,KAAK0rvB,OAAO8tF,WAAW3yuB,GAEjB7mG,IACR,EAIA+70B,SAAU,WACT,OAAO/70B,KAAK0rvB,MACb,EAEA6vF,WAAY,SAAUv21B,GACrB,GAAKgb,KAAK0rvB,QAAW1rvB,KAAK4xY,KAA1B,CAIAlsY,GAAK1gB,GAEL,IAAI+I,EAAS/I,EAAE25Y,OAAS35Y,EAAE+I,OACtBiS,KAAK0rvB,OAAO0tF,UAAYrr1B,GAAYA,aAAkB48a,IAU1D3qa,KAAK0rvB,OAAO0tF,QAAUrr1B,EACtBiS,KAAKyrvB,UAAUzmwB,EAAEimwB,SARZjrvB,KAAK4xY,KAAKo2b,SAASho0B,KAAK0rvB,QAC3B1rvB,KAAK6nvB,aAEL7nvB,KAAKyrvB,UAAUzmwB,EAAEimwB,OAXnB,CAiBD,EAEAywF,WAAY,SAAU121B,GACrBgb,KAAK0rvB,OAAOtB,UAAUplwB,EAAEimwB,OACzB,EAEAwwF,YAAa,SAAUz21B,GACU,KAA5BA,EAAE82hB,cAAclkO,SACnB53S,KAAKu70B,WAAWv21B,EAElB,IA2CD,IAAIgtF,GAAUmnwB,GAAWn2uB,OAAO,CAI/BpzG,QAAS,CAGRm5pB,KAAM,cAINnkqB,OAAQ,CAAC,EAAG,GAOZmK,UAAW,OAIXy8vB,WAAW,EAIXl0b,QAAQ,EAIR75T,QAAS,IAGVivU,MAAO,SAAU35U,GAChBom1B,GAAW/40B,UAAUssU,MAAMrsU,KAAKL,KAAMjN,GACtCiN,KAAKs6nB,WAAWt6nB,KAAKpQ,QAAQ6N,SAM7B1K,EAAIyia,KAAK,cAAe,CAACn/W,QAASr2C,OAE9BA,KAAKo50B,UACRp50B,KAAKyszB,eAAezszB,KAAKo50B,SAMzBp50B,KAAKo50B,QAAQ5jb,KAAK,cAAe,CAACn/W,QAASr2C,OAAO,GAEpD,EAEAmtU,SAAU,SAAUp6U,GACnBom1B,GAAW/40B,UAAU+sU,SAAS9sU,KAAKL,KAAMjN,GAMzCA,EAAIyia,KAAK,eAAgB,CAACn/W,QAASr2C,OAE/BA,KAAKo50B,UACRp50B,KAAK0szB,kBAAkB1szB,KAAKo50B,SAM5Bp50B,KAAKo50B,QAAQ5jb,KAAK,eAAgB,CAACn/W,QAASr2C,OAAO,GAErD,EAEAugjB,UAAW,WACV,IAAIh3hB,EAAS4vzB,GAAW/40B,UAAUmgjB,UAAUlgjB,KAAKL,MAMjD,OAJKA,KAAKpQ,QAAQ47vB,YACjBjiuB,EAAOmxzB,SAAW160B,KAAKyN,OAGjB8b,CACR,EAEA69tB,YAAa,WACZ,IACIt9oB,EAAY50E,oBAAgBl1B,KAAKpQ,QAAQk6G,WAAa,IAAM,kBAAoB9pG,KAAK66zB,cAAgB,WAAa,QAEtH76zB,KAAK250B,aAAe350B,KAAKqjkB,WAAakzP,GAAS,MAAOzstB,GAEtD9pG,KAAKqjkB,WAAWplkB,aAAa,OAAQ,WACrC+B,KAAKqjkB,WAAWplkB,aAAa,KAAM,mBAAqBo8nB,EAAMr6nB,MAC/D,EAEA4/D,cAAe,WAAa,EAE5B4xwB,WAAY,WAAa,EAEzBwK,aAAc,SAAUzp0B,GACvB,IAAI0p0B,EAAMC,EACNnp1B,EAAMiN,KAAK4xY,KACX9rV,EAAY9lD,KAAKqjkB,WACjB2gQ,EAAcjx0B,EAAI8o0B,uBAAuB9o0B,EAAIi2U,aAC7C90P,EAAenhF,EAAI2u0B,2BAA2BnvzB,GAC9CxjB,EAAYiR,KAAKpQ,QAAQb,UACzBot1B,EAAer2xB,EAAUn/D,YACzBy11B,EAAgBt2xB,EAAUj/D,aAC1BjC,EAASoo0B,EAAQhtzB,KAAKpQ,QAAQhL,QAC9B2mU,EAASvrT,KAAK450B,aAEA,QAAd7q1B,GACHkt1B,EAAOE,EAAe,EACtBD,EAAOE,GACiB,WAAdrt1B,GACVkt1B,EAAOE,EAAe,EACtBD,EAAO,GACiB,WAAdnt1B,GACVkt1B,EAAOE,EAAe,EACtBD,EAAOE,EAAgB,GACC,UAAdrt1B,GACVkt1B,EAAO,EACPC,EAAOE,EAAgB,GACC,SAAdrt1B,GACVkt1B,EAAOE,EACPD,EAAOE,EAAgB,GACblowB,EAAa3tF,EAAIy90B,EAAYz90B,GACvCwI,EAAY,QACZkt1B,EAAO,EACPC,EAAOE,EAAgB,IAEvBrt1B,EAAY,OACZkt1B,EAAOE,EAAuC,GAAvBv31B,EAAO2B,EAAIglU,EAAOhlU,GACzC211B,EAAOE,EAAgB,GAGxB7p0B,EAAMA,EAAIklV,SAASu1d,EAAQivB,EAAMC,GAAM,IAAO5o1B,IAAI1O,GAAQ0O,IAAIi4T,GAE9D7hN,GAAY5jD,EAAW,yBACvB4jD,GAAY5jD,EAAW,wBACvB4jD,GAAY5jD,EAAW,uBACvB4jD,GAAY5jD,EAAW,0BACvBmkD,GAASnkD,EAAW,mBAAqB/2D,GACzC4na,GAAY7wW,EAAWvzC,EACxB,EAEA05zB,gBAAiB,WAChB,IAAI15zB,EAAMvS,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKiy0B,SAC5Cjy0B,KAAKg80B,aAAazp0B,EACnB,EAEA+nnB,WAAY,SAAU78nB,GACrBuC,KAAKpQ,QAAQ6N,QAAUA,EAEnBuC,KAAKqjkB,YACRi3D,GAAWt6nB,KAAKqjkB,WAAY5lkB,EAE9B,EAEAon0B,aAAc,SAAU7/0B,GACvB,IAAIutB,EAAMvS,KAAK4xY,KAAKgyb,uBAAuB5j0B,KAAKiy0B,QAASjt1B,EAAEuvL,KAAMvvL,EAAEmY,QACnE6C,KAAKg80B,aAAazp0B,EACnB,EAEAqn0B,WAAY,WAEX,OAAO5sB,EAAQhtzB,KAAKo50B,SAAWp50B,KAAKo50B,QAAQvF,oBAAsB7z0B,KAAKpQ,QAAQ0nU,OAASt3T,KAAKo50B,QAAQvF,oBAAsB,CAAC,EAAG,GAChI,IAgBD7g1B,GAAI4vU,QAAQ,CAOXy5gB,YAAa,SAAUhmyB,EAAS40sB,EAAQr7vB,GAIvC,OAHAoQ,KAAKg60B,aAAahowB,GAAS37B,EAAS40sB,EAAQr7vB,GACzCyp1B,OAAOr50B,MAEHA,IACR,EAIAs80B,aAAc,SAAUjmyB,GAEvB,OADAA,EAAQ5oC,QACDzN,IACR,IAkBD4+X,GAAMh8D,QAAQ,CAMb2ob,YAAa,SAAU1kpB,EAASj3G,GAa/B,OAXIoQ,KAAKu80B,UAAYv80B,KAAKw80B,iBACzBx80B,KAAK+rvB,gBAGN/rvB,KAAKu80B,SAAWv80B,KAAKg60B,aAAahowB,GAAShyE,KAAKu80B,SAAU11uB,EAASj3G,GACnEoQ,KAAKy80B,2BAEDz80B,KAAKu80B,SAAS3s1B,QAAQ47vB,WAAaxrvB,KAAK4xY,MAAQ5xY,KAAK4xY,KAAKo2b,SAASho0B,OACtEA,KAAKq80B,cAGCr80B,IACR,EAIA+rvB,cAAe,WAMd,OALI/rvB,KAAKu80B,WACRv80B,KAAKy80B,0BAAyB,GAC9Bz80B,KAAKs80B,eACLt80B,KAAKu80B,SAAW,MAEVv80B,IACR,EAEAy80B,yBAA0B,SAAU75yB,GACnC,GAAKA,IAAU5iC,KAAK080B,sBAApB,CACA,IAAI9Z,EAAQhgyB,EAAS,MAAQ,KACzBrZ,EAAS,CACZqZ,OAAQ5iC,KAAKs80B,aACbjsyB,KAAMrwC,KAAK280B,cAEP380B,KAAKu80B,SAAS3s1B,QAAQ47vB,UAU1BjiuB,EAAOj2B,IAAM0M,KAAK480B,cATlBrzzB,EAAOypzB,UAAYhz0B,KAAK480B,aACxBrzzB,EAAO2pzB,SAAWlz0B,KAAKs80B,aACvB/yzB,EAAO6mG,MAAQpwH,KAAK480B,aAChB580B,KAAK4xY,KACR5xY,KAAK680B,qBAELtzzB,EAAOj2B,IAAM0M,KAAK680B,oBAKhB780B,KAAKu80B,SAAS3s1B,QAAQ0nU,SACzB/tS,EAAOq3c,UAAY5ge,KAAK280B,cAEzB380B,KAAK4i0B,GAAOr5yB,GACZvpB,KAAK080B,uBAAyB95yB,CAtBuB,CAuBtD,EAIAy5yB,YAAa,SAAUpxF,GAgBtB,OAfIjrvB,KAAKu80B,WACFv80B,gBAAgB0v0B,KACrB1v0B,KAAKu80B,SAASnD,QAAUp50B,MAErBA,KAAKu80B,SAASjD,aAAaruF,KAE9BjrvB,KAAKu80B,SAASlD,OAAOr50B,KAAK4xY,MAEtB5xY,KAAKm3D,WACRn3D,KAAK880B,2BAA2B980B,MACtBA,KAAKmsvB,WACfnsvB,KAAKmsvB,UAAUnsvB,KAAK880B,2BAA4B980B,QAI5CA,IACR,EAIAs80B,aAAc,WACb,GAAIt80B,KAAKu80B,SACR,OAAOv80B,KAAKu80B,SAAS9u0B,OAEvB,EAIAsv0B,cAAe,WAId,OAHI/80B,KAAKu80B,UACRv80B,KAAKu80B,SAASv0lB,OAAOhoP,MAEfA,IACR,EAIAw80B,cAAe,WACd,OAAOx80B,KAAKu80B,SAAS7C,QACtB,EAIA5tF,kBAAmB,SAAUjlpB,GAI5B,OAHI7mG,KAAKu80B,UACRv80B,KAAKu80B,SAAS/C,WAAW3yuB,GAEnB7mG,IACR,EAIA6rvB,WAAY,WACX,OAAO7rvB,KAAKu80B,QACb,EAEAM,mBAAoB,WACf780B,KAAKm3D,WACRn3D,KAAKg90B,0BAA0Bh90B,MACrBA,KAAKmsvB,WACfnsvB,KAAKmsvB,UAAUnsvB,KAAKg90B,0BAA2Bh90B,KAEjD,EAEAg90B,0BAA2B,SAAUr+c,GACpC,IAAIphW,EAAiC,mBAArBohW,EAAMxnU,YAA6BwnU,EAAMxnU,aACrD55B,IACHotE,GAAGptE,EAAI,QAAS,WACfv9B,KAAKu80B,SAASnD,QAAUz6c,EACxB3+X,KAAKq80B,aACN,EAAGr80B,MACH2qG,GAAGptE,EAAI,OAAQv9B,KAAKs80B,aAAct80B,MAEpC,EAEA880B,2BAA4B,SAAUn+c,GACrC,IAAIphW,EAAiC,mBAArBohW,EAAMxnU,YAA6BwnU,EAAMxnU,aACrD55B,GACHA,EAAGt/B,aAAa,mBAAoB+B,KAAKu80B,SAASl5Q,WAAWtlkB,GAE/D,EAGA6+0B,aAAc,SAAU531B,GACvB,GAAKgb,KAAKu80B,UAAav80B,KAAK4xY,KAK5B,GAAI5xY,KAAK4xY,KAAKkG,UAAY93Y,KAAK4xY,KAAKkG,SAASmlc,WAAaj90B,KAAKk90B,cAA/D,CACCl90B,KAAKk90B,eAAgB,EACrB,IAAI5moB,EAAOt2M,KACXA,KAAK4xY,KAAKnnS,KAAK,UAAW,WACzB6rG,EAAK4moB,eAAgB,EACrB5moB,EAAKsmoB,aAAa531B,EACnB,EAED,MAEAgb,KAAKu80B,SAASnD,QAAUp01B,EAAE25Y,OAAS35Y,EAAE+I,OAErCiS,KAAKq80B,YAAYr80B,KAAKu80B,SAAS3s1B,QAAQ0nU,OAAStyU,EAAEimwB,YAASn0vB,EAC5D,EAEA6l1B,aAAc,SAAU331B,GACvB,IAAuBy+0B,EAAgB9B,EAAnC12E,EAASjmwB,EAAEimwB,OACXjrvB,KAAKu80B,SAAS3s1B,QAAQ0nU,QAAUtyU,EAAE82hB,gBACrC2nT,EAAiBzj0B,KAAK4xY,KAAKgwb,2BAA2B580B,EAAE82hB,eACxD6lT,EAAa3h0B,KAAK4xY,KAAK6vb,2BAA2BgC,GAClDx4E,EAASjrvB,KAAK4xY,KAAK4ub,mBAAmBmB,IAEvC3h0B,KAAKu80B,SAASnyF,UAAUa,EACzB,IAsBD,IAAIkyF,GAAUvN,GAAK5suB,OAAO,CACzBpzG,QAAS,CAGR26vB,SAAU,CAAC,GAAI,IAQfvhwB,MAAM,EAINo01B,MAAO,KAEPtzuB,UAAW,oBAGZimuB,WAAY,SAAUC,GACrB,IAAI5onB,EAAO4onB,GAA+B,QAApBA,EAAQh/tB,QAAqBg/tB,EAAUvn1B,SAASskB,cAAc,OAChFnd,EAAUoQ,KAAKpQ,QASnB,GAPIA,EAAQ5G,gBAAgB3B,SAC3BwyQ,GAAMzyC,GACNA,EAAIj3H,YAAYvgG,EAAQ5G,OAExBo+N,EAAIx8B,WAA6B,IAAjBh7L,EAAQ5G,KAAiB4G,EAAQ5G,KAAO,GAGrD4G,EAAQwt1B,MAAO,CAClB,IAAIA,EAAQpwB,EAAQp9zB,EAAQwt1B,OAC5Bh2nB,EAAI19L,MAAM2zzB,oBAAuBD,EAAM721B,EAAK,OAAU621B,EAAMz51B,EAAK,IAClE,CAGA,OAFAqc,KAAKqw0B,eAAejpnB,EAAK,QAElBA,CACR,EAEA8onB,aAAc,WACb,OAAO,IACR,IASDN,GAAK0N,QAAU7M,GAoEf,IAAIn4M,GAAY15P,GAAM57R,OAAO,CAI5BpzG,QAAS,CAGR+0zB,SAAU,IAIVlnzB,QAAS,EAOT4r0B,eAAgBv8jB,GAAQw1I,OAIxBi7b,mBAAmB,EAInBC,eAAgB,IAIhBx8Z,OAAQ,EAIRjhZ,OAAQ,KAIR8nS,QAAS,EAIT2wT,aAAS1hoB,EAMT2hoB,mBAAe3hoB,EAMf2m1B,mBAAe3m1B,EAQf4m1B,QAAQ,EAIR30L,KAAM,WAINj/iB,UAAW,GAIX6zuB,WAAY,GAGbp0yB,WAAY,SAAU35C,GACrB0F,EAAW0K,KAAMpQ,EAClB,EAEA88U,MAAO,WACN1sU,KAAKu6zB,iBAELv6zB,KAAKqvmB,QAAU,CAAC,EAChBrvmB,KAAK490B,OAAS,CAAC,EAEf590B,KAAKq8nB,YACN,EAEA8yM,UAAW,SAAUp80B,GACpBA,EAAIq80B,cAAcpv0B,KACnB,EAEAmtU,SAAU,SAAUp6U,GACnBiN,KAAK690B,kBACLj7yB,GAAO5iC,KAAKqjkB,YACZtwkB,EAAIu80B,iBAAiBtv0B,MACrBA,KAAKqjkB,WAAa,KAClBrjkB,KAAK890B,eAAYhn1B,CAClB,EAIAq0vB,aAAc,WAKb,OAJInrvB,KAAK4xY,OACR4kb,GAAQx2zB,KAAKqjkB,YACbrjkB,KAAK+90B,eAAev41B,KAAKmE,MAEnBqW,IACR,EAIA2v0B,YAAa,WAKZ,OAJI3v0B,KAAK4xY,OACR6kb,GAAOz2zB,KAAKqjkB,YACZrjkB,KAAK+90B,eAAev41B,KAAKkE,MAEnBsW,IACR,EAIA+/Z,aAAc,WACb,OAAO//Z,KAAKqjkB,UACb,EAIAi3D,WAAY,SAAU78nB,GAGrB,OAFAuC,KAAKpQ,QAAQ6N,QAAUA,EACvBuC,KAAKuz0B,iBACEvz0B,IACR,EAIA83Z,UAAW,SAAUkpB,GAIpB,OAHAhhb,KAAKpQ,QAAQoxb,OAASA,EACtBhhb,KAAK0z0B,gBAEE1z0B,IACR,EAIAs7mB,UAAW,WACV,OAAOt7mB,KAAKg+0B,QACb,EAIAznV,OAAQ,WACP,GAAIv2f,KAAK4xY,KAAM,CACd5xY,KAAK690B,kBACL,IAAII,EAAWj+0B,KAAKk+0B,WAAWl+0B,KAAK4xY,KAAK5jE,WACrCiwgB,IAAaj+0B,KAAK890B,YACrB990B,KAAK890B,UAAYG,EACjBj+0B,KAAKm+0B,iBAENn+0B,KAAK4hC,SACN,CACA,OAAO5hC,IACR,EAEAugjB,UAAW,WACV,IAAIh3hB,EAAS,CACZ60zB,aAAcp+0B,KAAKq+0B,eACnB3L,UAAW1y0B,KAAKq8nB,WAChB9nd,KAAMv0K,KAAKq8nB,WACXs+M,QAAS360B,KAAK8i0B,YAgBf,OAbK9i0B,KAAKpQ,QAAQy50B,iBAEZrp0B,KAAK4r0B,UACT5r0B,KAAK4r0B,QAAUzpnB,EAASniN,KAAK8i0B,WAAY9i0B,KAAKpQ,QAAQ4t1B,eAAgBx90B,OAGvEupB,EAAO8mB,KAAOrwC,KAAK4r0B,SAGhB5r0B,KAAK66zB,gBACRtxyB,EAAOivzB,SAAWx40B,KAAK6k0B,cAGjBt7yB,CACR,EAQAuymB,WAAY,WACX,OAAOrzoB,SAASskB,cAAc,MAC/B,EAKAux0B,YAAa,WACZ,IAAIr71B,EAAI+c,KAAKpQ,QAAQ+0zB,SACrB,OAAO1h0B,aAAa2jO,EAAQ3jO,EAAI,IAAI2jO,EAAM3jO,EAAGA,EAC9C,EAEAyw1B,cAAe,WACV1z0B,KAAKqjkB,iBAAsCvskB,IAAxBkJ,KAAKpQ,QAAQoxb,QAAgD,OAAxBhhb,KAAKpQ,QAAQoxb,SACxEhhb,KAAKqjkB,WAAW35iB,MAAMs3Z,OAAShhb,KAAKpQ,QAAQoxb,OAE9C,EAEA+8Z,eAAgB,SAAUr+yB,GAMzB,IAHA,IAGqCshZ,EAHjCrgX,EAAS3gE,KAAKwkkB,UAAUhtd,SACxB+muB,GAAc7+yB,GAAQ,IAAWn6C,KAE5BF,EAAI,EAAGoK,EAAMkxE,EAAOvsE,OAAgB/O,EAAIoK,EAAKpK,IAErD27b,EAASrgX,EAAOt7E,GAAGqkC,MAAMs3Z,OAErBrgX,EAAOt7E,KAAO2a,KAAKqjkB,YAAcriJ,IACpCu9Z,EAAa7+yB,EAAQ6+yB,GAAav9Z,IAIhC5wa,SAASmu0B,KACZv+0B,KAAKpQ,QAAQoxb,OAASu9Z,EAAa7+yB,GAAS,EAAG,GAC/C1/B,KAAK0z0B,gBAEP,EAEAH,eAAgB,WACf,GAAKvz0B,KAAK4xY,OAGN9kI,GAAQ0ljB,MAAZ,CAEAl4L,GAAWt6nB,KAAKqjkB,WAAYrjkB,KAAKpQ,QAAQ6N,SAEzC,IAAIqL,GAAO,IAAID,KACX210B,GAAY,EACZC,GAAY,EAEhB,IAAK,IAAIj01B,KAAOwV,KAAK490B,OAAQ,CAC5B,IAAIjupB,EAAO3vL,KAAK490B,OAAOpz1B,GACvB,GAAKmlM,EAAK95L,SAAY85L,EAAK+zb,OAA3B,CAEA,IAAIg7N,EAAOl51B,KAAKkE,IAAI,GAAIof,EAAM6mL,EAAK+zb,QAAU,KAE7C4W,GAAW3qc,EAAKpyJ,GAAImhzB,GAChBA,EAAO,EACVF,GAAY,GAER7upB,EAAK5rJ,OACR06yB,GAAY,EAEZz+0B,KAAK2+0B,cAAchvpB,GAEpBA,EAAK5rJ,QAAS,EAbgC,CAehD,CAEI06yB,IAAcz+0B,KAAK4+0B,UAAY5+0B,KAAK6+0B,cAEpCL,IACHjzB,EAAgBvrzB,KAAK8+0B,YACrB9+0B,KAAK8+0B,WAAa7v0B,EAAiBjP,KAAKuz0B,eAAgBvz0B,MA/B5B,CAiC9B,EAEA2+0B,cAAe/zB,EAEf2P,eAAgB,WACXv6zB,KAAKqjkB,aAETrjkB,KAAKqjkB,WAAakzP,GAAS,MAAO,kBAAoBv2zB,KAAKpQ,QAAQk6G,WAAa,KAChF9pG,KAAK0z0B,gBAED1z0B,KAAKpQ,QAAQ6N,QAAU,GAC1BuC,KAAKuz0B,iBAGNvz0B,KAAKwkkB,UAAUr0e,YAAYnwF,KAAKqjkB,YACjC,EAEA86Q,cAAe,WAEd,IAAI5pqB,EAAOv0K,KAAK890B,UACZtlN,EAAUx4nB,KAAKpQ,QAAQ4ooB,QAE3B,QAAa1hoB,IAATy9K,EAAJ,CAEA,IAAK,IAAIzyH,KAAK9hD,KAAKqvmB,QAClBvtjB,EAAI3xC,OAAO2xC,GACP9hD,KAAKqvmB,QAAQvtjB,GAAGvkB,GAAGi6E,SAASpjH,QAAU0tD,IAAMyyH,GAC/Cv0K,KAAKqvmB,QAAQvtjB,GAAGvkB,GAAG7T,MAAMs3Z,OAASw3M,EAAUhzoB,KAAKM,IAAIyuL,EAAOzyH,GAC5D9hD,KAAK++0B,eAAej9xB,KAEpBlf,GAAO5iC,KAAKqvmB,QAAQvtjB,GAAGvkB,IACvBv9B,KAAKg/0B,mBAAmBl9xB,GACxB9hD,KAAKi/0B,eAAen9xB,UACb9hD,KAAKqvmB,QAAQvtjB,IAItB,IAAI93C,EAAQhK,KAAKqvmB,QAAQ96b,GACrBxhL,EAAMiN,KAAK4xY,KAqBf,OAnBK5nY,KACJA,EAAQhK,KAAKqvmB,QAAQ96b,GAAQ,CAAC,GAExBh3I,GAAKg5xB,GAAS,MAAO,+CAAgDv2zB,KAAKqjkB,YAChFr5jB,EAAMuzB,GAAG7T,MAAMs3Z,OAASw3M,EAExBxunB,EAAMgkF,OAASj7F,EAAI0if,QAAQ1if,EAAIi+zB,UAAUj+zB,EAAIou0B,kBAAmB5spB,GAAMhpL,QACtEye,EAAMuqK,KAAOA,EAEbv0K,KAAKk/0B,kBAAkBl10B,EAAOjX,EAAIi2U,YAAaj2U,EAAIi7U,WAG3ChkU,EAAMuzB,GAAG52C,YAEjBqZ,KAAKm/0B,eAAen10B,IAGrBhK,KAAKwxY,OAASxnY,EAEPA,CArCqC,CAsC7C,EAEA+00B,eAAgBn0B,EAEhBq0B,eAAgBr0B,EAEhBu0B,eAAgBv0B,EAEhBi0B,YAAa,WACZ,GAAK7+0B,KAAK4xY,KAAV,CAIA,IAAIpnZ,EAAKmlM,EAELpb,EAAOv0K,KAAK4xY,KAAK5jE,UACrB,GAAIz5J,EAAOv0K,KAAKpQ,QAAQ4ooB,SACvBjkd,EAAOv0K,KAAKpQ,QAAQi4U,QACpB7nU,KAAK690B,sBAFN,CAMA,IAAKrz1B,KAAOwV,KAAK490B,QAChBjupB,EAAO3vL,KAAK490B,OAAOpz1B,IACd401B,OAASzvpB,EAAK95L,QAGpB,IAAKrL,KAAOwV,KAAK490B,OAEhB,IADAjupB,EAAO3vL,KAAK490B,OAAOpz1B,IACVqL,UAAY85L,EAAK5rJ,OAAQ,CACjC,IAAIq6J,EAASzO,EAAKyO,OACbp+L,KAAKq/0B,cAAcjhpB,EAAO73M,EAAG63M,EAAOz6M,EAAGy6M,EAAOt8I,EAAGs8I,EAAOt8I,EAAI,IAChE9hD,KAAKs/0B,gBAAgBlhpB,EAAO73M,EAAG63M,EAAOz6M,EAAGy6M,EAAOt8I,EAAGs8I,EAAOt8I,EAAI,EAEhE,CAGD,IAAKt3D,KAAOwV,KAAK490B,OACX590B,KAAK490B,OAAOpz1B,GAAK401B,QACrBp/0B,KAAKu/0B,YAAY/01B,EAnBnB,CATA,CA+BD,EAEAw01B,mBAAoB,SAAUzqqB,GAC7B,IAAK,IAAI/pL,KAAOwV,KAAK490B,OAChB590B,KAAK490B,OAAOpz1B,GAAK4zM,OAAOt8I,IAAMyyH,GAGlCv0K,KAAKu/0B,YAAY/01B,EAEnB,EAEAqz1B,gBAAiB,WAChB,IAAK,IAAIrz1B,KAAOwV,KAAK490B,OACpB590B,KAAKu/0B,YAAY/01B,EAEnB,EAEA6z1B,eAAgB,WACf,IAAK,IAAIv8xB,KAAK9hD,KAAKqvmB,QAClBzskB,GAAO5iC,KAAKqvmB,QAAQvtjB,GAAGvkB,IACvBv9B,KAAKi/0B,eAAe9u0B,OAAO2xC,WACpB9hD,KAAKqvmB,QAAQvtjB,GAErB9hD,KAAK690B,kBAEL790B,KAAK890B,eAAYhn1B,CAClB,EAEAuo1B,cAAe,SAAU941B,EAAG5C,EAAGm+D,EAAG+lR,GACjC,IAAIx0Q,EAAK7tE,KAAKQ,MAAMO,EAAI,GACpB+sE,EAAK9tE,KAAKQ,MAAMrC,EAAI,GACpB671B,EAAK19xB,EAAI,EACT29xB,EAAU,IAAI74nB,GAAOvzJ,GAAKC,GAC9BmsxB,EAAQ39xB,GAAK09xB,EAEb,IAAIh11B,EAAMwV,KAAK67nB,iBAAiB4jN,GAC5B9vpB,EAAO3vL,KAAK490B,OAAOpz1B,GAEvB,OAAImlM,GAAQA,EAAK5rJ,QAChB4rJ,EAAKyvpB,QAAS,GACP,IAEGzvpB,GAAQA,EAAK+zb,SACvB/zb,EAAKyvpB,QAAS,GAGXI,EAAK33gB,GACD7nU,KAAKq/0B,cAAchsxB,EAAIC,EAAIksxB,EAAI33gB,GAIxC,EAEAy3gB,gBAAiB,SAAU/41B,EAAG5C,EAAGm+D,EAAG02kB,GAEnC,IAAK,IAAInzoB,EAAI,EAAIkB,EAAGlB,EAAI,EAAIkB,EAAI,EAAGlB,IAClC,IAAK,IAAI2gC,EAAI,EAAIriC,EAAGqiC,EAAI,EAAIriC,EAAI,EAAGqiC,IAAK,CAEvC,IAAIo4K,EAAS,IAAIwoB,EAAMvhO,EAAG2gC,GAC1Bo4K,EAAOt8I,EAAIA,EAAI,EAEf,IAAIt3D,EAAMwV,KAAK67nB,iBAAiBz9b,GAC5BzO,EAAO3vL,KAAK490B,OAAOpz1B,GAEnBmlM,GAAQA,EAAK5rJ,OAChB4rJ,EAAKyvpB,QAAS,GAGJzvpB,GAAQA,EAAK+zb,SACvB/zb,EAAKyvpB,QAAS,GAGXt9xB,EAAI,EAAI02kB,GACXx4nB,KAAKs/0B,gBAAgBj61B,EAAG2gC,EAAG87B,EAAI,EAAG02kB,GAEpC,CAEF,EAEA6D,WAAY,SAAUr3oB,GACrB,IAAI061B,EAAY161B,IAAMA,EAAEy90B,OAASz90B,EAAEg40B,OACnCh9zB,KAAK2/0B,SAAS3/0B,KAAK4xY,KAAK5oE,YAAahpU,KAAK4xY,KAAK5jE,UAAW0xgB,EAAWA,EACtE,EAEA7a,aAAc,SAAU7/0B,GACvBgb,KAAK2/0B,SAAS361B,EAAEmY,OAAQnY,EAAEuvL,MAAM,EAAMvvL,EAAE+/0B,SACzC,EAEAmZ,WAAY,SAAU3pqB,GACrB,IAAI3kL,EAAUoQ,KAAKpQ,QAEnB,YAAIkH,IAAclH,EAAQ6t1B,eAAiBlpqB,EAAO3kL,EAAQ6t1B,cAClD7t1B,EAAQ6t1B,mBAGZ3m1B,IAAclH,EAAQ6ooB,eAAiB7ooB,EAAQ6ooB,cAAgBlkd,EAC3D3kL,EAAQ6ooB,cAGTlkd,CACR,EAEAorqB,SAAU,SAAUxi1B,EAAQo3K,EAAMqrqB,EAAS7a,GAC1C,IAAIkZ,EAAWz41B,KAAK+F,MAAMgpL,GAGzB0pqB,OAF6Bnn1B,IAAzBkJ,KAAKpQ,QAAQ4ooB,SAAyBylN,EAAWj+0B,KAAKpQ,QAAQ4ooB,cACrC1hoB,IAAzBkJ,KAAKpQ,QAAQi4U,SAAyBo2gB,EAAWj+0B,KAAKpQ,QAAQi4U,aACvD/wU,EAEAkJ,KAAKk+0B,WAAWD,GAG5B,IAAI4B,EAAkB7/0B,KAAKpQ,QAAQ2t1B,mBAAsBU,IAAaj+0B,KAAK890B,UAEtE/Y,IAAY8a,IAEhB7/0B,KAAK890B,UAAYG,EAEbj+0B,KAAK8/0B,eACR9/0B,KAAK8/0B,gBAGN9/0B,KAAKm+0B,gBACLn+0B,KAAK+/0B,kBAEYjp1B,IAAbmn1B,GACHj+0B,KAAK4hC,QAAQzkC,GAGTyi1B,GACJ5/0B,KAAK6+0B,cAKN7+0B,KAAK4+0B,WAAagB,GAGnB5/0B,KAAKgg1B,mBAAmB7i1B,EAAQo3K,EACjC,EAEAyrqB,mBAAoB,SAAU7i1B,EAAQo3K,GACrC,IAAK,IAAIlvL,KAAK2a,KAAKqvmB,QAClBrvmB,KAAKk/0B,kBAAkBl/0B,KAAKqvmB,QAAQhqnB,GAAI8X,EAAQo3K,EAElD,EAEA2qqB,kBAAmB,SAAUl10B,EAAO7M,EAAQo3K,GAC3C,IAAI3pJ,EAAQ5qB,KAAK4xY,KAAK+pb,aAAapnpB,EAAMvqK,EAAMuqK,MAC3CtmJ,EAAYjkB,EAAMgkF,OAAOw8pB,WAAW5/tB,GAC/B6sU,SAASz3V,KAAK4xY,KAAK4wb,mBAAmBrl0B,EAAQo3K,IAAOhpL,QAE1DuhR,GAAQumjB,MACXl2xB,GAAanzB,EAAMuzB,GAAItP,EAAWrD,GAElC+rY,GAAY3sZ,EAAMuzB,GAAItP,EAExB,EAEA8xzB,WAAY,WACX,IAAIht1B,EAAMiN,KAAK4xY,KACX8nb,EAAM3m0B,EAAInD,QAAQ8p0B,IAClB/U,EAAW3kzB,KAAKig1B,UAAYjg1B,KAAKs+0B,cACjCL,EAAWj+0B,KAAK890B,UAEhB/9yB,EAAS//B,KAAK4xY,KAAKyvb,oBAAoBrh0B,KAAK890B,WAC5C/9yB,IACH//B,KAAKkg1B,iBAAmBlg1B,KAAKmg1B,qBAAqBpgzB,IAGnD//B,KAAKog1B,OAAS1mB,EAAIvI,UAAYnxzB,KAAKpQ,QAAQ8t1B,QAAU,CACpDl41B,KAAKQ,MAAM+M,EAAI0if,QAAQ,CAAC,EAAGikV,EAAIvI,QAAQ,IAAK8sB,GAAU131B,EAAIo+zB,EAASp+zB,GACnEf,KAAKsjE,KAAK/1D,EAAI0if,QAAQ,CAAC,EAAGikV,EAAIvI,QAAQ,IAAK8sB,GAAU131B,EAAIo+zB,EAAShh0B,IAEnEqc,KAAKqg1B,OAAS3mB,EAAItI,UAAYpxzB,KAAKpQ,QAAQ8t1B,QAAU,CACpDl41B,KAAKQ,MAAM+M,EAAI0if,QAAQ,CAACikV,EAAItI,QAAQ,GAAI,GAAI6sB,GAAUt61B,EAAIgh0B,EAASp+zB,GACnEf,KAAKsjE,KAAK/1D,EAAI0if,QAAQ,CAACikV,EAAItI,QAAQ,GAAI,GAAI6sB,GAAUt61B,EAAIgh0B,EAAShh0B,GAEpE,EAEAm/0B,WAAY,WACN9i0B,KAAK4xY,OAAQ5xY,KAAK4xY,KAAK4yb,gBAE5Bxk0B,KAAK4hC,SACN,EAEA0+yB,qBAAsB,SAAUnj1B,GAC/B,IAAIpK,EAAMiN,KAAK4xY,KACX2uc,EAAUxt1B,EAAIyx0B,eAAiBh/0B,KAAKmE,IAAIoJ,EAAIky0B,eAAgBly0B,EAAIi7U,WAAaj7U,EAAIi7U,UACjFpjT,EAAQ73B,EAAI4o0B,aAAa4kB,EAASvg1B,KAAK890B,WACvCvf,EAAcxr0B,EAAI0if,QAAQt4e,EAAQ6C,KAAK890B,WAAW931B,QAClDw61B,EAAWzt1B,EAAIima,UAAU00Z,SAAiB,EAAR9iyB,GAEtC,OAAO,IAAIqiyB,EAAOsR,EAAY9me,SAAS+of,GAAWjiB,EAAYjr0B,IAAIkt1B,GACnE,EAGA5+yB,QAAS,SAAUzkC,GAClB,IAAIpK,EAAMiN,KAAK4xY,KACf,GAAK7+Y,EAAL,CACA,IAAIwhL,EAAOv0K,KAAKk+0B,WAAWnr1B,EAAIi7U,WAG/B,QADel3U,IAAXqG,IAAwBA,EAASpK,EAAIi2U,kBAClBlyU,IAAnBkJ,KAAK890B,UAAT,CAEA,IAAIrf,EAAcz+zB,KAAKsg1B,qBAAqBnj1B,GACxCsj1B,EAAYzg1B,KAAKmg1B,qBAAqB1hB,GACtCiiB,EAAaD,EAAUz3gB,YACvBpsN,EAAQ,GACR7tF,EAAS/uB,KAAKpQ,QAAQ+t1B,WACtBgD,EAAe,IAAI1zB,EAAOwzB,EAAUpyB,gBAAgB52d,SAAS,CAAC1oU,GAASA,IAC7C0xzB,EAAUnyB,cAAch7zB,IAAI,CAACy7B,GAASA,KAGpE,KAAM3e,SAASqw0B,EAAU/21B,IAAInD,IACvB6pB,SAASqw0B,EAAU/21B,IAAI/F,IACvBysB,SAASqw0B,EAAU921B,IAAIpD,IACvB6pB,SAASqw0B,EAAU921B,IAAIhG,IAAO,MAAM,IAAI4jB,MAAM,iDAEpD,IAAK,IAAI/c,KAAOwV,KAAK490B,OAAQ,CAC5B,IAAIh41B,EAAIoa,KAAK490B,OAAOpz1B,GAAK4zM,OACrBx4M,EAAEk8D,IAAM9hD,KAAK890B,WAAc6C,EAAan51B,SAAS,IAAIo/N,EAAMhhO,EAAEW,EAAGX,EAAEjC,MACrEqc,KAAK490B,OAAOpz1B,GAAKqL,SAAU,EAE7B,CAIA,GAAIrQ,KAAKM,IAAIyuL,EAAOv0K,KAAK890B,WAAa,EAAK990B,KAAK2/0B,SAASxi1B,EAAQo3K,OAAjE,CAGA,IAAK,IAAIvuJ,EAAIy6zB,EAAU/21B,IAAI/F,EAAGqiC,GAAKy6zB,EAAU921B,IAAIhG,EAAGqiC,IACnD,IAAK,IAAI3gC,EAAIo71B,EAAU/21B,IAAInD,EAAGlB,GAAKo71B,EAAU921B,IAAIpD,EAAGlB,IAAK,CACxD,IAAI+4M,EAAS,IAAIwoB,EAAMvhO,EAAG2gC,GAG1B,GAFAo4K,EAAOt8I,EAAI9hD,KAAK890B,UAEX990B,KAAK4g1B,aAAaxipB,GAAvB,CAEA,IAAIzO,EAAO3vL,KAAK490B,OAAO590B,KAAK67nB,iBAAiBz9b,IACzCzO,EACHA,EAAK95L,SAAU,EAEf+mH,EAAM9oH,KAAKsqM,EANgC,CAQ7C,CAQD,GAJAxhF,EAAMxpH,KAAK,SAAUwG,EAAGC,GACvB,OAAOD,EAAEs0zB,WAAWwyB,GAAc7m1B,EAAEq0zB,WAAWwyB,EAChD,GAEqB,IAAjB9juB,EAAMxoH,OAAc,CAElB4L,KAAKg+0B,WACTh+0B,KAAKg+0B,UAAW,EAGhBh+0B,KAAKw1Z,KAAK,YAIX,IAAI1mU,EAAWrmG,SAASy1Q,yBAExB,IAAK74Q,EAAI,EAAGA,EAAIu3H,EAAMxoH,OAAQ/O,IAC7B2a,KAAK6g1B,SAASjkuB,EAAMv3H,GAAIypG,GAGzB9uF,KAAKwxY,OAAOj0W,GAAG4yD,YAAYrB,EAC5B,CAzCgF,CAzBpC,CAJxB,CAuErB,EAEA8xvB,aAAc,SAAUxipB,GACvB,IAAIs7nB,EAAM15zB,KAAK4xY,KAAKhiZ,QAAQ8p0B,IAE5B,IAAKA,EAAIxI,SAAU,CAElB,IAAInxxB,EAAS//B,KAAKkg1B,iBAClB,IAAMxmB,EAAIvI,UAAY/ynB,EAAO73M,EAAIw5C,EAAOr2C,IAAInD,GAAK63M,EAAO73M,EAAIw5C,EAAOp2C,IAAIpD,KACjEmz0B,EAAItI,UAAYhznB,EAAOz6M,EAAIo8C,EAAOr2C,IAAI/F,GAAKy6M,EAAOz6M,EAAIo8C,EAAOp2C,IAAIhG,GAAO,OAAO,CACtF,CAEA,IAAKqc,KAAKpQ,QAAQmwC,OAAU,OAAO,EAGnC,IAAI+gzB,EAAa9g1B,KAAK+g1B,oBAAoB3ipB,GAC1C,OAAOmvnB,EAAevtzB,KAAKpQ,QAAQmwC,QAAQ4uxB,SAASmyB,EACrD,EAEAE,aAAc,SAAUx21B,GACvB,OAAOwV,KAAK+g1B,oBAAoB/g1B,KAAKih1B,iBAAiBz21B,GACvD,EAEA021B,kBAAmB,SAAU9ipB,GAC5B,IAAIrrM,EAAMiN,KAAK4xY,KACX+ya,EAAW3kzB,KAAKs+0B,cAChB6C,EAAU/ipB,EAAOyvnB,QAAQlJ,GACzBy8B,EAAUD,EAAQ7t1B,IAAIqxzB,GAG1B,MAAO,CAFE5xzB,EAAIi+zB,UAAUmwB,EAAS/ipB,EAAOt8I,GAC9B/uD,EAAIi+zB,UAAUowB,EAAShjpB,EAAOt8I,GAExC,EAGAi/xB,oBAAqB,SAAU3ipB,GAC9B,IAAIijpB,EAAKrh1B,KAAKkh1B,kBAAkB9ipB,GAC5Br+J,EAAS,IAAIotxB,EAAak0B,EAAG,GAAIA,EAAG,IAKxC,OAHKrh1B,KAAKpQ,QAAQ8t1B,SACjB39yB,EAAS//B,KAAK4xY,KAAKy/a,iBAAiBtxxB,IAE9BA,CACR,EAEA87lB,iBAAkB,SAAUz9b,GAC3B,OAAOA,EAAO73M,EAAI,IAAM63M,EAAOz6M,EAAI,IAAMy6M,EAAOt8I,CACjD,EAGAm/xB,iBAAkB,SAAUz21B,GAC3B,IAAIinB,EAAIjnB,EAAItJ,MAAM,KACdk9M,EAAS,IAAIwoB,GAAOn1M,EAAE,IAAKA,EAAE,IAEjC,OADA2sL,EAAOt8I,GAAKrwC,EAAE,GACP2sL,CACR,EAEAmhpB,YAAa,SAAU/01B,GACtB,IAAImlM,EAAO3vL,KAAK490B,OAAOpz1B,GAClBmlM,IAEL/sJ,GAAO+sJ,EAAKpyJ,WAELv9B,KAAK490B,OAAOpz1B,GAInBwV,KAAKw1Z,KAAK,aAAc,CACvB7lO,KAAMA,EAAKpyJ,GACX6gK,OAAQp+L,KAAKih1B,iBAAiBz21B,KAEhC,EAEA821B,UAAW,SAAU3xpB,GACpB1lF,GAAS0lF,EAAM,gBAEf,IAAIg1nB,EAAW3kzB,KAAKs+0B,cACpB3upB,EAAKjmK,MAAMhjC,MAAQi+zB,EAASp+zB,EAAI,KAChCopM,EAAKjmK,MAAM9iC,OAAS+9zB,EAAShh0B,EAAI,KAEjCgsM,EAAK+opB,cAAgB9tB,EACrBj7nB,EAAKgppB,YAAc/tB,EAGf99iB,GAAQ0ljB,OAASxyzB,KAAKpQ,QAAQ6N,QAAU,GAC3C68nB,GAAW3qc,EAAM3vL,KAAKpQ,QAAQ6N,QAEhC,EAEAoj1B,SAAU,SAAUzipB,EAAQt4I,GAC3B,IAAIy7xB,EAAUvh1B,KAAKwh1B,YAAYpjpB,GAC3B5zM,EAAMwV,KAAK67nB,iBAAiBz9b,GAE5BzO,EAAO3vL,KAAK87nB,WAAW97nB,KAAKyh1B,YAAYrjpB,GAAS1iJ,EAAK17C,KAAK0h1B,WAAY1h1B,KAAMo+L,IAEjFp+L,KAAKsh1B,UAAU3xpB,GAIX3vL,KAAK87nB,WAAW1noB,OAAS,GAE5B6a,EAAiBysC,EAAK17C,KAAK0h1B,WAAY1h1B,KAAMo+L,EAAQ,KAAMzO,IAG5DgnO,GAAYhnO,EAAM4xpB,GAGlBvh1B,KAAK490B,OAAOpz1B,GAAO,CAClB+yC,GAAIoyJ,EACJyO,OAAQA,EACRvoM,SAAS,GAGViwD,EAAUqqC,YAAYw/F,GAGtB3vL,KAAKw1Z,KAAK,gBAAiB,CAC1B7lO,KAAMA,EACNyO,OAAQA,GAEV,EAEAsjpB,WAAY,SAAUtjpB,EAAQ11F,EAAKinF,GAC9BjnF,GAGH1oG,KAAKw1Z,KAAK,YAAa,CACtBvrZ,MAAOy+F,EACPinF,KAAMA,EACNyO,OAAQA,IAIV,IAAI5zM,EAAMwV,KAAK67nB,iBAAiBz9b,IAEhCzO,EAAO3vL,KAAK490B,OAAOpz1B,MAGnBmlM,EAAK+zb,QAAU,IAAI76mB,KACf7I,KAAK4xY,KAAKmwb,eACbznM,GAAW3qc,EAAKpyJ,GAAI,GACpBguxB,EAAgBvrzB,KAAK8+0B,YACrB9+0B,KAAK8+0B,WAAa7v0B,EAAiBjP,KAAKuz0B,eAAgBvz0B,QAExD2vL,EAAK5rJ,QAAS,EACd/jC,KAAK6+0B,eAGDn2uB,IACJuB,GAAS0lF,EAAKpyJ,GAAI,uBAIlBv9B,KAAKw1Z,KAAK,WAAY,CACrB7lO,KAAMA,EAAKpyJ,GACX6gK,OAAQA,KAINp+L,KAAK2h1B,mBACR3h1B,KAAKg+0B,UAAW,EAGhBh+0B,KAAKw1Z,KAAK,QAEN1oJ,GAAQ0ljB,QAAUxyzB,KAAK4xY,KAAKmwb,cAC/B9yzB,EAAiBjP,KAAK6+0B,YAAa7+0B,MAInCyH,WAAWi0C,EAAK17C,KAAK6+0B,YAAa7+0B,MAAO,MAG5C,EAEAwh1B,YAAa,SAAUpjpB,GACtB,OAAOA,EAAOyvnB,QAAQ7tzB,KAAKs+0B,eAAe7mf,SAASz3V,KAAKwxY,OAAOxjT,OAChE,EAEAyzvB,YAAa,SAAUrjpB,GACtB,IAAIwjpB,EAAY,IAAIh7nB,EACnB5mN,KAAKog1B,OAAS11B,EAAQtsnB,EAAO73M,EAAGyZ,KAAKog1B,QAAUhipB,EAAO73M,EACtDyZ,KAAKqg1B,OAAS31B,EAAQtsnB,EAAOz6M,EAAGqc,KAAKqg1B,QAAUjipB,EAAOz6M,GAEvD,OADAi+1B,EAAU9/xB,EAAIs8I,EAAOt8I,EACd8/xB,CACR,EAEAzB,qBAAsB,SAAUpgzB,GAC/B,IAAI4kxB,EAAW3kzB,KAAKs+0B,cACpB,OAAO,IAAIrxB,EACVltxB,EAAOr2C,IAAIok0B,UAAUnJ,GAAU3+zB,QAC/B+5C,EAAOp2C,IAAImk0B,UAAUnJ,GAAU77vB,OAAO2uS,SAAS,CAAC,EAAG,IACrD,EAEAkqf,eAAgB,WACf,IAAK,IAAIn31B,KAAOwV,KAAK490B,OACpB,IAAK590B,KAAK490B,OAAOpz1B,GAAKk5nB,OAAU,OAAO,EAExC,OAAO,CACR,IAwCD,IAAIm+N,GAAYvpN,GAAUt1hB,OAAO,CAIhCpzG,QAAS,CAGRi4U,QAAS,EAIT2wT,QAAS,GAITspN,WAAY,MAIZC,aAAc,GAIdC,WAAY,EAIZC,KAAK,EAILC,aAAa,EAIbC,cAAc,EAMdlid,aAAa,EAQbmid,gBAAgB,GAGjB74yB,WAAY,SAAUkkD,EAAK79F,GAE1BoQ,KAAKwrF,KAAOiC,GAEZ79F,EAAU0F,EAAW0K,KAAMpQ,IAGfuy1B,cAAgBr1kB,GAAQmnjB,QAAUrk0B,EAAQ4ooB,QAAU,GAE/D5ooB,EAAQ+0zB,SAAWn/zB,KAAKQ,MAAM4J,EAAQ+0zB,SAAW,GAE5C/0zB,EAAQsy1B,aAIZty1B,EAAQoy1B,aACRpy1B,EAAQi4U,QAAUriV,KAAKkE,IAAIkG,EAAQ4ooB,QAAS5ooB,EAAQi4U,QAAU,KAJ9Dj4U,EAAQoy1B,aACRpy1B,EAAQ4ooB,QAAUhzoB,KAAKmE,IAAIiG,EAAQi4U,QAASj4U,EAAQ4ooB,QAAU,IAM/D5ooB,EAAQi4U,QAAUriV,KAAKmE,IAAI,EAAGiG,EAAQi4U,UAC3Bj4U,EAAQsy1B,YAKnBty1B,EAAQi4U,QAAUriV,KAAKkE,IAAIkG,EAAQ4ooB,QAAS5ooB,EAAQi4U,SAHpDj4U,EAAQ4ooB,QAAUhzoB,KAAKmE,IAAIiG,EAAQi4U,QAASj4U,EAAQ4ooB,SAMnB,iBAAvB5ooB,EAAQky1B,aAClBly1B,EAAQky1B,WAAaly1B,EAAQky1B,WAAW5g2B,MAAM,KAG/C8e,KAAK2qG,GAAG,aAAc3qG,KAAKqi1B,cAC5B,EAMA/J,OAAQ,SAAU7qvB,EAAK60vB,GAUtB,OATIti1B,KAAKwrF,OAASiC,QAAoB32F,IAAbwr1B,IACxBA,GAAW,GAGZti1B,KAAKwrF,KAAOiC,EAEP60vB,GACJti1B,KAAKu2f,SAECv2f,IACR,EAMA87nB,WAAY,SAAU19b,EAAQ58L,GAC7B,IAAImuL,EAAOlnM,SAASskB,cAAc,OAuBlC,OArBA49F,GAAGglF,EAAM,OAAQj0I,EAAK17C,KAAKui1B,YAAavi1B,KAAMwB,EAAMmuL,IACpDhlF,GAAGglF,EAAM,QAASj0I,EAAK17C,KAAKwi1B,aAAcxi1B,KAAMwB,EAAMmuL,KAElD3vL,KAAKpQ,QAAQqwY,aAA4C,KAA7BjgY,KAAKpQ,QAAQqwY,eAC5CtwM,EAAKswM,aAA2C,IAA7BjgY,KAAKpQ,QAAQqwY,YAAuB,GAAKjgY,KAAKpQ,QAAQqwY,aAK/B,iBAAhCjgY,KAAKpQ,QAAQwy1B,iBACvBzypB,EAAKyypB,eAAiBpi1B,KAAKpQ,QAAQwy1B,gBAOpCzypB,EAAK0+K,IAAM,GAEX1+K,EAAKtoF,IAAMrnG,KAAKyi1B,WAAWrkpB,GAEpBzO,CACR,EAQA8ypB,WAAY,SAAUrkpB,GACrB,IAAIroM,EAAO,CACVgkB,EAAG+yP,GAAQmnjB,OAAS,MAAQ,GAC5Bhx0B,EAAG+c,KAAK0i1B,cAActkpB,GACtB73M,EAAG63M,EAAO73M,EACV5C,EAAGy6M,EAAOz6M,EACVm+D,EAAG9hD,KAAK2i1B,kBAET,GAAI3i1B,KAAK4xY,OAAS5xY,KAAK4xY,KAAKhiZ,QAAQ8p0B,IAAIxI,SAAU,CACjD,IAAI0xB,EAAY5i1B,KAAKkg1B,iBAAiBv21B,IAAIhG,EAAIy6M,EAAOz6M,EACjDqc,KAAKpQ,QAAQqy1B,MAChBls1B,EAAQ,EAAI6s1B,GAEb7s1B,EAAK,MAAQ6s1B,CACd,CAEA,OAAO7hoB,EAAS/gN,KAAKwrF,KAAMwX,EAAOjtG,EAAMiK,KAAKpQ,SAC9C,EAEA2y1B,YAAa,SAAU/g1B,EAAMmuL,GAExBm9E,GAAQ0ljB,MACX/qzB,WAAWi0C,EAAKl6C,EAAMxB,KAAM,KAAM2vL,GAAO,GAEzCnuL,EAAK,KAAMmuL,EAEb,EAEA6ypB,aAAc,SAAUhh1B,EAAMmuL,EAAM3qM,GACnC,IAAI6z1B,EAAW740B,KAAKpQ,QAAQmy1B,aACxBlJ,GAAYlppB,EAAK7xL,aAAa,SAAW+60B,IAC5ClppB,EAAKtoF,IAAMwxuB,GAEZr30B,EAAKxc,EAAG2qM,EACT,EAEA0ypB,cAAe,SAAUr91B,GACxBA,EAAE2qM,KAAK8oD,OAAS,IACjB,EAEAkqmB,eAAgB,WACf,IAAIpuqB,EAAOv0K,KAAK890B,UAChBtlN,EAAUx4nB,KAAKpQ,QAAQ4ooB,QAQvB,OAPcx4nB,KAAKpQ,QAAQsy1B,cAI1B3tqB,EAAOikd,EAAUjkd,GAGXA,EANMv0K,KAAKpQ,QAAQoy1B,UAO3B,EAEAU,cAAe,SAAUG,GACxB,IAAIrs1B,EAAQhR,KAAKM,IAAI+81B,EAAUt81B,EAAIs81B,EAAUl/1B,GAAKqc,KAAKpQ,QAAQky1B,WAAW1t1B,OAC1E,OAAO4L,KAAKpQ,QAAQky1B,WAAWtr1B,EAChC,EAGAsp1B,cAAe,WACd,IAAIz61B,EAAGsqM,EACP,IAAKtqM,KAAK2a,KAAK490B,OACd,GAAI590B,KAAK490B,OAAOv41B,GAAG+4M,OAAOt8I,IAAM9hD,KAAK890B,aACpCnupB,EAAO3vL,KAAK490B,OAAOv41B,GAAGk4C,IAEjBk7M,OAASmykB,EACdj7nB,EAAK+oD,QAAUkykB,GAEVj7nB,EAAKttJ,UAAU,CACnBstJ,EAAKtoF,IAAM6jtB,EACX,IAAI9snB,EAASp+L,KAAK490B,OAAOv41B,GAAG+4M,OAC5Bx7J,GAAO+sJ,UACA3vL,KAAK490B,OAAOv41B,GAGnB2a,KAAKw1Z,KAAK,YAAa,CACtB7lO,KAAMA,EACNyO,OAAQA,GAEV,CAGH,EAEAmhpB,YAAa,SAAU/01B,GACtB,IAAImlM,EAAO3vL,KAAK490B,OAAOpz1B,GACvB,GAAKmlM,EAKL,OAFAA,EAAKpyJ,GAAGt/B,aAAa,MAAOitzB,GAErB5yL,GAAUl4nB,UAAUm/0B,YAAYl/0B,KAAKL,KAAMxV,EACnD,EAEAk31B,WAAY,SAAUtjpB,EAAQ11F,EAAKinF,GAClC,GAAK3vL,KAAK4xY,QAASjiN,GAAQA,EAAK7xL,aAAa,SAAWotzB,GAIxD,OAAO5yL,GAAUl4nB,UAAUsh1B,WAAWrh1B,KAAKL,KAAMo+L,EAAQ11F,EAAKinF,EAC/D,IAOD,SAASmzpB,GAAUr1vB,EAAK79F,GACvB,OAAO,IAAIiy1B,GAAUp0vB,EAAK79F,EAC3B,CAoBA,IAAImz1B,GAAelB,GAAU7+uB,OAAO,CAOnCggvB,iBAAkB,CACjB12tB,QAAS,MACTs7J,QAAS,SAITjnN,OAAQ,GAIRzrE,OAAQ,GAIRspC,OAAQ,aAIRnY,aAAa,EAIbw+C,QAAS,SAGVj1E,QAAS,CAIR8p0B,IAAK,KAILlkkB,WAAW,GAGZjsN,WAAY,SAAUkkD,EAAK79F,GAE1BoQ,KAAKwrF,KAAOiC,EAEZ,IAAIw1vB,EAAYjgvB,EAAO,CAAC,EAAGhjG,KAAKgj1B,kBAGhC,IAAK,IAAI391B,KAAKuK,EACPvK,KAAK2a,KAAKpQ,UACfqz1B,EAAU591B,GAAKuK,EAAQvK,IAMzB,IAAI691B,GAFJtz1B,EAAU0F,EAAW0K,KAAMpQ,IAEFuy1B,cAAgBr1kB,GAAQmnjB,OAAS,EAAI,EAC1DtP,EAAW3kzB,KAAKs+0B,cACpB2E,EAAUv81B,MAAQi+zB,EAASp+zB,EAAI281B,EAC/BD,EAAUr81B,OAAS+9zB,EAAShh0B,EAAIu/1B,EAEhClj1B,KAAKij1B,UAAYA,CAClB,EAEAv2gB,MAAO,SAAU35U,GAEhBiN,KAAKmj1B,KAAOnj1B,KAAKpQ,QAAQ8p0B,KAAO3m0B,EAAInD,QAAQ8p0B,IAC5C15zB,KAAKoj1B,YAAczy0B,WAAW3Q,KAAKij1B,UAAUp+wB,SAE7C,IAAIw+wB,EAAgBrj1B,KAAKoj1B,aAAe,IAAM,MAAQ,MACtDpj1B,KAAKij1B,UAAUI,GAAiBrj1B,KAAKmj1B,KAAK30vB,KAE1CqzvB,GAAUzh1B,UAAUssU,MAAMrsU,KAAKL,KAAMjN,EACtC,EAEA0v1B,WAAY,SAAUrkpB,GAErB,IAAI0ipB,EAAa9g1B,KAAKkh1B,kBAAkB9ipB,GACpCs7nB,EAAM15zB,KAAKmj1B,KACXpjzB,EAASmtxB,EAASwM,EAAIjkV,QAAQqrW,EAAW,IAAKpnB,EAAIjkV,QAAQqrW,EAAW,KACrEp31B,EAAMq2C,EAAOr2C,IACbC,EAAMo2C,EAAOp2C,IACbi0M,GAAQ59L,KAAKoj1B,aAAe,KAAOpj1B,KAAKmj1B,OAAStU,GACjD,CAACnl1B,EAAI/F,EAAG+F,EAAInD,EAAGoD,EAAIhG,EAAGgG,EAAIpD,GAC1B,CAACmD,EAAInD,EAAGmD,EAAI/F,EAAGgG,EAAIpD,EAAGoD,EAAIhG,IAAIua,KAAK,KACnCuvF,EAAMo0vB,GAAUzh1B,UAAUqi1B,WAAWpi1B,KAAKL,KAAMo+L,GACpD,OAAO3wG,EACNs9tB,EAAe/qzB,KAAKij1B,UAAWx1vB,EAAKztF,KAAKpQ,QAAQ4lQ,YAChDx1P,KAAKpQ,QAAQ4lQ,UAAY,SAAW,UAAY53D,CACnD,EAIA0lpB,UAAW,SAAUnjyB,EAAQmiyB,GAQ5B,OANAt/uB,EAAOhjG,KAAKij1B,UAAW9iyB,GAElBmiyB,GACJti1B,KAAKu2f,SAGCv2f,IACR,IAUD6h1B,GAAU0B,IAAMR,GAChBD,GAAUU,IALV,SAAsB/1vB,EAAK79F,GAC1B,OAAO,IAAImz1B,GAAat1vB,EAAK79F,EAC9B,EAyBA,IAAI6z1B,GAAW7kd,GAAM57R,OAAO,CAI3BpzG,QAAS,CAIRY,QAAS,IAGV+4C,WAAY,SAAU35C,GACrB0F,EAAW0K,KAAMpQ,GACjByqoB,EAAMr6nB,MACNA,KAAK6hD,QAAU7hD,KAAK6hD,SAAW,CAAC,CACjC,EAEA6qR,MAAO,WACD1sU,KAAKqjkB,aACTrjkB,KAAKu6zB,iBAGLtwtB,GAASjqG,KAAKqjkB,WAAY,0BAG3BrjkB,KAAKwkkB,UAAUr0e,YAAYnwF,KAAKqjkB,YAChCrjkB,KAAK4hC,UACL5hC,KAAK2qG,GAAG,SAAU3qG,KAAK0j1B,aAAc1j1B,KACtC,EAEAmtU,SAAU,WACTntU,KAAKitH,IAAI,SAAUjtH,KAAK0j1B,aAAc1j1B,MACtCA,KAAK2j1B,mBACN,EAEApjS,UAAW,WACV,IAAIh3hB,EAAS,CACZmpzB,UAAW1y0B,KAAKi00B,OAChB1/pB,KAAMv0K,KAAK4j1B,QACXjJ,QAAS360B,KAAK4hC,QACdiizB,QAAS7j1B,KAAK8j1B,YAKf,OAHI9j1B,KAAK66zB,gBACRtxyB,EAAOivzB,SAAWx40B,KAAK+j1B,aAEjBx6zB,CACR,EAEAw6zB,YAAa,SAAUhuiB,GACtB/1S,KAAKgk1B,iBAAiBjuiB,EAAG54S,OAAQ44S,EAAGxhI,KACrC,EAEAqvqB,QAAS,WACR5j1B,KAAKgk1B,iBAAiBhk1B,KAAK4xY,KAAK5oE,YAAahpU,KAAK4xY,KAAK5jE,UACxD,EAEAg2gB,iBAAkB,SAAU7m1B,EAAQo3K,GACnC,IAAI3pJ,EAAQ5qB,KAAK4xY,KAAK+pb,aAAapnpB,EAAMv0K,KAAK26zB,OAC1CiB,EAAW57zB,KAAK4xY,KAAKonB,UAAUwxV,WAAW,GAAMxqvB,KAAKpQ,QAAQY,SAC7Dyz1B,EAAqBjk1B,KAAK4xY,KAAK6jG,QAAQz1e,KAAKs8nB,QAAS/nd,GAErD2vqB,EAAgBtoB,EAASpxE,YAAY5/tB,GAAOt3B,IAAI2w1B,GAC/Cxsf,SAASz3V,KAAK4xY,KAAK4wb,mBAAmBrl0B,EAAQo3K,IAE/Cu4F,GAAQumjB,MACXl2xB,GAAan9B,KAAKqjkB,WAAY6gR,EAAet5zB,GAE7C+rY,GAAY32Z,KAAKqjkB,WAAY6gR,EAE/B,EAEAjQ,OAAQ,WAIP,IAAK,IAAIl20B,KAHTiC,KAAK4hC,UACL5hC,KAAKgk1B,iBAAiBhk1B,KAAKs8nB,QAASt8nB,KAAK26zB,OAE1B36zB,KAAK6hD,QACnB7hD,KAAK6hD,QAAQ9jD,GAAIk20B,QAEnB,EAEA6P,WAAY,WACX,IAAK,IAAI/l1B,KAAMiC,KAAK6hD,QACnB7hD,KAAK6hD,QAAQ9jD,GAAIy20B,UAEnB,EAEAkP,aAAc,WACb,IAAK,IAAI3l1B,KAAMiC,KAAK6hD,QACnB7hD,KAAK6hD,QAAQ9jD,GAAI6jC,SAEnB,EAEAA,QAAS,WAGR,IAAIzhC,EAAIH,KAAKpQ,QAAQY,QACjBuiB,EAAO/S,KAAK4xY,KAAKonB,UACjBtva,EAAMsW,KAAK4xY,KAAK6vb,2BAA2B1uzB,EAAKy3uB,YAAYrqvB,IAAI5U,QAEpEyU,KAAK2txB,QAAU,IAAIs/B,EAAOvj0B,EAAKA,EAAI4J,IAAIyf,EAAKy3uB,WAAW,EAAQ,EAAJrqvB,IAAQ5U,SAEnEyU,KAAKs8nB,QAAUt8nB,KAAK4xY,KAAK5oE,YACzBhpU,KAAK26zB,MAAQ36zB,KAAK4xY,KAAK5jE,SACxB,IAmCG8/E,GAAS21b,GAASzgvB,OAAO,CAI5BpzG,QAAS,CAGRytqB,UAAW,GAGZ98G,UAAW,WACV,IAAIh3hB,EAASk6zB,GAASrj1B,UAAUmgjB,UAAUlgjB,KAAKL,MAE/C,OADAupB,EAAO60zB,aAAep+0B,KAAKmk1B,gBACpB56zB,CACR,EAEA46zB,gBAAiB,WAEhBnk1B,KAAKok1B,sBAAuB,CAC7B,EAEA13gB,MAAO,WACN+2gB,GAASrj1B,UAAUssU,MAAMrsU,KAAKL,MAI9BA,KAAK0sE,OACN,EAEA6tvB,eAAgB,WACf,IAAIz0wB,EAAY9lD,KAAKqjkB,WAAa56kB,SAASskB,cAAc,UAEzD49F,GAAG7kD,EAAW,YAAa9lD,KAAKqk1B,aAAcrk1B,MAC9C2qG,GAAG7kD,EAAW,+CAAgD9lD,KAAKqxU,SAAUrxU,MAC7E2qG,GAAG7kD,EAAW,WAAY9lD,KAAKsk1B,gBAAiBtk1B,MAChD8lD,EAAmC,yBAAI,EAEvC9lD,KAAK0oC,KAAOod,EAAUx4B,WAAW,KAClC,EAEAq2zB,kBAAmB,WAClBp4B,EAAgBvrzB,KAAKuk1B,uBACdvk1B,KAAK0oC,KACZ9F,GAAO5iC,KAAKqjkB,YACZp2c,GAAIjtH,KAAKqjkB,mBACFrjkB,KAAKqjkB,UACb,EAEAqgR,aAAc,WACb,IAAI1j1B,KAAKok1B,qBAAT,CAIA,IAAK,IAAIrm1B,KADTiC,KAAKwk1B,cAAgB,KACNxk1B,KAAK6hD,QACX7hD,KAAK6hD,QAAQ9jD,GACf6jC,UAEP5hC,KAAKyk1B,SARoC,CAS1C,EAEA7izB,QAAS,WACR,IAAI5hC,KAAK4xY,KAAK4yb,iBAAkBxk0B,KAAK2txB,QAArC,CAEA81D,GAASrj1B,UAAUwhC,QAAQvhC,KAAKL,MAEhC,IAAInG,EAAImG,KAAK2txB,QACT7nuB,EAAY9lD,KAAKqjkB,WACjBtwjB,EAAOlZ,EAAEm/Z,UACT71a,EAAI2pR,GAAQmnjB,OAAS,EAAI,EAE7Bt9Z,GAAY7wW,EAAWjsD,EAAEnQ,KAGzBo8D,EAAUp/D,MAAQvD,EAAI4vB,EAAKxsB,EAC3Bu/D,EAAUl/D,OAASzD,EAAI4vB,EAAKpvB,EAC5BmiE,EAAUp8B,MAAMhjC,MAAQqsB,EAAKxsB,EAAI,KACjCu/D,EAAUp8B,MAAM9iC,OAASmsB,EAAKpvB,EAAI,KAE9BmpR,GAAQmnjB,QACXj0zB,KAAK0oC,KAAK9d,MAAM,EAAG,GAIpB5qB,KAAK0oC,KAAKza,WAAWp0B,EAAEnQ,IAAInD,GAAIsT,EAAEnQ,IAAI/F,GAGrCqc,KAAKw1Z,KAAK,SAzB8C,CA0BzD,EAEAy+a,OAAQ,WACPwP,GAASrj1B,UAAU6z0B,OAAO5z0B,KAAKL,MAE3BA,KAAKok1B,uBACRpk1B,KAAKok1B,sBAAuB,EAC5Bpk1B,KAAK0j1B,eAEP,EAEA1P,UAAW,SAAUr1c,GACpB3+X,KAAK0k1B,iBAAiB/ld,GACtB3+X,KAAK6hD,QAAQw4kB,EAAM17P,IAAUA,EAE7B,IAAI9rY,EAAQ8rY,EAAMgmd,OAAS,CAC1Bhmd,MAAOA,EACP9jW,KAAM76B,KAAK4k1B,UACX981B,KAAM,MAEHkY,KAAK4k1B,YAAa5k1B,KAAK4k1B,UAAU981B,KAAO+K,GAC5CmN,KAAK4k1B,UAAY/x1B,EACjBmN,KAAK6k1B,WAAa7k1B,KAAK6k1B,YAAc7k1B,KAAK4k1B,SAC3C,EAEA1Q,SAAU,SAAUv1c,GACnB3+X,KAAK8k1B,eAAenmd,EACrB,EAEAw1c,YAAa,SAAUx1c,GACtB,IAAI9rY,EAAQ8rY,EAAMgmd,OACd781B,EAAO+K,EAAM/K,KACb+yC,EAAOhoC,EAAMgoC,KAEb/yC,EACHA,EAAK+yC,KAAOA,EAEZ76B,KAAK4k1B,UAAY/pzB,EAEdA,EACHA,EAAK/yC,KAAOA,EAEZkY,KAAK6k1B,WAAa/81B,SAGZ62Y,EAAMgmd,cAEN3k1B,KAAK6hD,QAAQw4kB,EAAM17P,IAE1B3+X,KAAK8k1B,eAAenmd,EACrB,EAEAy1c,YAAa,SAAUz1c,GAGtB3+X,KAAK+k1B,oBAAoBpmd,GACzBA,EAAM61c,WACN71c,EAAM/8V,UAGN5hC,KAAK8k1B,eAAenmd,EACrB,EAEA01c,aAAc,SAAU11c,GACvB3+X,KAAK0k1B,iBAAiB/ld,GACtB3+X,KAAK8k1B,eAAenmd,EACrB,EAEA+ld,iBAAkB,SAAU/ld,GAC3B,GAAuC,iBAA5BA,EAAM/uY,QAAQmva,UAAwB,CAChD,IAEIimb,EACA3/1B,EAHAixE,EAAQqoU,EAAM/uY,QAAQmva,UAAU79a,MAAM,SACtC69a,EAAY,GAGhB,IAAK15a,EAAI,EAAGA,EAAIixE,EAAMliE,OAAQ/O,IAAK,CAGlC,GAFA2/1B,EAAY700B,OAAOmmD,EAAMjxE,IAErBU,MAAMi/1B,GAAc,OACxBjmb,EAAUjra,KAAKkx1B,EAChB,CACArmd,EAAM/uY,QAAQq11B,WAAalmb,CAC5B,MACCpgC,EAAM/uY,QAAQq11B,WAAatmd,EAAM/uY,QAAQmva,SAE3C,EAEA+lb,eAAgB,SAAUnmd,GACpB3+X,KAAK4xY,OAEV5xY,KAAK+k1B,oBAAoBpmd,GACzB3+X,KAAKuk1B,eAAiBvk1B,KAAKuk1B,gBAAkBt10B,EAAiBjP,KAAKyk1B,QAASzk1B,MAC7E,EAEA+k1B,oBAAqB,SAAUpmd,GAC9B,GAAIA,EAAMk2c,UAAW,CACpB,IAAIrk1B,GAAWmuY,EAAM/uY,QAAQq3B,QAAU,GAAK,EAC5CjnB,KAAKwk1B,cAAgBxk1B,KAAKwk1B,eAAiB,IAAIv3B,EAC/CjtzB,KAAKwk1B,cAAcxhvB,OAAO27R,EAAMk2c,UAAUnr1B,IAAI+tW,SAAS,CAACjnW,EAASA,KACjEwP,KAAKwk1B,cAAcxhvB,OAAO27R,EAAMk2c,UAAUlr1B,IAAI2J,IAAI,CAAC9C,EAASA,IAC7D,CACD,EAEAi01B,QAAS,WACRzk1B,KAAKuk1B,eAAiB,KAElBvk1B,KAAKwk1B,gBACRxk1B,KAAKwk1B,cAAc961B,IAAIqk0B,SACvB/tzB,KAAKwk1B,cAAc761B,IAAIqk0B,SAGxBhuzB,KAAKkl1B,SACLll1B,KAAK0sE,QAEL1sE,KAAKwk1B,cAAgB,IACtB,EAEAU,OAAQ,WACP,IAAInlzB,EAAS//B,KAAKwk1B,cAClB,GAAIzkzB,EAAQ,CACX,IAAIhtB,EAAOgtB,EAAOi5X,UAClBh5Z,KAAK0oC,KAAKlb,UAAUuS,EAAOr2C,IAAInD,EAAGw5C,EAAOr2C,IAAI/F,EAAGovB,EAAKxsB,EAAGwsB,EAAKpvB,EAC9D,MACCqc,KAAK0oC,KAAKjc,OACVzsB,KAAK0oC,KAAKvL,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACtCn9B,KAAK0oC,KAAKlb,UAAU,EAAG,EAAGxtB,KAAKqjkB,WAAW38kB,MAAOsZ,KAAKqjkB,WAAWz8kB,QACjEoZ,KAAK0oC,KAAK7b,SAEZ,EAEA6/C,MAAO,WACN,IAAIiyT,EAAO5+V,EAAS//B,KAAKwk1B,cAEzB,GADAxk1B,KAAK0oC,KAAKjc,OACNsT,EAAQ,CACX,IAAIhtB,EAAOgtB,EAAOi5X,UAClBh5Z,KAAK0oC,KAAKva,YACVnuB,KAAK0oC,KAAK77C,KAAKkzC,EAAOr2C,IAAInD,EAAGw5C,EAAOr2C,IAAI/F,EAAGovB,EAAKxsB,EAAGwsB,EAAKpvB,GACxDqc,KAAK0oC,KAAKzZ,MACX,CAEAjvB,KAAKml1B,UAAW,EAEhB,IAAK,IAAIty1B,EAAQmN,KAAK6k1B,WAAYhy1B,EAAOA,EAAQA,EAAM/K,KACtD62Y,EAAQ9rY,EAAM8rY,QACT5+V,GAAW4+V,EAAMk2c,WAAal2c,EAAMk2c,UAAUz5b,WAAWr7W,KAC7D4+V,EAAMy1c,cAIRp00B,KAAKml1B,UAAW,EAEhBnl1B,KAAK0oC,KAAK7b,SACX,EAEAypzB,YAAa,SAAU33c,EAAOxwS,GAC7B,GAAKnuF,KAAKml1B,SAAV,CAEA,IAAI9/1B,EAAG2gC,EAAGusyB,EAAMpyzB,EACZm2D,EAAQqoU,EAAMi3c,OACdnm1B,EAAM6mE,EAAMliE,OACZ01B,EAAM9pB,KAAK0oC,KAEf,GAAKj5C,EAAL,CAIA,IAFAq6B,EAAIqE,YAEC9oC,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CACzB,IAAK2gC,EAAI,EAAGusyB,EAAOj8vB,EAAMjxE,GAAG+O,OAAQ4xB,EAAIusyB,EAAMvsyB,IAC7C7lB,EAAIm2D,EAAMjxE,GAAG2gC,GACb8D,EAAI9D,EAAI,SAAW,UAAU7lB,EAAE5Z,EAAG4Z,EAAExc,GAEjCwqG,GACHrkE,EAAIuE,WAEN,CAEAruB,KAAKol1B,YAAYt7zB,EAAK60W,EAdF,CAPU,CAwB/B,EAEAm2c,cAAe,SAAUn2c,GAExB,GAAK3+X,KAAKml1B,WAAYxmd,EAAMo2c,SAA5B,CAEA,IAAI500B,EAAIw+X,EAAMg2c,OACV7qzB,EAAM9pB,KAAK0oC,KACX3uB,EAAIv0B,KAAKmE,IAAInE,KAAK+F,MAAMozY,EAAM6kc,SAAU,GACxCvg1B,GAAKuC,KAAKmE,IAAInE,KAAK+F,MAAMozY,EAAMi2c,UAAW,IAAM76zB,GAAKA,EAE/C,IAAN92B,IACH6mC,EAAI2C,OACJ3C,EAAIc,MAAM,EAAG3nC,IAGd6mC,EAAIqE,YACJrE,EAAIsE,IAAIjuB,EAAE5Z,EAAG4Z,EAAExc,EAAIV,EAAG82B,EAAG,EAAa,EAAVv0B,KAAKytB,IAAQ,GAE/B,IAANhwB,GACH6mC,EAAI+C,UAGL7sB,KAAKol1B,YAAYt7zB,EAAK60W,EAnB0B,CAoBjD,EAEAymd,YAAa,SAAUt7zB,EAAK60W,GAC3B,IAAI/uY,EAAU+uY,EAAM/uY,QAEhBA,EAAQ6+B,OACX3E,EAAIusD,YAAczmF,EAAQqxb,YAC1Bn3Z,EAAIuG,UAAYzgC,EAAQ88d,WAAa98d,EAAQo3B,MAC7C8C,EAAI2E,KAAK7+B,EAAQkk1B,UAAY,YAG1Blk1B,EAAQ++B,QAA6B,IAAnB/+B,EAAQq3B,SACzB6C,EAAIgrC,aACPhrC,EAAIgrC,YAAY6pU,EAAM/uY,SAAW+uY,EAAM/uY,QAAQq11B,YAAc,IAE9Dn7zB,EAAIusD,YAAczmF,EAAQ6N,QAC1BqsB,EAAI4G,UAAY9gC,EAAQq3B,OACxB6C,EAAI2G,YAAc7gC,EAAQo3B,MAC1B8C,EAAI+7C,QAAUj2E,EAAQi2E,QACtB/7C,EAAI47C,SAAW91E,EAAQ81E,SACvB57C,EAAI6E,SAEN,EAKA0iT,SAAU,SAAUrsV,GAGnB,IAFA,IAAiD25Y,EAAO0md,EAApDx2zB,EAAQ7uB,KAAK4xY,KAAKiwb,uBAAuB780B,GAEpC6N,EAAQmN,KAAK6k1B,WAAYhy1B,EAAOA,EAAQA,EAAM/K,MACtD62Y,EAAQ9rY,EAAM8rY,OACJ/uY,QAAQ6ld,aAAe92E,EAAMq2c,eAAenmzB,KACpC,UAAX7pC,EAAEgrB,MAA+B,aAAXhrB,EAAEgrB,OAAyBhQ,KAAK4xY,KAAKqxb,gBAAgBtkc,MAChF0md,EAAe1md,GAIlB3+X,KAAKsl1B,aAAWD,GAAe,CAACA,GAAuBrg2B,EACxD,EAEAq/1B,aAAc,SAAUr/1B,GACvB,GAAKgb,KAAK4xY,OAAQ5xY,KAAK4xY,KAAKkG,SAASmlc,WAAYj90B,KAAK4xY,KAAK4yb,eAA3D,CAEA,IAAI31yB,EAAQ7uB,KAAK4xY,KAAKiwb,uBAAuB780B,GAC7Cgb,KAAKul1B,kBAAkBvg2B,EAAG6pC,EAH2D,CAItF,EAGAy1zB,gBAAiB,SAAUt/1B,GAC1B,IAAI25Y,EAAQ3+X,KAAKwl1B,cACb7md,IAEHj1R,GAAY1pG,KAAKqjkB,WAAY,uBAC7BrjkB,KAAKsl1B,WAAW,CAAC3md,GAAQ35Y,EAAG,YAC5Bgb,KAAKwl1B,cAAgB,KACrBxl1B,KAAKyl1B,sBAAuB,EAE9B,EAEAF,kBAAmB,SAAUvg2B,EAAG6pC,GAC/B,IAAI7uB,KAAKyl1B,qBAAT,CAMA,IAFA,IAAI9md,EAAO+md,EAEF7y1B,EAAQmN,KAAK6k1B,WAAYhy1B,EAAOA,EAAQA,EAAM/K,MACtD62Y,EAAQ9rY,EAAM8rY,OACJ/uY,QAAQ6ld,aAAe92E,EAAMq2c,eAAenmzB,KACrD62zB,EAAwB/md,GAItB+md,IAA0B1l1B,KAAKwl1B,gBAClCxl1B,KAAKsk1B,gBAAgBt/1B,GAEjB0g2B,IACHz7uB,GAASjqG,KAAKqjkB,WAAY,uBAC1BrjkB,KAAKsl1B,WAAW,CAACI,GAAwB1g2B,EAAG,aAC5Cgb,KAAKwl1B,cAAgBE,IAIvB1l1B,KAAKsl1B,aAAWtl1B,KAAKwl1B,eAAgB,CAACxl1B,KAAKwl1B,eAAwBxg2B,GAEnEgb,KAAKyl1B,sBAAuB,EAC5Bh+0B,WAAWi0C,EAAK,WACf17C,KAAKyl1B,sBAAuB,CAC7B,EAAGzl1B,MAAO,GA1BV,CA2BD,EAEAsl1B,WAAY,SAAU3kxB,EAAQ37E,EAAGgrB,GAChChQ,KAAK4xY,KAAKuxb,cAAcn+0B,EAAGgrB,GAAQhrB,EAAEgrB,KAAM2wD,EAC5C,EAEAsywB,cAAe,SAAUt0c,GACxB,IAAI9rY,EAAQ8rY,EAAMgmd,OAElB,GAAK9x1B,EAAL,CAEA,IAAI/K,EAAO+K,EAAM/K,KACb+yC,EAAOhoC,EAAMgoC,KAEb/yC,IACHA,EAAK+yC,KAAOA,EAKTA,EACHA,EAAK/yC,KAAOA,EACFA,IAGVkY,KAAK6k1B,WAAa/81B,GAGnB+K,EAAMgoC,KAAO76B,KAAK4k1B,UAClB5k1B,KAAK4k1B,UAAU981B,KAAO+K,EAEtBA,EAAM/K,KAAO,KACbkY,KAAK4k1B,UAAY/x1B,EAEjBmN,KAAK8k1B,eAAenmd,GAzBE,CA0BvB,EAEA41c,aAAc,SAAU51c,GACvB,IAAI9rY,EAAQ8rY,EAAMgmd,OAElB,GAAK9x1B,EAAL,CAEA,IAAI/K,EAAO+K,EAAM/K,KACb+yC,EAAOhoC,EAAMgoC,KAEbA,IACHA,EAAK/yC,KAAOA,EAKTA,EACHA,EAAK+yC,KAAOA,EACFA,IAGV76B,KAAK4k1B,UAAY/pzB,GAGlBhoC,EAAMgoC,KAAO,KAEbhoC,EAAM/K,KAAOkY,KAAK6k1B,WAClB7k1B,KAAK6k1B,WAAWhqzB,KAAOhoC,EACvBmN,KAAK6k1B,WAAahy1B,EAElBmN,KAAK8k1B,eAAenmd,GAzBE,CA0BvB,IAKD,SAAStxW,GAAOz9B,GACf,OAAOk9Q,GAAQz/O,OAAS,IAAIygY,GAAOl+Z,GAAW,IAC/C,CAOA,IAAI+11B,GAAY,WACf,IAEC,OADAl91B,SAASm91B,WAAWty1B,IAAI,OAAQ,iCACzB,SAAUC,GAChB,OAAO9K,SAASskB,cAAc,SAAWxZ,EAAO,iBACjD,CACD,CAAE,MAAOvO,GAGT,CACA,OAAO,SAAUuO,GAChB,OAAO9K,SAASskB,cAAc,IAAMxZ,EAAO,uDAC5C,CACA,CAbe,GAyBZsy1B,GAAW,CAEdtrB,eAAgB,WACfv6zB,KAAKqjkB,WAAakzP,GAAS,MAAO,wBACnC,EAEA30xB,QAAS,WACJ5hC,KAAK4xY,KAAK4yb,iBACdif,GAASrj1B,UAAUwhC,QAAQvhC,KAAKL,MAChCA,KAAKw1Z,KAAK,UACX,EAEAw+a,UAAW,SAAUr1c,GACpB,IAAI74U,EAAY64U,EAAM0kM,WAAasiR,GAAU,SAE7C17uB,GAASnkD,EAAW,sBAAwB9lD,KAAKpQ,QAAQk6G,WAAa,KAEtEhkD,EAAUggyB,UAAY,MAEtBnnd,EAAMv3T,MAAQu+wB,GAAU,QACxB7/xB,EAAUqqC,YAAYwuS,EAAMv3T,OAE5BpnE,KAAKq00B,aAAa11c,GAClB3+X,KAAK6hD,QAAQw4kB,EAAM17P,IAAUA,CAC9B,EAEAu1c,SAAU,SAAUv1c,GACnB,IAAI74U,EAAY64U,EAAM0kM,WACtBrjkB,KAAKqjkB,WAAWlze,YAAYrqC,GAExB64U,EAAM/uY,QAAQ6ld,aACjB92E,EAAMqwc,qBAAqBlpxB,EAE7B,EAEAquxB,YAAa,SAAUx1c,GACtB,IAAI74U,EAAY64U,EAAM0kM,WACtBzgiB,GAAOkjB,GACP64U,EAAMswc,wBAAwBnpxB,UACvB9lD,KAAK6hD,QAAQw4kB,EAAM17P,GAC3B,EAEA01c,aAAc,SAAU11c,GACvB,IAAIhwW,EAASgwW,EAAM0wB,QACf5gY,EAAOkwW,EAAMuwB,MACbt/Z,EAAU+uY,EAAM/uY,QAChBk2D,EAAY64U,EAAM0kM,WAEtBv9gB,EAAUigyB,UAAYn21B,EAAQ++B,OAC9Bm3B,EAAU+2N,SAAWjtR,EAAQ6+B,KAEzB7+B,EAAQ++B,QACNA,IACJA,EAASgwW,EAAM0wB,QAAUs2b,GAAU,WAEpC7/xB,EAAUqqC,YAAYxhE,GACtBA,EAAO1H,OAASr3B,EAAQq3B,OAAS,KACjC0H,EAAO3H,MAAQp3B,EAAQo3B,MACvB2H,EAAOlxB,QAAU7N,EAAQ6N,QAErB7N,EAAQmva,UACXpwY,EAAOq3zB,UAAYj20B,EAAQngB,EAAQmva,WAC/Bnva,EAAQmva,UAAU7ga,KAAK,KACvBtO,EAAQmva,UAAUh7a,QAAQ,WAAY,KAE1C4qC,EAAOq3zB,UAAY,GAEpBr3zB,EAAOs3zB,OAASr21B,EAAQi2E,QAAQ9hF,QAAQ,OAAQ,QAChD4qC,EAAOu3zB,UAAYt21B,EAAQ81E,UAEjB/2C,IACVm3B,EAAUoqC,YAAYvhE,GACtBgwW,EAAM0wB,QAAU,MAGbz/Z,EAAQ6+B,MACNA,IACJA,EAAOkwW,EAAMuwB,MAAQy2b,GAAU,SAEhC7/xB,EAAUqqC,YAAY1hE,GACtBA,EAAKzH,MAAQp3B,EAAQ88d,WAAa98d,EAAQo3B,MAC1CyH,EAAKhxB,QAAU7N,EAAQqxb,aAEbxyZ,IACVq3B,EAAUoqC,YAAYzhE,GACtBkwW,EAAMuwB,MAAQ,KAEhB,EAEA4lb,cAAe,SAAUn2c,GACxB,IAAIx+X,EAAIw+X,EAAMg2c,OAAOpp1B,QACjBwuB,EAAIv0B,KAAK+F,MAAMozY,EAAM6kc,SACrB5ie,EAAKp7W,KAAK+F,MAAMozY,EAAMi2c,UAAY76zB,GAEtC/Z,KAAKmm1B,SAASxnd,EAAOA,EAAMo2c,SAAW,OACrC,MAAQ500B,EAAE5Z,EAAI,IAAM4Z,EAAExc,EAAI,IAAMo2B,EAAI,IAAM6mV,EAA1C,cACF,EAEAulf,SAAU,SAAUxnd,EAAO91T,GAC1B81T,EAAMv3T,MAAMjlE,EAAI0mE,CACjB,EAEAoqwB,cAAe,SAAUt0c,GACxB63b,GAAQ73b,EAAM0kM,WACf,EAEAkxQ,aAAc,SAAU51c,GACvB83b,GAAO93b,EAAM0kM,WACd,GAGG3ikB,GAASosQ,GAAQ4njB,IAAMixB,GAAYvzB,EAsCnCg0B,GAAM3C,GAASzgvB,OAAO,CAEzBu3tB,eAAgB,WACfv6zB,KAAKqjkB,WAAa3ikB,GAAO,OAGzBV,KAAKqjkB,WAAWplkB,aAAa,iBAAkB,QAE/C+B,KAAKqm1B,WAAa3l1B,GAAO,KACzBV,KAAKqjkB,WAAWlze,YAAYnwF,KAAKqm1B,WAClC,EAEA1C,kBAAmB,WAClB/gzB,GAAO5iC,KAAKqjkB,YACZp2c,GAAIjtH,KAAKqjkB,mBACFrjkB,KAAKqjkB,kBACLrjkB,KAAKqm1B,kBACLrm1B,KAAKsm1B,QACb,EAEA1kzB,QAAS,WACR,IAAI5hC,KAAK4xY,KAAK4yb,iBAAkBxk0B,KAAK2txB,QAArC,CAEA81D,GAASrj1B,UAAUwhC,QAAQvhC,KAAKL,MAEhC,IAAInG,EAAImG,KAAK2txB,QACT56wB,EAAOlZ,EAAEm/Z,UACTlzW,EAAY9lD,KAAKqjkB,WAGhBrjkB,KAAKsm1B,UAAatm1B,KAAKsm1B,SAASv+nB,OAAOh1M,KAC3C/S,KAAKsm1B,SAAWvz0B,EAChB+yC,EAAU7nD,aAAa,QAAS8U,EAAKxsB,GACrCu/D,EAAU7nD,aAAa,SAAU8U,EAAKpvB,IAIvCgza,GAAY7wW,EAAWjsD,EAAEnQ,KACzBo8D,EAAU7nD,aAAa,UAAW,CAACpE,EAAEnQ,IAAInD,EAAGsT,EAAEnQ,IAAI/F,EAAGovB,EAAKxsB,EAAGwsB,EAAKpvB,GAAGua,KAAK,MAE1E8B,KAAKw1Z,KAAK,SAnB8C,CAoBzD,EAIAw+a,UAAW,SAAUr1c,GACpB,IAAI91T,EAAO81T,EAAMv3T,MAAQ1mE,GAAO,QAK5Bi+X,EAAM/uY,QAAQk6G,WACjBG,GAASphC,EAAM81T,EAAM/uY,QAAQk6G,WAG1B60R,EAAM/uY,QAAQ6ld,aACjBxrW,GAASphC,EAAM,uBAGhB7oE,KAAKq00B,aAAa11c,GAClB3+X,KAAK6hD,QAAQw4kB,EAAM17P,IAAUA,CAC9B,EAEAu1c,SAAU,SAAUv1c,GACd3+X,KAAKqm1B,YAAcrm1B,KAAKu6zB,iBAC7Bv6zB,KAAKqm1B,WAAWl2vB,YAAYwuS,EAAMv3T,OAClCu3T,EAAMqwc,qBAAqBrwc,EAAMv3T,MAClC,EAEA+swB,YAAa,SAAUx1c,GACtB/7V,GAAO+7V,EAAMv3T,OACbu3T,EAAMswc,wBAAwBtwc,EAAMv3T,cAC7BpnE,KAAK6hD,QAAQw4kB,EAAM17P,GAC3B,EAEAy1c,YAAa,SAAUz1c,GACtBA,EAAM61c,WACN71c,EAAM/8V,SACP,EAEAyyyB,aAAc,SAAU11c,GACvB,IAAI91T,EAAO81T,EAAMv3T,MACbx3E,EAAU+uY,EAAM/uY,QAEfi5E,IAEDj5E,EAAQ++B,QACXk6C,EAAK5qE,aAAa,SAAUrO,EAAQo3B,OACpC6hD,EAAK5qE,aAAa,iBAAkBrO,EAAQ6N,SAC5CorE,EAAK5qE,aAAa,eAAgBrO,EAAQq3B,QAC1C4hD,EAAK5qE,aAAa,iBAAkBrO,EAAQi2E,SAC5CgD,EAAK5qE,aAAa,kBAAmBrO,EAAQ81E,UAEzC91E,EAAQmva,UACXl2V,EAAK5qE,aAAa,mBAAoBrO,EAAQmva,WAE9Cl2V,EAAK1qE,gBAAgB,oBAGlBvO,EAAQ0ia,WACXzpV,EAAK5qE,aAAa,oBAAqBrO,EAAQ0ia,YAE/CzpV,EAAK1qE,gBAAgB,sBAGtB0qE,EAAK5qE,aAAa,SAAU,QAGzBrO,EAAQ6+B,MACXo6C,EAAK5qE,aAAa,OAAQrO,EAAQ88d,WAAa98d,EAAQo3B,OACvD6hD,EAAK5qE,aAAa,eAAgBrO,EAAQqxb,aAC1Cp4W,EAAK5qE,aAAa,YAAarO,EAAQkk1B,UAAY,YAEnDjrwB,EAAK5qE,aAAa,OAAQ,QAE5B,EAEAq40B,YAAa,SAAU33c,EAAOxwS,GAC7BnuF,KAAKmm1B,SAASxnd,EAAO0zb,EAAa1zb,EAAMi3c,OAAQznvB,GACjD,EAEA2mvB,cAAe,SAAUn2c,GACxB,IAAIx+X,EAAIw+X,EAAMg2c,OACV56zB,EAAIv0B,KAAKmE,IAAInE,KAAK+F,MAAMozY,EAAM6kc,SAAU,GAExCp1yB,EAAM,IAAMrU,EAAI,KADXv0B,KAAKmE,IAAInE,KAAK+F,MAAMozY,EAAMi2c,UAAW,IAAM76zB,GACrB,UAG3Bx2B,EAAIo7Y,EAAMo2c,SAAW,OACxB,KAAO500B,EAAE5Z,EAAIwzB,GAAK,IAAM5Z,EAAExc,EAC1ByqC,EAAW,EAAJrU,EAAS,MAChBqU,EAAY,GAAJrU,EAAS,MAElB/Z,KAAKmm1B,SAASxnd,EAAOp7Y,EACtB,EAEA4i2B,SAAU,SAAUxnd,EAAO91T,GAC1B81T,EAAMv3T,MAAMnpE,aAAa,IAAK4qE,EAC/B,EAGAoqwB,cAAe,SAAUt0c,GACxB63b,GAAQ73b,EAAMv3T,MACf,EAEAmtwB,aAAc,SAAU51c,GACvB83b,GAAO93b,EAAMv3T,MACd,IAUD,SAASimY,GAAIz9c,GACZ,OAAOk9Q,GAAQugM,KAAOvgM,GAAQ4njB,IAAM,IAAI0xB,GAAIx21B,GAAW,IACxD,CATIk9Q,GAAQ4njB,KACX0xB,GAAIxjhB,QAAQijhB,IAUb7y1B,GAAI4vU,QAAQ,CAKXmxgB,YAAa,SAAUp1c,GAItB,IAAIi7b,EAAWj7b,EAAM/uY,QAAQgq0B,UAAY55zB,KAAKum1B,iBAAiB5nd,EAAM/uY,QAAQm5pB,OAAS/opB,KAAKpQ,QAAQgq0B,UAAY55zB,KAAKog0B,UASpH,OAPKxG,IACJA,EAAW55zB,KAAKog0B,UAAYpg0B,KAAKwm1B,mBAG7Bxm1B,KAAKgo0B,SAASpO,IAClB55zB,KAAK6ia,SAAS+2Z,GAERA,CACR,EAEA2sB,iBAAkB,SAAUhz1B,GAC3B,GAAa,gBAATA,QAAmCuD,IAATvD,EAC7B,OAAO,EAGR,IAAIqm0B,EAAW55zB,KAAKmi0B,eAAe5u0B,GAKnC,YAJiBuD,IAAb8i0B,IACHA,EAAW55zB,KAAKwm1B,gBAAgB,CAACz9L,KAAMx1pB,IACvCyM,KAAKmi0B,eAAe5u0B,GAAQqm0B,GAEtBA,CACR,EAEA4sB,gBAAiB,SAAU521B,GAI1B,OAAQoQ,KAAKpQ,QAAQ621B,cAAgBp5zB,GAAOz9B,IAAay9c,GAAIz9c,EAC9D,IA8BD,IAAI821B,GAAY3vc,GAAQ/zS,OAAO,CAC9Bz5D,WAAY,SAAUu6xB,EAAcl00B,GACnCmnZ,GAAQ32Y,UAAUmpC,WAAWlpC,KAAKL,KAAMA,KAAK2m1B,iBAAiB7iB,GAAel00B,EAC9E,EAIA2o1B,UAAW,SAAUzU,GACpB,OAAO9j0B,KAAKssvB,WAAWtsvB,KAAK2m1B,iBAAiB7iB,GAC9C,EAEA6iB,iBAAkB,SAAU7iB,GAE3B,MAAO,EADPA,EAAevW,EAAeuW,IAEhBzU,eACbyU,EAAavU,eACbuU,EAAaxU,eACbwU,EAAapU,eAEf,IASD02B,GAAI1l1B,OAASA,GACb0l1B,GAAI/zB,aAAeA,EAEnBmkB,GAAQE,gBAAkBA,GAC1BF,GAAQS,eAAiBA,GACzBT,GAAQW,gBAAkBA,GAC1BX,GAAQiB,eAAiBA,GACzBjB,GAAQkB,gBAAkBA,GAC1BlB,GAAQmB,WAAaA,GACrBnB,GAAQG,UAAYA,GASpB3j1B,GAAIu5vB,aAAa,CAIhBo3E,SAAS,IAGV,IAAIijB,GAAUhc,GAAQ5nuB,OAAO,CAC5Bz5D,WAAY,SAAUx2C,GACrBiN,KAAK4xY,KAAO7+Y,EACZiN,KAAKqjkB,WAAatwkB,EAAIswkB,WACtBrjkB,KAAK6m1B,MAAQ9z1B,EAAIot0B,OAAO2mB,YACxB9m1B,KAAK+m1B,mBAAqB,EAC1Bh01B,EAAI43G,GAAG,SAAU3qG,KAAKgrC,SAAUhrC,KACjC,EAEA6q0B,SAAU,WACTlguB,GAAG3qG,KAAKqjkB,WAAY,YAAarjkB,KAAKgn1B,aAAchn1B,KACrD,EAEA8q0B,YAAa,WACZ79sB,GAAIjtH,KAAKqjkB,WAAY,YAAarjkB,KAAKgn1B,aAAchn1B,KACtD,EAEA6wG,MAAO,WACN,OAAO7wG,KAAKug0B,MACb,EAEAv1xB,SAAU,WACTpI,GAAO5iC,KAAK6m1B,cACL7m1B,KAAK6m1B,KACb,EAEAI,YAAa,WACZjn1B,KAAK+m1B,mBAAqB,EAC1B/m1B,KAAKug0B,QAAS,CACf,EAEA2mB,yBAA0B,WACO,IAA5Bln1B,KAAK+m1B,qBACRp/0B,aAAa3H,KAAK+m1B,oBAClB/m1B,KAAK+m1B,mBAAqB,EAE5B,EAEAC,aAAc,SAAUhi2B,GACvB,IAAKA,EAAEgtS,UAA0B,IAAZhtS,EAAEitS,OAA8B,IAAbjtS,EAAEktS,OAAkB,OAAO,EAInElyR,KAAKkn1B,2BACLln1B,KAAKin1B,cAELpxB,KACAkB,KAEA/2zB,KAAKyr0B,YAAczr0B,KAAK4xY,KAAKgwb,2BAA2B580B,GAExD2lH,GAAGliH,SAAU,CACZ0+1B,YAAazh1B,GACbk7d,UAAW5ge,KAAKqk1B,aAChBxjX,QAAS7ge,KAAKon1B,WACd/f,QAASrn0B,KAAKqn1B,YACZrn1B,KACJ,EAEAqk1B,aAAc,SAAUr/1B,GAClBgb,KAAKug0B,SACTvg0B,KAAKug0B,QAAS,EAEdvg0B,KAAKsn1B,KAAO/wB,GAAS,MAAO,mBAAoBv2zB,KAAKqjkB,YACrDp5d,GAASjqG,KAAKqjkB,WAAY,qBAE1BrjkB,KAAK4xY,KAAK4jB,KAAK,iBAGhBx1Z,KAAK200B,OAAS300B,KAAK4xY,KAAKgwb,2BAA2B580B,GAEnD,IAAI+6C,EAAS,IAAIktxB,EAAOjtzB,KAAK200B,OAAQ300B,KAAKyr0B,aACtC14zB,EAAOgtB,EAAOi5X,UAElBrC,GAAY32Z,KAAKsn1B,KAAMvnzB,EAAOr2C,KAE9BsW,KAAKsn1B,KAAK59zB,MAAMhjC,MAASqsB,EAAKxsB,EAAI,KAClCyZ,KAAKsn1B,KAAK59zB,MAAM9iC,OAASmsB,EAAKpvB,EAAI,IACnC,EAEAogb,QAAS,WACJ/ja,KAAKug0B,SACR39xB,GAAO5iC,KAAKsn1B,MACZ59uB,GAAY1pG,KAAKqjkB,WAAY,sBAG9ByyP,KACAkB,KAEA/psB,GAAIxkI,SAAU,CACb0+1B,YAAazh1B,GACbk7d,UAAW5ge,KAAKqk1B,aAChBxjX,QAAS7ge,KAAKon1B,WACd/f,QAASrn0B,KAAKqn1B,YACZrn1B,KACJ,EAEAon1B,WAAY,SAAUpi2B,GACrB,IAAiB,IAAZA,EAAEitS,OAA8B,IAAbjtS,EAAEktS,UAE1BlyR,KAAK+ja,UAEA/ja,KAAKug0B,QAAV,CAGAvg0B,KAAKkn1B,2BACLln1B,KAAK+m1B,mBAAqBt/0B,WAAWi0C,EAAK17C,KAAKin1B,YAAajn1B,MAAO,GAEnE,IAAI+/B,EAAS,IAAIotxB,EACTntzB,KAAK4xY,KAAKkqb,uBAAuB97zB,KAAKyr0B,aACtCzr0B,KAAK4xY,KAAKkqb,uBAAuB97zB,KAAK200B,SAE9C300B,KAAK4xY,KACHw5W,UAAUrrtB,GACVy1X,KAAK,aAAc,CAAC+xb,cAAexnzB,GAZT,CAa7B,EAEAsnzB,WAAY,SAAUri2B,GACH,KAAdA,EAAE4yT,UACL53S,KAAK+ja,UACL/ja,KAAKkn1B,2BACLln1B,KAAKin1B,cAEP,IAMDj01B,GAAIy5vB,YAAY,aAAc,UAAWm6F,IASzC5z1B,GAAIu5vB,aAAa,CAMhBi7F,iBAAiB,IAGlB,IAAIC,GAAkB7c,GAAQ5nuB,OAAO,CACpC6nuB,SAAU,WACT7q0B,KAAK4xY,KAAKjnS,GAAG,WAAY3qG,KAAK0n1B,eAAgB1n1B,KAC/C,EAEA8q0B,YAAa,WACZ9q0B,KAAK4xY,KAAK3kR,IAAI,WAAYjtH,KAAK0n1B,eAAgB1n1B,KAChD,EAEA0n1B,eAAgB,SAAU1i2B,GACzB,IAAI+N,EAAMiN,KAAK4xY,KACXssb,EAAUnr0B,EAAIi7U,UACdxzS,EAAQznC,EAAInD,QAAQsq0B,UACpB3lpB,EAAOvvL,EAAE82hB,cAAc9pP,SAAWksiB,EAAU1jyB,EAAQ0jyB,EAAU1jyB,EAE9B,WAAhCznC,EAAInD,QAAQ431B,gBACfz01B,EAAIkgV,QAAQ1+J,GAEZxhL,EAAI2o0B,cAAc120B,EAAEy+0B,eAAgBlvpB,EAEtC,IAeDvhL,GAAIy5vB,YAAY,aAAc,kBAAmBg7F,IAQjDz01B,GAAIu5vB,aAAa,CAGhBz0W,UAAU,EAQV6vc,SAAS,EAITC,oBAAqB,KAIrBC,gBAAiBti2B,IAGjByz0B,cAAe,GAOf8uB,eAAe,EAQfC,mBAAoB,IAGrB,IAAIC,GAAOpd,GAAQ5nuB,OAAO,CACzB6nuB,SAAU,WACT,IAAK7q0B,KAAKmx0B,WAAY,CACrB,IAAIp+0B,EAAMiN,KAAK4xY,KAEf5xY,KAAKmx0B,WAAa,IAAInG,GAAUj40B,EAAI8p0B,SAAU9p0B,EAAIswkB,YAElDrjkB,KAAKmx0B,WAAWxmuB,GAAG,CAClB+zX,UAAW1+d,KAAKox0B,aAChBv6X,KAAM72c,KAAKyuU,QACX8igB,QAASvx0B,KAAK2uU,YACZ3uU,MAEHA,KAAKmx0B,WAAWxmuB,GAAG,UAAW3qG,KAAKio1B,gBAAiBjo1B,MAChDjN,EAAInD,QAAQk41B,gBACf9n1B,KAAKmx0B,WAAWxmuB,GAAG,UAAW3qG,KAAKko1B,eAAgBlo1B,MACnDjN,EAAI43G,GAAG,UAAW3qG,KAAK8j1B,WAAY9j1B,MAEnCjN,EAAImnoB,UAAUl6nB,KAAK8j1B,WAAY9j1B,MAEjC,CACAiqG,GAASjqG,KAAK4xY,KAAKyxL,WAAY,mCAC/BrjkB,KAAKmx0B,WAAWpjuB,SAChB/tG,KAAKmo1B,WAAa,GAClBno1B,KAAKoo1B,OAAS,EACf,EAEAtd,YAAa,WACZphuB,GAAY1pG,KAAK4xY,KAAKyxL,WAAY,gBAClC35d,GAAY1pG,KAAK4xY,KAAKyxL,WAAY,sBAClCrjkB,KAAKmx0B,WAAWrjuB,SACjB,EAEA+C,MAAO,WACN,OAAO7wG,KAAKmx0B,YAAcnx0B,KAAKmx0B,WAAW5Q,MAC3C,EAEA0c,OAAQ,WACP,OAAOj90B,KAAKmx0B,YAAcnx0B,KAAKmx0B,WAAW5F,OAC3C,EAEA6F,aAAc,WACb,IAAIr+0B,EAAMiN,KAAK4xY,KAGf,GADA7+Y,EAAImuE,QACAlhE,KAAK4xY,KAAKhiZ,QAAQ+p0B,WAAa35zB,KAAK4xY,KAAKhiZ,QAAQm41B,mBAAoB,CACxE,IAAIhozB,EAASwtxB,EAAevtzB,KAAK4xY,KAAKhiZ,QAAQ+p0B,WAE9C35zB,KAAKqo1B,aAAen7B,EACnBltzB,KAAK4xY,KAAKiqb,uBAAuB97xB,EAAOwvxB,gBAAgB/kE,YAAY,GACpExqvB,KAAK4xY,KAAKiqb,uBAAuB97xB,EAAO2vxB,gBAAgBllE,YAAY,GAClEl3vB,IAAI0M,KAAK4xY,KAAKonB,YAEjBh5Z,KAAKso1B,WAAa9i2B,KAAKkE,IAAI,EAAKlE,KAAKmE,IAAI,EAAKqW,KAAK4xY,KAAKhiZ,QAAQm41B,oBACjE,MACC/n1B,KAAKqo1B,aAAe,KAGrBt11B,EACKyia,KAAK,aACLA,KAAK,aAENzia,EAAInD,QAAQ+31B,UACf3n1B,KAAKmo1B,WAAa,GAClBno1B,KAAKoo1B,OAAS,GAEhB,EAEA35gB,QAAS,SAAUzpV,GAClB,GAAIgb,KAAK4xY,KAAKhiZ,QAAQ+31B,QAAS,CAC9B,IAAIrpwB,EAAOt+E,KAAKuo1B,WAAa,IAAI1/0B,KAC7B0J,EAAMvS,KAAKuma,SAAWvma,KAAKmx0B,WAAWqX,SAAWxo1B,KAAKmx0B,WAAWnF,QAErEhs0B,KAAKmo1B,WAAWr01B,KAAKye,GACrBvS,KAAKoo1B,OAAOt01B,KAAKwqF,GAEjBt+E,KAAKyo1B,gBAAgBnqwB,EACtB,CAEAt+E,KAAK4xY,KACA4jB,KAAK,OAAQxwa,GACbwwa,KAAK,OAAQxwa,EACnB,EAEAyj2B,gBAAiB,SAAUnqwB,GAC1B,KAAOt+E,KAAKmo1B,WAAW/z1B,OAAS,GAAKkqF,EAAOt+E,KAAKoo1B,OAAO,GAAK,IAC5Dpo1B,KAAKmo1B,WAAWjgzB,QAChBloC,KAAKoo1B,OAAOlgzB,OAEd,EAEA47yB,WAAY,WACX,IAAI4E,EAAW1o1B,KAAK4xY,KAAKonB,UAAU00Z,SAAS,GACxCi7B,EAAgB3o1B,KAAK4xY,KAAK4vb,mBAAmB,CAAC,EAAG,IAErDxh0B,KAAK4o1B,oBAAsBD,EAAclxf,SAASixf,GAAUni2B,EAC5DyZ,KAAK6o1B,YAAc7o1B,KAAK4xY,KAAKyvb,sBAAsBroa,UAAUzya,CAC9D,EAEAui2B,cAAe,SAAUnj2B,EAAOy0a,GAC/B,OAAOz0a,GAASA,EAAQy0a,GAAap6Z,KAAKso1B,UAC3C,EAEAL,gBAAiB,WAChB,GAAKjo1B,KAAKso1B,YAAeto1B,KAAKqo1B,aAA9B,CAEA,IAAIzj2B,EAASob,KAAKmx0B,WAAWnF,QAAQv0e,SAASz3V,KAAKmx0B,WAAW/X,WAE1D5lwB,EAAQxzD,KAAKqo1B,aACbzj2B,EAAO2B,EAAIitE,EAAM9pE,IAAInD,IAAK3B,EAAO2B,EAAIyZ,KAAK8o1B,cAAclk2B,EAAO2B,EAAGitE,EAAM9pE,IAAInD,IAC5E3B,EAAOjB,EAAI6vE,EAAM9pE,IAAI/F,IAAKiB,EAAOjB,EAAIqc,KAAK8o1B,cAAclk2B,EAAOjB,EAAG6vE,EAAM9pE,IAAI/F,IAC5EiB,EAAO2B,EAAIitE,EAAM7pE,IAAIpD,IAAK3B,EAAO2B,EAAIyZ,KAAK8o1B,cAAclk2B,EAAO2B,EAAGitE,EAAM7pE,IAAIpD,IAC5E3B,EAAOjB,EAAI6vE,EAAM7pE,IAAIhG,IAAKiB,EAAOjB,EAAIqc,KAAK8o1B,cAAclk2B,EAAOjB,EAAG6vE,EAAM7pE,IAAIhG,IAEhFqc,KAAKmx0B,WAAWnF,QAAUhs0B,KAAKmx0B,WAAW/X,UAAU9l0B,IAAI1O,EAVF,CAWvD,EAEAsj2B,eAAgB,WAEf,IAAIa,EAAa/o1B,KAAK6o1B,YAClB17zB,EAAY3nC,KAAK+F,MAAMw91B,EAAa,GACpCnopB,EAAK5gM,KAAK4o1B,oBACVri2B,EAAIyZ,KAAKmx0B,WAAWnF,QAAQzl1B,EAC5Byi2B,GAASzi2B,EAAI4mC,EAAYyzK,GAAMmopB,EAAa57zB,EAAYyzK,EACxDqopB,GAAS1i2B,EAAI4mC,EAAYyzK,GAAMmopB,EAAa57zB,EAAYyzK,EACxDsopB,EAAO1j2B,KAAKM,IAAIkj2B,EAAQpopB,GAAMp7M,KAAKM,IAAImj2B,EAAQropB,GAAMoopB,EAAQC,EAEjEjp1B,KAAKmx0B,WAAWqX,QAAUxo1B,KAAKmx0B,WAAWnF,QAAQ/mzB,QAClDjlB,KAAKmx0B,WAAWnF,QAAQzl1B,EAAI2i2B,CAC7B,EAEAv6gB,WAAY,SAAU3pV,GACrB,IAAI+N,EAAMiN,KAAK4xY,KACXhiZ,EAAUmD,EAAInD,QAEds80B,GAAat80B,EAAQ+31B,SAAW3i2B,EAAEkn1B,WAAals0B,KAAKoo1B,OAAOh01B,OAAS,EAIxE,GAFArB,EAAIyia,KAAK,UAAWxwa,GAEhBkn1B,EACHn50B,EAAIyia,KAAK,eAEH,CACNx1Z,KAAKyo1B,iBAAiB,IAAI5/0B,MAE1B,IAAI9Z,EAAYiR,KAAKuma,SAAS9uE,SAASz3V,KAAKmo1B,WAAW,IACnDjj1B,GAAYlF,KAAKuo1B,UAAYvo1B,KAAKoo1B,OAAO,IAAM,IAC/CvlW,EAAOjzf,EAAQop0B,cAEfmwB,EAAcp61B,EAAUy7vB,WAAW3nQ,EAAO39e,GAC1Ci8L,EAAQgopB,EAAYj7B,WAAW,CAAC,EAAG,IAEnCk7B,EAAe5j2B,KAAKkE,IAAIkG,EAAQi41B,gBAAiB1mpB,GACjDkopB,EAAqBF,EAAY3+F,WAAW4+F,EAAejopB,GAE3DmopB,EAAuBF,GAAgBx51B,EAAQg41B,oBAAsB/kW,GACrEj+f,EAASyk2B,EAAmB7+F,YAAY8+F,EAAuB,GAAG/91B,QAEjE3G,EAAO2B,GAAM3B,EAAOjB,GAIxBiB,EAASmO,EAAIox0B,aAAav/0B,EAAQmO,EAAInD,QAAQ+p0B,WAE9C1qzB,EAAiB,WAChBlc,EAAI0p0B,MAAM730B,EAAQ,CACjBsgB,SAAUok1B,EACVtwB,cAAen2U,EACf04U,aAAa,EACbv+uB,SAAS,GAEX,IAZAjqF,EAAIyia,KAAK,UAcX,CACD,IAMDxia,GAAIy5vB,YAAY,aAAc,WAAYu7F,IAQ1Ch11B,GAAIu5vB,aAAa,CAIhB6lF,UAAU,EAIVmX,iBAAkB,KAGnB,IAAIC,GAAW5e,GAAQ5nuB,OAAO,CAE7BymvB,SAAU,CACTt/1B,KAAS,CAAC,IACVF,MAAS,CAAC,IACVy/1B,KAAS,CAAC,IACV1je,GAAS,CAAC,IACVw1c,OAAS,CAAC,IAAK,IAAK,GAAI,KACxBC,QAAS,CAAC,IAAK,IAAK,GAAI,MAGzBlyxB,WAAY,SAAUx2C,GACrBiN,KAAK4xY,KAAO7+Y,EAEZiN,KAAK2p1B,aAAa521B,EAAInD,QAAQ251B,kBAC9Bvp1B,KAAK4p1B,cAAc721B,EAAInD,QAAQsq0B,UAChC,EAEA2Q,SAAU,WACT,IAAI/kxB,EAAY9lD,KAAK4xY,KAAKyxL,WAGtBv9gB,EAAUmwQ,UAAY,IACzBnwQ,EAAUmwQ,SAAW,KAGtBtrN,GAAG7kD,EAAW,CACbkrC,MAAOhxF,KAAK+zW,SACZhjR,KAAM/wF,KAAK8zW,QACX2qH,UAAWz+d,KAAKgn1B,cACdhn1B,MAEHA,KAAK4xY,KAAKjnS,GAAG,CACZ3Z,MAAOhxF,KAAK6p1B,UACZ94vB,KAAM/wF,KAAK8p1B,cACT9p1B,KACJ,EAEA8q0B,YAAa,WACZ9q0B,KAAK8p1B,eAEL78tB,GAAIjtH,KAAK4xY,KAAKyxL,WAAY,CACzBrye,MAAOhxF,KAAK+zW,SACZhjR,KAAM/wF,KAAK8zW,QACX2qH,UAAWz+d,KAAKgn1B,cACdhn1B,MAEHA,KAAK4xY,KAAK3kR,IAAI,CACbj8B,MAAOhxF,KAAK6p1B,UACZ94vB,KAAM/wF,KAAK8p1B,cACT9p1B,KACJ,EAEAgn1B,aAAc,WACb,IAAIhn1B,KAAK+p1B,SAAT,CAEA,IAAIr81B,EAAOjF,SAASiF,KAChBu7G,EAAQxgH,SAASC,gBACjBsB,EAAM0D,EAAKT,WAAag8G,EAAMh8G,UAC9B9C,EAAOuD,EAAKX,YAAck8G,EAAMl8G,WAEpCiT,KAAK4xY,KAAKyxL,WAAWrye,QAErB7pG,OAAOupI,SAASvmI,EAAMH,EATO,CAU9B,EAEA+pX,SAAU,WACT/zW,KAAK+p1B,UAAW,EAChB/p1B,KAAK4xY,KAAK4jB,KAAK,QAChB,EAEA1hD,QAAS,WACR9zW,KAAK+p1B,UAAW,EAChB/p1B,KAAK4xY,KAAK4jB,KAAK,OAChB,EAEAm0b,aAAc,SAAUK,GACvB,IAEI3k2B,EAAGoK,EAFHpF,EAAO2V,KAAKiq1B,SAAW,CAAC,EACxBn5T,EAAQ9whB,KAAKyp1B,SAGjB,IAAKpk2B,EAAI,EAAGoK,EAAMqhiB,EAAM3miB,KAAKiK,OAAQ/O,EAAIoK,EAAKpK,IAC7CgF,EAAKymiB,EAAM3miB,KAAK9E,IAAM,EAAE,EAAI2k2B,EAAU,GAEvC,IAAK3k2B,EAAI,EAAGoK,EAAMqhiB,EAAM7miB,MAAMmK,OAAQ/O,EAAIoK,EAAKpK,IAC9CgF,EAAKymiB,EAAM7miB,MAAM5E,IAAM,CAAC2k2B,EAAU,GAEnC,IAAK3k2B,EAAI,EAAGoK,EAAMqhiB,EAAM44T,KAAKt11B,OAAQ/O,EAAIoK,EAAKpK,IAC7CgF,EAAKymiB,EAAM44T,KAAKrk2B,IAAM,CAAC,EAAG2k2B,GAE3B,IAAK3k2B,EAAI,EAAGoK,EAAMqhiB,EAAM9qK,GAAG5xX,OAAQ/O,EAAIoK,EAAKpK,IAC3CgF,EAAKymiB,EAAM9qK,GAAG3gY,IAAM,CAAC,GAAI,EAAI2k2B,EAE/B,EAEAJ,cAAe,SAAU1vB,GACxB,IAEI700B,EAAGoK,EAFHpF,EAAO2V,KAAKkq1B,UAAY,CAAC,EACzBp5T,EAAQ9whB,KAAKyp1B,SAGjB,IAAKpk2B,EAAI,EAAGoK,EAAMqhiB,EAAM0qS,OAAOpn0B,OAAQ/O,EAAIoK,EAAKpK,IAC/CgF,EAAKymiB,EAAM0qS,OAAOn20B,IAAM600B,EAEzB,IAAK700B,EAAI,EAAGoK,EAAMqhiB,EAAM2qS,QAAQrn0B,OAAQ/O,EAAIoK,EAAKpK,IAChDgF,EAAKymiB,EAAM2qS,QAAQp20B,KAAO600B,CAE5B,EAEA2vB,UAAW,WACVl/uB,GAAGliH,SAAU,UAAWuX,KAAKqn1B,WAAYrn1B,KAC1C,EAEA8p1B,aAAc,WACb78tB,GAAIxkI,SAAU,UAAWuX,KAAKqn1B,WAAYrn1B,KAC3C,EAEAqn1B,WAAY,SAAUri2B,GACrB,KAAIA,EAAEogc,QAAUpgc,EAAE8sS,SAAW9sS,EAAE+sS,SAA/B,CAEA,IAEIntS,EAFA4F,EAAMxF,EAAE4yT,QACR7kT,EAAMiN,KAAK4xY,KAGf,GAAIpnZ,KAAOwV,KAAKiq1B,UACf,IAAKl31B,EAAI2p0B,WAAa3p0B,EAAI2p0B,SAASxD,YAUlC,GATAt00B,EAASob,KAAKiq1B,SAASz/1B,GACnBxF,EAAEgtS,WACLptS,EAASoo0B,EAAQpo0B,GAAQ4lwB,WAAW,IAGjCz3vB,EAAInD,QAAQ+p0B,YACf/00B,EAASmO,EAAIox0B,aAAanX,EAAQpo0B,GAASmO,EAAInD,QAAQ+p0B,YAGpD5m0B,EAAInD,QAAQk41B,cAAe,CAC9B,IAAIqC,EAAYp31B,EAAIq9zB,WAAWr9zB,EAAIi+zB,UAAUj+zB,EAAI0if,QAAQ1if,EAAIi2U,aAAa11U,IAAI1O,KAC9EmO,EAAIigV,MAAMm3gB,EACX,MACCp31B,EAAI0p0B,MAAM730B,QAGN,GAAI4F,KAAOwV,KAAKkq1B,UACtBn31B,EAAIkgV,QAAQlgV,EAAIi7U,WAAahpV,EAAEgtS,SAAW,EAAI,GAAKhyR,KAAKkq1B,UAAU1/1B,QAE5D,IAAY,KAARA,IAAcuI,EAAI24vB,SAAU34vB,EAAI24vB,OAAO97vB,QAAQ2q1B,iBAIzD,OAHAxn1B,EAAI80vB,YAIL,CAEAnivB,GAAK1gB,EAlC6C,CAmCnD,IAODgO,GAAIy5vB,YAAY,aAAc,WAAY+8F,IAQ1Cx21B,GAAIu5vB,aAAa,CAKhB69F,iBAAiB,EAKjBC,kBAAmB,GAMnBC,oBAAqB,KAGtB,IAAIC,GAAkB3f,GAAQ5nuB,OAAO,CACpC6nuB,SAAU,WACTlguB,GAAG3qG,KAAK4xY,KAAKyxL,WAAY,QAASrjkB,KAAKwq1B,eAAgBxq1B,MAEvDA,KAAKyq1B,OAAS,CACf,EAEA3f,YAAa,WACZ79sB,GAAIjtH,KAAK4xY,KAAKyxL,WAAY,QAASrjkB,KAAKwq1B,eAAgBxq1B,KACzD,EAEAwq1B,eAAgB,SAAUxl2B,GACzB,IAAIw1C,EAAQq+xB,GAAc7z0B,GAEtB44E,EAAW59D,KAAK4xY,KAAKhiZ,QAAQy61B,kBAEjCrq1B,KAAKyq1B,QAAUjwzB,EACfx6B,KAAK0q1B,cAAgB1q1B,KAAK4xY,KAAKgwb,2BAA2B580B,GAErDgb,KAAK8ja,aACT9ja,KAAK8ja,YAAc,IAAIj7Z,MAGxB,IAAI1e,EAAO3E,KAAKmE,IAAIi0E,IAAa,IAAI/0D,KAAS7I,KAAK8ja,YAAa,GAEhEn8Z,aAAa3H,KAAKi4vB,QAClBj4vB,KAAKi4vB,OAASxwvB,WAAWi0C,EAAK17C,KAAK2q1B,aAAc3q1B,MAAO7V,GAExDub,GAAK1gB,EACN,EAEA2l2B,aAAc,WACb,IAAI531B,EAAMiN,KAAK4xY,KACXr9N,EAAOxhL,EAAIi7U,UACXu2W,EAAOvkrB,KAAK4xY,KAAKhiZ,QAAQ2qoB,UAAY,EAEzCxnoB,EAAImuE,QAGJ,IAAI2tI,EAAK7uM,KAAKyq1B,QAAkD,EAAxCzq1B,KAAK4xY,KAAKhiZ,QAAQ061B,qBACtCrkZ,EAAK,EAAIzgd,KAAKS,IAAI,GAAK,EAAIT,KAAKm0F,KAAKn0F,KAAKM,IAAI+oN,MAASrpN,KAAKU,IAC5D0k2B,EAAKrmK,EAAO/+rB,KAAKsjE,KAAKm9Y,EAAKs+O,GAAQA,EAAOt+O,EAC1Czra,EAAQznC,EAAI6n0B,WAAWrmpB,GAAQv0K,KAAKyq1B,OAAS,EAAIG,GAAMA,IAAOr2qB,EAElEv0K,KAAKyq1B,OAAS,EACdzq1B,KAAK8ja,WAAa,KAEbtpY,IAE+B,WAAhCznC,EAAInD,QAAQw61B,gBACfr31B,EAAIkgV,QAAQ1+J,EAAO/5I,GAEnBznC,EAAI2o0B,cAAc17zB,KAAK0q1B,cAAen2qB,EAAO/5I,GAE/C,IAMDxnC,GAAIy5vB,YAAY,aAAc,kBAAmB89F,IAWjDv31B,GAAIu5vB,aAAa,CAIhBs+F,QAAS/9kB,GAAQ8mjB,aAAe9mjB,GAAQ96C,QAAU86C,GAAQw1I,OAK1Dwoc,aAAc,KAGf,IAAIC,GAAUngB,GAAQ5nuB,OAAO,CAC5B6nuB,SAAU,WACTlguB,GAAG3qG,KAAK4xY,KAAKyxL,WAAY,aAAcrjkB,KAAKqr0B,QAASrr0B,KACtD,EAEA8q0B,YAAa,WACZ79sB,GAAIjtH,KAAK4xY,KAAKyxL,WAAY,aAAcrjkB,KAAKqr0B,QAASrr0B,KACvD,EAEAqr0B,QAAS,SAAUrm1B,GAElB,GADA2iB,aAAa3H,KAAKgr1B,cACO,IAArBhm2B,EAAEo3C,QAAQhoC,OAAd,CAEA,IAAIo6D,EAAQxpE,EAAEo3C,QAAQ,GACtBp8B,KAAKo5zB,UAAYp5zB,KAAKgs0B,QAAU,IAAIplnB,EAAMp4J,EAAM/xB,QAAS+xB,EAAM9xB,SAE/D18B,KAAKgr1B,aAAevj1B,WAAWi0C,EAAK,WACnC17C,KAAKir1B,UACAjr1B,KAAKkr1B,gBAGVvgvB,GAAGliH,SAAU,WAAYkkI,IACzBhiB,GAAGliH,SAAU,uBAAwBuX,KAAKmr1B,qBAC1Cnr1B,KAAKor1B,eAAe,cAAe58xB,GACpC,EAAGxuD,MAxCc,KA0CjB2qG,GAAGliH,SAAU,mCAAoCuX,KAAKir1B,QAASjr1B,MAC/D2qG,GAAGliH,SAAU,YAAauX,KAAK4r0B,QAAS5r0B,KAhBF,CAiBvC,EAEAmr1B,oBAAqB,SAASE,IAC7Bp+tB,GAAIxkI,SAAU,WAAYkkI,IAC1BM,GAAIxkI,SAAU,uBAAwB4i2B,EACvC,EAEAJ,QAAS,WACRtj1B,aAAa3H,KAAKgr1B,cAClB/9tB,GAAIxkI,SAAU,mCAAoCuX,KAAKir1B,QAASjr1B,MAChEitH,GAAIxkI,SAAU,YAAauX,KAAK4r0B,QAAS5r0B,KAC1C,EAEA4r0B,QAAS,SAAU5m1B,GAClB,IAAIwpE,EAAQxpE,EAAEo3C,QAAQ,GACtBp8B,KAAKgs0B,QAAU,IAAIplnB,EAAMp4J,EAAM/xB,QAAS+xB,EAAM9xB,QAC/C,EAEAwuzB,YAAa,WACZ,OAAOlr1B,KAAKgs0B,QAAQ9d,WAAWluzB,KAAKo5zB,YAAcp5zB,KAAK4xY,KAAKhiZ,QAAQk71B,YACrE,EAEAM,eAAgB,SAAUp70B,EAAMhrB,GAC/B,IAAIo3hB,EAAiB,IAAI4lD,WAAWhyjB,EAAM,CACzC60a,SAAS,EACTpsX,YAAY,EACZipI,KAAMv6M,OAENwmG,QAAS3oG,EAAE2oG,QACXE,QAAS7oG,EAAE6oG,QACXpxD,QAASz3C,EAAEy3C,QACXC,QAAS13C,EAAE03C,UAKZ0/e,EAAeg8S,YAAa,EAE5Bpz0B,EAAE+I,OAAO++P,cAAcsvR,EACxB,IAMDpphB,GAAIy5vB,YAAY,aAAc,UAAWs+F,IAQzC/31B,GAAIu5vB,aAAa,CAOhB++F,UAAWx+kB,GAAQ0xN,MAKnB+sX,oBAAoB,IAGrB,IAAIC,GAAY5gB,GAAQ5nuB,OAAO,CAC9B6nuB,SAAU,WACT5guB,GAASjqG,KAAK4xY,KAAKyxL,WAAY,sBAC/B14d,GAAG3qG,KAAK4xY,KAAKyxL,WAAY,aAAcrjkB,KAAKyr1B,cAAezr1B,KAC5D,EAEA8q0B,YAAa,WACZphuB,GAAY1pG,KAAK4xY,KAAKyxL,WAAY,sBAClCp2c,GAAIjtH,KAAK4xY,KAAKyxL,WAAY,aAAcrjkB,KAAKyr1B,cAAezr1B,KAC7D,EAEAyr1B,cAAe,SAAUzm2B,GACxB,IAAI+N,EAAMiN,KAAK4xY,KACf,GAAK5sZ,EAAEo3C,SAAgC,IAArBp3C,EAAEo3C,QAAQhoC,SAAgBrB,EAAIyx0B,iBAAkBxk0B,KAAK0r1B,SAAvE,CAEA,IAAInm0B,EAAKxyB,EAAI6u0B,2BAA2B580B,EAAEo3C,QAAQ,IAC9C5W,EAAKzyB,EAAI6u0B,2BAA2B580B,EAAEo3C,QAAQ,IAElDp8B,KAAK2r1B,aAAe541B,EAAIima,UAAU20Z,UAAU,GAC5C3tzB,KAAK4r1B,aAAe741B,EAAI+o0B,uBAAuB97zB,KAAK2r1B,cACtB,WAA1B541B,EAAInD,QAAQ071B,YACftr1B,KAAK6r1B,kBAAoB941B,EAAI+o0B,uBAAuBv2yB,EAAGjyB,IAAIkyB,GAAImoyB,UAAU,KAG1E3tzB,KAAK8r1B,WAAavm0B,EAAG2oyB,WAAW1oyB,GAChCxlB,KAAK+r1B,WAAah51B,EAAIi7U,UAEtBhuU,KAAKug0B,QAAS,EACdvg0B,KAAK0r1B,UAAW,EAEhB341B,EAAImuE,QAEJypC,GAAGliH,SAAU,YAAauX,KAAKgs1B,aAAchs1B,MAC7C2qG,GAAGliH,SAAU,uBAAwBuX,KAAKis1B,YAAajs1B,MAEvD2sH,GAAe3nI,EAtB4E,CAuB5F,EAEAgn2B,aAAc,SAAUhn2B,GACvB,GAAKA,EAAEo3C,SAAgC,IAArBp3C,EAAEo3C,QAAQhoC,QAAiB4L,KAAK0r1B,SAAlD,CAEA,IAAI341B,EAAMiN,KAAK4xY,KACXrsX,EAAKxyB,EAAI6u0B,2BAA2B580B,EAAEo3C,QAAQ,IAC9C5W,EAAKzyB,EAAI6u0B,2BAA2B580B,EAAEo3C,QAAQ,IAC9CxR,EAAQrF,EAAG2oyB,WAAW1oyB,GAAMxlB,KAAK8r1B,WAUrC,GARA9r1B,KAAK26zB,MAAQ5n0B,EAAI8q0B,aAAajzyB,EAAO5qB,KAAK+r1B,aAErCh51B,EAAInD,QAAQ271B,qBACfvr1B,KAAK26zB,MAAQ5n0B,EAAI2t0B,cAAgB91yB,EAAQ,GACzC5qB,KAAK26zB,MAAQ5n0B,EAAI6t0B,cAAgBh2yB,EAAQ,KAC1C5qB,KAAK26zB,MAAQ5n0B,EAAI6n0B,WAAW56zB,KAAK26zB,QAGJ,WAA1B5n0B,EAAInD,QAAQ071B,WAEf,GADAtr1B,KAAKs8nB,QAAUt8nB,KAAK4r1B,aACN,IAAVhh0B,EAAe,WACb,CAEN,IAAI4P,EAAQjV,EAAGg8C,KAAK/7C,GAAImoyB,UAAU,GAAGF,UAAUztzB,KAAK2r1B,cACpD,GAAc,IAAV/g0B,GAA2B,IAAZ4P,EAAMj0C,GAAuB,IAAZi0C,EAAM72C,EAAW,OACrDqc,KAAKs8nB,QAAUvpoB,EAAIi+zB,UAAUj+zB,EAAI0if,QAAQz1e,KAAK6r1B,kBAAmB7r1B,KAAK26zB,OAAOlje,SAASj9T,GAAQx6B,KAAK26zB,MACpG,CAEK36zB,KAAKug0B,SACTxt0B,EAAI0q0B,YAAW,GAAM,GACrBz9zB,KAAKug0B,QAAS,GAGfhV,EAAgBvrzB,KAAKks1B,cAErB,IAAIC,EAASzwyB,EAAK3oD,EAAI6q0B,MAAO7q0B,EAAKiN,KAAKs8nB,QAASt8nB,KAAK26zB,MAAO,CAAC8H,OAAO,EAAMl30B,OAAO,QAAQuL,GACzFkJ,KAAKks1B,aAAej90B,EAAiBk90B,EAAQns1B,MAAM,GAEnD2sH,GAAe3nI,EAnCuD,CAoCvE,EAEAin2B,YAAa,WACPjs1B,KAAKug0B,QAAWvg0B,KAAK0r1B,UAK1B1r1B,KAAK0r1B,UAAW,EAChBngC,EAAgBvrzB,KAAKks1B,cAErBj/tB,GAAIxkI,SAAU,YAAauX,KAAKgs1B,aAAchs1B,MAC9CitH,GAAIxkI,SAAU,uBAAwBuX,KAAKis1B,YAAajs1B,MAGpDA,KAAK4xY,KAAKhiZ,QAAQiq0B,cACrB75zB,KAAK4xY,KAAKizb,aAAa7k0B,KAAKs8nB,QAASt8nB,KAAK4xY,KAAKgpb,WAAW56zB,KAAK26zB,QAAQ,EAAM36zB,KAAK4xY,KAAKhiZ,QAAQ2qoB,UAE/Fv6nB,KAAK4xY,KAAKyqP,WAAWr8nB,KAAKs8nB,QAASt8nB,KAAK4xY,KAAKgpb,WAAW56zB,KAAK26zB,SAd7D36zB,KAAK0r1B,UAAW,CAgBlB,IAMD141B,GAAIy5vB,YAAY,aAAc,YAAa++F,IAE3Cx41B,GAAI4z1B,QAAUA,GACd5z1B,GAAIy01B,gBAAkBA,GACtBz01B,GAAIg11B,KAAOA,GACXh11B,GAAIw21B,SAAWA,GACfx21B,GAAIu31B,gBAAkBA,GACtBv31B,GAAI+31B,QAAUA,GACd/31B,GAAIw41B,UAAYA,GAEhB/m2B,EAAQwo0B,OAASA,EACjBxo0B,EAAQqoR,QAAUA,GAClBroR,EAAQ+r0B,IAAMA,EACd/r0B,EAAQqpa,OAASA,GACjBrpa,EAAQ4tN,OAASA,GACjB5tN,EAAQiw1B,aAAeA,GACvBjw1B,EAAQ+m0B,MAAQA,EAChB/m0B,EAAQihc,QAAUA,GAClBjhc,EAAQ041B,QAAUA,GAClB141B,EAAQ001B,WAAaA,GACrB101B,EAAQkglB,SAAWA,GACnBlglB,EAAQ6+kB,QAAUA,GAClB7+kB,EAAQum1B,UAAYA,GACpBvm1B,EAAQ+lH,QAAUA,EAClB/lH,EAAQir1B,aAAeA,GACvBjr1B,EAAQ+x1B,QAAUA,GAClB/x1B,EAAQ6zoB,UAAYA,GACpB7zoB,EAAQmm1B,QAAUA,GAClBnm1B,EAAQmr1B,KAAOA,GACfnr1B,EAAQwz1B,aAAeA,GACvBxz1B,EAAQglO,OAASA,EACjBhlO,EAAQ0o0B,aAAeA,EACvB1o0B,EAAQm6Y,MAAQA,GAChBn6Y,EAAQ+q1B,WAAaA,GACrB/q1B,EAAQ4p1B,SAAWA,GACnB5p1B,EAAQuO,IAAMA,GACdvO,EAAQ0t1B,OAASA,GACjB1t1B,EAAQmn0B,MAAQA,GAChBnn0B,EAAQkmb,KAAOA,GACflmb,EAAQmiO,MAAQA,EAChBniO,EAAQso1B,SAAWA,GACnBto1B,EAAQsyZ,QAAUA,GAClBtyZ,EAAQ4w1B,SAAWA,GACnB5w1B,EAAQy11B,MAAQA,GAChBz11B,EAAQq00B,aAAeA,GACvBr00B,EAAQ2n2B,WAAa511B,GACrB/R,EAAQii2B,UAAYA,GACpBji2B,EAAQg/1B,SAAWA,GACnBh/1B,EAAQ2h2B,IAAMA,GACd3h2B,EAAQy01B,WAAaA,GACrBz01B,EAAQo91B,UAAYA,GACpBp91B,EAAQutF,QAAUA,GAClBvtF,EAAQut0B,eAAiBA,EACzBvt0B,EAAQ0ma,KAAOA,EACf1ma,EAAQq01B,aAAeA,GACvBr01B,EAAQi3D,KAAOA,EACfj3D,EAAQs7C,OAASmtxB,EACjBzo0B,EAAQ4oC,OAASA,GACjB5oC,EAAQyuN,OAr4LR,SAAgB+3iB,EAAQr7vB,EAASql1B,GAChC,OAAO,IAAI5ioB,GAAO44iB,EAAQr7vB,EAASql1B,EACpC,EAo4LAxw1B,EAAQymwB,aAh/LR,SAAsBD,EAAQr7vB,GAC7B,OAAO,IAAI8k1B,GAAazpF,EAAQr7vB,EACjC,EA++LAnL,EAAQ2rT,QAAUA,GAClB3rT,EAAQ6lwB,QA1yGR,SAAiB16vB,GAChB,OAAO,IAAIut1B,GAAQvt1B,EACpB,EAyyGAnL,EAAQu+G,OAASA,EACjBv+G,EAAQ6kwB,aArgOW,SAAU3orB,EAAQ/wE,GACpC,OAAO,IAAI8/0B,GAAa/uwB,EAAQ/wE,EACjC,EAogOAnL,EAAQqz1B,QAAUA,GAClBrz1B,EAAQ2mN,QAAUA,GAClB3mN,EAAQo6Y,UAz5ER,SAAmBjvY,GAClB,OAAO,IAAI0ooB,GAAU1ooB,EACtB,EAw5EAnL,EAAQgwX,KAx2NR,SAAc7kX,GACb,OAAO,IAAIgg1B,GAAKhg1B,EACjB,EAu2NAnL,EAAQ4n2B,aAzwJW,SAAU5+vB,EAAK1tD,EAAQnwC,GACzC,OAAO,IAAIqo1B,GAAaxqvB,EAAK1tD,EAAQnwC,EACtC,EAwwJAnL,EAAQkjV,OAAS6lf,EACjB/o0B,EAAQq/0B,aAAevW,EACvB9o0B,EAAQ8iwB,WAzmOS,SAAU5mrB,EAAQ/wE,GAClC,OAAO,IAAI4/0B,GAAW7uwB,EAAQ/wE,EAC/B,EAwmOAnL,EAAQsO,IAx5SR,SAAmBgL,EAAInO,GACtB,OAAO,IAAIoD,GAAI+K,EAAInO,EACpB,EAu5SAnL,EAAQkwd,OAxvMR,SAAgBs2S,EAAQr7vB,GACvB,OAAO,IAAIui1B,GAAOlnF,EAAQr7vB,EAC3B,EAuvMAnL,EAAQoqC,MAAQm+xB,EAChBvo0B,EAAQ66M,QAj9KR,SAAiBgunB,EAAS19zB,GACzB,OAAO,IAAImnZ,GAAQu2a,EAAS19zB,EAC7B,EAg9KAnL,EAAQmhwB,SA9mLR,SAAkB0nE,EAAS19zB,GAC1B,OAAO,IAAIyl1B,GAAS/nB,EAAS19zB,EAC9B,EA6mLAnL,EAAQugG,MAt+HI,SAAUp1F,EAAS2hB,GAC9B,OAAO,IAAI2o0B,GAAMtq1B,EAAS2hB,EAC3B,EAq+HA9sB,EAAQ6n2B,UA1+BR,SAAmBxoB,EAAcl00B,GAChC,OAAO,IAAI821B,GAAU5iB,EAAcl00B,EACpC,EAy+BAnL,EAAQ6Q,WAAaA,EACrB7Q,EAAQ41oB,MAAQA,EAChB51oB,EAAQ4od,IAAMA,GACd5od,EAAQ8n2B,WAjoJR,SAAoBhvzB,EAAIwC,EAAQnwC,GAC/B,OAAO,IAAIsp1B,GAAW37yB,EAAIwC,EAAQnwC,EACnC,EAgoJAnL,EAAQq+1B,UAAYA,GACpBr+1B,EAAQ4xD,QAhmHM,SAAUzmD,EAAS2hB,GAChC,OAAO,IAAIygE,GAAQpiF,EAAS2hB,EAC7B,EA+lHA9sB,EAAQks0B,eAAiBsB,EACzBxt0B,EAAQogF,QAxpcM,QAypcdpgF,EAAQ+n2B,aArrJR,SAAsBzxoB,EAAOh7K,EAAQnwC,GACpC,OAAO,IAAIkp1B,GAAa/9nB,EAAOh7K,EAAQnwC,EACxC,EAqrJA,IAAI681B,GAAOtl2B,OAAOxF,EAClB8C,EAAQio2B,WAAa,WAEpB,OADAvl2B,OAAOxF,EAAI8q2B,GACJzs1B,IACR,EAEA7Y,OAAOxF,EAAI8C,CAEZ,CAxqcgEF,CAAQE,E,+BCLzE,IAAIko2B,EAAa,eACbt7d,EAAyB,EAAQ,OAKrC3vS,EAAOj9F,QAAU4sY,EAAuB,aAAe,WACrD,OAAOs7d,EAAW3s1B,KAEpB,EAAI,GAAGyypB,S,YCOP,SAASr0C,EAAOx0kB,EAASz1B,EAASy40B,EAAQC,GAExC7s1B,KAAK4pC,QAAU,GAEf5pC,KAAKmU,QAAU,EAEfnU,KAAK4s1B,OAAS,EAEd5s1B,KAAKzH,SAAWyH,KAAK8s1B,mBAErB9s1B,KAAKyxkB,SAAW,GAEhBzxkB,KAAKo7Z,MAAQ,GAKbp7Z,KAAK+s1B,SAAW,GAEhB/s1B,KAAKgt1B,UAAY,GAEjBht1B,KAAKit1B,eAAiB,EAEtBjt1B,KAAKm4D,MAAMvuB,EAASz1B,EAASy40B,EAAQC,EACvC,CAeAzuO,EAAOh+mB,UAAUulH,IAAM,SAAS/7E,EAASz1B,EAASy40B,EAAQC,GACxD7s1B,KAAKm4D,MAAMvuB,EAASz1B,EAASy40B,EAAQC,GAErC,IAAK,IAAIn7Q,EAAU,EAAGA,EAAU1xkB,KAAKit1B,eAAgBv7Q,IAEnD,GAA+B,IAA3B1xkB,KAAK+s1B,SAASr7Q,GAAgB,CAChC1xkB,KAAK+s1B,SAASr7Q,GAAW,EAGzB,IAAI3jY,EAAY/tM,KAAKkt1B,aAAax7Q,GAElC,GAAI3jY,EAAU35M,OAAS4L,KAAK4s1B,OAC1B5s1B,KAAKo7Z,MAAMtna,KAAK49kB,OACX,CAEL,IAAIy7Q,EAAYnt1B,KAAKyxkB,SAASr9kB,OAC9B4L,KAAKyxkB,SAAS39kB,KAAK,IACnBkM,KAAKot1B,cAAc17Q,EAASy7Q,GAE5Bnt1B,KAAKqt1B,eAAeF,EAAWp/oB,EACjC,CACF,CAGF,OAAO/tM,KAAKyxkB,QACd,EAeA2sC,EAAOh+mB,UAAU+3D,MAAQ,SAASvuB,EAASz1B,EAASy40B,EAAQr01B,GAE1D,GAAIqxC,EAAS,CAEX,KAAMA,aAAmBt1C,OACvB,MAAMiT,MAAM,yCACHqiC,EAAU,UAGrB5pC,KAAK4pC,QAAUA,EACf5pC,KAAKyxkB,SAAW,GAChBzxkB,KAAKo7Z,MAAQ,GAEbp7Z,KAAKit1B,eAAiBrjzB,EAAQx1C,OAC9B4L,KAAK+s1B,SAAW,IAAIz41B,MAAM0L,KAAKit1B,gBAC/Bjt1B,KAAKgt1B,UAAY,IAAI141B,MAAM0L,KAAKit1B,eAClC,CAEI940B,IACFnU,KAAKmU,QAAUA,GAGby40B,IACF5s1B,KAAK4s1B,OAASA,GAGZr01B,IACFyH,KAAKzH,SAAWA,EAEpB,EAUA6lnB,EAAOh+mB,UAAUit1B,eAAiB,SAASF,EAAWp/oB,GAMpD,IAAK,IAAI1oN,EAAI,EAAGA,EAAI0oN,EAAU35M,OAAQ/O,IAAK,CACzC,IAAIio2B,EAAWv/oB,EAAU1oN,GAEzB,GAAgC,IAA5B2a,KAAK+s1B,SAASO,GAAiB,CACjCtt1B,KAAK+s1B,SAASO,GAAY,EAC1B,IAAIC,EAAavt1B,KAAKkt1B,aAAaI,GAE/BC,EAAWn51B,QAAU4L,KAAK4s1B,SAC5B7+oB,EAAY/tM,KAAKwt1B,aAAaz/oB,EAAWw/oB,GAE7C,CAGiC,IAA7Bvt1B,KAAKgt1B,UAAUM,IACjBtt1B,KAAKot1B,cAAcE,EAAUH,EAEjC,CACF,EAQA/uO,EAAOh+mB,UAAUgt1B,cAAgB,SAAS17Q,EAASy7Q,GACjDnt1B,KAAKyxkB,SAAS07Q,GAAWr51B,KAAK49kB,GAC9B1xkB,KAAKgt1B,UAAUt7Q,GAAW,CAC5B,EAUA0sC,EAAOh+mB,UAAU8s1B,aAAe,SAASx7Q,GAGvC,IAFA,IAAI3jY,EAAY,GAEPhwM,EAAK,EAAGA,EAAKiC,KAAKit1B,eAAgBlv1B,IAC9BiC,KAAKzH,SAASyH,KAAK4pC,QAAQ8niB,GAAU1xkB,KAAK4pC,QAAQ7rC,IAClDiC,KAAKmU,SACd45L,EAAUj6M,KAAKiK,GAInB,OAAOgwM,CACT,EAWAqwa,EAAOh+mB,UAAUot1B,aAAe,SAAS5z1B,EAAGC,GAG1C,IAFA,IAAIpK,EAAMoK,EAAEzF,OAEH/O,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CAC5B,IAAI6b,EAAIrH,EAAExU,GACNuU,EAAErR,QAAQ2Y,GAAK,GACjBtH,EAAE9F,KAAKoN,EAEX,CAEA,OAAOtH,CACT,EAUAwknB,EAAOh+mB,UAAU0s1B,mBAAqB,SAAS3s1B,EAAG0pF,GAIhD,IAHA,IAAIqR,EAAM,EACN71G,EAAIG,KAAKkE,IAAIyW,EAAE/L,OAAQy1F,EAAEz1F,QAEtB/O,KACL61G,IAAQ/6F,EAAE9a,GAAKwkG,EAAExkG,KAAO8a,EAAE9a,GAAKwkG,EAAExkG,IAGnC,OAAOG,KAAK0vB,KAAKgmF,EACnB,EAEqCxZ,EAAOj9F,UAC1Ci9F,EAAOj9F,QAAU25nB,E,+BCzOnB,IAAIj9gB,EAAW,EAAQ,OACnBssvB,EAAsB,EAAQ,OAE9B5sgB,EAAavgV,UAIjBohF,EAAOj9F,QAAU,SAAUw1H,GAEzB,GADA9Y,EAASnhG,MACI,WAATi6G,GAA8B,YAATA,EAAoBA,EAAO,cAC/C,GAAa,WAATA,EAAmB,MAAM,IAAI4mO,EAAW,kBACjD,OAAO4sgB,EAAoBzt1B,KAAMi6G,EACnC,C,kBCbA,IAAIyzuB,EAAgB,EAAQ,OACxBC,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,OAS1B,SAASruN,EAASv6kB,GAChB,IAAI1uD,GAAS,EACTpC,EAAoB,MAAX8wD,EAAkB,EAAIA,EAAQ9wD,OAG3C,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA6tlB,EAASr/nB,UAAU26D,MAAQ2yxB,EAC3BjuN,EAASr/nB,UAAkB,OAAIut1B,EAC/BluN,EAASr/nB,UAAUvM,IAAM+51B,EACzBnuN,EAASr/nB,UAAUzM,IAAMk61B,EACzBpuN,EAASr/nB,UAAUrM,IAAM+51B,EAEzBpswB,EAAOj9F,QAAUg7oB,C,kBC/BjB,IAAIz/gB,EAAW,EAAQ,OAwCvBt+B,EAAOj9F,QA9BP,SAA0BkB,EAAOk7D,GAC/B,GAAIl7D,IAAUk7D,EAAO,CACnB,IAAIktyB,OAAyBj31B,IAAVnR,EACfqo2B,EAAsB,OAAVro2B,EACZso2B,EAAiBto2B,GAAUA,EAC3Buo2B,EAAcluuB,EAASr6H,GAEvBwo2B,OAAyBr31B,IAAV+pD,EACfutyB,EAAsB,OAAVvtyB,EACZwtyB,EAAiBxtyB,GAAUA,EAC3BytyB,EAActuuB,EAASn/D,GAE3B,IAAMutyB,IAAcE,IAAgBJ,GAAevo2B,EAAQk7D,GACtDqtyB,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAe3o2B,EAAQk7D,GACtDytyB,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,C,+BCrCA,IAAI5m2B,EAAS,EAAQ,OACrB,EAAQ,OAERi6F,EAAOj9F,QAAUgD,C,kBCJjB,IAAIw5G,EAAa,EAAQ,OACrBsnH,EAAe,EAAQ,OA2B3B7mI,EAAOj9F,QALP,SAAmBkB,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB4iO,EAAa5iO,IArBJ,oBAqBcs7G,EAAWt7G,EACvC,C,yBCjBQ,SAAW9E,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,+BCL1D,IAaI6xe,EAAwBh2d,EAbxBiiF,EAAa,EAAQ,OACrB75C,EAAS,EAAQ,OACjBw9M,EAAa,EAAQ,OACrBtlP,EAAS,EAAQ,MACjB+0B,EAAiB,EAAQ,OACzB0wN,EAAgB,EAAQ,OACxB3kJ,EAAkB,EAAQ,OAC1Bme,EAAU,EAAQ,OAElB4uuB,EAA2B,2BAC3BhtvB,EAAiBC,EAAgB,iBACjC4jI,EAAgB/iJ,EAAW+iJ,cAC3BopnB,EAA+BhmzB,EAAO4tb,uBAG1C,GAAIo4X,EACFp4X,EAAyBo4X,OACpB,GAAIxomB,EAAW5gB,GACpBgxP,EAAyBhxP,EAAchlO,eAClC,GAAIooC,EAAO+lzB,IAA6BlswB,EAAWkswB,GACxD,IAEEnu1B,EAAYq1B,EAAeA,EAAeA,EAAeg2E,SAAS,+BAATA,MACrDh2E,EAAer1B,KAAetW,OAAOsW,YAAWg2d,EAAyBh2d,EAC/E,CAAE,MAAO6J,GAAqB,CAG3Bmsd,EACIz2W,IAASy2W,EAAyB11d,EAAO01d,IADrBA,EAAyB,CAAC,EAGlDpwO,EAAWowO,EAAuB70X,KACrC4kJ,EAAciwO,EAAwB70X,EAAgB,WACpD,OAAOvhG,IACT,GAGF0hF,EAAOj9F,QAAU2xe,C,+BCnCjB,EAAQ,K,+BCFwS3xe,EAAA,QAAmB,EAAkPqF,OAAOwY,eAAe7d,EAAtB,MAA6CinC,YAAW,EAAK73B,IAAI,WAAe,OAAO461B,EAAsB,OAAC,IAA0I,IAAIC,EAAav2uB,EAAuB,EAAQ,QAAoWs2uB,GAAnUt2uB,EAAuB,EAAQ,QAAkDA,EAAuB,EAAQ,QAAoEA,EAAuB,EAAQ,QAAsDA,EAAuB,EAAQ,QAAwCA,EAAuB,EAAQ,SAAkB,SAASA,EAAuB7lG,GAAK,OAAOA,GAAKA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,EAAI,CAAC,IAAIotG,EAASgvuB,EAAsB,QAAEjq2B,EAAA,GAAmBi7H,C,yBCC34Ch+B,EAAOj9F,QAAU,SAAwBg9G,EAAIi4H,EAAUC,GACrD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACnBkS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACnBirI,EAAiB,GACrBpR,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3Bq6b,EAAO,IAAMvqO,EACfojZ,EAAW5hZ,EAAItB,UAAYv4H,EAAGu4H,UAAY,EAC1CuqO,EAAY,OAAS24K,EACrBv4K,EAAiBljW,EAAGi5H,OAEtB,GADAjxH,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDn1G,MAAMyb,QAAQ+1M,GAAU,CAC1B,IAAI6ooB,EAAmBltvB,EAAG6jH,OAAOuX,gBACjC,IAAyB,IAArB8xnB,EAA4B,CAC9BllvB,GAAO,IAAM,EAAW,MAAQ,EAAU,cAAiBq8G,EAAc,OAAI,KAC7E,IAAI+/b,EAAqB5rb,EACzBA,EAAiBx4H,EAAGy4H,cAAgB,mBACpCzwH,GAAO,UAAY,EAAW,SAC9B,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,gEAAmFhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,uBAA0BnU,EAAc,OAAI,OAC5L,IAArBrkH,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0CAA8Cq8G,EAAc,OAAI,YAErErkH,EAAG1xE,KAAKmrM,UACVzxH,GAAO,mDAAsDhI,EAAa,WAAI,YAAc,EAAU,KAExGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACPwwH,EAAiB4rb,EACb1rb,IACFuS,GAAkB,IAClBjjI,GAAO,WAEX,CACA,IAAI0kP,EAAOroI,EACX,GAAIqoI,EAGF,IAFA,IAAIi3O,EAAMv4V,GAAM,EACd9wK,EAAKoyR,EAAK/5V,OAAS,EACdy4O,EAAK9wK,GAEV,GADAqpgB,EAAOj3O,EAAKthH,GAAM,GACdprI,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,KAAM,CAC9C2jE,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAe,EAAO,OAC9E,IAAIm7V,EAAYvqO,EAAQ,IAAMwS,EAAK,IACnCvR,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAasQ,EAAc,IAAMe,EAAK,IAC1CvR,EAAIpB,cAAgBD,EAAiB,IAAM4S,EAC3CvR,EAAII,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAWmR,EAAIprI,EAAG1xE,KAAKstlB,cAAc,GAC5E/hZ,EAAIM,YAAYshZ,GAAYrwY,EAC5B,IAAIK,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,OACH0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,IAEtB,CAG2B,iBAApBiinB,GAAgCltvB,EAAG0S,KAAKgwV,eAAewqZ,EAAkBltvB,EAAG0/H,MAAMr7L,OAC3Fw1L,EAAIhW,OAASqpoB,EACbrznB,EAAIE,WAAa/5H,EAAG+5H,WAAa,mBACjCF,EAAIpB,cAAgBz4H,EAAGy4H,cAAgB,mBACvCzwH,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAgBq8G,EAAc,OAAI,iBAAmB,EAAS,MAASA,EAAc,OAAI,KAAO,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC1MwV,EAAII,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW2oO,EAAM5iW,EAAG1xE,KAAKstlB,cAAc,GAC1Ez4K,EAAYvqO,EAAQ,IAAMgqO,EAAO,IACrC/oO,EAAIM,YAAYshZ,GAAY74K,EACxBn3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpE0wH,IACF1wH,GAAO,SAAW,EAAe,aAEnCA,GAAO,SACH0wH,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,KAGxB,MAAWjrI,EAAG0S,KAAKgwV,eAAer+O,EAASrkH,EAAG0/H,MAAMr7L,OAClDw1L,EAAIhW,OAASQ,EACbwV,EAAIE,WAAasQ,EACjBxQ,EAAIpB,cAAgBD,EACpBxwH,GAAO,cAAgB,EAAhB,SAA8C,EAAS,MAAQ,EAAU,YAAc,EAAS,SACvG6xH,EAAII,UAAYj6H,EAAG0S,KAAKipgB,YAAY37gB,EAAGi6H,UAAW2oO,EAAM5iW,EAAG1xE,KAAKstlB,cAAc,GAC1Ez4K,EAAYvqO,EAAQ,IAAMgqO,EAAO,IACrC/oO,EAAIM,YAAYshZ,GAAY74K,EACxBn3N,EAAQzrI,EAAGkkH,SAAS2V,GACxBA,EAAIZ,OAASiqO,EACTljW,EAAG0S,KAAK0wV,cAAc33N,EAAOq3N,GAAa,EAC5C96V,GAAO,IAAOhI,EAAG0S,KAAK2wV,WAAW53N,EAAOq3N,EAAWK,GAAc,IAEjEn7V,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpE0wH,IACF1wH,GAAO,SAAW,EAAe,aAEnCA,GAAO,MAMT,OAJI0wH,IACF1wH,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEhDhI,EAAG0S,KAAK4wV,YAAYt7V,EAE5B,C,+BC1IA,IAAImlvB,EAAoB,EAAQ,OAC5BC,EAA+B,EAAQ,OACvCC,EAAgB,EAAQ,OACxBC,EAAmB,EAAQ,OAC3Bvr1B,EAAK,EAAQ,OAAmCq1T,EAAuCr1T,EAAGq1T,qCAAsCC,EAAuCt1T,EAAGs1T,qCAC1Kn1T,EAAK,EAAQ,OAAe8rN,EAAU9rN,EAAG8rN,QAASy0H,EAAgCvgV,EAAGugV,8BA4GzFxiQ,EAAOj9F,QA3GP,SAA8Cwf,EAAOkB,EAAUw3f,EAAkBl4I,EAAoBk5J,EAAiB/thB,GAClHA,EAAU9F,OAAOC,OAAO,CACpB2zhB,sBAAuBmxU,EACvBG,OAAQF,EACRG,UAAWF,GACZn/1B,GACH,IAAIyzV,EAAoBs6L,EAAgB5iU,MAAM,KAAqD,IAA/C4iU,EAAgB5iU,MAAM,GAAGsoI,kBACzEq6L,EAAwB9thB,EAAQ8thB,sBAAuBsxU,EAASp/1B,EAAQo/1B,OAAQC,EAAYr/1B,EAAQq/1B,UAAW/j1B,EAAatb,EAAQsb,WAAYjlB,EAAM2J,EAAQ3J,IAC9Jy6hB,EAAwB,IAAIhD,EAAsBj5J,EAAoBk5J,EAAiB/thB,GACvF2whB,EAAe9wT,EAAQktS,EAAiBr4K,OAAQ,SAAU4qgB,GAAW,MAAO,CAACA,EAAQ98hB,iBAAmB,GAC5GsuN,EAAsBJ,gBAAgBC,GACtC,IACIr4gB,EADAin1B,EAAoB,IAAI5n1B,MAAM,YAE9BuiuB,EAAoB,IAAI8kH,EAAkB,SAAUh41B,EAASwK,EAAQs1nB,GACrE,IAyBI7xS,EAAwBj1V,EAAQi1V,sBAAuB7B,EAAmBpzV,EAAQozV,iBAAkBE,EAAkBtzV,EAAQszV,gBAAiBn+U,EAAcnV,EAAQmV,YAAa6D,EAAgBhZ,EAAQgZ,cAAe4ra,EAAa5kb,EAAQ4kb,WAAY/sF,EAAW73V,EAAQ63V,SAAUl0V,EAAO3D,EAAQ2D,KAAM2xX,EAAiBt1X,EAAQs1X,eAAgB/hC,EAAiBvzV,EAAQuzV,eAAgBY,EAAiBn0V,EAAQm0V,eAAgBx7U,EAAQ3Y,EAAQ2Y,MAAOunN,EAAelgO,EAAQkgO,aAGrd8xH,IAAkBoB,EAClBI,IAAmBJ,EACnBM,IAAgBN,IACyB,aAAxCpzV,EAAQotgB,6BAAiF,aAAnCptgB,EAAQstgB,wBAC/DkyV,EAAmBtl2B,OAAOC,OAAO,CACjCs5V,kBAAmBA,EACnBwB,sBAAuBA,EACvB3B,gBAAiBA,EACjBn+U,YAAaA,EACb6D,cAAeA,EACf4ra,WAAYA,EACZ/sF,SAAUA,EACVy9B,eAAgBA,EAChB/hC,eAAgBA,EAChBY,eAAgBA,EAChB74U,WAAYA,EACZmk1B,OA5CS,SAAUnk1B,GACnB,OAAIwrnB,KACAt1nB,EAAO+t1B,GACAx41B,QAAQyK,OAAO+t1B,KAE1Blp2B,EAAIqhB,MAAM,mBAAoB4D,GAC9Btb,EAAQsb,WAAaA,EACrBw1gB,EAAsBN,iBAAiBxwhB,GAChC8whB,EAAsBT,iBAAiBpphB,KAAK,WAC/C,GAAI6/nB,IAEA,MADAt1nB,EAAO+t1B,GACDA,EAEVlp2B,EAAIqhB,MAAM,+BAKVo5gB,EAAsBx/M,QAAQ,cAClC,GAAGrzG,MAAM,SAAU5jN,GAGf,MAFAhkB,EAAIgkB,MAAM,2BAA4BA,GACtC7I,EAAO6I,GACDA,CACV,GACJ,EAqBI1B,MAAOA,EACP+6U,YAAaA,EACbxzH,aAAcA,EACd8xH,cAAeA,EACfwB,eAAgBA,GACjBJ,EAAmB,CAClBA,iBAAkBA,GAClB,CAAC,GACL96U,EAAY,IAAI+m1B,EAAU171B,EAAM0Q,EAAO04f,EAAkB+jB,EAAuBv7gB,EAAUiq1B,GAC1F,IAAIE,EAAsBprgB,EAA8Bt0V,GACxDgZ,EAAciC,KAAK,QAASyk1B,GAC5Bpn1B,EAAUuiG,KAAK,YAAa,SAAUupU,GAClC/tb,EAAIqhB,MAAM,uBAAwB0sa,GAC9B0iN,IACAt1nB,EAAO+t1B,GAGiBn7a,EAAa2pF,YAKzC/mgB,EAAQ,IAAIo41B,EAAOryV,EAAkB3oF,EAAc9ra,EAAWw4gB,EAAuB9whB,IAHjFwR,EAAO,IAAI03T,EAInB,GACA5wT,EAAUuiG,KAAK,eAAgB,SAAU96G,EAAOsa,GAC9B,iBAAVta,GACAuY,EAAY,KACZ9G,EAAO6I,GAAS,IAAI4uT,IAGpB5yU,EAAIqhB,MAAM,2BAA4B3X,EAE9C,EACJ,EAAG,WACKuY,IACAA,EAAU4C,aACV5C,EAAY,KAEpB,GAQA,OAPA4huB,EAAkBj8gB,MAAM,WAChB3lN,IACAA,EAAU4C,aACV5C,EAAY,MAEhBw4gB,EAAsBjzgB,OAC1B,GACOq8tB,CACX,C,+BChHA,IAAIpgpB,EAAI,EAAQ,OACZ2pB,EAAW,EAAQ,OACnBm/Q,EAAkB,EAAQ,OAC1B72I,EAAsB,EAAQ,OAC9Bz6H,EAAoB,EAAQ,OAC5B49M,EAAiB,EAAQ,OACzBE,EAA2B,EAAQ,OACnC8iN,EAAqB,EAAQ,MAC7BD,EAAiB,EAAQ,OACzB9iN,EAAwB,EAAQ,OAGhCwuS,EAF+B,EAAQ,MAEjBtpgB,CAA6B,UAEnDt6G,EAAMnE,KAAKmE,IACXD,EAAMlE,KAAKkE,IAKfggG,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,QAAS0sgB,GAAuB,CAChExglB,OAAQ,SAAgBtgC,EAAO8i2B,GAC7B,IAIIC,EAAaC,EAAmB320B,EAAGrH,EAAGoT,EAAMD,EAJ5C9J,EAAIu4F,EAASrzG,MACbvQ,EAAMyxH,EAAkBpmG,GACxB400B,EAAcl9d,EAAgB/lY,EAAOgD,GACrCy+O,EAAkB/5O,UAAUC,OAahC,IAXwB,IAApB85O,EACFshnB,EAAcC,EAAoB,EACL,IAApBvhnB,GACTshnB,EAAc,EACdC,EAAoBhg2B,EAAMig2B,IAE1BF,EAActhnB,EAAkB,EAChCuhnB,EAAoB/l2B,EAAIC,EAAIgyP,EAAoB4zmB,GAAc,GAAI9/1B,EAAMig2B,IAE1E1whB,EAAyBvvU,EAAM+/1B,EAAcC,GAC7C320B,EAAIgpgB,EAAmBhngB,EAAG200B,GACrBh+0B,EAAI,EAAGA,EAAIg+0B,EAAmBh+0B,KACjCoT,EAAO6q0B,EAAcj+0B,KACTqJ,GAAG+mgB,EAAe/ogB,EAAGrH,EAAGqJ,EAAE+J,IAGxC,GADA/L,EAAE1kB,OAASq71B,EACPD,EAAcC,EAAmB,CACnC,IAAKh+0B,EAAIi+0B,EAAaj+0B,EAAIhiB,EAAMgg2B,EAAmBh+0B,IAEjDmT,EAAKnT,EAAI+90B,GADT3q0B,EAAOpT,EAAIg+0B,KAEC300B,EAAGA,EAAE8J,GAAM9J,EAAE+J,GACpBk6S,EAAsBjkT,EAAG8J,GAEhC,IAAKnT,EAAIhiB,EAAKgiB,EAAIhiB,EAAMgg2B,EAAoBD,EAAa/90B,IAAKstT,EAAsBjkT,EAAGrJ,EAAI,EAC7F,MAAO,GAAI+90B,EAAcC,EACvB,IAAKh+0B,EAAIhiB,EAAMgg2B,EAAmBh+0B,EAAIi+0B,EAAaj+0B,IAEjDmT,EAAKnT,EAAI+90B,EAAc,GADvB3q0B,EAAOpT,EAAIg+0B,EAAoB,KAEnB300B,EAAGA,EAAE8J,GAAM9J,EAAE+J,GACpBk6S,EAAsBjkT,EAAG8J,GAGlC,IAAKnT,EAAI,EAAGA,EAAI+90B,EAAa/90B,IAC3BqJ,EAAErJ,EAAIi+0B,GAAev71B,UAAUsd,EAAI,GAGrC,OADAqtT,EAAehkT,EAAGrrB,EAAMgg2B,EAAoBD,GACrC120B,CACT,G,yBCvDM,SAAWj4B,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,6DAA6DD,MAAM,KACvEghI,kBAAkB,EAClB9gI,SAAU,qDAAqDF,MAAM,KACrEG,cAAe,+BAA+BH,MAAM,KACpDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVS,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJC,EAAG,aACHC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WACJo2B,EAAG,UACHi/H,GAAI,WACJp1J,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERM,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA9DyCC,CAAQ,EAAQ,O,yBCElD,SAAW1D,GAAU,aAWhBA,EAAOG,aAAa,KAAM,CAC/B2u2B,mBACI,qHAAqHzu2B,MACjH,KAER0u2B,iBACI,qHAAqH1u2B,MACjH,KAERD,OAAQ,SAAU4u2B,EAAgBrxzB,GAC9B,OAAKqxzB,EAGiB,iBAAXrxzB,GACP,IAAIt8C,KAAKs8C,EAAO2qD,UAAU,EAAG3qD,EAAOj2C,QAAQ,UAGrCyX,KAAK8v1B,kBAAkBD,EAAetywB,SAEtCv9E,KAAK+v1B,oBAAoBF,EAAetywB,SARxCv9E,KAAK+v1B,mBAUpB,EACA5u2B,YAAa,oDAAoDD,MAAM,KACvEE,SAAU,yDAAyDF,MAC/D,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CiB,SAAU,SAAUipM,EAAOC,EAAS/oM,GAChC,OAAI8oM,EAAQ,GACD9oM,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAN,KAAM,SAAUC,GACZ,MAAyC,OAAjCA,EAAQ,IAAImG,cAAc,EACtC,EACArG,cAAe,gBACfP,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVku2B,WAAY,CACRxt2B,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OACS,IADDod,KAAKs9E,MAEE,gCAEA,gCAEnB,EACAz6F,SAAU,KAEdN,SAAU,SAAUiI,EAAKyl2B,GACrB,IAtEYhu2B,EAsER8/N,EAAS/hN,KAAKkw1B,YAAY1l2B,GAC1B4gM,EAAQ6kqB,GAAOA,EAAI7kqB,QAIvB,OA3EYnpM,EAwEG8/N,GAtEM,oBAAbt2G,UAA4BxpH,aAAiBwpH,UACX,sBAA1C3hH,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,MAsE3B8/N,EAASA,EAAOjhN,MAAMmv1B,IAEnBluoB,EAAOh+N,QAAQ,KAAMqnM,EAAQ,IAAO,EAAI,MAAQ,OAC3D,EACAtoM,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,oBACHC,GAAI,kBACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA9GyCC,CAAQ,EAAQ,O,yBCGlD,SAAW1D,GAAU,aAIzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIljF,EAAS,CACTr7C,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACy/C,EAAS,QAASA,EAAS,UAChCrpB,EAAG,CAAC,aAAc,eAClBn2B,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACu/C,EAAS,UAAWA,EAAS,YAClCt/C,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACq/C,EAAS,SAAUA,EAAS,YAErC,OAAOw+E,EAAgBjjF,EAAOh0C,GAAK,GAAKg0C,EAAOh0C,GAAK,EACxD,CAEW3J,EAAOG,aAAa,QAAS,CACpCC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,6DAA6DD,MAAM,KACvEghI,kBAAkB,EAClB9gI,SACI,8DAA8DF,MAC1D,KAERG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJC,EAAGq+H,EACHp+H,GAAI,aACJC,EAAGm+H,EACHl+H,GAAI,aACJC,EAAGi+H,EACHh+H,GAAIg+H,EACJ5nG,EAAG4nG,EACHq3B,GAAI,YACJp1J,EAAG+9H,EACH99H,GAAI89H,EACJ79H,EAAG69H,EACH59H,GAAI49H,GAERt9H,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhFyCC,CAAQ,EAAQ,O,mFC0BtDikO,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,E,0BCxCzB+sa,EAAmB,KAAY,IAASC,aAqB5C,QAFmBD,GAAmB,OAAUA,GD8BhD,SAA0B5voB,GACxB,OAAO,EAAA4iO,EAAA,GAAa5iO,KAClB,EAAA2iO,EAAA,GAAS3iO,EAAMyO,WAAao0N,GAAe,OAAW7iO,GAC1D,C,kBEzDA,IAAIyhlB,EAAW,EAAQ,MACnBt3iB,EAAO,EAAQ,OACf24T,EAAQ,EAAQ,OAChBzzP,EAAQ,EAAQ,OAChBG,EAAiB,EAAQ,MACzBlrF,EAAQ,EAAQ,OAChBkm1B,EAAO,EAAQ,OAInB1r2B,EAAQ2r2B,OAAS,WACf,IAAIv80B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,OAAI0f,aAAiBtM,MACZsM,EAEF40U,EAAMvtP,IAAIutP,EAAM50U,GAAO4jV,SAAShP,EAAMsC,KAAKl3U,IAAQ/tB,MAAM,IAAM+tB,EAAMzf,MAC9E,EAEA3P,EAAQwxG,QAAU,WAOhB,IANA,IAII9iG,EAJA0gB,EAAQmhF,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YACpC0M,EAAIgT,EAAMzf,OACV8mG,EAAM,EACNljE,EAAQ,EAGH3yC,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB61G,GAAOrnF,EAAMxuB,GACb2yC,GAAS,EAQX,OANA7kC,EAAS+nG,EAAMljE,EAEXjyC,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQ4r2B,SAAW,WAMjB,IALA,IAIIl91B,EAJA0gB,EAAQmhF,EAAM8E,QAAQ3lG,WACtB0M,EAAIgT,EAAMzf,OACV8mG,EAAM,EACNljE,EAAQ,EAEH3yC,EAAI,EAAGA,EAAIwb,EAAGxb,IAAK,CAC1B,IAAIk4C,EAAK1pB,EAAMxuB,GACG,iBAAPk4C,IACT29D,GAAO39D,IAEE,IAAPA,GACF29D,IAES,OAAP39D,GACFvF,GAEJ,CAOA,OANA7kC,EAAS+nG,EAAMljE,EAEXjyC,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQ6r2B,UAAY,SAASz80B,EAAOmqF,EAAUuyvB,GAC5C,GAAIp81B,UAAUC,QAAU,EACtB,OAAO6V,EAAMuvF,GAMf,GAJA+2vB,EAAgBA,GAAiB180B,EACjCA,EAAQmhF,EAAM8E,QAAQjmF,IACtB080B,EAAgBv7vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQy2vB,eAExBhp1B,MAC3B,OAAOgp1B,EAOT,IALA,IAAIC,EAAgB,EAChBr91B,EAAS,EACT8qG,OAA0B,IAAbD,GAAoC,MAAbA,EACpCE,EAAoBD,EAAa,KAAO9I,EAAe/8D,MAAM4lE,EAAW,IAEnE34G,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAAK,CACrC,IAAIM,EAAQkuB,EAAMxuB,GAElB,GAAI44G,EACF9qG,GAAUo91B,EAAclr2B,GACxBmr2B,QACK,CACL,IAAI/+vB,EAAS,CAAC0D,EAAegJ,YAAYx4G,EAAOwvG,EAAeiJ,qBAAqBpwG,OAAOkwG,GAEvF/I,EAAekJ,QAAQ5M,KACzBt+F,GAAUo91B,EAAclr2B,GACxBmr2B,IAEJ,CACF,CAEA,OAAOr91B,EAASq91B,CAClB,EAEA/r2B,EAAQgs2B,WAAa,WASnB,IANA,IAAIp81B,EAAO2gG,EAAM8I,YAAY3pG,WACzBsqG,GAAkBpqG,EAAKD,OAAS,GAAK,EACrCyf,EAAQmhF,EAAM8E,QAAQzlG,EAAK,IAC3B2jC,EAAQ,EACR7kC,EAAS,EAEJ9N,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAAK,CAGrC,IAFA,IAAIq5G,GAAkB,EAEb14E,EAAI,EAAGA,EAAIy4E,EAAgBz4E,IAAK,CACvC,IAAIrgC,EAAQ0O,EAAK,EAAI2xB,EAAI,GAAG3gC,GACxB24G,EAAW3pG,EAAK,EAAI2xB,EAAI,GAExB24E,GAAiB,EAErB,QAH8B,IAAbX,GAAoC,MAAbA,EAItCW,GAAiB,MACZ,CACL,IAAIT,EAAoB/I,EAAe/8D,MAAM4lE,EAAW,IACpDvM,EAAS,CAAC0D,EAAegJ,YAAYx4G,EAAOwvG,EAAeiJ,qBAAqBpwG,OAAOkwG,GAE3FS,EAAiBxJ,EAAekJ,QAAQ5M,EAC1C,CAGA,IAAKkN,EAAgB,CACnBD,GAAkB,EAClB,KACF,CAEAA,GAAkB,CACpB,CAEIA,IACFvrG,GAAU0gB,EAAMxuB,GAChB2yC,IAEJ,CAEA,IAAIi3C,EAAU97E,EAAS6kC,EAEvB,OAAIjyC,MAAMkpF,GACD,EAEAA,CAEX,EAEAxqF,EAAQ8ilB,KAAO,CAAC,EAEhB9ilB,EAAQ8ilB,KAAKC,KAAO,SAASjhlB,EAAGsgC,EAAO8sU,EAAM+8f,EAAY530B,EAAGC,GAC1D,OAAI5kB,UAAUC,OAAS,EACd6V,EAAMtkB,OAGfmzB,OAAWhiB,IAANgiB,EAAmB,EAAIA,EAC5BC,OAAWjiB,IAANiiB,EAAmB,EAAIA,EAE5BxyB,EAAIyuG,EAAMK,YAAY9uG,GACtBsgC,EAAQmuE,EAAMK,YAAYxuE,GAC1B8sU,EAAO3+P,EAAMK,YAAYs+P,GACzB76U,EAAIk8E,EAAMK,YAAYv8E,GACtBC,EAAIi8E,EAAMK,YAAYt8E,GAClBi8E,EAAMgB,WAAWzvG,EAAGsgC,EAAO8sU,EAAM76U,EAAGC,GAC/B9O,EAAMtkB,OAGfY,GAAKA,EAAIuyB,IAAMC,EAAID,GACZ,EAAe2vU,EAAMkL,KAAKd,IAAItsW,EAAGsgC,EAAO8sU,GAAQlL,EAAMkL,KAAKC,IAAIrtW,EAAGsgC,EAAO8sU,IAClF,EAEAlvW,EAAQ8ilB,KAAKG,IAAM,SAASipR,EAAa9p0B,EAAO8sU,EAAM76U,EAAGC,GASvD,OARAD,OAAWhiB,IAANgiB,EAAmB,EAAIA,EAC5BC,OAAWjiB,IAANiiB,EAAmB,EAAIA,EAE5B430B,EAAc37vB,EAAMK,YAAYs7vB,GAChC9p0B,EAAQmuE,EAAMK,YAAYxuE,GAC1B8sU,EAAO3+P,EAAMK,YAAYs+P,GACzB76U,EAAIk8E,EAAMK,YAAYv8E,GACtBC,EAAIi8E,EAAMK,YAAYt8E,GAClBi8E,EAAMgB,WAAW26vB,EAAa9p0B,EAAO8sU,EAAM76U,EAAGC,GACzC9O,EAAMtkB,MAGR8iW,EAAMkL,KAAKE,IAAI88f,EAAa9p0B,EAAO8sU,IAAS56U,EAAID,GAAKA,CAC9D,EAEAr0B,EAAQmjlB,MAAQ,CAAC,EAEjBnjlB,EAAQmjlB,MAAMJ,KAAO,SAASopR,EAAWC,EAAQF,EAAaD,GAK5D,OAJAE,EAAY57vB,EAAMK,YAAYu7vB,GAC9BC,EAAS77vB,EAAMK,YAAYw7vB,GAC3BF,EAAc37vB,EAAMK,YAAYs7vB,GAChCD,EAAa17vB,EAAMK,YAAYq7vB,GAC3B17vB,EAAMgB,WAAW46vB,EAAWC,EAAQF,EAAaD,GAC5Czm1B,EAAMtkB,MAER,EAAe8iW,EAAMwL,SAASpB,IAAI+9f,EAAWC,EAAQF,GAAelogB,EAAMwL,SAASL,IAAIg9f,EAAWC,EAAQF,EACnH,EAEAls2B,EAAQmjlB,MAAMJ,KAAKspR,MAAQ,SAASD,EAAQF,EAAaC,EAAWG,GAOlE,GANAA,OAA6Bj61B,IAAfi61B,EAA4BH,EAAYG,EAEtDF,EAAS77vB,EAAMK,YAAYw7vB,GAC3BF,EAAc37vB,EAAMK,YAAYs7vB,GAChCC,EAAY57vB,EAAMK,YAAYu7vB,GAC9BG,EAAa/7vB,EAAMK,YAAY07vB,GAC3B/7vB,EAAMgB,WAAW66vB,EAAQF,EAAaC,EAAWG,GACnD,OAAO9m1B,EAAMtkB,MAIf,IADA,IAAIwN,EAAS,EACJ9N,EAAIur2B,EAAWvr2B,GAAK0r2B,EAAY1r2B,IACvC8N,GAAUi0kB,EAAS3ue,OAAOo4vB,EAAQxr2B,GAAKG,KAAKC,IAAIkr2B,EAAatr2B,GAAKG,KAAKC,IAAI,EAAIkr2B,EAAaE,EAASxr2B,GAEvG,OAAO8N,CACT,EAEA1O,EAAQmjlB,MAAMF,IAAM,SAASmpR,EAAQF,EAAa9p0B,GAIhD,GAHAgq0B,EAAS77vB,EAAMK,YAAYw7vB,GAC3BF,EAAc37vB,EAAMK,YAAYs7vB,GAChC9p0B,EAAQmuE,EAAMK,YAAYxuE,GACtBmuE,EAAMgB,WAAW66vB,EAAQF,EAAa9p0B,GACxC,OAAO5c,EAAMtkB,MAIf,IADA,IAAIY,EAAI,EACDA,GAAKsq2B,GAAQ,CAClB,GAAIpogB,EAAMwL,SAASpB,IAAItsW,EAAGsq2B,EAAQF,IAAgB9p0B,EAChD,OAAOtgC,EAETA,GACF,CACF,EAEA9B,EAAQwjlB,MAAQ,CAAC,EAEjBxjlB,EAAQwjlB,MAAMT,KAAO,SAASjhlB,EAAGkrB,EAAGi/0B,GAGlC,OAFAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBkrB,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAWzvG,EAAGkrB,GACfxH,EAAMtkB,MAGR,EAAe8iW,EAAM0L,UAAUtB,IAAItsW,EAAGkrB,GAAKg3U,EAAM0L,UAAUP,IAAIrtW,EAAGkrB,EAC3E,EAEAhtB,EAAQwjlB,MAAMT,KAAKlqb,GAAK,SAAS/2J,EAAGkrB,GAClC,OAAKlrB,GAAKkrB,EACDxH,EAAMuvF,GAGXjzG,EAAI,GAAKkrB,EAAIjsB,KAAKC,IAAI,GAAI,IACrBwkB,EAAMg0B,IAGG,iBAAN13C,GAAiC,iBAANkrB,EAC9BxH,EAAMtkB,MAGR,EAAK8iW,EAAM0L,UAAUtB,IAAItsW,EAAGkrB,EACrC,EAEAhtB,EAAQwjlB,MAAMP,IAAM,SAASipR,EAAal/0B,GAGxC,OAFAk/0B,EAAc37vB,EAAMK,YAAYs7vB,GAChCl/0B,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAW26vB,EAAal/0B,GACzBxH,EAAMtkB,MAER8iW,EAAM0L,UAAUN,IAAI88f,EAAal/0B,EAC1C,EAEAhtB,EAAQwjlB,MAAMP,IAAIpqb,GAAK,SAASn9I,EAAGsR,GACjC,OAAKtR,GAAKsR,EACDxH,EAAMuvF,GAGXr5F,EAAI,GAAKA,EAAI,GAAKsR,EAAI,GAAKA,EAAIjsB,KAAKC,IAAI,GAAI,IACvCwkB,EAAMg0B,IAGG,iBAAN99B,GAAiC,iBAANsR,EAC9BxH,EAAMtkB,MAGR8iW,EAAM0L,UAAUN,IAAI,EAAM1zV,EAAGsR,EACtC,EAEAhtB,EAAQwjlB,MAAMK,KAAO,SAAS0oR,EAAU/moB,GACtC,GAAyB,IAArB91N,UAAUC,OACZ,OAAO6V,EAAMuvF,GAGf,KAAOw3vB,aAAoB181B,OAAc21N,aAAoB31N,OAC3D,OAAO2V,EAAMtkB,MAGf,GAAIqr2B,EAAS581B,SAAW61N,EAAS71N,OAC/B,OAAO6V,EAAMtkB,MAGf,GAAIqr2B,EAAS,IAAM/moB,EAAS,IAC1B+moB,EAAS,GAAG581B,SAAW61N,EAAS,GAAG71N,OACnC,OAAO6V,EAAMtkB,MAGf,IACIq/B,EAAK3/B,EAAG2gC,EADRimD,EAAM+kxB,EAAS581B,OAInB,IAAK/O,EAAI,EAAGA,EAAI4mF,EAAK5mF,IACb2r2B,EAAS3r2B,aAAciP,QAC3B0wB,EAAMgs0B,EAAS3r2B,GACf2r2B,EAAS3r2B,GAAK,GACd2r2B,EAAS3r2B,GAAGyO,KAAKkxB,IAEbilM,EAAS5kO,aAAciP,QAC3B0wB,EAAMilM,EAAS5kO,GACf4kO,EAAS5kO,GAAK,GACd4kO,EAAS5kO,GAAGyO,KAAKkxB,IAIrB,IAAIsnD,EAAM0kxB,EAAS,GAAG581B,OAClBggW,EAAe,IAAR9nR,EAAaL,EAAI,GAAKA,EAAI,IAAIK,EAAI,GACzC2kxB,EAAO,EACPlmd,EAAIvlZ,KAAKytB,GAEb,IAAK5tB,EAAI,EAAGA,EAAI4mF,EAAK5mF,IACnB,IAAK2gC,EAAI,EAAGA,EAAIsmD,EAAKtmD,IACnBir0B,GAAQzr2B,KAAKC,IAAKur2B,EAAS3r2B,GAAG2gC,GAAKikM,EAAS5kO,GAAG2gC,GAAK,GAAKikM,EAAS5kO,GAAG2gC,GAyBzE,OAAOxgC,KAAK+F,MAAyB,IApBrC,SAAe0l2B,EAAM78f,GACnB,IAAIj0V,EAAI3a,KAAKm0F,KAAK,GAAMs3wB,GACpB78f,EAAI,GAAO,IACbj0V,GAAQ3a,KAAK0vB,KAAK,EAAI+70B,EAAKlmd,IAG7B,IADA,IAAIt5X,EAAI2iV,EACF3iV,GAAK,GACTtR,EAAIA,EAAI8w1B,EAAKx/0B,EACbA,GAAQ,EAIV,IAFA,IAAI7Q,EAAIT,EACJvG,EAAIw6V,EACDxzV,EAAI,MAAaT,GAGtBA,GADAS,EAAIA,EAAIqw1B,GADRr31B,GAAQ,GAIV,OAAO,EAAEuG,CACX,CAEkB+w1B,CAAMD,EAAM78f,IAAkB,GAClD,EAEA3vW,EAAQ0s2B,OAAS,SAAS94X,EAAQ7he,GAChC,OAAyB,IAArBrC,UAAUC,OACL6V,EAAMuvF,GAGXhjG,EAAQ,EACHyT,EAAMg0B,IAGTo6b,aAAkB/je,OAA4B,iBAAVkC,EAIpB,IAAlB6he,EAAOjke,OAIJq0V,EAAMn8Q,IAAI+rZ,EAAQ7he,QAJzB,EAHSyT,EAAMtkB,KAQjB,EAEAlB,EAAQ2s2B,QAAU,SAAS/4X,GACzB,OAAyB,IAArBlke,UAAUC,OACL6V,EAAMuvF,GAGT6+X,aAAkB/je,MAIF,IAAlB+je,EAAOjke,OACF,EAGFq0V,EAAM13L,KAAKsnU,GAPTpud,EAAMtkB,KAQjB,EAEAlB,EAAQ8jlB,WAAa,CAAC,EAEtB9jlB,EAAQ8jlB,WAAWC,KAAO,SAAS3hjB,EAAO81U,EAAI97V,GAI5C,OAHAgmB,EAAQmuE,EAAMK,YAAYxuE,GAC1B81U,EAAK3nQ,EAAMK,YAAYsnQ,GACvB97V,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWnvE,EAAO81U,EAAI97V,GACvBoJ,EAAMtkB,MAER8iW,EAAMsU,SAAS,EAAGl2U,EAAO81U,EAAI97V,GAAG,GAAK,CAC9C,EAEApc,EAAQ8jlB,WAAW7tjB,EAAI,SAASmM,EAAO81U,EAAI97V,GAIzC,OAHAgmB,EAAQmuE,EAAMK,YAAYxuE,GAC1B81U,EAAK3nQ,EAAMK,YAAYsnQ,GACvB97V,EAAIm0F,EAAMK,YAAYx0F,GAClBm0F,EAAMgB,WAAWnvE,EAAO81U,EAAI97V,GACvBoJ,EAAMtkB,MAER8iW,EAAMuU,IAAI,EAAGn2U,EAAO81U,EAAI97V,GAAG,GAAK,CACzC,EAEApc,EAAQ4s2B,OAAS,SAASv4lB,EAAQC,GAGhC,OAFAD,EAAS9jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQg/J,IAC9CC,EAAS/jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQi/J,IAC1C/jK,EAAMgB,WAAW8iK,EAAQC,GACpB9uP,EAAMtkB,MAER8iW,EAAM6F,UAAUx1F,EAAQC,EACjC,EAEAt0Q,EAAQyxG,MAAQ,WACd,OAAOlB,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YAAYC,MACjD,EAEA3P,EAAQ0xG,OAAS,WACf,IAAItiF,EAAQmhF,EAAM8E,QAAQ3lG,WAC1B,OAAO0f,EAAMzf,OAAS3P,EAAQ6s2B,WAAWz90B,EAC3C,EAEApvB,EAAQ8s2B,QAAU,SAAU190B,EAAOluB,GACjC,IAAIwN,EAAS,EAEb0gB,EAAQmhF,EAAM8E,QAAQjmF,GAEtB,IAAK,IAAIxuB,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAC5BwuB,EAAMxuB,KAAOM,GACfwN,IAGJ,OAAOA,CACT,EAGA1O,EAAQ6s2B,WAAa,WAInB,IAHA,IAEIhr2B,EAFAutB,EAAQmhF,EAAM8E,QAAQ3lG,WACtBq91B,EAAS,EAEJns2B,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAEhB,QADhBiB,EAAUutB,EAAMxuB,KACoB,KAAZiB,GACtBkr2B,IAGJ,OAAOA,CACT,EAEA/s2B,EAAQgt2B,QAAU,SAAS590B,EAAOmqF,GAKhC,GAJAnqF,EAAQmhF,EAAM8E,QAAQjmF,QAEQ,IAAbmqF,GAAoC,MAAbA,EAGtC,OAAOnqF,EAAMzf,OAMf,IAHA,IAAI69B,EAAU,EACVisE,EAAoB/I,EAAe/8D,MAAM4lE,EAAW,IAE/C34G,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAAK,CACrC,IAAIM,EAAQkuB,EAAMxuB,GACdosG,EAAS,CAAC0D,EAAegJ,YAAYx4G,EAAOwvG,EAAeiJ,qBAAqBpwG,OAAOkwG,GAEvF/I,EAAekJ,QAAQ5M,IACzBx/D,GAEJ,CAEA,OAAOA,CACT,EAEAxtC,EAAQit2B,SAAW,WAIjB,IAHA,IAAIr91B,EAAO2gG,EAAM8I,YAAY3pG,WACzB2rN,EAAU,IAAIxrN,MAAM0gG,EAAM8E,QAAQzlG,EAAK,IAAID,QAEtC/O,EAAI,EAAGA,EAAIy6N,EAAQ1rN,OAAQ/O,IAClCy6N,EAAQz6N,IAAK,EAEf,IAAKA,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,GAAK,EAAG,CACnC,IAAIwuB,EAAQmhF,EAAM8E,QAAQzlG,EAAKhP,IAC3B24G,EAAW3pG,EAAKhP,EAAI,GAGxB,QAF8B,IAAb24G,GAAoC,MAAbA,EAKtC,IAFA,IAAIE,EAAoB/I,EAAe/8D,MAAM4lE,EAAW,IAE/Ch4E,EAAI,EAAGA,EAAInS,EAAMzf,OAAQ4xB,IAAK,CACrC,IAAIrgC,EAAQkuB,EAAMmS,GACdyrE,EAAS,CAAC0D,EAAegJ,YAAYx4G,EAAOwvG,EAAeiJ,qBAAqBpwG,OAAOkwG,GAE3F4hH,EAAQ95L,GAAK85L,EAAQ95L,IAAMmvE,EAAekJ,QAAQ5M,EACpD,CAEJ,CACA,IAAIt+F,EAAS,EACb,IAAK9N,EAAI,EAAGA,EAAIy6N,EAAQ1rN,OAAQ/O,IAC1By6N,EAAQz6N,IACV8N,IAIJ,OAAOA,CACT,EAEA1O,EAAQkt2B,YAAc,WACpB,OAAOxB,EAAKyB,OAAO9w1B,MAAM,KAAMk0F,EAAM8E,QAAQ3lG,YAAYC,MAC3D,EAEA3P,EAAQiklB,WAAa,CAAC,EAEtBjklB,EAAQiklB,WAAWxnkB,EAAI,SAAS43P,EAAQC,GAGtC,GAFAD,EAAS9jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQg/J,IAC9CC,EAAS/jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQi/J,IAC1C/jK,EAAMgB,WAAW8iK,EAAQC,GAC3B,OAAO9uP,EAAMtkB,MAMf,IAJA,IAAI82W,EAAQhU,EAAMsC,KAAKjyF,GACnB4jG,EAAQjU,EAAMsC,KAAKhyF,GACnB5lQ,EAAS,EACT0N,EAAIi4P,EAAO1kQ,OACN/O,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB8N,IAAW2lQ,EAAOzzQ,GAAKo3W,IAAU1jG,EAAO1zQ,GAAKq3W,GAE/C,OAAOvpW,EAAS0N,CAClB,EAEApc,EAAQiklB,WAAW/tjB,EAAI,SAASm+O,EAAQC,GAGtC,OAFAD,EAAS9jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQg/J,IAC9CC,EAAS/jK,EAAM6E,iBAAiB7E,EAAM8E,QAAQi/J,IAC1C/jK,EAAMgB,WAAW8iK,EAAQC,GACpB9uP,EAAMtkB,MAER8iW,EAAMyF,WAAWp1F,EAAQC,EAClC,EAEAt0Q,EAAQot2B,MAAQ,WACd,IAAIh+0B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAIT,IAFA,IAAIk3U,EAAOtC,EAAMsC,KAAKl3U,GAClB1gB,EAAS,EACJ9N,EAAI,EAAGA,EAAIwuB,EAAMzf,OAAQ/O,IAChC8N,GAAU3N,KAAKC,IAAKouB,EAAMxuB,GAAK0lW,EAAO,GAExC,OAAO53V,CACT,EAEA1O,EAAQsklB,MAAQ,CAAC,EAEjBtklB,EAAQsklB,MAAMvB,KAAO,SAASjhlB,EAAGwwN,EAAQ25oB,GAGvC,OAFAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBwwN,EAAS/hH,EAAMK,YAAY0hH,GACvB/hH,EAAMgB,WAAWzvG,EAAGwwN,GACf9sM,EAAMtkB,MAER,EAAe8iW,EAAM4L,YAAYxB,IAAItsW,EAAGwwN,GAAU0xI,EAAM4L,YAAYT,IAAIrtW,EAAGwwN,EACpF,EAEAtyN,EAAQ00B,EAAI,CAAC,EAEb10B,EAAQ00B,EAAEqujB,KAAO,SAASjhlB,EAAGqoN,EAAIC,EAAI6hpB,GAInC,OAHAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBqoN,EAAK55G,EAAMK,YAAYu5G,GACvBC,EAAK75G,EAAMK,YAAYw5G,GACnB75G,EAAMgB,WAAWzvG,EAAGqoN,EAAIC,GACnB5kM,EAAMtkB,MAER,EAAe8iW,EAAMqL,SAASjB,IAAItsW,EAAGqoN,EAAIC,GAAM45I,EAAMqL,SAASF,IAAIrtW,EAAGqoN,EAAIC,EAClF,EAEApqN,EAAQ00B,EAAEqujB,KAAKlqb,GAAK,SAAS/2J,EAAGqoN,EAAIC,GAClC,OAAyB,IAArB16M,UAAUC,OACL6V,EAAMuvF,GAGXjzG,EAAI,GAAKqoN,EAAK,GAAKC,EAAK,EACnB5kM,EAAMg0B,IAGG,iBAAN13C,GAAkC,iBAAPqoN,GAAmC,iBAAPC,EAC1D5kM,EAAMtkB,MAGR,EAAI8iW,EAAMqL,SAASjB,IAAItsW,EAAGqoN,EAAIC,EACvC,EAEApqN,EAAQ00B,EAAEuujB,IAAM,SAASipR,EAAa/hpB,EAAIC,GAIxC,OAHA8hpB,EAAc37vB,EAAMK,YAAYs7vB,GAChC/hpB,EAAK55G,EAAMK,YAAYu5G,GACvBC,EAAK75G,EAAMK,YAAYw5G,GACnB75G,EAAMgB,WAAW26vB,EAAa/hpB,EAAIC,GAC7B5kM,EAAMtkB,MAEXgr2B,GAAe,GAAOA,EAAc,EAC/B1m1B,EAAMg0B,IAGRwqT,EAAMqL,SAASD,IAAI88f,EAAa/hpB,EAAIC,EAC7C,EAEApqN,EAAQ00B,EAAEuujB,IAAIpqb,GAAK,SAASn9I,EAAGyuM,EAAIC,GACjC,OAAyB,IAArB16M,UAAUC,OACL6V,EAAMuvF,GAGXr5F,EAAI,GAAKA,EAAI,GAAKyuM,EAAK,GAAKA,EAAKppN,KAAKC,IAAI,GAAI,KAAOopN,EAAK,GAAKA,EAAKrpN,KAAKC,IAAI,GAAI,IAC5EwkB,EAAMg0B,IAGG,iBAAN99B,GAAkC,iBAAPyuM,GAAmC,iBAAPC,EAC1D5kM,EAAMtkB,MAGR8iW,EAAMqL,SAASD,IAAI,EAAM1zV,EAAGyuM,EAAIC,EACzC,EAEApqN,EAAQ00B,EAAEmvjB,KAAO,SAASxvU,EAAQC,GAChC,IAAKD,IAAWC,EACd,OAAO9uP,EAAMuvF,GAGf,KAAMs/J,aAAkBxkQ,OAAYykQ,aAAkBzkQ,OACpD,OAAO2V,EAAMuvF,GAGf,GAAIs/J,EAAO1kQ,OAAS,GAAK2kQ,EAAO3kQ,OAAS,EACvC,OAAO6V,EAAM4wF,KAGf,IAAIi3vB,EAAe,SAASlp0B,EAAQuqC,GAElC,IADA,IAAI+nC,EAAM,EACD71G,EAAI,EAAGA,EAAIujC,EAAOx0B,OAAQ/O,IACjC61G,GAAM11G,KAAKC,IAAKmjC,EAAOvjC,GAAK8tE,EAAK,GAEnC,OAAO+nC,CACT,EAEI/nC,EAAKi0gB,EAAS5we,IAAIsiK,GAAUA,EAAO1kQ,OACnCi/D,EAAK+zgB,EAAS5we,IAAIuiK,GAAUA,EAAO3kQ,OAIvC,OAHW091B,EAAah5lB,EAAQ3lM,IAAO2lM,EAAO1kQ,OAAS,IAC5C091B,EAAa/4lB,EAAQ1lM,IAAO0lM,EAAO3kQ,OAAS,GAGzD,EAEA3P,EAAQst2B,OAAS,SAASxr2B,GAExB,OADAA,EAAIyuG,EAAMK,YAAY9uG,cACLghB,MACRhhB,EAEFf,KAAKS,KAAK,EAAIM,IAAM,EAAIA,IAAM,CACvC,EAEA9B,EAAQut2B,UAAY,SAASru2B,GAE3B,IADAA,EAAIqxG,EAAMK,YAAY1xG,cACL4jB,MACf,OAAO5jB,EAET,IAAIsu2B,EAAMzs2B,KAAKm0F,IAAI,EAAIh2F,GACvB,OAAQsu2B,EAAM,IAAMA,EAAM,EAC5B,EAEAxt2B,EAAQyt2B,SAAW,SAAS3r2B,EAAG4r2B,EAAQC,GAIrC,GAHA7r2B,EAAIyuG,EAAMK,YAAY9uG,GACtB4r2B,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWzvG,EAAG4r2B,EAAQC,GAC9B,OAAOno1B,EAAMtkB,MAOf,IALA,IAAI0s2B,EAAQ5pgB,EAAMsC,KAAKqngB,GACnBE,EAAQ7pgB,EAAMsC,KAAKongB,GACnBtx1B,EAAIux1B,EAAOh+1B,OACX6pC,EAAM,EACNmiG,EAAM,EACD/6I,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB44C,IAAQm0zB,EAAO/s2B,GAAKgt2B,IAAUF,EAAO9s2B,GAAKit2B,GAC1ClytB,GAAO56I,KAAKC,IAAI2s2B,EAAO/s2B,GAAKgt2B,EAAO,GAErC,IAAIx41B,EAAIokC,EAAMmiG,EAEd,OADQkytB,EAAQz41B,EAAIw41B,EACTx41B,EAAItT,CACjB,EAEA9B,EAAQ8t2B,UAAY,SAASx81B,EAAMk4V,GAGjC,GAFAl4V,EAAOi/F,EAAM6E,iBAAiB7E,EAAM8E,QAAQ/jG,IAC5Ck4V,EAAOj5P,EAAM6E,iBAAiB7E,EAAM8E,QAAQm0P,IACxCj5P,EAAMgB,WAAWjgG,EAAMk4V,GACzB,OAAOhkV,EAAMtkB,MAKf,IAHA,IAAIkb,EAAI9K,EAAK3B,OACTyF,EAAIo0V,EAAK75V,OACT2lB,EAAI,GACC10B,EAAI,EAAGA,GAAKwU,EAAGxU,IAAK,CAC3B00B,EAAE10B,GAAK,EACP,IAAK,IAAI2gC,EAAI,EAAGA,EAAInlB,EAAGmlB,IACX,IAAN3gC,EACE0Q,EAAKiwB,IAAMioU,EAAK,KAClBl0U,EAAE,IAAM,GAED10B,EAAIwU,EACT9D,EAAKiwB,GAAKioU,EAAK5oW,EAAI,IAAM0Q,EAAKiwB,IAAMioU,EAAK5oW,KAC3C00B,EAAE10B,IAAM,GAEDA,IAAMwU,GACX9D,EAAKiwB,GAAKioU,EAAKp0V,EAAI,KACrBkgB,EAAElgB,IAAM,EAIhB,CACA,OAAOkgB,CACT,EAGAt1B,EAAQmllB,MAAQ,SAAS3miB,GAEvB,OADAA,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACb07B,EAGM,IAAXA,GAIA9c,SAAS8c,EAAQ,MAAQA,GAAUA,EAAS,EAHvCh5B,EAAMg0B,IAORwqT,EAAMgH,QAAQxsT,EACvB,EAEAx+C,EAAQmllB,MAAMpC,KAAO,SAAS7hlB,EAAOkhC,EAAO8sU,EAAM+8f,GAChD,OAAyB,IAArBv81B,UAAUC,OACL6V,EAAMuvF,GAGX7zG,EAAQ,GAAKkhC,GAAS,GAAK8sU,GAAQ,GAIjB,iBAAVhuW,GAAyC,iBAAVkhC,GAAwC,iBAAT8sU,EAHjE1pV,EAAMtkB,MAOR+q2B,EAAajogB,EAAM6E,MAAMuF,IAAIltW,EAAOkhC,EAAO8sU,GAAM,GAAQlL,EAAM6E,MAAMsG,IAAIjuW,EAAOkhC,EAAO8sU,GAAM,EACtG,EAEAlvW,EAAQmllB,MAAMlC,IAAM,SAASipR,EAAa9p0B,EAAO8sU,GAC/C,OAAyB,IAArBx/V,UAAUC,OACL6V,EAAMuvF,GAGXm3vB,EAAc,GAAKA,EAAc,GAAK9p0B,GAAS,GAAK8sU,GAAQ,EACvD1pV,EAAMg0B,IAGa,iBAAhB0yzB,GAA+C,iBAAV9p0B,GAAwC,iBAAT8sU,EACvE1pV,EAAMtkB,MAGR8iW,EAAM6E,MAAMuG,IAAI88f,EAAa9p0B,EAAO8sU,EAC7C,EAEAlvW,EAAQsllB,QAAU,SAAS9miB,GAEzB,OADAA,EAAS+xD,EAAMK,YAAYpyD,cACL17B,MACb07B,EAEFwlT,EAAM0G,QAAQlsT,EACvB,EAEAx+C,EAAQsllB,QAAQvxe,QAAU,SAASjyG,GACjC,OAAyB,IAArB4N,UAAUC,OACL6V,EAAMuvF,GAGXjzG,GAAK,EACA0jB,EAAMg0B,IAGE,iBAAN13C,EACF0jB,EAAMtkB,MAGR8iW,EAAM0G,QAAQ5oW,EACvB,EAEA9B,EAAQ+t2B,MAAQ,SAAS1wyB,GAEvB,OADAA,EAAIkzC,EAAMK,YAAYvzC,cACLv6C,MACRu6C,EAEF2mS,EAAMmK,OAAOC,IAAI/wS,EAAG,EAAG,GAAK,EACrC,EAEAr9D,EAAQgu2B,QAAU,WAChB,IAAIp+1B,EAAO2gG,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YAChD,OAAIE,aAAgBkT,MACXlT,EAEFo0V,EAAM2C,QAAQ/2V,EACvB,EAEA5P,EAAQiu2B,OAAS,SAASC,EAASC,EAASC,EAAOC,GAIjD,IADAH,EAAU39vB,EAAM6E,iBAAiB84vB,cACVpr1B,MACrB,OAAOor1B,EAIT,IAAItt2B,EACJ,QAAgByR,IAAZ871B,EAEF,IADAA,EAAU,GACLvt2B,EAAI,EAAGA,GAAKst2B,EAAQv+1B,OAAQ/O,IAC/But2B,EAAQ9+1B,KAAKzO,GAGjB,QAAcyR,IAAV+71B,EAEF,IADAA,EAAQ,GACHxt2B,EAAI,EAAGA,GAAKst2B,EAAQv+1B,OAAQ/O,IAC/Bwt2B,EAAM/+1B,KAAKzO,GAMf,GAFAut2B,EAAU59vB,EAAM6E,iBAAiB+4vB,GACjCC,EAAQ79vB,EAAM6E,iBAAiBg5vB,GAC3B79vB,EAAMgB,WAAW48vB,EAASC,GAC5B,OAAO5o1B,EAAMtkB,WAIGmR,IAAdg81B,IACFA,GAAY,GAId,IAmBIn/f,EACA9sU,EApBAhmB,EAAI8x1B,EAAQv+1B,OACZ2+1B,EAAQ,EACRC,EAAQ,EACRC,EAAS,EACTC,EAAS,EACb,IAAK7t2B,EAAI,EAAGA,EAAIwb,EAAGxb,IAAK,CACtB,IAAIkB,EAAIqs2B,EAAQvt2B,GACZ1B,EAAI6B,KAAKS,IAAI0s2B,EAAQtt2B,IACzB0t2B,GAASxs2B,EACTys2B,GAASrv2B,EACTsv2B,GAAU1s2B,EAAI5C,EACduv2B,GAAU3s2B,EAAIA,CAChB,CACAws2B,GAASly1B,EACTmy1B,GAASny1B,EACToy1B,GAAUpy1B,EACVqy1B,GAAUry1B,EAKNiy1B,EAEFjs0B,EAAQms0B,GADRr/f,GAAQs/f,EAASF,EAAQC,IAAUE,EAASH,EAAQA,IAC7BA,GAEvBp/f,EAAOs/f,EAASC,EAChBrs0B,EAAQ,GAIV,IAAIss0B,EAAQ,GACZ,IAAK9t2B,EAAI,EAAGA,EAAIwt2B,EAAMz+1B,OAAQ/O,IAC5B8t2B,EAAMr/1B,KAAKtO,KAAKm0F,IAAI9yD,EAAQ8sU,EAAOk/f,EAAMxt2B,KAE3C,OAAO8t2B,CACT,EAEA1u2B,EAAQ2u2B,QAAU,WAChB,IAAIv/0B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAIT,IAFA,IAAIhT,EAAIgT,EAAMzf,OACVgsI,EAAM,EACD/6I,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB+6I,GAAO,EAAIvsH,EAAMxuB,GAEnB,OAAOwb,EAAIu/H,CACb,EAEA37I,EAAQwllB,QAAU,CAAC,EAEnBxllB,EAAQwllB,QAAQzC,KAAO,SAASjhlB,EAAGsa,EAAGpd,EAAGs3B,EAAG210B,GAK1C,GAJAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBsa,EAAIm0F,EAAMK,YAAYx0F,GACtBpd,EAAIuxG,EAAMK,YAAY5xG,GACtBs3B,EAAIi6E,EAAMK,YAAYt6E,GAClBi6E,EAAMgB,WAAWzvG,EAAGsa,EAAGpd,EAAGs3B,GAC5B,OAAO9Q,EAAMtkB,MAGf,SAASiuW,EAAIrtW,EAAGsa,EAAGpd,EAAGs3B,GACpB,OAAOqsjB,EAAS3ue,OAAOh1G,EAAG8C,GAAK6glB,EAAS3ue,OAAO19E,EAAIt3B,EAAGod,EAAIta,GAAK6glB,EAAS3ue,OAAO19E,EAAGla,EACpF,CAUA,OAAO,EARP,SAAata,EAAGsa,EAAGpd,EAAGs3B,GAEpB,IADA,IAAI5nB,EAAS,EACJ9N,EAAI,EAAGA,GAAKkB,EAAGlB,IACtB8N,GAAUygW,EAAIvuW,EAAGwb,EAAGpd,EAAGs3B,GAEzB,OAAO5nB,CACT,CAEsB0/V,CAAItsW,EAAGsa,EAAGpd,EAAGs3B,GAAK64U,EAAIrtW,EAAGsa,EAAGpd,EAAGs3B,EACvD,EAEAt2B,EAAQ4u2B,UAAY,SAASV,EAASC,GAGpC,OAFAD,EAAU39vB,EAAM6E,iBAAiB84vB,GACjCC,EAAU59vB,EAAM6E,iBAAiB+4vB,GAC7B59vB,EAAMgB,WAAW28vB,EAASC,GACrB3o1B,EAAMtkB,MAEXgt2B,EAAQv+1B,SAAWw+1B,EAAQx+1B,OACtB6V,EAAMuvF,GAER/0G,EAAQyt2B,SAAS,EAAGS,EAASC,EACtC,EAEAnu2B,EAAQ6u2B,KAAO,WACb,IAAIz/0B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAKT,IAHA,IAAIk3U,EAAOtC,EAAMsC,KAAKl3U,GAClBhT,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACHrpW,EAAI,EAAGA,EAAIwb,EAAGxb,IACrBqpW,GAASlpW,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAGrC,OAASlqV,GAAKA,EAAI,KAAQA,EAAI,IAAMA,EAAI,IAAMA,EAAI,KADlD6tV,GAAgBlpW,KAAKC,IAAIgjW,EAAMkE,MAAM94U,GAAO,GAAO,IACc,GAAKhT,EAAI,IAAMA,EAAI,KAAOA,EAAI,IAAMA,EAAI,GAC3G,EAEApc,EAAQoyG,MAAQ,SAAShjF,EAAOpC,GAG9B,OAFAoC,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7CpC,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAWniF,EAAOpC,GACnBoC,EAEFA,EAAMzgB,KAAK,SAASwG,EAAGC,GAC5B,OAAOA,EAAID,CACb,GAAG6X,EAAI,EACT,EAEAhtB,EAAQ8u2B,OAAS,SAASpB,EAAQC,GAGhC,GAFAD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWm8vB,EAAQC,GAC3B,OAAOno1B,EAAMtkB,MAOf,IALA,IAAI2s2B,EAAQ7pgB,EAAMsC,KAAKongB,GACnBE,EAAQ5pgB,EAAMsC,KAAKqngB,GACnBvx1B,EAAIux1B,EAAOh+1B,OACX6pC,EAAM,EACNmiG,EAAM,EACD/6I,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB44C,IAAQm0zB,EAAO/s2B,GAAKgt2B,IAAUF,EAAO9s2B,GAAKit2B,GAC1ClytB,GAAO56I,KAAKC,IAAI2s2B,EAAO/s2B,GAAKgt2B,EAAO,GAErC,IAAIlv2B,EAAI86C,EAAMmiG,EAEd,MAAO,CAACj9I,EADAmv2B,EAAQnv2B,EAAIkv2B,EAEtB,EAMA5t2B,EAAQ+u2B,OAAS,SAASrB,EAAQC,GAGhC,GAFAD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWm8vB,EAAQC,GAC3B,OAAOno1B,EAAMtkB,MAEf,IAAK,IAAIN,EAAI,EAAGA,EAAI8s2B,EAAO/91B,OAAQ/O,IACjC8s2B,EAAO9s2B,GAAKG,KAAKS,IAAIks2B,EAAO9s2B,IAG9B,IAAI8N,EAAS1O,EAAQ8u2B,OAAOpB,EAAQC,GAGpC,OAFAj/1B,EAAO,GAAK3N,KAAK+F,MAA0B,IAApB/F,KAAKm0F,IAAIxmF,EAAO,KAAa,IACpDA,EAAO,GAAK3N,KAAK+F,MAA0B,IAApB/F,KAAKm0F,IAAIxmF,EAAO,KAAa,IAC7CA,CACT,EAEA1O,EAAQ0llB,QAAU,CAAC,EAEnB1llB,EAAQ0llB,QAAQ3C,KAAO,SAASjhlB,EAAGwkW,EAAM4R,EAAI+zf,GAI3C,OAHAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBwkW,EAAO/1P,EAAMK,YAAY01P,GACzB4R,EAAK3nQ,EAAMK,YAAYsnQ,GACnB3nQ,EAAMgB,WAAWzvG,EAAGwkW,EAAM4R,GACrB1yV,EAAMtkB,MAER,EAAe8iW,EAAMgM,UAAU5B,IAAItsW,EAAGwkW,EAAM4R,GAAMlU,EAAMgM,UAAUb,IAAIrtW,EAAGwkW,EAAM4R,EACxF,EAEAl4W,EAAQ0llB,QAAQzC,IAAM,SAASipR,EAAa5lgB,EAAM4R,GAIhD,OAHAg0f,EAAc37vB,EAAMK,YAAYs7vB,GAChC5lgB,EAAO/1P,EAAMK,YAAY01P,GACzB4R,EAAK3nQ,EAAMK,YAAYsnQ,GACnB3nQ,EAAMgB,WAAW26vB,EAAa5lgB,EAAM4R,GAC/B1yV,EAAMtkB,MAER8iW,EAAMgM,UAAUZ,IAAI88f,EAAa5lgB,EAAM4R,EAChD,EAEAl4W,EAAQ2xG,IAAM,WACZ,IAAIviF,EAAQmhF,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YACxC,OAAyB,IAAjB0f,EAAMzf,OAAgB,EAAI5O,KAAKmE,IAAImX,MAAMtb,KAAMquB,EACzD,EAEApvB,EAAQgv2B,KAAO,WACb,IAAI5/0B,EAAQmhF,EAAM0+vB,qBAAqB1+vB,EAAM8E,QAAQ3lG,YACrD,OAAyB,IAAjB0f,EAAMzf,OAAgB,EAAI5O,KAAKmE,IAAImX,MAAMtb,KAAMquB,EACzD,EAEApvB,EAAQiyG,OAAS,WACf,IAAI7iF,EAAQmhF,EAAM0+vB,qBAAqB1+vB,EAAM8E,QAAQ3lG,YACjDhB,EAASs1V,EAAM8C,OAAO13U,GAM1B,OAJI9tB,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQ4xG,IAAM,WACZ,IAAIxiF,EAAQmhF,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YACxC,OAAyB,IAAjB0f,EAAMzf,OAAgB,EAAI5O,KAAKkE,IAAIoX,MAAMtb,KAAMquB,EACzD,EAEApvB,EAAQkv2B,KAAO,WACb,IAAI9/0B,EAAQmhF,EAAM0+vB,qBAAqB1+vB,EAAM8E,QAAQ3lG,YACrD,OAAyB,IAAjB0f,EAAMzf,OAAgB,EAAI5O,KAAKkE,IAAIoX,MAAMtb,KAAMquB,EACzD,EAEApvB,EAAQkyG,KAAO,CAAC,EAEhBlyG,EAAQkyG,KAAK4ze,KAAO,WAElB,IAAI12jB,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAQT,IANA,IAII+/0B,EAJA/y1B,EAAIgT,EAAMzf,OACV4jC,EAAQ,CAAC,EACTmmM,EAAW,GACXx0O,EAAM,EAGDtE,EAAI,EAAGA,EAAIwb,EAAGxb,IAErB2yC,EADA47zB,EAAc//0B,EAAMxuB,IACC2yC,EAAM47zB,GAAe57zB,EAAM47zB,GAAe,EAAI,EAC/D57zB,EAAM47zB,GAAejq2B,IACvBA,EAAMquC,EAAM47zB,GACZz1nB,EAAW,IAETnmM,EAAM47zB,KAAiBjq2B,IACzBw0O,EAASA,EAAS/pO,QAAUw/1B,GAGhC,OAAOz1nB,CACT,EAEA15O,EAAQkyG,KAAKC,KAAO,WAClB,IAAI/iF,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,OAAI0f,aAAiBtM,MACZsM,EAEFpvB,EAAQkyG,KAAK4ze,KAAK12jB,GAAOzgB,KAAK,SAASwG,EAAGC,GAC/C,OAAOD,EAAIC,CACb,GAAG,EACL,EAEApV,EAAQimlB,SAAW,CAAC,EAEpBjmlB,EAAQimlB,SAASlD,KAAO,SAAS/1jB,EAAGsI,EAAG5Z,EAAGuw1B,GAIxC,OAHAj/0B,EAAIujF,EAAMK,YAAY5jF,GACtBsI,EAAIi7E,EAAMK,YAAYt7E,GACtB5Z,EAAI60F,EAAMK,YAAYl1F,GAClB60F,EAAMgB,WAAWvkF,EAAGsI,EAAG5Z,GAClB8J,EAAMtkB,MAER,EAAe8iW,EAAM6M,OAAOzC,IAAIphV,EAAGsI,EAAG5Z,GAAKsoV,EAAM6M,OAAO1B,IAAIniV,EAAGsI,EAAG5Z,EAC3E,EAEA1b,EAAQ+jlB,KAAO,CAAC,EAEhB/jlB,EAAQ+jlB,KAAKhB,KAAO,SAASjhlB,EAAGwkW,EAAM4R,EAAI+zf,GAIxC,OAHAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBwkW,EAAO/1P,EAAMK,YAAY01P,GACzB4R,EAAK3nQ,EAAMK,YAAYsnQ,GACnB3nQ,EAAMgB,WAAWzvG,EAAGwkW,EAAM4R,GACrB1yV,EAAMtkB,MAEXg3W,GAAM,EACD1yV,EAAMg0B,IAIR,EAAewqT,EAAMmK,OAAOC,IAAItsW,EAAGwkW,EAAM4R,GAAMlU,EAAMmK,OAAOgB,IAAIrtW,EAAGwkW,EAAM4R,EAClF,EAEAl4W,EAAQ+jlB,KAAKd,IAAM,SAASipR,EAAa5lgB,EAAM4R,GAI7C,OAHAg0f,EAAc37vB,EAAMK,YAAYs7vB,GAChC5lgB,EAAO/1P,EAAMK,YAAY01P,GACzB4R,EAAK3nQ,EAAMK,YAAYsnQ,GACnB3nQ,EAAMgB,WAAW26vB,EAAa5lgB,EAAM4R,GAC/B1yV,EAAMtkB,MAER8iW,EAAMmK,OAAOiB,IAAI88f,EAAa5lgB,EAAM4R,EAC7C,EAEAl4W,EAAQ+jlB,KAAK7tjB,EAAI,CAAC,EAElBl2B,EAAQ+jlB,KAAK7tjB,EAAE6sjB,KAAO,SAAS1lhB,EAAG4uyB,GAEhC,OADA5uyB,EAAIkzC,EAAMK,YAAYvzC,cACLv6C,MACR0C,EAAMtkB,MAER,EAAe8iW,EAAMmK,OAAOC,IAAI/wS,EAAG,EAAG,GAAK2mS,EAAMmK,OAAOgB,IAAI9xS,EAAG,EAAG,EAC3E,EAEAr9D,EAAQ+jlB,KAAK7tjB,EAAE+sjB,IAAM,SAASipR,GAE5B,OADAA,EAAc37vB,EAAMK,YAAYs7vB,cACLpp1B,MAClB0C,EAAMtkB,MAER8iW,EAAMmK,OAAOiB,IAAI88f,EAAa,EAAG,EAC1C,EAEAls2B,EAAQov2B,QAAU,SAASzB,EAAQD,GAGjC,GAFAA,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWm8vB,EAAQC,GAC3B,OAAOno1B,EAAMtkB,MAQf,IANA,IAAI0s2B,EAAQ5pgB,EAAMsC,KAAKqngB,GACnBE,EAAQ7pgB,EAAMsC,KAAKongB,GACnBtx1B,EAAIux1B,EAAOh+1B,OACX6pC,EAAM,EACN61zB,EAAO,EACPC,EAAO,EACF1u2B,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB44C,IAAQm0zB,EAAO/s2B,GAAKgt2B,IAAUF,EAAO9s2B,GAAKit2B,GAC1CwB,GAAQtu2B,KAAKC,IAAI2s2B,EAAO/s2B,GAAKgt2B,EAAO,GACpC0B,GAAQvu2B,KAAKC,IAAI0s2B,EAAO9s2B,GAAKit2B,EAAO,GAEtC,OAAOr0zB,EAAMz4C,KAAK0vB,KAAK4+0B,EAAOC,EAChC,EAEAtv2B,EAAQsyG,WAAa,CAAC,EAEtBtyG,EAAQsyG,WAAWG,IAAM,SAAS7iF,EAAO5C,GAGvC,GAFA4C,EAAQ2gF,EAAM6E,iBAAiB7E,EAAM8E,QAAQzlF,IAC7C5C,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAW3hF,EAAO5C,GAC1B,OAAOxH,EAAMtkB,MAOf,IAAIkb,GALJwT,EAAQA,EAAMjhB,KAAK,SAASwG,EAAGC,GAE3B,OAAOD,EAAIC,CAEf,IACczF,OACd,GAAIqd,EAAI,GAAK5Q,EAAI,IAAM4Q,EAAI,EAAI,GAAK5Q,EAAI,GACtC,OAAOoJ,EAAMg0B,IAEf,IAAIzlB,EAAI/G,GAAK5Q,EAAI,GAAK,EAClB6jL,EAAKl/L,KAAKQ,MAAMwyB,GACpB,OAAOw8E,EAAMg/vB,WAAYx70B,IAAMksK,EAAMrwK,EAAMmE,GAAKnE,EAAMqwK,IAAOlsK,EAAIksK,IAAOrwK,EAAMqwK,EAAK,GAAKrwK,EAAMqwK,IAChG,EAEAjgM,EAAQsyG,WAAWC,IAAM,SAAS3iF,EAAO5C,GAGvC,GAFA4C,EAAQ2gF,EAAM6E,iBAAiB7E,EAAM8E,QAAQzlF,IAC7C5C,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAW3hF,EAAO5C,GAC1B,OAAOxH,EAAMtkB,MAKf,IACI6yB,EAAI/G,IAJR4C,EAAQA,EAAMjhB,KAAK,SAASwG,EAAGC,GAC7B,OAAOD,EAAIC,CACb,IACczF,OACG,GACbswL,EAAKl/L,KAAKQ,MAAMwyB,GACpB,OAAOw8E,EAAMg/vB,WAAYx70B,IAAMksK,EAAMrwK,EAAMmE,GAAKnE,EAAMqwK,IAAOlsK,EAAIksK,IAAOrwK,EAAMqwK,EAAK,GAAKrwK,EAAMqwK,IAChG,EAEAjgM,EAAQ2mlB,YAAc,CAAC,EAEvB3mlB,EAAQ2mlB,YAAYl0e,IAAM,SAAS7iF,EAAO9tB,EAAG8xG,GAK3C,GAJAA,OAAiCvhG,IAAjBuhG,EAA8B,EAAIA,EAClDhkF,EAAQ2gF,EAAM6E,iBAAiB7E,EAAM8E,QAAQzlF,IAC7C9tB,EAAIyuG,EAAMK,YAAY9uG,GACtB8xG,EAAerD,EAAMK,YAAYgD,GAC7BrD,EAAMgB,WAAW3hF,EAAO9tB,EAAG8xG,GAC7B,OAAOpuF,EAAMtkB,MAEf0uB,EAAQA,EAAMjhB,KAAK,SAASwG,EAAGC,GAC7B,OAAOD,EAAIC,CACb,GAQA,IAPA,IAAIo61B,EAAU9D,EAAKyB,OAAO9w1B,MAAM,KAAMuT,GAClCxT,EAAIwT,EAAMjgB,OACVjR,EAAI8w2B,EAAQ7/1B,OACZknG,EAAQ91G,KAAKC,IAAI,GAAI4yG,GACrBllG,EAAS,EACTnP,GAAQ,EACRqB,EAAI,GACArB,GAASqB,EAAIlC,GACfoD,IAAM0t2B,EAAQ5u2B,IAChB8N,GAAUkhB,EAAM9rB,QAAQ0r2B,EAAQ5u2B,IAAM,IAAMwb,EAAI,GAChD7c,GAAQ,GACCuC,GAAK0t2B,EAAQ5u2B,KAAOkB,EAAI0t2B,EAAQ5u2B,EAAI,IAAMA,IAAMlC,EAAI,KAC7DgQ,GAAUkhB,EAAM9rB,QAAQ0r2B,EAAQ5u2B,IAAM,GAAKkB,EAAI0t2B,EAAQ5u2B,KAAO4u2B,EAAQ5u2B,EAAI,GAAK4u2B,EAAQ5u2B,MAAQwb,EAAI,GACnG7c,GAAQ,GAEVqB,IAEF,OAAOG,KAAKQ,MAAMmN,EAASmoG,GAASA,CACtC,EAEA72G,EAAQ2mlB,YAAYp0e,IAAM,SAAS3iF,EAAO9tB,EAAG8xG,GAK3C,GAJAA,OAAiCvhG,IAAjBuhG,EAA8B,EAAIA,EAClDhkF,EAAQ2gF,EAAM6E,iBAAiB7E,EAAM8E,QAAQzlF,IAC7C9tB,EAAIyuG,EAAMK,YAAY9uG,GACtB8xG,EAAerD,EAAMK,YAAYgD,GAC7BrD,EAAMgB,WAAW3hF,EAAO9tB,EAAG8xG,GAC7B,OAAOpuF,EAAMtkB,MAEf0uB,EAAQA,EAAMjhB,KAAK,SAASwG,EAAGC,GAC7B,OAAOD,EAAIC,CACb,GAQA,IAPA,IAAIo61B,EAAU9D,EAAKyB,OAAO9w1B,MAAM,KAAMuT,GAClCxT,EAAIwT,EAAMjgB,OACVjR,EAAI8w2B,EAAQ7/1B,OACZknG,EAAQ91G,KAAKC,IAAI,GAAI4yG,GACrBllG,EAAS,EACTnP,GAAQ,EACRqB,EAAI,GACArB,GAASqB,EAAIlC,GACfoD,IAAM0t2B,EAAQ5u2B,IAChB8N,EAASkhB,EAAM9rB,QAAQ0r2B,EAAQ5u2B,KAAOwb,EAAI,GAC1C7c,GAAQ,GACCuC,GAAK0t2B,EAAQ5u2B,KAAOkB,EAAI0t2B,EAAQ5u2B,EAAI,IAAMA,IAAMlC,EAAI,KAC7DgQ,GAAUkhB,EAAM9rB,QAAQ0r2B,EAAQ5u2B,KAAOkB,EAAI0t2B,EAAQ5u2B,KAAO4u2B,EAAQ5u2B,EAAI,GAAK4u2B,EAAQ5u2B,MAAQwb,EAAI,GAC/F7c,GAAQ,GAEVqB,IAEF,OAAOG,KAAKQ,MAAMmN,EAASmoG,GAASA,CACtC,EAEA72G,EAAQyv2B,OAAS,SAASjxzB,EAAQy1D,GAGhC,OAFAz1D,EAAS+xD,EAAMK,YAAYpyD,GAC3By1D,EAAgB1D,EAAMK,YAAYqD,GAC9B1D,EAAMgB,WAAW/yD,EAAQy1D,GACpBzuF,EAAMtkB,MAERyhlB,EAASzue,KAAK11D,GAAUmkiB,EAASzue,KAAK11D,EAASy1D,EACxD,EAEAj0G,EAAQ0v2B,aAAe,SAASlxzB,EAAQy1D,GAGtC,OAFAz1D,EAAS+xD,EAAMK,YAAYpyD,GAC3By1D,EAAgB1D,EAAMK,YAAYqD,GAC9B1D,EAAMgB,WAAW/yD,EAAQy1D,GACpBzuF,EAAMtkB,MAERH,KAAKC,IAAIw9C,EAAQy1D,EAC1B,EAEAj0G,EAAQ2v2B,IAAM,SAAS7t2B,GAErB,OADAA,EAAIyuG,EAAMK,YAAY9uG,cACLghB,MACR0C,EAAMtkB,MAERH,KAAKm0F,KAAK,GAAMpzF,EAAIA,GA9wCf,kBA+wCd,EAEA9B,EAAQ8mlB,QAAU,CAAC,EAEnB9mlB,EAAQ8mlB,QAAQ/D,KAAO,SAASjhlB,EAAGwkW,EAAM2lgB,GAGvC,OAFAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBwkW,EAAO/1P,EAAMK,YAAY01P,GACrB/1P,EAAMgB,WAAWzvG,EAAGwkW,GACf9gV,EAAMtkB,MAER,EAAe8iW,EAAMkN,QAAQ9C,IAAItsW,EAAGwkW,GAAQtC,EAAMkN,QAAQ/B,IAAIrtW,EAAGwkW,EAC1E,EAEAtmW,EAAQ4v2B,KAAO,SAASxg1B,EAAO880B,EAAa16sB,EAAOylW,GACjD,QAAc5kf,IAAVm/I,EACF,OAAO,EAQT,GANAylW,OAAmB5kf,IAAV4kf,EAAuBzlW,EAAQylW,EAExC7ne,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7C880B,EAAc37vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQ62vB,IACnD16sB,EAAQjhD,EAAMK,YAAY4gD,GAC1BylW,EAAQ1mZ,EAAMK,YAAYqmZ,GACtB1mZ,EAAMgB,WAAWniF,EAAO880B,EAAa16sB,EAAOylW,GAC9C,OAAOzxe,EAAMtkB,MAGf,GAAIswJ,IAAUylW,EACZ,OAAQ7ne,EAAMtrB,QAAQ0tJ,IAAU,EAAK06sB,EAAY980B,EAAMtrB,QAAQ0tJ,IAAU,EAQ3E,IALA,IAAIhqG,EAASp4B,EAAMzgB,KAAK,SAASwG,EAAGC,GAClC,OAAOD,EAAIC,CACb,GACIgH,EAAIorC,EAAO73C,OACXjB,EAAS,EACJ9N,EAAI,EAAGA,EAAIwb,EAAGxb,IACjB4mD,EAAO5mD,IAAM4wJ,GAAShqG,EAAO5mD,IAAMq2f,IACrCvof,GAAUw91B,EAAY980B,EAAMtrB,QAAQ0jD,EAAO5mD,MAG/C,OAAO8N,CACT,EAEA1O,EAAQwyG,SAAW,CAAC,EAEpBxyG,EAAQwyG,SAASC,IAAM,SAASrjF,EAAOyg1B,GAGrC,GAFAzg1B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7Cyg1B,EAAQt/vB,EAAMK,YAAYi/vB,GACtBt/vB,EAAMgB,WAAWniF,EAAOyg1B,GAC1B,OAAOrq1B,EAAMtkB,MAEf,OAAQ2u2B,GACN,KAAK,EACH,OAAO7v2B,EAAQsyG,WAAWG,IAAIrjF,EAAO,KACvC,KAAK,EACH,OAAOpvB,EAAQsyG,WAAWG,IAAIrjF,EAAO,IACvC,KAAK,EACH,OAAOpvB,EAAQsyG,WAAWG,IAAIrjF,EAAO,KACvC,QACE,OAAO5J,EAAMg0B,IAEnB,EAEAx5C,EAAQwyG,SAASD,IAAM,SAASnjF,EAAOyg1B,GAGrC,GAFAzg1B,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7Cyg1B,EAAQt/vB,EAAMK,YAAYi/vB,GACtBt/vB,EAAMgB,WAAWniF,EAAOyg1B,GAC1B,OAAOrq1B,EAAMtkB,MAEf,OAAQ2u2B,GACN,KAAK,EACH,OAAO7v2B,EAAQsyG,WAAWC,IAAInjF,EAAO,KACvC,KAAK,EACH,OAAOpvB,EAAQsyG,WAAWC,IAAInjF,EAAO,IACvC,KAAK,EACH,OAAOpvB,EAAQsyG,WAAWC,IAAInjF,EAAO,KACvC,QACE,OAAO5J,EAAMg0B,IAEnB,EAEAx5C,EAAQknlB,KAAO,CAAC,EAEhBlnlB,EAAQknlB,KAAKE,IAAM,SAAS5oiB,EAAQpvB,EAAOhhB,GAGzC,GAFAowC,EAAS+xD,EAAMK,YAAYpyD,GAC3BpvB,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IACzCmhF,EAAMgB,WAAW/yD,EAAQpvB,GAC3B,OAAO5J,EAAMtkB,MAaf,IATA,IAAIyN,GADJP,EAAQA,IAAS,GACI,SAAS+G,EAAGC,GAC/B,OAAOD,EAAIC,CACb,EAAI,SAASD,EAAGC,GACd,OAAOA,EAAID,CACb,EAGIxF,GAFJyf,GAPAA,EAAQmhF,EAAM8E,QAAQjmF,IAORzgB,KAAKA,IAEAgB,OACf4jC,EAAQ,EACH3yC,EAAI,EAAGA,EAAI+O,EAAQ/O,IACtBwuB,EAAMxuB,KAAO49C,GACfjL,IAIJ,OAAQA,EAAQ,GAAM,EAAInkB,EAAMtrB,QAAQ06C,GAAUjL,EAAQ,GAAK,EAAInkB,EAAMtrB,QAAQ06C,GAAU,CAC7F,EAEAx+C,EAAQknlB,KAAKpue,GAAK,SAASt6D,EAAQpvB,EAAOhhB,GAGxC,GAFAowC,EAAS+xD,EAAMK,YAAYpyD,GAC3BpvB,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IACzCmhF,EAAMgB,WAAW/yD,EAAQpvB,GAC3B,OAAO5J,EAAMtkB,MAGf,IAAIyN,GADJP,EAAQA,IAAS,GACI,SAAS+G,EAAGC,GAC/B,OAAOD,EAAIC,CACb,EAAI,SAASD,EAAGC,GACd,OAAOA,EAAID,CACb,EAEA,OADAia,EAAQA,EAAMzgB,KAAKA,IACN7K,QAAQ06C,GAAU,CACjC,EAEAx+C,EAAQ8v2B,IAAM,SAASl8X,EAAQ7he,GAC7B,OAAyB,IAArBrC,UAAUC,OACL6V,EAAMuvF,GAGXhjG,EAAQ,EACHyT,EAAMg0B,IAGTo6b,aAAkB/je,OAA4B,iBAAVkC,EAIpB,IAAlB6he,EAAOjke,OAIJq0V,EAAMx8Q,IAAIosZ,EAAQ7he,QAJzB,EAHSyT,EAAMtkB,KAQjB,EAEAlB,EAAQ+v2B,KAAO,SAASn8X,GACtB,OAAyB,IAArBlke,UAAUC,OACL6V,EAAMuvF,GAGT6+X,aAAkB/je,MAIF,IAAlB+je,EAAOjke,OACF,EAGFq0V,EAAMnxL,KAAK+gU,GAPTpud,EAAMtkB,KAQjB,EAEAlB,EAAQgw2B,IAAM,SAASrC,EAAQD,GAG7B,OAFAC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC9CD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC1Cn9vB,EAAMgB,WAAWo8vB,EAAQD,GACpBlo1B,EAAMtkB,MAERH,KAAKC,IAAIhB,EAAQov2B,QAAQzB,EAAQD,GAAS,EACnD,EAEA1t2B,EAAQunlB,KAAO,WACb,IAAIn4jB,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAKT,IAHA,IAAIk3U,EAAOtC,EAAMsC,KAAKl3U,GAClBhT,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACHrpW,EAAI,EAAGA,EAAIwb,EAAGxb,IACrBqpW,GAASlpW,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAErC,OAAOlqV,EAAI6tV,IAAU7tV,EAAI,IAAMA,EAAI,GAAKrb,KAAKC,IAAIgjW,EAAMkE,MAAM94U,GAAO,GAAO,GAC7E,EAEApvB,EAAQunlB,KAAK9qkB,EAAI,WACf,IAAI2S,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQ3lG,YACjD,GAAI0f,aAAiBtM,MACnB,OAAOsM,EAMT,IAJA,IAAIk3U,EAAOtC,EAAMsC,KAAKl3U,GAClBhT,EAAIgT,EAAMzf,OACVytI,EAAK,EACL6ytB,EAAK,EACArv2B,EAAI,EAAGA,EAAIwb,EAAGxb,IACrBqv2B,GAAMlv2B,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAChClpN,GAAMr8I,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAIlC,OADAlpN,GAAUhhI,GADV6z1B,GAAU7z1B,GAEErb,KAAKC,IAAIo8I,EAAI,IAC3B,EAEAp9I,EAAQkw2B,MAAQ,SAASxC,EAAQC,GAG/B,GAFAD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWm8vB,EAAQC,GAC3B,OAAOno1B,EAAMtkB,MAOf,IALA,IAAI0s2B,EAAQ5pgB,EAAMsC,KAAKqngB,GACnBE,EAAQ7pgB,EAAMsC,KAAKongB,GACnBtx1B,EAAIux1B,EAAOh+1B,OACX6pC,EAAM,EACNmiG,EAAM,EACD/6I,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB44C,IAAQm0zB,EAAO/s2B,GAAKgt2B,IAAUF,EAAO9s2B,GAAKit2B,GAC1ClytB,GAAO56I,KAAKC,IAAI2s2B,EAAO/s2B,GAAKgt2B,EAAO,GAErC,OAAOp0zB,EAAMmiG,CACf,EAEA37I,EAAQqyG,MAAQ,SAASjjF,EAAOpC,GAG9B,OAFAoC,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7CpC,EAAIujF,EAAMK,YAAY5jF,GAClBujF,EAAMgB,WAAWniF,EAAOpC,GACnBoC,EAEFA,EAAMzgB,KAAK,SAASwG,EAAGC,GAC5B,OAAOD,EAAIC,CACb,GAAG4X,EAAI,EACT,EAEAhtB,EAAQmw2B,YAAc,SAASru2B,EAAGwkW,EAAM4R,GAItC,OAHAp2W,EAAIyuG,EAAMK,YAAY9uG,GACtBwkW,EAAO/1P,EAAMK,YAAY01P,GACzB4R,EAAK3nQ,EAAMK,YAAYsnQ,GACnB3nQ,EAAMgB,WAAWzvG,EAAGwkW,EAAM4R,GACrB1yV,EAAMtkB,OAEPY,EAAIwkW,GAAQ4R,CACtB,EAEAl4W,EAAQ8xG,MAAQ,CAAC,EAEjB9xG,EAAQ8xG,MAAMr1F,EAAI,WAChB,IAAIiB,EAAI1d,EAAQgyG,IAAIv1F,EAAEJ,MAAMd,KAAM7L,WAC9BhB,EAAS3N,KAAK0vB,KAAK/S,GAMvB,OAJIpc,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQ8xG,MAAM57E,EAAI,WAChB,IAAIxY,EAAI1d,EAAQgyG,IAAI97E,EAAE7Z,MAAMd,KAAM7L,WAGlC,OAFa3O,KAAK0vB,KAAK/S,EAGzB,EAEA1d,EAAQow2B,OAAS,WACf,IAAI1y1B,EAAI1d,EAAQqw2B,KAAKh01B,MAAMd,KAAM7L,WAGjC,OAFa3O,KAAK0vB,KAAK/S,EAGzB,EAEA1d,EAAQsw2B,QAAU,WAChB,IAAI5y1B,EAAI1d,EAAQuw2B,MAAMl01B,MAAMd,KAAM7L,WAC9BhB,EAAS3N,KAAK0vB,KAAK/S,GAMvB,OAJIpc,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAGA1O,EAAQww2B,MAAQ,SAAS9C,EAAQC,GAG/B,GAFAD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC1Cp9vB,EAAMgB,WAAWm8vB,EAAQC,GAC3B,OAAOno1B,EAAMtkB,MAQf,IANA,IAAI0s2B,EAAQ5pgB,EAAMsC,KAAKqngB,GACnBE,EAAQ7pgB,EAAMsC,KAAKongB,GACnBtx1B,EAAIux1B,EAAOh+1B,OACX8g2B,EAAM,EACNj3zB,EAAM,EACNmiG,EAAM,EACD/6I,EAAI,EAAGA,EAAIwb,EAAGxb,IACrB6v2B,GAAO1v2B,KAAKC,IAAI0s2B,EAAO9s2B,GAAKit2B,EAAO,GACnCr0zB,IAAQm0zB,EAAO/s2B,GAAKgt2B,IAAUF,EAAO9s2B,GAAKit2B,GAC1ClytB,GAAO56I,KAAKC,IAAI2s2B,EAAO/s2B,GAAKgt2B,EAAO,GAErC,OAAO7s2B,KAAK0vB,MAAMgg1B,EAAMj3zB,EAAMA,EAAMmiG,IAAQv/H,EAAI,GAClD,EAEApc,EAAQ0w2B,UAAY,SAAS98X,GAC3B,OAAKA,EAGE5vI,EAAMnqG,UAAU+5O,GAFdpud,EAAMuvF,EAGjB,EAEA/0G,EAAQi2B,EAAIoV,EAAKpV,EAEjBj2B,EAAQi2B,EAAE8sjB,KAAO,SAASjhlB,EAAGmwW,EAAIg6f,GAG/B,OAFAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBmwW,EAAK1hQ,EAAMK,YAAYqhQ,GACnB1hQ,EAAMgB,WAAWzvG,EAAGmwW,GACfzsV,EAAMtkB,MAER,EAAe8iW,EAAMmM,SAAS/B,IAAItsW,EAAGmwW,GAAMjO,EAAMmM,SAAShB,IAAIrtW,EAAGmwW,EAC1E,EAEAjyW,EAAQi2B,EAAE8sjB,KAAK,MAAQ,SAASjhlB,EAAGmwW,GACjC,OAAyB,IAArBviW,UAAUC,OACL6V,EAAMuvF,GAGXjzG,EAAI,GAAKmwW,EAAK,EACTzsV,EAAMg0B,IAGG,iBAAN13C,GAAkC,iBAAPmwW,EAC9BzsV,EAAMtkB,MAG2B,GAAlC,EAAI8iW,EAAMmM,SAAS/B,IAAItsW,EAAImwW,GACrC,EAEAjyW,EAAQi2B,EAAE8sjB,KAAKlqb,GAAK,SAAS/2J,EAAGmwW,GAC9B,OAAyB,IAArBviW,UAAUC,OACL6V,EAAMuvF,GAGXjzG,EAAI,GAAKmwW,EAAK,EACTzsV,EAAMg0B,IAGG,iBAAN13C,GAAkC,iBAAPmwW,EAC9BzsV,EAAMtkB,MAGR,EAAI8iW,EAAMmM,SAAS/B,IAAItsW,EAAImwW,EACpC,EAEAjyW,EAAQi2B,EAAEgtjB,IAAM,SAASipR,EAAaj6f,GAGpC,OAFAi6f,EAAc37vB,EAAMK,YAAYs7vB,GAChCj6f,EAAK1hQ,EAAMK,YAAYqhQ,GACnB1hQ,EAAMgB,WAAW26vB,EAAaj6f,GACzBzsV,EAAMtkB,MAER8iW,EAAMmM,SAASf,IAAI88f,EAAaj6f,EACzC,EAEAjyW,EAAQi2B,EAAEgtjB,IAAI,MAAQ,SAASipR,EAAaj6f,GAG1C,OAFAi6f,EAAc37vB,EAAMK,YAAYs7vB,GAChCj6f,EAAK1hQ,EAAMK,YAAYqhQ,GACnBi6f,GAAe,GAAKA,EAAc,GAAKj6f,EAAK,EACvCzsV,EAAMg0B,IAEX+2D,EAAMgB,WAAW26vB,EAAaj6f,GACzBzsV,EAAMtkB,MAERH,KAAKM,IAAI2iW,EAAMmM,SAASf,IAAI88f,EAAY,EAAGj6f,GACpD,EAIAjyW,EAAQi2B,EAAE4tjB,KAAO,SAAS8pR,EAAQD,GAGhC,GAFAC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC9CD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC1Cn9vB,EAAMgB,WAAWo8vB,EAAQD,GAC3B,OAAOlo1B,EAAMtkB,MAGf,IAIIN,EAJA+v2B,EAAS3sgB,EAAMsC,KAAKqngB,GACpBiD,EAAS5sgB,EAAMsC,KAAKongB,GACpBmD,EAAM,EACNC,EAAM,EAGV,IAAKlw2B,EAAI,EAAGA,EAAI+s2B,EAAOh+1B,OAAQ/O,IAC7Biw2B,GAAO9v2B,KAAKC,IAAI2s2B,EAAO/s2B,GAAK+v2B,EAAQ,GAEtC,IAAK/v2B,EAAI,EAAGA,EAAI8s2B,EAAO/91B,OAAQ/O,IAC7Bkw2B,GAAO/v2B,KAAKC,IAAI0s2B,EAAO9s2B,GAAKgw2B,EAAQ,GAGtCC,GAAalD,EAAOh+1B,OAAO,EAC3Bmh2B,GAAapD,EAAO/91B,OAAO,EAE3B,IAAIwM,EAAIpb,KAAKM,IAAIsv2B,EAASC,GAAU7v2B,KAAK0vB,KAAKog1B,EAAIlD,EAAOh+1B,OAASmh2B,EAAIpD,EAAO/91B,QAE7E,OAAO3P,EAAQi2B,EAAE8sjB,KAAK,MAAM5mkB,EAAGwx1B,EAAOh+1B,OAAO+91B,EAAO/91B,OAAO,EAC7D,EAEA3P,EAAQ+w2B,MAAQ,SAASrD,EAAQC,EAAQqD,GAIvC,GAHAtD,EAASn9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQq4vB,IAC9CC,EAASp9vB,EAAM6E,iBAAiB7E,EAAM8E,QAAQs4vB,IAC9CqD,EAAazgwB,EAAM6E,iBAAiB7E,EAAM8E,QAAQ27vB,IAC9CzgwB,EAAMgB,WAAWm8vB,EAAQC,EAAQqD,GACnC,OAAOxr1B,EAAMtkB,MAEf,IAAI+v2B,EAASjx2B,EAAQ8u2B,OAAOpB,EAAQC,GAChCjv2B,EAAIuy2B,EAAO,GACX771B,EAAI671B,EAAO,GACXvi2B,EAAS,GAMb,OAJAsi2B,EAAWzj2B,QAAQ,SAASzL,GAC1B4M,EAAOW,KAAK3Q,EAAIoD,EAAIsT,EACtB,GAEO1G,CACT,EAEA1O,EAAQkx2B,SAAW,SAAS9h1B,EAAO6hC,GAGjC,GAFA7hC,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7C6hC,EAAUs/C,EAAMK,YAAY3/C,GACxBs/C,EAAMgB,WAAWniF,EAAO6hC,GAC1B,OAAOzrC,EAAMtkB,MAEf,IAAIqY,EAAOopkB,EAASzte,MAAM9lF,EAAMzf,OAASshD,EAAS,GAAK,EACvD,OAAO+yS,EAAMsC,KAAK/1P,EAAMvzD,QAAQuzD,EAAMxlF,KAAKqE,EAAMzgB,KAAK,SAASwG,EAAGC,GAChE,OAAOD,EAAIC,CACb,GAAImE,GAAOA,GACb,EAEAvZ,EAAQgyG,IAAM,CAAC,EAEfhyG,EAAQgyG,IAAIv1F,EAAI,WAMd,IALA,IAII/N,EAJA0gB,EAAQmhF,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YACpC0M,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACR3D,EAAOtmW,EAAQwxG,QAAQpiF,GAElBxuB,EAAI,EAAGA,EAAIwb,EAAGxb,IACrBqpW,GAASlpW,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAQrC,OANA53V,EAASu7V,EAAQ7tV,EAEb9a,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQgyG,IAAI97E,EAAI,WAKd,IAJA,IAAI9G,EAAQmhF,EAAMrwD,QAAQqwD,EAAM8E,QAAQ3lG,YACpC0M,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACR3D,EAAOtmW,EAAQwxG,QAAQpiF,GAClBxuB,EAAI,EAAGA,EAAIwb,EAAGxb,IACrBqpW,GAASlpW,KAAKC,IAAIouB,EAAMxuB,GAAK0lW,EAAM,GAErC,OAAO2D,GAAS7tV,EAAI,EACtB,EAEApc,EAAQqw2B,KAAO,WAMb,IALA,IAAIjh1B,EAAQmhF,EAAM8E,QAAQ3lG,WACtB0M,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACR12T,EAAQ,EACR+yT,EAAOtmW,EAAQ4r2B,SAASx80B,GACnBxuB,EAAI,EAAGA,EAAIwb,EAAGxb,IAAK,CAC1B,IAAIk4C,EAAK1pB,EAAMxuB,GAEbqpW,GADgB,iBAAPnxT,EACA/3C,KAAKC,IAAI83C,EAAKwtT,EAAM,IACb,IAAPxtT,EACA/3C,KAAKC,IAAI,EAAIslW,EAAM,GAEnBvlW,KAAKC,IAAI,EAAIslW,EAAM,GAGnB,OAAPxtT,GACFvF,GAEJ,CACA,OAAO02T,GAAS12T,EAAQ,EAC1B,EAEAvzC,EAAQuw2B,MAAQ,WAOd,IANA,IAKI7h2B,EALA0gB,EAAQmhF,EAAM8E,QAAQ3lG,WACtB0M,EAAIgT,EAAMzf,OACVs6V,EAAQ,EACR12T,EAAQ,EACR+yT,EAAOtmW,EAAQ4r2B,SAASx80B,GAEnBxuB,EAAI,EAAGA,EAAIwb,EAAGxb,IAAK,CAC1B,IAAIk4C,EAAK1pB,EAAMxuB,GAEbqpW,GADgB,iBAAPnxT,EACA/3C,KAAKC,IAAI83C,EAAKwtT,EAAM,IACb,IAAPxtT,EACA/3C,KAAKC,IAAI,EAAIslW,EAAM,GAEnBvlW,KAAKC,IAAI,EAAIslW,EAAM,GAGnB,OAAPxtT,GACFvF,GAEJ,CAOA,OANA7kC,EAASu7V,EAAQ12T,EAEbjyC,MAAMoN,KACRA,EAAS8W,EAAMg0B,KAGV9qC,CACT,EAEA1O,EAAQgolB,QAAU,CAAC,EAEnBholB,EAAQgolB,QAAQjF,KAAO,SAASjhlB,EAAGsgC,EAAO8sU,EAAM+8f,GAI9C,OAHAnq2B,EAAIyuG,EAAMK,YAAY9uG,GACtBsgC,EAAQmuE,EAAMK,YAAYxuE,GAC1B8sU,EAAO3+P,EAAMK,YAAYs+P,GACrB3+P,EAAMgB,WAAWzvG,EAAGsgC,EAAO8sU,GACtB1pV,EAAMtkB,MAER,EAAe,EAAIH,KAAKm0F,KAAKn0F,KAAKC,IAAIc,EAAIotW,EAAM9sU,IAAUrhC,KAAKC,IAAIc,EAAGsgC,EAAQ,GAAKrhC,KAAKm0F,KAAKn0F,KAAKC,IAAIc,EAAIotW,EAAM9sU,IAAUA,EAAQrhC,KAAKC,IAAIkuW,EAAM9sU,EAC1J,EAEApiC,EAAQ21B,EAAI,CAAC,EAEb31B,EAAQ21B,EAAEkujB,KAAO,SAASz0jB,EAAOttB,EAAGo2W,GAGlC,GAFA9oV,EAAQmhF,EAAM6E,iBAAiB7E,EAAM8E,QAAQjmF,IAC7CttB,EAAIyuG,EAAMK,YAAY9uG,GAClByuG,EAAMgB,WAAWniF,EAAOttB,GAC1B,OAAO0jB,EAAMtkB,MAGfg3W,EAAKA,GAAMl4W,EAAQ8xG,MAAM57E,EAAE9G,GAC3B,IAAIhT,EAAIgT,EAAMzf,OACd,OAAO,EAAI3P,EAAQ+jlB,KAAK7tjB,EAAE6sjB,MAAM/ilB,EAAQwxG,QAAQpiF,GAASttB,IAAMo2W,EAAKn3W,KAAK0vB,KAAKrU,KAAK,EACrF,C,yBC3yDQ,SAAWhgB,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IC,MAClJ,KAEJC,YAAa,iDAAiDD,MAAM,KACpEE,SAAU,+CAA+CF,MAAM,KAC/DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,kBACHC,GAAI,aACJC,EAAG,eACHC,GAAI,YACJC,EAAG,aACHC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAvDyCC,CAAQ,EAAQ,O,sHCS1D,QAJA,SAAyBoB,GACvB,OAAO,EAAA+kO,EAAA,GAAc/kO,QAASmR,EAAYnR,CAC5C,E,0BC2CA,SAtBW,OAAS,SAAS2lD,EAAQs2T,GACnC,IAAIzuW,EAAS,CAAC,EACd,GAAc,MAAVm4C,EACF,OAAOn4C,EAET,IAAI4tG,GAAS,EACb6gQ,GAAQ,OAASA,EAAO,SAAS/4R,GAG/B,OAFAA,GAAO,OAASA,EAAMv9B,GACtBy1D,IAAWA,EAASl4B,EAAKz0E,OAAS,GAC3By0E,CACT,IACA,OAAWv9B,GAAQ,OAAaA,GAASn4C,GACrC4tG,IACF5tG,GAAS,OAAUA,EAAQioY,EAAwD,IAGrF,IADA,IAAIhnY,EAASwtW,EAAMxtW,OACZA,MACL,OAAUjB,EAAQyuW,EAAMxtW,IAE1B,OAAOjB,CACT,E,gDCtDA,IAAI2wN,EAAUr4G,SAASrrG,UAAUs7C,KAAKr7C,KAAKorG,SAASrrG,UAAUC,KAAM,GAAGvF,OACxD,SAAS861B,EAAItv2B,EAASqhI,GACnC,OAAOm8F,EAAQx9N,EAAQg5Q,iBAAiB33I,GAC1C,C,sECHC,IAAepjI,gBAQR,SAAS2xI,SA+2GjB,OAt1GAA,QAAQx0C,OAAO,QAAS,IAMxB,WACE,aACA,IAAIm0wB,EAEAC,EAAkB,SAClB13kB,EAAQrM,EAAUC,EAAQiB,EAAQF,EAAcgjlB,EAAmBtwlB,EAAOuwlB,EAAWp1oB,GAEvFi1oB,EAAkBE,EAClB,IAAI5irB,EAAKnzK,KACLi21B,EAAkBljlB,EAAaqC,cAC/B8glB,EAAgBnjlB,EAAasC,YAEjCliG,EAAGg5J,WACHh5J,EAAGgjrB,UACHhjrB,EAAGihP,eASHjhP,EAAGijrB,UAAY,SAASpzC,EAAW1wyB,GACjC,GAAI6gK,EAAGpgL,IAAK,CACVogL,EAAGpgL,IAAIiwzB,GAAa7voB,EAAGpgL,IAAIiwzB,IAAc,CAAC,EAC1C,IAAIvzzB,EAAM3F,OAAOO,KAAK8oL,EAAGpgL,IAAIiwzB,IAAY5uzB,OACzC++K,EAAGpgL,IAAIiwzB,GAAW1wyB,EAAIvU,IAAMtO,GAAO6iB,EAE/B6gK,EAAGpgL,eAAewmoB,OAAO11gB,KAAK7wH,MAEf,eAAbgwzB,GAA8B1wyB,EAAIi3T,QACpCj3T,EAAIi3T,QAAUj3T,EAAIi3T,OAAOp2J,EAAGpgL,KAE1Buf,EAAI+j1B,UAAY/j1B,EAAIxpB,UACtBqqL,EAAGpgL,IAAIk2U,UAAU32T,EAAIxpB,UAET,WAAbk6zB,GAA2B7voB,EAAGmjrB,cAAc,WAC/B,iBAAbtzC,GAAiC7voB,EAAGmjrB,cAAc,iBAEvD,CACF,EASAnjrB,EAAGojrB,aAAe,SAASvzC,EAAW1wyB,GAEpC,GAAIA,EAAIvf,IAAK,CACX,IAAIyjQ,EAAOlkP,EAAIvf,IAAIiwzB,GACnB,IAAK,IAAIzvzB,KAAQijQ,EACXA,EAAKjjQ,KAAU+e,IAEjBinnB,OAAO11gB,KAAK13G,MAAMwnU,uBAAuBrhU,UAClCkkP,EAAKjjQ,IAKhB+e,EAAIvf,KAAOuf,EAAIi3T,QAAUj3T,EAAIi3T,OAAO,MAEtB,WAAby5e,GAA2B7voB,EAAGmjrB,cAAc,WAC/B,iBAAbtzC,GAAiC7voB,EAAGmjrB,cAAc,gBACrD,CACF,EAWAnjrB,EAAGqjrB,kBAAoB,SAASC,EAAU1tuB,EAAOz2G,GAC/C,GAAIy2G,EAAM2tuB,UACR,OAAO,EAGT,IADA,IAAIC,EAAiBd,EAAgBe,kBAAkBH,GAC9Cpx2B,EAAE,EAAGA,EAAEsx2B,EAAevi2B,OAAQ/O,IAAK,CAC1C,IAAIgpI,EAAWsouB,EAAetx2B,GAC9B0jI,EAAMyF,SAASH,EAAUo3I,EAAMoxlB,cAAcxouB,EAAU/7G,GACzD,CACF,EAMA6gK,EAAG2jrB,qBAAuB,WAGxB,GAAuB,MAAlB3jrB,EAAGpgL,IAAIigd,SAAmBlpd,OAAOO,KAAK8oL,EAAGpgL,IAAIigd,SAAS5+c,OAAS,GAA+B,MAAxB++K,EAAGpgL,IAAIgk2B,eAAyBjt2B,OAAOO,KAAK8oL,EAAGpgL,IAAIgk2B,eAAe3i2B,OAAS,EAAI,CACxJ,IAAI2rC,EAAS,IAAIw5lB,OAAO11gB,KAAKspsB,aAC7B,IAAK,IAAIjzd,KAAM/mL,EAAGpgL,IAAIigd,QACpBjza,EAAOijE,OAAOmwE,EAAGpgL,IAAIigd,QAAQ94G,GAAI48D,eAEnC,IAAK,IAAI38D,KAAMhnL,EAAGpgL,IAAIgk2B,cACpBh3zB,EAAOijE,OAAOmwE,EAAGpgL,IAAIgk2B,cAAc58f,GAAI28D,eAEtC3jP,EAAGg5J,WAAW6qhB,cACjB7jrB,EAAG8jrB,wBAAyB,GAE5B9jrB,EAAGpgL,IAAIq4vB,UAAUrrtB,EACnB,CACF,EAOAozI,EAAGmjrB,cAAgB,SAASvs1B,IACrBopK,EAAGpgL,KACI,WAATgX,GAA+B,iBAATA,GACQ,QAA/BopK,EAAGpgL,IAAI+j2B,sBAEP3jrB,EAAG2jrB,sBAEP,EAUA3jrB,EAAG+jrB,cAAgB,WACjB,IAAI/qhB,EAAah5J,EAAGg5J,WAChBgqhB,EAAYhjrB,EAAGgjrB,UAEfgB,EAAchkrB,EAAGpgL,IAKrB,GAJAogL,EAAGpgL,IAAMij2B,EAAUoB,eAAerllB,EAAS,IAC3CtM,EAAM7/L,SAASmsM,EAAS,IAGpBollB,EAAa,CAMf,IAAIrxgB,EAAW+vgB,EAAgB5k2B,OAAO+gR,GAClCpiR,EAAUim2B,EAAgB7wiB,WAAW8gC,GACrC8rI,EAAiBikY,EAAgBwB,kBAAkBvxgB,GAIvD,IAAK,IAAI/7U,KAHToiU,EAAaj2M,QAAQlzB,OAAOpzG,EAASgie,GAGnBulY,EAAa,CAC7B,IAAIG,EAAeH,EAAYpt1B,GAC/B,GAA2B,iBAAhBut1B,EACT,IAAK,IAAIv51B,KAAMu51B,EACbnkrB,EAAGijrB,UAAUrs1B,EAAOut1B,EAAav51B,GAGvC,CACAo1K,EAAGpgL,IAAIwk2B,eAAiBpkrB,EAAGokrB,eAC3BpkrB,EAAGpgL,IAAIyk2B,eAAiBrkrB,EAAGqkrB,cAC7B,CAGArrhB,EAAW53J,KAAO43J,EAAW53J,MAAQ,GACrC,IAAIp3K,EAASgvU,EAAWhvU,OACpBs61B,EAAa,IAAI3l0B,OAAO8uL,EAAaq1oB,GAAmB,KAAOr1oB,EAAas1oB,IAEhF,IAAK/phB,EAAWhvU,QACM,iBAAXA,GAAwBA,EAAOnZ,MAAMyz2B,GAE9CtrhB,EAAWhvU,OAAS,IAAIo8nB,OAAO11gB,KAAK4lG,OAAO,EAAG,QACzC,GAAuB,iBAAXtsN,GAAwBA,EAAOnZ,MAAM,uBAAwB,CAC9E,IAAI29I,EAAMhxH,WAAWxT,EAAOjc,MAAM,KAAK,IACnCqoO,EAAM54M,WAAWxT,EAAOjc,MAAM,KAAK,IACvCirV,EAAWhvU,OAAS,IAAIo8nB,OAAO11gB,KAAK4lG,OAAO9nF,EAAK4nF,EAClD,MAAO,KAAMpsN,aAAkBo8nB,OAAO11gB,KAAK4lG,QAAS,CAClD,IAAIiuoB,EAAYvrhB,EAAWhvU,cACpBgvU,EAAWhvU,OAClBsoQ,EAAMkylB,eAAeD,EAAWvrhB,EAAWyrhB,oBACzC/g2B,KAAK,SAAUo0vB,GACb93kB,EAAGpgL,IAAIk2U,UAAUgib,GACjB,IAAI4sG,EAAc1rhB,EAAW0rhB,YAC7BA,GAAe5klB,EAAO4klB,EAAP5klB,CAAoBmL,EACrC,EAAG,WACG+tD,EAAW2rhB,mBACb3krB,EAAGpgL,IAAIk2U,UAAUkD,EAAW2rhB,kBAEhC,EACJ,CAIA,IAAK,IAAI/iwB,KAHTo+E,EAAGpgL,IAAIuC,WAAW62U,GAGIgqhB,EAAW,CAC/B,IAAIhq1B,EAAQgq1B,EAAUphwB,GAClBlhE,EAAW0lmB,OAAO11gB,KAAK13G,MAAMo6C,YAAY4sH,EAAGpgL,IAAKgiG,EAAW5oF,GAChEgnK,EAAGihP,eAAer/T,GAAalhE,CACjC,CAGAs/I,EAAGqjrB,kBAAkBC,EAAUzklB,EAAQ7+F,EAAGpgL,KAC1CogL,EAAG4krB,iBAAmB5rhB,EAAW4rhB,iBAEjCx+N,OAAO11gB,KAAK13G,MAAMg5C,QAAQguH,EAAGpgL,IAAK,UAElCwmoB,OAAO11gB,KAAK13G,MAAMqtnB,gBAAgBrmd,EAAGpgL,IAAK,OAAQ,WAChD0yQ,EAAMuylB,OAAO7krB,GACTg5J,EAAW2qhB,sBACb3jrB,EAAG2jrB,uBAGL14kB,EAAOrrR,IAAMogL,EAAGpgL,IAChBqrR,EAAOmjB,MAAM,iBAAkBpuH,EAAGpgL,KAG9Bi/Q,EAAOimlB,gBACThllB,EAAOjB,EAAOimlB,eAAdhllB,CAA8BmL,EAAQ,CAACrrR,IAAKogL,EAAGpgL,KAEnD,GAGCo5U,EAAW2qhB,sBAAwB3qhB,EAAW6qhB,aAChDz9N,OAAO11gB,KAAK13G,MAAMo6C,YAAY4sH,EAAGpgL,IAAK,eAAgB,WAChB,GAA7BogL,EAAG8jrB,yBACd9jrB,EAAG8jrB,wBAAyB,EACtB19N,OAAO11gB,KAAK13G,MAAMqtnB,gBAAgBrmd,EAAGpgL,IAAK,iBAAkB,WAC7DogL,EAAGpgL,IAAIkgV,QAAQztV,KAAKkE,IAAIyiV,EAAW6qhB,YAAa7jrB,EAAGpgL,IAAIi7U,WACzD,GAED,EAED,EAEA5vD,EAAOm7W,OAASA,OAKhB,IAAIk9N,EAAWZ,EAAgBqC,cAAcnmlB,GACzC+zE,EAAW+vgB,EAAgB5k2B,OAAO+gR,GAClCpiR,EAAUim2B,EAAgB7wiB,WAAW8gC,EAAU,CAACn9T,MAAOy1P,IACvDwzM,EAAiBikY,EAAgBwB,kBAAkBvxgB,GACnD3Z,EAAaj2M,QAAQlzB,OAAOpzG,EAASgie,GACrCukY,EAAYN,EAAgBt1S,UAAUniS,EAAQ0nE,GAQlD,GANAh8V,OAAOO,KAAK8r2B,GAAW/h2B,OAEvB++K,EAAGg5J,WAAaA,EAChBh5J,EAAGgjrB,UAAYA,EACfhjrB,EAAGihP,eAAiB,CAAC,EAEjBxka,EAAQuo2B,SAAU,CAEpB,GAAMnmlB,EAAOj0Q,IAE0B,IAA1Ci0Q,EAAOj0Q,GAAGxV,QAAQ0t2B,EAAiB,KAE4C,IAA/EjklB,EAAOj0Q,GAAGxV,QAAQ2t2B,EAAelklB,EAAOj0Q,GAAG3J,OAAS8h2B,EAAc9h2B,QAC7D,IAAIgk2B,EAAepmlB,EAAOj0Q,GAAGjD,MAAM,GAAG,GAClCu91B,EAAQpllB,EAAOmllB,EAAPnllB,CAAqBmL,QAE7Bi6kB,EAAQrmlB,EAAOj0Q,GAErBo1K,EAAGpgL,IAAM,CAACgL,GAAIs61B,GACd5ylB,EAAMuylB,OAAO7krB,EACf,MACEA,EAAG+jrB,gBAIFtn2B,EAAQ0o2B,eACT/+N,OAAO11gB,KAAK13G,MAAMg5C,QAAQguH,EAAGpgL,IAAK,UAGpCg/Q,EAASr2N,KAAK,WAAY,WACxBs6yB,EAAUuC,kBAAkBplrB,EAAGpgL,KAC/B0yQ,EAAM+ylB,UAAUrlrB,EAClB,EACF,EAEA2irB,EAAgBlwuB,QAAU,CACxB,SAAU,WAAY,SAAU,SAAU,eAAgB,kBAAmB,QAAS,YAAa,sBAErGsQ,QAAQx0C,OAAO,SAASn6C,WAAW,kBAAmBuuzB,EACvD,CAhSD,GAiTA,WACE,aACA,IAAIh4wB,EAEA26wB,EAAW,SAAS9v0B,EAAOriC,EAASyiI,EAAO2vuB,GAC7CA,EAAgBA,EAAc,IAAIA,EAAc,GAChD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GAIjC64C,EAAQ03B,EAASzma,EAAS25B,GAC9Bmv0B,EAActC,UAAU,kBAAmBz3d,GAC3C+5d,EAAclC,kBAAkBC,EAAU1tuB,EAAO41Q,GACjDr4Y,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,kBAAmB53d,EAChD,EACF,EAEI03B,EAAW,SAASzma,EAAS25B,GAC/B,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAK80uB,eAAe/o2B,GAC3C,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAEzD,OAAO4pS,CACT,EAEIi6d,EAAgB,SAAS/C,GAE3B,OADA/3wB,EAAS+3wB,EACF,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAAMqvuB,EAEV,EACAG,EAAehzuB,QAAU,CAAC,mBAE1BsQ,QAAQx0C,OAAO,SAASklC,UAAU,iBAAkBgyuB,EACrD,CAxCD,GAqEA,WACE,aACA,IAAI96wB,EAEA26wB,EAAW,SAAS9v0B,EAAOriC,EAASyiI,EAAO2vuB,EAAer6kB,GAC5Dq6kB,EAAgBA,EAAc,IAAIA,EAAc,GAChD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GAKjC+ygB,EAAkBvy2B,EAAQ,GAAGupH,cAAc3f,YAAY5pG,EAAQ,IAC/DugH,EAAUw3K,IAMd,IAAK,IAAItpL,KALTmhC,QAAQ5vI,QAAQuy2B,GAAiBtouB,OAAO1pB,GAKlBt9E,EACpBgwmB,OAAO11gB,KAAK13G,MAAM2s1B,eAAeD,EAAiB9jwB,EAAWxrE,EAAOwrE,IAGtE2jwB,EAActC,UAAU,iBAAkByC,GAC1C,IAAI/v2B,EAAW8G,EAAQ9G,SACvB4v2B,EAAc3l2B,IAAI2tM,SAAS64b,OAAO11gB,KAAKs3gB,gBAAgBryoB,IAAWgL,KAAK+k2B,GAEvEvy2B,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,iBAAkBsC,EAC/C,EACF,EAEIE,EAAiB,SAASlD,EAAiBmD,GAG7C,OAFAl7wB,EAAS+3wB,EAEF,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAAMqvuB,EACNrmlB,YAAY,EAEhB,EACA2mlB,EAAcnzuB,QAAU,CAAC,kBAAmB,SAE5CsQ,QAAQx0C,OAAO,SAASklC,UAAU,gBAAiBmyuB,EACpD,CA9CD,GA2EA,WACE,aACA,IAAIj7wB,EAAQ2vC,EAAUF,EAAUk4I,EAE5BwzlB,EAAe,SAASrp2B,GAO1B,IAAK,IAAIpF,KANToF,EAAUA,GAAW,CAAC,EAEtBoQ,KAAKu9B,GAAK90C,SAASskB,cAAc,OACjC/M,KAAKu9B,GAAG7T,MAAM8yB,QAAU,eACxBx8C,KAAKu9B,GAAG7T,MAAM4/E,WAAa,SAC3BtpG,KAAK8kC,SAAU,EACCl1C,EACfoQ,KAAKxV,GAAOoF,EAAQpF,EAEvB,EAuJI0u2B,EAAwB,SACxBC,EAAYC,EAAYrmlB,EAAc8ilB,EAAiBmD,EAASp4oB,GAElE9iI,EAAS+3wB,EACTpouB,EAAW0ruB,EACX5ruB,EAAW6ruB,EACX3zlB,EAAQuzlB,EAER,IAAI/C,EAAkBljlB,EAAaqC,cAC/B8glB,EAAgBnjlB,EAAasC,YAC7BoilB,EAAa,IAAI3l0B,OAAO8uL,EAAaq1oB,GAAmB,MAAQC,EAAc/swB,UAAU,EAAG,GAAK,MAAQy3H,EAAas1oB,GAAgB,KAEzI,MAAO,CACLphuB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClBjE,QAAS,SAASl9G,IAlKpB2y2B,EAAa741B,UAAY,IAAIm5nB,OAAO11gB,KAAK4oN,aAElB+sgB,WAAa,SAASxw1B,EAAM2/B,GACjD3oB,KAAKu9B,GAAGqtJ,UAAY5hM,EACpBgX,KAAKu9B,GAAG7T,MAAM5gC,SAAW,WACrB6/B,GACF4kG,EAAS2I,QAAQ5vI,QAAQ0Z,KAAKu9B,IAAI+lM,WAAlC/1G,CAA8C5kG,EAElD,EAEAsw0B,EAAa741B,UAAUk7rB,aAAe,WACpC,OAAOt7rB,KAAKyrU,SACd,EAEAwthB,EAAa741B,UAAUoma,aAAe,SAAS/6F,GAC7CzrU,KAAKyrU,UAAYA,CACnB,EAEAwthB,EAAa741B,UAAU02Z,YAAc,WACnC,OAAO92Z,KAAKlX,QACd,EAEAmw2B,EAAa741B,UAAUu2Z,YAAc,SAAS7ta,GAC5CA,IAAakX,KAAKlX,SAAWA,GAC7B,IAAIob,EAAQlE,KACZ,GAAIA,KAAKktU,iBAA+C,mBAArBltU,KAAKlX,SAASygO,IAAmB,CAElE,IAAIotM,EAAc,WAChB,GAAKzyZ,EAAMgpU,gBAAX,CACA,IAAImshB,EAAWn11B,EAAMgpU,gBAAgBm4e,qBAAqBnhzB,EAAMpb,UAC5DvC,EAAIf,KAAK+F,MAAM8t2B,EAAS9y2B,EAAK2d,EAAMq5B,GAAG52C,YAAY,GAClDhD,EAAI6B,KAAK+F,MAAM8t2B,EAAS112B,EAAIugB,EAAMq5B,GAAG12C,aAAe,IACxDqd,EAAMq5B,GAAG7T,MAAMv/B,KAAO5D,EAAI,KAC1B2d,EAAMq5B,GAAG7T,MAAM1/B,IAAMrG,EAAI,KACzBugB,EAAMq5B,GAAG7T,MAAM4/E,WAAa,SANU,CAOxC,EACIplG,EAAMq5B,GAAG52C,aAAeud,EAAMq5B,GAAG12C,aACnC8va,IAGAlpS,EAASkpS,EAAa,IAE1B,CACF,EAEAsic,EAAa741B,UAAU03Z,UAAY,SAASkpB,GAC1CA,IAAWhhb,KAAKghb,OAASA,GACzBhhb,KAAKu9B,GAAG7T,MAAMs3Z,OAAShhb,KAAKghb,MAC9B,EAEAi4a,EAAa741B,UAAU+1Z,WAAa,WAClC,OAAOn2Z,KAAK8kC,OACd,EAEAm0zB,EAAa741B,UAAUm2Z,WAAa,SAASzxX,GAC3C9kC,KAAKu9B,GAAG7T,MAAM8yB,QAAU1X,EAAU,eAAiB,OACnD9kC,KAAK8kC,QAAUA,CACjB,EAEAm0zB,EAAa741B,UAAU6pG,SAAW,SAASH,GACzC,IAAI4nQ,EAAa1xW,KAAKu9B,GAAGusE,UAAU9rG,OAAO9c,MAAM,MACb,GAAlCwwX,EAAWnpX,QAAQuhH,IAAqB4nQ,EAAW59W,KAAKg2G,GACzD9pG,KAAKu9B,GAAGusE,UAAY4nQ,EAAWxzW,KAAK,IACtC,EAEA+61B,EAAa741B,UAAUspG,YAAc,SAASI,GAC5C,IAAI4nQ,EAAa1xW,KAAKu9B,GAAGusE,UAAU5oH,MAAM,KACrCsV,EAAQk7W,EAAWnpX,QAAQuhH,GAC9BtzG,GAAS,GAAMk7W,EAAW3kV,OAAOv2B,EAAO,GACzCwJ,KAAKu9B,GAAGusE,UAAY4nQ,EAAWxzW,KAAK,IACtC,EAEA+61B,EAAa741B,UAAUssU,MAAQ,WAC7B1sU,KAAK+sU,WAAWC,mBAAmB78O,YAAYnwF,KAAKu9B,GACtD,EAEA07zB,EAAa741B,UAAU2hC,KAAO,WAC5B/hC,KAAK22Z,cACL32Z,KAAK83Z,UAAU93Z,KAAKghb,QACpBhhb,KAAKu2Z,WAAWv2Z,KAAK8kC,QACvB,EAEAm0zB,EAAa741B,UAAU+sU,SAAW,WAChCntU,KAAKu9B,GAAGv1C,WAAWkoG,YAAYlwF,KAAKu9B,GAEtC,EA+EIj3C,EAAQ,GAAGojC,MAAM8yB,QAAS,OAC1B,IAAI88yB,EAAUhz2B,EAAQ0C,OAClBipC,EAAUqn0B,EAAQt12B,MAAMyz2B,GACxB8B,EAAc,GAWlB,OATCtn0B,GAAW,IAAIjgC,QAAQ,SAAShO,GAC/B,IAAIq0S,EAAUr0S,EAAMD,QAAQky2B,EAAgB,IAAIly2B,QAAQmy2B,EAAc,KAC1C,GAAxBly2B,EAAMuE,QAAQ,QACW,GAA3BvE,EAAMuE,QAAQ,WACmB,GAAjCgx2B,EAAYhx2B,QAAQ8vS,IACpBkhkB,EAAYzl2B,KAAK9P,EAAMD,QAAQky2B,EAAgB,IAAIly2B,QAAQmy2B,EAAc,IAE7E,GAxFS,SAASoD,EAASC,GAG/B,OAAO,SAAS5w0B,EAAOriC,EAASyiI,EAAO2vuB,GACrCA,EAAgBA,EAAc,IAAIA,EAAc,GAChD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAEhCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GAKrCx/V,EAAQ,GAAGojC,MAAM8yB,QAAU,OAE3B,IAAIg9yB,EAAe,IAAIP,EAAarp2B,GAyBpC,IAAK,IAAImlG,KAvBT04B,EAAS,WAEP9kG,EAAMw6M,OAAO,IAAMo2nB,EAAYr71B,KAAK,KAAO,IAAK,WAC9Cs71B,EAAahgB,WAAW8f,EAAS3w0B,EACnC,GAAG,GAEH6w0B,EAAahgB,WAAWlz1B,EAAQ,GAAGskM,UAAWjiK,GAC9C,IAAI+oV,EAAaprX,EAAQ,GAAGmz2B,kBAAkB3vvB,UAC9C0vvB,EAAavvvB,SAAS,iBACtBuvvB,EAAavvvB,SAASynQ,GAGhB9hX,EAAQ9G,oBAAoBywoB,OAAO11gB,KAAK4lG,QAC5Cg8C,EAAMkylB,eAAe/n2B,EAAQ9G,UAAU+N,KACjC,SAASo0vB,GACPuuG,EAAa7ic,YAAYs0V,EAC3B,EAIV,GAGsB1huB,EACpBgwmB,OAAO11gB,KAAK13G,MAAM2s1B,eAChBU,EAAaj8zB,GAAIw3D,EAAWxrE,EAAOwrE,IAEvC2jwB,EAActC,UAAU,gBAAiBoD,GAGzCd,EAAclC,kBAAkBC,EAAU1tuB,EAAOywuB,GAEjDlz2B,EAAQo1D,KAAK,WAAY,WAEvBg9yB,EAAcnC,aAAa,gBAAiBiD,EAC9C,EAEF,CACF,CAkCaf,CAASa,EAASC,EAC3B,EAEJ,EACAL,EAAsBtzuB,QACpB,CAAC,WAAY,WAAY,eAAgB,kBAAmB,QAAS,sBAEvEsQ,QAAQx0C,OAAO,SAASklC,UAAU,eAAgBsyuB,EACnD,CA5MD,GA0OA,WACE,aACA,IAAIzzlB,EAAOh4I,EAAUisuB,EAcjBC,EAAc,SAAS//B,EAAUhq0B,GACnC,IAAIgq2B,EAAoB,IAAIrgO,OAAO11gB,KAAKg2uB,kBAGpCjykB,EAAUh4R,EACdg4R,EAAQkykB,WAAalykB,EAAQkykB,YAAc,UAC3C,IAAIC,EAAY,CACd,SAAU,cAAe,aAAc,iBAAkB,aACzD,oBAAqB,YAAa,oBAClC,2BAA4B,gBAAiB,aAAc,UAE7D,IAAI,IAAIvv2B,KAAOo9R,GACgB,IAA5BmykB,EAAUxx2B,QAAQiC,WAAwBo9R,EAAQp9R,GAGlDo9R,EAAQoykB,YAEe,MAArBpykB,EAAQoykB,WAA2C,KAAtBpykB,EAAQoykB,kBAC/BpykB,EAAQoykB,WAInB,IAAIC,EAAiB,SAASrykB,GAC5BgykB,EAAkB1u0B,MAAM08P,EAAS,SAASv5L,EAAU8+B,GAC9CA,GAAUosgB,OAAO11gB,KAAKq2uB,iBAAiBC,IACzC1suB,EAAS,WACPmssB,EAASwgC,cAAc/rwB,EACzB,EAEJ,EACF,EAEIu5L,EAAQ55L,QAAU45L,EAAQlwB,cACN,oBAAlBkwB,EAAQ55L,OACV0rwB,EAAqBl6B,qBAAqB3o0B,KAAK,SAASypG,GACtDsnL,EAAQ55L,OAAS,IAAIuriB,OAAO11gB,KAAK4lG,OAAOnpH,EAAG89F,OAAOuhoB,SAAUr/tB,EAAG89F,OAAOwhoB,WACtEq6B,EAAerykB,EACjB,GACgC,oBAAvBA,EAAQlwB,YACjBgimB,EAAqBl6B,qBAAqB3o0B,KAAK,SAASypG,GACtDsnL,EAAQlwB,YAAc,IAAI6hY,OAAO11gB,KAAK4lG,OAAOnpH,EAAG89F,OAAOuhoB,SAAUr/tB,EAAG89F,OAAOwhoB,WAC3Eq6B,EAAerykB,EACjB,GAEAqykB,EAAerykB,GAGrB,EAEIioZ,EAAa,SACbgmL,EAAiBsD,EAAYkB,EAAwBrB,GACvD,IAAIl7wB,EAAS+3wB,EA6Cb,OA5CApwlB,EAAQuzlB,EACRvruB,EAAW0ruB,EACXO,EAAuBW,EA0ChB,CACLvluB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KA3Ca,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GAC7CA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GACjC6wgB,EAAiB74wB,EAAO84wB,kBAAkBH,GAE1C78B,EA7EoB,SAAShq0B,EAAS25B,GACxC35B,EAAQ0q2B,QACV1q2B,EAAQ0q2B,MAAQ7x2B,SAAS6zE,eAAe1sE,EAAQ0q2B,QAC9C7x2B,SAAS8U,cAAc3N,EAAQ0q2B,QAEnC,IAAI1gC,EAAW,IAAIrgM,OAAO11gB,KAAK02uB,mBAAmB3q2B,GAClD,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYqzwB,EAAU7kuB,EAAWxrE,EAAOwrE,IAE5D,OAAO6kuB,CACT,CAmEmB4gC,CAAsB5q2B,EAAS25B,GAC9Cmv0B,EAActC,UAAU,sBAAuBx8B,GAE/C+8B,EAAe3k2B,QAAQ,SAASq8H,IAC9B,SAAUA,GACRtF,EAAMyF,SAASH,EAAU,SAAS1mG,GAChC,GAAgB,SAAZ0mG,EACFZ,EAAS,WACP,IAAI6suB,EACF7x2B,SAAS6zE,eAAe30C,IAAQl/B,SAAS8U,cAAcoqB,GAEzD2y0B,GAAS1gC,EAAS6gC,SAASH,EAC7B,QACK,GAAI1q2B,EAAQy+H,KAAc1mG,EAAK,CACpC,IAAI+y0B,EAAc58wB,EAAO68wB,cAAchz0B,EAAK,CAACn9B,IAAK6jI,IAElDz+H,EAAQy+H,GAAYqsuB,EACpBf,EAAY//B,EAAUhq0B,EACxB,CACF,EACD,CAhBD,CAgBGy+H,EACL,GAEAo3I,EAAMm1lB,SAAS/j2B,KAAK,WAClB8i2B,EAAY//B,EAAUhq0B,EACxB,GACAtJ,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,sBAAuB38B,EACpD,EACF,EAOF,EACA/pJ,EAAWjqjB,QACT,CAAC,kBAAmB,WAAY,uBAAwB,SAE1DsQ,QAAQx0C,OAAO,SAASklC,UAAU,aAAcipjB,EACjD,CA1HD,GAuJA,WACE,aACA35iB,QAAQx0C,OAAO,SAASklC,UAAU,iBAAkB,CAClD,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAEb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9Cipc,EAAiB9zY,EAAOu5wB,kBAAkBvxgB,GAC1Cv8T,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GAKjC+0gB,EAAiB,IAAIthO,OAAO11gB,KAAKi3uB,QAAQC,eAAe,CAC1DC,YAAapr2B,EAAQqr2B,YACrBC,eAAgBtr2B,EAAQur2B,eACxBC,sBAAuBxpY,EAAewpY,sBACtCC,cAAczr2B,EAAQ0r2B,cACtBC,cAAc3r2B,EAAQ4r2B,cACtBC,eAAe7r2B,EAAQ8r2B,eACvBC,gBAAgB/r2B,EAAQgs2B,gBACxBC,iBAAiBjs2B,EAAQks2B,mBAc3B,IAAK,IAAI/mwB,KAVTg0B,EAAMyF,SAAS,wBAAyB,SAAUC,GAChDosuB,EAAeO,sBAAwBt9wB,EAAOu5wB,kBAAkB,CAAC+D,sBAAuB3suB,IAAW2suB,sBACnGP,EAAekB,eAAe,MAC9BlB,EAAetxhB,OAAOmvhB,EAAc3l2B,IACtC,GAMsBw2B,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYs0yB,EAAgB9lwB,EAAWxrE,EAAOwrE,IAGlE2jwB,EAActC,UAAU,oBAAqByE,GAE7Cv02B,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,oBAAqBsE,EAClD,EACF,EAEJ,GACD,CAvDD,GAwEA,WACE,aAEA3kuB,QAAQx0C,OAAO,SAASklC,UAAU,yBAA0B,CAC1D,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAYb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,EAAUv8T,GAE3Co1W,EArBwB,SAAS/uY,EAAS25B,GAChD,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAKwlG,cAAc2yoB,uBAAuBps2B,GAEjE,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAGzD,OAAO4pS,CACT,CAagBs9d,CAA0Brs2B,EAAS25B,GAC/Cmv0B,EAActC,UAAU,mBAAoBz3d,EAC9C,EAEJ,GACD,CAjCD,GAmDA,WACE,aAEAzoQ,QAAQx0C,OAAO,SAASklC,UAAU,oBAAqB,CACrD,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAYb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,EAAUv8T,GAG3Co1W,EAtBO,SAAS/uY,EAAS25B,GAC/B,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAKq4uB,kBAAkBts2B,GAE9C,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAGzD,OAAO4pS,CACT,CAcgB03B,CAASzma,EAAS25B,GAC9Bmv0B,EAActC,UAAU,qBAAsBz3d,GAC9Cr4Y,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,qBAAsB53d,EACnD,EACF,EAEJ,GACD,CArCD,GAqDA,WACE,aAEAzoQ,QAAQx0C,OAAO,SAASklC,UAAU,eAAgB,CAChD,kBAAmB,UAAW,SAASivuB,EAAiBhmuB,GACxD,IAAI/xC,EAAS+3wB,EACb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GAKzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAElD,GADA/4B,EAAQmG,KAAO85H,EAAQ9G,EAAMhzH,OAAS4yB,EAAMogG,EAAMhzH,QAC9CnG,EAAQmG,gBAAgBzB,OAG1B,KAAM,uBAFN1E,EAAQmG,KAAO,IAAIwjoB,OAAO11gB,KAAKs4uB,SAASvs2B,EAAQmG,MAIlD,IAAI4oY,EAAQ,IAAI46P,OAAO11gB,KAAKwlG,cAAcC,aAAa15N,GAK1CkuF,EAAOyie,UAAU53hB,EAAOm9T,GAGrC4ygB,EAActC,UAAU,gBAAiBz3d,EAC3C,EAEJ,GACD,CArCD,GAwFA,WACE,aAEA,IAAIy9d,EAAa,SAASvG,EAAiBtouB,EAAUpL,EAAI6wJ,EAAkBvlJ,EAAUwlJ,EAAQxN,GAC3F,IAAI3nL,EAAS+3wB,EAwJb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAtFa,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GAC7CA,EAAgBA,EAAc,IAAIA,EAAc,GAEhDpy2B,EAAQ6C,IAAI,UAAU,QAEtB,IAMI+4N,EANAu0oB,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAG9Cyz0B,EA7Ec,SAASxs2B,EAAS25B,EAAQjjC,GAC5C,IAAI812B,EAaJ,IAAK,IAAIrnwB,KARLnlG,EAAQ9G,UAAc8G,EAAQ9G,oBAAoBywoB,OAAO11gB,KAAK4lG,eACzD75N,EAAQ9G,SAEjBsz2B,EAAa,IAAI7iO,OAAO11gB,KAAKw4uB,WAAWzs2B,GAKlB25B,EAChBwrE,GACFwkiB,OAAO11gB,KAAK13G,MAAMo6C,YAAY61yB,EAAYrnwB,EAAWxrE,EAAOwrE,IAQhE,IAAIunwB,EAAkBn6uB,EAAG,SAASvrH,GAC5Bs/H,QAAQ3yB,SAASj9G,GACnB0sR,EAAiB1sR,GAASuQ,KAAK,SAAU0l2B,GACvC3l2B,EAAQs/H,QAAQ5vI,QAAQi22B,GAAmBj6yB,KAAK,SAAS76D,SAC3D,EAAG,SAAS2oG,GACV,KAAM,wCAA0CA,CAClD,GAGAx5F,EAAQtQ,EAEZ,GAAGuQ,KAAK,SAAS2l2B,GACf,IAAIz7oB,EAAWy7oB,EAAiBxz2B,OAAOgV,OACvC,GAAwC,GAApCk4H,QAAQ5vI,QAAQy6N,GAAU3sN,OAC5B,KAAM,0DAERgo2B,EAAWK,WAAa17oB,EAASh9N,QAAQ,2BAA2B,GACtE,GAuBA,OArBAq42B,EAAWM,OAAS,SAAS3p2B,EAAK41B,EAAO4iS,GACvC+wiB,EAAgBzl2B,KAAK,WACnB42H,EAAS,WACP89L,IAAW5iS,EAAM4iS,OAASA,GAC1B,IAAIhuR,EAAKgwF,EAAS6uuB,EAAWK,WAApBlvuB,CAAgC5kG,GACzCyz0B,EAAW5iB,WAAWj8yB,EAAG,IACzB5U,EAAMqlG,SACFu9L,GAAUA,EAAOurG,YACnBslc,EAAWruwB,KAAKh7F,EAAKw4T,GACZA,GAAUA,aAAkBguU,OAAO11gB,KAAK4lG,QACjD2yoB,EAAWruwB,KAAKh7F,GAChBqp2B,EAAWzlc,YAAYprG,IAEvB6wiB,EAAWruwB,KAAKh7F,GAEUqp2B,EAAWv1vB,QAAQgJ,cAAcA,cAAcA,cACrD/F,UAAY,oBACpC,EACF,EACF,EAEOsyvB,CACT,CAYmBO,CAAc/s2B,EAFlBkuF,EAAOyie,UAAU53hB,EAAOm9T,GAEWl2V,EAAQmxN,UAAYz6N,IAEhEsJ,EAAQ9G,UAAc8G,EAAQ9G,oBAAoBywoB,OAAO11gB,KAAK4lG,SAChEvH,EAAUtyN,EAAQ9G,UAEhBo5N,GACFujD,EAAMkylB,eAAez1oB,GAASrrN,KAAK,SAASo0vB,GAC1CmxG,EAAWzlc,YAAYs0V,GACvBmxG,EAAWM,OAAOhE,EAAc3l2B,IAAK41B,EAAOsiuB,GAC5C,IAAI4sG,EAAc9uuB,EAAM8uuB,YACxBA,GAAe5klB,EAAO4klB,EAAP5klB,CAAoBtqP,EACrC,GAGF+v0B,EAActC,UAAU,cAAegG,GACvC1D,EAAclC,kBAAkBC,EAAU1tuB,EAAOqzuB,GAEjD1D,EAAcnB,eACdmB,EAAc3l2B,IAAIwk2B,eAAiBmB,EAAcnB,gBAC/C,SAAShy0B,EAAIC,EAAIste,GACf,IAAI/0f,EAAkB,iBAANwnB,EAAiBA,EAAKC,EAClCmvb,EAAsB,iBAANpvb,EAAiBC,EAAKste,EAC1C,GAAqB,iBAAVn+C,EAET,QACsC,IAA7B+jZ,EAAc3l2B,IAAIigd,cACsB,IAArC0lZ,EAAc3l2B,IAAIigd,QAAQ2B,GAClCA,EAAS+jZ,EAAc3l2B,IAAIigd,QAAQ2B,OAChC,SAEsC,IAApC+jZ,EAAc3l2B,IAAIgk2B,oBAC6B,IAA5C2B,EAAc3l2B,IAAIgk2B,cAAcpiZ,GAI1C,MAAM,IAAIptc,MAAM,gCAAkCotc,EAAS,2CAHzDA,EAAS+jZ,EAAc3l2B,IAAIgk2B,cAAcpiZ,EAI7C,CAGF,IAAIynZ,EAAa1D,EAAc3l2B,IAAI6p2B,YAAY7+1B,GAC3CwtT,EAASopJ,IAAmB30c,KAAK82Z,YAAc92Z,KAAO,MAC1Do81B,EAAWM,OAAOhE,EAAc3l2B,IAAK41B,EAAO4iS,GACzCmtiB,EAAcX,mBACZW,EAAcmE,gBACfl00B,EAAM6u0B,eAAekB,EAAcmE,gBAErCnE,EAAcmE,eAAiB9+1B,EAEnC,EAEF261B,EAAclB,eACdkB,EAAc3l2B,IAAIyk2B,eAAiBkB,EAAclB,gBAC/C,SAASjy0B,EAAIC,GACX,IAAIznB,EAAkB,iBAANwnB,EAAiBA,EAAKC,EACrBkz0B,EAAc3l2B,IAAI6p2B,YAAY7+1B,GACpC0P,OACb,EAGFkb,EAAM4u0B,eAAiBmB,EAAc3l2B,IAAIwk2B,eACzC5u0B,EAAM6u0B,eAAiBkB,EAAc3l2B,IAAIyk2B,eAEzC,IAAIzk2B,EAAMqp2B,EAAW/D,MAAQ,CAACt61B,GAAGq+1B,EAAW/D,OAAS,EACrD5ylB,EAAMm1lB,OAAO7n2B,GAAK8D,KAAK,SAAS9D,GAE9B,GADAqp2B,EAAWt3zB,SAAWs3zB,EAAWM,OAAO3p2B,EAAK41B,GACzCyz0B,EAAWU,gBAAiB,CAC9B,IAAIC,EAAWX,EAAWU,gBAC1BV,EAAWM,OAAO3p2B,EAAK41B,EAAO51B,EAAIigd,QAAQ+pZ,GAC5C,CACF,EAEF,EAQF,EACAX,EAAWx2uB,QACT,CAAC,kBAAmB,WAAY,KAAM,mBAAoB,WAAY,SAAU,SAElFsQ,QAAQx0C,OAAO,SAASklC,UAAU,aAAcw1uB,EACjD,CAvKD,GAoMA,WACE,aAEAlmuB,QAAQx0C,OAAO,SAASklC,UAAU,WAAY,CAC5C,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAUb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GAKzBi0uB,EArBU,SAASpt2B,EAAS25B,GAClC,IAAIyz0B,EAAW,IAAIzjO,OAAO11gB,KAAKo5uB,SAASrt2B,GACxC,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYy2yB,EAAUjowB,EAAWxrE,EAAOwrE,IAE5D,OAAOiowB,CACT,CAemBE,CAJDp/wB,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IACrCm1D,EAAOyie,UAAU53hB,EAAOm9T,IAIrC4ygB,EAActC,UAAU,YAAa4G,GACrCtE,EAAclC,kBAAkBC,EAAU1tuB,EAAOi0uB,GACjD122B,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,YAAayG,EAC1C,EACF,EAEJ,GACD,CArCD,GAyDA,WACE,aAEA9muB,QAAQx0C,OAAO,SAASklC,UAAU,UAAW,CAC3C,kBAAmB,QAAS,SAASivuB,EAAiBpwlB,GACtD,IAAI3nL,EAAS+3wB,EACb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAMA,EAAc,GAClD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,EAAUv8T,GAG/Ck8O,EAAMm1lB,OAAOlC,EAAc3l2B,IAAIgL,IAAIlH,KAAK,SAAS9D,GAE/C,IAAK,IAAIvI,KAAOoF,EAAS,CACvB,IAAI+3B,EAAM/3B,EAAQpF,GACQ,mBAAfm+B,EAAMhB,GACf50B,EAAIgD,KAAKvL,GAAKm+B,EAAMhB,IAEpB50B,EAAIgD,KAAKvL,GAAKm9B,EAElB,CAGA,IAAK,IAAIotE,KAAaxrE,EACpBx2B,EAAIgD,KAAKwwD,YAAYwuC,EAAWxrE,EAAOwrE,GAE3C,EACF,EAEJ,GACD,CApCD,GA0EA,WACE,aACA,IAAI04B,EAAUF,EAAe4vuB,EAAY,GAAIxs2B,EAAW,GAEpDys2B,EAAc,SAASz00B,EAAOriC,EAASyiI,GACzC,IAAIs0uB,EAAUt0uB,EAAMu0uB,mBAAqBv0uB,EAAMw0uB,YAE/C,QAAqBzm2B,IAAlB3P,OAAOoyoB,aAA+CzioB,IAAvB3P,OAAOoyoB,OAAO11gB,KAAoB,CAClElzH,EAASmD,KAAK,CACZ60B,MAAOA,EACPriC,QAASA,EACT622B,UAAWA,EAAUxs2B,EAASyD,UAGhCjN,OAAOq22B,iBAAmB,WAExB/vuB,EAAS,WACP98H,EAASqB,QAAQ,SAAS82Q,GACtBA,EAAIxiR,QAAQ0C,KAAK8/Q,EAAIq0lB,WACrB5vuB,EAASu7I,EAAIxiR,QAAQg9O,WAArB/1G,CAAiCu7I,EAAIngP,MACzC,EACF,EAAG,IACL,EAEA,IAAI800B,EAAWh12B,SAASskB,cAAc,UAGtC0w1B,EAASp2vB,IAAMg2vB,GACZA,EAAQ902B,QAAQ,MAAQ,EAAI,IAAM,KACnC,4BAEKE,SAAS8U,cAAc,eAAiBkg2B,EAASp2vB,IAAM,OAC1D5+G,SAASiF,KAAKyiG,YAAYstwB,EAEhC,MACEn32B,EAAQ0C,KAAKm02B,GACb5vuB,EAASjnI,EAAQg9O,WAAjB/1G,CAA6B5kG,EAEjC,EAEI+00B,EAAc,SAAS7rlB,EAAUC,GASnC,OAPEA,EAAOyrlB,YACTJ,EAAUrp2B,KAAK+9Q,EAAS7oR,QAClB8oR,EAAOyrlB,kBAKQzm2B,IAAlB3P,OAAOoyoB,aAA+CzioB,IAAvB3P,OAAOoyoB,OAAO11gB,QAIhDguJ,EAAS7oR,KAAK,IAEP,CACLgzO,IAAKohoB,GAET,EAEIG,EAAc,SAASnE,EAAYD,GAErC,OADA5ruB,EAAW6ruB,EAAY3ruB,EAAW0ruB,EAC3B,CACL31vB,QAASk6vB,EAEb,EACAH,EAAY33uB,QAAU,CAAC,WAAW,YAElCsQ,QAAQx0C,OAAO,SAASklC,UAAU,cAAe22uB,EAClD,CArED,GAuFA,WACE,aAEArnuB,QAAQx0C,OAAO,SAASklC,UAAU,UAAW,CAAC,SAAU,QACtD,SAASqsJ,EAAQxN,GAEjB,MAAO,CACL3wI,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAA8BiF,EAA1BC,EAAc70uB,EAAMx1H,KACxB,IAAKqq2B,EACH,KAAM,wBAGR,KADAD,EAAgB1qlB,EAAOlqJ,EAAMz9E,OAAb2nO,CAAqBtqP,IAEnC,KAAM,0BAGR88O,EAAMm1lB,SAAS/j2B,KAAK,SAAS9D,GAC3BA,EAAI8q2B,SAAS9p2B,IAAI6p2B,EAAaD,EAChC,GACAjF,EAActC,UAAU,WAAYuH,EACtC,EAEJ,GACD,CA7BD,GAoFA,WACE,aAEA,IAAIG,EAAe,WACjB,MAAO,CACLhpuB,SAAU,KACVvtF,WAAY,kBACZ2qO,aAAc,QAElB,EAEAh8I,QAAQx0C,OAAO,SAASklC,UAAU,MAAO,CAACk3uB,IAC1C5nuB,QAAQx0C,OAAO,SAASklC,UAAU,QAAS,CAACk3uB,GAC7C,CAbD,GA6BA,WACE,aAEA5nuB,QAAQx0C,OAAO,SAASklC,UAAU,kBAAmB,CAAC,kBAAmB,SAASivuB,GAChF,IAAI/3wB,EAAS+3wB,EAYb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI5ygB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,EAAUv8T,GAG3Co1W,EAtBiB,SAAS/uY,EAAS25B,GACzC,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAKwlG,cAAc00oB,gBAAgBnu2B,GAE1D,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAGzD,OAAO4pS,CACT,CAcgBq/d,CAAmBpu2B,EAAS25B,GACxCmv0B,EAActC,UAAU,mBAAoBz3d,EAC9C,EAEJ,GACD,CAjCD,GA8EA,WACE,aACA,IAAI7gT,EAAQm1L,EAAQxN,EAkChBgzlB,EAAW,SAAS9v0B,EAAOriC,EAASyiI,EAAO2vuB,GAC7CA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAMIx2oB,EANAu0oB,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzBwyuB,EAAgBz9wB,EAAOknO,WAAW8gC,EAAUn9T,EAAO,CAACA,MAAOA,IAC3Ds10B,EAAengxB,EAAOyie,UAAU53hB,EAAOm9T,GAIrCy1gB,EAAczy2B,oBAAoBywoB,OAAO11gB,KAAK4lG,SAClDvH,EAAUq5oB,EAAczy2B,UAE1B,IAAI6rd,EA7CU,SAAS/kd,EAAS25B,GAChC,IAAIorb,EAEJ,GAAIlvM,EAAM5wQ,eAAe8/c,OACvB,IAAK,IAAInqd,KAAOi7Q,EAAM5wQ,eAAe8/c,YACR,IAAhB/kd,EAAQpF,KAEjBoF,EAAQpF,GAAOi7Q,EAAM5wQ,eAAe8/c,OAAOnqd,IAgBjD,IAAK,IAAIuqG,KAXHnlG,EAAQ9G,oBAAoBywoB,OAAO11gB,KAAK4lG,SAC5C75N,EAAQ9G,SAAW,IAAIywoB,OAAO11gB,KAAK4lG,OAAO,EAAE,IAE9CkrP,EAAS,IAAI4kL,OAAO11gB,KAAKsutB,OAAOvi1B,GAK5B9F,OAAOO,KAAKk/B,GAAQn1B,OAGFm1B,EAChBwrE,GACFwkiB,OAAO11gB,KAAK13G,MAAMo6C,YAAYouZ,EAAQ5/W,EAAWxrE,EAAOwrE,IAI5D,OAAO4/W,CACT,CAeeupZ,CAAU3C,EAAe0C,GACtCvF,EAActC,UAAU,UAAWzhZ,GAC/BzyP,GACFujD,EAAMkylB,eAAez1oB,GAASrrN,KAAK,SAASo0vB,GAC1Ct2S,EAAOh+C,YAAYs0V,GACnBswG,EAAclF,UAAY1hZ,EAAO5hd,IAAIk2U,UAAUgib,GAC/C,IAAI4sG,EAAc9uuB,EAAM8uuB,YACxBA,GAAe5klB,EAAO4klB,EAAP5klB,CAAoBtqP,EACrC,GAIF+v0B,EAAclC,kBAAkBC,EAAU1tuB,EAAO4rV,GAEjDrud,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,UAAW5hZ,EACxC,EACF,EAEIA,EAAS,SAASkhZ,EAAiBsI,EAAUnF,GAK/C,OAJAl7wB,EAAS+3wB,EACT5ilB,EAASkrlB,EACT14lB,EAAQuzlB,EAED,CACLlkuB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAAMqvuB,EAEV,EAEA9jZ,EAAO/uV,QAAU,CAAC,kBAAmB,SAAU,SAC/CsQ,QAAQx0C,OAAO,SAASklC,UAAU,SAAU+tV,EAE7C,CAnFD,GAqGA,WACE,aAEAz+U,QAAQx0C,OAAO,SAASklC,UAAU,iBAAkB,CAClD,QAAS,SAAS6+I,GAElB,MAAO,CACL3wI,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAI0F,EAAar1uB,EAAMq1uB,YAAc,WACjCC,EAAuB110B,EAAMogG,EAAMz9E,QAEvCm6N,EAAMm1lB,SAAS/j2B,KAAK,SAAS9D,GAC3B,GAAkB,YAAdqr2B,EAA0B,CAC5B,IAAI5n2B,EAAQ2vB,SAAS4iG,EAAMvyH,MAAO,IAClCzD,EAAIur2B,gBAAgB71uB,SAASjyH,EAAO6n2B,EACtC,KAAyB,QAAdD,GACTrr2B,EAAIur2B,gBAAgBxq2B,KAAKuq2B,EAE7B,GACA3F,EAActC,UAAU,kBAAmBiI,EAC7C,EAEJ,GACD,CA5BD,GAgDA,WACE,aAEA,IAAIE,EAAqB,SAAS1I,EAAiBpouB,GACjD,IAAI3vC,EAAS+3wB,EAoCb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,WACT2hB,KArCa,SAASzgG,EAAOriC,EAASyiI,EAAOo6L,GAC7C,GAAgC,UAA5Bp6L,EAAMw1uB,mBACR,OAAO,EAET,IAAIz4gB,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9CY,EAASu0D,EAAOyie,UAAU53hB,EAAOm9T,GACjC8jB,EAAe,IAAI2vR,OAAO11gB,KAAKwqiB,OAAOmwM,aAAal42B,EAAQ,GAAIsJ,GACnE,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYqjT,EAAc70Q,EAAWxrE,EAAOwrE,IAGhE,IAAIq0hB,EAAc,WAChB37f,EAAS,WACP01L,GAAeA,EAAYlN,cAAc3vT,EAAQqhC,MACnD,EAAE,IACJ,EACA4xmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYqjT,EAAc,gBAAiBw/Q,GAC7D9ioB,EAAQ,GAAG4R,iBAAiB,SAAUkxnB,GAEtCrggB,EAAMyF,SAAS,QAAS,SAAS7mG,GAC/B,GAAIA,EAAK,CACP,IAAI+y0B,EAAc58wB,EAAO68wB,cAAchz0B,EAAK,CAACn9B,IAAK,UAClDo/W,EAAa60f,SAAS/D,EACxB,CACF,GAEH3xuB,EAAMyF,SAAS,wBAAyB,SAAU7mG,GAC9CA,GACFiiV,EAAa80f,yBAAyB/10B,EAAM2lG,MAAM3mG,GAEnD,EACA,EAOF,EAEA420B,EAAmB34uB,QAAU,CAAC,kBAAmB,YACjDsQ,QAAQx0C,OAAO,SAASklC,UAAU,qBAAsB23uB,EACzD,CAjDD,GA+HA,WACE,aAEA,IA6CI/ovB,EAAQ,SAASqgvB,EAAiB5ilB,EAAQxN,GAC5C,IAAI3nL,EAAS+3wB,EAkCb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAnCa,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GAC7CA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAKIx2oB,EAASy8oB,EALTlI,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GACzB61uB,EAAe9gxB,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IACnDk20B,EAAc/gxB,EAAOyie,UAAU53hB,EAAOm9T,GAG1C64gB,EAAYC,EAAarr2B,KACnBqr2B,EAAazh2B,kBAAkBo8nB,OAAO11gB,KAAK4lG,SAC/CvH,EAAU08oB,EAAazh2B,QAEzB,IAAIq4G,EA7DO,SAAS5lH,EAAS25B,GAC/B,IAAIisF,EAEAspvB,EAAYlv2B,EAAQ2D,KAOxB,cANO3D,EAAQ2D,KAMRur2B,GACL,IAAK,SACGlv2B,EAAQuN,kBAAkBo8nB,OAAO11gB,KAAK4lG,SAC1C75N,EAAQuN,OAAS,IAAIo8nB,OAAO11gB,KAAK4lG,OAAO,EAAE,IAE5Cj0G,EAAQ,IAAI+jhB,OAAO11gB,KAAKwuF,OAAOziN,GAC/B,MACF,IAAK,UACH4lH,EAAQ,IAAI+jhB,OAAO11gB,KAAKkzR,QAAQnnZ,GAChC,MACF,IAAK,WACH4lH,EAAQ,IAAI+jhB,OAAO11gB,KAAKwxtB,SAASzl1B,GACjC,MACF,IAAK,YACH4lH,EAAQ,IAAI+jhB,OAAO11gB,KAAK6iuB,UAAU921B,GAClC,MACF,IAAK,gBACL,IAAK,QACH,IAAI69F,EAAM79F,EAAQ69F,IACd19D,EAAO,CAACtyB,QAAS7N,EAAQ6N,QAAS2ovB,UAAWx2vB,EAAQw2vB,UAAWrovB,GAAGnO,EAAQmO,IAC/Ey3G,EAAQ,IAAI+jhB,OAAO11gB,KAAKk7uB,cAActxwB,EAAK79F,EAAQmwC,OAAQhQ,GAO/D,IAAK,IAAIglE,KAAaxrE,EAChBA,EAAOwrE,IACTwkiB,OAAO11gB,KAAK13G,MAAMo6C,YAAYivD,EAAOzgB,EAAWxrE,EAAOwrE,IAG3D,OAAOygB,CACT,CAkBgB03W,CAAS0xY,EAAcC,GACnCnG,EAActC,UAAU,SAAU5gvB,GAE9B0sG,GAAwB,UAAby8oB,GACbl5lB,EAAMkylB,eAAez1oB,GAASrrN,KAAK,SAASo0vB,GAC1Cz1oB,EAAMyzN,UAAUgib,GAChBz1oB,EAAM6gvB,UAAY7gvB,EAAMziH,IAAIk2U,UAAUgib,GACtC,IAAI4sG,EAAc9uuB,EAAM8uuB,YACxBA,GAAe5klB,EAAO4klB,EAAP5klB,CAAoBtqP,EACrC,GAIF+v0B,EAAclC,kBAAkBC,EAAU1tuB,EAAOvT,GACjDlvH,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,SAAU/gvB,EACvC,EACF,EAOF,EACAA,EAAMoQ,QAAU,CAAC,kBAAmB,SAAU,SAE9CsQ,QAAQx0C,OAAO,SAASklC,UAAU,QAASpR,EAE5C,CA7FD,GA6HA,WACE,aAEA,IAAIwpvB,EAAqB,SAASnJ,EAAiBpwlB,GACjD,IAAI3nL,EAAS+3wB,EAmDb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAClB2hB,KAhCa,SAASzgG,EAAOriC,EAASyiI,GACtC,IAAI+8N,EAAWhoQ,EAAO7sF,OAAO83H,GACzBn5H,EAAUkuF,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IAC9Cipc,EAAiB9zY,EAAOu5wB,kBAAkBvxgB,GAC1Cm5gB,EAAa/ouB,QAAQlzB,OAAOpzG,EAASgie,GAErCstY,EAAYphxB,EAAOyie,UAAU53hB,EAAOm9T,GAGxCrgF,EAAMm1lB,SAAS/j2B,KAAK,SAAS9D,GAC3B,IAAIos2B,EA9BoB,SAASps2B,EAAKnD,EAAS25B,GACjD,IAAI410B,EAAKr5yB,EAYT,IAAK,IAAIivC,KAXLnlG,EAAQk2D,YAEVA,GADAA,EAAYr9D,SAAS6zE,eAAe1sE,EAAQk2D,aACnBr9D,SAAS8U,cAAc3N,EAAQk2D,YAEtDA,EACFq5yB,EAAM,IAAI5lO,OAAO11gB,KAAKu7uB,mBAAmBt5yB,EAAWl2D,IAEpDuv2B,EAAMps2B,EAAIss2B,iBACN/p2B,WAAW1F,GAGK25B,EACpBwrE,GACEwkiB,OAAO11gB,KAAK13G,MAAMo6C,YAAY44yB,EAAKpqwB,EAAWxrE,EAAOwrE,IAEzD,OAAOoqwB,CACT,CAYcG,CAAsBvs2B,EAAKks2B,EAAYC,GAEjDns2B,EAAIws2B,cAAcJ,IAChBA,EAAIroc,eAAkBqoc,EAAIxoc,YAAY5ja,EAAIi2U,aAC5CuwT,OAAO11gB,KAAK13G,MAAMo6C,YAAY44yB,EAAK,mBAAoB,WACjDA,EAAIroc,gBAAkB/ja,EAAIi2U,aAC5Bj2U,EAAIk2U,UAAUk2hB,EAAIroc,cAEtB,GAEA,IAAIjjY,EACF0lmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYxzD,EAAK,iBAAkB,WACnDos2B,EAAIxoc,YAAY5ja,EAAIi2U,aACpBuwT,OAAO11gB,KAAK13G,MAAMy4C,eAAe/wB,EACnC,EACJ,EAEF,EAQF,EACAmr0B,EAAmBp5uB,QAAU,CAAC,kBAAmB,SAEjDsQ,QAAQx0C,OAAO,SAASklC,UAAU,qBAAsBo4uB,EACzD,CAjED,GAkFA,WACE,aAEA9ouB,QAAQx0C,OAAO,SAASklC,UAAU,eAAgB,CAChD,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAUb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GAKzB41Q,EArBO,SAAS/uY,EAAS25B,GAC/B,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAK27uB,aAAa5v2B,GACzC,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAEzD,OAAO4pS,CACT,CAegB03B,CAJEv4U,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IACrCm1D,EAAOyie,UAAU53hB,EAAOm9T,IAIrC4ygB,EAActC,UAAU,gBAAiBz3d,GACzC+5d,EAAclC,kBAAkBC,EAAU1tuB,EAAO41Q,GACjDr4Y,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,gBAAiB53d,EAC9C,EACF,EAEJ,GACD,CArCD,GAsDA,WACE,aAEAzoQ,QAAQx0C,OAAO,SAASklC,UAAU,eAAgB,CAChD,kBAAmB,SAASivuB,GAC5B,IAAI/3wB,EAAS+3wB,EAUb,MAAO,CACL/guB,SAAU,IACVrtB,QAAS,CAAC,QAAQ,WAElB2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2vuB,GACpCA,EAAgBA,EAAc,IAAIA,EAAc,GAEhD,IAAIjC,EAAW34wB,EAAOo6wB,cAAc5x2B,GAChCw/V,EAAWhoQ,EAAO7sF,OAAO83H,GAKzB41Q,EArBO,SAAS/uY,EAAS25B,GAC/B,IAAIo1W,EAAQ,IAAI46P,OAAO11gB,KAAK47uB,aAAa7v2B,GACzC,IAAK,IAAImlG,KAAaxrE,EACpBgwmB,OAAO11gB,KAAK13G,MAAMo6C,YAAYo4U,EAAO5pS,EAAWxrE,EAAOwrE,IAEzD,OAAO4pS,CACT,CAegB03B,CAJEv4U,EAAOknO,WAAW8gC,EAAU,CAACn9T,MAAOA,IACrCm1D,EAAOyie,UAAU53hB,EAAOm9T,IAIrC4ygB,EAActC,UAAU,gBAAiBz3d,GACzC+5d,EAAclC,kBAAkBC,EAAU1tuB,EAAO41Q,GACjDr4Y,EAAQo1D,KAAK,WAAY,WACvBg9yB,EAAcnC,aAAa,gBAAiB53d,EAC9C,EACF,EAEJ,GACD,CArCD,GA6CA,WACE,aAEA,IAAI77G,EAAuB,kBACvB48kB,EAAkB,cAatBxpuB,QAAQx0C,OAAO,SAASzwF,OAAO,YAXT,WACpB,OAAO,SAASsC,GACd,OAAOA,EACLxP,QAAQ++R,EACN,SAASlhR,EAAG4tP,EAAWyM,EAAQr3Q,GAC7B,OAAOA,EAASq3Q,EAAOtpP,cAAgBspP,CAC3C,GACAl4Q,QAAQ272B,EAAiB,QAC7B,CACF,EAGD,CAlBD,GA0BA,WACE,aAUAxpuB,QAAQx0C,OAAO,SAASzwF,OAAO,eANN,WACvB,OAAO,SAASnN,GACjB,OAAOA,EAAOC,QAAQ,sBAAuB,OAC9C,CACA,EAGD,CAZD,GAoBA,WACE,aA0BAmyI,QAAQx0C,OAAO,SAASzwF,OAAO,UAxBX,WAClB,OAAO,SAASwhB,GACd,IAEE,OADA9I,KAAKyuB,MAAM3lB,GACJA,CACT,CAAE,MAAMztB,GACN,OAAOytB,EAEJ1uB,QAAQ,iBACP,SAAS6d,EAAGkpH,GACV,MAAO,IAAIA,EAAG,IAChB,GAGD/mI,QAAQ,aACP,SAAS6d,EAAGkpH,GACV,MAAO,IAAIA,EAAG,GAChB,GAED/mI,QAAQ,MAAO,KACpB,CACF,CACF,EAGD,CA5BD,GAqCA,WACE,aAGA,IAAI472B,UACF,oEAEE9J,gBAAkB,SAClB5ilB,OAAQxlJ,SAAUs/I,KAAMgG,aAAc2mlB,qBAAsBkG,SAC5DC,gBAAiBC,cAAel/oB,cAGlC,IAAIq1oB,gBAAkBljlB,aAAaqC,cAC/B8glB,cAAgBnjlB,aAAasC,YAQ7B6ilB,cAAgB,SAAS36zB,GAC1BA,EAAGnpC,OAAS,IAAOmpC,EAAKA,EAAG,IAE5B,IADA,IAAI26zB,EAAgB,CAAC,EACZ7y2B,EAAE,EAAGA,EAAEk4C,EAAGtoC,WAAWb,OAAQ/O,IAAK,CACzC,IAAIkyQ,EAAOh6N,EAAGtoC,WAAW5P,GACzB6y2B,EAAc3gmB,EAAKhkQ,MAAQgkQ,EAAK5xQ,KAClC,CACA,OAAOuy2B,CACT,EAEI6H,QAAU,SAAS992B,GAKrB,OAHIA,EAAM+B,MADF,8CAEN/B,EAAQ,IAAIA,EAAM,KAEb0nB,KAAKyuB,MAAM0n0B,cAAc792B,GAClC,EAEIopwB,UAAY,SAASppwB,GACvB,IAAI8/N,EAAS9/N,EACb,GAAIA,EAAM,GAAGwe,aAAenM,MAC1B,GAAKrS,EAAM,GAAG,GAAGwe,aAAenM,OAA+B,GAAtBrS,EAAM,GAAG,GAAGmS,QAAgBnS,EAAM,GAAG,GAAGwe,aAAe3W,OAAQ,CAGpG,IAFA,IAAIk22B,EACAC,EAAc,GACT562B,EAAI,EAAGA,EAAIpD,EAAMmS,OAAQ/O,IAC9B262B,EAAY/92B,EAAMoD,GAAG0N,IAAI,SAASwqC,GAC9B,OAAO,IAAIg8lB,OAAO11gB,KAAK4lG,OAAOlsL,EAAG,GAAIA,EAAG,GAC5C,GACA0i0B,EAAYns2B,KAAKks2B,GAErBj+oB,EAASk+oB,CACb,MACIl+oB,EAAS9/N,EAAM8Q,IAAI,SAASwqC,GACxB,OAAO,IAAIg8lB,OAAO11gB,KAAK4lG,OAAOlsL,EAAG,GAAIA,EAAG,GAC5C,QAEMx3C,MAAM4qB,WAAW1uB,EAAM,MAAQmuB,SAASnuB,EAAM,MACxD8/N,EAAS,IAAIw3a,OAAO11gB,KAAK4lG,OAAO1H,EAAO,GAAIA,EAAO,KAEpD,OAAOA,CACT,EAEI44oB,cAAgB,SAAS142B,MAAO2N,SAClC,IAAImyN,OACJ,IACEA,OAASm+oB,UAAUj+2B,MACrB,CAAE,MAAMymH,KACN,IACE,IAAIq5G,OAASg+oB,QAAQ992B,OACrB,GAAI8/N,kBAAkBztN,MAChBytN,OAAO,GAAGthN,aAAe3W,QAElBi4N,OAAO,aAAcztN,OAC1BytN,OAAO,GAAG,GAAGthN,aAAe3W,SAM9Bi4N,OAASspiB,UAAUtpiB,cAIpB,GAAIA,SAAWj4N,OAAOi4N,QAAS,CAElC,IAAIv8K,WAAa51C,QACjB41C,WAAW26zB,2BAA4B,EACvCp+oB,OAASijG,WAAWjjG,OAAQv8K,WAC9B,CACF,CAAE,MAAM46zB,MAEN,GAAIn+2B,MAAM+B,MAAM,6BACd,IACE,IAAI21F,IAAM,mBAAmB13F,MAC7B8/N,OAAS6+L,KAAKjnU,IAChB,CAAE,MAAM30F,GACN+8N,OAAS9/N,KACX,MAEK,GAAIA,MAAM+B,MAAM,mCACrB,IACE,IAAIiuC,QAAUhwC,MAAM+B,MAAM,mCAC1B+9N,OAASw3a,OAAO11gB,KAAK5xF,QAAQ,IAAIA,QAAQ,GAC3C,CAAE,MAAMjtC,GACN+8N,OAAS9/N,KACX,MAEK,GAAIA,MAAM+B,MAAM,YACrB,IACE,IAAIq82B,eAAiBzw2B,QAAQpF,IAAIkoB,OAAO,GAAGC,cACzC/iB,QAAQpF,IAAIsQ,MAAM,GAChBlL,QAAQpF,IAAIxG,MAAM,6CACpBq82B,eAAiBA,eAAet82B,QAAQ,KAAK,IAC7Cg+N,OAASw3a,OAAO11gB,KAAKy8uB,QAAQD,gBAAgBp+2B,QAE7C8/N,OAASw3a,OAAO11gB,KAAKw8uB,gBAAgBp+2B,MAEzC,CAAE,MAAM+C,GACN+8N,OAAS9/N,KACX,MAEK,GAAIA,MAAM+B,MAAM272B,WACrB,IACE59oB,OAAS,IAAIl5M,KAAK5mB,MACpB,CAAE,MAAM+C,GACN+8N,OAAS9/N,KACX,MAEG,GAAIA,MAAM+B,MAAM,IAAI8tC,OAAO,IAAM8uL,aAAaq1oB,oBAAsBrm2B,QAAQ+4B,MAC/E,IACE,IAAIyvQ,KAAOn2S,MAAM8B,QAAQ,IAAI+tC,OAAO8uL,aAAaq1oB,kBAAkB,IAAIly2B,QAAQ,IAAI+tC,OAAO8uL,aAAas1oB,eAAgB,KAAK,IAC5Hn0oB,OAASnyN,QAAQ+4B,MAAM2lG,MAAM8pK,KAC/B,CAAE,MAAO1vL,GACPq5G,OAAS9/N,KACX,MAEA8/N,OAAS9/N,KAEb,CACF,CAgBA,IAZkB,UAAf2N,QAAQpF,KAAkC,YAAfoF,QAAQpF,MACpCu3N,kBAAkBztN,QAElBytN,OAAS,IAAIw3a,OAAO11gB,KAAK4lG,OAAO1H,OAAO,GAAIA,OAAO,KAIjC,UAAfnyN,QAAQpF,KAAmBu3N,kBAAkBztN,QAC/CytN,OAAS,IAAIw3a,OAAO11gB,KAAKspsB,aAAaprmB,OAAO,GAAIA,OAAO,KAIvC,SAAfnyN,QAAQpF,KAAkBu3N,kBAAkBztN,MAE9C,IAAK,IAAIjP,EAAE,EAAGA,EAAE08N,OAAO3tN,OAAQ/O,IAAK,CAClC,IAAIk4C,GAAKwkL,OAAO18N,GACZk4C,GAAGk3U,KAAK5rS,KAAK7kF,MAAM,eACrBu5C,GAAGk3U,KAAK5rS,KAAQ0wjB,OAAO11gB,KAAK08uB,WAAWhj0B,GAAGk3U,KAAK5rS,MAEnD,CAIF,GAAmB,QAAfj5E,QAAQpF,KAAiBu3N,kBAAkBj4N,OAI7C,IAAK,IAAIU,OAHJ,GAAGu3N,OAAOl5I,MAAM7kF,MAAM,eACzB+9N,OAAOl5I,KAAO0wjB,OAAO11gB,KAAK08uB,WAAWx+oB,OAAOl5I,OAE9Bk5I,OAAQ,CACtB,IAAInrL,IAAMmrL,OAAOv3N,KACN,UAAPA,KAA0B,UAAPA,KAA0B,eAAPA,IACxCu3N,OAAOv3N,KAAO,IAAI+uoB,OAAO11gB,KAAK+iG,MAAMhwL,IAAI,GAAIA,IAAI,IAChC,QAAPpsC,KAAwB,cAAPA,MAC1Bu3N,OAAOv3N,KAAO,IAAI+uoB,OAAO11gB,KAAKwkC,KAAKzxH,IAAI,GAAIA,IAAI,IAEnD,CAGF,OAAOmrL,MACT,EAEI60oB,kBAAoB,SAAS7tuB,GAC/B,IAAI4tuB,EAAiB,GACjBc,EAAa,IAAI3l0B,OAAO8uL,aAAaq1oB,iBAAmB,KAAOr1oB,aAAas1oB,eAAgB,KAEhG,IAAKntuB,EAAM2tuB,UACT,IAAK,IAAIrouB,KAAYtF,EAAO,CAC1B,IAAIy3uB,EAAYz3uB,EAAMsF,GAClBmyuB,GAAaA,EAAUx82B,MAAMyz2B,IAC/Bd,EAAe7i2B,KAAK+r2B,gBAAgBxxuB,GAExC,CAGF,OAAOsouB,CACT,EAQI1l2B,OAAS,SAAS83H,GACpB,IAAIn5H,EAAU,CAAC,EACf,IAAI,IAAIpF,KAAOu+H,EACTv+H,EAAIxG,MAAM,QAAUwG,EAAIxG,MAAM,cAGhC4L,EAAQpF,GAAOu+H,EAAMv+H,IAGzB,OAAOoF,CACT,EAiBIo1T,WAAa,SAASj8L,EAAO5oE,GAC/BA,EAASA,GAAU,CAAC,EACpB,IAAIvwD,EAAU,CAAC,EACf,IAAI,IAAIpF,KAAOu+H,EACb,GAAIA,EAAMv+H,IAAuB,IAAfu+H,EAAMv+H,GAAY,CAClC,GAAIA,EAAIxG,MAAM,YACZ,SACK,GAAIwG,EAAIxG,MAAM,mBACnB,SAI0B,iBAAf+kI,EAAMv+H,IAGX21D,EAAOggzB,2BACTp3uB,EAAMv+H,GAAKxG,MAAM,YAHnB4L,EAAQpF,GAAOu+H,EAAMv+H,GAOnBoF,EAAQpF,GAAOmw2B,cAAc5xuB,EAAMv+H,GAAM,CAACA,IAAKA,EAAKm+B,MAAOw3B,EAAOx3B,OAI1E,CAEF,OAAO/4B,CACT,EASI2wjB,UAAY,SAAS53hB,EAAOogG,GAC9B,IAAIx/F,EAAS,CAAC,EACVk30B,EAAkB,SAAS31uB,GAC7B,MAAO,IAAIA,EAAG1iI,aAChB,EACIs42B,EAAY,SAASF,GAEvB,IAAIvu0B,EAAUuu0B,EAAUx82B,MAAM,wBAC1B282B,EAAW1u0B,EAAQ,GACnB2u0B,EAAU3u0B,EAAQ,GAAGluC,QAAQ,aAAa,IAC1C882B,EAAW5tlB,OAAO,IAAI2tlB,EAAQ,KAClC,OAAO,SAASz01B,GACd,IAAI9X,EAAOws2B,EAASl40B,GAEhBjnB,EAAIi/1B,EAASz/2B,MAAM,KAAKoJ,OAD5B,SAAegoB,EAAIjtB,GAAI,OAAOitB,EAAIjtB,EAAG,EACKsjC,GAC1CjnB,GAAKA,EAAEZ,MAAMd,KAAM,CAACmM,GAAOne,OAAOqG,IAClCo5H,SAAU,WACR9kG,EAAMqlG,QACR,EACF,CACF,EAEA,IAAI,IAAIxjI,KAAOu+H,EACb,GAAIA,EAAMv+H,GAAM,CACd,IAAKA,EAAIxG,MAAM,YACb,SAIF,IAAI+wG,EAAYvqG,EAAIzG,QAAQ,MAAM,IAElCgxG,GADAA,EAAYA,EAAUriF,OAAO,GAAGtqB,cAAgB2sG,EAAUj6F,MAAM,IAC1C/W,QAAQ,WAAY082B,GAE1C,IAAID,EAAYz3uB,EAAMv+H,GACtB++B,EAAOwrE,GAAa,IAAI2rwB,EAAUF,EACpC,CAEF,OAAOj30B,CACT,EAQI8t0B,kBAAoB,SAASvxgB,GAC/B,IAAI8rI,EAAiB,CAAC,EACtB,GAAuB,iBAAZ9rI,EACT,OAAO,EAGT,IAAK,IAAIvuF,KAAQuuF,EACf,GAAIA,EAASvuF,GAAO,CAClB,IAAKA,EAAKvzQ,MAAM,uBACd,SAIF,IACIyqI,EADWq3N,EAASvuF,GACAxzQ,QAAQ,KAAM,KACtC0qI,EAAWA,EAAS1qI,QAAQ,qBAAsB,SAASqkL,EAAIt9C,EAAIkU,GACjE,OAAIlU,EACKA,EAAG/mI,QAAQ,oBAAqB,SAEhCi7I,CAEX,GACA,IACE,IAAIpvI,EAAU+Z,KAAKyuB,MAAMq2F,GACzB,IAAK,IAAIjkI,KAAOoF,EACd,GAAIA,EAAQpF,GAAM,CAChB,IAAI7E,EAAQiK,EAAQpF,GAapB,GAZqB,iBAAV7E,EACTA,EAAQA,EAAMgtB,cACG,eAARnoB,IACT7E,EAAQA,EAAMoN,IAAK,SAAS0f,GAC1B,OAAIA,EAAIzuB,MAAM,YACLu1oB,OAAO11gB,KAAKi9uB,UAAUru1B,EAAIE,eAE1BF,CAEX,IAGU,UAARjoB,EAAiB,CACnB,IACIu22B,GADMxpmB,EAAK7kP,OAAO,GAAGC,cAAgB4kP,EAAKz8P,MAAM,IAClC/W,QAAQ,WAAW,IAAI,QACzC6L,EAAQpF,GAAO+uoB,OAAO11gB,KAAKk9uB,GAASp72B,EACtC,MACEiK,EAAQpF,GADS,aAARA,EACM+uoB,OAAO11gB,KAAKs3gB,gBAAgBx1oB,GAE5BA,CAEnB,CAEFise,EAAer6N,GAAQ3nQ,CACzB,CAAE,MAAO5K,GAET,CACF,CAGF,OAAO4se,CACT,EAEA,MAAO,CACL3ge,OACA+zT,WACAu7P,UACA82S,kBACAsD,cACA/D,kBACAsB,cAGJ,EACArC,gBAAgBjwuB,QAAS,CACvB,SAAU,WAAY,OAAQ,eAAgB,uBAAwB,WACtE,kBAAmB,gBAAiB,sBAGtCsQ,QAAQx0C,OAAO,SAAS4qC,QAAQ,kBAAmBupuB,gBACpD,CAxYD,GAiZA,WACE,aACA,IAAI1zuB,EAaA6+uB,EAAc,SAASpx2B,GACzB,IAAI06G,EAAW6X,EAAGjZ,QASlB,OARe,IAAIqwhB,OAAO11gB,KAAKo9uB,UACtBC,QAAQtx2B,EAAS,SAAUkwN,EAAS3yF,GACvCA,GAAUosgB,OAAO11gB,KAAKs9uB,eAAehH,GACvC7vvB,EAAS1zG,QAAQkpN,GAEjBx1G,EAASlpG,OAAO+rH,EAEpB,GACO7iB,EAAS+X,OAClB,EAEIu9uB,EAAW,SAASwB,GAEtB,OADAj/uB,EAAKi/uB,EACE,CACLF,QAAUF,EAEd,EACApB,EAASh6uB,QAAU,CAAC,MAEpBsQ,QAAQx0C,OAAO,SAAS4qC,QAAQ,WAAYszuB,EAC7C,CArCD,GA6CA,WACE,aACA,IAAIz9uB,EACAsL,EAEA4zuB,EAAgB,SAASD,EAAMjI,GAIjC,OAHAh3uB,EAAKi/uB,EACL3zuB,EAAW0ruB,EAEJ,CAWLnwoB,KAAM,SAAUq0oB,GAEd,IAAI/yvB,EAAW6X,EAAGjZ,QAElB,QAAsBpyG,IAAlB3P,OAAOoyoB,aAA+CzioB,IAAvB3P,OAAOoyoB,OAAO11gB,KAAoB,CAEnE18H,OAAOq22B,iBAAmB,WACxB/vuB,EAAS,WACPnjB,EAAS1zG,QAAQzP,OAAOoyoB,OAC1B,EAAG,IACL,EAEA,IAAIkkO,EAAWh12B,SAASskB,cAAc,UACtC0w1B,EAASp2vB,IAAMg2vB,GACZA,EAAQ902B,QAAQ,MAAQ,EAAI,IAAM,KACnC,4BAEGE,SAAS8U,cAAc,eAAiBkg2B,EAASp2vB,IAAM,OAC1D5+G,SAASiF,KAAKyiG,YAAYstwB,EAE9B,MACEnzvB,EAAS1zG,QAAQzP,OAAOoyoB,QAG1B,OAAOjvhB,EAAS+X,OAClB,EAGJ,EACAg/uB,EAAcz7uB,QAAU,CAAC,KAAM,YAE/BsQ,QAAQx0C,OAAO,SAAS4qC,QAAQ,gBAAiB+0uB,EAClD,CApDD,GAgEA,WACE,aACA,IAAIl/uB,EAoBAq9sB,EAAqB,SAASo4B,GAChC,IAAIttvB,EAAW6X,EAAGjZ,QAsBlB,OArBI56G,UAAUgx0B,kBAEexo0B,IAAvB8g2B,EACFA,EAAqB,CAAEj6xB,QAAS,UAEM7mE,IAA/B8g2B,EAAmBj6xB,UAC1Bi6xB,EAAmBj6xB,QAAU,KAG/BrvE,UAAUgx0B,YAAYE,mBACpB,SAAS120B,GACPwhH,EAAS1zG,QAAQ9N,EACnB,EAAG,SAASgzC,GAEVwuE,EAASlpG,OAAO06B,EAClB,EACA87zB,IAGFttvB,EAASlpG,OAAO,uCAEXkpG,EAAS+X,OAClB,EAEIq3uB,EAAuB,SAAS0H,GAElC,OADAj/uB,EAAKi/uB,EACE,CACL5hC,mBAAoBA,EAExB,EACAk6B,EAAqB9zuB,QAAU,CAAC,MAEhCsQ,QAAQx0C,OAAO,SACb4qC,QAAQ,uBAAwBotuB,EACnC,CA1DD,GAkEA,WACE,aAKA,IACI7puB,EAASrD,EAAWiB,EADpB6zuB,EAAe,GAkDflK,EAAiB,SAAS75zB,GAC5B,IAAIxqC,EAtCS,SAASwqC,EAAIx/B,GAE1B,IADA,IAAIwj2B,EACKl82B,EAAE,EAAGA,EAAEi82B,EAAalt2B,OAAQ/O,IAAK,CACxC,IAAI0N,EAAMuu2B,EAAaj82B,GACvB,GAAI0N,EAAIgL,IAAMA,IAAOhL,EAAIyu2B,MAAO,CAC9B,IAAIC,EAAS1u2B,EAAI2u2B,SACjBnk0B,EAAG4yD,YAAYsxwB,GACfF,EAAcxu2B,EACd,KACF,CACF,CACA,OAAOwu2B,CACT,CA0BYvyK,CAASzxpB,EAAIA,EAAGx/B,KAxBX,SAASw/B,GAExB,IADA,IAAIgk0B,EACKl82B,EAAE,EAAGA,EAAEi82B,EAAalt2B,OAAQ/O,IAAK,CACxC,IAAI0N,EAAMuu2B,EAAaj82B,GACvB,IAAI0N,EAAIgL,KAGHhL,EAAIyu2B,MAAO,CACd,IAAIC,EAAS1u2B,EAAI2u2B,SACjBnk0B,EAAG4yD,YAAYsxwB,GACfF,EAAcxu2B,EACd,KACF,CACF,CACA,OAAOwu2B,CACT,CASmCI,CAAWpk0B,GAU5C,OATKxqC,EAIH06H,EAAS,WACP8rgB,OAAO11gB,KAAK13G,MAAMg5C,QAAQpyD,EAAK,OACjC,EAAG,KALHA,EAlDM,SAASwqC,GACjB,IAAIkk0B,EAASj1uB,EAAUz/G,cAAc,OACrC001B,EAAO/30B,MAAMhjC,MAAQ,OACrB+62B,EAAO/30B,MAAM9iC,OAAS,OACtB22C,EAAG4yD,YAAYsxwB,GACf,IAAI1u2B,EAAM,IAAI88H,EAAQ0pgB,OAAO11gB,KAAK7wH,IAAIyu2B,EAAQ,CAAC,GAE/C,OADAH,EAAaxt2B,KAAKf,GACXA,CACT,CA0CUO,CAAIiqC,GAOZxqC,EAAIyu2B,OAAQ,EACLzu2B,CACT,EASIwl2B,EAAoB,SAASxl2B,GAC/BA,EAAIyu2B,OAAQ,CACd,EAOII,EAAoB,WACtB,IAAI,IAAIv82B,EAAI,EAAEA,EAAIi82B,EAAalt2B,OAAO/O,IAClCi82B,EAAaj82B,GAAK,KAEtBi82B,EAAe,EACjB,EAOIO,EAAmB,SAASxJ,GAC/B,IAAK,IAAIhz2B,EAAE,EAAGA,EAAEi82B,EAAalt2B,OAAQ/O,IACX,OAApBi82B,EAAaj82B,IAAiBi82B,EAAaj82B,GAAG0Y,IAAMs61B,IACxDiJ,EAAaj82B,GAAI,KACjBi82B,EAAav00B,OAAQ1nC,EAAG,GAG3B,EAEI2w2B,EAAY,SAAS8L,EAAaC,EAAW5I,GAG/C,OAFA3suB,EAAYs1uB,EAAY,GAAIjyuB,EAAUkyuB,EAAWt0uB,EAAW0ruB,EAErD,CACRmI,aAAcA,EACXM,kBAAmBA,EACnBxK,eAAgBA,EAChBmB,kBAAmBA,EACnBsJ,kBAAmBA,EAEvB,EAEA7L,EAAUpwuB,QAAU,CAAE,YAAa,UAAW,YAE9CsQ,QAAQx0C,OAAO,SAASn9F,QAAQ,YAAayx2B,EAE9C,CA3HD,GAmIA,WACE,aACA,IAAInmuB,EAASrD,EAAWrK,EACpBu3uB,EAAsB7D,EAAiB+J,EAAUC,EAAiB7J,EAElEgM,EAAiB,CAAC,EAElBvk0B,EAAW,SAASF,EAAI0k0B,GAC1B,IAAIt+2B,EAQJ,OAPI45C,EAAG+4xB,aACL3y0B,EAAI45C,EAAG+4xB,aAAa2rC,GACXpyuB,EAAQxnI,mBACjB1E,EAAI6oI,EAAUtlI,YACZmB,iBAAiBk1C,EAAI,MACrBC,iBAAiByk0B,IAEdt+2B,CACT,EAOIu+2B,EAAU,SAASnk2B,GACrB,IAAI4wH,EAAOqzuB,EAAejk2B,GAAM,GAChC,KAAM4wH,EAAK57H,eAAewmoB,OAAO11gB,KAAK7wH,KAEpC,OADA27H,EAAKuouB,gBACEvouB,EAAK57H,GAIhB,EAQI6n2B,EAAS,SAAS781B,EAAInO,GACxBA,EAAUA,GAAW,CAAC,EACtBmO,EAAmB,iBAAPA,EAAkBA,EAAGA,GAAKA,EAEtC,IAAIusG,EAAW6X,EAAGjZ,QACdvrC,EAAU/tE,EAAQ+tE,SAAW,IAmBjC,OAjBA,SAASwkyB,EAAWC,GAClB,IAAI/32B,EAAOP,OAAOO,KAAK232B,GACnBK,EAAqBL,EAAe332B,EAAK,IAC1C0T,GAAMik2B,EAAejk2B,GACtBusG,EAAS1zG,QAAQor2B,EAAejk2B,GAAIhL,MAC1BgL,GAAMsk2B,GAAsBA,EAAmBtv2B,IACzDu3G,EAAS1zG,QAAQyr2B,EAAmBtv2B,KAC3Bqv2B,EAAczkyB,EACvB2sC,EAASlpG,OAAO,sBAEhByuH,EAAQpoH,WAAY,WAClB061B,EAAWC,EAAY,IACzB,EAAG,IAEP,CACAD,CAAW,GAEJ73vB,EAAS+X,OAClB,EAQI21uB,EAAS,SAASsK,GACpB,GAAIA,EAAQvv2B,IAAK,CACf,IAAItD,EAAM3F,OAAOO,KAAK232B,GAAgB5t2B,OACtC4t2B,EAAeM,EAAQvv2B,IAAIgL,IAAMtO,GAAO6y2B,CAC1C,CACF,EAOI9J,EAAY,SAAS8J,GACvB,IAAI7y2B,EAAM3F,OAAOO,KAAK232B,GAAgB5t2B,OAAS,EAC3Cik2B,EAAQiK,EAAQvv2B,IAAIgL,IAAMtO,EAC9B,GAAI6y2B,EAAQvv2B,IAAK,CACf,IAAK,IAAIgiG,KAAautwB,EAAQluc,eAAgB,CAE5C,IAAIvgY,EAAWyu0B,EAAQluc,eAAer/T,GACtCwkiB,OAAO11gB,KAAK13G,MAAMy4C,eAAe/wB,EACnC,CACIyu0B,EAAQvv2B,IAAI2tM,UACd4hqB,EAAQvv2B,IAAI2tM,SAAS1uM,QAAQ,SAAS28H,GACpCA,EAAK5zD,OACP,EAEJ,CAGIunyB,EAAQvv2B,IAAIwv2B,eACdz42B,OAAOO,KAAKi42B,EAAQvv2B,IAAIwv2B,eAAevw2B,QAAQ,SAAU2sY,GACvD2je,EAAQ/L,aAAa,gBAAiB+L,EAAQvv2B,IAAIwv2B,cAAc5je,GAClE,GAGFq3d,EAAU6L,kBAAkBxJ,UAErB2J,EAAe3J,EACxB,EASIV,EAAiB,SAAS7z2B,EAAQ8L,GACpC,IAAI06G,EAAW6X,EAAGjZ,QAgClB,OA/BKplH,GAAUA,EAAOE,MAAM,aAC1B012B,EAAqBl6B,mBAAmB5v0B,GAASiH,KAC/C,SAAS/N,GACP,IAAI64I,EAAM74I,EAASs1M,OAAOuhoB,SACtBp2mB,EAAMzgO,EAASs1M,OAAOwhoB,UACtBj4f,EAAS,IAAI4xT,OAAO11gB,KAAK4lG,OAAO9nF,EAAI4nF,GACxCj/G,EAAS1zG,QAAQ+wU,EACnB,EACA,SAAS19T,GACPqgG,EAASlpG,OAAO6I,EAClB,GAGF211B,EAASsB,QAAQ,CAACh/oB,QAASp+N,IAAS+S,KAClC,SAASipN,GACPx1G,EAAS1zG,QAAQkpN,EAAQ,GAAGjiB,SAAS50G,SACvC,EACA,SAASh/E,GACPqgG,EAASlpG,OAAO6I,EAClB,GAYGqgG,EAAS+X,OAClB,EASIw0uB,EAAgB,SAASxouB,EAAU/iF,GAErC,OAAO,SAAS3jB,GACd,GAAIA,EAAK,CACP,IAAI660B,EAAY3C,EAAgB,OAAOxxuB,GACnCqsuB,EAAc7E,EAAgB8E,cAAchz0B,EAAK,CAACn9B,IAAK6jI,IACvD/iF,EAAOk3zB,KAGLn0uB,EAASrqI,MAAM,oBACK,iBAAf022B,EACP/C,EAAe+C,GAAa7j2B,KAAK,SAASo0vB,GACxC3/sB,EAAOk3zB,GAAWv3G,EACpB,GAEA3/sB,EAAOk3zB,GAAW9H,GAGxB,CACF,CACF,EAQI90xB,EAAW,SAASroC,GAGF,QADDA,EAAGz/B,aAAa,kBAEjCy/B,EAAG7T,MAAM8yB,QAAU,QACnBjf,EAAG7T,MAAM9iC,OAAS,UAEa,SAA3B62C,EAASF,EAAI,aACfA,EAAG7T,MAAM8yB,QAAU,SAEjB/e,EAASF,EAAI,UAAUv5C,MAAM,eAC/Bu5C,EAAG7T,MAAM9iC,OAAS,SAGxB,EAEAsvI,QAAQx0C,OAAO,SAASilC,SAAS,QAAS,WACxC,IAAI9xH,EAAiB,CAAC,EAetBmL,KAAKyi2B,kBAAoB,SAAS7y2B,GAChCiF,EAAiBjF,CACnB,EAEA,IAAI61Q,EAAQ,SACRs8lB,EAAWD,EAAaV,EACxB/G,EAAwBtE,EACxB2M,EAAYC,EAAmBC,GAWjC,OATA/yuB,EAAUkyuB,EACVv1uB,EAAYs1uB,EAAY,GACxB3/uB,EAAKi/uB,EACL1H,EAAuBW,EACvBxE,EAAkBE,EAClB6J,EAAW8C,EACX7C,EAAkB8C,EAClB3M,EAAY4M,EAEL,CACL/t2B,eAAgBA,EAChBmj2B,OAAQA,EACRQ,UAAWA,EACXoC,OAAQA,EACRsH,QAASA,EACTt8xB,SAAUA,EACV+xxB,eAAgBA,EAChBd,cAAeA,EAEnB,EACApxlB,EAAM7/I,QAAU,CACd,UAAW,YAAa,KACxB,uBAAwB,kBACxB,WAAY,kBAAmB,aAGjC5lH,KAAK4jG,KAAO6hK,CACd,EACD,CApQD,GA8QA,WACE,aACA,IAAItjJ,EAcA0gvB,EAAc,SAAS9v2B,EAAKk4vB,GAC9BA,EAASA,GAAUl4vB,EAAIi2U,YACvB,IAAI1+N,EAAW6X,EAAGjZ,QAclB,OAbU,IAAIqwhB,OAAO11gB,KAAKi/uB,mBACtBC,sBAAwB93G,GAAQl4vB,EAAIi2U,UAAY,IAClD,SAAUjzU,EAAMo3H,GAEVA,IAAWosgB,OAAO11gB,KAAKm/uB,iBAAiB7I,GAC1C7vvB,EAAS1zG,QAAQb,EAAKkzF,SAASg6wB,MAG/B34vB,EAAS1zG,SAAQ,EAGrB,GAEK0zG,EAAS+X,OAClB,EAUI6gvB,EAAc,SAASnw2B,EAAKow2B,GACpB,IAAI5pO,OAAO11gB,KAAKu7uB,mBACxBrs2B,EAAI2u2B,SAAU,CAAC0B,mBAAmB,IAEhCC,QAAQF,EACd,EAEIG,EAAa,SAASlC,GAGxB,OAFAj/uB,EAAKi/uB,EAEE,CACLyB,YAAaA,EACbK,YAAaA,EAEjB,EACAI,EAAW19uB,QAAU,CAAC,MAEtBsQ,QAAQx0C,OAAO,SAAS4qC,QAAQ,aAAcg3uB,EAC/C,CA7DD,GA+DO,OACP,EAt3GA5hxB,OAAOj9F,QAAUF,QAAQ,oBAAQ,M,kBCFjC,IAGIi7oB,EAHO,EAAQ,MAGG,sBAEtB99iB,EAAOj9F,QAAU+6oB,C,YCJjB,IAAI59iB,EAAc93F,OAAOsW,UAgBzBshF,EAAOj9F,QAPP,SAAqBkB,GACnB,IAAIs5N,EAAOt5N,GAASA,EAAM8a,YAG1B,OAAO9a,KAFqB,mBAARs5N,GAAsBA,EAAK7+M,WAAcwhF,EAG/D,C,kBCfA,IAIIwrG,EAJY,EAAQ,MAIT0sV,CAHJ,EAAQ,MAGY,YAE/Bp4b,EAAOj9F,QAAU2oM,C,+BCJjBtjM,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAQ8+2B,kBAAoB9+2B,EAAQ++2B,wCAA0C/+2B,EAAQg/2B,kBAAe3s2B,EAErG,IAEI4s2B,EAAiBvrvB,EAFA,EAAQ,QAMzBwrvB,EAA4CxrvB,EAFA,EAAQ,QAMpDyrvB,EAAsBzrvB,EAFA,EAAQ,QAIlC,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CAE9F7tB,EAAQg/2B,aAAeC,EAAelhxB,QACtC/9F,EAAQ++2B,wCAA0CG,EAA0CnhxB,QAC5F/9F,EAAQ8+2B,kBAAoBK,EAAoBphxB,O,yBCfhD,IAAI8juB,EAA6C,WAC7C,SAASA,EAA4Bu9C,GACjC7j2B,KAAK6j2B,oBAAsBA,EAI3B,IAAI/wuB,EAAc+wuB,GAAoD,aAA7BA,EAAoB7z1B,KACvD,KACA,IAAIynT,sBAAsBosiB,GAChC/52B,OAAO0hC,iBAAiBxrB,KAAM,CAC1B2ozB,aAAc,CACV90zB,IAAK,WACD,OAAOi/H,CACX,IAGZ,CAeA,OAdAhpI,OAAOwY,eAAegkzB,EAA4BlmzB,UAAW,MAAO,CAChEvM,IAAK,WACD,OAAOmM,KAAK2ozB,aAAe3ozB,KAAK2ozB,aAAa/8lB,IAAM5rN,KAAK6j2B,oBAAoBj4oB,GAChF,EACAlgM,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAegkzB,EAA4BlmzB,UAAW,OAAQ,CACjEvM,IAAK,WACD,OAAOmM,KAAK2ozB,aAAe3ozB,KAAK2ozB,aAAa34yB,KAAOhQ,KAAK6j2B,oBAAoB7z1B,IACjF,EACA0b,YAAY,EACZuL,cAAc,IAEXqvxB,CACX,CAhCgD,GAiChD5kuB,EAAOj9F,QAAU6h0B,C,kBCzCjB,IAAIx/S,EAAW,EAAQ,OACnB4G,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAC5B3G,EAAW,EAAQ,OACnB2gM,EAAY,EAAQ,OACpBj2R,EAAa,EAAQ,OAkEzBhwV,EAAOj9F,QApDP,SAAkB4vB,EAAOurM,EAAU4+B,GACjC,IAAIhoP,GAAS,EACTm/B,EAAW+3e,EACXt5gB,EAASigB,EAAMjgB,OACfi2pB,GAAW,EACXl3pB,EAAS,GACT60I,EAAO70I,EAEX,GAAIqrP,EACF6ra,GAAW,EACX10nB,EAAWg4e,OAER,GAAIv5gB,GAvBY,IAuBgB,CACnC,IAAIL,EAAM6rN,EAAW,KAAO+nf,EAAUtzrB,GACtC,GAAItgB,EACF,OAAO29a,EAAW39a,GAEpBs2pB,GAAW,EACX10nB,EAAWqxe,EACXh/X,EAAO,IAAI8+X,CACb,MAEE9+X,EAAO43E,EAAW,GAAKzsN,EAEzB+2E,EACA,OAAS1zE,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdmtN,EAAW/D,EAAWA,EAASj6N,GAASA,EAG5C,GADAA,EAAS64P,GAAwB,IAAV74P,EAAeA,EAAQ,EAC1C0kqB,GAAY1mc,GAAaA,EAAU,CAErC,IADA,IAAImgpB,EAAY97tB,EAAK5zI,OACd0v2B,KACL,GAAI97tB,EAAK87tB,KAAengpB,EACtB,SAASz5I,EAGT01I,GACF53E,EAAKl0I,KAAK6vN,GAEZxwN,EAAOW,KAAKnO,EACd,MACUgwC,EAASqyG,EAAM27E,EAAU66B,KAC7Bx2G,IAAS70I,GACX60I,EAAKl0I,KAAK6vN,GAEZxwN,EAAOW,KAAKnO,GAEhB,CACA,OAAOwN,CACT,C,yBC5DQ,SAAWtS,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGC,MACxG,KAEJC,YACI,iEAAiED,MAC7D,KAERghI,kBAAkB,EAClB9gI,SAAU,iDAAiDF,MAAM,KACjEG,cAAe,8CAA8CH,MAAM,KACnEI,YAAa,yBAAyBJ,MAAM,KAC5CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVC,cAAe,wBACfC,KAAM,SAAUC,GACZ,MAAiB,eAAVA,CACX,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,aAEA,YAEf,EACAG,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNC,EAAG,eACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,YACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SACJo2B,EAAG,YACHi/H,GAAI,aACJp1J,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,UAMf,CArEyCW,CAAQ,EAAQ,O,+BCL1D,IAAI0lP,EAAY,EAAQ,OACpBlkI,EAAoB,EAAQ,OAIhCrkB,EAAOj9F,QAAU,SAAU+1B,EAAGtZ,GAC5B,IAAIwzF,EAAOl6E,EAAEtZ,GACb,OAAO6kG,EAAkBrR,QAAQ59F,EAAYmzO,EAAUv1I,EACzD,C,wBCAQ,SAAW7zG,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHC,MACvH,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,sEAAsEF,MAClE,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNC,EAAG,qBACHC,GAAI,cACJC,EAAG,SACHC,GAAI,aACJC,EAAG,SACHC,GAAI,aACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER7B,cAAe,mCACfI,SAAU,SAAUipM,EAAOC,EAAS/oM,GAChC,OAAI8oM,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,SAEf,EACA3qF,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,YAAbD,EACOC,EACa,UAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAbD,GAA0C,YAAbA,EACvB,IAATC,EACO,EAEJA,EAAO,QAJX,CAMX,EACA8B,uBAAwB,UACxBC,QAAS,KACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxFyCC,CAAQ,EAAQ,O,yICCtDm1N,EAAY,CAMd37M,GAAI,QAGJkwF,KAAM,WAGNzjE,QAAS,SAGT8rB,MAAO,SAAeu+D,WAGtB7mE,SAAU,SASV+1zB,UAAW,IAGXC,SAAU,WAGVC,kBAAmB,SAOnB3rhB,eAAgB,WAGhBxlO,SAAU,WAGVI,QAAS,WAGTngG,KAAM,YAYJmx1B,EAA8B,aAAiB,SAAU942B,EAAMynH,GACjE,IAAIv8D,EAAQlrD,EAAKkrD,MACbkhE,EAAWpsH,EAAKosH,SAChB1E,EAAW1nH,EAAK0nH,SAChBwlO,EAAiBltV,EAAKktV,eACtBplO,EAAU9nH,EAAK8nH,QACfngG,EAAO3nB,EAAK2nB,KACZgx1B,EAAY342B,EAAK242B,UACjBC,EAAW542B,EAAK442B,SAChBC,EAAoB742B,EAAK642B,kBACzBj2zB,EAAW5iD,EAAK4iD,SAChBigD,EAAO7iG,EAAK6iG,KACZlwF,EAAK3S,EAAK2S,GACVq0B,GAAQ,OAA8BhnC,EAAM,CAAC,QAAS,WAAY,WAAY,iBAAkB,UAAW,OAAQ,YAAa,WAAY,oBAAqB,WAAY,OAAQ,OAEzL,OAAoB,gBAAoB,KAAU,OAAS,CACzDynH,IAAKA,GACJzgF,GAAqB,gBAAoB,IAAgB,CAC1Dr0B,GAAIA,EACJkwF,KAAMA,EACNl7E,KAAMA,EACNmgG,QAASA,EACTllE,SAAUA,EACVm2zB,cAAerxvB,GACdx8D,GAAqB,gBAAoB,IAAc,CACxD5mC,MAAOq01B,EACPzl2B,KAAM0l2B,EACNI,cAAeH,EACf3rhB,eAAgBA,GACf9gO,GACL,GACA0svB,EAAe77qB,YAAc,iBAC7B67qB,EAAexqpB,UAAYA,EAC3B,S,kBCrGA,IAAImnb,EAAe,EAAQ,OACvBj0W,EAAW,EAAQ,OAevBlrM,EAAOj9F,QALP,SAAmB6mD,EAAQ9gD,GACzB,IAAI7E,EAAQinS,EAASthP,EAAQ9gD,GAC7B,OAAOq2oB,EAAal7oB,GAASA,OAAQmR,CACvC,C,yBCLQ,SAAWjW,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,qCCL1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEA4C,EAAe,sBACfih2B,EAA4C,mDAO5C1vG,EAA6C,SAAU3wvB,GAMvD,SAAS2wvB,EAA4B1uwB,GACjC,IAAIie,EAAQF,EAAO3D,KAAKL,OAASA,KA4CjC,OA3CAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bog2B,mBAAoB,CAChB3+2B,MAAO,KACP8lC,UAAU,GAEd840B,sBAAuB,CACnB5+2B,MAAO,KACP8lC,UAAU,GAEdrmB,KAAM,CACFzf,MAAOM,GAEXu+2B,eAAgB,CACZ7+2B,MAAO,KACP8lC,UAAU,GAEdg50B,OAAQ,CACJ9+2B,MAAO,KACP8lC,UAAU,KAGlBvnB,EAAMymG,GAAG,MAAO,SAAU53E,GACtB7uB,EAAMog2B,mBAAqBz71B,KAAKC,MAChC5E,EAAMqg2B,sBAAwB171B,KAAKC,MACnC5E,EAAMsg2B,eAAiBzx0B,EACvB7uB,EAAMug2B,OAAS,GACfvg2B,EAAMwg2B,aAAa,MAAOxg2B,EAAMyg2B,gBACpC,GACAzg2B,EAAMymG,GAAG,SAAU,WACf,IAAI50G,EAAOmO,EAAMyg2B,gBACjBzg2B,EAAMog2B,mBAAqB,KAC3Bpg2B,EAAMqg2B,sBAAwB,KAC9Brg2B,EAAMsg2B,eAAiB,KACvBtg2B,EAAMug2B,OAAS,KACfvg2B,EAAMwg2B,aAAa,SAAU3u2B,EACjC,GACAmO,EAAMymG,GAAG,QAAS,WACdzmG,EAAMwg2B,aAAa,QAASxg2B,EAAMyg2B,gBACtC,GACAzg2B,EAAMymG,GAAG,OAAQ,SAAUva,GACvBlsF,EAAMwg2B,aAAa,OAAQ562B,OAAOC,OAAO,CAAEqmG,QAASA,GAAWlsF,EAAMyg2B,iBACzE,GACAzg2B,EAAMymG,GAAG,QAAS,WAAc,OAAOzmG,EAAM0g2B,iBAAmB,GACzD1g2B,CACX,CA0EA,OA7HAnE,EAAU40vB,EAA6B3wvB,GAuDvC2wvB,EAA4Bv0vB,UAAUuk2B,cAAgB,WAClD,IAAK3k2B,KAAKwk2B,eACN,MAAO,CAAC,EAEZ,IAAIhh2B,EAAKxD,KAAKwk2B,eAAgBpnnB,EAAY55O,EAAG45O,UACzCrnP,EAAO,CAAEsgwB,cAD2D7yvB,EAAG6yvB,cAChCC,aAD8D9yvB,EAAG8yvB,aACrCC,eADoE/yvB,EAAG+yvB,eACvCC,mBAD4EhzvB,EAAGgzvB,mBACvChB,qBADkFhyvB,EAAGgyvB,qBACzCU,6BAD8F1yvB,EAAG0yvB,8BAe5R,OAbAngwB,EAAKxC,KAAO6pP,EAAU+3J,OAAS,iBAC/B,CAAC,aAAc,mBAAoB,WAAY,UAAW,gBAAiB,iBAAkB,WAAY,WAAWnjZ,QAAQ,SAAUsgC,GAClI,IAAI3K,EAAMy1N,EAAU,IAAM9qN,QACP,IAAR3K,IACP5xB,EAAKu8B,GAAQ3K,EAErB,GACA79B,OAAOO,KAAK0L,GAAM/D,QAAQ,SAAUsgC,GAChC,IAAI3K,EAAM5xB,EAAKu8B,GACI,kBAAR3K,IACP5xB,EAAKu8B,GAAQ3K,EAAM,OAAS,QAEpC,GACO5xB,CACX,EAMA4+vB,EAA4Bv0vB,UAAUwk2B,gBAAkB,WACpD,GAAK5k2B,KAAKyk2B,QAAWzk2B,KAAKwk2B,eAA1B,CAGA,IAAIziK,EAAY/hsB,KAAKwk2B,eAAepnnB,UAAUynnB,WAC9C,GAAK9iK,EAAL,CAGA,IAAIj5rB,EAAMD,KAAKC,MACf,KAAIA,EAAM9I,KAAKsk2B,mBAAqB,KAApC,CAGA,IAAI1yzB,EAAQ,CAAEkzzB,gBAAiB/iK,EAAUk1D,QAAQ,yBAMjD,GALA,CAAC,oBAAqB,wBAAyB,wBAAyB,oBAAqB,qBAAqBjlwB,QAAQ,SAAUuB,GAChIq+C,EAAMr+C,GAAQwusB,EAAU+0D,gBAAgBvjwB,EAC5C,GACAyM,KAAKsk2B,mBAAqBx71B,EAC1B9I,KAAKyk2B,OAAO3w2B,KAAK89C,KACb9oC,EAAM9I,KAAKuk2B,sBAAwBF,GAAvC,CAGArk2B,KAAKuk2B,sBAAwBz71B,EAC7B,IACIi81B,EADQ/k2B,KAAKyk2B,OAAO130B,OAAO,GACVziC,OAAO,SAAUy62B,EAAUlv2B,EAASgL,GAOrD,OANA/W,OAAOO,KAAKunD,GAAO5/C,QAAQ,SAAUuB,GAC5Bwx2B,EAASxx2B,KACVwx2B,EAASxx2B,GAAQ,GAErBwx2B,EAASxx2B,IAAUwx2B,EAASxx2B,GAAQsN,EAAKhL,EAAQtC,KAAUsN,EAAI,EACnE,GACOkk2B,CACX,EAAG,CAAC,GACJj72B,OAAOO,KAAK062B,GAAU/y2B,QAAQ,SAAUuB,GACpCwx2B,EAASxx2B,GAAQod,WAAWo01B,EAASxx2B,GAAMwqI,QAAQ,GACvD,GACA/9H,KAAK0k2B,aAAa,QAAS562B,OAAOC,OAAO,CAAC,EAAGg72B,EAAU/k2B,KAAK2k2B,iBAf5D,CATA,CAJA,CAJA,CAiCJ,EAIAhwG,EAA4Bv0vB,UAAUsk2B,aAAe,SAAUnx2B,EAAMwC,GACjEiK,KAAKoF,KAAKkC,MAAM,kBAAoB/T,EAAMwC,GAC1CiK,KAAK6K,KAAK,QAAS,CAAEtX,KAAMA,EAAMwC,KAAMA,GAC3C,EACO4+vB,CACX,CA/HgD,CA+H9CvxvB,GACFs+E,EAAOj9F,QAAUkwwB,C,gBCxJjB,IAAIqwG,EAAY,IACZC,EAAgB,SACpB,SAASC,EAAgB/h3B,GACvB,OAAQA,GACN,IAAK,KAAM,MAAO,IAClB,IAAK,KAAM,MAAO,IAEpB,MAAM,IAAIokB,MAAM,yBAA2BpkB,EAC7C,CAEA,SAASgi3B,EAAS1y1B,GAChB,OAAKuy1B,EAAU9i3B,KAAKuwB,GACbA,EAAI1uB,QAAQkh3B,EAAeC,GADDzy1B,CAEnC,CAmCA,SAAS2y1B,EAAgB3td,GACvB,GAAuB,iBAAZA,EAAsB,CAE/B,GAAmB,MADnBA,EAAUA,EAAQv2Z,MAAM,MACZ,GAAW,OAAOu2Z,EAC9B,MAAM,IAAIlwY,MAAM,wBAClB,CAAO,GAAIjT,MAAMyb,QAAQ0nY,GAAU,CACjC,IAAK,MAAMpvR,KAAQovR,EACjB,GAAoB,iBAATpvR,GAAqC,iBAATA,EACrC,MAAM,IAAI9gH,MAAM,2DAGpB,OAAOkwY,CACT,CAEA,MAAM,IAAIlwY,MAAM,wBAClB,CAEA,SAAS1T,EAAKye,EAAKmlY,GACjB,GAAmB,iBAARnlY,EAAkB,MAAM,IAAI/K,MAAM,yBAE7C,IAAI9X,GADJgoZ,EAAU2td,EAAe3td,IACPrjZ,OAClB,GAAY,IAAR3E,EAAW,OAAO6iB,EAEtB,IAAK,IAAInS,EAAI,EAAGA,EAAI1Q,GAAM,CAExB,GADA6iB,EAAMA,EAAI6y1B,EAAQ1td,EAAQt3Y,OACtB1Q,IAAQ0Q,EAAG,OAAOmS,EACtB,GAAmB,iBAARA,GAA4B,OAARA,EAAc,MAC/C,CACF,CAEA,SAASve,EAAKue,EAAKmlY,EAAS9xZ,GAC1B,GAAmB,iBAAR2sB,EAAkB,MAAM,IAAI/K,MAAM,yBAE7C,GAAuB,KADvBkwY,EAAU2td,EAAe3td,IACbrjZ,OAAc,MAAM,IAAImT,MAAM,iCAC1C,OAnEF,SAAiB+K,EAAKmlY,EAAS9xZ,GAI7B,IAHA,IAAI0iI,EACAg9uB,EAEKll2B,EAAI,EAAG1Q,EAAMgoZ,EAAQrjZ,OAAQ+L,EAAI1Q,GAAM,CAC9C,GAAmB,gBAAfgoZ,EAAQt3Y,IAAuC,cAAfs3Y,EAAQt3Y,IAAqC,cAAfs3Y,EAAQt3Y,GAAoB,OAAOmS,EAkBrG,GAhBA+1G,EAAO88uB,EAAQ1td,EAAQt3Y,MACvBkl2B,EAAc512B,EAAM0Q,OAEK,IAAdmS,EAAI+1G,KAET/zH,MAAMyb,QAAQuC,IAAiB,MAAT+1G,IACxBA,EAAO/1G,EAAIle,QAITix2B,IACkB,KAAf5td,EAAQt3Y,IAAas3Y,EAAQt3Y,GAAK5a,KAA4B,MAAfkyZ,EAAQt3Y,GAAYmS,EAAI+1G,GAAQ,GAC/E/1G,EAAI+1G,GAAQ,CAAC,KAIjBg9uB,EAAa,MAClB/y1B,EAAMA,EAAI+1G,EACZ,CAEA,IAAIk5J,EAAWjvQ,EAAI+1G,GAGnB,YAFcvxH,IAAVnR,SAA4B2sB,EAAI+1G,GAC/B/1G,EAAI+1G,GAAQ1iI,EACV47R,CACT,CAoCSoxB,CAAOrgS,EAAKmlY,EAAS9xZ,EAC9B,CAcAlB,EAAQoP,IAAMA,EACdpP,EAAQsP,IAAMA,EACdtP,EAAQ++G,QAdR,SAAkBi0S,GAChB,IAAI98H,EAAWyqlB,EAAe3td,GAC9B,MAAO,CACL5jZ,IAAK,SAAUy3C,GACb,OAAOz3C,EAAIy3C,EAAQqvO,EACrB,EACA5mR,IAAK,SAAUu3C,EAAQ3lD,GACrB,OAAOoO,EAAIu3C,EAAQqvO,EAAUh1R,EAC/B,EAEJ,C,+BC/FamE,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,QAAgS,SAAa6g3B,EAAa112B,GAAS,OAAO,WAAqB,OAAsB,IAAnBuE,UAAUC,QAAkB,EAAGmx2B,EAAyC,SAAGD,EAAa112B,GAASkR,WAAM,EAAO3M,YAAiB,EAAGqx2B,EAAoC,SAAGF,GAAcxk2B,WAAM,EAAO3M,UAAU,CAAC,EAA3iB,IAAIox2B,EAAgCptvB,EAAuB,EAAQ,QAAyCqtvB,EAA2BrtvB,EAAuB,EAAQ,QAAgC,SAASA,EAAuB7lG,GAAK,OAAOA,GAAKA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,EAAI,C,aCOrX,IAAS1R,EAAE5b,EAAF4b,EAE00GzZ,OAFx0GnC,EAE+0GyD,SAF5vG9G,EAAE8j3B,YAAY,QAAQ9j3B,EAAE+j3B,KAAK,CAAC,EAAE/j3B,EAAEgk3B,UAAU,CAAC5j0B,KAAK,CAACimU,QAAQ,CAACipV,QAAQ,CAAC36oB,MAAM,iBAAiBxmB,KAAK,UAAU83M,OAAO,CAACtxL,MAAM,iBAAiBxmB,KAAK,UAAU810B,KAAK,CAACtvzB,MAAM,0BAA0BxmB,KAAK,qBAAqBi2Z,QAAQ,CAAC6/T,SAAS,kBAAkBtmjB,QAAQ,iBAAiBgtpB,UAAU,mBAAmBp5oB,OAAO,gBAAgByhQ,OAAO,gBAAgBkxZ,aAAa,wBAAwB9yT,SAAS,CAAC7/V,OAAO,CAAC78J,QAAQ,CAAC5pD,MAAM,kCAAkCshC,OAAO,UAAU830B,aAAa,CAACxvzB,QAAQ,CAAC5pD,MAAM,sCAAsCkod,OAAO,CAACt+Z,QAAQ,CAAC5pD,MAAM,+BAA+B6yM,QAAQ,CAACjpJ,QAAQ,CAAC5pD,MAAM,gCAAgCq52B,KAAK,mCAAmCp52B,IAAI,2CAA2Ck5vB,SAAS,CAAC37uB,MAAM,oDAAoDosC,QAAQ,CAAC5pD,MAAM,+BAA+Bq52B,KAAK,kCAAkCp52B,IAAI,qCAAqC4/1B,UAAU,CAACj2yB,QAAQ,CAAC5pD,MAAM,sCAAsCs52B,YAAY,CAAC1vzB,QAAQ,CAAC3pD,IAAI,uCAAuCwsX,KAAK,CAAClR,QAAQ,CAACipV,QAAQ,CAACxkqB,KAAK,CAAC6pB,MAAM,eAAexmB,KAAK,QAAQ6S,OAAO,CAAC2T,MAAM,uCAAuCxmB,KAAK,UAAUgqtB,SAAS,CAACxjsB,MAAM,mBAAmBxmB,KAAK,cAAci2Z,QAAQ,CAAC7sE,KAAK,cAAc8sf,aAAa,oBAAoBpj0B,OAAO,gBAAgBqj0B,eAAe,wBAAwBlzT,SAAS,CAAC75L,KAAK,CAAC7iU,QAAQ,CAACvmB,KAAK,4CAA4Co20B,QAAQ,kCAAkCtj0B,OAAO,CAACyT,QAAQ,CAACvmB,KAAK,qCAAqCnuC,EAAE+j3B,KAAK/mW,MAAM,CAAC,EAAEh9gB,EAAE+j3B,KAAK/mW,MAAMwnW,QAAQ,eAAexk3B,EAAE+j3B,KAAK/mW,MAAMynW,OAAO,cAAczk3B,EAAE+j3B,KAAK/mW,MAAM0nW,QAAQ,eAAe1k3B,EAAE+j3B,KAAK/mW,MAAM2nW,UAAU,iBAAiB3k3B,EAAE+j3B,KAAK/mW,MAAM4nW,SAAS,gBAAgB5k3B,EAAE+j3B,KAAK/mW,MAAM6nW,WAAW,kBAAkB7k3B,EAAE+j3B,KAAK/mW,MAAM8nW,UAAU,iBAAiB9k3B,EAAE+j3B,KAAK/mW,MAAM+nW,SAAS,gBAAgB/k3B,EAAE+j3B,KAAK/mW,MAAMgoW,WAAW,kBAAkBhl3B,EAAE+j3B,KAAK/mW,MAAMioW,WAAW,kBAAkBjl3B,EAAE+j3B,KAAK/mW,MAAMkoW,SAAS,gBAAgBll3B,EAAE+j3B,KAAK/mW,MAAMmoW,YAAY,mBAAmBnl3B,EAAE+j3B,KAAK/mW,MAAMooW,WAAW,kBAAkBpl3B,EAAE+j3B,KAAK/mW,MAAMqoW,cAAc,qBAAqBrl3B,EAAE+j3B,KAAK/mW,MAAMsoW,cAAc,qBAAqBtl3B,EAAE+j3B,KAAK/mW,MAAMuoW,cAAc,qBAAqBvl3B,EAAE+j3B,KAAK/j3B,EAAE+j3B,MAAM,CAAC,EAAE/j3B,EAAE+j3B,KAAK94X,QAAQjrf,EAAEip1B,QAAQ5nuB,OAAO,CAACz5D,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAK4xY,KAAKhxY,EAAEZ,KAAKqjkB,WAAWzikB,EAAEyikB,WAAWrjkB,KAAKmn2B,aAAavm2B,EAAEu/zB,OAAO2mB,YAAY9m1B,KAAKon2B,WAAWxm2B,EAAEu/zB,OAAOknC,UAAUri3B,GAAGA,EAAE452B,eAAe552B,EAAE452B,aAAaj92B,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQgv2B,aAAa552B,EAAE452B,eAAej92B,EAAE2T,WAAW0K,KAAKhb,GAAG,IAAIK,EAAE1D,EAAEkjF,QAAQ3jF,MAAM,KAAK,IAAIilC,SAAS9gC,EAAE,GAAG,KAAK8gC,SAAS9gC,EAAE,GAAG,KAAK,EAAE1D,EAAE+j3B,KAAK94X,QAAQhqK,QAAQjhV,EAAE6oH,QAAQpqG,WAAWze,EAAE+j3B,KAAK94X,QAAQhqK,QAAQjhV,EAAEiq0B,MAAMxxX,OAAO,EAAErsV,OAAO,WAAW/tG,KAAK4/Y,WAAWj+Z,EAAEip1B,QAAQxq0B,UAAU2tG,OAAO1tG,KAAKL,MAAMA,KAAKw1Z,KAAK,UAAU,CAACt3W,QAAQl+C,KAAKgQ,OAAOhQ,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM2nW,UAAU,CAACj9hB,UAAUrpU,KAAKgQ,OAAO,EAAE89F,QAAQ,WAAW9tG,KAAK4/Y,WAAWj+Z,EAAEip1B,QAAQxq0B,UAAU0tG,QAAQztG,KAAKL,MAAMA,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM4nW,SAAS,CAACl9hB,UAAUrpU,KAAKgQ,OAAOhQ,KAAKw1Z,KAAK,WAAW,CAACt3W,QAAQl+C,KAAKgQ,OAAO,EAAE66zB,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAK4xY,KAAKhxY,IAAIjf,EAAE2hlB,QAAQuyP,uBAAuBj1zB,EAAEm/Z,eAAe/uU,QAAQhxF,KAAKu80B,SAAS,IAAI561B,EAAE+j3B,KAAK1zxB,QAAQhyE,KAAK4xY,MAAMjwZ,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,QAAQrjkB,KAAKsn2B,eAAetn2B,MAAM,EAAE8q0B,YAAY,WAAW9q0B,KAAK4xY,OAAOjwZ,EAAE2hlB,QAAQwyP,sBAAsB91zB,KAAKu80B,SAASx4uB,UAAU/jG,KAAKu80B,SAAS,KAAK561B,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,QAAQrjkB,KAAKsn2B,eAAetn2B,MAAM,EAAE1K,WAAW,SAASsL,GAAGjf,EAAE2T,WAAW0K,KAAKY,EAAE,EAAE2m2B,kBAAkB,SAAS3m2B,GAAGZ,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMwnW,QAAQ,CAACxne,MAAM/9X,EAAEyoU,UAAUrpU,KAAKgQ,MAAM,EAAEs31B,eAAe,SAAS1m2B,GAAG,KAAKA,EAAEg3S,UAAU53S,KAAK4xY,KAAK4jB,KAAK,gBAAgB,CAACnsF,UAAUrpU,KAAKgQ,OAAOhQ,KAAK8tG,UAAU,IAAInsH,EAAE+j3B,KAAKrwB,SAAS1z1B,EAAE+j3B,KAAK94X,QAAQ5pY,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,YAAYipP,KAAK7l3B,EAAE0z1B,SAASzl1B,QAAQ,CAAC632B,mBAAkB,EAAGC,YAAW,EAAGC,UAAU,CAAC3g1B,MAAM,UAAU22C,QAAQ,MAAM82S,KAAK,IAAI9yX,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,EAAE,GAAG98G,UAAU,0CAA0C89vB,UAAU,IAAIjm3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,GAAG,IAAI98G,UAAU,6DAA6D+9vB,kBAAkB,GAAGC,mBAAmB,IAAIlJ,aAAa,CAACjw0B,QAAO,EAAG3H,MAAM,UAAUC,OAAO,EAAExpB,QAAQ,GAAGgxB,MAAK,EAAG23tB,WAAU,GAAI8iF,QAAO,EAAGnsoB,MAAK,EAAGgrqB,QAAO,EAAGC,YAAW,EAAGx+G,aAAa,IAAIzmtB,OAAO,EAAEkl0B,UAAU,GAAG1+zB,WAAW,SAAS3oC,EAAE5b,GAAGrD,EAAEmrR,QAAQ0xN,QAAQx+d,KAAKpQ,QAAQ6kX,KAAKz0W,KAAKpQ,QAAQg42B,WAAW5n2B,KAAKpQ,QAAQ+32B,UAAUv3wB,QAAQzuG,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS6yM,SAAS37uB,MAAMjlB,GAAGA,EAAE2i3B,YAAY3i3B,EAAE2i3B,UAAUhm3B,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQ+32B,UAAU3i3B,EAAE2i3B,YAAY3n2B,KAAKgQ,KAAKruB,EAAE+j3B,KAAKrwB,SAAS92N,KAAK58nB,EAAE+j3B,KAAK94X,QAAQxse,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAE6l1B,SAAS,WAAWlp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAUyq0B,SAASxq0B,KAAKL,MAAMA,KAAK4xY,OAAO5xY,KAAKko2B,SAAS,GAAGlo2B,KAAKmo2B,aAAa,IAAIxm3B,EAAE6t1B,WAAWxv0B,KAAK4xY,KAAKixB,SAAS7ia,KAAKmo2B,cAAcno2B,KAAKoo2B,MAAM,IAAIzm3B,EAAE0z1B,SAAS,GAAGr10B,KAAKpQ,QAAQgv2B,cAAc5+1B,KAAKu80B,SAAS8rB,cAAcro2B,KAAKso2B,mBAAmBto2B,KAAKuo2B,eAAevo2B,KAAKuo2B,aAAa5m3B,EAAEgzd,OAAO30c,KAAK4xY,KAAK5oE,YAAY,CAACyrC,KAAK9yX,EAAE2owB,QAAQ,CAACxgpB,UAAU,uBAAuB0muB,WAAW,CAAC,GAAG,IAAIjmF,SAAS,CAAC,GAAG,MAAM9svB,QAAQ,EAAE+rvB,aAAaxpvB,KAAKpQ,QAAQ45vB,gBAAgBxpvB,KAAKuo2B,aAAa59vB,GAAG,WAAW3qG,KAAKwo2B,YAAYxo2B,MAAM2qG,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAG,YAAY3qG,KAAKgn1B,aAAahn1B,MAAM2qG,GAAG,UAAU3qG,KAAKon1B,WAAWpn1B,MAAMwnvB,MAAMxnvB,KAAK4xY,MAAM5xY,KAAK4xY,KAAKjnS,GAAG,UAAU3qG,KAAKon1B,WAAWpn1B,MAAM2qG,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAG,mBAAmB3qG,KAAK8j1B,WAAW9j1B,MAAM2qG,GAAG,aAAa3qG,KAAKyo2B,SAASzo2B,MAAM2qG,GAAG,UAAU3qG,KAAK8j1B,WAAW9j1B,MAAM,EAAE8q0B,YAAY,WAAWnp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAU0q0B,YAAYzq0B,KAAKL,MAAMA,KAAK0o2B,yBAAyB1o2B,KAAK2o2B,gBAAgB3o2B,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKmo2B,qBAAqBno2B,KAAKmo2B,oBAAoBno2B,KAAKko2B,SAASlo2B,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKoo2B,cAAcpo2B,KAAKoo2B,MAAMpo2B,KAAKuo2B,aAAat7uB,IAAI,YAAYjtH,KAAKgn1B,aAAahn1B,MAAMitH,IAAI,WAAWjtH,KAAKwo2B,YAAYxo2B,MAAMitH,IAAI,UAAUjtH,KAAKon1B,WAAWpn1B,MAAMitH,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMA,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKuo2B,qBAAqBvo2B,KAAKuo2B,aAAavo2B,KAAK4o2B,eAAe5o2B,KAAK4xY,KAAK3kR,IAAI,UAAUjtH,KAAKon1B,WAAWpn1B,MAAMitH,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMitH,IAAI,mBAAmBjtH,KAAK8j1B,WAAW9j1B,MAAMitH,IAAI,UAAUjtH,KAAK8j1B,WAAW9j1B,MAAMitH,IAAI,aAAajtH,KAAKyo2B,SAASzo2B,MAAMitH,IAAI,QAAQjtH,KAAKyo2B,SAASzo2B,KAAK,EAAE6o2B,iBAAiB,WAAW,KAAK7o2B,KAAKko2B,SAAS9z2B,QAAQ,GAAG,CAAC,IAAIwM,EAAEZ,KAAKko2B,SAAS7l2B,MAAMrd,EAAEgb,KAAKoo2B,MAAM/i3B,EAAEL,EAAEyw1B,aAAa9xwB,EAAEt+E,EAAE0nC,QAAQ,EAAE,GAAG,GAAG/sB,KAAKoo2B,MAAM97G,WAAWjnwB,GAAG2a,KAAKmo2B,aAAargH,YAAYlnvB,GAAG5b,EAAEyw1B,aAAarh1B,OAAO,GAAG4L,KAAK4xY,KAAKk2W,YAAY9iwB,GAAGgb,KAAK8o2B,eAAenlyB,GAAE,EAAG,CAAC,EAAEolyB,UAAU,SAASno2B,GAAMZ,KAAKko2B,SAAS9z2B,QAAQ,IAAI4L,KAAKpQ,QAAQ632B,mBAAmBzn2B,KAAKoo2B,MAAMY,oBAAoBpo2B,GAAeZ,KAAKip2B,qBAAoBjp2B,KAAKkp2B,aAAalp2B,KAAKmp2B,oBAAoBnp2B,KAAKko2B,SAASp02B,KAAKkM,KAAKop2B,cAAcxo2B,IAAIZ,KAAKoo2B,MAAMtyB,UAAUl10B,GAAG,IAAIZ,KAAKoo2B,MAAM3yB,aAAarh1B,QAAQ4L,KAAK4xY,KAAKixB,SAAS7ia,KAAKoo2B,OAAOpo2B,KAAK8o2B,eAAelo2B,GAAE,GAAG,EAAEyo2B,cAAc,WAAWrp2B,KAAKko2B,SAAS9z2B,QAAQ,IAAI4L,KAAKsp2B,kBAAkBtp2B,KAAKun2B,oBAAoBvn2B,KAAK8tG,UAAU9tG,KAAKpQ,QAAQ832B,YAAY1n2B,KAAK+tG,SAAS,EAAEw7vB,aAAa,WAAW,IAAI3o2B,EAAEZ,KAAKoo2B,MAAMvyB,cAAc710B,KAAKoo2B,MAAMvyB,gBAAgB710B,KAAKoo2B,MAAM3yB,aAAazw1B,EAAEgb,KAAKoo2B,MAAMY,oBAAoBpo2B,EAAEA,EAAExM,OAAO,KAAQ4L,KAAKpQ,QAAQ632B,mBAAmBzi3B,IAAIgb,KAAKsp2B,gBAA4Btp2B,KAAKip2B,qBAAoBjp2B,KAAKun2B,oBAAoBvn2B,KAAK8tG,UAAU9tG,KAAKpQ,QAAQ832B,YAAY1n2B,KAAK+tG,SAAQ,EAAEu7vB,cAAc,WAAW,OAAM,CAAE,EAAExlB,WAAW,WAAW,OAAO9j1B,KAAKko2B,UAAUlo2B,KAAKwp2B,cAAc,EAAEnlB,aAAa,SAASzj1B,GAAG,IAAI5b,EAAEgb,KAAK4xY,KAAKiwb,uBAAuBjh0B,EAAEk7gB,eAAez2hB,EAAE2a,KAAK4xY,KAAK4ub,mBAAmBx70B,GAAGgb,KAAKyp2B,eAAepk3B,EAAE2a,KAAK0p2B,eAAerk3B,GAAG2a,KAAKwp2B,aAAaxk3B,GAAGgb,KAAKuo2B,aAAan+G,UAAU/kwB,GAAG1D,EAAEgjlB,SAASh4c,eAAe/rH,EAAEk7gB,cAAc,EAAEgtV,eAAe,SAASlo2B,EAAE5b,GAAGgb,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM6nW,WAAW,CAAC7lyB,OAAO3gE,KAAKmo2B,eAAeno2B,KAAK2p2B,uBAAuB3p2B,KAAK4p2B,sBAAsBhp2B,EAAE5b,GAAGgb,KAAK4o2B,eAAe5o2B,KAAK0p2B,gBAAgB,EAAE1iB,aAAa,SAASpm1B,GAAG,IAAIZ,KAAK6p2B,gBAAgB7p2B,KAAK8p2B,gBAAgB9p2B,KAAK+p2B,gBAAgB,CAAC/p2B,KAAKqk1B,aAAazj1B,GAAGZ,KAAK6p2B,eAAc,EAAG7p2B,KAAKgq2B,qBAAqB,IAAIhl3B,EAAE4b,EAAEk7gB,cAAcz2hB,EAAEL,EAAEy3C,QAAQknC,EAAE3+E,EAAE03C,QAAQ18B,KAAKyr0B,YAAYpr0B,KAAKL,KAAK3a,EAAEs+E,EAAE,CAAC,EAAE8nwB,YAAY,SAAS7q0B,EAAE5b,GAAGgb,KAAKiq2B,iBAAiBto3B,EAAEktC,MAAMjuB,EAAE5b,EAAE,EAAEoi2B,WAAW,SAASxm1B,GAAG,IAAI5b,EAAE4b,EAAEk7gB,cAAcz2hB,EAAEL,EAAEy3C,QAAQknC,EAAE3+E,EAAE03C,QAAQ18B,KAAKkq2B,UAAU7p2B,KAAKL,KAAK3a,EAAEs+E,EAAE/iE,GAAGZ,KAAK6p2B,cAAc,IAAI,EAAEK,UAAU,SAASll3B,EAAEK,EAAEs+E,GAAG,GAAG3jE,KAAKiq2B,iBAAiB,CAAC,IAAIrw2B,EAAEjY,EAAEktC,MAAM7pC,EAAEK,GAAG6o0B,WAAWluzB,KAAKiq2B,kBAAkBpp2B,EAAEb,KAAKmq2B,yBAAyBxmyB,EAAEsnrB,QAAQjrvB,KAAKpQ,QAAQq42B,UAAU,GAAGjo2B,KAAKpQ,QAAQq42B,WAAWjo2B,KAAKko2B,SAAS9z2B,OAAO,GAAG4L,KAAK+o2B,UAAUplyB,EAAEsnrB,QAAQjrvB,KAAKup2B,gBAAgB1o2B,EAAE,IAAIlf,EAAEmrR,QAAQ0xN,MAAMx+d,KAAKup2B,eAAe/j3B,KAAKM,IAAI8T,GAAG,GAAGgH,EAAEtV,kBAAkB,IAAI0U,KAAK+o2B,UAAUplyB,EAAEsnrB,QAAQjrvB,KAAKoq2B,mBAAmB,CAACpq2B,KAAKiq2B,iBAAiB,IAAI,EAAExB,SAAS,SAAS7n2B,GAAG,IAAI5b,EAAEK,EAAEs+E,EAAE/iE,EAAEk7gB,eAAen4c,EAAEvnC,UAAUunC,EAAEvnC,QAAQ,IAAIp8B,KAAK6p2B,eAAe7p2B,KAAK8p2B,eAAe9p2B,KAAK+p2B,kBAAkB/k3B,EAAE2+E,EAAEvnC,QAAQ,GAAGK,QAAQp3C,EAAEs+E,EAAEvnC,QAAQ,GAAGM,QAAQ18B,KAAKgq2B,qBAAqBhq2B,KAAK8p2B,eAAc,EAAG9p2B,KAAKyr0B,YAAYpr0B,KAAKL,KAAKhb,EAAEK,GAAG2a,KAAKkq2B,UAAU7p2B,KAAKL,KAAKhb,EAAEK,EAAEub,GAAGZ,KAAK8p2B,cAAc,MAAM9p2B,KAAK6p2B,cAAc,IAAI,EAAErB,YAAY,WAAWxo2B,KAAKu80B,UAAUv80B,KAAKu80B,SAASisB,YAAYno2B,KAAKL,KAAKu80B,SAAS,EAAE4tB,yBAAyB,SAASvp2B,GAAG,IAAI5b,EAAE,GAAGgb,KAAKko2B,SAAS9z2B,OAAO,EAAE,CAAC,IAAI/O,EAAE,GAAG2a,KAAKgQ,OAAOruB,EAAE+j3B,KAAKrwB,SAAS92N,KAAKl5nB,EAAE2a,KAAKko2B,SAASlo2B,KAAKko2B,SAAS9z2B,OAAO,OAAO,CAAC,GAAG4L,KAAKgQ,OAAOruB,EAAE+j3B,KAAK3ud,QAAQwnO,KAAK,OAAO,IAAIl5nB,EAAE2a,KAAKko2B,SAAS,EAAE,CAAC,IAAIvkyB,EAAE3jE,KAAK4xY,KAAKiqb,uBAAuBx20B,EAAEgmwB,aAAazxvB,EAAE,IAAIjY,EAAEww1B,OAAOvx0B,EAAE,CAAC6zW,KAAKz0W,KAAKpQ,QAAQ6kX,KAAK+0Y,aAAa,EAAExpvB,KAAKpQ,QAAQ45vB,eAAe3ovB,EAAEb,KAAK4xY,KAAKiqb,uBAAuBji0B,EAAEyxvB,aAAarmwB,EAAE2+E,EAAEuqvB,WAAWrtzB,EAAE,MAAM7b,EAAE,IAAI,OAAOA,CAAC,EAAE2k3B,qBAAqB,WAAW,IAAI/o2B,EAAEZ,KAAKko2B,SAAS9z2B,OAAOwM,EAAE,GAAGZ,KAAKko2B,SAAStn2B,EAAE,GAAG+pG,GAAG,QAAQ3qG,KAAKup2B,aAAavp2B,MAAMY,EAAE,GAAGZ,KAAKko2B,SAAStn2B,EAAE,GAAGqsH,IAAI,QAAQjtH,KAAKup2B,aAAavp2B,KAAK,EAAEop2B,cAAc,SAASxo2B,GAAG,IAAI5b,EAAE,IAAIrD,EAAEww1B,OAAOvx0B,EAAE,CAAC6zW,KAAKz0W,KAAKpQ,QAAQ6kX,KAAK+0Y,aAAa,EAAExpvB,KAAKpQ,QAAQ45vB,eAAe,OAAOxpvB,KAAKmo2B,aAAatlc,SAAS79a,GAAGA,CAAC,EAAEwk3B,aAAa,SAAS5o2B,GAAG,IAAI5b,EAAEgb,KAAKko2B,SAASlo2B,KAAKko2B,SAAS9z2B,OAAO,EAAEpP,EAAE,IAAI4b,EAAEA,GAAGZ,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKyp2B,gBAAgBzp2B,KAAK4o2B,eAAe5o2B,KAAKqq2B,WAAWrq2B,KAAK4xY,KAAK4vb,mBAAmBxh0B,KAAKko2B,SAASlj3B,EAAE,GAAGqmwB,aAAazqvB,GAAG,EAAE8o2B,eAAe,SAAS9o2B,GAAG,IAAI5b,EAAEgb,KAAKso2B,kBAAkB1n2B,GAAGZ,KAAKu80B,SAAS+tB,eAAe1p2B,GAAGZ,KAAKkp2B,aAAalp2B,KAAKu80B,SAAS8rB,cAAcrj3B,EAAE,EAAEql3B,WAAW,SAASzp2B,EAAE5b,GAAG,IAAIK,EAAEs+E,EAAE/pE,EAAEiH,EAAErb,KAAKQ,MAAMR,KAAK0vB,KAAK1vB,KAAKC,IAAIT,EAAEuB,EAAEqa,EAAEra,EAAE,GAAGf,KAAKC,IAAIT,EAAErB,EAAEid,EAAEjd,EAAE,KAAKV,EAAE+c,KAAKpQ,QAAQi42B,kBAAkB9t1B,EAAE/Z,KAAKpQ,QAAQk42B,mBAAmBtv1B,EAAE3X,EAAEkZ,EAAElZ,EAAEkZ,EAAE92B,EAAE,IAAI+c,KAAKuq2B,mBAAmBvq2B,KAAKuq2B,iBAAiB5o3B,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,sBAAsBV,KAAKmn2B,eAAe3u1B,EAAE3X,EAAE2X,GAAGxY,KAAKpQ,QAAQi42B,kBAAkBxi3B,EAAEmzB,EAAE3X,EAAE8iE,EAAE,CAACp9E,EAAEf,KAAKQ,MAAM4a,EAAEra,GAAG,EAAElB,GAAGA,EAAEL,EAAEuB,GAAG5C,EAAE6B,KAAKQ,MAAM4a,EAAEjd,GAAG,EAAE0B,GAAGA,EAAEL,EAAErB,KAAIiW,EAAEjY,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,0BAA0BV,KAAKuq2B,mBAAoB7g1B,MAAMV,gBAAgBhpB,KAAKkp2B,YAAYlp2B,KAAKpQ,QAAQ+32B,UAAU3g1B,MAAMhnB,KAAKpQ,QAAQgv2B,aAAa530B,MAAMrlC,EAAE2hlB,QAAQ3sK,YAAY/8Z,EAAE+pE,EAAE,EAAE6myB,kBAAkB,SAAS5p2B,GAAG,GAAGZ,KAAKuq2B,iBAAiB,IAAI,IAAIvl3B,EAAE,EAAEK,EAAE2a,KAAKuq2B,iBAAiBpgvB,WAAW/1H,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKuq2B,iBAAiBpgvB,WAAWnlI,GAAG0kC,MAAMV,gBAAgBpoB,CAAC,EAAEgo2B,aAAa,WAAW,GAAG5o2B,KAAKuq2B,iBAAiB,KAAKvq2B,KAAKuq2B,iBAAiB3hvB,YAAY5oH,KAAKuq2B,iBAAiBr6wB,YAAYlwF,KAAKuq2B,iBAAiB3hvB,WAAW,EAAE0/uB,gBAAgB,WAAW,IAAI1n2B,EAAE5b,EAAEK,EAAE2a,KAAKpQ,QAAQo42B,WAAW,OAAO,IAAIho2B,KAAKko2B,SAAS9z2B,OAAOwM,EAAE,CAACkvB,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS6yM,SAASvvsB,QAAQ5pD,QAAQzH,EAAEK,EAAE2a,KAAKyq2B,wBAAwB,GAAG7p2B,EAAE,IAAIZ,KAAKko2B,SAAS9z2B,OAAO,CAAC07B,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS6yM,SAASvvsB,QAAQyvzB,KAAKI,QAAQlh3B,GAAG,CAAC8qC,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS6yM,SAASvvsB,QAAQ3pD,IAAIw52B,QAAQlh3B,IAAI4b,CAAC,EAAEgp2B,sBAAsB,SAAShp2B,EAAE5b,GAAG,IAAIK,EAAEs+E,EAAE/pE,EAAEoG,KAAKko2B,SAAS9z2B,OAAO,IAAI4L,KAAKko2B,SAAS9z2B,OAAO4L,KAAK0q2B,yBAAyB,GAAGrl3B,EAAEuU,GAAG5U,EAAE,EAAE,GAAG2+E,EAAEhiF,EAAEgp3B,aAAaC,eAAehq2B,EAAEstzB,WAAWluzB,KAAKko2B,SAAS7i3B,GAAGgmwB,cAAcrrvB,KAAKpQ,QAAQmzC,QAAQ,GAAG/iC,KAAK4xY,KAAKr5Y,SAASqI,EAAEZ,KAAKko2B,SAAS7i3B,GAAGgmwB,cAAcrrvB,KAAKpQ,QAAQmzC,QAAQ,GAAG/iC,KAAK0q2B,0BAA0B/myB,GAAG3+E,EAAE,GAAG,GAAG,EAAEyl3B,sBAAsB,WAAW,IAAI7p2B,EAAE5b,EAAEgb,KAAKyp2B,eAAepk3B,EAAE2a,KAAKko2B,SAASlo2B,KAAKko2B,SAAS9z2B,OAAO,GAAGi3vB,YAAY,OAAOzqvB,EAAEjf,EAAEgp3B,aAAaC,eAAevl3B,GAAGL,GAAGA,EAAEkp0B,WAAWluzB,KAAK0q2B,yBAAyB1l3B,EAAEkp0B,WAAW7o0B,IAAI2a,KAAKpQ,QAAQmzC,QAAQ,GAAG/iC,KAAK0q2B,0BAA0B,EAAErl3B,GAAGL,EAAEgb,KAAK0q2B,yBAAyB1q2B,KAAK4xY,KAAKr5Y,SAASvT,EAAEK,IAAI2a,KAAKpQ,QAAQmzC,QAAQ,GAAG/iC,KAAK0q2B,0BAA0B,EAAE/o3B,EAAEgp3B,aAAaE,iBAAiBjq2B,EAAEZ,KAAKpQ,QAAQs50B,OAAOlp0B,KAAKpQ,QAAQmtM,KAAK/8L,KAAKpQ,QAAQm42B,OAAO/n2B,KAAKpQ,QAAQ4oF,UAAU,EAAEywxB,kBAAkB,WAAWjp2B,KAAKkp2B,aAAY,EAAGlp2B,KAAKu80B,SAASuuB,cAAczC,cAAc,CAACv40B,KAAK9vB,KAAKpQ,QAAQ+32B,UAAUv3wB,UAAUpwF,KAAKwq2B,kBAAkBxq2B,KAAKpQ,QAAQ+32B,UAAU3g1B,OAAOhnB,KAAKoo2B,MAAMxiyB,SAAS,CAAC5+C,MAAMhnB,KAAKpQ,QAAQ+32B,UAAU3g1B,QAAQhnB,KAAK0o2B,yBAAyB1o2B,KAAK+q2B,kBAAkBtj2B,WAAW9lB,EAAEwpa,KAAKzvW,KAAK17C,KAAKmp2B,kBAAkBnp2B,MAAMA,KAAKpQ,QAAQ+32B,UAAUhqyB,QAAQ,EAAEwryB,kBAAkB,WAAWnp2B,KAAKkp2B,aAAY,EAAGlp2B,KAAK0o2B,yBAAyB1o2B,KAAKu80B,SAASyuB,cAAc3C,cAAcro2B,KAAKso2B,mBAAmBto2B,KAAKwq2B,kBAAkBxq2B,KAAKpQ,QAAQgv2B,aAAa530B,OAAOhnB,KAAKoo2B,MAAMxiyB,SAAS,CAAC5+C,MAAMhnB,KAAKpQ,QAAQgv2B,aAAa530B,OAAO,EAAE0h1B,uBAAuB,WAAW1o2B,KAAK+q2B,oBAAoBpj2B,aAAa3H,KAAK+q2B,mBAAmB/q2B,KAAK+q2B,kBAAkB,KAAK,EAAEf,mBAAmB,WAAWhq2B,KAAK+p2B,iBAAgB,CAAE,EAAEK,kBAAkB,WAAW3i2B,WAAW,WAAWzH,KAAK+p2B,iBAAgB,CAAE,EAAEruzB,KAAK17C,MAAM,GAAG,EAAE2o2B,cAAc,WAAW3o2B,KAAKko2B,SAAS9z2B,OAAO,GAAG4L,KAAKko2B,SAASlo2B,KAAKko2B,SAAS9z2B,OAAO,GAAG64H,IAAI,QAAQjtH,KAAKup2B,aAAavp2B,KAAK,EAAEun2B,kBAAkB,WAAW,IAAI3m2B,EAAE,IAAIZ,KAAKwn2B,KAAKxn2B,KAAKoo2B,MAAM3yB,aAAaz10B,KAAKpQ,QAAQgv2B,cAAcj92B,EAAE+j3B,KAAK94X,QAAQxse,UAAUmn2B,kBAAkBln2B,KAAKL,KAAKY,EAAE,IAAIjf,EAAE+j3B,KAAK3ud,QAAQp1Z,EAAE+j3B,KAAKrwB,SAASryuB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,WAAWipP,KAAK7l3B,EAAEo1Z,QAAQnnZ,QAAQ,CAACq72B,UAAS,EAAGjD,YAAW,EAAGpJ,aAAa,CAACjw0B,QAAO,EAAG3H,MAAM,UAAUC,OAAO,EAAExpB,QAAQ,GAAGgxB,MAAK,EAAGi+b,UAAU,KAAKzrC,YAAY,GAAGmlU,WAAU,GAAI8iF,QAAO,EAAGnsoB,MAAK,EAAGgrqB,QAAO,EAAGvvxB,UAAU,CAAC,GAAGjvC,WAAW,SAAS3oC,EAAE5b,GAAGrD,EAAE+j3B,KAAKrwB,SAASj10B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,GAAGgb,KAAKgQ,KAAKruB,EAAE+j3B,KAAK3ud,QAAQwnO,IAAI,EAAEorP,qBAAqB,WAAW,IAAI/o2B,EAAEZ,KAAKko2B,SAAS9z2B,OAAO,IAAIwM,GAAGZ,KAAKko2B,SAAS,GAAGv9vB,GAAG,QAAQ3qG,KAAKup2B,aAAavp2B,MAAMY,EAAE,IAAIZ,KAAKko2B,SAAStn2B,EAAE,GAAG+pG,GAAG,WAAW3qG,KAAKup2B,aAAavp2B,MAAMY,EAAE,GAAGZ,KAAKko2B,SAAStn2B,EAAE,GAAGqsH,IAAI,WAAWjtH,KAAKup2B,aAAavp2B,MAAM,EAAEso2B,gBAAgB,WAAW,IAAI1n2B,EAAE5b,EAAE,OAAO,IAAIgb,KAAKko2B,SAAS9z2B,OAAOwM,EAAEjf,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASzzW,QAAQjpJ,QAAQ5pD,MAAMuT,KAAKko2B,SAAS9z2B,OAAO,GAAGwM,EAAEjf,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASzzW,QAAQjpJ,QAAQyvzB,KAAK9g3B,EAAEgb,KAAKyq2B,0BAA0B7p2B,EAAEjf,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASzzW,QAAQjpJ,QAAQ3pD,IAAI1H,EAAEgb,KAAKyq2B,yBAAyB,CAAC360B,KAAKlvB,EAAEsl2B,QAAQlh3B,EAAE,EAAEyl3B,sBAAsB,WAAW,IAAI7p2B,EAAEZ,KAAKkr2B,MAAMlm3B,EAAE,GAAG,OAAO4b,GAAGZ,KAAKpQ,QAAQo42B,YAAYho2B,KAAKpQ,QAAQo42B,aAAahj3B,EAAErD,EAAE+j3B,KAAKrwB,SAASj10B,UAAUqq2B,sBAAsBpq2B,KAAKL,OAAOY,IAAI5b,GAAG,OAAOrD,EAAEgp3B,aAAaQ,aAAavq2B,EAAEZ,KAAKpQ,QAAQs50B,OAAOlp0B,KAAKpQ,QAAQ4oF,YAAYxzF,GAAG,IAAI,EAAEsk3B,cAAc,WAAW,OAAOtp2B,KAAKko2B,SAAS9z2B,QAAQ,CAAC,EAAE002B,eAAe,SAASlo2B,EAAE5b,GAAG,IAAIK,GAAG2a,KAAKpQ,QAAQ632B,mBAAmBzn2B,KAAKpQ,QAAQq72B,WAAW5l3B,EAAE2a,KAAKoo2B,MAAM3yB,aAAaz10B,KAAKkr2B,MAAMvp3B,EAAEgp3B,aAAaS,aAAa/l3B,IAAI1D,EAAE+j3B,KAAKrwB,SAASj10B,UAAU0o2B,eAAezo2B,KAAKL,KAAKY,EAAE5b,EAAE,EAAE2j3B,cAAc,WAAW,IAAI/n2B,EAAEZ,KAAKko2B,SAAS9z2B,OAAOwM,EAAE,IAAIZ,KAAKko2B,SAAS,GAAGj7uB,IAAI,QAAQjtH,KAAKup2B,aAAavp2B,MAAMY,EAAE,GAAGZ,KAAKko2B,SAAStn2B,EAAE,GAAGqsH,IAAI,WAAWjtH,KAAKup2B,aAAavp2B,MAAM,IAAIre,EAAE0p3B,YAAY,CAAC,EAAE1p3B,EAAE+j3B,KAAK2F,YAAY1p3B,EAAE+j3B,KAAK94X,QAAQ5pY,OAAO,CAACpzG,QAAQ,CAAC832B,YAAW,GAAIn+zB,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKsr2B,cAAc3p3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASgzT,YAAY1vzB,QAAQ3pD,IAAI/K,EAAE+j3B,KAAK94X,QAAQxse,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAE6l1B,SAAS,WAAWlp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAUyq0B,SAASxq0B,KAAKL,MAAMA,KAAK4xY,OAAO5xY,KAAKur2B,cAAcvr2B,KAAK4xY,KAAKkG,SAAS9hZ,UAAUgK,KAAKur2B,eAAevr2B,KAAK4xY,KAAKkG,SAAShqS,UAAU9tG,KAAKqjkB,WAAW35iB,MAAMojD,OAAO,YAAY9sE,KAAKu80B,SAAS8rB,cAAc,CAACv40B,KAAK9vB,KAAKwr2B,oBAAoBxr2B,KAAK4xY,KAAKjnS,GAAG,YAAY3qG,KAAKgn1B,aAAahn1B,MAAM2qG,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAG,aAAa3qG,KAAKgn1B,aAAahn1B,MAAM2qG,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAMhb,EAAEkT,iBAAiB,aAAavW,EAAEgjlB,SAASh4c,eAAe,CAACtgI,SAAQ,IAAK,EAAEy+0B,YAAY,WAAWnp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAU0q0B,YAAYzq0B,KAAKL,MAAMA,KAAK4xY,OAAO5xY,KAAKur2B,eAAevr2B,KAAK4xY,KAAKkG,SAAS/pS,SAAS/tG,KAAKqjkB,WAAW35iB,MAAMojD,OAAO,GAAG9sE,KAAK4xY,KAAK3kR,IAAI,YAAYjtH,KAAKgn1B,aAAahn1B,MAAMitH,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMitH,IAAI,aAAajtH,KAAKgn1B,aAAahn1B,MAAMitH,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjoI,EAAE,UAAUgb,KAAKon1B,WAAWpn1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjoI,EAAE,WAAWgb,KAAKon1B,WAAWpn1B,MAAMhb,EAAEmT,oBAAoB,aAAaxW,EAAEgjlB,SAASh4c,gBAAgB3sH,KAAKyr2B,SAASzr2B,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKyr2B,eAAezr2B,KAAKyr2B,SAASzr2B,KAAK0r2B,YAAW,CAAE,EAAEpD,gBAAgB,WAAW,MAAM,CAACx40B,KAAK9vB,KAAKsr2B,cAAc,EAAEtkB,aAAa,SAASpm1B,GAAGZ,KAAK0r2B,YAAW,EAAG1r2B,KAAK4r1B,aAAahr1B,EAAEqqvB,OAAOtpwB,EAAEgjlB,SAASh6d,GAAG3lH,EAAE,UAAUgb,KAAKon1B,WAAWpn1B,MAAM2qG,GAAG3lH,EAAE,WAAWgb,KAAKon1B,WAAWpn1B,MAAM2sH,eAAe/rH,EAAEk7gB,cAAc,EAAEuoU,aAAa,SAASzj1B,GAAG,IAAI5b,EAAE4b,EAAEqqvB,OAAOjrvB,KAAKu80B,SAAS+tB,eAAetl3B,GAAGgb,KAAK0r2B,aAAa1r2B,KAAKu80B,SAAS8rB,cAAcro2B,KAAKso2B,mBAAmBto2B,KAAK2r2B,WAAW3m3B,GAAG,EAAEoi2B,WAAW,WAAWpn1B,KAAKyr2B,QAAQzr2B,KAAKun2B,oBAAoBvn2B,KAAK8tG,UAAU9tG,KAAKpQ,QAAQ832B,YAAY1n2B,KAAK+tG,QAAQ,IAAIpsH,EAAE+j3B,KAAKhf,UAAU/k2B,EAAE+j3B,KAAK2F,YAAYrowB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,aAAa3unB,QAAQ,CAACgv2B,aAAa,CAACjw0B,QAAO,EAAG3H,MAAM,UAAUC,OAAO,EAAExpB,QAAQ,GAAGgxB,MAAK,EAAGi+b,UAAU,KAAKzrC,YAAY,GAAGmlU,WAAU,GAAI6kH,UAAS,EAAG/hC,QAAO,GAAI3/xB,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKgQ,KAAKruB,EAAE+j3B,KAAKhf,UAAUnoO,KAAKv+mB,KAAKwr2B,kBAAkB7p3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASu5S,UAAUj2yB,QAAQ5pD,MAAM9K,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAE8oH,QAAQ,WAAW9tG,KAAK4/Y,WAAW5/Y,KAAK4r2B,6BAA4B,EAAGjq3B,EAAE+j3B,KAAK2F,YAAYjr2B,UAAU0tG,QAAQztG,KAAKL,MAAM,EAAEon1B,WAAW,SAASxm1B,GAAOZ,KAAKyr2B,QAASzr2B,KAAK4r2B,4BAA6E5r2B,KAAK4r2B,8BAA1hjB,SAAWhr2B,GAAK,MAAMA,EAAEA,EAAEivG,iBAAiBjvG,EAAE+oG,UAAUniH,SAA4gjB,kBAA9/iB,OAAOoZ,CAAC,CAA2+iB+iE,CAAE/iE,EAAE7S,SAAwBpM,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUgn1B,WAAW/m1B,KAAKL,MAAjJA,KAAK4r2B,6BAA4B,CAAqH,EAAED,WAAW,SAAS/q2B,GAAGZ,KAAKyr2B,OAAOzr2B,KAAKyr2B,OAAOlzB,UAAU,IAAI521B,EAAEwr0B,aAAantzB,KAAK4r1B,aAAahr1B,KAAKZ,KAAKyr2B,OAAO,IAAI9p3B,EAAE+k2B,UAAU,IAAI/k2B,EAAEwr0B,aAAantzB,KAAK4r1B,aAAahr1B,GAAGZ,KAAKpQ,QAAQgv2B,cAAc5+1B,KAAK4xY,KAAKixB,SAAS7ia,KAAKyr2B,QAAQ,EAAElE,kBAAkB,WAAW,IAAI3m2B,EAAE,IAAIjf,EAAE+k2B,UAAU1m1B,KAAKyr2B,OAAO1iwB,YAAY/oG,KAAKpQ,QAAQgv2B,cAAcj92B,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUmn2B,kBAAkBln2B,KAAKL,KAAKY,EAAE,EAAE0n2B,gBAAgB,WAAW,IAAI1n2B,EAAE5b,EAAEK,EAAEs+E,EAAEhiF,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUko2B,gBAAgBjo2B,KAAKL,MAAMpG,EAAEoG,KAAKyr2B,OAAO5q2B,EAAEb,KAAKpQ,QAAQq72B,SAAS,OAAOrx2B,IAAIgH,EAAEZ,KAAKyr2B,OAAO51B,cAAc710B,KAAKyr2B,OAAO51B,gBAAgB710B,KAAKyr2B,OAAOh2B,aAAazw1B,EAAErD,EAAEgp3B,aAAaS,aAAaxq2B,GAAGvb,EAAEwb,EAAElf,EAAEgp3B,aAAaQ,aAAanm3B,EAAEgb,KAAKpQ,QAAQs50B,QAAQ,IAAI,CAACp5yB,KAAK6zC,EAAE7zC,KAAKo20B,QAAQ7g3B,EAAE,IAAI1D,EAAE+j3B,KAAKvzB,OAAOxw1B,EAAE+j3B,KAAK94X,QAAQ5pY,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,UAAU3unB,QAAQ,CAAC6kX,KAAK,IAAI9yX,EAAEiu1B,KAAK0N,QAAQoqB,YAAW,EAAGl+G,aAAa,KAAKjgtB,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKgQ,KAAKruB,EAAE+j3B,KAAKvzB,OAAO5zN,KAAKv+mB,KAAKwr2B,kBAAkB7p3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAASp+F,OAAOt+Z,QAAQ5pD,MAAM9K,EAAE+j3B,KAAK94X,QAAQxse,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAE6l1B,SAAS,WAAWlp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAUyq0B,SAASxq0B,KAAKL,MAAMA,KAAK4xY,OAAO5xY,KAAKu80B,SAAS8rB,cAAc,CAACv40B,KAAK9vB,KAAKwr2B,oBAAoBxr2B,KAAKuo2B,eAAevo2B,KAAKuo2B,aAAa5m3B,EAAEgzd,OAAO30c,KAAK4xY,KAAK5oE,YAAY,CAACyrC,KAAK9yX,EAAE2owB,QAAQ,CAACxgpB,UAAU,uBAAuB0muB,WAAW,CAAC,GAAG,IAAIjmF,SAAS,CAAC,GAAG,MAAM9svB,QAAQ,EAAE+rvB,aAAaxpvB,KAAKpQ,QAAQ45vB,gBAAgBxpvB,KAAKuo2B,aAAa59vB,GAAG,QAAQ3qG,KAAKqxU,SAASrxU,MAAMwnvB,MAAMxnvB,KAAK4xY,MAAM5xY,KAAK4xY,KAAKjnS,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAMA,KAAK4xY,KAAKjnS,GAAG,QAAQ3qG,KAAKyo2B,SAASzo2B,MAAM,EAAE8q0B,YAAY,WAAWnp1B,EAAE+j3B,KAAK94X,QAAQxse,UAAU0q0B,YAAYzq0B,KAAKL,MAAMA,KAAK4xY,OAAO5xY,KAAK4xY,KAAK3kR,IAAI,QAAQjtH,KAAKqxU,SAASrxU,MAAMitH,IAAI,QAAQjtH,KAAKyo2B,SAASzo2B,MAAMA,KAAKix0B,UAAUjx0B,KAAKix0B,QAAQhktB,IAAI,QAAQjtH,KAAKqxU,SAASrxU,MAAMA,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKix0B,gBAAgBjx0B,KAAKix0B,SAASjx0B,KAAKuo2B,aAAat7uB,IAAI,QAAQjtH,KAAKqxU,SAASrxU,MAAMA,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKuo2B,qBAAqBvo2B,KAAKuo2B,aAAavo2B,KAAK4xY,KAAK3kR,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAM,EAAEqk1B,aAAa,SAASzj1B,GAAG,IAAI5b,EAAE4b,EAAEqqvB,OAAOjrvB,KAAKu80B,SAAS+tB,eAAetl3B,GAAGgb,KAAKuo2B,aAAan+G,UAAUplwB,GAAGgb,KAAKix0B,SAASjs1B,EAAEgb,KAAKuo2B,aAAal9G,YAAYrrvB,KAAKix0B,QAAQ7mF,UAAUplwB,KAAKgb,KAAKix0B,QAAQjx0B,KAAKop2B,cAAcpk3B,GAAGgb,KAAKix0B,QAAQtmuB,GAAG,QAAQ3qG,KAAKqxU,SAASrxU,MAAMA,KAAK4xY,KAAKjnS,GAAG,QAAQ3qG,KAAKqxU,SAASrxU,MAAM6ia,SAAS7ia,KAAKix0B,SAAS,EAAEm4B,cAAc,SAASxo2B,GAAG,OAAO,IAAIjf,EAAEww1B,OAAOvx0B,EAAE,CAAC6zW,KAAKz0W,KAAKpQ,QAAQ6kX,KAAK+0Y,aAAaxpvB,KAAKpQ,QAAQ45vB,cAAc,EAAEn4a,SAAS,WAAWrxU,KAAKun2B,oBAAoBvn2B,KAAK8tG,UAAU9tG,KAAKpQ,QAAQ832B,YAAY1n2B,KAAK+tG,QAAQ,EAAE06vB,SAAS,SAAS7n2B,GAAGZ,KAAKqk1B,aAAazj1B,GAAGZ,KAAKqxU,UAAU,EAAEk2hB,kBAAkB,WAAW,IAAI3m2B,EAAE,IAAIjf,EAAEww1B,OAAO05B,MAAM7r2B,KAAKix0B,QAAQ5lF,YAAY,CAAC52Y,KAAKz0W,KAAKpQ,QAAQ6kX,OAAO9yX,EAAE+j3B,KAAK94X,QAAQxse,UAAUmn2B,kBAAkBln2B,KAAKL,KAAKY,EAAE,IAAIjf,EAAE+j3B,KAAKhxB,aAAa/y1B,EAAE+j3B,KAAKvzB,OAAOnvuB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,gBAAgB3unB,QAAQ,CAAC++B,QAAO,EAAG3H,MAAM,UAAUC,OAAO,EAAExpB,QAAQ,GAAGgxB,MAAK,EAAGi+b,UAAU,KAAKzrC,YAAY,GAAGmlU,WAAU,EAAGoD,aAAa,KAAKjgtB,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKgQ,KAAKruB,EAAE+j3B,KAAKhxB,aAAan2N,KAAKv+mB,KAAKwr2B,kBAAkB7p3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS8yT,aAAaxvzB,QAAQ5pD,MAAM9K,EAAE+j3B,KAAK94X,QAAQxse,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAEui3B,kBAAkB,WAAW,IAAI3m2B,EAAE,IAAIjf,EAAE+y1B,aAAa100B,KAAKix0B,QAAQ5lF,YAAYrrvB,KAAKpQ,SAASjO,EAAE+j3B,KAAK94X,QAAQxse,UAAUmn2B,kBAAkBln2B,KAAKL,KAAKY,EAAE,EAAEwo2B,cAAc,SAASxo2B,GAAG,OAAO,IAAIjf,EAAE+y1B,aAAa9z0B,EAAEZ,KAAKpQ,QAAQ,IAAIjO,EAAE+j3B,KAAKrzpB,OAAO1wN,EAAE+j3B,KAAK2F,YAAYrowB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,UAAU3unB,QAAQ,CAACgv2B,aAAa,CAACjw0B,QAAO,EAAG3H,MAAM,UAAUC,OAAO,EAAExpB,QAAQ,GAAGgxB,MAAK,EAAGi+b,UAAU,KAAKzrC,YAAY,GAAGmlU,WAAU,GAAI0lH,YAAW,EAAG5iC,QAAO,EAAGnsoB,MAAK,EAAGgrqB,QAAO,GAAIx+zB,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKgQ,KAAKruB,EAAE+j3B,KAAKrzpB,OAAOksa,KAAKv+mB,KAAKwr2B,kBAAkB7p3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS7/V,OAAO78J,QAAQ5pD,MAAM9K,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE5b,EAAE,EAAE2m3B,WAAW,SAAS/q2B,GAAG,GAAGjf,EAAEgp3B,aAAaC,eAAe,IAAI5l3B,EAAEgb,KAAK4r1B,aAAa19B,WAAWttzB,QAAY5b,EAAEgb,KAAK4xY,KAAKr5Y,SAASyH,KAAK4r1B,aAAahr1B,GAAGZ,KAAKyr2B,OAAOzr2B,KAAKyr2B,OAAO1kc,UAAU/hb,IAAIgb,KAAKyr2B,OAAO,IAAI9p3B,EAAE0wN,OAAOryM,KAAK4r1B,aAAa5m2B,EAAEgb,KAAKpQ,QAAQgv2B,cAAc5+1B,KAAK4xY,KAAKixB,SAAS7ia,KAAKyr2B,QAAQ,EAAElE,kBAAkB,WAAW,IAAI3m2B,EAAE,IAAIjf,EAAE0wN,OAAOryM,KAAK4r1B,aAAa5r1B,KAAKyr2B,OAAO3kc,YAAY9ma,KAAKpQ,QAAQgv2B,cAAcj92B,EAAE+j3B,KAAK2F,YAAYjr2B,UAAUmn2B,kBAAkBln2B,KAAKL,KAAKY,EAAE,EAAEyj1B,aAAa,SAASzj1B,GAAG,IAAI5b,EAAEK,EAAEub,EAAEqqvB,OAAOtnrB,EAAE3jE,KAAKpQ,QAAQk82B,WAAWly2B,EAAEoG,KAAKpQ,QAAQs50B,OAAO,GAAGlp0B,KAAKu80B,SAAS+tB,eAAejl3B,GAAG2a,KAAK0r2B,WAAW,CAAC1r2B,KAAK2r2B,WAAWtm3B,GAAGL,EAAEgb,KAAKyr2B,OAAO3kc,YAAY/oS,QAAQ,GAAG,IAAIl9H,EAAE,GAAG8iE,IAAI9iE,EAAElf,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS7/V,OAAOnlL,OAAO,KAAKpsC,EAAEgp3B,aAAaE,iBAAiB7l3B,EAAE4U,EAAEoG,KAAKpQ,QAAQmtM,KAAK/8L,KAAKpQ,QAAQm42B,SAAS/n2B,KAAKu80B,SAAS8rB,cAAc,CAACv40B,KAAK9vB,KAAKsr2B,cAAcpF,QAAQrl2B,GAAG,CAAC,IAAIlf,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAK55B,OAAOxw1B,EAAEip1B,QAAQ5nuB,OAAO,CAACz5D,WAAW,SAAS3oC,EAAE5b,GAAGgb,KAAKix0B,QAAQrw0B,EAAEjf,EAAE2T,WAAW0K,KAAKhb,EAAE,EAAE6l1B,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAKix0B,QAAQrw0B,EAAEk3Y,SAAS/pS,SAASntG,EAAE+pG,GAAG,UAAU3qG,KAAK2uU,WAAW/tU,GAAGZ,KAAKgs2B,wBAAwB,EAAElhC,YAAY,WAAW,IAAIlq0B,EAAEZ,KAAKix0B,QAAQrw0B,EAAEk3Y,SAAShqS,UAAUltG,EAAEqsH,IAAI,UAAUjtH,KAAK2uU,WAAW/tU,GAAGZ,KAAKgs2B,wBAAwB,EAAEr9hB,WAAW,SAAS/tU,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAO/I,EAAEin3B,QAAO,EAAGjs2B,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM+nW,SAAS,CAAC/ne,MAAM35Y,GAAG,EAAEgn3B,uBAAuB,WAAW,IAAIpr2B,EAAEZ,KAAKix0B,QAAQC,MAAMtw0B,IAAIA,EAAE8oB,MAAM8yB,QAAQ,OAAO76D,EAAE2hlB,QAAQp5d,SAAStpG,EAAE,iCAAiCjf,EAAE2hlB,QAAQ55d,YAAY9oG,EAAE,gCAAgCZ,KAAKks2B,cAActr2B,GAAG,KAAKjf,EAAE2hlB,QAAQr5d,SAASrpG,EAAE,gCAAgCZ,KAAKks2B,cAActr2B,EAAE,IAAIA,EAAE8oB,MAAM8yB,QAAQ,GAAG,EAAE0vzB,cAAc,SAAStr2B,EAAE5b,GAAG,IAAIK,EAAE8gC,SAASvlB,EAAE8oB,MAAMsuM,UAAU,IAAIhzO,EAAE2+E,EAAEx9C,SAASvlB,EAAE8oB,MAAMyuM,WAAW,IAAInzO,EAAE4b,EAAE8oB,MAAMsuM,UAAU3yO,EAAE,KAAKub,EAAE8oB,MAAMyuM,WAAWx0J,EAAE,IAAI,IAAIhiF,EAAEww1B,OAAO1lF,YAAY,WAAW9qwB,EAAEoq3B,KAAK55B,SAASny0B,KAAKms2B,QAAQ,IAAIxq3B,EAAEoq3B,KAAK55B,OAAOny0B,MAAMA,KAAKpQ,QAAQw6L,UAAUpqL,KAAKms2B,QAAQp+vB,SAAS,GAAGpsH,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAKvE,KAAK7l3B,EAAEip1B,QAAQ5nuB,OAAO,CAACz5D,WAAW,SAAS3oC,GAAGZ,KAAKstzB,QAAQ,CAAC1szB,EAAE8mvB,UAAU9mvB,EAAEm0wB,SAAS/0wB,KAAKstzB,QAAQttzB,KAAKstzB,QAAQt/zB,OAAO4S,EAAEm0wB,SAAS/0wB,KAAKoo2B,MAAMxn2B,EAAEZ,KAAKoo2B,MAAMz9vB,GAAG,gBAAgB3qG,KAAKos2B,eAAeps2B,KAAK,EAAE610B,cAAc,WAAW,OAAOl01B,EAAE0z1B,SAASpH,MAAMts1B,EAAE0z1B,SAASpH,MAAMju0B,KAAKoo2B,MAAM1gH,UAAU1nvB,KAAKoo2B,MAAM1gH,SAAS1nvB,KAAKoo2B,MAAM1gH,SAAS,GAAG1nvB,KAAKoo2B,MAAM1gH,QAAQ,EAAE2kH,mBAAmB,SAASzr2B,GAAG,IAAI,IAAI5b,EAAE,EAAEA,EAAEgb,KAAKss2B,kBAAkBl42B,OAAOpP,IAAI4b,EAAEZ,KAAKss2B,kBAAkBtn3B,GAAG,EAAE6l1B,SAAS,WAAW7q0B,KAAKus2B,gBAAgBvs2B,KAAKqs2B,mBAAmB,SAASzr2B,GAAGA,EAAEiq0B,UAAU,EAAE,EAAEC,YAAY,WAAW9q0B,KAAKqs2B,mBAAmB,SAASzr2B,GAAGA,EAAEkq0B,aAAa,EAAE,EAAE0hC,cAAc,WAAWxs2B,KAAKqs2B,mBAAmB,SAASzr2B,GAAGA,EAAE4r2B,eAAe,EAAE,EAAED,cAAc,WAAWvs2B,KAAKss2B,kBAAkB,GAAG,IAAI,IAAI1r2B,EAAE,EAAEA,EAAEZ,KAAKstzB,QAAQl5zB,OAAOwM,IAAIZ,KAAKss2B,kBAAkBx42B,KAAK,IAAInS,EAAEoq3B,KAAKU,iBAAiBzs2B,KAAKoo2B,MAAMpo2B,KAAKstzB,QAAQ1szB,GAAGZ,KAAKoo2B,MAAMx42B,QAAQ2xf,MAAM,EAAE6qX,eAAe,SAASxr2B,GAAGZ,KAAKstzB,QAAQ,CAAC1szB,EAAE+9X,MAAM+oX,UAAU9mvB,EAAE+9X,MAAMo2Y,SAAS/0wB,KAAKstzB,QAAQttzB,KAAKstzB,QAAQt/zB,OAAO4S,EAAE+9X,MAAMo2Y,QAAQ,IAAIpzxB,EAAEoq3B,KAAKU,iBAAiB9q3B,EAAEip1B,QAAQ5nuB,OAAO,CAACpzG,QAAQ,CAAC6kX,KAAK,IAAI9yX,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,EAAE,GAAG98G,UAAU,0CAA0C89vB,UAAU,IAAIjm3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,GAAG,IAAI98G,UAAU,6DAA6D69vB,UAAU,CAAC3g1B,MAAM,UAAU22C,QAAQ,MAAMp0B,WAAW,SAAS3oC,EAAE5b,EAAEK,GAAG1D,EAAEmrR,QAAQ0xN,QAAQx+d,KAAKpQ,QAAQ6kX,KAAKz0W,KAAKpQ,QAAQg42B,WAAW5n2B,KAAKoo2B,MAAMxn2B,EAAEvb,GAAGA,EAAEsi3B,YAAYti3B,EAAEsi3B,UAAUhm3B,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQ+32B,UAAUti3B,EAAEsi3B,YAAY3n2B,KAAK0nvB,SAAS1iwB,EAAErD,EAAE2T,WAAW0K,KAAK3a,EAAE,EAAEww1B,cAAc,WAAW,OAAOl01B,EAAE0z1B,SAASpH,MAAMts1B,EAAE0z1B,SAASpH,MAAMju0B,KAAK0nvB,UAAU1nvB,KAAK0nvB,SAAS1nvB,KAAK0nvB,SAAS,GAAG1nvB,KAAK0nvB,QAAQ,EAAEmjF,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAKoo2B,MAAMpj3B,EAAE4b,EAAEwmE,MAAMxmE,aAAajf,EAAEo1Z,UAAUn2Y,EAAEhR,QAAQ6+B,MAAK,EAAG7tB,EAAEhR,QAAQu82B,UAAUvr2B,EAAEhR,QAAQu82B,QAAQ190B,MAAK,IAAKzpC,GAAG4b,EAAEhR,QAAQu82B,SAASvr2B,EAAEhR,QAAQu82B,QAAQriwB,YAAYlpG,EAAEhR,QAAQuvC,SAAS2qE,WAAWlpG,EAAEhR,QAAQuvC,SAAS2qE,UAAU5oH,MAAM,KAAK8Q,QAAQ,SAAS4O,GAAGjf,EAAE2hlB,QAAQ55d,YAAY1kH,EAAE4b,EAAE,GAAGA,EAAEhR,QAAQu82B,QAAQriwB,UAAU5oH,MAAM,KAAK8Q,QAAQ,SAAS4O,GAAGjf,EAAE2hlB,QAAQr5d,SAASjlH,EAAE4b,EAAE,IAAIA,EAAEglE,SAAShlE,EAAEhR,QAAQu82B,SAASns2B,KAAKoo2B,MAAMx2d,OAAO5xY,KAAK4xY,KAAK5xY,KAAKoo2B,MAAMx2d,KAAK5xY,KAAKmo2B,cAAcno2B,KAAK0s2B,eAAe1s2B,KAAKoo2B,MAAMx2d,KAAKixB,SAAS7ia,KAAKmo2B,cAAc,EAAEr9B,YAAY,WAAW,IAAIlq0B,EAAEZ,KAAKoo2B,MAAMpj3B,EAAE4b,EAAEwmE,MAAMpiF,GAAG4b,EAAEhR,QAAQu82B,SAASvr2B,EAAEhR,QAAQu82B,QAAQriwB,YAAYlpG,EAAEhR,QAAQu82B,QAAQriwB,UAAU5oH,MAAM,KAAK8Q,QAAQ,SAAS4O,GAAGjf,EAAE2hlB,QAAQ55d,YAAY1kH,EAAE4b,EAAE,GAAGA,EAAEhR,QAAQuvC,SAAS2qE,WAAWlpG,EAAEhR,QAAQuvC,SAAS2qE,UAAU5oH,MAAM,KAAK8Q,QAAQ,SAAS4O,GAAGjf,EAAE2hlB,QAAQr5d,SAASjlH,EAAE4b,EAAE,IAAIA,EAAEglE,SAAShlE,EAAEhR,QAAQuvC,UAAUv+B,EAAEgxY,OAAOhxY,EAAEgxY,KAAKk2W,YAAY9nvB,KAAKmo2B,qBAAqBno2B,KAAKmo2B,oBAAoBno2B,KAAKko2B,SAAS,EAAEsE,cAAc,WAAWxs2B,KAAKmo2B,aAAan+G,cAAchqvB,KAAK0s2B,cAAc,EAAEA,aAAa,WAAW1s2B,KAAKmo2B,eAAeno2B,KAAKmo2B,aAAa,IAAIxm3B,EAAE6t1B,YAAYxv0B,KAAKko2B,SAAS,GAAG,IAAItn2B,EAAE5b,EAAEK,EAAEs+E,EAA+L9iE,EAAE5d,EAA/L2W,EAAEoG,KAAK610B,gBAAgB,IAAIj10B,EAAE,EAAEvb,EAAEuU,EAAExF,OAAOwM,EAAEvb,EAAEub,KAAI+iE,EAAE3jE,KAAKop2B,cAAcxv2B,EAAEgH,GAAGA,IAAK+pG,GAAG,QAAQ3qG,KAAK2s2B,eAAe3s2B,MAAM2jE,EAAEgnC,GAAG,cAAc3qG,KAAK4s2B,eAAe5s2B,MAAMA,KAAKko2B,SAASp02B,KAAK6vE,GAAW,IAAI/iE,EAAE,EAAE5b,EAAEK,EAAE,EAAEub,EAAEvb,EAAEL,EAAE4b,KAAK,IAAIA,GAAGjf,EAAEo1Z,SAAS/2Y,KAAKoo2B,iBAAiBzm3B,EAAEo1Z,WAAWl2Y,EAAEb,KAAKko2B,SAASlj3B,GAAG/B,EAAE+c,KAAKko2B,SAAStn2B,GAAGZ,KAAK6s2B,oBAAoBhs2B,EAAE5d,GAAG+c,KAAK8s2B,gBAAgBjs2B,EAAE5d,GAAG,EAAEmm3B,cAAc,SAASxo2B,EAAE5b,GAAG,IAAIK,EAAE,IAAI1D,EAAEww1B,OAAO05B,MAAMjr2B,EAAE,CAAC6qU,WAAU,EAAGgpC,KAAKz0W,KAAKpQ,QAAQ6kX,OAAO,OAAOpvX,EAAE0n3B,YAAYns2B,EAAEvb,EAAEyuyB,OAAO9uyB,EAAEK,EAAEslH,GAAG,YAAY3qG,KAAKgt2B,mBAAmBht2B,MAAM2qG,GAAG,OAAO3qG,KAAKit2B,cAAcjt2B,MAAM2qG,GAAG,UAAU3qG,KAAKkt2B,UAAUlt2B,MAAM2qG,GAAG,YAAY3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,WAAW3qG,KAAKkt2B,UAAUlt2B,MAAM2qG,GAAG,gBAAgB3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,cAAc3qG,KAAKkt2B,UAAUlt2B,MAAMA,KAAKmo2B,aAAatlc,SAASx9a,GAAGA,CAAC,EAAE2n3B,mBAAmB,WAAWht2B,KAAKoo2B,MAAM5yc,KAAK,YAAY,EAAE23c,eAAe,WAAW,IAAIvs2B,EAAEZ,KAAK610B,gBAAgB7w1B,EAAE,GAAG+nC,OAAOjsB,MAAMF,EAAEzM,WAAW,OAAO6L,KAAKoo2B,MAAMryB,gBAAgBn10B,GAAE,GAAIZ,KAAKoo2B,MAAM7xW,SAASvxgB,CAAC,EAAEoo3B,cAAc,SAASxs2B,GAAG,IAAI5b,EAAE4b,EAAEkzxB,OAAO9zxB,KAAKmo2B,aAAargH,YAAYlnvB,GAAGZ,KAAKko2B,SAASn70B,OAAO/nC,EAAE,GAAGgb,KAAKmt2B,eAAeno3B,EAAE,GAAGgb,KAAKqt2B,eAAero3B,GAAG,GAAG4b,EAAEqsH,IAAI,YAAYjtH,KAAKgt2B,mBAAmBht2B,MAAMitH,IAAI,OAAOjtH,KAAKit2B,cAAcjt2B,MAAMitH,IAAI,UAAUjtH,KAAKkt2B,UAAUlt2B,MAAMitH,IAAI,YAAYjtH,KAAKit2B,cAAcjt2B,MAAMitH,IAAI,WAAWjtH,KAAKkt2B,UAAUlt2B,MAAMitH,IAAI,QAAQjtH,KAAK2s2B,eAAe3s2B,MAAMitH,IAAI,gBAAgBjtH,KAAKgs1B,aAAahs1B,MAAMitH,IAAI,cAAcjtH,KAAKkt2B,UAAUlt2B,KAAK,EAAEkt2B,UAAU,WAAWlt2B,KAAKoo2B,MAAM6D,QAAO,EAAGjs2B,KAAKoo2B,MAAM5yc,KAAK,QAAQx1Z,KAAKoo2B,MAAMx2d,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMioW,WAAW,CAACjmyB,OAAO3gE,KAAKmo2B,aAAa5mX,KAAKvhf,KAAKoo2B,OAAO,EAAE6E,cAAc,SAASrs2B,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAO1I,EAAE2a,KAAKoo2B,MAAMzkyB,EAAEhiF,EAAE2r3B,WAAWC,YAAYvo3B,EAAE+n3B,aAAa,GAAGpr3B,EAAEqhH,OAAOh+G,EAAE+n3B,YAAY/n3B,EAAEit1B,SAAS5s1B,EAAEuK,QAAQ2xf,KAAK,CAAC,IAAI3nf,EAAEvU,EAAEusZ,KAAK47d,aAAa,IAAIno3B,EAAEuK,QAAQ2xf,KAAKkmX,mBAAmBpi3B,EAAE+1Z,aAAa,CAACz5Z,EAAEqhH,OAAOh+G,EAAE+n3B,YAAYppyB,GAAG3+E,EAAEolwB,UAAUzmrB,GAAG,IAAI9iE,EAAExb,EAAEuK,QAAQo3B,MAAM3hC,EAAEugF,SAAS,CAAC5+C,MAAMhnB,KAAKpQ,QAAQ+32B,UAAU3g1B,QAAQptB,GAAGA,EAAEyu2B,cAAc,CAACv40B,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS6yM,SAAS37uB,QAAQxC,WAAW,WAAWpiB,EAAEugF,SAAS,CAAC5+C,MAAMnmB,IAAIjH,GAAGA,EAAEyu2B,cAAc,CAACv40B,KAAKnuC,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQvmB,KAAKo20B,QAAQvk3B,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQ6vzB,SAAS,EAAE,IAAI,CAAC,CAAClh3B,EAAEyo3B,aAAazo3B,EAAEyo3B,YAAYrjH,UAAUpqvB,KAAK0t2B,iBAAiB1o3B,EAAE2o3B,MAAM3o3B,IAAIA,EAAE4o3B,cAAc5o3B,EAAE4o3B,aAAaxjH,UAAUpqvB,KAAK0t2B,iBAAiB1o3B,EAAEA,EAAE2mhB,QAAQ3rgB,KAAKoo2B,MAAMz6E,QAAQwhC,WAAWxt0B,EAAEgmV,OAAO,IAAI,KAAK3nU,KAAKoo2B,MAAMz6E,QAAQyhC,WAAWzt0B,EAAEgmV,QAAO,KAAK,KAAM,IAAI1kV,EAAE+c,KAAKoo2B,MAAM3yB,aAAaz10B,KAAKoo2B,MAAMryB,gBAAgB9y1B,GAAE,GAAI+c,KAAKoo2B,MAAM7xW,SAASv2f,KAAKoo2B,MAAM5yc,KAAK,WAAW,EAAEm3c,eAAe,SAAS/r2B,GAAG,IAAI5b,EAAErD,EAAEo1Z,SAAS/2Y,KAAKoo2B,iBAAiBzm3B,EAAEo1Z,QAAQ,EAAE,EAAE1xZ,EAAEub,EAAE7S,OAAOiS,KAAK610B,gBAAgBzh1B,OAAOpP,IAAIgb,KAAKot2B,cAAc/n3B,GAAG2a,KAAK8s2B,gBAAgBzn3B,EAAEso3B,MAAMto3B,EAAEsmhB,OAAOtmhB,EAAEoo3B,aAAazt2B,KAAKmo2B,aAAargH,YAAYziwB,EAAEoo3B,aAAapo3B,EAAEuo3B,cAAc5t2B,KAAKmo2B,aAAargH,YAAYziwB,EAAEuo3B,cAAcvo3B,EAAEso3B,OAAOto3B,EAAEsmhB,MAAM3rgB,KAAK6s2B,oBAAoBxn3B,EAAEso3B,MAAMto3B,EAAEsmhB,OAAOtmhB,EAAEso3B,MAAMto3B,EAAEsmhB,QAAQtmhB,EAAEso3B,MAAMC,aAAa,MAAMvo3B,EAAEsmhB,MAAM8hW,YAAY,KAAKzt2B,KAAKkt2B,YAAY,EAAEN,eAAe,SAAShs2B,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAOiS,KAAKoo2B,MAAMpo2B,KAAKoo2B,MAAMx2d,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMuoW,cAAc,CAACvyZ,OAAO3vd,EAAE27E,OAAO3gE,KAAKmo2B,aAAa5mX,KAAKvhf,KAAKoo2B,QAAQzm3B,EAAEgjlB,SAASrhU,eAAe,EAAE0olB,aAAa,SAASpr1B,GAAG,IAAI5b,EAAEgb,KAAK4xY,KAAKiwb,uBAAuBjh0B,EAAEk7gB,cAAc1/e,QAAQ,IAAI/2C,EAAE2a,KAAK4xY,KAAK4ub,mBAAmBx70B,GAAG2+E,EAAE/iE,EAAE7S,OAAOpM,EAAEqhH,OAAOr/B,EAAEopyB,YAAY1n3B,GAAGs+E,EAAE8pyB,aAAa9pyB,EAAE8pyB,YAAYrjH,UAAUpqvB,KAAK0t2B,iBAAiB/pyB,EAAEgqyB,MAAMhqyB,IAAIA,EAAEiqyB,cAAcjqyB,EAAEiqyB,aAAaxjH,UAAUpqvB,KAAK0t2B,iBAAiB/pyB,EAAEA,EAAEgoc,QAAQ3rgB,KAAKoo2B,MAAM7xW,SAASv2f,KAAKws2B,eAAe,EAAEa,eAAe,SAASzs2B,EAAE5b,GAAGgb,KAAKmo2B,aAAah8G,UAAU,SAAS9mwB,GAAGA,EAAEyuyB,OAAOlzxB,IAAIvb,EAAEyuyB,QAAQ9uyB,EAAE,EAAE,EAAE6n3B,oBAAoB,SAASjs2B,EAAE5b,GAAG,IAAIK,EAAEs+E,EAAE/pE,EAAEiH,EAAEb,KAAK0t2B,iBAAiB9s2B,EAAE5b,GAAG/B,EAAE+c,KAAKop2B,cAAcvo2B,GAAG5d,EAAEq3oB,WAAW,IAAI15nB,EAAEgt2B,aAAa5o3B,EAAEyo3B,YAAYxq3B,EAAE0gF,EAAE,WAAW1gF,EAAEgqI,IAAI,YAAYtpD,EAAE3jE,MAAM,IAAIpG,EAAE5U,EAAE8uyB,OAAO7wyB,EAAE6wyB,OAAOl6xB,EAAE3W,EAAEgqI,IAAI,QAAQ5nI,EAAE2a,MAAM2qG,GAAG,QAAQ3qG,KAAK2s2B,eAAe3s2B,MAAMa,EAAE8gI,IAAI1+I,EAAEoowB,YAAY1pnB,IAAI9gI,EAAE0oN,IAAItmO,EAAEoowB,YAAY9hiB,IAAIvpN,KAAKmt2B,eAAevz2B,EAAE,EAAEiH,GAAGb,KAAKko2B,SAASn70B,OAAOnzB,EAAE,EAAE3W,GAAGA,EAAEq3oB,WAAW,GAAGt6nB,KAAKqt2B,eAAezz2B,EAAE,GAAG5U,EAAE8uyB,SAAS9zxB,KAAK8s2B,gBAAgBls2B,EAAE3d,GAAG+c,KAAK8s2B,gBAAgB7p3B,EAAE+B,GAAGgb,KAAKoo2B,MAAM5yc,KAAK,YAAY,EAAE57Z,EAAE,WAAW3W,EAAEgqI,IAAI,YAAYtpD,EAAE3jE,MAAM/c,EAAEgqI,IAAI,UAAUrzH,EAAEoG,MAAM/c,EAAEgqI,IAAI,YAAYtpD,EAAE3jE,MAAMA,KAAK6s2B,oBAAoBjs2B,EAAE3d,GAAG+c,KAAK6s2B,oBAAoB5p3B,EAAE+B,EAAE,EAAEK,EAAE,WAAWs+E,EAAEtjE,KAAKL,MAAMpG,EAAEyG,KAAKL,MAAMA,KAAKkt2B,WAAW,EAAEjq3B,EAAE0nH,GAAG,QAAQtlH,EAAE2a,MAAM2qG,GAAG,YAAYhnC,EAAE3jE,MAAM2qG,GAAG,UAAU/wG,EAAEoG,MAAM2qG,GAAG,YAAYhnC,EAAE3jE,MAAMA,KAAKmo2B,aAAatlc,SAAS5/a,EAAE,EAAE6p3B,gBAAgB,SAASls2B,EAAE5b,GAAG4b,IAAIA,EAAE+qgB,MAAM3mhB,GAAGA,IAAIA,EAAE2o3B,MAAM/s2B,EAAE,EAAE8s2B,iBAAiB,SAAS9s2B,EAAE5b,GAAG,IAAIK,EAAE2a,KAAKoo2B,MAAMx2d,KAAKjuU,EAAEt+E,EAAEowf,QAAQ70e,EAAEyqvB,aAAazxvB,EAAEvU,EAAEowf,QAAQzwf,EAAEqmwB,aAAa,OAAOhmwB,EAAE2r0B,UAAUrtvB,EAAEpC,KAAK3nE,GAAG+zzB,UAAU,GAAG,IAAIhs0B,EAAE0z1B,SAAS5oF,YAAY,WAAWzsvB,KAAKms2B,UAAUxq3B,EAAEoq3B,KAAKvE,OAAOxn2B,KAAKms2B,QAAQ,IAAIxq3B,EAAEoq3B,KAAKvE,KAAKxn2B,MAAMA,KAAKpQ,QAAQw6L,UAAUpqL,KAAKms2B,QAAQp+vB,UAAU/tG,KAAK2qG,GAAG,MAAM,WAAW3qG,KAAKms2B,SAASns2B,KAAKms2B,QAAQn22B,WAAWgK,KAAKms2B,QAAQthC,UAAU,GAAG7q0B,KAAK2qG,GAAG,SAAS,WAAW3qG,KAAKms2B,SAASns2B,KAAKms2B,QAAQn22B,WAAWgK,KAAKms2B,QAAQrhC,aAAa,GAAG,GAAGnp1B,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAKV,YAAY1p3B,EAAEip1B,QAAQ5nuB,OAAO,CAACpzG,QAAQ,CAACi+2B,SAAS,IAAIls3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,EAAE,GAAG98G,UAAU,4DAA4DgkwB,WAAW,IAAIns3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,EAAE,GACxs+B98G,UAAU,8DAA8DikwB,cAAc,IAAIps3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,GAAG,IAAI98G,UAAU,+EAA+EkkwB,gBAAgB,IAAIrs3B,EAAEw71B,QAAQ,CAAC5yF,SAAS,IAAI5owB,EAAEilO,MAAM,GAAG,IAAI98G,UAAU,kFAAkFvgE,WAAW,SAAS3oC,EAAE5b,GAAGrD,EAAEmrR,QAAQ0xN,QAAQx+d,KAAKpQ,QAAQi+2B,SAAS7t2B,KAAKpQ,QAAQm+2B,cAAc/t2B,KAAKpQ,QAAQk+2B,WAAW9t2B,KAAKpQ,QAAQo+2B,iBAAiBhu2B,KAAKyr2B,OAAO7q2B,EAAEjf,EAAEwpa,KAAK71Z,WAAW0K,KAAKhb,EAAE,EAAE6l1B,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAKyr2B,OAAOzr2B,KAAKyr2B,OAAO75d,OAAO5xY,KAAK4xY,KAAK5xY,KAAKyr2B,OAAO75d,KAAKhxY,EAAEglE,SAAShlE,EAAEhR,QAAQu82B,SAASvr2B,EAAEgxY,OAAO5xY,KAAK4xY,KAAKhxY,EAAEgxY,KAAK5xY,KAAKmo2B,cAAcno2B,KAAK0s2B,eAAe1s2B,KAAK4xY,KAAKixB,SAAS7ia,KAAKmo2B,eAAe,EAAEr9B,YAAY,WAAW,IAAIlq0B,EAAEZ,KAAKyr2B,OAAO,GAAG7q2B,EAAEglE,SAAShlE,EAAEhR,QAAQuvC,UAAUv+B,EAAEgxY,KAAK,CAAC5xY,KAAKiu2B,cAAcju2B,KAAKku2B,aAAa,IAAI,IAAIlp3B,EAAE,EAAEK,EAAE2a,KAAKmu2B,eAAe/52B,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKiu2B,cAAcju2B,KAAKmu2B,eAAenp3B,IAAIgb,KAAKmu2B,eAAe,KAAKnu2B,KAAK4xY,KAAKk2W,YAAY9nvB,KAAKmo2B,qBAAqBno2B,KAAKmo2B,YAAY,CAACno2B,KAAK4xY,KAAK,IAAI,EAAE46d,cAAc,WAAWxs2B,KAAKmo2B,aAAan+G,cAAchqvB,KAAK0s2B,cAAc,EAAEA,aAAa,WAAW1s2B,KAAKmo2B,eAAeno2B,KAAKmo2B,aAAa,IAAIxm3B,EAAE6t1B,YAAYxv0B,KAAKou2B,oBAAoBpu2B,KAAKqu2B,qBAAqB,EAAED,kBAAkB,WAAW,EAAEC,oBAAoB,WAAW,EAAEjF,cAAc,SAASxo2B,EAAE5b,GAAG,IAAIK,EAAE,IAAI1D,EAAEww1B,OAAO05B,MAAMjr2B,EAAE,CAAC6qU,WAAU,EAAGgpC,KAAKzvX,EAAEwkwB,aAAa,KAAK,OAAOxpvB,KAAKsu2B,YAAYjp3B,GAAG2a,KAAKmo2B,aAAatlc,SAASx9a,GAAGA,CAAC,EAAEip3B,YAAY,SAAS1t2B,GAAGA,EAAE+pG,GAAG,YAAY3qG,KAAKgt2B,mBAAmBht2B,MAAM2qG,GAAG,OAAO3qG,KAAKit2B,cAAcjt2B,MAAM2qG,GAAG,UAAU3qG,KAAKuu2B,iBAAiBvu2B,MAAM2qG,GAAG,aAAa3qG,KAAKyr1B,cAAczr1B,MAAM2qG,GAAG,YAAY3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,gBAAgB3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,WAAW3qG,KAAKis1B,YAAYjs1B,MAAM2qG,GAAG,cAAc3qG,KAAKis1B,YAAYjs1B,KAAK,EAAEiu2B,cAAc,SAASrt2B,GAAGA,EAAEqsH,IAAI,YAAYjtH,KAAKgt2B,mBAAmBht2B,MAAMitH,IAAI,OAAOjtH,KAAKit2B,cAAcjt2B,MAAMitH,IAAI,UAAUjtH,KAAKuu2B,iBAAiBvu2B,MAAMitH,IAAI,aAAajtH,KAAKyr1B,cAAczr1B,MAAMitH,IAAI,YAAYjtH,KAAKgs1B,aAAahs1B,MAAMitH,IAAI,gBAAgBjtH,KAAKgs1B,aAAahs1B,MAAMitH,IAAI,WAAWjtH,KAAKis1B,YAAYjs1B,MAAMitH,IAAI,cAAcjtH,KAAKis1B,YAAYjs1B,KAAK,EAAEgt2B,mBAAmB,SAASps2B,GAAGA,EAAE7S,OAAOusoB,WAAW,GAAGt6nB,KAAKyr2B,OAAOj2c,KAAK,YAAY,EAAE03c,UAAU,WAAWlt2B,KAAKyr2B,OAAOQ,QAAO,EAAGjs2B,KAAKyr2B,OAAOj2c,KAAK,OAAO,EAAEy3c,cAAc,SAASrs2B,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAO1I,EAAEL,EAAEqmwB,YAAYrmwB,IAAIgb,KAAKku2B,YAAYlu2B,KAAK49zB,MAAMv40B,GAAG2a,KAAKi+D,QAAQ54E,GAAG2a,KAAKyr2B,OAAOl1W,SAASv2f,KAAKyr2B,OAAOj2c,KAAK,WAAW,EAAE+4c,iBAAiB,SAAS3t2B,GAAGA,EAAE7S,OAAOusoB,WAAW,GAAGt6nB,KAAKkt2B,WAAW,EAAEzhB,cAAc,SAAS7q1B,GAAG,GAAGjf,EAAEoq3B,KAAKV,YAAYjr2B,UAAU4s2B,mBAAmB3s2B,KAAKL,KAAKY,GAAG,mBAAmBZ,KAAKwu2B,YAAY,CAAC,IAAIxp3B,EAAEgb,KAAKwu2B,cAAcnp3B,EAAEub,EAAE7S,OAAO41E,EAAEt+E,EAAEop3B,aAAapp3B,EAAEi1oB,WAAW,GAAGt6nB,KAAK0u2B,gBAAgB1p3B,GAAG2+E,EAAE,GAAG,GAAG3jE,KAAK2u2B,qBAAqB,EAAEhryB,EAAE,CAAC3jE,KAAKyr2B,OAAOj2c,KAAK,YAAY,EAAEw2b,aAAa,SAASpr1B,GAAG,IAAI5b,EAAEgb,KAAK4xY,KAAKiwb,uBAAuBjh0B,EAAEk7gB,cAAc1/e,QAAQ,IAAI/2C,EAAE2a,KAAK4xY,KAAK4ub,mBAAmBx70B,GAAG,OAAO4b,EAAE7S,SAASiS,KAAKku2B,YAAYlu2B,KAAK49zB,MAAMv40B,GAAG2a,KAAKi+D,QAAQ54E,GAAG2a,KAAKyr2B,OAAOl1W,UAAS,CAAE,EAAE01V,YAAY,SAASrr1B,GAAGA,EAAE7S,OAAOusoB,WAAW,GAAGt6nB,KAAKws2B,gBAAgBxs2B,KAAKkt2B,WAAW,EAAEtvC,MAAM,WAAW,EAAE3/vB,QAAQ,WAAW,IAAIt8E,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAKrlB,UAAU/k2B,EAAEoq3B,KAAKV,YAAYrowB,OAAO,CAACorwB,kBAAkB,WAAW,IAA8Bpp3B,EAAxBgb,KAAKyr2B,OAAO1iwB,YAAgBigO,YAAYhpU,KAAKku2B,YAAYlu2B,KAAKop2B,cAAcpk3B,EAAEgb,KAAKpQ,QAAQi+2B,SAAS,EAAEQ,oBAAoB,WAAW,IAAIzt2B,EAAEZ,KAAKwu2B,cAAcxu2B,KAAKmu2B,eAAe,GAAG,IAAI,IAAInp3B,EAAE,EAAEK,EAAEub,EAAExM,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKmu2B,eAAer62B,KAAKkM,KAAKop2B,cAAcxo2B,EAAE5b,GAAGgb,KAAKpQ,QAAQk+2B,aAAa9t2B,KAAKmu2B,eAAenp3B,GAAGyp3B,aAAazp3B,CAAC,EAAEgo3B,mBAAmB,SAASps2B,GAAGjf,EAAEoq3B,KAAKV,YAAYjr2B,UAAU4s2B,mBAAmB3s2B,KAAKL,KAAKY,GAAG,IAAI5b,EAAEgb,KAAKwu2B,cAAyB7qyB,EAAT/iE,EAAE7S,OAAW0g3B,aAAazu2B,KAAK0u2B,gBAAgB1p3B,GAAG2+E,EAAE,GAAG,GAAG3jE,KAAK2u2B,qBAAqB,EAAEhryB,EAAE,EAAE4qyB,iBAAiB,SAAS3t2B,GAAG,IAAMvb,EAAEs+E,EAAE/iE,EAAE7S,OAAO41E,IAAI3jE,KAAKku2B,cAAwC7o3B,EAAxB2a,KAAKyr2B,OAAO1iwB,YAAgBigO,YAAYrlQ,EAAEymrB,UAAU/kwB,IAAI2a,KAAK2u2B,qBAAqB,GAAG3u2B,KAAK4u2B,2BAA2Bjt3B,EAAEoq3B,KAAKV,YAAYjr2B,UAAUmu2B,iBAAiBlu2B,KAAKL,KAAKY,EAAE,EAAEg9zB,MAAM,SAASh9zB,GAAG,IAAI,IAAI5b,EAAEK,EAAE2a,KAAKyr2B,OAAO51B,cAAc710B,KAAKyr2B,OAAO51B,gBAAgB710B,KAAKyr2B,OAAOh2B,aAAuC770B,EAAxBoG,KAAKyr2B,OAAO1iwB,YAAgBigO,YAAYnoU,EAAE,GAAG5d,EAAE,EAAE82B,EAAE10B,EAAE+O,OAAOnR,EAAE82B,EAAE92B,IAAI+B,EAAE,CAACK,EAAEpC,GAAG0+I,IAAI/nI,EAAE+nI,IAAIt8I,EAAEpC,GAAGsmO,IAAI3vN,EAAE2vN,KAAK1oN,EAAE/M,KAAK,CAAC8M,EAAE+gI,IAAI38I,EAAE,GAAG4b,EAAE2oN,IAAIvkO,EAAE,KAAKgb,KAAKyr2B,OAAOn/G,WAAWzrvB,GAAGb,KAAK4u2B,2BAA2B5u2B,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM+nW,SAAS,CAAC/ne,MAAM3+X,KAAKyr2B,QAAQ,EAAExtyB,QAAQ,SAASr9D,GAAG,IAAI5b,EAAEgb,KAAKyr2B,OAAOlzB,UAAU521B,EAAEmi1B,aAAalj0B,EAAEZ,KAAK0u2B,kBAAkB1p3B,EAAEgb,KAAKyr2B,OAAO1iwB,YAAY/oG,KAAKku2B,YAAY9jH,UAAUplwB,EAAEgkV,aAAahpU,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMgoW,WAAW,CAAChoe,MAAM3+X,KAAKyr2B,QAAQ,EAAE+C,YAAY,WAAW,IAAI5t2B,EAAEZ,KAAKyr2B,OAAO1iwB,YAAY,MAAM,CAACnoG,EAAE2uzB,eAAe3uzB,EAAE0uzB,eAAe1uzB,EAAE8uzB,eAAe9uzB,EAAEyuzB,eAAe,EAAEs/C,qBAAqB,SAAS/t2B,GAAG,IAAI,IAAI5b,EAAE,EAAEK,EAAE2a,KAAKmu2B,eAAe/52B,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKmu2B,eAAenp3B,GAAGs1oB,WAAW15nB,EAAE,EAAEgu2B,yBAAyB,WAAW,IAAI,IAAIhu2B,EAAEZ,KAAKwu2B,cAAcxp3B,EAAE,EAAEK,EAAE2a,KAAKmu2B,eAAe/52B,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKmu2B,eAAenp3B,GAAGolwB,UAAUxpvB,EAAE5b,GAAG,IAAIrD,EAAE+k2B,UAAUj6F,YAAY,WAAW9qwB,EAAEoq3B,KAAKrlB,YAAY1m1B,KAAKms2B,QAAQ,IAAIxq3B,EAAEoq3B,KAAKrlB,UAAU1m1B,MAAMA,KAAKpQ,QAAQw6L,UAAUpqL,KAAKms2B,QAAQp+vB,SAAS,GAAGpsH,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAKr3B,aAAa/y1B,EAAEoq3B,KAAKV,YAAYrowB,OAAO,CAACorwB,kBAAkB,WAAW,IAAIxt2B,EAAEZ,KAAKyr2B,OAAOpgH,YAAYrrvB,KAAKku2B,YAAYlu2B,KAAKop2B,cAAcxo2B,EAAEZ,KAAKpQ,QAAQi+2B,SAAS,EAAEQ,oBAAoB,WAAWru2B,KAAKmu2B,eAAe,EAAE,EAAEvwC,MAAM,SAASh9zB,GAAG,GAAGZ,KAAKmu2B,eAAe/52B,OAAO,CAAC,IAAIpP,EAAEgb,KAAK6u2B,sBAAsBju2B,GAAGZ,KAAKmu2B,eAAe,GAAG/jH,UAAUplwB,EAAE,CAACgb,KAAKyr2B,OAAOrhH,UAAUxpvB,GAAGZ,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM+nW,SAAS,CAAC/ne,MAAM3+X,KAAKyr2B,QAAQ,IAAI9p3B,EAAE+y1B,aAAajoF,YAAY,WAAW9qwB,EAAEoq3B,KAAKr3B,eAAe100B,KAAKms2B,QAAQ,IAAIxq3B,EAAEoq3B,KAAKr3B,aAAa100B,MAAMA,KAAKpQ,QAAQw6L,UAAUpqL,KAAKms2B,QAAQp+vB,UAAU/tG,KAAK2qG,GAAG,MAAM,WAAW3qG,KAAKms2B,SAASns2B,KAAKms2B,QAAQn22B,WAAWgK,KAAKms2B,QAAQthC,UAAU,GAAG7q0B,KAAK2qG,GAAG,SAAS,WAAW3qG,KAAKms2B,SAASns2B,KAAKms2B,QAAQn22B,WAAWgK,KAAKms2B,QAAQrhC,aAAa,EAAE,GAAGnp1B,EAAEoq3B,KAAKpq3B,EAAEoq3B,MAAM,CAAC,EAAEpq3B,EAAEoq3B,KAAK15pB,OAAO1wN,EAAEoq3B,KAAKr3B,aAAa1xuB,OAAO,CAACqrwB,oBAAoB,WAAW,IAAIzt2B,EAAEZ,KAAKyr2B,OAAOpgH,YAAYrmwB,EAAEgb,KAAK6u2B,sBAAsBju2B,GAAGZ,KAAKmu2B,eAAe,GAAGnu2B,KAAKmu2B,eAAer62B,KAAKkM,KAAKop2B,cAAcpk3B,EAAEgb,KAAKpQ,QAAQk+2B,YAAY,EAAEe,sBAAsB,SAASju2B,GAAG,IAAI5b,EAAEgb,KAAKyr2B,OAAOjoC,QAAQh+0B,KAAK6xB,IAAI7xB,KAAKytB,GAAG,GAAG5tB,EAAE2a,KAAK4xY,KAAK6jG,QAAQ70e,GAAG,OAAOZ,KAAK4xY,KAAKo/a,UAAU,CAAC3r0B,EAAEkB,EAAEvB,EAAEK,EAAE1B,EAAEqB,GAAG,EAAEi5E,QAAQ,SAASr9D,GAAG,IAAI5b,EAAEgb,KAAKku2B,YAAY7iH,YAAY1pwB,EAAEgp3B,aAAaC,eAAe780B,OAAO/oC,EAAEkp0B,WAAWttzB,GAAGmtB,OAAO/tB,KAAK4xY,KAAKr5Y,SAASvT,EAAE4b,GAAGZ,KAAKyr2B,OAAO1kc,UAAUh5Y,QAAQ/tB,KAAK4xY,KAAKk9d,aAAa9u2B,KAAK4xY,KAAK47d,aAAanF,cAAc,CAACv40B,KAAKnuC,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQ6vzB,QAAQ,SAASvk3B,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQvmB,KAAKo20B,QAAQvk3B,EAAEgk3B,UAAU5j0B,KAAKgxgB,SAAS7/V,OAAOnlL,OAAO,KAAKpsC,EAAEgp3B,aAAaE,iBAAiB980B,QAAO,EAAG/tB,KAAKpQ,QAAQmtM,KAAK/8L,KAAKpQ,QAAQm42B,UAAU/n2B,KAAKyr2B,OAAO1kc,UAAUh5Y,QAAQ/tB,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMgoW,WAAW,CAAChoe,MAAM3+X,KAAKyr2B,QAAQ,IAAI9p3B,EAAE0wN,OAAOo6iB,YAAY,WAAW9qwB,EAAEoq3B,KAAK15pB,SAASryM,KAAKms2B,QAAQ,IAAIxq3B,EAAEoq3B,KAAK15pB,OAAOryM,MAAMA,KAAKpQ,QAAQw6L,UAAUpqL,KAAKms2B,QAAQp+vB,SAAS,GAAGpsH,EAAEqR,IAAIu5vB,aAAa,CAACwiH,aAAY,IAAKpt3B,EAAEqR,IAAIg82B,YAAYrt3B,EAAEip1B,QAAQ5nuB,OAAO,CAACz5D,WAAW,SAAS3oC,GAAGZ,KAAK4xY,KAAKhxY,EAAEZ,KAAKqjkB,WAAWzikB,EAAEyikB,WAAWrjkB,KAAK6m1B,MAAMjm1B,EAAEu/zB,OAAO2mB,WAAW,EAAEjc,SAAS,WAAWlp1B,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,aAAarjkB,KAAKyr1B,cAAczr1B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,WAAWrjkB,KAAKis1B,YAAYjs1B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,YAAYrjkB,KAAKgs1B,aAAahs1B,MAAMA,KAAKkiZ,aAAavga,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,gBAAgBrjkB,KAAKyr1B,cAAczr1B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,cAAcrjkB,KAAKis1B,YAAYjs1B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,gBAAgBrjkB,KAAKgs1B,aAAahs1B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,kBAAkBrjkB,KAAKiv2B,eAAejv2B,QAAQre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,cAAcrjkB,KAAKiv2B,eAAejv2B,MAAMre,EAAEgjlB,SAASh6d,GAAG3qG,KAAKqjkB,WAAW,aAAarjkB,KAAKkv2B,cAAclv2B,MAAM,EAAE8q0B,YAAY,WAAWnp1B,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,aAAarjkB,KAAKyr1B,cAAczr1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,WAAWrjkB,KAAKis1B,YAAYjs1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,YAAYrjkB,KAAKgs1B,aAAahs1B,MAAMA,KAAKkiZ,aAAavga,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,gBAAgBrjkB,KAAKyr1B,cAAczr1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,cAAcrjkB,KAAKis1B,YAAYjs1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,gBAAgBrjkB,KAAKgs1B,aAAahs1B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,kBAAkBrjkB,KAAKiv2B,eAAejv2B,QAAQre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,cAAcrjkB,KAAKiv2B,eAAejv2B,MAAMre,EAAEgjlB,SAAS13c,IAAIjtH,KAAKqjkB,WAAW,aAAarjkB,KAAKkv2B,cAAclv2B,MAAM,EAAEmv2B,YAAY,SAASvu2B,EAAE5b,GAAG,IAAIK,EAAE,CAAC,EAAE,QAAG,IAASub,EAAEw7B,QAAQ,CAAC,IAAIx7B,EAAEw7B,QAAQhoC,OAAO,OAAO/O,EAAEub,EAAEw7B,QAAQ,EAAE,KAAK,CAAC,GAAG,UAAUx7B,EAAE2lb,YAAY,OAAO,GAAGlhc,EAAEub,GAAGZ,KAAKov2B,aAAaxu2B,GAAG,MAAM,CAAC,IAAI+iE,EAAE3jE,KAAK4xY,KAAKgwb,2BAA2Bv80B,GAAGuU,EAAEoG,KAAK4xY,KAAKiwb,uBAAuBx80B,GAAGwb,EAAEb,KAAK4xY,KAAK4ub,mBAAmB5m0B,GAAGoG,KAAK4xY,KAAK4jB,KAAKxwa,EAAE,CAACimwB,OAAOpqvB,EAAE8g0B,WAAW/n0B,EAAE6p0B,eAAe9/vB,EAAEkiX,MAAMxgc,EAAEwgc,MAAMC,MAAMzgc,EAAEygc,MAAMg2F,cAAcl7gB,GAAG,EAAEwu2B,aAAa,SAASxu2B,GAAG,IAAI5b,EAAE4b,EAAEkkb,WAAWlkb,EAAEk7gB,cAAch3F,UAAUz/b,EAAE1D,EAAEgjlB,SAAS0qS,YAAYrq3B,EAAErD,EAAEgjlB,SAAS0qS,WAAW,OAAOhq3B,GAAGA,EAAE,KAAKA,EAAE,KAAKub,EAAE7S,OAAOuh3B,kBAAkB1u2B,EAAEw3zB,YAAYz20B,EAAEgjlB,SAASj/jB,KAAK9E,IAAG,IAAKjf,EAAEgjlB,SAAS0qS,WAAWrq3B,GAAE,EAAG,EAAEym2B,cAAc,SAAS7q1B,GAAMZ,KAAK4xY,KAAKspb,SAASl7zB,KAAKmv2B,YAAYvu2B,EAAE,aAAc,EAAEqr1B,YAAY,SAASrr1B,GAAMZ,KAAK4xY,KAAKspb,SAASl7zB,KAAKmv2B,YAAYvu2B,EAAE,WAAY,EAAEqu2B,eAAe,SAASru2B,GAAG,GAAGZ,KAAK4xY,KAAKspb,QAAQ,CAAC,IAAIl20B,EAAE,cAAcgb,KAAKkiZ,cAAcl9Z,EAAE,iBAAiBgb,KAAKmv2B,YAAYvu2B,EAAE5b,EAAE,CAAC,EAAEkq3B,cAAc,SAAStu2B,GAAMZ,KAAK4xY,KAAKspb,SAASl7zB,KAAKmv2B,YAAYvu2B,EAAE,aAAc,EAAEor1B,aAAa,SAASpr1B,GAAMZ,KAAK4xY,KAAKspb,SAASl7zB,KAAKmv2B,YAAYvu2B,EAAE,YAAa,EAAEshZ,UAAU,WAAW,IAAIl9Z,EAAE4b,EAAEtS,UAAUC,UAAUlJ,EAAEL,EAAEuD,QAAQ,SAAS,GAAGlD,EAAE,EAAE,OAAO8gC,SAASnhC,EAAEmkG,UAAU9jG,EAAE,EAAEL,EAAEuD,QAAQ,IAAIlD,IAAI,IAAI,GAAGL,EAAEuD,QAAQ,YAAY,EAAE,CAAC,IAAIo7E,EAAE3+E,EAAEuD,QAAQ,OAAO,OAAO49B,SAASnhC,EAAEmkG,UAAUxlB,EAAE,EAAE3+E,EAAEuD,QAAQ,IAAIo7E,IAAI,GAAG,CAAC,IAAI/pE,EAAE5U,EAAEuD,QAAQ,SAAS,OAAOqR,EAAE,GAAGusB,SAASnhC,EAAEmkG,UAAUvvF,EAAE,EAAE5U,EAAEuD,QAAQ,IAAIqR,IAAI,GAAG,IAAIjY,EAAEqR,IAAIy5vB,YAAY,aAAa,cAAc9qwB,EAAEqR,IAAIg82B,aAAart3B,EAAEww1B,OAAO05B,MAAMlq3B,EAAEww1B,OAAOnvuB,OAAO,CAACwwuB,iBAAiB,WAAW,OAAOxz0B,KAAKgv0B,qBAAqBrt1B,EAAEww1B,OAAO/x0B,UAAUoz0B,iBAAiB1y0B,MAAMd,MAAMA,KAAKuv2B,wBAAwB,EAAEA,uBAAuB,WAAW,GAAGvv2B,KAAKpQ,QAAQw2vB,UAAU,CAAC,IAAIxlvB,EAAEZ,KAAKkx0B,MAAMls1B,EAAE,CAAC,WAAW,YAAY,YAAY,WAAW,cAAc,aAAa,WAAW,aAAagb,KAAKkiZ,UAAUl9Z,EAAEgJ,OAAO,CAAC,gBAAgB,cAAc,gBAAgB,oBAAoBhJ,EAAEgJ,OAAO,CAAC,gBAAgBrM,EAAE2hlB,QAAQr5d,SAASrpG,EAAE,qBAAqBjf,EAAEgjlB,SAASh6d,GAAG/pG,EAAE,QAAQZ,KAAKwv2B,cAAcxv2B,MAAMre,EAAEgjlB,SAASh6d,GAAG/pG,EAAE,WAAWZ,KAAKy70B,YAAYz70B,MAAM,IAAI,IAAI3a,EAAE,EAAEA,EAAEL,EAAEoP,OAAO/O,IAAI1D,EAAEgjlB,SAASh6d,GAAG/pG,EAAE5b,EAAEK,GAAG2a,KAAKyv2B,gBAAgBzv2B,MAAMre,EAAEip1B,QAAQoG,aAAahx0B,KAAK83Y,SAAS,IAAIn2Z,EAAEip1B,QAAQoG,WAAWhx0B,MAAMA,KAAKpQ,QAAQ67U,WAAWzrU,KAAK83Y,SAAS/pS,SAAS,CAAC,EAAEm0S,UAAU,WAAW,IAAIl9Z,EAAE4b,EAAEtS,UAAUC,UAAUlJ,EAAEL,EAAEuD,QAAQ,SAAS,GAAGlD,EAAE,EAAE,OAAO8gC,SAASnhC,EAAEmkG,UAAU9jG,EAAE,EAAEL,EAAEuD,QAAQ,IAAIlD,IAAI,IAAI,GAAGL,EAAEuD,QAAQ,YAAY,EAAE,CAAC,IAAIo7E,EAAE3+E,EAAEuD,QAAQ,OAAO,OAAO49B,SAASnhC,EAAEmkG,UAAUxlB,EAAE,EAAE3+E,EAAEuD,QAAQ,IAAIo7E,IAAI,GAAG,CAAC,IAAI/pE,EAAE5U,EAAEuD,QAAQ,SAAS,OAAOqR,EAAE,GAAGusB,SAASnhC,EAAEmkG,UAAUvvF,EAAE,EAAE5U,EAAEuD,QAAQ,IAAIqR,IAAI,GAAG,IAAIjY,EAAE2r3B,WAAW,CAACoC,aAAa,SAAS9u2B,GAAG,IAAI,IAAI5b,EAAE,GAAGK,EAAE,EAAEs+E,EAAE/iE,EAAExM,OAAO/O,EAAEs+E,EAAEt+E,IAAIiP,MAAMyb,QAAQnP,EAAEvb,IAAIL,EAAE8O,KAAKnS,EAAE2r3B,WAAWoC,aAAa9u2B,EAAEvb,KAAKL,EAAE8O,KAAKkM,KAAKut2B,YAAY3s2B,EAAEvb,KAAK,OAAOL,CAAC,EAAEuo3B,YAAY,SAAS3s2B,GAAG,OAAOjf,EAAEgmV,OAAO/mU,EAAE+gI,IAAI/gI,EAAE2oN,IAAI,GAAG,WAAW,IAAI3oN,EAAE,CAACkslB,GAAG,EAAE95Y,GAAG,EAAE7vN,EAAE,EAAE4tM,GAAG,EAAEsiK,GAAG,EAAEovF,GAAG,EAAE9yR,GAAG,EAAE5lB,GAAG,GAAGpoJ,EAAEgp3B,aAAahp3B,EAAEqhH,OAAOrhH,EAAEgp3B,cAAc,CAAC,EAAE,CAACS,aAAa,SAASxq2B,GAAG,IAAI5b,EAAEK,EAAEs+E,EAAE/iE,EAAExM,OAAOwF,EAAE,EAAEiH,EAAErb,KAAKytB,GAAG,IAAI,GAAG0wD,EAAE,EAAE,CAAC,IAAI,IAAI1gF,EAAE,EAAEA,EAAE0gF,EAAE1gF,IAAI+B,EAAE4b,EAAE3d,GAAgB2W,KAAbvU,EAAEub,GAAG3d,EAAE,GAAG0gF,IAAS4lJ,IAAIvkO,EAAEukO,KAAK1oN,GAAG,EAAErb,KAAK4wB,IAAIpxB,EAAE28I,IAAI9gI,GAAGrb,KAAK4wB,IAAI/wB,EAAEs8I,IAAI9gI,IAAIjH,EAAE,QAAQA,EAAE,QAAQ,CAAC,CAAC,OAAOpU,KAAKM,IAAI8T,EAAE,EAAE+12B,gBAAgB,SAAS/u2B,EAAE5b,GAAG,IAAIK,EAAEsrB,WAAW/P,GAAGm9H,QAAQ/4I,GAAG2+E,EAAEhiF,EAAEgk3B,UAAUnn0B,QAAQ78C,EAAEgk3B,UAAUnn0B,OAAOwpB,QAAQpuD,EAAE+pE,GAAGA,EAAEisyB,WAAW/u2B,EAAEjH,GAAGA,EAAEote,UAAU/jf,EAAE2W,GAAGA,EAAEo4D,QAAQ,GAAGnxD,GAAG5d,EAAE,CAAC,IAAI82B,EAAE10B,EAAEnE,MAAM,KAAKmE,EAAEwb,EAAEkZ,EAAE,GAAGh2B,QAAQ,0BAA0B,KAAK8c,GAAGkZ,EAAE,GAAG92B,EAAEA,GAAG,IAAI82B,EAAE3lB,OAAO,IAAI/O,EAAEA,EAAEpC,EAAE82B,EAAE,GAAG,CAAC,OAAO10B,CAAC,EAAE8l3B,aAAa,SAASnm3B,EAAEK,EAAEs+E,GAAG,IAAI/pE,EAAEiH,EAA0B,OAAxB8iE,EAAEhiF,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEpiG,EAAE+iE,GAAUt+E,GAAGwb,EAAE,CAAC,KAAK,KAAKmP,YAAY3qB,EAAE,WAAW2qB,KAAKnP,EAAE,CAACxb,GAAG,YAAY2qB,OAAOnP,EAAExb,GAAGuU,EAAE5U,GAAG,MAAM,IAAI6b,EAAEtY,QAAQ,MAAM5G,EAAEgp3B,aAAagF,gBAAgB,KAAK3q3B,EAAE2+E,EAAEmphB,IAAI,OAAO9nmB,GAAG,MAAM,IAAI6b,EAAEtY,QAAQ,MAAM5G,EAAEgp3B,aAAagF,gBAAgB,KAAK3q3B,EAAE2+E,EAAEqvI,IAAI,MAAMrxN,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE2+E,EAAExgF,GAAG,OAAmByW,GAAX5U,GAAG,UAAa,QAAQrD,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE,QAAQ2+E,EAAEotH,IAAI,OAAO/rM,GAAG,KAAKrD,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE,KAAK2+E,EAAE0vR,IAAI,SAAS1xW,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE2+E,EAAE8+W,IAAI,OAAQ7ob,CAAC,EAAEix2B,iBAAiB,SAAS7l3B,EAAEK,EAAEs+E,EAAE/pE,EAAEiH,GAAG,IAAI5d,EAA0B,OAAxB4d,EAAElf,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEpiG,EAAEC,GAAUxb,EAAE,iBAAiBA,EAAEA,EAAE,SAASs+E,EAAE,OAAO/pE,EAAE,eAAe,SAAS,IAAI,SAAS3W,EAAE+B,EAAE,IAAIrD,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE,IAAI6b,EAAEislB,IAAI,MAAMnrmB,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE6b,EAAE1d,GAAG,KAAK,MAAM,IAAI,OAAO6B,GAAG,QAAQ/B,EAAEtB,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE6b,EAAE8uJ,IAAI,MAAM,MAAM,IAAI,eAAe3qK,GAAG,OAAO/B,EAAEtB,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE,IAAI6b,EAAEkpI,IAAI,MAAM,MAAkB,QAAmB9mJ,GAAX+B,GAAG,SAAY,KAAKrD,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE,KAAK6b,EAAEkwL,IAAI,SAASpvM,EAAEgp3B,aAAagF,gBAAgB3q3B,EAAE6b,EAAE4hb,IAAI,MAAM,OAAOx/b,CAAC,EAAE2n3B,aAAa,WAAW,IAAIhq2B,EAAEjf,EAAEkjF,QAAQ3jF,MAAM,KAAK,OAAO,IAAIilC,SAASvlB,EAAE,GAAG,KAAK,IAAIulB,SAASvlB,EAAE,GAAG,GAAG,GAAG,CAAvxD,GAA2xDjf,EAAEwpa,KAAKnoT,OAAOrhH,EAAE0s1B,SAAS,CAACwhC,kBAAkB,SAASjv2B,EAAE5b,EAAEK,EAAEs+E,GAAG,OAAO3jE,KAAK8v2B,uBAAuBlv2B,EAAEvb,EAAEs+E,KAAK3jE,KAAK8v2B,uBAAuB9q3B,EAAEK,EAAEs+E,IAAI3jE,KAAK8v2B,uBAAuBlv2B,EAAE5b,EAAEK,KAAK2a,KAAK8v2B,uBAAuBlv2B,EAAE5b,EAAE2+E,EAAE,EAAEmsyB,uBAAuB,SAASlv2B,EAAE5b,EAAEK,GAAG,OAAOA,EAAE1B,EAAEid,EAAEjd,IAAIqB,EAAEuB,EAAEqa,EAAEra,IAAIvB,EAAErB,EAAEid,EAAEjd,IAAI0B,EAAEkB,EAAEqa,EAAEra,EAAE,IAAI5E,EAAE0z1B,SAASzygB,QAAQ,CAACw4E,WAAW,WAAW,IAAIx6Y,EAAE5b,EAAEK,EAAEs+E,EAAE3jE,KAAK+v2B,sBAAsBn22B,EAAE+pE,EAAEA,EAAEvvE,OAAO,EAAE,GAAG4L,KAAKgw2B,+BAA+B,OAAM,EAAG,IAAIpv2B,EAAEhH,EAAE,EAAEgH,GAAG,EAAEA,IAAI,GAAG5b,EAAE2+E,EAAE/iE,EAAE,GAAGvb,EAAEs+E,EAAE/iE,GAAGZ,KAAKiw2B,6BAA6Bjr3B,EAAEK,EAAEub,EAAE,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEoo2B,oBAAoB,SAASpo2B,EAAE5b,GAAG,QAAQgb,KAAK4xY,MAAM5xY,KAAKkw2B,mBAAmBlw2B,KAAK4xY,KAAK4vb,mBAAmB5g0B,GAAG5b,EAAE,EAAEkr3B,mBAAmB,SAAStv2B,EAAE5b,GAAG,IAAIK,EAAE2a,KAAK+v2B,sBAAsBpsyB,EAAEt+E,EAAEA,EAAE+O,OAAO,EAAEwF,EAAEvU,EAAEA,EAAEs+E,EAAE,GAAG,KAAK9iE,EAAE8iE,EAAE,EAAE,OAAO3jE,KAAKgw2B,6BAA6B,IAAIhw2B,KAAKiw2B,6BAA6Br22B,EAAEgH,EAAEC,EAAE7b,EAAE,EAAE,EAAE,EAAEgr3B,6BAA6B,SAASpv2B,GAAG,IAAI5b,EAAEgb,KAAK+v2B,sBAAsB1q3B,EAAEL,EAAEA,EAAEoP,OAAO,EAAE,OAAgBpP,IAATK,GAAGub,GAAG,IAAS,CAAC,EAAEqv2B,6BAA6B,SAASrv2B,EAAE5b,EAAEK,EAAEs+E,GAAG,IAAI/pE,EAAEiH,EAAE5d,EAAE+c,KAAK+v2B,sBAAsBpsyB,EAAEA,GAAG,EAAE,IAAI,IAAI5pD,EAAE10B,EAAE00B,EAAE4pD,EAAE5pD,IAAI,GAAGngB,EAAE3W,EAAE82B,EAAE,GAAGlZ,EAAE5d,EAAE82B,GAAGp4B,EAAE0s1B,SAASwhC,kBAAkBjv2B,EAAE5b,EAAE4U,EAAEiH,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEkv2B,oBAAoB,WAAW,IAAI/v2B,KAAK610B,cAAc,OAAO710B,KAAKmw2B,gBAAgB,IAAI,IAAIvv2B,EAAE,GAAG5b,EAAEgb,KAAK610B,gBAAgBxw1B,EAAE,EAAEA,EAAEL,EAAEoP,OAAO/O,IAAIub,EAAE9M,KAAKkM,KAAK4xY,KAAK4vb,mBAAmBx80B,EAAEK,KAAK,OAAOub,CAAC,IAAIjf,EAAEo1Z,QAAQn0E,QAAQ,CAACw4E,WAAW,WAAW,IAAIx6Y,EAAE5b,EAAEK,EAAEs+E,EAAE/pE,EAAEoG,KAAK+v2B,sBAAsB,OAAO/v2B,KAAKgw2B,mCAAmCru3B,EAAE0z1B,SAASj10B,UAAUg7Y,WAAW/6Y,KAAKL,QAAQY,EAAEhH,EAAExF,OAAOpP,EAAE4U,EAAE,GAAGvU,EAAEuU,EAAEgH,EAAE,GAAG+iE,EAAE/iE,EAAE,EAAEZ,KAAKiw2B,6BAA6B5q3B,EAAEL,EAAE2+E,EAAE,IAAI,IAAIhiF,EAAE+jc,QAAQggb,KAAK/j3B,EAAE+jc,QAAQ1iV,OAAO,CAACpzG,QAAQ,CAAC9G,SAAS,UAAUi5C,KAAK,CAAC,EAAEm3U,MAAK,GAAI3vU,WAAW,SAAS3oC,GAAG,GAAGjf,EAAEkjF,QAAQ,MAAM,MAAM,IAAIt9D,MAAM,yGAAqJ,IAAIviB,EAAhDrD,EAAE+jc,QAAQtlb,UAAUmpC,WAAWlpC,KAAKL,KAAKY,GAASZ,KAAKow2B,UAAU,CAAC,EAAEzu3B,EAAE0u3B,aAAarw2B,KAAKpQ,QAAQmyC,OAAO/8C,EAAE,IAAIrD,EAAE0u3B,YAAYrw2B,KAAKpQ,QAAQmyC,MAAM/hC,KAAKow2B,UAAUzu3B,EAAE0u3B,YAAY9xP,MAAMv5nB,EAAEgb,KAAKow2B,UAAUzu3B,EAAE0u3B,YAAY9xP,MAAM5zgB,GAAG,SAAS3qG,KAAKsw2B,gBAAgBtw2B,OAAOre,EAAE4u3B,aAAavw2B,KAAKpQ,QAAQspX,OAAOl0X,EAAE,IAAIrD,EAAE4u3B,YAAYvw2B,KAAKpQ,QAAQspX,MAAMl5W,KAAKow2B,UAAUzu3B,EAAE4u3B,YAAYhyP,MAAMv5nB,EAAEgb,KAAKow2B,UAAUzu3B,EAAE4u3B,YAAYhyP,MAAM5zgB,GAAG,SAAS3qG,KAAKsw2B,gBAAgBtw2B,OAAOre,EAAEqmX,QAAQhoW,IAAI,EAAE0sU,MAAM,SAAS9rU,GAAG,IAAI5b,EAAEK,EAAE1D,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,gBAAgBijE,GAAE,EAAG,IAAI,IAAI/pE,KAAKoG,KAAKow2B,UAAUpw2B,KAAKow2B,UAAUxk3B,eAAegO,KAAK5U,EAAEgb,KAAKow2B,UAAUx22B,GAAG422B,WAAW5v2B,MAAM+iE,IAAIhiF,EAAE2hlB,QAAQp5d,SAASllH,EAAE,6BAA6BrD,EAAE2hlB,QAAQr5d,SAASjlH,EAAEmlI,WAAW,GAAG,4BAA4BxmD,GAAE,GAAIt+E,EAAE8qG,YAAYnrG,IAAI,OAAOK,CAAC,EAAE8nV,SAAS,WAAW,IAAI,IAAIvsU,KAAKZ,KAAKow2B,UAAUpw2B,KAAKow2B,UAAUxk3B,eAAegV,IAAIZ,KAAKow2B,UAAUxv2B,GAAG6v2B,eAAe,EAAEC,kBAAkB,SAAS9v2B,GAAG,IAAI,IAAI5b,KAAKgb,KAAKow2B,UAAUpw2B,KAAKow2B,UAAUpr3B,aAAarD,EAAE0u3B,aAAarw2B,KAAKow2B,UAAUpr3B,GAAGsQ,WAAWsL,EAAE,EAAE0v2B,gBAAgB,SAAS1v2B,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAO,IAAI,IAAI1I,KAAK2a,KAAKow2B,UAAUpw2B,KAAKow2B,UAAU/q3B,KAAKL,GAAGgb,KAAKow2B,UAAU/q3B,GAAGyoH,SAAS,IAAInsH,EAAEqR,IAAIu5vB,aAAa,CAACokH,qBAAoB,EAAGC,aAAY,IAAKjv3B,EAAEqR,IAAIy5vB,YAAY,WAAWzsvB,KAAKpQ,QAAQgh3B,cAAc5w2B,KAAK4w2B,YAAY,IAAIjv3B,EAAE+jc,QAAQggb,KAAK1l2B,KAAKol0B,WAAWpl0B,KAAK4w2B,aAAa,GAAGjv3B,EAAEkv3B,QAAQlv3B,EAAE6p0B,MAAMxotB,OAAO,CAACz5D,WAAW,SAAS3oC,GAAGjf,EAAE2T,WAAW0K,KAAKY,GAAGZ,KAAK8w2B,OAAO,CAAC,EAAE9w2B,KAAK+w2B,eAAe,GAAG/w2B,KAAKgx2B,YAAY,KAAK,IAAIhs3B,EAAErD,EAAEkjF,QAAQ3jF,MAAM,KAAK,IAAIilC,SAASnhC,EAAE,GAAG,KAAKmhC,SAASnhC,EAAE,GAAG,KAAK,EAAErD,EAAEkv3B,QAAQjuiB,QAAQjhV,EAAE6oH,QAAQpqG,WAAWze,EAAEkv3B,QAAQjuiB,QAAQjhV,EAAEiq0B,MAAMxxX,OAAO,EAAEpkc,QAAQ,WAAW,OAAO,OAAOgK,KAAKgx2B,WAAW,EAAEljwB,QAAQ,WAAW9tG,KAAKhK,WAAWgK,KAAKgx2B,YAAY9yzB,QAAQ4vD,SAAS,EAAE0iwB,WAAW,SAAS5v2B,GAAG,IAAI5b,EAAEK,EAAE1D,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,wBAAwBijE,EAAE,EAAE/pE,EAAEoG,KAAKix2B,eAAe,GAAGpw2B,EAAEb,KAAKkx2B,gBAAgBtw2B,GAAG,IAAIZ,KAAKmx2B,kBAAkBxv3B,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,oCAAoCV,KAAK4xY,KAAKhxY,EAAE5b,EAAE,EAAEA,EAAE6b,EAAEzM,OAAOpP,IAAI6b,EAAE7b,GAAGgR,SAASgK,KAAKox2B,iBAAiBvw2B,EAAE7b,GAAGk5D,QAAQl+C,KAAKmx2B,kBAAkBxtyB,IAAI/pE,EAAEiH,EAAE7b,GAAGsxD,OAAO,GAAGqtB,EAAE,OAAO3jE,KAAKqx2B,mBAAmB1tyB,EAAE3jE,KAAKsx2B,kBAAkB3v3B,EAAE2hlB,QAAQ5ikB,OAAO,KAAK,wBAAwBrb,EAAE8qG,YAAYnwF,KAAKmx2B,mBAAmB9r3B,EAAE8qG,YAAYnwF,KAAKsx2B,mBAAmBjs3B,CAAC,EAAEor3B,cAAc,WAAW,IAAI,IAAI7v2B,KAAKZ,KAAK8w2B,OAAO9w2B,KAAK8w2B,OAAOll3B,eAAegV,KAAKZ,KAAKux2B,eAAevx2B,KAAK8w2B,OAAOlw2B,GAAGsxR,OAAOlyR,KAAK8w2B,OAAOlw2B,GAAGs9C,QAAQ6vD,OAAO/tG,KAAK8w2B,OAAOlw2B,GAAGs9C,SAASl+C,KAAK8w2B,OAAOlw2B,GAAGs9C,QAAQ4vD,UAAU9tG,KAAK8w2B,OAAOlw2B,GAAGs9C,QAAQ+uE,IAAI,UAAUjtH,KAAKwx2B,kBAAkBxx2B,MAAMitH,IAAI,WAAWjtH,KAAKyx2B,oBAAoBzx2B,OAAOA,KAAK8w2B,OAAO,CAAC,EAAE,IAAI,IAAI9r3B,EAAE,EAAEK,EAAE2a,KAAK+w2B,eAAe382B,OAAOpP,EAAEK,EAAEL,IAAIgb,KAAKux2B,eAAevx2B,KAAK+w2B,eAAe/r3B,GAAGktS,OAAOlyR,KAAK+w2B,eAAe/r3B,GAAGkqB,SAASlP,MAAMA,KAAK+w2B,eAAe,GAAG/w2B,KAAKsx2B,kBAAkB,IAAI,EAAEF,iBAAiB,SAASxw2B,EAAE5b,EAAEK,EAAEs+E,EAAE/pE,GAAG,IAAIiH,EAAED,EAAEoP,KAAKhQ,KAAK8w2B,OAAOjw2B,GAAG,CAAC,EAAEb,KAAK8w2B,OAAOjw2B,GAAGq9C,QAAQt9C,EAAEZ,KAAK8w2B,OAAOjw2B,GAAGqxR,OAAOlyR,KAAK2o0B,cAAc,CAAC34zB,KAAKnP,EAAEy1C,MAAM18C,EAAEkwG,UAAUnmC,EAAE,IAAI9iE,EAAEilD,UAAU9gE,EAAEkqB,SAASlP,KAAK8w2B,OAAOjw2B,GAAGq9C,QAAQ6vD,OAAO5kF,QAAQnpB,KAAK8w2B,OAAOjw2B,GAAGq9C,UAAUl+C,KAAK8w2B,OAAOjw2B,GAAG6w2B,YAAYrs3B,EAAE2a,KAAK8w2B,OAAOjw2B,GAAGq9C,QAAQysD,GAAG,UAAU3qG,KAAKwx2B,kBAAkBxx2B,MAAM2qG,GAAG,WAAW3qG,KAAKyx2B,oBAAoBzx2B,KAAK,EAAE2x2B,WAAW,WAAW,MAAM,mBAAmBzv3B,KAAKoM,UAAUC,aAAaqS,EAAEy/sB,QAAQ,EAAEsoH,cAAc,SAAS/n0B,GAAG,IAAI5b,EAAErD,EAAE2hlB,QAAQ5ikB,OAAO,IAAIE,EAAEkpG,WAAW,GAAGlpG,EAAEklD,WAAWzgE,EAAE1D,EAAE2hlB,QAAQ5ikB,OAAO,OAAO,UAAUE,EAAEklD,WAAW9gE,EAAEipG,KAAK,IAAIjpG,EAAEmrG,YAAY9qG,GAAGub,EAAE01C,QAAQtxD,EAAEsxD,MAAM11C,EAAE01C,MAAMjxD,EAAEulM,UAAUhqL,EAAE01C,OAAO11C,EAAEkvB,OAAO9qC,EAAE4lM,UAAUhqL,EAAEkvB,KAAKzqC,EAAEulM,UAAUhqL,EAAEkvB,MAAM,IAAI6zC,EAAE3jE,KAAK2x2B,aAAa,aAAa,QAAQ,OAAOhw3B,EAAEgjlB,SAASh6d,GAAG3lH,EAAE,QAAQrD,EAAEgjlB,SAASrhU,iBAAiB34J,GAAG3lH,EAAE,YAAYrD,EAAEgjlB,SAASrhU,iBAAiB34J,GAAG3lH,EAAE,WAAWrD,EAAEgjlB,SAASrhU,iBAAiB34J,GAAG3lH,EAAE,aAAarD,EAAEgjlB,SAASrhU,iBAAiB34J,GAAG3lH,EAAE,QAAQrD,EAAEgjlB,SAASh4c,gBAAgBhiB,GAAG3lH,EAAE2+E,EAAE/iE,EAAEsO,SAAStO,EAAEuoB,SAASnkC,CAAC,EAAEus3B,eAAe,SAAS3w2B,EAAE5b,GAAG,IAAIK,EAAE2a,KAAK2x2B,aAAa,aAAa,QAAQhw3B,EAAEgjlB,SAAS13c,IAAIrsH,EAAE,QAAQjf,EAAEgjlB,SAASrhU,iBAAiBr2I,IAAIrsH,EAAE,YAAYjf,EAAEgjlB,SAASrhU,iBAAiBr2I,IAAIrsH,EAAE,WAAWjf,EAAEgjlB,SAASrhU,iBAAiBr2I,IAAIrsH,EAAE,aAAajf,EAAEgjlB,SAASrhU,iBAAiBr2I,IAAIrsH,EAAE,QAAQjf,EAAEgjlB,SAASh4c,gBAAgBM,IAAIrsH,EAAEvb,EAAEL,EAAE,EAAEws3B,kBAAkB,SAAS5w2B,GAAGZ,KAAK8tG,UAAU9tG,KAAKgx2B,YAAYhx2B,KAAK8w2B,OAAOlw2B,EAAEs9C,SAASv8D,EAAE2hlB,QAAQr5d,SAASjqG,KAAKgx2B,YAAY9+kB,OAAO,uCAAuClyR,KAAK4x2B,sBAAsB5x2B,KAAKw1Z,KAAK,SAAS,EAAEi8c,oBAAoB,WAAWzx2B,KAAK6x2B,sBAAsBlw3B,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKgx2B,YAAY9+kB,OAAO,uCAAuClyR,KAAKgx2B,YAAY,KAAKhx2B,KAAKw1Z,KAAK,UAAU,EAAEs8c,eAAe,SAASlx2B,GAAG,IAAI5b,EAAEK,EAAEs+E,EAAE/pE,EAAEiH,EAAEb,KAAKsx2B,kBAAkBru3B,EAAE+c,KAAK+x2B,WAAWnx2B,GAAGmZ,EAAE92B,EAAEmR,OAAO,IAAI/O,EAAE,EAAEs+E,EAAE3jE,KAAK+w2B,eAAe382B,OAAO/O,EAAEs+E,EAAEt+E,IAAI2a,KAAKux2B,eAAevx2B,KAAK+w2B,eAAe1r3B,GAAG6sS,OAAOlyR,KAAK+w2B,eAAe1r3B,GAAG6pB,UAAU,IAAIlP,KAAK+w2B,eAAe,GAAGlw2B,EAAE+nH,YAAY/nH,EAAEqvF,YAAYrvF,EAAE+nH,YAAY,IAAI,IAAIpwG,EAAE,EAAEA,EAAEuB,EAAEvB,IAAI,YAAYv1B,EAAEu1B,KAAKv1B,EAAEu1B,GAAGxiB,UAAUhR,EAAErD,EAAE2hlB,QAAQ5ikB,OAAO,KAAK,GAAGG,GAAGjH,EAAEoG,KAAK2o0B,cAAc,CAACryxB,MAAMrzD,EAAEu1B,GAAG89B,MAAMxmB,KAAK7sC,EAAEu1B,GAAGsX,KAAKg2B,UAAU9gE,EAAEkqB,SAASjsB,EAAEu1B,GAAGtJ,SAASia,QAAQlmC,EAAEu1B,GAAG2Q,UAAUnpB,KAAK+w2B,eAAej92B,KAAK,CAACo+R,OAAOt4R,EAAEsV,SAASjsB,EAAEu1B,GAAGtJ,WAAW,EAAE0i2B,oBAAoB,WAAW,IAAIhx2B,EAAEZ,KAAKgx2B,YAAYU,YAAY1s3B,EAAEgb,KAAKqx2B,iBAAiBhs3B,EAAE2a,KAAKgx2B,YAAY9+kB,OAAOzrS,UAAU,EAAEuZ,KAAK8x2B,eAAe9x2B,KAAKgx2B,YAAY9yzB,SAASl+C,KAAKsx2B,kBAAkB5n1B,MAAM1/B,IAAI3E,EAAE,KAAK,IAAIub,IAAIjf,EAAE2hlB,QAAQr5d,SAASjqG,KAAKmx2B,kBAAkB,8BAA8Bxv3B,EAAE2hlB,QAAQr5d,SAASjqG,KAAKsx2B,kBAAkB,6BAA6B1w2B,IAAI5b,IAAIrD,EAAE2hlB,QAAQr5d,SAASjqG,KAAKmx2B,kBAAkB,iCAAiCxv3B,EAAE2hlB,QAAQr5d,SAASjqG,KAAKsx2B,kBAAkB,gCAAgCtx2B,KAAKsx2B,kBAAkB5n1B,MAAM8yB,QAAQ,QAAQx8C,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMqoW,cAAc,EAAE6K,oBAAoB,WAAW7x2B,KAAKsx2B,kBAAkB5n1B,MAAM8yB,QAAQ,OAAO76D,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKmx2B,kBAAkB,8BAA8Bxv3B,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKmx2B,kBAAkB,iCAAiCxv3B,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKsx2B,kBAAkB,4BAA4B3v3B,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKsx2B,kBAAkB,+BAA+Btx2B,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMsoW,cAAc,IAAItl3B,EAAE+j3B,KAAK/j3B,EAAE+j3B,MAAM,CAAC,EAAE/j3B,EAAE+j3B,KAAK1zxB,QAAQrwF,EAAE6p0B,MAAMxotB,OAAO,CAACz5D,WAAW,SAAS3oC,GAAGZ,KAAK4xY,KAAKhxY,EAAEZ,KAAKon2B,WAAWxm2B,EAAEu/zB,OAAOknC,UAAUrn2B,KAAKgy2B,UAAS,EAAGhy2B,KAAKqjkB,WAAWzikB,EAAEhR,QAAQ+g3B,oBAAoBhv3B,EAAE2hlB,QAAQ5ikB,OAAO,MAAM,uBAAuBV,KAAKon2B,YAAY,KAAKpn2B,KAAKiy2B,kBAAiB,EAAGjy2B,KAAK4xY,KAAKjnS,GAAG,WAAW3qG,KAAKwo2B,YAAYxo2B,KAAK,EAAE+jG,QAAQ,WAAW/jG,KAAK4xY,KAAK3kR,IAAI,WAAWjtH,KAAKwo2B,YAAYxo2B,MAAMA,KAAKqjkB,aAAarjkB,KAAKon2B,WAAWl3wB,YAAYlwF,KAAKqjkB,YAAYrjkB,KAAKqjkB,WAAW,KAAK,EAAEglS,cAAc,SAASzn2B,GAAG,OAAOZ,KAAKqjkB,YAAYzikB,EAAEsl2B,QAAQtl2B,EAAEsl2B,SAAS,GAAG,IAAItl2B,EAAEsl2B,QAAQ9x2B,QAAQ4L,KAAKiy2B,iBAAiBrx2B,EAAEsl2B,QAAQ9x2B,OAAO,GAAG4L,KAAKiy2B,mBAAmBtw3B,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKqjkB,WAAW,+BAA+BrjkB,KAAKiy2B,kBAAiB,IAAKtw3B,EAAE2hlB,QAAQr5d,SAASjqG,KAAKqjkB,WAAW,+BAA+BrjkB,KAAKiy2B,kBAAiB,GAAIjy2B,KAAKqjkB,WAAWz4Y,WAAWhqL,EAAEsl2B,QAAQ9x2B,OAAO,EAAE,8CAA8CwM,EAAEsl2B,QAAQ,gBAAgB,IAAI,SAAStl2B,EAAEkvB,KAAK,UAAUlvB,EAAEkvB,MAAMlvB,EAAEsl2B,SAASlm2B,KAAKgy2B,UAAS,EAAGhy2B,KAAKqjkB,WAAW35iB,MAAM4/E,WAAW,YAAYtpG,KAAKgy2B,UAAS,EAAGhy2B,KAAKqjkB,WAAW35iB,MAAM4/E,WAAW,UAAUtpG,MAAMA,IAAI,EAAEsq2B,eAAe,SAAS1p2B,GAAG,IAAI5b,EAAEgb,KAAK4xY,KAAK4vb,mBAAmB5g0B,GAAGvb,EAAE2a,KAAKqjkB,WAAW,OAAOrjkB,KAAKqjkB,aAAarjkB,KAAKgy2B,WAAW3s3B,EAAEqkC,MAAM4/E,WAAW,WAAW3nH,EAAE2hlB,QAAQ3sK,YAAYtxa,EAAEL,IAAIgb,IAAI,EAAE8q2B,YAAY,WAAW,OAAO9q2B,KAAKqjkB,YAAY1hlB,EAAE2hlB,QAAQr5d,SAASjqG,KAAKqjkB,WAAW,8BAA8BrjkB,IAAI,EAAEgr2B,YAAY,WAAW,OAAOhr2B,KAAKqjkB,YAAY1hlB,EAAE2hlB,QAAQ55d,YAAY1pG,KAAKqjkB,WAAW,8BAA8BrjkB,IAAI,EAAEwo2B,YAAY,WAAWxo2B,KAAKqjkB,aAAarjkB,KAAKqjkB,WAAW35iB,MAAM4/E,WAAW,SAAS,IAAI3nH,EAAE0u3B,YAAY1u3B,EAAEkv3B,QAAQ7twB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,QAAQ3unB,QAAQ,CAACg2vB,SAAS,CAAC,EAAEtmjB,QAAQ,CAAC,EAAEgtpB,UAAU,CAAC,EAAEp5oB,OAAO,CAAC,EAAEyhQ,OAAO,CAAC,EAAEkxZ,aAAa,CAAC,GAAGt8zB,WAAW,SAAS3oC,GAAG,IAAI,IAAI5b,KAAKgb,KAAKpQ,QAAQoQ,KAAKpQ,QAAQhE,eAAe5G,IAAI4b,EAAE5b,KAAK4b,EAAE5b,GAAGrD,EAAEqhH,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQ5K,GAAG4b,EAAE5b,KAAKgb,KAAKix2B,cAAc,oBAAoBtv3B,EAAEkv3B,QAAQzw2B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,EAAE,EAAEsw2B,gBAAgB,SAAStw2B,GAAG,MAAM,CAAC,CAAC5K,QAAQgK,KAAKpQ,QAAQg2vB,SAAS1nsB,QAAQ,IAAIv8D,EAAE+j3B,KAAKrwB,SAASz00B,EAAEZ,KAAKpQ,QAAQg2vB,UAAUtvsB,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQ6/T,UAAU,CAAC5vvB,QAAQgK,KAAKpQ,QAAQ0vM,QAAQphJ,QAAQ,IAAIv8D,EAAE+j3B,KAAK3ud,QAAQn2Y,EAAEZ,KAAKpQ,QAAQ0vM,SAAShpJ,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQzmP,SAAS,CAACtpM,QAAQgK,KAAKpQ,QAAQ081B,UAAUpuyB,QAAQ,IAAIv8D,EAAE+j3B,KAAKhf,UAAU9l1B,EAAEZ,KAAKpQ,QAAQ081B,WAAWh2yB,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQuma,WAAW,CAACt21B,QAAQgK,KAAKpQ,QAAQsjN,OAAOh1J,QAAQ,IAAIv8D,EAAE+j3B,KAAKrzpB,OAAOzxM,EAAEZ,KAAKpQ,QAAQsjN,QAAQ58J,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQ7yO,QAAQ,CAACl9M,QAAQgK,KAAKpQ,QAAQ+kd,OAAOz2Z,QAAQ,IAAIv8D,EAAE+j3B,KAAKvzB,OAAOvx0B,EAAEZ,KAAKpQ,QAAQ+kd,QAAQr+Z,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQ4uB,QAAQ,CAAC3+c,QAAQgK,KAAKpQ,QAAQi22B,aAAa3nzB,QAAQ,IAAIv8D,EAAE+j3B,KAAKhxB,aAAa9z0B,EAAEZ,KAAKpQ,QAAQi22B,cAAcvvzB,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ+9E,QAAQ8/a,cAAc,EAAEkM,WAAW,SAASnx2B,GAAG,MAAM,CAAC,CAAC5K,QAAQ4K,EAAEyo2B,cAAc/yzB,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQpgI,OAAOtxL,MAAMxmB,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQpgI,OAAO93M,KAAK5gB,SAAStO,EAAEyo2B,cAAclg1B,QAAQvoB,GAAG,CAAC5K,QAAQ4K,EAAEio2B,iBAAiBvyzB,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ49f,KAAKtvzB,MAAMxmB,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQ49f,KAAK910B,KAAK5gB,SAAStO,EAAEio2B,iBAAiB1/0B,QAAQvoB,GAAG,CAAC01C,MAAM30D,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQipV,QAAQ36oB,MAAMxmB,KAAKnuC,EAAEgk3B,UAAU5j0B,KAAKimU,QAAQipV,QAAQnhqB,KAAK5gB,SAASlP,KAAK8tG,QAAQ3kF,QAAQnpB,MAAM,EAAE1K,WAAW,SAASsL,GAAwB,IAAI,IAAI5b,KAA7BrD,EAAE2T,WAAW0K,KAAKY,GAAgBZ,KAAK8w2B,OAAO9w2B,KAAK8w2B,OAAOll3B,eAAe5G,IAAI4b,EAAEhV,eAAe5G,IAAIgb,KAAK8w2B,OAAO9r3B,GAAGk5D,QAAQ5oD,WAAWsL,EAAE5b,GAAG,IAAIrD,EAAE4u3B,YAAY5u3B,EAAEkv3B,QAAQ7twB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,QAAQ3unB,QAAQ,CAACspX,KAAK,CAACg5f,oBAAoB,CAACnzc,UAAU,SAAStwY,MAAK,EAAGi+b,UAAU,UAAUzrC,YAAY,GAAGkxb,eAAc,IAAKvv0B,OAAO,CAAC,EAAE2+c,KAAK,KAAK+nQ,aAAa,MAAM//sB,WAAW,SAAS3oC,GAAGA,EAAEs4W,YAAO,IAASt4W,EAAEs4W,KAAKg5f,sBAAsBtx2B,EAAEs4W,KAAKg5f,oBAAoBly2B,KAAKpQ,QAAQspX,KAAKg5f,qBAAqBtx2B,EAAEs4W,KAAKg5f,oBAAoBvw3B,EAAEqhH,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQspX,KAAKg5f,oBAAoBtx2B,EAAEs4W,KAAKg5f,sBAAsBtx2B,EAAEgiC,SAAShiC,EAAEgiC,OAAOjhD,EAAEqhH,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQgzC,OAAOhiC,EAAEgiC,SAAShiC,EAAE2gf,OAAO3gf,EAAE2gf,KAAK5/f,EAAEqhH,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQ2xf,KAAK3gf,EAAE2gf,OAAOvhf,KAAKix2B,cAAc,oBAAoBtv3B,EAAEkv3B,QAAQzw2B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,GAAGZ,KAAKoy2B,sBAAsB,CAAC,EAAElB,gBAAgB,SAAStw2B,GAAG,IAAI5b,EAAEgb,KAAKpQ,QAAQ05vB,aAAa,MAAM,CAAC,CAACtzvB,QAAQgK,KAAKpQ,QAAQspX,KAAKh7T,QAAQ,IAAIv8D,EAAE4u3B,YAAYxE,KAAKnr2B,EAAE,CAAC0ovB,aAAatkwB,EAAEkt3B,oBAAoBly2B,KAAKpQ,QAAQspX,KAAKg5f,oBAAoB3wX,KAAKvhf,KAAKpQ,QAAQ2xf,OAAOjrc,MAAM30D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQ7sE,MAAM,CAACljX,QAAQgK,KAAKpQ,QAAQgzC,OAAOsb,QAAQ,IAAIv8D,EAAE4u3B,YAAY8B,OAAOzx2B,EAAE,CAAC0ovB,aAAatkwB,IAAIsxD,MAAM30D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQnjZ,QAAQ,EAAEmv0B,WAAW,SAASnx2B,GAAG,IAAI5b,EAAE,CAAC,CAACsxD,MAAM30D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQxkqB,KAAK6pB,MAAMxmB,KAAKnuC,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQxkqB,KAAKqD,KAAK5gB,SAASlP,KAAK62vB,MAAM1tuB,QAAQnpB,MAAM,CAACs2C,MAAM30D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQtupB,OAAO2T,MAAMxmB,KAAKnuC,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQtupB,OAAO7S,KAAK5gB,SAASlP,KAAK8tG,QAAQ3kF,QAAQnpB,OAAO,OAAOY,EAAE0x2B,iBAAiBtt3B,EAAE8O,KAAK,CAACwiD,MAAM30D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQ6oD,SAASxjsB,MAAMxmB,KAAKnuC,EAAEgk3B,UAAUzsf,KAAKlR,QAAQipV,QAAQ6oD,SAAShqtB,KAAK5gB,SAASlP,KAAKuy2B,gBAAgBpp1B,QAAQnpB,OAAOhb,CAAC,EAAEwr3B,WAAW,SAAS5v2B,GAAG,IAAI5b,EAAErD,EAAEkv3B,QAAQzw2B,UAAUow2B,WAAWnw2B,KAAKL,KAAKY,GAAG,OAAOZ,KAAKwy2B,iBAAiBxy2B,KAAKpQ,QAAQ05vB,aAAa3+oB,GAAG,uBAAuB3qG,KAAKwy2B,eAAexy2B,MAAMhb,CAAC,EAAEyr3B,cAAc,WAAWzw2B,KAAKpQ,QAAQ05vB,aAAar8nB,IAAI,uBAAuBjtH,KAAKwy2B,eAAexy2B,MAAMre,EAAEkv3B,QAAQzw2B,UAAUqw2B,cAAcpw2B,KAAKL,KAAK,EAAE8tG,QAAQ,WAAW9tG,KAAKhK,YAAYgK,KAAKgx2B,YAAY9yzB,QAAQu0zB,eAAe9w3B,EAAEkv3B,QAAQzw2B,UAAU0tG,QAAQztG,KAAKL,MAAM,EAAE62vB,MAAM,WAAW72vB,KAAKgx2B,YAAY9yzB,QAAQzxB,OAAOzsB,KAAKgx2B,aAAahx2B,KAAKgx2B,YAAY9yzB,QAAQ4vD,SAAS,EAAEykwB,gBAAgB,WAAWvy2B,KAAKgx2B,YAAY9yzB,QAAQo0zB,kBAAkBty2B,KAAKgx2B,aAAahx2B,KAAKgx2B,YAAY9yzB,QAAQ4vD,SAAS,EAAE0kwB,eAAe,WAAW,IAAI5x2B,EAA8Bvb,EAAE,IAA5B2a,KAAKpQ,QAAQ05vB,aAAqB/rV,YAAYnpa,OAAO4L,KAAKpQ,QAAQspX,OAAOt4W,EAAEZ,KAAK8w2B,OAAOnv3B,EAAE4u3B,YAAYxE,KAAKxtP,MAAMrsV,OAAO7sS,EAAE1D,EAAE2hlB,QAAQ55d,YAAY9oG,EAAE,oBAAoBjf,EAAE2hlB,QAAQr5d,SAASrpG,EAAE,oBAAoBA,EAAE3C,aAAa,QAAQ5Y,EAAE1D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQ7sE,KAAKv3X,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQigb,eAAehm2B,KAAKpQ,QAAQgzC,SAAShiC,EAAEZ,KAAK8w2B,OAAOnv3B,EAAE4u3B,YAAY8B,OAAO9zP,MAAMrsV,OAAO7sS,EAAE1D,EAAE2hlB,QAAQ55d,YAAY9oG,EAAE,oBAAoBjf,EAAE2hlB,QAAQr5d,SAASrpG,EAAE,oBAAoBA,EAAE3C,aAAa,QAAQ5Y,EAAE1D,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQnjZ,OAAOjhD,EAAEgk3B,UAAUzsf,KAAKlR,QAAQ+9E,QAAQkgb,gBAAgB,IAAItk3B,EAAE4u3B,YAAYxE,KAAKpq3B,EAAEip1B,QAAQ5nuB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,QAAQh1kB,WAAW,SAAS3oC,EAAE5b,GAAG,GAAGrD,EAAEip1B,QAAQxq0B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,GAAGjf,EAAE2T,WAAW0K,KAAKhb,GAAGgb,KAAK0y2B,cAAc1t3B,EAAEskwB,eAAetpvB,KAAK0y2B,yBAAyB/w3B,EAAE+t1B,cAAc,MAAM,IAAIno0B,MAAM,iDAAiDvH,KAAK2y2B,oBAAoB,CAAC,EAAE3y2B,KAAKgQ,KAAKruB,EAAE4u3B,YAAYxE,KAAKxtP,KAAK,IAAIl5nB,EAAE1D,EAAEkjF,QAAQ3jF,MAAM,KAAK,IAAIilC,SAAS9gC,EAAE,GAAG,KAAK8gC,SAAS9gC,EAAE,GAAG,KAAK,EAAE1D,EAAE4u3B,YAAYxE,KAAKnpiB,QAAQjhV,EAAE6oH,QAAQpqG,WAAWze,EAAE4u3B,YAAYxE,KAAKnpiB,QAAQjhV,EAAEiq0B,MAAMxxX,OAAO,EAAErsV,OAAO,YAAY/tG,KAAK4/Y,UAAU5/Y,KAAK4y2B,wBAAwB5y2B,KAAKw1Z,KAAK,UAAU,CAACt3W,QAAQl+C,KAAKgQ,OAAOhQ,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM8nW,UAAU,CAACvozB,QAAQl+C,KAAKgQ,OAAOruB,EAAEip1B,QAAQxq0B,UAAU2tG,OAAO1tG,KAAKL,MAAMA,KAAK0y2B,cAAc/nwB,GAAG,WAAW3qG,KAAK6y2B,iBAAiB7y2B,MAAM2qG,GAAG,cAAc3qG,KAAK8y2B,kBAAkB9y2B,MAAM,EAAE8tG,QAAQ,WAAW9tG,KAAK4/Y,WAAW5/Y,KAAK0y2B,cAAczlvB,IAAI,WAAWjtH,KAAK6y2B,iBAAiB7y2B,MAAMitH,IAAI,cAAcjtH,KAAK8y2B,kBAAkB9y2B,MAAMre,EAAEip1B,QAAQxq0B,UAAU0tG,QAAQztG,KAAKL,MAAMA,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMkoW,SAAS,CAAC3ozB,QAAQl+C,KAAKgQ,OAAOhQ,KAAKw1Z,KAAK,WAAW,CAACt3W,QAAQl+C,KAAKgQ,OAAO,EAAE66zB,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAK4xY,KAAKhxY,IAAIA,EAAEm/Z,eAAe/uU,QAAQhxF,KAAK0y2B,cAAcvmH,UAAUnsvB,KAAK6y2B,iBAAiB7y2B,MAAMA,KAAKu80B,SAAS,IAAI561B,EAAE+j3B,KAAK1zxB,QAAQhyE,KAAK4xY,MAAM5xY,KAAKu80B,SAAS8rB,cAAc,CAACv40B,KAAKnuC,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQvmB,KAAKo20B,QAAQvk3B,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQ6vzB,UAAUtl2B,EAAE4s2B,aAAaxt2B,KAAKu80B,SAASv80B,KAAK0p2B,iBAAiB1p2B,KAAK4xY,KAAKjnS,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAG,gBAAgB3qG,KAAKqk1B,aAAark1B,MAAM2qG,GAAGhpH,EAAE+j3B,KAAK/mW,MAAMioW,WAAW5m2B,KAAK0p2B,eAAe1p2B,MAAM,EAAE8q0B,YAAY,WAAW9q0B,KAAK4xY,OAAO5xY,KAAK0y2B,cAAcvmH,UAAUnsvB,KAAK8y2B,kBAAkB9y2B,MAAMA,KAAK2y2B,oBAAoB,CAAC,EAAE3y2B,KAAKu80B,SAASx4uB,UAAU/jG,KAAKu80B,SAAS,KAAKv80B,KAAK4xY,KAAK3kR,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMitH,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAMitH,IAAI,gBAAgBjtH,KAAKqk1B,aAAark1B,MAAMitH,IAAItrI,EAAE+j3B,KAAK/mW,MAAMioW,WAAW5m2B,KAAK0p2B,eAAe1p2B,MAAM,EAAEyy2B,aAAa,WAAWzy2B,KAAK0y2B,cAAcvmH,UAAU,SAASvrvB,GAAGZ,KAAK+y2B,aAAany2B,EAAE,EAAEZ,KAAK,EAAEysB,KAAK,WAAW,IAAI7rB,EAAE,IAAIjf,EAAE6t1B,WAAWxv0B,KAAK0y2B,cAAcvmH,UAAU,SAASnnwB,GAAGA,EAAEin3B,SAASrr2B,EAAEiia,SAAS79a,GAAGA,EAAEin3B,QAAO,EAAG,GAAGjs2B,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMynW,OAAO,CAACzlyB,OAAO//D,GAAG,EAAEoy2B,aAAa,SAASpy2B,GAAG,IAAI5b,EAAErD,EAAEwpa,KAAKkvO,MAAMz5nB,GAAGZ,KAAK2y2B,oBAAoB3t3B,KAAK4b,aAAajf,EAAE0z1B,UAAUz00B,aAAajf,EAAEo1Z,SAASn2Y,aAAajf,EAAE+k2B,UAAU1m1B,KAAK2y2B,oBAAoB3t3B,GAAG,CAACso0B,QAAQ3r0B,EAAE2r3B,WAAWoC,aAAa9u2B,EAAE600B,eAAe700B,aAAajf,EAAE0wN,OAAOryM,KAAK2y2B,oBAAoB3t3B,GAAG,CAACimwB,OAAOtpwB,EAAE2r3B,WAAWC,YAAY3s2B,EAAEyqvB,aAAat9tB,OAAOntB,EAAEkma,cAAclma,aAAajf,EAAEww1B,QAAQvx0B,aAAajf,EAAE+y1B,gBAAgB100B,KAAK2y2B,oBAAoB3t3B,GAAG,CAACimwB,OAAOtpwB,EAAE2r3B,WAAWC,YAAY3s2B,EAAEyqvB,eAAe,EAAEi9G,gBAAgB,WAAW,MAAM,CAACx40B,KAAKnuC,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQvmB,KAAKo20B,QAAQvk3B,EAAEgk3B,UAAUzsf,KAAK65L,SAAS75L,KAAK7iU,QAAQ6vzB,QAAQ,EAAEwD,eAAe,WAAW1p2B,KAAKu80B,SAAS8rB,cAAcro2B,KAAKso2B,kBAAkB,EAAEyK,aAAa,SAASny2B,GAAG,IAAI5b,EAAErD,EAAEwpa,KAAKkvO,MAAMz5nB,GAAGA,EAAEqr2B,QAAO,EAAGjs2B,KAAK2y2B,oBAAoB/m3B,eAAe5G,KAAK4b,aAAajf,EAAE0z1B,UAAUz00B,aAAajf,EAAEo1Z,SAASn2Y,aAAajf,EAAE+k2B,UAAU9l1B,EAAE0rvB,WAAWtsvB,KAAK2y2B,oBAAoB3t3B,GAAGso0B,SAAS1szB,aAAajf,EAAE0wN,QAAQzxM,EAAEwpvB,UAAUpqvB,KAAK2y2B,oBAAoB3t3B,GAAGimwB,QAAQrqvB,EAAEmma,UAAU/ma,KAAK2y2B,oBAAoB3t3B,GAAG+oC,UAAUntB,aAAajf,EAAEww1B,QAAQvx0B,aAAajf,EAAE+y1B,eAAe9z0B,EAAEwpvB,UAAUpqvB,KAAK2y2B,oBAAoB3t3B,GAAGimwB,QAAQrqvB,EAAE40Z,KAAK,gBAAgB,CAAC72B,MAAM/9X,IAAI,EAAEiy2B,iBAAiB,SAASjy2B,GAAG,IAAI5b,EAAEK,EAAEs+E,EAAE/iE,EAAE+9X,OAAO/9X,EAAE7S,QAAQ6S,EAAEZ,KAAKgz2B,aAAarvyB,GAAG3jE,KAAKpQ,QAAQ2xf,OAAOl8f,EAAE1D,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQ2xf,MAAM59a,EAAE/zE,QAAQ2xf,KAAKl8f,GAAG2a,KAAKpQ,QAAQsi3B,uBAAsBlt3B,EAAErD,EAAEwpa,KAAKnoT,OAAO,CAAC,EAAEhjG,KAAKpQ,QAAQsi3B,sBAAuBC,gBAAgBnt3B,EAAEgiC,MAAM28C,EAAE/zE,QAAQo3B,MAAMhiC,EAAE0ne,UAAU/oZ,EAAE/zE,QAAQ88d,WAAW/oZ,EAAE/zE,QAAQuvC,SAASx9C,EAAEqhH,OAAO,CAAC,EAAEr/B,EAAE/zE,SAAS+zE,EAAE/zE,QAAQu82B,QAAQnn3B,GAAG2+E,aAAahiF,EAAEww1B,QAAQxuwB,EAAEwoyB,SAASxoyB,EAAEwoyB,QAAQp+vB,SAASpqC,EAAEm0U,SAAS/pS,SAASpqC,EAAEgnC,GAAG,UAAU3qG,KAAKuu2B,kBAAkB5jwB,GAAG,YAAY3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,gBAAgB3qG,KAAKgs1B,aAAahs1B,MAAM2qG,GAAG,WAAW3qG,KAAKuu2B,iBAAiBvu2B,MAAM2qG,GAAG,cAAc3qG,KAAKuu2B,iBAAiBvu2B,OAAO2jE,EAAEwoyB,QAAQp+vB,QAAQ,EAAE+kwB,kBAAkB,SAASly2B,GAAG,IAAI5b,EAAE4b,EAAE+9X,OAAO/9X,EAAE7S,QAAQ6S,EAAE5b,EAAEin3B,QAAO,EAAGjn3B,EAAEmn3B,SAASnn3B,EAAEmn3B,QAAQr+vB,iBAAiB9oH,EAAE4K,QAAQu82B,eAAenn3B,EAAE4K,QAAQuvC,SACno+Bn/B,KAAKiz2B,uBAAuBju3B,aAAarD,EAAEww1B,OAAOny0B,KAAKgs2B,uBAAuBhn3B,IAAIA,EAAE4gF,SAAS5gF,EAAE4K,QAAQsj3B,wBAAwBlu3B,EAAE4K,QAAQsj3B,kBAAkBlu3B,aAAarD,EAAEww1B,QAAQnt1B,EAAE8yZ,SAAShqS,UAAU9oH,EAAEioI,IAAI,UAAUjtH,KAAKuu2B,iBAAiBvu2B,MAAMitH,IAAI,YAAYjtH,KAAKgs1B,aAAahs1B,MAAMitH,IAAI,gBAAgBjtH,KAAKgs1B,aAAahs1B,MAAMitH,IAAI,WAAWjtH,KAAKuu2B,iBAAiBvu2B,MAAMitH,IAAI,cAAcjtH,KAAKuu2B,iBAAiBvu2B,OAAOhb,EAAEmn3B,QAAQr+vB,SAAS,EAAEu2uB,aAAa,SAASzj1B,GAAGZ,KAAKu80B,SAAS+tB,eAAe1p2B,EAAEqqvB,OAAO,EAAEsjH,iBAAiB,SAAS3t2B,GAAG,IAAI5b,EAAE4b,EAAE7S,OAAO/I,EAAEin3B,QAAO,EAAGjs2B,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM+nW,SAAS,CAAC/ne,MAAM35Y,GAAG,EAAEgn2B,aAAa,SAASpr1B,GAAG,IAAI5b,EAAE4b,EAAEk7gB,cAAc9yF,eAAe,GAAG3jc,EAAE2a,KAAK4xY,KAAKiwb,uBAAuB780B,GAAG2+E,EAAE3jE,KAAK4xY,KAAK4ub,mBAAmBn70B,GAAGub,EAAE7S,OAAOq8vB,UAAUzmrB,EAAE,EAAEivyB,oBAAoB,WAAW,OAAO,IAAI5y2B,KAAK0y2B,cAAcn1c,YAAYnpa,MAAM,IAAIzS,EAAE4u3B,YAAY8B,OAAO1w3B,EAAEip1B,QAAQ5nuB,OAAO,CAAC2otB,QAAQ,CAACptM,KAAK,UAAUh1kB,WAAW,SAAS3oC,EAAE5b,GAAG,GAAGrD,EAAEip1B,QAAQxq0B,UAAUmpC,WAAWlpC,KAAKL,KAAKY,GAAGjf,EAAEwpa,KAAK71Z,WAAW0K,KAAKhb,GAAGgb,KAAKmz2B,iBAAiBnz2B,KAAKpQ,QAAQ05vB,eAAetpvB,KAAKmz2B,4BAA4Bxx3B,EAAE+t1B,cAAc,MAAM,IAAIno0B,MAAM,iDAAiDvH,KAAKgQ,KAAKruB,EAAE4u3B,YAAY8B,OAAO9zP,KAAK,IAAIl5nB,EAAE1D,EAAEkjF,QAAQ3jF,MAAM,KAAK,IAAIilC,SAAS9gC,EAAE,GAAG,KAAK8gC,SAAS9gC,EAAE,GAAG,KAAK,EAAE1D,EAAE4u3B,YAAY8B,OAAOzviB,QAAQjhV,EAAE6oH,QAAQpqG,WAAWze,EAAE4u3B,YAAY8B,OAAOzviB,QAAQjhV,EAAEiq0B,MAAMxxX,OAAO,EAAErsV,OAAO,YAAY/tG,KAAK4/Y,UAAU5/Y,KAAK4y2B,wBAAwB5y2B,KAAKw1Z,KAAK,UAAU,CAACt3W,QAAQl+C,KAAKgQ,OAAOhQ,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMmoW,YAAY,CAAC5ozB,QAAQl+C,KAAKgQ,OAAOruB,EAAEip1B,QAAQxq0B,UAAU2tG,OAAO1tG,KAAKL,MAAMA,KAAKmz2B,iBAAiBxowB,GAAG,WAAW3qG,KAAKoz2B,mBAAmBpz2B,MAAM2qG,GAAG,cAAc3qG,KAAKqz2B,oBAAoBrz2B,MAAM,EAAE8tG,QAAQ,WAAW9tG,KAAK4/Y,WAAW5/Y,KAAKmz2B,iBAAiBlmvB,IAAI,WAAWjtH,KAAKoz2B,mBAAmBpz2B,MAAMitH,IAAI,cAAcjtH,KAAKqz2B,oBAAoBrz2B,MAAMre,EAAEip1B,QAAQxq0B,UAAU0tG,QAAQztG,KAAKL,MAAMA,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAMooW,WAAW,CAAC7ozB,QAAQl+C,KAAKgQ,OAAOhQ,KAAKw1Z,KAAK,WAAW,CAACt3W,QAAQl+C,KAAKgQ,OAAO,EAAE66zB,SAAS,WAAW,IAAIjq0B,EAAEZ,KAAK4xY,KAAKhxY,IAAIA,EAAEm/Z,eAAe/uU,QAAQhxF,KAAKmz2B,iBAAiBhnH,UAAUnsvB,KAAKoz2B,mBAAmBpz2B,MAAMA,KAAKsz2B,eAAe,IAAI3x3B,EAAE6t1B,WAAWxv0B,KAAKu80B,SAAS,IAAI561B,EAAE+j3B,KAAK1zxB,QAAQhyE,KAAK4xY,MAAM5xY,KAAKu80B,SAAS8rB,cAAc,CAACv40B,KAAKnuC,EAAEgk3B,UAAUzsf,KAAK65L,SAASnwgB,OAAOyT,QAAQvmB,OAAO9vB,KAAK4xY,KAAKjnS,GAAG,YAAY3qG,KAAKqk1B,aAAark1B,MAAM,EAAE8q0B,YAAY,WAAW9q0B,KAAK4xY,OAAO5xY,KAAKmz2B,iBAAiBhnH,UAAUnsvB,KAAKqz2B,oBAAoBrz2B,MAAMA,KAAKsz2B,eAAe,KAAKtz2B,KAAKu80B,SAASx4uB,UAAU/jG,KAAKu80B,SAAS,KAAKv80B,KAAK4xY,KAAK3kR,IAAI,YAAYjtH,KAAKqk1B,aAAark1B,MAAM,EAAEyy2B,aAAa,WAAWzy2B,KAAKsz2B,eAAennH,UAAU,SAASvrvB,GAAGZ,KAAKmz2B,iBAAiBtwc,SAASjia,GAAGA,EAAE40Z,KAAK,iBAAiB,CAAC72B,MAAM/9X,GAAG,EAAEZ,KAAK,EAAEysB,KAAK,WAAWzsB,KAAK4xY,KAAK4jB,KAAK7za,EAAE+j3B,KAAK/mW,MAAM0nW,QAAQ,CAAC1lyB,OAAO3gE,KAAKsz2B,gBAAgB,EAAEhB,gBAAgB,WAAWty2B,KAAKmz2B,iBAAiBhnH,UAAU,SAASvrvB,GAAGZ,KAAKuz2B,aAAa,CAAC50e,MAAM/9X,GAAG,EAAEZ,MAAMA,KAAKysB,MAAM,EAAE2m1B,mBAAmB,SAASxy2B,IAAIA,EAAE+9X,OAAO/9X,EAAE7S,QAAQ6S,GAAG+pG,GAAG,QAAQ3qG,KAAKuz2B,aAAavz2B,KAAK,EAAEqz2B,oBAAoB,SAASzy2B,GAAG,IAAI5b,EAAE4b,EAAE+9X,OAAO/9X,EAAE7S,QAAQ6S,EAAE5b,EAAEioI,IAAI,QAAQjtH,KAAKuz2B,aAAavz2B,MAAMA,KAAKsz2B,eAAexrH,YAAY9iwB,EAAE,EAAEuu3B,aAAa,SAAS3y2B,GAAG,IAAI5b,EAAE4b,EAAE+9X,OAAO/9X,EAAE7S,QAAQ6S,EAAEZ,KAAKmz2B,iBAAiBrrH,YAAY9iwB,GAAGgb,KAAKsz2B,eAAezwc,SAAS79a,GAAGA,EAAEwwa,KAAK,UAAU,EAAE6ub,aAAa,SAASzj1B,GAAGZ,KAAKu80B,SAAS+tB,eAAe1p2B,EAAEqqvB,OAAO,EAAE2nH,oBAAoB,WAAW,OAAO,IAAI5y2B,KAAKmz2B,iBAAiB51c,YAAYnpa,MAAM,G,+BCR/0G,IAAI+xP,EAAgB,EAAQ,OAE5BzkK,EAAOj9F,QAAU,SAAUsJ,EAAQs5G,EAAKz3G,GACtC,IAAK,IAAIpF,KAAO68G,EAAK8+I,EAAcp4P,EAAQvD,EAAK68G,EAAI78G,GAAMoF,GAC1D,OAAO7B,CACT,C,0cCMIyl3B,EAAwB,WACxBC,EAAuC,oBAAfpxxB,WAE5BA,WAA+B,oBAAXl7F,OAAyBA,YACzB,IAAX,EAAAwa,EAAyB,EAAAA,EAChC,CAAC,EAsLCsxB,EAAgB,iBAzIpB,SAA4B3iB,EAAcoj2B,GACxC,IAAIC,EAAuBC,EA3CvBpp3B,EA6CAqp3B,EAAc,4BA5CXJ,EADHjp3B,EAAM,yBACoBip3B,EAAejp3B,IAAQ,GAAK,GA4CI,MAE1DwzV,EAAwB,SAAUrE,GAGpC,SAASqE,IAGP,IAFA,IAAI95U,EApCkBve,EACtBotjB,EAqCS7+iB,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAFA2P,EAAQy1U,EAAiBt5U,KAAKS,MAAM64U,EAAkB,CAAC35U,MAAMhS,OAAOqG,KAAU2L,MACxE40H,SA3CgBjvI,EA2Caue,EAAMkuB,MAAMzsC,MA1C/CotjB,EAAW,GACR,CACLpoc,GAAI,SAAYzsD,GACd60f,EAASj/iB,KAAKoqD,EAChB,EACA+uE,IAAK,SAAa/uE,GAChB60f,EAAWA,EAAS9hjB,OAAO,SAAU5N,GACnC,OAAOA,IAAM66D,CACf,EACF,EACArqD,IAAK,WACH,OAAOlO,CACT,EACAoO,IAAK,SAAa06H,EAAUqlvB,GAC1Bnu3B,EAAQ8oI,EACRskb,EAAS/gjB,QAAQ,SAAUksD,GACzB,OAAOA,EAAQv4D,EAAOmu3B,EACxB,EACF,IAyBS5v2B,CACT,EAZA,OAAe85U,EAAUrE,GAczB,IAAI+nH,EAAS1jH,EAAS59U,UAoCtB,OAlCAshc,EAAOzhH,gBAAkB,WACvB,IAAI70V,EAEJ,OAAOA,EAAO,CAAC,GAAQyo3B,GAAe7z2B,KAAK40H,QAASxpI,CACtD,EAEAs2c,EAAO/S,0BAA4B,SAAmC97G,GACpE,GAAI7yU,KAAKoyB,MAAMzsC,QAAUktV,EAAUltV,MAAO,CACxC,IAEImu3B,EAFAvylB,EAAWvhR,KAAKoyB,MAAMzsC,MACtB8oI,EAAWokN,EAAUltV,QAnEfY,EAsEGg7R,MAtEA59R,EAsEU8qI,GApEd,IAANloI,GAAW,EAAIA,GAAM,EAAI5C,EAGzB4C,GAAMA,GAAK5C,GAAMA,GAkElBmw3B,EAAc,GAEdA,EAA8C,mBAAzBJ,EAAsCA,EAAqBnylB,EAAU9yJ,GAAY+kvB,EAQlF,IAFpBM,GAAe,IAGb9z2B,KAAK40H,QAAQ7gI,IAAI8+U,EAAUltV,MAAOmu3B,GAGxC,CArFN,IAAkBvt3B,EAAG5C,CAsFjB,EAEA+9c,EAAOrjY,OAAS,WACd,OAAOr+D,KAAKoyB,MAAMolF,QACpB,EAEOwmO,CACT,CApD4B,CAoD1B,aAEFA,EAAS9kI,oBAAqBy6pB,EAAwB,CAAC,GAAyBE,GAAe,WAAiBh/vB,WAAY8+vB,GAE5H,IAAI11hB,EAAwB,SAAU81hB,GAGpC,SAAS91hB,IAGP,IAFA,IAAI1wO,EAEK+P,EAAQnpH,UAAUC,OAAQC,EAAO,IAAIC,MAAMgpH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFlpH,EAAKkpH,GAASppH,UAAUopH,GAmB1B,OAhBAhQ,EAASwmwB,EAAkB1z2B,KAAKS,MAAMiz2B,EAAmB,CAAC/z2B,MAAMhS,OAAOqG,KAAU2L,MAC1Eitb,kBAAe,EACtB1/U,EAAO59G,MAAQ,CACbhK,MAAO4nH,EAAOq/K,YAGhBr/K,EAAOymwB,SAAW,SAAUvlvB,EAAUqlvB,IACK,EAAtBvmwB,EAAO0/U,cAEN6mb,GAClBvmwB,EAAO7tG,SAAS,CACd/Z,MAAO4nH,EAAOq/K,YAGpB,EAEOr/K,CACT,EA1BA,OAAe0wO,EAAU81hB,GA4BzB,IAAIE,EAAUh2hB,EAAS79U,UAoCvB,OAlCA6z2B,EAAQtlb,0BAA4B,SAAmC97G,GACrE,IAAIo6G,EAAep6G,EAAUo6G,aAC7Bjtb,KAAKitb,aAAeA,QAAsDumb,EACxEvmb,CACJ,EAEAgnb,EAAQvhiB,kBAAoB,WACtB1yU,KAAKmpB,QAAQ0q1B,IACf7z2B,KAAKmpB,QAAQ0q1B,GAAalpwB,GAAG3qG,KAAKg02B,UAGpC,IAAI/mb,EAAejtb,KAAKoyB,MAAM66Z,aAC9Bjtb,KAAKitb,aAAeA,QAAsDumb,EACxEvmb,CACJ,EAEAgnb,EAAQ1giB,qBAAuB,WACzBvzU,KAAKmpB,QAAQ0q1B,IACf7z2B,KAAKmpB,QAAQ0q1B,GAAa5mvB,IAAIjtH,KAAKg02B,SAEvC,EAEAC,EAAQrnlB,SAAW,WACjB,OAAI5sR,KAAKmpB,QAAQ0q1B,GACR7z2B,KAAKmpB,QAAQ0q1B,GAAahg3B,MAE1Byc,CAEX,EAEA2j2B,EAAQ51yB,OAAS,WACf,OA/Ham5C,EA+HIx3G,KAAKoyB,MAAMolF,SA9HzBljH,MAAMyb,QAAQynG,GAAYA,EAAS,GAAKA,GA8HLx3G,KAAKrQ,MAAMhK,OA/HvD,IAAmB6xH,CAgIf,EAEOymO,CACT,CAlE4B,CAkE1B,aAGF,OADAA,EAAS7kI,eAAgBw6pB,EAAwB,CAAC,GAAyBC,GAAe,WAAkBD,GACrG,CACL51hB,SAAUA,EACVC,SAAUA,EAEd,EAOIi2hB,EAAqB,SAA4B3g3B,GACnD,IAAI41B,EAAU8J,IAEd,OADA9J,EAAQk/J,YAAc90L,EACf41B,CACT,EAEIgr1B,EAA8BD,EAAmB,kBAEjD/q1B,EAAuB+q1B,EAAmB,UAM1CE,EAAsB,SAAUz6hB,GAYlC,SAASy6hB,EAAOhi1B,GACd,IAAIluB,EAoBJ,OAlBAA,EAAQy1U,EAAiBt5U,KAAKL,KAAMoyB,IAAUpyB,MACxCrQ,MAAQ,CACZs5F,SAAU72D,EAAM66E,QAAQhkB,UAO1B/kF,EAAMmw2B,YAAa,EACnBnw2B,EAAMow2B,iBAAmB,KAEpBli1B,EAAMmi1B,gBACTrw2B,EAAM+lX,SAAW73V,EAAM66E,QAAQ1qE,OAAO,SAAU0mD,GAC9C/kF,EAAMow2B,iBAAmBrrxB,CAC3B,IAGK/kF,CACT,EAjCA,OAAekw2B,EAAQz6hB,GAEvBy6hB,EAAOI,iBAAmB,SAA0B/pvB,GAClD,MAAO,CACL5hD,KAAM,IACN4kB,IAAK,IACLttC,OAAQ,CAAC,EACT8gpB,QAAsB,MAAbx2kB,EAEb,EA0BA,IAAIi3U,EAAS0ya,EAAOh02B,UAoDpB,OAlDAshc,EAAOhvH,kBAAoB,WACzB,IAAInlO,EAASvtG,KAEbA,KAAKq02B,YAAa,EAEdr02B,KAAKiqX,UAGPjqX,KAAKiqX,WAGFjqX,KAAKoyB,MAAMmi1B,gBACdv02B,KAAKiqX,SAAWjqX,KAAKoyB,MAAM66E,QAAQ1qE,OAAO,SAAU0mD,GAC9CskB,EAAO8mwB,YACT9mwB,EAAO7tG,SAAS,CACdupF,SAAUA,GAGhB,IAGEjpF,KAAKs02B,kBACPt02B,KAAKN,SAAS,CACZupF,SAAUjpF,KAAKs02B,kBAGrB,EAEA5ya,EAAOnuH,qBAAuB,WACxBvzU,KAAKiqX,WACPjqX,KAAKiqX,WACLjqX,KAAKq02B,YAAa,EAClBr02B,KAAKs02B,iBAAmB,KAE5B,EAEA5ya,EAAOrjY,OAAS,WACd,OAAoB,gBAAoBl1C,EAAQ60T,SAAU,CACxDr4V,MAAO,CACLsnH,QAASjtG,KAAKoyB,MAAM66E,QACpBhkB,SAAUjpF,KAAKrQ,MAAMs5F,SACrBjlG,MAAOow3B,EAAOI,iBAAiBx02B,KAAKrQ,MAAMs5F,SAASwhC,UACnD8pvB,cAAev02B,KAAKoyB,MAAMmi1B,gBAEd,gBAAoBJ,EAAen2hB,SAAU,CAC3DxmO,SAAUx3G,KAAKoyB,MAAMolF,UAAY,KACjC7xH,MAAOqa,KAAKoyB,MAAM66E,UAEtB,EAEOmnwB,CACT,CAzF0B,CAyFxB,aAkBEK,EAA4B,SAAU96hB,GAGxC,SAAS86hB,IAGP,IAFA,IAAIvw2B,EAEKhQ,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAKzB,OAFA2P,EAAQy1U,EAAiBt5U,KAAKS,MAAM64U,EAAkB,CAAC35U,MAAMhS,OAAOqG,KAAU2L,MACxEitG,SAAU,QAAoB/oG,EAAMkuB,OACnCluB,CACT,CAWA,OAvBA,OAAeuw2B,EAAc96hB,GAchB86hB,EAAar02B,UAEnBi+D,OAAS,WACd,OAAoB,gBAAoB+1yB,EAAQ,CAC9CnnwB,QAASjtG,KAAKitG,QACduK,SAAUx3G,KAAKoyB,MAAMolF,UAEzB,EAEOi9vB,CACT,CAzBgC,CAyB9B,aAgBEC,EAAyB,SAAU/6hB,GAGrC,SAAS+6hB,IACP,OAAO/6hB,EAAiB74U,MAAMd,KAAM7L,YAAc6L,IACpD,EAJA,OAAe002B,EAAW/6hB,GAM1B,IAAI+nH,EAASgza,EAAUt02B,UAkBvB,OAhBAshc,EAAOhvH,kBAAoB,WACrB1yU,KAAKoyB,MAAMui1B,SAAS302B,KAAKoyB,MAAMui1B,QAAQt02B,KAAKL,KAAMA,KACxD,EAEA0hc,EAAOruH,mBAAqB,SAA4BC,GAClDtzU,KAAKoyB,MAAM4h1B,UAAUh02B,KAAKoyB,MAAM4h1B,SAAS3z2B,KAAKL,KAAMA,KAAMszU,EAChE,EAEAouH,EAAOnuH,qBAAuB,WACxBvzU,KAAKoyB,MAAMwi1B,WAAW502B,KAAKoyB,MAAMwi1B,UAAUv02B,KAAKL,KAAMA,KAC5D,EAEA0hc,EAAOrjY,OAAS,WACd,OAAO,IACT,EAEOq2yB,CACT,CA1B6B,CA0B3B,aAMF,SAASG,EAAOzp3B,GACd,IAAIglG,EAAUhlG,EAAKglG,QACf0kxB,EAAY1p3B,EAAKg3H,KACjBA,OAAqB,IAAd0yvB,GAA8BA,EACzC,OAAoB,gBAAoB3r1B,EAAQ80T,SAAU,KAAM,SAAU90T,GAExE,GADCA,IAAuH,QAAU,IAC7Hi5F,GAAQj5F,EAAQor1B,cAAe,OAAO,KAC3C,IAAIhw0B,EAASpb,EAAQ8jF,QAAQiwM,MAC7B,OAAoB,gBAAoBw3jB,EAAW,CACjDC,QAAS,SAAiBryxB,GACxBA,EAAKqyS,QAAUpwV,EAAO6rD,EACxB,EACA4jxB,SAAU,SAAkB1xxB,EAAMgxP,GAC5BA,EAAUljP,UAAYA,IACxB9N,EAAKqyS,UACLryS,EAAKqyS,QAAUpwV,EAAO6rD,GAE1B,EACAwkxB,UAAW,SAAmBtyxB,GAC5BA,EAAKqyS,SACP,EACAvkS,QAASA,GAEb,EACF,CAUA,IAAI7jE,EAAQ,CAAC,EACTwo1B,EAAa,IACbC,EAAa,EAkBjB,SAASC,EAAapsyB,EAAM1oB,GAS1B,YARa,IAAT0oB,IACFA,EAAO,UAGM,IAAX1oB,IACFA,EAAS,CAAC,GAGI,MAAT0oB,EAAeA,EAzBxB,SAAqBA,GACnB,GAAIt8C,EAAMs8C,GAAO,OAAOt8C,EAAMs8C,GAC9B,IAAI1nE,EAAY,YAAqB0nE,GAOrC,OALImsyB,EAAaD,IACfxo1B,EAAMs8C,GAAQ1nE,EACd6z2B,KAGK7z2B,CACT,CAe+B+z2B,CAAYrsyB,EAAZqsyB,CAAkB/0zB,EAAQ,CACrDg5M,QAAQ,GAEZ,CAMA,SAASg8mB,EAAS/p3B,GAChB,IAAIgq3B,EAAgBhq3B,EAAKgq3B,cACrBxw1B,EAAKx5B,EAAKw5B,GACVyw1B,EAAYjq3B,EAAK0I,KACjBA,OAAqB,IAAduh3B,GAA+BA,EAC1C,OAAoB,gBAAoBls1B,EAAQ80T,SAAU,KAAM,SAAU90T,GACvEA,IAAyH,QAAU,GACpI,IAAI8jF,EAAU9jF,EAAQ8jF,QAClBsnwB,EAAgBpr1B,EAAQor1B,cACxBhw0B,EAASzwC,EAAOm5G,EAAQn5G,KAAOm5G,EAAQlpH,QACvCklG,GAAW,QAAemsxB,EAA8B,iBAAPxw1B,EAAkBqw1B,EAAarw1B,EAAIww1B,EAAcj1zB,SAAU,OAAS,CAAC,EAAGv7B,EAAI,CAC/H6lG,SAAUwqvB,EAAarw1B,EAAG6lG,SAAU2qvB,EAAcj1zB,UAC/Cv7B,GAGL,OAAI2v1B,GACFhw0B,EAAO0kD,GACA,MAGW,gBAAoByrxB,EAAW,CACjDC,QAAS,WACPpw0B,EAAO0kD,EACT,EACA+qxB,SAAU,SAAkB1xxB,EAAMgxP,GAChC,IAAIgiiB,GAAe,QAAehiiB,EAAU1uT,KAEvC,QAAkB0w1B,GAAc,OAAS,CAAC,EAAGrsxB,EAAU,CAC1Dz+F,IAAK8q3B,EAAa9q3B,QAElB+5C,EAAO0kD,EAEX,EACArkE,GAAIA,GAER,EACF,CAUA,IAAI2w1B,EAAU,CAAC,EACXC,EAAe,IACfC,EAAe,EAyBnB,SAASz0K,EAAUv2kB,EAAU76H,QACX,IAAZA,IACFA,EAAU,CAAC,IAGU,iBAAZA,GAAwB0E,MAAMyb,QAAQngB,MAC/CA,EAAU,CACRi5E,KAAMj5E,IAIV,IAAIC,EAAWD,EACXi5E,EAAOh5E,EAASg5E,KAChB6syB,EAAiB7l3B,EAAS4lH,MAC1BA,OAA2B,IAAnBigwB,GAAoCA,EAC5CC,EAAkB9l3B,EAASozG,OAC3BA,OAA6B,IAApB0ywB,GAAqCA,EAC9CC,EAAqB/l3B,EAASwinB,UAC9BA,OAAmC,IAAvBujQ,GAAwCA,EAExD,MADY,GAAG5n3B,OAAO66E,GACTv+E,OAAO,SAAUkC,EAASq8E,GACrC,IAAKA,GAAiB,KAATA,EAAa,OAAO,KACjC,GAAIr8E,EAAS,OAAOA,EAEpB,IAAIqp3B,EA/CR,SAAuBhtyB,EAAMj5E,GAC3B,IAAIuuC,EAAW,GAAKvuC,EAAQlD,IAAMkD,EAAQqzG,OAASrzG,EAAQyinB,UACvDyjQ,EAAYP,EAAQp30B,KAAco30B,EAAQp30B,GAAY,CAAC,GAC3D,GAAI230B,EAAUjtyB,GAAO,OAAOityB,EAAUjtyB,GACtC,IAAIx+E,EAAO,GAEP8I,EAAS,CACXm8N,OAFW,IAAazmJ,EAAMx+E,EAAMuF,GAGpCvF,KAAMA,GAQR,OALIor3B,EAAeD,IACjBM,EAAUjtyB,GAAQ11E,EAClBsi3B,KAGKti3B,CACT,CA8BuB4i3B,CAAcltyB,EAAM,CACrCn8E,IAAK+oH,EACLxS,OAAQA,EACRovgB,UAAWA,IAET/iZ,EAASumpB,EAAavmpB,OACtBjlO,EAAOwr3B,EAAaxr3B,KAEpBrG,EAAQsrO,EAAOjqM,KAAKolG,GACxB,IAAKzmI,EAAO,OAAO,KACnB,IAAIypG,EAAMzpG,EAAM,GACZ4kC,EAAS5kC,EAAM8W,MAAM,GACrBmmsB,EAAUx2kB,IAAah9B,EAC3B,OAAIgoB,IAAUwrlB,EAAgB,KACvB,CACLp4nB,KAAMA,EAEN4kB,IAAc,MAAT5kB,GAAwB,KAAR4kB,EAAa,IAAMA,EAExCwzmB,QAASA,EAET9gpB,OAAQ91D,EAAKC,OAAO,SAAUk9H,EAAMh9H,EAAKgM,GAEvC,OADAgxH,EAAKh9H,EAAI+I,MAAQq1B,EAAOpyB,GACjBgxH,CACT,EAAG,CAAC,GAER,EAAG,KACL,CAgBA,IAAIo2rB,EAAqB,SAAUjke,GAGjC,SAASike,IACP,OAAOjke,EAAiB74U,MAAMd,KAAM7L,YAAc6L,IACpD,CAkCA,OAtCA,OAAe49yB,EAAOjke,GAMTike,EAAMx9yB,UAEZi+D,OAAS,WACd,IAAIn6D,EAAQlE,KAEZ,OAAoB,gBAAoBmpB,EAAQ80T,SAAU,KAAM,SAAU+3hB,GACvEA,IAAwH,QAAU,GACnI,IAAI/sxB,EAAW/kF,EAAMkuB,MAAM62D,UAAY+sxB,EAAU/sxB,SAC7CjlG,EAAQkgB,EAAMkuB,MAAMgj1B,cAAgBlx2B,EAAMkuB,MAAMgj1B,cAClDlx2B,EAAMkuB,MAAMy2C,KAAOm4nB,EAAU/3mB,EAASwhC,SAAUvmH,EAAMkuB,OAAS4j1B,EAAUhy3B,MAEvEouC,GAAQ,OAAS,CAAC,EAAG4j1B,EAAW,CAClC/sxB,SAAUA,EACVjlG,MAAOA,IAGL8qV,EAAc5qU,EAAMkuB,MACpBolF,EAAWs3N,EAAYt3N,SACvBx/C,EAAY82Q,EAAY92Q,UACxBqG,EAASywQ,EAAYzwQ,OAOzB,OAJI/pE,MAAMyb,QAAQynG,IA3CxB,SAAyBA,GACvB,OAA0C,IAAnC,WAAex/E,MAAMw/E,EAC9B,CAyCqCy+vB,CAAgBz+vB,KAC7CA,EAAW,MAGO,gBAAoBruF,EAAQ60T,SAAU,CACxDr4V,MAAOysC,GACNA,EAAMpuC,MAAQwzH,EAA+B,mBAAbA,EAAuHA,EAASplF,GAASolF,EAAWx/C,EAAyB,gBAAoBA,EAAW5lC,GAASisC,EAASA,EAAOjsC,GAAS,KAA2B,mBAAbolF,EAAuHA,EAASplF,GAAS,KAC1a,EACF,EAEOwrxB,CACT,CAxCyB,CAwCvB,aA8BF,SAASs4D,EAAgBrtyB,GACvB,MAA0B,MAAnBA,EAAKn2D,OAAO,GAAam2D,EAAO,IAAMA,CAC/C,CASA,SAAS8/S,EAAcN,EAAUp/R,GAC/B,IAAKo/R,EAAU,OAAOp/R,EACtB,IAAI59C,EAAO6q0B,EAAgB7tf,GAC3B,OAAwC,IAApCp/R,EAASwhC,SAASliI,QAAQ8iD,GAAoB49C,GAC3C,OAAS,CAAC,EAAGA,EAAU,CAC5BwhC,SAAUxhC,EAASwhC,SAAStY,OAAO9mE,EAAKj3C,SAE5C,CAEA,SAAS+h3B,EAAUltxB,GACjB,MAA2B,iBAAbA,EAAwBA,GAAW,QAAWA,EAC9D,CAEA,SAASmtxB,EAAcnwoB,GACrB,OAAO,YACwG,QAAU,EACzH,CACF,CAEA,SAASr2N,IAAQ,CASjB,IAAIym2B,EAA4B,SAAU18hB,GAGxC,SAAS08hB,IAGP,IAFA,IAAIny2B,EAEKhQ,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAqBzB,OAlBA2P,EAAQy1U,EAAiBt5U,KAAKS,MAAM64U,EAAkB,CAAC35U,MAAMhS,OAAOqG,KAAU2L,MAExEs22B,WAAa,SAAUrtxB,GAC3B,OAAO/kF,EAAMqy2B,WAAWttxB,EAAU,OACpC,EAEA/kF,EAAMsy2B,cAAgB,SAAUvtxB,GAC9B,OAAO/kF,EAAMqy2B,WAAWttxB,EAAU,UACpC,EAEA/kF,EAAMuy2B,aAAe,WACnB,OAAO7m2B,CACT,EAEA1L,EAAMwy2B,YAAc,WAClB,OAAO9m2B,CACT,EAEO1L,CACT,EA5BA,OAAemy2B,EAAc18hB,GA8B7B,IAAI+nH,EAAS20a,EAAaj22B,UA2C1B,OAzCAshc,EAAO60a,WAAa,SAAoBttxB,EAAU2K,GAChD,IAAIk7O,EAAc9uU,KAAKoyB,MACnBuk1B,EAAuB7niB,EAAYu5C,SACnCA,OAAoC,IAAzBsuf,EAAkC,GAAKA,EAClDC,EAAsB9niB,EAAY3lT,QAClCA,OAAkC,IAAxByt1B,EAAiC,CAAC,EAAIA,EACpDzt1B,EAAQyqE,OAASA,EACjBzqE,EAAQ8/D,SA3EZ,SAAqBo/R,EAAUp/R,GAC7B,OAAKo/R,GACE,OAAS,CAAC,EAAGp/R,EAAU,CAC5BwhC,SAAUyrvB,EAAgB7tf,GAAYp/R,EAASwhC,WAF3BxhC,CAIxB,CAsEuB4txB,CAAYxuf,GAAU,QAAep/R,IACxD9/D,EAAQskE,IAAM0oxB,EAAUht1B,EAAQ8/D,SAClC,EAEAy4W,EAAOrjY,OAAS,WACd,IAAI4wQ,EAAejvU,KAAKoyB,MACpB0k1B,EAAwB7niB,EAAao5C,SACrCA,OAAqC,IAA1Byuf,EAAmC,GAAKA,EACnDC,EAAuB9niB,EAAa9lT,QACpCA,OAAmC,IAAzB4t1B,EAAkC,CAAC,EAAIA,EACjDC,EAAwB/niB,EAAahmP,SACrCA,OAAqC,IAA1B+txB,EAAmC,IAAMA,EACpDxn2B,GAAO,OAA8By/T,EAAc,CAAC,WAAY,UAAW,aAE3EhiO,EAAU,CACZu8Q,WAAY,SAAoB3gT,GAC9B,OAAOqtyB,EAAgB7tf,EAAW8tf,EAAUttyB,GAC9C,EACA+qB,OAAQ,MACR3K,SAAU0/R,EAAcN,GAAU,QAAep/R,IACjDn1F,KAAMkM,KAAKs22B,WACXvy3B,QAASic,KAAKw22B,cACdznvB,GAAIqnvB,IACJtsf,OAAQssf,IACRrsf,UAAWqsf,IACX7z0B,OAAQviC,KAAKy22B,aACbv5jB,MAAOl9S,KAAK022B,aAEd,OAAoB,gBAAoBtC,GAAQ,OAAS,CAAC,EAAG5k2B,EAAM,CACjEy9F,QAASA,EACTsnwB,cAAepr1B,IAEnB,EAEOkt1B,CACT,CA3EgC,CA2E9B,aAkBEY,EAAsB,SAAUt9hB,GAGlC,SAASs9hB,IACP,OAAOt9hB,EAAiB74U,MAAMd,KAAM7L,YAAc6L,IACpD,CA+BA,OAnCA,OAAei32B,EAAQt9hB,GAMVs9hB,EAAO722B,UAEbi+D,OAAS,WACd,IAAIn6D,EAAQlE,KAEZ,OAAoB,gBAAoBmpB,EAAQ80T,SAAU,KAAM,SAAU90T,GACvEA,IAAuH,QAAU,GAClI,IACI7iC,EAAStC,EADTilG,EAAW/kF,EAAMkuB,MAAM62D,UAAY9/D,EAAQ8/D,SAe/C,OATA,WAAej3F,QAAQkS,EAAMkuB,MAAMolF,SAAU,SAAU9vH,GACrD,GAAa,MAAT1D,GAA8B,iBAAqB0D,GAAQ,CAC7DpB,EAAUoB,EACV,IAAImhF,EAAOnhF,EAAM0qC,MAAMy2C,MAAQnhF,EAAM0qC,MAAMvN,KAC3C7gC,EAAQ6kF,EAAOm4nB,EAAU/3mB,EAASwhC,UAAU,OAAS,CAAC,EAAG/iI,EAAM0qC,MAAO,CACpEy2C,KAAMA,KACF1/C,EAAQnlC,KAChB,CACF,GACOA,EAAqB,eAAmBsC,EAAS,CACtD2iG,SAAUA,EACVmsxB,cAAepx3B,IACZ,IACP,EACF,EAEOiz3B,CACT,CArC0B,CAqCxB,aAkBF,SAASC,EAAWvtoB,GAClB,IAAIthD,EAAc,eAAiBshD,EAAUthD,aAAeshD,EAAUp2O,MAAQ,IAE1EylB,EAAI,SAAWoZ,GACjB,IAAI+k1B,EAAsB/k1B,EAAM+k1B,oBAC5BC,GAAiB,OAA8Bhl1B,EAAO,CAAC,wBAE3D,OAAoB,gBAAoBjJ,EAAQ80T,SAAU,KAAM,SAAU90T,GAExE,OADCA,IAAsI,QAAU,GAC7H,gBAAoBwgN,GAAW,OAAS,CAAC,EAAGytoB,EAAgBju1B,EAAS,CACvF0pF,IAAKskwB,IAET,EACF,EAWA,OATAn+1B,EAAEqvK,YAAcA,EAChBrvK,EAAEq+1B,iBAAmB1toB,EAQd,IAAa3wN,EAAG2wN,EACzB,CAEA,IAAII,EAAa,aACjB,SAASutoB,IAKP,OAAOvtoB,EAAWoqoB,EACpB,CACA,SAASoD,IAKP,OAAOxtoB,EAAW5gN,GAAS8/D,QAC7B,CACA,SAASuuxB,IAKP,IAAIxz3B,EAAQ+lP,EAAW5gN,GAASnlC,MAChC,OAAOA,EAAQA,EAAMm8D,OAAS,CAAC,CACjC,CACA,SAASs3zB,EAAc5uyB,GAKrB,IAAIogB,EAAWsuxB,IACXvz3B,EAAQ+lP,EAAW5gN,GAASnlC,MAChC,OAAO6kF,EAAOm4nB,EAAU/3mB,EAASwhC,SAAU5hD,GAAQ7kF,CACrD,C,+BCz5Be,SAASwD,EAAS2hC,EAASpiC,GACxC,OAAIoiC,EAAQ3hC,SAAiB2hC,EAAQ3hC,SAAST,GAC1CoiC,EAAQ21O,wBAAgC31O,IAAYpiC,MAAmD,GAAxCoiC,EAAQ21O,wBAAwB/3Q,SAAnG,CACF,C,4BCiBA,IAAIgpB,EAAUzb,MAAMyb,QAEpB2xE,EAAOj9F,QAAUsrB,C,yBChBT,SAAWlvB,GAAU,aAIzB,IAAII,EAAS,CACLm+O,WACI,oFAAoFl+O,MAChF,KAERs9C,OAAQ,sFAAsFt9C,MAC1F,KAEJm+O,SAAU,kCAEdl+O,EAAc,kDAAkDD,MAAM,KACtEuzU,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EACI,wJAER,SAAStiG,EAAOvxN,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,GACpC,CACA,SAASotB,EAAUgV,EAAQw+E,EAAej3H,EAAKk3H,GAC3C,IAAIvuH,EAAS8vC,EAAS,IACtB,OAAQz4C,GACJ,IAAK,IACD,OAAOi3H,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,UAAY,UAEvC9vC,EAAS,YAExB,IAAK,IACD,OAAOsuH,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,SAAW,SAEtC9vC,EAAS,WAExB,IAAK,IACD,OAAOsuH,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,SAAW,SAEtC9vC,EAAS,WAExB,IAAK,IACD,OAAOsuH,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,MAAQ,OAEnC9vC,EAAS,MAExB,IAAK,IACD,OAAOsuH,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,SAAW,UAEtC9vC,EAAS,SAExB,IAAK,IACD,OAAOsuH,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVvuH,GAAUi/N,EAAOnvL,GAAU,OAAS,OAEpC9vC,EAAS,OAGhC,CAEStS,EAAOG,aAAa,KAAM,CAC/BC,OAAQA,EACRE,YAAaA,EACbuzU,YAAaA,EACbK,iBAAkBL,EAGlBM,kBACI,uKACJC,uBACI,sDACJR,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAClBrzU,SAAU,mDAAmDF,MAAM,KACnEG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN02B,EAAG,cAEPj2B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,kBAEnB,EACA36F,QAAS,eACTC,SAAU,WACN,OAAQod,KAAKs9E,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBAEnB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAGgrC,EACH/qC,GAAI+qC,EACJ9qC,EAAG8qC,EACH7qC,GAAI6qC,EACJ5qC,EAAG4qC,EACH3qC,GAAI2qC,EACJ1qC,EAAG0qC,EACHzqC,GAAIyqC,EACJxqC,EAAGwqC,EACHvqC,GAAIuqC,EACJtqC,EAAGsqC,EACHrqC,GAAIqqC,GAER/pC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzLyCC,CAAQ,EAAQ,O,yBCIlD,SAAW1D,GAAU,aAIzB,IAAIyjY,EACI,8DAA8DpjY,MAC1D,KAERC,EAAc,kDAAkDD,MAAM,KACtEuzU,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEG7zU,EAAOG,aAAa,QAAS,CACpCC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,SAAUgC,EAAGq7C,GACtB,OAAKr7C,EAEM,QAAQjB,KAAKs8C,GACbr9C,EAAYgC,EAAEo6F,SAEd+mS,EAAenhY,EAAEo6F,SAJjB+mS,CAMf,EACA5vD,YAAaA,EACbK,iBAAkBL,EAClBM,kBACI,+FACJC,uBACI,0FACJR,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAClBrzU,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVS,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBwd,KAAKorL,QAAgB,IAAM,IAAM,MAC3D,EACA3oM,QAAS,WACL,MAAO,gBAAmC,IAAjBud,KAAKorL,QAAgB,IAAM,IAAM,MAC9D,EACA1oM,SAAU,WACN,MAAO,cAAiC,IAAjBsd,KAAKorL,QAAgB,IAAM,IAAM,MAC5D,EACAzoM,QAAS,WACL,MAAO,cAAiC,IAAjBqd,KAAKorL,QAAgB,IAAM,IAAM,MAC5D,EACAxoM,SAAU,WACN,MACI,0BACkB,IAAjBod,KAAKorL,QAAgB,IAAM,IAC5B,MAER,EACAvoM,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJo2B,EAAG,aACHi/H,GAAI,aACJp1J,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAjHyCC,CAAQ,EAAQ,O,+BCN1D,IAAI8b,EAAO,EAAQ,OACf8gG,EAAW,EAAQ,OACnB6kJ,EAAa,EAAQ,OACrBxkK,EAAU,EAAQ,OAClBk2xB,EAAa,EAAQ,OAErB72hB,EAAavgV,UAIjBohF,EAAOj9F,QAAU,SAAUm2B,EAAGD,GAC5B,IAAI0K,EAAOzK,EAAEyK,KACb,GAAI2gO,EAAW3gO,GAAO,CACpB,IAAIlyB,EAASkN,EAAKglB,EAAMzK,EAAGD,GAE3B,OADe,OAAXxnB,GAAiBguG,EAAShuG,GACvBA,CACT,CACA,GAAmB,WAAfquF,EAAQ5mE,GAAiB,OAAOva,EAAKq32B,EAAY981B,EAAGD,GACxD,MAAM,IAAIkmU,EAAW,8CACvB,C,kBCpBA,IAAI//U,EAAQ,EAAQ,OAGhB622B,EAAYny3B,KAAKmE,IAgCrB+3F,EAAOj9F,QArBP,SAAkBiwG,EAAMjoG,EAAOrD,GAE7B,OADAqD,EAAQkr3B,OAAoB7g3B,IAAVrK,EAAuBioG,EAAKtgG,OAAS,EAAK3H,EAAO,GAC5D,WAML,IALA,IAAI4H,EAAOF,UACPqC,GAAS,EACTpC,EAASuj3B,EAAUtj3B,EAAKD,OAAS3H,EAAO,GACxC4nB,EAAQ/f,MAAMF,KAEToC,EAAQpC,GACfigB,EAAM7d,GAASnC,EAAK5H,EAAQ+J,GAE9BA,GAAS,EAET,IADA,IAAIoh3B,EAAYtj3B,MAAM7H,EAAQ,KACrB+J,EAAQ/J,GACfmr3B,EAAUph3B,GAASnC,EAAKmC,GAG1B,OADAoh3B,EAAUnr3B,GAASrD,EAAUirB,GACtBvT,EAAM4zF,EAAM10F,KAAM432B,EAC3B,CACF,C,+BChCA,IAAInw3B,EAAS,EAAQ,OAErBi6F,EAAOj9F,QAAUgD,C,+BCFjB,IAAIuyH,EAAc,EAAQ,OACtBgG,EAAW,EAAQ,OAIvBt+B,EAAOj9F,QAAU,SAAUk9F,GACzB,IAAIn3F,EAAMwvH,EAAYr4B,EAAU,UAChC,OAAOq+B,EAASx1H,GAAOA,EAAMA,EAAM,EACrC,C,+BCRA,IAAI6oH,EAAW,EAAQ,OACnBm/Q,EAAkB,EAAQ,OAC1BtxQ,EAAoB,EAAQ,OAC5B69M,EAAwB,EAAQ,OAEhCr1U,EAAMlE,KAAKkE,IAKfg4F,EAAOj9F,QAAU,GAAG0khB,YAAc,SAAoBp7gB,EAAkBtB,GACtE,IAAIquB,EAAIu4F,EAASrzG,MACbvQ,EAAMyxH,EAAkBpmG,GACxB8J,EAAK4tW,EAAgBzkY,EAAQ0B,GAC7Bo1B,EAAO2tW,EAAgB/lY,EAAOgD,GAC9B/C,EAAMyH,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EAC5CkhC,EAAQtuC,QAAaoN,IAARpK,EAAoB+C,EAAM+iY,EAAgB9lY,EAAK+C,IAAQo1B,EAAMp1B,EAAMm1B,GAChF8mhB,EAAM,EAMV,IALI7mhB,EAAOD,GAAMA,EAAKC,EAAOmT,IAC3B0zgB,GAAO,EACP7mhB,GAAQmT,EAAQ,EAChBpT,GAAMoT,EAAQ,GAETA,KAAU,GACXnT,KAAQ/J,EAAGA,EAAE8J,GAAM9J,EAAE+J,GACpBk6S,EAAsBjkT,EAAG8J,GAC9BA,GAAM8mhB,EACN7mhB,GAAQ6mhB,EACR,OAAO5whB,CACX,C,+BC7BA,IAAI4uE,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4pI,EAAY,EAAQ,OACpByR,EAAkB,EAAQ,OAC1Bm8nB,EAA8B,EAAQ,OACtCjqoB,EAA4B,EAAQ,OACpCpU,EAAmB,EAAQ,MAE3B0tB,EAAS5yP,MACTlB,EAAOitG,EAAYutI,EAA0B,QAAS,SAI1DlkJ,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,GAAQ,CAClC4y1B,SAAU,SAAkBjpkB,QACR/3S,IAAd+3S,GAAyB5kE,EAAU4kE,GACvC,IAAI/zR,EAAI4gO,EAAgB17O,MACpB8Y,EAAI++1B,EAA4B3wnB,EAAQpsO,GAC5C,OAAO1nB,EAAK0lB,EAAG+1R,EACjB,IAGFr1E,EAAiB,W,qCCtBjB,IACQ15N,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAQAs3M,EAAgD,SAAU9zM,GAU1D,SAAS8zM,EAA+BI,EAAa3kN,EAAM+gG,GACvD,IAAIpwF,EAAQlE,KAERhK,EAA+B,UADnCkiN,EAAcA,EAAYjzL,SACAnY,MAAyBorM,EAAY5rM,MAAMtW,QAarE,OAZAkO,EAAQF,EAAO3D,KAAKL,KAAMzM,EAAM2kN,EAAYprM,KAAM9W,EAASs+F,IAAat0F,MAClEw+W,oBAAoBtmK,GAC1BpuN,OAAO0hC,iBAAiBtnB,EAAO,CAC3B6z2B,iBAAkB,CACdpy3B,MAAO2uG,EACP7oE,UAAU,GAEd1tB,GAAI,CACA2tB,YAAY,EACZ/lC,MAAOuyN,EAAYn6M,MAGpBmG,CACX,CAiEA,OA3FAnE,EAAU+3M,EAAgC9zM,GA2B1Cla,OAAOwY,eAAew1M,EAA+B13M,UAAW,kBAAmB,CAK/EvM,IAAK,WACD,OAAOmM,KAAK+32B,gBAChB,EACArs1B,YAAY,EACZuL,cAAc,IASlB6gL,EAA+B13M,UAAU2tG,OAAS,SAAU/3G,GAGxD,OAFAA,EAA6B,kBAAZA,GAAwBA,EACzCgK,KAAKoyT,iBAAiB9lT,MAAMtW,QAAUA,EAC/BgO,EAAO5D,UAAU2tG,OAAO1tG,KAAKL,KAAMhK,EAC9C,EAMA8hN,EAA+B13M,UAAUu4M,cAAgB,SAAU1uM,GAI/D,OAuCR,SAAkB49U,EAAa59U,GAC3B,OAAyB,OAArB49U,EAAY02B,OAAiB12B,EAAYv1B,SAG7Cu1B,EAAYv1B,OAASroT,GACd,EACX,CAhDY+t2B,CAASh42B,KAAMiK,IACfjK,KAAK6K,KAAK,WAEP7K,IACX,EAMA83M,EAA+B13M,UAAUmyT,YAAc,SAAUj+N,GAK7D,OAJIt0F,KAAK+32B,mBAAqBzjxB,IAC1Bt0F,KAAK+32B,iBAAmBzjxB,EACxBt0F,KAAK6K,KAAK,YAEP7K,IACX,EAMA83M,EAA+B13M,UAAUs4M,OAAS,SAAUpiC,GACxD,OAAIt2K,KAAKsyT,OACEtyT,KAEJgE,EAAO5D,UAAUs4M,OAAOr4M,KAAKL,KAAMs2K,EAC9C,EAKAwhC,EAA+B13M,UAAUsF,KAAO,WAC5C1F,KAAKoyT,iBAAiB1sT,MAC1B,EACOoyM,CACX,CA7FmD,CAN9B,EAAQ,QAgH7Bp2H,EAAOj9F,QAAUqzN,C,+BC7HjB,IAoBMmgqB,EACAC,EArBF732B,EAAO,EAAQ,OACfggG,EAAc,EAAQ,OACtBr5G,EAAW,EAAQ,KACnBmx3B,EAAc,EAAQ,OACtBC,EAAgB,EAAQ,OACxB5v0B,EAAS,EAAQ,OACjB9nC,EAAS,EAAQ,MACjB60d,EAAmB,aACnB8iZ,EAAsB,EAAQ,OAC9BC,EAAkB,EAAQ,OAE1Br3W,EAAgBz4d,EAAO,wBAAyBjoC,OAAOH,UAAUrc,SACjEw03B,EAAazm1B,OAAO1xB,UAAUilB,KAC9Bmz1B,EAAcD,EACd7l2B,EAAS2tF,EAAY,GAAG3tF,QACxBnqB,EAAU83G,EAAY,GAAG93G,SACzBxE,EAAUs8G,EAAY,GAAGt8G,SACzBuvH,EAAcjT,EAAY,GAAGvlG,OAE7B292B,GAEEP,EAAM,MACV732B,EAAKk42B,EAFDN,EAAM,IAEY,KACtB532B,EAAKk42B,EAAYL,EAAK,KACG,IAAlBD,EAAIv2sB,WAAqC,IAAlBw2sB,EAAIx2sB,WAGhCg3sB,EAAgBN,EAAcO,aAG9BC,OAAuC9h3B,IAAvB,OAAOuuB,KAAK,IAAI,IAExBoz1B,GAA4BG,GAAiBF,GAAiBL,GAAuBC,KAG/FE,EAAc,SAAc103B,GAC1B,IAIIqP,EAAQ0l3B,EAAQn3sB,EAAW19K,EAAOqB,EAAGimD,EAAQvhC,EAJ7CqsI,EAAKp2I,KACLrQ,EAAQ4le,EAAiBn/U,GACzB3jI,EAAMzrB,EAASlD,GACfyqD,EAAM5+C,EAAM4+C,IAGhB,GAAIA,EAIF,OAHAA,EAAImzH,UAAYtrB,EAAGsrB,UACnBvuK,EAASkN,EAAKm42B,EAAajq0B,EAAK97B,GAChC2jI,EAAGsrB,UAAYnzH,EAAImzH,UACZvuK,EAGT,IAAI04S,EAASl8S,EAAMk8S,OACfyrB,EAASohjB,GAAiBtiuB,EAAGkhL,OAC7B1yM,EAAQvkH,EAAK832B,EAAa/huB,GAC1B7kI,EAAS6kI,EAAG7kI,OACZun2B,EAAa,EACbC,EAAUtm2B,EA+Cd,GA7CI6kT,IACF1yM,EAAQ7gI,EAAQ6gI,EAAO,IAAK,KACC,IAAzBr8H,EAAQq8H,EAAO,OACjBA,GAAS,KAGXm0vB,EAAUzlwB,EAAY7gG,EAAK2jI,EAAGsrB,WAE1BtrB,EAAGsrB,UAAY,KAAOtrB,EAAG6rD,WAAa7rD,EAAG6rD,WAA+C,OAAlCvvL,EAAOD,EAAK2jI,EAAGsrB,UAAY,MACnFnwJ,EAAS,OAASA,EAAS,IAC3Bwn2B,EAAU,IAAMA,EAChBD,KAIFD,EAAS,IAAI/m1B,OAAO,OAASvgB,EAAS,IAAKqzG,IAGzCg0vB,IACFC,EAAS,IAAI/m1B,OAAO,IAAMvgB,EAAS,WAAYqzG,IAE7C6zvB,IAA0B/2sB,EAAYtrB,EAAGsrB,WAE7C19K,EAAQqc,EAAKk42B,EAAYjhjB,EAASuhjB,EAASziuB,EAAI2iuB,GAE3CzhjB,EACEtzU,GACFA,EAAM/B,MAAQqxH,EAAYtvH,EAAM/B,MAAO623B,GACvC903B,EAAM,GAAKsvH,EAAYtvH,EAAM,GAAI803B,GACjC903B,EAAMwS,MAAQ4/I,EAAGsrB,UACjBtrB,EAAGsrB,WAAa19K,EAAM,GAAGoQ,QACpBgiJ,EAAGsrB,UAAY,EACb+2sB,GAA4Bz03B,IACrCoyJ,EAAGsrB,UAAYtrB,EAAGr1B,OAAS/8H,EAAMwS,MAAQxS,EAAM,GAAGoQ,OAASstK,GAEzDk3sB,GAAiB503B,GAASA,EAAMoQ,OAAS,GAG3CiM,EAAK4ggB,EAAej9gB,EAAM,GAAI603B,EAAQ,WACpC,IAAKxz3B,EAAI,EAAGA,EAAI8O,UAAUC,OAAS,EAAG/O,SACfyR,IAAjB3C,UAAU9O,KAAkBrB,EAAMqB,QAAKyR,EAE/C,GAGE9S,GAAS6nT,EAEX,IADA7nT,EAAM6nT,OAASvgQ,EAAS5qC,EAAO,MAC1Brb,EAAI,EAAGA,EAAIwmT,EAAOz3S,OAAQ/O,IAE7BimD,GADAvhC,EAAQ8hS,EAAOxmT,IACF,IAAMrB,EAAM+lB,EAAM,IAInC,OAAO/lB,CACT,GAGF09F,EAAOj9F,QAAU+z3B,C,+BCnHjB,IAAI54vB,EAAc,EAAQ,OACtBy4vB,EAAsB,EAAQ,OAC9B72xB,EAAU,EAAQ,OAClBw3xB,EAAwB,EAAQ,OAChCzjZ,EAAmB,aAEnBmnD,EAAkB5qf,OAAO1xB,UACzBygV,EAAavgV,UAIbs/G,GAAey4vB,GACjBW,EAAsBt8V,EAAiB,SAAU,CAC/Czlf,cAAc,EACdpjC,IAAK,WACH,GAAImM,OAAS08gB,EAAb,CAGA,GAAsB,WAAlBl7b,EAAQxhF,MACV,QAASu1d,EAAiBv1d,MAAM8gV,OAElC,MAAM,IAAID,EAAW,yCANe,CAOtC,G,gDCrBJ,Q,SADmC,cAAoB,K,YCYvD,IAAIjxU,EAAO,WAAc,EACrBqp2B,EAAgB,YAChB52d,SAAel7Z,SAAW8x3B,UAA0B9x3B,OAAOmH,YAAc2q3B,GAAmB,kBAAkB/23B,KAAKiF,OAAOmH,UAAUC,WACpI2q3B,EAAa,CACb,QACA,QACA,OACA,OACA,SAGJ,SAASC,EAAW7m2B,EAAK2zN,GACrB,IAAI1hM,EAASjyB,EAAI2zN,GACjB,GAA2B,mBAAhB1hM,EAAOmX,KACd,OAAOnX,EAAOmX,KAAKppC,GAGnB,IACI,OAAOm5F,SAASrrG,UAAUs7C,KAAKr7C,KAAKkkC,EAAQjyB,EAChD,CACA,MAAOttB,GAEH,OAAO,WACH,OAAOymH,SAASrrG,UAAUU,MAAMA,MAAMyjC,EAAQ,CAACjyB,EAAKne,WACxD,CACJ,CAER,CAEA,SAASil3B,IACDxm1B,QAAQ3sC,MACJ2sC,QAAQ3sC,IAAI6a,MACZ8xB,QAAQ3sC,IAAI6a,MAAM8xB,QAASz+B,WAI3Bs3G,SAASrrG,UAAUU,MAAMA,MAAM8xB,QAAQ3sC,IAAK,CAAC2sC,QAASz+B,aAG1Dy+B,QAAQ2hG,OACR3hG,QAAQ2hG,OAChB,CAwBA,SAAS8kvB,EAAsBrv2B,EAAOwqa,GAElC,IAAK,IAAInvb,EAAI,EAAGA,EAAI6z3B,EAAW9k3B,OAAQ/O,IAAK,CACxC,IAAI4gP,EAAaizoB,EAAW7z3B,GAC5B2a,KAAKimO,GAAe5gP,EAAI2kB,EACpB4F,EACA5P,KAAKs52B,cAAcrzoB,EAAYj8N,EAAOwqa,EAC9C,CAEAx0a,KAAK/Z,IAAM+Z,KAAKsH,KACpB,CAGA,SAASiy2B,EAAgCtzoB,EAAYj8N,EAAOwqa,GACxD,OAAO,kBACQ5hZ,UAAYqm1B,IACnBI,EAAsBh52B,KAAKL,KAAMgK,EAAOwqa,GACxCx0a,KAAKimO,GAAYnlO,MAAMd,KAAM7L,WAErC,CACJ,CAGA,SAASql3B,EAAqBvzoB,EAAYj8N,EAAOwqa,GAE7C,OA9CJ,SAAoBvuM,GAIhB,MAHmB,UAAfA,IACAA,EAAa,cAENrzM,UAAYqm1B,IAGC,UAAfhzoB,GAA0Bo8K,EACxB+2d,OAEsBti3B,IAAxB87B,QAAQqzM,GACNkzoB,EAAWvm1B,QAASqzM,QAENnvO,IAAhB87B,QAAQ3sC,IACNkz3B,EAAWvm1B,QAAS,OAGpBhjB,EAEf,CA2BW6p2B,CAAWxzoB,IACdszoB,EAAgCz42B,MAAMd,KAAM7L,UACpD,CACA,SAASul3B,EAAOnm3B,EAAMom3B,EAAcp13B,GAChC,IACIq13B,EADAt3xB,EAAOtiF,KAEPooF,EAAa,WAwBjB,SAASyxxB,IACL,IAAIC,EACJ,UAAW3y3B,SAAW8x3B,GAAkB7wxB,EAAxC,CAEA,IACI0xxB,EAAc3y3B,OAAO+7F,aAAakF,EACtC,CACA,MAAO2xxB,GAAU,CAEjB,UAAWD,IAAgBb,EACvB,IACI,IAAInwxB,EAAS3hG,OAAOsB,SAASqgG,OACzBG,EAAWH,EAAOvgG,QAAQ+/F,mBAAmBF,GAAc,MAC7C,IAAda,IACA6wxB,EAAc,WAAWz01B,KAAKyjE,EAAOhuF,MAAMmuF,IAAW,GAE9D,CACA,MAAO8wxB,GAAU,CAMrB,YAHiCjj3B,IAA7BwrF,EAAK44U,OAAO4+c,KACZA,OAAchj3B,GAEXgj3B,CApBG,CAqBd,CA/CoB,iBAATvm3B,EACP60F,GAAc,IAAM70F,EAEC,iBAATA,IACZ60F,OAAatxF,GAiDjBwrF,EAAK/uF,KAAOA,EACZ+uF,EAAK44U,OAAS,CAAE,MAAS,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,EACvD,MAAS,EAAG,OAAU,GAC1B54U,EAAKg3xB,cAAgB/03B,GAAWi13B,EAChCl3xB,EAAK0rsB,SAAW,WACZ,OAAO4rF,CACX,EACAt3xB,EAAK03xB,SAAW,SAAUhw2B,EAAOo2U,GAI7B,GAHqB,iBAAVp2U,QAA2DlT,IAArCwrF,EAAK44U,OAAOlxZ,EAAM2I,iBAC/C3I,EAAQs4E,EAAK44U,OAAOlxZ,EAAM2I,kBAET,iBAAV3I,GAAsBA,GAAS,GAAKA,GAASs4E,EAAK44U,OAAO++c,QAWhE,KAAM,6CAA+Cjw2B,EALrD,GALA4v2B,EAAe5v2B,GACC,IAAZo2U,GA5DZ,SAAgC85hB,GAC5B,IAAIC,GAAajB,EAAWgB,IAAa,UAAUvn2B,cACnD,UAAWxrB,SAAW8x3B,GAAkB7wxB,EAAxC,CAGA,IAEI,YADAjhG,OAAO+7F,aAAakF,GAAc+xxB,EAEtC,CACA,MAAOJ,GAAU,CAEjB,IACI5y3B,OAAOsB,SAASqgG,OACZR,mBAAmBF,GAAc,IAAM+xxB,EAAY,GAC3D,CACA,MAAOJ,GAAU,CAZP,CAad,CA6CYK,CAAuBpw2B,GAE3Bqv2B,EAAsBh52B,KAAKiiF,EAAMt4E,EAAOzW,UAC7Bq/B,UAAYqm1B,GAAiBjv2B,EAAQs4E,EAAK44U,OAAO++c,OACxD,MAAO,kCAMnB,EACA33xB,EAAK2shB,gBAAkB,SAAUjlmB,GACxB6v2B,KACDv3xB,EAAK03xB,SAAShw2B,GAAO,EAE7B,EACAs4E,EAAK+3xB,UAAY,SAAUj6hB,GACvB99P,EAAK03xB,SAAS13xB,EAAK44U,OAAOo/c,MAAOl6hB,EACrC,EACA99P,EAAKi4xB,WAAa,SAAUn6hB,GACxB99P,EAAK03xB,SAAS13xB,EAAK44U,OAAO++c,OAAQ75hB,EACtC,EAEA,IAAIo6hB,EAAeX,IACC,MAAhBW,IACAA,EAA+B,MAAhBb,EAAuB,OAASA,GAEnDr3xB,EAAK03xB,SAASQ,GAAc,EAChC,CAMA,IAAIC,EAAgB,IAAIf,EACpBgB,EAAiB,CAAC,EACtBD,EAAcjsQ,UAAY,SAAmBj7mB,GACzC,GAAqB,iBAATA,GAAqC,iBAATA,GAA+B,KAATA,EAC1D,MAAM,IAAI+M,UAAU,kDAExB,IAAIu6N,EAAS6/oB,EAAenn3B,GAI5B,OAHKsnO,IACDA,EAAS6/oB,EAAenn3B,GAAQ,IAAImm3B,EAAOnm3B,EAAMkn3B,EAAczsF,WAAYysF,EAAcnB,gBAEtFz+oB,CACX,EAEA,IAAIz1N,SAAeje,SAAW8x3B,EAAiB9x3B,OAAOlB,SAAM6Q,EAC5D2j3B,EAAc/tB,WAAa,WAKvB,cAJWvl2B,SAAW8x3B,GAClB9x3B,OAAOlB,MAAQw03B,IACftz3B,OAAOlB,IAAMmf,GAEVq12B,CACX,EACAA,EAAcE,WAAa,WACvB,OAAOD,CACX,EAEAD,EAAuB,QAAIA,EAC3B/4xB,EAAOj9F,QAAUg23B,C,yBCpOT,SAAW553B,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEC,MAC7E,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACNC,EAAG,SACHC,GAAI,YACJC,EAAG,aACHC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAvDyCC,CAAQ,EAAQ,O,+BCL1D,IAcIugP,EAAmB81oB,EAAmC/soB,EAdtD5tH,EAAQ,EAAQ,OAChB+lI,EAAa,EAAQ,OACrB/1O,EAAW,EAAQ,OACnBvP,EAAS,EAAQ,MACjB+0B,EAAiB,EAAQ,OACzB0wN,EAAgB,EAAQ,OACxB3kJ,EAAkB,EAAQ,OAC1Bme,EAAU,EAAQ,OAElB6nf,EAAWhmgB,EAAgB,YAC3B85sB,GAAyB,EAOzB,GAAGjxzB,OAGC,SAFNwjP,EAAgB,GAAGxjP,SAIjBuw3B,EAAoCnl1B,EAAeA,EAAeo4M,OACxB/jP,OAAOsW,YAAW0kO,EAAoB81oB,GAHlDt/D,GAAyB,IAO7BrryB,EAAS60N,IAAsB7kH,EAAM,WACjE,IAAI/9H,EAAO,CAAC,EAEZ,OAAO4iP,EAAkB0iY,GAAUnnmB,KAAKne,KAAUA,CACpD,GAE4B4iP,EAAoB,CAAC,EACxCnlH,IAASmlH,EAAoBpkO,EAAOokO,IAIxCkhB,EAAWlhB,EAAkB0iY,KAChCrhX,EAAcrhB,EAAmB0iY,EAAU,WACzC,OAAOxnmB,IACT,GAGF0hF,EAAOj9F,QAAU,CACfqgP,kBAAmBA,EACnBw2kB,uBAAwBA,E,yBCrClB,SAAWz6zB,GAAU,aAIzB,IAAII,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJsyG,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpD1yG,EAAOG,aAAa,KAAM,CAC/BC,OAAQA,EACRE,YAAaF,EACbG,SAAUmyG,EACVlyG,cAAekyG,EACfjyG,YAAaiyG,EACb/xG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,cAAe,UACfC,KAAM,SAAUC,GACZ,MAAO,QAAUA,CACrB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,MAEJ,KACX,EACAG,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAE,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CArFyCC,CAAQ,EAAQ,O,+BCN1D,IAAImuB,EAAS,gBAIbgvE,EAAOj9F,QAAU,SAAUk2B,EAAGnkB,EAAOwmhB,GACnC,OAAOxmhB,GAASwmhB,EAAUtqgB,EAAOiI,EAAGnkB,GAAOpC,OAAS,EACtD,C,qCCNA,IAAIuM,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACArK,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIk13B,EAAsB,EAAQ,OAC9BC,EAAkB,EAAQ,KAC1BC,EAAY,CACZ302B,QAAS,EAAQ,OACjB402B,sBAAuB,eACvBC,sBAAuB,eACvB5rW,YAAa,EAAQ,MAAR,GACbxqc,QAAS,iBACT60yB,OAAQ,EAAQ,OAChBhtpB,gBAAiB,yBACjB89B,eAAgB,wBAChBrO,gBAAiB,0BA6BjBkzR,EAAc0rW,EAAU1rW,YACxBxqc,EAAUk2yB,EAAUl2yB,QACpB60yB,EAASqB,EAAUrB,OACnBhtpB,EAAkBqupB,EAAUrupB,gBAC5ByvB,EAAkB4+nB,EAAU5+nB,gBAC5BqO,EAAiBuwnB,EAAUvwnB,eAC/B9oK,EAAOj9F,QAAU,CACb2hB,QAlCJ,SAAiBnC,EAAOrU,GACpB,IAAIkV,EAAkBnE,EAAS,CAAEqppB,kBAAmB6wN,EAAoB7wN,mBAAqBp6pB,GAC7F,OAAOmr3B,EAAU302B,QAAQnC,EAAOa,EACpC,EAgCIk22B,sBA/BJ,SAA+Bpr3B,GAC3B,IAAIkV,EAAkBnE,EAAS,CAAEqppB,kBAAmB6wN,EAAoB7wN,mBAAqBp6pB,GAC7F,OAAOmr3B,EAAUC,sBAAsBl22B,EAC3C,EA6BIm22B,sBA5BJ,SAA+Brr3B,GAC3B,IAAIkV,EAAkBnE,EAAS,CAAEqppB,kBAAmB6wN,EAAoB7wN,mBAAqBp6pB,GAC7F,OAAOmr3B,EAAUE,sBAAsBn22B,EAC3C,EA0BIklpB,kBAAmB6wN,EAAoB7wN,kBACvCznpB,aAAcu42B,EAAgBv42B,aAC9B8sgB,YAAaA,EACbxqc,QAASA,EACT60yB,OAAQA,EACRhtpB,gBAAiBA,EACjByvB,gBAAiBA,EACjBqO,eAAgBA,E,6BCpEpB/lQ,EAAQ89F,YAAa,EACrB99F,EAAA,QAGA,SAAc6tB,EAAKxd,GACjB,OAAOhL,OAAOO,KAAKioB,GAAKhoB,OAAO,SAAU6I,EAAQ3I,GAI/C,OAHIsK,EAAGwd,EAAI9nB,MACT2I,EAAO3I,GAAO8nB,EAAI9nB,IAEb2I,CACT,EAAG,CAAC,EACN,C,yBCJQ,SAAWtS,GAAU,aAIzB,IAAIghI,EAAa,CACbC,MAAO,CAEH5+H,GAAI,CAAC,SAAU,UAAW,WAC1BC,EAAG,CAAC,cAAe,iBACnBC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7Bm+H,uBAAwB,SAAU9+E,EAAQ++E,GACtC,OAAkB,IAAX/+E,EACD++E,EAAQ,GACR/+E,GAAU,GAAKA,GAAU,EACvB++E,EAAQ,GACRA,EAAQ,EACpB,EACA/zF,UAAW,SAAUgV,EAAQw+E,EAAej3H,GACxC,IAAIw3H,EAAUH,EAAWC,MAAMt3H,GAC/B,OAAmB,IAAfA,EAAI4J,OACGqtH,EAAgBO,EAAQ,GAAKA,EAAQ,GAGxC/+E,EACA,IACA4+E,EAAWE,uBAAuB9+E,EAAQ++E,EAGtD,GAGKnhI,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFC,MACvF,KAEJC,YACI,2DAA2DD,MAAM,KACrEghI,kBAAkB,EAClB9gI,SAAU,4DAA4DF,MAClE,KAEJG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACA36F,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgBod,KAAKs9E,MAC7B,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,mBACHC,GAAI2+H,EAAW5zF,UACf9qC,EAAG0+H,EAAW5zF,UACd7qC,GAAIy+H,EAAW5zF,UACf5qC,EAAGw+H,EAAW5zF,UACd3qC,GAAIu+H,EAAW5zF,UACf1qC,EAAG,MACHC,GAAIq+H,EAAW5zF,UACfxqC,EAAG,SACHC,GAAIm+H,EAAW5zF,UACftqC,EAAG,SACHC,GAAIi+H,EAAW5zF,WAEnB/pC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzHyCC,CAAQ,EAAQ,O,kBCN1D,IAAIw7X,EAAU,EAAQ,OAgCtBr+R,EAAOj9F,QALP,SAAa6mD,EAAQu9B,EAAMv4D,GACzB,IAAInd,EAAmB,MAAVm4C,OAAiBx0C,EAAYipX,EAAQz0U,EAAQu9B,GAC1D,YAAkB/xE,IAAX3D,EAAuBmd,EAAend,CAC/C,C,+BC9Be,SAASu9F,IAYtB,OAXAA,EAAW5mG,OAAOC,OAASD,OAAOC,OAAO2xD,OAAS,SAAU3tD,GAC1D,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CACzC,IAAIksB,EAASpd,UAAU9O,GACvB,IAAK,IAAImF,KAAO+mB,EACVznB,OAAOsW,UAAUxU,eAAeyU,KAAKkR,EAAQ/mB,KAC/CuD,EAAOvD,GAAO+mB,EAAO/mB,GAG3B,CACA,OAAOuD,CACT,EACO2iG,EAAS5vF,MAAMd,KAAM7L,UAC9B,C,qDCZA,IACQ2L,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAaAsksB,EAA4C,SAAU9gsB,GAQtD,SAAS8gsB,EAA2BzuY,EAAWzmU,GAC3C,OAAOoU,EAAO3D,KAAKL,KAAMq2T,EAAWzmU,IAAYoQ,IACpD,CAIA,OAbAD,EAAU+ksB,EAA4B9gsB,GAUtC8gsB,EAA2B1ksB,UAAUpZ,SAAW,WAC5C,MAAO,gCAAkCgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GACvF,EACOmtkB,CACX,CAf+C,CAXlB,EAAQ,QA2CrCpjnB,EAAOj9F,QAAUqgtB,C,+BCzDjBh7sB,OAAOwY,eAAe7d,EAAS,aAA/B,CAA+CkB,OAAO,IAEtD,IAAIioI,EAAU,EAAQ,OAmCtB,SAASi7F,EAAU5qB,EAAS/uL,EAAUgvL,GAEpC,GAAgB,OAAZD,EA4BJ,IA3BA,IAAIj4K,EACFvU,EACA+G,EACAqlL,EACAM,EACAC,EACAC,EAGAC,EAFAC,EAAa,EACbC,EAAa,EAEbxuL,EAAOiuL,EAAQjuL,KACfyuL,EAA+B,sBAATzuL,EACtB0uL,EAAqB,YAAT1uL,EACZtK,EAAO+4L,EAAsBR,EAAQU,SAASvqM,OAAS,EAchDwqM,EAAe,EAAGA,EAAel5L,EAAMk5L,IAAgB,CAS9DT,GAHAG,KALAD,EAA0BI,EACtBR,EAAQU,SAASC,GAAcf,SAC/Ba,EACAT,EAAQJ,SACRI,IAEiC,uBAAjCI,EAAwBruL,MAGxBquL,EAAwBQ,WAAWzqM,OACnC,EAEJ,IAAK,IAAI0qM,EAAY,EAAGA,EAAYX,EAAOW,IAAa,CACtD,IAAIC,EAAoB,EACpBC,EAAgB,EAMpB,GAAiB,QALjBnB,EAAWS,EACPD,EAAwBQ,WAAWC,GACnCT,GAGJ,CACAD,EAASP,EAASC,YAClB,IAAImB,EAAWpB,EAAS7tL,KAQxB,OANAuuL,GACEL,GACc,YAAbe,GAAuC,iBAAbA,EAEvB,EADA,EAGEA,GACN,KAAK,KACH,MACF,IAAK,QACH,IAOQ,IANN/vL,EACEkvL,EACAI,EACAI,EACAG,EACAC,GAGF,OAAO,EACTR,IACAO,IACA,MACF,IAAK,aACL,IAAK,aACH,IAAK/4K,EAAI,EAAGA,EAAIo4K,EAAOhqM,OAAQ4xB,IAAK,CAClC,IAOQ,IANN9W,EACEkvL,EAAOp4K,GACPw4K,EACAI,EACAG,EACAC,GAGF,OAAO,EACTR,IACiB,eAAbS,GAA2BF,GACjC,CACiB,eAAbE,GAA2BF,IAC/B,MACF,IAAK,UACL,IAAK,kBACH,IAAK/4K,EAAI,EAAGA,EAAIo4K,EAAOhqM,OAAQ4xB,IAAK,CAClC,IAAKvU,EAAI,EAAGA,EAAI2sL,EAAOp4K,GAAG5xB,OAASmqM,EAAY9sL,IAAK,CAClD,IAOQ,IANNvC,EACEkvL,EAAOp4K,GAAGvU,GACV+sL,EACAI,EACAG,EACAC,GAGF,OAAO,EACTR,GACF,CACiB,oBAAbS,GAAgCF,IACnB,YAAbE,GAAwBD,GAC9B,CACiB,YAAbC,GAAwBF,IAC5B,MACF,IAAK,eACH,IAAK/4K,EAAI,EAAGA,EAAIo4K,EAAOhqM,OAAQ4xB,IAAK,CAElC,IADAg5K,EAAgB,EACXvtL,EAAI,EAAGA,EAAI2sL,EAAOp4K,GAAG5xB,OAAQqd,IAAK,CACrC,IAAK+G,EAAI,EAAGA,EAAI4lL,EAAOp4K,GAAGvU,GAAGrd,OAASmqM,EAAY/lL,IAAK,CACrD,IAOQ,IANNtJ,EACEkvL,EAAOp4K,GAAGvU,GAAG+G,GACbgmL,EACAI,EACAG,EACAC,GAGF,OAAO,EACTR,GACF,CACAQ,GACF,CACAD,GACF,CACA,MACF,IAAK,qBACH,IAAK/4K,EAAI,EAAGA,EAAI63K,EAASgB,WAAWzqM,OAAQ4xB,IAC1C,IAEE,IADA6iM,EAAUhrB,EAASgB,WAAW74K,GAAI9W,EAAUgvL,GAG5C,OAAO,EACX,MACF,QACE,MAAM,IAAI32L,MAAM,yBAjGW,CAmGjC,CACF,CACF,CA0GA,SAAS2z2B,EAASj9qB,EAAS/uL,GACzB,IAAI7pB,EACJ,OAAQ44M,EAAQjuL,MACd,IAAK,oBACH,IAAK3qB,EAAI,EAAGA,EAAI44M,EAAQU,SAASvqM,SACqB,IAAhD8a,EAAS+uL,EAAQU,SAASt5M,GAAGq/C,WAAYr/C,GADNA,KAGzC,MACF,IAAK,UACH6pB,EAAS+uL,EAAQv5J,WAAY,GAGnC,CAoFA,SAASikL,EAAY1qB,EAAS/uL,GAC5B,GAAqB,YAAjB+uL,EAAQjuL,KACVd,EAAS+uL,EAAS,QACb,GAAqB,sBAAjBA,EAAQjuL,KACjB,IAAK,IAAI3qB,EAAI,EAAGA,EAAI44M,EAAQU,SAASvqM,SACM,IAArC8a,EAAS+uL,EAAQU,SAASt5M,GAAIA,GADSA,KAIjD,CA6GA,SAAS813B,EAASl9qB,EAAS/uL,GACzB,IAAI7pB,EACF2gC,EACArkB,EACAk8L,EACAM,EACAE,EACAC,EACAY,EACAC,EACAC,EACAR,EAAe,EACfH,EAAuC,sBAAjBR,EAAQjuL,KAC9B0uL,EAA6B,YAAjBT,EAAQjuL,KACpBtK,EAAO+4L,EAAsBR,EAAQU,SAASvqM,OAAS,EAczD,IAAK/O,EAAI,EAAGA,EAAIqgB,EAAMrgB,IAAK,CA4BzB,IA3BAg5M,EAA0BI,EACtBR,EAAQU,SAASt5M,GAAGw4M,SACpBa,EACAT,EAAQJ,SACRI,EACJiB,EAAoBT,EAChBR,EAAQU,SAASt5M,GAAGq/C,WACpBg6J,EACAT,EAAQv5J,WACR,CAAC,EACLy6J,EAAcV,EACVR,EAAQU,SAASt5M,GAAGu4M,KACpBc,EACAT,EAAQL,UACR9mM,EACJsoM,EAAYX,EACRR,EAAQU,SAASt5M,GAAG0Y,GACpB2gM,EACAT,EAAQlgM,QACRjH,EAIJqnM,GAHAG,IAAuBD,GACc,uBAAjCA,EAAwBruL,MAGxBquL,EAAwBQ,WAAWzqM,OACnC,EAECuN,EAAI,EAAGA,EAAIw8L,EAAOx8L,IAMrB,GAAiB,QALjBk8L,EAAWS,EACPD,EAAwBQ,WAAWl9L,GACnC08L,GAgBJ,OAAQR,EAAS7tL,MACf,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACH,IAOQ,IANNd,EACE2uL,EACAe,EACAM,EACAC,EACAC,GAGF,OAAO,EACT,MAEF,IAAK,qBACH,IAAKp5K,EAAI,EAAGA,EAAI63K,EAASgB,WAAWzqM,OAAQ4xB,IAC1C,IAOQ,IANN9W,EACE2uL,EAASgB,WAAW74K,GACpB44K,EACAM,EACAC,EACAC,GAGF,OAAO,EAEX,MAEF,QACE,MAAM,IAAI73L,MAAM,8BA/ClB,IAOQ,IANN2H,EACE,KACA0vL,EACAM,EACAC,EACAC,GAGF,OAAO,EA0CbR,GACF,CACF,CAyGA,SAASw8qB,EAAYn9qB,EAAS/uL,GAC5Bis2B,EAASl9qB,EAAS,SAAUJ,EAAUe,EAAcl6J,EAAYk5J,EAAM7/L,GAEpE,IAiBIkhM,EAjBAjvL,EAAoB,OAAb6tL,EAAoB,KAAOA,EAAS7tL,KAC/C,OAAQA,GACN,KAAK,KACL,IAAK,QACL,IAAK,aACL,IAAK,UACH,OAKQ,IAJNd,EACE0+G,EAAQ29E,QAAQ1N,EAAUn5J,EAAY,CAAEk5J,KAAMA,EAAM7/L,GAAIA,IACxD6gM,EACA,SAIJ,EAMJ,OAAQ5uL,GACN,IAAK,aACHivL,EAAW,QACX,MACF,IAAK,kBACHA,EAAW,aACX,MACF,IAAK,eACHA,EAAW,UAIf,IACE,IAAIF,EAAoB,EACxBA,EAAoBlB,EAASC,YAAY1pM,OACzC2qM,IACA,CACA,IACIrB,EAAO,CACT1tL,KAAMivL,EACNnB,YAHeD,EAASC,YAAYiB,IAKtC,IAEE,IADA7vL,EAAS0+G,EAAQ29E,QAAQ7N,EAAMh5J,GAAak6J,EAAcG,GAG1D,OAAO,CACX,CACF,EACF,CA0GA,SAASs8qB,EAAYp9qB,EAAS/uL,GAC5Bks2B,EAAYn9qB,EAAS,SAAUsN,EAAS3M,EAAcG,GACpD,IAAI4xlB,EAAe,EAGnB,GAAKpllB,EAAQ1N,SAAb,CAEA,IAAI7tL,EAAOu7L,EAAQ1N,SAAS7tL,KAC5B,GAAa,UAATA,GAA6B,eAATA,EAAxB,CAGA,IAAIsr2B,EACAC,EAAuB,EACvBC,EAAqB,EACrBC,EAAgB,EACpB,OAyCQ,IAxCN5ypB,EACEtd,EACA,SACEK,EACApN,EACAk9qB,EACAC,EACA38qB,GAGA,QACqBloM,IAAnBwk3B,GACA18qB,EAAe28qB,GACfI,EAAsBH,GACtBx8qB,EAAgBy8qB,EAOhB,OALAH,EAAiB1vqB,EACjB2vqB,EAAuB38qB,EACvB48qB,EAAqBG,EACrBF,EAAgBz8qB,OAChB2xlB,EAAe,GAGjB,IAAIirF,EAAiBhuvB,EAAQiuvB,WAC3B,CAACP,EAAgB1vqB,GACjBL,EAAQ7mK,YAEV,IAOQ,IANNx1B,EACE0s2B,EACAh9qB,EACAG,EACAC,EACA2xlB,GAGF,OAAO,EACTA,IACA2qF,EAAiB1vqB,CACnB,SAxCJ,CAPqD,CAHxB,CAsD/B,EACF,CAkHA,SAASkwqB,EAAS79qB,EAAS/uL,GAEzB,IAAK+uL,EAAS,MAAM,IAAI12L,MAAM,uBAE9B6z2B,EAAYn9qB,EAAS,SAAUsN,EAAS3M,EAAcG,GACpD,GAAyB,OAArBwM,EAAQ1N,SAAZ,CACA,IAAI7tL,EAAOu7L,EAAQ1N,SAAS7tL,KACxBouL,EAASmN,EAAQ1N,SAASC,YAC9B,OAAQ9tL,GACN,IAAK,aACH,IAAiE,IAA7Dd,EAASq8L,EAAS3M,EAAcG,EAAmB,EAAG,GACxD,OAAO,EACT,MACF,IAAK,UACH,IACE,IAAIC,EAAgB,EACpBA,EAAgBZ,EAAOhqM,OACvB4qM,IAEA,IAMQ,IALN9vL,EACE0+G,EAAQiuvB,WAAWz9qB,EAAOY,GAAgBuM,EAAQ7mK,YAClDk6J,EACAG,EACAC,GAGF,OAAO,EAtBsB,CA0BvC,EACF,CAqTAv6M,EAAQs33B,SAt6BR,SAAkB99qB,GAChB,IAAIG,EAAS,GAIb,OAHAyqB,EAAU5qB,EAAS,SAAUxmC,GAC3B2mC,EAAOtqM,KAAK2jK,EACd,GACO2mC,CACT,EAi6BA35M,EAAQokO,UAAYA,EACpBpkO,EAAQu33B,YA3oCR,SAAqB/9qB,EAAS/uL,EAAUs8L,EAActN,GACpD,IAAIuN,EAAgBD,EAwBpB,OAvBAqd,EACE5qB,EACA,SACE2N,EACApN,EACAI,EACAG,EACAC,GAGEyM,EADiB,IAAfjN,QAAqC1nM,IAAjB00M,EACNI,EAEA18L,EACdu8L,EACAG,EACApN,EACAI,EACAG,EACAC,EAEN,EACAd,GAEKuN,CACT,EAknCAhnN,EAAQkkO,YAAcA,EACtBlkO,EAAQw33B,cAn8BR,SAAuBh+qB,EAAS/uL,EAAUs8L,GACxC,IAAIC,EAAgBD,EAMpB,OALAmd,EAAY1qB,EAAS,SAAUi+qB,EAAgBt9qB,GAE3C6M,EADmB,IAAjB7M,QAAuC9nM,IAAjB00M,EACR0wqB,EACGht2B,EAASu8L,EAAeywqB,EAAgBt9qB,EAC/D,GACO6M,CACT,EA47BAhnN,EAAQ033B,UAnFR,SAAmBl+qB,EAASruM,GAG1B,GADAA,EAAUA,GAAW,CAAC,GACjBg+H,EAAQ39G,SAASrgB,GAAU,MAAM,IAAI2X,MAAM,sBAChD,IAOIs2L,EAPAe,EAAehvM,EAAQgvM,cAAgB,EACvCG,EAAoBnvM,EAAQmvM,mBAAqB,EACjDC,EAAgBpvM,EAAQovM,eAAiB,EACzCR,EAAa5uM,EAAQ4uM,YAAc,EAGnC95J,EAAa90C,EAAQ80C,WAGzB,OAAQu5J,EAAQjuL,MACd,IAAK,oBACC4uL,EAAe,IACjBA,EAAeX,EAAQU,SAASvqM,OAASwqM,GAC3Cl6J,EAAaA,GAAcu5J,EAAQU,SAASC,GAAcl6J,WAC1Dm5J,EAAWI,EAAQU,SAASC,GAAcf,SAC1C,MACF,IAAK,UACHn5J,EAAaA,GAAcu5J,EAAQv5J,WACnCm5J,EAAWI,EAAQJ,SACnB,MACF,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACHA,EAAWI,EACX,MACF,QACE,MAAM,IAAI12L,MAAM,sBAIpB,GAAiB,OAAbs2L,EAAmB,OAAO,KAC9B,IAAIO,EAASP,EAASC,YACtB,OAAQD,EAAS7tL,MACf,IAAK,QACH,OAAO49G,EAAQ/+F,MAAMuvK,EAAQ15J,EAAY90C,GAC3C,IAAK,aAGH,OAFImvM,EAAoB,IACtBA,EAAoBX,EAAOhqM,OAAS2qM,GAC/BnxE,EAAQ/+F,MAAMuvK,EAAOW,GAAoBr6J,EAAY90C,GAC9D,IAAK,aAEH,OADI4uM,EAAa,IAAGA,EAAaJ,EAAOhqM,OAASoqM,GAC1C5wE,EAAQ/+F,MAAMuvK,EAAOI,GAAa95J,EAAY90C,GACvD,IAAK,UAIH,OAHIovM,EAAgB,IAAGA,EAAgBZ,EAAOhqM,OAAS4qM,GACnDR,EAAa,IACfA,EAAaJ,EAAOY,GAAe5qM,OAASoqM,GACvC5wE,EAAQ/+F,MAAMuvK,EAAOY,GAAeR,GAAa95J,EAAY90C,GACtE,IAAK,kBAKH,OAJImvM,EAAoB,IACtBA,EAAoBX,EAAOhqM,OAAS2qM,GAClCP,EAAa,IACfA,EAAaJ,EAAOW,GAAmB3qM,OAASoqM,GAC3C5wE,EAAQ/+F,MAAMuvK,EAAOW,GAAmBP,GAAa95J,EAAY90C,GAC1E,IAAK,eAQH,OAPImvM,EAAoB,IACtBA,EAAoBX,EAAOhqM,OAAS2qM,GAClCC,EAAgB,IAClBA,EAAgBZ,EAAOW,GAAmB3qM,OAAS4qM,GACjDR,EAAa,IACfA,EACEJ,EAAOW,GAAmBC,GAAe5qM,OAASoqM,GAC/C5wE,EAAQ/+F,MACbuvK,EAAOW,GAAmBC,GAAeR,GACzC95J,EACA90C,GAGN,MAAM,IAAI2X,MAAM,qBAClB,EAQA9iB,EAAQ233B,YArNR,SAAqBn+qB,EAASruM,GAG5B,GADAA,EAAUA,GAAW,CAAC,GACjBg+H,EAAQ39G,SAASrgB,GAAU,MAAM,IAAI2X,MAAM,sBAChD,IAOIs2L,EAPAe,EAAehvM,EAAQgvM,cAAgB,EACvCG,EAAoBnvM,EAAQmvM,mBAAqB,EACjDC,EAAgBpvM,EAAQovM,eAAiB,EACzC2xlB,EAAe/gyB,EAAQ+gyB,cAAgB,EAGvCjsvB,EAAa90C,EAAQ80C,WAGzB,OAAQu5J,EAAQjuL,MACd,IAAK,oBACC4uL,EAAe,IACjBA,EAAeX,EAAQU,SAASvqM,OAASwqM,GAC3Cl6J,EAAaA,GAAcu5J,EAAQU,SAASC,GAAcl6J,WAC1Dm5J,EAAWI,EAAQU,SAASC,GAAcf,SAC1C,MACF,IAAK,UACHn5J,EAAaA,GAAcu5J,EAAQv5J,WACnCm5J,EAAWI,EAAQJ,SACnB,MACF,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACHA,EAAWI,EACX,MACF,QACE,MAAM,IAAI12L,MAAM,sBAIpB,GAAiB,OAAbs2L,EAAmB,OAAO,KAC9B,IAAIO,EAASP,EAASC,YACtB,OAAQD,EAAS7tL,MACf,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aAEH,OADI2gxB,EAAe,IAAGA,EAAevylB,EAAOhqM,OAASu8xB,EAAe,GAC7D/iqB,EAAQiuvB,WACb,CAACz9qB,EAAOuylB,GAAevylB,EAAOuylB,EAAe,IAC7CjsvB,EACA90C,GAEJ,IAAK,UAIH,OAHIovM,EAAgB,IAAGA,EAAgBZ,EAAOhqM,OAAS4qM,GACnD2xlB,EAAe,IACjBA,EAAevylB,EAAOY,GAAe5qM,OAASu8xB,EAAe,GACxD/iqB,EAAQiuvB,WACb,CACEz9qB,EAAOY,GAAe2xlB,GACtBvylB,EAAOY,GAAe2xlB,EAAe,IAEvCjsvB,EACA90C,GAEJ,IAAK,kBAKH,OAJImvM,EAAoB,IACtBA,EAAoBX,EAAOhqM,OAAS2qM,GAClC4xlB,EAAe,IACjBA,EAAevylB,EAAOW,GAAmB3qM,OAASu8xB,EAAe,GAC5D/iqB,EAAQiuvB,WACb,CACEz9qB,EAAOW,GAAmB4xlB,GAC1BvylB,EAAOW,GAAmB4xlB,EAAe,IAE3CjsvB,EACA90C,GAEJ,IAAK,eAQH,OAPImvM,EAAoB,IACtBA,EAAoBX,EAAOhqM,OAAS2qM,GAClCC,EAAgB,IAClBA,EAAgBZ,EAAOW,GAAmB3qM,OAAS4qM,GACjD2xlB,EAAe,IACjBA,EACEvylB,EAAOW,GAAmBC,GAAe5qM,OAASu8xB,EAAe,GAC9D/iqB,EAAQiuvB,WACb,CACEz9qB,EAAOW,GAAmBC,GAAe2xlB,GACzCvylB,EAAOW,GAAmBC,GAAe2xlB,EAAe,IAE1DjsvB,EACA90C,GAGN,MAAM,IAAI2X,MAAM,qBAClB,EAwHA9iB,EAAQ223B,YAAcA,EACtB323B,EAAQ433B,cAvkBR,SAAuBp+qB,EAAS/uL,EAAUs8L,GACxC,IAAIC,EAAgBD,EAmBpB,OAlBA4vqB,EACEn9qB,EACA,SAAUi+qB,EAAgBt9qB,EAAcG,GAMpC0M,EAJiB,IAAjB7M,GACsB,IAAtBG,QACiBjoM,IAAjB00M,EAEgB0wqB,EAEAht2B,EACdu8L,EACAywqB,EACAt9qB,EACAG,EAEN,GAEK0M,CACT,EAmjBAhnN,EAAQ023B,SAAWA,EACnB123B,EAAQ633B,WAluBR,SAAoBr+qB,EAAS/uL,EAAUs8L,GACrC,IAAIC,EAAgBD,EAuBpB,OAtBA2vqB,EACEl9qB,EACA,SACEs+qB,EACA39qB,EACAM,EACAC,EACAC,GAGEqM,EADmB,IAAjB7M,QAAuC9nM,IAAjB00M,EACR+wqB,EAEArt2B,EACdu8L,EACA8wqB,EACA39qB,EACAM,EACAC,EACAC,EAEN,GAEKqM,CACT,EA0sBAhnN,EAAQq33B,SAAWA,EACnBr33B,EAAQ+33B,WAjRR,SAAoBv+qB,EAAS/uL,EAAUs8L,GACrC,IAAIC,EAAgBD,EAgBpB,OAfAswqB,EACE79qB,EACA,SAAUw+qB,EAAa79qB,EAAcG,EAAmBC,GAEpDyM,EADmB,IAAjB7M,QAAuC9nM,IAAjB00M,EACRixqB,EAEAvt2B,EACdu8L,EACAgxqB,EACA79qB,EACAG,EACAC,EAEN,GAEKyM,CACT,EAgQAhnN,EAAQy23B,SAAWA,EACnBz23B,EAAQi43B,WAviCR,SAAoBz+qB,EAAS/uL,EAAUs8L,GACrC,IAAIC,EAAgBD,EAOpB,OANA0vqB,EAASj9qB,EAAS,SAAU0+qB,EAAmB/9qB,GAE3C6M,EADmB,IAAjB7M,QAAuC9nM,IAAjB00M,EACRmxqB,EAEAzt2B,EAASu8L,EAAekxqB,EAAmB/9qB,EAC/D,GACO6M,CACT,EA+hCAhnN,EAAQ423B,YAAcA,EACtB523B,EAAQm43B,cAhaR,SAAuB3+qB,EAAS/uL,EAAUs8L,GACxC,IAAIC,EAAgBD,EAChBy2R,GAAU,EAwBd,OAvBAo5Y,EACEp9qB,EACA,SACE29qB,EACAh9qB,EACAG,EACAC,EACA2xlB,GAGElllB,GADc,IAAZw2R,QAAsCnre,IAAjB00M,EACPowqB,EAEA1s2B,EACdu8L,EACAmwqB,EACAh9qB,EACAG,EACAC,EACA2xlB,GAEJ1uT,GAAU,CACZ,GAEKx2R,CACT,C,+BCtgCA,IAAIxrF,EAAQ,EAAQ,OAIhB4wQ,EAHa,EAAQ,OAGA/+V,OAErB4m1B,EAAgBz4vB,EAAM,WACxB,IAAIm2B,EAAKy6O,EAAQ,IAAK,KAEtB,OADAz6O,EAAGsrB,UAAY,EACY,OAApBtrB,EAAG/wH,KAAK,OACjB,GAIIw31B,EAAgBnE,GAAiBz4vB,EAAM,WACzC,OAAQ4wQ,EAAQ,IAAK,KAAKv5D,MAC5B,GAEIqhjB,EAAeD,GAAiBz4vB,EAAM,WAExC,IAAIm2B,EAAKy6O,EAAQ,KAAM,MAEvB,OADAz6O,EAAGsrB,UAAY,EACW,OAAnBtrB,EAAG/wH,KAAK,MACjB,GAEAq8D,EAAOj9F,QAAU,CACfk03B,aAAcA,EACdkE,cAAeA,EACfnE,cAAeA,E,+BC5BjB,EAAQ,OACR,IAAI7vyB,EAAO,EAAQ,OAEnB6Y,EAAOj9F,QAAUokF,EAAK/+E,OAAOC,M,+BCH7B,IAAIs4F,EAAa,EAAQ,OACrB2jK,EAAa,EAAQ,OAErBj3K,EAAUsT,EAAWtT,QAEzB2S,EAAOj9F,QAAUuhQ,EAAWj3K,IAAY,cAAc7sF,KAAKqe,OAAOwuE,G,qCCLlE,IACQjvE,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACIxhB,EAAe,sBACf+wG,EAAO,EAAQ,OAYf0ka,EAA8B,SAAU70gB,GAOxC,SAAS60gB,EAAa7kG,EAAc99T,GAChC,IA4VWo1F,EA5VPpnM,EAAQF,EAAO3D,KAAKL,OAASA,KAC7B4iF,EAAO,KACPjzF,EAAQqkb,EA8CZ,OA7CA99T,EA8WR,SAAyBA,GACrB,IAAI4mwB,EAAY,IAAI9p3B,IACpB,IAAK,IAAIxI,KAAO0rH,EACZ4mwB,EAAU/o3B,IAAIvJ,EAAK,IAAI0I,IAAIgjH,EAAO1rH,KAEtC,OAAOsy3B,CACX,CApXiBC,CAAgB7mwB,GACzBpsH,OAAO0hC,iBAAiBtnB,EAAO,CAC3B842B,MAAO,CACHnp3B,IAAK,WACD,OAAO+uF,CACX,EACA7uF,IAAK,SAAUip3B,GACXp6xB,EAAOo6xB,CACX,GAEJC,iBAAkB,CACdt33B,OA8UG2lN,EA9Ucp1F,EA+UtB5hH,MAAMuwB,KAAKymL,EAAMjhN,QAAQC,OAAO,SAAU4y3B,EAAUr41B,GAAQ,OAAOq41B,EAASnp3B,IAAI8wB,EAAMs41B,EAAc7xqB,EAAOzmL,GAAQ,EAAG,IAAI7xB,OA7UzH2xG,OAAQ,CACJ9wG,IAAK,WACD,OAAOlE,CACX,EACAoE,IAAK,SAAU4wG,GACXh1G,EAAQg1G,CACZ,GAEJP,QAAS,CACLz+G,MAAOuwH,GAEXg+T,eAAgB,CACZvub,MAAO,IAAIuN,KAEfyvF,SAAU,CACNj3D,YAAY,EACZ73B,IAAK,WACD,OAAgB,OAAT+uF,CACX,GAEJjzF,MAAO,CACH+7B,YAAY,EACZ73B,IAAK,WACD,OAAOlE,CACX,KAGRuU,EAAMymG,GAAG,eAAgB,SAAUh7G,GAC/BuU,EAAMgwa,eAAelib,QAAQ,SAAUs4G,GACnCA,EAAS8X,KAAKzyH,EAAO26G,EAAS1zG,QAAS0zG,EAASlpG,OACpD,EACJ,GACO8C,CACX,CA0QA,OAlUAnE,EAAU84gB,EAAc70gB,GA+DxB60gB,EAAaz4gB,UAAUg92B,aAAe,SAAUh7vB,GAC5C,IAAIl+G,EAAQlE,KACZ,GAAoB,mBAAToiH,EACP,OAAOzrH,QAAQyK,OAAO,IAAImG,MAAM,uCAEpC,IAAI+iG,EAAW6J,EAAKjL,QAGpB,OAFAoB,EAAS8X,KAAOA,EAChBpiH,KAAKk0a,eAAe5gb,IAAIg3G,GACjBA,EAAS+X,QAAQxrH,KAAK,SAAUqT,GAEnC,OADAhG,EAAMgwa,eAAez9Y,OAAO6zE,GACrBpgG,CACX,EAAG,SAAUD,GAET,MADA/F,EAAMgwa,eAAez9Y,OAAO6zE,GACtBrgG,CACV,EACJ,EAcA4ugB,EAAaz4gB,UAAUi92B,QAAU,SAAU9p3B,EAAM+p3B,GAC7C,IAAI9y3B,EACA83F,EAAOtiF,KACX,SAAS+jF,EAAY95E,GAIjB,GAHIq4E,EAAKi7xB,QAAQ/y3B,IACb83F,EAAKk7xB,sBAAsBhz3B,GAE3Byf,EACA,MAAMA,CAEd,CACA,OAAOjK,KAAKy92B,SAASlq3B,GAAMsD,KAAK,SAAgBtC,GAE5C,OAAO+o3B,EADP9y3B,EAAM+J,EAEV,GAAGsC,KAAK,SAAiB1D,GAErB,OADA4wF,IACO5wF,CACX,EAAG4wF,EACP,EAMA80b,EAAaz4gB,UAAUm92B,QAAU,SAAU/y3B,GACvC,OAAOwV,KAAKg92B,QAAUxy3B,CAC1B,EAUAquhB,EAAaz4gB,UAAUs5gB,QAAU,SAAUlnb,EAAUj/F,EAAM2W,GAEvD,IAAKwz2B,EAAkB192B,KAAKokG,QAASpkG,KAAKrQ,MAAO6iG,GAC7C,MAAM,IAAIjrF,MAAM,2BAA8BvH,KAAKrQ,MAAQ,SAAa6iG,EAAW,KAGvF,IAAImrxB,EACA392B,KAAK2iF,WACLg7xB,EAAU392B,KAAKg92B,MACfh92B,KAAKg92B,MAAQ,MAGjB,IAAIxy3B,EAAM,KACN+I,IACA/I,EAAMwV,KAAK492B,aAAarq3B,IAI5B,IAAIsq3B,EAAgBrz3B,EAAM,KAAOwV,KAAK492B,aAAa,cAWnD,OATA592B,KAAKkvC,WAAWsjD,EAAUhoG,GAAOqz3B,EAAe3z2B,GAE5Cyz2B,GACAA,EAAQ/m3B,UAGRin3B,GACA792B,KAAK+jF,YAAY85xB,GAEdrz3B,CACX,EAOAquhB,EAAaz4gB,UAAU2jF,YAAc,SAAUv5F,GAC3C,IAAKwV,KAAK2iF,SACN,MAAM,IAAIp7E,MAAM,kCAAoC/c,EAAI+I,KAAO,2CAE9D,IAAKyM,KAAKu92B,QAAQ/y3B,GACnB,MAAM,IAAI+c,MAAM,kCAAoC/c,EAAI+I,KAAO,YAAcyM,KAAKg92B,MAAMzp3B,KAAO,iBAEjF,IAAd/I,EAAIs3N,OACJ9hN,KAAKg92B,MAAQ,KACbxy3B,EAAIoM,WAGJpM,EAAIs3N,OAEZ,EAQA+2T,EAAaz4gB,UAAUo92B,sBAAwB,SAAUhz3B,GACrD,IAAKwV,KAAK2iF,SACN,MAAM,IAAIp7E,MAAM,kCAAoC/c,EAAI+I,KAAO,2CAE9D,IAAKyM,KAAKu92B,QAAQ/y3B,GACnB,MAAM,IAAI+c,MAAM,kCAAoC/c,EAAI+I,KAAO,YAAcyM,KAAKg92B,MAAMzp3B,KAAO,iBAEnG/I,EAAIs3N,MAAQ,EACZ9hN,KAAKg92B,MAAQ,KACbxy3B,EAAIoM,SACR,EAUAiihB,EAAaz4gB,UAAUq92B,SAAW,SAAUK,GACxC,IAAI552B,EAAQlE,KAEZ,GAAyB,iBAAd892B,EAAwB,CAC/B,IAAIC,EAAQD,EACZ,OAAO,IAAInn3B,QAAQ,SAAUC,GACzBA,EAAQsN,EAAM052B,aAAaG,GAC/B,EACJ,CAEA,IAAIxq3B,EAAOuq3B,EACX,GAAI992B,KAAK2iF,SAAU,CACf,IAAI86xB,EAAWz92B,KAAKy92B,SAAS/h0B,KAAK17C,KAAMzM,GACxC,OAAOyM,KAAKg92B,MAAM36vB,QAAQxrH,KAAK4m3B,EACnC,CACA,OAAO9m3B,QAAQC,QAAQoJ,KAAK492B,aAAarq3B,GAC7C,EAUAslhB,EAAaz4gB,UAAUw92B,aAAe,SAAUE,GAC5C,IAAItz3B,EAA2B,iBAAdsz3B,EAAyB,KAAOA,EAC7Cvq3B,EAAO/I,EAAMA,EAAI+I,KAAOuq3B,EAC5B,GAAItz3B,IAAQwV,KAAKu92B,QAAQ/y3B,KAASA,GAAOwV,KAAK2iF,SAC1C,MAAM,IAAIp7E,MAAM,+BAAiChU,EAAO,yBAA2ByM,KAAKg92B,MAAMzp3B,KAAO,qBAGzG,GAAI/I,EAEA,OADAA,EAAIs3N,QACGt3N,EAGX,IAAIo4F,EAiGZ,SAAkBrvF,GACd,IAAIqvF,EAAOuxB,EAAKjL,QAGhB,OAFAtmB,EAAKrvF,KAAOA,EACZqvF,EAAKk/H,MAAQ,EACNl/H,CACX,CAtGmBo7xB,CAASzq3B,GAEpB,OADAyM,KAAKg92B,MAAQp6xB,EACNA,CACX,EAUAi2b,EAAaz4gB,UAAU8uC,WAAa,SAAUsjD,EAAUhoG,EAAK0f,GAGzD,GAFAA,EAAUA,GAAW,GAEjBlK,KAAK2iF,SAAU,CACf,IAAKn4F,EACD,MAAM,IAAI+c,MAAM,mDAGf,IAAKvH,KAAKu92B,QAAQ/y3B,GACnB,MAAM,IAAI+c,MAAM,0CAA4C/c,EAAI+I,KAAO,YAAcyM,KAAKg92B,MAAMzp3B,KAAO,gBAE/G,MACK,GAAI/I,EACL,MAAM,IAAI+c,MAAM,oBAAsB/c,EAAI+I,KAAO,sEAGrD,IAAKmq3B,EAAkB192B,KAAKokG,QAASpkG,KAAKrQ,MAAO6iG,GAC7C,MAAM,IAAIjrF,MAAM,2BAA8BvH,KAAKrQ,MAAQ,SAAa6iG,EAAW,KAGvFxyF,KAAK2kG,OAASnS,EACdxyF,KAAK6K,KAAK/J,MAAMd,KAAMk0U,EAAc,GAAIx0O,EAAO,CAAC,eAAgBlN,GAAUxkG,OAAOkc,KACrF,EASA2ugB,EAAaz4gB,UAAU692B,cAAgB,SAAUzrxB,EAAUhoG,EAAK0f,GAC5D,IACIlK,KAAKkvC,WAAWsjD,EAAUhoG,EAAK0f,EACnC,CACA,MAAOD,GACH,OAAO,CACX,CACA,OAAO,CACX,EAQA4ugB,EAAaz4gB,UAAUgiH,KAAO,SAAUzyH,GACpC,IAAIuU,EAAQlE,KACZ,OAAIA,KAAKrQ,QAAUA,EACRgH,QAAQC,QAAQoJ,MAEjB092B,EAAkB192B,KAAKi92B,iBAAkBj92B,KAAKrQ,MAAOA,GAGxDqQ,KAAKo92B,aAAa,SAAU5qxB,EAAU57F,EAASwK,GAC9CoxF,IAAa7iG,EACbiH,EAAQsN,GAEFw52B,EAAkBx52B,EAAM+42B,iBAAkBzqxB,EAAU7iG,IAC1DyR,EAAO882B,EAAuB1rxB,EAAU7iG,GAEhD,GATWgH,QAAQyK,OAAO882B,EAAuBl+2B,KAAKrQ,MAAOA,GAUjE,EACOkphB,CACX,CApUiC,CAoU/Bz1gB,GAaF,SAASs62B,EAAkBpyqB,EAAOzmL,EAAMD,GACpC,OAAO0mL,EAAMz3M,IAAIgxB,GAAMlxB,IAAIixB,EAC/B,CA4BA,SAASu41B,EAAc7xqB,EAAOzmL,EAAMD,GAQhC,OAPAA,EAAKA,GAAM,IAAI1xB,IACfo4M,EAAMz3M,IAAIgxB,GAAM7yB,QAAQ,SAAUjL,GACzB69B,EAAGjxB,IAAI5M,KACR69B,EAAGtxB,IAAIvM,GACPo23B,EAAc7xqB,EAAOvkN,EAAM69B,GAAI5yB,QAAQ4yB,EAAGtxB,IAAKsxB,GAEvD,GACOA,CACX,CAcA,SAASs51B,EAAuBC,EAAMC,GAClC,OAAO,IAAI722B,MAAM,IAAO622B,EAAQ,6BAAiCD,EAAO,IAC5E,CACAz8xB,EAAOj9F,QAAUo0hB,C,+BCtbjB/uhB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAGIs8U,EAHAtgO,EAAW,EAAQ,OACnBika,EAAY,EAAQ,OACpB7vZ,EAAQ,EAAQ,QAEpB,SAAWksN,GACPA,EAAWA,EAAuB,WAAI,GAAK,aAC3CA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAkB,MAAI,GAAK,OACzC,CAND,CAMGA,EAAax9U,EAAQw9U,aAAex9U,EAAQw9U,WAAa,CAAC,IAE7D,IAAIlkU,EAAK,EACL+hU,EAA2B,WAC3B,SAASA,EAAU9vT,EAAMogF,EAAS2vO,GAC9B//T,KAAKm+R,IAAMpgS,IACXiC,KAAKgQ,KAAOA,EACZhQ,KAAKowF,QAAUA,EACfpwF,KAAK+/T,OAASA,CAClB,CA6DA,OA3DAD,EAAUu+iB,mBAAqB,SAAU/r2B,GACrC,OAAOA,GAA4B,mBAAbA,EAAIzb,MAAwBk/G,EAAMkP,GAAG66M,EAAT/pN,CAAoBzjG,EAAIgs2B,qBAC9E,EAEAx+iB,EAAUe,WAAa,SAAUd,EAAQnwU,GACrC,IACIw9P,EAAY,IAAI0yE,EAAUmC,EAAWE,WAD3B,+DACgDpC,GAI9D,OAHInwU,GAAWA,EAAQwyU,aACnBh1E,EAAUg1E,YAAa,GAEpBh1E,CACX,EAEA0yE,EAAUsC,WAAa,SAAUrC,GAC7B,OAAOD,EAAUe,WAAWd,EAAQ,CAAEqC,YAAY,GACtD,EAEAtC,EAAUiB,QAAU,SAAUhB,GAE1B,OAAO,IAAID,EAAUmC,EAAWs8iB,QADlB,6BACoCx+iB,EACtD,EAEAD,EAAU0+iB,QAAU,SAAUz+iB,GAE1B,OAAO,IAAID,EAAUmC,EAAWC,QADlB,6BACoCnC,EACtD,EAEAD,EAAUvlF,QAAU,SAAUwlF,GAE1B,OAAO,IAAID,EAAUmC,EAAWK,QADlB,kCACoCvC,EACtD,EAEAD,EAAU2+iB,QAAU,SAAU1+iB,GAE1B,OAAO,IAAID,EAAUmC,EAAW8tS,MADlB,yBACkChwS,EACpD,EAUAD,EAAUngS,UAAY,SAAUogS,GAC5B,OAAOhqN,EAAMkP,GAAG66M,EAAT/pN,CAAoBgqN,GAAUA,EAASD,EAAU2+iB,QAAQ1+iB,EACpE,EACAD,EAAU1/T,UAAUpZ,SAAW,WAC3B,IAA6BzD,EAGzBw8U,GAHyBx8U,EAGHyc,KAAK+/T,SAFfx8U,EAAEyD,WAAa8C,OAAOsW,UAAUpZ,SAAWzD,EAAEyD,WAAa4+gB,EAAUh8f,UAAUrmB,GAG1FigB,EAAKxD,KACT,MAAO,6BADcwD,EAAG26R,IACoB,UADR36R,EAAGwM,KACwB,cADRxM,EAAG4sF,QAC+B,aAAe2vO,EAAS,GACrH,EACAD,EAAU1/T,UAAU0gU,UAAY,WAC5B,OAAOn/N,EAASqB,OAAOrB,EAASkgO,gBAAgB7hU,MAAO,CAAEs+2B,qBAAsBt+2B,MACnF,EACO8/T,CACX,CApE8B,GAqE9Br7U,EAAQq7U,UAAYA,C,yBC/EZ,SAAWj/U,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wEAAwEC,MAC5E,KAEJC,YACI,wEAAwED,MACpE,KAERE,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,OACHC,GAAI,WACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA3DyCC,CAAQ,EAAQ,O,+BCL1D,IAAImlG,EAAI,EAAQ,OACZ+okB,EAAY,EAAQ,OAKxB/okB,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM3xB,KAAM,YAAastG,OAAQ,GAAG69wB,WAAajsN,GAAa,CACzFisN,SAAUjsN,G,+BCPZ,IAAI/okB,EAAI,EAAQ,OACZ6/tB,EAAY,EAAQ,OAIxB7/tB,EAAE,CAAEq3B,QAAQ,EAAMlgB,OAAQ16E,WAAaojyB,GAAa,CAClDpjyB,SAAUojyB,G,qCCNZ,IAAI9pkB,EAAwBz/O,MAAQA,KAAKy/O,sBAAyB,SAAUC,EAAQnxM,GAEhF,OADIzkD,OAAOwY,eAAkBxY,OAAOwY,eAAeo9O,EAAQ,MAAO,CAAE/5P,MAAO4oD,IAAiBmxM,EAAOnxM,IAAMA,EAClGmxM,CACX,EACA51P,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ6+sB,gCAA6B,EACrC,IAgCI1jd,EAhCA2hd,EAAuB,EAAQ,OAC/Bzhd,EAAgB,EAAQ,OA8B5Br7P,EAAQ6+sB,2BA7BR,SAAoCvjd,EAAIW,EAAcV,EAAgBC,EAAgB6hd,EAAoB68K,GACtG,IAAIr+nB,GAAuB,EAAIR,EAAcO,MAAMT,IAAqBA,EAAmBH,EAAqB,CAAC,6SAA8S,CAAC,gTAC5Zj8O,EAAK+9rB,EAAqBU,iBAAiBH,EAAmBI,iBAAkBC,EAAoB3+rB,EAAG,GAAI4+rB,EAAqB5+rB,EAAG,GACnIq9O,GAAiB,EAAIf,EAAca,eAAeZ,EAAIA,EAAGe,gBAAiBR,GAC1ES,GAAU,EAAIjB,EAAckB,6BAA6BjB,EAAIW,EAAcG,EAAgBb,EAAgBC,GAC3G2+nB,EAAgB7+nB,EAAGmB,mBAAmBH,EAAS,uBAC/C89nB,GAAe,EAAI/+nB,EAAckC,eAAejC,EAAIA,EAAGkC,MAAOkgd,EAAmBC,GACjF08K,EAAc/+nB,EAAG20O,oBAoBrB,OAnBA30O,EAAGgD,gBAAgBhD,EAAGiD,YAAa87nB,GACnC/+nB,EAAG40O,qBAAqB50O,EAAGiD,YAAajD,EAAG60O,kBAAmB70O,EAAGuC,WAAYq8nB,EAAe,GAC5F5+nB,EAAG2B,WAAWX,GACdhB,EAAG6B,UAAUg9nB,EAAe,GAgBrB,CAAEvgzB,OAfT,SAAgBqloB,GACZ3jd,EAAGnwI,SAAS,EAAG,EAAGuylB,EAAmBC,GACrCrid,EAAG2B,WAAWX,GACdhB,EAAG4C,cAAc5C,EAAG6C,UACpB7C,EAAG8C,YAAY9C,EAAGuC,WAAYu8nB,GAC9B9+nB,EAAGsC,cAActC,EAAGuC,WAAY,EAAG,EAAG,EAAG6/c,EAAmBC,EAAoBrid,EAAGwC,KAAMxC,EAAGyC,cAAekhd,GAC3G3jd,EAAGgD,gBAAgBhD,EAAGiD,YAAa87nB,GACnC/+nB,EAAGkD,WAAWlD,EAAGmD,eAAgB,EAAG,EACxC,EAOyBO,QANzB,WACI1D,EAAG+0O,kBAAkBgqZ,GACrB/+nB,EAAG2D,cAAcm7nB,GACjB9+nB,EAAG4D,cAAc5C,GACjBhB,EAAG6D,aAAa/C,EACpB,EAEJ,C,qKC3BIjxO,EAAO,WAAiB,EAarB,SAASmv2B,EAAgBnv3B,QACd,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIu5B,GAAU,IAAA4gN,YAAW,KAErBotG,GAAkB,SAClBz7U,EAAey7U,EAAgB,GAC/BI,EAAiBJ,EAAgB,GAEjC6niB,GAAc,IAAA//2B,SAAO,GACrBpP,EAAWD,EACXy/B,EAAOx/B,EAASw/B,KAChBzqC,EAASiL,EAASjL,OAClB0zV,EAAiBzoV,EAASyoV,eAC1B2miB,EAAwBpv3B,EAASonV,aACjCA,OAAyC,IAA1BgoiB,EAAmC,CAAC,EAAIA,EACvDC,EAAqBrv3B,EAASioV,UAC9BqniB,OAAyC,IAAvBD,IAAkC/11B,EAAU+11B,EAC9Dt60B,EAAoD,OAAjC,MAAXzb,OAAkB,EAASA,EAAQyb,MAAgBh1C,EAAQg1C,KAAOzb,EAAQyb,KAClFwle,EAA4D,OAArC,MAAXjhf,OAAkB,EAASA,EAAQihf,UAAoBx6gB,EAAQw6gB,SAAWjhf,EAAQihf,SAE9Fxle,IAASo60B,EAAYnp3B,UACvBmp3B,EAAYnp3B,SAAU,GAGxB,IAAI+nnB,EAAc,SAAqB54nB,GAC1B,MAAXmkC,GAA2BA,EAAQ6+N,QAAO,EAAOhjQ,EACnD,EAEIoG,EAAO+9B,GAAW,CAAC,EACnB8gf,EAAO7+gB,EAAK6+gB,KACZY,EAAUz/gB,EAAKy/gB,QACfD,EAAcx/gB,EAAKw/gB,YACnBF,EAAgBt/gB,EAAKs/gB,cAErBtkhB,EAAYgkhB,EAAW,aAAe,eAC7B,OAATH,EAAe7jhB,EAAYgkhB,EAAW,UAAY,YAA8B,UAATH,EAAkB7jhB,EAAYgkhB,EAAW,YAAc,cAAgC,SAATH,IAAiB7jhB,EAAYgkhB,EAAW,WAAa,cAE9M,IAaIg1W,EAbAvniB,GAAa,OAAU6yL,EAAeE,GAAa,QAA6B,CAClFxkhB,UAAWA,EACX4P,WAAYmp3B,IAAmBv60B,GAC/BozS,aAAcpzS,EACdhgD,OAAQA,EACRyqC,KAAMA,EACN3zB,aAAcA,EACdu7U,aAAcA,KAEZ/hV,EAAS2iV,EAAW3iV,OACpBD,EAAa4iV,EAAW5iV,WACxBpK,GAAS,OAA8BgtV,EAAY,CAAC,SAAU,eAG9DwniB,EAAY,CACdxswB,IAAKg4Z,GAAWj7f,EAChB,kBAAoC,MAAjB86f,OAAwB,EAASA,EAAc3sgB,IAEhEuh3B,EAAY,CACd160B,KAAMA,EACNwle,SAAUA,EACVm1W,SAAUP,EAAYnp3B,QACtB4X,MAAOmwmB,GAwBT,OAhBEwhQ,EALGD,GAKI,OAAS,CAAC,EAAGt03B,EAAQy03B,EAAW,CACrClt1B,OAAO,OAAS,CAAC,EAAGit1B,EAAWpq3B,EAAWpK,OAAQ,CAChD6+B,MAAOx0B,EAAOrK,SAEhBy4U,YAAY,OAAS,CACnBzwN,IAAK0kO,GACJtiV,EAAW6C,MAAO,CACnB4xB,MAAOx0B,EAAO4C,WAXX,OAAS,CAAC,EAAGwn3B,EAAW,CAC7Blt1B,MAAOit1B,KAeX,OAAaz0W,EAAagzG,EAAa,CACrCvlS,aAAcC,EACdtqS,WAAYox0B,GAAQx60B,KAEfw60B,CACT,CACA,IAAI1lqB,EAAY,CAuBdliG,SAAU,SAAe3C,WAOzBjwE,KAAM,SAONwle,SAAU,SAOV/6e,KAAM,SACNyoT,UAAW,UAAgB,EAAC,GAAM,IAKlCb,aAAc,WAKdqB,eAAgB,YAYlB,SAASszL,EAAajhhB,GACpB,IAAI6sH,EAAW7sH,EAAM6sH,SAGjBnjH,EAAO0q3B,GAFG,OAA8Bp03B,EAAO,CAAC,cAGpD,OAAoB,gBAAoB,WAAgB,KAAM0J,EAAKkr3B,SAAW/nwB,EAASnjH,GAAQ,KACjG,CAEAu3gB,EAAavjV,YAAc,4BAC3BujV,EAAalyT,UAAYA,EACzBkyT,EAAavyT,aApBM,CACjBy+H,WAAW,GAsBb,S,uCC9LmEp2P,EAAOj9F,QAGjE,WAAe,aA0BpB,SAASgd,EAAYT,EAAStT,GAC5B,IASEgU,EACA/d,EACAid,EACAe,EAZEC,EAAI,CACJC,MAAO,EACPC,KAAM,WACJ,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,EACX,EACAmB,KAAM,GACNC,IAAK,IAMT,OAAOL,EAAI,CACT7Z,KAAMma,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WACvD,OAAOlC,IACT,GAAI2B,EACJ,SAASM,EAAKpB,GACZ,OAAO,SAAUsB,GACf,OAGJ,SAAcC,GACZ,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOsB,OACL,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACT,KAAK,EACL,KAAK,EACHxB,EAAIwB,EACJ,MACF,KAAK,EAEH,OADAR,EAAEC,QACK,CACLlc,MAAOyc,EAAG,GACVZ,MAAM,GAEV,KAAK,EACHI,EAAEC,QACFle,EAAIye,EAAG,GACPA,EAAK,CAAC,GACN,SACF,KAAK,EACHA,EAAKR,EAAEI,IAAIK,MACXT,EAAEG,KAAKM,MACP,SACF,QACE,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFR,EAAI,EACJ,QACF,CACA,GAAc,IAAVQ,EAAG,MAAcxB,GAAKwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAK,CACvDgB,EAAEC,MAAQO,EAAG,GACb,KACF,CACA,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CACjCgB,EAAEC,MAAQjB,EAAE,GACZA,EAAIwB,EACJ,KACF,CACA,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CACvBgB,EAAEC,MAAQjB,EAAE,GACZgB,EAAEI,IAAIlO,KAAKsO,GACX,KACF,CACIxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MACP,SAEJD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC1B,CAAE,MAAO5c,GACPod,EAAK,CAAC,EAAGpd,GACTrB,EAAI,CACN,CAAE,QACA+d,EAAId,EAAI,CACV,CACA,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACLzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EACvBZ,MAAM,EAEV,CA/DWF,CAAK,CAACT,EAAGsB,GAClB,CACF,CA8DF,CACA,IAAIklM,EACF,SAAc78M,EAAKuL,GACjBiK,KAAKlY,KAAO,KACZkY,KAAKxV,IAAMA,EACXwV,KAAKjK,KAAOA,EACZiK,KAAK7V,KAAO,KACZ6V,KAAK/V,MAAQ,IACf,EAOF,SAASu13B,EAAgB5l3B,EAAGC,GAC1B,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CAClC,CAIA,SAAS4l3B,EAAMp63B,EAAGub,EAAG49O,GAInB,IAHA,IAAIzjO,EAAI,IAAIssL,EAAK,KAAM,MACnB7uL,EAAIuC,EACJhB,EAAIgB,IACK,CACX,IAAIsY,EAAMmrN,EAAWn5P,EAAGub,EAAEpW,KAE1B,GAAI6oC,EAAM,EAAG,CACX,GAAe,OAAXzyB,EAAEzW,KAAe,MAErB,GAAIq0P,EAAWn5P,EAAGub,EAAEzW,KAAKK,KAAO,EAAG,CACjC,IAAI7G,EAAIid,EAAEzW,KAIV,GAHAyW,EAAEzW,KAAOxG,EAAEsG,MACXtG,EAAEsG,MAAQ2W,EAEK,QADfA,EAAIjd,GACEwG,KAAe,KACvB,CACA4vB,EAAE5vB,KAAOyW,EACTmZ,EAAInZ,EACJA,EAAIA,EAAEzW,IAER,KAAO,MAAIkpC,EAAM,GAaV,MAZL,GAAgB,OAAZzyB,EAAE3W,MAAgB,MAEtB,GAAIu0P,EAAWn5P,EAAGub,EAAE3W,MAAMO,KAAO,IAC3B7G,EAAIid,EAAE3W,MACV2W,EAAE3W,MAAQtG,EAAEwG,KACZxG,EAAEwG,KAAOyW,EAEO,QADhBA,EAAIjd,GACEsG,OAAgB,MAExBuuB,EAAEvuB,MAAQ2W,EACV4X,EAAI5X,EACJA,EAAIA,EAAE3W,KACI,CACd,CAMA,OAJAuuB,EAAEvuB,MAAQ2W,EAAEzW,KACZ4vB,EAAE5vB,KAAOyW,EAAE3W,MACX2W,EAAEzW,KAAO4wB,EAAE9wB,MACX2W,EAAE3W,MAAQ8wB,EAAE5wB,KACLyW,CACT,CACA,SAASuwF,EAAO9rG,EAAG0Q,EAAM6K,EAAG49O,GAC1B,IAAIz3P,EAAO,IAAIsgN,EAAKhiN,EAAG0Q,GACvB,GAAU,OAAN6K,EAEF,OADA7Z,EAAKoD,KAAOpD,EAAKkD,MAAQ,KAClBlD,EAGT,IAAIssC,EAAMmrN,EAAWn5P,GADrBub,EAAI6+2B,EAAMp63B,EAAGub,EAAG49O,IACUh0P,KAU1B,OATI6oC,EAAM,GACRtsC,EAAKoD,KAAOyW,EAAEzW,KACdpD,EAAKkD,MAAQ2W,EACbA,EAAEzW,KAAO,MACAkpC,GAAO,IAChBtsC,EAAKkD,MAAQ2W,EAAE3W,MACflD,EAAKoD,KAAOyW,EACZA,EAAE3W,MAAQ,MAELlD,CACT,CACA,SAAS7F,EAAMsJ,EAAK2X,EAAGq8O,GACrB,IAAIr0P,EAAO,KACPF,EAAQ,KACZ,GAAIkY,EAAG,CAEL,IAAIkxB,EAAMmrN,GADVr8O,EAAIs92B,EAAMj13B,EAAK2X,EAAGq8O,IACKh0P,IAAKA,GAChB,IAAR6oC,GACFlpC,EAAOgY,EAAEhY,KACTF,EAAQkY,EAAElY,OACDopC,EAAM,GACfppC,EAAQkY,EAAElY,MACVkY,EAAElY,MAAQ,KACVE,EAAOgY,IAEPhY,EAAOgY,EAAEhY,KACTgY,EAAEhY,KAAO,KACTF,EAAQkY,EAEZ,CACA,MAAO,CACLhY,KAAMA,EACNF,MAAOA,EAEX,CAWA,SAASy13B,EAASh31B,EAAMwM,EAAQyq1B,EAAQl2wB,EAAK6psB,GAC3C,GAAI5qxB,EAAM,CACR+gF,EAASv0E,GAAUyq1B,EAAS,OAAS,QAAUrsE,EAAU5qxB,GAAQ,MACjE,IAAI88I,EAAStwI,GAAUyq1B,EAAS,OAAS,QACrCj31B,EAAKv+B,MAAMu13B,EAASh31B,EAAKv+B,KAAMq7K,GAAQ,EAAO/7D,EAAK6psB,GACnD5qxB,EAAKz+B,OAAOy13B,EAASh31B,EAAKz+B,MAAOu7K,GAAQ,EAAM/7D,EAAK6psB,EAC1D,CACF,CACA,IAAIssE,EAAoB,WACtB,SAASA,EAAKphoB,QACO,IAAfA,IACFA,EAAaghoB,GAEfx/2B,KAAK22G,MAAQ,KACb32G,KAAKkyE,MAAQ,EACblyE,KAAK6/2B,YAAcrhoB,CACrB,CA+WA,OA3WAohoB,EAAKx/2B,UAAU+wF,OAAS,SAAU3mG,EAAKuL,GAErC,OADAiK,KAAKkyE,QACElyE,KAAK22G,MAAQxlB,EAAO3mG,EAAKuL,EAAMiK,KAAK22G,MAAO32G,KAAK6/2B,YACzD,EAIAD,EAAKx/2B,UAAU9M,IAAM,SAAU9I,EAAKuL,GAClC,IAAIhP,EAAO,IAAIsgN,EAAK78M,EAAKuL,GACN,OAAfiK,KAAK22G,QACP5vH,EAAKoD,KAAOpD,EAAKkD,MAAQ,KACzB+V,KAAKkyE,QACLlyE,KAAK22G,MAAQ5vH,GAEf,IAAIy3P,EAAax+O,KAAK6/2B,YAClBj/2B,EAAI6+2B,EAAMj13B,EAAKwV,KAAK22G,MAAO6nI,GAC3BnrN,EAAMmrN,EAAWh0P,EAAKoW,EAAEpW,KAc5B,OAbY,IAAR6oC,EAAWrzB,KAAK22G,MAAQ/1G,GACtByyB,EAAM,GACRtsC,EAAKoD,KAAOyW,EAAEzW,KACdpD,EAAKkD,MAAQ2W,EACbA,EAAEzW,KAAO,MACAkpC,EAAM,IACftsC,EAAKkD,MAAQ2W,EAAE3W,MACflD,EAAKoD,KAAOyW,EACZA,EAAE3W,MAAQ,MAEZ+V,KAAKkyE,QACLlyE,KAAK22G,MAAQ5vH,GAERiZ,KAAK22G,KACd,EAKAipwB,EAAKx/2B,UAAUwiC,OAAS,SAAUp4C,GAChCwV,KAAK22G,MAAQ32G,KAAKwhE,QAAQh3E,EAAKwV,KAAK22G,MAAO32G,KAAK6/2B,YAClD,EAIAD,EAAKx/2B,UAAUohE,QAAU,SAAUn8E,EAAGub,EAAG49O,GACvC,IAAIj4P,EACJ,OAAU,OAANqa,EAAmB,KAGX,IADF49O,EAAWn5P,GADrBub,EAAI6+2B,EAAMp63B,EAAGub,EAAG49O,IACUh0P,MAGT,OAAXoW,EAAEzW,KACJ5D,EAAIqa,EAAE3W,OAEN1D,EAAIk53B,EAAMp63B,EAAGub,EAAEzW,KAAMq0P,IACnBv0P,MAAQ2W,EAAE3W,MAEd+V,KAAKkyE,QACE3rF,GAEFqa,CACT,EAIAg/2B,EAAKx/2B,UAAUiC,IAAM,WACnB,IAAItb,EAAOiZ,KAAK22G,MAChB,GAAI5vH,EAAM,CACR,KAAOA,EAAKoD,MAAMpD,EAAOA,EAAKoD,KAG9B,OAFA6V,KAAK22G,MAAQ8owB,EAAM143B,EAAKyD,IAAKwV,KAAK22G,MAAO32G,KAAK6/2B,aAC9C7/2B,KAAK22G,MAAQ32G,KAAKwhE,QAAQz6E,EAAKyD,IAAKwV,KAAK22G,MAAO32G,KAAK6/2B,aAC9C,CACLr13B,IAAKzD,EAAKyD,IACVuL,KAAMhP,EAAKgP,KAEf,CACA,OAAO,IACT,EAIA6p3B,EAAKx/2B,UAAU0/2B,WAAa,SAAUt13B,GAGpC,IAFA,IAAIqL,EAAUmK,KAAK22G,MACfj3E,EAAU1/B,KAAK6/2B,YACZhq3B,GAAS,CACd,IAAIw9B,EAAMqM,EAAQl1C,EAAKqL,EAAQrL,KAC/B,GAAY,IAAR6oC,EAAW,OAAOx9B,EAA0BA,EAATw9B,EAAM,EAAax9B,EAAQ1L,KAAoB0L,EAAQ5L,KAChG,CACA,OAAO,IACT,EACA213B,EAAKx/2B,UAAUvF,KAAO,SAAUrQ,GAC9B,OAAIwV,KAAK22G,QACP32G,KAAK22G,MAAQ8owB,EAAMj13B,EAAKwV,KAAK22G,MAAO32G,KAAK6/2B,aACK,IAA1C7/2B,KAAK6/2B,YAAYr13B,EAAKwV,KAAK22G,MAAMnsH,MAAmB,KAEnDwV,KAAK22G,KACd,EACAipwB,EAAKx/2B,UAAU5Y,SAAW,SAAUgD,GAGlC,IAFA,IAAIqL,EAAUmK,KAAK22G,MACfj3E,EAAU1/B,KAAK6/2B,YACZhq3B,GAAS,CACd,IAAIw9B,EAAMqM,EAAQl1C,EAAKqL,EAAQrL,KAC/B,GAAY,IAAR6oC,EAAW,OAAO,EAAuBx9B,EAATw9B,EAAM,EAAax9B,EAAQ1L,KAAoB0L,EAAQ5L,KAC7F,CACA,OAAO,CACT,EACA213B,EAAKx/2B,UAAUpO,QAAU,SAAU+t3B,EAASj21B,GAI1C,IAHA,IAAIj0B,EAAUmK,KAAK22G,MACf97F,EAAI,GACJrZ,GAAO,GACHA,GACU,OAAZ3L,GACFglB,EAAE/mB,KAAK+B,GACPA,EAAUA,EAAQ1L,MAED,IAAb0wB,EAAEzmB,QACJyB,EAAUglB,EAAExY,MACZ092B,EAAQ1/2B,KAAKypB,EAAKj0B,GAClBA,EAAUA,EAAQ5L,OACbuX,GAAO,EAGlB,OAAOxB,IACT,EAIA4/2B,EAAKx/2B,UAAUyT,MAAQ,SAAUmvM,EAAK/Z,EAAMn0M,EAAIg1B,GAK9C,IAJA,IAAIjP,EAAI,GACJ6kB,EAAU1/B,KAAK6/2B,YACf943B,EAAOiZ,KAAK22G,MAEI,IAAb97F,EAAEzmB,QAAgBrN,GACvB,GAAIA,EACF8zB,EAAE/mB,KAAK/M,GACPA,EAAOA,EAAKoD,SACP,CAGL,GADMu1C,GADN34C,EAAO8zB,EAAExY,OACU7X,IAAKy+M,GACd,EACR,MACK,GAAIvpK,EAAQ34C,EAAKyD,IAAKw4N,IAAQ,GAC/BluN,EAAGuL,KAAKypB,EAAK/iC,GAAO,OAAOiZ,KAEjCjZ,EAAOA,EAAKkD,KACd,CAEF,OAAO+V,IACT,EAIA4/2B,EAAKx/2B,UAAU/V,KAAO,WACpB,IAAIA,EAAO,GAKX,OAJA2V,KAAKhO,QAAQ,SAAUwR,GACrB,IAAIhZ,EAAMgZ,EAAGhZ,IACb,OAAOH,EAAKyJ,KAAKtJ,EACnB,GACOH,CACT,EAIAu13B,EAAKx/2B,UAAUwoB,OAAS,WACtB,IAAIA,EAAS,GAKb,OAJA5oB,KAAKhO,QAAQ,SAAUwR,GACrB,IAAIzN,EAAOyN,EAAGzN,KACd,OAAO6yB,EAAO90B,KAAKiC,EACrB,GACO6yB,CACT,EACAg31B,EAAKx/2B,UAAU1W,IAAM,WACnB,OAAIsW,KAAK22G,MAAc32G,KAAKgg3B,QAAQhg3B,KAAK22G,OAAOnsH,IACzC,IACT,EACAo13B,EAAKx/2B,UAAUzW,IAAM,WACnB,OAAIqW,KAAK22G,MAAc32G,KAAKig3B,QAAQjg3B,KAAK22G,OAAOnsH,IACzC,IACT,EACAo13B,EAAKx/2B,UAAU4/2B,QAAU,SAAUp/2B,GAIjC,QAHU,IAANA,IACFA,EAAIZ,KAAK22G,OAEP/1G,EAAG,KAAOA,EAAEzW,MAAMyW,EAAIA,EAAEzW,KAC5B,OAAOyW,CACT,EACAg/2B,EAAKx/2B,UAAU6/2B,QAAU,SAAUr/2B,GAIjC,QAHU,IAANA,IACFA,EAAIZ,KAAK22G,OAEP/1G,EAAG,KAAOA,EAAE3W,OAAO2W,EAAIA,EAAE3W,MAC7B,OAAO2W,CACT,EAIAg/2B,EAAKx/2B,UAAUswX,GAAK,SAAUl6X,GAK5B,IAJA,IAAIX,EAAUmK,KAAK22G,MACfn1G,GAAO,EACPnc,EAAI,EACJw1B,EAAI,IACArZ,GACN,GAAI3L,EACFglB,EAAE/mB,KAAK+B,GACPA,EAAUA,EAAQ1L,UAElB,GAAI0wB,EAAEzmB,OAAS,EAAG,CAEhB,GADAyB,EAAUglB,EAAExY,MACRhd,IAAMmR,EAAO,OAAOX,EACxBxQ,IACAwQ,EAAUA,EAAQ5L,KACpB,MAAOuX,GAAO,EAGlB,OAAO,IACT,EACAo+2B,EAAKx/2B,UAAUtY,KAAO,SAAUvE,GAC9B,IAAImlC,EAAO1oB,KAAK22G,MACZsnqB,EAAY,KAChB,GAAI16xB,EAAE0G,MAAO,CAEX,IADAg0xB,EAAY16xB,EAAE0G,MACPg0xB,EAAU9zxB,MAAM8zxB,EAAYA,EAAU9zxB,KAC7C,OAAO8zxB,CACT,CAEA,IADA,IAAIz/hB,EAAax+O,KAAK6/2B,YACfn31B,GAAM,CACX,IAAI2K,EAAMmrN,EAAWj7P,EAAEiH,IAAKk+B,EAAKl+B,KACjC,GAAY,IAAR6oC,EAAW,MAAeA,EAAM,GAClC4qvB,EAAYv1vB,EACZA,EAAOA,EAAKv+B,MACPu+B,EAAOA,EAAKz+B,KACrB,CACA,OAAOg0xB,CACT,EACA2hG,EAAKx/2B,UAAUy6B,KAAO,SAAUt3C,GAC9B,IAAImlC,EAAO1oB,KAAK22G,MACZupwB,EAAc,KAClB,GAAe,OAAX383B,EAAE4G,KAAe,CAEnB,IADA+13B,EAAc383B,EAAE4G,KACT+13B,EAAYj23B,OAAOi23B,EAAcA,EAAYj23B,MACpD,OAAOi23B,CACT,CAEA,IADA,IAAI1hoB,EAAax+O,KAAK6/2B,YACfn31B,GAAM,CACX,IAAI2K,EAAMmrN,EAAWj7P,EAAEiH,IAAKk+B,EAAKl+B,KACjC,GAAY,IAAR6oC,EAAW,MAAeA,EAAM,EAAG3K,EAAOA,EAAKv+B,MACjD+13B,EAAcx31B,EACdA,EAAOA,EAAKz+B,MAEhB,CACA,OAAOi23B,CACT,EACAN,EAAKx/2B,UAAU26D,MAAQ,WAGrB,OAFA/6D,KAAK22G,MAAQ,KACb32G,KAAKkyE,MAAQ,EACNlyE,IACT,EACA4/2B,EAAKx/2B,UAAUizY,OAAS,WACtB,OAmIJ,SAAgB3qX,GAMd,IALA,IAAI7yB,EAAU6yB,EACV7N,EAAI,GACJrZ,GAAO,EACPqyC,EAAO,IAAIwzJ,EAAK,KAAM,MACtBlnM,EAAI0zC,GACAryC,GACF3L,GACFglB,EAAE/mB,KAAK+B,GACPA,EAAUA,EAAQ1L,MAEd0wB,EAAEzmB,OAAS,EAEbyB,GADAA,EAAUsK,EAAIA,EAAErY,KAAO+yB,EAAExY,OACPpY,MACbuX,GAAO,EAIlB,OADArB,EAAErY,KAAO,KACF+rD,EAAK/rD,IACd,CAtJWurZ,CAAOrzY,KAAK22G,MACrB,EAIAipwB,EAAKx/2B,UAAU4oN,KAAO,SAAU3+N,EAAMu+B,EAAQu31B,QAC7B,IAAXv31B,IACFA,EAAS,SAEK,IAAZu31B,IACFA,GAAU,GAEZ,IAAIpt2B,EAAO1oB,EAAK+J,OACZoqP,EAAax+O,KAAK6/2B,YAGtB,GADIM,GAAS/s3B,EAAK/I,EAAMu+B,EAAQ,EAAG7V,EAAO,EAAGyrO,GAC1B,OAAfx+O,KAAK22G,MAEP32G,KAAK22G,MAAQypwB,EAAc/13B,EAAMu+B,EAAQ,EAAG7V,GAC5C/S,KAAKkyE,MAAQn/D,MACR,CAEL,IAAIst2B,EA8IV,SAAoBtkzB,EAAIC,EAAIt8B,GAK1B,IAJA,IAAImU,EAAO,IAAIwzJ,EAAK,KAAM,MACtBlnM,EAAI0zC,EACJtuB,EAAKw2C,EACLv2C,EAAKw2C,EACK,OAAPz2C,GAAsB,OAAPC,GAChBka,EAAQna,EAAG/6B,IAAKg7B,EAAGh7B,KAAO,GAC5B2V,EAAErY,KAAOy9B,EACTA,EAAKA,EAAGz9B,OAERqY,EAAErY,KAAO09B,EACTA,EAAKA,EAAG19B,MAEVqY,EAAIA,EAAErY,KAOR,OALW,OAAPy9B,EACFplB,EAAErY,KAAOy9B,EACO,OAAPC,IACTrlB,EAAErY,KAAO09B,GAEJquB,EAAK/rD,IACd,CAnKuBw43B,CAAWtg3B,KAAKqzY,SAoGvC,SAAoBhpZ,EAAMu+B,GAGxB,IAFA,IAAIirB,EAAO,IAAIwzJ,EAAK,KAAM,MACtBlnM,EAAI0zC,EACCxuD,EAAI,EAAGA,EAAIgF,EAAK+J,OAAQ/O,IAC/B8a,EAAIA,EAAErY,KAAO,IAAIu/M,EAAKh9M,EAAKhF,GAAIujC,EAAOvjC,IAGxC,OADA8a,EAAErY,KAAO,KACF+rD,EAAK/rD,IACd,CA5GiD8vzB,CAAWvtzB,EAAMu+B,GAAS41N,GACrEzrO,EAAO/S,KAAKkyE,MAAQn/D,EACpB/S,KAAK22G,MAAQ4pwB,EAAgB,CAC3B1s0B,KAAMws0B,GACL,EAAGtt2B,EACR,CACA,OAAO/S,IACT,EACA4/2B,EAAKx/2B,UAAUo9M,QAAU,WACvB,OAAsB,OAAfx9M,KAAK22G,KACd,EACA7sH,OAAOwY,eAAes92B,EAAKx/2B,UAAW,OAAQ,CAC5CvM,IAAK,WACH,OAAOmM,KAAKkyE,KACd,EACAxmD,YAAY,EACZuL,cAAc,IAEhBntC,OAAOwY,eAAes92B,EAAKx/2B,UAAW,OAAQ,CAC5CvM,IAAK,WACH,OAAOmM,KAAK22G,KACd,EACAjrF,YAAY,EACZuL,cAAc,IAEhB2o1B,EAAKx/2B,UAAUpZ,SAAW,SAAUsszB,QAChB,IAAdA,IACFA,EAAY,SAAUzyyB,GACpB,OAAON,OAAOM,EAAErW,IAClB,GAEF,IAAIi/G,EAAM,GAIV,OAHAi2wB,EAAS1/2B,KAAK22G,MAAO,IAAI,EAAM,SAAUx0G,GACvC,OAAOsnG,EAAI31G,KAAKqO,EAClB,EAAGmxyB,GACI7psB,EAAIvrG,KAAK,GAClB,EACA0h3B,EAAKx/2B,UAAUhK,OAAS,SAAU5L,EAAK2kX,EAAQu2G,GAC7C,IAAIlnO,EAAax+O,KAAK6/2B,YAClBr82B,EAAKtiB,EAAMsJ,EAAKwV,KAAK22G,MAAO6nI,GAC9Br0P,EAAOqZ,EAAGrZ,KACVF,EAAQuZ,EAAGvZ,MACTu0P,EAAWh0P,EAAK2kX,GAAU,EAC5BllX,EAAQknG,EAAOg+Q,EAAQu2G,EAASz7d,EAAOu0P,GAEvCr0P,EAAOgnG,EAAOg+Q,EAAQu2G,EAASv7d,EAAMq0P,GAEvCx+O,KAAK22G,MAnWT,SAAexsH,EAAMF,EAAOu0P,GAC1B,OAAc,OAAVv0P,EAAuBE,GACd,OAATA,KACJF,EAAQw13B,EAAMt13B,EAAKK,IAAKP,EAAOu0P,IACzBr0P,KAAOA,GAFaF,EAI5B,CA6ViB6nB,CAAM3nB,EAAMF,EAAOu0P,EAClC,EACAohoB,EAAKx/2B,UAAUlf,MAAQ,SAAUsJ,GAC/B,OAAOtJ,EAAMsJ,EAAKwV,KAAK22G,MAAO32G,KAAK6/2B,YACrC,EACAD,EAAKx/2B,UAAU5b,OAAO0d,UAAY,WAChC,IAAIrM,EAASglB,EAAGrZ,EAChB,OAAOC,EAAYzB,KAAM,SAAUwD,GACjC,OAAQA,EAAG3B,OACT,KAAK,EACHhM,EAAUmK,KAAK22G,MACf97F,EAAI,GACJrZ,GAAO,EACPgC,EAAG3B,MAAQ,EACb,KAAK,EACH,OAAML,EAAa,CAAC,EAAa,GACf,OAAZ3L,EAA0B,CAAC,EAAa,IAC9CglB,EAAE/mB,KAAK+B,GACPA,EAAUA,EAAQ1L,KACX,CAAC,EAAa,IACvB,KAAK,EACH,OAAmB,IAAb0wB,EAAEzmB,OAAsB,CAAC,EAAa,GAErC,CAAC,EADRyB,EAAUglB,EAAExY,OAEd,KAAK,EAGH,OAFAmB,EAAG1B,OACHjM,EAAUA,EAAQ5L,MACX,CAAC,EAAa,GACvB,KAAK,EACHuX,GAAO,EACPgC,EAAG3B,MAAQ,EACb,KAAK,EACH,MAAO,CAAC,EAAa,GACvB,KAAK,EACH,MAAO,CAAC,GAEd,EACF,EACO+92B,CACT,CAxXwB,GAyXxB,SAASQ,EAAc/13B,EAAMu+B,EAAQn8B,EAAOC,GAC1C,IAAIqmB,EAAOrmB,EAAMD,EACjB,GAAIsmB,EAAO,EAAG,CACZ,IAAIs5F,EAAS5/G,EAAQjH,KAAKQ,MAAM+sB,EAAO,GACnCvoB,EAAMH,EAAKgiH,GACXt2G,EAAO6yB,EAAOyjF,GACdtlH,EAAO,IAAIsgN,EAAK78M,EAAKuL,GAGzB,OAFAhP,EAAKoD,KAAOi23B,EAAc/13B,EAAMu+B,EAAQn8B,EAAO4/G,GAC/CtlH,EAAKkD,MAAQm23B,EAAc/13B,EAAMu+B,EAAQyjF,EAAS,EAAG3/G,GAC9C3F,CACT,CACA,OAAO,IACT,CA8BA,SAASw53B,EAAgB3y3B,EAAMnB,EAAOC,GACpC,IAAIqmB,EAAOrmB,EAAMD,EACjB,GAAIsmB,EAAO,EAAG,CACZ,IAAIs5F,EAAS5/G,EAAQjH,KAAKQ,MAAM+sB,EAAO,GACnC5oB,EAAOo23B,EAAgB3y3B,EAAMnB,EAAO4/G,GACpC3jF,EAAO96B,EAAKimD,KAIhB,OAHAnrB,EAAKv+B,KAAOA,EACZyD,EAAKimD,KAAOjmD,EAAKimD,KAAK/rD,KACtB4gC,EAAKz+B,MAAQs23B,EAAgB3y3B,EAAMy+G,EAAS,EAAG3/G,GACxCg8B,CACT,CACA,OAAO,IACT,CAuBA,SAASt1B,EAAK/I,EAAMu+B,EAAQz+B,EAAMF,EAAOy1C,GACvC,KAAIv1C,GAAQF,GAAZ,CAIA,IAHA,IAAIouW,EAAQhuW,EAAKF,EAAOF,GAAS,GAC7B5E,EAAI8E,EAAO,EACX67B,EAAI/7B,EAAQ,IACH,CACX,GAAG5E,UAAYq6C,EAAQr1C,EAAKhF,GAAIgzW,GAAS,GACzC,GAAGryU,UAAY0Z,EAAQr1C,EAAK27B,GAAIqyU,GAAS,GACzC,GAAIhzW,GAAK2gC,EAAG,MACZ,IAAIhB,EAAM36B,EAAKhF,GACfgF,EAAKhF,GAAKgF,EAAK27B,GACf37B,EAAK27B,GAAKhB,EACVA,EAAM4D,EAAOvjC,GACbujC,EAAOvjC,GAAKujC,EAAO5C,GACnB4C,EAAO5C,GAAKhB,CACd,CACA5xB,EAAK/I,EAAMu+B,EAAQz+B,EAAM67B,EAAG0Z,GAC5BtsC,EAAK/I,EAAMu+B,EAAQ5C,EAAI,EAAG/7B,EAAOy1C,EAhBR,CAiB3B,CASA,MAAM8g1B,EAAW,CAAC5irB,EAAM/uK,IACf+uK,EAAKt9F,GAAG/5G,GAAKsoC,EAAMtoC,GAAKsoC,EAAMtoC,GAAKq3M,EAAK+pM,GAAGphZ,GAAKq3M,EAAKt9F,GAAG38G,GAAKkrC,EAAMlrC,GAAKkrC,EAAMlrC,GAAKi6M,EAAK+pM,GAAGhkZ,EAM9F883B,EAAiB,CAAC7uhB,EAAI50N,KAE1B,GAAIA,EAAG2qQ,GAAGphZ,EAAIqrW,EAAGtxP,GAAG/5G,GAAKqrW,EAAG+1C,GAAGphZ,EAAIy2I,EAAG18B,GAAG/5G,GAAKy2I,EAAG2qQ,GAAGhkZ,EAAIiuW,EAAGtxP,GAAG38G,GAAKiuW,EAAG+1C,GAAGhkZ,EAAIq5I,EAAG18B,GAAG38G,EAAG,OAAO,KAG7F,MAAM+83B,EAAS9uhB,EAAGtxP,GAAG/5G,EAAIy2I,EAAG18B,GAAG/5G,EAAIy2I,EAAG18B,GAAG/5G,EAAIqrW,EAAGtxP,GAAG/5G,EAC7Co63B,EAAS/uhB,EAAG+1C,GAAGphZ,EAAIy2I,EAAG2qQ,GAAGphZ,EAAIqrW,EAAG+1C,GAAGphZ,EAAIy2I,EAAG2qQ,GAAGphZ,EAOnD,MAAO,CACL+5G,GAAI,CACF/5G,EAAGm63B,EACH/83B,EAPWiuW,EAAGtxP,GAAG38G,EAAIq5I,EAAG18B,GAAG38G,EAAIq5I,EAAG18B,GAAG38G,EAAIiuW,EAAGtxP,GAAG38G,GASjDgkZ,GAAI,CACFphZ,EAAGo63B,EACHh93B,EAVWiuW,EAAG+1C,GAAGhkZ,EAAIq5I,EAAG2qQ,GAAGhkZ,EAAIiuW,EAAG+1C,GAAGhkZ,EAAIq5I,EAAG2qQ,GAAGhkZ,KAqBrD,IAAIi93B,EAAYzw2B,OAAOkoB,aAGLvhC,IAAd8p3B,IAAyBA,EAAYp73B,KAAKC,IAAI,GAAI,KACtD,MAAMo73B,EAAaD,EAAYA,EAGzBvt1B,EAAM,CAACz5B,EAAGC,KAEd,IAAK+m3B,EAAYhn3B,GAAKA,EAAIgn3B,IACnBA,EAAY/m3B,GAAKA,EAAI+m3B,EACxB,OAAO,EAKX,MAAM1nrB,EAAKt/L,EAAIC,EACf,OAAIq/L,EAAKA,EAAK2nrB,EAAajn3B,EAAIC,EACtB,EAIFD,EAAIC,GAAK,EAAI,GA+BtB,MAAMin3B,EACJ,WAAArg3B,GACET,KAAKqvM,KAAO,IAAIuwqB,EAEhB5/2B,KAAKzU,MAAM,EACb,CASA,KAAAA,CAAMksK,GACJ,MAAM1wK,EAAOiZ,KAAKqvM,KAAK/7M,IAAImkK,GACrBsptB,EAAW/g3B,KAAKqvM,KAAKx0K,KAAK9zC,GAChC,GAAiB,OAAbg63B,GAAqD,IAAhC1t1B,EAAItsC,EAAKyD,IAAKu23B,EAASv23B,KAE9C,OADAwV,KAAKqvM,KAAKzsK,OAAO60H,GACVsptB,EAASv23B,IAElB,MAAMg/T,EAAWxpT,KAAKqvM,KAAKvnN,KAAKf,GAChC,OAAiB,OAAbyiU,GAAqD,IAAhCn2R,EAAItsC,EAAKyD,IAAKg/T,EAASh/T,MAC9CwV,KAAKqvM,KAAKzsK,OAAO60H,GACV+xJ,EAASh/T,KAEXitK,CACT,EAIF,MAAMuptB,EAAU,IA9ChB,MACE,WAAAvg3B,GACET,KAAKzJ,OACP,CACA,KAAAA,GACEyJ,KAAKih3B,SAAW,IAAIH,EACpB9g3B,KAAKkh3B,SAAW,IAAIJ,CACtB,CACA,KAAAv13B,CAAMhF,EAAG5C,GACP,MAAO,CACL4C,EAAGyZ,KAAKih3B,SAAS113B,MAAMhF,GACvB5C,EAAGqc,KAAKkh3B,SAAS313B,MAAM5H,GAE3B,GAmCIwwB,EAAU,sBACVgt2B,EAAW,UACXC,GAAkB,EAAI,EAAIjt2B,GAAWA,EAG3C,SAAS+mF,EAAImmxB,EAAMr83B,EAAG+8I,EAAMrgI,EAAGre,GAC7B,IAAIw3B,EAAGym2B,EAAMh+3B,EAAIi+3B,EACbC,EAAOx83B,EAAE,GACTy83B,EAAO//2B,EAAE,GACTgg3B,EAAS,EACTC,EAAS,EACTF,EAAOD,GAASC,GAAQD,GAC1B3m2B,EAAI2m2B,EACJA,EAAOx83B,IAAI083B,KAEX7m2B,EAAI4m2B,EACJA,EAAO//2B,IAAIig3B,IAEb,IAAIC,EAAS,EACb,GAAIF,EAASL,GAAQM,EAAS5/uB,EAc5B,IAbI0/uB,EAAOD,GAASC,GAAQD,GAC1BF,EAAOE,EAAO3m2B,EACdv3B,EAAKu3B,GAAKym2B,EAAOE,GACjBA,EAAOx83B,IAAI083B,KAEXJ,EAAOG,EAAO5m2B,EACdv3B,EAAKu3B,GAAKym2B,EAAOG,GACjBA,EAAO//2B,IAAIig3B,IAEb9m2B,EAAIym2B,EACO,IAAPh+3B,IACFD,EAAEu+3B,KAAYt+3B,GAETo+3B,EAASL,GAAQM,EAAS5/uB,GAC3B0/uB,EAAOD,GAASC,GAAQD,GAC1BF,EAAOzm2B,EAAI2m2B,EACXD,EAAQD,EAAOzm2B,EACfv3B,EAAKu3B,GAAKym2B,EAAOC,IAAUC,EAAOD,GAClCC,EAAOx83B,IAAI083B,KAEXJ,EAAOzm2B,EAAI4m2B,EACXF,EAAQD,EAAOzm2B,EACfv3B,EAAKu3B,GAAKym2B,EAAOC,IAAUE,EAAOF,GAClCE,EAAO//2B,IAAIig3B,IAEb9m2B,EAAIym2B,EACO,IAAPh+3B,IACFD,EAAEu+3B,KAAYt+3B,GAIpB,KAAOo+3B,EAASL,GACdC,EAAOzm2B,EAAI2m2B,EACXD,EAAQD,EAAOzm2B,EACfv3B,EAAKu3B,GAAKym2B,EAAOC,IAAUC,EAAOD,GAClCC,EAAOx83B,IAAI083B,GACX7m2B,EAAIym2B,EACO,IAAPh+3B,IACFD,EAAEu+3B,KAAYt+3B,GAGlB,KAAOq+3B,EAAS5/uB,GACdu/uB,EAAOzm2B,EAAI4m2B,EACXF,EAAQD,EAAOzm2B,EACfv3B,EAAKu3B,GAAKym2B,EAAOC,IAAUE,EAAOF,GAClCE,EAAO//2B,IAAIig3B,GACX9m2B,EAAIym2B,EACO,IAAPh+3B,IACFD,EAAEu+3B,KAAYt+3B,GAMlB,OAHU,IAANu3B,GAAsB,IAAX+m2B,IACbv+3B,EAAEu+3B,KAAY/m2B,GAET+m2B,CACT,CAMA,SAASC,EAAIhh3B,GACX,OAAO,IAAIw/L,aAAax/L,EAC1B,CAEA,MAGMkY,EAAI8o2B,EAAI,GACRC,EAAKD,EAAI,GACTE,EAAKF,EAAI,IACT5o2B,EAAI4o2B,EAAI,IACRn+xB,EAAIm+xB,EAAI,GAoJd,SAASv3D,EAASr5mB,EAAIC,EAAI2B,EAAIC,EAAIC,EAAIT,GACpC,MAAM0vqB,GAAW9wqB,EAAKoB,IAAOO,EAAKE,GAC5BkvqB,GAAYhxqB,EAAK8B,IAAOD,EAAKR,GAC7BtK,EAAMg6qB,EAAUC,EAChBC,EAAS183B,KAAKM,IAAIk83B,EAAUC,GAClC,OAAIz83B,KAAKM,IAAIkiN,IAhKM,sBAgKiBk6qB,EAAel6qB,GAxJrD,SAAuBiJ,EAAIC,EAAI2B,EAAIC,EAAIC,EAAIT,EAAI4vqB,GAC7C,IAAIC,EAASC,EAASC,EAASC,EAC3Bf,EAAO373B,EAAG283B,EAAKC,EAAKC,EAAKC,EAAK/n3B,EAAIqkL,EAAI2jsB,EAAIvsqB,EAAID,EAAI/E,EAAID,EAAIyxqB,EAC9D,MAAMC,EAAM5xqB,EAAK8B,EACX+vqB,EAAMjwqB,EAAKE,EACXgwqB,EAAM7xqB,EAAKoB,EACX0wqB,EAAMlwqB,EAAKR,EACjB8D,EAAKysqB,EAAMG,EACXp93B,EAAIu73B,EAAW0B,EACfN,EAAM383B,GAAKA,EAAIi93B,GACfL,EAAMK,EAAMN,EACZ383B,EAAIu73B,EAAW6B,EACfP,EAAM783B,GAAKA,EAAIo93B,GACfN,EAAMM,EAAMP,EACZtsqB,EAAKqsqB,EAAME,GAAOtsqB,EAAKmsqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtxqB,EAAK2xqB,EAAMD,EACXl93B,EAAIu73B,EAAW4B,EACfR,EAAM383B,GAAKA,EAAIm93B,GACfP,EAAMO,EAAMR,EACZ383B,EAAIu73B,EAAW2B,EACfL,EAAM783B,GAAKA,EAAIk93B,GACfJ,EAAMI,EAAML,EACZtxqB,EAAKqxqB,EAAME,GAAOtxqB,EAAKmxqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD/n3B,EAAKw7M,EAAKhF,EACVowqB,EAAQprqB,EAAKx7M,EACboe,EAAE,GAAKo9L,GAAMx7M,EAAK4m3B,IAAUA,EAAQpwqB,GACpCnyB,EAAKo3B,EAAKz7M,EACV4m3B,EAAQvisB,EAAKo3B,EACbusqB,EAAKvsqB,GAAMp3B,EAAKuisB,IAAU5m3B,EAAK4m3B,GAC/B5m3B,EAAKgo3B,EAAKvxqB,EACVmwqB,EAAQoB,EAAKho3B,EACboe,EAAE,GAAK4p2B,GAAMho3B,EAAK4m3B,IAAUA,EAAQnwqB,GACpCwxqB,EAAK5jsB,EAAKrkL,EACV4m3B,EAAQqB,EAAK5jsB,EACbjmK,EAAE,GAAKimK,GAAM4jsB,EAAKrB,IAAU5m3B,EAAK4m3B,GACjCxo2B,EAAE,GAAK6p2B,EACP,IAAI56qB,EArDN,SAAkBq5qB,EAAMr83B,GACtB,IAAI61B,EAAI71B,EAAE,GACV,IAAK,IAAIK,EAAI,EAAGA,EAAIg83B,EAAMh83B,IAAKw1B,GAAK71B,EAAEK,GACtC,OAAOw1B,CACT,CAiDYoo2B,CAAS,EAAGlq2B,GAClBmq2B,EA5Ce,sBA4CWhB,EAC9B,GAAIl6qB,GAAOk7qB,IAAal7qB,GAAOk7qB,EAC7B,OAAOl7qB,EAUT,GARAu5qB,EAAQtwqB,EAAK4xqB,EACbV,EAAUlxqB,GAAM4xqB,EAAMtB,IAAUA,EAAQxuqB,GACxCwuqB,EAAQ1uqB,EAAKiwqB,EACbT,EAAUxvqB,GAAMiwqB,EAAMvB,IAAUA,EAAQxuqB,GACxCwuqB,EAAQrwqB,EAAK6xqB,EACbX,EAAUlxqB,GAAM6xqB,EAAMxB,IAAUA,EAAQjvqB,GACxCivqB,EAAQzuqB,EAAKkwqB,EACbV,EAAUxvqB,GAAMkwqB,EAAMzB,IAAUA,EAAQjvqB,GACxB,IAAZ6vqB,GAA6B,IAAZC,GAA6B,IAAZC,GAA6B,IAAZC,EACrD,OAAOt6qB,EAIT,GAFAk7qB,EA1DmB,sBA0DOhB,EAASd,EAAiB573B,KAAKM,IAAIkiN,GAC7DA,GAAO66qB,EAAMP,EAAUU,EAAMb,GAAWY,EAAMV,EAAUS,EAAMV,GAC1Dp6qB,GAAOk7qB,IAAal7qB,GAAOk7qB,EAAU,OAAOl7qB,EAChDoO,EAAK+rqB,EAAUa,EACfp93B,EAAIu73B,EAAWgB,EACfI,EAAM383B,GAAKA,EAAIu83B,GACfK,EAAML,EAAUI,EAChB383B,EAAIu73B,EAAW6B,EACfP,EAAM783B,GAAKA,EAAIo93B,GACfN,EAAMM,EAAMP,EACZtsqB,EAAKqsqB,EAAME,GAAOtsqB,EAAKmsqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtxqB,EAAKgxqB,EAAUU,EACfl93B,EAAIu73B,EAAWiB,EACfG,EAAM383B,GAAKA,EAAIw83B,GACfI,EAAMJ,EAAUG,EAChB383B,EAAIu73B,EAAW2B,EACfL,EAAM783B,GAAKA,EAAIk93B,GACfJ,EAAMI,EAAML,EACZtxqB,EAAKqxqB,EAAME,GAAOtxqB,EAAKmxqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD/n3B,EAAKw7M,EAAKhF,EACVowqB,EAAQprqB,EAAKx7M,EACb+oF,EAAE,GAAKyyH,GAAMx7M,EAAK4m3B,IAAUA,EAAQpwqB,GACpCnyB,EAAKo3B,EAAKz7M,EACV4m3B,EAAQvisB,EAAKo3B,EACbusqB,EAAKvsqB,GAAMp3B,EAAKuisB,IAAU5m3B,EAAK4m3B,GAC/B5m3B,EAAKgo3B,EAAKvxqB,EACVmwqB,EAAQoB,EAAKho3B,EACb+oF,EAAE,GAAKi/xB,GAAMho3B,EAAK4m3B,IAAUA,EAAQnwqB,GACpCwxqB,EAAK5jsB,EAAKrkL,EACV4m3B,EAAQqB,EAAK5jsB,EACbt7F,EAAE,GAAKs7F,GAAM4jsB,EAAKrB,IAAU5m3B,EAAK4m3B,GACjC79xB,EAAE,GAAKk/xB,EACP,MAAMO,EAAQjoxB,EAAI,EAAGniF,EAAG,EAAG2qE,EAAGo+xB,GAC9B1rqB,EAAKysqB,EAAMP,EACX183B,EAAIu73B,EAAW0B,EACfN,EAAM383B,GAAKA,EAAIi93B,GACfL,EAAMK,EAAMN,EACZ383B,EAAIu73B,EAAWmB,EACfG,EAAM783B,GAAKA,EAAI083B,GACfI,EAAMJ,EAAUG,EAChBtsqB,EAAKqsqB,EAAME,GAAOtsqB,EAAKmsqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtxqB,EAAK2xqB,EAAMV,EACXz83B,EAAIu73B,EAAW4B,EACfR,EAAM383B,GAAKA,EAAIm93B,GACfP,EAAMO,EAAMR,EACZ383B,EAAIu73B,EAAWkB,EACfI,EAAM783B,GAAKA,EAAIy83B,GACfK,EAAML,EAAUI,EAChBtxqB,EAAKqxqB,EAAME,GAAOtxqB,EAAKmxqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD/n3B,EAAKw7M,EAAKhF,EACVowqB,EAAQprqB,EAAKx7M,EACb+oF,EAAE,GAAKyyH,GAAMx7M,EAAK4m3B,IAAUA,EAAQpwqB,GACpCnyB,EAAKo3B,EAAKz7M,EACV4m3B,EAAQvisB,EAAKo3B,EACbusqB,EAAKvsqB,GAAMp3B,EAAKuisB,IAAU5m3B,EAAK4m3B,GAC/B5m3B,EAAKgo3B,EAAKvxqB,EACVmwqB,EAAQoB,EAAKho3B,EACb+oF,EAAE,GAAKi/xB,GAAMho3B,EAAK4m3B,IAAUA,EAAQnwqB,GACpCwxqB,EAAK5jsB,EAAKrkL,EACV4m3B,EAAQqB,EAAK5jsB,EACbt7F,EAAE,GAAKs7F,GAAM4jsB,EAAKrB,IAAU5m3B,EAAK4m3B,GACjC79xB,EAAE,GAAKk/xB,EACP,MAAMQ,EAAQloxB,EAAIioxB,EAAOrB,EAAI,EAAGp+xB,EAAGq+xB,GACnC3rqB,EAAK+rqB,EAAUG,EACf183B,EAAIu73B,EAAWgB,EACfI,EAAM383B,GAAKA,EAAIu83B,GACfK,EAAML,EAAUI,EAChB383B,EAAIu73B,EAAWmB,EACfG,EAAM783B,GAAKA,EAAI083B,GACfI,EAAMJ,EAAUG,EAChBtsqB,EAAKqsqB,EAAME,GAAOtsqB,EAAKmsqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtxqB,EAAKgxqB,EAAUC,EACfz83B,EAAIu73B,EAAWiB,EACfG,EAAM383B,GAAKA,EAAIw83B,GACfI,EAAMJ,EAAUG,EAChB383B,EAAIu73B,EAAWkB,EACfI,EAAM783B,GAAKA,EAAIy83B,GACfK,EAAML,EAAUI,EAChBtxqB,EAAKqxqB,EAAME,GAAOtxqB,EAAKmxqB,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD/n3B,EAAKw7M,EAAKhF,EACVowqB,EAAQprqB,EAAKx7M,EACb+oF,EAAE,GAAKyyH,GAAMx7M,EAAK4m3B,IAAUA,EAAQpwqB,GACpCnyB,EAAKo3B,EAAKz7M,EACV4m3B,EAAQvisB,EAAKo3B,EACbusqB,EAAKvsqB,GAAMp3B,EAAKuisB,IAAU5m3B,EAAK4m3B,GAC/B5m3B,EAAKgo3B,EAAKvxqB,EACVmwqB,EAAQoB,EAAKho3B,EACb+oF,EAAE,GAAKi/xB,GAAMho3B,EAAK4m3B,IAAUA,EAAQnwqB,GACpCwxqB,EAAK5jsB,EAAKrkL,EACV4m3B,EAAQqB,EAAK5jsB,EACbt7F,EAAE,GAAKs7F,GAAM4jsB,EAAKrB,IAAU5m3B,EAAK4m3B,GACjC79xB,EAAE,GAAKk/xB,EACP,MAAMS,EAAOnoxB,EAAIkoxB,EAAOrB,EAAI,EAAGr+xB,EAAGzqE,GAClC,OAAOA,EAAEoq2B,EAAO,EAClB,CAOUC,CAAcryqB,EAAIC,EAAI2B,EAAIC,EAAIC,EAAIT,EAAI4vqB,EAChD,CAGA,MAAMqB,EAAe,CAAC3p3B,EAAGC,IAAMD,EAAErT,EAAIsT,EAAElW,EAAIiW,EAAEjW,EAAIkW,EAAEtT,EAG7Ci93B,EAAa,CAAC5p3B,EAAGC,IAAMD,EAAErT,EAAIsT,EAAEtT,EAAIqT,EAAEjW,EAAIkW,EAAElW,EAG3C8/3B,EAAsB,CAACC,EAAQC,EAAQC,KAC3C,MAAMx/0B,EAAMkmxB,EAASo5D,EAAOn93B,EAAGm93B,EAAO//3B,EAAGgg4B,EAAOp93B,EAAGo93B,EAAOhg4B,EAAGig4B,EAAOr93B,EAAGq93B,EAAOjg4B,GAC9E,OAAIygD,EAAM,GAAW,EACjBA,EAAM,EAAU,EACb,GAEHhwC,EAAS+N,GAAK3c,KAAK0vB,KAAKsu2B,EAAWrh3B,EAAGA,IAGtC0h3B,EAAc,CAACC,EAASC,EAAOC,KACnC,MAAMC,EAAQ,CACZ193B,EAAGw93B,EAAMx93B,EAAIu93B,EAAQv93B,EACrB5C,EAAGog4B,EAAMpg4B,EAAImg4B,EAAQng4B,GAEjBug4B,EAAS,CACb393B,EAAGy93B,EAAOz93B,EAAIu93B,EAAQv93B,EACtB5C,EAAGqg4B,EAAOrg4B,EAAImg4B,EAAQng4B,GAExB,OAAO4/3B,EAAaW,EAAQD,GAAS7v3B,EAAO8v3B,GAAU9v3B,EAAO6v3B,IAIzDE,EAAgB,CAACL,EAASC,EAAOC,KACrC,MAAMC,EAAQ,CACZ193B,EAAGw93B,EAAMx93B,EAAIu93B,EAAQv93B,EACrB5C,EAAGog4B,EAAMpg4B,EAAImg4B,EAAQng4B,GAEjBug4B,EAAS,CACb393B,EAAGy93B,EAAOz93B,EAAIu93B,EAAQv93B,EACtB5C,EAAGqg4B,EAAOrg4B,EAAImg4B,EAAQng4B,GAExB,OAAO6/3B,EAAWU,EAAQD,GAAS7v3B,EAAO8v3B,GAAU9v3B,EAAO6v3B,IAMvDG,EAAyB,CAAC/q1B,EAAIl3B,EAAGxe,IACzB,IAARwe,EAAExe,EAAgB,KACf,CACL4C,EAAG8yC,EAAG9yC,EAAI4b,EAAE5b,EAAI4b,EAAExe,GAAKA,EAAI01C,EAAG11C,GAC9BA,EAAGA,GAOD0g4B,EAAuB,CAAChr1B,EAAIl3B,EAAG5b,IACvB,IAAR4b,EAAE5b,EAAgB,KACf,CACLA,EAAGA,EACH5C,EAAG01C,EAAG11C,EAAIwe,EAAExe,EAAIwe,EAAE5b,GAAKA,EAAI8yC,EAAG9yC,IAyClC,MAAM+93B,EAEJ,cAAO5k1B,CAAQ9lC,EAAGC,GAEhB,MAAM0q3B,EAAQD,EAAW3xY,cAAc/4e,EAAEi1B,MAAOh1B,EAAEg1B,OAClD,OAAc,IAAV011B,EAAoBA,GAGpB3q3B,EAAEi1B,QAAUh1B,EAAEg1B,OAAOj1B,EAAEwvH,KAAKvvH,GAG5BD,EAAEy+pB,SAAWx+pB,EAAEw+pB,OAAez+pB,EAAEy+pB,OAAS,GAAK,EAI3CmsN,EAAQ9k1B,QAAQ9lC,EAAEkmC,QAASjmC,EAAEimC,SACtC,CAGA,oBAAO6yc,CAAc8xY,EAAKC,GACxB,OAAID,EAAIl+3B,EAAIm+3B,EAAIn+3B,GAAW,EACvBk+3B,EAAIl+3B,EAAIm+3B,EAAIn+3B,EAAU,EACtBk+3B,EAAI9g4B,EAAI+g4B,EAAI/g4B,GAAW,EACvB8g4B,EAAI9g4B,EAAI+g4B,EAAI/g4B,EAAU,EACnB,CACT,CAGA,WAAA8c,CAAYouB,EAAOwpoB,QACIvhqB,IAAjB+3B,EAAMtF,OAAsBsF,EAAMtF,OAAS,CAACvpB,MAAW6uB,EAAMtF,OAAOz1B,KAAKkM,MAC7EA,KAAK6uB,MAAQA,EACb7uB,KAAKq4pB,OAASA,CAEhB,CACA,IAAAjviB,CAAKvoE,GACH,GAAIA,EAAMhyB,QAAU7uB,KAAK6uB,MACvB,MAAM,IAAItnB,MAAM,uCAElB,MAAMo92B,EAAc9j0B,EAAMhyB,MAAMtF,OAChC,IAAK,IAAIlkC,EAAI,EAAGu/3B,EAAOD,EAAYvw3B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACxD,MAAMy2C,EAAM6o1B,EAAYt/3B,GACxB2a,KAAK6uB,MAAMtF,OAAOz1B,KAAKgoC,GACvBA,EAAIjN,MAAQ7uB,KAAK6uB,KACnB,CACA7uB,KAAK6k3B,mBACP,CAIA,iBAAAA,GAOE,MAAMC,EAAY9k3B,KAAK6uB,MAAMtF,OAAOn1B,OACpC,IAAK,IAAI/O,EAAI,EAAGA,EAAIy/3B,EAAWz/3B,IAAK,CAClC,MAAM0/3B,EAAO/k3B,KAAK6uB,MAAMtF,OAAOlkC,GAC/B,QAAgCyR,IAA5Biu3B,EAAKjl1B,QAAQkl1B,WACjB,IAAK,IAAIh/1B,EAAI3gC,EAAI,EAAG2gC,EAAI8+1B,EAAW9+1B,IAAK,CACtC,MAAMi/1B,EAAOjl3B,KAAK6uB,MAAMtF,OAAOvD,QACPlvB,IAApBmu3B,EAAKD,YACLD,EAAKG,QAAQr21B,MAAMtF,SAAW071B,EAAKC,QAAQr21B,MAAMtF,QACrDw71B,EAAKjl1B,QAAQi3P,QAAQkulB,EAAKnl1B,QAC5B,CACF,CACF,CACA,wBAAAql1B,GAEE,MAAM571B,EAAS,GACf,IAAK,IAAIlkC,EAAI,EAAGu/3B,EAAO5k3B,KAAK6uB,MAAMtF,OAAOn1B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAC9D,MAAMy2C,EAAM97B,KAAK6uB,MAAMtF,OAAOlkC,GAC1By2C,IAAQ97B,OAAS87B,EAAIgE,QAAQsl1B,SAAWtp1B,EAAIgE,QAAQqpvB,cACtD5/vB,EAAOz1B,KAAKgoC,EAEhB,CACA,OAAOvS,CACT,CAYA,qBAAA871B,CAAsBC,GACpB,MAAM/41B,EAAQ,IAAIv5B,IACZuy3B,EAAYC,IAChB,MAAMC,EAAYD,EAAYN,QAC9B341B,EAAMx4B,IAAIyx3B,EAAa,CACrBE,KAAM7B,EAAY7j3B,KAAK6uB,MAAOy21B,EAAUz21B,MAAO421B,EAAU521B,OACzD821B,OAAQxB,EAAcnk3B,KAAK6uB,MAAOy21B,EAAUz21B,MAAO421B,EAAU521B,UAGjE,MAAO,CAACj1B,EAAGC,KACJ0yB,EAAM54B,IAAIiG,IAAI2r3B,EAAU3r3B,GACxB2yB,EAAM54B,IAAIkG,IAAI0r3B,EAAU1r3B,GAC7B,MACE6r3B,KAAME,EACND,OAAQE,GACNt51B,EAAM14B,IAAI+F,IAEZ8r3B,KAAMI,EACNH,OAAQI,GACNx51B,EAAM14B,IAAIgG,GAGd,OAAI+r3B,GAAS,GAAKE,GAAS,EACrBD,EAAUE,EAAgB,EAC1BF,EAAUE,GAAiB,EACxB,EAILH,EAAQ,GAAKE,EAAQ,EACnBD,EAAUE,GAAiB,EAC3BF,EAAUE,EAAgB,EACvB,EAILD,EAAQF,GAAe,EACvBE,EAAQF,EAAc,EACnB,EAEX,EAKF,IAAII,EAAY,EAChB,MAAMxB,EAcJ,cAAO9k1B,CAAQ9lC,EAAGC,GAChB,MAAMos3B,EAAMrs3B,EAAEss3B,OAAOr31B,MAAMtoC,EACrB4/3B,EAAMts3B,EAAEqs3B,OAAOr31B,MAAMtoC,EACrB6/3B,EAAMxs3B,EAAEys3B,QAAQx31B,MAAMtoC,EACtBszlB,EAAMhglB,EAAEws3B,QAAQx31B,MAAMtoC,EAG5B,GAAIszlB,EAAMosS,EAAK,OAAO,EACtB,GAAIG,EAAMD,EAAK,OAAQ,EACvB,MAAMG,EAAM1s3B,EAAEss3B,OAAOr31B,MAAMlrC,EACrB4i4B,EAAM1s3B,EAAEqs3B,OAAOr31B,MAAMlrC,EACrB6i4B,EAAM5s3B,EAAEys3B,QAAQx31B,MAAMlrC,EACtB8i4B,EAAM5s3B,EAAEws3B,QAAQx31B,MAAMlrC,EAG5B,GAAIsi4B,EAAME,EAAK,CAEb,GAAII,EAAMD,GAAOC,EAAMC,EAAK,OAAO,EACnC,GAAID,EAAMD,GAAOC,EAAMC,EAAK,OAAQ,EAGpC,MAAME,EAAY9s3B,EAAE+s3B,aAAa9s3B,EAAEqs3B,OAAOr31B,OAC1C,GAAI631B,EAAY,EAAG,OAAO,EAC1B,GAAIA,EAAY,EAAG,OAAQ,EAG3B,MAAME,EAAa/s3B,EAAE8s3B,aAAa/s3B,EAAEys3B,QAAQx31B,OAC5C,OAAmB,IAAf+31B,EAAyBA,GAIrB,CACV,CAGA,GAAIX,EAAME,EAAK,CACb,GAAIG,EAAMC,GAAOD,EAAMG,EAAK,OAAQ,EACpC,GAAIH,EAAMC,GAAOD,EAAMG,EAAK,OAAO,EAGnC,MAAMI,EAAYht3B,EAAE8s3B,aAAa/s3B,EAAEss3B,OAAOr31B,OAC1C,GAAkB,IAAdg41B,EAAiB,OAAOA,EAG5B,MAAMC,EAAalt3B,EAAE+s3B,aAAa9s3B,EAAEws3B,QAAQx31B,OAC5C,OAAIi41B,EAAa,EAAU,EACvBA,EAAa,GAAW,EAIrB,CACT,CAMA,GAAIR,EAAMC,EAAK,OAAQ,EACvB,GAAID,EAAMC,EAAK,OAAO,EAMtB,GAAIH,EAAMvsS,EAAK,CACb,MAAM+sS,EAAa/s3B,EAAE8s3B,aAAa/s3B,EAAEys3B,QAAQx31B,OAC5C,GAAmB,IAAf+31B,EAAkB,OAAOA,CAC/B,CAGA,GAAIR,EAAMvsS,EAAK,CACb,MAAMitS,EAAalt3B,EAAE+s3B,aAAa9s3B,EAAEws3B,QAAQx31B,OAC5C,GAAIi41B,EAAa,EAAG,OAAO,EAC3B,GAAIA,EAAa,EAAG,OAAQ,CAC9B,CACA,GAAIV,IAAQvsS,EAAK,CAGf,MAAM3oY,EAAKs1qB,EAAMF,EACXr1qB,EAAKm1qB,EAAMH,EACXnzqB,EAAK2zqB,EAAMF,EACX1zqB,EAAKgnY,EAAMssS,EACjB,GAAIj1qB,EAAKD,GAAM6B,EAAKD,EAAI,OAAO,EAC/B,GAAI3B,EAAKD,GAAM6B,EAAKD,EAAI,OAAQ,CAClC,CAIA,OAAIuzqB,EAAMvsS,EAAY,EAClBusS,EAAMvsS,GAMN2sS,EAAMC,GANa,EAOnBD,EAAMC,EAAY,EAIlB7s3B,EAAEmE,GAAKlE,EAAEkE,IAAY,EACrBnE,EAAEmE,GAAKlE,EAAEkE,GAAW,EAGjB,CACT,CAIA,WAAA0C,CAAYyl3B,EAAQG,EAAS/zD,EAAOy0D,GAClC/m3B,KAAKjC,KAAOio3B,EACZhm3B,KAAKkm3B,OAASA,EACdA,EAAOpm1B,QAAU9/B,KACjBkm3B,EAAOhB,QAAUmB,EACjBrm3B,KAAKqm3B,QAAUA,EACfA,EAAQvm1B,QAAU9/B,KAClBqm3B,EAAQnB,QAAUgB,EAClBlm3B,KAAKsyzB,MAAQA,EACbtyzB,KAAK+m3B,SAAWA,CAGlB,CACA,eAAOC,CAAS1x2B,EAAKC,EAAKyoL,GACxB,IAAIiprB,EAAQC,EAASl2Y,EAGrB,MAAMm2Y,EAAS7C,EAAW3xY,cAAcr9d,EAAKC,GAC7C,GAAI4x2B,EAAS,EACXF,EAAS3x2B,EACT4x2B,EAAU3x2B,EACVy7d,EAAU,MACL,MAAIm2Y,EAAS,GAIb,MAAM,IAAI5/2B,MAAM,0CAA0C+N,EAAI/uB,MAAM+uB,EAAI3xB,MAH7Esj4B,EAAS1x2B,EACT2x2B,EAAU5x2B,EACV07d,GAAW,CACuE,CACpF,MAAMk1Y,EAAS,IAAI5B,EAAW2C,GAAQ,GAChCZ,EAAU,IAAI/B,EAAW4C,GAAS,GACxC,OAAO,IAAI1C,EAAQ0B,EAAQG,EAAS,CAACrorB,GAAO,CAACgzS,GAC/C,CAGA,cAAAo2Y,CAAeC,GACbrn3B,KAAKqm3B,QAAUgB,EACfrn3B,KAAKqm3B,QAAQvm1B,QAAU9/B,KACvBA,KAAKqm3B,QAAQnB,QAAUll3B,KAAKkm3B,OAC5Blm3B,KAAKkm3B,OAAOhB,QAAUll3B,KAAKqm3B,OAC7B,CACA,IAAAzorB,GACE,MAAMxqI,EAAKpzD,KAAKkm3B,OAAOr31B,MAAMlrC,EACvB2vE,EAAKtzD,KAAKqm3B,QAAQx31B,MAAMlrC,EAC9B,MAAO,CACL28G,GAAI,CACF/5G,EAAGyZ,KAAKkm3B,OAAOr31B,MAAMtoC,EACrB5C,EAAGyvE,EAAKE,EAAKF,EAAKE,GAEpBq0U,GAAI,CACFphZ,EAAGyZ,KAAKqm3B,QAAQx31B,MAAMtoC,EACtB5C,EAAGyvE,EAAKE,EAAKF,EAAKE,GAGxB,CAGA,MAAA4tI,GACE,MAAO,CACL36M,EAAGyZ,KAAKqm3B,QAAQx31B,MAAMtoC,EAAIyZ,KAAKkm3B,OAAOr31B,MAAMtoC,EAC5C5C,EAAGqc,KAAKqm3B,QAAQx31B,MAAMlrC,EAAIqc,KAAKkm3B,OAAOr31B,MAAMlrC,EAEhD,CACA,YAAA2j4B,CAAaju1B,GACX,OAAOA,EAAG9yC,IAAMyZ,KAAKkm3B,OAAOr31B,MAAMtoC,GAAK8yC,EAAG11C,IAAMqc,KAAKkm3B,OAAOr31B,MAAMlrC,GAAK01C,EAAG9yC,IAAMyZ,KAAKqm3B,QAAQx31B,MAAMtoC,GAAK8yC,EAAG11C,IAAMqc,KAAKqm3B,QAAQx31B,MAAMlrC,CACtI,CAeA,YAAAgj4B,CAAa931B,GACX,GAAI7uB,KAAKsn3B,aAAaz41B,GAAQ,OAAO,EACrC,MAAM041B,EAAMvn3B,KAAKkm3B,OAAOr31B,MAClB241B,EAAMxn3B,KAAKqm3B,QAAQx31B,MACnB1sB,EAAInC,KAAKkhM,SAGf,GAAIqmrB,EAAIhh4B,IAAMih4B,EAAIjh4B,EAChB,OAAIsoC,EAAMtoC,IAAMgh4B,EAAIhh4B,EAAU,EACvBsoC,EAAMtoC,EAAIgh4B,EAAIhh4B,EAAI,GAAK,EAKhC,MAAMkh4B,GAAS541B,EAAMlrC,EAAI4j4B,EAAI5j4B,GAAKwe,EAAExe,EAC9B+j4B,EAAaH,EAAIhh4B,EAAIkh4B,EAAQtl3B,EAAE5b,EACrC,GAAIsoC,EAAMtoC,IAAMmh4B,EAAY,OAAO,EAInC,MAAMC,GAAS941B,EAAMtoC,EAAIgh4B,EAAIhh4B,GAAK4b,EAAE5b,EAC9Bqh4B,EAAaL,EAAI5j4B,EAAIgk4B,EAAQxl3B,EAAExe,EACrC,OAAIkrC,EAAMlrC,IAAMik4B,EAAmB,EAC5B/41B,EAAMlrC,EAAIik4B,GAAc,EAAI,CACrC,CAiBA,eAAA3nd,CAAgBp/W,GAEd,MAAMgn0B,EAAQ7n3B,KAAK49L,OACbkqrB,EAAQjn0B,EAAM+8I,OACdmqrB,EAActH,EAAeoH,EAAOC,GAC1C,GAAoB,OAAhBC,EAAsB,OAAO,KAMjC,MAAMC,EAAMho3B,KAAKkm3B,OAAOr31B,MAClBo51B,EAAMjo3B,KAAKqm3B,QAAQx31B,MACnBq51B,EAAMrn0B,EAAMql0B,OAAOr31B,MACnBs51B,EAAMtn0B,EAAMwl0B,QAAQx31B,MAKpBu51B,EAAkB5H,EAASqH,EAAOK,IAAmC,IAA3Blo3B,KAAK2m3B,aAAauB,GAC5DG,EAAiB7H,EAASsH,EAAOE,IAAoC,IAA5Bnn0B,EAAM8l0B,aAAaqB,GAC5DM,EAAkB9H,EAASqH,EAAOM,IAAmC,IAA3Bno3B,KAAK2m3B,aAAawB,GAC5DI,EAAiB/H,EAASsH,EAAOG,IAAoC,IAA5Bpn0B,EAAM8l0B,aAAasB,GAGlE,GAAII,GAAkBD,EAGpB,OAAIG,IAAmBD,EAAwBL,GAC1CM,GAAkBD,EAAwBH,EAGxC,KAIT,GAAIE,EAEF,OAAIC,GACEN,EAAIzh4B,IAAM4h4B,EAAI5h4B,GAAKyh4B,EAAIrk4B,IAAMwk4B,EAAIxk4B,EAAU,KAG1Cqk4B,EAIT,GAAII,EAEF,OAAIG,GACEN,EAAI1h4B,IAAM2h4B,EAAI3h4B,GAAK0h4B,EAAItk4B,IAAMuk4B,EAAIvk4B,EAAU,KAG1Cuk4B,EAIT,GAAIK,GAAkBD,EAAiB,OAAO,KAG9C,GAAIC,EAAgB,OAAON,EAC3B,GAAIK,EAAiB,OAAOH,EAI5B,MAAM9u1B,EA7da,EAAC/jB,EAAKlE,EAAImE,EAAKu9B,KAIpC,GAAa,IAAT1hC,EAAG7qB,EAAS,OAAO893B,EAAqB9u2B,EAAKu9B,EAAIx9B,EAAI/uB,GACzD,GAAa,IAATusD,EAAGvsD,EAAS,OAAO893B,EAAqB/u2B,EAAKlE,EAAImE,EAAIhvB,GACzD,GAAa,IAAT6qB,EAAGztB,EAAS,OAAOyg4B,EAAuB7u2B,EAAKu9B,EAAIx9B,EAAI3xB,GAC3D,GAAa,IAATmvD,EAAGnvD,EAAS,OAAOyg4B,EAAuB9u2B,EAAKlE,EAAImE,EAAI5xB,GAM3D,MAAM6k4B,EAAQjF,EAAany2B,EAAI0hC,GAC/B,GAAa,GAAT010B,EAAY,OAAO,KACvB,MAAM78gB,EAAK,CACTplX,EAAGgvB,EAAIhvB,EAAI+uB,EAAI/uB,EACf5C,EAAG4xB,EAAI5xB,EAAI2xB,EAAI3xB,GAEXirN,EAAK20qB,EAAa53gB,EAAIv6V,GAAMo32B,EAC5B35qB,EAAK00qB,EAAa53gB,EAAI74T,GAAM010B,EASlC,MAAO,CACLji4B,GAPS+uB,EAAI/uB,EAAIsoN,EAAKz9L,EAAG7qB,GACpBgvB,EAAIhvB,EAAIqoN,EAAK97J,EAAGvsD,IAGD,EAIpB5C,GANS2xB,EAAI3xB,EAAIkrN,EAAKz9L,EAAGztB,GACpB4xB,EAAI5xB,EAAIirN,EAAK97J,EAAGnvD,IAED,IAicT8k4B,CAAeT,EAAKho3B,KAAKkhM,SAAUgnrB,EAAKrn0B,EAAMqgJ,UAIzD,OAAW,OAAP7nK,EAAoB,KAGnBmn1B,EAASuH,EAAa1u1B,GAGpB2n1B,EAAQz13B,MAAM8tC,EAAG9yC,EAAG8yC,EAAG11C,GAHS,IAIzC,CAcA,KAAAzC,CAAM2tC,GACJ,MAAMoxC,EAAY,GACZyozB,OAAiC5x3B,IAAjB+3B,EAAMtF,OACtBo/1B,EAAY,IAAIrE,EAAWz11B,GAAO,GAClCw41B,EAAa,IAAI/C,EAAWz11B,GAAO,GACnC+51B,EAAa5o3B,KAAKqm3B,QACxBrm3B,KAAKon3B,eAAeC,GACpBpnzB,EAAUnsE,KAAKuz3B,GACfpnzB,EAAUnsE,KAAK603B,GACf,MAAME,EAAS,IAAIrE,EAAQmE,EAAWC,EAAY5o3B,KAAKsyzB,MAAMx3zB,QAASkF,KAAK+m3B,SAASjs3B,SAmBpF,OAdIwp3B,EAAW3xY,cAAck2Y,EAAO3C,OAAOr31B,MAAOg61B,EAAOxC,QAAQx31B,OAAS,GACxEg61B,EAAOC,aAELxE,EAAW3xY,cAAc3ye,KAAKkm3B,OAAOr31B,MAAO7uB,KAAKqm3B,QAAQx31B,OAAS,GACpE7uB,KAAK8o3B,aAMHJ,IACFC,EAAU9D,oBACVwC,EAAWxC,qBAEN5kzB,CACT,CAGA,UAAA6ozB,GACE,MAAMC,EAAS/o3B,KAAKqm3B,QACpBrm3B,KAAKqm3B,QAAUrm3B,KAAKkm3B,OACpBlm3B,KAAKkm3B,OAAS6C,EACd/o3B,KAAKkm3B,OAAO7tN,QAAS,EACrBr4pB,KAAKqm3B,QAAQhuN,QAAS,EACtB,IAAK,IAAIhzqB,EAAI,EAAGu/3B,EAAO5k3B,KAAK+m3B,SAAS3y3B,OAAQ/O,EAAIu/3B,EAAMv/3B,IACrD2a,KAAK+m3B,SAAS1h4B,KAAO,CAEzB,CAIA,OAAA0xS,CAAQl2O,GACN,IAAImo0B,EAAWhp3B,KACXip3B,EAAWpo0B,EACf,KAAOmo0B,EAAShE,YAAYgE,EAAWA,EAAShE,WAChD,KAAOiE,EAASjE,YAAYiE,EAAWA,EAASjE,WAChD,MAAM3x1B,EAAMmx1B,EAAQ9k1B,QAAQsp1B,EAAUC,GACtC,GAAY,IAAR511B,EAAJ,CAGA,GAAIA,EAAM,EAAG,CACX,MAAMrO,EAAMgk2B,EACZA,EAAWC,EACXA,EAAWjk2B,CACb,CAGA,GAAIgk2B,EAASnu1B,OAASou1B,EAAU,CAC9B,MAAMjk2B,EAAMgk2B,EACZA,EAAWC,EACXA,EAAWjk2B,CACb,CACA,IAAK,IAAI3/B,EAAI,EAAGu/3B,EAAOqE,EAAS32D,MAAMl+zB,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAC3D,MAAM24M,EAAOirrB,EAAS32D,MAAMjt0B,GACtB2rf,EAAUi4Y,EAASlC,SAAS1h4B,GAC5BmR,EAAQwy3B,EAAS12D,MAAM/p0B,QAAQy1M,IACtB,IAAXxnM,GACFwy3B,EAAS12D,MAAMx+zB,KAAKkqM,GACpBgrrB,EAASjC,SAASjz3B,KAAKk9e,IAClBg4Y,EAASjC,SAASvw3B,IAAUw6e,CACrC,CACAi4Y,EAAS32D,MAAQ,KACjB22D,EAASlC,SAAW,KACpBkC,EAASjE,WAAagE,EAGtBC,EAAS/C,OAAOlB,WAAagE,EAAS9C,OACtC+C,EAAS5C,QAAQrB,WAAagE,EAAS3C,OA9BlB,CA+BvB,CAGA,YAAA6C,GACE,YAA2Bpy3B,IAAvBkJ,KAAKmp3B,gBACJnp3B,KAAK66B,KAAyC76B,KAAK66B,KAAKsuvB,aAAcnpxB,KAAKmp3B,cAAgBnp3B,KAAK66B,KAAU76B,KAAKmp3B,cAAgBnp3B,KAAK66B,KAAKqu1B,eAA9Hlp3B,KAAKmp3B,cAAgB,MADQnp3B,KAAKmp3B,aAGpD,CACA,WAAAC,GACE,QAA0Bty3B,IAAtBkJ,KAAKqp3B,aAA4B,OAAOrp3B,KAAKqp3B,aACjD,GAAKrp3B,KAAK66B,KAIH,CACL,MAAM8pS,EAAM3kU,KAAK66B,KAAKmq1B,YAAchl3B,KAAK66B,KACzC76B,KAAKqp3B,aAAe1kjB,EAAI2kjB,YAC1B,MAPgBtp3B,KAAKqp3B,aAAe,CAClC/2D,MAAO,GACPy0D,SAAU,GACVwC,WAAY,IAKd,OAAOvp3B,KAAKqp3B,YACd,CACA,UAAAC,GACE,QAAyBxy3B,IAArBkJ,KAAKwp3B,YAA2B,OAAOxp3B,KAAKwp3B,YAChD,MAAMJ,EAAcpp3B,KAAKop3B,cACzBpp3B,KAAKwp3B,YAAc,CACjBl3D,MAAO82D,EAAY92D,MAAMx3zB,MAAM,GAC/Bis3B,SAAUqC,EAAYrC,SAASjs3B,MAAM,GACrCyu3B,WAAY,IAEd,MAAME,EAAazp3B,KAAKwp3B,YAAYl3D,MAC9Bo3D,EAAgB1p3B,KAAKwp3B,YAAYzC,SACjC4C,EAAW3p3B,KAAKwp3B,YAAYD,WAGlC,IAAK,IAAIlk4B,EAAI,EAAGu/3B,EAAO5k3B,KAAKsyzB,MAAMl+zB,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAM24M,EAAOh+L,KAAKsyzB,MAAMjt0B,GAClB2rf,EAAUhxe,KAAK+m3B,SAAS1h4B,GACxBmR,EAAQiz3B,EAAWlh4B,QAAQy1M,IAClB,IAAXxnM,GACFiz3B,EAAW313B,KAAKkqM,GAChB0rrB,EAAc513B,KAAKk9e,IACd04Y,EAAclz3B,IAAUw6e,CACjC,CAGA,MAAM44Y,EAAa,GACbC,EAAe,GACrB,IAAK,IAAIxk4B,EAAI,EAAGu/3B,EAAO6E,EAAWr13B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,GAAyB,IAArBqk4B,EAAcrk4B,GAAU,SAC5B,MAAM24M,EAAOyrrB,EAAWpk4B,GAClBk8f,EAAOvjT,EAAKujT,KAClB,IAAoC,IAAhCsoY,EAAath4B,QAAQg5f,GACzB,GAAIvjT,EAAK8rrB,WAAYF,EAAW913B,KAAKytf,OAAW,EACV,IAAhCsoY,EAAath4B,QAAQg5f,IAAcsoY,EAAa/13B,KAAKytf,GACzD,MAAM/qf,EAAQoz3B,EAAWrh4B,QAAQy1M,EAAKujT,OACvB,IAAX/qf,GAAcoz3B,EAAW781B,OAAOv2B,EAAO,EAC7C,CACF,CAGA,IAAK,IAAInR,EAAI,EAAGu/3B,EAAOgF,EAAWx13B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAM0k4B,EAAKH,EAAWvk4B,GAAG2k4B,WACK,IAA1BL,EAASph4B,QAAQwh4B,IAAYJ,EAAS713B,KAAKi23B,EACjD,CACA,OAAO/p3B,KAAKwp3B,WACd,CAGA,UAAArgG,GAEE,GAAInpxB,KAAKgl3B,WAAY,OAAO,EAC5B,QAAyBlu3B,IAArBkJ,KAAKyoxB,YAA2B,OAAOzoxB,KAAKyoxB,YAChD,MAAMwhG,EAAYjq3B,KAAKop3B,cAAcG,WAC/BI,EAAW3p3B,KAAKsp3B,aAAaC,WACnC,OAAQ1iiB,EAAU72U,MAChB,IAAK,QACH,CAIE,MAAMk62B,EAAiC,IAArBD,EAAU713B,OACtB+13B,EAA+B,IAApBR,EAASv13B,OAC1B4L,KAAKyoxB,YAAcyhG,IAAcC,EACjC,KACF,CACF,IAAK,eACH,CAKE,IAAIC,EACAC,EACAJ,EAAU713B,OAASu13B,EAASv13B,QAC9Bg23B,EAAQH,EAAU713B,OAClBi23B,EAAOV,EAASv13B,SAEhBg23B,EAAQT,EAASv13B,OACjBi23B,EAAOJ,EAAU713B,QAEnB4L,KAAKyoxB,YAAc4hG,IAASxjiB,EAAUyjiB,eAAiBF,EAAQC,EAC/D,KACF,CACF,IAAK,MACH,CAIE,MAAMht0B,EAAO73D,KAAKM,IAAImk4B,EAAU713B,OAASu13B,EAASv13B,QAClD4L,KAAKyoxB,YAAcpruB,EAAO,GAAM,EAChC,KACF,CACF,IAAK,aACH,CAGE,MAAMkt0B,EAAgBC,GAAsB,IAAfA,EAAIp23B,QAAgBo23B,EAAI,GAAGn6Y,UACxDrwe,KAAKyoxB,YAAc8hG,EAAcN,KAAeM,EAAcZ,GAC9D,KACF,CACF,QACE,MAAM,IAAIpi3B,MAAM,qCAAqCs/U,EAAU72U,QAEnE,OAAOhQ,KAAKyoxB,WACd,EAGF,MAAMgiG,EACJ,WAAAhq3B,CAAYiq3B,EAAUnpY,EAAMuoY,GAC1B,IAAKx13B,MAAMyb,QAAQ262B,IAAiC,IAApBA,EAASt23B,OACvC,MAAM,IAAImT,MAAM,yDAKlB,GAHAvH,KAAKuhf,KAAOA,EACZvhf,KAAK8p3B,WAAaA,EAClB9p3B,KAAKwnE,SAAW,GACc,iBAAnBkjzB,EAAS,GAAG,IAA6C,iBAAnBA,EAAS,GAAG,GAC3D,MAAM,IAAInj3B,MAAM,yDAElB,MAAMoxB,EAAaqo1B,EAAQz13B,MAAMm/3B,EAAS,GAAG,GAAIA,EAAS,GAAG,IAC7D1q3B,KAAK49L,KAAO,CACVt9F,GAAI,CACF/5G,EAAGoyC,EAAWpyC,EACd5C,EAAGg1C,EAAWh1C,GAEhBgkZ,GAAI,CACFphZ,EAAGoyC,EAAWpyC,EACd5C,EAAGg1C,EAAWh1C,IAGlB,IAAIgn4B,EAAYhy1B,EAChB,IAAK,IAAItzC,EAAI,EAAGu/3B,EAAO8F,EAASt23B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACrD,GAA8B,iBAAnBql4B,EAASrl4B,GAAG,IAA6C,iBAAnBql4B,EAASrl4B,GAAG,GAC3D,MAAM,IAAIkiB,MAAM,yDAElB,IAAIsnB,EAAQmy1B,EAAQz13B,MAAMm/3B,EAASrl4B,GAAG,GAAIql4B,EAASrl4B,GAAG,IAElDwpC,EAAMtoC,IAAMok4B,EAAUpk4B,GAAKsoC,EAAMlrC,IAAMgn4B,EAAUhn4B,IACrDqc,KAAKwnE,SAAS1zE,KAAK0w3B,EAAQwC,SAAS2D,EAAW971B,EAAO7uB,OAClD6uB,EAAMtoC,EAAIyZ,KAAK49L,KAAKt9F,GAAG/5G,IAAGyZ,KAAK49L,KAAKt9F,GAAG/5G,EAAIsoC,EAAMtoC,GACjDsoC,EAAMlrC,EAAIqc,KAAK49L,KAAKt9F,GAAG38G,IAAGqc,KAAK49L,KAAKt9F,GAAG38G,EAAIkrC,EAAMlrC,GACjDkrC,EAAMtoC,EAAIyZ,KAAK49L,KAAK+pM,GAAGphZ,IAAGyZ,KAAK49L,KAAK+pM,GAAGphZ,EAAIsoC,EAAMtoC,GACjDsoC,EAAMlrC,EAAIqc,KAAK49L,KAAK+pM,GAAGhkZ,IAAGqc,KAAK49L,KAAK+pM,GAAGhkZ,EAAIkrC,EAAMlrC,GACrDgn4B,EAAY971B,EACd,CAEI8J,EAAWpyC,IAAMok4B,EAAUpk4B,GAAKoyC,EAAWh1C,IAAMgn4B,EAAUhn4B,GAC7Dqc,KAAKwnE,SAAS1zE,KAAK0w3B,EAAQwC,SAAS2D,EAAWhy1B,EAAY34B,MAE/D,CACA,cAAA4q3B,GACE,MAAMC,EAAc,GACpB,IAAK,IAAIxl4B,EAAI,EAAGu/3B,EAAO5k3B,KAAKwnE,SAASpzE,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAC1D,MAAMy6C,EAAU9/B,KAAKwnE,SAASniF,GAC9Bwl4B,EAAY/23B,KAAKgsC,EAAQom1B,QACzB2E,EAAY/23B,KAAKgsC,EAAQum1B,QAC3B,CACA,OAAOwE,CACT,EAEF,MAAMC,EACJ,WAAArq3B,CAAYsq3B,EAAUf,GACpB,IAAK113B,MAAMyb,QAAQg72B,GACjB,MAAM,IAAIxj3B,MAAM,yDAElBvH,KAAKgr3B,aAAe,IAAIP,EAAOM,EAAS,GAAI/q3B,MAAM,GAElDA,KAAK49L,KAAO,CACVt9F,GAAI,CACF/5G,EAAGyZ,KAAKgr3B,aAAaptrB,KAAKt9F,GAAG/5G,EAC7B5C,EAAGqc,KAAKgr3B,aAAaptrB,KAAKt9F,GAAG38G,GAE/BgkZ,GAAI,CACFphZ,EAAGyZ,KAAKgr3B,aAAaptrB,KAAK+pM,GAAGphZ,EAC7B5C,EAAGqc,KAAKgr3B,aAAaptrB,KAAK+pM,GAAGhkZ,IAGjCqc,KAAKir3B,cAAgB,GACrB,IAAK,IAAI5l4B,EAAI,EAAGu/3B,EAAOmG,EAAS323B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACrD,MAAM24M,EAAO,IAAIysrB,EAAOM,EAAS1l4B,GAAI2a,MAAM,GACvCg+L,EAAKJ,KAAKt9F,GAAG/5G,EAAIyZ,KAAK49L,KAAKt9F,GAAG/5G,IAAGyZ,KAAK49L,KAAKt9F,GAAG/5G,EAAIy3M,EAAKJ,KAAKt9F,GAAG/5G,GAC/Dy3M,EAAKJ,KAAKt9F,GAAG38G,EAAIqc,KAAK49L,KAAKt9F,GAAG38G,IAAGqc,KAAK49L,KAAKt9F,GAAG38G,EAAIq6M,EAAKJ,KAAKt9F,GAAG38G,GAC/Dq6M,EAAKJ,KAAK+pM,GAAGphZ,EAAIyZ,KAAK49L,KAAK+pM,GAAGphZ,IAAGyZ,KAAK49L,KAAK+pM,GAAGphZ,EAAIy3M,EAAKJ,KAAK+pM,GAAGphZ,GAC/Dy3M,EAAKJ,KAAK+pM,GAAGhkZ,EAAIqc,KAAK49L,KAAK+pM,GAAGhkZ,IAAGqc,KAAK49L,KAAK+pM,GAAGhkZ,EAAIq6M,EAAKJ,KAAK+pM,GAAGhkZ,GACnEqc,KAAKir3B,cAAcn33B,KAAKkqM,EAC1B,CACAh+L,KAAKgq3B,UAAYA,CACnB,CACA,cAAAY,GACE,MAAMC,EAAc7q3B,KAAKgr3B,aAAaJ,iBACtC,IAAK,IAAIvl4B,EAAI,EAAGu/3B,EAAO5k3B,KAAKir3B,cAAc723B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAC/D,MAAM6l4B,EAAkBlr3B,KAAKir3B,cAAc5l4B,GAAGul4B,iBAC9C,IAAK,IAAI5k2B,EAAI,EAAGml2B,EAAOD,EAAgB923B,OAAQ4xB,EAAIml2B,EAAMnl2B,IACvD6k2B,EAAY/23B,KAAKo33B,EAAgBll2B,GAErC,CACA,OAAO6k2B,CACT,EAEF,MAAMO,EACJ,WAAA3q3B,CAAYi9L,EAAM2yS,GAChB,IAAK/7e,MAAMyb,QAAQ2tL,GACjB,MAAM,IAAIn2L,MAAM,yDAElB,IAE+B,iBAAlBm2L,EAAK,GAAG,GAAG,KAAiBA,EAAO,CAACA,GACjD,CAAE,MAAOktC,GAGT,CACA5qO,KAAKu/L,MAAQ,GACbv/L,KAAK49L,KAAO,CACVt9F,GAAI,CACF/5G,EAAG4pB,OAAOkD,kBACV1vB,EAAGwsB,OAAOkD,mBAEZs0X,GAAI,CACFphZ,EAAG4pB,OAAOk9B,kBACV1pD,EAAGwsB,OAAOk9B,oBAGd,IAAK,IAAIhoD,EAAI,EAAGu/3B,EAAOlnrB,EAAKtpM,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACjD,MAAMk8f,EAAO,IAAIupY,EAAOptrB,EAAKr4M,GAAI2a,MAC7Buhf,EAAK3jT,KAAKt9F,GAAG/5G,EAAIyZ,KAAK49L,KAAKt9F,GAAG/5G,IAAGyZ,KAAK49L,KAAKt9F,GAAG/5G,EAAIg7f,EAAK3jT,KAAKt9F,GAAG/5G,GAC/Dg7f,EAAK3jT,KAAKt9F,GAAG38G,EAAIqc,KAAK49L,KAAKt9F,GAAG38G,IAAGqc,KAAK49L,KAAKt9F,GAAG38G,EAAI49f,EAAK3jT,KAAKt9F,GAAG38G,GAC/D49f,EAAK3jT,KAAK+pM,GAAGphZ,EAAIyZ,KAAK49L,KAAK+pM,GAAGphZ,IAAGyZ,KAAK49L,KAAK+pM,GAAGphZ,EAAIg7f,EAAK3jT,KAAK+pM,GAAGphZ,GAC/Dg7f,EAAK3jT,KAAK+pM,GAAGhkZ,EAAIqc,KAAK49L,KAAK+pM,GAAGhkZ,IAAGqc,KAAK49L,KAAK+pM,GAAGhkZ,EAAI49f,EAAK3jT,KAAK+pM,GAAGhkZ,GACnEqc,KAAKu/L,MAAMzrM,KAAKytf,EAClB,CACAvhf,KAAKqwe,UAAYA,CACnB,CACA,cAAAu6Y,GACE,MAAMC,EAAc,GACpB,IAAK,IAAIxl4B,EAAI,EAAGu/3B,EAAO5k3B,KAAKu/L,MAAMnrM,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAMgm4B,EAAkBrr3B,KAAKu/L,MAAMl6M,GAAGul4B,iBACtC,IAAK,IAAI5k2B,EAAI,EAAGml2B,EAAOE,EAAgBj33B,OAAQ4xB,EAAIml2B,EAAMnl2B,IACvD6k2B,EAAY/23B,KAAKu33B,EAAgBrl2B,GAErC,CACA,OAAO6k2B,CACT,EAGF,MAAMS,EAGJ,cAAO/m4B,CAAQgn4B,GACb,MAAMC,EAAW,GACjB,IAAK,IAAInm4B,EAAI,EAAGu/3B,EAAO2G,EAAYn33B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACxD,MAAMy6C,EAAUyr1B,EAAYlm4B,GAC5B,IAAKy6C,EAAQqpvB,cAAgBrpvB,EAAQsl1B,QAAS,SAC9C,IAAIqG,EAAY,KACZt/2B,EAAQ2zB,EAAQom1B,OAChBT,EAAY3l1B,EAAQum1B,QACxB,MAAM981B,EAAS,CAACpd,GACVu/2B,EAAgBv/2B,EAAM0iB,MACtB881B,EAAkB,GAGxB,KACEF,EAAYt/2B,EACZA,EAAQs52B,EACRl81B,EAAOz1B,KAAKqY,GAGRA,EAAM0iB,QAAU681B,GACpB,OAAa,CACX,MAAME,EAAez/2B,EAAMg52B,2BAI3B,GAA4B,IAAxByG,EAAax33B,OAAc,CAC7B,MAAMy33B,EAAUti2B,EAAO,GAAGsF,MACpBi91B,EAASvi2B,EAAOA,EAAOn1B,OAAS,GAAGy6B,MACzC,MAAM,IAAItnB,MAAM,+CAA+Csk3B,EAAQtl4B,MAAWsl4B,EAAQlo4B,4CAAiDmo4B,EAAOvl4B,MAAMul4B,EAAOno4B,MACjK,CAGA,GAA4B,IAAxBio4B,EAAax33B,OAAc,CAC7Bqx3B,EAAYmG,EAAa,GAAG1G,QAC5B,KACF,CAGA,IAAI6G,EAAU,KACd,IAAK,IAAI/l2B,EAAI,EAAGml2B,EAAOQ,EAAgBv33B,OAAQ4xB,EAAIml2B,EAAMnl2B,IACvD,GAAI2l2B,EAAgB3l2B,GAAG6I,QAAU1iB,EAAM0iB,MAAO,CAC5Ck91B,EAAU/l2B,EACV,KACF,CAGF,GAAgB,OAAZ+l2B,EAAkB,CACpB,MAAMC,EAAiBL,EAAgB5+1B,OAAOg/1B,GAAS,GACjDE,EAAa1i2B,EAAOwD,OAAOi/1B,EAAex13B,OAChDy13B,EAAW90yB,QAAQ80yB,EAAW,GAAG/G,SACjCsG,EAAS133B,KAAK,IAAIw33B,EAAQW,EAAWn72B,YACrC,QACF,CAEA662B,EAAgB733B,KAAK,CACnB0C,MAAO+yB,EAAOn1B,OACdy6B,MAAO1iB,EAAM0iB,QAGf,MAAM2vN,EAAaryO,EAAMk52B,sBAAsBoG,GAC/ChG,EAAYmG,EAAax43B,KAAKorP,GAAY,GAAG0moB,QAC7C,KACF,CAEFsG,EAAS133B,KAAK,IAAIw33B,EAAQ/h2B,GAC5B,CACA,OAAOii2B,CACT,CACA,WAAA/q3B,CAAY8oB,GACVvpB,KAAKupB,OAASA,EACd,IAAK,IAAIlkC,EAAI,EAAGu/3B,EAAOr71B,EAAOn1B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC9CkkC,EAAOlkC,GAAGy6C,QAAQsl1B,QAAUpl3B,KAE9BA,KAAKuhf,KAAO,IACd,CACA,OAAA2qY,GAEE,IAAIC,EAASns3B,KAAKupB,OAAO,GAAGsF,MAC5B,MAAM0J,EAAS,CAAC4z1B,GAChB,IAAK,IAAI9m4B,EAAI,EAAGu/3B,EAAO5k3B,KAAKupB,OAAOn1B,OAAS,EAAG/O,EAAIu/3B,EAAMv/3B,IAAK,CAC5D,MAAMg0C,EAAKr5B,KAAKupB,OAAOlkC,GAAGwpC,MACpBu91B,EAASps3B,KAAKupB,OAAOlkC,EAAI,GAAGwpC,MACc,IAA5C401B,EAAoBpq1B,EAAI8y1B,EAAQC,KACpC7z1B,EAAOzkC,KAAKulC,GACZ8y1B,EAAS9y1B,EACX,CAGA,GAAsB,IAAlBd,EAAOnkC,OAAc,OAAO,KAGhC,MAAMilC,EAAKd,EAAO,GACZ6z1B,EAAS7z1B,EAAO,GAC0B,IAA5Ckr1B,EAAoBpq1B,EAAI8y1B,EAAQC,IAAe7z1B,EAAO2P,QAC1D3P,EAAOzkC,KAAKykC,EAAO,IACnB,MAAMj3B,EAAOtB,KAAKqs3B,iBAAmB,GAAK,EACpCC,EAASts3B,KAAKqs3B,iBAAmB,EAAI9z1B,EAAOnkC,OAAS,EACrDm43B,EAAOvs3B,KAAKqs3B,iBAAmB9z1B,EAAOnkC,QAAU,EAChDo43B,EAAgB,GACtB,IAAK,IAAInn4B,EAAIin4B,EAAQjn4B,GAAKkn4B,EAAMln4B,GAAKic,EAAMkr3B,EAAc143B,KAAK,CAACykC,EAAOlzC,GAAGkB,EAAGgyC,EAAOlzC,GAAG1B,IACtF,OAAO6o4B,CACT,CACA,cAAAH,GACE,QAA6Bv13B,IAAzBkJ,KAAKys3B,gBAA+B,CACtC,MAAMC,EAAY1s3B,KAAK2s3B,gBACvB3s3B,KAAKys3B,iBAAkBC,IAAaA,EAAUL,gBAChD,CACA,OAAOrs3B,KAAKys3B,eACd,CACA,aAAAE,GAIE,YAH4B713B,IAAxBkJ,KAAK4s3B,iBACP5s3B,KAAK4s3B,eAAiB5s3B,KAAK6s3B,sBAEtB7s3B,KAAK4s3B,cACd,CAGA,kBAAAC,GAGE,IAAIC,EAAc9s3B,KAAKupB,OAAO,GAC9B,IAAK,IAAIlkC,EAAI,EAAGu/3B,EAAO5k3B,KAAKupB,OAAOn1B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACxD,MAAMy2C,EAAM97B,KAAKupB,OAAOlkC,GACpBi/3B,EAAW5k1B,QAAQot1B,EAAahx1B,GAAO,IAAGgx1B,EAAchx1B,EAC9D,CACA,IAAIix1B,EAAUD,EAAYht1B,QAAQop1B,eAC9B8D,EAAcD,EAAUA,EAAQ7D,eAAiB,KACrD,OAAa,CAEX,IAAK6D,EAAS,OAAO,KAIrB,IAAKC,EAAa,OAAOD,EAAQ3H,QAKjC,GAAI4H,EAAY5H,UAAY2H,EAAQ3H,QAClC,OAAI4H,EAAY5H,QAAQuH,kBAAoBI,EAAQ3H,QAC3C2H,EAAQ3H,QACH2H,EAAQ3H,QAAQuH,gBAKhCI,EAAUC,EAAY9D,eACtB8D,EAAcD,EAAUA,EAAQ7D,eAAiB,IACnD,CACF,EAEF,MAAM+D,EACJ,WAAAxs3B,CAAYuq3B,GACVhr3B,KAAKgr3B,aAAeA,EACpBA,EAAazpY,KAAOvhf,KACpBA,KAAKir3B,cAAgB,EACvB,CACA,WAAAiC,CAAYlvrB,GACVh+L,KAAKir3B,cAAcn33B,KAAKkqM,GACxBA,EAAKujT,KAAOvhf,IACd,CACA,OAAAks3B,GACE,MAAMxurB,EAAO,CAAC19L,KAAKgr3B,aAAakB,WAEhC,GAAgB,OAAZxurB,EAAK,GAAa,OAAO,KAC7B,IAAK,IAAIr4M,EAAI,EAAGu/3B,EAAO5k3B,KAAKir3B,cAAc723B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAC/D,MAAM8n4B,EAAWnt3B,KAAKir3B,cAAc5l4B,GAAG6m4B,UAEtB,OAAbiB,GACJzvrB,EAAK5pM,KAAKq53B,EACZ,CACA,OAAOzvrB,CACT,EAEF,MAAM0vrB,EACJ,WAAA3s3B,CAAY6xzB,GACVtyzB,KAAKsyzB,MAAQA,EACbtyzB,KAAKu/L,MAAQv/L,KAAKqt3B,cAAc/6D,EAClC,CACA,OAAA45D,GACE,MAAMxurB,EAAO,GACb,IAAK,IAAIr4M,EAAI,EAAGu/3B,EAAO5k3B,KAAKu/L,MAAMnrM,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAMio4B,EAAWtt3B,KAAKu/L,MAAMl6M,GAAG6m4B,UAEd,OAAboB,GACJ5vrB,EAAK5pM,KAAKw53B,EACZ,CACA,OAAO5vrB,CACT,CACA,aAAA2vrB,CAAc/6D,GACZ,MAAM/ynB,EAAQ,GACd,IAAK,IAAIl6M,EAAI,EAAGu/3B,EAAOtyD,EAAMl+zB,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CAClD,MAAM24M,EAAOs0nB,EAAMjt0B,GACnB,IAAI24M,EAAKujT,KACT,GAAIvjT,EAAKqurB,iBAAkB9srB,EAAMzrM,KAAK,IAAIm53B,EAAQjvrB,QAAY,CAC5D,MAAM2urB,EAAgB3urB,EAAK2urB,gBACtBA,EAAcprY,MAAMhiT,EAAMzrM,KAAK,IAAIm53B,EAAQN,IAChDA,EAAcprY,KAAK2rY,YAAYlvrB,EACjC,CACF,CACA,OAAOuB,CACT,EAcF,MAAMgurB,EACJ,WAAA9s3B,CAAYm8G,GACV,IAAI4hI,EAAarqP,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAKqw3B,EAAQ9k1B,QAC7F1/B,KAAK48G,MAAQA,EACb58G,KAAKqvM,KAAO,IAAIuwqB,EAAKphoB,GACrBx+O,KAAKwnE,SAAW,EAClB,CACA,OAAAizD,CAAQtuH,GACN,MAAM2zB,EAAU3zB,EAAM2zB,QAChBmgC,EAAY,GAIlB,GAAI9zD,EAAM642B,WAER,OADI742B,EAAMkspB,OAAQr4pB,KAAK48G,MAAMh6E,OAAOz2B,EAAM+42B,SAAcll3B,KAAKqvM,KAAKzsK,OAAO9C,GAClEmgC,EAET,MAAMl5E,EAAOolB,EAAMkspB,OAASr4pB,KAAKqvM,KAAK/7M,IAAIwsC,GAAW9/B,KAAKqvM,KAAKx0M,KAAKilC,GACpE,IAAK/4C,EAAM,MAAM,IAAIwgB,MAAM,2BAA2Bu4B,EAAQ/hC,OAAY+hC,EAAQom1B,OAAOr31B,MAAMtoC,MAAMu5C,EAAQom1B,OAAOr31B,MAAMlrC,UAAem8C,EAAQum1B,QAAQx31B,MAAMtoC,MAAMu5C,EAAQum1B,QAAQx31B,MAAMlrC,yBAC3L,IAEIop4B,EACAS,EAHAzM,EAAWh63B,EACXyiU,EAAWziU,EAKf,UAAmB+P,IAAZi23B,GACLhM,EAAW/g3B,KAAKqvM,KAAKx0K,KAAKkm1B,GACT,OAAbA,EAAmBgM,EAAU,UAA0Cj23B,IAA5Biq3B,EAASv23B,IAAIw63B,aAA0B+H,EAAUhM,EAASv23B,KAI3G,UAAmBsM,IAAZ023B,GACLhkkB,EAAWxpT,KAAKqvM,KAAKvnN,KAAK0hU,GACT,OAAbA,EAAmBgkkB,EAAU,UAA0C123B,IAA5B0yT,EAASh/T,IAAIw63B,aAA0BwI,EAAUhkkB,EAASh/T,KAE3G,GAAI2hB,EAAMkspB,OAAQ,CAEhB,IAAIo1N,EAAiB,KACrB,GAAIV,EAAS,CACX,MAAMW,EAAYX,EAAQ9sd,gBAAgBngY,GAC1C,GAAkB,OAAd4t1B,IACG5t1B,EAAQwn1B,aAAaoG,KAAYD,EAAiBC,IAClDX,EAAQzF,aAAaoG,IAAY,CACpC,MAAMC,EAAqB3t3B,KAAK4t3B,aAAab,EAASW,GACtD,IAAK,IAAIro4B,EAAI,EAAGu/3B,EAAO+I,EAAmBv53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC1D46E,EAAUnsE,KAAK653B,EAAmBto4B,GAEtC,CAEJ,CAGA,IAAIwo4B,EAAiB,KACrB,GAAIL,EAAS,CACX,MAAMM,EAAYN,EAAQvtd,gBAAgBngY,GAC1C,GAAkB,OAAdgu1B,IACGhu1B,EAAQwn1B,aAAawG,KAAYD,EAAiBC,IAClDN,EAAQlG,aAAawG,IAAY,CACpC,MAAMH,EAAqB3t3B,KAAK4t3B,aAAaJ,EAASM,GACtD,IAAK,IAAIzo4B,EAAI,EAAGu/3B,EAAO+I,EAAmBv53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC1D46E,EAAUnsE,KAAK653B,EAAmBto4B,GAEtC,CAEJ,CAKA,GAAuB,OAAnBoo4B,GAA8C,OAAnBI,EAAyB,CACtD,IAAIE,EAAa,KACYA,EAAN,OAAnBN,EAAsCI,EAA2C,OAAnBA,GAC3CvJ,EAAW3xY,cAAc86Y,EAAgBI,IACjC,EAFyEJ,EAEpDI,EAKpD7t3B,KAAK48G,MAAMh6E,OAAO9C,EAAQum1B,SAC1BpmzB,EAAUnsE,KAAKgsC,EAAQum1B,SACvB,MAAMsH,EAAqB7t1B,EAAQ5+C,MAAM6s4B,GACzC,IAAK,IAAI1o4B,EAAI,EAAGu/3B,EAAO+I,EAAmBv53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC1D46E,EAAUnsE,KAAK653B,EAAmBto4B,GAEtC,CACI46E,EAAU7rE,OAAS,GAIrB4L,KAAKqvM,KAAKzsK,OAAO9C,GACjBmgC,EAAUnsE,KAAKqY,KAGfnM,KAAKwnE,SAAS1zE,KAAKgsC,GACnBA,EAAQjF,KAAOky1B,EAEnB,KAAO,CAKL,GAAIA,GAAWS,EAAS,CACtB,MAAMQ,EAAQjB,EAAQ9sd,gBAAgButd,GACtC,GAAc,OAAVQ,EAAgB,CAClB,IAAKjB,EAAQzF,aAAa0G,GAAQ,CAChC,MAAML,EAAqB3t3B,KAAK4t3B,aAAab,EAASiB,GACtD,IAAK,IAAI3o4B,EAAI,EAAGu/3B,EAAO+I,EAAmBv53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC1D46E,EAAUnsE,KAAK653B,EAAmBto4B,GAEtC,CACA,IAAKmo4B,EAAQlG,aAAa0G,GAAQ,CAChC,MAAML,EAAqB3t3B,KAAK4t3B,aAAaJ,EAASQ,GACtD,IAAK,IAAI3o4B,EAAI,EAAGu/3B,EAAO+I,EAAmBv53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAC1D46E,EAAUnsE,KAAK653B,EAAmBto4B,GAEtC,CACF,CACF,CACA2a,KAAKqvM,KAAKzsK,OAAO9C,EACnB,CACA,OAAOmgC,CACT,CAIA,YAAA2tzB,CAAajpjB,EAAKtrS,GAKhBr5B,KAAKqvM,KAAKzsK,OAAO+hS,GACjB,MAAM0hjB,EAAU1hjB,EAAI0hjB,QACpBrm3B,KAAK48G,MAAMh6E,OAAOyj1B,GAClB,MAAMpmzB,EAAY0kQ,EAAIzjV,MAAMm4C,GAI5B,OAHA4mC,EAAUnsE,KAAKuy3B,QAEQvv3B,IAAnB6tU,EAAIqgjB,YAA0Bhl3B,KAAKqvM,KAAK/7M,IAAIqxU,GACzC1kQ,CACT,EAIF,MAAMguzB,OAAqD,IAAZxzvB,GAA2BA,EAAQkvD,IAAIsksB,iCAAmC,IACnHC,OAA6D,IAAZzzvB,GAA2BA,EAAQkvD,IAAIuksB,yCAA2C,IA4FzI,MAAMrniB,EAAY,IA3FlB,MACE,GAAAlhO,CAAI31G,EAAM0tL,EAAMywrB,GACdtniB,EAAU72U,KAAOA,EACjBgx2B,EAAQzq3B,QAGR,MAAM633B,EAAa,CAAC,IAAIhD,EAAY1trB,GAAM,IAC1C,IAAK,IAAIr4M,EAAI,EAAGu/3B,EAAOuJ,EAAU/53B,OAAQ/O,EAAIu/3B,EAAMv/3B,IACjD+o4B,EAAWt63B,KAAK,IAAIs33B,EAAY+C,EAAU9o4B,IAAI,IAQhD,GANAwhW,EAAUyjiB,cAAgB8D,EAAWh63B,OAMd,eAAnByyV,EAAU72U,KAAuB,CAEnC,MAAM2ud,EAAUyvZ,EAAW,GAC3B,IAAI/o4B,EAAI,EACR,KAAOA,EAAI+o4B,EAAWh63B,QACqC,OAArDqs3B,EAAe2N,EAAW/o4B,GAAGu4M,KAAM+gS,EAAQ/gS,MAAgBv4M,IAAS+o4B,EAAWrh2B,OAAO1nC,EAAG,EAEjG,CAKA,GAAuB,iBAAnBwhW,EAAU72U,KAGZ,IAAK,IAAI3qB,EAAI,EAAGu/3B,EAAOwJ,EAAWh63B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAMgp4B,EAAMD,EAAW/o4B,GACvB,IAAK,IAAI2gC,EAAI3gC,EAAI,EAAG8l4B,EAAOiD,EAAWh63B,OAAQ4xB,EAAIml2B,EAAMnl2B,IACtD,GAAqD,OAAjDy61B,EAAe4N,EAAIzwrB,KAAMwwrB,EAAWpo2B,GAAG43K,MAAgB,MAAO,EAEtE,CAIF,MAAMhhF,EAAQ,IAAIgjwB,EAAK0E,EAAW5k1B,SAClC,IAAK,IAAIr6C,EAAI,EAAGu/3B,EAAOwJ,EAAWh63B,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACvD,MAAMwl4B,EAAcuD,EAAW/o4B,GAAGul4B,iBAClC,IAAK,IAAI5k2B,EAAI,EAAGml2B,EAAON,EAAYz23B,OAAQ4xB,EAAIml2B,EAAMnl2B,IAEnD,GADA42F,EAAMzrB,OAAO05xB,EAAY7k2B,IACrB42F,EAAM7pG,KAAOk72B,EAEf,MAAM,IAAI1m3B,MAAM,yFAGtB,CAGA,MAAM+m3B,EAAY,IAAIf,EAAU3wwB,GAChC,IAAI2xwB,EAAgB3xwB,EAAM7pG,KACtBhsB,EAAO61H,EAAMv6G,MACjB,KAAOtb,GAAM,CACX,MAAM+0C,EAAM/0C,EAAKyD,IACjB,GAAIoyH,EAAM7pG,OAASw72B,EAAe,CAEhC,MAAM5pjB,EAAM7oS,EAAIgE,QAChB,MAAM,IAAIv4B,MAAM,mBAAmBu0B,EAAIu8nB,OAAS,OAAS,uBAA4Bv8nB,EAAIjN,MAAMtoC,MAAMu1C,EAAIjN,MAAMlrC,oBAAoBghV,EAAI5mU,OAAY4mU,EAAIuhjB,OAAOr31B,MAAMtoC,MAAMo+U,EAAIuhjB,OAAOr31B,MAAMlrC,UAAeghV,EAAI0hjB,QAAQx31B,MAAMtoC,MAAMo+U,EAAI0hjB,QAAQx31B,MAAMlrC,iBACtP,CACA,GAAIi5H,EAAM7pG,KAAOk72B,EAEf,MAAM,IAAI1m3B,MAAM,8EAElB,GAAI+m3B,EAAU9mzB,SAASpzE,OAAS853B,EAE9B,MAAM,IAAI3m3B,MAAM,wFAElB,MAAM04D,EAAYquzB,EAAU7zvB,QAAQ3+F,GACpC,IAAK,IAAIz2C,EAAI,EAAGu/3B,EAAO3kzB,EAAU7rE,OAAQ/O,EAAIu/3B,EAAMv/3B,IAAK,CACtD,MAAMy2C,EAAMmkC,EAAU56E,QACCyR,IAAnBglC,EAAIkp1B,YAA0BpowB,EAAMzrB,OAAOr1D,EACjD,CACAyy1B,EAAgB3xwB,EAAM7pG,KACtBhsB,EAAO61H,EAAMv6G,KACf,CAGA2+2B,EAAQzq3B,QAGR,MAAMi13B,EAAWF,EAAQ/m4B,QAAQ+p4B,EAAU9mzB,UAE3C,OADe,IAAI4lzB,EAAa5B,GAClBU,SAChB,GAqCF,MAPY,CACV55e,MAzBY,SAAU50M,GACtB,IAAK,IAAIxpM,EAAOC,UAAUC,OAAQ+53B,EAAY,IAAI753B,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IACvG453B,EAAU553B,EAAO,GAAKJ,UAAUI,GAElC,OAAOsyV,EAAUlhO,IAAI,QAAS+3E,EAAMywrB,EACtC,EAqBExpqB,aApBmB,SAAUjnB,GAC7B,IAAK,IAAIpgF,EAAQnpH,UAAUC,OAAQ+53B,EAAY,IAAI753B,MAAMgpH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC7G4wwB,EAAU5wwB,EAAQ,GAAKppH,UAAUopH,GAEnC,OAAOspO,EAAUlhO,IAAI,eAAgB+3E,EAAMywrB,EAC7C,EAgBEK,IAfU,SAAU9wrB,GACpB,IAAK,IAAIv/E,EAAQhqH,UAAUC,OAAQ+53B,EAAY,IAAI753B,MAAM6pH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC7G+vwB,EAAU/vwB,EAAQ,GAAKjqH,UAAUiqH,GAEnC,OAAOyoO,EAAUlhO,IAAI,MAAO+3E,EAAMywrB,EACpC,EAWE3pqB,WAViB,SAAUiqqB,GAC3B,IAAK,IAAIlwwB,EAAQpqH,UAAUC,OAAQs63B,EAAgB,IAAIp63B,MAAMiqH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACjHkwwB,EAAclwwB,EAAQ,GAAKrqH,UAAUqqH,GAEvC,OAAOqoO,EAAUlhO,IAAI,aAAc8owB,EAAaC,EAClD,EAUH,CA97EmFnq4B,E,+BCCpF,IAAImlG,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OAEtBsuxB,EAAQ9l3B,KACR28b,EAAgBnlW,EAAYsuxB,EAAMvu3B,UAAUqlG,SAIhD/b,EAAE,CAAE37F,OAAQ,OAAQs8O,MAAM,GAAQ,CAChCvhO,IAAK,WACH,OAAO08b,EAAc,IAAImpb,EAC3B,G,+BCZF,IAAIjlyB,EAAI,EAAQ,OACZklyB,EAAmB,EAAQ,MAE3B9o4B,EAAMN,KAAKM,IAIf4jG,EAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,GAAQ,CAClCwkpB,cAAe,SAAuB5r1B,GACpC,OAAO2r1B,EAAiB3r1B,IAAWn9C,EAAIm9C,IAAW,gBACpD,G,gBCXFx+C,EAAQg6nB,IAAM,IAAIl3mB,MAAM,UACxB9iB,EAAQo2G,KAAO,IAAItzF,MAAM,WACzB9iB,EAAQkB,MAAQ,IAAI4hB,MAAM,WAC1B9iB,EAAQouH,IAAM,IAAItrG,MAAM,SACxB9iB,EAAQ8O,KAAO,IAAIgU,MAAM,UACzB9iB,EAAQw5C,IAAM,IAAI12B,MAAM,SACxB9iB,EAAQ+0G,GAAK,IAAIjyF,MAAM,QACvB9iB,EAAQwlB,MAAQ,IAAI1C,MAAM,WAC1B9iB,EAAQsR,KAAO,IAAIwR,MAAM,gB,yBCNE,mBAAhB6F,YACPs0E,EAAOj9F,QAAU2oB,YAGjBs0E,EAAOj9F,QAAU,WACb,MAAM,IAAI8iB,MAAM,+BACpB,C,+BCPJ,IAAIm0C,EAAO,EAAQ,OACf2kD,EAAc,EAAQ,OACtB4gB,EAAgB,EAAQ,OACxB5N,EAAW,EAAQ,OACnB6N,EAAoB,EAAQ,OAC5B4ga,EAAqB,EAAQ,MAE7BhuhB,EAAOusG,EAAY,GAAGvsG,MAGtB2+X,EAAe,SAAU8rP,GAC3B,IAAIuwQ,EAAkB,IAATvwQ,EACTwwQ,EAAqB,IAATxwQ,EACZyB,EAAmB,IAATzB,EACVwB,EAAoB,IAATxB,EACXywQ,EAAyB,IAATzwQ,EAChB0wQ,EAA4B,IAAT1wQ,EACnB2wQ,EAAoB,IAAT3wQ,GAAcywQ,EAC7B,OAAO,SAAUr8f,EAAOzuR,EAAYoyG,EAAM64qB,GASxC,IARA,IAOIxp4B,EAAOwN,EAPP2nB,EAAIu4F,EAASs/Q,GACbrwS,EAAO2+B,EAAcnmG,GACrB1mB,EAAS8sH,EAAkB5+B,GAC3Bi/B,EAAgB7lE,EAAKwoD,EAAYoyG,GACjC9/M,EAAQ,EACRkK,EAASyu3B,GAAkBrtW,EAC3B/zhB,EAAS+g4B,EAASpu3B,EAAOiyX,EAAOv+X,GAAU263B,GAAaE,EAAmBvu3B,EAAOiyX,EAAO,QAAK77X,EAE3F1C,EAASoC,EAAOA,IAAS,IAAI043B,GAAY143B,KAAS8rF,KAEtDnvF,EAASouH,EADT57H,EAAQ28F,EAAK9rF,GACiBA,EAAOskB,GACjCyjmB,GACF,GAAIuwQ,EAAQ/g4B,EAAOyI,GAASrD,OACvB,GAAIA,EAAQ,OAAQornB,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAO54nB,EACf,KAAK,EAAG,OAAO6Q,EACf,KAAK,EAAG1C,EAAK/F,EAAQpI,QAChB,OAAQ44nB,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAGzqnB,EAAK/F,EAAQpI,GAI3B,OAAOqp4B,GAAiB,EAAIhvQ,GAAWD,EAAWA,EAAWhynB,CAC/D,CACF,EAEA2zF,EAAOj9F,QAAU,CAGfuN,QAASygY,EAAa,GAGtB1/X,IAAK0/X,EAAa,GAGlBxhY,OAAQwhY,EAAa,GAGrBngY,KAAMmgY,EAAa,GAGnBj4X,MAAOi4X,EAAa,GAGpB53X,KAAM43X,EAAa,GAGnB99T,UAAW89T,EAAa,GAGxB28f,aAAc38f,EAAa,G,+BCvE7B,IAuBIjlQ,EAAWtkB,EAAOwre,EAAS9lT,EAvB3BvsM,EAAa,EAAQ,OACrBvhF,EAAQ,EAAQ,OAChB46C,EAAO,EAAQ,OACfsqM,EAAa,EAAQ,OACrBlmI,EAAS,EAAQ,OACjBG,EAAQ,EAAQ,OAChBj3H,EAAO,EAAQ,OACf8jlB,EAAa,EAAQ,OACrB//jB,EAAgB,EAAQ,MACxBsi3B,EAA0B,EAAQ,OAClCC,EAAS,EAAQ,OACjBlkoB,EAAU,EAAQ,OAElBr3P,EAAMsuF,EAAWktyB,aACjBx0zB,EAAQsnB,EAAWmtyB,eACnB/0vB,EAAUp4C,EAAWo4C,QACrBg1vB,EAAWptyB,EAAWotyB,SACtBhkxB,EAAWppB,EAAWopB,SACtBrlB,EAAiB/D,EAAW+D,eAC5B7lF,EAAS8hF,EAAW9hF,OACpB05L,EAAU,EACVr9E,EAAQ,CAAC,EACT8ywB,EAAqB,qBAGzBzvwB,EAAM,WAEJuN,EAAYnrC,EAAW4G,QACzB,GAEA,IAAI08B,EAAM,SAAU5nH,GAClB,GAAI+hH,EAAOlD,EAAO7+G,GAAK,CACrB,IAAIjJ,EAAK8nH,EAAM7+G,UACR6+G,EAAM7+G,GACbjJ,GACF,CACF,EAEIs1Q,EAAS,SAAUrsQ,GACrB,OAAO,WACL4nH,EAAI5nH,EACN,CACF,EAEIyhsB,EAAgB,SAAUrzrB,GAC5Bw5G,EAAIx5G,EAAMpW,KACZ,EAEI453B,EAAyB,SAAU5x3B,GAErCskF,EAAWkE,YAAYhmF,EAAOxC,GAAKyvH,EAAU/jH,SAAW,KAAO+jH,EAAUvlI,KAC3E,EAGK8L,GAAQgnE,IACXhnE,EAAM,SAAsBmqD,GAC1Bmx0B,EAAwBl73B,UAAUC,OAAQ,GAC1C,IAAIU,EAAKkxP,EAAW9nM,GAAWA,EAAUutD,EAASvtD,GAC9C7pD,EAAOy4kB,EAAW34kB,UAAW,GAKjC,OAJAyoH,IAAQq9E,GAAW,WACjBn5L,EAAMhM,OAAIgC,EAAWzC,EACvB,EACA60G,EAAM+wF,GACCA,CACT,EACAl/H,EAAQ,SAAwBh9D,UACvB6+G,EAAM7+G,EACf,EAEIqtP,EACFliJ,EAAQ,SAAUnrG,GAChB08H,EAAQ2gK,SAAShxB,EAAOrsQ,GAC1B,EAES0x3B,GAAYA,EAAS3m3B,IAC9BogG,EAAQ,SAAUnrG,GAChB0x3B,EAAS3m3B,IAAIshQ,EAAOrsQ,GACtB,EAGSqoF,IAAmBkpyB,GAE5B1gmB,GADA8lT,EAAU,IAAItuf,GACCI,MACfkuf,EAAQruf,MAAMC,UAAYk5mB,EAC1Bt2lB,EAAQxtD,EAAKkzO,EAAKroM,YAAaqoM,IAI/BvsM,EAAWnqF,kBACX8tP,EAAW3jK,EAAWkE,eACrBlE,EAAWutyB,eACZpiwB,GAAoC,UAAvBA,EAAU/jH,WACtBw2G,EAAM0vwB,IAEPzmxB,EAAQymxB,EACRttyB,EAAWnqF,iBAAiB,UAAWsnsB,GAAe,IAGtDt2lB,EADSwmxB,KAAsB3i3B,EAAc,UACrC,SAAUhP,GAChB/U,EAAKmnG,YAAYpjF,EAAc,WAAW2i3B,GAAsB,WAC9D1m4B,EAAKknG,YAAYlwF,MACjB2lH,EAAI5nH,EACN,CACF,EAGQ,SAAUA,GAChB0J,WAAW2iQ,EAAOrsQ,GAAK,EACzB,GAIJ2jF,EAAOj9F,QAAU,CACfsP,IAAKA,EACLgnE,MAAOA,E,YClHT,IAOI8mB,EAPc/3F,OAAOsW,UAOcpZ,SAavC06F,EAAOj9F,QAJP,SAAwBkB,GACtB,OAAOk8F,EAAqBxhF,KAAK1a,EACnC,C,qCClBA,IACQma,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAO,EAAaf,MAAQA,KAAKe,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIvK,UAAU,SAAUC,EAASwK,GAC/C,SAASC,EAAU1b,GAAS,IAAM2b,EAAKH,EAAUrZ,KAAKnC,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC1F,SAASuc,EAAS5b,GAAS,IAAM2b,EAAKH,EAAiB,MAAExb,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC7F,SAASsc,EAAKnO,GAJlB,IAAexN,EAIawN,EAAOqO,KAAO5K,EAAQzD,EAAOxN,QAJ1CA,EAIyDwN,EAAOxN,MAJhDA,aAAiBub,EAAIvb,EAAQ,IAAIub,EAAE,SAAUtK,GAAWA,EAAQjR,EAAQ,IAIjBkR,KAAKwK,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKnZ,OAClE,EACJ,EACI2Z,EAAezB,MAAQA,KAAKyB,aAAgB,SAAUT,EAAStT,GAC/D,IAAsGgU,EAAG/d,EAAGid,EAAGe,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmB,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAE7Z,KAAMma,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WAAa,OAAOlC,IAAM,GAAI2B,EACvJ,SAASM,EAAKpB,GAAK,OAAO,SAAUsB,GAAK,OACzC,SAAcC,GACV,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOqB,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxB,EAAIwB,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAElc,MAAOyc,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGI,EAAEC,QAASle,EAAIye,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcxB,GAAMwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAM,CAAEgB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIA,EAAIwB,EAAI,KAAO,CACpE,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIgB,EAAEI,IAAIlO,KAAKsO,GAAK,KAAO,CAC9DxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC5B,CAAE,MAAO5c,GAAKod,EAAK,CAAC,EAAGpd,GAAIrB,EAAI,CAAG,CAAE,QAAU+d,EAAId,EAAI,CAAG,CACzD,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,EAC9E,CAtBgDF,CAAK,CAACT,EAAGsB,GAAK,CAAG,CAuBrE,EACArY,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQkpqB,yBAAsB,EAC9B,IAAIkiO,EAAc,EAAQ,OACtBC,EAAc,EAAQ,OACtBC,EAAiB,EAAQ,OACzBC,EAAY,EAAQ,OACpB9jO,EAAU,EAAQ,OAClB+jO,EAAW,EAAQ,OACnBxt3B,EAAc,EAAQ,OAItBkrpB,EAAqC,SAAU3ppB,GAE/C,SAAS2ppB,EAAoB/9pB,GACzB,IAAIsU,EAAQF,EAAO3D,KAAKL,OAASA,KAMjC,GALAkE,EAAMkopB,iBAAmB,KACzBlopB,EAAM2opB,cAAgB,KACtB3opB,EAAM0opB,eAAiB,KACvB1opB,EAAMmopB,gBAAkB,KACxBnopB,EAAMgs3B,qBAAuBzt3B,EAAY0t3B,0BACP,iBAAvBvg4B,EAAQ4ilB,WACf,MAAM,IAAIjrkB,MAAM,mCAEpB,IAAIirkB,EAAa5ilB,EAAQ4ilB,WAsBzB,OArBIA,GAAoD,MAAtCA,EAAWA,EAAWp+kB,OAAS,KAC7Co+kB,GAAc,KAElBtukB,EAAMks3B,YAAc59S,EACpBtukB,EAAMms3B,UAAwC,kBAArBzg4B,EAAQguE,UAAyBhuE,EAAQguE,SAClE15D,EAAMos3B,kBAAwD,kBAA7B1g4B,EAAQ2g4B,kBAAiC3g4B,EAAQ2g4B,iBAClFrs3B,EAAMgs3B,qBAAuBtg4B,EAAQ4g4B,qBAAuBts3B,EAAMgs3B,qBAClEhs3B,EAAMus3B,iBAAsD,iBAA5B7g4B,EAAQ8g4B,gBAClC9g4B,EAAQ8g4B,iBACP,EAAIV,EAAUW,yBAA2B,eAAiB,SACjEzs3B,EAAM0s3B,UAAYhh4B,EAAQih4B,UAAY3kO,EAAQ4kO,SAASC,OACvD7s3B,EAAM2g2B,WAAa,IAAIirB,EAAYp5H,UACnCxyvB,EAAM8s3B,aAAe,KACrB9s3B,EAAMoukB,eAAiB,KACvBpukB,EAAM+s3B,sBAAmD,oBAApBl0zB,gBAAkC,IAAIA,gBAAgB,EAAG,GAAKt0E,SAASskB,cAAc,UAC1H7I,EAAMgt3B,uBAAyBht3B,EAAM+s3B,sBAAsB3j2B,WAAW,KAAM,CAAE6j2B,oBAAoB,IAClGjt3B,EAAMkt3B,kBAA+C,oBAApBr0zB,gBAAkC,IAAIA,gBAAgB,EAAG,GAAKt0E,SAASskB,cAAc,UACtH7I,EAAMmt3B,mBAAqBnt3B,EAAMkt3B,kBAAkB9j2B,WAAW,MAC9DppB,EAAMot3B,gBAAoD,iBAA3B1h4B,EAAQ2h4B,eAA8B3h4B,EAAQ2h4B,eAAkBrt3B,EAAM0s3B,YAAc1kO,EAAQ4kO,SAASC,OAAStu3B,EAAY+u3B,iBAAoB/u3B,EAAY+u3B,iBAAmB,EAC5Mtt3B,EAAMut3B,YAAyC,oBAApB10zB,gBAAkC,IAAIA,gBAAgB,EAAG,GAAKt0E,SAASskB,cAAc,UAChH7I,EAAMwt3B,aAAext3B,EAAMut3B,YAAYnk2B,WAAW,MAC3CppB,CACX,CAyQA,OA3SAnE,EAAU4tpB,EAAqB3ppB,GAmC/Bla,OAAOwY,eAAeqrpB,EAAoBvtpB,UAAW,iBAAkB,CAInEvM,IAAK,WACD,OAAOmM,KAAKsx3B,eAChB,EAIAv93B,IAAK,SAAUg6B,GACX,IAAIvqB,GACkB,iBAAXuqB,GAAuBA,EAAS,KACvC6E,QAAQ/lB,KAAK,2CAA2C7e,OAAOyU,EAAY+u3B,iBAAkB,iBAC7Fzj2B,EAAStrB,EAAY+u3B,kBAErBxx3B,KAAKsx3B,kBAAoBvj2B,IACzB/tB,KAAKsx3B,gBAAkBvj2B,EACS,QAA/BvqB,EAAKxD,KAAKqspB,uBAAoC,IAAP7opB,GAAyBA,EAAGygsB,2BAA2B,CAC3FE,qBAAsB,CAClBE,WAAYrksB,KAAKsx3B,mBAIjC,EACA5l2B,YAAY,EACZuL,cAAc,IAOlB02nB,EAAoBvtpB,UAAUux3B,UAAY,WACtC,OAAO5w3B,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAI6ykB,EACJ,OAAOpxkB,EAAYzB,KAAM,SAAUwD,GAC/B,OAAQA,EAAG3B,OACP,KAAK,EAED,OADAgxkB,EAAS86E,EAAoBp7E,SACR,CAAC,EAAa,GAE5B,CAAC,GADRM,EAAS,IAAIk9S,EAAe59S,cACA5oiB,WAAWvpC,KAAKow3B,YAAa3t3B,EAAYmv3B,WAAYnv3B,EAAYov3B,mBAAoBpv3B,EAAYqv3B,0BACjI,KAAK,EACDtu3B,EAAG1B,OACH6rpB,EAAoBp7E,QAAUM,EAC9BrvkB,EAAG3B,MAAQ,EACf,KAAK,EAED,OADA7B,KAAKsykB,eAAiBO,EAAOk/S,cACtB,CAAC,GAEpB,EACJ,EACJ,EAqBApkO,EAAoBvtpB,UAAUq1vB,aAAe,SAAUu8H,EAAkBC,GACrE,IAAIzu3B,EAAIG,EAAIsB,EACZ,OAAOlE,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAIirG,EAAIinxB,EAAgBC,EAAiBjnxB,EAAIorpB,EAAcD,EAAe+7H,EAAYC,EAAYvo2B,EAAKynI,EAAIivF,EAAcD,EACzH,OAAO9+O,EAAYzB,KAAM,SAAU6vL,GAC/B,OAAQA,EAAGhuL,OACP,KAAK,EACD,IAAK8rpB,EAAoBp7E,QACrB,MAAO,CAAC,GAEZ,IAAKy/S,IAAqBC,EACtB,MAAM,IAAI1q3B,MAAM,wCA2CpB,OAzCAvH,KAAK6k2B,WAAWn42B,IAAI,qBACpBsT,KAAK6k2B,WAAWp42B,MAAM,qBACtBw+G,EAAKjrG,KAAKkw3B,qBAAsBgC,EAAiBjnxB,EAAGvkH,MAAOyr4B,EAAkBlnxB,EAAGrkH,OAChFskH,EAAK8mxB,aAA4BM,iBAC3B,CAAE5r4B,MAAOsr4B,EAAiBn8H,WAAYjvwB,OAAQor4B,EAAiBlyL,aAC/DkyL,EAAkB17H,EAAeprpB,EAAGxkH,MAAO2vwB,EAAgBnrpB,EAAGtkH,OAChEoZ,KAAK6spB,gBAAkBolO,IACvBjy3B,KAAK6spB,cAAgBolO,EACrBjy3B,KAAK4spB,eAAiB5spB,KAAK6spB,cACtBv/nB,WAAWttB,KAAK4w3B,YAAc1kO,EAAQ4kO,SAASyB,SAAW,KAAO,UACtC,QAA/B/u3B,EAAKxD,KAAKqspB,uBAAoC,IAAP7opB,GAAyBA,EAAGigP,UACpEzjP,KAAKqspB,gBAAkB,MAEvBrspB,KAAK4w3B,YAAc1kO,EAAQ4kO,SAASC,SAC/B/w3B,KAAKqspB,iBACNrspB,KAAKwy3B,sBAAsBR,EAAkB17H,EAAcD,EAAe67H,EAAgBC,GAE9D,QAA/Bxu3B,EAAK3D,KAAKqspB,uBAAoC,IAAP1opB,GAAyBA,EAAGggsB,oBAGpE3jsB,KAAKox3B,kBAAkB1q4B,QAAU4vwB,IACjCt2vB,KAAKox3B,kBAAkB1q4B,MAAQ4vwB,GAE/Bt2vB,KAAKox3B,kBAAkBxq4B,SAAWyvwB,IAClCr2vB,KAAKox3B,kBAAkBxq4B,OAASyvwB,GAEhCr2vB,KAAKix3B,sBAAsBvq4B,QAAUwr4B,IACrCly3B,KAAKix3B,sBAAsBvq4B,MAAQwr4B,EACnCly3B,KAAKyx3B,YAAY/q4B,MAAQwr4B,GAEzBly3B,KAAKix3B,sBAAsBrq4B,SAAWur4B,IACtCny3B,KAAKix3B,sBAAsBrq4B,OAASur4B,EACpCny3B,KAAKyx3B,YAAY7q4B,OAASur4B,GAE1BH,aAA4BM,kBAC5Bty3B,KAAKqx3B,mBAAmBnj2B,UAAU8j2B,EAAkB,EAAG,GACvDI,EAAapy3B,KAAKox3B,mBAGlBgB,EAAaJ,EAEV,CAAC,EAAahy3B,KAAKyy3B,kBAAkBL,IAChD,KAAK,EAmCD,OAlCAC,EAAaxisB,EAAG/tL,OACZ9B,KAAKqw3B,YACLrw3B,KAAKgx3B,aAAehx3B,KAAKgx3B,eAAiBqB,EACpC,KACAA,GAENry3B,KAAK4w3B,YAAc1kO,EAAQ4kO,SAASC,OACJ,QAA/B9r3B,EAAKjF,KAAKqspB,uBAAoC,IAAPpnpB,GAAyBA,EAAGo5D,OAAOg0zB,EAAWt83B,OAGtFiK,KAAK6k2B,WAAWp42B,MAAM,yBACjBuT,KAAKqw3B,YAAarw3B,KAAKgx3B,cACxBhx3B,KAAK0x3B,aAAazle,aAAaome,EAAY,EAAG,GAElDvo2B,EAAM9pB,KAAK4spB,eACXr7f,EAAKvxJ,KAAK6spB,cAAersa,EAAejvF,EAAG3qK,OAAQ25P,EAAchvF,EAAG7qK,MACpEojC,EAAI2C,OACJ3C,EAAI74B,OAAS,QAAQjD,OAAOgS,KAAKsx3B,gBAAiB,OAClDxn2B,EAAI4o2B,yBAA2B,OAC/B5o2B,EAAIoE,UAAUluB,KAAKyx3B,YAAa,EAAG,EAAGlxoB,EAAaC,GACnD12N,EAAI74B,OAAS,OACb64B,EAAI4o2B,yBAA2B,YAC/B5o2B,EAAIoE,UAAUkk2B,EAAY,EAAG,EAAG7xoB,EAAaC,GAC7C12N,EAAI4o2B,yBAA2B,mBAC/B1y3B,KAAK2spB,eAAeylO,GACpBto2B,EAAI+C,UACJ7sB,KAAK6k2B,WAAWn42B,IAAI,0BAExBsT,KAAK6k2B,WAAWn42B,IAAI,qBACpBsT,KAAK6k2B,WAAWn42B,IAAI,wBAGpBsT,KAAK6k2B,WAAWp42B,MAAM,wBACtBuT,KAAK6k2B,WAAWp42B,MAAM,qBACf,CAAC,GAEpB,EACJ,EACJ,EACAkhqB,EAAoBvtpB,UAAUqy3B,kBAAoB,SAAUL,GACxD,OAAOrx3B,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAIwD,EAAI5c,EAAQF,EAAOm6Z,EAAQ8xe,EAAgBC,EAAgBC,EAAaC,EAAeC,EACvF7u3B,EAAQlE,KACZ,OAAOyB,EAAYzB,KAAM,SAAU2D,GAC/B,OAAQA,EAAG9B,OACP,KAAK,EAqBD,OApBA2B,EAAKxD,KAAKkw3B,qBAAsBtp4B,EAAS4c,EAAG5c,OAAQF,EAAQ8c,EAAG9c,MAC/Dm6Z,EAAS,CACLmye,UAAW,CACPC,MAAO,WAAc,OAAOtlO,EAAoBp7E,QAAQsB,cAAgB,EACxEq/S,KAAM,WAAc,OAAOhv3B,EAAM8s3B,aAAaj73B,IAAM,GAExDkC,OAAQ,CACJg73B,MAAO,WAAc,OAAOly3B,EAAUmD,OAAO,OAAQ,EAAQ,WAAc,OAAOzC,EAAYzB,KAAM,SAAUwD,GAC1G,MAAO,CAAC,EAAcxD,KAAKmz3B,kBAAkBf,GACjD,EAAI,EAAI,EACRc,KAAM,WAAc,OAAOny3B,EAAUmD,OAAO,OAAQ,EAAQ,WAAc,OAAOzC,EAAYzB,KAAM,SAAUwD,GACzG,MAAO,CAAC,EACZ,EAAI,EAAI,IAGhBmv3B,IAAmB3y3B,KAAKgx3B,aACxB4B,EAAiB/xe,EAAOmye,UAAU,GAAGhl4B,OAAO2k4B,IAC5CE,EAAchye,EAAO5oZ,OAAO,GAAGjK,OAAO2k4B,IACtC3y3B,KAAK6k2B,WAAWp42B,MAAM,yBACtBqm4B,EAAgBD,IACV7y3B,KAAKsw3B,kBAA0B,CAAC,EAAa,GAC5C,CAAC,EAAawC,GACzB,KAAK,EACDnv3B,EAAG7B,OACH6B,EAAG9B,MAAQ,EACf,KAAK,EAKD,OAJA7B,KAAK6k2B,WAAWn42B,IAAI,yBACpBsT,KAAK6k2B,WAAWp42B,MAAM,qBACtBsm4B,EAAmBH,IACnB5y3B,KAAK6k2B,WAAWn42B,IAAI,qBACb,CAAC,EAAcsT,KAAKgx3B,cAAgB,IAAIoC,UAAUL,EAAkBrs4B,EAAOE,IAE9F,EACJ,EACJ,EACA+mqB,EAAoBvtpB,UAAUoy3B,sBAAwB,SAAUJ,EAAY97H,EAAcD,EAAe67H,EAAgBC,GACrHny3B,KAAKqspB,iBAAkB,EAAI4jO,EAASv0jB,qBAAqB,CACrDsoY,YAAaouL,EACb1r4B,MAAO4vwB,EACP1vwB,OAAQyvwB,GACTr2vB,KAAKospB,iBAAkB,CACtBp8oB,KAAMhQ,KAAKyspB,0BACZ,CACCy1C,gBAAiB,GAAGl0sB,OAAOkk4B,EAAgB,KAAKlk4B,OAAOmk4B,IACxDny3B,KAAK6spB,cAAe7spB,KAAK6k2B,WAAY7k2B,KAAKqw3B,WAC7Crw3B,KAAKqspB,gBAAgB43C,2BAA2B,CAC5CE,qBAAsB,CAClBE,WAAYrksB,KAAKsx3B,gBACjBltL,WAAY,IAEhBhhd,SAAU,CACN,EACA,KAEJE,cAAe,EACfE,UAAW,UAEnB,EACAmqa,EAAoBvtpB,UAAU+y3B,kBAAoB,SAAUf,GACxD,OAAOrx3B,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAIwD,EAAIG,EAAI0v3B,EAAaC,EAAcxp2B,EAAiByp2B,EAAyBtxd,EACjF,OAAOxga,EAAYzB,KAAM,SAAUiF,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAED,OADW8B,GAAXH,EAAKxD,MAAcix3B,sBAAuBoC,EAAc1v3B,EAAGjd,MAAO4s4B,EAAe3v3B,EAAG/c,OAAQkjC,EAAMtmB,EAAG0t3B,uBAChF,iBADqH1t3B,EAAGit3B,iBAChG,CAAC,EAAa,GACpD,CAAC,EAAah3oB,kBAAkB24oB,EAAY,CAC3CiB,YAAaA,EACbC,aAAcA,EACdE,cAAe,eAE3B,KAAK,EAID,OAHAD,EAA0Btu3B,EAAGnD,OAC7BgoB,EAAIoE,UAAUql2B,EAAyB,EAAG,EAAGF,EAAaC,GAC1DC,EAAwB9l3B,QACjB,CAAC,EAAa,GACzB,KAAK,EACDqc,EAAIoE,UAAUkk2B,EAAY,EAAG,EAAGiB,EAAaC,GAC7Cru3B,EAAGpD,MAAQ,EACf,KAAK,EAGD,OAFAoga,EAAYn4Y,EAAI6gN,aAAa,EAAG,EAAG0opB,EAAaC,GAChD3lO,EAAoBp7E,QAAQa,gBAAgBnxK,EAAUlsa,MAC/C,CAAC,GAEpB,EACJ,EACJ,EACA43pB,EAAoBp7E,QAAU,KACvBo7E,CACX,CA7SwC,CA6StCkiO,EAAYhyT,WACdp5kB,EAAQkpqB,oBAAsBA,C,iCC7W9B,IAAIjujB,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EAKIgq0B,EAAmC,WAenC,SAASA,EAAkBz7hB,EAAU2jU,GACjC,IAAI5ynB,EAAQlE,KAEZlW,OAAO0hC,iBAAiBxrB,KAAM,CAC1Byz3B,cAAe,CACXho2B,UAAU,EACV9lC,OAAO,GAEXsxoB,YAAa,CACTxrmB,UAAU,EACV9lC,OAAO,GAEX+t4B,UAAW,CACP/t4B,MAAOmxoB,KAGfhtoB,OAAOwY,eAAetC,KAAM,WAAY,CACpCra,MAAO,IAAIgR,QAAQ,SAAUC,EAASwK,GAClC+xT,EAAS,SAAUxtU,GACfue,EAAMuv3B,eAAgB,EACtB783B,EAAQjR,EACZ,EAAG,SAAU60P,GACTt2O,EAAMuv3B,eAAgB,EACtBry3B,EAAOo5O,EACX,EAAG,WAAc,OAAOt2O,EAAM+ynB,WAAa,EAC/C,IAER,CAsEA,OAhEA23N,EAAkBxt1B,OAAS,SAAUo5O,GACjC,OAAO,IAAIo0mB,EAAkB,SAAkBh41B,EAASwK,GACpDA,EAAOo5O,EACX,EAAG,WAEH,EACJ,EAMAo0mB,EAAkBh41B,QAAU,SAAUzD,GAClC,OAAO,IAAIy71B,EAAkB,SAAkBh41B,GAC3CA,EAAQzD,EACZ,EAAG,WAEH,EACJ,EAKAy71B,EAAkBxu1B,UAAUuiC,OAAS,WAKjC,OAJI3iC,KAAKyz3B,gBACLzz3B,KAAKi3nB,aAAc,EACnBj3nB,KAAK0z3B,aAEF1z3B,IACX,EAKA4u1B,EAAkBxu1B,UAAUytN,MAAQ,WAChC,IAAIx5N,EAAO,GAAGyG,MAAMuF,KAAKlM,WACrBkuH,EAAUriH,KAAKm3nB,SACnB,OAAO,IAAIy3N,EAAkB,SAAkBh41B,EAASwK,GACpDihH,EAAQwrG,MAAM/sN,MAAMuhH,EAAS6xN,EAAc,GAAIx0O,EAAOrrG,KAAQwC,KAAKD,EAASwK,EAChF,EAAGpB,KAAK0z3B,UACZ,EAMA9kC,EAAkBxu1B,UAAUvJ,KAAO,WAC/B,IAAIxC,EAAO,GAAGyG,MAAMuF,KAAKlM,WACrBkuH,EAAUriH,KAAKm3nB,SACnB,OAAO,IAAIy3N,EAAkB,SAAkBh41B,EAASwK,GACpDihH,EAAQxrH,KAAKiK,MAAMuhH,EAAS6xN,EAAc,GAAIx0O,EAAOrrG,KAAQwC,KAAKD,EAASwK,EAC/E,EAAGpB,KAAK0z3B,UACZ,EAKA9kC,EAAkBxu1B,UAAUwmF,QAAU,WAClC,IAAIvyF,EAAO,GAAGyG,MAAMuF,KAAKlM,WACrBkuH,EAAUriH,KAAKm3nB,SACnB,OAAO,IAAIy3N,EAAkB,SAAkBh41B,EAASwK,GACpDihH,EAAQz7B,QAAQ9lF,MAAMuhH,EAAS6xN,EAAc,GAAIx0O,EAAOrrG,KAAQwC,KAAKD,EAASwK,EAClF,EAAGpB,KAAK0z3B,UACZ,EACO9kC,CACX,CAjHsC,GAkHtCltwB,EAAOj9F,QAAUmq2B,C,gDCzHjB,QAVA,SAAmB/t1B,EAAG++M,GAIpB,IAHA,IAAIppN,GAAS,EACTrD,EAASmB,MAAMuM,KAEVrK,EAAQqK,GACf1N,EAAOqD,GAASopN,EAASppN,GAE3B,OAAOrD,CACT,C,yBCRQ,SAAWtS,GAAU,aAIzB,IAAI4shB,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC5shB,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EC,MACnF,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,wDAAwDF,MAC9D,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNC,EAAG,iBACHE,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERO,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO19D,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIrpC,EAAIqpC,EAAS,GAGjB,OAAOA,GAAUwqe,EAAS7zgB,IAAM6zgB,EAFvBxqe,EAAS,IAAOrpC,IAEsB6zgB,EADvCxqe,GAAU,IAAM,IAAM,OAG1C,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/FyCC,CAAQ,EAAQ,O,+DCHtDw2pB,EAAejxpB,OAAO4W,OA0B1B,QAhBkB,WAChB,SAAS4qC,IAAU,CACnB,OAAO,SAASpmB,GACd,KAAK,OAASA,GACZ,MAAO,CAAC,EAEV,GAAI61nB,EACF,OAAOA,EAAa71nB,GAEtBomB,EAAOlrC,UAAY8kB,EACnB,IAAI/xB,EAAS,IAAIm4C,EAEjB,OADAA,EAAOlrC,eAAYtJ,EACZ3D,CACT,CACF,CAdiB,E,+BCXjB1O,EAAQ89F,YAAa,EAErB,IAAImlB,EAAe,WAAc,SAASl8E,EAAiBz9B,EAAQqkC,GAAS,IAAK,IAAI/sC,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,IAAK,CAAE,IAAIkzE,EAAanmC,EAAM/sC,GAAIkzE,EAAW7sC,WAAa6sC,EAAW7sC,aAAc,EAAO6sC,EAAWthC,cAAe,EAAU,UAAWshC,IAAYA,EAAW9sC,UAAW,GAAM3hC,OAAOwY,eAAevU,EAAQwqE,EAAW/tE,IAAK+tE,EAAa,CAAE,CAAE,OAAO,SAAUovC,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYp8E,EAAiBm8E,EAAYvnG,UAAWwnG,GAAiBC,GAAar8E,EAAiBm8E,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAKf48sB,EAAkBpssB,EAFD,EAAQ,OAMzBqssB,EAAYrssB,EAFD,EAAQ,QAInBw7wB,EAAQ,EAAQ,OAEpB,SAASx7wB,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CAK9F,IAAIqwY,EAAY,WACd,SAASA,EAAUgia,EAAU98e,EAAS2wT,IAJxC,SAAyBnjoB,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAKpJwnG,CAAgB9nG,KAAM2iZ,GAEtB3iZ,KAAK2kzB,SAAWA,GAAY,IAE5B3kzB,KAAK4z3B,SAAW/rjB,GAAW,EAC3B7nU,KAAK6z3B,SAAWr7P,GAAW,GAE3Bx4nB,KAAK8z3B,SAAW,EAAE,SAAU,UAE5B9z3B,KAAKtZ,MAAQ,EACbsZ,KAAKpZ,OAAS,EACdoZ,KAAKu0K,KAAO,EACZv0K,KAAK7C,OAAS,IAAIqnzB,EAAUhiuB,QAAQ,EAAG,GACvCxiF,KAAKmV,MAAQ,CACf,CAwHA,OAtHAwtY,EAAUviZ,UAAUk0K,UAAY,SAAmBC,GACjD,OAAO/uL,KAAKC,IAAI,EAAG8uL,EACrB,EAEAouO,EAAUviZ,UAAU2z3B,UAAY,SAAmBnp2B,GACjD,OAAOplC,KAAKS,IAAI2kC,GAASplC,KAAKU,GAChC,EAEAy8Z,EAAUviZ,UAAUq1e,QAAU,SAAiBw1Q,EAAQs6D,GACrD,OAAO,IAAIhB,EAAgB/huB,QAAQxiF,KAAKg03B,KAAK/oI,EAAO1hiB,IAAKg8lB,GAAYvlzB,KAAKi03B,KAAKhpI,EAAOtpnB,IAAK4jrB,GAC7F,EAEA5ia,EAAUviZ,UAAU4wzB,UAAY,SAAmBniyB,EAAO02xB,GACxD,OAAO,IAAIf,EAAUhiuB,QAAQxiF,KAAKk03B,KAAKrl2B,EAAMlrC,EAAG4h0B,GAAYvlzB,KAAKm03B,KAAKtl2B,EAAMtoC,EAAGg/zB,GACjF,EAGA5ia,EAAUviZ,UAAU4z3B,KAAO,SAAcvyrB,EAAK8jnB,GAC5C,OAAQ,IAAM9jnB,IAAQ8jnB,GAAavlzB,KAAKulzB,WAAa,GACvD,EAKA5ia,EAAUviZ,UAAU6z3B,KAAO,SAActyvB,EAAK4jrB,GAE5C,OAAQ,IADA,IAAM//zB,KAAKytB,GAAKztB,KAAKS,IAAIT,KAAKu+B,IAAIv+B,KAAKytB,GAAK,EAAI0uH,EAAMn8I,KAAKytB,GAAK,QACpDsyyB,GAAavlzB,KAAKulzB,WAAa,GACrD,EAEA5ia,EAAUviZ,UAAU+z3B,KAAO,SAAc5t4B,EAAGg/zB,GAC1C,OAAW,IAAJh/zB,GAAWg/zB,GAAavlzB,KAAKulzB,WAAa,GACnD,EAEA5ia,EAAUviZ,UAAU8z3B,KAAO,SAAcvw4B,EAAG4h0B,GAC1C,IAAIjyvB,EAAK,IAAU,IAAJ3vE,GAAW4h0B,GAAavlzB,KAAKulzB,WAC5C,OAAO,IAAM//zB,KAAKytB,GAAKztB,KAAKkwG,KAAKlwG,KAAKm0F,IAAIrmB,EAAK9tE,KAAKytB,GAAK,MAAQ,EACnE,EAEA0vY,EAAUviZ,UAAUglzB,cAAgB,SAAuBn6D,GACzD,IAAI9qvB,EAAIH,KAAKy1e,QAAQw1Q,GACrB,OAAOjrvB,KAAKgk0B,YAAYn9mB,KAAK7mN,KAAK6uB,MAAMg4L,KAAK1mN,GAAGmnN,QAAQtnN,KAAKmV,OAC/D,EAEAwtY,EAAUviZ,UAAUulzB,cAAgB,SAAuBxlzB,GACzD,IAAIqlB,EAAKxlB,KAAKgk0B,YAAYn9mB,KAAK1mN,GAAGmnN,SAAStnN,KAAKmV,OAChD,OAAOnV,KAAKgxzB,UAAUhxzB,KAAK6uB,MAAM05C,IAAI/iD,GACvC,EAEAkiF,EAAai7S,EAAW,CAAC,CACvBn4Z,IAAK,UACLqJ,IAAK,WACH,OAAOmM,KAAK4z3B,QACd,EACA7/3B,IAAK,SAAawgL,GAChBv0K,KAAK4z3B,SAAWr/sB,EAChBv0K,KAAKu0K,KAAO/uL,KAAKmE,IAAIqW,KAAKu0K,KAAMA,EAClC,GACC,CACD/pL,IAAK,UACLqJ,IAAK,WACH,OAAOmM,KAAK6z3B,QACd,EACA9/3B,IAAK,SAAawgL,GAChBv0K,KAAK6z3B,SAAWt/sB,EAChBv0K,KAAKu0K,KAAO/uL,KAAKkE,IAAIsW,KAAKu0K,KAAMA,EAClC,GACC,CACD/pL,IAAK,YACLqJ,IAAK,WACH,OAAOmM,KAAK2kzB,SAAW3kzB,KAAK4qB,KAC9B,GACC,CACDpgC,IAAK,cACLqJ,IAAK,WACH,OAAO,IAAI0wzB,EAAgB/huB,QAAQ,EAAG,EACxC,GACC,CACDh4F,IAAK,OACLqJ,IAAK,WACH,OAAO,IAAI0wzB,EAAgB/huB,QAAQxiF,KAAKtZ,MAAOsZ,KAAKpZ,OACtD,GACC,CACD4D,IAAK,UACLqJ,IAAK,WACH,OAAQmM,KAAKmV,MAAQ3vB,KAAKytB,GAAK,GACjC,EACAlf,IAAK,SAAagxzB,GAChB/kzB,KAAKmV,QAAS,EAAIw+2B,EAAMrx0B,MAAMyiwB,GAAU,IAAK,KAAOv/zB,KAAKytB,GAAK,GAChE,GACC,CACDzoB,IAAK,OACLqJ,IAAK,WACH,OAAOmM,KAAK26zB,KACd,EACA5m0B,IAAK,SAAawgL,GAChB,IAAI6/sB,EAAQ5u4B,KAAKkE,IAAIlE,KAAKmE,IAAI4qL,EAAMv0K,KAAK6nU,SAAU7nU,KAAKw4nB,SACxDx4nB,KAAK26zB,MAAQy5D,EACbp03B,KAAK4qB,MAAQ5qB,KAAKs0K,UAAU8/sB,GAC5Bp03B,KAAKi+0B,SAAWz41B,KAAKQ,MAAMou4B,GAC3Bp03B,KAAKq03B,aAAeD,EAAQp03B,KAAKi+0B,QACnC,GACC,CACDzz1B,IAAK,IACLqJ,IAAK,WACH,OAAOmM,KAAKg03B,KAAKh03B,KAAK7C,OAAOosN,IAC/B,GACC,CACD/+N,IAAK,IACLqJ,IAAK,WACH,OAAOmM,KAAKi03B,KAAKj03B,KAAK7C,OAAOwkI,IAC/B,GACC,CACDn3I,IAAK,QACLqJ,IAAK,WACH,OAAO,IAAI0wzB,EAAgB/huB,QAAQxiF,KAAKzZ,EAAGyZ,KAAKrc,EAClD,KAGKg/Z,CACT,CAzIgB,GA2IhBl+Z,EAAA,QAAkBk+Z,C,YC3JlBjhU,EAAOj9F,QAAU,SAAkBwiP,EAAMqtpB,GACrC,GAAIrtpB,GAAQqtpB,EAER,GADArtpB,EAAKstpB,OAASD,EACe,mBAAlBxq4B,OAAO4W,OAEdumO,EAAK7mO,UAAYtW,OAAO4W,OAAO4z3B,EAAUl03B,UAAW,CAChDK,YAAa,CACT9a,MAAOshP,EACPv7M,YAAY,EACZD,UAAU,EACVwL,cAAc,SAIrB,CAED,IAAIu91B,EACA,WACA,EAGJA,EAASp03B,UAAYk03B,EAAUl03B,UAC/B6mO,EAAK7mO,UAAY,IAAIo03B,EACrBvtpB,EAAK7mO,UAAUK,YAAcwmO,CACjC,CAER,C,+BC/BA,IAAIv9I,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,cAAgB,CAChF0lqB,UAAW,SAAmBzt2B,GAC5B,OAAO8nM,EAAW9uN,KAAM,OAAQ,QAASgnB,EAC3C,G,kBCVF,IAAI25mB,EAAkB,EAAQ,OAC1Bp4a,EAAe,EAAQ,OA0B3B7mI,EAAOj9F,QAVP,SAAS+iH,EAAY7hH,EAAOk7D,EAAO6oM,EAAStwB,EAAY7yL,GACtD,OAAI5gD,IAAUk7D,IAGD,MAATl7D,GAA0B,MAATk7D,IAAmB0nK,EAAa5iO,KAAW4iO,EAAa1nK,GACpEl7D,GAAUA,GAASk7D,GAAUA,EAE/B8/kB,EAAgBh7oB,EAAOk7D,EAAO6oM,EAAStwB,EAAY5xH,EAAajhE,GACzE,C,kBCzBA,IAAIt8B,EAAQ,EAAQ,OAEpBxlB,EAAQiw4B,eAAiB,SAASrg3B,GAChC,OAAKA,GAAUA,EAAM/pB,OAId+pB,EAAM/pB,OAAO,SAASsP,EAAGC,GAC9B,IAAI863B,EAAWrg4B,MAAMyb,QAAQnW,GACzBg73B,EAAWtg4B,MAAMyb,QAAQlW,GAE7B,OAAI863B,GAAYC,EACPh73B,EAAE5L,OAAO6L,GAEd863B,GACF/63B,EAAE9F,KAAK+F,GAEAD,GAELg73B,EACK,CAACh73B,GAAG5L,OAAO6L,GAGb,CAACD,EAAGC,EACb,GApBSwa,CAqBX,EAEA5vB,EAAQklQ,OAAS,SAASt1O,GACxB,IAAKA,EACH,OAAO,EAGT,IAAK,IAAIhvB,EAAI,EAAGA,EAAIgvB,EAAMjgB,SAAU/O,EAClC,GAAIiP,MAAMyb,QAAQsE,EAAMhvB,IACtB,OAAO,EAIX,OAAO,CACT,EAEAZ,EAAQq1G,QAAU,WAGhB,IAFA,IAAI3mG,EAAS1O,EAAQq5G,YAAYh9F,MAAM,KAAM3M,YAErC1P,EAAQklQ,OAAOx2P,IACrBA,EAAS1O,EAAQiw4B,eAAevh4B,GAGlC,OAAOA,CACT,EAEA1O,EAAQq5G,YAAc,SAASzpG,GAC7B,IAAIlB,EAAS,GAMb,OAJA1O,EAAQo5G,UAAUxpG,EAAM,SAAS1O,GAC/BwN,EAAOW,KAAKnO,EACd,GAEOwN,CACT,EAEA1O,EAAQkgD,QAAU,WAEhB,OADsB3kC,KAAK85F,QAAQh5F,MAAM,KAAM3M,WACxBlD,OAAO,SAASssC,GACrC,MAAqB,iBAAPA,CAChB,EACF,EAEA94C,EAAQuv2B,WAAa,SAAS/wzB,GAC5B,IAAIq4D,EAAQ,KACZ,OAAO91G,KAAK+F,MAAM03C,EAASq4D,GAASA,CACtC,EAEA72G,EAAQow4B,UAAY,SAAS7/wB,GAC3B,GAAoB,kBAATA,EACT,OAAOA,EAGT,GAAIA,aAAgBztG,MAClB,OAAOytG,EAGT,GAAoB,iBAATA,EACT,OAAgB,IAATA,EAGT,GAAoB,iBAATA,EAAmB,CAC5B,IAAIgxQ,EAAKhxQ,EAAKriG,cACd,GAAW,SAAPqzW,EACF,OAAO,EAGT,GAAW,UAAPA,EACF,OAAO,CAEX,CAEA,OAAIhxQ,aAAgBnsG,OAAS9iB,MAAMivH,IAI5B/qG,EAAMtkB,KACf,EAEAlB,EAAQ4wG,YAAc,SAASvxG,GAC7B,YAAegT,IAAXhT,GAAmC,KAAXA,GAGvBiC,MAAMjC,GAFFmmB,EAAMtkB,MAGNgrB,WAAW7sB,EAItB,EAEAW,EAAQo1G,iBAAmB,SAASjjE,GAClC,IAAInnC,EAMA0oC,EAJJ,IAAKvB,GAA8B,KAAtBnnC,EAAMmnC,EAAIxiC,QACrB,OAAO6V,EAAMtkB,MAKf,KAAO8J,KAAO,CAEZ,IADA0oC,EAAS1zC,EAAQ4wG,YAAYz+D,EAAInnC,OAClBwa,EAAMtkB,MACnB,OAAOwyC,EAETvB,EAAInnC,GAAO0oC,CACb,CAEA,OAAOvB,CACT,EAEAnyC,EAAQqw4B,YAAc,SAASz8Z,GAC7B,IAKI08Z,EAHJ,IAAK18Z,GAAkC,IAAnBA,EAAOjke,OACzB,OAAO6V,EAAMtkB,MAIf,IAAK,IAAIN,EAAI,EAAGA,EAAIgze,EAAOjke,OAAQ/O,IAIjC,GAHA0v4B,EAAQtw4B,EAAQo1G,iBAAiBw+X,EAAOhze,IACxCgze,EAAOhze,GAAK0v4B,EAERA,aAAiBxt3B,MACnB,OAAOwt3B,EAIX,OAAO18Z,CACT,EAEA,IAAI28Z,EAAQ,IAAIns3B,KAAKA,KAAK6tK,IAAI,KAAM,EAAG,IACvCjyL,EAAQ2wJ,UAAY,SAAS9zG,GAC3B,IAAKv7C,MAAMu7C,GAAO,CAChB,GAAIA,aAAgBz4B,KAClB,OAAO,IAAIA,KAAKy4B,GAElB,IAAI/9C,EAAI4iC,SAASmb,EAAM,IACvB,OAAI/9C,EAAI,EACC0mB,EAAMg0B,IAEX16C,GAAK,GACA,IAAIslB,KAAKms3B,EAAMvvxB,UAAsB,OAATliH,EAAI,IAElC,IAAIslB,KAAKms3B,EAAMvvxB,UAAsB,OAATliH,EAAI,GACzC,CACA,MAAoB,iBAAT+9C,IACTA,EAAO,IAAIz4B,KAAKy4B,GACXv7C,MAAMu7C,IAINr3B,EAAMtkB,MAHF27C,CAIb,EAEA78C,EAAQ81Y,eAAiB,SAAS3jW,GAGhC,IAFA,IACIuB,EADA1oC,EAAMmnC,EAAIxiC,OAEP3E,KAAO,CAEZ,IADA0oC,EAASn4B,KAAKo1I,UAAUx+G,EAAInnC,OACbwa,EAAMtkB,MACnB,OAAOwyC,EAETvB,EAAInnC,GAAO0oC,CACb,CACA,OAAOvB,CACT,EAEAnyC,EAAQuxG,WAAa,WAEnB,IADA,IAAIn1F,EAAI1M,UAAUC,OACXyM,KACL,GAAI1M,UAAU0M,aAAc0G,MAC1B,OAAO,EAGX,OAAO,CACT,EAEA9iB,EAAQiv2B,qBAAuB,SAAS98zB,GAGtC,IAFA,IACI2G,EADA18B,EAAI+1B,EAAIxiC,OAELyM,KAEL,GAAkB,iBADlB08B,EAAK3G,EAAI/1B,IAIT,IAAW,IAAP08B,EAIJ,IAAW,IAAPA,GAIJ,GAAkB,iBAAPA,EAAiB,CAC1B,IAAI0F,EAASjjC,KAAKq1F,YAAY93D,GAC1B0F,aAAkB17B,MACpBqvB,EAAI/1B,GAAK,EAET+1B,EAAI/1B,GAAKoiC,CAEb,OAVErM,EAAI/1B,GAAK,OAJT+1B,EAAI/1B,GAAK,EAgBb,OAAO+1B,CACT,EAEAnyC,EAAQ+qB,KAAO,SAAS6E,EAAOjC,GAE7B,OADAA,EAAMA,GAAO,EACRiC,GAAgC,mBAAhBA,EAAMvZ,MAGpBuZ,EAAMvZ,MAAMsX,GAFViC,CAGX,EAEA5vB,EAAQg9C,QAAU,SAASptB,EAAOjC,GAEhC,OADAA,EAAMA,GAAO,EACRiC,GAAgC,mBAAhBA,EAAMvZ,MAGpBuZ,EAAMvZ,MAAM,EAAGuZ,EAAMjgB,OAASge,GAF5BiC,CAGX,EAEA5vB,EAAQo5G,UAAY,SAASxpF,EAAOurM,GAGlC,IAFA,IAAIppN,GAAS,EAAGpC,EAASigB,EAAMjgB,SAEtBoC,EAAQpC,IAC8B,IAAzCwrN,EAASvrM,EAAM7d,GAAQA,EAAO6d,KAKpC,OAAOA,CACT,EAEA5vB,EAAQ65P,UAAY,SAAS+5O,GAC3B,OAAIA,EAIGA,EAAO,GAAGtle,IAAI,SAASu5E,EAAKjnF,GACjC,OAAOgze,EAAOtle,IAAI,SAASk5E,GACzB,OAAOA,EAAI5mF,EACb,EACF,GAPS4kB,EAAMtkB,KAQjB,C,YCvQA,IADA,IAAIsv4B,EAAY,GACP5v4B,EAAI,EAAGA,EAAI,MAAOA,EACzB4v4B,EAAU5v4B,IAAMA,EAAI,KAAO2B,SAAS,IAAImrH,OAAO,GAmBjDzwB,EAAOj9F,QAhBP,SAAqBo2I,EAAKj2I,GACxB,IAAIS,EAAIT,GAAU,EACdsw4B,EAAMD,EAEV,MAAO,CACLC,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MACvB6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MAAO,IAC9B6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MAAO,IAC9B6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MAAO,IAC9B6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MAAO,IAC9B6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MACvB6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,MACvB6v4B,EAAIr6vB,EAAIx1I,MAAO6v4B,EAAIr6vB,EAAIx1I,OACtB6Y,KAAK,GACV,C,qJCfIi33B,EAAuB,aAC3B,SAAU/p4B,EAAMynH,GACd,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBoJ,EAAU9nH,EAAK8nH,QACfu2H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,UAAW,OAEjF8pC,GAAS,QAAmB49E,EAAU,YAC1C,OAAoB,gBAAoB62H,GAAW,OAAS,CAC1D92H,IAAKA,EACL/I,UAAW,IAAWoJ,EAAUh+E,EAAS,IAAMg+E,EAAUh+E,EAAQ40E,IAChE13E,GACL,GACA+i2B,EAAQ9ssB,YAAc,UACtB8ssB,EAAQ97qB,aAnBW,CACjBnmG,QAAS,MAmBX,UChBA,IAAIkixB,GAAgB,EAAAC,EAAA,GAAiB,MACjCC,GAAgB,EAAAD,EAAA,GAAiB,MACjCE,GAAW,EAAAnpX,EAAA,GAAmB,aAC9BopX,GAAY,EAAAppX,EAAA,GAAmB,aAAc,CAC/CziS,UAAWyrpB,IAETK,GAAe,EAAArpX,EAAA,GAAmB,gBAAiB,CACrDziS,UAAW2rpB,IAETI,GAAW,EAAAtpX,EAAA,GAAmB,YAAa,CAC7CziS,UAAW,MAETgspB,GAAW,EAAAvpX,EAAA,GAAmB,YAAa,CAC7CziS,UAAW,MAETispB,GAAa,EAAAxpX,EAAA,GAAmB,eAChCypX,GAAa,EAAAzpX,EAAA,GAAmB,eAChC0pX,GAAiB,EAAA1pX,EAAA,GAAmB,oBAIpC2pX,EAAoB,aAAiB,SAAU3q4B,EAAMynH,GACvD,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB+hV,EAAKzgc,EAAKygc,GACV/7Z,EAAO1kC,EAAK0kC,KACZwrB,EAASlwD,EAAKkwD,OACd5tD,EAAOtC,EAAKsC,KACZ8pH,EAAWpsH,EAAKosH,SAChBiyH,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,KAAM,OAAQ,SAAU,OAAQ,WAAY,OAElH8pC,GAAS,QAAmB49E,EAAU,QACtCkjxB,GAAc,IAAAp23B,SAAQ,WACxB,MAAO,CACLq23B,mBAAoB/g2B,EAAS,UAEjC,EAAG,CAACA,IACJ,OAAoB,gBAAoBgh2B,EAAA,EAAYl4iB,SAAU,CAC5Dr4V,MAAOqw4B,GACO,gBAAoBrspB,GAAW,OAAS,CACtD92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAW50E,EAAQ22Z,GAAM,MAAQA,EAAI/7Z,GAAQ,QAAUA,EAAMwrB,GAAU,UAAYA,KACvG5tD,EAGJ,gBAAoB6n4B,EAAU,KAAM/9wB,GAAYA,GAClD,GACAu+wB,EAAK1tsB,YAAc,OACnB0tsB,EAAK18qB,aAjCc,CACjB3rN,MAAM,GAiCRqo4B,EAAKI,IAAM,EACXJ,EAAKxnzB,MAAQinzB,EACbO,EAAKK,SAAWX,EAChBM,EAAKxlgB,KAAOglgB,EACZQ,EAAKl4Q,KAAO63Q,EACZK,EAAK/5iB,KAAO25iB,EACZI,EAAKtlgB,OAASmlgB,EACdG,EAAKM,OAASR,EACdE,EAAKO,WAAaR,EAClB,S,+BCrEA,IAAIn/nB,EAAW,EAAQ,OAEnBkqF,EAAavgV,UAEjBohF,EAAOj9F,QAAU,SAAUg9G,GACzB,GAAIk1J,EAASl1J,GACX,MAAM,IAAIo/O,EAAW,iDACrB,OAAOp/O,CACX,C,+BCRA,IAAIpB,EAAc,EAAQ,OACtBuzN,EAAW,EAAQ,OACnB5sU,EAAW,EAAQ,KACnBogQ,EAAU,EAAQ,OAClBn4B,EAAyB,EAAQ,OAEjCs4B,EAASlnJ,EAAY+mJ,GACrB9zI,EAAcjT,EAAY,GAAGvlG,OAC7BguD,EAAOtjE,KAAKsjE,KAGZ2pU,EAAe,SAAU8jgB,GAC3B,OAAO,SAAU5jgB,EAAO10J,EAAWu4pB,GACjC,IAIIC,EAASC,EAJT/72B,EAAI3zB,EAASioO,EAAuB0jK,IACpCgkgB,EAAe/ikB,EAAS31F,GACxB24pB,EAAej82B,EAAEvmB,OACjByi4B,OAAyB//3B,IAAf0/3B,EAA2B,IAAMxv4B,EAASwv4B,GAExD,OAAIG,GAAgBC,GAA4B,KAAZC,EAAuBl82B,IAE3D+72B,EAAenvoB,EAAOsvoB,EAAS/t0B,GAD/B2t0B,EAAUE,EAAeC,GACqBC,EAAQzi4B,UACrCA,OAASqi4B,IAASC,EAAepjxB,EAAYojxB,EAAc,EAAGD,IACxEF,EAAS572B,EAAI+72B,EAAeA,EAAe/72B,EACpD,CACF,EAEA+mE,EAAOj9F,QAAU,CAGfgI,MAAOgmY,GAAa,GAGpB/lY,IAAK+lY,GAAa,G,+BChCpB,IAAIqkgB,EAA+B,EAAQ,OACvCC,EAAkC,EAAQ,OAC1CC,EAA6B,EAAQ,OAkCzCt1yB,EAAOj9F,QAnBH,SAAuC+e,GACnC,IAAIG,EAAKH,EAAGyz3B,UAAWA,OAAmB,IAAPtz3B,EAAgB,KAAOA,EAAIsB,EAAKzB,EAAGwlgB,aAAcA,OAAsB,IAAP/jgB,EAAgB,KAAOA,EAAIgmG,EAAKznG,EAAG0z3B,QAASA,OAAiB,IAAPjsxB,EAAgB,KAAOA,EAChLnhH,OAAO0hC,iBAAiBxrB,KAAM,CAC1Bi33B,UAAW,CACPtx4B,MAAOsx4B,EAAY,IAAIH,EAA6BG,GAAa,KACjEvr2B,YAAY,GAEhBs9e,aAAc,CACVrjhB,MAAOqjhB,EAAe,IAAI+tX,EAAgC/tX,GAAgB,KAC1Et9e,YAAY,GAEhBwr2B,QAAS,CACLvx4B,MAAOux4B,EAAU,IAAIF,EAA2BE,GAAW,KAC3Dxr2B,YAAY,IAGxB,C,+BCjCJ,IAAIjkC,EAAS,EAAQ,OAErBi6F,EAAOj9F,QAAUgD,C,+BCFjB,IAAIgopB,EAAuB,gBACvBxvhB,EAAQ,EAAQ,OAChBqnf,EAAc,EAAQ,OAM1B5lhB,EAAOj9F,QAAU,SAAUugd,GACzB,OAAO/kV,EAAM,WACX,QAASqnf,EAAYtiK,MANf,cAOGA,MACHyqM,GAAwBnoC,EAAYtiK,GAAazxc,OAASyxc,CAClE,EACF,C,yBCNQ,SAAWnkd,GAAU,aAIzB,IAAII,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJG,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGCP,EAAOG,aAAa,KAAM,CAC/BC,OAAQA,EACRE,YAAaF,EACbG,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqCJ,MAAM,KACxDM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,cAAe,QACfC,KAAM,SAAUC,GACZ,MAAO,OAASA,CACpB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,KAEA,IAEf,EACAG,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACNC,EAAG,iBACHC,GAAI,cACJC,EAAG,WACHC,GAAI,YACJC,EAAG,aACHC,GAAI,cACJC,EAAG,WACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAE,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,KAAM,IAChC,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA9FyCC,CAAQ,EAAQ,O,+BCL1D,IAAImlG,EAAI,EAAQ,OACZu2B,EAAQ,EAAQ,OAChB5M,EAAW,EAAQ,OACnB2G,EAAc,EAAQ,OAS1BtwB,EAAE,CAAE37F,OAAQ,OAAQm3B,OAAO,EAAM20L,MAAO,EAAGh5G,OAP9Bof,EAAM,WACjB,OAAkC,OAA3B,IAAIp3G,KAAKvjB,KAAKu4N,UAC2D,IAA3Eh1M,KAAKzI,UAAUy9M,OAAOx9M,KAAK,CAAEugG,YAAa,WAAc,OAAO,CAAG,GACzE,IAI6D,CAE3Di9G,OAAQ,SAAgBrzN,GACtB,IAAIswB,EAAIu4F,EAASrzG,MACbm33B,EAAKn9wB,EAAYl/F,EAAG,UACxB,MAAoB,iBAANq82B,GAAmB/m3B,SAAS+m3B,GAAar82B,EAAE8lF,cAAT,IAClD,G,+BClBF,IAAIn5G,EAAS,EAAQ,OAErBi6F,EAAOj9F,QAAUgD,C,+BCFjB,IAAIwoB,EAAW,EAAQ,OACnBuxE,EAAU,EAAQ,OAGlBq8J,EAFkB,EAAQ,MAElBr8I,CAAgB,SAI5B9f,EAAOj9F,QAAU,SAAUg9G,GACzB,IAAIk1J,EACJ,OAAO1mP,EAASwxF,UAAmC3qG,KAA1B6/P,EAAWl1J,EAAGo8I,MAA0B8Y,EAA2B,WAAhBn1K,EAAQigB,GACtF,C,iCCVA,IAAI/B,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EAYA,SAASy3xB,IACL,SAAU9o4B,WAAaA,UAAU+o4B,gBAAkB/o4B,UAAU+o4B,eAAiB,EAClF,CAKA,SAASl0E,IACL,OAAOi0E,KAAoBjw4B,OAAOylV,OAAOlmV,OAAS,MAAQ,aAAaxE,KAAKoM,UAAUC,YAC/E,OAAOrM,KAAKoM,UAAUC,YACtB,OAAOrM,KAAKoM,UAAU+6B,UACjC,CAKA,SAAS+5xB,IACL,OAAOg0E,KAAoBjw4B,OAAOylV,OAAOlmV,OAAS,MAAQ,aAAaxE,KAAKoM,UAAUC,YAC/E,SAASrM,KAAKoM,UAAUC,YACxB,SAASrM,KAAKoM,UAAU+6B,UACnC,CAiGAq4D,EAAOj9F,QAAU,CACb2mqB,UA7HJ,WACI,MAAO,UAAUlpqB,KAAKoM,UAAUC,UACpC,EA4HIi+N,MA9FJ,WACI,OAAO22lB,KAAYC,GACvB,EA6FID,OAAQA,EACRC,SAAUA,EACV/3J,SA1FJ,WACI,MAAO,OAAOnpqB,KAAKoM,UAAUC,UACjC,EAyFI+8pB,kBAnFJ,SAA2BlpQ,GACvB,MAAmB,WAAZA,GAAwB,OAAOlga,KAAKoM,UAAUC,aAAiC,oBAAXujO,aAAoD,IAAnBA,OAAOyR,QACvH,EAkFIiob,oBAzCJ,SAA6BppQ,GACzB,MAAgB,WAAZA,EACO,KAEP,UAAW9zZ,UACJ,QAEJ,CAAC,OAAQ,OAAOuM,KAAK,SAAUtH,GAClC,OAAOjF,UAAUC,UAAUnG,cAAcutC,SAASpiC,EACtD,IAAM,IACV,EAgCIg4pB,uBA1EJ,SAAgCnpQ,GAE5B,GAAgB,WAAZA,EACA,OAAO,KAGX,GAAI,UAAW9zZ,UACX,MAAO,QAIX,IAII2jC,EAmCR,SAAoCnuC,GAGhC,IAFA,IAAIwz4B,EAA2B,GAC3BC,EAAa,GACRly4B,EAAI,EAAGA,EAAIvB,EAAOsQ,OAAQ/O,IAC/B,GAAkB,MAAdvB,EAAOuB,GACPiy4B,EAAyBxj4B,KAAKzO,QAE7B,GAAkB,MAAdvB,EAAOuB,IAAciy4B,EAAyBlj4B,OAAS,EAAG,CAC/D,IAAIoj4B,EAA0BF,EAAyBj13B,MACf,IAApCi13B,EAAyBlj4B,QACzBmj4B,EAAWzj4B,KAAKhQ,EAAOqlG,UAAUquyB,EAAyBny4B,EAAI,GAEtE,CAEJ,OAAOky4B,CACX,CAtDkCE,CAA2Bnp4B,UAAUC,WACrBjE,OAAO,SAAUiE,EAAW46F,GAAa,OAAO56F,EAAUxK,QAAQolG,EAAW,GAAK,EAAG76F,UAAUC,WAG/GvK,MAAM,YAAc,GAOlD,OANS07G,EAAOztE,EAAQl/B,IAAI,SAAU2k4B,GAClC,OAAOA,EAAex24B,MAAM,KAAK,GAAGkH,aACxC,IAAuB0S,MAAM,GAITD,KAAK,SAAUtH,GAC/B,OAAQ,CAAC,SAAU,SAAU,UAAUoiC,SAASpiC,EACpD,IAAM,IACV,E,+BCxGA,IAAI8M,EAAO,EAAQ,OACfy/G,EAAS,EAAQ,OACjBjqD,EAAgB,EAAQ,MACxB8h0B,EAAuB,EAAQ,OAC/BC,EAAkC,EAAQ,OAE1Cl7W,EAAkB5qf,OAAO1xB,UAE7BshF,EAAOj9F,QAAUkz4B,EAAqBE,QAAU,SAAUp2xB,GACxD,OAAOA,EAAGmjB,KACZ,EAAI,SAAUnjB,GACZ,OAASk2xB,EAAqBE,UAAWhi0B,EAAc6md,EAAiBj7a,IAAQqe,EAAOre,EAAI,SAEvFA,EAAGmjB,MADHvkH,EAAKu33B,EAAiCn2xB,EAE5C,C,oHCVI4lmB,EAAe,CAAC,KAAM,KAAM,KAAM,KAAM,MACxCywL,EAAmB,aACvB,SAAU1s4B,EAAMynH,GACd,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB2/H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,OAEtE8pC,GAAS,QAAmB49E,EAAU,OACtCilxB,EAAQ,GACR1qxB,EAAU,GA2Bd,OA1BAg6lB,EAAar1sB,QAAQ,SAAUy1sB,GAC7B,IAEIxmnB,EACAr8F,EACAiO,EAJA+mT,EAAYxnR,EAAMq1qB,GAMtB,UALOr1qB,EAAMq1qB,GAKY,iBAAd7tZ,GAAuC,MAAbA,EAAmB,CACtD,IAAIo+kB,EAAkBp+kB,EAAU34N,KAChCA,OAA2B,IAApB+2yB,GAAoCA,EAC3Cpz4B,EAASg1T,EAAUh1T,OACnBiO,EAAQ+mT,EAAU/mT,KACpB,MACEouF,EAAO24N,EAGT,IAAI8tZ,EAAqB,OAAbD,EAAoB,IAAMA,EAAW,GAC7CxmnB,GAAM82yB,EAAMjk4B,MAAc,IAATmtF,EAAgB,GAAK/rD,EAASwyqB,EAAQ,GAAKxyqB,EAASwyqB,EAAQ,IAAMzmnB,GAC1E,MAATpuF,GAAew6G,EAAQv5G,KAAK,QAAU4zsB,EAAQ,IAAM70sB,GAC1C,MAAVjO,GAAgByoH,EAAQv5G,KAAK,SAAW4zsB,EAAQ,IAAM9itB,EAC5D,GAEKmz4B,EAAM3j4B,QACT2j4B,EAAMjk4B,KAAKohC,GAGO,gBAAoBy0M,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL/I,UAAW,eAAiB,EAAQ,CAACA,GAAW97G,OAAO+p4B,EAAO1qxB,MAElE,GACAyqxB,EAAIzvsB,YAAc,MAClB,S,YC9CA3mG,EAAOj9F,QAAU,SAA+BoqC,EAAO+pG,EAAInsI,EAAOC,GAC9D,IAAInG,EAAIsoC,EAAM,GAAIlrC,EAAIkrC,EAAM,GACxBuR,GAAS,OACCtpC,IAAVrK,IAAqBA,EAAQ,QACrBqK,IAARpK,IAAmBA,EAAMksI,EAAGxkI,QAEhC,IADA,IAAI3E,EAAM/C,EAAMD,EACPpH,EAAI,EAAG2gC,EAAIv2B,EAAM,EAAGpK,EAAIoK,EAAKu2B,EAAI3gC,IAAK,CAC3C,IAAIwzI,EAAKD,EAAGvzI,EAAEoH,GAAO,GAAIqsI,EAAKF,EAAGvzI,EAAEoH,GAAO,GACtCssI,EAAKH,EAAG5yG,EAAEv5B,GAAO,GAAIusI,EAAKJ,EAAG5yG,EAAEv5B,GAAO,GACxBqsI,EAAKn1I,GAAQq1I,EAAKr1I,GAC5B4C,GAAKwyI,EAAKF,IAAOl1I,EAAIm1I,IAAOE,EAAKF,GAAMD,IAChCz4F,GAAUA,EAC7B,CACA,OAAOA,CACX,C,qCChBA,IACQtgC,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEJ1W,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQwz4B,qCAAkC,EAC1C,IAAIhsO,EAAwB,EAAQ,OAChCxppB,EAAc,EAAQ,OACtByppB,EAAU,EAAQ,OAkDlB+rO,EAAiD,SAAUj03B,GAO3D,SAASi03B,EAAgCro4B,GACrC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMpQ,IAAYoQ,KAK1C,OAJAkE,EAAMg03B,kBAAoBz13B,EAAY013B,mBAEtCj03B,EAAMixY,MAAQ,kCACdjxY,EAAMk03B,iBAAmBxo4B,EAAQwo4B,iBAC1Bl03B,CACX,CAgCA,OA7CAnE,EAAUk43B,EAAiCj03B,GAc3Cla,OAAOwY,eAAe213B,EAAgC733B,UAAW,mBAAoB,CAIjFvM,IAAK,WACD,OAAOmM,KAAKk43B,iBAChB,EAIAnk4B,IAAK,SAAUg6B,GACNA,IACD6E,QAAQ/lB,KAAK,6CAA6C7e,OAAOyU,EAAY013B,mBAAoB,iBACjGpq2B,EAAStrB,EAAY013B,oBAEzBn43B,KAAKk43B,kBAAoBnq2B,CAC7B,EACArC,YAAY,EACZuL,cAAc,IAElBgh2B,EAAgC733B,UAAUqspB,uBAAyB,WAC/D,OAAOP,EAAQQ,mBAAmBzyP,IACtC,EACAg+d,EAAgC733B,UAAUuspB,eAAiB,SAAUylO,GACjE,GAAKpy3B,KAAK4spB,eAAV,CAGA,IAAI9ioB,EAAM9pB,KAAK4spB,eACf9ioB,EAAI74B,OAAS,QAAQjD,OAAOgS,KAAKk43B,kBAAmB,OACpDpu2B,EAAIoE,UAAUkk2B,EAAY,EAAG,EAH7B,CAIJ,EACO6F,CACX,CA/CoD,CA+ClDhsO,EAAsB0B,qBACxBlpqB,EAAQwz4B,gCAAkCA,C,2TCrH/BI,EAAiC,gBAAoB,MCI5DC,EAJJ,SAA0Bpp3B,GACxBA,GACF,EAQWqp3B,EAAW,WACpB,OAAOD,CACT,ECuDIE,EAAgB,CAClBpg0B,OAAQ,WAAmB,EAC3BvkE,IAAK,WACH,MAAO,EACT,GAEK,SAAS4k4B,EAAmB/osB,EAAOgpsB,GACxC,IAAInvM,EACAv1pB,EAAYwk2B,EAWhB,SAASG,IACHC,EAAaC,eACfD,EAAaC,eAEjB,CAMA,SAASC,IACFvvM,IACHA,EAAcmvM,EAAYA,EAAUK,aAAaJ,GAAuBjpsB,EAAMi0L,UAAUg1gB,GACxF3k2B,EAhGN,WACE,IAAIsk2B,EAAQC,IACR/p0B,EAAQ,KACRta,EAAO,KACX,MAAO,CACL6mB,MAAO,WACLvM,EAAQ,KACRta,EAAO,IACT,EACAkkB,OAAQ,WACNkg0B,EAAM,WAGJ,IAFA,IAAIzk2B,EAAW26B,EAER36B,GACLA,EAAS3kB,WACT2kB,EAAWA,EAAS/rC,IAExB,EACF,EACA+L,IAAK,WAIH,IAHA,IAAImgC,EAAY,GACZH,EAAW26B,EAER36B,GACLG,EAAUlgC,KAAK+/B,GACfA,EAAWA,EAAS/rC,KAGtB,OAAOksC,CACT,EACA2vV,UAAW,SAAmBz0W,GAC5B,IAAI+4f,GAAe,EACfp0e,EAAWqgB,EAAO,CACpBhlC,SAAUA,EACVpnB,KAAM,KACN+yC,KAAMqZ,GASR,OANIrgB,EAASgH,KACXhH,EAASgH,KAAK/yC,KAAO+rC,EAErB26B,EAAQ36B,EAGH,WACAo0e,GAA0B,OAAVz5c,IACrBy5c,GAAe,EAEXp0e,EAAS/rC,KACX+rC,EAAS/rC,KAAK+yC,KAAOhH,EAASgH,KAE9BqZ,EAAOrgB,EAASgH,KAGdhH,EAASgH,KACXhH,EAASgH,KAAK/yC,KAAO+rC,EAAS/rC,KAE9B0mE,EAAQ36B,EAAS/rC,KAErB,CACF,EAEJ,CAkCkBkx4B,GAEhB,CAWA,IAAIJ,EAAe,CACjBG,aApCF,SAAsBll2B,GAEpB,OADAil2B,IACO9k2B,EAAU2vV,UAAU9vV,EAC7B,EAkCEol2B,iBAhCF,WACEjl2B,EAAUokC,QACZ,EA+BEug0B,oBAAqBA,EACrB1wX,aAxBF,WACE,OAAOhhb,QAAQsimB,EACjB,EAuBEuvM,aAAcA,EACdI,eAfF,WACM3vM,IACFA,IACAA,OAAczyrB,EACdk9B,EAAU+mC,QACV/mC,EAAYwk2B,EAEhB,EASEW,aAAc,WACZ,OAAOnl2B,CACT,GAEF,OAAO4k2B,CACT,CCpHO,IAAIrqM,EAA8C,oBAAXpnsB,aAAqD,IAApBA,OAAOsB,eAAqE,IAAlCtB,OAAOsB,SAASskB,cAAgC,EAAA6xU,gBAAkB,EAAA/+U,UC2C3L,QA9CA,SAAkBzU,GAChB,IAAIskM,EAAQtkM,EAAKskM,MACbvmK,EAAU/9B,EAAK+9B,QACfquF,EAAWpsH,EAAKosH,SAChBuzf,GAAe,IAAAnrmB,SAAQ,WACzB,IAAIg53B,EAAeH,EAAmB/osB,GACtC,MAAO,CACLA,MAAOA,EACPkpsB,aAAcA,EAElB,EAAG,CAAClpsB,IACA0psB,GAAgB,IAAAx53B,SAAQ,WAC1B,OAAO8vL,EAAM/7F,UACf,EAAG,CAAC+7F,IACJ6+f,EAA0B,WACxB,IAAIqqM,EAAe7tR,EAAa6tR,aAQhC,OAPAA,EAAaC,cAAgBD,EAAaK,iBAC1CL,EAAaE,eAETM,IAAkB1psB,EAAM/7F,YAC1BilyB,EAAaK,mBAGR,WACLL,EAAaM,iBACbN,EAAaC,cAAgB,IAC/B,CACF,EAAG,CAAC9tR,EAAcquR,IAClB,IAAIh1pB,EAAUj7M,GAAWkv2B,EACzB,OAAoB,gBAAoBj0pB,EAAQ45G,SAAU,CACxDr4V,MAAOolnB,GACNvzf,EACL,E,wDCpCIe,EAAY,CAAC,iBAAkB,aAAc,kBAAmB,2BAA4B,WAAY,UAAW,aAAc,WACjIC,EAAa,CAAC,0BAQd6gxB,EAAc,GACdC,EAAwB,CAAC,KAAM,MAUnC,SAASC,EAAyB5p4B,EAAOikG,GACvC,IAAI4lyB,EAAc7p4B,EAAM,GACxB,MAAO,CAACikG,EAAO1pF,QAASsv3B,EAAc,EACxC,CAEA,SAASC,EAAkCC,EAAYC,EAAYn8pB,GACjE+wd,EAA0B,WACxB,OAAOmrM,EAAW543B,WAAM,EAAQ643B,EAClC,EAAGn8pB,EACL,CAEA,SAASo8pB,EAAoBC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2BjB,GAE3IY,EAAiBhk4B,QAAUmk4B,EAC3BF,EAAejk4B,QAAUok4B,EACzBF,EAAkBlk4B,SAAU,EAExBqk4B,EAA0Brk4B,UAC5Bqk4B,EAA0Brk4B,QAAU,KACpCoj4B,IAEJ,CAEA,SAASkB,EAAiBC,EAA0B1qsB,EAAOkpsB,EAAcyB,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2BjB,EAAkBqB,GAE7L,GAAKF,EAAL,CAEA,IAAIG,GAAiB,EACjBC,EAAkB,KAElBC,EAAkB,WACpB,IAAIF,EAAJ,CAMA,IACIG,EAAezw3B,EADf0w3B,EAAmBjrsB,EAAM/7F,WAG7B,IAGE+myB,EAAgBL,EAAmBM,EAAkBd,EAAiBhk4B,QACxE,CAAE,MAAO7Q,GACPilB,EAAQjlB,EACRw14B,EAAkBx14B,CACpB,CAEKilB,IACHuw3B,EAAkB,MAIhBE,IAAkBZ,EAAejk4B,QAC9Bkk4B,EAAkBlk4B,SACrBoj4B,KAOFa,EAAejk4B,QAAU6k4B,EACzBR,EAA0Brk4B,QAAU6k4B,EACpCX,EAAkBlk4B,SAAU,EAE5Byk4B,EAA6B,CAC3Btq3B,KAAM,gBACN9F,QAAS,CACPD,MAAOA,KAnCb,CAuCF,EAwBA,OArBA2u3B,EAAaC,cAAgB4B,EAC7B7B,EAAaE,eAGb2B,IAEyB,WAKvB,GAJAF,GAAiB,EACjB3B,EAAaM,iBACbN,EAAaC,cAAgB,KAEzB2B,EAMF,MAAMA,CAEV,CAvEqC,CA0EvC,CAEA,IAAII,EAAmB,WACrB,MAAO,CAAC,KAAM,EAChB,EAEe,SAASC,EAexBC,EACA1v4B,QACe,IAATA,IACFA,EAAO,CAAC,GAGV,IAAIT,EAAQS,EACR2v4B,EAAuBpw4B,EAAMqw4B,eAC7BA,OAA0C,IAAzBD,EAAkC,SAAUxn4B,GAC/D,MAAO,mBAAqBA,EAAO,GACrC,EAAIwn4B,EACAE,EAAmBtw4B,EAAMs7O,WACzBA,OAAkC,IAArBg1pB,EAA8B,kBAAoBA,EAC/DC,EAAwBvw4B,EAAMww4B,gBAC9BA,OAA4C,IAA1BD,OAAmCpk4B,EAAYok4B,EACjEE,EAAwBzw4B,EAAMyv4B,yBAC9BA,OAAqD,IAA1BgB,GAA0CA,EACrEC,EAAiB1w4B,EAAM2w4B,SACvBA,OAA8B,IAAnBD,EAA4B,QAAUA,EAGjDE,GAFgB5w4B,EAAM6w4B,QAEH7w4B,EAAMyzV,YACzBA,OAAkC,IAArBm9iB,GAAsCA,EACnDE,EAAgB9w4B,EAAMw+B,QACtBA,OAA4B,IAAlBsy2B,EAA2BpD,EAAoBoD,EACzDt3iB,GAAiB,OAA8Bx5V,EAAO4tH,GAkBtD6rH,EAAUj7M,EACd,OAAO,SAAyBku1B,GAK9B,IAAIqkB,EAAuBrkB,EAAiBhvrB,aAAegvrB,EAAiB9j3B,MAAQ,YAChF80L,EAAc2ysB,EAAeU,GAE7BC,GAAyB,OAAS,CAAC,EAAGx3iB,EAAgB,CACxD62iB,eAAgBA,EAChB/0pB,WAAYA,EACZk1pB,gBAAiBA,EACjBf,yBAA0BA,EAC1BkB,SAAUA,EACVjzsB,YAAaA,EACbqzsB,qBAAsBA,EACtBrkB,iBAAkBA,IAGhBr9K,EAAO71W,EAAe61W,KAStB4hM,EAAkB5hM,EAAO,EAAAp6rB,QAAU,SAAUsP,GAC/C,OAAOA,GACT,EAEA,SAAS2s3B,EAAgBzp2B,GACvB,IAAI0p2B,GAAW,IAAAl83B,SAAQ,WAIrB,IAAIm83B,EAAyB3p2B,EAAM2p2B,uBAC/B/B,GAAe,OAA8B5n2B,EAAOomF,GAExD,MAAO,CAACpmF,EAAMjJ,QAAS4y2B,EAAwB/B,EACjD,EAAG,CAAC5n2B,IACA4p2B,EAAeF,EAAS,GACxBC,EAAyBD,EAAS,GAClC9B,EAAe8B,EAAS,GAExBG,GAAe,IAAAr83B,SAAQ,WAGzB,OAAOo83B,GAAgBA,EAAa/9iB,WAAY,IAAAqlH,mBAAgC,gBAAoB04b,EAAa/9iB,SAAU,OAAS+9iB,EAAe53pB,CACrJ,EAAG,CAAC43pB,EAAc53pB,IAEd2mY,GAAe,IAAAhhY,YAAWkypB,GAI1BC,EAAwBj1yB,QAAQ70D,EAAMs9J,QAAUzoG,QAAQ70D,EAAMs9J,MAAM/7F,WAAa1M,QAAQ70D,EAAMs9J,MAAMh8F,UAC3EzM,QAAQ8jhB,IAAiB9jhB,QAAQ8jhB,EAAar7a,OAO5E,IAAIA,EAAQwssB,EAAwB9p2B,EAAMs9J,MAAQq7a,EAAar7a,MAC3D2qsB,GAAqB,IAAAz63B,SAAQ,WAG/B,OA/CJ,SAA6B8vL,GAC3B,OAAOorsB,EAAgBprsB,EAAMh8F,SAAUioyB,EACzC,CA6CWQ,CAAoBzssB,EAC7B,EAAG,CAACA,IAEA0ssB,GAAY,IAAAx83B,SAAQ,WACtB,IAAKw63B,EAA0B,OAAOd,EAKtC,IAAIV,EAAeH,EAAmB/osB,EAAOwssB,EAAwB,KAAOnxR,EAAa6tR,cASrFK,EAAmBL,EAAaK,iBAAiBv90B,KAAKk90B,GAC1D,MAAO,CAACA,EAAcK,EACxB,EAAG,CAACvpsB,EAAOwssB,EAAuBnxR,IAC9B6tR,EAAewD,EAAU,GACzBnD,EAAmBmD,EAAU,GAI7BC,GAAyB,IAAAz83B,SAAQ,WACnC,OAAIs83B,EAIKnxR,GAKF,OAAS,CAAC,EAAGA,EAAc,CAChC6tR,aAAcA,GAElB,EAAG,CAACsD,EAAuBnxR,EAAc6tR,IAGrC0D,GAAc,IAAAz9iB,YAAW06iB,EAA0BF,EAAauB,GAEhE2B,EADeD,EAAY,GACc,GACzChC,EAA+BgC,EAAY,GAG/C,GAAIC,GAA6BA,EAA0Bty3B,MACzD,MAAMsy3B,EAA0Bty3B,MAIlC,IAAI6v3B,GAAiB,IAAA763B,UACjB463B,GAAmB,IAAA563B,QAAO+63B,GAC1BE,GAA4B,IAAAj73B,UAC5B863B,GAAoB,IAAA963B,SAAO,GAC3Bg73B,EAAmB2B,EAAgB,WAOrC,OAAI1B,EAA0Brk4B,SAAWmk4B,IAAiBH,EAAiBhk4B,QAClEqk4B,EAA0Brk4B,QAO5Bwk4B,EAAmB3qsB,EAAM/7F,WAAYqmyB,EAC9C,EAAG,CAACtqsB,EAAO6ssB,EAA2BvC,IAItCP,EAAkCG,EAAqB,CAACC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2BjB,IAExKQ,EAAkCU,EAAkB,CAACC,EAA0B1qsB,EAAOkpsB,EAAcyB,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2BjB,EAAkBqB,GAA+B,CAAC5qsB,EAAOkpsB,EAAcyB,IAG/Q,IAAImC,GAA2B,IAAA583B,SAAQ,WACrC,OAAoB,gBAAoBy32B,GAAkB,OAAS,CAAC,EAAG4iB,EAAkB,CACvFpnxB,IAAKkpxB,IAET,EAAG,CAACA,EAAwB1kB,EAAkB4iB,IAe9C,OAZoB,IAAAr63B,SAAQ,WAC1B,OAAIw63B,EAIkB,gBAAoB6B,EAAaj+iB,SAAU,CAC7Dr4V,MAAO024B,GACNG,GAGEA,CACT,EAAG,CAACP,EAAcO,EAA0BH,GAE9C,CAGA,IAAII,EAAUziM,EAAO,OAAW6hM,GAAmBA,EAInD,GAHAY,EAAQplB,iBAAmBA,EAC3BolB,EAAQp0sB,YAAcwzsB,EAAgBxzsB,YAAcA,EAEhD+1J,EAAY,CACd,IAAIs+iB,EAAY,aAAiB,SAA2Btq2B,EAAOygF,GACjE,OAAoB,gBAAoB4pxB,GAAS,OAAS,CAAC,EAAGrq2B,EAAO,CACnE2p2B,uBAAwBlpxB,IAE5B,GAGA,OAFA6pxB,EAAUr0sB,YAAcA,EACxBq0sB,EAAUrlB,iBAAmBA,EACtB,IAAaqlB,EAAWrlB,EACjC,CAEA,OAAO,IAAaolB,EAASplB,EAC/B,CACF,CCxXA,SAASpyvB,EAAG1+H,EAAG5C,GACb,OAAI4C,IAAM5C,EACK,IAAN4C,GAAiB,IAAN5C,GAAW,EAAI4C,GAAM,EAAI5C,EAEpC4C,GAAMA,GAAK5C,GAAMA,CAE5B,CAEe,SAASg54B,EAAaxkY,EAAMC,GACzC,GAAInzY,EAAGkzY,EAAMC,GAAO,OAAO,EAE3B,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,IAAIC,EAAQvugB,OAAOO,KAAK8tgB,GACpBG,EAAQxugB,OAAOO,KAAK+tgB,GACxB,GAAIC,EAAMjkgB,SAAWkkgB,EAAMlkgB,OAAQ,OAAO,EAE1C,IAAK,IAAI/O,EAAI,EAAGA,EAAIgzgB,EAAMjkgB,OAAQ/O,IAChC,IAAKyE,OAAOsW,UAAUxU,eAAeyU,KAAK+3f,EAAMC,EAAMhzgB,MAAQ4/H,EAAGkzY,EAAKE,EAAMhzgB,IAAK+ygB,EAAKC,EAAMhzgB,KAC1F,OAAO,EAIX,OAAO,CACT,CCzBO,SAASu34B,EAAuBC,GACrC,OAAO,SAA8BnpyB,EAAU9jG,GAC7C,IAAI82H,EAAWm2wB,EAAYnpyB,EAAU9jG,GAErC,SAASkt4B,IACP,OAAOp2wB,CACT,CAGA,OADAo2wB,EAAiBC,mBAAoB,EAC9BD,CACT,CACF,CAQO,SAASE,EAAqBC,GACnC,OAAwC,OAAjCA,EAAWF,wBAA+Djm4B,IAAjCmm4B,EAAWF,kBAAkC91yB,QAAQg2yB,EAAWF,mBAA2C,IAAtBE,EAAW7o4B,MAClJ,CAaO,SAAS8o4B,EAAmBD,EAAYh3pB,GAC7C,OAAO,SAA2BvyI,EAAUtoG,GACxBA,EAAKi9L,YAAvB,IAEIpzJ,EAAQ,SAAyBko2B,EAAiB9jM,GACpD,OAAOpkqB,EAAM8n2B,kBAAoB9n2B,EAAMgo2B,WAAWE,EAAiB9jM,GAAYpkqB,EAAMgo2B,WAAWE,EAClG,EAoBA,OAjBAlo2B,EAAM8n2B,mBAAoB,EAE1B9n2B,EAAMgo2B,WAAa,SAAgCE,EAAiB9jM,GAClEpkqB,EAAMgo2B,WAAaA,EACnBho2B,EAAM8n2B,kBAAoBC,EAAqBC,GAC/C,IAAI7q2B,EAAQ6C,EAAMko2B,EAAiB9jM,GASnC,MAPqB,mBAAVjnqB,IACT6C,EAAMgo2B,WAAa7q2B,EACnB6C,EAAM8n2B,kBAAoBC,EAAqB5q2B,GAC/CA,EAAQ6C,EAAMko2B,EAAiB9jM,IAI1BjnqB,CACT,EAEO6C,CACT,CACF,CC9CA,SAfO,SAA0C6jqB,GAC/C,MAAqC,mBAAvBA,EAAoCokM,EAAmBpkM,QAA4ChisB,CACnH,EACO,SAAyCgisB,GAC9C,OAAQA,OAIHhisB,EAJwB8l4B,EAAuB,SAAUlpyB,GAC5D,MAAO,CACLA,SAAUA,EAEd,EACF,EACO,SAAwColmB,GAC7C,OAAOA,GAAoD,iBAAvBA,EAAkC8jM,EAAuB,SAAUlpyB,GACrG,OCdW,SAA4B0pyB,EAAgB1pyB,GACzD,IAAI2pyB,EAAsB,CAAC,EAEvB3i4B,EAAQ,SAAelQ,GACzB,IAAI8y4B,EAAgBF,EAAe5y4B,GAEN,mBAAlB8y4B,IACTD,EAAoB7y4B,GAAO,WACzB,OAAOkpG,EAAS4pyB,EAAcx83B,WAAM,EAAQ3M,WAC9C,EAEJ,EAEA,IAAK,IAAI3J,KAAO4y4B,EACd1i4B,EAAMlQ,GAGR,OAAO6y4B,CACT,CDJWE,CAAmBzkM,EAAoBplmB,EAChD,QAAK58F,CACP,GEPA,GARO,SAAuC0m4B,GAC5C,MAAkC,mBAApBA,EAAiCN,EAAmBM,QAAsC1m4B,CAC1G,EACO,SAAsC0m4B,GAC3C,OAAQA,OAEH1m4B,EAFqB8l4B,EAAuB,WAC/C,MAAO,CAAC,CACV,EACF,GCNO,SAASa,EAAkBC,EAAYC,EAAetkM,GAC3D,OAAO,OAAS,CAAC,EAAGA,EAAUqkM,EAAYC,EAC5C,CA+BA,SARO,SAAkCx/V,GACvC,MAA6B,mBAAfA,EAvBT,SAA4BA,GACjC,OAAO,SAA6Bzqc,EAAUtoG,GAC1BA,EAAKi9L,YAAvB,IAIIu1sB,EAHA5jM,EAAO5usB,EAAK4usB,KACZ6jM,EAAsBzy4B,EAAKyy4B,oBAC3BC,GAAa,EAEjB,OAAO,SAAyBJ,EAAYC,EAAetkM,GACzD,IAAI0kM,EAAkB5/V,EAAWu/V,EAAYC,EAAetkM,GAU5D,OARIykM,EACG9jM,GAAS6jM,EAAoBE,EAAiBH,KAAcA,EAAcG,IAE/ED,GAAa,EACbF,EAAcG,GAITH,CACT,CACF,CACF,CAE4CI,CAAmB7/V,QAAcrniB,CAC7E,EACO,SAAiCqniB,GACtC,OAAQA,OAEJrniB,EAFiB,WACnB,OAAO2m4B,CACT,CACF,GCjCA,IAAI,EAAY,CAAC,sBAAuB,yBAA0B,kBAE3D,SAASQ,EAAgCT,EAAiB1kM,EAAoB36J,EAAYzqc,GAC/F,OAAO,SAAkC/jG,EAAO0psB,GAC9C,OAAOl7J,EAAWq/V,EAAgB7t4B,EAAO0psB,GAAWP,EAAmBplmB,EAAU2lmB,GAAWA,EAC9F,CACF,CACO,SAAS6kM,EAA8BV,EAAiB1kM,EAAoB36J,EAAYzqc,EAAUtoG,GACvG,IAIIuE,EACA0psB,EACAqkM,EACAC,EACAC,EARAO,EAAiB/y4B,EAAK+y4B,eACtBC,EAAmBhz4B,EAAKgz4B,iBACxBnkM,EAAqB7usB,EAAK6usB,mBAC1BokM,GAAoB,EAkDxB,OAAO,SAAgC7+3B,EAAW8+3B,GAChD,OAAOD,EAZT,SAA+B7+3B,EAAW8+3B,GACxC,IARIC,EACAC,EAOAC,GAAgBL,EAAiBE,EAAcjlM,GAC/C37L,GAAgBygY,EAAe3+3B,EAAW7P,EAAO2u4B,EAAcjlM,GAGnE,OAFA1psB,EAAQ6P,EACR65rB,EAAWilM,EACPG,GAAgB/gY,GA1BpBggY,EAAaF,EAAgB7t4B,EAAO0psB,GAChCP,EAAmBikM,oBAAmBY,EAAgB7kM,EAAmBplmB,EAAU2lmB,IACvFukM,EAAcz/V,EAAWu/V,EAAYC,EAAetkM,IAyBhDolM,GApBAjB,EAAgBT,oBAAmBW,EAAaF,EAAgB7t4B,EAAO0psB,IACvEP,EAAmBikM,oBAAmBY,EAAgB7kM,EAAmBplmB,EAAU2lmB,IACvFukM,EAAcz/V,EAAWu/V,EAAYC,EAAetkM,IAmBhD37L,GAdA6gY,EAAiBf,EAAgB7t4B,EAAO0psB,GACxCmlM,GAAqBvkM,EAAmBskM,EAAgBb,GAC5DA,EAAaa,EACTC,IAAmBZ,EAAcz/V,EAAWu/V,EAAYC,EAAetkM,IACpEukM,GAWAA,CACT,CAG6Bc,CAAsBl/3B,EAAW8+3B,IAzC5DZ,EAAaF,EAFb7t4B,EA2C4F6P,EA1C5F65rB,EA0CuGilM,GAxCvGX,EAAgB7kM,EAAmBplmB,EAAU2lmB,GAC7CukM,EAAcz/V,EAAWu/V,EAAYC,EAAetkM,GACpDglM,GAAoB,EACbT,EAsCT,CACF,CAMe,SAASe,EAA0BjryB,EAAU/oG,GAC1D,IAAIi04B,EAAsBj04B,EAAMi04B,oBAC5BC,EAAyBl04B,EAAMk04B,uBAC/BC,EAAiBn04B,EAAMm04B,eACvBlv4B,GAAU,OAA8BjF,EAAO,GAE/C6y4B,EAAkBoB,EAAoBlryB,EAAU9jG,GAChDkpsB,EAAqB+lM,EAAuBnryB,EAAU9jG,GACtDuuiB,EAAa2gW,EAAepryB,EAAU9jG,GAO1C,OADsBA,EAAQoqsB,KAAOkkM,EAAgCD,GAC9CT,EAAiB1kM,EAAoB36J,EAAYzqc,EAAU9jG,EACpF,CCrFA,IAAI,EAAY,CAAC,OAAQ,iBAAkB,mBAAoB,qBAAsB,uBAwBrF,SAAS5L,EAAM2zE,EAAKq1gB,EAAWz5kB,GAC7B,IAAK,IAAIlO,EAAI2nlB,EAAU54kB,OAAS,EAAG/O,GAAK,EAAGA,IAAK,CAC9C,IAAI8N,EAAS65kB,EAAU3nlB,GAAGsyE,GAC1B,GAAIxkE,EAAQ,OAAOA,CACrB,CAEA,OAAO,SAAUugG,EAAU9jG,GACzB,MAAM,IAAI2X,MAAM,gCAAkCowD,EAAM,QAAUpkE,EAAO,uCAAyC3D,EAAQ8r4B,qBAAuB,IACnJ,CACF,CAEA,SAASqD,EAAYnl4B,EAAGC,GACtB,OAAOD,IAAMC,CACf,CAIO,SAASml4B,EAAcvg4B,GAC5B,IAAIrT,OAAiB,IAAVqT,EAAmB,CAAC,EAAIA,EAC/Bwg4B,EAAkB7z4B,EAAK8z4B,WACvBA,OAAiC,IAApBD,EAA6BpE,EAAkBoE,EAC5DE,EAAwB/z4B,EAAKg04B,yBAC7BA,OAAqD,IAA1BD,EAAmC,EAAkCA,EAChGE,EAAwBj04B,EAAKk04B,4BAC7BA,OAAwD,IAA1BD,EAAmC,EAAqCA,EACtGE,EAAwBn04B,EAAKo04B,oBAC7BA,OAAgD,IAA1BD,EAAmC,EAA6BA,EACtFE,EAAuBr04B,EAAK0v4B,gBAC5BA,OAA2C,IAAzB2E,EAAkC,EAAyBA,EAEjF,OAAO,SAAiBjC,EAAiB1kM,EAAoB36J,EAAYxziB,QACzD,IAAVA,IACFA,EAAQ,CAAC,GAGX,IAAIO,EAAQP,EACR+04B,EAAax04B,EAAM8usB,KACnBA,OAAsB,IAAf0lM,GAA+BA,EACtCC,EAAuBz04B,EAAMiz4B,eAC7BA,OAA0C,IAAzBwB,EAAkCZ,EAAcY,EACjEC,EAAwB104B,EAAMkz4B,iBAC9BA,OAA6C,IAA1BwB,EAAmCjD,EAAeiD,EACrEC,EAAwB304B,EAAM+usB,mBAC9BA,OAA+C,IAA1B4lM,EAAmClD,EAAekD,EACvEC,EAAwB504B,EAAM2y4B,oBAC9BA,OAAgD,IAA1BiC,EAAmCnD,EAAemD,EACxEh+V,GAAe,OAA8B52iB,EAAO,GAEpD0z4B,EAAsB564B,EAAMw54B,EAAiB4B,EAA0B,mBACvEP,EAAyB764B,EAAM80sB,EAAoBwmM,EAA6B,sBAChFR,EAAiB964B,EAAMm6iB,EAAYqhW,EAAqB,cAC5D,OAAON,EAAWpE,GAAiB,OAAS,CAE1C70pB,WAAY,UAEZ+0pB,eAAgB,SAAwBzn4B,GACtC,MAAO,WAAaA,EAAO,GAC7B,EAEA6m4B,yBAA0BnzyB,QAAQu2yB,GAElCoB,oBAAqBA,EACrBC,uBAAwBA,EACxBC,eAAgBA,EAChB9kM,KAAMA,EACNmkM,eAAgBA,EAChBC,iBAAkBA,EAClBnkM,mBAAoBA,EACpB4jM,oBAAqBA,GACpB/7V,GACL,CACF,CACA,QAA4Bk9V,IC/ErB,SAAS,IAOd,OANmB,IAAAj1pB,YAAWsupB,EAOhC,CCjBO,SAAS0H,EAAgB522B,QACd,IAAZA,IACFA,EAAUkv2B,GAGZ,IAAI2H,EAAkB722B,IAAYkv2B,EAAoB,EAAyB,WAC7E,OAAO,IAAAtupB,YAAW5gN,EACpB,EACA,OAAO,WAIL,OAHuB622B,IACMtwsB,KAG/B,CACF,CAiBO,IAAI,EAAwBqwsB,IChC5B,SAASE,EAAmB922B,QACjB,IAAZA,IACFA,EAAUkv2B,GAGZ,IAAI6H,EAAW/22B,IAAYkv2B,EAAoB,EAAkB0H,EAAgB522B,GACjF,OAAO,WAEL,OADY+22B,IACCxsyB,QACf,CACF,CAuBO,IAAI8mhB,EAA2BylR,ICpClCE,EAAc,SAAqBvm4B,EAAGC,GACxC,OAAOD,IAAMC,CACf,EAyFO,SAASum4B,EAAmBj32B,QACjB,IAAZA,IACFA,EAAUkv2B,GAGZ,IAAI2H,EAAkB722B,IAAYkv2B,EAAoB,EAAyB,WAC7E,OAAO,IAAAtupB,YAAW5gN,EACpB,EACA,OAAO,SAAqBw+F,EAAU04wB,QACjB,IAAfA,IACFA,EAAaF,GAiBf,IAAIG,EAAmBN,IAInBO,EAtHR,SAA6C54wB,EAAU04wB,EAAY3wsB,EAAO8wsB,GACxE,IAaID,EAVAE,GAHc,IAAA5hjB,YAAW,SAAU57V,GACrC,OAAOA,EAAI,CACb,EAAG,GAC2B,GAE1B214B,GAAe,IAAAh53B,SAAQ,WACzB,OAAO643B,EAAmB/osB,EAAO8wsB,EACnC,EAAG,CAAC9wsB,EAAO8wsB,IACPE,GAAkC,IAAAzh4B,UAClC0h4B,GAAiB,IAAA1h4B,UACjB073B,GAAmB,IAAA173B,UACnB2h4B,GAAsB,IAAA3h4B,UACtB4h4B,EAAanxsB,EAAM/7F,WAGvB,IACE,GAAIg0B,IAAag5wB,EAAe9q4B,SAAWgr4B,IAAelG,EAAiB9k4B,SAAW6q4B,EAAgC7q4B,QAAS,CAC7H,IAAIir4B,EAAmBn5wB,EAASk5wB,GAK9BN,OAHkCzp4B,IAAhC8p4B,EAAoB/q4B,SAA0Bwq4B,EAAWS,EAAkBF,EAAoB/q4B,SAGjF+q4B,EAAoB/q4B,QAFpBir4B,CAIpB,MACEP,EAAgBK,EAAoB/q4B,OAExC,CAAE,MAAO6yG,GAKP,MAJIg4xB,EAAgC7q4B,UAClC6yG,EAAItY,SAAW,4DAA8DswyB,EAAgC7q4B,QAAQ0wC,MAAQ,QAGzHmiE,CACR,CA2CA,OAzCA6llB,EAA0B,WACxBoyM,EAAe9q4B,QAAU8xH,EACzBgzwB,EAAiB9k4B,QAAUgr4B,EAC3BD,EAAoB/q4B,QAAU0q4B,EAC9BG,EAAgC7q4B,aAAUiB,CAC5C,GACAy3rB,EAA0B,WACxB,SAASksM,IACP,IACE,IAAIsG,EAAgBrxsB,EAAM/7F,WAE1B,GAAIotyB,IAAkBpG,EAAiB9k4B,QACrC,OAGF,IAAImr4B,EAAoBL,EAAe9q4B,QAAQkr4B,GAE/C,GAAIV,EAAWW,EAAmBJ,EAAoB/q4B,SACpD,OAGF+q4B,EAAoB/q4B,QAAUmr4B,EAC9BrG,EAAiB9k4B,QAAUkr4B,CAC7B,CAAE,MAAOr4xB,GAKPg4xB,EAAgC7q4B,QAAU6yG,CAC5C,CAEA+3xB,GACF,CAKA,OAHA7H,EAAaC,cAAgB4B,EAC7B7B,EAAaE,eACb2B,IACO,WACL,OAAO7B,EAAaM,gBACtB,CACF,EAAG,CAACxpsB,EAAOkpsB,IACJ2H,CACT,CAwCwBU,CAAoCt5wB,EAAU04wB,EAHtDC,EAAiB5wsB,MACZ4wsB,EAAiB1H,cAIlC,OADA,IAAAl6iB,eAAc6hjB,GACPA,CACT,CACF,CAyBO,IhBtJiCW,EgBsJ7BzmR,EAA2B2lR,I,WhBtJEc,EiBF/B,0BjBGA5I,EAAQ4I,C,+DkBkBF,SAAS9pjB,IACtB,OAAO,IAAA93U,UAAS,KAClB,C,yBCnBQ,SAAWze,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJF,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FC,MAC9F,KAEJC,YACI,mEAAmED,MAC/D,KAERE,SAAU,4DAA4DF,MAClE,KAEJG,cAAe,uCAAuCH,MAAM,KAC5DI,YAAa,kCAAkCJ,MAAM,KACrDM,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVS,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG,eACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,gBAAiB,SAAUC,GAC7C,OAAOjD,EAAUiD,EACrB,EACJ,EACAC,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,MAAO,SAAUC,GACnC,OAAOlD,EAAUkD,EACrB,EACJ,EACAjC,cAAe,2BACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAGO,QAAbD,GAAsBC,GAAQ,GACjB,UAAbD,GAAwBC,EAAO,GACnB,UAAbD,EAEOC,EAAO,GAEPA,CAEf,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,KAEf,EACAgC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA3HyCC,CAAQ,EAAQ,O,+BCL1D,IAAI2jtB,EAAuB,EAAQ,OAC/Bi5L,EAAuB,EAAQ,OAC/B1qjB,EAAwB,EAAQ,OAChCmkD,EAAwB,EAAQ,OA4CpCl5S,EAAOj9F,QA7BH,SAAqB284B,EAAkBnhc,EAAew+M,GAClD,GAAgC,iBAArB2iP,EACP,MAAM,IAAI753B,MAAM,yCAEpBzd,OAAO0hC,iBAAiBxrB,KAAM,CAC1Boh4B,iBAAkB,CACdz74B,MAAOy74B,EACP112B,YAAY,GAEhBy0a,qBAAsB,CAClBx6c,MAAOs6c,EAAcE,qBAAqBptc,IAAI,SAAUkW,GAAU,OAAO,IAAIi/rB,EAAqBj/rB,EAAOijN,QAASjjN,EAAQw1oB,EAAqB,GAC/I/ynB,YAAY,GAEhB00a,qBAAsB,CAClBz6c,MAAOs6c,EAAcG,qBAAqBrtc,IAAI,SAAUkW,GAAU,OAAO,IAAIk43B,EAAqBl43B,EAAOijN,QAASjjN,EAAQw1oB,EAAqB,GAC/I/ynB,YAAY,GAEhB20a,sBAAuB,CACnB16c,MAAOs6c,EAAcI,sBAAsBttc,IAAI,SAAUkW,GAAU,OAAO,IAAIwtU,EAAsBxtU,EAAOijN,QAASjjN,EAAS,GAC7HyiB,YAAY,GAEhB40a,sBAAuB,CACnB36c,MAAOs6c,EAAcK,sBAAsBvtc,IAAI,SAAUkW,GAAU,OAAO,IAAI2xX,EAAsB3xX,EAAOijN,QAASjjN,EAAS,GAC7HyiB,YAAY,IAGxB,C,+BC5CJ5hC,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAKtD,IAAI074B,EAAgB,EAAQ,OACxBnikB,EAAU,EAAQ,OAOlBoikB,EAAiC,WACjC,SAASA,IAMLth4B,KAAKmgD,OAAS,IAAIkh1B,EAAc57b,YAEhCzlc,KAAKgiU,yBAA2B,EAEhChiU,KAAKugU,kBAAoB,IAAIrB,EAAQvzE,MAAM,GAAI,GAE/C3rP,KAAK+yT,sBAAwB,IAAImM,EAAQvzE,MAAM,GAAI,EACvD,CAMA,OALA21oB,EAAgBlh4B,UAAU2jG,QAAU,WAChC/jG,KAAKugU,kBAAkBxlQ,QACvB/6D,KAAK+yT,sBAAsBh4P,QAC3B/6D,KAAKkvC,WAAa,IACtB,EACOoy1B,CACX,CArBoC,GAsBpC784B,EAAQ684B,gBAAkBA,C,yBCzBlB,SAAWzg5B,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAET8lqB,EAAa,SAAUhmpB,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,CAClB,EACAimpB,EAAU,CACN7jqB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJE,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRojqB,EAAY,SAAUrjkB,GAClB,OAAO,SAAUzgD,EAAQw+E,EAAe39H,EAAQ49H,GAC5C,IAAIhgH,EAAImlpB,EAAW5jnB,GACfxwB,EAAMq0oB,EAAQpjkB,GAAGmjkB,EAAW5jnB,IAIhC,OAHU,IAANvhC,IACA+Q,EAAMA,EAAIgvG,EAAgB,EAAI,IAE3BhvG,EAAI1uB,QAAQ,MAAOk/C,EAC9B,CACJ,EACAhiD,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGCJ,EAAOG,aAAa,KAAM,CAC/BC,OAAQA,EACRE,YAAaF,EACbG,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,cAAe,MACfC,KAAM,SAAUC,GACZ,MAAO,MAAQA,CACnB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,IAEA,GAEf,EACAG,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG8jqB,EAAU,KACb7jqB,GAAI6jqB,EAAU,KACd5jqB,EAAG4jqB,EAAU,KACb3jqB,GAAI2jqB,EAAU,KACd1jqB,EAAG0jqB,EAAU,KACbzjqB,GAAIyjqB,EAAU,KACdxjqB,EAAGwjqB,EAAU,KACbvjqB,GAAIujqB,EAAU,KACdtjqB,EAAGsjqB,EAAU,KACbrjqB,GAAIqjqB,EAAU,KACdpjqB,EAAGojqB,EAAU,KACbnjqB,GAAImjqB,EAAU,MAElBljqB,SAAU,SAAUC,GAChB,OAAOA,EACFC,QAAQ,gBAAiB,SAAUC,GAChC,OAAOjD,EAAUiD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAE,WAAY,SAAUH,GAClB,OAAOA,EACFC,QAAQ,MAAO,SAAUC,GACtB,OAAOlD,EAAUkD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA/LyCC,CAAQ,EAAQ,O,kMCP1D,SAAe,E,SAAA,GAAmB,oB,eCI9Bg94B,EAA4B,aAAiB,SAAUn24B,EAAMynH,GAC/D,IAAI42H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzC32H,EAAW1nH,EAAK0nH,SAChB0E,EAAWpsH,EAAKosH,SAChB1N,EAAY1+G,EAAK0+G,UACjB13E,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,WAAY,cAE3EmwhB,EAAiB,IAAWzxa,GAAW,QAAmBgJ,EAAU,kBACxE,OAAoB,gBAAoB62H,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAWyxa,IACT/ja,EACN,GACA+pxB,EAAal5sB,YAAc,eAC3B,U,oCCFIqxB,EAAY,CAId5mG,SAAU,WACV42H,GAAI,gBAKJ83pB,MAAO,SAGP9iD,KAAM,SAKNh+oB,SAAU,SAKV+gsB,WAAY,SAOZ50N,YAAa,WAWbt3W,SAAU,SAQVmskB,QAAS,SAQTC,OAAQ,SAKRvjzB,SAAU,WAGVg0vB,SAAU,SAOVp/sB,MAAO,UAAgB,CAAC,SAAS,IAGjC1wE,KAAM,SAKNk8a,MAAO,SAGPoja,SAAU,SAOVC,UAAW,WAGXC,SAAU,SAOVC,UAAW,YAET1orB,EAAe,CACjBmorB,OAAO,EACP9iD,MAAM,EACNh+oB,UAAU,EACV+gsB,YAAY,EACZO,mBAAoB,EACpB5jzB,SAAU,IACVg0vB,UAAU,EACVp/sB,MAAO,QACP1wE,MAAM,EACNk8a,OAAO,EACPoja,SAAuB,gBAAoB,OAAQ,CACjD,cAAe,OACf93xB,UAAW,+BAEb+3xB,UAAW,WACXC,SAAuB,gBAAoB,OAAQ,CACjD,cAAe,OACfh4xB,UAAW,+BAEbi4xB,UAAW,QAYb,SAASE,EAAavkR,EAAmB7qgB,GACvC,IAAI25Z,GAAmB,QAAgBkxG,EAAmB,CACxDmvD,YAAa,aAEXngK,EAAsBF,EAAiB9iS,GACvCC,OAAoC,IAAxB+iS,EAAiC,MAAQA,EACrD55Z,EAAW05Z,EAAiB15Z,SAC5B0uxB,EAAQh1X,EAAiBg1X,MACzB9iD,EAAOlyU,EAAiBkyU,KACxBh+oB,EAAW8rU,EAAiB9rU,SAC5B+gsB,EAAaj1X,EAAiBi1X,WAC9B50N,EAAcrgK,EAAiBqgK,YAC/Bt3W,EAAWi3M,EAAiBj3M,SAC5BmskB,EAAUl1X,EAAiBk1X,QAC3BC,EAASn1X,EAAiBm1X,OAC1BvjzB,EAAWoub,EAAiBpub,SAC5Bg0vB,EAAW5lU,EAAiB4lU,SAC5B1mU,EAAYc,EAAiBd,UAC7B14Y,EAAQw5Y,EAAiBx5Y,MACzBwoN,EAAcgxL,EAAiBhxL,YAC/BC,EAAa+wL,EAAiB/wL,WAC9Bn5R,EAAOkqd,EAAiBlqd,KACxBk8a,EAAQguC,EAAiBhuC,MACzB0ja,EAAe11X,EAAiB01X,aAChCC,EAAc31X,EAAiB21X,YAC/BC,EAAa51X,EAAiB41X,WAC9BR,EAAWp1X,EAAiBo1X,SAC5BC,EAAYr1X,EAAiBq1X,UAC7BC,EAAWt1X,EAAiBs1X,SAC5BC,EAAYv1X,EAAiBu1X,UAC7Bj4xB,EAAY0ia,EAAiB1ia,UAC7B0N,EAAWg1Z,EAAiBh1Z,SAC5BplF,GAAQ,OAA8Bo6e,EAAkB,CAAC,KAAM,WAAY,QAAS,OAAQ,WAAY,aAAc,cAAe,WAAY,UAAW,SAAU,WAAY,WAAY,YAAa,QAAS,cAAe,aAAc,OAAQ,QAAS,eAAgB,cAAe,aAAc,WAAY,YAAa,WAAY,YAAa,YAAa,aAE9Wt3e,GAAS,QAAmB49E,EAAU,YACtCuvxB,GAAmB,IAAApj4B,QAAO,MAE1B04U,GAAY,IAAAr4U,UAAS,QACrBvQ,EAAY4oV,EAAU,GACtB2qjB,EAAe3qjB,EAAU,GAEzB4qjB,GAAa,IAAAjj4B,WAAS,GACtBs+O,EAAS2kpB,EAAW,GACpBC,EAAYD,EAAW,GAEvBE,IAAa,IAAAnj4B,WAAS,GACtBoj4B,GAAYD,GAAW,GACvBE,GAAeF,GAAW,GAE1BG,IAAa,IAAAtj4B,UAASutqB,GAAe,GACrCg2N,GAAsBD,GAAW,GACjCE,GAAyBF,GAAW,GAEnCF,IAAa71N,IAAgBg2N,KAC5BR,EAAiBxs4B,QACnBys4B,EAAaD,EAAiBxs4B,SAE9Bys4B,GAAcz1N,GAAe,GAAKg2N,GAAsB,OAAS,QAG/DrB,GACFmB,IAAa,GAGfG,GAAuBj2N,GAAe,KAGxC,IAAAhtqB,WAAU,WACJwi4B,EAAiBxs4B,UACnBws4B,EAAiBxs4B,QAAU,KAE/B,GACA,IACIkt4B,GADAC,GAAc,GAIlB,OAAQxrxB,EAAU,SAAU9vH,EAAO8O,KAC/Bws4B,GAEExs4B,IAAUq2qB,IACZk2N,GAAsBr74B,EAAM0qC,MAAMgsD,SAEtC,GACA,IAAI6kzB,IAAyB,EAAAC,EAAA,GAAgBH,IACzClo2B,IAAO,IAAA37B,aAAY,SAAUiN,GAC/B,IAAIu23B,GAAJ,CAIA,IAAIS,EAAkBN,GAAsB,EAE5C,GAAIM,EAAkB,EAAG,CACvB,IAAK7g1B,EACH,OAGF6g1B,EAAkBH,GAAc,CAClC,CAEAX,EAAiBxs4B,QAAU,OAEvB0/T,GACFA,EAAS4tkB,EAAiBh33B,EAf5B,CAiBF,EAAG,CAACu23B,GAAWG,GAAqBttkB,EAAUjzQ,EAAM0g1B,KAEhDl74B,IAAO,EAAAy9X,EAAA,GAAiB,SAAUp5W,GACpC,IAAIu23B,GAAJ,CAIA,IAAIS,EAAkBN,GAAsB,EAE5C,GAAIM,GAAmBH,GAAa,CAClC,IAAK1g1B,EACH,OAGF6g1B,EAAkB,CACpB,CAEAd,EAAiBxs4B,QAAU,OAEvB0/T,GACFA,EAAS4tkB,EAAiBh33B,EAf5B,CAiBF,GACIi33B,IAAa,IAAAnk4B,WACjB,IAAA0/U,qBAAoB9rO,EAAK,WACvB,MAAO,CACLvsH,QAAS884B,GAAWvt4B,QACpBglC,KAAMA,GACN/yC,KAAMA,GAEV,GAEA,IC3QuBgN,GAAIohM,GACvB2tc,GD0QAw/P,IAAkB,EAAA99gB,EAAA,GAAiB,YAChC98X,SAAS0kD,QAlJlB,SAAmB7mD,GACjB,KAAKA,GAAYA,EAAQojC,OAAUpjC,EAAQ0B,YAAe1B,EAAQ0B,WAAW0hC,OAC3E,OAAO,EAGT,IAAI452B,EAAej74B,iBAAiB/B,GACpC,MAAgC,SAAzBg94B,EAAa9m1B,SAAkD,WAA5B8m1B,EAAah6xB,YAA4E,SAAjDjhH,iBAAiB/B,EAAQ0B,YAAYw0D,OACzH,CA2I4B05W,CAAUkte,GAAWvt4B,UAC3C/N,IAEJ,GACIy74B,GAA+B,SAAdx04B,EAAuB,OAAS,QChR9B+F,GDiRP,WACV0s4B,IAKAE,GACFA,EAAQmB,GAAqBU,IAG3B5B,GACFA,EAAOkB,GAAqBU,IAEhC,EC9R2BrtsB,GD8RxB,CAAC2ssB,IC7RAh/P,IAAU,IAAA5koB,SAAO,IACrB,IAAAY,WAAU,WACR,IAAIgkoB,GAAQhuoB,QAKZ,OAAOf,KAJL+uoB,GAAQhuoB,SAAU,CAKtB,EAAGqgM,IDsRH,IAAIstsB,GAAiBtu2B,EAAS,SAAWnmC,EACrC004B,GAAuBvu2B,EAAS,SAAWqu2B,GAC3C3kqB,IAAc,IAAA1/N,aAAY,SAAUnY,IACtC,EAAAk0hB,EAAA,GAAqBl0hB,GAEjB264B,GACFA,EAAQmB,GAAqBU,GAEjC,EAAG,CAAC7B,EAASmB,GAAqBU,KAC9BxoX,IAAgB,IAAA77gB,aAAY,WAC9Byj4B,IAAa,GAEThB,GACFA,EAAOkB,GAAqBU,GAEhC,EAAG,CAAC5B,EAAQkB,GAAqBU,KAC7B/oO,IAAgB,IAAAt7pB,aAAY,SAAUiN,GACxC,GAAIim0B,IAAa,kBAAkBlw1B,KAAKiqB,EAAMpe,OAAOijH,SACnD,OAAQ7kG,EAAM3hB,KACZ,IAAK,YAGH,OAFA2hB,EAAMwgH,sBACN9xF,GAAK1uB,GAGP,IAAK,aAGH,OAFAA,EAAMwgH,sBACN7kI,GAAKqkB,GAOPu/f,GACFA,EAAUv/f,EAEd,EAAG,CAACim0B,EAAU1mU,EAAW7we,GAAM/yC,KAC3BszV,IAAkB,IAAAl8U,aAAY,SAAUiN,GAC5B,UAAV6mH,GACFwvwB,GAAU,GAGRhnjB,GACFA,EAAYrvU,EAEhB,EAAG,CAAC6mH,EAAOwoN,IACPH,IAAiB,IAAAn8U,aAAY,SAAUiN,GACzCq23B,GAAU,GAEN/mjB,GACFA,EAAWtvU,EAEf,EAAG,CAACsvU,IACAiojB,IAAiB,IAAAzk4B,QAAO,GACxB0k4B,IAAiB,IAAA1k4B,QAAO,GACxB2k4B,IAAsB,EAAArpjB,EAAA,KACtBmoT,IAAmB,IAAAxjoB,aAAY,SAAUiN,GAC3Cu33B,GAAe7t4B,QAAUsW,EAAMiwB,QAAQ,GAAGK,QAC1Ckn2B,GAAe9t4B,QAAU,EAEX,UAAVm9H,GACFwvwB,GAAU,GAGRN,GACFA,EAAa/13B,EAEjB,EAAG,CAAC6mH,EAAOkvwB,IACPr/P,IAAkB,IAAA3joB,aAAY,SAAUiN,GACtCA,EAAMiwB,SAAWjwB,EAAMiwB,QAAQhoC,OAAS,EAC1Cuv4B,GAAe9t4B,QAAU,EAEzB8t4B,GAAe9t4B,QAAUsW,EAAMiwB,QAAQ,GAAGK,QAAUin2B,GAAe7t4B,QAGjEss4B,GACFA,EAAYh23B,EAEhB,EAAG,CAACg23B,IACAr/P,IAAiB,IAAA5joB,aAAY,SAAUiN,GACzC,GAAIqyd,EAAO,CACT,IAAIqla,EAAcF,GAAe9t4B,QAE7BrQ,KAAKM,IAAI+94B,GAtXG,KAuXVA,EAAc,EAChBhp2B,GAAK1uB,GAELrkB,GAAKqkB,GAGX,CAEc,UAAV6mH,GACF4wwB,GAAoB7v4B,IAAI,WACtByu4B,GAAU,EACZ,EAAGpkzB,QAAYtnF,GAGbsr4B,GACFA,EAAWj23B,EAEf,EAAG,CAACqyd,EAAOxrW,EAAOn4F,GAAM/yC,GAAM874B,GAAqBxlzB,EAAUgkzB,IACzD0B,GAAyB,MAAZ1lzB,IAAqBw/J,IAAW8kpB,GAC7CqB,IAAoB,IAAA9k4B,WACxB,IAAAY,WAAU,WACR,IAAIzU,EAAM444B,EAEV,GAAKF,GAKL,OADAC,GAAkBlu4B,QAAU1O,OAAO+mG,YAAYzlG,SAASollB,gBAAkBw1T,GAAkBv74B,GAAsH,OAA/GsD,EAAmE,OAA3D444B,EAAwBf,GAAuBpt4B,SAAmBmu4B,EAAwB5lzB,GAAoBhzF,OAAO0L,GACzN,WAC6B,OAA9Bit4B,GAAkBlu4B,SACpBu4F,cAAc21yB,GAAkBlu4B,QAEpC,CACF,EAAG,CAACiu4B,GAAYh84B,GAAMm74B,GAAwB7kzB,EAAUilzB,KACxD,IAAIY,IAAoB,IAAArk4B,SAAQ,WAC9B,OAAO6h4B,GAAcnt4B,MAAMuwB,KAAK,CAC9BzwB,OAAQ4u4B,IACP,SAAUph4B,EAAGpL,GACd,OAAO,SAAU2V,GACXopT,GACFA,EAAS/+T,EAAO2V,EAEpB,CACF,EACF,EAAG,CAACs13B,EAAYuB,GAAaztkB,IAC7B,OAAoB,gBAAoB5rF,GAAW,OAAS,CAC1D92H,IAAKuwxB,IACJhx2B,EAAO,CACRs5e,UAAW8uJ,GACXh/U,YAAaJ,GACbK,WAAYJ,GACZ6mjB,aAAcx/P,GACdy/P,YAAat/P,GACbu/P,WAAYt/P,GACZh5hB,UAAW,IAAWA,EAAW50E,EAAQss2B,GAAS,QAAS9iD,GAAQxpzB,EAAS,WAC1Eus2B,GAA2B,gBAAoB,KAAM,CACvD33xB,UAAW50E,EAAS,gBACnB,OAAIsiF,EAAU,SAAU0sxB,EAAQ1t4B,GACjC,OAAoB,gBAAoB,KAAM,CAC5ChM,IAAKgM,EACLszG,UAAWtzG,IAAUqs4B,GAAsB,cAAW/r4B,EACtD0zB,QAASy52B,GAAoBA,GAAkBzt4B,QAASM,GAE5D,IAAkB,gBAAoB,MAAO,CAC3CgzG,UAAW50E,EAAS,WACnB,OAAIsiF,EAAU,SAAU9vH,EAAO8O,GAChC,IAAIm/T,EAAWn/T,IAAUqs4B,GACzB,OAAOrB,EAAqB,gBAAoBtqjB,EAAA,GAAY,CAC1Dl4G,GAAI22F,EACJ92F,QAAS82F,EAAW/2F,QAAc9nO,EAClC4hV,UAAW/iB,EAAWolN,QAAgBjkhB,EACtCgoO,eAAgBq8S,EAAA,GACf,SAAUhuZ,GACX,OAAoB,eAAmBzlI,EAAO,CAC5CoiH,UAAW,IAAWpiH,EAAM0qC,MAAM03E,UAAW6rN,GAAuB,YAAXxoM,GAAwBq2wB,IAA4B,YAAXr2wB,GAAmC,YAAXA,IAAyB,UAAsB,aAAXA,GAAoC,YAAXA,IAAyBs2wB,KAEpN,GAAkB,eAAmB/74B,EAAO,CAC1CoiH,UAAW,IAAWpiH,EAAM0qC,MAAM03E,UAAW6rN,GAAY,WAE7D,IAAKj1H,GAAyB,gBAAoB,WAAgB,MAAOp+I,GAAwB,IAAhBuqnB,IAAmC,gBAAoB5uB,EAAA,EAAY,CAClJn0iB,UAAW50E,EAAS,gBACpB1K,QAASqQ,IACR+m2B,EAAUC,GAA0B,gBAAoB,OAAQ,CACjE/3xB,UAAW,WACV+3xB,KAAcv/0B,GAAQuqnB,IAAgBm2N,GAAc,IAAmB,gBAAoB/kP,EAAA,EAAY,CACxGn0iB,UAAW50E,EAAS,gBACpB1K,QAAS1iC,IACRg64B,EAAUC,GAA0B,gBAAoB,OAAQ,CACjEj4xB,UAAW,WACVi4xB,KACL,CAEA,IAAIoC,EAAwB,aAAiBlC,GAC7CkC,EAAS97sB,YAAc,WACvB87sB,EAASzqrB,UAAYA,EACrByqrB,EAAS9qrB,aAAeA,EACxB8qrB,EAASC,QAAUC,EACnBF,EAASl3X,KAAO,EAChB,S,+BE1eA,IAAIvjb,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OAItBkgB,EAHQ,EAAQ,MAGPN,CAAM,WAEjB,OAAqC,MAA9B,IAAIp3G,KAAK,OAAOmtI,SACzB,GAEInwC,EAAcxF,EAAYx3F,KAAKzI,UAAUylG,aAI7Cnc,EAAE,CAAE37F,OAAQ,OAAQm3B,OAAO,EAAM27E,OAAQ0f,GAAU,CACjDy1B,QAAS,WACP,OAAOnwC,EAAY7lG,MAAQ,IAC7B,G,+BCdF,IAAI2yN,EAAW,EAAQ,OACnB2xqB,EAAc,EAAQ,MACtB1xqB,EAASD,EAASC,OAGlBC,GAFUF,EAAS4xqB,QACZ5xqB,EAAS3K,KACPs8qB,EAAYzxqB,QACrBE,EAAOuxqB,EAAYvxqB,KAOvB,SAAS3mK,EAAK38D,EAAKk4B,EAAKxlB,GACvBA,EAAIA,GAAK,GACT,IAAK,IAAI9c,EAAI,EAAGA,EAAIoK,EAAKpK,IACxB8c,EAAE9c,GAAKsiC,EACP,OAAOxlB,CACT,CAyIAu/E,EAAOj9F,QAvIP,SAAiBsR,EAAM0b,EAAGgwB,EAAS+i2B,GAClC,IAAInwvB,EAAK,GACLsmJ,EAAM,GACN8pmB,EAAO,GACPz8qB,EAAO,GACP08qB,GAAO,EACPjjyB,EAAK+iyB,GAlBA,IAmBL/04B,EAAMsG,EAAK3B,OACXuw4B,EAAO5u4B,EAAK,GAAG3B,OACf0+N,EAAQ6xqB,EAAO,EACf3s2B,EAAQ,GAEZ,GAAKyJ,EAUJ4yG,EADqB,UAAX5yG,EACLoxL,EAAO98N,EAAM0b,GACG,QAAXgwB,EACLsxL,EAAKh9N,EAAM0b,GAEXgwB,OAZL,IADA,IAAImj2B,EAAQ,CAAC,EACNvwvB,EAAGjgJ,OAASqd,GAAG,CACrB,IAAIW,EAAM5sB,KAAKQ,MAAMR,KAAKm+F,SAAWl0F,GAChCm14B,EAAMxy3B,KACVwy3B,EAAMxy3B,IAAO,EACbiiI,EAAGvgJ,KAAKiC,EAAKqc,IAEf,CASD,EAAG,CAEFg6C,EAAK36C,EAAG,EAAGumB,GAGX,IAAK,IAAI3yC,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CAG7B,IAFA,IAAIqE,EAAMnE,IACNk7E,EAAO,EACFz6C,EAAI,EAAGA,EAAIvU,EAAGuU,KAElBgiM,EAAO8K,EAAQF,EAAO78N,EAAK1Q,GAAIgvJ,EAAGruH,IAAMxgC,KAAKM,IAAIiQ,EAAK1Q,GAAKgvJ,EAAGruH,MACtDt8B,IACXA,EAAMs+N,EACNvnJ,EAAOz6C,GAGTy+2B,EAAKp/4B,GAAKo7E,EACVzoC,EAAMyoC,IACP,CAMA,IAHA,IAAIy6B,EAAM,GAGD8jF,GAFL27G,EAAM,GAEI,GAAG37G,EAAKvtK,EAAGutK,IAExB9jF,EAAI8jF,GAAM8zC,EAAQ1mK,EAAKu40B,EAAM,EAAGzpyB,EAAI8jF,IAAO,EAC3C27G,EAAI37G,GAAM3qC,EAAG2qC,GAId,GAAI8zC,EAAO,CACV,IAAK,IAAI+xqB,EAAM,EAAGA,EAAMpz3B,EAAGoz3B,IAC1BxwvB,EAAGwwvB,GAAO,GAEX,IAAK,IAAIlq4B,EAAK,EAAGA,EAAKlL,EAAKkL,IAQ1B,IAPA,IAEAmq4B,EAAO5pyB,EAFKupyB,EAAK9p4B,IAIjBoq4B,EAAOhv4B,EAAK4E,GAGHtX,EAAI,EAAGA,EAAIsh5B,EAAMth5B,IACzByh5B,EAAKzh5B,IAAM0h5B,EAAK1h5B,GAIlBqh5B,GAAO,EACP,IAAK,IAAIM,EAAM,EAAGA,EAAMvz3B,EAAGuz3B,IAAO,CAUjC,IATA,IAAIC,EAAM5wvB,EAAG2wvB,GAEbE,EAAOhqyB,EAAI8pyB,GAEXG,EAAOxqmB,EAAIqqmB,GAEXjwc,EAAK/8Z,EAAMgt2B,GAGFl1sB,EAAK,EAAGA,EAAK60sB,EAAM70sB,IAC3Bm1sB,EAAIn1sB,GAAMo1sB,EAAKp1sB,GAAMilQ,GAAM,EAI5B,GAAI2vc,EACH,IAAK,IAAIU,EAAM,EAAGA,EAAMT,EAAMS,IAC7B,GAAID,EAAKC,IAAQH,EAAIG,GAAM,CAC1BV,GAAO,EACP,KACD,CAGH,CACD,KAEK,CAEH,IAAK,IAAIrxqB,EAAM,EAAGA,EAAM5jO,EAAK4jO,IAE5Bn4H,EADYupyB,EAAKpxqB,KACHt9N,EAAKs9N,GAGpB,IAAK,IAAIgyqB,EAAM,EAAGA,EAAM5z3B,EAAG4z3B,IAC1BhxvB,EAAGgxvB,GAAOnqyB,EAAImqyB,GAAOrt2B,EAAMqt2B,IAAQ,EAGpCX,GAAO,EACP,IAAK,IAAIY,EAAM,EAAGA,EAAM7z3B,EAAG6z3B,IAC1B,GAAI3qmB,EAAI2qmB,IAAQjxvB,EAAGixvB,GAAM,CACxBZ,GAAO,EACP,KACD,CAEF,CAEDA,EAAOA,KAAUjjyB,GAAM,CACxB,QAAUijyB,GAEV,MAAO,CACNjjyB,GA5IQ,IA4IEA,EACVhwF,EAAGA,EACHgz3B,KAAMA,EACNxzT,UAAW58b,EAEb,C,kBC7JA,IAAIkxvB,EAAgB,EAAQ,OAGxB9vQ,EAAa,mGAGbC,EAAe,WASf5kD,EAAey0T,EAAc,SAASzh5B,GACxC,IAAIqP,EAAS,GAOb,OAN6B,KAAzBrP,EAAO8hG,WAAW,IACpBzyF,EAAOW,KAAK,IAEdhQ,EAAOC,QAAQ0xoB,EAAY,SAASzxoB,EAAOi/C,EAAQ8xP,EAAO4gW,GACxDxioB,EAAOW,KAAKihS,EAAQ4gW,EAAU5xoB,QAAQ2xoB,EAAc,MAASzylB,GAAUj/C,EACzE,GACOmP,CACT,GAEAuuF,EAAOj9F,QAAUqslB,C,+BCzBjB,IAAIzwe,EAAc,EAAQ,OACtByf,EAAS,EAAQ,OACjB47H,EAAkB,EAAQ,OAC1BnzP,EAAU,iBACV89G,EAAa,EAAQ,OAErBvyG,EAAOusG,EAAY,GAAGvsG,MAE1B4tF,EAAOj9F,QAAU,SAAU6mD,EAAQ5mB,GACjC,IAGIl6B,EAHAswB,EAAI4gO,EAAgBpwM,GACpBjmD,EAAI,EACJ8N,EAAS,GAEb,IAAK3I,KAAOswB,GAAIglG,EAAOzZ,EAAY77G,IAAQs1H,EAAOhlG,EAAGtwB,IAAQsJ,EAAKX,EAAQ3I,GAE1E,KAAOk6B,EAAMtwB,OAAS/O,GAAOy6H,EAAOhlG,EAAGtwB,EAAMk6B,EAAMr/B,SAChDkD,EAAQ4K,EAAQ3I,IAAQsJ,EAAKX,EAAQ3I,IAExC,OAAO2I,CACT,C,yECQA,QALA,SAAkBxN,GAChB,MAAuB,iBAATA,IACX,OAAaA,IArBF,oBAqBY,OAAWA,EACvC,C,+BCzBA,IAAIi6H,EAAc,EAAQ,OACtB4lxB,EAAuB,gBACvBnlyB,EAAc,EAAQ,OACtB24wB,EAAwB,EAAQ,OAEhCpunB,EAAoBn/I,SAASrrG,UAC7B61kB,EAAmB51e,EAAYuqJ,EAAkB5jQ,UACjDy+4B,EAAS,mEACTt2qB,EAAa9uH,EAAYolyB,EAAOpg3B,MAKhCu6F,IAAgB4lxB,GAClBxsB,EAAsBpunB,EALb,OAKsC,CAC7C3zN,cAAc,EACdpjC,IAAK,WACH,IACE,OAAOs7N,EAAWs2qB,EAAQxvT,EAAiBj2kB,OAAO,EACpD,CAAE,MAAOiK,GACP,MAAO,EACT,CACF,G,gDClBJ,SAFmB,E,SAAA,GAAUngB,OAAQ,UCArC,IAMI,EAHcA,OAAOsW,UAGQxU,eCNjC,IAGI,EAHc9B,OAAOsW,UAGQxU,eCOjC,SAASykb,EAAKnrX,GACZ,IAAI1uD,GAAS,EACTpC,EAAoB,MAAX8wD,EAAkB,EAAIA,EAAQ9wD,OAG3C,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAy+X,EAAKjwa,UAAU26D,MChBf,WACE/6D,KAAKi4T,SAAW,EAAe,EAAa,MAAQ,CAAC,EACrDj4T,KAAK+S,KAAO,CACd,EDcAs9Z,EAAKjwa,UAAkB,OEhBvB,SAAoB5V,GAClB,IAAI2I,EAAS6M,KAAKrM,IAAInJ,WAAewV,KAAKi4T,SAASztU,GAEnD,OADAwV,KAAK+S,MAAQ5f,EAAS,EAAI,EACnBA,CACT,EFaAk9a,EAAKjwa,UAAUvM,IFPf,SAAiBrJ,GACf,IAAIuL,EAAOiK,KAAKi4T,SAChB,GAAI,EAAc,CAChB,IAAI9kU,EAAS4C,EAAKvL,GAClB,MArBiB,8BAqBV2I,OAA4B2D,EAAY3D,CACjD,CACA,OAAO,EAAekN,KAAKtK,EAAMvL,GAAOuL,EAAKvL,QAAOsM,CACtD,EECAu5a,EAAKjwa,UAAUzM,IDXf,SAAiBnJ,GACf,IAAIuL,EAAOiK,KAAKi4T,SAChB,OAAO,OAA8BnhU,IAAdf,EAAKvL,GAAsB,EAAe6V,KAAKtK,EAAMvL,EAC9E,ECSA6lb,EAAKjwa,UAAUrM,IGdf,SAAiBvJ,EAAK7E,GACpB,IAAIoQ,EAAOiK,KAAKi4T,SAGhB,OAFAj4T,KAAK+S,MAAQ/S,KAAKrM,IAAInJ,GAAO,EAAI,EACjCuL,EAAKvL,GAAQ,QAA0BsM,IAAVnR,EAfV,4BAekDA,EAC9Dqa,IACT,EHWA,U,0BIXA,MCHA,EAPA,SAAoBjN,EAAKvI,GACvB,IAAIuL,EAAOhD,EAAIklU,SACf,OCLF,SAAmBtyU,GACjB,IAAIqqB,SAAcrqB,EAClB,MAAgB,UAARqqB,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrqB,EACU,OAAVA,CACP,CDAS,CAAU6E,GACbuL,EAAmB,iBAAPvL,EAAkB,SAAW,QACzCuL,EAAKhD,GACX,EEFA,SAAS0soB,EAASv6kB,GAChB,IAAI1uD,GAAS,EACTpC,EAAoB,MAAX8wD,EAAkB,EAAIA,EAAQ9wD,OAG3C,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA6tlB,EAASr/nB,UAAU26D,MHdnB,WACE/6D,KAAK+S,KAAO,EACZ/S,KAAKi4T,SAAW,CACd,KAAQ,IAAI,EACZ,IAAO,IAAK,KAAO,KACnB,OAAU,IAAI,EAElB,EGQAwnU,EAASr/nB,UAAkB,OCf3B,SAAwB5V,GACtB,IAAI2I,EAAS,EAAW6M,KAAMxV,GAAa,OAAEA,GAE7C,OADAwV,KAAK+S,MAAQ5f,EAAS,EAAI,EACnBA,CACT,EDYAssoB,EAASr/nB,UAAUvM,IEhBnB,SAAqBrJ,GACnB,OAAO,EAAWwV,KAAMxV,GAAKqJ,IAAIrJ,EACnC,EFeAi1oB,EAASr/nB,UAAUzM,IGjBnB,SAAqBnJ,GACnB,OAAO,EAAWwV,KAAMxV,GAAKmJ,IAAInJ,EACnC,EHgBAi1oB,EAASr/nB,UAAUrM,IIjBnB,SAAqBvJ,EAAK7E,GACxB,IAAIoQ,EAAO,EAAWiK,KAAMxV,GACxBuoB,EAAOhd,EAAKgd,KAIhB,OAFAhd,EAAKhC,IAAIvJ,EAAK7E,GACdqa,KAAK+S,MAAQhd,EAAKgd,MAAQA,EAAO,EAAI,EAC9B/S,IACT,EJYA,S,+BK9BA,IAAI0pF,EAAI,EAAQ,OACZg8yB,EAAO,aAQXh8yB,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,QAPC,EAAQ,MAEjBoD,CAA6B,QAKW,CAChElxG,IAAK,SAAamxG,GAChB,OAAOwhyB,EAAK1l4B,KAAMkkG,EAAY/vG,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EACtE,G,+BCZF,IAAI2pnB,EAAc,EAAQ,OACtBn+mB,EAAiB,EAAQ,OAE7Bo/E,EAAOj9F,QAAU,SAAUsJ,EAAQwF,EAAMglE,GAGvC,OAFIA,EAAW1kE,KAAK4snB,EAAYlojB,EAAW1kE,IAAKN,EAAM,CAAEmjD,QAAQ,IAC5D6hB,EAAWxkE,KAAK0snB,EAAYlojB,EAAWxkE,IAAKR,EAAM,CAAEo/S,QAAQ,IACzDrwS,EAAeZ,EAAE3T,EAAQwF,EAAMglE,EACxC,C,yBCNA,IAAI6kE,EAASv0H,KAAKzI,UAAUg9H,OAUxBrqC,EAAQjpG,OAAOsW,UAAUpZ,SAEzB68U,EAAmC,mBAAXr/U,QAAuD,iBAAvBA,OAAOgwC,YAEnEktD,EAAOj9F,QAAU,SAAsBkB,GACtC,MAAqB,iBAAVA,GAAgC,OAAVA,IAG1Bk+U,EAjBY,SAA2Bl+U,GAC9C,IAEC,OADAy3I,EAAO/8H,KAAK1a,IACL,CACR,CAAE,MAAOX,GACR,OAAO,CACR,CACD,CAUyB2g5B,CAAchg5B,GAPvB,kBAOgCotG,EAAM1yF,KAAK1a,GAC3D,C,+BCpBAmE,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIg8G,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChBwpN,EAAS,EAAQ,OACjB39N,EAAe,EAAQ,OAWvBgkyB,EAA6B,WAE7B,SAASA,EAAY7m4B,GACjB,OAAO6m4B,EAAYll4B,OAAO3B,GAAU,CAAC,EACzC,CA0FA,OAjFA6m4B,EAAYll4B,OAAS,SAAUml4B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAIl24B,EAAQgyG,EAASwzH,QAAQxzH,EAASwzH,QAAQ0wqB,EAAWD,EAAYxl4B,YAMrE,OALAyl4B,EAAUxuxB,QAAU,WAAc,OAAO1nH,CAAO,EAChDA,EAAM2yF,KAAOujzB,EACbl24B,EAAMi1G,mBAAqB,CACvBC,SAAU06N,EAAOp7E,KAAKw+E,WAAWhzU,EAAM4D,OAEpC5D,CACX,EAYAi24B,EAAYxl4B,UAAU6kH,GAAK,SAAUpS,GACjC,OAAO7yG,OAAS6yG,GAAO7yG,KAAKsiF,OAASuwB,GAAO7yG,KAAKgipB,QAAUnviB,CAC/D,EAKA+yxB,EAAYxl4B,UAAU4hpB,IAAM,WACxB,KAAKhipB,KAAKvY,QAAYuY,KAAKvY,kBAAkBuY,KAAKS,aAC9C,OAAOT,KAAKzM,KAChB,IAAIA,EAAOyM,KAAKvY,OAAOu6pB,MACvB,OAAOzupB,EAAOA,EAAO,IAAMyM,KAAKzM,KAAOyM,KAAKzM,IAChD,EAMAqy4B,EAAYxl4B,UAAUsoB,KAAO,WACzB,OAAO1oB,KAAKvY,QAAUuY,KAAKvY,OAAOihC,QAAU1oB,IAChD,EAUA4l4B,EAAYxl4B,UAAUy3N,WAAa,SAAU9nM,GAGzC,QAFAA,EAAO4xE,EAAS94E,SAASkH,EAAM,CAAEolM,SAAS,EAAMutG,aAAc,QACzCvtG,SAAWn1N,KAAKvY,QAAUuY,KAAKvY,OAAOowO,cAAgB,IAC1D7pO,OAAO2zG,EAAS/4E,OAAO5oB,KAAKmgD,SACxClvD,OAAO,SAAU+kO,GAAS,OAAQjmM,EAAK2yS,cAAgB3yS,EAAK2yS,aAAa92U,eAAeoqO,EAAMj4N,GAAK,EAC5G,EAQA6n4B,EAAYxl4B,UAAUkhV,UAAY,SAAUvjV,EAAIgyB,GAE5C,YADa,IAATA,IAAmBA,EAAO,CAAC,GACvB/vB,KAAKytF,KAAOztF,KAAKytF,IAAI6zP,UAAUvjV,EAAIgyB,IACvC4xE,EAAS9mG,KAAK8mG,EAAS/4E,OAAO5oB,KAAKmgD,QAAS41D,EAAM6B,OAAO,KAAM75G,KAC/DgyB,EAAKolM,SAAWn1N,KAAKvY,QAAUuY,KAAKvY,OAAO65V,UAAUvjV,EAC7D,EACA6n4B,EAAYxl4B,UAAUpZ,SAAW,WAC7B,OAAOgZ,KAAKgipB,KAChB,EAEA4jP,EAAYE,aAAe,SAAUD,GACjC,OAAOjkyB,EAAa/uF,WAAWgz3B,KAA+C,IAAjCA,EAA2B,eAC5E,EAEAD,EAAYlvkB,QAAU,SAAUpkT,GAC5B,OAAOsvF,EAAa3xF,SAASqC,EAAwB,mBACzD,EACOsz3B,CACX,CA/FgC,GAgGhCnh5B,EAAQmh5B,YAAcA,C,kBChHtB,IAAI5jrB,EAAU,EAAQ,OAyBtBtgI,EAAOj9F,QAZP,SAAuBiwG,GACrB,IAAIvhG,EAAS6uN,EAAQttH,EAAM,SAASlqG,GAIlC,OAfmB,MAYf+hC,EAAMxZ,MACRwZ,EAAMwuC,QAEDvwE,CACT,GAEI+hC,EAAQp5B,EAAOo5B,MACnB,OAAOp5B,CACT,C,qCCtBA,IACQ2M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAul4B,EAA4B,EAAQ,OACpC9trB,EAA0B,EAAQ,MAClC5yM,EAAoB,2BACpBlC,EAAM,EAAQ,OACdK,EAAK,EAAQ,OAAegkV,EAAiBhkV,EAAGgkV,eAAgBvwN,EAAczzH,EAAGyzH,YAQjF+uwB,EAAoC,SAAUhi4B,GAQ9C,SAASgi4B,EAAmBvhhB,EAAoBzkR,EAA6BpwG,GACzE,IAAIsU,EACJtU,EAAU9F,OAAOC,OAAO,CACpB09V,SAAUpiV,EACV4yM,wBAAyBA,GAC1BroN,GACHsU,EAAQF,EAAO3D,KAAKL,OAASA,KAC7B,IAAIu0a,EAAY/sF,EAAe53V,EAAQ63V,UAqEvC,OApEA39V,OAAO0hC,iBAAiBtnB,EAAO,CAC3B+h4B,kBAAmB,CACftg5B,MAAO,KACP8lC,UAAU,GAEdy62B,0BAA2B,CACvBvg5B,MAAO,EACP8lC,UAAU,GAEd6yf,oBAAqB,CACjB34hB,MAAO8+X,GAEX0hhB,iBAAkB,CACdxg5B,MAAO,IAAIqN,KAEfoz4B,yBAA0B,CACtBzg5B,MAAOiK,EAAQqoN,yBAEnB7yM,KAAM,CACFzf,MAAOiK,EAAQ3J,IACT2J,EAAQ3J,IAAImyN,UAAU,UAAWl0M,GACjC,IAAIf,EAAI,UAAWe,EAAOqwa,EAAW3kb,EAAQ4kb,aAEvD6xd,mBAAoB,CAChB562B,UAAU,EACV9lC,MAAO,GAEXmonB,UAAW,CACPrilB,UAAU,EACV9lC,MAAO,GAEX2g5B,iBAAkB,CACd3g5B,MAAO,KACP8lC,UAAU,GAEdsye,gBAAiB,CACbp4gB,MAAO,GACP8lC,UAAU,GAEdu3T,iBAAkB,CACdt3T,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKim4B,iBAChB,GAEJM,yBAA0B,CACtB762B,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKkm4B,yBAChB,GAEJlmyB,4BAA6B,CACzBt0E,YAAY,EACZ/lC,MAAOq6G,GAEX8kP,SAAU,CACNp5T,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAK8tmB,SAChB,GAEJ04R,gBAAiB,CACb962B,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKsm4B,gBAChB,KAGDpi4B,CACX,CA6LA,OAjRAnE,EAAUim4B,EAAoBhi4B,GAqF9Bgi4B,EAAmB5l4B,UAAUpZ,SAAW,WACpC,MAAO,+BAAiCgZ,KAAKs2K,IAAM,GACvD,EAKA0vtB,EAAmB5l4B,UAAUqm4B,mBAAqB,SAAUD,GACnDxm4B,KAAKsm4B,mBACNtm4B,KAAKsm4B,iBAAmBE,EAEhC,EAKAR,EAAmB5l4B,UAAUsm4B,oBAAsB,SAAU1jjB,GACpD/rN,EAAYj3H,KAAKim4B,kBAAmBjjjB,KAIrChjV,KAAKim4B,kBAAoBt83B,KAAKyuB,MAAMzuB,KAAKC,UAAUo5U,IACnDhjV,KAAKkm4B,4BACLlm4B,KAAK2m4B,YAEb,EAKAX,EAAmB5l4B,UAAUwm4B,mBAAqB,SAAU7oY,GACxD/9f,KAAK+9f,gBAAkBA,CAC3B,EAKAioY,EAAmB5l4B,UAAUym4B,cAAgB,WACzC,OAAO7m4B,KAAKs+gB,mBAChB,EAMA0nX,EAAmB5l4B,UAAU0m4B,cAAgB,SAAUrihB,GAEnD,OADAzkX,KAAKs+gB,oBAAoBlohB,OAAOquX,GACzBzkX,IACX,EAMAgm4B,EAAmB5l4B,UAAUhK,OAAS,SAAU0rrB,GAC5C,OAAI9hrB,KAAKqm4B,oBAAsBvkN,EAAUh9V,WAGzC9kV,KAAKqm4B,mBAAqBvkN,EAAUh9V,SACpCg9V,EAAUx9V,OAAOtyV,QAAQ,SAAU+04B,GAC/B,IAAIC,EAA0Bhn4B,KAAKskV,OAAOzwV,IAAIkz4B,EAAiBhp4B,IAC3Dip4B,GACAA,EAAwB5w4B,OAAO2w4B,EAEvC,EAAG/m4B,OARQA,IAUf,EACAgm4B,EAAmB5l4B,UAAUw4M,kBAAoB,SAAUC,GACvD,OAAKA,GAAgBA,EAAYyrI,QAGjChwV,MAAMuwB,KAAK7kB,KAAKskV,OAAO17T,UAAU52B,QAAQ,SAAU61V,GAC/C,IAAI3xO,EAAS2iG,EAAYyrI,OAAOuD,EAAYvxK,KACxCpgE,GACA2xO,EAAYjvI,kBAAkB1iG,EAEtC,GACOl2G,MARIA,IASf,EASAgm4B,EAAmB5l4B,UAAU6m4B,sCAAwC,SAAU/urB,EAAa3kN,EAAM+gG,EAAU6jH,GACxG,OAAO,IAAIn4M,KAAKom4B,yBAAyBlurB,EAAa3kN,EAAM+gG,EAAU6jH,EAAyB,CAAElyN,IAAK+Z,KAAKoF,MAC/G,EASA4g4B,EAAmB5l4B,UAAUmM,SAAW,SAAU2rM,EAAa3kN,EAAM+gG,EAAU6jH,GAC3E,IAAIj0M,EAAQlE,KACZgE,EAAO5D,UAAUmM,SAASlM,KAAKL,KAAMk4M,EAAa3kN,EAAM+gG,EAAU6jH,GAClE,IAAI0vI,EAAc7nV,KAAKkn4B,eAAehvrB,GAClC1iF,EAAYqyN,EAAYryN,UAAWgjF,EAAkBqvI,EAAYrvI,gBACjE95I,EAAU,WAKN82D,IAAcqyN,EAAYryN,WAAagjF,IAAoBqvI,EAAYrvI,kBACvEt0M,EAAMyi4B,YACNnxwB,EAAYqyN,EAAYryN,UACxBgjF,EAAkBqvI,EAAYrvI,gBAEtC,EAKA,OAJAqvI,EAAYl9O,GAAG,UAAWjsC,GAC1B1+D,KAAKmn4B,gBAAgBt/iB,GACrB7nV,KAAKmm4B,iBAAiBpy4B,IAAI8zV,EAAa,WAAc,OAAOA,EAAYjjS,eAAe,UAAW8Z,EAAU,GAC5G1+D,KAAK2m4B,YACE3m4B,IACX,EAMAgm4B,EAAmB5l4B,UAAU+m4B,gBAAkB,SAAUt/iB,GACrD,IAAIjjS,EAAiB5kD,KAAKmm4B,iBAAiBty4B,IAAIg0V,GAC3CjjS,GACAA,GAER,EAKAoh1B,EAAmB5l4B,UAAUuzF,SAAW,WACpC,MAAO,CACHmxP,SAAU9kV,KAAK8kV,SACfR,OAAQhwV,MAAMuwB,KAAK7kB,KAAKskV,OAAO17T,UAAU71B,IAAI,SAAUuZ,GAAS,OAAOA,EAAMqnF,UAAY,GAEjG,EAMAqyyB,EAAmB5l4B,UAAUum4B,UAAY,WACrC3m4B,KAAK8tmB,YACL9tmB,KAAK6K,KAAK,UACd,EAOAm73B,EAAmB5l4B,UAAUiumB,YAAc,SAAUn2Z,GACjD,IAAI2vI,EAAc7jV,EAAO5D,UAAUiumB,YAAYhumB,KAAKL,KAAMk4M,GAM1D,OALI2vI,IACA3vI,EAAYkvrB,YAAYv/iB,EAAYz1B,kBACpCpyT,KAAKmn4B,gBAAgBt/iB,GACrB7nV,KAAK2m4B,aAEF9+iB,CACX,EAMAm+iB,EAAmB5l4B,UAAUin4B,+BAAiC,SAAUrnyB,GACpEhgG,KAAKggG,4BAA4B5pG,OAAO4pG,EAC5C,EAQAgmyB,EAAmB5l4B,UAAUkn4B,iBAAmB,SAAU3vwB,EAAUogB,GAChE,IAAIuujB,EAAiBhysB,MAAMuwB,KAAK7kB,KAAKskV,OAAO17T,UAAU/tB,KAAK,SAAU0s4B,GAAY,OAAOA,EAASjxtB,MAAQ3+C,CAAU,GACnH,OAAK2ukB,EAIEA,EAAel0Y,iBAAiBk1kB,iBAAiBvvvB,IAHpD/3I,KAAKoF,KAAKyH,KAAK,SAAW8qH,EAAW,cAC9BhhI,QAAQC,QAAQ,iBAG/B,EACOov4B,CACX,CAnRuC,CAmRrCD,GAkCFrkzB,EAAOj9F,QAAUuh5B,C,+BChVjB,IAAIt8yB,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtBs7I,EAAsB,EAAQ,OAC9Bz7H,EAAkB,EAAQ,OAC1BknI,EAAU,EAAQ,OAClB1zO,EAAQ,EAAQ,OAChBusG,EAAQ,EAAQ,OAEhBonI,EAAcC,WACd7lK,EAAUlhF,OACVin4B,EAAYp33B,SACZtqB,EAAMN,KAAKM,IACXE,EAAQR,KAAKQ,MACbP,EAAMD,KAAKC,IACX8F,EAAQ/F,KAAK+F,MACbk84B,EAAsBpnyB,EAAY,IAAI29B,eACtCupH,EAASlnJ,EAAY+mJ,GACrB9zI,EAAcjT,EAAY,GAAGvlG,OAG7B4s4B,EAAuD,gBAArCD,GAAqB,OAAS,IAEb,YAAlCA,EAAoB,MAAO,IAEO,aAAlCA,EAAoB,MAAO,IAEI,SAA/BA,EAAoB,GAAI,GAuB7B/9yB,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,QAJrB6myB,KAfLznxB,EAAM,WACXwnxB,EAAoB,EAAGli5B,IACzB,IAAM06H,EAAM,WACVwnxB,EAAoB,GAAG,IACzB,OAKQxnxB,EAAM,WACZwnxB,EAAoBli5B,IAAUA,KAC9Bki5B,EAAoBni5B,IAAKC,IAC3B,IAOmD,CACnDy4I,cAAe,SAAuB2pH,GACpC,IAAIphQ,EAAI25H,EAAgBlgH,MACxB,QAAuBlJ,IAAnB6wP,EAA8B,OAAO8/oB,EAAoBlh5B,GAC7D,IAAImb,EAAIi6O,EAAoBgM,GAC5B,IAAK6/oB,EAAUjh5B,GAAI,OAAOga,OAAOha,GAEjC,GAAImb,EAAI,GAAKA,EAAI,GAAI,MAAM,IAAI2lP,EAAY,6BAC3C,GAAIqgpB,EAAiB,OAAOD,EAAoBlh5B,EAAGmb,GACnD,IACIve,EAAG6B,EAAGY,EAAGrC,EADTN,EAAI,GAMR,GAJIsD,EAAI,IACNtD,EAAI,IACJsD,GAAKA,GAEG,IAANA,EACFvB,EAAI,EACJ7B,EAAIokQ,EAAO,IAAK7lP,EAAI,OACf,CAGL,IAAI8W,EAAI9E,EAAMntB,GACdvB,EAAIgB,EAAMwyB,GACV,IAAIoB,EAAIn0B,EAAI,GAAIT,EAAI0c,GAChBb,EAAItV,EAAMhF,EAAIqzB,GACd,EAAIrzB,IAAM,EAAIsa,EAAI,GAAK+Y,IACzB/Y,GAAK,GAEHA,GAAKpb,EAAI,GAAIic,EAAI,KACnBb,GAAK,GACL7b,GAAK,GAEP7B,EAAIs+F,EAAQ5gF,EACd,CAYA,OAXU,IAANa,IACFve,EAAImwH,EAAYnwH,EAAG,EAAG,GAAK,IAAMmwH,EAAYnwH,EAAG,IAExC,IAAN6B,GACFY,EAAI,IACJrC,EAAI,MAEJqC,EAAIZ,EAAI,EAAI,IAAM,IAClBzB,EAAIk+F,EAAQ37F,EAAId,KAGX/B,GADPE,EAAK,KAAMyC,EAAIrC,CAEjB,G,kBChGF,QAMiBmgH,IAIH,WACZ,IAWIikyB,EACAC,EAZA5+xB,EAAMvgH,SACNorD,EAAOm1D,EAAIwhF,qBAAqB,QAAQ,GAGxC12L,EAAO,OACPmtQ,EAAa,aACb8jO,EAAqB,qBACrBn3e,EAAO,CAAC,EACRiQ,EAAM,CAAC,EACP4lC,EAAQ,CAAC,EACTok2B,EAAU,CAAC,EAIf,SAASrt4B,EAAMmlG,EAAI7qG,GACjB,IAAK,IAAIzP,EAAI,EAAG2gC,EAAI25E,EAAGvrG,OAAQ/O,EAAI2gC,IAAK3gC,EAAG,IAAKyP,EAAG6qG,EAAGt6G,IAAK,OAZrD,EAaN,OAAO,CACT,CACA,SAASurB,EAAK+uF,EAAI7qG,GAChB0F,EAAMmlG,EAAI,SAAUpiE,GAElB,OADAzoC,EAAGyoC,GACI,CACT,EACF,CAEA,SAASuq2B,EAAQlmiB,EAAOmmiB,EAAUC,GAChCpmiB,EAAQA,EAAM9tW,GAAQ8tW,EAAQ,CAACA,GAC/B,IAAIqmiB,EAAiBF,GAAYA,EAAS1n4B,KACtCmB,EAAOym4B,EAAiBF,EAAWC,EACnCjq4B,EAAKkq4B,EAAiBrmiB,EAAM1jW,KAAK,IAAM6p4B,EACvCnrxB,EAAQglP,EAAMxtW,OAClB,SAAS8z4B,EAAOl13B,GACd,OAAOA,EAAK3S,KAAO2S,IAASplB,EAAKolB,EACnC,CACA,SAAS9D,IACP,OAAO0tG,EAGL,IAAK,IAAIurxB,KAFTv64B,EAAKmQ,GAAM,EACXyD,GAAQA,IACSiiC,EACfjpC,EAAM2t4B,EAAKjn5B,MAAM,KAAMgn5B,KAAYt33B,EAAK6yB,EAAM0k2B,GAAOD,KAAYzk2B,EAAM0k2B,GAAQ,GAGrF,CAmBA,OAlBA1g4B,WAAW,WACTmJ,EAAKgxV,EAAO,SAASg7L,EAAQ/zd,EAAM8xY,GACjC,OAAa,OAAT9xY,EAAsB35D,KAErByrc,GAAU,eAAez4d,KAAK2mF,KAAS8+zB,IAC1C9+zB,GAAiC,IAAzBA,EAAKtgF,QAAQ,OAAiBo/4B,EAAa9+zB,EAAO,MAAQ8+zB,EAAa9+zB,GAG7Eg/zB,EAAQh/zB,IACN9qE,IAAIF,EAAIE,GAAM,GACO,GAAjB8p4B,EAAQh/zB,GAAc35D,IAAazH,WAAW,WAAcm1hB,EAAQ/zd,GAAM,EAAM,EAAG,KAG7Fg/zB,EAAQh/zB,GAAQ,EACZ9qE,IAAIF,EAAIE,GAAM,QAClB2C,EAAOmoE,EAAM35D,IACf,EACF,EAAG,GACI443B,CACT,CAEA,SAASpn4B,EAAOmoE,EAAM/zE,GACpB,IAAsC4unB,EAAlCnmlB,EAAKyrE,EAAIj8F,cAAc,UAC3BwwB,EAAGk7M,OAASl7M,EAAGm7M,QAAUn7M,EAAGwnc,GAAsB,WAC3Cxnc,EAAG0jO,KAAiB,WAAW/+Q,KAAKq7C,EAAG0jO,KAAkByiX,IAC9DnmlB,EAAGk7M,OAASl7M,EAAGwnc,GAAsB,KACrC2+I,EAAS,EACTmkR,EAAQh/zB,GAAQ,EAChB/zE,IACF,EACAyoC,EAAGsoD,MAAQ,EACXtoD,EAAG8pE,IAAMugyB,EAAU/+zB,IAA+B,IAAvBA,EAAKtgF,QAAQ,KAAc,IAAM,KAAOq/4B,EAAU/+zB,EAC7Eh1B,EAAK80E,aAAaprF,EAAIsW,EAAKsqN,UAC7B,CAmCA,OAjCA2poB,EAAQj04B,IAAM6M,EAEdon4B,EAAQj14B,MAAQ,SAAUg14B,EAAS9p4B,EAAIyD,IACpC,SAAS0N,EAASjsB,GACjBA,EAAI4k5B,EAAQ3/1B,QACX2/1B,EAAQzz4B,OAAgC0z4B,EAAQ7k5B,EAAGisB,GAAlC443B,EAAQ7k5B,EAAG8a,EAAIyD,EACnC,CAHA,EAIF,EAEAsm4B,EAAQj/zB,KAAO,SAAU1oE,GACvBwn4B,EAAaxn4B,CACf,EACA2n4B,EAAQF,QAAU,SAAUn13B,GAC1Bm13B,EAAUn13B,CACZ,EACAq13B,EAAQ3moB,MAAQ,SAAUjrE,EAAMirE,EAAO8xY,GACrC/8c,EAAOA,EAAKpiM,GAAQoiM,EAAO,CAACA,GAC5B,IAIuB1rM,EAJnB494B,EAAU,GASd,OARCx33B,EAAKslL,EAAM,SAAUxiM,GACpB9F,EAAK8F,IAAQ004B,EAAQt04B,GAAMJ,EAC7B,IAAM8G,EAAM07L,EAAM,SAAUxiM,GAAM,OAAO9F,EAAK8F,EAAI,GAChDytQ,KAAqB32Q,EAIrB0rM,EAAKh4L,KAAK,KAHVulC,EAAMj5C,GAAOi5C,EAAMj5C,IAAQ,GAC3Bi5C,EAAMj5C,GAAKsJ,GAAMqtQ,GACjB8xY,GAAOA,EAAIm1P,IAENN,CACT,EAEAA,EAAQtm4B,KAAO,SAAUum4B,GACvBD,EAAQ,CAAC,MAAOC,EAClB,EAEOD,CACT,EApHsCpmzB,EAAOj9F,QAASi9F,EAAOj9F,QAAUi/G,SACA,0BAAjB,KAAiB,iC,yBCLvEhiB,EAAOj9F,QAAU,SAAUkB,EAAO6b,GAChC,MAAO,CAAE7b,MAAOA,EAAO6b,KAAMA,EAC/B,C,+DCLA,IAAI6m4B,EAAS,WCMTC,EAAY,OACD,SAASC,EAAmBzk5B,GACzC,ODPa,SAAmBA,GAChC,OAAOA,EAAOC,QAAQsk5B,EAAQ,OAAOjg5B,aACvC,CCKSog5B,CAAU1k5B,GAAQC,QAAQuk5B,EAAW,OAC9C,CCTA,IAAIG,EAAsB,8EC+B1B,QA3BA,SAAe1h5B,EAAMutB,GACnB,IAAInrB,EAAM,GACN6iH,EAAa,GAEjB,GAAwB,iBAAb13F,EACT,OAAOvtB,EAAK2iC,MAAM8T,iBAAiB,EAAUlpB,KCRlC,SAA0BvtB,EAAM2h5B,GAC7C,OCDa,SAAqB3h5B,GAClC,IAAIiiH,GAAM,EAAA/hH,EAAA,GAAcF,GACxB,OAAOiiH,GAAOA,EAAI9hH,aAAeC,MACnC,CDFSwh5B,CAAY5h5B,GAAMsB,iBAAiBtB,EAAM2h5B,EAClD,CDM+Drg5B,CAAiBtB,GAAMy2C,iBAAiB,EAAUlpB,IAG/GxqB,OAAOO,KAAKiqB,GAAUtiB,QAAQ,SAAUxH,GACtC,IAAI7E,EAAQ2uB,EAAS9pB,GAEhB7E,GAAmB,IAAVA,EDdH,SAAqBA,GAClC,SAAUA,IAAS8i5B,EAAoBvm5B,KAAKyD,GAC9C,CCceij5B,CAAYp+4B,GACrBwhH,GAAcxhH,EAAM,IAAM7E,EAAQ,KAElCwD,GAAO,EAAUqB,GAAO,KAAO7E,EAAQ,IAJvCoB,EAAK2iC,MAAM2yc,eAAe,EAAU7xe,GAMxC,GAEIwhH,IACF7iH,GAAO,cAAgB6iH,EAAa,KAGtCjlH,EAAK2iC,MAAMsgG,SAAW,IAAM7gI,CAC9B,C,6BG3BAW,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAQok5B,cAAgBpk5B,EAAQslY,UAAYtlY,EAAQqlY,OAASrlY,EAAQsqI,GAAKtqI,EAAQV,QAAUU,EAAQqP,KAAOrP,EAAQqk5B,oBAAsBrk5B,EAAQsk5B,kBAAoBtk5B,EAAQ8iqB,qBAAkB,EAM/L,IAAIA,EAAkB,2BACtB9iqB,EAAQ8iqB,gBAAkBA,EAoB1B9iqB,EAAQsk5B,kBAlBgB,SAA2B9/yB,EAAU2K,GAE3D,MAAO,CACL5jF,KAAMu3oB,EACNr9oB,QAAS,CACP++E,SAAUA,EACV2K,OAAQA,EACR4zjB,iBANmBrzpB,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,IAAmBA,UAAU,IASxF,EASA,IAAI204B,EAAsB,+BAC1Brk5B,EAAQqk5B,oBAAsBA,EAE9B,IAAIE,EAAiB,SAAwBzk2B,GAC3C,OAAO,WACL,IAAK,IAAIrwC,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,MAAO,CACLyb,KAAM843B,EACN5+3B,QAAS,CACPq6B,OAAQA,EACRlwC,KAAMA,GAGZ,CACF,EAQIP,EAAOk14B,EAAe,QAC1Bvk5B,EAAQqP,KAAOA,EACf,IAAI/P,EAAUil5B,EAAe,WAC7Bvk5B,EAAQV,QAAUA,EAClB,IAAIgrI,EAAKi6wB,EAAe,MACxBvk5B,EAAQsqI,GAAKA,EACb,IAAI+6P,EAASk/gB,EAAe,UAC5Bvk5B,EAAQqlY,OAASA,EACjB,IAAIC,EAAYi/gB,EAAe,aAC/Bvk5B,EAAQslY,UAAYA,EACpB,IAAI8+gB,EAAgB,CAClB/04B,KAAMA,EACN/P,QAASA,EACTgrI,GAAIA,EACJ+6P,OAAQA,EACRC,UAAWA,GAEbtlY,EAAQok5B,cAAgBA,C,+BC1ExB,IAAIxmzB,EAAa,EAAQ,OACrB4mzB,EAAe,EAAQ,OACvBC,EAAwB,EAAQ,OAChCC,EAAuB,EAAQ,OAC/B/phB,EAA8B,EAAQ,OACtC/zH,EAAiB,EAAQ,OAGzBm8W,EAFkB,EAAQ,MAEfhmgB,CAAgB,YAC3B4nyB,EAAcD,EAAqBvg3B,OAEnCyg3B,EAAkB,SAAUn9H,EAAqBo9H,GACnD,GAAIp9H,EAAqB,CAEvB,GAAIA,EAAoB1kK,KAAc4hS,EAAa,IACjDhqhB,EAA4B8sZ,EAAqB1kK,EAAU4hS,EAC7D,CAAE,MAAOn/3B,GACPiiwB,EAAoB1kK,GAAY4hS,CAClC,CAEA,GADA/9oB,EAAe6ghB,EAAqBo9H,GAAiB,GACjDL,EAAaK,GAAkB,IAAK,IAAItkc,KAAemkc,EAEzD,GAAIj9H,EAAoBlnU,KAAiBmkc,EAAqBnkc,GAAc,IAC1E5lF,EAA4B8sZ,EAAqBlnU,EAAamkc,EAAqBnkc,GACrF,CAAE,MAAO/6b,GACPiiwB,EAAoBlnU,GAAemkc,EAAqBnkc,EAC1D,CAEJ,CACF,EAEA,IAAK,IAAIskc,KAAmBL,EAC1BI,EAAgBhnzB,EAAWinzB,IAAoBjnzB,EAAWinzB,GAAiBlp4B,UAAWkp4B,GAGxFD,EAAgBH,EAAuB,e,kBCpCvC,IAAI74d,EAAO,EAAQ,OACfulN,EAAY,EAAQ,OACpB5ioB,EAAM,EAAQ,OAkBlB0uF,EAAOj9F,QATP,WACEub,KAAK+S,KAAO,EACZ/S,KAAKi4T,SAAW,CACd,KAAQ,IAAIo4G,EACZ,IAAO,IAAKr9a,GAAO4ioB,GACnB,OAAU,IAAIvlN,EAElB,C,yBCRQ,SAAWxvb,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yCAAyCC,MAAM,KACvDC,YAAa,yCAAyCD,MAClD,KAEJE,SAAU,8BAA8BF,MAAM,KAC9CG,cAAe,gBAAgBH,MAAM,KACrCI,YAAa,gBAAgBJ,MAAM,KACnCM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN02B,EAAG,cACH8nF,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVj+G,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACNC,EAAG,MACHC,GAAI,MACJC,EAAG,KACHC,GAAI,MACJC,EAAG,OACHC,GAAI,OACJC,EAAG,KACHC,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERM,uBAAwB,iBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAlhD,cAAe,QACfC,KAAM,SAAUiiB,GACZ,MAAiB,OAAVA,CACX,EACA9hB,SAAU,SAAUC,EAAMC,EAAQkn5B,GAC9B,OAAOnn5B,EAAO,GAAK,KAAO,IAC9B,GAKP,CA9EyCmC,CAAQ,EAAQ,O,qCCN1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAgsN,EAAQ,eACRp/M,EAAc,qBACd5J,EAAK,EAAQ,OAAeykV,EAAezkV,EAAGykV,aAAcj5U,EAAkBxL,EAAGwL,gBACjFw63B,EAA6B,EAAQ,OAmBrC90I,EAA4B,SAAU1wvB,GAOtC,SAAS0wvB,EAAW36O,EAAuBnqhB,GACvC,IAAIsU,EAAQlE,KACZpQ,EAAU9F,OAAOC,OAAO,CACpB0/4B,oCAAqCj9qB,KACV,iBAAb/jO,UAC8B,mBAA9BA,SAASyP,kBACoB,iBAA7BzP,SAASollB,iBACxBj+kB,GACHsU,EAAQF,EAAO3D,KAAKL,KAAM+5gB,EAAsBh8gB,GAAIg8gB,EAAsBjtgB,KAAMld,IAAYoQ,KAC5F,IAAI+kuB,GAAY,EAyDhB,OAxDAn1uB,EAAU9F,OAAOC,OAAO,CACpBqjB,YAAaA,GACdxd,GAEH9F,OAAO0hC,iBAAiBtnB,EAAO,CAC3B66f,aAAc,CACVp5gB,MAAO,IAAIuN,KAEfqqP,SAAU,CACN53P,MAAO,KACP8lC,UAAU,GAEdwze,SAAU,CACNt5gB,MAAO,IAAIopF,SAEf26zB,WAAY,CACR714B,IAAK,WACD,OAAOkxuB,CACX,EACAhxuB,IAAK,SAAU214B,GACX3kK,EAAY2kK,CAChB,GAEJC,qCAAsC,CAClChk5B,MAAOiK,EAAQ654B,qCAEnBG,4BAA6B,CACzBjk5B,MAAOiK,EAAQg+kB,2BACRh+kB,EAAQ654B,qCAEnB1spB,kBAAmB,CACfp3P,MAAO,KACP8lC,UAAU,GAEdo+2B,aAAc,CACVlk5B,MAAOiK,EAAQwd,aAEnB23tB,UAAW,CACPr5sB,YAAY,EACZ73B,IAAK,WACD,OAAOkxuB,CACX,GAEJp4gB,iBAAkB,CACdjhM,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAK+8O,mBAAqBg9R,EAAsBztgB,KAC3D,GAEJuwO,eAAgB,CACZnxN,YAAY,EACZ/lC,MAAO,KACP8lC,UAAU,KAGlBvnB,EAAM45D,cACC55D,CACX,CA0KA,OAnPAnE,EAAU20vB,EAAY1wvB,GA6EtB0wvB,EAAWt0vB,UAAUojC,OAAS,WAC1BxjC,KAAKoF,KAAKkC,MAAM,WAChBtH,KAAK0p4B,YAAa,EACd1p4B,KAAKu9O,WACLv9O,KAAKu9O,SAASlwO,UAAY,MAG9BrN,KAAK6K,KAAK,UAAW7K,KACzB,EAIA00vB,EAAWt0vB,UAAU09D,YAAc,WAC/B,IAAIwkB,EAAOtiF,KACXA,KAAKoF,KAAKkC,MAAM,gBAChBtH,KAAKu9O,SAAWv9O,KAAK8p4B,iBACrB9p4B,KAAK2sN,iBAAiBz0N,iBAAiB,QAAS,SAAS6x4B,IACrDznzB,EAAK0rI,OACL1rI,EAAKqqI,iBAAiBx0N,oBAAoB,QAAS4x4B,EACvD,GACI/p4B,KAAKu9O,WACLv9O,KAAKu9O,SAASrwO,OAAQ,EACtBlN,KAAKu9O,SAASlwO,UAAYrN,KAAKwjC,OAAOkY,KAAK17C,KAAMA,KAAKu9O,UAEtDv9O,KAAKgq4B,QAAQhq4B,KAAKu9O,SAAUv9O,KAAK2sN,kBACjC3sN,KAAK++f,aAAatoe,OAAOz2B,KAAKu9O,UAEtC,EAIAm3gB,EAAWt0vB,UAAU4tN,KAAO,WACxBhuN,KAAKoF,KAAKkC,MAAM,SACZtH,KAAKu9O,WACLv9O,KAAKu9O,SAAS36M,SACd5iC,KAAKu9O,SAASpwO,UAAY,KAC1BnN,KAAKu9O,SAASlwO,UAAY,KAC1BrN,KAAKu9O,SAAW,KAExB,EACAm3gB,EAAWt0vB,UAAU4mD,OAAS,SAAUzpB,GACpC,IAAIr5B,EAAQlE,KASZ,GARkB,iBAAPu9B,EACPA,EAAKv9B,KAAKiq4B,eAAe1s2B,GAEnBA,IACNA,EAAKv9B,KAAK8p4B,kBAEd9p4B,KAAKoF,KAAKkC,MAAM,mCAAoCi2B,GACpDA,EAAKv9B,KAAKgq4B,QAAQzs2B,GACdv9B,KAAK4p4B,8BAAgC5p4B,KAAKi/f,SAAStrgB,IAAI4pC,GAAK,CAC5D,IAAI2s2B,EAA0Blq4B,KAAK2p4B,qCAC7B,WAAc,OA2HhC,SAAwCps2B,EAAIt3C,GACxC,IAAI+7F,EAAMzkD,EAAGyzE,QAAQ5oH,cACrBnC,EAAI4mB,KAAK,0BAA2B0wB,GAIpC5mC,QAAQ+Q,KAAK,CACTugV,EAAax/V,SAAU,oBACvBumB,EAAgB,OACjBnY,KAAK,WAC6B,YAA7BpO,SAASollB,iBAMT27T,EAA2Bh8X,aAAa,SAAS32gB,KAAK,WAGlD,OAFA5Q,EAAI8sC,KAAK,mCAAqCivD,EAAM,aACpD/7F,EAAIqhB,MAAM,WAAYi2B,GACfA,EAAGkgN,MACd,GAAG5mP,KAAK,WACJ5Q,EAAI8sC,KAAK,+CAAiDivD,EAAM,aAChE/7F,EAAIqhB,MAAM,WAAYi2B,EAC1B,GAAGswL,MAAM,SAAU5jN,GACfhkB,EAAI4mB,KAAK,+CAAiDm1E,EAAM,aAAc,CAAE/3E,MAAOA,EAAOszB,GAAIA,GACtG,EAER,EACJ,CAvJuC4s2B,CAA+B5s2B,EAAIr5B,EAAMkB,KAAO,EACrE,KACNpF,KAAKi/f,SAASlrgB,IAAIwpC,EA6J9B,SAA0BA,EAAI2s2B,QACM,IAA5BA,IAAsCA,EAA0B,MACpE,IAAIE,EAAY7s2B,EAAGy1F,MACfq3wB,EAAW9s2B,EAAGkgN,KACdyhR,GAAsB,EAC1B3he,EAAGy1F,MAAQ,WAEP,OADAksY,GAAsB,EACfkrY,EAAU/p4B,KAAKk9B,EAC1B,EACAA,EAAGkgN,KAAO,WAEN,OADAyhR,GAAsB,EACfmrY,EAAShq4B,KAAKk9B,EACzB,EACA,IAAIsuF,EAAUq+wB,EAA0B,WAC/BhrY,GACDgrY,GAER,EAAI,KAIJ,OAHIr+wB,GACAtuF,EAAGrlC,iBAAiB,QAAS2zH,GAE1B,CACHqzY,oBAAqB,WACjB,OAAOA,CACX,EACAorY,OAAQ,WACJ/s2B,EAAGy1F,MAAQo3wB,EACX7s2B,EAAGkgN,KAAO4spB,EACNx+wB,GACAtuF,EAAGplC,oBAAoB,QAAS0zH,EAExC,EAER,CA9LkC0+wB,CAAiBht2B,EAAI2s2B,GAC/C,CACA,OAAO3s2B,CACX,EASAm3tB,EAAWt0vB,UAAU4p4B,QAAU,SAAUzs2B,EAAIovL,QAChB,IAArBA,IAA+BA,EAAmB3sN,KAAK68O,gBAAkB78O,KAAK2sN,kBAClF,IAAIkjT,EAActye,EAAGpwB,UACf0igB,aAAuB7vgB,KAAK6p4B,eAC9Bh6X,EAAc,IAAI7vgB,KAAK6p4B,cAE3B,IAAIjykB,EAAsC,UAA1BjrG,EAAiB7/M,KAC3B,iBACA,iBAcN,OAbA+igB,EAAYj4M,KAAa5lU,QAAQ,SAAUsa,GACvCujgB,EAAYw+F,YAAY/hmB,EAC5B,GACAujgB,EAAYtjgB,SAASogN,GAIrBpvL,EAAGpwB,UAAY0igB,EACftye,EAAGvwB,UAAW,EACduwB,EAAGtwB,aAAc,EACZjN,KAAK++f,aAAaprgB,IAAI4pC,IACvBv9B,KAAK++f,aAAazrgB,IAAIiqC,GAEnBA,CACX,EAIAm3tB,EAAWt0vB,UAAU6p4B,eAAiB,SAAUtixB,GAC5C,IAAIpqF,EAAK90C,SAAS8U,cAAcoqH,GAChC,IAAKpqF,EACD,MAAM,IAAIh2B,MAAM,gCAAkCogH,GAEtD,OAAOpqF,CACX,EAIAm3tB,EAAWt0vB,UAAU88O,gCAAkC,WACnD,IAAIh5O,EAAQlE,KACZA,KAAKoF,KAAKkC,MAAM,uDAChBtH,KAAKwq4B,0BAA0Bx44B,QAAQ,SAAUurC,GAAM,OAAOr5B,EAAM8l4B,QAAQzs2B,EAAK,EACrF,EAIAm3tB,EAAWt0vB,UAAU0p4B,eAAiB,WAClC,MAA2B,oBAAbrh5B,SACRA,SAASskB,cAAc/M,KAAK8M,MAC5B,IACV,EACA4nvB,EAAWt0vB,UAAU6mD,OAAS,SAAU1pB,GACpC,IAAIophB,EAYJ,OAVIA,EADc,iBAAPpphB,EACD,CAACv9B,KAAKiq4B,eAAe1s2B,IAErBA,EAIA,CAACA,GAHDv9B,KAAKwq4B,0BAKfxq4B,KAAKoF,KAAKkC,MAAM,sCAAuCq/iB,GACvD3mjB,KAAKyq4B,gBAAgB9jV,GACdpphB,EAAKophB,EAAI,GAAKA,CACzB,EAIA+tM,EAAWt0vB,UAAUqq4B,gBAAkB,SAAU954B,GAC7C,OAAOA,EAASoC,IAAIiN,KAAK0q4B,eAAehv1B,KAAK17C,MACjD,EAIA00vB,EAAWt0vB,UAAUsq4B,eAAiB,SAAUnt2B,GAC5C,IAAKv9B,KAAK++f,aAAaprgB,IAAI4pC,GACvB,OAAOA,EAEX,IAAIsye,EAActye,EAAGpwB,UAUrB,OATI0igB,aAAuB7vgB,KAAK6p4B,cAC5Bh6X,EAAYw+F,YAAYrumB,KAAK68O,gBAAkB78O,KAAK2sN,kBAExD3sN,KAAK++f,aAAatoe,OAAO8G,GACrBv9B,KAAK4p4B,6BAA+B5p4B,KAAKi/f,SAAStrgB,IAAI4pC,KAC3Cv9B,KAAKi/f,SAASprgB,IAAI0pC,GACxB+s2B,SACLtq4B,KAAKi/f,SAASxoe,OAAO8G,IAElBA,CACX,EAIAm3tB,EAAWt0vB,UAAUoq4B,wBAA0B,WAC3C,IAAI7jV,EAAM,GAIV,OAHA3mjB,KAAK++f,aAAa/sgB,QAAQ,SAAUurC,GAChCophB,EAAI7yjB,KAAKypC,EACb,GACOophB,CACX,EACO+tM,CACX,CArP+B,CAlBnB,EAAQ,QAqVpBhzqB,EAAOj9F,QAAUiwwB,C,yBCxUjBhzqB,EAAOj9F,QArBH,SAAuCsZ,EAAImuN,EAASg9S,GAChDp/gB,OAAO0hC,iBAAiBxrB,KAAM,CAC1BjC,GAAI,CACA2tB,YAAY,EACZ/lC,MAAOoY,EACP0tB,UAAU,GAEdygM,QAAS,CACLxgM,YAAY,EACZ/lC,MAAOumO,EACPzgM,UAAU,GAEdkzV,UAAW,CACPjzV,YAAY,EACZ/lC,MAAOujhB,EACPz9e,UAAU,IAGtB,C,YCRJi2D,EAAOj9F,QAJP,WACE,MAAO,EACT,C,qCCnBA,IACQqb,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAUAmq4B,EAA+B,SAAU3m4B,GAMzC,SAAS2m4B,EAAcviF,GACnB,IAAIlkzB,EAAQF,EAAO3D,KAAKL,OAASA,KAuBjC,OAtBAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B0m4B,aAAc,CACVjl5B,MAAOyi0B,GAEXyiF,cAAe,CACXll5B,MAAO,MAGfyi0B,EAAYlwzB,iBAAiB,OAAQ,WACjCgM,EAAM2m4B,cAAc992B,OAAO,GAAG/6B,QAAQ,SAAUo+F,GAAW,OAAOlsF,EAAM2+yB,SAASzytB,EAAU,EAC/F,GACAg4tB,EAAYlwzB,iBAAiB,UAAW,SAAUsL,GAC9C,IAAIzN,EAAOyN,EAAGzN,KACd,IACI,IAAIq6F,EAAUzmF,KAAKyuB,MAAMriC,GACzBmO,EAAM2G,KAAK,UAAWulF,EAC1B,CACA,MAAOnmF,GAEP,CACJ,GACA/F,EAAMs0H,QAAQ,CAAExoH,KAAM,UACf9L,CACX,CAgCA,OA9DAnE,EAAU4q4B,EAAe3m4B,GAmCzB2m4B,EAAcvq4B,UAAUyizB,SAAW,SAAUzytB,GACzC,IAAIr6F,EAAO4T,KAAKC,UAAUwmF,GAC1B,IACIpwF,KAAK4q4B,aAAar4qB,KAAKx8N,EAC3B,CACA,MAAOkU,GAEP,CACJ,EAOA0g4B,EAAcvq4B,UAAUo4H,QAAU,SAAUpoC,GACxC,IAAIg4tB,EAAcpozB,KAAK4q4B,aACvB,MAA+B,YAA3BxiF,EAAYnnjB,YAAuD,WAA3BmnjB,EAAYnnjB,aAGzB,eAA3BmnjB,EAAYnnjB,YACZjhQ,KAAK6q4B,cAAc/24B,KAAKs8F,IACjB,IAEXpwF,KAAK6izB,SAASzytB,IACP,GACX,EACOu6yB,CACX,CAhEkC,CARf,uBA8EnBjpzB,EAAOj9F,QAAUkm5B,C,kBC9FjB,EAAQ,OACRjpzB,EAAOj9F,QAAU,a,kBCDjB,IAAI85P,EAAW,EAAQ,OAwBvB78J,EAAOj9F,QAJP,SAAc4vB,GACZ,OAAQA,GAASA,EAAMjgB,OAAUmqP,EAASlqO,GAAS,EACrD,C,yBCrBA,IAAIwsU,EAAavgV,UAEjBohF,EAAOj9F,QAAU,SAAUk9F,GACzB,GAAuB,iBAAZA,EAAsB,OAAOA,EACxC,MAAM,IAAIk/P,EAAW,2BACvB,C,+MCMIiqjB,EAAiB,UAAgB,CAAC,OAAQ,UACnCC,EAAgB,cAAoB,CAACD,EAAgB,UAAgB,CAC9EE,GAAIF,IACF,UAAgB,CAClBppd,GAAIopd,IACF,UAAgB,CAClBv+c,GAAIu+c,IACF,UAAgB,CAClB39L,GAAI29L,MAQFl/X,EAA4B,aAAiB,SAAUxghB,EAAMynH,GAC/D,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBp6F,EAAQtkB,EAAKskB,MACb+8f,EAAarhhB,EAAKqhhB,WAClBn0L,EAAiBltV,EAAKktV,eACtBjpT,EAAOjkC,EAAKikC,KACZ472B,EAAY7/4B,EAAKw5C,KACjBw/zB,EAAgBh52B,EAAKg52B,cACrB36nB,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCwtG,EAAe7rV,EAAK6rV,aACpB7kT,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,QAAS,aAAc,iBAAkB,OAAQ,OAAQ,gBAAiB,KAAM,iBAEtJ8/4B,GAAW,IAAAnhqB,YAAW,KACtB70M,GAAS,QAAmB49E,EAAU,iBAEtCkmO,GAAwB,SACxBD,EAAYC,EAAsB,GAClCC,EAAkBD,EAAsB,GAExCmyjB,EAAe,GAEnB,GAAIz73B,EACF,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIrlB,EAAOP,OAAOO,KAAKqlB,GAGvB,GAAIrlB,EAAK+J,OAAQ,CACf,IAAIqzsB,EAAWp9sB,EAAK,GAChB0E,EAAY2gB,EAAM+3rB,GAItBh7L,EAA2B,SAAd19gB,EACbo84B,EAAar34B,KAAKohC,EAAS,IAAMuyqB,EAAW,IAAM14sB,EACpD,CACF,KAAqB,UAAV2gB,IACT+8f,GAAa,GAIjB,IAAI9hhB,GAAQ,OAAgB,CAC1B0kC,KAAMA,EACNipT,eAAgBA,EAChB1zS,KAAMqm2B,EACN7gY,SAAUqC,EACV30L,WAAYozjB,GAAoC,IAAxBC,EAAa/24B,OACrC6iV,cAAc,OAAS,CAAC,EAAGA,EAAc,CACvCnkV,UAAWmmV,EAAgBjrV,QAAwB,MAAhBipV,OAAuB,EAASA,EAAankV,YAAc,QAG9Fys3B,EAAW503B,EAAM403B,SACjBn53B,EAAYuE,EAAMvE,UAClBw+C,EAAOj6C,EAAMi6C,KACbwle,EAAWz/gB,EAAMy/gB,SACjB38f,EAAQ9iB,EAAM8iB,MACd4x2B,EAAY103B,EAAMynC,MAGtB,GADAit1B,EAAUxswB,KAAM,OAAckmO,GAAW,QAAc,OAAyBlmO,EAAK,gBAAiBwswB,EAAUxswB,OAC3G0swB,IAAanb,EAAe,OAAO,KAEf,iBAAdz6nB,IACT01oB,EAAUz60B,KAAOA,EACjBy60B,EAAU5x2B,MAAQA,EAClB4x2B,EAAU5yW,WAAarC,GAGzB,IAAI1gf,EAAQ0I,EAAM1I,MASlB,OAPItjC,IAGFsjC,GAAQ,OAAS,CAAC,EAAG0I,EAAM1I,MAAO211B,EAAU311B,OAC5C0I,EAAM,eAAiBhsC,GAGL,gBAAoBujP,GAAW,OAAS,CAAC,EAAGv3M,EAAOit1B,EAAW,CAChF311B,MAAOA,EACPogF,UAAW,eAAiB,EAAQ,CAACA,EAAW50E,EAAQ0P,GAAQ,OAAQwle,GAAYl1e,EAAS,UAAUlnC,OAAOm94B,MAElH,GACAv/X,EAAavjV,YAAc,eAC3BujV,EAAavyT,aAzFM,CACjB3pM,MAAO,OACP+8f,YAAY,EACZp9e,MAAM,GAuFR,S,kBChHA,EAAQ,OACRqyD,EAAOj9F,QAAU,Y,YCYjBi9F,EAAOj9F,QAJP,SAAkB+F,GAChB,OAAOwV,KAAKi4T,SAASpkU,IAAIrJ,EAC3B,C,+BCXe,SAAS4g5B,EAAgBzn0B,EAAGxjE,GAKzC,OAJAir4B,EAAkBth5B,OAAOmW,eAAiBnW,OAAOmW,eAAey7C,OAAS,SAAyBioB,EAAGxjE,GAEnG,OADAwjE,EAAEzjE,UAAYC,EACPwjE,CACT,EACOyn0B,EAAgBzn0B,EAAGxjE,EAC5B,C,4BCMAuhF,EAAOj9F,QALP,WACEub,KAAKi4T,SAAW,GAChBj4T,KAAK+S,KAAO,CACd,C,aCJGmjH,QAAQx0C,OAAO,eAAgB,CAAC,oBAAqB,wBAAwB,wBAAwB,yBAAyB,qBAAqB,uBAAuB,wBAAwB,sBAAsB,0BAA0B,uBAAuB,0BAA0B,wBAAwB,+BAA+B,wBAAwB,wBAAwB,wBAAwB,0BAA0B,qBAAqB,sBAAsB,qBAAqB,0BAA0B,uBAAuB,uBAAuB,2BAA2B,sBAAsB,oBAAoB,0BAA0B,2BACtqBw0C,QAAQx0C,OAAO,oBAAqB,CAAC,8CAA8C,wCAAwC,gCAAgC,sCAAsC,mCAAmC,0CAA0C,mCAAmC,qCAAqC,oCAAoC,0CAA0C,iCAAiC,gCAAgC,0CAA0C,+CAA+C,0CAA0C,mDAAmD,yCAAyC,6CAA6C,oCAAoC,oCAAoC,yCAAyC,4CAA4C,kCAAkC,6BAA6B,gCAAgC,0CAA0C,8CAA8C,gDACrkCw0C,QAAQx0C,OAAO,wBAAyB,IAErCklC,UAAU,cAAe,CAAC,WAAY,KAAM,SAAU,YAAa,SAASssJ,EAAU/wJ,EAAI8wJ,EAAQ9sJ,GACjG,IAAI0qM,EAAc1qM,EAAUxyH,IAAI,eAAiBwyH,EAAUtyH,IAAI,eAAiB,KAChF,MAAO,CACLu1H,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC7B,IAAIsixB,EAAgBp4nB,EAAOlqJ,EAAMuixB,WAC/BC,EAAet4nB,EAAOlqJ,EAAMmyV,UAC5Bswb,EAAiBv4nB,EAAOlqJ,EAAM0ixB,YAC9BC,EAAgBz4nB,EAAOlqJ,EAAM48sB,WAC7BlzxB,GAAa,EACbtpD,EAAM,CAAC,EACPwi5B,EAAQ,CAAC,EA0BX,SAASC,EAAqBtl5B,GAC5B,OAAImsD,EACK,CAAC/rD,MAAOJ,EAAQuI,YAAc,MAEhC,CAACjI,OAAQN,EAAQwI,aAAe,KACzC,CAkCA,SAAS+84B,IACPvl5B,EAAQojH,YAAY,cACjBO,SAAS,YACT9gH,IAAIA,GACPoi5B,EAAa5i3B,EACf,CAkCA,SAASmj3B,IACPxl5B,EAAQ6C,IAAIwi5B,GACZrl5B,EAAQojH,YAAY,cACjBO,SAAS,YACZyhyB,EAAc/i3B,EAChB,EAxGE8pB,KAAgB,eAAgBs2E,KAE9B5/H,EAAM,CACJzC,MAAO,IAETil5B,EAAQ,CAACjl5B,MAAO,OAEhByC,EAAM,CACJvC,OAAQ,IAEV+k5B,EAAQ,CAAC/k5B,OAAQ,MAEd+hC,EAAM2lG,MAAMvF,EAAMgjxB,cACrBzl5B,EAAQ2jH,SAAS,QACdA,SAAS,YACTstJ,KAAK,iBAAiB,GACtBA,KAAK,eAAe,GACpBpuQ,IAAIA,GAyFXw/B,EAAMw6M,OAAOp6G,EAAMgjxB,YAAa,SAASC,GACnCA,EAxCN,WACE,IAAK1l5B,EAAQ4jH,SAAS,cAAgB5jH,EAAQ4jH,SAAS,QACrD,OAAO4hyB,IAGT3pxB,EAAGvrH,QAAQ404B,EAAe7i3B,IACvB9xB,KAAK,WACJvQ,EAIG6C,IAAIyi5B,EAAqBtl5B,EAAQ,KAGjCojH,YAAY,YACZO,SAAS,cACTstJ,KAAK,iBAAiB,GACtBA,KAAK,eAAe,GAEnBs5D,EACFA,EAAYvqU,EAAS,CACnBojH,YAAa,OACb9kF,GAAI+m3B,IACHl/4B,QAAiB,QAAEq/4B,GAEtB54nB,EAASxpK,YAAYpjH,EAAS,OAAQ,CACpCs+B,GAAI+m3B,IACH904B,KAAKi14B,EAEZ,EAAG51wB,QAAQtmH,KACf,CAWIs3zB,GA/EE5g1B,EAAQ4jH,SAAS,aAAe5jH,EAAQ4jH,SAAS,SAIrDiY,EAAGvrH,QAAQy04B,EAAc1i3B,IACtB9xB,KAAK,WACJvQ,EAAQojH,YAAY,YACjBO,SAAS,cACTstJ,KAAK,iBAAiB,GACtBA,KAAK,eAAe,GAEnBs5D,EACFA,EAAYvqU,EAAS,CACnB2jH,SAAU,OACV1mE,OAAQ,OACRp6C,IAAK,CACHmE,SAAU,UAEZs3B,GAAIgn3B,EAAqBtl5B,EAAQ,MAChCmG,QAAiB,QAAEo/4B,GAEtB34nB,EAASjpK,SAAS3jH,EAAS,OAAQ,CACjC6C,IAAK,CACHmE,SAAU,UAEZs3B,GAAIgn3B,EAAqBtl5B,EAAQ,MAChCuQ,KAAKg14B,EAEZ,EAAG31wB,QAAQtmH,KAuDf,EACF,EAEJ,IAEFsmH,QAAQx0C,OAAO,wBAAyB,IAEvCklC,UAAU,oBAAqB,WAC9B,MAAO,CACLkO,SAAU,IACV1L,KAAM,SAASzgG,EAAO+6O,EAAM36I,GAC1BA,EAAMyF,SAAS,WAAY,SAASxgF,GAClC+6E,EAAMoF,KAAK,WAAYngF,GAAY,EAAI,KACzC,EACF,EAEJ,GAEAkoF,QAAQx0C,OAAO,yBAA0B,CAAC,wBAAyB,0BAElEglC,SAAS,qBAAsB,CAC9BulxB,aAAa,IAGd1k2B,WAAW,yBAA0B,CAAC,SAAU,SAAU,qBAAsB,SAAS62O,EAAQpM,EAAQk6nB,GAExGls4B,KAAK6rS,OAAS,GAGd7rS,KAAKis4B,YAAc,SAASE,IACRj2wB,QAAQ9yB,UAAU4uK,EAAOi6nB,aACzC7tnB,EAAO9vJ,MAAM0jJ,EAAOi6nB,aAAeC,EAAgBD,cAEnD/1wB,QAAQlkI,QAAQgO,KAAK6rS,OAAQ,SAAS9hS,GAChCA,IAAUoi4B,IACZpi4B,EAAM2v0B,QAAS,EAEnB,EAEJ,EAGA150B,KAAKos4B,SAAW,SAASC,GACvB,IAAI/1rB,EAAOt2M,KACXA,KAAK6rS,OAAO/3S,KAAKu44B,GAEjBA,EAAW7lxB,IAAI,WAAY,SAASr6G,GAClCmqM,EAAKg2rB,YAAYD,EACnB,EACF,EAGArs4B,KAAKss4B,YAAc,SAASvi4B,GAC1B,IAAIvT,EAAQwJ,KAAK6rS,OAAOtjT,QAAQwhB,IACjB,IAAXvT,GACFwJ,KAAK6rS,OAAO9+Q,OAAOv2B,EAAO,EAE9B,CACF,IAICowH,UAAU,eAAgB,WACzB,MAAO,CACLr/E,WAAY,yBACZ2qO,aAAc,YACdE,YAAY,EACZp9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,uCAC9B,EAEJ,GAGCpO,UAAU,oBAAqB,WAC9B,MAAO,CACLnf,QAAS,gBACT2qK,YAAY,EACZt9I,SAAU,IACVE,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,6CAC9B,EACArsG,MAAO,CACL4j3B,QAAS,IACTC,UAAW,KACX9yD,OAAQ,KACRn/Y,WAAY,MAEdhzZ,WAAY,WACVvnC,KAAKys4B,WAAa,SAASnm5B,GACzB0Z,KAAKus4B,QAAUjm5B,CACjB,CACF,EACA8iI,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO2jxB,GACpCpm5B,EAAQ2jH,SAAS,QACjByiyB,EAAcN,SAASzj3B,GAEvBA,EAAMgk3B,UAAY5jxB,EAAM4jxB,WAAa,YACrChk3B,EAAM6j3B,UAAYzjxB,EAAMyjxB,WAAa,eACrC7j3B,EAAMw6M,OAAO,SAAU,SAASx9O,GAC9BW,EAAQk+Q,YAAY77O,EAAMgk3B,YAAahn5B,GACnCA,GACF+m5B,EAAcT,YAAYtj3B,EAE9B,GAEAA,EAAMik3B,WAAa,SAASlvmB,GACrB/0Q,EAAM4xa,YACJ78J,GAA2B,KAAjBA,EAAOzL,QACpBtpQ,EAAM+wzB,QAAU/wzB,EAAM+wzB,OAG5B,EAEA,IAAI370B,EAAK,kBAAoB4qB,EAAMw1Q,IAAM,IAAM34S,KAAKQ,MAAsB,IAAhBR,KAAKm+F,UAC/Dh7D,EAAMkk3B,UAAY9u4B,EAAK,OACvB4qB,EAAMmk3B,OAAS/u4B,EAAK,OACtB,EAEJ,GAGC6oH,UAAU,sBAAuB,WAChC,MAAO,CACLwrJ,YAAY,EACZrxD,SAAU,GACVh9N,SAAS,EACT0jH,QAAS,qBACT2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOgkxB,EAAoB36nB,GAIxD26nB,EAAmBN,WAAWr6nB,EAAWzpP,EAAOutG,QAAQtmH,MAC1D,EAEJ,GAICg3G,UAAU,yBAA0B,WACnC,MAAO,CACLnf,QAAS,qBACT2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOxhF,GACpC5e,EAAMw6M,OAAO,WAAa,OAAO57L,EAAWwhF,EAAMikxB,uBAAyB,EAAG,SAAST,GACrF,GAAIA,EAAS,CACX,IAAI7ooB,EAAOxtI,QAAQ5vI,QAAQA,EAAQ,GAAGiX,cASnC,6KARHmmQ,EAAK16Q,KAAK,IACV06Q,EAAKnzI,OAAOg8wB,EACd,CACF,EACF,EAYJ,GAEAr2wB,QAAQx0C,OAAO,qBAAsB,IAEpCn6C,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAU,eAAgB,WAAY,SAAS62O,EAAQrM,EAAUC,EAAQe,EAActlJ,GAC9I2wJ,EAAO6unB,YAAcj7nB,EAAOvkQ,MAC5BskQ,EAAS9nK,SAAS,SAClB+nK,EAAO7jJ,KAAK,OAAQ,SAChBiwJ,EAAO6unB,WACTl7nB,EAAS9nK,SAAS,qBAGpB,IAAIijyB,EAAmBh3wB,QAAQ9yB,UAAU4uK,EAAOk7nB,kBAC9Cn6nB,EAAaf,EAAOk7nB,iBAApBn6nB,CAAsCqL,EAAOvH,SAAW,KAEtDq2nB,GACFz/wB,EAAS,WACP2wJ,EAAO3wQ,OACT,EAAG0Y,SAAS+m3B,EAAkB,IAElC,IAECtmxB,UAAU,WAAY,WACrB,MAAO,CACLr/E,WAAY,qBACZ2qO,aAAc,QACdp9I,SAAU,IACVE,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,+BAC9B,EACAo9I,YAAY,EACZzpP,MAAO,CACLlb,MAAO,KAGb,GAEAyoH,QAAQx0C,OAAO,uBAAwB,IAEtCglC,SAAS,kBAAmB,CAC3BymxB,YAAa,SACbC,YAAa,UAGd7l2B,WAAW,uBAAwB,CAAC,kBAAmB,SAAS8l2B,GAC/Drt4B,KAAKmt4B,YAAcE,EAAaF,aAAe,SAC/Cnt4B,KAAKot4B,YAAcC,EAAaD,aAAe,OACjD,IAECxmxB,UAAU,cAAe,CAAC,SAAU,SAASqsJ,GAC5C,MAAO,CACLxrK,QAAS,CAAC,cAAe,WACzBlgE,WAAY,uBACZ2qO,aAAc,UACd9oJ,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAI66lB,EAAc76lB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAC5C86lB,EAAkBt6nB,EAAOlqJ,EAAMykxB,gBAEnCln5B,EAAQuU,KAAK,SAAS1R,IAAI,CAACqzD,QAAS,SAGpC2mQ,EAAYjN,QAAU,WACpB5vT,EAAQk+Q,YAAY8ooB,EAAYH,YAAaj3wB,QAAQ6xF,OAAOo7F,EAAYnM,YAAaruR,EAAM2lG,MAAMvF,EAAM0kxB,cACzG,EAGAnn5B,EAAQqkH,GAAG2iyB,EAAYF,YAAa,WAClC,IAAIrkxB,EAAM/6E,SAAV,CAIA,IAAI2nR,EAAWrvU,EAAQ4jH,SAASojyB,EAAYH,aAEvCx3kB,IAAYz/L,QAAQ9yB,UAAU2lB,EAAM2kxB,cACvC/k3B,EAAMqlG,OAAO,WACXm1L,EAAYlN,cAAc0f,EAAW,KAAOhtS,EAAM2lG,MAAMvF,EAAM0kxB,cAC9DtqlB,EAAYjN,SACd,EARF,CAUF,GAEIntL,EAAMykxB,gBACR7k3B,EAAMw6M,OAAOoqqB,EAAiB,SAASG,GACrC3kxB,EAAMoF,KAAK,cAAeu/wB,EAAc,QAAK524B,EAC/C,EAEJ,EAEJ,IAEC8vH,UAAU,iBAAkB,WAC3B,MAAO,CACLnf,QAAS,CAAC,iBAAkB,WAC5BlgE,WAAY,uBACZ2qO,aAAc,SACd9oJ,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAI66lB,EAAc76lB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAIhD,SAASk7lB,IACP,OAAOC,EAAiB7kxB,EAAM8kxB,iBAAiB,EACjD,CAMA,SAASD,EAAiB94nB,EAAWxkQ,GACnC,OAAO4lH,QAAQ9yB,UAAU0xK,GAAansP,EAAM2lG,MAAMwmJ,GAAaxkQ,CACjE,CAZAhqB,EAAQuU,KAAK,SAAS1R,IAAI,CAACqzD,QAAS,SAepC2mQ,EAAYjN,QAAU,WACpB5vT,EAAQk+Q,YAAY8ooB,EAAYH,YAAaj3wB,QAAQ6xF,OAAOo7F,EAAYnM,YAAa22lB,KACvF,EAGArn5B,EAAQqkH,GAAG2iyB,EAAYF,YAAa,WAC9BrkxB,EAAM/6E,UAIVrlB,EAAMqlG,OAAO,WACXm1L,EAAYlN,cAAc3vT,EAAQ4jH,SAASojyB,EAAYH,aAnBlDS,EAAiB7kxB,EAAM+kxB,kBAAkB,GAmB0CH,KACxFxqlB,EAAYjN,SACd,EACF,EACF,EAEJ,GAEAhgL,QAAQx0C,OAAO,wBAAyB,IAEvCn6C,WAAW,wBAAyB,CAAC,SAAU,WAAY,YAAa,WAAY,WAAY,SAAS62O,EAAQrM,EAAUi/C,EAAWvjM,EAAUylJ,GAC/I,IAIE66nB,EAAiBC,EAJf1rzB,EAAOtiF,KACTiu4B,EAAS3rzB,EAAK2rzB,OAAS7vnB,EAAO6vnB,OAAS,GACvCC,EAAkB,qBAClBtzN,EAAex8Z,EAAOr6O,OAGpBoq2B,GAAY,EA6KhB,SAASC,EAAU534B,GACjB,IAAK,IAAInR,EAAI,EAAGA,EAAI4o5B,EAAO754B,OAAQ/O,IACjC4o5B,EAAO5o5B,GAAGm84B,MAAMz91B,OAAS1+C,IAAMmR,CAEnC,CAmCA,SAAS634B,EAAe7M,GACtB,IAAK,IAAIn84B,EAAI,EAAGA,EAAI4o5B,EAAO754B,OAAQ/O,IACjC,GAAI4o5B,EAAO5o5B,GAAGm84B,QAAUA,EACtB,OAAOn84B,CAGb,CAEA,SAASip5B,IACHP,IACF/8kB,EAAUruR,OAAOor2B,GACjBA,EAAkB,KAEtB,CAQA,SAASQ,IACPD,IACA,IAAIlwzB,GAAYggM,EAAOhgM,UAClBr4F,MAAMq4F,IAAaA,EAAW,IACjC2vzB,EAAkB/8kB,EAAUw9kB,EAASpwzB,GAEzC,CAEA,SAASowzB,IACP,IAAIpwzB,GAAYggM,EAAOhgM,SACnB4vzB,IAAcjo5B,MAAMq4F,IAAaA,EAAW,GAAK6vzB,EAAO754B,OAC1DgqR,EAAOt2R,OAEPs2R,EAAOprJ,OAEX,CAvPA++I,EAAS9nK,SAAS,YAElB3nB,EAAKmszB,SAAW,SAASjN,EAAOl74B,GAC9B2n5B,EAAOn64B,KAAK,CACV0t4B,MAAOA,EACPl74B,QAASA,IAEX2n5B,EAAO764B,KAAK,SAASwG,EAAGC,GACtB,OAAQD,EAAE4n4B,MAAMhr4B,OAASqD,EAAE2n4B,MAAMhr4B,KACnC,IAEIgr4B,EAAMhr4B,QAAU4nR,EAAOr6O,QAA4B,IAAlBkq2B,EAAO754B,SAAiB8hI,QAAQhiH,SAASkqQ,EAAOr6O,WAC/Eq6O,EAAOswnB,qBACTtwnB,EAAOswnB,mBAAqB,MAG9B9zN,EAAe4mN,EAAMhr4B,MACrB4nR,EAAOr6O,OAASy91B,EAAMhr4B,MACtB434B,EAAUxzN,GACVt4lB,EAAK2tO,OAAOg+kB,EAAOI,EAAe7M,KACZ,IAAlByM,EAAO754B,QACTgqR,EAAO3gC,OAGb,EAEAn7J,EAAKqszB,gBAAkB,WACrB,IAAK,IAAItp5B,EAAI,EAAGA,EAAI4o5B,EAAO754B,OAAQ/O,IACjC,GAAI4o5B,EAAO5o5B,GAAGm84B,MAAMhr4B,QAAUokrB,EAC5B,OAAOv1rB,CAGb,EAEAi9F,EAAKx6F,KAAOs2R,EAAOt2R,KAAO,WACxB,IAAIo8W,GAAY5hR,EAAKqszB,kBAAoB,GAAKV,EAAO754B,OAErD,GAAiB,IAAb8vW,IAAkB9lF,EAAOs/jB,SAK7B,OAAOp7vB,EAAK2tO,OAAOg+kB,EAAO/piB,GAAW,QAJnC9lF,EAAOprJ,OAKX,EAEA1wC,EAAKznD,KAAOujP,EAAOvjP,KAAO,WACxB,IAAIqpU,EAAW5hR,EAAKqszB,kBAAoB,EAAI,EAAIV,EAAO754B,OAAS,EAAIkuF,EAAKqszB,kBAAoB,EAE7F,IAAIvwnB,EAAOs/jB,UAAYx5e,IAAa+piB,EAAO754B,OAAS,EAKpD,OAAOkuF,EAAK2tO,OAAOg+kB,EAAO/piB,GAAW,QAJnC9lF,EAAOprJ,OAKX,EAEA1wC,EAAKsszB,YAAc,SAASpN,GAC1B,IAAIhr4B,EAAQ634B,EAAe7M,GAG3ByM,EAAOlh3B,OAAOv2B,EAAO,GACjBy34B,EAAO754B,OAAS,GAAKwmrB,IAAiBpkrB,EACpCA,GAASy34B,EAAO754B,QAClBwmrB,EAAeqzN,EAAO754B,OAAS,EAC/BgqR,EAAOr6O,OAAS62oB,EAChBwzN,EAAUxzN,GACVt4lB,EAAK2tO,OAAOg+kB,EAAOA,EAAO754B,OAAS,MAEnCwmrB,EAAepkrB,EACf4nR,EAAOr6O,OAAS62oB,EAChBwzN,EAAUxzN,GACVt4lB,EAAK2tO,OAAOg+kB,EAAOz34B,KAEZokrB,EAAepkrB,IACxBokrB,IACAx8Z,EAAOr6O,OAAS62oB,GAII,IAAlBqzN,EAAO754B,SACTwmrB,EAAe,KACfx8Z,EAAOr6O,OAAS,KAEpB,EAGAu+C,EAAK2tO,OAAS7xC,EAAO6xC,OAAS,SAAS4+kB,EAAW9/4B,GAChD,IAAI27X,EAAY2jhB,EAAeQ,EAAUrN,YAEvB1q4B,IAAd/H,IACFA,EAAY27X,EAAYpoS,EAAKqszB,kBAAoB,OAAS,QAGxDE,EAAUrN,MAAMhr4B,QAAUokrB,GAC3Bx8Z,EAAOswnB,oBAoFZ,SAAgBlN,EAAOhr4B,EAAOzH,GAC5B,IAAIo/4B,EAAJ,CAMA,GAFAj4wB,QAAQlzB,OAAOw+xB,EAAO,CAACzy4B,UAAWA,IAClCmnI,QAAQlzB,OAAOiryB,EAAOrzN,GAAc4mN,OAAS,CAAC,EAAG,CAACzy4B,UAAWA,IACzDmkR,EAASl9Q,QAAQ+7Q,KAAcqM,EAAOswnB,oBACxCT,EAAOz34B,GAAOlQ,SAAWg8F,EAAK2rzB,OAAO754B,OAAS,EAAG,CACjD654B,EAAOz34B,GAAOlQ,QAAQyP,KAAKm44B,EAAiB1M,EAAMzy4B,WAClD,IAAI+/4B,EAAaxszB,EAAKqszB,kBAElBz4wB,QAAQhiH,SAAS463B,IAAeb,EAAOa,GAAYxo5B,SACrD2n5B,EAAOa,GAAYxo5B,QAAQyP,KAAKm44B,EAAiB1M,EAAMzy4B,WAGzDqvR,EAAOswnB,oBAAqB,EAC5Bx7nB,EAASvoK,GAAG,WAAYsjyB,EAAOz34B,GAAOlQ,QAAS,SAASA,EAASqP,GACjD,UAAVA,IACFyoR,EAAOswnB,mBAAqB,KAC5Bx7nB,EAASjmJ,IAAI,WAAY3mI,GAE7B,EACF,CAEA83R,EAAOr6O,OAASy91B,EAAMhr4B,MACtBokrB,EAAe4mN,EAAMhr4B,MACrB434B,EAAU534B,GAGV+34B,GA3BA,CA4BF,CAlHIQ,CAAOF,EAAUrN,MAAO92gB,EAAW37X,EAEvC,EAGAqvR,EAAO4wnB,aAAe,SAASxN,GAC7B,OAAQA,EAAMA,MAAMhr4B,KACtB,EAEA4nR,EAAOu3C,SAAW,SAAS6rkB,GACzB,OAAOpjnB,EAAOr6O,SAAWy91B,EAAMA,MAAMhr4B,KACvC,EAEA4nR,EAAO6wnB,eAAiB,WACtB,OAAyB,IAAlB7wnB,EAAOr6O,QAAgBq6O,EAAOs/jB,QACvC,EAEAt/jB,EAAO8wnB,eAAiB,WACtB,OAAO9wnB,EAAOr6O,SAAWkq2B,EAAO754B,OAAS,GAAKgqR,EAAOs/jB,QACvD,EAEAt/jB,EAAOprJ,MAAQ,WACRorJ,EAAO+wnB,UACVnB,GAAY,EACZM,IAEJ,EAEAlwnB,EAAO3gC,KAAO,WACPuwpB,IACHA,GAAY,EACZO,IAEJ,EAEAx8nB,EAASpnK,GAAG,aAAcyzK,EAAOprJ,OACjC++I,EAASpnK,GAAG,aAAcyzK,EAAO3gC,MAEjC2gC,EAAO53J,IAAI,WAAY,WACrB2nxB,GAAY,EACZG,GACF,GAEAlwnB,EAAOj7C,OAAO,eAAgB,SAASisqB,GACrCl8nB,EAASl9Q,QAAQ+7Q,GAAWq9nB,EAC9B,GAEAhxnB,EAAOj7C,OAAO,WAAYorqB,GAE1BnwnB,EAAOuE,iBAAiB,SAkFxB,SAAyBsrnB,GAClBA,EAAO754B,SACVgqR,EAAOswnB,mBAAqB,KAEhC,GApFAtwnB,EAAOj7C,OAAO,SAAU,SAAS3sO,GAC/B,GAAI0/H,QAAQhiH,SAAS1d,IAAUokrB,IAAiBpkrB,EAAO,CACrD,IAAK,IAAInR,EAAI,EAAGA,EAAI4o5B,EAAO754B,OAAQ/O,IACjC,GAAI4o5B,EAAO5o5B,GAAGm84B,MAAMhr4B,QAAUA,EAAO,CACnCA,EAAQnR,EACR,KACF,CAGU4o5B,EAAOz34B,KAEjB434B,EAAU534B,GACV8rF,EAAK2tO,OAAOg+kB,EAAOz34B,IACnBokrB,EAAepkrB,EAEnB,CACF,EAsFF,IAECowH,UAAU,cAAe,WACxB,MAAO,CACLwrJ,YAAY,EACZ7qO,WAAY,wBACZ2qO,aAAc,WACdp9I,SAAU,IACVE,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,qCAC9B,EACArsG,MAAO,CACLob,OAAQ,KACRq6C,SAAU,IACVgxzB,aAAc,IACdD,QAAS,IACTzxD,OAAQ,KAGd,GAEC92tB,UAAU,WAAY,CAAC,WAAY,SAASssJ,GAC3C,MAAO,CACLzrK,QAAS,eACTqtB,SAAU,IACVs9I,YAAY,EACZp9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,kCAC9B,EACArsG,MAAO,CACLqhM,OAAQ,KACRxzN,MAAO,MAET4yH,KAAM,SAAUzgG,EAAOriC,EAASyiI,EAAOsmxB,GACrC/o5B,EAAQ2jH,SAAS,iBACjBolyB,EAAaZ,SAAS9l3B,EAAOriC,GAE7BqiC,EAAM69F,IAAI,WAAY,WACpB6oxB,EAAaT,YAAYjm3B,EAC3B,GAEAA,EAAMw6M,OAAO,SAAU,SAASp/L,GAC9BmvO,EAASnvO,EAAS,WAAa,eAAez9C,EAAS,SACzD,EACF,EAEJ,IAECyiC,UAAU,iBAAkB,CAAC,cAC9B,SAAS8nS,GACP,IAAIq9kB,EAAkB,qBAClB5gyB,EAAc,iBAElB,SAAS5D,EAAYpjH,EAASwjH,EAAW56F,GACvC5oB,EAAQojH,YAAYI,GAChB56F,GACFA,GAEJ,CAEA,MAAO,CACLog4B,eAAgB,SAAShp5B,EAASwjH,EAAWtoG,GAC3C,GAAkB,WAAdsoG,EAAwB,CAC1B,IACI/6G,EAAYzI,EAAQyP,KAAKm44B,GACzBqB,EAA+B,SAAdxg5B,EAAuBu+G,EAAc,OAASA,EAAc,QAC7EkiyB,EAAgB9lyB,EAAYhuD,KAAK17C,KAAM1Z,EAAS,CAACip5B,EAAgBjiyB,EAAcv+G,GAAWmP,KAAK,KAAMsD,GAOzG,OANAlb,EAAQ2jH,SAASqD,EAAcv+G,GAE/B8hU,EAAYvqU,EAAS,CAAC2jH,SAAUslyB,IAC7B9i5B,QACA+U,KAAKgu4B,GAED,WAEP,CACF,CACAhu4B,GACF,EACAiu4B,kBAAmB,SAAUnp5B,EAASwjH,EAAWtoG,GAC/C,GAAkB,WAAdsoG,EAAwB,CAC1B,IAEIylyB,EAA+B,SADnBjp5B,EAAQyP,KAAKm44B,GACe5gyB,EAAc,OAASA,EAAc,QAC7EkiyB,EAAgB9lyB,EAAYhuD,KAAK17C,KAAM1Z,EAASip5B,EAAgB/t4B,GAMpE,OAJAqvT,EAAYvqU,EAAS,CAAC2jH,SAAUslyB,IAC7B9i5B,QACA+U,KAAKgu4B,GAED,WAEP,CACF,CACAhu4B,GACF,EAEJ,IAEA00H,QAAQx0C,OAAO,sBAAuB,IAEtCw0C,QAAQx0C,OAAO,0BAA2B,IAEzC4qC,QAAQ,gBAAiB,CAAC,OAAQ,UAAW,aAAc,gBAAiB,eAAgB,SAASygJ,EAAMq9B,EAASvB,EAAYM,EAAeL,GAE9I,IAEI4mmB,EACAC,EAHAC,EAA4B,kCAiPhC,SAASC,EAAqBrl5B,GAC5B,OAAOs+S,EAAa6mmB,EAAmB,CAACnl5B,IAAKA,IAAM,GAAM,EAC3D,CAkHA,SAASsl5B,EAA0Btx2B,EAAQux2B,EAAYC,GACrD,OAAO,WACL,OAAOxx2B,EAAO2zE,OAAO49xB,EAAa,EAAGC,EAASD,EAAa,EAC7D,CACF,CAEA,SAASE,EAA0Bzx2B,EAAQn5C,GAEzC,IADA,IAAI6q5B,EAAgB1x2B,EAAO2zE,OAAO9sH,GACzB2gC,EAAI,EAAGA,EAAI2p3B,EAAkBv74B,OAAQ4xB,IAC5C,GAAI,IAAI8L,OAAO,IAAM692B,EAAkB3p3B,GAAGx7B,KAAKtI,KAAKgu5B,GAAgB,CAClE,IAAIn64B,EAAO454B,EAAkB3p3B,GAC7B,MAAO,CACLgq3B,OAAQ3q5B,EAAI0Q,EAAKvL,IAAI4J,OACrB0pF,OAAQ/nF,EAAKqoC,UAEjB,CAGF,MAAO,CACL4x2B,OAAQ3q5B,EAAI,EACZy4F,OAAQ,WACN,OAAOoyzB,EAAcx93B,OAAO,EAC9B,EAEJ,CAoHA,SAASmkP,EAAMpkP,GACb,OAAO0T,SAAS1T,EAAK,GACvB,CAiBA,SAAS6mP,EAAiBC,EAAU5mO,GAClC4mO,EAAWA,EAASx1Q,QAAQ,KAAM,IAClC,IAAIy1Q,EAA0B3wP,KAAKuvB,MAAM,yBAA2BmhO,GAAY,IAChF,OAAOxzQ,MAAMyzQ,GAA2B7mO,EAAW6mO,CACrD,CAEA,SAASG,EAAer4N,EAAM+pJ,GAG5B,OAFA/pJ,EAAO,IAAIz4B,KAAKy4B,EAAKmkE,YAChBksC,WAAWrwG,EAAK2jG,aAAeomD,GAC7B/pJ,CACT,CAEA,SAASm4N,EAAuBn4N,EAAMi4N,EAAUzoP,GAC9CA,EAAUA,GAAW,EAAI,EACzB,IAAI4oP,EAAqBp4N,EAAKq8F,oBAE9B,OAAOg8H,EAAer4N,EAAMxwB,GADPwoP,EAAiBC,EAAUG,GACQA,GAC1D,CAhhBA15P,KAAKosD,KAAO,WACVsj1B,EAAWtlmB,EAAQrsS,GAEnBiC,KAAKq4mB,QAAU,CAAC,EAChBr4mB,KAAK+nD,WAAa,CAAC,EAEnB4n1B,EAAoB,CAClB,CACEnl5B,IAAK,OACLq/G,MAAO,SACP/oG,MAAO,SAASnb,GAASqa,KAAKy9E,MAAQ93F,CAAO,EAC7Cy4C,UAAW,SAASkD,GAClB,IAAIqc,EAAQ,IAAI90C,KAEhB,OADA80C,EAAMioD,YAAYpgH,KAAKM,IAAIw7C,EAAKukE,gBACzBgjM,EAAWlrP,EAAO,OAC3B,GAEF,CACEnzD,IAAK,KACLq/G,MAAO,SACP/oG,MAAO,SAASnb,GAASA,GAASA,EAAOqa,KAAKy9E,KAAO93F,EAAQ,GAAKA,EAAQ,IAAOA,EAAQ,IAAM,EAC/Fy4C,UAAW,SAASkD,GAClB,IAAIqc,EAAQ,IAAI90C,KAEhB,OADA80C,EAAMioD,YAAYpgH,KAAKM,IAAIw7C,EAAKukE,gBACzBgjM,EAAWlrP,EAAO,KAC3B,GAEF,CACEnzD,IAAK,IACLq/G,MAAO,WACP/oG,MAAO,SAASnb,GAASqa,KAAKy9E,MAAQ93F,CAAO,EAC7Cy4C,UAAW,SAASkD,GAClB,IAAIqc,EAAQ,IAAI90C,KAEhB,OADA80C,EAAMioD,YAAYpgH,KAAKM,IAAIw7C,EAAKukE,gBACzBgjM,EAAWlrP,EAAO,IAC3B,GAEF,CACEnzD,IAAK,KACLq/G,MAAO,iBACP/oG,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ53F,EAAQ,CAAG,EACjDy4C,UAAW,SAASkD,GAClB,IAAI37C,EAAQ27C,EAAKqkE,WACjB,MAAI,UAAUzjH,KAAKyD,GACVkjT,EAAWvnQ,EAAM,MAGnBunQ,EAAWvnQ,EAAM,IAC1B,GAEF,CACE92C,IAAK,OACLq/G,MAAOugM,EAAQ8D,iBAAiBiimB,MAAMjy4B,KAAK,KAC3C4C,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ6sN,EAAQ8D,iBAAiBiimB,MAAM5n5B,QAAQ5C,EAAQ,EACrFy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,OAAS,GAE/D,CACE92C,IAAK,MACLq/G,MAAOugM,EAAQ8D,iBAAiBkimB,WAAWly4B,KAAK,KAChD4C,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ6sN,EAAQ8D,iBAAiBkimB,WAAW7n5B,QAAQ5C,EAAQ,EAC1Fy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,MAAQ,GAE9D,CACE92C,IAAK,KACLq/G,MAAO,gBACP/oG,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ53F,EAAQ,CAAG,EACjDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,eACP/oG,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ53F,EAAQ,CAAG,EACjDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,KACLq/G,MAAO,2BACP/oG,MAAO,SAASnb,GAASqa,KAAKshC,MAAQ37C,CAAO,EAC7Cy4C,UAAW,SAASkD,GAClB,IAAI37C,EAAQ27C,EAAKikE,UACjB,MAAI,UAAUrjH,KAAKyD,GACVkjT,EAAWvnQ,EAAM,MAGnBunQ,EAAWvnQ,EAAM,IAC1B,GAEF,CACE92C,IAAK,KACLq/G,MAAO,0BACP/oG,MAAO,SAASnb,GAASqa,KAAKshC,MAAQ37C,CAAO,EAC7Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,2BACP/oG,MAAO,SAASnb,GAASqa,KAAKshC,MAAQ37C,CAAO,EAC7Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,OACLq/G,MAAOugM,EAAQ8D,iBAAiBmimB,IAAIny4B,KAAK,KACzCkgC,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,OAAS,GAE/D,CACE92C,IAAK,MACLq/G,MAAOugM,EAAQ8D,iBAAiBoimB,SAASpy4B,KAAK,KAC9CkgC,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,MAAQ,GAE9D,CACE92C,IAAK,KACLq/G,MAAO,sBACP/oG,MAAO,SAASnb,GAASqa,KAAKorL,OAASzlM,CAAO,EAC9Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,KACLq/G,MAAO,gBACP/oG,MAAO,SAASnb,GAASqa,KAAKorL,OAASzlM,CAAO,EAC9Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,iBACP/oG,MAAO,SAASnb,GAASqa,KAAKorL,OAASzlM,CAAO,EAC9Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,IACLq/G,MAAO,eACP/oG,MAAO,SAASnb,GAASqa,KAAKorL,OAASzlM,CAAO,EAC9Cy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,KACLq/G,MAAO,aACP/oG,MAAO,SAASnb,GAASqa,KAAKqrL,SAAW1lM,CAAO,EAChDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,mBACP/oG,MAAO,SAASnb,GAASqa,KAAKqrL,SAAW1lM,CAAO,EAChDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,MACLq/G,MAAO,kBACP/oG,MAAO,SAASnb,GAASqa,KAAK00S,cAAgB/uT,CAAO,EACrDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,MAAQ,GAE9D,CACE92C,IAAK,KACLq/G,MAAO,aACP/oG,MAAO,SAASnb,GAASqa,KAAKsrL,SAAW3lM,CAAO,EAChDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,mBACP/oG,MAAO,SAASnb,GAASqa,KAAKsrL,SAAW3lM,CAAO,EAChDy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,IACLq/G,MAAOugM,EAAQ8D,iBAAiBT,MAAMvvS,KAAK,KAC3C4C,MAAO,SAASnb,GACK,KAAfqa,KAAKorL,QACPprL,KAAKorL,MAAQ,GAGD,OAAVzlM,IACFqa,KAAKorL,OAAS,GAElB,EACAhtJ,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,IACLq/G,MAAO,aACP/oG,MAAO,SAASnb,GACd,IAAIssC,EAAUtsC,EAAM3B,MAAM,wBACxB2vB,EAAOse,EAAQ,GACfm5J,EAAQn5J,EAAQ,GAChBo5J,EAAUp5J,EAAQ,GACpBjyB,KAAKorL,OAASyrE,EAAMljP,EAAOy3K,GAC3BprL,KAAKqrL,SAAWwrE,EAAMljP,EAAO03K,EAC/B,EACAjtJ,UAAW,SAASkD,GAClB,OAAOunQ,EAAWvnQ,EAAM,IAC1B,GAEF,CACE92C,IAAK,KACLq/G,MAAO,oBACPzrE,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAO,0BACPzrE,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,GAE5D,CACE92C,IAAK,OACLq/G,MAAOugM,EAAQ8D,iBAAiBJ,SAAS5vS,KAAK,KAAKna,QAAQ,MAAO,OAClEq6C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,OAAS,GAE/D,CACE92C,IAAK,MACLq/G,MAAOugM,EAAQ8D,iBAAiBlB,KAAK9uS,KAAK,KAC1CkgC,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,MAAQ,GAE9D,CACE92C,IAAK,KACLq/G,MAAOugM,EAAQ8D,iBAAiBlB,KAAK9uS,KAAK,KAC1CkgC,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,KAAO,GAE7D,CACE92C,IAAK,IACLq/G,MAAOugM,EAAQ8D,iBAAiBlB,KAAK9uS,KAAK,KAC1CkgC,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,IAAM,IAI1D40F,QAAQrxD,QAAQ9a,OAAS,GAAKmsE,QAAQrxD,QAAQ/a,MAAQ,GACxD6l1B,EAAkB774B,KAAK,CACrBtJ,IAAK,OACLq/G,MAAOugM,EAAQ8D,iBAAiBqimB,gBAAgBry4B,KAAK,KACrD4C,MAAO,SAASnb,GAASqa,KAAKu9E,MAAQ6sN,EAAQ8D,iBAAiBqimB,gBAAgBho5B,QAAQ5C,EAAQ,EAC/Fy4C,UAAW,SAASkD,GAAQ,OAAOunQ,EAAWvnQ,EAAM,OAAS,GAGnE,EAEAthC,KAAKosD,OAMLpsD,KAAKww4B,UAAY,SAAUhm5B,GACzB,IAAIkX,EAAImu4B,EAAqBrl5B,GAC7B,OAAOkX,GAAKA,EAAEZ,OAAS,IACzB,EAEAd,KAAKyw4B,eAAiB,SAAUjm5B,EAAKszF,GACnC,IAAIp8E,EAAImu4B,EAAqBrl5B,GACzBkX,GAAKw0H,QAAQrjH,WAAWirE,KAC1B99E,KAAKq4mB,QAAU,CAAC,EAChB32mB,EAAEZ,MAAQg9E,EAEd,EAAEpiC,KAAK17C,MA+HPA,KAAK/O,OAAS,SAASqwC,EAAM9C,GAC3B,OAAK03F,QAAQ2zF,OAAOvoL,KAASv7C,MAAMu7C,IAAU9C,GAI7CA,EAAS4rQ,EAAQ8D,iBAAiB1vQ,IAAWA,EAEzC4rQ,EAAQrsS,KAAO2x4B,GACjB1v4B,KAAKosD,OAGFpsD,KAAK+nD,WAAWvpB,KACnBx+B,KAAK+nD,WAAWvpB,GA5EpB,SAAyBA,GAIvB,IAHA,IAEIJ,EAAW2x2B,EAFXho1B,EAAa,GACb1iE,EAAI,EAEDA,EAAIm5C,EAAOpqC,QAChB,GAAI8hI,QAAQhiH,SAAS673B,GAArB,CACE,GAAyB,MAArBvx2B,EAAO9rB,OAAOrtB,IACZA,EAAI,GAAKm5C,EAAOpqC,QAAmC,MAAzBoqC,EAAO9rB,OAAOrtB,EAAI,MAC9C0iE,EAAWj0D,KAAKg84B,EAA0Btx2B,EAAQux2B,EAAY1q5B,IAC9D0q5B,EAAa,WAEV,GAAI1q5B,IAAMm5C,EAAOpqC,OACtB,KAAO274B,EAAavx2B,EAAOpqC,QACzBgqC,EAAY6x2B,EAA0Bzx2B,EAAQux2B,GAC9Cho1B,EAAWj0D,KAAKsqC,GAChB2x2B,EAAa3x2B,EAAU4x2B,OAI3B3q5B,GAEF,KAEyB,MAArBm5C,EAAO9rB,OAAOrtB,IAMlB+4C,EAAY6x2B,EAA0Bzx2B,EAAQn5C,GAE9C0iE,EAAWj0D,KAAKsqC,EAAU0/C,QAC1Bz4F,EAAI+4C,EAAU4x2B,SARZD,EAAa1q5B,EACbA,KAUJ,OAAO0iE,CACT,CAwC8Biqe,CAAgBxzf,IAG3Bx+B,KAAK+nD,WAAWvpB,GAEfl0C,OAAO,SAASmoB,EAAK2rB,GACrC,OAAO3rB,EAAM2rB,EAAUkD,EACzB,EAAG,KAjBM,EAkBX,EAEAthC,KAAKo4B,MAAQ,SAASn2C,EAAOu8C,EAAQky2B,GACnC,IAAKx6wB,QAAQ3yB,SAASthH,KAAWu8C,EAC/B,OAAOv8C,EAITu8C,GADAA,EAAS4rQ,EAAQ8D,iBAAiB1vQ,IAAWA,GAC7Bz6C,QAAQ6r5B,EAA2B,QAE/CxlmB,EAAQrsS,KAAO2x4B,GACjB1v4B,KAAKosD,OAGFpsD,KAAKq4mB,QAAQ75kB,KAChBx+B,KAAKq4mB,QAAQ75kB,GAhKjB,SAAsBA,GACpB,IAAIzrC,EAAM,GAAI82G,EAAQrrE,EAAOt9C,MAAM,IAG/Byv5B,EAAany2B,EAAOj2C,QAAQ,KAChC,GAAIoo5B,GAAc,EAAG,CACnB,IAAIC,GAAY,EAChBpy2B,EAASA,EAAOt9C,MAAM,IACtB,IAAK,IAAImE,EAAIsr5B,EAAYtr5B,EAAIm5C,EAAOpqC,OAAQ/O,IACtCur5B,GACgB,MAAdpy2B,EAAOn5C,KACLA,EAAI,EAAIm5C,EAAOpqC,QAA0B,MAAhBoqC,EAAOn5C,EAAE,IACpCm5C,EAAOn5C,EAAE,GAAK,IACdwkH,EAAMxkH,EAAE,GAAK,KAEbwkH,EAAMxkH,GAAK,GACXur5B,GAAY,IAGhBpy2B,EAAOn5C,GAAK,KAEM,MAAdm5C,EAAOn5C,KACTm5C,EAAOn5C,GAAK,IACZwkH,EAAMxkH,GAAK,GACXur5B,GAAY,GAKlBpy2B,EAASA,EAAOtgC,KAAK,GACvB,CAyBA,OAvBAg4H,QAAQlkI,QAAQ294B,EAAmB,SAAS554B,GAC1C,IAAIS,EAAQgoC,EAAOj2C,QAAQwN,EAAKvL,KAEhC,GAAIgM,GAAS,EAAG,CACdgoC,EAASA,EAAOt9C,MAAM,IAEtB2oH,EAAMrzG,GAAS,IAAMT,EAAK8zG,MAAQ,IAClCrrE,EAAOhoC,GAAS,IAChB,IAAK,IAAInR,EAAImR,EAAQ,EAAGqK,EAAIrK,EAAQT,EAAKvL,IAAI4J,OAAQ/O,EAAIwb,EAAGxb,IAC1DwkH,EAAMxkH,GAAK,GACXm5C,EAAOn5C,GAAK,IAEdm5C,EAASA,EAAOtgC,KAAK,IAErBnL,EAAIe,KAAK,CACP0C,MAAOA,EACPhM,IAAKuL,EAAKvL,IACVsW,MAAO/K,EAAK+K,MACZq1G,QAASpgH,EAAK8zG,OAElB,CACF,GAEO,CACLA,MAAO,IAAI/3E,OAAO,IAAM+3E,EAAM3rG,KAAK,IAAM,KACzCnL,IAAKo2S,EAAcp2S,EAAK,SAE5B,CAqG2B894B,CAAary2B,IAGtC,IA4Dei/C,EAAMF,EAAOj8C,EA5DxBw8C,EAAS99E,KAAKq4mB,QAAQ75kB,GACtBqrE,EAAQ/rB,EAAO+rB,MACf92G,EAAM+qF,EAAO/qF,IACb+sN,EAAU79N,EAAM+B,MAAM6lH,GACtBqlJ,GAAW,EACf,GAAIpvC,GAAWA,EAAQ1rN,OAAQ,CAC7B,IAAI08F,EAAQkxC,EACR9L,QAAQ2zF,OAAO6mrB,KAAc3q5B,MAAM2q5B,EAASjryB,WAC9C3U,EAAS,CACPrT,KAAMizzB,EAAS7qyB,cACftoB,MAAOmzzB,EAAS/qyB,WAChBrkE,KAAMov2B,EAASnryB,UACf6lF,MAAOsltB,EAAS1rwB,WAChBqmD,QAASqltB,EAASzrwB,aAClBqmD,QAASoltB,EAASxrwB,aAClBwvK,aAAcg8lB,EAASjozB,oBAGrBiozB,GACF3joB,EAAKlgQ,KAAK,cAAe,gCAE3BikF,EAAS,CAAErT,KAAM,KAAMF,MAAO,EAAGj8C,KAAM,EAAG8pJ,MAAO,EAAGC,QAAS,EAAGC,QAAS,EAAGopH,aAAc,IAG5F,IAAK,IAAIrvT,EAAI,EAAGwb,EAAIi/M,EAAQ1rN,OAAQ/O,EAAIwb,EAAGxb,IAAK,CAC9C,IAAI44wB,EAASlrwB,EAAI1N,EAAI,GACE,MAAnB44wB,EAAO9npB,UACT+4I,GAAW,GAGT+ugB,EAAOn9vB,OACTm9vB,EAAOn9vB,MAAMT,KAAKywF,EAAQgvH,EAAQz6N,GAEtC,CAEA,IAAIyr5B,EAAa5hpB,EAAWrmP,KAAKzI,UAAUkuS,eACzCzlS,KAAKzI,UAAUwlG,YACbmryB,EAAa7hpB,EAAWrmP,KAAKzI,UAAUwmP,YACzC/9O,KAAKzI,UAAUsxI,SAgBjB,OAMaj0D,EApBDqT,EAAOrT,KAoBAF,EApBMuT,EAAOvT,SAoBNj8C,EApBawvD,EAAOxvD,MAqBrC,KAIG,IAAVi8C,GAAej8C,EAAO,GACR,KAATA,IAAgBm8C,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,GAGhE,IAAVF,GAAyB,IAAVA,GAAyB,IAAVA,GAAyB,KAAVA,GACxCj8C,EAAO,OA7BR40F,QAAQ2zF,OAAO6mrB,IAAc3q5B,MAAM2q5B,EAASjryB,YAAeypJ,GAM7DltH,EAAK,IAAIn5H,KAAK,GACdio4B,EAAWzw4B,KAAK2hI,EAAIlxC,EAAOrT,KAAMqT,EAAOvT,MAAOuT,EAAOxvD,MACtDyv2B,EAAW1w4B,KAAK2hI,EAAIlxC,EAAOs6F,OAAS,EAAGt6F,EAAOu6F,SAAW,EACvDv6F,EAAOw6F,SAAW,EAAGx6F,EAAO4jN,cAAgB,KAR9C1yK,EAAK,IAAIn5H,KAAK6n4B,GACdI,EAAWzw4B,KAAK2hI,EAAIlxC,EAAOrT,KAAMqT,EAAOvT,MAAOuT,EAAOxvD,MACtDyv2B,EAAW1w4B,KAAK2hI,EAAIlxC,EAAOs6F,MAAOt6F,EAAOu6F,QACvCv6F,EAAOw6F,QAASx6F,EAAO4jN,gBAStB1yK,CACT,CACF,EAwBAhiI,KAAKgx4B,WAML,SAAoB1v2B,EAAMi4N,GACxB,OAAOj4N,GAAQi4N,EAAWE,EAAuBn4N,EAAMi4N,GAAYj4N,CACrE,EAPAthC,KAAKix4B,aASL,SAAsB3v2B,EAAMi4N,GAC1B,OAAOj4N,GAAQi4N,EAAWE,EAAuBn4N,EAAMi4N,GAAU,GAAQj4N,CAC3E,EAVAthC,KAAKs5P,iBAAmBA,EACxBt5P,KAAK25P,eAAiBA,EACtB35P,KAAKy5P,uBAAyBA,CA6BhC,IAIAvjI,QAAQx0C,OAAO,uBAAwB,IACtCklC,UAAU,aAAc,CAChB,WACT,SAAUssJ,GAER,IAAIg+nB,EAAY,uCAEZC,EAAY,wCAIhB,MAAO,CACLr8wB,SAAU,IACVtxB,QAAS,SAASquK,EAAUC,GAC1B,IAAIs/nB,EAAe,GACf700B,EAAY,GACZ800B,EAAY,CAAC,EAEbC,EAAex/nB,EAAOy/nB,WAAWvt5B,MAAMkt5B,GACvCM,EAAQF,EAAa,GAErBG,EADUH,EAAa,GACRpw5B,MAAM,KAEzB,OAEA,SAAgBynC,EAAOriC,EAASyiI,GAC9BqoxB,EAAat94B,KAAK60B,GAClB4zC,EAAUzoE,KAAK,CACb60B,MAAOA,EACPriC,QAASA,IAGXmr5B,EAAKz/4B,QAAQ,SAAS2nF,EAAKloE,IAO7B,SAAmBkoE,EAAKhxD,GACtB,IAAIsJ,EAAU0nD,EAAI31F,MAAMmt5B,GACpBj/lB,EAAQvpR,EAAM2lG,MAAMr8F,EAAQ,IAC5By/2B,EAAiBz/2B,EAAQ,GACzBl8B,EAAOs74B,EAAU13zB,GACrB,IAAK5jF,EAAM,CACT,IAAI474B,EAAU,SAASC,GACrB,IAAIC,EAAe,KACnBt10B,EAAUjqE,KAAK,SAAS+C,GAEtB,GADcA,EAASszB,MAAM2lG,MAAMkjxB,KACnBI,EAEd,OADAC,EAAex84B,GACR,CAEX,GACIU,EAAK+74B,gBAAkBD,IACrB974B,EAAK+74B,eACP5+nB,EAASxpK,YAAY3zG,EAAK+74B,cAAcxr5B,QAAS4rT,GAE/C2/lB,GACF3+nB,EAASjpK,SAAS4nyB,EAAavr5B,QAAS4rT,GAE1Cn8S,EAAK+74B,cAAgBD,EAEzB,EACAR,EAAU13zB,GAAO5jF,EAAO,CACtB+74B,cAAe,KACfnp3B,MAAOA,EACPgp3B,QAASA,EACTD,eAAgBA,EAChB9ymB,QAASj2Q,EAAMw6M,OAAOuuqB,EAAgBC,GAE1C,CACA574B,EAAK474B,QAAQhp3B,EAAM2lG,MAAMojxB,GAC3B,CAxCIK,CAAUp4zB,EAAKhxD,EACjB,GAEAA,EAAM69F,IAAI,WAAYwrxB,EACxB,EAsCA,SAASA,EAAYht5B,GACnB,IAAIit5B,EAAejt5B,EAAEmmC,YACjB30B,EAAQ464B,EAAa7o5B,QAAQ0p5B,GAGjC,GAFAb,EAAark3B,OAAOv2B,EAAO,GAC3B+lE,EAAUxvC,OAAOv2B,EAAO,GACpB464B,EAAah94B,OAAQ,CACvB,IAAI894B,EAAgBd,EAAa,GACjCl7wB,QAAQlkI,QAAQq/4B,EAAW,SAASt74B,GAC9BA,EAAK4yB,QAAUsp3B,IACjBl84B,EAAK6oS,QAAUszmB,EAAc/uqB,OAAOptO,EAAK274B,eAAgB374B,EAAK474B,SAC9D574B,EAAK4yB,MAAQup3B,EAEjB,EACF,MACEb,EAAY,CAAC,CAEjB,CACF,EAEJ,IACAn7wB,QAAQx0C,OAAO,0BAA2B,CAAC,0BAA2B,yBAErE/7F,MAAM,4BAA4B,GAElCA,MAAM,6BAA6B,GAEnC+gI,SAAS,sBAAuB,CAC/ByrxB,eAAgB,MAChBC,UAAW,KACXC,YAAa,OACbC,WAAY,OACZC,gBAAiB,MACjBC,eAAgB,YAChBC,iBAAkB,OAClBC,QAAS,KACTC,QAAS,OACTC,QAAS,KACTC,QAAS,MACTC,aAAc,EACdrwlB,eAAgB,CAAC,EACjBswlB,qBAAqB,EACrBC,WAAW,EACXC,YAAa,EACbC,SAAU,IAGX3r2B,WAAW,0BAA2B,CAAC,SAAU,WAAY,SAAU,SAAU,eAAgB,UAAW,OAAQ,aAAc,sBAAuB,4BAA6B,2BAA4B,gBACjN,SAAS62O,EAAQrM,EAAUC,EAAQiB,EAAQF,EAAcq3B,EAASr9B,EAAM87B,EAAYsqmB,EAAkBC,EAA2BC,EAA0BC,GAC3J,IAAIhxzB,EAAOtiF,KACPmjT,EAAc,CAAElN,cAAe//K,QAAQtmH,MACvC6yS,EAAiB,CAAC,EAClB8wlB,EAAiB,GA8TrB,SAASC,EAAQrp3B,GACfi0P,EAAO+znB,eAAiBho3B,EACxBi0P,EAAOq1nB,kBAAkBtB,eAAiBho3B,CAC5C,CA/TA4nP,EAAS9nK,SAAS,kBAClB+nK,EAAO7jJ,KAAK,OAAQ,eAEfiwJ,EAAOq1nB,oBACVr1nB,EAAOq1nB,kBAAoB,CAAC,GAI9Bzz4B,KAAKw/C,MAAQ,CAAC,MAAO,QAAS,QAE9B,CACE,cACA,eACA,iBACA,YACA,kBACA,iBACA,cACA,mBACA,aACA,UACA,UACA,UACA,UACA,eACA,YACA,sBACA,cACA,cACA,YACAxtD,QAAQ,SAASxH,GACjB,OAAQA,GACN,IAAK,cACL,IAAK,eACH4zR,EAAO5zR,GAAO4zR,EAAOq1nB,kBAAkBjp5B,IAAQ0rI,QAAQtmH,KACvD,MACF,IAAK,iBACHwuQ,EAAO+znB,eAAiBj8wB,QAAQ9yB,UAAUg7K,EAAOq1nB,kBAAkBtB,gBACjE/znB,EAAOq1nB,kBAAkBtB,eAAiBgB,EAAiBhB,eAC7D,MACF,IAAK,YACL,IAAK,kBACL,IAAK,iBACL,IAAK,cACL,IAAK,mBACL,IAAK,aACH7vzB,EAAK93F,GAAO0rI,QAAQ9yB,UAAUg7K,EAAOq1nB,kBAAkBjp5B,IACrDuoR,EAAaqL,EAAOq1nB,kBAAkBjp5B,GAAtCuoR,CAA4CqL,EAAOvH,SACnDs8nB,EAAiB3o5B,GACnB,MACF,IAAK,eACL,IAAK,YACL,IAAK,sBACL,IAAK,cACL,IAAK,WACH83F,EAAK93F,GAAO0rI,QAAQ9yB,UAAUg7K,EAAOq1nB,kBAAkBjp5B,IACrD4zR,EAAOq1nB,kBAAkBjp5B,GAAO2o5B,EAAiB3o5B,GACnD,MACF,IAAK,cACC0rI,QAAQ9yB,UAAUg7K,EAAOq1nB,kBAAkBC,aAC7CpxzB,EAAKoxzB,YAAct1nB,EAAOq1nB,kBAAkBC,YACnCx9wB,QAAQhiH,SAASi/3B,EAAiBO,aAC3CpxzB,EAAKoxzB,YAAcP,EAAiBO,YAEpCpxzB,EAAKoxzB,aAAetpmB,EAAQ8D,iBAAiBylmB,eAAiB,GAAK,EAGrE,MACF,IAAK,UACL,IAAK,UACHv1nB,EAAOj7C,OAAO,qBAAuB34O,EAAK,SAAS7E,GAC7CA,EACEuwI,QAAQ2zF,OAAOlkO,GACjB28F,EAAK93F,GAAO8o5B,EAAWrC,aAAa,IAAIpo4B,KAAKljB,GAAQ88T,EAAepK,UAAU,cAE1E+6lB,GACFrmoB,EAAKlgQ,KAAK,gFAGZy1E,EAAK93F,GAAO,IAAIqe,KAAKggS,EAAWljT,EAAO,YAGzC28F,EAAK93F,GAAO2o5B,EAAiB3o5B,GAC3B8o5B,EAAWrC,aAAa,IAAIpo4B,KAAKsq4B,EAAiB3o5B,IAAOi4T,EAAepK,UAAU,aAClF,KAGJ/1N,EAAKsxzB,aACP,GAEA,MACF,IAAK,UACL,IAAK,UACCx1nB,EAAOq1nB,kBAAkBjp5B,GAC3B4zR,EAAOj7C,OAAO,WAAa,OAAOi7C,EAAOq1nB,kBAAkBjp5B,EAAM,EAAG,SAAS7E,GAC3E28F,EAAK93F,GAAO4zR,EAAO5zR,GAAO0rI,QAAQ9yB,UAAUz9G,GAASA,EAAQy4R,EAAOq1nB,kBAAkBjp5B,IAC1E,YAARA,GAAqB83F,EAAK9iC,MAAMj3D,QAAQ61R,EAAOq1nB,kBAAkBtB,gBAAkB7vzB,EAAK9iC,MAAMj3D,QAAQ+5F,EAAK93F,KACrG,YAARA,GAAqB83F,EAAK9iC,MAAMj3D,QAAQ61R,EAAOq1nB,kBAAkBtB,gBAAkB7vzB,EAAK9iC,MAAMj3D,QAAQ+5F,EAAK93F,OAC3G4zR,EAAO+znB,eAAiB7vzB,EAAK93F,GAC7B4zR,EAAOq1nB,kBAAkBtB,eAAiB7vzB,EAAK93F,GAEnD,GAEA83F,EAAK93F,GAAO4zR,EAAO5zR,GAAO2o5B,EAAiB3o5B,IAAQ,KAK3D,GAEA4zR,EAAOx1K,SAAW,cAAgBw1K,EAAO+f,IAAM,IAAM34S,KAAKQ,MAAsB,IAAhBR,KAAKm+F,UAErEy6L,EAAOpwO,SAAWkoF,QAAQ9yB,UAAU4uK,EAAOhkO,YAAa,EACpDkoF,QAAQ9yB,UAAU4uK,EAAO6hoB,aAC3BN,EAAez/4B,KAAKsqR,EAAOvH,QAAQ1zC,OAAO6uC,EAAO6hoB,WAAY,SAAS7l2B,GACpEowO,EAAOpwO,SAAWA,EAClBs0C,EAAKsxzB,aACP,IAGFx1nB,EAAOu3C,SAAW,SAASm+kB,GACzB,OAAuD,IAAnDxxzB,EAAK5iD,QAAQo02B,EAAWxy2B,KAAMghD,EAAKyxzB,cACrC31nB,EAAO41nB,aAAeF,EAAWjk4B,KAC1B,EAGX,EAEA7P,KAAKosD,KAAO,SAAS6n1B,GAEnBxxlB,EA+LF,SAAwBU,GACtB,IAAIV,EAEJ,GAAIvsL,QAAQrxD,QAAQ/a,MAAQ,GAE1B24P,EAAiBU,EAAY/K,UAC3Bh6B,EAAOq1nB,kBAAkBhxlB,gBACzB0wlB,EAAiB1wlB,gBACjB,CAAC,GAGYpK,UAAY,SAAU7tT,GACnC,OAAOi4T,EAAej4T,EACxB,MACK,CAEL,IAAI+uQ,EAAW4pD,EAAY/K,SAASC,UAAU,cAC3Cj6B,EAAOq1nB,kBAAkBhxlB,eAAiBrkC,EAAOq1nB,kBAAkBhxlB,eAAelpD,SAAW,QAC7F45oB,EAAiB1wlB,eAAiB0wlB,EAAiB1wlB,eAAelpD,SAAW,MAGhFkpD,EAAiBU,EAAY/K,SAC1BkJ,YAAY6xlB,EAAiB1wlB,gBAC7BnB,YAAYljC,EAAOq1nB,kBAAkBhxlB,gBACrCnB,YAAY6B,EAAY/K,UACxBkJ,YAAY,CAAC/nD,SAAUA,GAC5B,CAEA,OAAOkpD,CACT,CA5NmByxlB,CADjB/wlB,EAAc8wlB,GAGV71nB,EAAOq1nB,kBAAkBU,UAC3B7xzB,EAAKyxzB,WAAaT,EAAWrC,aAAa7ynB,EAAOq1nB,kBAAkBU,SAAU1xlB,EAAepK,UAAU,cAAgB,IAAIxvS,KAC1Hu1Q,EAAOj7C,OAAO,6BAA8B,SAASgxqB,GAC/CA,IAAahxlB,EAAYhO,SAASgO,EAAYnM,cAAgBmM,EAAY9R,YAC5E/uN,EAAKyxzB,WAAaT,EAAWrC,aAAakD,EAAU1xlB,EAAepK,UAAU,aAC7E/1N,EAAKsxzB,cAET,IAEAtxzB,EAAKyxzB,WAAa,IAAIlr4B,KAGxB,IAAIy4B,EAAO6hR,EAAYnM,YAAc,IAAInuS,KAAKs6S,EAAYnM,aAAe,IAAInuS,KAC7E7I,KAAK+z4B,WAAchu5B,MAAMu7C,GAEvBgy2B,EAAWrC,aAAa,IAAIpo4B,KAAQ45S,EAAepK,UAAU,aAD7Di7lB,EAAWrC,aAAa3v2B,EAAMmhR,EAAepK,UAAU,aAGzD8K,EAAYjN,QAAU,WACpB5zN,EAAKjkB,QACP,CACF,EAEAr+D,KAAKq+D,OAAS,WACZ,GAAI8kP,EAAYhN,WAAY,CAC1B,IAAI70Q,EAAO,IAAIz4B,KAAKs6S,EAAYhN,YACjBpwT,MAAMu7C,GAIT+x2B,GACVtmoB,EAAK9iQ,MAAM,gEAFXjK,KAAK+z4B,WAAaT,EAAWrC,aAAa3v2B,EAAMmhR,EAAepK,UAAU,YAI7E,CACAr4S,KAAK4z4B,aACP,EAEA5z4B,KAAK4z4B,YAAc,WACjB,GAAI5z4B,KAAK1Z,QAAS,CAChB83R,EAAOg2nB,WAAa,KACpBp04B,KAAKq04B,eACDj2nB,EAAOk2nB,WACTl2nB,EAAO41nB,aAAe51nB,EAAOk2nB,SAASzk4B,KAGxC,IAAIyxB,EAAO6hR,EAAYhN,WAAa,IAAIttS,KAAKs6S,EAAYhN,YAAc,KACvE70Q,EAAOgy2B,EAAWrC,aAAa3v2B,EAAMmhR,EAAepK,UAAU,aAC9D8K,EAAY5S,aAAa,gBAAiBjvQ,GACxCthC,KAAK1Z,UAAY0Z,KAAKu6b,WAAWj5Z,GACrC,CACF,EAEAthC,KAAKu04B,iBAAmB,SAASjz2B,EAAM9C,GACrC,IAAI4/T,EAAQj7C,EAAYhN,WAAa,IAAIttS,KAAKs6S,EAAYhN,YAAc,KACxEioD,EAAQk1iB,EAAWrC,aAAa7yiB,EAAO37C,EAAepK,UAAU,aAChE,IAAI0hN,EAAQ,IAAIlxf,KAChBkxf,EAAQu5Y,EAAWrC,aAAal3Y,EAAOt3M,EAAepK,UAAU,aAChE,IAAI/5N,EAAOt+E,KAAK0/B,QAAQ4B,EAAMy4d,GAC1B/3X,EAAK,CACP1gG,KAAMA,EACNz/B,MAAOyx4B,EAAWri5B,OAAOqwC,EAAM9C,GAC/BmkO,SAAUy7F,GAAuC,IAA9Bp+V,KAAK0/B,QAAQ4B,EAAM88T,GACtCpwT,SAAUhuC,KAAKu6b,WAAWj5Z,GAC1Bt+C,KAAMs7F,EAAO,EACbzoF,QAAkB,IAATyoF,EACTv7F,OAAQu7F,EAAO,EACfk2zB,YAAax04B,KAAKw04B,YAAYlz2B,IAAS,MAWzC,OARI88T,GAAuC,IAA9Bp+V,KAAK0/B,QAAQ4B,EAAM88T,KAC9BhgF,EAAOg2nB,WAAapywB,GAGlB1/C,EAAKyxzB,YAAyD,IAA3C/z4B,KAAK0/B,QAAQsiG,EAAG1gG,KAAMghD,EAAKyxzB,cAChD31nB,EAAOk2nB,SAAWtywB,GAGbA,CACT,EAEAhiI,KAAKu6b,WAAa,SAASj5Z,GACzB,OAAO88O,EAAOpwO,UACZhuC,KAAK4y4B,SAAW5y4B,KAAK0/B,QAAQ4B,EAAMthC,KAAK4y4B,SAAW,GACnD5y4B,KAAK0y4B,SAAW1y4B,KAAK0/B,QAAQ4B,EAAMthC,KAAK0y4B,SAAW,GACnDt0nB,EAAOq2nB,cAAgBr2nB,EAAOq2nB,aAAa,CAACnz2B,KAAMA,EAAMnX,KAAMi0P,EAAO+znB,gBACzE,EAEAny4B,KAAKw04B,YAAc,SAASlz2B,GAC1B,OAAO88O,EAAOo2nB,YAAY,CAAClz2B,KAAMA,EAAMnX,KAAMi0P,EAAO+znB,gBACtD,EAGAny4B,KAAK9e,MAAQ,SAAS01C,EAAK7jB,GAEzB,IADA,IAAIgsF,EAAS,GACNnoE,EAAIxiC,OAAS,GAClB2qG,EAAOjrG,KAAK8iC,EAAI7J,OAAO,EAAGha,IAE5B,OAAOgsF,CACT,EAEAq/K,EAAO6xC,OAAS,SAAS3uR,GACvB,GAAI88O,EAAO+znB,iBAAmB7vzB,EAAKuwzB,QAAS,CAC1C,IAAI7wwB,EAAKmhL,EAAYhN,WAAam9lB,EAAWrC,aAAa,IAAIpo4B,KAAKs6S,EAAYhN,YAAasM,EAAepK,UAAU,aAAe,IAAIxvS,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/Jm5H,EAAGp8B,YAAYtkE,EAAKukE,cAAevkE,EAAKqkE,WAAYrkE,EAAKikE,WACzDy8B,EAAKsxwB,EAAWtC,WAAWhvwB,EAAIygL,EAAepK,UAAU,aACxD8K,EAAYlN,cAAcj0K,GAC1BmhL,EAAYjN,SACd,MACE5zN,EAAKyxzB,WAAazy2B,EAClBky2B,EAAQlxzB,EAAK9iC,MAAM8iC,EAAK9iC,MAAMj3D,QAAQ61R,EAAO+znB,gBAAkB,IAE/D/znB,EAAOmjB,MAAM,uBAGfnjB,EAAOiU,WAAW,uBACpB,EAEAjU,EAAO/tO,KAAO,SAASthD,GACrB,IAAI0uF,EAAO6E,EAAKyxzB,WAAWluyB,cAAgB92G,GAAauzF,EAAKhhF,KAAKoqe,OAAS,GACvEnuZ,EAAQ+E,EAAKyxzB,WAAWpuyB,WAAa52G,GAAauzF,EAAKhhF,KAAKrgB,QAAU,GAC1EqhG,EAAKyxzB,WAAWnuyB,YAAYnoB,EAAMF,EAAO,GACzC+E,EAAKsxzB,aACP,EAEAx1nB,EAAOs2nB,WAAa,SAAS3l5B,GAC3BA,EAAYA,GAAa,EAErBqvR,EAAO+znB,iBAAmB7vzB,EAAKqwzB,SAAyB,IAAd5j5B,GAC5CqvR,EAAO+znB,iBAAmB7vzB,EAAKuwzB,UAA0B,IAAf9j5B,IAI5Cyk5B,EAAQlxzB,EAAK9iC,MAAM8iC,EAAK9iC,MAAMj3D,QAAQ61R,EAAO+znB,gBAAkBpj5B,IAE/DqvR,EAAOmjB,MAAM,uBACf,EAGAnjB,EAAO/zR,KAAO,CAAE,GAAI,QAAS,GAAI,QAAS,GAAI,SAAU,GAAI,WAAY,GAAI,MAAO,GAAI,OAAQ,GAAI,OAAQ,GAAI,KAAM,GAAI,QAAS,GAAI,QAOtI+zR,EAAO53J,IAAI,uBALQ,WACjBlkC,EAAKh8F,QAAQ,GAAG0qG,OAClB,GAKAotL,EAAOipjB,QAAU,SAASvryB,GACxB,IAAItxC,EAAM4zR,EAAO/zR,KAAKyxC,EAAIm2P,OAE1B,GAAKznS,IAAOsxC,EAAIk2P,WAAYl2P,EAAIspZ,SAAUhnK,EAAOpwO,SASjD,GALAlS,EAAI6wF,iBACCrqC,EAAKywzB,qBACRj32B,EAAIwnO,kBAGM,UAAR94Q,GAA2B,UAARA,EAAiB,CACtC,GAAI83F,EAAKi4W,WAAWj4W,EAAKyxzB,YACvB,OAEF31nB,EAAO6xC,OAAO3tO,EAAKyxzB,WACrB,MAAWj42B,EAAIg2P,SAAoB,OAARtnS,GAAwB,SAARA,GAGzC83F,EAAKk4kB,cAAchwqB,EAAKsxC,GACxBwmD,EAAKsxzB,eAHLx1nB,EAAOs2nB,WAAmB,OAARlq5B,EAAe,GAAK,EAK1C,EAEAunR,EAASpnK,GAAG,UAAW,SAAS7uE,GAC9BsiP,EAAOpwJ,OAAO,WACZowJ,EAAOipjB,QAAQvryB,EACjB,EACF,GAEAsiP,EAAO53J,IAAI,WAAY,WAErB,KAAO+sxB,EAAen/4B,QACpBm/4B,EAAerr2B,OAAfqr2B,EAEJ,EAqCF,IAEChs2B,WAAW,yBAA0B,CAAC,SAAU,WAAY,aAAc,SAAS5e,EAAOopP,EAAU82B,GACnG,IAAI6tU,EAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAIjE,SAASi+R,EAAel3zB,EAAMF,GAC5B,OAAiB,IAAVA,GAAeE,EAAO,GAAM,GAChCA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAAUi5hB,EAAcn5hB,GAAnB,EAC7C,CAyEA,SAASq3zB,EAAqBtz2B,GAC5B,IAAIuz2B,EAAY,IAAIhs4B,KAAKy4B,GACzBuz2B,EAAU13wB,QAAQ03wB,EAAUtvyB,UAAY,GAAKsvyB,EAAUz3wB,UAAY,IACnE,IAAI9+C,EAAOu2zB,EAAUpvyB,UAGrB,OAFAovyB,EAAUnvyB,SAAS,GACnBmvyB,EAAU13wB,QAAQ,GACX33I,KAAKQ,MAAMR,KAAK+F,OAAO+yF,EAAOu2zB,GAAa,OAAY,GAAK,CACrE,CArFA704B,KAAKsB,KAAO,CAAErgB,OAAQ,GACtB+e,KAAK1Z,QAAUyrR,EAMf/xQ,KAAKosD,KAAO,SAASuiE,GACnBuH,QAAQlzB,OAAO2rB,EAAM3uH,MACrB2oB,EAAMqq3B,UAAYrkxB,EAAKqkxB,UACvBrkxB,EAAKilxB,aACP,EAEA5z4B,KAAK804B,SAAW,SAAS54U,EAAWr7jB,GAElC,IADA,IAAgEygC,EAA5DsiF,EAAQ,IAAItvH,MAAMuM,GAAIhL,EAAU,IAAIgT,KAAKqzjB,GAAY72kB,EAAI,EACtDA,EAAIwb,GACTygC,EAAO,IAAIz4B,KAAKhT,GAChB+tH,EAAMv+H,KAAOi8C,EACbzrC,EAAQsnI,QAAQtnI,EAAQ0vG,UAAY,GAEtC,OAAOqe,CACT,EAEA5jH,KAAKq04B,aAAe,WAClB,IAAI52zB,EAAOz9E,KAAK+z4B,WAAWluyB,cACzBtoB,EAAQv9E,KAAK+z4B,WAAWpuyB,WACxBovyB,EAAkB,IAAIls4B,KAAK7I,KAAK+z4B,YAElCgB,EAAgBnvyB,YAAYnoB,EAAMF,EAAO,GAEzC,IAAIinI,EAAaxkN,KAAK0z4B,YAAcqB,EAAgB33wB,SAClD43wB,EAAgCxwrB,EAAa,EAC3C,EAAIA,GAAeA,EACrBywrB,EAAY,IAAIps4B,KAAKks4B,GAEnBC,EAAgC,GAClCC,EAAU93wB,QAAyC,EAAhC63wB,GAKrB,IADA,IAAIzhzB,EAAOvzF,KAAK804B,SAASG,EAAW,IAC3B5v5B,EAAI,EAAGA,EAAI,GAAIA,IACtBkuG,EAAKluG,GAAK6wI,QAAQlzB,OAAOhjG,KAAKu04B,iBAAiBhhzB,EAAKluG,GAAI2a,KAAKoy4B,WAAY,CACvEh6M,UAAW7kmB,EAAKluG,GAAGsgH,aAAepoB,EAClC1tE,IAAK8Y,EAAMigF,SAAW,IAAMvjH,IAIhCsjC,EAAM4jB,OAAS,IAAIj4C,MAAM,GACzB,IAAK,IAAI0xB,EAAI,EAAGA,EAAI,EAAGA,IACrB2C,EAAM4jB,OAAOvmB,GAAK,CAChB6vc,KAAMhtL,EAAWt1M,EAAKvtE,GAAGsb,KAAMthC,KAAKuy4B,iBACpChhpB,KAAMs3C,EAAWt1M,EAAKvtE,GAAGsb,KAAM,SAOnC,GAHA3Y,EAAM2tB,MAAQuyP,EAAW7oS,KAAK+z4B,WAAY/z4B,KAAKwy4B,gBAC/C7p3B,EAAM2uI,KAAOt3J,KAAK9e,MAAMqyG,EAAM,GAE1B5qE,EAAMqq3B,UAAW,CACnBrq3B,EAAMwrgB,YAAc,GAGpB,IAFA,IAAI+gX,GAAiB,GAAQl14B,KAAK0z4B,aAAe,EAC7CyB,EAAWxs3B,EAAM2uI,KAAKljK,OACjBgh5B,EAAU,EAAGA,EAAUD,EAAUC,IACxCzs3B,EAAMwrgB,YAAYrgiB,KAChB8g5B,EAAqBjs3B,EAAM2uI,KAAK89uB,GAASF,GAAe5z2B,MAE9D,CACF,EAEAthC,KAAK0/B,QAAU,SAASmpgB,EAAOwsW,GAC7B,IAAIC,EAAS,IAAIzs4B,KAAKggiB,EAAMhjc,cAAegjc,EAAMljc,WAAYkjc,EAAMtjc,WAC/DgwyB,EAAS,IAAI1s4B,KAAKws4B,EAAMxvyB,cAAewvyB,EAAM1vyB,WAAY0vyB,EAAM9vyB,WAGnE,OAFA+vyB,EAAO1vyB,YAAYijc,EAAMhjc,eACzB0vyB,EAAO3vyB,YAAYyvyB,EAAMxvyB,eAClByvyB,EAASC,CAClB,EAWAv14B,KAAKw6pB,cAAgB,SAAShwqB,EAAKsxC,GACjC,IAAIwF,EAAOthC,KAAK+z4B,WAAWxuyB,UAE3B,GAAY,SAAR/6G,EACF82C,GAAc,OACT,GAAY,OAAR92C,EACT82C,GAAc,OACT,GAAY,UAAR92C,EACT82C,GAAc,OACT,GAAY,SAAR92C,EACT82C,GAAc,OACT,GAAY,WAAR92C,GAA4B,aAARA,EAAoB,CACjD,IAAI+yF,EAAQv9E,KAAK+z4B,WAAWpuyB,YAAsB,WAARn7G,GAAqB,EAAI,GACnEwV,KAAK+z4B,WAAWruyB,SAASnoB,EAAO,GAChCj8C,EAAO97C,KAAKkE,IAAIir5B,EAAe304B,KAAK+z4B,WAAWluyB,cAAe7lG,KAAK+z4B,WAAWpuyB,YAAarkE,EAC7F,KAAmB,SAAR92C,EACT82C,EAAO,EACU,QAAR92C,IACT82C,EAAOqz2B,EAAe304B,KAAK+z4B,WAAWluyB,cAAe7lG,KAAK+z4B,WAAWpuyB,aAEvE3lG,KAAK+z4B,WAAW52wB,QAAQ77F,EAC1B,CACF,IAECiG,WAAW,2BAA4B,CAAC,SAAU,WAAY,aAAc,SAAS5e,EAAOopP,EAAU82B,GACrG7oS,KAAKsB,KAAO,CAAEoqe,MAAO,GACrB1re,KAAK1Z,QAAUyrR,EAEf/xQ,KAAKosD,KAAO,SAASuiE,GACnBuH,QAAQlzB,OAAO2rB,EAAM3uH,MACrB2uH,EAAKilxB,aACP,EAEA5z4B,KAAKq04B,aAAe,WAKlB,IAJA,IAEI/y2B,EAFArgD,EAAS,IAAIqT,MAAM,IACnBmpF,EAAOz9E,KAAK+z4B,WAAWluyB,cAGlBxgH,EAAI,EAAGA,EAAI,GAAIA,KACtBi8C,EAAO,IAAIz4B,KAAK7I,KAAK+z4B,aAChBnuyB,YAAYnoB,EAAMp4F,EAAG,GAC1BpE,EAAOoE,GAAK6wI,QAAQlzB,OAAOhjG,KAAKu04B,iBAAiBjz2B,EAAMthC,KAAKqy4B,aAAc,CACxExi4B,IAAK8Y,EAAMigF,SAAW,IAAMvjH,IAIhCsjC,EAAM2tB,MAAQuyP,EAAW7oS,KAAK+z4B,WAAY/z4B,KAAKyy4B,kBAC/C9p3B,EAAM2uI,KAAOt3J,KAAK9e,MAAMD,EAAQ+e,KAAK8y4B,cACrCnq3B,EAAM6s3B,kBAAoBx14B,KAAK8y4B,aAAe,EAAI9y4B,KAAK8y4B,aAAe,EAAI,CAC5E,EAEA9y4B,KAAK0/B,QAAU,SAASmpgB,EAAOwsW,GAC7B,IAAIC,EAAS,IAAIzs4B,KAAKggiB,EAAMhjc,cAAegjc,EAAMljc,YAC7C4vyB,EAAS,IAAI1s4B,KAAKws4B,EAAMxvyB,cAAewvyB,EAAM1vyB,YAGjD,OAFA2vyB,EAAO1vyB,YAAYijc,EAAMhjc,eACzB0vyB,EAAO3vyB,YAAYyvyB,EAAMxvyB,eAClByvyB,EAASC,CAClB,EAEAv14B,KAAKw6pB,cAAgB,SAAShwqB,EAAKsxC,GACjC,IAAIwF,EAAOthC,KAAK+z4B,WAAWpuyB,WAE3B,GAAY,SAARn7G,EACF82C,GAAc,OACT,GAAY,OAAR92C,EACT82C,GAActhC,KAAK8y4B,kBACd,GAAY,UAARto5B,EACT82C,GAAc,OACT,GAAY,SAAR92C,EACT82C,GAActhC,KAAK8y4B,kBACd,GAAY,WAARto5B,GAA4B,aAARA,EAAoB,CACjD,IAAIizF,EAAOz9E,KAAK+z4B,WAAWluyB,eAAyB,WAARr7G,GAAqB,EAAI,GACrEwV,KAAK+z4B,WAAWnuyB,YAAYnoB,EAC9B,KAAmB,SAARjzF,EACT82C,EAAO,EACU,QAAR92C,IACT82C,EAAO,IAETthC,KAAK+z4B,WAAWruyB,SAASpkE,EAC3B,CACF,IAECiG,WAAW,0BAA2B,CAAC,SAAU,WAAY,aAAc,SAAS5e,EAAOopP,EAAU82B,GACpG,IAAIn0H,EAAS7gK,EAGb,SAAS4h4B,EAAgBh4zB,GACvB,OAAOt3D,UAAUs3D,EAAO,GAAK5pE,EAAO,IAAMA,EAAQ,CACpD,CAJA7T,KAAK1Z,QAAUyrR,EAMf/xQ,KAAK014B,eAAiB,WACpBhhuB,EAAU10K,KAAKiz4B,YACfp/3B,EAAQ7T,KAAKkz4B,SAAWx+tB,EACxB10K,KAAKsB,KAAO,CAAEoqe,MAAO73d,EACvB,EAEA7T,KAAKq04B,aAAe,WAGlB,IAFA,IAA8B/y2B,EAA1Boqc,EAAQ,IAAIp3e,MAAMuf,GAEbxuB,EAAI,EAAGoH,EAAQgp5B,EAAgBz14B,KAAK+z4B,WAAWluyB,eAAgBxgH,EAAIwuB,EAAOxuB,KACjFi8C,EAAO,IAAIz4B,KAAK7I,KAAK+z4B,aAChBnuyB,YAAYn5G,EAAQpH,EAAG,EAAG,GAC/Bqmf,EAAMrmf,GAAK6wI,QAAQlzB,OAAOhjG,KAAKu04B,iBAAiBjz2B,EAAMthC,KAAKsy4B,YAAa,CACtEzi4B,IAAK8Y,EAAMigF,SAAW,IAAMvjH,IAIhCsjC,EAAM2tB,MAAQ,CAACo1b,EAAM,GAAG7pe,MAAO6pe,EAAM73d,EAAQ,GAAGhS,OAAO3D,KAAK,OAC5DyqB,EAAM2uI,KAAOt3J,KAAK9e,MAAMwqf,EAAOh3T,GAC/B/rJ,EAAM+rJ,QAAUA,CAClB,EAEA10K,KAAK0/B,QAAU,SAASmpgB,EAAOwsW,GAC7B,OAAOxsW,EAAMhjc,cAAgBwvyB,EAAMxvyB,aACrC,EAEA7lG,KAAKw6pB,cAAgB,SAAShwqB,EAAKsxC,GACjC,IAAIwF,EAAOthC,KAAK+z4B,WAAWluyB,cAEf,SAARr7G,EACF82C,GAAc,EACG,OAAR92C,EACT82C,GAAcozI,EACG,UAARlqL,EACT82C,GAAc,EACG,SAAR92C,EACT82C,GAAcozI,EACG,WAARlqL,GAA4B,aAARA,EAC7B82C,IAAiB,WAAR92C,GAAqB,EAAI,GAAKqpB,EACtB,SAARrpB,EACT82C,EAAOm02B,EAAgBz14B,KAAK+z4B,WAAWluyB,eACtB,QAARr7G,IACT82C,EAAOm02B,EAAgBz14B,KAAK+z4B,WAAWluyB,eAAiBhyF,EAAQ,GAElE7T,KAAK+z4B,WAAWnuyB,YAAYtkE,EAC9B,CACF,IAECslF,UAAU,gBAAiB,WAC1B,MAAO,CACLoO,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,yCAC9B,EACArsG,MAAO,CACL8q3B,kBAAmB,MAErBhsyB,QAAS,CAAC,gBAAiB,YAC3BqtB,SAAU,IACVvtF,WAAY,0BACZ2qO,aAAc,aACd9oJ,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAIkjmB,EAAiBljmB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAEnDkjmB,EAAevp1B,KAAK+2P,EACtB,EAEJ,GAECv8L,UAAU,eAAgB,WACzB,MAAO,CACLoO,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,kCAC9B,EACAvtB,QAAS,CAAC,iBAAkB,gBAC5BqtB,SAAU,IACVvtF,WAAY,yBACZ6hF,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAIkjmB,EAAiBljmB,EAAM,GACTA,EAAM,GAEVrmP,KAAKup1B,EACrB,EAEJ,GAEC/uxB,UAAU,iBAAkB,WAC3B,MAAO,CACLoO,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,oCAC9B,EACAvtB,QAAS,CAAC,iBAAkB,kBAC5BqtB,SAAU,IACVvtF,WAAY,2BACZ6hF,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAIkjmB,EAAiBljmB,EAAM,GACPA,EAAM,GAEVrmP,KAAKup1B,EACvB,EAEJ,GAEC/uxB,UAAU,gBAAiB,WAC1B,MAAO,CACLoO,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,mCAC9B,EACAvtB,QAAS,CAAC,iBAAkB,iBAC5BqtB,SAAU,IACVvtF,WAAY,0BACZ6hF,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAI9jL,EAAO8jL,EAAM,GACjBv8K,QAAQlzB,OAAO2rB,EAAM8jL,EAAM,IAC3B9jL,EAAK+mxB,iBAEL/mxB,EAAKilxB,aACP,EAEJ,GAEA19wB,QAAQx0C,OAAO,wBAAyB,IAQrCn9F,QAAQ,eAAgB,CAAC,YAAa,UAAW,SAASioI,EAAWqD,GAKpE,IAAI+lxB,EAKAC,EACAC,EAAiB,CACnBljjB,OAAQ,gBACRzlT,OAAQ,wBAEN4o2B,EAAkB,CACpB1xuB,KAAM,eACNgzH,QAAS,4BACT+ga,UAAW,mCACXz1oB,SAAU,kBAERqz1B,EAAa,cAEjB,MAAO,CASLC,WAAY,SAASvyoB,GACnB,OAAOA,EAAKv7Q,SAAWu7Q,EAAOA,EAAK,IAAMA,CAC3C,EAUAq7b,WAAY,SAASp5sB,GAEnB,OADAA,EAAQgrB,WAAWhrB,GACZyqB,SAASzqB,GAASA,EAAQ,CACnC,EASAoD,aAAc,SAAS26Q,GAGrB,IAAI36Q,GAFJ26Q,EAAO1jQ,KAAKi24B,WAAWvyoB,IAEC36Q,cAAgByjI,EAAU,GAAG9jI,gBAErD,SAASwt5B,EAAmB342B,GAC1B,MAA+D,YAAvDsyF,EAAQxnI,iBAAiBk1C,GAAIz0C,UAAY,SACnD,CAEA,KAAOC,GAAgBA,IAAiByjI,EAAU,GAAG9jI,iBAAmBwt5B,EAAmBnt5B,IACzFA,EAAeA,EAAaA,aAG9B,OAAOA,GAAgByjI,EAAU,GAAG9jI,eACtC,EAUA2wkB,eAAgB,SAASvrkB,GACvB,GAAIA,EAAQ,CACV,GAAIooI,QAAQjC,YAAY4hxB,GAAuB,CAC7C,IAAIM,EAAW3pxB,EAAU3xH,KAAK,QAC9Bs74B,EAASlsyB,SAAS,uCAClB4ryB,EAAuBhmxB,EAAQjiC,WAAauozB,EAAS,GAAGjq5B,YACxD2p5B,EAAuBzl4B,SAASyl4B,GAAwBA,EAAuB,EAC/EM,EAASzsyB,YAAY,sCACvB,CACA,OAAOmsyB,CACT,CAEA,GAAI3/wB,QAAQjC,YAAY2hxB,GAAkB,CACxC,IAAIQ,EAAalgxB,QAAQ5vI,QAAQ,sDACjCkmI,EAAU3xH,KAAK,QAAQ01H,OAAO6lxB,GAC9BR,EAAkBQ,EAAW,GAAGzv5B,YAAcyv5B,EAAW,GAAGlq5B,YAC5D0p5B,EAAkBxl4B,SAASwl4B,GAAmBA,EAAkB,EAChEQ,EAAWxz2B,QACb,CAEA,OAAOgz2B,CACT,EAgBAS,iBAAkB,SAAS3yoB,GACzBA,EAAO1jQ,KAAKi24B,WAAWvyoB,GAEvB,IAAI4yoB,EAAYzmxB,EAAQxnI,iBAAiBq7Q,GACrCr4M,EAAerrD,KAAK++rB,WAAWu3M,EAAUjr1B,cACzCF,EAAgBnrD,KAAK++rB,WAAWu3M,EAAUnr1B,eAC1Ct9D,EAAemS,KAAKnS,aAAa61Q,GAAM,GAAO,GAC9C21T,EAAiBr5jB,KAAKq5jB,eAAe28U,EAAW9z5B,KAAK2L,EAAamjH,UAEtE,MAAO,CACLqod,eAAgBA,EAChBk9U,cAAe1o5B,EAAagB,YAAchB,EAAa3B,YACvDjC,MAAOohE,EAAegugB,EACtBm9U,cAAenr1B,EACfor1B,eAAgB5o5B,EAAaiB,aAAejB,EAAa5B,aACzD/B,OAAQihE,EAAgBkugB,EACxBq9U,eAAgBvr1B,EAEpB,EAWAqsmB,aAAc,SAAS9zZ,EAAMizoB,GAC3BjzoB,EAAO1jQ,KAAKi24B,WAAWvyoB,GAEvB,IAAI6zZ,EAAgBo/O,EAAgBb,EAAe3o2B,OAAS2o2B,EAAeljjB,OACvE0jjB,EAAYzmxB,EAAQxnI,iBAAiBq7Q,GACzC,OAAO6zZ,EAAcr1qB,KAAKo05B,EAAUhp5B,SAAWgp5B,EAAU9o5B,UAAY8o5B,EAAU/o5B,UACjF,EAeAM,aAAc,SAAS61Q,EAAMizoB,EAAeC,GAC1ClzoB,EAAO1jQ,KAAKi24B,WAAWvyoB,GAEvB,IAAI6zZ,EAAgBo/O,EAAgBb,EAAe3o2B,OAAS2o2B,EAAeljjB,OACvEikjB,EAAarqxB,EAAU,GAAG9jI,gBAC1B4t5B,EAAYzmxB,EAAQxnI,iBAAiBq7Q,GACzC,GAAIkzoB,GAAer/O,EAAcr1qB,KAAKo05B,EAAUhp5B,SAAWgp5B,EAAU9o5B,UAAY8o5B,EAAU/o5B,WACzF,OAAOm2Q,EAET,IAAIozoB,EAAuC,aAAvBR,EAAUxt5B,SAC1B+E,EAAe61Q,EAAK7zJ,eAAiBgnyB,EAEzC,GAAIhp5B,IAAiBgp5B,GAAqC,UAAvBP,EAAUxt5B,SAC3C,OAAO+t5B,EAGT,KAAOhp5B,EAAagiH,eAAiBhiH,IAAiBgp5B,GAAY,CAChE,IAAIE,EAAUlnxB,EAAQxnI,iBAAiBwF,GAKvC,GAJIip5B,GAAsC,WAArBC,EAAQju5B,WAC3Bgu5B,GAAgB,IAGbA,GAAiBv/O,EAAcr1qB,KAAK605B,EAAQzp5B,SAAWyp5B,EAAQvp5B,UAAYup5B,EAAQxp5B,WACtF,MAEFM,EAAeA,EAAagiH,aAC9B,CAEA,OAAOhiH,CACT,EAmBA/E,SAAU,SAAS46Q,EAAMszoB,GACvBtzoB,EAAO1jQ,KAAKi24B,WAAWvyoB,GAEvB,IAAIuzoB,EAAaj34B,KAAKpb,OAAO8+Q,GAC7B,GAAIszoB,EAAe,CACjB,IAAIV,EAAYzmxB,EAAQxnI,iBAAiBq7Q,GACzCuzoB,EAAWjt5B,KAAOgW,KAAK++rB,WAAWu3M,EAAUt+qB,WAC5Ci/qB,EAAW9s5B,MAAQ6V,KAAK++rB,WAAWu3M,EAAUn+qB,WAC/C,CACA,IAAI1wO,EAASuY,KAAKjX,aAAa26Q,GAC3BwzoB,EAAe,CAAClt5B,IAAK,EAAGG,KAAM,GAQlC,OANI1C,IAAW+kI,EAAU,GAAG9jI,mBAC1Bwu5B,EAAel34B,KAAKpb,OAAO6C,IACduC,KAAOvC,EAAOgH,UAAYhH,EAAOwF,UAC9Ciq5B,EAAa/s5B,MAAQ1C,EAAOiH,WAAajH,EAAOsF,YAG3C,CACLrG,MAAOlB,KAAK+F,MAAM2qI,QAAQhiH,SAAS+i4B,EAAWvw5B,OAASuw5B,EAAWvw5B,MAAQg9Q,EAAK/8Q,aAC/EC,OAAQpB,KAAK+F,MAAM2qI,QAAQhiH,SAAS+i4B,EAAWrw5B,QAAUqw5B,EAAWrw5B,OAAS88Q,EAAK78Q,cAClFmD,IAAKxE,KAAK+F,MAAM0r5B,EAAWjt5B,IAAMkt5B,EAAalt5B,KAC9CG,KAAM3E,KAAK+F,MAAM0r5B,EAAW9s5B,KAAO+s5B,EAAa/s5B,MAEpD,EAkBAvF,OAAQ,SAAS8+Q,EAAMyzoB,GAGrB,IAAIC,GAFJ1zoB,EAAO1jQ,KAAKi24B,WAAWvyoB,IAEJ92Q,wBACfhI,EAAS,CACX8B,MAAOlB,KAAK+F,MAAM2qI,QAAQhiH,SAASkj4B,EAAQ1w5B,OAAS0w5B,EAAQ1w5B,MAAQg9Q,EAAK/8Q,aACzEC,OAAQpB,KAAK+F,MAAM2qI,QAAQhiH,SAASkj4B,EAAQxw5B,QAAUww5B,EAAQxw5B,OAAS88Q,EAAK78Q,cAC5EmD,IAAKxE,KAAK+F,MAAM6r5B,EAAQpt5B,KAAO6lI,EAAQ3iI,aAAes/H,EAAU,GAAG9jI,gBAAgBuE,YACnF9C,KAAM3E,KAAK+F,MAAM6r5B,EAAQjt5B,MAAQ0lI,EAAQ7iI,aAAew/H,EAAU,GAAG9jI,gBAAgBqE,cAGvF,GAAIoq5B,EAAgB,CAClB,IAAIji5B,EAAS/N,OAAOkB,iBAAiBq7Q,GACjC2zoB,EAAiBr34B,KAAK++rB,WAAW7psB,EAAO8iO,WAAah4N,KAAK++rB,WAAW7psB,EAAOgjO,cAC5Eo/qB,EAAmBt34B,KAAK++rB,WAAW7psB,EAAOijO,YAAcn4N,KAAK++rB,WAAW7psB,EAAO+iO,aAEnFrzO,EAAOgC,QAAUyw5B,EACjBzy5B,EAAO8B,OAAS4w5B,CAClB,CAEA,OAAO1y5B,CACT,EAyBAo6sB,eAAgB,SAASt7b,EAAM6zoB,EAAaC,GAE1CA,GAAoC,IAAnBA,EAEjB,IAAIJ,GAHJ1zoB,EAAO1jQ,KAAKi24B,WAAWvyoB,IAGJ92Q,wBACf6q5B,EAAY,CAACzt5B,IAAK,EAAGG,KAAM,EAAGD,OAAQ,EAAGD,MAAO,GAEhDlB,EAAewu5B,EAAc/qxB,EAAU,GAAG9jI,gBAAkBsX,KAAKnS,aAAa61Q,GAC9Eg0oB,EAAkB3u5B,EAAa6D,wBAWnC,GATA6q5B,EAAUzt5B,IAAM0t5B,EAAgB1t5B,IAAMjB,EAAa0F,UACnDgp5B,EAAUtt5B,KAAOut5B,EAAgBvt5B,KAAOpB,EAAa2F,WACjD3F,IAAiByjI,EAAU,GAAG9jI,kBAChC+u5B,EAAUzt5B,KAAO6lI,EAAQ3iI,YACzBuq5B,EAAUtt5B,MAAQ0lI,EAAQ7iI,aAE5Byq5B,EAAUvt5B,OAASut5B,EAAUzt5B,IAAMjB,EAAakD,aAChDwr5B,EAAUxt5B,MAAQwt5B,EAAUtt5B,KAAOpB,EAAamD,YAE5Csr5B,EAAgB,CAClB,IAAIvnyB,EAAoB4f,EAAQxnI,iBAAiBU,GACjD0u5B,EAAUzt5B,KAAOgW,KAAK++rB,WAAW9ulB,EAAkB/kD,YACnDus1B,EAAUvt5B,QAAU8V,KAAK++rB,WAAW9ulB,EAAkB9kD,eACtDss1B,EAAUtt5B,MAAQ6V,KAAK++rB,WAAW9ulB,EAAkB7kD,aACpDqs1B,EAAUxt5B,OAAS+V,KAAK++rB,WAAW9ulB,EAAkB5kD,aACvD,CAEA,MAAO,CACLrhE,IAAKxE,KAAK+F,MAAM6r5B,EAAQpt5B,IAAMyt5B,EAAUzt5B,KACxCE,OAAQ1E,KAAK+F,MAAMks5B,EAAUvt5B,OAASkt5B,EAAQlt5B,QAC9CC,KAAM3E,KAAK+F,MAAM6r5B,EAAQjt5B,KAAOst5B,EAAUtt5B,MAC1CF,MAAOzE,KAAK+F,MAAMks5B,EAAUxt5B,MAAQmt5B,EAAQnt5B,OAEhD,EAmCA0t5B,eAAgB,SAASvx5B,GACvB,IAAIwx5B,EAAY7B,EAAgB1xuB,KAAKniL,KAAKkE,GAuB1C,OAtBIwx5B,IACFxx5B,EAAYA,EAAUrC,QAAQgy5B,EAAgB1xuB,KAAM,MAGtDj+K,EAAYA,EAAUlF,MAAM,MAElB,GAAKkF,EAAU,IAAM,MAC1B2v5B,EAAgB1+mB,QAAQn1S,KAAKkE,EAAU,MAC1CA,EAAU,GAAK,OAGjBA,EAAU,GAAKA,EAAU,IAAM,SAC1B2v5B,EAAgB39M,UAAUl2sB,KAAKkE,EAAU,MAC5CA,EAAU,GAAK,UAIfA,EAAU,KADRwx5B,EAMGxx5B,CACT,EA0CAyx5B,iBAAkB,SAASC,EAAUC,EAAY3x5B,EAAW+kI,EAAcgsxB,GACxEW,EAAW934B,KAAKi24B,WAAW6B,GAC3BC,EAAa/34B,KAAKi24B,WAAW8B,GAG7B,IAAIzmyB,EAAc4kB,QAAQ9yB,UAAU20yB,EAAWpx5B,aAAeox5B,EAAWpx5B,YAAcox5B,EAAWzl3B,KAAK,eACnG++E,EAAe6kB,QAAQ9yB,UAAU20yB,EAAWlx5B,cAAgBkx5B,EAAWlx5B,aAAekx5B,EAAWzl3B,KAAK,gBAE1G,GAAI6k3B,EAAgB,CAClB,IAAIji5B,EAAS/N,OAAOkB,iBAAiB0v5B,GAIrC1myB,GAHqBrxG,KAAK++rB,WAAW7psB,EAAO8iO,WAAah4N,KAAK++rB,WAAW7psB,EAAOgjO,cAIhF5mH,GAHuBtxG,KAAK++rB,WAAW7psB,EAAOijO,YAAcn4N,KAAK++rB,WAAW7psB,EAAO+iO,YAIrF,CAEA7xO,EAAY4Z,KAAK234B,eAAevx5B,GAEhC,IAAI4x5B,EAAc7sxB,EAAenrH,KAAKpb,OAAOkz5B,GAAY934B,KAAKlX,SAASgv5B,GACnEG,EAAgB,CAACju5B,IAAK,EAAGG,KAAM,EAAG/D,UAAW,IAEjD,GAAIA,EAAU,GAAI,CAChB,IAAI44sB,EAAiBh/rB,KAAKg/rB,eAAe84M,EAAU3sxB,GAE/C+sxB,EAAkBroxB,EAAQxnI,iBAAiB0v5B,GAC3CI,EAAe,CACjBzx5B,MAAO4qH,EAAc9rH,KAAK+F,MAAM/F,KAAKM,IAAIka,KAAK++rB,WAAWm5M,EAAgB//qB,YAAcn4N,KAAK++rB,WAAWm5M,EAAgBjgrB,eACvHrxO,OAAQyqH,EAAe7rH,KAAK+F,MAAM/F,KAAKM,IAAIka,KAAK++rB,WAAWm5M,EAAgBlgrB,WAAah4N,KAAK++rB,WAAWm5M,EAAgBhgrB,iBAe1H,GAZA9xO,EAAU,GAAsB,QAAjBA,EAAU,IAAgB+x5B,EAAavx5B,OAASo4sB,EAAeh1sB,KAAOmu5B,EAAavx5B,QAAUo4sB,EAAe90sB,OAAS,SACjH,WAAjB9D,EAAU,IAAmB+x5B,EAAavx5B,OAASo4sB,EAAe90sB,QAAUiu5B,EAAavx5B,QAAUo4sB,EAAeh1sB,IAAM,MACrG,SAAjB5D,EAAU,IAAiB+x5B,EAAazx5B,MAAQs4sB,EAAe70sB,MAAQgu5B,EAAazx5B,OAASs4sB,EAAe/0sB,MAAQ,QACjG,UAAjB7D,EAAU,IAAkB+x5B,EAAazx5B,MAAQs4sB,EAAe/0sB,OAASku5B,EAAazx5B,OAASs4sB,EAAe70sB,KAAO,OACnH/D,EAAU,GAElBA,EAAU,GAAsB,QAAjBA,EAAU,IAAgB+x5B,EAAavx5B,OAASox5B,EAAYpx5B,OAASo4sB,EAAe90sB,QAAUiu5B,EAAavx5B,OAASox5B,EAAYpx5B,QAAUo4sB,EAAeh1sB,IAAM,SAC3J,WAAjB5D,EAAU,IAAmB+x5B,EAAavx5B,OAASox5B,EAAYpx5B,OAASo4sB,EAAeh1sB,KAAOmu5B,EAAavx5B,OAASox5B,EAAYpx5B,QAAUo4sB,EAAe90sB,OAAS,MAC/I,SAAjB9D,EAAU,IAAiB+x5B,EAAazx5B,MAAQsx5B,EAAYtx5B,MAAQs4sB,EAAe/0sB,OAASku5B,EAAazx5B,MAAQsx5B,EAAYtx5B,OAASs4sB,EAAe70sB,KAAO,QACzI,UAAjB/D,EAAU,IAAkB+x5B,EAAazx5B,MAAQsx5B,EAAYtx5B,MAAQs4sB,EAAe70sB,MAAQgu5B,EAAazx5B,MAAQsx5B,EAAYtx5B,OAASs4sB,EAAe/0sB,MAAQ,OAC3J7D,EAAU,GAEG,WAAjBA,EAAU,GACZ,GAAI2v5B,EAAgBpz1B,SAASzgE,KAAKkE,EAAU,IAAK,CAC/C,IAAIgy5B,EAAYJ,EAAYtx5B,MAAQ,EAAI4qH,EAAc,EAClD0tlB,EAAe70sB,KAAOiu5B,EAAY,GAAKD,EAAazx5B,MAAQsx5B,EAAYtx5B,OAASs4sB,EAAe/0sB,MAClG7D,EAAU,GAAK,OACN44sB,EAAe/0sB,MAAQmu5B,EAAY,GAAKD,EAAazx5B,MAAQsx5B,EAAYtx5B,OAASs4sB,EAAe70sB,OAC1G/D,EAAU,GAAK,QAEnB,KAAO,CACL,IAAIiy5B,EAAYL,EAAYpx5B,OAAS,EAAIux5B,EAAavx5B,OAAS,EAC3Do4sB,EAAeh1sB,IAAMqu5B,EAAY,GAAKF,EAAavx5B,OAASox5B,EAAYpx5B,QAAUo4sB,EAAe90sB,OACnG9D,EAAU,GAAK,MACN44sB,EAAe90sB,OAASmu5B,EAAY,GAAKF,EAAavx5B,OAASox5B,EAAYpx5B,QAAUo4sB,EAAeh1sB,MAC7G5D,EAAU,GAAK,SAEnB,CAEJ,CAEA,OAAQA,EAAU,IAChB,IAAK,MACH6x5B,EAAcju5B,IAAMgu5B,EAAYhu5B,IAAMqnH,EACtC,MACF,IAAK,SACH4myB,EAAcju5B,IAAMgu5B,EAAYhu5B,IAAMgu5B,EAAYpx5B,OAClD,MACF,IAAK,OACHqx5B,EAAc9t5B,KAAO6t5B,EAAY7t5B,KAAOmnH,EACxC,MACF,IAAK,QACH2myB,EAAc9t5B,KAAO6t5B,EAAY7t5B,KAAO6t5B,EAAYtx5B,MAIxD,OAAQN,EAAU,IAChB,IAAK,MACH6x5B,EAAcju5B,IAAMgu5B,EAAYhu5B,IAChC,MACF,IAAK,SACHiu5B,EAAcju5B,IAAMgu5B,EAAYhu5B,IAAMgu5B,EAAYpx5B,OAASyqH,EAC3D,MACF,IAAK,OACH4myB,EAAc9t5B,KAAO6t5B,EAAY7t5B,KACjC,MACF,IAAK,QACH8t5B,EAAc9t5B,KAAO6t5B,EAAY7t5B,KAAO6t5B,EAAYtx5B,MAAQ4qH,EAC5D,MACF,IAAK,SACCykyB,EAAgBpz1B,SAASzgE,KAAKkE,EAAU,IAC1C6x5B,EAAc9t5B,KAAO6t5B,EAAY7t5B,KAAO6t5B,EAAYtx5B,MAAQ,EAAI4qH,EAAc,EAE9E2myB,EAAcju5B,IAAMgu5B,EAAYhu5B,IAAMgu5B,EAAYpx5B,OAAS,EAAIyqH,EAAe,EASpF,OAJA4myB,EAAcju5B,IAAMxE,KAAK+F,MAAM0s5B,EAAcju5B,KAC7Ciu5B,EAAc9t5B,KAAO3E,KAAK+F,MAAM0s5B,EAAc9t5B,MAC9C8t5B,EAAc7x5B,UAA6B,WAAjBA,EAAU,GAAkBA,EAAU,GAAKA,EAAU,GAAK,IAAMA,EAAU,GAE7F6x5B,CACT,EAcAK,UAAW,SAASC,EAAkBC,EAAmBC,EAAeC,GACtE,IAAyC,IAArCH,EAAiBhw5B,QAAQ,QAAiBkw5B,IAAkBC,EAC9D,MAAO,CACL1u5B,IAAKwu5B,EAAkBxu5B,IAAM0u5B,EAAgB,KAGnD,EAUAC,cAAe,SAASj1oB,EAAMt9Q,GAE5B,IAAIwy5B,GAAY,EAEZC,GAHJn1oB,EAAO1jQ,KAAKi24B,WAAWvyoB,IAGFnmQ,cAAc,kBACnC,IAAKs74B,EAAW,CACd,IAAI3ixB,QAAQ5vI,QAAQo9Q,GAAMx5J,SAAS,WAGjC,OAFA0uyB,GAAY,CAIhB,CAEA,IAAIE,EAAYp1oB,EAAKnmQ,cAAc,UACnC,GAAKu74B,EAAL,CAIA,IAAIC,EAAW,CACb/u5B,IAAK,GACLE,OAAQ,GACRC,KAAM,GACNF,MAAO,IAIT,GAAqB,YADrB7D,EAAY4Z,KAAK234B,eAAevx5B,IAClB,GAAiB,CAC7B,IAAI4y5B,EAAkBh54B,KAAKpb,OAAOk05B,GAAW,GAC7C,GAAI/C,EAAgBpz1B,SAASzgE,KAAKkE,EAAU,IAAK,CAC/C,IAAI6y5B,EAAMD,EAAgBty5B,MAAQ,EAE9ByD,EADM6V,KAAKpb,OAAO8+Q,GAAMh9Q,MAAQ,EACnBuy5B,EACjBF,EAAS5u5B,KAAYA,EAAO,IAC9B,KAAO,CACL,IAAI+u5B,EAAMF,EAAgBpy5B,OAAS,EAE/BoD,EADMgW,KAAKpb,OAAO8+Q,GAAM98Q,OAAS,EACrBsy5B,EAChBH,EAAS/u5B,IAAWA,EAAM,IAC5B,CACF,CAEA,IAAImv5B,EAAa,UAAY/y5B,EAAU,GAAK,SAGxCgz5B,GAFcvpxB,EAAQxnI,iBAAiByw5B,GAAWK,GAE/B,WACnBpD,EAAgBpz1B,SAASzgE,KAAKkE,EAAU,IAC1Cgz5B,GAAoBhz5B,EAAU,GAAK,IAAMA,EAAU,GAEnDgz5B,GAAoBhz5B,EAAU,GAAK,IAAMA,EAAU,GAErDgz5B,GAAoB,UACpB,IAAIx10B,EAAeisD,EAAQxnI,iBAAiBuw5B,EAAYC,EAAYn1oB,GAAM01oB,GAE1E,GAAIR,EACF,OAAQxy5B,EAAU,IAChB,IAAK,MACH2y5B,EAAS7u5B,OAAS,IAClB,MACF,IAAK,SACH6u5B,EAAS/u5B,IAAM,IACf,MACF,IAAK,OACH+u5B,EAAS9u5B,MAAQ,IACjB,MACF,IAAK,QACH8u5B,EAAS5u5B,KAAO,IAKtB4u5B,EAAS3y5B,EAAU,IAAMw9E,EAEzBsyD,QAAQ5vI,QAAQwy5B,GAAW3v5B,IAAI4v5B,EAxD/B,CAyDF,EAEJ,IAEF7ixB,QAAQx0C,OAAO,+BAAgC,CAAC,0BAA2B,0BAE1E/7F,MAAM,kCAAkC,GAExC+gI,SAAS,2BAA4B,CACpC2yxB,gBAAiB,GACjBluxB,cAAc,EACdmuxB,UAAW,QACXC,sBAAsB,EACtBC,UAAW,OACXC,YAAa,QACbC,gBAAiB,aACjBC,2BAA4B,0CAC5BC,sBAAuB,0CACvBC,WAAY,CACVv42B,KAAM,aACN,iBAAkB,0BAClB,MAAS,WAEXw42B,aAAa,EACbC,eAAe,EACf3z5B,UAAW,qBAGZmhD,WAAW,+BAAgC,CAAC,SAAU,WAAY,SAAU,WAAY,OAAQ,SAAU,UAAW,YAAa,aAAc,eAAgB,aAAc,gBAAiB,2BAA4B,WAAY,sBAAuB,iCAC/P,SAAS62O,EAAQrM,EAAUC,EAAQzkJ,EAAUw/I,EAAMkG,EAAQpjJ,EAASrD,EAAWtG,EAAY8zxB,EAAWnxmB,EAAYyqmB,EAAY2G,EAAuBxsxB,EAAU0lxB,EAAkB+G,GAC/K,IAEIC,EAAYZ,EAAsBpuxB,EAAc2uxB,EAClDH,EAA4BC,EAAuBQ,EAASC,EAAcC,EAC1EzqmB,EAAS4S,EAAgB83lB,EAAQlB,EAHjCmB,GAAmB,EAG+BjH,EAAiB,GAiRrE,SAASkH,EAAgBhlmB,GACvB,IAAIn0Q,EAAOgy2B,EAAWl72B,MAAMq9Q,EAAW0kmB,EAAY/7nB,EAAO98O,MAC1D,GAAIv7C,MAAMu7C,GACR,IAAK,IAAIj8C,EAAI,EAAGA,EAAIg05B,EAAgBjl5B,OAAQ/O,IAE1C,GADAi8C,EAAOgy2B,EAAWl72B,MAAMq9Q,EAAW4jmB,EAAgBh05B,GAAI+4R,EAAO98O,OACzDv7C,MAAMu7C,GACT,OAAOA,EAIb,OAAOA,CACT,CAEA,SAAS8zG,EAAUqgK,GAMjB,GALIv/K,QAAQhiH,SAASuhS,KAEnBA,EAAY,IAAI5sS,KAAK4sS,KAGlBA,EACH,OAAO,KAGT,GAAIv/K,QAAQ2zF,OAAO4rF,KAAe1vT,MAAM0vT,GACtC,OAAOA,EAGT,GAAIv/K,QAAQ3yB,SAASkyM,GAAY,CAC/B,IAAIn0Q,EAAOm52B,EAAgBhlmB,GAC3B,IAAK1vT,MAAMu7C,GACT,OAAOgy2B,EAAWtC,WAAW1v2B,EAAMmhR,EAAepK,UAAU,YAEhE,CAEA,OAAOoK,EAAepK,UAAU,gBAAkB5C,OAAY3+S,CAChE,CAEA,SAASkqT,EAAUxL,EAAYC,GAC7B,IAAI9vT,EAAQ6vT,GAAcC,EAE1B,OAAKzjC,EAAO0+C,aAAe/qU,IAIvBuwI,QAAQhiH,SAASvuB,KACnBA,EAAQ,IAAIkjB,KAAKljB,KAGdA,MAIDuwI,QAAQ2zF,OAAOlkO,IAAWI,MAAMJ,OAIhCuwI,QAAQ3yB,SAAS59G,KACXI,MAAM005B,EAAgB905B,IAIlC,CAEA,SAAS+05B,EAAkBvu4B,GACzB,GAAKiyQ,EAAOs7jB,SAAUt7jB,EAAOpwO,SAA7B,CAIA,IAAIg3C,EAAQu1zB,EAAO,GACfI,EAAmB5ooB,EAAS,GAAGvqR,SAAS2kB,EAAMpe,QAG9C6s5B,OAAyC9j5B,IAAnBkuF,EAAMx9F,UAA0Bw9F,EAAMx9F,SAAS2kB,EAAMpe,SAC3EqwR,EAAOs7jB,QAAYihE,GAAoBC,GACzCx8nB,EAAOpwJ,OAAO,WACZowJ,EAAOs7jB,QAAS,CAClB,EAVF,CAYF,CAEA,SAASmhE,EAAiB/+2B,GACN,KAAdA,EAAIm2P,OAAgB7T,EAAOs7jB,QAC7B59yB,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJ8a,EAAOpwJ,OAAO,WACZowJ,EAAOs7jB,QAAS,CAClB,GACA3nkB,EAAS,GAAG/gL,SACW,KAAdl1D,EAAIm2P,OAAiB7T,EAAOs7jB,SACrC59yB,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJ8a,EAAOpwJ,OAAO,WACZowJ,EAAOs7jB,QAAS,CAClB,GAEJ,CAEA,SAASjptB,IACP,GAAI2tJ,EAAOs7jB,OAAQ,CACjB,IAAIohE,EAAY5kxB,QAAQ5vI,QAAQi05B,EAAO,GAAGh94B,cAAc,0BACpDnX,EAAY4rR,EAAO+ooB,eAAiB/ooB,EAAO+ooB,eAAiBd,EAAsB7z5B,UAClF0C,EAAWkx5B,EAAUnC,iBAAiB9loB,EAAU+ooB,EAAW105B,EAAW+kI,GAC1E2vxB,EAAU3x5B,IAAI,CAACa,IAAKlB,EAASkB,IAAM,KAAMG,KAAMrB,EAASqB,KAAO,OAC3D2w5B,EAAU5wyB,SAAS,yBACrB4wyB,EAAUpxyB,YAAY,uBAE1B,CACF,CA1XA1pG,KAAKosD,KAAO,SAAS4u1B,GA4CnB,GA1CAv4lB,EA0XF,SAAwBU,GACtB,IAAIV,EAkBJ,OAhBIvsL,QAAQrxD,QAAQ/a,MAAQ,GAE1B24P,EAAiBvsL,QAAQjmH,SAASkzS,EAAY/K,UAC5C+K,EAAY/K,SACZ,CACE7+C,SAAU,OAIC8+C,UAAY,SAAU7tT,GACnC,OAAOi4T,EAAej4T,EACxB,EAEAi4T,EAAiBU,EAAY/K,SAGxBqK,CACT,CA9YmByxlB,CADjBrkmB,EAAUmrmB,GAEVzB,EAAuBrjxB,QAAQ9yB,UAAU4uK,EAAOunoB,sBAC9Cn7nB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOunoB,sBAC5BU,EAAsBV,qBACxBpuxB,EAAe+K,QAAQ9yB,UAAU4uK,EAAOipoB,wBACtC78nB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOipoB,wBAC5BhB,EAAsB9uxB,aACxB2uxB,EAAc5jxB,QAAQ9yB,UAAU4uK,EAAO8noB,aACrC17nB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO8noB,aAAeG,EAAsBH,YACnEH,EAA6BzjxB,QAAQ9yB,UAAU4uK,EAAO2noB,4BACpD3noB,EAAO2noB,2BACPM,EAAsBN,2BACxBC,EAAwB1jxB,QAAQ9yB,UAAU4uK,EAAO4noB,uBAC/C5noB,EAAO4noB,sBAAwBK,EAAsBL,sBACvDP,EAAkBnjxB,QAAQ9yB,UAAU4uK,EAAOqnoB,iBACzCj7nB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOqnoB,iBAC5BY,EAAsBZ,gBAExBj7nB,EAAO27nB,cAAgB7jxB,QAAQ9yB,UAAU4uK,EAAO+noB,eAC9C37nB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO+noB,eAC5BE,EAAsBF,cAEpBE,EAAsBJ,WAAW7noB,EAAOhiQ,OAC1Cmq4B,EAAaF,EAAsBJ,WAAW7noB,EAAOhiQ,MACrDwq4B,GAAmB,IAEnBL,EAAanooB,EAAOkpoB,oBAAsBjB,EAAsBP,gBAChE1noB,EAAOxjJ,SAAS,qBAAsB,SAAS7oI,EAAO47R,GACpD,IAAI45nB,EAAgBx15B,GAASs05B,EAAsBP,gBAGnD,GAAIyB,IAAkBhB,IACpBA,EAAagB,EACbtrmB,EAAQmH,YAAc,MAEjBmjmB,GACH,MAAM,IAAI5y4B,MAAM,wDAGtB,KAGG4y4B,EACH,MAAM,IAAI5y4B,MAAM,yDAGlB,GAAIiz4B,GAAoBxooB,EAAOkpoB,mBAC7B,MAAM,IAAI3z4B,MAAM,0DAIlB6y4B,EAAUlkxB,QAAQ5vI,QAChB,uGAGMixQ,KAAK,CACX,WAAY,OACZ,YAAa,sBACb,eAAgBoipB,KAIlBU,EAAenkxB,QAAQ5vI,QAAQ8z5B,EAAQ5iyB,WAAW,KACrC+/I,KAAK,eAAgBqipB,GAE7Bx7nB,EAAOq1nB,oBACVr1nB,EAAOq1nB,kBAAoB,CAAC,GAG1B+G,GACkB,UAAhBxooB,EAAOhiQ,OACTouQ,EAAOq1nB,kBAAkBtB,eAAiB,QAC1C/znB,EAAOq1nB,kBAAkBZ,QAAU,SAIvCwH,EAAa9ipB,KAAK,qBAAsB,qBAEnCijpB,EAoBH3qmB,EAAQ2H,YAAY1jT,KAAK,SAASnO,GAEhC,OADAy4R,EAAO98O,KAAOgy2B,EAAWrC,aAAatr5B,EAAO88T,EAAepK,UAAU,aAC/D1yT,CACT,IArBAkqT,EAAQ8F,aAAe,OACvB9F,EAAQqF,YAAY5zQ,KAAO0/Q,EAC3BnR,EAAQ4H,SAAStgO,QAAQi+D,GACzBy6J,EAAQ2H,YAAY1jT,KAAK,SAASnO,GAChC,OAAIkqT,EAAQsF,SAASxvT,IACnBy4R,EAAO98O,KAAO37C,EACPA,IAGLuwI,QAAQhiH,SAASvuB,KACnBA,EAAQ,IAAIkjB,KAAKljB,IAGnBy4R,EAAO98O,KAAOgy2B,EAAWrC,aAAatr5B,EAAO88T,EAAepK,UAAU,aAE/Di7lB,EAAWri5B,OAAOmtR,EAAO98O,KAAM642B,GACxC,IASFtqmB,EAAQ6K,qBAAqB5mT,KAAK,WAChCsqR,EAAO98O,KAAOm52B,EAAgB5qmB,EAAQsG,WACxC,GAEApkC,EAASpnK,GAAG,UAAWkwyB,GAEvBN,EAAShtxB,EAAS6sxB,EAAT7sxB,CAAkB6wJ,GAE3Bg8nB,EAAQx32B,SAEJuoF,EACFqB,EAAU3xH,KAAK,QAAQ01H,OAAOgqxB,GAE9BxooB,EAAS5hM,MAAMoq0B,GAGjBn8nB,EAAO53J,IAAI,WAAY,WAkBrB,KAjBsB,IAAlB43J,EAAOs7jB,SACJxztB,EAAW6H,SACdqwJ,EAAOpwJ,OAAO,WACZowJ,EAAOs7jB,QAAS,CAClB,IAIJ6gE,EAAO332B,SACPmvO,EAAS9kJ,IAAI,UAAW4txB,GACxBruxB,EAAUS,IAAI,QAASytxB,GACnBJ,GACFA,EAAertxB,IAAI,SAAUwD,GAE/ByF,QAAQ5vI,QAAQupI,GAAS5C,IAAI,SAAUwD,GAGhC8ixB,EAAen/4B,QACpBm/4B,EAAerr2B,OAAfqr2B,EAEJ,EACF,EAEAn1nB,EAAO3b,QAAU,SAASj4Q,GACxB,OAAO4zR,EAAO5zR,EAAM,SAAWyv5B,EAAsBzv5B,EAAM,OAC7D,EAEA4zR,EAAOm8K,WAAa,SAASj5Z,GACd,UAATA,IACFA,EAAOgy2B,EAAWrC,aAAa,IAAIpo4B,KAAQ45S,EAAepK,UAAU,cAGtE,IAAIz0L,EAAQ,CAAC,EAeb,OAdAsS,QAAQlkI,QAAQ,CAAC,UAAW,WAAY,SAASxH,GAC1C4zR,EAAOq1nB,kBAAkBjp5B,GAEnB0rI,QAAQ2zF,OAAOu0D,EAAOq1nB,kBAAkBjp5B,IACjDo5H,EAAMp5H,GAAO,IAAIqe,KAAKu1Q,EAAOq1nB,kBAAkBjp5B,KAE3C0v5B,GACFntoB,EAAKlgQ,KAAK,gFAGZ+2G,EAAMp5H,GAAO,IAAIqe,KAAKggS,EAAWzqB,EAAOq1nB,kBAAkBjp5B,GAAM,YARhEo5H,EAAMp5H,GAAO,IAUjB,GAEO4zR,EAAOq1nB,mBACZ7vxB,EAAMgvxB,SAAWx0nB,EAAO1+O,QAAQ4B,EAAMsiF,EAAMgvxB,SAAW,GACvDhvxB,EAAM8uxB,SAAWt0nB,EAAO1+O,QAAQ4B,EAAMsiF,EAAM8uxB,SAAW,CAC3D,EAEAt0nB,EAAO1+O,QAAU,SAASmpgB,EAAOwsW,GAC/B,OAAO,IAAIxs4B,KAAKggiB,EAAMhjc,cAAegjc,EAAMljc,WAAYkjc,EAAMtjc,WAAa,IAAI18F,KAAKws4B,EAAMxvyB,cAAewvyB,EAAM1vyB,WAAY0vyB,EAAM9vyB,UAClI,EAGA64K,EAAO0hS,cAAgB,SAAS99a,GAC9Bo8I,EAAO98O,KAAO0gG,EACd,IAAI1gG,EAAO88O,EAAO98O,KAAOgy2B,EAAWri5B,OAAOmtR,EAAO98O,KAAM642B,GAAc,KACtEpooB,EAASpqP,IAAI2Z,GACbuuQ,EAAQoG,cAAc30Q,GAElBi42B,IACFn7nB,EAAOs7jB,QAAS,EAChB3nkB,EAAS,GAAG/gL,QAEhB,EAEAotL,EAAOipjB,QAAU,SAASvryB,GACN,KAAdA,EAAIm2P,QACNn2P,EAAIwnO,kBACJ8a,EAAOs7jB,QAAS,EAChB3nkB,EAAS,GAAG/gL,QAEhB,EAEAotL,EAAO6xC,OAAS,SAAS3uR,EAAMxF,GAG7B,GAFAA,EAAIwnO,kBAES,UAAThiO,EAAkB,CACpB,IAAIy4d,EAAQ,IAAIlxf,KACZqtH,QAAQ2zF,OAAOu0D,EAAO98O,OACxBA,EAAO,IAAIz4B,KAAKu1Q,EAAO98O,OAClBskE,YAAYm0Z,EAAMl0Z,cAAek0Z,EAAMp0Z,WAAYo0Z,EAAMx0Z,YAE9DjkE,EAAOgy2B,EAAWrC,aAAal3Y,EAAOt3M,EAAepK,UAAU,cAC1D3mK,SAAS,EAAG,EAAG,EAAG,EAE3B,CACA0sI,EAAO0hS,cAAcx+gB,EACvB,EAEA88O,EAAO3wQ,MAAQ,SAASquB,GACtBA,EAAIwnO,kBAEJ8a,EAAOs7jB,QAAS,EAChB3nkB,EAAS,GAAG/gL,OACd,EAEAotL,EAAOpwO,SAAWkoF,QAAQ9yB,UAAU4uK,EAAOhkO,YAAa,EACpDgkO,EAAO6hoB,YACTN,EAAez/4B,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAO6hoB,YAAa,SAAS7l2B,GAC5EowO,EAAOpwO,SAAWA,CACpB,IAGFowO,EAAOj7C,OAAO,SAAU,SAASx9O,GAC3BA,EACGy4R,EAAOpwO,SAuBVowO,EAAOs7jB,QAAS,EAtBhBjstB,EAAS,WACPgD,IAEIqpxB,GACF17nB,EAAOiU,WAAW,wBAGpB7lK,EAAU7hB,GAAG,QAAS+vyB,GAEtB,IAAIt05B,EAAY4rR,EAAO+ooB,eAAiB/ooB,EAAO+ooB,eAAiBd,EAAsB7z5B,UAClF+kI,GAAgB6uxB,EAAUrC,eAAevx5B,GAAW,IACtDk05B,EAAiBA,GAAkBpkxB,QAAQ5vI,QAAQ0z5B,EAAUns5B,aAAakkR,MAExEuooB,EAAe3vyB,GAAG,SAAU8lB,GAG9B6pxB,EAAiB,KAGnBpkxB,QAAQ5vI,QAAQupI,GAASllB,GAAG,SAAU8lB,EACxC,EAAG,GAAG,IAKRjE,EAAUS,IAAI,QAASytxB,GACnBJ,GACFA,EAAertxB,IAAI,SAAUwD,GAE/ByF,QAAQ5vI,QAAQupI,GAAS5C,IAAI,SAAUwD,GAE3C,GAyIA2tJ,EAAO53J,IAAI,sBAAuB,WAChCiH,EAASgD,EAAe,GAAG,EAC7B,EACF,IAEC7J,UAAU,qBAAsB,WAC/B,MAAO,CACLnf,QAAS,CAAC,UAAW,sBACrBlgE,WAAY,+BACZ5e,MAAO,CACL8q3B,kBAAmB,KACnB/5D,OAAQ,KACR+/D,YAAa,IACbH,UAAW,IACXE,UAAW,KAEbpwxB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAI5C,EAAU4C,EAAM,GACXA,EAAM,GAEVrmP,KAAKyjP,EACZ,EAEJ,GAECjpL,UAAU,yBAA0B,WACnC,MAAO,CACLkO,SAAU,IACVs9I,YAAY,EACZp9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,yCAC9B,EAEJ,GAEAkB,QAAQx0C,OAAO,wBAAyB,IAIrCn9F,QAAQ,aAAc,CAAC,WAAY,SAASkpI,GAC3C,OAAO,SAASv+G,EAAUks4B,GACxB,IAAI/z4B,EAEJ,OAAO,WACL,IAAIi7E,EAAOtiF,KACP3L,EAAOC,MAAM8L,UAAUtF,MAAMuF,KAAKlM,WAClCkT,GACFomH,EAAS9qF,OAAOt7B,GAGlBA,EAAiBomH,EAAS,WACxBv+G,EAASpO,MAAMwhF,EAAMjuF,EACvB,EAAG+m5B,EACL,CACF,CACF,IAEFllxB,QAAQx0C,OAAO,wBAAyB,IAIrCn9F,QAAQ,aAAc,WACrB,MAAO,CACL825B,UAAW,WACT,IAAIto5B,EAAM,CAAC,EAEX,MAAO,CACLmyD,QAAS,WACP,OAAOp7D,OAAOO,KAAK0I,GAAKA,IAAI,SAASvI,GACnC,MAAO,CACLA,IAAKA,EACL7E,MAAOoN,EAAIvI,GAEf,EACF,EACAqJ,IAAK,SAASrJ,GACZ,OAAOuI,EAAIvI,EACb,EACA8w5B,OAAQ,SAAS9w5B,GACf,QAASuI,EAAIvI,EACf,EACAH,KAAM,WACJ,OAAOP,OAAOO,KAAK0I,EACrB,EACAujI,IAAK,SAAS9rI,EAAK7E,GACZoN,EAAIvI,KACPuI,EAAIvI,GAAO,IAGbuI,EAAIvI,GAAKsJ,KAAKnO,EAChB,EACAi9C,OAAQ,SAASp4C,EAAK7E,GACpB,IAAIijC,EAAS71B,EAAIvI,GAEjB,GAAKo+B,EAAL,CAIA,IAAIxW,EAAMwW,EAAOrgC,QAAQ5C,IAEZ,IAATysB,GACFwW,EAAOmE,OAAO3a,EAAK,GAGhBwW,EAAOx0B,eACHrB,EAAIvI,EATb,CAWF,EAEJ,EAEJ,GAEF0rI,QAAQx0C,OAAO,wBAAyB,CAAC,wBAAyB,0BAEjEglC,SAAS,oBAAqB,CAC7B60xB,kBAAmB,oBACnB5O,UAAW,SAGZrgxB,QAAQ,qBAAsB,CAAC,YAAa,aAAc,aAAc,SAASE,EAAWtG,EAAYs1xB,GACvG,IAAIC,EAAY,KACZC,EAAmBF,EAAWH,YAElCr74B,KAAK274B,WAAa,SAASC,EAAej+P,GACxC,IAAIk+P,EAAkBH,EAAiB7n5B,IAAI8ppB,GAC3C,SAAIk+P,IACiBA,EAAgBvx5B,OAAO,SAASwx5B,EAASC,GAC1D,OAAIA,EAASpz3B,QAAUiz3B,EACdG,EAGFD,CACT,EAAG,CAAC,KAEgC,IAA3BD,EAAgBzn5B,MAK7B,EAEA4L,KAAK+tF,KAAO,SAAS6tzB,EAAet15B,EAASq3pB,GAW3C,GAVK89P,GACHjvxB,EAAU7hB,GAAG,QAASqxyB,GAGpBP,GAAaA,IAAcG,IAC7BH,EAAU/hE,QAAS,GAGrB+hE,EAAYG,EAEPj+P,EAAL,CAIA,IAAIk+P,EAAkBH,EAAiB7n5B,IAAI8ppB,GACvCk+P,GAI2C,IAH1BA,EAAgB9o5B,IAAI,SAASgp5B,GAC9C,OAAOA,EAASpz3B,KAClB,GACiBpgC,QAAQqz5B,IACvBF,EAAiBplxB,IAAIqnhB,EAAU,CAC7Bh1nB,MAAOiz3B,IAIXF,EAAiBplxB,IAAIqnhB,EAAU,CAC7Bh1nB,MAAOiz3B,GAdX,CAiBF,EAEA574B,KAAKyN,MAAQ,SAASmu4B,EAAet15B,EAASq3pB,GAO5C,GANI89P,IAAcG,IAChBpvxB,EAAUS,IAAI,QAAS+uxB,GACvBxvxB,EAAUS,IAAI,UAAWjtH,KAAKi84B,eAC9BR,EAAY,MAGT99P,EAAL,CAIA,IAAIk+P,EAAkBH,EAAiB7n5B,IAAI8ppB,GAC3C,GAAIk+P,EAAiB,CACnB,IAAIK,EAAkBL,EAAgBvx5B,OAAO,SAASwx5B,EAASC,GAC7D,OAAIA,EAASpz3B,QAAUiz3B,EACdG,EAGFD,CACT,EAAG,CAAC,GACAI,GACFR,EAAiB942B,OAAO+6mB,EAAUu+P,EAEtC,CAdA,CAeF,EAEA,IAAIF,EAAgB,SAASlg3B,GAG3B,GAAK2/2B,GAAcA,EAAU/hE,UAEzB59yB,GAAoC,aAA7B2/2B,EAAUU,gBAEjBrg3B,GAAqB,IAAdA,EAAIm2P,OAAf,CAEA,IAAIy4O,EAAgB+wY,EAAUW,mBAC9B,KAAItg3B,GAAO4ue,GAAiBA,EAAc,GAAGljhB,SAASs0C,EAAI/tC,SAA1D,CAIA,IAAIsu5B,EAAkBZ,EAAUa,qBAC5Bxg3B,GAAoC,iBAA7B2/2B,EAAUU,gBACnBE,GAAmBA,EAAgB,GAAG705B,SAASs0C,EAAI/tC,UAIrD0t5B,EAAU/hE,QAAS,EAEdxztB,EAAW6H,SACd0txB,EAAUztxB,SAXZ,CALsC,CAkBxC,EAEAhuH,KAAKi84B,cAAgB,SAASng3B,GAC5B,GAAK2/2B,EAAL,CAKA,IAAIY,EAAkBZ,EAAUa,qBAC5B5xY,EAAgB+wY,EAAUW,mBAC1BG,EAA0BF,GAAmBA,EAAgB,GAAG705B,SAASs0C,EAAI/tC,QAC7Eyu5B,EAAwB9xY,GAAiBA,EAAc,GAAGljhB,SAASs0C,EAAI/tC,QACzD,KAAd+tC,EAAIm2P,OACNn2P,EAAIwnO,kBACJm4oB,EAAUgB,qBACVT,KACSP,EAAUiB,oBAAsD,IAAjC,CAAC,GAAI,IAAIn05B,QAAQuzC,EAAIm2P,QAAiBwpnB,EAAU/hE,SAAW6iE,GAA2BC,KAC9H1g3B,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJm4oB,EAAUkB,mBAAmB7g3B,EAAIm2P,OAbnC,CAeF,CACF,IAEC1qP,WAAW,wBAAyB,CAAC,SAAU,WAAY,SAAU,SAAU,oBAAqB,qBAAsB,WAAY,eAAgB,YAAa,WAAY,mBAAoB,SAAS62O,EAAQrM,EAAUC,EAAQiB,EAAQ2poB,EAAgBC,EAAoB3poB,EAAU8moB,EAAWxtxB,EAAWe,EAAUylJ,GAC3T,IAEE8poB,EAGAC,EALEz6zB,EAAOtiF,KACT2oB,EAAQy1P,EAAO/tJ,OAEfkrxB,EAAoBqB,EAAerB,kBACnC5O,EAAYiQ,EAAejQ,UAE3BqQ,EAAY9mxB,QAAQtmH,KACpBqt4B,EAAgBjroB,EAAOmoE,SAAWlnE,EAAOjB,EAAOmoE,UAAYjkN,QAAQtmH,KACpEst4B,GAAgB,EAEhBxv5B,EAAO8+H,EAAU3xH,KAAK,QAuFxB,SAASsi5B,IACPproB,EAASxhJ,OAAOjuC,EAAK86zB,aACvB,CAvFArroB,EAAS9nK,SAAS,YAElBjqG,KAAKosD,KAAO,WACN4lN,EAAO0nkB,SACTqjE,EAAY9poB,EAAOjB,EAAO0nkB,QAC1BsjE,EAAYD,EAAUhz5B,OAEtBq0R,EAAOj7C,OAAO45qB,EAAW,SAASp35B,GAChCgjC,EAAM+wzB,SAAW/z1B,CACnB,IAGFu35B,EAAgBhnxB,QAAQ9yB,UAAU4uK,EAAOqroB,YAC3C,EAEAr94B,KAAKgoP,OAAS,SAASj6J,GAMrB,OALAplE,EAAM+wzB,OAASvl1B,UAAUC,SAAW25F,GAAQplE,EAAM+wzB,OAC9CxjtB,QAAQrjH,WAAWmq4B,IACrBA,EAAUr03B,EAAOA,EAAM+wzB,QAGlB/wzB,EAAM+wzB,MACf,EAGA150B,KAAK050B,OAAS,WACZ,OAAO/wzB,EAAM+wzB,MACf,EAEA/wzB,EAAMyz3B,iBAAmB,WACvB,OAAO95zB,EAAKoob,aACd,EAEA/hf,EAAMwz3B,aAAe,WACnB,OAAOnqoB,EAAOsokB,WAAa,QAC7B,EAEA3xzB,EAAMwuC,WAAa,WACjB,OAAO46M,CACT,EAEAppP,EAAM+z3B,gBAAkB,WACtB,OAAOQ,CACT,EAEAv03B,EAAMg03B,mBAAqB,SAAS/kmB,GAClC,IAAIqX,EAAQ3sO,EAAK86zB,aACflnxB,QAAQ5vI,QAAQg8F,EAAK86zB,cAAcvi5B,KAAK,kBACxCk3Q,EAASl3Q,KAAK,OAAO0e,GAAG,GAAG1e,KAAK,MAElC,OAAQ+8S,GACN,KAAK,GACE1hL,QAAQhiH,SAASouE,EAAK4jO,gBAGzB5jO,EAAK4jO,eAAiB5jO,EAAK4jO,iBAAmB+I,EAAM76T,OAAS,EAC3DkuF,EAAK4jO,eACL5jO,EAAK4jO,eAAiB,EAJxB5jO,EAAK4jO,eAAiB,EAMxB,MAEF,KAAK,GACEhwL,QAAQhiH,SAASouE,EAAK4jO,gBAGzB5jO,EAAK4jO,eAAyC,IAAxB5jO,EAAK4jO,eACzB,EAAI5jO,EAAK4jO,eAAiB,EAH5B5jO,EAAK4jO,eAAiB+I,EAAM76T,OAAS,EAS3C66T,EAAM3sO,EAAK4jO,gBAAgBl1N,OAC7B,EAEAroE,EAAM2z3B,mBAAqB,WACzB,OAAOh6zB,EAAK86zB,YACd,EAEAz03B,EAAM8z3B,mBAAqB,WACrBn6zB,EAAKoob,eACPpob,EAAKoob,cAAc,GAAG15a,OAE1B,EAMAroE,EAAMw6M,OAAO,SAAU,SAASu2mB,EAAQ4jE,GACtC,IAAI3/P,EAAW,KACbxyhB,GAAe,EAEjB,GAAI+K,QAAQ9yB,UAAU4uK,EAAOuroB,kBAAmB,CAC9C,IAAIC,EAAavqoB,EAAOjB,EAAOuroB,iBAAdtqoB,CAAgCtqP,GAC7C603B,IACF7/P,EAAWznhB,QAAQ5vI,QAAQk35B,GAE/B,CAuBA,GArBItnxB,QAAQ9yB,UAAU4uK,EAAOyroB,wBAED,IADFxqoB,EAAOjB,EAAOyroB,qBAAdxqoB,CAAoCtqP,KAE1DwiG,GAAe,GAIfA,IAAiBwyhB,IACnBA,EAAWjwpB,GAGTiwpB,GAAYr7jB,EAAK86zB,eACf1jE,GACF/7L,EAASpthB,OAAOjuC,EAAK86zB,cACrBrroB,EAASpnK,GAAG,WAAYwyyB,KAExBproB,EAAS9kJ,IAAI,WAAYkwxB,GACzBA,MAIAx/P,GAAYr7jB,EAAK86zB,aAAc,CACjC,IACEj05B,EACAu05B,EACArH,EAHE9j4B,EAAMyn4B,EAAUnC,iBAAiB9loB,EAAUzvL,EAAK86zB,aAAc,eAAe,GAI/E/jV,EAAiB,EAyBnB,GAvBAlwkB,EAAM,CACJa,IAAKuoB,EAAIvoB,IAAM,KACfwyD,QAASk9xB,EAAS,QAAU,SAG9BgkE,EAAap7zB,EAAK86zB,aAAalzyB,SAAS,yBAKtC/gH,EAAIgB,KAAO,QACXks5B,EAAmB2D,EAAU3D,iBAAiB14P,IAEzB84P,gBAAkBJ,EAAiBh9U,iBACtDA,EAAiBg9U,EAAiBh9U,gBAGpClwkB,EAAIc,MAAQ9C,OAAOymG,WAAayre,GAC7B9mjB,EAAIpoB,KAAO4nR,EAASz/O,KAAK,gBAAkB,OAX9CnpC,EAAIgB,KAAOooB,EAAIpoB,KAAO,KACtBhB,EAAIc,MAAQ,SAeTkhI,EAAc,CACjB,IAAIwyxB,EAAe3D,EAAUp15B,OAAO+4pB,GAEpCx0pB,EAAIa,IAAMuoB,EAAIvoB,IAAM2z5B,EAAa3z5B,IAAM,KAElC0z5B,EAGHv05B,EAAIc,MAAQ9C,OAAOymG,YAChBr7E,EAAIpoB,KAAOwz5B,EAAaxz5B,KAAO4nR,EAASz/O,KAAK,gBAAkB,KAHlEnpC,EAAIgB,KAAOooB,EAAIpoB,KAAOwz5B,EAAaxz5B,KAAO,IAK9C,CAEAm4F,EAAK86zB,aAAaj05B,IAAIA,EACxB,CAGA,IAMMq7Q,EANFo5oB,EAAgBjgQ,GAAsBznhB,QAAQ5vI,QAAQyrR,EAAS,GAAGx0Q,cAAc,wBAChFsg5B,EAAoBlgQ,EAAW49P,EAAoB5O,EACnDmR,EAAeF,EAAc1zyB,SAAS2zyB,GACtClC,EAAakB,EAAmBlB,WAAWv9nB,EAAQu/X,GAoBvD,GAlBImgQ,KAAkBpkE,IASpBxmkB,EANE1O,EADEm5Y,EACag+P,EAA0B,cAAb,WAEdjiE,EAAS,WAAa,eAIhB3nkB,EAAU8roB,GAEhC3qoB,EAAS1O,GAAao5oB,EAAeC,GAAmBhn5B,KAAK,WACvDq/H,QAAQ9yB,UAAUs2uB,IAAWA,IAAW4jE,GAC1CL,EAAc7+nB,EAAQ,CAAErwL,OAAQ2rvB,GAEpC,IAGEA,EACEp3vB,EAAKy7zB,wBACP/qoB,EAAiB1wL,EAAKy7zB,yBAAyBln5B,KAAK,SAASmn5B,GAC3DlB,EAAgBn03B,EAAM0nG,OACtB9C,EAASywxB,EAAWhg5B,OAApBuvH,CAA4BuvxB,EAAe,SAAST,GAClD,IAAI4B,EAAQ5B,EACZ/5zB,EAAK86zB,aAAan5oB,YAAYg6oB,GAC9B37zB,EAAK86zB,aAAea,EACpB/qoB,EAASjpK,SAAS3nB,EAAK86zB,aAAcS,GACrCrxxB,EAAU7hB,GAAG,UAAWkyyB,EAAmBZ,cAC7C,EACF,GAEAzvxB,EAAU7hB,GAAG,UAAWkyyB,EAAmBZ,eAG7Ctz3B,EAAM8z3B,qBACNI,EAAmB9uzB,KAAKplE,EAAOopP,EAAU4rY,OACpC,CAEL,GADAk/P,EAAmBpv4B,MAAMkb,EAAOopP,EAAU4rY,GACtCr7jB,EAAKy7zB,wBAAyB,CAC5BjB,GACFA,EAAc98oB,WAEhB,IAAIi+oB,EAAQ/nxB,QAAQ5vI,QAAQ,qCAC5Bg8F,EAAK86zB,aAAan5oB,YAAYg6oB,GAC9B37zB,EAAK86zB,aAAea,CACtB,CAEA37zB,EAAK4jO,eAAiB,IACxB,CAEIhwL,QAAQrjH,WAAWmq4B,IACrBA,EAAU5+nB,EAAQs7jB,EAEtB,EACF,IAEC9ytB,UAAU,cAAe,WACxB,MAAO,CACLr/E,WAAY,wBACZ6hF,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOm1xB,GACpCA,EAAa9x1B,MACf,EAEJ,GAECw6D,UAAU,kBAAmB,WAC5B,MAAO,CACLkO,SAAU,IACVrtB,QAAS,gBACT2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOm1xB,GACpC,GAAKA,IAAgBhoxB,QAAQ9yB,UAAU2lB,EAAMo1xB,gBAA7C,CAIA735B,EAAQ2jH,SAAS,iBAEjB,IAAIm0yB,EAASr1xB,EAAMiM,YACfopxB,IACFF,EAAaH,wBAA0BK,GAGpCF,EAAad,eAChBc,EAAad,aAAe925B,EAV9B,CAYF,EAEJ,GAECsgI,UAAU,oBAAqB,WAC9B,MAAO,CACLnf,QAAS,gBACT2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOm1xB,GACpC,GAAKA,EAAL,CAIA535B,EAAQ2jH,SAAS,mBAEjBi0yB,EAAaxzY,cAAgBpkhB,EAE7B,IAAI+35B,EAAiB,SAASly4B,GAC5BA,EAAMwgH,iBAEDrmI,EAAQ4jH,SAAS,aAAgB6e,EAAM/6E,UAC1CrlB,EAAMqlG,OAAO,WACXkwxB,EAAal2pB,QACf,EAEJ,EAEA1hQ,EAAQqkH,GAAG,QAAS0zyB,GAEpB,IAAIC,EAAe,SAASny4B,GACN,KAAhBA,EAAM8lR,OAAiBisnB,EAAaxkE,WACtCvt0B,EAAMwgH,iBACNxgH,EAAMm3P,kBAEDh9Q,EAAQ4jH,SAAS,aAAgB6e,EAAM/6E,UAC1CrlB,EAAMqlG,OAAO,WACXkwxB,EAAal2pB,QACf,GAGN,EAEA1hQ,EAAQqkH,GAAG,UAAW2zyB,GAGtBh45B,EAAQixQ,KAAK,CAAE,iBAAiB,EAAM,iBAAiB,IACvD5uO,EAAMw6M,OAAO+6qB,EAAaxkE,OAAQ,SAASA,GACzCpz1B,EAAQixQ,KAAK,kBAAmBmilB,EAClC,GAEA/wzB,EAAM69F,IAAI,WAAY,WACpBlgI,EAAQ2mI,IAAI,QAASoxxB,GACrB/35B,EAAQ2mI,IAAI,UAAWqxxB,EACzB,EA1CA,CA2CF,EAEJ,GAEApoxB,QAAQx0C,OAAO,0BAA2B,IAKvCn9F,QAAQ,eAAgB,WACvB,MAAO,CACL825B,UAAW,WACT,IAAI902B,EAAQ,GAEZ,MAAO,CACLjzC,IAAK,SAAS9I,EAAK7E,GACjB4gD,EAAMzyC,KAAK,CACTtJ,IAAKA,EACL7E,MAAOA,GAEX,EACAkO,IAAK,SAASrJ,GACZ,IAAK,IAAInF,EAAI,EAAGA,EAAIkhD,EAAMnyC,OAAQ/O,IAChC,GAAImF,IAAQ+7C,EAAMlhD,GAAGmF,IACnB,OAAO+7C,EAAMlhD,EAGnB,EACAgF,KAAM,WAEJ,IADA,IAAIA,EAAO,GACFhF,EAAI,EAAGA,EAAIkhD,EAAMnyC,OAAQ/O,IAChCgF,EAAKyJ,KAAKyyC,EAAMlhD,GAAGmF,KAErB,OAAOH,CACT,EACAL,IAAK,WACH,OAAOu8C,EAAMA,EAAMnyC,OAAS,EAC9B,EACAwuC,OAAQ,SAASp4C,GAEf,IADA,IAAI4nB,GAAO,EACF/sB,EAAI,EAAGA,EAAIkhD,EAAMnyC,OAAQ/O,IAChC,GAAImF,IAAQ+7C,EAAMlhD,GAAGmF,IAAK,CACxB4nB,EAAM/sB,EACN,KACF,CAEF,OAAOkhD,EAAMxZ,OAAO3a,EAAK,GAAG,EAC9B,EACAms4B,UAAW,WACT,OAAOh42B,EAAMlkC,KACf,EACAjO,OAAQ,WACN,OAAOmyC,EAAMnyC,MACf,EAEJ,EAEJ,GACF8hI,QAAQx0C,OAAO,qBAAsB,CAAC,wBAAyB,0BAA2B,0BAKvFilC,SAAS,cAAe,WACvB,IAAI/vH,EAAUoJ,KACdA,KAAK62B,SAAW,KAEhB72B,KAAKw+4B,YAAc,SAAS3n3B,GAC1B72B,KAAK62B,SAAWA,CAClB,EAEA72B,KAAK4jG,KAAO,CAAC,YAAa,KAAM,SAASuiB,EAAWhE,GAClD,IAAItrF,EAAWjgC,EAAQigC,SAAWsvF,EAAUtyH,IAAI+C,EAAQigC,UAAY,KACpE,MAAO,CACLjgC,QAAS,SAAS6n5B,EAAY53xB,EAAQp/H,EAAQ66F,GAC5C,GAAIzrD,EACF,OAAOA,EAASjgC,QAAQ6n5B,EAAY53xB,EAAQp/H,EAAQ66F,GAGtD,IAAIn+C,EAAW,GAYf,OAVA+xF,QAAQlkI,QAAQys5B,EAAY,SAAS945B,GAC/BuwI,QAAQrjH,WAAWltB,IAAUuwI,QAAQnmH,QAAQpqB,GAC/Cw+C,EAASrwC,KAAKquH,EAAGvrH,QAAQuvH,EAAUm/G,OAAO3/O,KACjCuwI,QAAQ3yB,SAAS59G,GAC1Bw+C,EAASrwC,KAAKquH,EAAGvrH,QAAQuvH,EAAUtyH,IAAIlO,KAEvCw+C,EAASrwC,KAAKquH,EAAGvrH,QAAQjR,GAE7B,GAEOw8H,EAAGr8E,IAAI3B,GAAUttC,KAAK,SAAS6n5B,GACpC,IAAIzyS,EAAa,CAAC,EACd0yS,EAAc,EAKlB,OAJAzoxB,QAAQlkI,QAAQys5B,EAAY,SAAS945B,EAAO6E,GAC1CyhnB,EAAWzhnB,GAAOk05B,EAASC,IAC7B,GAEO1yS,CACT,EACF,EAEJ,EACF,GAKCrlf,UAAU,mBAAoB,CAAC,iBAAkB,KAAM,WACxD,SAASg4xB,EAAaz8xB,EAAI+wJ,GACxB,MAAO,CACLp+I,SAAU,IACVtxB,QAAS,SAASquK,EAAUC,GAE1B,OADAD,EAAS5nK,SAAS6nK,EAAO+soB,eAClBrkoB,CACT,GAGF,SAASA,EAAO7xP,EAAOriC,EAASyiI,GAG9B,IAAI+1xB,EAAsB38xB,EAAGjZ,QAE7BvgF,EAAMshP,aAAa,WACjB60oB,EAAoBlo5B,SACtB,GAEAko5B,EAAoBz8xB,QAAQxrH,KAAK,WAC3BkyH,EAAMg2xB,cACR7roB,EAASjpK,SAAS3jH,EAASyiI,EAAMg2xB,aAErC,GAEIh2xB,EAAMg2xB,cACRp23B,EAAM69F,IAAIo4xB,EAAYI,kBAAmB,SAASh65B,EAAGi65B,GACnD,IAAIz94B,EAAOy94B,IACPt23B,EAAMu23B,aAAan23B,UACrBmqP,EAASxpK,YAAYpjH,EAASyiI,EAAMg2xB,cAAclo5B,KAAK2K,GAEvDA,GAEJ,EAIJ,CACF,IAEColH,UAAU,iBAAkB,CAAC,iBAAkB,KAAM,cAAe,YACrE,SAASg4xB,EAAaz8xB,EAAI0uM,EAAarkM,GACrC,MAAO,CACL7jG,MAAO,CACLnyB,MAAO,KAETs+H,SAAU,IACVs9I,YAAY,EACZp9I,YAAa,SAAS68I,EAAUC,GAC9B,OAAOA,EAAO98I,aAAe,gCAC/B,EACA5L,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC7BziI,EAAQ2jH,SAAS8e,EAAMo2xB,gBAAkB,IACzCx23B,EAAM5V,KAAOg2G,EAAMh2G,KAEnB4V,EAAMlb,MAAQ,SAASquB,GACrB,IAAIsj3B,EAAQR,EAAYS,SACpBD,GAASA,EAAMz55B,MAAM0uE,UACE,WAAzB+q1B,EAAMz55B,MAAM0uE,UACZv4B,EAAI/tC,SAAW+tC,EAAIo1S,gBACnBp1S,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJs7oB,EAAYU,QAAQF,EAAM505B,IAAK,kBAEnC,EAGAlE,EAAQqkH,GAAG,QAAShiF,EAAMlb,OAK1Bkb,EAAM423B,aAAc,EAGpB,IAAIT,EAAsB38xB,EAAGjZ,QAE7BvgF,EAAMshP,aAAa,WACjB60oB,EAAoBlo5B,SACtB,GAEAko5B,EAAoBz8xB,QAAQxrH,KAAK,WAC/B,IAAI2o5B,EAAmB,KAEnBz2xB,EAAMg2xB,eACRS,EAAmB3ulB,EAAYvqU,EAAS,CACtC2jH,SAAU8e,EAAMg2xB,eACfty5B,QAEHk8B,EAAM69F,IAAIo4xB,EAAYI,kBAAmB,SAASh65B,EAAGi65B,GACnD,IAAIz94B,EAAOy94B,IACXpulB,EAAYvqU,EAAS,CACnBojH,YAAaqf,EAAMg2xB,eAClBty5B,QAAQoK,KAAK2K,EAClB,IAIF2gH,EAAGC,KAAKo9xB,GAAkB3o5B,KAAK,WAE7B,IAAIuo5B,EAAQR,EAAYS,SASxB,GARID,GACFR,EAAYa,cAAcL,EAAM505B,MAO5BgiI,EAAU,GAAG8sT,gBAAiBhzb,EAAQ,GAAGkB,SAASglI,EAAU,GAAG8sT,eAAiB,CACpF,IAAIome,EAAqBp55B,EAAQ,GAAGiX,cAAc,eAS9Cmi5B,EACFA,EAAmB1uzB,QAEnB1qG,EAAQ,GAAG0qG,OAEf,CACF,EACF,EACF,EAEJ,IAEC41B,UAAU,yBAA0B,WACnC,MAAO,CACLpjB,QAAS,SAASquK,EAAUC,GACtBA,EAAO6toB,gBACT9toB,EAAS5nK,SAAS6nK,EAAO8toB,uBAE7B,EAEJ,GAECh5xB,UAAU,qBAAsB,CAAC,WAAY,SAASssJ,GACrD,MAAO,CACL9pJ,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAOxhF,EAAY6qO,GAChDA,EAAWzpP,EAAMkuP,QAAS,SAAS5xP,GACjC3+B,EAAQuzQ,QACRqZ,EAAS5lB,MAAMroO,EAAO3+B,EACxB,EACF,EAEJ,IAEC/B,QAAQ,iBAAkB,CAAC,WAAY,cAAe,YACrD,WAAY,aAAc,KAAM,aAAc,eAAgB,eAC9D,SAAS2uR,EAAU29C,EAAarkM,EAAWe,EAAUrH,EAAY/D,EAAIq5xB,EAAYqE,EAAcC,GAC7F,IAEIC,EAAeC,EAcf3J,EAhBA4J,EAAqB,aAGrBC,EAAgBL,EAAaxE,YAC7B8E,EAAgB3E,EAAWH,YAC3BuD,EAAc,CAChBI,kBAAmB,2BAEjBoB,EAAgB,EAChBC,EAAyB,KACzBC,EAA6B,yCAO7BvkpB,EAAoB,SAgBxB,SAASwkpB,IAGP,IAFA,IAAIC,GAAoB,EACpBC,EAASP,EAAc715B,OAClBhF,EAAI,EAAGA,EAAIo75B,EAAOrs5B,OAAQ/O,IAC7B665B,EAAcrs5B,IAAI4s5B,EAAOp75B,IAAIM,MAAM0uE,WACrCms1B,EAAmBn75B,GASvB,OAHIm75B,GAAoB,GAAKA,EAAmBJ,IAC9CI,EAAmBJ,GAEdI,CACT,CAQA,SAASE,EAAkBC,EAAeC,GACxC,IAAIC,EAAcX,EAAcrs5B,IAAI8s5B,GAAeh75B,MAC/Cm75B,EAAkBD,EAAYljQ,SAGlCuiQ,EAAct92B,OAAO+92B,IACrBN,EAAyBH,EAAcl25B,SAErCo25B,EAAgBj63B,SAASk63B,EAAuB165B,MAAMo75B,WAAWxppB,KAAK,SAAU,KAGlFyppB,EAAmBH,EAAYE,WAAYF,EAAYI,WAAY,WACjE,IAAIC,EAAiBL,EAAYM,aAAelB,EAChDE,EAAcv92B,OAAOs+2B,EAAgBP,GACrC,IAAIS,EAAajB,EAAc7E,OAAO4F,GACtCJ,EAAgBt8oB,YAAY08oB,EAAgBE,IACvCA,GAAc/K,GAAoBA,EAAiBI,gBAAkBJ,EAAiBh9U,iBACrFg9U,EAAiBG,cACnBsK,EAAgB335B,IAAI,CAACkiE,aAAcgr1B,EAAiBG,cAAgB,OAEpEsK,EAAgB335B,IAAI,CAACkiE,aAAc,KAErCgr1B,EAAmB,MAErBgL,GAAqB,EACvB,EAAGR,EAAYS,gBAuBXvB,IAAsC,IAArBQ,MAEnBS,EAAmBjB,EAAeC,EAAe,WAEjD,GACAD,OAAgBjp5B,EAChBkp5B,OAAgBlp5B,GAzBd8p5B,GAAyBA,EAAsB5vzB,MACjD4vzB,EAAsB5vzB,QACb8vzB,EAAgB9vzB,OACzB8vzB,EAAgB9vzB,OAEpB,CAGA,SAASqwzB,EAAqBE,GAC5B,IAAIV,EAEAX,EAAc9r5B,SAAW,IAC3Bys5B,EAAcX,EAAcl25B,MAAMrE,OACtBo75B,WAAWv8oB,YAAYq8oB,EAAY1B,gBAAkB,GAAIoC,EAEzE,CAcA,SAASP,EAAmBQ,EAAO743B,EAAOnnB,EAAM8/4B,GAC9C,IAAIG,EACAC,EAAe,KAgBnB,OALA/43B,EAAM0pQ,WAAWusnB,EAAYI,kBAVZ,WAMf,OALKyC,IACHA,EAAgBt/xB,EAAGjZ,QACnBw4yB,EAAeD,EAAcp/xB,SAGxB,WACLo/xB,EAAc7q5B,SAChB,CACF,GAMOurH,EAAGC,KAAKs/xB,GAAc7q5B,KAE7B,SAAS8q5B,IACHA,EAAeng5B,OAGnBmg5B,EAAeng5B,MAAO,EAEtB0xQ,EAAS9H,MAAMo2oB,GAAO3q5B,KAAK,WACrB2K,GACFA,IAGFgg5B,EAAM5+2B,SACF0+2B,GACFA,EAAe1q5B,SAEnB,GAEA+xB,EAAMq3O,WACR,EACF,CAQA,SAAS4hpB,EAAgB9l3B,GACvB,GAAIA,EAAIinO,qBACN,OAAOjnO,EAGT,IAAIsj3B,EAAQc,EAAcl25B,MAC1B,GAAIo15B,EACF,OAAQtj3B,EAAIm2P,OACV,KAAK,GACCmtnB,EAAMz55B,MAAMys1B,WACdt2yB,EAAI6wF,iBACJzG,EAAW8H,OAAO,WAChB4wxB,EAAYU,QAAQF,EAAM505B,IAAK,mBACjC,IAEF,MAEF,KAAK,EACH,IAAIoD,EAAOgx5B,EAAYiD,qBAAqBzC,GACxC0C,GAAe,EACfhm3B,EAAIk2P,UACF4snB,EAAYmD,mBAAmBjm3B,EAAKluC,IAASgx5B,EAAYoD,eAAelm3B,EAAKsj3B,MAC/E0C,EAAelD,EAAYqD,0BAA0Br05B,IAGnDgx5B,EAAYsD,kBAAkBpm3B,EAAKluC,KACrCk05B,EAAelD,EAAYuD,2BAA2Bv05B,IAItDk05B,IACFhm3B,EAAI6wF,iBACJ7wF,EAAIwnO,mBAOd,CA0IA,SAAS8+oB,EAAiBvB,EAAawB,EAAgBC,GACrD,OAAQzB,EAAYl75B,MAAMs75B,WAAW5unB,WAAW,gBAAiBgwnB,EAAgBC,GAASt/oB,gBAC5F,CAEA,SAASu/oB,IACPju5B,MAAM8L,UAAUpO,QAAQqO,KACtB5X,SAAS62Q,iBAAiB,IAAMghpB,EAA6B,KAC7D,SAASkC,GACP,IACEC,EADoBt83B,SAASq83B,EAAS1k5B,aAAawi5B,GAA6B,IAC7C,EACrCkC,EAASvk5B,aAAaqi5B,EAA4BmC,GAE7CA,IACHD,EAASrk5B,gBAAgBmi5B,GACzBkC,EAASrk5B,gBAAgB,eAE7B,EAEJ,CAkGA,OApZA+nH,EAAWi9G,OAAOo9qB,EAAe,SAASmC,GACpC1C,IACFA,EAAcxp5B,MAAQks5B,EAE1B,GAqGAl2xB,EAAU7hB,GAAG,UAAWi3yB,GAExB17xB,EAAWM,IAAI,WAAY,WACzBgG,EAAUS,IAAI,UAAW20xB,EAC3B,GA2CAhD,EAAY7wzB,KAAO,SAAS4yzB,EAAevB,GACzC,IAAIuD,EAAcn2xB,EAAU,GAAG8sT,cAC7B4ne,EAAiB9B,EAAM+B,aAAelB,EAExCoB,GAAqB,GAIrBhB,EAAyBH,EAAcl25B,MAEvCk25B,EAAc5s5B,IAAIqt5B,EAAe,CAC/Br2yB,SAAU80yB,EAAM90yB,SAChBs4yB,eAAgBxD,EAAMwD,eACtBtB,eAAgBlC,EAAMkC,eACtBL,WAAY7B,EAAMz23B,MAClB0rC,SAAU+q1B,EAAM/q1B,SAChB+9wB,SAAUgtE,EAAMhtE,SAChB+uE,YAAa/B,EAAM+B,YACnBhC,eAAgBC,EAAMD,eACtBp23B,UAAWq23B,EAAMr23B,UACjB40nB,SAAUyhQ,EAAMzhQ,WAGlBwiQ,EAAc7pxB,IAAI4qxB,EAAgBP,GAElC,IA6BI95yB,EA7BAi6yB,EAAkB1B,EAAMzhQ,SACxBklQ,EAAoBtC,IAEpBsC,GAAqB,IAAM9C,KAC7BC,EAAgB95xB,EAAWmK,MAAK,IAClB6uxB,aAAeE,EAC7BY,EAAcxp5B,MAAQqs5B,GACtB9C,EAAgB7pxB,QAAQ5vI,QAAQ,oDAClBixQ,KAAK,CACjB,MAAS,iBACT,WAAY,mDACZ,4BAA6B,OAC7B,iBAAkB,SAEhB6npB,EAAMP,eACRkB,EAAc91yB,SAASm1yB,EAAMP,eAG3BO,EAAMr23B,WACRg33B,EAAcxopB,KAAK,kBAAmB,QAGxC2b,EAAS5lB,MAAM//H,EAASwyxB,EAATxyxB,CAAwByyxB,GAAgBc,IACvDzK,EAAmByJ,EAAazJ,iBAAiByK,IAC5BrK,gBAAkBJ,EAAiBh9U,gBACtDynV,EAAgB335B,IAAI,CAACkiE,aAAcgr1B,EAAiBps5B,MAAQ,QAK5Dm15B,EAAMpn1B,WACR6uC,EAAUp+G,SAASskB,cAAyBqy4B,EAAMpn1B,UAAUzkE,KA5OlDxP,QAAQg4Q,EAAmB,SAASE,EAAQ1pP,GACtD,OAAQA,EAFM,IAEY,IAAM0pP,EAAO7zQ,aACzC,KA2OEy+G,EAAUqvB,QAAQ5vI,QAAQugH,IAClB0wJ,KAAK,CACX3gQ,QAAS,WACT,iBAAkB,oBAClB6W,MAAO,iBACP6x4B,QAAS,sBAGXz4yB,EAAUu4yB,EAAMv4yB,QAIlBu5yB,EAAgBC,EAAyBl63B,SAASk63B,EAAuB165B,MAAMo75B,WAAWxppB,KAAK,SAAU,IAAM,EAAI,EACnH,IAAIurpB,EAAe5sxB,QAAQ5vI,QAAQ,+CACnCw85B,EAAavrpB,KAAK,CAChB,MAAS,QACT,eAAgB6npB,EAAM2D,kBACtB,mBAAoB3D,EAAMD,eAC1B,KAAQ,SACR,kBAAmBC,EAAM4D,eACzB,mBAAoB5D,EAAM6D,gBAC1B,KAAQ7D,EAAMrs4B,KACd,MAASqt4B,EACT,QAAW,UACX,WAAY,2DACZ,UAAa,EACb,4BAA6B,OAC7B,iBAAkB,SACjB7vxB,OAAO1pB,GACNu4yB,EAAM8D,aACRJ,EAAa74yB,SAASm1yB,EAAM8D,aAG1B9D,EAAMr23B,WACR+53B,EAAavrpB,KAAK,kBAAmB,QAGvCuppB,EAAgB72yB,SAASi3yB,GACrB9B,EAAMz23B,QAGRy23B,EAAMz23B,MAAMw63B,gBAAkB/C,GAEhCltoB,EAAS5lB,MAAM//H,EAASu1xB,EAATv1xB,CAAuB6xxB,EAAMz23B,OAAQm43B,GAEpDZ,EAAcl25B,MAAMrE,MAAMo75B,WAAa+B,EACvC5C,EAAcl25B,MAAMrE,MAAMg95B,YAAcA,EAIxC,SAASS,EAAgB7l3B,GACvB,GAAKA,GAAwB,SAAlBA,EAAG,GAAGyzE,QAgBjB,OAEA,SAAqBzzE,GACnB,IAAIi6E,EAAWj6E,EAAG91C,SAAW81C,EAAG91C,SAAS+vH,WAAa,GAEtD,OAAOljH,MAAM8L,UAAUnP,OAAOoP,KAAKm3G,EAAU,SAAS9vH,GACpD,OAAOA,IAAU61C,EAAG,EACtB,EACF,CApBA8l3B,CAAY9l3B,GAAIvrC,QAAQ,SAASu+M,GAC/B,IAAI+ysB,EAA8D,SAAxC/ysB,EAAQzyM,aAAa,eAC7Cyl5B,EAAkBp93B,SAASoqL,EAAQzyM,aAAawi5B,GAA6B,IAE1EiD,IACHA,EAAkBD,EAAsB,EAAI,GAG9C/ysB,EAAQtyM,aAAaqi5B,EAA4BiD,EAAkB,GACnEhzsB,EAAQtyM,aAAa,cAAe,OACtC,GAEOml5B,EAAgB7l3B,EAAG91C,SAS5B,CA5BA275B,CAAgBN,EA6BlB,EAsBAlE,EAAYnx4B,MAAQ,SAASkz4B,EAAext5B,GAC1C,IAAI0t5B,EAAcX,EAAcrs5B,IAAI8s5B,GAEpC,OADA4B,IACI1B,GAAeuB,EAAiBvB,EAAa1t5B,GAAQ,IACvD0t5B,EAAYl75B,MAAMs75B,WAAWuC,2BAA4B,EACzD3C,EAAYl75B,MAAM2kH,SAAS1zG,QAAQzD,GACnCut5B,EAAkBC,EAAeE,EAAYl75B,MAAMg95B,cAC5C,IAGD9B,CACV,EAEAjC,EAAYU,QAAU,SAASqB,EAAenmqB,GAC5C,IAAIqmqB,EAAcX,EAAcrs5B,IAAI8s5B,GAEpC,OADA4B,IACI1B,GAAeuB,EAAiBvB,EAAarmqB,GAAQ,IACvDqmqB,EAAYl75B,MAAMs75B,WAAWuC,2BAA4B,EACzD3C,EAAYl75B,MAAM2kH,SAASlpG,OAAOo5O,GAClCkmqB,EAAkBC,EAAeE,EAAYl75B,MAAMg95B,cAC5C,IAED9B,CACV,EAEAjC,EAAY6E,WAAa,SAASjpqB,GAEhC,IADA,IAAIkpqB,EAAW1j5B,KAAKq/4B,SACbqE,GAAY1j5B,KAAKs/4B,QAAQoE,EAASl55B,IAAKgwP,IAC5CkpqB,EAAW1j5B,KAAKq/4B,QAEpB,EAEAT,EAAYS,OAAS,WACnB,OAAOa,EAAcl25B,KACvB,EAEA405B,EAAYa,cAAgB,SAASkB,GACnC,IAAIE,EAAcX,EAAcrs5B,IAAI8s5B,GAChCE,GACFA,EAAYl75B,MAAMi95B,eAAehs5B,SAErC,EAEAgo5B,EAAYuD,2BAA6B,SAASv05B,GAChD,OAAIA,EAAKwG,OAAS,IAChBxG,EAAK,GAAGojG,SACD,EAGX,EAEA4tzB,EAAYqD,0BAA4B,SAASr05B,GAC/C,OAAIA,EAAKwG,OAAS,IAChBxG,EAAKA,EAAKwG,OAAS,GAAG48F,SACf,EAGX,EAEA4tzB,EAAYoD,eAAiB,SAASlm3B,EAAK+k3B,GACzC,GAAI/k3B,GAAO+k3B,EAAa,CACtB,IAAIE,EAAaF,EAAYl75B,MAAMo75B,WACnC,GAAIA,GAAcA,EAAW3s5B,OAC3B,OAAQ0nC,EAAI/tC,QAAU+tC,EAAIogZ,cAAgB6ke,EAAW,EAEzD,CACA,OAAO,CACT,EAEAnC,EAAYmD,mBAAqB,SAASjm3B,EAAKluC,GAC7C,OAAIA,EAAKwG,OAAS,IACR0nC,EAAI/tC,QAAU+tC,EAAIogZ,cAAgBtub,EAAK,EAGnD,EAEAgx5B,EAAYsD,kBAAoB,SAASpm3B,EAAKluC,GAC5C,OAAIA,EAAKwG,OAAS,IACR0nC,EAAI/tC,QAAU+tC,EAAIogZ,cAAgBtub,EAAKA,EAAKwG,OAAS,EAGjE,EAEAwq5B,EAAYiD,qBAAuB,SAAShB,GAC1C,GAAIA,EAAa,CACf,IAAI8C,EAAa9C,EAAYl75B,MAAMo75B,WACnC,GAAI4C,GAAcA,EAAWvv5B,OAAQ,CACnC,IAAIzD,EAAWgz5B,EAAW,GAAGrkpB,iBAhbZ,6RAibjB,OAAO3uQ,EACL2D,MAAM8L,UAAUnP,OAAOoP,KAAK1P,EAAU,SAASrK,GAC7C,OAraV,SAAmBA,GACjB,SAAUA,EAAQK,aAChBL,EAAQO,cACRP,EAAQs95B,iBAAiBxv5B,OAC7B,CAiaiB8ha,CAAU5va,EACnB,GAAKqK,CACT,CACF,CACF,EAEOiu5B,CACT,IAEDj4xB,SAAS,YAAa,WACrB,IAAIk9xB,EAAiB,CACnBj05B,QAAS,CACPm5B,WAAW,EACXsrC,UAAU,EACV+9wB,UAAU,GAEZxuuB,KAAM,CAAC,aAAc,KAAM,YAAa,mBAAoB,cAAe,cAAe,iBACxF,SAAUsiB,EAAY/D,EAAIqK,EAAWwmJ,EAAkBhkJ,EAAa80xB,EAAalF,GAC/E,IAAImF,EAAS,CAAC,EAQVC,EAAe,KA4JnB,OA3JAD,EAAOE,gBAAkB,WACvB,OAAOD,CACT,EAEAD,EAAOh2zB,KAAO,SAASmxzB,GACrB,IAiCIgF,EA7CsBt05B,EA6DtBu05B,EAjDAC,EAAsBjiyB,EAAGjZ,QACzBm7yB,EAAsBliyB,EAAGjZ,QACzBo7yB,EAAsBniyB,EAAGjZ,QACzBq7yB,EAAsBpiyB,EAAGjZ,QAGzBy3yB,EAAgB,CAClBxt5B,OAAQix5B,EAAoB/hyB,QAC5Bo+xB,OAAQ4D,EAAoBhiyB,QAC5Bl0B,OAAQm2zB,EAAoBjiyB,QAC5BmiyB,SAAUD,EAAoBliyB,QAC9B50G,MAAO,SAAUta,GACf,OAAOyr5B,EAAYnx4B,MAAMkz4B,EAAext5B,EAC1C,EACAms5B,QAAS,SAAU9kqB,GACjB,OAAOokqB,EAAYU,QAAQqB,EAAenmqB,EAC5C,GAQF,IAJA0kqB,EAAehpxB,QAAQlzB,OAAO,CAAC,EAAG6gzB,EAAej05B,QAASsv5B,IAC7Cto5B,QAAUso5B,EAAato5B,SAAW,CAAC,EAChDso5B,EAAavhQ,SAAWuhQ,EAAavhQ,UAAYnxhB,EAAU3xH,KAAK,QAAQ0e,GAAG,IAEtE2l4B,EAAavhQ,SAASvppB,OACzB,MAAM,IAAImT,MAAM,4EAIlB,IAAK234B,EAAaln1B,YAAckn1B,EAAan+rB,WAAam+rB,EAAalqxB,YACrE,MAAM,IAAIztH,MAAM,oEAWlB,SAASk94B,IACP,OAAOP,CACT,CAwGA,OAhHEA,EADEhF,EAAaln1B,UACamqD,EAAGC,KAAK0hyB,EAAYlt5B,QAAQso5B,EAAato5B,QAAS,CAAC,EAAG,KAAM,OAGtFurH,EAAGr8E,IAAI,EAlDel2C,EAkDKsv5B,EAjDxBtv5B,EAAQmxN,SAAW5+F,EAAGC,KAAKxyH,EAAQmxN,UACxCiyD,EAAiB98I,QAAQrjH,WAAWjjB,EAAQolI,aAC1CplI,EAAQolI,cAAgBplI,EAAQolI,cA+CU8uxB,EAAYlt5B,QAAQso5B,EAAato5B,QAAS,CAAC,EAAG,KAAM,QAYlGut5B,EAAcH,EAAe7hyB,EAAGr8E,IAAI,CAACk+2B,IAClCnt5B,KAAK4t5B,EAAqBA,GAC1B5t5B,KAAK,SAAwB6t5B,GAC5B,IAAIC,EAAgBzF,EAAav23B,OAASu9F,EAEtC+6xB,EAAa0D,EAAct0xB,OAC/B4wxB,EAAW2D,OAASjE,EAAclz4B,MAClCwz4B,EAAW4D,SAAWlE,EAAcrB,QAEpC2B,EAAWz6xB,IAAI,WAAY,WACpBy6xB,EAAWuC,2BACdvC,EAAW4D,SAAS,6BAExB,GAEA,IAoBIC,EAAcC,EApBd3F,EAAQ,CACVz23B,MAAOs43B,EACP32yB,SAAU85yB,EACVxB,eAAgB2B,EAChBjD,eAAgBgD,EAChBv73B,UAAWm23B,EAAan23B,UACxBsrC,SAAU6q1B,EAAa7q1B,SACvB+9wB,SAAU8sE,EAAa9sE,SACvBysE,cAAeK,EAAaL,cAC5BM,eAAgBD,EAAaC,eAC7B+D,YAAahE,EAAagE,YAC1BH,kBAAmB7D,EAAa6D,kBAChCC,eAAgB9D,EAAa8D,eAC7BC,gBAAiB/D,EAAa+D,gBAC9Blw4B,KAAMms4B,EAAans4B,KACnBou4B,YAAajC,EAAaiC,YAC1BxjQ,SAAUuhQ,EAAavhQ,UAGrB3llB,EAAY,CAAC,EACkBgt1B,EAAa,CAAC,EAmCjD,SAASC,EAAgB3y4B,EAAKyuM,EAAUmksB,EAAiBC,GACvD7y4B,EAAI8rQ,OAAS6ioB,EACb3u4B,EAAI8rQ,OAAOgnoB,SAAW,CAAC,EACnBF,EACF5y4B,EAAI8rQ,OAAOinoB,kBAAoB1E,EAE/Bru4B,EAAI+y4B,kBAAoB1E,EAG1B,IAAIjC,EAAW39rB,EAAW2jsB,EAAW,GAAKA,EAC1CxuxB,QAAQlkI,QAAQ0s5B,EAAU,SAAS/45B,EAAO6E,GACpC265B,IACF7y4B,EAAI9nB,GAAO7E,GAGb2sB,EAAI8rQ,OAAOgnoB,SAAS565B,GAAO7E,CAC7B,EACF,CAlDIu55B,EAAaln1B,WACfit1B,EAAgBjt1B,GAAW,GAAO,GAAM,GACxCA,EAAUzkE,KAAO2r5B,EAAaln1B,UAC9Bon1B,EAAMpn1B,UAAYA,GACTkn1B,EAAa332B,aACtB092B,EAAgBD,GAAY,GAAM,GAAO,GAIzCD,EAAkB/1xB,EAAYkwxB,EAAa332B,WAAYy92B,GAAY,EAAM9F,EAAahtoB,cAClFgtoB,EAAahtoB,cAAgBgtoB,EAAahuoB,oBAC5C4zoB,EAAeC,EAAgB1v5B,UAClBuv5B,OAAS3D,EAAW2D,OACjCE,EAAaD,SAAW5D,EAAW4D,SACnC3uxB,QAAQlzB,OAAO8hzB,EAAc,CAC3BM,SAAUJ,EAAW5moB,OAAOgnoB,UAC3BT,IAGLG,EAAeC,IAEX7uxB,QAAQrjH,WAAWiy4B,EAAa5loB,UAClC4loB,EAAa5loB,WAIZggoB,EAAaln1B,YAChBon1B,EAAMv4yB,QAAU69yB,EAAW,IAG7B9F,EAAY7wzB,KAAK4yzB,EAAevB,GAChCiF,EAAoBzt5B,SAAQ,EAoBhC,EAAG,SAAsB4jP,GACvB6pqB,EAAoBjj5B,OAAOo5O,GAC3B4pqB,EAAoBhj5B,OAAOo5O,EAC7B,GAAY,QAAE,WACRwpqB,IAAiBG,IACnBH,EAAe,KAEnB,GAEOrD,CACT,EAEOoD,CACT,IAIJ,OAAOF,CACT,GAEF3txB,QAAQx0C,OAAO,sBAAuB,IAKrCn9F,QAAQ,YAAa,CAAC,SAAU,SAAS0uR,GACxC,MAAO,CACLvyQ,OAAQ,SAASiuH,EAAMyvJ,EAAQpM,GAC7BrjJ,EAAK22xB,YAActzoB,EAAOuzoB,SAAWtyoB,EAAOjB,EAAOuzoB,UAAUx75B,OAASmsI,QAAQtmH,KAC9E++G,EAAKw0L,YAAc,CAAElN,cAAe//K,QAAQtmH,MAC5C++G,EAAK62xB,UAAY,GAEjB72xB,EAAKviE,KAAO,SAAS+2P,EAAapkT,GAChC4vH,EAAKw0L,YAAcA,EACnBx0L,EAAK5vH,OAASA,EAEdokT,EAAYjN,QAAU,WACpBvnL,EAAKtwD,QACP,EAEI2zM,EAAOyzoB,aACT92xB,EAAK62xB,UAAU1x5B,KAAKsqR,EAAOvH,QAAQ1zC,OAAO6uC,EAAOyzoB,aAAc,SAAS9/5B,GACtEgpI,EAAK82xB,aAAet/3B,SAASxgC,EAAO,IACpCy4R,EAAOsnoB,WAAa/2xB,EAAKg3xB,sBACzBh3xB,EAAKi3xB,YACP,IAEAj3xB,EAAK82xB,aAAe1m5B,EAAO0m5B,aAG7BrnoB,EAAOj7C,OAAO,aAAc,SAAS0irB,EAAUC,IACzC5vxB,QAAQ9yB,UAAUyizB,IAAaA,IAAaC,KAC9C1noB,EAAOsnoB,WAAa/2xB,EAAKg3xB,sBACzBh3xB,EAAKi3xB,aAET,EACF,EAEAj3xB,EAAKg3xB,oBAAsB,WACzB,IAAID,EAAa/2xB,EAAK82xB,aAAe,EAAI,EAAIjg6B,KAAKsjE,KAAKs1N,EAAOqoF,WAAa93O,EAAK82xB,cAChF,OAAOjg6B,KAAKmE,IAAI+75B,GAAc,EAAG,EACnC,EAEA/2xB,EAAKtwD,OAAS,WACZ+/M,EAAOzuK,KAAOxpF,SAASwoG,EAAKw0L,YAAYhN,WAAY,KAAO,CAC7D,EAEA/3B,EAAO2noB,WAAa,SAASp2yB,EAAM7zE,GAC7BA,GACFA,EAAI6wF,mBAGcyxJ,EAAOy1nB,aAAe/32B,IACtBsiP,EAAOzuK,OAASA,GAAQA,EAAO,GAAKA,GAAQyuK,EAAOsnoB,aACjE5p3B,GAAOA,EAAI/tC,QACb+tC,EAAI/tC,OAAOgjG,OAEb49B,EAAKw0L,YAAYlN,cAActmM,GAC/Bgf,EAAKw0L,YAAYjN,UAErB,EAEA93B,EAAO3b,QAAU,SAASj4Q,GACxB,OAAO4zR,EAAO5zR,EAAM,SAAWmkI,EAAK5vH,OAAOvU,EAAM,OACnD,EAEA4zR,EAAO4noB,WAAa,WAClB,OAAuB,IAAhB5noB,EAAOzuK,IAChB,EAEAyuK,EAAO6noB,OAAS,WACd,OAAO7noB,EAAOzuK,OAASyuK,EAAOsnoB,UAChC,EAEA/2xB,EAAKi3xB,WAAa,WAChBj3xB,EAAK22xB,YAAYlnoB,EAAOvH,QAASuH,EAAOsnoB,YAEpCtnoB,EAAOzuK,KAAOyuK,EAAOsnoB,WACvBtnoB,EAAO2noB,WAAW3noB,EAAOsnoB,YAEzB/2xB,EAAKw0L,YAAYjN,SAErB,EAEA93B,EAAO53J,IAAI,WAAY,WACrB,KAAOmI,EAAK62xB,UAAUpx5B,QACpBu6H,EAAK62xB,UAAUt92B,OAAfymF,EAEJ,EACF,EAEJ,IAEAuH,QAAQx0C,OAAO,qBAAsB,CAAC,sBAAuB,0BAE5Dn6C,WAAW,qBAAsB,CAAC,SAAU,SAAU,YAAa,iBAAkB,SAAS62O,EAAQpM,EAAQk0oB,EAAWC,GACxH/noB,EAAO1uQ,MAAQwmH,QAAQ9yB,UAAU4uK,EAAOtiQ,OAAS0uQ,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOtiQ,OAASy24B,EAAez24B,MAErGw24B,EAAUxl5B,OAAOV,KAAMo+Q,EAAQpM,EACjC,IAECtrJ,SAAS,iBAAkB,CAC1B++xB,aAAc,GACdW,aAAc,aACdC,SAAU,SACV324B,OAAO,IAGRk3G,UAAU,WAAY,CAAC,iBAAkB,SAASu/xB,GACjD,MAAO,CACLx93B,MAAO,CACL89U,WAAY,IACZ2/iB,aAAc,IACdC,SAAU,IACVxS,WAAY,KAEdpsyB,QAAS,CAAC,WAAY,YACtBqtB,SAAU,IACVvtF,WAAY,qBACZ2qO,aAAc,QACdl9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,+BAC9B,EACA5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpCnsT,EAAQ2jH,SAAS,SACjB,IAAIq8yB,EAAiB7zmB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAE9C0Q,GAILmjmB,EAAel61B,KAAK+2P,EAAagjmB,EACnC,EAEJ,IAEAjwxB,QAAQx0C,OAAO,0BAA2B,CAAC,sBAAuB,0BACjEn6C,WAAW,0BAA2B,CAAC,SAAU,SAAU,SAAU,YAAa,sBAAuB,SAAS62O,EAAQpM,EAAQiB,EAAQizoB,EAAWK,GACpJ,IAAI53xB,EAAO3uH,KAEPo3C,EAAU8+E,QAAQ9yB,UAAU4uK,EAAO56N,SAAWgnO,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO56N,SAAWmv2B,EAAoBnv2B,QAC3GlvB,EAASguG,QAAQ9yB,UAAU4uK,EAAO9pP,QAAUk2P,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO9pP,QAAUq+3B,EAAoBr+3B,OACtGs+3B,EAAgBtwxB,QAAQ9yB,UAAU4uK,EAAOw0oB,eAAiBpooB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOw0oB,eAAiBD,EAAoBC,cAC3HC,EAAsBvwxB,QAAQ9yB,UAAU4uK,EAAOy0oB,qBAAuBrooB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOy0oB,qBAAuBF,EAAoBE,oBAC7IC,EAAYxwxB,QAAQ9yB,UAAU4uK,EAAO00oB,WAAa,SAASt04B,GAAO,OAAOgsQ,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO00oB,UAAW,CAACC,MAAOv04B,GAAO,EAAI8jH,QAAQqpF,SAe7I,SAASqnsB,EAAS3j3B,EAAQnT,EAAM6lS,GAC9B,MAAO,CACL1yR,OAAQA,EACRnT,KAAMA,EACNiU,OAAQ4xR,EAEZ,CApBAv3C,EAAOyooB,cAAgB3wxB,QAAQ9yB,UAAU4uK,EAAO60oB,eAAiBzooB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO60oB,eAAiBN,EAAoBM,cAClIzooB,EAAO0ooB,eAAiB5wxB,QAAQ9yB,UAAU4uK,EAAO80oB,gBAAkB1ooB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO80oB,gBAAkBP,EAAoBO,eACrI90oB,EAAO7jJ,KAAK,OAAQ,QAEpB+3xB,EAAUxl5B,OAAOV,KAAMo+Q,EAAQpM,GAE3BA,EAAO56N,SACTu3E,EAAK62xB,UAAU1x5B,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAO56N,SAAU,SAASzxD,GACzEyxD,EAAUjxB,SAASxgC,EAAO,IAC1BgpI,EAAKtwD,QACP,IAmFF,IAAIq4O,EAAiB12S,KAAKq+D,OAC1Br+D,KAAKq+D,OAAS,WACZq4O,IACIt4B,EAAOzuK,KAAO,GAAKyuK,EAAOzuK,MAAQyuK,EAAOsnoB,aAC3CtnoB,EAAO2ooB,MA3EX,SAAkBC,EAAatB,GAC7B,IAAIqB,EAAQ,GAGRE,EAAY,EAAGC,EAAUxB,EACzByB,EAAajxxB,QAAQ9yB,UAAUhsD,IAAYA,EAAUsu2B,EAGrDyB,IACEj/3B,GAGFg/3B,GADAD,EAAYzh6B,KAAKmE,IAAIq95B,EAAcxh6B,KAAKQ,MAAMoxD,EAAU,GAAI,IACtCA,EAAU,GAGlBsu2B,IAEZuB,GADAC,EAAUxB,GACYtu2B,EAAU,IAIlC6v2B,GAAazh6B,KAAKsjE,KAAKk+1B,EAAc5v2B,GAAW,GAAKA,EAAU,EAG/D8v2B,EAAU1h6B,KAAKkE,IAAIu95B,EAAY7v2B,EAAU,EAAGsu2B,KAKhD,IAAK,IAAIzi3B,EAASgk3B,EAAWhk3B,GAAUik3B,EAASjk3B,IAAU,CACxD,IAAI0sE,EAAOi3yB,EAAS3j3B,EAAQyj3B,EAAUzj3B,GAASA,IAAW+j3B,GAC1DD,EAAMjz5B,KAAK67G,EACb,CAGA,GAAIw3yB,GAAc/v2B,EAAU,KAAOlvB,GAAUs+3B,GAAiBC,GAAsB,CAClF,GAAIQ,EAAY,EAAG,CACjB,IAAKR,GAAuBQ,EAAY,EAAG,CAC3C,IAAIG,EAAkBR,EAASK,EAAY,EAAG,OAAO,GACrDF,EAAM5v0B,QAAQiw0B,EAChB,CACE,GAAIX,EAAqB,CACvB,GAAkB,IAAdQ,EAAiB,CACnB,IAAII,EAAiBT,EAAS,EAAG,KAAK,GACtCG,EAAM5v0B,QAAQkw0B,EAChB,CAEA,IAAIC,EAAgBV,EAAS,EAAG,KAAK,GACrCG,EAAM5v0B,QAAQmw0B,EAChB,CACF,CAEA,GAAIJ,EAAUxB,EAAY,CACxB,IAAKe,GAAuBS,EAAUxB,EAAa,EAAG,CACtD,IAAI6B,EAAcX,EAASM,EAAU,EAAG,OAAO,GAC/CH,EAAMjz5B,KAAKyz5B,EACb,CACE,GAAId,EAAqB,CACvB,GAAIS,IAAYxB,EAAa,EAAG,CAC9B,IAAI8B,EAAuBZ,EAASlB,EAAa,EAAGA,EAAa,GAAG,GACpEqB,EAAMjz5B,KAAK0z5B,EACb,CAEA,IAAIC,EAAeb,EAASlB,EAAYA,GAAY,GACpDqB,EAAMjz5B,KAAK2z5B,EACb,CACF,CACF,CACA,OAAOV,CACT,CAMmBW,CAAStpoB,EAAOzuK,KAAMyuK,EAAOsnoB,YAEhD,CACF,IAECh/xB,SAAS,sBAAuB,CAC/B++xB,aAAc,GACdoB,eAAe,EACfJ,qBAAqB,EACrBK,gBAAgB,EAChBa,UAAW,QACXvB,aAAc,WACdC,SAAU,OACVuB,SAAU,OACV1/3B,QAAQ,EACRs+3B,eAAe,IAGhB5/xB,UAAU,gBAAiB,CAAC,SAAU,sBAAuB,SAASqsJ,EAAQszoB,GAC7E,MAAO,CACL593B,MAAO,CACL89U,WAAY,IACZkhjB,UAAW,IACXvB,aAAc,IACdC,SAAU,IACVuB,SAAU,IACV/T,WAAW,KAEbpsyB,QAAS,CAAC,gBAAiB,YAC3BqtB,SAAU,IACVvtF,WAAY,0BACZ2qO,aAAc,aACdl9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,yCAC9B,EACA5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpCnsT,EAAQ2jH,SAAS,cACjB,IAAIq8yB,EAAiB7zmB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAE9C0Q,GAILmjmB,EAAel61B,KAAK+2P,EAAaojmB,EACnC,EAEJ,IAOArwxB,QAAQx0C,OAAO,uBAAwB,CAAC,wBAAyB,4BAMhEilC,SAAS,cAAe,WAEvB,IAAI9xH,EAAiB,CACnBzO,UAAW,MACXyh6B,qBAAsB,cACtB9+3B,WAAW,EACXkiG,WAAY,EACZ68xB,gBAAiB,EACjBC,eAAe,GAIbC,EAAa,CACf,WAAc,aACd,MAAS,QACT,aAAgB,eAChB,MAAS,OACT,KAAQ,IAINC,EAAgB,CAAC,EAWtBjo5B,KAAKpQ,QAAU,SAASjK,GACvBuwI,QAAQlzB,OAAOilzB,EAAeti6B,EAC/B,EAOCqa,KAAKko5B,YAAc,SAAqB5skB,GACtCplN,QAAQlzB,OAAOglzB,EAAY1skB,EAC7B,EAiBAt7U,KAAK4jG,KAAO,CAAC,UAAW,WAAY,WAAY,YAAa,eAAgB,eAAgB,aAAc,SAAU,eAAgB,SAASisB,EAAStC,EAAUE,EAAUjB,EAAWwtxB,EAAWjnoB,EAAc7sJ,EAAY+sJ,EAAQ4soB,GACjO,IAAIsI,EAAiBtI,EAAaxE,YAOlC,SAAS+M,EAAiBpj6B,GACxB,GAAgB,KAAZA,EAAEitS,MAAc,CAClB,IAAI/9O,EAAOi02B,EAAen+5B,MACtBkqD,IACFA,EAAKvuD,MAAM8nB,QACXymC,EAAO,KAEX,CACF,CAEA,OAhBAs4E,EAAU7hB,GAAG,QAASy9yB,GAEtBliyB,EAAWM,IAAI,WAAY,WACzBgG,EAAUS,IAAI,QAASm7xB,EACzB,GAYO,SAAkBC,EAAQnz3B,EAAQoz3B,EAAoB145B,GAiB3D,SAAS245B,EAAYpj2B,GACnB,IAAIvgB,GAAQugB,GAAWv1D,EAAQu1D,SAAWmj2B,GAAoBpn6B,MAAM,KAChE6jD,EAAOH,EAAK7xC,IAAI,SAASoyD,GAC3B,OAAO6i2B,EAAW7i2B,IAAYA,CAChC,GACA,MAAO,CACLvgB,KAAMA,EACNG,KAAMA,EAEV,CAzBAn1C,EAAUsmI,QAAQlzB,OAAO,CAAC,EAAGnuG,EAAgBoz5B,EAAer45B,GA2B5D,IAAIghR,EAA2By3oB,EAvDrBtk6B,QAFC,SAEe,SAASk4Q,EAAQ1pP,GAC3C,OAAQA,EAFM,IAEY,IAAM0pP,EAAO7zQ,aACzC,GAuDMog6B,EAAWz1oB,EAAaqC,cACxBqzoB,EAAS11oB,EAAasC,YACtBt0D,EACF,QAAS6vD,EAAT,qBACkB43oB,EAAW,QAAUC,EAAS,MAC7C745B,EAAQm45B,cACP,8BACA,YAAcS,EAAW,UAAYC,EAAS,MAJlD,wDAMmCvz3B,EANnC,0FAaF,MAAO,CACLsuE,QAAS,SAASklzB,EAAO52oB,GACvB,IAAI62oB,EAAgBp7xB,EAASwzF,GAE7B,OAAO,SAAcp4L,EAAOriC,EAASyiI,EAAO6/xB,GAC1C,IAAIvy2B,EACAwy2B,EACAC,EACAC,EACAC,EACAC,EACAC,EASAC,EARAh+xB,IAAe+K,QAAQ9yB,UAAUxzG,EAAQu7H,eAAgBv7H,EAAQu7H,aACjEmwN,EAAWitkB,OAAYzx5B,GACvBsy5B,EAAelzxB,QAAQ9yB,UAAU2lB,EAAM7zF,EAAS,WAChDm03B,EAAU1g4B,EAAM0nG,MAAK,GACrBi5xB,GAAsB,EACtBC,IAAcrzxB,QAAQ9yB,UAAU2lB,EAAM7zF,EAAS,YAAa+9O,EAAOlqJ,EAAM7zF,EAAS,WAClFs03B,IAAe555B,EAAQm45B,eAAgB90oB,EAAOlqJ,EAAMs/xB,IACpDoB,EAAY,GAGZC,EAAkB,WAEfrz2B,GAAYA,EAAQrtD,SAEpBig6B,IACHA,EAAkBx7xB,EAAS,WACzB,IAAI8qxB,EAAmByB,EAAUrC,eAAe0R,EAAQjj6B,WACpDA,EAAoC,WAAxBmy5B,EAAiB,GAAkBA,EAAiB,GAAKA,EAAiB,GAAK,IAAMA,EAAiB,GAGjHli2B,EAAQ6zD,SAASquyB,EAAiB,MACrCli2B,EAAQqzD,YAAYy/yB,EAAcjo6B,MAAM,KAAK,IAC7Cm1D,EAAQ4zD,SAASsuyB,EAAiB,KAG/Bli2B,EAAQ6zD,SAASt6G,EAAQi45B,qBAAuBzh6B,KACnDiwD,EAAQqzD,YAAY95G,EAAQi45B,qBAAuBsB,GACnD9y2B,EAAQ4zD,SAASr6G,EAAQi45B,qBAAuBzh6B,IAIlD,IAAIuj6B,EAAa3P,EAAUnC,iBAAiBvx5B,EAAS+vD,EAASgz2B,EAAQjj6B,UAAW+kI,GAAc,GAC3FstxB,EAAgBvixB,QAAQ9yB,UAAU/sD,EAAQxvD,cAAgBwvD,EAAQxvD,aAAewvD,EAAQ/jB,KAAK,gBAC9F48E,EAAaic,EAAe6uxB,EAAUp15B,OAAO0B,GAAW0z5B,EAAUlx5B,SAASxC,GAC/E+vD,EAAQltD,IAAI,CAAEa,IAAK2/5B,EAAW3/5B,IAAM,KAAMG,KAAMw/5B,EAAWx/5B,KAAO,OAElE++5B,EAAoBz7xB,EAAS,WAC3B,IAAIirxB,EAAgBxixB,QAAQ9yB,UAAU/sD,EAAQxvD,cAAgBwvD,EAAQxvD,aAAewvD,EAAQ/jB,KAAK,gBAC9FmkoB,EAAaujP,EAAU1B,UAAUC,EAAkBrpyB,EAAYupyB,EAAeC,GAC9EjiP,GACFpgnB,EAAQltD,IAAIstqB,GAEdyyP,EAAoB,IACtB,EAAG,GAAG,GAKF7y2B,EAAQ6zD,SAAS,yBACnB8vyB,EAAUrB,cAActi2B,EAASsz2B,EAAWvj6B,WAC5CiwD,EAAQqzD,YAAY,yBACXy/yB,IAAkBQ,EAAWvj6B,WACtC4z5B,EAAUrB,cAActi2B,EAASsz2B,EAAWvj6B,WAE9C+i6B,EAAgBQ,EAAWvj6B,UAE3B6i6B,EAAkB,IACpB,EAAG,GAAG,IAEV,EASA,SAASW,IACFP,EAAQ3vE,OAGXmwE,IAFAC,GAIJ,CAGA,SAASA,IACHV,IAAiBzg4B,EAAM2lG,MAAMvF,EAAM7zF,EAAS,aAIhD603B,IAiJF,WACEV,EAAQ/y2B,MAAQyyE,EAAM7zF,EAAS,SAE7Bm03B,EAAQxizB,QADN2izB,EACgBA,EAAa7g4B,GAEbogG,EAAMs/xB,GAG1BgB,EAAQj+xB,WAAarC,EAAM7zF,EAAS,SACpCm03B,EAAQjj6B,UAAY8vI,QAAQ9yB,UAAU2lB,EAAM7zF,EAAS,cAAgB6zF,EAAM7zF,EAAS,aAAetlC,EAAQxJ,UAC3G,IAAIA,EAAY4z5B,EAAUrC,eAAe0R,EAAQjj6B,WACjD+i6B,EAAgB/i6B,EAAU,GAAKA,EAAU,GAAK,IAAMA,EAAU,GAAKA,EAAU,GAE7E,IAAIq9C,EAAQtd,SAAS4iG,EAAM7zF,EAAS,cAAe,IAC/C803B,EAAa7j4B,SAAS4iG,EAAM7zF,EAAS,mBAAoB,IAC7Dm03B,EAAQp+xB,WAAcllI,MAAM09C,GAAiB7zC,EAAQq7H,WAAhBxnF,EACrC4l3B,EAAQvB,gBAAmB/h6B,MAAMik6B,GAA2Bp65B,EAAQk45B,gBAArBkC,CACjD,CAjKEC,GAEIZ,EAAQp+xB,WAGL89xB,IACHA,EAAct7xB,EAAS7oF,EAAMyk3B,EAAQp+xB,YAAY,IAGnDrmF,IAEJ,CAEA,SAASil3B,IACPK,IAEIb,EAAQvB,gBACLkB,IACHA,EAAcv7xB,EAAS1oF,EAAMsk3B,EAAQvB,iBAAiB,IAGxD/i3B,GAEJ,CAGA,SAASH,IAKP,GAJAsl3B,IACAH,KAGKV,EAAQxizB,QACX,OAAOqvB,QAAQtmH,KAiEbymC,IAIJwy2B,EAAqBQ,EAAQh5xB,OAC7Bh6E,EAAUsy2B,EAAcE,EAAoB,SAASxy2B,GAC/C80E,EACFqB,EAAU3xH,KAAK,QAAQ01H,OAAOl6E,GAE9B/vD,EAAQ6pF,MAAM95B,EAElB,GAEA8x2B,EAAe705B,IAAI+15B,EAAS,CAC1B574B,MAAOs3B,IAoFT0k3B,EAAUr15B,OAAS,EAEfo15B,GACFC,EAAU315B,KACR60B,EAAMw6M,OAAOqmrB,EAAc,SAAS7h4B,GAClC0h4B,EAAQxizB,QAAUl/E,GACbA,GAAO0h4B,EAAQ3vE,QAClB30yB,GAEJ,IAGF0k3B,EAAU315B,KACR+05B,EAAmB1lrB,OAAO,WACnBmmrB,IACHA,GAAsB,EACtBT,EAAmB5+oB,aAAa,WAC9Bq/oB,GAAsB,EAClBD,GAAWA,EAAQ3vE,QACrBgwE,GAEJ,GAEJ,KAGFD,EAAU315B,KACRi1H,EAAMyF,SAAS65xB,EAAQ,SAAS1g4B,GAC9B0h4B,EAAQxizB,QAAUl/E,GACbA,GAAO0h4B,EAAQ3vE,OAClB30yB,IAEA2k3B,GAEJ,IAIJD,EAAU315B,KACRi1H,EAAMyF,SAASt5F,EAAS,QAAS,SAASvN,GACxC0h4B,EAAQ/y2B,MAAQ3uB,EACZ0h4B,EAAQ3vE,QACVgwE,GAEJ,IAGFD,EAAU315B,KACRi1H,EAAMyF,SAASt5F,EAAS,YAAa,SAASvN,GAC5C0h4B,EAAQjj6B,UAAYuhC,GAAY/3B,EAAQxJ,UACpCij6B,EAAQ3vE,QACVgwE,GAEJ,KAlNFL,EAAQlypB,WAAW,WACjBkypB,EAAQ3vE,QAAS,EACjBywE,GAAa,GACbT,GACF,EACF,CAEA,SAASQ,IACHnB,IACFt7xB,EAAS9qF,OAAOom3B,GAChBA,EAAc,MAGZE,IACFx7xB,EAAS9qF,OAAOsm3B,GAChBA,EAAkB,KAEtB,CAGA,SAASlk3B,IACFsk3B,GAKLA,EAAQlypB,WAAW,WACbkypB,IACFA,EAAQ3vE,QAAS,EACjBywE,GAAa,GAKTd,EAAQtg4B,UACL+/3B,IACHA,EAAoBr7xB,EAAS28xB,EAAe,KAAK,IAGnDA,IAGN,EACF,CAEA,SAASL,IACHf,IACFv7xB,EAAS9qF,OAAOqm3B,GAChBA,EAAc,MAGZF,IACFr7xB,EAAS9qF,OAAOmm3B,GAChBA,EAAoB,KAExB,CAwBA,SAASsB,IACPF,IACAH,IAsIIN,EAAUr15B,SACZ8hI,QAAQlkI,QAAQy35B,EAAW,SAASzk2B,GAClCA,GACF,GACAyk2B,EAAUr15B,OAAS,GAvIjBiiD,IACFA,EAAQzT,SAERyT,EAAU,KACN6y2B,GACFz7xB,EAAS9qF,OAAOum3B,IAIpBf,EAAevl3B,OAAOym3B,GAElBR,IACFA,EAAmB7opB,WACnB6opB,EAAqB,KAEzB,CA0BA,SAASsB,EAAazwE,GAChB6vE,GAAerzxB,QAAQrjH,WAAW024B,EAAYx/5B,SAChDw/5B,EAAYx/5B,OAAO4+B,EAAO+wzB,EAE9B,CA+FA,SAAS2wE,EAAoBrl6B,GACtBqk6B,GAAYA,EAAQ3vE,QAAWrjyB,IAI/B/vD,EAAQ,GAAGkB,SAASxC,EAAE+I,SAAYsoD,EAAQ,GAAG7uD,SAASxC,EAAE+I,SAC3D875B,IAEJ,CAGA,SAASS,EAAgBtl6B,GACP,KAAZA,EAAEitS,OACJ43nB,GAEJ,CA1SAR,EAAQkB,UAAY5h4B,EAIpB0g4B,EAAQ3vE,QAAS,EA0LjB2vE,EAAQmB,WAAa,WACnB,OAAOnB,EAAQxizB,OACjB,EAKAkiB,EAAMyF,SAAS,WAAY,SAAS7mG,GAC9BA,GACFui4B,IAGEvi4B,GAAO0h4B,EAAQ3vE,QACjB30yB,GAEJ,GAEIwk3B,GACF5g4B,EAAMw6M,OAAOomrB,EAAa,SAAS5h4B,GAC7B0h4B,IAAY1h4B,IAAQ0h4B,EAAQ3vE,QAC9BkwE,GAEJ,GAwFF,IAoBMa,EAAmBC,EACnB/i4B,EArBFgj4B,EAAqB,WACvBrvkB,EAAS12S,KAAK5yC,QAAQ,SAASmzD,GACb,iBAAZA,EACF7+D,EAAQ2mI,IAAI,QAAS28xB,IAErBtj6B,EAAQ2mI,IAAI9nE,EAAS2k2B,GACrBxj6B,EAAQ2mI,IAAI9nE,EAASyk2B,IAEvBtj6B,EAAQ2mI,IAAI,WAAYq9xB,EAC1B,GACAhvkB,EAASv2S,KAAK/yC,QAAQ,SAASmzD,GACb,iBAAZA,EACFqnE,EAAUS,IAAI,QAASo9xB,GAEvB/j6B,EAAQ2mI,IAAI9nE,EAAS0k2B,EAEzB,EACF,EAGMY,EAAe,GAAIC,EAAe,GAClC/i4B,EAAMgB,EAAM2lG,MAAMvF,EAAM7zF,EAAS,YACrCy13B,IAEIz0xB,QAAQjmH,SAAS0X,IACnB79B,OAAOO,KAAKs9B,GAAK31B,QAAQ,SAASxH,GAChCig6B,EAAa325B,KAAKtJ,GAClBkg6B,EAAa525B,KAAK6zB,EAAIn9B,GACxB,GACA8wV,EAAW,CACT12S,KAAM6l3B,EACN1l3B,KAAM2l3B,IAGRpvkB,EAAWitkB,EAAY5g4B,GAGH,SAAlB2zT,EAAS12S,MACX02S,EAAS12S,KAAK5yC,QAAQ,SAASmzD,EAAS/yC,GACtB,iBAAZ+yC,GACF7+D,EAAQqkH,GAAG,QAASi/yB,GACpBp9xB,EAAU7hB,GAAG,QAAS0/yB,IACbll2B,IAAYm2R,EAASv2S,KAAK3yB,GACnC9rB,EAAQqkH,GAAGxlD,EAASyk2B,GACXzk2B,IACT7+D,EAAQqkH,GAAGxlD,EAAS2k2B,GACpBxj6B,EAAQqkH,GAAG2wO,EAASv2S,KAAK3yB,GAAMy34B,IAEjCvj6B,EAAQqkH,GAAG,WAAY2/yB,EACzB,GAMJ,IAGIM,EAHA7h4B,EAAYJ,EAAM2lG,MAAMvF,EAAM7zF,EAAS,cAC3Cm03B,EAAQtg4B,UAAYmtG,QAAQ9yB,UAAUr6E,KAAeA,EAAYn5B,EAAQm5B,UAGzE,IAAI8h4B,EAAY313B,EAAS,eAEvB013B,EADEC,KAAa9hyB,QAA8BjyH,IAArBiyH,EAAM8hyB,IAGZli4B,EAAM2lG,MAAMvF,EAAM8hyB,IAGtC1/xB,EAAe+K,QAAQ9yB,UAAUwnzB,GAAmBA,EAAkBz/xB,EAGtExiG,EAAM69F,IAAI,WAAY,WACpBmkyB,IACAP,IACAf,EAAU,IACZ,EACF,CACF,EAEJ,CACF,EACF,GAGCziyB,UAAU,+BAAgC,CAClC,WAAY,OAAQ,WAAY,mBACzC,SAAUssJ,EAAU/9I,EAAM5H,EAAUylJ,GAClC,MAAO,CACL5pJ,KAAM,SAASzgG,EAAO+6O,EAAM36I,GAC1B,IAGE40K,EACAigB,EACAC,EALE0smB,EAAY5h4B,EAAM2lG,MAAMvF,EAAM+hyB,gCAE9BhtmB,EAAgB,EAKhBC,EAA4B,WAC1BH,IACFA,EAAgBh7Q,SAChBg7Q,EAAkB,MAGhBjgB,IACFA,EAAa39B,WACb29B,EAAe,MAGbkgB,IACF3qC,EAAS9H,MAAMyyC,GAAgBhnT,KAAK,WAClC+mT,EAAkB,IACpB,GACAA,EAAkBC,EAClBA,EAAiB,KAErB,EAEAl1R,EAAMw6M,OAAOhuG,EAAK41xB,mBAAmBhiyB,EAAMiiyB,8BAA+B,SAAS3jzB,GACjF,IAAI42M,IAAiBH,EAEjBz2M,GAGF2rK,EAAiB3rK,GAAK,GAAMxwG,KAAK,SAASw3F,GACxC,GAAI4vN,IAAiBH,EAArB,CACA,IAAIt+B,EAAW+qoB,EAAUl6xB,OAGrBprG,EAAQsoG,EAFGl/B,EAEHk/B,CAAmBiyJ,EAAU,SAASv6P,GAChD84R,IACA7qC,EAAS5lB,MAAMroO,EAAOy+O,EACxB,GAGAm6C,EAAiB54R,GADjB04Q,EAAene,GAGF+hB,MAAM,wBAAyBl6L,EAZE,CAahD,EAAG,WACG42M,IAAiBH,IACnBC,IACAp1R,EAAM44Q,MAAM,uBAAwBl6L,GAExC,GACA1+E,EAAM44Q,MAAM,2BAA4Bl6L,IAExC02M,GAEJ,GAEAp1R,EAAM69F,IAAI,WAAYu3L,EACxB,EAEJ,IAOCn3L,UAAU,oBAAqB,CAAC,eAAgB,SAASk5xB,GACxD,MAAO,CACLhrxB,SAAU,IACV1L,KAAM,SAASzgG,EAAOriC,EAASyiI,GAI7B,GAAIpgG,EAAMviC,UAAW,CAGnB,IAAI0C,EAAWg35B,EAAanI,eAAehv3B,EAAMviC,WACjDE,EAAQ2jH,SAASnhH,EAAS,GAC5B,CAEI6/B,EAAMyiG,YACR9kI,EAAQ2jH,SAASthF,EAAMyiG,YAGrBziG,EAAMI,WACRziC,EAAQ2jH,SAAS8e,EAAMkiyB,sBAE3B,EAEJ,IAECrkyB,UAAU,kBAAmB,WAC5B,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAEk+E,QAAS,KAClBmuB,YAAa,0CAEjB,GAECpO,UAAU,aAAc,CAAE,cAAe,SAASskyB,GACjD,OAAOA,EAAY,aAAc,UAAW,aAC9C,IAECtkyB,UAAU,0BAA2B,WACpC,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAE6h4B,WAAY,IAAKW,YAAa,KACvCn2xB,YAAa,mDAEjB,GAECpO,UAAU,qBAAsB,CAAC,cAAe,SAASskyB,GACxD,OAAOA,EAAY,qBAAsB,UAAW,aAAc,CAChEnD,eAAe,GAEnB,IAECnhyB,UAAU,sBAAuB,WAChC,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAE6h4B,WAAY,KACrBx1xB,YAAa,+CAEjB,GAECpO,UAAU,iBAAkB,CAAC,cAAe,SAASskyB,GACpD,OAAOA,EAAY,iBAAkB,UAAW,aAAc,CAC5DnD,eAAe,GAEnB,IAOA7xxB,QAAQx0C,OAAO,uBAAwB,CAAC,yBAEvCklC,UAAU,0BAA2B,WACpC,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAEyi4B,SAAU,IAAKZ,WAAY,IAAKW,YAAa,KACtDn2xB,YAAa,6CAEjB,GAECpO,UAAU,qBAAsB,CAAC,cAAe,SAASskyB,GACxD,OAAOA,EAAY,qBAAsB,UAAW,QAAS,CAC3DrD,qBAAsB,cACtBE,eAAe,GAEnB,IAECnhyB,UAAU,sBAAuB,WAChC,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAE6h4B,WAAY,IAAKY,SAAU,KACpCp2xB,YAAa,yCAEjB,GAECpO,UAAU,iBAAkB,CAAC,cAAe,SAASskyB,GACpD,OAAOA,EAAY,iBAAkB,UAAW,QAAS,CACvDrD,qBAAsB,cACtBE,eAAe,GAEnB,IAECnhyB,UAAU,kBAAmB,WAC5B,MAAO,CACLkO,SAAU,IACVnsG,MAAO,CAAEyi4B,SAAU,IAAKvkzB,QAAS,KACjCmuB,YAAa,oCAEjB,GAECpO,UAAU,aAAc,CAAC,cAAe,SAASskyB,GAChD,OAAOA,EAAY,aAAc,UAAW,QAAS,CACnDrD,qBAAsB,eAE1B,IAEA3xxB,QAAQx0C,OAAO,2BAA4B,IAE1CglC,SAAS,oBAAqB,CAC7B1pC,SAAS,EACTrzF,IAAK,MAGN49C,WAAW,wBAAyB,CAAC,SAAU,SAAU,oBAAqB,SAAS62O,EAAQpM,EAAQq5oB,GACtG,IAAI/o0B,EAAOtiF,KACPg9E,EAAUk5C,QAAQ9yB,UAAU4uK,EAAOh1L,SAAWohM,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOh1L,SAAWqu0B,EAAeru0B,QAmDxG,SAASsu0B,IACP,OAAOp1xB,QAAQ9yB,UAAUg7K,EAAOmtoB,UAAYntoB,EAAOmtoB,SAAWF,EAAe1h6B,GAC/E,CAnDAqW,KAAKszC,KAAO,GACZ8qO,EAAOz0R,IAAM2h6B,IAEbtr5B,KAAKwr5B,OAAS,SAAS/h1B,EAAKnjF,EAASyiI,GAC9B/rC,GACH12F,EAAQ6C,IAAI,CAAC,WAAc,SAG7B6W,KAAKszC,KAAKx/C,KAAK21E,GAEfA,EAAI9/E,IAAM2h6B,IACV7h1B,EAAInzB,MAAQyyE,GAASmN,QAAQ9yB,UAAU2lB,EAAMzyE,OAASyyE,EAAMzyE,MAAQ,cAEpEmzB,EAAI05J,OAAO,QAAS,SAASx9O,GAC3B8jF,EAAIgi1B,uBACN,GAEAhi1B,EAAIgi1B,sBAAwB,WAC1B,IAAIC,EAAkBpp0B,EAAKhvC,KAAKhpD,OAAO,SAASquD,EAAO8wB,GAErD,OADAA,EAAI/zB,UAAY,IAAM+zB,EAAI9jF,MAAQ8jF,EAAI9/E,KAAKo0I,QAAQ,GAC5CplF,EAAQ8wB,EAAI/zB,OACrB,EAAG,GAECg22B,EAAkB,MACpBji1B,EAAI/zB,SAAWg22B,EAAkB,IAErC,EAEAji1B,EAAI+8C,IAAI,WAAY,WAClBlgI,EAAU,KACVg8F,EAAKqp0B,UAAUli1B,EACjB,EACF,EAEAzpE,KAAK2r5B,UAAY,SAASli1B,GACxBzpE,KAAKszC,KAAKvmB,OAAO/sB,KAAKszC,KAAK/qD,QAAQkhF,GAAM,GACzCzpE,KAAKszC,KAAKthD,QAAQ,SAAUy3E,GAC1BA,EAAIgi1B,uBACN,EACF,EAGArtoB,EAAOj7C,OAAO,WAAY,SAASoorB,GACjCjp0B,EAAKhvC,KAAKthD,QAAQ,SAASy3E,GACzBA,EAAI9/E,IAAM2h6B,IACV7h1B,EAAIgi1B,uBACN,EACF,EAKF,IAEC7kyB,UAAU,cAAe,WACxB,MAAO,CACL7iI,SAAS,EACTquR,YAAY,EACZ7qO,WAAY,wBACZkgE,QAAS,cACT9+E,MAAO,CACL4i4B,SAAU,SAEZv2xB,YAAa,yCAEjB,GAECpO,UAAU,SAAU,WACnB,MAAO,CACL7iI,SAAS,EACTquR,YAAY,EACZ3qK,QAAS,eACT9+E,MAAO,CACLhjC,MAAO,IACPqqB,KAAM,IACN+iG,QAAS,MAEXiiB,YAAa,oCACb5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO6iyB,GACpCA,EAAaJ,OAAO7i4B,EAAOriC,EAASyiI,EACtC,EAEJ,GAECnC,UAAU,iBAAkB,WAC3B,MAAO,CACL7iI,SAAS,EACTquR,YAAY,EACZ7qO,WAAY,wBACZ5e,MAAO,CACLhjC,MAAO,IACP4l6B,SAAU,QACVv74B,KAAM,IACN+iG,QAAS,MAEXiiB,YAAa,4CACb5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO6iyB,GACpCA,EAAaJ,OAAO7i4B,EAAOutG,QAAQ5vI,QAAQA,EAAQkxH,WAAW,IAAK,CAAClhE,MAAOyyE,EAAMzyE,OACnF,EAEJ,GAEA4/E,QAAQx0C,OAAO,sBAAuB,IAErCglC,SAAS,kBAAmB,CAC3B/8H,IAAK,EACLki6B,QAAS,KACTC,SAAU,KACVC,aAAa,EACb98b,OAAQ,CAAC,MAAO,MAAO,QAAS,OAAQ,UAGzC1nb,WAAW,sBAAuB,CAAC,SAAU,SAAU,kBAAmB,SAAS62O,EAAQpM,EAAQg6oB,GAClG,IAAI7omB,EAAc,CAAElN,cAAe//K,QAAQtmH,MACzC0yE,EAAOtiF,KAETA,KAAKosD,KAAO,SAAS6n1B,IACnB9wlB,EAAc8wlB,GACF/9lB,QAAUl2S,KAAKq+D,OAE3B8kP,EAAY3L,YAAY1jT,KAAK,SAASnO,GAKpC,OAJIuwI,QAAQhiH,SAASvuB,KAAmB,EAATA,KAAeA,IAC5CA,EAAQH,KAAK+F,MAAM5F,IAGdA,CACT,GAEAqa,KAAK6r5B,QAAU31xB,QAAQ9yB,UAAU4uK,EAAO65oB,SAAWztoB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO65oB,SAAWG,EAAaH,QACvG7r5B,KAAK8r5B,SAAW51xB,QAAQ9yB,UAAU4uK,EAAO85oB,UAAY1toB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO85oB,UAAYE,EAAaF,SAC1G9r5B,KAAK+r5B,YAAc71xB,QAAQ9yB,UAAU4uK,EAAO+5oB,aAC1C3toB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO+5oB,aAAeC,EAAaD,YAC1D,IAAIE,EAAY/1xB,QAAQ9yB,UAAU4uK,EAAOi9M,QAAU7wM,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOi9M,QAAU+8b,EAAa/8b,OACtGjvd,KAAKivd,OAAS/4V,QAAQnmH,QAAQk84B,IAAcA,EAAU735B,OAAS,EAC7D635B,EAAYD,EAAa/8b,OAE3B,IAAIi9b,EAAeh2xB,QAAQ9yB,UAAU4uK,EAAOk6oB,cAC1C9toB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOk6oB,cAC5B,IAAI535B,MAAM4hI,QAAQ9yB,UAAU4uK,EAAOroR,KAAOy0R,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOroR,KAAOqi6B,EAAari6B,KAC5Fy0R,EAAOvqQ,MAAQ7T,KAAKms5B,qBAAqBD,EAC3C,EAEAls5B,KAAKms5B,qBAAuB,SAASj2yB,GACnC,IAAK,IAAI7wH,EAAI,EAAGwb,EAAIq1G,EAAO9hH,OAAQ/O,EAAIwb,EAAGxb,IACxC6wH,EAAO7wH,GAAK6wI,QAAQlzB,OAAO,CAAExsG,MAAOnR,GAAK,CAAEwm6B,QAAS7r5B,KAAK6r5B,QAASC,SAAU9r5B,KAAK8r5B,SAAUx12B,MAAOt2C,KAAK4yE,SAASvtF,IAAM6wH,EAAO7wH,IAE/H,OAAO6wH,CACT,EAEAl2G,KAAK4yE,SAAW,SAASp8E,GACvB,OAAIA,GAASwJ,KAAKivd,OAAO76d,OAChBoC,EAAQ,EAGVwJ,KAAKivd,OAAOz4d,EACrB,EAEA4nR,EAAOk2E,KAAO,SAAS3uW,GACrB,IAAKy4R,EAAO+mF,UAAYx/W,GAAS,GAAKA,GAASy4R,EAAOvqQ,MAAMzf,OAAQ,CAClE,IAAIg45B,EAAe9p0B,EAAKyp0B,aAAe5omB,EAAYhN,aAAexwT,EAAQ,EAAIA,EAC9Ew9T,EAAYlN,cAAcm2mB,GAC1BjpmB,EAAYjN,SACd,CACF,EAEA93B,EAAO9wB,MAAQ,SAAS3nQ,GACjBy4R,EAAO+mF,WACV/mF,EAAOz4R,MAAQA,GAEjBy4R,EAAO7zP,QAAQ,CAAC5kC,MAAOA,GACzB,EAEAy4R,EAAO7nR,MAAQ,WACb6nR,EAAOz4R,MAAQw9T,EAAYhN,WAC3B/3B,EAAOtwM,SACT,EAEAswM,EAAOiuoB,UAAY,SAASvw3B,GACtB,gBAAgB55C,KAAK45C,EAAIm2P,SAC3Bn2P,EAAI6wF,iBACJ7wF,EAAIwnO,kBACJ8a,EAAOk2E,KAAKl2E,EAAOz4R,OAAuB,KAAdm2C,EAAIm2P,OAA8B,KAAdn2P,EAAIm2P,MAAe,GAAK,IAE5E,EAEAjyR,KAAKq+D,OAAS,WACZ+/M,EAAOz4R,MAAQw9T,EAAYhN,WAC3B/3B,EAAO9nO,MAAQgsC,EAAK1P,SAASwrM,EAAOz4R,MAAQ,EAC9C,CACF,IAECihI,UAAU,YAAa,WACtB,MAAO,CACLnf,QAAS,CAAC,YAAa,WACvBqtB,SAAU,IACVnsG,MAAO,CACLw8U,SAAU,aACV56U,QAAS,IACTujD,QAAS,KAEXvmC,WAAY,sBACZytF,YAAa,kCACb5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAI65mB,EAAa75mB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAC/C65mB,EAAWlg2B,KAAK+2P,EAClB,EAEJ,GAEAjtL,QAAQx0C,OAAO,oBAAqB,IAEnCn6C,WAAW,sBAAuB,CAAC,SAAU,SAAU62O,GACtD,IACEmuoB,EAgFEpe,EAjFAx/wB,EAAO3uH,KAsFX,SAASws5B,EAAah25B,GACpB,IAAK,IAAInR,EAAI,EAAGA,EAAIspI,EAAKilH,KAAKx/O,OAAQ/O,IACpC,GAAIspI,EAAKilH,KAAKvuP,GAAGmR,QAAUA,EACzB,OAAOnR,CAGb,CA1FAspI,EAAKilH,KAAO,GAEZjlH,EAAKshM,OAAS,SAASz5T,EAAOslC,GAC5B,IAAKqy2B,EAAW,CACd,IAAIz+N,EAAgB88O,EAAaD,GAC7BE,EAAmB99xB,EAAKilH,KAAK87b,GACjC,GAAI+8O,EAAkB,CAKpB,GAJAA,EAAiBzivB,IAAI0ivB,WAAW,CAC9BhvnB,OAAQ5hQ,EACR6w3B,eAAgBn25B,IAEdslC,GAAOA,EAAIinO,qBACb,OAEF0ppB,EAAiBzivB,IAAIjmI,QAAS,CAChC,CAEA,IAAI4+N,EAAWh0I,EAAKilH,KAAKp9O,GACrBmsQ,GACFA,EAAS34F,IAAIurJ,SAAS,CACpB73B,OAAQ5hQ,IAEV6mO,EAAS34F,IAAIjmI,QAAS,EACtB4qF,EAAK5qF,OAAS4+N,EAASnsQ,MACvB+15B,EAAW5ppB,EAASnsQ,QACVmsQ,GAAYzsI,QAAQ9yB,UAAUmpzB,KACxC59xB,EAAK5qF,OAAS,KACdwo3B,EAAW,KAEf,CACF,EAEA59xB,EAAKi+xB,OAAS,SAAgB5ivB,GAiB5B,GAhBAr7C,EAAKilH,KAAK9/O,KAAK,CACbk2K,IAAKA,EACLxzK,MAAOwzK,EAAIxzK,QAEbm4H,EAAKilH,KAAKxgP,KAAK,SAASg+M,EAAIhQ,GAC1B,OAAIgQ,EAAG56M,MAAQ4qM,EAAG5qM,MACT,EAGL46M,EAAG56M,MAAQ4qM,EAAG5qM,OACR,EAGH,CACT,GAEIwzK,EAAIxzK,QAAUm4H,EAAK5qF,SAAWmyF,QAAQ9yB,UAAUurB,EAAK5qF,SAAgC,IAArB4qF,EAAKilH,KAAKx/O,OAAc,CAC1F,IAAIy45B,EAAiBL,EAAaxivB,EAAIxzK,OACtCm4H,EAAKshM,OAAO48lB,EACd,CACF,EAEAl+xB,EAAKm+xB,UAAY,SAAmB9ivB,GAElC,IADA,IAAIxzK,EACKnR,EAAI,EAAGA,EAAIspI,EAAKilH,KAAKx/O,OAAQ/O,IACpC,GAAIspI,EAAKilH,KAAKvuP,GAAG2kL,MAAQA,EAAK,CAC5BxzK,EAAQnR,EACR,KACF,CAGF,GAAIspI,EAAKilH,KAAKp9O,GAAOA,QAAUm4H,EAAK5qF,OAAQ,CAC1C,IAAIgp3B,EAAoBv25B,IAAUm4H,EAAKilH,KAAKx/O,OAAS,EACnDoC,EAAQ,EAAIA,EAAQ,EAAIm4H,EAAKilH,KAAKx/O,OACpCu6H,EAAKshM,OAAO88lB,EACd,CAEAp+xB,EAAKilH,KAAK7mN,OAAOv2B,EAAO,EAC1B,EAEA4nR,EAAOj7C,OAAO,gBAAiB,SAASx7M,GAClCuuG,QAAQ9yB,UAAUz7E,IAAQA,IAAQ4k4B,GACpC59xB,EAAKshM,OAAOu8lB,EAAa7k4B,GAE7B,GAGAy2P,EAAO53J,IAAI,WAAY,WACrB2nxB,GAAY,CACd,EASF,IAECvnxB,UAAU,YAAa,WACtB,MAAO,CACLwrJ,YAAY,EACZruR,SAAS,EACT4kC,MAAO,CAAC,EACRuoP,iBAAkB,CAChBntO,OAAQ,KACR/zB,KAAM,KAERu3B,WAAY,sBACZ2qO,aAAc,SACdl9I,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,+BAC9B,EACA5L,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC7BpgG,EAAMg6B,WAAWuzE,QAAQ9yB,UAAU2lB,EAAMpmE,WACvCh6B,EAAMkuP,QAAQvoJ,MAAMvF,EAAMpmE,UAC5Bh6B,EAAMqk4B,YAAY92xB,QAAQ9yB,UAAU2lB,EAAMikyB,YACxCrk4B,EAAMkuP,QAAQvoJ,MAAMvF,EAAMikyB,UAC9B,EAEJ,GAECpmyB,UAAU,SAAU,CAAC,SAAU,SAASqsJ,GACvC,MAAO,CACLxrK,QAAS,aACT1jH,SAAS,EACTixI,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe,4BAC9B,EACAo9I,YAAY,EACZzpP,MAAO,CACL4j3B,QAAS,IACT/14B,MAAO,KACP62G,QAAS,KACTkoN,SAAU,UAEVm3lB,WAAY,aAEdnl3B,WAAY,WAEZ,EACA2qO,aAAc,MACd9oJ,KAAM,SAASzgG,EAAOmgP,EAAK//I,EAAOkkyB,EAAY76oB,GAC5CzpP,EAAMqlB,UAAW,EACb+6E,EAAMjb,SACRnlF,EAAMkuP,QAAQ1zC,OAAO8vC,EAAOlqJ,EAAMjb,SAAU,SAASnoH,GACnDgjC,EAAMqlB,WAAcroD,CACtB,GAGEuwI,QAAQjC,YAAYlL,EAAMvyH,SACxBy25B,EAAWr5qB,MAAQq5qB,EAAWr5qB,KAAKx/O,OACrCu0B,EAAMnyB,MAAQhR,KAAKmE,IAAImX,MAAM,KAAMms5B,EAAWr5qB,KAAK7gP,IAAI,SAAS6N,GAAK,OAAOA,EAAEpK,KAAO,IAAM,EAE3FmyB,EAAMnyB,MAAQ,GAId0/H,QAAQjC,YAAYlL,EAAM1b,WAC5B1kF,EAAM0kF,QAAU,IAGlB1kF,EAAMsnS,OAAS,SAASn0R,GACtB,IAAKnT,EAAMqlB,SAAU,CAEnB,IADA,IAAIx3C,EACKnR,EAAI,EAAGA,EAAI4n6B,EAAWr5qB,KAAKx/O,OAAQ/O,IAC1C,GAAI4n6B,EAAWr5qB,KAAKvuP,GAAG2kL,MAAQrhJ,EAAO,CACpCnyB,EAAQnR,EACR,KACF,CAGF4n6B,EAAWh9lB,OAAOz5T,EAAOslC,EAC3B,CACF,EAEAmx3B,EAAWL,OAAOjk4B,GAClBA,EAAM69F,IAAI,WAAY,WACpBymyB,EAAWH,UAAUnk4B,EACvB,GAIAA,EAAMuk4B,cAAgB96oB,CACxB,EAEJ,IAECxrJ,UAAU,0BAA2B,WACpC,MAAO,CACLkO,SAAU,IACVrtB,QAAS,UACT2hB,KAAM,SAASzgG,EAAOmgP,GACpBngP,EAAMw6M,OAAO,iBAAkB,SAA8BopqB,GACvDA,IACFzjoB,EAAI9/Q,KAAK,IACT8/Q,EAAIv4I,OAAOg8wB,GAEf,EACF,EAEJ,GAEC3lxB,UAAU,0BAA2B,WACpC,MAAO,CACLkO,SAAU,IACVrtB,QAAS,aACT2hB,KAAM,SAASzgG,EAAOmgP,EAAK//I,GACzB,IAAIihD,EAAMrhJ,EAAM2lG,MAAMvF,EAAMokyB,yBAAyBnjvB,IAIrDA,EAAIkjvB,cAAcljvB,EAAI6sG,QAAS,SAASvzC,GACtCptG,QAAQlkI,QAAQsxO,EAAU,SAASv8O,IAYzC,SAAsBA,GACpB,OAAOA,EAAKiqH,UACVjqH,EAAK4jM,aAAa,oBAClB5jM,EAAK4jM,aAAa,yBAClB5jM,EAAK4jM,aAAa,sBACa,oBAA/B5jM,EAAKiqH,QAAQ5oH,eACkB,yBAA/BrB,EAAKiqH,QAAQ5oH,eACkB,sBAA/BrB,EAAKiqH,QAAQ5oH,eACkB,oBAA/BrB,EAAKiqH,QAAQ5oH,cAEjB,CArBYgl6B,CAAarm6B,GAIf+hR,EAAIv4I,OAAOxpI,GAFXijL,EAAIqjvB,eAAiBtm6B,CAIzB,EACF,EACF,EAcJ,GAEAmvI,QAAQx0C,OAAO,0BAA2B,IAEzCglC,SAAS,sBAAuB,CAC/B4myB,SAAU,EACVC,WAAY,EACZC,WAAY,EACZC,cAAc,EACdC,aAAa,EACbC,UAAW,KACXC,eAAe,EACfC,YAAY,EACZC,WAAW,EACXC,cAAc,EACd/4xB,YAAa,4CAGdztF,WAAW,0BAA2B,CAAC,SAAU,WAAY,SAAU,SAAU,OAAQ,UAAW,sBAAuB,SAAS62O,EAAQrM,EAAUC,EAAQiB,EAAQlG,EAAMq9B,EAAS4jnB,GACpL,IAAIC,EAAgBC,EAAkBC,EAClCxrpB,EAAW,IAAI95P,KACjBy3R,EAAW,GACX6iB,EAAc,CAAElN,cAAe//K,QAAQtmH,MACvC+94B,EAAYz3xB,QAAQ9yB,UAAU4uK,EAAO27oB,WAAavvoB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO27oB,WAAaK,EAAiBL,WAAavjnB,EAAQ8D,iBAAiBT,MAClJ2gnB,GAAWl4xB,QAAQ9yB,UAAU4uK,EAAOo8oB,WAAYhwoB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAOo8oB,UAE9EhwoB,EAAOiwoB,SAAWn4xB,QAAQ9yB,UAAU4uK,EAAOq8oB,UAAYr8oB,EAAOq8oB,SAAW,EACzEt8oB,EAAS1P,WAAW,YAEpBriQ,KAAKosD,KAAO,SAAS6n1B,EAAcnh3B,IACjCqwR,EAAc8wlB,GACF/9lB,QAAUl2S,KAAKq+D,OAE3B8kP,EAAY3L,YAAYrgO,QAAQ,SAASq+N,GACvC,OAAOA,EAAa,IAAI3sS,KAAK2sS,GAAc,IAC7C,GAEA,IAAI84mB,EAAex73B,EAAOvZ,GAAG,GACzBg14B,EAAiBz73B,EAAOvZ,GAAG,GAC3Bi14B,EAAiB173B,EAAOvZ,GAAG,GAE/B004B,EAAiBK,EAAa/m3B,WAAW,WACzC2m3B,EAAmBK,EAAehn3B,WAAW,WAC7C4m3B,EAAmBK,EAAejn3B,WAAW,YAE5B2uF,QAAQ9yB,UAAU4uK,EAAO67oB,YAAczvoB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO67oB,YAAcG,EAAiBH,aAGjH7t5B,KAAKyu5B,sBAAsBH,EAAcC,EAAgBC,IAG3Ct4xB,QAAQ9yB,UAAU4uK,EAAO87oB,WAAa1voB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO87oB,WAAaE,EAAiBF,YAE9G9t5B,KAAK0u5B,oBAAoBJ,EAAcC,EAAgBC,GAGzDpwoB,EAAOwvoB,cAAgB13xB,QAAQ9yB,UAAU4uK,EAAO47oB,eAAiBxvoB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO47oB,eAAiBI,EAAiBJ,cAC/H5t5B,KAAK2u5B,iBAAiBL,EAAcC,EAAgBC,EACtD,EAEA,IAAIlB,EAAWU,EAAiBV,SAC5Bt7oB,EAAOs7oB,UACThtnB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOs7oB,UAAW,SAAS3n6B,GACpE2n6B,GAAY3n6B,CACd,IAGF,IAOI+D,EAMAC,EAbA4j6B,EAAaS,EAAiBT,WAC9Bv7oB,EAAOu7oB,YACTjtnB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOu7oB,YAAa,SAAS5n6B,GACtE4n6B,GAAc5n6B,CAChB,IAIF26S,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOtoR,KAAM,SAAS/D,GAC/D,IAAIq8I,EAAK,IAAIn5H,KAAKljB,GAClB+D,EAAM3D,MAAMi8I,QAAMlrI,EAAYkrI,CAChC,IAGAs+J,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOroR,KAAM,SAAShE,GAC/D,IAAIq8I,EAAK,IAAIn5H,KAAKljB,GAClBgE,EAAM5D,MAAMi8I,QAAMlrI,EAAYkrI,CAChC,IAEA,IAAIh0F,GAAW,EACXgkO,EAAO6hoB,YACTvzmB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAO6hoB,YAAa,SAASlu5B,GACtEqoD,EAAWroD,CACb,IAGFy4R,EAAOwwoB,iBAAmB,WACxB,IAAIC,EAAsBC,EAAWnspB,EAAqB,GAAX2qpB,GAC/C,OAAOt/2B,GAAY6g3B,EAAsBll6B,GACvCkl6B,EAAsBlspB,GAAYkspB,EAAsBnl6B,CAC5D,EAEA00R,EAAO2woB,iBAAmB,WACxB,IAAIC,EAAsBF,EAAWnspB,EAAsB,IAAX2qpB,GAChD,OAAOt/2B,GAAYgh3B,EAAsBtl6B,GACvCsl6B,EAAsBrspB,GAAYqspB,EAAsBrl6B,CAC5D,EAEAy0R,EAAO6woB,mBAAqB,WAC1B,IAAIJ,EAAsBC,EAAWnspB,EAAU4qpB,GAC/C,OAAOv/2B,GAAY6g3B,EAAsBll6B,GACvCkl6B,EAAsBlspB,GAAYkspB,EAAsBnl6B,CAC5D,EAEA00R,EAAO8woB,mBAAqB,WAC1B,IAAIF,EAAsBF,EAAWnspB,GAAW4qpB,GAChD,OAAOv/2B,GAAYgh3B,EAAsBtl6B,GACvCsl6B,EAAsBrspB,GAAYqspB,EAAsBrl6B,CAC5D,EAEAy0R,EAAO+woB,mBAAqB,WAC1B,IAAIN,EAAsBO,EAAWzspB,EAAU6qpB,GAC/C,OAAOx/2B,GAAY6g3B,EAAsBll6B,GACvCkl6B,EAAsBlspB,GAAYkspB,EAAsBnl6B,CAC5D,EAEA00R,EAAOixoB,mBAAqB,WAC1B,IAAIL,EAAsBI,EAAWzspB,GAAW6qpB,GAChD,OAAOx/2B,GAAYgh3B,EAAsBtl6B,GACvCsl6B,EAAsBrspB,GAAYqspB,EAAsBrl6B,CAC5D,EAEAy0R,EAAOkxoB,iBAAmB,WACxB,OAAI3spB,EAAS39H,WAAa,GACjBh3F,GAAY8g3B,EAAWnspB,EAAU,KAAWh5Q,EAG9CqkD,GAAY8g3B,EAAWnspB,GAAU,KAAYj5Q,CACtD,EAEA,IAAI8j6B,EAAaQ,EAAiBR,WAkClC,SAAS+B,IACP,IAAInkuB,GAASgzF,EAAOhzF,MAGpB,IAFYgzF,EAAOqvoB,aAAeriuB,EAAQ,GAAKA,EAAQ,GACrDA,GAAS,GAAKA,EAAQ,KACO,KAAjBgzF,EAAOhzF,MAYrB,OARIgzF,EAAOqvoB,eACK,KAAVriuB,IACFA,EAAQ,GAENgzF,EAAOwyN,WAAa+8a,EAAU,KAChCviuB,GAAgB,KAGbA,CACT,CAEA,SAASokuB,IACP,IAAInkuB,GAAW+yF,EAAO/yF,QAEtB,GADYA,GAAW,GAAKA,EAAU,IACL,KAAnB+yF,EAAO/yF,QAGrB,OAAOA,CACT,CAOA,SAAS7jC,EAAI7hK,EAAO8p6B,GAClB,OAAc,OAAV9p6B,EACK,GAGFuwI,QAAQ9yB,UAAUz9G,IAAUA,EAAMqB,WAAWoN,OAAS,IAAMq75B,EACjE,IAAM9p6B,EAAQA,EAAMqB,UACxB,CAiOA,SAASuoR,EAAQmgpB,GACfC,IACAxsmB,EAAYlN,cAAc,IAAIptS,KAAK85P,IACnCitpB,EAAeF,EACjB,CAEA,SAASC,IACH1B,GACFA,EAAe19mB,aAAa,SAAS,GAGnC29mB,GACFA,EAAiB39mB,aAAa,WAAW,GAGvC49mB,GACFA,EAAiB59mB,aAAa,WAAW,GAG3C4S,EAAY5S,aAAa,QAAQ,GACjCnyB,EAAOyxoB,cAAe,EACtBzxoB,EAAO0xoB,gBAAiB,EACxB1xoB,EAAO2xoB,gBAAiB,CAC1B,CAEA,SAASH,EAAeF,GACtB,GAAKvsmB,EAAYnM,YAKV,CACL,IAAI5rH,EAAQu3E,EAAS39H,WACnBqmD,EAAUs3E,EAAS19H,aACnBqmD,EAAUq3E,EAASz9H,aAEjBk5I,EAAOqvoB,eACTriuB,EAAkB,IAAVA,GAAyB,KAAVA,EAAe,GAAKA,EAAQ,IAGrDgzF,EAAOhzF,MAA2B,MAAnBskuB,EAAyBtkuB,EAAQ5jC,EAAI4jC,GAAQgjuB,GACrC,MAAnBsB,IACFtxoB,EAAO/yF,QAAU7jC,EAAI6jC,IAEvB+yF,EAAOwyN,SAAWjuO,EAAS39H,WAAa,GAAK2oxB,EAAU,GAAKA,EAAU,GAE/C,MAAnB+B,IACFtxoB,EAAO9yF,QAAU9jC,EAAI8jC,IAEvB8yF,EAAOwyN,SAAWjuO,EAAS39H,WAAa,GAAK2oxB,EAAU,GAAKA,EAAU,EACxE,MAvBEvvoB,EAAOhzF,MAAQ,KACfgzF,EAAO/yF,QAAU,KACjB+yF,EAAO9yF,QAAU,KACjB8yF,EAAOwyN,SAAW+8a,EAAU,EAqBhC,CAEA,SAASqC,EAAqB1kuB,GAC5Bq3E,EAAWyspB,EAAWzspB,EAAUr3E,GAChCikF,GACF,CAEA,SAASu/oB,EAAWnspB,EAAUt3E,GAC5B,OAAO+juB,EAAWzspB,EAAkB,GAARt3E,EAC9B,CAEA,SAAS+juB,EAAW9t3B,EAAMgqJ,GACxB,IAAItpD,EAAK,IAAIn5H,KAAKy4B,EAAKmkE,UAAsB,IAAV6lF,GAC/B2xb,EAAU,IAAIp0mB,KAAKy4B,GAEvB,OADA27kB,EAAQvre,SAAS1P,EAAGgD,WAAYhD,EAAGiD,aAAcjD,EAAGkD,cAC7C+3e,CACT,CAEA,SAASgzS,IACP,OAAyB,OAAjB7xoB,EAAOhzF,OAAmC,KAAjBgzF,EAAOhzF,SAClB,OAAnBgzF,EAAO/yF,SAAuC,KAAnB+yF,EAAO/yF,YACjC+yF,EAAOsvoB,aAAetvoB,EAAOsvoB,cAAmC,OAAnBtvoB,EAAO9yF,SAAuC,KAAnB8yF,EAAO9yF,SACrF,CAnXI0mF,EAAOw7oB,YACTltnB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOw7oB,YAAa,SAAS7n6B,GACtE6n6B,GAAc7n6B,CAChB,IAGFy4R,EAAOsvoB,YAAcM,EAAiBN,YAClC17oB,EAAO07oB,aACTptnB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAO07oB,aAAc,SAAS/n6B,GACvEy4R,EAAOsvoB,cAAgB/n6B,CACzB,IAIFy4R,EAAOqvoB,aAAeO,EAAiBP,aACnCz7oB,EAAOy7oB,cACTntnB,EAASxsS,KAAKsqR,EAAOvH,QAAQ1zC,OAAO8vC,EAAOjB,EAAOy7oB,cAAe,SAAS9n6B,GAGxE,GAFAy4R,EAAOqvoB,eAAiB9n6B,EAEpBw9T,EAAYpS,OAAOzyN,KAAM,CAE3B,IAAI8sG,EAAQmkuB,IAAwBlkuB,EAAUmkuB,IAC1Ct5xB,QAAQ9yB,UAAUgoF,IAAUl1D,QAAQ9yB,UAAUioF,KAChDs3E,EAASjxH,SAAS05C,GAClBmkF,IAEJ,MACEqgpB,GAEJ,IA+CF5v5B,KAAKyu5B,sBAAwB,SAASH,EAAcC,EAAgBC,GAClE,IAAI0B,EAAgB,SAASlr6B,GACvBA,EAAE82hB,gBACJ92hB,EAAIA,EAAE82hB,eAGR,IAAIthf,EAAQx1C,EAAEokc,WAAapkc,EAAEokc,YAAcpkc,EAAE65D,OAC7C,OAAO75D,EAAE+6U,QAAUvlS,EAAQ,CAC7B,EAEA8z3B,EAAa3jzB,GAAG,mBAAoB,SAAS3lH,GACtCgpD,GACHowO,EAAOpwJ,OAAOkiyB,EAAclr6B,GAAKo5R,EAAO+xoB,iBAAmB/xoB,EAAOgyoB,kBAEpEpr6B,EAAE2nI,gBACJ,GAEA4hyB,EAAe5jzB,GAAG,mBAAoB,SAAS3lH,GACxCgpD,GACHowO,EAAOpwJ,OAAOkiyB,EAAclr6B,GAAKo5R,EAAOiyoB,mBAAqBjyoB,EAAOkyoB,oBAEtEtr6B,EAAE2nI,gBACJ,GAEC6hyB,EAAe7jzB,GAAG,mBAAoB,SAAS3lH,GACzCgpD,GACHowO,EAAOpwJ,OAAOkiyB,EAAclr6B,GAAKo5R,EAAOmyoB,mBAAqBnyoB,EAAOoyoB,oBAEtExr6B,EAAE2nI,gBACJ,EACF,EAGA3sH,KAAK0u5B,oBAAsB,SAASJ,EAAcC,EAAgBC,GAChEF,EAAa3jzB,GAAG,UAAW,SAAS3lH,GAC7BgpD,IACa,KAAZhpD,EAAEitS,OACJjtS,EAAE2nI,iBACFyxJ,EAAO+xoB,iBACP/xoB,EAAOpwJ,UACc,KAAZhpI,EAAEitS,QACXjtS,EAAE2nI,iBACFyxJ,EAAOgyoB,iBACPhyoB,EAAOpwJ,UAGb,GAEAugyB,EAAe5jzB,GAAG,UAAW,SAAS3lH,GAC/BgpD,IACa,KAAZhpD,EAAEitS,OACJjtS,EAAE2nI,iBACFyxJ,EAAOiyoB,mBACPjyoB,EAAOpwJ,UACc,KAAZhpI,EAAEitS,QACXjtS,EAAE2nI,iBACFyxJ,EAAOkyoB,mBACPlyoB,EAAOpwJ,UAGb,GAEAwgyB,EAAe7jzB,GAAG,UAAW,SAAS3lH,GAC/BgpD,IACa,KAAZhpD,EAAEitS,OACJjtS,EAAE2nI,iBACFyxJ,EAAOmyoB,mBACPnyoB,EAAOpwJ,UACc,KAAZhpI,EAAEitS,QACXjtS,EAAE2nI,iBACFyxJ,EAAOoyoB,mBACPpyoB,EAAOpwJ,UAGb,EACF,EAEAhuH,KAAK2u5B,iBAAmB,SAASL,EAAcC,EAAgBC,GAC7D,GAAIpwoB,EAAOwvoB,cAIT,OAHAxvoB,EAAOqyoB,YAAcv6xB,QAAQtmH,KAC7BwuQ,EAAOsyoB,cAAgBx6xB,QAAQtmH,UAC/BwuQ,EAAOuyoB,cAAgBz6xB,QAAQtmH,MAIjC,IAAI8oD,EAAa,SAASm31B,EAAcC,EAAgBC,GACtD5smB,EAAYlN,cAAc,MAC1BkN,EAAY5S,aAAa,QAAQ,GAC7Br6K,QAAQ9yB,UAAUyszB,KACpBzxoB,EAAOyxoB,aAAeA,EAClB5B,GACFA,EAAe19mB,aAAa,SAAS,IAIrCr6K,QAAQ9yB,UAAU0szB,KACpB1xoB,EAAO0xoB,eAAiBA,EACpB5B,GACFA,EAAiB39mB,aAAa,WAAW,IAIzCr6K,QAAQ9yB,UAAU2szB,KACpB3xoB,EAAO2xoB,eAAiBA,EACpB5B,GACFA,EAAiB59mB,aAAa,WAAW,GAG/C,EAEAnyB,EAAOqyoB,YAAc,WACnB,IAAIrluB,EAAQmkuB,IACVlkuB,EAAUmkuB,IAEZrsmB,EAAY3S,YAERt6K,QAAQ9yB,UAAUgoF,IAAUl1D,QAAQ9yB,UAAUioF,IAChDs3E,EAASjxH,SAAS05C,GAClBu3E,EAAShxH,WAAW05C,GAChBs3E,EAAWj5Q,GAAOi5Q,EAAWh5Q,EAC/B+uE,GAAW,GAEX62M,EAAQ,MAGV72M,GAAW,EAEf,EAEA411B,EAAa3jzB,GAAG,OAAQ,SAAS3lH,GAC/Bm+T,EAAYhD,cACR8vmB,IACFN,IAC0B,OAAjBvxoB,EAAOhzF,OAAmC,KAAjBgzF,EAAOhzF,MACzC1yH,GAAW,IACD0lN,EAAOyxoB,cAAgBzxoB,EAAOhzF,MAAQ,IAChDgzF,EAAOpwJ,OAAO,WACZowJ,EAAOhzF,MAAQ5jC,EAAI42H,EAAOhzF,OAAQgjuB,EACpC,EAEJ,GAEAhwoB,EAAOsyoB,cAAgB,WACrB,IAAIrluB,EAAUmkuB,IACZpkuB,EAAQmkuB,IAEVpsmB,EAAY3S,YAERt6K,QAAQ9yB,UAAUioF,IAAYn1D,QAAQ9yB,UAAUgoF,IAClDu3E,EAASjxH,SAAS05C,GAClBu3E,EAAShxH,WAAW05C,GAChBs3E,EAAWj5Q,GAAOi5Q,EAAWh5Q,EAC/B+uE,OAAW5hE,GAAW,GAEtBy4Q,EAAQ,MAGV72M,OAAW5hE,GAAW,EAE1B,EAEAy35B,EAAe5jzB,GAAG,OAAQ,SAAS3lH,GACjCm+T,EAAYhD,cACR8vmB,IACFN,IAC4B,OAAnBvxoB,EAAO/yF,QAChB3yH,OAAW5hE,GAAW,IACZsnR,EAAO0xoB,gBAAkB1xoB,EAAO/yF,QAAU,IACpD+yF,EAAOpwJ,OAAO,WACZowJ,EAAO/yF,QAAU7jC,EAAI42H,EAAO/yF,QAC9B,EAEJ,GAEA+yF,EAAOuyoB,cAAgB,WACrB,IAAIrluB,EA9LR,WACE,IAAIA,GAAW8yF,EAAO9yF,QACtB,OAAOA,GAAW,GAAKA,EAAU,GAAKA,OAAUx0L,CAClD,CA2LkB855B,GAEdztmB,EAAY3S,YAERt6K,QAAQ9yB,UAAUkoF,IACpBq3E,EAAS/wH,WAAW05C,GACpBikF,EAAQ,MAER72M,OAAW5hE,OAAWA,GAAW,EAErC,EAEA035B,EAAe7jzB,GAAG,OAAQ,SAAS3lH,GAC7Bir6B,IACFN,KACUvxoB,EAAO2xoB,gBAAkB3xoB,EAAO9yF,QAAU,IACpD8yF,EAAOpwJ,OAAQ,WACbowJ,EAAO9yF,QAAU9jC,EAAI42H,EAAO9yF,QAC9B,EAEJ,EAEF,EAEAtrL,KAAKq+D,OAAS,WACZ,IAAI/8B,EAAO6hR,EAAYhN,WAEnBpwT,MAAMu7C,IACR6hR,EAAY5S,aAAa,QAAQ,GACjCxjC,EAAK9iQ,MAAM,mKAEPq3B,IACFqhO,EAAWrhO,GAGTqhO,EAAWj5Q,GAAOi5Q,EAAWh5Q,GAC/Bw5T,EAAY5S,aAAa,QAAQ,GACjCnyB,EAAOyxoB,cAAe,EACtBzxoB,EAAO0xoB,gBAAiB,GAExBH,IAEFC,IAEJ,EA8EAxxoB,EAAO2voB,aAAe73xB,QAAQ9yB,UAAU4uK,EAAO+7oB,cAC7C3voB,EAAOvH,QAAQvoJ,MAAM0jJ,EAAO+7oB,cAAgBC,EAAiBD,aAE/D3voB,EAAO+xoB,eAAiB,WACjB/xoB,EAAOwwoB,oBACVoB,EAAgC,GAAX1C,EAAgB,GAEzC,EAEAlvoB,EAAOgyoB,eAAiB,WACjBhyoB,EAAO2woB,oBACViB,EAAiC,IAAX1C,EAAgB,GAE1C,EAEAlvoB,EAAOiyoB,iBAAmB,WACnBjyoB,EAAO6woB,sBACVe,EAAkC,GAAbzC,EAEzB,EAEAnvoB,EAAOkyoB,iBAAmB,WACnBlyoB,EAAO8woB,sBACVc,EAAmC,IAAbzC,EAE1B,EAEAnvoB,EAAOmyoB,iBAAmB,WACnBnyoB,EAAO+woB,sBACVa,EAAqBxC,EAEzB,EAEApvoB,EAAOoyoB,iBAAmB,WACnBpyoB,EAAOixoB,sBACVW,GAAsBxC,EAE1B,EAEApvoB,EAAOyyoB,eAAiB,WACtB,IAAIxluB,EAAUmkuB,IACVpkuB,EAAQmkuB,IAEPnxoB,EAAOkxoB,qBACNp5xB,QAAQ9yB,UAAUioF,IAAYn1D,QAAQ9yB,UAAUgoF,GAClD4kuB,EAAqB,KAAWrtpB,EAAS39H,WAAa,GAAK,IAAM,KAEjEo5I,EAAOwyN,SAAWxyN,EAAOwyN,WAAa+8a,EAAU,GAAKA,EAAU,GAAKA,EAAU,GAGpF,EAEAvvoB,EAAOrtL,KAAO,WACZoyN,EAAYhD,aACd,EAEA/hC,EAAO53J,IAAI,WAAY,WACrB,KAAO85K,EAASlsS,QACdksS,EAASp4P,OAATo4P,EAEJ,EACF,IAEC15K,UAAU,gBAAiB,CAAC,sBAAuB,SAASkqyB,GAC3D,MAAO,CACLrpzB,QAAS,CAAC,gBAAiB,aAC3BqtB,SAAU,IACVvtF,WAAY,0BACZ2qO,aAAc,aACdvpP,MAAO,CAAC,EACRqsG,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMiM,aAAe87xB,EAAoB97xB,WAClD,EACA5L,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO0pL,GACpC,IAAIs+mB,EAAiBt+mB,EAAM,GAAI0Q,EAAc1Q,EAAM,GAE/C0Q,GACF4tmB,EAAe3k2B,KAAK+2P,EAAa78T,EAAQuU,KAAK,SAElD,EAEJ,IAEAq7H,QAAQx0C,OAAO,yBAA0B,CAAC,wBAAyB,0BAMhEn9F,QAAQ,qBAAsB,CAAC,SAAU,SAAS0uR,GAEjD,IAAI+9oB,EAAmB,yFACvB,MAAO,CACL543B,MAAO,SAASn2C,GACd,IAAI+B,EAAQ/B,EAAM+B,MAAMgt6B,GACxB,IAAKht6B,EACH,MAAM,IAAIujB,MACR,gHACiBtlB,EAAQ,MAG7B,MAAO,CACLgv6B,SAAUjt6B,EAAM,GAChButB,OAAQ0hQ,EAAOjvR,EAAM,IACrBkt6B,WAAYj+oB,EAAOjvR,EAAM,IAAMA,EAAM,IACrCmt6B,YAAal+oB,EAAOjvR,EAAM,IAE9B,EAEJ,IAECujD,WAAW,yBAA0B,CAAC,SAAU,WAAY,SAAU,WAAY,SAAU,KAAM,WAAY,YAAa,UAAW,aAAc,aAAc,eAAgB,qBACjL,SAAS6p3B,EAAe9q6B,EAASyiI,EAAOwE,EAAU0lJ,EAAQ9wJ,EAAIsL,EAAUjB,EAAWqD,EAAS3J,EAAYmryB,EAAYrX,EAAWsX,GAC/H,IAEI9vmB,EAAWiB,EAFX8umB,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,IAM3BrzrB,EAAYkzrB,EAAc9iyB,MAAMvF,EAAMyoyB,oBACrCtzrB,GAA2B,IAAdA,IAChBA,EAAY,GAGdkzrB,EAAcjurB,OAAOp6G,EAAMyoyB,mBAAoB,SAAUxopB,GACrD9qC,EAAa8qC,GAAqB,IAAXA,EAAmBA,EAAJ,CAC1C,GAGA,IAAIyopB,EAAWL,EAAc9iyB,MAAMvF,EAAM2oyB,kBAAoB,EAGzD7tJ,GAA8D,IAAjDutJ,EAAc9iyB,MAAMvF,EAAM4oyB,mBAC3CP,EAAcjurB,OAAOp6G,EAAM4oyB,kBAAmB,SAAU3opB,GACtD66f,GAAwB,IAAX76f,CACf,GAGA,IAmDI4opB,EAKAjvpB,EAxDAkvpB,EAAkB5+oB,EAAOlqJ,EAAM+oyB,kBAAkB/n6B,QAAUmsI,QAAQtmH,KAGnEmi5B,EAAgBhpyB,EAAMipyB,sBAAwB/+oB,EAAOlqJ,EAAMipyB,uBAAyB,SAASrp4B,EAAO8qU,GACtG,IAAI33T,EAAM23T,EAAK/1D,OACf,OAAqB,KAAd5hQ,EAAIm2P,OAA8B,IAAdn2P,EAAIm2P,KACjC,EAGIggoB,EAAmBh/oB,EAAOlqJ,EAAMmpyB,mBAGhCC,IAAiBj8xB,QAAQ9yB,UAAU2lB,EAAMqpyB,wBAAyBhB,EAAc9iyB,MAAMvF,EAAMqpyB,uBAG5FC,EAAoBp/oB,EAAOlqJ,EAAMupyB,oBAAoBvo6B,QAAUmsI,QAAQtmH,KAEvE2i5B,EAAiBxpyB,EAAMypyB,wBAA0Bv/oB,EAAOlqJ,EAAMypyB,8BAA2B175B,EAEzFq0H,IAAepC,EAAM0pyB,uBAAwBrB,EAAc9iyB,MAAMvF,EAAM0pyB,uBAEvE90Q,EAAW50hB,EAAM2pyB,kBACnBtB,EAAc9iyB,MAAMvF,EAAM2pyB,mBAAqB,KAE7CC,GAAgE,IAAnDvB,EAAc9iyB,MAAMvF,EAAM6pyB,qBAGvCC,IAAgB9pyB,EAAM+pyB,wBAAyB1B,EAAc9iyB,MAAMvF,EAAM+pyB,wBAGzEC,EAAe9/oB,EAAOlqJ,EAAMiqyB,iBAAiBjp6B,QAAUmsI,QAAQtmH,KAE/Dqj5B,EAAW7B,EAAc9iyB,MAAMvF,EAAMmqyB,qBAAsB,EAK3DC,EAAclgpB,EAAOlqJ,EAAM8mL,SAC3BoQ,EAAoBhtC,EAAOlqJ,EAAM8mL,QAAU,UAW3CujnB,EAAe9B,EAAgBl53B,MAAM2wF,EAAMsqyB,cAW3C1q4B,EAAQyo4B,EAAc/gyB,OACtBijyB,EAAalC,EAAc5qyB,IAAI,WAAY,WAC7C79F,EAAMq3O,UACR,GACAr3O,EAAM69F,IAAI,WAAY8syB,GAGtB,IAOIC,EAAiBC,EAPjBC,EAAU,aAAe9q4B,EAAMw1Q,IAAM,IAAM34S,KAAKQ,MAAsB,IAAhBR,KAAKm+F,UAC/Dr9F,EAAQixQ,KAAK,CACX,oBAAqB,OACrB,iBAAiB,EACjB,YAAak8pB,IAKXR,KACFM,EAAkBr9xB,QAAQ5vI,QAAQ,gBAClB6C,IAAI,WAAY,YAChC7C,EAAQ6pF,MAAMoj1B,IACdC,EAAgBlt6B,EAAQ2+B,SACVsyO,KAAK,cAAe,IAClCi8pB,EAAcj8pB,KAAK,WAAY,MAC/Bi8pB,EAAc7r4B,IAAI,IAClB6r4B,EAAcrq6B,IAAI,CAChB,SAAY,WACZ,IAAO,MACP,KAAQ,MACR,eAAgB,cAChB,aAAc,OACd,QAAW,EACX,WAAc,4EACd,MAAS,SAEX7C,EAAQ6C,IAAI,CACV,SAAY,WACZ,iBAAkB,MAClB,mBAAoB,gBAGlBqq6B,EAAcj8pB,KAAK,OACrBi8pB,EAAcnxpB,WAAW,MAE3BkxpB,EAAgBhjyB,OAAOijyB,GACvBA,EAAcrj1B,MAAM7pF,IAItB,IAAIot6B,EAAUx9xB,QAAQ5vI,QAAQ,mCAC9Bot6B,EAAQn8pB,KAAK,CACXx5P,GAAI015B,EACJxh4B,QAAS,UACT8R,OAAQ,YACRksR,OAAQ,yBACR,mBAAoB,iBACpBm/Q,MAAO,QACPtmlB,SAAU,WACV,iBAAkB,uBAClB80E,SAAU,mBAGRs4D,QAAQ9yB,UAAU2lB,EAAM4qyB,uBAC1BD,EAAQn8pB,KAAK,eAAgBxuI,EAAM4qyB,sBAGjCz9xB,QAAQ9yB,UAAU2lB,EAAM6qyB,4BAC1BF,EAAQn8pB,KAAK,qBAAsBxuI,EAAM6qyB,2BAG3C,IAMIC,EAAe,WACjBlr4B,EAAMsJ,QAAU,GAChBtJ,EAAMmr4B,WAAa,EACnBxt6B,EAAQixQ,KAAK,iBAAiB,GAR1B07pB,GACFO,EAAc7r4B,IAAI,GAStB,EAEIos4B,EAAa,SAASv95B,GACxB,OAAOi95B,EAAU,WAAaj95B,CAChC,EAIAmyB,EAAMw6M,OAAO,YAAa,SAAS3sO,GAC7BA,EAAQ,EACVlQ,EAAQ+7Q,WAAW,yBAEnB/7Q,EAAQixQ,KAAK,wBAAyBw8pB,EAAWv95B,GAErD,GAEA,IAQIw95B,EAAkB,SAASrgjB,EAAY73U,GACzC,IAAI+qF,EAAS,CAACsvL,WAAYw9D,GAC1Bk+iB,EAAgBT,GAAe,GAC/BiB,EAAkBjB,GAAe,GACjCjvyB,EAAGC,KAAKgxyB,EAAa7h5B,OAAO6/4B,EAAevqyB,IAAShwH,KAAK,SAASo7B,GAGhE,IAAIgi4B,EAAmBtgjB,IAAenyD,EAAUrL,WAChD,GAAI89mB,GAAoBrC,EACtB,GAAI3/3B,GAAWA,EAAQ79B,OAAS,EAAG,CACjCu0B,EAAMmr4B,UAAYnB,EAAa,GAAK,EACpCN,EAAkBjB,GAAe,GACjCzo4B,EAAMsJ,QAAQ79B,OAAS,EAGvB,IAAK,IAAI/O,EAAI,EAAGA,EAAI4sC,EAAQ79B,OAAQ/O,IAClCwhI,EAAOusyB,EAAanC,UAAYh/3B,EAAQ5sC,GACxCsjC,EAAMsJ,QAAQn+B,KAAK,CACjBiK,GAAIg25B,EAAW1u6B,GACfwc,MAAOux5B,EAAalC,WAAWvo4B,EAAOk+F,GACtCu3O,MAAOnsU,EAAQ5sC,KAuBnB,GAnBAsjC,EAAMymjB,MAAQz7N,EAIdugjB,IAEA5t6B,EAAQixQ,KAAK,iBAAiB,GAG1Bs7pB,GAA0C,IAAzBlq4B,EAAMsJ,QAAQ79B,QAzCnB,SAASu/W,GAC/B,SAAIhrV,EAAMsJ,QAAQ79B,OAwCqE,GAxCnDu/W,IAC3BA,EAAWhhW,gBAAkBgW,EAAMsJ,QAuC2C,GAvC5BpwB,MAAM8Q,aAInE,CAmC2Dwh5B,CAAkBxgjB,KAC/Dz9O,QAAQhiH,SAASyU,EAAMyr4B,iBAAmBl+xB,QAAQjmH,SAAS0Y,EAAMyr4B,gBACnE/C,EAAW,WACT1o4B,EAAMsnS,OAAO,EAAGn0R,EAClB,EAAGo6F,QAAQhiH,SAASyU,EAAMyr4B,gBAAkBzr4B,EAAMyr4B,eAAiBzr4B,EAAMyr4B,eAAwB,SAEjGzr4B,EAAMsnS,OAAO,EAAGn0R,IAIhBm33B,EAAU,CACZ,IAAIoB,EAAa1r4B,EAAMsJ,QAAQ,GAAGpwB,MAC9Bq0H,QAAQ3yB,SAASowQ,IACnBA,EAAWv/W,OAAS,GACpBig6B,EAAWv55B,MAAM,EAAG64W,EAAWv/W,QAAQue,gBAAkBghW,EAAWhhW,cACpE6g5B,EAAc7r4B,IAAIgsV,EAAa0gjB,EAAWv55B,MAAM64W,EAAWv/W,SAE3Do/5B,EAAc7r4B,IAAI,GAEtB,CACF,MACEks4B,IACAxB,EAAkBjB,GAAe,GAGjC6C,GACFpC,EAAgBT,GAAe,EAEnC,EAAG,WACDyC,IACAhC,EAAgBT,GAAe,GAC/BiB,EAAkBjB,GAAe,EACnC,EACF,EAGIjmyB,IACF+K,QAAQ5vI,QAAQupI,GAASllB,GAAG,SAAU2pzB,GACtC9nyB,EAAU3xH,KAAK,QAAQ8vG,GAAG,SAAU2pzB,IAKtC,IAgCIjt5B,EAhCAkt5B,EAAuBlD,EAAW,WAEhC1o4B,EAAMsJ,QAAQ79B,QAChB8/5B,IAGFvr4B,EAAM6r4B,gBAAiB,CACzB,EA/QwB,KAoRxB,SAASF,IACF3r4B,EAAM6r4B,iBACT7r4B,EAAM6r4B,gBAAiB,EACvB7r4B,EAAM4pQ,WAGRgioB,GACF,CAIA,SAASL,IACPvr4B,EAAM7/B,SAAWqiI,EAAe6uxB,EAAUp15B,OAAO0B,GAAW0z5B,EAAUlx5B,SAASxC,GAC/EqiC,EAAM7/B,SAASkB,KAAO1D,EAAQgsC,KAAK,eACrC,CAhBA3J,EAAM6r4B,gBAAiB,EAmBvB7r4B,EAAMymjB,WAAQt4kB,EAKd,IAMI295B,EAAwB,WACtBpt5B,GACFomH,EAAS9qF,OAAOt7B,EAEpB,EAEAws5B,IAEAlr4B,EAAMwh4B,aAAe,SAAUzwE,GAC7Bq5E,EAAa3B,EAAe13E,EAC9B,EAEA/wzB,EAAMsnS,OAAS,SAAS6jmB,EAAWh43B,GAEjC,IACIsiU,EAAOprV,EADP6zG,EAAS,CAAC,EAGd87I,GAAW,EACX97I,EAAOusyB,EAAanC,UAAYj+4B,EAAO2V,EAAMsJ,QAAQ6h4B,GAAW11jB,MAChEA,EAAQg1jB,EAAajC,YAAYC,EAAevqyB,GApQ7B,SAASl+F,EAAO8lG,GAC/ByH,QAAQrjH,WAAWsg5B,EAAY/B,KACjC3umB,EAAepK,UAAU,gBAClB4H,EAAkBt3R,EAAO,CAACu3R,KAAMzxL,IAGlC0kyB,EAAYpp6B,OAAO4+B,EAAO8lG,EACnC,CA8PEimyB,CAAetD,EAAehzjB,GAC9B58C,EAAUjR,aAAa,YAAY,GACnCiR,EAAUjR,aAAa,SAAS,GAEhC0hnB,EAAiBb,EAAe,CAC9BuD,MAAO3h5B,EACP4h5B,OAAQx2jB,EACRy2jB,OAAQzB,EAAalC,WAAWE,EAAevqyB,GAC/C62K,OAAQ5hQ,IAGV+33B,KAIkD,IAA9Clr4B,EAAM2lG,MAAMvF,EAAM+ryB,yBACpBrnyB,EAAS,WAAannI,EAAQ,GAAG0qG,OAAS,EAAG,GAAG,EAEpD,EAGA1qG,EAAQqkH,GAAG,UAAW,SAAS7uE,GAE7B,GAA6B,IAAzBnT,EAAMsJ,QAAQ79B,SAAiD,IAAjCm95B,EAAShp6B,QAAQuzC,EAAIm2P,OAAvD,CAIA,IAeIlkS,EAfAgn6B,EAAehD,EAAcX,EAAe,CAAC1znB,OAAQ5hQ,IAQzD,IAAyB,IAArBnT,EAAMmr4B,WAAoBiB,GAA8B,IAAdj53B,EAAIm2P,OAAiBn2P,EAAIk2P,SAGrE,OAFA6hoB,SACAlr4B,EAAM4pQ,UAMR,OAFAz2P,EAAI6wF,iBAEI7wF,EAAIm2P,OACV,KAAK,GACHn2P,EAAIwnO,kBAEJuwpB,IACAzC,EAAc7+nB,UACd,MACF,KAAK,GACH5pQ,EAAMmr4B,WAAanr4B,EAAMmr4B,UAAY,EAAInr4B,EAAMmr4B,UAAYnr4B,EAAMsJ,QAAQ79B,QAAU,EACnFu0B,EAAM4pQ,WACNxkS,EAAS2l6B,EAAQ,GAAGp0pB,iBAAiB,wBAAwB32O,EAAMmr4B,YAC5D9r6B,WAAWiF,UAAYc,EAAOtH,UACrC,MACF,KAAK,GACHkiC,EAAMmr4B,WAAanr4B,EAAMmr4B,UAAY,GAAKnr4B,EAAMsJ,QAAQ79B,OACxDu0B,EAAM4pQ,WACNxkS,EAAS2l6B,EAAQ,GAAGp0pB,iBAAiB,wBAAwB32O,EAAMmr4B,YAC5D9r6B,WAAWiF,UAAYc,EAAOtH,UACrC,MACF,QACMsu6B,GACFps4B,EAAMqlG,OAAO,WACPkI,QAAQhiH,SAASyU,EAAMyr4B,iBAAmBl+xB,QAAQjmH,SAAS0Y,EAAMyr4B,gBACnE/C,EAAW,WACT1o4B,EAAMsnS,OAAOtnS,EAAMmr4B,UAAWh43B,EAChC,EAAGo6F,QAAQhiH,SAASyU,EAAMyr4B,gBAAkBzr4B,EAAMyr4B,eAAiBzr4B,EAAMyr4B,eAAwB,SAEjGzr4B,EAAMsnS,OAAOtnS,EAAMmr4B,UAAWh43B,EAElC,GA/CN,CAkDF,GAEAx1C,EAAQqkH,GAAG,QAAS,SAAU7uE,GAC5B813B,GAAW,EACO,IAAd1zrB,GAAoBsjF,EAAUrL,YAChC1oL,EAAS,WACPumyB,EAAgBxymB,EAAUrL,WAAYr6Q,EACxC,EAAG,EAEP,GAEAx1C,EAAQqkH,GAAG,OAAQ,SAAS7uE,GACtBq23B,GAAkBxp4B,EAAMsJ,QAAQ79B,SAA+B,IAArBu0B,EAAMmr4B,YAAqBnxpB,IACvEA,GAAW,EACXh6O,EAAMqlG,OAAO,WACPkI,QAAQjmH,SAAS0Y,EAAMyr4B,iBAAmBl+xB,QAAQhiH,SAASyU,EAAMyr4B,eAAerj0B,MAClFsg0B,EAAW,WACT1o4B,EAAMsnS,OAAOtnS,EAAMmr4B,UAAWh43B,EAChC,EAAGnT,EAAMyr4B,eAAerj0B,MAExBpoE,EAAMsnS,OAAOtnS,EAAMmr4B,UAAWh43B,EAElC,KAEG+nuB,GAAcrid,EAAUzQ,OAAO3mH,WAClCo3H,EAAUvL,gBACVttR,EAAMqlG,OAAO,WAEXwzL,EAAUjR,aAAa,YAAY,GACnCiR,EAAUjR,aAAa,SAAS,EAClC,GACAjqT,EAAQqhC,IAAI,KAEdiq4B,GAAW,EACXjvpB,GAAW,CACb,GAGA,IAAIqypB,EAAsB,SAASl53B,GAG7Bx1C,EAAQ,KAAOw1C,EAAI/tC,QAAwB,IAAd+tC,EAAIm2P,OAAwC,IAAzBtpQ,EAAMsJ,QAAQ79B,SAChEy/5B,IACK3tyB,EAAW6H,SACdqjyB,EAAc7+nB,UAGpB,EAEA/lK,EAAU7hB,GAAG,QAASqqzB,GAEtB5D,EAAc5qyB,IAAI,WAAY,WAC5BgG,EAAUS,IAAI,QAAS+nyB,IACnB7pyB,GAAgBwyhB,IAClB48P,EAAO332B,SAGLuoF,IACF+K,QAAQ5vI,QAAQupI,GAAS5C,IAAI,SAAUqnyB,GACvC9nyB,EAAU3xH,KAAK,QAAQoyH,IAAI,SAAUqnyB,IAGvCZ,EAAQ9w3B,SAEJqw3B,GACAM,EAAgB3w3B,QAEtB,GAEA,IAAI232B,EAAShtxB,EAASmmyB,EAATnmyB,CAAkB5kG,GAE3BwiG,EACFqB,EAAU3xH,KAAK,QAAQ01H,OAAOgqxB,GACrB58P,EACTznhB,QAAQ5vI,QAAQq3pB,GAAUpkoB,GAAG,GAAGg3G,OAAOgqxB,GAEvCj05B,EAAQ6pF,MAAMoq0B,GAGhBv64B,KAAKosD,KAAO,SAAS6o2B,GAEnBxymB,EA+DF,SAAwBU,GACtB,IAAIV,EAcJ,OAZIvsL,QAAQrxD,QAAQ/a,MAAQ,GAE1B24P,EAAiBU,EAAY/K,UAAY,CAAC,GAG3BC,UAAY,SAAU7tT,GACnC,OAAOi4T,EAAej4T,EACxB,EAEAi4T,EAAiBU,EAAY/K,SAGxBqK,CACT,CA/EmByxlB,CADjB1ylB,EAAYyzmB,GAGZts4B,EAAMyr4B,eAAiBnhpB,EAAOwvC,EAAepK,UAAU,YAAhCplC,CAA6Cm+oB,GAIpE5vmB,EAAU/J,SAAStgO,QAAQ,SAASw8R,GAgBlC,OAfAi+iB,GAAW,EAEO,IAAd1zrB,GAAmBy1I,GAAcA,EAAWv/W,QAAU8pO,EACpDuzrB,EAAW,GACbgD,IAjMwB,SAAS9gjB,GACvCtsW,EAAiBomH,EAAS,WACxBumyB,EAAgBrgjB,EAClB,EAAG89iB,EACL,CA8LQyD,CAA0BvhjB,IAE1BqgjB,EAAgBrgjB,IAGlBk+iB,EAAgBT,GAAe,GAC/BqD,IACAZ,KAGEhwJ,EACKlwZ,EAGJA,OAMLnyD,EAAUjR,aAAa,YAAY,IAJjCiR,EAAUjR,aAAa,YAAY,GAC5B,KAKX,GAEAiR,EAAUhK,YAAY1jT,KAAK,SAAS0hT,GAClC,IAAI2/mB,EACAtuyB,EAAS,CAAC,EASd,OAJKg9oB,GACHrid,EAAUjR,aAAa,YAAY,GAGjCginB,GACF1ryB,EAAO+tyB,OAASp/mB,EACT+8mB,EAAenB,EAAevqyB,KAKvCA,EAAOusyB,EAAanC,UAAYz7mB,EAChC2/mB,EAAqB/B,EAAalC,WAAWE,EAAevqyB,GAC5DA,EAAOusyB,EAAanC,eAAYn65B,EAGzBq+5B,IAFU/B,EAAalC,WAAWE,EAAevqyB,GAETsuyB,EAAqB3/mB,EACtE,EACF,CAmBF,IAEC5uL,UAAU,eAAgB,WACzB,MAAO,CACLr/E,WAAY,yBACZkgE,QAAS,CAAC,UAAW,gBACrB2hB,KAAM,SAASgoyB,EAAe9q6B,EAASyiI,EAAO0pL,GAC5CA,EAAM,GAAGrmP,KAAKqmP,EAAM,GACtB,EAEJ,GAEC7rL,UAAU,oBAAqB,CAAC,aAAc,SAASyqyB,GACtD,MAAO,CACL1o4B,MAAO,CACLsJ,QAAS,IACTm9iB,MAAO,IACPrriB,OAAQ,IACRj7C,SAAU,IACV0r6B,eAAgB,IAChBvkmB,OAAQ,IACRk6lB,aAAc,IACdvs1B,SAAU,KAEZ75E,SAAS,EACTixI,YAAa,SAAS1uI,EAASyiI,GAC7B,OAAOA,EAAMqsyB,kBAAoB,6CACnC,EACAhsyB,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC7BpgG,EAAMqsG,YAAcjM,EAAMiM,YAE1BrsG,EAAM+wzB,OAAS,WACb,IAAI27E,EAAiB1s4B,EAAMsJ,QAAQ79B,OAAS,EAE5C,OADAu0B,EAAMwh4B,aAAa,CAAEzwE,OAAQ27E,IACtBA,CACT,EAEA1s4B,EAAMgtS,SAAW,SAAS2/lB,GACxB,OAAO3s4B,EAAMob,SAAWux3B,CAC1B,EAEA3s4B,EAAM4s4B,aAAe,SAASD,GAC5B3s4B,EAAMob,OAASux3B,CACjB,EAEA3s4B,EAAM6s4B,YAAc,SAAS1B,EAAWh43B,GACtC,IAAI8hC,EAAWj1C,EAAMi1C,WACjBs4D,QAAQhiH,SAAS0pD,IAAas4D,QAAQjmH,SAAS2tD,GACjDyz1B,EAAW,WACT1o4B,EAAMsnS,OAAO,CAAC6jmB,UAAWA,EAAWh43B,IAAKA,GAC3C,EAAGo6F,QAAQhiH,SAAS0pD,GAAYA,EAAWA,EAAkB,SAE7Dj1C,EAAMsnS,OAAO,CAAC6jmB,UAAWA,EAAWh43B,IAAKA,GAE7C,CACF,EAEJ,IAEC8qF,UAAU,oBAAqB,CAAC,mBAAoB,WAAY,SAAU,SAASosJ,EAAkBzlJ,EAAU0lJ,GAC9G,MAAO,CACLtqP,MAAO,CACLnyB,MAAO,IACPxS,MAAO,IACPorlB,MAAO,KAEThmd,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC7B,IAAIq1xB,EAASnroB,EAAOlqJ,EAAMiM,YAAbi+I,CAA0BtqP,EAAMkuP,UAAY,8CACzD7D,EAAiBoroB,GAAQvn5B,KAAK,SAASmn5B,GACrC,IAAIyX,EAAQv/xB,QAAQ5vI,QAAQ035B,EAAWhg5B,QACvC1X,EAAQ29Q,YAAYwxpB,GACpBloyB,EAASkoyB,EAATloyB,CAAgB5kG,EAClB,EACF,EAEJ,IAEC13B,OAAO,wBAAyB,CAAC,OAAQ,YAAa,OAAQ,SAASkkI,EAAMhP,EAAW4mJ,GACvF,IAAI2opB,EAaJ,OAZAA,EAAoBvvyB,EAAUxyH,IAAI,aAY3B,SAASgi6B,EAAWvmV,GAQzB,OAPKsmV,GALP,SAAsBC,GACpB,MAAO,QAAQzz6B,KAAKyz6B,EACtB,CAG4BC,CAAaD,IACrC5opB,EAAKlgQ,KAAK,iDAEZ8o5B,EAAYvmV,GAAS,GAAKumV,GAAW5x6B,QAAQ,IAAI+tC,OAAoBs9iB,EAXhDrrlB,QAAQ,yBAA0B,QAWsB,MAAO,uBAAyB4x6B,EACxGD,IACHC,EAAYxgyB,EAAKO,YAAYigyB,IAExBA,CACT,CACF,IAEFz/xB,QAAQx0C,OAAO,8CAA+C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACjGA,EAAe0G,IAAI,8CACjB,osBASJ,IAEAJ,QAAQx0C,OAAO,wCAAyC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC3FA,EAAe0G,IAAI,wCACjB,6CAEJ,IAEAJ,QAAQx0C,OAAO,gCAAiC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACnFA,EAAe0G,IAAI,gCACjB,uNAMJ,IAEAJ,QAAQx0C,OAAO,sCAAuC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACzFA,EAAe0G,IAAI,sCACjB,i6BAeJ,IAEAJ,QAAQx0C,OAAO,mCAAoC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACtFA,EAAe0G,IAAI,mCACjB,kDAEJ,IAEAJ,QAAQx0C,OAAO,0CAA2C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC7FA,EAAe0G,IAAI,0CACjB,qTAMJ,IAEAJ,QAAQx0C,OAAO,mCAAoC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACtFA,EAAe0G,IAAI,mCACjB,mgFA6CJ,IAEAJ,QAAQx0C,OAAO,qCAAsC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACxFA,EAAe0G,IAAI,qCACjB,6qEAwCJ,IAEAJ,QAAQx0C,OAAO,oCAAqC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACvFA,EAAe0G,IAAI,oCACjB,msEA8CJ,IAEAJ,QAAQx0C,OAAO,0CAA2C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC7FA,EAAe0G,IAAI,0CACjB,kyBAWJ,IAEAJ,QAAQx0C,OAAO,iCAAkC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACpFA,EAAe0G,IAAI,iCACjB,+HAEJ,IAEAJ,QAAQx0C,OAAO,gCAAiC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACnFA,EAAe0G,IAAI,gCACjB,+ZAGJ,IAEAJ,QAAQx0C,OAAO,0CAA2C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC7FA,EAAe0G,IAAI,0CACjB,q1CAMJ,IAEAJ,QAAQx0C,OAAO,+CAAgD,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAClGA,EAAe0G,IAAI,+CACjB,6FAGJ,IAEAJ,QAAQx0C,OAAO,0CAA2C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC7FA,EAAe0G,IAAI,0CACjB,mFAGJ,IAEAJ,QAAQx0C,OAAO,mDAAoD,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACtGA,EAAe0G,IAAI,mDACjB,wKAKJ,IAEAJ,QAAQx0C,OAAO,yCAA0C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC5FA,EAAe0G,IAAI,yCACjB,kKAIJ,IAEAJ,QAAQx0C,OAAO,6CAA8C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAChGA,EAAe0G,IAAI,6CACjB,+OAOJ,IAEAJ,QAAQx0C,OAAO,oCAAqC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACvFA,EAAe0G,IAAI,oCACjB,wJAIJ,IAEAJ,QAAQx0C,OAAO,oCAAqC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACvFA,EAAe0G,IAAI,oCACjB,kWAEJ,IAEAJ,QAAQx0C,OAAO,yCAA0C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC5FA,EAAe0G,IAAI,yCACjB,2EACJ,IAEAJ,QAAQx0C,OAAO,4CAA6C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC/FA,EAAe0G,IAAI,4CACjB,oYAIJ,IAEAJ,QAAQx0C,OAAO,kCAAmC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACrFA,EAAe0G,IAAI,kCACjB,83CAQJ,IAEAJ,QAAQx0C,OAAO,6BAA8B,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAChFA,EAAe0G,IAAI,6BACjB,qMAIJ,IAEAJ,QAAQx0C,OAAO,gCAAiC,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACnFA,EAAe0G,IAAI,gCACjB,4XAWJ,IAEAJ,QAAQx0C,OAAO,0CAA2C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GAC7FA,EAAe0G,IAAI,0CACjB,8sKAuEJ,IAEAJ,QAAQx0C,OAAO,8CAA+C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACjGA,EAAe0G,IAAI,8CACjB,8JAMJ,IAEAJ,QAAQx0C,OAAO,8CAA+C,IAAIikC,IAAI,CAAC,iBAAkB,SAAUiK,GACjGA,EAAe0G,IAAI,8CACjB,+hBAMJ,IACAJ,QAAQx0C,OAAO,yBAAyBikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQ2/xB,kBAAoB3/xB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,iJAAkJnuI,QAAQ2/xB,kBAAmB,CAAM,GACzV3/xB,QAAQx0C,OAAO,uBAAuBikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQ4/xB,gBAAkB5/xB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,oSAAqSnuI,QAAQ4/xB,gBAAiB,CAAM,GACte5/xB,QAAQx0C,OAAO,2BAA2BikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQ6/xB,oBAAsB7/xB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,6KAA8KnuI,QAAQ6/xB,oBAAqB,CAAM,GAC3X7/xB,QAAQx0C,OAAO,yBAAyBikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQ8/xB,kBAAoB9/xB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,0ZAA2ZnuI,QAAQ8/xB,kBAAmB,CAAM,GAClmB9/xB,QAAQx0C,OAAO,gCAAgCikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQ+/xB,yBAA2B//xB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,wIAAyInuI,QAAQ+/xB,yBAA0B,CAAM,GACrW//xB,QAAQx0C,OAAO,wBAAwBikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQggyB,iBAAmBhgyB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,m3FAAo3FnuI,QAAQggyB,iBAAkB,CAAM,GACxjGhgyB,QAAQx0C,OAAO,2BAA2BikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQigyB,oBAAsBjgyB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,0EAA2EnuI,QAAQigyB,oBAAqB,CAAM,GACxRjgyB,QAAQx0C,OAAO,0BAA0BikC,IAAI,YAAauQ,QAAQ67L,QAAQr5D,gBAAkBxiI,QAAQkgyB,mBAAqBlgyB,QAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQwpQ,QAAQ,sFAAuFnuI,QAAQkgyB,mBAAoB,CAAM,E,YCrvPjS100B,EAAOj9F,QANP,SAAoB+F,GAClB,IAAI2I,EAAS6M,KAAKrM,IAAInJ,WAAewV,KAAKi4T,SAASztU,GAEnD,OADAwV,KAAK+S,MAAQ5f,EAAS,EAAI,EACnBA,CACT,C,YCEAuuF,EAAOj9F,QAJP,WAEA,C,+BCZA,IAAI4x6B,EAA+B,oBAAX7x6B,QAA0BA,OAC9C8x6B,EAAgB,EAAQ,OAE5B500B,EAAOj9F,QAAU,WAChB,MAA0B,mBAAf4x6B,GACW,mBAAX7x6B,QACsB,iBAAtB6x6B,EAAW,QACO,iBAAlB7x6B,OAAO,QAEX8x6B,GACR,C,yBCHQ,SAAWz16B,GAAU,aAIXA,EAAOG,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GC,MACjH,KAEJC,YACI,8DAA8DD,MAC1D,KAERghI,kBAAkB,EAClB9gI,SACI,yEAAyEF,MACrE,KAERG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,4BAA4BJ,MAAM,KAC/CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNC,EAAG,mBACHC,GAAI,eACJC,EAAG,aACHC,GAAI,eACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA7EyCC,CAAQ,EAAQ,O,+BCL1D,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,M,yBCTRm9F,EAAOj9F,QAAU,SAAUg9G,GACzB,OAAOA,OACT,C,yBCKQ,SAAW5gH,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YAAa,qDAAqDD,MAC9D,KAEJE,SACI,+EAA+EF,MAC3E,KAERG,cAAe,+BAA+BH,MAAM,KACpDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EAEpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNC,EAAG,mBACHC,GAAI,YACJC,EAAG,QACHC,GAAI,WACJC,EAAG,MACHC,GAAI,SACJC,EAAG,UACHC,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERM,uBAAwB,mCAExBC,QAAS,SAAU8+C,GACf,IACI8+K,EAAS,GAiCb,OAlCQ9+K,EAyBA,GAEA8+K,EADM,KA1BN9+K,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACX8+K,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBA9+K,IAkCDA,EAAS8+K,CACpB,EACA39N,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CArGyCC,CAAQ,EAAQ,O,+BCNlD,EAAQ,MAKhBmlG,CAAE,CAAE37F,OAAQ,QAASs8O,MAAM,GAAQ,CACjCt6N,QALY,EAAQ,Q,oJCIlBwm5B,EAA8B,aAAiB,SAAUnr6B,EAAMynH,GACjE,IAAI90G,EAAK3S,EAAK2S,GACV+0G,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtB1szB,EAAY1+G,EAAK0+G,UACjBgka,EAAY1ihB,EAAK4kB,KACjBA,OAAqB,IAAd89f,EAAuB,WAAaA,EAC3C2oZ,EAAerr6B,EAAK09M,QACpBA,OAA2B,IAAjB2ttB,GAAkCA,EAC5CC,EAAiBtr6B,EAAKuvnB,UACtBA,OAA+B,IAAnB+7S,GAAoCA,EAChDC,EAAWvr6B,EAAKur6B,SAChBltrB,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,QAAUA,EAC3Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,iBAAkB,YAAa,OAAQ,UAAW,YAAa,WAAY,OAE1Iwr6B,GAAc,IAAA7srB,YAAWkwY,EAAA,GACzBtzZ,EAAYiwsB,EAAYjwsB,UAGxBh8N,EAFSis6B,EAAYvk3B,OAEJ,CAACmk3B,EAAgB,wBAA0B,CAAC1jzB,EAAU,oBACvE59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAG1B,OADAmoH,GAAW,QAAmB59E,EAAQwqlB,GAClB,gBAAoB/1Y,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL7iG,KAAMA,EACNjS,GAAIA,GAAM4oN,EACV78G,UAAW,IAAWA,EAAWgJ,EAAUg2F,GAAW,WAAY6xa,GAAa,aAAcg8S,GAAY,qBAE7G,GACAJ,EAAeluuB,YAAc,iBAC7B,UCjCA,IAAIwuuB,EAA8B,aAAiB,SAAUzr6B,EAAMynH,GACjE,IAAIC,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtB1szB,EAAY1+G,EAAK0+G,UACjBggI,EAAU1+O,EAAK0+O,QACf13M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,iBAAkB,YAAa,YAExFwr6B,GAAc,IAAA7srB,YAAWkwY,EAAA,GACzBtzZ,EAAYiwsB,EAAYjwsB,UAGxBh8N,EAFSis6B,EAAYvk3B,OAEJ,CAACmk3B,EAAgB,wBAA0B,CAAC1jzB,EAAU,oBACvE59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAG1B,OADAmoH,GAAW,QAAmB59E,EAAQwqlB,GAClB,gBAAoB,SAAS,OAAS,CAAC,EAAGttlB,EAAO,CACnEygF,IAAKA,EACLi3H,QAASA,GAAWnjB,EACpB78G,UAAW,IAAWA,EAAWgJ,KAErC,GACA+jzB,EAAexuuB,YAAc,iBAC7B,UCnBA,IAAIyuuB,EAAyB,aAAiB,SAAU1r6B,EAAMynH,GAC5D,IAAI90G,EAAK3S,EAAK2S,GACV+0G,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtBO,EAAc3r6B,EAAKiwO,OACnBA,OAAyB,IAAhB07rB,GAAiCA,EAC1CC,EAAgB5r6B,EAAK4iD,SACrBA,OAA6B,IAAlBgp3B,GAAmCA,EAC9CP,EAAerr6B,EAAK09M,QACpBA,OAA2B,IAAjB2ttB,GAAkCA,EAC5CC,EAAiBtr6B,EAAKuvnB,UACtBA,OAA+B,IAAnB+7S,GAAoCA,EAChDO,EAAuB7r6B,EAAK8r6B,gBAC5BA,OAA2C,IAAzBD,GAA0CA,EAC5DE,EAAW/r6B,EAAK+r6B,SAChBrtzB,EAAY1+G,EAAK0+G,UACjBpgF,EAAQt+B,EAAKs+B,MACb0t4B,EAAahs6B,EAAKkrD,MAClBA,OAAuB,IAAf8g3B,EAAwB,GAAKA,EACrCtpZ,EAAY1ihB,EAAK4kB,KACjBA,OAAqB,IAAd89f,EAAuB,WAAaA,EAC3CjsgB,EAAQzW,EAAKyW,MACb21G,EAAWpsH,EAAKosH,SAChB6/yB,EAAajs6B,EAAKinD,OAClBo3L,EAAUr+O,EAAKs+O,GACfA,OAAiB,IAAZD,EAAqB,QAAUA,EACpCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,iBAAkB,SAAU,WAAY,UAAW,YAAa,kBAAmB,WAAY,YAAa,QAAS,QAAS,OAAQ,QAAS,WAAY,SAAU,OAEpOinD,EAAkB,WAATriC,GAA2Bqn5B,EAEpC1s6B,EAAQ0nD,EAAS,CAACmk3B,EAAgB,kBAAoB,CAAC1jzB,EAAU,cACjE59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAE1BmoH,GAAW,QAAmB59E,EAAQwqlB,GAEtC,IACI/4Z,GADc,IAAAojB,YAAWkwY,EAAA,GACDtzZ,UAExB2wsB,GAAmB,IAAA135B,SAAQ,WAC7B,MAAO,CACL+mN,UAAW5oN,GAAM4oN,EACjBt0K,OAAQA,EAEZ,EAAG,CAACs0K,EAAWt0K,EAAQt0C,IACnBw55B,EAAWll3B,GAAmB,MAATxwC,IAA2B,IAAVA,IAAoB21G,EAC1Dv1H,EAAqB,gBAAoB,GAAgB,OAAS,CAAC,EAAGmwC,EAAO,CAC/EpiB,KAAe,WAATA,EAAoB,WAAaA,EACvC6iG,IAAKA,EACLi2F,QAASA,EACT6xa,UAAWA,EACXg8S,UAAWY,EACXvp3B,SAAUA,EACV07L,GAAIA,KAEN,OAAoB,gBAAoBuwY,EAAA,EAAYj8R,SAAU,CAC5Dr4V,MAAO2x6B,GACO,gBAAoB,MAAO,CACzC5t4B,MAAOA,EACPogF,UAAW,IAAWA,EAAWgJ,EAAUzgE,GAAU,UAAYriC,EAAMqrN,GAAUvoH,EAAW,YAC3F0E,GAAyB,gBAAoB,WAAgB,KAAMv1H,EAAOs16B,GAAyB,gBAAoB,EAAgB,CACxIjh3B,MAAOA,GACNz0C,IAASinM,GAAW6xa,IAA2B,gBAAoB9sG,EAAA,EAAU,CAC9E79f,KAAM84L,EAAU,QAAU,UAC1BzyJ,QAAS6g3B,GACRC,KACL,GACAL,EAAUzuuB,YAAc,YACxByuuB,EAAUU,MAAQ,EAClBV,EAAUhijB,MAAQ,EAClB,UC1EA,IAAI2ijB,EAA6B,aAAiB,SAAUrs6B,EAAMynH,GAChE,IAAI90G,EAAK3S,EAAK2S,GACV+0G,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtB1szB,EAAY1+G,EAAK0+G,UACjBg/F,EAAU19M,EAAK09M,QACf6xa,EAAYvvnB,EAAKuvnB,UACjB5sQ,EAAO3iX,EAAK2iX,KACZtkI,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,QAAUA,EAC3Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,iBAAkB,YAAa,UAAW,YAAa,OAAQ,OAE9Hwr6B,GAAc,IAAA7srB,YAAWkwY,EAAA,GACzBtzZ,EAAYiwsB,EAAYjwsB,UAKxBh8N,EAJSis6B,EAAYvk3B,OAIJ,CAACmk3B,EAAgB,qBAAuB,CAAC1jzB,EAAU,qBACpE59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAG1B,OADAmoH,GAAW,QAAmB59E,EAAQwqlB,GAClB,gBAAoB/1Y,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL90G,GAAIA,GAAM4oN,EACV32M,KAVS,OAWT+9V,KAAMA,EACNjkQ,UAAW,IAAWA,EAAWgJ,EAAUg2F,GAAW,WAAY6xa,GAAa,gBAEnF,GACA88S,EAAcpvuB,YAAc,gBAC5B,UChCA,IAAIqvuB,EAA6B,aAAiB,SAAUts6B,EAAMynH,GAChE,IAAIC,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtB1szB,EAAY1+G,EAAK0+G,UACjBggI,EAAU1+O,EAAK0+O,QACf13M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,iBAAkB,YAAa,YAExFwr6B,GAAc,IAAA7srB,YAAWkwY,EAAA,GACzBtzZ,EAAYiwsB,EAAYjwsB,UAGxBh8N,EAFSis6B,EAAYvk3B,OAEJ,CAACmk3B,EAAgB,qBAAuB,CAAC1jzB,EAAU,mBACpE59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAG1B,OADAmoH,GAAW,QAAmB59E,EAAQwqlB,GAClB,gBAAoB,SAAS,OAAS,CAAC,EAAGttlB,EAAO,CACnEygF,IAAKA,EACLi3H,QAASA,GAAWnjB,EACpB78G,UAAW,IAAWA,EAAWgJ,GACjC,cAAe1gF,EAAM,iBAEzB,GACAsl4B,EAAcrvuB,YAAc,gBAC5B,UCpBA,IAAIsvuB,EAAwB,aAAiB,SAAUvs6B,EAAMynH,GAC3D,IAAI90G,EAAK3S,EAAK2S,GACV+0G,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtBQ,EAAgB5r6B,EAAK4iD,SACrBA,OAA6B,IAAlBgp3B,GAAmCA,EAC9CP,EAAerr6B,EAAK09M,QACpBA,OAA2B,IAAjB2ttB,GAAkCA,EAC5CC,EAAiBtr6B,EAAKuvnB,UACtBA,OAA+B,IAAnB+7S,GAAoCA,EAChDO,EAAuB7r6B,EAAK8r6B,gBAC5BA,OAA2C,IAAzBD,GAA0CA,EAC5DE,EAAW/r6B,EAAK+r6B,SAChBrtzB,EAAY1+G,EAAK0+G,UACjBpgF,EAAQt+B,EAAKs+B,MACb7nB,EAAQzW,EAAKyW,MACb21G,EAAWpsH,EAAKosH,SAChBnlE,EAASjnD,EAAKinD,OACd07T,EAAO3iX,EAAK2iX,KACZ6pjB,EAAaxs6B,EAAK,eAClBq+O,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCourB,EAAezs6B,EAAK0s6B,QACpBA,OAA2B,IAAjBD,EAA0B,QAAUA,EAC9Czl4B,GAAQ,OAA8BhnC,EAAM,CAAC,KAAM,WAAY,iBAAkB,WAAY,UAAW,YAAa,kBAAmB,WAAY,YAAa,QAAS,QAAS,WAAY,SAAU,OAAQ,cAAe,KAAM,YAEtOT,EAAQ0nD,EAAS,CAACmk3B,EAAgB,UAAY,CAAC1jzB,EAAU,aACzD59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAE1BmoH,GAAW,QAAmB59E,EAAQwqlB,GACtC,IAGI/4Z,GADc,IAAAojB,YAAWkwY,EAAA,GACDtzZ,UAExB2wsB,GAAmB,IAAA135B,SAAQ,WAC7B,MAAO,CACL+mN,UAAW5oN,GAAM4oN,EACjBt0K,OAAQA,EAEZ,EAAG,CAACs0K,EAAWt0K,EAAQt0C,IACnBw55B,EAAoB,MAAT115B,IAA2B,IAAVA,IAAoB21G,EAChDv1H,EAAqB,gBAAoB,GAAe,OAAS,CAAC,EAAGmwC,EAAO,CAC9EygF,IAAKA,EACLi2F,QAASA,EACT6xa,UAAWA,EACX3skB,SAAUA,EACV07L,GAAIourB,EACJ/pjB,KAAMA,KAER,OAAoB,gBAAoBksQ,EAAA,EAAYj8R,SAAU,CAC5Dr4V,MAAO2x6B,GACO,gBAAoB3trB,EAAW,CAC7CjgN,MAAOA,EACPogF,UAAW,IAAWA,EAAWgJ,EAAUzgE,GAAU,gBACpDmlE,GAAyB,gBAAoB,WAAgB,KAAMnlE,EAAsB,gBAAoB,WAAgB,KAAMpwD,EAAOs16B,GAAyB,gBAAoB,EAAe,CACvM,cAAeK,GACd/15B,IAAuB,gBAAoB,WAAgB,KAAM015B,GAAyB,gBAAoB,EAAe,KAAM115B,GAAQ5f,IAAS6mN,GAAW6xa,IAA2B,gBAAoB9sG,EAAA,EAAU,CACzN79f,KAAM84L,EAAU,QAAU,UAC1BzyJ,QAAS6g3B,GACRC,KACL,GACAQ,EAAStvuB,YAAc,WACvBsvuB,EAASH,MAAQ,EACjBG,EAAS7ijB,MAAQ,EACjB,U,oCCvEIijjB,EAAwB,aAC5B,SAAU3s6B,EAAMynH,GACd,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB2/H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,QAAUA,EAC3Cv8N,EAAQ9hB,EAAK8hB,MACbklB,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,KAAM,UAGhF,OADA0nH,GAAW,QAAmBA,EAAU,aACpB,gBAAoB62H,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL/I,UAAW,IAAWA,EAAWgJ,EAAU5lG,GAAS,gBAExD,GACA6q5B,EAAS1vuB,YAAc,WACvB,UClBA,IAAI4urB,EAAsB,aAAiB,SAAU7k1B,EAAOygF,GAC1D,OAAoB,gBAAoB,GAAW,OAAS,CAAC,EAAGzgF,EAAO,CACrEygF,IAAKA,EACL7iG,KAAM,WAEV,GACAin2B,EAAO5urB,YAAc,SACrB4urB,EAAOugD,MAAQ,EAAUA,MACzBvgD,EAAOnigB,MAAQ,EAAUA,MACzB,U,ICCIkjjB,GAAU,E,SAAA,GAAmB,YAI7BC,EAAwB,aAAiB,SAAU7s6B,EAAMynH,GAC3D,IAAIC,EAAW1nH,EAAK0nH,SAChBuoH,EAASjwO,EAAKiwO,OACdvxH,EAAY1+G,EAAK0+G,UACjBouzB,EAAY9s6B,EAAK8s6B,UACjBzurB,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,OAASA,EAC1Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,SAAU,YAAa,YAAa,OAGjG,OADA0nH,GAAW,QAAmBA,EAAU,QACpB,gBAAoB62H,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL/I,UAAW,IAAWA,EAAWouzB,GAAa,gBAAiB78rB,GAAUvoH,EAAW,aAExF,GACAmlzB,EAAS5vuB,YAAc,OACvB4vuB,EAAS5+sB,aAnBU,CACjBgiB,QAAQ,GAmBV48rB,EAAS3wN,IAAM0wN,EACfC,EAASj8hB,MAAQqkR,EAAA,EACjB43Q,EAASvye,QAAUo1L,EAAA,EACnBm9S,EAASr9S,MAAQ,EACjBq9S,EAASp/tB,KAAO,EAChBo/tB,EAAShhD,OAAS,EAClBghD,EAASnjjB,MAAQtrI,EAAA,EACjByurB,EAASj8kB,KAAO,EAChB,S,+DCzCe,SAAStiO,EAAgBpnG,EAAK9nB,EAAK7E,GAYhD,OAXA6E,GAAM,OAAcA,MACT8nB,EACTxoB,OAAOwY,eAAegQ,EAAK9nB,EAAK,CAC9B7E,MAAOA,EACP+lC,YAAY,EACZuL,cAAc,EACdxL,UAAU,IAGZnZ,EAAI9nB,GAAO7E,EAEN2sB,CACT,C,+BCTA,SAASksN,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,OACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,+BClBjB,IAAI5nO,EAAU,EAAQ,OAoBtB,SAASwuN,EAAgBsV,EAAQ7nH,EAAKziB,GACpCpwF,KAAKowF,QAAUA,GAAWg1H,EAAgBh1H,QAAQsqI,EAAQ7nH,GAC1D7yG,KAAKmmN,WAAavvN,EAAQ62F,IAAIitI,EAAQ7nH,GACtC7yG,KAAKkmN,cAAgBtvN,EAAQ65gB,YAAY75gB,EAAQopzB,SAAShgzB,KAAKmmN,YACjE,CAGA,SAASgysB,EAAcC,GAGrB,OAFAA,EAASh45B,UAAYtW,OAAO4W,OAAO6G,MAAMnH,WACzCg45B,EAASh45B,UAAUK,YAAc235B,EAC1BA,CACT,CA7BA120B,EAAOj9F,QAAU,CACfo7O,WAAYs4rB,EAKd,SAAyBl3rB,GACvBjhO,KAAKowF,QAAU,oBACfpwF,KAAKihO,OAASA,EACdjhO,KAAKq45B,IAAMr45B,KAAK2unB,YAAa,CAC/B,GAREltZ,WAAY02rB,EAAc/ysB,IAW5BA,EAAgBh1H,QAAU,SAAUsqI,EAAQ7nH,GAC1C,MAAO,2BAA8BA,EAAM,YAAc6nH,CAC3D,C,+BClBQ,EAAQ,MAIhBhxI,CAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMs2Y,iBAAiB,EAAMC,aAAa,GAAQ,CAC5E5oiB,iBAAkB,kB,YCNpB,IAAIhxF,EAAW,CAAC,EAAEA,SAElB06F,EAAOj9F,QAAU6P,MAAMyb,SAAW,SAAU6mB,GAC1C,MAA6B,kBAAtB5vC,EAASqZ,KAAKu2B,EACvB,C,oDCFIzN,E,SAAuB,cAAoB,MAC/CA,EAAQk/J,YAAc,gBACtB,S,+DCDI1xD,EAAgC,iBAAXlyI,SAAuBA,UAAYA,QAAQgkH,UAAYhkH,QAG5EmyI,EAAaD,GAAgC,iBAAVj1C,QAAsBA,SAAWA,OAAO+mB,UAAY/mB,OAMvF29iB,EAHgBzogB,GAAcA,EAAWnyI,UAAYkyI,GAGtB,IAAW8D,QAiB9C,QAdgB,WACd,IAIE,OAFY7D,GAAcA,EAAWnvB,SAAWmvB,EAAWnvB,QAAQ,QAAQm8J,OAOpEy7X,GAAeA,EAAY3pX,SAAW2pX,EAAY3pX,QAAQ,OACnE,CAAE,MAAO1wR,GAAI,CACf,CAZe,E,kBCff,IAAI6tB,EAAa,EAAQ,MACrBy1M,EAAW,EAAQ,OA+BvB5mI,EAAOj9F,QAJP,SAAqBkB,GACnB,OAAgB,MAATA,GAAiB2iO,EAAS3iO,EAAMyO,UAAYye,EAAWltB,EAChE,C,mCC7BA,IAAIob,EAAaf,MAAQA,KAAKe,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIvK,UAAU,SAAUC,EAASwK,GAC/C,SAASC,EAAU1b,GAAS,IAAM2b,EAAKH,EAAUrZ,KAAKnC,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC1F,SAASuc,EAAS5b,GAAS,IAAM2b,EAAKH,EAAiB,MAAExb,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC7F,SAASsc,EAAKnO,GAJlB,IAAexN,EAIawN,EAAOqO,KAAO5K,EAAQzD,EAAOxN,QAJ1CA,EAIyDwN,EAAOxN,MAJhDA,aAAiBub,EAAIvb,EAAQ,IAAIub,EAAE,SAAUtK,GAAWA,EAAQjR,EAAQ,IAIjBkR,KAAKwK,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKnZ,OAClE,EACJ,EACI2Z,EAAezB,MAAQA,KAAKyB,aAAgB,SAAUT,EAAStT,GAC/D,IAAsGgU,EAAG/d,EAAGid,EAAGe,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmB,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAE7Z,KAAMma,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WAAa,OAAOlC,IAAM,GAAI2B,EACvJ,SAASM,EAAKpB,GAAK,OAAO,SAAUsB,GAAK,OACzC,SAAcC,GACV,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOsB,OACH,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxB,EAAIwB,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAElc,MAAOyc,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGI,EAAEC,QAASle,EAAIye,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcxB,GAAMwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAM,CAAEgB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIA,EAAIwB,EAAI,KAAO,CACpE,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIgB,EAAEI,IAAIlO,KAAKsO,GAAK,KAAO,CAC9DxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC5B,CAAE,MAAO5c,GAAKod,EAAK,CAAC,EAAGpd,GAAIrB,EAAI,CAAG,CAAE,QAAU+d,EAAId,EAAI,CAAG,CACzD,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,EAC9E,CAtBgDF,CAAK,CAACT,EAAGsB,GAAK,CAAG,CAuBrE,EACIu9F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EAGA,SAAS24zB,EAAcrv5B,EAAQsv5B,EAAUzr5B,EAAM0r5B,GAC3C,IAAI14sB,EAAU,GAQd,OAPA72M,EAAOjX,QAAQ,SAAUq4O,GACO,IAAvBmurB,EAAYpk6B,SAAgBok6B,EAAY7i4B,SAAS00M,EAAKr6N,OACtC,IAAhBlD,EAAK1Y,SAAgB0Y,EAAK6oB,SAAS00M,EAAKv9N,OACf,iBAAnBu9N,EAAKkurB,IACZz4sB,EAAQhsN,KAAKu2O,EAAKkurB,GAE1B,GACOz4sB,CACX,CAiCA,SAAS24sB,EAA2Bx26B,GAWhC,MAVqC,CACjC,CAAEuI,IAAK,cAAewlB,KAAM,UAC5B,CAAExlB,IAAK,gBAAiBwlB,KAAM,UAC9B,CAAExlB,IAAK,OAAQku6B,QAAS,CAAC,cAAe1o5B,KAAM,UAC9C,CAAExlB,IAAK,UAAWku6B,QAAS,CAAC,KAAM,aAAc1o5B,KAAM,UACtD,CAAExlB,IAAK,WAAYwlB,KAAM,UACzB,CAAExlB,IAAK,WAAYku6B,QAAS,CAAC,aAAc1o5B,KAAM,UACjD,CAAExlB,IAAK,MAAOwlB,KAAM,UACpB,CAAExlB,IAAK,gBAAiBwlB,KAAM,WAEI1lB,OAAO,SAAU2e,EAAQm6iB,GAC3D,IAAIu1W,EAAgB,CAACv1W,EAAQ54jB,KACzB44jB,EAAQs1W,UACRC,EAAgBA,EAAc3q6B,OAAOo1jB,EAAQs1W,UAEjD,IAAIlu6B,EAAMmu6B,EAAc995B,KAAK,SAAUrQ,GAAO,OAAOA,KAAOvI,CAAO,GAInE,OAHIuI,UAAcvI,EAAMuI,KAAS44jB,EAAQpziB,OACrC/G,EAAOm6iB,EAAQ54jB,KAAOvI,EAAMuI,IAEzBye,CACX,EAAG,CAAC,EACR,CAnEAnf,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ+pB,gCAA6B,EA2CrC/pB,EAAQ+pB,2BA/BR,SAAoChL,GAChC,IAAIiL,EAAYjL,EAAGiL,UAAWC,EAAalL,EAAGkL,WAC9C,OAAO3N,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAI2D,EAAIi15B,EAAgBC,EAAiBt60B,EAAYzwE,EAAWvH,EAAQ0H,EAASC,EAAa4q5B,EAAoBvlqB,EAAsBplP,EAAeJ,EAAWC,EAAerH,EAA+BC,EAChN,OAAOnF,EAAYzB,KAAM,SAAUiF,GAC/B,OAAQA,EAAGpD,OACP,KAAK,EAAG,MAAO,CAAC,EAAalL,QAAQmvC,IAAI,CAACr3B,EAAWC,GAAY3b,IAAI,SAAU8U,GAAM,OAAOA,EAAGw1b,UAAY,KAC3G,KAAK,EAmBD,OAlBA15b,EAAK+7F,EAAO5+F,WAAM,EAAQ,CAACmE,EAAGnD,OAAQ,IAAK825B,EAAiBj15B,EAAG,GAAIk15B,EAAkBl15B,EAAG,GACxF46E,EAAa+50B,EAAcO,EAAiB,YAAa,CAAC,SAAU,CAAC,gBACrE/q5B,EAAYywE,EAAWnqF,OAAS,EAAImqF,EAAW,GAAK,EACpDh4E,EAAS+x5B,EAAcO,EAAiB,SAAU,CAAC,SAAU,CAAC,gBAAgBvu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOrU,KAAKmE,IAAIiQ,EAAGC,EAAI,EAAG,GACjIoU,EAAUqq5B,EAAcO,EAAiB,kBAAmB,CAAC,QAAS,SAAU,CAAC,gBAAgBvu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOD,EAAIC,CAAG,EAAG,GAC3IqU,EAAcoq5B,EAAcO,EAAiB,cAAe,CAAC,QAAS,SAAU,CAAC,gBAAgBvu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOD,EAAIC,CAAG,EAAG,GAC3Ii/5B,EAAqBR,EAAcM,EAAgB,gBAAiB,CAAC,QAAS,SAAU,CAAC,uBAAuBtu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOrU,KAAKmE,IAAIiQ,EAAGC,EAAI,EAAG,GACnK05P,EAAuB+kqB,EAAcO,EAAiB,uBAAwB,GAAI,CAAC,mBAAmBvu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOrU,KAAKmE,IAAIiQ,EAAGC,EAAI,EAAG,GACzJsU,EAA+D,KAA9ColP,GAAwBulqB,GACzC/q5B,EAAYuq5B,EAAcM,EAAgB,YAAa,GAAI,CAAC,mBAAmBtu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOD,EAAIC,CAAG,EAAG,GACzHmU,EAAgBsq5B,EAAcO,EAAiB,gBAAiB,GAAI,CAAC,mBAAmBvu6B,OAAO,SAAUsP,EAAGC,GAAK,OAAOD,EAAIC,CAAG,EAAG,GAClI8M,EAoCpB,SAA4CL,GACxC,IAAIg/f,EAA0B,KAC1ByzZ,EAAiB,GACrBzy5B,EAAMtU,QAAQ,SAAUq4O,GACF,cAAdA,EAAKr6N,MAAwBq6N,EAAKi7R,wBAClCA,EAA0Bj7R,EAAKi7R,wBAEZ,mBAAdj7R,EAAKr6N,MACV+o5B,EAAejl6B,KAAKu2O,EAE5B,GACA,IAAI2urB,EAAgCD,EAAel+5B,KAAK,SAAU2nM,GAE9D,OAAOA,EAAKmgE,UAEP2iQ,GAA2B9iU,EAAKzkM,KAAOungB,CAChD,GACA,IAAK0zZ,EACD,OAAO,KAEX,IAAIh9d,EAA2Bg9d,EAC3B98d,EAA4B51b,EAAMzS,IAAImoc,EAAyBG,kBAC/DC,EAA6B91b,EAAMzS,IAAImoc,EAAyBK,mBACpE,OAAKH,GAA8BE,EAG5B,CACH1xb,eAAgB+t5B,EAA2Bv8d,GAC3Ctxb,gBAAiB6t5B,EAA2Br8d,IAJrC,IAMf,CAlEoD68d,CAAmCJ,GACnEjy5B,EAAoB,GACpBiy5B,EAAgB7m6B,QAAQ,SAAUq4O,GACZ,oBAAdA,EAAKr6N,MAA4C,qBAAdq6N,EAAKr6N,MACxCpJ,EAAkB9S,KAAK2k6B,EAA2BpurB,GAE1D,GACO,CAAC,EAAc,CAAEv8N,UAAWA,EAAWvH,OAAQA,EAAQ0H,QAASA,EAASC,YAAaA,EAAaC,cAAeA,EAAeJ,UAAWA,EAAWC,cAAeA,EAAerH,8BAA+BA,EAA+BC,kBAAmBA,IAEzR,EACJ,EACJ,C,6BC9FAniB,EAAQ89F,YAAa,EACrB99F,EAAA,QACA,SAA0By06B,EAAQC,EAAQjnkB,GACxC,GAAIgnkB,GAAUC,EAAQ,CACpB,IAAK,IAAI9z6B,EAAI,EAAGA,IAAM6z6B,EAAO9k6B,SAAU/O,EACrC,GAAIG,KAAKM,IAAIoz6B,EAAO7z6B,GAAK8z6B,EAAO9z6B,IAAM6sW,EACpC,OAAO,EAGX,OAAO,CACT,CACA,OAAO,CACT,C,+BCbA,IAAI7vQ,EAAa,EAAQ,OACrB49B,EAAQ,EAAQ,OAGhBnuF,EAASuwD,EAAWvwD,OAEpBsn4B,GAA2Bn5yB,EAAM,WACnC,IAAIo5yB,GAAkB,EACtB,IACEvn4B,EAAO,IAAK,IACd,CAAE,MAAO7nB,GACPov5B,GAAkB,CACpB,CAEA,IAAIv+4B,EAAI,CAAC,EAELgyb,EAAQ,GACR7iP,EAAWovsB,EAAkB,SAAW,QAExC/lgB,EAAY,SAAU9oa,EAAKk4K,GAE7B54K,OAAOwY,eAAewY,EAAGtwB,EAAK,CAAEqJ,IAAK,WAEnC,OADAi5c,GAASpqS,GACF,CACT,GACF,EAEIm8C,EAAQ,CACViiI,OAAQ,IACR//N,OAAQ,IACRu4yB,WAAY,IACZr3tB,UAAW,IACXq1H,OAAQ,KAKV,IAAK,IAAI9sU,KAFL6u6B,IAAiBx6sB,EAAM06sB,WAAa,KAExB16sB,EAAOy0M,EAAU9oa,EAAKq0N,EAAMr0N,IAK5C,OAFaV,OAAOyrC,yBAAyBzD,EAAO1xB,UAAW,SAASvM,IAAIwM,KAAKya,KAE/DmvM,GAAY6iP,IAAU7iP,CAC1C,GAEAvoI,EAAOj9F,QAAU,CAAEoz4B,QAASuhC,E,gDC3C5B,IAAIzhD,EAAYny3B,KAAKmE,IAgCrB,QArBA,SAAkB+qG,EAAMjoG,EAAOrD,GAE7B,OADAqD,EAAQkr3B,OAAoB7g3B,IAAVrK,EAAuBioG,EAAKtgG,OAAS,EAAK3H,EAAO,GAC5D,WAML,IALA,IAAI4H,EAAOF,UACPqC,GAAS,EACTpC,EAASuj3B,EAAUtj3B,EAAKD,OAAS3H,EAAO,GACxC4nB,EAAQ/f,MAAMF,KAEToC,EAAQpC,GACfigB,EAAM7d,GAASnC,EAAK5H,EAAQ+J,GAE9BA,GAAS,EAET,IADA,IAAIoh3B,EAAYtj3B,MAAM7H,EAAQ,KACrB+J,EAAQ/J,GACfmr3B,EAAUph3B,GAASnC,EAAKmC,GAG1B,OADAoh3B,EAAUnr3B,GAASrD,EAAUirB,GCpBjC,SAAeqgF,EAAM1zF,EAAS3M,GAC5B,OAAQA,EAAKD,QACX,KAAK,EAAG,OAAOsgG,EAAKr0F,KAAKW,GACzB,KAAK,EAAG,OAAO0zF,EAAKr0F,KAAKW,EAAS3M,EAAK,IACvC,KAAK,EAAG,OAAOqgG,EAAKr0F,KAAKW,EAAS3M,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOqgG,EAAKr0F,KAAKW,EAAS3M,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOqgG,EAAK5zF,MAAME,EAAS3M,EAC7B,CDaW,CAAMqgG,EAAM10F,KAAM432B,EAC3B,CACF,C,qCEhCA,IAAIn4nB,EAAwBz/O,MAAQA,KAAKy/O,sBAAyB,SAAUC,EAAQnxM,GAEhF,OADIzkD,OAAOwY,eAAkBxY,OAAOwY,eAAeo9O,EAAQ,MAAO,CAAE/5P,MAAO4oD,IAAiBmxM,EAAOnxM,IAAMA,EAClGmxM,CACX,EACA51P,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ++sB,mCAAgC,EACxC,IAyEI5jd,EAzEA2hd,EAAuB,EAAQ,OAC/Bzhd,EAAgB,EAAQ,OAuE5Br7P,EAAQ++sB,8BAtER,SAAuCzjd,EAAIW,EAAcV,EAAgBC,EAAgB4+nB,EAAc/8K,EAAoB68K,EAAetx1B,GAWtI,IAAIizN,GAAuB,EAAIR,EAAcO,MAAMT,IAAqBA,EAAmBH,EAAqB,CAAC,6rHAA8rH,CAAC,gsHAC5yHj8O,EAAK+9rB,EAAqBU,iBAAiBH,EAAmBI,iBAAkBC,EAAoB3+rB,EAAG,GAAI4+rB,EAAqB5+rB,EAAG,GACnI+8O,EAAclzN,EAAO3mC,MAAO85P,EAAenzN,EAAOzmC,OAClDute,EAAa,EAAI5zO,EACjB6zO,EAAc,EAAI5zO,EAClBK,GAAiB,EAAIf,EAAca,eAAeZ,EAAIA,EAAGe,gBAAiBR,GAC1ES,GAAU,EAAIjB,EAAckB,6BAA6BjB,EAAIW,EAAcG,EAAgBb,EAAgBC,GAC3GmB,EAAqBrB,EAAGmB,mBAAmBH,EAAS,gBACpDy4qB,EAA2Bz5qB,EAAGmB,mBAAmBH,EAAS,sBAC1DszO,EAAoBt0O,EAAGmB,mBAAmBH,EAAS,eACnD04qB,EAAe15qB,EAAGmB,mBAAmBH,EAAS,UAC9C24qB,EAAiB35qB,EAAGmB,mBAAmBH,EAAS,YAChD44qB,EAAiB55qB,EAAGmB,mBAAmBH,EAAS,YAChD64qB,EAAqB75qB,EAAGmB,mBAAmBH,EAAS,gBACpD84qB,EAAqB95qB,EAAGmB,mBAAmBH,EAAS,gBACpD+9nB,EAAc/+nB,EAAG20O,oBAmBrB,SAAS6vO,EAAiBF,GACtBA,GAAc7+sB,KAAKmE,IAAI42P,EAAc4hd,EAAmB3hd,EAAe4hd,GACvE,IAEI9gsB,EADW9b,KAAKmE,IAAI,EADF,IACKnE,KAAK0vB,KAAKmvrB,IAEjCt2qB,EAASs2qB,EACTz/sB,EAAS0c,EAAO,EAAW,GAAPA,EAAa,EACjCw45B,EAAat06B,KAAKmE,IAAIwqe,EAAYC,GAAeiwO,EACrDtkd,EAAG2B,WAAWX,GACdhB,EAAG8B,UAAU43qB,EAAcn45B,GAC3By+O,EAAG8B,UAAU63qB,EAAgB3r4B,GAC7BgyN,EAAG8B,UAAU83qB,EAAgB/06B,GAC7Bm7P,EAAG8B,UAAU+3qB,EAAoBE,EACrC,CACA,SAASx1N,EAAiBF,GACtBrkd,EAAG2B,WAAWX,GACdhB,EAAG8B,UAAUg4qB,EAAoBz1N,EACrC,CAMA,OAzCArkd,EAAGgD,gBAAgBhD,EAAGiD,YAAa87nB,GACnC/+nB,EAAG40O,qBAAqB50O,EAAGiD,YAAajD,EAAG60O,kBAAmB70O,EAAGuC,WAAYq8nB,EAAe,GAC5F5+nB,EAAG2B,WAAWX,GACdhB,EAAG6B,UAAUR,EAAoB,GACjCrB,EAAG6B,UAAU43qB,EAA0B,GACvCz5qB,EAAG4B,UAAU0yO,EAAmBF,EAAYC,GAG5CmwO,EAAiB,GACjBD,EAAiB,GAgCV,CAAEjmoB,OA/BT,WACI0hL,EAAGnwI,SAAS,EAAG,EAAG2wI,EAAaC,GAC/BT,EAAG2B,WAAWX,GACdhB,EAAG4C,cAAc5C,EAAG6C,UACpB7C,EAAG8C,YAAY9C,EAAGuC,WAAYu8nB,GAC9B9+nB,EAAGgD,gBAAgBhD,EAAGiD,YAAa87nB,GACnC/+nB,EAAGkD,WAAWlD,EAAGmD,eAAgB,EAAG,EACxC,EAwByBqhd,iBAAkBA,EAAkBD,iBAAkBA,EAAkB7gd,QALjG,WACI1D,EAAG+0O,kBAAkBgqZ,GACrB/+nB,EAAG4D,cAAc5C,GACjBhB,EAAG6D,aAAa/C,EACpB,EAEJ,C,qCC7EA,IACQ/gP,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAeAoksB,EAA6C,SAAU5gsB,GAQvD,SAAS4gsB,EAA4BvuY,EAAWzmU,GAC5C,OAAOoU,EAAO3D,KAAKL,KAAMq2T,EAAWzmU,IAAYoQ,IACpD,CAIA,OAbAD,EAAU6ksB,EAA6B5gsB,GAUvC4gsB,EAA4BxksB,UAAUpZ,SAAW,WAC7C,MAAO,iCAAmCgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GACxF,EACOitkB,CACX,CAfgD,CAbnB,EAAQ,QAqDrCljnB,EAAOj9F,QAAUmgtB,C,yBC5DT,SAAW/jtB,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,GAKP,CApEyCtV,CAAQ,EAAQ,O,YCL1D,IAOIw16B,EACAC,EARAv/xB,EAAU/4C,EAAOj9F,QAAU,CAAC,EAUhC,SAASw16B,IACL,MAAM,IAAI1y5B,MAAM,kCACpB,CACA,SAAS2y5B,IACL,MAAM,IAAI3y5B,MAAM,oCACpB,CAqBA,SAAS4y5B,EAAWhiS,GAChB,GAAI4hS,IAAqBty5B,WAErB,OAAOA,WAAW0wnB,EAAK,GAG3B,IAAK4hS,IAAqBE,IAAqBF,IAAqBty5B,WAEhE,OADAsy5B,EAAmBty5B,WACZA,WAAW0wnB,EAAK,GAE3B,IAEI,OAAO4hS,EAAiB5hS,EAAK,EACjC,CAAE,MAAMnzoB,GACJ,IAEI,OAAO+06B,EAAiB155B,KAAK,KAAM83nB,EAAK,EAC5C,CAAE,MAAMnzoB,GAEJ,OAAO+06B,EAAiB155B,KAAKL,KAAMm4nB,EAAK,EAC5C,CACJ,CAGJ,EA5CC,WACG,IAEQ4hS,EADsB,mBAAfty5B,WACYA,WAEAwy5B,CAE3B,CAAE,MAAOj16B,GACL+06B,EAAmBE,CACvB,CACA,IAEQD,EADwB,mBAAjBry5B,aACcA,aAEAuy5B,CAE7B,CAAE,MAAOl16B,GACLg16B,EAAqBE,CACzB,CACJ,CAnBA,GAwEA,IAEIE,EAFAx9yB,EAAQ,GACRy9yB,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAahm6B,OACbwoH,EAAQw9yB,EAAaps6B,OAAO4uH,GAE5B09yB,GAAc,EAEd19yB,EAAMxoH,QACNom6B,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAI181B,EAAUw81B,EAAWI,GACzBF,GAAW,EAGX,IADA,IAAI5q6B,EAAMmtH,EAAMxoH,OACV3E,GAAK,CAGP,IAFA2q6B,EAAex9yB,EACfA,EAAQ,KACC09yB,EAAa7q6B,GACd2q6B,GACAA,EAAaE,GAAY30yB,MAGjC20yB,GAAc,EACd7q6B,EAAMmtH,EAAMxoH,MAChB,CACAgm6B,EAAe,KACfC,GAAW,EAnEf,SAAyB1ld,GACrB,GAAIqld,IAAuBry5B,aAEvB,OAAOA,aAAagtc,GAGxB,IAAKqld,IAAuBE,IAAwBF,IAAuBry5B,aAEvE,OADAqy5B,EAAqBry5B,aACdA,aAAagtc,GAExB,IAEI,OAAOqld,EAAmBrld,EAC9B,CAAE,MAAO3vd,GACL,IAEI,OAAOg16B,EAAmB355B,KAAK,KAAMs0c,EACzC,CAAE,MAAO3vd,GAGL,OAAOg16B,EAAmB355B,KAAKL,KAAM20c,EACzC,CACJ,CAIJ,CA0CI8ld,CAAgB981B,EAlBhB,CAmBJ,CAgBA,SAASsvc,EAAKkrH,EAAK9jnB,GACfrU,KAAKm4nB,IAAMA,EACXn4nB,KAAKqU,MAAQA,CACjB,CAWA,SAASzE,IAAQ,CA5BjB6qH,EAAQ2gK,SAAW,SAAU+8V,GACzB,IAAI9joB,EAAO,IAAIC,MAAMH,UAAUC,OAAS,GACxC,GAAID,UAAUC,OAAS,EACnB,IAAK,IAAI/O,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAClCgP,EAAKhP,EAAI,GAAK8O,UAAU9O,GAGhCu3H,EAAM9oH,KAAK,IAAIm5gB,EAAKkrH,EAAK9joB,IACJ,IAAjBuoH,EAAMxoH,QAAiBim6B,GACvBF,EAAWK,EAEnB,EAOAvtZ,EAAK7sgB,UAAUulH,IAAM,WACjB3lH,KAAKm4nB,IAAIr3nB,MAAM,KAAMd,KAAKqU,MAC9B,EACAomH,EAAQnkF,MAAQ,UAChBmkF,EAAQ2nR,SAAU,EAClB3nR,EAAQkvD,IAAM,CAAC,EACflvD,EAAQigyB,KAAO,GACfjgyB,EAAQ51D,QAAU,GAClB41D,EAAQC,SAAW,CAAC,EAIpBD,EAAQ9vB,GAAK/6F,EACb6qH,EAAQl0E,YAAc32C,EACtB6qH,EAAQhwB,KAAO76F,EACf6qH,EAAQxN,IAAMr9G,EACd6qH,EAAQ71E,eAAiBh1C,EACzB6qH,EAAQhG,mBAAqB7kH,EAC7B6qH,EAAQ5vH,KAAO+E,EACf6qH,EAAQwnf,gBAAkBrymB,EAC1B6qH,EAAQynf,oBAAsBtymB,EAE9B6qH,EAAQzmG,UAAY,SAAUzgC,GAAQ,MAAO,EAAG,EAEhDknI,EAAQi7I,QAAU,SAAUniR,GACxB,MAAM,IAAIgU,MAAM,mCACpB,EAEAkzH,EAAQkgyB,IAAM,WAAc,MAAO,GAAI,EACvClgyB,EAAQmgyB,MAAQ,SAAU7y1B,GACtB,MAAM,IAAIxgE,MAAM,iCACpB,EACAkzH,EAAQogyB,MAAQ,WAAa,OAAO,CAAG,C,uECpL5BC,EAAe,SAAsBxlmB,EAAUrnO,GAKxD,YAJa,IAATA,IACFA,EAAO,MAGO,MAAZqnO,EAAyB/0T,OAAO+0T,GAC7BrnO,GAAQ,IACjB,EACA,QATqC,gBAAoB,K,mBCEzD,SAAU9mG,GAEN,aACA,IAAI4+c,EAAK5+c,EAAO4+c,GAKZA,EAAK,EAAQ,OAIjB7vU,QAAQx0C,OAAO,OAAQ,IAElBklC,UAAU,OAAQ,CAAC,YAAa,SAASm0yB,GACtC,MAAO,CACHjmyB,SAAU,KACVnsG,MAAO,CACH5yB,KAAM,IACNnG,QAAS,IACTghsB,IAAK,KACLrnqB,OAAQ,KACRxqB,OAAQ,KACRk2H,QAAS,MAEb7L,KAAM,SAASzgG,EAAOriC,EAASyiI,GAC3B,IAAIiyyB,EAAgB,CAChBC,UAAU,EACVn23B,SAAS,EACTkJ,UAAU,EACVkt3B,iBAAiB,EACjBC,kBAAkB,EAClBC,eAAe,EACfC,mBAAoB,EACpBz91B,SAAU,GACV091B,mBAAmB,GAiRvB,SAASn23B,EAAU/b,EAAOx5B,EAAS2r6B,GAC3Bny4B,GAASx5B,GACTsmI,QAAQlkI,QAAQo3B,EAAO,SAASzjC,EAAO6E,GACpB,MAAXA,EAAI,KACS,aAARA,QACgBsM,IAAjBlH,EAAQpF,IAAuC,OAAjBoF,EAAQpF,IAClCm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQpF,GAAO,CAAC,GAEhDgx6B,EAAgB716B,EAAOiK,EAAQpF,KAElB,YAARA,QACgBsM,IAAjBlH,EAAQpF,IAAuC,OAAjBoF,EAAQpF,IAClCm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQpF,GAAO,CAAC,GAEhD26C,EAAU/b,EAAM5+B,GAAMoF,EAAQpF,GAAM+w6B,IAEvB,qBAAR/w6B,EACDoF,EAAQpF,IAAM4+B,EAAM5+B,GAAKoF,EAAQpF,KAejB,IAbf,CACD,OACA,kBACA,UACA,iBACA,uBACA,UACA,YACA,aACA,UACA,OACA,QACA,QACFjC,QAAQiC,UACWsM,IAAjBlH,EAAQpF,IAAuC,OAAjBoF,EAAQpF,GAClCm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQpF,GAAO7E,KAE1CyjC,EAAM5+B,GAAKoF,EAAQpF,KAEhC,EAER,CAIA,SAASgx6B,EAAgB9n0B,EAAU9jG,GAC3B8jG,GAAY9jG,GACZsmI,QAAQlkI,QAAQ0hG,EAAU,SAAS/tG,EAAO6E,QACjBsM,IAAjBlH,EAAQpF,IAAuC,OAAjBoF,EAAQpF,GAClCm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQpF,GAAO7E,EAAMglH,IAEhDjX,EAASiX,GAAGngH,EAAM,KAAMoF,EAAQpF,GACzC,EAER,CAIA,SAASix6B,EAAiBlo6B,GACtB,IAAIqO,EAAIm55B,EAAU5ud,WAgCtB,SAAwBvqc,GACpB,OAAQA,GACJ,IAAK,QAAS,MAAO,CACjBmsG,QAAQ,EACRj+E,KAAM,mBACNg6E,UAAW,KACX3gH,IAAK,CACDzC,MAAOiiC,EAAM/4B,QAAQw5B,MAAM1iC,MAAQ,KACnC4pC,UAAW,WAGnB,IAAK,WAAY,MAAO,CACpBy9E,QAAQ,EACRj+E,KAAM,sBACN3mC,IAAK,CACDzC,MAAOiiC,EAAM/4B,QAAQw5B,MAAM1iC,MAAQ,KACnC4pC,UAAW,WAGnB,IAAK,UAAW,MAAO,CACnBy9E,QAAQ,EACRj+E,KAAM,qCACN3mC,IAAK,CACDzC,MAAOiiC,EAAM/4B,QAAQw5B,MAAM1iC,MAAQ,KACnC4pC,UAAW,WAI3B,CA5DiCor4B,CAAeno6B,GAAOo1B,EAAM/4B,QAAQ2D,IAAS,CAAC,GAEvEo1B,EAAM+xC,QAAQug2B,WAAUty4B,EAAM/4B,QAAQ2D,GAAQqO,GAElD,IAAI+55B,EAAczlyB,QAAQ5vI,QAAQ,eAAe0C,KAAK4Y,EAAQ,MAAK,IAC9DqoG,SAAS12G,GAAM02G,SAASroG,EAAEkoG,WAC1Bu4J,WAAW,SACXl5Q,IAAIyY,EAAEzY,KAENyY,EAAQ,MAAG+55B,EAAY7r4B,KAAKluB,EAAEkuB,MAE/BluB,EAAEmsG,SACW,UAATx6G,EAAkBjN,EAAQ+9Q,QAAQs3pB,GACpB,aAATpo6B,EAAqB2iI,QAAQ5vI,QAAQA,EAAQ,GAAGiX,cAAc,WAAW4yE,MAAMwr1B,GACtE,YAATpo6B,GAAoBjN,EAAQiqI,OAAOoryB,GAEpD,CAmEA,SAASC,EAAYl2c,EAASm2c,GACtBn2c,IAAYm2c,IACPlz4B,EAAM+xC,QAAQ1sB,WACfrlB,EAAM+xC,QAAQwg2B,gBAAkBvy4B,EAAMioqB,IAAIx6rB,SAAWuyB,EAAMioqB,IAAIrhb,WAG3E,CAhaA5mP,EAAMmz4B,SAAU,EAGhBnz4B,EAAM+xC,QAAUw7D,QAAQlzB,OAAOg4zB,EAAery4B,EAAM5pB,QAGpD4pB,EAAMioqB,IAAM,CAERrhb,QAAS,WACL5mP,EAAMioqB,IAAImrO,oBACVpz4B,EAAMmz4B,SAAU,CACpB,EAGAE,mBAAoB,SAASp75B,GACzB6G,WAAW,WACPkhB,EAAMioqB,IAAIrhb,SACd,EAAG3uQ,EACP,EAGAxK,OAAQ,WACAuyB,EAAMS,OAAST,EAAM0kb,IACY,kBAA7B1kb,EAAM/4B,QAAQw5B,MAAMpZ,KACpB2Y,EAAM0kb,IAAIsF,MAAMz8U,QAAQ5kC,KAAK3oE,EAAM5yB,OAAOsK,KAAKsoB,EAAMS,OAErDT,EAAM0kb,IAAIsF,MAAMhqb,EAAM5yB,MAAMsK,KAAKsoB,EAAMS,OAG3CT,EAAMioqB,IAAIrhb,SAElB,EAGA0spB,kBAAmB,SAASr75B,GACxB6G,WAAW,WACPkhB,EAAMioqB,IAAIx6rB,QACd,EAAGwK,EACP,EAGAm75B,kBAAmB,SAASns6B,GAExB,GAAKuE,UAAUC,QAMX,GAHAu0B,EAAM/4B,QAAUA,EAGZ+4B,EAAM+xC,QAAQyg2B,mBAAqBxy4B,EAAM+xC,QAAQ1sB,SAAU,YAL/Dp+C,EAAU+4B,EAAM/4B,QA8S5B,IACQgS,EAtSA+mB,EAAMioqB,IAAIsrO,gBAGyB,IAA/BhmyB,QAAQ9yB,UAAUxzG,IAGjB+4B,EAAM+xC,QAAQ51B,UAGnBnc,EAAMS,MAAQ28a,EAAG1oG,OAAOztW,EAAQw5B,MAAMpZ,QAGtC2Y,EAAMS,MAAMrrB,GAAKvY,KAAKm+F,SAAS38F,SAAS,IAAImrH,OAAO,EAAG,IAEtD+jB,QAAQlkI,QAAQ22B,EAAMS,MAAO,SAASzjC,EAAO6E,GAC1B,MAAXA,EAAI,IACC,CACD,kBACA,iBACA,KACA,UACA,gBACA,QACA,OACA,QACA,kBACFjC,QAAQiC,IAAQ,IAEL,aAARA,QACsBsM,IAAvBlH,EAAQw5B,MAAM5+B,IAA6C,OAAvBoF,EAAQw5B,MAAM5+B,IAC9Cm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQw5B,MAAM5+B,GAAO,CAAC,GAEtDgx6B,EAAgB7y4B,EAAMS,MAAM5+B,GAAMoF,EAAQw5B,MAAM5+B,KAG3C,CACD,OACA,QACA,QACA,UACA,SACA,WACA,cACA,QACA,QACA,QACA,mBACA,SACA,QACA,SACA,SACA,WACA,MACA,UACA,YACA,YACA,YACA,SACA,SACA,WACA,UACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,UACFjC,QAAQiC,IAAQ,GAET,YAARA,GAA4C,qBAAvBoF,EAAQw5B,MAAMpZ,WACTlZ,IAAvBlH,EAAQw5B,MAAM5+B,IAA6C,OAAvBoF,EAAQw5B,MAAM5+B,IAC9Cm+B,EAAM+xC,QAAQug2B,WAAUrr6B,EAAQw5B,MAAM5+B,GAAO,CAAC,GAEtD26C,EAAUxc,EAAMS,MAAM5+B,GAAMoF,EAAQw5B,MAAM5+B,GAAMoF,EAAQw5B,MAAMpZ,OAIhD,gBAARxlB,GAAiD,cAAvBoF,EAAQw5B,MAAMpZ,MAChC,gBAARxlB,GAAiD,uBAAvBoF,EAAQw5B,MAAMpZ,OAChC,gBAARxlB,GAAiC,gBAARA,GAAiD,uBAAvBoF,EAAQw5B,MAAMpZ,QACzD,aAARxlB,GAA8C,iBAAvBoF,EAAQw5B,MAAMpZ,OAC7B,oBAARxlB,GAAqC,oBAARA,GAAqD,iBAAvBoF,EAAQw5B,MAAMpZ,QACjE,MAARxlB,GAAuB,MAARA,GAAuC,uBAAvBoF,EAAQw5B,MAAMpZ,aAEvBlZ,IAAvBlH,EAAQw5B,MAAM5+B,IAA6C,OAAvBoF,EAAQw5B,MAAM5+B,GACnDm+B,EAAM+xC,QAAQug2B,WAEVrr6B,EAAQw5B,MAAM5+B,GADR,aAANA,EACqB7E,MAEAA,KAI5BgjC,EAAMS,MAAM5+B,GAAKoF,EAAQw5B,MAAM5+B,MACxC,GAGAm+B,EAAMioqB,IAAIurO,kBAGNvs6B,EAAe,OAAK+4B,EAAM+xC,QAAQug2B,WAAUQ,EAAiB,UAC7D7r6B,EAAkB,UAAK+4B,EAAM+xC,QAAQug2B,WAAUQ,EAAiB,aAChE7r6B,EAAiB,SAAK+4B,EAAM+xC,QAAQug2B,WAAUQ,EAAiB,YAI/D7r6B,EAAgB,QAAK+4B,EAAM+xC,QAAQug2B,YAyLvCr55B,EAAIm55B,EAAU5ud,WA4CX,CACH9+V,QAAS,CACL,kBAAkB,EAClB,oBAAoB,EACpB,SAAW,GAEflkH,IAAK,CAAC,GAlDoCw/B,EAAM/4B,QAAgB,QAAK,CAAC,GAEtE+4B,EAAM+xC,QAAQug2B,WAAUty4B,EAAM/4B,QAAgB,OAAIgS,GAEtDs0H,QAAQlkI,QAAQ4P,EAAEyrG,QAAS,SAAS1nH,EAAO6E,GACvC7E,EAAQW,EAAQ2jH,SAASz/G,GAAOlE,EAAQojH,YAAYl/G,EACxD,GAEAlE,EAAQ+7Q,WAAW,SAASl5Q,IAAIyY,EAAEzY,MA/L9B48c,EAAGa,SAAS,WACR,GAAKj+a,EAAMS,MAuBX,OApBIT,EAAMS,MAAMgz4B,eAAezz4B,EAAMS,MAAMgz4B,cAAcrh2B,QAGzDpyC,EAAMS,MAAMgz4B,cAAgBr2d,EAAG/wW,MAAMk2W,aAAa,WAC9Cvib,EAAMS,OAAST,EAAMS,MAAMhzB,QAAUuyB,EAAMS,MAAMhzB,QACrD,QAG2BU,IAAvBlH,EAAQw5B,MAAMmrJ,MAAsB,CAChC,eACA,YACA,sBACA,sBACA,qBACA,eACA,oBACFhsL,QAAQqH,EAAQw5B,MAAMpZ,OAAS,GACjC+q5B,EAAUxmvB,KAAK5rJ,EAAO/4B,GAGnB+4B,EAAMS,KACjB,EAAGx5B,EAAQw5B,MAAgB,UAC/B,EAGA+y4B,eAAgB,SAAUpm6B,GAEtB,GAAK5B,UAAUC,QAUX,GAHAu0B,EAAM5yB,KAAOA,EAGT4yB,EAAM+xC,QAAQ0g2B,gBAAkBzy4B,EAAM+xC,QAAQ1sB,SAAU,YARxDj4C,EAD6B,kBAA7B4yB,EAAM/4B,QAAQw5B,MAAMpZ,KACbkmH,QAAQ5kC,KAAK3oE,EAAM5yB,MAEnB4yB,EAAM5yB,KAajB,IAAI1S,EAAGu2B,EAJP7jB,IAEAkwc,GAAGh2I,OAAO3pU,EAAQ,IAAI2pU,OAAO,OAAOrtR,SAKpCja,EAAM0kb,IAAMpH,GAAGh2I,OAAO3pU,EAAQ,IAAI6qG,OAAO,MAAO,aAC5C9tG,EAAIslC,EAAM/4B,QAAQw5B,MAAMxiC,UACnBb,OAAO1C,KAAIA,GAAK,MACrBslC,EAAM0kb,IAAI91M,KAAK,SAAUl0Q,GAAGqmC,MAAM,CAAC9iC,OAAQvD,MAE3Cu2B,EAAI+O,EAAM/4B,QAAQw5B,MAAM1iC,QACnBX,OAAO6zB,KAAIA,GAAK,MACrB+O,EAAM0kb,IAAI91M,KAAK,QAAS39O,GAAG8P,MAAM,CAAChjC,MAAOkzB,KAEzC+O,EAAM0kb,IAAI91M,KAAK,QAAS,QAAQ7tO,MAAM,CAAChjC,MAAO,SAGlDiiC,EAAM0kb,IAAIsF,MAAM58c,GAAMsK,KAAKsoB,EAAMS,OAG7BT,EAAMS,OAAST,EAAMS,MAAMiz4B,YAAY1z4B,EAAMS,MAAMiz4B,aAE/D,EAGAH,aAAc,WAYV,GAXA516B,EAAQuU,KAAK,UAAU+nC,SACvBt8C,EAAQuU,KAAK,aAAa+nC,SAC1Bt8C,EAAQuU,KAAK,YAAY+nC,SACzBt8C,EAAQuzQ,QAGJlxO,EAAMS,OAAST,EAAMS,MAAMitB,SAAW1tB,EAAMS,MAAMitB,QAAQt4C,IAC1Dkoc,GAAGh2I,OAAO,IAAMtnS,EAAMS,MAAMitB,QAAQt4C,MAAM6kC,SAI1Cmja,EAAGu2d,QAAU3z4B,EAAMS,MACnB,IAAK,IAAI/jC,EAAI0gd,EAAGu2d,OAAOlo6B,OAAS,EAAG/O,GAAK,EAAGA,IACnC0gd,EAAGu2d,OAAOj36B,IAAO0gd,EAAGu2d,OAAOj36B,GAAG0Y,KAAO4qB,EAAMS,MAAMrrB,IACjDgoc,EAAGu2d,OAAOvv4B,OAAO1nC,EAAG,GAI5B0gd,EAAG1vZ,SAAW0vZ,EAAG1vZ,QAAQynV,SACzBioE,EAAG1vZ,QAAQynV,UAEXn1W,EAAMS,OAAST,EAAMS,MAAMgz4B,eAAezz4B,EAAMS,MAAMgz4B,cAAcrh2B,QACxEpyC,EAAMS,MAAQ,IAClB,EAGAkO,SAAU,WAAY,OAAO3O,CAAO,EAGpCwuC,WAAY,WAAY,OAAO7wE,CAAS,GA0IxCqiC,EAAM+xC,QAAQyg2B,kBACdxy4B,EAAMw6M,OAAO,UAAW43rB,EAAUn91B,SAAS,SAASp4B,GAC3C7c,EAAM+xC,QAAQ1sB,UAAUrlB,EAAMioqB,IAAIrhb,SAC3C,EAAG5mP,EAAM+xC,QAAQkD,SAAUj1C,EAAM+xC,QAAQ4g2B,oBAAoB,GAW7D3y4B,EAAM+xC,QAAQ0g2B,gBAC2B,IAArCzy4B,EAAM+xC,QAAQ2g2B,mBACd1y4B,EAAMg6P,iBAAiB,OAAQi5oB,GAE/Bjz4B,EAAMw6M,OAAO,OAAQy4rB,EAAkD,IAArCjz4B,EAAM+xC,QAAQ2g2B,qBAKxD1y4B,EAAMw6M,OAAO,SAAU,SAASo5rB,EAAWC,GACnCD,IAAcC,IACd7z4B,EAAM+xC,QAAUw7D,QAAQlzB,OAAOg4zB,EAAeuB,GAC9C5z4B,EAAMioqB,IAAIrhb,UAElB,GAAG,GAGE5mP,EAAM+xC,QAAQyg2B,kBAAqBxy4B,EAAM+xC,QAAQ0g2B,eAClDzy4B,EAAMioqB,IAAIrhb,UAIdr5I,QAAQlkI,QAAQ22B,EAAMY,OAAQ,SAASu5O,EAAc32P,GACjDwc,EAAM69F,IAAIr6G,EAAO,SAASnnB,EAAGqP,GACzB,OAAOyuQ,EAAa99Q,EAAG2jC,EAAOt0B,EAClC,EACJ,GAGA/N,EAAQqkH,GAAG,WAAY,WACnBhiF,EAAMioqB,IAAIsrO,cACd,GAGAvz4B,EAAMw6M,OAAO,UAAW,SAAS24rB,GACzBA,GACInz4B,EAAMssG,SAAsC,mBAApBtsG,EAAMssG,WAA0BtsG,EAAMssG,SAANtsG,CAAgBA,EAAOriC,EAE3F,EACJ,EAER,IAEC/B,QAAQ,YAAa,WAClB,MAAO,CACHq5E,SAAU,SAAS82B,EAAMxwD,EAAMs+K,GAC3B,IAAI7kJ,EACJ,OAAO,WACH,IAAIx0C,EAAUnpB,KAAM3L,EAAOF,UAKvBso6B,EAAUj6sB,IAAc7kJ,EAC5Bh2D,aAAag2D,GACbA,EAAUl2D,WANE,WACRk2D,EAAU,KACL6kJ,GAAW9tH,EAAK5zF,MAAMqoB,EAAS90B,EACxC,EAG4B6vC,GACxBu43B,GAAS/n0B,EAAK5zF,MAAMqoB,EAAS90B,EACrC,CACJ,EACA83c,WAAY,SAASp7T,GACjB,IAAIy6N,EAAKxrW,KAYT,OAXAk2H,QAAQlkI,QAAQmC,UAAW,SAASme,GAC5BA,IAAQy+H,GACR7a,QAAQlkI,QAAQsgB,EAAK,SAAS3sB,EAAO6E,GAC7BumJ,EAAIvmJ,IAAQumJ,EAAIvmJ,GAAKiW,aAAeswI,EAAIvmJ,GAAKiW,cAAgB3W,OAC7D0hX,EAAG2gG,WAAWp7T,EAAIvmJ,GAAM7E,GAExBorJ,EAAIvmJ,GAAO7E,CAEnB,EAER,GACOorJ,CACX,EACAwjC,KAAM,SAAS5rJ,EAAO/4B,GAClB,IAAI2kL,EAAO3kL,EAAQw5B,MAAMmrJ,KAIzB,QADuC,IAAjBA,EAAKv+K,SAA4C,OAAjBu+K,EAAKv+K,SAA2Bu+K,EAAKv+K,QAC3F,CAEA,IAkBM0m6B,EACAC,EACAn7b,EACAo7b,EACA/4E,EAtBFp5yB,EAAS9hB,EAAMS,MAAMgpb,MAAMxnb,QACzB+f,EAAShiB,EAAMS,MAAMipb,MAAMznb,QAC3Bilb,EAAUlnb,EAAMS,MAAMymb,SAAWpla,EAAOk+C,OACxConX,EAAUpnb,EAAMS,MAAM2mb,SAAWpla,EAAOg+C,OACxCk00B,EAAapy3B,EAAOk+C,SAAS7tF,QAC7Bgi6B,EAAany3B,EAAOg+C,SAAS7tF,QAG7B8vB,EAAQ2pJ,EAAK3pJ,OAAS,EACtBqD,EAAYsmJ,EAAKtmJ,WAAa,CAAC,EAAG,GAClCwyc,EAAclsT,EAAKksT,aAAe,CAAC,EAAG,IACtCs8b,EAAiBxovB,EAAKwovB,iBAAkB,EACxCC,EAAezovB,EAAKyovB,eAAgB,EACpCC,EAAgB1ovB,EAAK0ovB,gBAAiB,EACtCC,EAAc3ovB,EAAK2ovB,cAAe,EAClCC,EAAkB5ovB,EAAK4ovB,iBAAmB,gBAW5CH,IACAvy3B,EAAO8/c,OACP5/c,EAAO4/c,QAIXmya,EAAY,SAAU/z0B,EAAQ34F,GAG1B,OAFA24F,EAAO,GAAKnjG,KAAKkE,IAAIlE,KAAKmE,IAAIg/F,EAAO,GAAI34F,EAAS,IAAKA,EAAS,GAAKA,EAAS,GAAKywe,EAAY,IAC/F93Y,EAAO,GAAKnjG,KAAKmE,IAAIqG,EAAS,GAAKA,EAAS,GAAKywe,EAAY,GAAIj7e,KAAKkE,IAAIi/F,EAAO,GAAI34F,EAAS,KACvF24F,CACX,EAGA64Y,EAAS,WACL,QAAoB1qe,IAAhBy9K,EAAKitT,OAAsB,CAC3B,IAAI47b,EAAU7ovB,EAAKitT,OAAO/2b,EAAOk+C,SAAUh+C,EAAOg+C,UAC7Cs00B,GAAeptd,EAAQ,CAACutd,EAAQjq2B,GAAIiq2B,EAAQ/p2B,KAC5C6p2B,GAAantd,EAAQ,CAACqtd,EAAQhq2B,GAAIgq2B,EAAQ9p2B,IACnD,MACS2p2B,GAAeptd,EAAQktd,EAAiBL,EAAUjy3B,EAAOk+C,SAAUk00B,GAAcpy3B,EAAOk+C,UACxFu00B,GAAantd,EAAQgtd,EAAiBL,EAAU/x3B,EAAOg+C,SAAUm00B,GAAcny3B,EAAOg+C,UAE3FhgE,EAAMS,OAAOT,EAAMS,MAAMhzB,QACjC,EAGAwm6B,EAAW,WACP,QAAsB9l6B,IAAlBy9K,EAAKqovB,SAAwB,CAC7B,IAAIQ,EAAU7ovB,EAAKqovB,SAASny3B,EAAOk+C,SAAUh+C,EAAOg+C,UAC/Cs00B,GAAeptd,EAAQ,CAACutd,EAAQjq2B,GAAIiq2B,EAAQ/p2B,KAC5C6p2B,GAAantd,EAAQ,CAACqtd,EAAQhq2B,GAAIgq2B,EAAQ9p2B,IACnD,MACS2p2B,GAAeptd,EAAQgtd,GACvBK,GAAantd,EAAQ+sd,GAE9BH,EAAO/x4B,MAAMA,GAAOqD,UAAUA,GAC1BtF,EAAMS,OAAOT,EAAMS,MAAMhzB,QACjC,EAGAyt1B,EAAU,gBACe/s1B,IAAjBy9K,EAAKsvqB,SACLtvqB,EAAKsvqB,SAEb,EAGA84E,EAAS12d,GAAG/hP,SAAS3vC,OAChBhuL,EAAEkkD,GACF9mD,EAAEgnD,GACF81b,YAAYA,GACZ91X,GAAG,OAAQ62X,GACX72X,GAAG,UAAWk5uB,GAEfl7zB,EAAM0kb,MACN1kb,EAAM0kb,IAAIhtc,KAAKs85B,GAEfA,EAAO/x4B,MAAMA,GAAOqD,UAAUA,GAAW9hB,MAAMwc,EAAM0kb,KAE7B,SAApB8vd,GAA4Bx04B,EAAM0kb,IAAI1iW,GAAGwyzB,EAAiBP,IAG9Dj04B,EAAMS,QACNT,EAAMS,MAAMiz4B,WAAa,WAErBM,EAAO/x4B,MAAMA,GAAOqD,UAAUA,GAG9Bwc,EAAS9hB,EAAMS,MAAMgpb,MAAMxnb,QAC3B+f,EAAShiB,EAAMS,MAAMipb,MAAMznb,QAC3Bilb,EAAUlnb,EAAMS,MAAMymb,SAAWpla,EAAOk+C,OACxConX,EAAUpnb,EAAMS,MAAM2mb,SAAWpla,EAAOg+C,OACxCk00B,EAAapy3B,EAAOk+C,SAAS7tF,QAC7Bgi6B,EAAany3B,EAAOg+C,SAAS7tF,QAG7B6h6B,EAAOp26B,EAAEkkD,GAAQ9mD,EAAEgnD,GAEnBhiB,EAAM0kb,IAAIhtc,KAAKs85B,GAES,SAApBQ,GAA4Bx04B,EAAM0kb,IAAI1iW,GAAGwyzB,EAAiBP,EAClE,EA7GgB,CA8GxB,EAER,EACP,CAxoBD,CAwoBGz16B,O,+BC3oBH2C,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIoE,EAAS,EAAQ,OACjBsz6B,EAAY,EAAQ,OACpB/q6B,EAAO,EAAQ,OACfgr6B,EAA6B,WAC7B,SAASA,IACLt95B,KAAKu95B,iBAAkB,EACvBv95B,KAAKrQ,MAAQ,CAAC,EACdqQ,KAAKoyB,MAAQ,CAAC,CAClB,CAqDA,OA7CAkr4B,EAAYl95B,UAAU4+Q,WAAa,SAAU7+M,GACzC,IAAI++d,EAAWl/hB,KAAKoyB,MAEhB+sgB,EAAWk+X,EAAUl91B,EAAS,gBAE9B0yQ,EAAY9oV,EAAO,CAAC,EAAGiW,KAAKoyB,MAAO+sgB,GACvC,GAAIn/hB,KAAKu95B,gBACLxz6B,EAAOiW,KAAM,CAAEoyB,MAAOygT,IACtB7yU,KAAK8ub,qBACL9ub,KAAKq+D,SACLr+D,KAAKu95B,iBAAkB,MAEtB,CACD,IAAKv95B,KAAKw95B,eAAer+X,EAAUD,GAC/B,OACJl/hB,KAAK2ub,0BAA0B97G,GAC/B,IAAIkmC,EAAe/4W,KAAKozU,sBAAsBP,EAAW7yU,KAAKrQ,OAE9D,GADA5F,EAAOiW,KAAM,CAAEoyB,MAAOygT,KACjBkmC,EACD,OACJ/4W,KAAK4zb,oBAAoB5zb,KAAKoyB,MAAOpyB,KAAKrQ,OAC1CqQ,KAAKq+D,SACLr+D,KAAKqzU,mBAAmBrzU,KAAKoyB,MAAOpyB,KAAKrQ,MAC7C,CACJ,EACA2t6B,EAAYl95B,UAAUk/Q,UAAY,WAC9Bt/Q,KAAK0yU,mBACT,EACA4qlB,EAAYl95B,UAAUg/Q,WAAa,WAC/Bp/Q,KAAKuzU,sBACT,EACA+plB,EAAYl95B,UAAUo95B,eAAiB,SAAUr+X,EAAUD,GACvD,OAAO5siB,EAAK6siB,EAAU,SAAUh9hB,EAAGsP,GAAK,OAAOtP,IAAM+8hB,EAASzthB,EAAI,EACtE,EAIA6r5B,EAAYl95B,UAAU0ub,mBAAqB,WAAc,EACzDwue,EAAYl95B,UAAUsyU,kBAAoB,WAAc,EACxD4qlB,EAAYl95B,UAAUuub,0BAA4B,SAAU5mE,GAAU,EACtEu1iB,EAAYl95B,UAAUgzU,sBAAwB,SAAUqqlB,EAAYC,GAAc,OAAO,CAAM,EAC/FJ,EAAYl95B,UAAUwzb,oBAAsB,SAAU7rE,EAAQpjR,GAAU,EACxE24zB,EAAYl95B,UAAUizU,mBAAqB,SAAU00C,EAAQpjR,GAAU,EACvE24zB,EAAYl95B,UAAUmzU,qBAAuB,WAAc,EAC3D+plB,EAAYl95B,UAAUi+D,OAAS,WAAc,EACtCi/1B,CACX,CA3DgC,GA4DhC746B,EAAA,QAAkB646B,C,+BChElB,IAAI903B,EAAS,EAAQ,OACjB34B,EAAM,EAAQ,OAEdxlB,EAAOm+C,EAAO,QAElBk5C,EAAOj9F,QAAU,SAAU+F,GACzB,OAAOH,EAAKG,KAASH,EAAKG,GAAOqlB,EAAIrlB,GACvC,C,+BCPAV,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAGtD,IAAIg8G,EAAW,EAAQ,OACnB69N,EAAmB,EAAQ,OAC3BzpN,EAAQ,EAAQ,OACpBtxH,EAAQk56B,sBAAwB,IAUhC,IAAIC,EAAmB,SAAUjrmB,GAC7B,OAAO,IAAI6M,EAAiBmB,eAAehO,EAAMn8F,cAAc5xM,IAC1D8/E,YAAY,QAASiuN,GACrB97T,KAAK8qG,EAAS/xF,KACvB,EACAnrB,EAAQo56B,yBAA2B,SAAUr4qB,GACzC,OAAOA,EAAkB/+H,QAAQ,CAAC,EAAGm3yB,EAAkB,CAAEtp0B,SAAU7vG,EAAQk56B,uBAC/E,EAUA,IAAIG,EAAmB,SAAUnrmB,EAAOhjU,GACpC,OAAO,IAAI6vU,EAAiBmB,eAAehO,EAAMn8F,cAAc5xM,IAC1Dm54B,WAAWpu6B,EAAM0nH,WACjB3S,YAAY,OAAQiuN,GACpB97T,KAAK8qG,EAAS/xF,KACvB,EACAnrB,EAAQu56B,yBAA2B,SAAUx4qB,GACzC,OAAOA,EAAkB3mB,QAAQ,CAAEjI,SAAU7gH,EAAMpuF,KAAI,IAASm24B,EAAkB,CAAExp0B,SAAU7vG,EAAQk56B,uBAC1G,EAWA,IAAIM,EAAmB,SAAUtrmB,GAC7B,OAAO,IAAI6M,EAAiBmB,eAAehO,EAAMn8F,cAAc5xM,IAC1D8/E,YAAY,OAAQiuN,GACpB97T,KAAK8qG,EAAS/xF,KACvB,EACAnrB,EAAQy56B,yBAA2B,SAAU14qB,GACzC,OAAOA,EAAkB+9K,SAAS,CAAC,EAAG06f,EAAkB,CAAE3p0B,SAAU7vG,EAAQk56B,uBAChF,C,0ECxCe,SAASQ,EAAS/4zB,IAC/B,OAAa,EAAGjxG,WAChB,IAAImtC,GAAO,OAAO8jE,GAElB,OADA9jE,EAAKowG,SAAS,GAAI,GAAI,GAAI,KACnBpwG,CACT,C,0ECFA,QAZA,SAAiBgK,EAAQu9B,GAMvB,IAHA,IAAIryE,EAAQ,EACRpC,GAHJy0E,GAAO,OAASA,EAAMv9B,IAGJl3C,OAED,MAAVk3C,GAAkB90C,EAAQpC,GAC/Bk3C,EAASA,GAAO,OAAMu9B,EAAKryE,OAE7B,OAAQA,GAASA,GAASpC,EAAUk3C,OAASx0C,CAC/C,C,2ICJIlL,EAHc9B,OAAOsW,UAGQxU,eA2DjC,QAxBA,SAAiBjG,GACf,GAAa,MAATA,EACF,OAAO,EAET,IAAI,OAAYA,MACX,OAAQA,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMonC,SAC1D,OAASpnC,KAAU,OAAaA,KAAU,OAAYA,IAC1D,OAAQA,EAAMyO,OAEhB,IAAI4tF,GAAM,OAAOr8F,GACjB,GApDW,gBAoDPq8F,GAnDO,gBAmDUA,EACnB,OAAQr8F,EAAMotB,KAEhB,IAAI,OAAYptB,GACd,QAAQ,OAASA,GAAOyO,OAE1B,IAAK,IAAI5J,KAAO7E,EACd,GAAIiG,EAAeyU,KAAK1a,EAAO6E,GAC7B,OAAO,EAGX,OAAO,CACT,C,yBC9BAk3F,EAAOj9F,QAPP,SAAmBkB,GAClB,OAA0B,iBAAVA,GAAkE,oBAA5CmE,OAAOsW,UAAUpZ,SAASqZ,KAAM1a,KAAmCA,EAAMgxN,WAAchxN,EAAMgxN,SACpI,C,qCCtCA,IACQ72M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAyogB,EAAiB,EAAQ,OAMzBnH,EAAuC,SAAU99f,GAOjD,SAAS89f,EAAsB51S,EAASg9S,GACpC,IAAIhlgB,EAAQF,EAAO3D,KAAKL,KAAMkpgB,EAAanrgB,GAAImuN,EAASg9S,IAAiBlpgB,KAQzE,OAPAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bw6W,WAAY,CACRhzV,YAAY,EACZ/lC,MAAO,KACP8lC,UAAU,KAGXvnB,CACX,CAeA,OA/BAnE,EAAU+hgB,EAAuB99f,GAuBjC89f,EAAsB1hgB,UAAUtY,KAAO,SAAUokO,EAASgnC,GACtD,IAAID,EAAajzP,KAAK2+W,UACtB3+W,KAAK2+W,UAAYzrH,EACjBlzP,KAAKksN,QAAUA,EACf,IAAIjjN,EAASgggB,EAAej2Q,GAAG9mC,EAAS+mC,EAAYC,GAEpD,OADAlzP,KAAK0+W,WAAaz1W,EACXA,CACX,EACO64f,CACX,CAjC0C,CALN,EAAQ,QAuC5Cpgb,EAAOj9F,QAAUq9gB,C,yBCnDjB,SAASs8Z,EAAOro6B,EAAMso6B,EAAax2c,GAE/BA,EAAMA,GAAO,EAEb,IAOIzva,EAAMC,EAAMH,EAAMC,EAAM5xD,EAAG5C,EAAG266B,EAP9BC,EAAWF,GAAeA,EAAYjq6B,OACtCoq6B,EAAWD,EAAWF,EAAY,GAAKx2c,EAAM9xd,EAAK3B,OAClDqq6B,EAAYC,EAAW3o6B,EAAM,EAAGyo6B,EAAU32c,GAAK,GAC/C3xQ,EAAY,GAEhB,IAAKuotB,GAAaA,EAAU326B,OAAS226B,EAAU5j4B,KAAM,OAAOq7K,EAO5D,GAHIqotB,IAAUE,EAqPlB,SAAwB1o6B,EAAMso6B,EAAaI,EAAW52c,GAClD,IACIxie,EAAGoK,EAAiB7B,EADpBgvH,EAAQ,GAGZ,IAAKv3H,EAAI,EAAGoK,EAAM4u6B,EAAYjq6B,OAAQ/O,EAAIoK,EAAKpK,KAG3CuI,EAAO8w6B,EAAW3o6B,EAFVso6B,EAAYh56B,GAAKwie,EACnBxie,EAAIoK,EAAM,EAAI4u6B,EAAYh56B,EAAI,GAAKwie,EAAM9xd,EAAK3B,OAChByzd,GAAK,MAC5Bj6d,EAAK9F,OAAM8F,EAAK+w6B,SAAU,GACvC/hzB,EAAM9oH,KAAK8q6B,EAAYhx6B,IAM3B,IAHAgvH,EAAMxpH,KAAKwoyB,GAGNv2yB,EAAI,EAAGA,EAAIu3H,EAAMxoH,OAAQ/O,IAC1Bw56B,EAAcjizB,EAAMv3H,GAAIo56B,GACxBA,EAAYK,EAAaL,EAAWA,EAAU326B,MAGlD,OAAO226B,CACX,CA1Q8BM,CAAehp6B,EAAMso6B,EAAaI,EAAW52c,IAGnE9xd,EAAK3B,OAAS,GAAKyzd,EAAK,CACxBzva,EAAOF,EAAOniD,EAAK,GACnBsiD,EAAOF,EAAOpiD,EAAK,GAEnB,IAAK,IAAI1Q,EAAIwie,EAAKxie,EAAIm56B,EAAUn56B,GAAKwie,GACjCthe,EAAIwP,EAAK1Q,IAED+yD,IAAMA,EAAO7xD,IADrB5C,EAAIoS,EAAK1Q,EAAI,IAELgzD,IAAMA,EAAO10D,GACjB4C,EAAI2xD,IAAMA,EAAO3xD,GACjB5C,EAAIw0D,IAAMA,EAAOx0D,GAKzB266B,EAAsB,KADtBA,EAAU946B,KAAKmE,IAAIuuD,EAAOE,EAAMD,EAAOE,IACb,EAAIim3B,EAAU,CAC5C,CAIA,OAFAU,EAAaP,EAAWvotB,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,GAE7CpotB,CACX,CAGA,SAASwotB,EAAW3o6B,EAAMtJ,EAAOC,EAAKm7d,EAAKlgD,GACvC,IAAItib,EAAG6uD,EAEP,GAAIyzX,IAAeqxW,EAAWjjxB,EAAMtJ,EAAOC,EAAKm7d,GAAO,EACnD,IAAKxie,EAAIoH,EAAOpH,EAAIqH,EAAKrH,GAAKwie,EAAK3za,EAAO+q3B,EAAW556B,EAAG0Q,EAAK1Q,GAAI0Q,EAAK1Q,EAAI,GAAI6uD,QAE9E,IAAK7uD,EAAIqH,EAAMm7d,EAAKxie,GAAKoH,EAAOpH,GAAKwie,EAAK3za,EAAO+q3B,EAAW556B,EAAG0Q,EAAK1Q,GAAI0Q,EAAK1Q,EAAI,GAAI6uD,GAQzF,OALIA,GAAQ6zK,EAAO7zK,EAAMA,EAAKpsD,QAC1BmkN,EAAW/3J,GACXA,EAAOA,EAAKpsD,MAGTosD,CACX,CAGA,SAAS4q3B,EAAary6B,EAAOC,GACzB,IAAKD,EAAO,OAAOA,EACdC,IAAKA,EAAMD,GAEhB,IACIyy6B,EADA/+5B,EAAI1T,EAER,GAGI,GAFAyy6B,GAAQ,EAEH/+5B,EAAEw+5B,UAAY52sB,EAAO5nN,EAAGA,EAAErY,OAAqC,IAA5BgnC,EAAK3uB,EAAE06B,KAAM16B,EAAGA,EAAErY,MAOtDqY,EAAIA,EAAErY,SAP8D,CAGpE,GAFAmkN,EAAW9rM,IACXA,EAAIzT,EAAMyT,EAAE06B,QACF16B,EAAErY,KAAM,MAClBo36B,GAAQ,CAEZ,QAGKA,GAAS/+5B,IAAMzT,GAExB,OAAOA,CACX,CAGA,SAASsy6B,EAAaG,EAAKjptB,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,EAASxhwB,GAC5D,GAAKqiwB,EAAL,EAGKriwB,GAAQwhwB,GAqRjB,SAAoB7x6B,EAAO2rD,EAAMC,EAAMim3B,GACnC,IAAIn+5B,EAAI1T,EACR,GACgB,OAAR0T,EAAE2hD,IAAY3hD,EAAE2hD,EAAIs92B,EAAOj/5B,EAAE5Z,EAAG4Z,EAAExc,EAAGy0D,EAAMC,EAAMim3B,IACrDn+5B,EAAEk/5B,MAAQl/5B,EAAE06B,KACZ16B,EAAEm/5B,MAAQn/5B,EAAErY,KACZqY,EAAIA,EAAErY,WACDqY,IAAM1T,GAEf0T,EAAEk/5B,MAAMC,MAAQ,KAChBn/5B,EAAEk/5B,MAAQ,KAOd,SAAoBzx6B,GAChB,IAAIvI,EAAG8a,EAAG0pF,EAAG7kG,EAAG0vO,EAAM6qsB,EAAWC,EAAOC,EACpCC,EAAS,EAEb,EAAG,CAMC,IALAv/5B,EAAIvS,EACJA,EAAO,KACP8mO,EAAO,KACP6qsB,EAAY,EAELp/5B,GAAG,CAIN,IAHAo/5B,IACA110B,EAAI1pF,EACJq/5B,EAAQ,EACHn66B,EAAI,EAAGA,EAAIq66B,IACZF,IACA310B,EAAIA,EAAEy10B,OAFcj66B,KAOxB,IAFAo66B,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAK510B,GAEhB,IAAV210B,IAA0B,IAAVC,IAAgB510B,GAAK1pF,EAAE2hD,GAAK+nC,EAAE/nC,IAC9C98D,EAAImb,EACJA,EAAIA,EAAEm/5B,MACNE,MAEAx66B,EAAI6kG,EACJA,EAAIA,EAAEy10B,MACNG,KAGA/qsB,EAAMA,EAAK4qsB,MAAQt66B,EAClB4I,EAAO5I,EAEZA,EAAEq66B,MAAQ3qsB,EACVA,EAAO1vO,EAGXmb,EAAI0pF,CACR,CAEA6qI,EAAK4qsB,MAAQ,KACbI,GAAU,CAEd,OAASH,EAAY,EAGzB,CAtDII,CAAWx/5B,EACf,CAlS0By/5B,CAAWT,EAAK/m3B,EAAMC,EAAMim3B,GAMlD,IAJA,IACIzj4B,EAAM/yC,EADN4d,EAAOy55B,EAIJA,EAAItk4B,OAASsk4B,EAAIr36B,MAIpB,GAHA+yC,EAAOsk4B,EAAItk4B,KACX/yC,EAAOq36B,EAAIr36B,KAEPw26B,EAAUuB,EAAYV,EAAK/m3B,EAAMC,EAAMim3B,GAAWwB,EAAMX,GAExDjptB,EAAUpiN,KAAK+mC,EAAKx1C,EAAIwie,GACxB3xQ,EAAUpiN,KAAKqr6B,EAAI956B,EAAIwie,GACvB3xQ,EAAUpiN,KAAKhM,EAAKzC,EAAIwie,GAExB57Q,EAAWkztB,GAGXA,EAAMr36B,EAAKA,KACX4d,EAAO5d,EAAKA,UAQhB,IAHAq36B,EAAMr36B,KAGM4d,EAAM,CAETo3J,EAIe,IAATA,EAEPkiwB,EADAG,EAAMY,EAAuBjB,EAAaK,GAAMjptB,EAAW2xQ,GACzC3xQ,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,EAAS,GAGvC,IAATxhwB,GACPkjwB,EAAYb,EAAKjptB,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,GAT7CU,EAAaF,EAAaK,GAAMjptB,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,EAAS,GAYzE,KACJ,CA/CY,CAiDpB,CAGA,SAASwB,EAAMX,GACX,IAAIvl6B,EAAIul6B,EAAItk4B,KACRhhC,EAAIsl6B,EACJv56B,EAAIu56B,EAAIr36B,KAEZ,GAAIgnC,EAAKl1B,EAAGC,EAAGjU,IAAM,EAAG,OAAO,EAK/B,IAFA,IAAIua,EAAIg/5B,EAAIr36B,KAAKA,KAEVqY,IAAMg/5B,EAAItk4B,MAAM,CACnB,GAAIol4B,EAAgBrm6B,EAAErT,EAAGqT,EAAEjW,EAAGkW,EAAEtT,EAAGsT,EAAElW,EAAGiC,EAAEW,EAAGX,EAAEjC,EAAGwc,EAAE5Z,EAAG4Z,EAAExc,IACrDmrC,EAAK3uB,EAAE06B,KAAM16B,EAAGA,EAAErY,OAAS,EAAG,OAAO,EACzCqY,EAAIA,EAAErY,IACV,CAEA,OAAO,CACX,CAEA,SAAS+36B,EAAYV,EAAK/m3B,EAAMC,EAAMim3B,GAClC,IAAI1k6B,EAAIul6B,EAAItk4B,KACRhhC,EAAIsl6B,EACJv56B,EAAIu56B,EAAIr36B,KAEZ,GAAIgnC,EAAKl1B,EAAGC,EAAGjU,IAAM,EAAG,OAAO,EAgB/B,IAbA,IAAIs66B,EAAQtm6B,EAAErT,EAAIsT,EAAEtT,EAAKqT,EAAErT,EAAIX,EAAEW,EAAIqT,EAAErT,EAAIX,EAAEW,EAAMsT,EAAEtT,EAAIX,EAAEW,EAAIsT,EAAEtT,EAAIX,EAAEW,EACnE456B,EAAQvm6B,EAAEjW,EAAIkW,EAAElW,EAAKiW,EAAEjW,EAAIiC,EAAEjC,EAAIiW,EAAEjW,EAAIiC,EAAEjC,EAAMkW,EAAElW,EAAIiC,EAAEjC,EAAIkW,EAAElW,EAAIiC,EAAEjC,EACnEy86B,EAAQxm6B,EAAErT,EAAIsT,EAAEtT,EAAKqT,EAAErT,EAAIX,EAAEW,EAAIqT,EAAErT,EAAIX,EAAEW,EAAMsT,EAAEtT,EAAIX,EAAEW,EAAIsT,EAAEtT,EAAIX,EAAEW,EACnE856B,EAAQzm6B,EAAEjW,EAAIkW,EAAElW,EAAKiW,EAAEjW,EAAIiC,EAAEjC,EAAIiW,EAAEjW,EAAIiC,EAAEjC,EAAMkW,EAAElW,EAAIiC,EAAEjC,EAAIkW,EAAElW,EAAIiC,EAAEjC,EAGnE286B,EAAOlB,EAAOc,EAAOC,EAAO/n3B,EAAMC,EAAMim3B,GACxCiC,EAAOnB,EAAOgB,EAAOC,EAAOjo3B,EAAMC,EAAMim3B,GAExCn+5B,EAAIg/5B,EAAIE,MACRx+5B,EAAIs+5B,EAAIG,MAGLn/5B,GAAKA,EAAE2hD,GAAKw+2B,GAAQz/5B,GAAKA,EAAEihD,GAAKy+2B,GAAM,CACzC,GAAIpg6B,IAAMg/5B,EAAItk4B,MAAQ16B,IAAMg/5B,EAAIr36B,MAC5Bm46B,EAAgBrm6B,EAAErT,EAAGqT,EAAEjW,EAAGkW,EAAEtT,EAAGsT,EAAElW,EAAGiC,EAAEW,EAAGX,EAAEjC,EAAGwc,EAAE5Z,EAAG4Z,EAAExc,IACrDmrC,EAAK3uB,EAAE06B,KAAM16B,EAAGA,EAAErY,OAAS,EAAG,OAAO,EAGzC,GAFAqY,EAAIA,EAAEk/5B,MAEFx+5B,IAAMs+5B,EAAItk4B,MAAQh6B,IAAMs+5B,EAAIr36B,MAC5Bm46B,EAAgBrm6B,EAAErT,EAAGqT,EAAEjW,EAAGkW,EAAEtT,EAAGsT,EAAElW,EAAGiC,EAAEW,EAAGX,EAAEjC,EAAGkd,EAAEta,EAAGsa,EAAEld,IACrDmrC,EAAKjuB,EAAEg6B,KAAMh6B,EAAGA,EAAE/Y,OAAS,EAAG,OAAO,EACzC+Y,EAAIA,EAAEy+5B,KACV,CAGA,KAAOn/5B,GAAKA,EAAE2hD,GAAKw+2B,GAAM,CACrB,GAAIng6B,IAAMg/5B,EAAItk4B,MAAQ16B,IAAMg/5B,EAAIr36B,MAC5Bm46B,EAAgBrm6B,EAAErT,EAAGqT,EAAEjW,EAAGkW,EAAEtT,EAAGsT,EAAElW,EAAGiC,EAAEW,EAAGX,EAAEjC,EAAGwc,EAAE5Z,EAAG4Z,EAAExc,IACrDmrC,EAAK3uB,EAAE06B,KAAM16B,EAAGA,EAAErY,OAAS,EAAG,OAAO,EACzCqY,EAAIA,EAAEk/5B,KACV,CAGA,KAAOx+5B,GAAKA,EAAEihD,GAAKy+2B,GAAM,CACrB,GAAI1/5B,IAAMs+5B,EAAItk4B,MAAQh6B,IAAMs+5B,EAAIr36B,MAC5Bm46B,EAAgBrm6B,EAAErT,EAAGqT,EAAEjW,EAAGkW,EAAEtT,EAAGsT,EAAElW,EAAGiC,EAAEW,EAAGX,EAAEjC,EAAGkd,EAAEta,EAAGsa,EAAEld,IACrDmrC,EAAKjuB,EAAEg6B,KAAMh6B,EAAGA,EAAE/Y,OAAS,EAAG,OAAO,EACzC+Y,EAAIA,EAAEy+5B,KACV,CAEA,OAAO,CACX,CAGA,SAASS,EAAuBtz6B,EAAOypN,EAAW2xQ,GAC9C,IAAI1nd,EAAI1T,EACR,EAAG,CACC,IAAImN,EAAIuG,EAAE06B,KACNhhC,EAAIsG,EAAErY,KAAKA,MAEVigO,EAAOnuN,EAAGC,IAAMuhZ,EAAWxhZ,EAAGuG,EAAGA,EAAErY,KAAM+R,IAAM2m6B,EAAc5m6B,EAAGC,IAAM2m6B,EAAc3m6B,EAAGD,KAExFs8M,EAAUpiN,KAAK8F,EAAEvU,EAAIwie,GACrB3xQ,EAAUpiN,KAAKqM,EAAE9a,EAAIwie,GACrB3xQ,EAAUpiN,KAAK+F,EAAExU,EAAIwie,GAGrB57Q,EAAW9rM,GACX8rM,EAAW9rM,EAAErY,MAEbqY,EAAI1T,EAAQoN,GAEhBsG,EAAIA,EAAErY,IACV,OAASqY,IAAM1T,GAEf,OAAOqy6B,EAAa3+5B,EACxB,CAGA,SAAS6/5B,EAAYvz6B,EAAOypN,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,GAEpD,IAAI1k6B,EAAInN,EACR,EAAG,CAEC,IADA,IAAIoN,EAAID,EAAE9R,KAAKA,KACR+R,IAAMD,EAAEihC,MAAM,CACjB,GAAIjhC,EAAEvU,IAAMwU,EAAExU,GAAKo76B,EAAgB7m6B,EAAGC,GAAI,CAEtC,IAAIjU,EAAI866B,EAAa9m6B,EAAGC,GASxB,OANAD,EAAIkl6B,EAAall6B,EAAGA,EAAE9R,MACtBlC,EAAIk56B,EAAal56B,EAAGA,EAAEkC,MAGtBk36B,EAAapl6B,EAAGs8M,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,QAC5CU,EAAap56B,EAAGswN,EAAW2xQ,EAAKzva,EAAMC,EAAMim3B,EAEhD,CACAzk6B,EAAIA,EAAE/R,IACV,CACA8R,EAAIA,EAAE9R,IACV,OAAS8R,IAAMnN,EACnB,CA0BA,SAASmvyB,EAAShiyB,EAAGC,GACjB,OAAOD,EAAErT,EAAIsT,EAAEtT,CACnB,CAGA,SAASs46B,EAAc8B,EAAMlC,GAEzB,GADAA,EAWJ,SAAwBkC,EAAMlC,GAC1B,IAIIt76B,EAJAgd,EAAIs+5B,EACJmC,EAAKD,EAAKp66B,EACVskmB,EAAK81U,EAAKh96B,EACVk96B,GAAK,IAKT,EAAG,CACC,GAAIh2U,GAAM1qlB,EAAExc,GAAKknmB,GAAM1qlB,EAAErY,KAAKnE,GAAKwc,EAAErY,KAAKnE,IAAMwc,EAAExc,EAAG,CACjD,IAAI4C,EAAI4Z,EAAE5Z,GAAKskmB,EAAK1qlB,EAAExc,IAAMwc,EAAErY,KAAKvB,EAAI4Z,EAAE5Z,IAAM4Z,EAAErY,KAAKnE,EAAIwc,EAAExc,GAC5D,GAAI4C,GAAKq66B,GAAMr66B,EAAIs66B,EAAI,CAEnB,GADAA,EAAKt66B,EACDA,IAAMq66B,EAAI,CACV,GAAI/1U,IAAO1qlB,EAAExc,EAAG,OAAOwc,EACvB,GAAI0qlB,IAAO1qlB,EAAErY,KAAKnE,EAAG,OAAOwc,EAAErY,IAClC,CACA3E,EAAIgd,EAAE5Z,EAAI4Z,EAAErY,KAAKvB,EAAI4Z,EAAIA,EAAErY,IAC/B,CACJ,CACAqY,EAAIA,EAAErY,IACV,OAASqY,IAAMs+5B,GAEf,IAAKt76B,EAAG,OAAO,KAEf,GAAIy96B,IAAOC,EAAI,OAAO196B,EAMtB,IAII4gC,EAJAre,EAAOviB,EACP296B,EAAK396B,EAAEoD,EACPqqmB,EAAKztmB,EAAEQ,EACPo96B,EAASx76B,IAGb4a,EAAIhd,EAEJ,GACQy96B,GAAMzg6B,EAAE5Z,GAAK4Z,EAAE5Z,GAAKu66B,GAAMF,IAAOzg6B,EAAE5Z,GAC/B056B,EAAgBp1U,EAAK+F,EAAKgwU,EAAKC,EAAIh2U,EAAIi2U,EAAIlwU,EAAI/F,EAAK+F,EAAKiwU,EAAKD,EAAI/1U,EAAI1qlB,EAAE5Z,EAAG4Z,EAAExc,KAEjFogC,EAAMv+B,KAAKM,IAAI+kmB,EAAK1qlB,EAAExc,IAAMi96B,EAAKzg6B,EAAE5Z,GAE/Bi66B,EAAcrg6B,EAAGwg6B,KAChB584B,EAAMg94B,GAAWh94B,IAAQg94B,IAAW5g6B,EAAE5Z,EAAIpD,EAAEoD,GAAM4Z,EAAE5Z,IAAMpD,EAAEoD,GAAKy66B,EAAqB796B,EAAGgd,OAC1Fhd,EAAIgd,EACJ4g6B,EAASh94B,IAIjB5jB,EAAIA,EAAErY,WACDqY,IAAMuF,GAEf,OAAOviB,CACX,CApEgB896B,CAAeN,EAAMlC,GAC7BA,EAAW,CACX,IAAI5k6B,EAAI6m6B,EAAajC,EAAWkC,GAGhC7B,EAAaL,EAAWA,EAAU326B,MAClCg36B,EAAajl6B,EAAGA,EAAE/R,KACtB,CACJ,CA+DA,SAASk56B,EAAqB796B,EAAGgd,GAC7B,OAAO2uB,EAAK3rC,EAAE03C,KAAM13C,EAAGgd,EAAE06B,MAAQ,GAAK/L,EAAK3uB,EAAErY,KAAM3E,EAAGA,EAAE2E,MAAQ,CACpE,CAwEA,SAASs36B,EAAO746B,EAAG5C,EAAGy0D,EAAMC,EAAMim3B,GAe9B,OAPA/36B,EAAqB,aADrBA,EAAqB,YADrBA,EAAqB,YADrBA,EAAqB,WAHrBA,EAAI,OAASA,EAAI6xD,GAAQkm3B,GAGf/36B,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAKf5C,EAAqB,aADrBA,EAAqB,YADrBA,EAAqB,YADrBA,EAAqB,WAPrBA,EAAI,OAASA,EAAI00D,GAAQim3B,GAOf366B,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAEE,CACrB,CAGA,SAASi76B,EAAYny6B,GACjB,IAAI0T,EAAI1T,EACJy06B,EAAWz06B,EACf,IACQ0T,EAAE5Z,EAAI266B,EAAS366B,GAAM4Z,EAAE5Z,IAAM266B,EAAS366B,GAAK4Z,EAAExc,EAAIu96B,EAASv96B,KAAIu96B,EAAW/g6B,GAC7EA,EAAIA,EAAErY,WACDqY,IAAM1T,GAEf,OAAOy06B,CACX,CAGA,SAASjB,EAAgBhvtB,EAAIC,EAAI2B,EAAIC,EAAIC,EAAIT,EAAI9vC,EAAIq4S,GACjD,OAAQ9nQ,EAAKvwC,IAAO0uC,EAAK2pQ,IAAO5pQ,EAAKzuC,IAAO8vC,EAAKuoQ,IAAO,IAChD5pQ,EAAKzuC,IAAOswC,EAAK+nQ,IAAOhoQ,EAAKrwC,IAAO0uC,EAAK2pQ,IAAO,IAChDhoQ,EAAKrwC,IAAO8vC,EAAKuoQ,IAAO9nQ,EAAKvwC,IAAOswC,EAAK+nQ,IAAO,CAC5D,CAGA,SAAS4ld,EAAgB7m6B,EAAGC,GACxB,OAAOD,EAAE9R,KAAKzC,IAAMwU,EAAExU,GAAKuU,EAAEihC,KAAKx1C,IAAMwU,EAAExU,IA2C9C,SAA2BuU,EAAGC,GAC1B,IAAIsG,EAAIvG,EACR,EAAG,CACC,GAAIuG,EAAE9a,IAAMuU,EAAEvU,GAAK8a,EAAErY,KAAKzC,IAAMuU,EAAEvU,GAAK8a,EAAE9a,IAAMwU,EAAExU,GAAK8a,EAAErY,KAAKzC,IAAMwU,EAAExU,GAC7D+1Z,EAAWj7Y,EAAGA,EAAErY,KAAM8R,EAAGC,GAAI,OAAO,EAC5CsG,EAAIA,EAAErY,IACV,OAASqY,IAAMvG,GAEf,OAAO,CACX,CApDoDun6B,CAAkBvn6B,EAAGC,KAC7D2m6B,EAAc5m6B,EAAGC,IAAM2m6B,EAAc3m6B,EAAGD,IA6DpD,SAAsBA,EAAGC,GACrB,IAAIsG,EAAIvG,EACJwmC,GAAS,EACToiI,GAAM5oK,EAAErT,EAAIsT,EAAEtT,GAAK,EACnBs0d,GAAMjhd,EAAEjW,EAAIkW,EAAElW,GAAK,EACvB,GACUwc,EAAExc,EAAIk3d,GAAS16c,EAAErY,KAAKnE,EAAIk3d,GAAQ16c,EAAErY,KAAKnE,IAAMwc,EAAExc,GAC9C6+K,GAAMriK,EAAErY,KAAKvB,EAAI4Z,EAAE5Z,IAAMs0d,EAAK16c,EAAExc,IAAMwc,EAAErY,KAAKnE,EAAIwc,EAAExc,GAAKwc,EAAE5Z,IAC/D65C,GAAUA,GACdjgC,EAAIA,EAAErY,WACDqY,IAAMvG,GAEf,OAAOwmC,CACX,CA1E0Dgh4B,CAAaxn6B,EAAGC,KAC7Di1B,EAAKl1B,EAAEihC,KAAMjhC,EAAGC,EAAEghC,OAAS/L,EAAKl1B,EAAGC,EAAEghC,KAAMhhC,KAC5CkuN,EAAOnuN,EAAGC,IAAMi1B,EAAKl1B,EAAEihC,KAAMjhC,EAAGA,EAAE9R,MAAQ,GAAKgnC,EAAKj1B,EAAEghC,KAAMhhC,EAAGA,EAAE/R,MAAQ,EACrF,CAGA,SAASgnC,EAAK3uB,EAAG0pF,EAAG9vE,GAChB,OAAQ8vE,EAAElmG,EAAIwc,EAAExc,IAAMo2B,EAAExzB,EAAIsjG,EAAEtjG,IAAMsjG,EAAEtjG,EAAI4Z,EAAE5Z,IAAMwzB,EAAEp2B,EAAIkmG,EAAElmG,EAC9D,CAGA,SAASokO,EAAOxiM,EAAIC,GAChB,OAAOD,EAAGh/B,IAAMi/B,EAAGj/B,GAAKg/B,EAAG5hC,IAAM6hC,EAAG7hC,CACxC,CAGA,SAASy3Z,EAAW71X,EAAI2rb,EAAI1rb,EAAIqsb,GAC5B,IAAI15M,EAAKxkP,EAAKmb,EAAKvJ,EAAI2rb,EAAI1rb,IACvB8uH,EAAK3gI,EAAKmb,EAAKvJ,EAAI2rb,EAAIW,IACvBwvd,EAAK1t5B,EAAKmb,EAAKtJ,EAAIqsb,EAAItsb,IACvB+74B,EAAK3t5B,EAAKmb,EAAKtJ,EAAIqsb,EAAIX,IAE3B,OAAI/4M,IAAO7jH,GAAM+sxB,IAAOC,KAEb,IAAPnpqB,IAAYopqB,EAAUh84B,EAAIC,EAAI0rb,OACvB,IAAP58T,IAAYitxB,EAAUh84B,EAAIssb,EAAIX,OACvB,IAAPmwd,IAAYE,EAAU/74B,EAAID,EAAIssb,OACvB,IAAPyvd,IAAYC,EAAU/74B,EAAI0rb,EAAIW,GAGtC,CAGA,SAAS0vd,EAAUph6B,EAAG0pF,EAAG9vE,GACrB,OAAO8vE,EAAEtjG,GAAKf,KAAKmE,IAAIwW,EAAE5Z,EAAGwzB,EAAExzB,IAAMsjG,EAAEtjG,GAAKf,KAAKkE,IAAIyW,EAAE5Z,EAAGwzB,EAAExzB,IAAMsjG,EAAElmG,GAAK6B,KAAKmE,IAAIwW,EAAExc,EAAGo2B,EAAEp2B,IAAMkmG,EAAElmG,GAAK6B,KAAKkE,IAAIyW,EAAExc,EAAGo2B,EAAEp2B,EACzH,CAEA,SAASgwB,EAAKsqB,GACV,OAAOA,EAAM,EAAI,EAAIA,EAAM,GAAK,EAAI,CACxC,CAeA,SAASui4B,EAAc5m6B,EAAGC,GACtB,OAAOi1B,EAAKl1B,EAAEihC,KAAMjhC,EAAGA,EAAE9R,MAAQ,EAC7BgnC,EAAKl1B,EAAGC,EAAGD,EAAE9R,OAAS,GAAKgnC,EAAKl1B,EAAGA,EAAEihC,KAAMhhC,IAAM,EACjDi1B,EAAKl1B,EAAGC,EAAGD,EAAEihC,MAAQ,GAAK/L,EAAKl1B,EAAGA,EAAE9R,KAAM+R,GAAK,CACvD,CAoBA,SAAS6m6B,EAAa9m6B,EAAGC,GACrB,IAAI87U,EAAK,IAAItuI,EAAKztM,EAAEvU,EAAGuU,EAAErT,EAAGqT,EAAEjW,GAC1Bq5I,EAAK,IAAIqqE,EAAKxtM,EAAExU,EAAGwU,EAAEtT,EAAGsT,EAAElW,GAC1BmsW,EAAKl2V,EAAE9R,KACPu51B,EAAKxn1B,EAAEghC,KAcX,OAZAjhC,EAAE9R,KAAO+R,EACTA,EAAEghC,KAAOjhC,EAET+7U,EAAG7tV,KAAOgoW,EACVA,EAAGj1T,KAAO86S,EAEV34M,EAAGl1I,KAAO6tV,EACVA,EAAG96S,KAAOmiG,EAEVqktB,EAAGv51B,KAAOk1I,EACVA,EAAGniG,KAAOwmzB,EAEHrktB,CACX,CAGA,SAASiiyB,EAAW556B,EAAGkB,EAAG5C,EAAGuwD,GACzB,IAAI/zC,EAAI,IAAIknM,EAAKhiN,EAAGkB,EAAG5C,GAYvB,OAVKuwD,GAKD/zC,EAAErY,KAAOosD,EAAKpsD,KACdqY,EAAE06B,KAAOqZ,EACTA,EAAKpsD,KAAK+yC,KAAO16B,EACjB+zC,EAAKpsD,KAAOqY,IAPZA,EAAE06B,KAAO16B,EACTA,EAAErY,KAAOqY,GAQNA,CACX,CAEA,SAAS8rM,EAAW9rM,GAChBA,EAAErY,KAAK+yC,KAAO16B,EAAE06B,KAChB16B,EAAE06B,KAAK/yC,KAAOqY,EAAErY,KAEZqY,EAAEk/5B,QAAOl/5B,EAAEk/5B,MAAMC,MAAQn/5B,EAAEm/5B,OAC3Bn/5B,EAAEm/5B,QAAOn/5B,EAAEm/5B,MAAMD,MAAQl/5B,EAAEk/5B,MACnC,CAEA,SAASh4tB,EAAKhiN,EAAGkB,EAAG5C,GAEhBqc,KAAK3a,EAAIA,EAGT2a,KAAKzZ,EAAIA,EACTyZ,KAAKrc,EAAIA,EAGTqc,KAAK66B,KAAO,KACZ76B,KAAKlY,KAAO,KAGZkY,KAAK8hD,EAAI,KAGT9hD,KAAKq/5B,MAAQ,KACbr/5B,KAAKs/5B,MAAQ,KAGbt/5B,KAAK2+5B,SAAU,CACnB,CA+BA,SAAS3lJ,EAAWjjxB,EAAMtJ,EAAOC,EAAKm7d,GAElC,IADA,IAAI3sX,EAAM,EACD71G,EAAIoH,EAAOu5B,EAAIt5B,EAAMm7d,EAAKxie,EAAIqH,EAAKrH,GAAKwie,EAC7C3sX,IAAQnlG,EAAKiwB,GAAKjwB,EAAK1Q,KAAO0Q,EAAK1Q,EAAI,GAAK0Q,EAAKiwB,EAAI,IACrDA,EAAI3gC,EAER,OAAO61G,CACX,CAlpBAxZ,EAAOj9F,QAAU256B,EACjB180B,EAAOj9F,QAAP,QAAyB256B,EA+mBzBA,EAAO3xkB,UAAY,SAAU12V,EAAMso6B,EAAax2c,EAAK3xQ,GACjD,IAAIqotB,EAAWF,GAAeA,EAAYjq6B,OACtCoq6B,EAAWD,EAAWF,EAAY,GAAKx2c,EAAM9xd,EAAK3B,OAElDot6B,EAAch86B,KAAKM,IAAIkzxB,EAAWjjxB,EAAM,EAAGyo6B,EAAU32c,IACzD,GAAI02c,EACA,IAAK,IAAIl56B,EAAI,EAAGoK,EAAM4u6B,EAAYjq6B,OAAQ/O,EAAIoK,EAAKpK,IAAK,CACpD,IAAIoH,EAAQ4x6B,EAAYh56B,GAAKwie,EACzBn7d,EAAMrH,EAAIoK,EAAM,EAAI4u6B,EAAYh56B,EAAI,GAAKwie,EAAM9xd,EAAK3B,OACxDot6B,GAAeh86B,KAAKM,IAAIkzxB,EAAWjjxB,EAAMtJ,EAAOC,EAAKm7d,GACzD,CAGJ,IAAI45c,EAAgB,EACpB,IAAKp86B,EAAI,EAAGA,EAAI6wN,EAAU9hN,OAAQ/O,GAAK,EAAG,CACtC,IAAIuU,EAAIs8M,EAAU7wN,GAAKwie,EACnBhud,EAAIq8M,EAAU7wN,EAAI,GAAKwie,EACvBjie,EAAIswN,EAAU7wN,EAAI,GAAKwie,EAC3B45c,GAAiBj86B,KAAKM,KACjBiQ,EAAK6D,GAAK7D,EAAKnQ,KAAOmQ,EAAK8D,EAAI,GAAK9D,EAAK6D,EAAI,KAC7C7D,EAAK6D,GAAK7D,EAAK8D,KAAO9D,EAAKnQ,EAAI,GAAKmQ,EAAK6D,EAAI,IACtD,CAEA,OAAuB,IAAhB4n6B,GAAuC,IAAlBC,EAAsB,EAC9Cj86B,KAAKM,KAAK276B,EAAgBD,GAAeA,EACjD,EAYApD,EAAOtk0B,QAAU,SAAU/jG,GAKvB,IAJA,IAAI8xd,EAAM9xd,EAAK,GAAG,GAAG3B,OACjBjB,EAAS,CAACm7d,SAAU,GAAIypX,MAAO,GAAIr1f,WAAYmlI,GAC/C65c,EAAY,EAEPr86B,EAAI,EAAGA,EAAI0Q,EAAK3B,OAAQ/O,IAAK,CAClC,IAAK,IAAI2gC,EAAI,EAAGA,EAAIjwB,EAAK1Q,GAAG+O,OAAQ4xB,IAChC,IAAK,IAAIziC,EAAI,EAAGA,EAAIske,EAAKtke,IAAK4P,EAAOm7d,SAASx6d,KAAKiC,EAAK1Q,GAAG2gC,GAAGziC,IAE9D8B,EAAI,IACJq86B,GAAa3r6B,EAAK1Q,EAAI,GAAG+O,OACzBjB,EAAO4k1B,MAAMjk1B,KAAK4t6B,GAE1B,CACA,OAAOvu6B,CACX,C,yBC7pBQ,SAAWtS,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,+BCN3C,SAASwmY,EAAgB9nV,EAAQ0+3B,GAG9C,IAFA,IAAIhu5B,EAAOsvB,EAAS,EAAI,IAAM,GAC1B8+K,EAASv8N,KAAKM,IAAIm9C,GAAQj8C,WACvB+6N,EAAO3tN,OAASut6B,GACrB5/sB,EAAS,IAAMA,EAEjB,OAAOpuM,EAAOouM,CAChB,C,+CCNA,IAAIniG,EAAc,EAAQ,OACtB4ggB,EAAuB,EAAQ,OAC/BnhQ,EAA2B,EAAQ,MAEvC39R,EAAOj9F,QAAUm7H,EAAc,SAAUt0E,EAAQ9gD,EAAK7E,GACpD,OAAO66nB,EAAqB9+mB,EAAE4pC,EAAQ9gD,EAAK60X,EAAyB,EAAG15X,GACzE,EAAI,SAAU2lD,EAAQ9gD,EAAK7E,GAEzB,OADA2lD,EAAO9gD,GAAO7E,EACP2lD,CACT,C,kBCVA,IAAIowK,EAAe,EAAQ,OASvB9vN,EAHc9B,OAAOsW,UAGQxU,eAoBjC81F,EAAOj9F,QATP,SAAiB+F,GACf,IAAIuL,EAAOiK,KAAKi4T,SAChB,GAAIv8G,EAAc,CAChB,IAAIvoN,EAAS4C,EAAKvL,GAClB,MArBiB,8BAqBV2I,OAA4B2D,EAAY3D,CACjD,CACA,OAAOvH,EAAeyU,KAAKtK,EAAMvL,GAAOuL,EAAKvL,QAAOsM,CACtD,C,+BCzBA,IAAIyvP,EAAiB,EAAQ,OAE7B7kK,EAAOj9F,QAAUgnH,SAASrrG,UAAUs7C,MAAQ6qM,C,qCCH5C,IACQzmP,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgBhW,OAAOmW,gBACtB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAOA,EAAEjO,eAAeuU,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EACtE,SAAU5c,EAAGsW,GAEhB,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEJ1W,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIg8G,EAAW,EAAQ,OAGnBig0B,EAAqC,SAAU595B,GAE/C,SAAS495B,EAAoBhvmB,GACzB,IAAI1uT,EAAQF,EAAO3D,KAAKL,KAAM4yT,GAAQ,IAAU5yT,KAEhD,OADA2hG,EAASj5E,KAAKxwB,iBAAiB,aAAcgM,EAAMo6T,WAAW,GACvDp6T,CACX,CAWA,OAhBAnE,EAAU6h6B,EAAqB595B,GAM/B495B,EAAoBxh6B,UAAU82D,KAAO,WACjC,OAAOyqC,EAASkg0B,YAAY7h6B,KAAKy+T,UAAUnyU,KAC/C,EACAs16B,EAAoBxh6B,UAAUu+T,KAAO,SAAUhvU,EAAO2mD,EAAOm3C,EAAK1pG,GAC9Dic,KAAKy+T,UAAUnyU,KAAOmhG,CAC1B,EACAm00B,EAAoBxh6B,UAAU2jG,QAAU,SAAU6uN,GAC9C5uT,EAAO5D,UAAU2jG,QAAQ1jG,KAAKL,KAAM4yT,GACpCjxN,EAASj5E,KAAKvwB,oBAAoB,aAAc6H,KAAKs+T,UACzD,EACOsjmB,CACX,CAlBwC,CAFZ,EAAQ,OAoBZxjmB,sBACxB35U,EAAQm96B,oBAAsBA,C,gDCH9B,QAJA,SAAYj86B,EAAOk7D,GACjB,OAAOl7D,IAAUk7D,GAAUl7D,GAAUA,GAASk7D,GAAUA,CAC1D,C,+BCvBe,SAAS+tU,EAAgCttV,GACtD,IAAIutV,EAAU,IAAIhmX,KAAKA,KAAK6tK,IAAIp1I,EAAKukE,cAAevkE,EAAKqkE,WAAYrkE,EAAKikE,UAAWjkE,EAAK0jG,WAAY1jG,EAAK2jG,aAAc3jG,EAAK4jG,aAAc5jG,EAAKmnD,oBAEjJ,OADAomS,EAAQvgF,eAAehtQ,EAAKukE,eACrBvkE,EAAKmkE,UAAYopR,EAAQppR,SAClC,C,4BCIA/jB,EAAOj9F,QAVP,SAAiC+F,EAAKm9pB,GACpC,OAAO,SAASr8mB,GACd,OAAc,MAAVA,GAGGA,EAAO9gD,KAASm9pB,SACP7wpB,IAAb6wpB,GAA2Bn9pB,KAAOV,OAAOwhD,GAC9C,CACF,C,+BChBA,IAAIo+C,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjC0sB,EAAsB,EAAQ,OAC9B30P,EAAW,EAAQ,KACnBi5H,EAAQ,EAAQ,OAEhBvtG,EAAS2tF,EAAY,GAAG3tF,QAS5Bg3E,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAPtBof,EAAM,WAEjB,MAAuB,WAAhB,KAAKywQ,IAAI,EAClB,IAIqD,CACnDA,GAAI,SAAYl6X,GACd,IAAImkB,EAAI3zB,EAASioO,EAAuBjvN,OACpCvQ,EAAMkrB,EAAEvmB,OACRu8X,EAAgBh1I,EAAoBnlP,GACpCib,EAAIk/W,GAAiB,EAAIA,EAAgBlhY,EAAMkhY,EACnD,OAAQl/W,EAAI,GAAKA,GAAKhiB,OAAOqH,EAAY4b,EAAOiI,EAAGlJ,EACrD,G,8FCnBF,MAAMqw5B,EAAgB,GAEhBC,EAAwB,CAC1Bvz0B,KAAM,KACNpqG,KAAM,CACFC,IAAK,EACLC,IAAK,GAETyK,UAAW,MACXquiB,WAAY,CACRvigB,KAAM,OACN/yC,KAAM,OACNkqY,SAAU,YACVC,SAAU,YACVx0S,KAAM,OACNs8a,MAAO,QACPx8a,MAAO,QACPn5F,KAAM,OACNk5F,IAAK,MACL1vF,KAAM,QAEVyiiB,SAAU,IACVC,aAAc,OACdgL,UAAW,QACXC,SAAU,OACVC,UAAW,QACXpC,WAAY,UACZS,aAAc,OACdsB,aAAc,wBAEZ6mY,EAAgBl46B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGg46B,GAAwB,CAG1E1kY,YAAa,CACTxigB,KAAM,cACN/yC,KAAM,UACNiygB,MAAK,CAACqjC,EAAYhgf,IACG,QAATA,EACF,QACA,QAAQggf,KAEnBhC,SAAU,UAAWC,YAAa,WAAYvB,aAAamoY,GACnD,QAAQA,eAAmC,IAAbA,EAAiB,GAAK,QAEnE,SAASC,EAAmBC,GACxB,IAAI9hsB,EAAc8hsB,EAAmB/t6B,OAAS,EAAI+t6B,EAAmB,GAAG3z0B,KAAO,KAC3E4z0B,EAAgBN,EAAc9z6B,OAAOm06B,GACrCE,EAAe,CACf3hlB,GAAIshlB,GAER,IAAK,IAAIM,KAAaF,EAClBC,EAAaC,EAAU9z0B,MAAQ8z0B,EAEnC,MAAO,CACHvv6B,IAAKsv6B,EACLhisB,cAER,CACA,SAASkisB,EAAYC,EAAe/wS,GAChC,MAA6B,iBAAlB+wS,GAA+Blu6B,MAAMyb,QAAQyy5B,GAK5D,SAAqBC,EAAShxS,GAC1B,IAAI3gG,EAAQ,GAAG9iiB,OAAOy06B,GAAW,IAC7Bl03B,EAGR,SAAwBuif,EAAO2gG,GAC3B,IAAK,IAAIpsoB,EAAI,EAAGA,EAAIyriB,EAAM18hB,OAAQ/O,GAAK,EAAG,CACtC,IAAIixE,EAAQw6d,EAAMzriB,GAAG8riB,oBAAoBjwiB,MAAM,KAC/C,IAAK,IAAI8kC,EAAIswC,EAAMliE,OAAQ4xB,EAAI,EAAGA,GAAK,EAAG,CACtC,IAAI084B,EAAWps2B,EAAMx7D,MAAM,EAAGkrB,GAAG9nB,KAAK,KACtC,GAAIuznB,EAAUixS,GACV,OAAOjxS,EAAUixS,EAEzB,CACJ,CACA,OAAO,IACX,CAdcC,CAAe7xY,EAAO2gG,IAAcuwS,EAC9C,OAAOY,EAAYH,EAAS3xY,EAAOvif,EACvC,CANWs03B,CAAYL,EAAe/wS,GAFvBmxS,EAAYJ,EAAch00B,KAAM,CAACg00B,EAAch00B,MAAOg00B,EAGrE,CAkBA,SAASI,EAAYH,EAAS3xY,EAAOvif,GACjC,IAAI94C,GAAS,IAAAtS,GAAW,CAAC4+6B,EAAuBxz3B,GAAM,CAAC,sBAChD94C,EAAO+4F,KACd,IAAI,KAAEpqG,GAASqR,EAEf,cADOA,EAAOrR,KACP,CACHq+6B,UACA3xY,QACA1siB,OACAmsiB,mBAAoB,IAAIlyf,KAAKC,aAAamk4B,GAC1C7y6B,QAAS6F,EAEjB,CAGA,SAASqt6B,EAAa7g7B,GAClB,MAAO,CACH8b,IAAI,IAAA4D,KACJpO,KAAMtR,EAAMsR,KACZwv6B,mBAAoB9g7B,EAAM8g7B,mBAAqB,IAAIl65B,KAAK5mB,EAAM8g7B,yBAAsBjs6B,EACpFo/L,KAAMj0M,EAAMi0M,MAAQ,GACpB8suB,SAAU/g7B,EAAM+g7B,UAAY,GAC5BC,eAAgBhh7B,EAAMgh7B,gBAAkB,GACxCC,YAAa,GAAGl16B,OAAO/L,EAAMih7B,aAAe,IAC5C70X,cAAepsjB,EAAMosjB,eAAiB,CAAC,EACvCG,qBAAsBvsjB,EAAMusjB,sBAAwB,GACpD6C,oBAAqBpvjB,EAAMovjB,qBAAuB,CAAC,EACnDoI,wBAAyBx3jB,EAAMw3jB,yBAA2B,GAC1DizF,2BAA4BzqpB,EAAMyqpB,4BAA8B,GAChEz3F,yBAA0BhzjB,EAAMgzjB,0BAA4B,GAC5Ds2F,0BAA2BtppB,EAAMsppB,2BAA6B,GAC9DT,oBAAqB7opB,EAAM6opB,qBAAuB,GAClD32F,mBAAoBlyjB,EAAMkyjB,oBAAsB,GAChDv9b,MAAO30H,EAAM20H,OAAS,CAAC,EACvBuszB,sBAAuBlh7B,EAAMkh7B,uBAAyB,GACtD5xW,aAActvkB,EAAMsvkB,cAAgB,KACpC6xW,sBAAuBnh7B,EAAMmh7B,uBAAyB,GACtDC,qBAAsBph7B,EAAMoh7B,sBAAwB,GACpDr2R,sBAAuB/qpB,EAAM+qpB,uBAAyB,GACtD6B,sBAAuB5spB,EAAM4spB,uBAAyB,GACtDC,qBAAsB7spB,EAAM6spB,sBAAwB,GACpDx8Q,aAAcrwY,EAAMqwY,cAAgB,CAAC,EACrCu+K,gBAAiB5ujB,EAAM4ujB,iBAAmB,GAC1C/e,aAAc7viB,EAAM6viB,aACpBwa,eAAgBrqjB,EAAMqqjB,gBAAkB,GACxCg3X,mBAAoBrh7B,EAAMqh7B,mBAC1BtvY,YAAa/xiB,EAAM+xiB,aAAe,GAClCs7G,oBAAqBrtpB,EAAMqtpB,oBAC3Bi0R,qBAAsBth7B,EAAMsh7B,sBAAwB,CAAC,EACrDC,eAAgBvh7B,EAAMuh7B,gBAAkB,KACxCh0R,iBAAkBvtpB,EAAMutpB,kBAAoB,CAAC,EAC7CD,eAAgBttpB,EAAMstpB,gBAAkB,CAAC,EACzCk0R,gBAAiBxh7B,EAAMwh7B,iBAAmB,CAAC,EAEnD,CAwEA,SAASC,EAAaC,EAAQC,GAC1B,MAAO,CACHb,oBAmCsBn6X,EAnCmB+6X,EAAOZ,mBAmCnBl6X,EAnCuC+6X,EAAOb,wBAoCjEjs6B,IAAV8xiB,EACOC,OAEG/xiB,IAAV+xiB,EACOD,EAEJ,IAAI//hB,KAAKrjB,KAAKmE,IAAIi/iB,EAAMjyV,UAAWkyV,EAAMlyV,aAzC5CqstB,SAAUW,EAAOX,SAASh16B,OAAO416B,EAAOZ,UACxCC,eAAgBU,EAAOV,eAAej16B,OAAO416B,EAAOX,gBACpDC,YAAaS,EAAOT,YAAYl16B,OAAO416B,EAAOV,aAC9C70X,cAAevkjB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOt1X,eAAgBu1X,EAAOv1X,eAC7EG,qBAAsBm1X,EAAOn1X,qBAAqBxgjB,OAAO416B,EAAOp1X,sBAChE6C,oBAAqBvnjB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOtyX,qBAAsBuyX,EAAOvyX,qBACzFoI,wBAAyBkqX,EAAOlqX,wBAAwBzrjB,OAAO416B,EAAOnqX,yBACtEizF,2BAA4Bi3R,EAAOj3R,2BAA2B1+oB,OAAO416B,EAAOl3R,4BAC5Ez3F,yBAA0B0uX,EAAO1uX,yBAAyBjnjB,OAAO416B,EAAO3uX,0BACxEs2F,0BAA2Bo4R,EAAOp4R,0BAA0Bv9oB,OAAO416B,EAAOr4R,2BAC1ET,oBAAqB64R,EAAO74R,oBAAoB98oB,OAAO416B,EAAO94R,qBAC9D32F,mBAAoBwvX,EAAOxvX,mBAAmBnmjB,OAAO416B,EAAOzvX,oBAC5Dv9b,MAAO9sH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAO/szB,OAAQgtzB,EAAOhtzB,OAC7DuszB,sBAAuBQ,EAAOR,sBAAsBn16B,OAAO416B,EAAOT,uBAClE5xW,aAAcqyW,EAAOryW,cAAgBoyW,EAAOpyW,aAC5C6xW,sBAAuBO,EAAOP,sBAAsBp16B,OAAO416B,EAAOR,uBAClEC,qBAAsBM,EAAON,qBAAqBr16B,OAAO416B,EAAOP,sBAChEr2R,sBAAuB22R,EAAO32R,sBAAsBh/oB,OAAO416B,EAAO52R,uBAClE8B,qBAAsB60R,EAAO70R,qBAAqB9gpB,OAAO416B,EAAO90R,sBAChED,sBAAuB80R,EAAO90R,sBAAsB7gpB,OAAO416B,EAAO/0R,uBAClEv8Q,aAAcxoY,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOrxiB,cAAesxiB,EAAOtxiB,cAC3Eu+K,gBAAiB8yX,EAAO9yX,gBAAgB7ijB,OAAO416B,EAAO/yX,iBACtD/e,aAAc8xY,EAAO9xY,cAAgB6xY,EAAO7xY,aAC5Cwa,eAAgBq3X,EAAOr3X,eAAet+iB,OAAO416B,EAAOt3X,gBACpDg3X,mBAAoBM,EAAON,oBAAsBK,EAAOL,mBACxDtvY,YAAa2vY,EAAO3vY,aAAe4vY,EAAO5vY,YAC1Cs7G,oBAAqBq0R,EAAOr0R,qBAAuBs0R,EAAOt0R,oBAC1Di0R,qBAAsBz56B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOJ,sBAAuBK,EAAOL,sBAC3FC,eAAgBI,EAAOJ,gBAAkBG,EAAOH,eAChDh0R,iBAAkB1lpB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOn0R,kBAAmBo0R,EAAOp0R,kBACnFD,eAAgBzlpB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOp0R,gBAAiBq0R,EAAOr0R,gBAC/Ek0R,gBAAiB356B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG456B,EAAOF,iBAAkBG,EAAOH,kBAGzF,IAA8B76X,EAAOC,CADrC,CAWA,MAAMg7X,UAAsB,EAAAnp5B,GAsC5B,SAASop5B,EAAcplX,EAAUpyjB,EAAMy36B,EAAgBC,GACnD,GAAI136B,EAAKoyjB,GACL,OAAOpyjB,EAAKoyjB,GAEhB,IAAIulX,EAMR,SAAsBvlX,EAAUpyjB,EAAMy36B,EAAgBC,GAClD,IAAIhJ,EAAgB+I,EAAerlX,GAC/BwlX,EAAiBF,EAAgBtlX,GACjCylX,EAAa5w6B,GAAWyn6B,GAAyC,OAAxBA,EAAczn6B,GAAkByn6B,EAAczn6B,GACrF2w6B,GAA2C,OAAzBA,EAAe3w6B,GAAkB2w6B,EAAe3w6B,GAAQ,KAC5E6w6B,EAAeD,EAAU,aACzBE,EAAYF,EAAU,aACtBG,EAAW,KACf,GAAID,EAAW,CACX,GAAIA,IAAc3lX,EACd,MAAM,IAAIn3iB,MAAM,wDAEpB+85B,EAAWR,EAAcO,EAAW/36B,EAAMy36B,EAAgBC,EAC9D,CAIA,OAHKI,GAAgBE,IACjBF,EAAeE,EAASts2B,WAEvBos2B,EAGE,CACHp05B,KAAM0uiB,EACN1mf,UAAWos2B,EACXv74B,SAAU/+B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAIu66B,EAAWA,EAASz74B,SAAW,CAAC,GAAMmy4B,EAAgBA,EAAcuJ,WAAa,CAAC,GAC7Hh84B,UAAWz+B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAIu66B,EAAWA,EAAS/74B,UAAY,CAAC,GAAM274B,EAAiBA,EAAeK,WAAa,CAAC,IAN1H,IAQf,CAhCkBC,CAAa9lX,EAAUpyjB,EAAMy36B,EAAgBC,GAI3D,OAHIC,IACA336B,EAAKoyjB,GAAYulX,GAEdA,CACX,CA6BA,SAASQ,EAAiB3x4B,GACtB,OAAO,OAAQA,EAAQ4x4B,EAC3B,CACA,SAASA,EAAgBzi7B,GACrB,IAAIsi7B,EAA8B,mBAAVti7B,EACpB,CAAE+1E,UAAW/1E,GACbA,GACA,UAAE+1E,GAAcus2B,EAUpB,OATIA,EAAW19zB,QAEX7uC,EAAY2s2B,EAAwBJ,IAE/Bvs2B,GAAeA,EAAU53D,qBAAqB,EAAA2Y,IAGnDi/C,EAAY2s2B,EAAwB766B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw66B,GAAa,CAAE19zB,QAAS7uC,MAEzF,CACHqs2B,UAAWE,EAAWv05B,KACtBgoD,UAAWA,EACXus2B,aAER,CACA,SAASI,EAAwB/06B,GAC7B,OAAQg16B,IAAe,OAAc,EAAApq5B,EAAgByjU,SAAU,KAAO90T,IAAa,OAAc,EAAAnQ,EAAkB,CAAEgthB,MAAO,MAAOI,WAAW,IAAAvsiB,GAAoBsvB,EAAQ26gB,UAAW1/K,YAAat6X,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG666B,GAAY,CAAEnyY,iBAAkBtpgB,EAAQv5B,QAAQ6iiB,mBAAqB6S,mBAAexuiB,EAAW2uiB,gBAAiB71iB,EAAQi3G,QAASmgc,mBAAoBp3iB,EAAQ8hX,WAAYqsL,SAAUnuiB,EAAQmuiB,SAAUC,YAAapuiB,EAAQouiB,cAChc,CAEA,SAAS6mY,EAAeC,EAAeC,EAAiBC,EAAwBC,GAC5E,IAAIlB,EAAiBU,EAAiBK,GAClCd,EAAkBS,EAAiBM,EAAgBnuzB,OACnDsuzB,EA/ER,SAAyBnB,EAAgBC,GACrC,IACItlX,EADApyjB,EAAO,CAAC,EAEZ,IAAKoyjB,KAAYqlX,EACbD,EAAcplX,EAAUpyjB,EAAMy36B,EAAgBC,GAElD,IAAKtlX,KAAYslX,EACbF,EAAcplX,EAAUpyjB,EAAMy36B,EAAgBC,GAElD,OAAO136B,CACX,CAqEmB646B,CAAgBpB,EAAgBC,GAC/C,OAAO,OAAQkB,EAAWjB,GAE9B,SAAuBA,EAASD,EAAiBe,EAAiBC,EAAwBC,GACtF,IAAIG,EAAgBnB,EAAQ174B,UAAUrjB,UAClC++5B,EAAQp74B,SAAS3jB,UACjB8/5B,EAAuB9/5B,UACvB6/5B,EAAgB7/5B,SAChBA,EAAW,KACX0liB,EAAe,GACfuU,EAAa,GACbkmX,EAAsB,CAAC,EAC3B,GAAID,IACAlg6B,EAiER,SAA8Bkg6B,GAC1B,IAAIr/0B,EAAOp8E,KAAKC,UAAUw75B,GACtBhh4B,EAAMkh4B,EAAiBv/0B,GAK3B,YAJYjvF,IAARstC,IACAA,GAAM,OAAegh4B,GACrBE,EAAiBv/0B,GAAQ3hD,GAEtBA,CACX,CAzEmBmh4B,CAAqBH,GAC5Blg6B,GAAU,CACV,IAAIsg6B,GAAQ,OAA4Btg6B,GACxC0liB,EAAe46X,EAAMpo3B,KACD,IAAhBoo3B,EAAM7/6B,QACNw5jB,EAAavU,EACby6X,EAAsBrB,EAAgBp5X,GAAgBo5X,EAAgBp5X,GAAc25X,WAAa,CAAC,EAE1G,CAEJ,IAAIkB,EAAmBC,IACnB,IAAIC,EAAgBD,EAActoY,YAAc,CAAC,EAC7CQ,EAAgBqmY,EAAQp74B,SAAS+0gB,cACrC,OAAqB,MAAjBA,GAAyD,MAAhC+nY,EAAc/nY,GAChC+nY,EAAc/nY,GAEU,MAA/B+nY,EAAc1B,EAAQj05B,MACf215B,EAAc1B,EAAQj05B,MAEA,MAA7B215B,EAAcxmX,GACPwmX,EAAcxmX,GAElB,MAEPymX,EAAoBF,IACpB,IAAIroY,EAAcqoY,EAAcroY,aAAe,CAAC,EAC5CwoY,EAAY5B,EAAQp74B,SAAS+0gB,cACjC,OAAiB,MAAbioY,GAA+C,MAA1BxoY,EAAYwoY,GAC1BxoY,EAAYwoY,GAEU,MAA7BxoY,EAAY4mY,EAAQj05B,MACbqthB,EAAY4mY,EAAQj05B,MAEA,MAA3BqthB,EAAY8hB,GACL9hB,EAAY8hB,GAEhB,MAEX,MAAO,CACHnviB,KAAMi05B,EAAQj05B,KACdgoD,UAAWis2B,EAAQjs2B,UACnB9yD,WACA0liB,eACAuU,aACA2mX,eAAgB7B,EAAQp74B,SACxBk84B,gBAAiBj76B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGs76B,GAAsBpB,EAAQ174B,WAC/Ew94B,mBAAoBN,EAAgBT,IAChCS,EAAgBV,IAChBd,EAAQ174B,UAAU60gB,WACtB4oY,kBAAmBP,EAAgBR,IAC/BhB,EAAQp74B,SAASu0gB,YACjBqoY,EAAgB,MAChBxB,EAAQj05B,KAEZi25B,oBAAqBL,EAAiBZ,IAClCY,EAAiBb,IACjBd,EAAQ174B,UAAU294B,WACtBC,mBAAoBP,EAAiBX,IACjChB,EAAQp74B,SAASq94B,YACjBN,EAAiB,KAG7B,CA1E0CQ,CAAcnC,EAASD,EAAiBe,EAAiBC,EAAwBC,GAC3H,CA1GApB,EAAczj6B,UAAUitG,QAAU,CAC9B3kF,KAAM,oBACN8oW,gBAAiB,iBACjBC,YAAa,kBACbv/F,OAAQ,8BACRw/F,aAAc,oBAElBmyiB,EAAczj6B,UAAU0xX,cAAgB,UACxC+xiB,EAAczj6B,UAAU2xX,YAAc,CAClCtkX,MAAO,YACPotB,KAAM,uBACN/yC,KAAM,wBACNkqY,SAAU,wBACVC,SAAU,0BAEd4xiB,EAAczj6B,UAAU8xX,eAAiB,CACrCr3V,KAAM,wBACN/yC,KAAM,uBACNkqY,SAAU,yBACVC,SAAU,yBAEd4xiB,EAAczj6B,UAAU+xX,mBAAqB,cAC7C0xiB,EAAczj6B,UAAUgyX,+BAAiC,OACzDyxiB,EAAczj6B,UAAUiyX,mBAAqB,WA8J7C,IAAIiziB,EAAmB,CAAC,EA0GxB,SAASe,EAA2B9oY,GAChC,IAAK,IAAImQ,KAAYnQ,EACjB,GAAIA,EAAamQ,GAAUwD,WACvB,OAAO,EAGf,OAAO,CACX,CACA,SAASo1X,EAAWC,EAAiBx05B,EAASq/hB,EAAYjohB,GACtD,IAAI78B,EAAO,CAAC,EACZ,IAAK,IAAIilB,KAAUQ,EACfzlB,EAAKilB,EAAOm8hB,UAAYn8hB,EAK5B,OAHI6/hB,IACA9kjB,EAAOk66B,EAAkBl66B,EAAM8kjB,EAAYjohB,IAExCr/B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGw86B,GAAkBj66B,EAC7D,CAIA,SAASk66B,EAAkB7lX,EAAYvP,EAAYjohB,GAC/C,OAAOs94B,EAAkB9lX,GAAY,OAAWA,EAAa5T,GAEjE,SAAuBA,EAAaqE,EAAYjohB,GAC5C,OAAKu94B,EAAoB35X,EAAa5jhB,IAG9BA,EAAQv5B,QAAQsliB,eACnB6X,EAAYqE,YACbrE,EAAYmE,YACZE,EAAW3kjB,MAAQsgjB,EAAYqE,WAAW3kjB,OAC1C2kjB,EAAW1kjB,IAAMqgjB,EAAYqE,WAAW1kjB,KANhCqgjB,EAAYoE,aAO5B,CAXiFw1X,CAAc55X,EAAaqE,EAAYjohB,IAAWiohB,GAAY,EAAOjohB,EACtJ,CAWA,SAASs94B,EAAkBG,EAAaC,EAAcz1X,EAAYsE,EAAWvshB,GACzE,IAAI294B,EAAc,CAAC,EACnB,IAAK,IAAIp5X,KAAYk5X,EAAa,CAC9B,IAAIr15B,EAASq15B,EAAYl5X,GACrBm5X,EAAan5X,GACbo5X,EAAYp5X,GAAYq5X,EAAYx15B,EAAQ6/hB,EAAYsE,EAAWvshB,GAGnE294B,EAAYp5X,GAAYn8hB,CAEhC,CACA,OAAOu15B,CACX,CACA,SAASC,EAAYh6X,EAAaqE,EAAYsE,EAAWvshB,GACrD,IAAI,QAAEv5B,EAAO,YAAE00iB,GAAgBn7gB,EAC3B694B,EAAY794B,EAAQi7gB,YAAYyM,gBAAgB9D,EAAYgE,aAC5DS,GAAU,IAAA7viB,KA0Cd,OAzCAql6B,EAAUlh1B,MAAM,CACZind,cACAl5hB,MAAOu9hB,EACPsE,YACAvshB,WACAib,IACA,IAAI,UAAEsqgB,GAActqgB,EAChBx0C,EAAQuniB,qBACRuX,EAAY9+iB,EAAQuniB,mBAAmB92hB,KAAKikiB,EAAaoK,EAAWtqgB,EAAIiqD,WAAaqgd,GAErF3B,EAAYwD,UACZ7B,EAAY3B,EAAYwD,QAAQlwiB,KAAKikiB,EAAaoK,EAAWtqgB,EAAIiqD,WAAaqgd,GAElFvlhB,EAAQuqE,SAAS,CACb1jF,KAAM,iBACN09hB,SAAUX,EAAYW,SACtB8D,UACAJ,aACA1C,eAEJzkiB,IACA,IAAIg95B,GAAe,EACfr36B,EAAQsniB,qBACRtniB,EAAQsniB,mBAAmB72hB,KAAKikiB,EAAar6hB,GAC7Cg95B,GAAe,GAEfl6X,EAAYyD,UACZzD,EAAYyD,QAAQvmiB,GACpBg95B,GAAe,GAEdA,GACDr04B,QAAQ/lB,KAAK5C,EAAMmmF,QAASnmF,GAEhCkf,EAAQuqE,SAAS,CACb1jF,KAAM,sBACN09hB,SAAUX,EAAYW,SACtB8D,UACAJ,aACAnniB,YAGDngB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgjjB,GAAc,CAAEmE,YAAY,EAAMC,cAAeK,GAC5F,CASA,SAAS01X,EAAqB3pY,EAAcp0gB,GACxC,OAAO,OAAWo0gB,EAAewP,GAAgB25X,EAAoB35X,EAAa5jhB,GACtF,CAmBA,SAASu94B,EAAoB35X,EAAa5jhB,GAEtC,OADWA,EAAQi7gB,YAAYyM,gBAClB9D,EAAYgE,aAAao2X,WAC1C,CAEA,SAASC,EAAoBC,EAAkBzz0B,GAC3C,OAAQA,EAAO5jF,MACX,IAAK,iBACD,OAAO,KACX,IAAK,eACD,OAAO4jF,EAAOwzW,UAClB,QACI,OAAOige,EAEnB,CAEA,SAASC,EAAoBC,EAAmB3z0B,GAC5C,OAAQA,EAAO5jF,MACX,IAAK,iBACD,MAAO,GACX,IAAK,eACD,OAAO4jF,EAAOs4iB,gBAClB,QACI,OAAOq7R,EAEnB,CAEA,SAASC,EAAgBC,EAAa7z0B,GAClC,IAAI8z0B,EACJ,OAAQ9z0B,EAAO5jF,MACX,IAAK,mBACD,OAAO,KACX,IAAK,iBAED,OADA035B,EAAU9z0B,EAAOjkG,MACV,CACHm0jB,eAAgB4jX,EAAQ5jX,eACxBE,cAAe0jX,EAAQ1jX,cACvBG,QAASujX,EAAQvjX,SAEzB,QACI,OAAOsjX,EAEnB,CAEA,SAASE,EAAkBC,EAAeh00B,GACtC,IAAIi00B,EACJ,OAAQj00B,EAAO5jF,MACX,IAAK,qBACD,OAAO,KACX,IAAK,mBAED,OADA635B,EAAYj00B,EAAOjkG,MACZ,CACHm0jB,eAAgB+jX,EAAU/jX,eAC1BE,cAAe6jX,EAAU7jX,cACzBG,QAAS0jX,EAAU1jX,SAE3B,QACI,OAAOyjX,EAEnB,CAEA,SAASE,EAAc1lY,EAAiB2lY,EAAyBvjwB,EAAOs6Y,EAAWxa,GAG/E,MAAO,CAAEz4c,OAFIu2c,EAAgBnP,cAAgB+0Y,EAAa5lY,EAAgBnP,cAAemP,EAAiB2lY,EAAyBvjwB,EAAOs6Y,EAAWxa,GAAe,KAEnJ50d,OADJ0yd,EAAgBlP,cAAgB80Y,EAAa5lY,EAAgBlP,cAAekP,EAAiB2lY,EAAyBvjwB,EAAOs6Y,EAAWxa,GAAe,KAExK,CACA,SAAS0jY,EAAaC,EAAgB7lY,EAAiB2lY,EAAyBvjwB,EAAOs6Y,EAAWxa,GAC9F,IAAI4jY,EAAiB,CAAC,EAClBhpX,EAAmB,GACnBipX,GAAW,EACf,IAAK,IAAIrrL,KAAemrL,EAAgB,CACpC,IACIG,EAAaC,EADAJ,EAAenrL,GACU16M,EAAiB2lY,EAAyBvjwB,EAAOs6Y,EAAWxa,GACtG4jY,EAAeprL,GAAesrL,EAAWxhkB,QACzCs4M,EAAiBprjB,QAAQs06B,EAAWlpX,kBACpCipX,EAAWA,GAAYC,EAAWD,QACtC,CACA,MAAO,CAAED,iBAAgBhpX,mBAAkBipX,WAC/C,CAIA,SAASE,EAAaC,EAAYlmY,EAClC2lY,EACAvjwB,EAAOs6Y,EAAWxa,GACd,IAAI3B,EAAsC,QAA9BP,EAAgBrziB,UACxBw56B,EAAwBnmY,EAAgB9P,eAAiB,CAAC,EAC1Dk2Y,EAA8BT,EAAwB3qY,YAAc,CAAC,EACrEqrY,EAAqBrmY,EAAgBhF,YAAc,CAAC,EACpDsrY,EAA8BX,EAAwB1qY,aAAe,CAAC,EACtEsrY,EAAsBvmY,EAAgB/E,aAAe,CAAC,EACtDurY,EAAiBN,EAAaA,EAAWpn7B,MAAM,KAAO,GACtDg+jB,EAAmB,GACnBipX,GAAW,EAgEf,MAAO,CAAEvhkB,QA/DKgikB,EAAe716B,IAAK816B,GAAoBA,EAAe3n7B,MAAM,KAAK6R,IAAKyviB,IACjF,GAAmB,UAAfA,EAEA,OADA2lY,GAAW,EACJ,CAAE3lY,cAEb,IAAIK,EACAiB,EACAglY,EACAC,EACA3rY,EACA8oY,EAEJ,GAAKrjY,EAAoB0lY,EAAsB/lY,GAC3CsmY,EAAe/ynB,IACP8sP,EAAkBzya,OAClByya,EAAkBzya,MAAM/vH,KAAK01S,EAAGhoT,OAAQgoT,EAAIA,EAAGhoT,UAGtDg76B,EAAavkwB,EAAMo+X,yBAAyBC,MACxCkmY,EAAavkwB,EAAMk+X,aAAaF,EAAYG,MAC5CvF,EAAayF,EAAkB/ygB,MACpCo24B,EAAarjY,EAAkB5ob,MAAQ4ob,EAAkB/ygB,UAExD,GAAKg0gB,EAAWgb,EAAUtc,GAAc,CACzC0c,EAAiBprjB,KAAK0uiB,GACtBsmY,EAAc,KACVxkY,EAAYma,WAAWjc,KAE1BpF,EAAa0G,EAASiiY,sBAClBgD,EAAavkwB,EAAMk+X,aAAaF,EAAYG,MAC5CvF,EAAa0G,EAASkiY,mBAC3B,IAAIgD,EAAellY,EAASiiY,oBACxBjiY,EAASkiY,kBACbE,GAAa,OAAmBpiY,EAASmiY,qBACrCniY,EAASqiY,oBACT/jY,EAAgBhH,SAAU,CAAC4tY,EAAcxmY,GAC7CwmY,EACJ,MACK,GAAI1kY,EAAY9B,GAOjB,GANAsmY,EAAc,KACVxkY,EAAY9B,OAEfpF,EAAaorY,EAA4BhmY,MACrCumY,EAAavkwB,EAAMk+X,aAAaF,EAAYG,MAC5CvF,EAAaqrY,EAAmBjmY,IAClB,aAAfA,GAA4C,aAAfA,EAA2B,CACxD,IAAIymY,EAA4B,aAAfzmY,EAA4B,OAAS,OACtD0jY,GAAa,OAAmBwC,EAA4BO,IACxDN,EAAoBM,GAAa,CACjCR,EAAmBhr1B,MAAQ,OAC3B,QACDgr1B,EAAmBjmY,GAC1B,MAEI0jY,EAAcgD,IAAY,OAAmBR,EAA4BlmY,IACrEmmY,EAAoBnmY,GAAa,CACjCimY,EAAmBS,IAAYA,EAC/BA,GACDT,EAAmBjmY,IAG9B,MAAO,CAAEA,aAAYsmY,cAAaC,aAAY3rY,aAAY8oY,iBAE5ChnX,mBAAkBipX,WACxC,CAGA,MAAMgB,EACF,WAAA1o6B,CAAYuP,EAAMq0hB,EAAgBH,GAC9BlkiB,KAAKgQ,KAAOA,EACZhQ,KAAKqkiB,eAAiBA,EACtBrkiB,KAAKkkiB,QAAUA,CACnB,CACA,YAAI3hjB,GACA,OAAOyd,KAAKqkiB,iBAAiBC,WACjC,CACA,SAAIhuf,GACA,OAAOt2C,KAAKqkiB,iBAAiB+kY,SACjC,CACA,eAAIC,GACA,OAAOrp6B,KAAKkkiB,QAAQl6S,OAAOhqP,KAAKqkiB,iBAAiBkN,YAAYvH,YAAYv9iB,MAC7E,CACA,aAAI686B,GACA,OAAOtp6B,KAAKkkiB,QAAQl6S,OAAOhqP,KAAKqkiB,iBAAiBkN,YAAYvH,YAAYt9iB,IAC7E,CACA,gBAAI686B,GACA,OAAOvp6B,KAAKkkiB,QAAQl6S,OAAOhqP,KAAKqkiB,iBAAiBkN,YAAYjH,aAAa79iB,MAC9E,CACA,cAAI+86B,GACA,OAAOxp6B,KAAKkkiB,QAAQl6S,OAAOhqP,KAAKqkiB,iBAAiBkN,YAAYjH,aAAa59iB,IAC9E,CACA,SAAA2rT,CAAU9kT,GACN,OAAOyM,KAAKqkiB,iBAAiBz0iB,QAAQ2D,EACzC,EAiBJ,MAAMk26B,EAAyB3G,EAAa,CACxCvv6B,KAAM,qBACNs9iB,gBAAiB,CAhBE,CACnBs2X,aAAa,EACbr2X,UAAUxS,GACFhqiB,MAAMyb,QAAQuuhB,EAAQ/0gB,QACf+0gB,EAAQ/0gB,OAEZ,KAEX,KAAAu8D,CAAMnuB,EAAK2nvB,GACPA,EAAgB,CACZ5wQ,UAAW/2e,EAAIo1e,YAAYh1gB,MAEnC,MAoBE2x4B,EAAwB5G,EAAa,CACvCvv6B,KAAM,oBACNs9iB,gBAAiB,CAfE,CACnBC,UAAUxS,GACwB,mBAAnBA,EAAQ/0gB,OACR+0gB,EAAQ/0gB,OAEZ,KAEX,KAAAu8D,CAAMnuB,EAAK2nvB,EAAiBC,GACxB,MAAM,QAAEr7Q,GAAYvse,EAAIxuC,QAClBurE,EAAO/8B,EAAIo1e,YAAYh1gB,MAC7B,IAAA2rD,GAAYgR,EAAKh5C,KAAK,MAAM,OAA0Bic,EAAI9jD,MAAOqwhB,IAAYwK,GAAc4wQ,EAAgB,CAAE5wQ,cAAc6wQ,EAC/H,MAsCEoqH,EAA4B7G,EAAa,CAC3Cvv6B,KAAM,oBACN89iB,oBAjCoC,CACpC9sgB,OAAQhkC,OACRq9sB,YAAa,IACbzoL,WAAY50hB,OACZ60hB,SAAU70hB,OACV80hB,cAAe90hB,QA6BfswiB,gBAAiB,CA1BA,CACjBC,UAAUxS,IACFA,EAAQ7wc,KAA2B,SAAnB6wc,EAAQ9/f,QAAsB8/f,EAAQ9/f,OAWnD,KAVI,CACHivD,IAAK6wc,EAAQ7wc,IACbjvD,OAAQ,OACR+F,QAAS+5f,EAAQ/5f,QAAU,OAAO5xB,cAClCirsB,YAAat/K,EAAQs/K,YACrBzoL,WAAYmJ,EAAQnJ,WACpBC,SAAUkJ,EAAQlJ,SAClBC,cAAeiJ,EAAQjJ,eAKnC,KAAAvvc,CAAMnuB,EAAK2nvB,EAAiBC,GACxB,MAAM,KAAExnxB,GAAS4/B,EAAIo1e,YACf68X,EAWd,SAA4B7x4B,EAAMlkB,EAAOsV,GACrC,IACIgsgB,EACAC,EACAC,EACAw0Y,GAJA,QAAE3lY,EAAO,QAAEt0iB,GAAYu5B,EAKvBg3B,EAAS,CAAC,EA4Bd,OA3BAg1e,EAAap9f,EAAKo9f,WACA,MAAdA,IACAA,EAAavliB,EAAQuliB,YAEzBC,EAAWr9f,EAAKq9f,SACA,MAAZA,IACAA,EAAWxliB,EAAQwliB,UAEvBC,EAAgBt9f,EAAKs9f,cACA,MAAjBA,IACAA,EAAgBzliB,EAAQyliB,eAKxBw0Y,EAF4B,mBAArB9x4B,EAAK6lrB,YAEU7lrB,EAAK6lrB,cAIL7lrB,EAAK6lrB,aAAe,CAAC,EAE/C9ztB,OAAOC,OAAOo2D,EAAQ0p3B,GACtB1p3B,EAAOg1e,GAAc+O,EAAQrC,UAAUhuhB,EAAMpnB,OAC7C0zD,EAAOi1e,GAAY8O,EAAQrC,UAAUhuhB,EAAMnnB,KAClB,UAArBw3iB,EAAQxT,WACRvwe,EAAOk1e,GAAiB6O,EAAQxT,UAE7Bvwe,CACX,CA9C8B2p3B,CAAmB/x4B,EAAM4/B,EAAI9jD,MAAO8jD,EAAIxuC,UAC9D,IAAApP,GAAYge,EAAKwM,OAAQxM,EAAK01D,IAAKm80B,GAAe/y6B,KAAK,EAAE63iB,EAAWrgd,MAChEixtB,EAAgB,CAAE5wQ,YAAWrgd,cAC9BkxtB,EACP,MA4CEwqH,EAA4B,CAC9Bv2X,WAAY,IACZ3kiB,UAAW,IACX03b,QAAS,IACTrhc,SAAU,IACV8k6B,WAAY,IACZC,SAAU,KAuFd,SAASC,EAAmBp34B,EAAQ3J,GAChC,IAAIgh5B,GAAiB,OAAkBhh5B,EAAQk7gB,iBAAiB9G,cAChE,GAA8B,IAA1B4sY,EAAe/16B,QACG,IAAlB0+B,EAAO1+B,QACPE,MAAMyb,QAAQo65B,EAAe,GAAGl5X,OAChC38iB,MAAMyb,QAAQ+iB,EAAO,IAMrB,YALA3J,EAAQuqE,SAAS,CACb1jF,KAAM,mBACN09hB,SAAUy8X,EAAe,GAAGz8X,SAC5BgB,UAAW57gB,EAAO,KAI1B,IAAIg1nB,EAAY,GAChB,IAAK,IAAI7lqB,KAAS6wC,EAAQ,CACtB,IAAIs34B,GAAa,EACjB,IAAK,IAAI/k7B,EAAI,EAAGA,EAAI8k7B,EAAe/16B,OAAQ/O,GAAK,EAC5C,GAAI8k7B,EAAe9k7B,GAAG4rjB,OAAShvjB,EAAO,CAClCko7B,EAAep94B,OAAO1nC,EAAG,GACzB+k7B,GAAa,EACb,KACJ,CAECA,GACDtiR,EAAUh0pB,KAAK7R,EAEvB,CACA,IAAK,IAAIoo7B,KAAiBF,EACtBhh5B,EAAQuqE,SAAS,CACb1jF,KAAM,sBACN09hB,SAAU28X,EAAc38X,WAGhC,IAAK,IAAI48X,KAAYxiR,EACjB3+nB,EAAQm7gB,YAAYwc,eAAewpX,EAE3C,CAiBA,MAAMC,EAAgB,CAClBd,EACAC,EACAC,EA1GgC7G,EAAa,CAC7Cvv6B,KAAM,yBACN+4iB,eAAgB,CApCJ,CACZ,KAAAl0gB,CAAMkmgB,EAAS4F,GACX,GAAI5F,EAAQkV,YAAclV,EAAQzvhB,WAAayvhB,EAAQ/3F,SAAW+3F,EAAQ0rY,YAAc1rY,EAAQ2rY,SAAU,CACtG,IAQI/k6B,EARAsl6B,EAAgB,CAChBh3X,WAAYlV,EAAQkV,YAAc,KAClC3kiB,UAAWyvhB,EAAQzvhB,WAAa,KAChC03b,QAAS+3F,EAAQ/3F,SAAW,KAC5Byje,WAAY1rY,EAAQ0rY,WAAa9lY,EAAQ/D,aAAa7B,EAAQ0rY,YAAc,KAC5EC,SAAU3rY,EAAQ2rY,SAAW/lY,EAAQ/D,aAAa7B,EAAQ2rY,UAAY,KACtE/lY,WASJ,OANI5F,EAAQp5hB,WACRA,EAAWo5hB,EAAQp5hB,WAElBA,GAAYo5hB,EAAQzvhB,WAAayvhB,EAAQ/3F,UAC1Crhc,GAAW,IAAAjiB,GAAkBq7iB,EAAQ/3F,QAAS+3F,EAAQzvhB,YAEnD,CACH0+hB,YAAatmd,SAASq3c,EAAQzvhB,YAAcyvhB,EAAQ/3F,SACpDrhc,WACAuniB,SAAU+9X,EAElB,CACA,OAAO,IACX,EACA,MAAA1ib,CAAO2kD,EAAUR,EAAc/H,GAC3B,IAAIumY,GAAsB,OAAgBx+X,EAAc,CAAEx/iB,MAAOggjB,EAASu9X,WAAYt96B,IAAK+/iB,EAASw9X,WACpG,OAAIQ,EAWZ,SAAsBj3X,EAAY3kiB,EAAW675B,EAAcC,EAAiB1+X,GACxE,IAAI2+X,EAAUp3X,GAAa,OAAYA,GAAc,KACjDq3X,GAAY,OAAW5+X,EAAax/iB,OACpCuhjB,EAAY/B,EAAav/iB,IACzBo+6B,EAAiB,GAYrB,IAVIj85B,IACIA,EAAU6lS,aAAe,EAEzBs5P,GAAY,OAAQA,EAAW,GAE1Bn/hB,EAAU6lS,cAAgB,QAE/Bm2nB,GAAY,OAAQA,GAAY,KAGjCA,EAAY78X,GAAW,CAC1B,IAAI+8X,EAECH,IAAWA,EAAQC,EAAUpkrB,eAE1BskrB,EADAl85B,EACgB875B,EAAgBr36B,IAAIu36B,EAAWh85B,GAG/Bg85B,EAEpBC,EAAeh36B,KAAK626B,EAAgBxqY,aAAauqY,EAAa1grB,OAAO+grB,MAEzEF,GAAY,OAAQA,EAAW,EACnC,CACA,OAAOC,CACX,CAzCmBE,CAAav+X,EAAS+G,WAAY/G,EAAS59hB,UAAW49hB,EAASvI,QAASA,EAASumY,GAErF,EACX,IAKAp8X,cAAe07X,IAmCSjH,EAAa,CACrCvv6B,KAAM,iBACNgw6B,qBAAsB,CAClB,MAAAh64B,CAAOA,EAAQJ,GACX+g5B,EAAmB,CAAC3g5B,GAASJ,EACjC,EACAo0gB,aAAc2sY,KAiElBpH,EAAa,CACTvv6B,KAAM,OACN0v6B,eAAgB,CACXtz6B,GAAU026B,EAA2B126B,EAAM4tiB,eAEhDkmY,gBAAiB,CACblyX,YA3BZ,SAA2BA,EAAapohB,GACpCA,EAAQyrG,QAAQzvE,QAAQ,WAAYr7D,OAAOC,OAAOD,OAAOC,OAAO,CAAC,GAAG,OAA0BwnjB,EAAYvH,YAAa7ghB,EAAQ+6gB,UAAW,CAAExiW,KAAMv4K,EAAQ46gB,UAC9J,EA0BYiI,WAxBZ,SAA0BA,EAAY7ihB,GAClC,IAAI,QAAEyrG,GAAYzrG,EACdyrG,EAAQ0+a,YAAY,cACpB1+a,EAAQzvE,QAAQ,aAAa,OAAe6mf,EAAY7ihB,GAEhE,MAwBA,MAAM8h5B,EACF,WAAAxq6B,CAAYyq6B,EAAerkZ,GACvB7mhB,KAAKkr6B,cAAgBA,EACrBlr6B,KAAK6mhB,cAAgBA,EACrB7mhB,KAAK48G,MAAQ,GACb58G,KAAKmr6B,cAAgB,IAAI,EAAAly5B,EAAcjZ,KAAKyjiB,MAAM/nf,KAAK17C,MAC3D,CACA,OAAA4nR,CAAQp8B,EAAM/nN,GACVzjC,KAAK48G,MAAM9oH,KAAK03P,GAChBxrP,KAAKmr6B,cAAcvjpB,QAAQnkP,EAC/B,CACA,KAAAuvF,CAAMrqG,GACF3oB,KAAKmr6B,cAAcn4yB,MAAMrqG,EAC7B,CACA,MAAAsqG,CAAOtqG,EAAOgyb,GACV36c,KAAKmr6B,cAAcl4yB,OAAOtqG,EAAOgyb,EACrC,CACA,KAAA8oF,GACI,IAAI,MAAE7mb,GAAU58G,KAChB,KAAO48G,EAAMxoH,QAAQ,CACjB,IACIo3P,EADA4/qB,EAAiB,GAErB,KAAQ5/qB,EAAO5uI,EAAM10E,SACjBloC,KAAKqr6B,QAAQ7/qB,GACb4/qB,EAAet36B,KAAK03P,GAExBxrP,KAAKknhB,QAAQkkZ,EACjB,CACJ,CACA,OAAAC,CAAQ7/qB,GACAxrP,KAAKkr6B,eACLlr6B,KAAKkr6B,cAAc1/qB,EAE3B,CACA,OAAA07R,CAAQkkZ,GACApr6B,KAAK6mhB,eACL7mhB,KAAK6mhB,cAAcukZ,EAE3B,EAIJ,SAASE,EAAW/5X,EAAavN,EAAaE,GAC1C,IAAIrwhB,EAQJ,OALIA,EADA,iBAAiB3xB,KAAKqvjB,EAAY9H,kBAC1B8H,EAAYjH,aAGZiH,EAAYvH,YAEjB9F,EAAQxV,YAAY76gB,EAAMpnB,MAAOonB,EAAMnnB,KAAK,OAAgBs3iB,EAAY/I,aAOnF,SAA0BsW,GACtB,IAAI,iBAAE9H,GAAqB8H,EAC3B,GAAyB,SAArB9H,EACA,MAAO,CAAEhsd,KAAM,WAEnB,GAAyB,UAArBgsd,EACA,MAAO,CAAEhsd,KAAM,UAAWF,MAAO,QAErC,IAAIgW,GAAO,OAAcg+c,EAAYjH,aAAa79iB,MAAO8kjB,EAAYjH,aAAa59iB,KAClF,OAAa,OAAT6mG,GAAiBA,EAAO,EAEjB,CAAE9V,KAAM,UAAWF,MAAO,QAASD,IAAK,WAG5C,CAAEG,KAAM,UAAWF,MAAO,OAAQD,IAAK,UAClD,CAtBkGiu1B,CAAiBh6X,IAAe,CAC1H7P,eAAgB6P,EAAYzH,cAC5B5Z,iBAAkB8T,EAAY5Q,qBAEtC,CAuBA,MAAMo4Y,EACF,WAAA/q6B,GACIT,KAAKyr6B,eAAiB,IAAIv46B,GAC9B,CACA,WAAA8nnB,CAAY92E,EACZwnY,GACI,MAAM94X,EAAa5yiB,KAAKkkiB,QACxB,GAAIA,IAAY0O,IACY,mBAAb84X,EACP1r6B,KAAK2r6B,MAAQD,EAEP94X,IACN5yiB,KAAK4r6B,cAAgB1nY,EAAQl6S,OAAO0hrB,EAC9BxnY,EAAQ/D,aAAaurY,GACrBxnY,EAAQ7D,mBACdrgiB,KAAK6r6B,iBAAmBhj6B,KAAKC,OAEjC9I,KAAKkkiB,QAAUA,EAEX0O,GACA,IAAK,MAAMk5X,KAAiB9r6B,KAAKyr6B,eAAe7i5B,SAC5Ckj5B,GAIhB,CACA,aAAAphY,GACI,OAAO1qiB,KAAK4r6B,cACN5r6B,KAAKkkiB,QAAQ5D,kBAAkBtgiB,KAAK4r6B,cAAcj1tB,WAC/C9tM,KAAKC,MAAQ9I,KAAK6r6B,mBACrB7r6B,KAAKkkiB,QAAQ/D,aAAangiB,KAAK2r6B,QACzC,CACA,gBAAAjuX,CAAiBx/f,GACbl+C,KAAKyr6B,eAAen46B,IAAI4qD,EAC5B,CACA,mBAAAy/f,CAAoBz/f,GAChBl+C,KAAKyr6B,eAAeh14B,OAAOynB,EAC/B,EAKJ,MAAM6t3B,EACF,WAAAtr6B,CAAY2xB,GACRpyB,KAAKgs6B,wBAAyB,OAAQhs6B,KAAKis6B,yBAC3Cjs6B,KAAKki6B,oBAAqB,OAAQA,GAClCli6B,KAAKui6B,aAAc,OAAQA,GAC3Bvi6B,KAAKks6B,iBAriCb,WACI,IAEIC,EAFAC,EAAsB,GACtBC,EAAoB,GAExB,MAAO,CAACC,EAAcC,KACbJ,IAAiB,IAAA9m7B,GAAcin7B,EAAcF,KAAyB,IAAA/m7B,GAAckn7B,EAAYF,KACjGF,EAhEZ,SAA0BK,EAAYD,GAClC,IAAIE,EAAmB,CAAC,EACpBhnrB,EAAQ,CACRs9qB,wBAAoBjs6B,EACpBks6B,SAAU,GACVC,eAAgB,GAChBC,YAAa,GACb70X,cAAe,CAAC,EAChBG,qBAAsB,GACtB6C,oBAAqB,CAAC,EACtBoI,wBAAyB,GACzBizF,2BAA4B,GAC5Bz3F,yBAA0B,GAC1Bs2F,0BAA2B,GAC3BT,oBAAqB,GACrB32F,mBAAoB,GACpBv9b,MAAO,CAAC,EACRuszB,sBAAuB,GACvB5xW,aAAc,KACd6xW,sBAAuB,GACvBC,qBAAsB,GACtBr2R,sBAAuB,GACvB6B,sBAAuB,GACvBC,qBAAsB,GACtBx8Q,aAAc,CAAC,EACfu+K,gBAAiB,GACjB/e,aAAc,KACdwa,eAAgB,GAChBg3X,mBAAoB,KACpBtvY,YAAa,GACbs7G,oBAAqB,KACrBi0R,qBAAsB,CAAC,EACvBC,eAAgB,KAChBh0R,iBAAkB,CAAC,EACnBD,eAAgB,CAAC,EACjBk0R,gBAAiB,CAAC,GAEtB,SAASiJ,EAAQl+vB,GACb,IAAK,IAAIzpD,KAAOypD,EAAM,CAClB,MAAMm+vB,EAAa5nzB,EAAIxxH,KACjBq56B,EAAYH,EAAiBE,QACjB716B,IAAd816B,GACAH,EAAiBE,GAAc5nzB,EAAIhnH,GACnC2u6B,EAAQ3nzB,EAAImxE,MACZuvD,EAAQi+qB,EAAaj+qB,EAAO1gI,IAEvB6nzB,IAAc7nzB,EAAIhnH,IAEvB60B,QAAQ/lB,KAAK,qBAAqB8/5B,KAE1C,CACJ,CAKA,OAJIH,GACAE,EAAQF,GAEZE,EAAQH,GACD9mrB,CACX,CAO2BymrB,CAAiBI,EAAcC,IAElDH,EAAsBE,EACtBD,EAAoBE,EACbJ,EAEf,CAyhCgCU,GACxB7s6B,KAAK8s6B,cAAe,OAAQC,GAC5B/s6B,KAAKgt6B,YAAa,OAAQA,GAC1Bht6B,KAAK8n6B,eAAgB,OAAQA,GAC7B9n6B,KAAK6k6B,gBAAiB,OAAQA,GAC9B7k6B,KAAKit6B,2BAA4B,OAAcA,GAC/Cjt6B,KAAKkt6B,cAAe,OAAQA,GAC5Blt6B,KAAKmt6B,kBAAmB,OAAcA,GACtCnt6B,KAAKot6B,sBAAuB,OAAQA,EAAsB,KAC1Dpt6B,KAAKqt6B,mBAAoB,OAAQA,GACjCrt6B,KAAKst6B,2BAA4B,OAAcA,GAC/Ctt6B,KAAKsr6B,YAAa,OAAQA,GAC1Btr6B,KAAKmkiB,WAAa,IAAIqnY,EACtBxr6B,KAAK40H,QAAU,IAAI,IACnB50H,KAAKut6B,aAAe,IAAItC,EAAWjr6B,KAAKwt6B,cAAc9x3B,KAAK17C,MAAOA,KAAK+pQ,WAAWruN,KAAK17C,OACvFA,KAAKq+iB,4BAA8B,CAAC,EACpCr+iB,KAAKyt6B,8BAAgC,CAAC,EACtCzt6B,KAAK0t6B,wBAA0B,CAAC,EAChC1t6B,KAAK2t6B,0BAA4B,CAAC,EAClC3t6B,KAAKw+iB,+BAAiC,CAAC,EACvCx+iB,KAAK4t6B,mBAAqB,GAC1B5t6B,KAAK6t6B,mBAAqB,GAC1B7t6B,KAAKqkiB,eAAiB,IAAMrkiB,KAAKjK,KACjCiK,KAAK0zF,SAAYE,IACb5zF,KAAKut6B,aAAa3lpB,QAAQh0L,IAE9B5zF,KAAKoyB,MAAQA,EACbpyB,KAAKut6B,aAAav6yB,QAClBhzH,KAAKmkiB,WAAa,IAAIqnY,EACtB,IAAIxG,EAAyB,CAAC,EAC1B8I,EAAc9t6B,KAAK+t6B,mBAAmB374B,EAAM2y4B,gBAAiBC,EAAwB5y4B,EAAMkygB,aAC3F0pY,EAAkBF,EAAY1rY,gBAAgBpO,aAAe85Y,EAAY1pY,YAAYpQ,YACrFi6Y,EAAkBju6B,KAAKgs6B,uBAAuBgC,EAAiBF,EAAa174B,EAAM2y4B,gBAAiBC,GAGvG5y4B,EAAMkygB,YAAY0Z,mBAAqBh+iB,KACvCA,KAAK40H,QAAQq+a,eAAe7ghB,EAAMkygB,aAClCtkiB,KAAK40H,QAAQt/H,WAAW246B,EAAgBr+6B,SACxC,IAAIs+6B,EAAkB,CAClB/pY,WAAYnkiB,KAAKmkiB,WACjBD,QAAS4pY,EAAY5pY,QACrBt0iB,QAASk+6B,EAAY1rY,gBACrBgC,YAAa0pY,EAAY1pY,YACzBE,YAAalygB,EAAMkygB,YACnB5wc,SAAU1zF,KAAK0zF,SACfkhC,QAAS50H,KAAK40H,QACdyva,eAAgBrkiB,KAAKqkiB,gBAErBiF,EAr0BZ,SAAwB15iB,EAASs0iB,EAASC,GACtC,IAAIgqY,EAAmBv+6B,EAAQgniB,YAE/B,OAAwB,MAApBu3Y,EACOjqY,EAAQ/D,aAAaguY,GAEzBhqY,EAAWuG,eACtB,CA8zB0B0jY,CAAeN,EAAY1rY,gBAAiB0rY,EAAY5pY,QAASlkiB,KAAKmkiB,YACpFoN,EAAc08X,EAAgBhqY,qBAAqByF,MAAMJ,IACxD,OAAoBiI,EAAYvH,YAAaV,KAC9CA,EAAciI,EAAYjH,aAAa79iB,OAG3C,IAAK,IAAIyiB,KAAY4+5B,EAAY1pY,YAAY8+X,YACzCh05B,EAASg/5B,GAGb,IAAI3wY,EAtyBZ,SAA0B6E,EAAiBmP,EAAapohB,GACpD,IAAI6ghB,EAAcuH,EAAcA,EAAYvH,YAAc,KAC1D,OAAOs8X,EAAW,CAAC,EA2IvB,SAA6B/B,EAAYp74B,GACrC,IAAIk1gB,GAAW,OAAyBl1gB,GACpCkl5B,EAAa,GAAGrg7B,OAAOu26B,EAAWhnY,cAAgB,IAClDxrhB,EAAU,GACVwy5B,EAAWjnY,eACX+wY,EAAWl31B,QAAQot1B,EAAWjnY,eAE9BinY,EAAWh74B,QACX8k5B,EAAWl31B,QAAQot1B,EAAWh74B,QAElC,IAAK,IAAI+k5B,KAAaD,EAAY,CAC9B,IAAI985B,GAAS,IAAApR,GAAiBmu6B,EAAWnl5B,EAASk1gB,GAC9C9shB,GACAQ,EAAQje,KAAKyd,EAErB,CACA,OAAOQ,CACX,CA5J0Bw85B,CAAoBnsY,EAAiBj5gB,GAAU6ghB,EAAa7ghB,EACtF,CAmyB2Bql5B,CAAiBV,EAAY1rY,gBAAiBmP,EAAa28X,GAC1El6f,EAAe,CACfgxf,yBACAgJ,kBACA1kY,cACAiI,cACA5a,cAAe32hB,KAAKst6B,0BAA0BY,GAC9C3wY,eACAqa,aAAc,CAAC,EACf5L,YAAY,SACZyiY,sBAAsB,SACtB3uX,cAAe,KACfwD,eAAgB,GAChBN,UAAW,KACXE,YAAa,KACb6O,gBAAiB/xjB,KAAKmt6B,iBAAiBe,GAAiBn8W,iBAExD28W,EAAkB5k7B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGmk7B,GAAkBl6f,GACxE,IAAK,IAAI1wN,KAAWwqtB,EAAY1pY,YAAY4+X,SACxCl56B,OAAOC,OAAOiqb,EAAc1wN,EAAQ,KAAM,KAAMortB,IAEhDC,EAAiB36f,EAAck6f,IAC/Blu6B,KAAK40H,QAAQzvE,QAAQ,WAAW,GAEpCnlD,KAAKrQ,MAAQqkb,EACbh0a,KAAK+pQ,aACL/pQ,KAAKut6B,aAAat6yB,QACtB,CACA,YAAA8wP,CAAaghjB,EAAiB6J,GAC1B,IAAI,MAAEx84B,GAAUpyB,UACWlJ,IAAvB836B,EACAx84B,EAAM2y4B,gBAAkBA,GAGxB3y4B,EAAM2y4B,gBAAkBj76B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAIqoC,EAAM2y4B,iBAAmB,CAAC,GAAKA,GACxF/k6B,KAAK4t6B,mBAAmB956B,QAAQ866B,UAET936B,IAAvB836B,GAAoCA,EAAmBx66B,SACvD4L,KAAKut6B,aAAa3lpB,QAAQ,CACtB53Q,KAAM,WAGlB,CACA,aAAAw95B,CAAc550B,GACV,IAAI,MAAExhE,EAAK,MAAEziC,EAAK,QAAEilI,GAAY50H,KAC5Bgl6B,EAn3BZ,SAAsCA,EAAwBpx0B,GAC1D,MACS,eADDA,EAAO5jF,KAEAlmB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGi76B,GAAyB,CAAE,CAACpx0B,EAAOuqd,YAAavqd,EAAOwqd,iBAEvF4mX,CAEnB,CA42BqC6J,CAA6Bl/6B,EAAMq16B,uBAAwBpx0B,GACpFk60B,EAAc9t6B,KAAK+t6B,mBAAmB374B,EAAM2y4B,gBAAiBC,EAAwB5y4B,EAAMkygB,aAC3F0pY,EAh5BZ,SAAwBtvX,EAAU9qd,GAK9B,MAHS,qBADDA,EAAO5jF,OAEP0uiB,EAAW9qd,EAAO8qd,UAEnBA,CACX,CA04B8BowX,CAAen/6B,EAAMq+6B,gBAAiBp60B,GACxDq60B,EAAkBju6B,KAAKgs6B,uBAAuBgC,EAAiBF,EAAa174B,EAAM2y4B,gBAAiBC,GAGvG5y4B,EAAMkygB,YAAY0Z,mBAAqBh+iB,KACvC40H,EAAQq+a,eAAe7ghB,EAAMkygB,aAC7B1va,EAAQt/H,WAAW246B,EAAgBr+6B,SACnC,IAAIs+6B,EAAkB,CAClB/pY,WAAYnkiB,KAAKmkiB,WACjBD,QAAS4pY,EAAY5pY,QACrBt0iB,QAASk+6B,EAAY1rY,gBACrBgC,YAAa0pY,EAAY1pY,YACzBE,YAAalygB,EAAMkygB,YACnB5wc,SAAU1zF,KAAK0zF,SACfkhC,UACAyva,eAAgBrkiB,KAAKqkiB,iBAErB,YAAEiF,EAAW,YAAEiI,GAAgB5hjB,EAC/BqQ,KAAKjK,MAAQiK,KAAKjK,KAAKkuiB,uBAAyBgqY,EAAgBhqY,uBAChEsN,EAAc08X,EAAgBhqY,qBAAqByF,MAAMJ,IAE7DA,EA75BR,SAA2BA,EAAa11c,GACpC,MACS,gBADDA,EAAO5jF,KAEA4jF,EAAOgrd,WAEPtV,CAEnB,CAs5BsBylY,CAAkBzlY,EAAa11c,GAC7C29c,EAl4BR,SAA2BlI,EAAoBz1c,EAAQ01c,EAAarF,GAChE,IAAI+qY,EACJ,OAAQp70B,EAAO5jF,MACX,IAAK,mBACD,OAAOi0hB,EAAqByF,MAAM91c,EAAOgrd,YAActV,GAC3D,IAAK,cACD,OAAOrF,EAAqByF,MAAM91c,EAAOgrd,YAC7C,IAAK,OAED,GADAowX,EAAK/qY,EAAqBmF,UAAUC,EAAoBC,GACpD0lY,EAAGlmuB,QACH,OAAOkmuB,EAEX,MACJ,IAAK,OAED,GADAA,EAAK/qY,EAAqB0F,UAAUN,EAAoBC,GACpD0lY,EAAGlmuB,QACH,OAAOkmuB,EAInB,OAAO3lY,CACX,CA62BsB4lY,CAAkB19X,EAAa39c,EAAQ01c,EAAa2kY,EAAgBhqY,sBAC9D,SAAhBrwc,EAAO5jF,MACS,SAAhB4jF,EAAO5jF,OACN,OAAoBuhiB,EAAYjH,aAAchB,KAC/CA,EAAciI,EAAYjH,aAAa79iB,OAE3C,IAAI8wiB,EA72BZ,SAA4BA,EAAc3pc,EAAQ29c,EAAapohB,GAC3D,IAAI6ghB,EAAcuH,EAAcA,EAAYvH,YAAc,KAC1D,OAAQp2c,EAAO5jF,MACX,IAAK,oBACD,OAAOs25B,EAAW/oY,EAAc3pc,EAAO7hF,QAASi4hB,EAAa7ghB,GACjE,IAAK,sBACD,OA4CUo94B,EA5CUhpY,EA4COmQ,EA5CO95c,EAAO85c,UA6C1C,OAAW64X,EAAkBx5X,GAAgBA,EAAYW,WAAaA,GA5CzE,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAI6D,EACOi1X,EAAkBjpY,EAAcyM,EAAa7ghB,GAEjDo0gB,EACX,IAAK,sBACD,OAAOkpY,EAAkBlpY,EAAc3pc,EAAO6hd,WAC1C,OAAY7hd,EAAO6hd,WACnByxX,EAAqB3pY,EAAcp0gB,GAAU6ghB,EAAap2c,EAAO8hd,YAAa,EAAOvshB,GAC7F,IAAK,iBACL,IAAK,sBACD,OAyGZ,SAAyBw3hB,EAAYjT,EAAU8D,EAASJ,GACpD,IAAIrE,EAAc4T,EAAWjT,GAC7B,OAAIX,GACAyE,IAAYzE,EAAYoE,cACjBrnjB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG42jB,GAAa,CAAE,CAACjT,GAAW5jjB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgjjB,GAAc,CAAEmE,YAAY,EAAOE,iBAElIuP,CACX,CAhHmBuuX,CAAgB3xY,EAAc3pc,EAAO85c,SAAU95c,EAAO49c,QAAS59c,EAAOw9c,YACjF,IAAK,2BACD,MAAO,CAAC,EACZ,QACI,OAAO7T,EAyBnB,IAAsBgpY,EAAiB74X,CAvBvC,CAk1B2ByhY,CAAmBx/6B,EAAM4tiB,aAAc3pc,EAAQ29c,EAAa28X,GAC3EliY,GAAa,OAAiBr8iB,EAAMq8iB,WAAYp4c,EAAQ2pc,EAAcgU,EAAa28X,GAEnFO,EADkBpI,EAA2B9oY,KACD0wY,EAAgBr+6B,QAAQ8miB,2BACnE/miB,EAAM8+6B,sBACPziY,GACA,kBAAEojY,EAAiB,gBAAEr9W,GAAoB/xjB,KAAKmt6B,iBAAiBe,GAC/DmB,EAAkBrv6B,KAAKot6B,qBAAqB7vY,GAE5C/qc,EAAW,CACXwy0B,yBACAgJ,kBACA1kY,cACAiI,cACAhU,eACAyO,aACAyiY,uBACA18W,kBACAna,aAVe53iB,KAAKqt6B,kBAAkBoB,EAAqBjgwB,KAAM4gwB,EAAmBC,GAWpF14Y,cAAe32hB,KAAKst6B,0BAA0BY,GAC9CpuX,cAAesnX,EAAoBz36B,EAAMmwjB,cAAelsd,GACxD0vd,eAAgBgkX,EAAoB336B,EAAM2zjB,eAAgB1vd,GAC1Dovd,UAAWwkX,EAAgB736B,EAAMqzjB,UAAWpvd,GAC5Csvd,YAAaykX,EAAkBh46B,EAAMuzjB,YAAatvd,IAElD860B,EAAkB5k7B,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGmk7B,GAAkB170B,GACxE,IAAK,IAAI8wH,KAAWwqtB,EAAY1pY,YAAY4+X,SACxCl56B,OAAOC,OAAOyoG,EAAU8wH,EAAQ3zN,EAAOikG,EAAQ860B,IAEnD,IAAIY,EAAaX,EAAiBh/6B,EAAOu+6B,GACrC5yT,EAAYqzT,EAAiBn80B,EAAU070B,IAEtCoB,GAAch0T,EACf1mf,EAAQzvE,QAAQ,WAAW,GAEtBmq3B,IAAeh0T,GACpB1mf,EAAQzvE,QAAQ,WAAW,GAE/BnlD,KAAKrQ,MAAQ6iG,EACTpgE,EAAMm94B,UACNn94B,EAAMm94B,SAAS370B,EAEvB,CACA,UAAAm2K,GACI,IAAI,MAAE33O,EAAK,MAAEziC,GAAUqQ,KACnB675B,EAAU775B,KAAKjK,KACf+36B,EAAc9t6B,KAAK+t6B,mBAAmB374B,EAAM2y4B,gBAAiBp16B,EAAMq16B,uBAAwB5y4B,EAAMkygB,aACjG2pY,EAAkBju6B,KAAKgs6B,uBAAuBr86B,EAAMq+6B,gBAAiBF,EAAa174B,EAAM2y4B,gBAAiBp16B,EAAMq16B,wBAC/Gjv6B,EAAOiK,KAAKjK,KAAOjM,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAEo6iB,WAAYnkiB,KAAKmkiB,WAAYilY,UAAWpp6B,KAAKsr6B,WAAW376B,EAAM4hjB,YAAa08X,EAAgBr+6B,QAASk+6B,EAAY5pY,SAAUI,YAAalygB,EAAMkygB,YAAa5wc,SAAU1zF,KAAK0zF,SAAUkhC,QAAS50H,KAAK40H,QAASyva,eAAgBrkiB,KAAKqkiB,gBAAkBypY,GAAcG,GAAkBt+6B,GAChV6/6B,EAAiB1B,EAAY1pY,YAAYm/X,qBACzCkM,EAAqB5T,GAAWA,EAAQz5X,gBACxCstY,EAAqB5B,EAAY1rY,gBACrC,GAAIqtY,GAAsBA,IAAuBC,EAAoB,CAC7DD,EAAmB/+Y,WAAag/Y,EAAmBh/Y,WAEnD/giB,EAAM4tiB,aAAexniB,EAAKwniB,aAx4B1C,SAAuCA,EAAcgU,EAAapohB,GAC9D,IAAI6ghB,EAAcuH,EAAcA,EAAYvH,YAAc,KAC1D,OAAOy8X,EAAkBlpY,EAAc2pY,EAAqB3pY,EAAcp0gB,GAAU6ghB,GAAa,EAAM7ghB,EAC3G,CAq4ByDwm5B,CAA8B556B,EAAKwniB,aAAc5tiB,EAAM4hjB,YAAax7iB,GAC7GpG,EAAMq8iB,WAAaj2iB,EAAKi2iB,YAAa,OAAsBj2iB,EAAKi2iB,WAAY6vX,EAAQ33X,QAASnuiB,EAAKmuiB,SAClGv0iB,EAAM8+6B,qBAAuB146B,EAAK046B,sBAAuB,OAAsB146B,EAAK046B,qBAAsB5S,EAAQ33X,QAASnuiB,EAAKmuiB,UAEpI,IAAK,IAAIia,KAAcqxX,GACkC,IAAjDxv6B,KAAK6t6B,mBAAmBtl7B,QAAQ41jB,IAChCsxX,EAAmBtxX,KAAgBuxX,EAAmBvxX,IACtDqxX,EAAerxX,GAAYuxX,EAAmBvxX,GAAapojB,EAGvE,CACAiK,KAAK6t6B,mBAAqB,GACtBz74B,EAAMw94B,QACNx94B,EAAMw94B,OAAO756B,EAErB,CACA,kBAAAg46B,CAAmBhJ,EAAiBC,EAAwB1gY,GAExD,IAAKtkiB,KAAK4t6B,mBAAmBx56B,QACzB2w6B,IAAoB/k6B,KAAK6v6B,uBACzB7K,IAA2Bhl6B,KAAK8v6B,6BAChC,OAAO9v6B,KAAK+v6B,0BAEhB,IAAI,eAAEC,EAAc,YAAE5rY,EAAW,eAAE6gY,EAAc,oBAAEgL,EAAmB,MAAEz01B,GAAWx7E,KAAKkw6B,0BAA0BnL,EAAiBC,GACnImL,GAAmB301B,GACnB,IAAI0od,EAAUlkiB,KAAK8s6B,aAAakD,EAAet/Y,SAAUs/Y,EAAe9x4B,OAAQ8x4B,EAAe97Y,sBAAuB87Y,EAAev1Y,SAAUu1Y,EAAe3/Y,SAAU+T,EAAa6rY,EAAqBD,EAAe78Y,uBACrN2rB,EAAY9+iB,KAAK6k6B,eAAezgY,EAAYxtb,MAAO52G,KAAK6v6B,sBAAuB7v6B,KAAK8v6B,6BAA8B7K,GAClHzgwB,EAAQxkK,KAAKgt6B,WAAWgD,EAAgB5rY,GACxC4a,EAAgBh/iB,KAAK8n6B,cAAckI,EAAgBhw6B,KAAK6v6B,sBAAuBrrwB,EAAOs6Y,EAAWxa,GACrG,OAAOtkiB,KAAK+v6B,0BAA4B,CACpC3tY,gBAAiB4tY,EACjB5rY,cACAF,UACA4a,YACAt6Y,QACAw6Y,gBACAimX,iBACA1mX,oBAAqB0xX,EAAoBl96B,IAEjD,CAEA,yBAAAm96B,CAA0BnL,EAAiBC,GACvC,IAAI,QAAE1vY,EAAO,OAAEp3f,IAAW,OAAgB,CACtC,IACA6m4B,EACAC,IAEAiL,EAAsBjw6B,KAAKki6B,mBAAmB5sY,GAC9CipB,EAAsB0xX,EAAoBl96B,IAC1Cky6B,EAAiBjl6B,KAAKui6B,YAAYrk4B,GAAU+x4B,EAAoB5vsB,YAAak+U,GAAqB3ujB,QAClGw0iB,EAAcpkiB,KAAKks6B,iBAAiBnH,EAAgBr64B,SAAW,GAAI6/4B,GACnElsY,EAAWr+hB,KAAKw+iB,+BAAiC10jB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,KAAuB,KAA6B,KAA2Bq6iB,EAAYorG,kBAAmBprG,EAAYmrG,gBACrP/zjB,EAAQ,CAAC,EACTjtC,GAAM,OAAgB,CACtB,IACA023B,EACAF,EACAC,IAEA1mY,EAAU,CAAC,EACX8xY,EAAapw6B,KAAKq+iB,4BAClBgyX,EAAiBrw6B,KAAKyt6B,8BACtB6C,GAAa,EACjB,IAAK,IAAInyX,KAAc5vgB,GACkC,IAAjDvuC,KAAK4t6B,mBAAmBrl7B,QAAQ41jB,KAAuB5vgB,EAAI4vgB,KAAgBiyX,EAAWjyX,IAAgB,IAA2BA,IAChIA,KAAciyX,GACf,IAA2BjyX,GAAYiyX,EAAWjyX,GAAa5vgB,EAAI4vgB,KACnE7f,EAAQ6f,GAAckyX,EAAelyX,GAEhC9f,EAAS8f,IACd7f,EAAQ6f,GAAc9f,EAAS8f,GAAY5vgB,EAAI4vgB,IAC/CmyX,GAAa,GAGb901B,EAAM2ie,GAAciyX,EAAWjyX,GAWvC,OARImyX,IACAtw6B,KAAKq+iB,4BAA8B9vgB,EACnCvuC,KAAKyt6B,8BAAgCnvY,EACrCt+hB,KAAK6v6B,sBAAwB9K,EAC7B/k6B,KAAK8v6B,6BAA+B9K,GAExChl6B,KAAK6t6B,mBAAmB/56B,QAAQkM,KAAK4t6B,oBACrC5t6B,KAAK4t6B,mBAAqB,GACnB,CACHrJ,WAAYvk6B,KAAKq+iB,4BACjB2xX,eAAgBhw6B,KAAKyt6B,8BACrBrpY,cACA6rY,sBACAhL,iBACAzp1B,QAER,CACA,uBAAAyw1B,CAAwBvtX,EAAUovX,EAAa/I,EAAiBC,GAC5D,IAAIlhY,EAAWgqY,EAAYhvX,UAAUJ,GACrC,IAAK5a,EACD,MAAM,IAAIv8hB,MAAM,aAAam3iB,8EAEjC,IAAI,eAAEsxX,EAAc,MAAEx01B,GAAUx7E,KAAKuw6B,sBAAsBzsY,EAAUgqY,EAAY1pY,YAAa0pY,EAAY7I,eAAgBF,EAAiBC,GAwB3I,OAvBAmL,GAAmB301B,GACnBx7E,KAAKmkiB,WAAW62E,YAAY8yT,EAAY5pY,QAAS8rY,EAAeln6B,KAsBzD,CAAEg7hB,WAAUl0iB,QAASog7B,EAAgB/rY,qBArBjBjkiB,KAAKit6B,0BAA0B,CACtDpvY,0BAA2BiG,EAASgiY,eAAejoY,0BACnDsG,WAAYnkiB,KAAKmkiB,WACjBj/hB,SAAU4+hB,EAAS5+hB,SACnB0liB,aAAc9G,EAAS8G,aACvB9M,eAAgBgG,EAASgiY,eAAehoY,eACxCoG,QAAS4pY,EAAY5pY,QACrBI,YAAatkiB,KAAKoyB,MAAMkygB,YACxB1R,YAAao9Y,EAAep9Y,YAC5BC,YAAam9Y,EAAen9Y,YAC5BoC,oBAAqB+6Y,EAAe/6Y,oBACpCyF,SAAUs1Y,EAAet1Y,SACzBC,cAAeq1Y,EAAer1Y,cAC9BC,cAAeo1Y,EAAep1Y,cAC9BC,WAAYm1Y,EAAen1Y,WAC3B5G,SAAU+7Y,EAAe/7Y,SACzBuW,gBAAiBwlY,EAAej1Y,WAChCsQ,kBAAmB2kY,EAAeh1Y,aAClCF,eAAgBk1Y,EAAel1Y,iBAG+BiJ,QADpD/jiB,KAAKkt6B,aAAaxuX,EAAU1+iB,KAAKqkiB,eAAgBypY,EAAY5pY,SAE/E,CACA,qBAAAqsY,CAAsBzsY,EAAUM,EAAa6gY,EAAgBF,EAAiBC,GAC1E,IAAIz23B,GAAM,OAAgB,CACtB,IACAu1f,EAASgiY,eACTb,EACAF,EACAjhY,EAASihY,gBACTC,IAEA3mY,EAAWv0iB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG,KAAuB,KAA6B,KAA2B,KAAuBq6iB,EAAYorG,kBAAmBprG,EAAYmrG,gBACpPjxG,EAAU,CAAC,EACX8xY,EAAapw6B,KAAK0t6B,wBAClB2C,EAAiBrw6B,KAAK2t6B,0BACtB2C,GAAa,EACb901B,EAAQ,CAAC,EACb,IAAK,IAAI2ie,KAAc5vgB,EACfA,EAAI4vgB,KAAgBiyX,EAAWjyX,IAC9B,IAA2BA,IACxB,IAA2BA,GAAY5vgB,EAAI4vgB,GAAaiyX,EAAWjyX,IACvE7f,EAAQ6f,GAAckyX,EAAelyX,IAGjC5vgB,EAAI4vgB,KAAgBn+iB,KAAKq+iB,4BAA4BF,IACpD,IAA2BA,IACxB,IAA2BA,GAAY5vgB,EAAI4vgB,GAAan+iB,KAAKq+iB,4BAA4BF,IACzFA,KAAcn+iB,KAAKyt6B,gCACnBnvY,EAAQ6f,GAAcn+iB,KAAKyt6B,8BAA8BtvX,IAGxD9f,EAAS8f,GACd7f,EAAQ6f,GAAc9f,EAAS8f,GAAY5vgB,EAAI4vgB,IAG/C3ie,EAAM2ie,GAAc5vgB,EAAI4vgB,GAE5BmyX,GAAa,GAOrB,OAJIA,IACAtw6B,KAAK0t6B,wBAA0Bn/3B,EAC/BvuC,KAAK2t6B,0BAA4BrvY,GAE9B,CACHimY,WAAYvk6B,KAAK0t6B,wBACjBsC,eAAgBhw6B,KAAK2t6B,0BACrBny1B,QAER,EAEJ,SAASux1B,EAAer8Y,EAAU8/Y,EAAgBt8Y,EAAuBuG,EAAUpK,EAAU+T,EAAa6rY,EAAqB//Y,GAC3H,IAAIhyf,EAASqk4B,EAAYiO,GAAkBP,EAAoB5vsB,YAAa4vsB,EAAoBl96B,KAChG,OAAO,IAAI,IAAQ,CACf87hB,eAAgB,UAChB6B,WACAmP,kBAAmBuE,EAAYk/X,mBAC/Bpl4B,SACAg2f,wBACAuG,WACApK,WACAyB,aAAcsS,EAAYtS,aAC1B5B,oBAER,CACA,SAAS88Y,EAAWp96B,EAASw0iB,GAEzB,OAAO,IADUA,EAAY9xK,aAAa1iY,EAAQ2liB,cAAgBsuY,GAC5Cj06B,EAC1B,CACA,SAASq96B,EAA0B764B,GAE/B,OAAO,IADyBA,EAAMyrgB,2BAA6B,KAC9BzrgB,EACzC,CACA,SAAS864B,EAAal95B,EAAMq0hB,EAAgBH,GACxC,OAAO,IAAIilY,EAASn55B,EAAMq0hB,EAAgBH,EAC9C,CACA,SAASkpY,EAAqB7vY,GAC1B,OAAO,OAAQA,EAAewP,GAAgBA,EAAYviK,GAC9D,CACA,SAAS6iiB,EAAkBx0X,EAAWu2X,EAAmBC,GACrD,IAAIz3X,EAAe,CAAE,GAAIw3X,GACzB,IAAK,IAAIvjY,KAASgN,EAAW,CACzB,IAAI9zb,EAAM8zb,EAAUhN,GAChB9mb,EAAI2ob,UAAY2hY,EAAgBtqzB,EAAI2ob,YACpCkK,EAAa/L,GAASwjY,EAAgBtqzB,EAAI2ob,UAElD,CACA,OAAOkK,CACX,CACA,SAASu1X,EAAiBe,GACtB,IAAI,QAAEt+6B,GAAYs+6B,EAClB,MAAO,CACHkB,mBAAmB,OAAc,CAC7B5y3B,QAAS5sD,EAAQwniB,aACjBhtW,SAAUx6L,EAAQw6L,SAClBslX,cAAe9/iB,EAAQyniB,mBACvBsY,iBAAkB//iB,EAAQ0niB,sBAC1B9lb,WAAY5hH,EAAQ4niB,gBACpBoY,QAAyC,kBAAzBhgjB,EAAQ2niB,aAA6B3niB,EAAQ2niB,kBAAezgiB,EAC5E+4iB,MAAOjgjB,EAAQ6niB,WACfzugB,gBAAiBp5B,EAAQ8niB,qBACzBzugB,YAAar5B,EAAQ+niB,iBACrBlid,UAAW7lF,EAAQgoiB,eACnB5wgB,MAAOp3B,EAAQioiB,YAEhBq2Y,GACHn8W,iBAAiB,OAAc,CAC3Bvgd,WAAY5hH,EAAQsoiB,iBACpB0X,QAA0C,kBAA1BhgjB,EAAQuoiB,cAA8BvoiB,EAAQuoiB,mBAAgBrhiB,EAC9E+4iB,MAAOjgjB,EAAQwoiB,aAChB81Y,GAEX,CACA,SAASS,EAAiBh/6B,EAAOw5B,GAC7B,IAAK,IAAIsn5B,KAAiBtn5B,EAAQi7gB,YAAY6+X,eAC1C,GAAIwN,EAAc9g7B,GACd,OAAO,EAGf,OAAO,CACX,CACA,SAAS296B,EAA0BY,GAC/B,OAAO,OAAmBA,EAAgBt+6B,QAAQ+miB,cAAeu3Y,EACrE,CACA,SAASiC,GAAmBvg7B,EAAS8g7B,GACjC,IAAK,IAAIvyX,KAAcvujB,EACnBgjC,QAAQ/lB,KAAK,mBAAmBsxiB,MAC3BuyX,EAAW,cAAcA,KAAc,IAEpD,CAEA,MAAMC,WAAuB,EAAA535B,EACzB,MAAAslD,GACI,IAAIm5C,EAAWx3G,KAAKoyB,MAAMw+4B,aAAa796B,IAAK896B,GAAgB7w6B,KAAK8w6B,kBAAkBD,IACnF,OAAO,OAAc,MAAO,CAAE/m0B,UAAW,uBAAyB0N,EACtE,CACA,iBAAAs5zB,CAAkBD,GACd,IAAI,MAAEz+4B,GAAUpyB,MACZ,MAAEwkK,GAAUxkK,KAAKmpB,QACjBquF,EAAW,GACXu5zB,GAAgB,EACpB,IAAK,IAAIlqkB,KAAUgqkB,EAAa,CAC5B,IAAI,WAAEruY,EAAU,YAAEsmY,EAAW,WAAE1rY,EAAU,WAAE2rY,EAAU,WAAE7C,GAAer/jB,EACtE,GAAmB,UAAf27L,EACAuuY,GAAgB,EAChBv5zB,EAAS1jH,MAAK,OAAc,KAAM,CAAEg2G,UAAW,mBAAoB/rG,GAAIq0B,EAAM+oiB,SAAW/oiB,EAAMkkB,YAE7F,CACD,IAAI063B,EAAYxuY,IAAepwgB,EAAM6+4B,aACjC12e,GAAenoa,EAAM8+4B,gBAAiC,UAAf1uY,IACrCpwgB,EAAM++4B,eAAgC,SAAf3uY,IACvBpwgB,EAAMg/4B,eAAgC,SAAf5uY,EACzB6uY,EAAgB,CAAC,MAAM7uY,WAAqBh+X,EAAM52D,SAAS,WAC3Doj0B,GACAK,EAAcv96B,KAAK0wK,EAAM52D,SAAS,iBAEtC4J,EAAS1jH,MAAK,OAAc,SAAU,CAAEkc,KAAM,SAAUsmC,MAA6B,mBAAf4v3B,EAA4BA,EAAW9z4B,EAAM824B,SAAWhD,EAAYl43B,SAAUusZ,EAAY,eAAgBy2e,EAAWln0B,UAAWun0B,EAAcnz6B,KAAK,KAAMssB,QAASs+4B,GAAe1rY,IAAe2rY,GAAa,OAAc,OAAQ,CAAEj/zB,UAAWi/zB,EAAYzq6B,KAAM,QAAW,KACvV,CACJ,CACA,GAAIk5G,EAASpjH,OAAS,EAAG,CACrB,IAAIk96B,EAAkBP,GAAiBvswB,EAAM52D,SAAS,gBAAmB,GACzE,OAAO,OAAc,MAAO,CAAE9D,UAAWwn0B,MAAqB95zB,EAClE,CACA,OAAOA,EAAS,EACpB,EAGJ,MAAMq5vB,WAAgB,EAAA931B,EAClB,MAAAslD,GACI,IAEIkz2B,EACAC,GAHA,MAAEpzkB,EAAK,eAAEqzkB,GAAmBzx6B,KAAKoyB,MACjCs/4B,GAAW,EAGXxJ,EAAiB9pkB,EAAM8pkB,eACvByJ,EAAgBzJ,EAAe/q6B,OAC/B+q6B,EAAe/96B,MACfun7B,GAAW,EACXH,EAAerJ,EAAe/96B,MAG9Bon7B,EAAerJ,EAAez76B,MAE9By76B,EAAej+6B,OACfyn7B,GAAW,EACXF,EAAatJ,EAAej+6B,OAG5Bun7B,EAAatJ,EAAex76B,IAEhC,IAAIglX,EAAa,CACb+/jB,GAAkB,GAClB,aACAC,EAAW,iBAAmB,IAElC,OAAQ,OAAc,MAAO,CAAE5n0B,UAAW4nQ,EAAWxzW,KAAK,MACtD8B,KAAK03jB,cAAc,QAAS65W,GAAgB,IAC5Cvx6B,KAAK03jB,cAAc,SAAUi6W,GAAiB,IAC9C3x6B,KAAK03jB,cAAc,MAAO85W,GAAc,IAChD,CACA,aAAA95W,CAAcltkB,EAAKom7B,GACf,IAAI,MAAEx+4B,GAAUpyB,KAChB,OAAQ,OAAc2w6B,GAAgB,CAAEnm7B,IAAKA,EAAKom7B,aAAcA,EAAct63B,MAAOlkB,EAAMkkB,MAAO4y3B,QAAS924B,EAAM824B,QAAS+H,aAAc7+4B,EAAM6+4B,aAAcC,eAAgB9+4B,EAAM8+4B,eAAgBC,cAAe/+4B,EAAM++4B,cAAeC,cAAeh/4B,EAAMg/4B,cAAej2W,QAAS/oiB,EAAM+oiB,SAC7R,EAGJ,MAAMy2W,WAAoB,EAAA745B,EACtB,WAAAtY,GACI4yC,SAASl/C,WACT6L,KAAKrQ,MAAQ,CACTuyD,eAAgB,MAEpBliD,KAAKqliB,SAAY9ngB,IACbv9B,KAAKu9B,GAAKA,GACV,OAAOv9B,KAAKoyB,MAAMwwV,MAAOrlV,GACzBv9B,KAAK6x6B,wBAET7x6B,KAAKq+pB,aAAe,KAChBr+pB,KAAK6x6B,uBAEb,CACA,MAAAxz2B,GACI,IAAI,MAAEjsC,EAAK,MAAEziC,GAAUqQ,MACnB,YAAE05C,GAAgBtnB,EAClBs/U,EAAa,CACb,kBACCh4T,GAAetnB,EAAM8hiB,QAAU9hiB,EAAMxrC,OAChC,yBACA,2BAENA,EAAS,GACTukE,EAAgB,GAgBpB,OAfIzR,EAC6B,OAAzB/pD,EAAMuyD,eACNt7D,EAAS+I,EAAMuyD,eAAiBxI,EAOhCyR,EAAoB,EAAIzR,EAAe,IAAvB,IAIpB9yD,EAASwrC,EAAMxrC,QAAU,IAErB,OAAc,MAAO,CAAE,kBAAmBwrC,EAAM0/4B,YAAaj/zB,IAAK7yG,KAAKqliB,SAAUv7b,UAAW4nQ,EAAWxzW,KAAK,KAAMwrB,MAAO,CAAE9iC,SAAQukE,kBAAmB/4B,EAAMolF,SACxK,CACA,iBAAAk7N,GACI1yU,KAAKmpB,QAAQs7gB,iBAAiBzkiB,KAAKq+pB,aACvC,CACA,oBAAA9qV,GACIvzU,KAAKmpB,QAAQu7gB,oBAAoB1kiB,KAAKq+pB,aAC1C,CACA,oBAAAwzQ,GACQ7x6B,KAAKu9B,IACLv9B,KAAKoyB,MAAMsnB,aAEX15C,KAAKN,SAAS,CAAEwiD,eAAgBliD,KAAKu9B,GAAG52C,aAEhD,EAMJ,MAAMor7B,WAAsB,IACxB,WAAAtx6B,CAAYugN,GACR3tK,MAAM2tK,GACNhhN,KAAKgy6B,eAAiB,CAACj8nB,EAAI+3V,KACvB,IAAI,UAAE91kB,GAAch4D,MAChB,QAAEmpB,GAAY6uC,EACd2sQ,GAAM,OAASmpU,GACnB,GAAInpU,GACA3sQ,EAAUsxf,iBAAiBvzQ,EAAGhoT,QAAS,CAGvC,IAAIkk7B,GAAkB,OAAel8nB,EAAGhoT,OAAQ,wBAC5C0/F,EAAMwk1B,EAAkBA,EAAgB106B,cAAc,WAAW0wF,KAAO,GAC5E9kE,EAAQyrG,QAAQzvE,QAAQ,aAAc,CAClC5nB,GAAIuwmB,EACJ3hoB,MAAO,IAAI,IAAU6rD,EAAU7uC,QAASw7S,EAAI20O,WAAWv0b,IAAK4/M,EAAI20O,WAAWjkjB,UAC3E2+iB,QAASj+P,EACTr0G,KAAMv4K,EAAQ46gB,UAEdt2c,IAAQsoN,EAAG/yC,mBACX77Q,OAAO8hG,SAASgF,KAAOR,EAE/B,GAEJztF,KAAKjJ,SAAU,OAAiBiqN,EAASzjL,GAAI,QAAS,YACtDv9B,KAAKgy6B,eACT,EAOJ,MAAME,WAAsB,IACxB,WAAAzx6B,CAAYugN,GACR3tK,MAAM2tK,GAENhhN,KAAKmy6B,oBAAuB504B,IACpBA,IAAOv9B,KAAKoy6B,cACZpy6B,KAAKqy6B,eAAe,KAAMry6B,KAAKoy6B,eAGvCpy6B,KAAKsy6B,eAAiB,CAACv8nB,EAAI+3V,MACnB,OAASA,KACT9toB,KAAKoy6B,aAAetkS,EACpB9toB,KAAKuy6B,aAAa,kBAAmBx8nB,EAAI+3V,KAGjD9toB,KAAKqy6B,eAAiB,CAACt8nB,EAAI+3V,KACnB9toB,KAAKoy6B,eACLpy6B,KAAKoy6B,aAAe,KACpBpy6B,KAAKuy6B,aAAa,kBAAmBx8nB,EAAI+3V,KAGjD9toB,KAAKwy6B,sBAAuB,QAAwBxxtB,EAASzjL,GAAI,YACjEv9B,KAAKsy6B,eAAgBty6B,KAAKqy6B,eAC9B,CACA,OAAAt76B,GACIiJ,KAAKwy6B,sBACT,CACA,YAAAD,CAAaE,EAAc18nB,EAAI+3V,GAC3B,IAAI,UAAE91kB,GAAch4D,MAChB,QAAEmpB,GAAY6uC,EACd2sQ,GAAM,OAASmpU,GACd/3V,IAAM/9O,EAAUsxf,iBAAiBvzQ,EAAGhoT,SACrCo7B,EAAQyrG,QAAQzvE,QAAQst3B,EAAc,CAClCl14B,GAAIuwmB,EACJ3hoB,MAAO,IAAI,IAAUgd,EAASw7S,EAAI20O,WAAWv0b,IAAK4/M,EAAI20O,WAAWjkjB,UACjE2+iB,QAASj+P,EACTr0G,KAAMv4K,EAAQ46gB,SAG1B,EAGJ,MAAM2uY,WAAwB,KAC1B,WAAAjy6B,GACI4yC,SAASl/C,WACT6L,KAAK6jiB,kBAAmB,OAAQ,MAChC7jiB,KAAK2y6B,2BAA4B,OAAQA,IACzC3y6B,KAAK4y6B,mBAAoB,OAAQA,IACjC5y6B,KAAK6y6B,WAAY,UACjB7y6B,KAAK8y6B,WAAY,UACjB9y6B,KAAK+y6B,kBAAoB,CAAC,EAE1B/y6B,KAAKrQ,MAAQ,CACTqj7B,aAAa,WAIjBhz6B,KAAKukiB,6BAA+B,CAACvse,EAAWi72B,KAC5C,IAAIjytB,GAAW,QAAyBhpJ,EAAWi72B,GAM/CC,EALuB,CACvBnB,GACAG,IAE0Clk7B,OAAOgS,KAAKoyB,MAAMgygB,YAAYyqG,uBACtC97oB,IAAKog7B,GAAwB,IAAIA,EAAoBnytB,IAC3FhhN,KAAK+y6B,kBAAkB/62B,EAAUnoD,KAAOqj6B,EACxC,KAAyBl72B,EAAUnoD,KAAOmxM,GAE9ChhN,KAAKwkiB,+BAAkCxse,IACnC,IAAIhkC,EAAYh0B,KAAK+y6B,kBAAkB/62B,EAAUnoD,KACjD,GAAImkB,EAAW,CACX,IAAK,IAAIH,KAAYG,EACjBH,EAAS98B,iBAENiJ,KAAK+y6B,kBAAkB/62B,EAAUnoD,IAC5C,QACO,KAAyBmoD,EAAUnoD,MAI9C7P,KAAKoz6B,aAAe,IAAI,EAAAn65B,EAAc,KAClCjZ,KAAKoyB,MAAMwiG,QAAQzvE,QAAQ,WAAW,GACtCnlD,KAAKoyB,MAAMwiG,QAAQzvE,QAAQ,eAAgB,CAAEu8I,KAAM1hM,KAAKoyB,MAAM2xgB,YAElE/jiB,KAAKg2hB,mBAAsBjgP,IACvB,IAAI,QAAEnmT,GAAYoQ,KAAKoyB,MACnBxiC,EAAQomiB,oBACRjgP,EAAGhoT,SAAW5G,QAEd6Y,KAAKoz6B,aAAaxrpB,QAAQh4R,EAAQqmiB,mBAG9C,CAIA,MAAA53d,GACI,IAIIg12B,GAJA,MAAEjh5B,GAAUpyB,MACZ,cAAEg/iB,EAAa,QAAEpvjB,GAAYwiC,EAC7Bkh5B,GAAY,EACZt8Y,EAAa,GAEb5kgB,EAAM0qhB,cAAgB1qhB,EAAMuqhB,SAC5B3lB,EAAa,GAEU,MAAlBpniB,EAAQhJ,OACb0s7B,GAAY,EAEkB,MAAzB1j7B,EAAQymiB,cACbW,EAAapniB,EAAQymiB,cAGrBg9Y,EAAkB7t7B,KAAKmE,IAAIiG,EAAQ8pD,YAAa,IAEpD,IAAI653B,EAAcvz6B,KAAK6jiB,iBAAiBzxgB,EAAM0xgB,SAAU1xgB,EAAM2xgB,QAAS3xgB,EAAMxiC,QAASwiC,EAAM6xgB,qBAAsB7xgB,EAAM8xgB,QAAS9xgB,EAAM+xgB,WAAY/xgB,EAAMoyI,MAAOpyI,EAAMgygB,YAAahygB,EAAMshE,SAAUthE,EAAMiygB,eAAgBjygB,EAAMwiG,QAASxiG,EAAMkygB,YAAatkiB,KAAKukiB,6BAA8BvkiB,KAAKwkiB,gCAC/RwuY,EAAeh0X,EAAcnzd,QAAUmzd,EAAcnzd,OAAOs80B,SAC1Dno6B,KAAKrQ,MAAMqj7B,iBACXl86B,EACN,OAAQ,OAAc,EAAA0jB,EAAgBwjU,SAAU,CAAEr4V,MAAO4t7B,IACrD,OAAc,KAAU,CAAEn23B,KAAM,OAAUq9f,IACtC,IAAI+4X,EAAexz6B,KAAK4y6B,kBAAkBxg5B,EAAM0xgB,SAAU1xgB,EAAMm/gB,YAAan/gB,EAAM6xgB,qBAAsB7xgB,EAAMk3gB,YAAamR,EAASrohB,EAAMg34B,WAC3I,OAAQ,OAAc,KAAU,KAC5BpqX,EAAcnzd,SAAW,OAAcglxB,GAAS/m3B,OAAOC,OAAO,CAAE8oH,IAAK7yG,KAAK6y6B,UAAWpB,eAAgB,oBAAqBrzkB,MAAO4gN,EAAcnzd,OAAQsve,QAAS63W,GAAeQ,KAC/K,OAAc5B,GAAa,CAAE19W,OAAQo/W,EAAW1s7B,OAAQowiB,EAAYt9e,YAAa253B,EAAiBvB,YAAakB,GAC3Ghz6B,KAAKyz6B,WAAWrh5B,GAChBpyB,KAAK0z6B,sBACT10X,EAActve,SAAW,OAAcmhyB,GAAS/m3B,OAAOC,OAAO,CAAE8oH,IAAK7yG,KAAK8y6B,UAAWrB,eAAgB,oBAAqBrzkB,MAAO4gN,EAActve,OAAQyrf,QAAS,IAAMq4W,OAEtL,CACA,iBAAA9gmB,GACI,IAAI,MAAEtgT,GAAUpyB,KAChBA,KAAK8uoB,qBAAuB18mB,EAAMgygB,YAAY0qG,qBACzC/7oB,IAAK4g7B,GAA6B,IAAIA,EAAyBvh5B,IACpEjrC,OAAO+Q,iBAAiB,SAAU8H,KAAKg2hB,oBACvC,IAAI,gBAAEytY,GAAoBrx4B,EAAMgygB,YAChC,IAAK,IAAI5vb,KAAYivzB,EACjBA,EAAgBjvzB,GAAUpiF,EAAMoiF,GAAWpiF,EAEnD,CACA,kBAAAihT,CAAmBC,GACf,IAAI,MAAElhT,GAAUpyB,MACZ,gBAAEyj6B,GAAoBrx4B,EAAMgygB,YAChC,IAAK,IAAI5vb,KAAYivzB,EACbrx4B,EAAMoiF,KAAc8+N,EAAU9+N,IAC9BivzB,EAAgBjvzB,GAAUpiF,EAAMoiF,GAAWpiF,EAGvD,CACA,oBAAAmhT,GACIpsV,OAAOgR,oBAAoB,SAAU6H,KAAKg2hB,oBAC1Ch2hB,KAAKoz6B,aAAar42B,QAClB,IAAK,IAAI7wC,KAAelqB,KAAK8uoB,qBACzB5knB,EAAYnzB,UAEhBiJ,KAAKoyB,MAAMwiG,QAAQzvE,QAAQ,WAC/B,CACA,kBAAAuu3B,GACI,IAAI,MAAEth5B,GAAUpyB,KACZw3G,EAAWplF,EAAMgygB,YAAYi/X,qBAAqBtw6B,IAAK2g7B,GAAuBA,EAAmBth5B,IACrG,OAAO,OAAc,KAAU,CAAC,KAAMolF,EAC1C,CACA,UAAAi8zB,CAAWrh5B,GACP,IAAI,YAAEgygB,GAAgBhygB,GAClB,SAAE0xgB,GAAa1xgB,EACfwy4B,EAAY,CACZrzX,YAAan/gB,EAAMm/gB,YACnB5a,cAAevkgB,EAAMukgB,cACrBqV,WAAY55gB,EAAMq84B,qBAClB72X,aAAcxlhB,EAAMwlhB,aACpBkI,cAAe1thB,EAAM0thB,cACrBwD,eAAgBlxhB,EAAMkxhB,eACtBN,UAAW5whB,EAAM4whB,UACjBE,YAAa9whB,EAAM8whB,YACnBpG,aAAc1qhB,EAAM0qhB,aACpBH,SAAUvqhB,EAAMuqhB,UAEhBnD,EAAex5iB,KAAK2y6B,0BAA0BvuY,EAAY++X,uBAC9D,IAAK,IAAI97nB,KAAemyQ,EACpB1vjB,OAAOC,OAAO666B,EAAWv9nB,EAAYj+S,UAAUw76B,EAAWxy4B,IAE9D,IAAIwh5B,EAAgB9vY,EAAS9re,UAC7B,OAAQ,OAAc472B,EAAe9p7B,OAAOC,OAAO,CAAC,EAAG666B,GAC3D,EAEJ,SAASgO,GAAkB9uY,EAAUyN,EAAatN,EAAsBqF,EAAaxgiB,EAAKwtC,GAEtF,IAAIu93B,EAAY5vY,EAAqByF,MAAM5giB,OAAKhS,GAAW,GACvDg96B,EAAW7vY,EAAqBmF,UAAUmI,EAAajI,GAAa,GACpEyqY,EAAW9vY,EAAqB0F,UAAU4H,EAAajI,GAAa,GACxE,MAAO,CACHhzf,QACA263B,aAAcntY,EAAS9zhB,KACvBk55B,QAASplY,EAASqb,WAClB+xX,eAAgB2C,EAAU/quB,WAAY,OAAoByoW,EAAYjH,aAAcxhiB,GACpFqo6B,cAAe2C,EAAShruB,QACxBsouB,cAAe2C,EAASjruB,QAEhC,CAGA,SAAS6puB,GAA0BqB,GAC/B,OAAOA,EAAWjh7B,IAAKkh7B,GAAa,IAAIA,EAC5C,CAEA,MAAMC,WAAiB,KACnB,WAAAzz6B,CAAY88B,EAAIwn4B,EAAkB,CAAC,GAC/B1x3B,QACArzC,KAAKm06B,aAAc,EACnBn06B,KAAKo06B,YAAa,EAClBp06B,KAAKq06B,kBAAoB,GACzBr06B,KAAKs06B,sBAAwB,EAC7Bt06B,KAAKu06B,aAAgB3g1B,IAEjB,OAAQA,EAAO5jF,MACX,IAAK,iBACL,IAAK,mBACDhQ,KAAKw06B,aAAavtZ,aAG9BjnhB,KAAKy06B,WAAc1+6B,IACfiK,KAAKwgjB,YAAczqjB,EACnBiK,KAAKw06B,aAAa5spB,QAAQ7xR,EAAKqsiB,gBAAgBxI,gBAEnD55hB,KAAK006B,oBAAsB,KACvB,GAAI106B,KAAKm06B,YAAa,CAClBn06B,KAAKo06B,YAAa,EAClB,IAAI,YAAE5zX,GAAgBxgjB,MACtB,QAAU,MACN,SAAO,OAAc,KAAc,CAAEpQ,QAAS4wjB,EAAYpe,gBAAiB59X,MAAOg8Y,EAAYh8Y,MAAO5vC,QAAS4rb,EAAY5rb,SAAW,CAAC88O,EAAY9qX,EAAQk2jB,EAAcH,KACpK38iB,KAAK206B,cAAcjjkB,GACnB1xW,KAAKwuZ,UAAU5na,IACP,OAAc,KAASo3V,SAAU,CAAEr4V,MAAOqa,KAAKs06B,wBACnD,OAAc5B,GAAiB5o7B,OAAOC,OAAO,CAAE+yjB,aAAcA,EAAcH,SAAUA,GAAY6D,OACrGxgjB,KAAKu9B,KAEjB,MACSv9B,KAAKo06B,aACVp06B,KAAKo06B,YAAa,GAClB,QAAO,KAAMp06B,KAAKu9B,IAClBv9B,KAAK206B,cAAc,IACnB306B,KAAKwuZ,UAAU,OAGvB,QAAkBjxX,GAClBv9B,KAAKu9B,GAAKA,EACVv9B,KAAKw06B,aAAe,IAAI,EAAAv75B,EAAcjZ,KAAK006B,qBAC3C,IAAI3I,EAAoB,CACpBhH,kBACAzgY,YAAatkiB,KACbuv6B,SAAUvv6B,KAAKu06B,aACf3E,OAAQ5v6B,KAAKy06B,YAErB,CACA,MAAAp22B,GACI,IAAIu22B,EAAe506B,KAAKm06B,YACnBS,EAID506B,KAAKs06B,uBAAyB,EAH9Bt06B,KAAKm06B,aAAc,EAKvBn06B,KAAKw06B,aAAa5spB,UACdgtpB,GACA506B,KAAKgkX,YAEb,CACA,OAAAjtX,GACQiJ,KAAKm06B,cACLn06B,KAAKm06B,aAAc,EACnBn06B,KAAKw06B,aAAa5spB,UAE1B,CACA,UAAAo8F,IACI,QAAU,KACN3wU,MAAM2wU,cAEd,CACA,cAAAi6L,CAAevpd,GACX10F,KAAKw06B,aAAaxhzB,MAAM,kBACxBt+B,IACA10F,KAAKw06B,aAAavhzB,OAAO,iBAC7B,CACA,cAAA4hzB,GACI706B,KAAKw06B,aAAaxhzB,MAAM,iBAC5B,CACA,eAAA8hzB,GACI906B,KAAKw06B,aAAavhzB,OAAO,kBAAkB,EAC/C,CACA,YAAA8wP,CAAaghjB,EAAiB6J,GAC1B5u6B,KAAKg+iB,mBAAmBj6L,aAAaghjB,EAAiB6J,EAC1D,CACA,aAAA+F,CAAcjjkB,GACV,KAAK,IAAArsX,GAAcqsX,EAAY1xW,KAAKq06B,mBAAoB,CACpD,IAAI,UAAE1q0B,GAAc3pG,KAAKu9B,GACzB,IAAK,IAAIusE,KAAa9pG,KAAKq06B,kBACvB1q0B,EAAU/mE,OAAOknE,GAErB,IAAK,IAAIA,KAAa4nQ,EAClB/nQ,EAAUr2G,IAAIw2G,GAElB9pG,KAAKq06B,kBAAoB3ikB,CAC7B,CACJ,CACA,SAAA88C,CAAU5na,IACN,QAAeoZ,KAAKu9B,GAAI,SAAU32C,EACtC,E,yBC5nEJ86F,EAAOj9F,QAAU,CACfsw7B,YAAa,EACbv9c,oBAAqB,EACrBw9c,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBv9G,kBAAmB,EACnBw9G,UAAW,EACXC,cAAe,EACfC,aAAc,EACdzniB,SAAU,EACV0niB,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,E,+BCjCb,IAAIht1B,EAAI,EAAQ,OACZrpF,EAAO,EAAQ,OACfggG,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjCjoO,EAAW,EAAQ,KACnBi5H,EAAQ,EAAQ,OAEhBinI,EAAS5yP,MACToe,EAAS2tF,EAAY,GAAG3tF,QACxBkzE,EAAaya,EAAY,GAAGza,YAC5B1nF,EAAOmiG,EAAY,GAAGniG,MAEtBy46B,EAAgB,GAAGC,aAInBC,EAA2BF,GAAiB12zB,EAAM,WACpD,MAAkC,MAA3B5/G,EAAKs26B,EAAe,EAC7B,GAIAjt1B,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAAQg20B,GAA4B,CACrED,aAAc,WACZ,IAAIj85B,EAAI3zB,EAASioO,EAAuBjvN,OACxC,GAAI626B,EAA0B,OAAOx26B,EAAKs26B,EAAeh85B,GAGzD,IAFA,IAAIvmB,EAASumB,EAAEvmB,OACXjB,EAAS+zP,EAAO9yP,GACX/O,EAAI,EAAGA,EAAI+O,EAAQ/O,IAAK,CAC/B,IAAIyic,EAAWliW,EAAWjrE,EAAGt1B,GAED,QAAZ,MAAXyic,GAA+B30b,EAAO9N,GAAKqtB,EAAOiI,EAAGt1B,GAEjDyic,GAAY,OAAUzic,EAAI,GAAK+O,GAA8C,QAAZ,MAAvBwxF,EAAWjrE,EAAGt1B,EAAI,IAAyB8N,EAAO9N,GApB/E,KAuBpB8N,EAAO9N,GAAKqtB,EAAOiI,EAAGt1B,GACtB8N,IAAS9N,GAAKqtB,EAAOiI,EAAGt1B,GAE5B,CAAE,OAAO6Y,EAAK/K,EAAQ,GACxB,G,6BCvCF1O,EAAQ4oM,WAuCR,SAAqB2piB,GACnB,IAAIz6kB,EAAOu6xB,EAAQ9/M,GACf+/M,EAAWx6xB,EAAK,GAChBy6xB,EAAkBz6xB,EAAK,GAC3B,OAAuC,GAA9Bw6xB,EAAWC,GAAuB,EAAKA,CAClD,EA3CAvy7B,EAAQ+uwB,YAiDR,SAAsBx8B,GAepB,IAdA,IAAIhysB,EACAu3H,EAAOu6xB,EAAQ9/M,GACf+/M,EAAWx6xB,EAAK,GAChBy6xB,EAAkBz6xB,EAAK,GAEvB3lH,EAAM,IAAIqg5B,EAVhB,SAAsBjgN,EAAK+/M,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBE,CAAYlgN,EAAK+/M,EAAUC,IAEzCG,EAAU,EAGV1n7B,EAAMun7B,EAAkB,EACxBD,EAAW,EACXA,EAEK1x7B,EAAI,EAAGA,EAAIoK,EAAKpK,GAAK,EAC5B2/B,EACGoy5B,EAAUpgN,EAAIpxoB,WAAWvgG,KAAO,GAChC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,KAAO,GACpC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,KAAO,EACrC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,IAC/BuxC,EAAIug5B,KAAcny5B,GAAO,GAAM,IAC/B4R,EAAIug5B,KAAcny5B,GAAO,EAAK,IAC9B4R,EAAIug5B,KAAmB,IAANny5B,EAmBnB,OAhBwB,IAApBgy5B,IACFhy5B,EACGoy5B,EAAUpgN,EAAIpxoB,WAAWvgG,KAAO,EAChC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,KAAO,EACvCuxC,EAAIug5B,KAAmB,IAANny5B,GAGK,IAApBgy5B,IACFhy5B,EACGoy5B,EAAUpgN,EAAIpxoB,WAAWvgG,KAAO,GAChC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,KAAO,EACpC+x7B,EAAUpgN,EAAIpxoB,WAAWvgG,EAAI,KAAO,EACvCuxC,EAAIug5B,KAAcny5B,GAAO,EAAK,IAC9B4R,EAAIug5B,KAAmB,IAANny5B,GAGZ4R,CACT,EA3FAnyC,EAAQuqwB,cAiHR,SAAwBqoL,GAQtB,IAPA,IAAIry5B,EACAv1B,EAAM4n7B,EAAMjj7B,OACZkj7B,EAAa7n7B,EAAM,EACnB6mE,EAAQ,GACRih3B,EAAiB,MAGZly7B,EAAI,EAAGkt0B,EAAO9i0B,EAAM6n7B,EAAYjy7B,EAAIkt0B,EAAMlt0B,GAAKky7B,EACtDjh3B,EAAMxiE,KAAK0j7B,EACTH,EAAOhy7B,EAAIA,EAAIky7B,EAAkBhlH,EAAOA,EAAQlt0B,EAAIky7B,IAsBxD,OAjBmB,IAAfD,GACFty5B,EAAMqy5B,EAAM5n7B,EAAM,GAClB6mE,EAAMxiE,KACJ2j7B,EAAOzy5B,GAAO,GACdyy5B,EAAQzy5B,GAAO,EAAK,IACpB,OAEsB,IAAfsy5B,IACTty5B,GAAOqy5B,EAAM5n7B,EAAM,IAAM,GAAK4n7B,EAAM5n7B,EAAM,GAC1C6mE,EAAMxiE,KACJ2j7B,EAAOzy5B,GAAO,IACdyy5B,EAAQzy5B,GAAO,EAAK,IACpByy5B,EAAQzy5B,GAAO,EAAK,IACpB,MAIGsxC,EAAMp4D,KAAK,GACpB,EA3IA,IALA,IAAIu56B,EAAS,GACTL,EAAY,GACZH,EAA4B,oBAAf5x1B,WAA6BA,WAAa/wF,MAEvDk6F,EAAO,mEACFnpG,EAAI,EAAsBA,EAAbmpG,KAAwBnpG,EAC5Coy7B,EAAOpy7B,GAAKmpG,EAAKnpG,GACjB+x7B,EAAU5o1B,EAAK5I,WAAWvgG,IAAMA,EAQlC,SAASyx7B,EAAS9/M,GAChB,IAAIvnuB,EAAMunuB,EAAI5iuB,OAEd,GAAI3E,EAAM,EAAI,EACZ,MAAM,IAAI8X,MAAM,kDAKlB,IAAIwv6B,EAAW//M,EAAIzuuB,QAAQ,KAO3B,OANkB,IAAdwu7B,IAAiBA,EAAWtn7B,GAMzB,CAACsn7B,EAJcA,IAAatn7B,EAC/B,EACA,EAAKsn7B,EAAW,EAGtB,CA2DA,SAASW,EAAiBz54B,GACxB,OAAOw54B,EAAOx54B,GAAO,GAAK,IACxBw54B,EAAOx54B,GAAO,GAAK,IACnBw54B,EAAOx54B,GAAO,EAAI,IAClBw54B,EAAa,GAANx54B,EACX,CAEA,SAASu54B,EAAaH,EAAO5q7B,EAAOC,GAGlC,IAFA,IAAIs4B,EACA+8L,EAAS,GACJ18N,EAAIoH,EAAOpH,EAAIqH,EAAKrH,GAAK,EAChC2/B,GACIqy5B,EAAMhy7B,IAAM,GAAM,WAClBgy7B,EAAMhy7B,EAAI,IAAM,EAAK,QACP,IAAfgy7B,EAAMhy7B,EAAI,IACb08N,EAAOjuN,KAAK4j7B,EAAgB1y5B,IAE9B,OAAO+8L,EAAO7jN,KAAK,GACrB,CAjGAk56B,EAAU,IAAIxx1B,WAAW,IAAM,GAC/Bwx1B,EAAU,IAAIxx1B,WAAW,IAAM,E,+BClB/B97F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAKtD,IAAIgy7B,EAAsB,EAAQ,MAC9BC,EAAc,EAAQ,OACtBv4mB,EAAsB,EAAQ,OAC9Bw4mB,EAAS,EAAQ,OACjBC,EAAkB,EAAQ,MAC1BC,EAAiB,EAAQ,OACzBC,EAAY,EAAQ,OACpBr20B,EAAW,EAAQ,OACnBC,EAAe,EAAQ,OACvBq20B,EAAe,EAAQ,OACvBtya,EAAU,EAAQ,OAElBuya,EAAkB,EAgBlB37H,EAA0B,WAQ1B,SAASA,EAAS47H,EAAiBC,QACP,IAApBD,IAA8BA,EAAkBF,EAAaI,WAAWC,0BACrD,IAAnBF,IAA6BA,EAAiBH,EAAaI,WAAWE,oBAC1Ev46B,KAAKm46B,gBAAkBA,EACvBn46B,KAAKo46B,eAAiBA,EACPp46B,KAAKm+R,IAAM+5oB,IACXl46B,KAAKw46B,WAAY,EACjBx46B,KAAKy46B,aAAe,GAEnCz46B,KAAKu0H,MAAQoxY,EAAQpxY,MAErBv0H,KAAK046B,YAAc,IAAIb,EAAOv3R,YAE9BtgpB,KAAKwjR,QAAU,IAAIw0pB,EAAU12C,gBAE7Bth4B,KAAKwlP,kBAAoB,IAAI65E,EAAoBs5mB,kBAAkB346B,MAKnEA,KAAKs2G,kBAAoB,IAAIqh0B,EAAoB310B,kBAKjDhiG,KAAKy2G,UAAY,IAAImh0B,EAAYgB,UAAU546B,MAE3CA,KAAKqgU,cAAgB,IAAIy3mB,EAAgB9h0B,cAAch2G,MAEvDA,KAAKo3T,aAAe,IAAI2gnB,EAAer4mB,aAAa1/T,MAEpDA,KAAK2ogB,WAAa,IAAIsva,EAAaI,WAAWr46B,MAE9CA,KAAKu9D,SAAW,CAAC,EACjBv9D,KAAK046B,YAAY3zrB,WAAW27Z,iBAAiB1gpB,KAAKqgU,cAAc33S,QAChE1oB,KAAKwjR,QAAQwvC,SAAWhzT,KAAKqgU,cAAc33S,OAC3C1oB,KAAKwjR,QAAQ3tR,QAAUmK,KAAKwjR,QAAQwvC,SAAS1wO,KAC7CtiF,KAAK646B,WAAW746B,KAAKwjR,SACrBxjR,KAAK646B,WAAW746B,KAAKo3T,cACrBp3T,KAAK646B,WAAW746B,KAAKqgU,eACrBrgU,KAAK646B,WAAW746B,KAAKwlP,mBACrBxlP,KAAK646B,WAAW746B,KAAKy2G,WACrBz2G,KAAK646B,WAAWV,GAChBn46B,KAAK646B,WAAWT,EACpB,CA8FA,OA5FA77H,EAASn8yB,UAAUy46B,WAAa,SAAUA,GACtC746B,KAAKy46B,aAAa3k7B,KAAK+k7B,EAC3B,EAWAt8H,EAASn8yB,UAAU2jG,QAAU,SAAU800B,GACnC,IAAI306B,EAAQlE,KACR646B,GAAcj30B,EAAa/uF,WAAWgm6B,EAAW900B,SACjD800B,EAAW900B,QAAQ/jG,OAGvBA,KAAKw46B,WAAY,EACjBx46B,KAAKy46B,aAAa396B,QAAQ9I,QAAQ,SAAUzO,GACxC,IACyB,mBAAdA,EAAEwgH,SAA0BxgH,EAAEwgH,QAAQ7/F,GAC7Cy9F,EAASuV,WAAWhzG,EAAMu06B,aAAcl17B,EAC5C,CACA,MAAOi73B,GAAW,CACtB,GACJ,EAsDAjiE,EAASn8yB,UAAUo4D,OAAS,SAAUA,EAAQ5oE,QAC1B,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIkp7B,EAAiB,IAAItg3B,EAAOx4D,KAAMpQ,GACtC,IAAKkp7B,EAAevl7B,KAChB,MAAM,IAAIgU,MAAM,+CAAiDux6B,GAErE,OADA946B,KAAKy46B,aAAa3k7B,KAAKgl7B,GAChB946B,KAAKu9D,SAASu72B,EAAevl7B,MAAQul7B,CAChD,EACAv8H,EAASn8yB,UAAUg3D,UAAY,SAAUu12B,GACrC,OAAOA,EAAa3s6B,KAAKu9D,SAASov2B,GAAchr0B,EAAS/4E,OAAO5oB,KAAKu9D,SACzE,EACOg/uB,CACX,CAnJ6B,GAoJ7B93zB,EAAQ83zB,SAAWA,C,+BCrLnB,IAAIl8sB,EAAc,EAAQ,OAE1B3e,EAAOj9F,QAAU47G,EAAY,GAAGvlG,M,qCCFhC,IACQgF,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAGAul4B,EAA2C,SAAU/h4B,GAErD,SAAS+h4B,IACL,IAAI7h4B,EAAQF,EAAO3D,KAAKL,OAASA,KASjC,OARAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B606B,4BAA6B,CACzBpz7B,MAAO,IAAIqN,KAEfgm7B,4BAA6B,CACzBrz7B,MAAO,IAAIqN,OAGZkR,CACX,CA+CA,OA3DAnE,EAAUgm4B,EAA2B/h4B,GAoBrC+h4B,EAA0B3l4B,UAAUmM,SAAW,SAAU2rM,EAAa3kN,EAAM+gG,EAAU6jH,QAClD,IAA5BA,IAAsCA,EAA0B,MACpE,IAAI0vI,EAAc7nV,KAAKin4B,sCAAsC/urB,EAAa3kN,EAAM+gG,EAAU6jH,GAI1F,OAHAn4M,KAAKg56B,4BAA4Bjl7B,IAAImkN,EAAa2vI,GAClD7nV,KAAK+46B,4BAA4Bhl7B,IAAI8zV,EAAa3vI,GAClDl0M,EAAO5D,UAAUmM,SAASlM,KAAKL,KAAM6nV,GAC9B7nV,IACX,EAKA+l4B,EAA0B3l4B,UAAU8m4B,eAAiB,SAAUhvrB,GAC3D,OAAOl4M,KAAKg56B,4BAA4Bnl7B,IAAIqkN,IAAgB,IAChE,EAKA6trB,EAA0B3l4B,UAAUi/f,UAAY,SAAU45a,GACtD,OAAOj56B,KAAK+46B,4BAA4Bll7B,IAAIol7B,IAAqB,IACrE,EAKAlzC,EAA0B3l4B,UAAUiumB,YAAc,SAAUn2Z,GACxD,IAAI2vI,EAAc7nV,KAAKg56B,4BAA4Bnl7B,IAAIqkN,GACvD,OAAK2vI,GAGL7nV,KAAKg56B,4BAA4Bvi5B,OAAOyhL,GACxCl4M,KAAK+46B,4BAA4Bti5B,OAAOoxT,GACxB7jV,EAAO5D,UAAUiumB,YAAYhumB,KAAKL,KAAM6nV,IAEpDA,EAAYniV,OAETmiV,GARI,IASf,EACOk+iB,CACX,CA7D8C,CADnB,EAAQ,QA+DnCrkzB,EAAOj9F,QAAUsh5B,C,+BC9EjB,IAAIhgyB,EAAoB,EAAQ,OAE5B86O,EAAavgV,UAIjBohF,EAAOj9F,QAAU,SAAUg9G,GACzB,GAAIsE,EAAkBtE,GAAK,MAAM,IAAIo/O,EAAW,wBAA0Bp/O,GAC1E,OAAOA,CACT,C,qCCTA33G,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAUtD,IAAIi8G,EAAe,EAAQ,OACvBmU,EAAQ,EAAQ,OAChBopN,EAAiB,EAAQ,OAC7B16U,EAAQikC,KAAwB,iBAAT45D,MAAqBA,KAAKA,OAASA,MAAQA,MAC3C,iBAAX,EAAA3gF,GAAuB,EAAAA,EAAOo/G,SAAW,EAAAp/G,GAAU,EAAAA,GAAW3B,KAC1E,IAAIk2H,EAAUzxI,EAAQikC,KAAKwtG,SAAW,CAAC,EA2FvC,SAASgjzB,EAAS7k6B,EAAO/B,GACrB,OAA+B,IAAxB+B,EAAM9rB,QAAQ+pB,EACzB,CAOA,SAAS6m6B,EAAY9k6B,EAAO/B,GACxB,IAAIF,EAAMiC,EAAM9rB,QAAQ+pB,GAGxB,OAFIF,GAAO,GACPiC,EAAM0Y,OAAO3a,EAAK,GACfiC,CACX,CAIA,SAAS+k6B,EAAQxi5B,EAAKjP,GAClB,OAAQiP,EAAI9iC,KAAK6zB,GAAMA,CAC3B,CAsDA,SAAS08L,EAAK/xM,EAAK+m6B,GACf,IAAIC,EAAU,CAAC,EACf,IAAK,IAAI314B,KAASrxB,GACoB,IAA9B+m6B,EAAU9w7B,QAAQo7C,KAClB214B,EAAQ314B,GAASrxB,EAAIqxB,IAG7B,OAAO214B,CACX,CAqDA,SAASvm7B,EAAIkqN,EAAY/tM,EAAUnhB,GAG/B,OAFAA,EAASA,IAAW6zG,EAAa7xF,QAAQktM,GAAc,GAAK,CAAC,GAC7Dx4N,EAAQuN,QAAQirN,EAAY,SAAUjqM,EAAM3tB,GAAK,OAAO0I,EAAO1I,GAAK6pB,EAAS8D,EAAM3tB,EAAI,GAChF0I,CACX,CAsEA,SAASwr7B,EAAM3i5B,EAAKtkB,GAEhB,OADAskB,EAAI9iC,KAAKwe,GACFskB,CACX,CA2DA,SAAS4i5B,EAASC,EAAgBC,GAE9B,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAUpn6B,GACb,IAAInf,EAASsm7B,EAAenn6B,GAC5B,IAAKnf,EACD,MAAM,IAAIoU,MAAMq6F,EAAa/uF,WAAW6m6B,GAAUA,EAAOpn6B,GAAOon6B,GAEpE,OAAOvm7B,CACX,CACJ,CA4BA,SAASskO,IAEL,IADA,IAAIpjO,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,GAAoB,IAAhBtG,EAAKD,OACL,MAAO,GAwBX,IAvBA,IAAIul7B,EAActl7B,EAAK/J,OAAO,SAAUZ,EAAKktC,GAAO,OAAOpxC,KAAKkE,IAAIktC,EAAIxiC,OAAQ1K,EAAM,EAAG,kBACrFyJ,EAAS,GACT03M,EAAU,SAAUxlN,GAGpB,OAAQgP,EAAKD,QACT,KAAK,EACDjB,EAAOW,KAAK,CAACO,EAAK,GAAGhP,KACrB,MACJ,KAAK,EACD8N,EAAOW,KAAK,CAACO,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,KACjC,MACJ,KAAK,EACD8N,EAAOW,KAAK,CAACO,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,KAC7C,MACJ,KAAK,EACD8N,EAAOW,KAAK,CAACO,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,GAAIgP,EAAK,GAAGhP,KACzD,MACJ,QACI8N,EAAOW,KAAKO,EAAKtB,IAAI,SAAUshB,GAAS,OAAOA,EAAMhvB,EAAI,IAGrE,EACSA,EAAI,EAAGA,EAAIs07B,EAAat07B,IAC7BwlN,EAAQxlN,GAEZ,OAAO8N,CACX,CAsDA,SAASym7B,EAAQC,GACb,IAAK,IAAIx07B,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CACvC,IAAIitB,EAAMne,UAAU9O,GACpB,GAAKitB,EAGL,IADA,IAAIjoB,EAAOP,OAAOO,KAAKioB,GACd0T,EAAI,EAAGA,EAAI37B,EAAK+J,OAAQ4xB,IAC7B6z5B,EAAMxv7B,EAAK27B,IAAM1T,EAAIjoB,EAAK27B,GAElC,CACA,OAAO6z5B,CACX,CAjfAp17B,EAAQ20Q,SAAWljI,EAAQkjI,UAAYzvP,KAAKyuB,MAAMsjB,KAAK/xC,MACvDllB,EAAQy0Q,OAAShjI,EAAQgjI,QAAUvvP,KAAKC,UAAU8xC,KAAK/xC,MACvDllB,EAAQuN,QAAUkkI,EAAQlkI,SA+d1B,SAAkBsgB,EAAKkwB,EAAIt+B,GACvB,GAAI09F,EAAa7xF,QAAQuC,GACrB,OAAOA,EAAItgB,QAAQwwC,EAAIt+B,GAC3Bpa,OAAOO,KAAKioB,GAAKtgB,QAAQ,SAAUxH,GAAO,OAAOg4C,EAAGlwB,EAAI9nB,GAAMA,EAAM,EACxE,EAleA/F,EAAQu+G,OAASl5G,OAAOC,QAAU6v7B,EAClCn17B,EAAQsjO,OAAS7xF,EAAQ6xF,QA+ezB,SAAS+xtB,EAAQ3hrB,EAAI7jH,GACjB,GAAI6jH,IAAO7jH,EACP,OAAO,EACX,GAAW,OAAP6jH,GAAsB,OAAP7jH,EACf,OAAO,EACX,GAAI6jH,GAAOA,GAAM7jH,GAAOA,EACpB,OAAO,EACX,IAAI88D,SAAY+mD,EAChB,GAAI/mD,WAD4B98D,GACR,WAAP88D,EACb,OAAO,EACX,IAwBengM,EAAI0kU,EAxBfokmB,EAAM,CAAC5hrB,EAAI7jH,GACf,GAAIv+B,EAAMjwE,IAAI87D,EAAa7xF,QAAvBgmG,CAAgCgk0B,GAChC,OAsBepkmB,EAtBMrhM,GAsBVrjI,EAtBMknP,GAuBd/jQ,SAAWuhV,EAAGvhV,QAEdqjO,EAAYxmN,EAAI0kU,GAAIrrV,OAAO,SAAUuP,EAAG+G,GAAK,OAAO/G,GAAKig7B,EAAQl56B,EAAE,GAAIA,EAAE,GAAK,GAAG,GAxBxF,GAAIm1G,EAAMjwE,IAAI87D,EAAaioH,OAAvB9zG,CAA+Bgk0B,GAC/B,OAAO5hrB,EAAG1yJ,YAAc6uC,EAAG7uC,UAC/B,GAAIsQ,EAAMjwE,IAAI87D,EAAa+0J,SAAvB5gJ,CAAiCgk0B,GACjC,OAAO5hrB,EAAGnxQ,aAAestJ,EAAGttJ,WAChC,GAAI+uH,EAAMjwE,IAAI87D,EAAa/uF,WAAvBkjG,CAAmCgk0B,GACnC,OAAO,EAEX,GADiB,CAACn40B,EAAa/uF,WAAY+uF,EAAa7xF,QAAS6xF,EAAaioH,OAAQjoH,EAAa+0J,UACpF5jQ,IAAIgjH,EAAMb,KAAK5qH,OAAO,SAAUuP,EAAG/E,GAAM,OAAO+E,KAAO/E,EAAGil7B,EAAM,GAAG,GAC9E,OAAO,EACX,IAAI1v7B,EAAO,CAAC,EACZ,IAAK,IAAIG,KAAO2tQ,EAAI,CAChB,IAAK2hrB,EAAQ3hrB,EAAG3tQ,GAAM8pJ,EAAG9pJ,IACrB,OAAO,EACXH,EAAKG,IAAO,CAChB,CACA,IAAK,IAAIA,KAAO8pJ,EACZ,IAAKjqJ,EAAKG,GACN,OAAO,EAEf,OAAO,CACX,EA9gBA/F,EAAQ86N,SADR,SAAkBh5N,GAAK,OAAOA,CAAG,EAGjC9B,EAAQmrB,KADR,WAAkB,EAyElBnrB,EAAQw7U,qBAfR,SAA8B1uT,EAAQxjB,EAAQ2tD,EAAMs+3B,EAASC,QACxC,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUnka,GACzB,OAAOxkgB,IAASwkgB,GAAQr6d,KAAKA,IACjC,EAMA,OADAs+3B,EAAUA,GAAWlw7B,OAAOO,KAAKknB,MAClBjnB,OAAO,SAAUoL,EAAKnC,GALd,IAAUwihB,EAO7B,OADArghB,EAAInC,GAAQ0m7B,GANiBlka,EAMWxihB,EANM,WAE9C,OADAxF,EAAOgohB,GAAUmka,EAAanka,GACvBhohB,EAAOgohB,GAAQj1gB,MAAM,KAAM3M,UACtC,GAGoD+l7B,EAAa3m7B,GACtDmC,CACX,EAAG3H,EACP,EAMAtJ,EAAQ0wO,QAAU,SAAU1tO,EAAQ+zF,GAChC,OAAO/2F,EAAQu+G,OAAOl5G,OAAO4W,OAAOjZ,GAAS+zF,EACjD,EAEA/2F,EAAQ8wO,QAAUx/G,EAAMqsiB,MAAM82R,GAI9Bz07B,EAAQy07B,SAAWA,EAKnBz07B,EAAQyyH,WAAanB,EAAMqsiB,MAAM+2R,GAOjC107B,EAAQ007B,YAAcA,EAEtB107B,EAAQ+pxB,OAASz4pB,EAAMqsiB,MAAMg3R,GAI7B307B,EAAQ207B,QAAUA,EAElB307B,EAAQo6U,SAAW,SAAUn7M,GACzB,OAAOA,EAAU5oH,QAAQ9I,QAAQ,SAAU8C,GACzB,mBAAPA,GAAqBA,IAC5BrQ,EAAQyyH,WAAWwM,EAAW5uH,EAClC,EACJ,EAeArQ,EAAQokC,SATR,SAAkBkH,GAEd,IADA,IAAIoq5B,EAAe,GACVx/6B,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCw/6B,EAAax/6B,EAAK,GAAKxG,UAAUwG,GAErC,IAAIy/6B,EAAgBD,EAAans7B,OAAO,CAAC,GAAG8iB,UACxCup6B,EAAc517B,EAAQu+G,OAAOliG,MAAM,KAAMs56B,GAC7C,OAAO317B,EAAQu+G,OAAO,CAAC,EAAGq30B,EAAah2tB,EAAKt0L,GAAQ,CAAC,EAAGjmC,OAAOO,KAAKgw7B,IACxE,EAGA517B,EAAQmwO,OAAS,SAAUptG,EAAMx0G,GAAQ,OAAOvuB,EAAQu+G,OAAOwkB,EAAMx0G,EAAO,EAiB5EvuB,EAAQ+3b,UATR,SAAmBhuX,EAAO6uB,GACtB,IAAIxU,EAAO,GACX,IAAK,IAAIhoE,KAAK2tD,EAAMqa,KAAM,CACtB,GAAIra,EAAMqa,KAAKhoE,KAAOw8E,EAAOxU,KAAKhoE,GAC9B,MACJgoE,EAAK/0E,KAAK06D,EAAMqa,KAAKhoE,GACzB,CACA,OAAOgoE,CACX,EAsBApkF,EAAQ4/N,KAAOA,EAkBf5/N,EAAQ4xO,KALR,SAAc/jN,EAAK+m6B,GACf,OAAOvv7B,OAAOO,KAAKioB,GACdrhB,OAAO8kH,EAAMinH,IAAIv4O,EAAQ8wO,QAAQ8jtB,KACjC/u7B,OAAO,SAAUoL,EAAKlL,GAAO,OAAQkL,EAAIlL,GAAO8nB,EAAI9nB,GAAMkL,CAAM,EAAG,CAAC,EAC7E,EAQAjR,EAAQg/N,MAHR,SAAexG,EAAYzoG,GACvB,OAAOzhH,EAAIkqN,EAAYlnG,EAAMzjF,KAAKkiF,GACtC,EAYA/vH,EAAQwM,OATR,SAAgBgsN,EAAY/tM,GACxB,IAAI0nB,EAAMgrE,EAAa7xF,QAAQktM,GAAa9pN,EAASyjC,EAAM,GAAK,CAAC,EAC7DghV,EAAShhV,EAAM,SAAUrwC,GAAK,OAAO4M,EAAOW,KAAKvN,EAAI,EAAI,SAAUA,EAAGiE,GAAO,OAAO2I,EAAO3I,GAAOjE,CAAG,EAKzG,OAJA9B,EAAQuN,QAAQirN,EAAY,SAAUjqM,EAAM3tB,GACpC6pB,EAAS8D,EAAM3tB,IACfuyX,EAAO5kW,EAAM3tB,EACrB,GACO8N,CACX,EAaA1O,EAAQoW,KAVR,SAAcoiN,EAAY/tM,GACtB,IAAI/b,EAOJ,OANA1O,EAAQuN,QAAQirN,EAAY,SAAUjqM,EAAM3tB,GACpC8N,GAEA+b,EAAS8D,EAAM3tB,KACf8N,EAAS6f,EACjB,GACO7f,CACX,EAGA1O,EAAQqgQ,OAAS/xP,EAOjBtO,EAAQsO,IAAMA,EAWdtO,EAAQmkC,OAAS,SAAUtW,GACvB,OAAOxoB,OAAOO,KAAKioB,GAAKvf,IAAI,SAAUvI,GAAO,OAAO8nB,EAAI9nB,EAAM,EAClE,EAcA/F,EAAQ617B,SAAW,SAAU9yzB,EAAMk8I,GAAQ,OAAOl8I,GAAQk8I,CAAM,EAchEj/Q,EAAQ817B,SAAW,SAAU/yzB,EAAMk8I,GAAQ,OAAOl8I,GAAQk8I,CAAM,EAUhEj/Q,EAAQmxO,QAAU,SAAUpuG,EAAMk8I,GAAQ,OAAOl8I,EAAKx5H,OAAO01Q,EAAO,EAWpEj/Q,EAAQ+17B,SAAW,SAAUhzzB,EAAMk8I,GAC/B,OAAO9hK,EAAa7xF,QAAQ2zP,GAAQl8I,EAAKx5H,OAAO01Q,EAAKp5Q,OAAO7F,EAAQ+17B,SAAU,KAAOjB,EAAM/xzB,EAAMk8I,EACrG,EASAj/Q,EAAQ807B,MAAQA,EAEhB907B,EAAQm4zB,MAAQ,SAAUlnzB,EAAKuO,GAC3B,OAAOxf,EAAQ8wO,QAAQ7/N,EAAKuO,GAASvO,EAAM6j7B,EAAM7j7B,EAAKuO,EAC1D,EAWAxf,EAAQg27B,OAAS,SAAU7j5B,GAAO,OAAOA,EAAItsC,OAAO7F,EAAQmxO,QAAS,GAAK,EAW1EnxO,EAAQq1G,QAAU,SAAUljE,GAAO,OAAOA,EAAItsC,OAAO7F,EAAQ+17B,SAAU,GAAK,EAc5E/17B,EAAQo7gB,gBAAkB25a,EAiB1B/07B,EAAQi27B,UAAYlB,EAWpB/07B,EAAQ+07B,SAAWA,EAUnB/07B,EAAQo6N,MAAQ,SAAUvsM,GACtB,OAAOxoB,OAAOO,KAAKioB,GAAKvf,IAAI,SAAUvI,GAAO,MAAO,CAACA,EAAK8nB,EAAI9nB,GAAO,EACzE,EAkDA/F,EAAQgzO,YAAcA,EA8BtBhzO,EAAQ28V,WATR,SAAoB55N,EAAMmzzB,GACtB,IAAInw7B,EAAK7E,EAGT,GAFIi8G,EAAa7xF,QAAQ4q6B,KACrBnw7B,EAAMmw7B,EAAY,GAAIh17B,EAAQg17B,EAAY,KACzC/40B,EAAa2B,SAAS/4G,GACvB,MAAM,IAAI+c,MAAM,oCAEpB,OADAigH,EAAKh9H,GAAO7E,EACL6hI,CACX,EAMA/iI,EAAQiwO,KAHR,SAAc99L,GACV,OAAOA,EAAIxiC,QAAUwiC,EAAIA,EAAIxiC,OAAS,SAAM0C,CAChD,EAYArS,EAAQ6sG,KAPR,SAAc+V,EAAKo3b,GAKf,OAJIA,GACA30iB,OAAOO,KAAKo0iB,GAAMzsiB,QAAQ,SAAUxH,GAAO,cAAci0iB,EAAKj0iB,EAAM,GACnEi0iB,IACDA,EAAO,CAAC,GACLh6iB,EAAQu+G,OAAOy7b,EAAMp3b,EAChC,EAoBA5iH,EAAQm17B,QAAUA,EAyClBn17B,EAAQg+U,yBAA2B,SAAUpgN,GACzC,OAAOA,EAAQwrG,MAAM,SAAU7oO,GAAK,OAAO,CAAG,IAAMq9H,CACxD,EACA59H,EAAQo9U,gBAAkB,SAAU53T,GAChC,OAAOxlB,EAAQg+U,yBAAyBtD,EAAegC,SAASh/M,GAAG/gH,OAAO6I,GAC9E,C,oHC9hBA,QAd8B,aAAiB,SAAU7e,EAAMynH,GAC7D,IAAIC,EAAW1nH,EAAK0nH,SAChB22H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzC3/H,EAAY1+G,EAAK0+G,UACjB13E,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,KAAM,cAE/D+nH,GAAoB,QAAmBL,EAAU,eACrD,OAAoB,gBAAoB62H,GAAW,OAAS,CAC1D92H,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAWqJ,KAErC,E,qCCjBA,IACQrzG,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIi70B,EAAwB,EAAQ,OAChC3+rB,EAAa,EAAQ,OACrBsxV,EAA4B,EAAQ,OACpCstW,EAAe,sBACf7jzB,EAAU,EAAQ,OAkBlB+tkB,EAAkC,SAAU/gsB,GAa5C,SAAS+gsB,EAAiBzuhB,EAAKo3Z,EAAoBl4c,EAAW08L,EAAeK,EAAao7Q,EAAe/9kB,GACrG,IAAIsU,EAAQlE,KA6EZ,OA5EApQ,EAAU9F,OAAOC,OAAO,CACpBizgB,4BAA6B,OAC7BE,uBAAwB,OACxB49a,iCAAiC,GAClClr7B,GACHA,EAAU9F,OAAOC,OAAO,CACpBgx7B,qBAAsD,oBAAzBA,sBAAgF,SAAxCnr7B,EAAQotgB,4BAAyC69a,EAAeE,qBACrIh13B,eAA0C,oBAAnBA,gBAAqE,SAAnCn2D,EAAQstgB,uBAAoC29a,EAAe903B,gBACrHn2D,GACHsU,EAAQF,EAAO3D,KAAKL,KAAMs2K,EAAKo3Z,EAAoBl4c,EAAW08L,EAAeK,EAAao7Q,EAAe/9kB,IAAYoQ,KACrHlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B826B,iCAAkC,CAC9Br17B,OAAmD,IAA5CiK,EAAQkr7B,iCAAoF,SAAxClr7B,EAAQotgB,6BAEvEi+a,kCAAmC,CAC/Bt17B,MAAO,KACP8lC,UAAU,GAEdsxe,6BAA8B,CAC1Bp3gB,MAAOiK,EAAQotgB,6BAEnBC,wBAAyB,CACrBt3gB,MAAOiK,EAAQstgB,wBAEnBg+a,mBAAoB,CAChBv17B,MAAO,IAAI6uc,SAEf2mf,kBAAmB,CACfx17B,MAAO,IAAIopF,SAEfqs2B,gBAAiB,CACbz17B,MAAO,IAAIopF,SAEfss2B,cAAe,CACX117B,MAAO,IAAIqxI,EAAQ,WACf9yH,EAAM6pkB,eAAe,CAAE/3kB,SAAS,GACpC,EAnEa,IAmEc,IAE/Bsl7B,gBAAiB,CACb317B,MAAO,IAAIiK,EAAQm2D,eAAe,SAAUb,GAIZA,EAAQrqD,KAAK,SAAU+2C,GAAS,OAAQ1tC,EAAMg36B,mBAAmBvn7B,IAAIi+C,EAAM7jD,OAAS,IAE5Gwt7B,EAAyBr36B,EAEjC,IAEJs36B,sBAAuB,CACnB717B,MAAO,IAAIiK,EAAQmr7B,qBAAqB,SAAU713B,GAC9C,IAAIu23B,GAAsB,EAC1Bv23B,EAAQlzD,QAAQ,SAAU4/C,IACJ1tC,EAAMg36B,mBAAmBvn7B,IAAIi+C,EAAM7jD,UAClC6jD,EAAM8p4B,iBACjB9p4B,EAAM8p4B,gBACNx36B,EAAMkB,KAAKkC,MAAM,4CACjBpD,EAAMg36B,mBAAmBzk5B,OAAOmb,EAAM7jD,UAGtCmW,EAAMkB,KAAKkC,MAAM,4CACjBpD,EAAMg36B,mBAAmB5n7B,IAAIs+C,EAAM7jD,SAEvC0t7B,GAAsB,EAE9B,GACIA,IACAE,EAAuBz36B,GAIvBq36B,EAAyBr36B,GAEjC,EAAG,CAAEk2Z,UAAW,SAGjBl2Z,CACX,CAuMA,OAlSAnE,EAAUglsB,EAAkB/gsB,GA+F5B+gsB,EAAiB3ksB,UAAUojC,OAAS,SAAUyytB,GAC1C,IAAI9iwB,EAAS6Q,EAAO5D,UAAUojC,OAAOnjC,KAAKL,KAAMi2vB,GAGhD,OADA0lL,EAAuB376B,MAChB7M,CACX,EAMA4xsB,EAAiB3ksB,UAAUw76B,SAAW,WAClC,GAA0C,WAAtC576B,KAAK+8f,6BACL,MAAM,IAAIx1f,MAAM,wHAGpB,OADAvH,KAAK+tkB,eAAe,CAAE/3kB,SAAS,IACxBgK,IACX,EAMA+ksB,EAAiB3ksB,UAAUy76B,UAAY,WACnC,GAA0C,WAAtC776B,KAAK+8f,6BACL,MAAM,IAAIx1f,MAAM,yHAGpB,OADAvH,KAAK+tkB,eAAe,CAAE/3kB,SAAS,IACxBgK,IACX,EAOA+ksB,EAAiB3ksB,UAAU076B,sBAAwB,SAAUC,GACzD,GAAqC,WAAjC/76B,KAAKi9f,wBACL,MAAM,IAAI11f,MAAM,mHAKpB,OAHIw06B,EAAmBlkzB,kBACnB73H,KAAK+tkB,eAAe,CAAEl2c,iBAAkBkkzB,EAAmBlkzB,mBAExD73H,IACX,EACA+ksB,EAAiB3ksB,UAAU476B,cAAgB,SAAUz+4B,GACjD,IAAI0+4B,EAAej86B,KAAKm76B,kBAAkBtn7B,IAAI0pC,GAC1C0+4B,IACA1+4B,EAAGplC,oBAAoB,wBAAyB8j7B,EAAaC,YAC7D3+4B,EAAGplC,oBAAoB,wBAAyB8j7B,EAAaE,YAC7Dn86B,KAAKm76B,kBAAkB1k5B,OAAO8G,GAEtC,EACAwnqB,EAAiB3ksB,UAAUg86B,YAAc,SAAU7+4B,GAC/C,IAAIr5B,EAAQlE,KAEZ,IADmBA,KAAKm76B,kBAAkBtn7B,IAAI0pC,GAC3B,CACf,IAAI2+4B,EAAa,SAAU/v6B,GAAS,OAAOjI,EAAMm46B,YAAYlw6B,EAAOoxB,EAAK,EACrE4+4B,EAAa,SAAUhw6B,GAAS,OAAOjI,EAAMo46B,YAAYnw6B,EAAOoxB,EAAK,EAEzEA,EAAGrlC,iBAAiB,wBAAyBgk7B,GAC7C3+4B,EAAGrlC,iBAAiB,wBAAyBik7B,GAC7Cn86B,KAAKm76B,kBAAkBpn7B,IAAIwpC,EAAI,CAAE2+4B,WAAYA,EAAYC,WAAYA,EAAYI,YAH/D,SAAUpw6B,GAAS,OAAOjI,EAAMs46B,aAAarw6B,EAAOoxB,EAAK,GAI/E,CACJ,EACAwnqB,EAAiB3ksB,UAAUi86B,YAAc,SAAUlw6B,EAAOsw6B,GACtDz86B,KAAKoF,KAAKkC,MAAM,cAChB,IAAIo16B,EAAYvw6B,EAAMww6B,uBACtB386B,KAAKo76B,gBAAgBrn7B,IAAI0o7B,EAASC,GAClC,IAAIH,EAAcv86B,KAAKm76B,kBAAkBtn7B,IAAI4o7B,GAASF,YACtDG,EAAUxk7B,iBAAiB,SAAUqk7B,GACrCZ,EAAuB376B,KAC3B,EACA+ksB,EAAiB3ksB,UAAUk86B,YAAc,SAAUnw6B,EAAOsw6B,GACtDz86B,KAAKoF,KAAKkC,MAAM,cAChBtH,KAAKo76B,gBAAgB3k5B,OAAOgm5B,GAC5B,IAAIF,EAAcv86B,KAAKm76B,kBAAkBtn7B,IAAI4o7B,GAASF,YACtCpw6B,EAAMww6B,uBACZxk7B,oBAAoB,SAAUok7B,GACxCZ,EAAuB376B,KAC3B,EACA+ksB,EAAiB3ksB,UAAUo86B,aAAe,WACtCjB,EAAyBv76B,KAC7B,EACA+ksB,EAAiB3ksB,UAAU4mD,OAAS,SAAUzpB,GAC1C,IAAIpqC,EAAS6Q,EAAO5D,UAAU4mD,OAAO3mD,KAAKL,KAAMu9B,GAYhD,MAX0C,SAAtCv9B,KAAK+8f,8BAGL/8f,KAAKk76B,mBAAmB5n7B,IAAIH,GAEhC6M,KAAKw76B,sBAAsBl23B,QAAQnyD,GACnC6M,KAAKs76B,gBAAgBh23B,QAAQnyD,GACzB6M,KAAKg76B,mCACLh76B,KAAKi76B,kCAAoCj76B,KAAKi76B,mCAuG1D,SAAwC2B,GACpC,SAASruW,IACLotW,EAAuBiB,EAC3B,CAEA,OADArvW,EAA0BiB,mBAAmB,EAAGD,GACzC,WACHhB,EAA0BkB,oBAAoB,EAAGF,EACrD,CACJ,CA/G+FsuW,CAA+B786B,OAEtHA,KAAKo86B,YAAYjp7B,GACVA,CACX,EACA4xsB,EAAiB3ksB,UAAU6mD,OAAS,SAAU1pB,GAC1C,IAAIr5B,EAAQlE,KACR7M,EAAS6Q,EAAO5D,UAAU6mD,OAAO5mD,KAAKL,KAAMu9B,GAgBhD,OAfejpC,MAAMyb,QAAQ5c,GAAUA,EAAS,CAACA,IACxCnB,QAAQ,SAAU1L,GACvB4d,EAAMs36B,sBAAsBzxQ,UAAUzjrB,GACtC4d,EAAMo36B,gBAAgBvxQ,UAAUzjrB,GAChC4d,EAAMg36B,mBAAmBzk5B,OAAOnwC,GAChC4d,EAAM836B,cAAc117B,EACxB,GAC+B,IAA3B0Z,KAAK++f,aAAahsf,MACd/S,KAAKi76B,oCACLj76B,KAAKi76B,oCACLj76B,KAAKi76B,kCAAoC,MAGjDU,EAAuB376B,MACvBu76B,EAAyBv76B,MAClB7M,CACX,EA2BA4xsB,EAAiB3ksB,UAAU48O,aAAe,WACtC,OAAOh5O,EAAO5D,UAAU48O,aAAal8O,MAAMd,KAAM7L,UACrD,EA+BA4wsB,EAAiB3ksB,UAAU68O,gBAAkB,WACzC,OAAOj5O,EAAO5D,UAAU68O,gBAAgBn8O,MAAMd,KAAM7L,UACxD,EACA4wsB,EAAiB3ksB,UAAUpZ,SAAW,WAClC,MAAO,sBAAwBgZ,KAAKwF,YAAc,KAAOxF,KAAKs2K,IAAM,GACxE,EASAyuhB,EAAiB3ksB,UAAUmyT,YAAc,SAAUj+N,GAC/C,OAAOtwF,EAAO5D,UAAUmyT,YAAYlyT,KAAKL,KAAMs0F,EACnD,EACOywmB,CACX,CApSqC,CAjBT61O,EAAsB3+rB,IA+TlD,SAAS0/rB,EAAuBmB,GAC5B,GAAsD,SAAlDA,EAAiB//a,6BAArB,CAGA,IAAIggb,EAAkBD,EAAiBtyC,0BAA0Bv54B,OAAO,SAAUssC,GAAM,OAAQu/4B,EAAiB5B,mBAAmBvn7B,IAAI4pC,EAAK,IAI7H,IAHCu/4B,EAAiBtyC,0BAA0Bv54B,OAAO,SAAUssC,GAAM,OAAOu/4B,EAAiB1B,gBAAgBzn7B,IAAI4pC,EAAK,GAE3GnpC,OAAS,GAAmC,YAA7B3L,SAASollB,iBAAiCkvW,EAAgB3o7B,OAAS,IAEvG0o7B,EAAiBzB,cAActg3B,QAC/B+h3B,EAAiB/uW,eAAe,CAAE/3kB,SAAS,KAErC8m7B,EAAiBzB,cAAcjjzB,OAErC0kzB,EAAiBzB,cAAc5u7B,OAXnC,CAaJ,CACA,SAAS8u7B,EAAyBuB,GAC9B,GAAiD,SAA7CA,EAAiB7/a,wBAArB,CAGA,IAAI8/a,EAAkBD,EAAiBtyC,0BAA0Bv54B,OAAO,SAAUssC,GAAM,OAAQu/4B,EAAiB5B,mBAAmBvn7B,IAAI4pC,EAAK,GACzIy/4B,EAAcF,EAAiBtyC,0BAA0Bz34B,IAAI,SAAUwqC,GACvE,IAAIm/4B,EAAYI,EAAiB1B,gBAAgBvn7B,IAAI0pC,GACrD,OAAOm/4B,EAAY,CAAEzw7B,aAAcyw7B,EAAU917B,OAAQsF,YAAaww7B,EAAUh27B,OAAU,CAAEuF,aAAc,EAAGC,YAAa,EAC1H,GACI+w7B,EAAgBF,EAAgB/u7B,OAAOgv7B,GAC3C,GAAIC,EAAc7o7B,OAAS,EAAG,CAC1B,IAEQuP,EAFC+7F,EAAOu90B,EAAc7p7B,KAAK,SAAU8p7B,EAAKC,GAC9C,OAAOA,EAAIlx7B,aAAekx7B,EAAIjx7B,YAAcgx7B,EAAIjx7B,aAAeix7B,EAAIhx7B,YAAc,CACrF,GAAI,GAAY,GACZ2rI,EAAmB,CAAEjxI,OADU+c,EAAG1X,aACSvF,MADmBid,EAAGzX,aAErE4w7B,EAAiB/uW,eAAe,CAAEl2c,iBAAkBA,GACxD,CAbA,CAcJ,CAyCAn2C,EAAOj9F,QAAUsgtB,C,qCC9ajB,IACQjlsB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAMA486B,EAA6B,SAAUp56B,GAKvC,SAASo56B,IACL,IAAIl56B,EAAQF,EAAO3D,KAAKL,OAASA,KAOjC,OANAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B4pmB,UAAW,CACPnonB,MAAO,EACP8lC,UAAU,KAGXvnB,CACX,CAeA,OA5BAnE,EAAUq96B,EAAap56B,GAqBvBo56B,EAAYh96B,UAAUhK,OAAS,SAAUymgB,GACrC,OAAIA,EAAU/3K,SAAW9kV,KAAK8tmB,UACnB9tmB,MAEXA,KAAK8tmB,UAAYjxG,EAAU/3K,SACpB9kV,KAAK+tG,OAAO8uZ,EAAUwgb,cACjC,EACOD,CACX,CA9BgC,CAJP,EAAQ,QAyCjC171B,EAAOj9F,QAAU247B,C,+BCxDjB,IAAIj80B,EAAW,EAAQ,OAIvBzf,EAAOj9F,QAAU,WACf,IAAI6xN,EAAOn1G,EAASnhG,MAChB7M,EAAS,GASb,OARImjN,EAAKijtB,aAAYpm6B,GAAU,KAC3BmjN,EAAKv1F,SAAQ5tH,GAAU,KACvBmjN,EAAKgjtB,aAAYnm6B,GAAU,KAC3BmjN,EAAKrU,YAAW9uM,GAAU,KAC1BmjN,EAAKwqI,SAAQ3tV,GAAU,KACvBmjN,EAAK0mU,UAAS7phB,GAAU,KACxBmjN,EAAKgnuB,cAAanq7B,GAAU,KAC5BmjN,EAAKghH,SAAQnkU,GAAU,KACpBA,CACT,C,YCEAuuF,EAAOj9F,QALP,SAAc4vB,GACZ,IAAIjgB,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OACvC,OAAOA,EAASigB,EAAMjgB,EAAS,QAAK0C,CACtC,C,+BChBA,IAAI4yF,EAAI,EAAQ,OACZ6z1B,EAAY,eAKhB7z1B,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJlB,EAAQ,QAIgC,CACvD8ob,SAAU,SAAkB1rT,GAC1B,OAAOs/sB,EAAUv96B,KAAMi+N,EAAW9pO,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EAC1E,G,+BCTF,IAAIupG,EAAc,EAAQ,OACtBs7I,EAAsB,EAAQ,OAC9B30P,EAAW,EAAQ,KACnBioO,EAAyB,EAAQ,OAEjCv8M,EAAS2tF,EAAY,GAAG3tF,QACxBkzE,EAAaya,EAAY,GAAGza,YAC5B0tB,EAAcjT,EAAY,GAAGvlG,OAE7B23X,EAAe,SAAU+qjB,GAC3B,OAAO,SAAU7qjB,EAAOpgX,GACtB,IAGIi8C,EAAO6uB,EAHP1iE,EAAI3zB,EAASioO,EAAuB0jK,IACpC7pY,EAAW6yP,EAAoBppO,GAC/BQ,EAAO4H,EAAEvmB,OAEb,OAAItL,EAAW,GAAKA,GAAYiqB,EAAayq6B,EAAoB,QAAK1m7B,GACtE03D,EAAQo3B,EAAWjrE,EAAG7xB,IACP,OAAU0lE,EAAQ,OAAU1lE,EAAW,IAAMiqB,IACtDsqE,EAASuI,EAAWjrE,EAAG7xB,EAAW,IAAM,OAAUu0F,EAAS,MAC3Dmg2B,EACE9q6B,EAAOiI,EAAG7xB,GACV0lE,EACFgv3B,EACElq0B,EAAY34F,EAAG7xB,EAAUA,EAAW,GACVu0F,EAAS,OAAlC7uB,EAAQ,OAAU,IAA0B,KACvD,CACF,EAEAkzB,EAAOj9F,QAAU,CAGfwxe,OAAQxjG,GAAa,GAGrB//W,OAAQ+/W,GAAa,G,kBCnCvB,IAIIz/X,EAJY,EAAQ,MAId8mhB,CAHC,EAAQ,MAGO,OAE1Bp4b,EAAOj9F,QAAUuO,C,0ECAjB,SAFU,OAAU,IAAM,M,kBCJ1B,IAAIoe,EAAK,EAAQ,OACbuvW,EAAK,EAAQ,OAEbypV,EAAOzpV,EACXypV,EAAKh5rB,GAAKA,EACVg5rB,EAAKzpV,GAAKA,EAEVj/R,EAAOj9F,QAAU2ltB,C,qCCLjB,IACQtqsB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIv8F,EAAe,EAAQ,OACvB4+f,EAA8B,EAAQ,OAItCy7a,EAAuC,SAAUz56B,GAOjD,SAASy56B,EAAsBC,EAASrnnB,GACpC,IAAInyT,EAAQF,EAAO3D,KAAKL,OAASA,KAajC,OAZAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3By56B,WAAY,CACRh47B,MAAO,IAAIopF,SAEf6u2B,SAAU,CACNj47B,MAAO+37B,GAEXtgb,WAAY,CACRz3gB,MAAO0wU,KAGfA,EAAU1rN,GAAG,UAAW,WAAc,OAAOzmG,EAAM2G,KAAK,UAAY,GAC7D3G,CACX,CAkEA,OAvFAnE,EAAU096B,EAAuBz56B,GAsBjCla,OAAOwY,eAAem76B,EAAsBr96B,UAAW,QAAS,CAK5DvM,IAAK,WACD,OAAOmM,KAAKo9f,WAAWpzf,KAC3B,EACA0hB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAem76B,EAAsBr96B,UAAW,SAAU,CAK7DvM,IAAK,WACD,OAAOmM,KAAKo9f,WAAWliG,MAC3B,EACAxvY,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAem76B,EAAsBr96B,UAAW,eAAgB,CAKnEvM,IAAK,WACD,OAAOmM,KAAKo9f,WAAWygb,YAC3B,EACAny5B,YAAY,EACZuL,cAAc,IAMlBwm5B,EAAsBr96B,UAAU3T,MAAQ,WACpC,IAAIyX,EAAQlE,KACZA,KAAK0F,OACL,IAAIi4D,EAAUl2D,WAAW,WA+BjC,IAAcq26B,EAeNC,EA7CQ756B,EAAMwxkB,WAAa/3gB,IA8BrBmg3B,EA3BG556B,EA0CT656B,GAdQD,EAAQF,SAAS/+Z,iBACvBvqhB,MAAMuwB,KAAKi55B,EAAQF,SAAS/+Z,iBAAiBj2f,UAC7C,IAED71B,IAAI,SAAU6uhB,GAAQ,OAAOA,EAAKo2O,eAAiB,GACnD/mwB,OAAO,SAAU4W,GAAM,MAA6B,WAAtBA,EAAGy/yB,cAA6B,GAC/Cv0zB,IAAI,SAAU8U,GAC9B,GAAIi26B,EAAQH,WAAWhq7B,IAAIkU,GACvB,OAAOi26B,EAAQH,WAAW9p7B,IAAIgU,GAElC,IAAItjB,EAAU,IAAIy9gB,EAA4Bn6f,GAE9C,OADAi26B,EAAQH,WAAW5p7B,IAAI8T,EAAItjB,GACpBA,CACX,GACsCwO,IAAI,SAAUxO,GAAW,OAAOA,EAAQuD,OAAO+lO,MAAM,WAAc,OAAO,IAAM,EAAI,GACnHl3N,QAAQmvC,IAAIi44B,GAAuBln7B,KAAK,SAAUmn7B,GAAiB,OAAOA,EAC5E/s7B,OAAO,SAAUgt7B,GAAgB,OAAOA,CAAc,GACtDlr7B,IAAI,SAAUkW,GAAU,OAAOA,EAAOgrX,WAAa,EAAI,IA7CxCp9X,KAAK,SAAUq9X,GACvB,GAAIhwX,EAAMwxkB,WAAa/3gB,EAAvB,CAGA,GAAIu2T,EAAQ9/X,OAAQ,CAChB,IAA6B6U,EAApBy2F,EAAOw0R,EAAS,GAAgB,GACzChwX,EAAMk5f,WAAW9mY,IAAIrtH,EACzB,CACA/E,EAAMzX,OALN,CAMJ,EACJ,EAAG,KACHuT,KAAK01kB,SAAW/3gB,CACpB,EAKA8/2B,EAAsBr96B,UAAUsF,KAAO,WACnCiC,aAAa3H,KAAK01kB,UAClB11kB,KAAK01kB,SAAW,IACpB,EACO+nW,CACX,CAzF0C,CAyFxCr66B,GA6BFs+E,EAAOj9F,QAAUg57B,C,6BCtJjB,IAAI/wR,EAQAH,EAyBAukO,EAtCJhn4B,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQqs4B,SAAWrs4B,EAAQ8nqB,SAAW9nqB,EAAQioqB,wBAAqB,EAKnE,SAAWA,GACPA,EAAyB,KAAI,OAC7BA,EAA0B,MAAI,OACjC,CAHD,CAGGA,IAAuBjoqB,EAAQioqB,mBAAqBA,EAAqB,CAAC,IAK7E,SAAWH,GAMPA,EAAkB,QAAI,UAKtBA,EAAgB,MAAI,QAIpBA,EAAe,KAAI,OAInBA,EAAe,KAAI,MACtB,CApBD,CAoBGA,IAAa9nqB,EAAQ8nqB,SAAWA,EAAW,CAAC,IAK/C,SAAWukO,GAOPA,EAAmB,SAAI,WAOvBA,EAAiB,OAAI,QACxB,CAfD,CAeGA,IAAars4B,EAAQqs4B,SAAWA,EAAW,CAAC,G,+BCrD/C,IAIgCx+2B,EAiB5B4r6B,EAnBA72mB,GAE4B/0T,EAJX,EAAQ,QAIwBA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,GAGnF80W,IAAiC,oBAAXjgY,SAA0BA,OAAOsB,WAAYtB,OAAOsB,SAASskB,eAgBrFmx6B,EADE92jB,EACQjgY,OACe,oBAATm7F,KACNA,UAEAxrF,EAGZ,IAcQ6rC,EATAu6P,EALJqoJ,EAAkC,oBAAb98b,UAA4BA,SAAS88b,YAC1D44f,GAAgB,EAEpB,GAAI/2jB,IAAcm+D,EAAa,CAC7B,IAAImwU,GACEx4d,EAAMghpB,EAAQ/u6B,uBAAyB+u6B,EAAQ57gB,0BAA4B47gB,EAAQphpB,6BAA+B,SAAUhoS,GAC9H,OAAOop7B,EAAQz26B,WAAW3S,EAAI,GAChC,EACO,SAAUA,GACf,OAAOooS,EAAIpoS,EACb,GAGEsp7B,GACEz74B,EAASu74B,EAAQ/1sB,sBAAwB+1sB,EAAQG,yBAA2BH,EAAQnhpB,4BAA8BmhpB,EAAQv26B,aACvH,SAAU5J,GACf,OAAO4kC,EAAO5kC,EAChB,GAGEug7B,EAAgB,SAAuBh47B,GACzC,IAAIg1V,EAAWh1V,EAAQi47B,mBACnBz2b,EAASxsK,EAASm+gB,kBAClB+kF,EAAWljmB,EAASmjmB,iBACpBC,EAAc52b,EAAO2xW,kBACzB+kF,EAASzx7B,WAAayx7B,EAAS3v7B,YAC/B2v7B,EAASvx7B,UAAYux7B,EAAS1v7B,aAC9B4v7B,EAAYh15B,MAAMhjC,MAAQohgB,EAAOnhgB,YAAc,EAAI,KACnD+37B,EAAYh15B,MAAM9iC,OAASkhgB,EAAOjhgB,aAAe,EAAI,KACrDihgB,EAAO/6f,WAAa+6f,EAAOj5f,YAC3Bi5f,EAAO76f,UAAY66f,EAAOh5f,YAC5B,EAMIu2rB,EAAiB,SAAwBrgsB,GAC3C,IAAIsB,EAAU0Z,KACds+6B,EAAct+6B,MACVA,KAAK2+6B,eAAeP,EAAYp+6B,KAAK2+6B,eACzC3+6B,KAAK2+6B,cAAgBjpL,EAAa,YARhB,SAAuBpvwB,GACzC,OAAOA,EAAQK,aAAeL,EAAQs47B,eAAel47B,OAASJ,EAAQO,cAAgBP,EAAQs47B,eAAeh47B,MAC/G,EAOQi47B,CAAcv47B,KAChBA,EAAQs47B,eAAel47B,MAAQJ,EAAQK,YACvCL,EAAQs47B,eAAeh47B,OAASN,EAAQO,aACxCP,EAAQw47B,oBAAoB9s7B,QAAQ,SAAU8C,GAC5CA,EAAGuL,KAAK/Z,EAAStB,EACnB,GAEJ,EACF,EAGI+jC,GAAY,EAEZg25B,EAAiB,GACjBC,EAAsB,iBACtBC,EAAc,kBAAkB/97B,MAAM,KACtCg+7B,EAAc,uEAAuEh+7B,MAAM,KAG/F,GAAIkmY,EAAW,CACb,IAAIt+G,EAAMrgR,SAASskB,cAAc,eAKjC,QAJgCjW,IAA5BgyQ,EAAIp/O,MAAM+9Z,gBACZ1+Z,GAAY,IAGI,IAAdA,EACF,IAAK,IAAI1jC,EAAI,EAAGA,EAAI457B,EAAY7q7B,OAAQ/O,IACtC,QAAoDyR,IAAhDgyQ,EAAIp/O,MAAMu15B,EAAY557B,GAAK,iBAAgC,CAG7D057B,EAAiB,IAFXE,EAAY557B,GAES+C,cAAgB,IAC3C427B,EAAsBE,EAAY757B,GAClC0jC,GAAY,EACZ,KACF,CAGN,CAEA,IAAI0+Z,EAAgB,aAChBkkP,EAAqB,IAAMozQ,EAAiB,aAAet3f,EAAgB,gDAC3E03f,EAAiBJ,EAAiB,kBAAoBt3f,EAAgB,IAC5E,CA4DA/lW,EAAOj9F,QAAU,CACfkuV,kBAxCsB,SAA2BrsV,EAASwO,GAC1D,QAA2BgC,IAAvBxQ,EAAQ0B,WAA0B,CACpC,IAAIo37B,EAAgB327B,SAASskB,cAAc,OAC3CzmB,EAAQ0B,WAAao37B,CACvB,CACA947B,EAAUA,EAAQ0B,WACdu9b,EAAaj/b,EAAQi/b,YAAY,WAAYzwb,IAC1CxO,EAAQi47B,qBAC+B,UAAtCl27B,iBAAiB/B,GAASwC,WAAsBxC,EAAQojC,MAAM5gC,SAAW,YA3BhE,WACjB,IAAKq17B,EAAe,CAElB,IAAIh17B,GAAOwirB,GAA0C,IAAM,uBAAyBwzQ,GAAkC,IAA5G,gVACNtr4B,EAAOprD,SAASorD,MAAQprD,SAAS+hM,qBAAqB,QAAQ,GAC9D9gK,EAAQjhC,SAASskB,cAAc,SAEnC2c,EAAM1Z,KAAO,WACT0Z,EAAMqgG,WACRrgG,EAAMqgG,WAAWC,QAAU7gI,EAE3BugC,EAAMymE,YAAY1nG,SAASyhI,eAAe/gI,IAG5C0qD,EAAKs8C,YAAYzmE,GACjBy05B,GAAgB,CAClB,CACF,CAWMkB,GACA/47B,EAAQs47B,eAAiB,CAAC,EAC1Bt47B,EAAQw47B,oBAAsB,IAC7Bx47B,EAAQi47B,mBAAqB917B,SAASskB,cAAc,QAAQ+8F,UAAY,kBACzExjH,EAAQi47B,mBAAmB3zvB,UAAY,oFACvCtkM,EAAQ6pG,YAAY7pG,EAAQi47B,oBAC5BD,EAAch47B,IAEd,EAAI+gV,EAAgB7kP,SAASl8F,EAAS,SAAU++rB,GAAgB,GAGhE25P,GAAuB147B,EAAQi47B,mBAAmBrm7B,iBAAiB8m7B,EAAqB,SAAUh67B,GAC5FA,EAAEyic,eAAiBA,GAAe62f,EAAch47B,EACtD,IAEFA,EAAQw47B,oBAAoBhr7B,KAAKgB,GAErC,EAeE0+U,qBAbyB,SAA8BltV,EAASwO,GAChExO,EAAUA,EAAQ0B,WACdu9b,EAAaj/b,EAAQg/b,YAAY,WAAYxwb,IAC/CxO,EAAQw47B,oBAAoB/x5B,OAAOzmC,EAAQw47B,oBAAoBv27B,QAAQuM,GAAK,GACvExO,EAAQw47B,oBAAoB1q7B,SAC/B9N,EAAQ6R,oBAAoB,SAAUktrB,GACtC/+rB,EAAQi47B,oBAAsBj47B,EAAQ4pG,YAAY5pG,EAAQi47B,qBAGhE,E,qFCjJA,QAhBA,SAAoBjz4B,EAAQs2T,EAAO5tP,GAKjC,IAJA,IAAIx9G,GAAS,EACTpC,EAASwtW,EAAMxtW,OACfjB,EAAS,CAAC,IAELqD,EAAQpC,GAAQ,CACvB,IAAIy0E,EAAO+4R,EAAMprW,GACb7Q,GAAQ,OAAQ2lD,EAAQu9B,GAExBmrC,EAAUruH,EAAOkjF,KACnB,OAAQ11E,GAAQ,OAAS01E,EAAMv9B,GAAS3lD,EAE5C,CACA,OAAOwN,CACT,C,+BC1BA,IAAIu2F,EAAI,EAAQ,OACZ3/F,EAAS,EAAQ,OAKrB2/F,EAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMxwB,MAAO,EAAGh5G,OAAQ/2G,OAAOC,SAAWA,GAAU,CAC9EA,OAAQA,G,6BCPVD,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ667B,eAAiB,SAAUC,GAAU,OAAO,WAChD,MAAM,IAAIh46B,MAAMg46B,EAAS,8DAC7B,CAAG,EAKH967B,EAAQ08U,SAJO,CACXh/M,QAAIrrH,EACJqvH,eAAWrvH,E,kBCPf,IAAIyoN,EAAW,EAAQ,OACnBiguB,EAAW,EAAQ,OACnBvtW,EAAc,EAAQ,OAc1Bvwf,EAAOj9F,QAJP,SAAkBiwG,EAAMjoG,GACtB,OAAOwllB,EAAYutW,EAAS9q1B,EAAMjoG,EAAO8yN,GAAW7qH,EAAO,GAC7D,C,yBCLQ,SAAW7zG,GAAU,aAIbA,EAAOG,aAAa,SAAU,CACtCC,OAAQ,CACJm+O,WACI,qFAAqFl+O,MACjF,KAERs9C,OAAQ,sHAAsHt9C,MAC1H,KAEJm+O,SAAU,mBAEdl+O,YACI,+DAA+DD,MAC3D,KAERghI,kBAAkB,EAClB9gI,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJ0+G,GAAI,aACJz+G,IAAK,4BACL0+G,IAAK,mBACLz+G,KAAM,iCACN0+G,KAAM,wBAEVj+G,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNC,EAAG,gBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,aACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERM,uBAAwB,qBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,IAAIohH,EACW,IAAX9+K,EACM,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACA,IAIhB,MAHe,MAAX09D,GAA6B,MAAXA,IAClBohH,EAAS,KAEN9+K,EAAS8+K,CACpB,EACA39N,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzFyCC,CAAQ,EAAQ,O,+BCL1D,IAAIq7H,EAAc,EAAQ,OACtBo5vB,EAAwB,EAAQ,OAChC2e,EAAuB,EAAQ,OAC/BC,EAAkC,EAAQ,OAI1Ch4wB,IAAgB+3wB,EAAqBE,UACvC7e,EAAsBln1B,OAAO1xB,UAAW,QAAS,CAC/C62B,cAAc,EACdpjC,IAAK+j4B,IAGPD,EAAqBE,SAAU,E,yBCJzB,SAAWh34B,GAAU,aAIzB,IAAIu/M,EAAQ,CACRl9M,GAAI,qCAAqChC,MAAM,KAC/CiC,EAAG,iCAAiCjC,MAAM,KAC1CkC,GAAI,iCAAiClC,MAAM,KAC3CmC,EAAG,iCAAiCnC,MAAM,KAC1CoC,GAAI,iCAAiCpC,MAAM,KAC3CqC,EAAG,6BAA6BrC,MAAM,KACtCsC,GAAI,6BAA6BtC,MAAM,KACvCuC,EAAG,iCAAiCvC,MAAM,KAC1CwC,GAAI,iCAAiCxC,MAAM,KAC3CyC,EAAG,wBAAwBzC,MAAM,KACjC0C,GAAI,wBAAwB1C,MAAM,MAKtC,SAASs9C,EAAO8iU,EAAOr+T,EAAQw+E,GAC3B,OAAIA,EAEOx+E,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKq+T,EAAM,GAAKA,EAAM,GAI5Dr+T,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKq+T,EAAM,GAAKA,EAAM,EAE3E,CACA,SAASD,EAAuBp+T,EAAQw+E,EAAej3H,GACnD,OAAOy4C,EAAS,IAAMzE,EAAO4hK,EAAM51M,GAAMy4C,EAAQw+E,EACrD,CACA,SAASg+zB,EAAyBx84B,EAAQw+E,EAAej3H,GACrD,OAAOg0C,EAAO4hK,EAAM51M,GAAMy4C,EAAQw+E,EACtC,CAKS5gI,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGC,MAC3G,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,0EAA0EF,MACtE,KAERG,cAAe,kBAAkBH,MAAM,KACvCI,YAAa,kBAAkBJ,MAAM,KACrCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVS,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNC,EAnCR,SAAyBggD,EAAQw+E,GAC7B,OAAOA,EAAgB,iBAAmB,gBAC9C,EAkCQv+H,GAAIm+W,EACJl+W,EAAGs87B,EACHr87B,GAAIi+W,EACJh+W,EAAGo87B,EACHn87B,GAAI+9W,EACJ99W,EAAGk87B,EACHj87B,GAAI69W,EACJ59W,EAAGg87B,EACH/77B,GAAI29W,EACJ19W,EAAG877B,EACH777B,GAAIy9W,GAERn9W,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAjGyCC,CAAQ,EAAQ,O,+BCN1D,IAAImlG,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,aAAe,CAC/E2wtB,SAAU,SAAkB3s6B,GAC1B,OAAO+7M,EAAW9uN,KAAM,OAAQ,OAAQ+S,EAC1C,G,+BCTF,IAAI69W,EAAc,EAAQ,OAEtBvwX,EAAOorG,SAASrrG,UAAUC,KAE9BqhF,EAAOj9F,QAAUmsY,EAAcvwX,EAAKq7C,KAAKr7C,GAAQ,WAC/C,OAAOA,EAAKS,MAAMT,EAAMlM,UAC1B,C,0KCGI+zP,EAA8B,aAAiB,SAAU98P,EAAMynH,GACjE,IAAIC,EAAW1nH,EAAK0nH,SAChB5xH,EAAQkK,EAAKlK,MACb4oH,EAAY1+G,EAAK0+G,UACjBq6vB,EAAgB/42B,EAAK+42B,cACrB16nB,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,IAASA,EAC1Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,QAAS,YAAa,gBAAiB,OAEhG8pC,GAAS,QAAmB49E,EAAU,wBAEpBh8G,IAAlBqt2B,IACF/x0B,EAAM0gF,SAAWqxvB,GAGnB,IAAIh8mB,GAAqB,SACrBw3rB,EAAcx3rB,EAAmB,GACjCH,EAASG,EAAmB,GAAGH,OAKnC,OAHA23rB,EAAY9s0B,KAAM,OAAc8s0B,EAAY9s0B,KAAK,OAAyBA,EAAK,mBAG3D,gBAAoB82H,GAAW,OAAS,CAC1Dn/M,QAASw9N,EACTl+I,UAAW,IAAWA,EAAW50E,EAAQh0C,GAASg0C,EAAS,WAC1Dyq5B,EAAavt5B,GAClB,GACA81N,EAAe7/D,YAAc,iBAC7B,S,kBCtCA,IAAIw2gB,EAAa,EAAQ,OACrBz1c,EAAS,EAAQ,OA8BrB1nK,EAAOj9F,QAJP,SAAuBkB,GACrB,OAAOk5sB,EAAWl5sB,EAAOyjQ,EAAOzjQ,GAClC,C,6BC5BAmE,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ0r4B,0BAA4B1r4B,EAAQm77B,mBAAqBn77B,EAAQqt4B,wBAA0Brt4B,EAAQot4B,mBAAqBpt4B,EAAQmt4B,WAAant4B,EAAQ+s4B,iBAAmB/s4B,EAAQ0z4B,wBAAqB,EAC7M1z4B,EAAQ0z4B,mBAAqB,GAC7B1z4B,EAAQ+s4B,iBAAmB,EAC3B/s4B,EAAQmt4B,WAAa,uCACrBnt4B,EAAQot4B,mBAAqB,kBAC7Bpt4B,EAAQqt4B,wBAA0B,uBAClCrt4B,EAAQm77B,mBAAqB,mBAC7Bn77B,EAAQ0r4B,0BAA4B,CAChCzp4B,MAAO,IACPE,OAAQ,I,+BCRV86F,EAAOj9F,QAAU,EAAjB,K,+BCDFqF,OAAOwY,eAAe7d,EAAS,aAA/B,CACCkB,OAAO,IAGR,IAAIs4hB,EAAiB,EAAQ,OAE7Bx5hB,EAAA,QAAqB,CACpBoP,IAAKoqhB,EAAepqhB,IACpBE,IAAKkqhB,EAAelqhB,IACpByvH,UAAWy6Z,EAAez6Z,WAE3B9hC,EAAOj9F,QAAUA,EAAiB,O,kBCblC,IAAIi7gB,EAAe,EAAQ,OAMvB3ye,EAHaz4B,MAAM8L,UAGC2sB,OA4BxB20D,EAAOj9F,QAjBP,SAAyB+F,GACvB,IAAIuL,EAAOiK,KAAKi4T,SACZzhU,EAAQkpgB,EAAa3pgB,EAAMvL,GAE/B,QAAIgM,EAAQ,IAIRA,GADYT,EAAK3B,OAAS,EAE5B2B,EAAKsM,MAEL0qB,EAAO1sB,KAAKtK,EAAMS,EAAO,KAEzBwJ,KAAK+S,KACA,GACT,C,+BC/BA,IAAI1S,EAAO,EAAQ,OACf4pO,EAAY,EAAQ,OACpB9oI,EAAW,EAAQ,OACnB2xgB,EAAc,EAAQ,OACtBplY,EAAoB,EAAQ,OAE5BmzG,EAAavgV,UAEjBohF,EAAOj9F,QAAU,SAAUk9F,EAAU+f,GACnC,IAAIolI,EAAiB3yO,UAAUC,OAAS,EAAIs5O,EAAkB/rJ,GAAY+f,EAC1E,GAAIuoI,EAAUnD,GAAiB,OAAO3lI,EAAS9gG,EAAKymO,EAAgBnlJ,IACpE,MAAM,IAAIk/P,EAAWiyR,EAAYnxhB,GAAY,mBAC/C,C,yBCJQ,SAAW9gG,GAAU,aA4ChBA,EAAOG,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJE,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJ+gI,kBAAkB,EAClB9gI,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNC,EAAG,gBACHC,GAAI,YACJC,EAAG,UACHC,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERM,uBAAwB,mBACxBC,QAAS,SAAU8+C,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAnGyCC,CAAQ,EAAQ,O,+BCL1D,IAAIwrB,EAAU,EAAQ,OAClBmxG,EAAoB,EAAQ,OAC5B89M,EAA2B,EAAQ,OACnCtjR,EAAO,EAAQ,OAIfswpB,EAAmB,SAAUj+sB,EAAQoxC,EAAU5tB,EAAQ46rB,EAAW1/sB,EAAOq1N,EAAOm8iB,EAAQj9vB,GAM1F,IALA,IAGI1a,EAASu57B,EAHTC,EAAcrz7B,EACdsz7B,EAAc,EACdh6lB,IAAQk4a,GAASvitB,EAAKuitB,EAAQj9vB,GAG3B++6B,EAAc5zO,GACf4zO,KAAexu6B,IACjBjrB,EAAUy/V,EAAQA,EAAMx0U,EAAOwu6B,GAAcA,EAAa5g5B,GAAY5tB,EAAOwu6B,GAEzEj+tB,EAAQ,GAAK/xM,EAAQzpB,IACvBu57B,EAAa3+zB,EAAkB56H,GAC/Bw57B,EAAc9zO,EAAiBj+sB,EAAQoxC,EAAU74C,EAASu57B,EAAYC,EAAah+tB,EAAQ,GAAK,IAEhGk9G,EAAyB8gnB,EAAc,GACvC/x7B,EAAO+x7B,GAAex57B,GAGxBw57B,KAEFC,IAEF,OAAOD,CACT,EAEAp+1B,EAAOj9F,QAAUuntB,C,yBC/Bc,mBAApBztD,gBACP78jB,EAAOj9F,QAAU85pB,gBAGjB78jB,EAAOj9F,QAAU,WACb,MAAM,IAAI8iB,MAAM,mCACpB,C,+BCPJ,IAAI84F,EAAc,EAAQ,OACtB4f,EAAQ,EAAQ,OAChB0pa,EAAW,eAEXtiS,EAAcC,WACdkgpB,EAAYp33B,SACZtqB,EAAMN,KAAKM,IACXs/c,EAAgBv8b,KAAKzI,UACrB4/6B,EAAwB56e,EAAcxkW,YACtC4kW,EAAgBnlW,EAAY+kW,EAAc3/V,SAC1CkhJ,EAAatmJ,EAAY+kW,EAAcz+M,YACvCmkI,EAAiBzqR,EAAY+kW,EAAct6E,gBAC3CG,EAAc5qR,EAAY+kW,EAAcn6E,aACxCI,EAAqBhrR,EAAY+kW,EAAc/5E,oBAC/CH,EAAgB7qR,EAAY+kW,EAAcl6E,eAC1CF,EAAc3qR,EAAY+kW,EAAcp6E,aACxCG,EAAgB9qR,EAAY+kW,EAAcj6E,eAK9CzpS,EAAOj9F,QAAWw7H,EAAM,WACtB,MAA2D,6BAApD+/zB,EAAsB3/6B,KAAK,IAAIwI,MAAK,gBAC7C,KAAOo3G,EAAM,WACX+/zB,EAAsB3/6B,KAAK,IAAIwI,KAAKvjB,KACtC,GAAM,WACJ,IAAKki5B,EAAUhic,EAAcxlc,OAAQ,MAAM,IAAIqnP,EAAY,sBAC3D,IAAI/lN,EAAOthC,KACPy9E,EAAOqtS,EAAexpV,GACtBozQ,EAAe22E,EAAmB/pV,GAClC3tB,EAAO8pE,EAAO,EAAI,IAAMA,EAAO,KAAO,IAAM,GAChD,OAAO9pE,EAAOg2gB,EAAS7jiB,EAAI23F,GAAO9pE,EAAO,EAAI,EAAG,GAC9C,IAAMg2gB,EAAS3+J,EAAY1pV,GAAQ,EAAG,EAAG,GACzC,IAAMqof,EAAShjS,EAAWrlN,GAAO,EAAG,GACpC,IAAMqof,EAAS1+J,EAAY3pV,GAAO,EAAG,GACrC,IAAMqof,EAASz+J,EAAc5pV,GAAO,EAAG,GACvC,IAAMqof,EAASx+J,EAAc7pV,GAAO,EAAG,GACvC,IAAMqof,EAASj1O,EAAc,EAAG,GAChC,GACJ,EAAIsroB,C,+BCtCJ,IAAIlp7B,EAEAmp7B,EAAeC,YACfnzW,EAAYthe,SACZo1O,EAAavgV,UAGb6/6B,EAAwB,SAAUC,GACrC,IACC,OAAOrzW,EAAU,yBAA2BqzW,EAAmB,iBAAxDrzW,EACR,CAAE,MAAO/nlB,GAAI,CACd,EAEIwpQ,EAAQ1kQ,OAAOyrC,yBACnB,GAAIi5N,EACH,IACCA,EAAM,CAAC,EAAG,GACX,CAAE,MAAOxpQ,GACRwpQ,EAAQ,IACT,CAGD,IAAI6xrB,EAAiB,WACpB,MAAM,IAAIx/lB,CACX,EACIy/lB,EAAiB9xrB,EACjB,WACF,IAGC,OAAO6xrB,CACR,CAAE,MAAOE,GACR,IAEC,OAAO/xrB,EAAMr6P,UAAW,UAAUN,GACnC,CAAE,MAAO2s7B,GACR,OAAOH,CACR,CACD,CACD,CAbE,GAcAA,EAECvjT,EAAa,EAAQ,MAAR,GACb2jT,EAAW,EAAQ,MAAR,GAEX17sB,EAAWj7O,OAAO2rC,iBACrBgr5B,EACG,SAAUl67B,GAAK,OAAOA,EAAE2Z,SAAW,EACnC,MAGAwg7B,EAAY,CAAC,EAEbC,EAAmC,oBAAft71B,YAA+B0/I,EAAuBA,EAAS1/I,YAArBvuF,EAE9D8p7B,EAAa,CAChB,mBAA8C,oBAAnB9gkB,eAAiChpX,EAAYgpX,eACxE,UAAWxrX,MACX,gBAAwC,oBAAhBgnI,YAA8BxkI,EAAYwkI,YAClE,2BAA4BwhgB,GAAc/3Z,EAAWA,EAAS,GAAGvgP,OAAO0d,aAAepL,EACvF,mCAAoCA,EACpC,kBAAmB4p7B,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,oBAAZG,QAA0B/p7B,EAAY+p7B,QAC1D,WAA8B,oBAAXt8zB,OAAyBztH,EAAYytH,OACxD,kBAA4C,oBAAlBu8zB,cAAgChq7B,EAAYgq7B,cACtE,mBAA8C,oBAAnBC,eAAiCjq7B,EAAYiq7B,eACxE,YAAa951B,QACb,aAAkC,oBAAbmmG,SAA2Bt2L,EAAYs2L,SAC5D,SAAUvkL,KACV,cAAe69W,UACf,uBAAwBhhS,mBACxB,cAAeyshB,UACf,uBAAwB7phB,mBACxB,UAAW/gF,MACX,SAAUq5Y,KACV,cAAeogiB,UACf,iBAA0C,oBAAjBnziB,aAA+B/2Y,EAAY+2Y,aACpE,iBAA0C,oBAAjBxtM,aAA+BvpM,EAAYupM,aACpE,yBAA0D,oBAAzB4gvB,qBAAuCnq7B,EAAYmq7B,qBACpF,aAAcl0W,EACd,sBAAuB2zW,EACvB,cAAoC,oBAAdlkuB,UAA4B1lN,EAAY0lN,UAC9D,eAAsC,oBAAfw4B,WAA6Bl+O,EAAYk+O,WAChE,eAAsC,oBAAf5xG,WAA6BtsI,EAAYssI,WAChE,aAAchzH,SACd,UAAWrqB,MACX,sBAAuB+2oB,GAAc/3Z,EAAWA,EAASA,EAAS,GAAGvgP,OAAO0d,cAAgBpL,EAC5F,SAA0B,iBAAT6S,KAAoBA,KAAO7S,EAC5C,QAAwB,oBAAR9D,IAAsB8D,EAAY9D,IAClD,yBAAyC,oBAARA,KAAwB8poB,GAAe/3Z,EAAuBA,GAAS,IAAI/xO,KAAMxO,OAAO0d,aAAtCpL,EACnF,SAAUtR,KACV,WAAY2qB,OACZ,WAAYrmB,OACZ,eAAgB6mB,WAChB,aAAcwV,SACd,YAAgC,oBAAZxvB,QAA0BG,EAAYH,QAC1D,UAA4B,oBAAVk+B,MAAwB/9B,EAAY+9B,MACtD,eAAgByyN,WAChB,mBAAoBR,eACpB,YAAgC,oBAAZtxN,QAA0B1+B,EAAY0+B,QAC1D,WAAY1D,OACZ,QAAwB,oBAAR5+B,IAAsB4D,EAAY5D,IAClD,yBAAyC,oBAARA,KAAwB4poB,GAAe/3Z,EAAuBA,GAAS,IAAI7xO,KAAM1O,OAAO0d,aAAtCpL,EACnF,sBAAoD,oBAAtBoq7B,kBAAoCpq7B,EAAYoq7B,kBAC9E,WAAY3g7B,OACZ,4BAA6Bu8nB,GAAc/3Z,EAAWA,EAAS,GAAGvgP,OAAO0d,aAAepL,EACxF,WAAYgmoB,EAAat4oB,OAASsS,EAClC,gBAAiBmp7B,EACjB,mBAAoBK,EACpB,eAAgBK,EAChB,cAAe9/lB,EACf,eAAsC,oBAAfx7P,WAA6BvuF,EAAYuuF,WAChE,sBAAoD,oBAAtB4uf,kBAAoCn9kB,EAAYm9kB,kBAC9E,gBAAwC,oBAAhBrlc,YAA8B93I,EAAY83I,YAClE,gBAAwC,oBAAhB0xD,YAA8BxpM,EAAYwpM,YAClE,aAAcqmL,SACd,YAAgC,oBAAZ53S,QAA0Bj4E,EAAYi4E,QAC1D,YAAgC,oBAAZoy2B,QAA0Brq7B,EAAYqq7B,QAC1D,YAAgC,oBAAZ3sf,QAA0B19b,EAAY09b,SAG3D,GAAIzvN,EACH,IACC,KAAK96N,KACN,CAAE,MAAOjlB,GAER,IAAIo87B,EAAar8sB,EAASA,EAAS//O,IACnC477B,EAAW,qBAAuBQ,CACnC,CAGD,IAAIC,EAAS,SAASA,EAAO9t7B,GAC5B,IAAI5N,EACJ,GAAa,oBAAT4N,EACH5N,EAAQw67B,EAAsB,6BACxB,GAAa,wBAAT5s7B,EACV5N,EAAQw67B,EAAsB,wBACxB,GAAa,6BAAT5s7B,EACV5N,EAAQw67B,EAAsB,8BACxB,GAAa,qBAAT5s7B,EAA6B,CACvC,IAAIuB,EAAKus7B,EAAO,4BACZvs7B,IACHnP,EAAQmP,EAAGsL,UAEb,MAAO,GAAa,6BAAT7M,EAAqC,CAC/C,IAAI+t7B,EAAMD,EAAO,oBACbC,GAAOv8sB,IACVp/O,EAAQo/O,EAASu8sB,EAAIlh7B,WAEvB,CAIA,OAFAwg7B,EAAWrt7B,GAAQ5N,EAEZA,CACR,EAEI477B,EAAiB,CACpB,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/B7l4B,EAAO,EAAQ,OACfokE,EAAS,EAAQ,OACjB0h0B,EAAU9l4B,EAAKr7C,KAAKorG,SAASprG,KAAM/L,MAAM8L,UAAUpS,QACnDyz7B,EAAe/l4B,EAAKr7C,KAAKorG,SAAS3qG,MAAOxM,MAAM8L,UAAU2sB,QACzD205B,EAAWhm4B,EAAKr7C,KAAKorG,SAASprG,KAAME,OAAOH,UAAUrc,SACrD497B,EAAYjm4B,EAAKr7C,KAAKorG,SAASprG,KAAME,OAAOH,UAAUtF,OACtD2oU,EAAQ/nR,EAAKr7C,KAAKorG,SAASprG,KAAMyxB,OAAO1xB,UAAUilB,MAGlDowmB,EAAa,qGACbC,EAAe,WAiBfksT,EAAmB,SAA0Bru7B,EAAMkpoB,GACtD,IACIgtF,EADAo4N,EAAgBtu7B,EAOpB,GALIusH,EAAOyh0B,EAAgBM,KAE1BA,EAAgB,KADhBp4N,EAAQ83N,EAAeM,IACK,GAAK,KAG9B/h0B,EAAO8g0B,EAAYiB,GAAgB,CACtC,IAAIl87B,EAAQi77B,EAAWiB,GAIvB,GAHIl87B,IAAU+67B,IACb/67B,EAAQ077B,EAAOQ,SAEK,IAAVl87B,IAA0B82oB,EACpC,MAAM,IAAI57S,EAAW,aAAettV,EAAO,wDAG5C,MAAO,CACNk2tB,MAAOA,EACPl2tB,KAAMsu7B,EACNl87B,MAAOA,EAET,CAEA,MAAM,IAAIs67B,EAAa,aAAe1s7B,EAAO,mBAC9C,EAEAmuF,EAAOj9F,QAAU,SAAsB8O,EAAMkpoB,GAC5C,GAAoB,iBAATlpoB,GAAqC,IAAhBA,EAAKa,OACpC,MAAM,IAAIysV,EAAW,6CAEtB,GAAI1sV,UAAUC,OAAS,GAA6B,kBAAjBqooB,EAClC,MAAM,IAAI57S,EAAW,6CAGtB,GAAmC,OAA/Bpd,EAAM,cAAelwU,GACxB,MAAM,IAAI0s7B,EAAa,sFAExB,IAAI3p3B,EAtDc,SAAsBxyE,GACxC,IAAI0qE,EAAQmz3B,EAAU797B,EAAQ,EAAG,GAC7BowD,EAAOyt4B,EAAU797B,GAAS,GAC9B,GAAc,MAAV0qE,GAA0B,MAATta,EACpB,MAAM,IAAI+r4B,EAAa,kDACjB,GAAa,MAAT/r4B,GAA0B,MAAVsa,EAC1B,MAAM,IAAIyx3B,EAAa,kDAExB,IAAI9s7B,EAAS,GAIb,OAHAuu7B,EAAS597B,EAAQ2xoB,EAAY,SAAUzxoB,EAAOi/C,EAAQ8xP,EAAO4gW,GAC5DxioB,EAAOA,EAAOiB,QAAU2gS,EAAQ2spB,EAAS/rT,EAAWD,EAAc,MAAQzylB,GAAUj/C,CACrF,GACOmP,CACR,CAyCa29kB,CAAav9kB,GACrBuu7B,EAAoBxr3B,EAAMliE,OAAS,EAAIkiE,EAAM,GAAK,GAElDomkB,EAAYklT,EAAiB,IAAME,EAAoB,IAAKrlT,GAC5DslT,EAAoBrlT,EAAUnpoB,KAC9B5N,EAAQ+2oB,EAAU/2oB,MAClBq87B,GAAqB,EAErBv4N,EAAQ/sF,EAAU+sF,MAClBA,IACHq4N,EAAoBr4N,EAAM,GAC1Bg4N,EAAanr3B,EAAOkr3B,EAAQ,CAAC,EAAG,GAAI/3N,KAGrC,IAAK,IAAIpkuB,EAAI,EAAG08F,GAAQ,EAAM18F,EAAIixE,EAAMliE,OAAQ/O,GAAK,EAAG,CACvD,IAAIgjI,EAAO/xD,EAAMjxE,GACbmpE,EAAQmz3B,EAAUt5zB,EAAM,EAAG,GAC3Bn0E,EAAOyt4B,EAAUt5zB,GAAO,GAC5B,IAEa,MAAV75D,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAATta,GAAyB,MAATA,GAAyB,MAATA,IAElCsa,IAAUta,EAEb,MAAM,IAAI+r4B,EAAa,wDASxB,GAPa,gBAAT53zB,GAA2BtmC,IAC9Big2B,GAAqB,GAMlBli0B,EAAO8g0B,EAFXmB,EAAoB,KADpBD,GAAqB,IAAMz5zB,GACmB,KAG7C1iI,EAAQi77B,EAAWmB,QACb,GAAa,MAATp87B,EAAe,CACzB,KAAM0iI,KAAQ1iI,GAAQ,CACrB,IAAK82oB,EACJ,MAAM,IAAI57S,EAAW,sBAAwBttV,EAAO,+CAErD,MACD,CACA,GAAIi7P,GAAUnpQ,EAAI,GAAMixE,EAAMliE,OAAQ,CACrC,IAAIs3G,EAAO8iJ,EAAM7oQ,EAAO0iI,GAWvB1iI,GAVDo8F,IAAU2pB,IASG,QAASA,KAAU,kBAAmBA,EAAK73G,KAC/C63G,EAAK73G,IAELlO,EAAM0iI,EAEhB,MACCtmC,EAAQ+9B,EAAOn6H,EAAO0iI,GACtB1iI,EAAQA,EAAM0iI,GAGXtmC,IAAUig2B,IACbpB,EAAWmB,GAAqBp87B,EAElC,CACD,CACA,OAAOA,CACR,C,+BC9Ve,SAASguQ,EAAah2B,EAAUtpO,GAC7C,GAAIA,EAAKD,OAASupO,EAChB,MAAM,IAAIr9N,UAAUq9N,EAAW,aAAeA,EAAW,EAAI,IAAM,IAAM,uBAAyBtpO,EAAKD,OAAS,WAEpH,C,+CCHA,IAAI6rH,EAAQ,EAAQ,OAChBze,EAAkB,EAAQ,OAC1Bw5G,EAAa,EAAQ,OAErBh1G,EAAUxE,EAAgB,WAE9B9f,EAAOj9F,QAAU,SAAUugd,GAIzB,OAAOhqP,GAAc,KAAO/6F,EAAM,WAChC,IAAI5rG,EAAQ,GAKZ,OAJkBA,EAAM5T,YAAc,CAAC,GAC3BulG,GAAW,WACrB,MAAO,CAAEozF,IAAK,EAChB,EAC2C,IAApC/kL,EAAM2wb,GAAa/9W,SAASmyG,GACrC,EACF,C,oHCTI6ovB,EAA2B,aAAiB,SAAU727B,EAAMynH,GAC9D,IAAIC,EAAW1nH,EAAK0nH,SAChB//F,EAAO3nB,EAAK2nB,KACZi1O,EAAS58P,EAAK48P,OACdrlM,EAAWv3D,EAAKu3D,SAChBmnD,EAAY1+G,EAAK0+G,UACjB2/H,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCj6N,GAAO,OAA8BpkB,EAAM,CAAC,WAAY,OAAQ,SAAU,WAAY,YAAa,OAEnG8pC,GAAS,QAAmB49E,EAAU,aACtCov0B,EAAYht5B,EAEhB,OADIytB,IAAUu/3B,EAAYht5B,EAAS,aACf,gBAAoBy0M,GAAW,OAAS,CAAC,EAAGn6N,EAAM,CACpEqjG,IAAKA,EACL/I,UAAW,IAAWA,EAAWo40B,EAAWnv6B,GAAQmiB,EAAS,IAAMniB,EAAMi1O,GAAU9yN,EAAS,aAEhG,GACA+s5B,EAAY55vB,YAAc,cAC1B45vB,EAAY5ouB,aAxBO,CACjB12J,UAAU,EACVqlM,QAAQ,EACR1pP,KAAM,SAsBR,S,kBC9BA,IAAIwioB,EAAY,EAAQ,OACpBhkb,EAAc,EAAQ,OACtB/sM,EAAU,EAAQ,OAClB+mH,EAAW,EAAQ,MACnBypf,EAAU,EAAQ,OAClBiV,EAAe,EAAQ,OAMvB5poB,EAHc9B,OAAOsW,UAGQxU,eAqCjC81F,EAAOj9F,QA3BP,SAAuBkB,EAAOigd,GAC5B,IAAI/7M,EAAQ95O,EAAQpqB,GAChBy0zB,GAASvwjB,GAAS/sC,EAAYn3N,GAC9B2kqB,GAAUzga,IAAUuwjB,GAAStjrB,EAASnxI,GACtC00zB,GAAUxwjB,IAAUuwjB,IAAU9vJ,GAAU90B,EAAa7voB,GACrDo7oB,EAAcl3Y,GAASuwjB,GAAS9vJ,GAAU+vJ,EAC1ClnzB,EAAS4toB,EAAcD,EAAUn7oB,EAAMyO,OAAQmM,QAAU,GACzDnM,EAASjB,EAAOiB,OAEpB,IAAK,IAAI5J,KAAO7E,GACTigd,IAAah6c,EAAeyU,KAAK1a,EAAO6E,IACvCu2oB,IAEQ,UAAPv2oB,GAEC8/pB,IAAkB,UAAP9/pB,GAA0B,UAAPA,IAE9B6vzB,IAAkB,UAAP7vzB,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD+1nB,EAAQ/1nB,EAAK4J,KAElBjB,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,C,wBC9CA,sBACE,aAGE,EAAO,CAAC,cAAmB,0BAAP,EAOf,SAAU+iI,GAQf,SAASiszB,EAAmBtyzB,EAAS20mB,GAQnC,IAAIrnc,EACJ,IACEA,EAAYttK,EAAQ20mB,EACtB,CACA,MAAM97nB,GACJy0L,GAAY,CACd,CAKA,GAAGA,EAAW,CACZ,IAAI3yS,EAAM,KAAOhF,KAAK+F,MAAsB,IAAhB/F,KAAKm+F,UACjC,IACEksC,EAAQ20mB,GAAaphpB,QAAQ54F,EAAKA,GAClCqlI,EAAQ20mB,GAAarhpB,WAAW34F,EAAKA,EACvC,CACA,MAAMk+G,GACJy0L,GAAY,CACd,CACF,CAEA,OAAOA,CACT,CAOA,OAzCAjnK,EAAWA,GAAWA,EAAQx0C,OAAWw0C,EAAU/uI,OAAO+uI,SAyC3Cx0C,OAAO,YAAa,IASlCilC,SAAS,gBAAiBy7zB,EAAiB,iBAS3Cz7zB,SAAS,kBAAmBy7zB,EAAiB,mBAE9C,SAASA,EAAiB59M,GACtB,IAAI69M,EAAqBF,EAAmBh77B,OAAQq9uB,GAEpD,OAAO,WACL,IAAI89M,EAAmB,aAEvBti7B,KAAKui7B,aAAe,SAAUrt5B,GAC5B,GAAsB,iBAAXA,EACT,MAAM,IAAI50B,UAAU,iBAAmBkkuB,EAAc,6CAEvD89M,EAAmBpt5B,CACrB,EAEA,IAAIst5B,EAAatszB,EAAQgjI,OACrBuprB,EAAevszB,EAAQkjI,SAE3Bp5P,KAAK0i7B,cAAgB,SAAUz/7B,GAC7B,GAAiB,mBAANA,EACT,MAAM,IAAIqd,UAAU,iBAAmBkkuB,EAAc,8CAGvDg+M,EAAav/7B,CACf,EAEA+c,KAAK2i7B,gBAAkB,SAAUp/7B,GAC/B,GAAiB,mBAANA,EACT,MAAM,IAAI+c,UAAU,iBAAmBkkuB,EAAc,gDAGvDi+M,EAAel/7B,CACjB,EAEAyc,KAAKm9R,UAAY,WACf,QAASklpB,CACX,EAGAri7B,KAAKnM,IAAM,SAAUrJ,GACnB,OAAO637B,GAAsBI,EAAaJ,EAAmBp/1B,QAAQq/1B,EAAmB937B,GAC1F,EAGAwV,KAAKjM,IAAM,SAAUvJ,EAAK7E,GACxB,OAAO087B,GAAsBA,EAAmBj/1B,QAAQk/1B,EAAmB937B,EAAKg47B,EAAW787B,GAC7F,EAEAqa,KAAK4iC,OAAS,SAAUp4C,GACtB637B,GAAsBA,EAAmBl/1B,WAAWm/1B,EAAmB937B,EACzE,EAEAwV,KAAK4jG,KAAO,CACR,aACA,UACA,OACA,WACA,YAEA,SACIsiB,EACA2J,EACAk9I,EACAt/I,EACAjB,GAKF,IAqDIo2zB,EACAvyD,EAtDAwyD,EAAeP,EAAiBlu7B,OAIhCi7gB,EAAc8ya,EAAmBtyzB,EAAS20mB,GAC1Cs+M,EAAazza,IAAgBtiQ,EAAKlgQ,KAAK,8CAA+C,CAACu2E,QAAS8yC,EAAQtmH,KAAMqzE,QAASizC,EAAQtmH,KAAMuzE,WAAY+yC,EAAQtmH,OACzJmz6B,EAAW,CACPnxW,SAAU,SAAS19iB,GACf,IAAK,IAAIziB,KAAKyiB,EACVgiG,EAAQ9yB,UAAU2/0B,EAAStx6B,MAAQsx6B,EAAStx6B,GAAKykH,EAAQ5kC,KAAKp9D,EAAMziB,KAIxE,OADAsx6B,EAASC,QACFD,CACX,EACAE,OAAQ,SAAS/u5B,GACb,IAAK,IAAIziB,KAAKsx6B,EACV,MAAQtx6B,EAAE,WAAcsx6B,EAAStx6B,IAAMqx6B,EAAW3/1B,WAAWm/1B,EAAmB7w6B,GAGpF,OAAOsx6B,EAASnxW,SAAS19iB,EAC7B,EACA8u5B,MAAO,WACH,IAAK,IAAkCvx6B,EAA9BpsB,EAAI,EAAGmzB,EAAIsq6B,EAAW1u7B,OAAW/O,EAAImzB,EAAGnzB,KAE5CosB,EAAIqx6B,EAAWt47B,IAAInF,KAAOi97B,IAAqB7w6B,EAAE3W,MAAM,EAAG+n7B,KAAkBE,EAAStx6B,EAAE3W,MAAM+n7B,IAAiBJ,EAAaK,EAAW7/1B,QAAQxxE,IAEvJ,EACAu8G,OAAQ,WACJ,IAAIk1zB,EAIJ,GAFA7yD,EAAY,MAEPn6vB,EAAQ6xF,OAAOg7tB,EAAUH,GAAgB,CAS1C,IAAK,IAAInx6B,KARTyx6B,EAAehtzB,EAAQ5kC,KAAKsx1B,GAC5B1szB,EAAQlkI,QAAQ+w7B,EAAU,SAAS5g7B,EAAGsP,GAC9BykH,EAAQ9yB,UAAUjhG,IAAM,MAAQsP,EAAE,KAClCqx6B,EAAW1/1B,QAAQk/1B,EAAmB7w6B,EAAG+w6B,EAAWrg7B,WAC7C+g7B,EAAazx6B,GAE5B,GAEcyx6B,EACVJ,EAAW3/1B,WAAWm/1B,EAAmB7w6B,GAG7Cmx6B,EAAgB1szB,EAAQ5kC,KAAKyx1B,EACjC,CACJ,EACAI,WAAY,WACR,QAAS9za,CACb,GAmCR,OA9BA0za,EAASC,QAETJ,EAAgB1szB,EAAQ5kC,KAAKyx1B,GAE7B78zB,EAAWi9G,OAAO,WACdktpB,IAAcA,EAAY5iwB,EAASs1zB,EAAS/0zB,OAAQ,KAAK,GAC7D,GAGA6B,EAAQ33H,kBAAoB23H,EAAQ33H,iBAAiB,UAAW,SAASiU,GACrE,GAAKA,EAAM3hB,IAAX,CAKA,IAAIw+G,EAAMwjB,EAAU,GAEbxjB,EAAI4ozB,UAAa5ozB,EAAI4ozB,YAAe0wB,IAAqBn26B,EAAM3hB,IAAIsQ,MAAM,EAAG+n7B,KAC/E126B,EAAMsiH,SAAWs0zB,EAAS526B,EAAM3hB,IAAIsQ,MAAM+n7B,IAAiBJ,EAAat26B,EAAMsiH,iBAAmBs0zB,EAAS526B,EAAM3hB,IAAIsQ,MAAM+n7B,IAE1HD,EAAgB1szB,EAAQ5kC,KAAKyx1B,GAE7B78zB,EAAW8H,SAVf,CAYJ,GAEA6B,EAAQ33H,kBAAoB23H,EAAQ33H,iBAAiB,eAAgB,WACjE6q7B,EAAS/0zB,QACb,GAEO+0zB,CACT,EAER,CACF,CAEJ,GAxO+B,8BAO/B,CAXA,E,YCA+N577B,OAA3Ju6F,EAAOj9F,QAA8K,SAASO,GAAG,IAAI4b,EAAE,CAAC,EAAE,SAASC,EAAE8iE,GAAG,GAAG/iE,EAAE+iE,GAAG,OAAO/iE,EAAE+iE,GAAGl/E,QAAQ,IAAIY,EAAEub,EAAE+iE,GAAG,CAACt+E,EAAEs+E,EAAEnrD,GAAE,EAAG/zB,QAAQ,CAAC,GAAG,OAAOO,EAAE2+E,GAAGtjE,KAAKhb,EAAEZ,QAAQY,EAAEA,EAAEZ,QAAQoc,GAAGxb,EAAEmzB,GAAE,EAAGnzB,EAAEZ,OAAO,CAAC,OAAOoc,EAAE1d,EAAE6B,EAAE6b,EAAEjb,EAAEgb,EAAEC,EAAEtd,EAAE,SAASyB,EAAE4b,EAAE+iE,GAAG9iE,EAAE8iE,EAAE3+E,EAAE4b,IAAI9W,OAAOwY,eAAetd,EAAE4b,EAAE,CAAC8qB,YAAW,EAAG73B,IAAI8vE,GAAG,EAAE9iE,EAAEkZ,EAAE,SAAS/0B,GAAG,oBAAoBR,QAAQA,OAAOgwC,aAAa1qC,OAAOwY,eAAetd,EAAER,OAAOgwC,YAAY,CAAC7uC,MAAM,WAAWmE,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,GAAI,EAAEkb,EAAED,EAAE,SAAS5b,EAAE4b,GAAG,GAAG,EAAEA,IAAI5b,EAAE6b,EAAE7b,IAAI,EAAE4b,EAAE,OAAO5b,EAAE,GAAG,EAAE4b,GAAG,iBAAiB5b,GAAGA,GAAGA,EAAEu9F,WAAW,OAAOv9F,EAAE,IAAI2+E,EAAE75E,OAAO4W,OAAO,MAAM,GAAGG,EAAEkZ,EAAE4pD,GAAG75E,OAAOwY,eAAeqhE,EAAE,UAAU,CAACj4C,YAAW,EAAG/lC,MAAMX,IAAI,EAAE4b,GAAG,iBAAiB5b,EAAE,IAAI,IAAIK,KAAKL,EAAE6b,EAAEtd,EAAEogF,EAAEt+E,EAAE,SAASub,GAAG,OAAO5b,EAAE4b,EAAE,EAAE86C,KAAK,KAAKr2D,IAAI,OAAOs+E,CAAC,EAAE9iE,EAAEA,EAAE,SAAS7b,GAAG,IAAI4b,EAAE5b,GAAGA,EAAEu9F,WAAW,WAAW,OAAOv9F,EAAEw9F,OAAO,EAAE,WAAW,OAAOx9F,CAAC,EAAE,OAAO6b,EAAEtd,EAAEqd,EAAE,IAAIA,GAAGA,CAAC,EAAEC,EAAE8iE,EAAE,SAAS3+E,EAAE4b,GAAG,OAAO9W,OAAOsW,UAAUxU,eAAeyU,KAAKrb,EAAE4b,EAAE,EAAEC,EAAEV,EAAE,IAAIU,EAAEA,EAAE5d,EAAE,EAAE,CAAp5B,CAAs5B,CAAC,SAAS+B,EAAE4b,GAAG,IAAIC,EAAEA,EAAE,WAAW,OAAOb,IAAI,CAAtB,GAA0B,IAAIa,EAAEA,GAAG,IAAI4qG,SAAS,cAAb,EAA6B,CAAC,MAAMzmH,GAAG,iBAAiBmC,SAAS0Z,EAAE1Z,OAAO,CAACnC,EAAEP,QAAQoc,CAAC,EAAE,SAAS7b,EAAE4b,EAAEC,GAAGA,EAAE,GAAG7b,EAAEP,QAAQoc,EAAE,EAAE,EAAE,SAAS7b,EAAE4b,EAAEC,IAAG,SAAU8iE,EAAEt+E,GAAG,IAAI00B,EAAEngB,EAAE,SAAS3W,EAAE+B,GAAG,OAAO/B,EAAE,mBAAmBuB,QAAQ,iBAAiBA,OAAO0d,SAAS,SAASld,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmBR,QAAQQ,EAAEyb,cAAcjc,QAAQQ,IAAIR,OAAO4b,UAAU,gBAAgBpb,CAAC,GAAGA,EAAE,EAAE,SAAS2+E,EAAEt+E,GAAG,UAAUpC,EAAE2d,SAAI,IAAS5b,EAAEK,SAAI,KAAUuU,EAAE,mBAAmBmgB,EAAE10B,GAAG00B,EAAE1Z,KAAKO,EAAEC,EAAED,EAAE5b,GAAG+0B,KAAK/0B,EAAEP,QAAQmV,EAAE,CAAlH,CAAoH,EAAE,WAAY,aAAa,SAAS5U,EAAEA,GAAG,IAAI4b,EAAEZ,KAAKS,YAAY,OAAOT,KAAKnJ,KAAK,SAAUgK,GAAG,OAAOD,EAAEhK,QAAQ5R,KAAK6R,KAAK,WAAY,OAAOgK,CAAE,EAAG,EAAE,SAAUA,GAAG,OAAOD,EAAEhK,QAAQ5R,KAAK6R,KAAK,WAAY,OAAO+J,EAAEQ,OAAOP,EAAG,EAAG,EAAE,CAAC,SAASD,IAAI,CAAC,SAASC,EAAE7b,GAAG,KAAKgb,gBAAgBa,GAAG,MAAM,IAAIP,UAAU,wCAAwC,GAAG,mBAAmBtb,EAAE,MAAM,IAAIsb,UAAU,kBAAkBN,KAAK2kG,OAAO,EAAE3kG,KAAKoj7B,UAAS,EAAGpj7B,KAAKigS,YAAO,EAAOjgS,KAAKksqB,WAAW,GAAG3orB,EAAEyB,EAAEgb,KAAK,CAAC,SAAS+Z,EAAE/0B,EAAE4b,GAAG,KAAK,IAAI5b,EAAE2/G,QAAQ3/G,EAAEA,EAAEi7S,OAAO,IAAIj7S,EAAE2/G,QAAQ3/G,EAAEo+7B,UAAS,EAAGvi7B,EAAEwi7B,aAAa,WAAY,IAAIxi7B,EAAE,IAAI7b,EAAE2/G,OAAO/jG,EAAEutP,YAAYvtP,EAAEwtP,WAAW,GAAG,OAAOvtP,EAAE,CAAC,IAAI8iE,EAAE,IAAIA,EAAE9iE,EAAE7b,EAAEi7S,OAAO,CAAC,MAAMj7S,GAAG,YAAYY,EAAEgb,EAAEyhH,QAAQr9H,EAAE,CAAC4U,EAAEgH,EAAEyhH,QAAQ1+C,EAAE,MAAM,IAAI3+E,EAAE2/G,OAAO/qG,EAAEhU,GAAGgb,EAAEyhH,QAAQr9H,EAAEi7S,OAAQ,IAAIj7S,EAAEknrB,WAAWp4qB,KAAK8M,EAAE,CAAC,SAAShH,EAAE5U,EAAE4b,GAAG,IAAI,GAAGA,IAAI5b,EAAE,MAAM,IAAIsb,UAAU,6CAA6C,GAAGM,IAAI,UAAU3d,EAAE2d,IAAI,mBAAmBA,GAAG,CAAC,IAAI+iE,EAAE/iE,EAAE/J,KAAK,GAAG+J,aAAaC,EAAE,OAAO7b,EAAE2/G,OAAO,EAAE3/G,EAAEi7S,OAAOr/R,OAAO4X,EAAExzB,GAAG,GAAG,mBAAmB2+E,EAAE,YAAYpgF,EAAE,SAASyB,EAAE4b,GAAG,OAAO,WAAW5b,EAAE8b,MAAMF,EAAEzM,UAAU,CAAC,CAArD,CAAuDwvE,EAAE/iE,GAAG5b,EAAE,CAACA,EAAE2/G,OAAO,EAAE3/G,EAAEi7S,OAAOr/R,EAAE4X,EAAExzB,EAAE,CAAC,MAAM4b,GAAGhb,EAAEZ,EAAE4b,EAAE,CAAC,CAAC,SAAShb,EAAEZ,EAAE4b,GAAG5b,EAAE2/G,OAAO,EAAE3/G,EAAEi7S,OAAOr/R,EAAE4X,EAAExzB,EAAE,CAAC,SAASwzB,EAAExzB,GAAG,IAAIA,EAAE2/G,QAAQ,IAAI3/G,EAAEknrB,WAAW93qB,QAAQyM,EAAEwi7B,aAAa,WAAYr+7B,EAAEo+7B,UAAUvi7B,EAAEyi7B,sBAAsBt+7B,EAAEi7S,OAAQ,GAAG,IAAI,IAAIr/R,EAAE,EAAE+iE,EAAE3+E,EAAEknrB,WAAW93qB,OAAOuvE,EAAE/iE,EAAEA,IAAImZ,EAAE/0B,EAAEA,EAAEknrB,WAAWtrqB,IAAI5b,EAAEknrB,WAAW,IAAI,CAAC,SAAS3orB,EAAEyB,EAAE4b,GAAG,IAAIC,GAAE,EAAG,IAAI7b,EAAE,SAAUA,GAAG6b,IAAIA,GAAE,EAAGjH,EAAEgH,EAAE5b,GAAI,EAAE,SAAUA,GAAG6b,IAAIA,GAAE,EAAGjb,EAAEgb,EAAE5b,GAAI,EAAE,CAAC,MAAMA,GAAG,GAAG6b,EAAE,OAAOA,GAAE,EAAGjb,EAAEgb,EAAE5b,EAAE,CAAC,CAAC,IAAI0+F,EAAEj8E,WAAW5G,EAAET,UAAUytN,MAAM,SAAS7oO,GAAG,OAAOgb,KAAKnJ,KAAK,KAAK7R,EAAE,EAAE6b,EAAET,UAAUvJ,KAAK,SAAS7R,EAAE6b,GAAG,IAAI8iE,EAAE,IAAI3jE,KAAKS,YAAYG,GAAG,OAAOmZ,EAAE/Z,KAAK,IAAI,SAAShb,EAAE4b,EAAEC,GAAGb,KAAKmuP,YAAY,mBAAmBnpQ,EAAEA,EAAE,KAAKgb,KAAKouP,WAAW,mBAAmBxtP,EAAEA,EAAE,KAAKZ,KAAKqiH,QAAQxhH,CAAC,CAA3H,CAA6H7b,EAAE6b,EAAE8iE,IAAIA,CAAC,EAAE9iE,EAAET,UAAUwmF,QAAQ5hG,EAAE6b,EAAEilC,IAAI,SAAS9gD,GAAG,OAAO,IAAI6b,EAAE,SAAUD,EAAEC,GAAG,SAAS8iE,EAAE3+E,EAAE4U,GAAG,IAAI,GAAGA,IAAI,UAAU3W,EAAE2W,IAAI,mBAAmBA,GAAG,CAAC,IAAIhU,EAAEgU,EAAE/C,KAAK,GAAG,mBAAmBjR,EAAE,YAAYA,EAAEya,KAAKzG,EAAE,SAAUgH,GAAG+iE,EAAE3+E,EAAE4b,EAAG,EAAEC,EAAE,CAACxb,EAAEL,GAAG4U,EAAE,KAAKmgB,GAAGnZ,EAAEvb,EAAE,CAAC,MAAML,GAAG6b,EAAE7b,EAAE,CAAC,CAAC,IAAIA,QAAG,IAASA,EAAEoP,OAAO,MAAM,IAAIkM,UAAU,gCAAgC,IAAIjb,EAAEiP,MAAM8L,UAAUtF,MAAMuF,KAAKrb,GAAG,GAAG,IAAIK,EAAE+O,OAAO,OAAOwM,EAAE,IAAI,IAAI,IAAImZ,EAAE10B,EAAE+O,OAAOwF,EAAE,EAAEvU,EAAE+O,OAAOwF,EAAEA,IAAI+pE,EAAE/pE,EAAEvU,EAAEuU,GAAI,EAAE,EAAEiH,EAAEjK,QAAQ,SAAS5R,GAAG,OAAOA,GAAG,UAAU/B,EAAE+B,IAAIA,EAAEyb,cAAcI,EAAE7b,EAAE,IAAI6b,EAAE,SAAUD,GAAGA,EAAE5b,EAAG,EAAE,EAAE6b,EAAEO,OAAO,SAASpc,GAAG,OAAO,IAAI6b,EAAE,SAAUD,EAAEC,GAAGA,EAAE7b,EAAG,EAAE,EAAE6b,EAAE6G,KAAK,SAAS1iB,GAAG,OAAO,IAAI6b,EAAE,SAAUD,EAAEC,GAAG,IAAI,IAAI8iE,EAAE,EAAEt+E,EAAEL,EAAEoP,OAAO/O,EAAEs+E,EAAEA,IAAI3+E,EAAE2+E,GAAG9sE,KAAK+J,EAAEC,EAAG,EAAE,EAAEA,EAAEwi7B,aAAa,mBAAmB1/2B,GAAG,SAAS3+E,GAAG2+E,EAAE3+E,EAAE,GAAG,SAASA,GAAG0+F,EAAE1+F,EAAE,EAAE,EAAE6b,EAAEyi7B,sBAAsB,SAASt+7B,QAAG,IAAS4tC,SAASA,SAASA,QAAQ/lB,KAAK,wCAAwC7nB,EAAE,EAAE,IAAI0c,EAAE,WAAW,GAAG,oBAAoB4gF,KAAK,OAAOA,KAAK,GAAG,oBAAoBn7F,OAAO,OAAOA,OAAO,QAAG,IAAS9B,EAAE,OAAOA,EAAE,MAAMkiB,MAAM,iCAAiC,CAAnK,GAAuK,YAAY7F,EAAEA,EAAE/K,QAAQyJ,UAAUwmF,UAAUllF,EAAE/K,QAAQyJ,UAAUwmF,QAAQ5hG,GAAG0c,EAAE/K,QAAQkK,CAAE,EAAG,GAAER,KAAKL,KAAKa,EAAE,GAAG0u3B,aAAa1u3B,EAAE,GAAG,EAAE,SAAS7b,EAAE4b,EAAEC,IAAG,SAAU7b,GAAG,IAAI2+E,OAAE,IAAS3+E,GAAGA,GAAG,oBAAoBs9F,MAAMA,MAAMn7F,OAAO9B,EAAEomH,SAASrrG,UAAUU,MAAM,SAASiZ,EAAE/0B,EAAE4b,GAAGZ,KAAKgiZ,IAAIh9Z,EAAEgb,KAAKuj7B,SAAS3i7B,CAAC,CAACA,EAAE6G,WAAW,WAAW,OAAO,IAAIsS,EAAE10B,EAAEgb,KAAKoH,WAAWk8D,EAAExvE,WAAWwT,aAAa,EAAE/G,EAAEstF,YAAY,WAAW,OAAO,IAAIn0E,EAAE10B,EAAEgb,KAAK6tF,YAAYvqB,EAAExvE,WAAWi6F,cAAc,EAAExtF,EAAE+G,aAAa/G,EAAEwtF,cAAc,SAASppG,GAAGA,GAAGA,EAAEyoB,OAAO,EAAEsM,EAAE3Z,UAAUoj7B,MAAMzp6B,EAAE3Z,UAAUyyG,IAAI,WAAW,EAAE94F,EAAE3Z,UAAUqN,MAAM,WAAWzN,KAAKuj7B,SAASlj7B,KAAKsjE,EAAE3jE,KAAKgiZ,IAAI,EAAEphZ,EAAEg/uB,OAAO,SAAS56vB,EAAE4b,GAAG+G,aAAa3iB,EAAEy+7B,gBAAgBz+7B,EAAE0+7B,aAAa9i7B,CAAC,EAAEA,EAAE+i7B,SAAS,SAAS3+7B,GAAG2iB,aAAa3iB,EAAEy+7B,gBAAgBz+7B,EAAE0+7B,cAAc,CAAC,EAAE9i7B,EAAEgj7B,aAAahj7B,EAAEmjC,OAAO,SAAS/+C,GAAG2iB,aAAa3iB,EAAEy+7B,gBAAgB,IAAI7i7B,EAAE5b,EAAE0+7B,aAAa9i7B,GAAG,IAAI5b,EAAEy+7B,eAAeh86B,WAAW,WAAYziB,EAAE6+7B,YAAY7+7B,EAAE6+7B,YAAa,EAAEjj7B,GAAG,EAAEC,EAAE,GAAGD,EAAE2u3B,aAAa,oBAAoBjtyB,MAAMA,KAAKityB,mBAAc,IAASvq4B,GAAGA,EAAEuq4B,cAAcvv3B,MAAMA,KAAKuv3B,aAAa3u3B,EAAE4u3B,eAAe,oBAAoBltyB,MAAMA,KAAKktyB,qBAAgB,IAASxq4B,GAAGA,EAAEwq4B,gBAAgBxv3B,MAAMA,KAAKwv3B,cAAe,GAAEnv3B,KAAKL,KAAKa,EAAE,GAAG,EAAE,SAAS7b,EAAE4b,EAAEC,IAAG,SAAU7b,EAAE4b,IAAI,SAAS5b,GAAK,aAAa,IAAIA,EAAEuq4B,aAAa,CAAC,IAAI5rzB,EAAEt+E,EAAE00B,EAAEngB,EAAE3W,EAAE2C,EAAE,EAAE4yB,EAAE,CAAC,EAAEj1B,GAAE,EAAGmgG,EAAE1+F,EAAEyD,SAASiZ,EAAE5X,OAAO2rC,gBAAgB3rC,OAAO2rC,eAAezwC,GAAG0c,EAAEA,GAAGA,EAAE+F,WAAW/F,EAAE1c,EAAE,qBAAqB,CAAC,EAAEgC,SAASqZ,KAAKrb,EAAEy1I,SAAS92D,EAAE,SAAS3+E,GAAG4b,EAAEw6R,SAAS,WAAYj4S,EAAE6B,EAAG,EAAE,EAAG,WAAW,GAAGA,EAAEuhG,cAAcvhG,EAAE4q4B,cAAc,CAAC,IAAIhv3B,GAAE,EAAGC,EAAE7b,EAAEshG,UAAU,OAAOthG,EAAEshG,UAAU,WAAW1lF,GAAE,CAAE,EAAE5b,EAAEuhG,YAAY,GAAG,KAAKvhG,EAAEshG,UAAUzlF,EAAED,CAAC,CAAC,CAAhJ,IAA+gBhH,EAAE,gBAAgBpU,KAAKm+F,SAAS,IAAI1gG,EAAE,SAAS2d,GAAGA,EAAE2Q,SAASvsB,GAAG,iBAAiB4b,EAAE7K,MAAM,IAAI6K,EAAE7K,KAAKxN,QAAQqR,IAAIzW,GAAGyd,EAAE7K,KAAK+E,MAAMlB,EAAExF,QAAQ,EAAEpP,EAAEkT,iBAAiBlT,EAAEkT,iBAAiB,UAAUjV,GAAE,GAAI+B,EAAEugc,YAAY,YAAYtic,GAAG0gF,EAAE,SAAS/iE,GAAG5b,EAAEuhG,YAAY3sF,EAAEgH,EAAE,IAAI,GAA9nB5b,EAAEohG,iBAAiBrsE,EAAE,IAAIqsE,gBAAgBC,MAAMC,UAAU,SAASthG,GAAG7B,EAAE6B,EAAE+Q,KAAK,EAAE4tE,EAAE,SAAS3+E,GAAG+0B,EAAEysE,MAAMD,YAAYvhG,EAAE,GAAG0+F,GAAG,uBAAuBA,EAAE32E,cAAc,WAAW1nB,EAAEq+F,EAAEh7F,gBAAgBi7E,EAAE,SAAS3+E,GAAG,IAAI4b,EAAE8iF,EAAE32E,cAAc,UAAUnM,EAAEmke,mBAAmB,WAAW5hf,EAAE6B,GAAG4b,EAAEmke,mBAAmB,KAAK1/e,EAAE6qG,YAAYtvF,GAAGA,EAAE,IAAI,EAAEvb,EAAE8qG,YAAYvvF,EAAE,GAAG+iE,EAAE,SAAS3+E,GAAGyiB,WAAWtkB,EAAE,EAAE6B,EAAE,EAAyQ0c,EAAE6t3B,aAAa,SAASvq4B,GAAG,mBAAmBA,IAAIA,EAAE,IAAIymH,SAAS,GAAGzmH,IAAI,IAAI,IAAI4b,EAAE,IAAItM,MAAMH,UAAUC,OAAO,GAAGyM,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAID,EAAEC,GAAG1M,UAAU0M,EAAE,GAAG,IAAIxb,EAAE,CAAC6pB,SAASlqB,EAAEqP,KAAKuM,GAAG,OAAO4X,EAAE5yB,GAAGP,EAAEs+E,EAAE/9E,GAAGA,GAAG,EAAE8b,EAAE8t3B,eAAerv3B,CAAC,CAAC,SAASA,EAAEnb,UAAUwzB,EAAExzB,EAAE,CAAC,SAAS7B,EAAE6B,GAAG,GAAGzB,EAAEkkB,WAAWtkB,EAAE,EAAE6B,OAAO,CAAC,IAAI4b,EAAE4X,EAAExzB,GAAG,GAAG4b,EAAE,CAACrd,GAAE,EAAG,KAAK,SAASyB,GAAG,IAAI4b,EAAE5b,EAAEkqB,SAASrO,EAAE7b,EAAEqP,KAAK,OAAOwM,EAAEzM,QAAQ,KAAK,EAAEwM,IAAI,MAAM,KAAK,EAAEA,EAAEC,EAAE,IAAI,MAAM,KAAK,EAAED,EAAEC,EAAE,GAAGA,EAAE,IAAI,MAAM,KAAK,EAAED,EAAEC,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,MAAM,QAAQD,EAAEE,WAAM,EAAOD,GAAG,CAAhL,CAAkLD,EAAE,CAAC,QAAQT,EAAEnb,GAAGzB,GAAE,CAAE,CAAC,CAAC,CAAC,CAAC,CAA1hD,CAA4hD,oBAAoB++F,UAAK,IAASt9F,EAAEgb,KAAKhb,EAAEs9F,KAAM,GAAEjiF,KAAKL,KAAKa,EAAE,GAAGA,EAAE,GAAG,EAAE,SAAS7b,EAAE4b,GAAG,IAAIC,EAAE8iE,EAAEt+E,EAAEL,EAAEP,QAAQ,CAAC,EAAE,SAASs1B,IAAI,MAAM,IAAIxS,MAAM,kCAAkC,CAAC,SAAS3N,IAAI,MAAM,IAAI2N,MAAM,oCAAoC,CAAC,SAAStkB,EAAE+B,GAAG,GAAG6b,IAAI4G,WAAW,OAAOA,WAAWziB,EAAE,GAAG,IAAI6b,IAAIkZ,IAAIlZ,IAAI4G,WAAW,OAAO5G,EAAE4G,WAAWA,WAAWziB,EAAE,GAAG,IAAI,OAAO6b,EAAE7b,EAAE,EAAE,CAAC,MAAM4b,GAAG,IAAI,OAAOC,EAAER,KAAK,KAAKrb,EAAE,EAAE,CAAC,MAAM4b,GAAG,OAAOC,EAAER,KAAKL,KAAKhb,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,IAAI6b,EAAE,mBAAmB4G,WAAWA,WAAWsS,CAAC,CAAC,MAAM/0B,GAAG6b,EAAEkZ,CAAC,CAAC,IAAI4pD,EAAE,mBAAmBh8D,aAAaA,aAAa/N,CAAC,CAAC,MAAM5U,GAAG2+E,EAAE/pE,CAAC,CAAC,CAA3I,GAA+I,IAAIhU,EAAE4yB,EAAE,GAAGj1B,GAAE,EAAGmgG,GAAG,EAAE,SAAShiF,IAAIne,GAAGqC,IAAIrC,GAAE,EAAGqC,EAAEwO,OAAOokB,EAAE5yB,EAAEoI,OAAOwqB,GAAGkrE,GAAG,EAAElrE,EAAEpkB,QAAQ+L,IAAI,CAAC,SAASA,IAAI,IAAI5c,EAAE,CAAC,IAAIyB,EAAE/B,EAAEye,GAAGne,GAAE,EAAG,IAAI,IAAIqd,EAAE4X,EAAEpkB,OAAOwM,GAAG,CAAC,IAAIhb,EAAE4yB,EAAEA,EAAE,KAAKkrE,EAAE9iF,GAAGhb,GAAGA,EAAE89F,GAAGiiC,MAAMjiC,GAAG,EAAE9iF,EAAE4X,EAAEpkB,MAAM,CAACxO,EAAE,KAAKrC,GAAE,EAAG,SAASyB,GAAG,GAAG2+E,IAAIh8D,aAAa,OAAOA,aAAa3iB,GAAG,IAAI2+E,IAAI/pE,IAAI+pE,IAAIh8D,aAAa,OAAOg8D,EAAEh8D,aAAaA,aAAa3iB,GAAG,IAAI2+E,EAAE3+E,EAAE,CAAC,MAAM4b,GAAG,IAAI,OAAO+iE,EAAEtjE,KAAK,KAAKrb,EAAE,CAAC,MAAM4b,GAAG,OAAO+iE,EAAEtjE,KAAKL,KAAKhb,EAAE,CAAC,CAAC,CAAtM,CAAwMA,EAAE,CAAC,CAAC,SAAS7B,EAAE6B,EAAE4b,GAAGZ,KAAKm4nB,IAAInzoB,EAAEgb,KAAKqU,MAAMzT,CAAC,CAAC,SAASvd,IAAI,CAACgC,EAAE+1S,SAAS,SAASp2S,GAAG,IAAI4b,EAAE,IAAItM,MAAMH,UAAUC,OAAO,GAAG,GAAGD,UAAUC,OAAO,EAAE,IAAI,IAAIyM,EAAE,EAAEA,EAAE1M,UAAUC,OAAOyM,IAAID,EAAEC,EAAE,GAAG1M,UAAU0M,GAAG2X,EAAE1kB,KAAK,IAAI3Q,EAAE6B,EAAE4b,IAAI,IAAI4X,EAAEpkB,QAAQ7Q,GAAGN,EAAEkd,EAAE,EAAEhd,EAAEid,UAAUulH,IAAI,WAAW3lH,KAAKm4nB,IAAIr3nB,MAAM,KAAKd,KAAKqU,MAAM,EAAEhvB,EAAEixD,MAAM,UAAUjxD,EAAE+8Z,SAAQ,EAAG/8Z,EAAEskM,IAAI,CAAC,EAAEtkM,EAAEq16B,KAAK,GAAGr16B,EAAEw/E,QAAQ,GAAGx/E,EAAEq1I,SAAS,CAAC,EAAEr1I,EAAEslH,GAAGtnH,EAAEgC,EAAEkhE,YAAYljE,EAAEgC,EAAEolH,KAAKpnH,EAAEgC,EAAE4nI,IAAI5pI,EAAEgC,EAAEu/D,eAAevhE,EAAEgC,EAAEovI,mBAAmBpxI,EAAEgC,EAAEwlB,KAAKxnB,EAAEgC,EAAE48nB,gBAAgB5+nB,EAAEgC,EAAE68nB,oBAAoB7+nB,EAAEgC,EAAE2uC,UAAU,SAAShvC,GAAG,MAAM,EAAE,EAAEK,EAAEqwR,QAAQ,SAAS1wR,GAAG,MAAM,IAAIuiB,MAAM,mCAAmC,EAAEliB,EAAEs16B,IAAI,WAAW,MAAM,GAAG,EAAEt16B,EAAEu16B,MAAM,SAAS516B,GAAG,MAAM,IAAIuiB,MAAM,iCAAiC,EAAEliB,EAAEw16B,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,SAAS716B,EAAE4b,EAAEC,GAAG,aAAaA,EAAEkZ,EAAEnZ,GAAGC,EAAEtd,EAAEqd,EAAE,cAAc,WAAY,OAAOjd,CAAE,GAAkF,SAAS0B,EAAEL,EAAE4b,GAAG,GAAG,iBAAiB5b,IAAI4b,EAAE,OAAO5b,EAAE,IAAI6b,EAAED,EAAEuxG,OAAO,EAAEvxG,EAAEy2E,YAAY,MAAM,MAAM,yBAAyBn1F,KAAK8C,GAAGA,EAAE6b,EAAE,IAAI7b,CAAC,CAAC,SAAS+0B,EAAE/0B,GAAG,OAAO+0B,EAAE,mBAAmBv1B,QAAQ,iBAAiBA,OAAO0d,SAAS,SAASld,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmBR,QAAQQ,EAAEyb,cAAcjc,QAAQQ,IAAIR,OAAO4b,UAAU,gBAAgBpb,CAAC,GAAGA,EAAE,CAAC,SAAS4U,EAAE5U,EAAE4b,GAAG,IAAIC,EAAE/W,OAAOO,KAAKrF,GAAG,GAAG8E,OAAOo4F,sBAAsB,CAAC,IAAIve,EAAE75E,OAAOo4F,sBAAsBl9F,GAAG4b,IAAI+iE,EAAEA,EAAE1yE,OAAO,SAAU2P,GAAG,OAAO9W,OAAOyrC,yBAAyBvwC,EAAE4b,GAAG8qB,UAAW,IAAI7qB,EAAE/M,KAAKgN,MAAMD,EAAE8iE,EAAE,CAAC,OAAO9iE,CAAC,CAAC,SAAS5d,EAAE+B,GAAG,IAAI,IAAI4b,EAAE,EAAEA,EAAEzM,UAAUC,OAAOwM,IAAI,CAAC,IAAIC,EAAE,MAAM1M,UAAUyM,GAAGzM,UAAUyM,GAAG,CAAC,EAAEA,EAAE,EAAEhH,EAAE9P,OAAO+W,IAAG,GAAI7O,QAAQ,SAAU4O,GAAGhb,EAAEZ,EAAE4b,EAAEC,EAAED,GAAI,GAAG9W,OAAO6vH,0BAA0B7vH,OAAO0hC,iBAAiBxmC,EAAE8E,OAAO6vH,0BAA0B94G,IAAIjH,EAAE9P,OAAO+W,IAAI7O,QAAQ,SAAU4O,GAAG9W,OAAOwY,eAAetd,EAAE4b,EAAE9W,OAAOyrC,yBAAyB10B,EAAED,GAAI,EAAE,CAAC,OAAO5b,CAAC,CAAC,SAASY,EAAEZ,EAAE4b,EAAEC,GAAG,OAAOD,EAAE,SAAS5b,GAAG,IAAI4b,EAAE,SAAS5b,GAAK,GAAG,WAAW+0B,EAAE/0B,IAAI,OAAOA,EAAE,OAAOA,EAAE,IAAI6b,EAAE7b,EAAER,OAAOw1H,aAAa,QAAG,IAASn5G,EAAE,CAAC,IAAI8iE,EAAE9iE,EAAER,KAAKrb,EAAE4b,UAAc,GAAG,WAAWmZ,EAAE4pD,GAAG,OAAOA,EAAE,MAAM,IAAIrjE,UAAU,+CAA+C,CAAC,OAAoBC,OAAevb,EAAE,CAAjQ,CAAmQA,GAAY,MAAM,WAAW+0B,EAAEnZ,GAAGA,EAAEL,OAAOK,EAAE,CAAlU,CAAoUA,MAAM5b,EAAE8E,OAAOwY,eAAetd,EAAE4b,EAAE,CAACjb,MAAMkb,EAAE6qB,YAAW,EAAGuL,cAAa,EAAGxL,UAAS,IAAKzmC,EAAE4b,GAAGC,EAAE7b,CAAC,CAAC,IAAIwzB,EAAE,CAAC,EAAEj1B,EAAE,EAAE,oBAAoBqvC,UAAUzrC,OAAOyrC,QAAQ,CAAC3sC,IAAI,WAAW,EAAE4mB,KAAK,WAAW,EAAE5C,MAAM,WAAW,IAAI,IAAIy5E,EAAE,WAAW,IAAI,IAAI1+F,EAAE,EAAEA,EAAEmP,UAAUC,OAAOpP,IAAI,IAAI,IAAI4b,EAAE9W,OAAOO,KAAK8J,UAAUnP,IAAI6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI1M,UAAU,GAAGyM,EAAEC,IAAI1M,UAAUnP,GAAG4b,EAAEC,IAAI,OAAO1M,UAAU,EAAE,EAAEuN,EAAE,SAAS1c,GAAG,IAAI4b,EAAE,GAAG,OAAO5b,EAAEgN,QAAQ,SAAUhN,GAAG4b,EAAE9M,KAAK9O,EAAG,GAAG4b,CAAC,EAAwKzZ,OAAO287B,SAAStr6B,EAAEur6B,4BAA4Bnx5B,QAAQ/lB,KAAK,wLAAwL,IAAI1pB,EAAE,IAAI6P,IAAI3P,EAAE,IAAI2P,IAAIwlB,EAAEwr6B,UAAU,SAASh/7B,EAAE4b,GAAG,IAAIC,EAAEb,KAAK,GAAG3c,EAAEwQ,IAAI+M,GAAG,MAAM,IAAI2G,MAAM,gIAAgIlkB,EAAE0Q,IAAI6M,GAAE,GAAIA,EAAE1I,iBAAiB,QAAQ,SAAUlT,IAAI7B,EAAE0Q,IAAI+M,GAAGvL,SAASwL,EAAEoj7B,sBAAsBrj7B,EAAEzI,oBAAoB,QAAQnT,EAAG,GAAGgb,KAAKkk7B,iBAAiBl/7B,GAAG,IAAI2+E,EAAE3+E,EAAEm/7B,oBAAoBn/7B,EAAEo/7B,cAAcp/7B,EAAEq/7B,SAAS1g3B,IAAI3+E,EAAEs/7B,qBAAqB1x5B,QAAQ/lB,KAAK,+NAA+N7nB,EAAEs/7B,qBAAoB,GAAItk7B,KAAKpQ,QAAQ8zF,EAAE,CAAC,EAAElrE,EAAEwr6B,UAAUO,QAAQv/7B,GAAG,IAAIK,EAAE2a,KAAKpQ,QAAQi5E,KAAKz0E,OAAO,EAAE/O,EAAE,GAAG,MAAM2a,KAAKpQ,QAAQi5E,KAAKxjF,KAAK2a,KAAKpQ,QAAQi5E,MAAM,KAAK7oE,KAAKpQ,QAAQ407B,OAAOxk7B,KAAKpQ,QAAQi5E,KAAK7oE,KAAKpQ,QAAQ407B,OAAO5j7B,GAAGgyB,QAAQ3oB,MAAM,8MAA8MjK,KAAK1Z,QAAQsa,EAAEZ,KAAK1Z,QAAQojC,MAAMp8B,SAAS,SAAS,IAAIysB,EAAE/Z,KAAKA,KAAKyk7B,eAAe,SAAS7j7B,GAAG,GAAG,aAAaA,EAAE7K,MAAM6K,EAAE2Q,QAAQ3Q,EAAE2Q,OAAOg1E,YAAY,CAACv2E,KAAK,YAAYrqB,MAAMX,EAAEwzB,GAAGxzB,EAAE0/7B,YAAY,KAAK,kBAAkB9j7B,EAAE7K,KAAKia,MAAMpP,EAAE7K,KAAKgI,KAAKgc,EAAEhc,IAAI6C,EAAE2Q,OAAO,CAAC,IAAI1Q,EAAE7b,EAAE+Z,OAAOgb,EAAE4q6B,qBAAqB3/7B,EAAE+Z,QAAQ,GAAG6B,EAAE2Q,OAAOg1E,YAAY,CAACv2E,KAAK,iBAAiBrqB,MAAMkb,GAAG,IAAI,CAAC,EAAE1Z,OAAO+Q,iBAAiB,UAAU8H,KAAKyk7B,gBAAe,GAAIzk7B,KAAKpQ,QAAQg17B,YAAY5k7B,KAAKU,QAAQ,EAAE,IAAIyB,EAAE,CAACui7B,gBAAW,EAAOG,uBAAsB,EAAGC,aAAY,EAAGC,YAAW,GAAIvs6B,EAAEwr6B,UAAU5j7B,UAAU,CAACykE,QAAQ,SAASnkE,OAAO,WAAW,GAAGV,KAAKpQ,QAAQo17B,WAAW,CAAC,IAAIhg8B,EAAEgb,KAAK2k7B,qBAAqB3k7B,KAAKpQ,QAAQo17B,YAAYhg8B,EAAEsjG,mBAAmB3+E,KAAKC,UAAU5kB,IAAIgb,KAAKpQ,QAAQo17B,WAAWhg8B,CAAC,CAACgb,KAAKil7B,SAAS,EAAEA,QAAQ,WAAWjl7B,KAAKjC,KAAKxa,OAAE,IAASyc,KAAKkl7B,WAAWll7B,KAAKkl7B,SAAS,SAASlg8B,EAAE4b,GAAG,IAAIC,EAA51E,SAAS7b,EAAE4b,GAAG,IAAIC,EAAE,IAAIA,EAAE,IAAIm8W,YAAYh4X,EAAE,CAAC+6U,OAAOn/T,EAAEikb,SAAQ,EAAGpsX,YAAW,GAAI,CAAC,MAAMkL,IAAI9iE,EAAEpY,SAASokQ,YAAY,UAAUe,UAAU5oQ,GAAE,GAAG,GAAI6b,EAAEk/T,OAAOn/T,CAAC,CAAC,OAAOC,CAAC,CAA4rEV,CAAEnb,EAAE4b,GAAGZ,KAAK1Z,QAAQwmQ,cAAcjsP,EAAE,GAAG,IAAI7b,EAAEgb,KAAKpQ,QAAQogB,KAAKjsB,QAAQ,IAAI,IAAI7C,MAAM,KAAK8D,EAAEoP,OAAO,IAAIpP,EAAE,GAAG,SAASgb,KAAKml7B,cAAcng8B,EAAE,EAAEk/7B,iBAAiB,SAASl/7B,GAAG,IAAI,IAAI4b,EAAE9W,OAAOO,KAAKrF,GAAG6b,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE/iE,EAAEC,GAAG8iE,KAAK+f,EAAE,CAAC,EAAEvhF,EAAEqW,EAAEwr6B,UAAUO,UAAU3x5B,QAAQ/lB,KAAK,GAAG7e,OAAO21E,EAAE,uGAAuG,CAAC,IAAIt+E,EAAEL,EAAEm/7B,oBAAoBn/7B,EAAEo/7B,eAAep/7B,EAAEog8B,iBAAiBpg8B,EAAEq/7B,SAASh/7B,GAAGutC,QAAQ/lB,KAAK,4DAA4D,EAAEw46B,oBAAoB,WAAW,IAAIrg8B,EAAEyD,SAASskB,cAAc,OAAO/nB,EAAE+Y,GAAG,gCAAgC/Y,EAAEo5Q,YAAY,yDAAyDp+P,KAAK1Z,QAAQ6pG,YAAYnrG,EAAE,EAAEmg8B,cAAc,SAASng8B,GAAG,IAAI4b,EAAEC,EAAEb,KAAK,GAAGa,EAAEyk7B,aAAa,KAAKtl7B,KAAKul7B,iBAAiB,CAAC,GAAGvl7B,KAAKpQ,QAAQ417B,cAAc,QAAQxl7B,KAAKpQ,QAAQ417B,eAAexl7B,KAAKyl7B,mBAAmB,YAAYzl7B,KAAKql7B,sBAAsB,GAAGrg8B,EAAEsP,MAAM,eAAeuM,EAAEyk7B,aAAa,cAActl7B,KAAKpQ,QAAQ817B,eAAe,OAAO9k7B,EAAEZ,KAAKpQ,QAAQ407B,OAAOxk7B,KAAK2l7B,2BAA2Bx+7B,OAAO8hG,SAASroF,EAAE,CAAC,IAAI,IAAI+iE,GAAE,EAAGt+E,GAAE,EAAG00B,EAAE,EAAEA,EAAE/0B,EAAEoP,OAAO2lB,IAAI,CAAC,GAAG,gBAAgB/0B,EAAE+0B,GAAG3xB,cAAc,CAAC,GAAG4X,KAAKpQ,QAAQ417B,cAAc,QAAQxl7B,KAAKpQ,QAAQ417B,eAAexl7B,KAAKyl7B,mBAAmB,SAAS,GAAG9h3B,GAAE,EAAG9iE,EAAE+k7B,aAAa,CAAC,GAAG5l7B,KAAKpQ,QAAQ817B,eAAe,OAAO7k7B,EAAEyk7B,aAAa,cAAc1k7B,EAAEZ,KAAKpQ,QAAQ407B,OAAOxk7B,KAAK2l7B,2BAA2Bx+7B,OAAO8hG,SAASroF,GAAG,GAAGZ,KAAKpQ,QAAQi27B,iBAAiBhl7B,EAAEil7B,aAAapg2B,mBAAmB7kF,EAAEjR,QAAQo17B,cAAcnk7B,EAAEkl7B,YAAY,CAACll7B,EAAEyk7B,aAAa,cAAc,KAAK,CAACjg8B,GAAE,CAAE,CAAC,CAAC,GAAG,UAAUL,EAAE+0B,GAAG3xB,gBAAgBu7E,GAAE,EAAG9iE,EAAE+k7B,cAAc,CAAC,IAAIhs7B,EAAEiH,EAAEil7B,aAAapg2B,mBAAmB7kF,EAAEjR,QAAQo17B,aAAa,GAAGhl7B,KAAKpQ,QAAQi27B,iBAAiBjs7B,GAAGiH,EAAEkl7B,YAAY,CAACll7B,EAAEyk7B,aAAa,QAAQ,KAAK,CAACjg8B,GAAE,CAAE,CAAC,CAAC,GAAG,UAAUwb,EAAEyk7B,aAAazk7B,EAAEml7B,oBAAoB,GAAG,gBAAgBnl7B,EAAEyk7B,aAAazk7B,EAAEol7B,yBAAyB,CAAC,IAAIhj8B,EAAE,GAAGoC,EAAEpC,EAAE,iGAAiG0gF,IAAI1gF,EAAE,2CAA2CA,EAAE,CAAC,IAAI2C,EAAE6C,SAASskB,cAAc,OAAOnnB,EAAEmY,GAAG,gCAAgCnY,EAAEw4Q,YAAYn7Q,EAAE4d,EAAEva,QAAQ6pG,YAAYvqG,EAAE,CAAC,CAAC,EAAEsg8B,cAAc,SAASlh8B,GAAGgb,KAAKkl7B,SAAS,SAAS,IAAI,IAAItk7B,EAAE5b,EAAEsiH,cAAc,GAAG1mG,EAAE2lF,YAAY,CAACv2E,KAAK,gBAAgB,UAAK,IAAShQ,KAAKpQ,QAAQu27B,WAAW,CAAC,IAAItl7B,EAAE6kF,mBAAmB1lF,KAAKpQ,QAAQo17B,YAAYhl7B,KAAKpQ,QAAQo17B,aAAank7B,EAAE8I,KAAKyuB,MAAMv3B,IAAI,IAAI8iE,EAAE,CAACyi3B,QAAQxl7B,EAAEk2uB,KAAKp3jB,WAAW0mwB,QAAQC,eAAerm7B,KAAKpQ,QAAQu27B,WAAWG,WAAWtm7B,KAAKpQ,QAAQ027B,WAAWC,UAAU,OAAOvm7B,KAAK8iF,cAAc0j2B,aAAa3l7B,EAAE8iE,EAAE,CAAC,CAAC,MAAM3+E,GAAG4tC,QAAQ/lB,KAAK,uNAAuN,CAAC,EAAE846B,oBAAoB,WAAW,IAAI3g8B,EAAE4b,EAAEC,EAAE8iE,EAAE3jE,KAAKpQ,QAAQvK,EAAEs+E,EAAEwg3B,oBAAoBxg3B,EAAEyg3B,cAAcrq6B,EAAE,GAAG,GAAG4pD,EAAEqh3B,aAAajr6B,GAAG,MAAM/rB,OAAO21E,EAAEqh3B,kBAAa,IAASrh3B,EAAE8i3B,cAAc9i3B,EAAE8i3B,YAAY9i3B,EAAE+i3B,YAAY/i3B,EAAE6h3B,cAAc,QAAQ7h3B,EAAE6h3B,eAAexg8B,EAAE2+E,EAAE6h3B,cAAc7h3B,EAAEgj3B,eAAe,QAAQhj3B,EAAEgj3B,gBAAgB3h8B,EAAE2+E,EAAEgj3B,eAAehj3B,EAAE4i3B,YAAYvh8B,EAAE2+E,EAAE4i3B,WAAWvh8B,IAAI+0B,GAAG,cAAc/rB,OAAOhJ,IAAI2+E,EAAE6h3B,cAAc,QAAQ7h3B,EAAE6h3B,eAAe5k7B,EAAE+iE,EAAE6h3B,cAAc7h3B,EAAEgj3B,eAAe,QAAQhj3B,EAAEgj3B,gBAAgB/l7B,EAAE+iE,EAAEgj3B,eAAe/l7B,IAAImZ,GAAG,kBAAkB/rB,OAAO4S,IAAI+iE,EAAE8i3B,cAAc1s6B,GAAG,QAAQ/rB,OAAO21E,EAAE8i3B,YAAY,YAAYz47B,OAAO21E,EAAE8i3B,YAAY,kBAAkBz47B,OAAO21E,EAAE8i3B,cAAc9i3B,EAAEkhE,WAAW9qH,GAAG,aAAa/rB,OAAO21E,EAAEkhE,gBAAW,IAASlhE,EAAEij3B,YAAY7s6B,GAAG,cAAc/rB,OAAO21E,EAAEij3B,YAAYjj3B,EAAEkj3B,aAAa,CAAC,IAAIjt7B,EAAEoG,KAAK2k7B,qBAAqBhh3B,EAAEkj3B,cAAcjt7B,EAAE0uF,mBAAmB1uF,GAAGmgB,GAAG,MAAM/rB,OAAO4L,EAAE,CAAC,GAAG+pE,EAAEwi3B,aAAaps6B,GAAG,oBAAoB4pD,EAAEmj3B,oBAAoB/s6B,GAAG,QAAQ4pD,EAAEoj3B,iBAAiB,CAAC,IAAI9j8B,EAAEqlG,mBAAmB3kB,EAAEoj3B,iBAAiB7o7B,KAAK,MAAM6b,GAAG,qBAAqB/rB,OAAO/K,EAAE,CAAC,GAAG0gF,EAAEqj3B,UAAU,CAAC,IAAIph8B,EAAEoa,KAAK2k7B,qBAAqBhh3B,EAAEqj3B,WAAWph8B,EAAE0iG,mBAAmB1iG,GAAGm0B,GAAG,eAAe/rB,OAAOpI,EAAE,CAAC,GAAG+9E,EAAEsj3B,mBAAmBlt6B,GAAG,qBAAqB/rB,OAAO2b,KAAKC,UAAU+5D,EAAEsj3B,oBAAoBtj3B,EAAE2i3B,aAAavs6B,GAAG,QAAQ/rB,OAAO21E,EAAE2i3B,aAAa3i3B,EAAEx6E,IAAI,CAAC,IAAIqvB,EAAExY,KAAK2k7B,qBAAqBhh3B,EAAEx6E,KAAKqvB,EAAE8vE,mBAAmB9vE,GAAGuB,GAAG,QAAQ/rB,OAAOwqB,EAAE,CAA0oD,OAAxoDmrD,EAAEuj3B,cAAcnt6B,GAAG,kBAAkB4pD,EAAEwj3B,oBAAoBpt6B,GAAG,cAAc4pD,EAAEyj3B,eAAert6B,GAAG,oBAAoB4pD,EAAE0j3B,oBAAoB1j3B,EAAEoh3B,cAAchr6B,GAAG,eAAe4pD,EAAE2j3B,sBAAsBvt6B,GAAG,0BAA0B4pD,EAAE4j3B,6BAA6Bxt6B,GAAG,sCAAiC,IAAS4pD,EAAE6j3B,iBAAiBzt6B,GAAG,SAAS/rB,OAAO21E,EAAE6j3B,sBAAiB,IAAS7j3B,EAAE8j3B,sBAAiB,IAAS9j3B,EAAEmh3B,cAAc/q6B,GAAG,UAAU/rB,OAAO21E,EAAE8j3B,iBAAiB9j3B,EAAEmh3B,YAAY,EAAE,SAAI,IAASnh3B,EAAEtxB,SAASt4B,GAAG,WAAW/rB,OAAOs6F,mBAAmB3kB,EAAEtxB,eAAU,IAASsxB,EAAE+j3B,0BAAqB,IAAS/j3B,EAAEgk3B,mBAAmB5t6B,GAAG,eAAe/rB,OAAO21E,EAAE+j3B,qBAAqB/j3B,EAAEgk3B,iBAAiB,EAAE,SAAI,IAAShk3B,EAAE0g3B,UAAUtq6B,GAAG,WAAW/rB,OAAO21E,EAAE0g3B,QAAQ,EAAE,SAAI,IAAS1g3B,EAAEyh3B,kBAAkBrr6B,GAAG,oBAAoB/rB,OAAO21E,EAAEyh3B,gBAAgB,EAAE,SAAI,IAASzh3B,EAAEik3B,4BAA4B7t6B,GAAG,8BAA8B/rB,OAAO21E,EAAEik3B,0BAA0B,EAAE,SAAI,IAASjk3B,EAAEkk3B,oBAAoB9t6B,GAAG,sBAAsB/rB,OAAO21E,EAAEkk3B,kBAAkB,EAAE,SAAI,IAASlk3B,EAAEmk3B,qBAAqB/t6B,GAAG,YAAY/rB,OAAO21E,EAAEmk3B,mBAAmB,OAAO,eAAU,IAASnk3B,EAAEok3B,yBAAyBhu6B,GAAG,gBAAgB/rB,OAAO21E,EAAEok3B,uBAAuB,EAAE,SAAI,IAASpk3B,EAAEqk3B,mBAAmBju6B,GAAG,qBAAqB/rB,OAAO21E,EAAEqk3B,iBAAiB,EAAE,SAAI,IAASrk3B,EAAEsk3B,qBAAqBlu6B,GAAG,uBAAuB/rB,OAAO21E,EAAEsk3B,mBAAmB,EAAE,SAAI,IAAStk3B,EAAEuk3B,4BAA4Bnu6B,GAAG,8BAA8B/rB,OAAO21E,EAAEuk3B,0BAA0B,EAAE,SAAI,IAASvk3B,EAAEki3B,kBAAmBhl7B,EAAE,iBAAiB8iE,EAAEki3B,gBAAgB,CAACp41B,IAAI9pB,EAAEki3B,iBAAiBli3B,EAAEki3B,gBAAgB9r6B,GAAG,iBAAiB/rB,OAAOs6F,mBAAmB3+E,KAAKC,UAAU/I,OAAa8iE,EAAEwk3B,iBAAiBxk3B,EAAEkh3B,yBAAyB9q6B,GAAG,sBAAsB4pD,EAAEyk3B,yBAAyBru6B,GAAG,6BAA6B4pD,EAAE0k3B,gBAAgBtu6B,GAAG,oBAAoB4pD,EAAE2k3B,oBAAoBvu6B,GAAG,wBAAwB4pD,EAAE4k3B,mBAAmBxu6B,GAAG,uBAAuB4pD,EAAE2g3B,sBAAsBvq6B,GAAG,0BAA0B4pD,EAAE6k3B,YAAYzu6B,GAAG,qBAAgB,IAAS4pD,EAAE8k3B,yBAAyB1u6B,GAAG,oBAAoB/rB,OAAO21E,EAAE8k3B,uBAAuB,OAAO,eAAU,IAASpj8B,GAAGA,IAAI00B,GAAG,uBAAuB/rB,OAAOs6F,mBAAmBjjG,KAAKs+E,EAAE+k3B,uBAAuB3u6B,GAAG,gCAA2B,IAAS4pD,EAAEgl3B,mBAAmB5u6B,GAAG,qBAAqB/rB,OAAO21E,EAAEgl3B,iBAAiB,OAAO,eAAU,IAAShl3B,EAAEil3B,iBAAiB7u6B,GAAG,mBAAmB/rB,OAAO21E,EAAEil3B,eAAe,EAAE,IAAIjl3B,EAAEkl3B,cAAc9u6B,GAAG,kBAAkB4pD,EAAEml3B,6BAA6B/u6B,GAAG,iCAAiC4pD,EAAEol3B,8BAA8Bhv6B,GAAG,kCAAkC4pD,EAAEql3B,mBAAmBjv6B,GAAG,4BAAuB,IAAS4pD,EAAEsl3B,6BAA6Blv6B,GAAG,+BAA+B/rB,OAAO21E,EAAEsl3B,2BAA2B,EAAE,SAAI,IAAStl3B,EAAEul3B,qCAAqCnv6B,GAAG,uCAAuC/rB,OAAO21E,EAAEul3B,mCAAmC,EAAE,IAAIvl3B,EAAEwl3B,+BAA+Bpv6B,GAAG,mCAAmC4pD,EAAEyl3B,uBAAuBrv6B,GAAG,2BAA2B4pD,EAAE0l3B,wBAAwBtv6B,GAAG,0BAA0B/rB,OAAO21E,EAAE0l3B,wBAAwBtv6B,GAAG,OAAO/rB,OAAOgS,KAAKjC,KAAKgc,GAAG,aAAa/rB,OAAOs6F,mBAAmBnhG,OAAO8hG,SAASwhC,YAAYr2H,OAAO,GAAG,MAAM2lB,EAAE,KAAKA,EAAE,IAAI/rB,OAAO+rB,EAAEjf,MAAM,KAAKif,EAAG,uBAAuB/rB,OAAOgS,KAAK6kE,QAAQ,EAAEyk3B,gBAAgB,SAAStk8B,GAAG7B,EAAE4Q,IAAIiM,KAAK1Z,QAAQ,CAAC6gH,OAAOniH,EAAEwzB,EAAExY,KAAKpQ,QAAQ4oB,GAAGxY,KAAKpQ,QAAQ807B,WAAW+D,uBAAuBzo7B,KAAKpQ,QAAQ647B,wBAAwB,EAAEzC,aAAa,WAAW,IAAIhh8B,EAAEgb,KAAKY,EAAEZ,KAAKpQ,QAAQ407B,OAAOxk7B,KAAK2l7B,sBAAsB9k7B,EAAEpY,SAASskB,cAAc,UAAU/M,KAAKsp7B,gBAAgBzo7B,GAAGA,EAAE9C,GAAG,aAAa/P,OAAOgS,KAAKjC,IAAI8C,EAAEwmG,IAAIzmG,EAAEC,EAAEy1C,MAAM,YAAYz1C,EAAE0o7B,YAAY,EAAE1o7B,EAAEna,MAAM,OAAOma,EAAEja,OAAO,OAAOia,EAAE5C,aAAa,mBAAkB,GAAI4C,EAAE5C,aAAa,yBAAwB,GAAI4C,EAAE5C,aAAa,sBAAqB,GAAI+B,KAAKmnG,OAAOtmG,EAAEb,KAAKpQ,QAAQo5B,iBAAiBnoB,EAAE5C,aAAa,eAAe+B,KAAKpQ,QAAQo5B,iBAAiBhpB,KAAKpQ,QAAQ457B,WAAW3o7B,EAAE5C,aAAa,iBAAiBqqF,mBAAmBtoF,KAAKpQ,QAAQ457B,YAAYxp7B,KAAK1Z,QAAQ6pG,YAAYtvF,GAAG1Z,OAAO+Q,iBAAiB,UAAU,SAAU0I,EAAEC,GAAG,GAAG,iBAAiBA,EAAE9K,KAAKia,MAAMnP,EAAE9K,KAAKgI,KAAK/Y,EAAE+Y,GAAG,IAAI/Y,EAAEqQ,SAASrQ,EAAEmiH,OAAOG,cAAcjyG,QAAQ,CAAC,MAAMrQ,GAAG,CAAC,QAAQmC,OAAOgR,oBAAoB,UAAUyI,GAAG5b,EAAEkh8B,cAAclh8B,EAAEmiH,OAAO,CAAE,EAAE,EAAE8+0B,mBAAmB,WAAW,IAAIjh8B,EAAEgb,KAAKY,EAAEZ,KAAKpQ,QAAQ407B,OAAOxk7B,KAAK2l7B,sBAAsB9k7B,EAAEpY,SAASskB,cAAc,UAAU/M,KAAKsp7B,gBAAgBzo7B,GAAGA,EAAE9C,GAAG,aAAa/P,OAAOgS,KAAKjC,IAAI8C,EAAEwmG,IAAIzmG,EAAEC,EAAE4o7B,YAAY,EAAEzp7B,KAAKpQ,QAAQ457B,WAAW3o7B,EAAE5C,aAAa,iBAAiBqqF,mBAAmBtoF,KAAKpQ,QAAQ457B,YAAY3o7B,EAAE6oB,MAAMhjC,MAAM,OAAOma,EAAE6oB,MAAM9iC,OAAO,OAAOoZ,KAAKmnG,OAAOtmG,EAAEb,KAAK1Z,QAAQ6pG,YAAYtvF,GAAG1Z,OAAO+Q,iBAAiB,UAAU,SAAU0I,EAAEC,GAAG,GAAG,iBAAiBA,EAAE9K,KAAKia,MAAMnP,EAAE9K,KAAKgI,KAAK/Y,EAAE+Y,GAAG,IAAI/Y,EAAEqQ,SAASrQ,EAAEmiH,OAAOG,cAAcjyG,QAAQ,CAAC,MAAMrQ,GAAG,CAAC,QAAQmC,OAAOgR,oBAAoB,UAAUyI,GAAG5b,EAAEkh8B,cAAclh8B,EAAEmiH,OAAO,CAAE,EAAE,EAAEpD,QAAQ,WAAW5gH,EAAEszC,OAAOz2B,KAAK1Z,SAASjD,EAAEozC,OAAOz2B,KAAK1Z,SAAS0Z,KAAK3K,SAASq07B,gBAAgBvi8B,OAAOgR,oBAAoB,UAAU6H,KAAKyk7B,gBAAgBzk7B,KAAKmnG,OAAOhvG,oBAAoB,OAAO6H,KAAK2p7B,cAAc3p7B,KAAKmnG,OAAO,KAAKv0E,QAAQmoC,OAAO,EAAE+nB,YAAY,WAAW,OAAO9iF,KAAK3K,QAAQ,EAAEu07B,oBAAoB,SAAS5k8B,GAAGgb,KAAK6p7B,iBAAiB7k8B,CAAC,EAAEi/7B,oBAAoB,WAAW,OAAOjk7B,KAAK6p7B,gBAAgB,EAAElF,qBAAqB,SAAS3/7B,GAAG,IAAI4b,EAAEzZ,OAAO8hG,SAASwhC,SAAS,OAAOn2H,MAAMyb,QAAQ/qB,GAAGA,EAAE+N,IAAI,SAAU/N,GAAG,OAAOK,EAAEL,EAAE4b,EAAG,GAAGvb,EAAEL,EAAE4b,EAAE,EAAEgl7B,WAAW,WAAW,IAAI,IAAI5g8B,EAAEyD,SAASskB,cAAc,UAAU,OAAO/nB,GAAGA,EAAEsoC,WAAW,KAAK,CAAC,MAAMtoC,GAAG,OAAM,CAAE,CAAC,EAAEyg8B,iBAAiB,WAAW,SAASt+7B,OAAO2i8B,cAAc3i8B,OAAO2i8B,YAAYnkuB,SAAS,EAAEoguB,UAAU,WAAW,MAAM,mBAAmB5+7B,QAAQ,oBAAoB,IAAI8iS,cAAc,EAAEo4H,KAAK,WAAW,IAAIr9Z,EAAEsJ,UAAUC,UAAUnG,cAAcwY,EAAE,kBAAkBykB,KAAKrgC,IAAI,gCAAgCqgC,KAAKrgC,GAAG,OAAO4b,EAAEulB,SAASvlB,EAAE,GAAG,IAAIA,CAAC,EAAE2k7B,eAAe,WAAW,OAAOvl7B,KAAKqiZ,SAAS,IAAIriZ,KAAKq5jB,kBAAkB/qkB,UAAUC,UAAUvK,MAAM,UAAUsK,UAAUC,UAAUvK,MAAM,aAAasK,UAAUC,UAAUvK,MAAM,WAAWsK,UAAUC,UAAUvK,MAAM,YAAYsK,UAAUC,UAAUvK,MAAM,UAAUsK,UAAUC,UAAUvK,MAAM,UAAUsK,UAAUC,UAAUvK,MAAM,WAAWsK,UAAUC,UAAUvK,MAAM,cAAcsK,UAAUC,UAAUvK,MAAM,SAAS,EAAEq1kB,eAAe,WAAW,IAAIr0kB,EAAEyD,SAASskB,cAAc,OAAO/nB,EAAE0kC,MAAMsgG,QAAQ,oFAAoFvhI,SAASiF,KAAKyiG,YAAYnrG,GAAG,IAAI4b,EAAE5b,EAAE2B,YAAY3B,EAAEkH,YAAY,OAAOzD,SAASiF,KAAKwiG,YAAYlrG,GAAG4b,CAAC,EAAEkl7B,aAAa,SAAS9g8B,GAAG,IAAI4b,EAAEzZ,OAAO8hG,SAASpoF,EAAEpY,SAASskB,cAAc,KAAKlM,EAAEotF,KAAKjpG,EAAE,KAAK6b,EAAE5Y,OAAO4Y,EAAEotF,KAAKptF,EAAEotF,MAAM,IAAItqB,EAAEx8E,OAAO8hG,SAAS2lM,KAAKvpS,EAAEwb,EAAE+tR,KAAK,MAAM,UAAU/tR,EAAE4I,UAAUpkB,EAAEA,GAAG,KAAKs+E,EAAEA,GAAG,MAAM,WAAW9iE,EAAE4I,WAAWpkB,EAAEA,GAAG,MAAMs+E,EAAEA,GAAG,OAAO9iE,EAAE6tR,WAAW9tR,EAAE8tR,UAAU7tR,EAAE4I,WAAW7I,EAAE6I,UAAUpkB,IAAIs+E,CAAC,GAAGnrD,EAAEwr6B,UAAUO,QAAQ,CAACS,gBAAW,EAAOyC,qBAAgB,EAAO3C,iBAAY,EAAO0C,oBAAe,EAAOgC,eAAU,EAAO5E,YAAW,EAAGsE,oCAAmC,EAAGf,iBAAgB,EAAG4B,4BAAuB,EAAOlF,uBAAsB,EAAGuD,wBAAuB,EAAGp/5B,qBAAgB,EAAOy95B,iBAAY,EAAOt97B,SAAI,EAAO4V,YAAO,EAAOszC,YAAO,EAAOi04B,gBAAW,EAAOd,kBAAa,EAAOmB,mBAAc,EAAOJ,eAAU,EAAOO,mBAAkB,EAAGjizB,cAAS,EAAOqizB,aAAY,EAAGH,sBAAiB,EAAOuB,mBAAkB,EAAGnB,mBAAkB,EAAGE,oBAAmB,EAAGtC,YAAW,EAAGK,iBAAgB,EAAGwC,2BAA0B,EAAGC,mBAAkB,EAAG1B,gBAAW,EAAOU,kBAAa,EAAOS,qBAAoB,EAAGC,4BAA2B,EAAG/C,OAAO,kBAAkBhs6B,OAAE,EAAOks6B,gBAAW,EAAOgB,gBAAe,EAAG782B,KAAK,GAAG692B,gBAAW,EAAOvC,wBAAmB,EAAOuE,sBAAqB,EAAGC,kBAAiB,EAAGtE,SAAQ,EAAG2F,kBAAiB,EAAGhD,eAAU,EAAOC,sBAAiB,EAAOS,qBAAoB,EAAGC,kBAAiB,EAAGI,wBAAuB,EAAGD,wBAAmB,EAAOV,cAAa,EAAGR,eAAU,EAAO526B,KAAK,QAAQq46B,eAAc,EAAGI,4BAAuB,EAAO5C,qBAAgB,EAAOr7iB,QAAG,EAAO85iB,qBAAoB,EAAGkE,WAAU,EAAGI,oBAAe,EAAOC,aAAY,EAAGC,4BAA2B,EAAGE,kBAAiB,EAAGC,4BAA2B,EAAGjB,kBAAiB,EAAGC,oBAAmB,EAAGC,2BAA0B,EAAG+B,2BAAsB,EAAOd,kCAA6B,EAAOC,sBAAqB,EAAGC,uBAAsB,EAAGN,6BAA4B,EAAGR,kBAAiB,GAAI,IAAI1u7B,EAAE,SAAS7U,EAAE4b,GAAG,OAAO,IAAIjK,QAAQ,SAAUkK,EAAE8iE,GAAG3+E,EAAEwzB,EAAExzB,EAAEwzB,GAAGxzB,EAAE0/7B,WAAW1/7B,EAAEmj8B,gBAAgBnj8B,EAAEmj8B,iBAAiBnj8B,EAAE6/7B,sBAAsB7/7B,EAAEyi8B,gBAAgBzi8B,EAAEyi8B,iBAAiBzi8B,EAAE8/7B,YAAY9/7B,EAAEqi8B,mBAAmBri8B,EAAEqi8B,oBAAoBri8B,EAAE+/7B,WAAW//7B,EAAE0i8B,oBAAoB1i8B,EAAE0i8B,qBAAqB1i8B,EAAE2i8B,iBAAiB/m7B,EAAE1I,iBAAiB,QAAQ,SAAU6hB,IAAInZ,EAAEzI,oBAAoB,QAAQ4hB,GAAG,IAAI,IAAIngB,EAAEgH,EAAErD,cAAc,UAAU+pG,cAAc,QAAG,IAAS1tG,EAAEsw7B,MAAM,MAAM,IAAI3i7B,MAAM,iRAAiR,IAAIiR,EAAEnzB,EAAEy9F,cAAcv/F,EAAE,CAAC4m8B,aAAavw7B,EAAEmqG,QAAQ1+G,EAAE0+G,QAAQroD,KAAKr2D,IAAIqc,EAAEgiF,EAAE,CAAC,EAAElrE,EAAEv1B,EAAE2C,EAAE,CAAC,EAAE4yB,EAAE4x6B,iBAAiBnn8B,EAAEA,EAAE,CAAC,EAAEu1B,EAAEA,EAAE4x6B,mBAAmB7m8B,IAAIA,IAAI8B,EAAEuk8B,oBAAoBlo7B,GAAG,IAAIvB,EAAExJ,QAAQC,UAAU,GAAG5R,EAAEil8B,wBAAwB9p7B,EAAEuB,EAAE8W,EAAE6x6B,oBAAoBC,eAAeC,yBAAyBvl8B,EAAEil8B,wBAAwBjl8B,EAAE+k8B,uBAAuB,CAAC,IAAI5m8B,EAAE6B,EAAE+k8B,uBAAuBro7B,EAAE8W,EAAE4x6B,kBAAkBI,gBAAgBrn8B,EAAEsn8B,SAAStn8B,EAAEun8B,aAAa,CAACvq7B,EAAEtJ,KAAK,WAAYgK,EAAEa,EAAG,EAAE,CAAC,MAAMd,GAAG,GAAG,WAAW5b,GAAG,KAAKA,EAAE+Z,OAAO,OAAO8B,IAAI8iE,EAAE,0NAA0N,CAAE,GAAG,IAAIt+E,EAAE,IAAImzB,EAAEwr6B,UAAUh/7B,EAAE4b,EAAG,EAAE,EAAEgZ,EAAE,SAAS50B,GAAG,IAAI,IAAI4b,EAAEc,EAAEve,GAAG0d,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAI8iE,EAAE/iE,EAAEC,GAAG,GAAG8iE,EAAEwjC,SAASniH,EAAE,OAAO2+E,CAAC,CAAC,OAAO,IAAI,EAAE9pE,EAAE2e,EAAE,SAASxzB,GAAG,IAAI4b,EAAEgZ,EAAE50B,GAAG,OAAO4b,GAAGA,EAAE4X,CAAC,EAAE3e,EAAE4u7B,uBAAuB,SAASzj8B,GAAG,IAAI4b,EAAEgZ,EAAE50B,GAAG,OAAO4b,GAAGA,EAAE6n7B,sBAAsB,EAAE5u7B,EAAE8w7B,YAAY,CAAC7tV,IAAI,MAAM8tV,OAAO,SAASC,cAAc,eAAeC,IAAI,MAAMC,aAAa,eAAelx7B,EAAEmx7B,aAAx5kB,CAACC,IAAI,MAAMC,KAAK,MAAMC,UAAU,WAAWC,cAAc,gBAA82kB,IAAIzn8B,EAAE,SAASqB,GAAG,IAAI4b,EAAEc,EAAEve,GAAG,IAAIyd,EAAExM,SAASwM,EAAE3P,OAAO,SAAUjM,GAAG,OAAOA,EAAEqQ,QAAS,GAAGjB,OAAO,OAAOw+B,QAAQ/lB,KAAK,0EAA0E,KAAK,GAAGjM,EAAExM,OAAO,IAAIpP,EAAE,MAAM,IAAIuiB,MAAM,+IAA+I,OAAOviB,GAAG7B,EAAE0Q,IAAI7O,IAAI,CAAC,GAAGqQ,UAAUuL,EAAE,IAAI,CAAC,GAAGvL,QAAQ,EAAEwE,EAAEipF,YAAYn/F,EAAEwD,OAAO687B,UAAUnq7B,EAAE+G,EAAE4hF,QAAQ3oF,CAAC,G,+BCCt43B,IAAIojoB,EAAqB,EAAQ,OAC7B72hB,EAAc,EAAQ,OAK1B1kB,EAAOj9F,QAAUqF,OAAOO,MAAQ,SAAcywB,GAC5C,OAAOminB,EAAmBninB,EAAGsrF,EAC/B,C,+BCRA,SAASo4H,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,OACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,wBCThB,IAAW59N,IAAoS5b,GAAG,MAAM,IAAI4b,EAAE,CAAC,IAAI,CAAC5b,EAAE4b,EAAEmZ,KAAK,aAAa,IAAIlZ,EAAEkZ,EAAE,KAAK,SAASngB,IAAI,CAAC,SAAS+pE,IAAI,CAACA,EAAE4wC,kBAAkB36G,EAAE5U,EAAEP,QAAQ,WAAW,SAASO,EAAEA,EAAE4b,EAAEmZ,EAAEngB,EAAE+pE,EAAEt+E,GAAG,GAAGA,IAAIwb,EAAE,CAAC,IAAI2X,EAAE,IAAIjR,MAAM,mLAAmL,MAAMiR,EAAEjlB,KAAK,sBAAsBilB,CAAC,CAAC,CAAC,SAAS5X,IAAI,OAAO5b,CAAC,CAACA,EAAE6vH,WAAW7vH,EAAE,IAAI+0B,EAAE,CAAC1F,MAAMrvB,EAAE+vH,OAAO/vH,EAAEgwH,KAAKhwH,EAAE0vG,KAAK1vG,EAAEi+C,OAAOj+C,EAAEsmD,OAAOtmD,EAAElB,OAAOkB,EAAEiwH,OAAOjwH,EAAEkwH,IAAIlwH,EAAEmwH,QAAQv0G,EAAEta,QAAQtB,EAAE4pD,YAAY5pD,EAAEowH,WAAWx0G,EAAE7Z,KAAK/B,EAAEqwH,SAASz0G,EAAE00G,MAAM10G,EAAE20G,UAAU30G,EAAE40G,MAAM50G,EAAE60G,MAAM70G,EAAE80G,eAAe/xC,EAAE4wC,kBAAkB36G,GAAG,OAAOmgB,EAAE47F,UAAU57F,EAAEA,CAAC,GAAG,IAAI,CAAC/0B,EAAE4b,EAAEmZ,KAAK/0B,EAAEP,QAAQs1B,EAAE,IAAFA,IAAU,IAAI/0B,IAAI,aAAaA,EAAEP,QAAQ,gDAAgD,IAAImc,IAAI,aAAaA,EAAEnc,QAAQO,IAAI+0B,EAAE,CAAC,EAAE,SAASlZ,EAAE7b,GAAG,IAAI4U,EAAEmgB,EAAE/0B,GAAG,QAAG,IAAS4U,EAAE,OAAOA,EAAEnV,QAAQ,IAAIk/E,EAAE5pD,EAAE/0B,GAAG,CAACP,QAAQ,CAAC,GAAG,OAAOmc,EAAE5b,GAAG2+E,EAAEA,EAAEl/E,QAAQoc,GAAG8iE,EAAEl/E,OAAO,CAACoc,EAAEA,EAAE7b,IAAI,IAAI4b,EAAE5b,GAAGA,EAAEu9F,WAAW,IAAIv9F,EAAEw9F,QAAQ,IAAIx9F,EAAE,OAAO6b,EAAEtd,EAAEqd,EAAE,CAAChH,EAAEgH,IAAIA,GAAGC,EAAEtd,EAAE,CAACyB,EAAE4b,KAAK,IAAI,IAAImZ,KAAKnZ,EAAEC,EAAE8iE,EAAE/iE,EAAEmZ,KAAKlZ,EAAE8iE,EAAE3+E,EAAE+0B,IAAIjwB,OAAOwY,eAAetd,EAAE+0B,EAAE,CAAC2R,YAAW,EAAG73B,IAAI+M,EAAEmZ,MAAMlZ,EAAE8iE,EAAE,CAAC3+E,EAAE4b,IAAI9W,OAAOsW,UAAUxU,eAAeyU,KAAKrb,EAAE4b,GAAGC,EAAEkZ,EAAE/0B,IAAI,oBAAoBR,QAAQA,OAAOgwC,aAAa1qC,OAAOwY,eAAetd,EAAER,OAAOgwC,YAAY,CAAC7uC,MAAM,WAAWmE,OAAOwY,eAAetd,EAAE,aAAa,CAACW,OAAM,KAAM,IAAIiU,EAAE,CAAC,EAAE,MAAM,MAAM,aAAaiH,EAAEkZ,EAAEngB,GAAGiH,EAAEtd,EAAEqW,EAAE,CAAC4oF,QAAQ,IAAIj/F,IAAI,IAAIyB,EAAE6b,EAAE,KAAKD,EAAEC,EAAEA,EAAE7b,GAAG+0B,EAAElZ,EAAE,KAAK8iE,EAAE9iE,EAAEA,EAAEkZ,GAAG,MAAM10B,EAAE,SAASL,GAAG,IAAI4b,EAAE5b,EAAEuO,KAAKrS,MAAM,KAAK,OAAO0f,EAAExM,OAAO,EAAEwM,EAAEA,EAAExM,OAAO,GAAG,MAAM,EAAE,SAASokB,EAAExzB,EAAE4b,GAAG,OAAO,SAAS5b,GAAG,GAAGsP,MAAMyb,QAAQ/qB,GAAG,OAAOA,CAAC,CAAxC,CAA0CA,IAAI,SAASA,EAAE4b,GAAG,IAAImZ,EAAE,MAAM/0B,EAAE,KAAK,oBAAoBR,QAAQQ,EAAER,OAAO0d,WAAWld,EAAE,cAAc,GAAG,MAAM+0B,EAAE,CAAC,IAAIlZ,EAAEjH,EAAE+pE,EAAEt+E,EAAEmzB,EAAE,GAAG5yB,GAAE,EAAG3C,GAAE,EAAG,IAAI,GAAG0gF,GAAG5pD,EAAEA,EAAE1Z,KAAKrb,IAAI8C,KAAK,IAAI8Y,EAAE,CAAC,GAAG9W,OAAOiwB,KAAKA,EAAE,OAAOn0B,GAAE,CAAE,MAAM,OAAOA,GAAGib,EAAE8iE,EAAEtjE,KAAK0Z,IAAIvY,QAAQgX,EAAE1kB,KAAK+M,EAAElb,OAAO6yB,EAAEpkB,SAASwM,GAAGhb,GAAE,GAAI,CAAC,MAAMZ,GAAG/B,GAAE,EAAG2W,EAAE5U,CAAC,CAAC,QAAQ,IAAI,IAAIY,GAAG,MAAMm0B,EAAEipE,SAAS39F,EAAE00B,EAAEipE,SAASl5F,OAAOzE,KAAKA,GAAG,MAAM,CAAC,QAAQ,GAAGpC,EAAE,MAAM2W,CAAC,CAAC,CAAC,OAAO4e,CAAC,CAAC,CAAzY,CAA2YxzB,EAAE4b,IAAI,SAAS5b,EAAE4b,GAAG,GAAG5b,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAOY,EAAEZ,EAAE4b,GAAG,IAAImZ,EAAEjwB,OAAOsW,UAAUpZ,SAASqZ,KAAKrb,GAAG8V,MAAM,GAAG,GAAG,MAAM,WAAWif,GAAG/0B,EAAEyb,cAAcsZ,EAAE/0B,EAAEyb,YAAYlN,MAAM,QAAQwmB,GAAG,QAAQA,EAAEzlB,MAAMuwB,KAAK7/B,GAAG,cAAc+0B,GAAG,2CAA2C73B,KAAK63B,GAAGn0B,EAAEZ,EAAE4b,QAAG,CAAM,CAAC,CAA3R,CAA6R5b,EAAE4b,IAAI,WAAW,MAAM,IAAIN,UAAU,4IAA4I,CAA3K,EAA8K,CAAC,SAAS1a,EAAEZ,EAAE4b,IAAI,MAAMA,GAAGA,EAAE5b,EAAEoP,UAAUwM,EAAE5b,EAAEoP,QAAQ,IAAI,IAAI2lB,EAAE,EAAElZ,EAAE,IAAIvM,MAAMsM,GAAGmZ,EAAEnZ,EAAEmZ,IAAIlZ,EAAEkZ,GAAG/0B,EAAE+0B,GAAG,OAAOlZ,CAAC,CAAC,IAAI5d,EAAE,8FAA8FygG,EAAE,kBAAkB,MAAMhiF,EAAE,SAAS1c,EAAE4b,GAAG,OAAO5b,GAAGA,EAAEsN,KAAK,SAAUtN,GAAG,GAAG4b,EAAEoP,MAAMhrB,EAAEhB,MAAMf,GAAG,CAAC,IAAI82B,EAAEvB,EAAE5X,EAAEoP,KAAK9uB,MAAM,KAAK,GAAG2f,EAAEkZ,EAAE,GAAGngB,EAAEmgB,EAAE,GAAG4pD,EAAEnrD,EAAExzB,EAAE9D,MAAM,KAAK,GAAGmE,EAAEs+E,EAAE,GAAG/9E,EAAE+9E,EAAE,GAAG,GAAGt+E,GAAGO,EAAE,CAAC,GAAG,MAAMP,GAAG,MAAMO,EAAE,OAAM,EAAG,GAAGP,IAAIwb,GAAG,MAAMjb,EAAE,OAAM,EAAG,GAAGP,IAAIwb,GAAGjb,IAAIgU,EAAE,OAAM,CAAE,CAAC,MAAM,GAAGgH,EAAE2l7B,WAAWvh8B,EAAEhB,MAAM0/F,GAAG,CAAC,IAAIhiF,EAAE1c,EAAEmtH,OAAO,GAAG,OAAOvxG,EAAE2l7B,UAAUn+7B,gBAAgBsZ,EAAEtZ,aAAa,CAAC,OAAM,CAAG,EAAE,EAAE,SAAS+X,IAAI,OAAOA,EAAErW,OAAOC,OAAOD,OAAOC,OAAO2xD,OAAO,SAAS12D,GAAG,IAAI,IAAI4b,EAAE,EAAEA,EAAEzM,UAAUC,OAAOwM,IAAI,CAAC,IAAImZ,EAAE5lB,UAAUyM,GAAG,IAAI,IAAIC,KAAKkZ,EAAEjwB,OAAOsW,UAAUxU,eAAeyU,KAAK0Z,EAAElZ,KAAK7b,EAAE6b,GAAGkZ,EAAElZ,GAAG,CAAC,OAAO7b,CAAC,EAAEmb,EAAEW,MAAMd,KAAK7L,UAAU,CAAC,SAAShR,EAAE6B,EAAE4b,IAAI,MAAMA,GAAGA,EAAE5b,EAAEoP,UAAUwM,EAAE5b,EAAEoP,QAAQ,IAAI,IAAI2lB,EAAE,EAAElZ,EAAE,IAAIvM,MAAMsM,GAAGmZ,EAAEnZ,EAAEmZ,IAAIlZ,EAAEkZ,GAAG/0B,EAAE+0B,GAAG,OAAOlZ,CAAC,CAAC,IAAIld,EAAE,SAASo2B,GAAG,IAAIlZ,EAAI8iE,EAAE5pD,EAAEqrsB,QAAQ5ssB,EAAEuB,EAAEy9F,SAAS5xH,EAAEm0B,EAAE+vF,UAAU7mH,EAAE82B,EAAEqsuB,UAAU1iqB,EAAE3pE,EAAEsx6B,oBAAoB1n8B,GAAGo2B,EAAEux6B,gBAAgBvx6B,EAAE25V,YAAYnwX,EAAEw2B,EAAEihF,SAAS74F,EAAE4X,EAAEu4mB,SAAS3wnB,EAAEoY,EAAEwx6B,YAAY1x7B,EAAEkgB,EAAEyx6B,YAAYno8B,EAAE02B,EAAExmB,KAAKunB,EAAEf,EAAE6kT,SAASr4U,EAAEwzB,EAAE0x6B,YAAYzl6B,EAAEjM,EAAE2x6B,YAAY/w6B,EAAEZ,EAAEsjW,QAAQzjW,EAAEG,EAAE2P,MAAM5Q,GAAE,EAAG9zB,EAAEia,QAAQ,GAAGyb,GAAE,EAAG11B,EAAEia,UAAU+Z,GAAE,EAAGh0B,EAAEia,UAAUia,EAA4B,SAASl0B,GAAG,GAAGsP,MAAMyb,QAAQ/qB,GAAG,OAAOA,CAAC,CAAxC,CAAzB6b,GAAE,EAAG7b,EAAEsa,WAAU,KAAsD,SAASta,GAAK,IAAI+0B,EAAE,MAAM/0B,EAAE,KAAK,oBAAoBR,QAAQQ,EAAER,OAAO0d,WAAWld,EAAE,cAAc,GAAG,MAAM+0B,EAAE,CAAC,IAAIlZ,EAAEjH,EAAE+pE,EAAEt+E,EAAEmzB,EAAE,GAAG5yB,GAAE,EAAG3C,GAAE,EAAG,IAAqE,IAA9D0gF,GAAG5pD,EAAEA,EAAE1Z,KAAKrb,IAAI8C,OAAqDlC,GAAGib,EAAE8iE,EAAEtjE,KAAK0Z,IAAIvY,QAAQgX,EAAE1kB,KAAK+M,EAAElb,OAAwJiU,IAAjJ4e,EAAEpkB,QAAYxO,GAAE,GAAI,CAAC,MAAMZ,GAAG/B,GAAE,EAAG2W,EAAE5U,CAAC,CAAC,QAAQ,IAAI,IAAIY,GAAG,MAAMm0B,EAAEipE,SAAS39F,EAAE00B,EAAEipE,SAASl5F,OAAOzE,KAAKA,GAAG,MAAM,CAAC,QAAQ,GAAGpC,EAAE,MAAM2W,CAAC,CAAC,CAAC,OAAO4e,CAAC,CAAC,CAAzY,CAA2Y3X,IAAM,SAAS7b,GAAK,GAAGA,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAO7B,EAAE6B,EAA4O4U,GAAvO,IAAImgB,EAAEjwB,OAAOsW,UAAUpZ,SAASqZ,KAAKrb,GAAG8V,MAAM,GAAG,GAAG,MAAM,WAAWif,GAAG/0B,EAAEyb,cAAcsZ,EAAE/0B,EAAEyb,YAAYlN,MAAM,QAAQwmB,GAAG,QAAQA,EAAEzlB,MAAMuwB,KAAK7/B,GAAG,cAAc+0B,GAAG,2CAA2C73B,KAAK63B,GAAG52B,EAAE6B,EAAgB4U,QAAX,CAAM,CAAC,CAA3R,CAA6RiH,IAAM,WAAW,MAAM,IAAIP,UAAU,4IAA4I,CAA3K,GAAgLY,EAAEgY,EAAE,GAAGzH,EAAEyH,EAAE,GAAGD,EAAE,SAASj0B,EAAE4b,GAAG+Z,EAAE31B,EAAE4b,EAAE,EAAEma,GAAE,EAAG/1B,EAAEka,aAAa,SAAUla,GAAGA,EAAE2nI,iBAAiB3nI,EAAEs+Q,iBAAkB,EAAE,IAAI1oP,EAAE,SAAS51B,GAAG,IAAI4b,EAAE8Z,EAAE7kB,QAAQ6tF,IAAI9iF,EAAEkpG,UAAUlpG,EAAEkpG,UAAU/lH,QAAQ,IAAIiK,OAAO01F,GAAG,KAAK,mBAAmBlrE,GAAG/G,GAAE,GAAIuU,GAAGA,EAAEhhC,EAAE,EAAE4c,EAAE,SAAS5c,GAAGA,EAAE2nI,iBAAiB/xG,EAAE51B,GAAG,IAAI4b,EAAEmZ,EAAE/0B,EAAE6jc,aAAa7jc,EAAE6jc,aAAargT,MAAMxjJ,EAAE+I,OAAOy6I,OAAM,IAAKjlJ,GAAGw2B,EAAE3lB,OAAO,IAAI2lB,EAAE,CAACA,EAAE,KAAK,IAAI,IAAIlZ,EAAE,GAAGjH,EAAE,EAAEA,EAAEmgB,EAAE3lB,OAAOwF,GAAG,EAAE,CAAC,IAAI4e,EAAEuB,EAAEngB,GAAG,GAAG4e,EAAEza,GAAG,SAAS/P,OAAO8qB,EAAEjjB,SAASijB,EAAEjjB,SAAS,EAAE2iB,EAAE+t6B,UAAUlh8B,EAAEmzB,GAAGA,EAAEmz6B,cAAc/q7B,EAAE4X,EAAEzF,OAAO,IAAIvtB,KAAKsjE,KAAKloD,EAAE,KAAK,KAAKA,GAAG,IAAIpb,KAAKsjE,KAAKloD,EAAE,KAAK,KAAKA,GAAG,IAAIpb,KAAKsjE,KAAKloD,EAAE,KAAK,KAAKpb,KAAKsjE,KAAKloD,GAAG,IAAI4X,EAAExI,MAAM,UAAUwI,EAAExI,KAAK9uB,MAAM,KAAK,GAAGs3B,EAAEi/V,QAAQ,CAACznW,KAAK,QAAQy9E,IAAItmG,OAAOkiG,IAAIC,gBAAgB9wE,IAAIA,EAAEi/V,QAAQ,CAACznW,KAAK,QAAQnP,EAAEzM,QAAQ+N,EAAE,CAAC8W,EAAE,CAACu1E,KAAK,EAAE4B,QAAQ,8BAA8B53E,GAAG,KAAK,CAAC,GAAGA,EAAEzF,KAAKpR,EAAE,CAACsX,EAAE,CAACu1E,KAAK,EAAE4B,QAAQ,GAAGpiG,OAAOwqB,EAAEjlB,KAAK,kBAAkBilB,GAAG,KAAK,CAAC,GAAGA,EAAEzF,KAAKlZ,EAAE,CAACof,EAAE,CAACu1E,KAAK,EAAE4B,QAAQ,GAAGpiG,OAAOwqB,EAAEjlB,KAAK,kBAAkBilB,GAAG,KAAK,CAAC,IAAI9W,EAAEiiE,EAAEnrD,GAAG,CAACS,EAAE,CAACu1E,KAAK,EAAE4B,QAAQ,GAAGpiG,OAAOwqB,EAAEjlB,KAAK,8BAA8BilB,GAAG,KAAK,CAAC3X,EAAE/M,KAAK0kB,EAAE,CAACsC,EAAEja,EAAE,EAAE,OAAOD,IAAImM,cAAcnM,IAAI08U,SAAS,KAAK18U,IAAImM,cAAc,QAAQ5M,EAAE,CAAC,EAAExc,EAAE,CAACkvH,IAAI75F,EAAEhJ,KAAK,OAAO4nW,OAAOj0S,EAAEA,EAAEzlE,OAAO,GAAG88F,SAASz3G,EAAEgQ,KAAKlQ,EAAEqmC,MAAM,CAAC8yB,QAAQ,QAAQoiR,SAASh9T,KAAKhB,IAAImM,cAAc,MAAM,CAAC8lG,IAAIn4F,EAAEovF,UAAUlkH,EAAE4kC,SAAQ,IAAKvnC,EAAE,WAAW+1B,EAAEnjB,QAAQlQ,MAAM,KAAKqzB,EAAEnjB,QAAQu6H,OAAO,EAAE,KAAKw7zB,OAAOhq7B,EAAEyxpB,WAAWt4oB,EAAE0w6B,YAAY,SAASzm8B,GAAG,IAAI4b,EAAE8Z,EAAE7kB,QAAQ6tF,IAAI9iF,EAAEkpG,UAAUn0E,SAAS+tD,KAAK9iF,EAAEkpG,UAAU,GAAG97G,OAAO4S,EAAEkpG,UAAU,KAAK97G,OAAO01F,IAAI,mBAAmBlrE,GAAG/G,GAAE,GAAIlrB,GAAGA,EAAEvB,EAAE,EAAE0m8B,YAAY9w6B,EAAE8O,MAAM9P,GAAG,mBAAmBpB,EAAEA,EAAEtX,GAAGsX,GAAG,EAAE70B,EAAE+1N,UAAU,CAAC0rgB,QAAQzhpB,IAAItvD,MAAMmjG,SAAS7zC,IAAI4xC,UAAU,CAAC5xC,IAAI+wB,KAAK/wB,IAAIwxC,QAAQxxC,IAAI58E,MAAM48E,IAAI58E,OAAO+iH,UAAUnmC,IAAI7/E,OAAOsiwB,UAAUzirB,IAAIqxC,KAAKq20B,oBAAoB1n3B,IAAI7/E,OAAO4vX,WAAW/vS,IAAIr4B,OAAO0vD,SAASr3B,IAAIqxC,KAAKs9gB,SAAS3ujB,IAAI1gC,OAAOso5B,YAAY5n3B,IAAI1gC,OAAOuo5B,YAAY7n3B,IAAI1gC,OAAO1vC,KAAKowE,IAAI7/E,OAAO86U,SAASj7P,IAAI+wB,KAAK+21B,YAAY9n3B,IAAI+wB,KAAKg31B,YAAY/n3B,IAAI+wB,KAAK2oR,QAAQ15S,IAAI+wB,KAAKhrE,MAAMi6C,IAAIr4B,QAAQ3nD,EAAE01N,aAAa,CAAC+rgB,QAAQ,KAAKt7mB,eAAU,EAAOs8oB,WAAU,EAAGilM,yBAAoB,EAAO33kB,WAAW,CAAC,EAAE14Q,UAAS,EAAGs3hB,SAAS,IAAIi5T,YAAY,IAAIC,YAAY,EAAEj47B,KAAK,OAAOqrU,SAAS,SAAS55U,GAAG,OAAO4tC,QAAQ3sC,IAAIjB,EAAE,EAAEym8B,iBAAY,EAAOC,iBAAY,EAAOrukB,QAAQ,SAASr4X,GAAG,OAAO4tC,QAAQ3sC,IAAI,cAAc+H,OAAOhJ,EAAEwpG,KAAK,MAAMxgG,OAAOhJ,EAAEorG,SAAS,GAAG,MAAM7sG,EAAEI,CAAE,EAA79K,GAAi+KiW,CAAE,EAA1yN,GAA/O8nF,EAAOj9F,QAAQmc,EAAE,EAAQ,O,YCG7F,IAAIir7B,EAAyB,WASzB,SAASA,EAAQj87B,GACb9F,OAAO0hC,iBAAiBxrB,KAAM,CAC1B2yyB,KAAM,CACFhtzB,MAAOiK,EAAQlG,KAAO,KAE1ByzyB,KAAM,CACFx3yB,MAAOiK,EAAQjG,KAAO,KAE1Bmi8B,QAAS,CACLnm8B,MAAOiK,EAAQ2W,OAAS,GAAK3W,EAAQ2W,QAAU,EAAI3W,EAAQ2W,OAAS,GAExEwl7B,QAAS,CACLpm8B,MAAOiK,EAAQmzC,QAAU,GAE7Bip5B,UAAW,CACPrm8B,MAAO,EACP8lC,UAAU,GAEdiX,UAAW,CACPhX,YAAY,EACZ73B,IAAK,WACD,IAAI26S,EAAKxuS,KAAK2yyB,KAAOntzB,KAAKC,IAAIua,KAAK+r7B,QAAS/r7B,KAAKgs7B,WACjD,GAAIhs7B,KAAK8r7B,QAAS,CACd,IAAI/nuB,EAAOv+N,KAAKm+F,SACZ8oQ,EAAYjnW,KAAKQ,MAAM+9N,EAAO/jN,KAAK8r7B,QAAUt9oB,GACjDA,EAA8B,EAAxBhpT,KAAKQ,MAAa,GAAP+9N,GAAyCyqF,EAAKi+C,EAAtBj+C,EAAKi+C,CAClD,CACA,OAAiC,EAA1BjnW,KAAKkE,IAAI8kT,EAAIxuS,KAAKm9xB,KAC7B,GAEJ8uJ,WAAY,CACRtm8B,MAAO,KACP8lC,UAAU,IAGtB,CAgCA,OAzBAog6B,EAAQzr7B,UAAU8r7B,QAAU,SAAUp37B,GAClC,IAAIoP,EAAQlE,KACRkF,EAAWlF,KAAK0iC,UAChB1iC,KAAKis7B,aACLtk7B,aAAa3H,KAAKis7B,YAClBjs7B,KAAKis7B,WAAa,MAEtBjs7B,KAAKis7B,WAAaxk7B,WAAW,WACzBvD,EAAM8n7B,YACNl37B,GACJ,EAAGoQ,EACP,EAOA2m7B,EAAQzr7B,UAAU7J,MAAQ,WACtByJ,KAAKgs7B,UAAY,EACbhs7B,KAAKis7B,aACLtk7B,aAAa3H,KAAKis7B,YAClBjs7B,KAAKis7B,WAAa,KAE1B,EACOJ,CACX,CA7E4B,GA8E5Bnq2B,EAAOj9F,QAAUon8B,C,8JCxEb/wU,EAA2B,aAAiB,SAAU1vnB,EAAMynH,GAC9D,IA0BIxF,EAGE6mN,EA7BFphN,EAAW1nH,EAAK0nH,SAChB0jzB,EAAiBpr6B,EAAKor6B,eACtBxm5B,EAAO5kB,EAAK4kB,KACZ+C,EAAO3nB,EAAK2nB,KACZo56B,EAAW/g8B,EAAK+g8B,SAChBpu7B,EAAK3S,EAAK2S,GACV+rG,EAAY1+G,EAAK0+G,UACjB2szB,EAAerr6B,EAAK09M,QACpBA,OAA2B,IAAjB2ttB,GAAkCA,EAC5CC,EAAiBtr6B,EAAKuvnB,UACtBA,OAA+B,IAAnB+7S,GAAoCA,EAChD01B,EAAYhh8B,EAAKgh8B,UACjBl+kB,EAAW9iX,EAAK8iX,SAChB77T,EAASjnD,EAAKinD,OACdo3L,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,QAAUA,EAC3Cr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,iBAAkB,OAAQ,OAAQ,WAAY,KAAM,YAAa,UAAW,YAAa,YAAa,WAAY,SAAU,OAGrLu7N,GADc,IAAAojB,YAAW,KACDpjB,UAExBh8N,EAAQ0nD,EAAS,CAACmk3B,EAAgB,UAAY,CAAC1jzB,EAAU,gBACzD59E,EAASvqC,EAAM,GACf+0nB,EAAgB/0nB,EAAM,GAK1B,GAHAmoH,GAAW,QAAmB59E,EAAQwqlB,GAGlC0sU,GAGSl4nB,EAAW,CAAC,GAAYphN,EAAW,eAAgB,EAA9DzF,EAAoE6mN,OAC/D,GAAa,SAATlkT,EAAiB,CAC1B,IAAIq86B,GAEOA,EAAY,CAAC,GAAav50B,EAAW,UAAW,EAA3DzF,EAAiEg/0B,CACnE,MAAO,GAAa,UAATr86B,EAAkB,CAC3B,IAAIs86B,GAEOA,EAAY,CAAC,GAAax50B,EAAW,WAAY,EAA5DzF,EAAkEi/0B,CACpE,MAAO,GAAkB,WAAd3itB,GAA0Bt3L,EAAQ,CAC3C,IAAIk64B,GAEOA,EAAY,CAAC,GAAaz50B,EAAW,YAAa,EAAMy50B,EAAUz50B,EAAW,WAAa//F,GAAQA,EAA7Gs6F,EAAmHk/0B,CACrH,KAAO,CACL,IAAIC,GAEOA,EAAY,CAAC,GAAa150B,IAAY,EAAM050B,EAAU150B,EAAW,IAAM//F,GAAQA,EAA1Fs6F,EAAgGm/0B,CAClG,CAGA,OAAoB,gBAAoB7itB,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEpiB,KAAMA,EACN+C,KAAMo56B,EACNt50B,IAAKA,EACLq7P,SAAUA,EACVnwW,GAAIA,GAAM4oN,EACV78G,UAAW,IAAWA,EAAWuD,EAASy7F,GAAW,WAAY6xa,GAAa,gBAElF,GACAG,EAAYzyb,YAAc,cAC1B,QAAev+L,OAAOC,OAAO+wnB,EAAa,CACxCjtG,SAAU,K,qCCvEZ,IACQ/tgB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAisN,EAAa,EAAQ,OAiBrBk4e,EAAkC,SAAU3gsB,GAa5C,SAAS2gsB,EAAiBruhB,EAAKo3Z,EAAoBl4c,EAAW08L,EAAeK,EAAao7Q,EAAe/9kB,GACrG,OAAOoU,EAAO3D,KAAKL,KAAMs2K,EAAKo3Z,EAAoBl4c,EAAW08L,EAAeK,EAAao7Q,EAAe/9kB,IAAYoQ,IACxH,CA0BA,OAxCAD,EAAU4ksB,EAAkB3gsB,GAe5B2gsB,EAAiBvksB,UAAUpZ,SAAW,WAClC,MAAO,sBAAwBgZ,KAAKwF,YAAc,KAAOxF,KAAKs2K,IAAM,GACxE,EAIAquhB,EAAiBvksB,UAAUojC,OAAS,WAChCx/B,EAAO5D,UAAUojC,OAAOnjC,KAAKL,MACzBA,KAAKu9O,WAGLv9O,KAAKu9O,SAASpwO,UAAY,KAC1BnN,KAAKu9O,SAAW,KAExB,EAQAond,EAAiBvksB,UAAUmyT,YAAc,SAAUj+N,GAC/C,OAAOtwF,EAAO5D,UAAUmyT,YAAYlyT,KAAKL,KAAMs0F,EACnD,EACOqwmB,CACX,CA1CqC,CAhBT,EAAQ,MACRi2O,CAAsBnutB,IAwFlD/qI,EAAOj9F,QAAUkgtB,C,+BCxGjB,IAAI8nP,EAAQ,EAAQ,OAChB9gsB,EAAQ,EAAQ,OAChB+gsB,EAAiB,EAAQ,OAC7B,MAAMv9e,EAAS,kBAKf,SAASw9e,EAAWp05B,EAAQq05B,EAAWC,GAEnCD,EAAYpn8B,KAAKmE,IAAI,OAAiBmN,IAAd817B,EAA0B,EAAIA,GAGtDC,EAAkBA,GAAmB,EAGrC,IAAIxxc,EAgLR,SAAwB9id,GAOpB,IANA,IAAIpuC,EAAOouC,EAAO,GACdvuC,EAAMuuC,EAAO,GACbtuC,EAAQsuC,EAAO,GACfruC,EAASquC,EAAO,GAGXlzC,EAAI,EAAGA,EAAIkzC,EAAOnkC,OAAQ/O,IAAK,CACpC,IAAI8a,EAAIo4B,EAAOlzC,GACX8a,EAAE,GAAKhW,EAAK,KAAIA,EAAOgW,GACvBA,EAAE,GAAKlW,EAAM,KAAIA,EAAQkW,GACzBA,EAAE,GAAKnW,EAAI,KAAIA,EAAMmW,GACrBA,EAAE,GAAKjW,EAAO,KAAIA,EAASiW,EACnC,CAGA,IAAI2s7B,EAAO,CAAC3i8B,EAAMH,EAAKC,EAAOC,GAC1B47V,EAAWgnmB,EAAKhy7B,QACpB,IAAKzV,EAAI,EAAGA,EAAIkzC,EAAOnkC,OAAQ/O,IACtBqn8B,EAAen05B,EAAOlzC,GAAIyn8B,IAAOhnmB,EAAShyV,KAAKykC,EAAOlzC,IAI/D,OA0IJ,SAAoBkzC,GAChBA,EAAOnlC,KAAK257B,GAGZ,IADA,IAAI92yB,EAAQ,GACH5wJ,EAAI,EAAGA,EAAIkzC,EAAOnkC,OAAQ/O,IAAK,CACpC,KAAO4wJ,EAAM7hJ,QAAU,GAAK8+f,EAAMj9W,EAAMA,EAAM7hJ,OAAS,GAAI6hJ,EAAMA,EAAM7hJ,OAAS,GAAImkC,EAAOlzC,KAAO,GAC9F4wJ,EAAM5zI,MAEV4zI,EAAMniJ,KAAKykC,EAAOlzC,GACtB,CAGA,IADA,IAAIq2f,EAAQ,GACHhlP,EAAKn+N,EAAOnkC,OAAS,EAAGsiQ,GAAM,EAAGA,IAAM,CAC5C,KAAOglP,EAAMtnf,QAAU,GAAK8+f,EAAMxX,EAAMA,EAAMtnf,OAAS,GAAIsnf,EAAMA,EAAMtnf,OAAS,GAAImkC,EAAOm+N,KAAQ,GAC/FglP,EAAMr5e,MAEVq5e,EAAM5nf,KAAKykC,EAAOm+N,GACtB,CAIA,OAFAglP,EAAMr5e,MACN4zI,EAAM5zI,MACC4zI,EAAMjoJ,OAAO0tf,EACxB,CAhKWolS,CAAWh7b,EACtB,CAxMeknmB,CAAez05B,GAGtB82K,EAAO,IAAIo9uB,EAAM,IACrBp9uB,EAAK4Z,OAAS,SAAUrvN,GACpB,MAAO,CACHw+C,KAAMx+C,EAAE,GACRy+C,KAAMz+C,EAAE,GACRs+C,KAAMt+C,EAAE,GACRu+C,KAAMv+C,EAAE,GAEhB,EACAy1M,EAAK49uB,YAAc,SAAUrz7B,EAAGC,GAAK,OAAOD,EAAE,GAAKC,EAAE,EAAI,EACzDw1M,EAAK69uB,YAAc,SAAUtz7B,EAAGC,GAAK,OAAOD,EAAE,GAAKC,EAAE,EAAI,EAEzDw1M,EAAK2Z,KAAKzwL,GAIV,IADA,IACgB2b,EADZ0oE,EAAQ,GACHv3H,EAAI,EAASA,EAAIg2f,EAAKjnf,OAAQ/O,IAAK,CACxC,IAAI8a,EAAIk7e,EAAKh2f,GACbgqN,EAAKzsK,OAAOziC,GACZ+zC,EAAO+q3B,EAAW9+5B,EAAG+zC,GACrB0oE,EAAM9oH,KAAKogD,EACf,CAGA,IAAIi54B,EAAU,IAAIV,EAAM,IACxB,IAAKpn8B,EAAI,EAAGA,EAAIu3H,EAAMxoH,OAAQ/O,IAAK8n8B,EAAQh81B,OAAOi81B,EAAWxw0B,EAAMv3H,KAMnE,IAJA,IAAIgo8B,EAAcT,EAAYA,EAC1BU,EAAiBT,EAAkBA,EAGhCjw0B,EAAMxoH,QAAQ,CACjB,IAAIrN,EAAO61H,EAAM10E,QACbtuC,EAAI7S,EAAKoZ,EACTtG,EAAI9S,EAAKe,KAAKqY,EAGdot7B,EAAQC,EAAU5z7B,EAAGC,GACzB,KAAI0z7B,EAAQD,GAAZ,CAEA,IAAIG,EAAWF,EAAQF,GAGvBlt7B,EAAIut7B,EAAcr+uB,EAAMtoN,EAAK8zC,KAAK16B,EAAGvG,EAAGC,EAAG9S,EAAKe,KAAKA,KAAKqY,EAAGst7B,EAAUN,KAG9D3n8B,KAAKkE,IAAI8j8B,EAAUrt7B,EAAGvG,GAAI4z7B,EAAUrt7B,EAAGtG,KAAO4z7B,IAEnD7w0B,EAAM9oH,KAAK/M,GACX61H,EAAM9oH,KAAKmr6B,EAAW9+5B,EAAGpZ,IAGzBsoN,EAAKzsK,OAAOziC,GACZgt7B,EAAQvq5B,OAAO77C,GACfom8B,EAAQh81B,OAAOi81B,EAAWrm8B,IAC1Bom8B,EAAQh81B,OAAOi81B,EAAWrm8B,EAAKe,OAjBC,CAmBxC,CAGAf,EAAOmtD,EACP,IAAIy54B,EAAU,GACd,GACIA,EAAQ757B,KAAK/M,EAAKoZ,GAClBpZ,EAAOA,EAAKe,WACPf,IAASmtD,GAIlB,OAFAy54B,EAAQ757B,KAAK/M,EAAKoZ,GAEXwt7B,CACX,CAEA,SAASD,EAAcr+uB,EAAMz1M,EAAGC,EAAGjU,EAAGrC,EAAGqq8B,EAAST,GAM9C,IALA,IAAIvw0B,EAAQ,IAAI+uI,EAAM,GAAIkisB,GACtB9m8B,EAAOsoN,EAAKt5M,KAIThP,GAAM,CACT,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAKywH,SAASpjH,OAAQ/O,IAAK,CAC3C,IAAIqC,EAAQX,EAAKywH,SAASnyH,GAEtB2iO,EAAOjhO,EAAKq5f,KAAO0tc,EAAUpm8B,EAAOmS,EAAGjU,GAAKmo8B,EAAal07B,EAAGjU,EAAG8B,GAC/DsgO,EAAO4luB,GAEXhx0B,EAAM9oH,KAAK,CACP/M,KAAMW,EACNsgO,KAAMA,GAEd,CAEA,KAAOprG,EAAMxoH,SAAWwoH,EAAM+2K,OAAO5sS,KAAKywH,UAAU,CAChD,IAAIxkG,EAAO4pG,EAAMv6G,MACblC,EAAI6S,EAAKjsB,KAITyhf,EAAKsld,EAAU3t7B,EAAGvG,EAAGC,GACrB+0M,EAAKk/uB,EAAU3t7B,EAAGva,EAAGrC,GACzB,GAAIyvB,EAAKg1M,KAAOwgR,GAAMx1d,EAAKg1M,KAAOpZ,GAC9Bo/uB,EAAgBn07B,EAAGsG,EAAGgt7B,IACtBa,EAAgBpo8B,EAAGua,EAAGgt7B,GAAU,OAAOht7B,CAC/C,EAEApZ,EAAO61H,EAAMv6G,SACHtb,EAAOA,EAAKA,KAC1B,CAEA,OAAO,IACX,CAEA,SAAS8m8B,EAAYj07B,EAAGC,GACpB,OAAOD,EAAEouN,KAAOnuN,EAAEmuN,IACtB,CAGA,SAAS+luB,EAAan07B,EAAGC,EAAG+jM,GACxB,GAAIx9J,EAAOxmC,EAAGgkM,IAASx9J,EAAOvmC,EAAG+jM,GAAO,OAAO,EAC/C,IAAIgR,EAAKq/uB,EAAar07B,EAAE,GAAIA,EAAE,GAAIC,EAAE,GAAIA,EAAE,GAAI+jM,EAAKxlJ,KAAMwlJ,EAAKvlJ,KAAMulJ,EAAK1lJ,KAAM0lJ,EAAKvlJ,MACpF,GAAW,IAAPu2J,EAAU,OAAO,EACrB,IAAIC,EAAKo/uB,EAAar07B,EAAE,GAAIA,EAAE,GAAIC,EAAE,GAAIA,EAAE,GAAI+jM,EAAKxlJ,KAAMwlJ,EAAKvlJ,KAAMulJ,EAAKxlJ,KAAMwlJ,EAAKzlJ,MACpF,GAAW,IAAP02J,EAAU,OAAO,EACrB,IAAIo3P,EAAKgof,EAAar07B,EAAE,GAAIA,EAAE,GAAIC,EAAE,GAAIA,EAAE,GAAI+jM,EAAK1lJ,KAAM0lJ,EAAKvlJ,KAAMulJ,EAAK1lJ,KAAM0lJ,EAAKzlJ,MACpF,GAAW,IAAP8tZ,EAAU,OAAO,EACrB,IAAI2kZ,EAAKqjG,EAAar07B,EAAE,GAAIA,EAAE,GAAIC,EAAE,GAAIA,EAAE,GAAI+jM,EAAKxlJ,KAAMwlJ,EAAKzlJ,KAAMylJ,EAAK1lJ,KAAM0lJ,EAAKzlJ,MACpF,OAAW,IAAPyyyB,EAAiB,EACdpl2B,KAAKkE,IAAIklN,EAAIC,EAAIo3P,EAAI2kZ,EAChC,CAEA,SAASxqzB,EAAOxmC,EAAGgkM,GACf,OAAOhkM,EAAE,IAAMgkM,EAAKxlJ,MACbx+C,EAAE,IAAMgkM,EAAK1lJ,MACbt+C,EAAE,IAAMgkM,EAAKvlJ,MACbz+C,EAAE,IAAMgkM,EAAKzlJ,IACxB,CAGA,SAAS614B,EAAgBp07B,EAAGC,EAAGsz7B,GAO3B,IANA,IAAI/04B,EAAO5yD,KAAKkE,IAAIkQ,EAAE,GAAIC,EAAE,IACxBw+C,EAAO7yD,KAAKkE,IAAIkQ,EAAE,GAAIC,EAAE,IACxBq+C,EAAO1yD,KAAKmE,IAAIiQ,EAAE,GAAIC,EAAE,IACxBs+C,EAAO3yD,KAAKmE,IAAIiQ,EAAE,GAAIC,EAAE,IAExB+uM,EAAQukvB,EAAQ7/uB,OAAO,CAACl1J,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IAC7D9yD,EAAI,EAAGA,EAAIujN,EAAMx0M,OAAQ/O,IAC9B,GAAI+1Z,EAAWxyM,EAAMvjN,GAAG8a,EAAGyoM,EAAMvjN,GAAGyC,KAAKqY,EAAGvG,EAAGC,GAAI,OAAO,EAE9D,OAAO,CACX,CAEA,SAASq5f,EAAM3te,EAAIC,EAAIste,GACnB,OAAO3jD,EAAO5pb,EAAG,GAAIA,EAAG,GAAIC,EAAG,GAAIA,EAAG,GAAIste,EAAG,GAAIA,EAAG,GACxD,CAGA,SAAS13G,EAAW71X,EAAI2rb,EAAI1rb,EAAIqsb,GAC5B,OAAOtsb,IAAOssb,GAAMX,IAAO1rb,GACvB0te,EAAM3te,EAAI2rb,EAAI1rb,GAAM,GAAM0te,EAAM3te,EAAI2rb,EAAIW,GAAM,GAC9CqhD,EAAM1te,EAAIqsb,EAAItsb,GAAM,GAAM2te,EAAM1te,EAAIqsb,EAAIX,GAAM,CACtD,CAGA,SAASk8e,EAAWrm8B,GAChB,IAAIw+B,EAAKx+B,EAAKoZ,EACVqlB,EAAKz+B,EAAKe,KAAKqY,EAKnB,OAJApZ,EAAKqxD,KAAO5yD,KAAKkE,IAAI67B,EAAG,GAAIC,EAAG,IAC/Bz+B,EAAKsxD,KAAO7yD,KAAKkE,IAAI67B,EAAG,GAAIC,EAAG,IAC/Bz+B,EAAKmxD,KAAO1yD,KAAKmE,IAAI47B,EAAG,GAAIC,EAAG,IAC/Bz+B,EAAKoxD,KAAO3yD,KAAKmE,IAAI47B,EAAG,GAAIC,EAAG,IACxBz+B,CACX,CA8BA,SAASk46B,EAAW9+5B,EAAG06B,GACnB,IAAI9zC,EAAO,CACPoZ,EAAGA,EACH06B,KAAM,KACN/yC,KAAM,KACNswD,KAAM,EACNC,KAAM,EACNH,KAAM,EACNC,KAAM,GAaV,OAVKtd,GAKD9zC,EAAKe,KAAO+yC,EAAK/yC,KACjBf,EAAK8zC,KAAOA,EACZA,EAAK/yC,KAAK+yC,KAAO9zC,EACjB8zC,EAAK/yC,KAAOf,IAPZA,EAAK8zC,KAAO9zC,EACZA,EAAKe,KAAOf,GAQTA,CACX,CAGA,SAASym8B,EAAUjo6B,EAAIC,GAEnB,IAAIo7K,EAAKr7K,EAAG,GAAKC,EAAG,GAChBq7K,EAAKt7K,EAAG,GAAKC,EAAG,GAEpB,OAAOo7K,EAAKA,EAAKC,EAAKA,CAC1B,CAGA,SAASitvB,EAAU3t7B,EAAGolB,EAAIC,GAEtB,IAAIj/B,EAAIg/B,EAAG,GACP5hC,EAAI4hC,EAAG,GACPq7K,EAAKp7K,EAAG,GAAKj/B,EACbs6M,EAAKr7K,EAAG,GAAK7hC,EAEjB,GAAW,IAAPi9M,GAAmB,IAAPC,EAAU,CAEtB,IAAIjgM,IAAMT,EAAE,GAAK5Z,GAAKq6M,GAAMzgM,EAAE,GAAKxc,GAAKk9M,IAAOD,EAAKA,EAAKC,EAAKA,GAE1DjgM,EAAI,GACJra,EAAIi/B,EAAG,GACP7hC,EAAI6hC,EAAG,IAEA5kB,EAAI,IACXra,GAAKq6M,EAAKhgM,EACVjd,GAAKk9M,EAAKjgM,EAElB,CAKA,OAHAggM,EAAKzgM,EAAE,GAAK5Z,GAGAq6M,GAFZC,EAAK1gM,EAAE,GAAKxc,GAEUk9M,CAC1B,CAGA,SAASotvB,EAAal9uB,EAAIC,EAAI79I,EAAIC,EAAIC,EAAIC,EAAI+gB,EAAIC,GAC9C,IAaI+iI,EAAI62uB,EAAIvxgB,EAAIwxgB,EAbZC,EAAKj73B,EAAK49I,EACVs9uB,EAAKj73B,EAAK49I,EACVyF,EAAKpiI,EAAKhhB,EACVqjJ,EAAKpiI,EAAKhhB,EACVg73B,EAAKv9uB,EAAK19I,EACVk73B,EAAKv9uB,EAAK19I,EACV15D,EAAIw07B,EAAKA,EAAKC,EAAKA,EACnBx07B,EAAIu07B,EAAK33uB,EAAK43uB,EAAK33uB,EACnB9wN,EAAI6wN,EAAKA,EAAKC,EAAKA,EACnBnzN,EAAI6q8B,EAAKE,EAAKD,EAAKE,EACnBvp8B,EAAIyxN,EAAK63uB,EAAK53uB,EAAK63uB,EACnBt16B,EAAIrf,EAAIhU,EAAIiU,EAAIA,EAGhB207B,EAAKv16B,EACLw16B,EAAKx16B,EAEC,IAANA,GACAi16B,EAAK,EACLM,EAAK,EACLL,EAAKnp8B,EACLyp8B,EAAK7o8B,IAGLuo8B,EAAKv07B,EAAI5U,EAAI6U,EAAItW,GADjB2q8B,EAAKr07B,EAAI7U,EAAIY,EAAIrC,GAER,GACL2q8B,EAAK,EACLC,EAAKnp8B,EACLyp8B,EAAK7o8B,GACEso8B,EAAKM,IACZN,EAAKM,EACLL,EAAKnp8B,EAAI6U,EACT407B,EAAK7o8B,IAITuo8B,EAAK,GACLA,EAAK,GACA5q8B,EAAI,EAAK2q8B,EAAK,GACT3q8B,EAAIqW,EAAGs07B,EAAKM,GAElBN,GAAM3q8B,EACNir8B,EAAK507B,IAEFu07B,EAAKM,IACZN,EAAKM,GACClr8B,EAAIsW,EAAK,EAAKq07B,EAAK,GACf3q8B,EAAIsW,EAAID,EAAGs07B,EAAKM,GAEtBN,GAAM3q8B,EAAIsW,EACV207B,EAAK507B,IAOb,IAIIgnM,GAFO,GAJX+7O,EAAY,IAAPwxgB,EAAW,EAAIA,EAAKM,IAIJp73B,EAAKspX,EAAKtoW,IAFrB,GAHVgjI,EAAY,IAAP62uB,EAAW,EAAIA,EAAKM,IAGLz9uB,EAAKsG,EAAKlkJ,GAK1B0tI,GAFO,EAAI87O,GAAMrpX,EAAKqpX,EAAKroW,IAFrB,EAAI+iI,GAAMrG,EAAKqG,EAAKjkJ,GAM9B,OAAOwtI,EAAKA,EAAKC,EAAKA,CAC1B,CAEA,SAASksvB,EAAWnz7B,EAAGC,GACnB,OAAOD,EAAE,KAAOC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAClD,CA1VA6nF,EAAOj9F,QAAUko8B,EACjBjr2B,EAAOj9F,QAAP,QAAyBko8B,C,qCCPzB,IACQ7s7B,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAWA2g4B,EAAsC,SAAUn93B,GAOhD,SAASm93B,EAAqBj1qB,EAASwqH,EAAa+nU,GAChD,IAAIv6oB,EAAQF,EAAO3D,KAAKL,KAAMksN,EAASwqH,EAAa+nU,IAAuBz+oB,KACvE0u7B,EAAoB,KACmB,iBAAhCh4mB,EAAY6nH,iBACqB,iBAAjC7nH,EAAYgoH,mBACnBgwf,EAAoB,CAAC,EACrB5k8B,OAAO0hC,iBAAiBkj6B,EAAmB,CACvCho8B,MAAO,CACHf,MAAO+wV,EAAY6nH,gBACnB7ya,YAAY,GAEhB9kC,OAAQ,CACJjB,MAAO+wV,EAAYgoH,iBACnBhza,YAAY,MAIxB,IAAIg3T,EAAa,KAqCjB,MApC0C,iBAA/BhM,EAAY4nH,gBACoB,iBAAhC5nH,EAAY+nH,kBACnB/7G,EAAa,CAAC,EACd54V,OAAO0hC,iBAAiBk3T,EAAY,CAChCh8V,MAAO,CACHf,MAAO+wV,EAAY4nH,eACnB5ya,YAAY,GAEhB9kC,OAAQ,CACJjB,MAAO+wV,EAAY+nH,gBACnB/ya,YAAY,MAIxB5hC,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bwq7B,kBAAmB,CACf/o8B,MAAO+o8B,EACPhj6B,YAAY,GAEhBg3T,WAAY,CACR/8V,MAAO+8V,EACPh3T,YAAY,GAEhBij6B,iBAAkB,CACdhp8B,MAA6C,iBAA/B+wV,EAAY+oH,eACpB/oH,EAAY+oH,eACZ,KACN/za,YAAY,GAEhBqvW,UAAW,CACPp1Y,MAA4C,iBAA9B+wV,EAAYgpH,cACpBhpH,EAAYgpH,cACZ,KACNh0a,YAAY,KAGbxnB,CACX,CACA,OA9DAnE,EAAUoh4B,EAAsBn93B,GA8DzBm93B,CACX,CAhEyC,CATnB,EAAQ,QA0E9Bz/yB,EAAOj9F,QAAU084B,C,+BCxFjB,IAAIr9pB,EAAS,EAAQ,OACjB0yZ,EAAW,EAAQ,OAEnBjwY,EAAiB,EAAQ,OACzBo5X,EAAc,EAAQ,OACtBtshB,EAAO,EAAQ,OAEfu71B,EAAap4T,EAASjwY,GAE1BziB,EAAO8qtB,EAAY,CAClBjvU,YAAaA,EACbp5X,eAAgBA,EAChBlzJ,KAAMA,IAGP3R,EAAOj9F,QAAUmq8B,C,+BChBjB,IAAIll2B,EAAI,EAAQ,OACZ8vI,EAAmB,EAAQ,MAC3BwlG,EAA2B,EAAQ,OACnC99M,EAAoB,EAAQ,OAC5BsxQ,EAAkB,EAAQ,OAC1B92I,EAAkB,EAAQ,OAC1BC,EAAsB,EAAQ,OAE9BuL,EAAS5yP,MACT3K,EAAMnE,KAAKmE,IACXD,EAAMlE,KAAKkE,IAIfggG,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,GAAQ,CAClC2p6B,UAAW,SAAmBpi8B,EAAO8i2B,GACnC,IAKIC,EAAaC,EAAmB5qF,EAAQ/rvB,EALxCgC,EAAI4gO,EAAgB17O,MACpBvQ,EAAMyxH,EAAkBpmG,GACxB400B,EAAcl9d,EAAgB/lY,EAAOgD,GACrCy+O,EAAkB/5O,UAAUC,OAC5Bqd,EAAI,EAcR,IAZwB,IAApBy8N,EACFshnB,EAAcC,EAAoB,EACL,IAApBvhnB,GACTshnB,EAAc,EACdC,EAAoBhg2B,EAAMig2B,IAE1BF,EAActhnB,EAAkB,EAChCuhnB,EAAoB/l2B,EAAIC,EAAIgyP,EAAoB4zmB,GAAc,GAAI9/1B,EAAMig2B,IAE1E7qF,EAAS7lc,EAAyBvvU,EAAM+/1B,EAAcC,GACtD320B,EAAIouO,EAAO29gB,GAEJpzvB,EAAIi+0B,EAAaj+0B,IAAKqH,EAAErH,GAAKqJ,EAAErJ,GACtC,KAAOA,EAAIi+0B,EAAcF,EAAa/90B,IAAKqH,EAAErH,GAAKtd,UAAUsd,EAAIi+0B,EAAc,GAC9E,KAAOj+0B,EAAIozvB,EAAQpzvB,IAAKqH,EAAErH,GAAKqJ,EAAErJ,EAAIg+0B,EAAoBD,GAEzD,OAAO120B,CACT,IAGF0gN,EAAiB,Y,6BCzCjB1vO,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,QA4BjB,WACE,IARmBX,EAQfb,EAAIkR,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,GAExE267B,IAAiB367B,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,KAAmBA,UAAU,GAChF467B,EAAO9r8B,GAAK,GAOhB,SATgBkR,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,KAAmBA,UAAU,MAI7E467B,EAAmB9r8B,EA/BP+D,WAAWgX,OAAOja,QAAQ,oCAAqC,SAAUC,EAAOwS,EAAO8/C,GACnG,OAAI9/C,EAAQ,GAAKA,EAAQxS,EAAMoQ,SAAWkiD,EAAMliD,QAAUpQ,EAAMspN,OAAO0hvB,IAAe,GAAiC,MAA5B144B,EAAM5jC,OAAOlc,EAAQ,KAAsD,MAAvC8/C,EAAM5jC,OAAOlc,EAAQxS,EAAMoQ,SAA+C,MAA5BkiD,EAAM5jC,OAAOlc,EAAQ,KAAe8/C,EAAM5jC,OAAOlc,EAAQ,GAAG82M,OAAO,UAAY,EACnPtpN,EAAMoE,cAEXpE,EAAMmuH,OAAO,GAAGm7F,OAAO,cAAgB,EAClCtpN,EAEFA,EAAM0uB,OAAO,GAAGC,cAAgB3uB,EAAMmuH,OAAO,EACtD,IAyBI280B,IACFC,EArBJ,SAAsB9r8B,GAEpB,MAAoB,iBAANA,IAAsC,IAApBA,EAAEsF,QAAQ,IAC5C,CAGM0m8B,CADenr8B,EAgBEir8B,IAdnBn85B,QAAQ/lB,KAAK,oDACNqi7B,GAEFpr8B,GAaAir8B,CACT,EAvCA,IAAIC,EAAa,6EAmBbE,EAAW,oC,qCCxBf,IAAIvu7B,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACArK,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQunqB,2BAA6BvnqB,EAAQogF,QAAUpgF,EAAQ4qhB,YAAc5qhB,EAAQqs4B,SAAWrs4B,EAAQ8nqB,SAAW9nqB,EAAQwz4B,qCAAkC,EAC7J,IAAIk3D,EAAoC,EAAQ,OAChDrl8B,OAAOwY,eAAe7d,EAAS,kCAAmC,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOs77B,EAAkCl3D,+BAAiC,IACnL,IAAIm3D,EAA+B,EAAQ,OAC3Ctl8B,OAAOwY,eAAe7d,EAAS,6BAA8B,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOu77B,EAA6BpjS,0BAA4B,IACpK,IAAIE,EAAU,EAAQ,OACtBpiqB,OAAOwY,eAAe7d,EAAS,WAAY,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOq4pB,EAAQK,QAAU,IAC3GziqB,OAAOwY,eAAe7d,EAAS,WAAY,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOq4pB,EAAQ4kO,QAAU,IAC3G,IAAId,EAAY,EAAQ,OACxBlm4B,OAAOwY,eAAe7d,EAAS,cAAe,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOm83B,EAAU3gX,WAAa,IACnH,IAAIggb,EAAY,EAAQ,OACxBvl8B,OAAOwY,eAAe7d,EAAS,UAAW,CAAEinC,YAAY,EAAM73B,IAAK,WAAc,OAAOw77B,EAAUxq3B,OAAS,IACrF,oBAAX19E,SACPA,OAAOmo8B,OAASno8B,OAAOmo8B,QAAU,CAAC,EAClCno8B,OAAOmo8B,OAAOC,gBAAkB5u7B,EAASA,EAAS,CAAC,EAAGxZ,OAAOmo8B,OAAOC,iBAAkB,CAAEt3D,gCAAiCk3D,EAAkCl3D,gCAAiC1rO,SAAUL,EAAQK,SAAUukO,SAAU5kO,EAAQ4kO,SAAUzhX,YAAa2gX,EAAU3gX,YAAaxqc,QAASwq3B,EAAUxq3B,QAASmnlB,2BAA4BojS,EAA6BpjS,6B,+BC1BjX,IAAI3rpB,EAAO,EAAQ,OACfggG,EAAc,EAAQ,OACtB2uH,EAAgC,EAAQ,OACxC7tH,EAAW,EAAQ,OACnBlxF,EAAW,EAAQ,OACnB2jT,EAAW,EAAQ,OACnB5sU,EAAW,EAAQ,KACnBioO,EAAyB,EAAQ,OACjC3tH,EAAY,EAAQ,OACpBq/Z,EAAqB,EAAQ,OAC7BE,EAAiB,EAAQ,OACzB1xS,EAAa,EAAQ,OAErB6hN,EAAgB3wU,EAAY,GAAG93G,SAGnCymO,EAA8B,QAAS,SAAU6uB,EAAOutR,EAAa/7S,GACnE,MAAO,CAGL,SAAeC,GACb,IAAIx0M,EAAIm0M,EAAuBjvN,MAC3Bm2G,EAAUlmG,EAASq/M,GAAUhuH,EAAUguH,EAAQuuB,QAAS/mP,EAC5D,OAAOq/G,EAAU91G,EAAK81G,EAASm5G,EAAQx0M,GAAK,IAAIgX,OAAOw9L,GAAQuuB,GAAO72P,EAAS8zB,GACjF,EAGA,SAAUh3B,GACR,IAAI2tN,EAAKtwG,EAASnhG,MACd2a,EAAI3zB,EAASlD,GACbsgD,EAAMirL,EAAgB+7S,EAAa35T,EAAI92L,GAE3C,GAAIypB,EAAI5iC,KAAM,OAAO4iC,EAAIz+C,MAEzB,IAAIi/H,EAAQ59H,EAAS65gB,EAAepvT,IAEpC,IAAmC,IAA/Bu/N,EAAcpsT,EAAO,KAAa,OAAOuqG,EAAW1d,EAAI92L,GAE5D,IAAI4mf,GAA6C,IAA/BvwF,EAAcpsT,EAAO,KACvC6sF,EAAG/vC,UAAY,EAIf,IAHA,IAEIvuK,EAFA2lB,EAAI,GACJjY,EAAI,EAEgC,QAAhC1N,EAASg8N,EAAW1d,EAAI92L,KAAc,CAC5C,IAAI606B,EAAWxo8B,EAASmM,EAAO,IAC/B2lB,EAAEjY,GAAK2u7B,EACU,KAAbA,IAAiB/9uB,EAAG/vC,UAAYi/V,EAAmBhmf,EAAGi5S,EAASniH,EAAG/vC,WAAY6/V,IAClF1ggB,GACF,CACA,OAAa,IAANA,EAAU,KAAOiY,CAC1B,EAEJ,E,oBCrDsE4oE,EAAOj9F,QAA6K,SAASO,GAAG,SAAS4b,EAAEvb,GAAG,GAAGwb,EAAExb,GAAG,OAAOwb,EAAExb,GAAGZ,QAAQ,IAAIs1B,EAAElZ,EAAExb,GAAG,CAACA,EAAEA,EAAEmzB,GAAE,EAAG/zB,QAAQ,CAAC,GAAG,OAAOO,EAAEK,GAAGgb,KAAK0Z,EAAEt1B,QAAQs1B,EAAEA,EAAEt1B,QAAQmc,GAAGmZ,EAAEvB,GAAE,EAAGuB,EAAEt1B,OAAO,CAAC,IAAIoc,EAAE,CAAC,EAAE,OAAOD,EAAEzd,EAAE6B,EAAE4b,EAAEhb,EAAEib,EAAED,EAAErd,EAAE,SAASyB,EAAE6b,EAAExb,GAAGub,EAAE+iE,EAAE3+E,EAAE6b,IAAI/W,OAAOwY,eAAetd,EAAE6b,EAAE,CAACo2B,cAAa,EAAGvL,YAAW,EAAG73B,IAAIxO,GAAG,EAAEub,EAAEC,EAAE,SAAS7b,GAAG,IAAI6b,EAAE7b,GAAGA,EAAEu9F,WAAW,WAAW,OAAOv9F,EAAEw9F,OAAO,EAAE,WAAW,OAAOx9F,CAAC,EAAE,OAAO4b,EAAErd,EAAEsd,EAAE,IAAIA,GAAGA,CAAC,EAAED,EAAE+iE,EAAE,SAAS3+E,EAAE4b,GAAG,OAAO9W,OAAOsW,UAAUxU,eAAeyU,KAAKrb,EAAE4b,EAAE,EAAEA,EAAET,EAAE,GAAGS,EAAEA,EAAE3d,EAAE,EAAE,CAAhd,CAAkd,CAAC,SAAS+B,EAAE4b,EAAEC,GAAG,aAAa,SAASxb,EAAEL,EAAE4b,EAAEC,GAAG,OAAOD,KAAK5b,EAAE8E,OAAOwY,eAAetd,EAAE4b,EAAE,CAACjb,MAAMkb,EAAE6qB,YAAW,EAAGuL,cAAa,EAAGxL,UAAS,IAAKzmC,EAAE4b,GAAGC,EAAE7b,CAAC,CAAC6b,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAO+iE,CAAC,GAAG9iE,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAOhH,CAAC,GAAGiH,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAO8iF,CAAC,GAAG7iF,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAOhb,CAAC,GAAGib,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAO3d,CAAC,GAAG4d,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAOc,CAAC,GAAG,IAAIqY,EAAE4pD,EAAE,CAAC,OAAO,eAAe/pE,EAAE,CAAC617B,KAAK,OAAO17rB,YAAY,eAAerwK,EAAE,CAAC,MAAM,OAAO99F,EAAE,CAAC8p8B,IAAI,MAAMC,IAAI,OAAO1s8B,GAAQoC,EAAL00B,EAAE,CAAC,EAAM,MAAM,cAAc10B,EAAE00B,EAAE,MAAM,aAAaA,GAAGrY,EAAE,CAACo5M,OAAM,EAAGC,OAAM,EAAG,EAAE,SAAS/1N,EAAE4b,EAAEC,GAAG7b,EAAEP,QAAQoc,EAAE,EAAE,EAAE,SAAS7b,EAAE4b,EAAEC,GAAG,aAA2G/W,OAAOwY,eAAe1B,EAAE,aAAa,CAACjb,OAAM,IAAKkb,EAAEtd,EAAEqd,EAAE,eAAe,WAAW,OAAO3d,CAAC,GAAG4d,EAAEtd,EAAEqd,EAAE,cAAc,WAAW,OAAOc,CAAC,GAAG,IAAIqY,EAAElZ,EAAE,GAAG8iE,EAAE9iE,EAAE,GAAGjH,EAAE,WAAW,SAAS5U,EAAEA,EAAE4b,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAIxb,EAAEub,EAAEC,GAAGxb,EAAEqmC,WAAWrmC,EAAEqmC,aAAY,EAAGrmC,EAAE4xC,cAAa,EAAG,UAAU5xC,IAAIA,EAAEomC,UAAS,GAAI3hC,OAAOwY,eAAetd,EAAEK,EAAEmF,IAAInF,EAAE,CAAC,CAAC,OAAO,SAASub,EAAEC,EAAExb,GAAG,OAAOwb,GAAG7b,EAAE4b,EAAER,UAAUS,GAAGxb,GAAGL,EAAE4b,EAAEvb,GAAGub,CAAC,CAAC,CAA/O,GAAmP8iF,EAAE3pE,EAAEngB,EAAEg27B,YAAYF,IAAI9p8B,EAAE,WAAW,SAASZ,EAAE4b,IAAzhB,SAAW5b,EAAE4b,GAAG,KAAK5b,aAAa4b,GAAG,MAAM,IAAIN,UAAU,oCAAoC,EAA+bjb,CAAE2a,KAAKhb,GAAGgb,KAAK6v7B,aAAajv7B,EAAEZ,KAAKs3M,OAAO,KAAKt3M,KAAK8v7B,yBAAyB,EAAE9v7B,KAAKghN,SAAS,KAAKhhN,KAAK+v7B,UAAUh26B,EAAEngB,EAAEo27B,eAAehw7B,KAAKstN,aAAavzM,EAAEngB,EAAEq27B,0BAA0B,CAAC,OAAOr27B,EAAE5U,EAAE,CAAC,CAACwF,IAAI,mBAAmB7E,MAAM,SAASX,EAAE4b,GAAG,IAAIC,EAAEb,KAAK,OAAO,IAAIrJ,QAAQ,SAAStR,EAAEs+E,GAAG,IAAI/pE,EAAEmgB,EAAEngB,EAAEs27B,oBAAoBlr8B,EAAE4b,GAAGC,EAAEysN,aAAasmK,aAAah6X,GAAG/C,KAAK,SAAS7R,GAAG6b,EAAEsv7B,WAAWnr8B,GAAGK,EAAEL,EAAE,GAAG6oO,MAAM,SAAS7oO,GAAG2+E,EAAE3+E,EAAE,EAAE,EAAE,GAAG,CAACwF,IAAI,gCAAgC7E,MAAM,SAASX,GAAG,IAAI4b,EAAEZ,KAAKa,EAAEkZ,EAAEngB,EAAEw27B,4BAA4Bpr8B,EAAEgb,KAAK8v7B,0BAA0B,GAAG,MAAMjv7B,EAAE,CAAU,OAAOb,KAAKqw7B,iBAAiBrr8B,EAAhC,CAAC,EAAmC,CAAC,OAAO,IAAI2R,QAAQ,SAAStR,EAAE00B,GAAGnZ,EAAE0sN,aAAasmK,aAAa/yX,GAAGhK,KAAK,SAAS7R,GAAG4b,EAAEuv7B,WAAWnr8B,GAAGK,EAAEL,EAAE,GAAG6oO,MAAM,SAAShtN,GAAG4G,WAAW,WAAW7G,EAAEkv7B,0BAA0B,EAAElv7B,EAAE0v7B,8BAA8Btr8B,GAAG6oO,MAAM,WAAW9zM,EAAElZ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAACrW,IAAI,eAAe7E,MAAM,SAASX,GAAG,GAAG,cAAcgb,KAAK6v7B,aAAa7v7B,KAAK6v7B,aAAa1i7B,UAAUnoB,MAAM,CAAC,IAAI4b,EAAEZ,KAAK+v7B,UAAUzm2B,gBAAgBtkG,GAAGgb,KAAK6v7B,aAAaxo1B,IAAIzmG,CAAC,CAAC,GAAG,CAACpW,IAAI,eAAe7E,MAAM,SAASX,GAAGgb,KAAKghN,SAAS,KAAK,IAAIpgN,EAAE5b,GAAGA,EAAE4yU,UAAU5yU,EAAE4yU,YAAY,GAAGh3T,EAAExM,OAAO,GAAGwM,EAAE,GAAGksN,cAAc9sN,KAAKghN,SAASpgN,EAAE,GAAGksN,cAAc,GAAG,CAACtiO,IAAI,aAAa7E,MAAM,SAASX,GAAGgb,KAAKs3M,OAAOtyN,EAAEgb,KAAKuw7B,aAAavr8B,GAAGgb,KAAKww7B,aAAaxr8B,EAAE,GAAG,CAACwF,IAAI,oBAAoB7E,MAAM,WAAW,OAAOqa,KAAKghN,QAAQ,GAAG,CAACx2N,IAAI,cAAc7E,MAAM,SAASX,EAAE4b,GAAG,IAAIC,EAAEb,KAAK,OAAOA,KAAKyw7B,aAAa557B,KAAK,WAAW,GAAGg3N,MAAM,WAAW,GAAGh3N,KAAK,WAAW,OAAOgK,EAAEwv7B,iBAAiBrr8B,EAAE4b,EAAE,EAAE,GAAG,CAACpW,IAAI,2BAA2B7E,MAAM,WAAW,IAAIX,EAAEgb,KAAKY,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE,OAAO6L,KAAKyw7B,aAAa557B,KAAK,WAAW,GAAGg3N,MAAM,WAAW,GAAGh3N,KAAK,WAAW,OAAO7R,EAAEsr8B,8BAA8B1v7B,EAAE,EAAE,GAAG,CAACpW,IAAI,aAAa7E,MAAM,SAASX,GAAG,IAAI4b,EAAE,CAAC8v7B,gBAAW,IAAS1r8B,EAAE0r8B,WAAW/s3B,EAAE/9E,EAAEZ,EAAE0r8B,WAAWC,eAAU,IAAS3r8B,EAAE2r8B,UAAUjt2B,EAAE1+F,EAAE2r8B,UAAUr1sB,sBAAiB,IAASt2P,EAAEs2P,iBAAiB33K,EAAE/pE,EAAE5U,EAAEs2P,iBAAiBs1sB,mBAAc,IAAS5r8B,EAAE4r8B,cAAcjt3B,EAAE9pE,EAAE7U,EAAE4r8B,eAAe,OAAO726B,EAAEngB,EAAEi37B,WAAW7w7B,KAAK6v7B,aAAajv7B,EAAE,GAAG,CAACpW,IAAI,aAAa7E,MAAM,WAAW,IAAIX,EAAEgb,KAAK,OAAO,IAAIrJ,QAAQ,SAASiK,EAAEC,GAAG7b,EAAEsyN,SAAStyN,EAAEsyN,OAAOsgH,YAAY5lU,QAAQ,SAAShN,GAAGA,EAAE0gB,MAAM,GAAG1gB,EAAE6q8B,aAAaxo1B,IAAI,GAAGriH,EAAEsyN,OAAO,KAAKtyN,EAAEur8B,aAAa,MAAM3v7B,KAAKC,EAAE0G,MAAM,sBAAsB,EAAE,KAAKviB,CAAC,CAA7xE,GAAiyE/B,EAAE82B,EAAEngB,EAAEk37B,aAAapv7B,EAAEqY,EAAEngB,EAAEg27B,YAAYhv7B,EAAE4hF,QAAQ58F,CAAC,EAAE,SAASZ,EAAE4b,EAAEC,GAAG,aAA2G,IAAIkZ,EAAElZ,EAAE,GAAG8iE,EAAE9iE,EAAE,GAAGjH,EAAE,WAAW,SAAS5U,EAAEA,EAAE4b,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAExM,OAAOyM,IAAI,CAAC,IAAIxb,EAAEub,EAAEC,GAAGxb,EAAEqmC,WAAWrmC,EAAEqmC,aAAY,EAAGrmC,EAAE4xC,cAAa,EAAG,UAAU5xC,IAAIA,EAAEomC,UAAS,GAAI3hC,OAAOwY,eAAetd,EAAEK,EAAEmF,IAAInF,EAAE,CAAC,CAAC,OAAO,SAASub,EAAEC,EAAExb,GAAG,OAAOwb,GAAG7b,EAAE4b,EAAER,UAAUS,GAAGxb,GAAGL,EAAE4b,EAAEvb,GAAGub,CAAC,CAAC,CAA/O,GAAmP8iF,EAAE,WAAW,SAAS1+F,KAA3X,SAAWA,EAAE4b,GAAG,KAAK5b,aAAa4b,GAAG,MAAM,IAAIN,UAAU,oCAAoC,CAAkSjb,CAAE2a,KAAKhb,EAAE,CAAC,OAAO4U,EAAE5U,EAAE,KAAK,CAAC,CAACwF,IAAI,aAAa7E,MAAM,SAASX,EAAE4b,GAAG,IAAIC,EAAED,EAAE8v7B,WAAWrr8B,EAAEub,EAAE+v7B,UAAUht3B,EAAE/iE,EAAE06O,iBAAiB1hP,EAAEgH,EAAEgw7B,cAAclt2B,EAAE1+F,EAAE6wwB,WAAWjwwB,EAAEZ,EAAE86sB,YAAY78sB,EAAE6G,OAAOiwB,EAAElgB,EAAT/P,CAAY45F,EAAE99F,EAAEib,GAAGa,EAAEze,EAAE6pqB,WAAWvpqB,EAAEN,EAAE8pqB,YAAYv0oB,EAAE/vB,SAASskB,cAAc,UAAUyL,EAAE9xB,MAAMgb,EAAE8W,EAAE5xB,OAAOrD,EAAE,IAAIoe,EAAE6W,EAAE8U,WAAW,MAAM,OAAO1zB,GAAG+H,EAAEw7B,cAAc,EAAE,EAAE,EAAE,EAAE3kB,EAAE9xB,MAAM,GAAGib,EAAEusB,UAAUlpC,EAAE,EAAE,EAAE0c,EAAEne,GAAGuG,OAAOiwB,EAAEngB,EAAT9P,CAAY0uB,EAAEnzB,EAAEs+E,EAAE,GAAG,CAACn5E,IAAI,eAAe7E,MAAM,WAAW,OAAOwB,OAAOkiG,KAAKliG,OAAOg7kB,WAAWh7kB,OAAO4p8B,QAAQ5p8B,OAAO6p8B,KAAK,GAAG,CAACxm8B,IAAI,2BAA2B7E,MAAM,WAAW,IAAIX,EAAE,KAAK4b,KAAKtS,UAAUg/N,eAAeh/N,UAAUg/N,aAAasmK,cAAc/yX,KAAKvS,UAAU2i8B,kBAAkB3i8B,UAAU4i8B,oBAAoB,GAAGtw7B,EAAE5b,EAAEsJ,UAAUg/N,kBAAkB,GAAGzsN,EAAE,CAAC,IAAIxb,EAAEiJ,UAAU2i8B,iBAAiB3i8B,UAAU4i8B,mBAAmBn36B,EAAE,CAAC65W,aAAa,SAAS5uY,GAAG,OAAO,IAAI2R,QAAQ,SAASiK,EAAEC,GAAGxb,EAAEgb,KAAK/R,UAAUtJ,EAAE4b,EAAEC,EAAE,EAAE,GAAG7b,EAAE8E,OAAOC,OAAO1E,EAAE00B,EAAE,CAAC,OAAO/0B,CAAC,GAAG,CAACwF,IAAI,wBAAwB7E,MAAM,WAAW,OAAOX,EAAEir8B,2BAA2BkB,0BAA0BC,UAAU,GAAG,CAAC5m8B,IAAI,sBAAsB7E,MAAM,SAASX,EAAE4b,GAAG,IAAIC,EAAE,CAACi6M,OAAM,EAAGC,MAAM,CAAC,GAAG,GAAGjxN,OAAOiwB,EAAEn0B,EAATkE,CAAY9E,EAAE4b,GAAG,OAAO+iE,EAAEpgF,EAAE,IAAI8B,EAAEiJ,UAAUg/N,aAAa6juB,0BAA0B,OAAO9r8B,EAAEqB,OAAOrB,EAAEuB,QAAQvB,EAAE+r8B,YAAYps8B,GAAG2+E,EAAE3+E,EAAE2wC,SAAS3wC,KAAK6b,EAAEk6M,MAAMq2uB,WAAWps8B,GAAG4b,GAAGA,EAAEla,QAAQma,EAAEk6M,MAAMr0N,MAAMka,EAAEla,OAAOka,GAAGA,EAAEha,SAASia,EAAEk6M,MAAMn0N,OAAOga,EAAEha,QAAQia,IAAI+xB,QAAQ3oB,MAAM,wDAAwD05D,EAAEpgF,EAAE,GAAG,CAACiH,IAAI,8BAA8B7E,MAAM,WAAW,IAAIib,EAAEzM,UAAUC,OAAO,QAAG,IAASD,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAE0M,EAAE1M,UAAU,GAAG9O,EAAEL,EAAEkr8B,oBAAoBtv7B,GAAGmZ,EAAE10B,EAAE01N,MAAMq2uB,WAAWzt3B,EAAE,CAAC,CAACj9E,MAAM,CAACgD,IAAI,KAAK8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,KAAK8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,KAAK8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,IAAI,CAACrzB,MAAM,CAACgD,IAAI,MAAM8kO,MAAM,CAAC4iuB,WAAWr36B,KAAK,GAAGlZ,GAAG8iE,EAAEvvE,OAAO,OAAO,KAAK,IAAIwF,EAAE+pE,EAAE7oE,MAAM,GAAG+F,GAAG,OAAOxb,EAAE01N,MAAMs2uB,SAASz37B,EAAEvU,CAAC,GAAG,CAACmF,IAAI,eAAeqJ,IAAI,WAAW,OAAO8vE,EAAE/pE,CAAC,GAAG,CAACpP,IAAI,cAAcqJ,IAAI,WAAW,OAAO8vE,EAAE/9E,CAAC,KAAKZ,CAAC,CAAtnE,GAA0nE4b,EAAEhH,EAAE8pF,CAAC,EAAE,SAAS1+F,EAAE4b,EAAEC,GAAG,aAAiO,SAASkZ,EAAE/0B,EAAE4b,GAAG,IAAIC,EAAE,CAAC,EAAE,KAA7O,SAAW7b,EAAE4b,GAAG,KAAKA,GAAG,GAAGA,GAAG,GAAG,MAAM,IAAI2G,MAAM3G,EAAE,wDAAwD,IAAI3d,EAAEye,EAAEi0B,SAAS3wC,GAAG,MAAM,IAAIuiB,MAAMviB,EAAE,0CAA0C/B,EAAEye,EAAExD,KAAK,MAAe,EAA8B7Y,CAAEL,EAAE4b,GAAGC,EAAE8v7B,UAAU3r8B,EAAE6b,EAAEy6O,iBAAiB16O,CAAC,CAAC,MAAM5b,GAAG4tC,QAAQ3oB,MAAMjlB,GAAG4tC,QAAQ3oB,MAAM,oBAAoBhnB,EAAE2C,EAAE8p8B,IAAI,YAAY7u7B,EAAE8v7B,UAAU1t8B,EAAE2C,EAAE8p8B,IAAI7u7B,EAAEy6O,iBAAiB,IAAI,CAAC,OAAOz6O,CAAC,CAAqXD,EAAE/G,EAAtX,SAAW7U,EAAE4b,EAAEC,GAAG,IAAIxb,EAAEL,EAAE2rB,WAAW9P,GAAG,MAAM,CAACispB,WAAWznqB,EAAE0nqB,YAAYnspB,GAAG5b,EAAEK,GAAG,EAA0Sub,EAAEhH,EAA3S,SAAW5U,EAAE4b,EAAEC,GAAG,OAAOkZ,EAAEnZ,EAAEC,GAAG8v7B,YAAY1t8B,EAAE2C,EAAE+p8B,IAAI9u7B,EAAE7b,EAAEo8E,UAAUn+E,EAAE4W,EAAE5W,EAAE2C,EAAE+p8B,KAAK9u7B,GAAG7b,EAAEo8E,UAAUn+E,EAAE4W,EAAE5W,EAAE2C,EAAE+p8B,MAAM3q8B,EAAEo8E,UAAUn+E,EAAE4W,EAAE+G,GAAG,EAAgLA,EAAEhb,EAAnD,SAAWZ,EAAE4b,GAAG,QAAQ5b,GAAG4b,IAAzJ,SAAW5b,GAAG,GAAG,iBAAY,IAAqBA,EAAE,YAAY0c,EAAE1c,IAAI,IAAI,IAAI4b,KAAK5b,EAAE,GAAGA,EAAE4G,eAAegV,GAAG,OAAM,EAAG,OAAM,CAAE,CAAgC8iF,CAAE9iF,GAAG,EAAmB,IAAI3d,EAAE4d,EAAE,GAAGa,EAAE,mBAAoBld,QAAQ,iBAAkBA,OAAO0d,SAAS,SAASld,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAoBR,QAAQQ,EAAEyb,cAAcjc,QAAQQ,IAAIR,OAAO4b,UAAU,gBAAgBpb,CAAC,CAAC,EAAE,SAASA,EAAE4b,EAAEC,GAAG,aAAaA,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAOvb,CAAC,GAAGwb,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAOmZ,CAAC,GAAGlZ,EAAEtd,EAAEqd,EAAE,IAAI,WAAW,OAAO+iE,CAAC,GAAG,IAAIt+E,EAAE,EAAE00B,EAAE,KAAK4pD,GAAE,CAAE,G,gDCA1yP,IAAI9uE,EAAiB,CAAC,EACf,SAASy87B,IACd,OAAOz87B,CACT,C,kBCHA,IAAI087B,EAAmB,EAAQ,OAe/B7v2B,EAAOj9F,QALP,SAAyBq8G,EAAYC,GACnC,IAAIp8G,EAASo8G,EAASww1B,EAAiBzw1B,EAAWn8G,QAAUm8G,EAAWn8G,OACvE,OAAO,IAAIm8G,EAAWrgG,YAAY9b,EAAQm8G,EAAWE,WAAYF,EAAW1sG,OAC9E,C,yBCqCAstF,EAAOj9F,QAhCP,SAAuB4vY,EAAc/8K,EAAQ35I,GACzCA,EAA6B,iBAAZA,EAAuBA,EAAU,IAClD,IAAIpsD,EAAS8iX,EAAam9jB,wBAAwBl6uB,GAC9Cm6uB,EAAWp9jB,EAAaq9jB,iBAC5BD,EAASE,QAAU,KACnBpg7B,EAAOnL,QAAQqr7B,GACf,IAAIjlmB,EAAU,IAAInnQ,WAAWos2B,EAASE,SAClCC,GAAiB,EAiBrB,OAhBAnq7B,WAAW,WAAcmq7B,GAAiB,CAAM,EAAGj03B,GAKnD,SAASk03B,IACL,OAAID,EACOj77B,QAAQC,SAAQ,IAE3B667B,EAASK,sBAAsBtlmB,GAGxBA,EAAQl6V,KAAK,SAAU+3D,GAAU,OAAkB,MAAXA,GAA6B,IAAXA,CAAc,GACzE1zD,QAAQC,SAAQ,GAjC9B,SAAe+mE,GAEX,OADAA,EAA6B,iBAAZA,EAAuBA,EAAU,EAC3C,IAAIhnE,QAAQ,SAAUC,GAAW,OAAO6Q,WAAW7Q,EAAS+mE,EAAU,EACjF,CA+Bcl6B,GAAQ5sC,KAAKg77B,GACvB,CACOA,GAAkBh77B,KAAK,SAAU6mP,GAEpC,OADAnsO,EAAOzG,aACA4yO,CACX,EAAG,SAAUzzO,GAET,MADAsH,EAAOzG,aACDb,CACV,EACJ,C,yBCXAy3E,EAAOj9F,QA/BH,SAA0B6nB,GACtBxiB,OAAO0hC,iBAAiBxrB,KAAM,CAC1BsM,MAAO,CACHof,YAAY,EACZ/lC,MAAO2mB,EACPmf,UAAU,IAGtB,C,+BCdJ3hC,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAKtD,IAYI88G,EAZAd,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChBnU,EAAe,EAAQ,OACvBu9N,EAAiB,EAAQ,OACzB2vQ,EAAc,EAAQ,OAEtBhvd,EAASh2H,OAAOsW,UAAUxU,gBAO9B,SAAW62G,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,QACpC,CAJD,CAIGA,EAAUh+G,EAAQg+G,UAAYh+G,EAAQg+G,QAAU,CAAC,IAuDpD,IAAID,EAAuB,WACvB,SAASA,EAAMzkG,EAAIiS,EAAMjR,EAAQkqF,EAAUqtB,GAEvCtmG,EA7CR,SAAiBmzB,EAAK4u5B,EAAS9o2B,EAAUlrF,EAAIkkG,GACzC,GAAI9+D,EAAInzB,MAAQ+h7B,GAA4B,WAAjBA,EAAQx+7B,KAC/B,MAAM,IAAIgU,MAAM,UAAYxJ,EAAK,kCACrC,GAAIolC,EAAInzB,MAAQ+h7B,GAA4B,WAAjBA,EAAQx+7B,MAAqB0uG,EAAWjyF,KAAKmzB,EAAInzB,MACxE,OAAOiyF,EAAWjyF,KAAKmzB,EAAInzB,MAC/B,GAAI+h7B,EACA,OAAOA,EACX,IAAK5u5B,EAAInzB,KAAM,CACX,IAAIA,EAAOi5E,IAAawZ,EAAQC,OAAS,MACrCzZ,IAAawZ,EAAQG,KAAO,OACxB3Z,IAAawZ,EAAQK,OAAS,QAAU,SAChD,OAAOb,EAAWjyF,KAAKA,EAC3B,CACA,OAAOmzB,EAAInzB,gBAAgB8+jB,EAAYG,UAAY9riB,EAAInzB,KAAOiyF,EAAWjyF,KAAKmzB,EAAInzB,KACtF,CA+BeipZ,CADPl6Z,EAvDR,SAAyBokC,GAGrB,SAAS6u5B,IACL,OAAO7u5B,EAAIx9C,KACf,CACA,OALAw9C,EAZc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWlyC,OAAO6uH,EAAOpkE,KAAKvY,GAAO,CAAC,IAAI/uC,MAC1F,CAUU697B,CAAY9u5B,IAAQ,CAAEx9C,MAAOw9C,IAASA,EAC5C6u5B,EAAmC,aAAI,EAIhCrw1B,EAASqB,OAAO7/D,EAAK,CACxB+u5B,KAAMtw1B,EAAak+Z,aAAa38d,EAAIx9C,OAASw9C,EAAIx9C,MAAQqs8B,GAEjE,CA8CiBG,CAAgBpz7B,GACFiR,EAAMi5E,EAAUlrF,EAAIu4G,EAAkBrU,YAC7D,IAUQmw1B,EACAC,EAXJC,GAUIF,EAAgB,CAAE/96B,MAAQ40E,IAAawZ,EAAQK,QAAS,QACxDuv1B,EAAyBt07B,EAAG/Z,MAAM,SAAW,CAAEqwB,OAAO,GAAS,CAAC,EAC7DstF,EAASqB,OAAOov1B,EAAeC,EAAwBtz7B,GAAQsV,OAX1ErE,EAAOsi7B,EAAYti7B,EAAKy6oB,SAAS6nS,EAAWrp2B,IAAawZ,EAAQK,QAAU9yF,EAC3E,IAAIknT,OAA8BpgU,IAAjBiI,EAAOpZ,OAAuBsjG,IAAawZ,EAAQK,OAChE+T,EAAUjV,EAAawB,UAAUrkG,EAAO83G,WAAa93G,EAAO83G,UAAY7mG,EAAK6mG,QAC7EtoE,EAAMqzD,EAAawB,UAAUrkG,EAAOwvC,OAASxvC,EAAOwvC,MAAQv+B,EAAKu+B,IACjEgk5B,EAhCZ,SAAyBxz7B,EAAQm4T,EAAYs7nB,GACzC,IAAID,EAASxz7B,EAAOwz7B,OACpB,IAAKr7nB,IAAyB,IAAXq7nB,EACf,OAAO,EACX,IAAK3w1B,EAAawB,UAAUmv1B,IAAqB,MAAVA,EACnC,OAAOC,EACX,IAAe,IAAXD,GAAmB3w1B,EAAa2B,SAASgv1B,GACzC,OAAOA,EACX,MAAM,IAAIhr7B,MAAM,2BAA6Bgr7B,EAAS,sDAC1D,CAuBqBE,CAAgB1z7B,EAAQm4T,EAAY5gN,EAAkBhT,uBAC/Dv/G,EAtBZ,SAAoBgb,EAAQuz7B,EAAWp7nB,EAAYq7nB,GAC/C,IAAIC,EAAgB,CAChB,CAAE3t6B,KAAM,GAAID,GAAKsyS,GAAco7nB,OAAYx77B,EAAY,IACvD,CAAE+tB,KAAM,KAAMD,GAAKsyS,GAAco7nB,OAAYx77B,EAAY,KAEzD/S,EAAU69G,EAAa7xF,QAAQhR,EAAOhb,SAAWgb,EAAOhb,QAAU,GAClE69G,EAAa2B,SAASgv1B,IACtBxu8B,EAAQ+P,KAAK,CAAE+wB,KAAM0t6B,EAAQ3t6B,QAAI9tB,IACrC,IAAI477B,EAAiB/w1B,EAAS5uG,IAAIhP,EAASgyH,EAAMzjF,KAAK,SACtD,OAAOqvE,EAAS1wG,OAAOuh8B,EAAe,SAAUx/6B,GAAQ,OAA8C,IAAvC0/6B,EAAenq8B,QAAQyqB,EAAK6R,KAAc,GAAG72B,OAAOjK,EACvH,CAYsB4u8B,CAAW5z7B,EAAQuz7B,EAAWp7nB,EAAYq7nB,GACpDp9tB,EAAUvzH,EAAawB,UAAUrkG,EAAOo2N,WAAap2N,EAAOo2N,UAAYnlN,EAAKmlN,QAOjFxzH,EAASqB,OAAOhjG,KAAM,CAAEjC,GAAIA,EAAIiS,KAAMA,EAAMi5E,SAAUA,EAAUiuO,WAAYA,EAAYrgN,QAASA,EAAStoE,IAAKA,EAAKgk5B,OAAQA,EAAQxu8B,QAASA,EAASoxO,QAASA,EAAS9gN,MAAOi+6B,EAAWvz7B,OAAQA,GACtM,CAmGA,OAlGAyjG,EAAM55E,OAAS,SAAUu3B,EAAQv3B,QACd,IAAXA,IAAqBA,EAAS,CAAC,GAEnC,IADA,IAAIutM,EAAc,CAAC,EACVx7N,EAAK,EAAGi47B,EAAWzy4B,EAAQxlD,EAAKi47B,EAASx+7B,OAAQuG,IAAM,CAC5D,IAAIq7N,EAAQ48tB,EAASj47B,GACrBw7N,EAAYH,EAAMj4N,IAAMi4N,EAAMrwO,MAAMijC,EAAOotM,EAAMj4N,IACrD,CACA,OAAOo4N,CACX,EAYA3zH,EAAM3nD,QAAU,SAAUsF,EAAQ0y4B,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,CAAC,QACrB,IAAZC,IAAsBA,EAAU,CAAC,GAC9B3y4B,EAAOlvD,OAAO,SAAU+kO,GAAS,OAAQA,EAAMhmN,KAAK+3M,OAAO8quB,EAAQ78tB,EAAMj4N,IAAK+07B,EAAQ98tB,EAAMj4N,IAAM,EAC7G,EAUAykG,EAAMulH,OAAS,SAAU5nK,EAAQ0y4B,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,CAAC,QACrB,IAAZC,IAAsBA,EAAU,CAAC,GACqB,IAAnDtw1B,EAAM3nD,QAAQsF,EAAQ0y4B,EAASC,GAAS1+7B,MACnD,EAEAouG,EAAM20N,UAAY,SAAUh3Q,EAAQv3B,GAEhC,YADe,IAAXA,IAAqBA,EAAS,CAAC,GAC5Bu3B,EAAOptD,IAAI,SAAUijO,GAAS,OAAOA,EAAMmhG,UAAUvuS,EAAOotM,EAAMj4N,IAAM,GAAGzT,OAAOq3G,EAAS240B,UAAU,EAChH,EACA930B,EAAMpiG,UAAU2y7B,eAAiB,SAAUpt8B,GACvC,OAAOqa,KAAKk3T,YAAcl3T,KAAKgQ,KAAK+3M,OAAO/nN,KAAKra,QAASA,EAC7D,EAKA68G,EAAMpiG,UAAUza,MAAQ,SAAUA,GAC9B,IAAIue,EAAQlE,KA0BZ,OADAra,EAR2B,SAAUgiC,GACjC,IAAK,IAAIhtB,EAAK,EAAG6I,EAAKU,EAAMngB,QAAS4W,EAAK6I,EAAGpP,OAAQuG,IAAM,CACvD,IAAI4nH,EAAQ/+G,EAAG7I,GACf,GAAI4nH,EAAM19F,OAAS8C,EACf,OAAO46F,EAAM39F,EACrB,CACA,OAAO+C,CACX,CACQqr6B,CAAqBrt8B,GACtBi8G,EAAaqyB,YAAYtuI,GAtBV,WAClB,GAAIue,EAAM+u7B,mBACN,OAAO/u7B,EAAM+u7B,mBAAmB3i7B,aACpC,IAAK6uT,EAAegC,SAASh7M,UACzB,MAAM,IAAI5+G,MAAM,+DACpB,IAAI+I,EAAe6uT,EAAegC,SAASh7M,UAAUm/G,OAAOphO,EAAMnF,OAAOmz7B,MACzE,GAAI5h7B,UAAwDpM,EAAM8L,KAAKi1G,GAAG30G,GACtE,MAAM,IAAI/I,MAAM,kBAAoB+I,EAAe,oBAAsBpM,EAAMnG,GAAK,sCAAwCmG,EAAM8L,KAAKzc,KAAO,KAIlJ,OAHI2Q,EAAMnF,OAAOmz7B,KAAkB,cAC/Bhu7B,EAAM+u7B,mBAAqB,CAAE3i7B,aAAcA,IAExCA,CACX,CAUyCk/V,GAAoBxvW,KAAKgQ,KAAK6jQ,WAAWluR,EACtF,EACA68G,EAAMpiG,UAAUurmB,SAAW,WACvB,OAAO3rmB,KAAKipF,WAAawZ,EAAQK,MACrC,EACAN,EAAMpiG,UAAU+2T,UAAY,SAAUxxU,GAElC,IAAKi8G,EAAaqyB,YAAYtuI,IAAoB,OAAVA,IAAmBqa,KAAKk3T,WAC5D,OAAO,EAEX,IAAIj4O,EAAaj/E,KAAKgQ,KAAK6jQ,WAAWluR,GACtC,IAAKqa,KAAKgQ,KAAKi1G,GAAGhmC,GACd,OAAO,EAEX,IAAI2M,EAAU5rF,KAAKgQ,KAAK+4E,OAAO9J,GAC/B,QAAS2iB,EAAa2B,SAAS3X,KAAa5rF,KAAKgQ,KAAKwhF,QAAQnsE,KAAKumE,GACvE,EACA4W,EAAMpiG,UAAUpZ,SAAW,WACvB,MAAO,UAAYgZ,KAAKjC,GAAK,IAAMiC,KAAKgQ,KAAO,aAAehQ,KAAKuy7B,OAAS,eAAiBvy7B,KAAKk3T,WAAa,GACnH,EACO10N,CACX,CAvH0B,GAwH1B/9G,EAAQ+9G,MAAQA,C,gDCnMhB,QAFkC,iBAAVue,QAAsBA,QAAUA,OAAOj3H,SAAWA,QAAUi3H,M,+BCApF,IAAI1gB,EAAc,EAAQ,OAGtBijqB,EAAetwwB,IAAIoN,UAEvBshF,EAAOj9F,QAAU,CAEfuO,IACAe,IAAKssG,EAAYijqB,EAAavvwB,KAC9BF,IAAKwsG,EAAYijqB,EAAazvwB,KAC9BF,IAAK0sG,EAAYijqB,EAAa3vwB,KAC9BivC,OAAQy9D,EAAYijqB,EAAqB,QACzCp+uB,MAAOo+uB,E,yBCFD,SAAWzixB,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJF,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,mDAAmDD,MAAM,KACtEE,SAAU,wDAAwDF,MAC9D,KAEJG,cAAe,2BAA2BH,MAAM,KAChDI,YAAa,2BAA2BJ,MAAM,KAE9CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACNC,EAAG,kBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,SACHC,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,gBAAiB,SAAUC,GAC7C,OAAOjD,EAAUiD,EACrB,EACJ,EACAC,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,MAAO,SAAUC,GACnC,OAAOlD,EAAUkD,EACrB,EACJ,EACAI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA7FyCC,CAAQ,EAAQ,O,+BCP1D,IAAIo3P,EAAsB,EAAQ,OAC9B30P,EAAW,EAAQ,KACnBioO,EAAyB,EAAQ,OAEjCo4B,EAAcC,WAIlB5lK,EAAOj9F,QAAU,SAAgBuzC,GAC/B,IAAIvlB,EAAMzrB,EAASioO,EAAuBjvN,OACtC7M,EAAS,GACT0N,EAAI86O,EAAoB3jN,GAC5B,GAAIn3B,EAAI,GAAKA,IAAMtb,IAAU,MAAM,IAAI8hQ,EAAY,+BACnD,KAAMxmP,EAAI,GAAIA,KAAO,KAAO4R,GAAOA,GAAc,EAAJ5R,IAAO1N,GAAUsf,GAC9D,OAAOtf,CACT,C,qCCfA,IACQ2M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACIsu6B,EAAiB,EAAQ,OACzB1v7B,EAAK,EAAQ,OAAiB2v7B,EAAyB3v7B,EAAG+6oB,gBAAiB60S,EAA2B5v7B,EAAGoI,kBAAmByn7B,EAA+B7v7B,EAAGi0T,sBAAuB67nB,EAAgB9v7B,EAAG65b,SACxMlpV,EAAO,EAAQ,OACfxwG,EAAK,EAAQ,OAAyB4v7B,EAAmC5v7B,EAAG4v7B,iCAAkClu7B,EAAoB1B,EAAG0B,kBAAmBmu7B,EAA8B7v7B,EAAG6v7B,4BAA6BC,EAA0B9v7B,EAAG8v7B,wBACnPxu7B,EAAK,EAAQ,OAAmByu7B,EAA0Bzu7B,EAAGyu7B,wBAAyBC,EAAuB1u7B,EAAG0u7B,qBAAsBC,EAAgC3u7B,EAAG2u7B,8BAA+BC,EAAa5u7B,EAAG4u7B,WAAYC,EAAmB7u7B,EAAG6u7B,iBAAkBC,EAAoB9u7B,EAAG8u7B,kBAAmBvouB,EAAmBvmN,EAAGumN,iBAAkBwouB,EAAuB/u7B,EAAG+u7B,qBAAsBC,EAAkBhv7B,EAAGgv7B,gBAAiBC,EAAsBjv7B,EAAGiv7B,oBAAqBC,EAAelv7B,EAAGkv7B,aACpfr7a,EAAiB,EAAQ,OACzB7ta,EAAK,EAAQ,OAAmCiwN,EAAkCjwN,EAAGiwN,gCAAiCE,EAAmCnwN,EAAGmwN,iCAC5JlwN,EAAK,EAAQ,OAAes8O,EAAiBt8O,EAAGs8O,eAAgBtB,EAAch7O,EAAGg7O,YAAa6B,EAA2B78O,EAAG68O,yBAA0BpB,EAAcz7O,EAAGy7O,YAAaz9O,EAAQgC,EAAGhC,MAC/Lkr1B,EAAS,EAAQ,OACjBC,EAA8B,EAAQ,OACtCC,EAAoB,EAAQ,OAC5BC,EAAqB,EAAQ,OAC7B17a,EAAe,EAAQ,OACvB11gB,EAAM,EAAQ,OACdsoN,EAAe,EAAQ,MACvB+ouB,EAAsB,EAAQ,OAC9BpjyB,EAAQj9C,EAAKu7G,eACbrmM,EAAW68T,IACXklU,EAAY,UAAUlpqB,KAAKmnC,GAC3BsoT,EAAqB,WAAVvgL,EACXwqS,EAAsB,YAAVxqS,EACZyqS,GAAqB,WAAVzqS,EACXrtJ,GAAa,EAqBbmyG,GAAS,CACTnoB,KAAM,CACF,SACA,YAEJ0m2B,SAAU,CACN,SACA,QAEJtm2B,OAAQ,IAURovb,GAAkC,SAAUv5gB,GAS5C,SAASu5gB,EAAiBx/gB,EAAI0mX,EAAoBk5J,EAAiB/thB,GAC/D,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAM,OAAQk2G,KAAWl2G,KAmB7CwzgB,EAAgBkhb,GAlBpB9k8B,EAAU9F,OAAOC,OAAO,CACpB4q8B,YAAY,EACZj1a,2BAA4B,KAC5B33L,yBAA0BA,EAC1B78U,WAAY,GACZu8U,SAAUpiV,EACVu4gB,aAAc,CAAC,EACfq2a,gBAAiBA,EACjB76a,eAA8C,IAA9Bo6a,EAChBU,oBAAqBA,EACrBC,aAAcA,EACdtI,QAASqH,EACTx7L,qBAAsB28L,EACtB91S,gBAAiB40S,EACjBvn7B,kBAAmBwn7B,EACnB37nB,sBAAuB47nB,EACvBr8zB,QAAS8hZ,GACVlphB,IAEC2kb,EAAY/sF,EAAe53V,EAAQ63V,UACnC77U,EAAoBhc,EAAQgc,mBACL,IAAvBhc,EAAQ+k8B,aACR/k8B,EAAQgl8B,0BAA4Bhl8B,EAAQgl8B,2BAA6B,CAAC,EAC1Ehl8B,EAAQgl8B,0BAA0B5jrB,SAAWphR,EAAQgl8B,0BAA0B5jrB,UAAY,GAC3FphR,EAAQgl8B,0BAA0B5jrB,SAASl9Q,KAAK,CAAE+g8B,UAAU,KAEhE,IAAI5u8B,EAAM2J,EAAQ3J,IAAM2J,EAAQ3J,IAAImyN,UAAU,SAAUl0M,GAAS,IAAIf,EAAI,SAAUe,EAAOqwa,EAAW3kb,EAAQ4kb,YACzGrua,EAAiB,IAAIyF,EAAkB4ngB,EAAe5jhB,EAAQgl8B,2BAC9Dhl8B,EAAQ8vhB,4BACRv5gB,EAAeoG,SAAS3c,EAAQ8vhB,4BAEpC51hB,OAAO0hC,iBAAiBtnB,EAAO,CAC3B4w7B,6BAA8B,CAC1Bnv8B,MAAO,IAAIqN,IACXy4B,UAAU,GAEdsp6B,cAAe,CACXpv8B,MAAO,IAAIqN,KAEfgi8B,oBAAqB,CACjBrv8B,MAAO,IAAIuN,KAEf+h8B,qBAAsB,CAClBxp6B,UAAU,EACV9lC,MAAO,GAEXuv8B,4BAA6B,CACzBzp6B,UAAU,EACV9lC,OAAO,GAEXwv8B,YAAa,CACTxv8B,MAAOiK,EAAQ+k8B,YAEnBr2a,oBAAqB,CACjB34hB,MAAO8+X,GAEX2wkB,0BAA2B,CACvBzv8B,MAAOiK,EAAQm4V,0BAEnBstmB,oBAAqB,CACjB1v8B,OAAO,EACP8lC,UAAU,GAEd6p6B,qBAAsB,CAClB3v8B,MAAO,IAAIiK,EAAQonI,QAAQ,WAAc,OAAO9yH,EAAMqx7B,4BAA8B,EAAGhC,GAAkC,IAE7HiC,mBAAoB,CAEhB7v8B,MAAO,IAAIiK,EAAQi87B,QAAQ4H,IAE/Bju7B,YAAa,CACT7f,QAASoe,IAEb0x7B,yBAA0B,CACtBhq6B,UAAU,EACV9lC,OAAO,GAEX+v8B,WAAY,CACRjq6B,UAAU,EACV9lC,OAAO,GAEXgw8B,+BAAgC,CAC5Blq6B,UAAU,EACV9lC,OAAO,GAEXiw8B,iBAAkB,CACdnq6B,UAAU,EACV9lC,OAAO,GAEX+4hB,wBAAyB,CACrBjzf,UAAU,EACV9lC,MAAO,MAEXkw8B,+BAAgC,CAC5Bpq6B,UAAU,EACV9lC,MAAO,GAEXmw8B,iBAAkB,CACdrq6B,UAAU,EACV9lC,MAAO,IAEXow8B,aAAc,CACVpw8B,MAAO,IAAIuN,KAEf8i8B,yBAA0B,CACtBvq6B,UAAU,EACV9lC,MAAO,GAEXsw8B,kCAAmC,CAC/Bxq6B,UAAU,EACV9lC,MAAO,MAEXuw8B,kBAAmB,CACfzq6B,UAAU,EACV9lC,MAAO,MAEXww8B,YAAa,CACT1q6B,UAAU,EACV9lC,MAAO,MAEXyf,KAAM,CACFzf,MAAOM,GAEXmw8B,eAAgB,CACZzw8B,MAAOiK,EAAQgZ,eAEnByt7B,iBAAkB,CACd1w8B,MAAO,IAAIqN,KAEfsj8B,YAAa,CACT3w8B,MAAO,IAAIqN,KAEfuj8B,eAAgB,CACZ5w8B,MAAO,IAAIuN,KAEfsj8B,sBAAuB,CACnB7w8B,MAAO,IAAIiK,EAAQ8nwB,qBAAqBvxvB,IAE5Csw7B,qBAAsB,CAClB9w8B,MAAO,IAAIuN,KAEfwj8B,aAAc,CACVjr6B,UAAU,EACV9lC,OAAO,GAEXgx8B,iBAAkB,CACdlr6B,UAAU,EACV9lC,MAAO,MAEXi5hB,cAAe,CACXnzf,UAAU,EACV9lC,MAAOiK,EAAQguhB,cAEnBg5a,6BAA8B,CAC1Bjx8B,MAAOghW,EAAY,WACVziV,EAAMwy7B,cACPG,GAAyB3y7B,EAEjC,IAEJ8zvB,gBAAiB,CACbrywB,MAAOwgB,GAEX2w7B,sBAAuB,CACnBnx8B,MAAOg4hB,EAAgB7iU,OAE3Bi8uB,sBAAuB,CACnBpx8B,MAAOg4hB,EAAgB5iU,OAE3Bi8uB,gBAAiB,CACbrx8B,MAAOg4hB,EAAgB7iU,MAAMtgN,MAAM,SAAUgJ,GAEzC,MAAiB,SADLA,EAAG0vX,KAEnB,IACOyqJ,EAAgB7iU,MAAMxoN,KAAK,SAAUkR,GACpC,IAAI0vX,EAAQ1vX,EAAG0vX,MAAO+jkB,EAAMzz7B,EAAGyz7B,IAC/B,MAAiB,SAAV/jkB,GAAoB+jkB,CAC/B,IAERC,mBAAoB,CAChBzr6B,UAAU,EACV9lC,MAAO,MAEXwx8B,qBAAsB,CAClBxx8B,MAAO,IAAIiK,EAAQonI,QAAQ,WACvB/wI,EAAIqhB,MAAM,2BACVpD,EAAMuJ,OACV,EAAG7d,EAAQwphB,gBAAgB,IAE/Bg+a,sBAAuB,CACnBzx8B,MAAO,CACHm1N,MAAO,GACPC,MAAO,KAGfs8uB,sBAAuB,CACnB1x8B,MAAO,IAAIqN,KAEfsk8B,kBAAmB,CACf7r6B,UAAU,EACV9lC,MAAO,IAAIyu8B,GAEfmD,qBAAsB,CAKlB5x8B,MAAOi2c,GAAawvN,GAAaztI,EAAgB5iU,MAAM,IAAuD,SAAjD4iU,EAAgB5iU,MAAM,GAAGm4K,MAAM9qY,cACtF,SAAUwjO,GAAO,OAAOA,CAAK,EAC7Bh8N,EAAQsk8B,qBAElBsD,cAAe,CACX7x8B,MAAOiK,EAAQuk8B,cAEnBsD,iBAAkB,CACd9x8B,MAAOiK,EAAQqk8B,iBAEnByD,iBAAkB,CACd/x8B,MAAOiK,EAAQ2upB,iBAEnBo5S,mBAAoB,CAChBhy8B,MAAOiK,EAAQgc,mBAEnBgs7B,uBAAwB,CACpBjy8B,MAAOiK,EAAQ6nU,uBAEnBogoB,aAAc,CACVps6B,UAAU,EACV9lC,OAAO,GAEXmy8B,kBAAmB,CACfrs6B,UAAU,EACV9lC,OAAO,GAEXoy8B,sBAAuB,CACnBpy8B,MAAO,IAAIqN,IACXy4B,UAAU,GAEdus6B,cAAe,CACXvs6B,UAAU,EACV9lC,MAAO,MAEXsy8B,kCAAmC,CAC/Bty8B,MAAO,IAAIqN,KAEf+K,GAAI,CACA2tB,YAAY,EACZ/lC,MAAOoY,KAGf0mX,EAAmB95Q,GAAG,UAAWzmG,EAAM0y7B,8BACvCzw7B,EAAejO,iBAAiB,wBAAyBgM,EAAMg07B,6BAA6Bx84B,KAAKx3C,IACjGiC,EAAejO,iBAAiB,cAAegM,EAAMi07B,wBAAwBz84B,KAAKx3C,IAClFiC,EAAejO,iBAAiB,eAAgBgM,EAAMk07B,yBAAyB184B,KAAKx3C,IACpFiC,EAAejO,iBAAiB,2BAA4BgM,EAAMm07B,gCAAgC384B,KAAKx3C,IACvGiC,EAAejO,iBAAiB,0BAA2BgM,EAAMo07B,+BAA+B584B,KAAKx3C,IACrGiC,EAAejO,iBAAiB,uBAAwBgM,EAAMq07B,4BAA4B784B,KAAKx3C,IAC/FiC,EAAejO,iBAAiB,QAASgM,EAAMs07B,kBAAkB984B,KAAKx3C,IACtE,IAAIo+E,EAAOp+E,EAUX,OATAA,EAAMymG,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GAC7B,WAAVA,IAGJ2yF,EAAK19B,eAAe,eAAgB84c,GACpCp7a,EAAKyy2B,cAAc/i8B,QAAQ,SAAUo2zB,EAAa39jB,GAC9CnoK,EAAKq9b,sBAAsBl1R,EAC/B,GACJ,GACOvmP,CACX,CA8rCA,OAr9CAnE,EAAUw9gB,EAAkBv5gB,GAwR5Bu5gB,EAAiBn9gB,UAAUpZ,SAAW,WAClC,MAAO,sBAAwBgZ,KAAKwF,YAAc,KAAOxF,KAAKjC,GAAK,GACvE,EACAw/gB,EAAiBn9gB,UAAU4+gB,8BAAgC,SAAUC,GACjEj/gB,KAAKoF,KAAKkC,MAAM,0CAA2C23gB,GAE3Dj/gB,KAAK+27B,sBAAsB/k8B,QAAQ,SAAUgtJ,GACrC,sBAAuBA,IACvBA,EAAGqkM,kBAAoB47L,EAE/B,EACJ,EACAn1hB,OAAOwY,eAAei7gB,EAAiBn9gB,UAAW,wBAAyB,CACvEvM,IAAK,WACD,SAAK89U,IAAakqH,KAIF77b,KAAK+27B,sBAAsBzk8B,KAAK,SAAU0sJ,GACtD,MAAkC,QAA3BA,EAAGk0O,MAAM9qY,eAA2B42J,EAAGy5yB,YAAsC,IAAzBz5yB,EAAGqkM,iBAClE,EAEJ,EACA33T,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAei7gB,EAAiBn9gB,UAAW,kBAAmB,CAMjEvM,IAAK,WACD,MAAmC,WAA5BmM,KAAK+H,mBACN,SAAY/H,KAAKg4vB,gBAAgB/vvB,iBAAmBjI,KAAK+H,kBACnE,EACA2jB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAei7gB,EAAiBn9gB,UAAW,qBAAsB,CAMpEvM,IAAK,WACD,OAASmM,KAAKy17B,0BAAwE,iBAA5Cz17B,KAAKg4vB,gBAAgBjwvB,oBAA0C/H,KAAKq17B,oBACxG,SAAWr17B,KAAKg4vB,gBAAgBjwvB,kBAC1C,EACA2jB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAei7gB,EAAiBn9gB,UAAW,iCAAkC,CAMhFvM,IAAK,WACD,MAA4C,WAAxCmM,KAAKg4vB,gBAAgBsvD,kBAEdtnzB,KAAKg4vB,gBAAgByvD,kBACtBj8lB,EAAiBxrN,KAAKg4vB,gBAAgByvD,iBAAiB77lB,IAAK,eAAex3N,OAAS,CAIlG,EACAs3B,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAei7gB,EAAiBn9gB,UAAW,8BAA+B,CAK7EvM,IAAK,WACD,IAAI6k8B,EAAyB147B,KAAK+27B,sBAAsBl87B,KAAK,SAAUmkJ,GAAM,MAAO,sBAAuBA,CAAI,GAC/G,OAAO05yB,IAAuE,IAA7CA,EAAuBr1mB,iBAC5D,EACA33T,YAAY,EACZuL,cAAc,IAQlBsmf,EAAiBn9gB,UAAUu47B,sBAAwB,SAAUrs7B,EAAOyrI,EAAW6gzB,GAE3E,QADsB,IAAlBA,IAA4BA,GAAgB,GAC7B,UAAfts7B,EAAMQ,MAAyC,UAArBR,EAAM20P,WAChC,OAAO,EAKX,IAAIz9P,EAAK8I,EAAMwgN,cAAelmO,EAAS4c,EAAG5c,OAAQF,EAAQ8c,EAAG9c,MAC7D,GAAsB,iBAAXE,GAAwC,iBAAVF,EACrC,OAAO,EAIX,IAAI07Z,EAAUjuS,EAAKu7G,eACnB,SAAgB,WAAZ0yL,GAAqC,WAAZA,GAAwBpiZ,KAAK647B,+BACtD747B,KAAK847B,iBAAiBxs7B,EAAOyrI,EAAW6gzB,IACjC,EAGf,EAUAr7a,EAAiBn9gB,UAAU047B,iBAAmB,SAAUxs7B,EAAOyrI,EAAW6gzB,GACtE,GAAI547B,KAAKo17B,0BAA0B9o7B,GAAQ,CACvC,IAAIys7B,EAAiC,CACjC,CAAEC,sBAAuB,GACzB,CAAEA,sBAAuB,IAE7BjhzB,EAAU/lJ,QAAQ,SAAU04J,EAAUrlK,GAClC,IAAI4z8B,EAAoBF,EAA+B1z8B,GACnD4z8B,GACAvuyB,EAASsuyB,sBAAwBC,EAAkBD,sBAC/CJ,UACOluyB,EAAS3mH,SAIpB2mH,EAAS3mH,QAAS,SACX2mH,EAASsuyB,sBAExB,EACJ,KACK,CACD,IAAIx17B,EAAK8I,EAAMwgN,cAQXosuB,EARkC117B,EAAG9c,MAAgB8c,EAAG5c,OASxDuy8B,EAN0B,CAC1B,CAAE7k5B,OAAQ,OAAW8k5B,gBAAiB,GACtC,CAAE9k5B,OAAQ,OAAW8k5B,gBAAiB,GACtC,CAAE9k5B,OAAQ,EAAG8k5B,gBAAiB,IAGav+7B,KAAK,SAAU8jY,GAAS,OAAOu6jB,GAAiBv6jB,EAAMrqV,MAAQ,GACzG+k5B,EAAiB7z8B,KAAKkE,IAAIquJ,EAAU3jJ,OAAQ+k8B,EAAiBC,iBACjErhzB,EAAU/lJ,QAAQ,SAAU04J,EAAUrlK,GACpBA,EAAIg08B,GAEd3uyB,EAASsuyB,sBAAwB,GAAMK,EAAiBh08B,EAAI,EACxDuz8B,IACAluyB,EAAS3mH,QAAS,KAItB2mH,EAAS3mH,QAAS,SACX2mH,EAASsuyB,sBAExB,EACJ,CACAh57B,KAAKoF,KAAKkC,MAAM,oBAAqBywI,EAAUhlJ,IAAI,SAAUyQ,EAAIne,GAE7D,MAAO,IAAMA,EAAI,KADJme,EAAGugC,OACiB,MADevgC,EAAGw17B,uBACe,GAAK,GAC3E,GAAG967B,KAAK,MACZ,EAOAq/gB,EAAiBn9gB,UAAUk57B,iBAAmB,SAAUlt7B,GACpD,IAAIlI,EAAQlE,KACZ,OAAOrJ,QAAQC,UAAUC,KAAK,WAE1B,OADAuV,EAAY,IAAIlI,EAAMwz7B,iBAAiBtr7B,GAChClI,EAAM8zvB,gBAAgB3rvB,gBAAgBD,EACjD,GAAGyhN,MAAM,SAAU5jN,GASf/F,EAAMkB,KAAKyH,KAAK,kCAAoCT,EAAY,IAAOA,EAAUA,UAAY,IAAO,QAAU,KACxGnC,EAAMmmF,QAChB,EACJ,EAOAmtb,EAAiBn9gB,UAAUm57B,kBAAoB,SAAUxzc,GACrD,OAAOpvf,QAAQmvC,IAAIigd,EAAWhzf,IAAIiN,KAAKs57B,iBAAkBt57B,OAAOnJ,KAAK,WAAc,EACvF,EAQA0mhB,EAAiBn9gB,UAAUo57B,wBAA0B,SAAUlt7B,GAC3D,IAAIpI,EAAQlE,KACR2rN,EAmkCZ,SAAiCi2T,EAAM90gB,GACnC,IAAI6wgB,EAAkB,CAClB7iU,MAAO8mU,EAAKk1a,sBAAsB/j8B,IAAI,SAAUyQ,GAE5C,OADYA,EAAG0vX,MACF9qY,aACjB,GACA2yN,MAAO6mU,EAAKm1a,sBAAsBhk8B,IAAI,SAAUyQ,GAE5C,OADYA,EAAG0vX,MACF9qY,aACjB,IACF0kB,GACE2s7B,EAAuB73a,EAAKw1a,sBAAsBtq7B,GAClD4s7B,EAAa/7a,EAAgB9ihB,KAAK,SAAUq4X,GAAS,OAAO0uJ,EAAKm0a,aAAapi8B,IAAIu/X,EAAQ,GAC9F,IAAKwmkB,EACD,OAAOD,EAAqBvx5B,QAEhC,IAAIyjL,EAAc8tuB,EAAqB5+7B,KAAK,SAAU8wN,GAClD,IAAIguuB,EAAiB/3a,EAAKy0a,iBAAiBxi8B,IAAI83N,EAAYr4L,KAC3D,OAAOqm6B,GAAkBA,EAAehm8B,IAAI+l8B,EAChD,GAIA,OAHI/tuB,GACA8tuB,EAAqB1s6B,OAAO0s6B,EAAqBlx8B,QAAQojO,GAAc,GAEpEA,CACX,CA3lC0BiuuB,CAAwB557B,KAAMsM,EAAMQ,MACtD,GAAI6+M,GAAeA,EAAYvjN,OAAQ,CACnC,IAAIyx7B,EAAaluuB,EAAYvjN,OAAOkE,MAAQq/M,EAAYvjN,OAAOkE,MAAMvO,GAAK,KAc1E,OAbI877B,GACA757B,KAAKoF,KAAKyH,KAAK,wBAA0B8+M,EAAYr4L,IAAM,KAAOum6B,EAAa,OAASvt7B,EAAMvO,IAKlGiC,KAAKq37B,sBAAsBtj8B,IAAI43N,EAAaA,EAAYvjN,OAAO0x7B,aAAaxt7B,GAAOzV,KAAK,WACpF80N,EAAY58N,UAAY,UAC5B,EAAG,WAEH,GAAG63F,QAAQ,WACP1iF,EAAMmz7B,sBAAsB5g6B,OAAOk1L,EACvC,IACOA,CACX,CACA,OAAO3rN,KAAKg4vB,gBAAgBhoiB,eAAe1jN,EAC/C,EAOAixgB,EAAiBn9gB,UAAU257B,aAAe,SAAUjn0B,GAChD,IAAIkn0B,EAAQC,GAASnn0B,GACrB,IAAKkn0B,EACD,OAAOrj8B,QAAQC,UAEnB,IAAImvf,EAAa/lf,KAAKs37B,kBAAkB4C,SAASF,GACjD,OAAOh67B,KAAKu57B,kBAAkBxzc,EAClC,EAOAw3B,EAAiBn9gB,UAAU+57B,QAAU,SAAUnu7B,GAC3C,IAAI9H,EAAQlE,KACZ,OAAOrJ,QAAQC,UAAUC,KAAK,WAI1B,OAHKqN,EAAMyy7B,mBACPzy7B,EAAMyy7B,iBAAmB,YAEtBzy7B,EAAMk27B,sBAAsBpu7B,EACvC,GAAG6hN,MAAM,WACL,MAAM,IAAIutG,CACd,GAAGvkU,KAAK,WACJ,OAAOqN,EAAM8zvB,gBAAgBprvB,cACjC,GAAG/V,KAAK,SAAUqV,GAKVA,EAJA0vb,EAIS,IAAI13b,EAAM0z7B,uBAAuB,CACtChsuB,IAAKiouB,EAAW3n7B,EAAO0/M,KACvB57M,KAAM9D,EAAO8D,OAIRwk7B,EAAoBto7B,GAOjC,IAAImu7B,EAAarG,EAAqB9n7B,EAAO0/M,IAAK,CAAC,UAAW,UAC9D,GAAI1nN,EAAMo27B,sBAAuB,CAC7B,IAAIC,EAAsBF,EAC1BA,EAAan27B,EAAMsz7B,cAAc+C,EAAqBr27B,EAAM6z7B,uBAI5DsC,EAAan27B,EAAMuz7B,iBAAiB4C,EAAYE,EAAqBvu7B,EAAM4/M,IAC/E,CAIA,OADAyuuB,EAAaA,EAAWt28B,QAAQ,UAAW,UACpCmgB,EAAMs27B,qBAAqB,CAC9Bxq7B,KAAM9D,EAAO8D,KACb47M,IAAKyuuB,GAEb,GAAGxj8B,KAAK,WACJ,OAAOqN,EAAM617B,aAAa/t7B,EAC9B,GAAGnV,KAAK,WACJ,OAAOqN,EAAMgz7B,oBACNhz7B,EAAMu27B,mBAAmBv27B,EAAMgz7B,mBAC1C,GAAGrg8B,KAAK,WAEJ,OADAqN,EAAMgz7B,mBAAqB,KACpBhz7B,EAAMw27B,cAAcx27B,EAAM8zvB,gBAAgByvD,iBACrD,GAAG55lB,MAAM,SAAU5jN,GACf,IAAI0w7B,EAAe1w7B,aAAiBmxT,EAAmCnxT,EAAQ,IAAIixT,EAMnF,MALAh3T,EAAM027B,qBAAqB,CACvBxq2B,QAAS,oBACT5B,KAAMms2B,EAAans2B,KACnBvkF,MAAOA,IAEL0w7B,CACV,EACJ,EAOAp9a,EAAiBn9gB,UAAUk/gB,OAAS,WAEhC,OADAt/gB,KAAKw27B,sBAAsB9w7B,OACiB,WAAxC1F,KAAKg4vB,gBAAgBsvD,iBACrBtnzB,KAAKg4vB,gBAAgBvqvB,QACrBzN,KAAK05gB,QAAQ,UACb15gB,KAAKs+gB,oBAAoB15d,eAAe,UAAW5kD,KAAK427B,+BACjD,EAGf,EAMAr5a,EAAiBn9gB,UAAU837B,6BAA+B,WACtDl47B,KAAK6K,KAAK,yBACd,EAOA0ygB,EAAiBn9gB,UAAU+37B,wBAA0B,SAAUhs7B,GAC3D,IAAIjI,EAAQlE,KACRoozB,EAAcj8yB,EAAMuokB,QACpBmmX,EAAoB,IAAIvG,EAAkBlsI,GAC9CpozB,KAAKg17B,oBAAoB1h8B,IAAIun8B,GAC7BzyI,EAAYlwzB,iBAAiB,QAAS,WAClCgM,EAAM8w7B,oBAAoBv+5B,OAAOok6B,EACrC,GACA767B,KAAK6K,KAAK,aAAcgw7B,EAC5B,EAOAt9a,EAAiBn9gB,UAAU067B,aAAe,SAAU9u7B,GAChD,IAAI9H,EAAQlE,KAOZ,OANAA,KAAKoF,KAAKkC,MAAM,gCACZtH,KAAK417B,mBACL517B,KAAKoF,KAAKkC,MAAM,sFAChBtH,KAAK417B,kBAAmB,EACxB517B,KAAK837B,mBAAoB,GAEtBnh8B,QAAQC,UAAUC,KAAK,WAE1B,OADAqN,EAAM6z7B,sBAAwB,IAAI/k8B,IAAIkR,EAAM4w7B,8BACrC5w7B,EAAMs27B,qBAAqB,CAAExq7B,KAAM,YAC9C,GAAGnZ,KAAK,WAEJ,OADAqN,EAAMwy7B,cAAe,EACdxy7B,EAAMi27B,QAAQnu7B,EACzB,GAAGnV,KAAK,SAAUkk8B,GACd,OAAOA,EAAapk8B,QAAQC,UAAYsN,EAAM827B,QAClD,EACJ,EACAz9a,EAAiBn9gB,UAAUw67B,qBAAuB,SAAUp37B,GACxD,IAAI4sF,EAAU5sF,EAAG4sF,QAAS5B,EAAOhrF,EAAGgrF,KAAMvkF,EAAQzG,EAAGyG,MAAO2hN,EAAMpoN,EAAGooN,IACrE5rN,KAAKo27B,eAAevr7B,KAAK,QAAS,CAAEb,MAAO,UAAWzW,KAAM,QAASwW,MAAO,QAASG,QAAS,CACtFkmF,QAASA,EACT5B,KAAMA,EACNrlE,QAASxf,KAAKC,UAAU,CAAEK,MAAOA,EAAMmmF,QAASw7H,IAAKA,MAEjE,EAOA2xT,EAAiBn9gB,UAAUg47B,yBAA2B,SAAUjs7B,GACxDA,EAAMC,YACNpM,KAAKoF,KAAKkC,MAAM,kCAChBtH,KAAKk17B,6BAA8B,EACnCl17B,KAAKs17B,qBAAqBv63B,QAC1B/6D,KAAK817B,iBAAiBhi8B,KAAKqY,EAAMC,YAErC,IAAIizgB,EAAsB,CACtBn5gB,IAAK,CACD6/e,WAAY/lf,KAAK017B,WAAa,GAAK117B,KAAK817B,iBAAiBh77B,QACzDk/7B,MAAOh67B,KAAKm27B,aAEhBp47B,GAAIiC,KAAKjC,IAERoO,EAAMC,YACPizgB,EAAoBn5gB,IAAIm8B,UAAW,GAEjCriC,KAAK017B,YAAcvp7B,EAAMC,YAC3BizgB,EAAoBn5gB,IAAI4+U,SAAW9kV,KAAKg27B,2BACxCh27B,KAAK6K,KAAK,aAAcw0gB,GAEhC,EAMA9B,EAAiBn9gB,UAAUi47B,gCAAkC,WACzD,IAAIn07B,EAAQlE,KACR+H,EAAqB/H,KAAKg4vB,gBAAgBjwvB,mBAC1Ckz7B,EAA2B,CAAC,YAAa,aAAatl6B,SAAS5tB,GAC/D9hB,EAAM+Z,KAAKoF,KACfnf,EAAIqhB,MAAM,4BAA+BS,EAAqB,KAC1Dkz7B,IACAj77B,KAAKm37B,qBAAqBp83B,QAC1B/6D,KAAKw17B,mBAAmBj/7B,SAES,WAAjCyJ,KAAK0+gB,yBAA+D,WAAvB32gB,GAAoC/H,KAAK837B,mBAAsB937B,KAAK417B,iBAK5G,CAAC,eAAgB,UAAUjg6B,SAAS31B,KAAK0+gB,0BAA4Bu8a,GAE1Eh18B,EAAIqhB,MAAM,oBALVrhB,EAAI4mB,KAAK,cACT7M,KAAKk77B,8BAOkB,cAAvBnz7B,GACA/H,KAAKy17B,0BAA2B,EAChCz17B,KAAKw27B,sBAAsB/p8B,MAAM,WAG7ByX,EAAMsy7B,sBAAsB9w7B,OACvBxB,EAAM4z7B,mBAAsB5z7B,EAAM0x7B,mBACnC3v8B,EAAI4mB,KAAK,8CACT3I,EAAMux7B,0BAA2B,EACjCvx7B,EAAMg37B,6BACNh37B,EAAM2G,KAAK,6BACX3G,EAAM2G,KAAK,0BAEnB,IAEM,CAAC,eAAgB,aAAa8qB,SAAS5tB,KAC7C/H,KAAKw27B,sBAAsB9w7B,OAC3B1F,KAAKy17B,0BAA2B,GAEpCz17B,KAAK0+gB,wBAA0B32gB,EAC/B/H,KAAK6K,KAAK,4BACd,EAMA0ygB,EAAiBn9gB,UAAUm17B,2BAA6B,WACpDv17B,KAAKoF,KAAKyH,KAAK,6CACf7M,KAAKq17B,qBAAsB,EAC3Br17B,KAAKk77B,6BACLl77B,KAAK6K,KAAK,6BACV7K,KAAK6K,KAAK,yBACd,EAMA0ygB,EAAiBn9gB,UAAUk47B,+BAAiC,WACxD,IAAI6C,EAAoBn77B,KAAKg4vB,gBAAgBmjM,kBACzCl18B,EAAM+Z,KAAKoF,KACfnf,EAAIqhB,MAAM,2BAA8B6z7B,EAAoB,KAI5D,IAAI337B,EAAKxD,KAAKs17B,qBAAsB7x5B,EAAQjgC,EAAGigC,MAAO20F,EAAQ50H,EAAG40H,MACvC,cAAtB+i0B,GAAsCn77B,KAAKk17B,6BAAgC98zB,IAC3EnyI,EAAIqhB,MAAM,mCAAqCm8B,GAC/CzjC,KAAKq17B,qBAAsB,EAC3Br17B,KAAKs17B,qBAAqB7o8B,QAElC,EAMA8whB,EAAiBn9gB,UAAUm47B,4BAA8B,WACT,WAAxCv47B,KAAKg4vB,gBAAgBsvD,iBACrBtnzB,KAAK807B,6BAA+B,IAAI9h8B,IAAIgN,KAAK+37B,uBAEzD,EAOAx6a,EAAiBn9gB,UAAUo47B,kBAAoB,SAAUrs7B,GACrD,IAAIjI,EAAQlE,KACR4rN,EAAM5rN,KAAKg4vB,gBAAgB0vD,kBACzB1nzB,KAAKg4vB,gBAAgB0vD,kBAAkB97lB,IACvC,KACN5rN,KAAKg47B,cAAgBh47B,KAAKg47B,eAAiB,IAAIvsuB,EAC/CzrN,KAAKg47B,cAAc5h8B,OAAOw1N,GAC1B,IAAIe,EAAmBxgN,EAAMG,MACzB8u7B,EAAkBp77B,KAAKg47B,cAAch08B,MAAMmoB,IAAUwgN,EAAiB5uN,GACtE2vkB,EAAqB,IAAI6mX,EAAmB6G,EAAiBzuuB,GAMjE3sN,KAAKy27B,qBAAqBzk8B,QAAQ,SAAUqp8B,GACpCA,EAAc/u7B,MAAMvO,KAAO2vkB,EAAmBphkB,MAAMvO,IACpDmG,EAAMuy7B,qBAAqBhg6B,OAAO4k6B,EAE1C,GACAr77B,KAAKy27B,qBAAqBnj8B,IAAIo6kB,GAC9B/gX,EAAiBz0N,iBAAiB,QAAS,WAAc,OAAOgM,EAAMuy7B,qBAAqBhg6B,OAAOi3iB,EAAqB,GACvH1tkB,KAAK6K,KAAK,aAAc6ikB,EAC5B,EAMAnwD,EAAiBn9gB,UAAUk77B,oBAAsB,WAC7C,GAA4C,WAAxCt77B,KAAKg4vB,gBAAgBsvD,eAAzB,CAGA,IAAIrh0B,EAAM+Z,KAAKoF,KACfnf,EAAI4mB,KAAK,6BACT7M,KAAKk17B,6BAA8B,EACnCl17B,KAAK217B,gCAAiC,EACtC317B,KAAK837B,mBAAoB,EACzB,IAAIt07B,EAAKxD,KAAKm37B,qBAAsB1z5B,EAAQjgC,EAAGigC,MAAejgC,EAAG40H,QAE7DnyI,EAAIqhB,MAAM,mCAAqCm8B,GAC/CzjC,KAAKm37B,qBAAqB1q8B,SAE9BuT,KAAKgM,QAAQ6hN,MAAM,SAAU+c,GACzB3kP,EAAIgkB,MAAM,6CAA+C2gO,EAAGx6I,QAChE,EAbA,CAcJ,EAMAmtb,EAAiBn9gB,UAAU867B,2BAA6B,WACpD,IAAIh37B,EAAQlE,KACgC,WAAxCA,KAAKg4vB,gBAAgBsvD,gBAA+BtnzB,KAAK217B,iCAG7D317B,KAAKoF,KAAKyH,KAAK,qCACf7M,KAAK217B,gCAAiC,EACtC317B,KAAKw17B,mBAAmBtJ,QAAQ,WAAc,OAAOho7B,EAAMo37B,qBAAuB,GACtF,EAOA/9a,EAAiBn9gB,UAAUs67B,cAAgB,SAAUjzI,GACjD,IAAI8zI,EAAgBv77B,KAAK637B,aACzB,GAAIpwI,GAAoBA,EAAiB77lB,IAAK,CAK1C,IAAI4vuB,EAAYx77B,KAAKg4vB,gBAAgB7vvB,aAAalX,OAAO,SAAUmX,GAAU,OAAOA,EAAOkE,KAAO,GAClGiv7B,EAAgB,CAAC,QAAS,SAASjx8B,OAAO,SAAUmx8B,EAAa3u7B,GAC7D,IAAI8jN,EAAgBpF,EAAiBi8lB,EAAiB77lB,IAAK9+M,EAAM,uBAC7D4u7B,EAAgBF,EAAUvq8B,OAAO0q8B,GAAejg5B,KAAK,KAAM5uC,IAC/D,OAAO2u7B,GAAgB7quB,EAAcx8N,OAASsn8B,EAActn8B,MAChE,EAAGmn8B,GAGH,IAAIK,EAAe577B,KAAK+07B,cAAchi7B,KAAO,EACzC8o7B,EAA6BrwuB,EAAiBi8lB,EAAiB77lB,IAAK,eAAex3N,OAAS,EAEhGmn8B,EAAgBA,GADmBK,IAAiBC,CAExD,CAEA,OADcN,EAAgBv77B,KAAKg77B,SAAWrk8B,QAAQC,WACvCC,KAAK,WAAc,OAAO0k8B,CAAe,EAC5D,EAMAh+a,EAAiBn9gB,UAAU467B,OAAS,WAChC,IAAI927B,EAAQlE,KACR49gB,EAAe9zhB,OAAOC,OAAO,CAAC,EAAGiW,KAAK4+gB,eAO1C,OANA5+gB,KAAK027B,cAAe,EAChB127B,KAAK837B,oBACL937B,KAAK837B,mBAAoB,EACzB937B,KAAK417B,kBAAmB,EACxBh4a,EAAak+a,YAAa,GAEvBnl8B,QAAQmvC,IAAI9lC,KAAKq37B,sBAAsBzu6B,UAAU/xB,KAAK,WACzD,OAAOqN,EAAM8zvB,gBAAgBvrvB,YAAYmxgB,EAC7C,GAAG/vT,MAAM,SAAU5jN,GACf,IAAI0w7B,EAAe,IAAIz/nB,EAMvB,MALAh3T,EAAM027B,qBAAqB,CACvBxq2B,QAAS,yBACT5B,KAAMms2B,EAAans2B,KACnBvkF,MAAOA,IAEL0w7B,CACV,GAAG9j8B,KAAK,SAAUmV,GAKVA,EAJA4vb,EAIQ,IAAI13b,EAAM0z7B,uBAAuB,CACrChsuB,IAAKiouB,EAAW7n7B,EAAM4/M,KACtB57M,KAAMhE,EAAMgE,OAIRwk7B,EAAoBxo7B,GAOhC,IAAI4/M,EAAMoouB,EAAqBho7B,EAAM4/M,IAAK,CAAC,UAAW,UACtDA,EAAM1nN,EAAM8zvB,gBAAgB0vD,kBACtBqsI,EAAkBnouB,EAAK1nN,EAAM8zvB,gBAAgB0vD,kBAAkB97lB,KAC/DA,EACN,IAAIyuuB,EAAan27B,EAAMqz7B,qBAAqB3ruB,EAAK1nN,EAAM4y7B,sBAAuB5y7B,EAAM6y7B,uBAYpF,OAXA7y7B,EAAM2z7B,cAAe,EAChB3z7B,EAAMyy7B,mBACPzy7B,EAAMyy7B,iBAAmB,WAEzBzy7B,EAAMo27B,wBACNp27B,EAAM+x7B,kCAAoC,CACtCjm7B,KAAM,QACN47M,IAAKyuuB,GAETA,EAAan27B,EAAMsz7B,cAAc6C,EAAYn27B,EAAM6z7B,wBAEhD7z7B,EAAMs27B,qBAAqB,CAC9Bxq7B,KAAM,QACN47M,IAAKyuuB,GAEb,EACJ,EASA98a,EAAiBn9gB,UAAU277B,uBAAyB,SAAU7vuB,GAC1D,IAAI8vuB,EAAmB1n8B,MAAMuwB,KAAK7kB,KAAKs27B,YAAYjs8B,QAAQwQ,KAAK,SAAU2I,GAEtE,OADSA,EAAG8I,MAAMvO,KACJmuN,CAClB,GACA,OAAO8vuB,EAAmBA,EAAiBj+7B,GAAKmuN,CACpD,EAOAqxT,EAAiBn9gB,UAAU677B,2BAA6B,SAAUnp0B,GAC9D,IAAI5uH,EAAQlE,KAERk87B,EADel87B,KAAKg4vB,gBAAgB71P,kBACFlxgB,OAAO,SAAUuS,GACnD,IAAI4E,EAAS5E,EAAG4E,OAChB,OADkC5E,EAAGk0T,SAClBtvT,GAAUA,EAAOkE,KACxC,GAKI6v7B,EAAuBD,EAAmBjr8B,OAAO,SAAUuS,GAE3D,OADUA,EAAG8vB,GAEjB,GACIw4L,EAAiB,IAAI94N,IAAImp8B,EAAqBpp8B,IAAI,SAAUyQ,GAC5D,IAAI8vB,EAAM9vB,EAAG8vB,IAAKlrB,EAAS5E,EAAG4E,OAC9B,MAAO,CAACkrB,EAAKpvB,EAAM637B,uBAAuB3z7B,EAAOkE,MAAMvO,IAC3D,IACIq+7B,EAAOzI,EAAqB7g0B,EAAY84F,IAAKE,GAG7CuwuB,EAAyBH,EAAmBjr8B,OAAO,SAAUuS,GAE7D,OADUA,EAAG8vB,GAEjB,GACIgp6B,EAAoB,IAAItp8B,IAAI,CAAC,QAAS,SAASD,IAAI,SAAU+Z,GAAQ,MAAO,CAC5EA,EACAuv7B,EAAuBpr8B,OAAO,SAAUuS,GAEpC,OADaA,EAAG4E,OACFkE,MAAMQ,OAASA,CACjC,GAAG/Z,IAAI,SAAUyQ,GACb,IAAI4E,EAAS5E,EAAG4E,OAChB,OAAOlE,EAAM637B,uBAAuB3z7B,EAAOkE,MAAMvO,GACrD,GACD,IACCw+7B,EAAO7I,EAAwB0I,EAAMtwuB,EAAgBwwuB,GACzD,OAAO,IAAIt87B,KAAK437B,uBAAuB,CACnChsuB,IAAK2wuB,EACLvs7B,KAAM8iH,EAAY9iH,MAE1B,EAOAutgB,EAAiBn9gB,UAAUo87B,uBAAyB,SAAUxw7B,GAC1D,IAAI9H,EAAQlE,KACZ,OAAOA,KAAKw67B,qBAAqB,CAAExq7B,KAAM,aAAcnZ,KAAK,WAAc,OAAOqN,EAAMs27B,qBAAqBxu7B,EAAQ,EACxH,EAOAuxgB,EAAiBn9gB,UAAUo67B,qBAAuB,SAAU1n0B,GACxD,IAAI5uH,EAAQlE,KAOZ,MANyB,aAArB8yH,EAAY9iH,MAAuBhQ,KAAKg37B,kBACxClk0B,EAAc,IAAI9yH,KAAK437B,uBAAuB,CAC1ChsuB,IAAKkouB,EAAiBhh0B,EAAY84F,KAClC57M,KAAM8iH,EAAY9iH,QAGnBhQ,KAAKg4vB,gBAAgBtrvB,oBAAoBomH,GAAa+6F,MAAM,SAAU5jN,GACzE/F,EAAMkB,KAAKyH,KAAK,sEAAyEimH,EAAY9iH,KAAO,4BAAgC/F,EAAMmmF,QAAU,KAAOnmF,GACnK,IAAI0w7B,EAAe,IAAIz/nB,EACnBuhoB,EAAiB,CACjBrs2B,QAAS,sEAAyE0iC,EAAY9iH,KAAO,WACrGw+E,KAAMms2B,EAAans2B,KACnBvkF,MAAOA,GAOX,MALI6oH,EAAY84F,MACZ1nN,EAAMkB,KAAKyH,KAAK,eAAiBimH,EAAY84F,KAC7C6wuB,EAAe7wuB,IAAM94F,EAAY84F,KAErC1nN,EAAM027B,qBAAqB6B,GACrB9B,CACV,GAAG9j8B,KAAK,WACqB,aAArBi8H,EAAY9iH,OACZ9L,EAAMgy7B,kBAAoBhy7B,EAAM+37B,2BAA2Bnp0B,GAMvD5uH,EAAM8y7B,kBACN9y7B,EAAMgy7B,kBAAoB,IAAIhy7B,EAAM0z7B,uBAAuB,CACvDhsuB,IAAKkouB,EAAiB5v7B,EAAMgy7B,kBAAkBtquB,IAAK,IACnD57M,KAAM9L,EAAMgy7B,kBAAkBlm7B,QAGtC9L,EAAM4x7B,iBAAmB,GACA,UAArBhj0B,EAAY9iH,KACZ9L,EAAM+w7B,uBAEoB,WAArBni0B,EAAY9iH,OACjB9L,EAAM2x7B,+BAAiC3x7B,EAAM+w7B,qBAC7CyH,GAAqBx47B,IAEzBA,EAAMiy7B,YAAc8D,GAASnn0B,GAC7B5uH,EAAM2G,KAAK,cAAe3G,EAAMyvF,YAExC,EACJ,EAOA4pb,EAAiBn9gB,UAAUg67B,sBAAwB,SAAUtn0B,GACzD,IAAI5uH,EAAQlE,KAwBZ,OAvBI8yH,EAAY84F,MACZ94F,EAAY84F,IAAM5rN,KAAKu37B,qBAAqBzk0B,EAAY84F,IAAK5rN,KAAK827B,sBAAuB927B,KAAK+27B,uBAC1F/27B,KAAKg37B,gBACLlk0B,EAAY84F,IAAMkouB,EAAiBhh0B,EAAY84F,KAK/C94F,EAAY84F,IAAMkouB,EAAiBhh0B,EAAY84F,IAAK,IAEpDgwO,IAKA9oU,EAAY84F,IAA8B94F,EAAY84F,IAudvD7nO,QAAQ,iBAAkB,cArdxBic,KAAKg4vB,gBAAgB0vD,oBACtB1nzB,KAAK017B,WAAa,aAAaxz8B,KAAK4wI,EAAY84F,OAGxD94F,EAAc,IAAI9yH,KAAK437B,uBAAuB9k0B,GAEvCn8H,QAAQC,UAAUC,KAAK,WAI1B,GAAyB,WAArBi8H,EAAY9iH,MAAqB9L,EAAM+x7B,kCAAmC,CAG1E,IAAIyC,EAAyBx07B,EAAM6y7B,sBAAsBl87B,KAAK,SAAUmkJ,GAAM,MAAO,sBAAuBA,CAAI,GAC5G29yB,IAAiBjE,IAAuE,IAA7CA,EAAuBr1mB,kBAClEu5mB,EAA4C147B,EAAMuz7B,iBAAiBvz7B,EAAMgy7B,kBAAkBtquB,IAAK1nN,EAAM+x7B,kCAAkCrquB,IAAK94F,EAAY84F,IAAK+wuB,GAElK,GADAz47B,EAAM+x7B,kCAAoC,KACtC2G,IAA8C147B,EAAMgy7B,kBAAkBtquB,IACtE,OAAO1nN,EAAMs47B,uBAAuB,CAChCxs7B,KAAM9L,EAAMgy7B,kBAAkBlm7B,KAC9B47M,IAAKgxuB,GAGjB,CACJ,GAAG/l8B,KAAK,WAAc,OAAOqN,EAAM8zvB,gBAAgBrrvB,qBAAqBmmH,EAAc,GAAGj8H,KAAK,WACjE,WAArBi8H,EAAY9iH,OACR9L,EAAM0x7B,mBACN1x7B,EAAMkB,KAAKkC,MAAM,uDACjBpD,EAAM0x7B,kBAAmB,GAE7B8G,GAAqBx47B,GAE7B,EAAG,SAAU+F,GAKT,MAJA/F,EAAMkB,KAAKyH,KAAK,uEAA0EimH,EAAY9iH,KAAO,4BAAgC/F,EAAMmmF,QAAU,KAAOnmF,GAChK6oH,EAAY84F,KACZ1nN,EAAMkB,KAAKyH,KAAK,eAAiBimH,EAAY84F,KAE3C3hN,CACV,EACJ,EAOAszgB,EAAiBn9gB,UAAUq67B,mBAAqB,SAAU3n0B,GACtD,IAAI5uH,EAAQlE,KACZ,OAAQ8yH,EAAY9iH,MAChB,IAAK,SACL,IAAK,WACD,GAAI8iH,EAAYgyN,WAAa9kV,KAAKi17B,sBACa,qBAAxCj17B,KAAKg4vB,gBAAgBsvD,eACxB,OAAO3wzB,QAAQC,UAEnBoJ,KAAKi17B,qBAAuBni0B,EAAYgyN,SACxC,MACJ,IAAK,QACD,OAAO9kV,KAAKs/gB,SAChB,IAAK,eACD,OAAIxsZ,EAAYgyN,UAAY9kV,KAAK617B,+BACtBl/7B,QAAQC,UAEVoJ,KAAK027B,cACV127B,KAAKk37B,mBAAqBpk0B,EACnBn8H,QAAQC,YAEnBoJ,KAAKi17B,qBAAuBni0B,EAAYgyN,SACjC9kV,KAAKg77B,UAChB,IAAK,QACD,OAAIlo0B,EAAYgyN,UAAY9kV,KAAK617B,gCACc,WAAxC717B,KAAKg4vB,gBAAgBsvD,eACjB3wzB,QAAQC,UAEyB,qBAAxCoJ,KAAKg4vB,gBAAgBsvD,eASjBtnzB,KAAK027B,cAAwD,IAAxC127B,KAAK617B,gCAC1B717B,KAAKk37B,mBAAqBpk0B,EACnBn8H,QAAQC,YAEnBoJ,KAAKi17B,qBAAuBni0B,EAAYgyN,SACjC9kV,KAAK867B,aAAaho0B,KAE7B9yH,KAAKi17B,qBAAuBni0B,EAAYgyN,SACjC9kV,KAAKm67B,QAAQrn0B,GAAaj8H,KAAK,WAAc,IAK5D,IAAIiuV,EAAWhyN,EAAYgyN,SAC3B,OAAOnuV,QAAQC,UAAUC,KAAK,WAC1B,OAAOqN,EAAMk27B,sBAAsBtn0B,EACvC,GAAG+6F,MAAM,SAAU5jN,GACf,IAAI0w7B,EAAe,IAAIv/nB,EAOvB,MANAl3T,EAAM027B,qBAAqB,CACvBxq2B,QAAS,uEAA0E0iC,EAAY9iH,KAAO,WACtGw+E,KAAMms2B,EAAans2B,KACnBvkF,MAAOA,EACP2hN,IAAK94F,EAAY84F,MAEf+uuB,CACV,GAAG9j8B,KAAK,WAGJ,OAFAqN,EAAM2x7B,+BAAiC/wmB,EACvC5gV,EAAMwy7B,cAAe,EACdxy7B,EAAM617B,aAAajn0B,EAC9B,GAAGj8H,KAAK,WACJ,OAAOqN,EAAMgz7B,oBACNhz7B,EAAMu27B,mBAAmBv27B,EAAMgz7B,mBAC1C,GAAGrg8B,KAAK,WAEJ,OADAqN,EAAMgz7B,mBAAqB,KACpBhz7B,EAAMw27B,cAAcx27B,EAAM8zvB,gBAAgByvD,kBAAkB5wzB,KAAK,WAAc,EAC1F,EACJ,EAOA0mhB,EAAiBn9gB,UAAUy87B,WAAa,SAAUC,GAC9C,IAAI/2c,EAAa/lf,KAAKs37B,kBAAkBlh8B,OAAO0m8B,GAC/C,OAAO987B,KAAKu57B,kBAAkBxzc,EAClC,EAMAw3B,EAAiBn9gB,UAAU2/gB,mBAAqB,SAAUt1R,GACtD,IAAIzqP,KAAK+07B,cAAcph8B,IAAI82P,GAG3B,IACI,IAAIu9jB,EAAkB,CAClB39jB,QAASI,EAAgBJ,SAEa,OAAtCI,EAAgBN,oBAChB69jB,EAAgB79jB,kBAAoBM,EAAgBN,mBAEjB,OAAnCM,EAAgBL,iBAChB49jB,EAAgB59jB,eAAiBK,EAAgBL,gBAErD,IAAIg+jB,EAAcpozB,KAAKg4vB,gBAAgB+vD,kBAAkBt9jB,EAAgB1sP,GAAIiqzB,GAC7Ev9jB,EAAgBsysB,eAAe30I,GAC/BpozB,KAAK+07B,cAAchh8B,IAAI02P,EAAiB29jB,EAC5C,CACA,MAAOn+yB,GACHjK,KAAKoF,KAAKyH,KAAK,mDAAsD49O,EAAgB1sP,GAAK,MAASkM,EAAMmmF,QAC7G,CACJ,EACAmtb,EAAiBn9gB,UAAU487B,4BAA8B,WACrD,IAAI947B,EAAQlE,KACgC,WAAxCA,KAAKg4vB,gBAAgBsvD,gBACrBtnzB,KAAKi47B,kCAAkCjm8B,QAAQ,SAAUwR,EAAIw47B,GACzD,IAAI1x1B,EAAW9mG,EAAG8mG,SAAUytC,EAAYv0I,EAAGu0I,UAC3C7zI,EAAM+z7B,kCAAkCxh6B,OAAOul6B,GAC/C937B,EAAM+47B,kBAAkBjB,EAAkBjkzB,GACrClhJ,KAAK,SAAU1D,GAAU,OAAOm3G,EAAS1zG,QAAQzD,EAAS,GAC1D06N,MAAM,SAAU5jN,GAAS,OAAOqgG,EAASlpG,OAAO6I,EAAQ,EACjE,EAER,EAQAszgB,EAAiBn9gB,UAAU687B,kBAAoB,SAAUjB,EAAkBjkzB,GACvE,IAAI7zI,EAAQlE,KACZ,GAAI47b,EACA,OAAOjlc,QAAQC,QAAQ,wBAEvBoJ,KAAKi47B,kCAAkCtk8B,IAAIqo8B,KAE1Bh87B,KAAKi47B,kCAAkCpk8B,IAAImo8B,GACjD1x1B,SAAS1zG,QAAQ,mBAC5BoJ,KAAKi47B,kCAAkCxh6B,OAAOul6B,IAElD,IAAI5z7B,EAASpI,KAAKs27B,YAAYzi8B,IAAImo8B,GAClC,IAAK5z7B,EAED,OADApI,KAAKoF,KAAKyH,KAAK,qEACRlW,QAAQC,QAAQ,iBAE3B,GAA4C,WAAxCoJ,KAAKg4vB,gBAAgBsvD,eAErB,OADAtnzB,KAAKoF,KAAKyH,KAAK,sEACRlW,QAAQC,QAAQ,wBAE3B,GAA4C,WAAxCoJ,KAAKg4vB,gBAAgBsvD,eAA6B,CAElDtnzB,KAAKoF,KAAKkC,MAAM,oDAAqDtH,KAAKg4vB,gBAAgBsvD,gBAC1F,IAAIh9sB,EAAWpB,IAEf,OADAlpG,KAAKi47B,kCAAkClk8B,IAAIio8B,EAAkB,CAAE1x1B,SAAUA,EAAUytC,UAAWA,IACvFztC,EAAS+X,OACpB,CACA,IAAIw1G,EAAazvN,EAAOy+3B,gBAkBxB,OAjBkB,OAAd9uvB,GACAA,EAAU/lJ,QAAQ,SAAUwR,GACxB,IAAIxN,EAAUwN,EAAGxN,QAASkn8B,EAAa157B,EAAG257B,YACtCtluB,EAAW9/E,UAAU3jJ,OAAS8o8B,GAC9Bh57B,EAAMkB,KAAKkC,MAAM,SAAW417B,EAAa,YAAcrluB,EAAW9/E,UAAUmlzB,GAAYn55B,OAAS,OAAS/tC,GAC1G6hO,EAAW9/E,UAAUmlzB,GAAYn55B,OAAS/tC,GAG1CkO,EAAMkB,KAAKyH,KAAK,iBAAmBqw7B,EAAa,YAAcln8B,EAEtE,GAMJgK,KAAK247B,sBAAsBvw7B,EAAOkE,MAAOurN,EAAW9/E,UAAyB,OAAdA,GACxD3vI,EAAO0+3B,cAAcjvqB,GAAYhhO,KAAK,WAAc,MAAO,IAAM,GAAGg3N,MAAM,SAAU5jN,GAEvF,OADA/F,EAAMkB,KAAK6E,MAAM,mCAAoCA,GAC9C,sBACX,EACJ,EAMAszgB,EAAiBn9gB,UAAU4/gB,oBAAsB,SAAUg8a,GACvD,IAAI937B,EAAQlE,KACZ,GAA4C,WAAxCA,KAAKg4vB,gBAAgBsvD,iBAA+BtnzB,KAAKs27B,YAAY3i8B,IAAIqo8B,GAA7E,CAGA,IACI5z7B,EADcpI,KAAKw57B,wBAAwBwC,EAAiB1v7B,OACvClE,OACzB4z7B,EAAiBoB,UAAUh17B,EAAQ,SAAU2vI,GAAa,OAAO7zI,EAAM+47B,kBAAkBjB,EAAkBjkzB,EAAY,GACvH/3I,KAAKu27B,eAAejj8B,IAAI8U,GACxBpI,KAAKs27B,YAAYvi8B,IAAIio8B,EAAkB5z7B,EALvC,CAMJ,EAKAm1gB,EAAiBn9gB,UAAUqN,MAAQ,WAC3BzN,KAAKs/gB,WACLt/gB,KAAKi17B,uBACLj17B,KAAKk27B,kBAAoB,CAAElm7B,KAAM,SACjChQ,KAAK6K,KAAK,cAAe7K,KAAK2zF,YAEtC,EAMA4pb,EAAiBn9gB,UAAU8/gB,kBAAoB,WAC3C,OAAO5rhB,MAAMuwB,KAAK7kB,KAAKg17B,qBAAqBhn8B,OAAOsG,MAAMuwB,KAAK7kB,KAAKy27B,sBACvE,EAKAl5a,EAAiBn9gB,UAAUuzF,SAAW,WAClC,IAAK3zF,KAAKk27B,kBACN,OAAO,KAMX,IAAImH,EAA2D,WAAhCr97B,KAAKk27B,kBAAkBlm7B,KAAoBhQ,KAAK617B,+BAAiC717B,KAAKi17B,qBACjHxtI,EAAmB,CACnBz3yB,KAAMhQ,KAAKk27B,kBAAkBlm7B,KAC7B80U,SAAUu4mB,GAKd,OAHIr97B,KAAKk27B,kBAAkBtquB,MACvB67lB,EAAiB77lB,IAAM5rN,KAAKk27B,kBAAkBtquB,KAE3C,CACH94F,YAAa20rB,EACb1pzB,GAAIiC,KAAKjC,GAEjB,EAKAw/gB,EAAiBn9gB,UAAU4L,MAAQ,WAC/B,IAAI9H,EAAQlE,KACZ,OAAIA,KAAK027B,cAAgB127B,KAAK417B,kBAC1B517B,KAAK637B,cAAe,EACblh8B,QAAQC,WAEZoJ,KAAKq92B,QAAQ,WAAY,SAAU7y3B,GAGtC,OAFA0Z,EAAMgrC,WAAW,WAAY1kD,IACf0Z,EAAMwy7B,cAAgBxy7B,EAAM0x7B,iBAAmBj/7B,QAAQC,UAAYsN,EAAM827B,UACxEnk8B,KAAK,WAChBqN,EAAM+52B,cAAc,OAAQzz3B,EAChC,EAAG,SAAUyf,GAET,MADA/F,EAAM+52B,cAAc,OAAQzz3B,GACtByf,CACV,EACJ,EACJ,EAMAszgB,EAAiBn9gB,UAAUu/gB,sBAAwB,SAAUl1R,GACzD,IAAI29jB,EAAcpozB,KAAK+07B,cAAclh8B,IAAI42P,GACrC29jB,IACA39jB,EAAgB6ysB,kBAAkBl1I,GAClCpozB,KAAK+07B,cAAct+5B,OAAOg0N,GAC1B29jB,EAAY36yB,QAEpB,EAMA8vgB,EAAiBn9gB,UAAUw/gB,uBAAyB,SAAUo8a,GAC1D,IAAI5z7B,EAASpI,KAAKs27B,YAAYzi8B,IAAImo8B,GAC7B5z7B,IAGuC,WAAxCpI,KAAKg4vB,gBAAgBsvD,gBACrBtnzB,KAAKg4vB,gBAAgB3pJ,YAAYjmmB,GAErC4z7B,EAAiBuB,aAAan17B,GAE1BpI,KAAKi47B,kCAAkCtk8B,IAAIqo8B,KAC1Bh87B,KAAKi47B,kCAAkCpk8B,IAAImo8B,GACjD1x1B,SAAS1zG,QAAQ,iBAC5BoJ,KAAKi47B,kCAAkCxh6B,OAAOul6B,IAElDh87B,KAAKu27B,eAAe9/5B,OAAOruB,GAC3BpI,KAAKs27B,YAAY7/5B,OAAOul6B,GAC5B,EAMAz+a,EAAiBn9gB,UAAUgghB,iBAAmB,SAAU5M,GACC,mBAA1CxzgB,KAAKg4vB,gBAAgB53O,kBAC5BpghB,KAAKg4vB,gBAAgB53O,iBAAiBs0a,GAAiBlhb,GAE/D,EAMA+J,EAAiBn9gB,UAAUighB,uBAAyB,SAAU1/a,GAG1D,OAFA3gG,KAAKm37B,qBAAqB3/zB,SAAS72B,GACnC3gG,KAAKoF,KAAKkC,MAAM,2CAA4CtH,KAAKm37B,qBAAqB1z5B,OAC/EzjC,IACX,EAMAu9gB,EAAiBn9gB,UAAUhK,OAAS,SAAUiphB,GAC1C,IAAIn7gB,EAAQlE,KACZ,OAAOA,KAAKq92B,QAAQ,WAAY,SAAU7y3B,GACtC,GAAoB,WAAhB0Z,EAAMvU,MACN,OAAOgH,QAAQC,UAEnBsN,EAAMgrC,WAAW,WAAY1kD,GAC7B,IAAIgz8B,EAAU,GAOd,OANIn+a,EAAoBn5gB,KACpBs37B,EAAQ1p8B,KAAKoQ,EAAM247B,WAAWx9a,EAAoBn5gB,MAElDm5gB,EAAoBvsZ,aACpB0q0B,EAAQ1p8B,KAAKoQ,EAAMu27B,mBAAmBp7a,EAAoBvsZ,cAEvDn8H,QAAQmvC,IAAI035B,GAAS3m8B,KAAK,WAC7BqN,EAAM+52B,cAAc,OAAQzz3B,EAChC,EAAG,SAAUyf,GAET,MADA/F,EAAM+52B,cAAc,OAAQzz3B,GACtByf,CACV,EACJ,EACJ,EAKAszgB,EAAiBn9gB,UAAUi9b,SAAW,WAClC,IAAIn5b,EAAQlE,KACZ,OAAOsz7B,EAActz7B,KAAKg4vB,iBAAiBnhwB,KAAK,SAAUw3F,GAAY,OAa9E,SAAyBuzb,EAAMvzb,GAC3B,OAAOvkG,OAAOC,OAAOskG,EAAU,CAC3BgyW,sBAAuBhyW,EAASgyW,sBAAsBttc,IAAI,SAAUuT,GAAS,OAAOm37B,GAAe77a,EAAMt7gB,EAAQ,GACjHg6b,sBAAuBjyW,EAASiyW,sBAAsBvtc,IAAI,SAAUuT,GAAS,OAAOm37B,GAAe77a,EAAMt7gB,EAAQ,GACjH65b,qBAAsB9xW,EAAS8xW,qBAAqBptc,IAAI,SAAUuT,GAAS,OAAOo37B,GAAoB97a,EAAMt7gB,EAAQ,GACpH85b,qBAAsB/xW,EAAS+xW,qBAAqBrtc,IAAI,SAAUuT,GAAS,OAAOo37B,GAAoB97a,EAAMt7gB,EAAQ,IAE5H,CApBqFq37B,CAAgBz57B,EAAOmqF,EAAW,EACnH,EACOkvb,CACX,CAv9CqC,CAu9CnC1E,GACF,SAAS6kb,GAAoB97a,EAAMt7gB,GAC/B,IAAI4lN,EAAU01T,EAAKm6a,uBAAuBz17B,EAAM4lN,SAChD,OAAOpiO,OAAOC,OAAOuc,EAAO,CAAE4lN,QAASA,GAC3C,CACA,SAASuxuB,GAAe77a,EAAMt7gB,GAC1B,IAAIiwB,EAAW29S,EAAc,GAAIx0O,EAAOkib,EAAK60a,uBAAuB577B,KAAK,SAAU07B,GAAY,OAAOA,EAASjqB,MAAMvO,KAAOuI,EAAM4lN,OAAS,GACvIA,EAAU31L,EAAWA,EAASx4B,GAAK,KACvC,OAAOjU,OAAOC,OAAOuc,EAAO,CAAE4lN,QAASA,GAC3C,CA2BA,SAAS+tuB,GAASnn0B,GACd,GAAIA,EAAY84F,IAAK,CACjB,IAAI5nO,EAAQ8uI,EAAY84F,IAAI5nO,MAAM,kCAClC,GAAIA,EACA,OAAOA,EAAM,EAErB,CACA,OAAO,IACX,CACA,SAAS0w8B,GAAiBlhb,GACtB,OAAO1phB,OAAOC,OAAO,CACjB+hB,aAAc,aACd8x7B,cAAe,WAChBpqb,EACP,CASA,SAASmob,GAAe7u7B,EAAM1E,GAC1B,IAAIkE,EAAQlE,EAAOkE,MACnB,OAAOA,GAASA,EAAMQ,OAASA,GAA6B,UAArBR,EAAM20P,UACjD,CAyGA,SAASy7rB,GAAqB96a,IAf9B,SAAoCA,GAChCA,EAAKw1a,sBAAsBt8uB,MAAQ,GACnC8mU,EAAKw1a,sBAAsBr8uB,MAAQ,GACnC6mU,EAAKo2O,gBAAgB71P,kBAAkBnwgB,QAAQ,SAAU25N,GACrD,GA/ER,SAAkCA,EAAai2T,GAC3C,OAAQj2T,EAAY+rG,UACZkqN,EAAKy1a,sBAAsB1j8B,IAAIg4N,IAChC,CAAC,WAAY,YAAYh2L,SAASg2L,EAAY58N,UACzD,CA2EY8u8B,CAAyBlyuB,EAAai2T,GAAO,CAC7C,IAAIt1gB,EAAQq/M,EAAYp1L,SAASjqB,MACjCs1gB,EAAKw1a,sBAAsB9q7B,EAAMQ,MAAMhZ,KAAK63N,EAChD,CACJ,EACJ,CAOImyuB,CAA2Bl8a,GAlD/B,SAA2BA,GACvB,IAAI9uZ,EAAc8uZ,EAAKo2O,gBAAgByvD,iBAClC30rB,GAAgBA,EAAY84F,KAGjCJ,EAAiB14F,EAAY84F,KAAK55N,QAAQ,SAAU+5N,GACjC6nuB,EAA8B7nuB,GACpC/5N,QAAQ,SAAUkuyB,EAAKhta,GAAS,OAAO0uJ,EAAKm0a,aAAazi8B,IAAI4/X,EAAQ,EAClF,EACJ,CA0CI6qkB,CAAkBn8a,GApCtB,SAA+BA,GAC3B,IAAI9uZ,EAAc8uZ,EAAKo2O,gBAAgB0vD,kBAClC50rB,GAAgBA,EAAY84F,KAGjCJ,EAAiB14F,EAAY84F,KAAK55N,QAAQ,SAAU+5N,GAChD,IAAIv/N,EAAUu/N,EAAQ/nO,MAAM,iBAC5B,GAAKwI,GAAYA,EAAQ,GAAzB,CAGA,IAAI8mC,EAAM9mC,EAAQ,GACdwx8B,EAAWpK,EAA8B7nuB,GAC7C61T,EAAKy0a,iBAAiBti8B,IAAIu/B,EAAK0q6B,EAH/B,CAIJ,EACJ,CAuBIC,CAAsBr8a,GACtBi1a,GAAyBj1a,GAAM/qhB,KAAK,WAEhC+qhB,EAAKo7a,6BACT,EACJ,CAMA,SAASnG,GAAyBj1a,GAC9B,IAAIp+gB,EAAKo+gB,EAAKtD,oBAAqB55J,EAAkBlhX,EAAGkhX,gBAAiBC,EAAkBnhX,EAAGmhX,gBAC1Fu5kB,EAAc,IAAIlr8B,IAAI,CACtB,CAAC,QAAS0xX,GACV,CAAC,QAASC,KAEVxgV,EAAW,GAgDf,OA/CAy9e,EAAKo2O,gBAAgB7vvB,aAAalX,OAAO,SAAUmX,GAAU,OAAOA,EAAOkE,KAAO,GAAGta,QAAQ,SAAUoW,GACnG,IAAI+17B,EAAaD,EAAYrq8B,IAAIuU,EAAOkE,MAAMQ,MAC1CqzC,EAAS/3C,EAAOy+3B,gBACD,OAAfs3D,GAAsC,IAAfA,EAmDnC,SAA0Bh+4B,GAClB7rD,MAAMyb,QAAQowC,EAAO43F,YACrB53F,EAAO43F,UAAU/lJ,QAAQ,SAAU04J,GAAY,cAAcA,EAASyzyB,UAAY,EAE1F,CAtDYC,CAAiBj+4B,GAEZyhe,EAAKwza,0BAA0Bht7B,EAAOkE,OAG3Cs1gB,EAAKx8gB,KAAKyH,KAAK,8BAAgCzE,EAAOkE,MAAMQ,KAAO,UAAY1E,EAAOkE,MAAMvO,GAAK,iDAAmDqK,EAAOkE,MAAMzK,OAwD7K,SAAuBs+C,EAAQg+4B,GACvBvigB,EACAz7Y,EAAO43F,UAAY,CAAC,CAAEomzB,WAAYA,IAGlCh+4B,EAAO43F,UAAU/lJ,QAAQ,SAAU04J,GAC/BA,EAASyzyB,WAAaA,CAC1B,EAER,CA9DYE,CAAcl+4B,EAAQg+4B,IAErBvigB,GAAaz7Y,EAAO43F,UAAU3jJ,OAAS,IACd,UAAtBgU,EAAOkE,MAAMQ,KAObqzC,EAAO43F,UAAU,GAAGzjD,SAAW,OAE1Bstb,EAAKwza,0BAA0Bht7B,EAAOkE,SAG3C6zC,EAAO43F,UAAU,GAAGzjD,SAAW,UAE/Bstb,EAAKuza,cAMLh14B,EAAO43F,UAAU,GAAGumzB,gBAAkB,SAI9C,IAAI1F,EAAgBh3a,EAAK20a,eAAe5i8B,IAAIyU,GAC5Cw5gB,EAAK+2a,sBAAsBvw7B,EAAOkE,MAAO6zC,EAAO43F,UAAW6gzB,GAC3Dh3a,EAAK20a,eAAe9/5B,OAAOruB,GAC3B,IAAIi6G,EAAUj6G,EAAO0+3B,cAAc3m1B,GAAQ0tK,MAAM,SAAU5jN,GACvD23gB,EAAKx8gB,KAAKyH,KAAK,gDAAkDzE,EAAOkE,MAAMQ,KAAO,UAAY1E,EAAOkE,MAAMvO,GAAK,MAAQkM,EAAMmmF,SAAWnmF,EAAM1W,MACtJ,GACA4wC,EAASrwC,KAAKuuH,EAClB,GACO1rH,QAAQmvC,IAAI3B,EACvB,CA2BAu9C,EAAOj9F,QAAU84hB,E,qCC/zDjB,IACQz9gB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACI03oB,EAAc,EAAQ,OACtBiiS,EAA+B,EAAQ,OACvCC,EAAsB,yCACtBh77B,EAAK,EAAQ,OAAY2jV,EAAkB3jV,EAAG2jV,gBAAiBssC,EAAiBjwX,EAAGiwX,eAAgBlsC,EAAgB/jV,EAAG+jV,cAAeH,EAAkB5jV,EAAG4jV,gBAqB1Jq3mB,EAA0C,SAAUz67B,GAEpD,SAASy67B,EAAyBjrb,GAC9B,IAAItvgB,EAAQF,EAAO3D,KAAKL,OAASA,KACjCyzX,EAAevvX,EAAO,wBAEtB,IAgCIwkzB,EAhCAvizB,EAAiB,IAAIyF,kBAAkB4ngB,GAqD3C,OApDA1phB,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bw67B,6BAA8B,CAC1B/48B,MAAO,KACP8lC,UAAU,GAEd0ixB,UAAW,CACPxozB,OAAO,EACP8lC,UAAU,GAEdusuB,gBAAiB,CACbrywB,MAAOwgB,GAEXw47B,aAAc,CACVh58B,OAAO,EACP8lC,UAAU,GAEd27xB,eAAgB,CACZzh0B,MAAO,IAAIqN,KAMf4r8B,aAAc,CACVlz6B,YAAY,EACZ/lC,MAAOgR,QAAQC,QAAQ,CACnB+7tB,IAAK,GACLp/tB,KAAM,QAKlB4S,EAAejO,iBAAiB,uBAAwB,WAEpD,IADA,IAAI7D,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEpBuJ,EAAMy67B,cAAgBz67B,EAAMojzB,iBAAmBoB,IAChDA,EAAyBxkzB,EAAMojzB,eAK3BpjzB,EAAMiqyB,UACN1myB,WAAW,WAAc,OAAOvD,EAAM4oP,cAAchsP,MAAMoD,EAAOgwU,EAAc,GAAIx0O,EAAOrrG,IAAS,GAGnG6P,EAAM4oP,cAAchsP,MAAMoD,EAAOgwU,EAAc,GAAIx0O,EAAOrrG,KAGtE,GACA+yV,EAAgBx7U,kBAAkBxL,UAAW8D,EAAOiC,GAC7CjC,CACX,CAsIA,OAjMAnE,EAAU0+7B,EAA0Bz67B,GA4DpCla,OAAOwY,eAAem87B,EAAyBr+7B,UAAW,oBAAqB,CAC3EvM,IAAK,WACD,OAAOmM,KAAKmuyB,UAAY,WAAanuyB,KAAKg4vB,gBAAgBmjM,iBAC9D,EACAzv6B,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAem87B,EAAyBr+7B,UAAW,mBAAoB,CAC1EvM,IAAK,WACD,OAAOgr8B,EAAyC7+7B,KAAKg4vB,gBAAgByvD,iBAAkBznzB,KAAK0+7B,6BAChG,EACAhz6B,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAem87B,EAAyBr+7B,UAAW,iBAAkB,CACxEvM,IAAK,WACD,OAAOmM,KAAKmuyB,UAAY,SAAWnuyB,KAAKg4vB,gBAAgBsvD,cAC5D,EACA57xB,YAAY,EACZuL,cAAc,IAElBwn6B,EAAyBr+7B,UAAUwM,aAAe,WAG9C,IAFA,IAKIy1G,EALAn+G,EAAQlE,KACR3L,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAOzB,OAJA0nH,EAAUriH,KAAKg4vB,gBAAgBprvB,eAAe/V,KAAK,SAAUqV,GAEzD,OADA4y7B,EAAgC567B,EAAOgI,GAChC2y7B,EAAyC3y7B,EAAQhI,EAAMw67B,6BAClE,GAC0B,mBAAZrq8B,EAAK,GACbkzV,EAAczmV,WAAM,EAAQozU,EAAc,CAAC7xN,GAAU3iB,EAAOrrG,KAAUguH,CAChF,EAQAo80B,EAAyBr+7B,UAAUqM,YAAc,WAG7C,IAFA,IAAIvI,EAAQlE,KACR3L,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IAEI0nH,EAFA7+G,EAAKk8F,EAAOrrG,EAAM,GAAI07C,EAAOvsC,EAAG,GAAIwsC,EAAOxsC,EAAG,GAC9C5T,EADyD4T,EAAG,IAC1CusC,GAAQ,CAAC,EAgB/B,OANAsyE,GALIA,EAHwB,qBAAxBriH,KAAKsnzB,gBACmB,sBAAxBtnzB,KAAKsnzB,eAEKy3I,EAAS/+7B,KADiB,qBAAxBA,KAAKsnzB,eACe,WAAc,OAAOpjzB,EAAMuI,YAAY7c,EAAU,GAGvEoQ,KAAKg4vB,gBAAgBvrvB,YAAY7c,IAE7BiH,KAAK,SAAUmV,GAC7B,OAAO,IAAIuy7B,EAA6B,CACpCvu7B,KAAMhE,EAAMgE,KACZ47M,IAAK4yuB,EAAoBt67B,EAAMkjzB,eAAgBp7yB,EAAM4/M,MAE7D,GACOv3N,EAAKD,OAAS,EACfmzV,EAAcllO,EAAStyE,EAAMC,GAC7BqyE,CACV,EAKAo80B,EAAyBr+7B,UAAUsM,oBAAsB,WAGrD,IAFA,IAAIlJ,EACAnP,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IACI0nH,EADA1+G,EAAK+7F,EAAOrrG,GAAOy+H,EAAcnvH,EAAG,GAAI6L,EAAO7L,EAAG7I,MAAM,GAK5D,OAHIg4H,GAAoC,WAArBA,EAAY9iH,MAA6C,qBAAxBhQ,KAAKsnzB,iBACrDjlsB,EAAU1rH,QAAQyK,OAAO,IAAImG,MAAM,uDAEnC86G,EACOhuH,EAAKD,OAAS,EACfmzV,EAAczmV,WAAM,EAAQozU,EAAc,CAAC7xN,GAAU3iB,EAAOlwF,KAAU6yG,GAExE7+G,EAAKxD,KAAKg4vB,iBAAiBtrvB,oBAAoB5L,MAAM0C,EAAI0wU,EAAc,GAAIx0O,EAAOrrG,IAC9F,EAYAoq8B,EAAyBr+7B,UAAUuM,qBAAuB,WAGtD,IAFA,IAAIzI,EAAQlE,KACR3L,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,GAAMxG,UAAUwG,GAEzB,IACI0nH,EADA7+G,EAAKk8F,EAAOrrG,GAAOy+H,EAActvH,EAAG,GAAIgM,EAAOhM,EAAG1I,MAAM,GAc5D,OAZIg4H,GAAuC,sBAAxB9yH,KAAKsnzB,iBACK,WAArBx0rB,EAAY9iH,KACZqyG,EAAU1rH,QAAQyK,OAAO,IAAImG,MAAM,wDAET,UAArBurH,EAAY9iH,OACjBqyG,EAAU080B,EAAS/+7B,MAAM,EAAO,WAAc,OAAOkE,EAAM8zvB,gBAAgBrrvB,qBAAqBmmH,EAAc,KAGjHzQ,IACDA,EAAUriH,KAAKg4vB,gBAAgBrrvB,qBAAqBmmH,IAExDzQ,EAAUA,EAAQxrH,KAAK,WAAc,OAAOio8B,EAAgC567B,EAAO4uH,GAAa,EAAO,GAChGz+H,EAAKD,OAAS,EACfmzV,EAAczmV,WAAM,EAAQozU,EAAc,CAAC7xN,GAAU3iB,EAAOlwF,KAAU6yG,CAChF,EAIAo80B,EAAyBr+7B,UAAUqN,MAAQ,WACX,WAAxBzN,KAAKsnzB,iBACLtnzB,KAAKmuyB,WAAY,EACjBnuyB,KAAKg4vB,gBAAgBvqvB,QAE7B,EACOgx7B,CACX,CAnM6C,CAmM3CniS,GAEF,SAASyiS,EAAS547B,EAAgBwlB,EAAOqz6B,GACrC,IAAIty7B,EAAsBif,EAAQ,sBAAwB,uBAE1D,OADAxlB,EAAew47B,cAAe,EACvBx47B,EAAe6xvB,gBAAgBtrvB,GAAqB,IAAI6x7B,EAA6B,CACxFvu7B,KAAM,cACNnZ,KAAKmo8B,GAAgBno8B,KAAK,SAAU1D,GAEpC,OADAgT,EAAew47B,cAAe,EACvBxr8B,CACX,EAAG,SAAU8W,GAET,MADA9D,EAAew47B,cAAe,EACxB107B,CACV,EACJ,CAeA,SAAS607B,EAAgC347B,EAAgB2sH,EAAa7yB,GAIlE,IAAI95F,EAAeu47B,8BAAqD,UAArB5r0B,EAAY9iH,KAA/D,CAGA,IAAIhsB,EAAQ8uI,EAAY84F,IAAI5nO,MAAM,oBAClC,GAAKA,EAAL,CAGA,IAAIi78B,EAAWj78B,EAAM,GACrBmiB,EAAeu47B,6BAA+Bz+1B,EAAS,CACnDl8D,OAAQ,UACR13C,QAAS,UACX4y8B,GAAYA,CALd,CAJA,CAUJ,CAaA,SAASJ,EAAyC/r0B,EAAams0B,GAC3D,OAAIns0B,GAAoC,WAArBA,EAAY9iH,MAAqBiv7B,EACzC,IAAIV,EAA6B,CACpCvu7B,KAAM8iH,EAAY9iH,KAClB47M,IAAK94F,EAAY84F,IAAI7nO,QAAQ,kBAAmB,WAAak78B,KAG9Dns0B,CACX,CAjEAq0N,EAAgBv7U,kBAAkBxL,UAAWq+7B,EAAyBr+7B,UAAW,mBAkEjFshF,EAAOj9F,QAAUg68B,C,+BClUjB,EAAQ,M,kBCFR,IAAIS,EAAkB,EAAQ,OAC1B32uB,EAAe,EAAQ,OAGvB3mI,EAAc93F,OAAOsW,UAGrBxU,EAAiBg2F,EAAYh2F,eAG7Bu2F,EAAuBP,EAAYO,qBAoBnC26H,EAAcoivB,EAAgB,WAAa,OAAO/q8B,SAAW,CAA/B,IAAsC+q8B,EAAkB,SAASv58B,GACjG,OAAO4iO,EAAa5iO,IAAUiG,EAAeyU,KAAK1a,EAAO,YACtDw8F,EAAqB9hF,KAAK1a,EAAO,SACtC,EAEA+7F,EAAOj9F,QAAUq4N,C,+BClCjB,IAAIr1N,EAAS,EAAQ,OACrB,EAAQ,OAERi6F,EAAOj9F,QAAUgD,C,yBCKT,SAAW5G,GAAU,aAIZA,EAAOG,aAAa,UAAW,CACxCC,OAAQ,6EAA6EC,MACjF,KAEJC,YAAa,oDAAoDD,MAAM,KACvEE,SACI,+DAA+DF,MAC3D,KAERG,cAAe,kCAAkCH,MAAM,KACvDI,YAAa,yBAAyBJ,MAAM,KAC5CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNC,EAAG,SACHC,GAAI,YACJC,EAAG,aACHC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA1DyCC,CAAQ,EAAQ,O,yBCJ1Dm9F,EAAOj9F,QAAU,SAAUsR,EAAMg6B,GACxBA,IAAMA,EAAO,CAAC,GACC,mBAATA,IAAqBA,EAAO,CAAEsD,IAAKtD,IAC9C,IAEiCruB,EAF7By97B,EAAiC,kBAAhBpv6B,EAAKov6B,QAAwBpv6B,EAAKov6B,OAEnD9r6B,EAAMtD,EAAKsD,MAAkB3xB,EAQ9BquB,EAAKsD,IAPG,SAAUtsC,GACb,OAAO,SAAU6S,EAAGC,GAChB,IAAIul8B,EAAO,CAAE508B,IAAKoP,EAAGjU,MAAOoB,EAAK6S,IAC7Byl8B,EAAO,CAAE708B,IAAKqP,EAAGlU,MAAOoB,EAAK8S,IACjC,OAAO6H,EAAE097B,EAAMC,EACnB,CACJ,GAGAr3zB,EAAO,GACX,OAAO,SAAUp+H,EAAW7iB,GAKxB,GAJIA,GAAQA,EAAK82N,QAAiC,mBAAhB92N,EAAK82N,SACnC92N,EAAOA,EAAK82N,eAGH/mN,IAAT/P,EAAJ,CACA,GAAmB,iBAARA,EAAkB,OAAOqpB,SAASrpB,GAAQ,GAAKA,EAAO,OACjE,GAAoB,iBAATA,EAAmB,OAAO4iB,KAAKC,UAAU7iB,GAEpD,IAAI1B,EAAGokH,EACP,GAAIn1G,MAAMyb,QAAQhpB,GAAO,CAErB,IADA0iH,EAAM,IACDpkH,EAAI,EAAGA,EAAI0B,EAAKqN,OAAQ/O,IACrBA,IAAGokH,GAAO,KACdA,GAAO7/F,EAAU7iB,EAAK1B,KAAO,OAEjC,OAAOokH,EAAM,GACjB,CAEA,GAAa,OAAT1iH,EAAe,MAAO,OAE1B,IAA4B,IAAxBihJ,EAAKz/I,QAAQxB,GAAc,CAC3B,GAAIo48B,EAAQ,OAAOx17B,KAAKC,UAAU,aAClC,MAAM,IAAItJ,UAAU,wCACxB,CAEA,IAAIwj2B,EAAY97tB,EAAKl0I,KAAK/M,GAAQ,EAC9BsD,EAAOP,OAAOO,KAAKtD,GAAMqM,KAAKigC,GAAOA,EAAItsC,IAE7C,IADA0iH,EAAM,GACDpkH,EAAI,EAAGA,EAAIgF,EAAK+J,OAAQ/O,IAAK,CAC9B,IAAImF,EAAMH,EAAKhF,GACXM,EAAQikB,EAAU7iB,EAAKyD,IAEtB7E,IACD8jH,IAAKA,GAAO,KAChBA,GAAO9/F,KAAKC,UAAUpf,GAAO,IAAM7E,EACvC,CAEA,OADAqiJ,EAAKj7G,OAAO+20B,EAAW,GAChB,IAAMr6vB,EAAM,GAjCW,CAkCjC,CAvCM,CAuCJ1zG,EACP,C,+BCxDA2rF,EAAOj9F,QAAUgkO,EACjB/mI,EAAOj9F,QAAP,QAAyBgkO,EAEzB,IAAI62uB,EAAc,EAAQ,OAE1B,SAAS72uB,EAAMM,EAAYvqL,GACvB,KAAMx+B,gBAAgByoN,GAAQ,OAAO,IAAIA,EAAMM,EAAYvqL,GAG3Dx+B,KAAKu/7B,YAAc/58B,KAAKmE,IAAI,EAAGo/N,GAAc,GAC7C/oN,KAAKw/7B,YAAch68B,KAAKmE,IAAI,EAAGnE,KAAKsjE,KAAwB,GAAnB9oD,KAAKu/7B,cAE1C/g6B,GACAx+B,KAAKy/7B,YAAYjh6B,GAGrBx+B,KAAK+6D,OACT,CAubA,SAAS2k4B,EAAS1s7B,EAAMkhB,EAAOyr6B,GAC3B,IAAKA,EAAU,OAAOzr6B,EAAM3rC,QAAQyqB,GAEpC,IAAK,IAAI3tB,EAAI,EAAGA,EAAI6uC,EAAM9/B,OAAQ/O,IAC9B,GAAIs68B,EAAS3s7B,EAAMkhB,EAAM7uC,IAAK,OAAOA,EAEzC,OAAQ,CACZ,CAGA,SAASu68B,EAAS748B,EAAMkiO,GACpB42uB,EAAS948B,EAAM,EAAGA,EAAKywH,SAASpjH,OAAQ60N,EAAQliO,EACpD,CAGA,SAAS848B,EAAS948B,EAAM0qB,EAAGtR,EAAG8oN,EAAQ62uB,GAC7BA,IAAUA,EAAWl2K,EAAW,OACrCk2K,EAAS1n5B,KAAO7yD,IAChBu68B,EAASzn5B,KAAO9yD,IAChBu68B,EAAS5n5B,MAAO,IAChB4n5B,EAAS3n5B,MAAO,IAEhB,IAAK,IAAWzwD,EAAPrC,EAAIosB,EAAUpsB,EAAI8a,EAAG9a,IAC1BqC,EAAQX,EAAKywH,SAASnyH,GACtB29G,EAAO881B,EAAU/48B,EAAKq5f,KAAOn3R,EAAOvhO,GAASA,GAGjD,OAAOo48B,CACX,CAEA,SAAS981B,EAAOppG,EAAGC,GAKf,OAJAD,EAAEw+C,KAAO5yD,KAAKkE,IAAIkQ,EAAEw+C,KAAMv+C,EAAEu+C,MAC5Bx+C,EAAEy+C,KAAO7yD,KAAKkE,IAAIkQ,EAAEy+C,KAAMx+C,EAAEw+C,MAC5Bz+C,EAAEs+C,KAAO1yD,KAAKmE,IAAIiQ,EAAEs+C,KAAMr+C,EAAEq+C,MAC5Bt+C,EAAEu+C,KAAO3yD,KAAKmE,IAAIiQ,EAAEu+C,KAAMt+C,EAAEs+C,MACrBv+C,CACX,CAEA,SAASmm8B,EAAgBnm8B,EAAGC,GAAK,OAAOD,EAAEw+C,KAAOv+C,EAAEu+C,IAAM,CACzD,SAAS4n5B,EAAgBpm8B,EAAGC,GAAK,OAAOD,EAAEy+C,KAAOx+C,EAAEw+C,IAAM,CAEzD,SAAS4n5B,EAASrm8B,GAAO,OAAQA,EAAEs+C,KAAOt+C,EAAEw+C,OAASx+C,EAAEu+C,KAAOv+C,EAAEy+C,KAAO,CACvE,SAAS6n5B,EAAWtm8B,GAAK,OAAQA,EAAEs+C,KAAOt+C,EAAEw+C,MAASx+C,EAAEu+C,KAAOv+C,EAAEy+C,KAAO,CAEvE,SAAS8n5B,EAAavm8B,EAAGC,GACrB,OAAQrU,KAAKmE,IAAIkQ,EAAEq+C,KAAMt+C,EAAEs+C,MAAQ1yD,KAAKkE,IAAImQ,EAAEu+C,KAAMx+C,EAAEw+C,QAC9C5yD,KAAKmE,IAAIkQ,EAAEs+C,KAAMv+C,EAAEu+C,MAAQ3yD,KAAKkE,IAAImQ,EAAEw+C,KAAMz+C,EAAEy+C,MAC1D,CAEA,SAAS89mB,EAAiBv8pB,EAAGC,GACzB,IAAIu+C,EAAO5yD,KAAKmE,IAAIiQ,EAAEw+C,KAAMv+C,EAAEu+C,MAC1BC,EAAO7yD,KAAKmE,IAAIiQ,EAAEy+C,KAAMx+C,EAAEw+C,MAC1BH,EAAO1yD,KAAKkE,IAAIkQ,EAAEs+C,KAAMr+C,EAAEq+C,MAC1BC,EAAO3yD,KAAKkE,IAAIkQ,EAAEu+C,KAAMt+C,EAAEs+C,MAE9B,OAAO3yD,KAAKmE,IAAI,EAAGuuD,EAAOE,GACnB5yD,KAAKmE,IAAI,EAAGwuD,EAAOE,EAC9B,CAEA,SAAS7wD,EAASoS,EAAGC,GACjB,OAAOD,EAAEw+C,MAAQv+C,EAAEu+C,MACZx+C,EAAEy+C,MAAQx+C,EAAEw+C,MACZx+C,EAAEq+C,MAAQt+C,EAAEs+C,MACZr+C,EAAEs+C,MAAQv+C,EAAEu+C,IACvB,CAEA,SAASijW,EAAWxhZ,EAAGC,GACnB,OAAOA,EAAEu+C,MAAQx+C,EAAEs+C,MACZr+C,EAAEw+C,MAAQz+C,EAAEu+C,MACZt+C,EAAEq+C,MAAQt+C,EAAEw+C,MACZv+C,EAAEs+C,MAAQv+C,EAAEy+C,IACvB,CAEA,SAASuxuB,EAAWpyqB,GAChB,MAAO,CACHA,SAAUA,EACV5wH,OAAQ,EACRw5f,MAAM,EACNhoc,KAAM7yD,IACN8yD,KAAM9yD,IACN2yD,MAAM,IACNC,MAAM,IAEd,CAKA,SAASio5B,EAAYxp6B,EAAKzsC,EAAMF,EAAO4W,EAAG6+B,GAItC,IAHA,IACIpM,EADAiT,EAAQ,CAACp8C,EAAMF,GAGZs8C,EAAMnyC,SACTnK,EAAQs8C,EAAMlkC,QACdlY,EAAOo8C,EAAMlkC,QAEOxB,IAEpByyB,EAAMnpC,EAAO3E,KAAKsjE,MAAM7+D,EAAQE,GAAQ0W,EAAI,GAAKA,EACjDy+7B,EAAY1o6B,EAAKtD,EAAKnpC,EAAMF,EAAOy1C,GAEnC6G,EAAMzyC,KAAK3J,EAAMmpC,EAAKA,EAAKrpC,GAEnC,CA5hBAw+N,EAAMroN,UAAY,CAEd0lC,IAAK,WACD,OAAO9lC,KAAKqg8B,KAAKrg8B,KAAKjK,KAAM,GAChC,EAEAu3M,OAAQ,SAAU1P,GAEd,IAAI72M,EAAOiZ,KAAKjK,KACZ5C,EAAS,GACT81N,EAASjpN,KAAKipN,OAElB,IAAKmyL,EAAWx9M,EAAM72M,GAAO,OAAOoM,EAKpC,IAHA,IACI9N,EAAGoK,EAAK/H,EAAO448B,EADfC,EAAgB,GAGbx58B,GAAM,CACT,IAAK1B,EAAI,EAAGoK,EAAM1I,EAAKywH,SAASpjH,OAAQ/O,EAAIoK,EAAKpK,IAE7CqC,EAAQX,EAAKywH,SAASnyH,GAGlB+1Z,EAAWx9M,EAFf0iwB,EAAYv58B,EAAKq5f,KAAOn3R,EAAOvhO,GAASA,KAGhCX,EAAKq5f,KAAMjtf,EAAOW,KAAKpM,GAClBF,EAASo2M,EAAM0iwB,GAAYtg8B,KAAKqg8B,KAAK348B,EAAOyL,GAChDot8B,EAAczs8B,KAAKpM,IAGhCX,EAAOw58B,EAAcl+7B,KACzB,CAEA,OAAOlP,CACX,EAEA+1N,SAAU,SAAUtrB,GAEhB,IAAI72M,EAAOiZ,KAAKjK,KACZkzN,EAASjpN,KAAKipN,OAElB,IAAKmyL,EAAWx9M,EAAM72M,GAAO,OAAO,EAKpC,IAHA,IACI1B,EAAGoK,EAAK/H,EAAO448B,EADfC,EAAgB,GAGbx58B,GAAM,CACT,IAAK1B,EAAI,EAAGoK,EAAM1I,EAAKywH,SAASpjH,OAAQ/O,EAAIoK,EAAKpK,IAK7C,GAHAqC,EAAQX,EAAKywH,SAASnyH,GAGlB+1Z,EAAWx9M,EAFf0iwB,EAAYv58B,EAAKq5f,KAAOn3R,EAAOvhO,GAASA,GAEP,CAC7B,GAAIX,EAAKq5f,MAAQ54f,EAASo2M,EAAM0iwB,GAAY,OAAO,EACnDC,EAAczs8B,KAAKpM,EACvB,CAEJX,EAAOw58B,EAAcl+7B,KACzB,CAEA,OAAO,CACX,EAEA2mN,KAAM,SAAUjzN,GACZ,IAAMA,IAAQA,EAAK3B,OAAS,OAAO4L,KAEnC,GAAIjK,EAAK3B,OAAS4L,KAAKw/7B,YAAa,CAChC,IAAK,IAAIn68B,EAAI,EAAGoK,EAAMsG,EAAK3B,OAAQ/O,EAAIoK,EAAKpK,IACxC2a,KAAKmxF,OAAOp7F,EAAK1Q,IAErB,OAAO2a,IACX,CAGA,IAAIjZ,EAAOiZ,KAAKwg8B,OAAOzq8B,EAAK+E,QAAS,EAAG/E,EAAK3B,OAAS,EAAG,GAEzD,GAAK4L,KAAKjK,KAAKyhH,SAASpjH,OAIjB,GAAI4L,KAAKjK,KAAKnP,SAAWG,EAAKH,OAEjCoZ,KAAKyg8B,WAAWzg8B,KAAKjK,KAAMhP,OAExB,CACH,GAAIiZ,KAAKjK,KAAKnP,OAASG,EAAKH,OAAQ,CAEhC,IAAI858B,EAAU1g8B,KAAKjK,KACnBiK,KAAKjK,KAAOhP,EACZA,EAAO258B,CACX,CAGA1g8B,KAAK2g8B,QAAQ558B,EAAMiZ,KAAKjK,KAAKnP,OAASG,EAAKH,OAAS,GAAG,EAC3D,MAhBIoZ,KAAKjK,KAAOhP,EAkBhB,OAAOiZ,IACX,EAEAmxF,OAAQ,SAAUn+E,GAEd,OADIA,GAAMhT,KAAK2g8B,QAAQ3t7B,EAAMhT,KAAKjK,KAAKnP,OAAS,GACzCoZ,IACX,EAEA+6D,MAAO,WAEH,OADA/6D,KAAKjK,KAAO6zxB,EAAW,IAChB5pxB,IACX,EAEA4iC,OAAQ,SAAU5vB,EAAM2s7B,GACpB,IAAK3s7B,EAAM,OAAOhT,KASlB,IAPA,IAII3a,EAAGoC,EAAQ+O,EAAOoq8B,EAJlB758B,EAAOiZ,KAAKjK,KACZ6nM,EAAO59L,KAAKipN,OAAOj2M,GACnB61D,EAAO,GACPypB,EAAU,GAIPvrG,GAAQ8hF,EAAKz0E,QAAQ,CASxB,GAPKrN,IACDA,EAAO8hF,EAAKxmE,MACZ5a,EAASohF,EAAKA,EAAKz0E,OAAS,GAC5B/O,EAAIitG,EAAQjwF,MACZu+7B,GAAU,GAGV758B,EAAKq5f,OAGU,KAFf5pf,EAAQkp8B,EAAS1s7B,EAAMjsB,EAAKywH,SAAUmo1B,IAOlC,OAHA548B,EAAKywH,SAASzqF,OAAOv2B,EAAO,GAC5BqyE,EAAK/0E,KAAK/M,GACViZ,KAAK6g8B,UAAUh43B,GACR7oE,KAIV4g8B,GAAY758B,EAAKq5f,OAAQ54f,EAAST,EAAM62M,GAOlCn2M,GACPpC,IACA0B,EAAOU,EAAO+vH,SAASnyH,GACvBu78B,GAAU,GAEP758B,EAAO,MAXV8hF,EAAK/0E,KAAK/M,GACVurG,EAAQx+F,KAAKzO,GACbA,EAAI,EACJoC,EAASV,EACTA,EAAOA,EAAKywH,SAAS,GAQ7B,CAEA,OAAOx3G,IACX,EAEAipN,OAAQ,SAAUj2M,GAAQ,OAAOA,CAAM,EAEvCi66B,YAAa8S,EACb7S,YAAa8S,EAEbnivB,OAAQ,WAAc,OAAO79M,KAAKjK,IAAM,EAExCozN,SAAU,SAAUpzN,GAEhB,OADAiK,KAAKjK,KAAOA,EACLiK,IACX,EAEAqg8B,KAAM,SAAUt58B,EAAMoM,GAElB,IADA,IAAIot8B,EAAgB,GACbx58B,GACCA,EAAKq5f,KAAMjtf,EAAOW,KAAKgN,MAAM3N,EAAQpM,EAAKywH,UACzC+o1B,EAAczs8B,KAAKgN,MAAMy/7B,EAAex58B,EAAKywH,UAElDzwH,EAAOw58B,EAAcl+7B,MAEzB,OAAOlP,CACX,EAEAqt8B,OAAQ,SAAUts6B,EAAO/pC,EAAMF,EAAOrD,GAElC,IAEIG,EAFAg0B,EAAI9wB,EAAQE,EAAO,EACnB1G,EAAIuc,KAAKu/7B,YAGb,GAAIxk7B,GAAKt3B,EAIL,OADAm88B,EADA748B,EAAO6iyB,EAAW11vB,EAAMp5B,MAAM3Q,EAAMF,EAAQ,IAC7B+V,KAAKipN,QACbliO,EAGNH,IAEDA,EAASpB,KAAKsjE,KAAKtjE,KAAKS,IAAI80B,GAAKv1B,KAAKS,IAAIxC,IAG1CA,EAAI+B,KAAKsjE,KAAK/tC,EAAIv1B,KAAKC,IAAIhC,EAAGmD,EAAS,MAG3CG,EAAO6iyB,EAAW,KACbxpS,MAAO,EACZr5f,EAAKH,OAASA,EAId,IAEIvB,EAAG2gC,EAAG866B,EAAQC,EAFdC,EAAKx78B,KAAKsjE,KAAK/tC,EAAIt3B,GACnBw98B,EAAKD,EAAKx78B,KAAKsjE,KAAKtjE,KAAK0vB,KAAKzxB,IAKlC,IAFA288B,EAAYls6B,EAAO/pC,EAAMF,EAAOg38B,EAAIjh8B,KAAKit7B,aAEpC5n8B,EAAI8E,EAAM9E,GAAK4E,EAAO5E,GAAK478B,EAM5B,IAFAb,EAAYls6B,EAAO7uC,EAFnBy78B,EAASt78B,KAAKkE,IAAIrE,EAAI478B,EAAK,EAAGh38B,GAEA+28B,EAAIhh8B,KAAKkt7B,aAElCln6B,EAAI3gC,EAAG2gC,GAAK866B,EAAQ966B,GAAKg76B,EAE1BD,EAASv78B,KAAKkE,IAAIs8B,EAAIg76B,EAAK,EAAGF,GAG9B/58B,EAAKywH,SAAS1jH,KAAKkM,KAAKwg8B,OAAOts6B,EAAOlO,EAAG+66B,EAAQn68B,EAAS,IAMlE,OAFAg58B,EAAS748B,EAAMiZ,KAAKipN,QAEbliO,CACX,EAEAm68B,eAAgB,SAAUtjwB,EAAM72M,EAAMijB,EAAO6+D,GAIzC,IAFA,IAAIxjF,EAAGoK,EAAK/H,EAAOy58B,EAAYry6B,EAAMsy6B,EAAaC,EAASC,EAGvDz43B,EAAK/0E,KAAK/M,IAENA,EAAKq5f,MAAQv3a,EAAKz0E,OAAS,IAAM4V,GAH5B,CAOT,IAFAq37B,EAAUC,EAAiB/78B,IAEtBF,EAAI,EAAGoK,EAAM1I,EAAKywH,SAASpjH,OAAQ/O,EAAIoK,EAAKpK,IAE7CypC,EAAOmx6B,EADPv48B,EAAQX,EAAKywH,SAASnyH,KAEtB+78B,EAAcjB,EAAaviwB,EAAMl2M,GAASonC,GAGxBwy6B,GACdA,EAAiBF,EACjBC,EAAUvy6B,EAAOuy6B,EAAUvy6B,EAAOuy6B,EAClCF,EAAaz58B,GAEN058B,IAAgBE,GAEnBxy6B,EAAOuy6B,IACPA,EAAUvy6B,EACVqy6B,EAAaz58B,GAKzBX,EAAOo68B,GAAcp68B,EAAKywH,SAAS,EACvC,CAEA,OAAOzwH,CACX,EAEA458B,QAAS,SAAU3t7B,EAAMhJ,EAAOu37B,GAE5B,IAAIt4uB,EAASjpN,KAAKipN,OACdrrB,EAAO2jwB,EAASvu7B,EAAOi2M,EAAOj2M,GAC9Bwu7B,EAAa,GAGbz68B,EAAOiZ,KAAKkh8B,eAAetjwB,EAAM59L,KAAKjK,KAAMiU,EAAOw37B,GAOvD,IAJAz68B,EAAKywH,SAAS1jH,KAAKkf,GACnBgwF,EAAOj8G,EAAM62M,GAGN5zL,GAAS,GACRw37B,EAAWx37B,GAAOwtG,SAASpjH,OAAS4L,KAAKu/7B,aACzCv/7B,KAAKyh8B,OAAOD,EAAYx37B,GACxBA,IAKRhK,KAAK0h8B,oBAAoB9jwB,EAAM4jwB,EAAYx37B,EAC/C,EAGAy37B,OAAQ,SAAUD,EAAYx37B,GAE1B,IAAIjjB,EAAOy68B,EAAWx37B,GAClBvmB,EAAIsD,EAAKywH,SAASpjH,OAClBjR,EAAI6c,KAAKw/7B,YAEbx/7B,KAAK2h8B,iBAAiB568B,EAAM5D,EAAGM,GAE/B,IAAIm+8B,EAAa5h8B,KAAK6h8B,kBAAkB968B,EAAM5D,EAAGM,GAE7Cg+R,EAAUmogB,EAAW7iyB,EAAKywH,SAASzqF,OAAO606B,EAAY768B,EAAKywH,SAASpjH,OAASwt8B,IACjFngrB,EAAQ76R,OAASG,EAAKH,OACtB66R,EAAQ2+N,KAAOr5f,EAAKq5f,KAEpBw/c,EAAS748B,EAAMiZ,KAAKipN,QACpB22uB,EAASn+qB,EAASzhR,KAAKipN,QAEnBj/M,EAAOw37B,EAAWx37B,EAAQ,GAAGwtG,SAAS1jH,KAAK2tR,GAC1CzhR,KAAKyg8B,WAAW158B,EAAM06R,EAC/B,EAEAg/qB,WAAY,SAAU158B,EAAM06R,GAExBzhR,KAAKjK,KAAO6zxB,EAAW,CAAC7iyB,EAAM06R,IAC9BzhR,KAAKjK,KAAKnP,OAASG,EAAKH,OAAS,EACjCoZ,KAAKjK,KAAKqqf,MAAO,EACjBw/c,EAAS5/7B,KAAKjK,KAAMiK,KAAKipN,OAC7B,EAEA44uB,kBAAmB,SAAU968B,EAAM5D,EAAGM,GAElC,IAAI4B,EAAGy88B,EAAOC,EAAOnyZ,EAAS9ghB,EAAMkz6B,EAAYX,EAAS7q8B,EAIzD,IAFAwr8B,EAAaX,EAAU978B,IAElBF,EAAIlC,EAAGkC,GAAK5B,EAAIN,EAAGkC,IAIpBuqjB,EAAUumH,EAHV2rS,EAAQjC,EAAS948B,EAAM,EAAG1B,EAAG2a,KAAKipN,QAClC84uB,EAAQlC,EAAS948B,EAAM1B,EAAG5B,EAAGuc,KAAKipN,SAGlCn6L,EAAOmx6B,EAAS6B,GAAS7B,EAAS8B,GAG9BnyZ,EAAUoyZ,GACVA,EAAapyZ,EACbp5iB,EAAQnR,EAERg88B,EAAUvy6B,EAAOuy6B,EAAUvy6B,EAAOuy6B,GAE3BzxZ,IAAYoyZ,GAEflz6B,EAAOuy6B,IACPA,EAAUvy6B,EACVt4B,EAAQnR,GAKpB,OAAOmR,CACX,EAGAmr8B,iBAAkB,SAAU568B,EAAM5D,EAAGM,GAEjC,IAAIwp8B,EAAclm8B,EAAKq5f,KAAOpgf,KAAKit7B,YAAc8S,EAC7C7S,EAAcnm8B,EAAKq5f,KAAOpgf,KAAKkt7B,YAAc8S,EACnChg8B,KAAKii8B,eAAel78B,EAAM5D,EAAGM,EAAGwp8B,GAChCjt7B,KAAKii8B,eAAel78B,EAAM5D,EAAGM,EAAGyp8B,IAIvBnm8B,EAAKywH,SAASpkH,KAAK657B,EAC9C,EAGAgV,eAAgB,SAAUl78B,EAAM5D,EAAGM,EAAGi8C,GAElC34C,EAAKywH,SAASpkH,KAAKssC,GAEnB,IAIIr6C,EAAGqC,EAJHuhO,EAASjpN,KAAKipN,OACdi5uB,EAAWrC,EAAS948B,EAAM,EAAG5D,EAAG8lO,GAChCk5uB,EAAYtC,EAAS948B,EAAMtD,EAAIN,EAAGM,EAAGwlO,GACrCl6L,EAASmx6B,EAAWgC,GAAYhC,EAAWiC,GAG/C,IAAK988B,EAAIlC,EAAGkC,EAAI5B,EAAIN,EAAGkC,IACnBqC,EAAQX,EAAKywH,SAASnyH,GACtB29G,EAAOk/1B,EAAUn78B,EAAKq5f,KAAOn3R,EAAOvhO,GAASA,GAC7CqnC,GAAUmx6B,EAAWgC,GAGzB,IAAK788B,EAAI5B,EAAIN,EAAI,EAAGkC,GAAKlC,EAAGkC,IACxBqC,EAAQX,EAAKywH,SAASnyH,GACtB29G,EAAOm/1B,EAAWp78B,EAAKq5f,KAAOn3R,EAAOvhO,GAASA,GAC9CqnC,GAAUmx6B,EAAWiC,GAGzB,OAAOpz6B,CACX,EAEA2y6B,oBAAqB,SAAU9jwB,EAAM/0H,EAAM7+D,GAEvC,IAAK,IAAI3kB,EAAI2kB,EAAO3kB,GAAK,EAAGA,IACxB29G,EAAOn6B,EAAKxjF,GAAIu4M,EAExB,EAEAijwB,UAAW,SAAUh43B,GAEjB,IAAK,IAAyB2ib,EAArBnmgB,EAAIwjF,EAAKz0E,OAAS,EAAa/O,GAAK,EAAGA,IACZ,IAA5BwjF,EAAKxjF,GAAGmyH,SAASpjH,OACb/O,EAAI,GACJmmgB,EAAW3ib,EAAKxjF,EAAI,GAAGmyH,UACdzqF,OAAOy+d,EAASjjgB,QAAQsgF,EAAKxjF,IAAK,GAExC2a,KAAK+6D,QAET6k4B,EAAS/23B,EAAKxjF,GAAI2a,KAAKipN,OAEtC,EAEAw2uB,YAAa,SAAUjh6B,GAOnB,IAAI4j6B,EAAa,CAAC,WAAY,OAAQ,KAEtCpi8B,KAAKit7B,YAAc,IAAIxh1B,SAAS,IAAK,IAAK221B,EAAWlk8B,KAAKsgC,EAAO,KACjEx+B,KAAKkt7B,YAAc,IAAIzh1B,SAAS,IAAK,IAAK221B,EAAWlk8B,KAAKsgC,EAAO,KAEjEx+B,KAAKipN,OAAS,IAAIx9G,SAAS,IACvB,kBAAoBjtE,EAAO,GAC3B,YAAcA,EAAO,GACrB,YAAcA,EAAO,GACrB,YAAcA,EAAO,GAAK,KAClC,E,6BCjcJ,SAAS69B,IACL,MAAkC,oBAApBU,gBAAkC,IAAIA,gBAAgB,EAAG,GAAKt0E,SAASskB,cAAc,SACvG,CAIA,SAASs17B,IACL,MAAsB,oBAAXl78B,QAA8C,oBAAbsB,aAC9B4zE,IAAY/uC,WAAW,QAAS+uC,IAAY/uC,WAAW,UAKzE,CAlBAxjC,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ4qhB,YAAc5qhB,EAAQks4B,sBAAwBls4B,EAAQ498B,wBAAqB,EAkBnF598B,EAAQ498B,mBAAqBA,EAS7B598B,EAAQks4B,sBALR,WACI,MAAyB,iBAAX7+pB,QACP,SAAS5vO,KAAKoM,UAAUC,YACK,mBAAtBkrP,iBAClB,EAiBAh1P,EAAQ4qhB,YAAcgzb,G,kBC7CtB,IAAI798B,EAAS,EAAQ,OACjB898B,EAAY,EAAQ,KACpBpqoB,EAAiB,EAAQ,OAOzBp2O,EAAiBt9F,EAASA,EAAOgwC,iBAAc19B,EAkBnD4qF,EAAOj9F,QATP,SAAoBkB,GAClB,OAAa,MAATA,OACemR,IAAVnR,EAdQ,qBADL,gBAiBJm8F,GAAkBA,KAAkBh4F,OAAOnE,GAC/C288B,EAAU388B,GACVuyU,EAAevyU,EACrB,C,qCCvBA,IACQma,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEA4C,EAAe,sBACfm/7B,EAAe,CACf,YACA,OACA,QACA,UACA,kBACA,aAEAC,EAAe,CACf,QACA,QACA,OACA,WAQAl/7B,EAA+B,SAAUU,GASzC,SAASV,EAAcmL,EAAWg07B,EAAkBx88B,EAAKu5sB,QAC/B,IAAlBA,IAA4BA,EAAgB,MAChD,IAAIt7rB,EAAQF,EAAO3D,KAAKL,OAASA,KAqCjC,OApCAkE,EAAMymG,GAAG,QAAS,SAAUnnG,GACxB,IAAIjQ,EAAOiQ,EAAGjQ,KAAMwW,EAAQvG,EAAGuG,MAAOC,EAAQxG,EAAGwG,MAAOE,EAAU1G,EAAG0G,QACrE,GAAoB,iBAAT3W,EAEP,MADAtN,EAAIgkB,MAAM,oBAAqB1W,GACzB,IAAIgU,MAAM,oBAAqBhU,GAEzC,IAAKgv8B,EAAa5s6B,SAAS5rB,GAEvB,MADA9jB,EAAIgkB,MAAM,qBAAsBF,GAC1B,IAAIxC,MAAM,qBAAsBwC,GAE1C,IAAKy47B,EAAa7s6B,SAAS3rB,GAEvB,MADA/jB,EAAIgkB,MAAM,qBAAsBD,GAC1B,IAAIzC,MAAM,qBAAsByC,GAE1C,IAAI8D,EAAYjF,KAAKC,MACjB4+a,EAAc55a,EAAY207B,EAC1BC,EAAmB548B,OAAOC,OAAO,CAAE29b,YAAaA,EAAa19a,MAAOA,GAASE,GAAoB,CAAC,GACtGuE,EAAU+pH,QAAQzuH,EAAOxW,EAAMmv8B,GAC/B,IAAIv27B,EAAQriB,OAAOC,OAAO,CACtB29b,YAAaA,EACb39a,MAAOA,EACPC,MAAOA,EACPzW,KAAMA,EACNua,UAAWA,GACZ5D,EAAU,CAAEA,QAASA,GAAY,CAAC,GAOrCjkB,EANe,CACXqhB,MAAO,QACP2C,MAAO,QACP8oB,KAAM,OACN+8kB,QAAS,QACX9lmB,IACY,QAASmC,GACnBqzrB,GAA2B,cAAVz1rB,GACjBy1rB,EAAc30rB,KAAK,QAASsB,EAEpC,GACOjI,CACX,CACA,OAjDAnE,EAAUuD,EAAeU,GAiDlBV,CACX,CAnDkC,CAmDhCF,GAMFs+E,EAAOj9F,QAAU6e,C,gDC1EjB,QAZA,SAAmB+Q,EAAOurM,GAIxB,IAHA,IAAIppN,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,SAE9BoC,EAAQpC,IAC8B,IAAzCwrN,EAASvrM,EAAM7d,GAAQA,EAAO6d,KAIpC,OAAOA,CACT,C,+BClBA,IAAIqnC,EAAO,EAAQ,OACfr7C,EAAO,EAAQ,OACf8gG,EAAW,EAAQ,OACnB2xgB,EAAc,EAAQ,OACtB6vV,EAAwB,EAAQ,OAChCzh1B,EAAoB,EAAQ,OAC5BrrD,EAAgB,EAAQ,MACxBurC,EAAc,EAAQ,OACtBssI,EAAoB,EAAQ,OAC5ByoP,EAAgB,EAAQ,MAExBt1I,EAAavgV,UAEbsi8B,EAAS,SAAUlroB,EAASvkU,GAC9B6M,KAAK03T,QAAUA,EACf13T,KAAK7M,OAASA,CAChB,EAEI0v8B,EAAkBD,EAAOxi8B,UAE7BshF,EAAOj9F,QAAU,SAAUoiP,EAAUi8tB,EAAiBlz8B,GACpD,IAMIsS,EAAU6g8B,EAAQvs8B,EAAOpC,EAAQjB,EAAQrL,EAAMwZ,EAN/Cg1M,EAAO1mN,GAAWA,EAAQ0mN,KAC1B0svB,KAAgBpz8B,IAAWA,EAAQoz8B,YACnCC,KAAerz8B,IAAWA,EAAQqz8B,WAClCC,KAAiBtz8B,IAAWA,EAAQsz8B,aACpCC,KAAiBvz8B,IAAWA,EAAQuz8B,aACpCru8B,EAAK4mD,EAAKon5B,EAAiBxsvB,GAG3B5wM,EAAO,SAAU++P,GAEnB,OADIviQ,GAAUi0d,EAAcj0d,EAAU,UAC/B,IAAI0g8B,GAAO,EAAMn+rB,EAC1B,EAEI2+rB,EAAS,SAAUz98B,GACrB,OAAIq98B,GACF7h2B,EAASx7G,GACFw98B,EAAcru8B,EAAGnP,EAAM,GAAIA,EAAM,GAAI+f,GAAQ5Q,EAAGnP,EAAM,GAAIA,EAAM,KAChEw98B,EAAcru8B,EAAGnP,EAAO+f,GAAQ5Q,EAAGnP,EAC9C,EAEA,GAAIs98B,EACF/g8B,EAAW2kO,EAAS3kO,cACf,GAAIgh8B,EACThh8B,EAAW2kO,MACN,CAEL,KADAk8tB,EAASr1tB,EAAkB7G,IACd,MAAM,IAAIg6G,EAAWiyR,EAAYjsY,GAAY,oBAE1D,GAAI87tB,EAAsBI,GAAS,CACjC,IAAKvs8B,EAAQ,EAAGpC,EAAS8sH,EAAkB2lH,GAAWzyO,EAASoC,EAAOA,IAEpE,IADArD,EAASiw8B,EAAOv8tB,EAASrwO,MACXq/D,EAAcgt4B,EAAiB1v8B,GAAS,OAAOA,EAC7D,OAAO,IAAIyv8B,GAAO,EACtB,CACA1g8B,EAAWk/F,EAAYylI,EAAUk8tB,EACnC,CAGA,IADAj78B,EAAOm78B,EAAYp8tB,EAAS/+O,KAAOoa,EAASpa,OACnCwZ,EAAOjB,EAAKvY,EAAMoa,IAAWV,MAAM,CAC1C,IACErO,EAASiw8B,EAAO9h8B,EAAK3b,MACvB,CAAE,MAAOskB,GACPksd,EAAcj0d,EAAU,QAAS+H,EACnC,CACA,GAAqB,iBAAV9W,GAAsBA,GAAU0iE,EAAcgt4B,EAAiB1v8B,GAAS,OAAOA,CAC5F,CAAE,OAAO,IAAIyv8B,GAAO,EACtB,C,yBClEgC,mBAArB59mB,iBACPtjQ,EAAOj9F,QAAUugW,iBAGjBtjQ,EAAOj9F,QAAU,WACb,MAAM,IAAI8iB,MAAM,oCACpB,C,qCCPJ,IACQzH,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GA0BAsmsB,EAAwC,SAAU9isB,GAQlD,SAAS8isB,EAAuBzwY,EAAWzmU,GACvC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMq2T,EAAU9iU,KAAM8iU,EAAU//I,IAAK1mL,IAAYoQ,KACzElW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bk5f,WAAY,CACRz3gB,MAAO0wU,GAEX6uQ,OAAQ,CACJv/kB,MAAO,KACP8lC,UAAU,GAEdw8e,aAAc,CACVv8e,YAAY,EACZ73B,IAAK,WACD,QAASmM,KAAKklkB,MAClB,GAEJskF,eAAgB,CACZ99nB,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU7gM,SACrB,GAEJ1oH,KAAM,CACF4e,YAAY,EACZ/lC,MAAO0wU,EAAUvpT,MAErBu27B,gBAAiB,CACb336B,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAU/hO,QACrB,GAEJhoF,MAAO,CACHof,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKklkB,MAChB,KAIR,IAAIj7jB,EAAQosT,EAAUpsT,MAAOurH,EAAY6gM,EAAU7gM,UAAW08L,EAAgBmE,EAAUnE,cAAe59N,EAAW+hO,EAAU/hO,SA8B5H,OA7BA+hO,EAAU1rN,GAAG,UAAW,WACpB,GAAI1gG,IAAUosT,EAAUpsT,MAGpB,OAFAA,EAAQosT,EAAUpsT,WAClB/F,EAAM2G,KAAK,qBAAsBwrT,EAAUpsT,OAG3CurH,IAAc6gM,EAAU7gM,YACxBA,EAAY6gM,EAAU7gM,UAClBtxH,EAAMoI,OACNpI,EAAMoI,MAAM8hkB,YAAY/3Q,EAAU7gM,WAEtCtxH,EAAM2G,KAAKwrT,EAAU7gM,UAAY,eAAiB,kBAElD08L,IAAkBmE,EAAUnE,gBAC5BhuT,EAAMkB,KAAKkC,MAAMpD,EAAMyzH,SAAW,MAAQu6L,EAAgB,MAAQ,MAAQ,QAAUmE,EAAUnE,cAAgB,MAAQ,OACtHA,EAAgBmE,EAAUnE,cACtBhuT,EAAMoI,OACNpI,EAAMoI,MAAM+hkB,gBAAgBh4Q,EAAUnE,eACtChuT,EAAM2G,KAAKqnT,EAAgB,mBAAqB,kBAAmBhuT,EAAMoI,QAEpE4lT,GACLhuT,EAAMkB,KAAKyH,KAAK,gDAGpBynF,IAAa+hO,EAAU/hO,WACvBA,EAAW+hO,EAAU/hO,SACrBpwF,EAAM2G,KAAK,yBAA0BypF,GAE7C,GACOpwF,CACX,CAwBA,OAtGAnE,EAAU+msB,EAAwB9isB,GA+ElC8isB,EAAuB1msB,UAAUpZ,SAAW,WACxC,MAAO,4BAA8BgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GACnF,EAKAmvkB,EAAuB1msB,UAAUyngB,YAAc,SAAUv7f,IAChDtM,KAAKklkB,QAAU54jB,IAChBtM,KAAKklkB,OAAS54jB,EACdtM,KAAK6K,KAAK,aAAcyB,GAEhC,EAIAw6rB,EAAuB1msB,UAAU8ngB,aAAe,WAC5C,GAAIlogB,KAAKklkB,OAAQ,CACb,IAAI54jB,EAAQtM,KAAKklkB,OACjBllkB,KAAKklkB,OAAS,KACdllkB,KAAK6K,KAAK,eAAgByB,EAC9B,CACJ,EACOw6rB,CACX,CAxG2C,CAxBpB,EAAQ,QAgL/BplnB,EAAOj9F,QAAUqitB,C,+BC/LjB,IAAIp9mB,EAAI,EAAQ,OACZ452B,EAAU,cACV/puB,EAAsB,EAAQ,OAC9B43J,EAAiB,EAAQ,OAU7BznS,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,QATpB,EAAQ,QAIOswR,EAAiB,IAAMA,EAAiB,KACzC53J,EAAoB,WAII,CAClDjvO,OAAQ,SAAgB45G,GACtB,IAAI9vG,EAASD,UAAUC,OACvB,OAAOkv8B,EAAQtj8B,KAAMkkG,EAAY9vG,EAAQA,EAAS,EAAID,UAAU,QAAK2C,EACvE,G,qCCjBF,IACQgJ,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAMA+i8B,EAAyC,SAAUv/7B,GAMnD,SAASu/7B,EAAwBns0B,EAAaxnI,GAC1C,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMo3H,EAAa,mBAAoBxnI,IAAYoQ,KAY3E,OAXAkE,EAAMymG,GAAG,QAAS,SAAUziG,GACxBA,EAAUyiG,GAAG,UAAW,SAAUva,GAErB,qBADDA,EAAQpgF,MAER9L,EAAMs/7B,0BAA0Bpz2B,EAAQ68B,KAAO,GAAI78B,EAAQua,IAAM,GAK7E,EACJ,GACOzmG,CACX,CAUA,OA7BAnE,EAAUwj8B,EAAyBv/7B,GA0BnCu/7B,EAAwBnj8B,UAAUoj8B,0BAA4B,SAAUC,EAAmBC,GACvF1j8B,KAAK6K,KAAK,UAAW447B,EAAmBC,EAC5C,EACOH,CACX,CA/B4C,CAJvB,EAAQ,QAuC7B7h3B,EAAOj9F,QAAU8+8B,C,+BCtDjB,IAAIlj8B,EAAO,EAAQ,OACf4P,EAAW,EAAQ,OACnB+vG,EAAW,EAAQ,OACnB1e,EAAY,EAAQ,OACpBmsvB,EAAsB,EAAQ,OAC9BjsvB,EAAkB,EAAQ,OAE1Bq/O,EAAavgV,UACbqj8B,EAAeni2B,EAAgB,eAInC9f,EAAOj9F,QAAU,SAAUxC,EAAO2h9B,GAChC,IAAK3z7B,EAAShuB,IAAU+9H,EAAS/9H,GAAQ,OAAOA,EAChD,IACIkR,EADA0w8B,EAAevi2B,EAAUr/G,EAAO0h9B,GAEpC,GAAIE,EAAc,CAGhB,QAFa/s8B,IAAT8s8B,IAAoBA,EAAO,WAC/Bzw8B,EAASkN,EAAKwj8B,EAAc5h9B,EAAO2h9B,IAC9B3z7B,EAAS9c,IAAW6sH,EAAS7sH,GAAS,OAAOA,EAClD,MAAM,IAAI0tV,EAAW,0CACvB,CAEA,YADa/pV,IAAT8s8B,IAAoBA,EAAO,UACxBn2G,EAAoBxr2B,EAAO2h9B,EACpC,C,qCCvBA,IAAIjj8B,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACI4M,EAAaf,MAAQA,KAAKe,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIvK,UAAU,SAAUC,EAASwK,GAC/C,SAASC,EAAU1b,GAAS,IAAM2b,EAAKH,EAAUrZ,KAAKnC,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC1F,SAASuc,EAAS5b,GAAS,IAAM2b,EAAKH,EAAiB,MAAExb,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC7F,SAASsc,EAAKnO,GAJlB,IAAexN,EAIawN,EAAOqO,KAAO5K,EAAQzD,EAAOxN,QAJ1CA,EAIyDwN,EAAOxN,MAJhDA,aAAiBub,EAAIvb,EAAQ,IAAIub,EAAE,SAAUtK,GAAWA,EAAQjR,EAAQ,IAIjBkR,KAAKwK,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKnZ,OAClE,EACJ,EACI2Z,EAAezB,MAAQA,KAAKyB,aAAgB,SAAUT,EAAStT,GAC/D,IAAsGgU,EAAG/d,EAAGid,EAAGe,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmB,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAE7Z,KAAMma,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WAAa,OAAOlC,IAAM,GAAI2B,EACvJ,SAASM,EAAKpB,GAAK,OAAO,SAAUsB,GAAK,OACzC,SAAcC,GACV,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOsB,OACH,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxB,EAAIwB,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAElc,MAAOyc,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGI,EAAEC,QAASle,EAAIye,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcxB,GAAMwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAM,CAAEgB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIA,EAAIwB,EAAI,KAAO,CACpE,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIgB,EAAEI,IAAIlO,KAAKsO,GAAK,KAAO,CAC9DxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC5B,CAAE,MAAO5c,GAAKod,EAAK,CAAC,EAAGpd,GAAIrB,EAAI,CAAG,CAAE,QAAU+d,EAAId,EAAI,CAAG,CACzD,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,EAC9E,CAtBgDF,CAAK,CAACT,EAAGsB,GAAK,CAAG,CAuBrE,EACIu9F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACA96B,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQulqB,uBAAoB,EAC5B,IAAI85S,EAA0B,EAAQ,OAClCt8mB,EAAiB,wBACjBhkV,EAAK,EAAQ,OAAaowX,EAAepwX,EAAGowX,aAAc5uC,EAAmBxhV,EAAGwhV,iBAChFrhV,EAAK,EAAQ,OAAsB+oN,EAAkB/oN,EAAG+oN,gBAAiB89B,EAAiB7mP,EAAG6mP,eAAgBrO,EAAkBx4O,EAAGw4O,gBAClIh5O,EAAM,EAAQ,OACd8B,EAAK,EAAQ,OAAqBI,EAAoBJ,EAAGI,kBAAmBC,EAAsBL,EAAGK,oBAAqB6okB,EAAgBlpkB,EAAG08U,WAAWwsP,cACxJ41X,EAAmB,EAAQ,OAI3BC,EAAwB,EA6K5Bv/8B,EAAQulqB,kBAnHR,SAA2Bp6pB,GACvB,OAAOmR,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAIik8B,EAAoBC,EAAaC,EAAkB5vhB,EAAWtub,EAAKm+8B,EAAmBC,EAAwB11b,EAA0B21b,EAAwBC,EAA2B10b,EAAa20b,EAAmBj57B,EAC3NrH,EAAQlE,KACZ,OAAOyB,EAAYzB,KAAM,SAAUwD,GAC/B,OAAQA,EAAG3B,OACP,KAAK,EAkBD,GAhBAqi8B,EAAcvj8B,EAAS,CAAEm6M,MADzBmpvB,IAAuBr08B,IAAY,UAAWA,GAAW,UAAWA,IAChBgkY,aAAcA,EAAc4gD,WAAYlva,EAAqBmiV,SAAUpiV,EAAmBqnN,gBAAiBA,EAC3J89B,eAAgBA,EAChBrO,gBAAiBA,EACjB6oG,iBAAkBA,EAClB7hV,IAAKA,EAAK43M,MAAOkpvB,GAAsBr08B,GAC3Cu08B,EAAmB,0BAA2BH,EAAwB,IACtEzvhB,EAAY/sF,EAAe08mB,EAAYz8mB,UACvCxhW,EAAM,IAAIi+8B,EAAY/g8B,IAAI,UAAWgh8B,EAAkB5vhB,EAAW2vhB,EAAY1vhB,mBAC9E4vhB,EAAoBt68B,OAAOC,OAAO,CAAE9D,IAAKA,GAAOi+8B,IAOvB3w8B,MACC,IAAtB2w8B,EAAYppvB,QAAyC,IAAtBopvB,EAAYnpvB,MAE3C,OADA90N,EAAI8sC,KAAK,qEACF,CAAC,EAAc,IAE1B,GAAImx6B,EAAY5/mB,OAGZ,OAFAr+V,EAAI8sC,KAAK,oCACT9sC,EAAIqhB,MAAM,eAAgB487B,EAAY5/mB,QAC/B,CAAC,EAAc4/mB,EAAY5/mB,QAYtC,IAVA+/mB,EAAyB,CACrBvpvB,MAAoC,iBAAtBopvB,EAAYppvB,OAAsBopvB,EAAYppvB,MAAMvnN,KAC5D,CAAEA,KAAM2w8B,EAAYppvB,MAAMvnN,MAC1B,CAAEi6N,yBAA0B,QAClCzS,MAAoC,iBAAtBmpvB,EAAYnpvB,OAAsBmpvB,EAAYnpvB,MAAMxnN,KAC5D,CAAEA,KAAM2w8B,EAAYnpvB,MAAMxnN,MAC1B,CAAC,IAEYunN,MAAM2pvB,8BAA+B,EAC5DJ,EAAuBtpvB,MAAM0pvB,8BAA+B,EAC3B,iBAAtBP,EAAYppvB,MAQnB,GAP4D,kBAAjDopvB,EAAYppvB,MAAM4pvB,6BACzBL,EAAuBvpvB,MAAM4pvB,2BAA6BR,EAAYppvB,MAAM4pvB,4BAE5E,6BAA8BR,EAAYppvB,QAC1C6zT,EAA2Bu1b,EAAYppvB,MAAM6zT,gCACtCu1b,EAAYppvB,MAAM6zT,0BAEvB,6BAA8Bu1b,EAAYppvB,MAG3C,IAAI,CAAC,OAAQ,UAAUtgN,MAAM,SAAU2vB,GAAQ,OAAOA,IAAS+56B,EAAYppvB,MAAM0S,wBAA0B,GAE5G,MAAM2gX,EAAc,wDAAyD,CAAC,OAAQ,WAGtFk2X,EAAuBvpvB,MAAM0S,yBAA2B02uB,EAAYppvB,MAAM0S,wBAC9E,MARI62uB,EAAuBvpvB,MAAM0S,yBAA2B,OAU/B,iBAAtB02uB,EAAYnpvB,OAA8E,kBAAjDmpvB,EAAYnpvB,MAAM2pvB,6BAClEL,EAAuBtpvB,MAAM2pvB,2BAA6BR,EAAYnpvB,MAAM2pvB,4BAE/C,iBAAtBR,EAAYppvB,cACZopvB,EAAYppvB,MAAMvnN,KAEI,iBAAtB2w8B,EAAYnpvB,cACZmpvB,EAAYnpvB,MAAMxnN,KAE7B+w8B,EAAyB,CACrBxpvB,MAAOopvB,EAAYppvB,MACnBC,MAAOmpvB,EAAYnpvB,OAEvBwpvB,EAAyD,iBAAtBL,EAAYppvB,OAAsBopvB,EAAYppvB,MAAMypvB,0BACvF/g8B,EAAG3B,MAAQ,EACf,KAAK,EAED,OADA2B,EAAGzB,KAAKjO,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAcyw8B,EACZR,EAAiB998B,EAAKi+8B,EAAYtwkB,aAAc0wkB,GAChDJ,EAAYtwkB,aAAa0wkB,IACvC,KAAK,EAID,OAHAz0b,EAAcrsgB,EAAG1B,OACjB0i8B,EAAoBtwnB,EAAcA,EAAc,GAAIx0O,EAAOmwa,EAAYn7I,mBAAoBh1R,EAAOmwa,EAAY80b,mBAC9G1+8B,EAAI8sC,KAAK,+CAAgDyx6B,GAClD,CAAC,EAAa7t8B,QAAQmvC,IAAI0+5B,EAAkBzx8B,IAAI,SAAU45N,GAAoB,OAAO5rN,EAAUmD,OAAO,OAAQ,EAAQ,WACrH,IAAIV,EAAIssgB,EAAYljT,EACpB,OAAOnrN,EAAYzB,KAAM,SAAU2D,GAC/B,OAAQA,EAAG9B,OACP,KAAK,EACD,MAAgC,UAA1B8qN,EAAiB7/M,MAAoB6hgB,EACpC,CAAC,EAAam1b,EAAwBc,uBAAuBj4uB,EAAkBgiT,EAA0B1ohB,IADnC,CAAC,EAAa,GAE/F,KAAK,EAED,OADAud,EAAKG,EAAG7B,OAAQgugB,EAAatsgB,EAAGssgB,WAAYljT,EAAoBppN,EAAGopN,kBAC5D,CAAC,EAAc,IAAIw3uB,EAAkB13uB,gBAAgBojT,EAAYnvgB,EAASA,EAASA,EAAS,CAAC,EAAG0j8B,EAAuBvpvB,OAAQspvB,GAAoB,CAAEx3uB,kBAAmBA,MACnL,KAAK,EACD,GAA8B,UAA1BD,EAAiB7/M,KACjB,MAAO,CAAC,EAAc,IAAIs37B,EAAkB13uB,gBAAgBC,EAAkBhsN,EAASA,EAAS,CAAC,EAAG0j8B,EAAuBvpvB,OAAQspvB,KAEvIzg8B,EAAG9B,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,IAAIui8B,EAAkBjotB,gBAAgBxvB,EAAkBhsN,EAASA,EAAS,CAAC,EAAG0j8B,EAAuBtpvB,OAAQqpvB,KAEnJ,EACJ,EAAI,KACZ,KAAK,EAAG,MAAO,CAAC,EAAc5g8B,EAAG1B,QACjC,KAAK,EAGD,MAFAyJ,EAAU/H,EAAG1B,OACb7b,EAAI4mB,KAAK,+BAAgCtB,GACnCA,EACV,KAAK,EAAG,MAAO,CAAC,GAExB,EACJ,EACJ,C,kBC9PA,IAAI0E,EAAW,EAAQ,OACnB4imB,EAAc,EAAQ,OACtBgyV,EAAe,EAAQ,OAMvBj58B,EAHc9B,OAAOsW,UAGQxU,eAwBjC81F,EAAOj9F,QAfP,SAAoB6mD,GAClB,IAAKr7B,EAASq7B,GACZ,OAAOu55B,EAAav55B,GAEtB,IAAIw55B,EAAUjyV,EAAYvnkB,GACtBn4C,EAAS,GAEb,IAAK,IAAI3I,KAAO8gD,GACD,eAAP9gD,IAAyBs68B,GAAYl58B,EAAeyU,KAAKirC,EAAQ9gD,KACrE2I,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,C,kBC9BA,IAAI+nN,EAAa,EAAQ,OAqBzBx5H,EAAOj9F,QATP,SAAqB+F,EAAK7E,GACxB,IAAIoQ,EAAOmlN,EAAWl7M,KAAMxV,GACxBuoB,EAAOhd,EAAKgd,KAIhB,OAFAhd,EAAKhC,IAAIvJ,EAAK7E,GACdqa,KAAK+S,MAAQhd,EAAKgd,MAAQA,EAAO,EAAI,EAC9B/S,IACT,C,qDClBI+S,E,sFACW,SAAS28F,EAAcq11B,GACpC,KAAKhy7B,GAAiB,IAATA,GAAcgy7B,IACrB39kB,EAAA,EAAW,CACb,IAAI49kB,EAAYv88B,SAASskB,cAAc,OACvCi47B,EAAUt76B,MAAM5gC,SAAW,WAC3Bk88B,EAAUt76B,MAAM1/B,IAAM,UACtBg78B,EAAUt76B,MAAMhjC,MAAQ,OACxBs+8B,EAAUt76B,MAAM9iC,OAAS,OACzBo+8B,EAAUt76B,MAAMp8B,SAAW,SAC3B7E,SAASiF,KAAKyiG,YAAY602B,GAC1Bjy7B,EAAOiy7B,EAAUr+8B,YAAcq+8B,EAAU948B,YACzCzD,SAASiF,KAAKwiG,YAAY802B,EAC5B,CAGF,OAAOjy7B,CACT,C,2DCXe,SAASuma,EAActwU,QACxB,IAARA,IACFA,GAAM,EAAA/hH,EAAA,MAKR,IACE,IAAI88C,EAASilE,EAAIswU,cAGjB,OAAKv1Y,GAAWA,EAAO57C,SAChB47C,EADiC,IAE1C,CAAE,MAAO/+C,GAEP,OAAOgkH,EAAIt7G,IACb,CACF,C,uFCvBe,SAASu8G,EAAS3jH,EAASwjH,GACpCxjH,EAAQqjH,UAAWrjH,EAAQqjH,UAAUr2G,IAAIw2G,IAAqB,EAAAI,EAAA,GAAS5jH,EAASwjH,KAA6C,iBAAtBxjH,EAAQwjH,UAAwBxjH,EAAQwjH,UAAYxjH,EAAQwjH,UAAY,IAAMA,EAAexjH,EAAQ2X,aAAa,SAAU3X,EAAQwjH,WAAaxjH,EAAQwjH,UAAUM,SAAW,IAAM,IAAMN,GACvS,CCHA,SAASm71B,EAAiBC,EAAWC,GACnC,OAAOD,EAAUnh9B,QAAQ,IAAI+tC,OAAO,UAAYqz6B,EAAgB,YAAa,KAAM,MAAMph9B,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,CAEe,SAAS2lH,EAAYpjH,EAASwjH,GACvCxjH,EAAQqjH,UACVrjH,EAAQqjH,UAAU/mE,OAAOknE,GACa,iBAAtBxjH,EAAQwjH,UAExBxjH,EAAQwjH,UAAYm71B,EAAiB3+8B,EAAQwjH,UAAWA,GAExDxjH,EAAQ2X,aAAa,QAASgn8B,EAAiB3+8B,EAAQwjH,WAAaxjH,EAAQwjH,UAAUM,SAAW,GAAIN,GAEzG,C,eCZe,SAASgsJ,EAAS/uQ,GAC/B,MAAI,WAAYA,GAAQA,EAAKI,SAAWJ,EAAaA,ECD9C,aAD0BT,EDGlBS,ICFiBT,EAAQmiH,WAAahgH,SAASoshB,eDEjC9thB,EAAKG,cAC3B,ECJM,IAAoBZ,CDKnC,CEQe,SAAS8+8B,EAAct/4B,GACpC,IAXc/+D,EAYd,OADU+uQ,EAAShwM,KAXL/+D,EAYO++D,IAXyB,SAA/B/+D,EAAKiqH,QAAQ5oH,cAG9B,SAA2BrB,GACzB,IAAIiiH,EAAM8sJ,EAAS/uQ,IAAQ,EAAAE,EAAA,MAAkB,EAAAA,EAAA,GAAcF,GACvDiF,EAAM8pQ,EAAS/uQ,IAASiiH,EAAI9hH,YAChC,OAAO8hH,EAAIt7G,KAAKxB,YAAcF,EAAI4hG,UACpC,CAIoCy32B,CAAkBv/4B,GAAaA,EAAUh3D,aAAeg3D,EAAU75D,YACtG,CChBA,IAAIq58B,EAAY,CAAC,WAAY,SAAU,SAQnC95c,EAAW,SAAkB1lc,EAAWwokB,EAAS9rlB,GACnD,GAAGxwC,QAAQqO,KAAKylD,EAAU0xD,SAAU,SAAUzwH,GAPhC,IAAmBqE,EAC7Bq9G,EACAuI,GAM6B,IAA3Bs9gB,EAAQ/loB,QAAQxB,KAPlB0hH,GAD6Br9G,EAQerE,GAP5B0hH,SAChBuI,EAAU5lH,EAAK4lH,QACC,IAAbvI,IAAgE,IAA9C681B,EAAU/88B,QAAQyoH,EAAQ5oH,iBAM/Co6C,EAAGz7C,EAEP,EACF,EAEO,SAASw+8B,EAAWxg6B,EAAMh+C,GAC1BA,IAEDg+C,EACFh+C,EAAKkX,aAAa,cAAe,QAEjClX,EAAKoX,gBAAgB,eAEzB,CC6IA,QA5IgC,WAC9B,SAASqn8B,EAAa/m8B,GACpB,IAAIrT,OAAiB,IAAVqT,EAAmB,CAAC,EAAIA,EAC/Bgn8B,EAAwBr68B,EAAKs68B,iBAC7BA,OAA6C,IAA1BD,GAA0CA,EAC7DE,EAAwBv68B,EAAKw68B,wBAC7BA,OAAoD,IAA1BD,GAA0CA,EAExE3l8B,KAAK0l8B,sBAAmB,EACxB1l8B,KAAK4l8B,6BAA0B,EAC/B5l8B,KAAK6l8B,YAAS,EACd7l8B,KAAK83gB,gBAAa,EAClB93gB,KAAKjK,UAAO,EACZiK,KAAK0vG,mBAAgB,EACrB1vG,KAAK0l8B,iBAAmBA,EACxB1l8B,KAAK4l8B,wBAA0BA,EAC/B5l8B,KAAK6l8B,OAAS,GACd7l8B,KAAK83gB,WAAa,GAClB93gB,KAAKjK,KAAO,GACZiK,KAAK0vG,cAAgB,GACvB,CAEA,IAAIgyV,EAAS8jgB,EAAapl8B,UAmH1B,OAjHAshc,EAAOokgB,uBAAyB,SAAgC1mD,GAC9D,IAAIrp5B,EAAOiK,KAAKjK,KAAKiK,KAAK+l8B,wBAAwB3mD,IAClD,OAAOrp5B,GAAQA,EAAKiw8B,WACtB,EAEAtkgB,EAAOqkgB,wBAA0B,SAAiC3mD,GAChE,OAhDiBxo3B,EAgDE52B,KAAKjK,KAhDFysC,EAgDQ,SAAUj/C,GACtC,OAAoC,IAA7BA,EAAEsi9B,OAAOt98B,QAAQ625B,EAC1B,EAjDEht4B,GAAO,EACXwkB,EAAItkC,KAAK,SAAU/O,EAAG8B,GACpB,QAAIm9C,EAAGj/C,KACL6uB,EAAM/sB,GACC,EAIX,GACO+sB,EAVT,IAAqBwkB,EAAK4L,EACpBpwB,CAkDJ,EAEAsvb,EAAOukgB,kBAAoB,SAA2BC,EAAgBpg5B,GACpE,IAAIp8B,EAAQ,CACVp8B,SAAU,UAIZ448B,EAAex86B,MAAQ,CACrBp8B,SAAUw4D,EAAUp8B,MAAMp8B,SAC1B+9D,aAAcvF,EAAUp8B,MAAM2hC,cAG5B664B,EAAeF,cAGjBt86B,EAAM2hC,aAAellC,UAAS,EAAAh9B,EAAA,GAAI28D,EAAW,iBAAmB,IAAK,IAAM9lD,KAAK0vG,cAAgB,OAGlG,EAAAvmH,EAAA,GAAI28D,EAAWp8B,EACjB,EAEAg4a,EAAOykgB,qBAAuB,SAA8BD,EAAgBpg5B,GAC1Eh8D,OAAOC,OAAO+7D,EAAUp8B,MAAOw86B,EAAex86B,MAChD,EAEAg4a,EAAOpuc,IAAM,SAAa8r5B,EAAOt51B,EAAWgkD,GAC1C,IAAIs81B,EAAWpm8B,KAAK6l8B,OAAOt98B,QAAQ625B,GAC/BinD,EAAerm8B,KAAK83gB,WAAWvvhB,QAAQu9D,GAE3C,IAAkB,IAAdsg5B,EACF,OAAOA,EAUT,GAPAA,EAAWpm8B,KAAK6l8B,OAAOzx8B,OACvB4L,KAAK6l8B,OAAO/x8B,KAAKsr5B,GAEbp/4B,KAAK0l8B,kBDtEN,SAAsB5/4B,EAAWn7D,GACtC,IAAI278B,EAAS378B,EAAM278B,OACfjy4B,EAAW1pE,EAAM0pE,SACrBm3b,EAAS1lc,EAAW,CAACwg5B,EAAQjy4B,GAAW,SAAUttE,GAChD,OAAOw+8B,GAAW,EAAMx+8B,EAC1B,EACF,CCiEMw/8B,CAAazg5B,EAAWs51B,IAGJ,IAAlBinD,EAEF,OADArm8B,KAAKjK,KAAKsw8B,GAAcR,OAAO/x8B,KAAKsr5B,GAC7BgnD,EAGT,IAAIrw8B,EAAO,CACT8v8B,OAAQ,CAACzmD,GAET/xyB,QAASvD,EAAYA,EAAU5oH,MAAM,OAAS,GAC9C8k9B,YAAaZ,EAAct/4B,IAU7B,OAPI9lD,KAAK4l8B,yBACP5l8B,KAAKim8B,kBAAkBlw8B,EAAM+vD,GAG/B/vD,EAAKs3G,QAAQr7G,QAAQi4G,EAASvuD,KAAK,KAAMoK,IACzC9lD,KAAK83gB,WAAWhkhB,KAAKgyD,GACrB9lD,KAAKjK,KAAKjC,KAAKiC,GACRqw8B,CACT,EAEA1kgB,EAAO9+Z,OAAS,SAAgBw82B,GAC9B,IAAIgnD,EAAWpm8B,KAAK6l8B,OAAOt98B,QAAQ625B,GAEnC,IAAkB,IAAdgnD,EAAJ,CAIA,IAAIC,EAAerm8B,KAAK+l8B,wBAAwB3mD,GAC5Crp5B,EAAOiK,KAAKjK,KAAKsw8B,GACjBvg5B,EAAY9lD,KAAK83gB,WAAWuub,GAKhC,GAJAtw8B,EAAK8v8B,OAAO946B,OAAOh3B,EAAK8v8B,OAAOt98B,QAAQ625B,GAAQ,GAC/Cp/4B,KAAK6l8B,OAAO946B,OAAOq56B,EAAU,GAGF,IAAvBrw8B,EAAK8v8B,OAAOzx8B,OACd2B,EAAKs3G,QAAQr7G,QAAQ03G,EAAYhuD,KAAK,KAAMoK,IAExC9lD,KAAK4l8B,yBACP5l8B,KAAKmm8B,qBAAqBpw8B,EAAM+vD,GAG9B9lD,KAAK0l8B,kBD9GR,SAAsB5/4B,EAAW56D,GACtC,IAAIo78B,EAASp78B,EAAMo78B,OACfjy4B,EAAWnpE,EAAMmpE,SACrBm3b,EAAS1lc,EAAW,CAACwg5B,EAAQjy4B,GAAW,SAAUttE,GAChD,OAAOw+8B,GAAW,EAAOx+8B,EAC3B,EACF,CCyGQy/8B,CAAa1g5B,EAAWs51B,GAG1Bp/4B,KAAK83gB,WAAW/qf,OAAOs56B,EAAc,GACrCrm8B,KAAKjK,KAAKg3B,OAAOs56B,EAAc,QAC1B,GAAIrm8B,KAAK0l8B,iBAAkB,CAEhC,IAAIe,EAAe1w8B,EAAK8v8B,OAAO9v8B,EAAK8v8B,OAAOzx8B,OAAS,GAChDigE,EAAWoy4B,EAAapy4B,SAE5Bkx4B,GAAW,EADEkB,EAAaH,QAE1Bf,GAAW,EAAOlx4B,EACpB,CA7BA,CA8BF,EAEAqtY,EAAOglgB,WAAa,SAAoBtnD,GACtC,QAASp/4B,KAAK6l8B,OAAOzx8B,QAAU4L,KAAK6l8B,OAAO7l8B,KAAK6l8B,OAAOzx8B,OAAS,KAAOgr5B,CACzE,EAEOomD,CACT,CA1IgC,G,ICR5B9nB,E,WAgCJ,IAAIipB,GAAqB,IAAAvonB,YAAW,SAAUhzV,EAAMynH,GAClD,IAAIi1I,EAAY18P,EAAKw5C,KACjBA,OAAqB,IAAdkjN,GAA+BA,EACtC8+sB,EAAYx78B,EAAKkT,KACjBA,OAAqB,IAAdso8B,EAAuB,SAAWA,EACzC981B,EAAY1+G,EAAK0+G,UACjBpgF,EAAQt+B,EAAKs+B,MACb8tF,EAAWpsH,EAAKosH,SAChBqv1B,EAAgBz78B,EAAKipE,SACrBA,OAA6B,IAAlBwy4B,GAAkCA,EAC7CC,EAAgB178B,EAAKgn1B,SACrBA,OAA6B,IAAlB00H,GAAkCA,EAC7CC,EAAkB378B,EAAK278B,gBACvBC,EAAkB578B,EAAK478B,gBACvB935B,EAAa9jD,EAAK8jD,WAClB+35B,EAAqB778B,EAAK678B,mBAC1BC,EAAiB978B,EAAK4oX,UACtBA,OAA+B,IAAnBkzlB,GAAmCA,EAC/CC,EAAoB/78B,EAAKg88B,aACzBA,OAAqC,IAAtBD,GAAsCA,EACrDE,EAAoBj88B,EAAKw9qB,aACzBA,OAAqC,IAAtBy+R,GAAsCA,EACrDC,EAAsBl88B,EAAKk88B,oBAC3BC,EAAen88B,EAAKm88B,aACpBC,EAAsBp88B,EAAKq88B,eAC3BA,OAAyC,IAAxBD,EAAiC,SAAUp16B,GAC9D,OAAoB,gBAAoB,MAAOA,EACjD,EAAIo16B,EACAE,EAAkBt88B,EAAKsy7B,QACvBiqB,EAAev88B,EAAK06D,UACpB8h5B,EAAqBx88B,EAAKw88B,mBAC1B370B,EAAS7gI,EAAK6gI,OACd470B,EAAcz88B,EAAK+gI,OACnBA,OAAyB,IAAhB070B,EAAyB,WAAa,EAAIA,EACnDtvnB,EAASntV,EAAKmtV,OACdI,EAAWvtV,EAAKutV,SAChBH,EAAYptV,EAAKotV,UACjB35G,EAAUzzO,EAAKyzO,QACf45G,EAAartV,EAAKqtV,WAClBC,EAAYttV,EAAKstV,UACjBlpU,IAAO,OAA8BpkB,EAAM,CAAC,OAAQ,OAAQ,YAAa,QAAS,WAAY,WAAY,WAAY,kBAAmB,kBAAmB,aAAc,qBAAsB,YAAa,eAAgB,eAAgB,sBAAuB,eAAgB,iBAAkB,UAAW,YAAa,qBAAsB,SAAU,SAAU,SAAU,WAAY,YAAa,UAAW,aAAc,cAEpa06D,IAAY,EAAA4xR,EAAA,GAAiBiwnB,GAC7BvoD,GApEN,SAAyBznN,GACvB,IAAImwQ,EAAenwQ,IALd+lP,IAASA,EAAU,IAAI,GACrBA,GAKHt+B,GAAQ,IAAAng5B,QAAO,CACjBqn8B,OAAQ,KACRjy4B,SAAU,OAEZ,OAAOvqE,OAAOC,OAAOq15B,EAAMvp5B,QAAS,CAClCvC,IAAK,SAAawyD,EAAWgkD,GAC3B,OAAOg+1B,EAAax08B,IAAI8r5B,EAAMvp5B,QAASiwD,EAAWgkD,EACpD,EACAlnE,OAAQ,WACN,OAAOkl6B,EAAall6B,OAAOw82B,EAAMvp5B,QACnC,EACA6w8B,WAAY,WACV,OAAOoB,EAAapB,WAAWtnD,EAAMvp5B,QACvC,EACAky8B,cAAc,IAAA7o8B,aAAY,SAAU2zG,GAClCusyB,EAAMvp5B,QAAQyw8B,OAASzz1B,CACzB,EAAG,IACHm11B,gBAAgB,IAAA9o8B,aAAY,SAAU2zG,GACpCusyB,EAAMvp5B,QAAQw+D,SAAWw+C,CAC3B,EAAG,KAEP,CA6Cco11B,CAAgBP,GACxBhp8B,IAAY,EAAAa,EAAA,KACZ2o8B,IAAW,EAAAnvvB,EAAA,GAAYn0K,GAEvB+yS,IAAY,IAAAr4U,WAAUslC,GACtBuoN,GAASwqF,GAAU,GACnBC,GAAYD,GAAU,GAEtBwwnB,IAAe,IAAAlp8B,QAAO,OAC1B,IAAA0/U,qBAAoB9rO,EAAK,WACvB,OAAOusyB,EACT,EAAG,CAACA,KAEAh4hB,EAAA,IAAc8glB,IAAYtj6B,IAC5Buj6B,GAAaty8B,QAAUyjb,KAGpBpqY,GAAetK,GAASuoN,GAElBvoN,GAAQuoN,IACjByqF,IAAU,GAFVA,IAAU,GAKZ,IAAImD,IAAa,EAAAwqC,EAAA,GAAiB,WAehC,GAdA65hB,GAAM9r5B,IAAIwyD,GAAW8h5B,GACrBQ,GAAyBvy8B,SAAU,EAAA0sC,EAAA,GAAO95C,SAAU,UAAW+ykB,IAC/D6sY,GAAuBxy8B,SAAU,EAAA0sC,EAAA,GAAO95C,SAAU,QAElD,WACE,OAAOgf,WAAW6g8B,GACpB,GAAG,GAECr80B,GACFA,IAKE+nP,EAAW,CACb,IAAIu0lB,EAAuBjvhB,EAAc7wb,UAErC225B,GAAMknD,QAAUiC,KAAyB,EAAA/g9B,EAAA,GAAS435B,GAAMknD,OAAQiC,KAClEJ,GAAaty8B,QAAU0y8B,EACvBnpD,GAAMknD,OAAOt12B,QAEjB,CACF,GACIgqP,IAAa,EAAAuqC,EAAA,GAAiB,WAM9B,IAAIijlB,EALNppD,GAAMx82B,SAC8B,MAApCwl6B,GAAyBvy8B,SAA2Buy8B,GAAyBvy8B,UAC3C,MAAlCwy8B,GAAuBxy8B,SAA2Bwy8B,GAAuBxy8B,UAErE+yqB,IAIgD,OAAjD4/R,EAAwBL,GAAaty8B,UAA2D,MAA/B2y8B,EAAsBx32B,OAAyBw32B,EAAsBx32B,MAAMs22B,GAC7Ia,GAAaty8B,QAAU,KAE3B,IAIA,IAAAgK,WAAU,WACH+kC,GAASkhB,IACdi1R,IACF,EAAG,CAACn2S,EAAMkhB,GAEVi1R,MAIA,IAAAl7U,WAAU,WACHstP,IACL6tF,IACF,EAAG,CAAC7tF,GAAQ6tF,MACZ,EAAAytnB,EAAA,GAAe,WACbztnB,IACF,GAEA,IAAIstnB,IAAqB,EAAA/ilB,EAAA,GAAiB,WACxC,GAAK6hlB,GAAiB1o8B,MAAgB0g5B,GAAMsnD,aAA5C,CAIA,IAAI6B,EAAuBjvhB,IAEvB8le,GAAMknD,QAAUiC,KAAyB,EAAA/g9B,EAAA,GAAS435B,GAAMknD,OAAQiC,IAClEnpD,GAAMknD,OAAOt12B,OALf,CAOF,GACI032B,IAAsB,EAAAnjlB,EAAA,GAAiB,SAAUvgY,GAC/CA,EAAE+I,SAAW/I,EAAEksV,gBAIA,MAAnB61nB,GAAmCA,EAAgB/h9B,IAElC,IAAbqvE,GACF83D,IAEJ,GACIqvc,IAAwB,EAAAj2M,EAAA,GAAiB,SAAUvgY,GACjDot1B,GAA0B,KAAdpt1B,EAAE4yT,SAAkBwnmB,GAAMsnD,eACrB,MAAnBM,GAAmCA,EAAgBhi9B,GAE9CA,EAAEg+Q,kBACL72I,IAGN,GACIk80B,IAAyB,IAAApp8B,UACzBmp8B,IAA2B,IAAAnp8B,UAY3Bi4U,GAAahoS,EAEjB,IAAK4W,MAAelhB,GAAQsyS,KAAe/pF,IACzC,OAAO,KAGT,IAAIw7sB,IAAc,OAAS,CACzBrq8B,KAAMA,EACNu0G,IAAKusyB,GAAM2oD,aAEX,aAAuB,WAATzp8B,QAA2BxH,GACxC0Y,GAAM,CACPka,MAAOA,EACPogF,UAAWA,EACXmsN,UAAW,IAGTqwoB,GAASiB,EAAeA,EAAaoB,IAA4B,gBAAoB,MAAOA,GAA0B,eAAmBnx1B,EAAU,CACrJl5G,KAAM,cAGJ44U,KACFovnB,GAAsB,gBAAoBpvnB,GAAY,CACpD/3G,QAAQ,EACRD,eAAe,EACf,KAAQt6L,EACR2zS,OAAQA,EACRC,UAAWA,EACXG,SAtCe,WACjBf,IAAU,GAEV,IAAK,IAAI1jV,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGb,MAAZokV,GAA4BA,EAAS73U,WAAM,EAAQzM,EACrD,EA+BIwqO,QAASA,EACT45G,WAAYA,EACZC,UAAWA,GACV4tnB,KAGL,IAAIsC,GAAkB,KAEtB,GAAIv04B,EAAU,CACZ,IAAIw04B,GAAqB5B,EACzB2B,GAAkBnB,EAAe,CAC/B501B,IAAKusyB,GAAM4oD,eACXx96B,QAASk+6B,KAGPG,KACFD,GAA+B,gBAAoBC,GAAoB,CACrE1puB,QAAQ,EACR,KAAQv6L,GACPgk6B,IAEP,CAEA,OAAoB,gBAAoB,WAAgB,KAAmB,eAAoC,gBAAoB,WAAgB,KAAMA,GAAiBtC,IAASxg5B,IACrL,GACI4zJ,EAAY,CAId90K,KAAM,SAQNkhB,UAAW,QAKXmmE,OAAQ,SAQRE,OAAQ,SAKR93D,SAAU,cAAoB,CAAC,SAAgB,UAAgB,CAAC,aAUhEkz4B,aAAc,SAUdE,eAAgB,SAOhBT,gBAAiB,SAKjBD,gBAAiB,SAMjBa,mBAAoB,WAKpBx1H,SAAU,SAMVljyB,WAAY,gBAMZ+35B,mBAAoB,gBAUpBjzlB,UAAW,SAQXozlB,aAAc,SAMdx+R,aAAc,SAOd0+R,oBAAqB,UAAgB,CACnCwB,cAAe,WAMjBjquB,QAAS,SAKT45G,WAAY,SAKZC,UAAW,SAKXH,OAAQ,SAKRC,UAAW,SAKXG,SAAU,SAMV+kmB,QAAS,eAAqB,IAEhCipB,EAAMt+wB,YAAc,QACpBs+wB,EAAMjtvB,UAAYA,EAClB,QAAe5vN,OAAOC,OAAO488B,EAAO,CAClC//yB,QAAS,I,kCCxaPmizB,EACa,oDADbA,EAEc,cAFdA,EAGc,kBAGdC,EAAqC,SAAUC,GAGjD,SAASD,IACP,OAAOC,EAAcno8B,MAAMd,KAAM7L,YAAc6L,IACjD,EAJA,OAAegp8B,EAAuBC,GAMtC,IAAIvngB,EAASsngB,EAAsB5o8B,UAyDnC,OAvDAshc,EAAOwngB,eAAiB,SAAwB526B,EAAMhsC,EAAS6i9B,GAC7D,IAAIC,EAEAp/uB,EAAS1jO,EAAQojC,MAAM4I,GAG3BhsC,EAAQsjD,QAAQtX,GAAQ03L,GACxB,EAAA7gO,EAAA,GAAI7C,IAAU8i9B,EAAO,CAAC,GAAQ926B,GAAQ3hB,YAAW,EAAAxnB,EAAA,GAAI7C,EAASgsC,IAAS626B,EAAS,KAAMC,GACxF,EAEA1ngB,EAAO70a,QAAU,SAAiByF,EAAMhsC,GACtC,IAGM+i9B,EAHF1j9B,EAAQW,EAAQsjD,QAAQtX,QAEdx7B,IAAVnR,WAGKW,EAAQsjD,QAAQtX,IACvB,EAAAnpC,EAAA,GAAI7C,IAAU+i9B,EAAQ,CAAC,GAAS/26B,GAAQ3sC,EAAO0j9B,IAEnD,EAEA3ngB,EAAOukgB,kBAAoB,SAA2BC,EAAgBpg5B,GACpE,IAAI5hD,EAAQlE,KAIZ,GAFAip8B,EAAc7o8B,UAAU6l8B,kBAAkB5l8B,KAAKL,KAAMkm8B,EAAgBpg5B,GAEhEog5B,EAAeF,YAApB,CACA,IAAIjz7B,EAAO,KACX,OAAI+yC,EAAWij5B,GAAwB/28B,QAAQ,SAAUurC,GACvD,OAAOr5B,EAAMgl8B,eAAe,eAAgB3r6B,EAAIxqB,EAClD,IACA,OAAI+yC,EAAWij5B,GAAyB/28B,QAAQ,SAAUurC,GACxD,OAAOr5B,EAAMgl8B,eAAe,cAAe3r6B,GAAKxqB,EAClD,IACA,OAAI+yC,EAAWij5B,GAAyB/28B,QAAQ,SAAUurC,GACxD,OAAOr5B,EAAMgl8B,eAAe,cAAe3r6B,EAAIxqB,EACjD,EAVuC,CAWzC,EAEA2ub,EAAOykgB,qBAAuB,SAA8BD,EAAgBpg5B,GAC1E,IAAIynD,EAASvtG,KAEbip8B,EAAc7o8B,UAAU+l8B,qBAAqB9l8B,KAAKL,KAAMkm8B,EAAgBpg5B,IAExE,OAAIA,EAAWij5B,GAAwB/28B,QAAQ,SAAUurC,GACvD,OAAOgwE,EAAO1gF,QAAQ,eAAgB0Q,EACxC,IACA,OAAIuoB,EAAWij5B,GAAyB/28B,QAAQ,SAAUurC,GACxD,OAAOgwE,EAAO1gF,QAAQ,cAAe0Q,EACvC,IACA,OAAIuoB,EAAWij5B,GAAyB/28B,QAAQ,SAAUurC,GACxD,OAAOgwE,EAAO1gF,QAAQ,cAAe0Q,EACvC,EACF,EAEOyr6B,CACT,CAjEyC,CAiEvC,G,qBC3EF,SAAe,EAAA58b,EAAA,GAAmB,cCIlC,EAJgC,gBAAoB,CAElDjgZ,OAAQ,WAAmB,I,eCEzBm90B,EAA2B,aAAiB,SAAUl+8B,EAAMynH,GAC9D,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBy/1B,EAAmBn+8B,EAAKm+8B,iBACxBlzG,EAAWjr2B,EAAKir2B,SAChBtj1B,EAAO3nB,EAAK2nB,KACZykG,EAAWpsH,EAAKosH,SAChB68jB,EAAajprB,EAAKiprB,WAClBjipB,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,mBAAoB,WAAY,OAAQ,WAAY,eAG1Ho+8B,GADJ121B,GAAW,QAAmBA,EAAU,UACX,UAC7B,OAAoB,gBAAoB,OAAO,OAAS,CAAC,EAAG1gF,EAAO,CACjEygF,IAAKA,EACL/I,UAAW,IAAW0/1B,EAAa1/1B,EAAW/2F,GAAQ+/F,EAAW,IAAM//F,EAAMsj1B,GAAYmzG,EAAc,YAAan1R,GAAcm1R,EAAc,iBACjI,gBAAoB,MAAO,CAC1C1/1B,UAAW,IAAWgJ,EAAW,WAAYy21B,IAC5C/x1B,GACL,GACA8x1B,EAAYjhxB,YAAc,cAC1B,W,4BCbIohxB,GAA2B,aAAiB,SAAUr+8B,EAAMynH,GAC9D,IAAIC,EAAW1nH,EAAK0nH,SAChBw8Q,EAAalkY,EAAKkkY,WAClBC,EAAcnkY,EAAKmkY,YACnBpjQ,EAAS/gI,EAAK+gI,OACdriB,EAAY1+G,EAAK0+G,UACjB0N,EAAWpsH,EAAKosH,SAChBplF,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,aAAc,cAAe,SAAU,YAAa,aAEjH0nH,GAAW,QAAmBA,EAAU,gBACxC,IAAI3pF,GAAU,IAAA4gN,YAAW,GACrBoxG,GAAc,EAAAoqC,EAAA,GAAiB,WAC7Bp8V,GAASA,EAAQgjG,SACjBA,GAAQA,GACd,GACA,OAAoB,gBAAoB,OAAO,OAAS,CACtDtZ,IAAKA,GACJzgF,EAAO,CACR03E,UAAW,IAAWA,EAAWgJ,KAC/B0E,EAAU+3Q,GAA4B,gBAAoBC,GAAA,EAAa,CACzE3tX,MAAOytX,EACP9kW,QAAS2wT,IAEb,GACAsunB,GAAYphxB,YAAc,cAC1BohxB,GAAYpwvB,aA7BO,CACjBi2K,WAAY,QACZC,aAAa,GA4Bf,Y,ICpCI+tP,IAAgB,E,SAAA,GAAiB,MACrC,UAAe,EAAAlxG,EAAA,GAAmB,cAAe,CAC/CziS,UAAW2zY,KCoBb,IAAI,GACA,GAAe,CACjB14kB,MAAM,EACNyvB,UAAU,EACV+9wB,UAAU,EACVp+d,WAAW,EACXozlB,cAAc,EACdx+R,cAAc,EACd7/oB,WAAW,EACX2g7B,SAAU,IAIZ,SAASC,GAAiBv36B,GACxB,OAAoB,gBAAoBusM,EAAA,EAAMvsM,EAChD,CAEA,SAASy26B,GAAmBz26B,GAC1B,OAAoB,gBAAoBusM,EAAA,EAAMvsM,EAChD,CAIA,IAAI,GAAqB,aAAiB,SAAUhnC,EAAMynH,GACxD,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjBpgF,EAAQt+B,EAAKs+B,MACbkg7B,EAAkBx+8B,EAAKw+8B,gBACvBL,EAAmBn+8B,EAAKm+8B,iBACxB/x1B,EAAWpsH,EAAKosH,SAChBqy1B,EAASz+8B,EAAKs+8B,SACdI,EAAiB1+8B,EAAK,mBACtBw5C,EAAOx5C,EAAKw5C,KACZ7b,EAAY39B,EAAK29B,UACjBsrC,EAAWjpE,EAAKipE,SAChB+9wB,EAAWhn1B,EAAKgn1B,SAChB40H,EAAkB578B,EAAK478B,gBACvB/60B,EAAS7gI,EAAK6gI,OACdE,EAAS/gI,EAAK+gI,OACdrmE,EAAY16D,EAAK06D,UACjBkuT,EAAY5oX,EAAK4oX,UACjBozlB,EAAeh88B,EAAKg88B,aACpBx+R,EAAex9qB,EAAKw9qB,aACpB0+R,EAAsBl88B,EAAKk88B,oBAC3B5unB,EAAYttV,EAAKstV,UACjBH,EAASntV,EAAKmtV,OACdC,EAAYptV,EAAKotV,UACjB35G,EAAUzzO,EAAKyzO,QACf45G,EAAartV,EAAKqtV,WAClBE,EAAWvtV,EAAKutV,SAChBoxnB,EAAoB3+8B,EAAK2+8B,kBACzBC,EAAe5+8B,EAAKsy7B,QACpBtr5B,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,QAAS,kBAAmB,mBAAoB,WAAY,WAAY,kBAAmB,OAAQ,YAAa,WAAY,WAAY,kBAAmB,SAAU,SAAU,YAAa,YAAa,eAAgB,eAAgB,sBAAuB,YAAa,SAAU,YAAa,UAAW,aAAc,WAAY,oBAAqB,YAEpausV,GAAY,IAAAr4U,UAAS,CAAC,GACtB2q8B,EAAatynB,EAAU,GACvB/xQ,EAAW+xQ,EAAU,GAErB4qjB,GAAa,IAAAjj4B,WAAS,GACtB4q8B,EAAqB3nE,EAAW,GAChC4nE,EAAwB5nE,EAAW,GAEnC6nE,IAAuB,IAAAnr8B,SAAO,GAC9Bor8B,IAAyB,IAAApr8B,SAAO,GAChCqr8B,IAAgC,IAAArr8B,QAAO,MAEvCk4U,IAAkB,EAAAC,EAAA,KAClBgokB,GAAQjokB,GAAgB,GACxBoznB,GAAcpznB,GAAgB,GAE9B6D,IAAa,EAAAuqC,EAAA,GAAiBp5P,GAClCrZ,GAAW,QAAmBA,EAAU,UACxC,IAAA6rO,qBAAoB9rO,EAAK,WACvB,MAAO,CACL,UAAI231B,GAEF,OAAOprD,EACT,EAGJ,EAAG,CAACA,KACJ,IAAIqrD,IAAe,IAAA7q8B,SAAQ,WACzB,MAAO,CACLusH,OAAQ6uN,GAEZ,EAAG,CAACA,KAEJ,SAAS0vnB,KACP,OAAIV,IACC,KAAS,GAAU,IAAIhB,GACrB,GACT,CAEA,SAAS2B,GAAkB5j9B,GACzB,GAAKqgY,EAAA,EAAL,CACA,IAAIwjlB,EAAyBF,KAAkB5E,uBAAuB1mD,IAClEyrD,EAAqB9j9B,EAAK+H,cAAe,EAAA7H,EAAA,GAAcF,GAAM2B,gBAAgBuD,aACjF25E,EAAS,CACPva,aAAcu/4B,IAA2BC,EAAqB,SAAqB/z8B,EACnFs0D,aAAcw/4B,GAA0BC,EAAqB,SAAqB/z8B,GAL9D,CAOxB,CAEA,IAAIk/hB,IAAqB,EAAAzwK,EAAA,GAAiB,WACpC65hB,IACFurD,GAAkBvrD,GAAMknD,OAE5B,IACA,EAAAmC,EAAA,GAAe,YACb,EAAAtw8B,EAAA,GAAoBhR,OAAQ,SAAU6uiB,IAElCs0a,GAA8Bz08B,SAChCy08B,GAA8Bz08B,SAElC,GAIA,IAAIi18B,GAAwB,WAC1BV,GAAqBv08B,SAAU,CACjC,EAEI2soB,GAAgB,SAAuBx9oB,GACrCol9B,GAAqBv08B,SAAWup5B,IAASp65B,EAAE+I,SAAWqx5B,GAAMknD,SAC9D+D,GAAuBx08B,SAAU,GAGnCu08B,GAAqBv08B,SAAU,CACjC,EAEIk18B,GAA6B,WAC/BZ,GAAsB,GACtBG,GAA8Bz08B,SAAU,EAAAslhB,EAAA,GAAcikY,GAAMknD,OAAQ,WAClE6D,GAAsB,EACxB,EACF,EAUIhvnB,GAAc,SAAqBn2V,GACpB,WAAbqvE,EAKAg24B,GAAuBx08B,SAAW7Q,EAAE+I,SAAW/I,EAAEksV,cACnDm5nB,GAAuBx08B,SAAU,EAInCs2H,IAnB8B,SAAmCnnI,GAC7DA,EAAE+I,SAAW/I,EAAEksV,eAInB65nB,IACF,CAIIC,CAA0Bhm9B,EAU9B,EA4DIyi9B,IAAiB,IAAAvo8B,aAAY,SAAU+r8B,GACzC,OAAoB,gBAAoB,OAAO,OAAS,CAAC,EAAGA,EAAe,CACzEnh2B,UAAW,IAAWgJ,EAAW,YAAai31B,GAAoBhh7B,GAAa,UAEnF,EAAG,CAACA,EAAWgh7B,EAAmBj31B,IAE9Bo41B,IAAiB,OAAS,CAAC,EAAGxh7B,EAAOug7B,GAuBzC,OApBKlh7B,IACHmi7B,GAAe1u5B,QAAU,SAmBP,gBAAoB,EAAawhS,SAAU,CAC7Dr4V,MAAO8k9B,IACO,gBAAoB,EAAW,CAC7C7l6B,KAAMA,EACNiuE,IAAK031B,GACLl24B,SAAUA,EACVvO,UAAWA,EACXssxB,UAAU,EAEVp+d,UAAWA,EACXozlB,aAAcA,EACdx+R,aAAcA,EACd0+R,oBAAqBA,EACrBN,gBApGwB,SAA6Bhi9B,GAChDot1B,GAAyB,WAAb/9wB,EAKN+9wB,GAAY40H,GACrBA,EAAgBhi9B,IAHhBA,EAAE2nI,iBACFo+0B,KAIJ,EA4FE9+0B,OAAQA,EACRE,OAAQA,EACR0yG,QA5FgB,SAAqB93O,GACjCA,IACFA,EAAK2iC,MAAM8yB,QAAU,QACrBmu5B,GAAkB5j9B,IAGpB,IAAK,IAAImN,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IAClGF,EAAKE,EAAO,GAAKJ,UAAUI,GAGzBsqO,GAASA,EAAQ/9N,WAAM,EAAQ,CAAC/Z,GAAMiH,OAAOqG,GACnD,EAkFEokV,WApEmB,SAAwB1xV,GAC3C,IAAK,IAAIo3H,EAAQhqH,UAAUC,OAAQC,EAAO,IAAIC,MAAM6pH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG/pH,EAAK+pH,EAAQ,GAAKjqH,UAAUiqH,GAG1Bq6N,GAAYA,EAAW33U,WAAM,EAAQ,CAAC/Z,GAAMiH,OAAOqG,KAEvD,EAAA6D,EAAA,IAAiB/Q,OAAQ,SAAU6uiB,GACrC,EA6DEt9M,UAAWA,EACXH,OAlFe,SAAoBxxV,GAC/Buj9B,GAA8Bz08B,SAChCy08B,GAA8Bz08B,UAGhC,IAAK,IAAIynH,EAAQnpH,UAAUC,OAAQC,EAAO,IAAIC,MAAMgpH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGlpH,EAAKkpH,EAAQ,GAAKppH,UAAUopH,GAG1Bg7N,GAAQA,EAAOz3U,WAAM,EAAQ,CAAC/Z,GAAMiH,OAAOqG,GACjD,EAyEEmkV,UAAWA,EACXG,SA9DiB,SAAsB5xV,GACnCA,IAAMA,EAAK2iC,MAAM8yB,QAAU,IAE/B,IAAK,IAAI+hE,EAAQpqH,UAAUC,OAAQC,EAAO,IAAIC,MAAMiqH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGnqH,EAAKmqH,EAAQ,GAAKrqH,UAAUqqH,GAG1Bm6N,GAAUA,EAAS73U,WAAM,EAAQzM,IAErC,EAAA8D,EAAA,GAAoBhR,OAAQ,SAAU6uiB,GACxC,EAqDE0nZ,QAASgtB,KACT9C,mBAAoB901B,EAAW,QAC/B5jE,WAAYnmB,EAAY4g7B,QAAmB7y8B,EAC3Cmw8B,mBAAoBl+6B,EAAY8/6B,QAAqB/x8B,EACrD2w8B,eAAgBA,GAChBF,aA3CiB,SAAsBoB,GACvC,OAAoB,gBAAoB,OAAO,OAAS,CACtDrq8B,KAAM,UACLqq8B,EAAa,CACdj/6B,MAAOwh7B,GACPph2B,UAAW,IAAWA,EAAWgJ,EAAUo31B,GAAsBp31B,EAAW,WAC5EtoF,QAAS6pC,EAAW8mR,QAAcrkV,EAClCq08B,UAAW3oU,GACX,kBAAmBsnU,IACJ,gBAAoBD,GAAQ,OAAS,CAAC,EAAGz36B,EAAO,CAC/Dg56B,YAAaN,GACbhh2B,UAAW8/1B,EACXL,iBAAkBA,IAChB/x1B,GACN,IA+BF,GACA,GAAM6wE,YAAc,QACpB,GAAMgxB,aAAe,GACrB,GAAMk3K,KAAO86kB,EACb,GAAM56kB,OAAS,GACf,GAAMliT,MAAQ+83B,GACd,GAAMj1E,OAASk1E,GAAA,EACf,GAAM1B,OAAS,GACf,GAAM2B,oBAAsB,IAC5B,GAAMC,6BAA+B,IACrC,W,YCpTA,IAAIC,EAAU,OAedhq3B,EAAOj9F,QANP,SAAqB6qO,GACnB,IAAIn8N,EAAS,IAAIm8N,EAAO7uN,YAAY6uN,EAAO/9M,OAAQm67B,EAAQrm7B,KAAKiqM,IAEhE,OADAn8N,EAAOuuK,UAAY4tD,EAAO5tD,UACnBvuK,CACT,C,+BCbA,IAAIkzkB,EAAS,EAAQ,OAQjB+tX,EAAwB,WAIxB,SAASA,IACLtq8B,OAAO0hC,iBAAiBxrB,KAAM,CAC1B2r8B,QAAS,CACLhm9B,MAAO,IAAI0glB,EAAO,CACd76H,OAAQ,SAAgBsxf,GACpB,OAAOA,EAAS9C,KACpB,EACA1zX,oBAAqB,SAA6B1skB,EAAGC,GACjD,OAAOD,EAAEkrV,UAAYjrV,EAAEirV,QAC3B,KAGR8mnB,OAAQ,CACJng7B,UAAU,EACV9lC,MAAO,MAEXq08B,MAAO,CACHtu6B,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAK4r8B,MAChB,IAGZ,CA2BA,OApBAxX,EAAOh07B,UAAU857B,SAAW,SAAUF,GAClCh67B,KAAK4r8B,OAAS5R,EACd,IAAI9z7B,EAAMlG,KAAK2r8B,QAAQ75jB,QAAQj+Y,IAAImm8B,GACnC,OAAO9z7B,EAAMA,EAAI6/e,WAAa,EAClC,EAOAquc,EAAOh07B,UAAUhK,OAAS,SAAU0m8B,GAEhCA,EAAS/2c,WAAa+2c,EAAS/2c,YAAc,GAC7C,IAAI8ld,EAAc7r8B,KAAK2r8B,QAAQ75jB,QAAQj+Y,IAAIip8B,EAAS9C,OAChD8R,EAAgBD,EAAcA,EAAY9ld,WAAa,GAC3D,OAAO/lf,KAAK2r8B,QAAQv18B,OAAO0m8B,IAAa987B,KAAK4r8B,SAAW9O,EAAS9C,MAC3D8C,EAAS/2c,WAAWjrf,MAAMgx8B,EAAc138B,QACxC,EACV,EACOgg8B,CACX,CAvD2B,GAwD3B1y2B,EAAOj9F,QAAU2v8B,C,yBCxDT,SAAWvz8B,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFC,MACxF,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,6CAA6CF,MAAM,KAC7DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,cAAe,8BACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,SAAbD,EACOC,EACa,cAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbD,GAAsC,UAAbA,EACzBC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUipM,EAAOC,EAAS/oM,GAChC,OAAI8oM,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEf,EACA7oM,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNC,EAAG,gBACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/EyCC,CAAQ,EAAQ,O,+BCA3C,SAAS0rB,EAAS0c,GAC7B,QAAqB,iBAAVA,GAAgC,OAAVA,GAKC,iBAAvBA,EAAM4rN,cAA6C,oBAAT1/C,MAAwBlsK,aAAiBksK,MAKhE,mBAAnBlsK,EAAMg5E,UAA2C,oBAAT98F,MAAwB8jB,aAAiB9jB,MAGpFvU,MAAMyb,QAAQ4c,GAC1B,CCde,SAASo/6B,EAAqBzmvB,GAIzC,OAH+B,IAA3BA,EAAOuX,iBACPjqM,QAAQ/lB,KAAK,mDAEVoD,EAASq1M,EAAOuX,gBAC3B,CCHe,SAASmvuB,EAASrm9B,GAC7B,GAAc,KAAVA,EACA,OAEJ,GAAc,OAAVA,EACA,OAAO,KAEX,GAAI,MAAMzD,KAAKyD,GAGX,OAAOA,EAEX,GAAI,OAAOzD,KAAKyD,GAEZ,OAAOA,EAEX,GAAI,UAAUzD,KAAKyD,GAIf,OAAOA,EAEX,MAAMkb,EAAIsP,OAAOxqB,GAEjB,MAD2B,iBAANkb,GAAmBsP,OAAOpqB,MAAM8a,GAClClb,EAAJkb,CACnB,C,gpBC7BO,MAAMor8B,EAA2B,wBAC3BC,EAA4B,uBAC5BC,EAAa,QACbC,EAAa,QACbC,EAAY,QACZC,EAAc,UAEdC,EAAmB,eACnBC,EAAW,OACXC,EAAa,WACbC,EAAS,MACTC,EAAS,KACT,EAAY,QAEZC,EAAW,QACXC,EAAa,QACb,EAAiB,aACjBC,EAAe,WACfC,EAAyB,sBACzBC,EAAU,OAKVC,EAAkC,8BAClCC,EAAqB,oBAErBC,EAAgB,YAChBC,EAAiB,aACjBC,EAAwB,mBCzBtB,SAASC,EAAarqmB,EAAW,CAAC,EAAGgljB,EAAgB,CAAC,GACjE,OAAOn+5B,OAAOO,KAAK44W,GACdhyW,OAAQzG,GAA+B,IAAvBA,EAAIjC,QAAQ,QAC5B+B,OAAO,CAACsF,EAASpF,KAClB,MAAM7E,EAAQs9W,EAASz4W,GACvB,OAAIA,IAAQ2i9B,GAAiBl97B,EAAStqB,IAClCitC,QAAQ3oB,MAAM,uFACPra,GAEPpF,IAAQ4i9B,GAAkBn97B,EAAStqB,GAC5B,IAAKiK,KAAYjK,GAErB,IAAKiK,EAAS,CAACpF,EAAI2+F,UAAU,IAAKxjG,IAC1C,IAAKsi6B,GACZ,CCbe,SAASslD,EAAUjovB,EAAQ29I,EAAW,CAAC,EAAGjB,GACrD,IAAK18I,EAAOwX,qBACR,OAAO,EAEX,MAAM,WAAE0wuB,GAAa,GAASF,EAAarqmB,GAC3C,OAAmB,IAAfuqmB,EACOA,OAIkB128B,IAAzBwuN,EAAOgZ,gBAA+B0jI,GAC/Bl4W,OAAOO,KAAK23W,GAAU5tW,OAASkxN,EAAOgZ,aAGrD,C,eCjBe,SAASmvuB,EAAmBzrmB,GACvC,MAAM9jT,EAAU,CAIZ,CAACuu5B,GAAa,GACd,QAAAiB,CAASt92B,GACLpwF,KAAKys8B,GAAY348B,KAAKs8F,EAC1B,GAEJ,GAAI97F,MAAMyb,QAAQiyV,GACd,OAAOA,EAAS13W,OAAO,CAACoL,EAAK/P,EAAO6E,KACzB,IAAKkL,EAAK,CAAClL,GAAMij9B,EAAmB9n9B,KAC5Cu4D,GAEP,IAAI,EAAAwsK,EAAA,GAAcs3I,GAAW,CACzB,MAAM2rmB,EAAa3rmB,EACnB,OAAOl4W,OAAOO,KAAKsj9B,GAAYrj9B,OAAO,CAACoL,EAAKlL,KACjC,IAAKkL,EAAK,CAAClL,GAAMij9B,EAAmBE,EAAWnj9B,MACvD0zD,EACP,CACA,OAAOA,CACX,C,0BCjBA,SAAS4od,EAASl+e,GAChB,IAAIpyB,GAAS,EACTpC,EAAmB,MAAVw0B,EAAiB,EAAIA,EAAOx0B,OAGzC,IADA4L,KAAKi4T,SAAW,IAAI,MACXzhU,EAAQpC,GACf4L,KAAK1M,IAAIs1B,EAAOpyB,GAEpB,CAGAswgB,EAAS1mgB,UAAU9M,IAAMwzgB,EAAS1mgB,UAAUtM,KCV5C,SAAqBnO,GAEnB,OADAqa,KAAKi4T,SAASlkU,IAAIpO,EAbC,6BAcZqa,IACT,EDQA8mgB,EAAS1mgB,UAAUzM,IEfnB,SAAqBhO,GACnB,OAAOqa,KAAKi4T,SAAStkU,IAAIhO,EAC3B,EFeA,UGJA,EAZA,SAAmB0uB,EAAO2/F,GAIxB,IAHA,IAAIx9G,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,SAE9BoC,EAAQpC,GACf,GAAI4/G,EAAU3/F,EAAM7d,GAAQA,EAAO6d,GACjC,OAAO,EAGX,OAAO,CACT,ECRA,EAJA,SAAkBkY,EAAO/hC,GACvB,OAAO+hC,EAAM54B,IAAInJ,EACnB,ECyEA,EA9DA,SAAqB6pB,EAAOwsC,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GACjE,IAAIsrY,EAjBqB,EAiBTnoL,EACZu9Q,EAAY5yf,EAAMjgB,OAClB8ygB,EAAYrmd,EAAMzsD,OAEtB,GAAI6ygB,GAAaC,KAAer1F,GAAaq1F,EAAYD,GACvD,OAAO,EAGT,IAAIE,EAAa5ge,EAAM1yC,IAAIwgB,GACvB+yf,EAAa7ge,EAAM1yC,IAAIgtD,GAC3B,GAAIsmd,GAAcC,EAChB,OAAOD,GAActmd,GAASumd,GAAc/yf,EAE9C,IAAI7d,GAAS,EACTrD,GAAS,EACT60I,EA/BuB,EA+Bf0hH,EAAoC,IAAI,OAAW5yP,EAM/D,IAJAyvC,EAAMxyC,IAAIsgB,EAAOwsC,GACjBta,EAAMxyC,IAAI8sD,EAAOxsC,KAGR7d,EAAQywgB,GAAW,CAC1B,IAAII,EAAWhzf,EAAM7d,GACjB8wgB,EAAWzmd,EAAMrqD,GAErB,GAAI4iO,EACF,IAAImuS,EAAW11F,EACXz4M,EAAWkuS,EAAUD,EAAU7wgB,EAAOqqD,EAAOxsC,EAAOkyB,GACpD6yL,EAAWiuS,EAAUC,EAAU9wgB,EAAO6d,EAAOwsC,EAAOta,GAE1D,QAAiBzvC,IAAbywgB,EAAwB,CAC1B,GAAIA,EACF,SAEFp0gB,GAAS,EACT,KACF,CAEA,GAAI60I,GACF,IAAK,EAAUnnF,EAAO,SAASymd,EAAUE,GACnC,IAAK,EAASx/X,EAAMw/X,KACfH,IAAaC,GAAY11F,EAAUy1F,EAAUC,EAAU59Q,EAAStwB,EAAY7yL,IAC/E,OAAOyhG,EAAKl0I,KAAK0zgB,EAErB,GAAI,CACNr0gB,GAAS,EACT,KACF,OACK,GACDk0gB,IAAaC,IACX11F,EAAUy1F,EAAUC,EAAU59Q,EAAStwB,EAAY7yL,GACpD,CACLpzC,GAAS,EACT,KACF,CACF,CAGA,OAFAozC,EAAc,OAAElyB,GAChBkyB,EAAc,OAAEsa,GACT1tD,CACT,E,mCChEA,QAVA,SAAoBJ,GAClB,IAAIyD,GAAS,EACTrD,EAASmB,MAAMvB,EAAIggB,MAKvB,OAHAhgB,EAAIf,QAAQ,SAASrM,EAAO6E,GAC1B2I,IAASqD,GAAS,CAAChM,EAAK7E,EAC1B,GACOwN,CACT,ECEA,EAVA,SAAoBY,GAClB,IAAIyC,GAAS,EACTrD,EAASmB,MAAMP,EAAIgf,MAKvB,OAHAhf,EAAI/B,QAAQ,SAASrM,GACnBwN,IAASqD,GAAS7Q,CACpB,GACOwN,CACT,ECPA,IAkBIqvH,EAAc,IAAS,IAAOpiH,eAAYtJ,EAC1C66a,EAAgBnvT,EAAcA,EAAYm0F,aAAU7/M,E,eClBpD,EAHchN,OAAOsW,UAGQxU,e,+CCI7By9P,EAAU,qBACVw1Y,GAAW,iBACXt1Y,GAAY,kBAMZ,GAHcz/P,OAAOsW,UAGQxU,eA6DjC,SA7CA,SAAyB0/C,EAAQuV,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GACtE,IAAIm5lB,GAAW,EAAA3vnB,EAAA,GAAQu7B,GACnBq0lB,GAAW,EAAA5vnB,EAAA,GAAQ8wC,GACnB++kB,EAASF,EAAWb,IAAW,OAAOvzlB,GACtCu0lB,EAASF,EAAWd,IAAW,OAAOh+kB,GAKtCi/kB,GAHJF,EAASA,GAAUv2Y,EAAUE,GAAYq2Y,IAGhBr2Y,GACrBw2Y,GAHJF,EAASA,GAAUx2Y,EAAUE,GAAYs2Y,IAGhBt2Y,GACrBy2Y,EAAYJ,GAAUC,EAE1B,GAAIG,IAAa,EAAAlpgB,EAAA,GAASxrF,GAAS,CACjC,KAAK,EAAAwrF,EAAA,GAASj2E,GACZ,OAAO,EAET6+kB,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAv5lB,IAAUA,EAAQ,IAAI,KACdm5lB,IAAY,EAAAlK,EAAA,GAAalqlB,GAC7B,EAAYA,EAAQuV,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GFdnE,SAAoB+E,EAAQuV,EAAOmhC,EAAK0nK,EAAStwB,EAAYw4M,EAAWrrY,GACtE,OAAQy7C,GACN,IAzBc,oBA0BZ,GAAK12C,EAAO+hJ,YAAcxsI,EAAMwsI,YAC3B/hJ,EAAO01D,YAAcngD,EAAMmgD,WAC9B,OAAO,EAET11D,EAASA,EAAO3mD,OAChBk8D,EAAQA,EAAMl8D,OAEhB,IAlCiB,uBAmCf,QAAK2mD,EAAO+hJ,YAAcxsI,EAAMwsI,aAC3BukP,EAAU,IAAI,IAAWtmY,GAAS,IAAI,IAAWuV,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAO,EAAAtnC,EAAA,IAAI+xB,GAASuV,GAEtB,IAxDW,iBAyDT,OAAOvV,EAAO/3C,MAAQstD,EAAMttD,MAAQ+3C,EAAO8kD,SAAWvvC,EAAMuvC,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAO9kD,GAAWuV,EAAQ,GAE5B,IAjES,eAkEP,IAAIwnK,EAAU,EAEhB,IAjES,eAkEP,IAAIwpN,EA5EiB,EA4ELnoL,EAGhB,GAFArhC,IAAYA,EAAU,GAElB/8K,EAAOv4B,MAAQ8tC,EAAM9tC,OAAS8+Z,EAChC,OAAO,EAGT,IAAIjrY,EAAUL,EAAM1yC,IAAIy3C,GACxB,GAAI1E,EACF,OAAOA,GAAWia,EAEpB6oM,GAtFuB,EAyFvBnjN,EAAMxyC,IAAIu3C,EAAQuV,GAClB,IAAI1tD,EAAS,EAAYk1N,EAAQ/8K,GAAS+8K,EAAQxnK,GAAQ6oM,EAAStwB,EAAYw4M,EAAWrrY,GAE1F,OADAA,EAAc,OAAE+E,GACTn4C,EAET,IAnFY,kBAoFV,GAAIw+a,EACF,OAAOA,EAActxa,KAAKirC,IAAWqmY,EAActxa,KAAKwgD,GAG9D,OAAO,CACT,CEhDQ,CAAWvV,EAAQuV,EAAO++kB,EAAQl2Y,EAAStwB,EAAYw4M,EAAWrrY,GAExE,KArDyB,EAqDnBmjN,GAAiC,CACrC,IAAIw2Y,EAAeJ,GAAY,GAAez/nB,KAAKirC,EAAQ,eACvD60lB,EAAeJ,GAAY,GAAe1/nB,KAAKwgD,EAAO,eAE1D,GAAIq/kB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe50lB,EAAO3lD,QAAU2lD,EAC/C+0lB,EAAeF,EAAet/kB,EAAMl7D,QAAUk7D,EAGlD,OADAta,IAAUA,EAAQ,IAAI,KACfqrY,EAAUwuN,EAAcC,EAAc32Y,EAAStwB,EAAY7yL,EACpE,CACF,CACA,QAAKy5lB,IAGLz5lB,IAAUA,EAAQ,IAAI,KDtDxB,SAAsB+E,EAAQuV,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GACnE,IAAIsrY,EAtBqB,EAsBTnoL,EACZr3N,GAAW,OAAWiZ,GACtBg1lB,EAAYjumB,EAASj+B,OAIzB,GAAIksoB,IAHW,OAAWz/kB,GACDzsD,SAEMy9a,EAC7B,OAAO,EAGT,IADA,IAAIr7a,EAAQ8poB,EACL9poB,KAAS,CACd,IAAIhM,EAAM6nC,EAAS77B,GACnB,KAAMq7a,EAAYrnb,KAAOq2D,EAAQ,EAAexgD,KAAKwgD,EAAOr2D,IAC1D,OAAO,CAEX,CAEA,IAAIkwzB,EAAan0wB,EAAM1yC,IAAIy3C,GACvB87d,EAAa7ge,EAAM1yC,IAAIgtD,GAC3B,GAAI65vB,GAActzS,EAChB,OAAOszS,GAAc75vB,GAASumd,GAAc97d,EAE9C,IAAIn4C,GAAS,EACbozC,EAAMxyC,IAAIu3C,EAAQuV,GAClBta,EAAMxyC,IAAI8sD,EAAOvV,GAGjB,IADA,IAAIi1lB,EAAW1uN,IACNr7a,EAAQ8poB,GAAW,CAE1B,IAAI93S,EAAWl9S,EADf9gD,EAAM6nC,EAAS77B,IAEX8wgB,EAAWzmd,EAAMr2D,GAErB,GAAI4uO,EACF,IAAImuS,EAAW11F,EACXz4M,EAAWkuS,EAAU9+K,EAAUh+V,EAAKq2D,EAAOvV,EAAQ/E,GACnD6yL,EAAWovH,EAAU8+K,EAAU98gB,EAAK8gD,EAAQuV,EAAOta,GAGzD,UAAmBzvC,IAAbywgB,EACG/+K,IAAa8+K,GAAY11F,EAAUppF,EAAU8+K,EAAU59Q,EAAStwB,EAAY7yL,GAC7Eghe,GACD,CACLp0gB,GAAS,EACT,KACF,CACAotoB,IAAaA,EAAkB,eAAP/1oB,EAC1B,CACA,GAAI2I,IAAWotoB,EAAU,CACvB,IAAIC,EAAUl1lB,EAAO7qC,YACjBggoB,EAAU5/kB,EAAMpgD,YAGhB+/nB,GAAWC,KACV,gBAAiBn1lB,MAAU,gBAAiBuV,IACzB,mBAAX2/kB,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDttoB,GAAS,EAEb,CAGA,OAFAozC,EAAc,OAAE+E,GAChB/E,EAAc,OAAEsa,GACT1tD,CACT,CCRS,CAAam4C,EAAQuV,EAAO6oM,EAAStwB,EAAYw4M,EAAWrrY,GACrE,E,gBCrDA,SAVA,SAASihE,EAAY7hH,EAAOk7D,EAAO6oM,EAAStwB,EAAY7yL,GACtD,OAAI5gD,IAAUk7D,IAGD,MAATl7D,GAA0B,MAATk7D,KAAmB,EAAA0nK,GAAA,GAAa5iO,MAAW,EAAA4iO,GAAA,GAAa1nK,GACpEl7D,GAAUA,GAASk7D,GAAUA,EAE/B,GAAgBl7D,EAAOk7D,EAAO6oM,EAAStwB,EAAY5xH,EAAajhE,GACzE,ECeA,GANA,SAAqB5gD,EAAOk7D,EAAOu4K,GAEjC,IAAIjmO,GADJimO,EAAkC,mBAAdA,EAA2BA,OAAatiO,GAClCsiO,EAAWzzO,EAAOk7D,QAAS/pD,EACrD,YAAkBA,IAAX3D,EAAuB,GAAYxN,EAAOk7D,OAAO/pD,EAAWsiO,KAAgBjmO,CACrF,EC9Be,SAAS,GAAWyG,EAAGC,GAClC,OAAO,GAAYD,EAAGC,EAAG,CAACyY,EAAKuuC,KAC3B,GAAmB,mBAARvuC,GAAuC,mBAAVuuC,EAGpC,OAAO,GAInB,C,oDCNO,SAAS+s5B,GAA0Bpj9B,EAAK8gD,GAC3C,MAAM3lD,EAAQ2lD,EAAO9gD,GAErB,MAAO,EADW,EAAA6rO,GAAA,GAAK/qL,EAAQ,CAAC9gD,IACb7E,EACvB,CAYO,SAASko9B,GAA8B7nvB,EAAMmW,EAAa,CAAC,EAAG2xuB,EAAc,IAC/E,MAAMj71B,EAAMmzG,GAAQ,GACpB,IAAI+nvB,EACJ,IAAIl71B,EAAIhnF,WAAW,KAKf,MAAM,IAAItkB,MAAM,mCAAmCy+M,MAHnD+nvB,EAAaro3B,mBAAmBmtB,EAAI1pB,UAAU,IAKlD,MAAMtzF,EAAUm48B,GAAYn68B,IAAIsoO,EAAY4xuB,GAC5C,QAAgBj38B,IAAZjB,EACA,MAAM,IAAI0R,MAAM,mCAAmCy+M,MAEvD,MAAMy/W,EAAU5vkB,EAAQm38B,GACxB,GAAIvnY,EAAS,CAET,GAAIqoY,EAAYn46B,SAAS8viB,GAAU,CAC/B,GAA2B,IAAvBqoY,EAAY158B,OACZ,MAAM,IAAImT,MAAM,kBAAkBy+M,6BAEtC,MAAOiovB,KAAaC,GAAYJ,EAC1BK,EAAe,IAAID,EAAUr71B,EAAKo71B,GAAU/v8B,KAAK,QACvD,MAAM,IAAIqJ,MAAM,kBAAkB0m8B,2CAAkDE,IACxF,CACA,MAAOts6B,EAAWus6B,GAAUR,GAA0BZ,EAASn38B,GACzDu1O,EAAYyiuB,GAA8BO,EAAQjyuB,EAAY,IAAI2xuB,EAAaj71B,IACrF,OAAI/oH,OAAOO,KAAKw3C,GAAWztC,OAAS,EACzB,IAAKytC,KAAcupM,GAEvBA,CACX,CACA,OAAOv1O,CACX,CAWe,SAASw48B,GAAqBrovB,EAAMmW,EAAa,CAAC,GAE7D,OAAO0xuB,GAA8B7nvB,EAAMmW,EADvB,GAExB,C,2BCrCA,SALA,SAAkBx2O,GAChB,MAAuB,iBAATA,IACX,EAAA4iO,GAAA,GAAa5iO,IA9BF,oBA8BY,QAAWA,EACvC,E,gBCNA,SALA,SAAkBA,GAChB,MAAuB,iBAATA,KACV,EAAAoqB,EAAA,GAAQpqB,KAAU,EAAA4iO,GAAA,GAAa5iO,IArBrB,oBAqB+B,QAAWA,EAC1D,ECFA,GAbA,SAAqB0uB,EAAOurM,EAAUF,EAAa4uvB,GACjD,IAAI938B,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OAKvC,IAHIk68B,GAAal68B,IACfsrN,EAAcrrM,IAAQ7d,MAEfA,EAAQpC,GACfsrN,EAAcE,EAASF,EAAarrM,EAAM7d,GAAQA,EAAO6d,GAE3D,OAAOqrM,CACT,E,gBCsCA,MC/CA,GAJA,SAA4B/5N,GAC1B,OAAOA,GAAUA,KAAU,QAASA,EACtC,E,gBCWA,MCJA,GAVA,SAAiC6E,EAAKm9pB,GACpC,OAAO,SAASr8mB,GACd,OAAc,MAAVA,GAGGA,EAAO9gD,KAASm9pB,SACP7wpB,IAAb6wpB,GAA2Bn9pB,KAAOV,OAAOwhD,GAC9C,CACF,ECIA,GAVA,SAAqB/5B,GACnB,IAAIk2oB,EFFN,SAAsBn8mB,GAIpB,IAHA,IAAIn4C,GAAS,EAAA9I,GAAA,GAAKihD,GACdl3C,EAASjB,EAAOiB,OAEbA,KAAU,CACf,IAAI5J,EAAM2I,EAAOiB,GACbzO,EAAQ2lD,EAAO9gD,GAEnB2I,EAAOiB,GAAU,CAAC5J,EAAK7E,EAAO,GAAmBA,GACnD,CACA,OAAOwN,CACT,CETkB,CAAaoe,GAC7B,OAAwB,GAApBk2oB,EAAUrzpB,QAAeqzpB,EAAU,GAAG,GACjC,GAAwBA,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASn8mB,GACd,OAAOA,IAAW/5B,GJAtB,SAAqB+5B,EAAQ/5B,EAAQk2oB,EAAWrub,GAC9C,IAAI5iO,EAAQixpB,EAAUrzpB,OAClBA,EAASoC,EACTkxpB,GAAgBtub,EAEpB,GAAc,MAAV9tL,EACF,OAAQl3C,EAGV,IADAk3C,EAASxhD,OAAOwhD,GACT90C,KAAS,CACd,IAAIT,EAAO0xpB,EAAUjxpB,GACrB,GAAKkxpB,GAAgB3xpB,EAAK,GAClBA,EAAK,KAAOu1C,EAAOv1C,EAAK,MACtBA,EAAK,KAAMu1C,GAEnB,OAAO,CAEX,CACA,OAAS90C,EAAQpC,GAAQ,CAEvB,IAAI5J,GADJuL,EAAO0xpB,EAAUjxpB,IACF,GACXgyV,EAAWl9S,EAAO9gD,GAClBm9pB,EAAW5xpB,EAAK,GAEpB,GAAI2xpB,GAAgB3xpB,EAAK,IACvB,QAAiBe,IAAb0xV,KAA4Bh+V,KAAO8gD,GACrC,OAAO,MAEJ,CACL,IAAI/E,EAAQ,IAAI,IAChB,GAAI6yL,EACF,IAAIjmO,EAASimO,EAAWovH,EAAUm/T,EAAUn9pB,EAAK8gD,EAAQ/5B,EAAQg1B,GAEnE,UAAiBzvC,IAAX3D,EACE,GAAYw0pB,EAAUn/T,EAAU,EAA+CpvH,EAAY7yL,GAC3FpzC,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CI1CgC,CAAYm4C,EAAQ/5B,EAAQk2oB,EAC1D,CACF,E,wECJA,MCgBA,GAJA,SAAkB5+kB,GAChB,OAAO,QAAMA,ICrBOr+E,GDqBc,QAAMq+E,GCpBjC,SAASv9B,GACd,OAAiB,MAAVA,OAAiBx0C,EAAYw0C,EAAO9gD,EAC7C,GFDF,SAA0Bq+E,GACxB,OAAO,SAASv9B,GACd,OAAO,QAAQA,EAAQu9B,EACzB,CACF,CCemD,CAAiBA,GCrBpE,IAAsBr+E,CDsBtB,EECA,GAjBA,SAAsB7E,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK45N,GAAA,EAEW,iBAAT55N,GACF,EAAAoqB,EAAA,GAAQpqB,ICHUkjF,EDIDljF,EAAM,GCJCgiqB,EDIGhiqB,EAAM,ICHtC,QAAMkjF,IAAS,GAAmB8+kB,GAC7B,IAAwB,QAAM9+kB,GAAO8+kB,GAEvC,SAASr8mB,GACd,IAAIk9S,GAAW,EAAA30V,GAAA,GAAIy3C,EAAQu9B,GAC3B,YAAqB/xE,IAAb0xV,GAA0BA,IAAam/T,GAC3C,EAAA9lT,GAAA,GAAMv2T,EAAQu9B,GACd,GAAY8+kB,EAAUn/T,EAAU,EACtC,GDJM,GAAY7iW,GAEX,GAASA,GCPlB,IAA6BkjF,EAAM8+kB,CDQnC,EENA,GATA,SAAoB1qc,EAAY2C,EAAUF,EAAa4uvB,EAAW3xU,GAMhE,OALAA,EAAS1/a,EAAY,SAASt3N,EAAO6Q,EAAOymN,GAC1CyC,EAAc4uvB,GACTA,GAAY,EAAO3o9B,GACpBi6N,EAASF,EAAa/5N,EAAO6Q,EAAOymN,EAC1C,GACOyC,CACT,EC8BA,GAPA,SAAgBzC,EAAY2C,EAAUF,GACpC,IAAIhrH,GAAO,EAAA3kF,EAAA,GAAQktM,GAAc,GAAc,GAC3CqxvB,EAAYn68B,UAAUC,OAAS,EAEnC,OAAOsgG,EAAKuoH,EAAY,GAAa2C,GAAcF,EAAa4uvB,EAAW,KAC7E,E,4BC/CIC,GAAe,KCEnB,IAAIC,GAAc,OAelB,SANA,SAAkB1q9B,GAChB,OAAOA,EACHA,EAAOgX,MAAM,EDHnB,SAAyBhX,GAGvB,IAFA,IAAI0S,EAAQ1S,EAAOsQ,OAEZoC,KAAW+38B,GAAars9B,KAAK4B,EAAO4uB,OAAOlc,MAClD,OAAOA,CACT,CCFsB,CAAgB1S,GAAU,GAAGC,QAAQyq9B,GAAa,IAClE1q9B,CACN,E,gBCRI2q9B,GAAa,qBAGbC,GAAa,aAGbC,GAAY,cAGZC,GAAezo7B,SCdnB,IAAI/S,GAAW,IAsCf,SAZA,SAAkBztB,GAChB,OAAKA,GAGLA,EDSF,SAAkBA,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,IAAI,EAAAq6H,GAAA,GAASr6H,GACX,OA1CM,IA4CR,IAAI,QAASA,GAAQ,CACnB,IAAIk7D,EAAgC,mBAAjBl7D,EAAMgxN,QAAwBhxN,EAAMgxN,UAAYhxN,EACnEA,GAAQ,QAASk7D,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAATl7D,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ,GAASA,GACjB,IAAIkp9B,EAAWH,GAAWxs9B,KAAKyD,GAC/B,OAAQkp9B,GAAYF,GAAUzs9B,KAAKyD,GAC/Bip9B,GAAajp9B,EAAMmV,MAAM,GAAI+z8B,EAAW,EAAI,GAC3CJ,GAAWvs9B,KAAKyD,GAvDb,KAuD6BA,CACvC,CC5BU,CAASA,MACHytB,IAAYztB,KAAU,IA9BpB,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,EClCA,IAGImp9B,GAAmB,WAGnBlhc,GAAYpohB,KAAKkE,IAuCrB,SAlBA,SAAemX,EAAG++M,GAEhB,IADA/+M,ECLF,SAAmBlb,GACjB,IAAIwN,EAAS,GAASxN,GAClBop9B,EAAY578B,EAAS,EAEzB,OAAOA,GAAWA,EAAU478B,EAAY578B,EAAS478B,EAAY578B,EAAU,CACzE,CDAM,CAAU0N,IACN,GAAKA,EA7BQ,iBA8BnB,MAAO,GAET,IAAIrK,EAAQs48B,GACR168B,EAASw5gB,GAAU/sgB,EAAGiu8B,IAE1BlvvB,GAAW,QAAaA,GACxB/+M,GAAKiu8B,GAGL,IADA,IAAI378B,GAAS,QAAUiB,EAAQwrN,KACtBppN,EAAQqK,GACf++M,EAASppN,GAEX,OAAOrD,CACT,EEpCe,SAAS678B,GAAqChtmB,EAAUpyW,EAASq/8B,GAC5E,IAAIzr8B,EACJ,GAAIw+V,GAAYitmB,EAAoB,CAChC,MAAMtp9B,GAAQ,EAAAkO,GAAA,GAAImuW,EAAUitmB,GAC5B,QAAcn48B,IAAVnR,EACA,OAEJ,IAAK,IAAIN,EAAI,EAAGA,EAAIuK,EAAQwE,OAAQ/O,IAAK,CACrC,MAAMigD,EAAS11C,EAAQvK,GACjB8jX,GAAgB,EAAAt1W,GAAA,GAAIyxC,EAAQ,CAAC,EAAgB2p6B,GAAqB,CAAC,GACzE,GAA2B,WAAvB9lmB,EAAcn5V,MAA4C,UAAvBm5V,EAAcn5V,KAArD,CAGA,GAAIm5V,EAAczrI,QAAU/3O,EACxB,OAAON,EAEX,GAAkC,QAA7Bme,EAAK2lW,EAAc1rI,YAAyB,IAAPj6N,OAAgB,EAASA,EAAGmyB,SAAShwC,GAC3E,OAAON,CALX,CAOJ,CACJ,CAEJ,CCjBe,SAAS4jX,GAAkBjoD,EAAWghD,EAAUpyW,EAASusO,EAAY8yuB,GAGhF,QAAiBn48B,IAAbkrW,EACA,OAAO,EAEX,MAAMktmB,EAA2BF,GAAqChtmB,EAAUpyW,EAASq/8B,GACzF,GAAI,GAASC,GACT,OAAOA,EAEX,IAAK,IAAI7p9B,EAAI,EAAGA,EAAIuK,EAAQwE,OAAQ/O,IAAK,CACrC,MAAMigD,EAAS11C,EAAQvK,GAEvB,GAAI4p9B,IAAsB,EAAAt78B,GAAA,GAAI2xC,EAAQ,CAAC,EAAgB2p6B,IAAsB,CACzE,MAAMtp9B,GAAQ,EAAAkO,GAAA,GAAImuW,EAAUitmB,GACtB9lmB,GAAgB,EAAAt1W,GAAA,GAAIyxC,EAAQ,CAAC,EAAgB2p6B,GAAqB,CAAC,GACzE,GAAIjupB,EAAUl4G,QAAQqgK,EAAexjX,EAAOw2O,GACxC,OAAO92O,CAEf,MACK,GAAIigD,EAAO,GAAiB,CAW7B,MAAM6p6B,EAAgB,CAClB/xuB,MAAOtzO,OAAOO,KAAKi7C,EAAO,IAAiBvyC,IAAKvI,IAAQ,CACpDmzO,SAAU,CAACnzO,OAGnB,IAAI4k9B,EAEJ,GAAI9p6B,EAAO83L,MAAO,CAEd,SAAWiyuB,GAAiB/p6B,EACvB+p6B,EAAalyuB,MAKdkyuB,EAAalyuB,MAAQkyuB,EAAalyuB,MAAMriO,QAJxCu08B,EAAalyuB,MAAQ,GAMzBkyuB,EAAalyuB,MAAMrpO,KAAKq78B,GACxBC,EAAkBC,CACtB,MAEID,EAAkBtl9B,OAAOC,OAAO,CAAC,EAAGu7C,EAAQ6p6B,GAKhD,UADOC,EAAgBzxuB,SACnBqjF,EAAUl4G,QAAQsmwB,EAAiBptmB,EAAU7lI,GAC7C,OAAO92O,CAEf,MACK,GAAI27T,EAAUl4G,QAAQxjK,EAAQ08T,EAAU7lI,GACzC,OAAO92O,CAEf,CACA,OAAO,CACX,CCvEe,SAASiq9B,GAAuBtupB,EAAWghD,EAAUpyW,EAASusO,EAAY8yuB,GACrF,OAAOhmmB,GAAkBjoD,EAAWghD,EAAUpyW,EAASusO,EAAY8yuB,EACvE,C,4ECkDA,SAvBA,SAAmB3j6B,EAAQs0K,EAAUF,GACnC,IAAImqC,GAAQ,EAAA95O,EAAA,GAAQu7B,GAChBik6B,EAAY1ltB,IAAS,EAAA/yH,EAAA,GAASxrF,KAAW,EAAAkqlB,EAAA,GAAalqlB,GAG1D,GADAs0K,EAAW,GAAaA,GACL,MAAfF,EAAqB,CACvB,IAAIT,EAAO3zK,GAAUA,EAAO7qC,YAE1Bi/M,EADE6vvB,EACY1ltB,EAAQ,IAAI5qC,EAAO,IAE1B,QAAS3zK,KACF,EAAAz4B,GAAA,GAAWosM,IAAQ,SAAW,QAAa3zK,IAG3C,CAAC,CAEnB,CAIA,OAHCik6B,EAAY,KAAY,MAAYjk6B,EAAQ,SAAS3lD,EAAO6Q,EAAO80C,GAClE,OAAOs0K,EAASF,EAAa/5N,EAAO6Q,EAAO80C,EAC7C,GACOo0K,CACT,E,gBC3CA,SAPA,SAA0Bp0K,EAAQ9gD,EAAK7E,SACtBmR,IAAVnR,KAAwB,EAAA4zB,EAAA,GAAG+xB,EAAO9gD,GAAM7E,SAC9BmR,IAAVnR,KAAyB6E,KAAO8gD,MACnC,QAAgBA,EAAQ9gD,EAAK7E,EAEjC,E,uFCeA,SAJA,SAA2BA,GACzB,OAAO,EAAA4iO,GAAA,GAAa5iO,KAAU,EAAA4lO,GAAA,GAAY5lO,EAC5C,ECVA,GAZA,SAAiB2lD,EAAQ9gD,GACvB,IAAY,gBAARA,GAAgD,mBAAhB8gD,EAAO9gD,KAIhC,aAAPA,EAIJ,OAAO8gD,EAAO9gD,EAChB,E,4BCaA,MC8DA,GA9DA,SAAuB8gD,EAAQ/5B,EAAQ/mB,EAAK2uO,EAAUixb,EAAWhxb,EAAY7yL,GAC3E,IDLqB5gD,ECKjB6iW,EAAW,GAAQl9S,EAAQ9gD,GAC3Bm9pB,EAAW,GAAQp2oB,EAAQ/mB,GAC3Bo8C,EAAUL,EAAM1yC,IAAI8zpB,GAExB,GAAI/gnB,EACF,GAAiB0E,EAAQ9gD,EAAKo8C,OADhC,CAIA,IAAI6nF,EAAW2qG,EACXA,EAAWovH,EAAUm/T,EAAWn9pB,EAAM,GAAK8gD,EAAQ/5B,EAAQg1B,QAC3DzvC,EAEAuzpB,OAAwBvzpB,IAAb23H,EAEf,GAAI47hB,EAAU,CACZ,IAAIxga,GAAQ,EAAA95O,EAAA,GAAQ43oB,GAChB2C,GAAUzga,IAAS,EAAA/yH,EAAA,GAAS6whB,GAC5B4C,GAAW1ga,IAAUyga,IAAU,EAAA90B,EAAA,GAAamyB,GAEhDl5hB,EAAWk5hB,EACP99Z,GAASyga,GAAUC,GACjB,EAAAx6oB,EAAA,GAAQy4U,GACV/5N,EAAW+5N,EAEJ,GAAkBA,GACzB/5N,GAAW,QAAU+5N,GAEd8hU,GACPD,GAAW,EACX57hB,GAAW,QAAYk5hB,GAAU,IAE1B4C,GACPF,GAAW,EACX57hB,GAAW,QAAgBk5hB,GAAU,IAGrCl5hB,EAAW,IAGN,EAAAi8F,EAAA,GAAci9b,KAAa,EAAA7qc,GAAA,GAAY6qc,IAC9Cl5hB,EAAW+5N,GACP,EAAA1rI,GAAA,GAAY0rI,ID9CC7iW,EC+CU6iW,EAAzB/5N,GD9CC,QAAW9oI,GAAO,EAAAyjQ,GAAA,GAAOzjQ,MCgDlB,QAAS6iW,MAAa,EAAA31U,GAAA,GAAW21U,KACzC/5N,GAAW,QAAgBk5hB,KAI7B0C,GAAW,CAEf,CACIA,IAEF9jnB,EAAMxyC,IAAI4zpB,EAAUl5hB,GACpB27hB,EAAU37hB,EAAUk5hB,EAAUxub,EAAUC,EAAY7yL,GACpDA,EAAc,OAAEohnB,IAElB,GAAiBr8mB,EAAQ9gD,EAAKikI,EAnD9B,CAoDF,EClDA,GAtBA,SAASwqG,EAAU3tL,EAAQ/5B,EAAQ4nN,EAAUC,EAAY7yL,GACnD+E,IAAW/5B,IAGf,QAAQA,EAAQ,SAASo2oB,EAAUn9pB,GAEjC,GADA+7C,IAAUA,EAAQ,IAAI,MAClB,QAASohnB,GACX,GAAcr8mB,EAAQ/5B,EAAQ/mB,EAAK2uO,EAAUF,EAAWG,EAAY7yL,OAEjE,CACH,IAAIkoF,EAAW2qG,EACXA,EAAW,GAAQ9tL,EAAQ9gD,GAAMm9pB,EAAWn9pB,EAAM,GAAK8gD,EAAQ/5B,EAAQg1B,QACvEzvC,OAEaA,IAAb23H,IACFA,EAAWk5hB,GAEb,GAAiBr8mB,EAAQ9gD,EAAKikI,EAChC,CACF,EAAG26H,GAAA,EACL,E,4BCvBA,SAJA,SAAkB10J,EAAMjoG,GACtB,OAAO,SAAY,QAASioG,EAAMjoG,EAAO8yN,GAAA,GAAW7qH,EAAO,GAC7D,E,gBCeA,MCSA,IC5BwB4mS,GDwBG,SAAShwV,EAAQ/5B,EAAQ4nN,GAClD,GAAU7tL,EAAQ/5B,EAAQ4nN,EAC5B,ECzBS,GAAS,SAAS7tL,EAAQv5B,GAC/B,IAAIvb,GAAS,EACTpC,EAAS2d,EAAQ3d,OACjBglO,EAAahlO,EAAS,EAAI2d,EAAQ3d,EAAS,QAAK0C,EAChDysN,EAAQnvN,EAAS,EAAI2d,EAAQ,QAAKjb,EAWtC,IATAsiO,EAAckiK,GAASlnY,OAAS,GAA0B,mBAAdglO,GACvChlO,IAAUglO,QACXtiO,EAEAysN,GFNR,SAAwB59N,EAAO6Q,EAAO80C,GACpC,KAAK,QAASA,GACZ,OAAO,EAET,IAAIt7B,SAAcxZ,EAClB,SAAY,UAARwZ,GACK,EAAAu7M,GAAA,GAAYjgL,KAAW,QAAQ90C,EAAO80C,EAAOl3C,QACrC,UAAR4b,GAAoBxZ,KAAS80C,KAE7B,EAAA/xB,EAAA,GAAG+xB,EAAO90C,GAAQ7Q,EAG7B,CENiB,CAAeosB,EAAQ,GAAIA,EAAQ,GAAIwxM,KAClD6V,EAAahlO,EAAS,OAAI0C,EAAYsiO,EACtChlO,EAAS,GAEXk3C,EAASxhD,OAAOwhD,KACP90C,EAAQpC,GAAQ,CACvB,IAAImd,EAASQ,EAAQvb,GACjB+a,GACF+pX,GAAShwV,EAAQ/5B,EAAQ/a,EAE7B,CACA,OAAO80C,CACT,IAvBF,IAAwBgwV,G,YCPpB,GAAW,IAqBf,SALA,SAAqBjnX,GAEnB,OADsB,MAATA,GAAoBA,EAAMjgB,QACvB,QAAYigB,EAAO,IAAY,EACjD,ECXA,GAJA,SAAmB1uB,GACjB,OAAOA,GAAUA,CACnB,ECOA,GALA,SAAuB0uB,EAAO1uB,GAE5B,QADsB,MAAT0uB,IAAoBA,EAAMjgB,SCCzC,SAAqBigB,EAAO1uB,EAAOsuH,GACjC,OAAOtuH,GAAUA,ECJnB,SAAuB0uB,EAAO1uB,EAAOsuH,GAInC,IAHA,IAAIz9G,EAAQy9G,EAAY,EACpB7/G,EAASigB,EAAMjgB,SAEVoC,EAAQpC,GACf,GAAIigB,EAAM7d,KAAW7Q,EACnB,OAAO6Q,EAGX,OAAQ,CACV,CDLM,CAAc6d,EAAO1uB,EAAOsuH,GEJlC,SAAuB5/F,EAAO2/F,EAAWC,EAAWC,GAIlD,IAHA,IAAI9/G,EAASigB,EAAMjgB,OACfoC,EAAQy9G,GAAaC,EAAY,GAAK,GAElCA,EAAY19G,MAAYA,EAAQpC,GACtC,GAAI4/G,EAAU3/F,EAAM7d,GAAQA,EAAO6d,GACjC,OAAO7d,EAGX,OAAQ,CACV,CFLM,CAAc6d,EAAO,GAAW4/F,EACtC,CDJqB,CAAY5/F,EAAO1uB,EAAO,IAAM,CACrD,EIOA,GAZA,SAA2B0uB,EAAO1uB,EAAO64P,GAIvC,IAHA,IAAIhoP,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,SAE9BoC,EAAQpC,GACf,GAAIoqP,EAAW74P,EAAO0uB,EAAM7d,IAC1B,OAAO,EAGX,OAAO,CACT,E,gBCHA,MCEA,GAJkB,MAAQ,EAAI,EAAW,IAAI,KAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAASoyB,GAC1F,OAAO,IAAI,KAAIA,EACjB,EDJA,WAEA,EEyDA,GApDA,SAAkBvU,EAAOurM,EAAU4+B,GACjC,IAAIhoP,GAAS,EACTm/B,EAAW,GACXvhC,EAASigB,EAAMjgB,OACfi2pB,GAAW,EACXl3pB,EAAS,GACT60I,EAAO70I,EAEX,GAAIqrP,EACF6ra,GAAW,EACX10nB,EAAW,QAER,GAAIvhC,GAvBY,IAuBgB,CACnC,IAAIL,EAAM6rN,EAAW,KAAO,GAAUvrM,GACtC,GAAItgB,EACF,OAAO,EAAWA,GAEpBs2pB,GAAW,EACX10nB,EAAW,EACXqyG,EAAO,IAAI,CACb,MAEEA,EAAO43E,EAAW,GAAKzsN,EAEzB+2E,EACA,OAAS1zE,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdmtN,EAAW/D,EAAWA,EAASj6N,GAASA,EAG5C,GADAA,EAAS64P,GAAwB,IAAV74P,EAAeA,EAAQ,EAC1C0kqB,GAAY1mc,GAAaA,EAAU,CAErC,IADA,IAAImgpB,EAAY97tB,EAAK5zI,OACd0v2B,KACL,GAAI97tB,EAAK87tB,KAAengpB,EACtB,SAASz5I,EAGT01I,GACF53E,EAAKl0I,KAAK6vN,GAEZxwN,EAAOW,KAAKnO,EACd,MACUgwC,EAASqyG,EAAM27E,EAAU66B,KAC7Bx2G,IAAS70I,GACX60I,EAAKl0I,KAAK6vN,GAEZxwN,EAAOW,KAAKnO,GAEhB,CACA,OAAOwN,CACT,EC7CA,GAJA,SAAckhB,GACZ,OAAQA,GAASA,EAAMjgB,OAAU,GAASigB,GAAS,EACrD,E,2BCde,SAASm77B,GAAgClqvB,GACpD,IAAI6jJ,EACJ,MAAMsmmB,GAAc,EAAA578B,GAAA,GAAIyxN,EAAQ,kCAA8BxuN,GAO9D,OANI,GAAS248B,GACTtmmB,EAAgBsmmB,OAEK348B,IAAhB248B,GACL786B,QAAQ/lB,KAAK,uDAAuD4i8B,cAEjEtmmB,CACX,CCZe,SAASummB,GAAU/p9B,GAC9B,OAAI2O,MAAMyb,QAAQpqB,GACP,QAEU,iBAAVA,EACA,SAEE,MAATA,EACO,OAEU,kBAAVA,EACA,UAENI,MAAMJ,GAGU,iBAAVA,EACA,SAGJ,SANI,QAOf,CCFA,SAJY,GAAS,SAASo5G,GAC5B,OAAO,IAAS,QAAYA,EAAQ,EAAG,IAAmB,GAC5D,GCXe,SAAS4w2B,GAAcrqvB,GAClC,IAAI,KAAEt1M,GAASs1M,EACf,OAAKt1M,GAAQs1M,EAAOoY,MACTgyuB,GAAUpqvB,EAAOoY,QAEvB1tN,GAAQs1M,EAAOmY,KACT,SAENztN,IAASs1M,EAAO5gL,aAAc4gL,EAAOwX,sBAGtCxoO,MAAMyb,QAAQC,KAEVA,EADgB,IAAhBA,EAAK5b,QAAgB4b,EAAK2lB,SAAS,QAC5B3lB,EAAKnV,KAAMmV,GAAkB,SAATA,GAGpBA,EAAK,IAGbA,GAVI,QAWf,CCpBe,SAASg7N,GAAaw+S,EAAMomb,GACvC,MAAMl68B,EAAM5L,OAAOC,OAAO,CAAC,EAAGy/hB,GAC9B,OAAO1/hB,OAAOO,KAAKul9B,GAAMtl9B,OAAO,CAACoL,EAAKlL,KAClC,MAAML,EAAOq/hB,EAAOA,EAAKh/hB,GAAO,CAAC,EAAGP,EAAQ2l9B,EAAKpl9B,GAgBjD,OAfIg/hB,GAAQh/hB,KAAOg/hB,GAAQv5gB,EAAShmB,GAChCyL,EAAIlL,GAAOwgP,GAAa7gP,EAAMF,GAEzBu/hB,GACLomb,IACyB,WAAxBD,GAAcnmb,IAA8C,WAAxBmmb,GAAcC,KACnDpl9B,IAAQsi9B,GACRx48B,MAAMyb,QAAQ5lB,IACdmK,MAAMyb,QAAQ9lB,GAEdyL,EAAIlL,GAAO,GAAML,EAAMF,GAGvByL,EAAIlL,GAAOP,EAERyL,GACRA,EACP,CCNe,SAASkwW,GAAe5kD,EAAW17F,EAAQ6W,EAAa,CAAC,EAAG0zuB,EAAat2lB,GACpF,OAAO,GAAuBv4D,EAAW17F,EAAQ6W,EAAY0zuB,OAAa/48B,OAAWA,EAAWyiX,GAA+B,EACnI,CAqDO,SAASu2lB,GAA0BC,GAWtC,OAVwBA,EAAYzl9B,OAAO,CAAC0l9B,EAAcpi9B,IAElDA,EAAKwG,OAAS,EACPxG,EAAK6hO,QAASnpO,GAAY,GAAM0p9B,EAAa578B,OAAS/O,GAAM,IAAI2q9B,EAAa3q9B,IAAI2I,OAAO1H,MAGnG0p9B,EAAah+8B,QAASs+V,GAAgBA,EAAYx8V,KAAKlG,EAAK,KACrDoi9B,GACR,CAAC,IAGR,CAqDO,SAASC,GAAiBjvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GACtG,MAAM42lB,EAAgBC,GAAqB9qvB,EAAQ6W,EAAY2xuB,GAC/D,OAAIqC,IAAkB7qvB,EAEX,GAAuB07F,EAAWmvpB,EAAeh0uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,GAE3G,CAACj0J,EACZ,CAQO,SAAS8qvB,GAAqB9qvB,EAAQ6W,EAAY2xuB,GACrD,IAAK797B,EAASq1M,GACV,OAAOA,EAEX,IAAIg1J,EAAiBh1J,EAErB,GAAI0nvB,KAAW1ylB,EAAgB,CAC3B,MAAM,KAAEt0J,KAASqc,GAAgBi4I,EAEjC,GAAIwzlB,EAAYn46B,SAASqwL,GACrB,OAAOs0J,EAEXwzlB,EAAYh68B,KAAKkyN,GAGjBs0J,EAAiB,IADC+zlB,GAAqBrovB,EAAMmW,MACTkG,EACxC,CACA,GAAI,KAAkBi4I,EAAgB,CAClC,MAAM+1lB,EAAgB,GAChBC,EAAe,GAAUh2lB,EAAe,GAAiB,CAACnnX,EAAQxN,EAAO6E,KAC3E,MAAM+6D,EAAY,IAAIuo5B,GACtB368B,EAAO3I,GAAO4l9B,GAAqBzq9B,EAAOw2O,EAAY52K,GACtD8q5B,EAAcv88B,KAAKyxD,IACpB,CAAC,GACJ,GAAMuo5B,EAAa,GAAK,GAAYuC,KACpC/1lB,EAAiB,IAAKA,EAAgB,CAAC,GAAiBg2lB,EAC5D,CASA,OARI,KAAah2lB,IACZhmX,MAAMyb,QAAQuqW,EAAepmV,QACE,kBAAzBomV,EAAepmV,QACtBomV,EAAiB,IACVA,EACHpmV,MAAOk86B,GAAqB91lB,EAAepmV,MAAOioM,EAAY2xuB,KAG/D,GAAWxovB,EAAQg1J,GAAkBh1J,EAASg1J,CACzD,CAmEO,SAAS,GAAuBt5D,EAAW17F,EAAQ6W,EAAY0zuB,EAAaK,GAAoB,EAAOpC,EAAc,GAAIv0lB,GAC5H,IAAKtpW,EAASq1M,GACV,MAAO,CAAC,CAAC,GAEb,MAAMirvB,EAhKH,SAAuBvvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GACnG,MAAMi3lB,EAAiBP,GAAiBjvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,GACvG,OAAIwumB,EAAep88B,OAAS,GAAKo88B,EAAe,KAAOlrvB,EAG5CkrvB,EAEPjE,KAAoBjnvB,EACImrvB,GAAoBzvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,GACpFvyI,QAASxsO,GACrB,GAAuB+9T,EAAW/9T,EAAGk5O,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,IAGtG4ylB,KAAc7mvB,GAAUhxN,MAAMyb,QAAQu1M,EAAO6X,OAErB2yuB,GADIxqvB,EAAO6X,MAAMpqO,IAAK298B,GAAmB,GAAuB1vpB,EAAW0vpB,EAAgBv0uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,KAElJxmX,IAAKu9V,IAAgB,IACrChrI,EACH6X,MAAOmzH,KAIR,CAAChrI,EACZ,CAyI4BqrvB,CAAc3vpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa+B,EAAat2lB,GAClH,OAAOg3lB,EAAgB9gvB,QAASxsO,IAC5B,IAAIugB,EACJ,IAAI82W,EAAiBr3X,EACrB,GAAI0p9B,KAAUrylB,EACV,OAtOL,SAA0Bt5D,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GACtG,MAAQt8I,GAAI2hB,EAAU,KAAE/nP,EAAMqmO,KAAM0zuB,KAAcC,GAAkCvrvB,EAC9EwrvB,EAAiB9vpB,EAAUl4G,QAAQ81C,EAAYojH,GAAY,CAAC,EAAG7lI,GACrE,IAAIo0uB,EAAkB,CAACM,GACnB3lvB,EAAU,GACd,GAAIglvB,EACIr58B,GAAwB,kBAATA,IACfq0N,EAAUA,EAAQl9N,OAAO,GAAuBgzT,EAAWnqT,EAAMslO,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,KAEvHq3lB,GAAkC,kBAAdA,IACpB1lvB,EAAUA,EAAQl9N,OAAO,GAAuBgzT,EAAW4vpB,EAAWz0uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,SAG/H,CACD,MAAMw3lB,EAAoBD,EAAiBj68B,EAAO+58B,EAC9CG,GAAkD,kBAAtBA,IAC5B7lvB,EAAUA,EAAQl9N,OAAO,GAAuBgzT,EAAW+vpB,EAAmB50uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,IAE5I,CAIA,OAHIruJ,EAAQ92N,SACRm88B,EAAkBrlvB,EAAQn4N,IAAK9P,GAAM+nP,GAAa6luB,EAA+B5t9B,KAE9Est9B,EAAgB9gvB,QAASxsO,GAAM,GAAuB+9T,EAAW/9T,EAAGk5O,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,GACrI,CA+MmBy3lB,CAAiBhwpB,EAAWs5D,EAAgBn+I,EAAY+zuB,EAAmBpC,EAAa+B,EAAat2lB,GAEhH,GAAI4ylB,KAAc7xlB,EAAgB,CAE9B,GAAI41lB,EAAmB,CACnB,MAAM,MAAE/yuB,KAAU8zuB,GAAiB32lB,EACnC,MAAO,IAAIn9I,EAAO8zuB,EACtB,CACA,IACI,MAAMC,EAAsB,GACtBC,EAAyB,GACC,QAA/B3t8B,EAAK82W,EAAen9I,aAA0B,IAAP35N,GAAyBA,EAAGxR,QAAS/O,IACxD,iBAANA,GAAkBA,EAAEuE,SAC3B0p9B,EAAoBp98B,KAAK7Q,GAGzBku9B,EAAuBr98B,KAAK7Q,KAGhCiu9B,EAAoB988B,SACpBkmX,EAAiB,IAAKA,EAAgBn9I,MAAOg0uB,IAEjD72lB,EAAiBf,EACXA,EAA8Be,GAC9B,KAAWA,EAAgB,CACzB7jH,MAAM,IAEVy6sB,EAAoB988B,SACpBkmX,EAAen9I,MAAQ+zuB,EAE/B,CACA,MAAOls9B,GACH4tC,QAAQ/lB,KAAK,yCAA0C7nB,GACvD,MAAM,MAAEm4O,KAAUi0uB,GAA+B92lB,EACjD,OAAO82lB,CACX,CACJ,CAEA,OADgClF,KAA6B5xlB,IAA0D,IAAxCA,EAAex9I,qBAvG/F,SAA0CkkF,EAAWqwpB,EAAWl1uB,EAAYm1uB,EAAW/3lB,GAE1F,MAAMj0J,EAAS,IACR+rvB,EACH3s6B,WAAY,IAAK2s6B,EAAU3s6B,aAGzBs9T,EAAWsvmB,GAAarh8B,EAASqh8B,GAAaA,EAAY,CAAC,EAgCjE,OA/BAxn9B,OAAOO,KAAK23W,GAAUhwW,QAASxH,IAC3B,GAAIA,KAAO86N,EAAO5gL,WAEd,OAEJ,IAAIo4L,EAAuB,CAAC,EAGpBA,EAFmC,kBAAhCxX,EAAOwX,qBACVkwuB,KAAW1nvB,EAAOwX,qBACK8oI,GAAe5kD,EAAW,CAAEh7F,MAAM,EAAAnyN,GAAA,GAAIyxN,EAAOwX,qBAAsB,CAACkwuB,KAAa7wuB,EAAY6lI,EAAUuX,GAEzH,SAAUj0J,EAAOwX,qBACC,IAAKxX,EAAOwX,sBAE9BsvuB,KAAc9mvB,EAAOwX,sBAAwB+vuB,KAAcvnvB,EAAOwX,qBAChD,CACnB9sN,KAAM,YACHs1M,EAAOwX,sBAIS,CAAE9sN,KAAM0/7B,IAAU,EAAA778B,GAAA,GAAImuW,EAAU,CAACx3W,MAIrC,CAAEwlB,KAAM0/7B,IAAU,EAAA778B,GAAA,GAAImuW,EAAU,CAACx3W,MAG5D86N,EAAO5gL,WAAWl6C,GAAOsyO,GAEzB,EAAA/oO,GAAA,GAAIuxN,EAAO5gL,WAAY,CAACl6C,EAAKyh9B,IAA2B,KAErD3mvB,CACX,CAiEmBisvB,CAAiCvwpB,EAAWs5D,EAAgBn+I,EAAY0zuB,EAAat2lB,GAEzFe,GAEf,CAqDO,SAASm2lB,GAAoBzvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GAEzG,MAAM,aAAE/7I,KAAiBg0uB,GAAoBlsvB,EACvCirvB,EA3CH,SAAkCvvpB,EAAW17F,EAAQ6W,EAAY+zuB,EAAmBL,GACvF,IAAI4B,EACJ,MAAM,MAAEn81B,EAAK,MAAE8nH,KAAUv7L,GAAcyjL,EAOvC,GANIhxN,MAAMyb,QAAQulG,GACdm81B,EAAan81B,EAERhhH,MAAMyb,QAAQqtN,KACnBq0uB,EAAar0uB,GAEbq0uB,EAAY,CAEZ,MAAMzvmB,OAA2BlrW,IAAhB+48B,GAA6BK,EAAoB,CAAC,EAAIL,EACjE1mmB,EAAgBqmmB,GAAgClqvB,GACtDmsvB,EAAaA,EAAW1+8B,IAAK9P,GAGlBmt9B,GAAqBnt9B,EAAGk5O,EAAY,KAG/C,MAAM72L,EAASgq6B,GAAuBtupB,EAAWghD,EAAUyvmB,EAAYt1uB,EAAYgtI,GACnF,GAAI+mmB,EACA,OAAOuB,EAAW1+8B,IAAKigB,GAASg4N,GAAanpM,EAAW7uB,IAE5DsyM,EAAS0lB,GAAanpM,EAAW4v6B,EAAWns6B,GAChD,CACA,MAAO,CAACggL,EACZ,CAiB4B,CAAyB07F,EAAWwwpB,EAAiBr1uB,EAAY+zuB,EAAmBlumB,GAC5G,OAAOuumB,EAAgB9gvB,QAAS6qJ,GAAmBo3lB,GAAoB1wpB,EAAWxjF,EAAc88I,EAAgBn+I,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GAC1K,CAeO,SAASm4lB,GAAoB1wpB,EAAWxjF,EAAc88I,EAAgBn+I,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GAC/H,IAAIruJ,EAAU,CAACovJ,GAEf,IAAK,MAAMq3lB,KAAiBn0uB,EAAc,CAEtC,IAAK0yuB,QAAwDp58B,KAAnC,EAAAjD,GAAA,GAAImuW,EAAU,CAAC2vmB,IACrC,SAGJ,GAAIr3lB,EAAe51U,cAAgBit6B,KAAiBr3lB,EAAe51U,YAC/D,SAEJ,MAAOkt6B,EAAuBC,GAAmBjE,GAA0B+D,EAAen0uB,GAO1F,OANIlpO,MAAMyb,QAAQ8h8B,GACd3mvB,EAAQ,GAAK4mvB,GAAwBx3lB,EAAgBu3lB,GAEhD5h8B,EAAS4h8B,KACd3mvB,EAAU6mvB,GAAoB/wpB,EAAWs5D,EAAgBn+I,EAAYw1uB,EAAeE,EAAiB3B,EAAmBpC,EAAa9rmB,EAAUuX,IAE5IruJ,EAAQuE,QAASnK,GAAWosvB,GAAoB1wpB,EAAW4wpB,EAAuBtsvB,EAAQ6W,EAAY+zuB,EAAmBpC,EAAa9rmB,EAAUuX,GAC3J,CACA,OAAOruJ,CACX,CAOO,SAAS4mvB,GAAwBxsvB,EAAQ0svB,GAC5C,IAAKA,EACD,OAAO1svB,EAEX,MAAMqY,EAAWrpO,MAAMyb,QAAQu1M,EAAOqY,UAChCrpO,MAAMuwB,KAAK,IAAI3xB,IAAI,IAAIoyN,EAAOqY,YAAaq0uB,KAC3CA,EACN,MAAO,IAAK1svB,EAAQqY,SAAUA,EAClC,CAgBO,SAASo0uB,GAAoB/wpB,EAAW17F,EAAQ6W,EAAYw1uB,EAAeE,EAAiB3B,EAAmBpC,EAAa9rmB,EAAUuX,GAEzI,OADyB,GAAuBv4D,EAAW6wpB,EAAiB11uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,GAC1G9pJ,QAASwivB,IAC7B,MAAM,MAAE381B,KAAU481B,GAAoBD,EAGtC,OAFA3svB,EAAS0lB,GAAa1lB,EAAQ4svB,QAEhBp78B,IAAVw+G,EACOgwG,EASawqvB,GANDx61B,EAAMviH,IAAKo/8B,GACL,kBAAdA,GAA6BnF,KAAWmF,EAG5ClC,GAAiBjvpB,EAAWmxpB,EAAWh2uB,EAAY+zuB,EAAmBpC,EAAa9rmB,GAF/E,CAACmwmB,KAKO1ivB,QAAS2ivB,GAmBjC,SAAiCpxpB,EAAW17F,EAAQ6W,EAAYw1uB,EAAer81B,EAAO461B,EAAmBpC,EAAa9rmB,EAAUuX,GACnI,MAAM84lB,EAAkB/81B,EAAMrkH,OAAQkh9B,IAClC,GAAyB,kBAAdA,IAA4BA,IAAcA,EAAUzt6B,WAC3D,OAAO,EAEX,MAAQ,CAACit6B,GAAgBW,GAA4BH,EAAUzt6B,WAC/D,GAAI4t6B,EAAyB,CACzB,MAAMC,EAAkB,CACpBvi8B,KAAM,SACN00B,WAAY,CACR,CAACit6B,GAAgBW,IAGzB,OAAOtxpB,EAAUl4G,QAAQypwB,EAAiBvwmB,EAAU7lI,IAAe+zuB,CACvE,CACA,OAAO,IAEX,OAAKA,GAAgD,IAA3BmC,EAAgBj+8B,OAInCi+8B,EAAgB5ivB,QAASxsO,IAC5B,MAAMkv9B,EAAYlv9B,GACXuv9B,GAAsB5E,GAA0B+D,EAAeQ,EAAUzt6B,YAC1Ewt6B,EAAkB,IAAKC,EAAWzt6B,WAAY8t6B,GAEpD,OADgB,GAAuBxxpB,EAAWkxpB,EAAiB/1uB,EAAY6lI,EAAUkumB,EAAmBpC,EAAav0lB,GAC1GxmX,IAAK9P,GAAM+nP,GAAa1lB,EAAQriO,OAR/C2vC,QAAQ/lB,KAAK,0FACN,CAACy4M,GAShB,CA/C0DmtvB,CAAwBzxpB,EAAW17F,EAAQ6W,EAAYw1uB,EAAeS,EAAelC,EAAmBpC,EAAa9rmB,EAAUuX,KAEzL,CC9bO,MAAMm5lB,GAAc,CACvB1i8B,KAAM,SACNmuR,IvEA0B,4BuEC1Bz5P,WAAY,CACRiu6B,qBAAsB,CAClB3i8B,KAAM,YAyBX,SAAS4i8B,GAAoB5xpB,EAAW7kF,EAAY7W,EAAQ08I,EAAUuX,GACzE,IAAIs5lB,EAAa,EAkDjB,OAjDIvtvB,KACI,QAASA,EAAO5gL,YAChBmu6B,GAAc,GAAOvtvB,EAAO5gL,WAAY,CAACn2B,EAAO5oB,EAAO6E,KACnD,MAAMywX,GAAY,EAAApnX,GAAA,GAAImuW,EAAUx3W,GAChC,GAAqB,kBAAV7E,EACP,OAAO4oB,EAEX,IAAI,EAAA5a,GAAA,GAAIhO,EAAOqn9B,GAAU,CACrB,MAAM8F,EAAYltmB,GAAe5kD,EAAWr7T,EAAOw2O,EAAY8+I,EAAW1B,GAC1E,OAAQhrW,EACJqk8B,GAAoB5xpB,EAAW7kF,EAAY22uB,EAAW73lB,GAAa,CAAC,EAAG1B,EAC/E,CACA,KAAK,EAAA5lX,GAAA,GAAIhO,EAAOkn9B,KAAe,EAAAl58B,GAAA,GAAIhO,EAAOym9B,KAAgBnxlB,EAAW,CACjE,MAAMzwX,GAAM,EAAAmJ,GAAA,GAAIhO,EAAOkn9B,GAAcA,EAAaT,EAC5CjjmB,EAAgBqmmB,GAAgC7p9B,GACtD,OAAQ4oB,EACJ66V,GAAyBpoD,EAAW7kF,EAAY8+I,GAAW,EAAApnX,GAAA,GAAIlO,EAAO6E,IAAO,EAAG2+W,EAAeoQ,EACvG,CACA,GAAmB,WAAf5zX,EAAMqqB,KAKN,OAJI,QAASirW,KAET1sW,GAAS,GAELA,EACJqk8B,GAAoB5xpB,EAAW7kF,EAAYx2O,EAAOs1X,EAAW1B,GAErE,GAAI5zX,EAAMqqB,OAAS0/7B,GAAUz0lB,GAAY,CAErC,IAAI83lB,EAAWxk8B,EAAQ,EAYvB,OAXI5oB,EAAM68F,QAGNuw3B,GAAY93lB,IAAct1X,EAAM68F,QAAU,GAAK,EAE1C78F,EAAM+3O,QAGXq1uB,GAAY93lB,IAAct1X,EAAM+3O,MAAQ,GAAK,GAG1Cq1uB,CACX,CACA,OAAOxk8B,GACR,GAEE,GAAS+2M,EAAOt1M,OAASs1M,EAAOt1M,OAAS0/7B,GAAU1tmB,KACxD6wmB,GAAc,IAGfA,CACX,CAwBe,SAASzpmB,GAAyBpoD,EAAW7kF,EAAY6lI,EAAUpyW,EAASs2T,GAAiB,EAAI+opB,EAAoB11lB,GAEhI,MAAMy5lB,EAAkBpj9B,EAAQmD,IAAKuyC,GAC1B8q6B,GAAqB9q6B,EAAQ62L,EAAY,KAE9C+yuB,EAA2BF,GAAqChtmB,EAAUpyW,EAASq/8B,GACzF,GAAI,GAASC,GACT,OAAOA,EAGX,MAAM+D,EAAkBD,EAAgB1o9B,OAAO,CAAC4o9B,EAAW5t6B,EAAQ9uC,KAIjD,IAFA848B,GAAuBtupB,EAAWghD,EAD5B,CAAC0wmB,GAAapt6B,GACqC62L,EAAY8yuB,IAG/EiE,EAAUp/8B,KAAK0C,GAEZ088B,GACR,IAEH,GAA+B,IAA3BD,EAAgB7+8B,OAChB,OAAO6+8B,EAAgB,GAEtBA,EAAgB7+8B,QAEjB,GAAM4+8B,EAAgB5+8B,OAAS/O,GAAM4t9B,EAAgBn/8B,KAAKzO,IAE9D,MAAM8t9B,EAAa,IAAIjg9B,KAEjB,UAAEkg9B,GAAcH,EAAgB3o9B,OAAO,CAAC+o9B,EAAW788B,KACrD,MAAM,UAAE888B,GAAcD,EAChB/t6B,EAAS0t6B,EAAgBx88B,GACzB+X,EAAQqk8B,GAAoB5xpB,EAAW7kF,EAAY72L,EAAQ08T,EAAUuX,GAE3E,OADA45lB,EAAW7/8B,IAAIib,GACXA,EAAQ+k8B,EACD,CAAEF,UAAW588B,EAAO888B,UAAW/k8B,GAEnC8k8B,GACR,CAAED,UAAWltpB,EAAgBotpB,UAAW,IAE3C,OAAwB,IAApBH,EAAWpg8B,MAAcmzS,GAAkB,EACpCA,EAEJktpB,CACX,CC/Je,SAASG,GAAajuvB,GACjC,OAAOhxN,MAAMyb,QAAQu1M,EAAOpxL,QAAUoxL,EAAOpxL,MAAM9/B,OAAS,GAAKkxN,EAAOpxL,MAAM15B,MAAOwY,GAAS/C,EAAS+C,GAC3G,C,gBCgBe,SAASwg8B,GAA0B3q7B,EAAUm5U,EAAUyxmB,GAA0B,EAAOC,GAA6B,EAAOC,GAA+B,GACtK,GAAIr/8B,MAAMyb,QAAQiyV,GAAW,CACzB,MAAM4xmB,EAAgBt/8B,MAAMyb,QAAQ8Y,GAAYA,EAAW,GAGrDgr7B,EAAwBF,EAA+B3xmB,EAAW4xmB,EAClErnvB,GAFgBonvB,EAA+BC,EAAgB5xmB,GAExCjvW,IAAI,CAACpN,EAAOysB,SAEFtb,IAA/B+88B,EAAsBzh8B,GACfoh8B,GAA0BI,EAAcxh8B,GAAM4vV,EAAS5vV,GAAMqh8B,EAAyBC,EAA4BC,GAEtHhu9B,GAOX,OAHK8t9B,GAA2BE,IAAiCpnvB,EAAOn4N,OAASy/8B,EAAsBz/8B,QACnGm4N,EAAOz4N,QAAQ+/8B,EAAsB/48B,MAAMyxN,EAAOn4N,SAE/Cm4N,CACX,CACA,GAAIt8M,EAAS+xV,GAAW,CACpB,MAAMtsW,EAAM5L,OAAOC,OAAO,CAAC,EAAG8+B,GAC9B,OAAO/+B,OAAOO,KAAK23W,GAAU13W,OAAO,CAACoL,EAAKlL,KACtC,MAAM0vQ,GAAW,EAAArmQ,GAAA,GAAImuW,EAAUx3W,GACzBsp9B,EAAsB7j8B,EAAS4Y,IAAar+B,KAAOq+B,EACnDkr7B,EAAsBvp9B,KAAOw3W,EAKnC,OAJAtsW,EAAIlL,GAAOgp9B,GAA0B3q7B,GAAW,EAAAh1B,GAAA,GAAIg1B,EAAUr+B,GAAO,CAAC,EAAG0vQ,EAAUu5sB,EAAyBC,EAG5GC,IAAiCG,IAAwBC,IAClDr+8B,GACRA,EACP,CAOA,OAAKg+8B,MACE,EAAAM,GAAA,GAAMnr7B,KAAa,EAAAmr7B,GAAA,GAAMhymB,IAAmC,iBAAbA,GAAyBj8W,MAAMi8W,KAChF2xmB,KAAiC,EAAAK,GAAA,GAAMhymB,GACjCn5U,EAEJm5U,CACX,CC5De,SAASiymB,GAAazqb,EAAMomb,EAAMsE,GAAe,GAC5D,OAAOpq9B,OAAOO,KAAKul9B,GAAMtl9B,OAAO,CAACoL,EAAKlL,KAClC,MAAML,EAAOq/hB,EAAOA,EAAKh/hB,GAAO,CAAC,EAAGP,EAAQ2l9B,EAAKpl9B,GACjD,GAAIg/hB,GAAQh/hB,KAAOg/hB,GAAQv5gB,EAAShmB,GAChCyL,EAAIlL,GAAOyp9B,GAAa9p9B,EAAMF,EAAOiq9B,QAEpC,GAAIA,GAAgB5/8B,MAAMyb,QAAQ5lB,IAASmK,MAAMyb,QAAQ9lB,GAAQ,CAClE,IAAIkq9B,EAAUlq9B,EACO,sBAAjBiq9B,IACAC,EAAUlq9B,EAAMK,OAAO,CAAC6I,EAAQxN,KACvBwE,EAAKwrC,SAAShwC,IACfwN,EAAOW,KAAKnO,GAETwN,GACR,KAEPuC,EAAIlL,GAAOL,EAAK6D,OAAOmm9B,EAC3B,MAEIz+8B,EAAIlL,GAAOP,EAEf,OAAOyL,GACR5L,OAAOC,OAAO,CAAC,EAAGy/hB,GACzB,CC1Be,SAAStlP,GAAW5+E,GAC/B,OAAQhxN,MAAMyb,QAAQu1M,EAAOmY,OAAgC,IAAvBnY,EAAOmY,KAAKrpO,QAAiBi48B,KAAa/mvB,CACpF,CCCe,SAASwsJ,GAAS9wD,EAAWqwpB,EAAWl1uB,EAAa,CAAC,EAAGo9I,GACpE,MAAMj0J,EAASsgJ,GAAe5kD,EAAWqwpB,EAAWl1uB,OAAYrlO,EAAWyiX,GACrE66lB,EAAa9uvB,EAAOhwG,OAASgwG,EAAO8X,MAC1C,QAAI9oO,MAAMyb,QAAQu1M,EAAOmY,SAGrBnpO,MAAMyb,QAAQqk8B,IACPA,EAAW558B,MAAO458B,GAAqC,kBAAfA,GAA4BlwqB,GAAWkwqB,GAG9F,CCXe,SAASxvmB,GAAc5jD,EAAW17F,EAAQ6W,EAAYo9I,GACjE,SAAKj0J,EAAO+Y,cAAgB/Y,EAAOpxL,OAAiC,kBAAjBoxL,EAAOpxL,QAGnD49U,GAAS9wD,EAAW17F,EAAOpxL,MAAOioM,EAAYo9I,EACzD,CCLe,SAAS86lB,GAAwB/uvB,GAC5C,MAAMgvvB,EAAchvvB,EAAO+mvB,GACrBp7lB,EAAa0+lB,GAAcrqvB,GACjC,OAAOr1M,EAASqk8B,IAAgB,GAASA,aAAiD,EAASA,EAAYj6uB,QAAyB,WAAf42I,GAA0C,UAAfA,CACxJ,CCAe,SAASsjmB,GAAYjvvB,EAAQ29I,GAExC,MAAM0F,EAAsBrjJ,EAC5B,GAAIA,EAAOmY,KAAM,CACb,IAAIorI,EACJ,GAAI5F,EAAU,CACV,MAAQ4F,UAAW2rmB,GAAgBlH,EAAarqmB,GAChD4F,EAAY2rmB,CAChB,CASA,OARK3rmB,GAAaF,EAAoBE,YAMlCA,EAAYF,EAAoBE,WAE7BvjJ,EAAOmY,KAAK1qO,IAAI,CAACpN,EAAON,KAEpB,CAAEwc,OADMgnW,aAA6C,EAASA,EAAUxjX,KAAOkb,OAAO5a,GAC7EA,UAExB,CACA,IAAIyu9B,EACAK,EASJ,OARInvvB,EAAO8X,OACPg3uB,EAAa9uvB,EAAO8X,MACpBq3uB,EAAexxmB,aAA2C,EAASA,EAAS7lI,OAEvE9X,EAAOhwG,QACZ8+1B,EAAa9uvB,EAAOhwG,MACpBm/1B,EAAexxmB,aAA2C,EAASA,EAAS3tP,OAExE8+1B,GACJA,EAAWrh9B,IAAI,CAAC2h9B,EAAYl+8B,KACxB,MAAM,MAAE8/C,GAAUg35B,EAAamH,aAAmD,EAASA,EAAaj+8B,IAClGm+8B,EAAUD,EACV/u9B,ECzCH,SAAoB2/N,GAC/B,GAAIknvB,KAAYlnvB,GAAUhxN,MAAMyb,QAAQu1M,EAAOmY,OAAgC,IAAvBnY,EAAOmY,KAAKrpO,OAChE,OAAOkxN,EAAOmY,KAAK,GAEvB,GAAI4uuB,KAAa/mvB,EACb,OAAOA,EAAOoY,MAElB,MAAM,IAAIn2N,MAAM,0CACpB,CDiC0Bqt8B,CAAWD,GAEzB,MAAO,CACHrvvB,OAAQqvvB,EACR9y8B,MAHUy0C,GAASq+5B,EAAQr+5B,OAAS/1C,OAAO5a,GAI3CA,UAGhB,CEtCA,MAAMkv9B,GAAkB,CAAC,SAAU,SAAU,UAAW,UAAW,QAG5D,IAAIC,GAqBJ,SAASC,GAA2BzvvB,EAAQuX,EAAkBi4uB,GAAwBE,OAAQ5i8B,GAAM,GACvG,GAAIA,GAAO,GACP,GAAI9d,MAAMyb,QAAQu1M,EAAOpxL,QAAU9hB,EAAMkzM,EAAOpxL,MAAM9/B,OAAQ,CAC1D,MAAM4e,EAAOsyM,EAAOpxL,MAAM9hB,GAC1B,GAAoB,kBAATY,EACP,OAAOA,CAEf,OAEC,GAAIsyM,EAAOpxL,QAAU5/B,MAAMyb,QAAQu1M,EAAOpxL,QAAkC,kBAAjBoxL,EAAOpxL,MACnE,OAAOoxL,EAAOpxL,MAElB,OAAI2oM,IAAoBi4uB,GAAwBE,QAAU/k8B,EAASq1M,EAAOuX,iBAC/DvX,EAAOuX,gBAEX,CAAC,CACZ,CAqBA,SAASo4uB,GAAwB3i8B,EAAK9nB,EAAK0q9B,EAAiBC,EAAwBC,EAAkBC,EAAiB,GAAI/7lB,EAAwC,CAAC,EAAGg8lB,GAAU,GAC7K,MAAM,kBAAEC,EAAoB,uBAA0Bj8lB,EACtD,GAAI67lB,GAA0BG,EAG1Bhj8B,EAAI9nB,GAAO0q9B,OAEV,GAA0B,iBAAtBK,EAAsC,CAG3C,MAAMC,OAA8C1+8B,IAArBs+8B,EAAiCC,EAAe1/6B,SAASnrC,GAAO4q9B,EAC3Fnl8B,EAASil8B,GAEiB,sBAAtBK,GACK,EAAA/3vB,GAAA,GAAQ03vB,KACT5i8B,EAAI9nB,GAAO0q9B,IAKR,EAAA13vB,GAAA,GAAQ03vB,KAAoBG,EAAe1/6B,SAASnrC,KAC1Dgr9B,GAAgD,6BAAtBD,IAC3Bjj8B,EAAI9nB,GAAO0q9B,QAQCp+8B,IAApBo+8B,IAC2B,wBAAtBK,GACyB,sBAAtBA,GACCC,GAA0BH,EAAe1/6B,SAASnrC,MACvD8nB,EAAI9nB,GAAO0q9B,EAEnB,CACJ,CASO,SAASO,GAAgBz0pB,EAAW6uD,EAAW6lmB,EAAuB,CAAC,GAC1E,MAAM,eAAEC,EAAc,YAAE9F,EAAW,WAAE1zuB,EAAa,CAAC,EAAC,uBAAEg5uB,GAAyB,EAAK,aAAES,EAAe,GAAE,sCAAEt8lB,EAAiD,8BAAEC,EAAyC,SAAE57I,EAAQ,gCAAEk4uB,GAAkC,GAAWH,EAC9P,IAAI1zmB,EAAY/xV,EAAS4/7B,GAAeA,EAAc,CAAC,EACvD,MAAMvqvB,EAASr1M,EAAS4/V,GAAaA,EAAY,CAAC,EAElD,IAAIhnV,EAAW8s7B,EAEXG,EAAkB,KAClBC,EAA+Bz8lB,EAC/B08lB,EAAqBJ,EACzB,QAA0B9+8B,IAAtBwuN,EAAO+mvB,IACmK,WAAzK/ylB,aAAqG,EAASA,EAAsC28lB,kBACpJ5B,GAAwB/uvB,GAGxB,GAAIr1M,EAAS4Y,IAAa5Y,EAASq1M,EAAO9iI,SAG3C35D,EAAWor7B,GAAapr7B,EAAUy8L,EAAO9iI,cAExC,KAAI8p3B,KAAehnvB,IAAWA,EAAO8mvB,IAAgB9mvB,EAAOunvB,IAK5D,GAAIG,KAAW1nvB,EAAQ,CACxB,MAAM4wvB,EAAU5wvB,EAAO0nvB,GAElB4I,EAAajg7B,SAASug7B,KACvBF,EAAqBJ,EAAa5n9B,OAAOko9B,GACzCJ,EAAkBzH,GAAqB6H,EAAS/5uB,IAIhD25uB,IAAoBjt7B,IACpBA,EAAWy8L,EAAO9iI,SAKlBqz3B,GAAmCC,IAAoB7l8B,EAAS4/7B,KAChE7tmB,EAAW6tmB,EAEnB,MACK,GAAItD,KAAoBjnvB,EAAQ,CAEjC,MAAM6wvB,EAAkB,IACjBC,GAA4Bp1pB,EAAW17F,EAAQowvB,EAAsB7s7B,MACrEm5U,GAGP8zmB,EADuBrF,GAAoBzvpB,EAAW17F,EAAQ6W,GAAY,EAAO,GAAIg6uB,EAAiB58lB,GACrE,EACrC,MACK,GAAIg6lB,GAAajuvB,GAClBz8L,EAAWy8L,EAAOpxL,MAAMnhC,IAAI,CAAC+vW,EAAY1wV,IAAQqj8B,GAAgBz0pB,EAAW8hD,EAAY,CACpF3mI,aACAg5uB,yBACAS,eACAt8lB,wCACAC,gCACAo8lB,eAAgBrh9B,MAAMyb,QAAQ4l8B,GAAkBA,EAAevj8B,QAAOtb,EACtE+48B,YAAa7tmB,EACbrkI,WACAk4uB,0CAGH,GAAIhJ,KAAcvnvB,EAAQ,CAC3B,MAAM,MAAEhwG,KAAUzzE,GAAcyjL,EAChC,GAAqB,IAAjBhwG,EAAMlhH,OACN,OAEJ,MAAM+0W,EAAgBqmmB,GAAgClqvB,IAChD,KAAEt1M,EAAO,QAAW6xB,GACrBvtC,MAAMyb,QAAQC,IACf6k8B,GAAgBl/6B,SAAS3lB,IACsH,eAA9I+l8B,aAAmF,EAASA,EAA6BE,mBAE1HF,EAA+B,IACxBA,EACHE,gBAAiB,UAGzBH,EAAkBxg2B,EAAM8zP,GAAyBpoD,EAAW7kF,EAAY0zuB,QAAiDA,EAAcvqvB,EAAO9iI,QAAS8yB,EAAO,EAAG6zP,EAAeoQ,IAChLu8lB,EAAkB9quB,GAAanpM,EAAWi06B,EAC9C,MACK,GAAI1J,KAAc9mvB,EAAQ,CAC3B,MAAM,MAAE8X,KAAUv7L,GAAcyjL,EAChC,GAAqB,IAAjB8X,EAAMhpO,OACN,OAEJ,MAAM+0W,EAAgBqmmB,GAAgClqvB,GACtDwwvB,EAAkB14uB,EAAMgsI,GAAyBpoD,EAAW7kF,EAAY0zuB,QAAiDA,EAAcvqvB,EAAO9iI,QAAS46I,EAAO,EAAG+rI,EAAeoQ,IAChLu8lB,EAAkB9quB,GAAanpM,EAAWi06B,EAC9C,OAtEIjt7B,EAAWy8L,EAAO9iI,aAVlB35D,EAAWy8L,EAAO+mvB,GAiFtB,GAAIyJ,EACA,OAAOL,GAAgBz0pB,EAAW80pB,EAAiB,CAC/C35uB,aACAg5uB,yBACAS,aAAcI,EACd18lB,sCAAuCy8lB,EACvCx8lB,gCACAo8lB,eAAgB9s7B,EAChBgn7B,YAAcA,QAAiDA,EAAc7tmB,EAC7ErkI,WACAk4uB,yCAIS/+8B,IAAb+xB,IACAA,EAAWy8L,EAAO9iI,SAEtB,MAAM6z3B,EAA2BD,GAA4Bp1pB,EAAW17F,EAAQowvB,EAAsB7s7B,GACtG,IAAIyt7B,EAAuBD,QAA2EA,EAA2Bxt7B,EAEjI,GAAIgt7B,EAAiC,CACjC,MAAM,cAAEU,EAAgB,CAAC,GAAMj9lB,GAAyC,CAAC,GACnE,mBAAEk9lB,GAAuBD,EACzBE,EAoBP,SAAsCz1pB,EAAW17F,EAAQ6W,EAAY6lI,EAAUsX,EAAuCC,GACzH,MAAMm9lB,GAAiBxyqB,GAAW5+E,IAAWwsJ,GAAS9wD,EAAW17F,EAAQ6W,EAAYo9I,GACrF,IAAIo9lB,EAAgB30mB,EACpB,GAAI00mB,EAAe,CACf,MAAME,EAAiBrC,GAAYjvvB,GAEnCqxvB,GADgBC,aAAuD,EAASA,EAAetk9B,KAAMgzC,GAAW,GAAWA,EAAO3/C,MAAOq8W,KAC/GA,OAAWlrW,CACzC,CAMA,OAJ6BwuN,EAAO+mvB,IAAwL,YAAzK/ylB,aAAqG,EAASA,EAAsC28lB,mBAEnMU,EAAgBrxvB,EAAOoY,OAEpBi5uB,CACX,CAlCiCE,CAA6B71pB,EAAW17F,EAAQ6W,EAAY0zuB,EAAav2lB,EAAuCC,GACpItpW,EAAS4/7B,MAAgB1D,KAAc7mvB,KAGxCgxvB,EAAuB9C,GAA0B8C,EAAsBG,EAAkBD,GAAoB,GAErH,CACA,OAAOF,CACX,CAmNO,SAASF,GAA4Bp1pB,EAAW6uD,EAAW6lmB,EAAuB,CAAC,EAAG7s7B,GACzF,OAAQ8m7B,GAAc9/lB,IAElB,IAAK,SACD,OApLL,SAA2B7uD,EAAW6uD,GAAW,YAAEggmB,EAAW,WAAE1zuB,EAAa,CAAC,EAAC,uBAAEg5uB,GAAyB,EAAK,aAAES,EAAe,GAAE,sCAAEt8lB,EAAiD,8BAAEC,EAAyC,SAAE57I,EAAQ,gCAAEk4uB,GAAqC,CAAC,EAAGht7B,GACxR,CACI,MAAMm5U,EAAY/xV,EAAS4/7B,GAAeA,EAAc,CAAC,EACnDvqvB,EAASuqJ,EAGTiJ,EAAkL,sBAA/JQ,aAAqG,EAASA,EAAsCn8I,QAAiCgvuB,KAAc7mvB,EACtNsgJ,GAAe5kD,EAAW17F,EAAQ6W,EAAY6lI,EAAUuX,GACxDj0J,EACAwxvB,EAAch+lB,EAAgBuzlB,GAC9B0K,EAAiBjt9B,OAAOO,KAAKyuX,EAAgBp0U,YAAc,CAAC,GAAGp6C,OAAO,CAACoL,EAAKlL,KAC9E,IAAIgZ,EACJ,MAAMwz8B,GAAiB,EAAAnj9B,GAAA,GAAIilX,EAAiB,CAAC,EAAgBtuX,IAGvDys9B,EAAiBhn8B,EAAS6m8B,SAAqChg9B,IAArBgg9B,EAAYts9B,GACtD0s9B,GAAajn8B,EAAS+m8B,IAAmB3K,KAAa2K,GAAmBC,IAC+F,WAAzK39lB,aAAqG,EAASA,EAAsC28lB,mBACpJ5B,GAAwB2C,GAe7B,OADA/B,GAAwBv/8B,EAAKlL,EAXLir9B,GAAgBz0pB,EAAWg2pB,EAAgB,CAC/D76uB,aACAy5uB,eACAt8lB,wCACAC,gCACA47lB,wBAAmD,IAA3BA,EACxBQ,gBAAgB,EAAA9h9B,GAAA,GAAIg1B,EAAU,CAACr+B,IAC/Bql9B,aAAa,EAAAh88B,GAAA,GAAImuW,EAAU,CAACx3W,IAC5BmzO,SAA8C,QAAnCn6N,EAAKs1W,EAAgBn7I,gBAA6B,IAAPn6N,OAAgB,EAASA,EAAGmyB,SAASnrC,GAC3Fqr9B,oCAE+CV,EAAwBx3uB,EAAUm7I,EAAgBn7I,SAAU27I,EAAuC49lB,GAC/Ixh9B,GACR,CAAC,GACJ,GAAIojX,EAAgBh8I,qBAAsB,CAEtC,MAAMq6uB,EAA6Bln8B,EAAS6oW,EAAgBh8I,sBACtDg8I,EAAgBh8I,qBAChB,CAAC,EACDzyO,EAAO,IAAI6I,IACb+c,EAAS4Y,IACT/+B,OAAOO,KAAKw+B,GACP53B,OAAQzG,IAASsuX,EAAgBp0U,aAAeo0U,EAAgBp0U,WAAWl6C,IAC3EwH,QAASxH,GAAQH,EAAKiJ,IAAI9I,IAEnC,MAAM4s9B,EAAmB,GACzBtt9B,OAAOO,KAAK23W,GACP/wW,OAAQzG,IAASsuX,EAAgBp0U,aAAeo0U,EAAgBp0U,WAAWl6C,IAC3EwH,QAASxH,IACVH,EAAKiJ,IAAI9I,GACT4s9B,EAAiBtj9B,KAAKtJ,KAE1BH,EAAK2H,QAASxH,IACV,IAAIgZ,EACJ,MAAM0x8B,EAAkBO,GAAgBz0pB,EAAWm2pB,EAA4B,CAC3Eh7uB,aACAy5uB,eACAt8lB,wCACAC,gCACA47lB,wBAAmD,IAA3BA,EACxBQ,gBAAgB,EAAA9h9B,GAAA,GAAIg1B,EAAU,CAACr+B,IAC/Bql9B,aAAa,EAAAh88B,GAAA,GAAImuW,EAAU,CAACx3W,IAC5BmzO,SAA8C,QAAnCn6N,EAAKs1W,EAAgBn7I,gBAA6B,IAAPn6N,OAAgB,EAASA,EAAGmyB,SAASnrC,GAC3Fqr9B,oCAGJZ,GAAwB8B,EAAgBvs9B,EAAK0q9B,EAAiBC,EAAwBx3uB,EAAUy5uB,IAExG,CACA,OAAOL,CACX,CACJ,CA4GmBM,CAAkBr2pB,EAAW6uD,EAAW6lmB,EAAsB7s7B,GAEzE,IAAK,QACD,OAtGL,SAA0Bm4R,EAAW6uD,GAAW,YAAEggmB,EAAW,WAAE1zuB,EAAa,CAAC,EAAC,aAAEy5uB,EAAe,GAAE,sCAAEt8lB,EAAiD,8BAAEC,EAAyC,SAAE57I,EAAQ,gCAAEk4uB,GAAqC,CAAC,EAAGht7B,GACvP,IAAIrlB,EAAIG,EACR,MAAM2hN,EAASuqJ,EACTynmB,EAA0M,QAA5K9z8B,EAAK81W,aAAqG,EAASA,EAAsCi9lB,qBAAkC,IAAP/y8B,EAAgBA,EAAK,CAAC,GACtO0gjB,SAAUqzZ,EAAuBf,mBAAoBgB,GAA4BF,EACnFG,EAA0C,UAA1BF,EAChBG,EAAkD,iBAA1BH,EACxBI,EAA0C,QAA1BJ,IAAqCE,IAAkBC,EACvEE,EAAwK,QAAjJj08B,EAAK2z8B,aAA+E,EAASA,EAA2BM,2BAAwC,IAAPj08B,EAAgBA,EAAK,KAAO,EAE5Mk08B,EADkM,uBAA3Kv+lB,aAAqG,EAASA,EAAsCi8lB,wBACtIz+8B,EAAY,GAiBvD,GAfIxC,MAAMyb,QAAQ8Y,KACdA,EAAWA,EAAS91B,IAAI,CAACigB,EAAMZ,KAC3B,MAAM0l8B,EAAa/C,GAA2BzvvB,EAAQwvvB,GAAwBiD,SAAU3l8B,GACxF,OAAOqj8B,GAAgBz0pB,EAAW82pB,EAAY,CAC1C37uB,aACAy5uB,eACAt8lB,wCACAC,gCACAo8lB,eAAgB3i8B,EAChB2qN,WACAk4uB,uCAKRvh9B,MAAMyb,QAAQ8/7B,GAAc,CAC5B,MAAMiI,EAAa/C,GAA2BzvvB,GAC9C,GAAImyvB,EACA5u7B,EAAWgn7B,MAEV,CACD,MAAM554B,EAAe454B,EAAY988B,IAAI,CAACigB,EAAMZ,IACjCqj8B,GAAgBz0pB,EAAW82pB,EAAY,CAC1C37uB,aACAy5uB,eACAt8lB,wCACAC,gCACAs2lB,YAAa787B,EACb2i8B,gBAAgB,EAAA9h9B,GAAA,GAAIg1B,EAAU,CAACzW,IAC/BurN,WACAk4uB,qCAMRht7B,EAAW2q7B,GAA0B3q7B,EAAUotC,GADlByh5B,GAAyB/5uB,GAAag6uB,IAAkBH,EAEzF,CACJ,CAIA,IAAiB,KADAvn8B,EAASq1M,IAAW+mvB,KAAa/mvB,GAAoL,WAAzKg0J,aAAqG,EAASA,EAAsC28lB,kBACzL,CACpB,GAAIwB,EACA,OAAO5u7B,QAA2CA,EAAWgv7B,EAEjE,GAAIH,IAA0B/5uB,EAG1B,OAAO90M,QAAsB/xB,CAErC,CACA,MAAMkh9B,EAAiB1j9B,MAAMyb,QAAQ8Y,GAAYA,EAASz0B,OAAS,EACnE,IAAKkxN,EAAO8Y,UACRwmI,GAAc5jD,EAAW17F,EAAQ6W,EAAYo9I,IAC7Cq+lB,EAAoB52pB,EAAW17F,EAAQ6W,IACvC7W,EAAO8Y,UAAY45uB,EACnB,OAAOnv7B,GAAsBgv7B,EAEjC,MAAMI,EAAkBpv7B,GAAY,GAC9Bqv7B,EAAenD,GAA2BzvvB,EAAQwvvB,GAAwB96iB,QAC1Em+iB,EAAgBD,EAAa113B,QAE7B413B,EAAgB,IAAI9j9B,MAAMgxN,EAAO8Y,SAAW45uB,GAAgBvp7B,KAAKgn7B,GAAgBz0pB,EAAWk3pB,EAAc,CAC5GvC,eAAgBwC,EAChBh8uB,aACAy5uB,eACAt8lB,wCACAC,gCACA57I,WACAk4uB,qCAGJ,OAAOoC,EAAejq9B,OAAOoq9B,EACjC,CAgBmBC,CAAiBr3pB,EAAW6uD,EAAW6lmB,EAAsB7s7B,GAGhF,CAee,SAASy6U,GAAoBtiD,EAAWqwpB,EAAWrvmB,EAAU7lI,EAAYg5uB,GAAyB,EAAO77lB,EAAuCC,GAC3J,IAAKtpW,EAASoh8B,GACV,MAAM,IAAI9p8B,MAAM,mBAAqB8p8B,GAEzC,MAIMxo7B,EAAW4s7B,GAAgBz0pB,EAJlB4kD,GAAe5kD,EAAWqwpB,EAAWl1uB,EAAY6lI,EAAUuX,GAItB,CAChDp9I,aACAg5uB,yBACA77lB,wCACAC,gCACAs2lB,YAAa7tmB,EACb6zmB,iCAAiC,IAIrC,GAAI5l8B,EAAS+xV,IAAa1tW,MAAMyb,QAAQiyV,GAAW,CAC/C,MAAM,0BAAEs2mB,GAA8Bh/lB,GAAyC,CAAC,EAKhF,OAHek6lB,GAA0B3q7B,EAAUm5U,GAAU,EADI,kCAA9Bs2mB,GAEP,EAGhC,CACA,OAAOzv7B,CACX,CC5fe,SAAS0v7B,GAAet1mB,EAAW,CAAC,GAC/C,MAGA,WAAYqqmB,EAAarqmB,IAAkD,WAArCqqmB,EAAarqmB,GAAkB,MACzE,CCAe,SAAS+B,GAAahkD,EAAW17F,EAAQ29I,EAAW,CAAC,EAAG9mI,EAAYo9I,GAC/E,GAAgC,UAA5BtW,EAASkqmB,GACT,OAAO,EAEX,GAAI7nvB,EAAOpxL,MAAO,CACd,MAAMyxU,EAAcC,GAAe5kD,EAAW17F,EAAOpxL,MAAOioM,OAAYrlO,EAAWyiX,GACnF,MAA4B,WAArB5T,EAAY31V,MAA4C,aAAvB21V,EAAYnnU,MACxD,CACA,OAAO,CACX,EFGA,SAAWs26B,GACPA,EAAwBA,EAAgC,OAAI,GAAK,SACjEA,EAAwBA,EAAgC,OAAI,GAAK,SACjEA,EAAwBA,EAAkC,SAAI,GAAK,UACtE,CAJD,CAIGA,KAA4BA,GAA0B,CAAC,IGvB1D,MAAM0D,GAAWh09B,OAAO,YAiDT,SAASilX,GAAyBzoD,EAAW7kF,EAAY22uB,EAAW2F,EAAW1i9B,EAAO,CAAC,EAAGwjX,GAErG,IAAIjV,EAEJ,IAAI,EAAA3wW,GAAA,GAAIm/8B,EAAW,GAAiB,CAEhC,MAAM4F,EAAsB,CAAC,EAC7B,IAAI,EAAA/k9B,GAAA,GAAI8k9B,EAAW,GAAiB,CAChC,MAAM/z6B,GAAa,EAAA7wC,GAAA,GAAI4k9B,EAAW,EAAgB,CAAC,GACnD3u9B,OAAOO,KAAKq6C,GAAY1yC,QAASxH,KACzB,EAAAmJ,GAAA,GAAIoC,EAAMvL,KACVku9B,EAAoBlu9B,QAAOsM,IAGvC,CACA,MAAMzM,EAAOP,OAAOO,MAAK,EAAAwJ,GAAA,GAAIi/8B,EAAW,EAAgB,CAAC,IAEnD6F,EAAa,CAAC,EACpBtu9B,EAAK2H,QAASxH,IACV,MAAMywX,GAAY,EAAApnX,GAAA,GAAIkC,EAAMvL,GAC5B,IAAIou9B,GAAiB,EAAA/k9B,GAAA,GAAI4k9B,EAAW,CAAC,EAAgBju9B,GAAM,CAAC,GACxDqu9B,GAAiB,EAAAhl9B,GAAA,GAAIi/8B,EAAW,CAAC,EAAgBto9B,GAAM,CAAC,IAExD,EAAAmJ,GAAA,GAAIil9B,EAAgB5L,KACpB4L,EAAiBhzmB,GAAe5kD,EAAW43pB,EAAgBz8uB,EAAY8+I,EAAW1B,KAElF,EAAA5lX,GAAA,GAAIkl9B,EAAgB7L,KACpB6L,EAAiBjzmB,GAAe5kD,EAAW63pB,EAAgB18uB,EAAY8+I,EAAW1B,IAGtF,MAAMu/lB,GAAsB,EAAAjl9B,GAAA,GAAI+k9B,EAAgB,QAC1CG,GAAsB,EAAAll9B,GAAA,GAAIgl9B,EAAgB,QAEhD,IAAKC,GAAuBA,IAAwBC,EAMhD,IALI,EAAApl9B,GAAA,GAAI+k9B,EAAqBlu9B,WAElBku9B,EAAoBlu9B,GAGH,WAAxBuu9B,GAA6D,UAAxBA,GAAmCzk9B,MAAMyb,QAAQkrW,GAAa,CAEnG,MAAM1U,EAAWkD,GAAyBzoD,EAAW7kF,EAAY08uB,EAAgBD,EAAgB39lB,EAAW1B,QAC3FziX,IAAbyvW,GAAkD,UAAxBwymB,IAE1BJ,EAAWnu9B,GAAO+7W,EAE1B,KACK,CAID,MAAMyymB,GAAmB,EAAAnl9B,GAAA,GAAIgl9B,EAAgB,UAAWL,IAClDS,GAAmB,EAAApl9B,GAAA,GAAI+k9B,EAAgB,UAAWJ,IACpDQ,IAAqBR,IAAYQ,IAAqB/9lB,IAClDg+lB,IAAqBh+lB,EAErBy9lB,EAAoBlu9B,GAAOwu9B,GAEc,KAApC,EAAAnl9B,GAAA,GAAIgl9B,EAAgB,cAEzBH,EAAoBlu9B,QAAOsM,IAGnC,MAAMoi9B,GAAiB,EAAArl9B,GAAA,GAAIgl9B,EAAgB,QAASL,IAC9CW,GAAiB,EAAAtl9B,GAAA,GAAI+k9B,EAAgB,QAASJ,IAChDU,IAAmBV,IAAYU,IAAmBj+lB,IAElDy9lB,EAAoBlu9B,GAAO2u9B,IAAmBl+lB,EAAYi+lB,OAAiBpi9B,EAEnF,IAGRwtW,EAAc,IACS,iBAARvuW,GAAoBzB,MAAMyb,QAAQha,QAAQe,EAAYf,KAC9D2i9B,KACAC,EAGX,MACK,GAA+B,WAA3B,EAAA9k9B,GAAA,GAAI4k9B,EAAW,SAAkD,WAA3B,EAAA5k9B,GAAA,GAAIi/8B,EAAW,SAAuBx+8B,MAAMyb,QAAQha,GAAO,CACtG,IAAIqj9B,GAAiB,EAAAvl9B,GAAA,GAAI4k9B,EAAW,SAChCY,GAAiB,EAAAxl9B,GAAA,GAAIi/8B,EAAW,SAGpC,GAA8B,iBAAnBsG,GACmB,iBAAnBC,GACN/k9B,MAAMyb,QAAQqp8B,IACd9k9B,MAAMyb,QAAQsp8B,GA2BgB,kBAAnBD,GACc,kBAAnBC,GACPD,IAAmBC,IAEnB/0mB,EAAcvuW,OA/BkB,EAC5B,EAAApC,GAAA,GAAIyl9B,EAAgBpM,KACpBoM,EAAiBxzmB,GAAe5kD,EAAWo4pB,EAAgBj9uB,EAAYpmO,EAAMwjX,KAE7E,EAAA5lX,GAAA,GAAI0l9B,EAAgBrM,KACpBqM,EAAiBzzmB,GAAe5kD,EAAWq4pB,EAAgBl9uB,EAAYpmO,EAAMwjX,IAGjF,MAAM+/lB,GAAgB,EAAAzl9B,GAAA,GAAIul9B,EAAgB,QACpCG,GAAgB,EAAA1l9B,GAAA,GAAIwl9B,EAAgB,QAE1C,IAAKC,GAAiBA,IAAkBC,EAAe,CACnD,MAAMp7uB,GAAW,EAAAtqO,GAAA,GAAIi/8B,EAAW,YAAa,GAEzCxumB,EADkB,WAAlBi1mB,EACcxj9B,EAAKzL,OAAO,CAACmkI,EAAUy3P,KACjC,MAAMszlB,EAAY/vmB,GAAyBzoD,EAAW7kF,EAAYk9uB,EAAgBD,EAAgBlzlB,EAAQ3M,GAI1G,YAHkBziX,IAAd0i9B,IAA4Br7uB,EAAW,GAAK1vG,EAASr6H,OAAS+pO,IAC9D1vG,EAAS36H,KAAK0l9B,GAEX/q1B,GACR,IAGW0vG,EAAW,GAAKpoO,EAAK3B,OAAS+pO,EAAWpoO,EAAK+E,MAAM,EAAGqjO,GAAYpoO,CAEzF,CACJ,CAQJ,CACA,OAAOuuW,CACX,CC5JA,SAASm1mB,GAAmBz4pB,EAAW17F,EAAQ+/I,EAAUC,EAAavnW,EAAIo+N,EAAY6lI,EAAU4zmB,EAAe,GAAIr8lB,GAC/G,GAAIyzlB,KAAW1nvB,GAAUinvB,KAAoBjnvB,GAAU6mvB,KAAc7mvB,EAAQ,CACzE,MAAMic,EAAUqkI,GAAe5kD,EAAW17F,EAAQ6W,EAAY6lI,EAAUuX,GAExE,IAAyB,IADDq8lB,EAAajh5B,UAAW3hD,GAAS,GAAWA,EAAMuuN,IAEtE,OAAOk4uB,GAAmBz4pB,EAAWz/E,EAAS8jI,EAAUC,EAAavnW,EAAIo+N,EAAY6lI,EAAU4zmB,EAAa5n9B,OAAOuzO,GAAUg4I,EAErI,CACA,GAAI,KAAaj0J,KAAW,EAAAzxN,GAAA,GAAIyxN,EAAQ,CAAC,EAAW0nvB,IAChD,OAAOyM,GAAmBz4pB,GAAW,EAAAntT,GAAA,GAAIyxN,EAAQ,GAAY+/I,EAAUC,EAAavnW,EAAIo+N,EAAY6lI,EAAU4zmB,EAAcr8lB,GAEhI,MACM/U,EAAW,CAAErmE,IADPpgS,GAAMsnW,GAElB,GAA8B,WAA1BsqmB,GAAcrqvB,IAAwB,KAAkBA,EACxD,IAAK,MAAM/xN,KAAQ+xN,EAAO5gL,WAAY,CAClC,MAAMyrH,GAAQ,EAAAt8J,GAAA,GAAIyxN,EAAQ,CAAC,EAAgB/xN,IACrCu9W,EAAUtM,EAASkomB,GAAUpnmB,EAAc/xW,EACjDixW,EAASjxW,GAAQkm9B,GAAmBz4pB,EAAW/wS,EAASkgJ,GAASA,EAAQ,CAAC,EAAGk1M,EAAUC,EAAawL,EAAS30I,GAG7G,EAAAtoO,GAAA,GAAImuW,EAAU,CAACzuW,IAAQqi9B,EAAcr8lB,EACzC,CAEJ,OAAO/U,CACX,CAae,SAAS2B,GAAWnlD,EAAW17F,EAAQvnN,EAAIo+N,EAAY6lI,EAAUqD,EAAW,OAAQC,EAAc,IAAKiU,GAClH,OAAOkgmB,GAAmBz4pB,EAAW17F,EAAQ+/I,EAAUC,EAAavnW,EAAIo+N,EAAY6lI,OAAUlrW,EAAWyiX,EAC7G,CCxCA,SAASmgmB,GAAqB14pB,EAAW17F,EAAQ/xN,EAAM4oO,EAAY6lI,EAAU4zmB,EAAe,GAAIr8lB,GAC5F,GAAIyzlB,KAAW1nvB,GAAUinvB,KAAoBjnvB,GAAU6mvB,KAAc7mvB,EAAQ,CACzE,MAAMic,EAAUqkI,GAAe5kD,EAAW17F,EAAQ6W,EAAY6lI,EAAUuX,GAExE,IAAyB,IADDq8lB,EAAajh5B,UAAW3hD,GAAS,GAAWA,EAAMuuN,IAEtE,OAAOm4uB,GAAqB14pB,EAAWz/E,EAAShuO,EAAM4oO,EAAY6lI,EAAU4zmB,EAAa5n9B,OAAOuzO,GAAUg4I,EAElH,CACA,IAAIsB,EAAa,CACb,CAAC+xlB,GAAWr58B,EAAKxP,QAAQ,MAAO,KAEpC,GAAI8o9B,KAAcvnvB,GAAU8mvB,KAAc9mvB,EAAQ,CAC9C,MAAMq0vB,EAAQ9M,KAAcvnvB,EAASA,EAAOhwG,MAAQgwG,EAAO8X,MACrD+rI,EAAgBqmmB,GAAgClqvB,GAEhDic,EAAUo4uB,EADFvwmB,GAAyBpoD,EAAW7kF,EAAY6lI,EAAU23mB,EAAO,EAAGxwmB,EAAeoQ,IAEjGsB,EAAa,IACNA,KACA6+lB,GAAqB14pB,EAAWz/E,EAAShuO,EAAM4oO,EAAY6lI,EAAU4zmB,EAAcr8lB,GAE9F,CAIA,GAHI2ylB,KAA6B5mvB,IAAgD,IAAtCA,EAAO4mvB,KAC9C,EAAAn48B,GAAA,GAAI8mX,EAAYoylB,GAAiC,GAEjD,KAAa3nvB,GAAUhxN,MAAMyb,QAAQiyV,GAAW,CAChD,MAAQ9tU,MAAO0l7B,EAAa/8uB,gBAAiBg9uB,GAA0Bv0vB,EACnEhxN,MAAMyb,QAAQ6p8B,GACd53mB,EAAShwW,QAAQ,CAAC1L,EAASjB,KACnBu09B,EAAYv09B,GACZw1X,EAAWx1X,GAAKq09B,GAAqB14pB,EAAW44pB,EAAYv09B,GAAI,GAAGkO,KAAQlO,IAAK82O,EAAY71O,EAASsv9B,EAAcr8lB,GAE9GsgmB,EACLh/lB,EAAWx1X,GAAKq09B,GAAqB14pB,EAAW64pB,EAAuB,GAAGtm9B,KAAQlO,IAAK82O,EAAY71O,EAASsv9B,EAAcr8lB,GAG1H3mV,QAAQ/lB,KAAK,uCAAuCtZ,KAAQlO,kCAKpE28W,EAAShwW,QAAQ,CAAC1L,EAASjB,KACvBw1X,EAAWx1X,GAAKq09B,GAAqB14pB,EAAW44pB,EAAa,GAAGrm9B,KAAQlO,IAAK82O,EAAY71O,EAASsv9B,EAAcr8lB,IAG5H,MACK,GAAI,KAAkBj0J,EACvB,IAAK,MAAMhxM,KAAYgxM,EAAO5gL,WAAY,CACtC,MAAMyrH,GAAQ,EAAAt8J,GAAA,GAAIyxN,EAAQ,CAAC,EAAgBhxM,IAC3CumW,EAAWvmW,GAAYol8B,GAAqB14pB,EAAW7wJ,EAAO,GAAG58J,KAAQ+gB,IAAY6nN,GAGrF,EAAAtoO,GAAA,GAAImuW,EAAU,CAAC1tV,IAAYsh8B,EAAcr8lB,EAC7C,CAEJ,OAAOsB,CACX,CAWe,SAASM,GAAan6D,EAAW17F,EAAQ/xN,EAAO,GAAI4oO,EAAY6lI,EAAUuX,GACrF,OAAOmgmB,GAAqB14pB,EAAW17F,EAAQ/xN,EAAM4oO,EAAY6lI,OAAUlrW,EAAWyiX,EAC1F,CC/EA,MAAMugmB,GAQF,WAAAr58B,CAAYugT,EAAW7kF,EAAYm9I,EAAuCC,GACtEv5W,KAAKm8N,WAAaA,EAClBn8N,KAAKghT,UAAYA,EACjBhhT,KAAKs5W,sCAAwCA,EAC7Ct5W,KAAKu5W,8BAAgCA,CACzC,CAKA,YAAAgB,GACI,OAAOv6W,KAAKghT,SAChB,CAWA,qBAAAw4D,CAAsBx4D,EAAW7kF,EAAYm9I,EAAwC,CAAC,EAAGC,GACrF,SAAKv4D,IAAc7kF,GAGXn8N,KAAKghT,YAAcA,GACtB,GAAWhhT,KAAKm8N,WAAYA,IAC5B,GAAWn8N,KAAKs5W,sCAAuCA,IACxDt5W,KAAKu5W,gCAAkCA,EAC/C,CAWA,mBAAAjW,CAAoBh+I,EAAQ08I,EAAUmzmB,GAAyB,GAC3D,OAAO7xmB,GAAoBtjW,KAAKghT,UAAW17F,EAAQ08I,EAAUhiW,KAAKm8N,WAAYg5uB,EAAwBn18B,KAAKs5W,sCAAuCt5W,KAAKu5W,8BAC3J,CASA,eAAAtS,CAAgB3hJ,EAAQ29I,EAAUgljB,GAC9B,OCrDO,SAAyBjnmB,EAAW17F,EAAQ29I,EAAW,CAAC,EAAG9mI,EAAY8rrB,EAAe1uiB,GACjG,MAAM9U,EAAY6omB,EAAarqmB,EAAUgljB,IACnC,MAAEpm5B,GAAQ,GAAS4iW,EACzB,IAAIuC,IAAiBnlW,EACrB,MAAMovW,EAAa0+lB,GAAcrqvB,GAgBjC,MAfmB,UAAf2rJ,IACAjK,EACIpC,GAAc5jD,EAAW17F,EAAQ6W,EAAYo9I,IACzCvU,GAAahkD,EAAW17F,EAAQ29I,EAAU9mI,EAAYo9I,IACtDg/lB,GAAet1mB,IAER,WAAfgO,IACAjK,GAAe,GAEA,YAAfiK,GAA6BhO,EAASkqmB,KACtCnmmB,GAAe,GAEf/D,ExFHoB,cwFIpB+D,GAAe,GAEZA,CACX,CDgCeC,CAAgBjnW,KAAKghT,UAAW17F,EAAQ29I,EAAUjjW,KAAKm8N,WAAY8rrB,EAAejo5B,KAAKu5W,8BAClG,CAcA,wBAAAnQ,CAAyBpH,EAAUpyW,EAASs2T,EAAgB+opB,GACxD,OAAO7lmB,GAAyBppW,KAAKghT,UAAWhhT,KAAKm8N,WAAY6lI,EAAUpyW,EAASs2T,EAAgB+opB,EAAoBjv8B,KAAKu5W,8BACjI,CAUA,sBAAA+1lB,CAAuBttmB,EAAUpyW,EAASq/8B,GACtC,OAAOK,GAAuBtv8B,KAAKghT,UAAWghD,EAAUpyW,EAASoQ,KAAKm8N,WAAY8yuB,EACtF,CAWA,iBAAAhmmB,CAAkBjH,EAAUpyW,EAASq/8B,GACjC,OAAOhmmB,GAAkBjpW,KAAKghT,UAAWghD,EAAUpyW,EAASoQ,KAAKm8N,WAAY8yuB,EACjF,CAOA,YAAAjqmB,CAAa1/I,EAAQ29I,GACjB,OAAO+B,GAAahlW,KAAKghT,UAAW17F,EAAQ29I,EAAUjjW,KAAKm8N,WAAYn8N,KAAKu5W,8BAChF,CAMA,aAAA3U,CAAct/I,GACV,OAAOs/I,GAAc5kW,KAAKghT,UAAW17F,EAAQtlN,KAAKm8N,WAAYn8N,KAAKu5W,8BACvE,CAMA,QAAAzH,CAASxsJ,GACL,OAAOwsJ,GAAS9xW,KAAKghT,UAAW17F,EAAQtlN,KAAKm8N,WAAYn8N,KAAKu5W,8BAClE,CAYA,mBAAAwgmB,CAAoBC,EAAgBC,GAChC,OExIO,SAA6Bj5pB,EAAWg5pB,EAAgBC,GACnE,IAAKA,EACD,OAAOD,EAEX,MAAQ/4uB,OAAQi5uB,EAAW12mB,YAAa22mB,GAAmBH,EAC3D,IAAI/4uB,EAAS+/E,EAAUo5pB,YAAYH,GAC/Bz2mB,EAAcy2mB,EAKlB,OAJK,EAAAz8vB,GAAA,GAAQ28vB,KACT32mB,EAAcywmB,GAAakG,EAAgBF,GAAuB,GAClEh5uB,EAAS,IAAIi5uB,GAAWls9B,OAAOizO,IAE5B,CAAEuiI,cAAaviI,SAC1B,CF4He84uB,CAAoB/58B,KAAKghT,UAAWg5pB,EAAgBC,EAC/D,CASA,cAAAr0mB,CAAetgJ,EAAQuqvB,GACnB,OAAOjqmB,GAAe5lW,KAAKghT,UAAW17F,EAAQtlN,KAAKm8N,WAAY0zuB,EAAa7v8B,KAAKu5W,8BACrF,CAYA,wBAAA9P,CAAyBqpmB,EAAW2F,EAAW1i9B,GAC3C,OAAO0zW,GAAyBzpW,KAAKghT,UAAWhhT,KAAKm8N,WAAY22uB,EAAW2F,EAAW1i9B,EAAMiK,KAAKu5W,8BACtG,CAUA,UAAApT,CAAW7gJ,EAAQvnN,EAAIikW,EAAUqD,EAAW,OAAQC,EAAc,KAC9D,OAAOa,GAAWnmW,KAAKghT,UAAW17F,EAAQvnN,EAAIiC,KAAKm8N,WAAY6lI,EAAUqD,EAAUC,EAAatlW,KAAKu5W,8BACzG,CAQA,YAAA4B,CAAa71J,EAAQ/xN,EAAMyuW,GACvB,OAAOmZ,GAAan7W,KAAKghT,UAAW17F,EAAQ/xN,EAAMyM,KAAKm8N,WAAY6lI,EAAUhiW,KAAKu5W,8BACtF,EAWW,SAAS8gmB,GAAkBr5pB,EAAW7kF,EAAYm9I,EAAwC,CAAC,EAAGC,GACzG,OAAO,IAAIugmB,GAAY94pB,EAAW7kF,EAAYm9I,EAAuCC,EACzF,CG7Me,SAAS+gmB,GAAcC,GAClC,IAAI/28B,EAEJ,IAAsC,IAAlC+28B,EAAYhy9B,QAAQ,SACpB,MAAM,IAAIgf,MAAM,0CAEpB,MAEMiz8B,EAFUD,EAAYz/8B,MAAM,GAET5Z,MAAM,YAE/B,GAAwB,IAApBs59B,EAASpm9B,OACT,MAAM,IAAImT,MAAM,2CAGpB,MAAOlB,EAAOumvB,GAAU4tN,GACjBhqV,KAASiqV,GAAep08B,EAAMnlB,MAAM,KACrC8uB,EAAOwgnB,GAAQ,GAEfj9nB,EAAOmzX,WAG4E,QAAvFljX,EAAKi38B,EAAY1n9B,IAAKijO,GAAUA,EAAM90O,MAAM,MAAM2Z,KAAK,EAAErQ,KAAiB,SAARA,UAAoC,IAAPgZ,OAAgB,EAASA,EAAG,KAAO,WAEpI,IACI,MAAMmwnB,EAAShuiB,KAAKinqB,GACdv4uB,EAAQ,IAAI/f,MAAMq/nB,EAAOv/nB,QAC/B,IAAK,IAAI/O,EAAI,EAAGA,EAAIsuoB,EAAOv/nB,OAAQ/O,IAC/BgvB,EAAMhvB,GAAKsuoB,EAAO/tiB,WAAWvgG,GAIjC,MAAO,CAAEilI,KADI,IAAInjI,OAAOiiG,KAAK,CAAC,IAAI/D,WAAWhxE,IAAS,CAAErE,SACzCzc,OACnB,CACA,MAAO0W,GACH,MAAM,IAAI1C,MAAM,oBAAsB0C,EAAMmmF,QAChD,CACJ,CCpCe,SAASo3D,GAAIvpH,EAAKv3C,GAC7B,IAAIzD,EAAIsd,OAAO09B,GACf,KAAOh7C,EAAEmR,OAAS1N,GACdzD,EAAI,IAAMA,EAEd,OAAOA,CACX,CCFe,SAASy39B,GAAiBju9B,EAAOiZ,GAC5C,GAAIjZ,GAAS,GAAKiZ,GAAQ,EACtBjZ,GAAQ,IAAIoc,MAAOg9F,cAAgBp5G,EACnCiZ,GAAO,IAAImD,MAAOg9F,cAAgBngG,OAEjC,GAAIjZ,EAAQ,GAAKiZ,EAAO,EACzB,MAAM,IAAI6B,MAAM,eAAe9a,gBAAoBiZ,gDAEvD,GAAIjZ,EAAQiZ,EACR,OAAOg18B,GAAiBh18B,EAAMjZ,GAAOqkB,UAEzC,MAAMlhB,EAAU,GAChB,IAAK,IAAIvK,EAAIoH,EAAOpH,GAAKqgB,EAAMrgB,IAC3BuK,EAAQkE,KAAK,CAAEnO,MAAON,EAAGwc,MAAO2lJ,GAAIniK,EAAG,KAE3C,OAAOuK,CACX,CCjBe,SAAS+q9B,GAAwBC,EAAmBz65B,GAC/D,OCFW,SAAiC065B,EAAa165B,GACzD,IAAI4hK,EAAS84vB,EACb,GAAIvm9B,MAAMyb,QAAQowC,GAAS,CACvB,MAAMmW,EAAQyrJ,EAAO7gO,MAAM,SAC3Bi/D,EAAOnuD,QAAQ,CAACgkO,EAAOx/N,KACnB,MAAMsk9B,EAAYxk5B,EAAM3B,UAAW0zD,GAASA,IAAS,IAAI7xH,EAAQ,KAC7Dsk9B,GAAa,IACbxk5B,EAAMwk5B,GAAa9kvB,KAG3BjU,EAASzrJ,EAAMp4D,KAAK,GACxB,CACA,OAAO6jN,CACX,CDXWg5vB,CAAwBH,EAAmBz65B,EACtD,CEAe,SAAS665B,GAAyBr21B,EAAYs21B,EAAiB,GAAIpnmB,GAC9E,GAAIv/W,MAAMyb,QAAQ40G,GACd,OAAQA,EACH5xH,IAAKyD,GAAUwk9B,GAAyBxk9B,EAAOyk9B,IAE/Chq9B,OAAQ02B,GAAQA,IAAQksV,GAGjC,MAAMr9W,EAAuB,KAAfmuH,GAAoC,OAAfA,GAAuB,EAAIx0G,OAAOw0G,GAC/Dr/E,EAAS216B,EAAezk9B,GAC9B,OAAO8uC,EAASA,EAAO3/C,MAAQkuX,CACnC,CCRe,SAASqnmB,GAAyBv21B,EAAYg+I,EAAUs4sB,EAAiB,IACpF,MAAMt19B,EAAQq19B,GAAyBr21B,EAAYs21B,GACnD,OAAI3m9B,MAAMyb,QAAQ4yP,GACPA,EAAS1xQ,OAAQkR,IAAO,GAAWA,EAAGxc,IAE1C,GAAWA,EAAOg9Q,QAAY7rQ,EAAY6rQ,CACrD,CCbe,SAASw4sB,GAAsBx19B,EAAOg9Q,GACjD,OAAIruQ,MAAMyb,QAAQ4yP,GACPA,EAASrwQ,KAAM8o9B,GAAQ,GAAWA,EAAKz19B,IAE3C,GAAWg9Q,EAAUh9Q,EAChC,CCAe,SAAS019B,GAAyB119B,EAAOs19B,EAAiB,GAAIjg3B,GAAW,GACpF,MAAMk9Q,EAAkB+imB,EACnBlo9B,IAAI,CAACi2W,EAAKxyW,IAAW2k9B,GAAsBnymB,EAAIrjX,MAAOA,GAAS4a,OAAO/J,QAASM,GAC/E7F,OAAQ+3W,QAAuB,IAARA,GAC5B,OAAKhuQ,EAGEk9Q,EAFIA,EAAgB,EAG/B,CCVe,SAASojmB,GAAuB321B,EAAYg+I,EAAUs4sB,EAAiB,IAClF,MAAMt19B,EAAQq19B,GAAyBr21B,EAAYs21B,GACnD,KAAK,EAAAjH,GAAA,GAAMru9B,GAAQ,CACf,MAAM6Q,EAAQyk9B,EAAetm5B,UAAWq0S,GAAQrjX,IAAUqjX,EAAIrjX,OACxDmgD,EAAMm16B,EAAelo9B,IAAI,EAAGpN,MAAOgiC,KAAUA,GAInD,OAHgBg7O,EAAS7nQ,MAAM,EAAGtE,GAAOxI,OAAOrI,EAAOg9Q,EAAS7nQ,MAAMtE,IAGvDpD,KAAK,CAACwG,EAAGC,IAAMsW,OAAO21B,EAAIv9C,QAAQqR,GAAKksC,EAAIv9C,QAAQsR,IACtE,CACA,OAAO8oQ,CACX,CCbe,SAAS44sB,GAAoBj66B,EAAMg9C,EAAMk93B,EAAY,CAAC,MAAM,IAAI3y8B,MAAOg9F,cAAgB,GAAIrnE,EAAS,OAC/G,MAAM,IAAE8+C,EAAG,MAAEC,EAAK,KAAEE,EAAI,KAAEr7F,EAAI,OAAEC,EAAM,OAAEg7F,GAAW/7C,EAC7Cm66B,EAAS,CAAEzr8B,KAAM,MAAO6D,MAAO,CAAC,EAAG,IAAKluB,MAAO23F,GAC/Co+3B,EAAW,CAAE1r8B,KAAM,QAAS6D,MAAO,CAAC,EAAG,IAAKluB,MAAO43F,GACnDo+3B,EAAU,CAAE3r8B,KAAM,OAAQ6D,MAAO2n8B,EAAW719B,MAAO83F,GACnDm+3B,EAAkB,GACxB,OAAQp96B,GACJ,IAAK,MACDo96B,EAAgB9n9B,KAAK4n9B,EAAUD,EAAQE,GACvC,MACJ,IAAK,MACDC,EAAgB9n9B,KAAK2n9B,EAAQC,EAAUC,GACvC,MAEJ,QACIC,EAAgB9n9B,KAAK6n9B,EAASD,EAAUD,GAKhD,OAHIn93B,GACAs93B,EAAgB9n9B,KAAK,CAAEkc,KAAM,OAAQ6D,MAAO,CAAC,EAAG,IAAKluB,MAAOvD,GAAQ,CAAE4tB,KAAM,SAAU6D,MAAO,CAAC,EAAG,IAAKluB,MAAOtD,GAAU,CAAE2tB,KAAM,SAAU6D,MAAO,CAAC,EAAG,IAAKluB,MAAO03F,IAE7Ju+3B,CACX,CCvBe,SAASC,GAAUv2vB,GAC9B,MAAMu5V,EAAO,CAAC,EAUd,OATIv5V,EAAO0Y,aACP6gV,EAAKv9iB,KAAOgkN,EAAO0Y,aAEnB1Y,EAAOuY,SAA8B,IAAnBvY,EAAOuY,WACzBghV,EAAKn1jB,IAAM47N,EAAOuY,UAElBvY,EAAOsY,SAA8B,IAAnBtY,EAAOsY,WACzBihV,EAAKl1jB,IAAM27N,EAAOsY,SAEfihV,CACX,CCTe,SAASi9Z,GAAcx2vB,EAAQy2vB,EAAans9B,EAAU,CAAC,EAAGos9B,GAAqB,GAC1F,MAAMtomB,EAAa,CACf1jW,KAAM+r8B,GAAe,UAClBF,GAAUv2vB,IAgCjB,OA7BI11N,EAAQukT,UACRu/D,EAAW1jW,KAAOpgB,EAAQukT,UAEpB4nqB,IAEc,WAAhBz2vB,EAAOt1M,MACP0jW,EAAW1jW,KAAO,SAEdgs8B,QAA0Cll9B,IAApB48W,EAAWpyW,OAGjCoyW,EAAWpyW,KAAO,QAGD,YAAhBgkN,EAAOt1M,OACZ0jW,EAAW1jW,KAAO,cAEMlZ,IAApB48W,EAAWpyW,OAEXoyW,EAAWpyW,KAAO,KAI1B1R,EAAQg6W,eACR8J,EAAW+J,aAAe7tX,EAAQg6W,cAElCh6W,EAAQgoX,SACRlE,EAAWkE,OAAShoX,EAAQgoX,QAEzBlE,CACX,CCzCO,MAAM1/W,GAAkB,CAC3Bo+B,MAAO,CACH4b,UAAU,GAEdomU,WAAY,SACZC,UAAU,GAOC,SAAS4nmB,GAAuBh5mB,EAAW,CAAC,GACvD,MAAMwB,EAAY6omB,EAAarqmB,GAC/B,GAAIwB,GAAaA,EAAUsomB,GAAyB,CAChD,MAAMn98B,EAAU60W,EAAUsomB,GAC1B,MAAO,IAAK/48B,MAAoBpE,EACpC,CACA,OAAOoE,EACX,CCfe,SAASko9B,GAAY3o9B,EAAMmjE,EAAU+tS,EAAY,CAAC,GAC7D,MAAM,UAAEoO,GAAcn8S,EACtB,MAAa,oBAATnjE,EACOs/W,EAAUt/W,GAKrBkxW,EAAUlxW,IAASs/W,EAAUt/W,EACjC,C,wCCTA,MAAM4o9B,GAAY,CACdr56B,QAAS,CACL4zU,SAAU,iBACVqB,MAAO,cACP9nD,OAAQ,eACR9iR,OAAQ,gBAEZrpD,OAAQ,CACJgsC,KAAM,aACN2wI,SAAU,iBACVm1I,MAAO,cACPlnB,SAAU,aACVw7a,KAAM,aACNC,KAAM,aACNnqiB,IAAK,YACL,WAAY,aACZ+3M,MAAO,cACP9nD,OAAQ,eACRF,SAAU,iBACV5iR,OAAQ,eACR7L,KAAM,aACN2+C,SAAU,iBACV,YAAa,iBACb,WAAY,gBACZ,eAAgB,oBAChB3B,KAAM,aACNt3D,MAAO,cACP++G,KAAM,cAEV9iG,OAAQ,CACJnT,KAAM,aACNmgS,OAAQ,eACRmspB,OAAQ,eACRvo8B,MAAO,cACPkkW,MAAO,cACP5qU,OAAQ,gBAEZmjU,QAAS,CACLxgV,KAAM,aACNmgS,OAAQ,eACRmspB,OAAQ,eACRvo8B,MAAO,cACPkkW,MAAO,cACP5qU,OAAQ,gBAEZ94B,MAAO,CACH47S,OAAQ,eACRospB,WAAY,mBACZ7z0B,MAAO,aACPr7F,OAAQ,iBAiCD,SAASmv6B,GAAUh3vB,EAAQuhJ,EAAQ01mB,EAAoB,CAAC,GACnE,MAAMvs8B,EAAO2/7B,GAAcrqvB,GAC3B,GAAsB,mBAAXuhJ,GACNA,GAAU,iBAAqB,KAAA95V,eAAc85V,KAC9C,UAAeA,GACf,OA5BR,SAA4B21mB,GACxB,IAAIC,GAAe,EAAA5o9B,GAAA,GAAI2o9B,EAAS,gBAEhC,IAAKC,EAAc,CACf,MAAM5n9B,EAAkB2n9B,EAAQnjwB,cAAgBmjwB,EAAQnjwB,aAAazpN,SAAY,CAAC,EAClF6s9B,EAAe,EAAG7s9B,aAAYwiC,MACnB,UAAKoq7B,EAAS,CAAE5s9B,QAAS,IAAKiF,KAAmBjF,MAAcwiC,KAE1E,EAAAr+B,GAAA,GAAIyo9B,EAAS,eAAgBC,EACjC,CACA,OAAOA,CACX,CAiBeC,CAAmB71mB,GAE9B,GAAsB,iBAAXA,EACP,MAAM,IAAIt/V,MAAM,yCAAyCs/V,GAE7D,GAAIA,KAAU01mB,EAEV,OAAOD,GAAUh3vB,EADQi3vB,EAAkB11mB,GACA01mB,GAE/C,GAAoB,iBAATvs8B,EAAmB,CAC1B,KAAMA,KAAQms8B,IACV,MAAM,IAAI508B,MAAM,uBAAuByI,MAE3C,GAAI62V,KAAUs1mB,GAAUns8B,GAEpB,OAAOss8B,GAAUh3vB,EADQi3vB,EAAkBJ,GAAUns8B,GAAM62V,IAChB01mB,EAEnD,CACA,MAAM,IAAIh18B,MAAM,cAAcs/V,gBAAqB72V,KACvD,CCzGe,SAAS2s8B,GAAUr3vB,EAAQuhJ,EAAQ01mB,EAAoB,CAAC,GACnE,IAEI,OADAD,GAAUh3vB,EAAQuhJ,EAAQ01mB,IACnB,CACX,CACA,MAAOv39B,GACH,MAAM0jH,EAAM1jH,EACZ,GAAI0jH,EAAItY,UAAYsY,EAAItY,QAAQvkE,WAAW,cAAgB68E,EAAItY,QAAQvkE,WAAW,uBAC9E,OAAO,EAEX,MAAM7mC,CACV,CACJ,CCdA,SAAS439B,GAAY7+8B,EAAI69B,GAErB,MAAO,GADO,GAAS79B,GAAMA,EAAKA,EAAG2u8B,OACjB9w6B,GACxB,CAMO,SAASih7B,GAAc9+8B,GAC1B,OAAO6+8B,GAAY7+8B,EAAI,cAC3B,CAMO,SAAS0+sB,GAAQ1+sB,GACpB,OAAO6+8B,GAAY7+8B,EAAI,QAC3B,CAMO,SAAS++8B,GAAW/+8B,GACvB,OAAO6+8B,GAAY7+8B,EAAI,WAC3B,CAMO,SAASg/8B,GAAOh/8B,GACnB,OAAO6+8B,GAAY7+8B,EAAI,OAC3B,CAMO,SAASo9jB,GAAQp9jB,GACpB,OAAO6+8B,GAAY7+8B,EAAI,QAC3B,CASO,SAASi/8B,GAAmBj/8B,EAAIk/8B,GAAkB,GACrD,MAAMhpmB,EAAWgpmB,EAAkB,IAAIH,GAAW/+8B,KAAQ,GAC1D,MAAO,GAAG0+sB,GAAQ1+sB,MAAO8+8B,GAAc9+8B,MAAOg/8B,GAAOh/8B,KAAMk2W,GAC/D,CAOO,SAASipmB,GAASn/8B,EAAIo/8B,GACzB,MAAO,GAAGp/8B,KAAMo/8B,GACpB,CCvEe,SAASC,GAAWv78B,EAAOqlW,EAAWv0U,GACjD,OAAOu0U,EAAYv0U,EAAW9wB,CAClC,CCGe,SAASw78B,GAAWjpW,GAC/B,OAAOA,EAAa,IAAIvrmB,KAAKurmB,GAAYv2Z,cAAW/mN,CACxD,CCGe,SAASwm9B,GAAgB546B,EAAY7xC,GAChD,IAAKyB,MAAMyb,QAAQld,GACf,OAAO6xC,EAEX,MAAMo6f,EAAelogB,GAAQA,EAAItsC,OAAO,CAACuwC,EAAMwW,KAC3CxW,EAAKwW,IAAQ,EACNxW,GACR,CAAC,GAEE0i7B,EAAez+a,EAAYp6f,GAC3B846B,EAAgB3q9B,EAAM5B,OAAQqhC,GAAkB,MAATA,GAAgBir7B,EAAajr7B,IACpEmr7B,EAAY3+a,EAAY0+a,GACxBhu8B,EAAOk1B,EAAWzzC,OAAQqhC,IAAUmr7B,EAAUnr7B,IAC9Cor7B,EAAYF,EAAcj19B,QAAQ,KACxC,IAAmB,IAAfm19B,EAAkB,CAClB,GAAIlu8B,EAAKpb,OACL,MAAM,IAAImT,MAAM,0CARDqvB,EAQuDpnB,GAR3Cpb,OAAS,EAAI,eAAewiC,EAAI14B,KAAK,WAAa,aAAa04B,EAAI,QAUlG,OAAO4m7B,CACX,CAXsB,IAAC5m7B,EAYvB,GAAI8m7B,IAAcF,EAAcnm4B,YAAY,KACxC,MAAM,IAAI9vE,MAAM,4DAEpB,MAAM86B,EAAW,IAAIm76B,GAErB,OADAn76B,EAAStV,OAAO2w7B,EAAW,KAAMlu8B,GAC1B6yB,CACX,CC7Be,SAASo42B,GAAgBrmS,EAAYupW,GAAc,GAC9D,IAAKvpW,EACD,MAAO,CACH32hB,MAAO,EACPF,OAAQ,EACRD,KAAM,EACNl7F,KAAMu79B,GAAe,EAAI,EACzBt79B,OAAQs79B,GAAe,EAAI,EAC3Btg4B,OAAQsg4B,GAAe,EAAI,GAGnC,MAAMr86B,EAAO,IAAIz4B,KAAKurmB,GACtB,GAAIjkmB,OAAOpqB,MAAMu7C,EAAKmkE,WAClB,MAAM,IAAIl+F,MAAM,wBAA0B6smB,GAE9C,MAAO,CACH32hB,KAAMn8C,EAAKwpV,iBACXvtS,MAAOj8C,EAAK0pV,cAAgB,EAC5B1tS,IAAKh8C,EAAKqlN,aACVvkQ,KAAMu79B,EAAcr86B,EAAK2pV,cAAgB,EACzC5oY,OAAQs79B,EAAcr86B,EAAK4pV,gBAAkB,EAC7C7tS,OAAQsg4B,EAAcr86B,EAAK6pV,gBAAkB,EAErD,CCrBe,SAASyylB,GAAwBt4vB,GAE5C,GAAIA,EAAOoY,MACP,OAAO,EAGX,GAAIpY,EAAOmY,MAA+B,IAAvBnY,EAAOmY,KAAKrpO,SAAmC,IAAnBkxN,EAAOmY,KAAK,GACvD,OAAO,EAGX,GAAInY,EAAO8X,OAAiC,IAAxB9X,EAAO8X,MAAMhpO,OAC7B,OAAOwp9B,GAAwBt4vB,EAAO8X,MAAM,IAGhD,GAAI9X,EAAOhwG,OAAiC,IAAxBgwG,EAAOhwG,MAAMlhH,OAC7B,OAAOwp9B,GAAwBt4vB,EAAOhwG,MAAM,IAGhD,GAAIgwG,EAAO6X,MAAO,CACd,MAAM0gvB,EAAczyuB,GAAcwyuB,GAAwBxyuB,GAC1D,OAAO9lB,EAAO6X,MAAM7qO,KAAKur9B,EAC7B,CACA,OAAO,CACX,CCvBe,SAASC,GAAa9l5B,EAAW66Q,EAAWrzU,GACvD,MAAM,MAAE4yB,EAAK,MAAEziC,GAAUqoE,EACzB,OAAQ,GAAW5lC,EAAOygT,KAAe,GAAWljV,EAAO6P,EAC/D,CCLe,SAASu+8B,GAAajqE,EAAYx1zB,GAAO,GACpD,MAAM,KAAEb,EAAI,MAAEF,EAAK,IAAED,EAAG,KAAEl7F,EAAO,EAAC,OAAEC,EAAS,EAAC,OAAEg7F,EAAS,GAAMy2zB,EACzDkqE,EAAUn18B,KAAK6tK,IAAIj5F,EAAMF,EAAQ,EAAGD,EAAKl7F,EAAMC,EAAQg7F,GACvD4C,EAAW,IAAIp3E,KAAKm18B,GAASngwB,SACnC,OAAOv/H,EAAO2B,EAAWA,EAASnlF,MAAM,EAAG,GAC/C,CCJe,SAASs/8B,GAAY52mB,EAAay6mB,EAAY,IACzD,IAAKz6mB,EACD,MAAO,GAEX,IAAI06mB,EAAY,GAWhB,OAVIzR,KAAcjpmB,IACd06mB,EAAYA,EAAUlw9B,OAAOw1W,EAAYipmB,GAAY158B,IAAKq9F,IACtD,MAAM97E,EAAW,IAAI2p8B,EAAU//8B,KAAK,OACpC,MAAO,CACHoW,WACA87E,UACA7pD,MAAO,GAAGjyB,KAAY87E,SAI3BtmG,OAAOO,KAAKm5W,GAAal5W,OAAO,CAACoL,EAAKlL,KACzC,GAAIA,IAAQii9B,EAAY,CACpB,MAAM0R,EAAc36mB,EAAYh5W,IAC5B,EAAAkgO,EAAA,GAAcyzvB,KACdzo9B,EAAMA,EAAI1H,OAAOos9B,GAAY+D,EAAa,IAAIF,EAAWzz9B,KAEjE,CACA,OAAOkL,GACRwo9B,EACP,C,wCCtBe,MAAME,GAKjB,WAAA398B,CAAY498B,GAKRr+8B,KAAKwjW,YAAc,CAAC,EACpBxjW,KAAKs+8B,eAAeD,EACxB,CAGA,eAAIE,GACA,OAAOv+8B,KAAKwjW,WAChB,CAOA,qBAAAg7mB,CAAsBC,GAElB,IAAIC,EADapq9B,MAAMyb,QAAQ0u8B,IAAgBA,EAAYrq9B,OAAS,GAA6B,iBAAhBqq9B,GACtD,EAAA5q9B,GAAA,GAAImM,KAAKwjW,YAAai7mB,GAAez+8B,KAAKwjW,YAKrE,OAJKk7mB,GAAcD,IACfC,EAAa,CAAC,ECZTpz6B,EDaGtrC,KAAKwjW,YCbA36R,EDaa414B,ECbP949B,EDaoB+49B,ECZjDtlvB,EAAkC,mBADEA,EDayBtvO,QCZdsvO,OAAatiO,EAC3C,MAAVw0C,IAA0B,QAAQA,EAAQu9B,EAAMljF,EAAOyzO,IDajDslvB,ECff,IAAiBpz6B,EAAQu9B,EAAMljF,EAAOyzO,CDgBlC,CAMA,cAAAklvB,CAAeD,GAEX,OADAr+8B,KAAKwjW,YAAc66mB,GAAgB,EAAAt6mB,GAAA,GAAUs6mB,GAAiB,CAAC,EACxDr+8B,IACX,CASA,SAAA2+8B,CAAUC,EAAaH,GACnB,MAAMC,EAAa1+8B,KAAKw+8B,sBAAsBC,GAC9C,IAAII,GAAa,EAAAhr9B,GAAA,GAAI6q9B,EAAYjS,GAWjC,OAVKn48B,MAAMyb,QAAQ8u8B,KACfA,EAAa,GACbH,EAAWjS,GAAcoS,GAEzBvq9B,MAAMyb,QAAQ6u8B,IACd,EAAA7q9B,GAAA,GAAI2q9B,EAAYjS,EAAY,IAAI,IAAIv58B,IAAI,IAAI2r9B,KAAeD,OAG3D,EAAA7q9B,GAAA,GAAI2q9B,EAAYjS,EAAY,IAAI,IAAIv58B,IAAI,IAAI2r9B,EAAYD,MAErD5+8B,IACX,CASA,SAAA8+8B,CAAUF,EAAaH,GACnB,MAAMC,EAAa1+8B,KAAKw+8B,sBAAsBC,GAExCM,EAAYzq9B,MAAMyb,QAAQ6u8B,GAAe,IAAI,IAAI1r9B,IAAI,IAAI0r9B,KAAiB,CAACA,GAEjF,OADA,EAAA7q9B,GAAA,GAAI2q9B,EAAYjS,EAAYsS,GACrB/+8B,IACX,CAQA,WAAAg/8B,CAAYP,GACR,MAAMC,EAAa1+8B,KAAKw+8B,sBAAsBC,GAE9C,OADA,EAAA1q9B,GAAA,GAAI2q9B,EAAYjS,EAAY,IACrBzs8B,IACX,EEhFW,SAASi/8B,GAAch+uB,GAClC,MAAM7qH,EAAU,IAAIgo2B,GAgBpB,OAfIn9uB,EAAO7sO,QACP6sO,EAAOjvO,QAASiY,IACZ,MAAM,SAAEqK,EAAQ,QAAE87E,GAAYnmF,EAExB4+D,EAAoB,MAAbv0D,EAAmB,IAAK,EAAA+qM,GAAA,GAAO/qM,GAGxCu0D,EAAKz0E,OAAS,GAAiB,KAAZy0E,EAAK,IACxBA,EAAK97C,OAAO,EAAG,GAEfqjE,GACAgmB,EAAQuo2B,UAAUvu3B,EAASvnB,KAIhCutC,EAAQmo2B,WACnB,CCjCe,SAASW,GAAmB38oB,GACvC,OAAOz4U,OAAOO,KAAKk4U,GAAcj4U,OAAO,CAACoL,EAAKlL,KAC1C,GAAY,aAARA,EACA,OAAOkL,EAEN,CACD,MAAMyo9B,EAAc57oB,EAAa/3U,GACjC,OAAI,EAAAkgO,EAAA,GAAcyzvB,GACP,IACAzo9B,EACH,CAAClL,GAAM009B,GAAmBf,IAG3B,IAAKzo9B,EAAK,CAAClL,GAAM2z9B,EAC5B,GACD,CAAC,EACR,CChBe,SAASgB,GAAWC,GAC/B,IAAKA,EACD,MAAO,GAOX,MAAM996B,EAAO,IAAIz4B,KAAKu28B,GAQtB,MAAO,GAPM53zB,GAAIlmH,EAAKukE,cAAe,MAC1B2hD,GAAIlmH,EAAKqkE,WAAa,EAAG,MACzB6hD,GAAIlmH,EAAKikE,UAAW,MACpBiiD,GAAIlmH,EAAK0jG,WAAY,MACrBwiB,GAAIlmH,EAAK2jG,aAAc,MACvBuiB,GAAIlmH,EAAK4jG,aAAc,MACtBsiB,GAAIlmH,EAAKmnD,kBAAmB,IAE5C,CCZe,SAAS423B,GAAoBrF,EAAgBC,GACxD,IAAKA,EACD,OAAOD,EAEX,MAAQ/4uB,OAAQi5uB,EAAW12mB,YAAa22mB,GAAmBH,EAC3D,IAAI/4uB,EAASm5uB,GAAYH,GACrBz2mB,EAAcy2mB,EAKlB,OAJK,EAAAz8vB,GAAA,GAAQ28vB,KACT32mB,EAAcywmB,GAAakG,EAAgBF,GAAuB,GAClEh5uB,EAAS,IAAIi5uB,GAAWls9B,OAAOizO,IAE5B,CAAEuiI,cAAaviI,SAC1B,CCae,SAASq+uB,GAAgBC,GACpC,OAAIjr9B,MAAMyb,QAAQwv8B,GAbtB,SAA8Bx49B,GAC1B,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAKqN,OAAQ/O,IAC7B0B,EAAK1B,GAAKi69B,GAAgBv49B,EAAK1B,IAEnC,OAAO0B,CACX,CASey49B,CAAqB,IAAID,KAEhC,QAASA,GAlCjB,SAA+Bx49B,GAC3B,IAAK,MAAMyD,KAAOzD,EAAM,CACpB,MAAM049B,EAAU149B,EACVpB,EAAQ859B,EAAQj19B,GAClBA,IAAQwi9B,GAA4B,iBAAVrn9B,GAAsBA,EAAMkmC,WAAW,KACjE4z7B,EAAQj19B,GAAO0i9B,EAAqBvn9B,EAGpC859B,EAAQj19B,GAAO809B,GAAgB359B,EAEvC,CACA,OAAOoB,CACX,CAuBe249B,CAAsB,IAAKH,IAE/BA,CACX,C,wCCTA,SAbA,SAAgBj06B,EAAQ0oE,GACtB,GAAc,MAAV1oE,EACF,MAAO,CAAC,EAEV,IAAIlZ,GAAQ,SAAS,QAAakZ,GAAS,SAAShZ,GAClD,MAAO,CAACA,EACV,GAEA,OADA0hF,EAAY,GAAaA,IAClB,QAAW1oE,EAAQlZ,EAAO,SAASzsC,EAAOkjF,GAC/C,OAAOmrC,EAAUruH,EAAOkjF,EAAK,GAC/B,EACF,E,gBCgCA,MClCA,GANiB,GAAS,SAASx0D,EAAOuU,GACxC,OAAO,GAAkBvU,GDN3B,SAAwBA,EAAOuU,EAAQg3L,EAAU4+B,GAC/C,IAAIhoP,GAAS,EACTm/B,EAAW,GACX00nB,GAAW,EACXj2pB,EAASigB,EAAMjgB,OACfjB,EAAS,GACTws9B,EAAe/27B,EAAOx0B,OAE1B,IAAKA,EACH,OAAOjB,EAELysN,IACFh3L,GAAS,QAASA,GAAQ,QAAUg3L,KAElC4+B,GACF7oN,EAAW,GACX00nB,GAAW,GAEJzhoB,EAAOx0B,QA/BK,MAgCnBuhC,EAAW,EACX00nB,GAAW,EACXzhoB,EAAS,IAAI,EAASA,IAExBshD,EACA,OAAS1zE,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdmtN,EAAuB,MAAZ/D,EAAmBj6N,EAAQi6N,EAASj6N,GAGnD,GADAA,EAAS64P,GAAwB,IAAV74P,EAAeA,EAAQ,EAC1C0kqB,GAAY1mc,GAAaA,EAAU,CAErC,IADA,IAAIi8vB,EAAcD,EACXC,KACL,GAAIh37B,EAAOg37B,KAAiBj8vB,EAC1B,SAASz5I,EAGb/2E,EAAOW,KAAKnO,EACd,MACUgwC,EAAS/M,EAAQ+6L,EAAU66B,IACnCrrP,EAAOW,KAAKnO,EAEhB,CACA,OAAOwN,CACT,CCpCM,CAAekhB,GAAO,QAAYuU,EAAQ,EAAG,IAAmB,IAChE,EACN,GCRe,SAASi37B,GAAiBjm9B,EAAGC,GACxC,MAAMim9B,GAAiB,EAAAp1vB,EAAA,GAAc9wN,GAC/Bmm9B,GAAiB,EAAAr1vB,EAAA,GAAc7wN,GAErC,OAAID,IAAMC,IAAOim9B,IAAmBC,EACzB,GAEPD,IAAmBC,GACZ,EAAA119B,GAAA,GAAKuP,IAENkm9B,GAAkBC,GACjB,EAAA119B,GAAA,GAAKwP,GAKL,KAFe,EAAAxP,GAAA,GAAK,GAAOuP,EAAG,CAACjU,EAAO6E,KAAS,GAAW7E,GAAO,EAAAkO,GAAA,GAAIgG,EAAGrP,SAC5D,IAAW,EAAAH,GAAA,GAAKwP,IAAI,EAAAxP,GAAA,GAAKuP,IAGpD,CClCO,IAAIom9B,IACX,SAAWA,GAEPA,EAAmC,eAAI,OAEvCA,EAAiC,aAAI,2BAErCA,EAA6B,SAAI,MAEjCA,EAA4B,QAAI,KAEhCA,EAA+B,WAAI,QAEnCA,EAAgC,YAAI,SAEpCA,EAAqC,iBAAI,YAEzCA,EAA8B,UAAI,MAElCA,EAAkC,cAAI,WAEtCA,EAA+B,WAAI,OAEnCA,EAAmC,eAAI,YAEvCA,EAAiC,aAAI,UAErCA,EAAiC,aAAI,SAErCA,EAA6B,SAAI,MAEjCA,EAA+B,WAAI,QAEnCA,EAAkC,cAAI,gBAEtCA,EAAiC,aAAI,UAErCA,EAAuC,mBAAI,sBAE3CA,EAAuC,mBAAI,sBAG3CA,EAAqC,iBAAI,wBAEzCA,EAAiC,aAAI,YAIrCA,EAAsC,kBAAI,eAE1CA,EAA6B,SAAI,SAKjCA,EAAuC,mBAAI,iDAE3CA,EAAqC,iBAAI,4BAIzCA,EAA2C,uBAAI,2CAI/CA,EAA+C,2BAAI,kCAKnDA,EAAoD,gCAAI,iDAIxDA,EAA8B,UAAI,uBACrC,CA1ED,CA0EGA,KAAuBA,GAAqB,CAAC,G,+BChFhD,IAAIC,EAAsB,EAAQ,OAE9Bx+3B,EAAUlhF,OACVsgV,EAAavgV,UAEjBohF,EAAOj9F,QAAU,SAAUk9F,GACzB,GAAIs+3B,EAAoBt+3B,GAAW,OAAOA,EAC1C,MAAM,IAAIk/P,EAAW,aAAep/P,EAAQE,GAAY,kBAC1D,C,+BCPAl9F,EAAQ89F,YAAa,EAErB,IAIgCjwE,EAQ5B4t8B,EAAmB,SAAUC,GAG/B,SAASD,EAAiBE,IAT5B,SAAyB/q9B,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAUpJwnG,CAAgB9nG,KAAMkg9B,GAEtB,IAAIh88B,EAVR,SAAoCo+E,EAAMjiF,GAAQ,IAAKiiF,EAAQ,MAAM,IAAIwkK,eAAe,6DAAgE,OAAOzmP,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BiiF,EAAPjiF,CAAa,CAU/N2nU,CAA2BhoU,KAAMmg9B,EAAc9/8B,KAAKL,OAGhE,OADAkE,EAAMk88B,aAAeA,EACdl88B,CACT,CAmBA,OA/BF,SAAmBgpG,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7sG,UAAU,kEAAoE6sG,GAAeD,EAAS9sG,UAAYtW,OAAO4W,OAAOysG,GAAcA,EAAW/sG,UAAW,CAAEK,YAAa,CAAE9a,MAAOunH,EAAUxhF,YAAY,EAAOD,UAAU,EAAMwL,cAAc,KAAek2E,IAAYrjH,OAAOmW,eAAiBnW,OAAOmW,eAAeitG,EAAUC,GAAcD,EAAShtG,UAAYitG,EAAY,CAG3eC,CAAU8y2B,EAAkBC,GAW5BD,EAAiB9/8B,UAAUk3G,YAAc,WACvC,OAAOt3G,KAAKog9B,aAAahu7B,MAAMolF,QACjC,EAEA0o2B,EAAiB9/8B,UAAUu4zB,iBAAmB,WAC5C,OAAO34zB,KAAKog9B,aAAa3yoB,MAC3B,EAEAyyoB,EAAiB9/8B,UAAUig9B,iBAAmB,WAC5C,OAAOrg9B,KAAKog9B,aAAa9yoB,cAC3B,EAEA4yoB,EAAiB9/8B,UAAU2jG,QAAU,WACnC/jG,KAAKog9B,aAAe,KACpBpg9B,KAAKy0H,oBACP,EAEOyr1B,CACT,CA9BuB,GARS5t8B,EAJZ,EAAQ,SAIyBA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,IAsCtEkwE,SAEjB/9F,EAAA,QAAkBy79B,C,qCC/ClB,IACQpg9B,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EAOI69a,EAAkC,SAAUx5gB,GAM5C,SAASw5gB,EAAiB7wT,GACtB,IAAIzoN,EAAQF,EAAO3D,KAAKL,KAAM2sN,EAAiB5uN,GAAI4uN,IAAqB3sN,KA+BxE,OA9BAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bo88B,QAAS,CACL369B,MAAO,IAAIuN,KAEfqt9B,oBAAqB,CACjB569B,MAAO,IAAIqN,IAAI,CACX,CAAC,OAAQ,WAAc,OAAOkR,EAAM04G,MAAM,QAAU,GACpD,CAAC,SAAU,WAAc,OAAO14G,EAAM04G,MAAM,UAAY,MAGhEsqsB,SAAU,CACNvh0B,MAAO,IAAIuN,KAEfst9B,gCAAiC,CAC7B769B,MAAO,IAAIqN,KAEfypP,aAAc,CACV/wN,YAAY,EACZ73B,IAAK,WACD,QAASmM,KAAKsg9B,QAAQvt8B,IAC1B,GAEJ7F,MAAO,CACHwe,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKklkB,OAAOh4jB,KACvB,KAGRhJ,EAAMu88B,gCACCv88B,CACX,CA6FA,OAnIAnE,EAAUy9gB,EAAkBx5gB,GA0C5Bw5gB,EAAiBp9gB,UAAUqg9B,8BAAgC,SAAU9zvB,QACxC,IAArBA,IAA+BA,EAAmB3sN,KAAKklkB,QAC3D,IAAew7Y,EAAN1g9B,KAA8Bug9B,oBAAqBj08B,EAAnDtM,KAA8DklkB,OACvEw7Y,EAAmB1u9B,QAAQ,SAAUq0sB,EAAWl6rB,GAAS,OAAOwgN,EAAiBz0N,iBAAiBiU,EAAOk6rB,EAAY,GACjH/5rB,IAAUqgN,IACV+zvB,EAAmB1u9B,QAAQ,SAAUq0sB,EAAWl6rB,GAAS,OAAOG,EAAMnU,oBAAoBgU,EAAOk6rB,EAAY,GACzG/5rB,EAAMY,QAAUy/M,EAAiBz/M,OACjBwz8B,EAAmB7s9B,IAAI84N,EAAiBz/M,MAAQ,OAAS,SACzEm5rB,GAGZ,EAMA7oL,EAAiBp9gB,UAAU6kB,MAAQ,WAC/B,IAAIA,EAAQ,IAAIu4f,EAAiBx9gB,KAAKsM,MAAM2Y,SAE5C,OADAjlB,KAAKsg9B,QAAQht9B,IAAI2xB,GACVA,CACX,EAKAu4f,EAAiBp9gB,UAAUgn4B,YAAc,SAAUni3B,GAC/CjlB,KAAKsg9B,QAAQ7p7B,OAAOxR,EACxB,EAMAu4f,EAAiBp9gB,UAAU08O,oBAAsB,SAAUnwB,GACvD,IAAIzoN,EAAQlE,KACR2g9B,EAASrs9B,MAAMuwB,KAAK7kB,KAAKsg9B,SACzBr+c,EAAU3tgB,MAAMuwB,KAAK7kB,KAAKknzB,UAC9B,OAAOvwzB,QAAQmvC,IAAI666B,EAAO5t9B,IAAI,SAAUkyB,GACpC,OAAOA,EAAM63N,oBAAoBnwB,EAAiB1nM,QACtD,GAAGj3B,OAAOi0gB,EAAQlvgB,IAAI,SAAUqV,GAC5B,OAAOlE,EAAM088B,cAAcx48B,EAAQukN,EACvC,KAAK/lI,QAAQ,WACT1iF,EAAMu88B,8BAA8B9zvB,GACpCzoN,EAAMghkB,OAASv4W,CACnB,EACJ,EAOA6wT,EAAiBp9gB,UAAUg97B,UAAY,SAAUh17B,EAAQy48B,GAKrD,OAJA7g9B,KAAKknzB,SAAS5zzB,IAAI8U,GACdy48B,GACA7g9B,KAAKwg9B,gCAAgCzs9B,IAAIqU,EAAQy48B,GAE9C7g9B,IACX,EAMAw9gB,EAAiBp9gB,UAAUm97B,aAAe,SAAUn17B,GAGhD,OAFApI,KAAKknzB,SAASzwxB,OAAOruB,GACrBpI,KAAKwg9B,gCAAgC/p7B,OAAOruB,GACrCpI,IACX,EAMAw9gB,EAAiBp9gB,UAAUkn4B,iBAAmB,SAAUvvvB,GAEpD,IAA+E8o0B,EAAtEnh3B,EAAOprG,MAAMuwB,KAAK7kB,KAAKwg9B,gCAAgC537B,UAAW,GAA+B,GAC1G,OAAOi47B,EAAwBA,EAAsB9o0B,GAAaphJ,QAAQC,QAAQ,uBACtF,EACA4mhB,EAAiBp9gB,UAAUwg9B,cAAgB,SAAUx48B,EAAQukN,GACzD,IAAIzoN,EAAQlE,KACZ,OAAOoI,EAAO0x7B,aAAantuB,GAAkB91N,KAAK,SAAUiq9B,GAIxD,OAFA588B,EAAMoj4B,iBAAiB,MAAMz5qB,MAAM,WAAc,GACjD3pN,EAAM2G,KAAK,YACJi28B,CACX,EACJ,EACOtjc,CACX,CArIqC,CANT,EAAQ,QAwJpC97b,EAAOj9F,QAAU+4hB,C,+BCtLjB,IAAIujc,EAAa,yBACbvgvB,EAAiB,EAAQ,MAE7B9+I,EAAOj9F,QAAU,CACf6O,IAYF,SAAoB2vO,EAASv/H,GAG3B,IAAIy9H,EAAQnhO,KAAKmhO,MAEjB,GAAIA,EAAMxE,SAASsG,GACjB,MAAM,IAAI17N,MAAM,WAAa07N,EAAU,uBAEzC,IAAK89uB,EAAW7+9B,KAAK+gP,GACnB,MAAM,IAAI17N,MAAM,WAAa07N,EAAU,8BAEzC,GAAIv/H,EAAY,CACd,GAAIA,EAAWs/H,YAA8BlsO,IAArB4sG,EAAWj9E,MACjC,MAAM,IAAIlf,MAAM,qDAElB,IAAIy58B,EAAWt92B,EAAW1zF,KAC1B,GAAI1b,MAAMyb,QAAQix8B,GAAW,CAC3B,IAAI379B,EAAGoK,EAAMux9B,EAAS5s9B,OACtB,IAAK/O,EAAE,EAAGA,EAAEoK,EAAKpK,IAAK07zB,EAAcigK,EAAS379B,IAC7C,IAAKA,EAAE,EAAGA,EAAEoK,EAAKpK,IAAK479B,EAASh+uB,EAAS+9uB,EAAS379B,GAAIq+G,EACvD,MACMs92B,GAAUjgK,EAAcigK,GAC5BC,EAASh+uB,EAAS+9uB,EAAUt92B,GAG9B,IAAI22H,GAA6B,IAArB32H,EAAW22H,OAAkBr6N,KAAKwqI,MAAM6vF,MACpD,GAAIA,IAAU32H,EAAWiiH,SACvB,MAAM,IAAIp+M,MAAM,qDAElB,IAAI+0f,EAAa54Z,EAAW44Z,WACxBA,IACEjiS,IACFiiS,EAAa,CACXl/R,MAAO,CACLk/R,EACA,CAAE,KAAQ,mFAIhB54Z,EAAWo/H,eAAiB9iO,KAAKwjG,QAAQ84Z,GAAY,GAEzD,CAKA,SAAS2kd,EAASh+uB,EAAS+9uB,EAAUt92B,GAEnC,IADA,IAAIw92B,EACK779B,EAAE,EAAGA,EAAE87O,EAAM/sO,OAAQ/O,IAAK,CACjC,IAAI0nc,EAAK5rN,EAAM97O,GACf,GAAI0nc,EAAG/8a,MAAQgx8B,EAAU,CACvBE,EAAYn0hB,EACZ,KACF,CACF,CAEKm0hB,IACHA,EAAY,CAAElx8B,KAAMgx8B,EAAUrp2B,MAAO,IACrCwpH,EAAMrtO,KAAKot9B,IAGb,IAAIr+uB,EAAO,CACTI,QAASA,EACTv/H,WAAYA,EACZrxD,QAAQ,EACRm8C,KAAMgyI,EACN4glB,WAAY19sB,EAAW09sB,YAEzB8/J,EAAUvp2B,MAAM7jH,KAAK+uO,GACrB1B,EAAM9uL,OAAO4wL,GAAWJ,CAC1B,CAGA,SAASk+kB,EAAcigK,GACrB,IAAK7/uB,EAAMyiC,MAAMo9sB,GAAW,MAAM,IAAIz58B,MAAM,gBAAkBy58B,EAChE,CAEA,OAlCA7/uB,EAAMxE,SAASsG,GAAW9B,EAAMr7L,IAAIm9L,IAAW,EAkCxCjjO,IACT,EAzFEnM,IAkGF,SAAoBovO,GAElB,IAAIJ,EAAO7iO,KAAKmhO,MAAM9uL,OAAO4wL,GAC7B,OAAOJ,EAAOA,EAAKn/H,WAAa1jG,KAAKmhO,MAAMxE,SAASsG,KAAY,CAClE,EArGErgM,OA8GF,SAAuBqgM,GAErB,IAAI9B,EAAQnhO,KAAKmhO,aACVA,EAAMxE,SAASsG,UACf9B,EAAMr7L,IAAIm9L,UACV9B,EAAM9uL,OAAO4wL,GACpB,IAAK,IAAI59O,EAAE,EAAGA,EAAE87O,EAAM/sO,OAAQ/O,IAE5B,IADA,IAAIsyH,EAAQwpH,EAAM97O,GAAGsyH,MACZ3xF,EAAE,EAAGA,EAAE2xF,EAAMvjH,OAAQ4xB,IAC5B,GAAI2xF,EAAM3xF,GAAGi9M,SAAWA,EAAS,CAC/BtrH,EAAM5qF,OAAO/G,EAAG,GAChB,KACF,CAGJ,OAAOhmB,IACT,E,+BCpIA,EAAQ,M,yBCOA,SAAWnf,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YACI,yEAAyED,MACrE,KAERghI,kBAAkB,EAClB9gI,SACI,wEAAwEF,MACpE,KAERG,cAAe,2CAA2CH,MAAM,KAChEI,YAAa,wBAAwBJ,MAAM,KAC3CM,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVS,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNC,EAAG,gBACHC,GAAI,cACJC,EAAG,eACHC,GAAI,cACJC,EAAG,eACHC,GAAI,cACJC,EAAG,YACHC,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER7B,cAAe,gDACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAGO,WAAbD,GAAyBC,GAAQ,GACrB,iBAAbD,GACa,eAAbA,EAEOC,EAAO,GAEPA,CAEf,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,QAEf,GAKP,CAtFyCmC,CAAQ,EAAQ,O,qCCL1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAOA,EAAEjO,eAAeuU,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EACtEL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAEhB,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAG,EAAYX,MAAQA,KAAKW,UAAa,WAStC,OARAA,EAAW7W,OAAOC,QAAU,SAAS6W,GACjC,IAAK,IAAI3d,EAAGoC,EAAI,EAAGwb,EAAI1M,UAAUC,OAAQ/O,EAAIwb,EAAGxb,IAE5C,IAAK,IAAI8a,KADTld,EAAIkR,UAAU9O,GACOyE,OAAOsW,UAAUxU,eAAeyU,KAAKpd,EAAGkd,KACzDS,EAAET,GAAKld,EAAEkd,IAEjB,OAAOS,CACX,EACOD,EAASG,MAAMd,KAAM7L,UAChC,EACArK,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIw79B,EAAY,EAAQ,OACpBC,EAAgB,EAAQ,OACxBC,EAAQ,EAAQ,OAChBC,EAAc,EAAQ,OAwD1B789B,EAAQ889B,cA5CR,SAAuB/1J,EAAOg2J,EAAcC,QACnB,IAAjBD,IAA2BA,EAAe,WAC1B,IAAhBC,IAA0BA,EAAc,IAC5C,IAAI/87B,EAAQ887B,GACJh2J,EAAM9xmB,WAAa5vN,OAAOO,KAAKmh0B,EAAM9xmB,YACtC,GACP,MAAO,CACHhvG,SAAUy22B,EAAUz87B,EAAM3xB,IAAI,SAAU6O,GAAK,MAAO,CAACA,EAAG,IAAM,IAC9D2lC,WAAY,CAAC,YAAYv5C,OAAOyz9B,EAAa,CAAgB,SAAUz98B,GAE/D,SAASoiV,EAAQr0E,GAEb,IADA,IAAI2vsB,EAAgB,GACX/m9B,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpC+m9B,EAAc/m9B,EAAK,GAAKxG,UAAUwG,GAEtC,IAAIuJ,EAAQF,EAAO3D,KAAKL,OAASA,KAOjC,OANAkE,EAAM6tQ,SAAWA,EACjB7tQ,EAAM9O,aAAc,EACpB8O,EAAMw98B,cAAgB,CAAC,EACvBD,EAAYzv9B,QAAQ,SAAUuB,EAAMlO,GAChC6e,EAAMw98B,cAAcnu9B,GAAQmu9B,EAAcr89B,EAC9C,GACO6e,CACX,CAiBA,OA/BAnE,EAAUqmV,EAASpiV,GAenBla,OAAOwY,eAAe8jV,EAAS,cAAe,CAC1CvyV,IAAK,WACD,OAAO,CACX,EACA63B,YAAY,EACZuL,cAAc,IAElBmvT,EAAQhmV,UAAUi+D,OAAS,WAClBr+D,KAAK5K,aACNks9B,EAAYjj5B,OAAOgj5B,EAAMt08B,cAAcy+yB,EAAO7qzB,EAAS,CAAC,EAAGX,KAAKoyB,MAAOpyB,KAAK0h9B,gBAAiB1h9B,KAAK+xQ,SAAS,GAEnH,EACAq0E,EAAQhmV,UAAUmzU,qBAAuB,WACrCvzU,KAAK5K,aAAc,EACnBks9B,EAAYj0oB,uBAAuBrtU,KAAK+xQ,SAAS,GACrD,EACOq0E,CACX,CAjCwD,CAiCtDg7nB,EAAc5+3B,WAE5B,C,+BC5EA14F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIi8G,EAAe,EAAQ,OACvB09N,EAAkB,EAAQ,OAC1B39N,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChBmmsB,EAAe,EAAQ,OACvBhxM,EAAe,EAAQ,OA8C3B,SAASj1B,EAAiBnhlB,GACtB,IAAIirgB,EAAQ13Q,EAAWvzP,GACnB6s9B,EAAqB5hd,EAAM/7gB,MAAM,8BACjC+uG,EAAQ4u3B,EAAqBA,EAAmB,GAAK5hd,EACrDgW,EAASjhhB,EAAS,MAAK,GAC3B,OAAIihhB,GAAUhjb,EAAM/uG,MAAM,eACf,YAAc+xhB,EAAShjb,EAAMof,OAAO,GAExCpf,CACX,CAEA,SAASs1J,EAAWvzP,GAChB,IAAIuuC,EAAMu+D,EAAa7xF,QAAQjb,GAAMA,EAAGgG,OAAO,GAAG,GAAKhG,EACvD,OAAOuuC,GAAOA,EAAIr8C,YAAc,WACpC,CA7CAvC,EAAQw5O,UALR,SAAmBt0O,EAAK8oB,GACpB,OAAIA,EAAIre,QAAUzK,EACP8oB,EACJA,EAAI0/F,OAAO,EAAGxoH,EAAM,GAAK,KACpC,EAgBAlF,EAAQm99B,UALR,SAAmBxt9B,EAAQqe,GACvB,KAAOA,EAAIre,OAASA,GAChBqe,GAAO,IACX,OAAOA,CACX,EAOAhuB,EAAQo99B,YALR,SAAqBC,GACjB,OAAOA,EACF/99B,QAAQ,WAAY,SAAU+mI,GAAM,OAAOA,EAAG1iI,aAAe,GAC7DrE,QAAQ,WAAY,SAAU+mI,GAAM,MAAO,IAAMA,EAAG1iI,aAAe,EAC5E,EAqBA3D,EAAQwxlB,iBAAmBA,EAK3BxxlB,EAAQ4jQ,WAAaA,EACrB,IAAI05tB,EAAqB,KA4BzBt99B,EAAQmlB,UAZR,SAAmB+5D,GACf,IAAIqkE,EAAO,GASX,OAAOr+H,KAAKC,UAAU+5D,EAAG,SAAUn5E,EAAK7E,GAAS,OARjD,SAAgBA,GACZ,GAAIi8G,EAAa3xF,SAAStqB,GAAQ,CAC9B,IAA6B,IAAzBqiJ,EAAKz/I,QAAQ5C,GACb,MAAO,iBACXqiJ,EAAKl0I,KAAKnO,EACd,CACA,OAvBe,SAAUA,GAC7B,IAAIq89B,EAAc1ipB,EAAgBQ,UAAUu+iB,mBAY5C,OAXA0jG,EAAqBA,GAAsBhs2B,EAAMvkB,QAAQ,CACrD,CAACukB,EAAMinH,IAAIp7H,EAAawB,WAAY2S,EAAMpuF,IAAI,cAC9C,CAACi6E,EAAaw6G,OAAQrmG,EAAMpuF,IAAI,SAChC,CAACi6E,EAAaqg3B,UAAWls2B,EAAMpuF,IAAI,cACnC,CAACq67B,EAAa,SAAUz79B,GAAK,OAAOA,EAAE+33B,qBAAqBt33B,UAAY,GACvE,CAAC+uH,EAAMkP,GAAGq6M,EAAgBQ,WAAY/pN,EAAMuvH,OAAO,aACnD,CAACvvH,EAAMkP,GAAGi3rB,EAAahle,YAAanhO,EAAMuvH,OAAO,aACjD,CAACvvH,EAAMkP,GAAGimf,EAAanlG,YAAahwZ,EAAMuvH,OAAO,aACjD,CAAC1jI,EAAak+Z,aAAcm2E,GAC5B,CAAClge,EAAMpuF,KAAI,GAAOg6E,EAAS49G,aAEL55N,EAC9B,CASeu89B,CAAiBv89B,EAC5B,CACwD64C,CAAO74C,EAAQ,GAAG5B,QAAQ,OAAQ,IAC9F,EAGAU,EAAQ099B,kBAAoB,SAAU/iuB,GAAQ,OAAO,SAAU3sO,GAC3D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAIL,EAAMK,EAAIlqB,QAAQ62P,GACtB,OAAa,IAAThtO,EACO,CAACK,EAAK,IACV,CAACA,EAAI0/F,OAAO,EAAG//F,GAAMK,EAAI0/F,OAAO//F,EAAM,GACjD,CAAG,EACH3tB,EAAQ299B,UAAY,IAAItw7B,OAAO,yBAC/BrtC,EAAQ499B,qBAAuB,SAAU5v8B,GAAO,OAAOA,EAAI1uB,QAAQ,WAAY,GAAK,EACpFU,EAAQ699B,UAAY799B,EAAQ099B,kBAAkB,KAC9C199B,EAAQ899B,WAAa999B,EAAQ099B,kBAAkB,KAC/C199B,EAAQ+99B,WAAa/99B,EAAQ099B,kBAAkB,KAC/C199B,EAAQo96B,YAAc,SAAUpv5B,GAAO,OAAOA,EAAMA,EAAI1uB,QAAQ,KAAM,IAAM,EAAI,EAiBhFU,EAAQg+9B,aANR,SAAsBvmQ,GAClB,IAAI9lkB,EAAK,IAAItkH,OAAO,IAAMoqrB,EAAQ,IAAK,KACvC,OAAO,SAAUzpsB,GACb,OAAOA,EAAIvxB,MAAMk1J,GAAInlJ,OAAO0wG,EAAS49G,SACzC,CACJ,EAmBA96N,EAAQi+9B,eALR,SAAwBht9B,EAAKnP,GACzB,OAAIq7G,EAAa2B,SAAS5B,EAAS+yH,KAAKh/N,KAASksG,EAAa2B,SAASh9G,GAC5DmP,EAAIoF,MAAM,GAAI,GAAG9M,OAAO2zG,EAAS+yH,KAAKh/N,GAAOnP,GACjDo7G,EAAS430B,MAAM7j7B,EAAKnP,EAC/B,C,+BCvJA,IAAIo89B,EAAc,EAAQ,OACtBn9T,EAAS,gBAEb9jkB,EAAOj9F,QAAU,WACf,IAAI08O,EAAQ,CACV,CAAEnxN,KAAM,SACN2nG,MAAO,CAAE,CAAE,QAAW,CAAC,qBACd,CAAE,QAAW,CAAC,qBAAuB,aAAc,WAC9D,CAAE3nG,KAAM,SACN2nG,MAAO,CAAE,YAAa,YAAa,UAAW,WAChD,CAAE3nG,KAAM,QACN2nG,MAAO,CAAE,WAAY,WAAY,QAAS,WAAY,gBACxD,CAAE3nG,KAAM,SACN2nG,MAAO,CAAE,gBAAiB,gBAAiB,WAAY,eAAgB,gBAC9D,CAAE,WAAc,CAAC,uBAAwB,wBACpD,CAAEA,MAAO,CAAE,OAAQ,QAAS,OAAQ,MAAO,QAAS,QAAS,QAAS,QAGpEmlf,EAAM,CAAE,OAAQ,YA4CpB,OAnCA37X,EAAMr7L,IAAM0/mB,EAAO1oD,GACnB37X,EAAMyiC,MAAQ4hZ,EAFF,CAAE,SAAU,UAAW,SAAU,QAAS,SAAU,UAAW,SAI3Erkb,EAAMnvO,QAAQ,SAAU+X,GACtBA,EAAM4tG,MAAQ5tG,EAAM4tG,MAAM5kH,IAAI,SAAUkwO,GACtC,IAAI2/uB,EACJ,GAAsB,iBAAX3/uB,EAAqB,CAC9B,IAAIz4O,EAAMV,OAAOO,KAAK44O,GAAS,GAC/B2/uB,EAAe3/uB,EAAQz4O,GACvBy4O,EAAUz4O,EACVo49B,EAAa5w9B,QAAQ,SAAUyf,GAC7BqrlB,EAAIhpmB,KAAK2d,GACT0vN,EAAMr7L,IAAIr0B,IAAK,CACjB,EACF,CAOA,OANAqrlB,EAAIhpmB,KAAKmvO,GACE9B,EAAMr7L,IAAIm9L,GAAW,CAC9BA,QAASA,EACTz0I,KAAMm03B,EAAY1/uB,GAClBm+kB,WAAYwhK,EAGhB,GAEAzhvB,EAAMr7L,IAAIm+R,SAAW,CACnBhhG,QAAS,WACTz0I,KAAMm03B,EAAY1+oB,UAGhBl6T,EAAMiG,OAAMmxN,EAAMyiC,MAAM75P,EAAMiG,MAAQjG,EAC5C,GAEAo3N,EAAMxE,SAAW6ob,EAAO1oD,EAAI9umB,OAxCb,CACb,UAAW,MAAO,KAAM,QAAS,QACjC,cAAe,UAAW,cAC1B,WAAY,WAAY,YACxB,mBAAoB,kBACpB,kBAAmB,OAAQ,UAoC7BmzO,EAAM9uL,OAAS,CAAC,EAET8uL,CACT,C,yBCjEA,SAAUpgH,GAOR,IASI8h2B,EAT6B,WAC/B,IACE,QAASr+9B,OAAO0d,QAClB,CAAE,MAAO+H,GACP,OAAO,CACT,CACF,CAGwB648B,GAEpBC,EAAiB,SAAS7u7B,GAC5B,IAAIhyB,EAAW,CACbpa,KAAM,WACJ,IAAInC,EAAQuuC,EAAMgU,QAClB,MAAO,CAAE1mC,UAAgB,IAAV7b,EAAkBA,MAAOA,EAC1C,GASF,OANIk99B,IACF3g9B,EAAS1d,OAAO0d,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,EAMI8g9B,EAAiB,SAASr99B,GAC5B,OAAO2iG,mBAAmB3iG,GAAO5B,QAAQ,OAAQ,IACnD,EAEIk/9B,EAAmB,SAASt99B,GAC9B,OAAO+/F,mBAAmBnlF,OAAO5a,GAAO5B,QAAQ,MAAO,KACzD,GAgIsC,WACpC,IACE,IAAIyhG,EAAkBu7B,EAAOv7B,gBAE7B,MAC8C,QAA3C,IAAIA,EAAgB,QAAQx+F,YACa,mBAAlCw+F,EAAgBplF,UAAUrM,KACY,mBAAtCyxF,EAAgBplF,UAAU8kD,OAEtC,CAAE,MAAOlgE,GACP,OAAO,CACT,CACF,EAEKk+9B,IA5IyB,WAE5B,IAAI193B,EAAkB,SAASwuO,GAC7BlqU,OAAOwY,eAAetC,KAAM,WAAY,CAAEyrB,UAAU,EAAM9lC,MAAO,CAAC,IAClE,IAAIw99B,SAA4BnvpB,EAEhC,GAA2B,cAAvBmvpB,QAEG,GAA2B,WAAvBA,EACY,KAAjBnvpB,GACFh0T,KAAKoj9B,YAAYpvpB,QAEd,GAAIA,aAAwBxuO,EAAiB,CAClD,IAAIthF,EAAQlE,KACZg0T,EAAahiU,QAAQ,SAASrM,EAAO4N,GACnC2Q,EAAMqsH,OAAOh9H,EAAM5N,EACrB,EACF,KAAO,IAAsB,OAAjBquU,GAAkD,WAAvBmvpB,EAkBrC,MAAM,IAAI7i9B,UAAU,gDAjBpB,GAAqD,mBAAjDxW,OAAOsW,UAAUpZ,SAASqZ,KAAK2zT,GACjC,IAAK,IAAI3uU,EAAI,EAAGA,EAAI2uU,EAAa5/T,OAAQ/O,IAAK,CAC5C,IAAIusD,EAAQoiR,EAAa3uU,GACzB,GAA+C,mBAA1CyE,OAAOsW,UAAUpZ,SAASqZ,KAAKuxC,IAAkD,IAAjBA,EAAMx9C,OAGzE,MAAM,IAAIkM,UAAU,4CAA8Cjb,EAAI,+BAFtE2a,KAAKuwH,OAAO3+E,EAAM,GAAIA,EAAM,GAIhC,MAEA,IAAK,IAAIpnD,KAAOwpU,EACVA,EAAapoU,eAAepB,IAC9BwV,KAAKuwH,OAAO/lI,EAAKwpU,EAAaxpU,GAMtC,CACF,EAEI06B,EAAQsgE,EAAgBplF,UAE5B8kB,EAAMqrG,OAAS,SAASh9H,EAAM5N,GACxB4N,KAAQyM,KAAKqj9B,SACfrj9B,KAAKqj9B,SAAS9v9B,GAAMO,KAAKyM,OAAO5a,IAEhCqa,KAAKqj9B,SAAS9v9B,GAAQ,CAACgN,OAAO5a,GAElC,EAEAu/B,EAAMuR,OAAS,SAASljC,UACfyM,KAAKqj9B,SAAS9v9B,EACvB,EAEA2xB,EAAMrxB,IAAM,SAASN,GACnB,OAAQA,KAAQyM,KAAKqj9B,SAAYrj9B,KAAKqj9B,SAAS9v9B,GAAM,GAAK,IAC5D,EAEA2xB,EAAM8jE,OAAS,SAASz1F,GACtB,OAAQA,KAAQyM,KAAKqj9B,SAAYrj9B,KAAKqj9B,SAAS9v9B,GAAMuH,MAAM,GAAK,EAClE,EAEAoqB,EAAMvxB,IAAM,SAASJ,GACnB,OAAQA,KAAQyM,KAAKqj9B,QACvB,EAEAn+7B,EAAMnxB,IAAM,SAASR,EAAM5N,GACzBqa,KAAKqj9B,SAAS9v9B,GAAQ,CAACgN,OAAO5a,GAChC,EAEAu/B,EAAMlzB,QAAU,SAASkd,EAAUlO,GACjC,IAAIkkD,EACJ,IAAK,IAAI3xD,KAAQyM,KAAKqj9B,SACpB,GAAIrj9B,KAAKqj9B,SAASz39B,eAAe2H,GAAO,CACtC2xD,EAAUllD,KAAKqj9B,SAAS9v9B,GACxB,IAAK,IAAIlO,EAAI,EAAGA,EAAI6/D,EAAQ9wD,OAAQ/O,IAClC6pB,EAAS7O,KAAKW,EAASkkD,EAAQ7/D,GAAIkO,EAAMyM,KAE7C,CAEJ,EAEAklB,EAAM76B,KAAO,WACX,IAAI6pC,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAKP,EACb,GACOwv9B,EAAe7u7B,EACxB,EAEAhP,EAAM0D,OAAS,WACb,IAAIsL,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,GACpBuuC,EAAMpgC,KAAKnO,EACb,GACOo99B,EAAe7u7B,EACxB,EAEAhP,EAAMggC,QAAU,WACd,IAAIhxB,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAK,CAACP,EAAM5N,GACpB,GACOo99B,EAAe7u7B,EACxB,EAEI2u7B,IACF397B,EAAM1gC,OAAO0d,UAAYgjB,EAAMggC,SAGjChgC,EAAMl+B,SAAW,WACf,IAAIs89B,EAAc,GAIlB,OAHAtj9B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B+v9B,EAAYxv9B,KAAKkv9B,EAAezv9B,GAAQ,IAAMyv9B,EAAer99B,GAC/D,GACO299B,EAAYpl9B,KAAK,IAC1B,EAEApU,OAAOwY,eAAe4iB,EAAO,OAAQ,CACnCrxB,IAAK,WACH,OAAOmM,KAAKqj9B,SAAWv59B,OAAOO,KAAK2V,KAAKqj9B,UAAUjv9B,OAAS,CAC7D,IAGF2sH,EAAOv7B,gBAAkBA,CAC3B,CAiBE+93B,GAGF,IAAIr+7B,EAAQ67F,EAAOv7B,gBAAgBplF,UAET,mBAAf8kB,EAAM9xB,OACf8xB,EAAM9xB,KAAO,WACX,IAAI8Q,EAAQlE,KACRk0B,EAAQ,GACZl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAK,CAACP,EAAM5N,IACbue,EAAMm/8B,UACTn/8B,EAAMuyB,OAAOljC,EAEjB,GACA2gC,EAAM9gC,KAAK,SAASwG,EAAGC,GACrB,OAAID,EAAE,GAAKC,EAAE,IACH,EACCD,EAAE,GAAKC,EAAE,GACX,EAEA,CAEX,GACIqK,EAAMm/8B,WACRn/8B,EAAMm/8B,SAAW,CAAC,GAEpB,IAAK,IAAIh+9B,EAAI,EAAGA,EAAI6uC,EAAM9/B,OAAQ/O,IAChC2a,KAAKuwH,OAAOr8F,EAAM7uC,GAAG,GAAI6uC,EAAM7uC,GAAG,GAEtC,GAG+B,mBAAtB6/B,EAAMk+7B,aACft59B,OAAOwY,eAAe4iB,EAAO,cAAe,CAC1CwG,YAAY,EACZuL,cAAc,EACdxL,UAAU,EACV9lC,MAAO,SAASquU,GACd,GAAIh0T,KAAKqj9B,SACPrj9B,KAAKqj9B,SAAW,CAAC,MACZ,CACL,IAAIh59B,EAAO,GACX2V,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3BlJ,EAAKyJ,KAAKP,EACZ,GACA,IAAK,IAAIlO,EAAI,EAAGA,EAAIgF,EAAK+J,OAAQ/O,IAC/B2a,KAAKy2B,OAAOpsC,EAAKhF,GAErB,CAGA,IACIyvR,EADA7/Q,GADJ++T,EAAeA,EAAajwU,QAAQ,MAAO,KACb7C,MAAM,KAEpC,IAASmE,EAAI,EAAGA,EAAI4P,EAAWb,OAAQ/O,IACrCyvR,EAAY7/Q,EAAW5P,GAAGnE,MAAM,KAChC8e,KAAKuwH,OACH0y1B,EAAiBnusB,EAAU,IAC1BA,EAAU1gR,OAAS,EAAK6u9B,EAAiBnusB,EAAUh6Q,MAAM,GAAGoD,KAAK,MAAQ,GAGhF,GAML,CA/PD,MAgQqB,IAAX,EAAAyD,EAA0B,EAAAA,EACV,oBAAXxa,OAA0BA,OACjB,oBAATm7F,KAAwBA,KAAOtiF,MAG9C,SAAU+gH,GA0NR,GAnN4B,WAC1B,IACE,IAAIr9B,EAAI,IAAIq9B,EAAO13B,IAAI,IAAK,YAE5B,OADA3F,EAAE+mC,SAAW,MACM,mBAAX/mC,EAAEuK,MAA8BvK,EAAEu3nB,YAC5C,CAAE,MAAOj2tB,GACP,OAAO,CACT,CACF,CAuMKw+9B,IApMa,WAChB,IAAIC,EAAO1i2B,EAAO13B,IAEdA,EAAM,SAASoE,EAAKpiD,GACH,iBAARoiD,IAAkBA,EAAMltF,OAAOktF,IACtCpiD,GAAwB,iBAATA,IAAmBA,EAAO9qC,OAAO8qC,IAGpD,IAAoBsiO,EAAhB3kK,EAAMvgH,SACV,GAAI4iD,SAA6B,IAApB01E,EAAO93B,UAAuB59C,IAAS01E,EAAO93B,SAASgF,MAAO,GAC1D9mG,OAAOu89B,wBAA0Bj79B,SAASuwP,eAEvD3tM,EAAOA,EAAKjjD,gBAGdulR,GADA3kK,EAAMvgH,SAAS89P,eAAeo4U,mBAAmB,KAC/B5xjB,cAAc,SACpBkhF,KAAO5iD,EACnB29D,EAAIn1D,KAAKs8C,YAAYw9K,GACrB,IACE,GAAuC,IAAnCA,EAAY1/K,KAAK1lG,QAAQ8iD,GAAa,MAAM,IAAI9jC,MAAMomQ,EAAY1/K,KACxE,CAAE,MAAOya,GACP,MAAM,IAAInhG,MAAM,0BAA4B8jC,EAAO,WAAaq9D,EAClE,CACF,CAEA,IAAIi72B,EAAgB362B,EAAIj8F,cAAc,KACtC428B,EAAc113B,KAAOR,EACjBkgL,IACF3kK,EAAIt7G,KAAKyiG,YAAYwz3B,GACrBA,EAAc113B,KAAO013B,EAAc113B,MAGrC,IAAI213B,EAAe562B,EAAIj8F,cAAc,SAIrC,GAHA628B,EAAa5z8B,KAAO,MACpB4z8B,EAAaj+9B,MAAQ8nG,EAEU,MAA3Bk23B,EAAcl68B,WAAqB,IAAIvnB,KAAKyh+B,EAAc113B,QAAW213B,EAAaC,kBAAoBx46B,EACxG,MAAM,IAAI/qC,UAAU,eAGtBxW,OAAOwY,eAAetC,KAAM,iBAAkB,CAC5Cra,MAAOg+9B,IAKT,IAAI1oQ,EAAe,IAAIl6lB,EAAOv7B,gBAAgBxlF,KAAKstM,QAC/Cw2wB,GAAqB,EACrBC,GAA2B,EAC3B7/8B,EAAQlE,KACZ,CAAC,SAAU,SAAU,OAAOhO,QAAQ,SAASi0O,GAC3C,IAAI1hM,EAAS02qB,EAAah1e,GAC1Bg1e,EAAah1e,GAAc,WACzB1hM,EAAOzjC,MAAMm6sB,EAAc9mtB,WACvB2v9B,IACFC,GAA2B,EAC3B7/8B,EAAMopM,OAAS2tgB,EAAaj0tB,WAC5B+89B,GAA2B,EAE/B,CACF,GAEAj69B,OAAOwY,eAAetC,KAAM,eAAgB,CAC1Cra,MAAOs1tB,EACPvvrB,YAAY,IAGd,IAAI4hL,OAAS,EACbxjN,OAAOwY,eAAetC,KAAM,sBAAuB,CACjD0rB,YAAY,EACZuL,cAAc,EACdxL,UAAU,EACV9lC,MAAO,WACDqa,KAAKstM,SAAWA,IAClBA,EAASttM,KAAKstM,OACVy2wB,IACFD,GAAqB,EACrB9j9B,KAAKi7sB,aAAamoQ,YAAYpj9B,KAAKstM,QACnCw2wB,GAAqB,GAG3B,GAEJ,EAEI5+7B,EAAQmkE,EAAIjpF,UAchB,CAAC,OAAQ,OAAQ,WAAY,OAAQ,YAClCpO,QAAQ,SAAS01T,IAba,SAASA,GACxC59T,OAAOwY,eAAe4iB,EAAOwiS,EAAe,CAC1C7zT,IAAK,WACH,OAAOmM,KAAKgk9B,eAAet8pB,EAC7B,EACA3zT,IAAK,SAASpO,GACZqa,KAAKgk9B,eAAet8pB,GAAiB/hU,CACvC,EACA+lC,YAAY,GAEhB,CAIIu47B,CAA2Bv8pB,EAC7B,GAEF59T,OAAOwY,eAAe4iB,EAAO,SAAU,CACrCrxB,IAAK,WACH,OAAOmM,KAAKgk9B,eAAuB,MACrC,EACAjw9B,IAAK,SAASpO,GACZqa,KAAKgk9B,eAAuB,OAAIr+9B,EAChCqa,KAAKkk9B,qBACP,EACAx47B,YAAY,IAGd5hC,OAAO0hC,iBAAiBtG,EAAO,CAE7B,SAAY,CACVrxB,IAAK,WACH,IAAIqQ,EAAQlE,KACZ,OAAO,WACL,OAAOkE,EAAM+pF,IACf,CACF,GAGF,KAAQ,CACNp6F,IAAK,WACH,OAAOmM,KAAKgk9B,eAAe/13B,KAAKlqG,QAAQ,MAAO,GACjD,EACAgQ,IAAK,SAASpO,GACZqa,KAAKgk9B,eAAe/13B,KAAOtoG,EAC3Bqa,KAAKkk9B,qBACP,EACAx47B,YAAY,GAGd,SAAY,CACV73B,IAAK,WACH,OAAOmM,KAAKgk9B,eAAev51B,SAAS1mI,QAAQ,SAAU,IACxD,EACAgQ,IAAK,SAASpO,GACZqa,KAAKgk9B,eAAev51B,SAAW9kI,CACjC,EACA+lC,YAAY,GAGd,OAAU,CACR73B,IAAK,WAEH,IAAIsw9B,EAAe,CAAE,QAAS,GAAI,SAAU,IAAK,OAAQ,IAAKnk9B,KAAKgk9B,eAAev68B,UAI9E268B,EAAkBpk9B,KAAKgk9B,eAAep1rB,MAAQu1rB,GACnB,KAA7Bnk9B,KAAKgk9B,eAAep1rB,KAEtB,OAAO5uR,KAAKgk9B,eAAev68B,SACzB,KACAzJ,KAAKgk9B,eAAet1rB,UACnB01rB,EAAmB,IAAMpk9B,KAAKgk9B,eAAep1rB,KAAQ,GAC1D,EACAljQ,YAAY,GAGd,SAAY,CACV73B,IAAK,WACH,MAAO,EACT,EACAE,IAAK,SAASpO,GACd,EACA+lC,YAAY,GAGd,SAAY,CACV73B,IAAK,WACH,MAAO,EACT,EACAE,IAAK,SAASpO,GACd,EACA+lC,YAAY,KAIhB29D,EAAIC,gBAAkB,SAASghC,GAC7B,OAAOm51B,EAAKn63B,gBAAgBxoF,MAAM2i9B,EAAMtv9B,UAC1C,EAEAk1F,EAAI8/B,gBAAkB,SAAS17B,GAC7B,OAAOg23B,EAAKt61B,gBAAgBroH,MAAM2i9B,EAAMtv9B,UAC1C,EAEA4sH,EAAO13B,IAAMA,CAEf,CAGEg73B,QAGuB,IAApBtj2B,EAAO93B,YAA0B,WAAY83B,EAAO93B,UAAW,CAClE,IAAIkgB,EAAY,WACd,OAAO4X,EAAO93B,SAASx/E,SAAW,KAAOs3G,EAAO93B,SAASylM,UAAY3tK,EAAO93B,SAAS2lM,KAAQ,IAAM7tK,EAAO93B,SAAS2lM,KAAQ,GAC7H,EAEA,IACE9kS,OAAOwY,eAAey+G,EAAO93B,SAAU,SAAU,CAC/Cp1F,IAAKs1G,EACLz9E,YAAY,GAEhB,CAAE,MAAO1mC,GACPkpG,YAAY,WACV6yB,EAAO93B,SAAS+E,OAASmb,GAC3B,EAAG,IACL,CACF,CAED,CA3OD,MA4OqB,IAAX,EAAAxnG,EAA0B,EAAAA,EACV,oBAAXxa,OAA0BA,OACjB,oBAATm7F,KAAwBA,KAAOtiF,K,kBCnf9C,IAAIuoV,EAAkB,EAAQ,OAC1B+7nB,EAAa,EAAQ,OACrB3kwB,EAAe,EAAQ,OAwC3Bj+H,EAAOj9F,QAVP,SAAmB6mD,EAAQs0K,GACzB,IAAIzsN,EAAS,CAAC,EAMd,OALAysN,EAAWD,EAAaC,EAAU,GAElC0kwB,EAAWh56B,EAAQ,SAAS3lD,EAAO6E,EAAK8gD,GACtCi9S,EAAgBp1V,EAAQ3I,EAAKo1N,EAASj6N,EAAO6E,EAAK8gD,GACpD,GACOn4C,CACT,C,YCpBAuuF,EAAOj9F,QAVP,SAAoB4vB,EAAOkw8B,GACzB,IAAInw9B,EAASigB,EAAMjgB,OAGnB,IADAigB,EAAMjhB,KAAKmx9B,GACJnw9B,KACLigB,EAAMjgB,GAAUigB,EAAMjgB,GAAQzO,MAEhC,OAAO0uB,CACT,C,kBClBA,EAAQ,OAERqtE,EAAOj9F,QAAU,c,yBCQT,SAAW5D,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,6CAA6CF,MAAM,KAC7DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,cAAe,wBACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,SAAbD,EACOC,EACa,UAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbD,GAAoC,UAAbA,EACvBC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUipM,EAAOC,EAAS/oM,GAChC,OAAI8oM,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,OAEf,EACA7oM,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNC,EAAG,iBACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/EyCC,CAAQ,EAAQ,O,8jNCO1Dm9F,EAAOj9F,QAPP,SAAmBkB,GACjB,IAAIqqB,SAAcrqB,EAClB,MAAgB,UAARqqB,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrqB,EACU,OAAVA,CACP,C,kBCZA,IAGInB,EAHO,EAAQ,MAGDA,OAElBk9F,EAAOj9F,QAAUD,C,YCSjBk9F,EAAOj9F,QANP,SAAiBiwG,EAAMtrG,GACrB,OAAO,SAASuuE,GACd,OAAO+8B,EAAKtrG,EAAUuuE,GACxB,CACF,C,kBCZA,IAAI72D,EAAQ,EAAQ,OAChBurN,EAAW,EAAQ,OACnBg6lB,EAAsB,EAAQ,OAC9BntlB,EAAY,EAAQ,MAqBpByuY,EAAet7Y,EAAS,SAASh4N,GAEnC,OADAA,EAAKP,UAAKgD,EAAWuvzB,GACdvlzB,EAAMo4N,OAAWpiO,EAAWzC,EACrC,GAEAqtF,EAAOj9F,QAAUkjnB,C,+BC5BjB,IAAIj+gB,EAAI,EAAQ,OACZ863B,EAAY,kBACZvk2B,EAAQ,EAAQ,OAChBu5G,EAAmB,EAAQ,MAU/B9vI,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAPXof,EAAM,WAE3B,OAAQ3rH,MAAM,GAAGqhC,UACnB,IAI8D,CAC5DA,SAAU,SAAkB4H,GAC1B,OAAOin7B,EAAUxk9B,KAAMu9B,EAAIppC,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EACnE,IAIF0iO,EAAiB,W,+BCpBjB,IAAIszW,EAAa,EAAQ,OAErB9mlB,EAAQR,KAAKQ,MAEboN,EAAO,SAAUihB,EAAOw1f,GAC1B,IAAIz1gB,EAASigB,EAAMjgB,OAEnB,GAAIA,EAAS,EAKX,IAHA,IACI9N,EAAS0/B,EADT3gC,EAAI,EAGDA,EAAI+O,GAAQ,CAGjB,IAFA4xB,EAAI3gC,EACJiB,EAAU+tB,EAAMhvB,GACT2gC,GAAK6jf,EAAUx1f,EAAM2R,EAAI,GAAI1/B,GAAW,GAC7C+tB,EAAM2R,GAAK3R,IAAQ2R,GAEjBA,IAAM3gC,MAAKgvB,EAAM2R,GAAK1/B,EAC5B,MAWA,IARA,IAAI+lH,EAASrmH,EAAMoO,EAAS,GACxBjK,EAAOiJ,EAAK05kB,EAAWz4jB,EAAO,EAAGg4F,GAASw9Z,GAC1C5/gB,EAAQmJ,EAAK05kB,EAAWz4jB,EAAOg4F,GAASw9Z,GACxC46c,EAAUt69B,EAAKiK,OACfsw9B,EAAUz69B,EAAMmK,OAChBuw9B,EAAS,EACTC,EAAS,EAEND,EAASF,GAAWG,EAASF,GAClCrw8B,EAAMsw8B,EAASC,GAAWD,EAASF,GAAWG,EAASF,EACnD76c,EAAU1/gB,EAAKw69B,GAAS169B,EAAM269B,KAAY,EAAIz69B,EAAKw69B,KAAY169B,EAAM269B,KACrED,EAASF,EAAUt69B,EAAKw69B,KAAY169B,EAAM269B,KAIlD,OAAOvw8B,CACT,EAEAqtE,EAAOj9F,QAAU2O,C,yBCxCjBsuF,EAAOj9F,QAAU,SAAyBg9G,EAAIi4H,EAAUC,GACtD,IAUEkS,EAVEpiI,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UAEzBC,EAAQ,QAAUN,GAAY,IAC9BkS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAEjB,IAAI++vB,EAAqB,WAAZnrvB,EACXorvB,EAAoBD,EAAS,mBAAqB,mBAClDE,EAActj3B,EAAG6jH,OAAOw/vB,GACxBE,EAAcvj3B,EAAG1xE,KAAKsqM,OAAS0qvB,GAAeA,EAAY1qvB,MAC1D+qhB,EAAMy/N,EAAS,IAAM,IACrBI,EAASJ,EAAS,IAAM,IACxBj5uB,OAAgB90O,EAClB,GAAIku9B,EAAa,CACf,IAUIlqvB,EAVAoqvB,EAAmBzj3B,EAAG0S,KAAK+3H,QAAQ64uB,EAAY1qvB,MAAON,EAAUt4H,EAAGm6H,aACrEupvB,EAAa,YAAcrrvB,EAC3BsrvB,EAAY,WAAatrvB,EACzBurvB,EAAgB,eAAiBvrvB,EAEjCwrvB,EAAS,QADTC,EAAU,KAAOzrvB,GACY,OAC/BrwH,GAAO,kBAAoB,EAAS,MAAQ,EAAqB,KAEjEA,GAAO,QAAU,EAAe,SAAW,EAAc,cADzDy72B,EAAmB,aAAeprvB,GAC2D,SAAW,EAAc,oBAAwB,EAAc,sBAA0B,EAAc,mBAChM8R,EAAgBk5uB,GAChBhqvB,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,iBAAoBmiI,GAAiB,mBAAqB,oCAA0CnqI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,kBACjK,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,gBAAmB,EAAsB,wBAE9ChI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,gBACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAc,qBAAyB,EAAe,MAAQ,EAAiB,qBAAuB,EAAqB,IAAM,EAAQ,KAAO,EAAiB,OAAS,EAAU,IAAM,EAAW,KAAO,EAAqB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,WAAa,EAAe,MAAQ,EAAqB,gBAAkB,EAAU,IAAM,EAAW,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,aAAe,EAAS,MAAQ,EAAe,OAAU,EAAQ,QAAY,EAAQ,YAC9kB3yG,IAAZgvN,IACF8lB,EAAgBk5uB,EAChB7qvB,EAAiBx4H,EAAGy4H,cAAgB,IAAM4qvB,EAC1Cj5uB,EAAeq5uB,EACfj5uB,EAAU+4uB,EAEd,MAGE,GADEM,EAASlgO,GADPigO,EAAsC,iBAAfN,IAEN94uB,EAAS,CAC5B,IAAIs5uB,EAAU,IAAOD,EAAS,IAC9B772B,GAAO,SACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,MAAQ,EAAiB,qBAAuB,EAAgB,IAAM,EAAQ,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,KAAO,EAAgB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,MAC5Q,MACM472B,QAA6Bvu9B,IAAZgvN,GACnBq/vB,GAAa,EACbv5uB,EAAgBk5uB,EAChB7qvB,EAAiBx4H,EAAGy4H,cAAgB,IAAM4qvB,EAC1Cj5uB,EAAek5uB,EACfE,GAAU,MAENI,IAAex5uB,EAAermP,KAAKq/9B,EAAS,MAAQ,OAAOE,EAAaj/vB,IACxEi/vB,MAAiBM,GAAgBx5uB,IACnCs5uB,GAAa,EACbv5uB,EAAgBk5uB,EAChB7qvB,EAAiBx4H,EAAGy4H,cAAgB,IAAM4qvB,EAC1CG,GAAU,MAEVE,GAAa,EACbG,GAAU,MAGVC,EAAU,IAAOD,EAAS,IAC9B772B,GAAO,SACHwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,IAAM,EAAW,IAAM,EAAiB,OAAS,EAAU,QAAU,EAAU,OA6C1G,OA1CAmiI,EAAgBA,GAAiBlS,GAC7BoB,EAAaA,GAAc,IACpBhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,iBAAoBmiI,GAAiB,UAAY,oCAA0CnqI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,4BAA8B,EAAY,YAAc,EAAiB,gBAAkB,EAAe,OAClQ,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,0BAA6B,EAAW,IAE7CA,GADEwiI,EACK,OAAU,EAEL,EAAiB,KAG7BxqI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAK,EAEdxiI,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAEL0xH,EAAQ1xH,EACZA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,sBC1JA,OAaA,SAAYsX,EAAQx8H,GAEnB,aAE6D,iBAAnBm9F,EAAOj9F,QAShDi9F,EAAOj9F,QAAUs8H,EAAOt4H,SACvBlE,EAASw8H,GAAQ,GACjB,SAAUnnG,GACT,IAAMA,EAAEnxB,SACP,MAAM,IAAI8e,MAAO,4CAElB,OAAOhjB,EAASq1B,EACjB,EAEDr1B,EAASw8H,EAIT,CA1BF,CA0BuB,oBAAX55H,OAAyBA,OAAS6Y,KAAM,SAAU7Y,EAAQq+9B,GAMtE,aAEA,IAAI5u7B,EAAM,GAENmuM,EAAWj7O,OAAO2rC,eAElB36B,EAAQ87B,EAAI97B,MAEZmxsB,EAAOr1qB,EAAIq1qB,KAAO,SAAU53rB,GAC/B,OAAOuiB,EAAIq1qB,KAAK5rsB,KAAMgU,EACvB,EAAI,SAAUA,GACb,OAAOuiB,EAAI5oC,OAAO8S,MAAO,GAAIuT,EAC9B,EAGIvgB,EAAO8iC,EAAI9iC,KAEXvL,EAAUquC,EAAIruC,QAEdk99B,EAAa,CAAC,EAEdz+9B,EAAWy+9B,EAAWz+9B,SAEtB84H,EAAS2l2B,EAAW759B,eAEpBy8P,EAAavoI,EAAO94H,SAEpB0+9B,EAAuBr9tB,EAAWhoP,KAAMvW,QAExC6pY,EAAU,CAAC,EAEX9gX,EAAa,SAAqBP,GAMhC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAIm2F,QACnD,EAGEqtJ,EAAW,SAAmBxjP,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAInrB,MACnC,EAGGsB,EAAWtB,EAAOsB,SAIjBk99B,EAA4B,CAC/B318B,MAAM,EACNq3F,KAAK,EACLhb,OAAO,EACPu53B,UAAU,GAGX,SAASC,EAASr33B,EAAMznG,EAAMiiH,GAG7B,IAAI3jH,EAAGsiC,EACNgzF,GAHD3R,EAAMA,GAAOvgH,GAGCskB,cAAe,UAG7B,GADA4tG,EAAO7qF,KAAO0+D,EACTznG,EACJ,IAAM1B,KAAKsg+B,GAYVh+7B,EAAM5gC,EAAM1B,IAAO0B,EAAK+W,cAAgB/W,EAAK+W,aAAczY,KAE1Ds1H,EAAO18G,aAAc5Y,EAAGsiC,GAI3BqhF,EAAIn1D,KAAKs8C,YAAawqB,GAAS3yH,WAAWkoG,YAAayqB,EACxD,CAGD,SAASmr2B,EAAQxz8B,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxCmz8B,EAAYz+9B,EAASqZ,KAAMiS,KAAW,gBAC/BA,CACT,CAOA,IACCuyD,EAAU,QAGV8wL,EAAS,SAAUhuI,EAAUx+F,GAI5B,OAAO,IAAIwsO,EAAO7gQ,GAAGs3D,KAAMu7D,EAAUx+F,EACtC,EAyVD,SAASoiM,EAAaj5M,GAMrB,IAAIle,IAAWke,GAAO,WAAYA,GAAOA,EAAIle,OAC5C4b,EAAO818B,EAAQxz8B,GAEhB,OAAKO,EAAYP,KAASwjP,EAAUxjP,KAIpB,UAATtC,GAA+B,IAAX5b,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOke,EAChE,CAtWAqjP,EAAO7gQ,GAAK6gQ,EAAOv1P,UAAY,CAG9ButG,OAAQ9oC,EAERpkE,YAAak1P,EAGbvhQ,OAAQ,EAER0vN,QAAS,WACR,OAAOhpN,EAAMuF,KAAML,KACpB,EAIAnM,IAAK,SAAUoqC,GAGd,OAAY,MAAPA,EACGnjC,EAAMuF,KAAML,MAIbi+B,EAAM,EAAIj+B,KAAMi+B,EAAMj+B,KAAK5L,QAAW4L,KAAMi+B,EACpD,EAIA8n7B,UAAW,SAAU92pB,GAGpB,IAAIppS,EAAM8vO,EAAO7jP,MAAO9R,KAAKS,cAAewuT,GAM5C,OAHAppS,EAAImg8B,WAAahm9B,KAGV6lB,CACR,EAGAjV,KAAM,SAAU1B,GACf,OAAOymP,EAAO/kP,KAAM5Q,KAAMkP,EAC3B,EAEAnc,IAAK,SAAUmc,GACd,OAAOlP,KAAK+l9B,UAAWpwtB,EAAO5iQ,IAAKiN,KAAM,SAAU0jQ,EAAMr+Q,GACxD,OAAO6pB,EAAS7O,KAAMqjQ,EAAMr+Q,EAAGq+Q,EAChC,GACD,EAEA5oQ,MAAO,WACN,OAAOkF,KAAK+l9B,UAAWjr9B,EAAMgG,MAAOd,KAAM7L,WAC3C,EAEAq6D,MAAO,WACN,OAAOxuD,KAAKuZ,GAAI,EACjB,EAEA26B,KAAM,WACL,OAAOl0C,KAAKuZ,IAAK,EAClB,EAEA0s8B,KAAM,WACL,OAAOjm9B,KAAK+l9B,UAAWpwtB,EAAOuwtB,KAAMlm9B,KAAM,SAAUmm9B,EAAO9g+B,GAC1D,OAASA,EAAI,GAAM,CACpB,GACD,EAEA+g+B,IAAK,WACJ,OAAOpm9B,KAAK+l9B,UAAWpwtB,EAAOuwtB,KAAMlm9B,KAAM,SAAUmm9B,EAAO9g+B,GAC1D,OAAOA,EAAI,CACZ,GACD,EAEAk0B,GAAI,SAAUl0B,GACb,IAAIoK,EAAMuQ,KAAK5L,OACd4xB,GAAK3gC,GAAMA,EAAI,EAAIoK,EAAM,GAC1B,OAAOuQ,KAAK+l9B,UAAW//7B,GAAK,GAAKA,EAAIv2B,EAAM,CAAEuQ,KAAMgmB,IAAQ,GAC5D,EAEAt5B,IAAK,WACJ,OAAOsT,KAAKgm9B,YAAchm9B,KAAKS,aAChC,EAIA3M,KAAMA,EACNV,KAAMwjC,EAAIxjC,KACV25B,OAAQ6J,EAAI7J,QAGb4oO,EAAO3yJ,OAAS2yJ,EAAO7gQ,GAAGkuG,OAAS,WAClC,IAAIpzG,EAAS2D,EAAM8zG,EAAK/V,EAAM+03B,EAAaph8B,EAC1Cl3B,EAASoG,UAAW,IAAO,CAAC,EAC5B9O,EAAI,EACJ+O,EAASD,UAAUC,OACnBqiQ,GAAO,EAsBR,IAnBuB,kBAAX1oQ,IACX0oQ,EAAO1oQ,EAGPA,EAASoG,UAAW9O,IAAO,CAAC,EAC5BA,KAIsB,iBAAX0I,GAAwB8kB,EAAY9kB,KAC/CA,EAAS,CAAC,GAIN1I,IAAM+O,IACVrG,EAASiS,KACT3a,KAGOA,EAAI+O,EAAQ/O,IAGnB,GAAqC,OAA9BuK,EAAUuE,UAAW9O,IAG3B,IAAMkO,KAAQ3D,EACb0hG,EAAO1hG,EAAS2D,GAIF,cAATA,GAAwBxF,IAAWujG,IAKnCmlK,GAAQnlK,IAAUqkK,EAAOjrC,cAAep5H,KAC1C+03B,EAAc/x9B,MAAMyb,QAASuhF,MAC/B+V,EAAMt5G,EAAQwF,GAIb0xB,EADIoh8B,IAAgB/x9B,MAAMyb,QAASs3F,GAC3B,GACIg/2B,GAAgB1wtB,EAAOjrC,cAAerjH,GAG1CA,EAFA,CAAC,EAIVg/2B,GAAc,EAGdt49B,EAAQwF,GAASoiQ,EAAO3yJ,OAAQyzJ,EAAMxxO,EAAOqsE,SAGzBx6F,IAATw6F,IACXvjG,EAAQwF,GAAS+9F,IAOrB,OAAOvjG,CACR,EAEA4nQ,EAAO3yJ,OAAQ,CAGd+5J,QAAS,UAAal4L,EAAUr/E,KAAKm+F,UAAW5/F,QAAS,MAAO,IAGhE+36B,SAAS,EAET7x5B,MAAO,SAAUknI,GAChB,MAAM,IAAI5pI,MAAO4pI,EAClB,EAEAvhI,KAAM,WAAY,EAElB86M,cAAe,SAAUp4M,GACxB,IAAI4S,EAAO+5L,EAIX,SAAM3sM,GAAgC,oBAAzBtrB,EAASqZ,KAAMiS,KAI5B4S,EAAQ6/M,EAAUzyN,MASK,mBADvB2sM,EAAOn/F,EAAOz/G,KAAM6kB,EAAO,gBAAmBA,EAAMzkB,cACf4nP,EAAWhoP,KAAM4+M,KAAWymwB,GAClE,EAEAY,cAAe,SAAUh08B,GACxB,IAAI/e,EAEJ,IAAMA,KAAQ+e,EACb,OAAO,EAER,OAAO,CACR,EAIAi08B,WAAY,SAAU/33B,EAAM5+F,EAASo5G,GACpC682B,EAASr33B,EAAM,CAAEnC,MAAOz8F,GAAWA,EAAQy8F,OAAS2c,EACrD,EAEAp4F,KAAM,SAAU0B,EAAKpD,GACpB,IAAI9a,EAAQ/O,EAAI,EAEhB,GAAKkmO,EAAaj5M,GAEjB,IADAle,EAASke,EAAIle,OACL/O,EAAI+O,IACqC,IAA3C8a,EAAS7O,KAAMiS,EAAKjtB,GAAKA,EAAGitB,EAAKjtB,IADnBA,UAMpB,IAAMA,KAAKitB,EACV,IAAgD,IAA3CpD,EAAS7O,KAAMiS,EAAKjtB,GAAKA,EAAGitB,EAAKjtB,IACrC,MAKH,OAAOitB,CACR,EAGAk08B,UAAW,SAAU5v7B,EAAKkpL,GACzB,IAAIj6L,EAAMi6L,GAAW,GAarB,OAXY,MAAPlpL,IACC20L,EAAazhO,OAAQ8sC,IACzB++N,EAAO7jP,MAAO+T,EACE,iBAAR+Q,EACP,CAAEA,GAAQA,GAGX9iC,EAAKuM,KAAMwlB,EAAK+Q,IAIX/Q,CACR,EAEA0vM,QAAS,SAAUmuC,EAAM9sO,EAAKvxC,GAC7B,OAAc,MAAPuxC,GAAe,EAAIruC,EAAQ8X,KAAMu2B,EAAK8sO,EAAMr+Q,EACpD,EAIAysB,MAAO,SAAU08C,EAAO6uB,GAKvB,IAJA,IAAI5tF,GAAO4tF,EAAOjpF,OACjB4xB,EAAI,EACJ3gC,EAAImpE,EAAMp6D,OAEH4xB,EAAIv2B,EAAKu2B,IAChBwoC,EAAOnpE,KAAQg4F,EAAQr3D,GAKxB,OAFAwoC,EAAMp6D,OAAS/O,EAERmpE,CACR,EAEA035B,KAAM,SAAUj3pB,EAAO//S,EAAU+nM,GAShC,IARA,IACChlL,EAAU,GACV5sC,EAAI,EACJ+O,EAAS66T,EAAM76T,OACfqy9B,GAAkBxvwB,EAIX5xN,EAAI+O,EAAQ/O,KACA6pB,EAAU+/S,EAAO5pU,GAAKA,KAChBoh+B,GACxBx07B,EAAQn+B,KAAMm7T,EAAO5pU,IAIvB,OAAO4sC,CACR,EAGAl/B,IAAK,SAAUk8T,EAAO//S,EAAUyoD,GAC/B,IAAIvjE,EAAQzO,EACXN,EAAI,EACJwgC,EAAM,GAGP,GAAK0lM,EAAa0jG,GAEjB,IADA76T,EAAS66T,EAAM76T,OACP/O,EAAI+O,EAAQ/O,IAGL,OAFdM,EAAQupB,EAAU+/S,EAAO5pU,GAAKA,EAAGsyE,KAGhC9xC,EAAI/xB,KAAMnO,QAMZ,IAAMN,KAAK4pU,EAGI,OAFdtpU,EAAQupB,EAAU+/S,EAAO5pU,GAAKA,EAAGsyE,KAGhC9xC,EAAI/xB,KAAMnO,GAMb,OAAOsmtB,EAAMpmrB,EACd,EAGA4iK,KAAM,EAINkrM,QAASA,IAGa,mBAAXnvY,SACXmxQ,EAAO7gQ,GAAItQ,OAAO0d,UAAa00B,EAAKpyC,OAAO0d,WAI5CyzP,EAAO/kP,KAAM,uEAAuE1vB,MAAO,KAC3F,SAAUyZ,EAAIpH,GACbky9B,EAAY,WAAaly9B,EAAO,KAAQA,EAAKnL,aAC9C,GAkBA,IAAI4ye,EAWJ,SAAY7ze,GACZ,IAAI9B,EACHsuY,EACA+ylB,EACAjktB,EACAkktB,EACAC,EACApj3B,EACAysN,EACA42pB,EACAC,EACAC,EAGAC,EACAv+9B,EACAw+9B,EACAC,EACAC,EACAC,EACAn17B,EACAzqC,EAGAu1Q,EAAU,SAAW,EAAI,IAAIl0P,KAC7Bw+8B,EAAelg+B,EAAOsB,SACtB6+9B,EAAU,EACV9l9B,EAAO,EACP+l9B,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUhu9B,EAAGC,GAIxB,OAHKD,IAAMC,IACVkt9B,GAAe,GAET,CACR,EAGAjn2B,EAAS,CAAK,EAAEl0H,eAChBgrC,EAAM,GACNv0B,EAAMu0B,EAAIv0B,IACVwl9B,EAAajx7B,EAAI9iC,KACjBA,EAAO8iC,EAAI9iC,KACXgH,EAAQ87B,EAAI97B,MAIZvS,EAAU,SAAUqF,EAAM81Q,GAGzB,IAFA,IAAIr+Q,EAAI,EACPoK,EAAM7B,EAAKwG,OACJ/O,EAAIoK,EAAKpK,IAChB,GAAKuI,EAAMvI,KAAQq+Q,EAClB,OAAOr+Q,EAGT,OAAQ,CACT,EAEAyi+B,EAAW,6HAMXC,EAAa,sBAGbrksB,EAAa,0BAA4BqksB,EACxC,0CAGD9y9B,EAAa,MAAQ8y9B,EAAa,KAAOrksB,EAAa,OAASqksB,EAG9D,gBAAkBA,EAIlB,2DAA6DrksB,EAAa,OAC1EqksB,EAAa,OAEdC,EAAU,KAAOtksB,EAAP,wFAOoBzuR,EAPpB,eAcVgz9B,EAAc,IAAIn27B,OAAQi27B,EAAa,IAAK,KAC5CvpR,EAAQ,IAAI1sqB,OAAQ,IAAMi27B,EAAa,8BACtCA,EAAa,KAAM,KAEpBG,EAAS,IAAIp27B,OAAQ,IAAMi27B,EAAa,KAAOA,EAAa,KAC5DI,EAAe,IAAIr27B,OAAQ,IAAMi27B,EAAa,WAAaA,EAAa,IAAMA,EAC7E,KACDK,EAAW,IAAIt27B,OAAQi27B,EAAa,MAEpCM,EAAU,IAAIv27B,OAAQk27B,GACtBM,EAAc,IAAIx27B,OAAQ,IAAM4xP,EAAa,KAE7C6ksB,EAAY,CACX,GAAM,IAAIz27B,OAAQ,MAAQ4xP,EAAa,KACvC,MAAS,IAAI5xP,OAAQ,QAAU4xP,EAAa,KAC5C,IAAO,IAAI5xP,OAAQ,KAAO4xP,EAAa,SACvC,KAAQ,IAAI5xP,OAAQ,IAAM78B,GAC1B,OAAU,IAAI68B,OAAQ,IAAMk27B,GAC5B,MAAS,IAAIl27B,OAAQ,yDACpBi27B,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACpD,KAAQ,IAAIj27B,OAAQ,OAASg27B,EAAW,KAAM,KAI9C,aAAgB,IAAIh27B,OAAQ,IAAMi27B,EACjC,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDS,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAIh37B,OAAQ,uBAAyBi27B,EAAa,uBAAwB,KACtFgB,GAAY,SAAUtowB,EAAQuowB,GAC7B,IAAI//wB,EAAO,KAAOwX,EAAO3lN,MAAO,GAAM,MAEtC,OAAOku9B,IASN//wB,EAAO,EACN1oM,OAAOysF,aAAci8G,EAAO,OAC5B1oM,OAAOysF,aAAci8G,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAC5D,EAIAggxB,GAAa,sDACbC,GAAa,SAAUp12B,EAAIq12B,GAC1B,OAAKA,EAGQ,OAAPr12B,EACG,IAIDA,EAAGh5G,MAAO,GAAI,GAAM,KAC1Bg5G,EAAGluB,WAAYkuB,EAAG1/G,OAAS,GAAIpN,SAAU,IAAO,IAI3C,KAAO8sH,CACf,EAMAs12B,GAAgB,WACfpC,GACD,EAEAqC,GAAqBC,GACpB,SAAU5ltB,GACT,OAAyB,IAAlBA,EAAK11N,UAAqD,aAAhC01N,EAAKv7Q,SAASC,aAChD,EACA,CAAE2/E,IAAK,aAAcjgF,KAAM,WAI7B,IACCgM,EAAKgN,MACF81B,EAAM97B,EAAMuF,KAAMgn9B,EAAal91B,YACjCk91B,EAAal91B,YAMdvzF,EAAKyw7B,EAAal91B,WAAW/1H,QAASq0G,QACvC,CAAE,MAAQzjH,GACT8O,EAAO,CAAEgN,MAAO81B,EAAIxiC,OAGnB,SAAUrG,EAAQ44jB,GACjBkha,EAAW/m9B,MAAO/S,EAAQ+M,EAAMuF,KAAMsmjB,GACvC,EAIA,SAAU54jB,EAAQ44jB,GAKjB,IAJA,IAAI3giB,EAAIj4B,EAAOqG,OACd/O,EAAI,EAGK0I,EAAQi4B,KAAQ2giB,EAAKthkB,OAC/B0I,EAAOqG,OAAS4xB,EAAI,CACrB,EAEF,CAEA,SAASg1c,GAAQrzW,EAAUx+F,EAAS22L,EAASr7E,GAC5C,IAAIthJ,EAAGkC,EAAGq+Q,EAAMo0c,EAAK9ztB,EAAO6nT,EAAQ09qB,EACnCC,EAAarg8B,GAAWA,EAAQliC,cAGhCwhH,EAAWt/E,EAAUA,EAAQs/E,SAAW,EAKzC,GAHAq3G,EAAUA,GAAW,GAGI,iBAAbn4F,IAA0BA,GACxB,IAAblf,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOq3G,EAIR,IAAMr7E,IACLui1B,EAAa797B,GACbA,EAAUA,GAAW1gC,EAEhBy+9B,GAAiB,CAIrB,GAAkB,KAAbz+2B,IAAqBzkH,EAAQ4k+B,EAAWvj8B,KAAMsiG,IAGlD,GAAOxkI,EAAIa,EAAO,IAGjB,GAAkB,IAAbykH,EAAiB,CACrB,KAAOi7J,EAAOv6O,EAAQmzC,eAAgBn5E,IAUrC,OAAO28N,EALP,GAAK4jD,EAAK3lQ,KAAO5a,EAEhB,OADA28N,EAAQhsN,KAAM4vQ,GACP5jD,CAOV,MAKC,GAAK0pwB,IAAgB9ltB,EAAO8ltB,EAAWlt5B,eAAgBn5E,KACtDqE,EAAU2hC,EAASu6O,IACnBA,EAAK3lQ,KAAO5a,EAGZ,OADA28N,EAAQhsN,KAAM4vQ,GACP5jD,MAKH,IAAK97N,EAAO,GAElB,OADA8P,EAAKgN,MAAOg/M,EAAS32L,EAAQqhK,qBAAsB7iE,IAC5Cm4F,EAGD,IAAO38N,EAAIa,EAAO,KAAS2vY,EAAQlsF,wBACzCt+Q,EAAQs+Q,uBAGR,OADA3zS,EAAKgN,MAAOg/M,EAAS32L,EAAQs+Q,uBAAwBtkT,IAC9C28N,CACR,CAID,GAAK6zK,EAAQiie,MACX+xH,EAAwBhg2B,EAAW,QACjCw/1B,IAAcA,EAAUjl+B,KAAMylI,MAIlB,IAAblf,GAAqD,WAAnCt/E,EAAQhhC,SAASC,eAA+B,CAYpE,GAVAmh+B,EAAc5h2B,EACd6h2B,EAAarg8B,EASK,IAAbs/E,IACF2/2B,EAASlm+B,KAAMylI,IAAcwg2B,EAAajm+B,KAAMylI,IAAe,CAqBjE,KAlBA6h2B,EAAaX,GAAS3m+B,KAAMylI,IAAc8h2B,GAAatg8B,EAAQnhC,aAC9DmhC,KAImBA,GAAYwqW,EAAQhrW,SAGhCmvrB,EAAM3urB,EAAQrrB,aAAc,OAClCg6sB,EAAMA,EAAI/ztB,QAASkl+B,GAAYC,IAE/B//7B,EAAQlrB,aAAc,KAAQ65sB,EAAM/6c,IAMtC13Q,GADAwmT,EAAS+6qB,EAAUj/1B,IACRvzH,OACH/O,KACPwmT,EAAQxmT,IAAQyytB,EAAM,IAAMA,EAAM,UAAa,IAC9C4xQ,GAAY79qB,EAAQxmT,IAEtBkk+B,EAAc19qB,EAAO3tS,KAAM,IAC5B,CAEA,IAIC,OAHApK,EAAKgN,MAAOg/M,EACX0pwB,EAAWlqtB,iBAAkBiqtB,IAEvBzpwB,CACR,CAAE,MAAQ6pwB,GACThC,EAAwBhg2B,GAAU,EACnC,CAAE,QACImwlB,IAAQ/6c,GACZ5zO,EAAQhrB,gBAAiB,KAE3B,CACD,CACD,CAID,OAAO8xT,EAAQtoM,EAAS5jI,QAASy6sB,EAAO,MAAQr1qB,EAAS22L,EAASr7E,EACnE,CAQA,SAAS+i1B,KACR,IAAIn99B,EAAO,GAYX,OAVA,SAASkiC,EAAO/hC,EAAK7E,GAQpB,OALK0E,EAAKyJ,KAAMtJ,EAAM,KAAQk89B,EAAKkD,oBAG3Br97B,EAAOliC,EAAK69C,SAEX3b,EAAO/hC,EAAM,KAAQ7E,CAC/B,CAED,CAMA,SAASkk+B,GAAc/09B,GAEtB,OADAA,EAAIioQ,IAAY,EACTjoQ,CACR,CAMA,SAASg19B,GAAQh19B,GAChB,IAAIyoC,EAAK90C,EAASskB,cAAe,YAEjC,IACC,QAASjY,EAAIyoC,EACd,CAAE,MAAQv4C,GACT,OAAO,CACR,CAAE,QAGIu4C,EAAGv1C,YACPu1C,EAAGv1C,WAAWkoG,YAAa3yD,GAI5BA,EAAK,IACN,CACD,CAOA,SAASws7B,GAAWhh2B,EAAO7qE,GAI1B,IAHA,IAAItnB,EAAMmyF,EAAM7nI,MAAO,KACtBmE,EAAIuxC,EAAIxiC,OAED/O,KACPqh+B,EAAKsD,WAAYpz7B,EAAKvxC,IAAQ64D,CAEhC,CAQA,SAAS+r6B,GAAcrw9B,EAAGC,GACzB,IAAI4oC,EAAM5oC,GAAKD,EACdyjD,EAAO5a,GAAsB,IAAf7oC,EAAE6uG,UAAiC,IAAf5uG,EAAE4uG,UACnC7uG,EAAEmm7B,YAAclm7B,EAAEkm7B,YAGpB,GAAK1i4B,EACJ,OAAOA,EAIR,GAAK5a,EACJ,KAAUA,EAAMA,EAAIimF,aACnB,GAAKjmF,IAAQ5oC,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,CACjB,CAMA,SAASsw9B,GAAmBl68B,GAC3B,OAAO,SAAU0zP,GAEhB,MAAgB,UADLA,EAAKv7Q,SAASC,eACEs7Q,EAAK1zP,OAASA,CAC1C,CACD,CAMA,SAASm68B,GAAoBn68B,GAC5B,OAAO,SAAU0zP,GAChB,IAAInwQ,EAAOmwQ,EAAKv7Q,SAASC,cACzB,OAAkB,UAATmL,GAA6B,WAATA,IAAuBmwQ,EAAK1zP,OAASA,CACnE,CACD,CAMA,SAASo68B,GAAsBp86B,GAG9B,OAAO,SAAU01N,GAKhB,MAAK,SAAUA,EASTA,EAAK17Q,aAAgC,IAAlB07Q,EAAK11N,SAGvB,UAAW01N,EACV,UAAWA,EAAK17Q,WACb07Q,EAAK17Q,WAAWgmD,WAAaA,EAE7B01N,EAAK11N,WAAaA,EAMpB01N,EAAK62L,aAAevsZ,GAI1B01N,EAAK62L,cAAgBvsZ,GACrBq76B,GAAoB3ltB,KAAW11N,EAG1B01N,EAAK11N,WAAaA,EAKd,UAAW01N,GACfA,EAAK11N,WAAaA,CAK3B,CACD,CAMA,SAASq86B,GAAwBv19B,GAChC,OAAO+09B,GAAc,SAAUlo4B,GAE9B,OADAA,GAAYA,EACLko4B,GAAc,SAAUpl1B,EAAMxyG,GAMpC,IALA,IAAIjM,EACHsk8B,EAAex19B,EAAI,GAAI2vI,EAAKrwI,OAAQutF,GACpCt8F,EAAIil+B,EAAal29B,OAGV/O,KACFo/I,EAAQz+G,EAAIsk8B,EAAcjl+B,MAC9Bo/I,EAAMz+G,KAASiM,EAASjM,GAAMy+G,EAAMz+G,IAGvC,EACD,EACD,CAOA,SAASyj8B,GAAatg8B,GACrB,OAAOA,QAAmD,IAAjCA,EAAQqhK,sBAAwCrhK,CAC1E,CAirCA,IAAM9jC,KA9qCNsuY,EAAUqnG,GAAOrnG,QAAU,CAAC,EAO5BgzlB,EAAQ3rf,GAAO2rf,MAAQ,SAAUjjtB,GAChC,IAAIgT,EAAYhT,EAAK02K,aACpB6siB,GAAYvjtB,EAAKz8Q,eAAiBy8Q,GAAOh7Q,gBAK1C,OAAQ8/9B,EAAMtm+B,KAAMw0R,GAAauwsB,GAAWA,EAAQ9+9B,UAAY,OACjE,EAOA6+9B,EAAchsf,GAAOgsf,YAAc,SAAUjg+B,GAC5C,IAAIwj+B,EAAYC,EACfxh3B,EAAMjiH,EAAOA,EAAKE,eAAiBF,EAAOsg+B,EAO3C,OAAKr+2B,GAAOvgH,GAA6B,IAAjBugH,EAAIP,UAAmBO,EAAItgH,iBAMnDu+9B,GADAx+9B,EAAWugH,GACQtgH,gBACnBw+9B,GAAkBP,EAAOl+9B,GAQpB4+9B,GAAgB5+9B,IAClB+h+B,EAAY/h+B,EAASvB,cAAiBsj+B,EAAUxg+B,MAAQwg+B,IAGrDA,EAAUty9B,iBACdsy9B,EAAUty9B,iBAAkB,SAAUkx9B,IAAe,GAG1CoB,EAAUjliB,aACrBiliB,EAAUjliB,YAAa,WAAY6jiB,KASrCz1lB,EAAQhrW,MAAQmh8B,GAAQ,SAAUvs7B,GAEjC,OADA0p7B,EAAQ923B,YAAa5yD,GAAK4yD,YAAa1nG,EAASskB,cAAe,aACzB,IAAxBwwB,EAAG+hO,mBACf/hO,EAAG+hO,iBAAkB,uBAAwBlrQ,MAChD,GAQAu/X,EAAQ1+X,WAAa609B,GAAQ,SAAUvs7B,GAEtC,OADAA,EAAGusE,UAAY,KACPvsE,EAAGz/B,aAAc,YAC1B,GAMA61X,EAAQnpM,qBAAuBs/xB,GAAQ,SAAUvs7B,GAEhD,OADAA,EAAG4yD,YAAa1nG,EAASytR,cAAe,MAChC34O,EAAGitJ,qBAAsB,KAAMp2L,MACxC,GAGAu/X,EAAQlsF,uBAAyBkhrB,EAAQzm+B,KAAMuG,EAASg/S,wBAMxDksF,EAAQo1T,QAAU+gS,GAAQ,SAAUvs7B,GAEnC,OADA0p7B,EAAQ923B,YAAa5yD,GAAKx/B,GAAKg/P,GACvBt0Q,EAASsgR,oBAAsBtgR,EAASsgR,kBAAmBhM,GAAU3oQ,MAC9E,GAGKu/X,EAAQo1T,SACZ29R,EAAKz19B,OAAa,GAAI,SAAU8M,GAC/B,IAAI0s9B,EAAS1s9B,EAAGha,QAAS+k+B,GAAWC,IACpC,OAAO,SAAUrltB,GAChB,OAAOA,EAAK5lQ,aAAc,QAAW2s9B,CACtC,CACD,EACA/D,EAAK7r9B,KAAW,GAAI,SAAUkD,EAAIorB,GACjC,QAAuC,IAA3BA,EAAQmzC,gBAAkC4q5B,EAAiB,CACtE,IAAIxjtB,EAAOv6O,EAAQmzC,eAAgBv+D,GACnC,OAAO2lQ,EAAO,CAAEA,GAAS,EAC1B,CACD,IAEAgjtB,EAAKz19B,OAAa,GAAK,SAAU8M,GAChC,IAAI0s9B,EAAS1s9B,EAAGha,QAAS+k+B,GAAWC,IACpC,OAAO,SAAUrltB,GAChB,IAAI38Q,OAAwC,IAA1B28Q,EAAKgntB,kBACtBhntB,EAAKgntB,iBAAkB,MACxB,OAAO3j+B,GAAQA,EAAKpB,QAAU8k+B,CAC/B,CACD,EAIA/D,EAAK7r9B,KAAW,GAAI,SAAUkD,EAAIorB,GACjC,QAAuC,IAA3BA,EAAQmzC,gBAAkC4q5B,EAAiB,CACtE,IAAIng+B,EAAM1B,EAAG4pU,EACZvrD,EAAOv6O,EAAQmzC,eAAgBv+D,GAEhC,GAAK2lQ,EAAO,CAIX,IADA38Q,EAAO28Q,EAAKgntB,iBAAkB,QACjB3j+B,EAAKpB,QAAUoY,EAC3B,MAAO,CAAE2lQ,GAMV,IAFAurD,EAAQ9lS,EAAQ4/O,kBAAmBhrQ,GACnC1Y,EAAI,EACMq+Q,EAAOurD,EAAO5pU,MAEvB,IADA0B,EAAO28Q,EAAKgntB,iBAAkB,QACjB3j+B,EAAKpB,QAAUoY,EAC3B,MAAO,CAAE2lQ,EAGZ,CAEA,MAAO,EACR,CACD,GAIDgjtB,EAAK7r9B,KAAY,IAAI84X,EAAQnpM,qBAC5B,SAAUxoG,EAAK74D,GACd,YAA6C,IAAjCA,EAAQqhK,qBACZrhK,EAAQqhK,qBAAsBxoG,GAG1B2xS,EAAQiie,IACZzs0B,EAAQm2O,iBAAkBt9K,QAD3B,CAGR,EAEA,SAAUA,EAAK74D,GACd,IAAIu6O,EACH1+O,EAAM,GACN3/B,EAAI,EAGJy6N,EAAU32L,EAAQqhK,qBAAsBxoG,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAU0hL,EAAO5jD,EAASz6N,MACF,IAAlBq+Q,EAAKj7J,UACTzjF,EAAIlxB,KAAM4vQ,GAIZ,OAAO1+O,CACR,CACA,OAAO86L,CACR,EAGD4mwB,EAAK7r9B,KAAc,MAAI84X,EAAQlsF,wBAA0B,SAAU39L,EAAW3gF,GAC7E,QAA+C,IAAnCA,EAAQs+Q,wBAA0Cy/qB,EAC7D,OAAO/97B,EAAQs+Q,uBAAwB39L,EAEzC,EAQAs92B,EAAgB,GAOhBD,EAAY,IAELxzlB,EAAQiie,IAAM+yH,EAAQzm+B,KAAMuG,EAAS62Q,qBAI3CwqtB,GAAQ,SAAUvs7B,GAEjB,IAAIt7C,EAOJgl+B,EAAQ923B,YAAa5yD,GAAKqtJ,UAAY,UAAYmyE,EAAZ,qBACpBA,EADoB,kEAQjCx/N,EAAG+hO,iBAAkB,wBAAyBlrQ,QAClD+y9B,EAAUrz9B,KAAM,SAAWi09B,EAAa,gBAKnCxq7B,EAAG+hO,iBAAkB,cAAelrQ,QACzC+y9B,EAAUrz9B,KAAM,MAAQi09B,EAAa,aAAeD,EAAW,KAI1Dvq7B,EAAG+hO,iBAAkB,QAAUvC,EAAU,MAAO3oQ,QACrD+y9B,EAAUrz9B,KAAM,OAQjB7R,EAAQwG,EAASskB,cAAe,UAC1B9O,aAAc,OAAQ,IAC5Bs/B,EAAG4yD,YAAaluG,GACVs7C,EAAG+hO,iBAAkB,aAAclrQ,QACxC+y9B,EAAUrz9B,KAAM,MAAQi09B,EAAa,QAAUA,EAAa,KAC3DA,EAAa,gBAMTxq7B,EAAG+hO,iBAAkB,YAAalrQ,QACvC+y9B,EAAUrz9B,KAAM,YAMXypC,EAAG+hO,iBAAkB,KAAOvC,EAAU,MAAO3oQ,QAClD+y9B,EAAUrz9B,KAAM,YAKjBypC,EAAG+hO,iBAAkB,QACrB6ntB,EAAUrz9B,KAAM,cACjB,GAEAg29B,GAAQ,SAAUvs7B,GACjBA,EAAGqtJ,UAAY,oFAKf,IAAI3oM,EAAQwG,EAASskB,cAAe,SACpC9qB,EAAMgc,aAAc,OAAQ,UAC5Bs/B,EAAG4yD,YAAaluG,GAAQgc,aAAc,OAAQ,KAIzCs/B,EAAG+hO,iBAAkB,YAAalrQ,QACtC+y9B,EAAUrz9B,KAAM,OAASi09B,EAAa,eAKW,IAA7Cxq7B,EAAG+hO,iBAAkB,YAAalrQ,QACtC+y9B,EAAUrz9B,KAAM,WAAY,aAK7Bmz9B,EAAQ923B,YAAa5yD,GAAKyQ,UAAW,EACc,IAA9CzQ,EAAG+hO,iBAAkB,aAAclrQ,QACvC+y9B,EAAUrz9B,KAAM,WAAY,aAK7BypC,EAAG+hO,iBAAkB,QACrB6ntB,EAAUrz9B,KAAM,OACjB,KAGM6/X,EAAQsnG,gBAAkB0tf,EAAQzm+B,KAAQ+vC,EAAUg17B,EAAQh17B,SAClEg17B,EAAQ57c,uBACR47c,EAAQ37c,oBACR27c,EAAQ59T,kBACR49T,EAAQ17c,qBAERu+c,GAAQ,SAAUvs7B,GAIjBo2V,EAAQg3lB,kBAAoB147B,EAAQ5xB,KAAMk9B,EAAI,KAI9CtL,EAAQ5xB,KAAMk9B,EAAI,aAClB6p7B,EAActz9B,KAAM,KAAMk09B,EAC3B,GAGDb,EAAYA,EAAU/y9B,QAAU,IAAI09B,OAAQq17B,EAAUjp9B,KAAM,MAC5Dkp9B,EAAgBA,EAAchz9B,QAAU,IAAI09B,OAAQs17B,EAAclp9B,KAAM,MAIxEqs9B,EAAa5B,EAAQzm+B,KAAM+k+B,EAAQnotB,yBAKnCt3Q,EAAW+i+B,GAAc5B,EAAQzm+B,KAAM+k+B,EAAQz/9B,UAC9C,SAAUoS,EAAGC,GACZ,IAAI+w9B,EAAuB,IAAfhx9B,EAAE6uG,SAAiB7uG,EAAElR,gBAAkBkR,EAClDix9B,EAAMhx9B,GAAKA,EAAE7R,WACd,OAAO4R,IAAMix9B,MAAWA,GAAwB,IAAjBA,EAAIpi3B,YAClCmi3B,EAAMpj+B,SACLoj+B,EAAMpj+B,SAAUqj+B,GAChBjx9B,EAAEklQ,yBAA8D,GAAnCllQ,EAAEklQ,wBAAyB+rtB,IAE3D,EACA,SAAUjx9B,EAAGC,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAE7R,YACf,GAAK6R,IAAMD,EACV,OAAO,EAIV,OAAO,CACR,EAMDgu9B,EAAY2C,EACZ,SAAU3w9B,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAkt9B,GAAe,EACR,EAIR,IAAIrn7B,GAAW9lC,EAAEklQ,yBAA2BjlQ,EAAEilQ,wBAC9C,OAAKp/N,IAgBU,GAPfA,GAAY9lC,EAAE3S,eAAiB2S,KAASC,EAAE5S,eAAiB4S,GAC1DD,EAAEklQ,wBAAyBjlQ,GAG3B,KAIG85X,EAAQm3lB,cAAgBjx9B,EAAEilQ,wBAAyBllQ,KAAQ8lC,EAOzD9lC,GAAKnR,GAAYmR,EAAE3S,eAAiBog+B,GACxC7/9B,EAAU6/9B,EAAczt9B,IAChB,EAOJC,GAAKpR,GAAYoR,EAAE5S,eAAiBog+B,GACxC7/9B,EAAU6/9B,EAAcxt9B,GACjB,EAIDit9B,EACJv+9B,EAASu+9B,EAAWlt9B,GAAMrR,EAASu+9B,EAAWjt9B,GAChD,EAGe,EAAV6lC,GAAe,EAAI,EAC3B,EACA,SAAU9lC,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAkt9B,GAAe,EACR,EAGR,IAAItk7B,EACHp9C,EAAI,EACJ0l+B,EAAMnx9B,EAAE5R,WACR6i+B,EAAMhx9B,EAAE7R,WACRgoW,EAAK,CAAEp2V,GACPyn1B,EAAK,CAAExn1B,GAGR,IAAMkx9B,IAAQF,EAMb,OAAOjx9B,GAAKnR,GAAY,EACvBoR,GAAKpR,EAAW,EAEhBsi+B,GAAO,EACPF,EAAM,EACN/D,EACEv+9B,EAASu+9B,EAAWlt9B,GAAMrR,EAASu+9B,EAAWjt9B,GAChD,EAGK,GAAKkx9B,IAAQF,EACnB,OAAOZ,GAAcrw9B,EAAGC,GAKzB,IADA4oC,EAAM7oC,EACI6oC,EAAMA,EAAIz6C,YACnBgoW,EAAG74Q,QAAS10C,GAGb,IADAA,EAAM5oC,EACI4oC,EAAMA,EAAIz6C,YACnBq51B,EAAGlqwB,QAAS10C,GAIb,KAAQutT,EAAI3qW,KAAQg81B,EAAIh81B,IACvBA,IAGD,OAAOA,EAGN4k+B,GAAcj6nB,EAAI3qW,GAAKg81B,EAAIh81B,IAO3B2qW,EAAI3qW,IAAOgi+B,GAAgB,EAC3BhmI,EAAIh81B,IAAOgi+B,EAAe,EAE1B,CACF,EAEO5+9B,GA/cCA,CAgdT,EAEAuye,GAAO/oc,QAAU,SAAUmmQ,EAAMznS,GAChC,OAAOqqe,GAAQ5iM,EAAM,KAAM,KAAMznS,EAClC,EAEAqqe,GAAOC,gBAAkB,SAAUv3N,EAAM00B,GAGxC,GAFA4urB,EAAatjtB,GAERiwH,EAAQsnG,iBAAmBisf,IAC9BS,EAAwBvvrB,EAAO,QAC7BgvrB,IAAkBA,EAAcll+B,KAAMk2S,OACtC+urB,IAAkBA,EAAUjl+B,KAAMk2S,IAErC,IACC,IAAIvyQ,EAAMoM,EAAQ5xB,KAAMqjQ,EAAM00B,GAG9B,GAAKvyQ,GAAO8tW,EAAQg3lB,mBAInBjntB,EAAKj7Q,UAAuC,KAA3Bi7Q,EAAKj7Q,SAASggH,SAC/B,OAAO5iF,CAET,CAAE,MAAQ7gC,GACT2i+B,EAAwBvvrB,GAAM,EAC/B,CAGD,OAAO4iM,GAAQ5iM,EAAM3vS,EAAU,KAAM,CAAEi7Q,IAAStvQ,OAAS,CAC1D,EAEA4me,GAAOxze,SAAW,SAAU2hC,EAASu6O,GAUpC,OAHOv6O,EAAQliC,eAAiBkiC,IAAa1gC,GAC5Cu+9B,EAAa797B,GAEP3hC,EAAU2hC,EAASu6O,EAC3B,EAEAs3N,GAAOzjO,KAAO,SAAUmM,EAAMnwQ,IAOtBmwQ,EAAKz8Q,eAAiBy8Q,IAAUj7Q,GACtCu+9B,EAAatjtB,GAGd,IAAI5uQ,EAAK4x9B,EAAKsD,WAAYz29B,EAAKnL,eAG9Bu/B,EAAM7yB,GAAMgrH,EAAOz/G,KAAMqm9B,EAAKsD,WAAYz29B,EAAKnL,eAC9C0M,EAAI4uQ,EAAMnwQ,GAAO2z9B,QACjBpw9B,EAEF,YAAeA,IAAR6wB,EACNA,EACAgsW,EAAQ1+X,aAAeiy9B,EACtBxjtB,EAAK5lQ,aAAcvK,IACjBo0B,EAAM+7O,EAAKgntB,iBAAkBn39B,KAAYo0B,EAAIqj8B,UAC9Crj8B,EAAIhiC,MACJ,IACJ,EAEAq1e,GAAOv6Q,OAAS,SAAU26vB,GACzB,OAASA,EAAM,IAAKr39B,QAASkl+B,GAAYC,GAC1C,EAEAluf,GAAO/wd,MAAQ,SAAUknI,GACxB,MAAM,IAAI5pI,MAAO,0CAA4C4pI,EAC9D,EAMA6pV,GAAOiwf,WAAa,SAAUnrwB,GAC7B,IAAI4jD,EACHwntB,EAAa,GACbll8B,EAAI,EACJ3gC,EAAI,EAOL,GAJA0h+B,GAAgBpzlB,EAAQw3lB,iBACxBrE,GAAanzlB,EAAQy3lB,YAActrwB,EAAQhlN,MAAO,GAClDglN,EAAQ1sN,KAAMw09B,GAETb,EAAe,CACnB,KAAUrjtB,EAAO5jD,EAASz6N,MACpBq+Q,IAAS5jD,EAASz6N,KACtB2gC,EAAIkl8B,EAAWp39B,KAAMzO,IAGvB,KAAQ2gC,KACP85L,EAAQ/yL,OAAQm+7B,EAAYll8B,GAAK,EAEnC,CAMA,OAFA8g8B,EAAY,KAELhnwB,CACR,EAMA2iD,EAAUu4N,GAAOv4N,QAAU,SAAUiB,GACpC,IAAI38Q,EACH8+B,EAAM,GACNxgC,EAAI,EACJojH,EAAWi7J,EAAKj7J,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBi7J,EAAKtF,YAChB,OAAOsF,EAAKtF,YAIZ,IAAMsF,EAAOA,EAAK96I,WAAY86I,EAAMA,EAAOA,EAAKh7I,YAC/C7iG,GAAO48O,EAASiB,EAGnB,MAAO,GAAkB,IAAbj7J,GAA+B,IAAbA,EAC7B,OAAOi7J,EAAKb,eAnBZ,KAAU97Q,EAAO28Q,EAAMr+Q,MAGtBwgC,GAAO48O,EAAS17Q,GAqBlB,OAAO8+B,CACR,EAEA6g8B,EAAO1rf,GAAOqwf,UAAY,CAGzBzB,YAAa,GAEb0B,aAAczB,GAEd7l+B,MAAOuk+B,EAEPyB,WAAY,CAAC,EAEbnv9B,KAAM,CAAC,EAEPymU,SAAU,CACT,IAAK,CAAEv5P,IAAK,aAAcvZ,OAAO,GACjC,IAAK,CAAEuZ,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBvZ,OAAO,GACtC,IAAK,CAAEuZ,IAAK,oBAGbwj5B,UAAW,CACV,KAAQ,SAAUvn+B,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAID,QAAS+k+B,GAAWC,IAG5C/k+B,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKD,QAAS+k+B,GAAWC,IAEpB,OAAf/k+B,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAM8W,MAAO,EAAG,EACxB,EAEA,MAAS,SAAU9W,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAIoE,cAEU,QAA7BpE,EAAO,GAAI8W,MAAO,EAAG,IAGnB9W,EAAO,IACZg3e,GAAO/wd,MAAOjmB,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClBg3e,GAAO/wd,MAAOjmB,EAAO,IAGfA,CACR,EAEA,OAAU,SAAUA,GACnB,IAAIwn+B,EACHC,GAAYzn+B,EAAO,IAAOA,EAAO,GAElC,OAAKuk+B,EAAmB,MAAErm+B,KAAM8B,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9Byn+B,GAAYpD,EAAQnm+B,KAAMup+B,KAGnCD,EAAS5E,EAAU6E,GAAU,MAG7BD,EAASC,EAASlj+B,QAAS,IAAKkj+B,EAASr39B,OAASo39B,GAAWC,EAASr39B,UAGxEpQ,EAAO,GAAMA,EAAO,GAAI8W,MAAO,EAAG0w9B,GAClCxn+B,EAAO,GAAMyn+B,EAAS3w9B,MAAO,EAAG0w9B,IAI1Bxn+B,EAAM8W,MAAO,EAAG,GACxB,GAGD7J,OAAQ,CAEP,IAAO,SAAUy69B,GAChB,IAAIvj+B,EAAWuj+B,EAAiB3n+B,QAAS+k+B,GAAWC,IAAY3g+B,cAChE,MAA4B,MAArBsj+B,EACN,WACC,OAAO,CACR,EACA,SAAUhotB,GACT,OAAOA,EAAKv7Q,UAAYu7Q,EAAKv7Q,SAASC,gBAAkBD,CACzD,CACF,EAEA,MAAS,SAAU2hH,GAClB,IAAItY,EAAU+13B,EAAYz92B,EAAY,KAEtC,OAAOtY,IACJA,EAAU,IAAI1/D,OAAQ,MAAQi27B,EAC/B,IAAMj+2B,EAAY,IAAMi+2B,EAAa,SAAaR,EACjDz92B,EAAW,SAAU45J,GACpB,OAAOlyK,EAAQtvG,KACY,iBAAnBwhR,EAAK55J,WAA0B45J,EAAK55J,gBACd,IAAtB45J,EAAK5lQ,cACX4lQ,EAAK5lQ,aAAc,UACpB,GAEJ,EACF,EAEA,KAAQ,SAAUvK,EAAM+rP,EAAU7kP,GACjC,OAAO,SAAUipQ,GAChB,IAAIvwQ,EAAS6ne,GAAOzjO,KAAMmM,EAAMnwQ,GAEhC,OAAe,MAAVJ,EACgB,OAAbmsP,GAEFA,IAINnsP,GAAU,GAIU,MAAbmsP,EAAmBnsP,IAAWsH,EACvB,OAAb6kP,EAAoBnsP,IAAWsH,EAClB,OAAb6kP,EAAoB7kP,GAAqC,IAA5BtH,EAAO5K,QAASkS,GAChC,OAAb6kP,EAAoB7kP,GAAStH,EAAO5K,QAASkS,IAAW,EAC3C,OAAb6kP,EAAoB7kP,GAAStH,EAAO2H,OAAQL,EAAMrG,UAAaqG,EAClD,OAAb6kP,GAAsB,IAAMnsP,EAAOpP,QAASkk+B,EAAa,KAAQ,KAAM1/9B,QAASkS,IAAW,EAC9E,OAAb6kP,IAAoBnsP,IAAWsH,GAAStH,EAAO2H,MAAO,EAAGL,EAAMrG,OAAS,KAAQqG,EAAQ,KAI1F,CACD,EAEA,MAAS,SAAUuV,EAAM2wQ,EAAMgrsB,EAAWn95B,EAAOta,GAChD,IAAI63T,EAAgC,QAAvB/7V,EAAKlV,MAAO,EAAG,GAC3Bm4e,EAA+B,SAArBjje,EAAKlV,OAAQ,GACvB8w9B,EAAkB,YAATjrsB,EAEV,OAAiB,IAAVnyN,GAAwB,IAATta,EAGrB,SAAUwvN,GACT,QAASA,EAAK17Q,UACf,EAEA,SAAU07Q,EAAMvtO,EAAUypI,GACzB,IAAIrzI,EAAOs/7B,EAAaC,EAAY/k+B,EAAMgl+B,EAAWt/9B,EACpDs7E,EAAMgkS,IAAWknI,EAAU,cAAgB,kBAC3Cxrf,EAASi8Q,EAAK17Q,WACduL,EAAOq49B,GAAUlotB,EAAKv7Q,SAASC,cAC/B4j+B,GAAYpszB,IAAQgszB,EACpBvu6B,GAAO,EAER,GAAK51D,EAAS,CAGb,GAAKskX,EAAS,CACb,KAAQhkS,GAAM,CAEb,IADAhhF,EAAO28Q,EACG38Q,EAAOA,EAAMghF,IACtB,GAAK6j5B,EACJ7k+B,EAAKoB,SAASC,gBAAkBmL,EACd,IAAlBxM,EAAK0hH,SAEL,OAAO,EAKTh8G,EAAQs7E,EAAe,SAAT/3D,IAAoBvjB,GAAS,aAC5C,CACA,OAAO,CACR,CAKA,GAHAA,EAAQ,CAAEwmf,EAAUxrf,EAAOmhI,WAAanhI,EAAO02Q,WAG1C80O,GAAW+4e,GAkBf,IAHA3u6B,GADA0u6B,GADAx/7B,GAHAs/7B,GAJAC,GADA/k+B,EAAOU,GACYs1Q,KAAeh2Q,EAAMg2Q,GAAY,CAAC,IAI3Bh2Q,EAAK6oZ,YAC5Bk8kB,EAAY/k+B,EAAK6oZ,UAAa,CAAC,IAEb5/X,IAAU,IACZ,KAAQs38B,GAAW/67B,EAAO,KACzBA,EAAO,GAC3BxlC,EAAOgl+B,GAAatk+B,EAAO0iI,WAAY4h2B,GAE7Bhl+B,IAASgl+B,GAAahl+B,GAAQA,EAAMghF,KAG3C1qB,EAAO0u6B,EAAY,IAAOt/9B,EAAM4V,OAGlC,GAAuB,IAAlBtb,EAAK0hH,YAAoBprD,GAAQt2D,IAAS28Q,EAAO,CACrDmotB,EAAa778B,GAAS,CAAEs38B,EAASyE,EAAW1u6B,GAC5C,KACD,OAwBD,GAlBK2u6B,IAaJ3u6B,EADA0u6B,GADAx/7B,GAHAs/7B,GAJAC,GADA/k+B,EAAO28Q,GACY3G,KAAeh2Q,EAAMg2Q,GAAY,CAAC,IAI3Bh2Q,EAAK6oZ,YAC5Bk8kB,EAAY/k+B,EAAK6oZ,UAAa,CAAC,IAEb5/X,IAAU,IACZ,KAAQs38B,GAAW/67B,EAAO,KAMhC,IAAT8wB,EAGJ,MAAUt2D,IAASgl+B,GAAahl+B,GAAQA,EAAMghF,KAC3C1qB,EAAO0u6B,EAAY,IAAOt/9B,EAAM4V,UAE3Bup9B,EACN7k+B,EAAKoB,SAASC,gBAAkBmL,EACd,IAAlBxM,EAAK0hH,cACHprD,IAGG2u6B,KAMJH,GALAC,EAAa/k+B,EAAMg2Q,KAChBh2Q,EAAMg2Q,GAAY,CAAC,IAIIh2Q,EAAK6oZ,YAC5Bk8kB,EAAY/k+B,EAAK6oZ,UAAa,CAAC,IAErB5/X,GAAS,CAAEs38B,EAASjq6B,IAG7Bt2D,IAAS28Q,MAUlB,OADArmN,GAAQnJ,KACQsa,GAAWnR,EAAOmR,IAAU,GAAKnR,EAAOmR,GAAS,CAClE,CACD,CACF,EAEA,OAAU,SAAUy95B,EAAQtq4B,GAM3B,IAAIttF,EACHS,EAAK4x9B,EAAKsB,QAASiE,IAAYvF,EAAKwF,WAAYD,EAAO7j+B,gBACtD4ye,GAAO/wd,MAAO,uBAAyBgi9B,GAKzC,OAAKn39B,EAAIioQ,GACDjoQ,EAAI6sF,GAIP7sF,EAAGV,OAAS,GAChBC,EAAO,CAAE439B,EAAQA,EAAQ,GAAItq4B,GACtB+k4B,EAAKwF,WAAWtg+B,eAAgBqg+B,EAAO7j+B,eAC7Cyh+B,GAAc,SAAUpl1B,EAAMxyG,GAI7B,IAHA,IAAI7f,EACH5lB,EAAUsI,EAAI2vI,EAAM9iD,GACpBt8F,EAAImH,EAAQ4H,OACL/O,KAEPo/I,EADAryH,EAAM7pB,EAASk8I,EAAMj4I,EAASnH,OACb4sC,EAAS7f,GAAQ5lB,EAASnH,GAE7C,GACA,SAAUq+Q,GACT,OAAO5uQ,EAAI4uQ,EAAM,EAAGrvQ,EACrB,GAGKS,CACR,GAGDkz9B,QAAS,CAGR,IAAO6B,GAAc,SAAUli2B,GAK9B,IAAI1lI,EAAQ,GACX69N,EAAU,GACV3pG,EAAU3S,EAASmkB,EAAS5jI,QAASy6sB,EAAO,OAE7C,OAAOrolB,EAAS4mJ,GACf8stB,GAAc,SAAUpl1B,EAAMxyG,EAASkE,EAAUypI,GAMhD,IALA,IAAI8jG,EACHyotB,EAAYh22B,EAASsuB,EAAM,KAAMm7B,EAAK,IACtCv6K,EAAIo/I,EAAKrwI,OAGF/O,MACAq+Q,EAAOyotB,EAAW9m+B,MACxBo/I,EAAMp/I,KAAS4sC,EAAS5sC,GAAMq+Q,GAGjC,GACA,SAAUA,EAAMvtO,EAAUypI,GAMzB,OALA39K,EAAO,GAAMyhR,EACbvtJ,EAASl0H,EAAO,KAAM29K,EAAKkgD,GAG3B79N,EAAO,GAAM,MACL69N,EAAQz9M,KACjB,CACF,GAEA,IAAOwn9B,GAAc,SAAUli2B,GAC9B,OAAO,SAAU+7I,GAChB,OAAOs3N,GAAQrzW,EAAU+7I,GAAOtvQ,OAAS,CAC1C,CACD,GAEA,SAAYy19B,GAAc,SAAU/57B,GAEnC,OADAA,EAAOA,EAAK/rC,QAAS+k+B,GAAWC,IACzB,SAAUrltB,GAChB,OAASA,EAAKtF,aAAeqE,EAASiB,IAASn7Q,QAASunC,IAAU,CACnE,CACD,GASA,KAAQ+57B,GAAc,SAAU97mB,GAO/B,OAJMu6mB,EAAYpm+B,KAAM6rX,GAAQ,KAC/BitH,GAAO/wd,MAAO,qBAAuB8jW,GAEtCA,EAAOA,EAAKhqX,QAAS+k+B,GAAWC,IAAY3g+B,cACrC,SAAUs7Q,GAChB,IAAI0otB,EACJ,GACC,GAAOA,EAAWlF,EACjBxjtB,EAAKqqG,KACLrqG,EAAK5lQ,aAAc,aAAgB4lQ,EAAK5lQ,aAAc,QAGtD,OADAsu9B,EAAWA,EAAShk+B,iBACA2lX,GAA2C,IAAnCq+mB,EAAS7j+B,QAASwlX,EAAO,YAE3CrqG,EAAOA,EAAK17Q,aAAkC,IAAlB07Q,EAAKj7J,UAC7C,OAAO,CACR,CACD,GAGA,OAAU,SAAUi7J,GACnB,IAAIp3Q,EAAOnF,EAAO8hG,UAAY9hG,EAAO8hG,SAAS38F,KAC9C,OAAOA,GAAQA,EAAKwO,MAAO,KAAQ4oQ,EAAK3lQ,EACzC,EAEA,KAAQ,SAAU2lQ,GACjB,OAAOA,IAASujtB,CACjB,EAEA,MAAS,SAAUvjtB,GAClB,OAAOA,IAASj7Q,EAAS6wb,iBACrB7wb,EAASmp6B,UAAYnp6B,EAASmp6B,gBAC7BlupB,EAAK1zP,MAAQ0zP,EAAKz1K,OAASy1K,EAAKuyD,SACtC,EAGA,QAAWm0pB,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAU1mtB,GAIpB,IAAIv7Q,EAAWu7Q,EAAKv7Q,SAASC,cAC7B,MAAsB,UAAbD,KAA0Bu7Q,EAAKsyC,SACxB,WAAb7tT,KAA2Bu7Q,EAAKf,QACpC,EAEA,SAAY,SAAUe,GASrB,OALKA,EAAK17Q,YAET07Q,EAAK17Q,WAAWm+T,eAGQ,IAAlBziD,EAAKf,QACb,EAGA,MAAS,SAAUe,GAMlB,IAAMA,EAAOA,EAAK96I,WAAY86I,EAAMA,EAAOA,EAAKh7I,YAC/C,GAAKg7I,EAAKj7J,SAAW,EACpB,OAAO,EAGT,OAAO,CACR,EAEA,OAAU,SAAUi7J,GACnB,OAAQgjtB,EAAKsB,QAAiB,MAAGtktB,EAClC,EAGA,OAAU,SAAUA,GACnB,OAAOgltB,EAAQxm+B,KAAMwhR,EAAKv7Q,SAC3B,EAEA,MAAS,SAAUu7Q,GAClB,OAAO+ktB,EAAQvm+B,KAAMwhR,EAAKv7Q,SAC3B,EAEA,OAAU,SAAUu7Q,GACnB,IAAInwQ,EAAOmwQ,EAAKv7Q,SAASC,cACzB,MAAgB,UAATmL,GAAkC,WAAdmwQ,EAAK1zP,MAA8B,WAATzc,CACtD,EAEA,KAAQ,SAAUmwQ,GACjB,IAAInM,EACJ,MAAuC,UAAhCmM,EAAKv7Q,SAASC,eACN,SAAds7Q,EAAK1zP,OAIuC,OAAxCunP,EAAOmM,EAAK5lQ,aAAc,UACN,SAAvBy5P,EAAKnvQ,cACR,EAGA,MAASii+B,GAAwB,WAChC,MAAO,CAAE,EACV,GAEA,KAAQA,GAAwB,SAAUgC,EAAej49B,GACxD,MAAO,CAAEA,EAAS,EACnB,GAEA,GAAMi29B,GAAwB,SAAUgC,EAAej49B,EAAQutF,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAWvtF,EAASutF,EAC7C,GAEA,KAAQ0o4B,GAAwB,SAAUC,EAAcl29B,GAEvD,IADA,IAAI/O,EAAI,EACAA,EAAI+O,EAAQ/O,GAAK,EACxBil+B,EAAax29B,KAAMzO,GAEpB,OAAOil+B,CACR,GAEA,IAAOD,GAAwB,SAAUC,EAAcl29B,GAEtD,IADA,IAAI/O,EAAI,EACAA,EAAI+O,EAAQ/O,GAAK,EACxBil+B,EAAax29B,KAAMzO,GAEpB,OAAOil+B,CACR,GAEA,GAAMD,GAAwB,SAAUC,EAAcl29B,EAAQutF,GAM7D,IALA,IAAIt8F,EAAIs8F,EAAW,EAClBA,EAAWvtF,EACXutF,EAAWvtF,EACVA,EACAutF,IACQt8F,GAAK,GACdil+B,EAAax29B,KAAMzO,GAEpB,OAAOil+B,CACR,GAEA,GAAMD,GAAwB,SAAUC,EAAcl29B,EAAQutF,GAE7D,IADA,IAAIt8F,EAAIs8F,EAAW,EAAIA,EAAWvtF,EAASutF,IACjCt8F,EAAI+O,GACbk29B,EAAax29B,KAAMzO,GAEpB,OAAOil+B,CACR,KAIF5D,EAAKsB,QAAe,IAAItB,EAAKsB,QAAc,GAGhC,CAAEjwmB,OAAO,EAAMrB,UAAU,EAAM3wO,MAAM,EAAM06B,UAAU,EAAMm/N,OAAO,GAC5E8mlB,EAAKsB,QAAS3i+B,GAAM6k+B,GAAmB7k+B,GAExC,IAAMA,IAAK,CAAEy3X,QAAQ,EAAMvmX,OAAO,GACjCmw9B,EAAKsB,QAAS3i+B,GAAM8k+B,GAAoB9k+B,GAIzC,SAAS6m+B,KAAc,CA0EvB,SAASxC,GAAYj43B,GAIpB,IAHA,IAAIpsG,EAAI,EACPoK,EAAMgiG,EAAOr9F,OACbuzH,EAAW,GACJtiI,EAAIoK,EAAKpK,IAChBsiI,GAAYl2B,EAAQpsG,GAAIM,MAEzB,OAAOgiI,CACR,CAEA,SAAS2h2B,GAAenz2B,EAASm22B,EAAYjh7B,GAC5C,IAAI08B,EAAMuk5B,EAAWvk5B,IACpBvvC,EAAO8z7B,EAAWxk+B,KAClB0C,EAAMguC,GAAQuvC,EACdwk5B,EAAmBlh7B,GAAgB,eAAR7gD,EAC3Bgi+B,EAAWhr9B,IAEZ,OAAO8q9B,EAAW995B,MAGjB,SAAUk1M,EAAMv6O,EAASy2I,GACxB,KAAU8jG,EAAOA,EAAM37L,IACtB,GAAuB,IAAlB27L,EAAKj7J,UAAkB8j3B,EAC3B,OAAOp22B,EAASutJ,EAAMv6O,EAASy2I,GAGjC,OAAO,CACR,EAGA,SAAU8jG,EAAMv6O,EAASy2I,GACxB,IAAI6szB,EAAUZ,EAAaC,EAC1BY,EAAW,CAAEpF,EAASkF,GAGvB,GAAK5szB,GACJ,KAAU8jG,EAAOA,EAAM37L,IACtB,IAAuB,IAAlB27L,EAAKj7J,UAAkB8j3B,IACtBp22B,EAASutJ,EAAMv6O,EAASy2I,GAC5B,OAAO,OAKV,KAAU8jG,EAAOA,EAAM37L,IACtB,GAAuB,IAAlB27L,EAAKj7J,UAAkB8j3B,EAQ3B,GAHAV,GAJAC,EAAapotB,EAAM3G,KAAe2G,EAAM3G,GAAY,CAAC,IAI3B2G,EAAKksI,YAC5Bk8kB,EAAYpotB,EAAKksI,UAAa,CAAC,GAE7Bp3W,GAAQA,IAASkrO,EAAKv7Q,SAASC,cACnCs7Q,EAAOA,EAAM37L,IAAS27L,MAChB,KAAO+otB,EAAWZ,EAAarh+B,KACrCii+B,EAAU,KAAQnF,GAAWmF,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHAZ,EAAarh+B,GAAQki+B,EAGdA,EAAU,GAAMv22B,EAASutJ,EAAMv6O,EAASy2I,GAC9C,OAAO,CAET,CAIH,OAAO,CACR,CACF,CAEA,SAAS+szB,GAAgBlorB,GACxB,OAAOA,EAASrwS,OAAS,EACxB,SAAUsvQ,EAAMv6O,EAASy2I,GAExB,IADA,IAAIv6K,EAAIo/S,EAASrwS,OACT/O,KACP,IAAMo/S,EAAUp/S,GAAKq+Q,EAAMv6O,EAASy2I,GACnC,OAAO,EAGT,OAAO,CACR,EACA6kI,EAAU,EACZ,CAWA,SAASvgI,GAAUiozB,EAAWp59B,EAAK9B,EAAQk4B,EAASy2I,GAOnD,IANA,IAAI8jG,EACHkptB,EAAe,GACfvn+B,EAAI,EACJoK,EAAM089B,EAAU/39B,OAChBm4N,EAAgB,MAAPx5N,EAEF1N,EAAIoK,EAAKpK,KACTq+Q,EAAOyotB,EAAW9m+B,MAClB4L,IAAUA,EAAQyyQ,EAAMv6O,EAASy2I,KACtCgtzB,EAAa949B,KAAM4vQ,GACdn3C,GACJx5N,EAAIe,KAAMzO,KAMd,OAAOun+B,CACR,CAEA,SAASC,GAAYtB,EAAW5j2B,EAAUxR,EAAS222B,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY/vtB,KAC/B+vtB,EAAaD,GAAYC,IAErBC,IAAeA,EAAYhwtB,KAC/BgwtB,EAAaF,GAAYE,EAAYC,IAE/BnD,GAAc,SAAUpl1B,EAAMq7E,EAAS32L,EAASy2I,GACtD,IAAIxkE,EAAM/1G,EAAGq+Q,EACZuptB,EAAS,GACTC,EAAU,GACVC,EAAcrtwB,EAAQ1rN,OAGtB66T,EAAQxqL,GA5CX,SAA2B9c,EAAU6uZ,EAAU12T,GAG9C,IAFA,IAAIz6N,EAAI,EACPoK,EAAM+mhB,EAASpihB,OACR/O,EAAIoK,EAAKpK,IAChB21e,GAAQrzW,EAAU6uZ,EAAUnxhB,GAAKy6N,GAElC,OAAOA,CACR,CAqCmBstwB,CACfzl2B,GAAY,IACZx+F,EAAQs/E,SAAW,CAAEt/E,GAAYA,EACjC,IAIDkk8B,GAAY9B,IAAe9m1B,GAAS9c,EAEnCsnM,EADA/qJ,GAAU+qJ,EAAOg+pB,EAAQ1B,EAAWpi8B,EAASy2I,GAG9C0tzB,EAAan32B,EAGZ422B,IAAgBto1B,EAAO8m1B,EAAY4B,GAAeL,GAGjD,GAGAhtwB,EACDutwB,EAQF,GALKl32B,GACJA,EAASk32B,EAAWC,EAAYnk8B,EAASy2I,GAIrCktzB,EAMJ,IALA1x3B,EAAO8oE,GAAUopzB,EAAYJ,GAC7BJ,EAAY1x3B,EAAM,GAAIjyE,EAASy2I,GAG/Bv6K,EAAI+1G,EAAKhnG,OACD/O,MACAq+Q,EAAOtoK,EAAM/1G,MACnBio+B,EAAYJ,EAAS7n+B,MAAWgo+B,EAAWH,EAAS7n+B,IAAQq+Q,IAK/D,GAAKj/H,GACJ,GAAKso1B,GAAcxB,EAAY,CAC9B,GAAKwB,EAAa,CAKjB,IAFA3x3B,EAAO,GACP/1G,EAAIio+B,EAAWl59B,OACP/O,MACAq+Q,EAAO4ptB,EAAYjo+B,KAGzB+1G,EAAKtnG,KAAQu59B,EAAWho+B,GAAMq+Q,GAGhCqptB,EAAY,KAAQO,EAAa,GAAMly3B,EAAMwkE,EAC9C,CAIA,IADAv6K,EAAIio+B,EAAWl59B,OACP/O,MACAq+Q,EAAO4ptB,EAAYjo+B,MACvB+1G,EAAO2x3B,EAAaxk+B,EAASk8I,EAAMi/H,GAASuptB,EAAQ5n+B,KAAS,IAE/Do/I,EAAMrpC,KAAY0kH,EAAS1kH,GAASsoK,GAGvC,OAIA4ptB,EAAappzB,GACZopzB,IAAextwB,EACdwtwB,EAAWvg8B,OAAQog8B,EAAaG,EAAWl59B,QAC3Ck59B,GAEGP,EACJA,EAAY,KAAMjtwB,EAASwtwB,EAAY1tzB,GAEvC9rK,EAAKgN,MAAOg/M,EAASwtwB,EAGxB,EACD,CAEA,SAASC,GAAmB973B,GAyB3B,IAxBA,IAAI+73B,EAAcr32B,EAASnwF,EAC1Bv2B,EAAMgiG,EAAOr9F,OACbq59B,EAAkB/G,EAAKplpB,SAAU7vO,EAAQ,GAAIzhF,MAC7C098B,EAAmBD,GAAmB/G,EAAKplpB,SAAU,KACrDj8U,EAAIoo+B,EAAkB,EAAI,EAG1BE,EAAerE,GAAe,SAAU5ltB,GACvC,OAAOA,IAAS8ptB,CACjB,EAAGE,GAAkB,GACrBE,EAAkBtE,GAAe,SAAU5ltB,GAC1C,OAAOn7Q,EAASil+B,EAAc9ptB,IAAU,CACzC,EAAGgqtB,GAAkB,GACrBjprB,EAAW,CAAE,SAAU/gC,EAAMv6O,EAASy2I,GACrC,IAAI/5I,GAAS4n8B,IAAqB7tzB,GAAOz2I,IAAY097B,MAClD2G,EAAerk8B,GAAUs/E,SAC1Bkl3B,EAAcjqtB,EAAMv6O,EAASy2I,GAC7BguzB,EAAiBlqtB,EAAMv6O,EAASy2I,IAIlC,OADA4tzB,EAAe,KACR3n8B,CACR,GAEOxgC,EAAIoK,EAAKpK,IAChB,GAAO8wH,EAAUuw2B,EAAKplpB,SAAU7vO,EAAQpsG,GAAI2qB,MAC3Cy0R,EAAW,CAAE6krB,GAAeqD,GAAgBlorB,GAAYtuL,QAClD,CAIN,IAHAA,EAAUuw2B,EAAKz19B,OAAQwgG,EAAQpsG,GAAI2qB,MAAOlP,MAAO,KAAM2wF,EAAQpsG,GAAI4sC,UAGrD8qO,GAAY,CAIzB,IADA/2O,IAAM3gC,EACE2gC,EAAIv2B,IACNi39B,EAAKplpB,SAAU7vO,EAAQzrE,GAAIhW,MADhBgW,KAKjB,OAAO6m8B,GACNxn+B,EAAI,GAAKsn+B,GAAgBlorB,GACzBp/S,EAAI,GAAKqk+B,GAGTj43B,EACE32F,MAAO,EAAGzV,EAAI,GACd2I,OAAQ,CAAErI,MAAgC,MAAzB8rG,EAAQpsG,EAAI,GAAI2qB,KAAe,IAAM,MACtDjsB,QAASy6sB,EAAO,MAClBrolB,EACA9wH,EAAI2gC,GAAKun8B,GAAmB973B,EAAO32F,MAAOzV,EAAG2gC,IAC7CA,EAAIv2B,GAAO899B,GAAqB973B,EAASA,EAAO32F,MAAOkrB,IACvDA,EAAIv2B,GAAOi69B,GAAYj43B,GAEzB,CACAgzM,EAAS3wS,KAAMqiH,EAChB,CAGD,OAAOw22B,GAAgBlorB,EACxB,CAmTA,OAtpBAynrB,GAAW9r9B,UAAYsm9B,EAAK1krB,QAAU0krB,EAAKsB,QAC3CtB,EAAKwF,WAAa,IAAIA,GAEtBtF,EAAW5rf,GAAO4rf,SAAW,SAAUj/1B,EAAUkm2B,GAChD,IAAIrh+B,EAASxI,EAAOytG,EAAQzhF,EAC3B898B,EAAOjirB,EAAQkirB,EACfxl7B,EAASk/6B,EAAY9/1B,EAAW,KAEjC,GAAKp/E,EACJ,OAAOsl7B,EAAY,EAAItl7B,EAAOztC,MAAO,GAOtC,IAJAgz9B,EAAQnm2B,EACRkkL,EAAS,GACTkirB,EAAarH,EAAK6E,UAEVuC,GAAQ,CA2Bf,IAAM998B,KAxBAxjB,KAAaxI,EAAQkk+B,EAAO7i8B,KAAMyo8B,MAClC9p+B,IAGJ8p+B,EAAQA,EAAMhz9B,MAAO9W,EAAO,GAAIoQ,SAAY059B,GAE7CjirB,EAAO/3S,KAAQ29F,EAAS,KAGzBjlG,GAAU,GAGHxI,EAAQmk+B,EAAa9i8B,KAAMyo8B,MACjCth+B,EAAUxI,EAAMkkD,QAChBupD,EAAO39F,KAAM,CACZnO,MAAO6G,EAGPwjB,KAAMhsB,EAAO,GAAID,QAASy6sB,EAAO,OAElCsvR,EAAQA,EAAMhz9B,MAAOtO,EAAQ4H,SAIhBsy9B,EAAKz19B,SACXjN,EAAQuk+B,EAAWv48B,GAAOqV,KAAMyo8B,KAAgBC,EAAY/98B,MAChEhsB,EAAQ+p+B,EAAY/98B,GAAQhsB,MAC9BwI,EAAUxI,EAAMkkD,QAChBupD,EAAO39F,KAAM,CACZnO,MAAO6G,EACPwjB,KAAMA,EACNiiB,QAASjuC,IAEV8p+B,EAAQA,EAAMhz9B,MAAOtO,EAAQ4H,SAI/B,IAAM5H,EACL,KAEF,CAKA,OAAOqh+B,EACNC,EAAM159B,OACN059B,EACC9yf,GAAO/wd,MAAO09G,GAGd8/1B,EAAY9/1B,EAAUkkL,GAAS/wS,MAAO,EACzC,EA2ZA0oG,EAAUw3X,GAAOx3X,QAAU,SAAUmkB,EAAU3jI,GAC9C,IAAIqB,EACH2o+B,EAAc,GACdC,EAAkB,GAClB1l7B,EAASm/6B,EAAe//1B,EAAW,KAEpC,IAAMp/E,EAAS,CAOd,IAJMvkD,IACLA,EAAQ4i+B,EAAUj/1B,IAEnBtiI,EAAIrB,EAAMoQ,OACF/O,MACPkjD,EAASgl7B,GAAmBvp+B,EAAOqB,KACtB03Q,GACZixtB,EAAYl69B,KAAMy0C,GAElB0l7B,EAAgBn69B,KAAMy0C,GAKxBA,EAASm/6B,EACR//1B,EArJH,SAAmCsm2B,EAAiBD,GACnD,IAAIE,EAAQF,EAAY559B,OAAS,EAChC+59B,EAAYF,EAAgB759B,OAAS,EACrCg69B,EAAe,SAAU3p1B,EAAMt7G,EAASy2I,EAAKkgD,EAASuuwB,GACrD,IAAI3qtB,EAAM19O,EAAGmwF,EACZm42B,EAAe,EACfjp+B,EAAI,IACJ8m+B,EAAY1n1B,GAAQ,GACpB8p1B,EAAa,GACbC,EAAgB3H,EAGhB53pB,EAAQxqL,GAAQ0p1B,GAAazH,EAAK7r9B,KAAY,IAAG,IAAKwz9B,GAGtDI,EAAkBnH,GAA4B,MAAjBkH,EAAwB,EAAIhp+B,KAAKm+F,UAAY,GAC1El0F,EAAMw/T,EAAM76T,OAcb,IAZKi69B,IAMJxH,EAAmB197B,GAAW1gC,GAAY0gC,GAAWkl8B,GAM9Chp+B,IAAMoK,GAAgC,OAAvBi0Q,EAAOurD,EAAO5pU,IAAeA,IAAM,CACzD,GAAK8o+B,GAAazqtB,EAAO,CAWxB,IAVA19O,EAAI,EAMEmD,GAAWu6O,EAAKz8Q,eAAiBwB,IACtCu+9B,EAAatjtB,GACb9jG,GAAOsnzB,GAEE/w2B,EAAU832B,EAAiBjo8B,MACpC,GAAKmwF,EAASutJ,EAAMv6O,GAAW1gC,EAAUm3K,GAAQ,CAChDkgD,EAAQhsN,KAAM4vQ,GACd,KACD,CAEI2qtB,IACJ/G,EAAUmH,EAEZ,CAGKP,KAGGxqtB,GAAQvtJ,GAAWutJ,IACzB4qtB,IAII7p1B,GACJ0n1B,EAAUr49B,KAAM4vQ,GAGnB,CAaA,GATA4qtB,GAAgBjp+B,EASX6o+B,GAAS7o+B,IAAMip+B,EAAe,CAElC,IADAto8B,EAAI,EACMmwF,EAAU632B,EAAaho8B,MAChCmwF,EAASg22B,EAAWoC,EAAYpl8B,EAASy2I,GAG1C,GAAKn7B,EAAO,CAGX,GAAK6p1B,EAAe,EACnB,KAAQjp+B,KACC8m+B,EAAW9m+B,IAAOkp+B,EAAYlp+B,KACrCkp+B,EAAYlp+B,GAAMgd,EAAIhC,KAAMy/M,IAM/ByuwB,EAAarqzB,GAAUqqzB,EACxB,CAGAz69B,EAAKgN,MAAOg/M,EAASyuwB,GAGhBF,IAAc5p1B,GAAQ8p1B,EAAWn69B,OAAS,GAC5Ck69B,EAAeN,EAAY559B,OAAW,GAExC4me,GAAOiwf,WAAYnrwB,EAErB,CAQA,OALKuuwB,IACJ/G,EAAUmH,EACV5H,EAAmB2H,GAGbrC,CACR,EAED,OAAO+B,EACNrE,GAAcuE,GACdA,CACF,CA2BGM,CAA0BT,EAAiBD,IAI5Czl7B,EAAOo/E,SAAWA,CACnB,CACA,OAAOp/E,CACR,EAWA0nR,EAAS+qK,GAAO/qK,OAAS,SAAUtoM,EAAUx+F,EAAS22L,EAASr7E,GAC9D,IAAIp/I,EAAGosG,EAAQxtF,EAAO+L,EAAMnV,EAC3B8/Q,EAA+B,mBAAbhzJ,GAA2BA,EAC7C3jI,GAASygJ,GAAQmi1B,EAAYj/1B,EAAWgzJ,EAAShzJ,UAAYA,GAM9D,GAJAm4F,EAAUA,GAAW,GAIC,IAAjB97N,EAAMoQ,OAAe,CAIzB,IADAq9F,EAASztG,EAAO,GAAMA,EAAO,GAAI8W,MAAO,IAC5B1G,OAAS,GAAsC,QAA/B6P,EAAQwtF,EAAQ,IAAMzhF,MAC5B,IAArBmZ,EAAQs/E,UAAkBy+2B,GAAkBR,EAAKplpB,SAAU7vO,EAAQ,GAAIzhF,MAAS,CAIhF,KAFAmZ,GAAYu97B,EAAK7r9B,KAAW,GAAGoJ,EAAMguB,QAAS,GAC5CluC,QAAS+k+B,GAAWC,IAAa5/7B,IAAa,IAAM,IAErD,OAAO22L,EAGI66D,IACXxxP,EAAUA,EAAQnhC,YAGnB2/H,EAAWA,EAAS7sH,MAAO22F,EAAOvpD,QAAQviD,MAAMyO,OACjD,CAIA,IADA/O,EAAIkj+B,EAA0B,aAAErm+B,KAAMylI,GAAa,EAAIl2B,EAAOr9F,OACtD/O,MACP4e,EAAQwtF,EAAQpsG,IAGXqh+B,EAAKplpB,SAAYtxT,EAAO/L,EAAM+L,QAGnC,IAAOnV,EAAO6r9B,EAAK7r9B,KAAMmV,MAGjBy0H,EAAO5pI,EACboJ,EAAMguB,QAAS,GAAIluC,QAAS+k+B,GAAWC,IACvCF,GAAS3m+B,KAAMuvG,EAAQ,GAAIzhF,OAAUy58B,GAAatg8B,EAAQnhC,aACzDmhC,IACI,CAKL,GAFAsoE,EAAO1kE,OAAQ1nC,EAAG,KAClBsiI,EAAW8c,EAAKrwI,QAAUs19B,GAAYj43B,IAGrC,OADA39F,EAAKgN,MAAOg/M,EAASr7E,GACdq7E,EAGR,KACD,CAGH,CAWA,OAPE66D,GAAYn3K,EAASmkB,EAAU3jI,IAChCygJ,EACAt7G,GACC+97B,EACDpnwB,GACC32L,GAAW0/7B,GAAS3m+B,KAAMylI,IAAc8h2B,GAAatg8B,EAAQnhC,aAAgBmhC,GAExE22L,CACR,EAKA6zK,EAAQy3lB,WAAarutB,EAAQ77Q,MAAO,IAAKkS,KAAMw09B,GAAY1p9B,KAAM,MAAS6+P,EAI1E42H,EAAQw3lB,mBAAqBpE,EAG7BC,IAIArzlB,EAAQm3lB,aAAehB,GAAQ,SAAUvs7B,GAGxC,OAA4E,EAArEA,EAAGuhO,wBAAyBr2Q,EAASskB,cAAe,YAC5D,GAKM+88B,GAAQ,SAAUvs7B,GAEvB,OADAA,EAAGqtJ,UAAY,mBACiC,MAAzCrtJ,EAAGqrF,WAAW9qH,aAAc,OACpC,IACCis9B,GAAW,yBAA0B,SAAUrmtB,EAAMnwQ,EAAMoz9B,GAC1D,IAAMA,EACL,OAAOjjtB,EAAK5lQ,aAAcvK,EAA6B,SAAvBA,EAAKnL,cAA2B,EAAI,EAEtE,GAKKurY,EAAQ1+X,YAAe609B,GAAQ,SAAUvs7B,GAG9C,OAFAA,EAAGqtJ,UAAY,WACfrtJ,EAAGqrF,WAAW3qH,aAAc,QAAS,IACY,KAA1Cs/B,EAAGqrF,WAAW9qH,aAAc,QACpC,IACCis9B,GAAW,QAAS,SAAUrmtB,EAAMyxI,EAAOwxkB,GAC1C,IAAMA,GAAyC,UAAhCjjtB,EAAKv7Q,SAASC,cAC5B,OAAOs7Q,EAAKpzP,YAEd,GAKKw58B,GAAQ,SAAUvs7B,GACvB,OAAwC,MAAjCA,EAAGz/B,aAAc,WACzB,IACCis9B,GAAWjC,EAAU,SAAUpktB,EAAMnwQ,EAAMoz9B,GAC1C,IAAIh/7B,EACJ,IAAMg/7B,EACL,OAAwB,IAAjBjjtB,EAAMnwQ,GAAkBA,EAAKnL,eACjCu/B,EAAM+7O,EAAKgntB,iBAAkBn39B,KAAYo0B,EAAIqj8B,UAC9Crj8B,EAAIhiC,MACJ,IAEJ,GAGMq1e,EAEL,CA54EF,CA44EK7ze,GAILwuQ,EAAO96P,KAAOmge,EACdrlO,EAAOyiC,KAAO4iM,EAAOqwf,UAGrB11tB,EAAOyiC,KAAM,KAAQziC,EAAOyiC,KAAK4vrB,QACjCrytB,EAAOs1tB,WAAat1tB,EAAOu1F,OAAS8vI,EAAOiwf,WAC3Ct1tB,EAAO7lO,KAAOkrc,EAAOv4N,QACrB9M,EAAOg5tB,SAAW3zf,EAAO2rf,MACzBhxtB,EAAOnuQ,SAAWwze,EAAOxze,SACzBmuQ,EAAOi5tB,eAAiB5zf,EAAOv6Q,OAK/B,IAAI14I,EAAM,SAAU27L,EAAM37L,EAAK+tZ,GAI9B,IAHA,IAAItpe,EAAU,GACbqi+B,OAAqB/39B,IAAVg/d,GAEFpyN,EAAOA,EAAM37L,KAA6B,IAAlB27L,EAAKj7J,UACtC,GAAuB,IAAlBi7J,EAAKj7J,SAAiB,CAC1B,GAAKom3B,GAAYl5tB,EAAQ+N,GAAOz+I,GAAI6wW,GACnC,MAEDtpe,EAAQsH,KAAM4vQ,EACf,CAED,OAAOl3Q,CACR,EAGIg/f,EAAW,SAAU3qf,EAAG6iQ,GAG3B,IAFA,IAAIl3Q,EAAU,GAENqU,EAAGA,EAAIA,EAAE6nH,YACI,IAAf7nH,EAAE4nG,UAAkB5nG,IAAM6iQ,GAC9Bl3Q,EAAQsH,KAAM+M,GAIhB,OAAOrU,CACR,EAGIsi+B,EAAgBn5tB,EAAOyiC,KAAKp0S,MAAM+q+B,aAItC,SAAS5m+B,EAAUu7Q,EAAMnwQ,GAEvB,OAAOmwQ,EAAKv7Q,UAAYu7Q,EAAKv7Q,SAASC,gBAAkBmL,EAAKnL,aAE/D,CACA,IAAI4m+B,EAAa,kEAKjB,SAASC,EAAQt+9B,EAAUu+9B,EAAWlyvB,GACrC,OAAKnqN,EAAYq88B,GACTv5tB,EAAOuwtB,KAAMv19B,EAAU,SAAU+yQ,EAAMr+Q,GAC7C,QAAS6p+B,EAAU7u9B,KAAMqjQ,EAAMr+Q,EAAGq+Q,KAAW1mC,CAC9C,GAIIkyvB,EAAUzm3B,SACPktJ,EAAOuwtB,KAAMv19B,EAAU,SAAU+yQ,GACvC,OAASA,IAASwrtB,IAAgBlyvB,CACnC,GAIyB,iBAAdkyvB,EACJv5tB,EAAOuwtB,KAAMv19B,EAAU,SAAU+yQ,GACvC,OAASn7Q,EAAQ8X,KAAM6u9B,EAAWxrtB,IAAU,IAAQ1mC,CACrD,GAIM24B,EAAO1kQ,OAAQi+9B,EAAWv+9B,EAAUqsO,EAC5C,CAEA24B,EAAO1kQ,OAAS,SAAUmnS,EAAM62B,EAAOjyF,GACtC,IAAI0mC,EAAOurD,EAAO,GAMlB,OAJKjyF,IACJo7D,EAAO,QAAUA,EAAO,KAGH,IAAjB62B,EAAM76T,QAAkC,IAAlBsvQ,EAAKj7J,SACxBktJ,EAAO96P,KAAKoge,gBAAiBv3N,EAAM00B,GAAS,CAAE10B,GAAS,GAGxD/N,EAAO96P,KAAKo3B,QAASmmQ,EAAMziC,EAAOuwtB,KAAMj3pB,EAAO,SAAUvrD,GAC/D,OAAyB,IAAlBA,EAAKj7J,QACb,GACD,EAEAktJ,EAAO7gQ,GAAGkuG,OAAQ,CACjBnoG,KAAM,SAAU8sH,GACf,IAAItiI,EAAGwgC,EACNp2B,EAAMuQ,KAAK5L,OACXkuF,EAAOtiF,KAER,GAAyB,iBAAb2nH,EACX,OAAO3nH,KAAK+l9B,UAAWpwtB,EAAQhuI,GAAW12H,OAAQ,WACjD,IAAM5L,EAAI,EAAGA,EAAIoK,EAAKpK,IACrB,GAAKswQ,EAAOnuQ,SAAU86F,EAAMj9F,GAAK2a,MAChC,OAAO,CAGV,IAKD,IAFA6lB,EAAM7lB,KAAK+l9B,UAAW,IAEhB1g+B,EAAI,EAAGA,EAAIoK,EAAKpK,IACrBswQ,EAAO96P,KAAM8sH,EAAUrlC,EAAMj9F,GAAKwgC,GAGnC,OAAOp2B,EAAM,EAAIkmQ,EAAOs1tB,WAAYpl8B,GAAQA,CAC7C,EACA50B,OAAQ,SAAU02H,GACjB,OAAO3nH,KAAK+l9B,UAAWkJ,EAAQjv9B,KAAM2nH,GAAY,IAAI,GACtD,EACAq1G,IAAK,SAAUr1G,GACd,OAAO3nH,KAAK+l9B,UAAWkJ,EAAQjv9B,KAAM2nH,GAAY,IAAI,GACtD,EACA1C,GAAI,SAAU0C,GACb,QAASsn2B,EACRjv9B,KAIoB,iBAAb2nH,GAAyBmn2B,EAAc5s+B,KAAMylI,GACnDguI,EAAQhuI,GACRA,GAAY,IACb,GACCvzH,MACH,IAQD,IAAI+69B,EAMHvG,EAAa,uCAENjztB,EAAO7gQ,GAAGs3D,KAAO,SAAUu7D,EAAUx+F,EAAST,GACpD,IAAI1kC,EAAO0/Q,EAGX,IAAM/7I,EACL,OAAO3nH,KAQR,GAHA0oB,EAAOA,GAAQym8B,EAGU,iBAAbxn2B,EAAwB,CAanC,KAPC3jI,EALsB,MAAlB2jI,EAAU,IACsB,MAApCA,EAAUA,EAASvzH,OAAS,IAC5BuzH,EAASvzH,QAAU,EAGX,CAAE,KAAMuzH,EAAU,MAGlBih2B,EAAWvj8B,KAAMsiG,MAIV3jI,EAAO,IAAQmlC,EA6CxB,OAAMA,GAAWA,EAAQwkF,QACtBxkF,GAAWT,GAAO7tB,KAAM8sH,GAK1B3nH,KAAKS,YAAa0oB,GAAUtuB,KAAM8sH,GAhDzC,GAAK3jI,EAAO,GAAM,CAYjB,GAXAmlC,EAAUA,aAAmBwsO,EAASxsO,EAAS,GAAMA,EAIrDwsO,EAAO7jP,MAAO9R,KAAM21P,EAAOy5tB,UAC1Bpr+B,EAAO,GACPmlC,GAAWA,EAAQs/E,SAAWt/E,EAAQliC,eAAiBkiC,EAAU1gC,GACjE,IAIIum+B,EAAW9s+B,KAAM8B,EAAO,KAAS2xQ,EAAOjrC,cAAevhM,GAC3D,IAAMnlC,KAASmlC,EAGTtW,EAAY7S,KAAMhc,IACtBgc,KAAMhc,GAASmlC,EAASnlC,IAIxBgc,KAAKu3P,KAAMvzQ,EAAOmlC,EAASnlC,IAK9B,OAAOgc,IAGR,CASC,OARA0jQ,EAAOj7Q,EAAS6zE,eAAgBt4E,EAAO,OAKtCgc,KAAM,GAAM0jQ,EACZ1jQ,KAAK5L,OAAS,GAER4L,IAcV,CAAO,OAAK2nH,EAASlf,UACpBzoG,KAAM,GAAM2nH,EACZ3nH,KAAK5L,OAAS,EACP4L,MAII6S,EAAY80G,QACD7wH,IAAf4xB,EAAKy4O,MACXz4O,EAAKy4O,MAAOx5I,GAGZA,EAAUguI,GAGLA,EAAO6wtB,UAAW7+1B,EAAU3nH,KACpC,GAGII,UAAYu1P,EAAO7gQ,GAGxBq69B,EAAax5tB,EAAQltQ,GAGrB,IAAI4m+B,EAAe,iCAGlBC,EAAmB,CAClB932B,UAAU,EACV8rH,UAAU,EACVx7O,MAAM,EACN+yC,MAAM,GAoFR,SAAS01K,EAAS9tK,EAAKslC,GACtB,MAAUtlC,EAAMA,EAAKslC,KAA4B,IAAjBtlC,EAAIgmE,WACpC,OAAOhmE,CACR,CApFAkzN,EAAO7gQ,GAAGkuG,OAAQ,CACjBrvG,IAAK,SAAU5F,GACd,IAAIg0e,EAAUpsO,EAAQ5nQ,EAAQiS,MAC7BwY,EAAIupd,EAAQ3te,OAEb,OAAO4L,KAAK/O,OAAQ,WAEnB,IADA,IAAI5L,EAAI,EACAA,EAAImzB,EAAGnzB,IACd,GAAKswQ,EAAOnuQ,SAAUwY,KAAM+he,EAAS18e,IACpC,OAAO,CAGV,EACD,EAEAsoN,QAAS,SAAU09wB,EAAWli8B,GAC7B,IAAIsZ,EACHp9C,EAAI,EACJmzB,EAAIxY,KAAK5L,OACT5H,EAAU,GACVu1e,EAA+B,iBAAdspf,GAA0B11tB,EAAQ01tB,GAGpD,IAAMyD,EAAc5s+B,KAAMmp+B,GACzB,KAAQhm+B,EAAImzB,EAAGnzB,IACd,IAAMo9C,EAAMziC,KAAM3a,GAAKo9C,GAAOA,IAAQtZ,EAASsZ,EAAMA,EAAIz6C,WAGxD,GAAKy6C,EAAIgmE,SAAW,KAAQs5X,EAC3BA,EAAQvre,MAAOisC,IAAS,EAGP,IAAjBA,EAAIgmE,UACHktJ,EAAO96P,KAAKoge,gBAAiBx4b,EAAK4o7B,IAAgB,CAEnD7+9B,EAAQsH,KAAM2uC,GACd,KACD,CAKH,OAAOziC,KAAK+l9B,UAAWv59B,EAAQ4H,OAAS,EAAIuhQ,EAAOs1tB,WAAYz+9B,GAAYA,EAC5E,EAGAgK,MAAO,SAAUktQ,GAGhB,OAAMA,EAKe,iBAATA,EACJn7Q,EAAQ8X,KAAMs1P,EAAQ+N,GAAQ1jQ,KAAM,IAIrCzX,EAAQ8X,KAAML,KAGpB0jQ,EAAK/1J,OAAS+1J,EAAM,GAAMA,GAZjB1jQ,KAAM,IAAOA,KAAM,GAAIhY,WAAegY,KAAKwuD,QAAQ+g6B,UAAUn79B,QAAU,CAclF,EAEAd,IAAK,SAAUq0H,EAAUx+F,GACxB,OAAOnpB,KAAK+l9B,UACXpwtB,EAAOs1tB,WACNt1tB,EAAO7jP,MAAO9R,KAAKnM,MAAO8hQ,EAAQhuI,EAAUx+F,KAG/C,EAEAqm8B,QAAS,SAAU7n2B,GAClB,OAAO3nH,KAAK1M,IAAiB,MAAZq0H,EAChB3nH,KAAKgm9B,WAAahm9B,KAAKgm9B,WAAW/09B,OAAQ02H,GAE5C,IAQDguI,EAAO/kP,KAAM,CACZnpB,OAAQ,SAAUi8Q,GACjB,IAAIj8Q,EAASi8Q,EAAK17Q,WAClB,OAAOP,GAA8B,KAApBA,EAAOghH,SAAkBhhH,EAAS,IACpD,EACA+gH,QAAS,SAAUk7J,GAClB,OAAO37L,EAAK27L,EAAM,aACnB,EACA+rtB,aAAc,SAAU/rtB,EAAM/oQ,EAAIm7d,GACjC,OAAO/tZ,EAAK27L,EAAM,aAAcoyN,EACjC,EACAhue,KAAM,SAAU47Q,GACf,OAAOnzD,EAASmzD,EAAM,cACvB,EACA7oO,KAAM,SAAU6oO,GACf,OAAOnzD,EAASmzD,EAAM,kBACvB,EACAgstB,QAAS,SAAUhstB,GAClB,OAAO37L,EAAK27L,EAAM,cACnB,EACA6rtB,QAAS,SAAU7rtB,GAClB,OAAO37L,EAAK27L,EAAM,kBACnB,EACAistB,UAAW,SAAUjstB,EAAM/oQ,EAAIm7d,GAC9B,OAAO/tZ,EAAK27L,EAAM,cAAeoyN,EAClC,EACA85f,UAAW,SAAUlstB,EAAM/oQ,EAAIm7d,GAC9B,OAAO/tZ,EAAK27L,EAAM,kBAAmBoyN,EACtC,EACA01B,SAAU,SAAU9nP,GACnB,OAAO8nP,GAAY9nP,EAAK17Q,YAAc,CAAC,GAAI4gI,WAAY86I,EACxD,EACAlsJ,SAAU,SAAUksJ,GACnB,OAAO8nP,EAAU9nP,EAAK96I,WACvB,EACA06G,SAAU,SAAUogC,GACnB,OAA6B,MAAxBA,EAAKU,iBAKTr/B,EAAU2+B,EAAKU,iBAERV,EAAKU,iBAMRj8Q,EAAUu7Q,EAAM,cACpBA,EAAOA,EAAK78J,SAAW68J,GAGjB/N,EAAO7jP,MAAO,GAAI4xP,EAAKv5I,YAC/B,GACE,SAAU52H,EAAMuB,GAClB6gQ,EAAO7gQ,GAAIvB,GAAS,SAAUuie,EAAOnuW,GACpC,IAAIn7H,EAAUmpQ,EAAO5iQ,IAAKiN,KAAMlL,EAAIghe,GAuBpC,MArB0B,UAArBvie,EAAKuH,OAAQ,KACjB6sH,EAAWmuW,GAGPnuW,GAAgC,iBAAbA,IACvBn7H,EAAUmpQ,EAAO1kQ,OAAQ02H,EAAUn7H,IAG/BwT,KAAK5L,OAAS,IAGZk79B,EAAkB/79B,IACvBoiQ,EAAOs1tB,WAAYz+9B,GAIf6i+B,EAAant+B,KAAMqR,IACvB/G,EAAQskB,WAIH9Q,KAAK+l9B,UAAWv59B,EACxB,CACD,GACA,IAAIqj+B,EAAgB,oBAsOpB,SAASC,EAAU3t9B,GAClB,OAAOA,CACR,CACA,SAAS4t9B,EAASnlvB,GACjB,MAAMA,CACP,CAEA,SAASolvB,EAAYrq+B,EAAOiR,EAASwK,EAAQ6u9B,GAC5C,IAAI1r7B,EAEJ,IAGM5+C,GAASktB,EAAc0xB,EAAS5+C,EAAM08H,SAC1C99E,EAAOlkC,KAAM1a,GAAQ6b,KAAM5K,GAAUyyJ,KAAMjoJ,GAGhCzb,GAASktB,EAAc0xB,EAAS5+C,EAAMkR,MACjD0tC,EAAOlkC,KAAM1a,EAAOiR,EAASwK,GAQ7BxK,EAAQkK,WAAOhK,EAAW,CAAEnR,GAAQmV,MAAOm19B,GAM7C,CAAE,MAAQtq+B,GAITyb,EAAON,WAAOhK,EAAW,CAAEnR,GAC5B,CACD,CAzOAgwQ,EAAOu6tB,UAAY,SAAUtg+B,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAI07C,EAAS,CAAC,EAId,OAHAqqN,EAAO/kP,KAAMhhB,EAAQ5L,MAAO6r+B,IAAmB,GAAI,SAAUju9B,EAAGgxR,GAC/DtnP,EAAQsnP,IAAS,CAClB,GACOtnP,CACR,CA6BEy+mB,CAAen6pB,GACf+lQ,EAAO3yJ,OAAQ,CAAC,EAAGpzG,GAEpB,IACCug+B,EAGAxm4B,EAGA6qC,EAGA/xC,EAGA70F,EAAO,GAGPgvH,EAAQ,GAGRwz2B,GAAe,EAGf56jB,EAAO,WAQN,IALA/yU,EAASA,GAAU7yF,EAAQ66G,KAI3B+pB,EAAQ271B,GAAS,EACTvz2B,EAAMxoH,OAAQg89B,GAAe,EAEpC,IADAzm4B,EAASizB,EAAM10E,UACLko7B,EAAcxi+B,EAAKwG,SAGmC,IAA1DxG,EAAMwi+B,GAActv9B,MAAO6oF,EAAQ,GAAKA,EAAQ,KACpD/5F,EAAQyg+B,cAGRD,EAAcxi+B,EAAKwG,OACnBu1F,GAAS,GAMN/5F,EAAQ+5F,SACbA,GAAS,GAGVwm4B,GAAS,EAGJ1t4B,IAIH70F,EADI+7F,EACG,GAIA,GAGV,EAGArH,EAAO,CAGNhvF,IAAK,WA2BJ,OA1BK1F,IAGC+7F,IAAWwm4B,IACfC,EAAcxi+B,EAAKwG,OAAS,EAC5BwoH,EAAM9oH,KAAM61F,IAGb,SAAWr2F,EAAKe,GACfshQ,EAAO/kP,KAAMvc,EAAM,SAAUuN,EAAG+1D,GAC1B9kD,EAAY8kD,GACV/nE,EAAQs7V,QAAW5oQ,EAAK3uF,IAAKgkE,IAClC/pE,EAAKkG,KAAM6jE,GAEDA,GAAOA,EAAIvjE,QAA4B,WAAlB0x9B,EAAQnu5B,IAGxCrkE,EAAKqkE,EAEP,EACC,CAZF,CAYKxjE,WAEAw1F,IAAWwm4B,GACf36jB,KAGKx1Z,IACR,EAGA4iC,OAAQ,WAYP,OAXA+yN,EAAO/kP,KAAMzc,UAAW,SAAUyN,EAAG+1D,GAEpC,IADA,IAAInhE,GACMA,EAAQm/P,EAAOpgC,QAAS59J,EAAK/pE,EAAM4I,KAAa,GACzD5I,EAAKm/B,OAAQv2B,EAAO,GAGfA,GAAS459B,GACbA,GAGH,GACOpw9B,IACR,EAIArM,IAAK,SAAUmB,GACd,OAAOA,EACN6gQ,EAAOpgC,QAASzgO,EAAIlH,IAAU,EAC9BA,EAAKwG,OAAS,CAChB,EAGAylQ,MAAO,WAIN,OAHKjsQ,IACJA,EAAO,IAEDoS,IACR,EAKA8tG,QAAS,WAGR,OAFArrB,EAASm6B,EAAQ,GACjBhvH,EAAO+7F,EAAS,GACT3pF,IACR,EACAguC,SAAU,WACT,OAAQpgD,CACT,EAKAg1F,KAAM,WAKL,OAJAH,EAASm6B,EAAQ,GACXjzB,GAAWwm4B,IAChBvi+B,EAAO+7F,EAAS,IAEV3pF,IACR,EACAyiF,OAAQ,WACP,QAASA,CACV,EAGA6t4B,SAAU,SAAUnn8B,EAAS90B,GAS5B,OARMouF,IAELpuF,EAAO,CAAE80B,GADT90B,EAAOA,GAAQ,IACQyG,MAAQzG,EAAKyG,QAAUzG,GAC9CuoH,EAAM9oH,KAAMO,GACN879B,GACL36jB,KAGKx1Z,IACR,EAGAw1Z,KAAM,WAEL,OADAlzU,EAAKgu4B,SAAUtw9B,KAAM7L,WACd6L,IACR,EAGAw0H,MAAO,WACN,QAASA,CACV,GAGF,OAAOlyC,CACR,EA2CAqzK,EAAO3yJ,OAAQ,CAEdy4L,SAAU,SAAU/mM,GACnB,IAAI673B,EAAS,CAIX,CAAE,SAAU,WAAY56tB,EAAOu6tB,UAAW,UACzCv6tB,EAAOu6tB,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQv6tB,EAAOu6tB,UAAW,eACtCv6tB,EAAOu6tB,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQv6tB,EAAOu6tB,UAAW,eACrCv6tB,EAAOu6tB,UAAW,eAAiB,EAAG,aAExCvg+B,EAAQ,UACR0yH,EAAU,CACT1yH,MAAO,WACN,OAAOA,CACR,EACAy+rB,OAAQ,WAEP,OADA9jlB,EAAS9oG,KAAMrN,WAAYk1J,KAAMl1J,WAC1B6L,IACR,EACA,MAAS,SAAUlL,GAClB,OAAOutH,EAAQxrH,KAAM,KAAM/B,EAC5B,EAGA63mB,KAAM,WACL,IAAIjnV,EAAMvxR,UAEV,OAAOwhQ,EAAO8lC,SAAU,SAAU+0rB,GACjC76tB,EAAO/kP,KAAM2/8B,EAAQ,SAAU519B,EAAI4nH,GAGlC,IAAIztH,EAAK+d,EAAY6yQ,EAAKnjK,EAAO,MAAWmjK,EAAKnjK,EAAO,IAKxDjY,EAAUiY,EAAO,IAAO,WACvB,IAAIku2B,EAAW379B,GAAMA,EAAGgM,MAAOd,KAAM7L,WAChCs89B,GAAY598B,EAAY498B,EAASpu2B,SACrCou2B,EAASpu2B,UACP//E,SAAUku7B,EAASp45B,QACnB52D,KAAMgv9B,EAAS559B,SACfyyJ,KAAMmn0B,EAASpv9B,QAEjBov9B,EAAUju2B,EAAO,GAAM,QACtBviH,KACAlL,EAAK,CAAE279B,GAAat89B,UAGvB,EACD,GACAuxR,EAAM,IACP,GAAIrjK,SACL,EACAxrH,KAAM,SAAUs3P,EAAaC,EAAYhyL,GACxC,IAAI04L,EAAW,EACf,SAASl+P,EAASkrN,EAAOx3G,EAAUpsD,EAASorpB,GAC3C,OAAO,WACN,IAAIhzf,EAAOt2M,KACV3L,EAAOF,UACPu89B,EAAa,WACZ,IAAID,EAAU559B,EAKd,KAAKirN,EAAQgzC,GAAb,CAQA,IAJA27tB,EAAWvy6B,EAAQp9C,MAAOw1M,EAAMjiN,MAIdi2G,EAAS+X,UAC1B,MAAM,IAAI/hH,UAAW,4BAOtBzJ,EAAO459B,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAAS559B,KAGLgc,EAAYhc,GAGXyysB,EACJzysB,EAAKwJ,KACJow9B,EACA759B,EAASk+P,EAAUxqJ,EAAUwl3B,EAAUxmR,GACvC1ysB,EAASk+P,EAAUxqJ,EAAUyl3B,EAASzmR,KAOvCx0c,IAEAj+P,EAAKwJ,KACJow9B,EACA759B,EAASk+P,EAAUxqJ,EAAUwl3B,EAAUxmR,GACvC1ysB,EAASk+P,EAAUxqJ,EAAUyl3B,EAASzmR,GACtC1ysB,EAASk+P,EAAUxqJ,EAAUwl3B,EAC5Bxl3B,EAASqm3B,eASPzy6B,IAAY4x6B,IAChBx5wB,OAAOx/M,EACPzC,EAAO,CAAEo89B,KAKRnnR,GAAWh/lB,EAASkgoB,aAAel0hB,EAAMjiN,GA7D5C,CA+DD,EAGAomI,EAAU6ukB,EACTonR,EACA,WACC,IACCA,GACD,CAAE,MAAQ1r+B,GAEJ2wQ,EAAO8lC,SAASm1rB,eACpBj7tB,EAAO8lC,SAASm1rB,cAAe5r+B,EAC9By1I,EAAQo21B,YAML/uwB,EAAQ,GAAKgzC,IAIZ52M,IAAY6x6B,IAChBz5wB,OAAOx/M,EACPzC,EAAO,CAAErP,IAGVslH,EAASwm3B,WAAYx6wB,EAAMjiN,GAE7B,CACD,EAMGytN,EACJrnF,KAKKk7H,EAAO8lC,SAASs1rB,eACpBt21B,EAAQo21B,WAAal7tB,EAAO8lC,SAASs1rB,gBAEtC5p+B,EAAOsgB,WAAYgzH,GAErB,CACD,CAEA,OAAOk7H,EAAO8lC,SAAU,SAAU+0rB,GAGjCD,EAAQ,GAAK,GAAIj99B,IAChBsD,EACC,EACA459B,EACA398B,EAAYupD,GACXA,EACA0z5B,EACDU,EAASG,aAKXJ,EAAQ,GAAK,GAAIj99B,IAChBsD,EACC,EACA459B,EACA398B,EAAYs7O,GACXA,EACA2huB,IAKHS,EAAQ,GAAK,GAAIj99B,IAChBsD,EACC,EACA459B,EACA398B,EAAYu7O,GACXA,EACA2huB,GAGJ,GAAI1t2B,SACL,EAIAA,QAAS,SAAU/vG,GAClB,OAAc,MAAPA,EAAcqjP,EAAO3yJ,OAAQ1wF,EAAK+vG,GAAYA,CACtD,GAED/X,EAAW,CAAC,EAkEb,OA/DAqrJ,EAAO/kP,KAAM2/8B,EAAQ,SAAUlr+B,EAAGk9H,GACjC,IAAI30H,EAAO20H,EAAO,GACjByu2B,EAAczu2B,EAAO,GAKtBF,EAASE,EAAO,IAAQ30H,EAAK0F,IAGxB099B,GACJpj+B,EAAK0F,IACJ,WAIC3D,EAAQqh+B,CACT,EAIAT,EAAQ,EAAIlr+B,GAAK,GAAIyoH,QAIrByi3B,EAAQ,EAAIlr+B,GAAK,GAAIyoH,QAGrByi3B,EAAQ,GAAK,GAAI3t4B,KAGjB2t4B,EAAQ,GAAK,GAAI3t4B,MAOnBh1F,EAAK0F,IAAKivH,EAAO,GAAIizS,MAKrBlrT,EAAUiY,EAAO,IAAQ,WAExB,OADAjY,EAAUiY,EAAO,GAAM,QAAUviH,OAASsqG,OAAWxzG,EAAYkJ,KAAM7L,WAChE6L,IACR,EAKAsqG,EAAUiY,EAAO,GAAM,QAAW30H,EAAK0i+B,QACxC,GAGAju2B,EAAQA,QAAS/X,GAGZ5V,GACJA,EAAKr0F,KAAMiqG,EAAUA,GAIfA,CACR,EAGA8X,KAAM,SAAU6u2B,GACf,IAGCpv7B,EAAY1tC,UAAUC,OAGtB/O,EAAIw8C,EAGJqv7B,EAAkB589B,MAAOjP,GACzB8r+B,EAAgBr29B,EAAMuF,KAAMlM,WAG5B+9iB,EAASv8S,EAAO8lC,WAGhB21rB,EAAa,SAAU/r+B,GACtB,OAAO,SAAUM,GAChBur+B,EAAiB7r+B,GAAM2a,KACvBmx9B,EAAe9r+B,GAAM8O,UAAUC,OAAS,EAAI0G,EAAMuF,KAAMlM,WAAcxO,IAC5Dk8C,GACTqwgB,EAAOs4L,YAAa0mP,EAAiBC,EAEvC,CACD,EAGD,GAAKtv7B,GAAa,IACjBmu7B,EAAYiB,EAAa/+a,EAAO1wiB,KAAM4v9B,EAAY/r+B,IAAMuR,QAASs7iB,EAAO9wiB,QACtEygC,GAGsB,YAAnBqwgB,EAAOvijB,SACXkjB,EAAYs+8B,EAAe9r+B,IAAO8r+B,EAAe9r+B,GAAIwR,OAErD,OAAOq7iB,EAAOr7iB,OAKhB,KAAQxR,KACP2q+B,EAAYmB,EAAe9r+B,GAAK+r+B,EAAY/r+B,GAAK6sjB,EAAO9wiB,QAGzD,OAAO8wiB,EAAO7vb,SACf,IAMD,IAAIgv2B,EAAc,yDAElB17tB,EAAO8lC,SAASm1rB,cAAgB,SAAU3m9B,EAAOs8B,GAI3Cp/C,EAAOyrC,SAAWzrC,EAAOyrC,QAAQ/lB,MAAQ5C,GAASon9B,EAAYnv+B,KAAM+nB,EAAM1W,OAC9EpM,EAAOyrC,QAAQ/lB,KAAM,8BAAgC5C,EAAMmmF,QAASnmF,EAAMs8B,MAAOA,EAEnF,EAKAovN,EAAO27tB,eAAiB,SAAUrn9B,GACjC9iB,EAAOsgB,WAAY,WAClB,MAAMwC,CACP,EACD,EAMA,IAAIsn9B,EAAY57tB,EAAO8lC,WAkDvB,SAASwyE,IACRxlX,EAAS0P,oBAAqB,mBAAoB81W,GAClD9mX,EAAOgR,oBAAqB,OAAQ81W,GACpCt4G,EAAOwL,OACR,CApDAxL,EAAO7gQ,GAAGqsQ,MAAQ,SAAUrsQ,GAY3B,OAVAy89B,EACE169B,KAAM/B,GAKN+4N,MAAO,SAAU5jN,GACjB0rP,EAAO27tB,eAAgBrn9B,EACxB,GAEMjK,IACR,EAEA21P,EAAO3yJ,OAAQ,CAGd84zB,SAAS,EAIT01D,UAAW,EAGXrwtB,MAAO,SAAUj9N,KAGF,IAATA,IAAkByxN,EAAO67tB,UAAY77tB,EAAOmmqB,WAKjDnmqB,EAAOmmqB,SAAU,GAGH,IAAT533B,KAAmByxN,EAAO67tB,UAAY,GAK3CD,EAAU/mP,YAAa/hvB,EAAU,CAAEktQ,IACpC,IAGDA,EAAOwL,MAAMtqQ,KAAO069B,EAAU169B,KAaD,aAAxBpO,EAASw4Q,YACa,YAAxBx4Q,EAASw4Q,aAA6Bx4Q,EAASC,gBAAgB+o+B,SAGjEtq+B,EAAOsgB,WAAYkuP,EAAOwL,QAK1B14Q,EAASyP,iBAAkB,mBAAoB+1W,GAG/C9mX,EAAO+Q,iBAAkB,OAAQ+1W,IAQlC,IAAIyjnB,EAAS,SAAUziqB,EAAOn6T,EAAItK,EAAK7E,EAAOgs+B,EAAWC,EAAUrj7B,GAClE,IAAIlpD,EAAI,EACPoK,EAAMw/T,EAAM76T,OACZy99B,EAAc,MAAPrn+B,EAGR,GAAuB,WAAlBs79B,EAAQt79B,GAEZ,IAAMnF,KADNss+B,GAAY,EACDnn+B,EACVkn+B,EAAQziqB,EAAOn6T,EAAIzP,EAAGmF,EAAKnF,IAAK,EAAMus+B,EAAUrj7B,QAI3C,QAAez3C,IAAVnR,IACXgs+B,GAAY,EAEN9+8B,EAAYltB,KACjB4oD,GAAM,GAGFsj7B,IAGCtj7B,GACJz5C,EAAGuL,KAAM4uT,EAAOtpU,GAChBmP,EAAK,OAIL+89B,EAAO/89B,EACPA,EAAK,SAAU4uQ,EAAMnvQ,EAAM5O,GAC1B,OAAOks+B,EAAKxx9B,KAAMs1P,EAAQ+N,GAAQ/9Q,EACnC,IAIGmP,GACJ,KAAQzP,EAAIoK,EAAKpK,IAChByP,EACCm6T,EAAO5pU,GAAKmF,EAAK+jD,EACjB5oD,EACAA,EAAM0a,KAAM4uT,EAAO5pU,GAAKA,EAAGyP,EAAIm6T,EAAO5pU,GAAKmF,KAM/C,OAAKmn+B,EACG1iqB,EAIH4iqB,EACG/89B,EAAGuL,KAAM4uT,GAGVx/T,EAAMqF,EAAIm6T,EAAO,GAAKzkU,GAAQon+B,CACtC,EAIIE,EAAY,QACfC,EAAa,YAGd,SAASC,EAAY3xB,EAAMpksB,GAC1B,OAAOA,EAAOtpP,aACf,CAKA,SAASmv8B,EAAWh+9B,GACnB,OAAOA,EAAOC,QAAS+t+B,EAAW,OAAQ/t+B,QAASgu+B,EAAYC,EAChE,CACA,IAAIC,EAAa,SAAUnqN,GAQ1B,OAA0B,IAAnBA,EAAMr/pB,UAAqC,IAAnBq/pB,EAAMr/pB,YAAsBq/pB,EAAMr/pB,QAClE,EAKA,SAAS66E,IACRtjL,KAAK+8P,QAAUpH,EAAOoH,QAAUz5E,EAAKzzK,KACtC,CAEAyzK,EAAKzzK,IAAM,EAEXyzK,EAAKljL,UAAY,CAEhBmsB,MAAO,SAAUu7uB,GAGhB,IAAInixB,EAAQmixB,EAAO9nwB,KAAK+8P,SA4BxB,OAzBMp3Q,IACLA,EAAQmE,OAAO4W,OAAQ,MAKlBux9B,EAAYnqN,KAIXA,EAAMr/pB,SACVq/pB,EAAO9nwB,KAAK+8P,SAAYp3Q,EAMxBmE,OAAOwY,eAAgBwlwB,EAAO9nwB,KAAK+8P,QAAS,CAC3Cp3Q,MAAOA,EACPsxC,cAAc,MAMXtxC,CACR,EACAoO,IAAK,SAAU+zwB,EAAO/xwB,EAAMpQ,GAC3B,IAAI2sC,EACH/F,EAAQvsB,KAAKusB,MAAOu7uB,GAIrB,GAAqB,iBAAT/xwB,EACXw2B,EAAOu17B,EAAW/r9B,IAAWpQ,OAM7B,IAAM2sC,KAAQv8B,EACbw2B,EAAOu17B,EAAWxv7B,IAAWv8B,EAAMu8B,GAGrC,OAAO/F,CACR,EACA14B,IAAK,SAAUi0wB,EAAOt9wB,GACrB,YAAesM,IAARtM,EACNwV,KAAKusB,MAAOu7uB,GAGZA,EAAO9nwB,KAAK+8P,UAAa+qgB,EAAO9nwB,KAAK+8P,SAAW+ktB,EAAWt39B,GAC7D,EACAkn+B,OAAQ,SAAU5pN,EAAOt9wB,EAAK7E,GAa7B,YAAamR,IAARtM,GACCA,GAAsB,iBAARA,QAAgCsM,IAAVnR,EAElCqa,KAAKnM,IAAKi0wB,EAAOt9wB,IASzBwV,KAAKjM,IAAK+zwB,EAAOt9wB,EAAK7E,QAILmR,IAAVnR,EAAsBA,EAAQ6E,EACtC,EACAo4C,OAAQ,SAAUkluB,EAAOt9wB,GACxB,IAAInF,EACHknC,EAAQu7uB,EAAO9nwB,KAAK+8P,SAErB,QAAejmQ,IAAVy1B,EAAL,CAIA,QAAaz1B,IAARtM,EAAoB,CAkBxBnF,GAXCmF,EAJI8J,MAAMyb,QAASvlB,GAIbA,EAAIuI,IAAK+u9B,IAEft39B,EAAMs39B,EAAWt39B,MAIJ+hC,EACZ,CAAE/hC,GACAA,EAAIxG,MAAO6r+B,IAAmB,IAG1Bz79B,OAER,KAAQ/O,YACAknC,EAAO/hC,EAAKnF,GAErB,OAGayR,IAARtM,GAAqBmrQ,EAAO2wtB,cAAe/57B,MAM1Cu7uB,EAAMr/pB,SACVq/pB,EAAO9nwB,KAAK+8P,cAAYjmQ,SAEjBgxwB,EAAO9nwB,KAAK+8P,SArCrB,CAwCD,EACAmF,QAAS,SAAU4lgB,GAClB,IAAIv7uB,EAAQu7uB,EAAO9nwB,KAAK+8P,SACxB,YAAiBjmQ,IAAVy1B,IAAwBopO,EAAO2wtB,cAAe/57B,EACtD,GAED,IAAI2l8B,EAAW,IAAI5uyB,EAEf6uyB,EAAW,IAAI7uyB,EAcf8uyB,GAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAU5utB,EAAMl5Q,EAAKuL,GAC7B,IAAIxC,EAIJ,QAAcuD,IAATf,GAAwC,IAAlB2tQ,EAAKj7J,SAI/B,GAHAl1G,EAAO,QAAU/I,EAAIzG,QAASsu+B,GAAY,OAAQjq+B,cAG7B,iBAFrB2N,EAAO2tQ,EAAK5lQ,aAAcvK,IAEM,CAC/B,IACCwC,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJq89B,GAAOlw+B,KAAM6T,GACV4T,KAAKyuB,MAAOriC,GAGbA,EACR,CAaWm2O,CAASn2O,EACjB,CAAE,MAAQ/Q,GAAK,CAGfmt+B,EAASp+9B,IAAK2vQ,EAAMl5Q,EAAKuL,EAC1B,MACCA,OAAOe,EAGT,OAAOf,CACR,CAEA4/P,EAAO3yJ,OAAQ,CACdk/J,QAAS,SAAUwB,GAClB,OAAOyutB,EAASjwtB,QAASwB,IAAUwutB,EAAShwtB,QAASwB,EACtD,EAEA3tQ,KAAM,SAAU2tQ,EAAMnwQ,EAAMwC,GAC3B,OAAOo89B,EAAST,OAAQhutB,EAAMnwQ,EAAMwC,EACrC,EAEAksQ,WAAY,SAAUyB,EAAMnwQ,GAC3B4+9B,EAASvv7B,OAAQ8gO,EAAMnwQ,EACxB,EAIAu1C,MAAO,SAAU46N,EAAMnwQ,EAAMwC,GAC5B,OAAOm89B,EAASR,OAAQhutB,EAAMnwQ,EAAMwC,EACrC,EAEAw89B,YAAa,SAAU7utB,EAAMnwQ,GAC5B2+9B,EAAStv7B,OAAQ8gO,EAAMnwQ,EACxB,IAGDoiQ,EAAO7gQ,GAAGkuG,OAAQ,CACjBjtG,KAAM,SAAUvL,EAAK7E,GACpB,IAAIN,EAAGkO,EAAMwC,EACZ2tQ,EAAO1jQ,KAAM,GACb+oH,EAAQ26I,GAAQA,EAAKzuQ,WAGtB,QAAa6B,IAARtM,EAAoB,CACxB,GAAKwV,KAAK5L,SACT2B,EAAOo89B,EAASt+9B,IAAK6vQ,GAEE,IAAlBA,EAAKj7J,WAAmByp3B,EAASr+9B,IAAK6vQ,EAAM,iBAAmB,CAEnE,IADAr+Q,EAAI0jI,EAAM30H,OACF/O,KAIF0jI,EAAO1jI,IAEsB,KADjCkO,EAAOw1H,EAAO1jI,GAAIkO,MACRhL,QAAS,WAClBgL,EAAOuu9B,EAAWvu9B,EAAKuH,MAAO,IAC9Bw39B,GAAU5utB,EAAMnwQ,EAAMwC,EAAMxC,KAI/B2+9B,EAASn+9B,IAAK2vQ,EAAM,gBAAgB,EACrC,CAGD,OAAO3tQ,CACR,CAGA,MAAoB,iBAARvL,EACJwV,KAAK4Q,KAAM,WACjBuh9B,EAASp+9B,IAAKiM,KAAMxV,EACrB,GAGMkn+B,EAAQ1x9B,KAAM,SAAUra,GAC9B,IAAIoQ,EAOJ,GAAK2tQ,QAAkB5sQ,IAAVnR,EAKZ,YAAcmR,KADdf,EAAOo89B,EAASt+9B,IAAK6vQ,EAAMl5Q,UAQbsM,KADdf,EAAOu89B,GAAU5utB,EAAMl5Q,IALfuL,OAWR,EAIDiK,KAAK4Q,KAAM,WAGVuh9B,EAASp+9B,IAAKiM,KAAMxV,EAAK7E,EAC1B,EACD,EAAG,KAAMA,EAAOwO,UAAUC,OAAS,EAAG,MAAM,EAC7C,EAEA6tQ,WAAY,SAAUz3Q,GACrB,OAAOwV,KAAK4Q,KAAM,WACjBuh9B,EAASvv7B,OAAQ5iC,KAAMxV,EACxB,EACD,IAIDmrQ,EAAO3yJ,OAAQ,CACd4Z,MAAO,SAAU8mJ,EAAM1zP,EAAMja,GAC5B,IAAI6mH,EAEJ,GAAK8mJ,EAYJ,OAXA1zP,GAASA,GAAQ,MAAS,QAC1B4sG,EAAQs12B,EAASr+9B,IAAK6vQ,EAAM1zP,GAGvBja,KACE6mH,GAAStoH,MAAMyb,QAASha,GAC7B6mH,EAAQs12B,EAASR,OAAQhutB,EAAM1zP,EAAM2lP,EAAO6wtB,UAAWzw9B,IAEvD6mH,EAAM9oH,KAAMiC,IAGP6mH,GAAS,EAElB,EAEAskN,QAAS,SAAUx9D,EAAM1zP,GACxBA,EAAOA,GAAQ,KAEf,IAAI4sG,EAAQ+4I,EAAO/4I,MAAO8mJ,EAAM1zP,GAC/Bwi9B,EAAc512B,EAAMxoH,OACpBU,EAAK8nH,EAAM10E,QACXu9M,EAAQkQ,EAAO88tB,YAAa/utB,EAAM1zP,GAMvB,eAAPlb,IACJA,EAAK8nH,EAAM10E,QACXsq7B,KAGI199B,IAIU,OAATkb,GACJ4sG,EAAMzlC,QAAS,qBAITsuK,EAAM//O,KACb5Q,EAAGuL,KAAMqjQ,EApBF,WACN/N,EAAOurE,QAASx9D,EAAM1zP,EACvB,EAkBqBy1O,KAGhB+suB,GAAe/suB,GACpBA,EAAMoU,MAAM27J,MAEd,EAGAi9jB,YAAa,SAAU/utB,EAAM1zP,GAC5B,IAAIxlB,EAAMwlB,EAAO,aACjB,OAAOki9B,EAASr+9B,IAAK6vQ,EAAMl5Q,IAAS0n+B,EAASR,OAAQhutB,EAAMl5Q,EAAK,CAC/DqvQ,MAAOlE,EAAOu6tB,UAAW,eAAgB589B,IAAK,WAC7C4+9B,EAAStv7B,OAAQ8gO,EAAM,CAAE1zP,EAAO,QAASxlB,GAC1C,IAEF,IAGDmrQ,EAAO7gQ,GAAGkuG,OAAQ,CACjB4Z,MAAO,SAAU5sG,EAAMja,GACtB,IAAI48S,EAAS,EAQb,MANqB,iBAAT3iS,IACXja,EAAOia,EACPA,EAAO,KACP2iS,KAGIx+S,UAAUC,OAASu+S,EAChBh9C,EAAO/4I,MAAO58G,KAAM,GAAKgQ,QAGjBlZ,IAATf,EACNiK,KACAA,KAAK4Q,KAAM,WACV,IAAIgsG,EAAQ+4I,EAAO/4I,MAAO58G,KAAMgQ,EAAMja,GAGtC4/P,EAAO88tB,YAAazy9B,KAAMgQ,GAEZ,OAATA,GAAgC,eAAf4sG,EAAO,IAC5B+4I,EAAOurE,QAASlhU,KAAMgQ,EAExB,EACF,EACAkxT,QAAS,SAAUlxT,GAClB,OAAOhQ,KAAK4Q,KAAM,WACjB+kP,EAAOurE,QAASlhU,KAAMgQ,EACvB,EACD,EACA0i9B,WAAY,SAAU1i9B,GACrB,OAAOhQ,KAAK48G,MAAO5sG,GAAQ,KAAM,GAClC,EAIAqyG,QAAS,SAAUryG,EAAMsC,GACxB,IAAI0S,EACHgT,EAAQ,EACRkxE,EAAQysJ,EAAO8lC,WACf9qS,EAAWqP,KACX3a,EAAI2a,KAAK5L,OACTwC,EAAU,aACCohC,GACTkxE,EAAMshoB,YAAa75uB,EAAU,CAAEA,GAEjC,EAQD,IANqB,iBAATqf,IACXsC,EAAMtC,EACNA,OAAOlZ,GAERkZ,EAAOA,GAAQ,KAEP3qB,MACP2/B,EAAMkt8B,EAASr+9B,IAAKlD,EAAUtL,GAAK2qB,EAAO,gBAC9BgV,EAAI60O,QACf7hO,IACAhT,EAAI60O,MAAMvmQ,IAAKsD,IAIjB,OADAA,IACOsyG,EAAMmZ,QAAS/vG,EACvB,IAED,IAAIqg9B,GAAO,sCAA0Cph9B,OAEjDqh9B,GAAU,IAAI9g8B,OAAQ,iBAAmB6g8B,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCnq+B,GAAkBD,EAASC,gBAI1Bk7D,GAAa,SAAU8/M,GACzB,OAAO/N,EAAOnuQ,SAAUk8Q,EAAKz8Q,cAAey8Q,EAC7C,EACAovtB,GAAW,CAAEA,UAAU,GAOnBpq+B,GAAgBd,cACpBg8D,GAAa,SAAU8/M,GACtB,OAAO/N,EAAOnuQ,SAAUk8Q,EAAKz8Q,cAAey8Q,IAC3CA,EAAK97Q,YAAakr+B,MAAepvtB,EAAKz8Q,aACxC,GAEF,IAAI8r+B,GAAqB,SAAUrvtB,EAAMnmO,GAOvC,MAA8B,UAH9BmmO,EAAOnmO,GAAMmmO,GAGDh6O,MAAM8yB,SACM,KAAvBknN,EAAKh6O,MAAM8yB,SAMXoH,GAAY8/M,IAEsB,SAAlC/N,EAAOxsQ,IAAKu6Q,EAAM,UACpB,EAID,SAASsvtB,GAAWtvtB,EAAMpxO,EAAM2g8B,EAAY5ujB,GAC3C,IAAI6ujB,EAAUto8B,EACbuo8B,EAAgB,GAChB/v7B,EAAeihY,EACd,WACC,OAAOA,EAAM5hY,KACd,EACA,WACC,OAAOkzN,EAAOxsQ,IAAKu6Q,EAAMpxO,EAAM,GAChC,EACDmP,EAAU2B,IACVga,EAAO616B,GAAcA,EAAY,KAASt9tB,EAAOy9tB,UAAW9g8B,GAAS,GAAK,MAG1E+g8B,EAAgB3vtB,EAAKj7J,WAClBktJ,EAAOy9tB,UAAW9g8B,IAAmB,OAAT8qB,IAAkB3b,IAChDmx7B,GAAQvt8B,KAAMswO,EAAOxsQ,IAAKu6Q,EAAMpxO,IAElC,GAAK+g8B,GAAiBA,EAAe,KAAQj26B,EAAO,CAYnD,IARA3b,GAAoB,EAGpB2b,EAAOA,GAAQi26B,EAAe,GAG9BA,GAAiB5x7B,GAAW,EAEpB0x7B,KAIPx9tB,EAAOjsO,MAAOg6O,EAAMpxO,EAAM+g8B,EAAgBj26B,IACnC,EAAIxyB,IAAY,GAAMA,EAAQwY,IAAiB3B,GAAW,MAAW,IAC3E0x7B,EAAgB,GAEjBE,GAAgCzo8B,EAIjCyo8B,GAAgC,EAChC19tB,EAAOjsO,MAAOg6O,EAAMpxO,EAAM+g8B,EAAgBj26B,GAG1C616B,EAAaA,GAAc,EAC5B,CAeA,OAbKA,IACJI,GAAiBA,IAAkB5x7B,GAAW,EAG9Cyx7B,EAAWD,EAAY,GACtBI,GAAkBJ,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACT5ujB,IACJA,EAAMjnX,KAAOA,EACbinX,EAAM53a,MAAQ4m+B,EACdhvjB,EAAM33a,IAAMwm+B,IAGPA,CACR,CAGA,IAAII,GAAoB,CAAC,EAEzB,SAASC,GAAmB7vtB,GAC3B,IAAItoK,EACH4N,EAAM06J,EAAKz8Q,cACXkB,EAAWu7Q,EAAKv7Q,SAChBq0D,EAAU826B,GAAmBnr+B,GAE9B,OAAKq0D,IAIL4+C,EAAO4N,EAAIt7G,KAAKyiG,YAAa6Y,EAAIj8F,cAAe5kB,IAChDq0D,EAAUm5M,EAAOxsQ,IAAKiyG,EAAM,WAE5BA,EAAKpzG,WAAWkoG,YAAakL,GAEZ,SAAZ5+C,IACJA,EAAU,SAEX826B,GAAmBnr+B,GAAaq0D,EAEzBA,EACR,CAEA,SAASg36B,GAAU7i+B,EAAUi0C,GAO5B,IANA,IAAI4X,EAASknN,EACZ96O,EAAS,GACTpyB,EAAQ,EACRpC,EAASzD,EAASyD,OAGXoC,EAAQpC,EAAQoC,KACvBktQ,EAAO/yQ,EAAU6F,IACNkzB,QAIX8yB,EAAUknN,EAAKh6O,MAAM8yB,QAChB5X,GAKa,SAAZ4X,IACJ5zB,EAAQpyB,GAAU079B,EAASr+9B,IAAK6vQ,EAAM,YAAe,KAC/C96O,EAAQpyB,KACbktQ,EAAKh6O,MAAM8yB,QAAU,KAGK,KAAvBknN,EAAKh6O,MAAM8yB,SAAkBu26B,GAAoBrvtB,KACrD96O,EAAQpyB,GAAU+89B,GAAmB7vtB,KAGrB,SAAZlnN,IACJ5zB,EAAQpyB,GAAU,OAGlB079B,EAASn+9B,IAAK2vQ,EAAM,UAAWlnN,KAMlC,IAAMhmD,EAAQ,EAAGA,EAAQpC,EAAQoC,IACR,MAAnBoyB,EAAQpyB,KACZ7F,EAAU6F,GAAQkzB,MAAM8yB,QAAU5zB,EAAQpyB,IAI5C,OAAO7F,CACR,CAEAglQ,EAAO7gQ,GAAGkuG,OAAQ,CACjBp+D,KAAM,WACL,OAAO4u7B,GAAUxz9B,MAAM,EACxB,EACA+kC,KAAM,WACL,OAAOyu7B,GAAUxz9B,KAClB,EACAgoP,OAAQ,SAAUr4P,GACjB,MAAsB,kBAAVA,EACJA,EAAQqQ,KAAK4kC,OAAS5kC,KAAK+kC,OAG5B/kC,KAAK4Q,KAAM,WACZmi9B,GAAoB/y9B,MACxB21P,EAAQ31P,MAAO4kC,OAEf+wN,EAAQ31P,MAAO+kC,MAEjB,EACD,IAED,IAUEqiL,GACAnlO,GAXEwx+B,GAAiB,wBAEjBC,GAAW,iCAEXC,GAAc,qCAMhBvswB,GADc3+N,EAASy1Q,yBACR/tK,YAAa1nG,EAASskB,cAAe,SACpD9qB,GAAQwG,EAASskB,cAAe,UAM3B9O,aAAc,OAAQ,SAC5Bhc,GAAMgc,aAAc,UAAW,WAC/Bhc,GAAMgc,aAAc,OAAQ,KAE5BmpN,GAAIj3H,YAAaluG,IAIjB0xY,EAAQigmB,WAAaxswB,GAAIwvC,WAAW,GAAOA,WAAW,GAAOuH,UAAU63C,QAIvE5uF,GAAIx8B,UAAY,yBAChB+oM,EAAQkgmB,iBAAmBzswB,GAAIwvC,WAAW,GAAOuH,UAAU7tP,aAK3D82M,GAAIx8B,UAAY,oBAChB+oM,EAAQruV,SAAW8hL,GAAI+2C,UAKxB,IAAIL,GAAU,CAKbY,MAAO,CAAE,EAAG,UAAW,YACvBpyL,IAAK,CAAE,EAAG,oBAAqB,uBAC/Bg7T,GAAI,CAAE,EAAG,iBAAkB,oBAC3B1oI,GAAI,CAAE,EAAG,qBAAsB,yBAE/Bl/I,SAAU,CAAE,EAAG,GAAI,KAYpB,SAAS12B,GAAQ7/D,EAAS64D,GAIzB,IAAIn8D,EAYJ,OATCA,OAD4C,IAAjCsD,EAAQqhK,qBACbrhK,EAAQqhK,qBAAsBxoG,GAAO,UAEI,IAA7B74D,EAAQm2O,iBACpBn2O,EAAQm2O,iBAAkBt9K,GAAO,KAGjC,QAGMlrF,IAARkrF,GAAqBA,GAAO75F,EAAUghC,EAAS64D,GAC5C2zK,EAAO7jP,MAAO,CAAEqX,GAAWtD,GAG5BA,CACR,CAIA,SAASiu8B,GAAe7kqB,EAAO8kqB,GAI9B,IAHA,IAAI1u+B,EAAI,EACPmzB,EAAIy2S,EAAM76T,OAEH/O,EAAImzB,EAAGnzB,IACd6s+B,EAASn+9B,IACRk7T,EAAO5pU,GACP,cACC0u+B,GAAe7B,EAASr+9B,IAAKkg+B,EAAa1u+B,GAAK,cAGnD,CA7CAy4Q,GAAQQ,MAAQR,GAAQS,MAAQT,GAAQU,SAAWV,GAAQW,QAAUX,GAAQY,MAC7EZ,GAAQa,GAAKb,GAAQc,GAGf+0H,EAAQruV,SACbw4N,GAAQO,SAAWP,GAAQx4N,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIkj7B,GAAQ,YAEZ,SAASwL,GAAe/kqB,EAAO9lS,EAAS0+2B,EAASzgc,EAAWo3a,GAO3D,IANA,IAAI96mB,EAAM1+O,EAAKg9D,EAAK1/B,EAAMmb,EAAUz3C,EACnC8oE,EAAW3lE,EAAQ+0O,yBACnB/1H,EAAQ,GACR9iJ,EAAI,EACJmzB,EAAIy2S,EAAM76T,OAEH/O,EAAImzB,EAAGnzB,IAGd,IAFAq+Q,EAAOurD,EAAO5pU,KAEQ,IAATq+Q,EAGZ,GAAwB,WAAnBoitB,EAAQpitB,GAIZ/N,EAAO7jP,MAAOq2H,EAAOu7H,EAAKj7J,SAAW,CAAEi7J,GAASA,QAG1C,GAAM8ktB,GAAMtm+B,KAAMwhR,GAIlB,CAUN,IATA1+O,EAAMA,GAAO8pE,EAASqB,YAAahnE,EAAQpc,cAAe,QAG1Di1E,GAAQ0x4B,GAASru8B,KAAMq+O,IAAU,CAAE,GAAI,KAAQ,GAAIt7Q,cACnDk6D,EAAOw7M,GAAS97K,IAAS87K,GAAQp+I,SACjC16F,EAAI4lK,UAAYtoI,EAAM,GAAMqzM,EAAOs+tB,cAAevwtB,GAASphN,EAAM,GAGjEt8B,EAAIs8B,EAAM,GACFt8B,KACPhB,EAAMA,EAAIm5O,UAKXxI,EAAO7jP,MAAOq2H,EAAOnjH,EAAImlG,aAGzBnlG,EAAM8pE,EAAS85B,YAGXw1I,YAAc,EACnB,MA1BCj2H,EAAMr0I,KAAMq1B,EAAQ+gG,eAAgBw5I,IAkCvC,IAHA50K,EAASsvK,YAAc,GAEvB/4Q,EAAI,EACMq+Q,EAAOv7H,EAAO9iJ,MAGvB,GAAK+hd,GAAazxM,EAAOpgC,QAASmuC,EAAM0jM,IAAe,EACjDo3a,GACJA,EAAQ1q3B,KAAM4vQ,QAgBhB,GAXAjmM,EAAW7Z,GAAY8/M,GAGvB1+O,EAAMgkE,GAAQ8F,EAASqB,YAAauzK,GAAQ,UAGvCjmM,GACJq25B,GAAe9u8B,GAIX6i3B,EAEJ,IADA7h3B,EAAI,EACM09O,EAAO1+O,EAAKgB,MAChB2t8B,GAAYzx+B,KAAMwhR,EAAK1zP,MAAQ,KACnC633B,EAAQ/z4B,KAAM4vQ,GAMlB,OAAO50K,CACR,CAGA,IACCol4B,GAAY,OACZC,GAAc,iDACdC,GAAiB,sBAElB,SAASr7N,KACR,OAAO,CACR,CAEA,SAASs7N,KACR,OAAO,CACR,CAQA,SAASC,GAAY5wtB,EAAM1zP,GAC1B,OAAS0zP,IAMV,WACC,IACC,OAAOj7Q,EAAS6wb,aACjB,CAAE,MAAQ5wU,GAAQ,CACnB,CAVmB6r3B,KAAqC,UAATvk9B,EAC/C,CAWA,SAAS26F,GAAI+4J,EAAME,EAAOj8I,EAAU5xH,EAAMjB,EAAIivQ,GAC7C,IAAIywtB,EAAQxk9B,EAGZ,GAAsB,iBAAV4zP,EAAqB,CAShC,IAAM5zP,IANmB,iBAAb23G,IAGX5xH,EAAOA,GAAQ4xH,EACfA,OAAW7wH,GAEE8sQ,EACbj5J,GAAI+4J,EAAM1zP,EAAM23G,EAAU5xH,EAAM6tQ,EAAO5zP,GAAQ+zP,GAEhD,OAAOL,CACR,CAqBA,GAnBa,MAAR3tQ,GAAsB,MAANjB,GAGpBA,EAAK6yH,EACL5xH,EAAO4xH,OAAW7wH,GACD,MAANhC,IACc,iBAAb6yH,GAGX7yH,EAAKiB,EACLA,OAAOe,IAIPhC,EAAKiB,EACLA,EAAO4xH,EACPA,OAAW7wH,KAGD,IAAPhC,EACJA,EAAKu/9B,QACC,IAAMv/9B,EACZ,OAAO4uQ,EAeR,OAZa,IAARK,IACJywtB,EAAS1/9B,EACTA,EAAK,SAAUqX,GAId,OADAwpP,IAAS1oI,IAAK9gH,GACPqo9B,EAAO1z9B,MAAOd,KAAM7L,UAC5B,EAGAW,EAAG2zL,KAAO+ryB,EAAO/ryB,OAAU+ryB,EAAO/ryB,KAAOktE,EAAOltE,SAE1Ci7E,EAAK9yP,KAAM,WACjB+kP,EAAOxpP,MAAM7Y,IAAK0M,KAAM4jQ,EAAO9uQ,EAAIiB,EAAM4xH,EAC1C,EACD,CA6aA,SAAS8s2B,GAAgBl37B,EAAIvtB,EAAMsk9B,GAG5BA,GAQNpC,EAASn+9B,IAAKwpC,EAAIvtB,GAAM,GACxB2lP,EAAOxpP,MAAM7Y,IAAKiqC,EAAIvtB,EAAM,CAC3B0mQ,WAAW,EACXx4N,QAAS,SAAU/xC,GAClB,IAAIuo9B,EAAUvh+B,EACb29O,EAAQohvB,EAASr+9B,IAAKmM,KAAMgQ,GAE7B,GAAyB,EAAlB7D,EAAMwo9B,WAAmB309B,KAAMgQ,IAKrC,GAAM8gO,EAAM18O,QAiCEuhQ,EAAOxpP,MAAMm9rB,QAASt5rB,IAAU,CAAC,GAAI4k9B,cAClDzo9B,EAAMm3P,uBAfN,GAdAxyB,EAAQh2O,EAAMuF,KAAMlM,WACpB+99B,EAASn+9B,IAAKiM,KAAMgQ,EAAM8gO,GAK1B4jvB,EAAWJ,EAAYt09B,KAAMgQ,GAC7BhQ,KAAMgQ,KAED8gO,KADL39O,EAAS++9B,EAASr+9B,IAAKmM,KAAMgQ,KACJ0k9B,EACxBxC,EAASn+9B,IAAKiM,KAAMgQ,GAAM,GAE1B7c,EAAS,CAAC,EAEN29O,IAAU39O,EAKd,OAFAgZ,EAAMk3P,2BACNl3P,EAAMwgH,iBACCx5H,EAAOxN,WAeLmrP,EAAM18O,SAGjB899B,EAASn+9B,IAAKiM,KAAMgQ,EAAM,CACzBrqB,MAAOgwQ,EAAOxpP,MAAMg5C,QAInBwwM,EAAO3yJ,OAAQ8tI,EAAO,GAAK6kB,EAAOgpQ,MAAMv+f,WACxC0wO,EAAMh2O,MAAO,GACbkF,QAKFmM,EAAMk3P,2BAER,UA3EkCvsQ,IAA7Bo79B,EAASr+9B,IAAK0pC,EAAIvtB,IACtB2lP,EAAOxpP,MAAM7Y,IAAKiqC,EAAIvtB,EAAM+ovB,GA4E/B,CAxfApjgB,EAAOxpP,MAAQ,CAEd40G,OAAQ,CAAC,EAETztH,IAAK,SAAUowQ,EAAME,EAAO1lN,EAASnoD,EAAM4xH,GAE1C,IAAIkt2B,EAAaC,EAAa9v8B,EAC7BuE,EAAQ3oB,EAAGm09B,EACXzrR,EAASv2J,EAAU/iiB,EAAM410B,EAAYovI,EACrCC,EAAW/C,EAASr+9B,IAAK6vQ,GAG1B,GAAMuutB,EAAYvutB,GAuClB,IAlCKxlN,EAAQA,UAEZA,GADA226B,EAAc326B,GACQA,QACtBypE,EAAWkt2B,EAAYlt2B,UAKnBA,GACJguI,EAAO96P,KAAKoge,gBAAiBvye,GAAiBi/H,GAIzCzpE,EAAQuqI,OACbvqI,EAAQuqI,KAAOktE,EAAOltE,SAIfl/J,EAAS0r8B,EAAS1r8B,UACzBA,EAAS0r8B,EAAS1r8B,OAASz/B,OAAO4W,OAAQ,QAEnCo09B,EAAcG,EAAS1tvB,UAC9ButvB,EAAcG,EAAS1tvB,OAAS,SAAUviP,GAIzC,YAAyB,IAAX2wQ,GAA0BA,EAAOxpP,MAAM+o9B,YAAclw+B,EAAEgrB,KACpE2lP,EAAOxpP,MAAMunF,SAAS5yF,MAAO4iQ,EAAMvvQ,gBAAc2C,CACnD,GAKD8J,GADAgjQ,GAAUA,GAAS,IAAK5/Q,MAAO6r+B,IAAmB,CAAE,KAC1Cz79B,OACFwM,KAEPoP,EAAOgl9B,GADPhw8B,EAAMov8B,GAAe/u8B,KAAMu+O,EAAOhjQ,KAAS,IACpB,GACvBgl1B,GAAe5g0B,EAAK,IAAO,IAAK9jC,MAAO,KAAMkS,OAGvC4c,IAKNs5rB,EAAU3zc,EAAOxpP,MAAMm9rB,QAASt5rB,IAAU,CAAC,EAG3CA,GAAS23G,EAAW2hlB,EAAQsrR,aAAetrR,EAAQ6rR,WAAcnl9B,EAGjEs5rB,EAAU3zc,EAAOxpP,MAAMm9rB,QAASt5rB,IAAU,CAAC,EAG3C+k9B,EAAYp/tB,EAAO3yJ,OAAQ,CAC1BhzF,KAAMA,EACNgl9B,SAAUA,EACVj/9B,KAAMA,EACNmoD,QAASA,EACTuqI,KAAMvqI,EAAQuqI,KACd9gE,SAAUA,EACVon2B,aAAcpn2B,GAAYguI,EAAOyiC,KAAKp0S,MAAM+q+B,aAAa7s+B,KAAMylI,GAC/D+uJ,UAAWkvkB,EAAW1n1B,KAAM,MAC1B229B,IAGK9hb,EAAWxphB,EAAQvZ,OAC1B+iiB,EAAWxphB,EAAQvZ,GAAS,IACnBol9B,cAAgB,EAGnB9rR,EAAQl6R,QACiD,IAA9Dk6R,EAAQl6R,MAAM/ua,KAAMqjQ,EAAM3tQ,EAAM6v1B,EAAYkvI,IAEvCpxtB,EAAKxrQ,kBACTwrQ,EAAKxrQ,iBAAkB8X,EAAM8k9B,IAK3BxrR,EAAQh2sB,MACZg2sB,EAAQh2sB,IAAI+M,KAAMqjQ,EAAMqxtB,GAElBA,EAAU726B,QAAQuqI,OACvBssyB,EAAU726B,QAAQuqI,KAAOvqI,EAAQuqI,OAK9B9gE,EACJorb,EAAShmhB,OAAQgmhB,EAASqib,gBAAiB,EAAGL,GAE9Chib,EAASj/iB,KAAMih+B,GAIhBp/tB,EAAOxpP,MAAM40G,OAAQ/wG,IAAS,EAGhC,EAGA4yB,OAAQ,SAAU8gO,EAAME,EAAO1lN,EAASypE,EAAU0t2B,GAEjD,IAAIrv8B,EAAGsv8B,EAAWtw8B,EACjBuE,EAAQ3oB,EAAGm09B,EACXzrR,EAASv2J,EAAU/iiB,EAAM410B,EAAYovI,EACrCC,EAAW/C,EAAShwtB,QAASwB,IAAUwutB,EAASr+9B,IAAK6vQ,GAEtD,GAAMuxtB,IAAe1r8B,EAAS0r8B,EAAS1r8B,QAAvC,CAOA,IADA3oB,GADAgjQ,GAAUA,GAAS,IAAK5/Q,MAAO6r+B,IAAmB,CAAE,KAC1Cz79B,OACFwM,KAMP,GAJAoP,EAAOgl9B,GADPhw8B,EAAMov8B,GAAe/u8B,KAAMu+O,EAAOhjQ,KAAS,IACpB,GACvBgl1B,GAAe5g0B,EAAK,IAAO,IAAK9jC,MAAO,KAAMkS,OAGvC4c,EAAN,CAeA,IARAs5rB,EAAU3zc,EAAOxpP,MAAMm9rB,QAASt5rB,IAAU,CAAC,EAE3C+iiB,EAAWxphB,EADXvZ,GAAS23G,EAAW2hlB,EAAQsrR,aAAetrR,EAAQ6rR,WAAcnl9B,IACpC,GAC7BgV,EAAMA,EAAK,IACV,IAAI8M,OAAQ,UAAY8zzB,EAAW1n1B,KAAM,iBAAoB,WAG9Do39B,EAAYtv8B,EAAI+shB,EAAS3+iB,OACjB4xB,KACP+u8B,EAAYhib,EAAU/shB,IAEfqv8B,GAAeL,IAAaD,EAAUC,UACzC926B,GAAWA,EAAQuqI,OAASssyB,EAAUtsyB,MACtCzjK,IAAOA,EAAI9iC,KAAM6y+B,EAAUr+sB,YAC3B/uJ,GAAYA,IAAaot2B,EAAUpt2B,WACxB,OAAbA,IAAqBot2B,EAAUpt2B,YAChCorb,EAAShmhB,OAAQ/G,EAAG,GAEf+u8B,EAAUpt2B,UACdorb,EAASqib,gBAEL9rR,EAAQ1mqB,QACZ0mqB,EAAQ1mqB,OAAOviC,KAAMqjQ,EAAMqxtB,IAOzBO,IAAcvib,EAAS3+iB,SACrBk1sB,EAAQhyD,WACkD,IAA/DgyD,EAAQhyD,SAASj3oB,KAAMqjQ,EAAMkilB,EAAYqvI,EAAS1tvB,SAElDouB,EAAO4/tB,YAAa7xtB,EAAM1zP,EAAMil9B,EAAS1tvB,eAGnCh+M,EAAQvZ,GAtChB,MAJC,IAAMA,KAAQuZ,EACbosO,EAAOxpP,MAAMy2B,OAAQ8gO,EAAM1zP,EAAO4zP,EAAOhjQ,GAAKs9C,EAASypE,GAAU,GA8C/DguI,EAAO2wtB,cAAe/87B,IAC1B2o8B,EAAStv7B,OAAQ8gO,EAAM,gBA5DxB,CA8DD,EAEAhwK,SAAU,SAAUomP,GAEnB,IAAIz0V,EAAG2gC,EAAGH,EAAKr5B,EAASuo+B,EAAWS,EAClCnh+B,EAAO,IAAIC,MAAOH,UAAUC,QAG5B+X,EAAQwpP,EAAOxpP,MAAMsp9B,IAAK37oB,GAE1Bi5N,GACEm/a,EAASr+9B,IAAKmM,KAAM,WAAclW,OAAO4W,OAAQ,OAC/CyL,EAAM6D,OAAU,GACpBs5rB,EAAU3zc,EAAOxpP,MAAMm9rB,QAASn9rB,EAAM6D,OAAU,CAAC,EAKlD,IAFA3b,EAAM,GAAM8X,EAEN9mB,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAClCgP,EAAMhP,GAAM8O,UAAW9O,GAMxB,GAHA8mB,EAAMup9B,eAAiB119B,MAGlBspsB,EAAQqsR,cAA2D,IAA5CrsR,EAAQqsR,YAAYt19B,KAAML,KAAMmM,GAA5D,CASA,IAJAqp9B,EAAe7/tB,EAAOxpP,MAAM4miB,SAAS1yiB,KAAML,KAAMmM,EAAO4miB,GAGxD1tjB,EAAI,GACMmH,EAAUgp+B,EAAcnw+B,QAAY8mB,EAAMk0U,wBAInD,IAHAl0U,EAAM+kU,cAAgB1kV,EAAQk3Q,KAE9B19O,EAAI,GACM+u8B,EAAYvo+B,EAAQumjB,SAAU/shB,QACtC7Z,EAAMo3P,iCAIDp3P,EAAMyp9B,aAAsC,IAAxBb,EAAUr+sB,YACnCvqQ,EAAMyp9B,WAAW1z+B,KAAM6y+B,EAAUr+sB,aAEjCvqQ,EAAM4o9B,UAAYA,EAClB5o9B,EAAMpW,KAAOg/9B,EAAUh/9B,UAKVe,KAHb+uB,IAAU8vO,EAAOxpP,MAAMm9rB,QAASyrR,EAAUC,WAAc,CAAC,GAAIztvB,QAC5DwtvB,EAAU726B,SAAUp9C,MAAOtU,EAAQk3Q,KAAMrvQ,MAGT,KAAzB8X,EAAMhZ,OAAS0yB,KACrB1Z,EAAMwgH,iBACNxgH,EAAMm3P,oBAYX,OAJKgmc,EAAQusR,cACZvsR,EAAQusR,aAAax19B,KAAML,KAAMmM,GAG3BA,EAAMhZ,MAxCb,CAyCD,EAEA4/iB,SAAU,SAAU5miB,EAAO4miB,GAC1B,IAAI1tjB,EAAG0v+B,EAAW3Z,EAAK0a,EAAiBC,EACvCP,EAAe,GACfJ,EAAgBrib,EAASqib,cACzB3y7B,EAAMt2B,EAAMpe,OAGb,GAAKqn+B,GAIJ3y7B,EAAIgmE,YAOc,UAAft8F,EAAM6D,MAAoB7D,EAAM+lR,QAAU,GAE7C,KAAQzvP,IAAQziC,KAAMyiC,EAAMA,EAAIz6C,YAAcgY,KAI7C,GAAsB,IAAjByiC,EAAIgmE,WAAoC,UAAft8F,EAAM6D,OAAqC,IAAjByyB,EAAIuL,UAAsB,CAGjF,IAFA8n7B,EAAkB,GAClBC,EAAmB,CAAC,EACd1w+B,EAAI,EAAGA,EAAI+v+B,EAAe/v+B,SAMEyR,IAA5Bi/9B,EAFL3a,GAHA2Z,EAAYhib,EAAU1tjB,IAGNsiI,SAAW,OAG1Bou2B,EAAkB3a,GAAQ2Z,EAAUhG,aACnCp5tB,EAAQyltB,EAAKp78B,MAAOxJ,MAAOisC,IAAS,EACpCkzN,EAAO96P,KAAMug9B,EAAKp78B,KAAM,KAAM,CAAEyiC,IAAQruC,QAErC2h+B,EAAkB3a,IACtB0a,EAAgBhi+B,KAAMih+B,GAGnBe,EAAgB1h+B,QACpBoh+B,EAAa1h+B,KAAM,CAAE4vQ,KAAMjhO,EAAKswgB,SAAU+ib,GAE5C,CAUF,OALArz7B,EAAMziC,KACDo19B,EAAgBrib,EAAS3+iB,QAC7Boh+B,EAAa1h+B,KAAM,CAAE4vQ,KAAMjhO,EAAKswgB,SAAUA,EAASj4iB,MAAOs69B,KAGpDI,CACR,EAEAQ,QAAS,SAAUzi+B,EAAM8kE,GACxBvuE,OAAOwY,eAAgBqzP,EAAOgpQ,MAAMv+f,UAAW7M,EAAM,CACpDm4B,YAAY,EACZuL,cAAc,EAEdpjC,IAAKgf,EAAYwlD,GAChB,WACC,GAAKr4D,KAAK87gB,cACR,OAAOzjd,EAAMr4D,KAAK87gB,cAErB,EACA,WACC,GAAK97gB,KAAK87gB,cACR,OAAO97gB,KAAK87gB,cAAevohB,EAE9B,EAEDQ,IAAK,SAAUpO,GACdmE,OAAOwY,eAAgBtC,KAAMzM,EAAM,CAClCm4B,YAAY,EACZuL,cAAc,EACdxL,UAAU,EACV9lC,MAAOA,GAET,GAEF,EAEA8v+B,IAAK,SAAU35c,GACd,OAAOA,EAAenmR,EAAOoH,SAC5B++Q,EACA,IAAInmR,EAAOgpQ,MAAOmd,EACpB,EAEAwtL,QAAS,CACRtgf,KAAM,CAGLitwB,UAAU,GAEX7l2B,MAAO,CAGNg/S,MAAO,SAAUr5a,GAIhB,IAAIwnC,EAAKv9B,MAAQjK,EAWjB,OARK099B,GAAevx+B,KAAMq7C,EAAGvtB,OAC5ButB,EAAG6yF,OAASjoI,EAAUo1C,EAAI,UAG1Bk37B,GAAgBl37B,EAAI,QAASw7tB,KAIvB,CACR,EACA5zsB,QAAS,SAAUpvD,GAIlB,IAAIwnC,EAAKv9B,MAAQjK,EAUjB,OAPK099B,GAAevx+B,KAAMq7C,EAAGvtB,OAC5ButB,EAAG6yF,OAASjoI,EAAUo1C,EAAI,UAE1Bk37B,GAAgBl37B,EAAI,UAId,CACR,EAIAmiF,SAAU,SAAUvzG,GACnB,IAAIpe,EAASoe,EAAMpe,OACnB,OAAO0l+B,GAAevx+B,KAAM6L,EAAOiiB,OAClCjiB,EAAOqiI,OAASjoI,EAAU4F,EAAQ,UAClCmk+B,EAASr+9B,IAAK9F,EAAQ,UACtB5F,EAAU4F,EAAQ,IACpB,GAGDmo+B,aAAc,CACbL,aAAc,SAAU1p9B,QAIDrV,IAAjBqV,EAAMhZ,QAAwBgZ,EAAM2vgB,gBACxC3vgB,EAAM2vgB,cAAc7pb,YAAc9lF,EAAMhZ,OAE1C,KA4FHwiQ,EAAO4/tB,YAAc,SAAU7xtB,EAAM1zP,EAAMu3N,GAGrCm8B,EAAKvrQ,qBACTurQ,EAAKvrQ,oBAAqB6X,EAAMu3N,EAElC,EAEAouB,EAAOgpQ,MAAQ,SAAUt3Z,EAAKj1E,GAG7B,KAAQpyB,gBAAgB21P,EAAOgpQ,OAC9B,OAAO,IAAIhpQ,EAAOgpQ,MAAOt3Z,EAAKj1E,GAI1Bi1E,GAAOA,EAAIr3F,MACfhQ,KAAK87gB,cAAgBz0a,EACrBrnG,KAAKgQ,KAAOq3F,EAAIr3F,KAIhBhQ,KAAK+iQ,mBAAqB17J,EAAI27J,uBACHlsQ,IAAzBuwG,EAAI27J,mBAGgB,IAApB37J,EAAIpV,YACL8mqB,GACAs7N,GAKDr09B,KAAKjS,OAAWs5G,EAAIt5G,QAAkC,IAAxBs5G,EAAIt5G,OAAO06G,SACxCpB,EAAIt5G,OAAO/F,WACXq/G,EAAIt5G,OAELiS,KAAKkxU,cAAgB7pO,EAAI6pO,cACzBlxU,KAAK4hQ,cAAgBv6J,EAAIu6J,eAIzB5hQ,KAAKgQ,KAAOq3F,EAIRj1E,GACJujO,EAAO3yJ,OAAQhjG,KAAMoyB,GAItBpyB,KAAK8kb,UAAYz9U,GAAOA,EAAIy9U,WAAaj8a,KAAKC,MAG9C9I,KAAM21P,EAAOoH,UAAY,CAC1B,EAIApH,EAAOgpQ,MAAMv+f,UAAY,CACxBK,YAAak1P,EAAOgpQ,MACpB57P,mBAAoBsxtB,GACpBh0oB,qBAAsBg0oB,GACtB9wtB,8BAA+B8wtB,GAC/B8B,aAAa,EAEbxp2B,eAAgB,WACf,IAAI3nI,EAAIgb,KAAK87gB,cAEb97gB,KAAK+iQ,mBAAqBg2f,GAErB/zwB,IAAMgb,KAAKm29B,aACfnx+B,EAAE2nI,gBAEJ,EACA22I,gBAAiB,WAChB,IAAIt+Q,EAAIgb,KAAK87gB,cAEb97gB,KAAKqgV,qBAAuB04a,GAEvB/zwB,IAAMgb,KAAKm29B,aACfnx+B,EAAEs+Q,iBAEJ,EACAD,yBAA0B,WACzB,IAAIr+Q,EAAIgb,KAAK87gB,cAEb97gB,KAAKujQ,8BAAgCw1f,GAEhC/zwB,IAAMgb,KAAKm29B,aACfnx+B,EAAEq+Q,2BAGHrjQ,KAAKsjQ,iBACN,GAID3N,EAAO/kP,KAAM,CACZw0a,QAAQ,EACRP,SAAS,EACTpsX,YAAY,EACZuwX,gBAAgB,EAChBl3J,SAAS,EACTiuC,QAAQ,EACR6kH,YAAY,EACZ7yJ,SAAS,EACT8zJ,OAAO,EACPC,OAAO,EACP9zJ,UAAU,EACVtwF,MAAM,EACN,MAAQ,EACRlzG,MAAM,EACNs5V,UAAU,EACVt9b,KAAK,EACLotT,SAAS,EACT1lB,QAAQ,EACR6zJ,SAAS,EACTtpZ,SAAS,EACTC,SAAS,EACTL,SAAS,EACTC,SAAS,EACTuhZ,WAAW,EACX0I,aAAa,EACb54V,SAAS,EACTE,SAAS,EACTk7V,eAAe,EACf9C,WAAW,EACX7pZ,SAAS,EAET61P,MAAO,SAAU9lR,GAChB,IAAI+lR,EAAS/lR,EAAM+lR,OAGnB,OAAoB,MAAf/lR,EAAM8lR,OAAiBiisB,GAAUhy+B,KAAMiqB,EAAM6D,MACxB,MAAlB7D,EAAM27a,SAAmB37a,EAAM27a,SAAW37a,EAAMyrS,SAIlDzrS,EAAM8lR,YAAoBn7R,IAAXo7R,GAAwBiisB,GAAYjy+B,KAAMiqB,EAAM6D,MACtD,EAATkiR,EACG,EAGM,EAATA,EACG,EAGM,EAATA,EACG,EAGD,EAGD/lR,EAAM8lR,KACd,GACEt8B,EAAOxpP,MAAM6p9B,SAEhBrguB,EAAO/kP,KAAM,CAAEogF,MAAO,UAAWD,KAAM,YAAc,SAAU/gF,EAAM4k9B,GACpEj/tB,EAAOxpP,MAAMm9rB,QAASt5rB,GAAS,CAG9Bo/Z,MAAO,WAQN,OAHAqljB,GAAgBz09B,KAAMgQ,EAAMsk9B,KAGrB,CACR,EACAnv6B,QAAS,WAMR,OAHAsv6B,GAAgBz09B,KAAMgQ,IAGf,CACR,EAEA4k9B,aAAcA,EAEhB,GAUAj/tB,EAAO/kP,KAAM,CACZ0sP,WAAY,YACZD,WAAY,WACZj5M,aAAc,cACdI,aAAc,cACZ,SAAU3R,EAAM4i7B,GAClB9/tB,EAAOxpP,MAAMm9rB,QAASz2pB,GAAS,CAC9B+h7B,aAAca,EACdN,SAAUM,EAEVluvB,OAAQ,SAAUp7N,GACjB,IAAI0Z,EAEH87O,EAAUx1P,EAAMy1P,cAChBmztB,EAAY5o9B,EAAM4o9B,UASnB,OALMpztB,IAAaA,IANT3hQ,MAMgC21P,EAAOnuQ,SANvCwY,KAMyD2hQ,MAClEx1P,EAAM6D,KAAO+k9B,EAAUC,SACvBnv8B,EAAMkv8B,EAAU726B,QAAQp9C,MAAOd,KAAM7L,WACrCgY,EAAM6D,KAAOyl9B,GAEP5v8B,CACR,EAEF,GAEA8vO,EAAO7gQ,GAAGkuG,OAAQ,CAEjB2H,GAAI,SAAUi5J,EAAOj8I,EAAU5xH,EAAMjB,GACpC,OAAO61G,GAAI3qG,KAAM4jQ,EAAOj8I,EAAU5xH,EAAMjB,EACzC,EACAivQ,IAAK,SAAUH,EAAOj8I,EAAU5xH,EAAMjB,GACrC,OAAO61G,GAAI3qG,KAAM4jQ,EAAOj8I,EAAU5xH,EAAMjB,EAAI,EAC7C,EACAm4H,IAAK,SAAU22I,EAAOj8I,EAAU7yH,GAC/B,IAAIig+B,EAAW/k9B,EACf,GAAK4zP,GAASA,EAAMj3I,gBAAkBi3I,EAAMmxtB,UAW3C,OARAA,EAAYnxtB,EAAMmxtB,UAClBp/tB,EAAQiO,EAAM8xtB,gBAAiBzo2B,IAC9B8n2B,EAAUr+sB,UACTq+sB,EAAUC,SAAW,IAAMD,EAAUr+sB,UACrCq+sB,EAAUC,SACXD,EAAUpt2B,SACVot2B,EAAU726B,SAEJl+C,KAER,GAAsB,iBAAV4jQ,EAAqB,CAGhC,IAAM5zP,KAAQ4zP,EACb5jQ,KAAKitH,IAAKj9G,EAAM23G,EAAUi8I,EAAO5zP,IAElC,OAAOhQ,IACR,CAUA,OATkB,IAAb2nH,GAA0C,mBAAbA,IAGjC7yH,EAAK6yH,EACLA,OAAW7wH,IAEA,IAAPhC,IACJA,EAAKu/9B,IAECr09B,KAAK4Q,KAAM,WACjB+kP,EAAOxpP,MAAMy2B,OAAQ5iC,KAAM4jQ,EAAO9uQ,EAAI6yH,EACvC,EACD,IAID,IAKCyu2B,GAAe,wBAGfC,GAAW,oCACXC,GAAe,2CAGhB,SAASC,GAAoB7ytB,EAAM78J,GAClC,OAAK1+G,EAAUu7Q,EAAM,UACpBv7Q,EAA+B,KAArB0+G,EAAQ4B,SAAkB5B,EAAUA,EAAQ+hB,WAAY,OAE3D+sI,EAAQ+N,GAAOlsJ,SAAU,SAAW,IAGrCksJ,CACR,CAGA,SAAS8ytB,GAAe9ytB,GAEvB,OADAA,EAAK1zP,MAAyC,OAAhC0zP,EAAK5lQ,aAAc,SAAsB,IAAM4lQ,EAAK1zP,KAC3D0zP,CACR,CACA,SAAS+ytB,GAAe/ytB,GAOvB,MAN2C,WAApCA,EAAK1zP,MAAQ,IAAKlV,MAAO,EAAG,GAClC4oQ,EAAK1zP,KAAO0zP,EAAK1zP,KAAKlV,MAAO,GAE7B4oQ,EAAKvlQ,gBAAiB,QAGhBulQ,CACR,CAEA,SAASgztB,GAAgBrv3B,EAAKo3b,GAC7B,IAAIp5iB,EAAGmzB,EAAGxI,EAAgB2m9B,EAAUC,EAAUrt8B,EAE9C,GAAuB,IAAlBk1gB,EAAKh2b,SAAV,CAKA,GAAKyp3B,EAAShwtB,QAAS76J,KAEtB99E,EADW2o8B,EAASr+9B,IAAKwzG,GACP99E,QAKjB,IAAMvZ,KAFNki9B,EAAStv7B,OAAQ67f,EAAM,iBAETl1gB,EACb,IAAMlkC,EAAI,EAAGmzB,EAAI+Q,EAAQvZ,GAAO5b,OAAQ/O,EAAImzB,EAAGnzB,IAC9CswQ,EAAOxpP,MAAM7Y,IAAKmriB,EAAMzuhB,EAAMuZ,EAAQvZ,GAAQ3qB,IAO7C8s+B,EAASjwtB,QAAS76J,KACtBsv3B,EAAWxE,EAAST,OAAQrq3B,GAC5Buv3B,EAAWjhuB,EAAO3yJ,OAAQ,CAAC,EAAG2z3B,GAE9BxE,EAASp+9B,IAAK0qiB,EAAMm4b,GAvBrB,CAyBD,CAGA,SAASC,GAAUxv3B,EAAKo3b,GACvB,IAAIt2iB,EAAWs2iB,EAAKt2iB,SAASC,cAGX,UAAbD,GAAwBsr+B,GAAevx+B,KAAMmlH,EAAIr3F,MACrDyuhB,EAAKzoP,QAAU3uM,EAAI2uM,QAGK,UAAb7tT,GAAqC,aAAbA,IACnCs2iB,EAAKnuhB,aAAe+2F,EAAI/2F,aAE1B,CAEA,SAASwm9B,GAAU75wB,EAAY5oN,EAAM6a,EAAUsv2B,GAG9Cnq3B,EAAO43sB,EAAM53sB,GAEb,IAAIy6F,EAAUtgC,EAAOq50B,EAASkvF,EAAYhw+B,EAAMiiH,EAC/C3jH,EAAI,EACJmzB,EAAIykM,EAAW7oN,OACf4i+B,EAAWx+8B,EAAI,EACf7yB,EAAQ0O,EAAM,GACd4i+B,EAAkBpk9B,EAAYltB,GAG/B,GAAKsx+B,GACDz+8B,EAAI,GAAsB,iBAAV7yB,IAChBguY,EAAQigmB,YAAcyC,GAASn0+B,KAAMyD,GACxC,OAAOs3N,EAAWrsM,KAAM,SAAUpa,GACjC,IAAI8rF,EAAO26H,EAAW1jM,GAAI/iB,GACrByg+B,IACJ5i+B,EAAM,GAAM1O,EAAM0a,KAAML,KAAMxJ,EAAO8rF,EAAKt5F,SAE3C8t+B,GAAUx04B,EAAMjuF,EAAM6a,EAAUsv2B,EACjC,GAGD,GAAKhm2B,IAEJg2C,GADAsgC,EAAWkl4B,GAAe3/9B,EAAM4oN,EAAY,GAAIh2N,eAAe,EAAOg2N,EAAYuhqB,IACjE51vB,WAEmB,IAA/B95B,EAASq7B,WAAW/1H,SACxB06F,EAAWtgC,GAIPA,GAASgwzB,GAAU,CAOvB,IALAu4G,GADAlvF,EAAUlyoB,EAAO5iQ,IAAKi2F,GAAQ8F,EAAU,UAAY0n4B,KAC/Bpi+B,OAKb/O,EAAImzB,EAAGnzB,IACd0B,EAAO+nG,EAEFzpG,IAAM2x+B,IACVjw+B,EAAO4uQ,EAAO1wO,MAAOl+B,GAAM,GAAM,GAG5Bgw+B,GAIJphuB,EAAO7jP,MAAO+13B,EAAS7+yB,GAAQjiG,EAAM,YAIvCmoB,EAAS7O,KAAM48M,EAAY53N,GAAK0B,EAAM1B,GAGvC,GAAK0x+B,EAOJ,IANA/t3B,EAAM6+xB,EAASA,EAAQzz4B,OAAS,GAAInN,cAGpC0uQ,EAAO5iQ,IAAK804B,EAAS4uF,IAGfpx+B,EAAI,EAAGA,EAAI0x+B,EAAY1x+B,IAC5B0B,EAAO8g5B,EAASxi5B,GACXsu+B,GAAYzx+B,KAAM6E,EAAKipB,MAAQ,MAClCki9B,EAASR,OAAQ3q+B,EAAM,eACxB4uQ,EAAOnuQ,SAAUwhH,EAAKjiH,KAEjBA,EAAKsgH,KAA8C,YAArCtgH,EAAKipB,MAAQ,IAAK5nB,cAG/ButQ,EAAOuhuB,WAAanw+B,EAAK6+9B,UAC7BjwtB,EAAOuhuB,SAAUnw+B,EAAKsgH,IAAK,CAC1Bhb,MAAOtlG,EAAKslG,OAAStlG,EAAK+W,aAAc,UACtCkrG,GAGJ682B,EAAS9+9B,EAAKq3Q,YAAYr6Q,QAASuy+B,GAAc,IAAMvv+B,EAAMiiH,GAKlE,CAGD,OAAOi0G,CACR,CAEA,SAASr6K,GAAQ8gO,EAAM/7I,EAAUq5I,GAKhC,IAJA,IAAIj6Q,EACHohJ,EAAQxgB,EAAWguI,EAAO1kQ,OAAQ02H,EAAU+7I,GAASA,EACrDr+Q,EAAI,EAE4B,OAAvB0B,EAAOohJ,EAAO9iJ,IAAeA,IAChC27Q,GAA8B,IAAlBj6Q,EAAK0hH,UACtBktJ,EAAO0J,UAAWr2K,GAAQjiG,IAGtBA,EAAKiB,aACJg5Q,GAAYp9M,GAAY78D,IAC5B+s+B,GAAe9q4B,GAAQjiG,EAAM,WAE9BA,EAAKiB,WAAWkoG,YAAanpG,IAI/B,OAAO28Q,CACR,CAEA/N,EAAO3yJ,OAAQ,CACdix3B,cAAe,SAAUjr+B,GACxB,OAAOA,CACR,EAEAi8B,MAAO,SAAUy+O,EAAMyztB,EAAeC,GACrC,IAAI/x+B,EAAGmzB,EAAG6+8B,EAAaC,EACtBry8B,EAAQy+O,EAAK9M,WAAW,GACxB2guB,EAAS3z6B,GAAY8/M,GAGtB,KAAMiwH,EAAQkgmB,gBAAsC,IAAlBnwtB,EAAKj7J,UAAoC,KAAlBi7J,EAAKj7J,UAC3DktJ,EAAOg5tB,SAAUjrtB,IAMnB,IAHA4ztB,EAAetu4B,GAAQ/jE,GAGjB5/B,EAAI,EAAGmzB,GAFb6+8B,EAAcru4B,GAAQ06K,IAEOtvQ,OAAQ/O,EAAImzB,EAAGnzB,IAC3Cwx+B,GAAUQ,EAAahy+B,GAAKiy+B,EAAcjy+B,IAK5C,GAAK8x+B,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAeru4B,GAAQ06K,GACrC4ztB,EAAeA,GAAgBtu4B,GAAQ/jE,GAEjC5/B,EAAI,EAAGmzB,EAAI6+8B,EAAYjj+B,OAAQ/O,EAAImzB,EAAGnzB,IAC3Cqx+B,GAAgBW,EAAahy+B,GAAKiy+B,EAAcjy+B,SAGjDqx+B,GAAgBhztB,EAAMz+O,GAWxB,OANAqy8B,EAAetu4B,GAAQ/jE,EAAO,WACZ7wB,OAAS,GAC1B0/9B,GAAewD,GAAeC,GAAUvu4B,GAAQ06K,EAAM,WAIhDz+O,CACR,EAEAo6O,UAAW,SAAU4vD,GAKpB,IAJA,IAAIl5T,EAAM2tQ,EAAM1zP,EACfs5rB,EAAU3zc,EAAOxpP,MAAMm9rB,QACvBjktB,EAAI,OAE6ByR,KAAxB4sQ,EAAOurD,EAAO5pU,IAAqBA,IAC5C,GAAK4s+B,EAAYvutB,GAAS,CACzB,GAAO3tQ,EAAO2tQ,EAAMwutB,EAASn1tB,SAAc,CAC1C,GAAKhnQ,EAAKwzB,OACT,IAAMvZ,KAAQja,EAAKwzB,OACb+/qB,EAASt5rB,GACb2lP,EAAOxpP,MAAMy2B,OAAQ8gO,EAAM1zP,GAI3B2lP,EAAO4/tB,YAAa7xtB,EAAM1zP,EAAMja,EAAKwxO,QAOxCm8B,EAAMwutB,EAASn1tB,cAAYjmQ,CAC5B,CACK4sQ,EAAMyutB,EAASp1tB,WAInB2G,EAAMyutB,EAASp1tB,cAAYjmQ,EAE7B,CAEF,IAGD6+P,EAAO7gQ,GAAGkuG,OAAQ,CACjB/7C,OAAQ,SAAU0gE,GACjB,OAAO/kF,GAAQ5iC,KAAM2nH,GAAU,EAChC,EAEA/kF,OAAQ,SAAU+kF,GACjB,OAAO/kF,GAAQ5iC,KAAM2nH,EACtB,EAEA73F,KAAM,SAAUnqC,GACf,OAAO+r+B,EAAQ1x9B,KAAM,SAAUra,GAC9B,YAAiBmR,IAAVnR,EACNgwQ,EAAO7lO,KAAM9vB,MACbA,KAAK65P,QAAQjpP,KAAM,WACK,IAAlB5Q,KAAKyoG,UAAoC,KAAlBzoG,KAAKyoG,UAAqC,IAAlBzoG,KAAKyoG,WACxDzoG,KAAKo+P,YAAcz4Q,EAErB,EACF,EAAG,KAAMA,EAAOwO,UAAUC,OAC3B,EAEAm8H,OAAQ,WACP,OAAOum2B,GAAU929B,KAAM7L,UAAW,SAAUuvQ,GACpB,IAAlB1jQ,KAAKyoG,UAAoC,KAAlBzoG,KAAKyoG,UAAqC,IAAlBzoG,KAAKyoG,UAC3C8t3B,GAAoBv29B,KAAM0jQ,GAChCvzK,YAAauzK,EAEtB,EACD,EAEAW,QAAS,WACR,OAAOyytB,GAAU929B,KAAM7L,UAAW,SAAUuvQ,GAC3C,GAAuB,IAAlB1jQ,KAAKyoG,UAAoC,KAAlBzoG,KAAKyoG,UAAqC,IAAlBzoG,KAAKyoG,SAAiB,CACzE,IAAI16G,EAASwo+B,GAAoBv29B,KAAM0jQ,GACvC31Q,EAAO46H,aAAc+6I,EAAM31Q,EAAO66H,WACnC,CACD,EACD,EAEA14C,OAAQ,WACP,OAAO4m5B,GAAU929B,KAAM7L,UAAW,SAAUuvQ,GACtC1jQ,KAAKhY,YACTgY,KAAKhY,WAAW2gI,aAAc+6I,EAAM1jQ,KAEtC,EACD,EAEAmwE,MAAO,WACN,OAAO2m5B,GAAU929B,KAAM7L,UAAW,SAAUuvQ,GACtC1jQ,KAAKhY,YACTgY,KAAKhY,WAAW2gI,aAAc+6I,EAAM1jQ,KAAK0oH,YAE3C,EACD,EAEAmxI,MAAO,WAIN,IAHA,IAAI6J,EACHr+Q,EAAI,EAE2B,OAAtBq+Q,EAAO1jQ,KAAM3a,IAAeA,IACd,IAAlBq+Q,EAAKj7J,WAGTktJ,EAAO0J,UAAWr2K,GAAQ06K,GAAM,IAGhCA,EAAKtF,YAAc,IAIrB,OAAOp+P,IACR,EAEAilB,MAAO,SAAUky8B,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDp39B,KAAKjN,IAAK,WAChB,OAAO4iQ,EAAO1wO,MAAOjlB,KAAMm39B,EAAeC,EAC3C,EACD,EAEApu+B,KAAM,SAAUrD,GACf,OAAO+r+B,EAAQ1x9B,KAAM,SAAUra,GAC9B,IAAI+9Q,EAAO1jQ,KAAM,IAAO,CAAC,EACxB3a,EAAI,EACJmzB,EAAIxY,KAAK5L,OAEV,QAAe0C,IAAVnR,GAAyC,IAAlB+9Q,EAAKj7J,SAChC,OAAOi7J,EAAK94E,UAIb,GAAsB,iBAAVjlM,IAAuByw+B,GAAal0+B,KAAMyD,KACpDm4Q,IAAW41tB,GAASru8B,KAAM1/B,IAAW,CAAE,GAAI,KAAQ,GAAIyC,eAAkB,CAE1EzC,EAAQgwQ,EAAOs+tB,cAAetu+B,GAE9B,IACC,KAAQN,EAAImzB,EAAGnzB,IAIS,KAHvBq+Q,EAAO1jQ,KAAM3a,IAAO,CAAC,GAGXojH,WACTktJ,EAAO0J,UAAWr2K,GAAQ06K,GAAM,IAChCA,EAAK94E,UAAYjlM,GAInB+9Q,EAAO,CAGR,CAAE,MAAQ1+Q,GAAK,CAChB,CAEK0+Q,GACJ1jQ,KAAK65P,QAAQtpI,OAAQ5qI,EAEvB,EAAG,KAAMA,EAAOwO,UAAUC,OAC3B,EAEA6vQ,YAAa,WACZ,IAAIu6mB,EAAU,GAGd,OAAOs4G,GAAU929B,KAAM7L,UAAW,SAAUuvQ,GAC3C,IAAIj8Q,EAASuY,KAAKhY,WAEb2tQ,EAAOpgC,QAASv1N,KAAMw+2B,GAAY,IACtC7onB,EAAO0J,UAAWr2K,GAAQhpF,OACrBvY,GACJA,EAAO08Q,aAAcT,EAAM1jQ,MAK9B,EAAGw+2B,EACJ,IAGD7onB,EAAO/kP,KAAM,CACZ+soB,SAAU,SACV65U,UAAW,UACX7u2B,aAAc,SACd8u2B,YAAa,QACbC,WAAY,eACV,SAAUnk+B,EAAM4rC,GAClBw2N,EAAO7gQ,GAAIvB,GAAS,SAAUo0H,GAO7B,IANA,IAAIsnM,EACHppS,EAAM,GACNsrE,EAASwkK,EAAQhuI,GACjBzzE,EAAOi9C,EAAO/8F,OAAS,EACvB/O,EAAI,EAEGA,GAAK6uD,EAAM7uD,IAClB4pU,EAAQ5pU,IAAM6uD,EAAOl0C,KAAOA,KAAKilB,OAAO,GACxC0wO,EAAQxkK,EAAQ9rG,IAAO85C,GAAY8vR,GAInCn7T,EAAKgN,MAAO+kB,EAAKopS,EAAMp7T,OAGxB,OAAOmM,KAAK+l9B,UAAWlg8B,EACxB,CACD,GACA,IAAI8x8B,GAAY,IAAI7l8B,OAAQ,KAAO6g8B,GAAO,kBAAmB,KAEzD5kS,GAAY,SAAUrqb,GAKxB,IAAIhiE,EAAOgiE,EAAKz8Q,cAAcC,YAM9B,OAJMw6M,GAASA,EAAKk2xB,SACnBl2xB,EAAOv6M,GAGDu6M,EAAKr5M,iBAAkBq7Q,EAC/B,EAEGhxK,GAAO,SAAUgxK,EAAM9zQ,EAASsf,GACnC,IAAI2W,EAAKtyB,EACRonS,EAAM,CAAC,EAGR,IAAMpnS,KAAQ3D,EACb+qS,EAAKpnS,GAASmwQ,EAAKh6O,MAAOn2B,GAC1BmwQ,EAAKh6O,MAAOn2B,GAAS3D,EAAS2D,GAM/B,IAAMA,KAHNsyB,EAAM3W,EAAS7O,KAAMqjQ,GAGP9zQ,EACb8zQ,EAAKh6O,MAAOn2B,GAASonS,EAAKpnS,GAG3B,OAAOsyB,CACR,EAGIgy8B,GAAY,IAAI/l8B,OAAQ+g8B,GAAU309B,KAAM,KAAO,KA8HnD,SAAS459B,GAAQp0tB,EAAMnwQ,EAAMowN,GAC5B,IAAIj9N,EAAOovkB,EAAUlliB,EAAU/K,EAM9B6D,EAAQg6O,EAAKh6O,MAqCd,OAnCAi6L,EAAWA,GAAYoqe,GAAWrqb,MAQpB,MAFb79O,EAAM89L,EAASnmL,iBAAkBjqC,IAAUowN,EAAUpwN,KAEjCqwD,GAAY8/M,KAC/B79O,EAAM8vO,EAAOjsO,MAAOg6O,EAAMnwQ,KAQrBogY,EAAQokmB,kBAAoBJ,GAAUz1+B,KAAM2jC,IAASgy8B,GAAU31+B,KAAMqR,KAG1E7M,EAAQgjC,EAAMhjC,MACdovkB,EAAWpsiB,EAAMosiB,SACjBlliB,EAAWlH,EAAMkH,SAGjBlH,EAAMosiB,SAAWpsiB,EAAMkH,SAAWlH,EAAMhjC,MAAQm/B,EAChDA,EAAM89L,EAASj9N,MAGfgjC,EAAMhjC,MAAQA,EACdgjC,EAAMosiB,SAAWA,EACjBpsiB,EAAMkH,SAAWA,SAIJ95B,IAAR+uB,EAINA,EAAM,GACNA,CACF,CAGA,SAASmy8B,GAAcC,EAAa3rR,GAGnC,MAAO,CACNz4sB,IAAK,WACJ,IAAKok+B,IASL,OAASj49B,KAAKnM,IAAMy4sB,GAASxrsB,MAAOd,KAAM7L,kBALlC6L,KAAKnM,GAMd,EAEF,EAhMA,WAIC,SAASqk+B,IAGR,GAAM9wwB,EAAN,CAIAthK,EAAUp8B,MAAMsgG,QAAU,+EAE1Bo9F,EAAI19L,MAAMsgG,QACT,4HAGDthI,GAAgBynG,YAAarqC,GAAYqqC,YAAai3H,GAEtD,IAAI+wwB,EAAWhx+B,EAAOkB,iBAAkB++N,GACxCgxwB,EAAoC,OAAjBD,EAASnu+B,IAG5Bqu+B,EAAsE,KAA9CC,EAAoBH,EAAShgwB,YAIrD/Q,EAAI19L,MAAMz/B,MAAQ,MAClBsu+B,EAA6D,KAAzCD,EAAoBH,EAASlu+B,OAIjDuu+B,EAAgE,KAAzCF,EAAoBH,EAASzx+B,OAMpD0gO,EAAI19L,MAAM5gC,SAAW,WACrB2v+B,EAAiE,KAA9CH,EAAoBlxwB,EAAIzgO,YAAc,GAEzD+B,GAAgBwnG,YAAapqC,GAI7BshK,EAAM,IApCN,CAqCD,CAEA,SAASkxwB,EAAoBvxhB,GAC5B,OAAOvhd,KAAK+F,MAAOolB,WAAYo2b,GAChC,CAEA,IAAIqxhB,EAAkBI,EAAsBC,EAAkBF,EAC7DG,EAAyBL,EACzBvy6B,EAAYr9D,EAASskB,cAAe,OACpCq6M,EAAM3+N,EAASskB,cAAe,OAGzBq6M,EAAI19L,QAMV09L,EAAI19L,MAAMiv8B,eAAiB,cAC3BvxwB,EAAIwvC,WAAW,GAAOltO,MAAMiv8B,eAAiB,GAC7ChlmB,EAAQilmB,gBAA+C,gBAA7BxxwB,EAAI19L,MAAMiv8B,eAEpChjuB,EAAO3yJ,OAAQ2wR,EAAS,CACvBklmB,kBAAmB,WAElB,OADAX,IACOM,CACR,EACAT,eAAgB,WAEf,OADAG,IACOK,CACR,EACAO,cAAe,WAEd,OADAZ,IACOE,CACR,EACAW,mBAAoB,WAEnB,OADAb,IACOG,CACR,EACAW,cAAe,WAEd,OADAd,IACOO,CACR,EAOAQ,qBAAsB,WACrB,IAAI7l8B,EAAOk0W,EAAI4xlB,EAASC,EAoBxB,OAnBgC,MAA3BT,IACJtl8B,EAAQ3qC,EAASskB,cAAe,SAChCu6X,EAAK7+Y,EAASskB,cAAe,MAC7Bms9B,EAAUzw+B,EAASskB,cAAe,OAElCqmB,EAAM1J,MAAMsgG,QAAU,kCACtBs9Q,EAAG59W,MAAM9iC,OAAS,MAClBsy+B,EAAQxv8B,MAAM9iC,OAAS,MAEvB8B,GACEynG,YAAa/8D,GACb+8D,YAAam3S,GACbn3S,YAAa+o4B,GAEfC,EAAUhy+B,EAAOkB,iBAAkBi/Y,GACnCoxlB,EAA0Bvy8B,SAAUgz8B,EAAQvy+B,QAAW,EAEvD8B,GAAgBwnG,YAAa98D,IAEvBsl8B,CACR,IAEA,CAvHF,GAmMA,IAAIU,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAa5w+B,EAASskB,cAAe,OAAQ2c,MAC7C4v8B,GAAc,CAAC,EAkBhB,SAASC,GAAehm+B,GAGvB,OAFYoiQ,EAAO6juB,SAAUjm+B,IAAU+l+B,GAAa/l+B,KAK/CA,KAAQ8l+B,GACL9l+B,EAED+l+B,GAAa/l+B,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIkm+B,EAAUlm+B,EAAM,GAAIof,cAAgBpf,EAAKuH,MAAO,GACnDzV,EAAI+z+B,GAAYhl+B,OAET/O,KAEP,IADAkO,EAAO6l+B,GAAa/z+B,GAAMo0+B,KACbJ,GACZ,OAAO9l+B,CAGV,CAY8Bmm+B,CAAgBnm+B,IAAUA,EACxD,CAGA,IAKCom+B,GAAe,4BACfC,GAAc,MACdC,GAAU,CAAE/w+B,SAAU,WAAYwgH,WAAY,SAAU9sD,QAAS,SACjEs96B,GAAqB,CACpBC,cAAe,IACf9mnB,WAAY,OAGd,SAAS+mnB,GAAmB7T,EAAOxg+B,EAAO8xW,GAIzC,IAAIxlU,EAAU2g8B,GAAQvt8B,KAAM1/B,GAC5B,OAAOssC,EAGNzsC,KAAKmE,IAAK,EAAGsoC,EAAS,IAAQwlU,GAAY,KAAUxlU,EAAS,IAAO,MACpEtsC,CACF,CAEA,SAASs0+B,GAAoBv2tB,EAAMjzP,EAAW0rB,EAAK+97B,EAAahl+B,EAAQil+B,GACvE,IAAI90+B,EAAkB,UAAdorB,EAAwB,EAAI,EACnC+qE,EAAQ,EACRhhD,EAAQ,EAGT,GAAK2B,KAAU+97B,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQ70+B,EAAI,EAAGA,GAAK,EAGN,WAAR82C,IACJ3B,GAASm7N,EAAOxsQ,IAAKu6Q,EAAMvnO,EAAM027B,GAAWxt+B,IAAK,EAAM6P,IAIlDgl+B,GAmBQ,YAAR/97B,IACJ3B,GAASm7N,EAAOxsQ,IAAKu6Q,EAAM,UAAYmvtB,GAAWxt+B,IAAK,EAAM6P,IAIjD,WAARinC,IACJ3B,GAASm7N,EAAOxsQ,IAAKu6Q,EAAM,SAAWmvtB,GAAWxt+B,GAAM,SAAS,EAAM6P,MAtBvEslC,GAASm7N,EAAOxsQ,IAAKu6Q,EAAM,UAAYmvtB,GAAWxt+B,IAAK,EAAM6P,GAGhD,YAARinC,EACJ3B,GAASm7N,EAAOxsQ,IAAKu6Q,EAAM,SAAWmvtB,GAAWxt+B,GAAM,SAAS,EAAM6P,GAItEsmF,GAASm6K,EAAOxsQ,IAAKu6Q,EAAM,SAAWmvtB,GAAWxt+B,GAAM,SAAS,EAAM6P,IAoCzE,OAhBMgl+B,GAAeC,GAAe,IAInC3/7B,GAASh1C,KAAKmE,IAAK,EAAGnE,KAAKsjE,KAC1B46M,EAAM,SAAWjzP,EAAW,GAAIkC,cAAgBlC,EAAU3V,MAAO,IACjEq/9B,EACA3/7B,EACAghD,EACA,MAIM,GAGDhhD,CACR,CAEA,SAAS4/7B,GAAkB12tB,EAAMjzP,EAAW+qE,GAG3C,IAAItmF,EAAS64rB,GAAWrqb,GAKvBw2tB,IADmBvmmB,EAAQklmB,qBAAuBr94B,IAEE,eAAnDm6K,EAAOxsQ,IAAKu6Q,EAAM,aAAa,EAAOxuQ,GACvCml+B,EAAmBH,EAEnBvy8B,EAAMmw8B,GAAQp0tB,EAAMjzP,EAAWvb,GAC/Bol+B,EAAa,SAAW7p9B,EAAW,GAAIkC,cAAgBlC,EAAU3V,MAAO,GAIzE,GAAK689B,GAAUz1+B,KAAMylC,GAAQ,CAC5B,IAAM6zD,EACL,OAAO7zD,EAERA,EAAM,MACP,CAwCA,QAlCQgsW,EAAQklmB,qBAAuBqB,IAMrCvmmB,EAAQslmB,wBAA0B9w+B,EAAUu7Q,EAAM,OAI3C,SAAR/7O,IAIChX,WAAYgX,IAA0D,WAAjDguO,EAAOxsQ,IAAKu6Q,EAAM,WAAW,EAAOxuQ,KAG1DwuQ,EAAKkgpB,iBAAiBxv5B,SAEtB8l+B,EAAiE,eAAnDvkuB,EAAOxsQ,IAAKu6Q,EAAM,aAAa,EAAOxuQ,IAKpDml+B,EAAmBC,KAAc52tB,KAEhC/7O,EAAM+7O,EAAM42tB,MAKd3y8B,EAAMhX,WAAYgX,IAAS,GAI1Bsy8B,GACCv2tB,EACAjzP,EACA+qE,IAAW0+4B,EAAc,SAAW,WACpCG,EACAnl+B,EAGAyyB,GAEE,IACL,CA8SA,SAASu8Y,GAAOxgK,EAAM9zQ,EAAS0iC,EAAM5lC,EAAK62C,GACzC,OAAO,IAAI2gY,GAAM9ja,UAAUgsD,KAAMs3M,EAAM9zQ,EAAS0iC,EAAM5lC,EAAK62C,EAC5D,CA9SAoyN,EAAO3yJ,OAAQ,CAIdu33B,SAAU,CACT989B,QAAS,CACR5J,IAAK,SAAU6vQ,EAAM//C,GACpB,GAAKA,EAAW,CAGf,IAAI99L,EAAMiy8B,GAAQp0tB,EAAM,WACxB,MAAe,KAAR79O,EAAa,IAAMA,CAC3B,CACD,IAKFut8B,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKToG,SAAU,CAAC,EAGX9v8B,MAAO,SAAUg6O,EAAMnwQ,EAAM5N,EAAO61F,GAGnC,GAAMkoL,GAA0B,IAAlBA,EAAKj7J,UAAoC,IAAlBi7J,EAAKj7J,UAAmBi7J,EAAKh6O,MAAlE,CAKA,IAAI7D,EAAK7V,EAAMy1O,EACd+0uB,EAAW1Y,EAAWvu9B,GACtBkn+B,EAAeb,GAAY13+B,KAAMqR,GACjCm2B,EAAQg6O,EAAKh6O,MAad,GARM+w8B,IACLln+B,EAAOgm+B,GAAeiB,IAIvB/0uB,EAAQkQ,EAAO4kuB,SAAUhn+B,IAAUoiQ,EAAO4kuB,SAAUC,QAGrC1j+B,IAAVnR,EA0CJ,OAAK8/P,GAAS,QAASA,QACwB3uP,KAA5C+uB,EAAM4/N,EAAM5xP,IAAK6vQ,GAAM,EAAOloL,IAEzB31D,EAID6D,EAAOn2B,GA7CA,WAHdyc,SAAcrqB,KAGckgC,EAAM+s8B,GAAQvt8B,KAAM1/B,KAAakgC,EAAK,KACjElgC,EAAQqt+B,GAAWtvtB,EAAMnwQ,EAAMsyB,GAG/B7V,EAAO,UAIM,MAATrqB,GAAiBA,GAAUA,IAOlB,WAATqqB,GAAsByq9B,IAC1B90+B,GAASkgC,GAAOA,EAAK,KAAS8vO,EAAOy9tB,UAAWoH,GAAa,GAAK,OAI7D7mmB,EAAQilmB,iBAA6B,KAAVjz+B,GAAiD,IAAjC4N,EAAKhL,QAAS,gBAC9DmhC,EAAOn2B,GAAS,WAIXkyP,GAAY,QAASA,QACsB3uP,KAA9CnR,EAAQ8/P,EAAM1xP,IAAK2vQ,EAAM/9Q,EAAO61F,MAE7Bi/4B,EACJ/w8B,EAAM2V,YAAa9rC,EAAM5N,GAEzB+jC,EAAOn2B,GAAS5N,GAtDnB,CAsED,EAEAwD,IAAK,SAAUu6Q,EAAMnwQ,EAAMioF,EAAOtmF,GACjC,IAAIyyB,EAAKsW,EAAKwnN,EACb+0uB,EAAW1Y,EAAWvu9B,GA6BvB,OA5BgBqm+B,GAAY13+B,KAAMqR,KAMjCA,EAAOgm+B,GAAeiB,KAIvB/0uB,EAAQkQ,EAAO4kuB,SAAUhn+B,IAAUoiQ,EAAO4kuB,SAAUC,KAGtC,QAAS/0uB,IACtB99N,EAAM89N,EAAM5xP,IAAK6vQ,GAAM,EAAMloL,SAIjB1kF,IAAR6wB,IACJA,EAAMmw8B,GAAQp0tB,EAAMnwQ,EAAM2B,IAId,WAARyyB,GAAoBp0B,KAAQum+B,KAChCny8B,EAAMmy8B,GAAoBvm+B,IAIZ,KAAVioF,GAAgBA,GACpBv9C,EAAMttB,WAAYgX,IACD,IAAV6zD,GAAkBprE,SAAU6tB,GAAQA,GAAO,EAAItW,GAGhDA,CACR,IAGDguO,EAAO/kP,KAAM,CAAE,SAAU,SAAW,SAAUjW,EAAI8V,GACjDklP,EAAO4kuB,SAAU9p9B,GAAc,CAC9B5c,IAAK,SAAU6vQ,EAAM//C,EAAUnoI,GAC9B,GAAKmoI,EAIJ,OAAOg2wB,GAAaz3+B,KAAMyzQ,EAAOxsQ,IAAKu6Q,EAAM,aAQxCA,EAAKkgpB,iBAAiBxv5B,QAAWsvQ,EAAK92Q,wBAAwBlG,MAIhE0z+B,GAAkB12tB,EAAMjzP,EAAW+qE,GAHnCkX,GAAMgxK,EAAMm2tB,GAAS,WACpB,OAAOO,GAAkB12tB,EAAMjzP,EAAW+qE,EAC3C,EAGJ,EAEAznF,IAAK,SAAU2vQ,EAAM/9Q,EAAO61F,GAC3B,IAAIvpD,EACH/8B,EAAS64rB,GAAWrqb,GAIpBg3tB,GAAsB/mmB,EAAQqlmB,iBACT,aAApB9j+B,EAAOpM,SAIRox+B,GADkBQ,GAAsBl/4B,IAEY,eAAnDm6K,EAAOxsQ,IAAKu6Q,EAAM,aAAa,EAAOxuQ,GACvCuiW,EAAWj8Q,EACVy+4B,GACCv2tB,EACAjzP,EACA+qE,EACA0+4B,EACAhl+B,GAED,EAqBF,OAjBKgl+B,GAAeQ,IACnBjjoB,GAAYjyW,KAAKsjE,KAChB46M,EAAM,SAAWjzP,EAAW,GAAIkC,cAAgBlC,EAAU3V,MAAO,IACjE6V,WAAYzb,EAAQub,IACpBwp9B,GAAoBv2tB,EAAMjzP,EAAW,UAAU,EAAOvb,GACtD,KAKGuiW,IAAcxlU,EAAU2g8B,GAAQvt8B,KAAM1/B,KACb,QAA3BssC,EAAS,IAAO,QAElByxO,EAAKh6O,MAAOjZ,GAAc9qB,EAC1BA,EAAQgwQ,EAAOxsQ,IAAKu6Q,EAAMjzP,IAGpBup9B,GAAmBt2tB,EAAM/9Q,EAAO8xW,EACxC,EAEF,GAEA9hG,EAAO4kuB,SAASpiwB,WAAa6/vB,GAAcrkmB,EAAQolmB,mBAClD,SAAUr1tB,EAAM//C,GACf,GAAKA,EACJ,OAAShzM,WAAYmn9B,GAAQp0tB,EAAM,gBAClCA,EAAK92Q,wBAAwBzC,KAC5BuoG,GAAMgxK,EAAM,CAAEvrC,WAAY,GAAK,WAC9B,OAAOurC,EAAK92Q,wBAAwBzC,IACrC,IACG,IAEP,GAIDwrQ,EAAO/kP,KAAM,CACZme,OAAQ,GACRv+B,QAAS,GACT8qD,OAAQ,SACN,SAAUpmB,EAAQ0G,GACpB+5N,EAAO4kuB,SAAUrl8B,EAAS0G,GAAW,CACpCksd,OAAQ,SAAUnigB,GAOjB,IANA,IAAIN,EAAI,EACP61d,EAAW,CAAC,EAGZ5kZ,EAAyB,iBAAV3wE,EAAqBA,EAAMzE,MAAO,KAAQ,CAAEyE,GAEpDN,EAAI,EAAGA,IACd61d,EAAUhmb,EAAS297B,GAAWxt+B,GAAMu2C,GACnC06B,EAAOjxE,IAAOixE,EAAOjxE,EAAI,IAAOixE,EAAO,GAGzC,OAAO4kZ,CACR,GAGe,WAAXhmb,IACJygO,EAAO4kuB,SAAUrl8B,EAAS0G,GAAS7nC,IAAMim+B,GAE3C,GAEArkuB,EAAO7gQ,GAAGkuG,OAAQ,CACjB75G,IAAK,SAAUoK,EAAM5N,GACpB,OAAO+r+B,EAAQ1x9B,KAAM,SAAU0jQ,EAAMnwQ,EAAM5N,GAC1C,IAAIuP,EAAQzF,EACXsD,EAAM,CAAC,EACP1N,EAAI,EAEL,GAAKiP,MAAMyb,QAASxc,GAAS,CAI5B,IAHA2B,EAAS64rB,GAAWrqb,GACpBj0Q,EAAM8D,EAAKa,OAEH/O,EAAIoK,EAAKpK,IAChB0N,EAAKQ,EAAMlO,IAAQswQ,EAAOxsQ,IAAKu6Q,EAAMnwQ,EAAMlO,IAAK,EAAO6P,GAGxD,OAAOnC,CACR,CAEA,YAAiB+D,IAAVnR,EACNgwQ,EAAOjsO,MAAOg6O,EAAMnwQ,EAAM5N,GAC1BgwQ,EAAOxsQ,IAAKu6Q,EAAMnwQ,EACpB,EAAGA,EAAM5N,EAAOwO,UAAUC,OAAS,EACpC,IAODuhQ,EAAOuuK,MAAQA,GAEfA,GAAM9ja,UAAY,CACjBK,YAAayja,GACb93W,KAAM,SAAUs3M,EAAM9zQ,EAAS0iC,EAAM5lC,EAAK62C,EAAQ6Z,GACjDp9C,KAAK0jQ,KAAOA,EACZ1jQ,KAAKsyB,KAAOA,EACZtyB,KAAKujC,OAASA,GAAUoyN,EAAOpyN,OAAOm8E,SACtC1/G,KAAKpQ,QAAUA,EACfoQ,KAAKvT,MAAQuT,KAAK8I,IAAM9I,KAAKyiC,MAC7BziC,KAAKtT,IAAMA,EACXsT,KAAKo9C,KAAOA,IAAUu4M,EAAOy9tB,UAAW9g8B,GAAS,GAAK,KACvD,EACAmQ,IAAK,WACJ,IAAIgjN,EAAQy+K,GAAMy2jB,UAAW369B,KAAKsyB,MAElC,OAAOmzN,GAASA,EAAM5xP,IACrB4xP,EAAM5xP,IAAKmM,MACXkka,GAAMy2jB,UAAUj72B,SAAS7rH,IAAKmM,KAChC,EACA2lH,IAAK,SAAUjwE,GACd,IAAIkl7B,EACHn1uB,EAAQy+K,GAAMy2jB,UAAW369B,KAAKsyB,MAoB/B,OAlBKtyB,KAAKpQ,QAAQsV,SACjBlF,KAAKuS,IAAMqo9B,EAAQjluB,EAAOpyN,OAAQvjC,KAAKujC,QACtCmS,EAAS11C,KAAKpQ,QAAQsV,SAAWwwC,EAAS,EAAG,EAAG11C,KAAKpQ,QAAQsV,UAG9DlF,KAAKuS,IAAMqo9B,EAAQll7B,EAEpB11C,KAAK8I,KAAQ9I,KAAKtT,IAAMsT,KAAKvT,OAAUmu+B,EAAQ569B,KAAKvT,MAE/CuT,KAAKpQ,QAAQ0R,MACjBtB,KAAKpQ,QAAQ0R,KAAKjB,KAAML,KAAK0jQ,KAAM1jQ,KAAK8I,IAAK9I,MAGzCylP,GAASA,EAAM1xP,IACnB0xP,EAAM1xP,IAAKiM,MAEXkka,GAAMy2jB,UAAUj72B,SAAS3rH,IAAKiM,MAExBA,IACR,GAGDkka,GAAM9ja,UAAUgsD,KAAKhsD,UAAY8ja,GAAM9ja,UAEvC8ja,GAAMy2jB,UAAY,CACjBj72B,SAAU,CACT7rH,IAAK,SAAUwwa,GACd,IAAIlxa,EAIJ,OAA6B,IAAxBkxa,EAAM3gK,KAAKj7J,UACa,MAA5B47T,EAAM3gK,KAAM2gK,EAAM/xY,OAAoD,MAAlC+xY,EAAM3gK,KAAKh6O,MAAO26Y,EAAM/xY,MACrD+xY,EAAM3gK,KAAM2gK,EAAM/xY,OAO1Bn/B,EAASwiQ,EAAOxsQ,IAAKk7a,EAAM3gK,KAAM2gK,EAAM/xY,KAAM,MAGhB,SAAXn/B,EAAwBA,EAAJ,CACvC,EACAY,IAAK,SAAUswa,GAKT1uK,EAAOhkD,GAAGrwM,KAAM+ia,EAAM/xY,MAC1BqjO,EAAOhkD,GAAGrwM,KAAM+ia,EAAM/xY,MAAQ+xY,GACK,IAAxBA,EAAM3gK,KAAKj7J,WACrBktJ,EAAO4kuB,SAAUl2jB,EAAM/xY,OAC4B,MAAnD+xY,EAAM3gK,KAAKh6O,MAAO6v8B,GAAel1jB,EAAM/xY,OAGxC+xY,EAAM3gK,KAAM2gK,EAAM/xY,MAAS+xY,EAAMv7Z,IAFjC6sP,EAAOjsO,MAAO26Y,EAAM3gK,KAAM2gK,EAAM/xY,KAAM+xY,EAAMv7Z,IAAMu7Z,EAAMjnX,KAI1D,IAMF8mX,GAAMy2jB,UAAU1t+B,UAAYi3a,GAAMy2jB,UAAU5t+B,WAAa,CACxDgH,IAAK,SAAUswa,GACTA,EAAM3gK,KAAKj7J,UAAY47T,EAAM3gK,KAAK17Q,aACtCq8a,EAAM3gK,KAAM2gK,EAAM/xY,MAAS+xY,EAAMv7Z,IAEnC,GAGD6sP,EAAOpyN,OAAS,CACfhtB,OAAQ,SAAUpW,GACjB,OAAOA,CACR,EACA069B,MAAO,SAAU169B,GAChB,MAAO,GAAM3a,KAAK6xB,IAAKlX,EAAI3a,KAAKytB,IAAO,CACxC,EACAysG,SAAU,SAGXi2I,EAAOhkD,GAAKuyN,GAAM9ja,UAAUgsD,KAG5BupM,EAAOhkD,GAAGrwM,KAAO,CAAC,EAKlB,IACCw59B,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAAS1jmB,KACHwjmB,MACqB,IAApBty+B,EAAS0kD,QAAoBhmD,EAAOgoB,sBACxChoB,EAAOgoB,sBAAuBooX,IAE9BpwY,EAAOsgB,WAAY8vX,GAAU5hI,EAAOhkD,GAAGvzH,UAGxCu3K,EAAOhkD,GAAGzvK,OAEZ,CAGA,SAASg57B,KAIR,OAHA/z+B,EAAOsgB,WAAY,WAClBqz9B,QAAQhk+B,CACT,GACSgk+B,GAAQjy9B,KAAKC,KACvB,CAGA,SAASqy9B,GAAOnr9B,EAAMor9B,GACrB,IAAInpsB,EACH5sS,EAAI,EACJ0jI,EAAQ,CAAEniI,OAAQopB,GAKnB,IADAor9B,EAAeA,EAAe,EAAI,EAC1B/1+B,EAAI,EAAGA,GAAK,EAAI+1+B,EAEvBry2B,EAAO,UADPkpK,EAAQ4gsB,GAAWxt+B,KACS0jI,EAAO,UAAYkpK,GAAUjiR,EAO1D,OAJKor9B,IACJry2B,EAAMtrH,QAAUsrH,EAAMriI,MAAQspB,GAGxB+4G,CACR,CAEA,SAASsy2B,GAAa11+B,EAAO2sC,EAAMvJ,GAKlC,IAJA,IAAIs7Y,EACHpnN,GAAe/5K,GAAUo47B,SAAUhp8B,IAAU,IAAKtkC,OAAQk1C,GAAUo47B,SAAU,MAC9E9k+B,EAAQ,EACRpC,EAAS6oN,EAAW7oN,OACboC,EAAQpC,EAAQoC,IACvB,GAAO6ta,EAAQpnN,EAAYzmN,GAAQ6J,KAAM0oB,EAAWuJ,EAAM3sC,GAGzD,OAAO0+a,CAGV,CAmNA,SAASnhY,GAAWwgO,EAAMh/N,EAAY90C,GACrC,IAAIuD,EACHukU,EACAlhU,EAAQ,EACRpC,EAAS8uC,GAAUq47B,WAAWnn+B,OAC9Bk2G,EAAWqrJ,EAAO8lC,WAAW2yZ,OAAQ,kBAG7BlspB,EAAKwhO,IACb,GACAxhO,EAAO,WACN,GAAKw1R,EACJ,OAAO,EAYR,IAVA,IAAI8jqB,EAAcV,IAASI,KAC1Br57B,EAAYr8C,KAAKmE,IAAK,EAAGo/B,EAAUla,UAAYka,EAAU7jB,SAAWs29B,GAKpE9l7B,EAAU,GADH7T,EAAY9Y,EAAU7jB,UAAY,GAEzC1O,EAAQ,EACRpC,EAAS20B,EAAUy7Y,OAAOpwa,OAEnBoC,EAAQpC,EAAQoC,IACvBuyB,EAAUy7Y,OAAQhua,GAAQmvH,IAAKjwE,GAMhC,OAHA40D,EAASqm3B,WAAYjttB,EAAM,CAAE36O,EAAW2sB,EAAS7T,IAG5C6T,EAAU,GAAKthD,EACZytC,GAIFztC,GACLk2G,EAASqm3B,WAAYjttB,EAAM,CAAE36O,EAAW,EAAG,IAI5CuhF,EAASkgoB,YAAa9me,EAAM,CAAE36O,KACvB,EACR,EACAA,EAAYuhF,EAAS+X,QAAS,CAC7BqhJ,KAAMA,EACNtxO,MAAOujO,EAAO3yJ,OAAQ,CAAC,EAAGt+D,GAC1B3U,KAAM4lO,EAAO3yJ,QAAQ,EAAM,CAC1By43B,cAAe,CAAC,EAChBl47B,OAAQoyN,EAAOpyN,OAAOm8E,UACpB9vH,GACH8r+B,mBAAoBh37B,EACpB+msB,gBAAiB77uB,EACjBif,UAAWis9B,IAASI,KACpBh29B,SAAUtV,EAAQsV,SAClBs/Z,OAAQ,GACR62jB,YAAa,SAAU/o8B,EAAM5lC,GAC5B,IAAI23a,EAAQ1uK,EAAOuuK,MAAOxgK,EAAM36O,EAAUgH,KAAMuC,EAAM5lC,EACpDq8B,EAAUgH,KAAK0r8B,cAAenp8B,IAAUvJ,EAAUgH,KAAKwT,QAEzD,OADAxa,EAAUy7Y,OAAO1wa,KAAMuwa,GAChBA,CACR,EACA3+Z,KAAM,SAAUi29B,GACf,IAAInl+B,EAAQ,EAIXpC,EAASun+B,EAAU5y8B,EAAUy7Y,OAAOpwa,OAAS,EAC9C,GAAKsjU,EACJ,OAAO13T,KAGR,IADA03T,GAAU,EACFlhU,EAAQpC,EAAQoC,IACvBuyB,EAAUy7Y,OAAQhua,GAAQmvH,IAAK,GAUhC,OANKg22B,GACJrx3B,EAASqm3B,WAAYjttB,EAAM,CAAE36O,EAAW,EAAG,IAC3CuhF,EAASkgoB,YAAa9me,EAAM,CAAE36O,EAAW4y8B,KAEzCrx3B,EAASwm3B,WAAYpttB,EAAM,CAAE36O,EAAW4y8B,IAElC379B,IACR,IAEDoyB,EAAQrJ,EAAUqJ,MAInB,IA/HD,SAAqBA,EAAOqp8B,GAC3B,IAAIjl+B,EAAOjD,EAAMgwC,EAAQ59C,EAAO8/P,EAGhC,IAAMjvP,KAAS47B,EAed,GAbAmR,EAASk47B,EADTlo+B,EAAOuu9B,EAAWtr9B,IAElB7Q,EAAQysC,EAAO57B,GACVlC,MAAMyb,QAASpqB,KACnB49C,EAAS59C,EAAO,GAChBA,EAAQysC,EAAO57B,GAAU7Q,EAAO,IAG5B6Q,IAAUjD,IACd6+B,EAAO7+B,GAAS5N,SACTysC,EAAO57B,KAGfivP,EAAQkQ,EAAO4kuB,SAAUhn+B,KACX,WAAYkyP,EAMzB,IAAMjvP,KALN7Q,EAAQ8/P,EAAMqiQ,OAAQnigB,UACfysC,EAAO7+B,GAIC5N,EACN6Q,KAAS47B,IAChBA,EAAO57B,GAAU7Q,EAAO6Q,GACxBil+B,EAAejl+B,GAAU+sC,QAI3Bk47B,EAAelo+B,GAASgwC,CAG3B,CA0FCq47B,CAAYxp8B,EAAOrJ,EAAUgH,KAAK0r8B,eAE1Bjl+B,EAAQpC,EAAQoC,IAEvB,GADArD,EAAS+vC,GAAUq47B,WAAY/k+B,GAAQ6J,KAAM0oB,EAAW26O,EAAMtxO,EAAOrJ,EAAUgH,MAM9E,OAJKld,EAAY1f,EAAOuS,QACvBiwP,EAAO88tB,YAAa1p8B,EAAU26O,KAAM36O,EAAUgH,KAAK6sF,OAAQl3G,KAC1DvS,EAAOuS,KAAKg2C,KAAMvoD,IAEbA,EAyBT,OArBAwiQ,EAAO5iQ,IAAKq/B,EAAOip8B,GAAaty8B,GAE3BlW,EAAYkW,EAAUgH,KAAKtjC,QAC/Bs8B,EAAUgH,KAAKtjC,MAAM4T,KAAMqjQ,EAAM36O,GAIlCA,EACEuZ,SAAUvZ,EAAUgH,KAAKuS,UACzB9gC,KAAMunB,EAAUgH,KAAKvuB,KAAMunB,EAAUgH,KAAKsS,UAC1CgnH,KAAMtgI,EAAUgH,KAAKs5H,MACrB+kiB,OAAQrlqB,EAAUgH,KAAKq+pB,QAEzBz4b,EAAOhkD,GAAGvqM,MACTuuP,EAAO3yJ,OAAQ9gE,EAAM,CACpBwhO,KAAMA,EACN79N,KAAM9c,EACN6zF,MAAO7zF,EAAUgH,KAAK6sF,SAIjB7zF,CACR,CAEA4sO,EAAOzyN,UAAYyyN,EAAO3yJ,OAAQ9/D,GAAW,CAE5Co47B,SAAU,CACT,IAAK,CAAE,SAAUhp8B,EAAM3sC,GACtB,IAAI0+a,EAAQrka,KAAKq79B,YAAa/o8B,EAAM3sC,GAEpC,OADAqt+B,GAAW3ujB,EAAM3gK,KAAMpxO,EAAMsg8B,GAAQvt8B,KAAM1/B,GAAS0+a,GAC7CA,CACR,IAGDw3jB,QAAS,SAAUzp8B,EAAOljB,GACpB2D,EAAYuf,IAChBljB,EAAWkjB,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMpuC,MAAO6r+B,GAOtB,IAJA,IAAIv97B,EACH97B,EAAQ,EACRpC,EAASg+B,EAAMh+B,OAERoC,EAAQpC,EAAQoC,IACvB87B,EAAOF,EAAO57B,GACd0sC,GAAUo47B,SAAUhp8B,GAAS4Q,GAAUo47B,SAAUhp8B,IAAU,GAC3D4Q,GAAUo47B,SAAUhp8B,GAAO6kD,QAASjoE,EAEtC,EAEAqs9B,WAAY,CA3Wb,SAA2B73tB,EAAMtxO,EAAOrC,GACvC,IAAIuC,EAAM3sC,EAAOqiQ,EAAQvC,EAAOq2uB,EAASC,EAAWC,EAAgBx/6B,EACnEy/6B,EAAQ,UAAW7p8B,GAAS,WAAYA,EACxCyT,EAAO7lC,KACP6yC,EAAO,CAAC,EACRnpB,EAAQg6O,EAAKh6O,MACbyjB,EAASu2N,EAAKj7J,UAAYsq3B,GAAoBrvtB,GAC9Cw4tB,EAAWhK,EAASr+9B,IAAK6vQ,EAAM,UA6BhC,IAAMpxO,KA1BAvC,EAAK6sF,QAEa,OADvB6oI,EAAQkQ,EAAO88tB,YAAa/utB,EAAM,OACvBy4tB,WACV12uB,EAAM02uB,SAAW,EACjBL,EAAUr2uB,EAAMoU,MAAM27J,KACtB/vK,EAAMoU,MAAM27J,KAAO,WACZ/vK,EAAM02uB,UACXL,GAEF,GAEDr2uB,EAAM02uB,WAENt27B,EAAKuopB,OAAQ,WAGZvopB,EAAKuopB,OAAQ,WACZ3oc,EAAM02uB,WACAxmuB,EAAO/4I,MAAO8mJ,EAAM,MAAOtvQ,QAChCqxP,EAAMoU,MAAM27J,MAEd,EACD,IAIapjY,EAEb,GADAzsC,EAAQysC,EAAOE,GACV0o8B,GAAS94+B,KAAMyD,GAAU,CAG7B,UAFOysC,EAAOE,GACd01N,EAASA,GAAoB,WAAVriQ,EACdA,KAAYwnD,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVxnD,IAAoBu2+B,QAAiCpl+B,IAArBol+B,EAAU5p8B,GAK9C,SAJA6a,GAAS,CAMX,CACA0F,EAAMvgB,GAAS4p8B,GAAYA,EAAU5p8B,IAAUqjO,EAAOjsO,MAAOg6O,EAAMpxO,EACpE,CAKD,IADAyp8B,GAAapmuB,EAAO2wtB,cAAel07B,MAChBujO,EAAO2wtB,cAAezz6B,GA8DzC,IAAMvgB,KAzDD2p8B,GAA2B,IAAlBv4tB,EAAKj7J,WAMlB14E,EAAKziC,SAAW,CAAEo8B,EAAMp8B,SAAUo8B,EAAMn8B,UAAWm8B,EAAMl8B,WAIlC,OADvBwu+B,EAAiBE,GAAYA,EAAS1/6B,WAErCw/6B,EAAiB9J,EAASr+9B,IAAK6vQ,EAAM,YAGrB,UADjBlnN,EAAUm5M,EAAOxsQ,IAAKu6Q,EAAM,cAEtBs4tB,EACJx/6B,EAAUw/6B,GAIVxI,GAAU,CAAE9vtB,IAAQ,GACpBs4tB,EAAiBt4tB,EAAKh6O,MAAM8yB,SAAWw/6B,EACvCx/6B,EAAUm5M,EAAOxsQ,IAAKu6Q,EAAM,WAC5B8vtB,GAAU,CAAE9vtB,OAKG,WAAZlnN,GAAoC,iBAAZA,GAAgD,MAAlBw/6B,IACrB,SAAhCrmuB,EAAOxsQ,IAAKu6Q,EAAM,WAGhBq4tB,IACLl27B,EAAKrkC,KAAM,WACVkoB,EAAM8yB,QAAUw/6B,CACjB,GACuB,MAAlBA,IACJx/6B,EAAU9yB,EAAM8yB,QAChBw/6B,EAA6B,SAAZx/6B,EAAqB,GAAKA,IAG7C9yB,EAAM8yB,QAAU,iBAKdzsB,EAAKziC,WACTo8B,EAAMp8B,SAAW,SACjBu4C,EAAKuopB,OAAQ,WACZ1kqB,EAAMp8B,SAAWyiC,EAAKziC,SAAU,GAChCo8B,EAAMn8B,UAAYwiC,EAAKziC,SAAU,GACjCo8B,EAAMl8B,UAAYuiC,EAAKziC,SAAU,EAClC,IAIDyu+B,GAAY,EACElp7B,EAGPkp7B,IACAG,EACC,WAAYA,IAChB/u7B,EAAS+u7B,EAAS/u7B,QAGnB+u7B,EAAWhK,EAASR,OAAQhutB,EAAM,SAAU,CAAElnN,QAASw/6B,IAInDh0uB,IACJk0uB,EAAS/u7B,QAAUA,GAIfA,GACJqm7B,GAAU,CAAE9vtB,IAAQ,GAKrB79N,EAAKrkC,KAAM,WASV,IAAM8wB,KAJA6a,GACLqm7B,GAAU,CAAE9vtB,IAEbwutB,EAAStv7B,OAAQ8gO,EAAM,UACT7wN,EACb8iN,EAAOjsO,MAAOg6O,EAAMpxO,EAAMugB,EAAMvgB,GAElC,IAIDyp8B,EAAYV,GAAalu7B,EAAS+u7B,EAAU5p8B,GAAS,EAAGA,EAAMuT,GACtDvT,KAAQ4p8B,IACfA,EAAU5p8B,GAASyp8B,EAAUtv+B,MACxB0gD,IACJ4u7B,EAAUrv+B,IAAMqv+B,EAAUtv+B,MAC1Bsv+B,EAAUtv+B,MAAQ,GAItB,GAmMC2v+B,UAAW,SAAUlt9B,EAAUm1P,GACzBA,EACJnhO,GAAUq47B,WAAWpk5B,QAASjoE,GAE9Bg0B,GAAUq47B,WAAWzn+B,KAAMob,EAE7B,IAGDymP,EAAOx0D,MAAQ,SAAUA,EAAO59J,EAAQzuC,GACvC,IAAIk0W,EAAM7nK,GAA0B,iBAAVA,EAAqBw0D,EAAO3yJ,OAAQ,CAAC,EAAGm+F,GAAU,CAC3E9+J,SAAUvtC,IAAOA,GAAMyuC,GACtB1wB,EAAYsuL,IAAWA,EACxBj8L,SAAUi8L,EACV59J,OAAQzuC,GAAMyuC,GAAUA,IAAW1wB,EAAY0wB,IAAYA,GAoC5D,OAhCKoyN,EAAOhkD,GAAG1kF,IACd+7O,EAAI9jW,SAAW,EAGc,iBAAjB8jW,EAAI9jW,WACV8jW,EAAI9jW,YAAYywP,EAAOhkD,GAAG0qxB,OAC9BrznB,EAAI9jW,SAAWywP,EAAOhkD,GAAG0qxB,OAAQrznB,EAAI9jW,UAGrC8jW,EAAI9jW,SAAWywP,EAAOhkD,GAAG0qxB,OAAO382B,UAMjB,MAAbspP,EAAIpsP,QAA+B,IAAdosP,EAAIpsP,QAC7BosP,EAAIpsP,MAAQ,MAIbosP,EAAIruE,IAAMquE,EAAI3mU,SAEd2mU,EAAI3mU,SAAW,WACTxvB,EAAYm2V,EAAIruE,MACpBquE,EAAIruE,IAAIt6R,KAAML,MAGVgpW,EAAIpsP,OACR+4I,EAAOurE,QAASlhU,KAAMgpW,EAAIpsP,MAE5B,EAEOosP,CACR,EAEArzG,EAAO7gQ,GAAGkuG,OAAQ,CACjBs53B,OAAQ,SAAUn7xB,EAAOv8K,EAAI2e,EAAQr0B,GAGpC,OAAOlP,KAAK/O,OAAQ8h+B,IAAqB5p+B,IAAK,UAAW,GAAIy7C,OAG3Dl4C,MAAMswF,QAAS,CAAEv/E,QAASmnB,GAAMu8K,EAAO59J,EAAQr0B,EAClD,EACA8tE,QAAS,SAAU1qD,EAAM6uK,EAAO59J,EAAQr0B,GACvC,IAAI2qP,EAAQlE,EAAO2wtB,cAAeh07B,GACjCiq8B,EAAS5muB,EAAOx0D,MAAOA,EAAO59J,EAAQr0B,GACtCst9B,EAAc,WAGb,IAAI327B,EAAO3C,GAAWljC,KAAM21P,EAAO3yJ,OAAQ,CAAC,EAAG1wE,GAAQiq8B,IAGlD1iuB,GAASq4tB,EAASr+9B,IAAKmM,KAAM,YACjC6lC,EAAKngC,MAAM,EAEb,EAGD,OAFC829B,EAAY50vB,OAAS40vB,EAEf3iuB,IAA0B,IAAjB0iuB,EAAO3/2B,MACtB58G,KAAK4Q,KAAM4r9B,GACXx89B,KAAK48G,MAAO2/2B,EAAO3/2B,MAAO4/2B,EAC5B,EACA929B,KAAM,SAAUsK,EAAM0i9B,EAAYiJ,GACjC,IAAIc,EAAY,SAAUh3uB,GACzB,IAAI//O,EAAO+/O,EAAM//O,YACV+/O,EAAM//O,KACbA,EAAMi29B,EACP,EAWA,MATqB,iBAAT3r9B,IACX2r9B,EAAUjJ,EACVA,EAAa1i9B,EACbA,OAAOlZ,GAEH479B,GACJ1y9B,KAAK48G,MAAO5sG,GAAQ,KAAM,IAGpBhQ,KAAK4Q,KAAM,WACjB,IAAIswT,GAAU,EACb1qU,EAAgB,MAARwZ,GAAgBA,EAAO,aAC/B0s9B,EAAS/muB,EAAO+muB,OAChB3m+B,EAAOm89B,EAASr+9B,IAAKmM,MAEtB,GAAKxJ,EACCT,EAAMS,IAAWT,EAAMS,GAAQkP,MACnC+29B,EAAW1m+B,EAAMS,SAGlB,IAAMA,KAAST,EACTA,EAAMS,IAAWT,EAAMS,GAAQkP,MAAQu19B,GAAK/4+B,KAAMsU,IACtDim+B,EAAW1m+B,EAAMS,IAKpB,IAAMA,EAAQkm+B,EAAOto+B,OAAQoC,KACvBkm+B,EAAQlm+B,GAAQktQ,OAAS1jQ,MACnB,MAARgQ,GAAgB0s9B,EAAQlm+B,GAAQomH,QAAU5sG,IAE5C0s9B,EAAQlm+B,GAAQqvC,KAAKngC,KAAMi29B,GAC3Bz6pB,GAAU,EACVw7pB,EAAO3v8B,OAAQv2B,EAAO,KAOnB0qU,GAAYy6pB,GAChBhmuB,EAAOurE,QAASlhU,KAAMgQ,EAExB,EACD,EACA43N,OAAQ,SAAU53N,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAEThQ,KAAK4Q,KAAM,WACjB,IAAIpa,EACHT,EAAOm89B,EAASr+9B,IAAKmM,MACrB48G,EAAQ7mH,EAAMia,EAAO,SACrBy1O,EAAQ1vP,EAAMia,EAAO,cACrB0s9B,EAAS/muB,EAAO+muB,OAChBto+B,EAASwoH,EAAQA,EAAMxoH,OAAS,EAajC,IAVA2B,EAAK6xO,QAAS,EAGd+tB,EAAO/4I,MAAO58G,KAAMgQ,EAAM,IAErBy1O,GAASA,EAAM//O,MACnB+/O,EAAM//O,KAAKrF,KAAML,MAAM,GAIlBxJ,EAAQkm+B,EAAOto+B,OAAQoC,KACvBkm+B,EAAQlm+B,GAAQktQ,OAAS1jQ,MAAQ089B,EAAQlm+B,GAAQomH,QAAU5sG,IAC/D0s9B,EAAQlm+B,GAAQqvC,KAAKngC,MAAM,GAC3Bg39B,EAAO3v8B,OAAQv2B,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQpC,EAAQoC,IAC3BomH,EAAOpmH,IAAWomH,EAAOpmH,GAAQoxO,QACrChrH,EAAOpmH,GAAQoxO,OAAOvnO,KAAML,aAKvBjK,EAAK6xO,MACb,EACD,IAGD+tB,EAAO/kP,KAAM,CAAE,SAAU,OAAQ,QAAU,SAAUjW,EAAIpH,GACxD,IAAIop+B,EAAQhnuB,EAAO7gQ,GAAIvB,GACvBoiQ,EAAO7gQ,GAAIvB,GAAS,SAAU4tM,EAAO59J,EAAQr0B,GAC5C,OAAgB,MAATiyL,GAAkC,kBAAVA,EAC9Bw7xB,EAAM779B,MAAOd,KAAM7L,WACnB6L,KAAKg9E,QAASm+4B,GAAO5n+B,GAAM,GAAQ4tM,EAAO59J,EAAQr0B,EACpD,CACD,GAGAymP,EAAO/kP,KAAM,CACZgs9B,UAAWzB,GAAO,QAClB0B,QAAS1B,GAAO,QAChB2B,YAAa3B,GAAO,UACpB4B,OAAQ,CAAEt/9B,QAAS,QACnBu/9B,QAAS,CAAEv/9B,QAAS,QACpBw/9B,WAAY,CAAEx/9B,QAAS,WACrB,SAAUlK,EAAM6+B,GAClBujO,EAAO7gQ,GAAIvB,GAAS,SAAU4tM,EAAO59J,EAAQr0B,GAC5C,OAAOlP,KAAKg9E,QAAS5qD,EAAO+uK,EAAO59J,EAAQr0B,EAC5C,CACD,GAEAymP,EAAO+muB,OAAS,GAChB/muB,EAAOhkD,GAAGzvK,KAAO,WAChB,IAAI96B,EACH/hB,EAAI,EACJq3+B,EAAS/muB,EAAO+muB,OAIjB,IAFA5B,GAAQjy9B,KAAKC,MAELzjB,EAAIq3+B,EAAOto+B,OAAQ/O,KAC1B+hB,EAAQs19B,EAAQr3+B,OAGCq3+B,EAAQr3+B,KAAQ+hB,GAChCs19B,EAAO3v8B,OAAQ1nC,IAAK,GAIhBq3+B,EAAOto+B,QACZuhQ,EAAOhkD,GAAGjsM,OAEXo19B,QAAQhk+B,CACT,EAEA6+P,EAAOhkD,GAAGvqM,MAAQ,SAAUA,GAC3BuuP,EAAO+muB,OAAO5o+B,KAAMsT,GACpBuuP,EAAOhkD,GAAGllN,OACX,EAEAkpQ,EAAOhkD,GAAGvzH,SAAW,GACrBu3K,EAAOhkD,GAAGllN,MAAQ,WACZsu+B,KAILA,IAAa,EACbxjmB,KACD,EAEA5hI,EAAOhkD,GAAGjsM,KAAO,WAChBq19B,GAAa,IACd,EAEApluB,EAAOhkD,GAAG0qxB,OAAS,CAClBa,KAAM,IACNjzR,KAAM,IAGNvqlB,SAAU,KAMXi2I,EAAO7gQ,GAAG2uC,MAAQ,SAAU66C,EAAMtuE,GAIjC,OAHAsuE,EAAOq3K,EAAOhkD,IAAKgkD,EAAOhkD,GAAG0qxB,OAAQ/94B,IAAiBA,EACtDtuE,EAAOA,GAAQ,KAERhQ,KAAK48G,MAAO5sG,EAAM,SAAUloB,EAAM29P,GACxC,IAAI9nL,EAAUx2E,EAAOsgB,WAAY3f,EAAMw2F,GACvCmnK,EAAM//O,KAAO,WACZve,EAAOwgB,aAAcg2D,EACtB,CACD,EACD,EAGA,WACC,IAAI17E,EAAQwG,EAASskB,cAAe,SAEnCi8V,EADSvgX,EAASskB,cAAe,UACpBojF,YAAa1nG,EAASskB,cAAe,WAEnD9qB,EAAM+tB,KAAO,WAIb2jX,EAAQwpmB,QAA0B,KAAhBl7+B,EAAM0D,MAIxBguY,EAAQypmB,YAAcp0nB,EAAIrmG,UAI1B1gR,EAAQwG,EAASskB,cAAe,UAC1BpnB,MAAQ,IACd1D,EAAM+tB,KAAO,QACb2jX,EAAQ0pmB,WAA6B,MAAhBp7+B,EAAM0D,KAC1B,CArBF,GAwBA,IAAI23+B,GACHtT,GAAar0tB,EAAOyiC,KAAK4xrB,WAE1Br0tB,EAAO7gQ,GAAGkuG,OAAQ,CACjBu0J,KAAM,SAAUhkQ,EAAM5N,GACrB,OAAO+r+B,EAAQ1x9B,KAAM21P,EAAO4B,KAAMhkQ,EAAM5N,EAAOwO,UAAUC,OAAS,EACnE,EAEAiuQ,WAAY,SAAU9uQ,GACrB,OAAOyM,KAAK4Q,KAAM,WACjB+kP,EAAO0M,WAAYriQ,KAAMzM,EAC1B,EACD,IAGDoiQ,EAAO3yJ,OAAQ,CACdu0J,KAAM,SAAUmM,EAAMnwQ,EAAM5N,GAC3B,IAAIkgC,EAAK4/N,EACR83uB,EAAQ75tB,EAAKj7J,SAGd,GAAe,IAAV803B,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtB75tB,EAAK5lQ,aACT63P,EAAOrjO,KAAMoxO,EAAMnwQ,EAAM5N,IAKlB,IAAV43+B,GAAgB5nuB,EAAOg5tB,SAAUjrtB,KACrCje,EAAQkQ,EAAO6nuB,UAAWjq+B,EAAKnL,iBAC5ButQ,EAAOyiC,KAAKp0S,MAAMgxH,KAAK9yH,KAAMqR,GAAS+p+B,QAAWxm+B,SAGtCA,IAAVnR,EACW,OAAVA,OACJgwQ,EAAO0M,WAAYqB,EAAMnwQ,GAIrBkyP,GAAS,QAASA,QACuB3uP,KAA3C+uB,EAAM4/N,EAAM1xP,IAAK2vQ,EAAM/9Q,EAAO4N,IACzBsyB,GAGR69O,EAAKzlQ,aAAc1K,EAAM5N,EAAQ,IAC1BA,GAGH8/P,GAAS,QAASA,GAA+C,QAApC5/N,EAAM4/N,EAAM5xP,IAAK6vQ,EAAMnwQ,IACjDsyB,EAMM,OAHdA,EAAM8vO,EAAO96P,KAAK08P,KAAMmM,EAAMnwQ,SAGTuD,EAAY+uB,EAClC,EAEA238B,UAAW,CACVxt9B,KAAM,CACLjc,IAAK,SAAU2vQ,EAAM/9Q,GACpB,IAAMguY,EAAQ0pmB,YAAwB,UAAV13+B,GAC3BwC,EAAUu7Q,EAAM,SAAY,CAC5B,IAAI/7O,EAAM+7O,EAAK/9Q,MAKf,OAJA+9Q,EAAKzlQ,aAAc,OAAQtY,GACtBgiC,IACJ+7O,EAAK/9Q,MAAQgiC,GAEPhiC,CACR,CACD,IAIF08Q,WAAY,SAAUqB,EAAM/9Q,GAC3B,IAAI4N,EACHlO,EAAI,EAIJo4+B,EAAY93+B,GAASA,EAAM3B,MAAO6r+B,GAEnC,GAAK4N,GAA+B,IAAlB/5tB,EAAKj7J,SACtB,KAAUl1G,EAAOkq+B,EAAWp4+B,MAC3Bq+Q,EAAKvlQ,gBAAiB5K,EAGzB,IAID+p+B,GAAW,CACVvp+B,IAAK,SAAU2vQ,EAAM/9Q,EAAO4N,GAQ3B,OAPe,IAAV5N,EAGJgwQ,EAAO0M,WAAYqB,EAAMnwQ,GAEzBmwQ,EAAKzlQ,aAAc1K,EAAMA,GAEnBA,CACR,GAGDoiQ,EAAO/kP,KAAM+kP,EAAOyiC,KAAKp0S,MAAMgxH,KAAKzjG,OAAOvtB,MAAO,QAAU,SAAU2W,EAAIpH,GACzE,IAAImjD,EAASsz6B,GAAYz29B,IAAUoiQ,EAAO96P,KAAK08P,KAE/CyytB,GAAYz29B,GAAS,SAAUmwQ,EAAMnwQ,EAAMoz9B,GAC1C,IAAI9g8B,EAAK0hN,EACRm2vB,EAAgBnq+B,EAAKnL,cAYtB,OAVMu+9B,IAGLp/uB,EAASyivB,GAAY0T,GACrB1T,GAAY0T,GAAkB738B,EAC9BA,EAAqC,MAA/B6wB,EAAQgtN,EAAMnwQ,EAAMoz9B,GACzB+W,EACA,KACD1T,GAAY0T,GAAkBn2vB,GAExB1hN,CACR,CACD,GAKA,IAAI838B,GAAa,sCAChBC,GAAa,gBAyIb,SAASC,GAAkBl4+B,GAE1B,OADaA,EAAM3B,MAAO6r+B,IAAmB,IAC/B3x9B,KAAM,IACrB,CAGD,SAAS0vG,GAAU81J,GAClB,OAAOA,EAAK5lQ,cAAgB4lQ,EAAK5lQ,aAAc,UAAa,EAC7D,CAEA,SAASgg+B,GAAgBn4+B,GACxB,OAAK2O,MAAMyb,QAASpqB,GACZA,EAEc,iBAAVA,GACJA,EAAM3B,MAAO6r+B,IAEd,EACR,CAzJAl6tB,EAAO7gQ,GAAGkuG,OAAQ,CACjB1wE,KAAM,SAAU/+B,EAAM5N,GACrB,OAAO+r+B,EAAQ1x9B,KAAM21P,EAAOrjO,KAAM/+B,EAAM5N,EAAOwO,UAAUC,OAAS,EACnE,EAEA2p+B,WAAY,SAAUxq+B,GACrB,OAAOyM,KAAK4Q,KAAM,kBACV5Q,KAAM21P,EAAOqouB,QAASzq+B,IAAUA,EACxC,EACD,IAGDoiQ,EAAO3yJ,OAAQ,CACd1wE,KAAM,SAAUoxO,EAAMnwQ,EAAM5N,GAC3B,IAAIkgC,EAAK4/N,EACR83uB,EAAQ75tB,EAAKj7J,SAGd,GAAe,IAAV803B,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB5nuB,EAAOg5tB,SAAUjrtB,KAGrCnwQ,EAAOoiQ,EAAOqouB,QAASzq+B,IAAUA,EACjCkyP,EAAQkQ,EAAOgluB,UAAWpn+B,SAGZuD,IAAVnR,EACC8/P,GAAS,QAASA,QACuB3uP,KAA3C+uB,EAAM4/N,EAAM1xP,IAAK2vQ,EAAM/9Q,EAAO4N,IACzBsyB,EAGC69O,EAAMnwQ,GAAS5N,EAGpB8/P,GAAS,QAASA,GAA+C,QAApC5/N,EAAM4/N,EAAM5xP,IAAK6vQ,EAAMnwQ,IACjDsyB,EAGD69O,EAAMnwQ,EACd,EAEAon+B,UAAW,CACV1kqB,SAAU,CACTpiU,IAAK,SAAU6vQ,GAOd,IAAI2qpB,EAAW14pB,EAAO96P,KAAK08P,KAAMmM,EAAM,YAEvC,OAAK2qpB,EACGlo4B,SAAUko4B,EAAU,IAI3BsvE,GAAWz7+B,KAAMwhR,EAAKv7Q,WACtBy1+B,GAAW17+B,KAAMwhR,EAAKv7Q,WACtBu7Q,EAAKz1K,KAEE,GAGA,CACT,IAIF+v4B,QAAS,CACR,IAAO,UACP,MAAS,eAYLrqmB,EAAQypmB,cACbznuB,EAAOgluB,UAAUh4tB,SAAW,CAC3B9uQ,IAAK,SAAU6vQ,GAId,IAAIj8Q,EAASi8Q,EAAK17Q,WAIlB,OAHKP,GAAUA,EAAOO,YACrBP,EAAOO,WAAWm+T,cAEZ,IACR,EACApyT,IAAK,SAAU2vQ,GAId,IAAIj8Q,EAASi8Q,EAAK17Q,WACbP,IACJA,EAAO0+T,cAEF1+T,EAAOO,YACXP,EAAOO,WAAWm+T,cAGrB,IAIFxwD,EAAO/kP,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACF+kP,EAAOqouB,QAASh+9B,KAAK5X,eAAkB4X,IACxC,GA2BA21P,EAAO7gQ,GAAGkuG,OAAQ,CACjBiH,SAAU,SAAUtkH,GACnB,IAAI0nH,EAASq2J,EAAMjhO,EAAKw77B,EAAU/rrB,EAAOlsR,EAAGk48B,EAC3C74+B,EAAI,EAEL,GAAKwtB,EAAYltB,GAChB,OAAOqa,KAAK4Q,KAAM,SAAUoV,GAC3B2vO,EAAQ31P,MAAOiqG,SAAUtkH,EAAM0a,KAAML,KAAMgmB,EAAG4nF,GAAU5tG,OACzD,GAKD,IAFAqtG,EAAUyw3B,GAAgBn4+B,IAEbyO,OACZ,KAAUsvQ,EAAO1jQ,KAAM3a,MAItB,GAHA44+B,EAAWrw3B,GAAU81J,GACrBjhO,EAAwB,IAAlBihO,EAAKj7J,UAAoB,IAAMo13B,GAAkBI,GAAa,IAEzD,CAEV,IADAj48B,EAAI,EACMksR,EAAQ7kM,EAASrnF,MACrByc,EAAIl6C,QAAS,IAAM2pT,EAAQ,KAAQ,IACvCzvQ,GAAOyvQ,EAAQ,KAMZ+rrB,KADLC,EAAaL,GAAkBp77B,KAE9BihO,EAAKzlQ,aAAc,QAASig+B,EAE9B,CAIF,OAAOl+9B,IACR,EAEA0pG,YAAa,SAAU/jH,GACtB,IAAI0nH,EAASq2J,EAAMjhO,EAAKw77B,EAAU/rrB,EAAOlsR,EAAGk48B,EAC3C74+B,EAAI,EAEL,GAAKwtB,EAAYltB,GAChB,OAAOqa,KAAK4Q,KAAM,SAAUoV,GAC3B2vO,EAAQ31P,MAAO0pG,YAAa/jH,EAAM0a,KAAML,KAAMgmB,EAAG4nF,GAAU5tG,OAC5D,GAGD,IAAM7L,UAAUC,OACf,OAAO4L,KAAKu3P,KAAM,QAAS,IAK5B,IAFAlqJ,EAAUyw3B,GAAgBn4+B,IAEbyO,OACZ,KAAUsvQ,EAAO1jQ,KAAM3a,MAMtB,GALA44+B,EAAWrw3B,GAAU81J,GAGrBjhO,EAAwB,IAAlBihO,EAAKj7J,UAAoB,IAAMo13B,GAAkBI,GAAa,IAEzD,CAEV,IADAj48B,EAAI,EACMksR,EAAQ7kM,EAASrnF,MAG1B,KAAQyc,EAAIl6C,QAAS,IAAM2pT,EAAQ,MAAS,GAC3CzvQ,EAAMA,EAAI1+C,QAAS,IAAMmuT,EAAQ,IAAK,KAMnC+rrB,KADLC,EAAaL,GAAkBp77B,KAE9BihO,EAAKzlQ,aAAc,QAASig+B,EAE9B,CAIF,OAAOl+9B,IACR,EAEAwkQ,YAAa,SAAU7+Q,EAAOw4+B,GAC7B,IAAInu9B,SAAcrqB,EACjBy4+B,EAAwB,WAATpu9B,GAAqB1b,MAAMyb,QAASpqB,GAEpD,MAAyB,kBAAbw4+B,GAA0BC,EAC9BD,EAAWn+9B,KAAKiqG,SAAUtkH,GAAUqa,KAAK0pG,YAAa/jH,GAGzDktB,EAAYltB,GACTqa,KAAK4Q,KAAM,SAAUvrB,GAC3BswQ,EAAQ31P,MAAOwkQ,YACd7+Q,EAAM0a,KAAML,KAAM3a,EAAGuoH,GAAU5tG,MAAQm+9B,GACvCA,EAEF,GAGMn+9B,KAAK4Q,KAAM,WACjB,IAAIk5F,EAAWzkH,EAAGi9F,EAAMovR,EAExB,GAAK0snB,EAOJ,IAJA/4+B,EAAI,EACJi9F,EAAOqzK,EAAQ31P,MACf0xW,EAAaosnB,GAAgBn4+B,GAEnBmkH,EAAY4nQ,EAAYrsX,MAG5Bi9F,EAAK4nB,SAAUJ,GACnBxnB,EAAKonB,YAAaI,GAElBxnB,EAAK2nB,SAAUH,aAKIhzG,IAAVnR,GAAgC,YAATqqB,KAClC85F,EAAY8D,GAAU5tG,QAIrBky9B,EAASn+9B,IAAKiM,KAAM,gBAAiB8pG,GAOjC9pG,KAAK/B,cACT+B,KAAK/B,aAAc,QAClB6rG,IAAuB,IAAVnkH,EACb,GACAus+B,EAASr+9B,IAAKmM,KAAM,kBAAqB,IAI7C,EACD,EAEAkqG,SAAU,SAAUyd,GACnB,IAAI7d,EAAW45J,EACdr+Q,EAAI,EAGL,IADAykH,EAAY,IAAM6d,EAAW,IACnB+7I,EAAO1jQ,KAAM3a,MACtB,GAAuB,IAAlBq+Q,EAAKj7J,WACP,IAAMo13B,GAAkBjw3B,GAAU81J,IAAW,KAAMn7Q,QAASuhH,IAAe,EAC5E,OAAO,EAIV,OAAO,CACR,IAMD,IAAIu03B,GAAU,MAEd1ouB,EAAO7gQ,GAAGkuG,OAAQ,CACjBr7E,IAAK,SAAUhiC,GACd,IAAI8/P,EAAO5/N,EAAKox8B,EACfvztB,EAAO1jQ,KAAM,GAEd,OAAM7L,UAAUC,QA0BhB6i+B,EAAkBpk9B,EAAYltB,GAEvBqa,KAAK4Q,KAAM,SAAUvrB,GAC3B,IAAIsiC,EAEmB,IAAlB3nB,KAAKyoG,WAWE,OANX9gF,EADIsv8B,EACEtx+B,EAAM0a,KAAML,KAAM3a,EAAGswQ,EAAQ31P,MAAO2nB,OAEpChiC,GAKNgiC,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEIrzB,MAAMyb,QAAS4X,KAC1BA,EAAMguO,EAAO5iQ,IAAK40B,EAAK,SAAUhiC,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACrC,KAGD8/P,EAAQkQ,EAAO2ouB,SAAUt+9B,KAAKgQ,OAAU2lP,EAAO2ouB,SAAUt+9B,KAAK7X,SAASC,iBAGrD,QAASq9P,QAA+C3uP,IAApC2uP,EAAM1xP,IAAKiM,KAAM2nB,EAAK,WAC3D3nB,KAAKra,MAAQgiC,GAEf,IA3DM+7O,GACJje,EAAQkQ,EAAO2ouB,SAAU56tB,EAAK1zP,OAC7B2lP,EAAO2ouB,SAAU56tB,EAAKv7Q,SAASC,iBAG/B,QAASq9P,QACgC3uP,KAAvC+uB,EAAM4/N,EAAM5xP,IAAK6vQ,EAAM,UAElB79O,EAMY,iBAHpBA,EAAM69O,EAAK/9Q,OAIHkgC,EAAI9hC,QAASs6+B,GAAS,IAIhB,MAAPx48B,EAAc,GAAKA,OAG3B,CAsCF,IAGD8vO,EAAO3yJ,OAAQ,CACds73B,SAAU,CACTh57B,OAAQ,CACPzxC,IAAK,SAAU6vQ,GAEd,IAAI/7O,EAAMguO,EAAO96P,KAAK08P,KAAMmM,EAAM,SAClC,OAAc,MAAP/7O,EACNA,EAMAk28B,GAAkBlouB,EAAO7lO,KAAM4zO,GACjC,GAEDusD,OAAQ,CACPp8T,IAAK,SAAU6vQ,GACd,IAAI/9Q,EAAO2/C,EAAQjgD,EAClBuK,EAAU8zQ,EAAK9zQ,QACf4G,EAAQktQ,EAAKyiD,cACbpiD,EAAoB,eAAdL,EAAK1zP,KACX4Y,EAASm7O,EAAM,KAAO,GACtBp6Q,EAAMo6Q,EAAMvtQ,EAAQ,EAAI5G,EAAQwE,OAUjC,IAPC/O,EADImR,EAAQ,EACR7M,EAGAo6Q,EAAMvtQ,EAAQ,EAIXnR,EAAIsE,EAAKtE,IAKhB,KAJAigD,EAAS11C,EAASvK,IAIJs9Q,UAAYt9Q,IAAMmR,KAG7B8uC,EAAO0I,YACL1I,EAAOt9C,WAAWgmD,WACnB7lD,EAAUm9C,EAAOt9C,WAAY,aAAiB,CAMjD,GAHArC,EAAQgwQ,EAAQrwN,GAAS3d,MAGpBo8O,EACJ,OAAOp+Q,EAIRijC,EAAO90B,KAAMnO,EACd,CAGD,OAAOijC,CACR,EAEA70B,IAAK,SAAU2vQ,EAAM/9Q,GAMpB,IALA,IAAI44+B,EAAWj57B,EACd11C,EAAU8zQ,EAAK9zQ,QACfg5B,EAAS+sO,EAAO6wtB,UAAW7g+B,GAC3BN,EAAIuK,EAAQwE,OAEL/O,OACPigD,EAAS11C,EAASvK,IAINs9Q,SACXhN,EAAOpgC,QAASogC,EAAO2ouB,SAASh57B,OAAOzxC,IAAKyxC,GAAU1c,IAAY,KAElE218B,GAAY,GAUd,OAHMA,IACL76tB,EAAKyiD,eAAiB,GAEhBv9R,CACR,MAMH+sO,EAAO/kP,KAAM,CAAE,QAAS,YAAc,WACrC+kP,EAAO2ouB,SAAUt+9B,MAAS,CACzBjM,IAAK,SAAU2vQ,EAAM/9Q,GACpB,GAAK2O,MAAMyb,QAASpqB,GACnB,OAAS+9Q,EAAKsyC,QAAUrgD,EAAOpgC,QAASogC,EAAQ+N,GAAO/7O,MAAOhiC,IAAW,CAE3E,GAEKguY,EAAQwpmB,UACbxnuB,EAAO2ouB,SAAUt+9B,MAAOnM,IAAM,SAAU6vQ,GACvC,OAAwC,OAAjCA,EAAK5lQ,aAAc,SAAqB,KAAO4lQ,EAAK/9Q,KAC5D,EAEF,GAQAguY,EAAQ6qmB,QAAU,cAAer3+B,EAGjC,IAAIs3+B,GAAc,kCACjBC,GAA0B,SAAU15+B,GACnCA,EAAEs+Q,iBACH,EAED3N,EAAO3yJ,OAAQ2yJ,EAAOxpP,MAAO,CAE5Bg5C,QAAS,SAAUh5C,EAAOpW,EAAM2tQ,EAAMi7tB,GAErC,IAAIt5+B,EAAGo9C,EAAKzd,EAAK458B,EAAYC,EAAQt3vB,EAAQ+he,EAASw1R,EACrDC,EAAY,CAAEr7tB,GAAQj7Q,GACtBunB,EAAO8vG,EAAOz/G,KAAM8L,EAAO,QAAWA,EAAM6D,KAAO7D,EACnDy50B,EAAa9luB,EAAOz/G,KAAM8L,EAAO,aAAgBA,EAAMuqQ,UAAUx1R,MAAO,KAAQ,GAKjF,GAHAuhD,EAAMq87B,EAAc958B,EAAM0+O,EAAOA,GAAQj7Q,EAGlB,IAAlBi7Q,EAAKj7J,UAAoC,IAAlBi7J,EAAKj7J,WAK5Bg23B,GAAYv8+B,KAAM8tB,EAAO2lP,EAAOxpP,MAAM+o9B,aAItCll9B,EAAKznB,QAAS,MAAS,IAG3Bq91B,EAAa510B,EAAK9uB,MAAO,KACzB8uB,EAAO410B,EAAW19yB,QAClB09yB,EAAWxy1B,QAEZyr+B,EAAS7u9B,EAAKznB,QAAS,KAAQ,GAAK,KAAOynB,GAG3C7D,EAAQA,EAAOwpP,EAAOoH,SACrB5wP,EACA,IAAIwpP,EAAOgpQ,MAAO3uf,EAAuB,iBAAV7D,GAAsBA,IAGhDwo9B,UAAYgK,EAAe,EAAI,EACrCxy9B,EAAMuqQ,UAAYkvkB,EAAW1n1B,KAAM,KACnCiO,EAAMyp9B,WAAazp9B,EAAMuqQ,UACxB,IAAI5kP,OAAQ,UAAY8zzB,EAAW1n1B,KAAM,iBAAoB,WAC7D,KAGDiO,EAAMhZ,YAAS2D,EACTqV,EAAMpe,SACXoe,EAAMpe,OAAS21Q,GAIhB3tQ,EAAe,MAARA,EACN,CAAEoW,GACFwpP,EAAO6wtB,UAAWzw9B,EAAM,CAAEoW,IAG3Bm9rB,EAAU3zc,EAAOxpP,MAAMm9rB,QAASt5rB,IAAU,CAAC,EACrC2u9B,IAAgBr1R,EAAQnkpB,UAAmD,IAAxCmkpB,EAAQnkpB,QAAQrkD,MAAO4iQ,EAAM3tQ,IAAtE,CAMA,IAAM4o+B,IAAiBr1R,EAAQ2sR,WAAanguB,EAAU4N,GAAS,CAM9D,IAJAk7tB,EAAat1R,EAAQsrR,cAAgB5k9B,EAC/Byu9B,GAAYv8+B,KAAM08+B,EAAa5u9B,KACpCyyB,EAAMA,EAAIz6C,YAEHy6C,EAAKA,EAAMA,EAAIz6C,WACtB+2+B,EAAUjr+B,KAAM2uC,GAChBzd,EAAMyd,EAIFzd,KAAU0+O,EAAKz8Q,eAAiBwB,IACpCs2+B,EAAUjr+B,KAAMkxB,EAAI99B,aAAe89B,EAAI+hF,cAAgB5/G,EAEzD,CAIA,IADA9B,EAAI,GACMo9C,EAAMs87B,EAAW15+B,QAAY8mB,EAAMk0U,wBAC5Cy+oB,EAAcr87B,EACdt2B,EAAM6D,KAAO3qB,EAAI,EAChBu5+B,EACAt1R,EAAQ6rR,UAAYnl9B,GAGrBu3N,GACE2qvB,EAASr+9B,IAAK4uC,EAAK,WAAc34C,OAAO4W,OAAQ,OAC9CyL,EAAM6D,OACTki9B,EAASr+9B,IAAK4uC,EAAK,YAEnB8kM,EAAOzmO,MAAO2hC,EAAK1sC,IAIpBwxO,EAASs3vB,GAAUp87B,EAAKo87B,KACTt3vB,EAAOzmO,OAASmx9B,EAAYxv7B,KAC1Ct2B,EAAMhZ,OAASo0O,EAAOzmO,MAAO2hC,EAAK1sC,IACZ,IAAjBoW,EAAMhZ,QACVgZ,EAAMwgH,kBA8CT,OA1CAxgH,EAAM6D,KAAOA,EAGP2u9B,GAAiBxy9B,EAAM42P,sBAEpBumc,EAAQ5plB,WACqC,IAApD4plB,EAAQ5plB,SAAS5+G,MAAOi+9B,EAAU189B,MAAOtM,KACzCk89B,EAAYvutB,IAIPm7tB,GAAUhs9B,EAAY6wP,EAAM1zP,MAAa8lP,EAAU4N,MAGvD1+O,EAAM0+O,EAAMm7tB,MAGXn7tB,EAAMm7tB,GAAW,MAIlBlpuB,EAAOxpP,MAAM+o9B,UAAYll9B,EAEpB7D,EAAMk0U,wBACVy+oB,EAAY5m+B,iBAAkB8X,EAAM0u9B,IAGrCh7tB,EAAM1zP,KAED7D,EAAMk0U,wBACVy+oB,EAAY3m+B,oBAAqB6X,EAAM0u9B,IAGxC/ouB,EAAOxpP,MAAM+o9B,eAAYp+9B,EAEpBkuB,IACJ0+O,EAAMm7tB,GAAW758B,IAMd7Y,EAAMhZ,MAzFb,CA0FD,EAIA6r+B,SAAU,SAAUhv9B,EAAM0zP,EAAMv3P,GAC/B,IAAInnB,EAAI2wQ,EAAO3yJ,OACd,IAAI2yJ,EAAOgpQ,MACXxyf,EACA,CACC6D,KAAMA,EACNmm9B,aAAa,IAIfxguB,EAAOxpP,MAAMg5C,QAASngE,EAAG,KAAM0+Q,EAChC,IAID/N,EAAO7gQ,GAAGkuG,OAAQ,CAEjB79C,QAAS,SAAUn1C,EAAMja,GACxB,OAAOiK,KAAK4Q,KAAM,WACjB+kP,EAAOxpP,MAAMg5C,QAASn1C,EAAMja,EAAMiK,KACnC,EACD,EACA4kQ,eAAgB,SAAU50P,EAAMja,GAC/B,IAAI2tQ,EAAO1jQ,KAAM,GACjB,GAAK0jQ,EACJ,OAAO/N,EAAOxpP,MAAMg5C,QAASn1C,EAAMja,EAAM2tQ,GAAM,EAEjD,IAYKiwH,EAAQ6qmB,SACb7ouB,EAAO/kP,KAAM,CAAEogF,MAAO,UAAWD,KAAM,YAAc,SAAUl+C,EAAM4i7B,GAGpE,IAAIv36B,EAAU,SAAU/xC,GACvBwpP,EAAOxpP,MAAM6y9B,SAAUvJ,EAAKtp9B,EAAMpe,OAAQ4nQ,EAAOxpP,MAAMsp9B,IAAKtp9B,GAC7D,EAEAwpP,EAAOxpP,MAAMm9rB,QAASmsR,GAAQ,CAC7BrmjB,MAAO,WAIN,IAAIpmU,EAAMhpG,KAAK/Y,eAAiB+Y,KAAKvX,UAAYuX,KAChDi/9B,EAAW/M,EAASR,OAAQ1o3B,EAAKys3B,GAE5BwJ,GACLj23B,EAAI9wG,iBAAkB26C,EAAMqL,GAAS,GAEtCg06B,EAASR,OAAQ1o3B,EAAKys3B,GAAOwJ,GAAY,GAAM,EAChD,EACA3nV,SAAU,WACT,IAAItuiB,EAAMhpG,KAAK/Y,eAAiB+Y,KAAKvX,UAAYuX,KAChDi/9B,EAAW/M,EAASR,OAAQ1o3B,EAAKys3B,GAAQ,EAEpCwJ,EAKL/M,EAASR,OAAQ1o3B,EAAKys3B,EAAKwJ,IAJ3Bj23B,EAAI7wG,oBAAqB06C,EAAMqL,GAAS,GACxCg06B,EAAStv7B,OAAQomE,EAAKys3B,GAKxB,EAEF,GAED,IAAIxs4B,GAAW9hG,EAAO8hG,SAElBoD,GAAQ,CAAEo8F,KAAM5/K,KAAKC,OAErBo29B,GAAS,KAKbvpuB,EAAOwpuB,SAAW,SAAUpp+B,GAC3B,IAAI6pK,EACJ,IAAM7pK,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACC6pK,GAAM,IAAMz4K,EAAOm3Z,WAAcC,gBAAiBxoZ,EAAM,WACzD,CAAE,MAAQ/Q,GACT46K,OAAM9oK,CACP,CAKA,OAHM8oK,IAAOA,EAAI4qB,qBAAsB,eAAgBp2L,QACtDuhQ,EAAO1rP,MAAO,gBAAkBlU,GAE1B6pK,CACR,EAGA,IACCw/zB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAatq8B,EAAQ5iB,EAAKmt9B,EAAans+B,GAC/C,IAAIC,EAEJ,GAAKe,MAAMyb,QAASuC,GAGnBqjP,EAAO/kP,KAAM0B,EAAK,SAAUjtB,EAAG8c,GACzBs99B,GAAeL,GAASl9+B,KAAMgzC,GAGlC5hC,EAAK4hC,EAAQ/yB,GAKbq99B,GACCtq8B,EAAS,KAAqB,iBAAN/yB,GAAuB,MAALA,EAAY9c,EAAI,IAAO,IACjE8c,EACAs99B,EACAns+B,EAGH,QAEM,GAAMms+B,GAAiC,WAAlB3Z,EAAQxz8B,GAUnChf,EAAK4hC,EAAQ5iB,QAPb,IAAM/e,KAAQ+e,EACbkt9B,GAAatq8B,EAAS,IAAM3hC,EAAO,IAAK+e,EAAK/e,GAAQks+B,EAAans+B,EAQrE,CAIAqiQ,EAAO3/B,MAAQ,SAAUp8N,EAAG6l+B,GAC3B,IAAIvq8B,EACHjyC,EAAI,GACJqQ,EAAM,SAAU9I,EAAKk1+B,GAGpB,IAAI/5+B,EAAQktB,EAAY6s9B,GACvBA,IACAA,EAEDz8+B,EAAGA,EAAEmR,QAAWk0F,mBAAoB99F,GAAQ,IAC3C89F,mBAA6B,MAAT3iG,EAAgB,GAAKA,EAC3C,EAED,GAAU,MAALiU,EACJ,MAAO,GAIR,GAAKtF,MAAMyb,QAASnW,IAASA,EAAE+zG,SAAWgoJ,EAAOjrC,cAAe9wN,GAG/D+7P,EAAO/kP,KAAMhX,EAAG,WACftG,EAAK0M,KAAKzM,KAAMyM,KAAKra,MACtB,QAMA,IAAMuvC,KAAUt7B,EACf4l+B,GAAatq8B,EAAQt7B,EAAGs7B,GAAUuq8B,EAAans+B,GAKjD,OAAOrQ,EAAEib,KAAM,IAChB,EAEAy3P,EAAO7gQ,GAAGkuG,OAAQ,CACjBwgB,UAAW,WACV,OAAOmyI,EAAO3/B,MAAOh2N,KAAK2/9B,iBAC3B,EACAA,eAAgB,WACf,OAAO3/9B,KAAKjN,IAAK,WAGhB,IAAIpC,EAAWglQ,EAAOrjO,KAAMtyB,KAAM,YAClC,OAAOrP,EAAWglQ,EAAO6wtB,UAAW719B,GAAaqP,IAClD,GACC/O,OAAQ,WACR,IAAI+e,EAAOhQ,KAAKgQ,KAGhB,OAAOhQ,KAAKzM,OAASoiQ,EAAQ31P,MAAOilH,GAAI,cACvCs62B,GAAar9+B,KAAM8d,KAAK7X,YAAem3+B,GAAgBp9+B,KAAM8tB,KAC3DhQ,KAAKg2S,UAAYy9qB,GAAevx+B,KAAM8tB,GAC1C,GACCjd,IAAK,SAAU4H,EAAI+oQ,GACnB,IAAI/7O,EAAMguO,EAAQ31P,MAAO2nB,MAEzB,OAAY,MAAPA,EACG,KAGHrzB,MAAMyb,QAAS4X,GACZguO,EAAO5iQ,IAAK40B,EAAK,SAAUA,GACjC,MAAO,CAAEp0B,KAAMmwQ,EAAKnwQ,KAAM5N,MAAOgiC,EAAI5jC,QAASs7+B,GAAO,QACtD,GAGM,CAAE9r+B,KAAMmwQ,EAAKnwQ,KAAM5N,MAAOgiC,EAAI5jC,QAASs7+B,GAAO,QACtD,GAAIxr+B,KACL,IAID,IACC+r+B,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZ1E,GAAa,CAAC,EAOdh4oB,GAAa,CAAC,EAGd28oB,GAAW,KAAKly+B,OAAQ,KAGxBmy+B,GAAe13+B,EAASskB,cAAe,KAIxC,SAASqz9B,GAA6B/4U,GAGrC,OAAO,SAAUg5U,EAAoB3r4B,GAED,iBAAvB2r4B,IACX3r4B,EAAO2r4B,EACPA,EAAqB,KAGtB,IAAIrf,EACH379B,EAAI,EACJi7+B,EAAYD,EAAmBj4+B,cAAcpE,MAAO6r+B,IAAmB,GAExE,GAAKh98B,EAAY6hF,GAGhB,KAAUss3B,EAAWsf,EAAWj7+B,MAGR,MAAlB279B,EAAU,IACdA,EAAWA,EAASlm9B,MAAO,IAAO,KAChCuspB,EAAW25T,GAAa35T,EAAW25T,IAAc,IAAK7p4B,QAASud,KAI/D2yjB,EAAW25T,GAAa35T,EAAW25T,IAAc,IAAKlt9B,KAAM4gG,EAIlE,CACD,CAGA,SAAS6r4B,GAA+Bl5U,EAAWz3pB,EAAS67uB,EAAiB+0P,GAE5E,IAAIC,EAAY,CAAC,EAChBC,EAAqBr5U,IAAc9jU,GAEpC,SAASmrD,EAASsykB,GACjB,IAAIr+sB,EAcJ,OAbA89tB,EAAWzf,IAAa,EACxBrrtB,EAAO/kP,KAAMy2oB,EAAW25T,IAAc,GAAI,SAAUp/8B,EAAG++9B,GACtD,IAAIC,EAAsBD,EAAoB/w+B,EAAS67uB,EAAiB+0P,GACxE,MAAoC,iBAAxBI,GACVF,GAAqBD,EAAWG,GAKtBF,IACD/9tB,EAAWi+tB,QADf,GAHNhx+B,EAAQ0w+B,UAAUnp5B,QAASyp5B,GAC3BlylB,EAASkylB,IACF,EAIT,GACOj+tB,CACR,CAEA,OAAO+rI,EAAS9+Y,EAAQ0w+B,UAAW,MAAUG,EAAW,MAAS/xlB,EAAS,IAC3E,CAKA,SAASmylB,GAAY9y+B,EAAQs5G,GAC5B,IAAI78G,EAAKisQ,EACRqquB,EAAcnruB,EAAOoruB,aAAaD,aAAe,CAAC,EAEnD,IAAMt2+B,KAAO68G,OACQvwG,IAAfuwG,EAAK78G,MACPs2+B,EAAat2+B,GAAQuD,EAAW0oQ,IAAUA,EAAO,CAAC,IAASjsQ,GAAQ68G,EAAK78G,IAO5E,OAJKisQ,GACJd,EAAO3yJ,QAAQ,EAAMj1G,EAAQ0oQ,GAGvB1oQ,CACR,CAhFCoy+B,GAAaly4B,KAAOhF,GAASgF,KAgP9B0nK,EAAO3yJ,OAAQ,CAGdj/D,OAAQ,EAGRw0M,aAAc,CAAC,EACfyovB,KAAM,CAAC,EAEPD,aAAc,CACbtz4B,IAAKxE,GAASgF,KACdj+E,KAAM,MACNix9B,QAvRgB,4DAuRQ/++B,KAAM+mG,GAASx/E,UACvCs3G,QAAQ,EACRmg3B,aAAa,EACbr74B,OAAO,EACPm/L,YAAa,mDAcbogc,QAAS,CACR,IAAK86Q,GACLpw8B,KAAM,aACN9mC,KAAM,YACN42K,IAAK,4BACL75E,KAAM,qCAGPu9I,SAAU,CACT1jE,IAAK,UACL52K,KAAM,SACN+8F,KAAM,YAGPo74B,eAAgB,CACfvh0B,IAAK,cACL9vI,KAAM,eACNi2D,KAAM,gBAKPq74B,WAAY,CAGX,SAAU7g+B,OAGV,aAAa,EAGb,YAAaoJ,KAAKyuB,MAGlB,WAAYu9N,EAAOwpuB,UAOpB2B,YAAa,CACZrz4B,KAAK,EACLtkE,SAAS,IAOXk48B,UAAW,SAAUtz+B,EAAQizN,GAC5B,OAAOA,EAGN6/wB,GAAYA,GAAY9y+B,EAAQ4nQ,EAAOoruB,cAAgB//wB,GAGvD6/wB,GAAYlruB,EAAOoruB,aAAchz+B,EACnC,EAEAuz+B,cAAelB,GAA6B7E,IAC5CgG,cAAenB,GAA6B78oB,IAG5CoxT,KAAM,SAAUlnjB,EAAK79F,GAGA,iBAAR69F,IACX79F,EAAU69F,EACVA,OAAM32F,GAIPlH,EAAUA,GAAW,CAAC,EAEtB,IAAIsY,EAGHs59B,EAGAC,EACAC,EAGApxV,EAGAqxV,EAGA1znB,EAGA2znB,EAGAv8+B,EAGAw8+B,EAGA5++B,EAAI0yQ,EAAO0ruB,UAAW,CAAC,EAAGzx+B,GAG1Bky+B,EAAkB7++B,EAAEkmC,SAAWlmC,EAG/B8++B,EAAqB9++B,EAAEkmC,UACpB248B,EAAgBr53B,UAAYq53B,EAAgBn03B,QAC7CgoJ,EAAQmsuB,GACRnsuB,EAAOxpP,MAGTm+F,EAAWqrJ,EAAO8lC,WAClBumsB,EAAmBrsuB,EAAOu6tB,UAAW,eAGrC+R,EAAah/+B,EAAEg/+B,YAAc,CAAC,EAG9BC,EAAiB,CAAC,EAClBC,EAAsB,CAAC,EAGvBC,EAAW,WAGX5B,EAAQ,CACPv/tB,WAAY,EAGZmiX,kBAAmB,SAAU54nB,GAC5B,IAAIxG,EACJ,GAAKiqX,EAAY,CAChB,IAAMyznB,EAEL,IADAA,EAAkB,CAAC,EACT19+B,EAAQ+7+B,GAAS168B,KAAMo88B,IAChCC,EAAiB19+B,EAAO,GAAIoE,cAAgB,MACzCs5+B,EAAiB19+B,EAAO,GAAIoE,cAAgB,MAAS,IACrD4F,OAAQhK,EAAO,IAGpBA,EAAQ09+B,EAAiBl3+B,EAAIpC,cAAgB,IAC9C,CACA,OAAgB,MAATpE,EAAgB,KAAOA,EAAMka,KAAM,KAC3C,EAGAktR,sBAAuB,WACtB,OAAO6iF,EAAYwznB,EAAwB,IAC5C,EAGAx2sB,iBAAkB,SAAU13R,EAAM5N,GAMjC,OALkB,MAAbsoX,IACJ16W,EAAO4u+B,EAAqB5u+B,EAAKnL,eAChC+5+B,EAAqB5u+B,EAAKnL,gBAAmBmL,EAC9C2u+B,EAAgB3u+B,GAAS5N,GAEnBqa,IACR,EAGAile,iBAAkB,SAAUj1d,GAI3B,OAHkB,MAAbi+V,IACJhrX,EAAEqwY,SAAWtjX,GAEPhQ,IACR,EAGAii+B,WAAY,SAAUlv+B,GACrB,IAAIy7F,EACJ,GAAKz7F,EACJ,GAAKk7W,EAGJuynB,EAAMpyS,OAAQr7rB,EAAKyt+B,EAAMrz2B,cAIzB,IAAM3+B,KAAQz7F,EACbkv+B,EAAYzz4B,GAAS,CAAEyz4B,EAAYzz4B,GAAQz7F,EAAKy7F,IAInD,OAAOxuF,IACR,EAGA2mF,MAAO,SAAUoiM,GAChB,IAAIs5sB,EAAYt5sB,GAAcq5sB,EAK9B,OAJKl69B,GACJA,EAAUy+E,MAAO074B,GAElB7g+B,EAAM,EAAG6g+B,GACFri+B,IACR,GAmBF,GAfAsqG,EAAS+X,QAASm+2B,GAKlBv9+B,EAAEwqG,MAAUA,GAAOxqG,EAAEwqG,KAAOxE,GAASgF,MAAS,IAC5ClqG,QAASk8+B,GAAWh34B,GAASx/E,SAAW,MAG1CxmB,EAAE+sB,KAAOpgB,EAAQ20C,QAAU30C,EAAQogB,MAAQ/sB,EAAEshD,QAAUthD,EAAE+sB,KAGzD/sB,EAAEq9+B,WAAcr9+B,EAAE+99B,UAAY,KAAM549B,cAAcpE,MAAO6r+B,IAAmB,CAAE,IAGxD,MAAjB5s+B,EAAEq/+B,YAAsB,CAC5BX,EAAYl5+B,EAASskB,cAAe,KAKpC,IACC409B,EAAU1z4B,KAAOhrG,EAAEwqG,IAInBk04B,EAAU1z4B,KAAO0z4B,EAAU1z4B,KAC3BhrG,EAAEq/+B,YAAcnC,GAAa129B,SAAW,KAAO029B,GAAal4+B,MAC3D05+B,EAAUl49B,SAAW,KAAOk49B,EAAU15+B,IACxC,CAAE,MAAQjD,GAIT/B,EAAEq/+B,aAAc,CACjB,CACD,CAWA,GARKr/+B,EAAE8S,MAAQ9S,EAAEi++B,aAAiC,iBAAXj++B,EAAE8S,OACxC9S,EAAE8S,KAAO4/P,EAAO3/B,MAAO/yO,EAAE8S,KAAM9S,EAAEw8+B,cAIlCc,GAA+BhF,GAAYt4+B,EAAG2M,EAAS4w+B,GAGlDvynB,EACJ,OAAOuynB,EA8ER,IAAMn7+B,KAzENu8+B,EAAcjsuB,EAAOxpP,OAASlpB,EAAE89H,SAGQ,IAApB40I,EAAO5xN,UAC1B4xN,EAAOxpP,MAAMg5C,QAAS,aAIvBliE,EAAE+sB,KAAO/sB,EAAE+sB,KAAK2C,cAGhB1vB,EAAEs/+B,YAAcvC,GAAW99+B,KAAMe,EAAE+sB,MAKnCwx9B,EAAWv++B,EAAEwqG,IAAI1pG,QAAS87+B,GAAO,IAG3B58+B,EAAEs/+B,WAwBIt/+B,EAAE8S,MAAQ9S,EAAEi++B,aACoD,KAAzEj++B,EAAE+hS,aAAe,IAAKz8R,QAAS,uCACjCtF,EAAE8S,KAAO9S,EAAE8S,KAAKhS,QAAS67+B,GAAK,OAvB9BiC,EAAW5++B,EAAEwqG,IAAI3yF,MAAO0m+B,EAASpt+B,QAG5BnR,EAAE8S,OAAU9S,EAAEi++B,aAAiC,iBAAXj++B,EAAE8S,QAC1Cyr+B,IAActC,GAAOh9+B,KAAMs/+B,GAAa,IAAM,KAAQv++B,EAAE8S,YAGjD9S,EAAE8S,OAIO,IAAZ9S,EAAEspC,QACNi18B,EAAWA,EAASz9+B,QAAS+7+B,GAAY,MACzC+B,GAAa3C,GAAOh9+B,KAAMs/+B,GAAa,IAAM,KAAQ,KAASn14B,GAAMo8F,OACnEo5yB,GAIF5++B,EAAEwqG,IAAM+z4B,EAAWK,GASf5++B,EAAEu/+B,aACD7suB,EAAOpd,aAAcipvB,IACzBhB,EAAMv1sB,iBAAkB,oBAAqBt1B,EAAOpd,aAAcipvB,IAE9D7ruB,EAAOqruB,KAAMQ,IACjBhB,EAAMv1sB,iBAAkB,gBAAiBt1B,EAAOqruB,KAAMQ,MAKnDv++B,EAAE8S,MAAQ9S,EAAEs/+B,aAAgC,IAAlBt/+B,EAAE+hS,aAAyBp1R,EAAQo1R,cACjEw7sB,EAAMv1sB,iBAAkB,eAAgBhoS,EAAE+hS,aAI3Cw7sB,EAAMv1sB,iBACL,SACAhoS,EAAEq9+B,UAAW,IAAOr9+B,EAAEmiuB,QAASniuB,EAAEq9+B,UAAW,IAC3Cr9+B,EAAEmiuB,QAASniuB,EAAEq9+B,UAAW,KACA,MAArBr9+B,EAAEq9+B,UAAW,GAAc,KAAOJ,GAAW,WAAa,IAC7Dj9+B,EAAEmiuB,QAAS,MAIFniuB,EAAE+jG,QACZw54B,EAAMv1sB,iBAAkB5lS,EAAGpC,EAAE+jG,QAAS3hG,IAIvC,GAAKpC,EAAEw/+B,cAC+C,IAAnDx/+B,EAAEw/+B,WAAWpi+B,KAAMyh+B,EAAiBtB,EAAOv9+B,IAAiBgrX,GAG9D,OAAOuynB,EAAM754B,QAed,GAXAy74B,EAAW,QAGXJ,EAAiB1u+B,IAAKrQ,EAAEo/C,UACxBm+7B,EAAMh/9B,KAAMve,EAAEstjB,SACdiwb,EAAMn30B,KAAMpmK,EAAEgnB,OAGd/B,EAAYq49B,GAA+Bh9oB,GAAYtgW,EAAG2M,EAAS4w+B,GAK5D,CASN,GARAA,EAAMv/tB,WAAa,EAGd2guB,GACJG,EAAmB586B,QAAS,WAAY,CAAEq76B,EAAOv9+B,IAI7CgrX,EACJ,OAAOuynB,EAIHv9+B,EAAE4iG,OAAS5iG,EAAE06E,QAAU,IAC3B2ykB,EAAenppB,EAAOsgB,WAAY,WACjC+49B,EAAM754B,MAAO,UACd,EAAG1jG,EAAE06E,UAGN,IACCswS,GAAY,EACZ/lW,EAAUqqN,KAAM2vwB,EAAgB1g+B,EACjC,CAAE,MAAQxc,GAGT,GAAKipX,EACJ,MAAMjpX,EAIPwc,GAAO,EAAGxc,EACX,CACD,MAlCCwc,GAAO,EAAG,gBAqCX,SAASA,EAAM2rH,EAAQu12B,EAAkBvke,EAAWn3a,GACnD,IAAI2+L,EAAW4qR,EAAStmiB,EAAOokF,EAAU2zlB,EACxCj5Z,EAAa25sB,EAGTz0nB,IAILA,GAAY,EAGPqiS,GACJnppB,EAAOwgB,aAAc2ooB,GAKtBpooB,OAAYpR,EAGZ2q+B,EAAwBz64B,GAAW,GAGnCw54B,EAAMv/tB,WAAa9zI,EAAS,EAAI,EAAI,EAGpCw4J,EAAYx4J,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCgxY,IACJ9va,EA7lBJ,SAA8BprG,EAAGu9+B,EAAOrie,GAOvC,IALA,IAAIn1X,EAAIh5H,EAAM2y9B,EAAeC,EAC5Bt/vB,EAAWrgP,EAAEqgP,SACbg9vB,EAAYr9+B,EAAEq9+B,UAGY,MAAnBA,EAAW,IAClBA,EAAUp47B,aACEpxC,IAAPkyI,IACJA,EAAK/lJ,EAAEqwY,UAAYktmB,EAAMp9W,kBAAmB,iBAK9C,GAAKp6e,EACJ,IAAMh5H,KAAQszN,EACb,GAAKA,EAAUtzN,IAAUszN,EAAUtzN,GAAO9tB,KAAM8mJ,GAAO,CACtDs31B,EAAUnp5B,QAASnnE,GACnB,KACD,CAKF,GAAKsw9B,EAAW,KAAOnie,EACtBwke,EAAgBrC,EAAW,OACrB,CAGN,IAAMtw9B,KAAQmuf,EAAY,CACzB,IAAMmie,EAAW,IAAOr9+B,EAAEm++B,WAAYpx9B,EAAO,IAAMsw9B,EAAW,IAAQ,CACrEqC,EAAgB3y9B,EAChB,KACD,CACM4y9B,IACLA,EAAgB5y9B,EAElB,CAGA2y9B,EAAgBA,GAAiBC,CAClC,CAKA,GAAKD,EAIJ,OAHKA,IAAkBrC,EAAW,IACjCA,EAAUnp5B,QAASwr5B,GAEbxke,EAAWwke,EAEpB,CAwiBeE,CAAqB5/+B,EAAGu9+B,EAAOrie,KAIrCx4O,GAAahwB,EAAOpgC,QAAS,SAAUtyO,EAAEq9+B,YAAe,IAC7Dr9+B,EAAEm++B,WAAY,eAAkB,WAAY,GAI7C/y4B,EA5iBH,SAAsBprG,EAAGorG,EAAUmy4B,EAAO76sB,GACzC,IAAIm9sB,EAAOjt+B,EAAS6u4B,EAAM1/2B,EAAK6V,EAC9Bum8B,EAAa,CAAC,EAGdd,EAAYr9+B,EAAEq9+B,UAAUxl+B,QAGzB,GAAKwl+B,EAAW,GACf,IAAM57F,KAAQzh5B,EAAEm++B,WACfA,EAAY18F,EAAKt84B,eAAkBnF,EAAEm++B,WAAY18F,GAOnD,IAHA7u4B,EAAUyq+B,EAAUp47B,QAGZryC,GAcP,GAZK5S,EAAEk++B,eAAgBtr+B,KACtB2q+B,EAAOv9+B,EAAEk++B,eAAgBtr+B,IAAcw4F,IAIlCxzD,GAAQ8qP,GAAa1iS,EAAE8/+B,aAC5B104B,EAAWprG,EAAE8/+B,WAAY104B,EAAUprG,EAAE+99B,WAGtCnm7B,EAAOhlC,EACPA,EAAUyq+B,EAAUp47B,QAKnB,GAAiB,MAAZryC,EAEJA,EAAUglC,OAGJ,GAAc,MAATA,GAAgBA,IAAShlC,EAAU,CAM9C,KAHA6u4B,EAAO08F,EAAYvm8B,EAAO,IAAMhlC,IAAaur+B,EAAY,KAAOvr+B,IAI/D,IAAMit+B,KAAS1B,EAId,IADAp88B,EAAM898B,EAAM5h/B,MAAO,MACT,KAAQ2U,IAGjB6u4B,EAAO08F,EAAYvm8B,EAAO,IAAM7V,EAAK,KACpCo88B,EAAY,KAAOp88B,EAAK,KACb,EAGG,IAAT0/2B,EACJA,EAAO08F,EAAY0B,IAGgB,IAAxB1B,EAAY0B,KACvBjt+B,EAAUmvB,EAAK,GACfs78B,EAAUnp5B,QAASnyD,EAAK,KAEzB,KACD,CAMH,IAAc,IAAT0/2B,EAGJ,GAAKA,GAAQzh5B,EAAE+/+B,OACd304B,EAAWq2yB,EAAMr2yB,QAEjB,IACCA,EAAWq2yB,EAAMr2yB,EAClB,CAAE,MAAQrpG,GACT,MAAO,CACN2K,MAAO,cACPsa,MAAOy63B,EAAO1/4B,EAAI,sBAAwB61C,EAAO,OAAShlC,EAE5D,CAGH,CAIF,MAAO,CAAElG,MAAO,UAAWoG,KAAMs4F,EAClC,CA8cc404B,CAAahg/B,EAAGorG,EAAUmy4B,EAAO76sB,GAGvCA,GAGC1iS,EAAEu/+B,cACNxgT,EAAWw+S,EAAMp9W,kBAAmB,oBAEnCztX,EAAOpd,aAAcipvB,GAAax/S,IAEnCA,EAAWw+S,EAAMp9W,kBAAmB,WAEnCztX,EAAOqruB,KAAMQ,GAAax/S,IAKZ,MAAX70jB,GAA6B,SAAXlqI,EAAE+sB,KACxB+4Q,EAAa,YAGS,MAAX57J,EACX47J,EAAa,eAIbA,EAAa16L,EAAS1+F,MACtB4gjB,EAAUlid,EAASt4F,KAEnB4vR,IADA17Q,EAAQokF,EAASpkF,UAMlBA,EAAQ8+Q,GACH57J,GAAW47J,IACfA,EAAa,QACR57J,EAAS,IACbA,EAAS,KAMZqz2B,EAAMrz2B,OAASA,EACfqz2B,EAAMz3sB,YAAe25sB,GAAoB35sB,GAAe,GAGnDpD,EACJr7K,EAASkgoB,YAAas3P,EAAiB,CAAEvxb,EAASxnR,EAAYy3sB,IAE9Dl23B,EAASwm3B,WAAYgR,EAAiB,CAAEtB,EAAOz3sB,EAAY9+Q,IAI5Du29B,EAAMyB,WAAYA,GAClBA,OAAanr+B,EAER8q+B,GACJG,EAAmB586B,QAASwgO,EAAY,cAAgB,YACvD,CAAE66sB,EAAOv9+B,EAAG0iS,EAAY4qR,EAAUtmiB,IAIpC+39B,EAAiB1R,SAAUwR,EAAiB,CAAEtB,EAAOz3sB,IAEhD64sB,IACJG,EAAmB586B,QAAS,eAAgB,CAAEq76B,EAAOv9+B,MAG3C0yQ,EAAO5xN,QAChB4xN,EAAOxpP,MAAMg5C,QAAS,aAGzB,CAEA,OAAOq76B,CACR,EAEAzgI,QAAS,SAAUtywB,EAAK13F,EAAMmZ,GAC7B,OAAOymP,EAAO9hQ,IAAK45F,EAAK13F,EAAMmZ,EAAU,OACzC,EAEAg09B,UAAW,SAAUz14B,EAAKv+E,GACzB,OAAOymP,EAAO9hQ,IAAK45F,OAAK32F,EAAWoY,EAAU,SAC9C,IAGDymP,EAAO/kP,KAAM,CAAE,MAAO,QAAU,SAAUjW,EAAI4pC,GAC7CoxN,EAAQpxN,GAAW,SAAUkpD,EAAK13F,EAAMmZ,EAAUc,GAUjD,OAPK6C,EAAY9c,KAChBia,EAAOA,GAAQd,EACfA,EAAWnZ,EACXA,OAAOe,GAID6+P,EAAOg/Y,KAAMh/Y,EAAO3yJ,OAAQ,CAClCvV,IAAKA,EACLz9E,KAAMu0B,EACNy86B,SAAUhx8B,EACVja,KAAMA,EACNw6iB,QAASrhiB,GACPymP,EAAOjrC,cAAej9H,IAASA,GACnC,CACD,GAEAkoK,EAAO2ruB,cAAe,SAAUr++B,GAC/B,IAAIoC,EACJ,IAAMA,KAAKpC,EAAE+jG,QACa,iBAApB3hG,EAAE+C,gBACNnF,EAAE+hS,YAAc/hS,EAAE+jG,QAAS3hG,IAAO,GAGrC,GAGAswQ,EAAOuhuB,SAAW,SAAUzp4B,EAAK79F,EAASo5G,GACzC,OAAO2sJ,EAAOg/Y,KAAM,CACnBlnjB,IAAKA,EAGLz9E,KAAM,MACNgx8B,SAAU,SACVz07B,OAAO,EACPs5D,OAAO,EACPk7B,QAAQ,EAKRqg3B,WAAY,CACX,cAAe,WAAY,GAE5B2B,WAAY,SAAU104B,GACrBsnK,EAAO4wtB,WAAYl43B,EAAUz+F,EAASo5G,EACvC,GAEF,EAGA2sJ,EAAO7gQ,GAAGkuG,OAAQ,CACjBmg4B,QAAS,SAAUn6+B,GAClB,IAAIs5D,EAyBJ,OAvBKtiD,KAAM,KACL6S,EAAY7pB,KAChBA,EAAOA,EAAKqX,KAAML,KAAM,KAIzBsiD,EAAOqzM,EAAQ3sQ,EAAMgX,KAAM,GAAI/Y,eAAgBsyB,GAAI,GAAI0L,OAAO,GAEzDjlB,KAAM,GAAIhY,YACds6D,EAAKqmE,aAAc3oH,KAAM,IAG1BsiD,EAAKvvD,IAAK,WAGT,IAFA,IAAI2wQ,EAAO1jQ,KAEH0jQ,EAAK+1lB,mBACZ/1lB,EAAOA,EAAK+1lB,kBAGb,OAAO/1lB,CACR,GAAInzI,OAAQvwH,OAGNA,IACR,EAEAoj+B,UAAW,SAAUp6+B,GACpB,OAAK6pB,EAAY7pB,GACTgX,KAAK4Q,KAAM,SAAUvrB,GAC3BswQ,EAAQ31P,MAAOoj+B,UAAWp6+B,EAAKqX,KAAML,KAAM3a,GAC5C,GAGM2a,KAAK4Q,KAAM,WACjB,IAAI0xE,EAAOqzK,EAAQ31P,MAClBsjO,EAAWhhJ,EAAKghJ,WAEZA,EAASlvO,OACbkvO,EAAS6/vB,QAASn6+B,GAGlBs5F,EAAKiuC,OAAQvnI,EAEf,EACD,EAEAs5D,KAAM,SAAUt5D,GACf,IAAIq6+B,EAAiBxw9B,EAAY7pB,GAEjC,OAAOgX,KAAK4Q,KAAM,SAAUvrB,GAC3BswQ,EAAQ31P,MAAOmj+B,QAASE,EAAiBr6+B,EAAKqX,KAAML,KAAM3a,GAAM2D,EACjE,EACD,EAEA+kQ,OAAQ,SAAUpmI,GAIjB,OAHA3nH,KAAKvY,OAAQkgI,GAAWq1G,IAAK,QAASpsN,KAAM,WAC3C+kP,EAAQ31P,MAAOikQ,YAAajkQ,KAAKmqH,WAClC,GACOnqH,IACR,IAID21P,EAAOyiC,KAAK4vrB,QAAQ766B,OAAS,SAAUu2N,GACtC,OAAQ/N,EAAOyiC,KAAK4vrB,QAAQlj7B,QAAS4+N,EACtC,EACA/N,EAAOyiC,KAAK4vrB,QAAQlj7B,QAAU,SAAU4+N,GACvC,SAAWA,EAAK/8Q,aAAe+8Q,EAAK78Q,cAAgB68Q,EAAKkgpB,iBAAiBxv5B,OAC3E,EAKAuhQ,EAAOoruB,aAAa/1sB,IAAM,WACzB,IACC,OAAO,IAAI7jS,EAAO8iS,cACnB,CAAE,MAAQjlS,GAAK,CAChB,EAEA,IAAIs++B,GAAmB,CAGrB,EAAG,IAIH,KAAM,KAEPC,GAAe5tuB,EAAOoruB,aAAa/1sB,MAEpC2oG,EAAQ6vmB,OAASD,IAAkB,oBAAqBA,GACxD5vmB,EAAQghR,KAAO4uV,KAAiBA,GAEhC5tuB,EAAO4ruB,cAAe,SAAU3x+B,GAC/B,IAAIsf,EAAUqwyB,EAGd,GAAK5rb,EAAQ6vmB,MAAQD,KAAiB3z+B,EAAQ0y+B,YAC7C,MAAO,CACN/vwB,KAAM,SAAUvrI,EAAS3kD,GACxB,IAAIh9C,EACH2lS,EAAMp7R,EAAQo7R,MAWf,GATAA,EAAIj9L,KACHn+F,EAAQogB,KACRpgB,EAAQ69F,IACR79F,EAAQi2F,MACRj2F,EAAQ6z+B,SACR7z+B,EAAQ6wK,UAIJ7wK,EAAQ8z+B,UACZ,IAAMr++B,KAAKuK,EAAQ8z+B,UAClB14sB,EAAK3lS,GAAMuK,EAAQ8z+B,UAAWr++B,GAmBhC,IAAMA,KAdDuK,EAAQ0jY,UAAYtoG,EAAIi6M,kBAC5Bj6M,EAAIi6M,iBAAkBr1e,EAAQ0jY,UAQzB1jY,EAAQ0y+B,aAAgBt74B,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACVgkM,EAAIC,iBAAkB5lS,EAAG2hG,EAAS3hG,IAInC6pB,EAAW,SAAUc,GACpB,OAAO,WACDd,IACJA,EAAWqwyB,EAAgBv0hB,EAAIvyC,OAC9BuyC,EAAItyC,QAAUsyC,EAAIK,QAAUL,EAAIM,UAC/BN,EAAI+5M,mBAAqB,KAEb,UAAT/0d,EACJg7Q,EAAIrkM,QACgB,UAAT32E,EAKgB,iBAAfg7Q,EAAI79J,OACf9qF,EAAU,EAAG,SAEbA,EAGC2oP,EAAI79J,OACJ69J,EAAIjC,YAIN1mP,EACCih8B,GAAkBt4sB,EAAI79J,SAAY69J,EAAI79J,OACtC69J,EAAIjC,WAK+B,UAAjCiC,EAAI7B,cAAgB,SACM,iBAArB6B,EAAIE,aACV,CAAEyoW,OAAQ3oW,EAAI38L,UACd,CAAEv+D,KAAMk7P,EAAIE,cACbF,EAAII,yBAIR,CACD,EAGAJ,EAAIvyC,OAASvpO,IACbqwyB,EAAgBv0hB,EAAItyC,QAAUsyC,EAAIM,UAAYp8Q,EAAU,cAKnCpY,IAAhBk0R,EAAIK,QACRL,EAAIK,QAAUk0hB,EAEdv0hB,EAAI+5M,mBAAqB,WAGA,IAAnB/5M,EAAI/pB,YAMR95Q,EAAOsgB,WAAY,WACbyH,GACJqwyB,GAEF,EAEF,EAIDrwyB,EAAWA,EAAU,SAErB,IAGC87Q,EAAIz4D,KAAM3iO,EAAQ2y+B,YAAc3y+B,EAAQmG,MAAQ,KACjD,CAAE,MAAQ/Q,GAGT,GAAKkqB,EACJ,MAAMlqB,CAER,CACD,EAEA2hG,MAAO,WACDz3E,GACJA,GAEF,EAGH,GAMAymP,EAAO2ruB,cAAe,SAAUr++B,GAC1BA,EAAEq/+B,cACNr/+B,EAAEqgP,SAAS3oH,QAAS,EAEtB,GAGAg7I,EAAO0ruB,UAAW,CACjBj8Q,QAAS,CACRzqmB,OAAQ,6FAGT2oH,SAAU,CACT3oH,OAAQ,2BAETym3B,WAAY,CACX,cAAe,SAAUtx8B,GAExB,OADA6lO,EAAO4wtB,WAAYz27B,GACZA,CACR,KAKF6lO,EAAO2ruB,cAAe,SAAU,SAAUr++B,QACxB6T,IAAZ7T,EAAEspC,QACNtpC,EAAEspC,OAAQ,GAENtpC,EAAEq/+B,cACNr/+B,EAAE+sB,KAAO,MAEX,GAGA2lP,EAAO4ruB,cAAe,SAAU,SAAUt++B,GAIxC,IAAI03H,EAAQzrG,EADb,GAAKjsB,EAAEq/+B,aAAer/+B,EAAE0g/B,YAEvB,MAAO,CACNpxwB,KAAM,SAAU3wN,EAAGygC,GAClBs4E,EAASg7I,EAAQ,YACf4B,KAAMt0Q,EAAE0g/B,aAAe,CAAC,GACxBrx8B,KAAM,CAAE+uJ,QAASp+L,EAAE2g/B,cAAev83B,IAAKpkH,EAAEwqG,MACzCkd,GAAI,aAAcz7F,EAAW,SAAU4sB,GACvC6+E,EAAO/3E,SACP1zB,EAAW,KACN4sB,GACJuG,EAAuB,UAAbvG,EAAI9rB,KAAmB,IAAM,IAAK8rB,EAAI9rB,KAElD,GAGDvnB,EAASorD,KAAKs8C,YAAawqB,EAAQ,GACpC,EACAh0B,MAAO,WACDz3E,GACJA,GAEF,EAGH,GAKA,IAqGKxhB,GArGDm2+B,GAAe,GAClBC,GAAS,oBAGVnuuB,EAAO0ruB,UAAW,CACjB99W,MAAO,WACPwgX,cAAe,WACd,IAAI709B,EAAW209B,GAAaxh+B,OAAWszP,EAAOoH,QAAU,IAAQ1wK,GAAMo8F,OAEtE,OADAzoL,KAAMkP,IAAa,EACZA,CACR,IAIDymP,EAAO2ruB,cAAe,aAAc,SAAUr++B,EAAG+g/B,EAAkBxD,GAElE,IAAIyD,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZnh/B,EAAEsgoB,QAAqBugX,GAAO5h/B,KAAMe,EAAEwqG,KAChD,MACkB,iBAAXxqG,EAAE8S,MAE6C,KADnD9S,EAAE+hS,aAAe,IACjBz8R,QAAS,sCACXu7+B,GAAO5h/B,KAAMe,EAAE8S,OAAU,QAI5B,GAAKqu+B,GAAiC,UAArBnh/B,EAAEq9+B,UAAW,GA8D7B,OA3DA2D,EAAehh/B,EAAE8g/B,cAAgBlx9B,EAAY5vB,EAAE8g/B,eAC9C9g/B,EAAE8g/B,gBACF9g/B,EAAE8g/B,cAGEK,EACJnh/B,EAAGmh/B,GAAanh/B,EAAGmh/B,GAAWrg/B,QAAS+/+B,GAAQ,KAAOG,IAC/B,IAAZhh/B,EAAEsgoB,QACbtgoB,EAAEwqG,MAASyx4B,GAAOh9+B,KAAMe,EAAEwqG,KAAQ,IAAM,KAAQxqG,EAAEsgoB,MAAQ,IAAM0gX,GAIjEhh/B,EAAEm++B,WAAY,eAAkB,WAI/B,OAHM+C,GACLxuuB,EAAO1rP,MAAOg69B,EAAe,mBAEvBE,EAAmB,EAC3B,EAGAlh/B,EAAEq9+B,UAAW,GAAM,OAGnB4D,EAAc/8+B,EAAQ88+B,GACtB98+B,EAAQ88+B,GAAiB,WACxBE,EAAoBhw+B,SACrB,EAGAqs+B,EAAMpyS,OAAQ,gBAGQt3rB,IAAhBot+B,EACJvuuB,EAAQxuQ,GAAS42+B,WAAYkG,GAI7B98+B,EAAQ88+B,GAAiBC,EAIrBjh/B,EAAGgh/B,KAGPhh/B,EAAE8g/B,cAAgBC,EAAiBD,cAGnCF,GAAa/v+B,KAAMmw+B,IAIfE,GAAqBtx9B,EAAYqx9B,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAcpt+B,CACnC,GAGO,QAET,GAUA68X,EAAQgrM,qBACHjxkB,GAAOjF,EAAS89P,eAAeo4U,mBAAoB,IAAKjxkB,MACvDk9L,UAAY,6BACiB,IAA3Bl9L,GAAKy8H,WAAW/1H,QAQxBuhQ,EAAOy5tB,UAAY,SAAUr59B,EAAMozB,EAASk78B,GAC3C,MAAqB,iBAATtu+B,EACJ,IAEgB,kBAAZozB,IACXk78B,EAAcl78B,EACdA,GAAU,GAKLA,IAIAwqW,EAAQgrM,qBAMZtzhB,GALAliB,EAAU1gC,EAAS89P,eAAeo4U,mBAAoB,KAKvC5xjB,cAAe,SACzBkhF,KAAOxlG,EAASwgG,SAASgF,KAC9B9kE,EAAQ0qB,KAAKs8C,YAAa9kD,IAE1BliB,EAAU1gC,GAKZo/4B,GAAWw8F,GAAe,IAD1Bls8B,EAAS627B,EAAW3p8B,KAAMtvB,IAKlB,CAAEozB,EAAQpc,cAAeorB,EAAQ,MAGzCA,EAAS677B,GAAe,CAAEj+9B,GAAQozB,EAAS0+2B,GAEtCA,GAAWA,EAAQzz4B,QACvBuhQ,EAAQkyoB,GAAUjl2B,SAGZ+yN,EAAO7jP,MAAO,GAAIqmB,EAAOgyF,cAlChC,IAAI9+E,EAAMlT,EAAQ0v2B,CAmCnB,EAMAlyoB,EAAO7gQ,GAAGk0N,KAAO,SAAUv7H,EAAKttC,EAAQjxC,GACvC,IAAIy4G,EAAU33G,EAAMq+E,EACnB/L,EAAOtiF,KACPitH,EAAMx/B,EAAIllG,QAAS,KAsDpB,OApDK0kI,GAAO,IACXtF,EAAWk22B,GAAkBpw4B,EAAI3yF,MAAOmyH,IACxCx/B,EAAMA,EAAI3yF,MAAO,EAAGmyH,IAIhBp6G,EAAYstC,IAGhBjxC,EAAWixC,EACXA,OAASrpD,GAGEqpD,GAA4B,iBAAXA,IAC5BnwC,EAAO,QAIHsyE,EAAKluF,OAAS,GAClBuhQ,EAAOg/Y,KAAM,CACZlnjB,IAAKA,EAKLz9E,KAAMA,GAAQ,MACdgx8B,SAAU,OACVjr9B,KAAMoqD,IACH3+C,KAAM,SAAU0pR,GAGnB78L,EAAWl6F,UAEXmuF,EAAKt5F,KAAM2+H,EAIVguI,EAAQ,SAAUplI,OAAQolI,EAAOy5tB,UAAWlksB,IAAiBrwR,KAAM8sH,GAGnEujK,EAKF,GAAIkja,OAAQl/qB,GAAY,SAAUsx9B,EAAOrz2B,GACxC7qC,EAAK1xE,KAAM,WACV1B,EAASpO,MAAOd,KAAMquF,GAAY,CAAEmy4B,EAAMt1sB,aAAc/9J,EAAQqz2B,GACjE,EACD,GAGMxg+B,IACR,EAKA21P,EAAOyiC,KAAK4vrB,QAAQ/s6B,SAAW,SAAUyoN,GACxC,OAAO/N,EAAOuwtB,KAAMvwtB,EAAO+muB,OAAQ,SAAU5n+B,GAC5C,OAAO4uQ,IAAS5uQ,EAAG4uQ,IACpB,GAAItvQ,MACL,EAKAuhQ,EAAO/wQ,OAAS,CACf0/+B,UAAW,SAAU5guB,EAAM9zQ,EAASvK,GACnC,IAAIk/+B,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvD97+B,EAAW6sQ,EAAOxsQ,IAAKu6Q,EAAM,YAC7BmhuB,EAAUlvuB,EAAQ+N,GAClBtxO,EAAQ,CAAC,EAGQ,WAAbtpC,IACJ46Q,EAAKh6O,MAAM5gC,SAAW,YAGvB67+B,EAAYE,EAAQjg/B,SACpB6/+B,EAAY9uuB,EAAOxsQ,IAAKu6Q,EAAM,OAC9BkhuB,EAAajvuB,EAAOxsQ,IAAKu6Q,EAAM,SACI,aAAb56Q,GAAwC,UAAbA,KAC9C27+B,EAAYG,GAAar8+B,QAAS,SAAY,GAMhDm8+B,GADAH,EAAcM,EAAQ/7+B,YACDkB,IACrBw6+B,EAAUD,EAAYp6+B,OAGtBu6+B,EAAS/z9B,WAAY8z9B,IAAe,EACpCD,EAAU7z9B,WAAYi09B,IAAgB,GAGlC/x9B,EAAYjjB,KAGhBA,EAAUA,EAAQyQ,KAAMqjQ,EAAMr+Q,EAAGswQ,EAAO3yJ,OAAQ,CAAC,EAAG2h4B,KAGjC,MAAf/0+B,EAAQ5F,MACZooC,EAAMpoC,IAAQ4F,EAAQ5F,IAAM26+B,EAAU36+B,IAAQ06+B,GAE1B,MAAhB90+B,EAAQzF,OACZioC,EAAMjoC,KAASyF,EAAQzF,KAAOw6+B,EAAUx6+B,KAASq6+B,GAG7C,UAAW50+B,EACfA,EAAQk1+B,MAAMzk+B,KAAMqjQ,EAAMtxO,IAGA,iBAAdA,EAAMpoC,MACjBooC,EAAMpoC,KAAO,MAEa,iBAAfooC,EAAMjoC,OACjBioC,EAAMjoC,MAAQ,MAEf06+B,EAAQ17+B,IAAKipC,GAEf,GAGDujO,EAAO7gQ,GAAGkuG,OAAQ,CAGjBp+G,OAAQ,SAAUgL,GAGjB,GAAKuE,UAAUC,OACd,YAAmB0C,IAAZlH,EACNoQ,KACAA,KAAK4Q,KAAM,SAAUvrB,GACpBswQ,EAAO/wQ,OAAO0/+B,UAAWtk+B,KAAMpQ,EAASvK,EACzC,GAGF,IAAIwH,EAAMb,EACT03Q,EAAO1jQ,KAAM,GAEd,OAAM0jQ,EAQAA,EAAKkgpB,iBAAiBxv5B,QAK5BvH,EAAO62Q,EAAK92Q,wBACZZ,EAAM03Q,EAAKz8Q,cAAcC,YAClB,CACN8C,IAAK6C,EAAK7C,IAAMgC,EAAIkB,YACpB/C,KAAM0C,EAAK1C,KAAO6B,EAAIgB,cARf,CAAEhD,IAAK,EAAGG,KAAM,QATxB,CAmBD,EAIArB,SAAU,WACT,GAAMkX,KAAM,GAAZ,CAIA,IAAIjX,EAAcnE,EAAQokH,EACzB06J,EAAO1jQ,KAAM,GACbk34B,EAAe,CAAElt5B,IAAK,EAAGG,KAAM,GAGhC,GAAwC,UAAnCwrQ,EAAOxsQ,IAAKu6Q,EAAM,YAGtB9+Q,EAAS8+Q,EAAK92Q,4BAER,CAON,IANAhI,EAASob,KAAKpb,SAIdokH,EAAM06J,EAAKz8Q,cACX8B,EAAe26Q,EAAK36Q,cAAgBigH,EAAItgH,gBAChCK,IACLA,IAAiBigH,EAAIt7G,MAAQ3E,IAAiBigH,EAAItgH,kBACT,WAA3CitQ,EAAOxsQ,IAAKJ,EAAc,aAE1BA,EAAeA,EAAaf,WAExBe,GAAgBA,IAAiB26Q,GAAkC,IAA1B36Q,EAAa0/G,YAG1DyuyB,EAAevhpB,EAAQ5sQ,GAAenE,UACzBoF,KAAO2rQ,EAAOxsQ,IAAKJ,EAAc,kBAAkB,GAChEmu5B,EAAa/s5B,MAAQwrQ,EAAOxsQ,IAAKJ,EAAc,mBAAmB,GAEpE,CAGA,MAAO,CACNiB,IAAKpF,EAAOoF,IAAMkt5B,EAAalt5B,IAAM2rQ,EAAOxsQ,IAAKu6Q,EAAM,aAAa,GACpEv5Q,KAAMvF,EAAOuF,KAAO+s5B,EAAa/s5B,KAAOwrQ,EAAOxsQ,IAAKu6Q,EAAM,cAAc,GArCzE,CAuCD,EAYA36Q,aAAc,WACb,OAAOiX,KAAKjN,IAAK,WAGhB,IAFA,IAAIhK,EAAeiX,KAAKjX,aAEhBA,GAA2D,WAA3C4sQ,EAAOxsQ,IAAKJ,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBL,EACxB,EACD,IAIDitQ,EAAO/kP,KAAM,CAAE7jB,WAAY,cAAeE,UAAW,eAAiB,SAAUs3C,EAAQjS,GACvF,IAAItoC,EAAM,gBAAkBsoC,EAE5BqjO,EAAO7gQ,GAAIyvC,GAAW,SAAU5c,GAC/B,OAAO+p8B,EAAQ1x9B,KAAM,SAAU0jQ,EAAMn/N,EAAQ5c,GAG5C,IAAI37B,EAOJ,GANK8pQ,EAAU4N,GACd13Q,EAAM03Q,EACuB,IAAlBA,EAAKj7J,WAChBz8G,EAAM03Q,EAAKx8Q,kBAGC4P,IAAR6wB,EACJ,OAAO37B,EAAMA,EAAKsmC,GAASoxO,EAAMn/N,GAG7Bv4C,EACJA,EAAI0kI,SACF1mI,EAAYgC,EAAIgB,YAAV26B,EACP39B,EAAM29B,EAAM37B,EAAIkB,aAIjBw2Q,EAAMn/N,GAAW5c,CAEnB,EAAG4c,EAAQ5c,EAAKxzB,UAAUC,OAC3B,CACD,GAQAuhQ,EAAO/kP,KAAM,CAAE,MAAO,QAAU,SAAUjW,EAAI23B,GAC7CqjO,EAAO4kuB,SAAUjo8B,GAAS0l8B,GAAcrkmB,EAAQmlmB,cAC/C,SAAUp1tB,EAAM//C,GACf,GAAKA,EAIJ,OAHAA,EAAWm0wB,GAAQp0tB,EAAMpxO,GAGlBql8B,GAAUz1+B,KAAMyhO,GACtBgyC,EAAQ+N,GAAO56Q,WAAYwpC,GAAS,KACpCqxL,CAEH,EAEF,GAIAgyC,EAAO/kP,KAAM,CAAE6nK,OAAQ,SAAUI,MAAO,SAAW,SAAUtlL,EAAMyc,GAClE2lP,EAAO/kP,KAAM,CAAEpgB,QAAS,QAAU+C,EAAMszG,QAAS72F,EAAM,GAAI,QAAUzc,GACpE,SAAUwx+B,EAAcpkI,GAGxBhrmB,EAAO7gQ,GAAI6r2B,GAAa,SAAU5x0B,EAAQppC,GACzC,IAAIgs+B,EAAYx99B,UAAUC,SAAY2w+B,GAAkC,kBAAXh28B,GAC5DysD,EAAQup5B,KAA6B,IAAXh28B,IAA6B,IAAVppC,EAAiB,SAAW,UAE1E,OAAO+r+B,EAAQ1x9B,KAAM,SAAU0jQ,EAAM1zP,EAAMrqB,GAC1C,IAAIqjH,EAEJ,OAAK8sJ,EAAU4N,GAGyB,IAAhCi9lB,EAASp42B,QAAS,SACxBm7Q,EAAM,QAAUnwQ,GAChBmwQ,EAAKj7Q,SAASC,gBAAiB,SAAW6K,GAIrB,IAAlBmwQ,EAAKj7J,UACTO,EAAM06J,EAAKh7Q,gBAIJlD,KAAKmE,IACX+5Q,EAAKh2Q,KAAM,SAAW6F,GAAQy1G,EAAK,SAAWz1G,GAC9CmwQ,EAAKh2Q,KAAM,SAAW6F,GAAQy1G,EAAK,SAAWz1G,GAC9Cy1G,EAAK,SAAWz1G,UAIDuD,IAAVnR,EAGNgwQ,EAAOxsQ,IAAKu6Q,EAAM1zP,EAAMwrE,GAGxBm6K,EAAOjsO,MAAOg6O,EAAM1zP,EAAMrqB,EAAO61F,EACnC,EAAGxrE,EAAM2h9B,EAAY5i8B,OAASj4B,EAAW669B,EAC1C,CACD,EACD,GAGAh8tB,EAAO/kP,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,YACE,SAAUjW,EAAIqV,GAChB2lP,EAAO7gQ,GAAIkb,GAAS,SAAUlb,GAC7B,OAAOkL,KAAK2qG,GAAI36F,EAAMlb,EACvB,CACD,GAKA6gQ,EAAO7gQ,GAAGkuG,OAAQ,CAEjBtnD,KAAM,SAAUkoN,EAAO7tQ,EAAMjB,GAC5B,OAAOkL,KAAK2qG,GAAIi5J,EAAO,KAAM7tQ,EAAMjB,EACpC,EACAowQ,OAAQ,SAAUtB,EAAO9uQ,GACxB,OAAOkL,KAAKitH,IAAK22I,EAAO,KAAM9uQ,EAC/B,EAEA6wO,SAAU,SAAUh+G,EAAUi8I,EAAO7tQ,EAAMjB,GAC1C,OAAOkL,KAAK2qG,GAAIi5J,EAAOj8I,EAAU5xH,EAAMjB,EACxC,EACAkw+B,WAAY,SAAUr92B,EAAUi8I,EAAO9uQ,GAGtC,OAA4B,IAArBX,UAAUC,OAChB4L,KAAKitH,IAAKtF,EAAU,MACpB3nH,KAAKitH,IAAK22I,EAAOj8I,GAAY,KAAM7yH,EACrC,EAEA80B,MAAO,SAAUq78B,EAAQC,GACxB,OAAOll+B,KAAKs9P,WAAY2nuB,GAAS5nuB,WAAY6nuB,GAASD,EACvD,IAGDtvuB,EAAO/kP,KAAM,wLAEgD1vB,MAAO,KACnE,SAAUyZ,EAAIpH,GAGboiQ,EAAO7gQ,GAAIvB,GAAS,SAAUwC,EAAMjB,GACnC,OAAOX,UAAUC,OAAS,EACzB4L,KAAK2qG,GAAIp3G,EAAM,KAAMwC,EAAMjB,GAC3BkL,KAAKmlD,QAAS5xD,EAChB,CACD,GAOD,IAAIirsB,GAAQ,qCAMZ7oc,EAAO1gO,MAAQ,SAAUngC,EAAIq0B,GAC5B,IAAInE,EAAK3wB,EAAM4gC,EAUf,GARwB,iBAAZ9L,IACXnE,EAAMlwB,EAAIq0B,GACVA,EAAUr0B,EACVA,EAAKkwB,GAKAnS,EAAY/d,GAalB,OARAT,EAAOyG,EAAMuF,KAAMlM,UAAW,GAC9B8gC,EAAQ,WACP,OAAOngC,EAAGgM,MAAOqoB,GAAWnpB,KAAM3L,EAAKrG,OAAQ8M,EAAMuF,KAAMlM,YAC5D,EAGA8gC,EAAMwzJ,KAAO3zL,EAAG2zL,KAAO3zL,EAAG2zL,MAAQktE,EAAOltE,OAElCxzJ,CACR,EAEA0gO,EAAOwvuB,UAAY,SAAUC,GACvBA,EACJzvuB,EAAO67tB,YAEP77tB,EAAOwL,OAAO,EAEhB,EACAxL,EAAO5lP,QAAUzb,MAAMyb,QACvB4lP,EAAO09Y,UAAY1poB,KAAKyuB,MACxBu9N,EAAOxtQ,SAAWA,EAClBwtQ,EAAO9iP,WAAaA,EACpB8iP,EAAOG,SAAWA,EAClBH,EAAOmstB,UAAYA,EACnBnstB,EAAO3lP,KAAO818B,EAEdnwtB,EAAO7sP,IAAMD,KAAKC,IAElB6sP,EAAO0vuB,UAAY,SAAU/y9B,GAK5B,IAAItC,EAAO2lP,EAAO3lP,KAAMsC,GACxB,OAAkB,WAATtC,GAA8B,WAATA,KAK5BjqB,MAAOusB,EAAM3B,WAAY2B,GAC5B,EAEAqjP,EAAO33P,KAAO,SAAU8xB,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK/rC,QAASy6sB,GAAO,GAChC,OAoBE,KAFqB,EAAF,WACnB,OAAO7oc,CACP,UAFiB,OAEjB,aAMF,IAGC2vuB,GAAUn++B,EAAOwuQ,OAGjB4vuB,GAAKp++B,EAAOuiG,EAwBb,OAtBAisK,EAAO+2lB,WAAa,SAAUj2lB,GAS7B,OARKtvQ,EAAOuiG,IAAMisK,IACjBxuQ,EAAOuiG,EAAI674B,IAGP9uuB,GAAQtvQ,EAAOwuQ,SAAWA,IAC9BxuQ,EAAOwuQ,OAAS2vuB,IAGV3vuB,CACR,OAKyB,IAAb6vtB,IACXr+9B,EAAOwuQ,OAASxuQ,EAAOuiG,EAAIisK,GAMrBA,CACP,E,mCCtnVA,IAAIj2J,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACA96B,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQ+hB,cAAW,EAenB/hB,EAAQ+hB,SATR,SAAkBoiB,GACd,OAAIA,GAAUA,EAAOx0B,OAIV,CAAE1K,IAHClE,KAAKkE,IAAIoX,MAAMtb,KAAM0uV,EAAc,GAAIx0O,EAAO92E,KAGrCj/B,IAFTnE,KAAKmE,IAAImX,MAAMtb,KAAM0uV,EAAc,GAAIx0O,EAAO92E,KAE3BqmD,QADfrmD,EAAOt+B,OAAO,SAAUquD,EAAOhzD,GAAS,OAAOgzD,EAAQhzD,CAAO,EAAG,GAAKijC,EAAOx0B,QAGxF,IACX,C,kBCrCA,IAAIyqsB,EAAa,EAAQ,OACrBx0sB,EAAO,EAAQ,OAenBq3F,EAAOj9F,QAJP,SAAoB6mD,EAAQ/5B,GAC1B,OAAO+5B,GAAUuzpB,EAAWttrB,EAAQlnB,EAAKknB,GAAS+5B,EACpD,C,+BCXEo2C,EAAOj9F,QAAU,EAAjB,M,sBCHF,IAAIs8H,EAAyB,oBAATz+B,KAAuBA,KAAOtiF,KAC9Cwl+B,EAAW,WACf,SAASrs9B,IACTnZ,KAAK8lF,OAAQ,EACb9lF,KAAKyl+B,aAAe1k3B,EAAO0k3B,YAC3B,CAEA,OADAts9B,EAAE/Y,UAAY2gH,EACP,IAAI5nG,CACV,CAPc,IAQf,SAAUmpE,IAEO,SAAW79F,GAE1B,IAAIkvY,EACY,oBAAqBrxS,EADjCqxS,EAEQ,WAAYrxS,GAAQ,aAAc99F,OAF1CmvY,EAIA,eAAgBrxS,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAI8G,MACG,CACT,CAAE,MAAOpkG,GACP,OAAO,CACT,CACD,CAPD,GANA2uY,EAcQ,aAAcrxS,EAdtBqxS,EAeW,gBAAiBrxS,EAOhC,GAAIqxS,EACF,IAAI+xmB,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFrq2B,YAAYsgF,QACZ,SAAStpM,GACP,OAAOA,GAAOoz9B,EAAYn9+B,QAAQuB,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,KAAS,CAC5E,EAGJ,SAASsz9B,EAAcry+B,GAIrB,GAHoB,iBAATA,IACTA,EAAOgN,OAAOhN,IAEZ,4BAA4BrR,KAAKqR,GACnC,MAAM,IAAI+M,UAAU,0CAEtB,OAAO/M,EAAKnL,aACd,CAEA,SAASy9+B,EAAelg/B,GAItB,MAHqB,iBAAVA,IACTA,EAAQ4a,OAAO5a,IAEVA,CACT,CAGA,SAASmg/B,EAAY5x8B,GACnB,IAAIhyB,EAAW,CACbpa,KAAM,WACJ,IAAInC,EAAQuuC,EAAMgU,QAClB,MAAO,CAAC1mC,UAAgB1K,IAAVnR,EAAqBA,MAAOA,EAC5C,GASF,OANIguY,IACFzxX,EAAS1d,OAAO0d,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAAS6j+B,EAAQ/+4B,GACfhnF,KAAKjN,IAAM,CAAC,EAERi0F,aAAmB++4B,EACrB/+4B,EAAQh1F,QAAQ,SAASrM,EAAO4N,GAC9ByM,KAAKuwH,OAAOh9H,EAAM5N,EACpB,EAAGqa,MACM1L,MAAMyb,QAAQi3E,GACvBA,EAAQh1F,QAAQ,SAAS65F,GACvB7rF,KAAKuwH,OAAO1kC,EAAO,GAAIA,EAAO,GAChC,EAAG7rF,MACMgnF,GACTl9F,OAAOu7C,oBAAoB2hD,GAASh1F,QAAQ,SAASuB,GACnDyM,KAAKuwH,OAAOh9H,EAAMyzF,EAAQzzF,GAC5B,EAAGyM,KAEP,CA8DA,SAASgm+B,EAASt4+B,GAChB,GAAIA,EAAKu4+B,SACP,OAAOtv+B,QAAQyK,OAAO,IAAId,UAAU,iBAEtC5S,EAAKu4+B,UAAW,CAClB,CAEA,SAASC,EAAgBhvnB,GACvB,OAAO,IAAIvgX,QAAQ,SAASC,EAASwK,GACnC81W,EAAOz+H,OAAS,WACd7hP,EAAQsgX,EAAO/jX,OACjB,EACA+jX,EAAOx+H,QAAU,WACft3O,EAAO81W,EAAOjtW,MAChB,CACF,EACF,CAEA,SAASk89B,EAAsB772B,GAC7B,IAAI4sP,EAAS,IAAI1oI,WACbnsH,EAAU6j3B,EAAgBhvnB,GAE9B,OADAA,EAAOxoI,kBAAkBpkH,GAClBjI,CACT,CAmBA,SAAS+j3B,EAAYvr2B,GACnB,GAAIA,EAAI//H,MACN,OAAO+/H,EAAI//H,MAAM,GAEjB,IAAI4mM,EAAO,IAAIr8G,WAAWw1C,EAAIwyD,YAE9B,OADAqU,EAAK3tM,IAAI,IAAIsxF,WAAWw1C,IACjB6mE,EAAK/8M,MAEhB,CAEA,SAAS4rY,IA0FP,OAzFAvwX,KAAKim+B,UAAW,EAEhBjm+B,KAAKqm+B,UAAY,SAAS34+B,GAhM5B,IAAoB4kB,EAiMhBtS,KAAKsm+B,UAAY54+B,EACZA,EAEsB,iBAATA,EAChBsS,KAAKum+B,UAAY74+B,EACRimY,GAAgBvqS,KAAKhpF,UAAUy1D,cAAcnoE,GACtDsS,KAAKwm+B,UAAY94+B,EACRimY,GAAoBivP,SAASxinB,UAAUy1D,cAAcnoE,GAC9DsS,KAAKym+B,cAAgB/4+B,EACZimY,GAAwBnuS,gBAAgBplF,UAAUy1D,cAAcnoE,GACzEsS,KAAKum+B,UAAY74+B,EAAK1G,WACb2sY,GAAuBA,IA5MlBrhX,EA4M6C5kB,IA3MjD0/L,SAAShtL,UAAUy1D,cAAcvjD,IA4M3CtS,KAAK0m+B,iBAAmBN,EAAY14+B,EAAK/I,QAEzCqb,KAAKsm+B,UAAY,IAAIl94B,KAAK,CAACppF,KAAK0m+B,oBACvB/ymB,IAAwBr4P,YAAYl7H,UAAUy1D,cAAcnoE,IAASi4+B,EAAkBj4+B,IAChGsS,KAAK0m+B,iBAAmBN,EAAY14+B,GAEpCsS,KAAKum+B,UAAY74+B,EAAO5D,OAAOsW,UAAUpZ,SAASqZ,KAAK3S,GAhBvDsS,KAAKum+B,UAAY,GAmBdvm+B,KAAKgnF,QAAQnzF,IAAI,kBACA,iBAATnG,EACTsS,KAAKgnF,QAAQjzF,IAAI,eAAgB,4BACxBiM,KAAKwm+B,WAAaxm+B,KAAKwm+B,UAAUx29B,KAC1ChQ,KAAKgnF,QAAQjzF,IAAI,eAAgBiM,KAAKwm+B,UAAUx29B,MACvC2jX,GAAwBnuS,gBAAgBplF,UAAUy1D,cAAcnoE,IACzEsS,KAAKgnF,QAAQjzF,IAAI,eAAgB,mDAGvC,EAEI4/X,IACF3zX,KAAKsqH,KAAO,WACV,IAAI/oH,EAAWyk+B,EAAShm+B,MACxB,GAAIuB,EACF,OAAOA,EAGT,GAAIvB,KAAKwm+B,UACP,OAAO7v+B,QAAQC,QAAQoJ,KAAKwm+B,WACvB,GAAIxm+B,KAAK0m+B,iBACd,OAAO/v+B,QAAQC,QAAQ,IAAIwyF,KAAK,CAACppF,KAAK0m+B,oBACjC,GAAI1m+B,KAAKym+B,cACd,MAAM,IAAIl/9B,MAAM,wCAEhB,OAAO5Q,QAAQC,QAAQ,IAAIwyF,KAAK,CAACppF,KAAKum+B,YAE1C,EAEAvm+B,KAAKgzkB,YAAc,WACjB,OAAIhzkB,KAAK0m+B,iBACAV,EAAShm+B,OAASrJ,QAAQC,QAAQoJ,KAAK0m+B,kBAEvC1m+B,KAAKsqH,OAAOzzH,KAAKsv+B,EAE5B,GAGFnm+B,KAAK8vB,KAAO,WACV,IA3FoBw6F,EAClB4sP,EACA70P,EAyFE9gH,EAAWyk+B,EAAShm+B,MACxB,GAAIuB,EACF,OAAOA,EAGT,GAAIvB,KAAKwm+B,UACP,OAjGkBl82B,EAiGItqH,KAAKwm+B,UA/F3Bnk3B,EAAU6j3B,EADVhvnB,EAAS,IAAI1oI,YAEjB0oI,EAAOkuQ,WAAW96f,GACXjI,EA8FE,GAAIriH,KAAK0m+B,iBACd,OAAO/v+B,QAAQC,QA5FrB,SAA+BikI,GAI7B,IAHA,IAAI6mE,EAAO,IAAIr8G,WAAWw1C,GACtB05J,EAAQ,IAAIjgS,MAAMotM,EAAKttM,QAElB/O,EAAI,EAAGA,EAAIq8M,EAAKttM,OAAQ/O,IAC/BkvS,EAAMlvS,GAAKkb,OAAOysF,aAAa00G,EAAKr8M,IAEtC,OAAOkvS,EAAMr2R,KAAK,GACpB,CAoF6Byo+B,CAAsB3m+B,KAAK0m+B,mBAC7C,GAAI1m+B,KAAKym+B,cACd,MAAM,IAAIl/9B,MAAM,wCAEhB,OAAO5Q,QAAQC,QAAQoJ,KAAKum+B,UAEhC,EAEI5ymB,IACF3zX,KAAKgiW,SAAW,WACd,OAAOhiW,KAAK8vB,OAAOj5B,KAAK6+I,EAC1B,GAGF11I,KAAK+lF,KAAO,WACV,OAAO/lF,KAAK8vB,OAAOj5B,KAAK8S,KAAKyuB,MAC/B,EAEOp4B,IACT,CA3MA+l+B,EAAQ3l+B,UAAUmwH,OAAS,SAASh9H,EAAM5N,GACxC4N,EAAOqy+B,EAAcry+B,GACrB5N,EAAQkg/B,EAAelg/B,GACvB,IAAI47R,EAAWvhR,KAAKjN,IAAIQ,GACxByM,KAAKjN,IAAIQ,GAAQguR,EAAWA,EAAW,KAAO57R,EAAQA,CACxD,EAEAog/B,EAAQ3l+B,UAAkB,OAAI,SAAS7M,UAC9ByM,KAAKjN,IAAI6y+B,EAAcry+B,GAChC,EAEAwy+B,EAAQ3l+B,UAAUvM,IAAM,SAASN,GAE/B,OADAA,EAAOqy+B,EAAcry+B,GACdyM,KAAKrM,IAAIJ,GAAQyM,KAAKjN,IAAIQ,GAAQ,IAC3C,EAEAwy+B,EAAQ3l+B,UAAUzM,IAAM,SAASJ,GAC/B,OAAOyM,KAAKjN,IAAInH,eAAeg6+B,EAAcry+B,GAC/C,EAEAwy+B,EAAQ3l+B,UAAUrM,IAAM,SAASR,EAAM5N,GACrCqa,KAAKjN,IAAI6y+B,EAAcry+B,IAASsy+B,EAAelg/B,EACjD,EAEAog/B,EAAQ3l+B,UAAUpO,QAAU,SAASkd,EAAUlO,GAC7C,IAAK,IAAIzN,KAAQyM,KAAKjN,IAChBiN,KAAKjN,IAAInH,eAAe2H,IAC1B2b,EAAS7O,KAAKW,EAAShB,KAAKjN,IAAIQ,GAAOA,EAAMyM,KAGnD,EAEA+l+B,EAAQ3l+B,UAAU/V,KAAO,WACvB,IAAI6pC,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAKP,EACb,GACOuy+B,EAAY5x8B,EACrB,EAEA6x8B,EAAQ3l+B,UAAUwoB,OAAS,WACzB,IAAIsL,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,GACpBuuC,EAAMpgC,KAAKnO,EACb,GACOmg/B,EAAY5x8B,EACrB,EAEA6x8B,EAAQ3l+B,UAAU8kD,QAAU,WAC1B,IAAIhxB,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAK,CAACP,EAAM5N,GACpB,GACOmg/B,EAAY5x8B,EACrB,EAEIy/V,IACFoymB,EAAQ3l+B,UAAU5b,OAAO0d,UAAY6j+B,EAAQ3l+B,UAAU8kD,SAqJzD,IAAIo5J,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAAS2qc,EAAQhnqB,EAAO2N,GAEtB,IAPuB20C,EACnBqi8B,EAMAl5+B,GADJkC,EAAUA,GAAW,CAAC,GACHlC,KAEnB,GAAIzL,aAAiBgnqB,EAAS,CAC5B,GAAIhnqB,EAAMgk/B,SACR,MAAM,IAAI3l+B,UAAU,gBAEtBN,KAAKytF,IAAMxrG,EAAMwrG,IACjBztF,KAAKivtB,YAAchtuB,EAAMgtuB,YACpBr/tB,EAAQo3F,UACXhnF,KAAKgnF,QAAU,IAAI++4B,EAAQ9j/B,EAAM+kG,UAEnChnF,KAAKukC,OAAStiD,EAAMsiD,OACpBvkC,KAAKmqB,KAAOloC,EAAMkoC,KAClBnqB,KAAK0mF,OAASzkG,EAAMykG,OACfh5F,GAA2B,MAAnBzL,EAAMqk/B,YACjB54+B,EAAOzL,EAAMqk/B,UACbrk/B,EAAMgk/B,UAAW,EAErB,MACEjm+B,KAAKytF,IAAMltF,OAAOte,GAYpB,GATA+d,KAAKivtB,YAAcr/tB,EAAQq/tB,aAAejvtB,KAAKivtB,aAAe,eAC1Dr/tB,EAAQo3F,SAAYhnF,KAAKgnF,UAC3BhnF,KAAKgnF,QAAU,IAAI++4B,EAAQn2+B,EAAQo3F,UAErChnF,KAAKukC,QAhCDqi8B,GADmBri8B,EAiCO30C,EAAQ20C,QAAUvkC,KAAKukC,QAAU,OAhC1C5xB,cACd2rM,EAAQ/1N,QAAQq++B,IAAY,EAAIA,EAAUri8B,GAgCjDvkC,KAAKmqB,KAAOv6B,EAAQu6B,MAAQnqB,KAAKmqB,MAAQ,KACzCnqB,KAAK0mF,OAAS92F,EAAQ82F,QAAU1mF,KAAK0mF,OACrC1mF,KAAK6m+B,SAAW,MAEK,QAAhB7m+B,KAAKukC,QAAoC,SAAhBvkC,KAAKukC,SAAsB72C,EACvD,MAAM,IAAI4S,UAAU,6CAEtBN,KAAKqm+B,UAAU34+B,EACjB,CAMA,SAASgoJ,EAAOhoJ,GACd,IAAIsiU,EAAO,IAAI4yT,SAYf,OAXAl1nB,EACGsQ,OACA9c,MAAM,KACN8Q,QAAQ,SAAS6wH,GAChB,GAAIA,EAAO,CACT,IAAI3hI,EAAQ2hI,EAAM3hI,MAAM,KACpBqS,EAAOrS,EAAMgnD,QAAQnkD,QAAQ,MAAO,KACpC4B,EAAQzE,EAAMgd,KAAK,KAAKna,QAAQ,MAAO,KAC3CisU,EAAKz/L,OAAO7qC,mBAAmBnyF,GAAOmyF,mBAAmB//F,GAC3D,CACF,GACKqqU,CACT,CAoBA,SAAS82qB,EAASC,EAAUn3+B,GACrBA,IACHA,EAAU,CAAC,GAGboQ,KAAKgQ,KAAO,UACZhQ,KAAKmtH,YAA4Br2H,IAAnBlH,EAAQu9H,OAAuB,IAAMv9H,EAAQu9H,OAC3DntH,KAAKimB,GAAKjmB,KAAKmtH,QAAU,KAAOntH,KAAKmtH,OAAS,IAC9CntH,KAAK+oR,WAAa,eAAgBn5R,EAAUA,EAAQm5R,WAAa,KACjE/oR,KAAKgnF,QAAU,IAAI++4B,EAAQn2+B,EAAQo3F,SACnChnF,KAAKytF,IAAM79F,EAAQ69F,KAAO,GAC1BztF,KAAKqm+B,UAAUU,EACjB,CAlDA99U,EAAQ7opB,UAAU6kB,MAAQ,WACxB,OAAO,IAAIgkoB,EAAQjppB,KAAM,CAACtS,KAAMsS,KAAKsm+B,WACvC,EAkCA/1mB,EAAKlwX,KAAK4opB,EAAQ7opB,WAgBlBmwX,EAAKlwX,KAAKym+B,EAAS1m+B,WAEnB0m+B,EAAS1m+B,UAAU6kB,MAAQ,WACzB,OAAO,IAAI6h9B,EAAS9m+B,KAAKsm+B,UAAW,CAClCn52B,OAAQntH,KAAKmtH,OACb47J,WAAY/oR,KAAK+oR,WACjB/hM,QAAS,IAAI++4B,EAAQ/l+B,KAAKgnF,SAC1ByG,IAAKztF,KAAKytF,KAEd,EAEAq54B,EAAS789B,MAAQ,WACf,IAAIokF,EAAW,IAAIy44B,EAAS,KAAM,CAAC352B,OAAQ,EAAG47J,WAAY,KAE1D,OADA16L,EAASr+E,KAAO,QACTq+E,CACT,EAEA,IAAI244B,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASzkqB,SAAW,SAAS50O,EAAK0/B,GAChC,IAA0C,IAAtC652B,EAAiBz++B,QAAQ4kI,GAC3B,MAAM,IAAIm6H,WAAW,uBAGvB,OAAO,IAAIw/uB,EAAS,KAAM,CAAC352B,OAAQA,EAAQnmC,QAAS,CAACiC,SAAUwE,IACjE,EAEAhpG,EAAQgh/B,aAAenj5B,EAAKmj5B,aAC5B,IACE,IAAIhh/B,EAAQgh/B,YACd,CAAE,MAAO/83B,GACPjkH,EAAQgh/B,aAAe,SAASr14B,EAAS78F,GACvCyM,KAAKowF,QAAUA,EACfpwF,KAAKzM,KAAOA,EACZ,IAAI0W,EAAQ1C,MAAM6oF,GAClBpwF,KAAKumC,MAAQt8B,EAAMs8B,KACrB,EACA9hD,EAAQgh/B,aAAarl+B,UAAYtW,OAAO4W,OAAO6G,MAAMnH,WACrD3b,EAAQgh/B,aAAarl+B,UAAUK,YAAchc,EAAQgh/B,YACvD,CAEA,SAAS3/4B,EAAM7jG,EAAOmqE,GACpB,OAAO,IAAIz1D,QAAQ,SAASC,EAASwK,GACnC,IAAIwmR,EAAU,IAAIqhY,EAAQhnqB,EAAOmqE,GAEjC,GAAIw7N,EAAQlhM,QAAUkhM,EAAQlhM,OAAO6zJ,QACnC,OAAOn5O,EAAO,IAAI3c,EAAQgh/B,aAAa,UAAW,eAGpD,IAAIz6sB,EAAM,IAAIf,eAEd,SAASg9sB,IACPj8sB,EAAIrkM,OACN,CAEAqkM,EAAIvyC,OAAS,WACX,IAxFgByuvB,EAChBlg5B,EAuFIp3F,EAAU,CACZu9H,OAAQ69J,EAAI79J,OACZ47J,WAAYiC,EAAIjC,WAChB/hM,SA3Fckg5B,EA2FQl8sB,EAAII,yBAA2B,GA1FvDpkM,EAAU,IAAI++4B,EAGQmB,EAAWnj/B,QAAQ,eAAgB,KACzC7C,MAAM,SAAS8Q,QAAQ,SAASm+B,GAClD,IAAImmC,EAAQnmC,EAAKjvC,MAAM,KACnBsJ,EAAM8rE,EAAMpuB,QAAQlqC,OACxB,GAAIxT,EAAK,CACP,IAAI7E,EAAQ2wE,EAAMp4D,KAAK,KAAKF,OAC5BgpF,EAAQupC,OAAO/lI,EAAK7E,EACtB,CACF,GACOqhG,IAgFHp3F,EAAQ69F,IAAM,gBAAiBu9L,EAAMA,EAAIm8sB,YAAcv3+B,EAAQo3F,QAAQnzF,IAAI,iBAC3E,IAAInG,EAAO,aAAcs9R,EAAMA,EAAI38L,SAAW28L,EAAIE,aAClDt0R,EAAQ,IAAIkw+B,EAASp5+B,EAAMkC,GAC7B,EAEAo7R,EAAItyC,QAAU,WACZt3O,EAAO,IAAId,UAAU,0BACvB,EAEA0qR,EAAIM,UAAY,WACdlqR,EAAO,IAAId,UAAU,0BACvB,EAEA0qR,EAAIK,QAAU,WACZjqR,EAAO,IAAI3c,EAAQgh/B,aAAa,UAAW,cAC7C,EAEAz6sB,EAAIj9L,KAAK65L,EAAQrjP,OAAQqjP,EAAQn6L,KAAK,GAEV,YAAxBm6L,EAAQqnc,YACVjkc,EAAI/C,iBAAkB,EACW,SAAxBL,EAAQqnc,cACjBjkc,EAAI/C,iBAAkB,GAGpB,iBAAkB+C,GAAO2oG,IAC3B3oG,EAAI7B,aAAe,QAGrBvB,EAAQ5gM,QAAQh1F,QAAQ,SAASrM,EAAO4N,GACtCy3R,EAAIC,iBAAiB13R,EAAM5N,EAC7B,GAEIiiS,EAAQlhM,SACVkhM,EAAQlhM,OAAOxuF,iBAAiB,QAAS+u+B,GAEzCj8sB,EAAI+5M,mBAAqB,WAEA,IAAnB/5M,EAAI/pB,YACN2mB,EAAQlhM,OAAOvuF,oBAAoB,QAAS8u+B,EAEhD,GAGFj8sB,EAAIz4D,UAAkC,IAAtBq1D,EAAQ0+sB,UAA4B,KAAO1+sB,EAAQ0+sB,UACrE,EACF,CAEAxg5B,EAAMkwb,UAAW,EAEZ1zb,EAAKwD,QACRxD,EAAKwD,MAAQA,EACbxD,EAAKyj5B,QAAUA,EACfzj5B,EAAK2mkB,QAAUA,EACf3mkB,EAAKwk5B,SAAWA,GAGlBri/B,EAAQsh/B,QAAUA,EAClBth/B,EAAQwkqB,QAAUA,EAClBxkqB,EAAQqi/B,SAAWA,EACnBri/B,EAAQqhG,MAAQA,EAEhBh8F,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBG6/+B,GACHA,EAAS1/4B,MAAMsh5B,UAAW,SAEnB5B,EAAS1/4B,MAAMkwb,SAGtB,IAAIlsf,EAAM078B,GACV/g/B,EAAUqlC,EAAIg8D,OACd,QAAkBh8D,EAAIg8D,MACtBrhG,EAAQqhG,MAAQh8D,EAAIg8D,MACpBrhG,EAAQsh/B,QAAUj88B,EAAIi88B,QACtBth/B,EAAQwkqB,QAAUn/nB,EAAIm/nB,QACtBxkqB,EAAQqi/B,SAAWh98B,EAAIg98B,SACvBpl5B,EAAOj9F,QAAUA,C,sQCviBjB,SAAS4i/B,IACP,IAAK,IAAInz+B,EAAOC,UAAUC,OAAQ8zH,EAAO,IAAI5zH,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/E2zH,EAAK3zH,GAAQJ,UAAUI,GAGzB,OAAO,IAAAqL,SAAQ,IAAM7Y,IACnBmhI,EAAKl2H,QAAQ6gH,GAAOA,EAAI9rH,KAE1BmhI,EACF,CAGA,MAAMk/P,EAA8B,oBAAXjgY,aAAqD,IAApBA,OAAOsB,eAAqE,IAAlCtB,OAAOsB,SAASskB,cAEpH,SAAS+oP,EAASxvQ,GAChB,MAAMgh/B,EAAgBx9+B,OAAOsW,UAAUpZ,SAASqZ,KAAK/Z,GACrD,MAAyB,oBAAlBgh/B,GACW,oBAAlBA,CACF,CAEA,SAAS/lC,EAAOx68B,GACd,MAAO,aAAcA,CACvB,CAEA,SAASD,EAAUiH,GACjB,IAAIw5+B,EAAuBC,EAE3B,OAAKz5+B,EAID+nQ,EAAS/nQ,GACJA,EAGJwz8B,EAAOxz8B,IAI8H,OAAlIw5+B,EAA2E,OAAlDC,EAAyBz5+B,EAAO9G,oBAAyB,EAASug/B,EAAuBtg/B,aAAuBqg/B,EAHxIpg/B,OARAA,MAYX,CAEA,SAASwthB,EAAW5thB,GAClB,MAAM,SACJ0g/B,GACE3g/B,EAAUC,GACd,OAAOA,aAAgB0g/B,CACzB,CAEA,SAASng/B,EAAcP,GACrB,OAAI+uQ,EAAS/uQ,IAINA,aAAgBD,EAAUC,GAAMQ,WACzC,CAEA,SAASmg/B,EAAa3g/B,GACpB,OAAOA,aAAgBD,EAAUC,GAAMw6kB,UACzC,CAEA,SAASoma,EAAiB55+B,GACxB,OAAKA,EAID+nQ,EAAS/nQ,GACJA,EAAOtF,SAGX848B,EAAOxz8B,GAIR4mhB,EAAW5mhB,GACNA,EAGLzG,EAAcyG,IAAW25+B,EAAa35+B,GACjCA,EAAO9G,cAGTwB,SAXEA,SARAA,QAoBX,CAOA,MAAM8lsB,EAA4BnnU,EAAY,EAAAxoC,gBAAkB,EAAA/+U,UAEhE,SAAS+n+B,EAAS1p7B,GAChB,MAAM2p7B,GAAa,IAAA5o+B,QAAOi/C,GAI1B,OAHAqwoB,EAA0B,KACxBs5S,EAAWhy+B,QAAUqoD,KAEhB,IAAAh/C,aAAY,WACjB,IAAK,IAAIhL,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,OAA6B,MAAtBsz+B,EAAWhy+B,aAAkB,EAASgy+B,EAAWhy+B,WAAWxB,EACrE,EAAG,GACL,CAEA,SAASyz+B,IACP,MAAMC,GAAc,IAAA9o+B,QAAO,MAU3B,MAAO,EATK,IAAAC,aAAY,CAAC20B,EAAU3uB,KACjC6i+B,EAAYly+B,QAAUq4F,YAAYr6D,EAAU3uB,IAC3C,KACW,IAAAhG,aAAY,KACI,OAAxB6o+B,EAAYly+B,UACdu4F,cAAc254B,EAAYly+B,SAC1Bky+B,EAAYly+B,QAAU,OAEvB,IAEL,CAEA,SAASmy+B,EAAeri/B,EAAO63O,QACR,IAAjBA,IACFA,EAAe,CAAC73O,IAGlB,MAAMsi/B,GAAW,IAAAhp+B,QAAOtZ,GAMxB,OALA4osB,EAA0B,KACpB05S,EAASpy+B,UAAYlQ,IACvBsi/B,EAASpy+B,QAAUlQ,IAEpB63O,GACIyqwB,CACT,CAEA,SAASC,EAAYh59B,EAAUsuN,GAC7B,MAAMyqwB,GAAW,IAAAhp+B,UACjB,OAAO,IAAAW,SAAQ,KACb,MAAM6uH,EAAWv/G,EAAS+49B,EAASpy+B,SAEnC,OADAoy+B,EAASpy+B,QAAU44H,EACZA,GAET,IAAI+uG,GACN,CAEA,SAAS2qwB,EAAWvpqB,GAClB,MAAMwpqB,EAAkBR,EAAShpqB,GAC3B73U,GAAO,IAAAkY,QAAO,MACdiqqB,GAAa,IAAAhqqB,aAAY5Y,IACzBA,IAAYS,EAAK8O,UACA,MAAnBuy+B,GAAmCA,EAAgB9h/B,EAASS,EAAK8O,UAGnE9O,EAAK8O,QAAUvP,GAEjB,IACA,MAAO,CAACS,EAAMmirB,EAChB,CAEA,SAASnwd,EAAYpzN,GACnB,MAAMktH,GAAM,IAAA5zG,UAIZ,OAHA,IAAAY,WAAU,KACRgzG,EAAIh9G,QAAUlQ,GACb,CAACA,IACGktH,EAAIh9G,OACb,CAEA,IAAIgI,EAAM,CAAC,EACX,SAASuxrB,EAAYl6pB,EAAQvvC,GAC3B,OAAO,IAAAia,SAAQ,KACb,GAAIja,EACF,OAAOA,EAGT,MAAMoY,EAAoB,MAAfF,EAAIq3B,GAAkB,EAAIr3B,EAAIq3B,GAAU,EAEnD,OADAr3B,EAAIq3B,GAAUn3B,EACPm3B,EAAS,IAAMn3B,GACrB,CAACm3B,EAAQvvC,GACd,CAEA,SAAS0i/B,EAAmBh1+B,GAC1B,OAAO,SAAUi4C,GACf,IAAK,IAAIp3C,EAAOC,UAAUC,OAAQoiqB,EAAc,IAAIliqB,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IACzGiiqB,EAAYjiqB,EAAO,GAAKJ,UAAUI,GAGpC,OAAOiiqB,EAAYlsqB,OAAO,CAACo1N,EAAa+2c,KACtC,MAAMvxmB,EAAUp7D,OAAOo7D,QAAQuxmB,GAE/B,IAAK,MAAOjsqB,EAAK89+B,KAAoBpj7B,EAAS,CAC5C,MAAMv/D,EAAQ+5N,EAAYl1N,GAEb,MAAT7E,IACF+5N,EAAYl1N,GAAO7E,EAAQ0N,EAAWi1+B,EAE1C,CAEA,OAAO5oxB,GACN,IAAKp0K,GAEV,CACF,CAEA,MAAMh4C,EAAmB+0+B,EAAmB,GACtC5woB,EAAwB4woB,GAAoB,GAMlD,SAASE,EAAgBp89B,GACvB,IAAKA,EACH,OAAO,EAGT,MAAM,cACJq89B,GACE1h/B,EAAUqlB,EAAMpe,QACpB,OAAOy6+B,GAAiBr89B,aAAiBq89B,CAC3C,CAiBA,SAASC,EAAoBt89B,GAC3B,GAhBF,SAAsBA,GACpB,IAAKA,EACH,OAAO,EAGT,MAAM,WACJ0nzB,GACE/s0B,EAAUqlB,EAAMpe,QACpB,OAAO8l0B,GAAc1nzB,aAAiB0nzB,CACxC,CAOM60K,CAAav89B,GAAQ,CACvB,GAAIA,EAAMiwB,SAAWjwB,EAAMiwB,QAAQhoC,OAAQ,CACzC,MACEqoC,QAASl2C,EACTm2C,QAAS/4C,GACPwoB,EAAMiwB,QAAQ,GAClB,MAAO,CACL71C,IACA5C,IAEJ,CAAO,GAAIwoB,EAAM68a,gBAAkB78a,EAAM68a,eAAe50b,OAAQ,CAC9D,MACEqoC,QAASl2C,EACTm2C,QAAS/4C,GACPwoB,EAAM68a,eAAe,GACzB,MAAO,CACLzic,IACA5C,IAEJ,CACF,CAEA,OArDF,SAAwCwoB,GACtC,MAAO,YAAaA,GAAS,YAAaA,CAC5C,CAmDMw89B,CAA+Bx89B,GAC1B,CACL5lB,EAAG4lB,EAAMswB,QACT94C,EAAGwoB,EAAMuwB,SAIN,IACT,CAEA,MAAM2nQ,EAAmBv6S,OAAOklD,OAAO,CACrC457B,UAAW,CACT,QAAA5h/B,CAASoC,GACP,IAAKA,EACH,OAGF,MAAM,EACJ7C,EAAC,EACD5C,GACEyF,EACJ,MAAO,gBAAkB7C,EAAIf,KAAK+F,MAAMhF,GAAK,GAAK,QAAU5C,EAAI6B,KAAK+F,MAAM5H,GAAK,GAAK,QACvF,GAGFqnE,MAAO,CACL,QAAAhkE,CAASoC,GACP,IAAKA,EACH,OAGF,MAAM,OACJ22Z,EAAM,OACNC,GACE52Z,EACJ,MAAO,UAAY22Z,EAAS,YAAcC,EAAS,GACrD,GAGF2C,UAAW,CACT,QAAA37Z,CAASoC,GACP,GAAKA,EAIL,MAAO,CAACi7S,EAAIuksB,UAAU5h/B,SAASoC,GAAYi7S,EAAIr5O,MAAMhkE,SAASoC,IAAY8U,KAAK,IACjF,GAGFg5U,WAAY,CACV,QAAAlwV,CAASoE,GACP,IAAI,SACFkpB,EAAQ,SACRpP,EAAQ,OACRq+B,GACEn4C,EACJ,OAAOkpB,EAAW,IAAMpP,EAAW,MAAQq+B,CAC7C,KAKEgqmB,EAAW,yIACjB,SAASs7V,EAAuBvi/B,GAC9B,OAAIA,EAAQ2rC,QAAQs7mB,GACXjnpB,EAGFA,EAAQiX,cAAcgwoB,EAC/B,C,+BCxUA,IAAIqhN,EAAoB,EAAQ,OA0ChCltwB,EAAOj9F,QAhCP,SAAqCqk/B,EAAgBC,EAAwBC,EAAqBC,GAC9F,IAAIC,EACA/5I,EAAoB,IAAI5n1B,MAAM,YAClC,OAAO,IAAIqn1B,EAAkB,SAAkBh41B,EAASwK,EAAQs1nB,GAC5D,IAAI/5H,EACJmse,EAAe,SAAiC/99B,GAC5C,OAAI2rnB,IACOk4N,EAAkBxt1B,OAAO+t1B,IAEpCxyV,EAAmBose,EAAuBh+9B,GACnCi+9B,EAAoBrse,GAAkB9lgB,KAAK,SAAsCsy+B,GACpF,GAAIzyW,IACA,MAAMy4N,EAGV,OADA+5I,EAAiCC,GAErC,GACJ,GAAGty+B,KAAK,SAAgC+ihB,GACpC,GAAI88G,IAEA,MADA98G,EAAc9ugB,aACRqk1B,EAEVv41B,EAAQqy+B,EAAWtse,EAAkBid,GACzC,GAAG/rT,MAAM,SAAiB5jN,GACtB7I,EAAO6I,EACX,EACJ,EAAG,WACKi/9B,GACAA,EAA+Bvm8B,QAEvC,EACJ,C,kBCrCA,GAAqC++C,EAAOj9F,QACtC,IAAIsvG,EAAgB,EAAQ,MAoBlC,SAASsqhB,EAAOz0kB,EAASz1B,EAASy40B,EAAQC,GAExC7s1B,KAAKmU,QAAU,EAEfnU,KAAK4s1B,OAAS,EAEd5s1B,KAAKzH,SAAWyH,KAAK8s1B,mBAKrB9s1B,KAAKop+B,cAAgB,GAErBpp+B,KAAKqp+B,WAAa,GAElBrp+B,KAAKsp+B,cAAgB,EAErBtp+B,KAAKup+B,aAAe,GAEpBvp+B,KAAKm4D,MAAMvuB,EAASz1B,EAASy40B,EAAQC,EACvC,CAYAxuO,EAAOj+mB,UAAUulH,IAAM,SAAS/7E,EAASz1B,EAASy40B,EAAQC,GACxD7s1B,KAAKm4D,MAAMvuB,EAASz1B,EAASy40B,EAAQC,GAErC,IAAK,IAAIn7Q,EAAU,EAAGl5jB,EAAIxY,KAAK4pC,QAAQx1C,OAAQs9kB,EAAUl5jB,EAAGk5jB,IAC1D,GAAiC,IAA7B1xkB,KAAKqp+B,WAAW33Z,GAAgB,CAClC1xkB,KAAKqp+B,WAAW33Z,GAAW,EAC3B1xkB,KAAKyxkB,SAAS39kB,KAAK,CAAC49kB,IACpB,IAAIy7Q,EAAYnt1B,KAAKyxkB,SAASr9kB,OAAS,EAEvC4L,KAAKup+B,aAAaz1+B,KAAK49kB,GACvB,IAAI83Z,EAAgB,IAAIz14B,EAAc,KAAM,KAAM,OAC9Cg6G,EAAY/tM,KAAKkt1B,aAAax7Q,QAGI56kB,IAAlCkJ,KAAKyp+B,gBAAgB/3Z,KACvB1xkB,KAAK0p+B,aAAah4Z,EAAS3jY,EAAWy7xB,GACtCxp+B,KAAKqt1B,eAAeF,EAAWq8I,GAEnC,CAGF,OAAOxp+B,KAAKyxkB,QACd,EAQA4sC,EAAOj+mB,UAAUup+B,oBAAsB,WAGrC,IAFA,IAAIC,EAAmB,GAEdvk/B,EAAI,EAAGmzB,EAAIxY,KAAKup+B,aAAan1+B,OAAQ/O,EAAImzB,EAAGnzB,IAAK,CACxD,IAAIqslB,EAAU1xkB,KAAKup+B,aAAalk/B,GAC5BkT,EAAWyH,KAAKop+B,cAAc13Z,GAElCk4Z,EAAiB91+B,KAAK,CAAC49kB,EAASn5kB,GAClC,CAEA,OAAOqx+B,CACT,EAeAvrX,EAAOj+mB,UAAU+3D,MAAQ,SAASvuB,EAASz1B,EAASy40B,EAAQr01B,GAE1D,GAAIqxC,EAAS,CAEX,KAAMA,aAAmBt1C,OACvB,MAAMiT,MAAM,yCACHqiC,EAAU,UAGrB5pC,KAAK4pC,QAAUA,EACf5pC,KAAKyxkB,SAAW,GAChBzxkB,KAAKop+B,cAAgB,IAAI90+B,MAAM0L,KAAK4pC,QAAQx1C,QAC5C4L,KAAKqp+B,WAAa,IAAI/0+B,MAAM0L,KAAK4pC,QAAQx1C,QACzC4L,KAAKsp+B,cAAgB,EACrBtp+B,KAAKup+B,aAAe,EACtB,CAEIp19B,IACFnU,KAAKmU,QAAUA,GAGby40B,IACF5s1B,KAAK4s1B,OAASA,GAGZr01B,IACFyH,KAAKzH,SAAWA,EAEpB,EAWA8lnB,EAAOj+mB,UAAUsp+B,aAAe,SAASh4Z,EAAS3jY,EAAWnxF,GAC3D,IAAIt6B,EAAOtiF,KAEXA,KAAKsp+B,cAAgBtp+B,KAAKyp+B,gBAAgB/3Z,GAC1C3jY,EAAU/7M,QAAQ,SAASs71B,GACzB,QAAkCx21B,IAA9BwrF,EAAK+m5B,WAAW/7I,GAAyB,CAC3C,IAAItloB,EAAO1lI,EAAK/pF,SAAS+pF,EAAK14C,QAAQ8niB,GAAUpvf,EAAK14C,QAAQ0jzB,IACzDu8I,EAAuBrk/B,KAAKmE,IAAI24F,EAAKgn5B,cAAethxB,QAEnBlxN,IAAjCwrF,EAAK8m5B,cAAc97I,IACrBhrwB,EAAK8m5B,cAAc97I,GAAYu8I,EAC/Bjt3B,EAAMzrB,OAAOm8vB,EAAUu8I,IAEnBA,EAAuBvn5B,EAAK8m5B,cAAc97I,KAC5ChrwB,EAAK8m5B,cAAc97I,GAAYu8I,EAC/Bjt3B,EAAMh6E,OAAO0qzB,GACb1wuB,EAAMzrB,OAAOm8vB,EAAUu8I,GAG7B,CACF,EACF,EAUAxrX,EAAOj+mB,UAAUit1B,eAAiB,SAASF,EAAWvwuB,GAGpD,IAFA,IAAIkt3B,EAAgBlt3B,EAAMjoB,cAEjBx0F,EAAI,EAAGqY,EAAIsx9B,EAAc11+B,OAAQ+L,EAAIqY,EAAGrY,IAAK,CACpD,IAAIuxkB,EAAUo4Z,EAAc3p+B,GAC5B,QAAiCrJ,IAA7BkJ,KAAKqp+B,WAAW33Z,GAAwB,CAC1C,IAAI3jY,EAAY/tM,KAAKkt1B,aAAax7Q,GAClC1xkB,KAAKqp+B,WAAW33Z,GAAW,EAE3B1xkB,KAAKyxkB,SAAS07Q,GAAWr51B,KAAK49kB,GAC9B1xkB,KAAKup+B,aAAaz1+B,KAAK49kB,QAEe56kB,IAAlCkJ,KAAKyp+B,gBAAgB/3Z,KACvB1xkB,KAAK0p+B,aAAah4Z,EAAS3jY,EAAWnxF,GACtC58G,KAAKqt1B,eAAeF,EAAWvwuB,GAEnC,CACF,CACF,EASAyhgB,EAAOj+mB,UAAUqp+B,gBAAkB,SAAS/3Z,GAE1C,IADA,IAAIl5jB,EAAIxY,KAAKmU,QACJ419B,EAAe,EAAGA,EAAevx9B,EAAGux9B,IAE3C,GADgB/p+B,KAAKkt1B,aAAax7Q,EAASq4Z,GAC7B31+B,QAAU4L,KAAK4s1B,OAC3B,OAAOm9I,CAKb,EAUA1rX,EAAOj+mB,UAAU8s1B,aAAe,SAASx7Q,EAASv9jB,GAChDA,EAAUA,GAAWnU,KAAKmU,QAG1B,IAFA,IAAI45L,EAAY,GAEPhwM,EAAK,EAAGya,EAAIxY,KAAK4pC,QAAQx1C,OAAQ2J,EAAKya,EAAGza,IAC5CiC,KAAKzH,SAASyH,KAAK4pC,QAAQ8niB,GAAU1xkB,KAAK4pC,QAAQ7rC,IAAOoW,GAC3D45L,EAAUj6M,KAAKiK,GAInB,OAAOgwM,CACT,EAaAswa,EAAOj+mB,UAAU0s1B,mBAAqB,SAAS3s1B,EAAG0pF,GAIhD,IAHA,IAAIqR,EAAM,EACN71G,EAAIG,KAAKkE,IAAIyW,EAAE/L,OAAQy1F,EAAEz1F,QAEtB/O,KACL61G,IAAQ/6F,EAAE9a,GAAKwkG,EAAExkG,KAAO8a,EAAE9a,GAAKwkG,EAAExkG,IAGnC,OAAOG,KAAK0vB,KAAKgmF,EACnB,EAEqCxZ,EAAOj9F,UAC1Ci9F,EAAOj9F,QAAU45nB,E,YCvOnB38hB,EAAOj9F,QAJP,SAAYkB,EAAOk7D,GACjB,OAAOl7D,IAAUk7D,GAAUl7D,GAAUA,GAASk7D,GAAUA,CAC1D,C,qCCjCA,IACQ/gD,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EAOI64f,EAAsC,SAAUz5gB,GAKhD,SAASy5gB,IACL,IAAIv5gB,EAAQF,EAAO3D,KAAKL,OAASA,KAMjC,OALAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B8l+B,cAAe,CACXrk/B,MAAO,IAAIqN,OAGZkR,CACX,CAwCA,OApDAnE,EAAU09gB,EAAsBz5gB,GAqBhCy5gB,EAAqBr9gB,UAAU8gU,QAAU,SAAU/0T,GAC/C,IAAIjI,EAAQlE,KACR7M,GAAS,EACb,IAAKgZ,EAID,OAHAnM,KAAKgq+B,cAAch4+B,QAAQ,SAAU4P,EAAGqo+B,GACpC92+B,EAAS6M,KAAKkhU,QAAQ+oqB,IAAgB92+B,CAC1C,EAAG6M,MACI7M,EAEX,IAAIypH,EAAQ58G,KAAKgq+B,cAAcn2+B,IAAIsY,IAAU,GAE7C,OADAnM,KAAKgq+B,cAAcvz8B,OAAOtqB,GACnBywG,EAAMtyH,OAAO,SAAU6I,EAAQkB,GAAQ,OAAO6P,EAAM2G,KAAK/J,MAAMoD,EAAOgwU,EAAc,GAAIx0O,EAAO,CAACvzF,GAAOne,OAAOqG,OAAYlB,CAAQ,EAAGA,EAChJ,EAOAsqhB,EAAqBr9gB,UAAUw8G,MAAQ,WACnC,IAAIvoH,EAAO,GAAGyG,MAAMuF,KAAKlM,WACzB,GAAI6L,KAAK6K,KAAK/J,MAAMd,KAAMk0U,EAAc,GAAIx0O,EAAOrrG,KAC/C,OAAO,EAEX,IAAI8X,EAAQ9X,EAAK,GAKjB,OAJK2L,KAAKgq+B,cAAcr2+B,IAAIwY,IACxBnM,KAAKgq+B,cAAcj2+B,IAAIoY,EAAO,IAElCnM,KAAKgq+B,cAAcn2+B,IAAIsY,GAAOrY,KAAKO,EAAKyG,MAAM,KACvC,CACX,EACO2ihB,CACX,CAtDyC,CANtB,uBA6DnB/7b,EAAOj9F,QAAUg5hB,C,+BCjGjB,IAAIp9a,EAAc,EAAQ,OACtB4pI,EAAY,EAAQ,OACpB2mJ,EAAc,EAAQ,OAEtBl1U,EAAO2kD,EAAYA,EAAY3kD,MAGnCgmC,EAAOj9F,QAAU,SAAUqQ,EAAIwhN,GAE7B,OADA2zB,EAAUn1O,QACMgC,IAATw/M,EAAqBxhN,EAAK87X,EAAcl1U,EAAK5mD,EAAIwhN,GAAQ,WAC9D,OAAOxhN,EAAGgM,MAAMw1M,EAAMniN,UACxB,CACF,C,qCCZA,IACQ2L,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAUA6kV,EAA4C,SAAUrhV,GAWtD,SAASqhV,EAA2BhvB,EAAW/pT,EAAOk1U,EAAW5xV,GAC7D,OAAOoU,EAAO3D,KAAKL,KAAMq2T,EAAW/pT,EAAOk1U,EAAW5xV,IAAYoQ,IACtE,CAIA,OAhBAD,EAAUslV,EAA4BrhV,GAatCqhV,EAA2BjlV,UAAUpZ,SAAW,WAC5C,MAAO,gCAAkCgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GACvF,EACO0tN,CACX,CAlB+C,CARnB,EAAQ,QA2BpC3jQ,EAAOj9F,QAAU4gW,C,kBC3CjB,IAAIksmB,EAAmB,EAAQ,OAe/B7v2B,EAAOj9F,QALP,SAAuByl/B,EAAUnp4B,GAC/B,IAAIp8G,EAASo8G,EAASww1B,EAAiB24C,EAASvl/B,QAAUul/B,EAASvl/B,OACnE,OAAO,IAAIul/B,EAASzp+B,YAAY9b,EAAQul/B,EAASlp4B,WAAYkp4B,EAAS78yB,WACxE,C,YCZA,IAGIzhM,EAHc9B,OAAOsW,UAGQxU,eAqBjC81F,EAAOj9F,QAZP,SAAwB4vB,GACtB,IAAIjgB,EAASigB,EAAMjgB,OACfjB,EAAS,IAAIkhB,EAAM5T,YAAYrM,GAOnC,OAJIA,GAA6B,iBAAZigB,EAAM,IAAkBzoB,EAAeyU,KAAKgU,EAAO,WACtElhB,EAAOqD,MAAQ6d,EAAM7d,MACrBrD,EAAOlR,MAAQoyB,EAAMpyB,OAEhBkR,CACT,C,qCCtBA,IACQ2M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEA0pP,EAAuB,EAAQ,OAC/Bw8F,EAAW,kBAOXh8F,EAAiC,SAAU1mP,GAQ3C,SAAS0mP,EAAgBP,EAAmBggvB,EAAgB9/uB,GACxD,IAAInmP,EAAQF,EAAO3D,KAAKL,KAAM0mV,IAAYv8F,EAAmBggvB,EAAgB9/uB,IAAYrqP,KASzF,OARAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bo88B,QAAS,CACL369B,MAAO,IAAIuN,KAEf6h8B,cAAe,CACXpv8B,MAAO,IAAIuN,OAGZgR,CACX,CA6EA,OA/FAnE,EAAU2qP,EAAiB1mP,GAwB3B0mP,EAAgBtqP,UAAUgq+B,UAAY,SAAUnl9B,GAC5CjlB,KAAKsg9B,QAAQht9B,IAAI2xB,EACrB,EAKAylO,EAAgBtqP,UAAUgn4B,YAAc,SAAUni3B,GAC9CjlB,KAAKsg9B,QAAQ7p7B,OAAOxR,EACxB,EAMAylO,EAAgBtqP,UAAU287B,eAAiB,SAAU30I,GAEjD,OADApozB,KAAK+07B,cAAczh8B,IAAI80zB,GAChBpozB,IACX,EAOA0qP,EAAgBtqP,UAAU6kB,MAAQ,WAC9B,IAAI/gB,EAAQlE,KACRilB,EAAQ,IAAIylO,EAAgB1qP,KAAKmqP,kBAAmBnqP,KAAKoqP,eAAgBpqP,KAAKqqP,SAGlF,OAFArqP,KAAKoq+B,UAAUnl9B,GACfA,EAAMwlF,KAAK,UAAW,WAAc,OAAOvmG,EAAMkj4B,YAAYni3B,EAAQ,GAC9DA,CACX,EAMAylO,EAAgBtqP,UAAUk97B,kBAAoB,SAAUl1I,GAEpD,OADApozB,KAAK+07B,cAAct+5B,OAAO2xxB,GACnBpozB,IACX,EAOA0qP,EAAgBtqP,UAAUmyN,KAAO,SAAUx8N,GAiBvC,OAhBAiK,KAAK+07B,cAAc/i8B,QAAQ,SAAUo2zB,GACjC,IACIA,EAAY71lB,KAAKx8N,EACrB,CACA,MAAOkU,GAEP,CACJ,GACAjK,KAAKsg9B,QAAQtu9B,QAAQ,SAAUizB,GAC3B,IACIA,EAAMstM,KAAKx8N,EACf,CACA,MAAOkU,GAEP,CACJ,GACOjK,IACX,EACA0qP,EAAgBtqP,UAAUsF,KAAO,WAC7B1F,KAAK+07B,cAAc/i8B,QAAQ,SAAUo2zB,GAAe,OAAOA,EAAY36yB,OAAS,GAChFzN,KAAKsg9B,QAAQtu9B,QAAQ,SAAUizB,GAAS,OAAOA,EAAMvf,MAAQ,GAC7D1B,EAAO5D,UAAUsF,KAAKrF,KAAKL,KAC/B,EACO0qP,CACX,CAjGoC,CAiGlCR,GACFxoK,EAAOj9F,QAAUimQ,C,kBC1HjB,IAIIx3P,EAJY,EAAQ,MAId4mhB,CAHC,EAAQ,MAGO,OAE1Bp4b,EAAOj9F,QAAUyO,C,+BCLjB,SAASsrO,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,M,gDCYjB,QAXA,SAAmBnqN,EAAOuU,GAKxB,IAJA,IAAIpyB,GAAS,EACTpC,EAASw0B,EAAOx0B,OAChBxP,EAASyvB,EAAMjgB,SAEVoC,EAAQpC,GACfigB,EAAMzvB,EAAS4R,GAASoyB,EAAOpyB,GAEjC,OAAO6d,CACT,C,YCKAqtE,EAAOj9F,QAZP,SAAuB4vB,EAAO1uB,EAAOsuH,GAInC,IAHA,IAAIz9G,EAAQy9G,EAAY,EACpB7/G,EAASigB,EAAMjgB,SAEVoC,EAAQpC,GACf,GAAIigB,EAAM7d,KAAW7Q,EACnB,OAAO6Q,EAGX,OAAQ,CACV,C,+BCnBA1M,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAmDI0k/B,EAnDA1o4B,EAAW,EAAQ,OACnBC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OACvBkU,EAAQ,EAAQ,OAChBu03B,EAAY,EAAQ,OACpBh2wB,EAAgB,EAAQ,OACxBi2wB,EAAW,EAAQ,OA8CvBF,EAAoB,SAAUzw+B,EAAGC,GAC7B,IAAIw5B,EAnCW,SAAUz5B,EAAGC,GAC5B,OAAQA,EAAEy6F,UAAY,IAAM16F,EAAE06F,UAAY,EAC9C,CAiCck24B,CAAa5w+B,EAAGC,GAC1B,OAAY,IAARw5B,EACOA,GACXA,EAlCW,SAAUz5B,EAAGC,GACxB,IAAI4w+B,EAAU,CAAE,MAAS,EAAG,WAAc,EAAG,OAAU,EAAG,IAAO,EAAG,MAAS,GAC7E,OAAQA,EAAQ7w+B,EAAEoW,OAAS,IAAMy69B,EAAQ5w+B,EAAEmW,OAAS,EACxD,CA+BU069B,CAAS9w+B,EAAGC,GACN,IAARw5B,EACOA,GACXA,EAhCiB,SAAUz5B,EAAGC,GAC9B,OAAQD,EAAEk9T,YAAej9T,EAAEi9T,WAAiBj1N,EAAasB,WAAWzjE,QAAQ9lC,EAAEk9T,WAAYj9T,EAAEi9T,YAApD,CAC5C,CA8BU6zqB,CAAe/w+B,EAAGC,GACZ,IAARw5B,EACOA,EA9BF,SAAUz5B,EAAGC,GAEtB,IAAI+w+B,EAAmB,CAAEtlvB,OAAO,EAAMulvB,YAAY,GAElD,OADYD,EAAiBhx+B,EAAEoW,OAAS469B,EAAiB/w+B,EAAEmW,MAC5C,GAAKpW,EAAEukS,KAAO,IAAMtkS,EAAEskS,KAAO,EAChD,CA0BW2ssB,CAAOlx+B,EAAGC,IACrB,EAYA,IAAI++6B,EAA2B,WAE3B,SAASA,EAAUhmnB,GACA5yT,KAAK+q+B,QAAUV,EACfrq+B,KAAKgr+B,OAAS,GACdhr+B,KAAKir+B,mBAAoB,EACzBjr+B,KAAKgiZ,IAAM,EACXhiZ,KAAKksC,SAAU,EAC9BlsC,KAAKi2G,QAAU28M,EACf5yT,KAAKkr+B,eAAiB,IAAIZ,EAAUh0qB,eAAe1D,GACnDjxN,EAASs+N,qBAAqBlqN,EAAMpuF,IAAIix5B,EAAUx46B,WAAYJ,KAAM+1G,EAAMpuF,IAAI3nB,MAClF,CAiNA,OA/MA446B,EAAUx46B,UAAU2jG,QAAU,WAC1B/jG,KAAKuiC,QAAO,GACZviC,KAAKgr+B,OAAS,UACPhr+B,KAAKmr+B,YAChB,EAEAvyD,EAAUx46B,UAAUhN,KAAO,SAAUy7S,GACjC7uS,KAAKgr+B,OAAShr+B,KAAKor+B,WAAWpr+B,KAAKgr+B,OAAQhr+B,KAAK+q+B,QAAUl8rB,GAAa7uS,KAAK+q+B,SAC5E/q+B,KAAKksC,SAAU,CACnB,EACA0s4B,EAAUx46B,UAAUir+B,aAAe,WAC/Brr+B,KAAKksC,SAAWlsC,KAAK5M,MACzB,EACAwl7B,EAAUx46B,UAAUgr+B,WAAa,SAAUx08B,EAAKi4Q,GAC5C,IAAIy8rB,EAAe108B,EAAI7jC,IAAI,SAAU2wQ,EAAMtxP,GAAO,MAAO,CAAGsxP,KAAMA,EAAMtxP,IAAKA,EAAQ,GAOrF,OANAk59B,EAAal4+B,KAAK,SAAUm4+B,EAAUC,GAClC,IAAIC,EAAU58rB,EAAU08rB,EAAS7nuB,KAAM8nuB,EAAS9nuB,MAChD,OAAmB,IAAZ+nuB,EACDF,EAASn59B,IAAMo59B,EAASp59B,IACxBq59B,CACV,GACOH,EAAav4+B,IAAI,SAAU4vN,GAAW,OAAOA,EAAQ+gD,IAAM,EACtE,EAMAk1qB,EAAUx46B,UAAUpc,MAAQ,SAAUypG,GAClC,IAAIvpF,EAAQlE,KACZA,KAAKqr+B,eACL594B,EAAMkU,EAASqB,OAAO,CAAEn6B,KAAM,GAAIykI,OAAQ,CAAC,EAAGhhN,KAAM,IAAMmhG,GAC1D,IAAIkqB,EAAQ33G,KAAK23G,QACb33G,KAAKmr+B,cACLxz3B,EAAM7jH,KAAKkM,KAAKmr+B,cAWpB,IATA,IAQI57f,EARAm8f,EAAY,SAAU7owB,GACtB,IAAI7+O,EAAQ6+O,EAAK7+O,MAAMypG,EAAKvpF,EAAM+xG,SAClC,OAAOjyH,GAAS,CAAEA,MAAOA,EAAO6+O,KAAMA,EAAM57M,OAAQ47M,EAAKo0F,cAAcjzU,GAC3E,EAMSqB,EAAI,EAAGA,EAAIsyH,EAAMvjH,UAElBm7e,GAA8C,IAAtCvve,KAAK+q+B,QAAQpz3B,EAAMtyH,GAAIkqf,EAAK1sQ,OAFVx9O,IAAK,CAInC,IAAIwQ,EAAU61+B,EAAU/z3B,EAAMtyH,IAE9Bkqf,GAASA,GAAQ15e,GAAWA,EAAQoxB,OAASsod,EAAKtod,OAAUpxB,EAAU05e,CAC1E,CACA,OAAOA,CACX,EAEAqpc,EAAUx46B,UAAUwogB,KAAO,SAAU9se,GACjC,IAAIA,IAAOA,EAAIknO,iBAAf,CAEA,IAAI4vD,EAAS5yT,KAAKi2G,QAASyyZ,EAAO91M,EAAO+1M,WAAYh7Y,EAASilM,EAAOwE,aACjE3pO,EAAM,CACN5kB,KAAM6/b,EAAK7/b,OAAQykI,OAAQo7T,EAAKp7T,SAAUhhN,KAAMo8gB,EAAKp8gB,QAErDijf,EAAOvve,KAAKhc,MAAMypG,GACJsoB,EAAMvkB,QAAQ,CAC5B,CAACoQ,EAAa2B,SAAU,SAAUoo4B,GAAU,OAAOjje,EAAKj7a,IAAIk+4B,GAAQ,EAAO,GAC3E,CAACr3wB,EAAcK,YAAYi3wB,MAAO,SAAU7m3B,GAAO,OAAO4I,EAAOoB,GAAGhK,EAAIp1H,MAAOo1H,EAAI5kE,OAAQ4kE,EAAIn1H,QAAU,GACzG,CAACmmH,EAAMkP,GAAGqvG,EAAcK,aAAc,SAAU5mO,GAAU,OAAO4/H,EAAOoB,GAAGhhI,EAAO4B,QAAS5B,EAAOoyD,SAAUpyD,EAAO6B,UAAY,IAEnIi8+B,CAAYt8f,GAAQA,EAAK1sQ,KAAK3kL,QAAQqxb,EAAKvrf,MAAOypG,EAAKmlO,GAX7C,CAYd,EAEAgmnB,EAAUx46B,UAAUmiC,OAAS,SAAUvsC,GACnC,IAAIkO,EAAQlE,KACZ,IAAgB,IAAZhK,EAKA,OAAOgK,KAAK8r+B,QAAU9r+B,KAAK8r+B,SAAW9r+B,KAAKi2G,QAAQ0yZ,WAAW/pM,SAAS,SAAU9iS,GAAO,OAAO53B,EAAM0kgB,KAAK9se,EAAM,GAJhH97B,KAAK8r+B,SAAW9r+B,KAAK8r+B,iBACd9r+B,KAAK8r+B,OAKpB,EAKAlzD,EAAUx46B,UAAUhK,OAAS,SAAU1R,GACnC,IAAIgkhB,EAAO1ogB,KAAKi2G,QAAQki0B,gBACpBzz7B,EACAsb,KAAKipF,SAAWy/a,EAAKj7a,MAGrBi7a,EAAKj7a,QAAUztF,KAAKipF,UAExBy/a,EAAKj7a,IAAIztF,KAAKipF,UAAU,EAC5B,EAWA2v1B,EAAUx46B,UAAUtM,KAAO,SAAUgjU,EAAY32Q,EAAQvwD,GACrD,IAAI7L,EAAU6L,KAAaA,EAAQ7L,QACnCic,KAAKi2G,QAAQ0yZ,WAAWl7a,IAAIqpO,EAAWt4R,OAAO2hB,GAAU,CAAC,GAAIp8D,EACjE,EAoBA607B,EAAUx46B,UAAU6tF,KAAO,SAAU6oO,EAAY32Q,EAAQvwD,GACrD,IAAI69F,EAAMqpO,EAAWt4R,OAAO2hB,GAC5B,GAAW,MAAPstC,EACA,OAAO,KACX79F,EAAUA,GAAW,CAAEmzU,UAAU,GACjC,IAAI5/R,EAAMnjC,KAAKi2G,QAAQ0yZ,WAAW5pgB,OAC9Bgt+B,EAAU5o8B,EAAIkuP,YAKlB,GAJK06sB,GAAmB,OAARt+4B,IACZA,EAAM,IAAMtqD,EAAImtP,aAAe7iM,GAEnCA,EA3NR,SAAwBA,EAAKs+4B,EAAShpqB,EAAUn0D,GAC5C,MAAiB,MAAbA,EACOnhL,EACPs+4B,EACOxB,EAASloB,qBAAqBzzsB,GAAYnhL,EACjDs1O,EACOn0D,EAAS9zQ,MAAM,GAAK2yF,EACxBA,CACX,CAmNcu+4B,CAAev+4B,EAAKs+4B,EAASn8+B,EAAQmzU,SAAU5/R,EAAIyrO,aACpDh/Q,EAAQmzU,WAAat1O,EACtB,OAAOA,EAEX,IAAIw+4B,GAAUF,GAAWt+4B,EAAM,IAAM,GACjCy+4B,EAAU/o8B,EAAIyrP,OACdA,EAAoB,KAAZs9sB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAAC/o8B,EAAI15B,WAAY,MAAO05B,EAAIl7C,OAAQ2mS,EAAMq9sB,EAAOx+4B,GAAKvvF,KAAK,GACtE,EAaA066B,EAAUx46B,UAAUyiO,KAAO,SAAUA,GACjC,IAAI3+N,EAAQlE,KACZ,IAAKsq+B,EAAUh0qB,eAAeiB,UAAU10F,GACpC,MAAM,IAAIt7N,MAAM,gBAKpB,OAJAs7N,EAAKs7D,IAAMn+R,KAAKgiZ,MAChBn/K,EAAKvuI,SAAWuuI,EAAKvuI,UAAY,EACjCt0F,KAAKgr+B,OAAOl3+B,KAAK+uO,GACjB7iO,KAAKksC,SAAU,EACR,WAAc,OAAOhoC,EAAM2zG,WAAWgrH,EAAO,CACxD,EAEA+1sB,EAAUx46B,UAAUy3G,WAAa,SAAUgrH,GACvClhI,EAASuV,WAAWl3G,KAAKgr+B,OAAQnowB,EACrC,EAEA+1sB,EAAUx46B,UAAUu3G,MAAQ,WAExB,OADA33G,KAAKqr+B,eACErr+B,KAAKgr+B,OAAOlw+B,OACvB,EAEA896B,EAAUx46B,UAAUww8B,UAAY,SAAU1y5B,GACtC,IAAIiu7B,EAAYC,EAAalu7B,GAC7Bl+C,KAAKmr+B,aAAenr+B,KAAKkr+B,eAAexq+B,OAAOq1G,EAAMpuF,KAAI,GAAOwk9B,GAChEns+B,KAAKksC,SAAU,CACnB,EAEA0s4B,EAAUx46B,UAAUqhC,QAAU,SAAUyc,GACpC,IAAIiu7B,EAAYC,EAAalu7B,GAI7Bl+C,KAAK6iO,KAAK7iO,KAAKkr+B,eAAexq+B,OAHhB,SAAU2r+B,EAAUz5qB,GAC9B,OAAmD,IAA5CA,EAAOpvC,QAAQ+8C,kBAAkBxtT,UAAkB,QAAQsS,KAAKgn9B,EAASxj6B,KACpF,EAC8Csj6B,GAClD,EAEAvzD,EAAUx46B,UAAUgiH,KAAO,SAAUjM,EAASj4D,EAAStuD,GACnD,IAAIizO,EAAO7iO,KAAKkr+B,eAAexq+B,OAAOy1G,EAASj4D,GAI/C,OAHI0jD,EAAawB,UAAUxzG,GAAWA,EAAQ0kG,YAC1CuuI,EAAKvuI,SAAW1kG,EAAQ0kG,UAC5Bt0F,KAAK6iO,KAAKA,GACHA,CACX,EAEA+1sB,EAAUx46B,UAAUks+B,eAAiB,SAAUpj4B,QAC7BpyG,IAAVoyG,IACAA,GAAQ,GACZlpG,KAAKir+B,kBAAoB/h4B,CAC7B,EACO0v0B,CACX,CA7N8B,GA+N9B,SAASwzD,EAAalu7B,GAClB,KAAK0jD,EAAa/uF,WAAWqrC,IAAa0jD,EAAa2B,SAASrlD,IAAa63D,EAAMkP,GAAGqvG,EAAcK,YAAvB5+G,CAAoC73D,IAAao2K,EAAcK,YAAYi3wB,MAAM1t7B,IAC1J,MAAM,IAAI32C,MAAM,4FAEpB,OAAOq6F,EAAa/uF,WAAWqrC,GAAWA,EAAU63D,EAAMpuF,IAAIu2B,EAClE,CANAz5D,EAAQm07B,UAAYA,C,yBCvSZ,SAAW/37B,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,iEAAiEF,MAC7D,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,eACHC,GAAI,aACJC,EAAG,SACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aACJC,EAAG,UACHC,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA5DyCC,CAAQ,EAAQ,O,kBCN1D,IAAIgt8B,EAAmB,EAAQ,OAC3Bg7C,EAAgB,EAAQ,OACxBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,OACtBviV,EAAkB,EAAQ,OAwE9BxokB,EAAOj9F,QApCP,SAAwB6mD,EAAQ02C,EAAK+e,GACnC,IAAIk+G,EAAO3zK,EAAO7qC,YAClB,OAAQuhF,GACN,IA3BiB,uBA4Bf,OAAOuv2B,EAAiBjm5B,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAI2zK,GAAM3zK,GAEnB,IAjCc,oBAkCZ,OAAOih8B,EAAcjh8B,EAAQy1D,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOmpjB,EAAgB5+mB,EAAQy1D,GAEjC,IAjDS,eA2DT,IAxDS,eAyDP,OAAO,IAAIk+G,EARb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAK3zK,GAElB,IAtDY,kBAuDV,OAAOkh8B,EAAYlh8B,GAKrB,IAzDY,kBA0DV,OAAOmh8B,EAAYnh8B,GAEzB,C,wBC1EA,OAUA,SAAWnkD,EAAQ2P,GAEf,aAOA,IAGI41+B,EAAc,WACdC,EAAc,YACdC,EAAc,SACdC,EAAc,SACdC,EAAc,QACdC,EAAc,QACdniY,EAAc,OACd2T,EAAc,OACdyuX,EAAc,SACd7xxB,EAAc,UACd8xxB,EAAc,eACdC,EAAc,UACdC,EAAc,SACdC,EAAc,SACdC,EAAc,UACdC,EAAc,WACdC,EAAc,WAGdC,EAAU,SACVC,EAAU,QACVC,EAAU,OACVC,EAAa,aACbC,EAAU,UACVj2vB,EAAU,SAEVC,EAAU,UACVi2vB,EAAU,SACVC,EAAU,QACVC,EAAU,SAEVC,EAAU,KACVC,EAAY,YACZC,EAAY,WACZC,EAAU,SACVC,EAAU,UACVC,EAAU,QACVC,EAAU,OACVC,EAAU,UACVC,EAAU,QACVC,EAAU,OACVC,EAAU,SACVC,EAAU,QACVC,EAAc,WACdC,EAAc,cACdC,EAAU,SACVC,EAAiB,WAiBjBC,EAAY,SAAUp48B,GAElB,IADA,IAAIgyU,EAAQ,CAAC,EACJvjX,EAAE,EAAGA,EAAEuxC,EAAIxiC,OAAQ/O,IACxBujX,EAAMhyU,EAAIvxC,GAAGstB,eAAiBikB,EAAIvxC,GAEtC,OAAOujX,CACX,EACAj1W,EAAM,SAAUovR,EAAMC,GAClB,cAAcD,IAAS8ptB,IAAuD,IAA5CoC,EAASjstB,GAAMz6R,QAAQ0m/B,EAASlstB,GACtE,EACAkstB,EAAW,SAAUx89B,GACjB,OAAOA,EAAIrqB,aACf,EAIA4V,EAAO,SAAUyU,EAAKhjB,GAClB,UAAU,IAAUo9+B,EAEhB,OADAp69B,EAAMA,EAAI1uB,QAAQ,SAnFZ,WAoFO,IAAU4o/B,EAAal69B,EAAMA,EAAI02E,UAAU,EAjEhD,IAmEpB,EAMI+l5B,EAAY,SAAUvnnB,EAAI5oR,GAKtB,IAHA,IAAW/4E,EAAGvU,EAAGtR,EAAG0pF,EAAG53D,EAASjuC,EAA5BqB,EAAI,EAGDA,EAAI05G,EAAO3qG,SAAW69B,GAAS,CAElC,IAAI43E,EAAQ9K,EAAO15G,GACf+sC,EAAQ2sE,EAAO15G,EAAI,GAIvB,IAHA2gC,EAAIvU,EAAI,EAGDuU,EAAI6jF,EAAMz1G,SAAW69B,GAEnB43E,EAAM7jF,IAGX,GAFAiM,EAAU43E,EAAM7jF,KAAKX,KAAKsiW,GAGtB,IAAKxnX,EAAI,EAAGA,EAAIiyB,EAAMh+B,OAAQ+L,IAC1Bnc,EAAQiuC,IAAUxgB,UAClBo4E,EAAIz3D,EAAMjyB,MAEOys+B,GAAY/i5B,EAAEz1F,OAAS,EACnB,IAAby1F,EAAEz1F,cACSy1F,EAAE,IAAM6i5B,EAEf1s+B,KAAK6pF,EAAE,IAAMA,EAAE,GAAGxpF,KAAKL,KAAMhc,GAG7Bgc,KAAK6pF,EAAE,IAAMA,EAAE,GAEC,IAAbA,EAAEz1F,cAEEy1F,EAAE,KAAO6i5B,GAAe7i5B,EAAE,GAAGxkE,MAAQwkE,EAAE,GAAG3nG,KAKjD8d,KAAK6pF,EAAE,IAAM7lG,EAAQA,EAAMD,QAAQ8lG,EAAE,GAAIA,EAAE,IAAM/yF,EAHjDkJ,KAAK6pF,EAAE,IAAM7lG,EAAQ6lG,EAAE,GAAGxpF,KAAKL,KAAMhc,EAAO6lG,EAAE,IAAM/yF,EAKpC,IAAb+yF,EAAEz1F,SACL4L,KAAK6pF,EAAE,IAAM7lG,EAAQ6lG,EAAE,GAAGxpF,KAAKL,KAAMhc,EAAMD,QAAQ8lG,EAAE,GAAIA,EAAE,KAAO/yF,GAG1EkJ,KAAK6pF,GAAK7lG,GAAgB8S,EAK1CzR,GAAK,CACT,CACJ,EAEA8p/B,GAAY,SAAU189B,EAAK1f,GAEvB,IAAK,IAAI1N,KAAK0N,EAEV,UAAWA,EAAI1N,KAAOun/B,GAAY75+B,EAAI1N,GAAG+O,OAAS,GAC9C,IAAK,IAAI4xB,EAAI,EAAGA,EAAIjzB,EAAI1N,GAAG+O,OAAQ4xB,IAC/B,GAAIryB,EAAIZ,EAAI1N,GAAG2gC,GAAIvT,GACf,MAvJN,MAuJcptB,EAAiByR,EAAYzR,OAG1C,GAAIsO,EAAIZ,EAAI1N,GAAIotB,GACnB,MA3JE,MA2JMptB,EAAiByR,EAAYzR,EAG7C,OAAO0N,EAAInH,eAAe,KAAOmH,EAAI,KAAO0f,CACpD,EAiBI289B,GAAoB,CAChB,GAAc,OACd,UAAc,SACd,SAAc,QACd,IAAc,SACd,GAAc,CAAC,SAAU,UACzB,MAAc,SACd,EAAc,SACd,EAAc,SACd,IAAc,SACd,GAAc,CAAC,SAAU,WACzB,GAAc,OAOlBC,GAAU,CAEVjtlB,QAAU,CAAC,CAEP,gCACG,CAACjnM,EAAS,CAACyvZ,EAAM,WAAY,CAChC,+BACG,CAACzvZ,EAAS,CAACyvZ,EAAM,SAAU,CAG9B,4BACA,mDACA,2CACG,CAACA,EAAMzvZ,GAAU,CACpB,yBACG,CAACA,EAAS,CAACyvZ,EAAMyjY,EAAM,UAAW,CACrC,4BACG,CAAClzxB,EAAS,CAACyvZ,EAAMyjY,EAAM,QAAS,CACnC,qBACG,CAAClzxB,EAAS,CAACyvZ,EAAMyjY,IAAS,CAG7B,0DACG,CAAClzxB,EAAS,CAACyvZ,EAAM,UAAW,CAC/B,+CACG,CAACzvZ,EAAS,CAACyvZ,EAAM,YAAa,CACjC,uBACA,uEAGA,4DACA,2BAGA,+NAEA,sCACA,uBACG,CAACA,EAAMzvZ,GAAU,CACpB,6BACG,CAACA,EAAS,CAACyvZ,EAAM,UAAW,CAC/B,qBACG,CAACzvZ,EAAS,CAACyvZ,EAAM,eAAgB,CACpC,qDACG,CAACzvZ,EAAS,CAACyvZ,EAAM,KAAKgjY,IAAW,CACpC,+BACA,+BACA,8BACG,CAACzyxB,EAAS,CAACyvZ,EAAM,WAAY,CAChC,yBACG,CAACzvZ,EAAS,CAACyvZ,EAAM,cAAe,CACnC,+CACG,CAACzvZ,EAAS,CAACyvZ,EAAM,OAAQ,CAC5B,oCACG,CAACzvZ,EAAS,CAACyvZ,EAAM,WAAY,CAChC,yBACG,CAACzvZ,EAAS,CAACyvZ,EAAM,gBAAgBgjY,IAAW,CAC/C,2BACG,CAAC,CAAChjY,EAAM,OAAQ,aAAagjY,GAAUzyxB,GAAU,CACpD,uBACG,CAACA,EAAS,CAACyvZ,EAAMhzX,EAAQ,WAAY,CACxC,qBACG,CAACz8B,EAAS,CAACyvZ,EAAMyjY,EAAM,WAAY,CACtC,0BACG,CAAClzxB,EAAS,CAACyvZ,EAAM,YAAa,CACjC,sBACG,CAACzvZ,EAAS,CAACyvZ,EAAM,YAAa,CACjC,qBACG,CAACzvZ,EAAS,CAACyvZ,EAAMyjY,EAAM,WAAY,CACtC,2BACG,CAAClzxB,EAAS,CAACyvZ,EAAM,OAASmkY,IAAkB,CAC/C,sBACG,CAAC5zxB,EAAS,CAACyvZ,EAAMhzX,IAAW,CAC/B,+BACG,CAACz8B,EAAS,CAACyvZ,EAAM,QAAS,CAC7B,sBACG,CAAC,CAACA,EAAM,OAAQ,aAAczvZ,GAAU,CAC3C,yDACG,CAAC,CAACyvZ,EAAM,OAAQ,KAAOmkY,GAAiB5zxB,GAAU,CACrD,8BACG,CAACA,EAAS,CAACyvZ,EAAM2jY,EAAU,cAAe,CAC7C,0BACG,CAACpzxB,EAAS,CAACyvZ,EAAM,mBAAoB,CACxC,4BACG,CAAC,CAACA,EAAM,gBAAiBzvZ,GAAU,CACtC,gCACA,iDACA,sEACG,CAACyvZ,EAAMzvZ,GAAU,CACpB,sBACA,sBACG,CAACyvZ,GAAO,CACX,kCACA,oCACG,CAACzvZ,EAASyvZ,GAAO,CAGpB,+DACG,CAAC,CAACA,EAAMgkY,GAAWzzxB,GAAU,CAChC,uBACA,uCACA,kCACA,4BACA,4BACA,4BACA,6BACA,qCACA,iDACG,CAACyvZ,EAAMzvZ,GAAU,CACpB,gCACG,CAACA,EAAS,CAACyvZ,EAAM,QAAS,CAC7B,8CACG,CAACzvZ,EAAS,CAACyvZ,EAAM,WAAY,CAEhC,oCACG,CAACzvZ,EAAS,CAACyvZ,EAAMjzX,EAAO,cAAe,CAE1C,+BACG,CAAC,CAACizX,EAAMjzX,EAAO,YAAax8B,GAAU,CAEzC,2DACG,CAACA,EAAS,CAACyvZ,EAAM,WAAWgjY,IAAW,CAE1C,+DACG,CAAChjY,EAAMzvZ,GAAU,CAEpB,gDACG,CAACA,EAAS,CAACyvZ,EAAM,kBAAmB,CACvC,sDACG,CAACzvZ,EAASyvZ,GAAO,CACpB,gDACG,CAACA,EAAM,CAACzvZ,EAASg0xB,GA/JT,CACX,MAAU,KACV,IAAU,KACV,IAAU,KACV,MAAU,OACV,QAAU,OACV,QAAU,OACV,QAAU,OACV,IAAU,OAuJqC,CAE/C,8BACG,CAACvkY,EAAMzvZ,GAAU,CAGpB,wCACG,CAAC,CAACyvZ,EAAM,YAAazvZ,GAAU,CAClC,kCACG,CAACyvZ,EAAMzvZ,GAAU,CACpB,uCACG,CAACA,EAAS,CAACyvZ,EAAMhzX,EAAQ,aAAc,CAC1C,6BACA,cACA,8FAEA,+FAEA,wBACA,2CAGA,wHAEA,0BACG,CAACgzX,EAAM,CAACzvZ,EAAS,KAAM,MAAO,CAEjC,wBACG,CAACyvZ,EAAM,CAACzvZ,EAAS,eAAgB,MAGxCm0xB,IAAM,CAAC,CAEH,qCACG,CAAC,CAACrC,EAAc,UAAW,CAE9B,eACA,4BACG,CAAC,CAACA,EAAc,SAAU,CAE7B,uCACG,CAAC,CAACA,EAAc,UAAW,CAE9B,iCACG,CAAC,CAACA,EAAc,UAAW,CAG9B,wCACG,CAAC,CAACA,EAAc,QAAS,CAE5B,oCACG,CAAC,CAACA,EAAc,OAzXT,GAyXwBgC,IAAY,CAE9C,iBACG,CAAC,CAAChC,EAAc,UAAW,CAE9B,qGAEG,CAAC,CAACA,EAAcgC,KAGvBM,OAAS,CAAC,CAON,mFACG,CAACxC,EAAO,CAACC,EAAQuB,GAAU,CAAChwX,EAAM6uX,IAAU,CAC/C,iEACA,kCACA,iBACG,CAACL,EAAO,CAACC,EAAQuB,GAAU,CAAChwX,EAAM4uX,IAAU,CAG/C,4CACG,CAACJ,EAAO,CAACC,EAAQS,GAAQ,CAAClvX,EAAM4uX,IAAU,CAC7C,6BACA,oCACA,kCACG,CAACJ,EAAO,CAACC,EAAQS,GAAQ,CAAClvX,EAAM6uX,IAAU,CAC7C,iBACG,CAACL,EAAO,CAACC,EAAQS,IAAS,CAG7B,iCACG,CAACV,EAAO,CAACC,EAAQwB,GAAQ,CAACjwX,EAAM4uX,IAAU,CAG7C,8FACG,CAACJ,EAAO,CAACC,EAAQc,GAAQ,CAACvvX,EAAM6uX,IAAU,CAC7C,wBACG,CAACL,EAAO,CAACC,EAAQc,GAAQ,CAACvvX,EAAM4uX,IAAU,CAG7C,iPACG,CAACJ,EAAO,CAACC,EAAQe,GAAS,CAACxvX,EAAM6uX,IAAU,CAC9C,4BACA,sEACG,CAACL,EAAO,CAACC,EAAQe,GAAS,CAACxvX,EAAM4uX,IAAU,CAG9C,wEACA,8CACE,CAAC,CAACJ,EAAO,KAAM,KAAM,CAACC,EAAQ0B,GAAS,CAACnwX,EAAM6uX,IAAU,CAE1D,kDACA,yBACA,uCACA,iDACA,4DACA,4GACA,yBACG,CAAC,CAACL,EAAO,KAAM,KAAM,CAACC,EAAQ0B,GAAS,CAACnwX,EAAM4uX,IAAU,CAG3D,sBACA,mEACG,CAACJ,EAAO,CAACC,EAAQsB,GAAO,CAAC/vX,EAAM4uX,IAAU,CAC5C,iCACG,CAACJ,EAAO,CAACC,EAAQmC,GAAW,CAAE,QAAY,CAAC,MAAO,MAAO,OAAQ,IAAMb,IAAS,CAAC/vX,EAAM6uX,IAAU,CAGpG,yBACA,oCACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACzuX,EAAM4uX,IAAU,CAG9C,mCACG,CAACJ,EAAO,CAACC,EAAQ,UAAW,CAACzuX,EAAM4uX,IAAU,CAGhD,iFACA,4BACA,8DACG,CAACJ,EAAO,CAACC,EAAQkB,GAAW,CAAC3vX,EAAM4uX,IAAU,CAChD,qCACG,CAACJ,EAAO,CAACC,EAAQkB,GAAW,CAAC3vX,EAAM6uX,IAAU,CAGhD,iEACG,CAACL,EAAO,CAACC,EAAQgB,GAAK,CAACzvX,EAAM6uX,IAAU,CAC1C,sDACA,0DACA,wBACG,CAACL,EAAO,CAACC,EAAQgB,GAAK,CAACzvX,EAAM4uX,IAAU,CAG1C,8IACA,4EACG,CAACJ,EAAO,CAACC,EA7bN,UA6buB,CAACzuX,EAAM6uX,IAAU,CAG9C,wBACG,CAACJ,EAAQD,EAAO,CAACxuX,EAAM6uX,IAAU,CACpC,4CACA,6BACG,CAAC,CAACL,EAAO,KAAM,KAAM,CAACxuX,EAAM4uX,GAAS,CAACH,EAAQ,UAAW,CAG5D,yBACG,CAACD,EAAO,CAACC,EAAQa,GAAS,CAACtvX,EAAM6uX,IAAU,CAC9C,6CACG,CAACL,EAAO,CAACC,EAAQa,GAAS,CAACtvX,EAAM4uX,IAAU,CAG9C,2GACG,CAACJ,EAAO,CAACC,EAAQyB,GAAO,CAAClwX,EAAM4uX,IAAU,CAC5C,oBACA,iCACG,CAAC,CAACJ,EAAO,iBAAkB,CAACC,EAAQyB,GAAO,CAAClwX,EAAM6uX,IAAU,CAG/D,sCACA,0CACG,CAACL,EAAO,CAACC,EAAQoB,GAAU,CAAC7vX,EAAM4uX,IAAU,CAG/C,eACA,yCACA,gCACG,CAACJ,EAAO,CAACC,EAAQQ,GAAS,CAACjvX,EAAM6uX,IAAU,CAC9C,iDACG,CAAC,CAACL,EAAO,QAAS,iBAAkB,CAACC,EAAQQ,GAAS,CAACjvX,EAAM4uX,IAAU,CAG1E,gCACG,CAACJ,EAAOC,EAAQ,CAACzuX,EAAM6uX,IAAU,CACpC,gCACA,kBACG,CAACL,EAAO,CAACC,EAAQW,GAAa,CAACpvX,EAAM4uX,IAAU,CAGlD,qFACG,CAACJ,EAAO,CAACC,EAAQU,GAAO,CAACnvX,EAAM6uX,IAAU,CAC5C,iDACG,CAACL,EAAO,CAACC,EAAQU,GAAO,CAACnvX,EAAM4uX,IAAU,CAG5C,cACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM6uX,IAAU,CAC7C,2CAGA,oCACA,iFACG,CAACJ,EAAQ,CAACD,EAAO,KAAM,KAAM,CAACxuX,EAAM4uX,IAAU,CAGjD,gHACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM6uX,IAAU,CAG7C,mBACG,CAAC,CAACJ,EAAQiC,GAAWlC,EAAO,CAACxuX,EAAM4wX,GAAW,CAAE,OAAW,CAAC,UAAW,SAAU,IAAM,YAAc,CAGxG,uCACG,CAACpC,EAAO,CAACC,EAAQ,QAAS,CAACzuX,EAAM6uX,IAAU,CAG9C,8BACA,qBACG,CAACL,EAAO,CAACC,EAAQ,SAAU,CAACzuX,EAAM4uX,IAAU,CAG/C,kDACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACzuX,EAAM4uX,IAAU,CAGjD,8BACA,oCACG,CAACJ,EAAO,CAACC,EAAQ,aAAc,CAACzuX,EAAM4uX,IAAU,CAGnD,gBACA,+CACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM4uX,IAAU,CAG7C,0CACG,CAACJ,EAAO,CAACC,EAAQ,aAAc,CAACzuX,EAAM4uX,IAAU,CAGnD,qCACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACzuX,EAAM4uX,IAAU,CAGjD,+CACA,kEACG,CAACJ,EAAO,CAACC,EAAQ,UAAW,CAACzuX,EAAM6uX,IAAU,CAChD,0BACA,gCACG,CAACL,EAAO,CAACC,EAAQ,UAAW,CAACzuX,EAAM4uX,IAAU,CAGhD,mBACA,wBACG,CAACH,EAAQD,EAAO,CAACxuX,EAAM6uX,IAAU,CAEpC,8IAEA,oCACA,mBACA,8BACA,0CACA,yBACG,CAACJ,EAAQD,EAAO,CAACxuX,EAAM4uX,IAAU,CAEpC,2BACA,uCACA,uBACA,4BACA,iCACA,kCACA,8BACA,gCACA,mCACG,CAACH,EAAQD,EAAO,CAACxuX,EAAM6uX,IAAU,CAEpC,kBACG,CAACL,EAAO,CAACC,EAAQiB,GAAY,CAAC1vX,EAAM6uX,IAAU,CACjD,qCACG,CAACL,EAAO,CAACC,EAAQ,aAAc,CAACzuX,EAAM4uX,IAAU,CACnD,aACG,CAACJ,EAAO,CAACC,EAAQ,QAAS,CAACzuX,EAAM4uX,IAAU,CAC9C,gBACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACzuX,EAAM4uX,IAAU,CACjD,iBACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM6uX,IAAU,CAC7C,0BACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACzuX,EAAM6uX,IAAU,CAC9C,wBACG,CAACL,EAAO,CAACC,EAAQ,WAAY,CAACzuX,EAAM6uX,IAAU,CACjD,+CACG,CAACL,EAAO,CAACC,EAAQ,kBAAmB,CAACzuX,EAAM6uX,IAAU,CACxD,qBACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACzuX,EAAM6uX,IAAU,CAClD,cACG,CAACL,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM6uX,IAAU,CAC7C,mBACG,CAACL,EAAO,CAACC,EAAQ,OAAQ,CAACzuX,EAAM4uX,IAAU,CAC7C,wBACG,CAACJ,EAAO,CAACC,EAAQ,SAAU,CAACzuX,EAAM4uX,IAAU,CAC/C,mBACG,CAACJ,EAAO,CAACC,EAAQ,SAAU,CAACzuX,EAAM6uX,IAAU,CAC/C,wBACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACzuX,EAAM6uX,IAAU,CAC9C,mBACA,sCACG,CAAC,CAACJ,EAAQ,gBAAiBD,EAAO,CAACxuX,EAAM6uX,IAAU,CACtD,sBACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACzuX,EAAM6uX,IAAU,CAClD,8BACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACzuX,EAAM6uX,IAAU,CAClD,oDACG,CAAC,CAACJ,EAAQ,SAAUD,EAAO,CAACxuX,EAAM4uX,IAAU,CAC/C,2BACG,CAAC,CAACH,EAAQ,SAAUD,EAAO,CAACxuX,EAAM4uX,IAAU,CAC/C,cACG,CAACJ,EAAO,CAACC,EAAQ,aAAc,CAACzuX,EAAM4uX,IAAU,CACnD,uCACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACzuX,EAAM6uX,IAAU,CACjD,wBACG,CAACL,EAAO,CAACC,EAAQ,aAAc,CAACzuX,EAAM6uX,IAAU,CACnD,kBACG,CAACL,EAAO,CAACC,EAAQ,SAAU,CAACzuX,EAAM6uX,IAAU,CAC/C,wDACG,CAACL,EAAO,CAACC,EAAQmB,GAAS,CAAC5vX,EAAM6uX,IAAU,CAC9C,mBACG,CAACJ,EAAQD,EAAO,CAACxuX,EAAM4uX,IAAU,CACpC,sBACG,CAAC,CAACJ,EAAO,MAAO,KAAM,CAACC,EAAQiB,GAAY,CAAC1vX,EAAM4uX,IAAU,CAC/D,yDACG,CAACJ,EAAO,CAACC,EAAQ2B,GAAQ,CAACpwX,EAAM6uX,IAAU,CAC7C,yCACG,CAACL,EAAO,CAACC,EAAQ2B,GAAQ,CAACpwX,EAAM4uX,IAAU,CAM7C,wBACG,CAACH,EAAQ,CAACzuX,EAAM8uX,IAAW,CAC9B,uBACG,CAAC,CAACN,EAAO,IAAK,WAAY,CAACC,EAAQuB,GAAU,CAAChwX,EAAM8uX,IAAW,CAClE,8DACG,CAAC,CAACL,EAAQgB,GAAK,CAACzvX,EAAM8uX,IAAW,CACpC,gBACG,CAACL,EAAQ,CAACD,EAAOU,EAAM,OAAQ,CAAClvX,EAAM8uX,IAAW,CACpD,UACG,CAAC,CAACN,EAAOp1vB,EAAO,QAAS,CAACq1vB,EAAQa,GAAS,CAACtvX,EAAM8uX,IAAW,CAChE,6BACG,CAACN,EAAO,CAACC,EAAQQ,GAAS,CAACjvX,EAAM8uX,IAAW,CAC/C,oBACG,CAACN,EAAO,CAACC,EAAQmB,GAAS,CAAC5vX,EAAM8uX,IAAW,CAC/C,uBACA,uBACG,CAACN,EAAO,CAACC,EAAQwB,GAAQ,CAACjwX,EAAM8uX,IAAU,CAC7C,4BACG,CAACN,EAAO,CAACC,EAAQyB,GAAO,CAAClwX,EAAM8uX,IAAW,CAC7C,0BACG,CAACN,EAAO,CAACC,EAAQ0B,GAAS,CAACnwX,EAAM8uX,IAAW,CAC/C,6BACG,CAACL,EAAQD,EAAO,CAACxuX,EAAM8uX,IAAW,CACrC,0CACA,6DACG,CAAC,CAACL,EAAQhv+B,GAAO,CAAC+u+B,EAAO/u+B,GAAO,CAACugnB,EAAM8uX,IAAW,CAErD,mDACG,CAACN,EAAO,CAACxuX,EAAM8uX,IAAW,CAC7B,mDACG,CAAC,CAAC9uX,EAAM8uX,IAAW,CAMtB,UACA,8BACG,CAACL,EAAQD,EAAO,CAACxuX,EAAM2uX,IAAW,CACrC,+BACG,CAACH,EAAO,CAACC,EAAQmB,GAAS,CAAC5vX,EAAM2uX,IAAW,CAC/C,sBACG,CAACH,EAAO,CAACC,EAAQyB,GAAO,CAAClwX,EAAM2uX,IAAW,CAC7C,sCACG,CAACH,EAAO,CAACC,EAAQiB,GAAY,CAAC1vX,EAAM2uX,IAAW,CAMlD,+CACG,CAACH,EAAO,CAACC,EAAQuB,GAAU,CAAChwX,EAAM+uX,IAAY,CACjD,iBACA,8DACG,CAACN,EAAQD,EAAO,CAACxuX,EAAM+uX,IAAY,CACtC,gCACG,CAACP,EAAO,CAACC,EAAQsB,GAAO,CAAC/vX,EAAM+uX,IAAY,CAC9C,wCACG,CAACP,EAAO,CAACC,EAAQS,GAAQ,CAAClvX,EAAM+uX,IAAY,CAC/C,iBACG,CAACP,EAAO,CAACC,EAAQoB,GAAU,CAAC7vX,EAAM+uX,IAAY,CACjD,eACG,CAACP,EAAO,CAACC,EAAQkB,GAAW,CAAC3vX,EAAM+uX,IAAY,CAClD,mBACG,CAACP,EAAO,CAACC,EAAQyB,GAAO,CAAClwX,EAAM+uX,IAAY,CAC9C,gBACG,CAACP,EAAO,CAACC,EAAQgB,GAAK,CAACzvX,EAAM+uX,IAAY,CAC5C,6BACG,CAACP,EAAO,CAACC,EAAQ2B,GAAQ,CAACpwX,EAAM+uX,IAAY,CAM/C,wBACG,CAACP,EAAO,CAACC,EAAQa,GAAS,CAACtvX,EAAM+uX,IAAY,CAChD,kCACG,CAACN,EAAQD,EAAO,CAACxuX,EAAM+uX,IAAY,CACtC,yBACG,CAACP,EAAO,CAACC,EAAQ4B,GAAW,CAACrwX,EAAM+uX,IAAY,CAMlD,wCACG,CAACN,EAAQ,CAACzuX,EAAMgvX,IAAY,CAC/B,cACG,CAACR,EAAO,CAACC,EAAQQ,GAAS,CAACjvX,EAAMgvX,IAAY,CAChD,sBACG,CAACR,EAAO,CAACC,EAAQS,GAAQ,CAAClvX,EAAMgvX,IAAY,CAC/C,gBACG,CAAC,CAAChvX,EAAMgvX,IAAY,CAMvB,kEACG,CAACR,EAAO,CAACxuX,EAAM4uX,IAAU,CAC5B,+DACG,CAACJ,EAAO,CAACxuX,EAAM6uX,IAAU,CAC5B,gDACG,CAAC,CAAC7uX,EAAM6uX,IAAU,CACrB,kEACG,CAAC,CAAC7uX,EAAM4uX,IAAU,CACrB,oCACG,CAACJ,EAAO,CAACC,EAAQ,aAGxBwC,OAAS,CAAC,CAEN,8BACG,CAACr0xB,EAAS,CAACyvZ,EAAM6kY,aAAe,CAEnC,wBACG,CAAC7kY,EAAMzvZ,GAAU,CAEpB,6CACG,CAACA,EAAS,CAACyvZ,EAAM,UAAW,CAE/B,uBACA,4EACA,0BACA,yCACA,8BAEA,eACG,CAACA,EAAMzvZ,GAAU,CACpB,eACG,CAAC,CAACyvZ,EAAM,WAAY,CAEvB,iCACG,CAACzvZ,EAASyvZ,IAGjBjY,GAAK,CAAC,CAGF,mCACG,CAACiY,EAAMzvZ,GAAU,CACpB,6DACG,CAACyvZ,EAAM,CAACzvZ,EAASg0xB,GAAWC,KAAqB,CACpD,0BACA,0CACA,wCACG,CAAC,CAACj0xB,EAASg0xB,GAAWC,IAAoB,CAACxkY,EAAM,YAAa,CAGjE,uDACA,4CACA,wBACG,CAAC,CAACzvZ,EAAS,KAAM,KAAM,CAACyvZ,EAAM,QAAS,CAC1C,0BACA,yCACG,CAAC,CAACA,EAAMkkY,GAAS,CAAC3zxB,EAAS,KAAM,MAAO,CAG3C,kDACG,CAACA,EAASyvZ,GAAO,CACpB,oCACG,CAAC,CAACA,EAAM,OAAQ,YAAazvZ,GAAU,CAE1C,wIACG,CAACyvZ,EAAMzvZ,GAAU,CACpB,cACG,CAACA,EAAS,CAACyvZ,EAAM+iY,IAAc,CAClC,+DACG,CAACxyxB,EAAS,CAACyvZ,EAAM,YAAa,CACjC,mFACG,CAACzvZ,EAAS,CAACyvZ,EAAMhzX,EAAQ,QAAS,CACrC,kBACA,wCACG,CAACz8B,EAAS,CAACyvZ,EAAM,UAAW,CAC/B,wCACG,CAACzvZ,EAAS,CAACyvZ,EAAM,YAAa,CAGjC,qBACG,CAACzvZ,EAAS,CAACyvZ,EAAMjzX,EAAO,SAAU,CACrC,oCACG,CAAC,CAACizX,EAAMikY,GAAc1zxB,GAAS,CAGlC,qBACA,iBACA,2BAGA,mDACA,2BAGA,wCACA,yBACA,4BACA,8SAEA,+CACA,oBACA,6EACA,kBACG,CAACyvZ,EAAMzvZ,GAAU,CACpB,yBACG,CAAC,CAACyvZ,EAAM,WAAYzvZ,GAAU,CACjC,sCACA,kCACA,mEACA,sBACG,CAACyvZ,EAAMzvZ,KAQdu0xB,GAAW,SAAU/nnB,EAAIgonB,GAOzB,UALWhonB,IAAOilnB,IACd+C,EAAahonB,EACbA,EAAK7wX,KAGHkJ,gBAAgB0v+B,IAClB,OAAO,IAAIA,GAAS/nnB,EAAIgonB,GAAY9+T,YAGxC,IAAI++T,SAAqBzo/B,IAAWwl/B,GAAcxl/B,EAAOmH,UAAanH,EAAOmH,UAAYwI,EACrF+4+B,EAAMlonB,IAAQionB,GAAcA,EAAWrh/B,UAAaqh/B,EAAWrh/B,UAl4BrD,IAm4BVuh/B,EAASF,GAAcA,EAAWG,cAAiBH,EAAWG,cAAgBj5+B,EAC9Ek5+B,EAAUL,EA90BL,SAAUN,EAASM,GACxB,IAAIM,EAAgB,CAAC,EACrB,IAAK,IAAI5q/B,KAAKgq/B,EACNM,EAAWtq/B,IAAMsq/B,EAAWtq/B,GAAG+O,OAAS,GAAM,EAC9C67+B,EAAc5q/B,GAAKsq/B,EAAWtq/B,GAAG2I,OAAOqh/B,EAAQhq/B,IAEhD4q/B,EAAc5q/B,GAAKgq/B,EAAQhq/B,GAGnC,OAAO4q/B,CACX,CAo0B2Bjt4B,CAAOqs4B,GAASM,GAAcN,GACrDa,EAAaN,GAAcA,EAAWrh/B,WAAash/B,EAyEvD,OAvEA7v+B,KAAKmw+B,WAAa,WACd,IA1zBiBtr6B,EA0zBbur6B,EAAW,CAAC,EAShB,OARAA,EAASxlY,GAAQ9zmB,EACjBs5+B,EAASj1xB,GAAWrkN,EACpBo4+B,EAAU7u+B,KAAK+v+B,EAAUP,EAAKG,EAAQ5tlB,SACtCgulB,EAAStD,UA9zBQjo6B,EA8zBUur6B,EAASj1xB,MA7zBT0xxB,EAAWho6B,EAAQ9gF,QAAQ,WA/E5C,IA+E+D7C,MAAM,KAAK,GAAK4V,EA+zBrFo5+B,GAAcN,GAAcA,EAAWS,cAAgBT,EAAWS,MAAMC,SAAW5D,IACnF0D,EAASxlY,GAAQ,SAEdwlY,CACX,EACApw+B,KAAKuw+B,OAAS,WACV,IAAIC,EAAO,CAAC,EAGZ,OAFAA,EAAKvD,GAAgBn2+B,EACrBo4+B,EAAU7u+B,KAAKmw+B,EAAMX,EAAKG,EAAQV,KAC3BkB,CACX,EACAxw+B,KAAKyw+B,UAAY,WACb,IAAIC,EAAU,CAAC,EAaf,OAZAA,EAAQ1D,GAAUl2+B,EAClB45+B,EAAQ3D,GAASj2+B,EACjB45+B,EAAQnyX,GAAQznnB,EAChBo4+B,EAAU7u+B,KAAKqw+B,EAASb,EAAKG,EAAQT,QACjCW,IAAeQ,EAAQnyX,IAASuxX,GAASA,EAAMxtlB,SAC/CoulB,EAAQnyX,GAAQ4uX,GAGhB+C,GAAgC,aAAlBQ,EAAQ3D,IAAyB6C,UAAqBA,EAAWxwwB,aAAeutwB,GAAciD,EAAWv4G,gBAAkBu4G,EAAWv4G,eAAiB,IACrKq5G,EAAQ3D,GAAS,OACjB2D,EAAQnyX,GAAQ6uX,GAEbsD,CACX,EACA1w+B,KAAK2w+B,UAAY,WACb,IAAIC,EAAU,CAAC,EAIf,OAHAA,EAAQhmY,GAAQ9zmB,EAChB85+B,EAAQz1xB,GAAWrkN,EACnBo4+B,EAAU7u+B,KAAKuw+B,EAASf,EAAKG,EAAQR,QAC9BoB,CACX,EACA5w+B,KAAK6w+B,MAAQ,WACT,IAAIC,EAAM,CAAC,EASX,OARAA,EAAIlmY,GAAQ9zmB,EACZg6+B,EAAI31xB,GAAWrkN,EACfo4+B,EAAU7u+B,KAAKyw+B,EAAKjB,EAAKG,EAAQr9Y,IAC7Bu9Y,IAAeY,EAAIlmY,IAASklY,GAASA,EAAMzm9B,UAA8B,WAAlBym9B,EAAMzm9B,WAC7Dyn9B,EAAIlmY,GAAQklY,EAAMzm9B,SACGtlC,QAAQ,aAAc8q/B,GACtB9q/B,QAAQ,SAAU+q/B,IAEpCgC,CACX,EACA9w+B,KAAK6wqB,UAAY,WACb,MAAO,CACHlpT,GAAU3nX,KAAK+w+B,QACf3ulB,QAAUpiZ,KAAKmw+B,aACfX,OAAUxv+B,KAAK2w+B,YACfh+Y,GAAU3ylB,KAAK6w+B,QACftB,OAAUvv+B,KAAKyw+B,YACfnB,IAAUtv+B,KAAKuw+B,SAEvB,EACAvw+B,KAAK+w+B,MAAQ,WACT,OAAOlB,CACX,EACA7v+B,KAAKgx+B,MAAQ,SAAUrpnB,GAEnB,OADAkonB,SAAclonB,IAAOklnB,GAAYllnB,EAAGvzX,OAv7BxB,IAu7BkD4J,EAAK2pX,EAv7BvD,KAu7B4EA,EACjF3nX,IACX,EACAA,KAAKgx+B,MAAMnB,GACJ7v+B,IACX,EAEA0v+B,GAASv0xB,QAl9BS,SAm9BlBu0xB,GAAS9B,QAAWoB,EAAU,CAACpkY,EAAMzvZ,EAAS2xxB,IAC9C4C,GAASuB,IAAMjC,EAAU,CAAC/B,IAC1ByC,GAASwB,OAASlC,EAAU,CAACjC,EAAOC,EAAQzuX,EAAM2uX,EAASC,EAAQE,EAASD,EAAQE,EAAUC,IAC9FmC,GAASyB,OAASzB,GAAS0B,GAAKpC,EAAU,CAACpkY,EAAMzvZ,WAOvC,IAAcwxxB,GAEgBjr5B,EAAOj9F,UACvCA,EAAUi9F,EAAOj9F,QAAUir/B,IAE/Bjr/B,EAAQir/B,SAAWA,IAGiB,QAChC,aACI,OAAOA,EACV,2CACavo/B,IAAWwl/B,IAEzBxl/B,EAAOuo/B,SAAWA,IAS1B,IAAIhm5B,UAAWviG,IAAWwl/B,IAAexl/B,EAAOwuQ,QAAUxuQ,EAAOkq/B,OACjE,GAAI3n5B,KAAMA,GAAEi+R,GAAI,CACZ,IAAI7pS,GAAS,IAAI4x5B,GACjBhm5B,GAAEi+R,GAAK7pS,GAAO+ylB,YACdnnlB,GAAEi+R,GAAG9zX,IAAM,WACP,OAAOiqF,GAAOiz5B,OAClB,EACArn5B,GAAEi+R,GAAG5zX,IAAM,SAAU4zX,GACjB7pS,GAAOkz5B,MAAMrpnB,GACb,IAAIx0X,EAAS2qF,GAAO+ylB,YACpB,IAAK,IAAIv+oB,KAAQn/B,EACbu2F,GAAEi+R,GAAGr1V,GAAQn/B,EAAOm/B,EAE5B,CACJ,CAEH,CA7gCD,CA6gCqB,iBAAXnrC,OAAsBA,OAAS6Y,K,+BCthCzC,IAAIqgG,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjCjoO,EAAW,EAAQ,KAEnB6wJ,EAAO,KACP9zJ,EAAUs8G,EAAY,GAAGt8G,SAI7B29F,EAAOj9F,QAAU,SAAUX,EAAQk+F,EAAK8yL,EAAWnvR,GACjD,IAAIg1B,EAAI3zB,EAASioO,EAAuBnrO,IACpCyhC,EAAK,IAAMy8D,EAEf,MADkB,KAAd8yL,IAAkBvvP,GAAM,IAAMuvP,EAAY,KAAO/wR,EAAQiD,EAASrB,GAAQkyJ,EAAM,UAAY,KACzFtyH,EAAK,IAAM5K,EAAI,KAAOqnE,EAAM,GACrC,C,yBCNQ,SAAWnhG,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YACI,8DAA8DD,MAC1D,KAERghI,kBAAkB,EAClB9gI,SAAU,mDAAmDF,MAAM,KACnEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVS,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBwd,KAAKorL,QAAgB,KAAO,KAAO,MAC1D,EACA3oM,QAAS,WACL,MAAO,UAA6B,IAAjBud,KAAKorL,QAAgB,KAAO,KAAO,MAC1D,EACA1oM,SAAU,WACN,MAAO,UAA6B,IAAjBsd,KAAKorL,QAAgB,KAAO,KAAO,MAC1D,EACAzoM,QAAS,WACL,MAAO,UAA6B,IAAjBqd,KAAKorL,QAAgB,IAAM,KAAO,MACzD,EACAxoM,SAAU,WACN,MACI,qBAAwC,IAAjBod,KAAKorL,QAAgB,KAAO,KAAO,MAElE,EACAvoM,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU0vB,GACd,OAA0B,IAAtBA,EAAIlqB,QAAQ,MACL,IAAMkqB,EAEV,MAAQA,CACnB,EACAzvB,KAAM,SACNC,EAAG,eACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA/EyCC,CAAQ,EAAQ,O,+BCL1D,IAAIq7H,EAAc,EAAQ,OACtBv/G,EAAO,EAAQ,OACfigsB,EAA6B,EAAQ,OACrCjhV,EAA2B,EAAQ,MACnC3jI,EAAkB,EAAQ,OAC1BwkR,EAAgB,EAAQ,OACxBpgZ,EAAS,EAAQ,OACjBkgZ,EAAiB,EAAQ,OAGzBG,EAA4Br2gB,OAAOyrC,yBAIvC9wC,EAAQid,EAAIk+G,EAAcugZ,EAA4B,SAAkCrlf,EAAG5Z,GAGzF,GAFA4Z,EAAI4gO,EAAgB5gO,GACpB5Z,EAAIg/f,EAAch/f,GACd8+f,EAAgB,IAClB,OAAOG,EAA0Brlf,EAAG5Z,EACtC,CAAE,MAAO+I,GAAqB,CAC9B,GAAI61G,EAAOhlG,EAAG5Z,GAAI,OAAOm+W,GAA0Bh/W,EAAKigsB,EAA2B5+rB,EAAGoZ,EAAG5Z,GAAI4Z,EAAE5Z,GACjG,C,+DCrBe,SAASow+B,EAAepk4B,EAAUC,GAC/CD,EAAS9sG,UAAYtW,OAAO4W,OAAOysG,EAAW/sG,WAC9C8sG,EAAS9sG,UAAUK,YAAcysG,GACjC,OAAeA,EAAUC,EAC3B,C,+DC2BA,QALA,SAAa7hE,EAAQu9B,EAAMv4D,GACzB,IAAInd,EAAmB,MAAVm4C,OAAiBx0C,GAAY,OAAQw0C,EAAQu9B,GAC1D,YAAkB/xE,IAAX3D,EAAuBmd,EAAend,CAC/C,C,kBC9BA,IAAI3O,EAAS,EAAQ,OACjB2nO,EAAW,EAAQ,OACnBp8M,EAAU,EAAQ,OAClBiwG,EAAW,EAAQ,OAMnBwC,EAAch+H,EAASA,EAAO4b,eAAYtJ,EAC1C2rH,EAAiBD,EAAcA,EAAYx7H,cAAW8P,EA0B1D4qF,EAAOj9F,QAhBP,SAASi+H,EAAa/8H,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIoqB,EAAQpqB,GAEV,OAAOwmO,EAASxmO,EAAO+8H,GAAgB,GAEzC,GAAI1C,EAASr6H,GACX,OAAO88H,EAAiBA,EAAepiH,KAAK1a,GAAS,GAEvD,IAAIwN,EAAUxN,EAAQ,GACtB,MAAkB,KAAVwN,GAAkB,EAAIxN,IAAU,IAAa,KAAOwN,CAC9D,C,+BCjCA,IAAI8c,EAAW,EAAQ,OACnBmvW,EAA8B,EAAQ,OAI1C19R,EAAOj9F,QAAU,SAAUq2B,EAAGlrB,GACxBqgB,EAASrgB,IAAY,UAAWA,GAClCwvX,EAA4BtkW,EAAG,QAASlrB,EAAQq0R,MAEpD,C,+BCTA,IAAItkK,EAAU,EAAQ,OAClBt9B,EAAa,EAAQ,OACrBq+hB,EAAuB,EAAQ,OAE/B6wX,EAAS,qBACT7hzB,EAAQhuG,EAAOj9F,QAAU49F,EAAWkv5B,IAAW7wX,EAAqB6wX,EAAQ,CAAC,IAEhF7hzB,EAAMh1D,WAAag1D,EAAMh1D,SAAW,KAAK5mI,KAAK,CAC7C+wE,QAAS,SACT16C,KAAMw1F,EAAU,OAAS,SACzB6x3B,UAAW,4CACXC,QAAS,2DACTlg+B,OAAQ,uC,yBCXV,IAAIqhP,EAAU9oQ,OACV+2V,EAAavgV,UAEjBohF,EAAOj9F,QAAU,WAChB,GAAY,MAARub,MAAgBA,OAAS4yP,EAAQ5yP,MACpC,MAAM,IAAI6gV,EAAW,sDAEtB,IAAI1tV,EAAS,GAmBb,OAlBI6M,KAAK+gH,SACR5tH,GAAU,KAEP6M,KAAKs55B,aACRnm6B,GAAU,KAEP6M,KAAKiiM,YACR9uM,GAAU,KAEP6M,KAAK8gV,SACR3tV,GAAU,KAEP6M,KAAKg9gB,UACR7phB,GAAU,KAEP6M,KAAKs3T,SACRnkU,GAAU,KAEJA,CACR,C,+BC5BA,IAAI2sH,EAAS,EAAQ,OACjBlqF,EAAU,EAAQ,OAClB878B,EAAiC,EAAQ,OACzClxX,EAAuB,EAAQ,OAEnC9+hB,EAAOj9F,QAAU,SAAUsJ,EAAQwjB,EAAQog+B,GAIzC,IAHA,IAAItn/B,EAAOurC,EAAQrkB,GACfjP,EAAiBk+mB,EAAqB9+mB,EACtC6zB,EAA2Bm88B,EAA+Bhw+B,EACrDrc,EAAI,EAAGA,EAAIgF,EAAK+J,OAAQ/O,IAAK,CACpC,IAAImF,EAAMH,EAAKhF,GACVy6H,EAAO/xH,EAAQvD,IAAUmn/B,GAAc7x3B,EAAO6x3B,EAAYnn/B,IAC7D8X,EAAevU,EAAQvD,EAAK+qC,EAAyBhkB,EAAQ/mB,GAEjE,CACF,C,qCCfA,IACQsV,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEA4C,EAAe,EAAQ,OACvBI,EAAK,EAAQ,OAAegkV,EAAiBhkV,EAAGgkV,eAAgBrF,EAAc3+U,EAAG2+U,YACjF98U,EAAoB,2BACpBlC,EAAM,EAAQ,OACdY,EAAa,EAObumP,EAAuB,SAAUtmP,GAQjC,SAASsmP,EAAMvsP,EAAI+O,EAAMld,GACrB,IAAIsU,EACJtU,EAAU9F,OAAOC,OAAO,CACpBwJ,KAAMwK,EACN9X,IAAK,KACLwhW,SAAUpiV,GACXzV,GACHsU,EAAQF,EAAO3D,KAAKL,OAASA,KAC7B,IAAIzM,EAAOgN,OAAO3Q,EAAQ2D,MACtBghb,EAAY/sF,EAAe53V,EAAQ63V,UACnCxhW,EAAM2J,EAAQ3J,IACZ2J,EAAQ3J,IAAImyN,UAAU,QAASl0M,GAC/B,IAAIf,EAAI,QAASe,EAAOqwa,EAAW3kb,EAAQ4kb,YAiBjD,OAhBA1qb,OAAO0hC,iBAAiBtnB,EAAO,CAC3BsB,YAAa,CACT7f,QAASoe,GAEbqB,KAAM,CACFzf,MAAOM,GAEX6mB,KAAM,CACF4e,YAAY,EACZ/lC,MAAOmnB,GAEXvZ,KAAM,CACFm4B,YAAY,EACZ/lC,MAAO4N,KAGR2Q,CACX,CAIA,OAzCAnE,EAAUuqP,EAAOtmP,GAsCjBsmP,EAAMlqP,UAAUy9M,OAAS,WACrB,OAAOskI,EAAYniV,KACvB,EACOsqP,CACX,CA3C0B,CA2CxBlnP,GAuCFs+E,EAAOj9F,QAAU6lQ,C,kBC7GjB,IAAItqI,EAAW,EAAQ,OAoBvBt+B,EAAOj9F,QARP,SAAekB,GACb,GAAoB,iBAATA,GAAqBq6H,EAASr6H,GACvC,OAAOA,EAET,IAAIwN,EAAUxN,EAAQ,GACtB,MAAkB,KAAVwN,GAAkB,EAAIxN,IAAU,IAAa,KAAOwN,CAC9D,C,yBCPQ,SAAWtS,GAAU,aAIzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIljF,EAAS,CACTr7C,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACy/C,EAAS,QAASA,EAAS,UAChCrpB,EAAG,CAAC,aAAc,eAClBn2B,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACu/C,EAAS,UAAWA,EAAS,YAClCt/C,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACq/C,EAAS,SAAUA,EAAS,YAErC,OAAOw+E,EAAgBjjF,EAAOh0C,GAAK,GAAKg0C,EAAOh0C,GAAK,EACxD,CAES3J,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,6DAA6DD,MAAM,KACvEghI,kBAAkB,EAClB9gI,SACI,8DAA8DF,MAC1D,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJC,EAAGq+H,EACHp+H,GAAI,aACJC,EAAGm+H,EACHl+H,GAAI,aACJC,EAAGi+H,EACHh+H,GAAIg+H,EACJ5nG,EAAG4nG,EACHq3B,GAAI,YACJp1J,EAAG+9H,EACH99H,GAAI89H,EACJ79H,EAAG69H,EACH59H,GAAI49H,GAERt9H,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhFyCC,CAAQ,EAAQ,O,+BCP1D,IAAIm3D,EAAO,EAAQ,OACf2kD,EAAc,EAAQ,OACtB4gB,EAAgB,EAAQ,OACxB5N,EAAW,EAAQ,OACnB6sZ,EAAgB,EAAQ,OACxBh/Y,EAAoB,EAAQ,OAC5B65hB,EAAe,EAAQ,MACvB88N,EAA8B,EAAQ,OAEtC3wnB,EAAS5yP,MACTR,EAAOusG,EAAY,GAAGvsG,MAE1B4tF,EAAOj9F,QAAU,SAAUkuY,EAAOzuR,EAAYoyG,EAAMs7xB,GAQlD,IAPA,IAMIjq4B,EAAan9G,EAAK7E,EANlBm1B,EAAIu4F,EAASs/Q,GACbrwS,EAAO2+B,EAAcnmG,GACrBymG,EAAgB7lE,EAAKwoD,EAAYoyG,GACjCvoN,EAASgtpB,EAAa,MACtB3mpB,EAAS8sH,EAAkB5+B,GAC3B9rF,EAAQ,EAENpC,EAASoC,EAAOA,IACpB7Q,EAAQ28F,EAAK9rF,IACbhM,EAAM01gB,EAAc3+Y,EAAc57H,EAAO6Q,EAAOskB,OAGrC/sB,EAAQ+F,EAAK/F,EAAOvD,GAAM7E,GAChCoI,EAAOvD,GAAO,CAAC7E,GAGtB,GAAIis/B,IACFjq4B,EAAciq4B,EAAoB929B,MACdosO,EAClB,IAAK18P,KAAOuD,EAAQA,EAAOvD,GAAOqt3B,EAA4BlwwB,EAAa55G,EAAOvD,IAEpF,OAAOuD,CACX,C,cC/BA,SAAUmoI,GACV,aAEA,IAAI272B,EAAc1q/B,OAAO0q/B,cAAgB1q/B,OAAO0q/B,YAAc,CAAC,GAgc/D,SAASxqpB,EAAa9zV,GACpB,IAAItQ,EAAIsQ,EAAKuH,MAAM,GACnB,OAAI,MAAO7X,GAAiCA,EAAEmR,OAAS,EAC9CnR,EAAEkmG,UAAU,EAAG,GAAG/gG,cAAgBnF,EAAEkmG,UAAU,GAG9ClmG,CAEX,CAvcA4u/B,EAAYC,mBAAqB,EACjCD,EAAYE,iBAAmB,SAAUC,EAAYvu8B,EAAOwu8B,EAAeC,EAAYC,GAChFA,GAAaN,EAAYC,qBACzBI,IAAcA,EAAaD,EAAeA,OAAgBn7+B,IAC1DhN,OAAOsW,UAAUxU,eAAeyU,KAAKlZ,OAAQ6q/B,SAAkCl7+B,IAAlBm7+B,QAAqEn7+B,IAAtC3P,OAAO6q/B,GAAYC,GAClHxq+B,WAAW,WAAcoq+B,EAAYE,iBAAiBC,EAAYvu8B,EAAOwu8B,EAAeC,GAAY,EAAO,EAAGzu8B,IAG9Gou8B,EAAYC,qBACZI,EAAW/q/B,OAAO6q/B,IAEtB,EAMA972B,EAAQx0C,OAAO,cAAe,IAC7BilC,SAAS,aAKV,WACE,IAAIwsD,EAAKnzK,KAELghN,EAAW,CACboxxB,aAAc,CACZC,oBAAoB,EACpBC,uBAAuB,EACvBC,mBAAmB,EACnBC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdpuX,SAAU,GACVquX,eAAgB,GAChBC,qBAAsB,GACtBC,qBAAsB,IAExBC,cAAe,CAAC,EAChBC,iBAAkB,IAClBC,iBAAiB,EACjBC,QAAQ,EACRC,eAAe,GAIbC,EAAgB,CAClB,YACA,aACA,iBACA,mBACA,WACA,cACA,oBACA,wBACA,qBACA,yBACA,oBACA,cACA,gBAGE5m9B,EAAQ,CAAC,EACTwmhB,EAAW,CAAC,EACZqgc,EAAiB,CAAC,EAatB,SAASC,EAAetikB,EAAaj8a,EAAIlF,GAMvC,OALImjjB,EAAShiI,KACXgiI,EAAShiI,GAAe,IAE1BgiI,EAAShiI,GAAaj9a,KAAKgB,GAC3Bs++B,EAAet++B,GAAMlF,EACd,WACL,IAAIoQ,KAAKghN,SAASiyxB,OAAQ,CACxB,IAAIjuuB,EAAc1wQ,MAAM8L,UAAUtF,MAAMgG,MAAM3M,WAC9C,OAAO6L,KAAK4lH,QAAQ,CAAC,KAAMsQ,EAAQx6E,KAAK17C,KAAM,SAASmiH,GACrD,OAAOA,EAAGr8E,IAAIitgB,EAAShiI,GAAah+a,IAAI,SAASo5+B,GAE/C,IADciH,EAAejH,IAAc,CAAC,GAChCtm5B,MAAO,CACjB,IAAIykB,EAAW6X,EAAGjZ,QACdikb,EAAcj3Z,EAAQ5kC,KAAK0zK,GAG/B,OAFAmoR,EAAYh2c,QAAQmzB,EAAS1zG,SAC7Bu1+B,EAAUrr+B,MAAMd,KAAMmthB,GACf7ib,EAAS+X,OAClB,CACE,OAAOF,EAAGC,KAAK+p3B,EAAUrr+B,MAAMd,KAAMglQ,GAEzC,EAAGhlQ,MACL,IACF,CACF,CACF,CAGA,IAAI4wrB,EAAM,CACR5ve,SAAUA,EAIZ4ve,UAAgB,SAASqiT,GACvBjz+B,KAAKghN,SAASiyxB,OAASA,EACvBK,GACF,EAEA1iT,UAAgB,WACd,OAAO5wrB,KAAKghN,SAASiyxB,MACvB,GAcIts3B,EAAW,CACb/iB,KAAM,CAAC,YAAa,SAASuiB,GAC3B,OAAOot3B,EAAgBpt3B,EACzB,GACAyqkB,IAAKA,EACL5ve,SAAUA,EACVwyxB,iBAAkB,SAAU7t/B,GAASqa,KAAKghN,SAASoxxB,aAAaE,sBAAwB3s/B,CAAO,EAC/F8s/B,YAAa,SAAU9s/B,GAASqa,KAAKghN,SAASoxxB,aAAaK,YAAc9s/B,CAAO,EAChF6s/B,YAAa,SAAU7s/B,GAASqa,KAAKghN,SAASoxxB,aAAaI,YAAc7s/B,CAAO,EAChF8t/B,cAAe,SAASv96B,GAAUl2D,KAAKghN,SAASoxxB,aAAaO,eAAiBz86B,CAAQ,EACtFw96B,mBAAoB,SAASrp/B,GAAQ2V,KAAKghN,SAASoxxB,aAAaQ,qBAAuBvo/B,CAAM,EAC7Fsp/B,mBAAoB,SAAStp/B,GAAQ2V,KAAKghN,SAASoxxB,aAAaS,qBAAuBxo/B,CAAM,EAC7Fup/B,cAAe,SAAUju/B,GAASqa,KAAKghN,SAASoxxB,aAAaC,mBAAqB1s/B,CAAO,EACzFku/B,SAAU,SAAUlu/B,GAClBqa,KAAKghN,SAASoxxB,aAAa9tX,SAAW,EAAUpuf,EAAQ5vI,QAAQmC,UAAUoS,KAAK,QAAQ08P,KAAK,QAAU,EACxG,EACAu8uB,aAAc,SAAUnu/B,GAASqa,KAAKghN,SAASoxxB,aAAaM,aAAe/s/B,CAAO,EAClFqt/B,gBAAiB,SAAUrt/B,GAASqa,KAAKghN,SAASgyxB,gBAAkBrt/B,CAAO,EAC3Eut/B,cAAe,SAASvt/B,GAASqa,KAAKghN,SAASkyxB,cAAgBvt/B,CAAO,GAyBxE,IAAI4t/B,EAAkB,SAASl92B,GAC7B,OAAOH,EAAQlzB,OAAO4tlB,EAAK,CACzB,QAAWv6jB,EAASivG,QAExB,EAGA,SAASyuwB,EAA+BhjkB,GACtC,IAAIijkB,EAAe,WAAsBjjkB,EAd1Bhtb,QAAQ,KAAM,SAAUC,GACjC,OAAOA,EAAM2uB,aACjB,GAaFg0G,EAASqt3B,GAAgB,SAASl/+B,EAAIlF,IA9BxC,SAAkBmhb,EAAaj8a,EAAIlF,GAEjC,IAAIoxN,EAASkyxB,cAAb,CAGAtiT,EAAI7/Q,GAAesikB,EAAetikB,EAAaj8a,EAAIlF,GACnD,IAAIqk/B,EAAkBjzxB,EAAS+vN,GAC3BmjkB,EAAe,EAAoBD,EAAgBlB,iBAAmB,KACtEtv8B,EAA0B,OAAjByw8B,EAAyBA,EAAelzxB,EAAS+xxB,iBAC9D782B,EAAQlkI,QAAQu6B,EAAMwkZ,GAAc,SAAU18a,EAAMmC,IAvCtD,SAAmB1B,EAAI2uC,GAClBA,EACDh8B,WAAW3S,EAAI2uC,GAEf3uC,GAEJ,CAkCIq9+B,CAAU,WAAcr9+B,EAAGgM,MAAMd,KAAM3L,EAAO,EAAGmC,EAAQitC,EAC3D,EAPA,CAQF,CAmBIqyB,CAASi7W,EAAaj8a,EAAIlF,EAC5B,EACAghsB,EAAI7/Q,GAAesikB,EAAetikB,EAvHpC,SAAyBA,GACvB,OAAO,WACF8gkB,EAAYC,qBACTvl9B,EAAMwkZ,KAAexkZ,EAAMwkZ,GAAe,IAC9CxkZ,EAAMwkZ,GAAaj9a,KAAKK,WAE5B,CACF,CAgHiDgg/B,CAAgBpjkB,GACjE,CAEA,SAASqjkB,EAAiBC,EAAWC,EAAgBC,GAGnD,IAAK,IAAI/p/B,KAFT0rI,EAAQlkI,QAAQsi/B,EAAgBC,GAEhBF,EACdlh0B,EAAG3oL,GAAO6p/B,EAAU7p/B,EAExB,CAGA,IAAI8o/B,EAAkB,WACpBc,EAAiBzt3B,EAAUws3B,EAAeY,EAC5C,EAGAK,EAAiBzt3B,EAAUws3B,EAAeY,EAE5C,GA3LCpu3B,IAAI,CAAC,aAAc,UAAW,aAAc,YA6L7C,SAAuBO,EAAY2J,EAAS2k3B,EAAYru3B,GAsBtD,SAASsu3B,EAAkBhn5B,EAAKin5B,EAAcC,GAC5C,GAAI,KAAKzy/B,KAAKurG,IAAQin5B,EAAatg/B,OAAS,EAAG,CAM7C,IALA,IAAIwg/B,EAASnn5B,EAAIvsG,MAAM,KACnB2z/B,EAAUD,EAAO,GACjB/1xB,EAAQ+1xB,EAAO,GAAG1z/B,MAAM,KACxB4z/B,EAAe,GAEVzv/B,EAAI,EAAGA,EAAIqv/B,EAAatg/B,OAAQ/O,IAEvC,IADA,IAAI0v/B,EAAYL,EAAarv/B,GACpB2gC,EAAI,EAAGA,EAAI64L,EAAMzqN,OAAQ4xB,KAC3B+u9B,aAAqBjj9B,QAAUij9B,EAAU7y/B,KAAK28N,EAAM74L,KAAQ64L,EAAM74L,GAAGz9B,QAAQws/B,IAAc,IAAGD,EAAahh/B,KAAK+qN,EAAM74L,IAI/H,IAAIgv9B,EAA+B,SAAZL,EAAsBG,EAxBjD,SAAyB7j+B,EAAI0kU,GAE3B,IADA,IAAIxiV,EAAS,GACJ9N,EAAI,EAAGA,EAAI4rB,EAAG7c,OAAQ/O,KACF,IAAvBswV,EAAGptV,QAAQ0oB,EAAG5rB,KAChB8N,EAAOW,KAAKmd,EAAG5rB,IAGnB,OAAO8N,CACT,CAgBgE4oT,CAAgBl9F,EAAMi2xB,GAClF,OAAGE,EAAgB5g/B,OAAS,EACnByg/B,EAAU,IAAMG,EAAgB92+B,KAAK,KAErC22+B,CAEX,CACE,OAAOpn5B,CAEX,CAUA,SAASwn5B,EAAUxn5B,EAAK+/B,IArDxB,SAA8B//B,GAC5B,IAAK,IAAIpoG,EAAI,EAAGA,EAAImv/B,EAAWxzxB,SAASoxxB,aAAaO,eAAev++B,OAAQ/O,IAAK,CAC/E,IAAI6v/B,EAAgBV,EAAWxzxB,SAASoxxB,aAAaO,eAAett/B,GACpE,GAAK6v/B,aAAyBpj9B,QAAUoj9B,EAAchz/B,KAAKurG,IAASA,EAAIllG,QAAQ2s/B,IAAkB,EAChG,OAAO,CAEX,CACA,OAAO,CACT,EA8COC,CAAqB1n5B,KAExBA,EAPJ,SAA8BA,GAC5B,OAAOgn5B,EAAkBhn5B,EAAK+m5B,EAAWxzxB,SAASoxxB,aAAaS,qBAAsB,QACvF,CAKUuC,CADN3n5B,EAVJ,SAA8BA,GAC5B,OAAOgn5B,EAAkBhn5B,EAAK+m5B,EAAWxzxB,SAASoxxB,aAAaQ,qBAAsB,QACvF,CAQUyC,CAAqB5n5B,IAE3B+m5B,EAAWS,UAAUxn5B,EAAK+/B,GAE9B,CAEIgn3B,EAAWxzxB,SAASoxxB,aAAaC,oBACnCls3B,EAAUm/G,OAAO,CAAC,YAAa,SAAU93G,GAEvC,IAAI8n3B,GAAmB,EACvB,GAAInv3B,EAAUxyH,IAAI,UAAW,CAC1B,IAAI4h/B,EAASpv3B,EAAUtyH,IAAI,UAC3B,GAAI0h/B,EACH,IAAK,IAAIrq9B,KAASqq9B,EAAOr/6B,OAAQ,CAC/Bo/6B,GAAmB,EACnB,KACF,MACqB,OAAXC,IACVD,GAAmB,EAEvB,MAAO,GAAInv3B,EAAUxyH,IAAI,UAAW,CAClC,IAAIg6H,EAASxH,EAAUtyH,IAAI,UAC3B,IAAK,IAAIlE,KAASg+H,EAAO95H,MAAO,CAC9Byh/B,GAAmB,EACnB,KACF,CACF,CACIA,IACEd,EAAWxzxB,SAASoxxB,aAAaM,eACnC8B,EAAWxzxB,SAASoxxB,aAAa9tX,SAAWz0f,EAAQ5mC,SAASwhC,UAE3D+p3B,EAAWxzxB,SAASoxxB,aAAaG,kBAEnC0C,EADUT,EAAWxzxB,SAASoxxB,aAAa9tX,SAAW92f,EAAU//B,MACjD+/B,GAEfyn3B,EAAUzn3B,EAAUujK,SAAUvjK,GAGpC,IAGEgn3B,EAAWxzxB,SAASoxxB,aAAaE,uBACnCns3B,EAAUm/G,OAAO,CAAC,YAAa,SAAU93G,GACnCgn3B,EAAWxzxB,SAASoxxB,aAAaM,eAEnC8B,EAAWxzxB,SAASoxxB,aAAa9tX,SAAWz0f,EAAQ5mC,SAASwhC,SAAW,KAE1E,IAAI6q3B,GAAmB,EAEvB,GAAId,EAAWxzxB,SAASoxxB,aAAaI,aAC/Brs3B,EAAUxyH,IAAI,UAAW,CAC3B,IAAI4h/B,EAASpv3B,EAAUtyH,IAAI,UAC3B,GAAI0h/B,EACF,IAAK,IAAIrq9B,KAASqq9B,EAAOr/6B,OAAQ,CAC/Bo/6B,GAAmB,EACnB,KACF,MACoB,OAAXC,IACTD,GAAmB,GAErBpv3B,EAAWM,IAAI,sBAAuB,SAAUr6G,EAAOtW,GACjDA,IAAYA,EAAQ2/+B,SAAS3/+B,GAASi8kB,YAE1Cmja,EADUT,EAAWxzxB,SAASoxxB,aAAa9tX,SAAW92f,EAAU//B,MACjD+/B,EACjB,EACF,CAGEgn3B,EAAWxzxB,SAASoxxB,aAAaK,cAC/Bts3B,EAAUxyH,IAAI,YAAcwyH,EAAUxyH,IAAI,kBAC5C2h/B,GAAmB,EACnBpv3B,EAAWM,IAAI,sBAAuB,SAAUr6G,EAAOtW,GAErDo/+B,EADUT,EAAWxzxB,SAASoxxB,aAAa9tX,SAAW92f,EAAU//B,MACjD+/B,EACjB,IAEErH,EAAUxyH,IAAI,WAAawyH,EAAUxyH,IAAI,kBAC3C2h/B,GAAmB,EACnBnv3B,EAAUm/G,OAAO,CAAC,eAAgB,SAASi+S,GACzCA,EAAazwN,UAAU,CAAC,EAAG,SAAS2irB,GACVA,EAAa7l/B,UAGfwoE,QAEpB686B,EADUT,EAAWxzxB,SAASoxxB,aAAa9tX,SAAW92f,EAAU//B,MACjD+/B,EAEnB,EACF,MAIE8n3B,GACFpv3B,EAAWM,IAAI,yBAA0B,SAAUr6G,EAAOtW,GACpDA,IAAYA,EAAQ2/+B,SAAW3/+B,GAASi8kB,aACxC0ia,EAAWxzxB,SAASoxxB,aAAaG,kBAEnC0C,EADUT,EAAWxzxB,SAASoxxB,aAAa9tX,SAAW92f,EAAU//B,MACjD+/B,GAEfyn3B,EAAUzn3B,EAAUujK,SAAUvjK,GAElC,EAEN,IAEEgn3B,EAAWxzxB,SAASkyxB,eACtBh92B,EAAQlkI,QAAQwi/B,EAAY,SAASj9uB,EAAMhkQ,GACrB,mBAATgkQ,IACTi9uB,EAAWjh/B,GAAQ,WAAW,EAElC,EAEJ,IArWCqzH,UAAU,cAAe,CAAC,aAuW3B,SAAqB4t3B,GACnB,MAAO,CACL1/2B,SAAU,IACV1L,KAAM,SAAUg1J,EAAQrM,EAAUC,GAChC,IAAI1tB,EAAY0tB,EAAO0juB,aAAe,QAClC92nB,EAAe,CAAC,EAEpB1oP,EAAQlkI,QAAQggR,EAAO0B,MAAO,SAASnc,EAAMhkQ,IAyDnD,SAAoBA,GAClB,MAA6B,cAAtBA,EAAK4+G,OAAO,EAAG,KAAoG,IAA9E,CAAC,KAAM,QAAS,KAAM,aAAc,aAAa5pH,QAAQgL,EAAK4+G,OAAO,GACnH,EA1DYygR,CAAWr/X,KACbqrX,EAAav3B,EAAa9zV,IAASy+Q,EAAOz+Q,GAC1Cy+Q,EAAOxjJ,SAASj7H,EAAM,SAAS5N,GAC7Bi5X,EAAav3B,EAAa9zV,IAAS5N,CACrC,GAEJ,GAEAuwI,EAAQ5vI,QAAQyrR,EAAS,IAAIr2N,KAAK4oM,EAAW,SAAUo5C,GACrD,IA0CgBp3S,EA1CZyuG,EAAYi9K,EAAO2juB,iBAgC/B,SAAmBrv/B,GACjB,MAAO,CAAC,KAAK,UAAU,gBAAgB,gBAAgB,eAAe,gBAAgBiC,QACpFjC,EAAQ0qH,QAAQ5oH,cAAc,KAAK9B,EAAQ0pB,MAAM,MAAQ,CAC7D,CAQM4l+B,CADkBtv/B,EA1CwCyrR,EAAS,IA2CxCzrR,EAAQg8kB,WAAah8kB,EAAQX,MACrDW,EAAQyX,IAAMzX,EAAQiN,MAAQjN,EAAQ0qH,SA3CvC4tQ,EAAat6H,UAAYo5C,EAAO1tR,KAE7BgiQ,EAAO6juB,cACHz3tB,EAAO9vJ,MAAM0jJ,EAAO6juB,eAMxB7juB,EAAO8juB,qBACR5/2B,EAAQlzB,OAAO47Q,EAAcxgG,EAAO9vJ,MAAM0jJ,EAAO8juB,sBAEnDtB,EAAWuB,WAAWhh5B,EAAW6pR,GACnC,EACF,EAEJ,IAxYC7/W,OAAO,CAAC,WA0YT,SAAwBm8P,GACtBA,EAASnjJ,UAAU,oBAAqB,CAAC,YAAa,YAAa,SAAUovJ,EAAWhhJ,GACtF,OAAO,SAAUl8G,EAAOg6Q,GACtB,IAAI9wR,EAASg0Q,EAAUl9P,EAAOg6Q,GAC1BuwtB,EAAaru3B,EAAUtyH,IAAI,cAI/B,OAHI2g/B,EAAWxzxB,SAASgyxB,iBACtBwB,EAAWwB,eAAe/r+B,EAAOg6Q,GAE5B9wR,CACT,CACF,GACF,GA8BC,CA5cD,CA4cG+iI,Q,YC9bHx0C,EAAOj9F,QAVP,SAAmBoc,EAAG++M,GAIpB,IAHA,IAAIppN,GAAS,EACTrD,EAASmB,MAAMuM,KAEVrK,EAAQqK,GACf1N,EAAOqD,GAASopN,EAASppN,GAE3B,OAAOrD,CACT,C,+BChBA,IAAIkvF,EAAa,EAAQ,OACrB75C,EAAS,EAAQ,OACjBs3E,EAAS,EAAQ,OACjBjwG,EAAM,EAAQ,OACdgsN,EAAgB,EAAQ,MACxB82B,EAAoB,EAAQ,MAE5BnuQ,EAAS69F,EAAW79F,OACpByx/B,EAAwBzt8B,EAAO,OAC/B0t8B,EAAwBvjvB,EAAoBnuQ,EAAY,KAAKA,EAASA,GAAUA,EAAO2x/B,eAAiBtm+B,EAE5G6xE,EAAOj9F,QAAU,SAAU8O,GAKvB,OAJGusH,EAAOm23B,EAAuB1i/B,KACjC0i/B,EAAsB1i/B,GAAQsoO,GAAiB/7G,EAAOt7H,EAAQ+O,GAC1D/O,EAAO+O,GACP2i/B,EAAsB,UAAY3i/B,IAC/B0i/B,EAAsB1i/B,EACjC,C,wGCdI6i/B,EAAgB,IAAIxw5B,WAAW,GAC/B8viB,EAAe,WACfD,EAAa3jmB,OACjB,8GAIsC,KA8BlCuk9B,EAAY,CAAC,EACbC,EAAY,UAEZj3xB,EAAS,SAAgB70N,GAC3B,GAAIA,UAAsCA,EAAI4J,OAC5C,MAAO,GAGT,GAAmB,iBAAR5J,EACT,MAAM,IAAI+c,MAAM,6BA9BD,IAAsBzjB,EACnCqP,EAuDJ,OAvBsB,MAAlBkj/B,EAAU7r/B,KAcRA,EAAIkmB,SAAS,MAEf2l+B,EAAU7r/B,GAAOA,EAAItJ,MAAMo1/B,GAAWrl/B,OAAOg2F,SAG7Cov5B,EAAU7r/B,IAnDV2I,EAAS,IAD0BrP,EAoDL0G,GAjDvBo7F,WAAW,KAAOww5B,GAC3Bjj/B,EAAOW,KAAK,IAGdhQ,EAAOC,QAAQ0xoB,EAAY,SAAUzxoB,EAAO46P,EAAYm2C,EAAO4gW,GAC7D,IAAInroB,EAAMxG,EAEN+wS,EACFvqS,EAAMmroB,EAAU5xoB,QAAQ2xoB,EAAc,MAC7B92Y,IACTp0P,EAAMo0P,EAAW5gP,QAGnB7K,EAAOW,KAAKtJ,EACd,GACO2I,IAsCAkj/B,EAAU7r/B,EACnB,EAIIqpZ,EAAQ,SAAelkZ,EAAO4m/B,GAKhC,IAHA,IAAI1t6B,EAAOw2I,EAAOk3xB,GACd1g/B,EAAUlG,EAELtK,EAAI,EAAGA,EAAIwjF,EAAKz0E,OAAQ/O,IAAK,CACpC,IAAImF,EAAMq+E,EAAKxjF,GAEf,GAAIwQ,SAAgE,iBAAZA,GAAwBvB,MAAMyb,QAAQla,IAAY9P,MAAMyE,GAC9G,OAGFqL,EAAUA,EAAQrL,EACpB,CAEA,OAAOqL,CACT,EAEA,SAASikH,EAAeniD,GAAO,IAAIntE,EAEnC,SAAsBvI,GAAe,GAAqB,iBAAVA,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI83H,EAAO93H,EAAMuC,OAAOw1H,aAAc,QAAaljH,IAATijH,EAAoB,CAAE,IAAI31E,EAAM21E,EAAK15G,KAAKpe,EAAOg4H,UAAoB,GAAmB,iBAAR71E,EAAkB,OAAOA,EAAK,MAAM,IAAI9jC,UAAU,+CAAiD,CAAE,OAA4BC,OAAiBte,EAAQ,CAF/Ui4H,CAAaviD,GAAgB,MAAsB,iBAARntE,EAAmBA,EAAM+V,OAAO/V,EAAM,CAI1H,IAAIgs/B,EAAgB,SAASA,EAAc3g/B,EAASW,EAAOqyE,EAAMljF,EAAO8w/B,GACtE,GAAIjg/B,GAASqyE,EAAKz0E,OAEhB,OAAOzO,EAGT,IAAI6E,EAAMq+E,EAAKryE,GAEf,GAAIzQ,MAAMyE,GAAM,CACd,IAAIqmb,EAGJ,GAAIh7a,QAA2C,CAC7C,IAAIzK,EAGAm4rB,EAAWizT,OAAc1/+B,EAAWN,EAAQ,EAAGqyE,EAAMljF,EAAO8w/B,GAGhE,YAAoB3/+B,IAAbysrB,OAAyBzsrB,IAAa1L,EAAO,CAAC,GAAQZ,GAAO+4rB,EAAUn4rB,EAChF,CAEA,GAAIkJ,MAAMyb,QAAQla,GAChB,MAAM,IAAI0R,MAAM,iDAIlB,IAAIk3U,EAAU+3pB,EAAc3g/B,EAAQrL,GAAMgM,EAAQ,EAAGqyE,EAAMljF,EAAO8w/B,GAElE,QAAgB3/+B,IAAZ2nV,EAAuB,CACzB,IAAIi4pB,EAAU5s/B,OAAOO,KAAKwL,GAASzB,OAEnC,QAAqB0C,IAAjBjB,EAAQrL,IAAkC,IAAZks/B,EAEhC,OAGF,YAAqB5/+B,IAAjBjB,EAAQrL,IAAsBks/B,GAAW,EAEtC3w/B,MAAM8iF,EAAKryE,EAAQ,KAAQig/B,OAI9B,EAFO,CAAC,GAMZ5g/B,EAAQrL,IACS,OAA8BqL,EAAS,CAACrL,GAAKuI,IAAI+mH,IAGpE,CAGA,OAAO,OAAS,CAAC,EAAGjkH,IAAUg7a,EAAY,CAAC,GAAarmb,GAAOi0V,EAASoyF,GAC1E,CAGA,IAAI8lkB,EAAaxm+B,OAAO3lB,GAExB,GAAIqL,QAA2C,CAE7C,IAAI+g/B,EAAWJ,OAAc1/+B,EAAWN,EAAQ,EAAGqyE,EAAMljF,EAAO8w/B,GAGhE,QAAiB3/+B,IAAb8/+B,EACF,OAIF,IAAIrnmB,EAAS,GAEb,OADAA,EAAOonmB,GAAcC,EACdrnmB,CACT,CAEA,IAAKj7Y,MAAMyb,QAAQla,GACjB,MAAM,IAAI0R,MAAM,8CAIlB,IACIpU,EAASqj/B,EADO3g/B,EAAQ8g/B,GACcng/B,EAAQ,EAAGqyE,EAAMljF,EAAO8w/B,GAE9Dpi+B,EAAQ,GAAGrmB,OAAO6H,GAEtB,GAAI4g/B,QAA4B3/+B,IAAX3D,GAGnB,GAFAkhB,EAAM0Y,OAAO4p9B,EAAY,GAEJ,IAAjBti+B,EAAMjgB,OACR,YAGFigB,EAAMsi+B,GAAcxj/B,EAGtB,OAAOkhB,CACT,EAEIm8X,EAAQ,SAAe7gZ,EAAOnF,EAAK7E,EAAO8w/B,GAK5C,QAJsB,IAAlBA,IACFA,GAAgB,GAGd9m/B,QACF,MAAM,IAAI4X,MAAM,4BAA8BhH,OAAO5Q,GAAS,UAGhE,GAAInF,QACF,MAAM,IAAI+c,MAAM,4BAA8BhH,OAAO/V,GAAO,QAK9D,OAAOgs/B,EAAc7m/B,EAAO,EAAG0vN,EAAO70N,GAAM7E,EAAO8w/B,EACrD,EAEII,EAAa,wBACbC,EAAc,yBAOlB,SAASC,EAAkBC,EAAW7m1B,GACpC,IAAI8wE,EAAS+1wB,EAAU/1wB,OACnBg2wB,EAAgBD,EAAUC,cAC1BC,EAAsBF,EAAUE,oBAChCC,EAAeH,EAAUG,aACzBC,EAAeJ,EAAUI,aACzBC,EAAkBL,EAAUK,gBAC5BC,EAAaN,EAAUM,WACvB1u9B,EAASou9B,EAAUpu9B,OACnBmb,EAASosH,EAAMpsH,OACfgtD,EAAOo/D,EAAMp/D,KACbztC,EAAS6sG,EAAM7sG,OACfvtD,EAAOo6J,EAAMp6J,KACbi7F,EAAQm/D,EAAMn/D,MACdgxlB,EAAW7xhB,EAAM6xhB,SACjBu1T,EAA0Bpn1B,EAAMon1B,wBAChChk/B,EAAO48J,EAAM58J,KACbik/B,EAAUrn1B,EAAMqn1B,QAChBC,EAAatn1B,EAAMsn1B,WACnBxk/B,EAAUk9J,EAAMl9J,QAChBtN,EAAQkuZ,EAAMjrX,EAAQr1B,GACtB0W,EAAQ4pY,EAAM5yK,EAAQ1tO,GAEtB0W,GAASA,EAAM6s+B,KACjB7s+B,EAAQA,EAAM6s+B,IAGhB,IAAIY,EAAcP,GAAgBtjmB,EAAMsjmB,EAAc5j/B,GAClDkuC,EAAUw18B,GAAiBpjmB,EAAMojmB,EAAe1j/B,GAChDok/B,EAAWxn1B,EAAMq4C,QAAQ/mK,EAAS97C,GAElC8gC,GAASxc,IAAUyt+B,EACvB,MAAO,CACL3z8B,OAAQA,EACRgtD,KAAMA,EACNztC,OAAQA,EACRvtD,KAAMA,EACNwqS,OAAQo3sB,EACRC,wBAR4BV,GAAwB/m1B,EAAMq4C,QAAQqrM,EAAMqjmB,EAAqB3j/B,GAAO5N,IASpGskB,MAAOA,EACP+mF,MAAOA,EACPvvD,QAASA,EACTs/R,SAAUt6S,EACVryB,OAAQE,MAAMyb,QAAQpqB,GAASA,EAAMyO,YAAS0C,EAC9CkrrB,SAAUA,EACVu1T,wBAAyBA,EACzBhk/B,KAAMA,EACNok/B,SAAUA,EACVD,YAAaA,EACbN,aAAcA,EACdC,gBAAiBA,EACjBC,WAAYA,EACZE,QAASA,EACT/w9B,MAAOA,EACP9gC,MAAOA,EACPsN,QAASA,EACTwk/B,WAAYA,EAEhB,CAGA,IAAII,EAAyB,CAAC,SAAU,OAAQ,QAAS,uBAAwB,QAAS,UAAW,UAAW,SAAU,WAAY,0BAA2B,WAAY,cAAe,eAAgB,kBAAmB,aAAc,UAAW,QAAS,QAAS,UAAW,cAGjRl7G,EAAe,SAAsB/i4B,EAAGC,GAC1C,GAAID,IAAMC,EACR,OAAO,EAGT,GAAiB,iBAAND,IAAmBA,GAAkB,iBAANC,IAAmBA,EAC3D,OAAO,EAGT,IAAIw+f,EAAQvugB,OAAOO,KAAKuP,GACpB0+f,EAAQxugB,OAAOO,KAAKwP,GAExB,GAAIw+f,EAAMjkgB,SAAWkkgB,EAAMlkgB,OACzB,OAAO,EAKT,IAFA,IAAI0j/B,EAAkBhu/B,OAAOsW,UAAUxU,eAAe8vD,KAAK7hD,GAElDuY,EAAM,EAAGA,EAAMimf,EAAMjkgB,OAAQge,IAAO,CAC3C,IAAI5nB,EAAM6tgB,EAAMjmf,GAEhB,IAAK0l+B,EAAgBtt/B,IAAQoP,EAAEpP,KAASqP,EAAErP,GACxC,OAAO,CAEX,CAEA,OAAO,CACT,EAGA,SAASut/B,EAAoBt5c,EAAMp3b,EAAKj4E,EAAUwp2B,EAAcvu4B,EAAM2t/B,GACpE,IAAIC,GAAY,EAUhB,OATA5t/B,EAAK2H,QAAQ,SAAUxH,GACjBou4B,EAAapu4B,KACfi0iB,EAAKj0iB,GAAO68G,EAAI78G,GAEX4kC,KAAc4o9B,EAAiBzv/B,QAAQiC,GAAQmy4B,EAAat1xB,EAAI78G,GAAM4kC,EAAS5kC,IAAQ68G,EAAI78G,KAAS4kC,EAAS5kC,MAChHyt/B,GAAY,GAGlB,GACOA,CACT,CAGA,IAAIC,EAAqB,CAAC,QAKtBC,EAAmB,SAA0Bxo/B,EAAOyp4B,EAAeR,EAAcj+a,GACnF,IAAIxnd,EAAS,CACX49F,KAAMphG,EAAMohG,KACZztC,OAAQ3zD,EAAM2zD,OACd0tC,MAAOrhG,EAAMqhG,MACbz9F,KAAM5D,EAAM4D,MAGd,OADgBwk/B,EAAmB5k/B,EAAQxD,EAAOyp4B,EAAeR,EAAci/G,EAAwBK,KAAwB9+G,GAC3Gz+a,EAAQxnd,OAAS2D,CACvC,EAGIsh/B,EAAwB,CAAC,SAAU,QAAS,cAAe,6BAA8B,uBAAwB,QAAS,SAAU,kBAAmB,sBAAuB,gBAAiB,UAAW,WAAY,0BAA2B,WAAY,aAAc,cAAe,eAAgB,eAAgB,kBAAmB,UAAW,QAAS,aAAc,SAAU,WAGzXJ,EAAmB,CAAC,UAAW,WAKnC,SAASK,EAAgB1o/B,EAAOyp4B,EAAeR,EAAcj+a,GAC3D,IAAIxnd,EAAS,CAAC,EAEd,OADgB4k/B,EAAmB5k/B,EAAQxD,EAAOyp4B,EAAeR,EAAcw/G,EAAuBJ,KAAsB5+G,GACxGz+a,EAAQxnd,OAAS2D,CACvC,CAIA,IAAIkrN,EAAU,SAAiBltN,GAC7B,IAAIozpB,EACA9tX,EACJ,OAAO,WACL,IAAK,IAAIlmS,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAUzB,OAPK2zpB,GAAY7zpB,EAAKD,SAAW8zpB,EAAS9zpB,SAAUC,EAAK/B,KAAK,SAAUqlE,EAAKnhE,GAC3E,OAAQmm4B,EAAaz0O,EAAS1xpB,GAAQmhE,EACxC,KACEuwlB,EAAW7zpB,EACX+lS,EAAatlS,EAAGgM,WAAM,EAAQzM,IAGzB+lS,CACT,CACF,EAEI6nrB,EAAY,SAAW3v8B,GACzB,QAASA,IAAuB,iBAARA,GAAmC,mBAARA,IAA2C,mBAAbA,EAAIzb,IACtF,EAMGyh/B,EAAe,SAAsB1++B,EAAGC,GAC1C,OAAOD,IAAMC,CACf,EAEI0++B,EAAc,SAASA,EAAYt3wB,GACrC,OAAOn3O,OAAOO,KAAK42O,GAAQ3uO,KAAK,SAAU9H,GACxC,IAAI7E,EAAQs7O,EAAOz2O,GAEnB,OAAI7E,GAA0B,iBAAVA,GAAwBA,aAAiB4hB,WAIrC,IAAV5hB,EAHL4y/B,EAAY5y/B,EAIvB,EACF,EAyCA,SAAS6y/B,EAAiB9p+B,EAAYkq3B,EAAcjp4B,EAAO8o/B,EAAWxn/B,EAAQ0pd,GAC5E,IAAI+9hB,EAAezn/B,EAAOtB,EAAO8o/B,EAAW7/G,EAAcj+a,GAE1D,QAAI+9hB,IACFhq+B,EAAWgq+B,IACJ,EAIX,CAEA,SAAStg7B,EAAOztE,EAAOgF,EAAO8o/B,EAAWxn/B,EAAQ0pd,GAC/C,IAAIz1Z,EAAUv6D,EAAMu6D,QACpBp7D,OAAOO,KAAK66D,GAASlzD,QAAQ,SAAUxH,GACrC,IAAIonD,EAAQsT,EAAQ/0C,OAAO3lB,IAE3B,GAAIonD,EAAO,CACT,IAAIgn1B,EAAehn1B,EAAMgn1B,aACrBlq3B,EAAakjC,EAAMljC,WACnB++O,EAAW77M,EAAM67M,SAEjB+qvB,EAAiB9p+B,EAAYkq3B,EAAcjp4B,EAAO8o/B,EAAWxn/B,EAAQ0pd,IAAUltN,KACjF77M,EAAM67M,UAAW,EAErB,CACF,EACF,CCrdA,SAASkrvB,EAAgBvm9B,EAAOwm9B,EAAWrl/B,GACzC,IAAI8qE,EAASjsC,EAAMisC,OACfm5C,EAAWplF,EAAMolF,SACjBx/C,EAAY5lC,EAAM4lC,UAClBxoD,GAAO,OAA8B4iB,EAAO,CAAC,SAAU,WAAY,cAEvE,GAAI4lC,EACF,OAAoB,gBAAoBA,EAAWluE,OAAOC,OAAO6u/B,EAAWpp+B,EAAM,CAChFgoG,SAAUA,EACVn5C,OAAQA,KAIZ,GAAIA,EACF,OAAOA,OAAoBvnE,IAAb0gH,EAAyB1tH,OAAOC,OAAO6u/B,EAAWpp+B,GAChE1lB,OAAOC,OAAO6u/B,EAAWpp+B,EAAM,CAC7BgoG,SAAUA,KAId,GAAwB,mBAAbA,EACT,MAAM,IAAIjwG,MAAM,4FAA8FhU,GAGhH,OAAOikH,EAAS1tH,OAAOC,OAAO6u/B,EAAWpp+B,GAC3C,CAEA,SAASqp+B,EAAoBlz/B,EAAOupB,EAAUs5L,QAC5B,IAAZA,IACFA,EAAU,SAAiB5uM,EAAGC,GAC5B,OAAOD,IAAMC,CACf,GAGF,IAAIu1B,EAAW,SAAsBzpC,GACrC,YAAyB,WAClB6iN,EAAQ7iN,EAAOypC,EAASv5B,WAC3BqZ,IACAkgB,EAASv5B,QAAUlQ,EAEvB,EACF,CAyBA,IAAI,EAAe,SAAsBiU,EAAGC,GAC1C,GAAID,IAAMC,EACR,OAAO,EAGT,GAAiB,iBAAND,IAAmBA,GAAkB,iBAANC,IAAmBA,EAC3D,OAAO,EAGT,IAAIw+f,EAAQvugB,OAAOO,KAAKuP,GACpB0+f,EAAQxugB,OAAOO,KAAKwP,GAExB,GAAIw+f,EAAMjkgB,SAAWkkgB,EAAMlkgB,OACzB,OAAO,EAKT,IAFA,IAAI0j/B,EAAkBhu/B,OAAOsW,UAAUxU,eAAe8vD,KAAK7hD,GAElDuY,EAAM,EAAGA,EAAMimf,EAAMjkgB,OAAQge,IAAO,CAC3C,IAAI5nB,EAAM6tgB,EAAMjmf,GAEhB,IAAK0l+B,EAAgBtt/B,IAAQoP,EAAEpP,KAASqP,EAAErP,GACxC,OAAO,CAEX,CAEA,OAAO,CACT,EAEIsu/B,EAAmB,SAA0B1s+B,GAC/C,SAAUA,GAAkD,mBAA9BA,EAAUk3P,gBAC1C,EAEIy1uB,EAAqC,kBAEzC,SAASC,EAAUrz/B,GACjB,IAAIktH,EAAM,SAAsBltH,GAIhC,OAHA,YAAyB,WACvBktH,EAAIh9G,QAAUlQ,CAChB,GACOktH,CACT,CAEA,IAEIom4B,EAAe,SAAsBx6c,EAAM9uiB,EAAOtF,GACpDA,EAAK2H,QAAQ,SAAUxH,GACrBV,OAAOwY,eAAem8hB,EAAMj0iB,EAAK,CAC/BqJ,IAAK,WACH,OAAOlE,EAAMnF,EACf,EACAkhC,YAAY,GAEhB,EACF,EAEIwt9B,EAAmB,SAA0Bz6c,EAAM9uiB,GACrD,OAAOsp/B,EAAax6c,EAAM9uiB,EAAO,CAAC,SAAU,QAAS,cAAe,uBAAwB,6BAA8B,QAAS,SAAU,kBAAmB,sBAAuB,gBAAiB,UAAW,WAAY,0BAA2B,WAAY,cAAe,eAAgB,eAAgB,kBAAmB,aAAc,UAAW,QAAS,aAAc,SAAU,WACpY,EAKI+qI,EAAW,CACb,aD8PY,SC7PZ,mBAtBY,SAwBVy+2B,EAAQf,EAAsB9t/B,OAAO,SAAU6I,EAAQ3I,GAEzD,OADA2I,EAAO3I,IAAO,EACP2I,CACT,EAAG,CAAC,GAEJ,SAASim/B,EAAehu/B,GACtB,IAnFmBghE,EACfymD,EAkFAvrG,EAAQlc,EAAKkc,MACb+x+B,EAAaju/B,EAAKiu/B,WAClBC,EAAsBlu/B,EAAKku/B,oBAC3BC,EAAmBnu/B,EAAK4kU,KACxBinrB,EAAgB7r/B,EAAK6r/B,cACrBuC,EAAqBpu/B,EAAKou/B,mBAC1BC,EAA0Bru/B,EAAKqu/B,wBAC/BC,EAAWtu/B,EAAKsu/B,SAChB19nB,EAAW5wX,EAAK4wX,SAChB29nB,EAAoBvu/B,EAAKwt4B,aACzBA,OAAqC,IAAtB+gH,EAA+BR,EAAQQ,EACtDh0xB,EAAWv6N,EAAKu6N,SAChBi0xB,EAAiBxu/B,EAAKwu/B,eACtBpq+B,GAAO,OAA8BpkB,EAAM,CAAC,QAAS,aAAc,sBAAuB,OAAQ,gBAAiB,qBAAsB,0BAA2B,WAAY,WAAY,eAAgB,WAAY,mBAExN2T,EAAS,CACXuI,MAAOA,EACPgy+B,oBAAqBA,EACrBrC,cAAeA,EACfwC,wBAAyBA,EACzBC,SAAUA,EACV19nB,SAAUA,EACVr2J,SAAUA,EACVi0xB,eAAgBA,GAEd5prB,GA5Ge5jQ,EA4GI,WACrB,IAAI1qD,EAAI63+B,GDkTZ,SAAoBx6+B,GAClB,IAAKA,EACH,MAAM,IAAIwI,MAAM,uBAGlB,IAAID,EAAQvI,EAAOuI,MACfgy+B,EAAsBv6+B,EAAOu6+B,oBAC7BG,EAA0B16+B,EAAO06+B,wBACjCxC,EAAgBl4+B,EAAOk4+B,cACvByC,EAAW36+B,EAAO26+B,SAClB19nB,EAAWj9W,EAAOi9W,SAClBr2J,EAAW5mN,EAAO4mN,SAClBi0xB,EAAiB76+B,EAAO66+B,eAE5B,IAAK59nB,EACH,MAAM,IAAIz0W,MAAM,kCAGlB,IAAI5X,EAAQ,CACVk/rB,YAAa,CACXr4rB,MAAO,EACP0uD,QAAS,CAAC,GAEZ207B,iBAAkB,CAAC,EACnB/o5B,OAAQ,CAAC,EACTkm5B,UAAW,CACT8C,YAAa,CAAC,EACdlC,sBAAsB,EACtBL,yBAAyB,EACzBt2wB,OAAQ,CAAC,EACTg2wB,cAAeA,IAAiB,OAAS,CAAC,EAAGA,GAC7Cl2qB,SAAS,EACT42qB,UAAU,EACVL,YAAY,EACZF,cAAc,EACdC,iBAAiB,EACjB0C,sBAAsB,EACtBtz9B,OAAO,EACPgx9B,WAAY,EACZ7u9B,OAAQqu9B,GAAgB,OAAS,CAAC,EAAGA,GAAiB,CAAC,GAEzD+C,mBAAelj/B,GAEbmj/B,EAAU,EACVC,GAAmB,EACnBC,GAAoB,EACpBC,GAA2C,EAC3CC,EAAyB,EACzBC,EAA0B,CAAC,EAS3Blp5B,EAAc,SAAqBzhG,EAAO4D,EAAMuzc,GAClD,IACI32X,EAAQ22X,EADCjzD,EAAMlkZ,EAAMqn/B,UAAUpu9B,OAAQr1B,IAE3C5D,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQr1B,EAAM48E,IAAU,CAAC,CAC1E,EAEI+hB,EAAc,SAAqBviG,EAAOk1B,EAAMD,GAClD,GAAIj1B,EAAMmhG,OAAOjsE,GAAO,CACtB,IAAIgsZ,EAAW0pkB,EAEf5q/B,EAAMmhG,QAAS,OAAS,CAAC,EAAGnhG,EAAMmhG,SAAS+/U,EAAY,CAAC,GAAajsZ,IAAM,OAAS,CAAC,EAAGj1B,EAAMmhG,OAAOjsE,GAAO,CAC1GtxB,KAAMqxB,EAENmsE,KAAM,WACJ,OAAO6/lB,EAAI7/lB,KAAKnsE,EAClB,EACA0+B,OAAQ,SAAgB39D,GACtB,OAAOirsB,EAAIttoB,OAAO1+B,EAAIj/B,EACxB,EACAqrG,MAAO,WACL,OAAO4/lB,EAAI5/lB,MAAMpsE,EACnB,EACAqsE,oBAAgBn6F,IACd+5a,WACGlhb,EAAMmhG,OAAOjsE,GACpBl1B,EAAMkq/B,kBAAmB,OAAS,CAAC,EAAGlq/B,EAAMkq/B,mBAAmBU,EAAY,CAAC,GAAa319B,GAAMj1B,EAAMkq/B,iBAAiBh19B,GAAO019B,WACtH5q/B,EAAMkq/B,iBAAiBh19B,GAC9B,IAAIl/B,EAAQkuZ,EAAMlkZ,EAAMqn/B,UAAUpu9B,OAAQ/D,GAC1Cl1B,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQ/D,OAAM/tB,IAAc,CAAC,EAC5EnH,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQhE,EAAIj/B,UACpDgK,EAAMqq/B,aACf,CACF,EAGIQ,EAAgB,SAAuBhw/B,GACzC,OAAO,WAEL,GAAIkv/B,EAAU,CASZ,IAPA,IAAIe,EAAiB,CACnBzD,UAAWrn/B,EAAMqn/B,UACjBlm5B,OAAQnhG,EAAMmhG,OACd+o5B,iBAAkBlq/B,EAAMkq/B,iBACxBG,cAAerq/B,EAAMqq/B,eAGd9l/B,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,IAAI09F,EAAcyn5B,EAASlv/B,GAAK6J,EAAMom/B,EAAgB,CACpDrp5B,YAAaA,EACbyiT,MAAOA,EACP3hT,YAAaA,EACbb,gBAAiBu/lB,EAAIv/lB,gBACrBm/S,MAAOA,EACPmsf,aAAcA,IAUhB,OARAht4B,EAAMqn/B,UAAYyD,EAAezD,UACjCrn/B,EAAMmhG,OAAS2p5B,EAAe3p5B,OAC9BnhG,EAAMkq/B,iBAAmBY,EAAeZ,iBACxClq/B,EAAMqq/B,cAAgBS,EAAeT,cACrC19X,OAAcxlnB,EAAW,WACvB4j/B,IACAC,GACF,GACO1o5B,CACT,CACF,CACF,EAEI2o5B,EAAclB,EAAW5v/B,OAAOO,KAAKqv/B,GAAUpv/B,OAAO,SAAU6I,EAAQ3I,GAE1E,OADA2I,EAAO3I,GAAOgw/B,EAAchw/B,GACrB2I,CACT,EAAG,CAAC,GAAK,CAAC,EAoBN0n/B,EAAgB,SAAuB1q1B,GACzC,OAAOrmK,OAAOO,KAAK8lK,EAAM8zS,YAAY35c,OAAO,SAAU6I,EAAQqD,GAC5D,IAAIwqT,EAAY7wJ,EAAM8zS,WAAW9zb,OAAO3Z,MAMxC,OAJIwqT,GACF7tT,EAAOW,KAAKktT,GAGP7tT,CACT,EAAG,GACL,EAgCImpnB,EAAgB,SAAuBw+X,EAAc5r+B,GACvD,GAAIgr+B,EAGF,OAFAC,GAAoB,OACpBjr+B,IAIF,IAAI4hF,EAASnhG,EAAMmhG,OACfkm5B,EAAYrn/B,EAAMqn/B,UAElB+D,GAAa,OAAS,CAAC,EAAGjq5B,GAE1Bkq5B,EAAYlx/B,OAAOO,KAAK0w/B,GAE5B,GAAKp1xB,GAAaq1xB,EAAU1o/B,KAAK,SAAU9H,GACzC,OAAOqw/B,EAAcE,EAAWvw/B,IAAM4J,MACxC,GAFA,CAQA,IAAI6m/B,GAA8B,EAElC,GAAIH,EAAc,CAChB,IAAII,EAAeH,EAAWD,GAE9B,GAAII,EAAc,CAChB,IAAIC,EAAiBD,EAAaC,eAE9BA,IACFF,GAA8B,EAC9BD,EAAYG,EAAe/m/B,OAAS+m/B,EAAent/B,OAAO8s/B,GAAgB,CAACA,GAE/E,CACF,CAEA,IArLqEtw/B,EAqLjE4w/B,EAAoB,CAAC,EACrBC,EAAyB,CAAC,EAC1BC,EAAmB,CAAC,EACpBn38B,EAAW,GAAGn2C,OApGW,SAAkC8w9B,GAC/D,IAAI366B,EAAW,GAEf,GAAIwhL,EAAU,CACZ,IAAI41xB,EAAkB51xB,GAAS,OAAS,CAAC,EAAGh2N,EAAMqn/B,UAAUpu9B,SAExDq57B,EAAUs5B,GACZp38B,EAASrwC,KAAKyn/B,EAAgB1k/B,KAAK,SAAUoqO,GAC3C,OAAO69uB,EAAU79uB,GAAQ,EAC3B,IAEA69uB,EAAUy8B,GAAiB,EAE/B,CAEA,OAAOp38B,CACT,CAoF2Bq38B,CAAyB,SAAUv6wB,EAAQw6wB,GAC9DA,EACFJ,EAAyBp6wB,GAAU,CAAC,EAEpCm6wB,EAAoBn6wB,GAAU,CAAC,CAEnC,GAAI+5wB,EAAU1w/B,OAAO,SAAU6I,EAAQI,GACrC,OAAOJ,EAAOnF,OA7EY,SAAiCmiK,EAAO6ntB,GACpE,IAIM/t2B,EAJFk6B,EAAW,GACX8/Z,EAAa42iB,EAAc1q1B,GAyB/B,OAvBI8zS,EAAW7vc,SAEb6vc,EAAWjyc,QAAQ,SAAUgvT,GAC3B,IAAI06rB,EAAiB16rB,EAAU6yF,EAAMlkZ,EAAMqn/B,UAAUpu9B,OAAQunI,EAAM58J,MAAO5D,EAAMqn/B,UAAUpu9B,OAA6B,IAArBo4R,EAAU5sT,QAAqC,IAArB4sT,EAAU5sT,OAAe2i/B,EAAkBpn/B,EAAMqn/B,UAAWrn/B,EAAMmhG,OAAOq/D,EAAM58J,YAASuD,GAEpN,GAAI4k/B,GAAkBz5B,EAAUy5B,GAAiB,CAC/Cvr1B,EAAMsn1B,YAAa,EACnB,IAAIp13B,EAAUq53B,EAAe7k/B,KAAK,SAAUoT,GACtCta,EAAMmhG,OAAOq/D,EAAM58J,QACrB5D,EAAMmhG,OAAOq/D,EAAM58J,MAAMkk/B,YAAa,EACtCz/H,EAAS/t2B,GAEb,GAEAk6B,EAASrwC,KAAKuuH,EAChB,MAAYp4G,IAEVA,EAAQyx+B,EAEZ,GACA1jI,EAAS/t2B,IAGJk6B,CACT,CAiDyBw38B,CAAwB7q5B,EAAOv9F,GAAO,SAAU0W,GACnEqx+B,EAAiB/n/B,GAAQ0W,CAC3B,GACF,EAAG,KACC2x+B,EAAsBz38B,EAAS/vC,OAAS,EACxCyn/B,IAA8BxB,EAC9Bh43B,EAAU1rH,QAAQmvC,IAAI3B,GAAUttC,MArMiCrM,EAqMAqx/B,EApM9D,SAAU1o/B,GAEf,cADOmn/B,EAAwB9v/B,GACxB2I,CACT,IAmMIyo/B,IACFtB,EAAwBuB,GAA6Bx53B,GAGvD,IAAIy53B,EAAgB,SAAuBC,GACzC,IAAItm/B,GAAS,OAAS,CAAC,EAAGwl/B,EAA8BjE,EAAU/1wB,OAAS,CAAC,EAAGm6wB,EAAmBW,EAAaV,EAC7GrE,EAAU8C,aAERkC,EAAe,SAAsBln/B,GACvCkm/B,EAAUhp/B,QAAQ,SAAUuB,GAC1B,GAAIu9F,EAAOv9F,GAAO,CAGhB,IAAI0o/B,EAAmBpomB,EAAMunmB,EAAmB7n/B,GAC5C2o/B,EAAkBromB,EAAMp+Y,EAAQlC,GAChC4o/B,EAA0BtB,EAAcE,EAAWxn/B,IAAOa,OAC1Dgo/B,EAAkBd,EAAiB/n/B,GACvCuB,EAAGvB,EAAM4o/B,GAA2BC,GAAmBz2xB,GAAYs2xB,IAAsBA,GAAqBhB,OAAgDnk/B,EAAlBol/B,GAC9I,CACF,EACF,EAEAF,EAAa,SAAUzo/B,EAAM0W,GAC3BxU,EAAS+6Y,EAAM/6Y,EAAQlC,EAAM0W,IAAU,CAAC,CAC1C,GACA+x+B,EAAa,SAAUzo/B,EAAM0W,GAC3B,GAAIA,GAASA,EAAM6s+B,GAAc,CAC/B,IAAIhh/B,EAAW+9Y,EAAMp+Y,EAAQlC,GACzB+9F,EAAO,GAAGtjG,OAAO8H,GACrBw7F,EAAKwl5B,GAAe7s+B,EAAM6s+B,GAC1Brh/B,EAAS+6Y,EAAM/6Y,EAAQlC,EAAM+9F,EAC/B,CACF,GAEKqryB,EAAaq6G,EAAU/1wB,OAAQxrO,KAClCuh/B,EAAU/1wB,OAASxrO,GAGjBsm/B,IACF/E,EAAU8C,YAAcuB,GAG1BrE,EAAU/s+B,MAAQmx+B,EAAkBvE,EACtC,EAaA,GAXI+E,IAEFjs/B,EAAMqn/B,UAAUS,aAChBvo+B,KAIF4s+B,GAAc,GAEd5s+B,IAEI0s+B,EAAqB,CACvB,IAAIS,EAAe,WACjB1s/B,EAAMqn/B,UAAUS,aAChBvo+B,GACF,EAEAmzG,EAAQxrH,KAAK,WACPwj/B,EAAyBwB,GAK7BC,GAAc,EAChB,GAAGjl/B,KAAKwl/B,EAAcA,EACxB,CA1GA,MAFEnt+B,GA6GJ,EAEIwr+B,EAAuB,SAA8Bnn/B,GACvD,IAAI0m/B,EAAJ,CAIA,IAAInp5B,EAASnhG,EAAMmhG,OACf+o5B,EAAmBlq/B,EAAMkq/B,iBACzB7C,EAAYrn/B,EAAMqn/B,UAElB+D,GAAa,OAAS,CAAC,EAAGjq5B,GAE1Bwr5B,EAAc,SAAqB/o/B,GACrC,IAAI48J,EAAQ4q1B,EAAWxn/B,GACnBgp/B,EAAaxF,EAAkBC,EAAW7m1B,GAC1Cl/D,EAAiBk/D,EAAMl/D,eAC3Bk/D,EAAMl/D,eAAiBsr5B,EACvB,IAAIC,EAAkB3C,EAAiBtm/B,GAEnCip/B,GACFpk7B,EAAOok7B,EAAiBD,EAAYtr5B,EAAgBkn5B,OAAqCrh/B,IAAnBm6F,EAE1E,EAEI19F,EACF+o/B,EAAY/o/B,GAEZzJ,OAAOO,KAAK0w/B,GAAY/o/B,QAAQsq/B,EAvBlC,CAyBF,EAEIG,EAAuB,WACzB3y/B,OAAOO,KAAKsF,EAAMmhG,QAAQ9+F,QAAQ,SAAUxH,GAC1CmF,EAAMmhG,OAAOtmG,GAAKgt/B,SAAU,CAC9B,EACF,EAMIkF,EAAyB,WAC3B,IAAI5r5B,EAASnhG,EAAMmhG,OACfkm5B,EAAYrn/B,EAAMqn/B,UAClBgD,EAAgBrq/B,EAAMqq/B,cAEtBe,GAAa,OAAS,CAAC,EAAGjq5B,GAE1B6r5B,EAAgB7y/B,OAAOO,KAAK0w/B,GAE5B6B,GAAa,EACbC,EAAcF,EAAcry/B,OAAO,SAAU6I,EAAQ3I,GAQvD,OAPauw/B,EAAWvw/B,GAAKg+M,QAAQqrM,EAAMmjmB,EAAUpu9B,OAAQp+B,GAAMqpZ,EAAMmjmB,EAAUC,eAAiB,CAAC,EAAGzs/B,MAGtGoy/B,GAAa,EACbzp/B,EAAO3I,IAAO,GAGT2I,CACT,EAAG,CAAC,GACA2p/B,EAA6BH,EAAcry/B,OAAO,SAAU6I,EAAQ3I,GAEtE,IAAIuy/B,EAA6B/F,EAAUE,qBAAuB,CAAC,EAMnE,OAJK6D,EAAWvw/B,GAAKg+M,QAAQqrM,EAAMmjmB,EAAUpu9B,OAAQp+B,GAAMqpZ,EAAMkpmB,EAA4Bvy/B,MAC3F2I,EAAO3I,IAAO,GAGT2I,CACT,EAAG,CAAC,GACJ6j/B,EAAUW,UAAYiF,EACtB5F,EAAUY,wBAA0BZ,EAAUE,sBAAuBpt/B,OAAO8+B,OAAOk09B,GAA4Bxq/B,KAAK,SAAU3M,GAC5H,OAAOA,CACT,IACAqx/B,EAAUO,2BAA6BP,EAAUE,sBACjDpt/B,OAAOO,KAAK0w/B,GAAYzo/B,KAAK,SAAU3M,GACrC,OAAOo1/B,EAAWp1/B,GAAO4x/B,uBAC3B,IACAP,EAAUvw9B,QAASuw9B,EAAU/s+B,OAAU+s+B,EAAUU,aAAgBa,EAAYvB,EAAU/1wB,SAAa+1wB,EAAUG,cAAgBoB,EAAYvB,EAAUG,eACpJ,IAAI6F,EApdR,SAAoC5x/B,GAClC,IAAI24C,EAAS34C,EAAK24C,OACd6z8B,EAAuBxs/B,EAAKws/B,qBAC5BL,EAA0Bns/B,EAAKms/B,wBAC/Btt+B,EAAQ7e,EAAK6e,MACbg3N,EAAS71O,EAAK61O,OACdg2wB,EAAgB7r/B,EAAK6r/B,cACrBU,EAAWvs/B,EAAKus/B,SAChBL,EAAals/B,EAAKks/B,WAClBF,EAAehs/B,EAAKgs/B,aACpBC,EAAkBjs/B,EAAKis/B,gBACvBK,EAActs/B,EAAKss/B,YACnBP,EAAe/r/B,EAAK+r/B,aACpB1w9B,EAAQr7B,EAAKq7B,MACbgx9B,EAAars/B,EAAKqs/B,WAClB7u9B,EAASx9B,EAAKw9B,OAClB,MAAO,CACLmb,OAAQA,EACRw8P,OAAQo3sB,EACRC,qBAAsBA,EACtBL,wBAAyBA,EACzBtt+B,MAAOA,EACPg3N,OAAQA,EACRg8wB,mBAAoBvF,GAAeP,GAAgBoB,EAAYpB,IAC/D+F,uBAAwBjz+B,IAASsu+B,EAAYt3wB,IAC7C8/F,SAAUt6S,EACVww9B,cAAeA,EACfU,SAAUA,EACVL,WAAYA,EACZF,aAAcA,EACdC,gBAAiBA,EACjBK,YAAaA,EACbP,aAAcA,EACd1w9B,MAAOA,EACPgx9B,WAAYA,EAAa,EACzB7u9B,OAAQA,EAEZ,CA+awBu09B,CAA2BnG,GAE3CoG,EAAwBT,EAAcry/B,OAAO,SAAU6I,EAAQ3I,GAIjE,OAHA2I,EAAO6urB,SAASx3rB,GAAOuw/B,EAAWvw/B,GAAKw3rB,SACvC7urB,EAAOqk/B,QAAQht/B,GAAOuw/B,EAAWvw/B,GAAKgt/B,QACtCrk/B,EAAOF,QAAQzI,GAAOuw/B,EAAWvw/B,GAAKyI,QAC/BE,CACT,EAAG,CACD6urB,SAAU,CAAC,EACXw1T,QAAS,CAAC,EACVvk/B,QAAS,CAAC,IAER+urB,EAAWo7T,EAAsBp7T,SACjCw1T,EAAU4F,EAAsB5F,QAChCvk/B,EAAUmq/B,EAAsBnq/B,QAOpC,OALA+p/B,EAAcH,YAAc7C,GAAiBr9G,EAAaq9G,EAAc6C,YAAaA,GAAe7C,EAAc6C,YAAcA,EAChIG,EAAcF,2BAA6B9C,GAAiBr9G,EAAaq9G,EAAc8C,2BAA4BA,GAA8B9C,EAAc8C,2BAA6BA,EAC5LE,EAAch7T,SAAWg4T,GAAiBr9G,EAAaq9G,EAAch4T,SAAUA,GAAYg4T,EAAch4T,SAAWA,EACpHg7T,EAAcxF,QAAUwC,GAAiBr9G,EAAaq9G,EAAcxC,QAASA,GAAWwC,EAAcxC,QAAUA,EAChHwF,EAAc/p/B,QAAU+m/B,GAAiBr9G,EAAaq9G,EAAc/m/B,QAASA,GAAW+m/B,EAAc/m/B,QAAUA,EACzG+m/B,GAAiBr9G,EAAaq9G,EAAegD,GAAiBhD,EAAgBgD,CACvF,EASIK,GAAY,EACZC,GAAuB,EAEvB3C,EAAsB,SAASA,IACjC,GAAI0C,EACFC,GAAuB,MAClB,CAIL,GAHAD,GAAY,EAbP/1+B,GAA2CA,EAAMo1+B,IAA0B5y/B,OAAOO,KAAKsF,EAAMmhG,QAAQxmG,OAAO,SAAU6I,EAAQ3I,GAEnI,OADA2I,EAAO3I,GAAOmF,EAAMmhG,OAAOtmG,GACpB2I,CACT,EAAG,CAAC,MAaG8m/B,GAAaC,GAAoBE,GAA2C,CAC/E,IAAIJ,EAAgBrq/B,EAAMqq/B,cACtBgD,EAAgBN,IAEhBM,IAAkBhD,IACpBrq/B,EAAMqq/B,cAAgBgD,EACtB5k7B,EAAOzoE,EAAMk/rB,YAAamuT,EAAehD,EAAe3B,GAE5D,CAEAgF,GAAY,EAERC,IACFA,GAAuB,EACvB3C,IAEJ,CACF,EAcI4C,EAA2B,WAC7B,OAAOzz/B,OAAOO,KAAKsF,EAAMmhG,QAAQ9+F,QAAQ,SAAUxH,GACjD,OAAOmF,EAAMmhG,OAAOtmG,GAAK+s/B,yBAA0B,CACrD,EACF,EAGAj7X,OAAcxlnB,EAAW,WACvB6j/B,GACF,GACA,IAAI/pT,EAAM,CACR0nM,MAAO,SAAexj4B,GACpBml/B,IACAnl/B,IACAml/B,IACAS,IACAC,GACF,EACA5p5B,KAAM,SAAcx9F,GAClB,IAAIu9F,EAASnhG,EAAMmhG,OACfkm5B,EAAYrn/B,EAAMqn/B,UAClB5n9B,EAAW0hE,EAAOv9F,GAElB67B,WAEK4n9B,EAAUjz8B,OACjB+sD,EAAOv9F,IAAQ,OAAS,CAAC,EAAG67B,EAAU,CACpC2U,QAAQ,EACRyz8B,SAAS,IAGPoC,EACFt9X,EAAc/onB,EAAM,WAClBmn/B,IACAC,GACF,IAEAD,IACAC,KAGN,EACAr37B,OAAQ,SAAgB/vD,EAAM5N,GAC5B,IAAImrG,EAASnhG,EAAMmhG,OACfkm5B,EAAYrn/B,EAAMqn/B,UAEtB,GAAInjmB,EAAMmjmB,EAAUpu9B,OAAQr1B,KAAU5N,EAAO,CAC3CyrG,EAAYzhG,EAAO4D,EAAM,WACvB,OAAO5N,CACT,GACA,IAAIypC,EAAW0hE,EAAOv9F,GAElB67B,IAEF0hE,EAAOv9F,IAAQ,OAAS,CAAC,EAAG67B,EAAU,CACpC4ypB,UAAU,EACVu1T,0BAA2BP,EAAUE,uBAIrC0C,GACFc,IACAC,KAEAr+X,EAAc/onB,EAAM,WAClBmn/B,IACAC,GACF,EAEJ,CACF,EAEA,uBAAIrB,GACF,QAASA,CACX,EAEA,uBAAIA,CAAoB3z/B,GACtB2z/B,EAAsB3z/B,CACxB,EAEAqrG,MAAO,SAAez9F,GACpB,IAAI48J,EAAQxgK,EAAMmhG,OAAOv9F,GAErB48J,IAAUA,EAAMpsH,SAClBp0C,EAAMqn/B,UAAUjz8B,OAASxwC,EACzB48J,EAAMpsH,QAAS,EACfosH,EAAMl9J,SAAU,EAChByn/B,IACAC,IAEJ,EACAjB,SAAUkB,EACV4C,cAAe,SAAuBjq/B,GACpC,IAAI48J,EAAQxgK,EAAMmhG,OAAOv9F,GACzB,OAAO48J,GAASA,EAAMl/D,cACxB,EACAws5B,oBAAqB,WACnB,OAAO3z/B,OAAOO,KAAKsF,EAAMmhG,OAC3B,EACA6C,SAAU,WACR,OAAO+o5B,GACT,EACAnz8B,WAAY,SAAoBxzC,GAC9B,IAAI+6F,EAASnhG,EAAMmhG,OACfkm5B,EAAYrn/B,EAAMqn/B,UAElB+D,GAAa,OAAS,CAAC,EAAGjq5B,GAE1BloE,EAAyB,mBAAT7yB,EAAsBA,EAAKih/B,EAAUpu9B,QAAU7yB,EAE9D0j/B,IACHzC,EAAUpu9B,OAASA,GAWrB,IAAI809B,EAAmBjE,EAA0B3v/B,OAAOO,KAAK0w/B,GAAYzw/B,OAAO,SAAU6I,EAAQ3I,GAQhG,OAPYuw/B,EAAWvw/B,GACFg+M,QAAQqrM,EAAMmjmB,EAAUpu9B,OAAQp+B,GAAMqpZ,EAAMmjmB,EAAUC,eAAiB,CAAC,EAAGzs/B,MAG9F2I,EAAO3I,GAAOqpZ,EAAMmjmB,EAAUpu9B,OAAQp+B,IAGjC2I,CACT,EAAG,CAAC,GAAK,CAAC,EAEV6j/B,EAAUC,cAAgBru9B,EAC1Bou9B,EAAUpu9B,OAASA,EAEnB9+B,OAAOO,KAAKqz/B,GAAkB1r/B,QAAQ,SAAUxH,GAC9Cws/B,EAAUpu9B,OAAS4nX,EAAMwmmB,EAAUpu9B,OAAQp+B,EAAKkz/B,EAAiBlz/B,KAAS,CAAC,CAC7E,GACA8xnB,OAAcxlnB,EAAW,WACvB4j/B,IACAC,GACF,EACF,EACAgD,mBAAoB,WAClB,OAAOzD,CACT,EACA0D,gBAAiB,SAAyBC,QACZ,IAAxBA,IACFA,GAAsB,GAGxB3D,GAAmB,EACnBE,EAA2CyD,CAC7C,EACAC,cAAe,SAAuBvq/B,EAAMmb,EAAYkq3B,EAAcmlH,QAC/C,IAAjBnlH,IACFA,EAAe,CAAC,GAGbjp4B,EAAMkq/B,iBAAiBtm/B,KAC1B5D,EAAMkq/B,iBAAiBtm/B,GAAQ,CAC7BiD,MAAO,EACP0uD,QAAS,CAAC,IAId,IAAI1uD,EAAQ7G,EAAMkq/B,iBAAiBtm/B,GAAMiD,QAEzC7G,EAAMkq/B,iBAAiBtm/B,GAAM2xD,QAAQ1uD,GAAS,CAC5CkY,WAAYszM,EAAQtzM,GACpBkq3B,aAAcA,EACdnroB,UAAU,GAGZ,IAAIt9F,EAAQxgK,EAAMmhG,OAAOv9F,IAAS,CAChCwwC,QAAQ,EACRi68B,YAAaD,GAAeA,EAAYC,YACxCC,aAAcF,GAAeA,EAAYE,aACzClo/B,KAAMgo/B,GAAeA,EAAYho/B,MAAQ,CAAC,EAC1CyyM,QAASu1yB,GAAeA,EAAYv1yB,SAAW8vyB,EAC/Crn5B,oBAAgBn6F,EAChBkrrB,UAAU,EACVu1T,yBAAyB,EACzBhk/B,KAAMA,EACNik/B,SAAS,EACT/w9B,OAAO,EACP009B,eAAgB4C,GAAeA,EAAY5C,eAC3Cl3iB,WAAY,CAAC,EACbwziB,YAAY,EACZxk/B,SAAS,GAIXk9J,EAAMp/D,KAAOo/D,EAAMp/D,MAAQ,WACzB,OAAO6/lB,EAAI7/lB,KAAKx9F,EAClB,EAEA48J,EAAM7sG,OAAS6sG,EAAM7sG,QAAU,SAAU39D,GACvC,OAAOirsB,EAAIttoB,OAAO/vD,EAAM5N,EAC1B,EAEAwqK,EAAMn/D,MAAQm/D,EAAMn/D,OAAS,WAC3B,OAAO4/lB,EAAI5/lB,MAAMz9F,EACnB,EAEA5D,EAAMmhG,OAAOv9F,GAAQ48J,EACrB,IAAI+t1B,GAAgB,EAChBC,EAASJ,GAAeA,EAAYI,OAEpC/l7B,EAAS,WACP+l7B,GAAUxu/B,EAAMmhG,OAAOv9F,GACzBmn/B,EAAqBnn/B,IAErBon/B,IACAD,IAEJ,EAEA,GAAIqD,EAAa,CACfG,KAAmBH,EAAYxjoB,eAAgBwjoB,EAAYxjoB,gBAEvDwjoB,EAAYxjoB,eACd5qX,EAAMmhG,OAAOv9F,GAAM0wc,WAAWztc,GAASun/B,EAAYxjoB,cAGrD,IAAI6joB,OAA6Dtn/B,IAAxC+8Y,EAAMlkZ,EAAMqn/B,UAAUpu9B,OAAQr1B,QAEtBuD,IAA7Bin/B,EAAYvyyB,eAA+B4yyB,GAAsBvqmB,EAAMlkZ,EAAMqn/B,UAAUpu9B,OAAQr1B,KAAUsgZ,EAAMlkZ,EAAMqn/B,UAAUC,cAAe1j/B,KAEhJ5D,EAAMqn/B,UAAUC,cAAgBzmmB,EAAM7gZ,EAAMqn/B,UAAUC,eAAiB,CAAC,EAAG1j/B,EAAMwq/B,EAAYvyyB,cAC7F77M,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQr1B,EAAMwq/B,EAAYvyyB,cACzE8wa,OAAcxlnB,EAAWshE,SAIMthE,IAA7Bin/B,EAAYzt+B,mBAA2DxZ,IAA7Bin/B,EAAYvyyB,mBAA6E10M,IAA/C+8Y,EAAMlkZ,EAAMqn/B,UAAUC,cAAe1j/B,IAAuB6q/B,IAClJzu/B,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQr1B,EAAMwq/B,EAAYzt+B,cAE7E,CAQA,OANI4t+B,EACF5hY,OAAcxlnB,EAAWshE,GAEzBA,IAGK,WACL,IAAIim7B,GAAmB,EAEnB1u/B,EAAMmhG,OAAOv9F,KAEf8q/B,KAAsB1u/B,EAAMmhG,OAAOv9F,GAAM0wc,WAAWztc,KAAU7G,EAAMmhG,OAAOv9F,GAAM0wc,WAAWztc,aACrF7G,EAAMmhG,OAAOv9F,GAAM0wc,WAAWztc,IAGvC,IAAI8n/B,IAAwB3u/B,EAAMkq/B,iBAAiBtm/B,GAE/C+q/B,UAEK3u/B,EAAMkq/B,iBAAiBtm/B,GAAM2xD,QAAQ1uD,GAG9C,IAAI+n/B,EAAUD,IAAwBx0/B,OAAOO,KAAKsF,EAAMkq/B,iBAAiBtm/B,GAAM2xD,SAAS9wD,OAEpFmq/B,WACK5u/B,EAAMkq/B,iBAAiBtm/B,UACvB5D,EAAMmhG,OAAOv9F,GAEhB8q/B,IACF1u/B,EAAMqn/B,UAAU/1wB,OAASuvK,EAAM7gZ,EAAMqn/B,UAAU/1wB,OAAQ1tO,OAAMuD,IAAc,CAAC,GAG1Ewi/B,IACF3p/B,EAAMqn/B,UAAUpu9B,OAAS4nX,EAAM7gZ,EAAMqn/B,UAAUpu9B,OAAQr1B,OAAMuD,GAAW,IAAS,CAAC,IAIjFqn/B,IACCE,EACF/hY,OAAcxlnB,EAAW,WACvB6j/B,IACAD,GACF,GACS6D,GAET5D,IAGN,CACF,EACApk/B,MAAO,SAAe0g/B,QACE,IAAlBA,IACFA,EAAgBtn/B,EAAMqn/B,UAAUC,eAG9Btn/B,EAAMqn/B,UAAUM,aAClB3n/B,EAAMqn/B,UAAU+C,sBAAuB,GAGzCpq/B,EAAMqn/B,UAAUI,cAAe,EAC/Bzn/B,EAAMqn/B,UAAUK,iBAAkB,SAC3B1n/B,EAAMqn/B,UAAUU,mBAChB/n/B,EAAMqn/B,UAAUG,oBAChBxn/B,EAAMqn/B,UAAUE,oBACvBtmT,EAAIrnpB,WAAW0t8B,GAAiB,CAAC,EACnC,EAKA5l5B,gBAAiB,SAAyB99F,GACxC5D,EAAMmhG,OAAOv9F,IAAQ,OAAS,CAAC,EAAG5D,EAAMmhG,OAAOv9F,GAAO,CACpDwwC,QAAQ,EACRktD,oBAAgBn6F,EAChBkrrB,UAAU,EACVw1T,SAAS,EACT/w9B,OAAO,EACPgx9B,YAAY,EACZxk/B,SAAS,IAEXqpnB,OAAcxlnB,EAAW,WACvB4j/B,IACAC,GACF,EACF,EAOA/rxB,QAAS,SAAiBqoxB,QACF,IAAlBA,IACFA,EAAgBtn/B,EAAMqn/B,UAAUC,eAGlCrmT,EAAI0nM,MAAM,WACR,IAAK,IAAI/k4B,KAAQ5D,EAAMmhG,OACrB8/lB,EAAIv/lB,gBAAgB99F,GACpB5D,EAAMmhG,OAAOv9F,IAAQ,OAAS,CAAC,EAAG5D,EAAMmhG,OAAOv9F,GAAO,CACpDwwC,QAAQ,EACRktD,oBAAgBn6F,EAChBkrrB,UAAU,EACVu1T,yBAAyB,EACzBC,SAAS,EACT/w9B,OAAO,EACPgx9B,YAAY,EACZxk/B,SAAS,IAIb29rB,EAAIr6rB,MAAM0g/B,EACZ,EACF,EACAuH,iBAAkB,WAChBtE,GAAmB,EACnBE,GAA2C,EAEvCD,GAEF79X,OAAcxlnB,EAAW,WACvB4j/B,IACAC,GACF,GAGFR,GAAoB,CACtB,EACA/4nB,UAAW,SAAmB7tX,EAAM5N,GAClC,OAAQ4N,GACN,IAAK,QACH+T,EAAQ3hB,EACR,MAEF,IAAK,sBACH2z/B,EAAsB3z/B,EACtB,MAEF,IAAK,gBACHirsB,EAAIrnpB,WAAW5jD,GACf,MAEF,IAAK,0BACH8z/B,EAA0B9z/B,EAC1B,MAEF,IAAK,WACH+z/B,EAAW/z/B,EAEPA,GACFmE,OAAOO,KAAKuw/B,GAAa5o/B,QAAQ,SAAUxH,GACnCA,KAAO7E,UACJi1/B,EAAYpw/B,EAEvB,GACAV,OAAOO,KAAK1E,GAAOqM,QAAQ,SAAUxH,GACnCow/B,EAAYpw/B,GAAOgw/B,EAAchw/B,EACnC,IAEAV,OAAOO,KAAKuw/B,GAAa5o/B,QAAQ,SAAUxH,UAClCow/B,EAAYpw/B,EACrB,GAGF,MAEF,IAAK,WACHwxX,EAAWr2X,EACX,MAEF,IAAK,WACHggO,EAAWhgO,EACX22nB,OAAcxlnB,EAAW,WACvB4j/B,IACAC,GACF,GACA,MAEF,IAAK,iBACHf,EAAiBj0/B,EACjB,MAEF,QACE,MAAM,IAAI4hB,MAAM,uBAAyBhU,GAE/C,EACAupX,OAAQ,WACN,IAAIk6nB,EAAYrn/B,EAAMqn/B,UAEtB,IAAIA,EAAUM,WAAd,CAQA,UAJON,EAAUG,oBACVH,EAAUU,YACjBV,EAAUE,qBAAsB,OAAS,CAAC,EAAGF,EAAUpu9B,QAtiB/Cj5B,EAAMqn/B,UAAU/s+B,OAASsu+B,EAAY5o/B,EAAMqn/B,UAAU/1wB,QA8iB3D,OALAw7wB,IACAc,IACA5t/B,EAAMqn/B,UAAUI,cAAe,EAC/BuD,SACAD,IAIF,IAAI+D,EAA8B30/B,OAAOO,KAAKiw/B,GAE9C,GAAImE,EAA4Brq/B,OAE9BuC,QAAQmvC,IAAI248B,EAA4B1r/B,IAAI,SAAUvI,GACpD,OAAO8v/B,EAAwBnq+B,OAAO3lB,GACxC,IAAIqM,KAAK+5rB,EAAI9zU,OAAQlqV,QAAQ3oB,YAM/B,IAtdKngB,OAAOO,KAAKsF,EAAMmhG,QAAQx+F,KAAK,SAAUiB,GAC9C,OAAO5D,EAAMmhG,OAAOv9F,GAAM0q/B,eAAsD,IAAtCtu/B,EAAMmhG,OAAOv9F,GAAM0q/B,cAC/D,GAodE,CAIA,IAAIt1tB,EACA+1tB,GAAiB,EAEjBr88B,EAAW,SAAkB4+L,GAC/B+1wB,EAAUM,YAAa,EACvB,IAAIyC,EAAuB/C,EAAU+C,qBA6BrC,OA3BIA,IACF/C,EAAU+C,sBAAuB,GAG/B94wB,GAAUs3wB,EAAYt3wB,IACxB+1wB,EAAUI,cAAe,EACzBJ,EAAUK,iBAAkB,EAC5BL,EAAUG,aAAel2wB,EACzB+1wB,EAAUU,YAAcz2wB,EAAO41wB,GAC/B4F,MAEK1C,IACH/C,EAAUI,cAAe,EACzBJ,EAAUK,iBAAkB,GAxe7Bvt/B,OAAOO,KAAKsF,EAAMmhG,QAAQ9+F,QAAQ,SAAUuB,GACjD,OAAO5D,EAAMmhG,OAAOv9F,GAAMyq/B,aAAeru/B,EAAMmhG,OAAOv9F,GAAMyq/B,aAC9D,IA4eIrD,IACAD,IACAgE,GAAiB,EAEb/1tB,GACFA,EAAe1nD,GAGVA,CACT,EAEA+1wB,EAAUM,YAAa,EACvBN,EAAUI,cAAe,EACzBJ,EAAUK,iBAAkB,EAC5BL,EAAUE,qBAAsB,OAAS,CAAC,EAAGF,EAAUpu9B,QACvD209B,IAEA,IAAIpq/B,EAAS6oX,EAASg7nB,EAAUpu9B,OAAQgoqB,EAAKvupB,GAE7C,IAAKq88B,EAAgB,CACnB,GAAIvr/B,GAAU8u9B,EAAU9u9B,GAMtB,OAJAwn/B,IAEAD,IAEOvn/B,EAAO0D,KAAKwrC,EAAU,SAAUp4B,GAErC,MADAo4B,IACMp4B,CACR,GACK,GAAI+xW,EAAS5nX,QAAU,EAM5B,OAJAum/B,IAEAD,IAEO,IAAI/j/B,QAAQ,SAAUC,GAC3B+xR,EAAiB/xR,CACnB,GAGAyrC,EAASlvC,EAEb,CAvEA,CA7BA,CAqGF,EACAwwX,UAAW,SAAmBj1W,EAAYkq3B,GACxC,IAAKlq3B,EACH,MAAM,IAAInH,MAAM,sBAGlB,IAAKqx3B,EACH,MAAM,IAAIrx3B,MAAM,mEAGlB,IAAIura,EAAW9wN,EAAQtzM,GACnBmgrB,EAAcl/rB,EAAMk/rB,YACpBr4rB,EAAQq4rB,EAAYr4rB,QACxBq4rB,EAAY3poB,QAAQ1uD,GAAS,CAC3BkY,WAAYoka,EACZ8ld,aAAcA,EACdnroB,UAAU,GAEZ,IAAIuvvB,EAAgBN,IAEpB,OADAlE,EAAiB1lkB,EAAU8ld,EAAcokH,EAAeA,EAAe3E,GAAiB,GACjF,kBACExpT,EAAY3poB,QAAQ1uD,EAC7B,CACF,GAEF,OAAOo6rB,CACT,CC1zCgC+tT,CAAW5/+B,GAGvC,OADA2C,EAAEk8+B,kBACKl8+B,CACT,GAhHImxG,EAAM,YAEDh9G,UACPg9G,EAAIh9G,QAAUu2D,KAGTymD,EAAIh9G,SA4GP+o/B,EAAkB,WAAe,WACnC,IAAI5qkB,EAAe,CAAC,EAIpB,OAHAhkH,EAAK2zD,UAAU,SAAUh0X,GACvBqkb,EAAerkb,CACjB,EAAGip4B,EAFH5okB,GAGOgkH,CACT,GACIrkb,EAAQiv/B,EAAgB,GACxBl/+B,EAAWk/+B,EAAgB,GAI3BC,EAAW7F,EAAUrp/B,GACzB,YAAgB,WAEdqgU,EAAK2trB,sBAAwB3trB,EAAKwurB,mBAClC,IAAIM,EAAkB,CAAC9urB,EAAK2zD,UAAU,SAAU1gY,GACzC,EAAaA,EAAG47/B,EAAShp/B,UAC5B6J,EAASzc,EAEb,EAAG214B,IAAe5q4B,OAAOqr/B,EAAaA,EAAWtm/B,IAAI,SAAUglH,GAC7D,OAEEA,EAAUi4M,EAEd,GAAK,IACL,OAAO,WACLA,EAAK4trB,kBAELkB,EAAgBhu+B,UAAU9e,QAAQ,SAAUu3rB,GAC1C,OAAOA,GACT,EACF,CACF,EAAG,CAAC8vT,IAcJR,EAAoBvx+B,EAAO,WACzB0oT,EAAKoxD,UAAU,QAAS95W,EAC1B,GACAux+B,EAAoBS,EAAqB,WACvCtprB,EAAKsprB,sBAAwBA,CAC/B,GACAT,EAAoBY,EAAyB,WAC3CzprB,EAAKoxD,UAAU,0BAA2Bq4nB,EAC5C,GACAZ,EAAoB5B,EAAe,WACjCjnrB,EAAKoxD,UAAU,gBAAiB61nB,EAClC,EAAGuC,GAAsB,GACzBX,EAAoBa,EAAU,WAC5B1prB,EAAKoxD,UAAU,WAAYs4nB,EAC7B,GACAb,EAAoB78nB,EAAU,WAC5BhsD,EAAKoxD,UAAU,WAAYpF,EAC7B,GACA68nB,EAAoBlzxB,EAAU,WAC5BqqG,EAAKoxD,UAAU,WAAYz7J,EAC7B,GACAkzxB,EAAoBe,EAAgB,WAClC5prB,EAAKoxD,UAAU,iBAAkBw4nB,EACnC,GAEA,IAgBIx1nB,EAAc,CAChBp0D,MAAM,OAAS,CAAC,EAAGA,EAAM,CACvBz5T,MAAO,SAAewo/B,GAChBjG,EAAiBiG,GAEnB/urB,EAAKz5T,QAELy5T,EAAKz5T,MAAMwo/B,EAEf,IAEFC,aA3BiB,SAAsB7y+B,GAavC,OAZIA,IAEkC,mBAAzBA,EAAMwgH,gBACfxgH,EAAMwgH,iBAG6B,mBAA1BxgH,EAAMm3P,iBAEfn3P,EAAMm3P,mBAIH0sD,EAAK8sD,QACd,GAgBA,OADAo8nB,EAAiB90nB,EAAaz0X,GACV,gBAAoBop/B,EAAsB/6pB,SAAU,CACtEr4V,MAAOqqU,GACN2orB,GAAgB,OAAS,CAAC,EAAGnp+B,EAAM,CACpCyv+B,WAAYvk3B,IACV0pP,EAAa,kBACnB,CAEA,SAAS86nB,EAAQzq4B,GACf,IAAIu7M,EAAO,aAAiB+orB,GAE5B,IAAK/orB,EACH,MAAM,IAAIzoT,OAAOktG,GAAiB,WAAa,8CAGjD,OAAOu7M,CACT,CA+CA,SAASmvrB,EAAQ/z/B,GACf,IAAIwzU,EAAWxzU,EAAKwzU,SAChBg6jB,EAAext4B,EAAKwt4B,aACpBpp3B,GAAO,OAA8BpkB,EAAM,CAAC,WAAY,iBAExDg0/B,EAAiBF,EAAQ,WACzBvv/B,EAnDN,SAAsB8O,GACpB,IAAIrT,OAAiB,IAAVqT,EAAmB,CAAC,EAAIA,EAC/BmgU,EAAWxzU,EAAKwzU,SAChB+6qB,EAAoBvu/B,EAAKwt4B,aACzBA,OAAqC,IAAtB+gH,EAA+BR,EAAQQ,EAEtD3prB,EAAOkvrB,EAAQ,gBACfG,EAAc,UAAa,GAC3BC,EAAc,SAAa1grB,GAC/B0grB,EAAYzp/B,QAAU+oU,EAEtB,IAAIggrB,EAAkB,WAAe,WACnC,IAAI5qkB,EAAe,CAAC,EASpB,OARAhkH,EAAK2zD,UAAU,SAAUh0X,GACvBqkb,EAAerkb,CACjB,EAAGip4B,EAFH5okB,GAII4O,GACFA,EAASo1G,GAGJA,CACT,GACIrkb,EAAQiv/B,EAAgB,GACxBl/+B,EAAWk/+B,EAAgB,GAE/B,YAAgB,WACd,OAAO5urB,EAAK2zD,UAAU,SAAUnxR,GAC1B6s5B,EAAYxp/B,QACdwp/B,EAAYxp/B,SAAU,GAEtB6J,EAAS8yF,GAEL8s5B,EAAYzp/B,SACdyp/B,EAAYzp/B,QAAQ28F,GAG1B,EAAGomyB,EACL,EACA,IACA,IAAI2mH,EAAY,CAAC,EAEjB,OADArG,EAAiBqG,EAAW5v/B,GACrB4v/B,CACT,CAQcC,CAAa,CACvB5grB,SAAUA,EACVg6jB,aAAcA,IAGhB,GAAIh6jB,EACF,OAAO,KAGT,IAAIwlD,EAAc,CAChBp0D,MAAM,OAAS,CAAC,EAAGovrB,EAAgB,CACjC7o/B,MAAO,SAAewo/B,GAChBjG,EAAiBiG,GAEnBK,EAAe7o/B,QAEf6o/B,EAAe7o/B,MAAMwo/B,EAEzB,KAGJ,OAAOpG,GAAgB,OAAS,CAAC,EAAGnp+B,EAAM40W,GAAcz0X,EAAO,UACjE,CAEA,IAAI8v/B,EAAkC,oBAAXt4/B,QAA0BA,OAAOmH,WAAanH,OAAOmH,UAAUuwG,SAAwC,gBAA7B13G,OAAOmH,UAAUuwG,QAmElH,EAAMg54B,EAAuBvt/B,OAAO,SAAU6I,EAAQ3I,GAExD,OADA2I,EAAO3I,IAAO,EACP2I,CACT,EAAG,CAAC,GAEA8nkB,EAAgB,SAAuBt1kB,EAAO4N,GAChD,YAAiBuD,IAAVnR,EAAsB,GAAKA,CACpC,EAEI+5/B,EAAe,SAAsB/5/B,EAAO4N,GAC9C,MAAiB,KAAV5N,OAAemR,EAAYnR,CACpC,EAEIg6/B,EAAiB,SAAwB/l/B,EAAGC,GAC9C,OAAOD,IAAMC,CACf,EAkNA,IAAI+l/B,EAAqB,aAAiB,SAAex0/B,EAAMynH,GAC7D,IAAImr4B,EAAc5y/B,EAAK4y/B,YACnB6B,EAAYz0/B,EAAKy0/B,UACjB5B,EAAe7y/B,EAAK6y/B,aACpBzm4B,EAAWpsH,EAAKosH,SAChBx/C,EAAY5sE,EAAK4sE,UACjBjiE,EAAO3K,EAAK2K,KACZua,EAAellB,EAAKklB,aACpBkuB,EAASpzC,EAAKozC,OACdsh9B,EAAe10/B,EAAK00/B,aACpBt0yB,EAAepgN,EAAKogN,aACpBhD,EAAUp9M,EAAKo9M,QACfxtG,EAAW5vG,EAAK4vG,SAChBznG,EAAOnI,EAAKmI,KACZ6kC,EAAQhtC,EAAKgtC,MACbwg2B,EAAext4B,EAAKwt4B,aACpB5o3B,EAAO5kB,EAAK4kB,KACZ21M,EAAWv6N,EAAKu6N,SAChBw1xB,EAAiB/v/B,EAAK+v/B,eACtBx1/B,EAAQyF,EAAKzF,MACb6pB,GAAO,OAA8BpkB,EAAM,CAAC,cAAe,YAAa,eAAgB,WAAY,YAAa,OAAQ,eAAgB,SAAU,eAAgB,eAAgB,UAAW,WAAY,OAAQ,QAAS,eAAgB,OAAQ,WAAY,iBAAkB,UAEjR+kK,EAtON,SAAkB58J,EAAMwL,QACP,IAAXA,IACFA,EAAS,CAAC,GAGZ,IAAI27D,EAAU37D,EACVi/+B,EAActj7B,EAAQsj7B,YACtB6B,EAAYnl7B,EAAQml7B,UACpB7n7B,EAAY0C,EAAQ1C,UACpBjiE,EAAO2kE,EAAQ3kE,KACfua,EAAeoqD,EAAQpqD,aACvByv+B,EAAiBrl7B,EAAQl8B,OACzBA,OAA4B,IAAnBuh9B,EAA4B9kb,EAAgB8kb,EACrDD,EAAepl7B,EAAQol7B,aACvBt0yB,EAAe9wI,EAAQ8wI,aACvBxwG,EAAWtgC,EAAQsgC,SACnBgl5B,EAAgBtl7B,EAAQtiC,MACxBA,OAA0B,IAAlB4n9B,EAA2BN,EAAeM,EAClDC,EAAuBvl7B,EAAQk+zB,aAC/BA,OAAwC,IAAzBqnH,EAAkC,EAAMA,EACvDjw+B,EAAO0qD,EAAQ1qD,KACfmr+B,EAAiBzg7B,EAAQyg7B,eACzBl7sB,EAASvlO,EAAQ/0E,MACjBqqU,EAAOkvrB,EAAQ,YACfgB,EAAYlH,EAAUj6+B,GAEtB+2D,EAAW,SAAkB5mD,EAAUiv+B,GACzC,OAKEnurB,EAAK8trB,cAAcvq/B,EAAM2b,EAAU0p3B,EAAc,CAC/ColH,YAAaA,EACbC,aAAc,WACZ,IAAIkC,EAAqBD,EAAUrq/B,QAC/Boo/B,EAAekC,EAAmBlC,aAClC6B,EAAeK,EAAmBL,aAClCM,EAAwBD,EAAmB3h9B,OAC3CA,OAAmC,IAA1B4h9B,EAAmCnlb,EAAgBmlb,EAEhE,GAAIN,EAAc,CAChB,IACIn6/B,EADOqqU,EAAKwtrB,cAAcjq/B,GACb5N,MAEb06/B,EAAY7h9B,EAAO74C,EAAO4N,GAE1B8s/B,IAAc16/B,GAChBqqU,EAAK1sQ,OAAO/vD,EAAM8s/B,EAEtB,CAEA,OAAOpC,GAAgBA,GACzB,EACAlo/B,KAAMA,EACNua,aAAcA,EACdiqW,aAAc,WACZ,OAAO2loB,EAAUrq/B,QAAQ8vN,QAC3B,EACAna,aAAcA,EACdhD,QAAS,SAAiB5uM,EAAGC,GAC3B,OAAQqm/B,EAAUrq/B,QAAQ2yM,SAAWm3yB,GAAgB/l/B,EAAGC,EAC1D,EACAsk/B,OAAQA,EACRhD,eAAgBA,GAGtB,EAEIkE,EAAc,UAAa,GAE3BT,EAAkB,WAAe,WACnC,IAAI5qkB,EAAe,CAAC,EAEhBslkB,EAAsBtprB,EAAKsprB,oBAO/B,OANAtprB,EAAKsprB,qBAAsB,EAC3Bxj7B,EAAS,SAAUnmE,GACjBqkb,EAAerkb,CACjB,GAAG,EAFHmmE,GAIAk6P,EAAKsprB,oBAAsBA,EACpBtlkB,CACT,GACIrkb,EAAQiv/B,EAAgB,GACxBl/+B,EAAWk/+B,EAAgB,GAE/B,YAAgB,WACd,OAAO9o7B,EAAS,SAAUnmE,GACpB0v/B,EAAYxp/B,QACdwp/B,EAAYxp/B,SAAU,EAEtB6J,EAAS/P,EAEb,GAAG,EACL,EACA,CAAC4D,EAAMwC,EAAMua,EAGbk7L,IAKA,IAAIunW,EAAW,CACbj4N,OAAQ,cAAkB,SAAU3uU,GAGlC,GAFAxc,EAAMohG,OAEF+u5B,EAAc,CAQhB,IAAIvD,EAAavsrB,EAAKwtrB,cAAc7t/B,EAAM4D,MAC1C5D,EAAM2zD,OAAO9kB,EAAO+98B,EAAW52/B,MAAOgK,EAAM4D,MAC9C,CACF,EACA,CAAC5D,EAAMohG,KAAMphG,EAAM4D,KAAMirC,EAAQsh9B,IACjClhrB,SAAU,cAAkB,SAAUzyT,GAEgC,IAWhExmB,EAAQwmB,GAASA,EAAMpe,OAvMlB,SAAkBoe,EAAOi3B,EAAck98B,EAAWb,GAC/D,IAAKA,GAAiBtz+B,EAAM2tU,kBAA0ChjV,IAA3BqV,EAAM2tU,YAAYhqT,KAC3D,OAAO3jB,EAAM2tU,YAAYhqT,KAG3B,GAAI2v9B,GAAiBtz+B,EAAM2tU,YACzB,OAAO3tU,EAAM2tU,YAAYhqT,KAG3B,IACIyw9B,EADep0+B,EACqBpe,OACpCiiB,EAAOuw+B,EAAqBvw+B,KAC5BrqB,EAAQ46/B,EAAqB56/B,MAC7BqwT,EAAUuqsB,EAAqBvqsB,QAEnC,OAAQhmS,GACN,IAAK,WACH,QAAkBlZ,IAAdwp/B,EAAyB,CAE3B,GAAItqsB,EAEF,OAAO1hT,MAAMyb,QAAQqzB,GAAgBA,EAAap1C,OAAOsy/B,GAAa,CAACA,GAGvE,IAAKhs/B,MAAMyb,QAAQqzB,GACjB,OAAOA,EAGT,IAAI5sC,EAAQ4sC,EAAa76C,QAAQ+3/B,GAEjC,OAAI9p/B,EAAQ,EACH4sC,EAEAA,EAAatoC,MAAM,EAAGtE,GAAOxI,OAAOo1C,EAAatoC,MAAMtE,EAAQ,GAG5E,CAEE,QAASw/S,EAGb,IAAK,kBACH,OA1DkB,SAA2BpmT,GACjD,IAAIuD,EAAS,GAEb,GAAIvD,EACF,IAAK,IAAI4G,EAAQ,EAAGA,EAAQ5G,EAAQwE,OAAQoC,IAAS,CACnD,IAAI8uC,EAAS11C,EAAQ4G,GAEjB8uC,EAAOq9N,UACTxvQ,EAAOW,KAAKwxC,EAAO3/C,MAEvB,CAGF,OAAOwN,CACT,CA4Caqt/B,CAAkBr0+B,EAAMpe,OAAO6B,SAExC,QACE,OAAOjK,EAEb,CAwJ0CinS,CAASzgR,EAAOxc,EAAMhK,MAAOs6S,EAAQw/sB,GAAiBtz+B,EAC1Fxc,EAAM2zD,OAAOlrB,EAAMzyC,EAAO4N,GAC5B,EACA,CAAC0sS,EAAQ1sS,EAAM6kC,EAAOzoC,EAAM2zD,OAAQ3zD,EAAMhK,MAAOqqB,IACjD6qU,QAAS,cAAkB,SAAU1uU,GACnCxc,EAAMqhG,OACR,EACA,CAACrhG,EAAMqhG,SAELj5D,EAAO,CAAC,GAldc,SAA+B0mgB,EAAM9uiB,GACxDsp/B,EAAax6c,EAAM9uiB,EAAO,CAAC,SAAU,OAAQ,QAAS,uBAAwB,QAAS,UAAW,UAAW,SAAU,WAAY,0BAA2B,WAAY,cAAe,eAAgB,kBAAmB,aAAc,UAAW,QAAS,aAAc,WACrR,CAidE8w/B,CAAsB1o9B,EAAMpoC,GAE5B,IAAI1N,GAAQ,OAAS,CACnBsR,KAAMA,EAEN,SAAI5N,GACF,IAAIA,EAAQgK,EAAMhK,MAclB,OAZIm6/B,EACgB,UAAd9n7B,IACFryE,EAAQs1kB,EAAct1kB,IAGxBA,EAAQ64C,EAAO74C,EAAO4N,GAGV,OAAV5N,GAAmBk6/B,IACrBl6/B,EAAQ,IAGG,aAATqqB,GAAgC,UAATA,EAClBiwR,EACgB,WAAdjoO,GAA0BgjC,EAC5Br1G,GAAS,GAGXA,CACT,EAEA,WAAIqwT,GACF,IAAIrwT,EAAQgK,EAAMhK,MAElB,MAAa,aAATqqB,GACFrqB,EAAQ64C,EAAO74C,EAAO4N,QAEPuD,IAAXmpS,IACOt6S,KAEC2O,MAAMyb,QAAQpqB,MAAWA,EAAM4C,QAAQ03S,KAEjC,UAATjwR,EACFwuB,EAAO74C,EAAO4N,KAAU0sS,OAD1B,CAKT,GAEC8yQ,GAeH,OAbI/3c,IACF/4G,EAAM+4G,SAAWA,QAGNlkG,IAATkZ,IACF/tB,EAAM+tB,KAAOA,GAGG,CAChB/tB,MAAOA,EACP81C,KAAMA,EAIV,CAwBc2o9B,CAASnt/B,EAAM,CACzByq/B,YAAaA,EACb6B,UAAWA,EACX5B,aAAcA,EACdzm4B,SAAUA,EACVx/C,UAAWA,EACXjiE,KAAMA,EACNua,aAAcA,EACdkuB,OAAQA,EACRsh9B,aAAcA,EACdt0yB,aAAcA,EACdhD,QAASA,EACTxtG,SAAUA,EACV5iE,MAAOA,EACPwg2B,aAAcA,EACd5o3B,KAAMA,EACN21M,SAAUA,EACVw1xB,eAAgBA,EAChBx1/B,MAAOA,IAGT,GAAwB,mBAAb6xH,EACT,OAAOA,GAAS,OAAS,CAAC,EAAG24C,EAAO3gJ,IAGtC,GAAyB,iBAAdwoD,EAET,OAAoB,gBAAoBA,GAAW,OAAS,CAAC,EAAGm4F,EAAMluK,MAAO,CAC3Eu1H,SAAUA,EACV3E,IAAKA,GACJrjG,IAGL,IAAKjc,EACH,MAAM,IAAIgU,MAAM,sDAGlB,OAAOox+B,GAAgB,OAAS,CAC9Bnh4B,SAAUA,EACVx/C,UAAWA,EACX66C,IAAKA,GACJrjG,GAAO2gJ,EAAO,SAAW58J,EAAO,IACrC,E,+BCxtBAzJ,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIk+P,EAAc,EAAQ,OACtBq4jB,EAAe,EAAQ,OACvBykM,EAAiB,EAAQ,MACzBC,EAAoB,EAAQ,OAC5BC,EAAe,EAAQ,OACvBC,EAAsB,EAAQ,OAC9B1kM,EAAY,EAAQ,OACpB2kM,EAAU,EAAQ,OAClBC,EAAkB,EAAQ,OAC1BC,EAAQ,EAAQ,OAChBxhrB,EAAa,EAAQ,OACrByhrB,EAAwB,EAAQ,OAChC/+d,EAAmB,EAAQ,OAC3Bvgb,EAAe,EAAQ,OACvBD,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChBor4B,EAAsB,EAAQ,OAC9BC,EAAsB,EAAQ,OAQlC38/B,EAAQ+8U,iBAAmB,CACvBv4O,UAAU,EACVq4O,SAAU,KACVnsG,SAAS,EACT/8J,QAAQ,EACRwjM,QAAQ,EACRvpN,OAAQ,CAAC,EACTx8C,QAAS,WAAc,OAAO,IAAM,EACpC0b,OAAQ,WAWZ,IAAIon6B,EAAmC,WAEnC,SAASA,EAAkB1i0B,GAEvBj2G,KAAKqh/B,iBAAmB,EAExBrh/B,KAAKsh/B,YAAc,GAEnBth/B,KAAK0lP,iBAAmB,CAAC,EAEzB1lP,KAAKuh/B,eAAiB,CAAC,EACvBvh/B,KAAKi2G,QAAUA,EACfj2G,KAAKs1N,MAAQr/G,EAAQyi0B,YACrB146B,KAAKwh/B,mBAAqB,CAAC,EAC3Bxh/B,KAAK+kP,WAAapjJ,EAASs+N,qBAAqBlqN,EAAMpuF,IAAI3nB,MAAO,CAAC,EAAG+1G,EAAMpuF,IAAI3nB,MAAO,CAClF,kBACA,eACA,gBACA,aACA,aAEJA,KAAKyh/B,mBACLzh/B,KAAK0h/B,oBACL1h/B,KAAK2h/B,+BACL1r4B,EAAQutK,QAAQuvC,sBAAsBw7c,QAAQqyO,EAAkBjkM,mBACpE,CAgKA,OAxIAg8H,EAAkBv46B,UAAU+yT,SAAW,SAAUn1N,EAAU9uF,EAAUtf,GAAmB,EAExF+o7B,EAAkBv46B,UAAU2ogB,SAAW,SAAU/qa,EAAU9uF,EAAUtf,GAAmB,EAExF+o7B,EAAkBv46B,UAAUqmH,QAAU,SAAUzoB,EAAU9uF,EAAUtf,GAAmB,EAEvF+o7B,EAAkBv46B,UAAUm4U,OAAS,SAAUv6O,EAAU9uF,EAAUtf,GAAmB,EAEtF+o7B,EAAkBv46B,UAAUussB,SAAW,SAAU3umB,EAAU9uF,EAAUtf,GAAmB,EAExF+o7B,EAAkBv46B,UAAUy+N,QAAU,SAAU7gI,EAAU9uF,EAAUtf,GAAmB,EAEvF+o7B,EAAkBv46B,UAAUmja,SAAW,SAAUvlU,EAAU9uF,EAAUtf,GAAmB,EAExF+o7B,EAAkBv46B,UAAU0yT,UAAY,SAAU90N,EAAU9uF,EAAUtf,GAAmB,EAEzF+o7B,EAAkBv46B,UAAUi9W,QAAU,SAAUr/Q,EAAU9uF,EAAUtf,GAAmB,EAKvF+o7B,EAAkBv46B,UAAU2jG,QAAU,SAAU6uN,GAC5CjxN,EAAS/4E,OAAO5oB,KAAK0lP,kBAAkB1zP,QAAQ,SAAU4v/B,GAAc,OAAOA,EAAW5v/B,QAAQ,SAAUqmE,GACvGA,EAAKqsL,eAAgB,EACrB/iJ,EAASuV,WAAW0q4B,EAAYvp7B,EACpC,EAAI,EACR,EAWAsg3B,EAAkBv46B,UAAUM,OAAS,SAAUiiG,EAAUmyH,GACrD,OAAO,IAAIonlB,EAAahle,WAAWv0O,EAAUmyH,EAAa90N,KAAKi2G,QACnE,EAEA0i0B,EAAkBv46B,UAAUsh/B,kBAAoB,WAC5C,IAAIG,EAAQh+vB,EAAYw/R,oBACpBy+d,EAAK3/d,EAAiBa,eACtBphL,EAAQ5hW,KAAKuh/B,eACbQ,GAAc,EACdC,GAAc,EAClBhi/B,KAAKii/B,aAAa,WAAYJ,EAAMv+d,OAAQ,EAAG1hL,EAAMh9U,GAAIm99B,EAAaD,EAAGI,oBAAqBJ,EAAGK,YAAaH,GAC9Ghi/B,KAAKii/B,aAAa,WAAYJ,EAAMO,OAAQ,EAAGxgpB,EAAMh9U,IACrD5kB,KAAKii/B,aAAa,UAAWJ,EAAMQ,IAAK,EAAGzgpB,EAAMh9U,IACjD5kB,KAAKii/B,aAAa,SAAUJ,EAAMQ,IAAK,IAAKzgpB,EAAMjrI,SALV,GAMxC32N,KAAKii/B,aAAa,WAAYJ,EAAMQ,IAAK,IAAKzgpB,EAAMlrI,UACpD12N,KAAKii/B,aAAa,UAAWJ,EAAMQ,IAAK,IAAKzgpB,EAAMhrI,UACnD52N,KAAKii/B,aAAa,WAAYJ,EAAMQ,IAAK,IAAKzgpB,EAAMh9U,IACpD5kB,KAAKii/B,aAAa,YAAaJ,EAAMrzR,QAAS,EAAG5sX,EAAMh9U,GAAIm99B,EAAaD,EAAGI,oBAAqBJ,EAAGQ,UAAWN,GAC9Ghi/B,KAAKii/B,aAAa,UAAWJ,EAAM9xY,MAAO,EAAGnuQ,EAAMh9U,GAAIm99B,EAAaD,EAAGI,oBAAqBJ,EAAGQ,UAAWN,EAC9G,EAEArpE,EAAkBv46B,UAAUqh/B,iBAAmB,WAC3C,IAAIn8vB,EAAQzB,EAAYwB,oBAAoBC,MAAO8wkB,EAAavykB,EAAYwB,oBAAoB+wkB,WAChGp2zB,KAAKui/B,gBAAgB,KAAMnsL,GAC3Bp2zB,KAAKui/B,gBAAgB,OAAQnsL,GAC7Bp2zB,KAAKui/B,gBAAgB,UAAWj9vB,GAChCtlP,KAAKui/B,gBAAgB,WAAYj9vB,GACjCtlP,KAAKui/B,gBAAgB,WAAYj9vB,EACrC,EAEAqzrB,EAAkBv46B,UAAU6h/B,aAAe,SAAU1u/B,EAAM6vhB,EAAW6xD,EAAWpyD,EAAmBI,EAAaiyD,EAAkBC,EAAiBC,QAC5H,IAAhBnyD,IAA0BA,GAAc,QACnB,IAArBiyD,IAA+BA,EAAmB/yD,EAAiBa,eAAeqyD,oBAC9D,IAApBF,IAA8BA,EAAkBhzD,EAAiBa,eAAesyD,mBAChE,IAAhBF,IAA0BA,GAAc,GAC5C,IAAI9wV,EAAY,IAAI48vB,EAAsBlsa,oBAAoBzhlB,EAAM6vhB,EAAW6xD,EAAWpyD,EAAmBI,EAAaiyD,EAAkBC,EAAiBC,GAC7Jp1kB,KAAKsh/B,YAAYxt/B,KAAKwwP,GACtBq8vB,EAAep7vB,UAAUvlP,KAAMA,KAAMskP,EACzC,EAEAq0rB,EAAkBv46B,UAAUkihB,WAAa,SAAU3shB,GAI/C,OAH0BisG,EAAawB,UAAUztG,GAC7CqK,KAAKsh/B,YAAYrw/B,OAAO,SAAU+e,GAAQ,OAAOA,EAAKozgB,YAAczthB,CAAO,GAC3EqK,KAAKsh/B,YAAYxm/B,SACM1H,KAAK,SAAUolB,EAAGuB,GACzC,IAAIyo+B,EAAahq+B,EAAE4qgB,UAAYrpgB,EAAEqpgB,UACjC,OAAsB,IAAfo/d,EAAmBhq+B,EAAEy8jB,UAAYl7jB,EAAEk7jB,UAAYuta,CAC1D,EACJ,EAcA7pE,EAAkBv46B,UAAUmi/B,gBAAkB,SAAUhv/B,EAAMkv/B,GAC1Dzi/B,KAAKuh/B,eAAehu/B,GAAQ,CAAEA,KAAMA,EAAMo1B,MAAO859B,EACrD,EAEA9pE,EAAkBv46B,UAAU4kP,cAAgB,WACxC,OAAOhlP,KAAKuh/B,cAChB,EAEA5oE,EAAkBv46B,UAAUojhB,SAAW,SAAU6oL,GAC7C,OAAOrssB,KAAK0lP,iBAAiB2md,EACjC,EAEAssO,EAAkBv46B,UAAUuh/B,6BAA+B,WACvD,IAAIj8tB,EAAM1lR,KAAKwh/B,mBACf97tB,EAAIg9tB,gBAAkB9B,EAAkBpkM,2BAA2Bx8yB,MACnE0lR,EAAI84lB,QAAU2iI,EAAoBwB,8BAA8B3i/B,MAChE0lR,EAAIq7C,QAAUqgrB,EAAoB5sa,8BAA8Bx0kB,MAEhE0lR,EAAIosT,WAAa+ua,EAAa7ua,uBAAuBhykB,MAErD0lR,EAAI6yD,OAASuoqB,EAAoBt0S,mBAAmBxssB,MACpD0lR,EAAIinb,SAAWm0S,EAAoBp0S,qBAAqB1ssB,MACxD0lR,EAAI7mD,QAAUiixB,EAAoBj0S,oBAAoB7ssB,MAEtD0lR,EAAIk9tB,aAAexmM,EAAUyhH,yBAAyB795B,MACtD0lR,EAAIm9tB,YAAczmM,EAAU4hH,yBAAyBh+5B,MACrD0lR,EAAIg6S,WAAa08O,EAAU8hH,yBAAyBl+5B,MAEpD0lR,EAAIo9tB,UAAY/B,EAAQgC,0BAA0B/i/B,MAClD0lR,EAAIs9tB,cAAgBjC,EAAQkC,sBAAsBjj/B,MAElD0lR,EAAIw9tB,cAAgBlC,EAAgB9trB,0BAA0BlzT,MAE9D0lR,EAAIy9tB,UAAYlC,EAAMmC,kBAAkBpj/B,MAExC0lR,EAAIw9C,SAAWzD,EAAWqpM,qBAAqB9ogB,KACnD,EACO246B,CACX,CA1LsC,GA2LtCl07B,EAAQk07B,kBAAoBA,C,+BC7O5B,IAAIjv1B,EAAI,EAAQ,OACZsinB,EAAmB,EAAQ,OAC3B/he,EAAY,EAAQ,OACpB52H,EAAW,EAAQ,OACnB6N,EAAoB,EAAQ,OAC5B4ga,EAAqB,EAAQ,MAIjCp4b,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,GAAQ,CAClCuqM,QAAS,SAAiBvrH,GACxB,IAEIprF,EAFAgC,EAAIu4F,EAASrzG,MACbmssB,EAAYjrlB,EAAkBpmG,GAKlC,OAHAmvN,EAAU/lI,IACVprF,EAAIgpgB,EAAmBhngB,EAAG,IACxB1mB,OAAS43sB,EAAiBlzrB,EAAGgC,EAAGA,EAAGqxrB,EAAW,EAAG,EAAGjomB,EAAY/vG,UAAUC,OAAS,EAAID,UAAU,QAAK2C,GACjGgiB,CACT,G,yBCVM,SAAWj4B,GAAU,aAIzB,IAAI4shB,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA5shB,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFC,MACtF,KAEJC,YAAa,qDAAqDD,MAC9D,KAEJE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNC,EAAG,iBACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERM,uBAAwB,wBACxBC,QAAS,SAAU8+C,GAGf,OAAOA,GAAUwqe,EAASxqe,IAAWwqe,EAF7Bxqe,EAAS,KAEmCwqe,EAD5Cxqe,GAAU,IAAM,IAAM,MAElC,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxFyCC,CAAQ,EAAQ,O,+BCL1D,IAAIod,EACqB,oBAAf0gF,YAA8BA,YACrB,oBAATC,MAAwBA,WAEb,IAAX,EAAA3gF,GAA0B,EAAAA,GAClC,CAAC,EAECgyX,EACY,oBAAqBhyX,EADjCgyX,EAEQ,WAAYhyX,GAAK,aAAcnd,OAFvCmvY,EAIA,eAAgBhyX,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIynF,MACG,CACT,CAAE,MAAOpkG,GACP,OAAO,CACT,CACD,CAPD,GANA2uY,EAcQ,aAAchyX,EAdtBgyX,EAeW,gBAAiBhyX,EAOhC,GAAIgyX,EACF,IAAI+xmB,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFrq2B,YAAYsgF,QACZ,SAAStpM,GACP,OAAOA,GAAOoz9B,EAAYn9+B,QAAQuB,OAAOsW,UAAUpZ,SAASqZ,KAAKiS,KAAS,CAC5E,EAGJ,SAASsz9B,EAAcry+B,GAIrB,GAHoB,iBAATA,IACTA,EAAOgN,OAAOhN,IAEZ,6BAA6BrR,KAAKqR,IAAkB,KAATA,EAC7C,MAAM,IAAI+M,UAAU,4CAA8C/M,EAAO,KAE3E,OAAOA,EAAKnL,aACd,CAEA,SAASy9+B,EAAelg/B,GAItB,MAHqB,iBAAVA,IACTA,EAAQ4a,OAAO5a,IAEVA,CACT,CAGA,SAASmg/B,EAAY5x8B,GACnB,IAAIhyB,EAAW,CACbpa,KAAM,WACJ,IAAInC,EAAQuuC,EAAMgU,QAClB,MAAO,CAAC1mC,UAAgB1K,IAAVnR,EAAqBA,MAAOA,EAC5C,GASF,OANIguY,IACFzxX,EAAS1d,OAAO0d,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEO,SAAS6j+B,EAAQ/+4B,GACtBhnF,KAAKjN,IAAM,CAAC,EAERi0F,aAAmB++4B,EACrB/+4B,EAAQh1F,QAAQ,SAASrM,EAAO4N,GAC9ByM,KAAKuwH,OAAOh9H,EAAM5N,EACpB,EAAGqa,MACM1L,MAAMyb,QAAQi3E,GACvBA,EAAQh1F,QAAQ,SAAS65F,GACvB,GAAqB,GAAjBA,EAAOz3F,OACT,MAAM,IAAIkM,UAAU,sEAAwEurF,EAAOz3F,QAErG4L,KAAKuwH,OAAO1kC,EAAO,GAAIA,EAAO,GAChC,EAAG7rF,MACMgnF,GACTl9F,OAAOu7C,oBAAoB2hD,GAASh1F,QAAQ,SAASuB,GACnDyM,KAAKuwH,OAAOh9H,EAAMyzF,EAAQzzF,GAC5B,EAAGyM,KAEP,CA8DA,SAASgm+B,EAASt4+B,GAChB,IAAIA,EAAK21/B,QACT,OAAI31/B,EAAKu4+B,SACAtv+B,QAAQyK,OAAO,IAAId,UAAU,sBAEtC5S,EAAKu4+B,UAAW,EAClB,CAEA,SAASC,EAAgBhvnB,GACvB,OAAO,IAAIvgX,QAAQ,SAASC,EAASwK,GACnC81W,EAAOz+H,OAAS,WACd7hP,EAAQsgX,EAAO/jX,OACjB,EACA+jX,EAAOx+H,QAAU,WACft3O,EAAO81W,EAAOjtW,MAChB,CACF,EACF,CAEA,SAASk89B,EAAsB772B,GAC7B,IAAI4sP,EAAS,IAAI1oI,WACbnsH,EAAU6j3B,EAAgBhvnB,GAE9B,OADAA,EAAOxoI,kBAAkBpkH,GAClBjI,CACT,CAqBA,SAAS+j3B,EAAYvr2B,GACnB,GAAIA,EAAI//H,MACN,OAAO+/H,EAAI//H,MAAM,GAEjB,IAAI4mM,EAAO,IAAIr8G,WAAWw1C,EAAIwyD,YAE9B,OADAqU,EAAK3tM,IAAI,IAAIsxF,WAAWw1C,IACjB6mE,EAAK/8M,MAEhB,CAEA,SAAS4rY,IAqHP,OApHAvwX,KAAKim+B,UAAW,EAEhBjm+B,KAAKqm+B,UAAY,SAAS34+B,GAtM5B,IAAoB4kB,EAkNhBtS,KAAKim+B,SAAWjm+B,KAAKim+B,SACrBjm+B,KAAKsm+B,UAAY54+B,EACZA,EAGsB,iBAATA,EAChBsS,KAAKum+B,UAAY74+B,EACRimY,GAAgBvqS,KAAKhpF,UAAUy1D,cAAcnoE,GACtDsS,KAAKwm+B,UAAY94+B,EACRimY,GAAoBivP,SAASxinB,UAAUy1D,cAAcnoE,GAC9DsS,KAAKym+B,cAAgB/4+B,EACZimY,GAAwBnuS,gBAAgBplF,UAAUy1D,cAAcnoE,GACzEsS,KAAKum+B,UAAY74+B,EAAK1G,WACb2sY,GAAuBA,IA/NlBrhX,EA+N6C5kB,IA9NjD0/L,SAAShtL,UAAUy1D,cAAcvjD,IA+N3CtS,KAAK0m+B,iBAAmBN,EAAY14+B,EAAK/I,QAEzCqb,KAAKsm+B,UAAY,IAAIl94B,KAAK,CAACppF,KAAK0m+B,oBACvB/ymB,IAAwBr4P,YAAYl7H,UAAUy1D,cAAcnoE,IAASi4+B,EAAkBj4+B,IAChGsS,KAAK0m+B,iBAAmBN,EAAY14+B,GAEpCsS,KAAKum+B,UAAY74+B,EAAO5D,OAAOsW,UAAUpZ,SAASqZ,KAAK3S,IAjBvDsS,KAAKqj/B,SAAU,EACfrj/B,KAAKum+B,UAAY,IAmBdvm+B,KAAKgnF,QAAQnzF,IAAI,kBACA,iBAATnG,EACTsS,KAAKgnF,QAAQjzF,IAAI,eAAgB,4BACxBiM,KAAKwm+B,WAAaxm+B,KAAKwm+B,UAAUx29B,KAC1ChQ,KAAKgnF,QAAQjzF,IAAI,eAAgBiM,KAAKwm+B,UAAUx29B,MACvC2jX,GAAwBnuS,gBAAgBplF,UAAUy1D,cAAcnoE,IACzEsS,KAAKgnF,QAAQjzF,IAAI,eAAgB,mDAGvC,EAEI4/X,IACF3zX,KAAKsqH,KAAO,WACV,IAAI/oH,EAAWyk+B,EAAShm+B,MACxB,GAAIuB,EACF,OAAOA,EAGT,GAAIvB,KAAKwm+B,UACP,OAAO7v+B,QAAQC,QAAQoJ,KAAKwm+B,WACvB,GAAIxm+B,KAAK0m+B,iBACd,OAAO/v+B,QAAQC,QAAQ,IAAIwyF,KAAK,CAACppF,KAAK0m+B,oBACjC,GAAI1m+B,KAAKym+B,cACd,MAAM,IAAIl/9B,MAAM,wCAEhB,OAAO5Q,QAAQC,QAAQ,IAAIwyF,KAAK,CAACppF,KAAKum+B,YAE1C,GAGFvm+B,KAAKgzkB,YAAc,WACjB,GAAIhzkB,KAAK0m+B,iBAEP,OADiBV,EAAShm+B,QAGfs7H,YAAYsgF,OAAO57M,KAAK0m+B,kBAC1B/v+B,QAAQC,QACboJ,KAAK0m+B,iBAAiB/h/B,OAAOmW,MAC3BkF,KAAK0m+B,iBAAiB1l4B,WACtBhhG,KAAK0m+B,iBAAiB1l4B,WAAahhG,KAAK0m+B,iBAAiBr5yB,aAItD12L,QAAQC,QAAQoJ,KAAK0m+B,mBAEzB,GAAI/ymB,EACT,OAAO3zX,KAAKsqH,OAAOzzH,KAAKsv+B,GAExB,MAAM,IAAI5+9B,MAAM,gCAEpB,EAEAvH,KAAK8vB,KAAO,WACV,IAxHoBw6F,EAClB4sP,EACA70P,EACAr+H,EACA0mK,EAoHEnpJ,EAAWyk+B,EAAShm+B,MACxB,GAAIuB,EACF,OAAOA,EAGT,GAAIvB,KAAKwm+B,UACP,OA9HkBl82B,EA8HItqH,KAAKwm+B,UA7H3BtvnB,EAAS,IAAI1oI,WACbnsH,EAAU6j3B,EAAgBhvnB,GAC1BlzX,EAAQ,2BAA2BqhC,KAAKilG,EAAKt6G,MAC7C06I,EAAW1mK,EAAQA,EAAM,GAAK,QAClCkzX,EAAOkuQ,WAAW96f,EAAMogC,GACjBroC,EAyHE,GAAIriH,KAAK0m+B,iBACd,OAAO/v+B,QAAQC,QAvHrB,SAA+BikI,GAI7B,IAHA,IAAI6mE,EAAO,IAAIr8G,WAAWw1C,GACtB05J,EAAQ,IAAIjgS,MAAMotM,EAAKttM,QAElB/O,EAAI,EAAGA,EAAIq8M,EAAKttM,OAAQ/O,IAC/BkvS,EAAMlvS,GAAKkb,OAAOysF,aAAa00G,EAAKr8M,IAEtC,OAAOkvS,EAAMr2R,KAAK,GACpB,CA+G6Byo+B,CAAsB3m+B,KAAK0m+B,mBAC7C,GAAI1m+B,KAAKym+B,cACd,MAAM,IAAIl/9B,MAAM,wCAEhB,OAAO5Q,QAAQC,QAAQoJ,KAAKum+B,UAEhC,EAEI5ymB,IACF3zX,KAAKgiW,SAAW,WACd,OAAOhiW,KAAK8vB,OAAOj5B,KAAK6+I,EAC1B,GAGF11I,KAAK+lF,KAAO,WACV,OAAO/lF,KAAK8vB,OAAOj5B,KAAK8S,KAAKyuB,MAC/B,EAEOp4B,IACT,CAzOA+l+B,EAAQ3l+B,UAAUmwH,OAAS,SAASh9H,EAAM5N,GACxC4N,EAAOqy+B,EAAcry+B,GACrB5N,EAAQkg/B,EAAelg/B,GACvB,IAAI47R,EAAWvhR,KAAKjN,IAAIQ,GACxByM,KAAKjN,IAAIQ,GAAQguR,EAAWA,EAAW,KAAO57R,EAAQA,CACxD,EAEAog/B,EAAQ3l+B,UAAkB,OAAI,SAAS7M,UAC9ByM,KAAKjN,IAAI6y+B,EAAcry+B,GAChC,EAEAwy+B,EAAQ3l+B,UAAUvM,IAAM,SAASN,GAE/B,OADAA,EAAOqy+B,EAAcry+B,GACdyM,KAAKrM,IAAIJ,GAAQyM,KAAKjN,IAAIQ,GAAQ,IAC3C,EAEAwy+B,EAAQ3l+B,UAAUzM,IAAM,SAASJ,GAC/B,OAAOyM,KAAKjN,IAAInH,eAAeg6+B,EAAcry+B,GAC/C,EAEAwy+B,EAAQ3l+B,UAAUrM,IAAM,SAASR,EAAM5N,GACrCqa,KAAKjN,IAAI6y+B,EAAcry+B,IAASsy+B,EAAelg/B,EACjD,EAEAog/B,EAAQ3l+B,UAAUpO,QAAU,SAASkd,EAAUlO,GAC7C,IAAK,IAAIzN,KAAQyM,KAAKjN,IAChBiN,KAAKjN,IAAInH,eAAe2H,IAC1B2b,EAAS7O,KAAKW,EAAShB,KAAKjN,IAAIQ,GAAOA,EAAMyM,KAGnD,EAEA+l+B,EAAQ3l+B,UAAU/V,KAAO,WACvB,IAAI6pC,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAKP,EACb,GACOuy+B,EAAY5x8B,EACrB,EAEA6x8B,EAAQ3l+B,UAAUwoB,OAAS,WACzB,IAAIsL,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,GACpBuuC,EAAMpgC,KAAKnO,EACb,GACOmg/B,EAAY5x8B,EACrB,EAEA6x8B,EAAQ3l+B,UAAU8kD,QAAU,WAC1B,IAAIhxB,EAAQ,GAIZ,OAHAl0B,KAAKhO,QAAQ,SAASrM,EAAO4N,GAC3B2gC,EAAMpgC,KAAK,CAACP,EAAM5N,GACpB,GACOmg/B,EAAY5x8B,EACrB,EAEIy/V,IACFoymB,EAAQ3l+B,UAAU5b,OAAO0d,UAAY6j+B,EAAQ3l+B,UAAU8kD,SAmLzD,IAAIo5J,EAAU,CAAC,UAAW,SAAU,MAAO,OAAQ,UAAW,QAAS,OAAQ,MAAO,SAO/E,SAAS2qc,EAAQhnqB,EAAO2N,GAC7B,KAAMoQ,gBAAgBippB,GACpB,MAAM,IAAI3opB,UAAU,8FAItB,IAXuBikC,EACnBqi8B,EAUAl5+B,GADJkC,EAAUA,GAAW,CAAC,GACHlC,KAEnB,GAAIzL,aAAiBgnqB,EAAS,CAC5B,GAAIhnqB,EAAMgk/B,SACR,MAAM,IAAI3l+B,UAAU,gBAEtBN,KAAKytF,IAAMxrG,EAAMwrG,IACjBztF,KAAKivtB,YAAchtuB,EAAMgtuB,YACpBr/tB,EAAQo3F,UACXhnF,KAAKgnF,QAAU,IAAI++4B,EAAQ9j/B,EAAM+kG,UAEnChnF,KAAKukC,OAAStiD,EAAMsiD,OACpBvkC,KAAKmqB,KAAOloC,EAAMkoC,KAClBnqB,KAAK0mF,OAASzkG,EAAMykG,OACfh5F,GAA2B,MAAnBzL,EAAMqk/B,YACjB54+B,EAAOzL,EAAMqk/B,UACbrk/B,EAAMgk/B,UAAW,EAErB,MACEjm+B,KAAKytF,IAAMltF,OAAOte,GAiBpB,GAdA+d,KAAKivtB,YAAcr/tB,EAAQq/tB,aAAejvtB,KAAKivtB,aAAe,eAC1Dr/tB,EAAQo3F,SAAYhnF,KAAKgnF,UAC3BhnF,KAAKgnF,QAAU,IAAI++4B,EAAQn2+B,EAAQo3F,UAErChnF,KAAKukC,QApCDqi8B,GADmBri8B,EAqCO30C,EAAQ20C,QAAUvkC,KAAKukC,QAAU,OApC1C5xB,cACd2rM,EAAQ/1N,QAAQq++B,IAAY,EAAIA,EAAUri8B,GAoCjDvkC,KAAKmqB,KAAOv6B,EAAQu6B,MAAQnqB,KAAKmqB,MAAQ,KACzCnqB,KAAK0mF,OAAS92F,EAAQ82F,QAAU1mF,KAAK0mF,QAAW,WAC9C,GAAI,oBAAqB/kF,EAEvB,OADW,IAAI8kF,iBACHC,MAEhB,CAL+C,GAM/C1mF,KAAK6m+B,SAAW,MAEK,QAAhB7m+B,KAAKukC,QAAoC,SAAhBvkC,KAAKukC,SAAsB72C,EACvD,MAAM,IAAI4S,UAAU,6CAItB,GAFAN,KAAKqm+B,UAAU34+B,KAEK,QAAhBsS,KAAKukC,QAAoC,SAAhBvkC,KAAKukC,QACV,aAAlB30C,EAAQ28B,OAA0C,aAAlB38B,EAAQ28B,OAAsB,CAEhE,IAAI+29B,EAAgB,gBAChBA,EAAcphgC,KAAK8d,KAAKytF,KAE1BztF,KAAKytF,IAAMztF,KAAKytF,IAAI1pG,QAAQu//B,EAAe,QAAS,IAAIz6+B,MAAO48F,WAI/DzlG,KAAKytF,MADe,KACOvrG,KAAK8d,KAAKytF,KAAO,IAAM,KAAO,MAAO,IAAI5kF,MAAO48F,SAE/E,CAEJ,CAMA,SAASiwC,EAAOhoJ,GACd,IAAIsiU,EAAO,IAAI4yT,SAYf,OAXAl1nB,EACGsQ,OACA9c,MAAM,KACN8Q,QAAQ,SAAS6wH,GAChB,GAAIA,EAAO,CACT,IAAI3hI,EAAQ2hI,EAAM3hI,MAAM,KACpBqS,EAAOrS,EAAMgnD,QAAQnkD,QAAQ,MAAO,KACpC4B,EAAQzE,EAAMgd,KAAK,KAAKna,QAAQ,MAAO,KAC3CisU,EAAKz/L,OAAO7qC,mBAAmBnyF,GAAOmyF,mBAAmB//F,GAC3D,CACF,GACKqqU,CACT,CAgCO,SAAS82qB,EAASC,EAAUn3+B,GACjC,KAAMoQ,gBAAgB8m+B,GACpB,MAAM,IAAIxm+B,UAAU,8FAQtB,GANK1Q,IACHA,EAAU,CAAC,GAGboQ,KAAKgQ,KAAO,UACZhQ,KAAKmtH,YAA4Br2H,IAAnBlH,EAAQu9H,OAAuB,IAAMv9H,EAAQu9H,OACvDntH,KAAKmtH,OAAS,KAAOntH,KAAKmtH,OAAS,IACrC,MAAM,IAAIm6H,WAAW,4FAEvBtnP,KAAKimB,GAAKjmB,KAAKmtH,QAAU,KAAOntH,KAAKmtH,OAAS,IAC9CntH,KAAK+oR,gBAAoCjyR,IAAvBlH,EAAQm5R,WAA2B,GAAK,GAAKn5R,EAAQm5R,WACvE/oR,KAAKgnF,QAAU,IAAI++4B,EAAQn2+B,EAAQo3F,SACnChnF,KAAKytF,IAAM79F,EAAQ69F,KAAO,GAC1BztF,KAAKqm+B,UAAUU,EACjB,CApEA99U,EAAQ7opB,UAAU6kB,MAAQ,WACxB,OAAO,IAAIgkoB,EAAQjppB,KAAM,CAACtS,KAAMsS,KAAKsm+B,WACvC,EA8CA/1mB,EAAKlwX,KAAK4opB,EAAQ7opB,WAsBlBmwX,EAAKlwX,KAAKym+B,EAAS1m+B,WAEnB0m+B,EAAS1m+B,UAAU6kB,MAAQ,WACzB,OAAO,IAAI6h9B,EAAS9m+B,KAAKsm+B,UAAW,CAClCn52B,OAAQntH,KAAKmtH,OACb47J,WAAY/oR,KAAK+oR,WACjB/hM,QAAS,IAAI++4B,EAAQ/l+B,KAAKgnF,SAC1ByG,IAAKztF,KAAKytF,KAEd,EAEAq54B,EAAS789B,MAAQ,WACf,IAAIokF,EAAW,IAAIy44B,EAAS,KAAM,CAAC352B,OAAQ,IAAK47J,WAAY,KAI5D,OAHA16L,EAASpoE,IAAK,EACdooE,EAAS8+B,OAAS,EAClB9+B,EAASr+E,KAAO,QACTq+E,CACT,EAEA,IAAI244B,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASzkqB,SAAW,SAAS50O,EAAK0/B,GAChC,IAA0C,IAAtC652B,EAAiBz++B,QAAQ4kI,GAC3B,MAAM,IAAIm6H,WAAW,uBAGvB,OAAO,IAAIw/uB,EAAS,KAAM,CAAC352B,OAAQA,EAAQnmC,QAAS,CAACiC,SAAUwE,IACjE,EAEO,IAAIg44B,EAAe9j+B,EAAE8j+B,aAC5B,IACE,IAAIA,CACN,CAAE,MAAO/83B,IACP+83B,EAAe,SAASr14B,EAAS78F,GAC/ByM,KAAKowF,QAAUA,EACfpwF,KAAKzM,KAAOA,EACZ,IAAI0W,EAAQ1C,MAAM6oF,GAClBpwF,KAAKumC,MAAQt8B,EAAMs8B,KACrB,GACanmC,UAAYtW,OAAO4W,OAAO6G,MAAMnH,WAC7Cql+B,EAAarl+B,UAAUK,YAAcgl+B,CACvC,CAEO,SAAS3/4B,EAAM7jG,EAAOmqE,GAC3B,OAAO,IAAIz1D,QAAQ,SAASC,EAASwK,GACnC,IAAIwmR,EAAU,IAAIqhY,EAAQhnqB,EAAOmqE,GAEjC,GAAIw7N,EAAQlhM,QAAUkhM,EAAQlhM,OAAO6zJ,QACnC,OAAOn5O,EAAO,IAAIqk+B,EAAa,UAAW,eAG5C,IAAIz6sB,EAAM,IAAIf,eAEd,SAASg9sB,IACPj8sB,EAAIrkM,OACN,CAiEA,GA/DAqkM,EAAIvyC,OAAS,WACX,IA5GgByuvB,EAChBlg5B,EA2GIp3F,EAAU,CACZm5R,WAAYiC,EAAIjC,WAChB/hM,SA9Gckg5B,EA8GQl8sB,EAAII,yBAA2B,GA7GvDpkM,EAAU,IAAI++4B,EAGQmB,EAAWnj/B,QAAQ,eAAgB,KAK1D7C,MAAM,MACN6R,IAAI,SAAS84F,GACZ,OAAgC,IAAzBA,EAAOtjG,QAAQ,MAAcsjG,EAAOsmB,OAAO,EAAGtmB,EAAOz3F,QAAUy3F,CACxE,GACC75F,QAAQ,SAASm+B,GAChB,IAAImmC,EAAQnmC,EAAKjvC,MAAM,KACnBsJ,EAAM8rE,EAAMpuB,QAAQlqC,OACxB,GAAIxT,EAAK,CACP,IAAI7E,EAAQ2wE,EAAMp4D,KAAK,KAAKF,OAC5B,IACEgpF,EAAQupC,OAAO/lI,EAAK7E,EACtB,CAAE,MAAOskB,GACP2oB,QAAQ/lB,KAAK,YAAc5C,EAAMmmF,QACnC,CACF,CACF,GACKpJ,IAyFoC,IAAnC4gM,EAAQn6L,IAAIllG,QAAQ,aAAqByiS,EAAI79J,OAAS,KAAO69J,EAAI79J,OAAS,KAC5Ev9H,EAAQu9H,OAAS,IAEjBv9H,EAAQu9H,OAAS69J,EAAI79J,OAEvBv9H,EAAQ69F,IAAM,gBAAiBu9L,EAAMA,EAAIm8sB,YAAcv3+B,EAAQo3F,QAAQnzF,IAAI,iBAC3E,IAAInG,EAAO,aAAcs9R,EAAMA,EAAI38L,SAAW28L,EAAIE,aAClDzjR,WAAW,WACT7Q,EAAQ,IAAIkw+B,EAASp5+B,EAAMkC,GAC7B,EAAG,EACL,EAEAo7R,EAAItyC,QAAU,WACZjxO,WAAW,WACTrG,EAAO,IAAId,UAAU,0BACvB,EAAG,EACL,EAEA0qR,EAAIM,UAAY,WACd7jR,WAAW,WACTrG,EAAO,IAAId,UAAU,6BACvB,EAAG,EACL,EAEA0qR,EAAIK,QAAU,WACZ5jR,WAAW,WACTrG,EAAO,IAAIqk+B,EAAa,UAAW,cACrC,EAAG,EACL,EAUAz6sB,EAAIj9L,KAAK65L,EAAQrjP,OARjB,SAAgBkpD,GACd,IACE,MAAe,KAARA,GAAc9rF,EAAEsnF,SAASgF,KAAOtsF,EAAEsnF,SAASgF,KAAOR,CAC3D,CAAE,MAAOzoG,GACP,OAAOyoG,CACT,CACF,CAEyB815B,CAAO37tB,EAAQn6L,MAAM,GAElB,YAAxBm6L,EAAQqnc,YACVjkc,EAAI/C,iBAAkB,EACW,SAAxBL,EAAQqnc,cACjBjkc,EAAI/C,iBAAkB,GAGpB,iBAAkB+C,IAChB2oG,EACF3oG,EAAI7B,aAAe,OAEnBwqG,IAEA3oG,EAAI7B,aAAe,gBAInB/8N,GAAgC,iBAAjBA,EAAK46B,WAA0B56B,EAAK46B,mBAAmB++4B,GAAYpk+B,EAAEok+B,SAAW356B,EAAK46B,mBAAmBrlF,EAAEok+B,SAAW,CACtI,IAAIrh9B,EAAQ,GACZ56B,OAAOu7C,oBAAoB+mB,EAAK46B,SAASh1F,QAAQ,SAASuB,GACxDmxB,EAAM5wB,KAAK8x+B,EAAcry+B,IACzBy3R,EAAIC,iBAAiB13R,EAAMsy+B,EAAez56B,EAAK46B,QAAQzzF,IACzD,GACAq0R,EAAQ5gM,QAAQh1F,QAAQ,SAASrM,EAAO4N,IACT,IAAzBmxB,EAAMn8B,QAAQgL,IAChBy3R,EAAIC,iBAAiB13R,EAAM5N,EAE/B,EACF,MACEiiS,EAAQ5gM,QAAQh1F,QAAQ,SAASrM,EAAO4N,GACtCy3R,EAAIC,iBAAiB13R,EAAM5N,EAC7B,GAGEiiS,EAAQlhM,SACVkhM,EAAQlhM,OAAOxuF,iBAAiB,QAAS+u+B,GAEzCj8sB,EAAI+5M,mBAAqB,WAEA,IAAnB/5M,EAAI/pB,YACN2mB,EAAQlhM,OAAOvuF,oBAAoB,QAAS8u+B,EAEhD,GAGFj8sB,EAAIz4D,UAAkC,IAAtBq1D,EAAQ0+sB,UAA4B,KAAO1+sB,EAAQ0+sB,UACrE,EACF,CAEAxg5B,EAAMkwb,UAAW,EAEZr0gB,EAAEmkF,QACLnkF,EAAEmkF,MAAQA,EACVnkF,EAAEok+B,QAAUA,EACZpk+B,EAAEsnpB,QAAUA,EACZtnpB,EAAEml+B,SAAWA,E,qCC/nBf,IACQhn+B,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAq4gB,EAAe,EAAQ,OACvB/zJ,EAAmB,EAAQ,OAC3BoukB,EAAiB,EAAQ,OACzBswD,EAAyB,gCACzBxs3B,EAAU,EAAQ,OAClBxzH,EAAK,EAAQ,OAAyBkF,EAAWlF,EAAGkF,SAAUC,EAAcnF,EAAGmF,YAAa86+B,EAAajg/B,EAAGig/B,WAC5G9/+B,EAAK,EAAQ,OAAeo/U,EAAgCp/U,EAAGo/U,8BAA+BE,EAA8Bt/U,EAAGs/U,4BAA6Ba,EAA6BngV,EAAGmgV,2BAA4Bc,EAAyBjhV,EAAGihV,uBAAwB/C,EAAel+U,EAAGk+U,aAAcE,EAAmBp+U,EAAGo+U,iBAClU98U,EAAK,EAAQ,OAAmC+yM,EAAoB/yM,EAAG+yM,kBAAmBmiH,EAAqBl1T,EAAGk1T,mBAAoBvB,EAA2B3zT,EAAG2zT,yBAA0BI,EAA2B/zT,EAAG+zT,yBA0B5N9iN,EAAS,CACTora,WAAY,CACR,YACA,gBAEJvI,UAAW,CACP,eACA,WAEJ2qe,QAAS,CACL,YACA,gBAEJzqe,aAAc,IASd0qe,EAA2C,SAAU3/+B,GAWrD,SAAS2/+B,EAA0Bpw/B,EAAMottB,EAAahkN,EAAkB+jB,EAAuBv7gB,EAAUvV,GACrG,IAAIsU,EAgGJ,OA/FAtU,EAAU9F,OAAOC,OAAO,CACpB8h8B,QAASqH,EACTpukB,iBAAkBA,EAClB55W,WAAY,KACZ02U,eAAe,EACfwB,gBAAgB,EAChBE,aAAa,EACb/0V,UAAWszV,KACZjyV,GACHsU,EAAQF,EAAO3D,KAAKL,KAAM,aAAck2G,IAAWl2G,KACnDlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3B0/+B,aAAc,CACVj+/B,MAAOg7tB,GAEXkjS,uBAAwB,CACpBl+/B,MAAOiK,EAAQi1V,uBAEnBohjB,kBAAmB,CACftg5B,MAAOiK,EAAQozV,kBAEnB8gqB,iBAAkB,CACdn+/B,MAAOiK,EAAQszV,iBAEnB6gqB,mBAAoB,CAChBp+/B,MAAOiK,EAAQyzV,mBAEnB+ymB,eAAgB,CACZzw8B,MAAOiK,EAAQgZ,cACf6iB,UAAU,GAEdu49B,aAAc,CACVr+/B,MAAOiK,EAAQ0zV,aAEnB2gqB,kBAAmB,CACft+/B,MAAO2O,MAAMyb,QAAQngB,EAAQsb,YACvB,WACA,WAEVg5+B,kBAAmB,CACfv+/B,MAAOg3gB,GAEXxnH,MAAO,CACHxvZ,MAAO4N,GAEX4w/B,gBAAiB,CACbx+/B,MAAOo8V,EAAiBnyV,EAAQuzV,iBAAmBvzV,EAAQuzV,gBAE/DihqB,gBAAiB,CACbz+/B,MAAOiK,EAAQm0V,gBAEnBl0V,SAAU,CACNlK,MAAOiK,GAEXy0/B,uBAAwB,CACpB1+/B,MAAO+6hB,GAEX4je,cAAe,CACX3+/B,MAAO,KACP8lC,UAAU,GAEd849B,kBAAmB,CACf5+/B,MAAO,EACP8lC,UAAU,GAEd+49B,kBAAmB,CACf7+/B,MAAO,IAAIiK,EAAQi87B,QAAQ23D,IAE/B/gM,SAAU,CACN98zB,MAAO,KACP8lC,UAAU,GAEdg59B,eAAgB,CACZ9+/B,MAAOiK,EAAQgyV,eAEnB8iqB,gBAAiB,CACb/+/B,MAAOiK,EAAQwzV,gBAEnBuhqB,kBAAmB,CACfh//B,MAAO,KACP8lC,UAAU,GAEdm59B,iBAAkB,CACdj//B,MAAO,IAEXk//B,eAAgB,CACZl//B,MAAO,IAEXm//B,WAAY,CACRn//B,MAAOiK,EAAQrB,WAEnBw2/B,UAAW,CACPp//B,MAAOwf,KA+PvB,SAAwB+C,GACpB,SAAS88+B,IACL,GAAwB,iBAApB98+B,EAAUvY,MAAd,CAGIuY,EAAUy8+B,mBACVz8+B,EAAUy8+B,kBAAkB//7B,eAAe,UAAWuurB,GAE1D,IAAI8wQ,EAAoB/7+B,EAAU+7+B,kBAAmBp0/B,EAAWqY,EAAUrY,SAAUk1/B,EAAY78+B,EAAU68+B,UAAWp1/B,EAAQuY,EAAUvY,MACnIm1X,EAAmBj1X,EAASi1X,iBAC5BG,EAAmB,IAAIH,EAAiBigoB,EAAWj7/B,OAAOC,OAAO,CACjEo7X,UAAqB,eAAVx1X,GAAgD,YAAtBs0/B,EAC/B/7+B,EAAU+8+B,oBACV/8+B,EAAUg9+B,2CACjBr1/B,IACHo1X,EAAiBx6Q,KAAK,QAAS,SAAU+vI,GACjCA,IAAWsqI,EAAiBqgoB,YAAYC,MACxCt6+B,IAGAA,EAAW,IAAIvD,MAAMizO,GAE7B,GACAyqI,EAAiBt6Q,GAAG,UAAWwooB,GAC/BjruB,EAAUy8+B,kBAAoB1/nB,CApB9B,CAqBJ,CACA,SAASn6W,EAAWb,GAChB,GAAwB,iBAApB/B,EAAUvY,MAGd,GAAKsa,EAAL,CAIA,IAAI6toB,EAAiB5voB,EAAUm9+B,qBAC/B,GAAKvtW,EAOmB,cAApB5voB,EAAUvY,OACVuY,EAAUwxgB,QAAQ,WAEtBo+H,EAAejhpB,KAAKmu/B,OAVpB,CACI,IAAIM,EAAcr7+B,EAAMmmF,UAAY00R,EAAiBqgoB,YAAYI,KAC3D,IAAIvsrB,EACJ,IAAIJ,EACV1wT,EAAU4C,WAAWw6+B,EAEzB,CARA,MAFIp9+B,EAAU4C,YAelB,CACA,SAASqouB,EAAc/ipB,GACnB,GAAwB,iBAApBloF,EAAUvY,MAGd,GAAqB,UAAjBygG,EAAQpgF,KAIZ,OAAQ9H,EAAUvY,OACd,IAAK,YACD,OAAQygG,EAAQpgF,MACZ,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,UAED,YADA9H,EAAU2C,KAAK,UAAWulF,GAE9B,IAAK,eAID,YAHAloF,EAAU4C,WAA8B,cAAnBslF,EAAQ+8B,OACvB,IAAIgtM,EACJ,MAEV,QAEI,OAEZ,IAAK,aACD,OAAQ/pO,EAAQpgF,MACZ,IAAK,OAID,YAHA9H,EAAUrY,SAASw/1B,OAAOj/vB,EAAQk1R,aAAazuX,KAAK,WAChDqR,EAAUs9+B,uCACd,GAEJ,IAAK,YAID,OAHAt9+B,EAAUu9+B,YAAYr15B,EAAQ2lpB,QAAS3lpB,EAAQxgG,QAAQ81/B,iBACvDx9+B,EAAU2C,KAAK,YAAaulF,QAC5BloF,EAAUwxgB,QAAQ,aAEtB,IAAK,SACL,IAAK,SAED,YADAxxgB,EAAU08+B,iBAAiB9w/B,KAAKs8F,GAEpC,IAAK,eAID,YAHAloF,EAAU4C,WAA8B,cAAnBslF,EAAQ+8B,OACvB,IAAIgtM,EACJ,MAEV,QAEI,OAEZ,IAAK,UACD,OAAQ/pO,EAAQpgF,MACZ,IAAK,YACL,IAAK,SAED,YADA9H,EAAU08+B,iBAAiB9w/B,KAAKs8F,GAEpC,IAAK,SAID,OAHAloF,EAAUy9+B,uBACVz9+B,EAAU2C,KAAK,UAAWulF,QAC1BloF,EAAUwxgB,QAAQ,aAEtB,IAAK,eAID,YAHAxxgB,EAAU4C,WAA8B,cAAnBslF,EAAQ+8B,OACvB,IAAIgtM,EACJ,MAEV,QAEI,OAEZ,QAEI,YApEJjyT,EAAU4C,WAAWktM,EAAkB5nH,EAAQ5B,KAAM4B,EAAQA,SAsErE,CACAloF,EAAUyiG,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GAC/C,OAAQA,GACJ,IAAK,YACD,IAAI6t8B,EAAUt17B,EAAU28+B,eAAe939B,OAAO,GAK9C,OAJIyw6B,EAAQpp8B,QACR8T,EAAUswH,QAtJ9B,SAAuBgl0B,GACnB,OAAOA,EAAQlz8B,OAAO,SAAUs7/B,EAASxv/B,GAkBrC,QAhBKwv/B,EAAQjof,aAAevngB,EAAOungB,aAG1Biof,EAAQjof,aAAevngB,EAAOungB,aAC/BvngB,EAAOungB,YAAY74K,SAAW8gqB,EAAQjof,YAAY74K,YAHtD8gqB,EAAQjof,YAAcvngB,EAAOungB,cAS5Biof,EAAQC,kBAAoBzv/B,EAAOyv/B,iBACpCD,EAAQC,iBAAmBC,EAAsB1v/B,EAAOyv/B,kBAEnDD,EAAQC,kBAAoBzv/B,EAAOyv/B,mBACxCD,EAAQC,iBAAmBC,EAAsBF,EAAQC,iBAAiB73/B,OAAOoI,EAAOyv/B,oBAErFD,CACX,EAAG,CAAC,EACR,CAiIsCG,CAAcvoD,SAEpCt17B,EAAU08+B,iBAAiB739B,OAAO,GAAG/6B,QAAQ,SAAUoE,GAAU,OAAO8R,EAAU2C,KAAK,UAAWzU,EAAS,GAG/G,IAAK,eAGD,OAFA8R,EAAUy8+B,kBAAkB//7B,eAAe,UAAWuurB,QACtDjruB,EAAU08C,eAAe,eAAgB84c,GAK7C,QAEI,OAEZ,GACA,IAAI7tgB,EAAWqY,EAAUrY,SAAUo0/B,EAAoB/7+B,EAAU+7+B,kBAC7D/4+B,EAAarb,EAASqb,WAAYmk1B,EAASx/1B,EAASw/1B,OAC9B,aAAtB40J,EACA50J,EAAOnk1B,GAAYrU,KAAKmu/B,GAGxBA,GAER,CArZQgB,CAAe9h/B,GACRA,CACX,CAgMA,OA5SAnE,EAAU4j/B,EAA2B3/+B,GAkHrC2/+B,EAA0Bvj/B,UAAU8k/B,wCAA0C,WAC1E,GAAmB,cAAfll/B,KAAKrQ,MACL,OAAO,KAEX,GAAmB,iBAAfqQ,KAAKrQ,MACL,MAAO,CACHomvB,QAAS/1uB,KAAKyizB,SACdzyyB,KAAM,aACN60D,QAzKE,GA4KV,IAAI70D,EAAO,CACPsxgB,WAAY,UACZoie,QAAS,QACX1j/B,KAAKrQ,OACHygG,EAAU,CACV78F,KAAMyM,KAAKm1Y,MACXwoH,YAAa39f,KAAKkk/B,kBAAkBvw5B,WACpCky5B,iBAAkB7l/B,KAAKqk/B,uBAAuBlke,YAC9CnwgB,KAAMA,EACN60D,QArLM,GAgNV,MAzBqB,YAAjBurB,EAAQpgF,MACRogF,EAAQk1R,YAActlX,KAAKik/B,kBAC3B7z5B,EAAQ3hF,UAAY,CAChBlb,KAAMmV,EACNu9+B,YAAat9+B,EACbu9+B,WAAYlm/B,KAAK8k/B,YAEjB9k/B,KAAKim4B,oBACL71yB,EAAQ+15B,kBAAoBpjqB,EAA8B/iV,KAAKim4B,oBAE/Djm4B,KAAKok/B,kBACLh05B,EAAQuta,YAAYyof,eAAiBtiqB,EAA2B9jV,KAAKok/B,kBAEzEh05B,EAAQi25B,gBAAkBpjqB,EAA4BjjV,KAAK8j/B,iBAAkB9j/B,KAAKmk/B,gBAAiBnk/B,KAAKyk/B,eAAgBzk/B,KAAK0k/B,gBAAiB1k/B,KAAK+j/B,mBAAoB/j/B,KAAKgk/B,cAC5K5z5B,EAAQuzR,UAAY/+B,EAAuB5kV,KAAK6j/B,wBAChDzz5B,EAAQ5xD,OAASil9B,EACjBrz5B,EAAQnsF,MAAQjE,KAAK4j/B,cAEC,SAAjBxz5B,EAAQpgF,MACbogF,EAAQ2lpB,QAAU/1uB,KAAKyizB,SACvBrytB,EAAQnsF,MAAQjE,KAAK4j/B,cAEC,WAAjBxz5B,EAAQpgF,OACbogF,EAAQ2lpB,QAAU/1uB,KAAKyizB,UAEpBrytB,CACX,EAKAuz5B,EAA0Bvj/B,UAAU6k/B,kBAAoB,WACpD,MAAO,CACH1y8B,KAAM,UACNtuC,MAAOjE,KAAK4j/B,aACZ5z+B,KAAM,MACN60D,QA5NM,EA8Nd,EAKA8+6B,EAA0Bvj/B,UAAUol/B,sCAAwC,WACxE,IAAIp15B,EAAUpwF,KAAKkl/B,0CACf905B,GACApwF,KAAK2k/B,kBAAkB2B,YAAYl25B,EAE3C,EAOAuz5B,EAA0Bvj/B,UAAU0K,WAAa,SAAUb,GACvD,MAAmB,iBAAfjK,KAAKrQ,QACLqQ,KAAK05gB,QAAQ,eAAgB,KAAM,CAACzvgB,IACpCjK,KAAKwl/B,wCACLxl/B,KAAK2k/B,kBAAkBl3+B,SAChB,EAGf,EAOAk2+B,EAA0Bvj/B,UAAUo4H,QAAU,SAAUpiI,GACpD,OAAQ4J,KAAKrQ,OACT,IAAK,YAMD,OALAqQ,KAAK2k/B,kBAAkB2B,YAAYx8/B,OAAOC,OAAO,CAC7CgsvB,QAAS/1uB,KAAKyizB,SACdzyyB,KAAM,SACN60D,QAnQF,GAoQCzuE,KACI,EACX,IAAK,aACL,IAAK,UAED,OADA4J,KAAK6k/B,eAAe/w/B,KAAKsC,IAClB,EAEX,QACI,OAAO,EAEnB,EASAut/B,EAA0Bvj/B,UAAUmm/B,aAAe,SAAUx8+B,EAAOxW,EAAMyW,EAAOE,GAC7ElK,KAAKo27B,eAAevr7B,KAAK,QAAS,CAAEd,MAAOA,EAAOxW,KAAMA,EAAMyW,MAAOA,EAAOE,QAASA,GACzF,EAMAy5+B,EAA0Bvj/B,UAAUwogB,KAAO,WACvC,MAAmB,cAAf5ogB,KAAKrQ,QACLqQ,KAAK05gB,QAAQ,WACb15gB,KAAKwl/B,yCACE,EAGf,EAKA7B,EAA0Bvj/B,UAAUql/B,YAAc,SAAU1vQ,EAAS38N,GACjEp5gB,KAAKyizB,SAAW1sE,EAChB/1uB,KAAKuk/B,kBAAqC,IAAjBnre,CAC7B,EAQAuqe,EAA0Bvj/B,UAAUil/B,mBAAqB,WACrD,IAAInh/B,EAAQlE,KACZ,OAA+B,IAA3BA,KAAKuk/B,kBAIE,MAGNvk/B,KAAKsk/B,gBACNtk/B,KAAKsk/B,cAAgB,IAAItt3B,EAAQ,WAGzB9yH,EAAMog/B,gBAENpg/B,EAAMqg/B,kBAAoB,EAElC,EAAGvk/B,KAAKuk/B,oBAGL,IAAI5t/B,QAAQ,SAAUC,GACzBsN,EAAMsg/B,kBAAkBt4D,QAAQt17B,EACpC,GACJ,EAOA+s/B,EAA0Bvj/B,UAAUul/B,qBAAuB,WACvD3l/B,KAAKwk/B,kBAAkBju/B,QACnByJ,KAAKsk/B,gBACLtk/B,KAAKsk/B,cAAcvp7B,QACnB/6D,KAAKsk/B,cAAgB,KAE7B,EACOX,CACX,CA9S8C,CA8S5C9qe,GASF,SAASite,EAAsB7ke,GAC3B,OAAO3shB,MAAMuwB,KAAKo8f,EAAgB32hB,OAAO,SAAUk8/B,EAAqBpw/B,GACpE,IAAIwv/B,EAAUY,EAAoB3y/B,IAAIuC,EAAO2H,KAAO3H,EAqBpD,QAnBKwv/B,EAAQ9y3B,aAAe18H,EAAO08H,aAG1B8y3B,EAAQ9y3B,aAAe18H,EAAO08H,aAC/B18H,EAAO08H,YAAYgyN,SAAW8gqB,EAAQ9y3B,YAAYgyN,YAHtD8gqB,EAAQ9y3B,YAAc18H,EAAO08H,eAQ5B8y3B,EAAQ1/+B,KAAO9P,EAAO8P,KAGlB0/+B,EAAQ1/+B,KAAO9P,EAAO8P,KACvB9P,EAAO8P,IAAI4+U,SAAW8gqB,EAAQ1/+B,IAAI4+U,YAHtC8gqB,EAAQ1/+B,IAAM9P,EAAO8P,KAQzBsg/B,EAAoBzy/B,IAAI6x/B,EAAQ7n/B,GAAI6n/B,GAC7BY,CACX,EAAG,IAAIxz/B,KAAO41B,SAClB,CAiLA84D,EAAOj9F,QAAUk//B,C,6FCjkBjB,MAAM8C,UAAkB,KACpB,WAAAhm/B,GACI4yC,SAASl/C,WACT6L,KAAK0m/B,aAAc,SACvB,CACA,kBAAAC,CAAmBC,EAAkBC,GACjC,IAAI,MAAEz09B,EAAK,QAAEjJ,GAAYnpB,KACrB6rN,EAAW,GACXirU,GAAoB,QAAqB3tgB,EAAQv5B,SAmBrD,OAlBIg3/B,GACA/6xB,EAAS/3N,KAAK,CACVkc,KAAM,SACNxlB,IAAK,SACLijkB,SAAU32B,EACVnhf,MAAO,CACHitU,MAAO5iX,KAAK0m/B,YACZtub,eAAgB,gBAChBG,WAAYqub,KAIxB/6xB,EAAS/3N,KAAK,CACVkc,KAAM,OACNxlB,IAAK,OACL0pkB,QAAQ,EACRv+gB,MAAO,CAAEkxD,QAASgg5B,MAEd,OAAc,KAAe,CAAEzgd,UAAW,CAAC,cAAetC,SAAU36gB,EAAQ26gB,WAChF,OAAc,KAAkB,CAAEowB,QAAS9hiB,EAAM0qhB,eAAiB1qhB,EAAMuqhB,SAAUwa,iBAAkB/kiB,EAAMuqhB,SAAU5rZ,KAAM,GAA+B86D,SAAUA,IAC3K,CACA,mBAAAi7xB,CAAoBF,EAAkBC,EAAa15b,EAAQj0B,GACvD,IAAI6td,EAAa/m/B,KAAKmpB,QAAQi7gB,YAAYo/X,eAC1C,IAAKujF,EACD,MAAM,IAAIx/+B,MAAM,gCAEpB,IAAI,MAAE6qB,EAAK,QAAEjJ,GAAYnpB,KACrB82hB,GAAqB1kgB,EAAMuqhB,WAAY,QAAqBxzhB,EAAQv5B,SACpEmniB,GAAyB3kgB,EAAMuqhB,WAAY,QAAyBxzhB,EAAQv5B,SAC5Ei8N,EAAW,GAkCf,OAjCI+6xB,GACA/6xB,EAAS/3N,KAAK,CACVkc,KAAM,SACNxlB,IAAK,SACLijkB,SAAU32B,EACV3oW,OAAQ,CAAC,CACD3jM,IAAK,OACLo4X,MAAO5iX,KAAK0m/B,YACZtub,eAAgB,gBAChBG,WAAYqub,MAI5B/6xB,EAAS/3N,KAAK,CACVkc,KAAM,OACNxlB,IAAK,OACL0pkB,QAAQ,EACR/lY,OAAQ,CAAC,CACD3jM,IAAK,OACLq8G,QAASgg5B,MAGjB9vd,GACAlrU,EAAS/3N,KAAK,CACVkc,KAAM,SACNxlB,IAAK,SACLijkB,UAAU,EACVt/X,OAAQ,CAAC,CACD3jM,IAAK,OACLq8G,QAAS,UAIjB,OAAc,KAAe,CAAEu/b,UAAW,CAAC,cAAetC,SAAU36gB,EAAQ26gB,WAChF,OAAcijd,EAAY,CAAE7yb,QAAS9hiB,EAAM0qhB,eAAiB1qhB,EAAMuqhB,SAAUA,SAAUvqhB,EAAMuqhB,SAAUwa,iBAAkB/kiB,EAAMuqhB,SAAUqqc,UAAW,CAAC,CAAEj21B,KAAM,CAAC,CAAE9vE,KAAMkse,EAAQ2I,SAAU58B,MAAmBrtU,SAAUA,IAC5N,EAGJ,SAASo7xB,EAAejuc,EAAMgW,GAC1B,IAAIk4b,EAAQ,GACZ,IAAK,IAAI7hgC,EAAI,EAAGA,EAAI2pkB,EAAQ3pkB,GAAK,EAC7B6hgC,EAAM7hgC,GAAK,GAEf,IAAK,IAAIs/U,KAAOq0O,EACZkuc,EAAMvirB,EAAI14P,KAAKn4E,KAAK6wU,GAExB,OAAOuirB,CACX,CACA,SAASC,EAAoBnuc,EAAMmU,GAC/B,IAAIi6b,EAAQ,GACZ,IAAK,IAAI/hgC,EAAI,EAAGA,EAAI8nkB,EAAQ9nkB,GAAK,EAC7B+hgC,EAAM/hgC,GAAK,GAEf,IAAK,IAAIs/U,KAAOq0O,EACZouc,EAAMzirB,EAAI2qP,UAAUx7jB,KAAK6wU,GAE7B,OAAOyirB,CACX,CACA,SAASC,EAAsB78mB,EAAIwkL,GAC/B,IAAIk4b,EAAQ,GACZ,GAAK18mB,EAKA,CACD,IAAK,IAAInlZ,EAAI,EAAGA,EAAI2pkB,EAAQ3pkB,GAAK,EAC7B6hgC,EAAM7hgC,GAAK,CACPwrkB,kBAAmBrmL,EAAGqmL,kBACtB1M,QAAS35K,EAAG25K,QACZnL,KAAM,IAGd,IAAK,IAAIr0O,KAAO6lE,EAAGwuK,KACfkuc,EAAMvirB,EAAI14P,KAAK+se,KAAKlljB,KAAK6wU,EAEjC,MAfI,IAAK,IAAIt/U,EAAI,EAAGA,EAAI2pkB,EAAQ3pkB,GAAK,EAC7B6hgC,EAAM7hgC,GAAK,KAenB,OAAO6hgC,CACX,CAEA,MAAMI,GAAkC,OAAgB,CACpDllgC,KAAM,UACNC,OAAQ,UACRsriB,gBAAgB,EAChBxriB,SAAU,WAEd,SAASolgC,EAAmB5irB,GACxB,IAAI,QAAEnoR,GAAYmoR,EAAI20O,WAAW9uK,GACjC,MAAmB,cAAZhuV,GAAwC,SAAZA,IAC9BmoR,EAAI20O,WAAWv0b,IAAIonb,QACpBxnO,EAAI2qP,WAAa3qP,EAAI4qP,SACrB5qP,EAAI2zO,SACJ3zO,EAAI4zO,KAEZ,CAEA,MAAMivc,UAAwB,EAAAzu+B,EAC1B,MAAAslD,GACI,IAAI,MAAEjsC,GAAUpyB,KAChB,OAAQ,OAAc,KAAelW,OAAOC,OAAO,CAAC,EAAGqoC,EAAO,CAAEg0gB,UAAW,CAAC,mBAAoB,yBAA0B,cAAe4zB,kBAAmBstb,EAAiCxtc,uBAAwB1nhB,EAAM0nhB,uBAAwB+f,iBAAkBzniB,EAAMuyS,IAAI20O,WAAWv0b,IAAIonb,SAClS,EAGJ,MAAMs7c,UAA2B,EAAA1u+B,EAC7B,MAAAslD,GACI,IAAI,MAAEjsC,EAAK,QAAEjJ,GAAYnpB,MACrB,QAAEpQ,GAAYu5B,GACd,IAAEw7S,GAAQvyS,EACV+5c,EAAav8e,EAAQ+piB,iBAAmB2td,EACxC3tb,GAAW,QAAiBh1P,EAAKwnK,EAAYhjd,GAAS,EAAMiJ,EAAM0nhB,wBACtE,OAAQ,OAAc,KAAgBhwjB,OAAOC,OAAO,CAAC,EAAGqoC,EAAO,CAAE4zgB,MAAO,IAAKI,UAAW,CAAC,mBAAoB,wBAAyBG,SAAS,QAAkBn0gB,EAAMuyS,IAAKx7S,GAAUu8gB,iBAAkBm1B,EAAoBlB,SAAUA,EAAUze,YAAY,EAAO4e,iBAAiB,IACxR,EAEJ,SAASe,EAAmBz2M,GACxB,OAAQ,OAAc,KAAU,MAC5B,OAAc,MAAO,CAAEt6Q,UAAW,uBAAwBpgF,MAAO,CAAET,YAAam7V,EAAYn7V,aAAem7V,EAAYp7V,mBACvHo7V,EAAYu1M,WAAa,OAAc,MAAO,CAAE7vd,UAAW,iBAAmBs6Q,EAAYu1M,WAC1F,OAAc,MAAO,CAAE7vd,UAAW,kBAAoBs6Q,EAAYj4W,MAAMmqC,QAAS,OAAc,KAAU,KAAM,MACvH,CAEA,MAAMox8B,UAA0B,EAAA3u+B,EAC5B,WAAAtY,GACI4yC,SAASl/C,WACT6L,KAAK2n/B,aAAc,OAAQA,EAC/B,CACA,MAAAtp7B,GACI,IAAI,MAAEjsC,GAAUpyB,MACZ,QAAE88jB,EAAO,cAAE8qb,GAAkB5n/B,KAAK2n/B,YAAYv19B,EAAMy19B,kBACxD,OAAQ,OAAc,KAAmB,CAAEzhd,UAAW,CAAC,wBAAyBmL,YAAan/gB,EAAMm/gB,YAAaiJ,WAAYpohB,EAAMoohB,WAAYqiB,WAAYzqiB,EAAMyqiB,WAAYI,QAAS7qiB,EAAM6qiB,QAASH,QAASA,EAASC,WAAY6qb,EAAexqb,eAAgBhriB,EAAMgriB,eAAgBzB,aAAcvpiB,EAAMupiB,aAAcS,cAAehqiB,EAAMgqiB,cAAevqM,eAAgB,KACrW,IAAIi2nB,GAAqB119B,EAAM4whB,UAAY5whB,EAAM4whB,UAAU6N,kBAAoB,QAC1Ez+hB,EAAM8whB,YAAc9whB,EAAM8whB,YAAY2N,kBAAoB,OAC3D,CAAC,EACL,OAAQ,OAAc,KAAU,KAAMiM,EAAQ/pkB,IAAK4xU,IAC/C,IAAImnO,EAAannO,EAAI20O,WAAWjkjB,SAASy2iB,WACzC,OAAQ,OAAc,MAAO,CAAEhic,UAAW,2BAA4Bt/G,IAAKshjB,EAAYpihB,MAAO,CACtF4/E,WAAYw+4B,EAAkBh8c,GAAc,SAAW,KACtDy7c,EAAmB5irB,IAAQ,OAAc8irB,EAAoB39/B,OAAOC,OAAO,CAAE46U,IAAKA,EAAK88E,YAAY,EAAO05J,WAAYrP,IAAe15gB,EAAMkxhB,eAAgBxJ,wBAAwB,IAAS,QAAWn1O,EAAKvyS,EAAMoohB,eAAkB,OAAcgtc,EAAiB19/B,OAAOC,OAAO,CAAE46U,IAAKA,EAAK88E,YAAY,EAAOy5J,YAAY,EAAO4e,iBAAiB,EAAO3e,WAAYrP,IAAe15gB,EAAMkxhB,eAAgBxJ,wBAAwB,IAAS,QAAWn1O,EAAKvyS,EAAMoohB,oBAG5d,EAEJ,SAASmtc,EAAYE,GACjB,IAAI/qb,EAAU,GACV8qb,EAAgB,GACpB,IAAK,IAAIxhgC,KAAayhgC,EAClB/qb,EAAQhpkB,KAAK1N,EAAUu+U,KAClBv+U,EAAU8va,WACX0xlB,EAAc9z/B,KAAK1N,EAAUu+U,KAGrC,MAAO,CAAEm4P,UAAS8qb,gBACtB,CAEA,MAAMG,GAA0B,OAAgB,CAAE3jgC,KAAM,WACxD,MAAM4jgC,UAAkB,KACpB,WAAAvn/B,GACI4yC,SAASl/C,WACT6L,KAAKio/B,WAAY,UACjBjo/B,KAAKrQ,MAAQ,CACTu4/B,aAAa,WAEjBlo/B,KAAKo7jB,aAAgB79hB,KACjB,OAAOv9B,KAAKio/B,UAAW1q9B,IACvB,OAAOv9B,KAAKoyB,MAAMwwV,MAAOrlV,GAEjC,CACA,MAAA8gC,GACI,IAAI,QAAEl1C,EAAO,MAAEiJ,EAAK,MAAEziC,EAAK,UAAEs4/B,GAAcjo/B,MACvC,QAAEpQ,EAAO,QAAEs0iB,GAAY/6gB,GACvB,KAAEmY,EAAI,YAAEiwgB,GAAgBn/gB,EAE5B,MAAMooiB,EAAepoiB,EAAMqoiB,eA0BnC,SAAiCn5hB,EAAMgpgB,EAAcpG,GACjD,MAAQz3iB,MAAO886B,EAAc786B,IAAK886B,GAAel/X,EAC3C69c,GAAiB,QAAM3+E,GAAa,GACpC4+E,EAAmBlkd,EAAQluZ,QAAQuzxB,GACnC8+E,EAAoBnkd,EAAQv+b,SAAS4j0B,GACrC++E,EAAkBpkd,EAAQluZ,QAAQmy2B,GAClCI,EAAmBrkd,EAAQv+b,SAASwi5B,GAE1C,QAASC,IAAqBE,GAAmBD,IAAsBE,IACnEth6B,QAEA3lD,EAAKq1K,YAAc4ytB,EAAa5ytB,WAEF,IAAzButV,EAAQ9ma,OAAO97F,IAAeA,EAAKq1K,UAAY6ytB,EAAW7ytB,UACvE,CAvCY6xyB,CAAwBln9B,EAAMiwgB,EAAYjH,aAAcpG,GAC5D,OAAQ,OAAc,KAAkB,CAAE8B,MAAO,KAAMpjL,MAAO5iX,KAAKo7jB,aAAch1B,UAAW,CACpF,oBACIh0gB,EAAMk0gB,iBAAmB,IAC9BC,QAASz8iB,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGqoC,EAAMm7hB,gBAAkBn7hB,EAAMqoiB,cAAgB,CAAE,kBAAmB9qkB,EAAMu4/B,aAAgB,CAAC,GAAK,CAAE5p/B,KAAM,aAAeoniB,iBAAkB+id,EAAgBnn9B,KAAMA,EAAMiwgB,YAAaA,EAAaiJ,WAAYpohB,EAAMoohB,WAAYigB,cAAeroiB,EAAMqoiB,cAAeD,aAAcA,EAAcnN,iBAAkBj7hB,EAAMi7hB,kBAAoB,CAACzmB,EAAcxiL,KAAiB,OAAc,MAAO,CAAEvxQ,IAAKzgF,EAAMs29B,WAAY5+4B,UAAW,gDAAiDpgF,MAAO,CAAEi/9B,UAAWv29B,EAAMu29B,YACtiBv29B,EAAMw29B,iBAAmB,OAAc,KAAqB,CAAE5id,MAAO,IAAKI,UAAW,CAAC,0BAA2BG,SAAS,QAAkBp9gB,EAASmY,EAAM,QAASA,KAAMA,EAAM25hB,cAAe8sb,KAC9L3joB,EAAYm2E,aACRnoa,EAAMqoiB,gBAAiB,QAAwB7qkB,IAAYwiC,EAAMy29B,cAAgB,OAAc,MAAO,CAAE/+4B,UAAW,uBACpH,OAAc88b,EAAc,CAAEZ,MAAO,IAAKI,UAAW,CAC7C,wBACAo0B,GAAgB,0BACjBj0B,QAASz8iB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,GAAG,QAAkBo/B,EAASmY,IAAQ,CAAEvjC,GAAIpO,EAAMu4/B,iBAAsB919B,EAAMqoiB,eAE/H,OAAc,MAAO,CAAE3wd,UAAW,qBAAsBpgF,MAAO,CAAE4/E,WAAY,YACzE,OAAc,IAAK,CAAEQ,UAAW,yBAA2B,WAAchzG,GAC7E,OAAc,MAAO,CAAEgzG,UAAW,wBAAyB+I,IAAKzgF,EAAM029B,gBAClE129B,EAAM229B,WACN,OAAc,MAAO,CAAEj/4B,UAAW,wBAAyBpgF,MAAO,CAAEsuM,UAAW5lM,EAAM429B,iBACjF,OAActB,EAAmB,CAAE7qb,WAAYv7hB,EAAMum9B,iBAAkBz19B,EAAMy19B,iBAAkB5qb,QAAS7qiB,EAAM6qiB,QAASG,eAAgB6qb,EAAWtsb,cAAevpiB,EAAMqoiB,cAAe2B,cAAehqiB,EAAMgqiB,cAAe7qB,YAAan/gB,EAAMm/gB,YAAa+R,eAAgBlxhB,EAAMkxhB,eAAgBN,UAAW5whB,EAAM4whB,UAAWE,YAAa9whB,EAAM8whB,YAAa1I,WAAYpohB,EAAMoohB,gBACtX,OAAc,MAAO,CAAE1wc,UAAW,qBAAuB13E,EAAM629B,YACvE,EAEJ,SAASR,EAAer29B,GACpB,OAAOA,EAAMuoiB,gBAAiB,OAAc,KAAU,KAAM,IAChE,CAiBA,SAASuub,EAAevkrB,GACpB,OAAOA,EAAI20O,WAAWjkjB,SAASy2iB,WAAa,IAAMnnO,EAAI2qP,QAC1D,CACA,SAAS65b,EAAexkrB,GACpB,OAAOukrB,EAAevkrB,GAAO,IAAMA,EAAI4qP,OAC3C,CA6KA,SAAS65b,EAAWzkrB,EAAK0krB,EAAWC,EAASh50B,GACzC,GAAIq0J,EAAI2qP,WAAa+5b,GAAa1krB,EAAI4qP,UAAY+5b,EAAU,EACxD,OAAO3krB,EAEX,IAAI20O,EAAa30O,EAAI20O,WACjBnB,EAAYmB,EAAWzliB,MACvBwkiB,GAAc,OAAgBF,EAAW,CACzC1rjB,MAAO6jL,EAAM+40B,GAAW/n9B,KACxB50C,KAAK,OAAQ4jL,EAAMg50B,EAAU,GAAGho9B,KAAM,KAE1C,OAAOx3C,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG46U,GAAM,CAAE2qP,SAAU+5b,EAAW95b,QAAS+5b,EAAU,EAAGhwc,WAAY,CAC9Fv0b,IAAKu0b,EAAWv0b,IAChBylR,GAAI1gZ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuvjB,EAAW9uK,IAAK,CAAEmlK,kBAAkB,IACxEt6iB,SAAUikjB,EAAWjkjB,SACrBwe,MAAOwkiB,GACRC,QAAS3zO,EAAI2zO,SAAWD,EAAY5rjB,MAAMkqN,YAAcwhW,EAAU1rjB,MAAMkqN,UAAW4hW,MAAO5zO,EAAI4zO,OAASF,EAAY3rjB,IAAIiqN,YAAcwhW,EAAUzrjB,IAAIiqN,WAC9J,CACA,MAAM4yyB,UAA4B,KAC9B,WAAA9o/B,GACI4yC,SAASl/C,WAET6L,KAAKwp/B,gBAAiB,EAEtBxp/B,KAAKyp/B,YAAc,CAAC,CACxB,CACA,OAAAx/b,CAAQy/b,GACJ,MAAM3sb,EAAa1phB,MAAM42gB,QAAQy/b,IAC3B,eAAE3/b,GAAmB/pjB,KACrB2p/B,EAAiB/38B,IAAW5xC,KAAKyp/B,aAAY,QAAc738B,IAEjE,IAAK,IAAI5nC,EAAQ,EAAGA,EAAQ+/iB,EAAe31jB,OAAQ4V,GAAS,EACxD+/iB,EAAe//iB,GAAS+/iB,EAAe//iB,GAAO/Y,OAAO04/B,GAEzD,OAAO5sb,CACX,CACA,sBAAAxS,CAAuB76B,EAAW99e,EAAOs4gB,GACrC,MAAM,eAAEH,EAAc,YAAE0/b,GAAgBzp/B,MAClC,cAAE0qjB,EAAa,cAAEY,EAAa,gBAAEC,GAAoB77B,EAE1D,GAAI1vhB,KAAKwp/B,gBAAkB9+b,EAAe,CACtC,MAAMk/b,GAAkB,QAAcl/b,GACtC,IAAK++b,EAAYG,GACb,GAAI5p/B,KAAK2pjB,eAAgB,CAErB,MAAMgB,EAAc7gkB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG2gkB,GAAgB,CAAEzpe,MAAM,QAAeype,EAAczpe,KAAMrvC,EAAMqvC,QAIrHwo6B,GADsB,QAAc9+b,KACP,EAC7BZ,EAAeuB,GAAeC,GAAmBZ,EACjDT,EAAcp2jB,KAAK62jB,GACnB3qjB,KAAK6qjB,WAAWH,EAAe94gB,EAAOs4gB,EAC1C,MAEIu/b,EAAYG,IAAmB,EAC/B1/b,EAAcp2jB,KAAK42jB,EAG/B,CAEAr3gB,MAAMk3gB,uBAAuB76B,EAAW99e,EAAOs4gB,EACnD,EAGJ,MAAM2/b,UAAiB,KACnB,WAAApp/B,GACI4yC,SAASl/C,WACT6L,KAAK8p/B,WAAa,IAAI,KACtB9p/B,KAAK+p/B,YAAc,IAAI,KACvB/p/B,KAAKgq/B,SAAW,IAAI,KACpBhq/B,KAAKiq/B,eAAiB,IAAI,KAC1Bjq/B,KAAKio/B,WAAY,UACjBjo/B,KAAKrQ,MAAQ,CACTu6/B,eAAgB,KAChBC,iBAAkB,KAClBC,WAAY,CAAC,GAEjBpq/B,KAAKq+pB,aAAgBx+iB,IACbA,GACA7/G,KAAKqq/B,cAAa,GAG9B,CACA,MAAAhs7B,GACI,IAAI,MAAEjsC,EAAK,MAAEziC,EAAK,QAAEw5B,GAAYnpB,MAC5B,QAAEpQ,GAAYu5B,EACdgkiB,EAAS/6hB,EAAMk+I,MAAMl8K,OACrBk2/B,EAAqBnD,EAAoB/09B,EAAMk+hB,iBAAkBnD,GACjEo9b,EAAmBpD,EAAoB/09B,EAAMo+hB,YAAarD,GAC1Dq9b,EAAqBrD,EAAoBnn/B,KAAKyq/B,mBAAoBt9b,GAClEu9b,EAAkBvD,EAAoBnn/B,KAAK2q/B,gBAAiBx9b,IAC5D,oBAAEy9b,EAAmB,mBAAEC,EAAkB,SAAEC,EAAQ,eAAEC,GAvQjE,SAA+B/xc,EAC/BhgB,EAAcC,EAAiBywB,EAAa0gc,EAAYD,EAAkB750B,GACtE,IAAI21U,EAAY,IAAIsjgB,EAAqByB,IAErC,IAAIC,EAASjyc,EAAKgyc,EAASx0/B,OAAO8ijB,WAAWjkjB,SAASy2iB,WAClD,IAAMk/c,EAAS/p6B,KAAKx0F,MACpB,KAAOu+/B,EAAS/p6B,KAAKv0F,IAAM,GAE/B,OAAO09/B,EAAWa,IAAW,IAEjChlgB,EAAU0jE,gBAAiB,EAC3B1jE,EAAUyjE,YAAcA,GACH,IAAjB1wB,IAA6C,IAApBC,GACzBhzC,EAAU2jE,SAAWugc,EACrBlkgB,EAAUujgB,gBAAiB,GAEE,iBAAjBxwd,EACZ/yC,EAAU4jE,YAAc7wB,EAEQ,iBAApBC,IACZhzC,EAAU4jE,YAAc5wB,EACxBhzC,EAAUujgB,gBAAiB,GAG/B,IAAIE,EAAY,GACZwB,EAAoB,GACxB,IAAK,IAAI7lgC,EAAI,EAAGA,EAAI2zjB,EAAK5kjB,OAAQ/O,GAAK,EAAG,CACrC,IAAIs/U,EAAMq0O,EAAK3zjB,GACX4lgC,EAAS9B,EAAexkrB,GAET,MADDylrB,EAAWa,GAEzBvB,EAAU51/B,KAAK,CACX0C,MAAOnR,EACP47F,KAAM,CACFx0F,MAAOk4U,EAAI2qP,SACX5ikB,IAAKi4U,EAAI4qP,QAAU,KAK3B27b,EAAkBp3/B,KAAK6wU,EAE/B,CACA,IAAIulP,EAAgBjkE,EAAUgkE,QAAQy/b,GAClCyB,EAAWllgB,EAAUimE,WACrB,oBAAE0+b,EAAmB,mBAAEC,EAAkB,gBAAEO,GAsDnD,SAAoBC,EAAUryc,EAAM1oY,GAChC,IAAIg70B,EA4DR,SAA6B16/B,EAAOu8jB,GAChC,IAAIm+b,EAAiB,GACrB,IAAK,IAAIh/6B,EAAM,EAAGA,EAAM6gf,EAAQ7gf,GAAO,EACnCg/6B,EAAex3/B,KAAK,IAExB,IAAK,IAAIjH,KAAQ+D,EACb,IAAK,IAAI07E,EAAMz/E,EAAKo0F,KAAKx0F,MAAO6/E,EAAMz/E,EAAKo0F,KAAKv0F,IAAK4/E,GAAO,EACxDg/6B,EAAeh/6B,GAAKx4E,KAAKjH,GAGjC,OAAOy+/B,CACX,CAvEyBC,CAAoBF,EAAU/60B,EAAMl8K,QACrDw2/B,EAAsB,GACtBC,EAAqB,GACrBO,EAAkB,GACtB,IAAK,IAAI9+6B,EAAM,EAAGA,EAAMgkG,EAAMl8K,OAAQk4E,GAAO,EAAG,CAC5C,IAAI17E,EAAQ06/B,EAAeh/6B,GAEvBu76B,EAAmB,GACnBnvG,EAAgB,EAChB8yG,EAAmB,EACvB,IAAK,IAAI3+/B,KAAQ+D,EAAO,CACpB,IAAI+zU,EAAMq0O,EAAKnsjB,EAAK2J,OACpBqx/B,EAAiB/z/B,KAAK,CAClB6wU,IAAKykrB,EAAWzkrB,EAAKr4P,EAAKA,EAAM,EAAGgkG,GACnC4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa5+/B,EAAK29jB,WAClBxyV,UAAWnrO,EAAK29jB,WAAakuV,IAEjCA,EAAgB7r5B,EAAK29jB,WAAa39jB,EAAKgpD,SAC3C,CAEA,IAAI618B,EAAkB,GACtBhzG,EAAgB,EAChB8yG,EAAmB,EACnB,IAAK,IAAI3+/B,KAAQ+D,EAAO,CACpB,IAAI+zU,EAAMq0O,EAAKnsjB,EAAK2J,OAChBgvX,EAAa34X,EAAKo0F,KAAKv0F,IAAMG,EAAKo0F,KAAKx0F,MAAQ,EAC/Ck//B,EAAa9+/B,EAAKo0F,KAAKx0F,QAAU6/E,EACrCk/6B,GAAoB3+/B,EAAK29jB,WAAakuV,EACtCA,EAAgB7r5B,EAAK29jB,WAAa39jB,EAAKgpD,UACnC2vU,GACAgmoB,GAAoB3+/B,EAAKgpD,UACrB818B,GACAD,EAAgB53/B,KAAK,CACjB6wU,IAAKykrB,EAAWzkrB,EAAK93U,EAAKo0F,KAAKx0F,MAAOI,EAAKo0F,KAAKv0F,IAAK4jL,GACrD4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa5+/B,EAAK29jB,WAClBxyV,UAAW,KAId2zxB,IACLD,EAAgB53/B,KAAK,CACjB6wU,IAAKykrB,EAAWzkrB,EAAK93U,EAAKo0F,KAAKx0F,MAAOI,EAAKo0F,KAAKv0F,IAAK4jL,GACrD4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa5+/B,EAAK29jB,WAClBxyV,UAAWwzxB,IAEfA,EAAmB,EAE3B,CACAZ,EAAoB92/B,KAAK+z/B,GACzBgD,EAAmB/2/B,KAAK43/B,GACxBN,EAAgBt3/B,KAAK03/B,EACzB,CACA,MAAO,CAAEZ,sBAAqBC,qBAAoBO,kBACtD,CAlHuEQ,CAAWT,EAAUnyc,EAAM1oY,GAC1Fw60B,EAAW,GACXC,EAAiB,GAErB,IAAK,IAAIpmrB,KAAOumrB,EAAmB,CAC/BL,EAAmBlmrB,EAAI2qP,UAAUx7jB,KAAK,CAClC6wU,MACAuxF,WAAW,EACX1wC,YAAY,EACZimoB,YAAa,EACbzzxB,UAAW,IAEf,IAAK,IAAI1rJ,EAAMq4P,EAAI2qP,SAAUhjf,GAAOq4P,EAAI4qP,QAASjjf,GAAO,EACpDs+6B,EAAoBt+6B,GAAKx4E,KAAK,CAC1B6wU,IAAKykrB,EAAWzkrB,EAAKr4P,EAAKA,EAAM,EAAGgkG,GACnC4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa,EACbzzxB,UAAW,GAGvB,CAEA,IAAK,IAAI1rJ,EAAM,EAAGA,EAAMgkG,EAAMl8K,OAAQk4E,GAAO,EACzCw+6B,EAASh3/B,KAAK,GAElB,IAAK,IAAI62jB,KAAeT,EAAe,CACnC,IAAIvlP,EAAMq0O,EAAK2R,EAAYn0jB,OACvBq1/B,EAAalhc,EAAY1pe,KAC7B4p6B,EAAmBgB,EAAWp//B,OAAOqH,KAAK,CACtC6wU,IAAKykrB,EAAWzkrB,EAAKknrB,EAAWp//B,MAAOo//B,EAAWn//B,IAAK4jL,GACvD4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa,EACbzzxB,UAAW,IAEf,IAAK,IAAI1rJ,EAAMu/6B,EAAWp//B,MAAO6/E,EAAMu/6B,EAAWn//B,IAAK4/E,GAAO,EAC1Dw+6B,EAASx+6B,IAAQ,EACjBs+6B,EAAoBt+6B,GAAKx4E,KAAK,CAC1B6wU,IAAKykrB,EAAWzkrB,EAAKr4P,EAAKA,EAAM,EAAGgkG,GACnC4lP,WAAW,EACX1wC,YAAY,EACZimoB,YAAa,EACbzzxB,UAAW,GAGvB,CAEA,IAAK,IAAI1rJ,EAAM,EAAGA,EAAMgkG,EAAMl8K,OAAQk4E,GAAO,EACzCy+6B,EAAej3/B,KAAKs3/B,EAAgB9+6B,IAExC,MAAO,CAAEs+6B,sBAAqBC,qBAAoBC,WAAUC,iBAChE,CAsKoFe,EAAsB,QAAc159B,EAAMm+hB,YAAa3gkB,EAAQimiB,YAAazjgB,EAAM4mgB,aAAc5mgB,EAAM6mgB,gBAAiBrpiB,EAAQmmiB,iBAAkBpmiB,EAAMy6/B,WAAYz6/B,EAAMw6/B,iBAAkB/39B,EAAMk+I,OACzQw30B,EACF119B,EAAM4whB,WAAa5whB,EAAM4whB,UAAU6N,mBAChCz+hB,EAAM8whB,aAAe9whB,EAAM8whB,YAAY2N,mBACxC,CAAC,EACL,OAAQ,OAAc,KAAM,CAAEh+c,IAAK7yG,KAAKio/B,UAAW3p/B,KAAM,OACrD8zB,EAAM47hB,aAAe57hB,EAAM47hB,cAC3B57hB,EAAMk+I,MAAMv9K,IAAI,CAACgrJ,EAAMzxE,KACnB,IAAIy/6B,EAAgB/r/B,KAAKgs/B,aAAa1/6B,EAAKl6C,EAAMuqhB,SAAWiuc,EAAoBt+6B,GAAOu+6B,EAAmBv+6B,GAAMl6C,EAAMoohB,WAAYstc,GAC9HmE,EAAgBjs/B,KAAKgs/B,aAAa1/6B,EA2JtD,SAA+B4/6B,EAAYC,GACvC,IAAKD,EAAW93/B,OACZ,MAAO,GAEX,IAAIg4/B,EASR,SAA8BD,GAC1B,IAAIC,EAAmB,CAAC,EACxB,IAAK,IAAI5y/B,KAAc2y/B,EACnB,IAAK,IAAI/lgC,KAAaoT,EAClB4y/B,EAAiBhmgC,EAAUu+U,IAAI20O,WAAWjkjB,SAASy2iB,YAAc1ljB,EAAUqlgC,YAGnF,OAAOW,CACX,CAjB2BC,CAAqBF,GAC5C,OAAOD,EAAWn5/B,IAAK4xU,IAAQ,CAC3BA,MACAuxF,WAAW,EACX1wC,YAAY,EACZimoB,YAAaW,EAAiBznrB,EAAI20O,WAAWjkjB,SAASy2iB,YACtD9zU,UAAW,IAEnB,CAvK2Ds0xB,CAAsB5B,EAAgBp+6B,GAAMu+6B,GAAqBz49B,EAAMoohB,WAAY,CAAC,EAAGvzd,QAAQ70D,EAAM4whB,WAAY/7d,QAAQ70D,EAAM8whB,cAAc,GACxL,OAAQ,OAAc8kc,EAAW,CAAEx9/B,IAAKuzJ,EAAKvzJ,IAAKo4X,MAAO5iX,KAAK8p/B,WAAW3rqB,UAAUpgM,EAAKvzJ,KAAMk+/B,WAAY1o/B,KAAK+p/B,YAAY5rqB,UAAUpgM,EAAKvzJ,KAA+E+mjB,YAAan/gB,EAAMm/gB,YAAajwgB,KAAMy8G,EAAKz8G,KAAMm5hB,cAAeroiB,EAAMm69B,eAAgB3D,eAAgBx29B,EAAMo69B,iBAA2B,IAARlg7B,EAAWu86B,YAAaz29B,EAAMo69B,gBAA4Ehyc,WAAYpohB,EAAMoohB,WAAY8I,eAAgBlxhB,EAAMkxhB,eAAgBN,UAAW5whB,EAAM4whB,UAAWE,YAAa9whB,EAAM8whB,YAAamK,iBAAkBtva,EAAKsva,iBAAkBE,eAAgBxva,EAAKwva,eAAgBjnB,gBAAiBvoZ,EAAKuoZ,gBAAiB81B,cAAer+a,EAAKq+a,cAAea,QAAS6tb,EAASx+6B,GAAM086B,cAAe+B,EAAez+6B,GAAMu76B,iBAAkB+C,EAAoBt+6B,GAAMw86B,eAAgB9o/B,KAAKgq/B,SAAS7rqB,UAAUpgM,EAAKvzJ,KAAMu+/B,WACj3B,OAAc,KAAU,MACpB,OAAc,KAAU,KAAMgD,IAC9B,OAAc,KAAU,KAAME,IAAkBhD,WACpD,OAAc,KAAU,KACpBjp/B,KAAKys/B,eAAejC,EAAmBl+6B,GAAM,aAC7CtsE,KAAKys/B,eAAenC,EAAmBh+6B,GAAM,gBAC7CtsE,KAAKys/B,eAAelC,EAAiBj+6B,GAAM,aAAeq86B,UAAWv29B,EAAMs69B,kBAE/F,CACA,iBAAAh6qB,GACI1yU,KAAKqq/B,cAAa,GAClBrq/B,KAAKmpB,QAAQs7gB,iBAAiBzkiB,KAAKq+pB,aACvC,CACA,kBAAAhrV,CAAmBC,EAAWgvB,GAC1B,IAAIqqpB,EAAe3s/B,KAAKoyB,MACxBpyB,KAAKqq/B,eAAc,OAAa/2qB,EAAWq5qB,GAC/C,CACA,oBAAAp5qB,GACIvzU,KAAKmpB,QAAQu7gB,oBAAoB1kiB,KAAKq+pB,aAC1C,CACA,gBAAAosV,GACI,IAAI,MAAEr49B,GAAUpyB,KAChB,OAAIoyB,EAAM4whB,WAAa5whB,EAAM4whB,UAAUhK,KAAK5kjB,OACjCg+B,EAAM4whB,UAAUhK,KAEvB5mhB,EAAM8whB,aAAe9whB,EAAM8whB,YAAYlK,KAAK5kjB,OACrCg+B,EAAM8whB,YAAYlK,KAEtB5mhB,EAAMi+hB,iBACjB,CACA,aAAAs6b,GACI,IAAI,MAAEv49B,GAAUpyB,KAChB,OAAIoyB,EAAM8whB,aAAe9whB,EAAM8whB,YAAYlK,KAAK5kjB,OACrCg+B,EAAM8whB,YAAYlK,KAEtB,EACX,CACA,YAAAgzc,CAAa1/6B,EAAKsg7B,EAAepyc,EAAYstc,EAAmBrmmB,EAAYy5J,EAAY4e,GACpF,IAAI,QAAE3wiB,GAAYnpB,MACd,eAAEsjjB,GAAmBtjjB,KAAKoyB,OAC1B,eAAE839B,GAAmBlq/B,KAAKrQ,MAC1BmqjB,EAAqD,IAA5B95iB,KAAKoyB,MAAMk+I,MAAMl8K,OAC1C0mjB,EAAWr5J,GAAcy5J,GAAc4e,EACvC3xb,EAAQ,GACZ,GAAI+h3B,EACA,IAAK,IAAI9jgC,KAAawmgC,EAAe,CACjC,IAAI,IAAEjorB,GAAQv+U,GACV,WAAE0ljB,GAAennO,EAAI20O,WAAWjkjB,SAChC6ga,EAAY9va,EAAU8va,YAAc4xlB,EAAkBh8c,GACtDtmL,EAAap/X,EAAUo/X,WACvBr7X,EAAO,GACPF,EAAQ,GACRu7X,IACIr8V,EAAQw5gB,OACR14iB,EAAQ,EACRE,EAAO+//B,EAAeljc,MAAMriP,EAAI4qP,SAAW26b,EAAeljc,MAAMriP,EAAI2qP,YAGpEnlkB,EAAO,EACPF,EAAQiggC,EAAejjc,OAAOtiP,EAAI2qP,UAAY46b,EAAejjc,OAAOtiP,EAAI4qP,WAOhFpnb,EAAMr0I,MAAK,OAAc,MAAO,CAAEg2G,UAAW,4BAA8B07Q,EAAa,gCAAkC,IAAKh7X,IAAK0+/B,EAAevkrB,GAAM9xN,IAAKioc,EAAW,KAAO96iB,KAAKiq/B,eAAe9rqB,UAAUgrqB,EAAexkrB,IAAOj7S,MAAO,CACnO4/E,WAAY4sT,EAAY,GAAK,SAC7Bl+L,UAAWwtJ,EAAa,GAAKp/X,EAAU4xO,UACvChuO,IAAKw7X,EAAap/X,EAAUqlgC,YAAc,GAC1CthgC,OACAF,UACCs9/B,EAAmB5irB,IAAQ,OAAc8irB,EAAoB39/B,OAAOC,OAAO,CAAE46U,IAAKA,EAAK88E,WAAYA,EAAY05J,WAAYrP,IAAewX,EAAgBxJ,uBAAwBA,IAA0B,QAAWn1O,EAAK61O,MAAkB,OAAcgtc,EAAiB19/B,OAAOC,OAAO,CAAE46U,IAAKA,EAAK88E,WAAYA,EAAYy5J,WAAYA,EAAY4e,gBAAiBA,EAAiB3e,WAAYrP,IAAewX,EAAgBxJ,uBAAwBA,IAA0B,QAAWn1O,EAAK61O,MACnf,CAEJ,OAAOrya,CACX,CACA,cAAAsk3B,CAAezzc,EAAM+hB,GACjB,IAAI,MAAEp4B,GAAU3iiB,KAAKmpB,SACjB,WAAEqxhB,GAAex6iB,KAAKoyB,OACtB,eAAE839B,GAAmBlq/B,KAAKrQ,MAC1Bw4I,EAAQ,GACZ,GAAI+h3B,EACA,IAAK,IAAIvlrB,KAAOq0O,EAAM,CAClB,IAAI6zc,EAAelqd,EAAQ,CACvB14iB,MAAO,EACPE,KAAM+//B,EAAeljc,MAAMriP,EAAI4qP,SAAW26b,EAAeljc,MAAMriP,EAAI2qP,WACnE,CACAnlkB,KAAM,EACNF,MAAOiggC,EAAejjc,OAAOtiP,EAAI2qP,UAAY46b,EAAejjc,OAAOtiP,EAAI4qP,UAE3Epnb,EAAMr0I,MAAK,OAAc,MAAO,CAAEtJ,KAAK,QAAmBm6U,EAAI20O,YAAaxvc,UAAW,wBAAyBpgF,MAAOmj+B,GAA6B,aAAb9xb,GAClI,OAAc,KAASjxkB,OAAOC,OAAO,CAAE46U,IAAKA,IAAO,QAAWA,EAAK61O,MACnE,QAAWugB,IACnB,CAEJ,OAAO,OAAc,KAAU,CAAC,KAAM5yb,EAC1C,CACA,YAAAki3B,CAAayC,GACT,IAAI,MAAE169B,EAAK,MAAEziC,EAAK,YAAEo6/B,GAAgB/p/B,KACpC,IAAKoyB,EAAMuqhB,UACe,OAAtBvqhB,EAAMlmC,YACR,CACE,GAAI4ggC,EAAwB,CACxB,IAAIC,EAAW369B,EAAMk+I,MAAMv9K,IAAKgrJ,GAASgs2B,EAAYh1b,WAAWh3a,EAAKvzJ,MACrE,GAAIuigC,EAAS34/B,OAAQ,CACjB,IAAIsyjB,EAAW1mjB,KAAKio/B,UAAUpy/B,QAC1Bm3/B,EAAmB,IAAI,KAActmc,EAAUqmc,GAAU,GAC7D,GACKp9/B,EAAMu6/B,gBAAmBv6/B,EAAMu6/B,eAAezic,UAAUulc,IACzDht/B,KAAKN,SAAS,CACVwq/B,eAAgB,IAAI,KAAcxjc,EAAUqmc,GAAU,GACtD,IAGZ,CACJ,CACA,MAAME,EAAgBjt/B,KAAKrQ,MAAMy6/B,WAC3B8C,EAAgBlt/B,KAAKmt/B,kBACrBC,GAA8C,IAAvBh79B,EAAM4mgB,eAAmD,IAA1B5mgB,EAAM6mgB,gBAClEj5hB,KAAKwic,aAAa,CAId4njB,WAAYtggC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkjgC,GAAgBC,GAC5D/C,iBAAkBiD,EAAuBpt/B,KAAKqt/B,0BAA4B,MAElF,CACJ,CACA,eAAAF,GACI,IAAIG,EAAWtt/B,KAAKiq/B,eAAel1b,WAC/Bq1b,EAAa,CAAC,EAElB,IAAK,IAAIa,KAAUqC,EAAU,CACzB,IAAI1mgC,EAASpB,KAAK+F,MAAM+hgC,EAASrC,GAAQr+/B,wBAAwBhG,QACjEwjgC,EAAWa,GAAUzlgC,KAAKmE,IAAIyggC,EAAWa,IAAW,EAAGrkgC,EAC3D,CACA,OAAOwjgC,CACX,CACA,uBAAAiD,GACI,IAAIE,EAAWvt/B,KAAKoyB,MAAMk+I,MAAM,GAAG9lL,IAC/By/hB,EAASjqhB,KAAK8p/B,WAAW/0b,WAAWw4b,GACpCC,EAAgBxt/B,KAAKgq/B,SAASj1b,WAAWw4b,GAC7C,OAAOtje,EAAOr9hB,wBAAwB1C,OAASsjgC,EAAc5ggC,wBAAwB5C,GACzF,CACA,UAAAyjgC,GACI,IAAIC,EAAQ1t/B,KAAK8p/B,WAAW/0b,WAC5B,OAAO/0jB,KAAKoyB,MAAMk+I,MAAMv9K,IAAKgrJ,GAAS2v2B,EAAM3v2B,EAAKvzJ,KACrD,EAEJq//B,EAAS9kd,iBAAiB,CACtBqld,WAAY,MAyBhB,MAAMuD,UAAkB,KACpB,WAAAlt/B,GACI4yC,SAASl/C,WACT6L,KAAK4t/B,uBAAwB,OAAQ3G,GACrCjn/B,KAAK6t/B,kBAAmB,OAAQC,GAChC9t/B,KAAK+t/B,kBAAmB,OAAQ9G,GAChCjn/B,KAAKgu/B,wBAAyB,OAAQ/G,GACtCjn/B,KAAKoijB,gBAAiB,OAAQilc,GAC9Brn/B,KAAKsijB,kBAAmB,OAAQ+kc,GAChCrn/B,KAAKiu/B,QAAU,IAAI,IACvB,CACA,MAAA5v7B,GACI,IAAI,MAAEjsC,EAAK,QAAEjJ,GAAYnpB,KACrBgvjB,EAAS58hB,EAAMk+I,MAAMl8K,OACrB85/B,EAAwBlu/B,KAAK4t/B,sBAAsBx79B,EAAMk+hB,iBAAkBtB,GAC3Em/b,EAAmBnu/B,KAAK6t/B,iBAAiBz79B,EAAMo+hB,YAAaxB,GAC5Do/b,EAAmBpu/B,KAAK+t/B,iBAAiB379B,EAAMm+hB,YAAavB,GAC5Dq/b,EAAyBru/B,KAAKgu/B,uBAAuB579B,EAAMi+hB,kBAAmBrB,GAC9Es/b,EAAiBtu/B,KAAKoijB,eAAehwhB,EAAM4whB,UAAWgM,GACtDu/b,EAAmBvu/B,KAAKsijB,iBAAiBlwhB,EAAM8whB,YAAa8L,GAG5D09b,EAAiB19b,GAAU,GAAK58hB,EAAMlmC,YACtCkmC,EAAMlmC,YAAci9B,EAAQv5B,QAAQ8pD,YAAc,EAClD,KACJ,OAAQ,OAAc,KAAU,CAAE0D,KAAM,OAAS,CAACq9f,EAASD,KAAgB,OAAc,KAAU,KAAMpohB,EAAMk+I,MAAMv9K,IAAI,CAACu9K,EAAOrkG,KAAS,OAAc496B,EAAU,CAAEh34B,IAAK7yG,KAAKiu/B,QAAQ9vqB,UAAUlyQ,GAAMzhF,IAAK8lL,EAAMl8K,OACvMk8K,EAAM,GAAGhvI,KAAKs/D,cACd30B,EACJsg7B,eAAgBv9b,EAAS,EAAGw9b,gBAAiBp69B,EAAMo69B,gBAAiBhyc,WAAYA,EAAYjJ,YAAan/gB,EAAMm/gB,YAAajhY,MAAOA,EAAO09Y,YAAa57hB,EAAMo89B,eAAgBl+b,iBAAkB49b,EAAsBji7B,GAAMq3e,eAAgBlxhB,EAAMkxhB,eAAgBkN,YAAa29b,EAAiBli7B,GAAMskf,YAAa69b,EAAiBni7B,GAAMokf,kBAAmBg+b,EAAuBpi7B,GAAM+2e,UAAWsrc,EAAeri7B,GAAMi3e,YAAaqrc,EAAiBti7B,GAAM+sd,aAAc5mgB,EAAM4mgB,aAAcC,gBAAiB7mgB,EAAM6mgB,gBAAiB/siB,YAAakmC,EAAMlmC,YAAaD,aAAcmmC,EAAMnmC,aAAcyggC,cAAeA,EAAe/vc,SAAUvqhB,EAAMuqhB,aACjoB,CACA,iBAAAjqO,GACI1yU,KAAKukiB,8BACT,CACA,kBAAAlxN,GAEIrzU,KAAKukiB,8BACT,CACA,4BAAAA,GACI,IAAKvkiB,KAAKq7jB,OAAQ,CAGd,MAAMozb,EAAczu/B,KAAKiu/B,QAAQl5b,WAAW,GAAG04b,aAAa,GACtDpyb,EAASozb,EAAcA,EAAY9gzB,QAAQ,oBAAsB,KACnE0tX,IACAr7jB,KAAKq7jB,OAASA,EACdr7jB,KAAKmpB,QAAQo7gB,6BAA6BvkiB,KAAM,CAC5Cu9B,GAAI89hB,EACJte,kBAAmB/8iB,KAAKoyB,MAAM2qhB,oBAG1C,CACJ,CACA,oBAAAxpO,GACQvzU,KAAKq7jB,SACLr7jB,KAAKmpB,QAAQq7gB,+BAA+BxkiB,MAC5CA,KAAKq7jB,OAAS,KAEtB,CAGA,WAAArS,GACIhpjB,KAAK0u/B,aAAe,IAAI,KAAc1u/B,KAAKq7jB,OAAQr7jB,KAAKiu/B,QAAQ7rzB,UAAUrvM,IAAK47/B,GAAWA,EAAOlB,aAAa,KAC9G,GAAO,GACPzt/B,KAAK4u/B,aAAe,IAAI,KAAc5u/B,KAAKq7jB,OAAQr7jB,KAAKiu/B,QAAQl5b,WAAW,GAAG04b,cAC9E,GACA,EACJ,CACA,QAAAxkc,CAASC,EAAcC,GACnB,IAAI,aAAEylc,EAAY,aAAEF,GAAiB1u/B,KACjCssE,EAAMsi7B,EAAaznc,YAAY+B,GAC/Bj9e,EAAMyi7B,EAAarnc,WAAW8B,GAClC,GAAW,MAAPl9e,GAAsB,MAAPK,EAAa,CAC5B,IAAIyxE,EAAO/9I,KAAKoyB,MAAMk+I,MAAMrkG,GAAKK,GACjC,MAAO,CACHile,YAAavxiB,KAAKoyB,MAAMm/gB,YACxB2C,SAAUpqjB,OAAOC,OAAO,CAAE8pB,MAAO7T,KAAK6u/B,aAAa5i7B,EAAKK,GAAM6/d,QAAQ,GAAQpuZ,EAAKq+a,eACnFC,MAAOr8jB,KAAK8u/B,UAAU7i7B,EAAKK,GAC3Bz/E,KAAM,CACF1C,KAAMykgC,EAAa5nc,MAAM16e,GACzBriF,MAAO2kgC,EAAa3nc,OAAO36e,GAC3BtiF,IAAK0kgC,EAAanngB,KAAKt7a,GACvB/hF,OAAQwkgC,EAAalngB,QAAQv7a,IAEjC0yT,MAAO,EAEf,CACA,OAAO,IACX,CACA,SAAAmwnB,CAAU7i7B,EAAKK,GACX,OAAOtsE,KAAKiu/B,QAAQl5b,WAAW9of,GAAKwh7B,aAAanh7B,EACrD,CACA,YAAAui7B,CAAa5i7B,EAAKK,GACd,IAAI7/E,EAAQuT,KAAKoyB,MAAMk+I,MAAMrkG,GAAKK,GAAKhrC,KAEvC,MAAO,CAAE70C,QAAOC,KADN,OAAQD,EAAO,GAE7B,EAEJ,SAASqhgC,EAAqB90c,EAAMgW,GAChC,OAAOi4b,EAAejuc,EAAK/njB,OAAO89/B,GAAc//b,EACpD,CACA,SAAS+/b,EAAYpqrB,GACjB,OAAOA,EAAI20O,WAAWv0b,IAAIonb,MAC9B,CAEA,MAAM6id,UAAc,KAChB,WAAAvu/B,GACI4yC,SAASl/C,WACT6L,KAAK4iX,OAAQ,UACb5iX,KAAKiv/B,kBAAmB,CAC5B,CACA,MAAA5w7B,GACI,IAAI,MAAEjsC,GAAUpyB,MACZ,gBAAEi5hB,EAAe,aAAED,EAAY,WAAE5C,GAAehkgB,EAChD889B,GAAoC,IAAjBl2d,IAA6C,IAApBC,EAG5Ci2d,IAAqB94d,IACrB84d,GAAmB,EACnBj2d,EAAkB,KAClBD,EAAe,MAEnB,IAAItnL,EAAa,CACb,kBACAw9oB,EAAmB,2BAA6B,6BAChD94d,EAAa,GAAK,2BAEtB,OAAQ,OAAc,MAAO,CAAEvjb,IAAK7yG,KAAK4iX,MAAO94Q,UAAW4nQ,EAAWxzW,KAAK,KAAMwrB,MAAO,CAGhFhjC,MAAO0rC,EAAMlmC,YACb4pkB,SAAU1jiB,EAAM8jiB,iBAEpB,OAAc,QAAS,CAAE53jB,KAAM,eAAgBwrG,UAAW,2BAA4BpgF,MAAO,CACrFhjC,MAAO0rC,EAAMlmC,YACb4pkB,SAAU1jiB,EAAM8jiB,cAChBtvkB,OAAQwviB,EAAahkgB,EAAMnmC,aAAe,KAE9CmmC,EAAM+89B,cACN,OAAc,QAAS,CAAE7w/B,KAAM,iBAC3B,OAAcqv/B,EAAW,CAAEp8c,YAAan/gB,EAAMm/gB,YAAajhY,MAAOl+I,EAAMk+I,MAAOk+0B,eAAgBp89B,EAAMo89B,eAAgBhC,gBAAiBp69B,EAAMo69B,gBAAiBtggC,YAAakmC,EAAMlmC,YAAaD,aAAcmmC,EAAMnmC,aAAcqkkB,iBAAkBl+hB,EAAMk+hB,iBAAkBE,YAAap+hB,EAAMo+hB,YAAaD,YAAan+hB,EAAMm+hB,YAAaF,kBAAmBj+hB,EAAMi+hB,kBAAmB/M,eAAgBlxhB,EAAMkxhB,eAAgBN,UAAW5whB,EAAM4whB,UAAWE,YAAa9whB,EAAM8whB,YAAalqB,aAAcA,EAAcC,gBAAiBA,EAAiB0jB,SAAUvqhB,EAAMuqhB,SAAUI,kBAAmB3qhB,EAAM2qhB,sBACxlB,CACA,iBAAArqO,GACI1yU,KAAKov/B,oBACT,CACA,kBAAA/7qB,CAAmBC,GACXA,EAAUi+N,cAAgBvxiB,KAAKoyB,MAAMm/gB,YACrCvxiB,KAAKov/B,qBAGLpv/B,KAAKqv/B,kBAEb,CACA,kBAAAD,GACIpv/B,KAAKiv/B,kBAAmB,EACxBjv/B,KAAKqv/B,kBACT,CACA,gBAAAA,GACI,GAAIrv/B,KAAKiv/B,kBACLjv/B,KAAKoyB,MAAMlmC,YACb,CACE,MAAMy1oB,EAYlB,SAA4Bt9Q,EAAaktL,GACrC,IAAIh0gB,EASJ,OARIg0gB,EAAY9H,iBAAiBzljB,MAAM,gBACnCu5C,EAAK8mV,EAAY9mX,cAAc,gBAAe,QAAkBg0iB,EAAYjI,sBAG3E/rgB,IACDA,EAAK8mV,EAAY9mX,cAAc,gBAAe,QAAgBg0iB,EAAYjI,mBAGvE/rgB,CACX,CAvB8B+x9B,CAAmBtv/B,KAAK4iX,MAAM/sX,QAASmK,KAAKoyB,MAAMm/gB,aACpE,GAAIowF,EAAW,CACX,MAAMj7E,EAAWi7E,EAAUh0b,QAAQ,oBAC7B46b,EAAW7hF,EAAS/4W,QAAQ,gBAC5B1gN,EAAY00oB,EAAU/0oB,wBAAwB5C,IAChD08jB,EAAS95jB,wBAAwB5C,IACrCu+oB,EAASt7oB,UAAYA,EAAaA,EAAY,EAAK,CACvD,CACA+S,KAAKiv/B,kBAAmB,CAC5B,CACJ,EAeJ,MAAMM,UAAuB,KACzB,WAAA9u/B,GACI4yC,SAASl/C,WACT6L,KAAKiwjB,oBAAqB,CAC9B,CACA,UAAA3B,CAAW7mB,EAAW+nd,GAClB,OAAOA,EAAclhc,WAAW7mB,EACpC,EAGJ,MAAMgod,UAAiB,KACnB,WAAAhv/B,GACI4yC,SAASl/C,WACT6L,KAAK0v/B,OAAS,IAAIH,EAClBvv/B,KAAK2v/B,UAAW,SACpB,CACA,MAAAtx7B,GACI,IAAI,MAAEjsC,EAAK,QAAEjJ,GAAYnpB,KACzB,OAAQ,OAAcgv/B,EAAOllgC,OAAOC,OAAO,CAAE8oH,IAAK7yG,KAAK2v/B,UAAY3v/B,KAAK0v/B,OAAOx/b,WAAW99hB,EAAOA,EAAMm/gB,YAAan/gB,EAAMqggB,iBAAkBtpgB,EAASiJ,EAAMo99B,eAAgB,CAAEj+c,YAAan/gB,EAAMm/gB,YAAajhY,MAAOl+I,EAAMo99B,cAAcl/0B,MAAO6+0B,aAAc/89B,EAAM+89B,aAAcj5b,cAAe9jiB,EAAM8jiB,cAAes4b,eAAgBp89B,EAAMo89B,eAAgBx1d,aAAc5mgB,EAAM4mgB,aAAcC,gBAAiB7mgB,EAAM6mgB,gBAAiBuzd,gBAAiBp69B,EAAMo69B,gBAAiBp2d,WAAYhkgB,EAAMgkgB,WAAYw5d,iBAAkBx99B,EAAMw99B,iBAAkB1jgC,YAAakmC,EAAMlmC,YAAaD,aAAcmmC,EAAMnmC,aAAc0wjB,SAAUvqhB,EAAMuqhB,WAC3mB,EAGJ,MAAMkzc,UAAqBpJ,EACvB,WAAAhm/B,GACI4yC,SAASl/C,WACT6L,KAAK8v/B,oBAAqB,OAAQA,GAClC9v/B,KAAK6y6B,WAAY,UACjB7y6B,KAAK2v/B,UAAW,SAEpB,CACA,MAAAtx7B,GACI,IAAI,QAAEzuE,EAAO,qBAAEq0iB,GAAyBjkiB,KAAKmpB,SACzC,MAAEiJ,GAAUpyB,KACZwv/B,EAAgBxv/B,KAAK8v/B,mBAAmB199B,EAAMm/gB,YAAatN,GAC3D58Q,EAAgBz3R,EAAQ0jiB,aAAe,OAAc,KAAW,CAAEzgb,IAAK7yG,KAAK6y6B,UAAWthY,YAAan/gB,EAAMm/gB,YAAa3tb,MAAO4r4B,EAActgc,YAAanB,qBAA+C,IAAzByhc,EAAcxgc,SAC7L63b,EAAekJ,IAAgB,OAAcN,EAAU,CAAE584B,IAAK7yG,KAAK2v/B,SAAUp+c,YAAan/gB,EAAMm/gB,YAAai+c,cAAeA,EAAe74d,cAAevkgB,EAAMukgB,cAAempB,cAAe1thB,EAAM0thB,cAAe9T,WAAY55gB,EAAM45gB,WAAY4L,aAAcxlhB,EAAMwlhB,aAAc0L,eAAgBlxhB,EAAMkxhB,eAAgBN,UAAW5whB,EAAM4whB,UAAWE,YAAa9whB,EAAM8whB,YAAazwB,iBAAkB7iiB,EAAQ6iiB,iBAAkB08d,aAAcY,EAAWz3b,kBAAmBpC,cAAe65b,EAAW75b,cAAel9B,aAAcppiB,EAAQopiB,aAAcC,gBAAiBrpiB,EAAQqpiB,gBAAiBuzd,gBAAiB58/B,EAAQukiB,YAAaiC,YAAahkgB,EAAM0qhB,aAAc8yc,iBAAkB5v/B,KAAK0m/B,YAAax6/B,YAAa6jgC,EAAW7jgC,YAAaD,aAAc8jgC,EAAW9jgC,aAAc0wjB,SAAUvqhB,EAAMuqhB,WAC/wB,OAAO/sjB,EAAQspiB,YACTl5hB,KAAK8m/B,oBAAoBz/tB,EAAew/tB,EAAa2I,EAAcric,OAAQv9jB,EAAQspiB,aACnFl5hB,KAAK2m/B,mBAAmBt/tB,EAAew/tB,EACjD,EAEJ,SAASiJ,EAAmBv+c,EAAatN,GACrC,IAAI4qB,EAAY,IAAI,KAAetd,EAAYxH,YAAa9F,GAC5D,OAAO,IAAI,KAAc4qB,EAAW,kBAAkB3skB,KAAKqvjB,EAAY9H,kBAC3E,CAEA,MAAMumd,UAAkC,IAEpC,gBAAA5ld,CAAiBE,EAAcb,EAAkBK,GAC7C,IAAIC,EAAc12f,MAAM+2f,iBAAiBE,EAAcb,EAAkBK,IACrE,MAAE13gB,GAAUpyB,KAChB,OAQR,SAAkCoyB,GAC9B,IAEI699B,GAFA,QAAE/rd,EAAO,aAAEoG,GAAiBl4gB,GAC5B,MAAE3lC,EAAK,IAAEC,GAAQ49iB,EAYrB,GATIl4gB,EAAM899B,aACNzjgC,EAAQy3iB,EAAQ/C,YAAY10iB,GAE5BwjgC,EAAY/rd,EAAQ/C,YAAYz0iB,GAC5BujgC,EAAUt5yB,YAAcjqN,EAAIiqN,YAC5BjqN,GAAM,QAASujgC,EAAW,KAI9B799B,EAAM0ogB,eAAgB,CAGtB,IAAIq1d,EAAuBjsd,EAAQ/C,YAAY+C,EAAQhD,cAAa,OAAQoJ,EAAa59iB,KAAM,KAC3FsikB,EAASxpkB,KAAKsjE,MAClB,QAAUqn8B,EAAsBzjgC,IAChCA,GAAM,QAASA,EAAK,EAAIsikB,EAC5B,CACA,MAAO,CAAEvikB,QAAOC,MACpB,CA/Be0jgC,CAAyB,CAC5B9ld,aAAcP,EACdmmd,WAAY,iBAAiBhugC,KAAKunjB,GAClC3O,eAAgB1ogB,EAAM0ogB,eACtBoJ,QAAS9xgB,EAAM8xgB,SAEvB,GA4BJ,QADe,m8G,+BCp9Bf,IAAIrrU,EAAM,EAAS,MAClB9oN,EAAU,EAAS,OACnB4oN,EAAiB,EAAS,OAC1B9lN,EAAa,EAAS,OAuGvB6uE,EAAOj9F,QA1FP,WACC,IACC4P,EACA0kO,EACAniM,EACAnnC,EACAmK,EAAGC,EACHxU,EANG2zO,EAAQ7kO,UAAUC,OAUtB,IADAC,EAAO,IAAIC,MAAO0kO,GACZ3zO,EAAI,EAAGA,EAAI2zO,EAAO3zO,IACvBgP,EAAMhP,GAAM8O,UAAW9O,GAGxB,GAAKszO,EAAgBtkO,GAAS,CAC7B,GAAe,IAAV2kO,EASJ,OARAp/N,EAAIvF,EAAM,IAED,IACRuF,GAAKA,IAFNC,EAAIxF,EAAM,IAID,IACRwF,GAAKA,GAEK,IAAND,GAAiB,IAANC,EACR,EAECD,EAAEi/N,EAAIj/N,EAAEC,GAAOA,EAEzB+8B,EAAMviC,CACP,KAEK,KAAM0b,EAAS1b,EAAM,IACzB,MAAM,IAAIiM,UAAW,6EAA+EjM,EAAM,GAAM,MAG5G,GAAK2kO,EAAQ,GAGjB,GAFApiM,EAAMviC,EAAM,GACZ0kO,EAAO1kO,EAAM,IACPwe,EAAYkmN,GACjB,MAAM,IAAIz4N,UAAW,uEAAyEy4N,EAAO,WAKtGniM,EAAMviC,EAAM,EACb,CAIA,IAHA5E,EAAMmnC,EAAIxiC,QAGC,EACV,OAAO,KAGR,GAAK2kO,EAAO,CAEX,IADAn/N,EAAI,IAAItF,MAAO7E,GACTpK,EAAI,EAAGA,EAAIoK,EAAKpK,IACrBuU,EAAGvU,GAAM0zO,EAAMniM,EAAKvxC,GAAKA,GAE1BuxC,EAAMh9B,CACP,CAEA,GAAKo/N,EAAQ,IACNL,EAAgB/hM,GACrB,MAAM,IAAIt2B,UAAW,kFAAoFs2B,EAAM,MAIjH,IAAMvxC,EAAI,EAAGA,EAAIoK,EAAKpK,KACrBuU,EAAIg9B,EAAKvxC,IACA,IACRuxC,EAAKvxC,IAAOuU,GAKd,IADAA,EAAIg9B,EAAK,GACHvxC,EAAI,EAAGA,EAAIoK,EAAKpK,IAAM,CAE3B,GADAwU,EAAI+8B,EAAKvxC,GACE,IAANuU,GAAiB,IAANC,EACf,OAAO,EAERD,EAAMA,EAAEi/N,EAAIj/N,EAAEC,GAAOA,CACtB,CACA,OAAOD,CACR,C,kBCzGA,EAAQ,OACR8nF,EAAOj9F,QAAU,c,qCCAjB,IACQqb,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAGA6v/B,EAAwC,SAAUrs/B,GAMlD,SAASqs/B,EAAuBj53B,EAAaxnI,GACzC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAMo3H,EAAa,iBAAkBxnI,IAAYoQ,KAiBzE,OAhBAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bos/B,yBAA0B,CACtB3qgC,MAAO,IAAIqN,OAGnBkR,EAAMymG,GAAG,QAAS,SAAUziG,GACxB5T,MAAMuwB,KAAK3gB,EAAMos/B,yBAAyBjmgC,QAAQ2H,QAAQ,SAAU2lI,GAChEzvH,EAAUswH,QAAQ,CACdxoH,KAAM,iBACN1D,MAAOqrH,EACPgsP,UAAWz/W,EAAMos/B,yBAAyBz8/B,IAAI8jI,IAItD,EACJ,GACOzzH,CACX,CAmBA,OA3CAnE,EAAUsw/B,EAAwBrs/B,GA8BlCqs/B,EAAuBjw/B,UAAUmw/B,wBAA0B,SAAU543B,EAAU643B,EAAoBl85B,GAC/F,GAA2B,cAAvBk85B,EACA,MAAM,IAAIjp/B,MAAM,mDAAqDip/B,GAEzExw/B,KAAKsw/B,yBAAyBv8/B,IAAI4jI,EAAUrjC,GACxCt0F,KAAKm4H,YACLn4H,KAAKm4H,WAAWK,QAAQ,CACpBxoH,KAAM,iBACN1D,MAAOqrH,EACPgsP,UAAWrvR,GAGvB,EACO+75B,CACX,CA7C2C,CADtB,EAAQ,QA+C7B3u6B,EAAOj9F,QAAU4rgC,C,kBC/DjB,IAAIpm/B,EAAQ,EAAQ,OAChB+qF,EAAQ,EAAQ,OAEhBggyB,EAAQ,IAAIns3B,KAAKA,KAAK6tK,IAAI,KAAM,EAAG,IACnC+50B,EAAc,MAChB35/B,EACA,EACA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,OACAA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEE45/B,EAAa,CACf,GACA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEjBC,EAAgB,CAClB,GACA,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,QACJ75/B,OACAA,OACAA,EAAW,CAAC,EAAG,GACf,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,IA+ZN,SAAS+/mB,EAAWp5hB,GAClB,OAA4C,IAArC,IAAI50E,KAAK40E,EAAM,EAAG,IAAIkoB,UAC/B,CAGA,SAASir5B,EAAYC,EAAYC,GAC/B,OAAOtrgC,KAAKsjE,MAAMgo8B,EAAWD,GAAc,IAAO,GAAK,GAAK,GAC9D,CAqEA,SAASE,EAAOzv9B,GACd,IAAI0v9B,EAAS1v9B,GAAQ,WAAiB,EAAI,EAE1C,OAAO97C,KAAKsjE,MAAMxnB,EAAO0z1B,GAAS,OAAYg8H,CAChD,CA5eAvsgC,EAAQ+ktB,KAAO,SAAS/rnB,EAAMF,EAAOD,GAiBnC,OAdAG,EAAOuX,EAAMK,YAAY5X,GACzBF,EAAQyX,EAAMK,YAAY9X,GAC1BD,EAAM0X,EAAMK,YAAY/X,GAEpB0X,EAAMgB,WAAWvY,EAAMF,EAAOD,GACvBrzE,EAAMtkB,MAEN83F,EAAO,GAAKF,EAAQ,GAAKD,EAAM,EAC/BrzE,EAAMg0B,IAGN,IAAIp1B,KAAK40E,EAAMF,EAAQ,EAAGD,EAIvC,EAEA74F,EAAQwsgC,UAAY,SAASC,GAC3B,IACI5v9B,EADAjuC,EAAW,EAGf,MAAyB,iBAAd69/B,EACFjn/B,EAAMtkB,OAGf27C,EAAOz4B,KAAKuvB,MAAM849B,GAEdnrgC,MAAMu7C,GACDr3B,EAAMtkB,OAGX27C,IAAS,aACXjuC,EAAW,GAGN7N,KAAKsjE,MAAMxnB,EAAO0z1B,GAAS,OAAY3h4B,GAChD,EAEA5O,EAAQ4r5B,IAAM,SAAS8gH,GACrB,IAAI7v9B,EAAO0zD,EAAMogD,UAAU+72B,GAC3B,OAAI7v9B,aAAgB/5B,MACX+5B,EAGFA,EAAKikE,SACd,EAEA9gH,EAAQ+1Y,KAAO,SAASs2nB,EAAUD,GAIhC,OAHAC,EAAW975B,EAAMogD,UAAU072B,GAC3BD,EAAa775B,EAAMogD,UAAUy72B,GAEzBC,aAAoBvp/B,MACfup/B,EAELD,aAAsBtp/B,MACjBsp/B,EAGFE,EAAOD,GAAYC,EAAOF,EACnC,EAEApsgC,EAAQw1Y,QAAU,SAAS42nB,EAAYC,EAAUvs9B,GAK/C,GAJAA,EAASywD,EAAM6/xB,UAAUtw1B,GACzBss9B,EAAa775B,EAAMogD,UAAUy72B,GAC7BC,EAAW975B,EAAMogD,UAAU072B,GAEvBD,aAAsBtp/B,MACxB,OAAOsp/B,EAET,GAAIC,aAAoBvp/B,MACtB,OAAOup/B,EAET,GAAIvs9B,aAAkBh9B,MACpB,OAAOg9B,EAET,IAEIo4T,EAAIsiF,EAFJ+rd,EAAK6lH,EAAWlr5B,WAChByr5B,EAAKN,EAASnr5B,WAGlB,GAAIphE,EACFo4T,EAA8B,KAAzBk0pB,EAAWtr5B,UAAmB,GAAKsr5B,EAAWtr5B,UACnD05U,EAA4B,KAAvB6xkB,EAASvr5B,UAAmB,GAAKur5B,EAASvr5B,cAC1C,CACL,IAAI8r5B,EAAM,IAAIxo/B,KAAKgo/B,EAAWhr5B,cAAemlyB,EAAK,EAAG,GAAGzlyB,UACpD+r5B,EAAM,IAAIzo/B,KAAKio/B,EAASjr5B,cAAeur5B,EAAK,EAAG,GAAG7r5B,UACtDo3P,EAAKk0pB,EAAWtr5B,YAAc8r5B,EAAM,GAAKR,EAAWtr5B,UAChDur5B,EAASvr5B,YAAc+r5B,EACrB30pB,EAAK,IACPy0pB,IACAnykB,EAAK,GAELA,EAAK,GAGPA,EAAK6xkB,EAASvr5B,SAElB,CAEA,OAAO,KAAOur5B,EAASjr5B,cAAgBgr5B,EAAWhr5B,eAChD,IAAMur5B,EAAKpmH,IAAO/rd,EAAKtiF,EAC3B,EAEAl4W,EAAQ8sgC,MAAQ,SAASV,EAAY5vgC,GAGnC,OAFA4vgC,EAAa775B,EAAMogD,UAAUy72B,cAEHtp/B,MACjBsp/B,EAEL9qgC,MAAM9E,GACDgpB,EAAMtkB,OAEf1E,EAASklC,SAASllC,EAAQ,IAC1B4vgC,EAAWnr5B,SAASmr5B,EAAWlr5B,WAAa1kH,GAErC8vgC,EAAOF,GAChB,EAEApsgC,EAAQ+sgC,QAAU,SAASX,EAAY5vgC,GAGrC,OAFA4vgC,EAAa775B,EAAMogD,UAAUy72B,cAEHtp/B,MACjBsp/B,EAEL9qgC,MAAM9E,GACDgpB,EAAMtkB,OAEf1E,EAASklC,SAASllC,EAAQ,IAEnB8vgC,EAAO,IAAIlo/B,KAAKgo/B,EAAWhr5B,cAAegr5B,EAAWlr5B,WAAa1kH,EAAS,EAAG,IACvF,EAEAwD,EAAQgtgC,KAAO,SAASN,GAGtB,OAFAA,EAAgBn85B,EAAMogD,UAAU+72B,cAEH5p/B,MACpB4p/B,EAGFA,EAAcns3B,UACvB,EAEAvgJ,EAAQitgC,SAAW,SAAUr06B,GAC3B,GAAsB,iBAAXA,GAAyC,iBAAXA,EACvC,OAAOpzE,EAAMtkB,MAEb03F,EAASl3D,SAASk3D,EAAQ,IAG5B,IAAII,EAAQj4F,KAAKQ,MAAMq3F,EAAO,SAC9BA,GAAmB,QACnB,IAAIE,EAAQ/3F,KAAKQ,MAAMq3F,EAAO,QAC9BA,GAAmB,OACnB,IAAIC,EAAQ93F,KAAKQ,MAAMq3F,EAAO,OAC9BA,GAAmB,MAEnB,IAAIj7F,EAAQoD,KAAKQ,MAAMq3F,EAAO,MAC9BA,GAAmB,KACnB,IAAI3zF,EAAQlE,KAAKQ,MAAMq3F,EAAO,IAE1B23D,EADJ33D,GAAmB,GAUnB,MAAO,KAPPI,EAASA,EAAQ,EAAKA,EAAQ,IAAM,KACpCF,EAASA,EAAQ,EAAKA,EAAQ,IAAM,KACpCD,EAASA,EAAQ,EAAKA,EAAQ,IAAM,IAKF,KAJlCl7F,EAASA,EAAQ,EAAKA,EAAQ,IAAM,KACpCsH,EAASA,EAAQ,EAAKA,EAAQ,IAAM,KAC3BsrJ,EAAQ,EAAKA,EAAQ,IAAM,GAGtC,EAEAvwJ,EAAQktgC,WAAa,SAASrw9B,GAG5B,IAFAA,EAAO0zD,EAAMogD,UAAU9zG,cAEH/5B,MAClB,OAAO+5B,EAGTA,EAAKowG,SAAS,EAAG,EAAG,GACpBpwG,EAAK67F,QAAQ77F,EAAKikE,UAAY,GAAKjkE,EAAK87F,UAAY,IACpD,IAAIw03B,EAAY,IAAI/o/B,KAAKy4B,EAAKukE,cAAe,EAAG,GAEhD,OAAOrgH,KAAKsjE,OAAQxnB,EAAOsw9B,GAAa,MAAY,GAAK,EAC3D,EAEAntgC,EAAQotgC,OAAS,SAASV,GAGxB,OAFAA,EAAgBn85B,EAAMogD,UAAU+72B,cAEH5p/B,MACpB4p/B,EAGFA,EAAcls3B,YACvB,EAEAxgJ,EAAQ0r5B,MAAQ,SAASghH,GAGvB,OAFAA,EAAgBn85B,EAAMogD,UAAU+72B,cAEH5p/B,MACpB4p/B,EAGFA,EAAcxr5B,WAAa,CACpC,EAEAlhH,EAAQmmlB,YAAc,SAASimb,EAAYC,EAAUgB,GACnD,OAAO9x/B,KAAK4qkB,YAAYC,KAAKgmb,EAAYC,EAAU,EAAGgB,EACxD,EAEArtgC,EAAQmmlB,YAAYC,KAAO,SAASgmb,EAAYC,EAAUiB,EAASD,GAGjE,IAFAjB,EAAa775B,EAAMogD,UAAUy72B,cAEHtp/B,MACxB,OAAOsp/B,EAIT,IAFAC,EAAW975B,EAAMogD,UAAU072B,cAEHvp/B,MACtB,OAAOup/B,EAOT,MAJEiB,OADcj7/B,IAAZi7/B,EACQpB,EAAc,GAEdA,EAAcoB,cAEDz9/B,OACvB,OAAO2V,EAAMtkB,WAEEmR,IAAbg7/B,EACFA,EAAW,GACAA,aAAoBx9/B,QAC/Bw9/B,EAAW,CAACA,IAGd,IAAK,IAAIzsgC,EAAI,EAAGA,EAAIysgC,EAAS19/B,OAAQ/O,IAAK,CACxC,IAAIhC,EAAI2xG,EAAMogD,UAAU082B,EAASzsgC,IACjC,GAAIhC,aAAakkB,MACf,OAAOlkB,EAETyugC,EAASzsgC,GAAKhC,CAChB,CACA,IAAIkwG,GAAQu95B,EAAWD,GAAc,MAAwB,EACzDl48B,EAAQ46C,EACRjW,EAAMuz6B,EACV,IAAKxrgC,EAAI,EAAGA,EAAIkuG,EAAMluG,IAAK,CACzB,IAAI9B,GAAK,IAAIslB,MAAO80H,oBAAsB,EAAKrgD,EAAImpK,YAAcnpK,EAAI8/C,SACjEqC,GAAM,EACNl8I,IAAMwugC,EAAQ,IAAMxugC,IAAMwugC,EAAQ,KACpCty3B,GAAM,GAER,IAAK,IAAIz5G,EAAI,EAAGA,EAAI8r+B,EAAS19/B,OAAQ4xB,IAAK,CACxC,IAAIgs+B,EAAUF,EAAS9r+B,GACvB,GAAIgs+B,EAAQzs5B,YAAcjoB,EAAIioB,WAC5Bys5B,EAAQrs5B,aAAeroB,EAAIqoB,YAC3Bqs5B,EAAQns5B,gBAAkBvoB,EAAIuoB,cAAe,CAC7C45B,GAAM,EACN,KACF,CACF,CACIA,GACF9mF,IAEF2kC,EAAI6/C,QAAQ7/C,EAAIioB,UAAY,EAC9B,CAEA,OAAO5sD,CACT,EAEAl0D,EAAQwtgC,IAAM,WACZ,OAAO,IAAIpp/B,IACb,EAEApkB,EAAQytgC,OAAS,SAASf,GAExB,OADAA,EAAgBn85B,EAAMogD,UAAU+72B,cACH5p/B,MACpB4p/B,EAGFA,EAAcjs3B,YACvB,EAEAzgJ,EAAQgltB,KAAO,SAASrntB,EAAMC,EAAQg7F,GAIpC,OAHAj7F,EAAO4yG,EAAMK,YAAYjzG,GACzBC,EAAS2yG,EAAMK,YAAYhzG,GAC3Bg7F,EAAS2X,EAAMK,YAAYhY,GACvB2X,EAAMgB,WAAW5zG,EAAMC,EAAQg7F,GAC1BpzE,EAAMtkB,MAEXvD,EAAO,GAAKC,EAAS,GAAKg7F,EAAS,EAC9BpzE,EAAMg0B,KAGP,KAAO77C,EAAO,GAAKC,EAASg7F,GAAU,KAChD,EAEA54F,EAAQ0tgC,UAAY,SAASC,GAG3B,OAFAA,EAAYp95B,EAAMogD,UAAUg92B,cAEH7q/B,MAChB6q/B,GAGD,KAAOA,EAAUpt3B,WAAa,GAAKot3B,EAAUnt3B,aAAemt3B,EAAUlt3B,cAAgB,KAChG,EAEAzgJ,EAAQ4tgC,MAAQ,WACd,OAAO,IAAIxp/B,IACb,EAEApkB,EAAQ6tgC,QAAU,SAASnB,EAAeoB,GAExC,IADApB,EAAgBn85B,EAAMogD,UAAU+72B,cACH5p/B,MAC3B,OAAO4p/B,OAEWr6/B,IAAhBy7/B,IACFA,EAAc,GAEhB,IAAIj16B,EAAM6z6B,EAAc/z3B,SAExB,OAAOsz3B,EAAW6B,GAAaj16B,EACjC,EAEA74F,EAAQ+tgC,QAAU,SAASrB,EAAeoB,GAExC,IADApB,EAAgBn85B,EAAMogD,UAAU+72B,cACH5p/B,MAC3B,OAAO4p/B,EAKT,QAHoBr6/B,IAAhBy7/B,IACFA,EAAc,GAEI,KAAhBA,EACF,OAAOvy/B,KAAK2x/B,WAAWR,GAEzB,IAAIsB,EAAahC,EAAY8B,GACzBG,EAAM,IAAI7p/B,KAAKso/B,EAActr5B,cAAe,EAAG,GAC/C6lc,EAAMgnd,EAAIt13B,SAAWq13B,EAAa,EAAI,EAG1C,OAFAC,GAA6C,GAAtCltgC,KAAKM,IAAI4sgC,EAAIt13B,SAAWq13B,GAAmB,GAAK,GAAK,IAErDjtgC,KAAKQ,OAAQmrgC,EAAgBuB,GAAO,MAAyB,EAAI,GAAKhnd,CAC/E,EAEAjnjB,EAAQmolB,QAAU,SAASikb,EAAYt95B,EAAMu+5B,GAC3C,OAAO9x/B,KAAK4skB,QAAQ/B,KAAKgmb,EAAYt95B,EAAM,EAAGu+5B,EAChD,EAEArtgC,EAAQmolB,QAAQ/B,KAAO,SAASgmb,EAAYt95B,EAAMw+5B,EAASD,GAEzD,IADAjB,EAAa775B,EAAMogD,UAAUy72B,cACHtp/B,MACxB,OAAOsp/B,EAGT,IADAt95B,EAAOyB,EAAMK,YAAY9B,cACLhsF,MAClB,OAAOgsF,EAET,GAAIA,EAAO,EACT,OAAOtpF,EAAMg0B,IAOf,MAJE8z9B,OADcj7/B,IAAZi7/B,EACQpB,EAAc,GAEdA,EAAcoB,cAEDz9/B,OACvB,OAAO2V,EAAMtkB,WAEEmR,IAAbg7/B,EACFA,EAAW,GACAA,aAAoBx9/B,QAC/Bw9/B,EAAW,CAACA,IAEd,IAAK,IAAIzsgC,EAAI,EAAGA,EAAIysgC,EAAS19/B,OAAQ/O,IAAK,CACxC,IAAIhC,EAAI2xG,EAAMogD,UAAU082B,EAASzsgC,IACjC,GAAIhC,aAAakkB,MACf,OAAOlkB,EAETyugC,EAASzsgC,GAAKhC,CAChB,CAEA,IADA,IAAIE,EAAI,EACDA,EAAIgwG,GAAM,CACfs95B,EAAW1z3B,QAAQ0z3B,EAAWtr5B,UAAY,GAC1C,IAAIjoB,EAAMuz6B,EAAWzz3B,SACrB,GAAI9/C,IAAQy06B,EAAQ,IAAMz06B,IAAQy06B,EAAQ,GAA1C,CAGA,IAAK,IAAI/r+B,EAAI,EAAGA,EAAI8r+B,EAAS19/B,OAAQ4xB,IAAK,CACxC,IAAIgs+B,EAAUF,EAAS9r+B,GACvB,GAAIgs+B,EAAQzs5B,YAAcsr5B,EAAWtr5B,WACnCys5B,EAAQrs5B,aAAekr5B,EAAWlr5B,YAClCqs5B,EAAQns5B,gBAAkBgr5B,EAAWhr5B,cAAe,CACpDtiH,IACA,KACF,CACF,CACAA,GAVA,CAWF,CAEA,OAAOstgC,CACT,EAEApsgC,EAAQkugC,KAAO,SAASxB,GAGtB,OAFAA,EAAgBn85B,EAAMogD,UAAU+72B,cAEH5p/B,MACpB4p/B,EAGFA,EAActr5B,aACvB,EAWAphH,EAAQ8wY,SAAW,SAASs7nB,EAAYC,EAAUx7nB,GAEhD,IADAu7nB,EAAa775B,EAAMogD,UAAUy72B,cACHtp/B,MACxB,OAAOsp/B,EAGT,IADAC,EAAW975B,EAAMogD,UAAU072B,cACHvp/B,MACtB,OAAOup/B,EAGTx7nB,EAAQA,GAAS,EACjB,IAAI34B,EAAKk0pB,EAAWtr5B,UAChBylyB,EAAK6lH,EAAWlr5B,WAAa,EAC7B2lX,EAAKuliB,EAAWhr5B,cAChBo5U,EAAK6xkB,EAASvr5B,UACd6r5B,EAAKN,EAASnr5B,WAAa,EAC3BkxZ,EAAKi6f,EAASjr5B,cAElB,OAAQyvR,GACN,KAAK,EAUH,OARW,KAAP34B,GAAoB,KAAPsiF,GACftiF,EAAK,GACLsiF,EAAK,IACW,KAAPtiF,EACTA,EAAK,GACW,KAAPA,GAAoB,KAAPsiF,IACtBA,EAAK,KAEEA,EAAU,GAALmykB,EAAe,IAALv6f,GAAal6J,EAAU,GAALquiB,EAAe,IAAL1/a,IAAa,IACnE,KAAK,EAEH,IAUIsniB,EAAU,IACd,GAAItniB,IAAOurC,GAAQvrC,EAAK,IAAOurC,IAASm0Y,EAAKomH,GAASpmH,IAAOomH,GAAQz0pB,GAAMsiF,GAMzE,OALKqsC,IAAOurC,GAAMggH,EAAWvrJ,IAZZ,SAASu9E,EAAOwsW,GACjC,IAAIw9G,EAAQhqd,EAAMhjc,cACdit5B,EAAY,IAAIjq/B,KAAKgq/B,EAAO,EAAG,GACnC,GAAIh8Y,EAAWg8Y,IAAUhqd,EAAQiqd,GAAaz9G,GAASy9G,EACrD,OAAO,EAET,IAAIC,EAAQ19G,EAAMxvyB,cACdmt5B,EAAY,IAAInq/B,KAAKkq/B,EAAO,EAAG,GACnC,OAAQl8Y,EAAWk8Y,IAAU19G,GAAS29G,GAAanqd,EAAQmqd,CAC7D,CAIIC,CAAapC,EAAYC,IACjB,IAAPM,GAAmB,KAAPnykB,KACb2zkB,EAAU,KAELhC,EAAYC,EAAYC,GAAY8B,EAE7C,IAAIlnhB,EAASmrB,EAAKvrC,EAAM,EAEpBr8Y,GADQ,IAAIpmE,KAAKguf,EAAK,EAAG,EAAG,GAAK,IAAIhuf,KAAKyid,EAAI,EAAG,IAAM,IAAO,GAAK,GAAK,GACvDogB,EACrB,OAAOklhB,EAAYC,EAAYC,GAAY7h7B,EAC7C,KAAK,EAEH,OAAO2h7B,EAAYC,EAAYC,GAAY,IAC7C,KAAK,EAEH,OAAOF,EAAYC,EAAYC,GAAY,IAC7C,KAAK,EAEH,OAAS7xkB,EAAU,GAALmykB,EAAe,IAALv6f,GAAal6J,EAAU,GAALquiB,EAAe,IAAL1/a,IAAa,IAEvE,C,gDC3hBA,QAVA,SAAmB7mN,EAAWr0K,GAC1B,IAAIq0K,EAIA,MAAM,IAAIl9P,MANL,mBASb,C,yBCTAm6E,EAAOj9F,QAAU,SAAU4gC,GACzB,IACE,QAASA,GACX,CAAE,MAAOpb,GACP,OAAO,CACT,CACF,C,yBCIQ,SAAWxlB,EAAQyugC,EAAeC,GAAQ,aAElD,IAAIC,EAAiBl93B,QACjBu2T,EAAMymkB,GAAkBA,EAAexx6B,OAAUwx6B,EAAiBE,EAEtE,SAASC,IACL,IAAIC,EAAkB,KACtB,OAAO,SAAUzq7B,EAAM64H,GAEnB,OADA4xzB,EAAkBA,GAAmBH,EAAKhyrB,SAASh7M,UAAUtyH,IAAI,oBAC1D,CAAC,IAAI0//B,EAAc1q7B,EAAM64H,EAAM4xzB,GAC1C,CACJ,CACA,IAAIE,EAAY,SAAUnpgC,EAAMioB,GAC5B,OAAOjoB,EAAKC,OAAO,SAAUoL,EAAKlL,GAAO,OAAOkL,GAAOy9/B,EAAK/v5B,UAAU9wF,EAAI9nB,GAAO,GAAG,EACxF,EAUA,SAASipgC,EAAgB9jgC,GAErB,IAAKA,EAAMlI,OACP,MAAO,CAAC,EACZ,IAAgKisgC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyK3lgC,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiH4lgC,EAAcF,EAAS1lgC,OAAO2lgC,GAIjS,GAAIR,EAAK/v5B,UAAUzzG,EAAMinH,QAAU484B,EAAUI,EAAajkgC,GACtD,MAAM,IAAI4X,MAAM,UAAY5X,EAAM4D,KAAlB,4JAGLqggC,EAAY3igC,OAAO,SAAUzG,GAAO,OAAO2ogC,EAAK/v5B,UAAUzzG,EAAMnF,GAAO,GAAG0T,KAAK,OAE9F,IAAI04G,EAAQ,CAAC,EAAGi94B,EAAclkgC,EAAMinH,OAAS,CAAE,SAAYu84B,EAAK9uyB,KAAK10N,EAAOikgC,IAsB5E,OArBAT,EAAKnhgC,QAAQ6hgC,EAAa,SAAU90/B,EAAQxL,GASxC,GAPAA,EAAOA,GAAQ,WAEX4//B,EAAK5v5B,SAASxkG,KACdA,EAAS,CAAEi5D,UAAWj5D,IAE1BA,EAASo0/B,EAAKnw5B,OAAO,CAAC,EAAGjkG,GAErBy0/B,EAAUE,EAAU30/B,IAAWy0/B,EAAUG,EAAa50/B,GACtD,MAAM,IAAIwI,MAAM,mBAAqBms/B,EAASx1/B,KAAK,KAAO,UAAYy1/B,EAAYz1/B,KAAK,KAAO,mBAAqB3K,EAAO,IAAM5D,EAAM4D,KAAO,KAEjJwL,EAAO+0/B,UAAY/0/B,EAAO+0/B,WAAa,WACvC/0/B,EAAOyipB,MAAQ,MACfzipB,EAAOsqC,SAAW15C,EAClBoP,EAAOsxS,MAAQ98S,EACf,IAAI0rF,EAAak06B,EAAK7yW,YAAYS,sBAAsBhipB,EAAOsqC,SAAUtqC,EAAOsxS,OAChFtxS,EAAOskpB,YAAcpkkB,EAAWiikB,WAChCnipB,EAAO2kpB,qBAAuBzkkB,EAAWkikB,oBACzCvqiB,EAAMrjH,GAAQwL,CAClB,GACO63G,CACX,CACA,IAAI74G,EAAK,EACLw1/B,EAA+B,WAC/B,SAASA,EAAc1q7B,EAAMq5kB,EAAU39pB,GACnC,IAAI2f,EAAQlE,KACZA,KAAK6oE,KAAOA,EACZ7oE,KAAKkipB,SAAWA,EAChBlipB,KAAKzb,QAAUA,EACfyb,KAAKm+R,IAAMpgS,IACXiC,KAAK0jnB,QAAS,EACd1jnB,KAAKk88B,YAAc,SAAU15T,EAAQr5nB,GACjC,OAAOjlB,EAAM8zD,UAAY9zD,EAAM3f,QAAQwvgC,sBAAsBvxW,EAAQr5nB,EAASjlB,EAAM8zD,UAAW9zD,EAAMg+oB,SAASx3iB,UAAYxmG,EAAM68M,QACpI,CACJ,CA+BA,OA9BAwyyB,EAAcnz/B,UAAU4oN,KAAO,WAC3B,IAAI9kN,EAAQlE,KACRmiH,EAAKgx4B,EAAKhyrB,SAASh/M,GACnBh5F,EAAU,IAAIgq+B,EAAKxyrB,eAAe3gU,KAAK6oE,MACvC1oB,EAASngD,KAAK6oE,KAAKv+E,OAAO,SAAUoL,EAAK3O,GAAQ,OAAOosgC,EAAKnw5B,OAAOttG,EAAK3O,EAAKovO,YAAc,EAAG,CAAC,GAChGhyL,EAAW,CACX48K,SAAU5+F,EAAGC,KAAKpiH,KAAKzb,QAAQg+G,WAAWviG,KAAKkipB,SAAU/hmB,EAAQh3B,IACjEoe,WAAY46E,EAAGC,KAAKpiH,KAAKi3D,cAAc9tC,KAE3C,OAAOg5F,EAAGr8E,IAAI3B,GAAUttC,KAAK,SAAUipN,GAInC,OAHAqzyB,EAAK5+3B,MAAMqthB,sBAAsB,SAAU19oB,GAC3CA,EAAMqjC,WAAau4K,EAAQv4K,WAC3B4r9B,EAAKnw5B,OAAO9+F,EAAO47M,EAAQiB,UACpB78M,CACX,EACJ,EAMAqv/B,EAAcnz/B,UAAU62D,cAAgB,SAAU9tC,GAC9C,IAAIw9F,EAAW3mH,KAAKkipB,SAAS8xW,mBAC7B,IAAKb,EAAKrzf,aAAan5Y,GACnB,OAAO3mH,KAAKkipB,SAAS36mB,WACzB,IAAI2uJ,EAAOi9zB,EAAKhyrB,SAASh7M,UAAUoiJ,SAAS5hJ,GACxCst4B,EAAad,EAAKpj/B,QAAQ42G,GAAYws4B,EAAKz+xB,KAAK/tG,GAAYA,EAEhE,OADiB,IAAIws4B,EAAKptf,WAAW,GAAIkuf,EAAY/9zB,GACnCriM,IAAIs1B,EAC1B,EACOoq+B,CACX,CA3CkC,GAkD9BW,EAAiC,WACjC,SAASA,IACL,IAAIhw/B,EAAQlE,KACGA,KAAKm0/B,SAAW1nkB,EAAG5nX,QAAQ/a,MAAQ,EACnC9pD,KAAK4jG,KAAO,CAAC,QAAS,iBAAkB,YAAa,SAAU0pB,EAAOsC,EAAgBzJ,GAI7F,OAHAjiH,EAAM8uQ,iBAAmB7sJ,EAAUxyH,KAAOwyH,EAAUxyH,IAAI,qBAAuBwyH,EAAUtyH,IAAI,oBAC7FqQ,EAAMopH,MAAQA,EACdppH,EAAM0rH,eAAiBA,EAChB1rH,CACX,EACR,CAgJA,OA9IAgw/B,EAAgB9z/B,UAAUg0/B,eAAiB,SAAUzugC,GACjDqa,KAAKm0/B,SAAWxugC,CACpB,EAcAuugC,EAAgB9z/B,UAAUmiG,WAAa,SAAUxjG,EAAQohD,EAAQh3B,GAC7D,IACIkr+B,EAAa,SAAUlhgC,GAAU,OAAOgggC,EAAKhyrB,SAASh/M,GAAGC,KAAKjvH,GAAQ0D,KAAK,SAAU4b,GAAO,MAAO,CAAGsuM,SAAUtuM,EAAQ,EAAI,EAC5H6h/B,EAAc,SAAUnhgC,GAAU,OAAOgggC,EAAKhyrB,SAASh/M,GAAGC,KAAKjvH,GAAQ0D,KAAK,SAAU4b,GAAO,MAAO,CAAGulD,UAAWvlD,EAAQ,EAAI,EAClI,OAAQ0g/B,EAAK/v5B,UAAUrkG,EAAOgiN,UAAYszyB,EAAWr0/B,KAAK2iU,WAAW5jU,EAAOgiN,SAAU5gK,IAClFgz8B,EAAK/v5B,UAAUrkG,EAAOi2H,aAAeq/3B,EAAWr0/B,KAAKu0/B,QAAQx1/B,EAAOi2H,YAAa70E,IAC7Egz8B,EAAK/v5B,UAAUrkG,EAAOy1/B,kBAAoBH,EAAWr0/B,KAAKy0/B,aAAa11/B,EAAOy1/B,iBAAkBr08B,EAAQh3B,IACpGgq+B,EAAK/v5B,UAAUrkG,EAAOi5D,WAAas87B,EAAYv1/B,EAAOi5D,WAClDm77B,EAAK/v5B,UAAUrkG,EAAO21/B,mBAAqBJ,EAAYt0/B,KAAK20/B,sBAAsB51/B,EAAO21/B,kBAAmBv08B,EAAQh3B,IAChHkr+B,EARE,sBAS1B,EAUAH,EAAgB9z/B,UAAUuiU,WAAa,SAAU5hH,EAAU5gK,GACvD,OAAOgz8B,EAAKtg/B,WAAWkuM,GAAYA,EAAS5gK,GAAU4gK,CAC1D,EAUAmzyB,EAAgB9z/B,UAAUm0/B,QAAU,SAAU9m6B,EAAKttC,GAG/C,OAFIgz8B,EAAKtg/B,WAAW46E,KAChBA,EAAMA,EAAIttC,IACH,MAAPstC,EACO,KACPztF,KAAKm0/B,SACEn0/B,KAAKstH,MAAMz5H,IAAI45F,EAAK,CAAElhE,MAAOvsB,KAAK4vH,eAAgB5oC,QAAS,CAAEuhoB,OAAQ,eACvE1xtB,KAAK,SAAUw3F,GAChB,OAAOA,EAASt4F,IACpB,GAEGiK,KAAKgzQ,iBAAiBvlL,EACjC,EASAym6B,EAAgB9z/B,UAAUq0/B,aAAe,SAAU9t4B,EAAUxmE,EAAQh3B,GACjE,IAAI+sK,EAAOi9zB,EAAKhyrB,SAASh7M,UAAUoiJ,SAAS5hJ,GACxCst4B,EAAad,EAAKpj/B,QAAQ42G,GAAYws4B,EAAKz+xB,KAAK/tG,GAAYA,EAEhE,OADiB,IAAIws4B,EAAKptf,WAAW,GAAIkuf,EAAY/9zB,GACnCriM,IAAIs1B,EAC1B,EAQA+q+B,EAAgB9z/B,UAAUu0/B,sBAAwB,SAAUhu4B,EAAUxmE,EAAQh3B,GAC1E,IAAI+sK,EAAOi9zB,EAAKhyrB,SAASh7M,UAAUoiJ,SAAS5hJ,GACxCst4B,EAAad,EAAKpj/B,QAAQ42G,GAAYws4B,EAAKz+xB,KAAK/tG,GAAYA,EAEhE,OADiB,IAAIws4B,EAAKptf,WAAW,GAAIkuf,EAAY/9zB,GACnCriM,IAAIs1B,EAC1B,EAeA+q+B,EAAgB9z/B,UAAU2z/B,sBAAwB,SAAUvxW,EAAQr5nB,EAAS6uC,EAAW0yC,GACpFA,EAAWA,GAAY,CAAC,EAExB,IAAIx1E,EAASu3Z,EAAG5nX,QAAQ/a,OAAS,EAAI,KAAO,GAExC8q8B,EAAQ,SAAU9yC,GAClB,IAAI+yC,EAAU1B,EAAKtxC,YAAYC,GAC/B,MAAO,aAAaz87B,KAAKwv+B,GAAW,KAAOA,EAAUA,CACzD,EA4BI9r4B,EAOZ,SAA8Bx1H,GAC1B,IAAIuhgC,EAAU3B,EAAKhyrB,SAASh7M,UAAUtyH,IAAIN,EAAO,aACjD,IAAKuhgC,IAAYA,EAAQ1ggC,OACrB,MAAM,IAAImT,MAAM,mCAAqChU,EAAO,KAChE,OAAOuhgC,EAAQ/hgC,IAAIgigC,GAAazqgC,OAAO6ogC,EAAKv9xB,QAAS,GACzD,CAZoBo/xB,CAAqBh97B,GAAWjlE,IA3BzB,SAAU9Q,GACzB,IAAIsR,EAAOtR,EAAMsR,KAAMyc,EAAO/tB,EAAM+tB,KAChCq+G,EAAWum4B,EAAMrhgC,GAIrB,GAAIivpB,EAAOjrZ,KAAKlpI,KAAc3jB,EAASn3G,GACnC,OAAO86H,EAAW,KAAOm0hB,EAAOjrZ,KAAKlpI,GAAY,IACrD,IAAI4m4B,EAAcvq5B,EAASn3G,IAASA,EAGpC,GAAa,MAATyc,EACA,OAAOq+G,EAAW,OAASn5F,EAAS,YAAc+/9B,EAAc,MAIpE,GAAa,MAATjl/B,EAAc,CACd,IAAIo0B,EAAMjb,EAAQ+r+B,cAAcD,GAC5BnggC,EAAKsvC,GAAOA,EAAIruC,KAChB1B,EAAOS,GAAMq+/B,EAAKhyrB,SAASh7M,UAAUoiJ,SAASzzQ,IAAO,GAGzD,OAAOu5H,EAAW,cAAgB4m4B,GADhB9B,EAAKpj/B,QAAQjb,GAAM,KAAOA,EAAGV,OAAS,GAAK,IAAM,IACL,IAAMC,EAAK6J,KAAK,KAAO,IACzF,CAEA,OAAOmwH,EAAW,KAAOn5F,EAAS,YAAc+/9B,EAAc,GAClE,GAC8D/2/B,KAAK,KAC/Di3/B,EAAYP,EAAM587B,GACtB,MAAO,IAAMm97B,EAAY,IAAMps4B,EAAQ,MAAQos4B,EAAY,GAC/D,EACOjB,CACX,CA3JoC,GAqKpC,IAAIa,EAAc,SAAUhw4B,GACxB,OAAIou4B,EAAKlj/B,SAAS80G,EAAImsJ,kBACXkkvB,EAAcrw4B,EAAImsJ,kBACtBkkvB,EAAcrw4B,EAAIp8F,MAC7B,EAGIys+B,EAAgB,SAAUC,GAAe,OAAOvrgC,OAAOO,KAAKgrgC,GAAe,CAAC,GAC3EtigC,IAAI,SAAUvI,GAAO,MAAO,CAACA,EAAK,oBAAoB66B,KAAKgw+B,EAAY7qgC,IAAQ,GAC/EyG,OAAO,SAAUsxH,GAAS,OAAO4w4B,EAAK/v5B,UAAUmf,IAAU4w4B,EAAKpj/B,QAAQwyG,EAAM,GAAK,GAClFxvH,IAAI,SAAUwvH,GAAS,MAAO,CAAGhvH,KAAMgvH,EAAM,GAAG,IAAMA,EAAM,GAAIvyG,KAAMuyG,EAAM,GAAG,GAAO,EAAI,EAmB3F+y4B,EAA+B,WAC/B,SAASA,EAAcj1rB,EAAejJ,GAClCp3T,KAAKqgU,cAAgBA,EACrBrgU,KAAKo3T,aAAeA,EACpB+7rB,EAAKlzrB,qBAAqBkzrB,EAAKxr+B,IAAI2t+B,EAAcl1/B,WAAYJ,KAAMmz/B,EAAKxr+B,IAAI3nB,MAChF,CA+GA,OArBAs1/B,EAAcl1/B,UAAU23G,UAAY,SAAUxkH,EAAMmhG,GAChD,OAAO10F,KAAKqgU,cAActoN,UAAUxkH,EAAMmhG,IAAS10F,IACvD,EACAs1/B,EAAcl1/B,UAAUzQ,MAAQ,SAAU4D,EAAMmwG,GAQ5C,OAPIyv5B,EAAKlj/B,SAAS1c,GACdmwG,EAAanwG,EAGbmwG,EAAWnwG,KAAOA,EAEtByM,KAAKqgU,cAAcvqQ,SAAS4tC,GACrB1jG,IACX,EAMAs1/B,EAAcl1/B,UAAUghU,UAAY,SAAUlyT,GAC1C,OAAOlP,KAAKo3T,aAAagK,UAAUlyT,EACvC,EACOom/B,CACX,CArHkC,GA+H9BC,EAAsB,SAAUlpT,GAChC,OAAO,SAA0BmpT,EAAatoZ,GAC1C,IAAI70iB,EAAOm97B,EAAYnpT,GACnB5hlB,EAAwB,WAAb4hlB,EAAwB,OAAS,KAOhD,OAAOh0oB,EANP,SAA0Bs6P,EAAOhjU,GAC7B,IACIou6B,EADiB,IAAIo1F,EAAKxyrB,eAAehO,EAAMn8F,YAAY/rG,IAC/BszyB,WAAWpu6B,EAAM0nH,WAC7CwP,EAASss4B,EAAKnw5B,OAAOihN,EAAU85mB,GAAa,CAAE03F,QAAS9lgC,EAAO8l/B,aAAc9irB,IAChF,OAAOwgsB,EAAKhyrB,SAASh7M,UAAUm/G,OAAOjtK,EAAMr4D,KAAM6mH,EACtD,OACiC/vH,CACrC,CACJ,EASI4+/B,EAAqC,WACrC,SAASA,EAAoBC,GAEzB31/B,KAAK41/B,cAAgB,GACrB51/B,KAAK21/B,kBAAoBA,EACzB,IAAIE,EAAM1C,EAAKxr+B,IAAIgu+B,GACnBxC,EAAKlzrB,qBAAqB41rB,EAAK71/B,KAAM61/B,EAAK,CAAC,cAC/C,CA0DA,OA7CAH,EAAoBI,6BAA+B,SAAUljsB,GACzD,IAAImjsB,EAAWnjsB,EAAOt8M,kBAAkBtmG,KAAK,QAC7C+l/B,EAASht6B,OAAS,SAAUxiG,GACxB,OAAY,MAALA,EAAYA,EAAES,WAAWjD,QAAQ,UAAW,SAAUZ,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,EAAK,GAAKoD,CAClH,EACAwvgC,EAASrg3B,OAAS,SAAUnvJ,GACxB,OAAY,MAALA,EAAYA,EAAES,WAAWjD,QAAQ,YAAa,SAAUZ,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,EAAK,GAAKoD,CACpH,CACJ,EACAmvgC,EAAoBt1/B,UAAU2jG,QAAU,WAAc,EACtD2x5B,EAAoBt1/B,UAAUw+T,SAAW,SAAU1vT,GAC/C,IAAIhL,EAAQlE,KAEZ,OADAA,KAAK41/B,cAAc9hgC,KAAKob,GACjB,WAAc,OAAOik/B,EAAKj84B,WAAWhzG,EAAM0x/B,cAAtBzC,CAAqCjk/B,EAAW,CAChF,EACAwm/B,EAAoBt1/B,UAAUixR,UAAY,WACtC,IAAIA,EAAYrxR,KAAK21/B,kBAAkBtkuB,YAEvC,OADAA,EAAY8huB,EAAKlj/B,SAASohR,GAAaA,EAAUr7R,QAAUq7R,IACvCrxR,KAAK6rQ,SAAS5+J,OACtC,EACAyo5B,EAAoBt1/B,UAAUqtF,IAAM,SAAUm9B,EAAQ7mI,EAAS4L,GAQ3D,YAPgB,IAAZ5L,IAAsBA,GAAU,GAChCovgC,EAAK/v5B,UAAUwnB,IACf5qH,KAAKwtH,UAAU//B,IAAIm9B,GACnB7mI,GACAic,KAAKwtH,UAAUzpI,UACf4L,GACAqQ,KAAKwtH,UAAU79H,MAAMA,GAClBqQ,KAAKwtH,UAAU//B,KAC1B,EACAio6B,EAAoBt1/B,UAAU41/B,iBAAmB,SAAU9v4B,EAAYsH,EAAWq+I,EAAU4a,GACxF,IAAIviR,EAAQlE,KACZA,KAAKwtH,UAAYA,EACjBxtH,KAAK6rQ,SAAWA,EAEhB3lJ,EAAWM,IAAI,yBAA0B,SAAU1qF,GAAO,OAAO53B,EAAM0x/B,cAAc5jgC,QAAQ,SAAU8C,GAAM,OAAOA,EAAGgnC,EAAM,EAAI,GACjI,IAAIm69B,EAAO9C,EAAKxr+B,IAAI6lG,GAChB4i3B,EAAW+iB,EAAKxr+B,IAAI8+P,GAExB0suB,EAAKlzrB,qBAAqBg2rB,EAAMj2/B,KAAMi2/B,EAAM,CAAC,UAAW,OAAQ,SAAU,SAE1E9C,EAAKlzrB,qBAAqBg2rB,EAAMj2/B,KAAMi2/B,EAAM,CAAC,OAAQ,WAAY,SAEjE9C,EAAKlzrB,qBAAqBmwqB,EAAUpw+B,KAAMow+B,EAAU,CAAC,YACzD,EACOslB,CACX,CAlEwC,GAmFpCQ,EAAmC,WAEnC,SAASA,EAAkBtjsB,GACvB5yT,KAAKi2G,QAAU28M,EACf5yT,KAAKm2/B,WAAavjsB,EAAOn8M,SAC7B,CA8KA,OA7KAy/4B,EAAkBE,kBAAoB,SAAUxjsB,EAAQ10Q,GACpD,OAAO,SAAUl6D,GACb,OAAOmvgC,EAAKhyrB,SAASh7M,UAAUm/G,OAAOpnL,EAAS,KAAM,CAAEm48B,OAAQrygC,EAAOsygC,aAAc1jsB,EAAOpvC,QAAQrjO,QACvG,CACJ,EAEA+18B,EAAkB91/B,UAAUwjG,KAAO,WAC/B,IAAI6S,EAAYz2G,KAAKm2/B,WAIrB,OAHA1/4B,EAAUrgH,QAAO,GACZqgH,EAAUw03B,mBACXx03B,EAAUl0E,SACPk0E,CACX,EAgCAy/4B,EAAkB91/B,UAAUyiO,KAAO,SAAU0zxB,GACzC,IAAIry/B,EAAQlE,KACZ,IAAKmz/B,EAAKtg/B,WAAW0j/B,GACjB,MAAM,IAAIhv/B,MAAM,6BACpB,IAGIs7N,EAAO,IAAIswxB,EAAKt8rB,YAHR,WACR,OAAO0/rB,EAAOpD,EAAKhyrB,SAASh7M,UAAWjiH,EAAM+xG,QAAQki0B,gBACzD,EACuCg7E,EAAK5zyB,UAE5C,OADAv/M,KAAKm2/B,WAAWtzxB,KAAKA,GACd7iO,IACX,EA2BAk2/B,EAAkB91/B,UAAUww8B,UAAY,SAAU/tuB,GAC9C,IAAI3+N,EAAQlE,KACRy2G,EAAYz2G,KAAKm2/B,WACrB,GAAIhD,EAAK5v5B,SAASs/H,GACdpsH,EAAUm61B,UAAU/tuB,OAEnB,KAAIswxB,EAAKtg/B,WAAWgwN,GAIrB,MAAM,IAAIt7N,MAAM,uCAHhBkvG,EAAUm61B,UAAU,WAAc,OAAO/tuB,EAAKswxB,EAAKhyrB,SAASh7M,UAAWjiH,EAAM+xG,QAAQki0B,gBAAkB,EAI3G,CACA,OAAOn46B,IACX,EAuCAk2/B,EAAkB91/B,UAAUgiH,KAAO,SAAUu+J,EAAMziO,GAK/C,OAJIi18B,EAAKpj/B,QAAQmuC,IAAYi18B,EAAKtg/B,WAAWqrC,MACzCA,EAAUg48B,EAAkBE,kBAAkBp2/B,KAAKi2G,QAAS/3D,IAEhEl+C,KAAKm2/B,WAAW/z4B,KAAKu+J,EAAMziO,GACpBl+C,IACX,EA+BAk2/B,EAAkB91/B,UAAUks+B,eAAiB,SAAUpj4B,GACnDlpG,KAAKm2/B,WAAW7pB,eAAepj4B,EACnC,EACOgt5B,CACX,CApLsC,GAkMtCzpkB,EAAG/qW,OAAO,qBAAsB,IAChC,IAAI806B,EAAW/pkB,EAAG/qW,OAAO,iBAAkB,IACvC+06B,EAAWhqkB,EAAG/qW,OAAO,iBAAkB,CAAC,KAAM,mBAC9Cg16B,EAAUjqkB,EAAG/qW,OAAO,mBAAoB,CAAC,mBACzCi16B,EAAYlqkB,EAAG/qW,OAAO,kBAAmB,CAAC,mBAAoB,iBAAkB,uBAChFk16B,EAAWnqkB,EAAG/qW,OAAO,YAAa,CAAC,iBAAkB,kBAAmB,uBAExEkxO,GADW65H,EAAG/qW,OAAO,mBAAoB,CAAC,cACjC,MAGb,SAASm16B,EAAkBlB,IAEvB/isB,EAAS5yT,KAAK4yT,OAAS,IAAIugsB,EAAK52M,UACzBu6M,cAAgB,IAAIxB,EAAc1isB,EAAOyN,cAAezN,EAAOwE,cAEtExE,EAAOyN,cAActoN,UAAU,QAAS074B,GACxC7gsB,EAAOyN,cAActoN,UAAU,SAAUw94B,EAAoB,WAC7D3isB,EAAOyN,cAActoN,UAAU,WAAYw94B,EAAoB,aAC/D3isB,EAAOyN,cAActoN,UAAU,UAAWw94B,EAAoB,YAC9D3isB,EAAO8lnB,YAAY3zrB,WAAW47Z,mBAAmB,MAAO0yW,KACxD,IAAI0D,EAAqBnksB,EAAOulnB,gBAAkBvlnB,EAAOwlnB,eAAiB,IAAIs9E,EAAoBC,GAMlG,SAAS/x5B,EAAK4pB,EAAWi5J,EAAU5a,EAAU3lJ,EAAYoH,EAAOsC,GAI5D,OAHAmn4B,EAAmBf,iBAAiB9v4B,EAAYsH,EAAWq+I,EAAU4a,UAC9DmsC,EAAe,cACfA,EAAa,KACbA,CACX,CACA,OAXA8isB,EAAoBI,6BAA6BljsB,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhvN,EACjBA,EAAKgiB,QAAU,CAAC,YAAa,WAAY,WAAY,aAAc,QAAS,kBAOrEgtM,CACX,CAzBAiksB,EAAkBjx4B,QAAU,CAAC,qBA0B7B,IAAIox4B,EAAiB,SAAUpwvB,GAAe,MAAO,CAAC,oBAAqB,SAAUqwvB,GAC7E,IAAI3q4B,EAAU2q4B,EAAKrksB,OAAOhsD,GAE1B,OADAt6I,EAAc,KAAI,WAAc,OAAOA,CAAS,EACzCA,CACX,EAAI,EAGR,SAAS4q4B,EAAS/w4B,EAAWhE,EAAIg14B,GAC7BhE,EAAKhyrB,SAASh7M,UAAYA,EAC1Bgt4B,EAAKhyrB,SAASh/M,GAAKA,EAGnBg14B,EAAU92rB,cAAcxsU,MACnBd,IAAI,SAAUxM,GAAK,OAAOA,EAAE8wH,UAAU6pO,WAAa,GACnD52V,OAAO6ogC,EAAKv9xB,QAAS,IACrB3kO,OAAO,SAAU1K,GAAK,MAAkB,aAAXA,EAAE2vM,IAAqB,GACpDlkM,QAAQ,SAAU00gB,GAAc,OAAOA,EAAWxwU,KAAO/vE,EAAUoiJ,SAASm+P,EAAWV,UAAW7/Y,EAAU60I,SAAW,EAChI,CAXAk8vB,EAAStx4B,QAAU,CAAC,YAAa,KAAM,aAsBvC,SAASwx4B,EAAalx4B,GAClBA,EAAWi9G,OAAO,WAAcgwxB,EAAK5+3B,MAAM8i4B,oBAAsB,EACrE,CAHAD,EAAaxx4B,QAAU,CAAC,cAIxB4w4B,EAAS7v4B,SAAS,YAAakw4B,GAC/BH,EAAQ/v4B,SAAS,aAAc,CAAC,oBAbL,SAAU2w4B,GACjC,OAAOA,EAASC,kBAAoB,IAAIrB,EAAkBoB,EAC9D,IAYAb,EAAS9v4B,SAAS,cAAeqw4B,EAAe,eAChDP,EAAS9v4B,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAOisM,EAAOt8M,iBAAmB,IAC7Gmg5B,EAAS9v4B,SAAS,mBAAoB,WAAc,OAAO,IAAIut4B,CAAmB,GAClFyC,EAAUhw4B,SAAS,iBAAkBqw4B,EAAe,kBACpDL,EAAUhw4B,SAAS,mBAAoBqw4B,EAAe,YACtDL,EAAUhw4B,SAAS,eAAgBqw4B,EAAe,sBAClDL,EAAUhw4B,SAAS,SAAU,CAAC,oBAfP,WACnB,OAAOws4B,EAAKnw5B,OAAO4vN,EAAOkksB,cAAe,CAAElz5B,KAAM,WAAc,OAAOgvN,EAAOwE,YAAc,GAC/F,IAcAu/rB,EAAUpygC,QAAQ,eAAgB,CAAC,YAAa,SAAU4ygC,GAAa,OAAOA,EAAU3zuB,QAAQrjO,MAAQ,IACxGy28B,EAASrygC,QAAQ,QAAS,WAAc,OAAOquU,EAAO8lnB,WAAa,GACnEk+E,EAAStq4B,QAAQ,SAAU,WAAc,OAAO6m4B,EAAK5+3B,KAAO,GAC5Dqi4B,EAASjx4B,IAAIyx4B,GACbX,EAAS9w4B,IAAI,CAAC,qBAAsB,SAAU6x4B,GAAsB,IACpEb,EAAUhx4B,IAAI,CAAC,SAAU,SAAUgI,GAAU,IAC7C+o4B,EAAQ/w4B,IAAI,CAAC,aAAc,SAAU8x4B,GAAc,IACnDjB,EAAS7w4B,IAAIux4B,GAEb,IA2SIQ,EA+HAC,EAyIAC,EA+RAp1W,EAl1BAv+V,EAAY,SAAUn6R,GAOtB,OANaA,EAAI2ksB,YAAYx9tB,OAAOkigC,EAAK5v5B,UACrBxwG,IAAI,SAAUvI,GAC9B,IAAIk8gB,EAAa58e,EAAIor+B,cAAc1qgC,GAEnC,MAAO,CAACA,EAAoB,WADXs/B,EAAIo8e,UAAUQ,GAAY7gb,MACJ6gb,EAAWrkZ,QAAUqkZ,EAAW3wgB,KAC3E,GACczL,OAAO6ogC,EAAK/xqB,WAAY,CAAC,EAC3C,EA2EA,SAASy2qB,EAAchl5B,GACnB,IAAI16E,EACA2/9B,EAAajl5B,EAAI7uH,MAAM,qBAI3B,GAHI8zgC,IACAjl5B,EAAM,IAAMil5B,EAAW,GAAK,OAChC3/9B,EAAS06E,EAAI9uH,QAAQ,MAAO,KAAKC,MAAM,oCACN,IAAlBm0C,EAAO/jC,OAClB,MAAM,IAAImT,MAAM,sBAAwBsrG,EAAM,KAClD,MAAO,CAAEljH,MAAOwoC,EAAO,IAAM,KAAM4/9B,UAAW5/9B,EAAO,IAAM,KAC/D,CAEA,SAAS6/9B,EAAaz69B,GAClB,IAAI069B,EAAU169B,EAAG91C,SAAS06Q,cAAc,WACpCt5L,EAAOsq7B,EAAK/69B,MAAM,YAAX+69B,CAAwB8E,GACnC,OAAOpv7B,EAAOsq7B,EAAKz+xB,KAAK7rJ,GAAMl5E,MAAM4D,UAAOuD,CAC/C,CAEA,SAASohgC,EAAavq4B,EAAQokJ,EAAUhtJ,GACpC,IAAIoz4B,EAAUpz4B,EAAIoz4B,SAAWxq4B,EAAO93H,QAAQtC,KACxC6kgC,EAAcjF,EAAKnw5B,OAmC3B,SAAqBzlE,EAAIowF,GACrB,MAAO,CACH2zM,SAAU02rB,EAAaz69B,IAAOowF,EAAOqlM,SACrC79F,SAAS,EACT5jN,OAAQ,OAEhB,CAzCkC8m/B,CAAYtmvB,EAAUpkJ,GAAS5I,EAAIqz4B,aAAe,CAAC,GAC7Enq6B,EAAO0/B,EAAO1/B,KAAKkq6B,EAASpz4B,EAAIuz4B,cAAeF,GACnD,MAAO,CAAED,QAASA,EAASG,cAAevz4B,EAAIuz4B,cAAeF,YAAaA,EAAanq6B,KAAMA,EACjG,CAEA,SAASsq6B,EAAYh79B,GAEjB,IAAIi79B,EAA4D,+BAApD1ugC,OAAOsW,UAAUpZ,SAASqZ,KAAKk9B,EAAGjL,KAAK,SAC/Cmm+B,EAA4B,SAAnBl79B,EAAG,GAAGp1C,SACnB,MAAO,CACHovQ,KAAMkhwB,EAAS,SAAYD,EAAQ,aAAe,OAClDE,SAA+C,MAArCn79B,EAAGjL,KAAK,WAAW3f,cAC7ByzuB,WAAYqyQ,EAEpB,CAEA,SAASE,EAAUp79B,EAAIowF,EAAQF,EAAUz9G,EAAM4o/B,GAC3C,OAAO,SAAU5zgC,GACb,IAAIktS,EAASltS,EAAEitS,OAASjtS,EAAEktS,OAAQnkS,EAAS6qgC,IAC3C,KAAM1muB,EAAS,GAAKltS,EAAE8sS,SAAW9sS,EAAE+sS,SAAW/sS,EAAEgtS,UAAYz0P,EAAGg6N,KAAK,WAAY,CAE5E,IAAI2kjB,EAAezurB,EAAS,WACxBE,EAAOoB,GAAGhhI,EAAOoqgC,QAASpqgC,EAAOuqgC,cAAevqgC,EAAOqqgC,YAC3D,GACApzgC,EAAE2nI,iBAEF,IAAIks4B,EAA8B7o/B,EAAK0o/B,WAAa3qgC,EAAOkgG,KAAO,EAAI,EACtEjpG,EAAE2nI,eAAiB,WACXks4B,KAAiC,GACjCpr4B,EAAS9qF,OAAOu5wB,EACxB,CACJ,CACJ,CACJ,CAUA,SAASn+uB,EAAWz3E,EAASqiC,EAAO2jrB,EAAQ8rT,GACxC,IAAI7u+B,EACA6u+B,IACA7u+B,EAAS6u+B,EAAY7u+B,QAEpB4p+B,EAAKpj/B,QAAQwZ,KACdA,EAAS,CAAC,UAGd,IADA,IAAIohF,EAAKrkH,EAAQqkH,GAAK,KAAO,OACpBhwG,EAAK,EAAGqqX,EAAWz7V,EAAQ5uB,EAAKqqX,EAAS5wX,OAAQuG,IAAM,CAC5D,IAAIm+/B,EAAU9zoB,EAASrqX,GACvBrU,EAAQqkH,GAAImu5B,EAASxsT,EACzB,CACA3jrB,EAAM69F,IAAI,WAAY,WAElB,IADA,IAAIyG,EAAM3mI,EAAQ2mI,IAAM,MAAQ,SACvBtyH,EAAK,EAAGo+/B,EAAWxv+B,EAAQ5uB,EAAKo+/B,EAAS3kgC,OAAQuG,IAAM,CAC5D,IAAIq+/B,EAAUD,EAASp+/B,GACvBrU,EAAQ2mI,GAAK+r4B,EAAS1sT,EAC1B,CACJ,EACJ,CA+gBA,SAAS2sT,EAAetr4B,GACpB,IAAIur4B,EAAW,SAAUvpgC,EAAOwwD,EAAQvwD,GACpC,OAAO+9H,EAAO1I,GAAGt1H,EAAOwwD,EAAQvwD,EACpC,EAEA,OADAspgC,EAASx2uB,WAAY,EACdw2uB,CACX,CAYA,SAASC,EAAuBxr4B,GAC5B,IAAIyr4B,EAAiB,SAAUzpgC,EAAOwwD,EAAQvwD,GAC1C,OAAO+9H,EAAOh4F,SAAShmC,EAAOwwD,EAAQvwD,EAC1C,EAEA,OADAwpgC,EAAe12uB,WAAY,EACpB02uB,CACX,CAgSA,SAASC,EAAmB9r4B,EAAUyB,EAAau0Z,EAAcjuT,EAAOnzG,EAAIsL,GACxE,IAAI6r4B,EAAkBnG,EAAK/69B,MAAM,yBAC7Bmh+B,EAAepG,EAAK/69B,MAAM,sBAC9B,MAAO,CACH08F,SAAU,MACVxgC,UAAW,IACXkP,QAAS,SAAUquK,GACf,IAAIpwO,EAAUowO,EAAS7oR,OAEvB,OADA6oR,EAAShY,QACF,SAAUlxO,EAAOopP,GACpB,IAAIh8Q,EAAOg8Q,EAASh8Q,KAAK,WACzB,IAAKA,EAGD,OAFAg8Q,EAAS/oR,KAAKy4C,QACd8rF,EAASwkJ,EAASzuC,WAAlB/1G,CAA8B5kG,GAGlC,IAAIwa,EAAMptC,EAAKyjgC,MAAQ,CAAEt3W,SAAU,CAAC,EAAGg6T,YAAai3C,EAAKvj/B,MACrD6p/B,EAAat29B,EAAI0lC,MAAQ,IAAIsq7B,EAAKxyrB,eAAex9R,EAAI0lC,MACzDkpM,EAAS/oR,KAAKm6C,EAAI+46B,YAAYnqsB,EAAU0nvB,IAAeh49B,GACvD0x9B,EAAK5+3B,MAAMml4B,gBAAgB3jgC,EAAKkigC,QAASlmvB,EAAS/oR,QAClD,IAAIogI,EAAOmE,EAASwkJ,EAASzuC,YACzB/7L,EAAapE,EAAIoE,WACjB2qO,EAAeonvB,EAAgBn29B,GAC/B2w9B,EAAYyF,EAAap29B,GACzB0jF,EAAS4y4B,GAAcx1sB,EAAUw1sB,GAErC,GADA9w+B,EAAMmr+B,GAAajt4B,EACft/E,EAAY,CACZ,IAAI+2O,EAAqBtvJ,EAAYznF,EAAY4r9B,EAAKnw5B,OAAO,CAAC,EAAG6jB,EAAQ,CAAEu3J,OAAQz1P,EAAOopP,SAAUA,KAChGG,IACAvpP,EAAMupP,GAAgBoM,EACtB31P,EAAMupP,GAAc4hvB,GAAajt4B,GAMrCkrJ,EAASh8Q,KAAK,0BAA2BuoR,GACzCvM,EAASv6J,WAAWzhH,KAAK,0BAA2BuoR,GACpDq7uB,EAA4Bx34B,EAAIoha,EAAcjlQ,EAAoB31P,EAAOwa,EAC7E,CAEA,GAAIgw9B,EAAK5v5B,SAASpgE,EAAI++mB,SAASlqlB,WAC3B,IAAI4h8B,EAAQz29B,EAAI++mB,SAASlqlB,UACrBm97B,EAAYhC,EAAKtxC,YAAY+3C,GAC7BC,EAAc,IAAI/n+B,OAAO,eAAiBqj+B,EAAY,IAAK,KAM3D2E,EAAoBnx+B,EAAMw6M,OALD,WACzB,IAAI42xB,EAAc,GAAGj//B,MAAMuF,KAAK0xQ,EAAS,GAAGv6J,UACvCvmH,OAAO,SAAUssC,GAAM,OAAOA,GAAMA,EAAGyzE,SAAW6o5B,EAAYx0+B,KAAKkY,EAAGyzE,QAAU,GACrF,OAAO+o5B,GAAettkB,EAAGnmc,QAAQyzgC,GAAahkgC,KAAK,IAAM6jgC,EAAQ,aACrE,EAC6D,SAAU90G,GAC9DA,IAEL60G,EAA4Bx34B,EAAIoha,EAAcuhY,EAAcn83B,EAAOwa,GACnE229B,IACJ,GAEJ1w4B,EAAKzgG,EACT,CACJ,EAER,CA7vBA+u+B,EAAkB,CAAC,YAAa,WAC5B,SAA4BP,EAAW1p4B,GACnC,IAAIE,EAASwp4B,EAAU//rB,aACvB,MAAO,CACHtiM,SAAU,IACVrtB,QAAS,CAAC,iBAAkB,oBAC5B2hB,KAAM,SAAUzgG,EAAOriC,EAASyiI,EAAOix4B,GACnC,IAGI1tT,EAHAt8rB,EAAOuo/B,EAAYjygC,GACnBy9C,EAASi29B,EAAa,IAAMA,EAAa,GACzCC,EAAe,KAEftmd,EAAS,CAAC,EACVild,EAAS,WAAc,OAAOV,EAAavq4B,EAAQrnI,EAASqtjB,EAAS,EACrE9gc,EAAMgl5B,EAAc9u4B,EAAMmx4B,QAG9B,SAAS9jgC,IACL,IAAI2uH,EAAM6z4B,IACNqB,GACAA,IACAl29B,IACAk29B,EAAel29B,EAAOo29B,eAAep14B,EAAIoz4B,QAASpz4B,EAAIuz4B,gBAC1C,MAAZvz4B,EAAI92B,MACJ86B,EAAMoF,KAAKn+G,EAAKunP,KAAMxyI,EAAI92B,KAClC,CAVA0ld,EAAOwkd,QAAUtl5B,EAAIljH,MACrBgkjB,EAAOykd,YAAcrv4B,EAAMqx4B,WAAazx+B,EAAM2lG,MAAMvF,EAAMqx4B,YAAc,CAAC,EAUrEvn5B,EAAIkl5B,YACJpv+B,EAAMw6M,OAAOtwH,EAAIkl5B,UAAW,SAAUpw+B,GAClCgshB,EAAO2kd,cAAgBnF,EAAKnw5B,OAAO,CAAC,EAAGr7E,GACvCvxB,GACJ,GAAG,GACHu9iB,EAAO2kd,cAAgBnF,EAAKnw5B,OAAO,CAAC,EAAGr6E,EAAM2lG,MAAMzb,EAAIkl5B,aAE3D3hgC,IACAuyB,EAAM69F,IAAI,WAAY2w4B,EAAU92rB,cAAcppN,gBAAgB7gH,IAC9DuyB,EAAM69F,IAAI,WAAY2w4B,EAAU3xwB,kBAAkBstE,UAAU,CAAC,EAAG18T,IAC3D4Z,EAAKo2uB,YAEV95C,EAASqsT,EAAUrygC,EAASqnI,EAAQF,EAAUz9G,EAAM4o/B,GACpD767B,EAAWz3E,EAASqiC,EAAO2jrB,EAAQ34J,EAAOykd,aAC9C,EAER,GAsFJT,EAAmB,CAAC,YAAa,WAC7B,SAAmCR,EAAW1p4B,GAC1C,IAAIE,EAASwp4B,EAAU//rB,aACvB,MAAO,CACHtiM,SAAU,IACVrtB,QAAS,CAAC,iBAAkB,oBAC5B2hB,KAAM,SAAUzgG,EAAOriC,EAASyiI,EAAOix4B,GACnC,IAGI1tT,EAHAt8rB,EAAOuo/B,EAAYjygC,GACnBy9C,EAASi29B,EAAa,IAAMA,EAAa,GACzCC,EAAe,KAEftmd,EAAS,CAAC,EACVild,EAAS,WAAc,OAAOV,EAAavq4B,EAAQrnI,EAASqtjB,EAAS,EACrE0md,EAAa,CAAC,UAAW,gBAAiB,eAC1CC,EAAgBD,EAAW/vgC,OAAO,SAAUoL,EAAK6hQ,GAAQ,OAAQ7hQ,EAAI6hQ,GAAQ47vB,EAAKvj/B,KAAMla,CAAM,EAAG,CAAC,GACtG,SAASU,IACL,IAAI2uH,EAAM6z4B,IACNqB,GACAA,IACAl29B,IACAk29B,EAAel29B,EAAOo29B,eAAep14B,EAAIoz4B,QAASpz4B,EAAIuz4B,gBAC1C,MAAZvz4B,EAAI92B,MACJ86B,EAAMoF,KAAKn+G,EAAKunP,KAAMxyI,EAAI92B,KAClC,CACAos6B,EAAWrogC,QAAQ,SAAUm+J,GACzBwjZ,EAAOxjZ,GAASpnC,EAAMonC,GAASxnI,EAAM2lG,MAAMvF,EAAMonC,IAAU,KAC3DpnC,EAAMyF,SAAS2hC,EAAO,SAAUioI,GAC5BkiuB,EAAcnq2B,KACdmq2B,EAAcnq2B,GAASxnI,EAAMw6M,OAAOi1D,EAAM,SAAUmoF,GAChDozL,EAAOxjZ,GAASowN,EAChBnqX,GACJ,GAAG,EACP,EACJ,GACAA,IACAuyB,EAAM69F,IAAI,WAAY2w4B,EAAU92rB,cAAcppN,gBAAgB7gH,IAC9DuyB,EAAM69F,IAAI,WAAY2w4B,EAAU3xwB,kBAAkBstE,UAAU,CAAC,EAAG18T,IAC3D4Z,EAAKo2uB,YAEV95C,EAASqsT,EAAUrygC,EAASqnI,EAAQF,EAAUz9G,EAAM4o/B,GACpD767B,EAAWz3E,EAASqiC,EAAO2jrB,EAAQ34J,EAAOykd,aAC9C,EAER,GA8FJR,EAAwB,CAAC,SAAU,eAAgB,eAAgB,YAC/D,SAAkCjq4B,EAAQ2o4B,EAAcvjvB,EAAcokvB,GAClE,MAAO,CACHri4B,SAAU,IACVvtF,WAAY,CAAC,SAAU,WAAY,SAC/B,SAAU62O,EAAQrM,EAAUC,GACxB,IACIuovB,EACAP,EAiCIQ,EACAC,EACAC,EArCJxk5B,EAAS,GAMbqk5B,EAAgBxnvB,EAAaf,EAAO2ovB,gBAAkB,IAAI,EAA1C5nvB,CAAiDqL,GACjE,IACI47uB,EAAe57uB,EAAO9vJ,MAAM0jJ,EAAOgovB,aACvC,CACA,MAAOh1gC,GAGP,CAcA,SAAS41gC,EAAsBjosB,GAC3BA,EAAMtwM,QAAQxrH,KAAKT,EAAQ+8/B,EAAKvj/B,KACpC,CAeA,SAASir/B,IACLC,EAA8Bd,EAClC,CACA,SAASc,EAA8BC,GAC/B5H,EAAKlj/B,SAAS8q/B,KACd7k5B,EAAS,GACTi94B,EAAKnhgC,QAAQ+ogC,EAAkB,SAAUx25B,EAAa4oyB,GAElD,IAAI6tH,EAAmB,SAAUz25B,EAAa4oyB,GAC1C,IAAIt6xB,EAAMgl5B,EAActz5B,GACxB025B,EAASpo5B,EAAIljH,MAAOyuR,EAAO9vJ,MAAMzb,EAAIkl5B,WAAY5qH,EACrD,EACIgmH,EAAK5v5B,SAASgB,GAEdy25B,EAAiBz25B,EAAa4oyB,GAEzBgmH,EAAKpj/B,QAAQw0F,IAElB4u5B,EAAKnhgC,QAAQuyG,EAAa,SAAUA,GAChCy25B,EAAiBz25B,EAAa4oyB,EAClC,EAER,GAER,CACA,SAAS8tH,EAAS325B,EAAW425B,EAAa/tH,GACtC,IACIguH,EAAY,CACZxrgC,MAFQg+H,EAAO95H,IAAIywG,EAAW0z5B,EAAajmvB,KAE3B,CAAEx+Q,KAAM+wG,GACxBnkD,OAAQ+68B,EACR/tH,YAAaA,GAGjB,OADAj3xB,EAAOpiH,KAAKqngC,GACL,WACHhI,EAAKj84B,WAAWhB,EAAhBi94B,CAAwBgI,EAC5B,CACJ,CAEA,SAAS/kgC,IACL,IAAIk0Q,EAAe,SAAU73P,GACzB,OAAOA,EAAIvxB,MAAM,MAAM+P,OAAOkigC,EAAK5zyB,SACvC,EACI67yB,EAAa,SAAUC,GACvB,OAAOA,EAAUtogC,IAAI,SAAUxM,GAAK,OAAOA,EAAE4m5B,WAAa,GAAGp64B,IAAIu3Q,GAAchgR,OAAO6ogC,EAAKv9xB,QAAS,GACxG,EACIrkH,EAAa6p5B,EAAWll5B,GAAQloH,OAAOs8Q,EAAaiwvB,IAAgBjwgC,OAAO6ogC,EAAKv2M,MAAO,IACvF0+M,EAAeF,EAAWll5B,EAAOjlH,OAAO,SAAU1K,GAAK,OAAOonI,EAAOh4F,SAASpvC,EAAEoJ,MAAM4D,KAAMhN,EAAE45D,OAAS,IAEvGo78B,EADsBrl5B,EAAOjlH,OAAO,SAAU1K,GAAK,OAAOonI,EAAO1I,GAAG1+H,EAAEoJ,MAAM4D,KAAMhN,EAAE45D,OAAS,GAAG/rD,OAC7Dk2Q,EAAaiwvB,GAAiB,GACjE5o5B,EAAa2p5B,EAAattgC,OAAOutgC,GAAcjxgC,OAAO6ogC,EAAKv2M,MAAO,IAClEtggB,EAAgB/qM,EAAWtgH,OAAO,SAAU24G,GAAO,OAAQup5B,EAAK59xB,QAAQ5jH,EAAY/H,EAAM,GAC9Fw0K,EAAOjnB,WAAW,WACdxlJ,EAAW3/G,QAAQ,SAAU83G,GAAa,OAAOioK,EAAS9nK,SAASH,EAAY,GAC/EwyM,EAActqT,QAAQ,SAAU83G,GAAa,OAAOioK,EAASroK,YAAYI,EAAY,EACzF,EACJ,CApFAgx5B,EADAd,EAAeA,GAAgBjnvB,EAAaf,EAAOgovB,cAAgB,IAAI,EAAxCjnvB,CAA+CqL,IAG9Ep+Q,KAAKm6/B,eAAiB,SAAU3n6B,EAAUkzW,GAGtC,KAAIytjB,EAAKlj/B,SAAS+p/B,IAAiB9j5B,EAAO9hH,OAAS,GAAnD,CAGA,IAAI4iH,EAAaik5B,EAASzo6B,EAAUkzW,EAAWs0jB,GAE/C,OADA5jgC,IACO4gH,CAHP,CAIJ,EAIAonK,EAAO53J,IAAI,YAKHg04B,EAAkCrD,EAAU92rB,cAAcppN,gBAAgB4j5B,GAC1EJ,EAA4BtD,EAAU3xwB,kBAAkB/+H,QAAQ,CAAC,EAAGm04B,GACpEF,EAAuCt8uB,EAAO53J,IAAI,sBAAuBpwH,GACtE,WACHokgC,IACAC,IACAC,GACJ,IAXAvD,EAAU3zuB,QAAQt0O,YAClB0r9B,EAAsBzD,EAAU3zuB,QAAQt0O,YAoE5C94C,GACJ,GAEZ,GACJq2b,EAAG/qW,OAAO,mBACLklC,UAAU,SAAU8w4B,GACpB9w4B,UAAU,eAAgBgx4B,GAC1Bhx4B,UAAU,iBAAkBgx4B,GAC5Bhx4B,UAAU,UAAW+w4B,GAa1BsB,EAAerz4B,QAAU,CAAC,UAkB1Buz4B,EAAuBvz4B,QAAU,CAAC,UAQlC6mU,EAAG/qW,OAAO,mBACLzwF,OAAO,UAAWgogC,GAClBhogC,OAAO,kBAAmBkogC,GAoI/B32W,EAAS,CAAC,QAAS,WAAY,gBAAiB,eAAgB,KAC5D,SAAwBltb,EAAO49C,EAAUsovB,EAAezovB,EAAc5wJ,GAwBlE,IAAIs54B,EAAW,CACXjC,KAAM,CAAEt3W,SAAU,CAAE74mB,SAAUisL,EAAMyvB,WAAW27Z,qBAC/Cu3W,QAAS,CAAC,GAEVrx4B,EAAY,CACZ5uF,MAAO,EACP88F,SAAU,MACVijJ,UAAU,EACVzjL,SAAU,IACV89K,WAAY,UACZ5uK,QAAS,SAAUquK,EAAUC,EAAQuM,GACjC,OAAO,SAAU11P,EAAOopP,EAAUhpJ,GAC9B,IACI2y4B,EAAYC,EAAWh+tB,EAAcgkX,EAAYlrlB,EADjDgnP,EAAY10L,EAAc,QAAK,GAAI20L,EAAgB30L,EAAkB,WAAG6wsB,EAlC7E,CACHtskB,MAAO,SAAUhnQ,EAASyH,EAAQy0C,GAC1BiqZ,EAAG5nX,QAAQ/a,MAAQ,EACnBopN,EAAS5lB,MAAMhnQ,EAAS,KAAMyH,GAAQ8I,KAAK2rC,GAG3C0wO,EAAS5lB,MAAMhnQ,EAAS,KAAMyH,EAAQy0C,EAE9C,EACA4oO,MAAO,SAAU9kR,EAASk8C,GAClBiqZ,EAAG5nX,QAAQ/a,MAAQ,EACnBopN,EAAS9H,MAAM9kR,GAASuQ,KAAK2rC,GAG7B0wO,EAAS9H,MAAM9kR,EAASk8C,EAEhC,GAkBsHoja,EAAY7zL,EAAS5P,cAAc,YAAcs5vB,EAAUlogC,EAAOw/Q,EAAahqJ,EAAc,QAAKA,EAAY,MAAK,GAAjDgqJ,CAAqDpqP,IAAU,WAE/Oiz+B,EAAe,CACfp6W,MAAO,MACPzjpB,GAAI6oH,EAAU5uF,QACdzkC,KAAMA,EACNyupB,IAAKp8M,EAAUqyjB,QAAQj2W,IAAMp8M,EAAUqyjB,QAAQj2W,IAAM,IAAMzupB,EAAOA,EAClEwL,OAAQ,KACR+jpB,cAUJ,SAA+B/jpB,KACvBA,GAAYA,aAAkBw0/B,KAlC5BsI,EAoCWl6W,EApCFm6W,EAoCc/8/B,EAnClC88/B,IAAYC,IAqCP3I,EAAK5+3B,MAAMwn4B,yBAAyBH,EAAc78/B,GAAUA,EAAOmjpB,UAAYnjpB,EAAOmjpB,SAAS74mB,UAC/Fs4mB,EAAa5ipB,EACbi9/B,EAAWj9/B,KAxC3B,IAAsB88/B,EAASC,CAyCnB,EAjBI,mBAAIp5W,GACA,IAAIu5W,EAAsB9I,EAAK/69B,MAAM,yBAAX+69B,CAAqCvtjB,GAG3Ds2jB,EAAgB/I,EAAK/69B,MAAM,0BAAX+69B,CAAsCvtjB,GAC1D,OAAOq2jB,GAAuBC,CAClC,GAyCJ,SAASF,EAAWj9/B,GAChB,IAAIygR,EAAW72P,EAAM0nG,OACjB8r4B,EAAYh64B,EAAGjZ,QAASkz5B,EAAYj64B,EAAGjZ,QACvCmz5B,EAAc,CACd7C,KAAMz6/B,EACNk5/B,QAAS2D,GAETU,EAAc,CACdC,WAAYJ,EAAU954B,QACtBm64B,WAAYJ,EAAU/54B,QACtBo64B,YAAaL,GAcjB58uB,EAAS+hB,MAAM,sBAAuBhuS,GACtC,IAAI6jO,EAASinD,EAAYmB,EAAU,SAAUv6P,GACzCA,EAAMlvB,KAAK,cAAeumgC,GAC1Br3+B,EAAMlvB,KAAK,UAAWsmgC,GACtBziM,EAAStskB,MAAMroO,EAAO8sP,EAAU,WAC5BoqvB,EAAUvlgC,UACN+mS,GACAA,EAAa4D,MAAM,+BACnB4xtB,EAAK/v5B,UAAUs6M,KAAmBA,GAAiB/0R,EAAM2lG,MAAMovL,KAC/D89sB,EAAcv2+B,EAEtB,GAzDR,WAWI,GAVIy2+B,IACAvI,EAAK5+3B,MAAMmo4B,iBAAiB,yBAA0BhB,EAAW3lgC,KAAK,YACtE2lgC,EAAW949B,SACX849B,EAAa,MAEb/9tB,IACAw1tB,EAAK5+3B,MAAMmo4B,iBAAiB,mBAAoBd,GAChDj+tB,EAAa39B,WACb29B,EAAe,MAEfg+tB,EAAW,CACX,IAAIgB,EAAchB,EAAU5lgC,KAAK,eACjCo9/B,EAAK5+3B,MAAMmo4B,iBAAiB,cAAeC,GAC3C/iM,EAASxujB,MAAMuwvB,EAAW,WACtBgB,EAAYF,YAAY7lgC,UACxB8kgC,EAAa,IACjB,GACAA,EAAaC,EACbA,EAAY,IAChB,CACJ,CAqCQiB,EACJ,GACAjB,EAAYvkyB,GACZumE,EAAene,GAWF+hB,MAAM,qBAAsBxiS,GAAU4ipB,GACnDhkX,EAAarvK,MAAMmvL,EACvB,CA3FA01sB,EAAK5+3B,MAAMmo4B,iBAAiB,UAAWd,GAUvC7pvB,EAASh8Q,KAAK,UAAW,CAAEkigC,QAAS2D,IACpCI,IACAvl8B,EAAa6+J,EAAM2tb,eAAe24W,GAClCjz+B,EAAM69F,IAAI,WAAY,WAClB2s4B,EAAK5+3B,MAAMmo4B,iBAAiB,2BAA4Bd,GACxDnl8B,GACJ,EA4EJ,CACJ,GAEJ,OAAOmwD,CACX,GACJyy4B,EAAmBzz4B,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,KAAM,YAiExF,IAAIi34B,EAAkE,mBAAxCpwkB,EAAG/qW,OAAO,aAAwB,UAE5Do76B,EAAe,EAEnB,SAASnD,EAA4Bx34B,EAAIoha,EAAcjlQ,EAAoBF,EAAQj7O,IAE3Egw9B,EAAKtg/B,WAAWyrQ,EAAmBY,UAAc/7O,EAAI++mB,SAASlqlB,WAAa6k8B,GAC3Ev+uB,EAAmBY,UAEvB,IAAI69uB,EAAY5J,EAAKz+xB,KAAKvxL,EAAI0lC,MAAMl5E,MAAM2yF,KACtC066B,EAAc,CAAEth9B,KAAM4iO,GAE1B,GAAI60uB,EAAKtg/B,WAAWyrQ,EAAmB2+uB,mBAAoB,CACvD,IACIC,EADiB,IAAI/J,EAAKxyrB,eAAex9R,EAAI0lC,MACRqs7B,cAAc,gBAAgBn//B,KAwBvEqoR,EAAO53J,IAAI,WAAY+8Z,EAAazwN,UAAU,CAAC,EAtB3B,SAAU2irB,GAG1B,GAAIA,IAAiBynB,IAAsE,IAA/CznB,EAAa9+wB,UAAUpuO,QAAQw0gC,GAA3E,CAEA,IAAIhoyB,EAAW0gxB,EAAat17B,OAAO,MAC/Bg98B,EAAa1nB,EAAat17B,OAAO,QACjCi98B,EAAW3nB,EAAaj/wB,cAAc5xM,GAAG7xB,IAAI,SAAUhM,GAAQ,OAAOA,EAAKgvO,WAAa,GAAGzrO,OAAO6ogC,EAAKv9xB,QAAS,IAChHynyB,EAAa5nB,EAAaj/wB,cAAc3xM,KAAK9xB,IAAI,SAAUhM,GAAQ,OAAOA,EAAKgvO,WAAa,GAAGzrO,OAAO6ogC,EAAKv9xB,QAAS,IAEpH0nyB,EAAkBF,EAASnsgC,OAAO,SAAU+kO,GAC5C,IAAI5jN,EAAMir/B,EAAW90gC,QAAQytO,GAC7B,OAAgB,IAAT5jN,IAAeir/B,EAAWjr/B,GAAKpC,KAAK+3M,OAAOgN,EAASiB,EAAMj4N,IAAKo//B,EAAWnnyB,EAAMj4N,IAC3F,GAEA,GAAIu//B,EAAgBlpgC,OAAQ,CACxB,IAAImpgC,EAAgBD,EAAgBvqgC,IAAI,SAAUxM,GAAK,OAAOA,EAAEwX,EAAI,GAEhEkhS,EAAYk0tB,EAAKligC,OAAO8jO,EAAU,SAAUptM,EAAKn9B,GAAO,OAAuC,IAAhC+ygC,EAAch1gC,QAAQiC,EAAa,GACtG8zR,EAAmB2+uB,kBAAkBh+tB,EAAWw2sB,EACpD,CAhBU,CAiBd,EACiEunB,GACrE,CAEA,GAAI7J,EAAKtg/B,WAAWyrQ,EAAmBk/uB,WAAY,CAC/C,IAAIC,EAAOX,IACPY,EAAc,gBAEdC,EAAqB,SAAUhrsB,GAC/B,QAASA,IAAUA,EAAM+qsB,KAA6C,IAA7B/qsB,EAAM+qsB,GAAaD,IAAkBE,EAAmBhrsB,EAAMirsB,kBAC3G,EAWI5/5B,EAAW,CAAE24H,QAASomyB,EAAUxpgC,MACpC6qR,EAAO53J,IAAI,WAAY+8Z,EAAaxa,SAAS/qa,EAV3B,SAAU20N,GACxB,IAAItwM,EACAxkH,EAAM80T,EAAM+qsB,GAAe/qsB,EAAM+qsB,IAAgB,CAAC,EAKtD,OAJKC,EAAmBhrsB,KACpBtwM,EAAUF,EAAGC,KAAKk8J,EAAmBk/uB,UAAU7qsB,KACvC97T,KAAK,SAAU8wB,GAAO,OAAO9pB,EAAI4//B,IAAiB,IAAR91+B,CAAgB,GAE/D06F,CACX,EAEoE264B,GACxE,CACJ,CACAvwkB,EAAG/qW,OAAO,mBAAmBklC,UAAU,SAAU47hB,GACjD/1N,EAAG/qW,OAAO,mBAAmBklC,UAAU,SAAUyy4B,GAoBjD5skB,EAAG/qW,OAAO,mBAAmBilC,SAAS,gBAhBtC,WACI,IAAIk34B,GAAkB,EACtB79/B,KAAK69/B,gBAAkB,WACnBA,GAAkB,CACtB,EACA79/B,KAAK4jG,KAAO,CAAC,gBAAiB,WAAY,SAAU05M,EAAe7vL,GAC3D,OAAIow4B,EACOvgtB,EAEJ,SAAUvrC,GACb,OAAOtkJ,EAAS,WACZskJ,EAAS,GAAGvmJ,gBAChB,EAAG,GAAG,EACV,CACJ,EACR,GASA1hI,OAAOO,KAAK8ogC,GAAMnhgC,QAAQ,SAAUxH,GAAO/F,EAAQ+F,GAAO2ogC,EAAK3ogC,EAAM,GACrE/F,EAAQ0ugC,KAAOA,EACf1ugC,EAAQ+9F,QAJI,YAKZ/9F,EAAQ2ygC,aAAeA,EACvB3ygC,EAAQw/T,UAAYA,EACpBx/T,EAAQ4ugC,wBAA0BA,EAClC5ugC,EAAQgvgC,gBAAkBA,EAC1BhvgC,EAAQ8ugC,cAAgBA,EACxB9ugC,EAAQ6wgC,cAAgBA,EACxB7wgC,EAAQyxgC,kBAAoBA,EAE5BpsgC,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,GAErD,CAr8D+DpB,CAAQE,EAAS,EAAQ,MAAY,EAAQ,O,+BCN7G,IAEIklH,EAFwB,EAAQ,KAEpBrD,CAAsB,QAAQqD,UAC1Cu/xB,EAAwBv/xB,GAAaA,EAAUlpG,aAAekpG,EAAUlpG,YAAYL,UAExFshF,EAAOj9F,QAAUyk5B,IAA0Bp/4B,OAAOsW,eAAYtJ,EAAYoy4B,C,+BCN1E,IAAIljpB,EAAa,EAAQ,OACrB8sX,EAAc,EAAQ,OAEtBjyR,EAAavgV,UAGjBohF,EAAOj9F,QAAU,SAAUk9F,GACzB,GAAIqkK,EAAWrkK,GAAW,OAAOA,EACjC,MAAM,IAAIk/P,EAAWiyR,EAAYnxhB,GAAY,qBAC/C,C,yBCDQ,SAAW9gG,GAAU,aAIdA,EAAOG,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERM,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,EACAzV,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAxEyCC,CAAQ,EAAQ,O,+BCL1D,IAAImlG,EAAI,EAAQ,OACZ2pB,EAAW,EAAQ,OACnBmjB,EAAa,EAAQ,OAOzB9sC,EAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMxpI,OANtB,EAAQ,MAEMof,CAAM,WAAcuW,EAAW,EAAI,IAII,CAC/DnsI,KAAM,SAAco3G,GAClB,OAAO+0B,EAAWnjB,EAAS5R,GAC7B,G,+BCZF,IAAImvR,EAAc,EAAQ,OAEtBhmI,EAAoBn/I,SAASrrG,UAC7BC,EAAOuqP,EAAkBvqP,KAEzBy9/B,EAAsBltoB,GAAehmI,EAAkBlvM,KAAKA,KAAKr7C,EAAMA,GAE3EqhF,EAAOj9F,QAAUmsY,EAAcktoB,EAAsB,SAAUhpgC,GAC7D,OAAO,WACL,OAAOuL,EAAKS,MAAMhM,EAAIX,UACxB,CACF,C,6BCVArK,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAwBrBA,EAAiB,QArBL,SAAekL,EAAOk5E,GAChC,IAAKl5E,EACH,OAAOA,EAGT,IAAIyE,EAASy0E,EAAKz0E,OAElB,GAAKA,EAAL,CAMA,IAFA,IAAIjB,EAASxD,EAEJtK,EAAI,EAAGA,EAAI+O,GAAYjB,IAAU9N,EACxC8N,EAASA,EAAO01E,EAAKxjF,IAGvB,OAAO8N,CARP,CASF,C,+BCxBA1O,EAAQ89F,YAAa,EAErB,IAAIw76B,EAAS,EAAQ,OAIjBt0yB,EAAS,WACX,SAASA,EAAO9nF,EAAK4nF,GAGnB,GANJ,SAAyBl0N,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAIpJwnG,CAAgB9nG,KAAMypN,GAElB1jO,MAAM47I,IAAQ57I,MAAMwjO,GACtB,MAAM,IAAIhiN,MAAM,2BAA6Bo6H,EAAM,KAAO4nF,EAAM,KAElEvpN,KAAK2hI,KAAOA,EACZ3hI,KAAKupN,KAAOA,CACd,CAMA,OAJAE,EAAOrpN,UAAUkiD,KAAO,WACtB,OAAO,IAAImnK,EAAOzpN,KAAK2hI,KAAK,EAAIo83B,EAAOz78B,MAAMtiD,KAAKupN,KAAM,IAAK,KAC/D,EAEOE,CACT,CAhBa,GAkBbA,EAAOpB,QAAU,SAAUzuN,GACzB,OAAIA,aAAa6vN,EACR7vN,EAGLtF,MAAMyb,QAAQnW,GACT,IAAI6vN,EAAO7vN,EAAE,GAAIA,EAAE,IAGxB,QAASA,GAAK,QAASA,EAClB,IAAI6vN,EAAO7vN,EAAE+nI,IAAK/nI,EAAE2vN,KAGtB3vN,CACT,EAEAnV,EAAA,QAAkBglO,C,yBChCV,SAAW5oO,GAAU,aAIzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIljF,EAAS,CACTr7C,EAAG,CAAC,aAAc,gBAClBE,EAAG,CAAC,YAAa,eACjBE,EAAG,CAAC,UAAW,aACfE,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAO89H,EAAgBjjF,EAAOh0C,GAAK,GAAKg0C,EAAOh0C,GAAK,EACxD,CAsBA,SAASwzgC,EAA4B/69B,GAEjC,GADAA,EAAS9c,SAAS8c,EAAQ,IACtBl9C,MAAMk9C,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAIikiB,EAAYjkiB,EAAS,GAEzB,OACW+69B,EADO,IAAd92b,EADajkiB,EAAS,GAISikiB,EACvC,CAAO,GAAIjkiB,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAO+69B,EAA4B/69B,EACvC,CAGI,OAAO+69B,EADP/69B,GAAkB,IAG1B,CAESpiD,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFC,MAC3F,KAEJC,YACI,+DAA+DD,MAC3D,KAERghI,kBAAkB,EAClB9gI,SACI,mEAAmEF,MAC/D,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVS,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQod,KAAKs9E,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,yBAEnB,GAEJx6F,aAAc,CACVC,OAlGR,SAA2Be,GAEvB,OAAIk6gC,EADSl6gC,EAAOquH,OAAO,EAAGruH,EAAOyE,QAAQ,OAElC,KAAOzE,EAEX,MAAQA,CACnB,EA6FQd,KA5FR,SAAyBc,GAErB,OAAIk6gC,EADSl6gC,EAAOquH,OAAO,EAAGruH,EAAOyE,QAAQ,OAElC,QAAUzE,EAEd,SAAWA,CACtB,EAuFQb,EAAG,kBACHC,GAAI,cACJC,EAAGq+H,EACHp+H,GAAI,cACJC,EAAGm+H,EACHl+H,GAAI,aACJC,EAAGi+H,EACHh+H,GAAI,UACJC,EAAG+9H,EACH99H,GAAI,WACJC,EAAG69H,EACH59H,GAAI,WAERM,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA5IyCC,CAAQ,EAAQ,O,+DCP1D,IAAI+9F,KAAK,yBAAyB1gF,GAAG,CAAC,MAAMf,GAAG,CAAC,SAASA,EAAEA,EAAED,GAAG,OAAO,IAAIjK,QAAQ,SAAUojB,GAAG,IAAI/0B,EAAE,IAAIohG,eAAephG,EAAEqhG,MAAMC,UAAU,SAASzlF,GAAGkZ,EAAElZ,EAAE9K,KAAK,EAAE8K,EAAE0lF,YAAY3lF,EAAE,CAAC5b,EAAEwhG,OAAQ,EAAE,CAAC,SAAS5lF,EAAEC,GAAG,IAAID,EAAE,SAASC,GAAK,GAAG,iBAAiBA,IAAIA,EAAE,OAAOA,EAAE,IAAIkZ,EAAElZ,EAAErc,OAAOw1H,aAAa,QAAG,IAASjgG,EAAE,CAAC,IAAI/0B,EAAE+0B,EAAE1Z,KAAKQ,EAAED,UAAc,GAAG,iBAAiB5b,EAAE,OAAOA,EAAE,MAAM,IAAIsb,UAAU,+CAA+C,CAAC,OAAoBC,OAAeM,EAAE,CAAjQ,CAAmQA,GAAY,MAAM,iBAAiBD,EAAEA,EAAEA,EAAE,EAAE,CAAC,SAASmZ,EAAElZ,EAAEkZ,GAAG,IAAI,IAAI/0B,EAAE,EAAEA,EAAE+0B,EAAE3lB,OAAOpP,IAAI,CAAC,IAAIK,EAAE00B,EAAE/0B,GAAGK,EAAEqmC,WAAWrmC,EAAEqmC,aAAY,EAAGrmC,EAAE4xC,cAAa,EAAG,UAAU5xC,IAAIA,EAAEomC,UAAS,GAAI3hC,OAAOwY,eAAezB,EAAED,EAAEvb,EAAEmF,KAAKnF,EAAE,CAAC,CAAC,SAASL,EAAE6b,EAAED,GAAG,OAAO5b,EAAE8E,OAAOmW,eAAenW,OAAOmW,eAAey7C,OAAO,SAAS76C,EAAED,GAAG,OAAOC,EAAEX,UAAUU,EAAEC,CAAC,EAAE7b,EAAE6b,EAAED,EAAE,CAAC,SAASvb,EAAEwb,EAAED,IAAI,MAAMA,GAAGA,EAAEC,EAAEzM,UAAUwM,EAAEC,EAAEzM,QAAQ,IAAI,IAAI2lB,EAAE,EAAE/0B,EAAE,IAAIsP,MAAMsM,GAAGmZ,EAAEnZ,EAAEmZ,IAAI/0B,EAAE+0B,GAAGlZ,EAAEkZ,GAAG,OAAO/0B,CAAC,CAA6sB,IAAIs9F,KAAK,uBAAuB1gF,GAAG,CAAC,MAAMf,GAAG,CAAC,IAAI6iF,EAAE,WAAW,IAAI7iF,EAAEb,KAAKA,KAAKqiH,QAAQ,IAAI1rH,QAAQ,SAAUiK,EAAEmZ,GAAGlZ,EAAEjK,QAAQgK,EAAEC,EAAEO,OAAO2Y,CAAE,EAAE,EAAE,SAASngB,EAAEiH,EAAED,GAAG,IAAImZ,EAAEkvE,SAASgF,KAAK,OAAO,IAAI5E,IAAIxoF,EAAEkZ,GAAGk0E,OAAO,IAAI5E,IAAIzoF,EAAEmZ,GAAGk0E,IAAI,CAAC,IAAIroG,EAAE,SAASib,EAAED,GAAGZ,KAAKgQ,KAAKnP,EAAE/W,OAAOC,OAAOiW,KAAKY,EAAE,EAAE,SAASc,EAAEb,EAAED,EAAEmZ,GAAG,OAAOA,EAAEnZ,EAAEA,EAAEC,GAAGA,GAAGA,GAAGA,EAAEhK,OAAOgK,EAAElK,QAAQC,QAAQiK,IAAID,EAAEC,EAAEhK,KAAK+J,GAAGC,EAAE,CAAC,SAAS5d,IAAI,CAAC,IAAIkf,EAAE,CAAC6N,KAAK,gBAAgB,SAAS3sB,EAAEwd,EAAED,GAAG,IAAIA,EAAE,OAAOC,GAAGA,EAAEhK,KAAKgK,EAAEhK,KAAK5T,GAAG0T,QAAQC,SAAS,CAAC,IAAI4hB,EAAE,SAAS5X,GAAG,SAASvb,EAAEwb,EAAEkZ,GAAG,IAAI/0B,EAAEK,EAAE,YAAO,IAAS00B,IAAIA,EAAE,CAAC,IAAI/0B,EAAE4b,EAAEP,KAAKL,OAAOA,MAAMsgV,GAAG,CAAC,EAAEt7V,EAAEw7V,GAAG,EAAEx7V,EAAE2/Y,GAAG,IAAIjhT,EAAE1+F,EAAE07V,GAAG,IAAIh9P,EAAE1+F,EAAE2lH,GAAG,IAAIjnB,EAAE1+F,EAAE6/Y,GAAG,EAAE7/Y,EAAE8qW,GAAG,IAAI58V,IAAIlO,EAAE+/Y,GAAG,WAAW,IAAIlkY,EAAE7b,EAAE8P,GAAG8L,EAAEC,EAAEo9/B,WAAWj5gC,EAAEw7V,GAAG,IAAI5mV,EAAEgH,EAAE+gX,UAAU38X,EAAE4/Y,GAAG59Y,aAAaklH,YAAYpjG,MAAM9jB,EAAE6/Y,GAAG,KAAK7/Y,EAAEogZ,GAAGxkY,EAAEC,EAAE1I,oBAAoB,cAAcnT,EAAE+/Y,MAAM//Y,EAAE8/Y,GAAGlkY,EAAE5b,EAAE8qW,GAAGx8V,IAAIsN,GAAG5b,EAAE2/Y,GAAG/tY,QAAQgK,MAAM5b,EAAEw7V,GAAG5/U,EAAE1I,iBAAiB,cAAclT,EAAEggZ,GAAG,EAAEhgZ,EAAEggZ,GAAG,SAASnkY,GAAG,IAAID,EAAE5b,EAAE8P,GAAGilB,EAAElZ,EAAE9S,OAAO1I,EAAE00B,EAAEpqB,MAAMg0E,EAAE5pD,IAAI/0B,EAAEogZ,GAAG1hT,EAAE,CAAC4uP,GAAGv4T,EAAEmk/B,WAAWv67B,EAAEm4c,cAAcj7gB,IAAI8iE,GAAG3+E,EAAEkgQ,KAAKxhK,EAAEy66B,UAAS,GAAIn5gC,EAAE8nQ,cAAc,IAAIlnQ,EAAEP,EAAEq+F,IAAI,cAAcr+F,EAAEL,EAAEugZ,GAAGjjT,KAAK76E,WAAW,WAAY,cAAcpiB,GAAGub,EAAEw9/B,UAAUrk/B,GAAG/0B,EAAE8nQ,cAAc,IAAIlnQ,EAAE,UAAU89F,GAAI,EAAE,KAAK,eAAer+F,IAAIsiB,aAAa3iB,EAAEugZ,IAAI5hU,GAAG3+E,EAAE07V,GAAG9pV,QAAQmjB,GAAG,EAAE/0B,EAAEqgZ,GAAG,SAASxkY,GAAG,IAAID,EAAE5b,EAAE8/Y,GAAG/qX,EAAEnZ,IAAItS,UAAU+vgC,cAAc929B,WAAWviD,EAAE8nQ,cAAc,IAAIlnQ,EAAE,cAAc,CAACs4gC,WAAWnk/B,EAAE+hgB,cAAcj7gB,EAAEyxU,GAAG1xU,EAAEu9/B,SAASn5gC,EAAEkgQ,MAAMnrO,GAAG/0B,EAAE2lH,GAAG/zG,QAAQgK,EAAE,EAAE5b,EAAEkgZ,IAAI7/Y,EAAE,SAASwb,GAAG,IAAID,EAAEC,EAAE9K,KAAKgkB,EAAElZ,EAAEy9/B,MAAMj5gC,EAAEwb,EAAE0Q,OAAO,OAAO7P,EAAE1c,EAAEu5gC,QAAQ,WAAYv5gC,EAAE8qW,GAAGn8V,IAAItO,IAAIL,EAAE8nQ,cAAc,IAAIlnQ,EAAE,UAAU,CAACmQ,KAAK6K,EAAEk7gB,cAAcj7gB,EAAEy9/B,MAAMvk/B,EAAEu4T,GAAGjtV,IAAK,EAAE,EAAE,WAAW,IAAI,IAAIwb,EAAE,GAAGD,EAAE,EAAEA,EAAEzM,UAAUC,OAAOwM,IAAIC,EAAED,GAAGzM,UAAUyM,GAAG,IAAI,OAAOjK,QAAQC,QAAQvR,EAAEyb,MAAMd,KAAKa,GAAG,CAAC,MAAMA,GAAG,OAAOlK,QAAQyK,OAAOP,EAAE,CAAC,GAAG7b,EAAE4/Y,GAAG/jY,EAAE7b,EAAEs7V,GAAGvmU,EAAEzrB,UAAU+vgC,cAAcnmgC,iBAAiB,UAAUlT,EAAEkgZ,IAAIlgZ,CAAC,CAAC,IAAI2+E,EAAE1gF,EAAEA,EAAE2d,GAAG+iE,EAAEt+E,GAAG+a,UAAUtW,OAAO4W,OAAOzd,EAAEmd,WAAWujE,EAAEvjE,UAAUK,YAAYkjE,EAAE3+E,EAAE2+E,EAAE1gF,GAAG,IAAIu1B,EAAEr1B,EAAIQ,EAAE0B,EAAE+a,UAAU,OAAOzc,EAAEmyE,SAAS,SAASj1D,GAAG,IAAID,QAAG,IAASC,EAAE,CAAC,EAAEA,GAAG2hN,UAAUzoM,OAAE,IAASnZ,GAAGA,EAAE,IAAI,IAAI5b,EAAEgb,KAAK,OAAO0B,EAAE,SAASb,EAAED,GAAG,IAAImZ,EAAElZ,IAAI,OAAGkZ,GAAGA,EAAEljB,KAAYkjB,EAAEljB,KAAK+J,GAAUA,GAAI,CAAjE,CAAmE,WAAY,IAAImZ,GAAG,aAAatxB,SAASw4Q,WAAW,OAAO59Q,EAAE,IAAIsT,QAAQ,SAAUkK,GAAG,OAAO1Z,OAAO+Q,iBAAiB,OAAO2I,EAAG,GAAI,EAAE,WAAY,OAAO7b,EAAEkgQ,GAAGj+J,QAAQ34F,UAAU+vgC,cAAc929B,YAAYviD,EAAEigZ,GAAGjgZ,EAAEmgZ,KAAKzjY,EAAE1c,EAAEsgZ,KAAK,SAAUzkY,GAAG7b,EAAE8P,GAAG+L,EAAE7b,EAAEigZ,KAAKjgZ,EAAE8/Y,GAAG9/Y,EAAEigZ,GAAGjgZ,EAAE07V,GAAG9pV,QAAQ5R,EAAEigZ,IAAIjgZ,EAAE2lH,GAAG/zG,QAAQ5R,EAAEigZ,IAAIjgZ,EAAEigZ,GAAG/sY,iBAAiB,cAAclT,EAAEggZ,GAAG,CAACv6R,MAAK,KAAM,IAAI7pG,EAAE5b,EAAE8P,GAAGspgC,QAAQ,OAAOx9/B,GAAGhH,EAAEgH,EAAE+gX,UAAU38X,EAAE4/Y,GAAG59Y,cAAchC,EAAE8/Y,GAAGlkY,EAAEjK,QAAQC,UAAUC,KAAK,WAAY7R,EAAE8nQ,cAAc,IAAIlnQ,EAAE,UAAU,CAAC0sV,GAAG1xU,EAAE49/B,0BAAyB,IAAM,GAAG3ngC,KAAK,WAAa,IAAI7R,EAAE8/Y,KAAK9/Y,EAAE2/Y,GAAG/tY,QAAQ5R,EAAE8/Y,IAAI9/Y,EAAE8qW,GAAGx8V,IAAItO,EAAE8/Y,KAAK9/Y,EAAE8P,GAAGoD,iBAAiB,cAAclT,EAAE+/Y,IAAIz2Y,UAAU+vgC,cAAcnmgC,iBAAiB,mBAAmBlT,EAAEqgZ,IAAIrgZ,EAAE8P,EAAG,EAAG,GAAG,CAAC,MAAM+L,GAAG,OAAOlK,QAAQyK,OAAOP,EAAE,CAAC,EAAEld,EAAEyS,OAAO,WAAW,IAAI,OAAO4J,KAAKlL,GAAG4M,EAAEre,EAAE2c,KAAKlL,GAAGsB,WAAWsL,GAAG,CAAC,MAAMb,GAAG,OAAOlK,QAAQyK,OAAOP,EAAE,CAAC,EAAEld,EAAE46gC,MAAM,WAAW,YAAO,IAASv+/B,KAAK8kY,GAAGnuY,QAAQC,QAAQoJ,KAAK8kY,IAAI9kY,KAAK2kY,GAAGtiR,OAAO,EAAE1+H,EAAE86gC,UAAU,SAAS79/B,GAAG,IAAI,OAAOc,EAAE1B,KAAKu+/B,QAAQ,SAAUxk/B,GAAG,OAAOlZ,EAAEkZ,EAAEnZ,EAAG,EAAE,CAAC,MAAMC,GAAG,OAAOlK,QAAQyK,OAAOP,EAAE,CAAC,EAAEld,EAAE+6gC,mBAAmB,WAAW1+/B,KAAKlL,IAAIkL,KAAKlL,GAAGspgC,SAASv9/B,EAAEb,KAAKlL,GAAGspgC,QAAQj8/B,EAAE,EAAExe,EAAEwhZ,GAAG,WAAW,IAAItkY,EAAEvS,UAAU+vgC,cAAc929B,WAAW,OAAO1mC,GAAGjH,EAAEiH,EAAE8gX,UAAU3hX,KAAK4kY,GAAG59Y,YAAY6Z,OAAE,CAAM,EAAEld,EAAE2hZ,GAAG,WAAW,IAAI,IAAIzkY,EAAEb,KAAK,OAAO0B,EAAE,SAASb,EAAED,GAAG,IAAI,IAAImZ,EAAElZ,GAAG,CAAC,MAAMA,GAAG,OAAOD,EAAEC,EAAE,CAAC,OAAGkZ,GAAGA,EAAEljB,KAAYkjB,EAAEljB,UAAK,EAAO+J,GAAUmZ,CAAC,CAA9F,CAAgG,WAAY,OAAOrY,EAAEpT,UAAU+vgC,cAAcvo8B,SAASj1D,EAAE+jY,GAAG/jY,EAAEy/U,IAAI,SAAU1/U,GAAG,OAAOC,EAAEgkY,GAAG34R,YAAYpjG,MAAMlI,CAAE,EAAG,EAAE,SAAUC,GAAG,MAAMA,CAAE,GAAG,CAAC,MAAMA,GAAG,OAAOlK,QAAQyK,OAAOP,EAAE,CAAC,EAAE2X,EAAEnzB,GAAGlC,EAAE,CAAC,CAACqH,IAAI,SAASqJ,IAAI,WAAW,OAAOmM,KAAK0gV,GAAGr+N,OAAO,GAAG,CAAC73H,IAAI,cAAcqJ,IAAI,WAAW,OAAOmM,KAAK2qG,GAAG0X,OAAO,MAAMtoG,EAAEvB,EAAEpY,UAAUjd,GAAa2G,OAAOwY,eAAekW,EAAE,YAAY,CAACiT,UAAS,IAAKjT,CAAC,CAA/wG,CAAixG,WAAW,SAAS3X,IAAIb,KAAK2lY,GAAG,IAAI3yY,GAAG,CAAC,IAAI4N,EAAEC,EAAET,UAAU,OAAOQ,EAAE1I,iBAAiB,SAAS2I,EAAED,GAAGZ,KAAK0mY,GAAG7lY,GAAGvN,IAAIsN,EAAE,EAAEA,EAAEzI,oBAAoB,SAAS0I,EAAED,GAAGZ,KAAK0mY,GAAG7lY,GAAG41B,OAAO71B,EAAE,EAAEA,EAAEksP,cAAc,SAASjsP,GAAGA,EAAE9S,OAAOiS,KAAK,IAAI,IAAIY,EAAEmZ,EAA9pJ,SAAWlZ,GAAK,IAAIkZ,EAAE,oBAAoBv1B,QAAQqc,EAAErc,OAAO0d,WAAWrB,EAAE,cAAc,GAAGkZ,EAAE,OAAOA,EAAEA,EAAE1Z,KAAKQ,IAAI/Y,KAAK4zD,KAAK3hC,GAAG,GAAGzlB,MAAMyb,QAAQlP,KAAKkZ,EAAE,SAASlZ,EAAED,GAAG,GAAGC,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAOxb,EAAEwb,EAAED,GAAG,IAAImZ,EAAEjwB,OAAOsW,UAAUpZ,SAASqZ,KAAKQ,GAAG/F,MAAM,GAAG,GAAG,MAAM,WAAWif,GAAGlZ,EAAEJ,cAAcsZ,EAAElZ,EAAEJ,YAAYlN,MAAM,QAAQwmB,GAAG,QAAQA,EAAEzlB,MAAMuwB,KAAKhkB,GAAG,cAAckZ,GAAG,2CAA2C73B,KAAK63B,GAAG10B,EAAEwb,EAAED,QAAG,CAAM,CAAC,CAA3R,CAA6RC,IAAqC,CAACkZ,IAAIlZ,EAAEkZ,GAAG,IAAI/0B,EAAE,EAAE,OAAO,WAAW,OAAOA,GAAG6b,EAAEzM,OAAO,CAACoN,MAAK,GAAI,CAACA,MAAK,EAAG7b,MAAMkb,EAAE7b,KAAK,CAAC,CAAC,MAAM,IAAIsb,UAAU,wIAAwI,CAAq9HqjE,CAAE3jE,KAAK0mY,GAAG7lY,EAAEmP,SAASpP,EAAEmZ,KAAKvY,OAAO,EAAGZ,EAAEjb,OAAOkb,EAAG,EAAED,EAAE8lY,GAAG,SAAS7lY,GAAG,OAAOb,KAAK2lY,GAAGhyY,IAAIkN,IAAIb,KAAK2lY,GAAG5xY,IAAI8M,EAAE,IAAI3N,KAAK8M,KAAK2lY,GAAG9xY,IAAIgN,EAAE,EAAEA,CAAC,CAAzW,G,YCwB10K6gF,EAAOj9F,QAfP,SAAqB4vB,EAAO2/F,GAM1B,IALA,IAAIx9G,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OACnCi0V,EAAW,EACXl1V,EAAS,KAEJqD,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdw9G,EAAUruH,EAAO6Q,EAAO6d,KAC1BlhB,EAAOk1V,KAAc1iW,EAEzB,CACA,OAAOwN,CACT,C,+BCrBA,SAASqrO,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,OACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,OACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,yBCFT,SAAW39O,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,iFAAiFF,MAC7E,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfod,KAAKs9E,OAA8B,IAAft9E,KAAKs9E,MAC1B,wBACA,uBACV,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNC,EAAG,WACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJo2B,EAAG,aACHi/H,GAAI,aACJp1J,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAnEyCC,CAAQ,EAAQ,O,0ECS1D,QAJA,SAAoB+mD,EAAQs0K,GAC1B,OAAOt0K,IAAU,OAAQA,EAAQs0K,EAAU,IAC7C,C,yBCHQ,SAAW/+N,GAAU,aAiEzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIljF,EAAS,CACTv7C,EAAG,CAAC,kBAAmB,mBACvBC,GAAI,CAAC+/C,EAAS,WAAiBA,EAAS,YACxC9/C,EAAG,CAAC,UAAW,cACfC,GAAI,CAAC6/C,EAAS,SAAeA,EAAS,UACtC5/C,EAAG,CAAC,UAAW,eACfC,GAAI,CAAC2/C,EAAS,SAAeA,EAAS,UACtC1/C,EAAG,CAAC,UAAW,eACfC,GAAI,CAACy/C,EAAS,SAAeA,EAAS,UACtCx/C,EAAG,CAAC,SAAU,aACdC,GAAI,CAACu/C,EAAS,SAAeA,EAAS,UACtCt/C,EAAG,CAAC,QAAS,YACbC,GAAI,CAACq/C,EAAS,OAAaA,EAAS,SAExC,OAAOy+E,GAEDD,EADAjjF,EAAOh0C,GAAK,GAGVg0C,EAAOh0C,GAAK,EACxB,CA/EU3J,EAAOG,aAAa,MAAO,CACjCC,OAAQ,sFAAsFC,MAC1F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVC,cAAe,aACfC,KAAM,SAAUC,GACZ,MAAO,QAAUA,EAAMmG,aAC3B,EACAjG,SAAU,SAAUipM,EAAOC,EAAS/oM,GAChC,OAAI8oM,EAAQ,GACD9oM,EAAU,MAAQ,MAElBA,EAAU,MAAQ,KAEjC,EACAC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNC,EAAGu+H,EACHt+H,GAAIs+H,EACJr+H,EAAGq+H,EACHp+H,GAAIo+H,EACJn+H,EAAGm+H,EACHl+H,GAAIk+H,EACJj+H,EAAGi+H,EACHh+H,GAAIg+H,EACJ/9H,EAAG+9H,EACH99H,GAAI89H,EACJ79H,EAAG69H,EACH59H,GAAI49H,GAERt9H,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IA4BhB,CA5FyCC,CAAQ,EAAQ,O,+BCN1D,SAASi6O,EAASr7O,GACd,IAAK,IAAIgd,KAAKhd,EAAQsB,EAAQmH,eAAeuU,KAAI1b,EAAQ0b,GAAKhd,EAAEgd,GACpE,CACArW,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD64O,EAAS,EAAQ,QACjBA,EAAS,EAAQ,QACjBA,EAAS,EAAQ,O,+BCPjB,IAAI90I,EAAI,EAAQ,OACZrpF,EAAO,EAAQ,OACfggG,EAAc,EAAQ,OACtB4uH,EAAyB,EAAQ,OACjC+2B,EAAa,EAAQ,OACrB/1O,EAAW,EAAQ,OACnB0mP,EAAW,EAAQ,OACnB3vQ,EAAW,EAAQ,KACnBs6G,EAAY,EAAQ,OACpBu/Z,EAAiB,EAAQ,OACzBD,EAAkB,EAAQ,MAC1Bp/Z,EAAkB,EAAQ,OAC1Bme,EAAU,EAAQ,OAElB8xI,EAAUjwJ,EAAgB,WAC1Bq/O,EAAavgV,UACb/X,EAAU83G,EAAY,GAAG93G,SACzBxE,EAAUs8G,EAAY,GAAGt8G,SACzBuvH,EAAcjT,EAAY,GAAGvlG,OAC7BnR,EAAMnE,KAAKmE,IAIf+/F,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,GAAQ,CACnCwy8B,WAAY,SAAoBv2d,EAAaC,GAC3C,IACIu9f,EAAY/54B,EAAOy8Y,EAAUv9gB,EAAQkwU,EAAcstM,EAAmBs9f,EAAcC,EAAW/1gC,EAAU6qH,EADzG74F,EAAIm0M,EAAuBjvN,MAE3B8+/B,EAAiB,EACjB3rgC,EAAS,GACb,GAAI8c,EAASkxf,GAAc,CAEzB,IADAw9f,EAAahowB,EAASwqQ,MAEpBv8Y,EAAQ59H,EAASioO,EAAuB4xS,EAAeM,OACjD54gB,EAAQq8H,EAAO,MAAM,MAAM,IAAIi8N,EAAW,mDAGlD,GADAwgL,EAAW//Z,EAAU6/Z,EAAa1vQ,GACpB,OAAOpxP,EAAKghgB,EAAUF,EAAarmf,EAAGsmf,GACpD,GAAIzhZ,GAAWg/4B,EAAY,OAAO56gC,EAAQiD,EAAS8zB,GAAIqmf,EAAaC,EACtE,CAQA,IAPAt9gB,EAASkD,EAAS8zB,GAClBk5S,EAAehtU,EAASm6gB,IACxBG,EAAoBt7Q,EAAWo7Q,MACPA,EAAep6gB,EAASo6gB,IAChDw9f,EAAe5qsB,EAAa5/T,OAC5ByqgC,EAAYl1gC,EAAI,EAAGi1gC,GACnB91gC,EAAWP,EAAQzE,EAAQkwU,IACN,IAAdlrU,GACL6qH,EAAc2tZ,EACVt6gB,EAASo6gB,EAAaptM,EAAclrU,EAAUhF,IAC9C88gB,EAAgB5sM,EAAclwU,EAAQgF,EAAU,QAAIgO,EAAWsqgB,GACnEjugB,GAAUmgH,EAAYxvH,EAAQg7gC,EAAgBh2gC,GAAY6qH,EAC1Dmr5B,EAAiBh2gC,EAAW81gC,EAC5B91gC,EAAWA,EAAW+1gC,EAAY/6gC,EAAOsQ,QAAU,EAAI7L,EAAQzE,EAAQkwU,EAAclrU,EAAW+1gC,GAKlG,OAHIC,EAAiBh7gC,EAAOsQ,SAC1BjB,GAAUmgH,EAAYxvH,EAAQg7gC,IAEzB3rgC,CACT,G,qFCtDF,IAGI,EAHcrJ,OAAOsW,UAGQxU,eAwBjC,QAfA,SAAoB0/C,GAClB,KAAK,EAAAr7B,EAAA,GAASq7B,GACZ,OCVJ,SAAsBA,GACpB,IAAIn4C,EAAS,GACb,GAAc,MAAVm4C,EACF,IAAK,IAAI9gD,KAAOV,OAAOwhD,GACrBn4C,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,CDEW,CAAam4C,GAEtB,IAAIw55B,GAAU,OAAYx55B,GACtBn4C,EAAS,GAEb,IAAK,IAAI3I,KAAO8gD,GACD,eAAP9gD,IAAyBs68B,GAAY,EAAezk8B,KAAKirC,EAAQ9gD,KACrE2I,EAAOW,KAAKtJ,GAGhB,OAAO2I,CACT,E,eECA,QAJA,SAAgBm4C,GACd,OAAO,EAAAigL,EAAA,GAAYjgL,IAAU,OAAcA,GAAQ,GAAQ,EAAWA,EACxE,C,yBC3BA,IAAIppD,EAAO,CACVk3M,IAAK,CAAC,GAGHw5D,EAAU9oQ,OAEd43F,EAAOj9F,QAAU,WAChB,MAAO,CAAEyb,UAAWhe,GAAOk3M,MAAQl3M,EAAKk3M,OAAS,CAAEl5L,UAAW,gBAAkB0yP,EACjF,C,qCCTA,IACQ9yP,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAu+/B,EAA8C,EAAQ,OACtD/4H,EAAqB,EAAQ,OAM7Bg5H,EAA6B,SAAUh7/B,GAOvC,SAASg7/B,EAAY75/B,EAAUvV,GAC3B,IAAIsU,EAiBJ,OAfAtU,EAAU9F,OAAOC,OAAO,CACpBk1gC,qCAAsCF,GACvCnvgC,GACHsU,EAAQF,EAAO3D,KAAKL,OAASA,KAC7BlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bg7/B,sCAAuC,CACnCv5gC,MAAOiK,EAAQqvgC,sCAEnBpvgC,SAAU,CACNlK,MAAOiK,GAEXm1/B,UAAW,CACPp//B,MAAOwf,KAGRjB,CACX,CAWA,OApCAnE,EAAUi//B,EAAah7/B,GA6BvBg7/B,EAAY5+/B,UAAU++/B,SAAW,SAAUxigB,EAAkB14f,EAAOwgX,EAAoBk5J,EAAiB/thB,GAErG,OADAA,EAAU9F,OAAOC,OAAO,CAAC,EAAGiW,KAAKnQ,SAAUD,GACpCoQ,KAAKk//B,sCAAsCxj9B,KAAK,KAAMz3C,EAAOjE,KAAK+k/B,UAAWpof,EAAkBl4I,EAAoBk5J,EAAiB/thB,EAC/I,EACAovgC,EAAY5+/B,UAAUg//B,gCAAkC,SAAU36oB,EAAoBzkR,GAClF,OAAO,IAAIgmyB,EAAmBvhhB,EAAoBzkR,EACtD,EACOg/5B,CACX,CAtCgC,CALhB,EAAQ,QA4CxBt96B,EAAOj9F,QAAUu6gC,C,+DC7DF,SAAStm5B,EAAyBnnG,EAAQonG,GACvD,GAAc,MAAVpnG,EAAgB,MAAO,CAAC,EAC5B,IACI/mB,EAAKnF,EADL0I,GAAS,OAA6BwjB,EAAQonG,GAElD,GAAI7uH,OAAOo4F,sBAAuB,CAChC,IAAI42B,EAAmBhvH,OAAOo4F,sBAAsB3wE,GACpD,IAAKlsB,EAAI,EAAGA,EAAIyzH,EAAiB1kH,OAAQ/O,IACvCmF,EAAMsuH,EAAiBzzH,GACnBszH,EAASpwH,QAAQiC,IAAQ,GACxBV,OAAOsW,UAAU+hF,qBAAqB9hF,KAAKkR,EAAQ/mB,KACxDuD,EAAOvD,GAAO+mB,EAAO/mB,GAEzB,CACA,OAAOuD,CACT,C,kBCfA,IAAIsxgC,EAAiB,EAAQ,OACzBC,EAAkB,EAAQ,OAC1BC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OAS3B,SAAS7pY,EAAU1wkB,GACjB,IAAI1uD,GAAS,EACTpC,EAAoB,MAAX8wD,EAAkB,EAAIA,EAAQ9wD,OAG3C,IADA4L,KAAK+6D,UACIvkE,EAAQpC,GAAQ,CACvB,IAAIw9C,EAAQsT,EAAQ1uD,GACpBwJ,KAAKjM,IAAI69C,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAgklB,EAAUx1nB,UAAU26D,MAAQsk8B,EAC5BzpY,EAAUx1nB,UAAkB,OAAIk//B,EAChC1pY,EAAUx1nB,UAAUvM,IAAM0rgC,EAC1B3pY,EAAUx1nB,UAAUzM,IAAM6rgC,EAC1B5pY,EAAUx1nB,UAAUrM,IAAM0rgC,EAE1B/96B,EAAOj9F,QAAUmxoB,C,+BC9BjB,IAAIlsiB,EAAI,EAAQ,OACZ8vI,EAAmB,EAAQ,MAC3BkmyB,EAAc,EAAQ,MAK1Bh26B,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAJpB,EAAQ,QAI+B,CACnD8+5B,WAAYD,IAGdlmyB,EAAiB,a,+DCTb7iG,EAAgC,iBAAXlyI,SAAuBA,UAAYA,QAAQgkH,UAAYhkH,QAG5EmyI,EAAaD,GAAgC,iBAAVj1C,QAAsBA,SAAWA,OAAO+mB,UAAY/mB,OAMvFm1C,EAHgBD,GAAcA,EAAWnyI,UAAYkyI,EAG5B,IAAKE,YAAS//H,EACvCokI,EAAcrE,EAASA,EAAOqE,iBAAcpkI,EAqBhD,QAXA,SAAqBnS,EAAQo8G,GAC3B,GAAIA,EACF,OAAOp8G,EAAOmW,QAEhB,IAAI1G,EAASzP,EAAOyP,OAChBjB,EAAS+nI,EAAcA,EAAY9mI,GAAU,IAAIzP,EAAO8b,YAAYrM,GAGxE,OADAzP,EAAO2sG,KAAKn+F,GACLA,CACT,C,kBChCA,IAAIg5N,EAAW,EAAQ,OACnBC,EAAmB,EAAQ,OAC3BC,EAAW,EAAQ,OACnBC,EAAsB,EAAQ,MAC9Bp4K,EAAO,EAAQ,OAuBf0zjB,EAAmBv7Y,EAAS,SAASttH,GACvC,IAAIy/I,EAAatqM,EAAK6qD,GAClBwtH,EAASJ,EAASptH,EAAQutH,GAM9B,OAJAkyB,EAAkC,mBAAdA,EAA2BA,OAAa1nP,IAE1Dy1N,EAAOlqN,MAEDkqN,EAAOn4N,QAAUm4N,EAAO,KAAOxtH,EAAO,GAC1CqtH,EAAiBG,OAAQz1N,EAAW0nP,GACpC,EACN,GAEA98J,EAAOj9F,QAAUmjnB,C,8FCtCV,MAAMg4Z,EAAa,CACtB9sf,cAAe,WACf14S,WAAW,EACXylyB,oBAAqB,EACrB3upB,SAAU,OACV4upB,eAAgB,UAEPC,EAAqB,6YACrBC,EAAwB,4DCJtB,MAAMC,EAKjB,WAAAx//B,CAAY7Q,GACR,MAAM,sBAAEswgC,EAAqB,cAAEC,EAAa,oBAAEC,GAAwBxwgC,EACtEoQ,KAAKq45B,IDSE,SAA2B6nG,EAAuBC,EAAeC,EAAsB,CAAC,GACnG,MAAM/nG,EAAM,IAAI,IAAJ,CAAQ,IAAKunG,KAAeQ,IAcxC,OAZA/nG,EAAI7mZ,UAAU,WAAYwuf,GAC1B3nG,EAAI7mZ,UAAU,QAASuuf,GAEnBzrgC,MAAMyb,QAAQmw/B,IACd7nG,EAAI3nZ,cAAcwvf,IAGlB,EAAAjw/B,EAAA,GAASkw/B,IACTr2gC,OAAOO,KAAK81gC,GAAenugC,QAASqugC,IAChChoG,EAAI7mZ,UAAU6uf,EAAYF,EAAcE,MAGzChoG,CACX,CCzBmBioG,CAAkBJ,EAAuBC,EAAeC,EACvE,CAQA,WAAAhmD,CAAY52mB,EAAay6mB,EAAY,IACjC,OAAO,QAAYz6mB,EAAay6mB,EACpC,CAOA,6BAAAsiD,CAA8Bt/xB,EAAS,IACnC,OAAOA,EAAOluO,IAAK/N,IACf,MAAM,SAAE0shB,EAAQ,QAAEzuS,EAAO,QAAE7yI,EAAO,OAAEjwC,EAAM,WAAEq7K,GAAex2O,EACrDsvB,EAAW,GAAGo9f,IAEpB,MAAO,CACHn+gB,KAAM0vO,EACN3uN,WACA87E,UACAjwC,SACA5Z,MAAO,GAAGjyB,KAAY87E,IAAUpyF,OAChCw9N,eAGZ,CAOA,aAAAglyB,CAAcl7yB,EAAQ08I,GAClB,IAAIy+pB,EACJ,IACIzggC,KAAKq45B,IAAI1ysB,SAASL,EAAQ08I,EAC9B,CACA,MAAOt5P,GACH+35B,EAAkB/35B,CACtB,CACA,MAAMu4H,EAASjhO,KAAKq45B,IAAIp3rB,aAAUnqO,EAGlC,OADAkJ,KAAKq45B,IAAIp3rB,OAAS,KACX,CAAEA,OAAQA,EAAQw/xB,kBAC7B,CAYA,gBAAAjmpB,CAAiBxY,EAAU18I,EAAQ20J,EAAgBI,EAAiBpX,GAChE,MAAM9mI,EAAa7W,EACbigJ,EAAYvlW,KAAKwggC,cAAcl7yB,EAAQ08I,IACvC,gBAAEy+pB,GAAoBl7pB,EAC5B,IAAItkI,EAASjhO,KAAKuggC,8BAA8Bh7pB,EAAUtkI,QAC1D,MAAMy/xB,EAAqBD,GAAmBA,EAAgBrw6B,SAAWqw6B,EAAgBrw6B,QAAQz6D,SAAS,8BACtG+q+B,IACAz/xB,EAAS,IAAIA,EAAQ,CAAE16L,MAAOk69B,EAAgBrw6B,WAEnB,mBAApBiqR,IACPp5I,EAASo5I,EAAgBp5I,EAAQgiI,IAErC,IAAIO,GAAc,QAAcviI,GAWhC,GAVIy/xB,IACAl9pB,EAAc,IACPA,EAEC19I,QAAS,CACLwrJ,SAAU,CAACmvpB,EAAgBrw6B,YAKb,mBAAnB6pR,EACP,MAAO,CAAEh5I,SAAQuiI,eAGrB,MAAMc,GAAc,QAAoBtkW,KAAMslN,EAAQ08I,EAAU7lI,GAAY,GACtEomG,EAAe03C,EAAe3V,GAAa,QAAmBA,GAAcrB,GAC5E09pB,GAAkB,QAAmBp+rB,GAC3C,OAAO,QAAoB,CAAEthG,SAAQuiI,eAAem9pB,EACxD,CAKA,kBAAAC,CAAmBzkyB,GACf,IAAI34N,EACJ,MAAMq9/B,EAAe,UAI0B/pgC,IAA3CkJ,KAAKq45B,IAAItysB,UAAU,MACnB/lN,KAAKq45B,IAAI9xsB,UAAU4V,EAAY,OAEzB,QAAWA,EAA8D,QAAjD34N,EAAKxD,KAAKq45B,IAAItysB,UAAU,aAAwC,IAAPviN,OAAgB,EAASA,EAAG8hN,UACnHtlN,KAAKq45B,IAAI/mZ,aAAauvf,GACtB7ggC,KAAKq45B,IAAI9xsB,UAAU4V,EAAY0kyB,GAEvC,CASA,OAAA/3zB,CAAQwc,EAAQ08I,EAAU7lI,GACtB,IAMI,OALAn8N,KAAK4ggC,mBAAmBzkyB,GAITn8N,KAAKq45B,IAAI1ysB,UAAS,QAAgBL,GAAS08I,EAE9D,CACA,MAAOh9W,GACH,OAAO,CACX,CACJ,EC7IJ,QCEe,SAA4B4K,EAAU,CAAC,GAClD,OAAO,IAAIqwgC,EAAcrwgC,EAC7B,CDJA,E,yBEJA8xF,EAAOj9F,QAAU,SAAwBg9G,EAAIi4H,EAAUC,GACrD,IAAIlwH,EAAM,IACNq8G,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBkB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACnBirI,EAAiB,GACrBpR,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3B26b,EAAiBrpO,EAAIZ,OACvBomyB,GAAmB,EACjB3yqB,EAAOroI,EACX,GAAIqoI,EAGF,IAFA,IAAIi3O,EAAMv4V,GAAM,EACd9wK,EAAKoyR,EAAK/5V,OAAS,EACdy4O,EAAK9wK,GACVqpgB,EAAOj3O,EAAKthH,GAAM,GACdprI,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,OACxCg79B,GAAmB,EACnBxlyB,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAasQ,EAAc,IAAMe,EAAK,IAC1CvR,EAAIpB,cAAgBD,EAAiB,IAAM4S,EAC3CpjI,GAAO,KAAQhI,EAAGkkH,SAAS2V,GAAQ,IACnCA,EAAIZ,OAASiqO,EACTxqO,IACF1wH,GAAO,QAAU,EAAe,OAChCijI,GAAkB,MAa1B,OARIvS,IAEA1wH,GADEq35B,EACK,gBAEA,IAAOp0xB,EAAe5xO,MAAM,GAAI,GAAM,KAG3C2mG,EAAG0S,KAAK4wV,YAAYt7V,EAE5B,C,yBCzCA/nB,EAAOj9F,QAAU,SAAyBg9G,EAAIi4H,EAAUC,GACtD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAClC,IAAuB,IAAnBt4H,EAAG1xE,KAAKyO,OAIV,OAHI27L,IACF1wH,GAAO,iBAEFA,EAET,IACEoiI,EADEI,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAEjB,IAAIi7yB,EAAkBt/5B,EAAG1xE,KAAK+v+B,eAC5BkB,EAAgB1sgC,MAAMyb,QAAQgx/B,GAChC,GAAI90xB,EAIFxiI,GAAO,SAHHw35B,EAAU,SAAWnnyB,GAGI,cAAgB,EAAiB,WAF5DonyB,EAAY,WAAapnyB,GAE6D,aAAe,EAAY,qBAAyB,EAAY,0BAA4B,EAAY,mBAD9LqnyB,EAAc,aAAernyB,GACqM,MAAQ,EAAc,OAAS,EAAY,0BAA8B,EAAc,OACvTr4H,EAAG5b,QACL4jB,GAAO,aAAe,EAAS,MAAQ,EAAY,YAErDA,GAAO,IAAM,EAAY,MAAQ,EAAY,sBACzCwiI,IACFxiI,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,KACgB,UAAnBs35B,IACFt35B,GAAO,KAAO,EAAiB,QAAU,EAAY,IACjDu35B,IACFv35B,GAAO,yCAA2C,EAAiB,YAErEA,GAAO,SAETA,GAAO,KAAO,EAAY,OAAS,EAAgB,QAAW,EAAc,iBAAoB,EAAY,oBACxGhI,EAAG5b,MACL4jB,GAAO,UAAY,EAAS,YAAc,EAAY,IAAM,EAAU,OAAS,EAAY,IAAM,EAAU,MAE3GA,GAAO,IAAM,EAAY,IAAM,EAAU,KAE3CA,GAAO,MAAQ,EAAY,SAAW,EAAU,cAC3C,CACL,IAAIw35B,EACJ,KADIA,EAAUx/5B,EAAGvkD,QAAQ4oK,IACX,CACZ,GAAuB,UAAnBi7yB,EAKF,OAJAt/5B,EAAGo5H,OAAOhuN,KAAK,mBAAqBi5M,EAAU,gCAAkCrkH,EAAGy4H,cAAgB,KAC/FC,IACF1wH,GAAO,iBAEFA,EACF,GAAIu35B,GAAiBD,EAAgBx4gC,QAAQu9N,IAAY,EAI9D,OAHIqU,IACF1wH,GAAO,iBAEFA,EAEP,MAAM,IAAIliG,MAAM,mBAAqBu+M,EAAU,gCAAkCrkH,EAAGy4H,cAAgB,IAExG,CACA,IAAIgnyB,EACAC,GADAD,EAA8B,iBAAXD,KAAyBA,aAAmBnv+B,SAAWmv+B,EAAQt7yB,WACvDs7yB,EAAQjx/B,MAAQ,SAC/C,GAAIkx/B,EAAW,CACb,IAAItnyB,GAA2B,IAAlBqnyB,EAAQp76B,MACrBo76B,EAAUA,EAAQt7yB,QACpB,CACA,GAAIw7yB,GAAexnyB,EAIjB,OAHIQ,IACF1wH,GAAO,iBAEFA,EAET,GAAImwH,EAAQ,CACV,IAAKn4H,EAAG5b,MAAO,MAAM,IAAIt+E,MAAM,+BAE/BkiG,GAAO,iBADH235B,EAAa,UAAY3/5B,EAAG0S,KAAK43H,YAAYjmB,GAAW,aACpB,IAAM,EAAU,QAC1D,KAAO,CACLr8G,GAAO,UACP,IAAI235B,EAAa,UAAY3/5B,EAAG0S,KAAK43H,YAAYjmB,GAC7Co7yB,IAAWE,GAAc,aAE3B335B,GADoB,mBAAXw35B,EACF,IAAM,EAAe,IAAM,EAAU,KAErC,IAAM,EAAe,SAAW,EAAU,KAEnDx35B,GAAO,MACT,CACF,CACA,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,uDAA0EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,yBAE9JxwH,GADEwiI,EACK,GAAK,EAEL,GAAMxqI,EAAG0S,KAAK6mH,eAAelV,GAEtCr8G,GAAO,QACkB,IAArBhI,EAAG1xE,KAAK+gK,WACVrnF,GAAO,sCAELA,GADEwiI,EACK,OAAU,EAAiB,OAE3B,GAAMxqI,EAAG0S,KAAK8mH,aAAanV,GAEpCr8G,GAAO,QAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAMxqI,EAAG0S,KAAK6mH,eAAelV,GAEtCr8G,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,kBCpJA,EAAQ,OACR/nB,EAAOj9F,QAAU,M,+BCAjB,IAAI49F,EAAa,EAAQ,OAEzBX,EAAOj9F,QAAU49F,EAAW1rF,O,yBCF5B+qF,EAAOj9F,QAAU,SAAuBg9G,EAAIi4H,EAAUC,GACpD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACnBmS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,IACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,MAKvG,IAAIiR,EAAK,IAAM/S,EACbmrhB,EAAW,SAAWnrhB,EACnBmS,IACHxiI,GAAO,QAAU,EAAa,qBAAuB,EAAgB,KAEvEA,GAAO,OAAS,EAAW,IACvBwiI,IACFxiI,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAY,EAAW,qBAAuB,EAAO,OAAS,EAAO,IAAM,EAAa,YAAc,EAAO,iBAAmB,EAAU,KAAO,EAAa,IAAM,EAAO,SAAW,EAAW,oBAC7LwiI,IACFxiI,GAAO,SAETA,GAAO,SAAW,EAAW,SAC7B,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,qDAAwEhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,qCAAuC,EAAS,OACrL,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,+DAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,+BC/DA,IAAI/f,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB4f,EAAQ,EAAQ,OAChBC,EAAkB,EAAQ,OAE1Bmh5B,EAAoBhh6B,EAAY,IAAIy9B,aAYxCp0C,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAVtBof,EAAM,WAEjB,MAA2C,MAApCoh5B,EAAkB,OAAGvqgC,EAC9B,KAAOmpH,EAAM,WAEXoh5B,EAAkB,CAAC,EACrB,IAIqD,CACnDvj4B,YAAa,SAAqBtlD,GAChC,YAAqB1hF,IAAd0hF,EACH6o7B,EAAkBnh5B,EAAgBlgH,OAClCqhgC,EAAkBnh5B,EAAgBlgH,MAAOw4E,EAC/C,G,kBCvBF,IAAI8o7B,EAAY,EAAQ,OACpBC,EAAU,EAAQ,OAgCtB7/6B,EAAOj9F,QAJP,SAAe6mD,EAAQu9B,GACrB,OAAiB,MAAVv9B,GAAkBi29B,EAAQj29B,EAAQu9B,EAAMy47B,EACjD,C,yBC9BA,IAAIx48B,EAAOtjE,KAAKsjE,KACZ9iE,EAAQR,KAAKQ,MAKjB07F,EAAOj9F,QAAUe,KAAKwpxB,OAAS,SAAezoxB,GAC5C,IAAIsa,GAAKta,EACT,OAAQsa,EAAI,EAAI7a,EAAQ8iE,GAAMjoD,EAChC,C,+BCTA,IAAIu+W,EAA8B,EAAQ,OACtCoipB,EAAkB,EAAQ,OAC1BC,EAA0B,EAAQ,OAIlCC,EAAoBn6/B,MAAMm6/B,kBAE9Bhg7B,EAAOj9F,QAAU,SAAUwlB,EAAO+O,EAAGutB,EAAO66lB,GACtCqgY,IACEC,EAAmBA,EAAkBz3/B,EAAO+O,GAC3ComW,EAA4Bn1W,EAAO,QAASu3/B,EAAgBj79B,EAAO66lB,IAE5E,C,+BCZA38oB,EAAQ89F,YAAa,EACrB,IAAIo/6B,EAAW,eACXC,EAAcD,EAAW,kBAUzBE,EAAW,KAEXC,OAAe,EAEfC,OAAwB,EAExBC,EAAiB,IAAIrrgC,QAAQ,SAAUC,GACzCmrgC,EAAwBnrgC,CAC1B,GAIAnS,EAAA,QAAkB,SAAUsmV,EAAkBG,GAO5C,OANK22rB,IACHA,EAAW,EAAQ,QAKhB92rB,EAID+2rB,IAIJA,EAAe,IAAInrgC,QAAQ,SAAUC,EAASwK,GAC5C,GAAsB,oBAAXja,OAKX,GAAIA,OAAOoyoB,QAAUpyoB,OAAOoyoB,OAAO11gB,KACjCjtH,EAAQzP,OAAOoyoB,OAAO11gB,UADxB,MAKkD,IAAvC18H,OAAO86gC,6BAChB7ggC,EAAO,IAAImG,MAAM,oCAGnBpgB,OAAO86gC,4BAA8B,kBAC5B96gC,OAAO86gC,4BACdrrgC,EAAQzP,OAAOoyoB,OAAO11gB,KACxB,EAWA,IA/DyB7+G,EA+DrBm7C,EAASr2D,OAAOO,KAAK0gV,GAAkBzgV,OAAO,SAAUyvB,EAAGvvB,GAC7D,OAAOuvB,EAAI,IAAMvvB,EAAM,IAAMugV,EAAiBvgV,EAChD,EAAG,IAECq8F,GAnEqB7hF,EAmEJ+lU,EAAiB/lU,SAlED,OAAzBA,EAAO5c,cACZu5gC,EAAW,aAEbC,EAkELC,EAAch76B,EAxEH,oDAwEwB1mC,GAFnB+qR,EAAiB,2BAA6B,IAEP,WACrD,YAAgC,IAAlB/jV,OAAOoyoB,QAA0Bn4nB,EAAO,IAAImG,MAAM,gDAClE,EA7BA,MAPEnG,EAAO,IAAImG,MAAM,mDAqCrB,GAEAw6/B,EAAsBD,GAEfA,GAlDEE,CAmDX,C,+BCpFAl4gC,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIgghB,EAAU,EAAQ,OAClBxmM,EAAiB,EAAQ,OACzBymM,EAAY,EAAQ,OACpBjka,EAAW,EAAQ,OACnBC,EAAe,EAAQ,OACvBmU,EAAQ,EAAQ,OAChB8tI,EAAc,EAAQ,OACtBs+R,EAAmB,EAAQ,OAC3Bw+d,EAAiB,EAAQ,MACzBuhB,EAAgB,EAAQ,OACxB9isB,EAAc,EAAQ,MACtBt9N,EAAU,EAAQ,OAClBopgB,EAAe,EAAQ,OACvB1rS,EAAmB,EAAQ,OAE3B2isB,EAAYps5B,EAAMzjF,KAAK,QASvB4kT,EAA4B,WAa5B,SAASA,EAAWv0O,EAAUmyH,EAAa89F,GACvC,IAAI1uT,EAAQlE,KAoBZ,GAlBAA,KAAK0lnB,UAAYvmT,EAAegC,SAASh/M,GAAGjZ,QAO5ClpG,KAAKqiH,QAAUriH,KAAK0lnB,UAAUrjgB,QAE9BriH,KAAK0lP,iBAAmB,CAAC,EAEzB1lP,KAAKoigC,aAAe,IAAIF,EAAc9/e,YAAYpihB,MAElDA,KAAK21T,SAAW,WACZ,OAAOzxT,EAAM0uT,OAAOpvC,QAAQt0O,aAAehrC,CAC/C,EACAlE,KAAK4yT,OAASA,EACd5yT,KAAKqigC,aAAevtyB,GACfA,EAAYruM,QACb,MAAM,IAAIlf,MAAMutN,EAAY7qN,SAGhCjK,KAAKnQ,SAAW8xG,EAASqB,OAAO,CAAEntG,QAASkgH,EAAMpuF,IAAI3nB,OAAS80N,EAAYllO,WAC1EoQ,KAAKm+R,IAAMy0B,EAAOptE,kBAAkB67vB,mBACpC,IAAIhiyB,EAAS+/G,EAAY5qG,UAAUU,YAAYvyH,EAAUmyH,GACzD90N,KAAKsigC,aAAeljsB,EAAY5qG,UAAUgC,YAAY7zH,EAAU08G,EAAQr/M,KAAKnQ,SAAS4mO,aACtFz2N,KAAKuigC,6BACL,IAAIC,EAAgBxigC,KAAKoigC,aAAa//e,mBAAmBx+R,EAAYw/R,oBAAoBC,QACzFnB,EAAiBa,eAAey/e,YAAYD,EAAe,WAAc,OAAO,IAAM,GACtFxigC,KAAKq1N,iBAAiBu9F,EAC1B,CAkjBA,OAhjBAskB,EAAW92U,UAAU2ogB,SAAW,SAAU/qa,EAAU9uF,EAAUtf,GAAmB,EAEjFsnV,EAAW92U,UAAUqmH,QAAU,SAAUzoB,EAAU9uF,EAAUtf,GAAmB,EAEhFsnV,EAAW92U,UAAUm4U,OAAS,SAAUv6O,EAAU9uF,EAAUtf,GAAmB,EAE/EsnV,EAAW92U,UAAUussB,SAAW,SAAU3umB,EAAU9uF,EAAUtf,GAAmB,EAEjFsnV,EAAW92U,UAAUy+N,QAAU,SAAU7gI,EAAU9uF,EAAUtf,GAAmB,EAEhFsnV,EAAW92U,UAAUmja,SAAW,SAAUvlU,EAAU9uF,EAAUtf,GAAmB,EAEjFsnV,EAAW92U,UAAU0yT,UAAY,SAAU90N,EAAU9uF,EAAUtf,GAAmB,EAElFsnV,EAAW92U,UAAUi9W,QAAU,SAAUr/Q,EAAU9uF,EAAUtf,GAAmB,EAKhFsnV,EAAW92U,UAAUmigC,2BAA6B,WAC9C,IAAIr+/B,EAAQlE,KACZA,KAAK4yT,OAAOptE,kBAAkBT,WAAWu9R,aACpCrxhB,OAAO,SAAU+e,GAAQ,OAAOA,EAAKozgB,YAAcv/R,EAAYw/R,oBAAoBC,MAAQ,GAC3FtxhB,QAAQ,SAAUge,GAAQ,OAAO2w+B,EAAep7vB,UAAUrhP,EAAOA,EAAM0uT,OAAOptE,kBAAmBx1O,EAAO,EACjH,EAEAknU,EAAW92U,UAAUojhB,SAAW,SAAU6oL,GACtC,OAAOrssB,KAAK0lP,iBAAiB2md,EACjC,EACAn1X,EAAW92U,UAAUi1N,iBAAmB,SAAUu9F,GAC9C,IAAI8vsB,EAAiB1igC,KAAKsigC,aAAa1ryB,SAAS7jO,IAAI,SAAUhM,GAAQ,OAAOA,EAAK4I,KAAO,GACzFyvU,EAAY5qG,UAAUa,iBAAiBu9F,EAAOptE,kBAAkBlwB,MAAOt1N,KAAKsigC,aAAa19+B,GAAI89+B,EACjG,EAMAxrrB,EAAW92U,UAAUuigC,MAAQ,WACzB,OAAOhh6B,EAAS+yH,KAAK10N,KAAKsigC,aAAaz9+B,MAAMl1B,KACjD,EAMAunV,EAAW92U,UAAU6yT,IAAM,WACvB,OAAOtxN,EAAS+yH,KAAK10N,KAAKsigC,aAAa19+B,IAAIj1B,KAC/C,EAQAunV,EAAW92U,UAAUykB,KAAO,WACxB,OAAO7kB,KAAK2igC,QAAQrg7B,IACxB,EAQA40P,EAAW92U,UAAUwkB,GAAK,WACtB,OAAO5kB,KAAKizT,MAAM3wO,IACtB,EAQA40P,EAAW92U,UAAU00N,YAAc,WAC/B,OAAO90N,KAAKqigC,YAChB,EAKAnrrB,EAAW92U,UAAU6kH,GAAK,SAAUvlF,GAChC,OAAIA,aAAmBw3S,EAEZl3U,KAAKilH,GAAG,CAAErgG,GAAI8a,EAAQuzR,MAAM1/T,KAAMsxB,KAAM6a,EAAQij+B,QAAQpvgC,SAEzDmsC,EAAQ9a,KAAO+79B,EAAe78vB,WAAW9jP,KAAKizT,MAAOvzR,EAAQ9a,KAClE8a,EAAQ7a,OAAS879B,EAAe78vB,WAAW9jP,KAAK2igC,QAASjj+B,EAAQ7a,MAC1E,EACAqyT,EAAW92U,UAAU+/C,OAAS,SAAUsqE,GAEpC,YADiB,IAAbA,IAAuBA,EAAW,MAC/B3gI,OAAOklD,OAAOhvC,KAAKsigC,aAAa734B,GAAU13H,IAAIgjH,EAAMzjF,KAAK,gBAAgBhoC,OAAOq3G,EAASizH,OAAQ,CAAC,GAC7G,EAwDAsiH,EAAW92U,UAAUi2H,SAAW,SAAU1mI,EAAOizgC,QAC5B,IAAbA,IAAuBA,EAAW,MACtC,IAAI/57B,EAAO7oE,KAAKsigC,aAAaM,GAG7B,OAFIjzgC,IACAk5E,EAAOu2P,EAAY5qG,UAAUiB,QAAQ5sJ,EAAM,SAAU9hF,GAAQ,OAAOA,EAAK4I,QAAUA,GAAS5I,EAAK4I,MAAM4D,OAAS5D,CAAO,IACpH,IAAI6vU,EAAiBmB,eAAe93P,GAAMwtD,UACrD,EAiCA6gN,EAAW92U,UAAUyigC,iBAAmB,SAAUp44B,GAE9C,YADiB,IAAbA,IAAuBA,EAAW,MAC/B,IAAI+0M,EAAiBmB,eAAe3gU,KAAKsigC,aAAa734B,IAAWgkmB,WAC5E,EA8BAv3Y,EAAW92U,UAAUk8yB,cAAgB,SAAU51S,EAAY/2gB,QACzC,IAAVA,IAAoBA,EAAQ,IAChC+2gB,EAAa3wZ,EAAMkP,GAAGimf,EAAanlG,WAAtBhwZ,CAAkC2wZ,GAAcA,EAAa,IAAIwkG,EAAanlG,WAAWW,GACtG,IAAIpia,EAA8B,iBAAV30G,EAAsBA,EAAQA,EAAM4D,KACxDuvgC,EAAS9igC,KAAKsigC,aAAa19+B,GAC3Bu86B,EAAax/1B,EAAS9mG,KAAKiogC,EAAQ,SAAU/7gC,GAAQ,OAAOA,EAAK4I,MAAM4D,OAAS+wG,CAAW,GAC1E,IAAIk7N,EAAiBmB,eAAemisB,GAC1CC,eAAe,CAACr8f,GAAay6b,EAAWxx8B,MAC3D,EAkBAunV,EAAW92U,UAAUw9/B,eAAiB,WAClC,OAAO59/B,KAAKnQ,SAAS+tgC,gBAAkB,IAC3C,EA2BA1mrB,EAAW92U,UAAUqogB,mBAAqB,WACtC,IAAI9/E,EAAK3ob,KAAK49/B,iBACd,OAAQj1kB,GAAMA,EAAG8/E,sBAAyBzogB,IAC9C,EAMAk3U,EAAW92U,UAAUxQ,QAAU,WAC3B,OAAOoQ,KAAKnQ,QAChB,EAMAqnV,EAAW92U,UAAUw2N,SAAW,WAC5B,OAAOj1H,EAAS5uG,IAAIiN,KAAKsigC,aAAa1ryB,SAAU7gH,EAAMzjF,KAAK,UAAUv/B,IAAIovgC,EAC7E,EAMAjrrB,EAAW92U,UAAUu2N,QAAU,WAC3B,OAAOh1H,EAAS5uG,IAAIiN,KAAKsigC,aAAa3ryB,QAAS5gH,EAAMzjF,KAAK,UAAUv/B,IAAIovgC,GAAWrx/B,SACvF,EAOAomU,EAAW92U,UAAUs2N,SAAW,WAC5B,OAAO/0H,EAAS5uG,IAAIiN,KAAKsigC,aAAa5ryB,SAAU3gH,EAAMzjF,KAAK,UAAUv/B,IAAIovgC,EAC7E,EAaAjrrB,EAAW92U,UAAUw2G,MAAQ,SAAU6T,EAAU96H,QAC5B,IAAb86H,IAAuBA,EAAW,YACtC,IAAI5hD,EAAO7oE,KAAKsigC,aAAa734B,GAE7B,OADA5hD,EAAQl5E,EAAek5E,EAAK53E,OAAO8kH,EAAM6B,OAAO,QAASjoH,IAAzCk5E,GACJ91E,IAAIgjH,EAAMzjF,KAAK,UAAUrhC,OAAO0wG,EAAS49G,UAAUj1N,OAAOq3G,EAASi0H,QAAS,GAC5F,EACAshH,EAAW92U,UAAUo2N,YAAc,SAAU/rG,GACzC,OAAOA,EAAWzqH,KAAKsigC,aAAa734B,GAAYzqH,KAAKsigC,YACzD,EAWAprrB,EAAW92U,UAAUiiU,SAAW,SAAUvtG,GAGtC,IAFA,IAAIkuyB,EAAY,EAAGrwsB,EAAQ3yT,KAEgB,OAAnC2yT,EAAQA,EAAMirsB,mBAClB,KAAMoF,EAAY,GACd,MAAM,IAAIz7/B,MAAM,mDAExB,IAAI07/B,EAAe,CAAErF,eAAgB59/B,KAAMuR,OAAQ,YAKrB,QAA1BvR,KAAKpQ,UAAU2hB,SAAuD,IAAnCujN,EAAYllO,UAAUq5F,WACzDg66B,EAAah66B,SAAW,WAE5B,IAAIzjD,EAAam8D,EAASqB,OAAO,CAAC,EAAGhjG,KAAKpQ,UAAWklO,EAAYllO,UAAWqzgC,GAC5EnuyB,EAAcA,EAAYouyB,YAAY199B,GAAY,GAClD,IAYgCixL,EAZ5B0syB,EAAgBnjgC,KAAK4yT,OAAOptE,kBAAkB9kP,OAAOV,KAAKsigC,aAAaz9+B,KAAMiwM,GAC7EsuyB,EAAwBpjgC,KAAKsigC,aAAa1ryB,SAC1CysyB,EAAwBF,EAAcb,aAAa1ryB,SAoBvD,OAN4BwoG,EAAY5qG,UAAU6C,SAASgsyB,EAAuBD,EAAuBhksB,EAAY5qG,UAAUyC,kBAC1HhmO,OAAO8kH,EAAMinH,KALcvG,EAKM3B,EAAYllO,UAAU6mO,YALN,SAAU1vO,GAC5D,OAAO0vO,GAAe1vO,EAAK4I,MAAMgmC,SAAS8gM,EAAYljO,KAC1D,KAKsBvB,QAAQ,SAAUjL,EAAMqrB,GAC1CrrB,EAAKm6V,YAAckirB,EAAsBhx/B,GAAK8uU,WAClD,GACOiirB,CACX,EAEAjsrB,EAAW92U,UAAUkjgC,eAAiB,WAClC,IAAI3mlB,EAAK38a,KAAKsigC,aAGd,KAAItigC,KAAKnQ,SAAS+rQ,QAGd+gL,EAAGhmN,QAAQviO,QAAUuob,EAAG/lN,SAASxiO,QAGjCuob,EAAG/3Z,GAAGxwB,SAAWuob,EAAG93Z,KAAKzwB,QAGXutG,EAAS81H,YAAYklN,EAAG/3Z,GAAI+3Z,EAAG93Z,MAC5C9xB,IAAI,SAAUwvH,GAAS,OAAOA,EAAM,GAAG5yH,QAAU4yH,EAAM,GAAG5yH,KAAO,GACjErF,OAAOq3G,EAAS440B,UAAU,IAC/B,CAGA,IAAIgpF,EAAc5mlB,EAAG/3Z,GAAG7xB,IAAI,SAAUhM,GAAQ,OAAOA,EAAKgvO,WAAa,GACnEvyN,EAAK,CAACm5a,EAAG/3Z,GAAI+3Z,EAAG93Z,MAAM9xB,IAAI,SAAU81E,GAAQ,OAAOA,EAAK91E,IAAI,SAAUxM,GAAK,OAAOA,EAAE4vO,WAAa,EAAI,GAAIqtyB,EAAWhggC,EAAG,GAAIiggC,EAAajggC,EAAG,GAE/I,OADam+F,EAAS81H,YAAY8ryB,EAAaC,EAAUC,GAC3C1wgC,IAAI,SAAUyQ,GACxB,IAAI8hN,EAAS9hN,EAAG,GAAIkggC,EAASlggC,EAAG,GAAImggC,EAAWnggC,EAAG,GAClD,OAAOs+F,EAAQU,MAAM3nD,QAAQyqK,EAAQo+yB,EAAQC,EACjD,GAAGr5gC,OAAOq3G,EAASi0H,QAAS,GARR,CASxB,EAQAshH,EAAW92U,UAAUy2G,QAAU,WAC3B,IAAI12C,EAAUngE,KAAKsjgC,iBACnB,QAAQnj8B,GAAkBA,EAAQptE,IAAI,SAAUxM,GAAK,OAAOA,EAAEswH,OAAS,GAAGvsH,OAAOq3G,EAAS440B,UAAU,EACxG,EAQArjmB,EAAW92U,UAAUo+2B,QAAU,WAC3B,QAASx+2B,KAAK4jgC,gBAClB,EAEA1srB,EAAW92U,UAAUwjgC,eAAiB,WAClC,IAAI7ugC,EAAUiL,KAAK4yT,OAAOpvC,QAAQt0O,WAC9BunL,EAAcz2N,KAAKnQ,SAAS4mO,YAC5B71K,EAAO,SAAU02K,EAAOC,GACxB,GAAID,EAAMljO,SAAWmjO,EAAMnjO,OACvB,OAAO,EACX,IAAIijO,EAAW+nG,EAAY5qG,UAAU6C,SAASC,EAAOC,GACrD,OAAOD,EAAMljO,SAAWijO,EAASpmO,OAAO,SAAUlK,GAAQ,OAAQ0vO,IAAgB1vO,EAAK4I,MAAMgmC,SAAS8gM,EAAYljO,KAAO,GAAGa,MAChI,EACIyvgC,EAAQ7jgC,KAAKw2N,cACbstyB,EAAS/ugC,GAAWA,EAAQyhO,cAChC,OAAIstyB,GAAUlj9B,EAAKkj9B,EAAOl/+B,GAAIi/+B,EAAMj/+B,KAAOg8B,EAAKkj9B,EAAOntyB,QAASktyB,EAAMltyB,SAC3D,gBACkB,IAAzBktyB,EAAMltyB,QAAQviO,QAA0C,IAA1ByvgC,EAAMjtyB,SAASxiO,QAAgBwsD,EAAKij9B,EAAMh/+B,KAAMg/+B,EAAMj/+B,IAC7E,qBADX,CAEJ,EAUAsyT,EAAW92U,UAAUulH,IAAM,WACvB,IAAIzhH,EAAQlE,KACR+jgC,EAAc5hf,EAAiBa,eAAe+gf,YAE9CC,EAAc,SAAUrugC,GACxB,OAAOuO,EAAMk+/B,aAAa//e,mBAAmB1shB,EACjD,EA8BIsugC,EAAiBD,EAAYngxB,EAAYw/R,oBAAoB++d,QAIjE,OAHAjge,EAAiBa,eAAey/e,YAAYwB,EATtB,WAClB,IAAIzgvB,EAAUt/Q,EAAM0uT,OAAOpvC,QAK3B,OAJAA,EAAQw+C,wBAA0B99T,EAAMi6R,IACxC3a,EAAQt0O,WAAahrC,EACrBs/Q,EAAQ+8C,kBAAkB18N,QAAQ3/F,GAClCyhgB,EAAQpxY,MAAM2v4B,qBAAqBhggC,GAC5Bi7T,EAAegC,SAASh/M,GAAGC,UAAKtrH,EAC3C,GAGKD,KAjBe,WAGhB,IAAIstgC,EAAcH,EAAYngxB,EAAYw/R,oBAAoBg/d,KAE9D,OAAOlge,EAAiBa,eAAey/e,YAAY0B,EADxC,WAAc,OAAOhlsB,EAAegC,SAASh/M,GAAGC,UAAKtrH,EAAY,EAEhF,GAYKD,KA/BmB,WACpB8ugB,EAAQpxY,MAAM6v4B,aAAalggC,EAAM+uT,MAAO/uT,GACxCA,EAAMqsiB,SAAU,EAChBrsiB,EAAMwhnB,UAAU9unB,QAAQsN,EAAM0gB,MAC9Bm/+B,EAAYC,EAAYngxB,EAAYw/R,oBAAoBmrM,SAC5D,EACsB,SAAUh0e,GAC5BmrR,EAAQpxY,MAAM8v4B,WAAW7pxB,EAAQt2O,GACjCA,EAAMqsiB,SAAU,EAChBrsiB,EAAMwhnB,UAAUtknB,OAAOo5O,GACvBt2O,EAAMouT,OAAS93E,EACfupxB,EAAYC,EAAYngxB,EAAYw/R,oBAAoB0sF,OAC5D,GAoBO/vmB,KAAKqiH,OAChB,EAMA60N,EAAW92U,UAAUqmB,MAAQ,WACzB,OAAQzmB,KAAKiK,cAA4BnT,IAAjBkJ,KAAKuwiB,OACjC,EAOAr5N,EAAW92U,UAAUumF,MAAQ,WAErBib,EAAaqyB,YAAYj0H,KAAKuwiB,WAC9BvwiB,KAAKskgC,UAAW,EAExB,EASAptrB,EAAW92U,UAAU6J,MAAQ,WACzB,IAAIta,EAAQqQ,KAAKizT,MACjB,GAAItjU,EAAM2yF,KAAKw0B,SACX,MAAO,wCAA0CnnH,EAAM4D,KAAO,IAClE,IAAIgxgC,EAAY50gC,EAAMkoO,aAAcjvM,EAAS5oB,KAAKmgD,SAC9Cqk9B,EAAgBD,EAAUtzgC,OAAO,SAAU+kO,GAAS,OAAQA,EAAMmhG,UAAUvuS,EAAOotM,EAAMj4N,IAAM,GACnG,OAAIymgC,EAAcpwgC,OACP,qCAAuCzE,EAAM4D,KAAO,wBAA0BixgC,EAAczxgC,IAAI,SAAUijO,GAAS,OAAOA,EAAMj4N,EAAI,GAAGG,KAAK,MAAQ,MAE1I,IAAjB8B,KAAKuwiB,QACEvwiB,KAAKsyT,YADhB,CAEJ,EAMA4kB,EAAW92U,UAAUpZ,SAAW,WAC5B,IAAIy9gC,EAAkBzkgC,KAAK6kB,OACvB6/+B,EAAgB1kgC,KAAK4kB,KACrB+/+B,EAAiB,SAAUxk9B,GAC3B,OAAwB,OAAhBA,EAAO,WAAiCrpD,IAAhBqpD,EAAO,KAAsBA,EAASwhD,EAAS00H,KAAKl2K,EAAQ,CAAC,KACjG,EAGA,MAAO,cADEngD,KAAKm+R,IACc,OADFv8L,EAAa3xF,SAASw0/B,GAAmBA,EAAgBlxgC,KAAOkxgC,GAC/C,IAD6E7+f,EAAUh8f,UAAU+6/B,EAAe3kgC,KAAKsigC,aAAaz9+B,KAAK9xB,IAAIgjH,EAAMzjF,KAAK,gBAAgBhoC,OAAOq3G,EAASizH,OAAQ,CAAC,KAC5K,QAD4L50N,KAAKymB,QAAU,GAAK,QAC7L,KAD0Mm7E,EAAa3xF,SAASy0/B,GAAiBA,EAAcnxgC,KAAOmxgC,GAC3P,IADqR9+f,EAAUh8f,UAAU+6/B,EAAe3kgC,KAAKmgD,WAC5S,IACjH,EAEA+2R,EAAW0trB,QAAU1trB,EACdA,CACX,CAjmB+B,GAkmB/BzyV,EAAQyyV,WAAaA,C,qCC/nBrB,IACQp3U,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAqkgC,EAAuB,EAAQ,OAC/B3rf,EAAgB,EAAQ,OACxBL,EAAe,EAAQ,OAsBvB3ia,EAAS,CACT/nB,OAAQ,CACJ,WAEJ8oF,QAAS,CACL,SACA,QAEJlpF,KAAM,CACF,SACA,WAEJu0zB,QAAS,CACL,SACA,SAOJwiH,EAA2B,SAAU9ggC,GAKrC,SAAS8ggC,IACL,OAAO9ggC,EAAO3D,KAAKL,KAAM,SAAUk2G,IAAWl2G,IAClD,CAgGA,OAtGAD,EAAU+kgC,EAAW9ggC,GAWrB8ggC,EAAU1kgC,UAAUk/gB,OAAS,SAAU90hB,GAGnC,OAFAwV,KAAKkvC,WAAW,UAAW1kD,GAC3BwV,KAAKkvC,WAAW,SAAU1kD,GACnBmM,QAAQC,QAAQoJ,KAC3B,EAKA8kgC,EAAU1kgC,UAAU++/B,SAAW,SAAUxigB,EAAkB14f,EAAOwgX,EAAoBk5J,EAAiB/thB,GACnG+sgB,EAAiBv2f,QAAQ,qCAAsC,QAC/D,IACIi8G,EAAU1rH,QAAQC,QAAQ,IAAIsihB,EAAcvc,EADtC,qCAC6D/sgB,IAEvE,OADAyyH,EAAQ1/E,OAAS,WAAoB,EAC9B0/E,CACX,EAKAyi5B,EAAU1kgC,UAAU2kgC,MAAQ,SAAUv6gC,GAGlC,OAFAwV,KAAKkvC,WAAW,UAAW1kD,GAC3BwV,KAAKkvC,WAAW,OAAQ1kD,GACjBmM,QAAQC,QAAQoJ,KAC3B,EAKA8kgC,EAAU1kgC,UAAUqN,MAAQ,WACxB,IAAIvJ,EAAQlE,KACZ,OAAOA,KAAKq92B,QAAQ,QAAS,SAAU7y3B,GACnC,OAAQ0Z,EAAMvU,OACV,IAAK,SACD,OAAOuU,EACX,IAAK,OACD,OAAOA,EAAMo7gB,OAAO90hB,GACxB,QACI,MAAM,IAAI+c,MAAM,+BAAkCrD,EAAMvU,MAAQ,KAE5E,EACJ,EAUAm1gC,EAAU1kgC,UAAUgG,QAAU,SAAUu2f,EAAkB14f,EAAOwgX,EAAoBk5J,EAAiB/thB,GAClG,IAAI0yF,EAAOtiF,KACX,OAAOA,KAAKq92B,QAAQ,UAAW,SAASnu0B,EAAW1kD,GAC/C,OAAQ83F,EAAK3yF,OACT,IAAK,SACD,OAAO2yF,EAAKyi7B,MAAMv6gC,GAAKqM,KAAKq4C,EAAWwM,KAAK,KAAMlxD,IACtD,IAAK,OAID,OADA83F,EAAKk7xB,sBAAsBhz3B,GACpB83F,EAAK686B,SAASxigB,EAAkB14f,EAAOwgX,EAAoBk5J,EAAiB/thB,GACvF,QACI,MAAM,IAAI2X,MAAM,+BAAkC+6E,EAAK3yF,MAAQ,KAE3E,EACJ,EAKAm1gC,EAAU1kgC,UAAUg//B,gCAAkC,WAClD,OAAO,IAAIyF,CACf,EAKAC,EAAU1kgC,UAAU2tF,KAAO,WACvB,IAAI7pF,EAAQlE,KACZ,OAAOA,KAAKq92B,QAAQ,OAAQ,SAAU7y3B,GAClC,OAAQ0Z,EAAMvU,OACV,IAAK,SACD,OAAOuU,EAAM6ggC,MAAMv6gC,GACvB,IAAK,OACD,OAAO0Z,EACX,QACI,MAAM,IAAIqD,MAAM,+BAAkCrD,EAAMvU,MAAQ,KAE5E,EACJ,EACOm1gC,CACX,CAxG8B,CAwG5Bjsf,GACFn3b,EAAOj9F,QAAUqghC,C,kBCvKjB,IAAIxgD,EAAa,EAAQ,OAWrBh5vB,EAViB,EAAQ,MAUd05yB,CAAe1gD,GAE9B5i4B,EAAOj9F,QAAU6mO,C,+BCZjB,IAAI2e,EAAY,EAAQ,OACpB52H,EAAW,EAAQ,OACnB4N,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAE5B2/N,EAAavgV,UAEb2kgC,EAAe,8CAGfxyoB,EAAe,SAAUyyoB,GAC3B,OAAO,SAAU5uzB,EAAMpyG,EAAYgqI,EAAiB1mH,GAClD,IAAI1sG,EAAIu4F,EAASijG,GACbh0H,EAAO2+B,EAAcnmG,GACrB1mB,EAAS8sH,EAAkBpmG,GAE/B,GADAmvN,EAAU/lI,GACK,IAAX9vG,GAAgB85O,EAAkB,EAAG,MAAM,IAAI2yG,EAAWokrB,GAC9D,IAAIzugC,EAAQ0ugC,EAAW9wgC,EAAS,EAAI,EAChC/O,EAAI6/gC,GAAY,EAAI,EACxB,GAAIh3xB,EAAkB,EAAG,OAAa,CACpC,GAAI13O,KAAS8rF,EAAM,CACjBklC,EAAOllC,EAAK9rF,GACZA,GAASnR,EACT,KACF,CAEA,GADAmR,GAASnR,EACL6/gC,EAAW1ugC,EAAQ,EAAIpC,GAAUoC,EACnC,MAAM,IAAIqqV,EAAWokrB,EAEzB,CACA,KAAMC,EAAW1ugC,GAAS,EAAIpC,EAASoC,EAAOA,GAASnR,EAAOmR,KAAS8rF,IACrEklC,EAAOtjB,EAAWsjB,EAAMllC,EAAK9rF,GAAQA,EAAOskB,IAE9C,OAAO0sG,CACT,CACF,EAEA9lC,EAAOj9F,QAAU,CAGf0F,KAAMsoY,GAAa,GAGnBxoY,MAAOwoY,GAAa,G,kBC5CtB,IAAImjQ,EAAY,EAAQ,OACpB5ioB,EAAM,EAAQ,OACdysoB,EAAW,EAAQ,OA+BvB/9iB,EAAOj9F,QAhBP,SAAkB+F,EAAK7E,GACrB,IAAIoQ,EAAOiK,KAAKi4T,SAChB,GAAIliU,aAAgB6/nB,EAAW,CAC7B,IAAI/2a,EAAQ9oN,EAAKkiU,SACjB,IAAKjlU,GAAQ6rN,EAAMzqN,OAAS49a,IAG1B,OAFAnzN,EAAM/qN,KAAK,CAACtJ,EAAK7E,IACjBqa,KAAK+S,OAAShd,EAAKgd,KACZ/S,KAETjK,EAAOiK,KAAKi4T,SAAW,IAAIwnU,EAAS5gb,EACtC,CAGA,OAFA9oN,EAAKhC,IAAIvJ,EAAK7E,GACdqa,KAAK+S,KAAOhd,EAAKgd,KACV/S,IACT,C,0DC3BO,IAkBI8o4B,EAAsB,+BAE7BE,EAAiB,SAAwBzk2B,GAC3C,OAAO,WACL,IAAK,IAAIrwC,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,MAAO,CACLyb,KAAM843B,EACN5+3B,QAAS,CACPq6B,OAAQA,EACRlwC,KAAMA,GAGZ,CACF,EAQWP,EAAOk14B,EAAe,QACZA,EAAe,WACpBA,EAAe,MACXA,EAAe,UACZA,EAAe,Y,+BCjDtC,IAAIvh5B,EAAS,EAAQ,OAErBi6F,EAAOj9F,QAAUgD,C,kBCHjB,IAGIi0N,EAHY,EAAQ,MAGLo+T,CAAUhwhB,OAAQ,UAErC43F,EAAOj9F,QAAUi3N,C,gDCJjB,IAGI43G,EAHY7nN,SAASrrG,UAGIpZ,SAqB7B,QAZA,SAAkB0tG,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO4+N,EAAajzT,KAAKq0F,EAC3B,CAAE,MAAO1vG,GAAI,CACb,IACE,OAAQ0vG,EAAO,EACjB,CAAE,MAAO1vG,GAAI,CACf,CACA,MAAO,EACT,C,cClBA,SAAUmC,EAAQ+uI,GAAU,aAa5B,IACIx6E,EACAsnD,EACAhxG,EACAoxG,EACAmyJ,EACA3lP,EACAu1/B,EACAC,EACAC,EATAC,EAAkBpv4B,EAAQk5L,SAAS,aA0kBvCl5L,EAAQx0C,OAAO,aAAc,IAC1BilC,SAAS,YAjcZ,WACE,IAAI4+4B,GAAa,EAEjBvlgC,KAAK4jG,KAAO,CAAC,gBAAiB,SAASuvK,GAIrC,OAHIoyvB,GACFvi6B,EAAOwi6B,EAAeC,GAEjB,SAASz8gC,GACd,IAAI6xI,EAAM,GAIV,OAHAuq4B,EAAWp8gC,EAAMq8gC,EAAmBxq4B,EAAK,SAASmlC,EAAK6hI,GACrD,OAAQ,WAAW3/S,KAAKixR,EAAcnzG,EAAK6hI,GAC7C,IACOhnK,EAAI38H,KAAK,GAClB,CACF,GAiCA8B,KAAK0lgC,UAAY,SAASA,GACxB,OAAIti6B,EAAUsi6B,IACZH,EAAaG,EACN1lgC,MAEAulgC,CAEX,EAMA7p9B,EAAOw6E,EAAQx6E,KACfsnD,EAASkzB,EAAQlzB,OACjBhxG,EAAUkkI,EAAQlkI,QAClBoxG,EAAY8yB,EAAQ9yB,UACpBmyJ,EAAYr/H,EAAQq/H,UACpB3lP,EAAOsmH,EAAQtmH,KAEfw1/B,EAsLA,SAAwBp8gC,EAAMk1D,GACxBl1D,QACFA,EAAO,GACkB,iBAATA,IAChBA,EAAO,GAAKA,GAGd,IAAI28gC,EAAmBC,EAAoB58gC,GAC3C,IAAK28gC,EAAkB,MAAO,GAG9B,IAAIE,EAAe,EACnB,EAAG,CACD,GAAqB,IAAjBA,EACF,MAAMP,EAAgB,SAAU,yDAElCO,IAGA78gC,EAAO28gC,EAAiB/60B,UACxB+60B,EAAmBC,EAAoB58gC,EACzC,OAASA,IAAS28gC,EAAiB/60B,WAGnC,IADA,IAAI7jM,EAAO4+gC,EAAiB/84B,WACrB7hI,GAAM,CACX,OAAQA,EAAK0hH,UACX,KAAK,EACHvqD,EAAQzxD,MAAM1F,EAAKoB,SAASC,cAAe09gC,EAAU/+gC,EAAKkO,aAC1D,MACF,KAAK,EACHipD,EAAQq2O,MAAMxtS,EAAKq3Q,aAIvB,IAAIorD,EACJ,MAAMA,EAAWziU,EAAK6hI,cACE,IAAlB7hI,EAAK0hH,UACPvqD,EAAQxxD,IAAI3F,EAAKoB,SAASC,eAE5BohU,EAAWu8sB,EAAiB,cAAeh/gC,KAEzC,KAAmB,MAAZyiU,IACLziU,EAAOg/gC,EAAiB,aAAch/gC,MACzB4+gC,GACbn8sB,EAAWu8sB,EAAiB,cAAeh/gC,GACrB,IAAlBA,EAAK0hH,UACPvqD,EAAQxxD,IAAI3F,EAAKoB,SAASC,eAKlCrB,EAAOyiU,CACT,CAEA,KAAQziU,EAAO4+gC,EAAiB/84B,YAC9B+84B,EAAiBz16B,YAAYnpG,EAEjC,EA9OAs+gC,EA0RA,SAAgCxq4B,EAAKmr4B,GACnC,IAAIC,GAAuB,EACvBx85B,EAAM/tD,EAAKm/E,EAAKA,EAAI/mI,MACxB,MAAO,CACLrH,MAAO,SAASu1F,EAAK+mC,GACnB/mC,EAAMuzK,EAAUvzK,IACXik7B,GAAwBC,EAAgBlk7B,KAC3Cik7B,EAAuBjk7B,GAEpBik7B,IAA+C,IAAvBT,EAAcxj7B,KACzCynB,EAAI,KACJA,EAAIznB,GACJhwF,EAAQ+2H,EAAO,SAASpjI,EAAO6E,GAC7B,IAAI27gC,EAAO5wwB,EAAU/qQ,GACjBq3S,EAAmB,QAAR7/M,GAA0B,QAATmk7B,GAA6B,eAATA,GAC3B,IAArBC,EAAWD,KACO,IAAnBE,EAASF,KAAkBH,EAAarghC,EAAOk8S,KAChDp4L,EAAI,KACJA,EAAIj/G,GACJi/G,EAAI,MACJA,EAAI685B,EAAe3ghC,IACnB8jH,EAAI,KAER,GACAA,EAAI,KAER,EACA/8G,IAAK,SAASs1F,GACZA,EAAMuzK,EAAUvzK,GACXik7B,IAA+C,IAAvBT,EAAcxj7B,KAAuC,IAAtBuk7B,EAAavk7B,KACvEynB,EAAI,MACJA,EAAIznB,GACJynB,EAAI,MAGFznB,GAAOik7B,IACTA,GAAuB,EAE3B,EACA1xuB,MAAO,SAASA,GACT0xuB,GACHx85B,EAAI685B,EAAe/xuB,GAEvB,EAEJ,EArUA4wuB,EAAeh+gC,EAAOkgN,KAAKjnM,UAAU5Y,UAAyB,SAASmwE,GAErE,SAA8C,GAApC33D,KAAK8+P,wBAAwBnnM,GACzC,EAGA,IAAI6u8B,EAAwB,kCAE1BC,EAA0B,eASxBF,EAAez0nB,EAAM,0BAIrB40nB,EAA8B50nB,EAAM,kDACpC60nB,EAA+B70nB,EAAM,SACrC80nB,EAAyB5j6B,EAAO,CAAC,EACO2j6B,EACAD,GAGxCG,EAAgB7j6B,EAAO,CAAC,EAAG0j6B,EAA6B50nB,EAAM,wKAK9Dg1nB,EAAiB9j6B,EAAO,CAAC,EAAG2j6B,EAA8B70nB,EAAM,8JAQhE2znB,EAAc3znB,EAAM,0NAKpBo0nB,EAAkBp0nB,EAAM,gBAExB0znB,EAAgBxi6B,EAAO,CAAC,EACOuj6B,EACAM,EACAC,EACAF,GAG/BP,EAAWv0nB,EAAM,gDAEjBi1nB,EAAYj1nB,EAAM,oTAQlBk1nB,EAAWl1nB,EAAM,kuCAc8D,GAE/Es0nB,EAAapj6B,EAAO,CAAC,EACOqj6B,EACAW,EACAD,GAEhC,SAASj1nB,EAAMr/X,EAAKw0/B,GAClB,IAAsC5hhC,EAAlCitB,EAAM,CAAC,EAAG4hB,EAAQzhB,EAAIvxB,MAAM,KAChC,IAAKmE,EAAI,EAAGA,EAAI6uC,EAAM9/B,OAAQ/O,IAC5BitB,EAAI20/B,EAAgB1xwB,EAAUrhO,EAAM7uC,IAAM6uC,EAAM7uC,KAAM,EAExD,OAAOitB,CACT,CAQA,IAAIsz/B,EAAoE,SAAUz+gC,EAAQsB,GACxF,IAAIy+gC,EACJ,IAAIz+gC,IAAYA,EAAS89P,eAGvB,MAAM++wB,EAAgB,UAAW,uCAEnC,IAAIK,IAJFuB,EAAgBz+gC,EAAS89P,eAAeo4U,mBAAmB,UAIvBj2kB,iBAAmBw+gC,EAAc1+gC,sBAAsB+U,cAAc,QAI3G,OADAoogC,EAAiB/60B,UAAY,uDACxB+60B,EAAiBpogC,cAAc,QAIlCoogC,EAAiB/60B,UAAY,mEACzB+60B,EAAiBpogC,cAAc,WAyBrC,SAAuCvU,GAGrCA,EAAO,oBAAsBA,EAC7B,IACE,IAAI0E,GAAO,IAAIvG,EAAOm3Z,WAAYC,gBAAgBv1Z,EAAM,aAAa0E,KAErE,OADAA,EAAKk7H,WAAWhmF,SACTl1C,CACT,CAAE,MAAO1I,GACP,MACF,CACF,EAEA,SAA2CgE,GASzC,OARA28gC,EAAiB/60B,UAAY5hM,EAIzBP,EAASuwP,cACXmuxB,EAAmBxB,GAGdA,CACT,GAzCA,SAAiC38gC,GAG/BA,EAAO,oBAAsBA,EAC7B,IACEA,EAAOmpnB,UAAUnpnB,EACnB,CAAE,MAAOhE,GACP,MACF,CACA,IAAIgmS,EAAM,IAAI7jS,EAAO8iS,eACrBe,EAAI7B,aAAe,WACnB6B,EAAIj9L,KAAK,MAAO,gCAAkC/kG,GAAM,GACxDgiS,EAAIz4D,KAAK,MACT,IAAI7kO,EAAOs9R,EAAI38L,SAAS3gG,KAExB,OADAA,EAAKk7H,WAAWhmF,SACTl1C,CACT,CA0BD,CAjEuE,CAiErEvG,EAAQA,EAAOsB,UAyElB,SAASq9gC,EAAU/84B,GAEjB,IADA,IAAIh2H,EAAM,CAAC,EACF1N,EAAI,EAAGqxQ,EAAK3tI,EAAM30H,OAAQ/O,EAAIqxQ,EAAIrxQ,IAAK,CAC9C,IAAIkyQ,EAAOxuI,EAAM1jI,GACjB0N,EAAIwkQ,EAAKhkQ,MAAQgkQ,EAAK5xQ,KACxB,CACA,OAAOoN,CACT,CAUA,SAASuzgC,EAAe3ghC,GACtB,OAAOA,EACL5B,QAAQ,KAAM,SACdA,QAAQyihC,EAAuB,SAAS7ghC,GAGtC,MAAO,MAAyB,MAFvBA,EAAMigG,WAAW,GAEJ,QADZjgG,EAAMigG,WAAW,GACqB,OAAU,OAAW,GACvE,GACA7hG,QAAQ0ihC,EAAyB,SAAS9ghC,GACxC,MAAO,KAAOA,EAAMigG,WAAW,GAAK,GACtC,GACA7hG,QAAQ,KAAM,QACdA,QAAQ,KAAM,OAClB,CAmEA,SAASojhC,EAAmBpghC,GAC1B,KAAOA,GAAM,CACX,GAAIA,EAAK0hH,WAAathH,EAAOkgN,KAAKytU,aAEhC,IADA,IAAI/rZ,EAAQhiI,EAAKkO,WACR5P,EAAI,EAAGmzB,EAAIuwG,EAAM30H,OAAQ/O,EAAImzB,EAAGnzB,IAAK,CAC5C,IAAI+hhC,EAAWr+4B,EAAM1jI,GACjBgpI,EAAW+44B,EAAS7zgC,KAAKnL,cACZ,cAAbimI,GAAgE,IAApCA,EAASh3C,YAAY,OAAQ,KAC3DtwF,EAAKsghC,oBAAoBD,GACzB/hhC,IACAmzB,IAEJ,CAGF,IAAIgxS,EAAWziU,EAAK6hI,WAChB4gM,GACF29sB,EAAmB39sB,GAGrBziU,EAAOg/gC,EAAiB,cAAeh/gC,EACzC,CACF,CAEA,SAASg/gC,EAAiBvx5B,EAAUztH,GAElC,IAAIyiU,EAAWziU,EAAKytH,GACpB,GAAIg1M,GAAY27sB,EAAa9kgC,KAAKtZ,EAAMyiU,GACtC,MAAM87sB,EAAgB,SAAU,gEAAiEv+gC,EAAKgjd,WAAahjd,EAAKughC,WAE1H,OAAO99sB,CACT,CACF,GAaGz2R,KAAK,CAAEu+R,eAAgB,UAiI1Bp7L,EAAQx0C,OAAO,cAAczwF,OAAO,QAAS,CAAC,YAAa,SAASs2gC,GAClE,IAAIC,EACE,0FACFC,EAAgB,YAEhBC,EAAcxx4B,EAAQk5L,SAAS,SAC/BhsN,EAAY8yB,EAAQ9yB,UACpBvwF,EAAaqjH,EAAQrjH,WACrB5C,EAAWimH,EAAQjmH,SACnBszF,EAAW2yB,EAAQ3yB,SAEvB,OAAO,SAASzzE,EAAM/hC,EAAQkH,GAC5B,GAAY,MAAR66B,GAAyB,KAATA,EAAa,OAAOA,EACxC,IAAKyzE,EAASzzE,GAAO,MAAM43+B,EAAY,YAAa,oCAAqC53+B,GAYzF,IAVA,IAKI9rC,EAGAypG,EACApoG,EATAsihC,EACF90/B,EAAW5d,GAAcA,EACzBgb,EAAShb,GAAc,WAAgC,OAAOA,CAAW,EACzE,WAAqC,MAAO,CAAC,CAAE,EAG7Cs5C,EAAMze,EACN9mC,EAAO,GAGHhF,EAAQuqD,EAAIvqD,MAAMwjhC,IAExB/56B,EAAMzpG,EAAM,GAEPA,EAAM,IAAOA,EAAM,KACtBypG,GAAOzpG,EAAM,GAAK,UAAY,WAAaypG,GAE7CpoG,EAAIrB,EAAMwS,MACVoxgC,EAAQr59B,EAAI4jE,OAAO,EAAG9sH,IACtBwihC,EAAQp66B,EAAKzpG,EAAM,GAAGD,QAAQ0jhC,EAAe,KAC7Cl59B,EAAMA,EAAI46C,UAAU9jG,EAAIrB,EAAM,GAAGoQ,QAGnC,OADAwzgC,EAAQr59B,GACDg59B,EAAUv+gC,EAAKkV,KAAK,KAE3B,SAAS0pgC,EAAQ93+B,GApLrB,IAAsBykQ,EAChB15J,EAoLK/qG,GAGL9mC,EAAK8K,MAxLWygS,EAwLOzkQ,EAtLdu1+B,EADTxq4B,EAAM,GAC2BjrH,GAC9B2kR,MAAMA,GACN15J,EAAI38H,KAAK,KAqLd,CAEA,SAAS2pgC,EAAQp66B,EAAK39D,GACpB,IAAItlC,EAAKs9gC,EAAiBH,EAAal66B,GAGvC,IAAKjjG,KAFLxB,EAAK8K,KAAK,OAEEg0gC,EACV9+gC,EAAK8K,KAAKtJ,EAAM,KAAOs9gC,EAAet9gC,GAAO,MAG3C44G,EAAUr1G,MAAa,WAAY+5gC,IACrC9+gC,EAAK8K,KAAK,WACA/F,EACA,MAEZ/E,EAAK8K,KAAK,SACA25F,EAAI1pG,QAAQ,KAAM,UAClB,MACV6jhC,EAAQ93+B,GACR9mC,EAAK8K,KAAK,OACZ,CACF,CACF,GAGC,CAhyBD,CAgyBG3M,OAAQA,OAAO+uI,Q,+BCpyBlBpsI,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIg8G,EAAW,EAAQ,OACvBl9G,EAAQsjhC,iBAAmB,SAAU7nzB,EAAO18M,GACxC,IAAIhZ,EAAMgZ,EAAG,GAAImkB,EAAMnkB,EAAG,GAU1B,OATK08M,EAAMt0N,eAAepB,GAGjBm3G,EAAS5xF,QAAQmwM,EAAM11N,IAC5B01N,EAAM11N,GAAKsJ,KAAK6zB,GAGhBu4L,EAAM11N,GAAO,CAAC01N,EAAM11N,GAAMm9B,GAN1Bu4L,EAAM11N,GAAOm9B,EAQVu4L,CACX,EACAz7N,EAAQ+5U,UAAY,SAAUwpsB,GAC1B,OAAOA,EAAY9mhC,MAAM,KAAK+P,OAAO0wG,EAAS49G,UAAUxsN,IAAI4uG,EAAS6g3B,YAAYl49B,OAAO7F,EAAQsjhC,iBAAkB,CAAC,EACvH,EAOAtjhC,EAAQ85U,SANR,SAAkB9wO,GACd,IAAIw66B,EAAgB,SAAU1hhC,GAAK,OAAOA,GAAK,EAAI,EAC/Cid,EAAKm+F,EAAS2g3B,UAAU703B,GAAK16F,IAAIk1gC,GAAgBC,EAAa1kgC,EAAG,GAAIlX,EAAOkX,EAAG,GAC/EG,EAAKg+F,EAAS4g3B,WAAW2lD,GAAYn1gC,IAAIk1gC,GAC7C,MAAO,CAAEp/7B,KAD2DllE,EAAG,GAClD2pM,OAD+D3pM,EAAG,GAClDrX,KAAMA,EAAMmhG,IAAKA,EAC1D,EAEAhpG,EAAQ6jS,SAAW,SAAUjsI,GACzB,IAAIxzE,EAAOwzE,EAAIxzE,OACXs/7B,EAAe9r3B,EAAIixD,SACnBhhN,EAAO+vJ,EAAI/vJ,OACXghN,EAASxjN,OAAOO,KAAK89gC,GAAcp1gC,IAAI,SAAUvI,GACjD,IAAIwrO,EAAQmyyB,EAAa39gC,GAEzB,OADWm3G,EAAS5xF,QAAQimN,GAASA,EAAQ,CAACA,IAClCjjO,IAAI,SAAU40B,GAAO,OAAOn9B,EAAM,IAAMm9B,CAAK,EAC7D,GAAGr9B,OAAOq3G,EAASi0H,QAAS,IAAI13N,KAAK,KACrC,OAAO2qE,GAAQykI,EAAS,IAAMA,EAAS,KAAOhhN,EAAO,IAAMA,EAAO,GACtE,EAYA7H,EAAQ2jhC,sBAXR,SAA+B70gC,EAAMw4+B,EAASs8B,EAAcC,GACxD,OAAO,SAAUhR,GACb,IAAIhr4B,EAAUgr4B,EAASn/E,gBAAkB,IAAIkwF,EAAa/Q,GACtD9jf,EAAgB8jf,EAASl/E,eAAiB,IAAIkwF,EAAmBhR,EAAUvrB,GAK/E,MAAO,CAAEx4+B,KAAMA,EAAM+4H,QAASA,EAASknZ,cAAeA,EAAezva,QAJrE,SAAiB6uN,GACbA,EAAO7uN,QAAQuoB,GACfsmM,EAAO7uN,QAAQyva,EACnB,EAEJ,CACJ,C,qCClDA,IACQ1zgB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIsme,EAA2B,EAAQ,OACnCw3W,EAAwB,EAAQ,OAChC/5H,EAA0B,EAAQ,OAClC05H,EAAc,EAAQ,OACtBlka,EAAgB,EAAQ,OACxBy0F,EAAsB,EAAQ,OAC9BlxG,EAAc,EAAQ,OACtB4zf,EAAyB,EAAQ,OACjC9sD,EAA0B,EAAQ,OAClCps0B,EAAuB,EAAQ,MAC/Bq8L,EAA0B,EAAQ,OAClChwT,EAAK,EAAQ,OAAegw7B,EAA8Bhw7B,EAAGk+U,UAAU8xmB,4BAA6BzwmB,EAAgCv/U,EAAGu/U,8BAA+B75O,EAAQ1lG,EAAG0lG,MAAOs7G,EAAahhN,EAAGghN,WAAYohI,EAAepiV,EAAGoiV,aAAcn2H,EAAUjsN,EAAGisN,QAASk3H,EAAcnjV,EAAGmjV,YAC3RtjV,EAAqB,EAAQ,OAC7B20M,EAAoB,2BAKpBg3oB,EAAwB,SAAUhr1B,GAElC,SAASgr1B,EAAOryV,EAAkB3oF,EAAc9ra,EAAWw4gB,EAAuB9whB,GAC9E,IAAIsU,EAAQlE,KACZg0a,EAAapkb,QAAU9F,OAAOC,OAAO,CACjC27/B,gBAAiBlyD,GAClBx/gB,EAAapkb,SAChBA,EAAU9F,OAAOC,OAAO,CACpBk8kB,yBAA0BA,EAC1Bw3W,sBAAuBA,EACvB/5H,wBAAyBA,EACzBvqS,mBAAoBika,EACpBzvU,oBAAqBA,EACrB0iZ,uBAAwBA,EACxB9sD,wBAAyBA,EACzBvgnB,iBAAkB,KAClBo2L,eAAuD,IAAvCplG,EAAapkb,QAAQ81/B,gBACrC6iB,uBArBoB,KAsBrB34gC,GACH+sgB,EAAiB+pY,oBAAoB924B,EAAQozV,kBAC7C,IAAIx/U,EAAKwwa,EAAapkb,QAAS424B,EAAkBhj4B,EAAGglgC,iBAAkB7kgC,EAAKH,EAAGilgC,iBAAkB1qgB,OAAyB,IAAPp6f,EAAgB,GAAKA,EACvIg5f,EAAiB8pY,mBAAmBD,GAChCzoY,EAAgBpoe,SAAS,UAEzBooe,EAAgBjqgB,KAAK,WAEzB6ogB,EAAiBiqY,mBAAmB7oY,GACpC2iB,EAAsBL,uBAAuBzwhB,EAAQwphB,gBAErD,IAAIsvf,EAAmB,SAAU3qgC,GAAM,OAAOmG,EAAMykgC,kBAAkB5qgC,EAAK,EACvE9X,GAFJie,EAAQF,EAAO3D,KAAKL,KAAM28f,EAAkB3oF,EAAa19P,IAAK09P,EAAazgb,KAAM3D,IAAYoQ,MAE7EoF,KA0FhB,OAzFAtb,OAAO0hC,iBAAiBtnB,EAAO,CAC3B0kgC,kCAAmC,CAC/BjjhC,MAAO,IAAIqN,KAEf61gC,uBAAwB,CACpBljhC,MAAOiK,EAAQ6t7B,uBAEnBqrF,8BAA+B,CAC3BnjhC,MAAOg3gB,EAAiB4pY,yBACxB962B,UAAU,GAEds9+B,6BAA8B,CAC1BpjhC,MAAO,EACP8lC,UAAU,GAEdu9+B,uBAAwB,CACpBrjhC,MAAO,KACP8lC,UAAU,GAEdw9+B,6BAA8B,CAC1BtjhC,MAAOg3gB,EAAiB38Z,6BAE5Bqk5B,uBAAwB,CACpB1+/B,MAAO+6hB,GAEXwof,WAAY,CACRvjhC,MAAO,IAAIqN,KAEfqz4B,mBAAoB,CAChB1g5B,MAAO,EACP8lC,UAAU,GAEd09+B,qBAAsB,CAClBxjhC,MAAOiK,EAAQ+9mB,qBAEnB9lG,YAAa,CACTlihB,MAAO,IAAIqN,KAEfo2gC,oBAAqB,CACjBzjhC,MAAO,EACP8lC,UAAU,GAEd49+B,sBAAuB,CACnB1jhC,MAAO,IAAIqN,KAEfs2gC,0BAA2B,CACvB3jhC,MAAO,IAAIiK,EAAQq2kB,yBAAyByic,EAAkB,CAAEzihC,IAAKA,KAEzEsjhC,yBAA0B,CACtB5jhC,MAAO,IAAIiK,EAAQ8zzB,wBAAwBglN,EAAkB/rgB,EAAiB38Z,4BAA6B,CAAE/5G,IAAKA,KAEtHujhC,sBAAuB,CACnB7jhC,MAAO,IAAIwxI,EAAqBux4B,EAAkB,CAAEzihC,IAAKA,KAE7DwjhC,yBAA0B,CACtB9jhC,MAAO,IAAI6tU,EAAwBk1sB,EAAkB,CAAEzihC,IAAKA,KAEhEyjhC,wBAAyB,CACrB/jhC,MAAO,IAAIiK,EAAQyggC,uBAAuBqY,EAAkB,CAAEzihC,IAAKA,KAEvE0jhC,yBAA0B,CACtBhkhC,MAAO,IAAIiK,EAAQ2z8B,wBAAwBmlE,EAAkB,CAAEzihC,IAAKA,KAExE2jhC,wBAAyB,CACrBjkhC,MAAO,IAAIqN,KAEfmlI,WAAY,CACRxyI,MAAOuiB,GAEX2hgC,wBAAyB,CACrBlkhC,MAAO,IAAIqN,KAEfuqgB,YAAa,CACT7xe,YAAY,EACZ/lC,MAAOqub,EAAapkb,QAAQk6gC,cAAgB,QAGpD5lgC,EAAM6lgC,+BACN7lgC,EAAM8lgC,gCACN9lgC,EAAM+lgC,sCACN/lgC,EAAMgmgC,8BAibd,SAAsCC,EAAQxtgB,GAC1C,IAAIytgB,EAA0BzjrB,EAAY,WACtCwjrB,EAAOE,kCACX,GACIC,EAAc3jrB,EAAY,WAC1B,IAAI45L,EAAe9wT,EAAQktS,EAAiBr4K,OAAQ,SAAU4qgB,GAAW,OAAOA,EAAQ98hB,gBAAkB,GAC1G+3sB,EAAO9lB,uBAAuB/je,gBAAgBC,EAClD,GACA5jB,EAAiBhyZ,GAAG,aAAc2/5B,GAClC3tgB,EAAiBhyZ,GAAG,eAAgB2/5B,GACpC3tgB,EAAiBhyZ,GAAG,UAAWy/5B,GAC/BD,EAAOx/5B,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GAC9B,iBAAVA,IACAgtgB,EAAiB/3c,eAAe,aAAc0l9B,GAC9C3tgB,EAAiB/3c,eAAe,eAAgB0l9B,GAChD3tgB,EAAiB/3c,eAAe,UAAWwl9B,GAC3CD,EAAOvl9B,eAAe,eAAgB84c,GACtCf,EAAiB7xf,aAEzB,GACAq//B,EAAOx/5B,GAAG,kCAAmC,WACzC,IAAIgyZ,EAAmBwtgB,EAAOxtgB,iBAAkBkd,EAA2Bswf,EAAOtwf,yBAC9Et6T,EAAWo9S,EAAiBp9S,SAAUjpC,EAAMqmV,EAAiBrmV,IACjE,OAAQujW,GACJ,IAAK,YACDld,EAAiBv2f,QAAQkwK,EAAKipC,GAC9B,MACJ,IAAK,eACDo9S,EAAiBqc,eAG7B,EACJ,CAhdQxb,CAA6Bt5f,EAAOy4f,GAid5C,SAAoCwtgB,EAAQzpf,GACxCA,EAAsB/1a,GAAG,cAAe,SAAuBmoB,GAC3Dq34B,EAAOI,4BAA4Bz34B,EACvC,GACA4tZ,EAAsBx/M,QAAQ,eAC9Bw/M,EAAsB/1a,GAAG,aAAc,SAAsBo7Y,GACzDokhB,EAAOI,4BAA4BxkhB,EACvC,GACA26B,EAAsBx/M,QAAQ,cAC9Bw/M,EAAsB/1a,GAAG,aAAcw/5B,EAAOK,kBAAkB9u9B,KAAKyu9B,IACrEzpf,EAAsBx/M,QAAQ,cAC9Bw/M,EAAsBR,oBAAoBluhB,QAAQm4gC,EAAOK,kBAAmBL,GAC5Ezpf,EAAsB/1a,GAAG,yBAA0B,WAC/Cw/5B,EAAOt//B,KAAK,yBAChB,GACA61gB,EAAsB/1a,GAAG,4BAA6B,WAClDw/5B,EAAOt//B,KAAK,6BACsB,WAA9Bs//B,EAAOpigC,qBAC6C,OAAhDoigC,EAAOxtgB,iBAAiBspM,qBACxBkkU,EAAOxtgB,iBAAiB8tgB,uBAAuB,GAEnDN,EAAOrtgB,aAAa9qgB,QAAQ,SAAU2rgB,GACM,OAApCA,EAAYsoM,qBACZtoM,EAAY8sgB,uBAAuB,EAE3C,GAER,EACJ,CA5eQC,CAA2BxmgC,EAAOw8gB,GA6e1C,SAA+Bypf,EAAQjigC,GACnCA,EAAUyiG,GAAG,UAAWw/5B,EAAOvo+B,QAAQ8Z,KAAKyu9B,IAC5CjigC,EAAUyiG,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,EAAOsa,GACxC,iBAAVta,IACqB,iBAAjBw6gC,EAAOx6gC,OACPw6gC,EAAO9wf,YAAYpvgB,GAEvB/B,EAAU08C,eAAe,eAAgB84c,IAE7CysgB,EAAOt//B,KAAK,kCAChB,EACJ,CAvfQ8//B,CAAsBzmgC,EAAOgE,GA+frC,SAAkCiigC,EAAQjigC,EAAW0igC,GACjD,IAAIC,EAAsB,IAAI73gC,IAC1B83gC,GAAkB,EAClB1s7B,EAAW8P,YAAY,WACvBi86B,EAAO9skB,WAAWxmc,KAAK,SAAUyP,GAC7BwkgC,GAAmBA,EACnBxkgC,EAAMtU,QAAQ,SAAUq8F,EAAUtwF,GAI9B,IAAIkL,EAAS,IAAIwzf,EAAY1+f,EAAIswF,GAAU,GAG3CnmF,EAAUq++B,aAAa,UAAW,eAAgB,OAAQ,CACtDwkB,gBAAiB9hgC,EAAOo3b,sBAAsBttc,IAAI,SAAUqsgB,EAAW/5gB,GACnE,OAAO2lhC,EAAmC5rgB,EAAW/wa,EAASgyW,sBAAsBh7c,GAAIwlhC,EAC5F,GACA1qkB,qBAAsBl3b,EAAOk3b,qBAAqBptc,IAAI,SAAUqsgB,EAAW/5gB,GACvE,OAAO4lhC,EAAkC7rgB,EAAW/wa,EAAS8xW,qBAAqB96c,GAAIwlhC,EAC1F,GACAzqkB,qBAAsBn3b,EAAOm3b,qBAAqBrtc,IAAI,SAAUqsgB,EAAW/5gB,GACvE,OAAO4lhC,EAAkC7rgB,EAAW/wa,EAAS+xW,qBAAqB/6c,GAAIwlhC,EAC1F,GACAzpI,iBAAkBn43B,EAAOm43B,iBACzB8pI,gBAAiBjigC,EAAOq3b,sBAAsBvtc,IAAI,SAAUqsgB,EAAW/5gB,GACnE,OAAO2lhC,EAAmC5rgB,EAAW/wa,EAASiyW,sBAAsBj7c,GAAIwlhC,EAC5F,KAGJ,IAAIxghC,EAAOolO,EAAQ,CACf,uBACA,uBACA,wBACA,yBACD,SAAUn9L,GAAQ,OAAOrpB,EAAOqpB,GAAMv/B,IAAI,SAAUyQ,GACnD,IAAI64T,EAAO74T,EAAG64T,KACd,OAD+B74T,EAAGm0H,SAChB,IAAM0kM,CAC5B,EAAI,GAGJ,GAFwC73G,EAAWlwN,MAAMuwB,KAAKgm/B,EAAoBxghC,QAASA,GACzD2H,QAAQ,SAAUxH,GAAO,OAAOqghC,EAAoBp0+B,OAAOjsC,EAAM,GAC/FsghC,EAAiB,CAIjB,IAAI5qkB,EA2FxB,SAAkCA,EAAwBkhc,GA0CtD,OAzCAlhc,EAAyBp2c,OAAOC,OAAO,CACnCohhC,yBAA0B,EAC1B73wB,yBAA0B,EAC1BtlP,cAAe,EACfD,UAAW,EACXq9/B,oBAAqB,EACrB73wB,qBAAsB,EACtB83wB,4BAA6B,EAC7BC,wBAAyB,EACzBrvkB,WAAW,EACXmlc,iBAAkBA,EAClB9syB,SAAU,EACVi36B,UAAU,EACVC,iBAAkB,EAClBC,aAAc,EACdC,kBAAmB,EACnBC,cAAe,EACfC,wBAAyB,EACzBC,oBAAqB,EACrBl8gC,MAAO,SACPm8gC,mBAAoB,EACpBC,YAAa,GACbtg/B,UAAU,GACXm6T,EAAas6G,GAA0B,CAAC,EAAG,QACvBx1b,eAAiB5gB,OAAOC,OAAO,CAClDyf,cAAe,OACfwigC,SAAS,EACTC,GAAI,GACJr9uB,KAAM,EACNt6L,SAAU,EACV7qF,SAAU,MACVgkF,IAAK,IACNm4P,EAAas6G,EAAuBx1b,gBAAkB,CAAC,EAAG,OAC7Dw1b,EAAuBt1b,gBAAkB9gB,OAAOC,OAAO,CACnDyf,cAAe,OACfyigC,GAAI,GACJr9uB,KAAM,EACNt6L,SAAU,EACV7qF,SAAU,MACVgkF,IAAK,IACNm4P,EAAas6G,EAAuBt1b,iBAAmB,CAAC,EAAG,OACvDs1b,CACX,CAtIiDgskB,CAAyB796B,EAAS6xW,uBAAwBj3b,EAAOm43B,kBAC9Fl53B,EAAUq++B,aAAa,UAAW,4BAA6B,OAAQrmjB,EAC3E,CACJ,EACJ,EAAG,WAEH,EACJ,EAAG0qkB,GACHT,EAAOx/5B,GAAG,eAAgB,SAASwh6B,EAAex8gC,GAChC,iBAAVA,IACAy+F,cAAchQ,GACd+r7B,EAAOvl9B,eAAe,eAAgBun9B,GAE9C,EACJ,CAxjBQC,CAAyBlogC,EAAOgE,EAAWtY,EAAQ24gC,wBACnDrkgC,EAAM09B,QAAQoyY,GAGd9va,EAAMmg/B,uBAAuBrle,8BAA8B96gB,EAAMulgC,yBAAyB4C,SACnFnogC,CACX,CAqXA,OA7eAnE,EAAUiv1B,EAAQhr1B,GAyHlBla,OAAOwY,eAAe0s1B,EAAO5u1B,UAAW,kBAAmB,CAKvDvM,IAAK,WACD,OAAOmM,KAAKqk/B,uBAAuBp8+B,eACvC,EACAyjB,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAe0s1B,EAAO5u1B,UAAW,2BAA4B,CAKhEvM,IAAK,WACD,MAAiC,YAA1BmM,KAAKm4H,WAAWxoI,MACjB,eACAqQ,KAAKm4H,WAAWxoI,KAC1B,EACA+7B,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAe0s1B,EAAO5u1B,UAAW,qBAAsB,CAK1DvM,IAAK,WACD,OAAOmM,KAAKqk/B,uBAAuBt8+B,kBACvC,EACA2jB,YAAY,EACZuL,cAAc,IAKlB+3zB,EAAO5u1B,UAAUksgC,6BAA+B,SAAUvugC,GACtD,OAAOiC,KAAK6pgC,wBAAwBpz+B,OAAO14B,EAC/C,EAIAix1B,EAAO5u1B,UAAUmsgC,kCAAoC,SAAUxugC,GAC3D,IAAIusG,EAAWtqG,KAAK6pgC,wBAAwBh2gC,IAAIkK,IAAOmrG,IAKnDmy1B,EAJiBr77B,KAAKqk/B,uBAAuBnke,oBAIdrlhB,KAAK,SAAUwg8B,GAAiB,OAAOA,EAAct97B,KAAOA,GAAmC,UAA7Bs97B,EAAcp6rB,UAAwB,GAU3I,OATIo6rB,EACA/w1B,EAAS1zG,QAAQyk8B,GAMjBr77B,KAAK6pgC,wBAAwB91gC,IAAIgK,EAAIusG,GAElCA,CACX,EAIA0kvB,EAAO5u1B,UAAUoqgC,kBAAoB,SAAUnvE,GAG3C,OAFer77B,KAAKusgC,kCAAkClxE,EAAct97B,IAC3DnH,QAAQyk8B,GACVr77B,IACX,EAIAgv1B,EAAO5u1B,UAAUi5gB,YAAc,SAAUpvgB,GACrC,IAAIuigC,EAAgBxogC,EAAO5D,UAAUi5gB,YAAYh5gB,KAAKL,KAAMiK,GAS5D,OARIuigC,IACAxsgC,KAAKysgC,iCACLzsgC,KAAKm4H,WAAWrtH,aAChB9K,KAAKqk/B,uBAAuB52+B,SAEhCzN,KAAK28f,iBAAiBr4K,OAAOtyV,QAAQ,SAAUsa,GAC3CA,EAAMqsM,cAAc1uM,GAAS,IAAI1C,MAAM,iCAC3C,GACOilgC,CACX,EAIAx9K,EAAO5u1B,UAAUuogC,kBAAoB,SAAU5qgC,GAC3C,IAAImG,EAAQlE,KACZ,OAAOA,KAAKusgC,kCAAkCxugC,GAAIskH,QAAQxrH,KAAK,SAAUwk8B,GAErE,OADAn37B,EAAMoogC,6BAA6BvugC,GAC5Bs97B,CACX,EACJ,EAIArsG,EAAO5u1B,UAAU4tmB,+BAAiC,SAAUr2e,GACxD,IAAI+04B,EAAuB1sgC,KAAK4pgC,wBAAwB/1gC,IAAI8jI,KAAa,EAKzE,OAJA33H,KAAK4pgC,wBAAwBnz+B,OAAOkhG,GAChC+04B,GACA1sgC,KAAKoF,KAAKyH,KAAK,IAAM8qH,EAAW,kCAE7B+04B,CACX,EAIA19K,EAAO5u1B,UAAUusgC,+BAAiC,WAC9C,IAAIC,EAA6Bn9yB,EAAQzvN,KAAK88f,aAAc,SAAUa,GAAe,OAAOrpgB,MAAMuwB,KAAK84e,EAAYr5K,OAAS,GAC5H,OAAO,IAAItxV,IAAI45gC,EACnB,EAIA59K,EAAO5u1B,UAAUysgC,8BAAgC,SAAUj/Z,GACvD,IAAI1pmB,EAAQlE,KACR2tmB,EAAsB3tmB,KAAKmpgC,qBAC3BxrgB,EAAc39f,KAAK88f,aAAajpgB,IAAI+5mB,EAAiBt3b,KACrDh0F,EAAOtiF,KAYX,OAXK29f,KACDA,EAAc,IAAIgwG,EAAoBC,EAAkB,SAAUj2e,GAAY,OAAOzzH,EAAM8pmB,+BAA+Br2e,EAAW,EAAG,SAAUA,EAAUrjC,GAAY,OAAOpwF,EAAMwlgC,wBAAwBnZ,wBAAwB543B,EAAU,YAAarjC,EAAW,EAAG,SAAUqjC,EAAU1d,GAAQ,OAAO/1G,EAAMslgC,sBAAsB/w4B,aAAad,EAAU1d,EAAO,EAAG,SAAU0d,GAAY,OAAOzzH,EAAMslgC,sBAAsB7w4B,eAAehB,EAAW,IACjbhtB,GAAG,eAAgB,SAAS+yZ,EAAa/tgB,GACnC,iBAAVA,IACAgugB,EAAY/4c,eAAe,eAAgB84c,GAC3Cp7a,EAAKw6a,aAAarme,OAAOkne,EAAYrnV,KACrCh0F,EAAKsm7B,kCAAkC70gC,IAAI4pgB,EAAYrnV,IAAKqnV,EAAY74K,UAEhF,GACA9kV,KAAKy9f,mBAAmBE,IAErBA,CACX,EAIAqxV,EAAO5u1B,UAAUksc,UAAY,WACzB,MAAO,CACHqxD,YAAa39f,KAAK28f,iBAAiBhpa,WAE3C,EAIAq7vB,EAAO5u1B,UAAU0sgC,0BAA4B,SAAU12gC,GACnD,IAAIoN,EAAKxD,KAAK28f,iBAAkB35K,EAAmBx/U,EAAGw/U,iBAAkBujjB,EAA2B/i4B,EAAG+i4B,yBACtG,OAAIvjjB,GAAoBhjV,KAAK8ogC,8BAAgCviI,GACzDvm4B,KAAK8ogC,8BAAgCviI,EAC9Bz84B,OAAOC,OAAO,CACjBo8/B,kBAAmBpjqB,EAA8BC,IAClD5sV,IAEAA,CACX,EAIA441B,EAAO5u1B,UAAUiqgC,iCAAmC,WAChDrqgC,KAAKm4H,WAAWK,QAAQx4H,KAAK8sgC,0BAA0B9sgC,KAAKssc,aAChE,EAIA0iZ,EAAO5u1B,UAAUmqgC,4BAA8B,SAAUlrf,GAErDr/gB,KAAKm4H,WAAWK,QAAQ1uI,OAAOC,OAAO,CAClC87/B,iBAAkB,CAACxme,IACpBr/gB,KAAKssc,aACZ,EAIA0iZ,EAAO5u1B,UAAUwhC,QAAU,SAAUmr+B,GACjC,IAAI7ogC,EAAQlE,KACZ,GAAI+sgC,EAAUC,YAAcD,EAAUC,WAAWlorB,SAAW9kV,KAAKopgC,oBAAqB,CAClFppgC,KAAKopgC,oBAAsB2D,EAAUC,WAAWlorB,SAChDiorB,EAAUC,WAAW1orB,OAAOtyV,QAAQ,SAAU4lI,GACtCA,EAAW75H,IACXmG,EAAMmlgC,sBAAsB5y+B,OAAOmhG,EAAW0+C,KAC9CpyK,EAAM2jgB,YAAY9zgB,IAAI6jI,EAAW0+C,IAAK1+C,EAAW75H,KAE5C65H,EAAW3tH,QAAU/F,EAAMmlgC,sBAAsB11gC,IAAIikI,EAAW0+C,MACrEpyK,EAAMmlgC,sBAAsBt1gC,IAAI6jI,EAAW0+C,IAAK1+C,EAAW3tH,MAEnE,GACA,IAAIgjgC,EAAwB,IAAI/5gC,IAAI65gC,EAAUC,WAAW1orB,OACpDrzV,OAAO,SAAU2mI,GAAc,QAASA,EAAW75H,EAAI,GACvDhL,IAAI,SAAU6kI,GAAc,OAAOA,EAAW0+C,GAAK,IACxDt2K,KAAK6ngB,YAAY71gB,QAAQ,SAAUk6N,EAASv0F,GACnCs14B,EAAsBt5gC,IAAIgkI,IAC3BzzH,EAAM2jgB,YAAYpxe,OAAOkhG,EAEjC,EACJ,CACA,IA+WqBilY,EACrBgwgB,EAhXIM,EAAqB,IAAIh6gC,IAyE7B,OAtEC65gC,EAAUjwgB,cAAgB,IAAI9qgB,QAAQ,SAAU47mB,GAC7C,GAAIA,EAAiBt3b,MAAQpyK,EAAMy4f,iBAAiBrmV,IAApD,CAOA,IAAI621B,EAAkCjpgC,EAAM0kgC,kCAAkC/0gC,IAAI+5mB,EAAiBt3b,KACnG,KAAI621B,GAAmCv/Z,EAAiB9oR,UAAYqorB,GAApE,CAGIA,GACAjpgC,EAAM0kgC,kCAAkCny+B,OAAOm3kB,EAAiBt3b,KAEpE,IAAIqnV,EAAcz5f,EAAM2ogC,8BAA8Bj/Z,GACtDjwG,EAAYvngB,OAAOw3mB,GACnBs/Z,EAAmB55gC,IAAIqqgB,EANvB,CARA,CAeJ,GACuB,WAAnBovgB,EAAU/8/B,MACVhQ,KAAK88f,aAAa9qgB,QAAQ,SAAU2rgB,GAC3BuvgB,EAAmBv5gC,IAAIgqgB,IACxBA,EAAY7yf,YAEpB,GAqVJ8hgC,GADqBhwgB,EAlVD58f,MAmVc2sgC,iCACtC/vgB,EAAKysgB,sBAAsBr3gC,QAAQ,SAAUiY,EAAO0tH,GAChD,IAAI2ukB,EAAiBsmU,EAA2B/4gC,IAAI8jI,GAChD2ukB,IACA1pM,EAAKysgB,sBAAsB5y+B,OAAOkhG,GAClC2ukB,EAAej0Y,gBAAgBr6G,EAAkB/tM,EAAMukF,KAAMvkF,EAAMmmF,UAE3E,GACAw86B,EAA2B56gC,QAAQ,SAAUs0sB,GACzC,IAAIp6e,EAAU0wS,EAAKiL,YAAYh0gB,IAAIyysB,EAAehwhB,OAC7C41C,GAAYo6e,EAAer+L,cAAgBq+L,EAAel0Y,iBAAiBr0T,KAAOmuN,IACnFo6e,EAAe9nV,oBAAoB,MAEnCtyJ,GACA0wS,EAAK+rgB,kBAAkBz8yB,GAASr1N,KAAK,SAAUwk8B,GAAiB,OAAO/0P,EAAe9nV,oBAAoB68kB,EAAgB,EAElI,GA/VQ0xE,EAAUlnB,kBACV7l/B,KAAKqk/B,uBAAuBju/B,OAAO22gC,EAAUlnB,iBAAqC,WAAnBknB,EAAU/8/B,MAEzE+8/B,EAAUlwgB,WACV78f,KAAK68f,UAAUzmgB,OAAO22gC,EAAUlwgB,WAEhCkwgB,EAAUjrV,WAAairV,EAAUjrV,UAAUh9V,SAAW9kV,KAAKqm4B,qBAC3Drm4B,KAAKqm4B,mBAAqB0mI,EAAUjrV,UAAUh9V,SAC9CiorB,EAAUjrV,UAAUx9V,OAAOtyV,QAAQ,SAAUsa,GACrCA,EAAMgqK,KACNpyK,EAAMglgC,WAAWn1gC,IAAIuY,EAAMvO,GAAIuO,EAAMgqK,IAE7C,GACAt2K,KAAK28f,iBAAiBvmgB,OAAO22gC,EAAUjrV,YAEvCirV,EAAUpvgB,aACV39f,KAAK28f,iBAAiBv2f,QAAQ2mgC,EAAUpvgB,YAAYrnV,IAAKy21B,EAAUpvgB,YAAYp+S,UAEnF,CACIv/M,KAAKspgC,0BACLtpgC,KAAKupgC,yBACLvpgC,KAAK0pgC,wBACL1pgC,KAAK2pgC,yBACL3pgC,KAAKwpgC,sBACLxpgC,KAAKypgC,0BACPz3gC,QAAQ,SAAUo7gC,GAChB,IAAI14b,EAAU04b,EAAe14b,SACxB04b,EAAef,SACbU,EAAU1mB,iBACV0mB,EAAU1mB,gBAAgB3xa,IAC1Bq4b,EAAU1mB,gBAAgB3xa,GAASxskB,WACmB,iBAAtD6kgC,EAAU1mB,gBAAgB3xa,GAASxskB,UAAU8H,MAChDo9/B,EAAeh+lB,MAAM29lB,EAAU1mB,gBAAgB3xa,GAASxskB,UAAUrG,MAE1E,GACuB,YAAnBkrgC,EAAU/8/B,MAAsB+8/B,EAAU725B,QAC1C625B,EAAU725B,OAAO4uO,SAAW9kV,KAAK+ogC,+BACjC/ogC,KAAK+ogC,6BAA+BgE,EAAU725B,OAAO4uO,SACrD9kV,KAAK28f,iBAAiB/jT,kBAAkBm0zB,EAAU725B,SAE/Cl2G,IACX,EACAgv1B,EAAO5u1B,UAAU8pgC,4BAA8B,WAC3C,IAAIhmgC,EAAQlE,KACZA,KAAKypgC,yBAAyB9+5B,GAAG,UAAW,SAAU+sB,EAAO35H,GACzDpH,QAAQmvC,IAAI4xF,EAAM3kI,IAAI,SAAUknH,GAC5B,OAAO/1G,EAAMy4f,iBAAiB2qY,iBAAiBrtxB,EAAK3tG,MAAO2tG,EAAK89B,WAAWlhJ,KAAK,SAAU1D,GACtF,MAAO,CAAEmZ,MAAO2tG,EAAK3tG,MAAOnZ,OAAQA,EACxC,EACJ,IAAI0D,KAAK,SAAUw2gC,GACfnpgC,EAAMulgC,yBAAyB91sB,iBAAiB,CAAE51T,GAAIA,EAAI25H,MAAO214B,GACrE,EACJ,GACA,IAAIC,EAAiB,SAAUhhgC,GACR,UAAfA,EAAMQ,MACNR,EAAM8lT,iBAAiBznN,GAAG,WAAY,WAClCzmG,EAAMulgC,yBAAyB/1sB,kBAAkB,CAAE/7L,SAAUrrH,EAAMgqK,KACvE,EAER,EAEAhiL,MAAMuwB,KAAK7kB,KAAK28f,iBAAiBr4K,OAAO17T,UAAU52B,QAAQ,SAAUsa,GAAS,OAAOghgC,EAAehhgC,EAAQ,GAC3GtM,KAAK28f,iBAAiBhyZ,GAAG,aAAc,SAAUr+F,GAAS,OAAOghgC,EAAehhgC,EAAQ,EAC5F,EACA0i1B,EAAO5u1B,UAAU2pgC,6BAA+B,WAC5C,IAAI7lgC,EAAQlE,KACZA,KAAK2pgC,yBAAyBh/5B,GAAG,UAAW,SAAU4i6B,EAAWC,GAC7D,IACItpgC,EAAMkB,KAAKkC,MAAM,yBAA0B,CAAEkmgC,SAAUA,EAAUD,UAAWA,IAC5E,IAAIE,EAAiB,IAAIz6gC,IACzBw6gC,EAASx7gC,QAAQ,SAAU2lI,GAAY,OAAO814B,EAAe15gC,IAAI4jI,GAAU,EAAO,GAClF414B,EAAUv7gC,QAAQ,SAAU2lI,GACpB814B,EAAe55gC,IAAI8jI,IAEnBzzH,EAAMkB,KAAKyH,KAAK8qH,EAAW,sDAE/B814B,EAAe15gC,IAAI4jI,GAAU,EACjC,GACAzzH,EAAM44f,aAAa9qgB,QAAQ,SAAU2rgB,GACjCA,EAAYr5K,OAAOtyV,QAAQ,SAAUsa,GACjC,IAAIohgC,EAAOD,EAAe55gC,IAAIyY,EAAMgqK,UAChB,IAATo31B,IACPphgC,EAAMmmT,gBAAgBi7sB,GACtBD,EAAeh3+B,OAAOnqB,EAAMgqK,KAEpC,EACJ,GAEAm31B,EAAez7gC,QAAQ,SAAU07gC,EAAM/14B,GAAY,OAAOzzH,EAAM0lgC,wBAAwB71gC,IAAI4jI,GAAW+14B,EAAO,EAClH,CACA,MAAO9iyB,GACH1mO,EAAMkB,KAAK6E,MAAM,qCAAsC2gO,EAC3D,CACJ,EACJ,EACAoknB,EAAO5u1B,UAAU4pgC,8BAAgC,WAC7C,IAAI9lgC,EAAQlE,KACZA,KAAKspgC,0BAA0B3+5B,GAAG,UAAW,WAAc,OAAOzmG,EAAMy1gB,mBAAmBz1gB,EAAMolgC,0BAA0Bljc,sBAAwB,EACvJ,EACA4oR,EAAO5u1B,UAAU6pgC,oCAAsC,WACnD,IAAI/lgC,EAAQlE,KACZA,KAAKupgC,yBAAyB5+5B,GAAG,QAAS,WACtC,IAAIgj6B,EAAwB,IAAIzpgC,EAAM2kgC,uBAAuB3kgC,EAAMmg/B,uBAAwBng/B,EAAMqlgC,0BACjGrlgC,EAAM8kgC,uBAAyB2E,EAC/BA,EAAsBhj6B,GAAG,UAAW,WACC,WAA7BzmG,EAAM6D,qBAGV7D,EAAMy4f,iBAAiB8tgB,uBAAuBkD,EAAsB3jgC,MAAO2jgC,EAAsBzymB,QACjGh3Z,EAAM44f,aAAa9qgB,QAAQ,SAAU2rgB,GACjC,IAAIziG,EAASyymB,EAAsB9vF,aAAahq7B,IAAI8pgB,EAAYrnV,KAC5D4kP,GACAyiG,EAAY8sgB,uBAAuBvvmB,EAAOlxZ,MAAOkxZ,EAEzD,GACJ,GACAyymB,EAAsBlhhC,OAC1B,GACAuT,KAAKupgC,yBAAyB5+5B,GAAG,WAAY,WAAc,OAAOzmG,EAAMuogC,gCAAkC,EAC9G,EACAz9K,EAAO5u1B,UAAUqsgC,+BAAiC,WAC1CzsgC,KAAKgpgC,yBACLhpgC,KAAKgpgC,uBAAuBtjgC,OAC5B1F,KAAKgpgC,uBAAyB,KAEtC,EAKAh6K,EAAO5u1B,UAAUi9b,SAAW,WACxB,IAAIn5b,EAAQlE,KACZ,OAAOA,KAAKqk/B,uBAAuBhnjB,WAAWxmc,KAAK,SAAUsngB,GACzD,OAAO,IAAInrgB,IAAIsB,MAAMuwB,KAAKs5e,GAAWprgB,IAAI,SAAUyQ,GAC/C,IAAIG,EAAK+7F,EAAOl8F,EAAI,GAAIzF,EAAK4F,EAAG,GAAI0qF,EAAW1qF,EAAG,GAClD,MAAO,CAAC5F,EAAIjU,OAAOC,OAAO,CAAC,EAAGskG,EAAU,CAChC8xW,qBAAsBytkB,EAA2B1pgC,EAAOmqF,EAAS8xW,sBACjEC,qBAAsBwtkB,EAA2B1pgC,EAAOmqF,EAAS+xW,sBACjEC,sBAAuBwtkB,EAA4B3pgC,EAAOmqF,EAASgyW,uBACnEC,sBAAuButkB,EAA4B3pgC,EAAOmqF,EAASiyW,yBAE/E,GACJ,EACJ,EACO0uZ,CACX,CA/e2B,CA+ezB91U,GAQF,SAAS40f,EAAsBC,EAAShtkB,GACpC,OAAOA,EAAWz2c,OAAO,SAAUy2c,EAAYq+D,GAC3C,IAAIznY,EAAWo24B,EAAQl6gC,IAAIurgB,EAAUlzS,SACrC,OAAOv0F,EACD,CAAC7tI,OAAOC,OAAO,CAAC,EAAGq1gB,EAAW,CAAEznY,SAAUA,KAAa3pI,OAAO+yc,GAC9DA,CACV,EAAG,GACP,CAQA,SAAS6skB,EAA2BzD,EAAQ6D,GACxC,OAAOF,EAAsB3D,EAAOjB,WAAY8E,EACpD,CAQA,SAASH,EAA4B1D,EAAQ8D,GACzC,IAAIF,EAAU,IAAI/6gC,IAAIsB,MAAMuwB,KAAKsl/B,EAAOtigB,YAAY3id,WAAWnyD,IAAI,SAAUyQ,GACzE,IAAIG,EAAK+7F,EAAOl8F,EAAI,GAAI8yK,EAAM3yK,EAAG,GACjC,MAAO,CADmCA,EAAG,GACjC2yK,EAChB,IACA,OAAOw31B,EAAsBC,EAASE,EAC1C,CA8KA,SAAShD,EAAkClqkB,EAAYmtkB,EAAerD,GAClE,IAAI5rkB,EAAgBivkB,EAAcjvkB,cAAeL,EAAcsvkB,EAActvkB,YAAaI,EAAkBkvkB,EAAclvkB,gBAAiBD,EAAuBmvkB,EAAcnvkB,qBAC5KovkB,EAAsBrkhC,OAAOC,OAAO,CAAC,EAAGg3c,GACxCv2c,EAAMu2c,EAAWppU,SAAW,IAAMopU,EAAW1kI,KAC7C+xsB,EAA2BvD,EAAoBh3gC,IAAIrJ,IAAQ,IAAIwI,IACnE,GAA+B,iBAApBgsc,GAAyD,iBAAlBC,EAA4B,CAC1E,IAAIovkB,EAAwCD,EAAyBv6gC,IAAI,mBAClE,IAAIwP,EACXgrgC,EAAsC1//B,UAA4B,IAAlBqwb,EAAwBC,GACxEkvkB,EAAoBG,eAAiB9ohC,KAAK+F,MAAM8ihC,EAAsCx6gC,OACtFu6gC,EAAyBr6gC,IAAI,iBAAkBs6gC,EACnD,CACA,GAAoC,iBAAzBtvkB,GAA4D,iBAAhBH,EAA0B,CAC7E,IAAI2vkB,EAA4CH,EAAyBv6gC,IAAI,uBACtE,IAAIwP,EACXkrgC,EAA0C5//B,UAAiC,IAAvBowb,EAA6BH,GACjFuvkB,EAAoBK,mBAAqBhphC,KAAK+F,MAAMgjhC,EAA0C16gC,OAC9Fu6gC,EAAyBr6gC,IAAI,qBAAsBw6gC,EACvD,CAEA,OADA1D,EAAoB92gC,IAAIvJ,EAAK4jhC,GACtBD,CACX,CAMA,SAASnD,EAAmCjqkB,EAAYmtkB,EAAerD,GACnE,IAAI3rkB,EAA4BgvkB,EAAchvkB,0BAA2BE,EAAgB8ukB,EAAc9ukB,cAAeC,EAAoB6ukB,EAAc7ukB,kBAAmBC,EAA2B4ukB,EAAc5ukB,yBAA0BH,EAAkB+ukB,EAAc/ukB,gBAC1QgvkB,EAAsBrkhC,OAAOC,OAAO,CAAC,EAAGg3c,GACxCv2c,EAAMu2c,EAAWppU,SAAW,IAAMopU,EAAW1kI,KAC7C+xsB,EAA2BvD,EAAoBh3gC,IAAIrJ,IAAQ,IAAIwI,IAInE,GAHyC,iBAA9Bksc,IACPivkB,EAAoBjvkB,0BAA4BA,GAEvB,iBAAlBE,GAAyD,iBAApBD,EAA8B,CAC1E,IAAIsvkB,EAAwCL,EAAyBv6gC,IAAI,mBAClE,IAAIwP,EACXorgC,EAAsC9//B,UAA4B,IAAlBwwb,EAAwBC,GACxE+ukB,EAAoBO,eAAiBlphC,KAAK+F,MAAMkjhC,EAAsC56gC,OACtFu6gC,EAAyBr6gC,IAAI,iBAAkB06gC,EACnD,CACA,GAAiC,iBAAtBpvkB,GAAsE,iBAA7BC,EAAuC,CACvF,IAAIqvkB,EAA8CP,EAAyBv6gC,IAAI,yBACxE,IAAIwP,EACXsrgC,EAA4ChggC,UAA8B,IAApB0wb,EAA0BC,GAChF6ukB,EAAoBS,qBAAuBpphC,KAAK+F,MAAMojhC,EAA4C96gC,OAClGu6gC,EAAyBr6gC,IAAI,uBAAwB46gC,EACzD,CAEA,OADA9D,EAAoB92gC,IAAIvJ,EAAK4jhC,GACtBD,CACX,CA6CAzs7B,EAAOj9F,QAAUuq2B,C,yBC90BT,SAAWnu2B,GAAU,aAIfA,EAAOG,aAAa,MAAO,CACjCC,OAAQ,kFAAkFC,MACtF,KAEJC,YACI,kFAAkFD,MAC9E,KAERE,SAAU,kDAAkDF,MAAM,KAClEG,cAAe,kDAAkDH,MAAM,KACvEI,YAAa,kDAAkDJ,MAAM,KACrEM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACNC,EAAG,OACHC,GAAI,UACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,cACJC,EAAG,MACHC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA1DyCC,CAAQ,EAAQ,O,+BCL1DuF,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAStD,IAAIowH,EAAQ,EAAQ,OAChB845B,EAAgB,EAAQ,OACxB976B,EAAQjpG,OAAOsW,UAAUpZ,SACzB8nhC,EAAM,SAAUlugC,GAAK,OAAO,SAAUra,GAAK,cAAc,IAAQqa,CAAG,CAAG,EAC3Enc,EAAQwvI,YAAc664B,EAAI,aAC1BrqhC,EAAQ2+G,UAAY2S,EAAMinH,IAAIv4O,EAAQwvI,aACtCxvI,EAAQ23N,OAAS,SAAUz4I,GAAK,OAAa,OAANA,CAAY,EACnDl/E,EAAQshH,kBAAoBgQ,EAAM0xR,GAAGhjZ,EAAQ23N,OAAQ33N,EAAQwvI,aAC7DxvI,EAAQouB,WAAai8/B,EAAI,YACzBrqhC,EAAQyvB,SAAW46/B,EAAI,UACvBrqhC,EAAQ8+G,SAAWur6B,EAAI,UACvBrqhC,EAAQwrB,SAAW,SAAU1pB,GAAK,OAAa,OAANA,GAA2B,iBAANA,CAAgB,EAC9E9B,EAAQsrB,QAAUzb,MAAMyb,QACxBtrB,EAAQolO,OAAS,SAAWtjO,GAAK,MAAyB,kBAAlBwsG,EAAM1yF,KAAK9Z,EAAyB,EAC5E9B,EAAQkyQ,SAAW,SAAWpwQ,GAAK,MAAyB,oBAAlBwsG,EAAM1yF,KAAK9Z,EAA2B,EAChF9B,EAAQiyU,QAAUm4sB,EAAcjpI,YAAYlvkB,QAc5CjyU,EAAQq7gB,aAPR,SAAsBn4e,GAClB,GAAIljC,EAAQsrB,QAAQ4X,IAAQA,EAAIvzB,OAAQ,CACpC,IAAIy/C,EAAOlsB,EAAI7sB,MAAM,GAAI,GAAI45N,EAAO/sM,EAAI7sB,OAAO,GAC/C,QAAS+4C,EAAK5iD,OAAO8kH,EAAMinH,IAAIv4O,EAAQ8+G,WAAWnvG,QAAUsgO,EAAKzjO,OAAO8kH,EAAMinH,IAAIv4O,EAAQouB,aAAaze,OAC3G,CACA,OAAO3P,EAAQouB,WAAW8U,EAC9B,EAOAljC,EAAQw99B,UAAYls2B,EAAMg55B,IAAItqhC,EAAQwrB,SAAU8lG,EAAM42f,KAAK52f,EAAMzjF,KAAK,QAAS7tC,EAAQouB,Y,kBC7CvF,OAeA,WAEE,aAEAqjH,QAAQx0C,OAAO,cAAe,IAAIilC,SAAS,UAAW,CAAC,YAAa,SAASR,GAM3EnmH,KAAKgvgC,mBAAoB,EAMzBhvgC,KAAKivgC,WAAa9o5B,EAAUxyH,IAAI,mBAOhCqM,KAAK+vW,cAAgB,sBAOrB/vW,KAAKkvgC,eAAiB,KACtBlvgC,KAAKmvgC,eAAiB,KAMtBnvgC,KAAK+gN,SAAW,0pBAmBhB/gN,KAAKovgC,iBAAmB,IAMxBpvgC,KAAKqvgC,sBAAwB,6BAE7BrvgC,KAAK4jG,KAAO,CAAC,eAAgB,aAAc,WAAY,UAAW,YAAa,SAAUyzK,EAAcnxJ,EAAYqH,EAAUsC,EAASrD,GAEpI,IAAI8i5B,GAAmB,EA+BvB,SAASC,EAAW184B,GAClB,IAAI9/H,EAAM,CACR+rH,QAAY,IACZ52E,MAAY,IACZ/9C,KAAY,IACZF,MAAY,IACZ+7X,GAAY,IACZ0je,KAAY,IACZ,OAAY,IACZ8lL,UAAY,KAEd384B,EAAQA,EAAM3xI,MAAM,KAEpB,IAAK,IAAImE,EAAI,EAAGA,EAAIwtI,EAAMz+H,OAAQ/O,IAEf,QAAbwtI,EAAMxtI,KACJwqI,EAAQvhI,WAAauhI,EAAQvhI,UAAU+6B,SAAS9gC,QAAQ,QAAS,EACnEsqI,EAAMxtI,GAAK,UAEXwtI,EAAMxtI,GAAK,QAIfwtI,EAAMxtI,GAAK0N,EAAI8/H,EAAMxtI,KAAOwtI,EAAMxtI,GAGpC,OAAOwtI,EAAM30H,KAAK,MACpB,CAYA,SAASuxgC,EAAQ584B,EAAOC,EAAa5jH,EAAU0kF,EAAQ876B,EAASC,GAK9D3vgC,KAAK6yH,MAAQA,aAAiBv+H,MAAQu+H,EAAQ,CAACA,GAC/C7yH,KAAK8yH,YAAcA,EACnB9yH,KAAKkP,SAAWA,EAChBlP,KAAK4zF,OAASA,EACd5zF,KAAK0vgC,QAAUA,EACf1vgC,KAAK2vgC,WAAaA,EAClB3vgC,KAAK4vgC,UAAY,IACnB,CArEAC,UAAUzvgC,UAAU0vgC,aAAe,SAAS3jgC,EAAO7lB,GACjD,OAAKgphC,MAKA,IAAMhphC,EAAQwjH,UAAY,KAAKvhH,QAAQ,gBAAkB,IAItDjC,EAAQo8b,iBAA8C,QAA3Bp8b,EAAQo8b,eAC7C,EAmEA+slB,EAAOrvgC,UAAUo+B,OAAS,WACxB,GAAuB,OAAnBx+B,KAAK4vgC,UAAoB,CAM3B,IAHA,IAEIG,EAFQ/vgC,KAAK6yH,MAAM,GAEF3xI,MAAM,QAClBmE,EAAI,EAAGA,EAAI0qhC,EAAS37gC,OAAQ/O,IACnC0qhC,EAAS1qhC,GAAKkqhC,EAAUQ,EAAS1qhC,IAEnC2a,KAAK4vgC,UAAYG,CACnB,CAEA,OAAO/vgC,KAAK4vgC,SACd,EAMA,IAAIjn/B,EAAQu9F,EAAWmK,OAMvB1nG,EAAM0oG,QAAU,GAMhB1oG,EAAMqn/B,aAAc,EAMpBrn/B,EAAM2tB,MAAQt2C,KAAK+vW,cAMnBpnV,EAAMkjE,OAAS7rF,KAAKkvgC,eAMpBvm/B,EAAM+mD,OAAS1vE,KAAKmvgC,eAOpBxm/B,EAAMsn/B,iBAAmBA,EAUzB,IAAIC,EAAc,CAAC,EA4BnB,GA1BIlwgC,KAAKivgC,YACP/o5B,EAAWM,IAAI,sBAAuB,SAAUr6G,EAAO+e,GACrDil/B,IAEIjl/B,GAASA,EAAMmmG,SACjB6E,QAAQlkI,QAAQk5B,EAAMmmG,QAAS,SAAU++4B,GAIvC,IAAIlhgC,EAAWkhgC,EAAO,IACG,iBAAf,GAA2BlhgC,aAAoB3O,UACvD6vgC,EAAO,GAAK,CAAClhgC,EAAUgc,IAKzBkl/B,EAAO,IAAK,EACZ7u8B,EAAKzgE,MAAMd,KAAMowgC,EACnB,EAEJ,GAMEpwgC,KAAKgvgC,kBAAmB,CAC1B,IAAIvmhC,EAAW+jI,EAAU,GACrBlmI,EAAU+wR,EAAa,GACvBg5vB,EAAWn64B,QAAQ5vI,QAAQ0Z,KAAK+gN,UACpCx/I,EAAKvhE,KAAKovgC,iBAAkBpvgC,KAAKqvgC,sBAAuBY,GAGpD3phC,IAAYmC,GAAYnC,IAAYmC,EAASC,kBAC/CpC,EAAUmC,EAASiF,MAGrBwoI,QAAQ5vI,QAAQA,GAASiqI,OAAOhD,EAAS8i5B,EAAT9i5B,CAAmB5kG,GACrD,CASA,SAASwn/B,IAEP,IADA,IAAI9qhC,EAAIsjC,EAAM0oG,QAAQj9H,OACf/O,KAAK,CACV,IAAI+qhC,EAASzn/B,EAAM0oG,QAAQhsI,GACvB+qhC,IAAWA,EAAOT,YACpBW,EAAKF,EAET,CACF,CAKA,IAAIG,GAAc,EAElB,SAASN,IACPtn/B,EAAMqn/B,aAAern/B,EAAMqn/B,YAKvBrn/B,EAAMqn/B,aACRO,EAAcr58B,EAAK,OACnBo58B,EAAK,OAKL/u8B,EAAK,MAAOgv8B,EAAYz94B,YAAam94B,EAAkB,KAAM,CAAC,QAAS,SAAU,eAEjFK,EAAK,QAGe,IAAhBC,GACFhv8B,EAAKgv8B,GAGX,CAYA,SAAShv8B,EAAMsxD,EAAOC,EAAa5jH,EAAU0kF,EAAQ876B,EAASC,GAG5D,IAAIa,EAGAC,EAAY,CAAC,QAAS,SAAU,YAoCpC,GA/BgB,oBAFF3mhC,OAAOsW,UAAUpZ,SAASqZ,KAAKwyH,KAG3CC,EAAcD,EAAMC,YACpB5jH,EAAc2jH,EAAM3jH,SACpB0kF,EAAci/B,EAAMj/B,OACpB+76B,EAAc984B,EAAM884B,WACpBD,EAAc784B,EAAM684B,QACpB784B,EAAcA,EAAMA,OAItBy94B,EAAKz94B,GAGDC,aAAuBrnB,UACzB7X,EAAS1kF,EACTA,EAAW4jH,EACXA,EAAc,iBACLoD,QAAQjC,YAAYnB,KAC7BA,EAAc,sBAMGh8H,IAAf64gC,IACFA,GAAa,GAMS,mBAAbzggC,EAAyB,CAWlC,IAAI1Y,EARJg6gC,EAAYthgC,EAGNwggC,aAAmBp7gC,QACvBo7gC,EAAU,IAKZ,IAAK,IAAIrqhC,EAAE,EAAGA,EAAIqqhC,EAAQt7gC,OAAQ/O,IAChCqqhC,EAAQrqhC,GAAKqqhC,EAAQrqhC,GAAGstB,eAET,KADfnc,EAAQi6gC,EAAUlohC,QAAQmnhC,EAAQrqhC,MAEhCorhC,EAAU1j/B,OAAOv2B,EAAO,GAK5B0Y,EAAW,SAAS/C,GAClB,IAAIukgC,GAAgB,EAIpB,GAAIvkgC,EAAO,CACT,IAAIpe,EAASoe,EAAMpe,QAAUoe,EAAM+va,WAC/B/zb,EAAW4F,EAAO5F,SAASwqB,cAG/B,IAAK,IAAM5kB,EAAO+7G,UAAY,KAAKvhH,QAAQ,gBAAkB,EAC3DmohC,GAAgB,OAGhB,IAAK,IAAIrrhC,EAAE,EAAGA,EAAEorhC,EAAUr8gC,OAAQ/O,IAChC,GAAIorhC,EAAUprhC,KAAO8C,EAAU,CAC7BuohC,GAAgB,EAChB,KACF,CAGN,CAEIA,GACFC,EAAUH,EAAU1vgC,MAAMd,KAAM7L,WAEpC,CACF,CAEuB,iBAAb,EACR07gC,UAAUn09B,KAAKm3E,EAAO894B,EAAUzhgC,GAAW0kF,GAE3Ci86B,UAAUn09B,KAAKm3E,EAAO894B,EAAUzhgC,IAGlC,IAAIkhgC,EAAS,IAAIX,EAAO584B,EAAOC,EAAa5jH,EAAU0kF,EAAQ876B,EAASC,GAEvE,OADAhn/B,EAAM0oG,QAAQv9H,KAAKs8gC,GACZA,CACT,CAQA,SAASE,EAAMF,GACb,IAAIv94B,EAASu94B,aAAkBX,EAAUW,EAAOv94B,MAAQu94B,EAIxD,GAFAP,UAAU3qwB,OAAOryI,GAEbqD,QAAQnmH,QAAQ8iH,GAAQ,CAG1B,IAFA,IAAI+94B,GAAY,EACZvrhC,EAAIwtI,EAAMz+H,OACP/O,KACLurhC,EAAYN,EAAKz94B,EAAMxtI,KAAOurhC,EAEhC,OAAOA,CACT,CACE,IAAIp6gC,EAAQmyB,EAAM0oG,QAAQ9oI,QAAQ2uE,EAAK27D,IAEvC,OAAIr8H,GAAS,IAEPmyB,EAAM0oG,QAAQ76H,GAAOq8H,MAAMz+H,OAAS,EACtCu0B,EAAM0oG,QAAQ76H,GAAOq8H,MAAM9lG,OAAOpE,EAAM0oG,QAAQ76H,GAAOq8H,MAAMtqI,QAAQsqI,GAAQ,IAI7EqD,QAAQlkI,QAAQk+gC,EAAa,SAAUW,GACrC,IAAIC,EAAaD,EAAWtohC,QAAQogC,EAAM0oG,QAAQ76H,KAC9B,IAAhBs6gC,GACAD,EAAW9j/B,OAAO+j/B,EAAY,EAEpC,GAEAno/B,EAAM0oG,QAAQtkG,OAAOv2B,EAAO,KAEvB,EAMb,CAQA,SAAS0gE,EAAM27D,GAEb,IAAKA,EACH,OAAOlqG,EAAM0oG,QAKf,IAFA,IAAI++4B,EAEK/qhC,EAAI,EAAGA,EAAIsjC,EAAM0oG,QAAQj9H,OAAQ/O,IAGxC,IAFA+qhC,EAASzn/B,EAAM0oG,QAAQhsI,IAEZwtI,MAAMtqI,QAAQsqI,IAAU,EACjC,OAAOu94B,EAIX,OAAO,CACT,CA+CA,SAASO,EAAWzhgC,GAElB,OAAO,SAAU/C,EAAO0mH,GAKtB,GAAI3jH,aAAoB5a,MAAO,CAC7B,IAAIy8gC,EAAa7hgC,EAAS,GACtBgc,EAAQhc,EAAS,GACrBA,EAAW,SAAU/C,GACnB+e,EAAMvC,MAAM2lG,MAAMyi5B,EACpB,CACF,CAIA7q5B,EAAW8H,OAAO,WAEhB9+G,EAAS/C,EAAO+qD,EAAK27D,GACvB,EACF,CACF,CAEA,IAAIm+4B,EAAY,CACd19gC,IAAwBiuE,EACxBwxD,IAAwBu94B,EACxBz8gC,IAAwBqjE,EACxB+58B,OAnEF,SAAiBto/B,GAgBf,OAdMA,EAAMw1Q,OAAO+xuB,IAGjBA,EAAYvn/B,EAAMw1Q,KAAO,GAEzBx1Q,EAAM69F,IAAI,WAAY,WAEpB,IADA,IAAInhI,EAAI6qhC,EAAYvn/B,EAAMw1Q,KAAK/pS,OACxB/O,KACLirhC,EAAKJ,EAAYvn/B,EAAMw1Q,KAAK97R,MAEhC,IAIK,CACL/O,IAAK,SAAUe,GACb,IAAI+7gC,EASJ,OANEA,EADEj8gC,UAAUC,OAAS,EACZmtE,EAAKzgE,MAAMd,KAAM7L,WAEjBotE,EAAKltE,GAGhB67gC,EAAYvn/B,EAAMw1Q,KAAKrqS,KAAKs8gC,GACrBpwgC,IACT,EAEJ,EAsCE+gN,SAAwB/gN,KAAK+gN,SAC7BkvzB,iBAAwBA,EACxBjB,kBAAwBhvgC,KAAKgvgC,kBAC7BI,iBAAwBpvgC,KAAKovgC,iBAC7BC,sBAAwBrvgC,KAAKqvgC,sBAC7BJ,WAAwBjvgC,KAAKivgC,WAC7BkB,aAAwBA,EACxBpgqB,cAAwB/vW,KAAK+vW,cAC7B/8O,MA7fF,WACEs84B,GAAmB,CACrB,EA4fE4B,QA1fF,WACE5B,GAAmB,CACrB,GA2fA,OAAO0B,CAET,EAGF,IAECpq5B,UAAU,SAAU,CAAC,UAAW,SAAUyK,GACzC,MAAO,CACLyD,SAAU,IACV1L,KAAM,SAAUzgG,EAAO4U,EAAIwrF,GACzB,IACI2m5B,EADArlhC,EAAO,GAGX6rI,QAAQlkI,QAAQ22B,EAAM2lG,MAAMvF,EAAMqn5B,QAAS,SAAU176B,EAAM076B,GAEzDV,EAAyC,iBAAxB3m5B,EAAMoo5B,cAA6Bpo5B,EAAMoo5B,cAAcjwhC,MAAM,UAAY,GAE1FmJ,EAAKyJ,KAAKs8gC,GAEV/+4B,EAAQ/9H,IAAI,CACVu/H,MAAOu94B,EACPt94B,YAAa/J,EAAMqo5B,kBACnBligC,SAAUwlF,EACVd,OAAQm1B,EAAMso5B,aACd3B,QAASA,GAEb,GAGAny+B,EAAGme,KAAK,WAAY,WAClBw6E,QAAQlkI,QAAQ3H,EAAMgnI,EAAQ0B,IAChC,EACF,EAEJ,IAECpN,IAAI,CAAC,UAAW,SAAS0L,GAG1B,GAED,CA/mBD,GAuoBA,SAAUlqI,EAAQsB,GA2Hd,IAhHA,IA0GI6ohC,EA1GAC,EAAO,CACP,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,WACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,KACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,IAAK,QAWLC,EAAe,CACf,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KAaLC,EAAa,CACb,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,EAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,EAAK,IACL,IAAK,IACL,IAAK,IACL,IAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MASLC,EAAmB,CACnB,OAAU,MACV,QAAW,OACX,OAAU,QACV,OAAU,MACV,KAAQ,IACR,IAAO,uBAAuBxvhC,KAAKoM,UAAU+6B,UAAY,OAAS,QAgB7DhkC,EAAI,EAAGA,EAAI,KAAMA,EACtBkshC,EAAK,IAAMlshC,GAAK,IAAMA,EAM1B,IAAKA,EAAI,EAAGA,GAAK,IAAKA,EAClBkshC,EAAKlshC,EAAI,IAAMA,EAWnB,SAASsshC,EAAUrm+B,EAAQt7B,EAAMd,GACzBo8B,EAAOpzC,iBACPozC,EAAOpzC,iBAAiB8X,EAAMd,GAAU,GAI5Co8B,EAAOi6Y,YAAY,KAAOv1a,EAAMd,EACpC,CAQA,SAAS0igC,EAAoB5shC,GAGzB,GAAc,YAAVA,EAAEgrB,KAAoB,CACtB,IAAI6hgC,EAAYtxgC,OAAOysF,aAAahoG,EAAEitS,OAetC,OAJKjtS,EAAEgtS,WACH6/uB,EAAYA,EAAUzphC,eAGnByphC,CACX,CAGA,OAAIN,EAAKvshC,EAAEitS,OACAs/uB,EAAKvshC,EAAEitS,OAGdu/uB,EAAaxshC,EAAEitS,OACRu/uB,EAAaxshC,EAAEitS,OAQnB1xR,OAAOysF,aAAahoG,EAAEitS,OAAO7pS,aACxC,CASA,SAAS0phC,EAAgBC,EAAYC,GACjC,OAAOD,EAAW3+gC,OAAO8K,KAAK,OAAS8zgC,EAAW5+gC,OAAO8K,KAAK,IAClE,CAkEA,SAAS+zgC,EAAYznhC,GACjB,MAAc,SAAPA,GAAyB,QAAPA,GAAwB,OAAPA,GAAuB,QAAPA,CAC9D,CAkCA,SAAS0nhC,EAAgB1nhC,EAAKsI,EAAW8gG,GAcrC,OAVKA,IACDA,EA/BR,WACI,IAAK096B,EAED,IAAK,IAAI9mhC,KADT8mhC,EAAe,CAAC,EACAC,EAIR/mhC,EAAM,IAAMA,EAAM,KAIlB+mhC,EAAK3lhC,eAAepB,KACpB8mhC,EAAaC,EAAK/mhC,IAAQA,GAItC,OAAO8mhC,CACX,CAciBa,GAAiB3nhC,GAAO,UAAY,YAKnC,YAAVopG,GAAwB9gG,EAAUsB,SAClCw/F,EAAS,WAGNA,CACX,CAwBA,SAASw+6B,EAAYhirB,EAAax8P,GAC9B,IAAIvpG,EACAG,EACAnF,EACAyN,EAAY,GAMhB,IAFAzI,EAxBJ,SAAyB+lW,GACrB,MAAoB,MAAhBA,EACO,CAAC,MAGZA,EAAcA,EAAYrsW,QAAQ,SAAU,UACzB7C,MAAM,IAC7B,CAiBWmxhC,CAAgBjirB,GAElB/qW,EAAI,EAAGA,EAAIgF,EAAK+J,SAAU/O,EAC3BmF,EAAMH,EAAKhF,GAGPqshC,EAAiBlnhC,KACjBA,EAAMknhC,EAAiBlnhC,IAMvBopG,GAAoB,YAAVA,GAAwB696B,EAAWjnhC,KAC7CA,EAAMinhC,EAAWjnhC,GACjBsI,EAAUgB,KAAK,UAIfm+gC,EAAYznhC,IACZsI,EAAUgB,KAAKtJ,GAQvB,MAAO,CACHA,IAAKA,EACLsI,UAAWA,EACX8gG,OALJA,EAASs+6B,EAAgB1nhC,EAAKsI,EAAW8gG,GAO7C,CAEA,SAAS0+6B,EAAWhshC,EAASsjgB,GACzB,OAAItjgB,IAAYmC,IAIZnC,IAAYsjgB,GAIT0ohB,EAAWhshC,EAAQ0B,WAAY4hgB,GAC1C,CAEA,SAASimhB,EAAU0C,GACf,IAAIjw7B,EAAOtiF,KAIX,GAFAuygC,EAAgBA,GAAiB9phC,IAE3B65F,aAAgBut7B,GAClB,OAAO,IAAIA,EAAU0C,GAQzBjw7B,EAAKv0F,OAASwkhC,EAOdjw7B,EAAKkw7B,WAAa,CAAC,EAOnBlw7B,EAAKmw7B,WAAa,CAAC,EAQnB,IAOIC,EAPAC,EAAkB,CAAC,EAcnBC,GAAmB,EAOnBC,GAAsB,EAQtBC,GAAsB,EAQ1B,SAASC,EAAgBC,GACrBA,EAAaA,GAAc,CAAC,EAE5B,IACIxohC,EADAyohC,GAAkB,EAGtB,IAAKzohC,KAAOmohC,EACJK,EAAWxohC,GACXyohC,GAAkB,EAGtBN,EAAgBnohC,GAAO,EAGtByohC,IACDH,GAAsB,EAE9B,CAcA,SAASI,EAAYrB,EAAW/+gC,EAAW9N,EAAGmuhC,EAAc/irB,EAAapmV,GACrE,IAAI3kB,EACA6pB,EACA+iB,EAAU,GACV2hE,EAAS5uG,EAAEgrB,KAGf,IAAKsyE,EAAKkw7B,WAAWX,GACjB,MAAO,GAUX,IANc,SAAVj+6B,GAAqBq+6B,EAAYJ,KACjC/+gC,EAAY,CAAC++gC,IAKZxshC,EAAI,EAAGA,EAAIi9F,EAAKkw7B,WAAWX,GAAWz9gC,SAAU/O,EAKjD,GAJA6pB,EAAWozE,EAAKkw7B,WAAWX,GAAWxshC,IAIjC8thC,IAAgBjkgC,EAAS45U,KAAO6prB,EAAgBzjgC,EAAS45U,MAAQ55U,EAASlF,QAM3E4pF,GAAU1kF,EAAS0kF,SAWR,YAAVA,IAAyB5uG,EAAE+sS,UAAY/sS,EAAE8sS,SAAYggvB,EAAgBh/gC,EAAWoc,EAASpc,YAAY,CAOtG,IAAIsghC,GAAeD,GAAgBjkgC,EAAS2jH,OAASu9N,EACjDijrB,EAAiBF,GAAgBjkgC,EAAS45U,KAAOqqrB,GAAgBjkgC,EAASlF,OAASA,GACnFopgC,GAAeC,IACf/w7B,EAAKkw7B,WAAWX,GAAW9k/B,OAAO1nC,EAAG,GAGzC4sC,EAAQn+B,KAAKob,EACjB,CAGJ,OAAO+iB,CACX,CAYA,SAASqh/B,EAAcpkgC,EAAUlqB,EAAG6tI,EAAOk94B,GAGnCzt7B,EAAKwt7B,aAAa9qhC,EAAGA,EAAE+I,QAAU/I,EAAEk3b,WAAYrpT,EAAOk94B,KAI/B,IAAvB7ggC,EAASlqB,EAAG6tI,KArVxB,SAAyB7tI,GACjBA,EAAE2nI,eACF3nI,EAAE2nI,iBAIN3nI,EAAEitG,aAAc,CACpB,CA+UYsh7B,CAAgBvuhC,GAvU5B,SAA0BA,GAClBA,EAAEs+Q,gBACFt+Q,EAAEs+Q,kBAINt+Q,EAAEm7V,cAAe,CACrB,CAiUYqzrB,CAAiBxuhC,GAEzB,CAgGA,SAASyuhC,EAAgBzuhC,GAIE,iBAAZA,EAAEitS,QACTjtS,EAAEitS,MAAQjtS,EAAE4yT,SAGhB,IAAIi6tB,EAAYD,EAAoB5shC,GAG/B6shC,IAKS,SAAV7shC,EAAEgrB,MAAmB4igC,IAAqBf,EAK9Cvv7B,EAAKox7B,UAAU7B,EA1evB,SAAyB7shC,GACrB,IAAI8N,EAAY,GAkBhB,OAhBI9N,EAAEgtS,UACFl/R,EAAUgB,KAAK,SAGf9O,EAAEogc,QACFtyb,EAAUgB,KAAK,OAGf9O,EAAE8sS,SACFh/R,EAAUgB,KAAK,QAGf9O,EAAE+sS,SACFj/R,EAAUgB,KAAK,QAGZhB,CACX,CAsdkC6ghC,CAAgB3uhC,GAAIA,GAJ1C4thC,GAAmB,EAK3B,CA6FA,SAASgB,EAAYxjrB,EAAalhV,EAAU0kF,EAAQu/6B,EAAcnpgC,GAG9Ds4E,EAAKmw7B,WAAWrirB,EAAc,IAAMx8P,GAAU1kF,EAK9C,IACI6jB,EADAg9+B,GAFJ3/qB,EAAcA,EAAYrsW,QAAQ,OAAQ,MAEf7C,MAAM,KAK7B6uhC,EAAS37gC,OAAS,EAlF1B,SAAuBy+H,EAAOxoI,EAAM6kB,EAAU0kF,GAa1C,SAASig7B,EAAkBC,GACvB,OAAO,WACHhB,EAAsBgB,IACpBnB,EAAgB9/4B,GA7B1BlrH,aAAa+qgC,GACbA,EAAcjrgC,WAAWsrgC,EAAiB,IA8BtC,CACJ,CASA,SAASgB,EAAkB/uhC,GACvBsuhC,EAAcpkgC,EAAUlqB,EAAG6tI,GAKZ,UAAXj/B,IACAg/6B,EAAmBhB,EAAoB5shC,IAK3CyiB,WAAWsrgC,EAAiB,GAChC,CArCAJ,EAAgB9/4B,GAAS,EAgDzB,IAAK,IAAIxtI,EAAI,EAAGA,EAAIgF,EAAK+J,SAAU/O,EAAG,CAClC,IACI2uhC,EADU3uhC,EAAI,IAAMgF,EAAK+J,OACG2/gC,EAAoBF,EAAkBjg7B,GAAUw+6B,EAAY/nhC,EAAKhF,EAAI,IAAIuuG,QACzGgg7B,EAAYvphC,EAAKhF,GAAI2uhC,EAAiBpg7B,EAAQi/B,EAAOxtI,EACzD,CACJ,CA0BQ4uhC,CAAc7jrB,EAAa2/qB,EAAU7ggC,EAAU0kF,IAInD7gE,EAAOq/+B,EAAYhirB,EAAax8P,GAIhCtR,EAAKkw7B,WAAWz/+B,EAAKvoC,KAAO83F,EAAKkw7B,WAAWz/+B,EAAKvoC,MAAQ,GAGzD0ohC,EAAYng/B,EAAKvoC,IAAKuoC,EAAKjgC,UAAW,CAACkd,KAAM+iB,EAAK6gE,QAASu/6B,EAAc/irB,EAAapmV,GAQtFs4E,EAAKkw7B,WAAWz/+B,EAAKvoC,KAAK2ohC,EAAe,UAAY,QAAQ,CACzDjkgC,SAAUA,EACVpc,UAAWigC,EAAKjgC,UAChB8gG,OAAQ7gE,EAAK6gE,OACbk1P,IAAKqqrB,EACLnpgC,MAAOA,EACP6oH,MAAOu9N,IAEf,CAlPA9tQ,EAAK4x7B,WAAa,SAASrC,EAAW/+gC,EAAW9N,GAC7C,IACIK,EADAk8C,EAAY2x+B,EAAYrB,EAAW/+gC,EAAW9N,GAE9CguhC,EAAa,CAAC,EACdmB,EAAW,EACXC,GAA4B,EAGhC,IAAK/uhC,EAAI,EAAGA,EAAIk8C,EAAUntC,SAAU/O,EAC5Bk8C,EAAUl8C,GAAGyjW,MACbqrrB,EAAW3uhC,KAAKmE,IAAIwqhC,EAAU5y+B,EAAUl8C,GAAG2kB,QAKnD,IAAK3kB,EAAI,EAAGA,EAAIk8C,EAAUntC,SAAU/O,EAOhC,GAAIk8C,EAAUl8C,GAAGyjW,IAAjB,CAUI,GAAIvnT,EAAUl8C,GAAG2kB,OAASmqgC,EACtB,SAGJC,GAA4B,EAG5BpB,EAAWzx+B,EAAUl8C,GAAGyjW,KAAO,EAC/BwqrB,EAAc/x+B,EAAUl8C,GAAG6pB,SAAUlqB,EAAGu8C,EAAUl8C,GAAGwtI,MAAOtxF,EAAUl8C,GAAGyjW,IAE7E,MAIKsrrB,GACDd,EAAc/x+B,EAAUl8C,GAAG6pB,SAAUlqB,EAAGu8C,EAAUl8C,GAAGwtI,OAyB7D,IAAIwh5B,EAA+B,YAAVrvhC,EAAEgrB,MAAsB6igC,EAC7C7thC,EAAEgrB,MAAQ8igC,GAAwBb,EAAYJ,IAAewC,GAC7DtB,EAAgBC,GAGpBH,EAAsBuB,GAAuC,WAAVpvhC,EAAEgrB,IACzD,EA8KAsyE,EAAKgy7B,cAAgB,SAAS7ra,EAAcv5lB,EAAU0kF,GAClD,IAAK,IAAIvuG,EAAI,EAAGA,EAAIojnB,EAAar0mB,SAAU/O,EACvCuuhC,EAAYnra,EAAapjnB,GAAI6pB,EAAU0kF,EAE/C,EAGA+96B,EAAUY,EAAe,WAAYkB,GACrC9B,EAAUY,EAAe,UAAWkB,GACpC9B,EAAUY,EAAe,QAASkB,EACtC,CAgBA5D,EAAUzvgC,UAAUs7C,KAAO,SAASrxD,EAAM6kB,EAAU0kF,GAChD,IAAItR,EAAOtiF,KAGX,OAFA3V,EAAOA,aAAgBiK,MAAQjK,EAAO,CAACA,GACvCi4F,EAAKgy7B,cAAcj0gC,KAAKiiF,EAAMj4F,EAAM6kB,EAAU0kF,GACvCtR,CACX,EAmBAut7B,EAAUzvgC,UAAU8kQ,OAAS,SAAS76Q,EAAMupG,GAExC,OADW5zF,KACC07C,KAAKr7C,KADNL,KACiB3V,EAAM,WAAY,EAAGupG,EACrD,EASAi86B,EAAUzvgC,UAAU+kD,QAAU,SAAS96D,EAAMupG,GACzC,IAAItR,EAAOtiF,KAIX,OAHIsiF,EAAKmw7B,WAAWpohC,EAAO,IAAMupG,IAC7BtR,EAAKmw7B,WAAWpohC,EAAO,IAAMupG,GAAQ,CAAC,EAAGvpG,GAEtCi4F,CACX,EASAut7B,EAAUzvgC,UAAU7J,MAAQ,WACxB,IAAI+rF,EAAOtiF,KAGX,OAFAsiF,EAAKkw7B,WAAa,CAAC,EACnBlw7B,EAAKmw7B,WAAa,CAAC,EACZnw7B,CACX,EASAut7B,EAAUzvgC,UAAU0vgC,aAAe,SAAS9qhC,EAAGsB,GAI3C,SAAK,IAAMA,EAAQwjH,UAAY,KAAKvhH,QAAQ,gBAAkB,KAI1D+phC,EAAWhshC,EAPJ0Z,KAOkBjS,UAKH,SAAnBzH,EAAQ0qH,SAAyC,UAAnB1qH,EAAQ0qH,SAA0C,YAAnB1qH,EAAQ0qH,SAAyB1qH,EAAQiuhC,kBACjH,EAKA1E,EAAUzvgC,UAAUszgC,UAAY,WAE5B,OADW1zgC,KACCk0gC,WAAWpzgC,MADZd,KACwB7L,UACvC,EAQA07gC,EAAUzj9B,KAAO,WACb,IAAIoo9B,EAAoB3E,EAAUpnhC,GAClC,IAAK,IAAI87C,KAAUiw+B,EACU,MAArBjw+B,EAAO7xB,OAAO,KACdm9/B,EAAUtr+B,GAAW,SAASA,GAC1B,OAAO,WACH,OAAOiw+B,EAAkBjw+B,GAAQzjC,MAAM0zgC,EAAmBrghC,UAC9D,CACJ,CAJoB,CAIjBowC,GAGf,EAEAsr+B,EAAUzj9B,OAGVjlE,EAAO0ohC,UAAYA,EAGkBnu7B,EAAOj9F,UACxCi9F,EAAOj9F,QAAUorhC,QA79BzB,KAk+BQ,aACI,OAAOA,CACV,+BAER,CAt+BD,CAs+BI1ohC,OAAQsB,S,6BClmDZ,SAASgshC,EAAc10xB,EAAIW,EAAcG,GACrC,IAAIE,EAAUhB,EAAG00xB,gBAIjB,GAHA10xB,EAAG20xB,aAAa3zxB,EAASL,GACzBX,EAAG20xB,aAAa3zxB,EAASF,GACzBd,EAAG40xB,YAAY5zxB,IACVhB,EAAG60xB,oBAAoB7zxB,EAAShB,EAAG80xB,aACpC,MAAM,IAAIttgC,MAAM,iCAAiCvZ,OAAO+xP,EAAG+0xB,kBAAkB/zxB,KAEjF,OAAOA,CACX,CAlCAj3P,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQu9P,cAAgBv9P,EAAQk8P,cAAgBl8P,EAAQgwhC,cAAgBhwhC,EAAQu8P,4BAA8Bv8P,EAAQ47P,UAAO,EAU7H57P,EAAQ47P,KAAO9/O,OAAOguC,IAatB9pD,EAAQu8P,4BAZR,SAAqCjB,EAAIW,EAAcG,EAAgBb,EAAgBC,GACnF,IAAIc,EAAU0zxB,EAAc10xB,EAAIW,EAAcG,GAC1Ck0xB,EAA4Bh1xB,EAAGi1xB,kBAAkBj0xB,EAAS,cAC9DhB,EAAGk1xB,wBAAwBF,GAC3Bh1xB,EAAG0id,WAAW1id,EAAG2id,aAAc1id,GAC/BD,EAAGm1xB,oBAAoBH,EAA2B,EAAGh1xB,EAAGo1xB,OAAO,EAAO,EAAG,GACzE,IAAIC,EAA4Br1xB,EAAGi1xB,kBAAkBj0xB,EAAS,cAI9D,OAHAhB,EAAGk1xB,wBAAwBG,GAC3Br1xB,EAAG0id,WAAW1id,EAAG2id,aAAczid,GAC/BF,EAAGm1xB,oBAAoBE,EAA2B,EAAGr1xB,EAAGo1xB,OAAO,EAAO,EAAG,GAClEp0xB,CACX,EAYAt8P,EAAQgwhC,cAAgBA,EAUxBhwhC,EAAQk8P,cATR,SAAuBZ,EAAIs1xB,EAAYC,GACnC,IAAIC,EAASx1xB,EAAGy1xB,aAAaH,GAG7B,GAFAt1xB,EAAGu1xB,aAAaC,EAAQD,GACxBv1xB,EAAGY,cAAc40xB,IACZx1xB,EAAG01xB,mBAAmBF,EAAQx1xB,EAAG21xB,gBAClC,MAAM,IAAInugC,MAAM,6BAA6BvZ,OAAO+xP,EAAG41xB,iBAAiBJ,KAE5E,OAAOA,CACX,EAcA9whC,EAAQu9P,cAZR,SAAuBjC,EAAI61xB,EAAgBlvhC,EAAOE,EAAQivhC,EAAWC,QAC/C,IAAdD,IAAwBA,EAAY91xB,EAAGw0O,cACzB,IAAduhjB,IAAwBA,EAAY/1xB,EAAGw0O,SAC3C,IAAIwhjB,EAAUh2xB,EAAGiC,gBAOjB,OANAjC,EAAG8C,YAAY9C,EAAGuC,WAAYyzxB,GAC9Bh2xB,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGgjd,eAAgBhjd,EAAGijd,eACtDjjd,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGkjd,eAAgBljd,EAAGijd,eACtDjjd,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGmjd,mBAAoB2yU,GACvD91xB,EAAG+id,cAAc/id,EAAGuC,WAAYvC,EAAGojd,mBAAoB2yU,GACvD/1xB,EAAGi2xB,aAAaj2xB,EAAGuC,WAAY,EAAGszxB,EAAgBlvhC,EAAOE,GAClDmvhC,CACX,C,+BCxDAjshC,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAErB,IAAIwhV,EAkBJ,SAAiC3zT,GAAO,GAAIA,GAAOA,EAAIiwE,WAAc,OAAOjwE,EAAO,GAAY,OAARA,GAAiC,WAAjBymG,EAAQzmG,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAIia,EAAQq5iB,IAA4B,GAAIr5iB,GAASA,EAAM54B,IAAI2e,GAAQ,OAAOia,EAAM14B,IAAIye,GAAQ,IAAIm3G,EAAS,CAAC,EAAOo8c,EAAwB/7kB,OAAOwY,gBAAkBxY,OAAOyrC,yBAA0B,IAAK,IAAI/qC,KAAO8nB,EAAO,GAAIxoB,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAK9nB,GAAM,CAAE,IAAIkhH,EAAOm6d,EAAwB/7kB,OAAOyrC,yBAAyBjjB,EAAK9nB,GAAO,KAAUkhH,IAASA,EAAK73G,KAAO63G,EAAK33G,KAAQjK,OAAOwY,eAAemnH,EAAQj/H,EAAKkhH,GAAgB+d,EAAOj/H,GAAO8nB,EAAI9nB,EAAQ,CAAoE,OAAhEi/H,EAAgB,QAAIn3G,EAASia,GAASA,EAAMx4B,IAAIue,EAAKm3G,GAAkBA,CAAQ,CAlBhuBq8c,CAAwB,EAAQ,QAEzCuH,EAAal1d,EAAuB,EAAQ,OAE5C895B,EAAc,EAAQ,OAEtBx1U,EAAe,EAAQ,OAEvBy1U,EAAU/95B,EAAuB,EAAQ,QAEzC6uiB,EAAW,EAAQ,OAEnB6sG,EAAa17oB,EAAuB,EAAQ,QAEhD,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAE,QAAWA,EAAO,CAEhG,SAASszjB,IAA6B,GAAuB,mBAAZ72f,QAAwB,OAAO,KAAM,IAAIxiD,EAAQ,IAAIwiD,QAA6F,OAAlF62f,EAA2B,WAAsC,OAAOr5iB,CAAO,EAAUA,CAAO,CAIjN,SAASwsF,EAAQzmG,GAAmV,OAAtOymG,EAArD,mBAAXv0H,QAAoD,iBAApBA,OAAO0d,SAAmC,SAAiBoQ,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX9tB,QAAyB8tB,EAAI7R,cAAgBjc,QAAU8tB,IAAQ9tB,OAAO4b,UAAY,gBAAkBkS,CAAK,EAAYymG,EAAQzmG,EAAM,CAEzX,SAASo+E,IAA2Q,OAA9PA,EAAW5mG,OAAOC,QAAU,SAAUgE,GAAU,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAAE,IAAIksB,EAASpd,UAAU9O,GAAI,IAAK,IAAImF,KAAO+mB,EAAcznB,OAAOsW,UAAUxU,eAAeyU,KAAKkR,EAAQ/mB,KAAQuD,EAAOvD,GAAO+mB,EAAO/mB,GAAU,CAAE,OAAOuD,CAAQ,EAAU2iG,EAAS5vF,MAAMd,KAAM7L,UAAY,CAI5T,SAAS0lH,EAAkB9rH,EAAQqkC,GAAS,IAAK,IAAI/sC,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,IAAK,CAAE,IAAIkzE,EAAanmC,EAAM/sC,GAAIkzE,EAAW7sC,WAAa6sC,EAAW7sC,aAAc,EAAO6sC,EAAWthC,cAAe,EAAU,UAAWshC,IAAYA,EAAW9sC,UAAW,GAAM3hC,OAAOwY,eAAevU,EAAQwqE,EAAW/tE,IAAK+tE,EAAa,CAAE,CAY5T,SAASixvB,EAAgB7lvB,GAAwJ,OAAnJ6lvB,EAAkB1/zB,OAAOmW,eAAiBnW,OAAO2rC,eAAiB,SAAyBkuC,GAAK,OAAOA,EAAEzjE,WAAapW,OAAO2rC,eAAekuC,EAAI,EAAU6lvB,EAAgB7lvB,EAAI,CAI5M,SAASyn0B,EAAgBzn0B,EAAGxjE,GAA+G,OAA1Gir4B,EAAkBth5B,OAAOmW,gBAAkB,SAAyB0jE,EAAGxjE,GAAsB,OAAjBwjE,EAAEzjE,UAAYC,EAAUwjE,CAAG,EAAUyn0B,EAAgBzn0B,EAAGxjE,EAAI,CAsKzK1b,EAAiB,QApKW,SAA+B4iqB,GACzD,IACIs5C,GADmB,EAAIkzD,EAAoB,SAAGxsG,GACfs5C,YAS/BmzD,EAA+B,SAAUqiR,IAf/C,SAAmBjp6B,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7sG,UAAU,sDAAyD4sG,EAAS9sG,UAAYtW,OAAO4W,OAAOysG,GAAcA,EAAW/sG,UAAW,CAAEK,YAAa,CAAE9a,MAAOunH,EAAUzhF,UAAU,EAAMwL,cAAc,KAAek2E,GAAYi+xB,EAAgBl+xB,EAAUC,EAAa,CAgB5XC,CAAU0mpB,EAAiBqiR,GAE3B,IA9BkBxu6B,EAAaC,EAEb8htB,EA4Bd1lzB,GA5Bc0lzB,EA4BQ51D,EA5BU,WAAc,IAAsC3gwB,EAAlCy2zB,EAAQJ,EAAgBE,GAAkB,GAMpG,WAAuC,GAAuB,oBAAZl0xB,UAA4BA,QAAQ23iB,UAAW,OAAO,EAAO,GAAI33iB,QAAQ23iB,UAAUlyX,KAAM,OAAO,EAAO,GAAqB,mBAAVpmL,MAAsB,OAAO,EAAM,IAAiF,OAA3EhsB,KAAKzI,UAAUpZ,SAASqZ,KAAKm1B,QAAQ23iB,UAAUtkkB,KAAM,GAAI,WAAa,KAAY,CAAM,CAAE,MAAO7jB,GAAK,OAAO,CAAO,CAAE,CAN3NoxhC,GAA6B,CAAE,IAAIlxkB,EAAYskX,EAAgBxpzB,MAAMS,YAAatN,EAASqiC,QAAQ23iB,UAAUy8O,EAAOz1zB,UAAW+wc,EAAY,MAAS/xc,EAASy2zB,EAAM9ozB,MAAMd,KAAM7L,WAAc,OAErS,SAAoCmuF,EAAMjiF,GAAQ,OAAIA,GAA2B,WAAlB04G,EAAQ14G,IAAsC,mBAATA,EAEpG,SAAgCiiF,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIwkK,eAAe,6DAAgE,OAAOxkK,CAAM,CAFnBukK,CAAuBvkK,GAAtCjiF,CAA6C,CAF4H2nU,CAA2BhoU,KAAM7M,EAAS,GA8BlV,SAAS2gwB,EAAgB1huB,GACvB,IAAIluB,GArCV,SAAyB7O,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAuClJwnG,CAAgB9nG,KAAM8zvB,GAEtB5vvB,EAAQF,EAAO3D,KAAKL,KAAMoyB,GAC1B,IAAIs9J,EAAQt9J,EAAMs9J,MACdziF,EAAU76E,EAAM66E,QAChB87xB,EAAoB322B,EAAM222B,kBAC1BstI,EAAuBjk/B,EAAMik/B,qBACjCnygC,EAAMoygC,kBAAmB,EAEzBpygC,EAAMqlrB,YAAc75f,EAAMi0L,UAAU,WAMlC,IAAI4ypB,GAAgCnk/B,EAAMok/B,sBAEtCh2S,EAAe7/B,EAAYjxgB,EAAM/7F,YACjC8i7B,EAAkBj2S,EAAa/1mB,SAC/Bis5B,EAAgBl2S,EAAalzhB,OAC7Bqp0B,EAAcn2S,EAAal0uB,KAC3BsqhC,EAAep2S,EAAa7wuB,MAG5BknhC,EAAoB5p6B,EAAQhkB,SAC5B6t7B,EAAoBD,EAAkBps5B,SACtCss5B,EAAkBF,EAAkBvp0B,OACpC0p0B,EAAgBH,EAAkBvqhC,KAClC2qhC,EAAiBJ,EAAkBlnhC,OAEnC4mhC,GAAyD,SAAzBnk/B,EAAM66E,QAAQrZ,QAAsBkj7B,IAAsBL,GAAmBM,IAAoBL,GAAiBM,IAAkBL,IAAgB,EAAIT,EAAiB,SAAGU,EAAcK,EAAgBZ,KAC5OnygC,EAAMoygC,kBAAmB,EAEzBrp6B,EAAQn5G,KAAK,CACX22H,SAAUgs5B,EACVnp0B,OAAQop0B,EACRpqhC,KAAMqqhC,EACNhnhC,MAAOinhC,IAGb,GAEA,IAAIM,EAAuB,SAA8Bju7B,EAAU2K,GACjE,IAAI4zjB,EAAmBrzpB,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,IAAmBA,UAAU,GAGjF+P,EAAMoygC,iBAGTpygC,EAAMoygC,kBAAmB,EAFzBvtI,EAAkB9/yB,EAAU2K,EAAQ4zjB,EAIxC,EAYA,OATAtjpB,EAAM+lX,SAAWh9Q,EAAQ1qE,OAAO20+B,GAE3B9k/B,EAAM+k/B,cAITD,EAAqBjq6B,EAAQhkB,SAAUgkB,EAAQrZ,QAAQ,GAGlD1vF,CACT,CA4BA,OA/HkByjG,EAqGLmspB,GArGkBlspB,EAqGD,CAAC,CAC7Bp9G,IAAK,uBACL7E,MAAO,WACLqa,KAAKiqX,WACLjqX,KAAKuprB,aACP,GACC,CACD/+rB,IAAK,SACL7E,MAAO,WACL,IAAImpV,EAAc9uU,KAAKoyB,MACnBgl/B,EAAatosB,EAAYsosB,WACzBnq6B,EAAU6hO,EAAY7hO,QACtBuK,EAAWs3N,EAAYt3N,SAI3B,OAAI4/5B,EACkBnxsB,EAAgB,QAAEl5T,cAAck5T,EAAgB,QAAEqX,SAAU,KAAM9lO,GAGpEyuN,EAAgB,QAAEl5T,cAAc0zrB,EAAa2zK,OAAQ,CACvEnnwB,QAASA,GACRuK,EACL,MA5HwEqC,EAAkBlS,EAAYvnG,UAAWwnG,GA+H5GkspB,CACT,CArGmC,CAqGjC7tb,EAAOuX,eAETs2a,EAAgBp6iB,UAAY,CAC1BhqB,MAAO29Y,EAAoB,QAAE73d,MAAM,CACjC7hB,SAAU05e,EAAoB,QAAE34e,KAAKmgB,WACrC8uQ,UAAW0pN,EAAoB,QAAE34e,KAAKmgB,aACrCA,WACH5H,QAASoge,EAAoB,QAAE73d,MAAM,CACnC5hB,OAAQy5e,EAAoB,QAAEvplB,OAAO+wH,WACrCtyE,OAAQ8qiB,EAAoB,QAAE34e,KAAKmgB,WACnC5rB,SAAUokf,EAAoB,QAAE/hiB,OAAOupE,WACvC/gH,KAAMu5kB,EAAoB,QAAE34e,KAAKmgB,aAChCA,WACHwzQ,SAAUglN,EAAoB,QAAEvplB,OAChC0zH,SAAU61d,EAAoB,QAAE93d,UAAU,CAAC83d,EAAoB,QAAE34e,KAAM24e,EAAoB,QAAEtmlB,OAC7Fgi5B,kBAAmB17T,EAAoB,QAAE34e,KAAKmgB,WAC9Csi6B,aAAc9pc,EAAoB,QAAEr4d,KACpCwh6B,sBAAuBnpc,EAAoB,QAAEr4d,KAC7Cqh6B,qBAAsBhpc,EAAoB,QAAE34e,KAC5C0i7B,WAAY/pc,EAAoB,QAAEr4d,MAGpC,IAQIqi6B,EAA6B,SAAoCjl/B,GACnE,IAAIgyM,EAAUhyM,EAAMjJ,SAAW8s/B,EAAY59I,kBAE3C,GAAe,MAAXj0pB,EACF,KAAM,mCAGR,OAAoB6hG,EAAgB,QAAEl5T,cAAcq3N,EAAQ65G,SAAU,KAAM,SAAU7yV,GACpF,IAAIskM,EAAQtkM,EAAKskM,MACjB,OAAoBu2I,EAAgB,QAAEl5T,cAAc+mvB,EAAiBpjqB,EAAS,CAC5Eg/F,MAAOA,GACNt9J,GACL,EACF,EAKA,OAHAil/B,EAA2B39zB,UAAY,CACrCvwL,QAASkkjB,EAAoB,QAAE/hiB,SAE1B,EAAI2q+B,EAAY7vgC,SAAS,KA1BP,SAA4BstF,GACnD,MAAO,CACLq1yB,kBAAmB,SAA2B9/yB,EAAU2K,EAAQ4zjB,GAC9D,OAAO9zjB,GAAS,EAAIszjB,EAAS+hP,mBAAmB9/yB,EAAU2K,EAAQ4zjB,GACpE,EAEJ,EAoBO,CAAmD6vX,EAC5D,C,+BCnNA,IAAI3t7B,EAAI,EAAQ,OACZi2B,EAAU,EAAQ,OAClBosI,EAA6B,qBAC7BhG,EAA2B,EAAQ,OACnCpY,EAAa,EAAQ,OACrBqY,EAAa,EAAQ,OACrBG,EAAgB,EAAQ,OAExBC,EAAyBL,GAA4BA,EAAyB3lP,UAWlF,GAPAspF,EAAE,CAAE37F,OAAQ,UAAWm3B,OAAO,EAAM27E,OAAQkrJ,EAA4B1F,MAAM,GAAQ,CACpF,MAAS,SAAU+H,GACjB,OAAOpuP,KAAKnJ,UAAKC,EAAWs3P,EAC9B,KAIGzuI,GAAWqmI,EAAWD,GAA2B,CACpD,IAAIxhN,EAASopM,EAAW,WAAWvtO,UAAiB,MAChDgmP,EAA8B,QAAM7hN,GACtC4hN,EAAcC,EAAwB,QAAS7hN,EAAQ,CAAEkgF,QAAQ,GAErE,C,sLCpBI6y5B,EAAuB,aAC3B,SAAUlshC,EAAMynH,GACd,IAAIC,EAAW1nH,EAAK0nH,SAChBhJ,EAAY1+G,EAAK0+G,UACjB0N,EAAWpsH,EAAKosH,SAChBiyH,EAAUr+O,EAAKs+O,GACfC,OAAwB,IAAZF,EAAqB,MAAQA,EACzCr3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,YAAa,WAAY,OAGtF,OADA0nH,GAAW,QAAmBA,EAAU,YACpB,gBAAoB62H,GAAW,OAAS,CAAC,EAAGv3M,EAAO,CACrEygF,IAAKA,EACL/I,UAAW,IAAWA,EAAWgJ,KAC/B0E,EACN,GACA8/5B,EAAQjv1B,YAAc,UACtB,U,0BCdIgxB,EAAe,CACjBrrK,UAAU,EACV07L,GAAIu0a,EAAA,GAEFs5X,EAAuB,aAAiB,SAAUnshC,EAAMynH,GAC1D,IAAIC,EAAW1nH,EAAK0nH,SAChB9kE,EAAW5iD,EAAK4iD,SAChB87D,EAAY1+G,EAAK0+G,UACjB7b,EAAO7iG,EAAK6iG,KACZqnO,EAAWlqU,EAAKkqU,SAChBC,EAAWnqU,EAAKmqU,SAChB7rF,EAAKt+O,EAAKs+O,GACVt3M,GAAQ,OAA8BhnC,EAAM,CAAC,WAAY,WAAY,YAAa,OAAQ,WAAY,WAAY,OAGtH,OADA0nH,GAAW,QAAmBA,EAAU,YACpB,gBAAoBuiN,EAAAv8S,GAAiB,OAAS,CAAC,EAAGsZ,EAAO,CAC3E67D,KAAMA,EACN4kB,IAAKA,EACLyiN,SAAUA,EACV5rF,GAAIA,EACJ17L,SAAUA,EACVunR,SAAUA,EACVzrN,UAAW,IAAWA,EAAWgJ,EAAU9kE,GAAY,cAE3D,GACAup+B,EAAQlv1B,YAAc,UACtBkv1B,EAAQl+zB,aAAeA,EACvB,UCtBA,IAIIm+zB,EAAmB,aAAiB,SAAU95Z,EAAmB7qgB,GACnE,IAAI4k6B,EAkBAC,EACAzhJ,EAjBAzpX,GAAmB,QAAgBkxG,EAAmB,CACxD1nT,UAAW,aAET02M,EAAsBF,EAAiB9iS,GACvCA,OAA6B,IAAxBgjS,EAAiC,MAAQA,EAC9C82S,EAAkBh3S,EAAiB15Z,SACnCI,EAAUs5Z,EAAiBt5Z,QAC3BzkF,EAAO+9e,EAAiB/9e,KACxBkp/B,EAAUnrgB,EAAiBmrgB,QAC3BhrgB,EAASH,EAAiBG,OAC1B7ia,EAAY0ia,EAAiB1ia,UAC7B0N,EAAWg1Z,EAAiBh1Z,SAC5Bw+M,EAAYw2M,EAAiBx2M,UAC7B5jS,GAAQ,OAA8Bo6e,EAAkB,CAAC,KAAM,WAAY,UAAW,OAAQ,UAAW,SAAU,YAAa,WAAY,cAE5I15Z,GAAW,QAAmB0wsB,EAAiB,OAG/C0nF,GAAW,EACX0sI,GAAgB,IAAA7tyB,YAAW8tyB,EAAA,GAC3B7hJ,GAAc,IAAAjspB,YAAWmspB,EAAA,GAS7B,OAPI0hJ,GACFF,EAAiBE,EAAc9k6B,SAC/Bo4xB,EAAqB,MAAVv+X,GAAwBA,GAC1BqpX,IACTC,EAAqBD,EAAYC,oBAGf,gBAAoBxyE,EAAA3qyB,GAAa,OAAS,CAC5D4wN,GAAIA,EACJ72H,IAAKA,EACLmjN,UAAWA,EACXlsN,UAAW,IAAWA,GAAY2t6B,EAAc,CAAC,EAAGA,EAAY3k6B,IAAao4xB,EAAUusI,EAAYC,EAAiB,QAAUxsI,EAAUusI,EAAYxhJ,EAAqB,IAAM/ixB,KAAa+ixB,EAAoBwhJ,EAAY3k6B,EAAW,IAAMI,KAAaA,EAASuk6B,EAAY3k6B,EAAW,SAAWrkF,EAAMgp/B,EAAY3k6B,EAAW,cAAgB6k6B,EAASF,KAC1Vrl/B,GAAQolF,EACb,GACAgg6B,EAAInv1B,YAAc,MAClBmv1B,EAAIn+zB,aA5Ce,CACjBs+zB,SAAS,EACTlp/B,MAAM,GA2CR+o/B,EAAIvqgB,KAAO,EACXuqgB,EAAI35Z,KAAO,EACX,U,+CC/BA,SAASi6Z,EAAUpwhC,GACjB,IAAIqwhC,EAAerwhC,EAAM0qC,MACrBkkB,EAAQyh+B,EAAazh+B,MACrBg/Q,EAAWyitB,EAAazitB,SACxBtnR,EAAW+p+B,EAAa/p+B,SACxBgq+B,EAAeD,EAAaC,aAC5Bj6gC,EAAKg6gC,EAAah6gC,GAEtB,OAAa,MAATu4C,EACK,KAGW,gBAAoB,EAAS,CAC/CozL,GAAI,EACJ4rF,SAAUA,EACVtnR,SAAUA,EACVjwC,GAAIA,EACJ+rG,UAAWku6B,GACV1h+B,EACL,CAEA,IAAI2h+B,EAAO,SAAc7l/B,GACvB,IAAIo6e,GAAmB,QAAgBp6e,EAAO,CAC5C4jS,UAAW,aAETj4T,EAAKyugB,EAAiBzugB,GACtBw3T,EAAWi3M,EAAiBj3M,SAC5BrmR,EAAas9d,EAAiBt9d,WAC9B+vL,EAAeutS,EAAiBvtS,aAChCC,EAAgBstS,EAAiBttS,cACjC1nH,EAAWg1Z,EAAiBh1Z,SAC5B0g6B,EAAwB1rgB,EAAiBx2M,UACzCA,OAAsC,IAA1BkitB,EA1ClB,SAA6B1g6B,GAC3B,IAAI2g6B,EAMJ,OALA,OAAQ3g6B,EAAU,SAAU9vH,GACF,MAApBywhC,IACFA,EAAmBzwhC,EAAM0qC,MAAMkjS,SAEnC,GACO6itB,CACT,CAkCqDC,CAAoB5g6B,GAAY0g6B,EAC/E58f,GAAkB,OAA8B9O,EAAkB,CAAC,KAAM,WAAY,aAAc,eAAgB,gBAAiB,WAAY,cAEpJ,OAAoB,gBAAoB6rgB,EAAA,EAAc,CACpDt6gC,GAAIA,EACJi4T,UAAWA,EACXT,SAAUA,EACVrmR,WAAYA,EACZ+vL,aAAcA,EACdC,cAAeA,GACD,gBAAoB,GAAK,OAAS,CAAC,EAAGo8S,EAAiB,CACrEh9gB,KAAM,UACNorO,GAAI,SACF,OAAIlyH,EAAUsg6B,IAA0B,gBAAoBQ,EAAA,EAAY,MAAM,OAAI9g6B,EAAU,SAAU9vH,GACxG,IAAImoV,GAAa,OAAS,CAAC,EAAGnoV,EAAM0qC,OAKpC,cAHOy9S,EAAWv5R,aACXu5R,EAAW7hS,gBACX6hS,EAAWmosB,aACE,gBAAoBtvX,EAAA,EAAS74U,EACnD,IACF,EAEAoosB,EAAK5+zB,aAvEc,CACjBnmG,QAAS,OACT+rH,cAAc,EACdC,eAAe,GAqEjB+4yB,EAAK5v1B,YAAc,OACnB,S,+BCpFAv+L,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAGtD,IAAIg8G,EAAW,EAAQ,OACnBoU,EAAQ,EAAQ,OAChB4vZ,EAAU,EAAQ,OAClBxmM,EAAiB,EAAQ,OACzBt7E,EAAc,EAAQ,OACtBqnX,EAAe,EAAQ,OACvB9rS,EAAc,EAAQ,MACtBwmM,EAAY,EAAQ,OACpB2ke,EAAW,EAAQ,OACnBnjrB,EAAQvjE,EAAYqoX,gBAAgB9pf,KACpCm25B,EAAY,CAACnxtB,EAAMkpT,MAAOlpT,EAAMipT,MAChCmoa,EAAc,CAACpxtB,EAAMkpT,OAEzB7rnB,EAAQg0hC,sBAAwB,kBAWhC,IAAI93sB,EAAgC,WAChC,SAASA,EAAev5P,GACpBpnE,KAAKonE,MAAQA,CACjB,CA0IA,OAxIAu5P,EAAevgU,UAAUqutB,UAAY,WACjC,OAAOzutB,KAAKonE,MAAM98E,OAAO,SAAUoL,EAAK3O,GAAQ,OAAO2O,EAAI1H,OAAOjH,EAAKm6V,YAAYnuV,IAAI,SAAUgnB,GAAK,OAAOA,EAAE9V,KAAO,GAAK,EAAG,IAAI3Z,OAAOq3G,EAASi7sB,MAAO,GAC7J,EAOAj8e,EAAevgU,UAAU80/B,cAAgB,SAAUjx/B,GAC/C,IAAIozN,EAAWr3N,KAAKonE,MAAMr0E,IAAI,SAAUhM,GAAQ,OAAOA,EAAKm6V,WAAa,GACpE52V,OAAOq3G,EAASi0H,QAAS,IACzB3kO,OAAO,SAAU8oB,GAAK,OAAOA,EAAE9V,QAAUA,CAAO,GACrD,OAAO09F,EAAS+yH,KAAK2C,EACzB,EAEAspG,EAAevgU,UAAU8lgB,UAAY,SAAUQ,GAC3C,IAAI3/gB,EAAOiZ,KAAKumgB,SAASG,GACzB,OAAOA,EAAWR,UAAUn/gB,EAAK4I,MACrC,EAwBAgxU,EAAevgU,UAAU295B,WAAa,SAAUpu6B,GAC5C,OAAO,IAAIgxU,EAAevB,EAAY5qG,UAAUiB,QAAQz1N,KAAKonE,MAAO,SAAUrgF,GAAQ,OAAOA,EAAK4I,QAAUA,CAAO,GACvH,EAgBAgxU,EAAevgU,UAAU2igC,eAAiB,SAAU2V,EAAgB/ohC,GAChE,IAAI5I,EAAO46G,EAAS9mG,KAAKmF,KAAKonE,MAAO2uC,EAAM6B,OAAO,QAASjoH,IACvDtF,EAAOquhC,EAAe3lhC,IAAI,SAAUgnB,GAAK,OAAOA,EAAE9V,KAAO,GAC7Dld,EAAKm6V,YAAcn6V,EAAKm6V,YAAYjwV,OAAO,SAAU8oB,GAAK,OAAkC,IAA3B1vB,EAAK9B,QAAQwxB,EAAE9V,MAAe,GAAGjW,OAAO0qhC,EAC7G,EAQA/3sB,EAAevgU,UAAUskG,YAAc,SAAU0d,EAAMuwM,GACnD,IAAIzuT,EAAQlE,UACC,IAAToiH,IAAmBA,EAAO,QAE9B,IAGIu25B,GAHah36B,EAAS4zH,QAAQgjzB,EAAWn25B,GAAQA,EAAO,UAG1ByhI,EAAYqoX,gBAAgB9pf,KAAKkuf,MAAQkoa,EAAcD,EAEzF5ygB,EAAQpxY,MAAMqk5B,iBAAiB54gC,KAAKonE,MAAOg7C,EAAMuwM,GACjD,IAAIkmtB,EAAgB,SAAUC,EAAcC,GACxC,OAAO,SAAUrygB,GACb,OAAO/ka,EAAS4zH,QAAQujzB,EAAc50gC,EAAMgigB,UAAUQ,GAAYqygB,GACtE,CACJ,EAGI50+B,EAAWnkC,KAAKonE,MAAM98E,OAAO,SAAUoL,EAAK3O,GAC5C,IAAIiyhC,EAAkBjyhC,EAAKm6V,YAAYjwV,OAAO4nhC,EAAcF,EAAc,SACtEM,EAASD,EAAgB/nhC,OAAO4nhC,EAAc,CAAC,UAAW,UAC1D30+B,EAAO80+B,EAAgB/nhC,OAAO8kH,EAAMinH,IAAI67yB,EAAc,CAAC,UAAW,WAElE96G,EAAa755B,EAAM655B,WAAWh36B,EAAK4I,OACnCkhrB,EAAY,SAAU92pB,GAAK,OAAOA,EAAElmB,IAAIkq6B,EAAYprmB,GACnD97T,KAAK,SAAUlR,GAAS,MAAO,CAAGse,MAAO8V,EAAE9V,MAAOte,MAAOA,EAAU,EAAI,EAE5E,OADAszhC,EAAOjnhC,QAAQ6+qB,GACRn7qB,EAAI1H,OAAOk2C,EAAKnxC,IAAI89qB,GAC/B,EAAG,IAEH,OAAO1xW,EAAegC,SAASh/M,GAAGr8E,IAAI3B,EAC1C,EACAw8R,EAAevgU,UAAUi2H,SAAW,WAChC,OAAOr2H,KAAKk5gC,YAAcl5gC,KAAKk5gC,UAAY,IAAIC,EAAen5gC,MAClE,EACA2gU,EAAevgU,UAAUmmgB,SAAW,SAAUG,GAC1C,OAAO/ka,EAAS9mG,KAAKmF,KAAKonE,MAAO,SAAUrgF,GAAQ,OAAO46G,EAAS4zH,QAAQxuO,EAAKm6V,YAAawlL,EAAa,EAC9G,EAMA/lM,EAAevgU,UAAUsza,gBAAkB,SAAUgzF,GACjD,IAAIxigB,EAAQlE,KACRjZ,EAAOiZ,KAAKumgB,SAASG,GAIrB0ygB,GADUh6sB,EAAY5qG,UAAUiB,QAAQz1N,KAAKonE,MAAO,SAAU7gF,GAAK,OAAOA,IAAMQ,CAAM,IAAMiZ,KAAKonE,OAEhG98E,OAAO,SAAUoL,EAAKo3a,GAAS,OAAOp3a,EAAI1H,OAAO8+a,EAAM5rF,YAAc,EAAG,IACxEjwV,OAAO,SAAUmzC,GAAO,OAAOA,IAAQsie,CAAY,GAWxD,OAAOA,EAAWxwU,KAAKnjM,IAVH,SAAUkR,GAC1B,IAAIozN,EAAW+hzB,EAAqBnohC,OAAO,SAAU8oB,GAAK,OAAOA,EAAE9V,QAAUA,CAAO,GACpF,GAAIozN,EAASjjO,OACT,OAAOutG,EAAS+yH,KAAK2C,GACzB,IAAIgizB,EAAen1gC,EAAMmyH,WAAWyjZ,UAAU71gB,GAC9C,GAAIsm+B,EAASt22B,YAAYol5B,GACrB,MAAM,IAAI9xgC,MAAM,8CAAgDq+f,EAAUh8f,UAAU3F,IAExF,OAAO,IAAIinmB,EAAanlG,WAAW9hgB,EAAO,WAAc,OAAOo1gC,CAAc,EAAG,GAAIA,EACxF,EAEJ,EACO14sB,CACX,CA9ImC,GA+InCl8U,EAAQk8U,eAAiBA,EACzB,IAAIw4sB,EAAgC,WAChC,SAASA,EAAehw/B,GACpBnpB,KAAKmpB,QAAUA,EACfnpB,KAAKqmD,OAASrmD,KAAKnM,IAAIpP,EAAQg0hC,wBAA0Bt5sB,EAAegC,SAASh7M,SACrF,CAuBA,OAtBAgz5B,EAAe/4gC,UAAUvM,IAAM,SAAUoQ,GACrC,IAAIyigB,EAAa1mgB,KAAKmpB,QAAQ+r+B,cAAcjx/B,GAC5C,GAAIyigB,EAAY,CACZ,GAAiD,WAA7C1mgB,KAAKmpB,QAAQ+8e,UAAUQ,GAAY7gb,MACnC,OAAO6gb,EAAW7ygB,IAAImM,KAAKmpB,SAE/B,IAAKu9e,EAAWpie,SACZ,MAAM,IAAI/8B,MAAM,wCAA0Cq+f,EAAUh8f,UAAU88f,EAAWzigB,QAE7F,OAAOyigB,EAAW3wgB,IACtB,CACA,OAAOiK,KAAK85gB,UAAU71gB,EAC1B,EACAk1gC,EAAe/4gC,UAAUk5gC,SAAW,SAAUr1gC,GAC1C,IAAIyigB,EAAa1mgB,KAAKmpB,QAAQ+r+B,cAAcjx/B,GAC5C,OAAIyigB,EACOA,EAAW7ygB,IAAImM,KAAKmpB,SACxBg2S,EAAegC,SAASh/M,GAAGC,KAAKpiH,KAAKqmD,OAAOxyD,IAAIoQ,GAC3D,EACAk1gC,EAAe/4gC,UAAU05gB,UAAY,SAAU71gB,GAC3C,OAAOjE,KAAKqmD,QAAUrmD,KAAKqmD,OAAOxyD,IAAIoQ,EAC1C,EACOk1gC,CACX,CA5BmC,E,kBC5KnC,IAAII,EAAY,EAAQ,OACpBxpgC,EAAU,EAAQ,OAkBtB2xE,EAAOj9F,QALP,SAAwB6mD,EAAQyzK,EAAUm3X,GACxC,IAAI/ilB,EAAS4rN,EAASzzK,GACtB,OAAOv7B,EAAQu7B,GAAUn4C,EAASomhC,EAAUpmhC,EAAQ+ilB,EAAY5qiB,GAClE,C,yBCRQ,SAAWzqD,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FC,MAC9F,KAEJC,YAAa,gEAAgED,MAAM,KACnFE,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,sCAAsCH,MAAM,KAC3DI,YAAa,2BAA2BJ,MAAM,KAC9CM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVS,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNC,EAAG,oBACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,cACHC,GAAI,aACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERM,uBAAwB,gBACxBC,QAAS,UACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzDyCC,CAAQ,EAAQ,O,+BCJ1DuF,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAGT,IAEI6zhC,EAAcrh6B,EAFD,EAAQ,QAMrBsh6B,EAAiBth6B,EAFD,EAAQ,QAI5B,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CAE9F7tB,EAAA,QAAkB,SAAUkL,EAAOqz6B,EAAUpv0B,GAC3C,IAAI8l7B,EAAe5vhC,OAAOO,KAAK246B,GAE/B,IAAK02G,EAAatlhC,OAChB,MAAO,gIAGT,IAAIkwG,GAAY,EAAIm16B,EAAej37B,SAASoR,GAE5C,GAAI4l7B,EAAYh37B,QAAQuzT,aAAeyjoB,EAAYh37B,QAAQuzT,YAAYpmZ,IAAU6phC,EAAYh37B,QAAQgzT,SAAS9C,WAAW/iZ,GACvH,MAAO,OAAS20G,EAAY,2IAA6Io16B,EAAax7gC,KAAK,QAAU,KAGvM,IAAIy7gC,EAA+BhqhC,EAAMg/Y,QAAQ0D,SAASvuL,UAAU7yN,OAAO,SAAUsC,GACnF,OAAQyv6B,EAASp36B,eAAe2H,EAClC,GAEA,OAAIomhC,EAA6BvlhC,OAAS,EACjC,eAAyD,IAAxCulhC,EAA6BvlhC,OAAe,WAAa,cAAgB,KAAOulhC,EAA6Bz7gC,KAAK,QAAU,cAAgBomG,EAAY,wEAA0Eo16B,EAAax7gC,KAAK,QAAU,4CAGjR,IACT,EAEAwjF,EAAOj9F,QAAUA,EAAiB,O,yBC7B1B,SAAW5D,GAAU,aAYzB,SAASwgX,EAAuBp+T,EAAQw+E,EAAej3H,GAUnD,MAAY,MAARA,EACOi3H,EAAgB,SAAW,SAE3Bx+E,EAAS,KArBFhF,GAqB6BgF,EApB3Cq+T,EAQS,CACTp+W,GAAIu+H,EAAgB,yBAA2B,yBAC/Cr+H,GAAIq+H,EAAgB,sBAAwB,sBAC5Cn+H,GAAI,iBACJE,GAAI,gBACJq1J,GAAI,uBACJn1J,GAAI,uBACJE,GAAI,gBAKgC4G,GApBvBtJ,MAAM,KAChB+8C,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCqjU,EAAM,GACNrjU,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAChEqjU,EAAM,GACNA,EAAM,IANlB,IAAsBrjU,EACdqjU,CAsBR,CACA,IAAI7sC,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMK5zU,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,CACJu9C,OAAQ,oFAAoFt9C,MACxF,KAEJk+O,WACI,kFAAkFl+O,MAC9E,MAGZC,YAAa,CAETq9C,OAAQ,gEAAgEt9C,MACpE,KAEJk+O,WACI,gEAAgEl+O,MAC5D,MAGZE,SAAU,CACNg+O,WACI,gEAAgEl+O,MAC5D,KAERs9C,OAAQ,gEAAgEt9C,MACpE,KAEJm+O,SAAU,iDAEdh+O,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1CuzU,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAGlBC,YACI,2MAGJK,iBACI,2MAGJC,kBACI,wHAGJC,uBACI,6FACJzzU,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUomB,GAChB,GAAIA,EAAI1kB,SAAW4b,KAAK5b,OAcpB,OAAmB,IAAf4b,KAAKs9E,MACE,oBAEA,mBAhBX,OAAQt9E,KAAKs9E,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BASvB,EACA16F,SAAU,SAAUkmB,GAChB,GAAIA,EAAI1kB,SAAW4b,KAAK5b,OAcpB,OAAmB,IAAf4b,KAAKs9E,MACE,oBAEA,mBAhBX,OAAQt9E,KAAKs9E,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BASvB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,mBACHC,GAAIm+W,EACJl+W,EAAGk+W,EACHj+W,GAAIi+W,EACJh+W,EAAG,MACHC,GAAI+9W,EACJ99W,EAAG,OACHC,GAAI69W,EACJznV,EAAG,SACHi/H,GAAIwoN,EACJ59W,EAAG,QACHC,GAAI29W,EACJ19W,EAAG,MACHC,GAAIy9W,GAERt/W,cAAe,wBACfC,KAAM,SAAUC,GACZ,MAAO,iBAAiBC,KAAKD,EACjC,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,QAEf,EACA8B,uBAAwB,mBACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,EAEnB,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAvNyCC,CAAQ,EAAQ,O,+BCR3C,SAASw0H,EAAQzmG,GAG9B,OAAOymG,EAAU,mBAAqBv0H,QAAU,iBAAmBA,OAAO0d,SAAW,SAAUoQ,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB9tB,QAAU8tB,EAAI7R,cAAgBjc,QAAU8tB,IAAQ9tB,OAAO4b,UAAY,gBAAkBkS,CAC1H,EAAGymG,EAAQzmG,EACb,C,yCCCQ,SAAWzxB,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFF,EAAOG,aAAa,QAAS,CACpCC,OAAQ,6EAA6EC,MACjF,KAEJC,YACI,6EAA6ED,MACzE,KAERE,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,cAAe,MACfC,KAAM,SAAUC,GACZ,MAAO,MAAQA,CACnB,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,IAEA,GAEf,EACAG,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,OACHC,GAAI,WACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERC,SAAU,SAAUC,GAChB,OAAOA,EACFC,QAAQ,gBAAiB,SAAUC,GAChC,OAAOjD,EAAUiD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAE,WAAY,SAAUH,GAClB,OAAOA,EACFC,QAAQ,MAAO,SAAUC,GACtB,OAAOlD,EAAUkD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA7GyCC,CAAQ,EAAQ,O,qCCL1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAUA4kV,EAA4C,SAAUphV,GAWtD,SAASohV,EAA2B/uB,EAAW/pT,EAAOk1U,EAAW5xV,GAC7D,OAAOoU,EAAO3D,KAAKL,KAAMq2T,EAAW/pT,EAAOk1U,EAAW5xV,IAAYoQ,IACtE,CAIA,OAhBAD,EAAUqlV,EAA4BphV,GAatCohV,EAA2BhlV,UAAUpZ,SAAW,WAC5C,MAAO,gCAAkCgZ,KAAKwF,YAAc,KAAOxF,KAAK23H,SAAW,GACvF,EACOytN,CACX,CAlB+C,CARnB,EAAQ,QA2BpC1jQ,EAAOj9F,QAAU2gW,C,+BC1CjB,IAEI92V,EAFa,EAAQ,OAEEA,UACvBC,EAAYD,GAAaA,EAAUC,UAEvCmzF,EAAOj9F,QAAU8J,EAAYgS,OAAOhS,GAAa,E,2FCGjD,SAASqrhC,EAAuBpr7B,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,CAGA,IAAIqr7B,EACuB,mBAAXr1hC,QAAyBA,OAAOs1hC,YAAc,eAS1DC,EAAe,WACjB,OAAOv0hC,KAAKm+F,SAAS38F,SAAS,IAAImiG,UAAU,GAAGjoG,MAAM,IAAIgd,KAAK,IAChE,EAEI87gC,EAAc,CAChBzjP,KAAM,eAAiBwjP,IACvBtoxB,QAAS,kBAAoBsoxB,IAC7BE,qBAAsB,WACpB,MAAO,+BAAiCF,GAC1C,GAuGF,SAASryV,EAAYpke,EAAS42zB,EAAgBC,GAC5C,IAAIxvhC,EAEJ,GAA8B,mBAAnBuvhC,GAAqD,mBAAbC,GAA+C,mBAAbA,GAAmD,mBAAjBhmhC,UAAU,GAC/H,MAAM,IAAIoT,MAA8CqygC,EAAuB,IAQjF,GAL8B,mBAAnBM,QAAqD,IAAbC,IACjDA,EAAWD,EACXA,OAAiBpjhC,QAGK,IAAbqjhC,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAI5ygC,MAA8CqygC,EAAuB,IAGjF,OAAOO,EAASzyV,EAATyyV,CAAsB72zB,EAAS42zB,EACxC,CAEA,GAAuB,mBAAZ52zB,EACT,MAAM,IAAI/7M,MAA8CqygC,EAAuB,IAGjF,IAAIQ,EAAiB92zB,EACjBouW,EAAewod,EACfG,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBv/gC,QAErC,CAQA,SAAS64F,IACP,GAAI4m7B,EACF,MAAM,IAAIhzgC,MAA8CqygC,EAAuB,IAGjF,OAAOlod,CACT,CA0BA,SAAS/tM,EAAU9vV,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAItsB,MAA8CqygC,EAAuB,IAGjF,GAAIW,EACF,MAAM,IAAIhzgC,MAA8CqygC,EAAuB,IAGjF,IAAI3xgB,GAAe,EAGnB,OAFAuygB,IACAF,EAAcxmhC,KAAK+/B,GACZ,WACL,GAAKo0e,EAAL,CAIA,GAAIsygB,EACF,MAAM,IAAIhzgC,MAA8CqygC,EAAuB,IAGjF3xgB,GAAe,EACfuygB,IACA,IAAIhkhC,EAAQ8jhC,EAAc/xhC,QAAQsrC,GAClCym/B,EAAcvt/B,OAAOv2B,EAAO,GAC5B6jhC,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAAS3m7B,EAASE,GAChB,IAzOJ,SAAuBthF,GACrB,GAAmB,iBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAI4S,EAAQ5S,EAE4B,OAAjCxoB,OAAO2rC,eAAevQ,IAC3BA,EAAQp7B,OAAO2rC,eAAevQ,GAGhC,OAAOp7B,OAAO2rC,eAAenjB,KAAS4S,CACxC,CAgOSwlM,CAAc92H,GACjB,MAAM,IAAIrsF,MAA8CqygC,EAAuB,IAGjF,QAA2B,IAAhBhm7B,EAAO5jF,KAChB,MAAM,IAAIzI,MAA8CqygC,EAAuB,IAGjF,GAAIW,EACF,MAAM,IAAIhzgC,MAA8CqygC,EAAuB,IAGjF,IACEW,GAAgB,EAChB7od,EAAe0od,EAAe1od,EAAc99d,EAC9C,CAAE,QACA2m7B,GAAgB,CAClB,CAIA,IAFA,IAAIvm/B,EAAYqm/B,EAAmBC,EAE1Bj1hC,EAAI,EAAGA,EAAI2uC,EAAU5/B,OAAQ/O,KAEpCwuC,EADeG,EAAU3uC,MAI3B,OAAOuuG,CACT,CA4EA,OAHAF,EAAS,CACP1jF,KAAMgqgC,EAAYzjP,QAEb5ryB,EAAQ,CACb+oG,SAAUA,EACViwR,UAAWA,EACXhwR,SAAUA,EACV8m7B,eAnEF,SAAwBC,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAInzgC,MAA8CqygC,EAAuB,KAGjFQ,EAAiBM,EAKjBhn7B,EAAS,CACP1jF,KAAMgqgC,EAAYvoxB,SAEtB,IAuDSooxB,GA9CT,WACE,IAAIzuhC,EAEAuvhC,EAAiBh3pB,EACrB,OAAOv4X,EAAO,CASZu4X,UAAW,SAAmB3+T,GAC5B,GAAwB,iBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAIz9C,MAA8CqygC,EAAuB,KAGjF,SAASgB,IACH519B,EAASl9D,MACXk9D,EAASl9D,KAAK6rG,IAElB,CAIA,OAFAin7B,IAEO,CACLrxV,YAFgBoxV,EAAeC,GAInC,IACMf,GAAgB,WACtB,OAAO75gC,IACT,EAAG5U,CACL,EAaqCT,CACvC,CAiMA,SAASkwhC,EAAkBv9I,EAAe5pyB,GACxC,OAAO,WACL,OAAOA,EAAS4pyB,EAAcx83B,MAAMd,KAAM7L,WAC5C,CACF,CAwBA,SAASop4B,EAAmBH,EAAgB1pyB,GAC1C,GAA8B,mBAAnB0pyB,EACT,OAAOy9I,EAAkBz9I,EAAgB1pyB,GAG3C,GAA8B,iBAAnB0pyB,GAAkD,OAAnBA,EACxC,MAAM,IAAI713B,MAA8CqygC,EAAuB,KAGjF,IAAIv8I,EAAsB,CAAC,EAE3B,IAAK,IAAI7y4B,KAAO4y4B,EAAgB,CAC9B,IAAIE,EAAgBF,EAAe5y4B,GAEN,mBAAlB8y4B,IACTD,EAAoB7y4B,GAAOqwhC,EAAkBv9I,EAAe5pyB,GAEhE,CAEA,OAAO2pyB,CACT,CAYA,SAASz6qB,IACP,IAAK,IAAI1uN,EAAOC,UAAUC,OAAQs2V,EAAQ,IAAIp2V,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAChFm2V,EAAMn2V,GAAQJ,UAAUI,GAG1B,OAAqB,IAAjBm2V,EAAMt2V,OACD,SAAUujE,GACf,OAAOA,CACT,EAGmB,IAAjB+yR,EAAMt2V,OACDs2V,EAAM,GAGRA,EAAMpgW,OAAO,SAAUsP,EAAGC,GAC/B,OAAO,WACL,OAAOD,EAAEC,EAAEiH,WAAM,EAAQ3M,WAC3B,CACF,EACF,CAmBA,SAAS2mhC,IACP,IAAK,IAAI5mhC,EAAOC,UAAUC,OAAQ2mhC,EAAc,IAAIzmhC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IACtFwmhC,EAAYxmhC,GAAQJ,UAAUI,GAGhC,OAAO,SAAUmzrB,GACf,OAAO,WACL,IAAIh4f,EAAQg4f,EAAY5mrB,WAAM,EAAQ3M,WAElC6mhC,EAAY,WACd,MAAM,IAAIzzgC,MAA8CqygC,EAAuB,IACjF,EAEIqB,EAAgB,CAClBtn7B,SAAU+7F,EAAM/7F,SAChBD,SAAU,WACR,OAAOsn7B,EAAUl6gC,WAAM,EAAQ3M,UACjC,GAEEmuH,EAAQy45B,EAAYhohC,IAAI,SAAUmohC,GACpC,OAAOA,EAAWD,EACpB,GAEA,OADAD,EAAYp4zB,EAAQ9hN,WAAM,EAAQwhH,EAAtBsgG,CAA6BlzB,EAAMh8F,WACxC,QAAc,OAAc,CAAC,EAAGg8F,GAAQ,CAAC,EAAG,CACjDh8F,SAAUsn7B,GAEd,CACF,CACF,C,yBClpBAt57B,EAAOj9F,QAPP,SAAqBkB,GACpB,MAA0B,mBAAVA,CACjB,C,+BCrCA,IAAI4I,EAAY,EAAQ,OAExBmzF,EAAOj9F,QAAU,mEAAmEvC,KAAKqM,E,kBCJzF,IAAIgrhC,EAAY,EAAQ,OACpB4B,EAAgB,EAAQ,OAoC5Bz57B,EAAOj9F,QAvBP,SAASm9H,EAAYvtG,EAAOytM,EAAO9tG,EAAWon6B,EAAUjohC,GACtD,IAAIqD,GAAS,EACTpC,EAASigB,EAAMjgB,OAKnB,IAHA4/G,IAAcA,EAAYmn6B,GAC1BhohC,IAAWA,EAAS,MAEXqD,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdsrN,EAAQ,GAAK9tG,EAAUruH,GACrBm8N,EAAQ,EAEVlgG,EAAYj8H,EAAOm8N,EAAQ,EAAG9tG,EAAWon6B,EAAUjohC,GAEnDomhC,EAAUpmhC,EAAQxN,GAEVy1hC,IACVjohC,EAAOA,EAAOiB,QAAUzO,EAE5B,CACA,OAAOwN,CACT,C,qCClCA,IACQ2M,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAwkV,EAAmB,0BACnBxhV,EAAK,EAAQ,OAAWuhV,EAAevhV,EAAGuhV,aAAcG,EAA0B1hV,EAAG0hV,wBAAyByC,EAAankV,EAAGmkV,WAC9HhkV,EAAK,EAAQ,OAAqBuV,EAAIvV,EAAGg+U,WAAYC,EAAgBj+U,EAAGi+U,cACxEy5rB,EAAqB,YACrBp2gC,EAAK,EAAQ,OAAsBynN,EAAkBznN,EAAGynN,gBAAiB89B,EAAiBvlP,EAAGulP,eAAgBrO,EAAkBl3O,EAAGk3O,gBAClIipG,EAA6B,EAAQ,OACrC7D,EAA4B,EAAQ,OACpC8D,EAA6B,EAAQ,OA6BrCi2rB,EAAkC,SAAUt3gC,GAQ5C,SAASs3gC,EAAiBjltB,EAAWtrT,EAAanb,GAC9C,IAAIsU,EAAQlE,KAYRu7gC,GAXJ3rhC,EAAU9F,OAAOC,OAAO,CACpB2iO,gBAAiBA,EACjByvB,gBAAiBA,EACjBqO,eAAgBA,EAChBw6F,iBAAkBA,EAClBI,2BAA4BA,EAC5BC,2BAA4BA,EAC5B9D,0BAA2BA,EAC3Bi6rB,uBAAuB,EACvBl3rB,OAAQv5U,GACTnb,IACwB4rhC,sBACrB,IAAItohC,IAAI6X,EAAY9Z,OAAO,SAAUwqhC,GAAc,MAA2B,SAApBA,EAAW3ugC,IAAiB,IACtF,IAAI5Z,IAsCV,OArCAgR,EAAQF,EAAO3D,KAAKL,KAAMq2T,EAAWzmU,IAAYoQ,KACjDlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bky7B,eAAgB,CACZzw8B,MAAOiK,EAAQgZ,eAEnB8ygC,iBAAkB,CACd/1hC,MAAOiK,EAAQ88N,iBAEnBivzB,gBAAiB,CACbh2hC,MAAOiK,EAAQ46P,gBAEnBoxxB,iBAAkB,CACdj2hC,MAAOiK,EAAQusP,iBAEnB0/xB,kBAAmB,CACfl2hC,MAAOiK,EAAQo1V,kBAEnB82rB,4BAA6B,CACzBn2hC,MAAOiK,EAAQw1V,4BAEnB22rB,2BAA4B,CACxBp2hC,MAAOiK,EAAQ2xV,2BAEnBy6rB,4BAA6B,CACzBr2hC,MAAOiK,EAAQy1V,4BAEnB42rB,cAAe,CACXt2hC,MAAO41hC,GAEX/0I,gBAAiB,CACb962B,YAAY,EACZ73B,IAAK,WACD,OAAOwiU,EAAUmwkB,eACrB,KAGRti4B,EAAMwjgB,8BACCxjgB,CACX,CAieA,OA9hBAnE,EAAUu7gC,EAAkBt3gC,GAqE5Bs3gC,EAAiBl7gC,UAAUungB,UAAY,SAAUr7f,EAAOvO,EAAIu2F,GACxD,IAAI4n7B,EAAal4gC,EAAO5D,UAAUungB,UAAUtngB,KAAKL,KAAMsM,EAAOvO,GAI9D,OAHIm+gC,GAA6B,iBAAfl8gC,KAAKrQ,OACnBqQ,KAAKm8gC,eAAe7vgC,EAAOgoF,GAExB4n7B,CACX,EAOAZ,EAAiBl7gC,UAAU+7gC,eAAiB,SAAU7vgC,EAAOgoF,GACzD,IAAI9wF,EAEAw6f,EAA4C,QAAlCx6f,EAAK8I,EAAMsgN,yBAAsC,IAAPppN,OAAgB,EAASA,EAAGw6f,OACpFh+f,KAAKo9f,WAAW7wf,SAASD,EAAMkwO,aAAclwO,EAAM/Y,KAAM+gG,EAAU0pa,GACnEh+f,KAAKoF,KAAK2tB,KAAK,eAAiB40T,EAAWr7U,GAAO,GAAQ,IAAKA,EAAMvO,IACrEiC,KAAKoF,KAAKkC,MAAMqgV,EAAWr7U,GAAO,GAAQ,IAAKA,EACnD,EAOAgvgC,EAAiBl7gC,UAAU+ngB,aAAe,SAAU77f,EAAOvO,GACvD,IAAIq+gC,EAAep4gC,EAAO5D,UAAU+ngB,aAAa9ngB,KAAKL,KAAMsM,EAAOvO,GAMnE,OALIq+gC,GAA+B,iBAAfp8gC,KAAKrQ,QACrBqQ,KAAKo9f,WAAWixG,YAAY/hmB,EAAMkwO,cAClCx8O,KAAKoF,KAAK2tB,KAAK,aAAe40T,EAAWr7U,GAAO,GAAQ,IAAKA,EAAMvO,IACnEiC,KAAKoF,KAAKkC,MAAMqgV,EAAWr7U,GAAO,GAAQ,IAAKA,IAE5C8vgC,CACX,EAMAd,EAAiBl7gC,UAAUomsB,gBAAkB,WACzC,OAAOxisB,EAAO5D,UAAUomsB,gBAAgBnmsB,KAAKL,MAAMhS,OAAO,CACtD,CAAC,WAAY,iBACb,CAAC,UAAW,gBACZ,CAAC,UAAW,iBAEpB,EACAsthC,EAAiBl7gC,UAAUpZ,SAAW,WAClC,MAAO,sBAAwBgZ,KAAKwF,aAAexF,KAAKs2K,IAAM,KAAOt2K,KAAKs2K,IAAM,IAAM,GAC1F,EAIAgl2B,EAAiBl7gC,UAAUsngB,4BAA8B,WACrD,IAAIxjgB,EAAQlE,KACR/Z,EAAM+Z,KAAKoF,KACf,GAAmB,iBAAfpF,KAAKrQ,MAAT,CAGA,IAAI0shC,EAAqB,SAAUZ,GAC/B,IAAIn1U,EAAiBpisB,EAAMk5f,WAAW8pY,eAAeu0I,EAAWj/xB,cAC5D8pd,IACAA,EAAex4lB,UACf7nH,EAAIqhB,MAAM,gBAAkBqgV,EAAW8zrB,GAAY,GAAQ,IAAKA,EAAW19gC,IAEnF,EACIu+gC,EAAoB,SAAUb,GAC9B,IAAIn1U,EAAiBpisB,EAAMk5f,WAAW8pY,eAAeu0I,EAAWj/xB,cAC5D8pd,IACAA,EAAev4lB,SACf9nH,EAAIqhB,MAAM,eAAiBqgV,EAAW8zrB,GAAY,GAAQ,IAAKA,EAAW19gC,IAElF,EACIw+gC,EAAoB,SAAUd,GAG9B,IAAIn1U,EAAiBpisB,EAAMk5f,WAAW8pY,eAAeu0I,EAAWj/xB,cAIhE,OAHI8pd,GACAA,EAAe5gsB,OAEZ4gsB,CACX,EACI5oM,EAAe,SAAU/tgB,GACzB1J,EAAIqhB,MAAM,yBAA0B3X,GACtB,iBAAVA,GACA1J,EAAIqhB,MAAM,uCACVpD,EAAMk5f,WAAWx4c,eAAe,eAAgB84c,GAChDx5f,EAAM0gD,eAAe,gBAAiBy39B,GACtCn4gC,EAAM0gD,eAAe,eAAgB039B,GACrCp4gC,EAAM0gD,eAAe,eAAgB239B,GAGrCr4gC,EAAMmkgB,QAAQr2gB,QAAQ,SAAUsa,GAC5B,IAAIg6rB,EAAiBi2U,EAAkBjwgC,GACnCg6rB,GACAh6rB,EAAMkwO,aAAa4qpB,YAAY9gM,EAAehoV,kBAEtD,GACAr4X,EAAI8sC,KAAK,2CAA6C7uB,EAAM+3gC,cAAclpgC,KAAO,uCACjF7O,EAAM+3gC,cAAcjqhC,QAAQ,SAAUsa,GAClCA,EAAM5G,MACV,IAEe,cAAV/V,IAIL1J,EAAI8sC,KAAK,eAGTtrB,WAAW,WAAc,OAAOvD,EAAM2G,KAAK,cAAgB,EAAG,GAEtE,EACA7K,KAAK2qG,GAAG,gBAAiB0x6B,GACzBr8gC,KAAK2qG,GAAG,eAAgB2x6B,GACxBt8gC,KAAK2qG,GAAG,eAAgB4x6B,GACxBv8gC,KAAKo9f,WAAWzyZ,GAAG,eAAgB+yZ,GACnC19f,KAAKqogB,QAAQr2gB,QAAQ,SAAUsa,GAC3BpI,EAAMi4gC,eAAe7vgC,EAAOs1U,EAAciB,mBAC1C3+U,EAAMs4gC,kCAAkClwgC,GAAOuhN,MAAM,SAAU5jN,GAE3DhkB,EAAI4mB,KAAK,qDAAuDP,EAAQ,IAAKrC,EACjF,EACJ,EAjEA,CAkEJ,EAMAqxgC,EAAiBl7gC,UAAUo8gC,kCAAoC,SAAUf,GACrE,IAAIgB,EAAwBC,EAAoB18gC,KAAKskV,OAAQm3rB,GAC7D,GAAIgB,EACA,OAAO9lhC,QAAQC,QAAQ6lhC,GAE3B,IAAIx2hC,EAAM+Z,KAAKoF,KACXk9E,EAAOtiF,KACPsmsB,EAAiBtmsB,KAAKo9f,WAAW8pY,eAAeu0I,EAAWj/xB,cAC/D,OAAK8pd,EAGE,IAAI3vsB,QAAQ,SAAUC,EAASwK,GAwElCklsB,EAAe37lB,GAAG,UAvElB,SAASjsC,IACL,IAAIz0D,EAAQq8rB,EAAer8rB,MAC3B,GAAIA,EAQA,OAPAq8rB,EAAe1hpB,eAAe,UAAW8Z,GACzCz4E,EAAI4mB,KAAK,yBAA2B86U,EAAW8zrB,GAAY,GAAQ,KAAOxxgC,EAAMmmF,SAChF9N,EAAK6lb,aAAaszgB,EAAYA,EAAW19gC,IACzC0J,WAAW,WACP66E,EAAKz3E,KAAK,yBAA0BZ,EAAOwxgC,EAC/C,QACAr6gC,EAAO6I,GAGX,IAAKq4E,EAAK+lb,QAAQ10gB,IAAI8nhC,EAAW19gC,IAG7B,OAFAuosB,EAAe1hpB,eAAe,UAAW8Z,QACzCt9D,EAAO,IAAImG,MAAM,OAASk0gC,EAAa,qBAI3C,GADUn1U,EAAehwhB,IACzB,CAGAgwhB,EAAe1hpB,eAAe,UAAW8Z,GACzC,IAAI9uE,EAAU,CACV3J,IAAKA,EACLm/V,2BAA4B9iQ,EAAKw57B,4BACjCv6rB,0BAA2Bj/P,EAAKy57B,2BAChC12rB,2BAA4B/iQ,EAAK057B,6BAErCS,EAAwBC,EAAoBp67B,EAAKgiQ,OAAQm3rB,GACzD,IAAIkB,EAAiB,SAAU14rB,GAC3B,OAAO3hQ,EAAKz3E,KAAK,eAAgBo5U,EAAmBw4rB,EACxD,EACIG,EAAyB,WACzB,OAAOt67B,EAAKz3E,KAAK,uBAAwB4xgC,EAC7C,EAMKA,IACDA,EAAwBv3rB,EAAwBu2rB,EAAYn1U,EANhD,SAAUz+W,GACtB40rB,EAAsB739B,eAAe,eAAgB+39B,GACrDF,EAAsB739B,eAAe,uBAAwBg49B,GAC7Dt67B,EAAKu67B,eAAeh1rB,EAAYv7U,MACpC,EAE2F1c,GACvF0yF,EAAKwlb,qBAAqB20gB,IAE9BA,EAAsB9x6B,GAAG,UAAWgy6B,GACpCF,EAAsB9x6B,GAAG,kBAAmBiy6B,GAC5C,IAAIjthC,EAAQ2yF,EAAK86a,WAAWztgB,MACd,cAAVA,GAAmC,eAAVA,IACrB8rhC,EAAWxmR,yBACXwmR,EAAWxmR,wBAAwBtqpB,GAAG,QAAS,SAAUx+F,GACrDm2E,EAAK8z2B,eAAevr7B,KAAK,QAAS,CAC9BtX,KAAM4Y,EAAM5Y,KACZ2W,QAASiC,EAAMpW,KACfgU,MAAO,kBACPC,MAAO,QAEf,GAGAyxgC,EAAW5+xB,iBACX4+xB,EAAWt+xB,iBACXs+xB,EAAW/+xB,4BAA2B,KAGhC,cAAV/sP,GACA8X,WAAW,WACP66E,EAAKz3E,KAAK,iBAAkB4xgC,EAChC,GAEJ7lhC,EAAQ6lhC,EAjDR,CAkDJ,EAEJ,GA3EW9lhC,QAAQyK,OAAO,IAAImG,MAAM,yBAA2Bk0gC,EAAa,wBA4EhF,EAqEAH,EAAiBl7gC,UAAU08gC,aAAe,SAAUC,EAA8BnthC,GAC9E,IAYI6rhC,EAZAxiG,EAAmByjG,EAAoB18gC,KAAKskV,OAAQy4rB,GACxD,GAAI9jG,EACA,OAAOti7B,QAAQC,QAAQqi7B,GAE3Brp7B,EAAU9F,OAAOC,OAAO,CACpB9D,IAAK+Z,KAAKoF,KACVkvF,SAAUstP,EAAciB,kBACxBn2H,gBAAiB1sN,KAAK07gC,iBACtBlxxB,eAAgBxqP,KAAK27gC,gBACrBx/xB,gBAAiBn8O,KAAK47gC,iBACtB52rB,iBAAkBhlV,KAAK67gC,mBACxBjshC,GAEH,IACI6rhC,EAAa12rB,EAAag4rB,EAA8BnthC,EAC5D,CACA,MAAOqa,GACH,OAAOtT,QAAQyK,OAAO6I,EAC1B,CACA,IAAI2iN,EAAoB6uzB,EAAW7uzB,kBAC/BkxS,EAAyB99f,KAAKo9f,WAAWW,gBACzCnxS,IAAsBkxS,EAAuBnoe,SAASi3L,EAAkBoxS,UACxEh+f,KAAKoF,KAAKyH,KAAK+/M,EAAkBoxS,OAAS,4DAC1CpxS,EAAkBqxS,sBAEtB,IAAIiwE,EAAiBpklB,OAAO8+B,OAAOg5T,GACnC,IAAKssP,EAAev4iB,SAAS/lC,EAAQ0kG,UAEjC,OAAO39F,QAAQyK,OAAO8X,EAAEi1jB,cAAc,oCAAqCD,IAE/E,IAAI8uc,EAAkBh9gC,KAAK2ngB,UAAU8zgB,EAAYA,EAAW19gC,GAAInO,EAAQ0kG,WACjEt0F,KAAKqogB,QAAQx0gB,IAAI4nhC,EAAW19gC,IACnC,OAAOiC,KAAKw8gC,kCAAkCQ,EAClD,EAcA1B,EAAiBl7gC,UAAU68gC,cAAgB,SAAU34rB,GACjD,IAAKhwV,MAAMyb,QAAQu0U,GAEf,MAAMprU,EAAE+rU,aAAa,SAAU,kFAEnC,OAAOtuV,QAAQmvC,IAAIw+S,EAAOvxV,IAAIiN,KAAK88gC,aAAc98gC,MACrD,EACAs7gC,EAAiBl7gC,UAAUsm4B,oBAAsB,WAC7C1m4B,KAAKoF,KAAKyH,KAAK,wGACnB,EA2BAyugC,EAAiBl7gC,UAAUin4B,+BAAiC,SAAUrnyB,GAClE,GAA2C,iBAAhCA,GAC4B,OAAhCA,EAEH,MAAM9mF,EAAE+rU,aAAa,8BAA+B,+BASxD,MAPA,CAAC,QAAS,UAAUjzV,QAAQ,SAAUsgC,GAClC,GAAIA,KAAQ0tE,IAA6E,iBAAtCA,EAA4B1tE,IAAsBvsC,MAAMi6G,EAA4B1tE,KAEnI,MAAMpZ,EAAE+rU,aAAa,+BAAiC3yT,EAAM,SAEpE,GACAtyB,KAAKo9f,WAAWiqY,+BAA+BrnyB,GACxChgG,IACX,EASAs7gC,EAAiBl7gC,UAAU0m4B,cAAgB,SAAUrihB,GACjD,QAAkC,IAAvBA,GAC0B,iBAAvBA,EAEV,MAAMvrW,EAAE+rU,aAAa,qBAAsB,yCAE/C,GAAIw/B,EAAoB,CACpB,GAAIzkX,KAAKo9f,WAAWypY,gBAAgBxjjB,mBAAqBohC,EAAmBE,gBAExE,MAAMzrW,EAAE+rU,aAAa,qBAAsB,yFAE/C,CAAC,kBAAmB,mBAAmBjzV,QAAQ,SAAUsgC,GACrD,QAAwC,IAA7BmyV,EAAmBnyV,IACa,iBAA7BmyV,EAAmBnyV,IACG,OAA7BmyV,EAAmBnyV,GAEtB,MAAMpZ,EAAE+rU,aAAa,sBAAwB3yT,EAAM,4BAE3D,EACJ,MACgC,OAAvBmyV,IACLA,EAAqB,CAAEC,gBAAiB,KAAMC,gBAAiB,OAGnE,OADA3kX,KAAKo9f,WAAW0pY,cAAcrihB,GACvBzkX,IACX,EAYAs7gC,EAAiBl7gC,UAAUy8gC,eAAiB,SAAUvwgC,GAClD+ugC,EAAmB/ugC,EAAO,CACtBogN,gBAAiB1sN,KAAK07gC,iBACtBlxxB,eAAgBxqP,KAAK27gC,gBACrBx/xB,gBAAiBn8O,KAAK47gC,iBACtB52rB,iBAAkBhlV,KAAK67gC,oBAE3B,IAAIJ,EAAaz7gC,KAAKqogB,QAAQx0gB,IAAIyY,EAAMvO,IACxC,IAAK09gC,EACD,OAAO,KAKX,GAHqBz7gC,KAAKo9f,WAAW8pY,eAAeu0I,EAAWj/xB,cAChD7jC,cAAc,IAAIpxM,MAAM,OAASk0gC,EAAa,uBAC7DA,EAAaz7gC,KAAKmogB,aAAaszgB,EAAYA,EAAW19gC,KAElD,OAAO,KAEX,IAAI0+gC,EAAwBC,EAAoB18gC,KAAKskV,OAAQm3rB,GAI7D,OAHIgB,GACAz8gC,KAAKsogB,wBAAwBm0gB,GAE1BA,CACX,EAWAnB,EAAiBl7gC,UAAU88gC,gBAAkB,SAAU54rB,GACnD,IAAIpgV,EAAQlE,KACZ,IAAK1L,MAAMyb,QAAQu0U,GAEf,MAAMprU,EAAE+rU,aAAa,SAAU,kFAEnC,OAAOX,EAAOh6V,OAAO,SAAU6yhC,EAAmB7wgC,GAC9C,IAAI8wgC,EAAmBl5gC,EAAM24gC,eAAevwgC,GAC5C,OAAO8wgC,EAAmBD,EAAkBnvhC,OAAOovhC,GAAoBD,CAC3E,EAAG,GACP,EACO7B,CACX,CAhiBqC,CA5BnB,EAAQ,QAyqB1B,SAASoB,EAAoBW,EAAmB/wgC,GAC5C,OAAOhY,MAAMuwB,KAAKw4/B,EAAkBz0/B,UAAU/tB,KAAK,SAAUo+6B,GAAoB,OAAOA,EAAiB3s6B,QAAUA,GAC5G2s6B,EAAiB3s6B,MAAMqgN,mBAAqBrgN,CAAO,IAAM,IACpE,CACAo1E,EAAOj9F,QAAU62hC,C,YC7qBjB557B,EAAOj9F,QAjBP,SAAuByvH,GACrB,OAAO,SAAS5oE,EAAQs0K,EAAUb,GAMhC,IALA,IAAIvoN,GAAS,EACTqwO,EAAW/8O,OAAOwhD,GAClBlZ,EAAQ2sL,EAASzzK,GACjBl3C,EAASg+B,EAAMh+B,OAEZA,KAAU,CACf,IAAI5J,EAAM4nC,EAAM8hF,EAAY9/G,IAAWoC,GACvC,IAA+C,IAA3CopN,EAASinB,EAASr8O,GAAMA,EAAKq8O,GAC/B,KAEJ,CACA,OAAOv7L,CACT,CACF,C,+DCDA,QALA,SAAiBj3B,GAEf,OADsB,MAATA,GAAoBA,EAAMjgB,QACvB,OAAYigB,EAAO,GAAK,EAC1C,E,0BCJA,QAJA,SAAkBqgF,GAChB,OAAO,QAAY,OAASA,OAAM59F,EAAW,GAAU49F,EAAO,GAChE,C,kBCbA,IAAIi6qB,EAAiB,EAAQ,OACzBta,EAAe,EAAQ,OACvBjrgB,EAAS,EAAQ,OAcrB1nK,EAAOj9F,QAJP,SAAsB6mD,GACpB,OAAOqjuB,EAAerjuB,EAAQ89M,EAAQirgB,EACxC,C,6BCHAvqwB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD,IAAI23hC,EAAoC,WACpC,SAASA,IACT,CAEA,OADAA,EAAmBl9gC,UAAU2jG,QAAU,SAAU6uN,GAAU,EACpD0qtB,CACX,CALuC,GAMvC74hC,EAAQ64hC,mBAAqBA,C,YCC7B577B,EAAOj9F,QAJP,SAAkBkB,GAChB,OAAOA,CACT,C,gGCMA,QAlBuBmE,OAAOo4F,sBASqB,SAAS52C,GAE1D,IADA,IAAIn4C,EAAS,GACNm4C,IACL,OAAUn4C,GAAQ,OAAWm4C,IAC7BA,GAAS,OAAaA,GAExB,OAAOn4C,CACT,EAPuC,G,+BCdvC,IAAI8sH,EAAQ,EAAQ,OAIhB4wQ,EAHa,EAAQ,OAGA/+V,OAEzB4vD,EAAOj9F,QAAUw7H,EAAM,WACrB,IAAIm2B,EAAKy6O,EAAQ,IAAK,KACtB,QAASz6O,EAAG0qM,QAAU1qM,EAAGl0J,KAAK,OAAsB,MAAbk0J,EAAGxxB,MAC5C,E,8ECoBA,MCfA,EAJA,SAAgBt5E,EAAQu9B,GACtB,OAAOA,EAAKz0E,OAAS,EAAIk3C,GAAS,OAAQA,EDH5C,SAAmBj3B,EAAO5nB,EAAOC,GAC/B,IAAI8J,GAAS,EACTpC,EAASigB,EAAMjgB,OAEf3H,EAAQ,IACVA,GAASA,EAAQ2H,EAAS,EAAKA,EAAS3H,IAE1CC,EAAMA,EAAM0H,EAASA,EAAS1H,GACpB,IACRA,GAAO0H,GAETA,EAAS3H,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAI0G,EAASmB,MAAMF,KACVoC,EAAQpC,GACfjB,EAAOqD,GAAS6d,EAAM7d,EAAQ/J,GAEhC,OAAO0G,CACT,CChBoD,CAAU01E,EAAM,GAAI,GACxE,E,eCMA,QANA,SAAmBv9B,EAAQu9B,GAGzB,OAFAA,GAAO,OAASA,EAAMv9B,GAEL,OADjBA,EAAS,EAAOA,EAAQu9B,YACQv9B,GAAO,QCF3Bj3B,EDEsCw0D,ECD9Cz0E,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,OAChCA,EAASigB,EAAMjgB,EAAS,QAAK0C,KAFtC,IAAcud,EACRjgB,CDEN,C,kBEjBA,IAAIm3N,EAAc,EAAQ,OACtBhD,EAAe,EAAQ,OA+B3B7mI,EAAOj9F,QAJP,SAA2BkB,GACzB,OAAO4iO,EAAa5iO,IAAU4lO,EAAY5lO,EAC5C,C,YCTA+7F,EAAOj9F,QAZP,SAAmB4vB,EAAOurM,GAIxB,IAHA,IAAIppN,GAAS,EACTpC,EAAkB,MAATigB,EAAgB,EAAIA,EAAMjgB,SAE9BoC,EAAQpC,IAC8B,IAAzCwrN,EAASvrM,EAAM7d,GAAQA,EAAO6d,KAIpC,OAAOA,CACT,C,yBCEAqtE,EAAOj9F,QATP,SAAsB2sH,GAElB,YADoB,IAAhBA,IAA0BA,EAAc,CAAE0pG,OAAO,EAAMC,OAAO,IACzC,iBAAdzsN,WAC8B,iBAA3BA,UAAUg/N,cAC8B,mBAAxCh/N,UAAUg/N,aAAasmK,aAC1BtlY,UAAUg/N,aAAasmK,aAAaxiR,GAExCz6G,QAAQyK,OAAO,IAAImG,MAAM,iCACpC,C,+BCnBAzd,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAEtD,IAAIg8G,EAAW,EAAQ,OACnBw9N,EAAiB,EAAQ,OASzBo+sB,EAAoB,SAAUru+B,GAC9B,IAAIizE,EAAKg9M,EAAegC,SAASh/M,GAC7Bq75B,EAAgBtu+B,EAAW0nE,MAAM,YACrC,GAAK4m6B,EAAcpphC,OAEnB,OAAO+tH,EAAGr8E,IAAI03+B,EAAczqhC,IAAI,SAAU2uM,GAAQ,OAAOv/E,EAAGC,KAAKs/E,EAAKsnB,OAAS,IAAInyN,KAAK8qG,EAAS/xF,KACrG,EACAnrB,EAAQs+/B,0BAA4B,SAAUv9vB,GAC1C,OAAOA,EAAkB+9K,SAAS,CAAC,EAAGg6mB,EAC1C,EAWA,IAAIv6B,EAAgB,SAAU9z8B,GAC1B,IAAIsu+B,EAAgBtu+B,EAAW0nE,MAAM,YACjC6m6B,EAAevu+B,EAAW0nE,MAAM,WACpC,GAAK4m6B,EAAcpphC,QAAWqphC,EAAarphC,OAA3C,CAEA,IAAIkhO,EAAQpmL,EAAW0jR,OAAO8lnB,YAC9B+kG,EAAazrhC,QAAQ,SAAU6qb,GAAM,OAAOvnN,EAAMosb,qBAAqB7kO,EAAK,GAC5E2gmB,EAAcxrhC,QAAQ,SAAU6qb,GAAM,OAAOvnN,EAAMusb,mBAAmBhlO,EAAK,GAC3EvnN,EAAMszS,MAJI,CAKd,EACAnkhB,EAAQw+/B,sBAAwB,SAAUz9vB,GACtC,OAAOA,EAAkBstE,UAAU,CAAC,EAAGkwrB,EAC3C,C,kBC7CA,IAAIl8e,EAAW,EAAQ,OACnB4G,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAC5BxhT,EAAW,EAAQ,OACnB4lN,EAAY,EAAQ,OACpBi1F,EAAW,EAAQ,OA6DvBtlb,EAAOj9F,QA7CP,SAAwB4vB,EAAOuU,EAAQg3L,EAAU4+B,GAC/C,IAAIhoP,GAAS,EACTm/B,EAAW+3e,EACX28I,GAAW,EACXj2pB,EAASigB,EAAMjgB,OACfjB,EAAS,GACTws9B,EAAe/27B,EAAOx0B,OAE1B,IAAKA,EACH,OAAOjB,EAELysN,IACFh3L,EAASujM,EAASvjM,EAAQmpZ,EAAUnyN,KAElC4+B,GACF7oN,EAAWg4e,EACX08I,GAAW,GAEJzhoB,EAAOx0B,QA/BK,MAgCnBuhC,EAAWqxe,EACXqjJ,GAAW,EACXzhoB,EAAS,IAAIk+e,EAASl+e,IAExBshD,EACA,OAAS1zE,EAAQpC,GAAQ,CACvB,IAAIzO,EAAQ0uB,EAAM7d,GACdmtN,EAAuB,MAAZ/D,EAAmBj6N,EAAQi6N,EAASj6N,GAGnD,GADAA,EAAS64P,GAAwB,IAAV74P,EAAeA,EAAQ,EAC1C0kqB,GAAY1mc,GAAaA,EAAU,CAErC,IADA,IAAIi8vB,EAAcD,EACXC,KACL,GAAIh37B,EAAOg37B,KAAiBj8vB,EAC1B,SAASz5I,EAGb/2E,EAAOW,KAAKnO,EACd,MACUgwC,EAAS/M,EAAQ+6L,EAAU66B,IACnCrrP,EAAOW,KAAKnO,EAEhB,CACA,OAAOwN,CACT,C,qFChDA,QAJA,SAAsBm4C,GACpB,OAAO,OAAeA,EAAQ,IAAQ,IACxC,C,+DCJA,QARsB,WACpB,IACE,IAAIopD,GAAO,OAAU5qG,OAAQ,kBAE7B,OADA4qG,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAO1vG,GAAI,CACf,CANqB,E,+BCArB,IAAIq9F,EAAa,EAAQ,OACrB9zF,EAAY,EAAQ,OACpBizF,EAAU,EAAQ,OAElBk87B,EAAsB,SAAU55hC,GAClC,OAAOyK,EAAUuM,MAAM,EAAGhX,EAAOsQ,UAAYtQ,CAC/C,EAEA49F,EAAOj9F,QACDi5hC,EAAoB,QAAgB,MACpCA,EAAoB,sBAA8B,aAClDA,EAAoB,SAAiB,OACrCA,EAAoB,YAAoB,OACxCr77B,EAAWs77B,KAA6B,iBAAfA,IAAI948B,QAA4B,MACzDwd,EAAWu2G,MAA+B,iBAAhBA,KAAK/zH,QAA4B,OAC3B,YAAhC2c,EAAQa,EAAWo4C,SAA+B,OAClDp4C,EAAWl7F,QAAUk7F,EAAW55F,SAAiB,UAC9C,M,YCFTi5F,EAAOj9F,QAVP,SAAoBsP,GAClB,IAAIyC,GAAS,EACTrD,EAASmB,MAAMP,EAAIgf,MAKvB,OAHAhf,EAAI/B,QAAQ,SAASrM,GACnBwN,IAASqD,GAAS7Q,CACpB,GACOwN,CACT,C,+BCdA,IAAIkN,EAAO,EAAQ,OACf2lP,EAAa,EAAQ,OACrB/1O,EAAW,EAAQ,OAEnB4wU,EAAavgV,UAIjBohF,EAAOj9F,QAAU,SAAUxC,EAAO2h9B,GAChC,IAAI9u8B,EAAI6yB,EACR,GAAa,WAATi86B,GAAqB59sB,EAAWlxP,EAAK7S,EAAM+E,YAAcipB,EAAS0X,EAAMtnB,EAAKvL,EAAI7S,IAAS,OAAO0lC,EACrG,GAAIq+N,EAAWlxP,EAAK7S,EAAM00N,WAAa1mM,EAAS0X,EAAMtnB,EAAKvL,EAAI7S,IAAS,OAAO0lC,EAC/E,GAAa,WAATi86B,GAAqB59sB,EAAWlxP,EAAK7S,EAAM+E,YAAcipB,EAAS0X,EAAMtnB,EAAKvL,EAAI7S,IAAS,OAAO0lC,EACrG,MAAM,IAAIk5T,EAAW,0CACvB,C,+BCiBA,IAAI3sU,EAAW,EAAS,OAmBxBwtE,EAAOj9F,QAPP,SAAoBkB,GACnB,OAAOuuB,EAAUvuB,IAAWA,EAAM,GAAM,CACzC,C,+BC7CA,IAAI0tH,EAAW,EAAQ,OACnBm/Q,EAAkB,EAAQ,OAC1BtxQ,EAAoB,EAAQ,OAIhCx/B,EAAOj9F,QAAU,SAAckB,GAO7B,IANA,IAAIm1B,EAAIu4F,EAASrzG,MACb5L,EAAS8sH,EAAkBpmG,GAC3BozN,EAAkB/5O,UAAUC,OAC5BoC,EAAQg8X,EAAgBtkJ,EAAkB,EAAI/5O,UAAU,QAAK2C,EAAW1C,GACxE1H,EAAMwhP,EAAkB,EAAI/5O,UAAU,QAAK2C,EAC3C8mhC,OAAiB9mhC,IAARpK,EAAoB0H,EAASo+X,EAAgB9lY,EAAK0H,GACxDwphC,EAASpnhC,GAAOskB,EAAEtkB,KAAW7Q,EACpC,OAAOm1B,CACT,C,+BCfA,IAEI0slB,EAFkB,EAAQ,MAEfhmgB,CAAgB,YAC3Bq86B,GAAe,EAEnB,IACE,IAAI9vvB,EAAS,EACT+vvB,EAAqB,CACvBh2hC,KAAM,WACJ,MAAO,CAAE0Z,OAAQusR,IACnB,EACA,OAAU,WACR8vvB,GAAe,CACjB,GAEFC,EAAmBt2a,GAAY,WAC7B,OAAOxnmB,IACT,EAEA1L,MAAMuwB,KAAKi5/B,EAAoB,WAAc,MAAM,CAAG,EACxD,CAAE,MAAO7zgC,GAAqB,CAE9By3E,EAAOj9F,QAAU,SAAU4gC,EAAM04/B,GAC/B,IACE,IAAKA,IAAiBF,EAAc,OAAO,CAC7C,CAAE,MAAO5zgC,GAAS,OAAO,CAAO,CAChC,IAAI+zgC,GAAoB,EACxB,IACE,IAAI1y+B,EAAS,CAAC,EACdA,EAAOk8jB,GAAY,WACjB,MAAO,CACL1/mB,KAAM,WACJ,MAAO,CAAE0Z,KAAMw8gC,GAAoB,EACrC,EAEJ,EACA34/B,EAAKimB,EACP,CAAE,MAAOrhC,GAAqB,CAC9B,OAAO+zgC,CACT,C,4ECpCe,SAASlz6B,EAAel0E,EAAKvxC,GAC1C,OCLa,SAAyBuxC,GACtC,GAAItiC,MAAMyb,QAAQ6mB,GAAM,OAAOA,CACjC,CDGS,CAAeA,IELT,SAA+BA,EAAKvxC,GACjD,IAAIsV,EAAK,MAAQi8B,EAAM,KAAO,oBAAsBpyC,QAAUoyC,EAAIpyC,OAAO0d,WAAa00B,EAAI,cAC1F,GAAI,MAAQj8B,EAAI,CACd,IAAIwwG,EACFD,EACA6Q,EACAC,EACAjR,EAAO,GACPC,GAAK,EACLC,GAAK,EACP,IACE,GAAI8Q,GAAMphH,EAAKA,EAAG0F,KAAKu2B,IAAM9uC,KAAM,IAAMzC,EAAG,CAC1C,GAAIyE,OAAO6Q,KAAQA,EAAI,OACvBqwG,GAAK,CACP,MAAO,OAASA,GAAMG,EAAK4Q,EAAG17G,KAAK1F,IAAK6G,QAAUupG,EAAKj3G,KAAKq3G,EAAGxlH,OAAQolH,EAAK32G,SAAW/O,GAAI2lH,GAAK,GAClG,CAAE,MAAOtC,GACPuC,GAAK,EAAIC,EAAKxC,CAChB,CAAE,QACA,IACE,IAAKsC,GAAM,MAAQrwG,EAAW,SAAMqhH,EAAKrhH,EAAW,SAAK7Q,OAAOkyH,KAAQA,GAAK,MAC/E,CAAE,QACA,GAAI/Q,EAAI,MAAMC,CAChB,CACF,CACA,OAAOH,CACT,CACF,CFrBgC,CAAqBn0E,EAAKvxC,KAAM,EAAAgunB,EAAA,GAA2Bz8kB,EAAKvxC,IGLjF,WACb,MAAM,IAAIib,UAAU,4IACtB,CHGsG,EACtG,C,qCIDIi4G,EAAY,CAAC,oBAAqB,oBAAqB,eAAgB,aAAc,aAAc,WAAY,gBAAiB,cAAe,aAAc,S,kECDlJ,SAASS,EAAmBpiF,GACzC,OCJa,SAA4BA,GACzC,GAAItiC,MAAMyb,QAAQ6mB,GAAM,OAAO,EAAAqn/B,EAAA,GAAiBrn/B,EAClD,CDES,CAAkBA,IELZ,SAA0BuiF,GACvC,GAAsB,oBAAX30H,QAAmD,MAAzB20H,EAAK30H,OAAO0d,WAA2C,MAAtBi3G,EAAK,cAAuB,OAAO7kH,MAAMuwB,KAAKs0F,EACtH,CFGmC,CAAgBviF,KAAQ,EAAAy8kB,EAAA,GAA2Bz8kB,IGLvE,WACb,MAAM,IAAIt2B,UAAU,uIACtB,CHG8F,EAC9F,CI+CA,IAAI49gC,EAA0B,WAE5B,SAASA,EAAWtuhC,GAClB,IAAIsU,EAAQlE,KAEZA,KAAKm+gC,WAAa,SAAUn87B,GAC1B,IAAI9R,EAIAA,EAFsB,IAAtBhsE,EAAMsvnB,KAAKp/nB,OACT8P,EAAMk6gC,eACCl6gC,EAAMk6gC,eAAe115B,YACrBxkH,EAAMmgQ,QACNngQ,EAAM4hD,UAAU8iE,WAEhB1kH,EAAMgsE,OAGRhsE,EAAMsvnB,KAAKtvnB,EAAMsvnB,KAAKp/nB,OAAS,GAAGs0H,YAG7CxkH,EAAM4hD,UAAU6iE,aAAa3mC,EAAK9R,GAElChsE,EAAMsvnB,KAAK1/nB,KAAKkuF,EAClB,EAEAhiF,KAAKq+gC,cAA8BvnhC,IAAnBlH,EAAQ0uhC,QAA+D1uhC,EAAQ0uhC,OAC/Ft+gC,KAAKwznB,KAAO,GACZxznB,KAAKo7nB,IAAM,EACXp7nB,KAAKqsF,MAAQz8F,EAAQy8F,MAErBrsF,KAAKxV,IAAMoF,EAAQpF,IACnBwV,KAAK8lD,UAAYl2D,EAAQk2D,UACzB9lD,KAAKqkQ,QAAUz0Q,EAAQy0Q,QACvBrkQ,KAAKo+gC,eAAiBxuhC,EAAQwuhC,eAC9Bp+gC,KAAKkwE,OAAS,IAChB,CAEA,IAAIwxX,EAASw8kB,EAAW99gC,UA4DxB,OA1DAshc,EAAOzjB,QAAU,SAAiB91S,GAChCA,EAAMn2I,QAAQgO,KAAKm+gC,WACrB,EAEAz8kB,EAAOvwW,OAAS,SAAgB0xI,GAI1B7iO,KAAKo7nB,KAAOp7nB,KAAKq+gC,SAAW,KAAQ,IAAO,GAC7Cr+gC,KAAKm+gC,WA7DX,SAA4BvuhC,GAC1B,IAAIoyF,EAAMv5F,SAASskB,cAAc,SASjC,OARAi1E,EAAI/jF,aAAa,eAAgBrO,EAAQpF,UAEnBsM,IAAlBlH,EAAQy8F,OACVrK,EAAI/jF,aAAa,QAASrO,EAAQy8F,OAGpCrK,EAAImO,YAAY1nG,SAASyhI,eAAe,KACxCloC,EAAI/jF,aAAa,SAAU,IACpB+jF,CACT,CAkDsB8mC,CAAmB9oH,OAGrC,IAAIgiF,EAAMhiF,KAAKwznB,KAAKxznB,KAAKwznB,KAAKp/nB,OAAS,GAcvC,GAAI4L,KAAKq+gC,SAAU,CACjB,IAAI5+3B,EAhGV,SAAqBz9D,GACnB,GAAIA,EAAIy9D,MAEN,OAAOz9D,EAAIy9D,MAMb,IAAK,IAAIp6J,EAAI,EAAGA,EAAIoD,SAASm3kB,YAAYxrkB,OAAQ/O,IAC/C,GAAIoD,SAASm3kB,YAAYv6kB,GAAGk5hC,YAAcv87B,EAExC,OAAOv5F,SAASm3kB,YAAYv6kB,EAGlC,CAiFkBm5hC,CAAYx87B,GAExB,IAGEy9D,EAAMknY,WAAW9jT,EAAMpjF,EAAMgnY,SAASryhB,OACxC,CAAE,MAAOpP,GAIT,CACF,MACEg9F,EAAImO,YAAY1nG,SAASyhI,eAAe24G,IAG1C7iO,KAAKo7nB,KACP,EAEA15L,EAAOn3V,MAAQ,WAEbvqG,KAAKwznB,KAAKxhoB,QAAQ,SAAUgwF,GAC1B,OAAOA,EAAIh6F,YAAcg6F,EAAIh6F,WAAWkoG,YAAYlO,EACtD,GACAhiF,KAAKwznB,KAAO,GACZxznB,KAAKo7nB,IAAM,CAKb,EAEO8iZ,CACT,CAlG8B,GCjDnBp4hC,EAAMN,KAAKM,IAMX,EAAOya,OAAOysF,aAMd,EAASljG,OAAOC,OAepB,SAASiU,EAAMrY,GACrB,OAAOA,EAAMqY,MACd,CAiBO,SAAS,EAASrY,EAAO6rG,EAASmiB,GACxC,OAAOhuH,EAAM5B,QAAQytG,EAASmiB,EAC/B,CAOO,SAAS8q6B,EAAS94hC,EAAO2nN,GAC/B,OAAO3nN,EAAM4C,QAAQ+kN,EACtB,CAOO,SAAS,EAAQ3nN,EAAO6Q,GAC9B,OAAiC,EAA1B7Q,EAAMigG,WAAWpvF,EACzB,CAQO,SAAS,EAAQ7Q,EAAOorQ,EAAOrkQ,GACrC,OAAO/G,EAAMmV,MAAMi2P,EAAOrkQ,EAC3B,CAMO,SAAS,EAAQ/G,GACvB,OAAOA,EAAMyO,MACd,CAMO,SAAS,EAAQzO,GACvB,OAAOA,EAAMyO,MACd,CAOO,SAAS,EAAQzO,EAAO0uB,GAC9B,OAAOA,EAAMvgB,KAAKnO,GAAQA,CAC3B,CCvGO,IAAIwqC,EAAO,EACPy5M,EAAS,EACT,EAAS,EACT9gP,EAAW,EACX+ohC,EAAY,EACZ6M,EAAa,GAWjB,SAAS33hC,EAAMpB,EAAO+iC,EAAMjhC,EAAQuoB,EAAMoiB,EAAOolF,EAAUpjH,GACjE,MAAO,CAACzO,MAAOA,EAAO+iC,KAAMA,EAAMjhC,OAAQA,EAAQuoB,KAAMA,EAAMoiB,MAAOA,EAAOolF,SAAUA,EAAUrnF,KAAMA,EAAMy5M,OAAQA,EAAQx1O,OAAQA,EAAQ4uF,OAAQ,GACrJ,CAOO,SAAS,EAAMt6D,EAAM0J,GAC3B,OAAO,EAAOrrC,EAAK,GAAI,KAAM,KAAM,GAAI,KAAM,KAAM,GAAI2hC,EAAM,CAACt0B,QAASs0B,EAAKt0B,QAASg+B,EACtF,CAYO,SAASyI,IAMf,OALAg3+B,EAAY/ohC,EAAW,EAAI,EAAO41hC,IAAc51hC,GAAY,EAExD8gP,IAAwB,KAAdioyB,IACbjoyB,EAAS,EAAGz5M,KAEN0h/B,CACR,CAKO,SAAS/phC,IAMf,OALA+phC,EAAY/ohC,EAAW,EAAS,EAAO41hC,EAAY51hC,KAAc,EAE7D8gP,IAAwB,KAAdioyB,IACbjoyB,EAAS,EAAGz5M,KAEN0h/B,CACR,CAKO,SAASl+uB,IACf,OAAO,EAAO+qvB,EAAY51hC,EAC3B,CAKO,SAASooF,IACf,OAAOpoF,CACR,CAOO,SAASgS,EAAOi2P,EAAOrkQ,GAC7B,OAAO,EAAOgyhC,EAAY3txB,EAAOrkQ,EAClC,CAMO,SAASuX,EAAO+L,GACtB,OAAQA,GAEP,KAAK,EAAG,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GACtC,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,IAE3D,KAAK,GAAI,KAAK,IAAK,KAAK,IACvB,OAAO,EAER,KAAK,GACJ,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAC/B,OAAO,EAER,KAAK,GAAI,KAAK,GACb,OAAO,EAGT,OAAO,CACR,CAMO,SAASgrH,EAAOr1I,GACtB,OAAOwqC,EAAOy5M,EAAS,EAAG,EAAS,EAAO80yB,EAAa/4hC,GAAQmD,EAAW,EAAG,EAC9E,CAMO,SAAS61hC,EAASh5hC,GACxB,OAAO+4hC,EAAa,GAAI/4hC,CACzB,CAMO,SAASi5hC,EAAS5ugC,GACxB,OAAOhS,EAAKlD,EAAMhS,EAAW,EAAG4iY,EAAmB,KAAT17W,EAAcA,EAAO,EAAa,KAATA,EAAcA,EAAO,EAAIA,IAC7F,CAcO,SAAS+38B,EAAY/38B,GAC3B,MAAO6hgC,EAAYl+uB,MACdk+uB,EAAY,IACf/phC,IAIF,OAAOmc,EAAM+L,GAAQ,GAAK/L,EAAM4tgC,GAAa,EAAI,GAAK,GACvD,CAwBO,SAASgN,EAAUrohC,EAAOwhC,GAChC,OAASA,GAASlwC,OAEb+phC,EAAY,IAAMA,EAAY,KAAQA,EAAY,IAAMA,EAAY,IAAQA,EAAY,IAAMA,EAAY,MAG/G,OAAO/2gC,EAAMtE,EAAO06E,KAAWl5C,EAAQ,GAAe,IAAV27P,KAA0B,IAAV7rS,KAC7D,CAMO,SAAS4jY,EAAW17W,GAC1B,KAAOloB,YACE+phC,GAEP,KAAK7hgC,EACJ,OAAOlnB,EAER,KAAK,GAAI,KAAK,GACA,KAATknB,GAAwB,KAATA,GAClB07W,EAAUmmpB,GACX,MAED,KAAK,GACS,KAAT7hgC,GACH07W,EAAU17W,GACX,MAED,KAAK,GACJloB,IAIH,OAAOgB,CACR,CAOO,SAASg2hC,EAAW9ugC,EAAMxZ,GAChC,KAAO1O,KAEFkoB,EAAO6hgC,IAAc,KAGhB7hgC,EAAO6hgC,IAAc,IAAsB,KAAXl+uB,OAG1C,MAAO,KAAO74R,EAAMtE,EAAO1N,EAAW,GAAK,IAAM,EAAc,KAATknB,EAAcA,EAAOloB,IAC5E,CAMO,SAAS47R,EAAYltR,GAC3B,MAAQyN,EAAM0vR,MACb7rS,IAED,OAAOgT,EAAMtE,EAAO1N,EACrB,CCrPO,IAAI,EAAK,OACL,EAAM,QACN,EAAS,WAETi2hC,GAAU,OACV,GAAU,OACV,GAAc,OAUd,GAAY,aCRhB,SAAS,GAAWvn6B,EAAUtoG,GAIpC,IAHA,IAAI6yM,EAAS,GACT3tN,EAAS,EAAOojH,GAEXnyH,EAAI,EAAGA,EAAI+O,EAAQ/O,IAC3B08N,GAAU7yM,EAASsoG,EAASnyH,GAAIA,EAAGmyH,EAAUtoG,IAAa,GAE3D,OAAO6yM,CACR,CASO,SAASn4M,GAAWtjB,EAASkQ,EAAOghH,EAAUtoG,GACpD,OAAQ5oB,EAAQ0pB,MACf,IDjBkB,UCiBL,KAAK,GAAa,OAAO1pB,EAAQ08F,OAAS18F,EAAQ08F,QAAU18F,EAAQX,MACjF,KAAKo5hC,GAAS,MAAO,GACrB,KAAK,GAAW,OAAOz4hC,EAAQ08F,OAAS18F,EAAQX,MAAQ,IAAM,GAAUW,EAAQkxH,SAAUtoG,GAAY,IACtG,KAAK,GAAS5oB,EAAQX,MAAQW,EAAQ8rC,MAAMl0B,KAAK,KAGlD,OAAO,EAAOs5G,EAAW,GAAUlxH,EAAQkxH,SAAUtoG,IAAa5oB,EAAQ08F,OAAS18F,EAAQX,MAAQ,IAAM6xH,EAAW,IAAM,EAC3H,CC1BO,SAAShU,GAAS79G,GACxB,OAAOg5hC,EAAQvm/B,GAAM,GAAI,KAAM,KAAM,KAAM,CAAC,IAAKzyC,EAAQq1I,EAAMr1I,GAAQ,EAAG,CAAC,GAAIA,GAChF,CAcO,SAASyyC,GAAOzyC,EAAO+iC,EAAMjhC,EAAQo7O,EAAMlrH,EAAOqn6B,EAAU/yD,EAAQ1z7B,EAAQ0m/B,GAiBlF,IAhBA,IAAIzohC,EAAQ,EACR5R,EAAS,EACTwP,EAAS639B,EACTizD,EAAS,EACT5qgC,EAAW,EACX8a,EAAW,EACX8xL,EAAW,EACXi+zB,EAAW,EACXC,EAAY,EACZvN,EAAY,EACZ7hgC,EAAO,GACPoiB,EAAQulF,EACRH,EAAWwn6B,EACX7vhC,EAAY0zO,EACZ67yB,EAAa1ugC,EAEVmvgC,UACE/v/B,EAAWyi/B,EAAWA,EAAY/phC,KAEzC,KAAK,GACJ,GAAgB,KAAZsnC,GAAqD,IAAlC,EAAOsv/B,EAAYtqhC,EAAS,GAAU,EACkB,GAA1EqqhC,EAAQC,GAAc,EAAQE,EAAQ/M,GAAY,IAAK,OAAQ,SAClEuN,GAAa,GACd,KACD,CAED,KAAK,GAAI,KAAK,GAAI,KAAK,GACtBV,GAAcE,EAAQ/M,GACtB,MAED,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GAC9B6M,GAAc32D,EAAW347B,GACzB,MAED,KAAK,GACJsv/B,GAAcG,EAAS3t8B,IAAU,EAAG,GACpC,SAED,KAAK,GACJ,OAAQyiN,KACP,KAAK,GAAI,KAAK,GACb,EAAOhsH,GAAQm32B,EAAUh3hC,IAAQopF,KAAUxoD,EAAMjhC,GAASw3hC,GAC1D,MACD,QACCP,GAAc,IAEhB,MAED,KAAK,IAAMx9zB,EACV3oL,EAAO/hC,KAAW,EAAOkohC,GAAcU,EAExC,KAAK,IAAMl+zB,EAAU,KAAK,GAAI,KAAK,EAClC,OAAQ2wzB,GAEP,KAAK,EAAG,KAAK,IAAKsN,EAAW,EAE7B,KAAK,GAAKv6hC,EACL0vB,EAAW,GAAM,EAAOoqgC,GAActqhC,GACzC,EAAOkgB,EAAW,GAAK+qgC,GAAYX,EAAa,IAAK77yB,EAAMp7O,EAAQ2M,EAAS,GAAKirhC,GAAY,EAAQX,EAAY,IAAK,IAAM,IAAK77yB,EAAMp7O,EAAQ2M,EAAS,GAAI6qhC,GAC7J,MAED,KAAK,GAAIP,GAAc,IAEvB,QAGC,GAFA,EAAOvvhC,EAAYmwhC,GAAQZ,EAAYh2/B,EAAMjhC,EAAQ+O,EAAO5R,EAAQ+yH,EAAOp/E,EAAQvoB,EAAMoiB,EAAQ,GAAIolF,EAAW,GAAIpjH,GAAS4qhC,GAE3G,MAAdnN,EACH,GAAe,IAAXjthC,EACHwzC,GAAMsm/B,EAAYh2/B,EAAMv5B,EAAWA,EAAWijC,EAAO4s/B,EAAU5qhC,EAAQmkC,EAAQi/E,QAE/E,OAAmB,KAAX0n6B,GAA2C,MAA1B,EAAOR,EAAY,GAAa,IAAMQ,GAE9D,KAAK,IAAK,KAAK,IAAK,KAAK,IACxB9m/B,GAAMzyC,EAAOwJ,EAAWA,EAAW0zO,GAAQ,EAAOy8yB,GAAQ35hC,EAAOwJ,EAAWA,EAAW,EAAG,EAAGwoH,EAAOp/E,EAAQvoB,EAAM2nG,EAAOvlF,EAAQ,GAAIh+B,GAASojH,GAAWG,EAAOH,EAAUpjH,EAAQmkC,EAAQsqM,EAAOzwM,EAAQolF,GACzM,MACD,QACCp/E,GAAMsm/B,EAAYvvhC,EAAWA,EAAWA,EAAW,CAAC,IAAKqoH,EAAU,EAAGj/E,EAAQi/E,IAIpFhhH,EAAQ5R,EAAS0vB,EAAW,EAAG4sM,EAAWk+zB,EAAY,EAAGpvgC,EAAO0ugC,EAAa,GAAItqhC,EAAS639B,EAC1F,MAED,KAAK,GACJ739B,EAAS,EAAI,EAAOsqhC,GAAapqgC,EAAW8a,EAC7C,QACC,GAAI8xL,EAAW,EACd,GAAiB,KAAb2wzB,IACD3wzB,OACE,GAAiB,KAAb2wzB,GAAkC,GAAd3wzB,KAA6B,KAAVrmL,IAC/C,SAEF,OAAQ6j/B,GAAc,EAAK7M,GAAYA,EAAY3wzB,GAElD,KAAK,GACJk+zB,EAAYx6hC,EAAS,EAAI,GAAK85hC,GAAc,MAAO,GACnD,MAED,KAAK,GACJnm/B,EAAO/hC,MAAY,EAAOkohC,GAAc,GAAKU,EAAWA,EAAY,EACpE,MAED,KAAK,GAEW,KAAXzrvB,MACH+qvB,GAAcE,EAAQ92hC,MAEvBo3hC,EAASvrvB,IAAQ/uS,EAASwP,EAAS,EAAO4b,EAAO0ugC,GAAch7vB,EAAWxyM,MAAW2g8B,IACrF,MAED,KAAK,GACa,KAAbzi/B,GAAyC,GAAtB,EAAOsv/B,KAC7Bx9zB,EAAW,IAIjB,OAAO89zB,CACR,CAgBO,SAASM,GAAS35hC,EAAO+iC,EAAMjhC,EAAQ+O,EAAO5R,EAAQ+yH,EAAOp/E,EAAQvoB,EAAMoiB,EAAOolF,EAAUpjH,GAKlG,IAJA,IAAI6nO,EAAOr3O,EAAS,EAChBi+O,EAAkB,IAAXj+O,EAAe+yH,EAAQ,CAAC,IAC/B5kG,EAAO,EAAO8vN,GAETx9O,EAAI,EAAG2gC,EAAI,EAAGvU,EAAI,EAAGpsB,EAAImR,IAASnR,EAC1C,IAAK,IAAIkB,EAAI,EAAG5C,EAAI,EAAOgC,EAAOs2O,EAAO,EAAGA,EAAOn2O,EAAIkgC,EAAIuS,EAAOlzC,KAAMy8D,EAAIn8D,EAAOY,EAAIwsB,IAAQxsB,GAC1Fu7D,EAAI9jD,EAAKgoB,EAAI,EAAI68M,EAAKt8O,GAAK,IAAM5C,EAAI,EAAQA,EAAG,OAAQk/O,EAAKt8O,QAChE6rC,EAAM3gB,KAAOqwC,GAEhB,OAAO/6D,EAAKpB,EAAO+iC,EAAMjhC,EAAmB,IAAX7C,EAAe,GAAUorB,EAAMoiB,EAAOolF,EAAUpjH,EAClF,CAQO,SAASuzK,GAAShiL,EAAO+iC,EAAMjhC,GACrC,OAAOV,EAAKpB,EAAO+iC,EAAMjhC,EAAQs3hC,GAAS,EH/InClN,GG+IiD,EAAOlshC,EAAO,GAAI,GAAI,EAC/E,CASO,SAAS05hC,GAAa15hC,EAAO+iC,EAAMjhC,EAAQ2M,GACjD,OAAOrN,EAAKpB,EAAO+iC,EAAMjhC,EAAQ,GAAa,EAAO9B,EAAO,EAAGyO,GAAS,EAAOzO,EAAOyO,EAAS,GAAI,GAAIA,EACxG,CCzLA,IAAImrhC,GAA8B,SAAqCxuxB,EAAOx4N,EAAQ/hC,GAIpF,IAHA,IAAI44B,EAAW,EACXyi/B,EAAY,EAGdzi/B,EAAWyi/B,EACXA,EAAYl+uB,IAEK,KAAbvkQ,GAAiC,KAAdyi/B,IACrBt5+B,EAAO/hC,GAAS,IAGdyN,EAAM4tgC,IAIV/phC,IAGF,OAAOgT,EAAMi2P,EAAOjoQ,EACtB,EAkDI02hC,GAA+B,IAAIzw8B,QACnC8wa,GAAS,SAAgBv5f,GAC3B,GAAqB,SAAjBA,EAAQ0pB,MAAoB1pB,EAAQmB,UAExCnB,EAAQ8N,OAAS,GAFjB,CAUA,IAJA,IAAIzO,EAAQW,EAAQX,MAChB8B,EAASnB,EAAQmB,OACjBg4hC,EAAiBn5hC,EAAQsjP,SAAWniP,EAAOmiP,QAAUtjP,EAAQ6pC,OAAS1oC,EAAO0oC,KAE1D,SAAhB1oC,EAAOuoB,MAEZ,KADAvoB,EAASA,EAAOA,QACH,OAIf,IAA6B,IAAzBnB,EAAQ8rC,MAAMh+B,QAAwC,KAAxBzO,EAAMigG,WAAW,IAE/C457B,GAAc3rhC,IAAIpM,MAMlBg4hC,EAAJ,CAIAD,GAAczrhC,IAAIzN,GAAS,GAK3B,IAJA,IAAIiyC,EAAS,GACTo/E,EArCS,SAAkBhyH,EAAO4yC,GACtC,OAAOom/B,EA5CK,SAAiBxm/B,EAAQI,GAErC,IAAI/hC,GAAS,EACTq7gC,EAAY,GAEhB,GACE,OAAQ5tgC,EAAM4tgC,IACZ,KAAK,EAEe,KAAdA,GAA+B,KAAXl+uB,MAKtBp7P,EAAO/hC,GAAS,GAGlB2hC,EAAO3hC,IAAU+ohC,GAA4Bz2hC,EAAW,EAAGyvC,EAAQ/hC,GACnE,MAEF,KAAK,EACH2hC,EAAO3hC,IAAUoohC,EAAQ/M,GACzB,MAEF,KAAK,EAEH,GAAkB,KAAdA,EAAkB,CAEpB15+B,IAAS3hC,GAAoB,KAAXm9R,IAAgB,MAAQ,GAC1Cp7P,EAAO/hC,GAAS2hC,EAAO3hC,GAAOpC,OAC9B,KACF,CAIF,QACE+jC,EAAO3hC,IAAU,EAAKq7gC,UAEnBA,EAAY/phC,KAErB,OAAOqwC,CACT,CAGiBun/B,CAAQ1k5B,EAAMr1I,GAAQ4yC,GACvC,CAmCcon/B,CAASh6hC,EAAO4yC,GACxBqn/B,EAAcn4hC,EAAO2qC,MAEhB/sC,EAAI,EAAGosB,EAAI,EAAGpsB,EAAIsyH,EAAMvjH,OAAQ/O,IACvC,IAAK,IAAI2gC,EAAI,EAAGA,EAAI45/B,EAAYxrhC,OAAQ4xB,IAAKvU,IAC3CnrB,EAAQ8rC,MAAM3gB,GAAK8mB,EAAOlzC,GAAKsyH,EAAMtyH,GAAGtB,QAAQ,OAAQ67hC,EAAY55/B,IAAM45/B,EAAY55/B,GAAK,IAAM2xF,EAAMtyH,EAT3G,CAtBA,CAkCF,EACIw6hC,GAAc,SAAqBv5hC,GACrC,GAAqB,SAAjBA,EAAQ0pB,KAAiB,CAC3B,IAAIrqB,EAAQW,EAAQX,MAGI,MAAxBA,EAAMigG,WAAW,IACO,KAAxBjgG,EAAMigG,WAAW,KAEft/F,EAAgB,OAAI,GACpBA,EAAQX,MAAQ,GAEpB,CACF,EAgHA,SAAS,GAAOA,EAAOyO,GACrB,OL1NK,SAAezO,EAAOyO,GAC5B,OAA0B,GAAnB,EAAOzO,EAAO,MAAiByO,GAAU,EAAK,EAAOzO,EAAO,KAAO,EAAK,EAAOA,EAAO,KAAO,EAAK,EAAOA,EAAO,KAAO,EAAK,EAAOA,EAAO,GAAK,CACvJ,CKwNU2G,CAAK3G,EAAOyO,IAElB,KAAK,KACH,OAAO,EAAS,SAAWzO,EAAQA,EAGrC,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAO,EAASA,EAAQA,EAG1B,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAO,EAASA,EAAQ,EAAMA,EAAQ,EAAKA,EAAQA,EAGrD,KAAK,KACL,KAAK,KACH,OAAO,EAASA,EAAQ,EAAKA,EAAQA,EAGvC,KAAK,KACH,OAAO,EAASA,EAAQ,EAAK,QAAUA,EAAQA,EAGjD,KAAK,KACH,OAAO,EAASA,EAAQ,EAAQA,EAAO,iBAAkB,EAAS,WAAa,EAAK,aAAeA,EAGrG,KAAK,KACH,OAAO,EAASA,EAAQ,EAAK,aAAe,EAAQA,EAAO,cAAe,IAAMA,EAGlF,KAAK,KACH,OAAO,EAASA,EAAQ,EAAK,iBAAmB,EAAQA,EAAO,4BAA6B,IAAMA,EAGpG,KAAK,KACH,OAAO,EAASA,EAAQ,EAAK,EAAQA,EAAO,SAAU,YAAcA,EAGtE,KAAK,KACH,OAAO,EAASA,EAAQ,EAAK,EAAQA,EAAO,QAAS,kBAAoBA,EAG3E,KAAK,KACH,OAAO,EAAS,OAAS,EAAQA,EAAO,QAAS,IAAM,EAASA,EAAQ,EAAK,EAAQA,EAAO,OAAQ,YAAcA,EAGpH,KAAK,KACH,OAAO,EAAS,EAAQA,EAAO,qBAAsB,KAAO,EAAS,MAAQA,EAG/E,KAAK,KACH,OAAO,EAAQ,EAAQ,EAAQA,EAAO,eAAgB,EAAS,MAAO,cAAe,EAAS,MAAOA,EAAO,IAAMA,EAGpH,KAAK,KACL,KAAK,KACH,OAAO,EAAQA,EAAO,oBAAqB,YAG7C,KAAK,KACH,OAAO,EAAQ,EAAQA,EAAO,oBAAqB,EAAS,cAAgB,EAAK,gBAAiB,aAAc,WAAa,EAASA,EAAQA,EAGhJ,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACH,OAAO,EAAQA,EAAO,kBAAmB,EAAS,QAAUA,EAG9D,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAEH,GAAI,EAAOA,GAAS,EAAIyO,EAAS,EAAG,OAAQ,EAAOzO,EAAOyO,EAAS,IAEjE,KAAK,IAEH,GAAkC,KAA9B,EAAOzO,EAAOyO,EAAS,GAAW,MAGxC,KAAK,IACH,OAAO,EAAQzO,EAAO,mBAAoB,KAAO,EAAP,UAAiC,GAAoC,KAA7B,EAAOA,EAAOyO,EAAS,GAAY,KAAO,UAAYzO,EAG1I,KAAK,IACH,OAAQ84hC,EAAQ94hC,EAAO,WAAa,GAAO,EAAQA,EAAO,UAAW,kBAAmByO,GAAUzO,EAAQA,EAE9G,MAGF,KAAK,KAEH,GAAkC,MAA9B,EAAOA,EAAOyO,EAAS,GAAY,MAGzC,KAAK,KACH,OAAQ,EAAOzO,EAAO,EAAOA,GAAS,IAAM84hC,EAAQ94hC,EAAO,eAAiB,MAE1E,KAAK,IACH,OAAO,EAAQA,EAAO,IAAK,IAAM,GAAUA,EAG7C,KAAK,IACH,OAAO,EAAQA,EAAO,wBAAyB,KAAO,GAAgC,KAAtB,EAAOA,EAAO,IAAa,UAAY,IAAxD,UAA+E,EAA/E,SAAwG,EAAK,WAAaA,EAG7K,MAGF,KAAK,KACH,OAAQ,EAAOA,EAAOyO,EAAS,KAE7B,KAAK,IACH,OAAO,EAASzO,EAAQ,EAAK,EAAQA,EAAO,qBAAsB,MAAQA,EAG5E,KAAK,IACH,OAAO,EAASA,EAAQ,EAAK,EAAQA,EAAO,qBAAsB,SAAWA,EAG/E,KAAK,GACH,OAAO,EAASA,EAAQ,EAAK,EAAQA,EAAO,qBAAsB,MAAQA,EAG9E,OAAO,EAASA,EAAQ,EAAKA,EAAQA,EAGzC,OAAOA,CACT,CAEA,IAqCIm6hC,GAAuB,CArCZ,SAAkBx5hC,EAASkQ,EAAOghH,EAAUtoG,GACzD,GAAI5oB,EAAQ8N,QAAU,IAAQ9N,EAAgB,OAAG,OAAQA,EAAQ0pB,MAC/D,KAAK,GACH1pB,EAAgB,OAAI,GAAOA,EAAQX,MAAOW,EAAQ8N,QAClD,MAEF,KAAK,GACH,OAAO,GAAU,CAAC,EAAK9N,EAAS,CAC9BX,MAAO,EAAQW,EAAQX,MAAO,IAAK,IAAM,MACtCupB,GAEP,KAAK,GACH,GAAI5oB,EAAQ8N,OAAQ,OLzTnB,SAAkBigB,EAAOnF,GAC/B,OAAOmF,EAAMthB,IAAImc,GAAUhR,KAAK,GACjC,CKuTiC,CAAQ5X,EAAQ8rC,MAAO,SAAUzsC,GAC1D,OLlYD,SAAgBA,GACtB,OAAQA,EKiYoB,wBLjYJ0/B,KAAK1/B,IAAUA,EAAM,GAAKA,CACnD,CKgYgB,CAAMA,IAEZ,IAAK,aACL,IAAK,cACH,OAAO,GAAU,CAAC,EAAKW,EAAS,CAC9B8rC,MAAO,CAAC,EAAQzsC,EAAO,cAAe,gBACnCupB,GAGP,IAAK,gBACH,OAAO,GAAU,CAAC,EAAK5oB,EAAS,CAC9B8rC,MAAO,CAAC,EAAQzsC,EAAO,aAAc,IAAM,EAAS,eAClD,EAAKW,EAAS,CAChB8rC,MAAO,CAAC,EAAQzsC,EAAO,aAAc,eACnC,EAAKW,EAAS,CAChB8rC,MAAO,CAAC,EAAQzsC,EAAO,aAAc,EAAK,gBACvCupB,GAGT,MAAO,EACT,GAEN,GAsIA,SAlIkB,SAAqBtf,GACrC,IAAIpF,EAAMoF,EAAQpF,IAMlB,GAAa,QAARA,EAAe,CAClB,IAAIu1hC,EAAYt3hC,SAAS62Q,iBAAiB,qCAK1ChrQ,MAAM8L,UAAUpO,QAAQqO,KAAK0/gC,EAAW,SAAUh5hC,IASL,IAFhBA,EAAK+W,aAAa,gBAEpBvV,QAAQ,OAGjCE,SAASorD,KAAKs8C,YAAYppG,GAC1BA,EAAKkX,aAAa,SAAU,IAC9B,EACF,CAEA,IAUI6nD,EAkBA664B,EA5BAq/E,EAAgBpwhC,EAAQowhC,eAAiBF,GASzCG,EAAW,CAAC,EAEZC,EAAiB,GAGnBp69B,EAAYl2D,EAAQk2D,WAAar9D,SAASorD,KAC1Cv/C,MAAM8L,UAAUpO,QAAQqO,KAExB5X,SAAS62Q,iBAAiB,wBAA2B90Q,EAAM,OAAS,SAAUzD,GAG5E,IAFA,IAAIo5hC,EAASp5hC,EAAK+W,aAAa,gBAAgB5c,MAAM,KAE5CmE,EAAI,EAAGA,EAAI86hC,EAAO/rhC,OAAQ/O,IACjC46hC,EAASE,EAAO96hC,KAAM,EAGxB66hC,EAAepshC,KAAK/M,EACtB,GAiBA,IAAIq5hC,ECjfmBlxgC,EAjBC+tM,EACvB7oN,EDkgBGishC,EAAoB,CAACz2gC,IClfFsF,ED4fT,SAAU2zN,GACtBu9yB,EAAajv7B,OAAO0xI,EACtB,EC7fI,SAAUv8O,GACXA,EAAQoiC,OACRpiC,EAAUA,EAAQ08F,SACrB9zE,EAAS5oB,EACZ,ID0fOk87B,GChhBoBvluB,EDsfD,CAAC4iS,GAAQggiB,IA0Be7xhC,OAAOgyhC,EAAeK,GC/gBpEjshC,EAAS,EAAO6oN,GAEb,SAAU32N,EAASkQ,EAAOghH,EAAUtoG,GAG1C,IAFA,IAAI6yM,EAAS,GAEJ18N,EAAI,EAAGA,EAAI+O,EAAQ/O,IAC3B08N,GAAU9E,EAAW53N,GAAGiB,EAASkQ,EAAOghH,EAAUtoG,IAAa,GAEhE,OAAO6yM,CACR,GD4gBG4+uB,EAAU,SAAgBh50B,EAAU245B,EAAY7g4B,EAAO8g4B,GACrDH,EAAe3g4B,EAJR,GAAUj8C,GAcVmkB,EAAWA,EAAW,IAAM245B,EAAWprhC,OAAS,IAAMorhC,EAAWprhC,QAdtCst7B,GAgB9B+9F,IACFh0/B,EAAM0z/B,SAASK,EAAW/shC,OAAQ,EAEtC,EAGF,IAAIg5B,EAAQ,CACV/hC,IAAKA,EACLi1J,MAAO,IAAIy+3B,EAAW,CACpB1zhC,IAAKA,EACLs7D,UAAWA,EACXumC,MAAOz8F,EAAQy8F,MACfiy7B,OAAQ1uhC,EAAQ0uhC,OAChBj6wB,QAASz0Q,EAAQy0Q,QACjB+5wB,eAAgBxuhC,EAAQwuhC,iBAE1B/x7B,MAAOz8F,EAAQy8F,MACf4z7B,SAAUA,EACVO,WAAY,CAAC,EACbrv7B,OAAQwv2B,GAGV,OADAp06B,EAAMkzH,MAAMw+R,QAAQiimB,GACb3z/B,CACT,EExjBA,IAAI,GAAiB,SAAwBA,EAAO+z/B,EAAYG,GAC9D,IAAI326B,EAAYv9E,EAAM/hC,IAAM,IAAM81hC,EAAW/shC,MAO5B,IAAhBkthC,QAIwD3phC,IAAhCy1B,EAAMi0/B,WAAW126B,KACxCv9E,EAAMi0/B,WAAW126B,GAAaw26B,EAAWprhC,OAE7C,EC2BA,SAnDA,SAAiBud,GAYf,IANA,IAEIhB,EAFApuB,EAAI,EAGJgC,EAAI,EACJoK,EAAMgjB,EAAIre,OAEP3E,GAAO,IAAKpK,EAAGoK,GAAO,EAE3BgiB,EAEe,YAAV,OAHLA,EAAwB,IAApBgB,EAAImzE,WAAWvgG,IAAmC,IAAtBotB,EAAImzE,aAAavgG,KAAc,GAA2B,IAAtBotB,EAAImzE,aAAavgG,KAAc,IAA4B,IAAtBotB,EAAImzE,aAAavgG,KAAc,MAG9F,OAAZosB,IAAM,KAAgB,IAIpDpuB,EAEe,YAAV,OALLouB,GAEAA,IAAM,MAGoC,OAAZA,IAAM,KAAgB,IAErC,YAAV,MAAJpuB,IAAyC,OAAZA,IAAM,KAAgB,IAItD,OAAQoM,GACN,KAAK,EACHpM,IAA8B,IAAxBovB,EAAImzE,WAAWvgG,EAAI,KAAc,GAEzC,KAAK,EACHhC,IAA8B,IAAxBovB,EAAImzE,WAAWvgG,EAAI,KAAc,EAEzC,KAAK,EAEHhC,EAEe,YAAV,OAHLA,GAAyB,IAApBovB,EAAImzE,WAAWvgG,MAGsB,OAAZhC,IAAM,KAAgB,IASxD,SAHAA,EAEe,YAAV,OAHLA,GAAKA,IAAM,MAG+B,OAAZA,IAAM,KAAgB,KACvCA,IAAM,MAAQ,GAAG2D,SAAS,GACzC,ECHA,GAjDmB,CACjBs4b,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbnrQ,QAAS,EACTs+L,KAAM,EACN8sE,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXE,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjB+/lB,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClB5tqB,WAAY,EACZtpV,WAAY,EACZlsB,QAAS,EACT5K,MAAO,EACPgub,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRzsQ,KAAM,EACNus2B,gBAAiB,EAEjB7/lB,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACftxZ,YAAa,GC1Cf,IAEI8w/B,GAAiB,aACjBC,GAAiB,8BAEjBC,GAAmB,SAA0B3sgC,GAC/C,OAAkC,KAA3BA,EAASsxE,WAAW,EAC7B,EAEIs77B,GAAqB,SAA4Bv7hC,GACnD,OAAgB,MAATA,GAAkC,kBAAVA,CACjC,EAEIw7hC,GCjBJ,WACE,IAAI50/B,EAAQziC,OAAO4W,OAAO,MAC1B,OAAO,SAAUi3D,GAEf,YADmB7gE,IAAfy1B,EAAMorC,KAAoBprC,EAAMorC,GDe/Bsp9B,GAD+CG,ECdNzp9B,GDeXyp9B,EAAYA,EAAUr9hC,QAAQg9hC,GAAgB,OAAO34hC,eCdjFmkC,EAAMorC,GDa6B,IAAUyp9B,CCZtD,CACF,CDWsC,GAIlCC,GAAoB,SAA2B72hC,EAAK7E,GACtD,OAAQ6E,GACN,IAAK,YACL,IAAK,gBAED,GAAqB,iBAAV7E,EACT,OAAOA,EAAM5B,QAAQi9hC,GAAgB,SAAUh9hC,EAAOuhC,EAAIC,GAMxD,OALAsnD,GAAS,CACPv5E,KAAMgyB,EACNrwB,OAAQswB,EACR19B,KAAMglF,IAEDvnD,CACT,GAKR,OAAsB,IAAlB,GAAS/6B,IAAey2hC,GAAiBz2hC,IAAyB,iBAAV7E,GAAgC,IAAVA,EAI3EA,EAHEA,EAAQ,IAInB,EAgCA,SAAS27hC,GAAoB1jJ,EAAa4iJ,EAAYe,GACpD,GAAqB,MAAjBA,EACF,MAAO,GAGT,QAAuCzqhC,IAAnCyqhC,EAAcC,iBAKhB,OAAOD,EAGT,cAAeA,GACb,IAAK,UAED,MAAO,GAGX,IAAK,SAED,GAA2B,IAAvBA,EAAc17+B,KAMhB,OALAinC,GAAS,CACPv5E,KAAMguhC,EAAchuhC,KACpB2B,OAAQqshC,EAAcrshC,OACtBpN,KAAMglF,IAEDy08B,EAAchuhC,KAGvB,QAA6BuD,IAAzByqhC,EAAcrshC,OAAsB,CACtC,IAAIpN,EAAOy5hC,EAAcz5hC,KAEzB,QAAagP,IAAThP,EAGF,UAAgBgP,IAAThP,GACLglF,GAAS,CACPv5E,KAAMzL,EAAKyL,KACX2B,OAAQpN,EAAKoN,OACbpN,KAAMglF,IAERhlF,EAAOA,EAAKA,KAUhB,OANay5hC,EAAcrshC,OAAS,GAOtC,CAEA,OA2CR,SAAgC0o4B,EAAa4iJ,EAAYlugC,GACvD,IAAIxuB,EAAS,GAEb,GAAIwQ,MAAMyb,QAAQuC,GAChB,IAAK,IAAIjtB,EAAI,EAAGA,EAAIitB,EAAIle,OAAQ/O,IAC9BvB,GAAUw9hC,GAAoB1jJ,EAAa4iJ,EAAYlugC,EAAIjtB,IAAM,SAGnE,IAAK,IAAIkP,KAAQ+d,EAAK,CACpB,IAAI3sB,EAAQ2sB,EAAI/d,GAEhB,GAAqB,iBAAV5O,EACS,MAAd66hC,QAA4C1phC,IAAtB0phC,EAAW76hC,GACnC7B,GAAUyQ,EAAO,IAAMishC,EAAW76hC,GAAS,IAClCu7hC,GAAmBv7hC,KAC5B7B,GAAUq9hC,GAAiB5shC,GAAQ,IAAM8shC,GAAkB9shC,EAAM5O,GAAS,UAO5E,IAAI2O,MAAMyb,QAAQpqB,IAA8B,iBAAbA,EAAM,IAAkC,MAAd66hC,QAA+C1phC,IAAzB0phC,EAAW76hC,EAAM,IAM7F,CACL,IAAIgjF,EAAe248B,GAAoB1jJ,EAAa4iJ,EAAY76hC,GAEhE,OAAQ4O,GACN,IAAK,YACL,IAAK,gBAEDzQ,GAAUq9hC,GAAiB5shC,GAAQ,IAAMo0E,EAAe,IACxD,MAGJ,QAMI7kF,GAAUyQ,EAAO,IAAMo0E,EAAe,IAG9C,MAzBE,IAAK,IAAIhuE,EAAK,EAAGA,EAAKhV,EAAMyO,OAAQuG,IAC9BumhC,GAAmBv7hC,EAAMgV,MAC3B7W,GAAUq9hC,GAAiB5shC,GAAQ,IAAM8shC,GAAkB9shC,EAAM5O,EAAMgV,IAAO,IAyBxF,CAGF,OAAO7W,CACT,CAjGe29hC,CAAuB7jJ,EAAa4iJ,EAAYe,GAG3D,IAAK,WAED,QAAoBzqhC,IAAhB8m4B,EAA2B,CAC7B,IAAI8jJ,EAAiB508B,GACjB35E,EAASouhC,EAAc3jJ,GAE3B,OADA9wzB,GAAS408B,EACFJ,GAAoB1jJ,EAAa4iJ,EAAYrthC,EACtD,EAyBN,GAAkB,MAAdqthC,EACF,OAAOe,EAGT,IAAIh5+B,EAASi4+B,EAAWe,GACxB,YAAkBzqhC,IAAXyxC,EAAuBA,EAASg5+B,CACzC,CA0DA,IASIz08B,GATA608B,GAAe,iCAUf,GAAkB,SAAyBtthC,EAAMmshC,EAAY5iJ,GAC/D,GAAoB,IAAhBvp4B,EAAKD,QAAmC,iBAAZC,EAAK,IAA+B,OAAZA,EAAK,SAAkCyC,IAAnBzC,EAAK,GAAGa,OAClF,OAAOb,EAAK,GAGd,IAAIuthC,GAAa,EACb1shC,EAAS,GACb43E,QAASh2E,EACT,IAAI+qhC,EAAUxthC,EAAK,GAEJ,MAAXwthC,QAAmC/qhC,IAAhB+qhC,EAAQtz+B,KAC7Bqz+B,GAAa,EACb1shC,GAAUoshC,GAAoB1jJ,EAAa4iJ,EAAYqB,IAMvD3shC,GAAU2shC,EAAQ,GAIpB,IAAK,IAAIx8hC,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAC/B6P,GAAUoshC,GAAoB1jJ,EAAa4iJ,EAAYnshC,EAAKhP,IAExDu8hC,IAKF1shC,GAAU2shC,EAAQx8hC,IActBs8hC,GAAajg3B,UAAY,EAIzB,IAHA,IACI19K,EADA89hC,EAAiB,GAG0B,QAAvC99hC,EAAQ29hC,GAAat8/B,KAAKnwB,KAChC4shC,GAAkB,IAClB99hC,EAAM,GAkBR,MAAO,CACLuP,KAhBS,GAAW2B,GAAU4shC,EAiB9B5shC,OAAQA,EACRpN,KAAMglF,GAEV,EEjTI,KADqB,EAA+B,oBAAI,EAA+B,oBAJxE,SAAsBpsE,GACvC,OAAOA,GACT,ECII,GAAiB,CAAC,EAAE9U,eAEpBm2hC,IAAqC,IAAA9u/B,eAMlB,oBAAhB1rC,YAA6C,GAAY,CAC9DiD,IAAK,QACF,MAMeu3hC,GAAoB/jsB,SAAxC,IAKI,GAAmB,SAA0BtpP,GAE/C,OAAoB,IAAA0pP,YAAW,SAAUhsT,EAAOygF,GAE9C,IAAItmF,GAAQ,IAAAw9M,YAAWg4yB,IACvB,OAAOrt7B,EAAKtiE,EAAO7F,EAAOsmF,EAC5B,EACF,EAEI,IAA8B,IAAA5/E,eAAc,CAAC,GAwG7C+u/B,GAAe,qCA2BfC,GAAY,SAAmB72hC,GACjC,IAAImhC,EAAQnhC,EAAKmhC,MACb+z/B,EAAal1hC,EAAKk1hC,WAClBG,EAAcr1hC,EAAKq1hC,YAMvB,OALA,GAAel0/B,EAAO+z/B,EAAYG,GACtB,GAAyC,WACnD,ONpJe,SAAsBl0/B,EAAO+z/B,EAAYG,GAC1D,GAAel0/B,EAAO+z/B,EAAYG,GAClC,IAAI326B,EAAYv9E,EAAM/hC,IAAM,IAAM81hC,EAAW/shC,KAE7C,QAAwCuD,IAApCy1B,EAAM0z/B,SAASK,EAAW/shC,MAAqB,CACjD,IAAIsC,EAAUyqhC,EAEd,GACoB/z/B,EAAM4kE,OAAOmv7B,IAAezqhC,EAAU,IAAMi0G,EAAY,GAAIj0G,EAAS02B,EAAMkzH,OAAO,GAEpG5pJ,EAAUA,EAAQ/N,gBACCgP,IAAZjB,EACX,CACF,CMuIW,CAAa02B,EAAO+z/B,EAAYG,EACzC,GAEO,IACT,EAEIyB,GAAyB,GAAiB,SAAU9v/B,EAAO7F,EAAOsmF,GACpE,IAAIsv6B,EAAU/v/B,EAAMjpC,IAIG,iBAAZg5hC,QAAsDrrhC,IAA9By1B,EAAMi0/B,WAAW2B,KAClDA,EAAU51/B,EAAMi0/B,WAAW2B,IAG7B,IAAI9qK,EAAmBjl1B,EAAM4v/B,IACzBI,EAAmB,CAACD,GACpBr46B,EAAY,GAEe,iBAApB13E,EAAM03E,UACfA,ENnMJ,SAA6B026B,EAAY4B,EAAkB1wqB,GACzD,IAAI2wqB,EAAe,GAQnB,OAPA3wqB,EAAWxwX,MAAM,KAAK8Q,QAAQ,SAAU83G,QACRhzG,IAA1B0phC,EAAW126B,GACbs46B,EAAiBtuhC,KAAK0shC,EAAW126B,GAAa,KAE9Cu46B,GAAgBv46B,EAAY,GAEhC,GACOu46B,CACT,CMyLgB,CAAoB91/B,EAAMi0/B,WAAY4B,EAAkBhw/B,EAAM03E,WAC9C,MAAnB13E,EAAM03E,YACfA,EAAY13E,EAAM03E,UAAY,KAGhC,IAAIw26B,EAAa,GAAgB8B,OAAkBtrhC,GAAW,IAAAizO,YAAW,KAUzEjgI,GAAav9E,EAAM/hC,IAAM,IAAM81hC,EAAW/shC,KAC1C,IAAI4riB,EAAW,CAAC,EAEhB,IAAK,IAAI30iB,KAAO4nC,EACV,GAAe/xB,KAAK+xB,EAAO5nC,IAAgB,QAARA,GAAiBA,IAAQw3hC,KAC9D7if,EAAS30iB,GAAO4nC,EAAM5nC,IAM1B,OAFA20iB,EAAStsb,IAAMA,EACfssb,EAASr1b,UAAYA,GACD,IAAA/8F,eAAc,EAAAuwU,SAAU,MAAmB,IAAAvwU,eAAck1gC,GAAW,CACtF11/B,MAAOA,EACP+z/B,WAAYA,EACZG,YAAyC,iBAArBppK,KACL,IAAAtq2B,eAAcsq2B,EAAkBl4U,GACnD,G,YCjGI5jK,GAAM,SAAavrX,EAAMoiB,GAC3B,IAAI/9B,EAAOF,UAEX,GAAa,MAATi+B,IAAkB,GAAe/xB,KAAK+xB,EAAO,OAE/C,OAAO,EAAArlB,cAAcjM,WAAMhK,EAAWzC,GAGxC,IAAIuwN,EAAavwN,EAAKD,OAClBkuhC,EAAwB,IAAIhuhC,MAAMswN,GACtC09zB,EAAsB,GAAKJ,GAC3BI,EAAsB,GDIC,SAA4BtygC,EAAMoiB,GAMzD,IAAI+sgB,EAAW,CAAC,EAEhB,IAAK,IAAI30iB,KAAO4nC,EACV,GAAe/xB,KAAK+xB,EAAO5nC,KAC7B20iB,EAAS30iB,GAAO4nC,EAAM5nC,IAY1B,OARA20iB,EAAS6if,IAAgBhygC,EAQlBmvhB,CACT,CC3B6Bojf,CAAmBvygC,EAAMoiB,GAEpD,IAAK,IAAI/sC,EAAI,EAAGA,EAAIu/N,EAAYv/N,IAC9Bi9hC,EAAsBj9hC,GAAKgP,EAAKhP,GAIlC,OAAO,EAAA0nB,cAAcjM,MAAM,KAAMwhhC,EACnC,EAoFA,SAASn5hC,KACP,IAAK,IAAI+K,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,OAAO,GAAgBF,EACzB,C,wCC/O6lF7O,KAAKkE,IAAMlE,KAAKmE,ICAn7E,SAAS,GAAEiX,GAAG,IAAI5b,EAAE,OAAO,OAAOA,EAAE4b,EAAE3Z,oBAAe,EAAOjC,EAAEkC,cAAcC,MAAM,CAAC,SAAS,GAAEyZ,GAAG,OAAO,GAAEA,GAAGvY,iBAAiBuY,EAAE,CDAy/F,CAAC,MAAM,QAAQ,SAAS,QAAYtW,OAAO,CAAEsW,EAAE5b,IAAI4b,EAAE5S,OAAOhJ,EAAEA,EAAE,SAASA,EAAE,QAAS,ICApkGQ,KAAKkE,IAAMlE,KAAKmE,IAAxB,MAA4B6uB,GAAEhzB,KAAK+F,MAAgM,SAAS,GAAEqV,GAAG,OAAO,GAAEA,IAAIA,EAAEzY,UAAU,IAAIC,cAAc,EAAE,CAAC,IAAI,GAA4K,SAAS,GAAEwY,GAAG,OAAOA,aAAa,GAAEA,GAAGrZ,WAAW,CAAC,SAAS,GAAEqZ,GAAG,OAAOA,aAAa,GAAEA,GAAGvZ,OAAO,CAAC,SAAS,GAAEuZ,GAAG,OAAOA,aAAa,GAAEA,GAAGymM,IAAI,CAAC,SAAS,GAAEzmM,GAAG,MAAG,oBAAoB/Y,aAA2B+Y,aAAa,GAAEA,GAAG/Y,YAAY+Y,aAAa/Y,WAAU,CAAC,SAAS,GAAE+Y,GAAG,MAAMtT,SAAStI,EAAEuI,UAAUsT,EAAErT,UAAUnI,EAAEm3D,QAAQziC,GAAG,GAAEnZ,GAAG,MAAM,kCAAkC1e,KAAK8C,EAAEK,EAAEwb,KAAK,CAAC,SAAS,YAAY80B,SAAS5b,EAAE,CAA4b,SAAS,KAAI,MAAM,iCAAiC73B,KAA5jC,WAAa,GAAG,GAAE,OAAO,GAAE,MAAM0e,EAAEtS,UAAUyh/B,cAAc,OAAOnv+B,GAAGtM,MAAMyb,QAAQnP,EAAE4hhC,SAAS,GAAE5hhC,EAAE4hhC,OAAOzvhC,IAAK6N,GAAGA,EAAE6hhC,MAAM,IAAI7hhC,EAAEikE,SAAU3mE,KAAK,KAAK,IAAG5P,UAAUC,SAAS,CAAw5B,GAAI,CAAgE,SAAS,GAAEqS,GAAG,OAAO,GAAEA,GAAGA,EAAEA,EAAErP,cAAc,CAAC,MAAM,GAAE,CAAChL,EAAE,EAAE5C,EAAE,GAAG,SAAS,GAAEid,GAAG,MAAM5b,EAAE,GAAE4b,GAAG,IAAI,GAAE5b,GAAG,OAAO,GAAE,MAAM6b,EAAE7b,EAAE4H,yBAAyBlG,MAAMi9E,EAAE/8E,OAAOvB,EAAEstC,SAAS5Y,GAA1iD,SAAWnZ,GAAG,MAAM5b,EAAE,GAAE4b,GAAG,IAAIC,EAAE8P,WAAW3rB,EAAE0B,OAAOrB,EAAEsrB,WAAW3rB,EAAE4B,QAAQ,MAAMmzB,EAAEnZ,EAAEja,YAAYf,EAAEgb,EAAE/Z,aAAa5D,EAAEu1B,GAAE3X,KAAKkZ,GAAGvB,GAAEnzB,KAAKO,EAAE,OAAO3C,IAAI4d,EAAEkZ,EAAE10B,EAAEO,GAAG,CAACc,MAAMma,EAAEja,OAAOvB,EAAEstC,SAAS1vC,EAAE,CAAo3C,CAAE+B,GAAG,IAAI/B,GAAG82B,EAAEvB,GAAE3X,EAAEna,OAAOma,EAAEna,OAAOi9E,EAAEjiE,GAAGqY,EAAEvB,GAAE3X,EAAEja,QAAQia,EAAEja,QAAQvB,EAAE,OAAOpC,GAAGktB,OAAOC,SAASntB,KAAKA,EAAE,GAAGye,GAAGyO,OAAOC,SAAS1O,KAAKA,EAAE,GAAG,CAACnb,EAAEtD,EAAEU,EAAE+d,EAAE,CAAC,SAAS,GAAEd,EAAE5b,EAAE2+E,EAAEt+E,GAAG,IAAI00B,EAAEvB,OAAE,IAASxzB,IAAIA,GAAE,QAAI,IAAS2+E,IAAIA,GAAE,GAAI,MAAM/9E,EAAEgb,EAAEhU,wBAAwB3J,EAAE,GAAE2d,GAAG,IAAIc,EAAE,GAAE1c,IAAIK,EAAE,GAAEA,KAAKqc,EAAE,GAAErc,IAAIqc,EAAE,GAAEd,IAAI,MAAM8iF,EAAEzgG,EAAE,GAAEA,GAAGkE,OAAOyS,EAAE,MAAK+pE,EAAE,IAAItgF,GAAGuC,EAAEuE,MAAMyP,IAAI,OAAOmgB,EAAE2pE,EAAEz1F,qBAAgB,EAAO8rB,EAAEvzB,aAAa,IAAIkb,EAAEnb,EAAE4Z,GAAGva,EAAEoE,KAAK4P,IAAI,OAAO4e,EAAEkrE,EAAEz1F,qBAAgB,EAAOuqB,EAAE/xB,YAAY,IAAIib,EAAE/d,EAAEge,EAAE/b,EAAEc,MAAMgb,EAAEnb,EAAEpD,EAAEyC,EAAEgB,OAAO8a,EAAE/d,EAAE,GAAGV,EAAE,CAAC,MAAM2d,EAAE,GAAE3d,GAAG+B,EAAEK,GAAG,GAAEA,GAAG,GAAEA,GAAGA,EAAE,IAAIs+E,EAAE/iE,EAAEynG,aAAa,KAAK1kC,GAAGt+E,GAAGL,IAAI4b,GAAG,CAAC,MAAMA,EAAE,GAAE+iE,GAAG3+E,EAAE2+E,EAAE/2E,wBAAwBvH,EAAEgD,iBAAiBs7E,GAAG3+E,EAAEuB,IAAIo9E,EAAEj1E,WAAWiiB,WAAWtrB,EAAE+lE,cAAcxqD,EAAEra,EAAEvB,EAAErB,IAAIggF,EAAEl1E,UAAUkiB,WAAWtrB,EAAE6lE,aAAatqD,EAAEjd,EAAEN,GAAGud,EAAEra,EAAE4Z,GAAGS,EAAEjd,EAAEge,GAAGf,EAAEra,EAAEpD,GAAGyd,EAAEjd,EAAEN,GAAG2B,EAAEuB,EAAE4Z,GAAGnb,EAAErB,EAAEggF,EAAE,GAAEA,GAAG0kC,YAAY,CAAC,CAAC,MAAM,CAAC3hH,MAAMib,EAAE/a,OAAOzD,EAAE6G,IAAImW,EAAElW,MAAM5G,EAAEse,EAAEzX,OAAOiW,EAAEhd,EAAEgH,KAAK9G,EAAEkD,EAAElD,EAAEM,EAAEwc,EAAE,CAAyQ,SAASgZ,GAAEvY,GAAG,GAAG,SAAS,GAAEA,GAAG,OAAOA,EAAE,MAAM5b,EAAE4b,EAAEhY,cAAcgY,EAAE5Y,YAAY,GAAE4Y,IAAIA,EAAE3Y,MAA9V,SAAW2Y,GAAG,QAAQ,GAAEA,GAAGA,EAAE3Z,cAAc2Z,EAAEnY,WAAWtB,OAAOsB,UAAUC,eAAe,CAA4Q,CAAEkY,GAAG,OAAO,GAAE5b,GAAGA,EAAEiD,KAAKjD,CAAC,CAAC,SAASu1B,GAAE3Z,GAAG,MAAM5b,EAAEm0B,GAAEvY,GAAG,OAA79C,SAAWA,GAAG,MAAM,CAAC,OAAO,OAAO,aAAa+0B,SAAS,GAAE/0B,GAAG,CAAs6C,CAAE5b,GAAGA,EAAEiC,cAAcyG,KAAK,GAAE1I,IAAI,GAAEA,GAAGA,EAAEu1B,GAAEv1B,EAAE,CAAC,SAAS,GAAE4b,EAAE5b,GAAG,IAAI2+E,OAAE,IAAS3+E,IAAIA,EAAE,IAAI,MAAMK,EAAEk1B,GAAE3Z,GAAGmZ,EAAE10B,KAAK,OAAOs+E,EAAE/iE,EAAE3Z,oBAAe,EAAO08E,EAAEj2E,MAAM8qB,EAAE,GAAEnzB,GAAG,OAAO00B,EAAE/0B,EAAEgJ,OAAOwqB,EAAEA,EAAEvqB,gBAAgB,GAAG,GAAE5I,GAAGA,EAAE,IAAIL,EAAEgJ,OAAO3I,EAAE,GAAEA,GAAG,CCEv2G,IAAImR,GAAQ,EAAAooV,gBCWR8jsB,GAAc,CAAC,YAAa,aAAc,KAAM,YAAa,gBAAiB,WAAY,WAAY,UAAW,QAAS,UAAW,eAAgB,cAAe,WAAY,SAKhL9ygC,GAAO,WAAiB,EAe5B,SAAS+ygC,GAAkBzt/B,EAAQ3hC,GACjC,OAAKA,EAEkB,MAAZA,EAAK,GACP2hC,EAAS3hC,EAET2hC,EAAS,KAAO3hC,EAJhB2hC,CAMX,CACA,SAASw8U,GAAWx8U,EAAQvlC,GAC1B,IAAK,IAAIuE,EAAOC,UAAUC,OAAQwuhC,EAAgB,IAAItuhC,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IAC3GquhC,EAAcruhC,EAAO,GAAKJ,UAAUI,GAEtC,IAAIqiC,EAAM,GAAG5oC,OAAO40hC,GACpB,GAAIjzhC,GAASulC,EACX,IAAK,IAAI1qC,KAAOmF,EACVA,EAAM/D,eAAepB,IAAQmF,EAAMnF,IACrCosC,EAAI9iC,KAAK,GAAG9F,OAAO20hC,GAAkBzt/B,EAAQ1qC,KAInD,OAAOosC,EAAI3lC,OAAO,SAAU5L,GAC1B,OAAOA,CACT,GAAG0N,IAAI,SAAU1N,GACf,OAAOkb,OAAOlb,GAAG2Y,MACnB,GAAGE,KAAK,IACV,CAKA,IAAI2khC,GAAa,SAAoBl9hC,GACnC,OA6NegyE,EA7NHhyE,EA8NL2O,MAAMyb,QAAQ4nD,GA9NMhyE,EAAMsL,OAAOg2F,SACjB,YAAnB,QAAQthG,IAAiC,OAAVA,EAAuB,CAACA,GACpD,GA2NT,IAAiBgyE,CA1NjB,EAMImr9B,GAAmB,SAA0B1w/B,GAE/CA,EAAM03E,UACJ13E,EAAM2w/B,WACN3w/B,EAAM2gL,GACN3gL,EAAM27pB,UACN37pB,EAAM4w/B,cACN5w/B,EAAMw6P,SACNx6P,EAAMw1B,SACNx1B,EAAMgplB,QACNhplB,EAAMuwgB,MACNvwgB,EAAMxiC,QACNwiC,EAAM6w/B,aACN7w/B,EAAMoplB,YACNpplB,EAAMomZ,SACNpmZ,EAAMoyI,MACN,IAAIu6D,GAAa,OAAyB3sM,EAAOsw/B,IACnD,OAAO,OAAc,CAAC,EAAG3jzB,EAC3B,EAMImkzB,GAAgB,SAAuB9w/B,EAAO7+B,EAAM4vhC,GACtD,IAAIpw0B,EAAK3gL,EAAM2gL,GACbg7e,EAAY37pB,EAAM27pB,UAClBi1V,EAAgB5w/B,EAAM4w/B,cACtBl56B,EAAY13E,EAAM03E,UACpB,MAAO,CACL3gH,IAAK4ksB,EAAUx6rB,EAAM6+B,GACrB03E,UAAWipG,EAAGow0B,QAAyDA,EAAkB,CAAC,EAAGH,EAAczvhC,EAAM6+B,GAAQ03E,GAE7H,EAkBA,SAASs56B,GAAkB7l/B,GACzB,MAAO,CAAC90C,SAASC,gBAAiBD,SAASiF,KAAMvG,QAAQoB,QAAQg1C,IAAO,CAC1E,CAeA,SAAS+qhB,GAAa/qhB,GACpB,OAAI6l/B,GAAkB7l/B,GACbp2C,OAAO+F,YAETqwC,EAAGtwC,SACZ,CACA,SAASyjI,GAASnzF,EAAIvzC,GAEhBo5hC,GAAkB7l/B,GACpBp2C,OAAOupI,SAAS,EAAG1mI,GAGrBuzC,EAAGtwC,UAAYjD,CACjB,CAkCA,SAASq5hC,GAAiB/8hC,EAASs+B,GACjC,IAAI1f,EAAW/Q,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAK,IAC/E+a,EAAW/a,UAAUC,OAAS,QAAsB0C,IAAjB3C,UAAU,GAAmBA,UAAU,GAAKyb,GAC/EnjB,EAAQ67jB,GAAahikB,GACrBg9D,EAAS1+B,EAAKn4B,EAEd+u+B,EAAc,GAClB,SAAS8nD,IAEP,IAZkB1ihC,EAYd+mB,GAZc/mB,EAWlB469B,GAHc,GAI6Bl46B,IAXhC1iD,EAAIA,EAWoCsE,EAX5B,GAAKtE,EAAIA,EAAI,GAWAnU,GACpCikI,GAASpqI,EAASqhC,GACd6z8B,EAAct29B,EAChB/d,OAAOgoB,sBAAsBm0gC,GAE7Bp0gC,EAAS5oB,EAEb,CACAg9hC,EACF,CAKA,SAAS935B,GAAe+35B,EAAQC,GAC9B,IAAIC,EAAWF,EAAO32hC,wBAClB82hC,EAAcF,EAAU52hC,wBACxB+2hC,EAAaH,EAAU38hC,aAAe,EACtC68hC,EAAYx5hC,OAASy5hC,EAAaF,EAASv5hC,OAC7CwmI,GAAS6y5B,EAAQ/9hC,KAAKkE,IAAI85hC,EAAU/8hC,UAAY+8hC,EAAUv3hC,aAAes3hC,EAAO18hC,aAAe88hC,EAAYJ,EAAOz0hC,eACzG40hC,EAAY15hC,IAAM25hC,EAAaF,EAASz5hC,KACjD0mI,GAAS6y5B,EAAQ/9hC,KAAKmE,IAAI65hC,EAAU/8hC,UAAYk9hC,EAAY,GAEhE,CAuBA,SAASC,KACP,IAEE,OADAn7hC,SAASokQ,YAAY,eACd,CACT,CAAE,MAAO7nQ,GACP,OAAO,CACT,CACF,CAmBA,IAAI6+hC,IAAwB,EACxBj0hC,GAAU,CACZ,WAAIvD,GACF,OAAOw3hC,IAAwB,CACjC,GAGE,GAAsB,oBAAX18hC,OAAyBA,OAAS,CAAC,EAC9C,GAAE+Q,kBAAoB,GAAEC,sBAC1B,GAAED,iBAAiB,IAAK0X,GAAMhgB,IAC9B,GAAEuI,oBAAoB,IAAKyX,IAAM,IAEnC,IAAIk0gC,GAAwBD,GAC5B,SAASE,GAAW/wgC,GAClB,OAAe,MAARA,CACT,CAIA,SAASgxgC,GAAa5oa,EAAS6oa,EAAYhzD,GACzC,OAAO71W,EAAU6oa,EAAahzD,CAChC,CAOA,IAkBIizD,GAAc,CAAC,WAAY,cAC7BC,GAAe,CAAC,WAAY,cC4K9B,IDRA,IAuUIC,GExyB2CvC,GAAStz+B,GFiepD81+B,GAAkB,SAAyBlkhC,GAC7C,MAAa,SAANA,EAAe,SAAWA,CACnC,EAkBImkhC,IAAsC,IAAArx/B,eAAc,MAGpDsx/B,GAAa,SAAoBny/B,GACnC,IAAIolF,EAAWplF,EAAMolF,SACnBgt6B,EAAgBpy/B,EAAMoy/B,cACtBC,EAAgBry/B,EAAMqy/B,cACtBC,EAAgBty/B,EAAMsy/B,cACtBC,EAAevy/B,EAAMuy/B,aACrBC,EAA2Bxy/B,EAAMwy/B,yBACjCpg3B,EAAQpyI,EAAMoyI,MAEdqg3B,IADU,IAAA96yB,YAAWu6yB,KAA2B,CAAC,GACtBO,mBACzBhy6B,GAAM,IAAA5zG,QAAO,MAEfsj4B,EAAaz3xB,GADC,IAAAxrG,UAASmlhC,GACgB,GACvCls+B,EAAYgq1B,EAAW,GACvBuiJ,EAAeviJ,EAAW,GAE1BK,EAAa93xB,GADE,IAAAxrG,UAAS,MACgB,GACxClZ,EAAYw84B,EAAW,GACvBmiJ,EAAeniJ,EAAW,GACxBoiJ,EAAgBxg3B,EAAMvtH,QAAQ+t+B,cAqBlC,OApBA,GAAgB,WACd,IAAIzB,EAAS1w6B,EAAIh9G,QACjB,GAAK0thC,EAAL,CAGA,IAAI0B,EAAmC,UAAjBN,EAElBh1hC,EArNR,SAA0BvE,GACxB,IAAI85hC,EAAqB95hC,EAAKmtD,UAC5Bgr+B,EAASn4hC,EAAKm4hC,OACd56B,EAAYv9/B,EAAKu9/B,UACjBtv/B,EAAqBjO,EAAKhF,UAC1B++hC,EAAe/5hC,EAAK+5hC,aACpBF,EAAkB75hC,EAAK65hC,gBACvBD,EAAgB55hC,EAAK45hC,cACnBn3hC,EAtKN,SAAyBvH,GACvB,IAAIojC,EAAQrhC,iBAAiB/B,GACzB8+hC,EAAyC,aAAnB17/B,EAAM5gC,SAC5Bu8hC,EAAa,gBACjB,GAAuB,UAAnB37/B,EAAM5gC,SAAsB,OAAOL,SAASC,gBAChD,IAAK,IAAIjB,EAASnB,EAASmB,EAASA,EAAOooH,eAEzC,GADAnmF,EAAQrhC,iBAAiBZ,KACrB29hC,GAA0C,WAAnB17/B,EAAM5gC,WAG7Bu8hC,EAAWnjiC,KAAKwnC,EAAMp8B,SAAWo8B,EAAMl8B,UAAYk8B,EAAMn8B,WAC3D,OAAO9F,EAGX,OAAOgB,SAASC,eAClB,CAuJqB+E,CAAgB81hC,GAC/BjtkB,EAAe,CACjBlwd,UAAW,SACXmyD,UAAW2s+B,GAIb,IAAK3B,IAAWA,EAAOx6hC,aAAc,OAAOutd,EAI5C,IA7MwB/4a,EA8MtBzuC,EAD0BjB,EAAajB,wBACFhG,OACnC0+hC,EAAwB/B,EAAO32hC,wBACjC24hC,EAAaD,EAAsBp7hC,OACnCs7hC,EAAaF,EAAsB1+hC,OACnC6+hC,EAAUH,EAAsBt7hC,IAEhC07hC,EAD0BnC,EAAOx6hC,aAAa6D,wBACT5C,IACnCgtiB,EAAaiuf,GApNb7B,GADoB7l/B,EAqNiD1vC,GAAtC1G,OAAO2mG,YAjNnCvwD,EAAGtxC,aAkNNgB,EAAYq7jB,GAAaz6jB,GACzBqqO,EAAe/xM,SAAS99B,iBAAiBk7hC,GAAQrrzB,aAAc,IAC/DF,EAAY7xM,SAAS99B,iBAAiBk7hC,GAAQvrzB,UAAW,IACzD2tzB,EAAiBD,EAAe1tzB,EAChC4tzB,EAAiB5uf,EAAayuf,EAC9BI,EAAmBF,EAAiB14hC,EACpC64hC,EAAmBh3hC,EAAe7B,EAAYw4hC,EAC9CM,EAAaR,EAAavuf,EAAa/piB,EAAYirO,EACnD8tzB,EAAW/4hC,EAAYw4hC,EAAUztzB,EACjCiuzB,EAAiB,IACrB,OAAQ5shC,GACN,IAAK,OACL,IAAK,SAEH,GAAIushC,GAAkBJ,EACpB,MAAO,CACLp/hC,UAAW,SACXmyD,UAAW2s+B,GAKf,GAAIY,GAAoBN,IAAeP,EAIrC,OAHIE,GACF9B,GAAiBx1hC,EAAck4hC,EAAYE,GAEtC,CACL7/hC,UAAW,SACXmyD,UAAW2s+B,GAKf,IAAKD,GAAmBa,GAAoBn9B,GAAas8B,GAAmBW,GAAkBj9B,EAQ5F,OAPIw8B,GACF9B,GAAiBx1hC,EAAck4hC,EAAYE,GAMtC,CACL7/hC,UAAW,SACXmyD,UAHsB0s+B,EAAkBW,EAAiB1tzB,EAAe4tzB,EAAmB5tzB,GAU/F,GAA2B,SAAvB7+N,GAAiC4rhC,EAAiB,CAEpD,IAAIiB,EAAqBhB,EACrBiB,EAAalB,EAAkBU,EAAiBE,EAIpD,OAHIM,GAAcx9B,IAChBu9B,EAAqB1giC,KAAKkE,IAAIy8hC,EAAajuzB,EAAe8szB,EAAeE,IAEpE,CACL9+hC,UAAW,MACXmyD,UAAW2t+B,EAEf,CAGA,GAA2B,WAAvB7shC,EAIF,OAHI8rhC,GACFz05B,GAAS7iI,EAAck4hC,GAElB,CACL3/hC,UAAW,SACXmyD,UAAW2s+B,GAGf,MACF,IAAK,MAEH,GAAIS,GAAkBH,EACpB,MAAO,CACLp/hC,UAAW,MACXmyD,UAAW2s+B,GAKf,GAAIW,GAAoBL,IAAeP,EAIrC,OAHIE,GACF9B,GAAiBx1hC,EAAcm4hC,EAAUC,GAEpC,CACL7/hC,UAAW,MACXmyD,UAAW2s+B,GAKf,IAAKD,GAAmBY,GAAoBl9B,GAAas8B,GAAmBU,GAAkBh9B,EAAW,CACvG,IAAIy9B,EAAsBlB,EAU1B,QANKD,GAAmBY,GAAoBl9B,GAAas8B,GAAmBU,GAAkBh9B,KAC5Fy9B,EAAsBnB,EAAkBU,EAAiB3tzB,EAAY6tzB,EAAmB7tzB,GAEtFmtzB,GACF9B,GAAiBx1hC,EAAcm4hC,EAAUC,GAEpC,CACL7/hC,UAAW,MACXmyD,UAAW6t+B,EAEf,CAKA,MAAO,CACLhgiC,UAAW,SACXmyD,UAAW2s+B,GAEf,QACE,MAAM,IAAI39gC,MAAM,+BAAgCvZ,OAAOqL,EAAoB,OAE/E,OAAOi9c,CACT,CA8DgB+vkB,CAAiB,CAC3B9t+B,UAAWks+B,EACXlB,OAAQA,EACR56B,UAAW67B,EACXp+hC,UAAWs+hC,EACXS,aANiBP,IAA6BK,EAO9CA,gBAAiBA,EACjBD,cAAeA,IAEjBF,EAAan1hC,EAAM4oD,WACnBws+B,EAAap1hC,EAAMvJ,WACnBy+hC,SAAwEA,EAAmBl1hC,EAAMvJ,UAhB9E,CAiBrB,EAAG,CAACq+hC,EAAeC,EAAeC,EAAcC,EAA0BJ,EAAeK,EAAoBG,IACtGxt6B,EAAS,CACd3E,IAAKA,EACLyz6B,aAAa,QAAc,OAAc,CAAC,EAAGl0/B,GAAQ,CAAC,EAAG,CACvDhsC,UAAWA,GAAai+hC,GAAgBK,GACxCns+B,UAAWA,KAGjB,EAgDIgu+B,GAAY,SAAmBv4pB,EAAOw4pB,GACxC,IAAIC,EAAcz4pB,EAAMxpN,MACtBki3B,EAAWD,EAAYxv+B,QAAQyv+B,SAC/Bji/B,EAASgi/B,EAAYhi/B,OACvB,OAAO,OAAc,CACnBnU,UAAW,UACVk2/B,EAAW,CAAC,EAAI,CACjBx//B,MAAOyd,EAAOki/B,UACdn2hC,QAAS,GAAGxC,OAAkB,EAAX04hC,EAAc,OAAO14hC,OAAkB,EAAX04hC,EAAc,OAEjE,EACIE,GAAsBL,GACtBM,GAAoBN,GAsMpBO,GAAc,CAAC,QACjBtu6B,GAAa,CAAC,aAAc,QAAS,QAMnC7tH,GAAgD,CAClD4I,KAAM,SACN2B,OAAQ,2FAON6xhC,GAAM,SAAa37hC,GACrB,IAAI2nB,EAAO3nB,EAAK2nB,KACdqf,GAAQ,OAAyBhnC,EAAM07hC,IACzC,OAAOvrpB,GAAI,OAAO,OAAS,CACzB30Y,OAAQmsB,EACRrsB,MAAOqsB,EACPi0gC,QAAS,YACT,cAAe,OACfC,UAAW,QACX99hC,IAAKwB,IACJynC,GACL,EACI80/B,GAAY,SAAmB90/B,GACjC,OAAOmpW,GAAIwrpB,IAAK,OAAS,CACvBh0gC,KAAM,IACLqf,GAAQmpW,GAAI,OAAQ,CACrBh4Y,EAAG,+VAEP,EACI4jiC,GAAc,SAAqB/0/B,GACrC,OAAOmpW,GAAIwrpB,IAAK,OAAS,CACvBh0gC,KAAM,IACLqf,GAAQmpW,GAAI,OAAQ,CACrBh4Y,EAAG,0RAEP,EAMI6jiC,GAAU,SAAiBl8hC,EAAOs7hC,GACpC,IAAIa,EAAYn8hC,EAAMm8hC,UACpBC,EAAcp8hC,EAAMs5K,MACpBki3B,EAAWY,EAAYrw+B,QAAQyv+B,SAC/Bji/B,EAAS6i/B,EAAY7i/B,OACvB,OAAO,OAAc,CACnB5iC,MAAO,qBACP26C,QAAS,OACTtN,WAAY,eACXs3+B,EAAW,CAAC,EAAI,CACjBx//B,MAAOqggC,EAAY5i/B,EAAO8i/B,UAAY9i/B,EAAO+i/B,UAC7Ch3hC,QAAoB,EAAXk2hC,EACT,SAAU,CACR1//B,MAAOqggC,EAAY5i/B,EAAOgj/B,UAAYhj/B,EAAOki/B,YAGnD,EACIe,GAAuBN,GASvBO,GAAoBP,GAwCpBQ,GJzqBY,WACd,IAAIC,EAAa1+hC,GAAI2X,WAAM,EAAQ3M,WAC/BZ,EAAO,aAAes0hC,EAAWt0hC,KAErC,MAAO,CACLA,KAAMA,EACN2B,OAAQ,cAAgB3B,EAAO,IAAMs0hC,EAAW3yhC,OAAS,IACzD2wC,KAAM,EACN7+C,SAAU,WACR,MAAO,QAAUgZ,KAAKzM,KAAO,IAAMyM,KAAK9K,OAAS,OACnD,EAEJ,CI6pB2B81qB,CAAUo5W,KE15BUvC,GF05BmD,CAAC,8DEz5B5Ftz+B,KACHA,GAAMsz+B,GAAQ/mhC,MAAM,IFw5BiCsphC,GEt5BhDt6hC,OAAOklD,OAAOllD,OAAO0hC,iBAAiBq2/B,GAAS,CACpDtz+B,IAAK,CACH5oD,MAAOmE,OAAOklD,OAAOT,UF06BvBu5+B,GAAa,SAAoB75pB,GACnC,IAAIxqV,EAAQwqV,EAAMxqV,MAChB7+C,EAASqpY,EAAMrpY,OACjB,OAAO22Y,GAAI,OAAQ,CACjBpyY,IAAkBA,GAAM,CACtB4/B,UAAW,GAAG/6B,OAAO45hC,GAAsB,oBAAoB55hC,OAAOy1C,EAAO,gBAC7Eza,gBAAiB,eACjB46C,aAAc,MACdpnB,QAAS,eACT27K,WAAYvzO,EAAS,WAAQkS,EAC7BlQ,OAAQ,MACRmhiC,cAAe,MACfrhiC,MAAO,OACkC,GAAmE,KAElH,EA4EIshiC,GAAc,CAAC,QAyDf,GAAY,CAAC,WAAY,aAAc,WAAY,kBAmBnDC,GAAe,CACjB9nmB,SAAU,QACV32Z,KAAM,UACNssiB,SAAU,MACVx6gB,OAAQ,EACRvsB,OAAQ,EACRiuI,QAAS,EACTxsK,QAAS,GAEP82D,GAAiB,CACnB0rT,KAAM,WACNx2T,QAAS,cACT2jY,SAAU,gBACV+nmB,oBAAqB,gBACrB,WAAW,OAAc,CACvBrh7B,QAAS,uBACTyC,WAAY,SACZ0pjB,WAAY,OACXi1X,KAEDE,GAAa,SAAoBC,GACnC,OAAO,OAAc,CACnBvmhC,MAAO,QACPmlB,MAAO,UACPqnY,WAAY,EACZ5wZ,QAAS2qhC,EAAW,EAAI,EACxB1hiC,MAAO,QACNuhiC,GACL,EA6EII,GAAoB,SAA2B3whC,GACjD,IAAI8/G,EAAW9/G,EAAM8/G,SACnBunH,EAAarnO,EAAMqnO,WACrB,OAAOw8J,GAAI,MAAOx8J,EAAYvnH,EAChC,EA+IImolB,GAAa,CACf2oV,eAjemB,SAAwBl2/B,GAC3C,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,iBAAkB,CACpEm2/B,WAAW,EACX,mBAAmB,IACjBxpzB,GAAavnH,GAAY+jR,GAAI2rpB,GAAW,MAC9C,EA2dExhmB,QA9VY,SAAiBtzZ,GAC7B,IAAIolF,EAAWplF,EAAMolF,SACnB+iV,EAAanoa,EAAMmoa,WACnB8slB,EAAYj1/B,EAAMi1/B,UAClB9vV,EAAWnlqB,EAAMmlqB,SACjBx4d,EAAa3sM,EAAM2sM,WACnBypzB,EAAap2/B,EAAMo2/B,WACrB,OAAOjtpB,GAAI,OAAO,OAAS,CACzB1oR,IAAK0klB,GACJ2rV,GAAc9w/B,EAAO,UAAW,CACjCg+Q,SAAS,EACT,uBAAwBmqJ,EACxB,sBAAuB8slB,EACvB,wBAAyBmB,IACvBzpzB,EAAY,CACd,gBAAiBw7N,QAAczjc,IAC7B0gH,EACN,EA8UEix6B,kBA5esB,SAA2Br2/B,GACjD,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,oBAAqB,CACvEm2/B,WAAW,EACX,sBAAsB,IACpBxpzB,GAAavnH,GAAY+jR,GAAI4rpB,GAAa,MAChD,EAseEA,YAAaA,GACbD,UAAWA,GACXlrpB,MAtUU,SAAe5pW,GACzB,IAAIolF,EAAWplF,EAAMolF,SACnBu7F,EAAK3gL,EAAM2gL,GACXg7e,EAAY37pB,EAAM27pB,UAClBi1V,EAAgB5w/B,EAAM4w/B,cACtBlla,EAAU1rlB,EAAM0rlB,QAChB4qa,EAAet2/B,EAAMs2/B,aACrB3pzB,EAAa3sM,EAAM2sM,WACnBl9N,EAAQuwB,EAAMvwB,MACd2iK,EAAQpyI,EAAMoyI,MACdg3c,EAAcpplB,EAAMoplB,YACtB,OAAOjgP,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,QAAS,CAC3DroB,OAAO,IACLg1N,GAAaw8J,GAAIuiP,GAAS,OAAS,CAAC,EAAG4qa,EAAc,CACvDlta,YAAaA,EACbh3c,MAAOA,EACPuphB,UAAWA,EACXi1V,cAAeA,EACfjw0B,GAAIA,IACFlxM,GAAQ05X,GAAI,MAAO,KAAM/jR,GAC/B,EAmTEmx6B,aAhSiB,SAAsBv2/B,GACvC,IAAIw2/B,EAAoB9F,GAAiB1w/B,GACvCw2/B,EAAkB7yhC,KAClB,IAAIgpO,GAAa,OAAyB6pzB,EAAmBZ,IAC/D,OAAOzspB,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,eAAgB,CAClE,iBAAiB,IACf2sM,GACN,EA0RE8pzB,oBA3jBwB,SAA6Bz2/B,GACrD,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,sBAAuB,CACzEqv2B,YAAY,IACV1iqB,GAAavnH,EACnB,EAsjBEsx6B,mBA7cuB,SAA4B12/B,GACnD,IAAI2sM,EAAa3sM,EAAM2sM,WACvB,OAAOw8J,GAAI,QAAQ,OAAS,CAAC,EAAGx8J,EAAYmkzB,GAAc9w/B,EAAO,qBAAsB,CACrF,uBAAuB,KAE3B,EAycEol4B,MAzOU,SAAepl4B,GACzB,IAAI2gL,EAAK3gL,EAAM2gL,GACbptN,EAAQysC,EAAMzsC,MACZijiC,EAAoB9F,GAAiB1w/B,GACvCmlqB,EAAWqxV,EAAkBrxV,SAC7Bh9P,EAAaqulB,EAAkBrulB,WAC/B6tlB,EAAWQ,EAAkBR,SAC7BW,EAAiBH,EAAkBG,eACnChqzB,GAAa,OAAyB6pzB,EAAmB,IAC3D,OAAOrtpB,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,QAAS,CAC3D,mBAAmB,IACjB,CACF,aAAczsC,GAAS,KACrB41Y,GAAI,SAAS,OAAS,CACxBzxR,UAAWipG,EAAG,CACZ9wN,OAAO,GACN8miC,GACHl26B,IAAK0klB,EACL7tqB,MAAOy+/B,GAAWC,GAClBp6+B,SAAUusZ,GACTx7N,IACL,EAqNEiqzB,iBA9ZqB,SAA0B96pB,GAC/C,IAAInvJ,EAAamvJ,EAAMnvJ,WACrB4jU,EAAQz0K,EAAMy0K,MACdsmf,EAAa/6pB,EAAMn7W,KACnBA,OAAsB,IAAfk2gC,EAAwB,EAAIA,EACnCC,GAAY,OAAyBh7pB,EAAO11Q,IAC9C,OAAO+iR,GAAI,OAAO,OAAS,CAAC,EAAG2npB,IAAc,QAAc,OAAc,CAAC,EAAGgG,GAAY,CAAC,EAAG,CAC3FnqzB,WAAYA,EACZ4jU,MAAOA,EACP5vhB,KAAMA,IACJ,mBAAoB,CACtBw1gC,WAAW,EACX,qBAAqB,IACnBxpzB,GAAaw8J,GAAIuspB,GAAY,CAC/Brk/B,MAAO,EACP7+C,OAAQ+9iB,IACNpnK,GAAIuspB,GAAY,CAClBrk/B,MAAO,IACP7+C,QAAQ,IACN22Y,GAAIuspB,GAAY,CAClBrk/B,MAAO,IACP7+C,QAAS+9iB,IAEb,EAwYEr6G,KAvzBS,SAAcl2Z,GACvB,IAAIolF,EAAWplF,EAAMolF,SACnB+/kB,EAAWnlqB,EAAMmlqB,SACjBx4d,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,OAAQ,CAC1Dgt1B,MAAM,IACJ,CACFvswB,IAAK0klB,GACJx4d,GAAavnH,EAClB,EA+yBE2x6B,SA1xBa,SAAkB/2/B,GAC/B,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACnBw4d,EAAWnlqB,EAAMmlqB,SACjBn8E,EAAUhplB,EAAMgplB,QAClB,OAAO7/O,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,WAAY,CAC9D,aAAa,EACb,sBAAuBgplB,IACrB,CACFvogB,IAAK0klB,GACJx4d,GAAavnH,EAClB,EAgxBE4x6B,WAltBe,SAAoBh3/B,GACnC,IAAIurnB,EAAWvrnB,EAAMurnB,SACnBnmiB,EAAWplF,EAAMolF,SACjB6x6B,EAAiBj3/B,EAAMi3/B,eACvBtqzB,EAAa3sM,EAAM2sM,WACnB2lzB,EAAgBty/B,EAAMsy/B,cACtBC,EAAevy/B,EAAMuy/B,aACnB2E,GAAgB,IAAArqhC,QAAO,MACvBsqhC,GAAa,IAAAtqhC,QAAO,MAEtBuqhC,EAAa1+6B,GADE,IAAAxrG,UAAS+khC,GAAgBK,IACA,GACxCt+hC,EAAYojiC,EAAW,GACvB3E,EAAqB2E,EAAW,GAC9BC,GAAyB,IAAA7phC,SAAQ,WACnC,MAAO,CACLilhC,mBAAoBA,EAExB,EAAG,IAED6E,EAAa5+6B,GADE,IAAAxrG,UAAS,MACgB,GACxCqqhC,EAAmBD,EAAW,GAC9BE,EAAsBF,EAAW,GAC/BG,GAAyB,IAAA3qhC,aAAY,WACvC,GAAKmqhC,EAAL,CACA,IAAIx8hC,EAncR,SAA8BvG,GAC5B,IAAIuG,EAAOvG,EAAQsG,wBACnB,MAAO,CACL1C,OAAQ2C,EAAK3C,OACbtD,OAAQiG,EAAKjG,OACbuD,KAAM0C,EAAK1C,KACXF,MAAO4C,EAAK5C,MACZD,IAAK6C,EAAK7C,IACVtD,MAAOmG,EAAKnG,MAEhB,CAybeojiC,CAAqBT,GAC5BprZ,EAAkC,UAAjB0mZ,EAA2B,EAAIx9hC,OAAO+F,YACvDtI,EAASiI,EAAKzG,GAAa63oB,EAC3Br5oB,KAAY+kiC,aAA2D,EAASA,EAAiB/kiC,SAAWiI,EAAK1C,QAAUw/hC,aAA2D,EAASA,EAAiB98hC,KAAK1C,OAAS0C,EAAKnG,SAAWijiC,aAA2D,EAASA,EAAiB98hC,KAAKnG,QAC1UkjiC,EAAoB,CAClBhliC,OAAQA,EACRiI,KAAMA,GAPiB,CAU7B,EAAG,CAACw8hC,EAAgB1E,EAAcv+hC,EAAWujiC,aAA2D,EAASA,EAAiB/kiC,OAAQ+kiC,aAA2D,EAASA,EAAiB98hC,KAAK1C,KAAMw/hC,aAA2D,EAASA,EAAiB98hC,KAAKnG,QACpU,GAAgB,WACdmjiC,GACF,EAAG,CAACA,IACJ,IAAIE,GAAgB,IAAA7qhC,aAAY,WACI,mBAAvBqqhC,EAAW1zhC,UACpB0zhC,EAAW1zhC,UACX0zhC,EAAW1zhC,QAAU,MAEnBwzhC,GAAkBC,EAAczzhC,UAClC0zhC,EAAW1zhC,QF1rByhN,SAAW+K,EAAE5b,EAAE6b,EAAE8iE,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,MAAMqm9B,eAAe3kiC,GAAE,EAAG4kiC,eAAelwgC,GAAE,EAAGmwgC,cAAc1xgC,GAAE,EAAG2xgC,eAAevkiC,GAAE,GAAI+9E,EAAE1gF,EAAEoC,IAAIO,EAAE8b,EAAEze,GAAG82B,EAAE,IAAI,GAAEnZ,GAAG,GAAEA,GAAGA,EAAErP,eAAe,GAAEqP,EAAErP,gBAAgB,MAAM,GAAEvM,IAAI,GAAG0c,EAAE1P,QAAS4O,IAAI3d,GAAG2d,EAAE1I,iBAAiB,SAAS2I,EAAE,CAACxU,SAAQ,IAAK0tB,GAAGnZ,EAAE1I,iBAAiB,SAAS2I,EAAG,GAAG,IAAI6iF,EAAE9pF,EAAE,KAAK,GAAG4e,EAAE,CAAC,IAAImrD,GAAE,EAAG/pE,EAAE,IAAImsD,eAAe,KAAM4d,GAAG9iE,IAAI8iE,GAAE,CAAG,GAAG,GAAE/iE,KAAKhb,GAAGgU,EAAE0rD,QAAQ1kD,GAAG,GAAEA,KAAKA,EAAErP,gBAAgB3L,GAAGgU,EAAE0rD,QAAQ1kD,EAAErP,gBAAgBqI,EAAE0rD,QAAQtgE,EAAE,CAAC,IAAI3B,EAAEuC,EAAE,GAAEgb,GAAG,KAAK,OAAOhb,GAAG,SAASZ,IAAI,MAAM2+E,EAAE,GAAE/iE,IAAIvd,GAAGsgF,EAAEp9E,IAAIlD,EAAEkD,GAAGo9E,EAAEhgF,IAAIN,EAAEM,GAAGggF,EAAEj9E,QAAQrD,EAAEqD,OAAOi9E,EAAE/8E,SAASvD,EAAEuD,QAAQia,IAAIxd,EAAEsgF,EAAE+f,EAAEv0E,sBAAsBnqB,EAAE,CAA9H,GAAkI6b,IAAI,KAAK,IAAID,EAAEc,EAAE1P,QAAS4O,IAAI3d,GAAG2d,EAAEzI,oBAAoB,SAAS0I,GAAGkZ,GAAGnZ,EAAEzI,oBAAoB,SAAS0I,EAAG,GAAG,OAAOD,EAAEhH,IAAIgH,EAAEkK,aAAalR,EAAE,KAAKhU,GAAGuiP,qBAAqBzkJ,GAAG,CE0rB3yO,CAAW2l8B,EAAgBC,EAAczzhC,QAASg0hC,EAAwB,CAC7FK,cAAe,mBAAoB/iiC,SAGzC,EAAG,CAACkiiC,EAAgBQ,IACpB,GAAgB,WACdE,GACF,EAAG,CAACA,IACJ,IAAIK,GAAuB,IAAAlrhC,aAAY,SAAUmrhC,GAC/Cf,EAAczzhC,QAAUw0hC,EACxBN,GACF,EAAG,CAACA,IAGJ,IAAKpsY,GAA6B,UAAjBgnY,IAA6BgF,EAAkB,OAAO,KAGvE,IAAIW,EAAc/upB,GAAI,OAAO,OAAS,CACpC1oR,IAAKu36B,GACJlH,IAAc,QAAc,OAAc,CAAC,EAAG9w/B,GAAQ,CAAC,EAAG,CAC3DxtC,OAAQ+kiC,EAAiB/kiC,OACzBkE,SAAU67hC,EACV93hC,KAAM88hC,EAAiB98hC,OACrB,aAAc,CAChB,eAAe,IACbkyO,GAAavnH,GACjB,OAAO+jR,GAAI+opB,GAAuBtmsB,SAAU,CAC1Cr4V,MAAO8jiC,GACN9rY,GAAwB,KAAAn2U,cAAa8itB,EAAa3sY,GAAY2sY,EACnE,EA2oBEC,eAjvBmB,SAAwBr8pB,GAC3C,IAAIs8pB,EAAiBt8pB,EAAM12Q,SACzBA,OAA8B,IAAnBgz6B,EAA4B,aAAeA,EACtDzrzB,EAAamvJ,EAAMnvJ,WACnBmqzB,GAAY,OAAyBh7pB,EAAOi2pB,IAC9C,OAAO5opB,GAAI,OAAO,OAAS,CAAC,EAAG2npB,IAAc,QAAc,OAAc,CAAC,EAAGgG,GAAY,CAAC,EAAG,CAC3F1x6B,SAAUA,EACVunH,WAAYA,IACV,iBAAkB,CACpB,eAAe,EACf,wBAAwB,IACtBA,GAAavnH,EACnB,EAsuBEiz6B,iBA/vBqB,SAA0Bx8pB,GAC/C,IAAIy8pB,EAAiBz8pB,EAAMz2Q,SACzBA,OAA8B,IAAnBkz6B,EAA4B,aAAeA,EACtD3rzB,EAAakvJ,EAAMlvJ,WACnBmqzB,GAAY,OAAyBj7pB,EAAOi2pB,IAC9C,OAAO3opB,GAAI,OAAO,OAAS,CAAC,EAAG2npB,IAAc,QAAc,OAAc,CAAC,EAAGgG,GAAY,CAAC,EAAG,CAC3F1x6B,SAAUA,EACVunH,WAAYA,IACV,mBAAoB,CACtB,eAAe,EACf,2BAA2B,IACzBA,GAAavnH,EACnB,EAovBEmz6B,WApJe,SAAoBv4/B,GACnC,IAAIolF,EAAWplF,EAAMolF,SACnBmolB,EAAavtqB,EAAMutqB,WACnB5psB,EAAOq8B,EAAMr8B,KACbgpO,EAAa3sM,EAAM2sM,WACnBw7N,EAAanoa,EAAMmoa,WACnBqwlB,EAAcx4/B,EAAMw4/B,YACpBpva,EAAcpplB,EAAMoplB,YAClBv/M,EAAY0jS,EAAW1jS,UACzBnnD,EAAQ6qV,EAAW7qV,MACnB+1qB,EAASlrV,EAAWkrV,OACtB,OAAOtvpB,GAAI0gC,EAAW,CACpBlma,KAAMA,EACNgpO,YAAY,QAAc,OAAc,CAAC,EAAGmkzB,GAAc9w/B,EAAO,aAAc,CAC7E,eAAe,EACf,2BAA4Bmoa,KACzBx7N,GACLy8Y,YAAaA,GACZjgP,GAAIzmB,EAAO,CACZ/+W,KAAMA,EACNgpO,YAAY,OAAc,CAAC,EAAGmkzB,GAAc9w/B,EAAO,kBAAmB,CACpE,sBAAsB,KAExBoplB,YAAaA,GACZhkgB,GAAW+jR,GAAIsvpB,EAAQ,CACxB90hC,KAAMA,EACNgpO,YAAY,QAAc,OAAc,CAAC,EAAGmkzB,GAAc9w/B,EAAO,mBAAoB,CACnF,uBAAuB,KACpB,CAAC,EAAG,CACP,aAAc,UAAUpkC,OAAOwpH,GAAY,WAC1Coz6B,GACHpva,YAAaA,IAEjB,EAoHEsva,oBAhKwBzC,GAiKxB0C,gBAhKoB1C,GAiKpB2C,iBAhKF,SAA0Bh9pB,GACxB,IAAIx2Q,EAAWw2Q,EAAMx2Q,SACnBunH,EAAaivJ,EAAMjvJ,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CACzBj9X,KAAM,UACLygO,GAAavnH,GAAY+jR,GAAI2rpB,GAAW,CACzCn0gC,KAAM,KAEV,EAyJEuxS,OA3FW,SAAgBlyR,GAC3B,IAAIolF,EAAWplF,EAAMolF,SACnB+iV,EAAanoa,EAAMmoa,WACnB8slB,EAAYj1/B,EAAMi1/B,UAClBlse,EAAa/ohB,EAAM+ohB,WACnBo8I,EAAWnlqB,EAAMmlqB,SACjBx4d,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,SAAU,CAC5DkT,QAAQ,EACR,sBAAuBi1Z,EACvB,qBAAsB8slB,EACtB,sBAAuBlse,IACrB,CACFtoc,IAAK0klB,EACL,gBAAiBh9P,GAChBx7N,GAAavnH,EAClB,EA4EEyz6B,YA5DgB,SAAqB74/B,GACrC,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,cAAe,CACjEuvL,aAAa,IACXod,GAAavnH,EACnB,EAuDE0z6B,gBAloBoB,SAAyB94/B,GAC7C,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACnBw7N,EAAanoa,EAAMmoa,WACnBooG,EAAQvwgB,EAAMuwgB,MAChB,OAAOpnK,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,YAAa,CAC/D,gBAAiBmoa,EACjB,WAAYooG,IACV5jU,GAAavnH,EACnB,EA0nBE2z6B,YAnCgB,SAAqB/4/B,GACrC,IAAIolF,EAAWplF,EAAMolF,SACnB+iV,EAAanoa,EAAMmoa,WACnBx7N,EAAa3sM,EAAM2sM,WACrB,OAAOw8J,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,cAAe,CACjE,gBAAgB,EAChB,4BAA6Bmoa,IAC3Bx7N,GAAavnH,EACnB,EA4BE4z6B,eApmBmB,SAAwBh5/B,GAC3C,IAAIolF,EAAWplF,EAAMolF,SACnBunH,EAAa3sM,EAAM2sM,WACnBq8Y,EAAUhplB,EAAMgplB,QAChBxzjB,EAAWx1B,EAAMw1B,SACnB,OAAO2zU,GAAI,OAAO,OAAS,CAAC,EAAG2npB,GAAc9w/B,EAAO,iBAAkB,CACpE,mBAAmB,EACnB,4BAA6BgplB,EAC7B,6BAA8BxzjB,IAC5Bm3K,GAAavnH,EACnB,G,YCjwBIpsH,GAA+C,CACjDmI,KAAM,kBACN2B,OAAQ,0JAYNm2hC,GALW,SAAkBj5/B,GAC/B,OAAOmpW,GAAI,QAAQ,OAAS,CAC1BpyY,IAAKiC,IACJgnC,GACL,EAGIk5/B,GAA0B,CAC5BC,SAAU,SAAkBn5/B,GAC1B,IAAIo5/B,EAAep5/B,EAAMo5/B,aACvBpwa,EAAUhplB,EAAMgplB,QAChBqwa,EAAkBr5/B,EAAMq5/B,gBACxBtigC,EAAUiJ,EAAMjJ,QAChBuigC,EAAiBt5/B,EAAMs5/B,eACzB,OAAQvigC,GACN,IAAK,OACH,MAAO,uHAAuHn7B,OAAOy9hC,EAAkB,qDAAuD,GAAI,KACpN,IAAK,QACH,OAAOC,EAAiB,GAAG19hC,OAAOokC,EAAM,eAAiB,SAAU,gBAAgBpkC,OAAOw9hC,EAAe,uBAAyB,GAAI,mCAAmCx9hC,OAAOotnB,EAAU,uCAAyC,IAAM,GAC3O,IAAK,QACH,MAAO,6GACT,QACE,MAAO,GAEb,EACAx8S,SAAU,SAAkBxsS,GAC1B,IAAIwhE,EAASxhE,EAAMwhE,OACjB+37B,EAAev5/B,EAAMvwB,MACrBA,OAAyB,IAAjB8phC,EAA0B,GAAKA,EACvCp/+B,EAASna,EAAMma,OACfguZ,EAAanoa,EAAMmoa,WACrB,OAAQ3mW,GACN,IAAK,kBACL,IAAK,YACL,IAAK,eACH,MAAO,UAAU5lG,OAAO6T,EAAO,iBACjC,IAAK,QACH,MAAO,0CACT,IAAK,sBACH,MAAO,SAAS7T,OAAOu+C,EAAOn4C,OAAS,EAAI,IAAM,GAAI,KAAKpG,OAAOu+C,EAAOruC,KAAK,KAAM,eACrF,IAAK,gBACH,MAAoB,UAAUlQ,OAAO6T,EAA9B04b,EAAqC,uCAAkE,eAChH,QACE,MAAO,GAEb,EACA1/G,QAAS,SAAiBzoT,GACxB,IAAIjJ,EAAUiJ,EAAMjJ,QAClBusqB,EAAUtjqB,EAAMsjqB,QAChB9lsB,EAAUwiC,EAAMxiC,QAChBg8hC,EAAgBx5/B,EAAMvwB,MACtBA,OAA0B,IAAlB+phC,EAA2B,GAAKA,EACxCrnuB,EAAcnyR,EAAMmyR,YACpBg2I,EAAanoa,EAAMmoa,WACnB4gH,EAAa/ohB,EAAM+ohB,WACnB0we,EAAgBz5/B,EAAMy5/B,cACpBC,EAAgB,SAAuBl1/B,EAAK5jB,GAC9C,OAAO4jB,GAAOA,EAAIxiC,OAAS,GAAGpG,OAAO4oC,EAAIruC,QAAQyqB,GAAQ,EAAG,QAAQhlB,OAAO4oC,EAAIxiC,QAAU,EAC3F,EACA,GAAgB,UAAZ+0B,GAAuBo7R,EACzB,MAAO,SAASv2T,OAAO6T,EAAO,cAAc7T,OAAO89hC,EAAcvnuB,EAAamxY,GAAU,KAE1F,GAAgB,SAAZvsqB,GAAsB0igC,EAAe,CACvC,IAAI79+B,EAAWusZ,EAAa,YAAc,GACtCptU,EAAS,GAAGn/H,OAAOmtjB,EAAa,YAAc,IAAIntjB,OAAOggD,GAC7D,MAAO,GAAGhgD,OAAO6T,GAAO7T,OAAOm/H,EAAQ,MAAMn/H,OAAO89hC,EAAcl8hC,EAAS8lsB,GAAU,IACvF,CACA,MAAO,EACT,EACAq2V,SAAU,SAAkB35/B,GAC1B,IAAIuhV,EAAavhV,EAAMuhV,WACrBq4qB,EAAiB55/B,EAAM45/B,eACzB,MAAO,GAAGh+hC,OAAOg+hC,GAAgBh+hC,OAAO2lX,EAAa,oBAAsBA,EAAa,GAAI,IAC9F,GAmIEs4qB,GAhIa,SAAoB75/B,GACnC,IAAI85/B,EAAgB95/B,EAAM85/B,cACxBC,EAAgB/5/B,EAAM+5/B,cACtBC,EAAeh6/B,EAAMg6/B,aACrBC,EAAmBj6/B,EAAMi6/B,iBACzBhF,EAAYj1/B,EAAMi1/B,UAClB9iuB,EAAcnyR,EAAMmyR,YACpBi3T,EAAcpplB,EAAMoplB,YACpBz9mB,EAAKq0B,EAAMr0B,GACX8thC,EAAgBz5/B,EAAMy5/B,cACpBS,EAAmB9wa,EAAY8wa,iBACjC1wa,EAAiBJ,EAAYI,eAC7BjoQ,EAAa6nQ,EAAY7nQ,WACzBynQ,EAAUI,EAAYJ,QACtBmxa,EAAmB/wa,EAAY+wa,iBAC/Bf,EAAehwa,EAAYgwa,aAC3BhD,EAAahta,EAAYgta,WACzB54hC,EAAU4rnB,EAAY5rnB,QACtB48hC,EAAqBhxa,EAAYgxa,mBACjCf,EAAkBjwa,EAAYiwa,gBAC9Bnwa,EAAYE,EAAYF,UACtBs/B,EAAYp/B,EAAY,cACxBixa,EAAWjxa,EAAY,aAGvB1qb,GAAW,IAAAlxL,SAAQ,WACrB,OAAO,QAAc,OAAc,CAAC,EAAG0rhC,IAA0BgB,GAAoB,CAAC,EACxF,EAAG,CAACA,IAGAI,GAAe,IAAA9shC,SAAQ,WACzB,IAQmC+nB,EAR/ByoE,EAAU,GACd,GAAI877B,GAAiBp71B,EAAS8tI,SAAU,CACtC,IAAIt5R,EAAS4m/B,EAAc5m/B,OACzBwgR,EAAkBomuB,EAAct8hC,QAChC+8hC,EAAeT,EAAcS,aAC7BC,EAAgBV,EAAcU,cAC9BjniC,EAAQumiC,EAAcvmiC,MAOpBg9Q,EAAWgqxB,GAAgBrn/B,IALE3d,EAKiBhiC,EAJxC2O,MAAMyb,QAAQ4X,GAAa,KAANA,GAK3B9lB,EAAQ8gQ,EAAWi5W,EAAej5W,GAAY,GAG9CkqxB,EAAgB/muB,GAAmB8muB,QAAiB91hC,EACpDy1C,EAASsg/B,EAAgBA,EAAc95hC,IAAI6onB,GAAkB,GAC7Dkxa,GAAgB,OAAc,CAGhCvylB,WAAY53L,GAAY4pxB,EAAiB5pxB,EAAU4hD,GACnD1iT,MAAOA,EACP0qC,OAAQA,GACP2/+B,GACH977B,EAAU0gG,EAAS8tI,SAASkutB,EAC9B,CACA,OAAO187B,CACT,EAAG,CAAC877B,EAAep71B,EAAUy71B,EAAkBhouB,EAAaq3T,IACxDmxa,GAAc,IAAAnthC,SAAQ,WACxB,IAAIothC,EAAW,GACXt3V,EAAUy2V,GAAiBC,EAC3Bjxe,KAAgBgxe,GAAiB5nuB,GAAeA,EAAY5uR,SAASw2/B,IACzE,GAAIz2V,GAAW5kgB,EAAS+pJ,QAAS,CAC/B,IAAIoysB,EAAe,CACjBv3V,QAASA,EACT7zrB,MAAO+5mB,EAAe85E,GACtBn7P,WAAYgylB,EAAiB72V,EAASnxY,GACtC42P,WAAYA,EACZvrjB,QAASy8hC,EACTljgC,QAASusqB,IAAYy2V,EAAgB,OAAS,QAC9C5nuB,YAAaA,EACbsnuB,cAAeA,GAEjBmB,EAAWl81B,EAAS+pJ,QAAQoysB,EAC9B,CACA,OAAOD,CACT,EAAG,CAACb,EAAeC,EAAcxwa,EAAgB2wa,EAAkBz71B,EAAUu71B,EAAkB9nuB,EAAasnuB,IACxGqB,GAAc,IAAAtthC,SAAQ,WACxB,IAAIuthC,EAAa,GACjB,GAAI3E,GAAc54hC,EAAQwE,SAAWknnB,GAAaxqb,EAASi71B,SAAU,CACnE,IAAIC,EAAiBQ,EAAmB,CACtCx0/B,MAAOq0/B,EAAiBj4hC,SAE1B+4hC,EAAar81B,EAASi71B,SAAS,CAC7Bp4qB,WAAYA,EACZq4qB,eAAgBA,GAEpB,CACA,OAAOmB,CACT,EAAG,CAACd,EAAkB14qB,EAAY60qB,EAAY131B,EAAUlhM,EAAS48hC,EAAoBlxa,IACjFowa,EAA0G,yBAAxFQ,aAAqD,EAASA,EAAct47B,QAC9Fw57B,GAAe,IAAAxthC,SAAQ,WACzB,IAAIythC,EAAc,GAClB,GAAIv81B,EAASy61B,SAAU,CACrB,IAAIpigC,EAAUijgC,EAAe,QAAU5D,EAAa,OAAS,QAC7D6E,EAAcv81B,EAASy61B,SAAS,CAC9B,aAAc3wY,EACdzxnB,QAASA,EACToxa,WAAY4xlB,GAAiBI,EAAiBJ,EAAe5nuB,GAC7D62T,QAASA,EACTowa,aAAcA,EACdC,gBAAiBA,EACjBC,eAAgBA,GAEpB,CACA,OAAO2B,CACT,EAAG,CAACzyY,EAAWuxY,EAAeC,EAAchxa,EAASmxa,EAAkBf,EAAchD,EAAY131B,EAAUyzH,EAAaknuB,EAAiBC,IACrI4B,EAAmB/xpB,GAAI,EAAAj+C,SAAU,KAAMi+C,GAAI,OAAQ,CACrDx9X,GAAI,kBACH2uhC,GAAenxpB,GAAI,OAAQ,CAC5Bx9X,GAAI,gBACHgvhC,GAAcxxpB,GAAI,OAAQ,CAC3Bx9X,GAAI,gBACHmvhC,GAAc3xpB,GAAI,OAAQ,CAC3Bx9X,GAAI,iBACHqvhC,IACH,OAAO7xpB,GAAI,EAAAj+C,SAAU,KAAMi+C,GAAI8vpB,GAAY,CACzCtthC,GAAIA,GACH2thC,GAAkB4B,GAAmB/xpB,GAAI8vpB,GAAY,CACtD,YAAaoB,EACb,cAAe,QACf,gBAAiB,iBACjBnuhC,KAAM,OACL+ohC,IAAcqE,GAAkB4B,GACrC,EAGIC,GAAa,CAAC,CAChBli/B,KAAM,IACNmi/B,QAAS,sCACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,OACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,MACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,aACR,CACDni/B,KAAM,IACNmi/B,QAAS,gBACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,KACNmi/B,QAAS,MACR,CACDni/B,KAAM,KACNmi/B,QAAS,MACR,CACDni/B,KAAM,IACNmi/B,QAAS,kCACR,CACDni/B,KAAM,IACNmi/B,QAAS,UACR,CACDni/B,KAAM,IACNmi/B,QAAS,mBACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,IACNmi/B,QAAS,wBACR,CACDni/B,KAAM,IACNmi/B,QAAS,SACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,IACNmi/B,QAAS,sBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,YACR,CACDni/B,KAAM,IACNmi/B,QAAS,oBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,+CACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,cACR,CACDni/B,KAAM,IACNmi/B,QAAS,UACR,CACDni/B,KAAM,IACNmi/B,QAAS,qBACR,CACDni/B,KAAM,IACNmi/B,QAAS,qBACR,CACDni/B,KAAM,IACNmi/B,QAAS,mBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,sCACR,CACDni/B,KAAM,IACNmi/B,QAAS,YACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,cACR,CACDni/B,KAAM,IACNmi/B,QAAS,SACR,CACDni/B,KAAM,IACNmi/B,QAAS,mBACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,IACNmi/B,QAAS,uCACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,OACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,MACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,aACR,CACDni/B,KAAM,IACNmi/B,QAAS,iBACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,KACNmi/B,QAAS,MACR,CACDni/B,KAAM,IACNmi/B,QAAS,mCACR,CACDni/B,KAAM,IACNmi/B,QAAS,UACR,CACDni/B,KAAM,IACNmi/B,QAAS,mBACR,CACDni/B,KAAM,IACNmi/B,QAAS,mBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,wBACR,CACDni/B,KAAM,IACNmi/B,QAAS,UACR,CACDni/B,KAAM,IACNmi/B,QAAS,kBACR,CACDni/B,KAAM,IACNmi/B,QAAS,uBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,YACR,CACDni/B,KAAM,IACNmi/B,QAAS,qBACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,+CACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,KACNmi/B,QAAS,KACR,CACDni/B,KAAM,IACNmi/B,QAAS,cACR,CACDni/B,KAAM,IACNmi/B,QAAS,UACR,CACDni/B,KAAM,IACNmi/B,QAAS,qBACR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O,GAAG,OAAOC,aAAa,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CA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EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAClw+B,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM42gC,eAAe,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAKC,WAAW,SAASrwiC,EAAEC,GAAG,MAAM,IAAI0N,MAAM3N,EAAE,EAAEw+B,MAAM,SAASx+B,GAAG,SAASC,IAAI,IAAID,EAAE,MAA0B,iBAAnBA,EAAEhU,EAAEsvS,MAAMzB,OAAO,KAAuB75R,EAAEhU,EAAEujjC,SAASvviC,IAAIA,GAAGA,CAAC,CAAC,IAAIhU,EAAEoa,KAAKzc,EAAE,CAAC,GAAGyB,EAAE,CAAC,MAAM0c,EAAE,GAAGC,EAAE3B,KAAKozB,MAAM/vC,EAAE,GAAGgC,EAAE,EAAE2gC,EAAE,EAAEvU,EAAE,EAAEzR,KAAKk1R,MAAMq1wB,SAAS3wiC,GAAGoG,KAAKk1R,MAAMtxS,GAAGoc,KAAKpc,GAAGoc,KAAKpc,GAAGsxS,MAAMl1R,KAAKk1R,MAAMl1R,KAAKpc,GAAGk6F,OAAO99E,UAAK,IAAoBA,KAAKk1R,MAAMs1wB,SAASxqiC,KAAKk1R,MAAMs1wB,OAAO,CAAC,GAAG,IAAIhyhC,EAAExY,KAAKk1R,MAAMs1wB,OAAO9oiC,EAAE5N,KAAK0kB,GAAG,IAAIr1B,EAAE6c,KAAKk1R,MAAMtlS,SAASoQ,KAAKk1R,MAAMtlS,QAAQmjd,OAAO,mBAAmB/yc,KAAKpc,GAAGqmjC,aAAajqiC,KAAKiqiC,WAAWjqiC,KAAKpc,GAAGqmjC,YAAY,IAAI,IAAIppiC,EAAE8iE,EAAExjE,EAAE0pF,EAAE9vE,EAAE92B,EAAE2d,EAAE8iF,EAAEvhF,EAAEyX,EAAE,CAAC,IAAI,CAAC,GAAGzZ,EAAE5c,EAAEA,EAAE6Q,OAAO,GAAG4L,KAAKgqiC,eAAe7piC,GAAG0pF,EAAE7pF,KAAKgqiC,eAAe7piC,IAAI,MAAOU,IAA2BA,EAAEhH,KAAKgwF,EAAEloF,EAAExB,IAAIwB,EAAExB,GAAGU,SAAI,IAAoBgpF,IAAIA,EAAEz1F,SAASy1F,EAAE,GAAG,CAAC,IAAItjG,EAAE,GAAG,IAAIkrB,EAAE,CAAM,IAAIxuB,KAATkf,EAAE,GAAYR,EAAExB,GAAGH,KAAKopiC,WAAWnmjC,IAAIA,EAAE,GAAGkf,EAAErO,KAAK,IAAIkM,KAAKopiC,WAAWnmjC,GAAG,KAAKsD,EAAEyZ,KAAKk1R,MAAM+1wB,aAAa,wBAAwB5ljC,EAAE,GAAG,MAAM2a,KAAKk1R,MAAM+1wB,eAAe,eAAe9oiC,EAAEjE,KAAK,MAAM,WAAW8B,KAAKopiC,WAAWvoiC,IAAIA,GAAG,IAAI,wBAAwBxb,EAAE,GAAG,iBAAiB,GAAGwb,EAAE,eAAe,KAAKb,KAAKopiC,WAAWvoiC,IAAIA,GAAG,KAAKb,KAAKiqiC,WAAW1jjC,EAAE,CAACupC,KAAK9vB,KAAKk1R,MAAMlxS,MAAMigB,MAAMjE,KAAKopiC,WAAWvoiC,IAAIA,EAAEsvB,KAAKnwB,KAAKk1R,MAAMu0wB,SAASpt5B,IAAI7jI,EAAEyxM,SAAS9nN,GAAG,CAAC,CAAC,GAAG0nF,EAAE,aAAav1F,OAAOu1F,EAAEz1F,OAAO,EAAE,MAAM,IAAImT,MAAM,oDAAoDpH,EAAE,YAAYU,GAAG,OAAOgpF,EAAE,IAAI,KAAK,EAAEtmG,EAAEuQ,KAAK+M,GAAG7b,EAAE8O,KAAKkM,KAAKk1R,MAAMq0wB,QAAQ7niC,EAAE5N,KAAKkM,KAAKk1R,MAAMs1wB,QAAQjnjC,EAAEuQ,KAAK+1F,EAAE,IAAIhpF,EAAE,KAAK8iE,GAAG9iE,EAAE8iE,EAAEA,EAAE,OAAO39C,EAAEhmB,KAAKk1R,MAAMs0wB,OAAOnmjC,EAAE2c,KAAKk1R,MAAMq0wB,OAAOlkjC,EAAE2a,KAAKk1R,MAAMu0wB,SAASjxhC,EAAExY,KAAKk1R,MAAMs1wB,OAAO/4hC,EAAE,GAAGA,KAAK,MAAM,KAAK,EAAE,GAAG7Q,EAAEZ,KAAKqpiC,aAAax/8B,EAAE,IAAI,GAAGjwE,EAAE8vE,EAAE1kG,EAAEA,EAAEoP,OAAOwM,GAAGgZ,EAAE2r9B,GAAG,CAAC2lE,WAAWxpiC,EAAEA,EAAEtN,QAAQwM,GAAG,IAAIsqiC,WAAWC,UAAUzpiC,EAAEA,EAAEtN,OAAO,GAAG+2iC,UAAUC,aAAa1piC,EAAEA,EAAEtN,QAAQwM,GAAG,IAAIwqiC,aAAaC,YAAY3piC,EAAEA,EAAEtN,OAAO,GAAGi3iC,aAAalojC,IAAIy2B,EAAE2r9B,GAAG1x9B,MAAM,CAACnS,EAAEA,EAAEtN,QAAQwM,GAAG,IAAIiT,MAAM,GAAGnS,EAAEA,EAAEtN,OAAO,GAAGyf,MAAM,UAAyD,KAApDkG,EAAE/Z,KAAKspiC,cAAcjpiC,KAAKuZ,EAAEv2B,EAAE2iC,EAAE3gC,EAAE2a,KAAKpc,GAAGimG,EAAE,GAAG7kG,EAAE0c,IAAyB,OAAOqY,EAAEnZ,IAAIrd,EAAEA,EAAEuX,MAAM,GAAG,EAAE8F,EAAE,GAAG5b,EAAEA,EAAE8V,MAAM,GAAG,EAAE8F,GAAGc,EAAEA,EAAE5G,MAAM,GAAG,EAAE8F,IAAIrd,EAAEuQ,KAAKkM,KAAKqpiC,aAAax/8B,EAAE,IAAI,IAAI7kG,EAAE8O,KAAK8lB,EAAE8vE,GAAGhoF,EAAE5N,KAAK8lB,EAAE2r9B,IAAI7h5B,EAAE/hF,EAAEpe,EAAEA,EAAE6Q,OAAO,IAAI7Q,EAAEA,EAAE6Q,OAAO,IAAI7Q,EAAEuQ,KAAK4vF,GAAG,MAAM,KAAK,EAAE,OAAM,EAAG,CAAC,OAAM,CAAE,GAAG99F,EAAE,WAAW,IAAIgU,EAAE,CAACise,IAAI,EAAEokkB,WAAW,SAASrwiC,EAAEC,GAAG,IAAImG,KAAKpc,GAAGk6F,OAAO,MAAM,IAAIv2E,MAAM3N,GAAGoG,KAAKpc,GAAGk6F,OAAOms9B,WAAWrwiC,EAAEC,EAAE,EAAE0wiC,SAAS,SAAS3wiC,GAAG,OAAOoG,KAAKspyB,OAAO1vyB,EAAEoG,KAAKsriC,MAAMtriC,KAAKmikC,MAAMnikC,KAAKwB,MAAK,EAAGxB,KAAKypiC,SAASzpiC,KAAKwpiC,OAAO,EAAExpiC,KAAKupiC,OAAOvpiC,KAAKxT,QAAQwT,KAAKhc,MAAM,GAAGgc,KAAKwriC,eAAe,CAAC,WAAWxriC,KAAKwqiC,OAAO,CAACU,WAAW,EAAEE,aAAa,EAAED,UAAU,EAAEE,YAAY,GAAGrriC,KAAKpQ,QAAQmjd,SAAS/yc,KAAKwqiC,OAAO32hC,MAAM,CAAC,EAAE,IAAI7T,KAAKpb,OAAO,EAAEob,IAAI,EAAE/d,MAAM,WAAW,IAAI2X,EAAEoG,KAAKspyB,OAAO,GAA6G,OAA1GtpyB,KAAKupiC,QAAQ3viC,EAAEoG,KAAKwpiC,SAASxpiC,KAAKpb,SAASob,KAAKhc,OAAO4V,EAAEoG,KAAKxT,SAASoN,EAAQA,EAAE5V,MAAM,oBAA6Bgc,KAAKypiC,WAAWzpiC,KAAKwqiC,OAAOW,aAAanriC,KAAKwqiC,OAAOa,cAAcrriC,KAAKpQ,QAAQmjd,QAAQ/yc,KAAKwqiC,OAAO32hC,MAAM,KAAK7T,KAAKspyB,OAAOtpyB,KAAKspyB,OAAOxuyB,MAAM,GAAGlB,CAAC,EAAE6xiC,MAAM,SAAS7xiC,GAAG,IAAIC,EAAED,EAAExF,OAAOxO,EAAEgU,EAAE1Y,MAAM,iBAAiB8e,KAAKspyB,OAAO1vyB,EAAEoG,KAAKspyB,OAAOtpyB,KAAKupiC,OAAOvpiC,KAAKupiC,OAAOp37B,OAAO,EAAEnyG,KAAKupiC,OAAOn1iC,OAAOyF,EAAE,GAAGmG,KAAKpb,QAAQiV,EAAE,IAAItW,EAAEyc,KAAKhc,MAAM9C,MAAM,iBAAiB8e,KAAKhc,MAAMgc,KAAKhc,MAAMmuH,OAAO,EAAEnyG,KAAKhc,MAAMoQ,OAAO,GAAG4L,KAAKxT,QAAQwT,KAAKxT,QAAQ2lH,OAAO,EAAEnyG,KAAKxT,QAAQ4H,OAAO,GAAGxO,EAAEwO,OAAO,IAAI4L,KAAKypiC,UAAU7jjC,EAAEwO,OAAO,GAAG,IAAIpP,EAAEgb,KAAKwqiC,OAAO32hC,MAAM,OAAO7T,KAAKwqiC,OAAO,CAACU,WAAWlriC,KAAKwqiC,OAAOU,WAAWC,UAAUnriC,KAAKypiC,SAAS,EAAE2B,aAAapriC,KAAKwqiC,OAAOY,aAAaC,YAAYzljC,GAAGA,EAAEwO,SAAS7Q,EAAE6Q,OAAO4L,KAAKwqiC,OAAOY,aAAa,GAAG7njC,EAAEA,EAAE6Q,OAAOxO,EAAEwO,QAAQA,OAAOxO,EAAE,GAAGwO,OAAO4L,KAAKwqiC,OAAOY,aAAavxiC,GAAGmG,KAAKpQ,QAAQmjd,SAAS/yc,KAAKwqiC,OAAO32hC,MAAM,CAAC7uB,EAAE,GAAGA,EAAE,GAAGgb,KAAKwpiC,OAAO3viC,IAAImG,IAAI,EAAE2riC,KAAK,WAAW,OAAO3riC,KAAKsriC,OAAM,EAAGtriC,IAAI,EAAE6riC,KAAK,SAASjyiC,GAAGoG,KAAKyriC,MAAMzriC,KAAKhc,MAAM8W,MAAMlB,GAAG,EAAEkyiC,UAAU,WAAW,IAAIlyiC,EAAEoG,KAAKxT,QAAQ2lH,OAAO,EAAEnyG,KAAKxT,QAAQ4H,OAAO4L,KAAKhc,MAAMoQ,QAAQ,OAAOwF,EAAExF,OAAO,GAAG,MAAM,IAAIwF,EAAEu4G,QAAQ,IAAIpuH,QAAQ,MAAM,GAAG,EAAEgojC,cAAc,WAAW,IAAInyiC,EAAEoG,KAAKhc,MAAM,OAAO4V,EAAExF,OAAO,KAAKwF,GAAGoG,KAAKspyB,OAAOn3rB,OAAO,EAAE,GAAGv4G,EAAExF,UAAUwF,EAAEu4G,OAAO,EAAE,KAAKv4G,EAAExF,OAAO,GAAG,MAAM,KAAKrQ,QAAQ,MAAM,GAAG,EAAEknjC,aAAa,WAAW,IAAIrxiC,EAAEoG,KAAK8riC,YAAYjyiC,EAAE,IAAIvF,MAAMsF,EAAExF,OAAO,GAAG8J,KAAK,KAAK,OAAOtE,EAAEoG,KAAK+riC,gBAAgB,KAAKlyiC,EAAE,GAAG,EAAE/R,KAAK,WAAW,GAAGkY,KAAKwB,KAAK,OAAOxB,KAAK6le,IAAgC,IAAIjse,EAAEC,EAAEjU,EAAErC,EAAEyB,EAAxCgb,KAAKspyB,SAAStpyB,KAAKwB,MAAK,GAAkBxB,KAAKsriC,QAAQtriC,KAAKupiC,OAAO,GAAGvpiC,KAAKhc,MAAM,IAAI,IAAI,IAAI0d,EAAE1B,KAAKmsiC,gBAAgBxqiC,EAAE,EAAEA,EAAED,EAAEtN,WAASxO,EAAEoa,KAAKspyB,OAAOtlzB,MAAMgc,KAAK23G,MAAMj2G,EAAEC,OAAS9H,KAAKjU,EAAE,GAAGwO,OAAOyF,EAAE,GAAGzF,UAAUyF,EAAEjU,EAAErC,EAAEoe,EAAE3B,KAAKpQ,QAAQojX,OAAOrxW,KAAK,OAAO9H,IAAG7U,EAAE6U,EAAE,GAAG7V,MAAM,sBAAuBgc,KAAKypiC,UAAUzkjC,EAAEoP,QAAQ4L,KAAKwqiC,OAAO,CAACU,WAAWlriC,KAAKwqiC,OAAOW,UAAUA,UAAUnriC,KAAKypiC,SAAS,EAAE2B,aAAapriC,KAAKwqiC,OAAOa,YAAYA,YAAYrmjC,EAAEA,EAAEA,EAAEoP,OAAO,GAAGA,OAAOpP,EAAEA,EAAEoP,OAAO,GAAGpQ,MAAM,UAAU,GAAGoQ,OAAO4L,KAAKwqiC,OAAOa,YAAYxxiC,EAAE,GAAGzF,QAAQ4L,KAAKupiC,QAAQ1viC,EAAE,GAAGmG,KAAKhc,OAAO6V,EAAE,GAAGmG,KAAKiyB,QAAQp4B,EAAEmG,KAAKwpiC,OAAOxpiC,KAAKupiC,OAAOn1iC,OAAO4L,KAAKpQ,QAAQmjd,SAAS/yc,KAAKwqiC,OAAO32hC,MAAM,CAAC7T,KAAKpb,OAAOob,KAAKpb,QAAQob,KAAKwpiC,SAASxpiC,KAAKsriC,OAAM,EAAGtriC,KAAKspyB,OAAOtpyB,KAAKspyB,OAAOxuyB,MAAMjB,EAAE,GAAGzF,QAAQ4L,KAAKxT,SAASqN,EAAE,GAAGD,EAAEoG,KAAKspiC,cAAcjpiC,KAAKL,KAAKA,KAAKpc,GAAGoc,KAAK0B,EAAEne,GAAGyc,KAAKwriC,eAAexriC,KAAKwriC,eAAep3iC,OAAO,IAAI4L,KAAKwB,MAAMxB,KAAKspyB,SAAStpyB,KAAKwB,MAAK,GAAI5H,QAAI,GAAQ,KAAKoG,KAAKspyB,OAAOtpyB,KAAK6le,IAAI7le,KAAKiqiC,WAAW,0BAA0BjqiC,KAAKypiC,SAAS,GAAG,yBAAyBzpiC,KAAKiriC,eAAe,CAACn7gC,KAAK,GAAG7rB,MAAM,KAAKksB,KAAKnwB,KAAKypiC,UAAU,EAAEh2wB,IAAI,WAAW,IAAI75R,EAAEoG,KAAKlY,OAAO,YAAM,IAAoB8R,EAAEA,EAAEoG,KAAKyzR,KAAK,EAAE1iC,MAAM,SAASn3P,GAAGoG,KAAKwriC,eAAe13iC,KAAK8F,EAAE,EAAEwyiC,SAAS,WAAW,OAAOpsiC,KAAKwriC,eAAenpiC,KAAK,EAAE8piC,cAAc,WAAW,OAAOnsiC,KAAKqsiC,WAAWrsiC,KAAKwriC,eAAexriC,KAAKwriC,eAAep3iC,OAAO,IAAIujH,KAAK,EAAE207B,SAAS,WAAW,OAAOtsiC,KAAKwriC,eAAexriC,KAAKwriC,eAAep3iC,OAAO,EAAE,EAAEmyS,UAAU,SAAS3sS,GAAGoG,KAAK+wP,MAAMn3P,EAAE,EAAUA,QAAU,CAAC,EAAEA,cAAgB,SAASA,EAAEC,EAAEjU,EAAErC,GAAG,SAASyB,EAAE4U,EAAEhU,GAAG,OAAOiU,EAAE0viC,OAAO1viC,EAAE0viC,OAAOpg9B,UAAUvvF,EAAEC,EAAE2viC,OAAO5jjC,EAAEgU,EAAE,CAAC,OAAOhU,GAAG,KAAK,EAAE,GAAG,SAASiU,EAAE0viC,OAAOzuiC,OAAO,IAAI9V,EAAE,EAAE,GAAGgb,KAAK+wP,MAAM,OAAO,OAAOl3P,EAAE0viC,OAAOzuiC,OAAO,IAAI9V,EAAE,EAAE,GAAGgb,KAAK+wP,MAAM,QAAQ/wP,KAAK+wP,MAAM,MAAMl3P,EAAE0viC,OAAO,OAAO,GAAG,MAAM,KAAK,EAAoM,KAAK,EAAE,OAAO,GAAtM,KAAK,EAAE,OAAOvpiC,KAAKosiC,WAAW,GAAG,KAAK,EAAE,OAAOpsiC,KAAK+wP,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO/wP,KAAKosiC,WAAW,QAAQpsiC,KAAKwriC,eAAexriC,KAAKwriC,eAAep3iC,OAAO,GAAG,IAAIpP,EAAE,EAAE,GAAG,iBAAkC,KAAK,EAA4Z,KAAK,GAAG,OAAOgb,KAAKosiC,WAAW,GAA/Z,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,OAAOpsiC,KAAKosiC,WAAWpsiC,KAAK+wP,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAA6B,KAAK,GAAG,OAAO/wP,KAAKosiC,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAoH,KAAK,GAAG,OAAO,GAAtH,KAAK,GAAGpsiC,KAAKyriC,MAAM5xiC,EAAE0viC,QAAQvpiC,KAAKosiC,WAAWpsiC,KAAK+wP,MAAM,OAAO,MAA0D,KAAK,GAAG,OAAO,GAAG,KAAK,GAAa,KAAK,GAA6W,KAAK,GAAG,OAAO,GAA/W,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,KAAK,GAAG,OAAO/wP,KAAKosiC,WAAW,GAAG,KAAK,GAAG,OAAOpsiC,KAAKosiC,WAAW,GAAG,KAAK,GAAG,OAAOvyiC,EAAE0viC,OAAOvkjC,EAAE,EAAE,GAAGjB,QAAQ,OAAO,KAAK,GAAG,KAAK,GAAG,OAAO8V,EAAE0viC,OAAOvkjC,EAAE,EAAE,GAAGjB,QAAQ,OAAO,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAa,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAqB,KAAK,GAAG,OAAO8V,EAAE0viC,OAAO1viC,EAAE0viC,OAAOxljC,QAAQ,cAAc,MAAM,GAAG,KAAK,GAAG,MAAM,UAAU,KAAK,GAAG,OAAO,EAAE,EAAE6V,MAAQ,CAAC,2BAA2B,gBAAgB,gDAAgD,yBAAyB,qEAAqE,+BAA+B,0BAA0B,UAAU,UAAU,gBAAgB,gBAAgB,iBAAiB,kBAAkB,oBAAoB,kBAAkB,6BAA6B,kCAAkC,kBAAkB,yBAAyB,kBAAkB,iBAAiB,mBAAmB,6BAA6B,mBAAmB,SAAS,YAAY,4BAA4B,aAAa,WAAW,kBAAkB,gBAAgB,uBAAuB,uBAAuB,SAAS,yBAAyB,0BAA0B,8BAA8B,yBAAyB,0CAA0C,eAAe,UAAU,0DAA0D,yBAAyB,SAAS,UAAUA,WAAa,CAAC60V,GAAG,CAAC92O,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIyq9B,WAAU,GAAIC,IAAI,CAAC1q9B,MAAM,CAAC,GAAGyq9B,WAAU,GAAIE,IAAI,CAAC3q9B,MAAM,CAAC,GAAGyq9B,WAAU,GAAI7zhC,IAAI,CAACopE,MAAM,CAAC,EAAE,EAAE,GAAGyq9B,WAAU,GAAIG,QAAQ,CAAC5q9B,MAAM,CAAC,EAAE,EAAE,IAAIyq9B,WAAU,KAArvF,OAA0vFxokC,CAAC,CAAzpM,GAA6pM,OAAOC,EAAEq7R,MAAMtvS,EAAEgU,EAAEwG,UAAUvG,EAAEA,EAAEg/R,OAAOj/R,EAAE,IAAIA,CAAC,CAD80K,GAC10KC,EAAW,QAAEjU,EAAEgU,EAAEnV,QAAQoV,EAAW,OAAC,EAAE,SAASD,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,IAAI,IAAIqW,EAAEzF,UAAUC,QAAQ,QAAG,IAASD,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAG6L,KAAKpQ,QAAQgK,CAAC,CAAC,SAAS5U,EAAE4U,EAAEC,EAAEjU,QAAG,IAASiU,IAAIA,EAAED,EAAExF,QAAQ,IAAI7Q,EAAEqW,EAAEC,EAAE,GAAG7U,EAAE4U,EAAEC,EAAE,GAAG,OAAOtW,EAAE,qBAAqBA,EAAEysB,MAAMhrB,IAAIY,EAAE,aAAa,kBAAkB1D,KAAKqB,EAAE47C,eAAU,EAAOv5C,CAAC,CAAC,SAAS8b,EAAE9H,EAAEC,EAAEjU,QAAG,IAASiU,IAAIA,GAAG,GAAG,IAAItW,EAAEqW,EAAEC,EAAE,GAAG7U,EAAE4U,EAAEC,EAAE,GAAG,OAAOtW,EAAE,qBAAqBA,EAAEysB,MAAMhrB,IAAIY,EAAE,aAAa,kBAAkB1D,KAAKqB,EAAE47C,eAAU,EAAOv5C,CAAC,CAAC,SAAS+b,EAAE/H,EAAEC,EAAEjU,GAAG,IAAIrC,EAAEqW,EAAE,MAAMC,EAAE,EAAEA,EAAE,GAAG,GAAGtW,GAAG,qBAAqBA,EAAEysB,OAAOpqB,IAAIrC,EAAEi/kC,eAAe,CAAC,IAAIx9kC,EAAEzB,EAAEoC,MAAMpC,EAAEoC,MAAMpC,EAAEoC,MAAM5B,QAAQ6B,EAAE,OAAO,gBAAgB,IAAIrC,EAAEi/kC,cAAcj/kC,EAAEoC,QAAQX,CAAC,CAAC,CAAC,SAAS3B,EAAEuW,EAAEC,EAAEjU,GAAG,IAAIrC,EAAEqW,EAAE,MAAMC,EAAED,EAAExF,OAAO,EAAEyF,EAAE,GAAG,GAAGtW,GAAG,qBAAqBA,EAAEysB,OAAOpqB,IAAIrC,EAAEk/kC,cAAc,CAAC,IAAIz9kC,EAAEzB,EAAEoC,MAAM,OAAOpC,EAAEoC,MAAMpC,EAAEoC,MAAM5B,QAAQ6B,EAAE,OAAO,UAAU,IAAIrC,EAAEk/kC,aAAal/kC,EAAEoC,QAAQX,EAAEzB,EAAEk/kC,YAAY,CAAC,CAAC,IAAIp9kC,EAAEO,EAAE,GAAY,QAAEiU,EAAE0oF,YAAW,EAAG,IAAY9wE,EAAEpsB,EAARO,EAAE,KAAWrC,EAAE6c,UAAU,IAAIqR,EAAW,QAAEluB,EAAE6c,UAAUi1R,QAAQ,SAASz7R,GAAG,IAAIC,GAAGmG,KAAKpQ,QAAQ8ykC,iBAAiB98kC,GAAGoa,KAAK2ikC,WAAW3ikC,KAAK2ikC,YAAW,EAAG,IAAI,IAAIp/kC,EAAEqW,EAAElM,KAAKrI,EAAE,EAAE2gC,EAAEziC,EAAE6Q,OAAO/O,EAAE2gC,EAAE3gC,IAAI,CAAC,IAAIosB,EAAEluB,EAAE8B,GAAGmzB,EAAExY,KAAK43W,OAAOnmW,GAAG,GAAG+G,EAAE,CAAC,IAAIr1B,EAAE6B,EAAEzB,EAAE8B,EAAEO,GAAGib,EAAEa,EAAEne,EAAE8B,EAAEO,GAAG+9E,EAAEnrD,EAAEoqjC,gBAAgBz/kC,EAAEgd,EAAEqY,EAAEqqjC,iBAAiBhikC,EAAEgpF,EAAErxE,EAAEsqjC,kBAAkB3/kC,GAAG0d,EAAE2X,EAAE/K,OAAO9L,EAAEpe,EAAE8B,GAAE,GAAImzB,EAAEu1E,MAAM1qG,EAAEE,EAAE8B,GAAE,GAAIwU,GAAGgwF,IAAIloF,EAAEpe,EAAE8B,GAAGhC,EAAEE,EAAE8B,IAAI,qBAAqBosB,EAAEzB,OAAOyB,EAAE+zJ,OAAO,YAAYngJ,KAAK9hC,EAAE8B,EAAE,GAAG85C,UAAU,KAAKtlC,GAAG8pE,IAAIhiE,GAAG8P,EAAEsvO,SAAStvO,EAAE6sd,SAAS5we,MAAMrK,EAAEE,EAAE8B,IAAIwU,GAAGsG,IAAIwB,EAAEpe,EAAE8B,GAAGhC,GAAGouB,EAAE6sd,SAAS7sd,EAAEsvO,SAASrzP,MAAM,CAAC,CAAC,OAAOkM,CAAC,EAAErW,EAAE6c,UAAU2ikC,eAAex/kC,EAAE6c,UAAU4ikC,eAAez/kC,EAAE6c,UAAU6ikC,sBAAsB,SAASrpkC,GAAGoG,KAAK43W,OAAOh+W,EAAEmnP,SAAS/gP,KAAK43W,OAAOh+W,EAAE0ke,SAAS,IAAIzke,EAAED,EAAEmnP,SAASnnP,EAAE0ke,QAAQ14e,EAAEgU,EAAEmnP,SAASnnP,EAAE0ke,QAAQ/6e,EAAEqC,EAAEP,EAAEO,EAAE,GAAGA,GAAGA,EAAEm8kC,QAAQ,IAAIx+kC,EAAEqC,EAAE8H,KAAK,GAAGqzP,QAAQ17P,EAAE08kC,SAAS18kC,EAAEA,EAAEqI,KAAKrI,EAAEqI,KAAK0G,OAAO,GAAG2sP,QAAQ,IAAI/6N,EAAE,CAAC+nE,KAAKn0F,EAAEspkC,UAAUn1+B,KAAKtgF,MAAM7T,EAAEupkC,WAAW11jC,MAAMm1jC,eAAelhkC,EAAE7H,EAAEnM,MAAMm1kC,gBAAgB79kC,GAAGzB,GAAGsW,GAAGnM,OAAO,GAAGkM,EAAEspkC,UAAUz1jC,OAAO9L,EAAE9H,EAAEnM,KAAK,MAAK,GAAI9H,EAAE,CAAC,IAAI6rB,EAAE7X,EAAEwpkC,aAAa3xjC,EAAEs8E,MAAM1qG,EAAEwW,EAAEnM,KAAK,MAAK,GAAI+jB,EAAEhE,OAAO9L,EAAEpe,EAAEmK,KAAK,MAAK,GAAIkM,EAAEupkC,WAAWp1+B,MAAM1qG,EAAEgC,EAAEqI,KAAK,MAAK,IAAKsS,KAAKpQ,QAAQ8ykC,kBAAkB19kC,EAAE6U,EAAEnM,OAAOgU,EAAEne,EAAEmK,QAAQrK,EAAEwW,EAAEnM,MAAMiU,EAAEpe,EAAEmK,MAAM,MAAMkM,EAAEupkC,WAAWp1+B,MAAM1qG,EAAEwW,EAAEnM,KAAK,MAAK,GAAI,OAAOs4B,CAAC,EAAEziC,EAAE6c,UAAUijkC,UAAU9/kC,EAAE6c,UAAUkjkC,kBAAkB,SAAS1pkC,GAAG,OAAOA,EAAE+gM,KAAK,EAAEp3M,EAAE6c,UAAUmjkC,iBAAiBhglC,EAAE6c,UAAUojkC,iBAAiB,SAAS5pkC,GAAG,IAAIC,EAAED,EAAE+gM,OAAO,CAAC,EAAE,MAAM,CAACmo4B,kBAAiB,EAAG/0+B,KAAKl0F,EAAEk0F,KAAKtgF,MAAM5T,EAAE4T,MAAM,EAAE5T,EAAW,QAAEtW,EAAEqW,EAAEnV,QAAQoV,EAAW,OAAC,EAAE,SAASD,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,IAAIyc,KAAKwoG,QAAQ,EAAE,CAAC,SAASxjH,EAAE4U,GAAGoG,KAAKyjkC,eAAe7pkC,EAAE,QAAQoG,KAAK0jkC,YAAY9pkC,EAAEumD,QAAQngD,KAAK2jkC,UAAU/pkC,EAAE,OAAO,CAAC,SAAS8H,EAAE9H,GAAG5U,EAAEqb,KAAKL,KAAKpG,GAAGoG,KAAK2jkC,UAAU/pkC,EAAE,WAAWoG,KAAK2jkC,UAAU/pkC,EAAE,UAAU,CAAC,SAAS+H,EAAE/H,GAAGoG,KAAKyjkC,eAAe7pkC,EAAE,QAAQoG,KAAK0jkC,YAAY9pkC,EAAEumD,QAAQngD,KAAK2jkC,UAAU/pkC,EAAE,OAAO,CAAC,IAAIvW,EAAEuC,EAAE,GAAY,QAAEiU,EAAE0oF,YAAW,EAAG,IAAWv8D,EAAE3iC,EAAPuC,EAAE,IAAUrC,EAAE6c,UAAU,CAACK,YAAYld,EAAEqglC,UAAS,EAAGD,UAAU,SAAS/pkC,EAAEC,GAAG,IAAIjU,EAAEoa,KAAK43W,OAAOh+W,EAAEC,IAAI,GAAGmG,KAAK4jkC,SAAS,CAAC,GAAGh+kC,IAAIrC,EAAE6c,UAAUxa,EAAEoqB,MAAM,MAAM,IAAIgW,EAAW,QAAE,yBAAyBpgC,EAAEoqB,KAAK,0BAA0BnW,EAAE,OAAOD,EAAEoW,MAAMpW,EAAEC,GAAGjU,CAAC,CAAC,EAAE69kC,eAAe,SAAS7pkC,EAAEC,GAAG,GAAGmG,KAAK2jkC,UAAU/pkC,EAAEC,IAAID,EAAEC,GAAG,MAAM,IAAImsB,EAAW,QAAEpsB,EAAEoW,KAAK,aAAanW,EAAE,EAAE6pkC,YAAY,SAAS9pkC,GAAG,IAAI,IAAIC,EAAE,EAAEjU,EAAEgU,EAAExF,OAAOyF,EAAEjU,EAAEiU,IAAImG,KAAK2jkC,UAAU/pkC,EAAEC,GAAGD,EAAEC,KAAKD,EAAEmzB,OAAOlzB,EAAE,GAAGA,IAAIjU,IAAI,EAAEgyX,OAAO,SAASh+W,GAAG,GAAGA,EAAE,CAAC,IAAIoG,KAAKpG,EAAEoW,MAAM,MAAM,IAAIgW,EAAW,QAAE,iBAAiBpsB,EAAEoW,KAAKpW,GAAGoG,KAAKnK,SAASmK,KAAKwoG,QAAQrxB,QAAQn3E,KAAKnK,SAASmK,KAAKnK,QAAQ+D,EAAE,IAAIC,EAAEmG,KAAKpG,EAAEoW,MAAMpW,GAAG,OAAOoG,KAAKnK,QAAQmK,KAAKwoG,QAAQtgE,SAASloC,KAAK4jkC,UAAU/pkC,EAAEA,GAAM,IAAJA,EAAOD,OAAE,CAAM,CAAC,EAAEy7R,QAAQ,SAASz7R,GAAGoG,KAAK0jkC,YAAY9pkC,EAAElM,KAAK,EAAE41kC,kBAAkBt+kC,EAAEq+kC,UAAUr+kC,EAAE+9kC,eAAerhkC,EAAEshkC,eAAethkC,EAAE6hkC,iBAAiB5hkC,EAAEshkC,sBAAsB,SAASrpkC,GAAG+H,EAAEtB,KAAKL,KAAKpG,GAAGoG,KAAK2jkC,UAAU/pkC,EAAE,UAAU,EAAEiqkC,iBAAiB,WAAW,EAAEL,iBAAiB,WAAW,EAAEM,cAAc9+kC,EAAE++kC,eAAe,WAAW,EAAEC,cAAc,WAAW,EAAEC,cAAc,WAAW,EAAEC,eAAe,WAAW,EAAEC,iBAAiB,WAAW,EAAEC,YAAY,WAAW,EAAE/zpB,KAAK,SAASz2a,GAAGoG,KAAK0jkC,YAAY9pkC,EAAEilN,MAAM,EAAEwl3B,SAAS,SAASzqkC,GAAGoG,KAAKyjkC,eAAe7pkC,EAAE,QAAQ,GAAGC,EAAW,QAAEtW,EAAEqW,EAAEnV,QAAQoV,EAAW,OAAC,EAAE,SAASD,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,EAAEqW,EAAEC,GAAG,GAAGA,EAAEA,EAAEgvE,KAAKhvE,EAAEgvE,KAAK1pC,SAAStlC,EAAED,EAAEivE,KAAK1pC,WAAWtlC,EAAE,CAAC,IAAIjU,EAAE,CAACy2J,IAAIziJ,EAAEivE,KAAKwzE,KAAK,MAAM,IAAIxyD,EAAW,QAAEjwF,EAAEivE,KAAK1pC,SAAS,kBAAkBtlC,EAAEjU,EAAE,CAAC,CAA08D,IAAI+9E,EAAE/9E,EAAE,GAAY,QAAEiU,EAAE0oF,YAAW,EAAG1oF,EAAEojkC,eAAj/D,SAAWrjkC,EAAEC,GAAGmG,KAAKuR,OAAO3X,EAAEoG,KAAKvT,MAAM,CAAC0jC,KAAKt2B,EAAEqxiC,WAAWth0B,OAAO/vO,EAAEuxiC,cAAcpriC,KAAKtT,IAAI,CAACyjC,KAAKt2B,EAAEsxiC,UAAUvh0B,OAAO/vO,EAAEwxiC,YAAY,EAA+3DxxiC,EAAEkE,GAAh4D,SAAWnE,GAAG,MAAM,WAAW1X,KAAK0X,GAAGA,EAAEuvF,UAAU,EAAEvvF,EAAExF,OAAO,GAAGwF,CAAC,EAAm0DC,EAAE+nkC,WAAp0D,SAAWhokC,EAAEC,GAAG,MAAM,CAACk0F,KAAK,MAAMn0F,EAAE8Y,OAAO,GAAGjF,MAAM,MAAM5T,EAAE6Y,OAAO7Y,EAAEzF,OAAO,GAAG,EAAkwDyF,EAAE8nkC,aAAnwD,SAAW/nkC,GAAG,OAAOA,EAAE7V,QAAQ,eAAe,IAAIA,QAAQ,cAAc,GAAG,EAAusD8V,EAAEqokC,YAAxsD,SAAWtokC,EAAEC,EAAEjU,GAAGA,EAAEoa,KAAKg9jC,QAAQp3kC,GAAG,IAAI,IAAIrC,EAAEqW,EAAE,IAAI,GAAG5U,EAAE,GAAG0c,EAAE,EAAEC,EAAE,EAAEte,EAAEwW,EAAEzF,OAAOuN,EAAEte,EAAEse,IAAI,CAAC,IAAItc,EAAEwU,EAAE8H,GAAG0mH,KAAKriG,EAAEnsB,EAAE8H,GAAGw9B,WAAW95C,EAAE,GAAG9B,IAAIsW,EAAE8H,GAAG6tP,WAAW,IAAInqQ,EAAE2gC,GAAG,OAAO3gC,GAAG,MAAMA,GAAG,SAASA,EAAEL,EAAE8O,KAAKzO,OAAO,CAAC,GAAGL,EAAEoP,OAAO,EAAE,MAAM,IAAIy1F,EAAW,QAAE,iBAAiBtmG,EAAE,CAAC84J,IAAIz2J,IAAI,OAAOP,GAAGqc,GAAG,CAAC,CAAC,MAAM,CAACsO,KAAK,iBAAiBja,KAAK6D,EAAEkoN,MAAMpgN,EAAE40D,MAAMtxE,EAAEm6C,SAAS57C,EAAE84J,IAAIz2J,EAAE,EAAw3CiU,EAAEmokC,gBAAz3C,SAAWpokC,EAAEC,EAAEjU,EAAErC,EAAEyB,EAAE0c,GAAG,IAAIC,EAAEpe,EAAEmvB,OAAO,IAAInvB,EAAEmvB,OAAO,GAAGrvB,EAAE,MAAMse,GAAG,MAAMA,EAAiB,MAAM,CAACqO,KAApB,KAAK9tB,KAAKqB,GAAiB,YAAY,oBAAoBslF,KAAKjvE,EAAEumD,OAAOtmD,EAAEvN,KAAK1G,EAAEmsnB,QAAQ1unB,EAAEs3M,MAAM31M,EAAEq3J,IAAIr8I,KAAKg9jC,QAAQt7jC,GAAG,EAAusC7H,EAAEgokC,gBAAxsC,SAAWjokC,EAAEC,EAAEjU,EAAEZ,GAAGzB,EAAEqW,EAAEhU,GAAqB,IAAI8b,EAAE,CAACsO,KAAK,UAAUtiB,KAAKmM,EAAE8gM,MAAM,CAAC,EAAEt+C,IAAxDr3J,EAAEgb,KAAKg9jC,QAAQh4kC,IAAgD,MAAM,CAACgrB,KAAK,iBAAiB64D,KAAKjvE,EAAEivE,KAAK1oB,OAAOvmD,EAAEumD,OAAO7zD,KAAKsN,EAAEtN,KAAKy0P,QAAQr/O,EAAEwhkC,UAAU,CAAC,EAAEE,aAAa,CAAC,EAAED,WAAW,CAAC,EAAE9m7B,IAAIr3J,EAAE,EAAggC6U,EAAEiokC,aAAjgC,SAAWlokC,EAAEC,EAAEjU,EAAEZ,EAAE0c,EAAEC,GAAG3c,GAAGA,EAAE6jF,MAAMtlF,EAAEqW,EAAE5U,GAAG,IAAI3B,EAAE,KAAKnB,KAAK0X,EAAEm0F,MAAMl0F,EAAEmgkC,YAAYpgkC,EAAEogkC,YAAY,IAAI30kC,OAAE,EAAO2gC,OAAE,EAAO,GAAGpgC,EAAE,CAAC,GAAGvC,EAAE,MAAM,IAAIwmG,EAAW,QAAE,wCAAwCjkG,GAAGA,EAAE08H,QAAQ18H,EAAEm7P,QAAQrzP,KAAK,GAAGy1kC,WAAWn+kC,EAAE21M,OAAO30K,EAAEpgC,EAAE+0M,MAAMt1M,EAAEO,EAAEm7P,OAAO,CAAC,OAAOr/O,IAAIA,EAAErc,EAAEA,EAAEwU,EAAEA,EAAE6H,GAAG,CAACsO,KAAK3sB,EAAE,iBAAiB,iBAAiBwlF,KAAKjvE,EAAEivE,KAAK1oB,OAAOvmD,EAAEumD,OAAO7zD,KAAKsN,EAAEtN,KAAKy0P,QAAQlnP,EAAEyke,QAAQj5e,EAAE69kC,UAAUtpkC,EAAE+gM,MAAMyo4B,aAAap9iC,EAAEm9iC,WAAWn+kC,GAAGA,EAAE21M,MAAMt+C,IAAIr8I,KAAKg9jC,QAAQr7jC,GAAG,EAAgkB9H,EAAE6nkC,eAAjkB,SAAW9nkC,EAAEC,GAAG,IAAIA,GAAGD,EAAExF,OAAO,CAAC,IAAIxO,EAAEgU,EAAE,GAAGyiJ,IAAI94J,EAAEqW,EAAEA,EAAExF,OAAO,GAAGioJ,IAAIz2J,GAAGrC,IAAIsW,EAAE,CAAC0X,OAAO3rB,EAAE2rB,OAAO9kB,MAAM,CAAC0jC,KAAKvqC,EAAE6G,MAAM0jC,KAAKy5M,OAAOhkP,EAAE6G,MAAMm9O,QAAQl9O,IAAI,CAACyjC,KAAK5sC,EAAEmJ,IAAIyjC,KAAKy5M,OAAOrmP,EAAEmJ,IAAIk9O,SAAS,CAAC,MAAM,CAAC55N,KAAK,UAAUtiB,KAAKkM,EAAE+gM,MAAM,CAAC,EAAEt+C,IAAIxiJ,EAAE,EAA4WA,EAAEookC,oBAA7W,SAAWrokC,EAAEC,EAAEjU,EAAEZ,GAAG,OAAOzB,EAAEqW,EAAEhU,GAAG,CAACoqB,KAAK,wBAAwBzc,KAAKqG,EAAEivE,KAAK1oB,OAAOvmD,EAAEumD,OAAO7zD,KAAKsN,EAAEtN,KAAKy0P,QAAQlnP,EAAEqpkC,UAAUtpkC,EAAE+gM,MAAMwo4B,WAAWv9kC,GAAGA,EAAE+0M,MAAMt+C,IAAIr8I,KAAKg9jC,QAAQh4kC,GAAG,EAAqN,IAAW6kG,EAAElmB,EAAP/9E,EAAE,GAAS,EAAE,SAASgU,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,IAAI,CAAu5B,SAASoe,EAAE/H,EAAEC,GAAG,GAAGD,IAAIC,EAAE,OAAM,EAAG,GAAG1W,EAAE4sB,QAAQnW,IAAIzW,EAAE4sB,QAAQlW,IAAID,EAAExF,SAASyF,EAAEzF,OAAO,CAAC,IAAI,IAAIxO,EAAE,EAAEA,EAAEgU,EAAExF,OAAOxO,IAAI,IAAI+b,EAAE/H,EAAEhU,GAAGiU,EAAEjU,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,CAAC,SAASvC,EAAEuW,GAAG,IAAIA,EAAEivE,KAAKvS,MAAM,CAAC,IAAIz8D,EAAED,EAAEivE,KAAKjvE,EAAEivE,KAAK,CAAC74D,KAAK,iBAAiBja,MAAK,EAAG+rN,MAAM,EAAExrJ,MAAM,CAACz8D,EAAEslC,SAAS,IAAIA,SAAStlC,EAAEslC,SAAS,GAAGk9G,IAAIxiJ,EAAEwiJ,IAAI,CAAC,CAAC,IAAIh3J,EAAEO,EAAE,IAAa,QAAEogC,EAAEpgC,EAAE,GAAY,QAAEiU,EAAE0oF,YAAW,EAAG1oF,EAAE0+jC,SAASh1kC,EAAEsW,EAAEy+jC,WAAvwC,SAAW1+jC,EAAEC,EAAEjU,GAAG,GAAG,MAAMgU,GAAG,iBAAiBA,GAAG,YAAYA,EAAEoW,KAAK,MAAM,IAAIwI,EAAW,QAAE,iFAAiF5e,GAAW,SAARC,EAAEA,GAAG,CAAC,KAAeA,EAAE9D,MAAK,GAAI8D,EAAEgmf,SAAShmf,EAAEgikC,WAAU,GAAI,IAAIt4kC,EAAEqC,EAAEwyC,MAAMx+B,EAAEC,GAAG7U,GAAE,IAAKY,EAAE2ykC,UAAU/09B,QAAQjgH,EAAEsW,GAAG,OAAM,IAAKjU,EAAE4ykC,oBAAoBh19B,QAAQx+G,EAAE6U,EAAE,EAAy8BA,EAAE2pG,QAA18B,SAAW5pG,EAAEC,EAAEjU,GAAG,SAASrC,IAAI,IAAIA,EAAEqC,EAAEwyC,MAAMx+B,EAAEC,GAAG7U,GAAE,IAAKY,EAAE2ykC,UAAU/09B,QAAQjgH,EAAEsW,GAAG6H,GAAE,IAAK9b,EAAE4ykC,oBAAoBh19B,QAAQx+G,EAAE6U,OAAE,GAAO,GAAI,OAAOjU,EAAEm7N,SAASr/M,EAAE,CAAC,SAAS1c,EAAE4U,EAAEC,GAAG,OAAO6H,IAAIA,EAAEne,KAAKme,EAAErB,KAAKL,KAAKpG,EAAEC,EAAE,CAAC,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,MAAMD,GAAG,iBAAiBA,GAAG,YAAYA,EAAEoW,KAAK,MAAM,IAAIwI,EAAW,QAAE,8EAA8E5e,GAAoB,SAAjBC,EAAE1W,EAAE6/G,OAAO,CAAC,EAAEnpG,MAAgBA,EAAE9D,MAAK,GAAI8D,EAAEgmf,SAAShmf,EAAEgikC,WAAU,GAAI,IAAIn6jC,OAAE,EAAO,OAAO1c,EAAE02kC,OAAO,SAAS9hkC,GAAG,OAAO8H,IAAIA,EAAEne,KAAKme,EAAEg6jC,OAAO9hkC,EAAE,EAAE5U,EAAEk/4B,OAAO,SAAStq4B,EAAEC,EAAEjU,EAAEZ,GAAG,OAAO0c,IAAIA,EAAEne,KAAKme,EAAEwi4B,OAAOtq4B,EAAEC,EAAEjU,EAAEZ,EAAE,EAAEA,CAAC,EAA2Y,IAAWwzB,EAAEwN,EAAPpgC,EAAE,IAAUzC,EAAEyC,EAAE,GAAW+9E,EAAE39C,EAARpgC,EAAE,KAAWua,EAAE,GAAGrF,MAAMvX,EAAE6c,UAAU,CAAC27jC,SAASx4kC,EAAEwkO,OAAO,SAASnuN,GAAG,IAAIC,EAAEmG,KAAKskkC,QAAQlwkC,OAAO,GAAGwF,EAAE0qkC,QAAQlwkC,SAASyF,EAAE,OAAM,EAAG,IAAI,IAAIjU,EAAE,EAAEA,EAAEiU,EAAEjU,IAAI,CAAC,IAAIrC,EAAEyc,KAAKskkC,QAAQ1+kC,GAAGZ,EAAE4U,EAAE0qkC,QAAQ1+kC,GAAG,GAAGrC,EAAEghlC,SAASv/kC,EAAEu/kC,SAAS5ikC,EAAEpe,EAAE8Q,KAAKrP,EAAEqP,MAAM,OAAM,CAAE,CAAwB,IAAvBwF,EAAEmG,KAAKw3G,SAASpjH,OAAexO,EAAE,EAAEA,EAAEiU,EAAEjU,IAAI,IAAIoa,KAAKw3G,SAAS5xH,GAAGmiO,OAAOnuN,EAAE49G,SAAS5xH,IAAI,OAAM,EAAG,OAAM,CAAE,EAAE6iM,KAAK,EAAEjlF,QAAQ,SAAS5pG,EAAEC,GAAG,OAAOmG,KAAKwkkC,WAAW,GAAGxkkC,KAAKskkC,QAAQ,GAAGtkkC,KAAKw3G,SAAS,GAAGx3G,KAAKpQ,QAAQiK,EAAEmG,KAAKykkC,aAAa5qkC,EAAE4qkC,aAAazkkC,KAAK09T,SAAS7jU,EAAE6jU,SAAS7jU,EAAEmgkC,YAAYngkC,EAAEmgkC,aAAa,GAAGngkC,EAAE6qkC,aAAavhlC,EAAE6/G,OAAO39G,EAAE,MAAM,CAACs/kC,eAAc,EAAGC,oBAAmB,EAAGh0jC,MAAK,EAAG,IAAK,EAAGi0jC,QAAO,EAAG,MAAO,EAAG5+kC,KAAI,EAAGwx7B,QAAO,GAAI596B,EAAE6qkC,cAAc1kkC,KAAK43W,OAAOh+W,EAAE,EAAEkrkC,eAAe,SAASlrkC,GAAG,IAAwBhU,GAAlB,IAAIoa,KAAK+7jC,UAAav49B,QAAQ5pG,EAAEoG,KAAKpQ,SAASrM,EAAEyc,KAAKyoL,OAAO,OAAOzoL,KAAKw8jC,WAAWx8jC,KAAKw8jC,YAAY52kC,EAAE42kC,WAAWx8jC,KAAKw3G,SAASj0H,GAAGqC,EAAEoa,KAAK67jC,UAAU77jC,KAAK67jC,WAAWj2kC,EAAEi2kC,UAAUt4kC,CAAC,EAAEq0X,OAAO,SAASh+W,GAAG,IAAIoG,KAAKpG,EAAEoW,MAAM,MAAM,IAAIwI,EAAW,QAAE,iBAAiB5e,EAAEoW,KAAKpW,GAAGoG,KAAKwkkC,WAAWrt/B,QAAQv9E,GAAG,IAAIC,EAAEmG,KAAKpG,EAAEoW,MAAMpW,GAAG,OAAOoG,KAAKwkkC,WAAWt8hC,QAAQruC,CAAC,EAAEw7R,QAAQ,SAASz7R,GAAGoG,KAAKpQ,QAAQoqkC,YAAY7i/B,QAAQv9E,EAAEogkC,aAAa,IAAI,IAAIngkC,EAAED,EAAElM,KAAK9H,EAAEiU,EAAEzF,OAAO7Q,EAAE,EAAEA,EAAEqC,EAAErC,IAAIyc,KAAK43W,OAAO/9W,EAAEtW,IAAI,OAAOyc,KAAKpQ,QAAQoqkC,YAAY9xhC,QAAQloC,KAAKwgxB,SAAS,IAAI56xB,EAAEoa,KAAKg6jC,YAAYpgkC,EAAEogkC,YAAYpgkC,EAAEogkC,YAAY5lkC,OAAO,EAAE4L,IAAI,EAAE+ikC,eAAe,SAASnpkC,GAAGvW,EAAEuW,GAAG,IAAIC,EAAED,EAAEmnP,QAAQn7P,EAAEgU,EAAE0ke,QAAQzke,EAAEA,GAAGmG,KAAK8kkC,eAAejrkC,GAAGjU,EAAEA,GAAGoa,KAAK8kkC,eAAel/kC,GAAG,IAAIrC,EAAEyc,KAAK+kkC,cAAcnrkC,GAAG,WAAWrW,EAAEyc,KAAKglkC,YAAYprkC,EAAEC,EAAEjU,GAAG,WAAWrC,GAAGyc,KAAKilkC,YAAYrrkC,GAAGoG,KAAKukkC,OAAO,cAAc1qkC,GAAGmG,KAAKukkC,OAAO,cAAc3+kC,GAAGoa,KAAKukkC,OAAO,aAAavkkC,KAAKukkC,OAAO,aAAa3qkC,EAAEivE,KAAK1pC,YAAYn/B,KAAKklkC,eAAetrkC,EAAEC,EAAEjU,GAAGoa,KAAKukkC,OAAO,cAAc1qkC,GAAGmG,KAAKukkC,OAAO,cAAc3+kC,GAAGoa,KAAKukkC,OAAO,aAAavkkC,KAAKukkC,OAAO,wBAAwBvkkC,KAAKukkC,OAAO,SAAS,EAAEvB,eAAe,SAASppkC,GAAG,IAAIC,EAAED,EAAEmnP,SAAS/gP,KAAK8kkC,eAAelrkC,EAAEmnP,SAASn7P,EAAEoa,KAAKmlkC,wBAAwBvrkC,EAAEC,OAAE,GAAQtW,EAAEqW,EAAEivE,KAAK7oE,KAAKy8jC,eAAc,EAAGz8jC,KAAKukkC,OAAO,oBAAoB3+kC,EAAEwO,OAAO7Q,EAAE47C,SAAS,EAAEokiC,iBAAiB,SAAS3pkC,GAAGoG,KAAKw8jC,YAAW,EAAG,IAAI3ikC,EAAED,EAAEmnP,QAAQlnP,IAAIA,EAAEmG,KAAK8kkC,eAAelrkC,EAAEmnP,UAAU,IAAIn7P,EAAEgU,EAAEumD,OAAO,GAAGv6D,EAAEwO,OAAO,EAAE,MAAM,IAAIokB,EAAW,QAAE,4CAA4C5yB,EAAEwO,OAAOwF,GAAGhU,EAAEwO,SAAS4L,KAAKpQ,QAAQw1kC,uBAAuBplkC,KAAKukkC,OAAO,cAAc,aAAa3+kC,EAAEkO,KAAK,CAACkc,KAAK,iBAAiBsmD,MAAM,GAAGwrJ,MAAM,KAAK,IAAIv+N,EAAEqW,EAAErG,KAAK4rC,SAASn6C,EAAE,kBAAkB4U,EAAErG,KAAKyc,KAAKhrB,GAAGgb,KAAK43W,OAAOh+W,EAAErG,MAAMyM,KAAKmlkC,wBAAwBvrkC,EAAEC,OAAE,GAAO,GAAI,IAAI6H,EAAE9H,EAAE4rK,QAAQ,GAAGxlK,KAAKpQ,QAAQy1kC,eAAe3jkC,IAAI1B,KAAKukkC,OAAO,gBAAgB7ikC,GAAGA,EAAE,IAAI1B,KAAKukkC,OAAO,gBAAgBv/kC,EAAEzB,EAAEme,GAAG1B,KAAKukkC,OAAO,SAAS,EAAEtB,sBAAsB,SAASrpkC,GAAGoG,KAAKujkC,iBAAiB3pkC,EAAE,EAAE0pkC,kBAAkB,SAAS1pkC,GAAGoG,KAAK8jkC,cAAclqkC,GAAGA,EAAEm4mB,UAAU/xmB,KAAKpQ,QAAQ01kC,SAAStlkC,KAAKukkC,OAAO,iBAAiBvkkC,KAAKukkC,OAAO,SAAS,EAAElB,UAAU,SAASzpkC,GAAGoG,KAAKgjkC,eAAeppkC,EAAE,EAAEiqkC,iBAAiB,SAASjqkC,GAAGA,EAAEjU,OAAOqa,KAAKukkC,OAAO,gBAAgB3qkC,EAAEjU,MAAM,EAAE69kC,iBAAiB,WAAW,EAAEM,cAAc,SAASlqkC,GAAGvW,EAAEuW,GAAG,IAAIC,EAAEmG,KAAK+kkC,cAAcnrkC,GAAG,WAAWC,EAAEmG,KAAKilkC,YAAYrrkC,GAAG,WAAWC,EAAEmG,KAAKglkC,YAAYprkC,GAAGoG,KAAKklkC,eAAetrkC,EAAE,EAAEsrkC,eAAe,SAAStrkC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAEqW,EAAEivE,KAAK7jF,EAAEzB,EAAE+yE,MAAM,GAAG50D,EAAE,MAAM7H,GAAG,MAAMjU,EAAEoa,KAAKukkC,OAAO,aAAahhlC,EAAEu+N,OAAO9hN,KAAKukkC,OAAO,cAAc1qkC,GAAGmG,KAAKukkC,OAAO,cAAc3+kC,GAAGrC,EAAE0/G,QAAO,EAAGjjG,KAAK43W,OAAOr0X,GAAGyc,KAAKukkC,OAAO,kBAAkBv/kC,EAAE0c,EAAE,EAAEujkC,YAAY,SAASrrkC,GAAG,IAAIC,EAAED,EAAEivE,KAAKhvE,EAAEopG,QAAO,EAAGjjG,KAAK43W,OAAO/9W,GAAGmG,KAAKukkC,OAAO,wBAAwB,EAAES,YAAY,SAASprkC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAEyc,KAAKmlkC,wBAAwBvrkC,EAAEC,EAAEjU,GAAGZ,EAAE4U,EAAEivE,KAAKnnE,EAAE1c,EAAEsxE,MAAM,GAAG,GAAGt2D,KAAKpQ,QAAQ80kC,aAAahjkC,GAAG1B,KAAKukkC,OAAO,oBAAoBhhlC,EAAE6Q,OAAOsN,OAAO,CAAC,GAAG1B,KAAKpQ,QAAQ21kC,iBAAiB,MAAM,IAAI/sjC,EAAW,QAAE,+DAA+D9W,EAAE9H,GAAG5U,EAAEi+G,QAAO,EAAGj+G,EAAEwglC,OAAM,EAAGxlkC,KAAK43W,OAAO5yX,GAAGgb,KAAKukkC,OAAO,eAAehhlC,EAAE6Q,OAAOpP,EAAEm6C,SAASwkC,EAAW,QAAEiqD,QAAQ80yB,SAAS196B,GAAG,CAAC,EAAE++kC,eAAe,SAASnqkC,GAAGoG,KAAKylkC,SAAS7rkC,EAAEkoN,OAAO9hN,KAAKukkC,OAAO,aAAa3qkC,EAAEkoN,OAAO,IAAIjoN,EAAED,EAAE08D,MAAM,GAAG1wE,EAAE+9E,EAAW,QAAEiqD,QAAQmv8B,SAASnjkC,GAAGrW,GAAGqW,EAAEkoN,QAAQl8N,GAAGoa,KAAK0lkC,gBAAgB7rkC,GAAGtW,EAAEyc,KAAKukkC,OAAO,mBAAmBhhlC,EAAEqW,EAAE08D,OAAOz8D,EAAED,EAAE7D,MAAMiK,KAAKpQ,QAAQmG,MAAK,EAAGiK,KAAKukkC,OAAO,aAAa3qkC,EAAEkoN,MAAMloN,EAAE08D,MAAM18D,EAAEqpG,SAASjjG,KAAKukkC,OAAO,kBAAkB3qkC,EAAE08D,MAAM18D,EAAE4rkC,MAAM5rkC,EAAEqpG,OAAOr9G,GAAGoa,KAAKukkC,OAAO,cAAc,EAAEP,cAAc,SAASpqkC,GAAGoG,KAAKukkC,OAAO,aAAa3qkC,EAAEjU,MAAM,EAAEs+kC,cAAc,SAASrqkC,GAAGoG,KAAKukkC,OAAO,cAAc3qkC,EAAEjU,MAAM,EAAEu+kC,eAAe,SAAStqkC,GAAGoG,KAAKukkC,OAAO,cAAc3qkC,EAAEjU,MAAM,EAAEw+kC,iBAAiB,WAAWnkkC,KAAKukkC,OAAO,cAAc,YAAY,EAAEH,YAAY,WAAWpkkC,KAAKukkC,OAAO,cAAc,OAAO,EAAEl0pB,KAAK,SAASz2a,GAAG,IAAIC,EAAED,EAAEilN,MAAMj5N,EAAE,EAAErC,EAAEsW,EAAEzF,OAAO,IAAI4L,KAAKukkC,OAAO,YAAY3+kC,EAAErC,EAAEqC,IAAIoa,KAAK2lkC,UAAU9rkC,EAAEjU,GAAGD,OAAO,KAAKC,KAAKoa,KAAKukkC,OAAO,eAAe1qkC,EAAEjU,GAAG4E,KAAKwV,KAAKukkC,OAAO,UAAU,EAAEA,OAAO,SAAS3qkC,GAAGoG,KAAKskkC,QAAQxwkC,KAAK,CAACywkC,OAAO3qkC,EAAEvF,KAAK8L,EAAEE,KAAKlM,UAAU,GAAGkoJ,IAAIr8I,KAAKwkkC,WAAW,GAAGno7B,KAAK,EAAEop7B,SAAS,SAAS7rkC,GAAGA,IAAIoG,KAAK67jC,WAAU,EAAG,EAAEkJ,cAAc,SAASnrkC,GAAG,IAAIC,EAAE8pE,EAAW,QAAEiqD,QAAQ80yB,SAAS9o6B,EAAEivE,MAAMjjF,EAAEiU,KAAKmG,KAAK0lkC,gBAAgB9rkC,EAAEivE,KAAKvS,MAAM,IAAI/yE,GAAGqC,GAAG+9E,EAAW,QAAEiqD,QAAQkv8B,iBAAiBljkC,GAAG5U,GAAGY,IAAIrC,GAAGsW,GAAG,GAAG7U,IAAIzB,EAAE,CAAC,IAAIme,EAAE9H,EAAEivE,KAAKvS,MAAM,GAAG30D,EAAE3B,KAAKpQ,QAAQ+R,EAAE+ikC,aAAahjkC,GAAGne,GAAE,EAAGoe,EAAE4jkC,mBAAmBvglC,GAAE,EAAG,CAAC,OAAOzB,EAAE,SAASyB,EAAE,YAAY,QAAQ,EAAE4glC,WAAW,SAAShskC,GAAG,IAAI,IAAIC,EAAE,EAAEjU,EAAEgU,EAAExF,OAAOyF,EAAEjU,EAAEiU,IAAImG,KAAK2lkC,UAAU/rkC,EAAEC,GAAG,EAAE8rkC,UAAU,SAAS/rkC,GAAG,IAAIC,EAAE,MAAMD,EAAEjU,MAAMiU,EAAEjU,MAAMiU,EAAEulC,UAAU,GAAG,GAAGn/B,KAAKykkC,aAAa5qkC,EAAE9V,UAAU8V,EAAEA,EAAE9V,QAAQ,eAAe,IAAIA,QAAQ,MAAM,MAAM6V,EAAEkoN,OAAO9hN,KAAKylkC,SAAS7rkC,EAAEkoN,OAAO9hN,KAAKukkC,OAAO,aAAa3qkC,EAAEkoN,OAAO,GAAG9hN,KAAKukkC,OAAO,kBAAkB1qkC,EAAED,EAAEoW,MAAM,kBAAkBpW,EAAEoW,MAAMhQ,KAAK43W,OAAOh+W,OAAO,CAAC,GAAGoG,KAAK09T,SAAS,CAAC,IAAI93U,OAAE,EAAO,IAAIgU,EAAE08D,OAAOqN,EAAW,QAAEiqD,QAAQmv8B,SAASnjkC,IAAIA,EAAEkoN,QAAQl8N,EAAEoa,KAAK0lkC,gBAAgB9rkC,EAAE08D,MAAM,KAAK1wE,EAAE,CAAC,IAAIrC,EAAEqW,EAAE08D,MAAMx7D,MAAM,GAAGoD,KAAK,KAAK8B,KAAKukkC,OAAO,SAAS,aAAa3+kC,EAAErC,EAAE,MAAMsW,EAAED,EAAEulC,UAAUtlC,GAAI9V,UAAU8V,EAAEA,EAAE9V,QAAQ,gBAAgB,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,OAAO,KAAKic,KAAKukkC,OAAO,SAAS3qkC,EAAEoW,KAAKnW,EAAE,CAACmG,KAAK43W,OAAOh+W,EAAE,CAAC,EAAEurkC,wBAAwB,SAASvrkC,EAAEC,EAAEjU,EAAErC,GAAG,IAAIyB,EAAE4U,EAAEumD,OAAO,OAAOngD,KAAK4lkC,WAAW5glC,GAAGgb,KAAKukkC,OAAO,cAAc1qkC,GAAGmG,KAAKukkC,OAAO,cAAc3+kC,GAAGgU,EAAEtN,KAAK0T,KAAK43W,OAAOh+W,EAAEtN,MAAM0T,KAAKukkC,OAAO,YAAYhhlC,GAAGyB,CAAC,EAAE0glC,gBAAgB,SAAS9rkC,GAAG,IAAI,IAAIC,EAAE,EAAEjU,EAAEoa,KAAKpQ,QAAQoqkC,YAAY5lkC,OAAOyF,EAAEjU,EAAEiU,IAAI,CAAC,IAAItW,EAAEyc,KAAKpQ,QAAQoqkC,YAAYngkC,GAAG7U,EAAEzB,GAAGJ,EAAEoF,QAAQhF,EAAEqW,GAAG,GAAGrW,GAAGyB,GAAG,EAAE,MAAM,CAAC6U,EAAE7U,EAAE,CAAC,EAAE,EAAE,SAAS4U,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,EAAEqW,GAAGoG,KAAKra,MAAMiU,CAAC,CAAC,SAAS5U,IAAI,CAAmO,IAAI2c,EAAE/b,EAAE,IAAa,QAAEvC,EAAEuC,EAAE,GAAY,QAAEiU,EAAE0oF,YAAW,EAAG,IAAIl9F,EAAEO,EAAE,GAAU6rB,EAAEpuB,EAAPuC,EAAE,IAAU4yB,EAAE5yB,EAAE,GAAWib,EAAExd,EAARuC,EAAE,KAAWZ,EAAEob,UAAU,CAACylkC,WAAW,SAASjskC,EAAEC,GAAG,OAAOmG,KAAK8lkC,mBAAmBlskC,EAAEC,EAAE,EAAEkskC,cAAc,SAASnskC,GAAG,MAAM,CAACoG,KAAKgmkC,UAAU,oBAAoB,YAAYr8jC,KAAKC,UAAUhQ,GAAG,IAAI,EAAE0ikC,aAAa,WAAW,IAAI1ikC,EAAEvU,EAAE8zkC,kBAA0C,MAAM,CAACv/jC,EAA7BvU,EAAEg0kC,iBAAiBz/jC,GAAc,EAAEqskC,eAAe,SAASrskC,EAAEC,EAAEjU,GAAG,OAAO4yB,EAAEzI,QAAQnW,KAAKA,EAAE,CAACA,IAAIA,EAAEoG,KAAKuR,OAAO+wC,KAAK1oD,EAAEC,GAAGmG,KAAK+E,YAAYy7wB,SAAS,CAAC,UAAU5mxB,EAAE,KAAKhU,EAAE,CAAC,aAAagU,EAAE,MAAMA,EAAEqskC,gBAAe,EAAGrskC,EAAE,EAAEsskC,iBAAiB,WAAW,OAAOlmkC,KAAKmmkC,aAAa,GAAG,EAAEL,mBAAmB,SAASlskC,EAAEC,GAAG,OAAOmG,KAAKomkC,8BAA6B,EAAG,CAAC,kBAAkBxskC,EAAE,IAAI+P,KAAKC,UAAU/P,GAAG,IAAI,EAAEuskC,8BAA6B,EAAG5i+B,QAAQ,SAAS5pG,EAAEC,EAAEjU,EAAErC,GAAGyc,KAAK+E,YAAYnL,EAAEoG,KAAKpQ,QAAQiK,EAAEmG,KAAKykkC,aAAazkkC,KAAKpQ,QAAQ60kC,aAAazkkC,KAAK09T,SAAS19T,KAAKpQ,QAAQ8tU,SAAS19T,KAAKs4jC,YAAY/0kC,EAAEyc,KAAKzM,KAAKyM,KAAK+E,YAAYxR,KAAKyM,KAAKqmkC,UAAUzglC,EAAEoa,KAAKmpB,QAAQvjC,GAAG,CAACyz/B,WAAW,GAAG+iF,SAAS,GAAG3lW,aAAa,IAAIz2tB,KAAKg3J,WAAWh3J,KAAKsmkC,UAAU,EAAEtmkC,KAAKumkC,UAAU,GAAGvmkC,KAAK0ptB,QAAQ,CAAC,EAAE1ptB,KAAKwmkC,UAAU,CAAC54kC,KAAK,IAAIoS,KAAKymkC,OAAO,GAAGzmkC,KAAK0mkC,aAAa,GAAG1mkC,KAAK2mkC,YAAY,GAAG3mkC,KAAKg6jC,YAAY,GAAGh6jC,KAAK4mkC,gBAAgBhtkC,EAAEC,GAAGmG,KAAK67jC,UAAU77jC,KAAK67jC,WAAWjikC,EAAEiikC,WAAWjikC,EAAE6ikC,eAAez8jC,KAAKpQ,QAAQiwf,OAAO7/e,KAAK47jC,eAAe57jC,KAAK47jC,gBAAgBhikC,EAAEgikC,eAAe,IAAI52kC,EAAE4U,EAAE0qkC,QAAQ5ikC,OAAE,EAAOC,OAAE,EAAOte,OAAE,EAAOgC,OAAE,EAAO,IAAIhC,EAAE,EAAEgC,EAAEL,EAAEoP,OAAO/Q,EAAEgC,EAAEhC,IAAIqe,EAAE1c,EAAE3B,GAAG2c,KAAKuR,OAAO+0W,gBAAgB5kX,EAAE26I,IAAI16I,EAAEA,GAAGD,EAAE26I,IAAIr8I,KAAK0B,EAAE6ikC,QAAQzjkC,MAAMd,KAAK0B,EAAErN,MAAM,GAAG2L,KAAKuR,OAAO+0W,gBAAgB3kX,EAAE3B,KAAK6mkC,WAAW,IAAI7mkC,KAAKsmkC,WAAWtmkC,KAAK2mkC,YAAYvykC,QAAQ4L,KAAK0mkC,aAAatykC,OAAO,MAAM,IAAIqd,EAAW,QAAE,gDAAgDzR,KAAKq5+B,WAAW77xB,UAAUx9M,KAAKq5+B,gBAAW,GAAQr5+B,KAAKy8jC,eAAc,EAAGz8jC,KAAKq5+B,WAAWh1uB,QAAQ,CAAC,0CAA0CrkQ,KAAK8mkC,uCAAuC,QAC11+B9mkC,KAAKq5+B,WAAWvl/B,KAAK,cAAcvQ,EAAEyc,KAAKq5+B,WAAW5t4B,SAAS3qG,MAAMd,KAAK,CAAC,KAAK,QAAQ,YAAY,SAAS,OAAO,cAAc,SAASA,KAAKq5+B,WAAWvn+B,WAAW9R,KAAKq5+B,WAAWh1uB,QAAQ,yEAAyErkQ,KAAKq5+B,WAAWvl/B,KAAK,OAAOkM,KAAKq5+B,WAAWr5+B,KAAKq5+B,WAAWvn+B,UAAU,IAAIkU,EAAEhmB,KAAK+mkC,sBAAsBxjlC,GAAG,GAAGyc,KAAKqmkC,QAAQ,OAAOrgjC,EAAE,IAAIxN,EAAE,CAACujjC,SAAS/7jC,KAAKs8jC,eAAe7j4B,KAAKzyK,GAAGhmB,KAAKq5+B,aAAa7g+B,EAAEsjjC,OAAO97jC,KAAKq5+B,WAAW7g+B,EAAEikjC,eAAc,GAAI,IAAIt5kC,EAAE6c,KAAKmpB,QAAQtoB,EAAE1d,EAAEi5kC,SAASz4/B,EAAExgF,EAAEk2/B,WAAW,IAAIh2/B,EAAE,EAAEgC,EAAEwb,EAAEzM,OAAO/Q,EAAEgC,EAAEhC,IAAIwd,EAAExd,KAAKm1B,EAAEn1B,GAAGwd,EAAExd,GAAGsgF,EAAEtgF,KAAKm1B,EAAEn1B,EAAE,MAAMsgF,EAAEtgF,GAAGm1B,EAAEikjC,eAAc,IAAK,OAAOz8jC,KAAK+E,YAAYy3jC,aAAahkjC,EAAEgkjC,YAAW,GAAIx8jC,KAAKpQ,QAAQmG,OAAOyiB,EAAEmjjC,SAAQ,GAAI37jC,KAAK67jC,YAAYrjjC,EAAEqjjC,WAAU,GAAI77jC,KAAK47jC,iBAAiBpjjC,EAAEojjC,gBAAe,GAAI57jC,KAAKpQ,QAAQiwf,SAASrne,EAAEqne,QAAO,GAAIt8f,EAAEi1B,EAAE2jjC,gBAAgBn8jC,KAAKpQ,SAAS4oB,EAAEujjC,SAASpyjC,KAAKC,UAAU4O,EAAEujjC,UAAU/7jC,KAAKuR,OAAO+0W,gBAAgB,CAAC75X,MAAM,CAAC0jC,KAAK,EAAEy5M,OAAO,IAAIpxN,EAAExY,KAAKgnkC,cAAcxujC,GAAG3e,EAAEqjkC,SAAS1kjC,EAAEA,EAAEyujC,sBAAsB,CAAClh8B,KAAKlsI,EAAEqtkC,YAAan0kC,IAAIylB,EAAEzlB,KAAKylB,EAAEzlB,IAAI/L,WAAYwxB,EAAEA,EAAExxB,YAAYwxB,CAAC,EAAEw+I,SAAS,WAAWh3J,KAAKmnkC,YAAY,EAAEnnkC,KAAKuR,OAAO,IAAI1Q,EAAW,QAAEb,KAAKpQ,QAAQstkC,SAASl9jC,KAAKq5+B,WAAW,IAAIx4+B,EAAW,QAAEb,KAAKpQ,QAAQstkC,QAAQ,EAAE6J,sBAAsB,SAASntkC,GAAG,IAAIC,EAAEmG,KAAKpa,EAAE,GAAGrC,EAAEyc,KAAKumkC,UAAUv4kC,OAAOgS,KAAKwmkC,UAAU54kC,MAAMrK,EAAE6Q,OAAO,IAAIxO,GAAG,KAAKrC,EAAE2a,KAAK,OAAO,IAAIlZ,EAAE,EAAE2c,EAAE3B,KAAK0ptB,SAAS13tB,QAAQ,SAAS4H,GAAG,IAAIrW,EAAEsW,EAAE6vtB,QAAQ9vtB,GAAGrW,EAAEi0H,UAAUj0H,EAAE6jlC,eAAe,IAAIxhlC,GAAG,aAAaZ,EAAE,IAAI4U,EAAErW,EAAEi0H,SAAS,GAAG,QAAQxyH,EAAE,GAAGgb,KAAKomkC,+BAA+BxglC,GAAG,KAAKoa,KAAK8mkC,wCAAwC,IAAIplkC,EAAE,CAAC,YAAY,SAAS,UAAU,WAAW,SAAS1B,KAAK47jC,gBAAgB57jC,KAAK67jC,YAAYn6jC,EAAE5N,KAAK,eAAekM,KAAK67jC,WAAWn6jC,EAAE5N,KAAK,UAAU,IAAIzQ,EAAE2c,KAAKqnkC,YAAYzhlC,GAAG,OAAOgU,GAAG8H,EAAE5N,KAAKzQ,GAAGooH,SAAS3qG,MAAMd,KAAK0B,IAAI1B,KAAKuR,OAAO+wC,KAAK,CAAC,YAAY5gD,EAAExD,KAAK,KAAK,UAAU7a,EAAE,KAAK,EAAEgklC,YAAY,SAASztkC,GAAG,IAAIC,EAAEmG,KAAK+E,YAAYy7wB,SAAS56xB,GAAGoa,KAAKsnkC,YAAY/jlC,OAAE,EAAOyB,OAAE,EAAO0c,OAAE,EAAOC,OAAE,EAAO,OAAO3B,KAAKuR,OAAOX,KAAK,SAAShX,GAAGA,EAAEqskC,gBAAgBvkkC,EAAE9H,EAAEyqQ,QAAQ,QAAQ3iQ,EAAE9H,EAAE+H,EAAE/H,IAAI8H,IAAI1c,EAAE0c,EAAE2iQ,QAAQ,cAAc9gR,GAAE,EAAGoe,EAAErO,IAAI,KAAKoO,EAAEC,OAAE,GAAQ3c,GAAE,EAAG6U,IAAIjU,GAAE,GAAI,GAAGA,EAAE8b,GAAGA,EAAE2iQ,QAAQ,WAAW1iQ,EAAErO,IAAI,MAAMtO,GAAGgb,KAAKuR,OAAOzd,KAAK,eAAe8F,GAAG,eAAerW,EAAE,GAAGyc,KAAKkmkC,oBAAoBxkkC,GAAGA,EAAE2iQ,QAAQ,oBAAoB1iQ,EAAErO,IAAI,MAAM0M,KAAKuR,OAAOzd,KAAK,mBAAmB8F,GAAGoG,KAAKuR,OAAO8yP,QAAQ,OAAOzqQ,EAAEuvF,UAAU,IAAI5lG,EAAE,GAAG,QAAQyc,KAAKuR,OAAOO,OAAO,EAAEg1jC,qCAAqC,WAAW,MAAM,6PAA6P9okC,MAAM,EAAEupkC,WAAW,SAAS3tkC,GAAG,IAAIC,EAAEmG,KAAKgmkC,UAAU,sCAAsCpglC,EAAE,CAACoa,KAAKwnkC,YAAY,IAAIxnkC,KAAKynkC,gBAAgB7tkC,EAAE,EAAEhU,GAAG,IAAIrC,EAAEyc,KAAK0qiC,WAAW9kjC,EAAEmnC,OAAO,EAAE,EAAExpC,GAAGyc,KAAKlM,KAAKkM,KAAKuR,OAAOm2jC,aAAa7tkC,EAAE,OAAOjU,GAAG,EAAE+hlC,oBAAoB,WAAW,IAAI/tkC,EAAEoG,KAAKgmkC,UAAU,sCAAsCnskC,EAAE,CAACmG,KAAKwnkC,YAAY,IAAIxnkC,KAAKynkC,gBAAgB,GAAG,EAAE5tkC,GAAE,GAAImG,KAAK4nkC,cAAc,IAAIhilC,EAAEoa,KAAK6nkC,WAAWhukC,EAAEkzB,OAAO,EAAE,EAAEnnC,GAAGoa,KAAK6mkC,WAAW,CAAC,QAAQ7mkC,KAAK8nkC,WAAW,OAAOlilC,EAAE,MAAMoa,KAAKuR,OAAOm2jC,aAAa9tkC,EAAE,OAAOC,GAAG,KAAK,EAAEkukC,cAAc,SAASnukC,GAAGoG,KAAKgokC,eAAepukC,EAAEoG,KAAKgokC,eAAepukC,EAAEoG,KAAK4tQ,gBAAgB5tQ,KAAKuR,OAAO+0W,gBAAgBtmX,KAAKgokC,eAAepukC,CAAC,EAAE22H,OAAO,WAAW,GAAGvwH,KAAKiokC,WAAWjokC,KAAKkokC,aAAa,SAAStukC,GAAG,MAAM,CAAC,cAAcA,EAAE,QAAQ,GAAGoG,KAAK6mkC,WAAW7mkC,KAAKimkC,eAAejmkC,KAAK0qiC,iBAAiB,CAAC,IAAI9wiC,EAAEoG,KAAK0qiC,WAAW1qiC,KAAK6mkC,WAAW,CAAC,OAAOjtkC,EAAE,eAAeoG,KAAKimkC,eAAerskC,OAAE,GAAO,GAAI,OAAOoG,KAAK+E,YAAYy7wB,UAAUxgxB,KAAK6mkC,WAAW,CAAC,UAAU7mkC,KAAKimkC,eAAe,UAAK,GAAO,GAAI,MAAM,CAAC,EAAEkC,cAAc,WAAWnokC,KAAK6mkC,WAAW7mkC,KAAKimkC,eAAe,CAACjmkC,KAAKgmkC,UAAU,8BAA8B,IAAIhmkC,KAAK0qiC,WAAW,MAAM,EAAEp9gC,WAAW,SAAS1zB,GAAGoG,KAAKmnkC,YAAYvtkC,CAAC,EAAEwukC,YAAY,WAAWpokC,KAAKqokC,iBAAiBrokC,KAAKwnkC,YAAYxnkC,KAAKmnkC,aAAa,EAAEmB,gBAAgB,SAAS1ukC,EAAEC,EAAEjU,EAAErC,GAAG,IAAIyB,EAAE,EAAEzB,IAAIyc,KAAKpQ,QAAQiwf,QAAQ7/e,KAAKmnkC,YAAYnnkC,KAAKookC,cAAcpokC,KAAKlM,KAAKkM,KAAK+lkC,cAAcnskC,EAAE5U,OAAOgb,KAAK0kG,YAAY,UAAU9qG,EAAE5U,EAAE6U,EAAEjU,EAAE,EAAE2ilC,iBAAiB,SAAS3ukC,EAAEC,GAAGmG,KAAK47jC,gBAAe,EAAG57jC,KAAKlM,KAAK,CAAC,eAAe8F,EAAE,GAAG,KAAKA,EAAE,GAAG,MAAMoG,KAAK0kG,YAAY,UAAU7qG,EAAE,EAAE,EAAE2ukC,WAAW,SAAS5ukC,EAAEC,EAAEjU,GAAGgU,EAAEoG,KAAKqokC,iBAAiB,wBAAwBzukC,EAAE,KAAKoG,KAAKqokC,iBAAiB,QAAQrokC,KAAK0kG,YAAY,OAAO7qG,EAAE,GAAE,EAAGjU,EAAE,EAAE8+G,YAAY,SAAS9qG,EAAEC,EAAEjU,EAAErC,EAAEyB,GAAG,IAAI2c,EAAE3B,KAAK,GAAGA,KAAKpQ,QAAQqzG,QAAQjjG,KAAKpQ,QAAQ64kC,cAA0BzokC,KAAKlM,KADywxB,SAAW8F,EAAEC,EAAEjU,EAAErC,GAAG,IAAIyB,EAAE6U,EAAE6wiC,WAAWhpiC,EAAE,EAAEC,EAAE/b,EAAEwO,OAAO,IAAIwF,GAAG+H,IAAID,EAAEC,EAAED,IAAI1c,EAAE6U,EAAEgskC,WAAW7glC,EAAEY,EAAE8b,GAAGne,GAAG,OAAOqW,EAAE,CAACC,EAAEmskC,UAAU,oBAAoB,IAAIhhlC,EAAE,KAAK6U,EAAEsskC,aAAavglC,EAAE8b,IAAI,KAAKiI,KAAKC,UAAU/P,EAAE0X,OAAO+0W,iBAAiB,MAAMthY,CAAC,CACr+xB0c,CAAE1B,KAAKpQ,QAAQqzG,QAAQj+G,EAAEgb,KAAKnG,EAAED,SAAI,IAAI,IAAIvW,EAAEwW,EAAEzF,OAAOxO,EAAEvC,EAAEuC,IAAIoa,KAAKkokC,aAAa,SAASljlC,GAAG,IAAI0c,EAAEC,EAAEkkkC,WAAW7glC,EAAE6U,EAAEjU,GAAGgU,GAAG,OAAOrW,EAAE,CAAC,OAAOme,GAAG,CAAC,cAAcA,EAAE,MAAM1c,EAAE,EAAE,EAAE0jlC,sBAAsB,WAAW1okC,KAAKlM,KAAK,CAACkM,KAAKgmkC,UAAU,oBAAoB,IAAIhmkC,KAAK0qiC,WAAW,KAAK1qiC,KAAKwnkC,YAAY,GAAG,KAAK,EAAEmB,gBAAgB,SAAS/ukC,EAAEC,GAAGmG,KAAKookC,cAAcpokC,KAAK4okC,WAAW/ukC,GAAG,kBAAkBA,IAAI,iBAAiBD,EAAEoG,KAAK4okC,WAAWhvkC,GAAGoG,KAAKqokC,iBAAiBzukC,GAAG,EAAEivkC,UAAU,SAASjvkC,GAAGoG,KAAK09T,UAAU19T,KAAKlM,KAAK,MAAMkM,KAAKykkC,eAAezkkC,KAAKlM,KAAK,MAAMkM,KAAKlM,KAAK,OAAOkM,KAAKqokC,iBAAiBzukC,EAAE,YAAY,KAAK,EAAEkvkC,SAAS,WAAW9okC,KAAK1T,MAAM0T,KAAKymkC,OAAO3ykC,KAAKkM,KAAK1T,MAAM0T,KAAK1T,KAAK,CAACs8B,OAAO,CAAC,EAAEg7O,MAAM,GAAG4yQ,SAAS,GAAG34gB,IAAI,GAAG,EAAEkrkC,QAAQ,WAAW,IAAInvkC,EAAEoG,KAAK1T,KAAK0T,KAAK1T,KAAK0T,KAAKymkC,OAAOpkkC,MAAMrC,KAAK09T,UAAU19T,KAAKlM,KAAKkM,KAAKgnkC,cAAcptkC,EAAEiE,MAAMmC,KAAKykkC,eAAezkkC,KAAKlM,KAAKkM,KAAKgnkC,cAAcptkC,EAAE48gB,WAAWx2gB,KAAKlM,KAAKkM,KAAKgnkC,cAAcptkC,EAAEgqQ,SAAS5jQ,KAAKlM,KAAKkM,KAAKgnkC,cAAcptkC,EAAEgvB,QAAQ,EAAEggjC,WAAW,SAAShvkC,GAAGoG,KAAKqokC,iBAAiBrokC,KAAKmmkC,aAAavskC,GAAG,EAAEovkC,YAAY,SAASpvkC,GAAGoG,KAAKqokC,iBAAiBzukC,EAAE,EAAEqvkC,YAAY,SAASrvkC,GAAG,MAAMA,EAAEoG,KAAKqokC,iBAAiBrokC,KAAKkpkC,kBAAkBtvkC,IAAIoG,KAAKqokC,iBAAiB,KAAK,EAAE3O,kBAAkB,SAAS9/jC,EAAEC,GAAG,IAAIjU,EAAEoa,KAAK6lkC,WAAW,aAAahskC,EAAE,aAAatW,EAAEyc,KAAKynkC,gBAAgB5tkC,EAAED,GAAGoG,KAAKq5+B,WAAWvl/B,KAAK,CAAC,QAAQkM,KAAKq5+B,WAAWquF,aAAa9hlC,EAAE,GAAG,CAAC,KAAK,QAAQ,YAAYrC,IAAI,WAAW,EAAE4llC,aAAa,SAASvvkC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAEyc,KAAK0qiC,WAAW1ljC,EAAEgb,KAAKopkC,YAAYxvkC,EAAEC,GAAG6H,EAAE,GAAG9b,GAAG8b,EAAE5N,KAAK9O,EAAEuO,MAAMmO,EAAE5N,KAAKvQ,GAAGyc,KAAKpQ,QAAQqzG,QAAQvhG,EAAE5N,KAAKkM,KAAKgmkC,UAAU,kCAAkC,IAAIrkkC,EAAE,CAAC,IAAI3B,KAAKqpkC,iBAAiB3nkC,EAAE,MAAM,KAAKre,EAAE2c,KAAKuR,OAAOm2jC,aAAa/lkC,EAAE,OAAO3c,EAAEsklC,YAAYtpkC,KAAKlM,KAAKzQ,EAAE,EAAEgmlC,iBAAiB,SAASzvkC,EAAEC,GAAG,IAAIjU,EAAE,GAAGA,EAAEkO,KAAK8F,EAAE,IAAI,IAAI,IAAIrW,EAAE,EAAEA,EAAEqW,EAAExF,OAAO7Q,IAAIqC,EAAEkO,KAAK+F,EAAED,EAAErW,IAAI,OAAOqC,CAAC,EAAE2jlC,kBAAkB,SAAS3vkC,EAAEC,GAAG,IAAIjU,EAAEoa,KAAKopkC,YAAYxvkC,EAAEC,GAAGmG,KAAKlM,KAAKkM,KAAKuR,OAAOm2jC,aAAa9hlC,EAAE2N,KAAK,OAAO3N,EAAE0jlC,YAAY,EAAEE,gBAAgB,SAAS5vkC,EAAEC,GAAGmG,KAAKypkC,YAAY,UAAU,IAAI7jlC,EAAEoa,KAAK0qiC,WAAW1qiC,KAAK6okC,YAAY,IAAItllC,EAAEyc,KAAKopkC,YAAY,EAAExvkC,EAAEC,GAA2D6H,EAAE,CAAC,IAAI,aAA7D1B,KAAK8nkC,WAAW9nkC,KAAK6lkC,WAAW,UAAUjskC,EAAE,UAAgC,OAAOhU,EAAE,KAAKoa,KAAKpQ,QAAQqzG,SAASvhG,EAAE,GAAG,aAAaA,EAAE5N,KAAK,uBAAuBkM,KAAKgmkC,UAAU,mCAAmChmkC,KAAKlM,KAAK,CAAC,IAAI4N,EAAEne,EAAEmmlC,WAAW,CAAC,MAAMnmlC,EAAEmmlC,YAAY,GAAG,KAAK,sBAAsB1pkC,KAAKgmkC,UAAU,cAAc,MAAMhmkC,KAAKuR,OAAOm2jC,aAAa,SAAS,OAAOnklC,EAAE+llC,YAAY,eAAe,EAAErN,cAAc,SAASrikC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAE,GAAGyB,EAAEgb,KAAK2pkC,YAAY9vkC,EAAE,EAAEtW,GAAGqW,IAAIC,EAAEmG,KAAK0qiC,kBAAkB1ljC,EAAEuO,MAAM3N,IAAIZ,EAAEwgL,OAAO77J,KAAKC,UAAUhkB,IAAIZ,EAAE4oI,QAAQ,UAAU5oI,EAAEg0kC,SAAS,WAAWh0kC,EAAEq0/B,WAAW,uBAAuBz/+B,EAAErW,EAAE4zF,QAAQt9E,GAAGtW,EAAE4zF,QAAQn3E,KAAK6lkC,WAAW,WAAWhskC,EAAE,YAAYmG,KAAKpQ,QAAQiwf,SAAS76f,EAAEgwkB,OAAO,UAAUhwkB,EAAEgb,KAAKgnkC,cAAchilC,GAAGzB,EAAEuQ,KAAK9O,GAAGgb,KAAKlM,KAAKkM,KAAKuR,OAAOm2jC,aAAa,0BAA0B,GAAGnklC,GAAG,EAAEqmlC,aAAa,SAAShwkC,GAAG,IAAIC,EAAEmG,KAAK0qiC,WAAW9kjC,OAAE,EAAOrC,OAAE,EAAOyB,OAAE,EAAOgb,KAAK09T,WAAW14U,EAAEgb,KAAK0qiC,YAAY1qiC,KAAKykkC,eAAelhlC,EAAEyc,KAAK0qiC,WAAW9kjC,EAAEoa,KAAK0qiC,YAAY,IAAIhpiC,EAAE1B,KAAK1T,KAAK1G,IAAI8b,EAAE80gB,SAAS58gB,GAAGhU,GAAGrC,IAAIme,EAAEkiQ,MAAMhqQ,GAAGrW,GAAGyB,IAAI0c,EAAE7D,IAAIjE,GAAG5U,GAAG0c,EAAEknB,OAAOhvB,GAAGC,CAAC,EAAEgwkC,OAAO,SAASjwkC,EAAEC,EAAEjU,GAAG,eAAegU,EAAEoG,KAAKqokC,iBAAiB,eAAexukC,EAAE,GAAG,UAAUA,EAAE,GAAG,KAAKjU,EAAE,MAAM+jB,KAAKC,UAAU,IAAIhkB,GAAG,KAAK,mBAAmBgU,EAAEoG,KAAK4okC,WAAW/ukC,GAAG,kBAAkBD,EAAEoG,KAAKqokC,iBAAiB,QAAQrokC,KAAKqokC,iBAAiB,OAAO,EAAEtM,SAAS/2kC,EAAE4hlC,gBAAgB,SAAShtkC,EAAEC,GAAG,IAAI,IAAIjU,EAAEgU,EAAE49G,SAASj0H,OAAE,EAAOyB,OAAE,EAAO0c,EAAE,EAAEC,EAAE/b,EAAEwO,OAAOsN,EAAEC,EAAED,IAAI,CAACne,EAAEqC,EAAE8b,GAAG1c,EAAE,IAAIgb,KAAK+7jC,SAAS,IAAI14kC,EAAE2c,KAAK8pkC,qBAAqBvmlC,GAAG,GAAG,MAAMF,EAAE,CAAC2c,KAAKmpB,QAAQiziC,SAAStokC,KAAK,IAAI,IAAIzO,EAAE2a,KAAKmpB,QAAQiziC,SAAShokC,OAAO7Q,EAAEiT,MAAMnR,EAAE9B,EAAEgQ,KAAK,UAAUlO,EAAE2a,KAAKmpB,QAAQiziC,SAAS/2kC,GAAGL,EAAEw+G,QAAQjgH,EAAEsW,EAAEmG,KAAKmpB,SAASnpB,KAAKs4jC,YAAYt4jC,KAAKmpB,QAAQkw9B,WAAWh0/B,GAAGL,EAAEq0/B,WAAWr5+B,KAAKmpB,QAAQstsB,aAAapxuB,GAAG9B,EAAEyc,KAAK67jC,UAAU77jC,KAAK67jC,WAAW72kC,EAAE62kC,UAAU77jC,KAAK47jC,eAAe57jC,KAAK47jC,gBAAgB52kC,EAAE42kC,eAAer4kC,EAAEs4kC,UAAU77jC,KAAK67jC,UAAUt4kC,EAAEq4kC,eAAe57jC,KAAK47jC,cAAc,MAAMr4kC,EAAEiT,MAAMnT,EAAEmT,MAAMjT,EAAEgQ,KAAK,UAAUlQ,EAAEmT,MAAMwJ,KAAK67jC,UAAU77jC,KAAK67jC,WAAWx4kC,EAAEw4kC,UAAU77jC,KAAK47jC,eAAe57jC,KAAK47jC,gBAAgBv4kC,EAAEu4kC,cAAc,CAAC,EAAEkO,qBAAqB,SAASlwkC,GAAG,IAAI,IAAIC,EAAE,EAAEjU,EAAEoa,KAAKmpB,QAAQstsB,aAAariuB,OAAOyF,EAAEjU,EAAEiU,IAAI,CAAC,IAAItW,EAAEyc,KAAKmpB,QAAQstsB,aAAa58tB,GAAG,GAAGtW,GAAGA,EAAEwkO,OAAOnuN,GAAG,OAAOrW,CAAC,CAAC,EAAE2llC,kBAAkB,SAAStvkC,GAAG,IAAIC,EAAEmG,KAAK+E,YAAYyyG,SAAS59G,GAAGhU,EAAE,CAACiU,EAAErD,MAAM,OAAOqD,EAAEmgkC,aAAa,OAAOh6jC,KAAK47jC,gBAAgB57jC,KAAK67jC,YAAYj2kC,EAAEkO,KAAK,eAAekM,KAAK67jC,WAAWj2kC,EAAEkO,KAAK,UAAU,qBAAqBlO,EAAEsY,KAAK,MAAM,GAAG,EAAEurkC,YAAY,SAAS7vkC,GAAGoG,KAAKwmkC,UAAU5skC,KAAKoG,KAAKwmkC,UAAU5skC,IAAG,EAAGoG,KAAKwmkC,UAAU54kC,KAAKkG,KAAK8F,GAAG,EAAE9F,KAAK,SAAS8F,GAAG,OAAOA,aAAarW,IAAIqW,EAAEoG,KAAKuR,OAAO+wC,KAAK1oD,IAAIoG,KAAK2mkC,YAAY7ykC,KAAK8F,GAAGA,CAAC,EAAEyukC,iBAAiB,SAASzukC,GAAGoG,KAAKlM,KAAK,IAAIvQ,EAAEqW,GAAG,EAAEitkC,WAAW,SAASjtkC,GAAGoG,KAAKgokC,iBAAiBhokC,KAAKuR,OAAOzd,KAAKkM,KAAKimkC,eAAejmkC,KAAKuR,OAAO40jC,aAAanmkC,KAAKgokC,gBAAgBhokC,KAAK4tQ,kBAAkB5tQ,KAAKgokC,oBAAe,GAAQpukC,GAAGoG,KAAKuR,OAAOzd,KAAK8F,EAAE,EAAEsukC,aAAa,SAAStukC,GAAG,IAAIC,EAAE,CAAC,KAAKjU,OAAE,EAAOZ,OAAE,EAAO0c,OAAE,EAAO,IAAI1B,KAAKiokC,WAAW,MAAM,IAAIx2jC,EAAW,QAAE,8BAA8B,IAAI9P,EAAE3B,KAAK0qiC,UAAS,GAAI,GAAG/oiC,aAAape,EAAcsW,EAAE,CAAC,IAAfjU,EAAE,CAAC+b,EAAEhc,QAAiB+b,GAAE,MAAO,CAAC1c,GAAE,EAAG,IAAI3B,EAAE2c,KAAK+pkC,YAAYlwkC,EAAE,CAAC,KAAKmG,KAAKlM,KAAKzQ,GAAG,MAAMse,EAAE,KAAK/b,EAAEoa,KAAK6nkC,UAAU,CAAC,IAAIxilC,EAAEuU,EAAEyG,KAAKL,KAAKpa,GAAG8b,GAAG1B,KAAK0qiC,WAAW1ljC,GAAGgb,KAAKsmkC,YAAYtmkC,KAAKlM,KAAK+F,EAAE7L,OAAO3I,EAAE,KAAK,EAAE0klC,UAAU,WAAW,OAAO/pkC,KAAKsmkC,YAAYtmkC,KAAKsmkC,UAAUtmkC,KAAKumkC,UAAUnykC,QAAQ4L,KAAKumkC,UAAUzykC,KAAK,QAAQkM,KAAKsmkC,WAAWtmkC,KAAKgqkC,cAAc,EAAEA,aAAa,WAAW,MAAM,QAAQhqkC,KAAKsmkC,SAAS,EAAEsB,YAAY,WAAW,IAAIhukC,EAAEoG,KAAK2mkC,YAAY3mkC,KAAK2mkC,YAAY,GAAG,IAAI,IAAI9skC,EAAE,EAAEjU,EAAEgU,EAAExF,OAAOyF,EAAEjU,EAAEiU,IAAI,CAAC,IAAI7U,EAAE4U,EAAEC,GAAG,GAAG7U,aAAazB,EAAEyc,KAAK0mkC,aAAa5ykC,KAAK9O,OAAO,CAAC,IAAI0c,EAAE1B,KAAK+pkC,YAAY/pkC,KAAK6mkC,WAAW,CAACnlkC,EAAE,MAAM1c,EAAE,MAAMgb,KAAK0mkC,aAAa5ykC,KAAK4N,EAAE,CAAC,CAAC,EAAEumkC,SAAS,WAAW,OAAOjokC,KAAK2mkC,YAAYvykC,MAAM,EAAEs2iC,SAAS,SAAS9wiC,GAAG,IAAIC,EAAEmG,KAAKiokC,WAAWrilC,GAAGiU,EAAEmG,KAAK2mkC,YAAY3mkC,KAAK0mkC,cAAcrkkC,MAAM,IAAIzI,GAAGhU,aAAarC,EAAE,OAAOqC,EAAED,MAAM,IAAIkU,EAAE,CAAC,IAAImG,KAAKsmkC,UAAU,MAAM,IAAI70jC,EAAW,QAAE,qBAAqBzR,KAAKsmkC,WAAW,CAAC,OAAO1glC,CAAC,EAAEiilC,SAAS,WAAW,IAAIjukC,EAAEoG,KAAKiokC,WAAWjokC,KAAK2mkC,YAAY3mkC,KAAK0mkC,aAAa7skC,EAAED,EAAEA,EAAExF,OAAO,GAAG,OAAOyF,aAAatW,EAAEsW,EAAElU,MAAMkU,CAAC,EAAE2tkC,YAAY,SAAS5tkC,GAAG,OAAOoG,KAAK67jC,WAAWjikC,EAAE,UAAUA,EAAE,IAAI,QAAQA,CAAC,EAAEuskC,aAAa,SAASvskC,GAAG,OAAOoG,KAAKuR,OAAO40jC,aAAavskC,EAAE,EAAEotkC,cAAc,SAASptkC,GAAG,OAAOoG,KAAKuR,OAAOy1jC,cAAcptkC,EAAE,EAAEoskC,UAAU,SAASpskC,GAAG,IAAIC,EAAEmG,KAAK0ptB,QAAQ9vtB,GAAG,OAAOC,GAAGA,EAAEutkC,iBAAiBvtkC,KAAIA,EAAEmG,KAAK0ptB,QAAQ9vtB,GAAGoG,KAAKuR,OAAO+wC,KAAK1oD,IAAKoskC,WAAU,EAAGnskC,EAAEutkC,eAAe,EAAEvtkC,EAAE,EAAEuvkC,YAAY,SAASxvkC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAE,GAAsL,MAAM,CAAC48D,OAAO58D,EAAEmmlC,WAAjM1pkC,KAAKynkC,gBAAgB5tkC,EAAED,EAAErW,EAAEqC,GAAmL2N,KAA9KyM,KAAK6lkC,WAAW,UAAUhskC,EAAE,UAAyJyvkC,WAAW,CAAxJtpkC,KAAKgmkC,UAAUhmkC,KAAKwnkC,YAAY,GAAG,cAAcxnkC,KAAKwnkC,YAAY,GAAG,qCAAuFx5kC,OAAOzK,GAAG,EAAEomlC,YAAY,SAAS/vkC,EAAEC,EAAEjU,GAAG,IAAIrC,EAAE,CAAC,EAAEyB,EAAE,GAAG0c,EAAE,GAAGC,EAAE,GAAGte,GAAGuC,EAAEP,OAAE,EAAOhC,IAAIuC,EAAE,IAAIrC,EAAEgQ,KAAKyM,KAAKmmkC,aAAavskC,GAAGrW,EAAE+I,KAAK0T,KAAK0qiC,WAAW1qiC,KAAK09T,WAAWn6U,EAAE0mlC,QAAQjqkC,KAAK0qiC,YAAY1qiC,KAAKykkC,eAAelhlC,EAAE2mlC,UAAUlqkC,KAAK0qiC,WAAWnnjC,EAAE4mlC,aAAanqkC,KAAK0qiC,YAAY,IAAI1khC,EAAEhmB,KAAK0qiC,WAAWj5hC,EAAEzR,KAAK0qiC,YAAYj5hC,GAAGuU,KAAKziC,EAAEuR,GAAG2c,GAAG,iBAAiBluB,EAAE+6e,QAAQt4c,GAAG,kBAAkB,IAAI,IAAIxN,EAAE3e,EAAE2e,KAAKnzB,EAAE2a,KAAK0qiC,WAAW9kjC,EAAE4yB,GAAGnzB,EAAE2a,KAAK09T,WAAW/7T,EAAE6W,GAAGxY,KAAK0qiC,YAAY1qiC,KAAKykkC,eAAe/ikC,EAAE8W,GAAGxY,KAAK0qiC,WAAW1ljC,EAAEwzB,GAAGxY,KAAK0qiC,YAAY,OAAOrnjC,IAAIE,EAAE8Q,KAAK2L,KAAKuR,OAAO64jC,cAAcxklC,IAAIoa,KAAK09T,WAAWn6U,EAAEsa,IAAImC,KAAKuR,OAAO64jC,cAAczokC,IAAI3B,KAAKykkC,eAAelhlC,EAAEqgR,MAAM5jQ,KAAKuR,OAAO64jC,cAAc1okC,GAAGne,EAAEizhB,SAASx2gB,KAAKuR,OAAO64jC,cAAcpllC,IAAIgb,KAAKpQ,QAAQmG,OAAOxS,EAAEwS,KAAK,QAAQiK,KAAK47jC,iBAAiBr4kC,EAAEy2kC,YAAY,eAAez2kC,CAAC,EAAEkklC,gBAAgB,SAAS7tkC,EAAEC,EAAEjU,EAAErC,GAAG,IAAIyB,EAAEgb,KAAK2pkC,YAAY/vkC,EAAEC,EAAEjU,GAAG,OAAOZ,EAAEq3J,IAAI1yI,KAAKC,UAAU5J,KAAKuR,OAAO+0W,iBAAiBthY,EAAEgb,KAAKgnkC,cAAchilC,GAAGzB,GAAGyc,KAAKypkC,YAAY,WAAW7jlC,EAAEkO,KAAK,WAAW,CAAC,WAAW9O,IAAIY,GAAGA,EAAEkO,KAAK9O,GAAG,IAAIA,CAAC,GAAG,WAAW,IAAI,IAAI4U,EAAE,wZAAwZ1Y,MAAM,KAAK2Y,EAAE7U,EAAEqllC,eAAe,CAAC,EAAEzklC,EAAE,EAAErC,EAAEqW,EAAExF,OAAOxO,EAAErC,EAAEqC,IAAIiU,EAAED,EAAEhU,KAAI,CAAE,CAA/e,GAAmfZ,EAAEsllC,8BAA8B,SAAS1wkC,GAAG,OAAO5U,EAAEqllC,eAAezwkC,IAAI,6BAA6B1X,KAAK0X,EAAE,EAAEC,EAAW,QAAE7U,EAAE4U,EAAEnV,QAAQoV,EAAW,OAAC,EAAE,SAASD,EAAEC,EAAEjU,GAAG,aAAa,SAASrC,EAAEqW,EAAEC,EAAEjU,GAAG,GAAG+b,EAAEoO,QAAQnW,GAAG,CAAC,IAAI,IAAIrW,EAAE,GAAGyB,EAAE,EAAE0c,EAAE9H,EAAExF,OAAOpP,EAAE0c,EAAE1c,IAAIzB,EAAEuQ,KAAK+F,EAAEyoD,KAAK1oD,EAAE5U,GAAGY,IAAI,OAAOrC,CAAC,CAAC,MAAM,kBAAkBqW,GAAG,iBAAiBA,EAAEA,EAAE,GAAGA,CAAC,CAAC,SAAS5U,EAAE4U,GAAGoG,KAAKuqkC,QAAQ3wkC,EAAEoG,KAAKuR,OAAO,EAAE,CAAC,IAAI7P,EAAE9b,EAAE,IAAa,QAAEiU,EAAE0oF,YAAW,EAAG,IAAI5gF,EAAE/b,EAAE,GAAGvC,OAAE,EAAsBA,IAAIA,EAAE,SAASuW,EAAEC,EAAEjU,EAAErC,GAAGyc,KAAKqnG,IAAI,GAAG9jH,GAAGyc,KAAK1M,IAAI/P,EAAE,EAAEF,EAAE+c,UAAU,CAAC9M,IAAI,SAASsG,GAAG+H,EAAEoO,QAAQnW,KAAKA,EAAEA,EAAEsE,KAAK,KAAK8B,KAAKqnG,KAAKztG,CAAC,EAAEyqQ,QAAQ,SAASzqQ,GAAG+H,EAAEoO,QAAQnW,KAAKA,EAAEA,EAAEsE,KAAK,KAAK8B,KAAKqnG,IAAIztG,EAAEoG,KAAKqnG,GAAG,EAAE4/9B,sBAAsB,WAAW,MAAM,CAACz4+B,KAAKxuF,KAAKhZ,WAAW,EAAEA,SAAS,WAAW,OAAOgZ,KAAKqnG,GAAG,IAAIriH,EAAEob,UAAU,CAACo9M,QAAQ,WAAW,OAAOx9M,KAAKuR,OAAOnd,MAAM,EAAEiwQ,QAAQ,SAASzqQ,EAAEC,GAAGmG,KAAKuR,OAAO4lE,QAAQn3E,KAAKsiD,KAAK1oD,EAAEC,GAAG,EAAE/F,KAAK,SAAS8F,EAAEC,GAAGmG,KAAKuR,OAAOzd,KAAKkM,KAAKsiD,KAAK1oD,EAAEC,GAAG,EAAEiY,MAAM,WAAW,IAAIlY,EAAEoG,KAAK65P,QAAQ,OAAO75P,KAAK4Q,KAAK,SAAS/W,GAAGD,EAAEtG,IAAI,CAAC,KAAKuG,EAAE,MAAM,GAAGD,CAAC,EAAEgX,KAAK,SAAShX,GAAG,IAAI,IAAIC,EAAE,EAAEjU,EAAEoa,KAAKuR,OAAOnd,OAAOyF,EAAEjU,EAAEiU,IAAID,EAAEoG,KAAKuR,OAAO1X,GAAG,EAAEggQ,MAAM,WAAW,IAAIjgQ,EAAEoG,KAAKsmX,iBAAiB,CAAC75X,MAAM,CAAC,GAAG,OAAO,IAAIpJ,EAAEuW,EAAEnN,MAAM0jC,KAAKv2B,EAAEnN,MAAMm9O,OAAO5pO,KAAKuqkC,QAAQ,EAAEjohC,KAAK,SAAS1oD,GAAG,IAAIC,EAAE1F,UAAUC,QAAQ,QAAG,IAASD,UAAU,GAAG6L,KAAKsmX,iBAAiB,CAAC75X,MAAM,CAAC,GAAG0H,UAAU,GAAG,OAAOyF,aAAavW,EAAEuW,GAAGA,EAAErW,EAAEqW,EAAEoG,KAAKnG,GAAG,IAAIxW,EAAEwW,EAAEpN,MAAM0jC,KAAKt2B,EAAEpN,MAAMm9O,OAAO5pO,KAAKuqkC,QAAQ3wkC,GAAG,EAAE8tkC,aAAa,SAAS9tkC,EAAEC,EAAEjU,GAAG,OAAOA,EAAEoa,KAAKwqkC,aAAa5klC,GAAGoa,KAAKsiD,KAAK,CAAC1oD,EAAEC,EAAE,IAAIA,EAAE,IAAI,IAAIjU,EAAE,KAAK,EAAEuglC,aAAa,SAASvskC,GAAG,MAAM,KAAKA,EAAE,IAAI7V,QAAQ,MAAM,QAAQA,QAAQ,KAAK,OAAOA,QAAQ,MAAM,OAAOA,QAAQ,MAAM,OAAOA,QAAQ,UAAU,WAAWA,QAAQ,UAAU,WAAW,GAAG,EAAEijlC,cAAc,SAASptkC,GAAG,IAAIC,EAAEmG,KAAKpa,EAAE,GAAG8b,EAAE9H,GAAG5H,QAAQ,SAAShN,GAAG,IAAI0c,EAAEne,EAAEqW,EAAE5U,GAAG6U,GAAG,cAAc6H,GAAG9b,EAAEkO,KAAK,CAAC+F,EAAEsskC,aAAanhlC,GAAG,IAAI0c,GAAG,GAAG,IAAI1c,EAAEgb,KAAKwqkC,aAAa5klC,GAAG,OAAOZ,EAAEq/Q,QAAQ,KAAKr/Q,EAAEsO,IAAI,KAAKtO,CAAC,EAAEwllC,aAAa,SAAS5wkC,GAAG,IAAI,IAAIC,EAAEmG,KAAK65P,QAAQj0Q,EAAE,EAAEZ,EAAE4U,EAAExF,OAAOxO,EAAEZ,EAAEY,IAAIA,GAAGiU,EAAEvG,IAAI,KAAKuG,EAAEvG,IAAI/P,EAAEqW,EAAEhU,GAAGoa,OAAO,OAAOnG,CAAC,EAAEuwkC,cAAc,SAASxwkC,GAAG,IAAIC,EAAEmG,KAAKwqkC,aAAa5wkC,GAAG,OAAOC,EAAEwqQ,QAAQ,KAAKxqQ,EAAEvG,IAAI,KAAKuG,CAAC,GAAGA,EAAW,QAAE7U,EAAE4U,EAAEnV,QAAQoV,EAAW,OAAC,G,yBClB5td,SAAWhZ,GAAU,aAIzB,IAAIwhoB,EACI,6DAA6DnhoB,MAAM,KACvEohoB,EACI,kDAAkDphoB,MAAM,KAC5DuzU,EAAc,CACV,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAEC7zU,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FC,MAC9F,KAEJC,YAAa,SAAUgC,EAAGq7C,GACtB,OAAKr7C,EAEM,QAAQjB,KAAKs8C,GACb8jlB,EAAuBn/nB,EAAEo6F,SAEzB8kiB,EAAoBl/nB,EAAEo6F,SAJtB8kiB,CAMf,EAEA3tT,YAAaA,EACbK,iBAAkBL,EAClBM,kBACI,4FACJC,uBACI,mFAEJR,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAElBrzU,SACI,6DAA6DF,MAAM,KACvEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,oBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,WACJo2B,EAAG,WACHi/H,GAAI,WACJp1J,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERM,uBAAwB,kBACxBC,QAAS,SAAU8+C,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA3GyCC,CAAQ,EAAQ,O,+BCN1D,IAAI07H,EAAQ,EAAQ,OAChB+lI,EAAa,EAAQ,OAErBryI,EAAc,kBAEdkM,EAAW,SAAU0rF,EAASk/3B,GAChC,IAAI9klC,EAAQoQ,EAAK4pC,EAAU4rK,IAC3B,OAAO5lN,IAAU+klC,GACb/klC,IAAUgllC,IACV3k1B,EAAWyk1B,GAAaxq9B,EAAMwq9B,KAC5BA,EACR,EAEI9qiC,EAAYkgF,EAASlgF,UAAY,SAAU77C,GAC7C,OAAOyc,OAAOzc,GAAQC,QAAQ4vH,EAAa,KAAKvrH,aAClD,EAEI2N,EAAO8pH,EAAS9pH,KAAO,CAAC,EACxB40kC,EAAS9q9B,EAAS8q9B,OAAS,IAC3BD,EAAW7q9B,EAAS6q9B,SAAW,IAEnChp/B,EAAOj9F,QAAUo7H,C,kBCrBjB,IAAIl7H,EAAS,EAAQ,OACjBkyI,EAASlyI,EAAOkyI,OAGpB,SAAS+z8B,EAAWvj+B,EAAK0pC,GACvB,IAAK,IAAIvmJ,KAAO68G,EACd0pC,EAAIvmJ,GAAO68G,EAAI78G,EAEnB,CASA,SAASqglC,EAAYlzgC,EAAKq1rB,EAAkB54vB,GAC1C,OAAOyiI,EAAOl/D,EAAKq1rB,EAAkB54vB,EACvC,CAVIyiI,EAAOhyG,MAAQgyG,EAAOmE,OAASnE,EAAOqE,aAAerE,EAAOm5nB,gBAC9DtuqB,EAAOj9F,QAAUE,GAGjBimlC,EAAUjmlC,EAAQF,GAClBA,EAAQoyI,OAASg08B,GAQnBD,EAAU/z8B,EAAQg08B,GAElBA,EAAWhmjC,KAAO,SAAU8yC,EAAKq1rB,EAAkB54vB,GACjD,GAAmB,iBAARujE,EACT,MAAM,IAAIr3D,UAAU,iCAEtB,OAAOu2H,EAAOl/D,EAAKq1rB,EAAkB54vB,EACvC,EAEAy2kC,EAAW7v8B,MAAQ,SAAUjoH,EAAM0b,EAAMi8H,GACvC,GAAoB,iBAAT33I,EACT,MAAM,IAAIzS,UAAU,6BAEtB,IAAIu6H,EAAMhE,EAAO9jH,GAUjB,YATajc,IAAT23B,EACsB,iBAAbi8H,EACT7vB,EAAIpsG,KAAKA,EAAMi8H,GAEf7vB,EAAIpsG,KAAKA,GAGXosG,EAAIpsG,KAAK,GAEJosG,CACT,EAEAgw8B,EAAW3v8B,YAAc,SAAUnoH,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAIzS,UAAU,6BAEtB,OAAOu2H,EAAO9jH,EAChB,EAEA83jC,EAAW76U,gBAAkB,SAAUj9uB,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAIzS,UAAU,6BAEtB,OAAO3b,EAAO+qwB,WAAW38uB,EAC3B,C,+DC5DA,SAAS8mG,EAAkB9rH,EAAQqkC,GACjC,IAAK,IAAI/sC,EAAI,EAAGA,EAAI+sC,EAAMh+B,OAAQ/O,IAAK,CACrC,IAAIkzE,EAAanmC,EAAM/sC,GACvBkzE,EAAW7sC,WAAa6sC,EAAW7sC,aAAc,EACjD6sC,EAAWthC,cAAe,EACtB,UAAWshC,IAAYA,EAAW9sC,UAAW,GACjD3hC,OAAOwY,eAAevU,GAAQ,OAAcwqE,EAAW/tE,KAAM+tE,EAC/D,CACF,CACe,SAASmvC,EAAaC,EAAaC,EAAYC,GAM5D,OALID,GAAYiS,EAAkBlS,EAAYvnG,UAAWwnG,GACrDC,GAAagS,EAAkBlS,EAAaE,GAChD/9G,OAAOwY,eAAeqlG,EAAa,YAAa,CAC9Cl8E,UAAU,IAELk8E,CACT,C,qFCIe,SAASgtM,EAAQvvM,EAAWC,IACzC,OAAa,EAAGlxG,WAChB,IAAImtC,GAAO,OAAO8jE,GACdjoD,GAAS,OAAUkoD,GACvB,OAAIt/G,MAAMo3D,GACD,IAAIt0C,KAAKvjB,KAEb63D,GAIL7b,EAAK67F,QAAQ77F,EAAKikE,UAAYpoD,GACvB7b,GAHEA,CAIX,C,+BCjCA,IAAIm2R,EAAwB,+BACxBj0T,EAAK,EAAQ,OAAOksiC,EAAsBlsiC,EAAGksiC,oBAAqBlk1B,EAAmBhoN,EAAGgoN,iBAwC5F,SAASs/2B,EAAuBv62B,GAC5B,IAAIw/0B,EAAgBL,EAAoBn/0B,GACxCA,EAiCJ,SAA+BA,EAAcw/0B,GAKzC,OAAOz7iC,MAAMuwB,KAAKkrhC,EAAc1ljC,QAAQC,OAAO,SAAUyhO,EAAS1yL,GAC9D,IAAI0xiC,EAAc,IAAIj5iC,OAAO,aAAeuH,EAAK,UAAW,MAC5D,OAAQ0yL,EAAQ/nO,MAAM+mlC,IAAgB,IAAIjwkC,MAAgC,QAA1Bi1iC,EAAcl8iC,IAAIwlC,GAAgB,EAAI,GAAG/uC,OAAO,SAAUyhO,EAASi/2B,GAC/G,IAAID,EAAc,IAAIj5iC,OAAO,OAASk5iC,GAClCC,EAAe,IAAIn5iC,OAAO,cAAgBuH,EAAK,eACnD,OAAO0yL,EAAQhoO,QAAQgnlC,EAAa,IAAIhnlC,QAAQknlC,EAAc,GAClE,EAAGl/2B,EACP,EAAGwE,EACP,CA9CmB262B,CAAsB362B,EAAcw/0B,GACnD,IAAIo7B,EAkDR,SAA8Bp7B,GAC1B,IAAIo7B,EAAiB,IAAIn4kC,IAKzB,OAJA+8iC,EAAc/9iC,QAAQ,SAAUosc,EAAW/ka,GACvC,IAAI6mwB,EAAMirS,EAAet3kC,IAAIuqc,IAAc,IAAIlrc,IAC/C,OAAOi4kC,EAAep3kC,IAAIqqc,EAAW8hW,EAAI5syB,IAAI+lC,GACjD,GACO8xiC,CACX,CAzDyBC,CAAqBr7B,GACtCkB,EAASk6B,EAAet3kC,IAAI,QAAU,IAAIX,IAC1Cm4kC,EAAgB,IAAIn4kC,IACpBo4kC,EA8DR,SAAmC/62B,EAAcw/0B,EAAekB,EAAQo6B,GACpE,OAAO/2kC,MAAMuwB,KAAKoshC,GAAQ3mjC,OAAO,SAAUghlC,EAAqBp6B,GAC5D,IAAIq6B,EAAc,IAAIz5iC,OAAO,UAAYo/gC,EAAQ,eAC7Cj/gC,EAAUs+L,EAAavsO,MAAMunlC,GACjC,IAAKt5iC,EAED,OADAo5iC,EAAc/3kC,IAAI49iC,GACXo6B,EAEX,IAAIjyiC,EAAKlpB,OAAOgW,SAAS8L,EAAQ,IACjC,OAAK89gC,EAAcp8iC,IAAI0lC,GAML,QADF02gC,EAAcl8iC,IAAIwlC,IAG9BgyiC,EAAc/3kC,IAAI49iC,GACXo6B,GAEJA,EAAoBv3kC,IAAIm9iC,EAAO73gC,IATlCgyiC,EAAc/3kC,IAAI49iC,GACXo6B,EASf,EAAG,IAAIt4kC,IACX,CApF8Bw4kC,CAA0Bj72B,EAAcw/0B,EAAekB,EAAQo6B,GACrFI,EA0FR,SAAmCH,EAAqBD,GAEpD,IAAIK,EAAuBp3kC,MAAMuwB,KAAKymjC,GAAqBhhlC,OAAO,SAAUohlC,EAAsBlp4B,GAC9F,IAAI0u2B,EAAQ1u2B,EAAK,GACbnpK,EAAKmpK,EAAK,GACVyu2B,EAASy6B,EAAqB73kC,IAAIwlC,IAAO,IAAInmC,IACjD,OAAOw4kC,EAAqB33kC,IAAIslC,EAAI43gC,EAAO39iC,IAAI49iC,GACnD,EAAG,IAAIl+iC,KAGP,OAAOsB,MAAMuwB,KAAK6mjC,GAAsBphlC,OAAO,SAAUmhlC,EAAqBjp4B,GAC1E,IAAInpK,EAAKmpK,EAAK,GACVyu2B,EAAS38iC,MAAMuwB,KAAK29K,EAAK,IAC7B,OAAIyu2B,EAAO78iC,OAAS,GAChB68iC,EAAOj/iC,QAAQ,SAAUk/iC,GACrBm6B,EAAc/3kC,IAAI49iC,EACtB,GACOu6B,GAEJA,EAAoB13kC,IAAIslC,EAAI43gC,EAAO,GAC9C,EAAG,IAAIj+iC,IACX,CA/G8B24kC,CAA0BL,EAAqBD,GACrEO,EAAqBt3kC,MAAMuwB,KAAKwmjC,GAoBpC,MAlBsB,CAAC,OAAQ,MAAO,OACA/glC,OAAO,SAAUuhlC,EAAiBztoB,GACpE,IAAI8hW,EAAMirS,EAAet3kC,IAAIuqc,IAAc,IAAIlrc,IAC/C,OAAOoB,MAAMuwB,KAAKq7wB,GAAK51yB,OAAO,SAAUuhlC,EAAiBxyiC,GAAM,OAAOoyiC,EAAoB93kC,IAAI0lC,GACxFwyiC,EACAA,EAAgBv4kC,IAAI+lC,EAAK,EAAGwyiC,EACtC,EAAG,IAAI34kC,KACSlB,QAAQ,SAAUqnC,GAC9B,GAAIuyiC,EAAmBx3kC,OAAQ,CAC3B,IAAI88iC,EAAQ06B,EAAmB1jiC,QAE/BqoL,EA0HZ,SAAkCA,EAAc2g1B,EAAO73gC,GACnD,OAAOk3L,EAAa7/M,SAAS,QACvB6/M,EAAe,UAAY2g1B,EAAQ,QAAU73gC,EAAK,OAClDk3L,EAAe,cAAgB2g1B,EAAQ,QAAU73gC,CAC3D,CA9H2ByyiC,CADfv72B,EAAew72B,EAA6Bx72B,EAAc2g1B,GACJA,EAAO73gC,EACjE,CACJ,GACAuyiC,EAAmB55kC,QAAQ,SAAUk/iC,GAEjC3g1B,EA2GR,SAAwCA,EAAc2g1B,GAClD,IAAI1/8B,EAAU,IAAI1/D,OAAO,YAAco/gC,EAAQ,SAAU,MACzD,OAAO3g1B,EAAaxsO,QAAQytG,EAAS,GACzC,CA9GuBw6+B,CADfz72B,EAAew72B,EAA6Bx72B,EAAc2g1B,GACEA,EAChE,GACO3g1B,CACX,CA+FA,SAASw72B,EAA6Bx72B,EAAc2g1B,GAChD,IAAI1/8B,EAAU,IAAI1/D,OAAO,UAAYo/gC,EAAQ,SAAU,MACvD,OAAO3g1B,EAAaxsO,QAAQytG,EAAS,GACzC,CAqBA9P,EAAOj9F,QA1KP,SAAoBquI,GAChB,IAUmB84F,EACfgF,EAXAq72B,EAAkB,CAAEj8jC,KAAM8iH,EAAY9iH,MAI1C,MAHyB,aAArB8iH,EAAY9iH,OACZi8jC,EAAgBrg3B,KAQDA,EARqB94F,EAAY84F,IAShDgF,EAAgBpF,EAAiBI,GAE9B,CADOA,EAAI1qO,MAAM,UAAU,IAE7B8M,OAAO4iO,EAAc79N,IAAI+3kC,IACzB5skC,KAAK,UAXH,IAAIu5T,EAAsBw0wB,EACrC,C,kBC1BA,IAAInyjB,EAAY,EAAQ,OAEpBx3gB,EAAkB,WACpB,IACE,IAAIoyF,EAAOolb,EAAUhwhB,OAAQ,kBAE7B,OADA4qG,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAO1vG,GAAI,CACf,CANqB,GAQrB08F,EAAOj9F,QAAU6d,C,+BCRjB,IAAI4pkC,EAAc,EAAQ,OAC1Bxq/B,EAAOj9F,QAAQikB,SAAWwjkC,EAAY34kC,KAAO,MAC7CmuF,EAAOj9F,QAAQkkB,YAAcujkC,EAAYrngC,QACzC6c,EAAOj9F,QAAQg//B,WAAa,UAC5B/h6B,EAAOj9F,QAAQ+8zB,4BAA8B,CACzC2qR,qBAAsB,QACtBC,cAAe,OACfC,aAAc,SACdC,aAAc,OAElB5q/B,EAAOj9F,QAAQg9zB,8BAAgC,CAC3C0qR,qBAAsB,QACtBC,cAAe,SACfC,aAAc,SACdC,aAAc,OAElB5q/B,EAAOj9F,QAAQ6jB,oBAAsB,OACrCo5E,EAAOj9F,QAAQ+jB,cAAgB,MAC/Bk5E,EAAOj9F,QAAQqlkC,eAAiB,MAChCpo+B,EAAOj9F,QAAQ4gB,kBAAoB,OACnCq8E,EAAOj9F,QAAQ6gB,oBAAsB,eACrCo8E,EAAOj9F,QAAQye,UAAY,SAAU6B,EAAaC,GAE9C,OADAA,EAAoB,QAAXA,EAAmB,SAAWsjF,mBAAmBtjF,GACnC,SAAhBD,EACD,SAAWC,EAAS,4BACpB,SAAWA,EAAS,QAAUD,EAAc,uBACtD,EACA28E,EAAOj9F,QAAQ8nlC,qBAAuB,EACtC7q/B,EAAOj9F,QAAQ+nlC,uBAAyB,GACxC9q/B,EAAOj9F,QAAQgolC,mBAAqB,GAYpC/q/B,EAAOj9F,QAAQk9V,WAAa,CACxB+/tB,eAAgB,SAAUnujC,EAAM41B,GAC5B,OAAO,IAAI7oB,UAAU,mBAAqB/M,EAAO,KAAO41B,EAC5D,EACA87T,aAAc,SAAU1xV,EAAMyc,GAC1B,OAAO,IAAI1P,UAAU/M,EAAO,aAPzB,CAAC,IAAK,IAAK,IAAK,IAAK,KAAKoiC,SAOqB3lB,EAPP5nB,cAAc,IAAM,KAAO,KAOZ,IAAM4nB,EACpE,EACAm+jB,cAAe,SAAU56kB,EAAMq1B,GAC3B,OAAO,IAAI0+N,WAAW/zP,EAAO,mBAAqBq1B,EAAO1qB,KAAK,MAClE,EACAuwmB,kBAAmB,SAAUl7mB,GACzB,OAAO,IAAI+M,UAAU/M,EAAO,qBAChC,GAEJmuF,EAAOj9F,QAAQmwwB,mBAAqB,GACpClzqB,EAAOj9F,QAAQ4/2B,0CAA4C,IAC3D3ixB,EAAOj9F,QAAQ8u8B,iCAAmC,KAClD7x2B,EAAOj9F,QAAQ+u8B,4BAA8B,GAC7C9x2B,EAAOj9F,QAAQm7G,uBAAyB,EACxCle,EAAOj9F,QAAQo7G,wBAA0B,EACzCne,EAAOj9F,QAAQq7G,aAAe,EAC9Bpe,EAAOj9F,QAAQ+ywB,6BAA+B,IAC9C91qB,EAAOj9F,QAAQgzwB,4BAA8B,IAC7C/1qB,EAAOj9F,QAAQgv8B,wBAA0B,CACrC1w5B,OAAQ,IACRr5C,IAAK,EACLC,IAAkD,IAA7C+3F,EAAOj9F,QAAQ+u8B,4BACpBjt7B,OAAQ,GAEZm7E,EAAOj9F,QAAQ++/B,uBAAyB,CACpCzg9B,OAAQ,IACRr5C,IAAK,GACL6c,OAAQ,GAEZm7E,EAAOj9F,QAAQiolC,iBAAmB,CAC9BC,mBAAoB,gBACpBC,UAAW,OACXC,kBAAmB,gBAEvBnr/B,EAAOj9F,QAAQqolC,mBAAqB,CAChCC,cAAe,WACfC,cAAe,WACfC,eAAgB,aAEpBvr/B,EAAOj9F,QAAQm9V,cAAgB,CAC3Be,cAAe,OACfC,aAAc,MACdC,kBAAmB,YAEvBnhQ,EAAOj9F,QAAQu4gB,4BAA8B,CACzCkwkB,UAAW,OACXC,YAAa,UAEjBzr/B,EAAOj9F,QAAQ2olC,4BAA8B,CACzCF,UAAW,OACXC,YAAa,S,6BClGjB,IAAIzkjC,EAAO,EAAQ,MAGfiuG,EAA4ClyI,IAAYA,EAAQgkH,UAAYhkH,EAG5EmyI,EAAaD,GAA4Cj1C,IAAWA,EAAO+mB,UAAY/mB,EAMvFm1C,EAHgBD,GAAcA,EAAWnyI,UAAYkyI,EAG5BjuG,EAAKmuG,YAAS//H,EACvCokI,EAAcrE,EAASA,EAAOqE,iBAAcpkI,EAqBhD4qF,EAAOj9F,QAXP,SAAqBE,EAAQo8G,GAC3B,GAAIA,EACF,OAAOp8G,EAAOmW,QAEhB,IAAI1G,EAASzP,EAAOyP,OAChBjB,EAAS+nI,EAAcA,EAAY9mI,GAAU,IAAIzP,EAAO8b,YAAYrM,GAGxE,OADAzP,EAAO2sG,KAAKn+F,GACLA,CACT,C,yBCvBQ,SAAWtS,GAAU,aAIzB,SAAS2gI,EAAoBv+E,EAAQw+E,EAAej3H,EAAKk3H,GACrD,IAAIljF,EAAS,CACTv7C,EAAG,CAAC,qBAAsB,iBAC1BC,GAAI,CAAC+/C,EAAS,cAAeA,EAAS,WACtC9/C,EAAG,CAAC,aAAc,YAClBC,GAAI,CAAC6/C,EAAS,YAAaA,EAAS,WACpC5/C,EAAG,CAAC,YAAa,UACjBC,GAAI,CAAC2/C,EAAS,WAAYA,EAAS,UACnC1/C,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACy/C,EAAS,WAAYA,EAAS,QACnCx/C,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACu/C,EAAS,cAAeA,EAAS,WACtCt/C,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACq/C,EAAS,YAAaA,EAAS,YAExC,OAAOy+E,EAAWljF,EAAOh0C,GAAK,GAAKg0C,EAAOh0C,GAAK,EACnD,CAEc3J,EAAOG,aAAa,WAAY,CAC1CC,OAAQ,CACJm+O,WACI,4EAA4El+O,MACxE,KAERs9C,OAAQ,wIAAwIt9C,MAC5I,KAEJm+O,SAAU,mBAEdl+O,YACI,4DAA4DD,MAAM,KACtEghI,kBAAkB,EAClB9gI,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACN0+G,KAAM,mCAEVj+G,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNC,EAAGu+H,EACHt+H,GAAIs+H,EACJr+H,EAAGq+H,EACHp+H,GAAIo+H,EACJn+H,EAAGm+H,EACHl+H,GAAIk+H,EACJj+H,EAAGi+H,EACHh+H,GAAIg+H,EACJ/9H,EAAG+9H,EACH99H,GAAI89H,EACJ79H,EAAG69H,EACH59H,GAAI49H,GAERt9H,uBAAwB,cACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,MAES,MAFDA,EAGO19D,EAAS,KAQTA,CAEnB,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,GAETvC,cAAe,+BACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,SAAbD,EACOC,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbD,EACAC,EACa,aAAbD,EACAC,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAbD,EACAC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,MAEf,GAKP,CAhIyCmC,CAAQ,EAAQ,O,+BCL1D,IAAI89F,EAAa,EAAQ,OACrBu9B,EAAc,EAAQ,OAGtBrqF,EAA2BzrC,OAAOyrC,yBAGtCmsD,EAAOj9F,QAAU,SAAU8O,GACzB,IAAKqsH,EAAa,OAAOv9B,EAAW9uF,GACpC,IAAIglE,EAAahjC,EAAyB8sD,EAAY9uF,GACtD,OAAOglE,GAAcA,EAAW5yE,KAClC,C,+BCXA,IAAIw7G,EAAW,EAAQ,OACnBlxF,EAAW,EAAQ,OACnBy8O,EAAuB,EAAQ,OAEnChrK,EAAOj9F,QAAU,SAAUu0B,EAAGzyB,GAE5B,GADA46G,EAASnoF,GACL/I,EAAS1pB,IAAMA,EAAEka,cAAgBuY,EAAG,OAAOzyB,EAC/C,IAAIk+U,EAAoB/3E,EAAqBhrP,EAAEsX,GAG/C,OADApiB,EADc6tU,EAAkB7tU,SACxBrQ,GACDk+U,EAAkBpiN,OAC3B,C,iCCVA,IACQviH,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAq66B,EAA8B,WAC9B,SAASA,EAAa3r6B,GAClBplB,OAAO0hC,iBAAiBxrB,KAAM,CAC1BwwgC,UAAW,CACP7qhC,MAAOupB,IAGnB,CAgBA,OAfA2r6B,EAAaz66B,UAAUklD,QAAU,WACjC,EACAu13B,EAAaz66B,UAAU2pqB,UAAY,WACnC,EACA8wQ,EAAaz66B,UAAUitkC,YAAc,SAAU5wJ,GAC3C,IAAI6wJ,EAAettkC,KAAKutkC,eAAe9wJ,GAAS,GAChDz86B,KAAKwwgC,UAAU,CAAC88D,GACpB,EACAzyJ,EAAaz66B,UAAUotkC,cAAgB,SAAU/wJ,GAC7C,IAAIgxJ,EAAiBztkC,KAAKutkC,eAAe9wJ,GAAS,GAClDz86B,KAAKwwgC,UAAU,CAACi9D,GACpB,EACA5yJ,EAAaz66B,UAAUmtkC,eAAiB,SAAU19I,EAAcnU,GAC5D,MAAO,CAAE3t7B,OAAQ8h8B,EAAcnU,eAAgBA,EACnD,EACOb,CACX,CAxBiC,GAyB7B6yJ,EAA0C,SAAU1pkC,GAEpD,SAAS0pkC,IACL,OAAkB,OAAX1pkC,GAAmBA,EAAOlD,MAAMd,KAAM7L,YAAc6L,IAC/D,CACA,OAJAD,EAAU2tkC,EAA0B1pkC,GAI7B0pkC,CACX,CAN6C,CAM3C7yJ,GACE8yJ,EAAoC,SAAU3pkC,GAE9C,SAAS2pkC,IACL,OAAkB,OAAX3pkC,GAAmBA,EAAOlD,MAAMd,KAAM7L,YAAc6L,IAC/D,CAKA,OARAD,EAAU4tkC,EAAoB3pkC,GAI9B2pkC,EAAmBvtkC,UAAUnI,OAAS,SAAUwk7B,GAC5C,IAAI7q4B,EAAQ5xC,KAAKutkC,eAAe9wJ,GAAS,GACzCz86B,KAAKwwgC,UAAU,CAAC5+9B,GACpB,EACO+7hC,CACX,CAVuC,CAUrC9yJ,GACFn51B,EAAOj9F,QAAU,CAAEiplC,yBAA0BA,EAA0BC,mBAAoBA,EAAoB9yJ,aAAcA,E,+BCzDtG,EAAQ,KAG/BrhtB,CAAiB,O,+BCLT,EAAQ,MAIhB9vI,CAAE,CAAE37F,OAAQ,OAAQm3B,OAAO,GAAQ,CACjC0ojC,YAAa/kkC,KAAKzI,UAAUsoF,a,+BCL9B,IAAIgB,EAAI,EAAQ,OACZrpF,EAAO,EAAQ,OACf4pO,EAAY,EAAQ,OACpB0D,EAAa,EAAQ,OACrBzD,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,OAClByj2B,EAAsC,EAAQ,OAE9CC,EAAoB,0BAIxBpk/B,EAAE,CAAE37F,OAAQ,UAAWs8O,MAAM,EAAMxpI,OAAQgt+B,GAAuC,CAChF349B,IAAK,SAAa2xH,GAChB,IAAI7tN,EAAIhZ,KACJ8/W,EAAiBnyI,EAAW,kBAC5BrD,EAAaJ,EAA2BxoO,EAAEsX,GAC1CpiB,EAAU0zO,EAAW1zO,QACrBwK,EAASkpO,EAAWlpO,OACpBjO,EAASg3O,EAAQ,WACnB,IAAI+b,EAAiBjc,EAAUjxN,EAAEpiB,SAC7BqqO,EAAS,GACThnC,EAAU,EACVp4J,EAAY,EACZksiC,GAAkB,EACtB3j2B,EAAQvD,EAAU,SAAUxkH,GAC1B,IAAI7rH,EAAQyjM,IACR+z4B,GAAkB,EACtBnsiC,IACAxhC,EAAK6lP,EAAgBltO,EAAGqpG,GAASxrH,KAAK,SAAUlR,GAC1CqolC,GAAmBD,IACvBA,GAAkB,EAClBn3kC,EAAQjR,GACV,EAAG,SAAUskB,GACP+jkC,GAAmBD,IACvBC,GAAkB,EAClB/s2B,EAAOzqO,GAASyT,IACd43B,GAAazgC,EAAO,IAAI0+W,EAAe7+I,EAAQ6s2B,IACnD,EACF,KACEjsiC,GAAazgC,EAAO,IAAI0+W,EAAe7+I,EAAQ6s2B,GACnD,GAEA,OADI36kC,EAAO8W,OAAO7I,EAAOjO,EAAOxN,OACzB2kP,EAAWjoH,OACpB,G,yBCrCM,SAAWxhI,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFC,MAC1F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,qDAAqDF,MAAM,KACrEG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVS,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,cACHC,GAAI,cACJC,EAAG,WACHC,GAAI,cACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERM,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAzDyCC,CAAQ,EAAQ,O,kBCN1D,IAAI0plC,EAAc,EAAQ,OACtBC,EAAe,EAAQ,OACvB5vB,EAA0B,EAAQ,OAmBtC589B,EAAOj9F,QAVP,SAAqB8sB,GACnB,IAAIk2oB,EAAYymb,EAAa38jC,GAC7B,OAAwB,GAApBk2oB,EAAUrzpB,QAAeqzpB,EAAU,GAAG,GACjC62Z,EAAwB72Z,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASn8mB,GACd,OAAOA,IAAW/5B,GAAU08jC,EAAY3iiC,EAAQ/5B,EAAQk2oB,EAC1D,CACF,C,qCClBA,IACQ3npB,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACIi0f,EAAe,EAAQ,OACvBr1gB,EAAK,EAAQ,OAAWgkV,EAAiBhkV,EAAGgkV,eAAgBd,EAAWljV,EAAGkjV,SAC1EvjV,EAAM,EAAQ,OACdq7iC,EAAiB,EAAQ,OACzBxn7B,EAAU,EAAQ,OAClBjzH,EAAa,EAoBbmyG,EAAS,CACT/nB,OAAQ,GACRmzb,WAAY,CAAC,SAAU,OAAQ,WAC/B6sjB,MAAO,CAAC,SAAU,cAClBpg/B,KAAM,CAAC,UACPqw6B,QAAS,CAAC,SAAU,aAAc,QAAS,SAE3C70+B,EAAS,CACT4kE,OAAQ,QACRJ,KAAM,OACNqw6B,QAAS,WAeTgwE,EAAqB,KAMrB7sR,EAAWl/tB,WACXi9I,EAAYiilB,EAASjilB,UAAYiilB,EAASjilB,UAAY,EAAQ,MAC9D6lxB,EAAc,CACdI,KAAM,OACN8oF,OAAQ,SACRjpF,MAAO,QACPkpF,OAAQ,SACRC,QAAS,WAETC,EAA6B,IAAIx7kC,IAAI,CACrC,CArB2B,IAqBAmy/B,EAAYopF,SACvC,CArB6B,KAqBAppF,EAAYopF,SACzC,CArBwB,KAqBAppF,EAAYkpF,QACpC,CArBuB,KAqBAlpF,EAAYkpF,QACnC,CArB2B,KAqBAlpF,EAAYopF,SACvC,CApBuB,KAoBAppF,EAAYI,MACnC,CApBwB,KAoBAJ,EAAYopF,WAWpCzptB,EAAkC,SAAU9gX,GAO5C,SAAS8gX,EAAiBkikB,EAAWp37B,GACjC,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAM,QAASk2G,IAAWl2G,KAClDpQ,EAAU9F,OAAOC,OAAO,CACpBo7X,UAAW,KACXsptB,2BAvDgC,EAwDhCC,+BAzDoC,EA0DpCC,0BAxDkC,IAyDlCC,YAxDe,KAyDfC,eAxDkB,IAyDlB1rkC,IAAKA,EACLm8N,UAAWA,GACZ1vO,GACH,IAAI2kb,EAAY/sF,EAAe53V,EAAQ63V,UACnCxhW,EAAM,IAAI2J,EAAQuT,IAAI,UAAWe,EAAOqwa,EAAW3kb,EAAQ4kb,YAC3DtvD,EAAiBt1X,EAAQs1X,eAAiB,IAAIs5rB,EAAe,WAC7D,IAAIxuiC,EAAOk1W,EAAel1W,KACtBwqO,EAAS,mBAAqBxqO,EAAO,OAASA,EAAO,IACzD/pB,EAAIqhB,MAAMkzO,GACVt2O,EAAMo7gB,OAAO,CAAE9wb,KA3DI,KA2D4BgsJ,OAAQA,GAC3D,GAAK,KACL1wP,OAAO0hC,iBAAiBtnB,EAAO,CAC3B4qkC,iBAAkB,CACdnplC,MAAO,KACP8lC,UAAU,GAEdsjjC,6BAA8B,CAC1BpplC,MAAO,EACP8lC,UAAU,GAEdujjC,QAAS,CACLrplC,MAAO,KACP8lC,UAAU,GAEd2q6B,eAAgB,CACZzw8B,MAAOiK,EAAQgZ,eAEnBqmkC,kBAAmB,CACftplC,MAAO,KACP8lC,UAAU,GAEdyjjC,YAAa,CACTvplC,MAAOiK,EAAQ6+kC,2BACfhjjC,UAAU,GAEdjmB,YAAa,CACT7f,QAASoe,GAEbqB,KAAM,CACFzf,MAAOM,GAEX4k5B,cAAe,CACXll5B,MAAO,IAEXwplC,gBAAiB,CACbxplC,MAAOu/X,GAEXr1X,SAAU,CACNlK,MAAOiK,GAEXw/kC,aAAc,CACVzplC,MAAO,KACP8lC,UAAU,GAEd4jjC,sBAAuB,CACnB1plC,MAAO,KACP8lC,UAAU,GAEd6jjC,WAAY,CACR3plC,MAAOqh8B,GAEXuoJ,gBAAiB,CACb5plC,MAAO,KACP8lC,UAAU,GAEdq0H,IAAK,CACDn6J,MAAO,KACP8lC,UAAU,KAGlB,IAAI+jjC,EAAiB,CACjBlujB,WAAY,OACZ6sjB,MAAO,OACPpg/B,KAAM,OACNqw6B,QAAS,UACTjw6B,OAAQ,QAoBZ,OAlBAjqF,EAAMymG,GAAG,eAAgB,SAAUh7G,GAE/B,IADA,IAAI0E,EAAO,GACFsG,EAAK,EAAGA,EAAKxG,UAAUC,OAAQuG,IACpCtG,EAAKsG,EAAK,GAAKxG,UAAUwG,GAEzBhL,KAAS45B,GACTrlB,EAAM2G,KAAK/J,MAAMoD,EAAOgwU,EAAc,CAAC3qT,EAAO55B,IAAS+vG,EAAOrrG,KAElE,IAAI8X,EAAQ,CAAE5Y,KAAM5D,EAAOoa,MAAO,YAAaC,MAAOwlkC,EAAetrkC,EAAMvU,QAC3E,GAAc,WAAVA,EAAoB,CACpB,IAA0B6qP,EAAjB96I,EAAOrrG,EAAM,GAAgB,GACtC8X,EAAMjC,QAAU,CAAEswO,OAAQA,GAC1BruO,EAAMnC,MAAQwwO,IAAW2qwB,EAAYC,MAAQ,OAAS,OAC1D,CACAlh/B,EAAMky7B,eAAevr7B,KAAK,QAASsB,EACvC,GACAjI,EAAMky7B,eAAevr7B,KAAK,QAAS,CAAEtX,KAAM2Q,EAAMvU,MAAOoa,MAAO,YAAaC,MAAOwlkC,EAAetrkC,EAAMvU,SACxGuU,EAAMi7/B,WACCj7/B,CACX,CA0XA,OAzeAnE,EAAU+kX,EAAkB9gX,GAgH5B8gX,EAAiB1kX,UAAUpZ,SAAW,WAClC,MAAO,sBAAwBgZ,KAAKwF,YAAc,KAAOxF,KAAK8/I,IAAIryD,IAAM,GAC5E,EAMAq3R,EAAiB1kX,UAAUk/gB,OAAS,SAAU97gB,GAC1C,IAAIgrF,EAAOhrF,EAAGgrF,KAAMgsJ,EAASh3O,EAAGg3O,OAChC,GAAmB,WAAfx6O,KAAKrQ,MAAT,CAGIqQ,KAAKovkC,cACLpvkC,KAAKovkC,aAAar0gC,QAElB/6D,KAAKuvkC,iBACLvvkC,KAAKuvkC,gBAAgBx0gC,QAErB/6D,KAAKivkC,mBACLjvkC,KAAKivkC,kBAAkBl0gC,QAEvB/6D,KAAKqvkC,uBACLrvkC,KAAKqvkC,sBAAsBt0gC,QAE3B/6D,KAAKmvkC,iBACLnvkC,KAAKmvkC,gBAAgBzpkC,OAErB1F,KAAK8ukC,kBAAoBtg/B,IAAS4/+B,GAClCpukC,KAAK8ukC,iBAAiB/zgC,QAE1B/6D,KAAK6q4B,cAAc992B,OAAO,GAC1B,IAAI9mC,EAAM+Z,KAAKoF,KAxLD,MAyLVopF,GACAvoG,EAAIqhB,MAAM,UACVtH,KAAKkvC,WAAW,SAAU,KAAM,CAACi28B,EAAYC,UAG7Cn//B,EAAI4mB,KAAK,WAAa2hF,EAAO,MAAQgsJ,GACjChsJ,IAAS4/+B,GACTpukC,KAAKkvC,WAAW,SAAU,KAAM,CAC5Bs/hC,EAA2B36kC,IAAI26F,IAAS225B,EAAYmpF,UAIhE,IAAIrt0B,EAAajhQ,KAAK8/I,IAAImhH,WACtB3hC,EAAYt/N,KAAKnQ,SAASyvO,UAC1B2hC,IAAe3hC,EAAUwjlB,SAAW7hjB,IAAe3hC,EAAUyjlB,QAC7D/izB,KAAK8/I,IAAIryI,MAAM+gF,EAAMgsJ,EApCzB,CAsCJ,EAKAsqI,EAAiB1kX,UAAU++/B,SAAW,WAClC,IAAIj7/B,EAAQlE,KACR/Z,EAAM+Z,KAAKoF,KACf,GAAmB,YAAfpF,KAAKrQ,MACLqQ,KAAKkvC,WAAW,cAEf,GAAmB,UAAflvC,KAAKrQ,MAGV,YAFA1J,EAAI4mB,KAAK,qBAAwB7M,KAAKrQ,MAA7B,wCAIbqQ,KAAK8/I,IAAM,IAAI9/I,KAAKnQ,SAASyvO,UAAUt/N,KAAKsvkC,YAC5C,IAAItv7B,EAAKhgJ,KAAK8/I,IACd75J,EAAIqhB,MAAM,2BAA4B04I,GACtCA,EAAG9nJ,iBAAiB,QAAS,SAAUiU,GAAS,OAAOjI,EAAMo7gB,OAAOnzgB,EAAQ,GAC5E,IAAIyikC,EAAc5ukC,KAAKnQ,SAAS++kC,YAEhC5ukC,KAAKovkC,aAAe,IAAIp48B,EAAQ,WAC5B,IAAIwjH,EAAS,qBAAuBo01B,EAAc,MAClD1qkC,EAAMo7gB,OAAO,CAAE9wb,KA1NC,KA0N4BgsJ,OAAQA,GACxD,EAAGo01B,GACH5u7B,EAAG9nJ,iBAAiB,OAAQ,WACxBjS,EAAIqhB,MAAM,oBAAqB04I,GAC/B97I,EAAMkrkC,aAAar0gC,QACnB72D,EAAMurkC,kBACFvrkC,EAAMirkC,iBACNjrkC,EAAMirkC,gBAAgB1ilC,OAE9B,GACAuzJ,EAAG9nJ,iBAAiB,UAAW,SAAUk4F,GACrCnqG,EAAIqhB,MAAM,aAAe8oF,EAAQr6F,MACjC,IACIq6F,EAAUzmF,KAAKyuB,MAAMg4D,EAAQr6F,KACjC,CACA,MAAOkU,GAEH,YADA/F,EAAM2G,KAAK,QAASZ,EAExB,CACA,OAAQmmF,EAAQpgF,MACZ,IAAK,MACD9L,EAAMwrkC,WAAWt/+B,GACjB,MACJ,IAAK,OACDlsF,EAAMyrkC,YAAYv/+B,GAClB,MACJ,IAAK,MAED,MACJ,IAAK,MACDlsF,EAAM0rkC,eAAex/+B,GAIzB,IAAK,YACDlsF,EAAM2rkC,mBACN,MACJ,IAAK,UACD3rkC,EAAM4rkC,eAAe1/+B,GACrB,MACJ,QACIlsF,EAAMkB,KAAKkC,MAAM,yBAA2B8oF,EAAQpgF,MACpD9L,EAAM2G,KAAK,QAAS,IAAItD,MAAM,yBAA2B6oF,EAAQpgF,OAG7E,EACJ,EAMA80W,EAAiB1kX,UAAUsvkC,WAAa,SAAUlskC,GAC9C,IAAIg3O,EAASh3O,EAAGg3O,OACZv0P,EAAM+Z,KAAKoF,KACf,GAAK,CAAC,aAAc,QAAQuwB,SAAS31B,KAAKrQ,OAA1C,CAKA,GAAmB,eAAfqQ,KAAKrQ,MAGL,OAFA1J,EAAI4mB,KAAK,mBAA8C2tO,QACvDx6O,KAAKs/gB,OAAO,CAAE9wb,KA7RE,KA6R2BgsJ,OAAQA,IAGvDv0P,EAAIqhB,MAAM,UAAYkzO,GACtBx6O,KAAK6K,KAAK,QAAS,IAAItD,MAAMizO,GAP7B,MAHIv0P,EAAI4mB,KAAK,qBAAwB7M,KAAKrQ,MAA7B,uDAWjB,EAMAm1X,EAAiB1kX,UAAUuvkC,YAAc,SAAUnskC,GAC/C,IAAIU,EAAQlE,KACR8oF,EAAStlF,EAAGslF,OAAQin/B,EAAYvskC,EAAGuskC,UAAWC,EAAaxskC,EAAGwskC,WAC9D/plC,EAAM+Z,KAAKoF,KACf,GAAK,CAAC,aAAc,WAAWuwB,SAAS31B,KAAKrQ,OAA7C,CAKIqQ,KAAK8ukC,kBACL9ukC,KAAK8ukC,iBAAiB/zgC,QAEtB/6D,KAAKuvkC,iBACLvvkC,KAAKuvkC,gBAAgBx0gC,QAEzB,IAAIy/K,EAASw11B,EAAa,EACpB,mCACA,2CAA+CA,EAAa,MAClE,GAAIA,EAAa,EAGb,OAFA/plC,EAAI4mB,KAAK,mBAA6C2tO,QACtDx6O,KAAKs/gB,OAAO,CAAE9wb,KAxTC,KAwT2BgsJ,OAAQA,IAGtD,IAAIi01B,EAA6BzukC,KAAKnQ,SAAS4+kC,2BAC/CzukC,KAAKkvkC,YAAcT,EACnBzukC,KAAKgvkC,QAAUlm/B,GAAU,KACrBin/B,GACA9plC,EAAI4mB,KAAK2tO,GACTx6O,KAAK8ukC,iBAAmB,IAAI938B,EAAQ,WAAc,OAAO9yH,EAAMurkC,iBAAmB,EAAGO,KAGrF/plC,EAAI4mB,KAAK,mBAA2C2tO,GACpDx6O,KAAKs/gB,OAAO,CAAE9wb,KAAM4/+B,EAAoB5z1B,OAAQA,IAChDx6O,KAAK8ukC,iBAAmB,IAAI938B,EAAQ,WAAc,OAAO9yH,EAAMi7/B,UAAY,EAAG6wE,IAElFhwkC,KAAKkvC,WAAW,UAAW,KAAM,CAAC6giC,EAAWC,GA3B7C,MAHI/plC,EAAI4mB,KAAK,qBAAwB7M,KAAKrQ,MAA7B,wDA+BjB,EAKAm1X,EAAiB1kX,UAAUyvkC,iBAAmB,WACvB,SAAf7vkC,KAAKrQ,MAKTqQ,KAAKivkC,kBAAkB14kC,QAJnByJ,KAAKoF,KAAKyH,KAAK,qBAAwB7M,KAAKrQ,MAA7B,6DAKvB,EAKAm1X,EAAiB1kX,UAAU6vkC,wBAA0B,WACjD,GAAmB,SAAfjwkC,KAAKrQ,MAAT,CAGA,IAAI1J,EAAM+Z,KAAKoF,KACXspkC,EAAiC1ukC,KAAKnQ,SAAS6+kC,+BACnDzolC,EAAIqhB,MAAM,kCAAoConkC,GAC9C,IAAIl01B,EAAS,UAAYk01B,EAAiC,wBAC1DzolC,EAAI4mB,KAAK,mBAAmD2tO,GAC5Dx6O,KAAKs/gB,OAAO,CAAE9wb,KAvWW,KAuWuBgsJ,OAAQA,GANxD,CAOJ,EAMAsqI,EAAiB1kX,UAAUwvkC,eAAiB,SAAUpskC,GAClD,IAAI9V,EAAO8V,EAAG9V,KACK,SAAfsS,KAAKrQ,MAKTqQ,KAAK6K,KAAK,UAAWnd,GAJjBsS,KAAKoF,KAAKyH,KAAK,qBAAwB7M,KAAKrQ,MAA7B,uDAKvB,EAMAm1X,EAAiB1kX,UAAU0vkC,eAAiB,SAAUtskC,GAClD,IAAIU,EAAQlE,KACRkwkC,EAAoB1skC,EAAG0skC,kBACvBjqlC,EAAM+Z,KAAKoF,KACf,GAAK,CAAC,aAAc,WAAWuwB,SAAS31B,KAAKrQ,OAA7C,CAKmB,YAAfqQ,KAAKrQ,QACL1J,EAAIqhB,MAAM,4DACVtH,KAAK8ukC,iBAAiB/zgC,SAE1B,IACIu+kB,EAAmB42b,EADclwkC,KAAKnQ,SAAS6+kC,+BAE/CyB,EAA2BD,EA9YP,IA+YxBlwkC,KAAKuvkC,gBAAgBx0gC,QACrB/6D,KAAKivkC,kBAAoB,IAAIj48B,EAAQ,WAAc,OAAO9yH,EAAM+rkC,yBAA2B,EAAG32b,GAC9Ft5oB,KAAK6q4B,cAAc992B,OAAO,GAAG/6B,QAAQ,SAAUo+F,GAAW,OAAOlsF,EAAMkskC,MAAMhg/B,EAAU,GACvFpwF,KAAKqvkC,sBAAwB,IAAIr48B,EAAQ,WAAc,OAAO9yH,EAAMmskC,gBAAkB,EAAGF,GACzFnwkC,KAAKkvC,WAAW,OAZhB,MAHIjpD,EAAI4mB,KAAK,qBAAwB7M,KAAKrQ,MAA7B,2DAgBjB,EAKAm1X,EAAiB1kX,UAAUkwkC,sBAAwB,WAC/C,GAAmB,eAAftwkC,KAAKrQ,MAAT,CAGA,IAAI1J,EAAM+Z,KAAKoF,KACf,GAAIpF,KAAKkvkC,aAAe,EAAG,CACvB,IAAI101B,EAAS,gCAGb,OAFAv0P,EAAI4mB,KAAK,mBAAiD2tO,QAC1Dx6O,KAAKs/gB,OAAO,CAAE9wb,KA/ZK,IA+Z2BgsJ,OAAQA,GAE1D,CACA,IAAIi01B,EAA6BzukC,KAAKnQ,SAAS4+kC,2BAC/CxolC,EAAI4mB,KAAK,sBAAwB4hkC,EAA6BzukC,KAAKkvkC,aAAe,WAClFlvkC,KAAKyvkC,iBAVL,CAWJ,EAMA3qtB,EAAiB1kX,UAAUgwkC,MAAQ,SAAUhg/B,GAGzC,GAFiBpwF,KAAK8/I,IAAImhH,aACVjhQ,KAAKnQ,SAASyvO,UACDkg2B,KAAM,CAC/B,IAAIzpkC,EAAO4T,KAAKC,UAAUwmF,GAC1BpwF,KAAKoF,KAAKkC,MAAM,aAAevR,GAC/B,IACIiK,KAAK8/I,IAAIyyE,KAAKx8N,GACViK,KAAKqvkC,uBAELrvkC,KAAKqvkC,sBAAsB94kC,OAEnC,CACA,MAAO0T,GACH,IAAIuwO,EAAS,yBACbx6O,KAAKoF,KAAKyH,KAAK,mBAA6C2tO,GAC5Dx6O,KAAKs/gB,OAAO,CAAE9wb,KAxbH,KAwb+BgsJ,OAAQA,GACtD,CACJ,CACJ,EAKAsqI,EAAiB1kX,UAAUiwkC,eAAiB,WACrB,WAAfrwkC,KAAKrQ,OAGTqQ,KAAKowkC,MAAM,CAAEpgkC,KAAM,aACvB,EAKA80W,EAAiB1kX,UAAUmwkC,WAAa,WACpC,IAAI/skC,EAAKxD,KAAKnQ,SAAUs1X,EAAY3hX,EAAG2hX,UAAWxnT,EAAUn6D,EAAGmrkC,0BAC3D6B,EAAQ,CACRzykC,GAAI2oV,IACJ/oR,QAASA,EACT3tD,KAAM,QACN60D,QA3dO,GA6dP7kE,KAAKgvkC,UACLwB,EAAM1n/B,OAAS9oF,KAAKgvkC,SAEpB7ptB,IACAqrtB,EAAM9ilC,KAAOy3X,GAEjBnlX,KAAKowkC,MAAMI,EACf,EAMA1rtB,EAAiB1kX,UAAUqwkC,eAAiB,SAAUrg/B,GAClD,IAAIlsF,EAAQlE,KACZ,GAAmB,WAAfA,KAAKrQ,MAAT,CAGA,IAAI+glC,EAA+B,SAAf1wkC,KAAKrQ,MACnB,SAAUygG,GAAW,OAAOlsF,EAAMkskC,MAAMhg/B,EAAU,EAClD,SAAUA,GAAW,OAAOlsF,EAAM2m4B,cAAc/24B,KAAKs8F,EAAU,EACrEsg/B,EAActg/B,EAJd,CAKJ,EAKA00R,EAAiB1kX,UAAUqvkC,gBAAkB,WACzC,IAAIvrkC,EAAQlE,KAIZ,GAHI,CAAC,QAAS,WAAW21B,SAAS31B,KAAKrQ,QACnCqQ,KAAKkvC,WAAW,cAED,eAAflvC,KAAKrQ,MAAT,CAGAqQ,KAAKkvkC,cACLlvkC,KAAKuwkC,aACL,IAAI1B,EAAiB7ukC,KAAKnQ,SAASg/kC,eACnC7ukC,KAAKuvkC,gBAAkB,IAAIv48B,EAAQ,WAAc,OAAO9yH,EAAMoskC,uBAAyB,EAAGzB,EAJ1F,CAKJ,EAKA/ptB,EAAiB1kX,UAAUqN,MAAQ,WACZ,WAAfzN,KAAKrQ,QAGTqQ,KAAKywkC,eAAe,CAAEzgkC,KAAM,QAC5BhQ,KAAKs/gB,OAAO,CAAE9wb,KAvgBA,IAugBuBgsJ,OAAQ,WACjD,EAMAsqI,EAAiB1kX,UAAUkm/B,YAAc,SAAU54/B,GAC/CsS,KAAKywkC,eAAe,CAAE/ilC,KAAMA,EAAMsiB,KAAM,OAC5C,EACO80W,CACX,CA3eqC,CA2enC+zJ,GAKF/zJ,EAAiBqgoB,YAAcA,EAqC/Bzj6B,EAAOj9F,QAAUqgY,C,yBC9mBjBpjS,EAAOj9F,QAnBH,SAAsC+e,GAClC,IAAIG,EAAKH,EAAGwmN,OAAQA,OAAgB,IAAPrmN,EAAgB,KAAOA,EAAIsB,EAAKzB,EAAGiunB,UAAWA,OAAmB,IAAPxsnB,EAAgB,KAAOA,EAAIgmG,EAAKznG,EAAGwG,MAAOA,OAAe,IAAPihG,EAAgB,KAAOA,EAChKnhH,OAAO0hC,iBAAiBxrB,KAAM,CAC1BgqN,OAAQ,CACJrkO,MAAOqkO,EACPt+L,YAAY,GAEhB+lmB,UAAW,CACP9roB,MAAO8roB,EACP/lmB,YAAY,GAEhB1hB,MAAO,CACHrkB,MAAOqkB,EACP0hB,YAAY,IAGxB,C,kBC5BJ,IAAIlnC,EAAS,EAAQ,OAGjBg+H,EAAch+H,EAASA,EAAO4b,eAAYtJ,EAC1C66a,EAAgBnvT,EAAcA,EAAYm0F,aAAU7/M,EAaxD4qF,EAAOj9F,QAJP,SAAqBwwH,GACnB,OAAO08T,EAAgB7nb,OAAO6nb,EAActxa,KAAK40G,IAAW,CAAC,CAC/D,C,yBCZA,IAAI+6Z,EAAQtub,EAAOj9F,QAAU,WAC3Bub,KAAKixC,OAAS,CAAC,CACjB,EAGA++d,EAAM5vgB,UAAUk2H,IAAM,SAAmB9rI,EAAK7E,GAC5Cqa,KAAKixC,OAAOzmD,GAAO7E,CACrB,EAGAqqhB,EAAM5vgB,UAAUvM,IAAM,SAAmBrJ,GACvC,OAAOwV,KAAKixC,OAAOzmD,EACrB,EAGAwlhB,EAAM5vgB,UAAU2yH,IAAM,SAAmBvoI,UAChCwV,KAAKixC,OAAOzmD,EACrB,EAGAwlhB,EAAM5vgB,UAAU26D,MAAQ,WACtB/6D,KAAKixC,OAAS,CAAC,CACjB,C,+BCzBa,SAAS8nE,EAAQzmG,GAA+B,OAAOymG,EAAQ,mBAAmBv0H,QAAQ,iBAAiBA,OAAO0d,SAAS,SAASoQ,GAAK,cAAcA,CAAG,EAAE,SAASA,GAAK,OAAOA,GAAK,mBAAmB9tB,QAAQ8tB,EAAI7R,cAAcjc,QAAQ8tB,IAAM9tB,OAAO4b,UAAU,gBAAgBkS,CAAG,EAAEymG,EAAQzmG,EAAI,CAACxoB,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,QAAwnG,WAA0C,IAAIm6X,EAAazqX,UAAUC,OAAO,QAAkB0C,IAAf3C,UAAU,GAAeA,UAAU,GAAG,CAAC,EAAM/I,EAAK+I,UAAUC,OAAO,QAAkB0C,IAAf3C,UAAU,GAAeA,UAAU,GAAG,CAAC,EAAMw8kC,EAAgBvllC,EAAKgzV,WAAWA,OAA6B,IAAlBuyvB,GAA+BA,EAAgB/glC,EAAQ8oH,EAAyBttH,EAAKmtH,GAAW,OAAO,SAASq49B,GAAoB,IAAIC,EAAuBD,EAAmBvo5B,aAAauo5B,EAAmBr9kC,MAAM,YAAY,SAASu9kC,EAAanmlC,GAAO,IAAIomlC,EAASpmlC,EAAMomlC,SAAS3+iC,EAAMsmF,EAAyB/tH,EAAM6tH,GAAgB+qjB,GAAY,EAAGt9V,EAAOhnU,QAAQmzB,IAAO,EAAG6zS,EAAOpmU,WAAW,WAAW0jqB,EAAY1tqB,QAAQu8B,CAAK,GAAG,IAAI4+iC,GAAe,EAAG/qwB,EAAO/mU,aAAa,WAAW,MAA6B,mBAAf0/W,EAA0BA,EAAa2kT,EAAY1tqB,SAAS+oX,CAAY,EAAE,IAAQmsP,GAAa,EAAGC,EAA0B,SAAGgme,EAAephlC,GAAaqhlC,GAAa,EAAGhrwB,EAAOrmU,SAAS,WAAW,MAAM,CAACm/W,WAAWgsP,EAAa/rP,SAAStrR,SAAS45e,gBAAgBy9B,EAAa/rP,SAASsuN,gBAAgB,EAAE,CAACy9B,IAAmBmme,GAAgB,EAAGjrwB,EAAOrmU,SAAS,WAAW,OAAOw+U,EAAW3kO,EAAcA,EAAc,CAAC,EAAErnF,GAAO,CAAC,EAAE,CAACygF,IAAIk+9B,IAAW3+iC,CAAK,EAAE,CAACA,EAAM2+iC,IAAW,OAAO9qwB,EAAgB,QAAEl5T,cAAck+lB,EAA+B,QAAEjtR,SAAS,CAACr4V,MAAMolnB,GAAc9kS,EAAgB,QAAEl5T,cAAc6jkC,EAAmBn39B,EAAcA,EAAc,CAAC,EAAEy39B,GAAiB,CAAC,EAAE,CAAClytB,SAASiytB,KAAgB,CAAC,GAAG7yvB,EAAW,CAAC,IAAIs+iB,EAAUz2jB,EAAgB,QAAEmY,WAAW,SAAShsT,EAAMygF,GAAK,OAAOozN,EAAgB,QAAEl5T,cAAc+jkC,EAAar39B,EAAcA,EAAc,CAAC,EAAErnF,GAAO,CAAC,EAAE,CAAC2+iC,SAASl+9B,IAAM,GAA+I,OAA5I6pxB,EAAUr0sB,YAAY,gBAAgBr6L,OAAO6ilC,EAAuB,MAAK,EAAGM,EAA+B,SAAGz0M,EAAUk0M,GAA2Bl0M,CAAS,CAAmW,OAAlWo0M,EAAazo5B,YAAY,gBAAgBr6L,OAAO6ilC,EAAuB,KAAKC,EAAap33B,UAAU,CAACq33B,SAAS1jgB,EAAoB,QAAE93d,UAAU,CAAC83d,EAAoB,QAAE34e,KAAK24e,EAAoB,QAAE73d,MAAM,CAAC3/G,QAAQw3kB,EAAoB,QAAEn4d,SAAS479B,EAAaz33B,aAAa,CAAC033B,cAASj6kC,IAAW,EAAGq6kC,EAA+B,SAAGL,EAAaF,GAA2BE,CAAY,CAAC,EAAvsK,IAAI7qwB,EAA2xB,SAAiC3zT,EAAIqzjB,GAAa,GAAiBrzjB,GAAKA,EAAIiwE,WAAY,OAAOjwE,EAAI,GAAS,OAANA,GAA2B,WAAfymG,EAAQzmG,IAA8B,mBAANA,EAAkB,MAAM,CAAC,QAAUA,GAAK,IAAIia,EAAMq5iB,EAAyBD,GAAa,GAAGp5iB,GAAOA,EAAM54B,IAAI2e,GAAM,OAAOia,EAAM14B,IAAIye,GAAK,IAAIm3G,EAAO,CAAC,EAAMo8c,EAAsB/7kB,OAAOwY,gBAAgBxY,OAAOyrC,yBAAyB,IAAI,IAAI/qC,KAAO8nB,EAAK,GAAS,YAAN9nB,GAAiBV,OAAOsW,UAAUxU,eAAeyU,KAAKiS,EAAI9nB,GAAK,CAAC,IAAIkhH,EAAKm6d,EAAsB/7kB,OAAOyrC,yBAAyBjjB,EAAI9nB,GAAK,KAAQkhH,IAAOA,EAAK73G,KAAK63G,EAAK33G,KAAMjK,OAAOwY,eAAemnH,EAAOj/H,EAAIkhH,GAAW+d,EAAOj/H,GAAK8nB,EAAI9nB,EAAK,CAAwD,OAAtDi/H,EAAgB,QAAEn3G,EAAOia,GAAOA,EAAMx4B,IAAIue,EAAIm3G,GAAeA,CAAM,CAAt9Cq8c,CAAwB,EAAQ,QAAcqrgB,EAAsBh59B,EAAuB,EAAQ,OAAgCk1d,EAAWl1d,EAAuB,EAAQ,OAAmB8yf,EAAsB9yf,EAAuB,EAAQ,QAA+B6yf,EAAiB7yf,EAAuB,EAAQ,QAA0BI,EAAU,CAAC,cAAcC,EAAW,CAAC,YAAY,SAASL,EAAuB7lG,GAAK,OAAOA,GAAKA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,EAAI,CAAC,SAASszjB,EAAyBD,GAAa,GAAoB,mBAAV52f,QAAqB,OAAO,KAAK,IAAIg3f,EAAkB,IAAIh3f,QAAYi3f,EAAiB,IAAIj3f,QAAQ,OAAO62f,EAAyB,SAAkCD,GAAa,OAAOA,EAAYK,EAAiBD,CAAiB,GAAGJ,EAAY,CAAosB,SAAS/viB,EAAQ0V,EAAOiuE,GAAgB,IAAIlvH,EAAKP,OAAOO,KAAKihD,GAAQ,GAAGxhD,OAAOo4F,sBAAsB,CAAC,IAAI2xB,EAAQ/pH,OAAOo4F,sBAAsB52C,GAAQiuE,IAAiB1F,EAAQA,EAAQ5iH,OAAO,SAASuoH,GAAK,OAAO1vH,OAAOyrC,yBAAyB+V,EAAOkuE,GAAK9tF,UAAU,IAAIrhC,EAAKyJ,KAAKgN,MAAMzW,EAAKwpH,EAAQ,CAAC,OAAOxpH,CAAI,CAAC,SAASovH,EAAc1rH,GAAQ,IAAI,IAAI1I,EAAE,EAAEA,EAAE8O,UAAUC,OAAO/O,IAAI,CAAC,IAAIksB,EAAO,MAAMpd,UAAU9O,GAAG8O,UAAU9O,GAAG,CAAC,EAAEA,EAAE,EAAEuwC,EAAQ9rC,OAAOynB,IAAQ,GAAIvf,QAAQ,SAASxH,GAAKkvH,EAAgB3rH,EAAOvD,EAAI+mB,EAAO/mB,GAAK,GAAGV,OAAO6vH,0BAA0B7vH,OAAO0hC,iBAAiBz9B,EAAOjE,OAAO6vH,0BAA0BpoG,IAASqkB,EAAQ9rC,OAAOynB,IAASvf,QAAQ,SAASxH,GAAKV,OAAOwY,eAAevU,EAAOvD,EAAIV,OAAOyrC,yBAAyBhkB,EAAO/mB,GAAK,EAAE,CAAC,OAAOuD,CAAM,CAAC,SAAS2rH,EAAgBpnG,EAAI9nB,EAAI7E,GAAuI,OAA7H6E,KAAO8nB,EAAKxoB,OAAOwY,eAAegQ,EAAI9nB,EAAI,CAAC7E,MAAMA,EAAM+lC,YAAW,EAAKuL,cAAa,EAAKxL,UAAS,IAAYnZ,EAAI9nB,GAAK7E,EAAa2sB,CAAG,CAAC,SAASomG,EAAyBnnG,EAAOonG,GAAU,GAAW,MAARpnG,EAAa,MAAM,CAAC,EAAE,IAA8D/mB,EAAInF,EAA9D0I,EAA0W,SAAuCwjB,EAAOonG,GAAU,GAAW,MAARpnG,EAAa,MAAM,CAAC,EAAE,IAAqD/mB,EAAInF,EAArD0I,EAAO,CAAC,EAAM6qH,EAAW9uH,OAAOO,KAAKknB,GAAkB,IAAIlsB,EAAE,EAAEA,EAAEuzH,EAAWxkH,OAAO/O,IAAKmF,EAAIouH,EAAWvzH,GAAMszH,EAASpwH,QAAQiC,IAAM,IAAWuD,EAAOvD,GAAK+mB,EAAO/mB,IAAK,OAAOuD,CAAM,CAA5mB8qH,CAA8BtnG,EAAOonG,GAAoB,GAAG7uH,OAAOo4F,sBAAsB,CAAC,IAAI42B,EAAiBhvH,OAAOo4F,sBAAsB3wE,GAAQ,IAAIlsB,EAAE,EAAEA,EAAEyzH,EAAiB1kH,OAAO/O,IAAKmF,EAAIsuH,EAAiBzzH,GAAMszH,EAASpwH,QAAQiC,IAAM,GAAeV,OAAOsW,UAAU+hF,qBAAqB9hF,KAAKkR,EAAO/mB,KAAcuD,EAAOvD,GAAK+mB,EAAO/mB,GAAK,CAAC,OAAOuD,CAAM,C,+BCExuG,IAAI27F,EAAI,EAAQ,OACZhuC,EAAO,EAAQ,OAKnBguC,EAAE,CAAE37F,OAAQ,WAAYm3B,OAAO,EAAM27E,OAAQ4K,SAAS/vD,OAASA,GAAQ,CACrEA,KAAMA,G,+BCTO,SAASk4M,EAAU4nQ,GAChC,GAAoB,OAAhBA,IAAwC,IAAhBA,IAAwC,IAAhBA,EAClD,OAAOl2gB,IAET,IAAI29C,EAAS9yB,OAAOqrf,GACpB,OAAIz1gB,MAAMk9C,GACDA,EAEFA,EAAS,EAAIz9C,KAAKsjE,KAAK7lB,GAAUz9C,KAAKQ,MAAMi9C,EACrD,C,+CCTe,SAASinE,EAAS5jH,EAASwjH,GACxC,OAAIxjH,EAAQqjH,YAAoBG,GAAaxjH,EAAQqjH,UAAUniH,SAASsiH,IACkC,KAAlG,KAAOxjH,EAAQwjH,UAAUM,SAAW9jH,EAAQwjH,WAAa,KAAKvhH,QAAQ,IAAMuhH,EAAY,IAClG,C,0FCUA,SCHwB6yhB,EDCM,ICArB,SAAS1/a,EAAY2C,GAC1B,GAAkB,MAAd3C,EACF,OAAOA,EAET,KAAK,EAAAsO,EAAA,GAAYtO,GACf,OAAO0/a,EAAS1/a,EAAY2C,GAM9B,IAJA,IAAIxrN,EAAS6oN,EAAW7oN,OACpBoC,GAA8B,EAC9BqwO,EAAW/8O,OAAOmzN,KAEUzmN,EAAQpC,IACa,IAA/CwrN,EAASinB,EAASrwO,GAAQA,EAAOqwO,KAIvC,OAAO5pB,CACT,GAlBF,IAAwB0/a,C,+BCTxB,IAAIjziB,EAAI,EAAQ,OACZolI,EAAa,EAAQ,OAKzBplI,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,OAJN,EAAQ,MAIMkuH,CAAuB,UAAY,CAC5E7+F,MAAO,WACL,OAAO4+F,EAAW9uN,KAAM,KAAM,GAAI,GACpC,G,oDCTEmpB,E,SAAuB,cAAoB,MAC/CA,EAAQk/J,YAAc,cACtB,S,yBCMQ,SAAWxnM,GAAU,aAIzB,IAAIuwlC,EACI,mGAAmGlwlC,MAC/F,KAERmwlC,EACI,qGAAqGnwlC,MACjG,KAERuzU,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASriG,EAAOvxN,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,CAC3D,CACA,SAASotB,EAAUgV,EAAQw+E,EAAej3H,GACtC,IAAI2I,EAAS8vC,EAAS,IACtB,OAAQz4C,GACJ,IAAK,KACD,OAAO2I,GAAUi/N,EAAOnvL,GAAU,UAAY,UAClD,IAAK,IACD,OAAOw+E,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOtuH,GAAUi/N,EAAOnvL,GAAU,SAAW,SACjD,IAAK,IACD,OAAOw+E,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOtuH,GAAUi/N,EAAOnvL,GAAU,UAAY,UAClD,IAAK,KACD,OAAO9vC,GAAUi/N,EAAOnvL,GAAU,WAAa,WACnD,IAAK,KACD,OAAO9vC,GAAUi/N,EAAOnvL,GAAU,WAAa,YACnD,IAAK,KACD,OAAO9vC,GAAUi/N,EAAOnvL,GAAU,OAAS,OAEvD,CAESpiD,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,SAAU4u2B,EAAgBrxzB,GAC9B,OAAKqxzB,EAEM,SAAS3t2B,KAAKs8C,GACd6yiC,EAAiBxhP,EAAetywB,SAEhC6z/B,EAAiBvhP,EAAetywB,SAJhC6z/B,CAMf,EACAjwlC,YAAa,kDAAkDD,MAAM,KACrEuzU,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAClBrzU,SACI,6DAA6DF,MAAM,KACvEG,cAAe,2BAA2BH,MAAM,KAChDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQsd,KAAKs9E,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,kBAEnB,EACA36F,QAAS,iBACTC,SAAU,WACN,OAAQod,KAAKs9E,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,yBAEnB,EACAz6F,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,eACHC,GAAI+qC,EACJ9qC,EAAG8qC,EACH7qC,GAAI6qC,EACJ5qC,EAAG4qC,EACH3qC,GAAI2qC,EACJ1qC,EAAG,UACHC,GAAI,SACJo2B,EAAG,UACHi/H,GAAI5qH,EACJxqC,EAAG,UACHC,GAAIuqC,EACJtqC,EAAG,MACHC,GAAIqqC,GAER/pC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhJyCC,CAAQ,EAAQ,O,+BCH3C,SAAS+slC,EAAyBz+9B,EAAK4B,GAEN,OAAO5B,CAOvD,C,0ECXA,IAAInpB,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtBtwF,EAAU,EAAQ,OAElBwhkC,EAAgBlx+B,EAAY,GAAGvvF,SAC/B5uB,EAAO,CAAC,EAAG,GAMfwnG,EAAE,CAAE37F,OAAQ,QAASm3B,OAAO,EAAM27E,OAAQtgG,OAAOre,KAAUqe,OAAOre,EAAK4uB,YAAc,CACnFA,QAAS,WAGP,OADIf,EAAQ/P,QAAOA,KAAK5L,OAAS4L,KAAK5L,QAC/Bm9kC,EAAcvxkC,KACvB,G,+BCfFvb,EAAQ89F,YAAa,EAErB,IAAImO,EAAW5mG,OAAOC,QAAU,SAAUgE,GAAU,IAAK,IAAI1I,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAAE,IAAIksB,EAASpd,UAAU9O,GAAI,IAAK,IAAImF,KAAO+mB,EAAcznB,OAAOsW,UAAUxU,eAAeyU,KAAKkR,EAAQ/mB,KAAQuD,EAAOvD,GAAO+mB,EAAO/mB,GAAU,CAAE,OAAOuD,CAAQ,EAE3Pk4U,EAAS,EAAQ,OAEjBjuN,EAAUG,EAAuB8tN,GAIjCC,EAAc/tN,EAFD,EAAQ,OAMrByuN,EAASzuN,EAFD,EAAQ,QAMhB8uN,EAAiB9uN,EAFD,EAAQ,QAI5B,SAASA,EAAuB7lG,GAAO,OAAOA,GAAOA,EAAIiwE,WAAajwE,EAAM,CAAEkwE,QAASlwE,EAAO,CAW9F,IAAIk/jC,EAAY,CACd9qlC,MAAO,OACPE,OAAQ,OACRuD,KAAM,EACNH,IAAK,EACL+kC,OAAQ,EACRv+B,QAAS,EACT1H,SAAU,YAGR4gC,EAAQ,CACVhjC,MAAO,EACPE,OAAQ,EACRuD,KAAM,EACNH,IAAK,EACLg/B,gBAAiB,cACjBlgC,SAAU,YAGR2olC,EAAmB,SAAU1pwB,GAI/B,SAAS0pwB,EAAiBr/iC,IAhC5B,SAAyB/8B,EAAUsyG,GAAe,KAAMtyG,aAAoBsyG,GAAgB,MAAM,IAAIrnG,UAAU,oCAAwC,CAiCpJwnG,CAAgB9nG,KAAMyxkC,GAEtB,IAAIvtkC,EAjCR,SAAoCo+E,EAAMjiF,GAAQ,IAAKiiF,EAAQ,MAAM,IAAIwkK,eAAe,6DAAgE,OAAOzmP,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BiiF,EAAPjiF,CAAa,CAiC/N2nU,CAA2BhoU,KAAM+nU,EAAW1nU,KAAKL,KAAMoyB,IA4JnE,OA1JAluB,EAAMooc,UAAY,WAChB,MAAO,CACL90V,SAAUtzG,EAAMkuB,MAAMm4S,WAAWjzN,cACjCo69B,cAAextkC,EAAMkuB,MAAMm4S,WAAW81oB,mBAE1C,EAEAn88B,EAAMytkC,iBAAmB,WACvB,GAAKztkC,EAAM0tkC,iBAAX,CAIA,IAAIC,GAAkB3tkC,EAAMvU,MAAM6nH,UAAY,IAAIpjH,OAC9CzE,EAAQuU,EAAMooc,YAElBpoc,EAAMxE,SAAS/P,EAAO,WACpB,OAAQA,EAAM6nH,UAAY,IAAIpjH,SAAWy9kC,GAAkB3tkC,EAAM4tkC,uBACnE,EAPA,CAQF,EAEA5tkC,EAAMylU,cAAgB,WACpB,GAAIzlU,EAAMkuB,MAAMs3S,cACVxlU,EAAM6tkC,iBAAkB,CAC1B,IAAIniwB,EAAW1rU,EAAM8tkC,UACjBniwB,EAAa3rU,EAAM6tkC,iBAEvB7tkC,EAAMkuB,MAAMs3S,aAAakG,EAAUC,EACrC,CAEJ,EAEA3rU,EAAM2lU,kBAAoB,WACxB,GAAI3lU,EAAMkuB,MAAMw3S,kBACV1lU,EAAM6tkC,iBAAkB,CAC1B,IAAIniwB,EAAW1rU,EAAM8tkC,UACjBniwB,EAAa3rU,EAAM6tkC,iBAEvB7tkC,EAAMkuB,MAAMw3S,iBAAiBgG,EAAUC,EACzC,CAEJ,EAEA3rU,EAAM6lU,mBAAqB,SAAU6F,EAAUC,GACxC3rU,EAAM0tkC,mBAIP1tkC,EAAMkuB,MAAM03S,mBACd5lU,EAAMkuB,MAAM03S,kBAAkB8F,EAAUC,GAG1C3rU,EAAM6tkC,iBAAmBliwB,EACzB3rU,EAAM8tkC,UAAYpiwB,EAClB1rU,EAAMxE,SAAS,CAAEkwU,SAAUA,IAC7B,EAEA1rU,EAAM+lU,mBAAqB,WACzB,GAAK/lU,EAAM0tkC,iBAAX,CAIA,IAAIhiwB,EAAW1rU,EAAM8tkC,UACjBniwB,EAAa3rU,EAAM6tkC,iBAEnBniwB,UACE1rU,EAAMkuB,MAAM43S,mBACd9lU,EAAMkuB,MAAM43S,kBAAkB4F,EAAUC,GAG1C3rU,EAAM8tkC,UAAY,KAClB9tkC,EAAM6tkC,iBAAmB,KACzB7tkC,EAAMxE,SAAS,CAAEkwU,SAAU,OAZ7B,CAcF,EAEA1rU,EAAM+tkC,cAAgB,SAAUtslC,GACzBA,GACHue,EAAM+lU,qBAGR/lU,EAAMgukC,YAAcvslC,CACtB,EAEAue,EAAM4tkC,sBAAwB,WACxB5tkC,EAAMgukC,aACRhukC,EAAMiukC,0BAEV,EAEAjukC,EAAMiukC,yBAA2B,WAC/B,GAAKjukC,EAAM0tkC,iBAAX,CAIA,IAAI7nN,EAAK7l3B,EAAMkuB,MAAMm4S,WAAWouf,mBAEhC,GAAIoxD,EAAI,CACN,IAAI1kY,EAAY,GACZr2K,EAAgB9qU,EAAMkuB,MAAMi4S,mBAoBhC,GAlBAryN,EAAQx1B,QAAQ66P,SAASrrV,QAAQkS,EAAMvU,MAAM6nH,SAAU,SAAU9vH,EAAO0qlC,GACtE,GAAK1qlC,SAEsBoP,IAAvBpP,EAAM0qC,MAAMu1S,aAA4C7wU,IAApBpP,EAAM0qC,MAAMuvG,UAAyC7qI,IAApBpP,EAAM0qC,MAAMm3L,KAArF,CAIA,IAAIigZ,OAAyB1ymB,IAAdpP,EAAM8C,KAAmC,OAAd9C,EAAM8C,IAAe9C,EAAM8C,IAAM4nlC,EACvEpq3B,EAAO9jN,EAAMkuB,MAAMg4S,gBAAgBlmU,EAAM0tkC,iBAAiBpoe,GAAWugR,EAAIri4B,EAAM0qC,OAC/E41L,EAAOgnH,GACTq2K,EAAUvxf,KAAK,CACbtJ,IAAKg/mB,EACLxhZ,KAAMA,EACN51L,MAAO1qC,EAAM0qC,OARjB,CAWF,GAEIizd,EAAUjxf,OAAQ,CACpBixf,EAAUjyf,KAAK,SAAUwG,EAAGC,GAC1B,OAAOD,EAAEouN,KAAOnuN,EAAEmuN,IACpB,GACA,IAAI4nH,EAAWy1K,EAAU,GAAG76f,IACxBqlV,EAAaw1K,EAAU,GAAGjzd,MAE1BluB,EAAM8tkC,YAAcpiwB,IACtB1rU,EAAM+lU,qBAEN/lU,EAAM6lU,mBAAmB6F,EAAUC,GAEvC,MACE3rU,EAAM+lU,oBAEV,MACE/lU,EAAM+lU,oBA1CR,CA4CF,EAEA/lU,EAAMmukC,eAAiB,SAAU7nlC,GAC/B,IAAIg/mB,EAAWh/mB,EACf,OAAO0Z,EAAM0tkC,iBAAiBpoe,EAChC,EAEAtlmB,EAAMkuB,MAAMm4S,WAAW5/N,GAAG,aAAczmG,EAAMytkC,kBAC9CztkC,EAAMkuB,MAAMm4S,WAAW5/N,GAAG,4BAA6BzmG,EAAM4tkC,uBAC7D5tkC,EAAMkuB,MAAMm4S,WAAW5/N,GAAG,YAAazmG,EAAMylU,eAC7CzlU,EAAMkuB,MAAMm4S,WAAW5/N,GAAG,YAAazmG,EAAM2lU,mBAE7C3lU,EAAM0tkC,iBAAmB,CAAC,EAC1B1tkC,EAAM8tkC,UAAY,KAClB9tkC,EAAM6tkC,iBAAmB,KACzB7tkC,EAAMgukC,aAAc,EAEpBhukC,EAAMvU,MAAQ+gG,EAAS,CAAC,EAAGxsF,EAAMooc,YAAa,CAAE18H,SAAU,OACnD1rU,CACT,CA6FA,OAzRF,SAAmBgpG,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7sG,UAAU,kEAAoE6sG,GAAeD,EAAS9sG,UAAYtW,OAAO4W,OAAOysG,GAAcA,EAAW/sG,UAAW,CAAEK,YAAa,CAAE9a,MAAOunH,EAAUxhF,YAAY,EAAOD,UAAU,EAAMwL,cAAc,KAAek2E,IAAYrjH,OAAOmW,eAAiBnW,OAAOmW,eAAeitG,EAAUC,GAAcD,EAAShtG,UAAYitG,EAAY,CAyB3eC,CAAUqk+B,EAAkB1pwB,GAsK5B0pwB,EAAiBrxkC,UAAUgzU,sBAAwB,SAA+BP,EAAWrzU,GAC3F,OAAgC,IAA5BQ,KAAKoyB,MAAMq3S,eACL,EAAIxC,EAAezkP,SAASxiF,KAAKoyB,MAAOygT,MAAe,EAAI5L,EAAezkP,UAAS,EAAIokP,EAAOpkP,SAASxiF,KAAKrQ,MAAO,CAAC,cAAc,EAAIi3U,EAAOpkP,SAAShjF,EAAW,CAAC,gBAGpK,EAAIynU,EAAezkP,SAASxiF,KAAKoyB,MAAOygT,MAAe,EAAI5L,EAAezkP,SAASxiF,KAAKrQ,MAAO6P,EACzG,EAEAiykC,EAAiBrxkC,UAAUmzU,qBAAuB,WAChDvzU,KAAKoyB,MAAMm4S,WAAW3lR,eAAe,aAAc5kD,KAAK2xkC,kBACxD3xkC,KAAKoyB,MAAMm4S,WAAW3lR,eAAe,4BAA6B5kD,KAAK8xkC,uBACvE9xkC,KAAKoyB,MAAMm4S,WAAW3lR,eAAe,YAAa5kD,KAAK2pU,eACvD3pU,KAAKoyB,MAAMm4S,WAAW3lR,eAAe,YAAa5kD,KAAK6pU,mBAEvD7pU,KAAK4xkC,iBAAmB,IAC1B,EAEAH,EAAiBrxkC,UAAUi+D,OAAS,WAClC,IAAIkvC,EAASvtG,KAETsykC,EAAmBtykC,KAAKoyB,MAAM1I,OAAS8njC,EAC3CxxkC,KAAK4xkC,iBAAmB,CAAC,EAEzB,IAAI5+nB,EAAUh7V,EAAQx1B,QAAQ66P,SAAStqV,IAAIiN,KAAKrQ,MAAM6nH,SAAU,SAAU9vH,EAAO0qlC,GAC/E,GAAK1qlC,EAAL,CACA,QAA2BoP,IAAvBpP,EAAM0qC,MAAMu1S,aAA4C7wU,IAApBpP,EAAM0qC,MAAMuvG,UAAyC7qI,IAApBpP,EAAM0qC,MAAMm3L,IACnF,OAAOvxG,EAAQx1B,QAAQk5P,aAAah0V,EAAO,CACzC6qlC,YAAahl+B,EAAOn7E,MAAM83S,WAC1BsowB,cAAejl+B,EAAO0k+B,cACtBQ,WAAYll+B,EAAOn7E,MAAM8lF,YAI7B,IAAIyvN,OAAgC7wU,IAAvBpP,EAAM0qC,MAAMu1S,OAAuBjgV,EAAM0qC,MAAMu1S,OAAS,CAAEhmM,IAAKj6I,EAAM0qC,MAAMuvG,IAAK4nF,IAAK7hO,EAAM0qC,MAAMm3L,KAE1GlwL,EAAKk0E,EAAOn7E,MAAM+3S,eAAiB58N,EAAOn7E,MAAM83S,WAAWm7e,qBAAqB19e,GAAUp6N,EAAOn7E,MAAM83S,WAAWg7e,wBAAwBv9e,GAE1I+qwB,EAAa,CACfvolC,KAAMkvC,EAAG9yC,EACTyD,IAAKqvC,EAAG11C,GAMV,QAA6BmT,IAAzBpP,EAAM0qC,MAAMugjC,eAAgD77kC,IAAtBpP,EAAM0qC,MAAMwgjC,YAA6C97kC,IAAtBpP,EAAM0qC,MAAMygjC,MAAqB,CAC5G,IAAIF,OAAoC77kC,IAAzBpP,EAAM0qC,MAAMugjC,SAAyBjrlC,EAAM0qC,MAAMugjC,SAAW,CAAEhx8B,IAAKj6I,EAAM0qC,MAAMwgjC,MAAOrp3B,IAAK7hO,EAAM0qC,MAAMygjC,OAElHC,EAAOvl+B,EAAOn7E,MAAM+3S,eAAiB58N,EAAOn7E,MAAM83S,WAAWm7e,qBAAqBstR,GAAYpl+B,EAAOn7E,MAAM83S,WAAWg7e,wBAAwBytR,GAElJD,EAAWhslC,MAAQoslC,EAAKvslC,EAAI8yC,EAAG9yC,EAC/BmslC,EAAW9rlC,OAASkslC,EAAKnvlC,EAAI01C,EAAG11C,CAClC,CAEA,IAAIovlC,EAAcxl+B,EAAOn7E,MAAM83S,WAAWo7e,2BAA2B39e,GAIjE6hS,OAAyB1ymB,IAAdpP,EAAM8C,KAAmC,OAAd9C,EAAM8C,IAAe9C,EAAM8C,IAAM4nlC,EAO3E,OALA7k+B,EAAOqk+B,iBAAiBpoe,GAAY94gB,EAAS,CAC3CnqG,EAAGwslC,EAAYxslC,EACf5C,EAAGovlC,EAAYpvlC,GACdgkV,GAEI3vN,EAAQx1B,QAAQz1E,cACrB,MACA,CACEviB,IAAKg/mB,EACL9/kB,MAAOgnE,EAAS,CAAC,EAAGhnE,EAAOgpjC,GAC3B5o+B,UAAWpiH,EAAM0qC,MAAM4gjC,wBAEzBh79B,EAAQx1B,QAAQk5P,aAAah0V,EAAO,CAClCurlC,OAAQzpe,IAAaj8f,EAAO59G,MAAMigV,SAClCsjwB,eAAgB3l+B,EAAO8k+B,eACvBc,cAAe3pe,EACf+oe,YAAahl+B,EAAOn7E,MAAM83S,WAC1BsowB,cAAejl+B,EAAO0k+B,cACtBQ,WAAYll+B,EAAOn7E,MAAM8lF,YAtDD,CAyD9B,GAEA,OAAOF,EAAQx1B,QAAQz1E,cACrB,MACA,CAAE2c,MAAO4ojC,GACTt/nB,EAEJ,EAEOy+nB,CACT,CAlQuB,CAkQrBxrwB,EAAOt8F,WAET8n2B,EAAiB/33B,UAAY,CAC3BwwH,WAAYhE,EAAY1jP,QAAQ0yB,IAChCxrF,MAAOw8S,EAAY1jP,QAAQ0yB,IAC3Bk1N,gBAAiBlE,EAAY1jP,QAAQkS,KACrC61O,WAAYrE,EAAY1jP,QAAQ0yB,IAChCw0N,aAAcxD,EAAY1jP,QAAQkS,KAClCk1O,iBAAkB1D,EAAY1jP,QAAQkS,KACtCs1O,kBAAmB9D,EAAY1jP,QAAQkS,KACvCo1O,kBAAmB5D,EAAY1jP,QAAQkS,KACvC21O,iBAAkBnE,EAAY1jP,QAAQkS,KACtCy1O,eAAgBjE,EAAY1jP,QAAQwyB,KACpCkD,UAAWguN,EAAY1jP,QAAQwyB,MAEjCy89B,EAAiBp43B,aAAe,CAC9B8wH,gBAAgB,EAChBjyN,WAAW,GAEbzzH,EAAA,QAAkBgtlC,C,kNCrUd,EAHc3nlC,OAAOsW,UAGQxU,e,eCHjC,IAAI8/8B,EAAU,O,aCEVlp1B,EAAc,IAAS,IAAOpiH,eAAYtJ,EAC1C66a,EAAgBnvT,EAAcA,EAAYm0F,aAAU7/M,E,cCwExD,QApCA,SAAwBw0C,EAAQ02C,EAAK+e,GACnC,ID5BmBkU,EDHAq6G,EACfn8N,EE8BA8rN,EAAO3zK,EAAO7qC,YAClB,OAAQuhF,GACN,IA3BiB,uBA4Bf,OAAO,OAAiB12C,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAI2zK,GAAM3zK,GAEnB,IAjCc,oBAkCZ,OCzCN,SAAuB4+7B,EAAUnp4B,GAC/B,IAAIp8G,EAASo8G,GAAS,OAAiBmp4B,EAASvl/B,QAAUul/B,EAASvl/B,OACnE,OAAO,IAAIul/B,EAASzp+B,YAAY9b,EAAQul/B,EAASlp4B,WAAYkp4B,EAAS78yB,WACxE,CDsCa,CAAc/hJ,EAAQy1D,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAO,OAAgBz1D,EAAQy1D,GAEjC,IAjDS,eA2DT,IAxDS,eAyDP,OAAO,IAAIk+G,EARb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAK3zK,GAElB,IAtDY,kBAuDV,OFvDAn4C,EAAS,IADMm8N,EEwDIhkL,GFvDC7qC,YAAY6uN,EAAO/9M,OAAQm67B,EAAQrm7B,KAAKiqM,KACzD5tD,UAAY4tD,EAAO5tD,UACnBvuK,EE0DL,IAzDY,kBA0DV,OD3De8hH,EC2DI3pE,ED1DhBqmY,EAAgB7nb,OAAO6nb,EAActxa,KAAK40G,IAAW,CAAC,EC4D/D,E,0EErEIop8B,EAAY,KAAY,IAASl1zB,MAqBrC,QAFYk1zB,GAAY,OAAUA,GCXlC,SAAmB14jC,GACjB,OAAO,EAAA4iO,EAAA,GAAa5iO,IAVT,iBAUmB,OAAOA,EACvC,E,eCVA,IAAIk3oB,EAAY,KAAY,IAASzkgB,MAqBrC,QAFYykgB,GAAY,OAAUA,GCXlC,SAAmBl3oB,GACjB,OAAO,EAAA4iO,EAAA,GAAa5iO,IAVT,iBAUmB,OAAOA,EACvC,ECSA,IAKI0jQ,EAAU,qBAKVC,EAAU,oBAIVC,EAAY,kBAoBZC,EAAgB,CAAC,EACrBA,EAAcH,GAAWG,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EAAcD,GACzCC,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EAAcF,GACxCE,EA5BiB,qBA4BW,EA8F5B,QA5EA,SAASC,EAAU9jQ,EAAO+jQ,EAAStwB,EAAY5uO,EAAK8gD,EAAQ/E,GAC1D,IAAIpzC,EACA4tG,EAnEgB,EAmEP2oJ,EACTC,EAnEgB,EAmEPD,EACTE,EAnEmB,EAmEVF,EAKb,GAHItwB,IACFjmO,EAASm4C,EAAS8tL,EAAWzzO,EAAO6E,EAAK8gD,EAAQ/E,GAAS6yL,EAAWzzO,SAExDmR,IAAX3D,EACF,OAAOA,EAET,KAAK,EAAA8c,EAAA,GAAStqB,GACZ,OAAOA,EAET,IAAIkkQ,GAAQ,EAAA95O,EAAA,GAAQpqB,GACpB,GAAIkkQ,GAEF,GADA12P,ET7FJ,SAAwBkhB,GACtB,IAAIjgB,EAASigB,EAAMjgB,OACfjB,EAAS,IAAIkhB,EAAM5T,YAAYrM,GAOnC,OAJIA,GAA6B,iBAAZigB,EAAM,IAAkB,EAAehU,KAAKgU,EAAO,WACtElhB,EAAOqD,MAAQ6d,EAAM7d,MACrBrD,EAAOlR,MAAQoyB,EAAMpyB,OAEhBkR,CACT,CSmFa,CAAexN,IACnBo7G,EACH,OAAO,OAAUp7G,EAAOwN,OAErB,CACL,IAAI6uF,GAAM,OAAOr8F,GACbmkQ,EAAS9nK,GAAOsnK,GA7EX,8BA6EsBtnK,EAE/B,IAAI,EAAA80C,EAAA,GAASnxI,GACX,OAAO,OAAYA,EAAOo7G,GAE5B,GAAI/e,GAAOunK,GAAavnK,GAAOqnK,GAAYS,IAAWx+M,GAEpD,GADAn4C,EAAUw2P,GAAUG,EAAU,CAAC,GAAI,OAAgBnkQ,IAC9Co7G,EACH,OAAO4oJ,EC7Gf,SAAuBp4O,EAAQ+5B,GAC7B,OAAO,OAAW/5B,GAAQ,OAAaA,GAAS+5B,EAClD,CD4GY,CAAc3lD,EE7G1B,SAAsB2lD,EAAQ/5B,GAC5B,OAAO+5B,IAAU,OAAW/5B,GAAQ,EAAA63O,EAAA,GAAO73O,GAAS+5B,EACtD,CF2GiC,CAAan4C,EAAQxN,IG9GtD,SAAqB4rB,EAAQ+5B,GAC3B,OAAO,OAAW/5B,GAAQ,OAAWA,GAAS+5B,EAChD,CH6GY,CAAY3lD,EI9GxB,SAAoB2lD,EAAQ/5B,GAC1B,OAAO+5B,IAAU,OAAW/5B,GAAQ,EAAAlnB,EAAA,GAAKknB,GAAS+5B,EACpD,CJ4G+B,CAAWn4C,EAAQxN,QAEvC,CACL,IAAK6jQ,EAAcxnK,GACjB,OAAO12C,EAAS3lD,EAAQ,CAAC,EAE3BwN,EAAS,EAAexN,EAAOq8F,EAAK+e,EACtC,CACF,CAEAx6D,IAAUA,EAAQ,IAAI,KACtB,IAAIK,EAAUL,EAAM1yC,IAAIlO,GACxB,GAAIihD,EACF,OAAOA,EAETL,EAAMxyC,IAAIpO,EAAOwN,GAEb,EAAMxN,GACRA,EAAMqM,QAAQ,SAAS+3P,GACrB52P,EAAOG,IAAIm2P,EAAUM,EAAUL,EAAStwB,EAAY2wB,EAAUpkQ,EAAO4gD,GACvE,GACS,EAAM5gD,IACfA,EAAMqM,QAAQ,SAAS+3P,EAAUv/P,GAC/B2I,EAAOY,IAAIvJ,EAAKi/P,EAAUM,EAAUL,EAAStwB,EAAY5uO,EAAK7E,EAAO4gD,GACvE,GAGF,IAAIw4K,EAAW6qC,EACVD,EAAS,IAAe,IACxBA,EAASP,EAAA,EAAS/+P,EAAA,EAEnB+nC,EAAQy3N,OAAQ/yP,EAAYioN,EAASp5N,GASzC,OARA,OAAUysC,GAASzsC,EAAO,SAASokQ,EAAUv/P,GACvC4nC,IAEF23N,EAAWpkQ,EADX6E,EAAMu/P,KAIR,OAAY52P,EAAQ3I,EAAKi/P,EAAUM,EAAUL,EAAStwB,EAAY5uO,EAAK7E,EAAO4gD,GAChF,GACOpzC,CACT,C,kBKnKA,IAAI6hG,EAAQ,EAAQ,OAChB/qF,EAAQ,EAAQ,OAEpBxlB,EAAQmt2B,OAAS,WAEf,IADA,IAAIz+1B,EAAS,GACJ9N,EAAI,EAAGA,EAAI8O,UAAUC,SAAU/O,EAAG,CAKzC,IAJA,IAAI+tlC,GAAa,EACb9slC,EAAa6N,UAAU9O,GAGlB2gC,EAAI,EAAGA,EAAI7yB,EAAOiB,UACzBg/kC,EAAajglC,EAAO6yB,KAAO1/B,KADQ0/B,GAMhCotjC,GACHjglC,EAAOW,KAAKxN,EAEhB,CACA,OAAO6M,CACT,EAEA1O,EAAQ4ulC,QAAUr++B,EAAM8E,QAExBr1G,EAAQ6ulC,WAAa,WACnB,OAAOh/kC,MAAM8L,UAAUtF,MAAMuF,KAAKlM,UAAW,EAC/C,EAEA1P,EAAQ8ulC,UAAY,SAAUpqjC,EAASh6B,GACrC,IAAKgF,UAAUC,OACb,OAAO6V,EAAMA,MAEf,IAGE,IAFA,IAAI4+D,EAAO15E,EAAUjO,MAAM,KACvBiS,EAASg2B,EACJ9jC,EAAI,EAAGA,EAAIwjF,EAAKz0E,SAAU/O,EAAG,CACpC,IAAIic,EAAOunE,EAAKxjF,GAChB,GAA8B,MAA1Bic,EAAKA,EAAKlN,OAAS,GAAY,CACjC,IAAI6iL,EAAU31K,EAAK/Y,QAAQ,KACvBiO,EAAQ8K,EAAK6nF,UAAU8tF,EAAU,EAAG31K,EAAKlN,OAAS,GACtDjB,EAASA,EAAOmO,EAAK6nF,UAAU,EAAG8tF,IAAUzgL,EAC9C,MACErD,EAASA,EAAOmO,EAEpB,CACA,OAAOnO,CACT,CAAE,MAAO8W,GAAQ,CACnB,EAEAxlB,EAAQ+ulC,KAAO,SAAUn/jC,EAAOm7O,GAC9B,OAAOn7O,EAAMnW,KAAKsxP,EACpB,EAEA/qQ,EAAQgvlC,QAAU,WAEhB,OADsBz++B,EAAM8E,QAAQ3lG,WACblD,OAAO,SAAUssC,GACtC,MAAqB,iBAAPA,CAChB,EACF,C,yBCzDA,IAAIm2iC,EAAiC,iBAAZjrlC,UAAwBA,SAASq9C,IAK1D47C,EAAOj9F,aAAgC,IAAfivlC,QAA8C58kC,IAAhB48kC,EAA4B,SAAU/x/B,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAa+x/B,CACvD,EAAI,SAAU/x/B,GACZ,MAA0B,mBAAZA,CAChB,C,cCNA,SAAUx6F,EAAQ+uI,GAAU,aAE5B,IAAIlkI,EACA+d,EACAwzF,EACAmyJ,EAyoBJ,SAASi+0B,IACP,MAAO,CAAC,WAAY,SAASzg0B,GAC3B,MAAO,CACLp+I,SAAU,KACVs9I,WAAY,UACZ99K,SAAU,EACVyjL,UAAU,EACVtwK,QAAS,eACT2hB,KAAM,SAASzgG,EAAOriC,EAASyiI,EAAO6q9B,EAAgBv1zB,GACpD,IAEIjpH,EAmBAyoJ,EAAgBg2xB,EArBhBC,EAAcxtlC,EAAQ,GAGtBytlC,EAAYhr9B,EAAMir9B,WAAajr9B,EAAM3G,KACrC6x9B,EAAalr9B,EAAMmr9B,cAAgBnr9B,EAAMo+L,QACzCgtxB,EAAgB,SAASjgjC,GAC3BkhI,EAAUlhI,EACHnkB,EAAQmkB,GACLA,EACAA,EAAMhzC,MAAM,UAChB,KACN0ylC,EAAeQ,UACjB,EAEIH,GACFE,EAAcxrjC,EAAM2lG,MAAM2l9B,IAC1BtrjC,EAAMg6P,iBAAiBsxzB,EAAYE,IAEnCA,EAAcJ,GAIhBH,EAAe99gC,SAASg+gC,EAAaD,EAAc,CACjD3xlC,KAAM,SAASqR,GACb,OAqCV,SAAkB0pN,EAAYzyN,GAC5B,GAAIyyN,EACF,OAAOltM,EAAQktM,GACTA,EAAW10N,QAAQiC,IAAQ,EAC3ByyN,EAAWrxN,eAAepB,EAEpC,CA3CiBhD,CAAS4tK,EAAS7hK,EAC3B,EACAyzD,OAAQ,WACD62P,GACHx/B,EAAY,SAASvV,EAAK0W,GACxBtM,EAAS5lB,MAAMwb,EAAK,KAAMxiR,GAK1B,IAAI+tlC,GAJJx2xB,EAAiB/0C,GAIeur0B,WAAaT,EAAeU,cAK5Dz2xB,EAAelzM,GAAG,WAAY,WACxBkzM,GAAkBA,EAAew2xB,aAAeA,IAClDT,EAAe589B,WAAW889B,GAC1BD,EAAY5shC,UAEdu4N,EAASxf,UACX,EACF,EAEJ,EACA/4M,OAAQ,WACN,GAAI42P,EAAgB,CAClB,IAAI/0C,EAAM+0C,EACVA,EAAiB,KACjB3qC,EAAS9H,MAAMtC,EACjB,CACF,GAEJ,EAEJ,EASF,CAtdA5yI,EAAQx0C,OAAO,aAAc,GAAI,WAG/B1vF,EAAUkkI,EAAQlkI,QAClB+d,EAAUmmH,EAAQnmH,QAClBwzF,EAAW2yB,EAAQ3yB,SACnBmyJ,EAASx/H,EAAQ5vI,OACnB,GACGysC,KAAK,CAAEu+R,eAAgB,UA0EvB1qM,UAAU,aAAc,CAAC,WAAY,SAASssJ,GAC7C,IAAIqh0B,EAAe,YACfC,EAAiB,cAErB,MAAO,CACL/s+B,QAAS,aACTqtB,SAAU,KACVvtF,WAAY,CAAC,WAAY,SAAU,SAAU,SAAwBwqO,EAAUqM,EAAQpM,GACrF,IAAIrjJ,EAAO3uH,KACPy0kC,EAAY,EACZC,EAAe,EAEnB10kC,KAAKs0kC,YAAc,WAAyB,OAAOI,GAAgB,EAEnE,IACIC,EAAaC,EADb9j5B,EAAW9wL,KAAK8wL,SAAW,CAAC,EAoGhC,SAAS+j5B,EAAoBptlC,EAAQkgL,GAInC,IAHA,IAAIo5sB,EAAWp5sB,EACXmt6B,EAAe,GAEZ/zN,GAAYA,IAAat53B,GAAQ,CACtC,IAAIstlC,EAAUh0N,EAASi0N,gBACvB,GAAID,GAAWA,EAAQ3glC,OACrB,OAAO08L,EAASik5B,GAKdh0N,EAAS52vB,WAAW/1H,SAA8C,IAApC0glC,EAAavslC,QAAQw43B,IACrD+zN,EAAahhlC,KAAKit3B,GAClBA,EAAWA,EAAS52vB,WAAW42vB,EAAS52vB,WAAW/1H,OAAS,IACnD2s3B,EAASx9b,gBAClBw9b,EAAWA,EAASx9b,iBAEpBw9b,EAAWA,EAAS/43B,WACpB8slC,EAAahhlC,KAAKit3B,GAEtB,CACF,CAvHA/g3B,KAAKq+D,OAAS,SAAS4+I,GAGrB033B,GAAc,EACdC,EAHA333B,EAAaA,GAAc,CAAC,EAgB5B,IAVA,IAAIjiH,EAAWi6+B,EAAa72zB,EAAQpM,EAAOkj0B,qBAC5BD,EAAa72zB,EAAQpM,EAAOh3K,UAEvCm6+B,EAAoB,GACpBC,EAAc,CAAC,EACfC,EAAc1m9B,EAAK96E,KACnByhiC,GAAe,EACfC,EAAgB,EAGE,MAAfF,GAAqB,CAC1BE,IACA,IAAI1B,EAAcwB,EAAYjl/B,QAE1Bol/B,GAAc,EACbF,GACHtjlC,EAAQirN,EAAY,SAASt3N,EAAO6E,GAClC,IAAKgrlC,GAAeC,EAAO9vlC,IAAUkulC,EAAY3xlC,KAAKsI,GAAM,CAE1D,GAAI4qlC,EAAY5qlC,GAAM,OACtB4qlC,EAAY5qlC,IAAO,EAEnBgrlC,GAAc,EACd3B,EAAY7shC,QACd,CACF,GAGEwuhC,EAGFF,GAAgBt6+B,EAEhBm6+B,EAAkBrhlC,KAAK+/kC,GAGzBwB,EAAcA,EAAYvtlC,IAC5B,CAEAkK,EAAQmjlC,EAAmB,SAAStB,GAClCA,EAAY5shC,QACd,GAEIkuhC,EAAkB/glC,SAAWmhlC,EAC/Bri0B,EAAS5H,SAASyG,EAAUwi0B,EAAcC,GAE1Cth0B,EAAS5H,SAASyG,EAAUyi0B,EAAgBD,EAEhD,EAEAn2zB,EAAOuE,iBAAiB3Q,EAAO0j0B,YAAc1j0B,EAAY,IAAGrjJ,EAAKtwD,QAGjE0zM,EAASpnK,GAAG,WAAY,WACtB34G,EAAQ8+L,EAAU,SAAS99K,GACzBA,EAAKo9E,QAAQnpC,QACf,EACF,GAEAjnD,KAAKo0kC,SAAW,WACTO,IACHA,GAAc,EACdv2zB,EAAOjnB,WAAW,WACZw90B,GAAeC,GACjBjm9B,EAAKtwD,OAAOu2gC,EAEhB,GAEJ,EAEA50kC,KAAK81D,SAAW,SAAS6xG,EAASks6B,GAChC,IAAI8B,EAAUlB,EAAUztlC,WACxB8pM,EAAS6k5B,GAAW,CAClBvl/B,QAASyj/B,GAyCb,SAA2BpslC,EAAQkgL,EAASn9K,GAC1C,IAAIorlC,EAAc9k5B,EAAStmM,GAC3B,GAAKmkI,EAAK96E,KAEH,CACL,IAAI7vD,EAAQ6wlC,EAAoBptlC,EAAQkgL,GACpC3jL,GACF4xlC,EAAY9tlC,KAAO9D,EAAM8D,KACzB9D,EAAM8D,KAAO8tlC,IAEbA,EAAY9tlC,KAAO6mI,EAAK96E,KACxB86E,EAAK96E,KAAO+hiC,EAEhB,MAVEjn9B,EAAK96E,KAAO+hiC,CAWhB,CArDEC,CAAkB9j0B,EAAS,GAAIpqG,EAASgu6B,GACxChu6B,EAAQqt6B,gBAAkBW,EAC1BlB,IAEA9l9B,EAAKyl9B,UACP,EAEAp0kC,KAAKg3G,WAAa,SAAS2wD,GACzB,IAAIn9K,EAAMm9K,EAAQqt6B,uBACXrt6B,EAAQqt6B,gBA8CjB,SAA2BvtlC,EAAQkgL,EAASn9K,GAC1C,IAAIorlC,EAAc9k5B,EAAStmM,GAEvBxG,EAAQ6wlC,EAAoBptlC,EAAQkgL,GACpC3jL,EACFA,EAAM8D,KAAO8tlC,EAAY9tlC,KAEzB6mI,EAAK96E,KAAO+hiC,EAAY9tlC,IAE5B,CAtDEgulC,CAAkB/j0B,EAAS,GAAIpqG,EAASn9K,UACjCsmM,EAAStmM,GAChBmkI,EAAKyl9B,UACP,CAoDF,IAGF,SAASa,EAAatsjC,EAAO4uO,GAC5B,OAAQh0J,EAASg0J,IAAyB,IAAhBA,EAAKnjQ,QACxBqhlC,EAAO9sjC,EAAM2lG,MAAMipI,GAC3B,CAEA,SAASk+0B,EAAO9tjC,GACd,OAAO47E,EAAS57E,GAAOA,EAAIvzB,SAAWuzB,CACxC,CACF,IAgCCi/F,UAAU,oBACT,CAAC,mBAAoB,YAAa,WAAY,SAASosJ,EAAkBxmJ,EAAWe,GAEpF,MAAO,CACLuH,SAAU,KACVrtB,QAAS,eACT2hB,KAAM,SAASg1J,EAAQ93R,EAASyiI,GAC9B,IAAI1hB,EAAM0hB,EAAMgt9B,mBAAqBht9B,EAAM1hB,IAC3C2rK,EAAiB3rK,GAAKxwG,KAAK,SAAS7N,GAC9Bo1R,EAAOqC,cAEPl9K,EAASv6G,KAAUA,EAAKgV,OAE1Bg4kC,EAAyB1vlC,EAAS+gH,GAGlCkmB,EAASvkI,EAATukI,CAAe6wJ,EAAQ,SAAS96C,GAC9Bh9O,EAAQ6pF,MAAMmzJ,GACd0y2B,EAAyB1vlC,EAAS+gH,EACpC,GAEJ,EACF,GAIF,SAAS2u+B,EAAyB1vlC,EAAS+gH,GAEzC,IAAIsgE,EAAUp6C,EAAS0oJ,gBACnB1oJ,EAAS0oJ,gBAAgB,oBAAqB5uK,GAC9CmlB,EAAU,GAAG0pJ,cAAc,uBAAyB7uK,EAAM,KAC1DstW,EAASj/M,EAAO/tF,GACpBrhL,EAAQ6pF,MAAMwkY,GAGdrud,EAAQs8C,QACV,CACF,IAkCCgkF,UAAU,YAAa+s9B,KA+BvB/s9B,UAAU,eAAgB+s9B,IAkF5B,CA9tBD,CA8tBGxslC,OAAQA,OAAO+uI,Q,gDC1tBlB,QATA,SAA6BnvI,EAAMguG,EAAW72C,EAAStuD,GACrD,IAAImkH,EAAUnkH,GAA8B,kBAAZA,EAAwBA,EAAQmkH,QAAUnkH,EAC1E7I,EAAKoR,oBAAoB48F,EAAW72C,EAAS61D,GAEzC71D,EAAQ+ggC,QACVl4jC,EAAKoR,oBAAoB48F,EAAW72C,EAAQ+ggC,OAAQlr8B,EAExD,C,yBCEQ,SAAWlzH,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJF,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YACI,yEAAyED,MACrE,KAERghI,kBAAkB,EAClB9gI,SAAU,wDAAwDF,MAC9D,KAEJG,cAAe,mCAAmCH,MAAM,KACxDI,YAAa,qBAAqBJ,MAAM,KACxCM,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVS,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,WACHC,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERC,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,gBAAiB,SAAUC,GAC7C,OAAOjD,EAAUiD,EACrB,EACJ,EACAC,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,MAAO,SAAUC,GACnC,OAAOlD,EAAUkD,EACrB,EACJ,EAGAjC,cAAe,qBACf0+G,aAAc,SAAUr+G,EAAMD,GAI1B,OAHa,KAATC,IACAA,EAAO,GAEM,QAAbD,EACOC,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbD,EACAC,EACa,SAAbD,EACAC,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbD,EACAC,EAAO,QADX,CAGX,EACAD,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,KAEf,EACAgC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA9HyCC,CAAQ,EAAQ,O,+BCD1DuF,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIi8G,EAAe,EAAQ,OACvBgka,EAAY,EAAQ,OACpBjka,EAAW,EAAQ,OA8BnBgzH,EAA6B,WAe7B,SAASA,EAAYsh3B,EAAgBC,EAAav1C,EAAS9wiC,GACvDmQ,KAAKi2kC,eAAiBA,EACtBj2kC,KAAKk2kC,YAAcA,EACnBl2kC,KAAKk2kC,YAAcA,EACnBl2kC,KAAK2giC,QAAUh/7B,EAASqB,OAAO,CAAC,EAAG297B,GAAW,CAAC,GAC/C3giC,KAAKnQ,SAAW8xG,EAASqB,OAAO,CAAC,EAAGnzG,GAAY,CAAC,GACjDmQ,KAAKm2kC,YAAcF,EAAe9/9B,QAAQt7G,KAAKq7kC,EAAal2kC,KAAKnQ,SAASyxU,SAC9E,CAqFA,OAnFA3sG,EAAYv0N,UAAU7M,KAAO,WACzB,OAAOyM,KAAKm2kC,aAAen2kC,KAAKm2kC,YAAY5ilC,MAAQyM,KAAKk2kC,WAC7D,EAEAvh3B,EAAYv0N,UAAUsjR,WAAa,WAC/B,OAAO1jR,KAAKk2kC,WAChB,EAEAvh3B,EAAYv0N,UAAU+/C,OAAS,WAC3B,OAAOngD,KAAK2giC,OAChB,EAEAhs0B,EAAYv0N,UAAUutH,OAAS,WAC3B,OAAO3tH,KAAKm2kC,WAChB,EAEAxh3B,EAAYv0N,UAAUzQ,MAAQ,WAC1B,OAAOqQ,KAAKm2kC,aAAen2kC,KAAKm2kC,YAAY7z/B,IAChD,EAEAqyI,EAAYv0N,UAAUxQ,QAAU,WAC5B,OAAOoQ,KAAKnQ,QAChB,EAEA8kO,EAAYv0N,UAAUwhU,OAAS,WAC3B,SAAU5hU,KAAKm2kC,cAAen2kC,KAAKm2kC,YAAY7z/B,KACnD,EAEAqyI,EAAYv0N,UAAUqmB,MAAQ,WAC1B,OAAQzmB,KAAKiK,OACjB,EAEA0qN,EAAYv0N,UAAU6J,MAAQ,WAC1B,IAAIohC,EAAOrrC,KAAKpQ,UAAU0xU,SAC1B,IAAKthU,KAAKm2kC,aAAiB9qiC,EAAM,CAC7B,IAAIi5D,EAAYj5D,EAAK93C,KAAO83C,EAAK93C,KAAO83C,EACxC,MAAO,sBAAwBrrC,KAAKzM,OAAS,iBAAmB+wG,EAAY,GAChF,CACA,OAAKtkG,KAAKm2kC,YAELn2kC,KAAKm2kC,YAAY7z/B,UAAtB,EACW,UAAYtiF,KAAKzM,OAAS,8BAF1B,kBAAoByM,KAAKzM,OAAS,GAGjD,EACAohO,EAAYv0N,UAAUpZ,SAAW,WAC7B,MAAO,IAAMgZ,KAAKzM,OAAS,IAAMqygB,EAAUh8f,UAAU5J,KAAKmgD,SAC9D,EAOAw0K,EAAYv0N,UAAUg2kC,UAAY,SAAUzmlC,GACxC,OAAO,IAAIglO,EAAY30N,KAAKi2kC,eAAgBtmlC,EAAOqQ,KAAK2giC,QAAS3giC,KAAKnQ,SAC1E,EAQA8kO,EAAYv0N,UAAUi2kC,WAAa,SAAUl2hC,EAAQp8D,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI2hd,EAAY3hd,EAAUo8D,EAASwhD,EAASqB,OAAO,CAAC,EAAGhjG,KAAK2giC,QAASxg/B,GACrE,OAAO,IAAIw0K,EAAY30N,KAAKi2kC,eAAgBj2kC,KAAKk2kC,YAAaxwoB,EAAW1lc,KAAKnQ,SAClF,EAQA8kO,EAAYv0N,UAAU8igC,YAAc,SAAUtzgC,EAAS7L,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAIuylC,EAAUvylC,EAAU6L,EAAU+xG,EAASqB,OAAO,CAAC,EAAGhjG,KAAKnQ,SAAUD,GACrE,OAAO,IAAI+kO,EAAY30N,KAAKi2kC,eAAgBj2kC,KAAKk2kC,YAAal2kC,KAAK2giC,QAAS21C,EAChF,EAEA3h3B,EAAYi3wB,MAAQ,SAAUt59B,GAC1B,OAAOA,GAAOA,EAAI3iB,QAAUiyG,EAAa2B,SAASjxF,EAAI3iB,QAAUiyG,EAAa2B,SAASjxF,EAAI3iB,MAAM4D,MACpG,EACOohO,CACX,CA5GgC,GA6GhClwO,EAAQkwO,YAAcA,C,+BClJtB7qO,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAI4wlC,EAA0B,EAAQ,OAClCC,EAAwB,EAAQ,OAChCr4wB,EAAU,EAAQ,OAClBs4wB,EAA6B,EAAQ,OACrCC,EAA0B,EAAQ,OAClCC,EAAyB,EAAQ,OACjCC,EAAa,EAAQ,OACrBC,EAAM,EAAQ,MACd13wB,EAAiB,EAAQ,OAM7B16U,EAAQqylC,eALR,SAAwBlkxB,GAGpB,OAFAuM,EAAegC,SAASh7M,UAAYyw9B,EAAWzw9B,UAC/Cg5M,EAAegC,SAASh/M,GAAK009B,EAAI109B,GAC1B,CAAE5uH,KAAM,mBAAoB4uH,GAAI009B,EAAI109B,GAAIgE,UAAWyw9B,EAAWzw9B,UAAWpiB,QAAS,WAAc,OAAO,IAAM,EACxH,EAGAt/G,EAAQsylC,mBAAqB54wB,EAAQiqsB,sBAAsB,4BAA4B,EAAOouE,EAAsB50K,oBAAqB20K,EAAwBS,uBAEjKvylC,EAAQwylC,wBAA0B94wB,EAAQiqsB,sBAAsB,6BAA6B,EAAMquE,EAA2BznC,yBAA0BunC,EAAwBS,uBAEhLvylC,EAAQyylC,qBAAuB/4wB,EAAQiqsB,sBAAsB,0BAA0B,EAAOsuE,EAAwBjxjB,sBAAuBkxjB,EAAuB12tB,qB,qCCpB1Fx7X,QAGlE,WAAe,aAEnB,IAAI0ylC,EA6HA7klC,EA3HJ,SAASmzP,IACL,OAAO0x1B,EAAar2kC,MAAM,KAAM3M,UACpC,CAQA,SAAS4b,EAAQ9tB,GACb,OACIA,aAAiBqS,OACyB,mBAA1CxK,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,EAEvC,CAEA,SAASguB,EAAShuB,GAGd,OACa,MAATA,GAC0C,oBAA1C6H,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,EAEvC,CAEA,SAASm1lC,EAAWx9kC,EAAGC,GACnB,OAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKzG,EAAGC,EACnD,CAEA,SAAS05S,EAAcjhS,GACnB,GAAIxoB,OAAOu7C,oBACP,OAAkD,IAA3Cv7C,OAAOu7C,oBAAoB/yB,GAAKle,OAEvC,IAAIqd,EACJ,IAAKA,KAAKa,EACN,GAAI8kkC,EAAW9kkC,EAAKb,GAChB,OAAO,EAGf,OAAO,CAEf,CAEA,SAASwiH,EAAYhyI,GACjB,YAAiB,IAAVA,CACX,CAEA,SAASiyB,EAASjyB,GACd,MACqB,iBAAVA,GACmC,oBAA1C6H,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,EAEvC,CAEA,SAAS4nO,EAAO5nO,GACZ,OACIA,aAAiB4mB,MACyB,kBAA1C/e,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,EAEvC,CAEA,SAAS8Q,EAAI6jC,EAAK9hC,GACd,IACIzP,EADA++C,EAAM,GAENwnT,EAASh1T,EAAIxiC,OACjB,IAAK/O,EAAI,EAAGA,EAAIumW,IAAUvmW,EACtB++C,EAAItwC,KAAKgB,EAAG8hC,EAAIvxC,GAAIA,IAExB,OAAO++C,CACX,CAEA,SAAS4+D,EAAOppG,EAAGC,GACf,IAAK,IAAIxU,KAAKwU,EACNu9kC,EAAWv9kC,EAAGxU,KACduU,EAAEvU,GAAKwU,EAAExU,IAYjB,OARI+xlC,EAAWv9kC,EAAG,cACdD,EAAE5S,SAAW6S,EAAE7S,UAGfowlC,EAAWv9kC,EAAG,aACdD,EAAE+8M,QAAU98M,EAAE88M,SAGX/8M,CACX,CAEA,SAASy9kC,EAAUp1lC,EAAOu8C,EAAQN,EAAQ+kE,GACtC,OAAOq0+B,GAAiBr1lC,EAAOu8C,EAAQN,EAAQ+kE,GAAQ,GAAMwlY,KACjE,CAwBA,SAAS8umB,EAAgBp0lC,GAIrB,OAHa,MAATA,EAAEq0lC,MACFr0lC,EAAEq0lC,IAtBC,CACH390B,OAAO,EACP490B,aAAc,GACdC,YAAa,GACbpqlC,UAAW,EACXqqlC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjB9/xB,KAAK,EACL+/xB,gBAAiB,GACjB1s5B,IAAK,KACLppM,SAAU,KACV+1lC,SAAS,EACTC,iBAAiB,IAQdh1lC,EAAEq0lC,GACb,CAqBA,SAAS1u4B,EAAQ3lN,GACb,IAAIyhI,EAAQ,KACRwz9B,GAAc,EACdC,EAAal1lC,EAAE8nH,KAAOllH,MAAM5C,EAAE8nH,GAAGxF,WAyBrC,OAxBI4y+B,IACAzz9B,EAAQ2y9B,EAAgBp0lC,GACxBi1lC,EAAc9llC,EAAK+N,KAAKukH,EAAMqz9B,gBAAiB,SAAU5ylC,GACrD,OAAY,MAALA,CACX,GACAgzlC,EACIzz9B,EAAMt3H,SAAW,IAChBs3H,EAAMi1I,QACNj1I,EAAMiz9B,aACNjz9B,EAAMkz9B,eACNlz9B,EAAM0z9B,iBACN1z9B,EAAMuz9B,kBACNvz9B,EAAMgz9B,YACNhz9B,EAAMmz9B,gBACNnz9B,EAAMoz9B,mBACLpz9B,EAAMziI,UAAayiI,EAAMziI,UAAYi2lC,GACvCj1lC,EAAEo1lC,UACFF,EACIA,GACwB,IAAxBzz9B,EAAM+y9B,eACwB,IAA9B/y9B,EAAM6y9B,aAAarjlC,aACD0C,IAAlB8tH,EAAM4z9B,UAGK,MAAnB1ulC,OAAOi/zB,UAAqBj/zB,OAAOi/zB,SAAS5l0B,GAGrCk1lC,GAFPl1lC,EAAE+lzB,SAAWmvS,EAIVl1lC,EAAE+lzB,SACb,CAEA,SAASuvS,EAAc7z9B,GACnB,IAAIzhI,EAAIk0lC,EAAU/xlC,KAOlB,OANa,MAATs/H,EACA5hB,EAAOu0+B,EAAgBp0lC,GAAIyhI,GAE3B2y9B,EAAgBp0lC,GAAG60lC,iBAAkB,EAGlC70lC,CACX,CA9DImP,EADAgC,MAAM8L,UAAU9N,KACTgC,MAAM8L,UAAU9N,KAEhB,SAAU6loB,GACb,IAEI9yoB,EAFAub,EAAI9W,OAAOkW,MACXvQ,EAAMmR,EAAExM,SAAW,EAGvB,IAAK/O,EAAI,EAAGA,EAAIoK,EAAKpK,IACjB,GAAIA,KAAKub,GAAKu3nB,EAAI93nB,KAAKL,KAAMY,EAAEvb,GAAIA,EAAGub,GAClC,OAAO,EAIf,OAAO,CACX,EAoDJ,IAAI83kC,EAAoBjz1B,EAAMiz1B,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWh0jC,EAAIC,GACpB,IAAIx/B,EACAitC,EACA3K,EACAkxjC,EAAsBH,EAAiBtklC,OAiC3C,GA/BK6/H,EAAYpvG,EAAKi0jC,oBAClBl0jC,EAAGk0jC,iBAAmBj0jC,EAAKi0jC,kBAE1B7k9B,EAAYpvG,EAAKlqB,MAClBiqB,EAAGjqB,GAAKkqB,EAAKlqB,IAEZs5H,EAAYpvG,EAAK0sI,MAClB3sI,EAAG2sI,GAAK1sI,EAAK0sI,IAEZt9B,EAAYpvG,EAAKmrK,MAClBprK,EAAGorK,GAAKnrK,EAAKmrK,IAEZ/7D,EAAYpvG,EAAK0zjC,WAClB3zjC,EAAG2zjC,QAAU1zjC,EAAK0zjC,SAEjBtk9B,EAAYpvG,EAAKk0jC,QAClBn0jC,EAAGm0jC,KAAOl0jC,EAAKk0jC,MAEd9k9B,EAAYpvG,EAAKm0jC,UAClBp0jC,EAAGo0jC,OAASn0jC,EAAKm0jC,QAEhB/k9B,EAAYpvG,EAAKnoB,WAClBkoB,EAAGloB,QAAUmoB,EAAKnoB,SAEjBu3H,EAAYpvG,EAAK2yjC,OAClB5yjC,EAAG4yjC,IAAMD,EAAgB1yjC,IAExBovG,EAAYpvG,EAAKo0jC,WAClBr0jC,EAAGq0jC,QAAUp0jC,EAAKo0jC,SAGlBJ,EAAsB,EACtB,IAAKxzlC,EAAI,EAAGA,EAAIwzlC,EAAqBxzlC,IAG5B4uI,EADLtsG,EAAM9C,EADNyN,EAAOomjC,EAAiBrzlC,OAGpBu/B,EAAG0N,GAAQ3K,GAKvB,OAAO/C,CACX,CAGA,SAASs0jC,EAAOn6kC,GACZ65kC,EAAW54kC,KAAMjB,GACjBiB,KAAKirG,GAAK,IAAIpiG,KAAkB,MAAb9J,EAAOksG,GAAalsG,EAAOksG,GAAGxF,UAAYngH,KACxD0a,KAAK8oM,YACN9oM,KAAKirG,GAAK,IAAIpiG,KAAKvjB,OAIE,IAArBqzlC,IACAA,GAAmB,EACnBlz1B,EAAM0z1B,aAAan5kC,MACnB24kC,GAAmB,EAE3B,CAEA,SAASS,EAAS9mkC,GACd,OACIA,aAAe4mkC,GAAkB,MAAP5mkC,GAAuC,MAAxBA,EAAIwmkC,gBAErD,CAEA,SAASjskC,EAAKskI,IAEgC,IAAtCs0G,EAAM4z1B,6BACa,oBAAZzmjC,SACPA,QAAQ/lB,MAER+lB,QAAQ/lB,KAAK,wBAA0BskI,EAE/C,CAEA,SAASmo8B,EAAUno8B,EAAKr8I,GACpB,IAAIm9sB,GAAY,EAEhB,OAAOjvmB,EAAO,WAIV,GAHgC,MAA5ByiJ,EAAM8z1B,oBACN9z1B,EAAM8z1B,mBAAmB,KAAMpo8B,GAE/B8gkB,EAAW,CACX,IACIt6oB,EACAtyE,EACAmF,EAHA6J,EAAO,GAIPmllC,EAASrllC,UAAUC,OACvB,IAAK/O,EAAI,EAAGA,EAAIm0lC,EAAQn0lC,IAAK,CAEzB,GADAsyE,EAAM,GACsB,iBAAjBxjE,UAAU9O,GAAiB,CAElC,IAAKmF,KADLmtE,GAAO,MAAQtyE,EAAI,KACP8O,UAAU,GACdijlC,EAAWjjlC,UAAU,GAAI3J,KACzBmtE,GAAOntE,EAAM,KAAO2J,UAAU,GAAG3J,GAAO,MAGhDmtE,EAAMA,EAAI78D,MAAM,GAAI,EACxB,MACI68D,EAAMxjE,UAAU9O,GAEpBgP,EAAKP,KAAK6jE,EACd,CACA9qD,EACIskI,EACI,gBACA78I,MAAM8L,UAAUtF,MAAMuF,KAAKhM,GAAM6J,KAAK,IACtC,MACA,IAAIqJ,OAAQg/B,OAEpB0rqB,GAAY,CAChB,CACA,OAAOn9sB,EAAGgM,MAAMd,KAAM7L,UAC1B,EAAGW,EACP,CAEA,IAgFIzK,EAhFAovlC,EAAe,CAAC,EAEpB,SAASC,EAAgBnmlC,EAAM49I,GACK,MAA5Bs0G,EAAM8z1B,oBACN9z1B,EAAM8z1B,mBAAmBhmlC,EAAM49I,GAE9Bso8B,EAAalmlC,KACdsZ,EAAKskI,GACLso8B,EAAalmlC,IAAQ,EAE7B,CAKA,SAASsf,EAAW5wB,GAChB,MACyB,oBAAbwpH,UAA4BxpH,aAAiBwpH,UACX,sBAA1C3hH,OAAOsW,UAAUpZ,SAASqZ,KAAKpe,EAEvC,CAyBA,SAAS03lC,EAAaC,EAAcC,GAChC,IACIvnjC,EADA8R,EAAM4+D,EAAO,CAAC,EAAG42+B,GAErB,IAAKtnjC,KAAQunjC,EACLzC,EAAWyC,EAAavnjC,KACpBriB,EAAS2pkC,EAAatnjC,KAAUriB,EAAS4pkC,EAAYvnjC,KACrD8R,EAAI9R,GAAQ,CAAC,EACb0wE,EAAO5+D,EAAI9R,GAAOsnjC,EAAatnjC,IAC/B0wE,EAAO5+D,EAAI9R,GAAOunjC,EAAYvnjC,KACF,MAArBunjC,EAAYvnjC,GACnB8R,EAAI9R,GAAQunjC,EAAYvnjC,UAEjB8R,EAAI9R,IAIvB,IAAKA,KAAQsnjC,EAELxC,EAAWwC,EAActnjC,KACxB8kjC,EAAWyC,EAAavnjC,IACzBriB,EAAS2pkC,EAAatnjC,MAGtB8R,EAAI9R,GAAQ0wE,EAAO,CAAC,EAAG5+D,EAAI9R,KAGnC,OAAO8R,CACX,CAEA,SAAS01iC,EAAO/6kC,GACE,MAAVA,GACAiB,KAAKjM,IAAIgL,EAEjB,CAlEA0mP,EAAM4z1B,6BAA8B,EACpC5z1B,EAAM8z1B,mBAAqB,KAsEvBlvlC,EADAP,OAAOO,KACAP,OAAOO,KAEP,SAAUioB,GACb,IAAIjtB,EACA++C,EAAM,GACV,IAAK/+C,KAAKitB,EACF8kkC,EAAW9kkC,EAAKjtB,IAChB++C,EAAItwC,KAAKzO,GAGjB,OAAO++C,CACX,EAiBJ,SAAS21iC,EAAS92iC,EAAQ0+3B,EAAcq4K,GACpC,IAAIC,EAAY,GAAKz0lC,KAAKM,IAAIm9C,GAC1Bi3iC,EAAcv4K,EAAes4K,EAAU7llC,OAE3C,OADW6uC,GAAU,EAER+2iC,EAAY,IAAM,GAAM,KACjCx0lC,KAAKC,IAAI,GAAID,KAAKmE,IAAI,EAAGuwlC,IAAclzlC,WAAWmrH,OAAO,GACzD8n+B,CAER,CAEA,IAAIE,EACI,yMACJC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM5B,SAASC,EAAet2kC,EAAOu2kC,EAAQr2lC,EAAS+qB,GAC5C,IAAIwlF,EAAOxlF,EACa,iBAAbA,IACPwlF,EAAO,WACH,OAAO10F,KAAKkP,IAChB,GAEAjL,IACAq2kC,EAAqBr2kC,GAASywF,GAE9B8l/B,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOT,EAASrl/B,EAAK5zF,MAAMd,KAAM7L,WAAYqmlC,EAAO,GAAIA,EAAO,GACnE,GAEAr2lC,IACAm2lC,EAAqBn2lC,GAAW,WAC5B,OAAO6b,KAAKy6kC,aAAat2lC,QACrBuwG,EAAK5zF,MAAMd,KAAM7L,WACjB8P,EAER,EAER,CAEA,SAASy2kC,EAAuBz4lC,GAC5B,OAAIA,EAAM+B,MAAM,YACL/B,EAAM8B,QAAQ,WAAY,IAE9B9B,EAAM8B,QAAQ,MAAO,GAChC,CA4BA,SAAS42lC,EAAax3lC,EAAGq7C,GACrB,OAAKr7C,EAAE2lN,WAIPtqK,EAASo8iC,EAAap8iC,EAAQr7C,EAAEs3lC,cAChCJ,EAAgB77iC,GACZ67iC,EAAgB77iC,IAjCxB,SAA4BA,GACxB,IACIn5C,EACA+O,EAFAigB,EAAQmqB,EAAOx6C,MAAMm2lC,GAIzB,IAAK90lC,EAAI,EAAG+O,EAASigB,EAAMjgB,OAAQ/O,EAAI+O,EAAQ/O,IACvCi1lC,EAAqBjmkC,EAAMhvB,IAC3BgvB,EAAMhvB,GAAKi1lC,EAAqBjmkC,EAAMhvB,IAEtCgvB,EAAMhvB,GAAKq1lC,EAAuBrmkC,EAAMhvB,IAIhD,OAAO,SAAU4q2B,GACb,IACI5q2B,EADA08N,EAAS,GAEb,IAAK18N,EAAI,EAAGA,EAAI+O,EAAQ/O,IACpB08N,GAAUlvM,EAAWwB,EAAMhvB,IACrBgvB,EAAMhvB,GAAGgb,KAAK4v1B,EAAKzxzB,GACnBnqB,EAAMhvB,GAEhB,OAAO08N,CACX,CACJ,CAUmC843B,CAAmBr8iC,GAE3C67iC,EAAgB77iC,GAAQr7C,IAPpBA,EAAEs3lC,aAAal2tB,aAQ9B,CAEA,SAASq2tB,EAAap8iC,EAAQN,GAC1B,IAAI74C,EAAI,EAER,SAASy1lC,EAA4B74lC,GACjC,OAAOi8C,EAAO18C,eAAeS,IAAUA,CAC3C,CAGA,IADAm4lC,EAAsB146B,UAAY,EAC3Br8K,GAAK,GAAK+0lC,EAAsBl4lC,KAAKs8C,IACxCA,EAASA,EAAOz6C,QACZq2lC,EACAU,GAEJV,EAAsB146B,UAAY,EAClCr8K,GAAK,EAGT,OAAOm5C,CACX,CAiFA,IAAIkrrB,EAAU,CACVzwsB,EAAG,OACH2qG,MAAO,OACPtiF,KAAM,OACN/9C,EAAG,MACHgwG,KAAM,MACNjW,IAAK,MACLt4F,EAAG,UACH5D,SAAU,UACVm8D,QAAS,UACTrkC,EAAG,aACH6hkC,YAAa,aACbC,WAAY,aACZC,IAAK,YACLC,WAAY,YACZC,UAAW,YACX93lC,EAAG,OACH+nM,MAAO,OACPhpM,KAAM,OACNosT,GAAI,cACJkG,aAAc,cACdx3N,YAAa,cACb/5F,EAAG,SACHkoM,QAAS,SACThpM,OAAQ,SACRoB,EAAG,QACHxC,OAAQ,QACRs8F,MAAO,QACP1iE,EAAG,UACHugkC,SAAU,UACV59/B,QAAS,UACTv6F,EAAG,SACHqoM,QAAS,SACTjuG,OAAQ,SACR6uW,GAAI,WACJmvpB,UAAW,WACXC,SAAU,WACV3tyB,GAAI,cACJ4tyB,aAAc,cACdC,YAAa,cACb5hkC,EAAG,OACHgyd,MAAO,OACPxnf,KAAM,OACNm2B,EAAG,UACHkhkC,SAAU,UACVC,QAAS,UACT/3lC,EAAG,OACH+nf,MAAO,OACPjuZ,KAAM,QAGV,SAASk+/B,EAAev74B,GACpB,MAAwB,iBAAVA,EACRsphB,EAAQtphB,IAAUsphB,EAAQtphB,EAAMh4M,oBAChC0O,CACV,CAEA,SAAS8klC,EAAqBC,GAC1B,IACIC,EACAxpjC,EAFAypjC,EAAkB,CAAC,EAIvB,IAAKzpjC,KAAQupjC,EACLzE,EAAWyE,EAAavpjC,KACxBwpjC,EAAiBH,EAAerpjC,MAE5BypjC,EAAgBD,GAAkBD,EAAYvpjC,IAK1D,OAAOypjC,CACX,CAEA,IAAI/n/B,EAAa,CACb1yD,KAAM,EACNg8C,IAAK,GACL//B,QAAS,GACTwgC,WAAY,GACZyuS,UAAW,EACXpqY,KAAM,GACN86F,YAAa,GACb76F,OAAQ,GACRk7F,MAAO,EACPC,QAAS,EACTH,OAAQ,GACR6uS,SAAU,EACVE,YAAa,EACbhoY,KAAM,EACNowT,QAAS,EACT/2N,KAAM,GAiBV,IAsBI4x5B,EAtBA2sG,EAAS,KACTC,EAAS,OACTC,EAAS,QACTC,EAAS,QACTC,EAAS,aACTC,EAAY,QACZC,EAAY,YACZC,EAAY,gBACZC,EAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GACI,wJACJC,GAAyB,YACzBC,GAAmB,gBAKvB,SAASC,GAAcj5kC,EAAO4lG,EAAOsz+B,GACjC9tG,EAAQpr+B,GAAS4O,EAAWg3F,GACtBA,EACA,SAAUux6B,EAAUq/D,GAChB,OAAOr/D,GAAY+hE,EAAcA,EAActz+B,CACnD,CACV,CAEA,SAASuz+B,GAAsBn5kC,EAAOlF,GAClC,OAAKq4kC,EAAW/nG,EAASpr+B,GAIlBor+B,EAAQpr+B,GAAOlF,EAAOw5kC,QAASx5kC,EAAOk6kC,SAHlC,IAAInnjC,OAQRurjC,GAR8Bp5kC,EAU5BlgB,QAAQ,KAAM,IACdA,QACG,sCACA,SAAUyI,EAAS+4B,EAAIC,EAAIste,EAAInub,GAC3B,OAAOp/C,GAAMC,GAAMste,GAAMnub,CAC7B,IAXhB,CAgBA,SAAS04gC,GAAYp6lC,GACjB,OAAOA,EAAEc,QAAQ,yBAA0B,OAC/C,CAEA,SAASu5lC,GAASr6iC,GACd,OAAIA,EAAS,EAEFz9C,KAAKsjE,KAAK7lB,IAAW,EAErBz9C,KAAKQ,MAAMi9C,EAE1B,CAEA,SAAS4zN,GAAM0m1B,GACX,IAAIC,GAAiBD,EACjB53lC,EAAQ,EAMZ,OAJsB,IAAlB63lC,GAAuBptkC,SAASotkC,KAChC73lC,EAAQ23lC,GAASE,IAGd73lC,CACX,CAtDA0p/B,EAAU,CAAC,EAwDX,IAAI594B,GAAS,CAAC,EAEd,SAASgs/B,GAAcx5kC,EAAOiL,GAC1B,IAAI7pB,EAEAq4lC,EADAhp/B,EAAOxlF,EAWX,IATqB,iBAAVjL,IACPA,EAAQ,CAACA,IAETiQ,EAAShF,KACTwlF,EAAO,SAAUzyG,EAAOoyB,GACpBA,EAAMnF,GAAY2nP,GAAM50Q,EAC5B,GAEJy7lC,EAAWz5kC,EAAM7P,OACZ/O,EAAI,EAAGA,EAAIq4lC,EAAUr4lC,IACtBosG,GAAOxtF,EAAM5e,IAAMqvG,CAE3B,CAEA,SAASip/B,GAAkB15kC,EAAOiL,GAC9BuukC,GAAcx5kC,EAAO,SAAUhiB,EAAOoyB,EAAOtV,EAAQkF,GACjDlF,EAAO6+kC,GAAK7+kC,EAAO6+kC,IAAM,CAAC,EAC1B1ukC,EAASjtB,EAAO8c,EAAO6+kC,GAAI7+kC,EAAQkF,EACvC,EACJ,CAEA,SAAS45kC,GAAwB55kC,EAAOhiB,EAAO8c,GAC9B,MAAT9c,GAAiBm1lC,EAAW3l/B,GAAQxtF,IACpCwtF,GAAOxtF,GAAOhiB,EAAO8c,EAAOyE,GAAIzE,EAAQkF,EAEhD,CAEA,SAAS4ymB,GAAWp5hB,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAClE,CAEA,IAAIk16B,GAAO,EACPxiH,GAAQ,EACR3mM,GAAO,EACPioT,GAAO,EACPI,GAAS,EACTK,GAAS,EACT4rF,GAAc,EACdC,GAAO,EACPzrF,GAAU,EAuCd,SAAS0rF,GAAWvggC,GAChB,OAAOo5hB,GAAWp5hB,GAAQ,IAAM,GACpC,CArCA88/B,EAAe,IAAK,EAAG,EAAG,WACtB,IAAI52lC,EAAIqc,KAAKy9E,OACb,OAAO95F,GAAK,KAAOo2lC,EAASp2lC,EAAG,GAAK,IAAMA,CAC9C,GAEA42lC,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOv6kC,KAAKy9E,OAAS,GACzB,GAEA88/B,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1C2C,GAAc,IAAKN,IACnBM,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,OAAQT,GAAWN,GACjCe,GAAc,QAASR,GAAWN,GAClCc,GAAc,SAAUR,GAAWN,GAEnCqB,GAAc,CAAC,QAAS,UAAW9qF,IACnC8qF,GAAc,OAAQ,SAAUx7lC,EAAOoyB,GACnCA,EAAMs++B,IACe,IAAjB1wgC,EAAMmS,OAAeqxP,EAAMw41B,kBAAkBh8lC,GAAS40Q,GAAM50Q,EACpE,GACAw7lC,GAAc,KAAM,SAAUx7lC,EAAOoyB,GACjCA,EAAMs++B,IAAQltwB,EAAMw41B,kBAAkBh8lC,EAC1C,GACAw7lC,GAAc,IAAK,SAAUx7lC,EAAOoyB,GAChCA,EAAMs++B,IAAQxs+B,SAASlkC,EAAO,GAClC,GAUAwjQ,EAAMw41B,kBAAoB,SAAUh8lC,GAChC,OAAO40Q,GAAM50Q,IAAU40Q,GAAM50Q,GAAS,GAAK,KAAO,IACtD,EAIA,IA0HIsG,GA1HA21lC,GAAaC,GAAW,YAAY,GAMxC,SAASA,GAAW/giC,EAAMghiC,GACtB,OAAO,SAAUz4lC,GACb,OAAa,MAATA,GACA04lC,GAAMr+kC,KAAMo9C,EAAMz3D,GAClB8/P,EAAM0z1B,aAAan5kC,KAAMo+kC,GAClBp+kC,MAEAnM,GAAImM,KAAMo9C,EAEzB,CACJ,CAEA,SAASvpD,GAAIo81B,EAAK7yyB,GACd,IAAK6yyB,EAAInnpB,UACL,OAAOxjN,IAGX,IAAI/B,EAAI0s2B,EAAIhlvB,GACRqz+B,EAAQruP,EAAI+oP,OAEhB,OAAQ57hC,GACJ,IAAK,eACD,OAAOkhiC,EAAQ/6lC,EAAE8nY,qBAAuB9nY,EAAEklG,kBAC9C,IAAK,UACD,OAAO61/B,EAAQ/6lC,EAAE4nY,gBAAkB5nY,EAAE2hJ,aACzC,IAAK,UACD,OAAOo58B,EAAQ/6lC,EAAE2nY,gBAAkB3nY,EAAE0hJ,aACzC,IAAK,QACD,OAAOq58B,EAAQ/6lC,EAAE0nY,cAAgB1nY,EAAEyhJ,WACvC,IAAK,OACD,OAAOs58B,EAAQ/6lC,EAAEojQ,aAAepjQ,EAAEgiH,UACtC,IAAK,MACD,OAAO+4+B,EAAQ/6lC,EAAEkjQ,YAAcljQ,EAAE65I,SACrC,IAAK,QACD,OAAOkh9B,EAAQ/6lC,EAAEynY,cAAgBznY,EAAEoiH,WACvC,IAAK,WACD,OAAO24+B,EAAQ/6lC,EAAEunY,iBAAmBvnY,EAAEsiH,cAC1C,QACI,OAAOvgH,IAEnB,CAEA,SAAS+4lC,GAAMpuP,EAAK7yyB,EAAMz3D,GACtB,IAAIpC,EAAG+6lC,EAAO7ggC,EAAMF,EAAOj8C,EAE3B,GAAK2uzB,EAAInnpB,YAAa/iN,MAAMJ,GAA5B,CAOA,OAHApC,EAAI0s2B,EAAIhlvB,GACRqz+B,EAAQruP,EAAI+oP,OAEJ57hC,GACJ,IAAK,eACD,YAAakhiC,EACP/6lC,EAAE8kf,mBAAmB1if,GACrBpC,EAAEilG,gBAAgB7iG,IAC5B,IAAK,UACD,YAAa24lC,EAAQ/6lC,EAAEkpG,cAAc9mG,GAASpC,EAAEquJ,WAAWjsJ,IAC/D,IAAK,UACD,YAAa24lC,EAAQ/6lC,EAAE+kf,cAAc3if,GAASpC,EAAEouJ,WAAWhsJ,IAC/D,IAAK,QACD,YAAa24lC,EAAQ/6lC,EAAEqjQ,YAAYjhQ,GAASpC,EAAEmuJ,SAAS/rJ,IAC3D,IAAK,OACD,YAAa24lC,EAAQ/6lC,EAAEmjQ,WAAW/gQ,GAASpC,EAAE45I,QAAQx3I,IAKzD,IAAK,WACD,MACJ,QACI,OAGR83F,EAAO93F,EACP43F,EAAQ0ywB,EAAI1ywB,QAEZj8C,EAAgB,MADhBA,EAAO2uzB,EAAI3uzB,SACqB,IAAVi8C,GAAgBs5hB,GAAWp5hB,GAAan8C,EAAL,GACnDg9iC,EACA/6lC,EAAE+qT,eAAe7wN,EAAMF,EAAOj8C,GAC9B/9C,EAAEqiH,YAAYnoB,EAAMF,EAAOj8C,EAlCjC,CAmCJ,CAmDA,SAASi9iC,GAAY9ggC,EAAMF,GACvB,GAAIx3F,MAAM03F,IAAS13F,MAAMw3F,GACrB,OAAOj4F,IAEX,IAzBYiB,EAyBRi4lC,GAAejhgC,GAzBPh3F,EAyBc,IAxBRA,GAAKA,EA0BvB,OADAk3F,IAASF,EAAQihgC,GAAY,GACT,IAAbA,EACD3ne,GAAWp5hB,GACP,GACA,GACJ,GAAO+ggC,EAAW,EAAK,CACjC,CAzBIj2lC,GADA+L,MAAM8L,UAAU7X,QACN+L,MAAM8L,UAAU7X,QAEhB,SAAUo7E,GAEhB,IAAIt+E,EACJ,IAAKA,EAAI,EAAGA,EAAI2a,KAAK5L,SAAU/O,EAC3B,GAAI2a,KAAK3a,KAAOs+E,EACZ,OAAOt+E,EAGf,OAAQ,CACZ,EAkBJk1lC,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAOv6kC,KAAKu9E,QAAU,CAC1B,GAEAg9/B,EAAe,MAAO,EAAG,EAAG,SAAU/7iC,GAClC,OAAOx+B,KAAKy6kC,aAAat5lC,YAAY6e,KAAMw+B,EAC/C,GAEA+7iC,EAAe,OAAQ,EAAG,EAAG,SAAU/7iC,GACnC,OAAOx+B,KAAKy6kC,aAAax5lC,OAAO+e,KAAMw+B,EAC1C,GAIA0+iC,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,MAAO,SAAU9hE,EAAUl9+B,GACrC,OAAOA,EAAO62R,iBAAiBqmtB,EACnC,GACA8hE,GAAc,OAAQ,SAAU9hE,EAAUl9+B,GACtC,OAAOA,EAAOw2R,YAAY0mtB,EAC9B,GAEAqiE,GAAc,CAAC,IAAK,MAAO,SAAUx7lC,EAAOoyB,GACxCA,EAAM873B,IAASt5oB,GAAM50Q,GAAS,CAClC,GAEAw7lC,GAAc,CAAC,MAAO,QAAS,SAAUx7lC,EAAOoyB,EAAOtV,EAAQkF,GAC3D,IAAIs5E,EAAQx+E,EAAOk6kC,QAAQxkxB,YAAYxyU,EAAOgiB,EAAOlF,EAAOw5kC,SAE/C,MAATh7/B,EACAlpE,EAAM873B,IAAS5yzB,EAEfg6/B,EAAgBx4kC,GAAQ+4kC,aAAe71lC,CAE/C,GAIA,IAAIw8lC,GACI,wFAAwFv9lC,MACpF,KAERw9lC,GACI,kDAAkDx9lC,MAAM,KAC5Dy9lC,GAAmB,gCACnBC,GAA0B7B,GAC1B8B,GAAqB9B,GA8BzB,SAAS+B,GAAkBC,EAAWvgjC,EAAQykE,GAC1C,IAAI59G,EACAqxQ,EACAu5lB,EACA+uP,EAAMD,EAAU5tjB,oBACpB,IAAKnxhB,KAAKi/kC,aAKN,IAHAj/kC,KAAKi/kC,aAAe,GACpBj/kC,KAAKk/kC,iBAAmB,GACxBl/kC,KAAKm/kC,kBAAoB,GACpB95lC,EAAI,EAAGA,EAAI,KAAMA,EAClB4q2B,EAAMonP,EAAU,CAAC,IAAMhylC,IACvB2a,KAAKm/kC,kBAAkB95lC,GAAK2a,KAAK7e,YAC7B8u2B,EACA,IACF9+T,oBACFnxhB,KAAKk/kC,iBAAiB75lC,GAAK2a,KAAK/e,OAAOgv2B,EAAK,IAAI9+T,oBAIxD,OAAIlub,EACe,QAAXzkE,GAEe,KADfk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKm/kC,kBAAmBH,IACvBto1B,EAAK,MAGT,KADfA,EAAKnuQ,GAAQ8X,KAAKL,KAAKk/kC,iBAAkBF,IACtBto1B,EAAK,KAGb,QAAXl4N,GAEY,KADZk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKm/kC,kBAAmBH,MAK3B,KADfto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKk/kC,iBAAkBF,IAF9Bto1B,EAGa,MAGZ,KADZA,EAAKnuQ,GAAQ8X,KAAKL,KAAKk/kC,iBAAkBF,MAK1B,KADfto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKm/kC,kBAAmBH,IAF/Bto1B,EAGa,IAGpC,CAyDA,SAAShxJ,GAASuqvB,EAAKtq2B,GACnB,IAAKsq2B,EAAInnpB,UAEL,OAAOmnpB,EAGX,GAAqB,iBAAVtq2B,EACP,GAAI,QAAQzD,KAAKyD,GACbA,EAAQkxQ,GAAMlxQ,QAId,IAAKuuB,EAFLvuB,EAAQsq2B,EAAIwqP,aAAahmxB,YAAY9uU,IAGjC,OAAOsq2B,EAKnB,IAAI1ywB,EAAQ53F,EACR27C,EAAO2uzB,EAAI3uzB,OAMf,OAJAA,EAAOA,EAAO,GAAKA,EAAO97C,KAAKkE,IAAI43C,EAAMi9iC,GAAYtuP,EAAIxywB,OAAQF,IAC3D0ywB,EAAI+oP,OACJ/oP,EAAIhlvB,GAAGwhR,YAAYlvS,EAAOj8C,GAC1B2uzB,EAAIhlvB,GAAGvF,SAASnoB,EAAOj8C,GACtB2uzB,CACX,CAEA,SAASmvP,GAAYz5lC,GACjB,OAAa,MAATA,GACA+/G,GAAS1lG,KAAMra,GACf8/P,EAAM0z1B,aAAan5kC,MAAM,GAClBA,MAEAnM,GAAImM,KAAM,QAEzB,CA8CA,SAASq/kC,KACL,SAASC,EAAU1llC,EAAGC,GAClB,OAAOA,EAAEzF,OAASwF,EAAExF,MACxB,CAEA,IAGI/O,EACA4q2B,EACAsvP,EACAC,EANAC,EAAc,GACdC,EAAa,GACbC,EAAc,GAKlB,IAAKt6lC,EAAI,EAAGA,EAAI,GAAIA,IAEhB4q2B,EAAMonP,EAAU,CAAC,IAAMhylC,IACvBk6lC,EAASlC,GAAYr9kC,KAAK7e,YAAY8u2B,EAAK,KAC3CuvP,EAAQnC,GAAYr9kC,KAAK/e,OAAOgv2B,EAAK,KACrCwvP,EAAY3rlC,KAAKyrlC,GACjBG,EAAW5rlC,KAAK0rlC,GAChBG,EAAY7rlC,KAAK0rlC,GACjBG,EAAY7rlC,KAAKyrlC,GAIrBE,EAAYrslC,KAAKkslC,GACjBI,EAAWtslC,KAAKkslC,GAChBK,EAAYvslC,KAAKkslC,GAEjBt/kC,KAAK4/kC,aAAe,IAAI9tjC,OAAO,KAAO6tjC,EAAYzhlC,KAAK,KAAO,IAAK,KACnE8B,KAAK6/kC,kBAAoB7/kC,KAAK4/kC,aAC9B5/kC,KAAK8/kC,mBAAqB,IAAIhujC,OAC1B,KAAO4tjC,EAAWxhlC,KAAK,KAAO,IAC9B,KAEJ8B,KAAK+/kC,wBAA0B,IAAIjujC,OAC/B,KAAO2tjC,EAAYvhlC,KAAK,KAAO,IAC/B,IAER,CAEA,SAAS8hlC,GAAWr8lC,EAAGR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGurT,GAGlC,IAAIltQ,EAYJ,OAVI39C,EAAI,KAAOA,GAAK,GAEhB29C,EAAO,IAAIz4B,KAAKllB,EAAI,IAAKR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGurT,GACpCp+R,SAASkxB,EAAKukE,gBACdvkE,EAAKskE,YAAYjiH,IAGrB29C,EAAO,IAAIz4B,KAAKllB,EAAGR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGurT,GAG/BltQ,CACX,CAEA,SAAS2+iC,GAAct8lC,GACnB,IAAI29C,EAAMjtC,EAcV,OAZI1Q,EAAI,KAAOA,GAAK,IAChB0Q,EAAOC,MAAM8L,UAAUtF,MAAMuF,KAAKlM,YAE7B,GAAKxQ,EAAI,IACd29C,EAAO,IAAIz4B,KAAKA,KAAK6tK,IAAI51K,MAAM,KAAMzM,IACjC+b,SAASkxB,EAAKwpV,mBACdxpV,EAAKgtQ,eAAe3qT,IAGxB29C,EAAO,IAAIz4B,KAAKA,KAAK6tK,IAAI51K,MAAM,KAAM3M,YAGlCmtC,CACX,CAGA,SAAS4qf,GAAgBzuc,EAAMp5F,EAAKC,GAChC,IACI8niB,EAAM,EAAI/niB,EAAMC,EAIpB,QAFa,EAAI27lC,GAAcxigC,EAAM,EAAG2uc,GAAK3lS,YAAcpiQ,GAAO,EAElD+niB,EAAM,CAC1B,CAGA,SAAS8zjB,GAAmBzigC,EAAMr5F,EAAMm5D,EAASl5D,EAAKC,GAClD,IAGI67lC,EACAC,EAFA5ztB,EAAY,EAAI,GAAKpoY,EAAO,IAFZ,EAAIm5D,EAAUl5D,GAAO,EACxB6niB,GAAgBzuc,EAAMp5F,EAAKC,GAgB5C,OAXIkoY,GAAa,EAEb4ztB,EAAepC,GADfmC,EAAU1igC,EAAO,GACoB+uS,EAC9BA,EAAYwxtB,GAAWvggC,IAC9B0igC,EAAU1igC,EAAO,EACjB2igC,EAAe5ztB,EAAYwxtB,GAAWvggC,KAEtC0igC,EAAU1igC,EACV2igC,EAAe5ztB,GAGZ,CACH/uS,KAAM0igC,EACN3ztB,UAAW4ztB,EAEnB,CAEA,SAASv0mB,GAAWokX,EAAK5r2B,EAAKC,GAC1B,IAEI+7lC,EACAF,EAHAG,EAAap0jB,GAAgB+jU,EAAIxywB,OAAQp5F,EAAKC,GAC9CF,EAAOoB,KAAKQ,OAAOiq2B,EAAIzje,YAAc8ztB,EAAa,GAAK,GAAK,EAehE,OAXIl8lC,EAAO,EAEPi8lC,EAAUj8lC,EAAOm8lC,GADjBJ,EAAUlwP,EAAIxywB,OAAS,EACep5F,EAAKC,GACpCF,EAAOm8lC,GAAYtwP,EAAIxywB,OAAQp5F,EAAKC,IAC3C+7lC,EAAUj8lC,EAAOm8lC,GAAYtwP,EAAIxywB,OAAQp5F,EAAKC,GAC9C67lC,EAAUlwP,EAAIxywB,OAAS,IAEvB0igC,EAAUlwP,EAAIxywB,OACd4igC,EAAUj8lC,GAGP,CACHA,KAAMi8lC,EACN5igC,KAAM0igC,EAEd,CAEA,SAASI,GAAY9igC,EAAMp5F,EAAKC,GAC5B,IAAIg8lC,EAAap0jB,GAAgBzuc,EAAMp5F,EAAKC,GACxCk8lC,EAAiBt0jB,GAAgBzuc,EAAO,EAAGp5F,EAAKC,GACpD,OAAQ05lC,GAAWvggC,GAAQ6igC,EAAaE,GAAkB,CAC9D,CAIAjG,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrC2C,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAE/B0B,GACI,CAAC,IAAK,KAAM,IAAK,MACjB,SAAU17lC,EAAOmC,EAAM2a,EAAQkF,GAC3B7f,EAAK6f,EAAMkuG,OAAO,EAAG,IAAM0kJ,GAAM50Q,EACrC,GA+GJ,SAASw+lC,GAAczg8B,EAAIn/I,GACvB,OAAOm/I,EAAGllJ,MAAM+F,EAAG,GAAG7S,OAAOgyJ,EAAGllJ,MAAM,EAAG+F,GAC7C,CA3EA05kC,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU/7iC,GACjC,OAAOx+B,KAAKy6kC,aAAan5lC,YAAY0e,KAAMw+B,EAC/C,GAEA+7iC,EAAe,MAAO,EAAG,EAAG,SAAU/7iC,GAClC,OAAOx+B,KAAKy6kC,aAAap5lC,cAAc2e,KAAMw+B,EACjD,GAEA+7iC,EAAe,OAAQ,EAAG,EAAG,SAAU/7iC,GACnC,OAAOx+B,KAAKy6kC,aAAar5lC,SAAS4e,KAAMw+B,EAC5C,GAEA+7iC,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1B2C,GAAc,IAAKb,GACnBa,GAAc,IAAKb,GACnBa,GAAc,IAAKb,GACnBa,GAAc,KAAM,SAAU9hE,EAAUl9+B,GACpC,OAAOA,EAAOwijC,iBAAiBtlE,EACnC,GACA8hE,GAAc,MAAO,SAAU9hE,EAAUl9+B,GACrC,OAAOA,EAAOyijC,mBAAmBvlE,EACrC,GACA8hE,GAAc,OAAQ,SAAU9hE,EAAUl9+B,GACtC,OAAOA,EAAO0ijC,cAAcxlE,EAChC,GAEAuiE,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAU17lC,EAAOmC,EAAM2a,EAAQkF,GACpE,IAAIs5C,EAAUx+C,EAAOk6kC,QAAQrkxB,cAAc3yU,EAAOgiB,EAAOlF,EAAOw5kC,SAEjD,MAAXh7hC,EACAn5D,EAAKb,EAAIg6D,EAETg6hC,EAAgBx4kC,GAAQu5kC,eAAiBr2lC,CAEjD,GAEA07lC,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAU17lC,EAAOmC,EAAM2a,EAAQkF,GAC9D7f,EAAK6f,GAAS4yP,GAAM50Q,EACxB,GAiCA,IAAI4+lC,GACI,2DAA2D3/lC,MAAM,KACrE4/lC,GAA6B,8BAA8B5/lC,MAAM,KACjE6/lC,GAA2B,uBAAuB7/lC,MAAM,KACxD8/lC,GAAuBjE,GACvBkE,GAA4BlE,GAC5BmE,GAA0BnE,GAiC9B,SAASoE,GAAoBC,EAAa5ijC,EAAQykE,GAC9C,IAAI59G,EACAqxQ,EACAu5lB,EACA+uP,EAAMoC,EAAYjwjB,oBACtB,IAAKnxhB,KAAKqhlC,eAKN,IAJArhlC,KAAKqhlC,eAAiB,GACtBrhlC,KAAKshlC,oBAAsB,GAC3BthlC,KAAKuhlC,kBAAoB,GAEpBl8lC,EAAI,EAAGA,EAAI,IAAKA,EACjB4q2B,EAAMonP,EAAU,CAAC,IAAM,IAAI/5/B,IAAIj4F,GAC/B2a,KAAKuhlC,kBAAkBl8lC,GAAK2a,KAAK1e,YAC7B2u2B,EACA,IACF9+T,oBACFnxhB,KAAKshlC,oBAAoBj8lC,GAAK2a,KAAK3e,cAC/B4u2B,EACA,IACF9+T,oBACFnxhB,KAAKqhlC,eAAeh8lC,GAAK2a,KAAK5e,SAAS6u2B,EAAK,IAAI9+T,oBAIxD,OAAIlub,EACe,SAAXzkE,GAEe,KADfk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKqhlC,eAAgBrC,IACpBto1B,EAAK,KACN,QAAXl4N,GAEQ,KADfk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKshlC,oBAAqBtC,IACzBto1B,EAAK,MAGT,KADfA,EAAKnuQ,GAAQ8X,KAAKL,KAAKuhlC,kBAAmBvC,IACvBto1B,EAAK,KAGb,SAAXl4N,GAEY,KADZk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKqhlC,eAAgBrC,MAK3B,KADZto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKshlC,oBAAqBtC,MAK7B,KADfto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKuhlC,kBAAmBvC,IAN/Bto1B,EAOa,KACN,QAAXl4N,GAEK,KADZk4N,EAAKnuQ,GAAQ8X,KAAKL,KAAKshlC,oBAAqBtC,MAKhC,KADZto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKqhlC,eAAgBrC,MAKxB,KADfto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKuhlC,kBAAmBvC,IAN/Bto1B,EAOa,MAGZ,KADZA,EAAKnuQ,GAAQ8X,KAAKL,KAAKuhlC,kBAAmBvC,MAK9B,KADZto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKqhlC,eAAgBrC,MAKxB,KADfto1B,EAAKnuQ,GAAQ8X,KAAKL,KAAKshlC,oBAAqBtC,IANjCto1B,EAOa,IAGpC,CA0KA,SAAS8q1B,KACL,SAASlC,EAAU1llC,EAAGC,GAClB,OAAOA,EAAEzF,OAASwF,EAAExF,MACxB,CAEA,IAII/O,EACA4q2B,EACAwxP,EACAC,EACAC,EARAC,EAAY,GACZnC,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAKt6lC,EAAI,EAAGA,EAAI,EAAGA,IAEf4q2B,EAAMonP,EAAU,CAAC,IAAM,IAAI/5/B,IAAIj4F,GAC/Bo8lC,EAAOpE,GAAYr9kC,KAAK1e,YAAY2u2B,EAAK,KACzCyxP,EAASrE,GAAYr9kC,KAAK3e,cAAc4u2B,EAAK,KAC7C0xP,EAAQtE,GAAYr9kC,KAAK5e,SAAS6u2B,EAAK,KACvC2xP,EAAU9tlC,KAAK2tlC,GACfhC,EAAY3rlC,KAAK4tlC,GACjBhC,EAAW5rlC,KAAK6tlC,GAChBhC,EAAY7rlC,KAAK2tlC,GACjB9B,EAAY7rlC,KAAK4tlC,GACjB/B,EAAY7rlC,KAAK6tlC,GAIrBC,EAAUxulC,KAAKkslC,GACfG,EAAYrslC,KAAKkslC,GACjBI,EAAWtslC,KAAKkslC,GAChBK,EAAYvslC,KAAKkslC,GAEjBt/kC,KAAK6hlC,eAAiB,IAAI/vjC,OAAO,KAAO6tjC,EAAYzhlC,KAAK,KAAO,IAAK,KACrE8B,KAAK8hlC,oBAAsB9hlC,KAAK6hlC,eAChC7hlC,KAAK+hlC,kBAAoB/hlC,KAAK6hlC,eAE9B7hlC,KAAKgilC,qBAAuB,IAAIlwjC,OAC5B,KAAO4tjC,EAAWxhlC,KAAK,KAAO,IAC9B,KAEJ8B,KAAKiilC,0BAA4B,IAAInwjC,OACjC,KAAO2tjC,EAAYvhlC,KAAK,KAAO,IAC/B,KAEJ8B,KAAKkilC,wBAA0B,IAAIpwjC,OAC/B,KAAO8vjC,EAAU1jlC,KAAK,KAAO,IAC7B,IAER,CAIA,SAASiklC,KACL,OAAOnilC,KAAKorL,QAAU,IAAM,EAChC,CAoCA,SAASjpM,GAAS8hB,EAAOsxP,GACrBgl1B,EAAet2kC,EAAO,EAAG,EAAG,WACxB,OAAOjE,KAAKy6kC,aAAat4lC,SACrB6d,KAAKorL,QACLprL,KAAKqrL,UACLkqE,EAER,EACJ,CAOA,SAAS6s1B,GAAchnE,EAAUl9+B,GAC7B,OAAOA,EAAOmkjC,cAClB,CA/CA9H,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG4H,IAClC5H,EAAe,IAAK,CAAC,KAAM,GAAI,EAN/B,WACI,OAAOv6kC,KAAKorL,SAAW,EAC3B,GAMAmv5B,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK4H,GAAQrhlC,MAAMd,MAAQ+5kC,EAAS/5kC,KAAKqrL,UAAW,EAC/D,GAEAkv5B,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACA4H,GAAQrhlC,MAAMd,MACd+5kC,EAAS/5kC,KAAKqrL,UAAW,GACzB0u5B,EAAS/5kC,KAAKsrL,UAAW,EAEjC,GAEAiv5B,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKv6kC,KAAKorL,QAAU2u5B,EAAS/5kC,KAAKqrL,UAAW,EACxD,GAEAkv5B,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAv6kC,KAAKorL,QACL2u5B,EAAS/5kC,KAAKqrL,UAAW,GACzB0u5B,EAAS/5kC,KAAKsrL,UAAW,EAEjC,GAYAnpM,GAAS,KAAK,GACdA,GAAS,KAAK,GAQd+6lC,GAAc,IAAKkF,IACnBlF,GAAc,IAAKkF,IACnBlF,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAE/BiB,GAAc,MAAOZ,GACrBY,GAAc,QAASX,GACvBW,GAAc,MAAOZ,GACrBY,GAAc,QAASX,GAEvBkB,GAAc,CAAC,IAAK,MAAOhsF,IAC3BgsF,GAAc,CAAC,IAAK,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,GAC/C,IAAIujlC,EAASzr1B,GAAM50Q,GACnBoyB,EAAMo9+B,IAAmB,KAAX6wF,EAAgB,EAAIA,CACtC,GACA7E,GAAc,CAAC,IAAK,KAAM,SAAUx7lC,EAAOoyB,EAAOtV,GAC9CA,EAAOwjlC,MAAQxjlC,EAAOk6kC,QAAQj3lC,KAAKC,GACnC8c,EAAOyjlC,UAAYvgmC,CACvB,GACAw7lC,GAAc,CAAC,IAAK,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,GAC/CsV,EAAMo9+B,IAAQ56vB,GAAM50Q,GACpBs1lC,EAAgBx4kC,GAAQy5kC,SAAU,CACtC,GACAiF,GAAc,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,GACzC,IAAIwT,EAAMtwB,EAAMmS,OAAS,EACzBigB,EAAMo9+B,IAAQ56vB,GAAM50Q,EAAMkwH,OAAO,EAAG5/F,IACpC8B,EAAMw9+B,IAAUh7vB,GAAM50Q,EAAMkwH,OAAO5/F,IACnCglkC,EAAgBx4kC,GAAQy5kC,SAAU,CACtC,GACAiF,GAAc,QAAS,SAAUx7lC,EAAOoyB,EAAOtV,GAC3C,IAAI0vM,EAAOxsN,EAAMmS,OAAS,EACtBqulC,EAAOxgmC,EAAMmS,OAAS,EAC1BigB,EAAMo9+B,IAAQ56vB,GAAM50Q,EAAMkwH,OAAO,EAAGs8F,IACpCp6L,EAAMw9+B,IAAUh7vB,GAAM50Q,EAAMkwH,OAAOs8F,EAAM,IACzCp6L,EAAM69+B,IAAUr7vB,GAAM50Q,EAAMkwH,OAAOsw+B,IACnClL,EAAgBx4kC,GAAQy5kC,SAAU,CACtC,GACAiF,GAAc,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,GACzC,IAAIwT,EAAMtwB,EAAMmS,OAAS,EACzBigB,EAAMo9+B,IAAQ56vB,GAAM50Q,EAAMkwH,OAAO,EAAG5/F,IACpC8B,EAAMw9+B,IAAUh7vB,GAAM50Q,EAAMkwH,OAAO5/F,GACvC,GACAkrkC,GAAc,QAAS,SAAUx7lC,EAAOoyB,EAAOtV,GAC3C,IAAI0vM,EAAOxsN,EAAMmS,OAAS,EACtBqulC,EAAOxgmC,EAAMmS,OAAS,EAC1BigB,EAAMo9+B,IAAQ56vB,GAAM50Q,EAAMkwH,OAAO,EAAGs8F,IACpCp6L,EAAMw9+B,IAAUh7vB,GAAM50Q,EAAMkwH,OAAOs8F,EAAM,IACzCp6L,EAAM69+B,IAAUr7vB,GAAM50Q,EAAMkwH,OAAOsw+B,GACvC,GAUA,IAKIC,GAAavE,GAAW,SAAS,GAUrC,IAuBIwE,GAvBAC,GAAa,CACbrgmC,SA1mDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAqmDVrB,eA9+CwB,CACxBE,IAAK,YACLD,GAAI,SACJE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAy+CNyiY,YA58CqB,eA68CrBpgY,QAv8CiB,KAw8CjBD,uBAv8CgC,UAw8ChCpB,aAl8CsB,CACtBC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJo2B,EAAG,SACHi/H,GAAI,WACJp1J,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAo7CJ3C,OAAQw9lC,GACRt9lC,YAAau9lC,GAEbt6lC,KAvkBoB,CACpBC,IAAK,EACLC,IAAK,GAukBLlD,SAAUy/lC,GACVv/lC,YAAay/lC,GACb1/lC,cAAey/lC,GAEf/+lC,cAhC6B,iBAoC7BuziB,GAAU,CAAC,EACXutjB,GAAiB,CAAC,EAGtB,SAASC,GAAa30vB,EAAMv0O,GACxB,IAAIv0H,EACA09lC,EAAOv9lC,KAAKkE,IAAIykW,EAAK/5V,OAAQwlH,EAAKxlH,QACtC,IAAK/O,EAAI,EAAGA,EAAI09lC,EAAM19lC,GAAK,EACvB,GAAI8oW,EAAK9oW,KAAOu0H,EAAKv0H,GACjB,OAAOA,EAGf,OAAO09lC,CACX,CAEA,SAASC,GAAgBx4lC,GACrB,OAAOA,EAAMA,EAAIpC,cAAcrE,QAAQ,IAAK,KAAOyG,CACvD,CA2CA,SAASy4lC,GAAW1vlC,GAChB,IAAI2vlC,EAAY,KAGhB,QACsBpslC,IAAlBw+hB,GAAQ/hiB,IAERmuF,GACAA,EAAOj9F,SAdf,SAA0B8O,GAGtB,SAAUA,IAAQA,EAAKvP,MAAM,eACjC,CAWQm/lC,CAAiB5vlC,GAEjB,IACI2vlC,EAAYP,GAAaS,MAEzB,SAAe,KAAc7vlC,GAC7B8vlC,GAAmBH,EACvB,CAAE,MAAOl+lC,GAGLswiB,GAAQ/hiB,GAAQ,IACpB,CAEJ,OAAO+hiB,GAAQ/hiB,EACnB,CAKA,SAAS8vlC,GAAmB74lC,EAAKo+B,GAC7B,IAAI7yB,EAqBJ,OApBIvL,KAEIuL,EADAk+H,EAAYrrG,GACL06jC,GAAU94lC,GAEVxJ,GAAawJ,EAAKo+B,IAKzB+5jC,GAAe5slC,EAEQ,oBAAZ68B,SAA2BA,QAAQ/lB,MAE1C+lB,QAAQ/lB,KACJ,UAAYriB,EAAM,2CAM3Bm4lC,GAAaS,KACxB,CAEA,SAASpimC,GAAauS,EAAMwL,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAIm/B,EACA07iC,EAAegJ,GAEnB,GADA7jlC,EAAO82d,KAAOtie,EACO,MAAjB+hiB,GAAQ/hiB,GACRmmlC,EACI,uBACA,2OAKJE,EAAetkjB,GAAQ/hiB,GAAMmnE,aAC1B,GAA2B,MAAvB37D,EAAOwklC,aACd,GAAoC,MAAhCjujB,GAAQv2hB,EAAOwklC,cACf3J,EAAetkjB,GAAQv2hB,EAAOwklC,cAAc7ohC,YACzC,CAEH,GAAc,OADdx8B,EAAS+kjC,GAAWlklC,EAAOwklC,eAWvB,OAPKV,GAAe9jlC,EAAOwklC,gBACvBV,GAAe9jlC,EAAOwklC,cAAgB,IAE1CV,GAAe9jlC,EAAOwklC,cAAczvlC,KAAK,CACrCP,KAAMA,EACNwL,OAAQA,IAEL,KATP66kC,EAAe17iC,EAAOw8B,OAW9B,CAeJ,OAbA46d,GAAQ/hiB,GAAQ,IAAIumlC,EAAOH,EAAaC,EAAc76kC,IAElD8jlC,GAAetvlC,IACfsvlC,GAAetvlC,GAAMvB,QAAQ,SAAUzL,GACnCvF,GAAauF,EAAEgN,KAAMhN,EAAEwY,OAC3B,GAMJsklC,GAAmB9vlC,GAEZ+hiB,GAAQ/hiB,EACnB,CAGI,cADO+hiB,GAAQ/hiB,GACR,IAEf,CAgDA,SAAS+vlC,GAAU94lC,GACf,IAAI0zC,EAMJ,GAJI1zC,GAAOA,EAAIyulC,SAAWzulC,EAAIyulC,QAAQmK,QAClC54lC,EAAMA,EAAIyulC,QAAQmK,QAGjB54lC,EACD,OAAOm4lC,GAGX,IAAK5ykC,EAAQvlB,GAAM,CAGf,GADA0zC,EAAS+kjC,GAAWz4lC,GAEhB,OAAO0zC,EAEX1zC,EAAM,CAACA,EACX,CAEA,OAnNJ,SAAsBk6B,GAOlB,IANA,IACIsB,EACAl+B,EACAo2C,EACAh9C,EAJAmE,EAAI,EAMDA,EAAIq/B,EAAMtwB,QAAQ,CAKrB,IAHA4xB,GADA9kC,EAAQ8hmC,GAAgBt+jC,EAAMr/B,IAAInE,MAAM,MAC9BkT,OAEVtM,GADAA,EAAOk7lC,GAAgBt+jC,EAAMr/B,EAAI,KACnByC,EAAK5G,MAAM,KAAO,KACzB8kC,EAAI,GAAG,CAEV,GADAkY,EAAS+kjC,GAAW/hmC,EAAM4Z,MAAM,EAAGkrB,GAAG9nB,KAAK,MAEvC,OAAOggC,EAEX,GACIp2C,GACAA,EAAKsM,QAAU4xB,GACf88jC,GAAa5hmC,EAAO4G,IAASk+B,EAAI,EAGjC,MAEJA,GACJ,CACA3gC,GACJ,CACA,OAAOs9lC,EACX,CAqLWa,CAAah5lC,EACxB,CAMA,SAASi5lC,GAActgmC,GACnB,IAAImK,EACAsM,EAAIzW,EAAEqgB,GAuCV,OArCI5J,IAAsC,IAAjC29kC,EAAgBp0lC,GAAGmK,WACxBA,EACIsM,EAAEu24B,IAAS,GAAKv24B,EAAEu24B,IAAS,GACrBA,GACAv24B,EAAE4vsB,IAAQ,GAAK5vsB,EAAE4vsB,IAAQ+0Y,GAAY3klC,EAAE+4/B,IAAO/4/B,EAAEu24B,KAC9C3mM,GACA5vsB,EAAE63/B,IAAQ,GACR73/B,EAAE63/B,IAAQ,IACG,KAAZ73/B,EAAE63/B,MACgB,IAAd73/B,EAAEi4/B,KACe,IAAdj4/B,EAAEs4/B,KACiB,IAAnBt4/B,EAAEkklC,KACVrsF,GACA73/B,EAAEi4/B,IAAU,GAAKj4/B,EAAEi4/B,IAAU,GAC3BA,GACAj4/B,EAAEs4/B,IAAU,GAAKt4/B,EAAEs4/B,IAAU,GAC3BA,GACAt4/B,EAAEkklC,IAAe,GAAKlklC,EAAEkklC,IAAe,IACrCA,IACC,EAGjBvG,EAAgBp0lC,GAAGugmC,qBAClBp2lC,EAAWqlgC,IAAQrlgC,EAAWk8sB,MAE/Bl8sB,EAAWk8sB,IAEX+tY,EAAgBp0lC,GAAGwgmC,iBAAgC,IAAdr2lC,IACrCA,EAAWywlC,IAEXxG,EAAgBp0lC,GAAGygmC,mBAAkC,IAAdt2lC,IACvCA,EAAWglgC,IAGfilF,EAAgBp0lC,GAAGmK,SAAWA,GAG3BnK,CACX,CAIA,IAAI0gmC,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBhM,GACI,0LACJiM,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc/llC,GACnB,IAAI1Z,EACAmzB,EAGAuskC,EACA5qM,EACAhua,EACA64mB,EALAlhmC,EAASib,EAAOpE,GAChB3W,EAAQ6/lC,GAAiBx+jC,KAAKvhC,IAAWggmC,GAAcz+jC,KAAKvhC,GAK5DmhmC,EAAcjB,GAAS5vlC,OACvB8wlC,EAAcjB,GAAS7vlC,OAE3B,GAAIpQ,EAAO,CAEP,IADAuzlC,EAAgBx4kC,GAAQm5S,KAAM,EACzB7yT,EAAI,EAAGmzB,EAAIyskC,EAAa5/lC,EAAImzB,EAAGnzB,IAChC,GAAI2+lC,GAAS3+lC,GAAG,GAAGggC,KAAKrhC,EAAM,IAAK,CAC/Bm25B,EAAa6pM,GAAS3+lC,GAAG,GACzB0/lC,GAA+B,IAAnBf,GAAS3+lC,GAAG,GACxB,KACJ,CAEJ,GAAkB,MAAd805B,EAEA,YADAp74B,EAAOmqyB,UAAW,GAGtB,GAAIllzB,EAAM,GAAI,CACV,IAAKqB,EAAI,EAAGmzB,EAAI0skC,EAAa7/lC,EAAImzB,EAAGnzB,IAChC,GAAI4+lC,GAAS5+lC,GAAG,GAAGggC,KAAKrhC,EAAM,IAAK,CAE/Bmof,GAAcnof,EAAM,IAAM,KAAOigmC,GAAS5+lC,GAAG,GAC7C,KACJ,CAEJ,GAAkB,MAAd8mf,EAEA,YADApte,EAAOmqyB,UAAW,EAG1B,CACA,IAAK67S,GAA2B,MAAd54mB,EAEd,YADApte,EAAOmqyB,UAAW,GAGtB,GAAIllzB,EAAM,GAAI,CACV,IAAI+/lC,GAAQ1+jC,KAAKrhC,EAAM,IAInB,YADA+a,EAAOmqyB,UAAW,GAFlB87S,EAAW,GAKnB,CACAjmlC,EAAOwyJ,GAAK4ovB,GAAchua,GAAc,KAAO64mB,GAAY,IAC3DG,GAA0BpmlC,EAC9B,MACIA,EAAOmqyB,UAAW,CAE1B,CAyBA,SAASk8S,GAAeC,GACpB,IAAI5ngC,EAAOt3D,SAASk/jC,EAAS,IAC7B,OAAI5ngC,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,CACX,CA4CA,SAAS6ngC,GAAkBvmlC,GACvB,IACIwmlC,EA5EJF,EACAG,EACAC,EACAC,EACAC,EACAC,EAEIzylC,EAoEAnP,EAAQk0lC,GAAQ7yjC,KAAuBtmB,EAAOpE,GAxC7C5W,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCvB,GAAIC,EAAO,CASP,GAtFJqhmC,EA+EQrhmC,EAAM,GA9EdwhmC,EA+EQxhmC,EAAM,GA9EdyhmC,EA+EQzhmC,EAAM,GA9Ed0hmC,EA+EQ1hmC,EAAM,GA9Ed2hmC,EA+EQ3hmC,EAAM,GA9Ed4hmC,EA+EQ5hmC,EAAM,GA7EVmP,EAAS,CACTiylC,GAAeC,GACf3G,GAAyBn2lC,QAAQi9lC,GACjCr/jC,SAASs/jC,EAAQ,IACjBt/jC,SAASu/jC,EAAS,IAClBv/jC,SAASw/jC,EAAW,KAGpBC,GACAzylC,EAAOW,KAAKqyB,SAASy/jC,EAAW,KA8DhCL,EA3DGpylC,GAsBX,SAAsB0ylC,EAAYC,EAAa/mlC,GAC3C,OAAI8mlC,GAEsB/E,GAA2Bv4lC,QAAQs9lC,KACrC,IAAIh9kC,KAChBi9kC,EAAY,GACZA,EAAY,GACZA,EAAY,IACd1o9B,WAEFm68B,EAAgBx4kC,GAAQo5kC,iBAAkB,EAC1Cp5kC,EAAOmqyB,UAAW,GACX,EAInB,CA6Ba68S,CAAa/hmC,EAAM,GAAIuhmC,EAAaxmlC,GACrC,OAGJA,EAAOyE,GAAK+hlC,EACZxmlC,EAAOg6kC,KAhCf,SAAyBiN,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO7B,GAAW6B,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIvl/B,EAAKv6E,SAAS+/jC,EAAW,IACzB/imC,EAAIu9G,EAAK,IAEb,OADSA,EAAKv9G,GAAK,IACR,GAAKA,CAExB,CAoBsBgjmC,CAAgBnimC,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExD+a,EAAOksG,GAAKg1+B,GAAcn/kC,MAAM,KAAM/B,EAAOyE,IAC7CzE,EAAOksG,GAAGq9X,cAAcvpe,EAAOksG,GAAGigR,gBAAkBnsX,EAAOg6kC,MAE3DxB,EAAgBx4kC,GAAQm5kC,SAAU,CACtC,MACIn5kC,EAAOmqyB,UAAW,CAE1B,CA0CA,SAASrgxB,GAASjvB,EAAGC,EAAGjU,GACpB,OAAS,MAALgU,EACOA,EAEF,MAALC,EACOA,EAEJjU,CACX,CAmBA,SAASwgmC,GAAgBrnlC,GACrB,IAAI1Z,EACAi8C,EAEAgogB,EACA+8iB,EACAC,EAHArkmC,EAAQ,GAKZ,IAAI8c,EAAOksG,GAAX,CAgCA,IA5BAq+b,EA7BJ,SAA0BvqiB,GAEtB,IAAIwnlC,EAAW,IAAI19kC,KAAK48O,EAAM38O,OAC9B,OAAI/J,EAAOynlC,QACA,CACHD,EAASz7tB,iBACTy7tB,EAASv7tB,cACTu7tB,EAAS5/1B,cAGV,CAAC4/1B,EAAS1g/B,cAAe0g/B,EAAS5g/B,WAAY4g/B,EAAShh/B,UAClE,CAkBkBkh/B,CAAiB1nlC,GAG3BA,EAAO6+kC,IAAyB,MAAnB7+kC,EAAOyE,GAAGgmsB,KAAqC,MAApBzqsB,EAAOyE,GAAG2s4B,KA0E1D,SAA+Bpx4B,GAC3B,IAAI6a,EAAGsyW,EAAU9nY,EAAMm5D,EAASl5D,EAAKC,EAAK82G,EAAMsr/B,EAAiBtxM,EAGrD,OADZx73B,EAAI7a,EAAO6+kC,IACLjwyB,IAAqB,MAAP/zR,EAAEW,GAAoB,MAAPX,EAAEV,GACjC70B,EAAM,EACNC,EAAM,EAMN4nY,EAAWrjW,GACPjP,EAAE+zR,GACF5uS,EAAOyE,GAAGmv/B,IACV9mhB,GAAW86mB,KAAe,EAAG,GAAGlpgC,MAEpCr5F,EAAOykC,GAASjP,EAAEW,EAAG,KACrBgjC,EAAU10B,GAASjP,EAAEV,EAAG,IACV,GAAKqkC,EAAU,KACzBmpiC,GAAkB,KAGtBrimC,EAAM0a,EAAOk6kC,QAAQ2N,MAAMvimC,IAC3BC,EAAMya,EAAOk6kC,QAAQ2N,MAAMtimC,IAE3B8w5B,EAAUvpa,GAAW86mB,KAAetimC,EAAKC,GAEzC4nY,EAAWrjW,GAASjP,EAAEsya,GAAIntb,EAAOyE,GAAGmv/B,IAAOv9G,EAAQ33zB,MAGnDr5F,EAAOykC,GAASjP,EAAEA,EAAGw73B,EAAQhx5B,MAElB,MAAPw1B,EAAEr2B,IAEFg6D,EAAU3jC,EAAEr2B,GACE,GAAKg6D,EAAU,KACzBmpiC,GAAkB,GAER,MAAP9skC,EAAE50B,GAETu4D,EAAU3jC,EAAE50B,EAAIX,GACZu1B,EAAE50B,EAAI,GAAK40B,EAAE50B,EAAI,KACjB0hmC,GAAkB,IAItBnpiC,EAAUl5D,GAGdD,EAAO,GAAKA,EAAOm8lC,GAAYr0tB,EAAU7nY,EAAKC,GAC9CizlC,EAAgBx4kC,GAAQ4klC,gBAAiB,EACf,MAAnB+C,EACPnP,EAAgBx4kC,GAAQ6klC,kBAAmB,GAE3Cxo/B,EAAO8k/B,GAAmBh0tB,EAAU9nY,EAAMm5D,EAASl5D,EAAKC,GACxDya,EAAOyE,GAAGmv/B,IAAQv35B,EAAK3d,KACvB1+E,EAAO8nlC,WAAazr/B,EAAKoxR,UAEjC,CApIQs6tB,CAAsB/nlC,GAID,MAArBA,EAAO8nlC,aACPP,EAAYz9jC,GAAS9pB,EAAOyE,GAAGmv/B,IAAOrpd,EAAYqpd,MAG9C5z/B,EAAO8nlC,WAAa7I,GAAWsI,IACT,IAAtBvnlC,EAAO8nlC,cAEPtP,EAAgBx4kC,GAAQ2klC,oBAAqB,GAGjDpijC,EAAO2+iC,GAAcqG,EAAW,EAAGvnlC,EAAO8nlC,YAC1C9nlC,EAAOyE,GAAG2s4B,IAAS7u2B,EAAK0pV,cACxBjsX,EAAOyE,GAAGgmsB,IAAQloqB,EAAKqlN,cAQtBthQ,EAAI,EAAGA,EAAI,GAAqB,MAAhB0Z,EAAOyE,GAAGne,KAAcA,EACzC0Z,EAAOyE,GAAGne,GAAKpD,EAAMoD,GAAKikjB,EAAYjkjB,GAI1C,KAAOA,EAAI,EAAGA,IACV0Z,EAAOyE,GAAGne,GAAKpD,EAAMoD,GACD,MAAhB0Z,EAAOyE,GAAGne,GAAoB,IAANA,EAAU,EAAI,EAAK0Z,EAAOyE,GAAGne,GAKrC,KAApB0Z,EAAOyE,GAAGiu/B,KACY,IAAtB1y/B,EAAOyE,GAAGqu/B,KACY,IAAtB9y/B,EAAOyE,GAAG0u/B,KACiB,IAA3Bnz/B,EAAOyE,GAAGs6kC,MAEV/+kC,EAAOgolC,UAAW,EAClBholC,EAAOyE,GAAGiu/B,IAAQ,GAGtB1y/B,EAAOksG,IAAMlsG,EAAOynlC,QAAUvG,GAAgBD,IAAYl/kC,MACtD,KACA7e,GAEJokmC,EAAkBtnlC,EAAOynlC,QACnBznlC,EAAOksG,GAAGw7I,YACV1nP,EAAOksG,GAAGmyB,SAIG,MAAfr+H,EAAOg6kC,MACPh6kC,EAAOksG,GAAGq9X,cAAcvpe,EAAOksG,GAAGigR,gBAAkBnsX,EAAOg6kC,MAG3Dh6kC,EAAOgolC,WACPholC,EAAOyE,GAAGiu/B,IAAQ,IAKlB1y/B,EAAO6+kC,SACgB,IAAhB7+kC,EAAO6+kC,GAAGr6lC,GACjBwb,EAAO6+kC,GAAGr6lC,IAAM8imC,IAEhB9O,EAAgBx4kC,GAAQo5kC,iBAAkB,EA3E9C,CA6EJ,CAsEA,SAASgN,GAA0BpmlC,GAE/B,GAAIA,EAAOwyJ,KAAOk0F,EAAMuh2B,SAIxB,GAAIjolC,EAAOwyJ,KAAOk0F,EAAMwh2B,SAAxB,CAIAlolC,EAAOyE,GAAK,GACZ+zkC,EAAgBx4kC,GAAQ86P,OAAQ,EAGhC,IACIx0Q,EACAygmC,EACAr0/B,EACAxtF,EACAwzf,EAGAlsU,EACAmy5B,EATA55lC,EAAS,GAAKib,EAAOpE,GAMrBi83B,EAAe9y4B,EAAOsQ,OACtB8ylC,EAAyB,EAO7B,IADAxJ,GAFAjs/B,EACImp/B,EAAa77kC,EAAOwyJ,GAAIxyJ,EAAOk6kC,SAASj1lC,MAAMm2lC,IAAqB,IACrD/llC,OACb/O,EAAI,EAAGA,EAAIq4lC,EAAUr4lC,IACtB4e,EAAQwtF,EAAOpsG,IACfygmC,GAAehimC,EAAOE,MAAMo5lC,GAAsBn5kC,EAAOlF,KACrD,IAAI,OAEJ04f,EAAU3zgB,EAAOquH,OAAO,EAAGruH,EAAOyE,QAAQu9lC,KAC9B1xlC,OAAS,GACjBmjlC,EAAgBx4kC,GAAQ24kC,YAAY5jlC,KAAK2jgB,GAE7C3zgB,EAASA,EAAOgX,MACZhX,EAAOyE,QAAQu9lC,GAAeA,EAAY1xlC,QAE9C8ylC,GAA0BpB,EAAY1xlC,QAGtCkmlC,EAAqBr2kC,IACjB6hlC,EACAvO,EAAgBx4kC,GAAQ86P,OAAQ,EAEhC090B,EAAgBx4kC,GAAQ04kC,aAAa3jlC,KAAKmQ,GAE9C45kC,GAAwB55kC,EAAO6hlC,EAAa/mlC,IACrCA,EAAOw5kC,UAAYuN,GAC1BvO,EAAgBx4kC,GAAQ04kC,aAAa3jlC,KAAKmQ,GAKlDszkC,EAAgBx4kC,GAAQ44kC,cACpB/gN,EAAeswN,EACfpjmC,EAAOsQ,OAAS,GAChBmjlC,EAAgBx4kC,GAAQ24kC,YAAY5jlC,KAAKhQ,GAKzCib,EAAOyE,GAAGiu/B,KAAS,KACiB,IAApC8lF,EAAgBx4kC,GAAQy5kC,SACxBz5kC,EAAOyE,GAAGiu/B,IAAQ,IAElB8lF,EAAgBx4kC,GAAQy5kC,aAAU1hlC,GAGtCyglC,EAAgBx4kC,GAAQk5kC,gBAAkBl5kC,EAAOyE,GAAG1I,MAAM,GAC1Dy8kC,EAAgBx4kC,GAAQ5c,SAAW4c,EAAOyjlC,UAE1CzjlC,EAAOyE,GAAGiu/B,IAgBd,SAAyBvz9B,EAAQ97C,EAAMD,GACnC,IAAIglmC,EAEJ,OAAgB,MAAZhlmC,EAEOC,EAEgB,MAAvB87C,EAAOuiE,aACAviE,EAAOuiE,aAAar+G,EAAMD,GACX,MAAf+7C,EAAOl8C,OAEdmlmC,EAAOjpjC,EAAOl8C,KAAKG,KACPC,EAAO,KACfA,GAAQ,IAEP+kmC,GAAiB,KAAT/kmC,IACTA,EAAO,GAEJA,GAGAA,CAEf,CAvCsBglmC,CACdrolC,EAAOk6kC,QACPl6kC,EAAOyE,GAAGiu/B,IACV1y/B,EAAOyjlC,WAKC,QADZj35B,EAAMgs5B,EAAgBx4kC,GAAQwsL,OAE1BxsL,EAAOyE,GAAGmv/B,IAAQ5z/B,EAAOk6kC,QAAQoO,gBAAgB975B,EAAKxsL,EAAOyE,GAAGmv/B,MAGpEyzF,GAAgBrnlC,GAChB0klC,GAAc1klC,EA9Ed,MAFIumlC,GAAkBvmlC,QAJlB+llC,GAAc/llC,EAqFtB,CAqHA,SAASuolC,GAAcvolC,GACnB,IAAI9c,EAAQ8c,EAAOpE,GACf6jC,EAASz/B,EAAOwyJ,GAIpB,OAFAxyJ,EAAOk6kC,QAAUl6kC,EAAOk6kC,SAAWqK,GAAUvklC,EAAOixL,IAEtC,OAAV/tM,QAA8B6U,IAAX0nC,GAAkC,KAAVv8C,EACpCw2lC,EAAc,CAAEb,WAAW,KAGjB,iBAAV31lC,IACP8c,EAAOpE,GAAK1Y,EAAQ8c,EAAOk6kC,QAAQp1lC,SAAS5B,IAG5Cm3lC,EAASn3lC,GACF,IAAIi3lC,EAAOuK,GAAcxhmC,KACzB4nO,EAAO5nO,GACd8c,EAAOksG,GAAKhpH,EACL8tB,EAAQyuB,GA3GvB,SAAkCz/B,GAC9B,IAAIwolC,EACAC,EACAC,EACApimC,EACAqimC,EACAC,EACAC,GAAoB,EACpBC,EAAa9olC,EAAOwyJ,GAAGn9J,OAE3B,GAAmB,IAAfyzlC,EAGA,OAFAtQ,EAAgBx4kC,GAAQg5kC,eAAgB,OACxCh5kC,EAAOksG,GAAK,IAAIpiG,KAAKvjB,MAIzB,IAAKD,EAAI,EAAGA,EAAIwimC,EAAYximC,IACxBqimC,EAAe,EACfC,GAAmB,EACnBJ,EAAa3O,EAAW,CAAC,EAAG75kC,GACN,MAAlBA,EAAOynlC,UACPe,EAAWf,QAAUznlC,EAAOynlC,SAEhCe,EAAWh27B,GAAKxyJ,EAAOwyJ,GAAGlsK,GAC1B8/lC,GAA0BoC,GAEtBz+4B,EAAQy+4B,KACRI,GAAmB,GAIvBD,GAAgBnQ,EAAgBgQ,GAAY5P,cAG5C+P,GAAkE,GAAlDnQ,EAAgBgQ,GAAY9P,aAAarjlC,OAEzDmjlC,EAAgBgQ,GAAYh5kC,MAAQm5kC,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpC5k/B,EAAOjkG,EAAQyolC,GAAcD,EACjC,CAiDQO,CAAyB/olC,GAClBy/B,EACP2mjC,GAA0BpmlC,GAYlC,SAAyBA,GACrB,IAAI9c,EAAQ8c,EAAOpE,GACfs5H,EAAYhyI,GACZ8c,EAAOksG,GAAK,IAAIpiG,KAAK48O,EAAM38O,OACpB+gN,EAAO5nO,GACd8c,EAAOksG,GAAK,IAAIpiG,KAAK5mB,EAAM00N,WACH,iBAAV10N,EAndtB,SAA0B8c,GACtB,IAAIvS,EAAU03lC,GAAgB7+jC,KAAKtmB,EAAOpE,IAC1B,OAAZnO,GAKJs4lC,GAAc/llC,IACU,IAApBA,EAAOmqyB,kBACAnqyB,EAAOmqyB,SAKlBo8S,GAAkBvmlC,IACM,IAApBA,EAAOmqyB,kBACAnqyB,EAAOmqyB,SAKdnqyB,EAAOw5kC,QACPx5kC,EAAOmqyB,UAAW,EAGlBzjjB,EAAMsi2B,wBAAwBhplC,MAtB9BA,EAAOksG,GAAK,IAAIpiG,MAAMrc,EAAQ,GAwBtC,CAybQw7lC,CAAiBjplC,GACVgR,EAAQ9tB,IACf8c,EAAOyE,GAAKzQ,EAAI9Q,EAAM6Y,MAAM,GAAI,SAAUwX,GACtC,OAAO6T,SAAS7T,EAAK,GACzB,GACA8zkC,GAAgBrnlC,IACTkR,EAAShuB,GA1ExB,SAA0B8c,GACtB,IAAIA,EAAOksG,GAAX,CAIA,IAAI5lH,EAAIu2lC,EAAqB78kC,EAAOpE,IAChCstlC,OAAsBnxlC,IAAVzR,EAAEi4F,IAAoBj4F,EAAEi8C,KAAOj8C,EAAEi4F,IACjDv+E,EAAOyE,GAAKzQ,EACR,CAAC1N,EAAEo4F,KAAMp4F,EAAEk4F,MAAO0qgC,EAAW5imC,EAAEjD,KAAMiD,EAAEhD,OAAQgD,EAAEg4F,OAAQh4F,EAAE63F,aAC3D,SAAU5qE,GACN,OAAOA,GAAO6T,SAAS7T,EAAK,GAChC,GAGJ8zkC,GAAgBrnlC,EAXhB,CAYJ,CA4DQmplC,CAAiBnplC,GACVmV,EAASjyB,GAEhB8c,EAAOksG,GAAK,IAAIpiG,KAAK5mB,GAErBwjQ,EAAMsi2B,wBAAwBhplC,EAEtC,CA/BQoplC,CAAgBpplC,GAGf+pM,EAAQ/pM,KACTA,EAAOksG,GAAK,MAGTlsG,GACX,CAyBA,SAASu4kC,GAAiBr1lC,EAAOu8C,EAAQN,EAAQ+kE,EAAQq7+B,GACrD,IAnEIl6iC,EAmEAx+C,EAAI,CAAC,EA2BT,OAzBe,IAAX44C,IAA8B,IAAXA,IACnBykE,EAASzkE,EACTA,OAAS1nC,IAGE,IAAXonC,IAA8B,IAAXA,IACnB+kE,EAAS/kE,EACTA,OAASpnC,IAIRmZ,EAAShuB,IAAUsxT,EAActxT,IACjC8tB,EAAQ9tB,IAA2B,IAAjBA,EAAMmS,UAEzBnS,OAAQ6U,GAIZlR,EAAEkzlC,kBAAmB,EACrBlzlC,EAAE4gmC,QAAU5gmC,EAAEozlC,OAASsF,EACvB14lC,EAAEoqM,GAAK9xJ,EACPt4C,EAAE+U,GAAK1Y,EACP2D,EAAE2rK,GAAK/yH,EACP54C,EAAE2ylC,QAAUt1+B,GA5FR7+D,EAAM,IAAI80iC,EAAOuK,GAAc6D,GA8FX1hmC,MA7FhBmhmC,WAEJ3ijC,EAAI9wC,IAAI,EAAG,KACX8wC,EAAI2ijC,cAAWjwlC,GAGZstC,CAwFX,CAEA,SAASuijC,GAAY1kmC,EAAOu8C,EAAQN,EAAQ+kE,GACxC,OAAOq0+B,GAAiBr1lC,EAAOu8C,EAAQN,EAAQ+kE,GAAQ,EAC3D,CAxeAwiJ,EAAMsi2B,wBAA0BzO,EAC5B,gSAGA,SAAUv6kC,GACNA,EAAOksG,GAAK,IAAIpiG,KAAK9J,EAAOpE,IAAMoE,EAAOynlC,QAAU,OAAS,IAChE,GAsLJ/g2B,EAAMuh2B,SAAW,WAAa,EAG9Bvh2B,EAAMwh2B,SAAW,WAAa,EA2S9B,IAAImB,GAAe9O,EACX,qGACA,WACI,IAAIz4hC,EAAQ8liC,GAAY7llC,MAAM,KAAM3M,WACpC,OAAI6L,KAAK8oM,WAAajoJ,EAAMioJ,UACjBjoJ,EAAQ7gD,KAAOA,KAAO6gD,EAEtB43hC,GAEf,GAEJ4P,GAAe/O,EACX,qGACA,WACI,IAAIz4hC,EAAQ8liC,GAAY7llC,MAAM,KAAM3M,WACpC,OAAI6L,KAAK8oM,WAAajoJ,EAAMioJ,UACjBjoJ,EAAQ7gD,KAAOA,KAAO6gD,EAEtB43hC,GAEf,GAQR,SAAS6P,GAAOxzlC,EAAIyzlC,GAChB,IAAInkjC,EAAK/+C,EAIT,GAHuB,IAAnBkjmC,EAAQn0lC,QAAgB2b,EAAQw4kC,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQn0lC,OACT,OAAOuylC,KAGX,IADAvijC,EAAMmkjC,EAAQ,GACTljmC,EAAI,EAAGA,EAAIkjmC,EAAQn0lC,SAAU/O,EACzBkjmC,EAAQljmC,GAAGyjN,YAAay/4B,EAAQljmC,GAAGyP,GAAIsvC,KACxCA,EAAMmkjC,EAAQljmC,IAGtB,OAAO++C,CACX,CAeA,IAIIokjC,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eA0CJ,SAASC,GAASvjlC,GACd,IAAI62kC,EAAkBH,EAAqB12kC,GACvCwme,EAAQqwmB,EAAgBt+/B,MAAQ,EAChC29/B,EAAWW,EAAgBv+/B,SAAW,EACtCv8F,EAAS86lC,EAAgBx+/B,OAAS,EAClCquZ,EAAQmwmB,EAAgB33lC,MAAQ23lC,EAAgBvnyB,SAAW,EAC3DjhN,EAAOwo/B,EAAgBz+/B,KAAO,EAC9B8tG,EAAQ2w5B,EAAgB35lC,MAAQ,EAChCipM,EAAU0w5B,EAAgB15lC,QAAU,EACpCipM,EAAUyw5B,EAAgB1+/B,QAAU,EACpCq3N,EAAeqnyB,EAAgB7+/B,aAAe,EAElDl9E,KAAKkpyB,SAnDT,SAAyB/lzB,GACrB,IAAIqH,EAEAnF,EADAqjmC,GAAiB,EAEjBC,EAAWH,GAASp0lC,OACxB,IAAK5J,KAAOrH,EACR,GACIi0lC,EAAWj0lC,EAAGqH,MAEuB,IAAjCjC,GAAQ8X,KAAKmolC,GAAUh+lC,IACZ,MAAVrH,EAAEqH,IAAiBzE,MAAM5C,EAAEqH,KAGhC,OAAO,EAIf,IAAKnF,EAAI,EAAGA,EAAIsjmC,IAAYtjmC,EACxB,GAAIlC,EAAEqlmC,GAASnjmC,IAAK,CAChB,GAAIqjmC,EACA,OAAO,EAEP/3kC,WAAWxtB,EAAEqlmC,GAASnjmC,OAASwxQ,GAAM1zQ,EAAEqlmC,GAASnjmC,OAChDqjmC,GAAiB,EAEzB,CAGJ,OAAO,CACX,CAsBoBE,CAAgB7M,GAGhC/7kC,KAAK6olC,eACAn0yB,EACS,IAAVppH,EACU,IAAVD,EACQ,IAARD,EAAe,GAAK,GAGxBprL,KAAK8olC,OAASv1/B,EAAe,EAARq4Y,EAIrB5re,KAAK+olC,SAAW9nmC,EAAoB,EAAXm6lC,EAAuB,GAAR1vmB,EAExC1re,KAAK8oC,MAAQ,CAAC,EAEd9oC,KAAKi5kC,QAAUqK,KAEftjlC,KAAKgplC,SACT,CAEA,SAASC,GAAW32kC,GAChB,OAAOA,aAAem2kC,EAC1B,CAEA,SAASS,GAASjmjC,GACd,OAAIA,EAAS,GACyB,EAA3Bz9C,KAAK+F,OAAO,EAAI03C,GAEhBz9C,KAAK+F,MAAM03C,EAE1B,CAqBA,SAASr+C,GAAOqf,EAAOurP,GACnB+q1B,EAAet2kC,EAAO,EAAG,EAAG,WACxB,IAAIrf,EAASob,KAAKmplC,YACdx1kC,EAAO,IAKX,OAJI/uB,EAAS,IACTA,GAAUA,EACV+uB,EAAO,KAGPA,EACAomkC,KAAYn1lC,EAAS,IAAK,GAC1B4qQ,EACAuq1B,IAAWn1lC,EAAS,GAAI,EAEhC,EACJ,CAEAA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbs4lC,GAAc,IAAKJ,IACnBI,GAAc,KAAMJ,IACpBW,GAAc,CAAC,IAAK,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,GAC/CA,EAAOynlC,SAAU,EACjBznlC,EAAOg6kC,KAAOqQ,GAAiBtM,GAAkB76lC,EACrD,GAOA,IAAIonmC,GAAc,kBAElB,SAASD,GAAiBjz+B,EAASryH,GAC/B,IAEIwyE,EACA+0H,EAHAp5J,GAAWnuC,GAAU,IAAIE,MAAMmyH,GAKnC,OAAgB,OAAZlkF,EACO,KAOQ,KAFnBo5J,EAAuB,IADvB/0H,IADQrkC,EAAQA,EAAQ79B,OAAS,IAAM,IACtB,IAAIpQ,MAAMqlmC,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWxy1B,GAAMvgM,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAa+0H,GAAWA,CAC7D,CAGA,SAASi+5B,GAAgBrnmC,EAAOm8W,GAC5B,IAAIh6T,EAAKiZ,EACT,OAAI+gT,EAAM46uB,QACN50iC,EAAMg6T,EAAMn5U,QACZo4B,GACK+7hC,EAASn3lC,IAAU4nO,EAAO5nO,GACrBA,EAAM00N,UACNgw4B,GAAY1kmC,GAAO00N,WAAavyK,EAAIuyK,UAE9CvyK,EAAI6mE,GAAG6pC,QAAQ1wG,EAAI6mE,GAAG0rG,UAAYt5J,GAClCooM,EAAM0z1B,aAAa/0iC,GAAK,GACjBA,GAEAuijC,GAAY1kmC,GAAO0pC,OAElC,CAEA,SAAS49jC,GAAcpmmC,GAGnB,OAAQqC,KAAK+F,MAAMpI,EAAE8nH,GAAG0yB,oBAC5B,CAyJA,SAAS6r9B,KACL,QAAOxplC,KAAK8oM,WAAY9oM,KAAKg5kC,QAA2B,IAAjBh5kC,KAAKtD,OAChD,CArJA+oP,EAAM0z1B,aAAe,WAAa,EAwJlC,IAAIsQ,GAAc,wDAIdC,GACI,sKAER,SAASp/jB,GAAeroiB,EAAOuI,GAC3B,IAGImpB,EACAkS,EACA8jkC,EA4FmBt+iC,EAAMwV,EACzBzc,EAlGAl/B,EAAWjjB,EAEX+B,EAAQ,KAkEZ,OA7DIilmC,GAAWhnmC,GACXijB,EAAW,CACPspS,GAAIvsT,EAAM4mmC,cACVtlmC,EAAGtB,EAAM6mmC,MACTrlmC,EAAGxB,EAAM8mmC,SAEN70kC,EAASjyB,KAAW8D,OAAO9D,IAClCijB,EAAW,CAAC,EACR1a,EACA0a,EAAS1a,IAAQvI,EAEjBijB,EAASwvS,cAAgBzyT,IAErB+B,EAAQylmC,GAAYpkkC,KAAKpjC,KACjC0xB,EAAoB,MAAb3vB,EAAM,IAAc,EAAI,EAC/BkhB,EAAW,CACPvhB,EAAG,EACHJ,EAAGszQ,GAAM7yQ,EAAMwltB,KAAS71rB,EACxBtwB,EAAGwzQ,GAAM7yQ,EAAMytgC,KAAS99+B,EACxBxwB,EAAG0zQ,GAAM7yQ,EAAM6tgC,KAAWl++B,EAC1B1wB,EAAG4zQ,GAAM7yQ,EAAMkugC,KAAWv++B,EAC1B66R,GAAI33C,GAAMqy1B,GAA8B,IAArBllmC,EAAM85lC,MAAwBnqkC,KAE7C3vB,EAAQ0lmC,GAASrkkC,KAAKpjC,KAC9B0xB,EAAoB,MAAb3vB,EAAM,IAAc,EAAI,EAC/BkhB,EAAW,CACPvhB,EAAGimmC,GAAS5lmC,EAAM,GAAI2vB,GACtBlwB,EAAGmmmC,GAAS5lmC,EAAM,GAAI2vB,GACtBiG,EAAGgwkC,GAAS5lmC,EAAM,GAAI2vB,GACtBpwB,EAAGqmmC,GAAS5lmC,EAAM,GAAI2vB,GACtBtwB,EAAGummC,GAAS5lmC,EAAM,GAAI2vB,GACtBxwB,EAAGymmC,GAAS5lmC,EAAM,GAAI2vB,GACtB1wB,EAAG2mmC,GAAS5lmC,EAAM,GAAI2vB,KAEP,MAAZzO,EAEPA,EAAW,CAAC,EAEQ,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAmDZmmC,EAhDfs7iC,GAAYzhlC,EAAS2f,MAgDAg8B,EA/CrB8liC,GAAYzhlC,EAAS0f,IAFzB+kkC,EAmDEt+iC,EAAKy9J,WAAajoJ,EAAMioJ,WAI9BjoJ,EAAQyoiC,GAAgBzoiC,EAAOxV,GAC3BA,EAAKw+iC,SAAShpiC,GACdzc,EAAM0ljC,GAA0Bz+iC,EAAMwV,KAEtCzc,EAAM0ljC,GAA0BjpiC,EAAOxV,IACnCqpQ,cAAgBtwQ,EAAIswQ,aACxBtwQ,EAAInjD,QAAUmjD,EAAInjD,QAGfmjD,GAZI,CAAEswQ,aAAc,EAAGzzT,OAAQ,IA/ClCikB,EAAW,CAAC,GACHspS,GAAKm7yB,EAAQj1yB,aACtBxvS,EAASzhB,EAAIkmmC,EAAQ1omC,QAGzB4kC,EAAM,IAAI4ikC,GAASvjlC,GAEf+jlC,GAAWhnmC,IAAUm1lC,EAAWn1lC,EAAO,aACvC4jC,EAAIozjC,QAAUh3lC,EAAMg3lC,SAGpBgQ,GAAWhnmC,IAAUm1lC,EAAWn1lC,EAAO,cACvC4jC,EAAIqjxB,SAAWjnzB,EAAMinzB,UAGlBrjxB,CACX,CAKA,SAAS+jkC,GAASG,EAAKp2kC,GAInB,IAAIywB,EAAM2ljC,GAAOp5kC,WAAWo5kC,EAAIhmmC,QAAQ,IAAK,MAE7C,OAAQgC,MAAMq+C,GAAO,EAAIA,GAAOzwB,CACpC,CAEA,SAASm2kC,GAA0Bz+iC,EAAMwV,GACrC,IAAIzc,EAAM,CAAC,EAUX,OARAA,EAAInjD,OACA4/D,EAAM08B,QAAUlyC,EAAKkyC,QAAyC,IAA9B18B,EAAM48B,OAASpyC,EAAKoyC,QACpDpyC,EAAKpmB,QAAQ3xB,IAAI8wC,EAAInjD,OAAQ,KAAK+omC,QAAQnpiC,MACxCzc,EAAInjD,OAGVmjD,EAAIswQ,cAAgB7zP,GAASxV,EAAKpmB,QAAQ3xB,IAAI8wC,EAAInjD,OAAQ,KAEnDmjD,CACX,CAqBA,SAAS6ljC,GAAYl7lC,EAAWwE,GAC5B,OAAO,SAAUo0B,EAAKg5E,GAClB,IAAS37E,EAmBT,OAjBe,OAAX27E,GAAoB56G,OAAO46G,KAC3B+4+B,EACInmlC,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJyxB,EAAM2C,EACNA,EAAMg5E,EACNA,EAAS37E,GAIbklkC,GAAYlqlC,KADNsqhB,GAAe3igB,EAAKg5E,GACH5xG,GAChBiR,IACX,CACJ,CAEA,SAASkqlC,GAAYj6P,EAAK/q1B,EAAUillC,EAAUhR,GAC1C,IAAIzkyB,EAAexvS,EAAS2jlC,cACxBt1/B,EAAO21/B,GAAShklC,EAAS4jlC,OACzB7nmC,EAASiomC,GAAShklC,EAAS6jlC,SAE1B94P,EAAInnpB,YAKTqw4B,EAA+B,MAAhBA,GAA8BA,EAEzCl4lC,GACAykH,GAASuqvB,EAAKp81B,GAAIo81B,EAAK,SAAWhv2B,EAASkpmC,GAE3C52/B,GACA8q/B,GAAMpuP,EAAK,OAAQp81B,GAAIo81B,EAAK,QAAU18vB,EAAO42/B,GAE7Cz1yB,GACAu7iB,EAAIhlvB,GAAG6pC,QAAQm7sB,EAAIhlvB,GAAG0rG,UAAY+9F,EAAey1yB,GAEjDhR,GACA1z1B,EAAM0z1B,aAAalpP,EAAK18vB,GAAQtyG,GAExC,CA9FAqpiB,GAAex1hB,GAAK2zlC,GAASrolC,UAC7BkqhB,GAAevpN,QA/Xf,WACI,OAAOupN,GAAehliB,IAC1B,EA4dA,IAAIgO,GAAM22lC,GAAY,EAAG,OACrBxyvB,GAAWwyvB,IAAa,EAAG,YAE/B,SAAS1m/B,GAASthH,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBse,MACzD,CAGA,SAAS6plC,GAAcnomC,GACnB,OACIm3lC,EAASn3lC,IACT4nO,EAAO5nO,IACPshH,GAASthH,IACTiyB,EAASjyB,IAiDjB,SAA+BA,GAC3B,IAAIoomC,EAAYt6kC,EAAQ9tB,GACpBqomC,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdromC,EAAMgP,OAAO,SAAU+hB,GACnB,OAAQkB,EAASlB,IAASuwF,GAASthH,EACvC,GAAGmS,QAEJi2lC,GAAaC,CACxB,CA1DQC,CAAsBtomC,IAO9B,SAA6BA,GACzB,IA4BIoD,EACAivB,EA7BAk2kC,EAAav6kC,EAAShuB,KAAWsxT,EAActxT,GAC/CwomC,GAAe,EACf/ljC,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJgmjC,EAAchmjC,EAAWtwC,OAE7B,IAAK/O,EAAI,EAAGA,EAAIqlmC,EAAarlmC,GAAK,EAC9BivB,EAAWowB,EAAWr/C,GACtBolmC,EAAeA,GAAgBrT,EAAWn1lC,EAAOqyB,GAGrD,OAAOk2kC,GAAcC,CACzB,CA7CQE,CAAoB1omC,IANjB,MAOHA,CAGR,CAsPA,SAAS2omC,GAAUhxlC,EAAGC,GAClB,GAAID,EAAE0nC,OAASznC,EAAEynC,OAGb,OAAQspjC,GAAU/wlC,EAAGD,GAGzB,IAAIixlC,EAAyC,IAAvBhxlC,EAAE4jF,OAAS7jF,EAAE6jF,SAAgB5jF,EAAE0jF,QAAU3jF,EAAE2jF,SAE7DguO,EAAS3xT,EAAEqrB,QAAQ3xB,IAAIu3lC,EAAgB,UAe3C,QAASA,GAXLhxlC,EAAI0xT,EAAS,GAGH1xT,EAAI0xT,IAAWA,EAFf3xT,EAAEqrB,QAAQ3xB,IAAIu3lC,EAAiB,EAAG,YAMlChxlC,EAAI0xT,IAFJ3xT,EAAEqrB,QAAQ3xB,IAAIu3lC,EAAiB,EAAG,UAETt/xB,MAIF,CACzC,CAkHA,SAASrtR,GAAO1zC,GACZ,IAAIsgmC,EAEJ,YAAYh0lC,IAARtM,EACOwV,KAAKi5kC,QAAQmK,OAGC,OADrB0H,EAAgBxH,GAAU94lC,MAEtBwV,KAAKi5kC,QAAU6R,GAEZ9qlC,KAEf,CA5HAylP,EAAMw1U,cAAgB,uBACtBx1U,EAAMsl2B,iBAAmB,yBA6HzB,IAAIh9uB,GAAOuruB,EACP,kJACA,SAAU9ulC,GACN,YAAYsM,IAARtM,EACOwV,KAAKy6kC,aAELz6kC,KAAKk+B,OAAO1zC,EAE3B,GAGJ,SAASiwlC,KACL,OAAOz6kC,KAAKi5kC,OAChB,CAEA,IAAI+R,GAAgB,IAChBC,GAAgB,IAChBC,GAAc,KACdC,GAAmB,YAGvB,SAASC,GAAMzw/B,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,CAC9C,CAEA,SAASyw/B,GAAiB1nmC,EAAGR,EAAGI,GAE5B,OAAII,EAAI,KAAOA,GAAK,EAET,IAAIklB,KAAKllB,EAAI,IAAKR,EAAGI,GAAK4nmC,GAE1B,IAAItilC,KAAKllB,EAAGR,EAAGI,GAAGozN,SAEjC,CAEA,SAAS204B,GAAe3nmC,EAAGR,EAAGI,GAE1B,OAAII,EAAI,KAAOA,GAAK,EAETklB,KAAK6tK,IAAI/yL,EAAI,IAAKR,EAAGI,GAAK4nmC,GAE1BtilC,KAAK6tK,IAAI/yL,EAAGR,EAAGI,EAE9B,CAkbA,SAASgomC,GAAanwE,EAAUl9+B,GAC5B,OAAOA,EAAOstjC,cAAcpwE,EAChC,CAcA,SAASqwE,KACL,IAIIpmmC,EACAmzB,EACAkzkC,EACAC,EACAC,EARAC,EAAa,GACbC,EAAa,GACbC,EAAe,GACfpM,EAAc,GAMdjqnB,EAAO11d,KAAK01d,OAEhB,IAAKrwe,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAClCqmmC,EAAWrO,GAAY3nnB,EAAKrwe,GAAGkO,MAC/Bo4lC,EAAWtO,GAAY3nnB,EAAKrwe,GAAGwwe,MAC/B+1nB,EAAavO,GAAY3nnB,EAAKrwe,GAAGuwe,QAEjCk2nB,EAAWh4lC,KAAK43lC,GAChBG,EAAW/3lC,KAAK63lC,GAChBI,EAAaj4lC,KAAK83lC,GAClBjM,EAAY7rlC,KAAK43lC,GACjB/L,EAAY7rlC,KAAK63lC,GACjBhM,EAAY7rlC,KAAK83lC,GAGrB5rlC,KAAKgslC,WAAa,IAAIl6jC,OAAO,KAAO6tjC,EAAYzhlC,KAAK,KAAO,IAAK,KACjE8B,KAAKislC,eAAiB,IAAIn6jC,OAAO,KAAOg6jC,EAAW5tlC,KAAK,KAAO,IAAK,KACpE8B,KAAKkslC,eAAiB,IAAIp6jC,OAAO,KAAO+5jC,EAAW3tlC,KAAK,KAAO,IAAK,KACpE8B,KAAKmslC,iBAAmB,IAAIr6jC,OACxB,KAAOi6jC,EAAa7tlC,KAAK,KAAO,IAChC,IAER,CAYA,SAASkulC,GAAuBnolC,EAAOyyC,GACnC6jiC,EAAe,EAAG,CAACt2kC,EAAOA,EAAM7P,QAAS,EAAGsiD,EAChD,CAyEA,SAAS21iC,GAAqBpqmC,EAAOmC,EAAMm5D,EAASl5D,EAAKC,GACrD,IAAIgomC,EACJ,OAAa,MAATrqmC,EACO4pf,GAAW7re,KAAM3b,EAAKC,GAAKm5F,MAG9Br5F,GADJkomC,EAAc/L,GAAYt+lC,EAAOoC,EAAKC,MAElCF,EAAOkomC,GAEJC,GAAWlslC,KAAKL,KAAM/d,EAAOmC,EAAMm5D,EAASl5D,EAAKC,GAEhE,CAEA,SAASiomC,GAAWrguB,EAAU9nY,EAAMm5D,EAASl5D,EAAKC,GAC9C,IAAIkomC,EAAgBtM,GAAmBh0tB,EAAU9nY,EAAMm5D,EAASl5D,EAAKC,GACjEg9C,EAAO2+iC,GAAcuM,EAAc/ugC,KAAM,EAAG+ugC,EAAchguB,WAK9D,OAHAxsX,KAAKy9E,KAAKn8C,EAAKwpV,kBACf9qX,KAAKu9E,MAAMj8C,EAAK0pV,eAChBhrX,KAAKshC,KAAKA,EAAKqlN,cACR3mP,IACX,CAvYAu6kC,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpC2C,GAAc,IAAKqO,IACnBrO,GAAc,KAAMqO,IACpBrO,GAAc,MAAOqO,IACrBrO,GAAc,OAiOd,SAAsB9hE,EAAUl9+B,GAC5B,OAAOA,EAAOuujC,cAAcrxE,EAChC,GAlOA8hE,GAAc,QAoOd,SAAwB9hE,EAAUl9+B,GAC9B,OAAOA,EAAOwujC,gBAAgBtxE,EAClC,GApOAqiE,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,SAC3B,SAAUx7lC,EAAOoyB,EAAOtV,EAAQkF,GAC5B,IAAIsnL,EAAMxsL,EAAOk6kC,QAAQ0T,UAAU1qmC,EAAOgiB,EAAOlF,EAAOw5kC,SACpDht5B,EACAgs5B,EAAgBx4kC,GAAQwsL,IAAMA,EAE9Bgs5B,EAAgBx4kC,GAAQ84kC,WAAa51lC,CAE7C,GAGJi7lC,GAAc,IAAKP,IACnBO,GAAc,KAAMP,IACpBO,GAAc,MAAOP,IACrBO,GAAc,OAAQP,IACtBO,GAAc,KAsNd,SAA6B9hE,EAAUl9+B,GACnC,OAAOA,EAAO0ujC,sBAAwBjQ,EAC1C,GAtNAc,GAAc,CAAC,IAAK,KAAM,MAAO,QAAS9qF,IAC1C8qF,GAAc,CAAC,MAAO,SAAUx7lC,EAAOoyB,EAAOtV,EAAQkF,GAClD,IAAIjgB,EACA+a,EAAOk6kC,QAAQ2T,uBACf5omC,EAAQ/B,EAAM+B,MAAM+a,EAAOk6kC,QAAQ2T,uBAGnC7tlC,EAAOk6kC,QAAQjjnB,oBACf3hd,EAAMs++B,IAAQ5z/B,EAAOk6kC,QAAQjjnB,oBAAoB/ze,EAAO+B,GAExDqwB,EAAMs++B,IAAQxs+B,SAASlkC,EAAO,GAEtC,GAgPAs4lC,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOv6kC,KAAKksX,WAAa,GAC7B,GAEAqutB,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOv6kC,KAAKosX,cAAgB,GAChC,GAMAgguB,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAMhClP,GAAc,IAAKN,IACnBM,GAAc,IAAKN,IACnBM,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,OAAQT,GAAWN,GACjCe,GAAc,OAAQT,GAAWN,GACjCe,GAAc,QAASR,GAAWN,GAClCc,GAAc,QAASR,GAAWN,GAElCuB,GACI,CAAC,OAAQ,QAAS,OAAQ,SAC1B,SAAU17lC,EAAOmC,EAAM2a,EAAQkF,GAC3B7f,EAAK6f,EAAMkuG,OAAO,EAAG,IAAM0kJ,GAAM50Q,EACrC,GAGJ07lC,GAAkB,CAAC,KAAM,MAAO,SAAU17lC,EAAOmC,EAAM2a,EAAQkF,GAC3D7f,EAAK6f,GAASwhP,EAAMw41B,kBAAkBh8lC,EAC1C,GAqEAs4lC,EAAe,IAAK,EAAG,KAAM,WAI7B2C,GAAc,IAAKlB,GACnByB,GAAc,IAAK,SAAUx7lC,EAAOoyB,GAChCA,EAAM873B,IAA8B,GAApBt5oB,GAAM50Q,GAAS,EACnC,GAYAs4lC,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrC2C,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAM,SAAU9hE,EAAUl9+B,GAEpC,OAAOk9+B,EACDl9+B,EAAO2ujC,yBAA2B3ujC,EAAO4ujC,cACzC5ujC,EAAO6ujC,8BACjB,GAEAtP,GAAc,CAAC,IAAK,MAAOj0Y,IAC3Bi0Y,GAAc,KAAM,SAAUx7lC,EAAOoyB,GACjCA,EAAMm1rB,IAAQ3yc,GAAM50Q,EAAM+B,MAAMq4lC,GAAW,GAC/C,GAIA,IAAI2Q,GAAmB7O,GAAW,QAAQ,GAI1C5D,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3C2C,GAAc,MAAOV,GACrBU,GAAc,OAAQhB,GACtBuB,GAAc,CAAC,MAAO,QAAS,SAAUx7lC,EAAOoyB,EAAOtV,GACnDA,EAAO8nlC,WAAahw1B,GAAM50Q,EAC9B,GAgBAs4lC,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlC2C,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,KAAMb,EAAWJ,GAC/BwB,GAAc,CAAC,IAAK,MAAO5rF,IAI3B,IAAIo7F,GAAe9O,GAAW,WAAW,GAIzC5D,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlC2C,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,KAAMb,EAAWJ,GAC/BwB,GAAc,CAAC,IAAK,MAAOvrF,IAI3B,IAsCIju/B,GAAOiplC,GAtCPC,GAAehP,GAAW,WAAW,GAuCzC,IAnCA5D,EAAe,IAAK,EAAG,EAAG,WACtB,SAAUv6kC,KAAKk9E,cAAgB,IACnC,GAEAq9/B,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,SAAUv6kC,KAAKk9E,cAAgB,GACnC,GAEAq9/B,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArBv6kC,KAAKk9E,aAChB,GACAq9/B,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArBv6kC,KAAKk9E,aAChB,GACAq9/B,EAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArBv6kC,KAAKk9E,aAChB,GACAq9/B,EAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArBv6kC,KAAKk9E,aAChB,GACAq9/B,EAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArBv6kC,KAAKk9E,aAChB,GACAq9/B,EAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArBv6kC,KAAKk9E,aAChB,GAIAgggC,GAAc,IAAKV,EAAWR,GAC9BkB,GAAc,KAAMV,EAAWP,GAC/BiB,GAAc,MAAOV,EAAWN,GAG3Bj4kC,GAAQ,OAAQA,GAAM7P,QAAU,EAAG6P,IAAS,IAC7Ci5kC,GAAcj5kC,GAAO04kC,IAGzB,SAASyQ,GAAQnrmC,EAAOoyB,GACpBA,EAAMypkC,IAAejn1B,GAAuB,KAAhB,KAAO50Q,GACvC,CAEA,IAAKgiB,GAAQ,IAAKA,GAAM7P,QAAU,EAAG6P,IAAS,IAC1Cw5kC,GAAcx5kC,GAAOmplC,IAGzBF,GAAoB/O,GAAW,gBAAgB,GAI/C5D,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAIr1jC,GAAQg0jC,EAAO94kC,UAgHnB,SAASitlC,GAAmBvpmC,GACxB,OAAOA,CACX,CAhHAohC,GAAM5xB,IAAMA,GACZ4xB,GAAM3iC,SAhlCN,SAAoB+7F,EAAMphC,GAEG,IAArB/oD,UAAUC,SACLD,UAAU,GAGJi2lC,GAAcj2lC,UAAU,KAC/BmqF,EAAOnqF,UAAU,GACjB+oD,OAAUpmD,GA/CtB,SAAwB7U,GACpB,IAUIoD,EAVAmlmC,EAAav6kC,EAAShuB,KAAWsxT,EAActxT,GAC/CwomC,GAAe,EACf/ljC,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAKr/C,EAAI,EAAGA,EAAIq/C,EAAWtwC,OAAQ/O,GAAK,EAEpColmC,EAAeA,GAAgBrT,EAAWn1lC,EAD/ByiD,EAAWr/C,IAI1B,OAAOmlmC,GAAcC,CACzB,CA4BmB6C,CAAen5lC,UAAU,MAChC+oD,EAAU/oD,UAAU,GACpBmqF,OAAOxnF,IAPPwnF,OAAOxnF,EACPomD,OAAUpmD,IAWlB,IAAIgS,EAAMw1E,GAAQqogC,KACd4G,EAAMjE,GAAgBxglC,EAAK9I,MAAMs9C,QAAQ,OACzC9e,EAASinN,EAAM+n2B,eAAextlC,KAAMutlC,IAAQ,WAC5Cxr4B,EACI7kK,IACCrqC,EAAWqqC,EAAQ1e,IACd0e,EAAQ1e,GAAQn+B,KAAKL,KAAM8I,GAC3Bo0C,EAAQ1e,IAEtB,OAAOx+B,KAAKw+B,OACRujL,GAAU/hN,KAAKy6kC,aAAal4lC,SAASi8C,EAAQx+B,KAAM2mlC,GAAY79kC,IAEvE,EAqjCAoc,GAAMD,MAnjCN,WACI,OAAO,IAAIi0jC,EAAOl5kC,KACtB,EAkjCAklB,GAAMm4B,KA3+BN,SAAcp7D,EAAOm+M,EAAOqt5B,GACxB,IAAIn34B,EAAMo34B,EAAW3r4B,EAErB,IAAK/hN,KAAK8oM,UACN,OAAOxjN,IAKX,KAFAgxN,EAAOgz4B,GAAgBrnmC,EAAO+d,OAEpB8oM,UACN,OAAOxjN,IAOX,OAJAoomC,EAAoD,KAAvCp34B,EAAK6y4B,YAAcnplC,KAAKmplC,aAErC/o5B,EAAQu74B,EAAev74B,IAGnB,IAAK,OACD2hB,EAAS6o4B,GAAU5qlC,KAAMs2M,GAAQ,GACjC,MACJ,IAAK,QACDyL,EAAS6o4B,GAAU5qlC,KAAMs2M,GACzB,MACJ,IAAK,UACDyL,EAAS6o4B,GAAU5qlC,KAAMs2M,GAAQ,EACjC,MACJ,IAAK,SACDyL,GAAU/hN,KAAOs2M,GAAQ,IACzB,MACJ,IAAK,SACDyL,GAAU/hN,KAAOs2M,GAAQ,IACzB,MACJ,IAAK,OACDyL,GAAU/hN,KAAOs2M,GAAQ,KACzB,MACJ,IAAK,MACDyL,GAAU/hN,KAAOs2M,EAAOo34B,GAAa,MACrC,MACJ,IAAK,OACD3r4B,GAAU/hN,KAAOs2M,EAAOo34B,GAAa,OACrC,MACJ,QACI3r4B,EAAS/hN,KAAOs2M,EAGxB,OAAOm34B,EAAU1r4B,EAASu73B,GAASv73B,EACvC,EA67BA78L,GAAMs4B,MAtrBN,SAAe4iJ,GACX,IAAI9hH,EAAMqvgC,EAEV,QAAc72lC,KADdspM,EAAQu74B,EAAev74B,KACc,gBAAVA,IAA4BpgM,KAAK8oM,UACxD,OAAO9oM,KAKX,OAFA2tlC,EAAc3tlC,KAAKg5kC,OAASsS,GAAiBD,GAErCjr5B,GACJ,IAAK,OACD9hH,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDa,EACIqvgC,EACI3tlC,KAAKy9E,OACLz9E,KAAKu9E,QAAWv9E,KAAKu9E,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACDe,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAQz9E,KAAKu9E,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACDe,EACIqvgC,EACI3tlC,KAAKy9E,OACLz9E,KAAKu9E,QACLv9E,KAAKshC,OAASthC,KAAKu9C,UAAY,GAC/B,EACR,MACJ,IAAK,UACD+gC,EACIqvgC,EACI3tlC,KAAKy9E,OACLz9E,KAAKu9E,QACLv9E,KAAKshC,QAAUthC,KAAK+9E,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDO,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAQz9E,KAAKu9E,QAASv9E,KAAKshC,OAAS,GAAK,EACjE,MACJ,IAAK,OACDg9C,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GACI4sgC,GACAE,GACI9sgC,GAAQt+E,KAAKg5kC,OAAS,EAAIh5kC,KAAKmplC,YAAc8B,IAC7CC,IAEJ,EACJ,MACJ,IAAK,SACD5sgC,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GAAQ2sgC,GAAgBG,GAAM9sgC,EAAM2sgC,IAAiB,EACrD,MACJ,IAAK,SACD3sgC,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GAAQ0sgC,GAAgBI,GAAM9sgC,EAAM0sgC,IAAiB,EAM7D,OAFAhrlC,KAAKirG,GAAG6pC,QAAQx2D,GAChBmnK,EAAM0z1B,aAAan5kC,MAAM,GAClBA,IACX,EAonBAklB,GAAMsZ,OAh2BN,SAAgBq86B,GACPA,IACDA,EAAc768B,KAAKwplC,QACb/j2B,EAAMsl2B,iBACNtl2B,EAAMw1U,eAEhB,IAAIl5W,EAAS443B,EAAa36kC,KAAM668B,GAChC,OAAO768B,KAAKy6kC,aAAax2lC,WAAW89N,EACxC,EAy1BA78L,GAAML,KAv1BN,SAAcy5D,EAAMmjC,GAChB,OACIzhH,KAAK8oM,YACHsw4B,EAAS96/B,IAASA,EAAKwqH,WAAc694B,GAAYrogC,GAAMwqH,WAElDwhV,GAAe,CAAE1lgB,GAAI5kB,KAAM6kB,KAAMy5D,IACnCpgD,OAAOl+B,KAAKk+B,UACZ0vjC,UAAUns+B,GAERzhH,KAAKy6kC,aAAal2tB,aAEjC,EA60BAr/V,GAAM2okC,QA30BN,SAAiBps+B,GACb,OAAOzhH,KAAK6kB,KAAK8hkC,KAAell+B,EACpC,EA00BAv8F,GAAMN,GAx0BN,SAAY05D,EAAMmjC,GACd,OACIzhH,KAAK8oM,YACHsw4B,EAAS96/B,IAASA,EAAKwqH,WAAc694B,GAAYrogC,GAAMwqH,WAElDwhV,GAAe,CAAEzlgB,KAAM7kB,KAAM4kB,GAAI05D,IACnCpgD,OAAOl+B,KAAKk+B,UACZ0vjC,UAAUns+B,GAERzhH,KAAKy6kC,aAAal2tB,aAEjC,EA8zBAr/V,GAAM4okC,MA5zBN,SAAers+B,GACX,OAAOzhH,KAAK4kB,GAAG+hkC,KAAell+B,EAClC,EA2zBAv8F,GAAMrxB,IAx0HN,SAAmBusM,GAEf,OAAIvtL,EAAW7S,KADfogM,EAAQu74B,EAAev74B,KAEZpgM,KAAKogM,KAETpgM,IACX,EAm0HAklB,GAAM6okC,UArkBN,WACI,OAAOxW,EAAgBv3kC,MAAM1S,QACjC,EAokBA43B,GAAM8kkC,QAzjCN,SAAiB/nmC,EAAOm+M,GACpB,IAAI4t5B,EAAa5U,EAASn3lC,GAASA,EAAQ0kmC,GAAY1kmC,GACvD,SAAM+d,KAAK8oM,YAAakl5B,EAAWll5B,aAIrB,iBADd1I,EAAQu74B,EAAev74B,IAAU,eAEtBpgM,KAAK22M,UAAYq34B,EAAWr34B,UAE5Bq34B,EAAWr34B,UAAY32M,KAAKilB,QAAQq4B,QAAQ8iJ,GAAOuW,UAElE,EA+iCAzxL,GAAM2kkC,SA7iCN,SAAkB5nmC,EAAOm+M,GACrB,IAAI4t5B,EAAa5U,EAASn3lC,GAASA,EAAQ0kmC,GAAY1kmC,GACvD,SAAM+d,KAAK8oM,YAAakl5B,EAAWll5B,aAIrB,iBADd1I,EAAQu74B,EAAev74B,IAAU,eAEtBpgM,KAAK22M,UAAYq34B,EAAWr34B,UAE5B32M,KAAKilB,QAAQu4B,MAAM4iJ,GAAOuW,UAAYq34B,EAAWr34B,UAEhE,EAmiCAzxL,GAAM+okC,UAjiCN,SAAmBppkC,EAAMD,EAAIw7K,EAAO8t5B,GAChC,IAAIC,EAAY/U,EAASv0jC,GAAQA,EAAO8hkC,GAAY9hkC,GAChDupkC,EAAUhV,EAASx0jC,GAAMA,EAAK+hkC,GAAY/hkC,GAC9C,SAAM5kB,KAAK8oM,WAAaql5B,EAAUrl5B,WAAasl5B,EAAQtl5B,aAK/B,OAFxBol5B,EAAcA,GAAe,MAEZ,GACPlulC,KAAKgqlC,QAAQmE,EAAW/t5B,IACvBpgM,KAAK6plC,SAASsE,EAAW/t5B,MACZ,MAAnB8t5B,EAAY,GACPlulC,KAAK6plC,SAASuE,EAAShu5B,IACtBpgM,KAAKgqlC,QAAQoE,EAAShu5B,GAErC,EAmhCAl7K,GAAMmpkC,OAjhCN,SAAgBpsmC,EAAOm+M,GACnB,IACIku5B,EADAN,EAAa5U,EAASn3lC,GAASA,EAAQ0kmC,GAAY1kmC,GAEvD,SAAM+d,KAAK8oM,YAAakl5B,EAAWll5B,aAIrB,iBADd1I,EAAQu74B,EAAev74B,IAAU,eAEtBpgM,KAAK22M,YAAcq34B,EAAWr34B,WAErC234B,EAAUN,EAAWr34B,UAEjB32M,KAAKilB,QAAQq4B,QAAQ8iJ,GAAOuW,WAAa234B,GACzCA,GAAWtulC,KAAKilB,QAAQu4B,MAAM4iJ,GAAOuW,WAGjD,EAkgCAzxL,GAAMqpkC,cAhgCN,SAAuBtsmC,EAAOm+M,GAC1B,OAAOpgM,KAAKqulC,OAAOpsmC,EAAOm+M,IAAUpgM,KAAKgqlC,QAAQ/nmC,EAAOm+M,EAC5D,EA+/BAl7K,GAAMspkC,eA7/BN,SAAwBvsmC,EAAOm+M,GAC3B,OAAOpgM,KAAKqulC,OAAOpsmC,EAAOm+M,IAAUpgM,KAAK6plC,SAAS5nmC,EAAOm+M,EAC7D,EA4/BAl7K,GAAM4jL,QAplBN,WACI,OAAOA,EAAQ9oM,KACnB,EAmlBAklB,GAAM6oV,KAAOA,GACb7oV,GAAMgZ,OAASA,GACfhZ,GAAMu1jC,WAAaA,GACnBv1jC,GAAMv7B,IAAM0+lC,GACZnjkC,GAAMx7B,IAAM0+lC,GACZljkC,GAAMupkC,aAtlBN,WACI,OAAOzr/B,EAAO,CAAC,EAAGu0+B,EAAgBv3kC,MACtC,EAqlBAklB,GAAMnxB,IA/0HN,SAAmBqsM,EAAOz6M,GACtB,GAAqB,iBAAVy6M,EAAoB,CAE3B,IACI/6M,EADAqpmC,EArSZ,SAA6BC,GACzB,IACIjrgC,EADA08G,EAAQ,GAEZ,IAAK18G,KAAKirgC,EACFvX,EAAWuX,EAAUjrgC,IACrB08G,EAAMtsM,KAAK,CAAEspD,KAAMsmC,EAAG4Q,SAAUN,EAAWtQ,KAMnD,OAHA08G,EAAMhtM,KAAK,SAAUwG,EAAGC,GACpB,OAAOD,EAAE06F,SAAWz6F,EAAEy6F,QAC1B,GACO8rG,CACX,CAyR0Bwu5B,CADlBxu5B,EAAQw74B,EAAqBx74B,IAGzByu5B,EAAiBH,EAAYt6lC,OACjC,IAAK/O,EAAI,EAAGA,EAAIwpmC,EAAgBxpmC,IAC5B2a,KAAK0ulC,EAAYrpmC,GAAG+3D,MAAMgjJ,EAAMsu5B,EAAYrpmC,GAAG+3D,MAEvD,MAEI,GAAIvqC,EAAW7S,KADfogM,EAAQu74B,EAAev74B,KAEnB,OAAOpgM,KAAKogM,GAAOz6M,GAG3B,OAAOqa,IACX,EAg0HAklB,GAAMo4B,QA3wBN,SAAiB8iJ,GACb,IAAI9hH,EAAMqvgC,EAEV,QAAc72lC,KADdspM,EAAQu74B,EAAev74B,KACc,gBAAVA,IAA4BpgM,KAAK8oM,UACxD,OAAO9oM,KAKX,OAFA2tlC,EAAc3tlC,KAAKg5kC,OAASsS,GAAiBD,GAErCjr5B,GACJ,IAAK,OACD9hH,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDa,EAAOqvgC,EACH3tlC,KAAKy9E,OACLz9E,KAAKu9E,QAAWv9E,KAAKu9E,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACDe,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAQz9E,KAAKu9E,QAAS,GAC9C,MACJ,IAAK,OACDe,EAAOqvgC,EACH3tlC,KAAKy9E,OACLz9E,KAAKu9E,QACLv9E,KAAKshC,OAASthC,KAAKu9C,WAEvB,MACJ,IAAK,UACD+gC,EAAOqvgC,EACH3tlC,KAAKy9E,OACLz9E,KAAKu9E,QACLv9E,KAAKshC,QAAUthC,KAAK+9E,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDO,EAAOqvgC,EAAY3tlC,KAAKy9E,OAAQz9E,KAAKu9E,QAASv9E,KAAKshC,QACnD,MACJ,IAAK,OACDg9C,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GAAQ8sgC,GACJ9sgC,GAAQt+E,KAAKg5kC,OAAS,EAAIh5kC,KAAKmplC,YAAc8B,IAC7CC,IAEJ,MACJ,IAAK,SACD5sgC,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GAAQ8sgC,GAAM9sgC,EAAM2sgC,IACpB,MACJ,IAAK,SACD3sgC,EAAOt+E,KAAKirG,GAAG0rG,UACfr4H,GAAQ8sgC,GAAM9sgC,EAAM0sgC,IAM5B,OAFAhrlC,KAAKirG,GAAG6pC,QAAQx2D,GAChBmnK,EAAM0z1B,aAAan5kC,MAAM,GAClBA,IACX,EA+sBAklB,GAAMuyU,SAAWA,GACjBvyU,GAAM4+L,QA7nBN,WACI,IAAI3gO,EAAI6c,KACR,MAAO,CACH7c,EAAEs6F,OACFt6F,EAAEo6F,QACFp6F,EAAEm+C,OACFn+C,EAAEf,OACFe,EAAEd,SACFc,EAAEk6F,SACFl6F,EAAE+5F,cAEV,EAmnBAh4D,GAAMmuF,SAjnBN,WACI,IAAIlwH,EAAI6c,KACR,MAAO,CACH0re,MAAOvof,EAAEs6F,OACTx8F,OAAQkC,EAAEo6F,QACVj8C,KAAMn+C,EAAEm+C,OACR8pJ,MAAOjoM,EAAEioM,QACTC,QAASloM,EAAEkoM,UACXC,QAASnoM,EAAEmoM,UACXopH,aAAcvxT,EAAEuxT,eAExB,EAumBAxvR,GAAM8kO,OAnoBN,WACI,OAAO,IAAInhP,KAAK7I,KAAK22M,UACzB,EAkoBAzxL,GAAM07E,YAp7BN,SAAqBku/B,GACjB,IAAK9ulC,KAAK8oM,UACN,OAAO,KAEX,IAAI2/R,GAAqB,IAAfqmnB,EACN3rmC,EAAIslf,EAAMzoe,KAAKilB,QAAQwjd,MAAQzoe,KACnC,OAAI7c,EAAEs6F,OAAS,GAAKt6F,EAAEs6F,OAAS,KACpBk9/B,EACHx3lC,EACAslf,EACM,iCACA,gCAGV51d,EAAWhK,KAAKzI,UAAUwgG,aAEtB6nY,EACOzoe,KAAKgqP,SAASppJ,cAEd,IAAI/3F,KAAK7I,KAAK22M,UAA+B,GAAnB32M,KAAKmplC,YAAmB,KACpDvo/B,cACA78G,QAAQ,IAAK42lC,EAAax3lC,EAAG,MAGnCw3lC,EACHx3lC,EACAslf,EAAM,+BAAiC,6BAE/C,EAy5BAvjd,GAAMwpX,QAj5BN,WACI,IAAK1uY,KAAK8oM,UACN,MAAO,qBAAuB9oM,KAAKrF,GAAK,OAE5C,IAEIu6B,EACAuoD,EAEA7hD,EALA84D,EAAO,SACPg5M,EAAO,GAcX,OATK1tS,KAAKih+B,YACNvs4B,EAA4B,IAArB10F,KAAKmplC,YAAoB,aAAe,mBAC/Cz7yB,EAAO,KAEXx4Q,EAAS,IAAMw/D,EAAO,MACtBjX,EAAO,GAAKz9E,KAAKy9E,QAAUz9E,KAAKy9E,QAAU,KAAO,OAAS,SAE1D7hD,EAAS8xQ,EAAO,OAET1tS,KAAKw+B,OAAOtJ,EAASuoD,EAHjB,wBAGmC7hD,EAClD,EA83BsB,oBAAXp3C,QAAwC,MAAdA,OAAO2gV,MACxCjgT,GAAM1gC,OAAO2gV,IAAI,+BAAiC,WAC9C,MAAO,UAAYnlU,KAAKw+B,SAAW,GACvC,GAEJtZ,GAAM24L,OA7mBN,WAEI,OAAO79M,KAAK8oM,UAAY9oM,KAAK4gG,cAAgB,IACjD,EA2mBA17E,GAAMl+B,SAh8BN,WACI,OAAOgZ,KAAKilB,QAAQiZ,OAAO,MAAMM,OAAO,mCAC5C,EA+7BAtZ,GAAM6pkC,KAjpBN,WACI,OAAOvpmC,KAAKQ,MAAMga,KAAK22M,UAAY,IACvC,EAgpBAzxL,GAAMyxL,QAtpBN,WACI,OAAO32M,KAAKirG,GAAG0rG,UAAkC,KAArB32M,KAAKtD,SAAW,EAChD,EAqpBAwoB,GAAM8pkC,aAhmBN,WACI,MAAO,CACH/smC,MAAO+d,KAAKrF,GACZ6jC,OAAQx+B,KAAKuxJ,GACbrzH,OAAQl+B,KAAKi5kC,QACbqF,MAAOt+kC,KAAKg5kC,OACZ/1+B,OAAQjjG,KAAKu4kC,QAErB,EAylBArzjC,GAAM+pkC,QAvdN,WACI,IAAI5pmC,EACAmzB,EACAmP,EACA+tc,EAAO11d,KAAKy6kC,aAAa/knB,OAC7B,IAAKrwe,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAAG,CAIrC,GAFAsiC,EAAM3nB,KAAKilB,QAAQq4B,QAAQ,OAAOq5J,UAE9B++Q,EAAKrwe,GAAGswe,OAAShuc,GAAOA,GAAO+tc,EAAKrwe,GAAGywe,MACvC,OAAOJ,EAAKrwe,GAAGkO,KAEnB,GAAImie,EAAKrwe,GAAGywe,OAASnuc,GAAOA,GAAO+tc,EAAKrwe,GAAGswe,MACvC,OAAOD,EAAKrwe,GAAGkO,IAEvB,CAEA,MAAO,EACX,EAscA2xB,GAAMgqkC,UApcN,WACI,IAAI7pmC,EACAmzB,EACAmP,EACA+tc,EAAO11d,KAAKy6kC,aAAa/knB,OAC7B,IAAKrwe,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAAG,CAIrC,GAFAsiC,EAAM3nB,KAAKilB,QAAQq4B,QAAQ,OAAOq5J,UAE9B++Q,EAAKrwe,GAAGswe,OAAShuc,GAAOA,GAAO+tc,EAAKrwe,GAAGywe,MACvC,OAAOJ,EAAKrwe,GAAGuwe,OAEnB,GAAIF,EAAKrwe,GAAGywe,OAASnuc,GAAOA,GAAO+tc,EAAKrwe,GAAGswe,MACvC,OAAOD,EAAKrwe,GAAGuwe,MAEvB,CAEA,MAAO,EACX,EAmbA1wc,GAAMiqkC,QAjbN,WACI,IAAI9pmC,EACAmzB,EACAmP,EACA+tc,EAAO11d,KAAKy6kC,aAAa/knB,OAC7B,IAAKrwe,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAAG,CAIrC,GAFAsiC,EAAM3nB,KAAKilB,QAAQq4B,QAAQ,OAAOq5J,UAE9B++Q,EAAKrwe,GAAGswe,OAAShuc,GAAOA,GAAO+tc,EAAKrwe,GAAGywe,MACvC,OAAOJ,EAAKrwe,GAAGwwe,KAEnB,GAAIH,EAAKrwe,GAAGywe,OAASnuc,GAAOA,GAAO+tc,EAAKrwe,GAAGswe,MACvC,OAAOD,EAAKrwe,GAAGwwe,IAEvB,CAEA,MAAO,EACX,EAgaA3wc,GAAMkqkC,QA9ZN,WACI,IAAI/pmC,EACAmzB,EACAuvD,EACApgD,EACA+tc,EAAO11d,KAAKy6kC,aAAa/knB,OAC7B,IAAKrwe,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAMlC,GALA0iF,EAAM2tZ,EAAKrwe,GAAGswe,OAASD,EAAKrwe,GAAGywe,MAAQ,GAAM,EAG7Cnuc,EAAM3nB,KAAKilB,QAAQq4B,QAAQ,OAAOq5J,UAG7B++Q,EAAKrwe,GAAGswe,OAAShuc,GAAOA,GAAO+tc,EAAKrwe,GAAGywe,OACvCJ,EAAKrwe,GAAGywe,OAASnuc,GAAOA,GAAO+tc,EAAKrwe,GAAGswe,MAExC,OACK31d,KAAKy9E,OAASgoK,EAAMiwO,EAAKrwe,GAAGswe,OAAOl4Y,QAAU1V,EAC9C2tZ,EAAKrwe,GAAGT,OAKpB,OAAOob,KAAKy9E,MAChB,EAuYAv4D,GAAMu4D,KAAOyggC,GACbh5jC,GAAM2xlB,WAx8HN,WACI,OAAOA,GAAW72mB,KAAKy9E,OAC3B,EAu8HAv4D,GAAMgnW,SAnRN,SAAwBjqY,GACpB,OAAOoqmC,GAAqBhslC,KACxBL,KACA/d,EACA+d,KAAK5b,OACL4b,KAAKu9C,UAAYv9C,KAAKy6kC,aAAamM,MAAMvimC,IACzC2b,KAAKy6kC,aAAamM,MAAMvimC,IACxB2b,KAAKy6kC,aAAamM,MAAMtimC,IAEhC,EA2QA4gC,GAAMknW,YAzQN,SAA2BnqY,GACvB,OAAOoqmC,GAAqBhslC,KACxBL,KACA/d,EACA+d,KAAKw0S,UACLx0S,KAAK+9E,aACL,EACA,EAER,EAiQA74D,GAAMs4D,QAAUt4D,GAAMk2jC,SAzMtB,SAAuBn5lC,GACnB,OAAgB,MAATA,EACDuD,KAAKsjE,MAAM9oD,KAAKu9E,QAAU,GAAK,GAC/Bv9E,KAAKu9E,MAAoB,GAAbt7F,EAAQ,GAAU+d,KAAKu9E,QAAU,EACvD,EAsMAr4D,GAAMq4D,MAAQ6hgC,GACdl6jC,GAAMq5jC,YA5lHN,WACI,OAAOA,GAAYv+kC,KAAKy9E,OAAQz9E,KAAKu9E,QACzC,EA2lHAr4D,GAAM9gC,KAAO8gC,GAAM0md,MA33GnB,SAAoB3pf,GAChB,IAAImC,EAAO4b,KAAKy6kC,aAAar2lC,KAAK4b,MAClC,OAAgB,MAAT/d,EAAgBmC,EAAO4b,KAAK1M,IAAqB,GAAhBrR,EAAQmC,GAAW,IAC/D,EAy3GA8gC,GAAMsvR,QAAUtvR,GAAMmqkC,SAv3GtB,SAAuBptmC,GACnB,IAAImC,EAAOynf,GAAW7re,KAAM,EAAG,GAAG5b,KAClC,OAAgB,MAATnC,EAAgBmC,EAAO4b,KAAK1M,IAAqB,GAAhBrR,EAAQmC,GAAW,IAC/D,EAq3GA8gC,GAAMq7jC,YA5PN,WACI,IAAI+O,EAAWtvlC,KAAKy6kC,aAAamM,MACjC,OAAOrG,GAAYvglC,KAAKy9E,OAAQ6xgC,EAASjrmC,IAAKirmC,EAAShrmC,IAC3D,EA0PA4gC,GAAMqqkC,gBAxPN,WACI,IAAID,EAAWtvlC,KAAKy6kC,aAAamM,MACjC,OAAOrG,GAAYvglC,KAAKksX,WAAYojuB,EAASjrmC,IAAKirmC,EAAShrmC,IAC/D,EAsPA4gC,GAAMsqkC,eAtQN,WACI,OAAOjP,GAAYvglC,KAAKy9E,OAAQ,EAAG,EACvC,EAqQAv4D,GAAMuqkC,sBAnQN,WACI,OAAOlP,GAAYvglC,KAAKosX,cAAe,EAAG,EAC9C,EAkQAlnW,GAAMoc,KAAO0rjC,GACb9nkC,GAAMo4D,IAAMp4D,GAAMquE,KApnGlB,SAAyBtxG,GACrB,IAAK+d,KAAK8oM,UACN,OAAgB,MAAT7mN,EAAgB+d,KAAO1a,IAGlC,IAAIg4F,EAAMzpF,GAAImM,KAAM,OACpB,OAAa,MAAT/d,GACAA,EAzNR,SAAsBA,EAAOi8C,GACzB,MAAqB,iBAAVj8C,EACAA,EAGN8D,MAAM9D,GAKU,iBADrBA,EAAQi8C,EAAO02R,cAAc3yU,IAElBA,EAGJ,KARIkkC,SAASlkC,EAAO,GAS/B,CA0MgBytmC,CAAaztmC,EAAO+d,KAAKy6kC,cAC1Bz6kC,KAAK1M,IAAIrR,EAAQq7F,EAAK,MAEtBA,CAEf,EAymGAp4D,GAAMq4B,QAvmGN,SAA+Bt7D,GAC3B,IAAK+d,KAAK8oM,UACN,OAAgB,MAAT7mN,EAAgB+d,KAAO1a,IAElC,IAAIi4D,GAAWv9C,KAAKs9E,MAAQ,EAAIt9E,KAAKy6kC,aAAamM,MAAMvimC,KAAO,EAC/D,OAAgB,MAATpC,EAAgBs7D,EAAUv9C,KAAK1M,IAAIrR,EAAQs7D,EAAS,IAC/D,EAkmGAr4B,GAAM64D,WAhmGN,SAA4B97F,GACxB,IAAK+d,KAAK8oM,UACN,OAAgB,MAAT7mN,EAAgB+d,KAAO1a,IAOlC,GAAa,MAATrD,EAAe,CACf,IAAIs7D,EAjOZ,SAAyBt7D,EAAOi8C,GAC5B,MAAqB,iBAAVj8C,EACAi8C,EAAO02R,cAAc3yU,GAAS,GAAK,EAEvC8D,MAAM9D,GAAS,KAAOA,CACjC,CA4NsB0tmC,CAAgB1tmC,EAAO+d,KAAKy6kC,cAC1C,OAAOz6kC,KAAKs9E,IAAIt9E,KAAKs9E,MAAQ,EAAI//B,EAAUA,EAAU,EACzD,CACI,OAAOv9C,KAAKs9E,OAAS,CAE7B,EAklGAp4D,GAAMsnW,UAxKN,SAAyBvqY,GACrB,IAAIuqY,EACAhnY,KAAK+F,OACAyU,KAAKilB,QAAQq4B,QAAQ,OAASt9C,KAAKilB,QAAQq4B,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATr7D,EAAgBuqY,EAAYxsX,KAAK1M,IAAIrR,EAAQuqY,EAAW,IACnE,EAmKAtnW,GAAM9iC,KAAO8iC,GAAMkmK,MAAQs35B,GAC3Bx9jC,GAAM7iC,OAAS6iC,GAAMmmK,QAAU4h6B,GAC/B/nkC,GAAMm4D,OAASn4D,GAAMomK,QAAU6h6B,GAC/BjokC,GAAMg4D,YAAch4D,GAAMwvR,aAAew4yB,GACzChokC,GAAMikkC,UA9jDN,SAAsBlnmC,EAAO2tmC,EAAeC,GACxC,IACIC,EADAlrmC,EAASob,KAAKtD,SAAW,EAE7B,IAAKsD,KAAK8oM,UACN,OAAgB,MAAT7mN,EAAgB+d,KAAO1a,IAElC,GAAa,MAATrD,EAAe,CACf,GAAqB,iBAAVA,GAEP,GAAc,QADdA,EAAQmnmC,GAAiBtM,GAAkB76lC,IAEvC,OAAO+d,UAEJxa,KAAKM,IAAI7D,GAAS,KAAO4tmC,IAChC5tmC,GAAgB,IAwBpB,OAtBK+d,KAAKg5kC,QAAU4W,IAChBE,EAAcvG,GAAcvplC,OAEhCA,KAAKtD,QAAUza,EACf+d,KAAKg5kC,QAAS,EACK,MAAf8W,GACA9vlC,KAAK1M,IAAIw8lC,EAAa,KAEtBlrmC,IAAW3C,KACN2tmC,GAAiB5vlC,KAAK+vlC,kBACvB7F,GACIlqlC,KACAsqhB,GAAeroiB,EAAQ2C,EAAQ,KAC/B,GACA,GAEIob,KAAK+vlC,oBACb/vlC,KAAK+vlC,mBAAoB,EACzBtq2B,EAAM0z1B,aAAan5kC,MAAM,GACzBA,KAAK+vlC,kBAAoB,OAG1B/vlC,IACX,CACI,OAAOA,KAAKg5kC,OAASp0lC,EAAS2kmC,GAAcvplC,KAEpD,EAshDAklB,GAAMujd,IAtgDN,SAAwBmnnB,GACpB,OAAO5vlC,KAAKmplC,UAAU,EAAGyG,EAC7B,EAqgDA1qkC,GAAMyG,MAngDN,SAA0BikkC,GAStB,OARI5vlC,KAAKg5kC,SACLh5kC,KAAKmplC,UAAU,EAAGyG,GAClB5vlC,KAAKg5kC,QAAS,EAEV4W,GACA5vlC,KAAKy3V,SAAS8xvB,GAAcvplC,MAAO,MAGpCA,IACX,EA0/CAklB,GAAM8qkC,UAx/CN,WACI,GAAiB,MAAbhwlC,KAAK+4kC,KACL/4kC,KAAKmplC,UAAUnplC,KAAK+4kC,MAAM,GAAO,QAC9B,GAAuB,iBAAZ/4kC,KAAKrF,GAAiB,CACpC,IAAIs1lC,EAAQ7G,GAAiBvM,GAAa78kC,KAAKrF,IAClC,MAATs1lC,EACAjwlC,KAAKmplC,UAAU8G,GAEfjwlC,KAAKmplC,UAAU,GAAG,EAE1B,CACA,OAAOnplC,IACX,EA6+CAklB,GAAMgrkC,qBA3+CN,SAA8BjumC,GAC1B,QAAK+d,KAAK8oM,YAGV7mN,EAAQA,EAAQ0kmC,GAAY1kmC,GAAOknmC,YAAc,GAEzCnplC,KAAKmplC,YAAclnmC,GAAS,IAAO,EAC/C,EAq+CAijC,GAAMirkC,MAn+CN,WACI,OACInwlC,KAAKmplC,YAAcnplC,KAAKilB,QAAQs4D,MAAM,GAAG4rgC,aACzCnplC,KAAKmplC,YAAcnplC,KAAKilB,QAAQs4D,MAAM,GAAG4rgC,WAEjD,EA+9CAjkkC,GAAM+78B,QAv8CN,WACI,QAAOjh+B,KAAK8oM,YAAa9oM,KAAKg5kC,MAClC,EAs8CA9zjC,GAAMkrkC,YAp8CN,WACI,QAAOpwlC,KAAK8oM,WAAY9oM,KAAKg5kC,MACjC,EAm8CA9zjC,GAAMskkC,MAAQA,GACdtkkC,GAAMo5jC,MAAQkL,GACdtkkC,GAAMmrkC,SAzFN,WACI,OAAOrwlC,KAAKg5kC,OAAS,MAAQ,EACjC,EAwFA9zjC,GAAMorkC,SAtFN,WACI,OAAOtwlC,KAAKg5kC,OAAS,6BAA+B,EACxD,EAqFA9zjC,GAAM0+F,MAAQ019B,EACV,kDACA0T,IAEJ9nkC,GAAMjkC,OAASq4lC,EACX,mDACA8F,IAEJl6jC,GAAMwmd,MAAQ4tmB,EACV,iDACA4E,IAEJh5jC,GAAMwoR,KAAO4ryB,EACT,2GA5iDJ,SAAoBr3lC,EAAO2tmC,GACvB,OAAa,MAAT3tmC,GACqB,iBAAVA,IACPA,GAASA,GAGb+d,KAAKmplC,UAAUlnmC,EAAO2tmC,GAEf5vlC,OAECA,KAAKmplC,WAErB,GAmiDAjkkC,GAAMqrkC,aAAejX,EACjB,0GAp/CJ,WACI,IAAKrl9B,EAAYj0H,KAAKwwlC,eAClB,OAAOxwlC,KAAKwwlC,cAGhB,IACI3viC,EADAj7D,EAAI,CAAC,EAcT,OAXAgzlC,EAAWhzlC,EAAGoa,OACdpa,EAAI0hmC,GAAc1hmC,IAEZ4d,IACFq9C,EAAQj7D,EAAEozlC,OAAS3B,EAAUzxlC,EAAE4d,IAAMmjlC,GAAY/gmC,EAAE4d,IACnDxD,KAAKwwlC,cACDxwlC,KAAK8oM,WAtOjB,SAAuBgwD,EAAQC,EAAQ031B,GACnC,IAGIprmC,EAHAoK,EAAMjK,KAAKkE,IAAIovQ,EAAO1kQ,OAAQ2kQ,EAAO3kQ,QACrCs8lC,EAAalrmC,KAAKM,IAAIgzQ,EAAO1kQ,OAAS2kQ,EAAO3kQ,QAC7Cu3V,EAAQ,EAEZ,IAAKtmW,EAAI,EAAGA,EAAIoK,EAAKpK,KAEZormC,GAAe331B,EAAOzzQ,KAAO0zQ,EAAO1zQ,KACnCormC,GAAe551B,GAAMiC,EAAOzzQ,MAAQwxQ,GAAMkC,EAAO1zQ,MAEnDsmW,IAGR,OAAOA,EAAQ+kwB,CACnB,CAwN8BC,CAAc/qmC,EAAE4d,GAAIq9C,EAAMijK,WAAa,GAE7D9jN,KAAKwwlC,eAAgB,EAGlBxwlC,KAAKwwlC,aAChB,GAg/CA,IAAII,GAAU9W,EAAO15kC,UAuCrB,SAASywlC,GAAMryjC,EAAQhoC,EAAO25J,EAAOwiJ,GACjC,IAAIz0Q,EAASoljC,KACT76mB,EAAM4umB,IAAYtjlC,IAAI4+S,EAAQn8S,GAClC,OAAO0nC,EAAOiyH,GAAOs4U,EAAKjqc,EAC9B,CAEA,SAASsyjC,GAAetyjC,EAAQhoC,EAAO25J,GAQnC,GAPIj8I,EAASsqB,KACThoC,EAAQgoC,EACRA,OAAS1nC,GAGb0nC,EAASA,GAAU,GAEN,MAAThoC,EACA,OAAOq6lC,GAAMryjC,EAAQhoC,EAAO25J,EAAO,SAGvC,IAAI9qK,EACAokH,EAAM,GACV,IAAKpkH,EAAI,EAAGA,EAAI,GAAIA,IAChBokH,EAAIpkH,GAAKwrmC,GAAMryjC,EAAQn5C,EAAG8qK,EAAO,SAErC,OAAO1mD,CACX,CAUA,SAASsn/B,GAAiBC,EAAcxyjC,EAAQhoC,EAAO25J,GACvB,kBAAjB6g8B,GACH98kC,EAASsqB,KACThoC,EAAQgoC,EACRA,OAAS1nC,GAGb0nC,EAASA,GAAU,KAGnBhoC,EADAgoC,EAASwyjC,EAETA,GAAe,EAEX98kC,EAASsqB,KACThoC,EAAQgoC,EACRA,OAAS1nC,GAGb0nC,EAASA,GAAU,IAGvB,IAEIn5C,EAFA64C,EAASoljC,KACTp7iC,EAAQ8ojC,EAAe9yjC,EAAO0ojC,MAAMvimC,IAAM,EAE1ColH,EAAM,GAEV,GAAa,MAATjzG,EACA,OAAOq6lC,GAAMryjC,GAAShoC,EAAQ0xC,GAAS,EAAGioH,EAAO,OAGrD,IAAK9qK,EAAI,EAAGA,EAAI,EAAGA,IACfokH,EAAIpkH,GAAKwrmC,GAAMryjC,GAASn5C,EAAI6iD,GAAS,EAAGioH,EAAO,OAEnD,OAAO1mD,CACX,CAzGAmn/B,GAAQrumC,SA5+IR,SAAkBiI,EAAKyl2B,EAAKnn1B,GACxB,IAAIi5M,EAAS/hN,KAAKixlC,UAAUzmmC,IAAQwV,KAAKixlC,UAAoB,SAC7D,OAAOp+kC,EAAWkvM,GAAUA,EAAO1hN,KAAK4v1B,EAAKnn1B,GAAOi5M,CACxD,EA0+IA6u4B,GAAQpvmC,eAh3IR,SAAwBgJ,GACpB,IAAIg0C,EAASx+B,KAAKkxlC,gBAAgB1mmC,GAC9B2mmC,EAAcnxlC,KAAKkxlC,gBAAgB1mmC,EAAImoB,eAE3C,OAAI6rB,IAAW2yjC,EACJ3yjC,GAGXx+B,KAAKkxlC,gBAAgB1mmC,GAAO2mmC,EACvBntmC,MAAMm2lC,GACNpnlC,IAAI,SAAUq+lC,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAIt2lC,MAAM,GAEds2lC,CACX,GACClzlC,KAAK,IAEH8B,KAAKkxlC,gBAAgB1mmC,GAChC,EAy1IAommC,GAAQrsuB,YAr1IR,WACI,OAAOvkX,KAAKqxlC,YAChB,EAo1IAT,GAAQzsmC,QA/0IR,SAAiB8+C,GACb,OAAOjjC,KAAKsxlC,SAASvtmC,QAAQ,KAAMk/C,EACvC,EA80IA2tjC,GAAQ/smC,SAAWwpmC,GACnBuD,GAAQ3smC,WAAaopmC,GACrBuD,GAAQ9tmC,aA3zIR,SAAsBmgD,EAAQw+E,EAAe39H,EAAQ49H,GACjD,IAAIqgG,EAAS/hN,KAAKuxlC,cAAcztmC,GAChC,OAAO+uB,EAAWkvM,GACZA,EAAO9+K,EAAQw+E,EAAe39H,EAAQ49H,GACtCqgG,EAAOh+N,QAAQ,MAAOk/C,EAChC,EAuzIA2tjC,GAAQY,WArzIR,SAAoBn0iC,EAAM0kK,GACtB,IAAIvjL,EAASx+B,KAAKuxlC,cAAcl0iC,EAAO,EAAI,SAAW,QACtD,OAAOxqC,EAAW2rB,GAAUA,EAAOujL,GAAUvjL,EAAOz6C,QAAQ,MAAOg+N,EACvE,EAmzIA6u4B,GAAQ78lC,IAxkJR,SAAagL,GACT,IAAIuzB,EAAMjtC,EACV,IAAKA,KAAK0Z,EACFq4kC,EAAWr4kC,EAAQ1Z,KAEfwtB,EADJyf,EAAOvzB,EAAO1Z,IAEV2a,KAAK3a,GAAKitC,EAEVtyB,KAAK,IAAM3a,GAAKitC,GAI5BtyB,KAAK06D,QAAU37D,EAIfiB,KAAK+slC,+BAAiC,IAAIj7jC,QACrC9xB,KAAK6slC,wBAAwBt7kC,QAAUvR,KAAK8slC,cAAcv7kC,QACvD,IACA,UAAUA,OAEtB,EAojJAq/kC,GAAQl7nB,KAxnBR,SAAoBvye,EAAGq7C,GACnB,IAAIn5C,EACAmzB,EACA8oB,EACAo0b,EAAO11d,KAAKyxlC,OAASnO,GAAU,MAAMmO,MACzC,IAAKpsmC,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EASlC,OAPS,iBADMqwe,EAAKrwe,GAAGswe,QAGfr0b,EAAOmkN,EAAMiwO,EAAKrwe,GAAGswe,OAAOr4a,QAAQ,OACpCo4a,EAAKrwe,GAAGswe,MAAQr0b,EAAKq1K,kBAId++Q,EAAKrwe,GAAGywe,OACnB,IAAK,YACDJ,EAAKrwe,GAAGywe,MAAQ,IAChB,MACJ,IAAK,SAEDx0b,EAAOmkN,EAAMiwO,EAAKrwe,GAAGywe,OAAOx4a,QAAQ,OAAOq5J,UAC3C++Q,EAAKrwe,GAAGywe,MAAQx0b,EAAKq1K,UAIjC,OAAO++Q,CACX,EA+lBAk7nB,GAAQjE,UA7lBR,SAAyBsC,EAASzwjC,EAAQykE,GACtC,IAAI59G,EACAmzB,EAEAjlB,EACAsie,EACAD,EAHAF,EAAO11d,KAAK01d,OAMhB,IAFAu5nB,EAAUA,EAAQt8kC,cAEbttB,EAAI,EAAGmzB,EAAIk9c,EAAKthe,OAAQ/O,EAAImzB,IAAKnzB,EAKlC,GAJAkO,EAAOmie,EAAKrwe,GAAGkO,KAAKof,cACpBkjd,EAAOH,EAAKrwe,GAAGwwe,KAAKljd,cACpBijd,EAASF,EAAKrwe,GAAGuwe,OAAOjjd,cAEpBswF,EACA,OAAQzkE,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIq3b,IAASo5nB,EACT,OAAOv5nB,EAAKrwe,GAEhB,MAEJ,IAAK,OACD,GAAIkO,IAAS07lC,EACT,OAAOv5nB,EAAKrwe,GAEhB,MAEJ,IAAK,QACD,GAAIuwe,IAAWq5nB,EACX,OAAOv5nB,EAAKrwe,QAIrB,GAAI,CAACkO,EAAMsie,EAAMD,GAAQrte,QAAQ0mmC,IAAY,EAChD,OAAOv5nB,EAAKrwe,EAGxB,EAsjBAurmC,GAAQvJ,gBApjBR,SAA+B975B,EAAK9tG,GAChC,IAAI1V,EAAMwjH,EAAIoqS,OAASpqS,EAAIuqS,MAAQ,GAAM,EACzC,YAAah/d,IAAT2mF,EACOgoK,EAAMl6D,EAAIoqS,OAAOl4Y,OAEjBgoK,EAAMl6D,EAAIoqS,OAAOl4Y,QAAUA,EAAO8tG,EAAI3mM,QAAUmjF,CAE/D,EA8iBA6ohC,GAAQpF,cA/cR,SAAuBpwE,GAInB,OAHKg8D,EAAWp3kC,KAAM,mBAClByrlC,GAAiBprlC,KAAKL,MAEnBo7gC,EAAWp7gC,KAAKkslC,eAAiBlslC,KAAKgslC,UACjD,EA2cA4E,GAAQnE,cAvdR,SAAuBrxE,GAInB,OAHKg8D,EAAWp3kC,KAAM,mBAClByrlC,GAAiBprlC,KAAKL,MAEnBo7gC,EAAWp7gC,KAAKislC,eAAiBjslC,KAAKgslC,UACjD,EAmdA4E,GAAQlE,gBA1cR,SAAyBtxE,GAIrB,OAHKg8D,EAAWp3kC,KAAM,qBAClByrlC,GAAiBprlC,KAAKL,MAEnBo7gC,EAAWp7gC,KAAKmslC,iBAAmBnslC,KAAKgslC,UACnD,EAucA4E,GAAQ3vmC,OAn1HR,SAAsBkC,EAAGq7C,GACrB,OAAKr7C,EAKE4sB,EAAQ/P,KAAK+olC,SACd/olC,KAAK+olC,QAAQ5lmC,EAAEo6F,SACfv9E,KAAK+olC,SACA/olC,KAAK+olC,QAAQ1p3B,UAAYs/2B,IAAkBz8lC,KAAKs8C,GAC3C,SACA,cACRr7C,EAAEo6F,SAVCxtE,EAAQ/P,KAAK+olC,SACd/olC,KAAK+olC,QACL/olC,KAAK+olC,QAAoB,UASvC,EAu0HA6H,GAAQzvmC,YAr0HR,SAA2BgC,EAAGq7C,GAC1B,OAAKr7C,EAKE4sB,EAAQ/P,KAAK0xlC,cACd1xlC,KAAK0xlC,aAAavumC,EAAEo6F,SACpBv9E,KAAK0xlC,aACD/S,GAAiBz8lC,KAAKs8C,GAAU,SAAW,cAC7Cr7C,EAAEo6F,SARCxtE,EAAQ/P,KAAK0xlC,cACd1xlC,KAAK0xlC,aACL1xlC,KAAK0xlC,aAAyB,UAO5C,EA2zHAd,GAAQn8xB,YA1wHR,SAA2BsqxB,EAAWvgjC,EAAQykE,GAC1C,IAAI59G,EAAG4q2B,EAAKpmvB,EAEZ,GAAI7pG,KAAK2xlC,kBACL,OAAO7S,GAAkBz+kC,KAAKL,KAAM++kC,EAAWvgjC,EAAQykE,GAY3D,IATKjjG,KAAKi/kC,eACNj/kC,KAAKi/kC,aAAe,GACpBj/kC,KAAKk/kC,iBAAmB,GACxBl/kC,KAAKm/kC,kBAAoB,IAMxB95lC,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBA4q2B,EAAMonP,EAAU,CAAC,IAAMhylC,IACnB49G,IAAWjjG,KAAKk/kC,iBAAiB75lC,KACjC2a,KAAKk/kC,iBAAiB75lC,GAAK,IAAIysC,OAC3B,IAAM9xB,KAAK/e,OAAOgv2B,EAAK,IAAIls2B,QAAQ,IAAK,IAAM,IAC9C,KAEJic,KAAKm/kC,kBAAkB95lC,GAAK,IAAIysC,OAC5B,IAAM9xB,KAAK7e,YAAY8u2B,EAAK,IAAIls2B,QAAQ,IAAK,IAAM,IACnD,MAGHk/G,GAAWjjG,KAAKi/kC,aAAa55lC,KAC9BwkH,EACI,IAAM7pG,KAAK/e,OAAOgv2B,EAAK,IAAM,KAAOjw1B,KAAK7e,YAAY8u2B,EAAK,IAC9Djw1B,KAAKi/kC,aAAa55lC,GAAK,IAAIysC,OAAO+3E,EAAM9lH,QAAQ,IAAK,IAAK,MAI1Dk/G,GACW,SAAXzkE,GACAx+B,KAAKk/kC,iBAAiB75lC,GAAGnD,KAAK68lC,GAE9B,OAAO15lC,EACJ,GACH49G,GACW,QAAXzkE,GACAx+B,KAAKm/kC,kBAAkB95lC,GAAGnD,KAAK68lC,GAE/B,OAAO15lC,EACJ,IAAK49G,GAAUjjG,KAAKi/kC,aAAa55lC,GAAGnD,KAAK68lC,GAC5C,OAAO15lC,CAEf,CACJ,EAwtHAurmC,GAAQl8xB,YAtpHR,SAAqB0mtB,GACjB,OAAIp7gC,KAAK2xlC,mBACAva,EAAWp3kC,KAAM,iBAClBq/kC,GAAmBh/kC,KAAKL,MAExBo7gC,EACOp7gC,KAAK8/kC,mBAEL9/kC,KAAK4/kC,eAGXxI,EAAWp3kC,KAAM,kBAClBA,KAAK4/kC,aAAef,IAEjB7+kC,KAAK8/kC,oBAAsB1kE,EAC5Bp7gC,KAAK8/kC,mBACL9/kC,KAAK4/kC,aAEnB,EAqoHAgR,GAAQ77xB,iBA3qHR,SAA0BqmtB,GACtB,OAAIp7gC,KAAK2xlC,mBACAva,EAAWp3kC,KAAM,iBAClBq/kC,GAAmBh/kC,KAAKL,MAExBo7gC,EACOp7gC,KAAK+/kC,wBAEL//kC,KAAK6/kC,oBAGXzI,EAAWp3kC,KAAM,uBAClBA,KAAK6/kC,kBAAoBjB,IAEtB5+kC,KAAK+/kC,yBAA2B3kE,EACjCp7gC,KAAK+/kC,wBACL//kC,KAAK6/kC,kBAEnB,EA0pHA+Q,GAAQxsmC,KAj+GR,SAAoB6r2B,GAChB,OAAOpkX,GAAWokX,EAAKjw1B,KAAK4mlC,MAAMvimC,IAAK2b,KAAK4mlC,MAAMtimC,KAAKF,IAC3D,EAg+GAwsmC,GAAQgB,eAr9GR,WACI,OAAO5xlC,KAAK4mlC,MAAMtimC,GACtB,EAo9GAssmC,GAAQiB,eA19GR,WACI,OAAO7xlC,KAAK4mlC,MAAMvimC,GACtB,EA09GAusmC,GAAQxvmC,SAj3GR,SAAwB+B,EAAGq7C,GACvB,IAAIp9C,EAAW2uB,EAAQ/P,KAAK8xlC,WACtB9xlC,KAAK8xlC,UACL9xlC,KAAK8xlC,UACD3umC,IAAW,IAANA,GAAc6c,KAAK8xlC,UAAUzy3B,SAASn9O,KAAKs8C,GAC1C,SACA,cAEhB,OAAa,IAANr7C,EACDs9lC,GAAcr/lC,EAAU4e,KAAK4mlC,MAAMvimC,KACnClB,EACE/B,EAAS+B,EAAEm6F,OACXl8F,CACZ,EAq2GAwvmC,GAAQtvmC,YA31GR,SAA2B6B,GACvB,OAAa,IAANA,EACDs9lC,GAAczglC,KAAK+xlC,aAAc/xlC,KAAK4mlC,MAAMvimC,KAC5ClB,EACE6c,KAAK+xlC,aAAa5umC,EAAEm6F,OACpBt9E,KAAK+xlC,YACjB,EAs1GAnB,GAAQvvmC,cAp2GR,SAA6B8B,GACzB,OAAa,IAANA,EACDs9lC,GAAczglC,KAAKgylC,eAAgBhylC,KAAK4mlC,MAAMvimC,KAC9ClB,EACE6c,KAAKgylC,eAAe7umC,EAAEm6F,OACtBt9E,KAAKgylC,cACjB,EA+1GApB,GAAQh8xB,cA5wGR,SAA6BwsxB,EAAa5ijC,EAAQykE,GAC9C,IAAI59G,EAAG4q2B,EAAKpmvB,EAEZ,GAAI7pG,KAAKiylC,oBACL,OAAO9Q,GAAoB9glC,KAAKL,KAAMohlC,EAAa5ijC,EAAQykE,GAU/D,IAPKjjG,KAAKqhlC,iBACNrhlC,KAAKqhlC,eAAiB,GACtBrhlC,KAAKuhlC,kBAAoB,GACzBvhlC,KAAKshlC,oBAAsB,GAC3BthlC,KAAKkylC,mBAAqB,IAGzB7smC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BA4q2B,EAAMonP,EAAU,CAAC,IAAM,IAAI/5/B,IAAIj4F,GAC3B49G,IAAWjjG,KAAKkylC,mBAAmB7smC,KACnC2a,KAAKkylC,mBAAmB7smC,GAAK,IAAIysC,OAC7B,IAAM9xB,KAAK5e,SAAS6u2B,EAAK,IAAIls2B,QAAQ,IAAK,QAAU,IACpD,KAEJic,KAAKshlC,oBAAoBj8lC,GAAK,IAAIysC,OAC9B,IAAM9xB,KAAK3e,cAAc4u2B,EAAK,IAAIls2B,QAAQ,IAAK,QAAU,IACzD,KAEJic,KAAKuhlC,kBAAkBl8lC,GAAK,IAAIysC,OAC5B,IAAM9xB,KAAK1e,YAAY2u2B,EAAK,IAAIls2B,QAAQ,IAAK,QAAU,IACvD,MAGHic,KAAKqhlC,eAAeh8lC,KACrBwkH,EACI,IACA7pG,KAAK5e,SAAS6u2B,EAAK,IACnB,KACAjw1B,KAAK3e,cAAc4u2B,EAAK,IACxB,KACAjw1B,KAAK1e,YAAY2u2B,EAAK,IAC1Bjw1B,KAAKqhlC,eAAeh8lC,GAAK,IAAIysC,OAAO+3E,EAAM9lH,QAAQ,IAAK,IAAK,MAI5Dk/G,GACW,SAAXzkE,GACAx+B,KAAKkylC,mBAAmB7smC,GAAGnD,KAAKk/lC,GAEhC,OAAO/7lC,EACJ,GACH49G,GACW,QAAXzkE,GACAx+B,KAAKshlC,oBAAoBj8lC,GAAGnD,KAAKk/lC,GAEjC,OAAO/7lC,EACJ,GACH49G,GACW,OAAXzkE,GACAx+B,KAAKuhlC,kBAAkBl8lC,GAAGnD,KAAKk/lC,GAE/B,OAAO/7lC,EACJ,IAAK49G,GAAUjjG,KAAKqhlC,eAAeh8lC,GAAGnD,KAAKk/lC,GAC9C,OAAO/7lC,CAEf,CACJ,EA6sGAurmC,GAAQhQ,cAlqGR,SAAuBxlE,GACnB,OAAIp7gC,KAAKiylC,qBACA7a,EAAWp3kC,KAAM,mBAClBwhlC,GAAqBnhlC,KAAKL,MAE1Bo7gC,EACOp7gC,KAAKgilC,qBAELhilC,KAAK6hlC,iBAGXzK,EAAWp3kC,KAAM,oBAClBA,KAAK6hlC,eAAiBb,IAEnBhhlC,KAAKgilC,sBAAwB5mE,EAC9Bp7gC,KAAKgilC,qBACLhilC,KAAK6hlC,eAEnB,EAipGA+O,GAAQjQ,mBA/oGR,SAA4BvlE,GACxB,OAAIp7gC,KAAKiylC,qBACA7a,EAAWp3kC,KAAM,mBAClBwhlC,GAAqBnhlC,KAAKL,MAE1Bo7gC,EACOp7gC,KAAKiilC,0BAELjilC,KAAK8hlC,sBAGX1K,EAAWp3kC,KAAM,yBAClBA,KAAK8hlC,oBAAsBb,IAExBjhlC,KAAKiilC,2BAA6B7mE,EACnCp7gC,KAAKiilC,0BACLjilC,KAAK8hlC,oBAEnB,EA8nGA8O,GAAQlQ,iBA5nGR,SAA0BtlE,GACtB,OAAIp7gC,KAAKiylC,qBACA7a,EAAWp3kC,KAAM,mBAClBwhlC,GAAqBnhlC,KAAKL,MAE1Bo7gC,EACOp7gC,KAAKkilC,wBAELlilC,KAAK+hlC,oBAGX3K,EAAWp3kC,KAAM,uBAClBA,KAAK+hlC,kBAAoBb,IAEtBlhlC,KAAKkilC,yBAA2B9mE,EACjCp7gC,KAAKkilC,wBACLlilC,KAAK+hlC,kBAEnB,EA4mGA6O,GAAQ5umC,KAn8FR,SAAoBC,GAGhB,MAAgD,OAAxCA,EAAQ,IAAImG,cAAcsqB,OAAO,EAC7C,EAg8FAk+kC,GAAQzumC,SAv7FR,SAAwBipM,EAAOC,EAAS/oM,GACpC,OAAI8oM,EAAQ,GACD9oM,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EA6gGA+gmC,GAAmB,KAAM,CACrB3tnB,KAAM,CACF,CACIC,MAAO,aACPG,MAAO,IACPlxe,OAAQ,EACR2O,KAAM,cACNqie,OAAQ,KACRC,KAAM,MAEV,CACIF,MAAO,aACPG,OAAO,IACPlxe,OAAQ,EACR2O,KAAM,gBACNqie,OAAQ,KACRC,KAAM,OAGd3xe,uBAAwB,uBACxBC,QAAS,SAAU8+C,GACf,IAAIppC,EAAIopC,EAAS,GAWjB,OAAOA,GATgC,IAA/B4zN,GAAO5zN,EAAS,IAAO,IACjB,KACM,IAANppC,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,KAExB,IAKJ4rP,EAAMsoH,KAAOuruB,EACT,wDACA+J,IAEJ591B,EAAM0s2B,SAAW7Y,EACb,gEACAgK,IAGJ,IAAI8O,GAAU5smC,KAAKM,IAmBnB,SAASusmC,GAAcntlC,EAAUjjB,EAAO0D,EAAOoJ,GAC3C,IAAI8xD,EAAQype,GAAeroiB,EAAO0D,GAMlC,OAJAuf,EAAS2jlC,eAAiB95lC,EAAY8xD,EAAMgoiC,cAC5C3jlC,EAAS4jlC,OAAS/5lC,EAAY8xD,EAAMioiC,MACpC5jlC,EAAS6jlC,SAAWh6lC,EAAY8xD,EAAMkoiC,QAE/B7jlC,EAAS8jlC,SACpB,CAYA,SAASsJ,GAAQrvjC,GACb,OAAIA,EAAS,EACFz9C,KAAKQ,MAAMi9C,GAEXz9C,KAAKsjE,KAAK7lB,EAEzB,CAyDA,SAASsvjC,GAAah//B,GAGlB,OAAe,KAAPA,EAAe,MAC3B,CAEA,SAASi//B,GAAavxmC,GAElB,OAAiB,OAATA,EAAmB,IAC/B,CA8CA,SAASwxmC,GAAOhpY,GACZ,OAAO,WACH,OAAOzptB,KAAK0pO,GAAG+/e,EACnB,CACJ,CAEA,IAAIipY,GAAiBD,GAAO,MACxBE,GAAYF,GAAO,KACnBG,GAAYH,GAAO,KACnBI,GAAUJ,GAAO,KACjBK,GAASL,GAAO,KAChBM,GAAUN,GAAO,KACjBO,GAAWP,GAAO,KAClBQ,GAAaR,GAAO,KACpBS,GAAUT,GAAO,KACjBU,GAAYT,GAWhB,SAASU,GAAW7/lC,GAChB,OAAO,WACH,OAAOyM,KAAK8oM,UAAY9oM,KAAK8oC,MAAMv1C,GAAQjO,GAC/C,CACJ,CAEA,IAAIovT,GAAe0+yB,GAAW,gBAC1B9n6B,GAAU8n6B,GAAW,WACrB/n6B,GAAU+n6B,GAAW,WACrBho6B,GAAQgo6B,GAAW,SACnB7//B,GAAO6//B,GAAW,QAClBnymC,GAASmymC,GAAW,UACpB1nnB,GAAQ0nnB,GAAW,SAMvB,IAAI7nmC,GAAQ/F,KAAK+F,MACbs/f,GAAa,CACT3ngB,GAAI,GACJD,EAAG,GACHE,EAAG,GACHE,EAAG,GACHE,EAAG,GACHq2B,EAAG,KACHn2B,EAAG,IAIX,SAAS4vmC,GAAkBvvmC,EAAQm/C,EAAQw+E,EAAeC,EAAUxjF,GAChE,OAAOA,EAAOp7C,aAAamgD,GAAU,IAAKw+E,EAAe39H,EAAQ49H,EACrE,CAmGA,IAAI4x+B,GAAQ9tmC,KAAKM,IAEjB,SAAS6tB,GAAKptB,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CACjC,CAEA,SAASgtmC,KAQL,IAAKvzlC,KAAK8oM,UACN,OAAO9oM,KAAKy6kC,aAAal2tB,cAG7B,IAGIl5L,EACAD,EACAsgT,EACAzof,EAEAuwmC,EACAC,EACAC,EACAC,EAXAro6B,EAAUgo6B,GAAMtzlC,KAAK6olC,eAAiB,IACtCt1/B,EAAO+//B,GAAMtzlC,KAAK8olC,OAClB7nmC,EAASqymC,GAAMtzlC,KAAK+olC,SAKpBpwiC,EAAQ34C,KAAK2ylC,YAMjB,OAAKh6iC,GAOL0yI,EAAUiy5B,GAAShy5B,EAAU,IAC7BF,EAAQky5B,GAASjy5B,EAAU,IAC3BC,GAAW,GACXD,GAAW,GAGXqgT,EAAQ4xmB,GAASr8lC,EAAS,IAC1BA,GAAU,GAGVgC,EAAIqoM,EAAUA,EAAQvtD,QAAQ,GAAGh6I,QAAQ,SAAU,IAAM,GAEzDyvmC,EAAY76iC,EAAQ,EAAI,IAAM,GAC9B86iC,EAAS9/kC,GAAK3T,KAAK+olC,WAAap1kC,GAAKglC,GAAS,IAAM,GACpD+6iC,EAAW//kC,GAAK3T,KAAK8olC,SAAWn1kC,GAAKglC,GAAS,IAAM,GACpDg7iC,EAAUhglC,GAAK3T,KAAK6olC,iBAAmBl1kC,GAAKglC,GAAS,IAAM,GAGvD66iC,EACA,KACC9nnB,EAAQ+nnB,EAAS/nnB,EAAQ,IAAM,KAC/Bzqf,EAASwymC,EAASxymC,EAAS,IAAM,KACjCsyG,EAAOmggC,EAAWnggC,EAAO,IAAM,KAC/B63F,GAASC,GAAWC,EAAU,IAAM,KACpCF,EAAQuo6B,EAAUvo6B,EAAQ,IAAM,KAChCC,EAAUso6B,EAAUto6B,EAAU,IAAM,KACpCC,EAAUqo6B,EAAU1wmC,EAAI,IAAM,KA9BxB,KAgCf,CAEA,IAAI2wmC,GAAUnL,GAASrolC,UAwGvB,OAtGAwzlC,GAAQ9q5B,QAp0ER,WACI,OAAO9oM,KAAKkpyB,QAChB,EAm0EA0qT,GAAQ9tmC,IA/XR,WACI,IAAIiQ,EAAOiK,KAAK8oC,MAahB,OAXA9oC,KAAK6olC,cAAgBuJ,GAAQpylC,KAAK6olC,eAClC7olC,KAAK8olC,MAAQsJ,GAAQpylC,KAAK8olC,OAC1B9olC,KAAK+olC,QAAUqJ,GAAQpylC,KAAK+olC,SAE5BhzlC,EAAK2+S,aAAe09yB,GAAQr8lC,EAAK2+S,cACjC3+S,EAAKu1L,QAAU8m6B,GAAQr8lC,EAAKu1L,SAC5Bv1L,EAAKs1L,QAAU+m6B,GAAQr8lC,EAAKs1L,SAC5Bt1L,EAAKq1L,MAAQgn6B,GAAQr8lC,EAAKq1L,OAC1Br1L,EAAK9U,OAASmxmC,GAAQr8lC,EAAK9U,QAC3B8U,EAAK21e,MAAQ0mnB,GAAQr8lC,EAAK21e,OAEnB1re,IACX,EAiXA4zlC,GAAQtgmC,IApWR,SAAerR,EAAO0D,GAClB,OAAO0smC,GAAcrylC,KAAM/d,EAAO0D,EAAO,EAC7C,EAmWAiumC,GAAQn8vB,SAhWR,SAAoBx1W,EAAO0D,GACvB,OAAO0smC,GAAcrylC,KAAM/d,EAAO0D,GAAQ,EAC9C,EA+VAiumC,GAAQlq3B,GAnRR,SAAYtpC,GACR,IAAKpgM,KAAK8oM,UACN,OAAOxjN,IAEX,IAAIiuG,EACAtyG,EACAyzT,EAAe10S,KAAK6olC,cAIxB,GAAc,WAFdzo5B,EAAQu74B,EAAev74B,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFA7sG,EAAOvzF,KAAK8olC,MAAQp0yB,EAAe,MACnCzzT,EAAS+e,KAAK+olC,QAAUwJ,GAAah//B,GAC7B6sG,GACJ,IAAK,QACD,OAAOn/M,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAsyG,EAAOvzF,KAAK8olC,MAAQtjmC,KAAK+F,MAAMinmC,GAAaxylC,KAAK+olC,UACzC3o5B,GACJ,IAAK,OACD,OAAO7sG,EAAO,EAAImhN,EAAe,OACrC,IAAK,MACD,OAAOnhN,EAAOmhN,EAAe,MACjC,IAAK,OACD,OAAc,GAAPnhN,EAAYmhN,EAAe,KACtC,IAAK,SACD,OAAc,KAAPnhN,EAAcmhN,EAAe,IACxC,IAAK,SACD,OAAc,MAAPnhN,EAAemhN,EAAe,IAEzC,IAAK,cACD,OAAOlvT,KAAKQ,MAAa,MAAPutG,GAAgBmhN,EACtC,QACI,MAAM,IAAIntS,MAAM,gBAAkB64L,GAGlD,EA0OAwz5B,GAAQlB,eAAiBA,GACzBkB,GAAQjB,UAAYA,GACpBiB,GAAQhB,UAAYA,GACpBgB,GAAQf,QAAUA,GAClBe,GAAQd,OAASA,GACjBc,GAAQb,QAAUA,GAClBa,GAAQZ,SAAWA,GACnBY,GAAQX,WAAaA,GACrBW,GAAQV,QAAUA,GAClBU,GAAQj94B,QAAUw84B,GAClBS,GAAQ5K,QAhWR,WACI,IAII195B,EACAD,EACAD,EACAsgT,EACAmonB,EARAn/yB,EAAe10S,KAAK6olC,cACpBt1/B,EAAOvzF,KAAK8olC,MACZ7nmC,EAAS+e,KAAK+olC,QACdhzlC,EAAOiK,KAAK8oC,MAgDhB,OArCS4rQ,GAAgB,GAAKnhN,GAAQ,GAAKtyG,GAAU,GAC5CyzT,GAAgB,GAAKnhN,GAAQ,GAAKtyG,GAAU,IAGjDyzT,GAAuD,MAAvC49yB,GAAQE,GAAavxmC,GAAUsyG,GAC/CA,EAAO,EACPtyG,EAAS,GAKb8U,EAAK2+S,aAAeA,EAAe,IAEnCppH,EAAUgy5B,GAAS5oyB,EAAe,KAClC3+S,EAAKu1L,QAAUA,EAAU,GAEzBD,EAAUiy5B,GAAShy5B,EAAU,IAC7Bv1L,EAAKs1L,QAAUA,EAAU,GAEzBD,EAAQky5B,GAASjy5B,EAAU,IAC3Bt1L,EAAKq1L,MAAQA,EAAQ,GAErB73F,GAAQ+p/B,GAASly5B,EAAQ,IAIzBnqM,GADA4ymC,EAAiBvW,GAASiV,GAAah//B,IAEvCA,GAAQ++/B,GAAQE,GAAaqB,IAG7BnonB,EAAQ4xmB,GAASr8lC,EAAS,IAC1BA,GAAU,GAEV8U,EAAKw9F,KAAOA,EACZx9F,EAAK9U,OAASA,EACd8U,EAAK21e,MAAQA,EAEN1re,IACX,EA4SA4zlC,GAAQ3ukC,MAlOR,WACI,OAAOqlgB,GAAetqhB,KAC1B,EAiOA4zlC,GAAQ//lC,IA/NR,SAAeusM,GAEX,OADAA,EAAQu74B,EAAev74B,GAChBpgM,KAAK8oM,UAAY9oM,KAAKogM,EAAQ,OAAS96M,GAClD,EA6NAsumC,GAAQl/yB,aAAeA,GACvBk/yB,GAAQto6B,QAAUA,GAClBso6B,GAAQvo6B,QAAUA,GAClBuo6B,GAAQxo6B,MAAQA,GAChBwo6B,GAAQrggC,KAAOA,GACfqggC,GAAQhonB,MAlNR,WACI,OAAO0xmB,GAASt9kC,KAAKuzF,OAAS,EAClC,EAiNAqggC,GAAQ3ymC,OAASA,GACjB2ymC,GAAQlonB,MAAQA,GAChBkonB,GAAQhG,SAlIR,SAAkBkG,EAAeC,GAC7B,IAAK/zlC,KAAK8oM,UACN,OAAO9oM,KAAKy6kC,aAAal2tB,cAG7B,IAEIrmV,EACA6jL,EAHAiy4B,GAAa,EACbr11B,EAAKksP,GAyBT,MArB6B,iBAAlBipmB,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACPp11B,EAAK70Q,OAAOC,OAAO,CAAC,EAAG8ggB,GAAYkpmB,GACZ,MAAnBA,EAAc9wmC,GAAiC,MAApB8wmC,EAAc7wmC,KACzCy7Q,EAAGz7Q,GAAK6wmC,EAAc9wmC,EAAI,IAKlC8+N,EAxFJ,SAAwBky4B,EAAgBxy+B,EAAeopY,EAAY3sd,GAC/D,IAAIh5B,EAAWolhB,GAAe2pkB,GAAgBnumC,MAC1CwlM,EAAU//L,GAAM2Z,EAASwkO,GAAG,MAC5Br+C,EAAU9/L,GAAM2Z,EAASwkO,GAAG,MAC5Bt+C,EAAQ7/L,GAAM2Z,EAASwkO,GAAG,MAC1Bn2I,EAAOhoG,GAAM2Z,EAASwkO,GAAG,MACzBzoP,EAASsK,GAAM2Z,EAASwkO,GAAG,MAC3BkiQ,EAAQrgf,GAAM2Z,EAASwkO,GAAG,MAC1BgiQ,EAAQngf,GAAM2Z,EAASwkO,GAAG,MAC1B9vO,EACK0xL,GAAWu/T,EAAW3ngB,IAAM,CAAC,IAAKooM,IAClCA,EAAUu/T,EAAW5ngB,GAAK,CAAC,KAAMqoM,IACjCD,GAAW,GAAK,CAAC,MACjBA,EAAUw/T,EAAW1ngB,GAAK,CAAC,KAAMkoM,IACjCD,GAAS,GAAK,CAAC,MACfA,EAAQy/T,EAAWxngB,GAAK,CAAC,KAAM+nM,IAC/B73F,GAAQ,GAAK,CAAC,MACdA,EAAOs3Z,EAAWtngB,GAAK,CAAC,KAAMgwG,GAgBvC,OAdoB,MAAhBs3Z,EAAWjxe,IACXhgB,EACIA,GACCgye,GAAS,GAAK,CAAC,MACfA,EAAQif,EAAWjxe,GAAK,CAAC,KAAMgyd,KAExChye,EAAIA,GACC3Y,GAAU,GAAK,CAAC,MAChBA,EAAS4pgB,EAAWpngB,GAAK,CAAC,KAAMxC,IAChCyqf,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKjqX,EACP7nH,EAAE,IAAMq6lC,EAAiB,EACzBr6lC,EAAE,GAAKskC,EACAm1jC,GAAkBvylC,MAAM,KAAMlH,EACzC,CAsDas6lC,CAAel0lC,MAAOg0lC,EAAYr11B,EAD3CzgO,EAASl+B,KAAKy6kC,cAGVuZ,IACAjy4B,EAAS7jL,EAAOszjC,YAAYxxlC,KAAM+hN,IAG/B7jL,EAAOj6C,WAAW89N,EAC7B,EAmGA6x4B,GAAQhz/B,YAAc2y/B,GACtBK,GAAQ5smC,SAAWusmC,GACnBK,GAAQ/14B,OAAS014B,GACjBK,GAAQ11jC,OAASA,GACjB01jC,GAAQnZ,WAAaA,GAErBmZ,GAAQO,YAAc7a,EAClB,sFACAia,IAEJK,GAAQ7lvB,KAAOA,GAIfwsuB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1B2C,GAAc,IAAKN,IACnBM,GAAc,IA5wJO,wBA6wJrBO,GAAc,IAAK,SAAUx7lC,EAAOoyB,EAAOtV,GACvCA,EAAOksG,GAAK,IAAIpiG,KAAyB,IAApB8H,WAAW1uB,GACpC,GACAw7lC,GAAc,IAAK,SAAUx7lC,EAAOoyB,EAAOtV,GACvCA,EAAOksG,GAAK,IAAIpiG,KAAKguP,GAAM50Q,GAC/B,GAIAwjQ,EAAM5gL,QAAU,SAn/KZsygC,EAq/KYwP,GAEhBlh2B,EAAM3wP,GAAKowB,GACXugO,EAAM/7P,IA77EN,WAGI,OAAO4+lC,GAAO,WAFH,GAAGxtlC,MAAMuF,KAAKlM,UAAW,GAGxC,EA07EAsxP,EAAM97P,IAx7EN,WAGI,OAAO2+lC,GAAO,UAFH,GAAGxtlC,MAAMuF,KAAKlM,UAAW,GAGxC,EAq7EAsxP,EAAM38O,IAn7EI,WACN,OAAOD,KAAKC,IAAMD,KAAKC,OAAS,IAAID,IACxC,EAk7EA48O,EAAMgjP,IAAM4umB,EACZ5x1B,EAAMsp2B,KA9nBN,SAAoB9smC,GAChB,OAAO0kmC,GAAoB,IAAR1kmC,EACvB,EA6nBAwjQ,EAAMxkQ,OAtgBN,SAAoBu9C,EAAQhoC,GACxB,OAAOs6lC,GAAetyjC,EAAQhoC,EAAO,SACzC,EAqgBAivP,EAAM57B,OAASA,EACf47B,EAAMvnN,OAASmljC,GACf591B,EAAMs7E,QAAU03wB,EAChBhz1B,EAAMvgP,SAAWolhB,GACjB7kS,EAAM2z1B,SAAWA,EACjB3z1B,EAAMrkQ,SApgBN,SAAsB4vmC,EAAcxyjC,EAAQhoC,GACxC,OAAOu6lC,GAAiBC,EAAcxyjC,EAAQhoC,EAAO,WACzD,EAmgBAivP,EAAMuq2B,UAloBN,WACI,OAAOrJ,GAAY7llC,MAAM,KAAM3M,WAAW67lC,WAC9C,EAioBAvq2B,EAAMg11B,WAAa6I,GACnB791B,EAAMwj2B,WAAaA,GACnBxj2B,EAAMtkQ,YA5gBN,SAAyBq9C,EAAQhoC,GAC7B,OAAOs6lC,GAAetyjC,EAAQhoC,EAAO,cACzC,EA2gBAivP,EAAMnkQ,YAjgBN,SAAyB0vmC,EAAcxyjC,EAAQhoC,GAC3C,OAAOu6lC,GAAiBC,EAAcxyjC,EAAQhoC,EAAO,cACzD,EAggBAivP,EAAMzkQ,aAAeA,GACrBykQ,EAAM2u2B,aA90GN,SAAsB7gmC,EAAMwL,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAIm/B,EACAm2jC,EACAza,EAAegJ,GAEE,MAAjBttjB,GAAQ/hiB,IAA+C,MAA9B+hiB,GAAQ/hiB,GAAMgwlC,aAEvCjujB,GAAQ/hiB,GAAMQ,IAAI4llC,EAAarkjB,GAAQ/hiB,GAAMmnE,QAAS37D,KAIrC,OADjBs1lC,EAAYpR,GAAW1vlC,MAEnBqmlC,EAAeya,EAAU35hC,SAE7B37D,EAAS46kC,EAAaC,EAAc76kC,GACnB,MAAbs1lC,IAIAt1lC,EAAO82d,KAAOtie,IAElB2qC,EAAS,IAAI47iC,EAAO/6kC,IACbwklC,aAAejujB,GAAQ/hiB,GAC9B+hiB,GAAQ/hiB,GAAQ2qC,GAIpBmljC,GAAmB9vlC,EACvB,MAEyB,MAAjB+hiB,GAAQ/hiB,KAC0B,MAA9B+hiB,GAAQ/hiB,GAAMgwlC,cACdjujB,GAAQ/hiB,GAAQ+hiB,GAAQ/hiB,GAAMgwlC,aAC1BhwlC,IAAS8vlC,MACTA,GAAmB9vlC,IAEC,MAAjB+hiB,GAAQ/hiB,WACR+hiB,GAAQ/hiB,IAI3B,OAAO+hiB,GAAQ/hiB,EACnB,EAoyGAkyP,EAAM6vS,QA1wGN,WACI,OAAOjriB,EAAKiriB,GAChB,EAywGA7vS,EAAMpkQ,cAzgBN,SAA2B2vmC,EAAcxyjC,EAAQhoC,GAC7C,OAAOu6lC,GAAiBC,EAAcxyjC,EAAQhoC,EAAO,gBACzD,EAwgBAivP,EAAMk21B,eAAiBA,EACvBl21B,EAAM6u2B,qBAtNN,SAAoCC,GAChC,YAAyBz9lC,IAArBy9lC,EACOhpmC,GAEqB,mBAArBgpmC,IACPhpmC,GAAQgpmC,GACD,EAGf,EA8MA9u2B,EAAM+u2B,sBA3MN,SAAqCp6rB,EAAW5mW,GAC5C,YAA8B18D,IAA1B+zf,GAAWzwF,UAGDtja,IAAV08D,EACOq3b,GAAWzwF,IAEtBywF,GAAWzwF,GAAa5mW,EACN,MAAd4mW,IACAywF,GAAW3ngB,GAAKswE,EAAQ,IAErB,GACX,EAgMAiyL,EAAM+n2B,eAx1DN,SAA2BiH,EAAU3rlC,GACjC,IAAIu0C,EAAOo3iC,EAASp3iC,KAAKv0C,EAAK,QAAQ,GACtC,OAAOu0C,GAAQ,EACT,WACAA,GAAQ,EACN,WACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,WACA,UACpB,EA00DAooM,EAAMrlP,UAAY8kB,GAGlBugO,EAAMiv2B,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnBrrZ,KAAM,aACNC,KAAM,QACNqrZ,aAAc,WACdC,QAAS,eACThX,KAAM,aACN5tM,MAAO,WAGJ1qpB,CAEV,CAhjLmFlhQ,E,mCCNhFw9V,EAAmB,0BACnBv+U,EAAK,EAAQ,OAAgB0V,EAAI1V,EAAGm+U,WAAYq7K,EAA8Bx5f,EAAGw5f,4BAA6BowkB,EAA8B5pkC,EAAG4pkC,4BAA6BV,EAAmBlpkC,EAAGkpkC,iBAAkB9qvB,EAAgBp+U,EAAGo+U,cAAekrvB,EAAqBtpkC,EAAGspkC,mBA8DlR,SAASkoB,EAAe1pjC,EAAQ/3C,EAAM0hmC,GAKlC,YAJmB,IAAfA,IAAyBA,EAAa,SAIpB,IAAX3pjC,EACA,KAII,OAAXA,GAAoBy2S,EAAiBz2S,GAKlC2pjC,EAAW3qmC,OAAO,SAAU2f,EAAOzG,GACtC,IAAI8uB,EAAO9uB,EAAG8uB,KAAMtiB,EAAOxM,EAAGwM,KAAM4Y,EAASplB,EAAGolB,OAChD,GAAI3e,KAAWqoB,KAAQgZ,GACnB,OAAOrhC,EAEX,IAAItkB,EAAQ2lD,EAAOhZ,GACnB,OAAItiB,UAAerqB,IAAUqqB,GAGhB,WAATA,GAAqBjqB,MAAMJ,GAFpBuzB,EAAE+rU,aAAa1xV,EAAO,IAAM++B,EAAMtiB,GAKzC1b,MAAMyb,QAAQ6Y,KAAYA,EAAO+M,SAAShwC,GACnCuzB,EAAEi1jB,cAAc56kB,EAAO,IAAM++B,EAAM1J,GAEvC3e,CACX,EAAG,MApBQiP,EAAE+rU,aAAa1xV,EAAM,SAqBpC,CAgBA9O,EAAQ,GAxGR,SAAkCu+V,GAC9B,IAAI/4U,EAAQ+qlC,EAAehywB,EAAkB,4BAC7C,OAAKA,GAAoB/4U,EACdA,GAEXA,EAAQ+qlC,EAAehywB,EAAiBjoI,MAAO,iCAAkC,CAC7E,CAAEzoL,KAAM,yBAA0B1J,OAAQ9+B,OAAO8+B,OAAOwkjC,IACxD,CAAE96iC,KAAM,0BAA2B1J,OAAQ9+B,OAAO8+B,OAAOg5T,IACzD,CAAEtvT,KAAM,yBAA0BtiB,KAAM,UACxC,CAAEsiB,KAAM,YAAatiB,KAAM,UAC3B,CAAEsiB,KAAM,OAAQ1J,OAAQ9+B,OAAO8+B,OAAO8jjC,IACtC,CAAEp6iC,KAAM,8BAA+B1J,OAAQ9+B,OAAO8+B,OAAOo0e,IAC7D,CAAE1qe,KAAM,qBAAsB1J,OAAQ9+B,OAAO8+B,OAAOkkjC,SAKpD9pvB,EAAiBjoI,MAGb,cAAeioI,EAAiBjoI,OAAS,gCAAiCioI,EAAiBjoI,MACpF,IAAIz6M,UAAU,mIAIrB,qBAAsB0iV,EAAiBjoI,OAAS,2BAA4BioI,EAAiBjoI,MACtF,IAAIz6M,UAAU,qIAoEjC,SAAkCu3H,GAC9B,IAAItkI,EAAO,kDACP0W,EAAQ+qlC,EAAen99B,EAAkBtkI,GAC7C,OAAOskI,EAAmB5tH,GAASngB,OAAO8+B,OAAOg5T,GAAet3V,OAAO,SAAU2f,EAAOqoB,GACpF,OAAOroB,GAAS+qlC,EAAen99B,EAAiBvlG,GAAO/+B,EAAO,IAAM++B,EAAM,CACtE,CAAEA,KAAM,SAAUtiB,KAAM,UACxB,CAAEsiB,KAAM,QAAStiB,KAAM,WAE/B,EAAG,MAAQ/F,CACf,CA3EeirlC,CAAyBlywB,EAAiBjoI,MAAMljF,kBAEpD,KACX,EA0EApzI,EAAQ,GAnER,SAA4B6nB,EAAO1c,GAC/B,KAAM0c,aAAiB1c,EAAQ88N,iBACxBpgN,aAAiB1c,EAAQ46P,gBACzBl+O,aAAiB1c,EAAQusP,iBACzB7vO,aAAiB1c,EAAQo1V,kBAE5B,MAAM9rU,EAAE+rU,aAAa,QAAS,wEAEtC,C,+BCpDA,EAAQ,M,+BCARn7V,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIgghB,EAAU,EAAQ,OAClBrmM,EAAkB,EAAQ,OAS9B,SAAS61xB,EAAYxiyB,GACjB,IAAIyiyB,EAAgBziyB,EAAMixsB,iBAC1B,GAAKwxF,EAAL,CAEAzvlB,EAAQpxY,MAAM6y7B,uBAAuBz0vB,GACrC,IAAI59T,EAAU49T,EAAMC,OAAOpvC,QAAQt0O,WAOnC,MAHsB,kBAAlBkmjC,GAAqCrgmC,GACrCA,EAAQ4xF,QAEL24O,EAAgBQ,UAAU0+iB,UAAU19iB,WATjC,CAUd,CACAr8U,EAAQk+/B,8BAAgC,SAAUn9vB,GAC9C,OAAOA,EAAkBujR,SAAS,CAAC,EAAGoslB,EAAa,CAAE7ggC,UAAW,MACpE,C,yBC5BA5S,EAAOj9F,QAAU,SAAwBg9G,EAAIi4H,EAAUC,GACrD,IAAIlwH,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BO,EAAS,QAAUR,EACnBkS,EAAQ,SAAWlS,EACnBwB,EAAM75H,EAAG0S,KAAK7iB,KAAKmQ,GACnBirI,EAAiB,GACrBpR,EAAItxN,QACJ,IAAIuxN,EAAa,QAAUD,EAAItxN,MAC3B26b,EAAiBrpO,EAAIZ,OACvB263B,EAAa,YAAcv73B,EAC3Bw73B,EAAkB,iBAAmBx73B,EACvCrwH,GAAO,OAAS,EAAU,eAAiB,EAAe,cAAgB,EAAW,cAAgB,EAAoB,YACzH,IAAIwjI,EAAgBxrI,EAAG25H,cACvB35H,EAAG25H,cAAgBE,EAAIF,eAAgB,EACvC,IAAI+yH,EAAOroI,EACX,GAAIqoI,EAGF,IAFA,IAAIi3O,EAAMv4V,GAAM,EACd9wK,EAAKoyR,EAAK/5V,OAAS,EACdy4O,EAAK9wK,GACVqpgB,EAAOj3O,EAAKthH,GAAM,GACdprI,EAAG0S,KAAKgwV,eAAeihI,EAAM3je,EAAG0/H,MAAMr7L,MACxCw1L,EAAIhW,OAAS8/W,EACb9pW,EAAIE,WAAasQ,EAAc,IAAMe,EAAK,IAC1CvR,EAAIpB,cAAgBD,EAAiB,IAAM4S,EAC3CpjI,GAAO,KAAQhI,EAAGkkH,SAAS2V,GAAQ,IACnCA,EAAIZ,OAASiqO,GAEbl7V,GAAO,QAAU,EAAe,YAE9BojI,IACFpjI,GAAO,QAAU,EAAe,OAAS,EAAe,OAAS,EAAW,aAAe,EAAoB,OAAS,EAAoB,KAAO,EAAO,eAC1JijI,GAAkB,KAEpBjjI,GAAO,QAAU,EAAe,OAAS,EAAW,MAAQ,EAAe,YAAc,EAAoB,MAAQ,EAAO,MA6BhI,OA1BAhI,EAAG25H,cAAgBE,EAAIF,cAAgB6R,EACvCxjI,GAAY,EAAmB,QAAU,EAAW,sBAC5B,IAApBhI,EAAGs5H,cACLtxH,GAAO,sDAAyEhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,gCAAkC,EAAoB,OAC5L,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,2DAELhI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,6BAA+B,EAAgB,mCAAsChI,EAAa,WAAI,YAAc,EAAU,KAEvIgI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFhI,EAAG25H,eAAiBjB,IACnB14H,EAAG5b,MACL4jB,GAAO,wCAEPA,GAAO,8CAGXA,GAAO,sBAAwB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,2BACpHhI,EAAG1xE,KAAKqqM,YACV3wH,GAAO,OAEFA,CACT,C,qCCtEA,IAAI1oG,EAAaf,MAAQA,KAAKe,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIvK,UAAU,SAAUC,EAASwK,GAC/C,SAASC,EAAU1b,GAAS,IAAM2b,EAAKH,EAAUrZ,KAAKnC,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC1F,SAASuc,EAAS5b,GAAS,IAAM2b,EAAKH,EAAiB,MAAExb,GAAS,CAAE,MAAOX,GAAKoc,EAAOpc,EAAI,CAAE,CAC7F,SAASsc,EAAKnO,GAJlB,IAAexN,EAIawN,EAAOqO,KAAO5K,EAAQzD,EAAOxN,QAJ1CA,EAIyDwN,EAAOxN,MAJhDA,aAAiBub,EAAIvb,EAAQ,IAAIub,EAAE,SAAUtK,GAAWA,EAAQjR,EAAQ,IAIjBkR,KAAKwK,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKnZ,OAClE,EACJ,EACI2Z,EAAezB,MAAQA,KAAKyB,aAAgB,SAAUT,EAAStT,GAC/D,IAAsGgU,EAAG/d,EAAGid,EAAGe,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmB,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAE7Z,KAAMma,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXzd,SAA0Bmd,EAAEnd,OAAO0d,UAAY,WAAa,OAAOlC,IAAM,GAAI2B,EACvJ,SAASM,EAAKpB,GAAK,OAAO,SAAUsB,GAAK,OACzC,SAAcC,GACV,GAAIV,EAAG,MAAM,IAAIpB,UAAU,mCAC3B,KAAOsB,OACH,GAAIF,EAAI,EAAG/d,IAAMid,EAAY,EAARwB,EAAG,GAASze,EAAU,OAAIye,EAAG,GAAKze,EAAS,SAAOid,EAAIjd,EAAU,SAAMid,EAAEP,KAAK1c,GAAI,GAAKA,EAAEmE,SAAW8Y,EAAIA,EAAEP,KAAK1c,EAAGye,EAAG,KAAKZ,KAAM,OAAOZ,EAE3J,OADIjd,EAAI,EAAGid,IAAGwB,EAAK,CAAS,EAARA,EAAG,GAAQxB,EAAEjb,QACzByc,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxB,EAAIwB,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAElc,MAAOyc,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGI,EAAEC,QAASle,EAAIye,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,MAAkBzB,GAAZA,EAAIgB,EAAEG,MAAY3N,OAAS,GAAKwM,EAAEA,EAAExM,OAAS,KAAkB,IAAVgO,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAcxB,GAAMwB,EAAG,GAAKxB,EAAE,IAAMwB,EAAG,GAAKxB,EAAE,IAAM,CAAEgB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIA,EAAIwB,EAAI,KAAO,CACpE,GAAIxB,GAAKgB,EAAEC,MAAQjB,EAAE,GAAI,CAAEgB,EAAEC,MAAQjB,EAAE,GAAIgB,EAAEI,IAAIlO,KAAKsO,GAAK,KAAO,CAC9DxB,EAAE,IAAIgB,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAK1U,EAAK2S,KAAKW,EAASY,EAC5B,CAAE,MAAO5c,GAAKod,EAAK,CAAC,EAAGpd,GAAIrB,EAAI,CAAG,CAAE,QAAU+d,EAAId,EAAI,CAAG,CACzD,GAAY,EAARwB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzc,MAAOyc,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,EAC9E,CAtBgDF,CAAK,CAACT,EAAGsB,GAAK,CAAG,CAuBrE,EACArY,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtDlB,EAAQmg9B,uBAAyBng9B,EAAQ8wmC,2BAAwB,EACjE,IAAIC,EAA6B,EAAQ,OA0DrCD,GAzDM,EAAQ,OAyDyB,WACvC,SAASA,EAAsBn42B,EAAWq42B,GACtCz1lC,KAAK01lC,WAAat42B,EAClBp9O,KAAK21lC,aAAeF,EACpBz1lC,KAAK41lC,oBAAqB,CAC9B,CAkGA,OAjGA9rmC,OAAOwY,eAAeizlC,EAAsBn1lC,UAAW,SAAU,CAK7DvM,IAAK,WACD,OAAOmM,KAAK01lC,WAAW13lB,MAC3B,EACAtye,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAeizlC,EAAsBn1lC,UAAW,cAAe,CAKlEvM,IAAK,WACD,OAAOmM,KAAK21lC,YAChB,EACAjqkC,YAAY,EACZuL,cAAc,IAElBntC,OAAOwY,eAAeizlC,EAAsBn1lC,UAAW,YAAa,CAKhEvM,IAAK,WACD,OAAOmM,KAAK01lC,WAAWlg+B,WAC3B,EACA9pG,YAAY,EACZuL,cAAc,IAQlBs+jC,EAAsBn1lC,UAAU2tG,OAAS,WACrC,GAAI/tG,KAAK41lC,mBACL,MAAM,IAAIrulC,MAAMvH,KAAKg+f,OAAS,8DAGlC,OADAh+f,KAAK01lC,WAAW3n/B,SACTp3G,QAAQC,SACnB,EAKA2+lC,EAAsBn1lC,UAAU0tG,QAAU,WAEtC,OADA9tG,KAAK01lC,WAAW5n/B,UACTn3G,QAAQC,SACnB,EAIA2+lC,EAAsBn1lC,UAAUsuN,eAAiB,SAAUmn4B,GACvD,OAAO90lC,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAI81lC,EAAqBxplC,EAAOuwO,EAChC,OAAOp7O,EAAYzB,KAAM,SAAUwD,GAC/B,OAAQA,EAAG3B,OACP,KAAK,EAGD,OAFAi0lC,EAAsB91lC,KAAK01lC,WAAWlg+B,YACtCx1H,KAAK01lC,WAAW5qlC,aACT,CAAC,EAAa+qlC,KACzB,KAAK,EAGD,OAFAvplC,EAAQ9I,EAAG1B,OACX9B,KAAK21lC,aAAerplC,EACb,CAAC,EAAatM,KAAK01lC,WAAWtvlC,QAAQkG,IACjD,KAAK,EAQD,OAPAuwO,EAAiBr5O,EAAG1B,OAChBg0lC,EACA91lC,KAAK01lC,WAAW3n/B,SAGhB/tG,KAAK01lC,WAAW5n/B,UAEb,CAAC,EAAc+uI,GAElC,EACJ,EACJ,EAIA042B,EAAsBn1lC,UAAU69f,mBAAqB,WAEjD,OADAj+f,KAAK41lC,oBAAqB,EACnB51lC,KAAK8tG,SAChB,EAIAyn/B,EAAsBn1lC,UAAUsF,KAAO,WACnC1F,KAAK01lC,WAAW5qlC,aAChB9K,KAAK21lC,aAAajwlC,MACtB,EACO6vlC,CACX,CAxG0C,IAyG1C9wmC,EAAQ8wmC,sBAAwBA,EAwBhC9wmC,EAAQmg9B,uBAvBR,SAAgCj4uB,EAAkBgiT,EAA0B1ohB,GACxE,OAAO8a,EAAUf,UAAM,OAAQ,EAAQ,WACnC,IAAIo9O,EAAW0yR,EAAYljT,EAAmBmp4B,EAC9C,OAAOt0lC,EAAYzB,KAAM,SAAUwD,GAC/B,OAAQA,EAAG3B,OACP,KAAK,EAED,OADA2B,EAAGzB,KAAKjO,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa0hmC,EAA2BpnlB,sCAAsCO,EAA0B1ohB,IACpH,KAAK,EAID,OAHAm3P,EAAY55O,EAAG1B,OACfgugB,EAAa1yR,EAAUh3O,QAAQumN,GAC/BC,EAAoB,IAAI2o4B,EAAsBn42B,EAAWzwB,GAClD,CAAC,EAAc,CAAEmjT,WAAYA,EAAYljT,kBAAmBA,IACvE,KAAK,EAID,OAHAmp4B,EAAOvylC,EAAG1B,OAEV7b,EAAI4mB,KAAK,sEAAwEkplC,GAC1E,CAAC,EAAc,CAAEjmlB,WAAYnjT,IACxC,KAAK,EAAG,MAAO,CAAC,GAExB,EACJ,EACJ,C,+BC/NA7iO,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAErB,IAAIuiqB,EAAW,EAAQ,OAYvB,SAAS/tiB,EAAkBriF,EAAKnnC,IAAkB,MAAPA,GAAeA,EAAMmnC,EAAIxiC,UAAQ3E,EAAMmnC,EAAIxiC,QAAQ,IAAK,IAAI/O,EAAI,EAAGu0H,EAAO,IAAItlH,MAAM7E,GAAMpK,EAAIoK,EAAKpK,IAAOu0H,EAAKv0H,GAAKuxC,EAAIvxC,GAAM,OAAOu0H,CAAM,CA0BtLn1H,EAAiB,QAnBM,SAA0BwoH,GAC/C,OAAO,SAAUyiF,GACf,OAAO,SAAU5nM,GACf,OAAO,SAAU8rG,GAEf,GAAIA,EAAO5jF,OAASg3oB,EAAS8hP,oBAC3B,OAAOhh5B,EAAK8rG,GAGd,IA1BoBh9D,EA0BhB6qpB,EAAkB7tlB,EAAO1pF,QACzBq6B,EAASk9oB,EAAgBl9oB,OACzBlwC,EAAOotrB,EAAgBptrB,KAC3B44G,EAAQ1oE,GAAQzjC,MAAMmsG,EArB9B,SAA4Br2E,GAAO,GAAItiC,MAAMyb,QAAQ6mB,GAAM,OAAOqiF,EAAkBriF,EAAM,CARhDsiF,CAAdtiF,EA6B8BviC,IAvB1D,SAA0B8kH,GAAQ,GAAsB,oBAAX30H,QAA0BA,OAAO0d,YAAYpY,OAAOqvH,GAAO,OAAO7kH,MAAMuwB,KAAKs0F,EAAO,CAN5DC,CAAiBxiF,IAItF,SAAqC+sC,EAAGnoE,GAAU,GAAKmoE,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOs1C,EAAkBt1C,EAAGnoE,GAAS,IAAIqF,EAAI/W,OAAOsW,UAAUpZ,SAASqZ,KAAKsjE,GAAG7oE,MAAM,GAAI,GAAiE,MAAnD,WAAN+F,GAAkB8iE,EAAEljE,cAAaI,EAAI8iE,EAAEljE,YAAYlN,MAAgB,QAANsN,GAAqB,QAANA,EAAoBvM,MAAMuwB,KAAKhkB,GAAc,cAANA,GAAqB,2CAA2C3e,KAAK2e,GAAWo4G,EAAkBt1C,EAAGnoE,QAAzG,CAA7O,CAA+V,CAJjU69G,CAA4BziF,IAE1H,WAAgC,MAAM,IAAIt2B,UAAU,uIAAyI,CAF3Dg5G,GA8B5H,CACF,CACF,CACF,C,yBCjCQ,SAAWz4H,GAAU,aAIzB,IAAI4shB,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC5shB,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EC,MACnF,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,qEAAqEF,MACjE,KAERG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVS,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,kBACHC,GAAI,YACJC,EAAG,aACHC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER7B,cAAe,0BACfC,KAAM,SAAUC,GACZ,MAAO,mBAAmBC,KAAKD,EACnC,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,OAEf,EACA8B,uBAAwB,wCACxBC,QAAS,SAAU8+C,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIrpC,EAAIqpC,EAAS,GAGjB,OAAOA,GAAUwqe,EAAS7zgB,IAAM6zgB,EAFvBxqe,EAAS,IAAOrpC,IAEsB6zgB,EADvCxqe,GAAU,IAAM,IAAM,MAElC,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA1GyCC,CAAQ,EAAQ,O,6BCN7CuF,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,QAAwB,SAA+BsR,GAAyB,oBAAT5O,QAAsB2C,OAAOO,KAAK0L,GAAM3B,OAAO,IAAIjN,OAAOyzH,UAAUzzH,OAAOyzH,WAAW,IAAI9mH,KAAKiC,EAAM,C,qCCCnQ,IACQ+J,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GASAitmB,EAA4C,SAAUzpmB,GAOtD,SAASypmB,EAA2Bn3b,EAAKipC,GACrC,IAAIr7M,EAAQF,EAAO3D,KAAKL,OAASA,KAEjC,OADAkE,EAAMkC,QAAQkwK,EAAKipC,GACZr7M,CACX,CACA,OAXAnE,EAAU0tmB,EAA4BzpmB,GAW/BypmB,CACX,CAb+C,CAPpB,EAAQ,QAqBnC/rhB,EAAOj9F,QAAUgpnB,C,kBCrCjB,IAAIyoB,EAAgB,EAAQ,OACxB8K,EAAW,EAAQ,OACnBz1a,EAAc,EAAQ,OAkC1B7pI,EAAOj9F,QAJP,SAAc6mD,GACZ,OAAOigL,EAAYjgL,GAAU4qlB,EAAc5qlB,GAAU01lB,EAAS11lB,EAChE,C,yBCxBQ,SAAWzqD,GAAU,aAIfA,EAAOG,aAAa,MAAO,CACjCC,OAAQ,0FAA0FC,MAC9F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,yDAAyDF,MAC/D,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,wBAAwBJ,MAAM,KAC3CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVS,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,eACHC,GAAI,YACJC,EAAG,aACHC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERM,uBAAwB,UACxBC,QAAS,SAAU8+C,GACf,OAAOA,CACX,EACA7+C,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA7DyCC,CAAQ,EAAQ,O,yBCElD,SAAW1D,GAAU,aAIhBA,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,gEAAgEC,MACpE,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SACI,oEAAoEF,MAChE,KAERG,cAAe,6BAA6BH,MAAM,KAClDI,YAAa,uBAAuBJ,MAAM,KAC1CM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVS,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUg/N,GAMd,OAAOA,GALK,UAAU18L,KAAK08L,GACrB,MACA,QAAQ18L,KAAK08L,GACX,MACA,MAEZ,EACA/+N,KAAM,YACNC,EAAG,iBACHC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERM,uBAAwB,cACxBC,QAAS,SACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAnEyCC,CAAQ,EAAQ,O,+BCL1D,IAAImlG,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB21/B,EAAU,EAAQ,OAClBl2+B,EAAS,EAAQ,OACjB6pa,EAAW,eACXsskB,EAAc,EAAQ,OAEtB/u2B,EAAS5yP,MACT4hmC,EAAUpkkC,OAAO2uL,OACjB/tM,EAAS2tF,EAAY,GAAG3tF,QACxBkzE,EAAaya,EAAY,GAAGza,YAC5BuwgC,EAAiB91/B,EAAY,IAAIr5G,UACjCkX,EAAOmiG,EAAY,GAAGniG,MACtBk4lC,EAAuB,aACvBC,EAAiB,uBACjBC,EAAoCxkkC,OAAO,wBAA0BmkkC,EAAc,KACnF5wkC,EAAOg7E,EAAY+1/B,EAAqB/wkC,MAExCkxkC,EAAgB,CAClB,KAAU,IACV,KAAU,IACV,KAAU,IACV,KAAU,IACV,KAAU,KAGR114B,EAAa,SAAUn+C,GACzB,IAAItpJ,EAAM+8kC,EAAevwgC,EAAW88E,EAAK,GAAI,IAC7C,OAAOtpJ,EAAIhlB,OAAS,EAAI,MAAQu1hB,EAASvwgB,EAAK,EAAG,KAAO,MAAQuwgB,EAASvwgB,EAAK,EAAG,IACnF,EAOAswE,EAAE,CAAE37F,OAAQ,SAAUs8O,MAAM,EAAMxpI,QAJpBq1/B,GAA6B,WAAlBA,EAAQ,OAImB,CAClDz14B,OAAQ,SAAgB9lM,GACtBq7kC,EAAQr7kC,GAIR,IAHA,IAAIvmB,EAASumB,EAAEvmB,OACXjB,EAAS+zP,EAAO9yP,GAEX/O,EAAI,EAAGA,EAAI+O,EAAQ/O,IAAK,CAC/B,IAAIq9K,EAAMhwJ,EAAOiI,EAAGt1B,GACpB,GAAU,IAANA,GAAWggC,EAAK+wkC,EAAsB1z7B,GACxCvvK,EAAO9N,GAAKw7N,EAAWn+C,QAClB,GAAI5iD,EAAOy2+B,EAAe7z7B,GAC/BvvK,EAAO9N,GAAK,KAAOkxmC,EAAc7z7B,QAC5B,GAAIr9I,EAAKgxkC,EAAgB3z7B,GAC9BvvK,EAAO9N,GAAK,KAAOq9K,OACd,GAAIr9I,EAAKixkC,EAAmC5z7B,GACjDvvK,EAAO9N,GAAKw7N,EAAWn+C,OAClB,CACL,IAAIolR,EAAWliW,EAAW88E,EAAK,GAEH,QAAZ,MAAXolR,GAA+B30b,EAAO9N,GAAKq9K,EAEvColR,GAAY,OAAUzic,EAAI,GAAK+O,GAA8C,QAAZ,MAAvBwxF,EAAWjrE,EAAGt1B,EAAI,IAAyB8N,EAAO9N,GAAKw7N,EAAWn+C,IAGnHvvK,EAAO9N,GAAKq9K,EACZvvK,IAAS9N,GAAKqtB,EAAOiI,EAAGt1B,GAE5B,CACF,CAEA,OAAO6Y,EAAK/K,EAAQ,GACtB,G,YC/DF,IAAIqjmC,EAAU,WAAY,EAoO1B,SAASC,EAAMC,EAAKC,EAAMvl8B,GAGxB,IAFA,IAAIwl8B,EAAS,EACTC,EAAU,EACLxxmC,EAAI,EAAGA,EAAIqxmC,EAAItimC,OAAQ/O,IAC9BuxmC,GAAmBF,EAAIrxmC,GAAKG,KAAKC,IAAI,EAAI2rK,EAAOul8B,EAAKtxmC,IAEvD,IAAMA,EAAI,EAAGA,EAAIqxmC,EAAItimC,OAAQ/O,IAC3BwxmC,IAAsBH,EAAIrxmC,GAAKsxmC,EAAKtxmC,GAAKG,KAAKC,IAAI,EAAI2rK,GAAQ,EAAIul8B,EAAKtxmC,IAEzE,OAAOuxmC,EAASC,CAClB,CAGA,SAASC,EAAQtoiC,EAAOta,GACtB,OAAQ1uD,KAAKM,IAAIouD,EAAKuxD,UAAYj3C,EAAMi3C,WAAa,OACvD,CAhPA+w/B,EAAQp2lC,UAAUm5X,GAAK,SAAUjlC,EAAMyiwB,EAAKC,GAE1C,IAAqB7/N,EAErB,OAHA6/N,OAAqC,IAAhBA,EAA8BA,EAAc,EAC7D1iwB,GAAY,IAChB6iiB,EAAK4/N,EAAMvxmC,KAAKC,IAAK,EAAI6uW,EAAM0iwB,GACxBxxmC,KAAK+F,MAAW,IAAL4r4B,GAAY,GAChC,EAGAq/N,EAAQp2lC,UAAUk2X,GAAK,SAAUhiC,EAAM2iwB,EAAKD,GAC1C,IAAqBE,EAErB,OAFI5iwB,GAAY,IAChB4iwB,EAAKD,EAAMzxmC,KAAKC,IAAK,EAAI6uW,EAAO0iwB,GACzBxxmC,KAAK+F,MAAW,IAAL2rmC,GAAY,GAChC,EAGAV,EAAQp2lC,UAAUu4X,IAAM,SAAUrkC,GAC5BA,GAAY,IAChB,IADA,IAAqB6iwB,EAAMhjmC,UAAU,GAC5B9O,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IACpC8xmC,GAAOhjmC,UAAU9O,GAAKG,KAAKC,IAAK,EAAI6uW,EAAOjvW,EAAI,GAEjD,OAAOG,KAAK+F,MAAY,IAAN4rmC,GAAa,GACjC,EAeAX,EAAQp2lC,UAAUu3X,IAAM,SAAS++tB,GAC/B,IAGItvjC,EAAU0wV,EAHVzjY,EAAOF,UACPijmC,EAAgB,EAOpB,GAJA9imC,MAAM8L,UAAUtF,MAAMuF,KAAKhM,GAAMrC,QAAQ,SAAUrM,GAC7CA,EAAQ,IAAGyhD,GAAW,GACtBzhD,EAAQ,IAAGmyY,GAAW,EAC5B,IACK1wV,IAAa0wV,EAAU,MAAM,IAAIvwX,MAAM,mEAa5C,OAAO/hB,KAAK+F,MAAsB,IAlCpC,SAAkBuJ,GAEhB,IADA,IAAIvO,EAAI,EACDuO,EAAGvO,GAAK,GACbA,GAAK,EAEP,KAAOuO,EAAGvO,GAAK,GACbA,GAAK,IAEP,OAAOA,EAAI,GACb,CAyBoB8wmC,CAZlB,SAAa/iwB,GAEX,KADA8iwB,EACoB,IAClB,MAAM,IAAI7vlC,MAAM,2BAIlB,IAFA,IAAI+vlC,EAAS,EAAIhjwB,EAAK,IAClB6iwB,EAAM9imC,EAAK,GACNhP,EAAI,EAAGA,EAAIgP,EAAKD,OAAQ/O,IAC/B8xmC,GAAQ9imC,EAAKhP,GAAKG,KAAKC,IAAI6xmC,EAAOjymC,GAEpC,OAAO8xmC,CACT,IACyC,GAC3C,EAGAX,EAAQp2lC,UAAUm3lC,GAAK,SAASC,EAAcd,GAE5C,GAAqB,IAAjBc,EACF,OAAOhymC,KAAKM,IAAIqO,UAAU,IAAMA,UAAU,GAG5C,IAAIsjmC,EAAqBtjmC,UAAU,GAC/BujmC,EAAe,EACnB,IAAKrymC,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CAErC,IADAoymC,GAAsBtjmC,UAAU9O,IACP,EAEvB,OADAqymC,GAAiBD,EAAqBtjmC,UAAU9O,IAAM8O,UAAU9O,GAGhEqymC,GAEJ,CACF,EAGAlB,EAAQp2lC,UAAUu3lC,IAAM,SAASV,EAAKW,GACpC,IAAIC,GAAOD,EAAWpymC,KAAKM,IAAImxmC,IAAQzxmC,KAAKM,IAAImxmC,GAAO,IACvD,OAAOzxmC,KAAK+F,MAAY,IAANssmC,GAAa,GACjC,EAGArB,EAAQp2lC,UAAU03lC,GAAK,SAAUthuB,EAAWliC,EAAM3zP,EAAQo3/B,EAAaC,GACrE,IAAIx8/B,EAAWC,EAAa8jZ,EACxB04mB,EAAgB3jwB,EAAO,GAAK,IAgBhC,OAbKyjwB,EAKsB,IAAhBA,GACTv8/B,EAAY08/B,EAAev3/B,GAC3BlF,EAAcj2G,KAAKC,IAAK,EAAIwymC,EAAgBt3/B,GAAU,GAGtD/tE,QAAQ3sC,IAAI,gBATZu1G,EAAY08/B,EAAwB,GAATv3/B,GAC3BlF,EAAcj2G,KAAKC,IAAK,EAAIwymC,EAAyB,GAATt3/B,GAAe,GAU7D4+Y,EAAK/oH,GAAah7R,EAAYC,GACvBj2G,KAAK+F,MAAW,IAALg0f,GAAY,IAE9B,SAAS24mB,EAAeC,GAKtB,OAJIH,IAEFG,GAAuB,GAElBF,EAAgBzymC,KAAKC,IAAK,EAAIwymC,EAAgBE,EACvD,CACF,EAGA3B,EAAQp2lC,UAAU6S,GAAK,SAASqhV,EAAMoiwB,GAEpC,IADA,IAAoBzjlC,EAAhBmllC,EAAa,EACR/ymC,EAAI,EAAGA,EAAI8O,UAAUC,OAAQ/O,IAAK,CACzC,IAAIgzmC,EAEJA,EAAiB,EAAI7ymC,KAAKC,IAAK,EAAI6uW,EAAK,IAAOjvW,EAAI,GACnD+ymC,GAAcjkmC,UAAU9O,GAAKgzmC,CAC/B,CAEA,OADApllC,EAAKmllC,EAAW5ymC,KAAKM,IAAIqO,UAAU,IAC5B3O,KAAK+F,MAAW,IAAL0nB,GAAY,GAChC,EAGAujlC,EAAQp2lC,UAAUk4lC,GAAK,SAAShkwB,EAAMkjwB,GAEpC,IADA,IAAca,EAAVE,EAAM,GACDlzmC,EAAI,EAAGA,EAAImymC,EAAcnymC,IAChCgzmC,EAAiB,EAAI7ymC,KAAKC,IAAK,EAAI6uW,EAAK,IAAOjvW,EAAI,GACnDmzmC,sBAAwBhzmC,KAAKsjE,KAAsB,IAAjBuviC,GAAuB,IACzDE,EAAIzkmC,KAAK0kmC,uBAEX,OAAOD,CACT,EAGA/B,EAAQp2lC,UAAUoyJ,GAAK,SAAS8hM,EAAMmkwB,EAAmBjiuB,EAAWghuB,GAClE,IAAIhl8B,EAAKgkO,EAAYhxY,KAAKC,IAAK,EAAM6uW,EAAK,IAAMmkwB,EAAqBA,EAAoBjB,GACzF,OAAOhymC,KAAK+F,MAAW,IAALinK,GAAY,GAChC,EAGAgk8B,EAAQp2lC,UAAUs4lC,KAAO,SAASC,EAAgBC,EAAapB,GAC7D,IAAIkB,EAAOlzmC,KAAKC,IAAKmzmC,EAAcD,EAAiB,EAAInB,GAAgB,EACxE,OAAOhymC,KAAK+F,MAAa,IAAPmtmC,GAAgB,GACpC,EAGAlC,EAAQp2lC,UAAUy4lC,GAAK,SAASC,EAAkBC,EAAYC,GAC5D,OAAQF,EAAoBC,GAAcC,CAC5C,EAGAxC,EAAQp2lC,UAAU64lC,IAAM,SAAS3kwB,GAC/B,OAAO,GAAKA,CACd,EAGAkiwB,EAAQp2lC,UAAU84lC,KAAO,SAASC,EAAqBC,EAAmBC,EAAcC,EAAYC,GAClGrglC,EAAIiglC,EACJlglC,EAAImglC,EACJ5+kC,EAAK2+kC,EAAsBC,EAC3BhtvB,GAAKitvB,EACLv1qB,GAAKw1qB,EACL5+kC,EAAI6+kC,EAEJ,IAAIL,EAAShglC,EAAIsB,EAAK4xV,GAAG,IAAUnzV,EAAIuB,EAAKspa,GAAG,KAAQ,EAAIppa,EAAE,KAC7D,OAAOl1B,KAAK+F,MAAa,IAAP2tmC,GAAe,EACnC,EAGA1C,EAAQp2lC,UAAUg2X,IAAM,SAASojuB,EAAgBC,EAAejjuB,GAC9D,OAAQA,EAAYgjuB,GAAgB,EAAEh0mC,KAAKC,IAAI,EAAE+zmC,GAAgBC,GACnE,EAGAjD,EAAQp2lC,UAAUs5lC,IAAM,SAASC,EAAkBC,GACjD,OAAO,MAAS,EAAID,IAAqB,EAAIC,GAAkB,EACjE,EAGApD,EAAQp2lC,UAAUy5lC,KAAO,SAASnD,EAAKoD,EAAK1o8B,GAC5C,GAAIsl8B,EAAItimC,QAAU0lmC,EAAI1lmC,OAAQ,MAAM,IAAImT,MAAM,+CAE5C,IAAI6/B,EAAU0wV,EAMd,GALAxjY,MAAM8L,UAAUtF,MAAMuF,KAAKq2lC,GAAK1kmC,QAAQ,SAAUrM,GAC5CA,EAAQ,IAAGyhD,GAAW,GACtBzhD,EAAQ,IAAGmyY,GAAW,EAC5B,IAEK1wV,IAAa0wV,EAAU,MAAM,IAAIvwX,MAAM,oEAG5C6pJ,EAAUA,GAAgB,EAE1B,IACI2o8B,EADAvmiC,EAAQ,IAERmjiC,EAAO,GAEXA,EAAK7imC,KAAK,GAGV,IAAI,IAAIzO,EAAI,EAAGA,EAAIy0mC,EAAI1lmC,OAAQ/O,IAC7BsxmC,EAAK7imC,KAAKgjmC,EAAQgD,EAAI,GAAIA,EAAIz0mC,KAGhC,GAEE+rK,GADA2o8B,EAAa3o8B,GACQql8B,EAAMC,EAAKC,EAAMoD,GACtCvmiC,UAEKumiC,EAAWh89B,QAAQ,IAAMqzB,EAAMrzB,QAAQ,IAAMvqE,EAAQ,GAE5D,IAAIwmiC,EAAOD,EAAWh89B,QAAQ,IAAMqzB,EAAMrzB,QAAQ,GAAK,KAAa,IAANqzB,EAE9D,OAAO5rK,KAAK+F,MAAa,IAAPyumC,GAAc,GAClC,EAqBuCt4gC,EAAOj9F,UACxCi9F,EAAOj9F,QAAU+xmC,EACjB90gC,EAAOj9F,QAAQ+xmC,QAAUA,E,kBC7P/B,IAAIyD,EAAgB,EAAQ,MACxBC,EAAY,EAAQ,OACpBC,EAAgB,EAAQ,OAiB5Bz4gC,EAAOj9F,QANP,SAAqB4vB,EAAO1uB,EAAOsuH,GACjC,OAAOtuH,GAAUA,EACbw0mC,EAAc9llC,EAAO1uB,EAAOsuH,GAC5Bgm/B,EAAc5llC,EAAO6llC,EAAWjm/B,EACtC,C,+BChBA,IAAIvqB,EAAI,EAAQ,OACZrpF,EAAO,EAAQ,OACf4pO,EAAY,EAAQ,OACpBC,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,OAKtB1gJ,EAAE,CAAE37F,OAAQ,UAAWs8O,MAAM,EAAMxpI,OAJO,EAAQ,QAIgC,CAChFu5/B,WAAY,SAAoBvz3B,GAC9B,IAAI7tN,EAAIhZ,KACJsqO,EAAaJ,EAA2BxoO,EAAEsX,GAC1CpiB,EAAU0zO,EAAW1zO,QACrBwK,EAASkpO,EAAWlpO,OACpBjO,EAASg3O,EAAQ,WACnB,IAAI+b,EAAiBjc,EAAUjxN,EAAEpiB,SAC7BgyB,EAAS,GACTqxK,EAAU,EACVp4J,EAAY,EAChBuoM,EAAQvD,EAAU,SAAUxkH,GAC1B,IAAI7rH,EAAQyjM,IACRquJ,GAAgB,EACpBzmT,IACAxhC,EAAK6lP,EAAgBltO,EAAGqpG,GAASxrH,KAAK,SAAUlR,GAC1C2iW,IACJA,GAAgB,EAChB1/T,EAAOpyB,GAAS,CAAE22H,OAAQ,YAAaxnI,MAAOA,KAC5Ck8C,GAAajrC,EAAQgyB,GACzB,EAAG,SAAU3e,GACPq+U,IACJA,GAAgB,EAChB1/T,EAAOpyB,GAAS,CAAE22H,OAAQ,WAAYqtH,OAAQvwO,KAC5C43B,GAAajrC,EAAQgyB,GACzB,EACF,KACEiZ,GAAajrC,EAAQgyB,EACzB,GAEA,OADIz1B,EAAO8W,OAAO7I,EAAOjO,EAAOxN,OACzB2kP,EAAWjoH,OACpB,G,+BCzCF,IAAIlhB,EAAW,EAAQ,OACnBg1X,EAAgB,EAAQ,MAG5Bz0Y,EAAOj9F,QAAU,SAAUyd,EAAUpN,EAAInP,EAAO8oZ,GAC9C,IACE,OAAOA,EAAU35Y,EAAGqsG,EAASx7G,GAAO,GAAIA,EAAM,IAAMmP,EAAGnP,EACzD,CAAE,MAAOskB,GACPksd,EAAcj0d,EAAU,QAAS+H,EACnC,CACF,C,yBCVAy3E,EAAOj9F,SAAU,C,+BCAjB,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,IAAIokF,EAAO,EAAQ,OAEnB6Y,EAAOj9F,QAAUokF,EAAKlyE,O,+BCVpB+qF,EAAOj9F,QAAU,EAAjB,M,+BC6BF,IAAIsrB,EAAU,EAAS,OACtBm1F,EAAY,EAAS,OAgCtBxjB,EAAOj9F,QApBP,SAAyBkB,GACxB,IAAI8J,EACJ,IAAMsgB,EAASpqB,GACd,OAAO,EAGR,KADA8J,EAAM9J,EAAMyO,QAEX,OAAO,EAER,IAAM,IAAI/O,EAAI,EAAGA,EAAIoK,EAAKpK,IACzB,IAAM6/G,EAAWv/G,EAAMN,IACtB,OAAO,EAGT,OAAO,CACR,C,+BC5DayE,OAAOwY,eAAe7d,EAAtB,cAA4CkB,OAAM,IAAOlB,EAAiB,QAAwW,SAAyBm6X,EAAahvX,GAAS,IAAwEovX,GAAxD,EAAG/4C,EAAOl8F,YAAYkhY,EAA+B,SAAwBjsP,SAAaq7uB,GAAW,EAAGp0xB,EAAOhnU,QAAQ2/W,GAAkB07uB,GAAc,EAAGr0xB,EAAOhnU,QAAQrP,IAAS,EAAGq2U,EAAOpmU,WAAW,WAAWw6lC,EAAWxkmC,QAAQ+oX,EAAa07uB,EAAczkmC,QAAQjG,CAAO,GAAG,IAAIks4B,GAAS,EAAG71jB,EAAOrmU,SAAS,WAAW,OAAO06lC,EAAczkmC,SAAS,CAAC,CAAC,EAAE,IAAI0kmC,EAAkBz+N,EAASpoyB,SAASA,OAA6B,IAApB6mgC,EAA2BC,EAAgC,QAAED,EAAkBE,EAAsB3+N,EAAS4+N,gBAAgBA,OAAwC,IAAxBD,GAAqCA,EAAsBhg+B,EAAQqhwB,EAASrhwB,QAAYkg+B,GAAa,EAAG10xB,EAAO/mU,aAAa,WAAW,OAAO8/W,GAAUA,EAASvkP,OAAO,EAAE,CAACukP,IAAe47uB,GAAmB,EAAG30xB,EAAO/mU,aAAa,WAAW,IAAInJ,EAAKskmC,EAAWxkmC,QAAiE,OAAvB,mBAAPE,EAAkBA,IAAOA,IAA6B,CAAC,CAAC,EAAE,IAAQ8kmC,GAAkB,EAAG50xB,EAAO/mU,aAAa,WAAW,IAAI47lC,EAAuB97uB,GAAUA,EAASsuN,iBAAiBsthB,EAAmB,OAAO,WAAW,OAAOE,IAAyBF,EAAmBA,KAAqB,EAAGG,EAAoB,SAAGD,IAAyBF,KAAsBN,EAAczkmC,SAAS,CAAC,GAAG02vB,aAAa,CAAC,EAAE,CAACquW,EAAmB57uB,IAAeg8uB,GAAsB,EAAG/0xB,EAAO/mU,aAAa,WAAW,IAAI+7lC,EAAgBj8uB,GAAUA,EAAStrR,UAAUA,EAAS,OAAO,SAAS39F,GAAM,OAAOklmC,GAAgB,EAAGF,EAAoB,SAAGH,IAAqB7kmC,GAAM,CAAC,GAAGukmC,EAAczkmC,SAAS,CAAC,GAAG02vB,cAAc,CAAC,EAAE,CAACquW,EAAmB57uB,EAAStrR,IAAeqrR,GAAW,EAAG94C,EAAO/mU,aAAa,WAAW,IAAInJ,EAAK5B,UAAUC,OAAO,QAAkB0C,IAAf3C,UAAU,GAAeA,UAAU,GAAG,CAAC,EAAE6mmC,IAAwBjlmC,EAAK,EAAE,CAACilmC,IAA22B,OAAn1B,EAAG/0xB,EAAOpmU,WAAW,WAAW,IAAIq7lC,EAAeP,IAAmBrthB,EAAgButhB,IAAkJ,GAA3HK,GAAgBzg+B,GAAS7nG,QAAQ3oB,MAAM,oFAA+G,mBAAjBixlC,GAAsD,mBAAlBR,EAA8B37uB,GAAW,EAAGg8uB,EAAoB,SAAGG,EAAeN,MAAuB,CAAC,EAAEF,EAAgBpthB,MAAoB,CAAC,GAAGgthB,EAAczkmC,SAAS,CAAC,GAAG02vB,oBAAoB,GAA2B,mBAAjB2uW,EAA4B,CAAC,IAAIxwvB,EAAUwwvB,EAAeN,MAAyBlwvB,IAA6B,IAAlBgwvB,IAAwB37uB,EAAWrU,EAAW,KAAkC,mBAAlBgwvB,EAA8B37uB,EAAW27uB,EAAgBpthB,OAA8C,IAAlBothB,GAAwB37uB,GAAa,EAAE,CAAC67uB,EAAmBD,EAAaE,EAAkB97uB,EAAW27uB,EAAgBjg+B,KAAgB,EAAGwrM,EAAOrmU,SAAS,WAAW,MAAM,CAACo/W,SAAS,CAACtrR,SAASsngC,IAAwB1thB,gBAAgButhB,IAAoBpg+B,QAAQkg+B,KAAgBlg+B,GAAS,EAAE,CAACug+B,EAAsBH,EAAkBF,EAAalg+B,GAAS,EAA5pG,IAAIwrM,EAAO,EAAQ,OAAa80xB,EAAW5i/B,EAAuB,EAAQ,QAAkB8yf,EAAsB9yf,EAAuB,EAAQ,QAA+Bqi/B,EAAuBri/B,EAAuB,EAAQ,QAA4B,SAASA,EAAuB7lG,GAAK,OAAOA,GAAKA,EAAIiwE,WAAWjwE,EAAI,CAAC,QAAUA,EAAI,C,qCCC9b,IACQxS,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAQA24gB,EAAoC,SAAUn1gB,GAK9C,SAASm1gB,IACL,IAAIj1gB,EAAQF,EAAO3D,KAAKL,OAASA,KAajC,OAZAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3Bm6W,WAAY,CACR14X,MAAO,KACP8lC,UAAU,GAEd+pG,UAAW,CACP9pG,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKq+W,UAChB,KAGDn6W,CACX,CAsBA,OAzCAnE,EAAUo5gB,EAAoBn1gB,GAwB9Bm1gB,EAAmB/4gB,UAAU0tG,QAAU,WACnC,OAAO9tG,KAAK+tG,QAAO,EACvB,EAOAora,EAAmB/4gB,UAAU2tG,OAAS,SAAU/3G,GAM5C,OALAA,EAA6B,kBAAZA,GAAwBA,EACrCgK,KAAKw1H,YAAcx/H,IACnBgK,KAAKq+W,WAAaroX,EAClBgK,KAAK6K,KAAK,YAEP7K,IACX,EACOm5gB,CACX,CA3CuC,CANpB,uBAsDnBz3b,EAAOj9F,QAAU00hB,C,+BCjEjBrvhB,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IACtD,IAAIw5U,EAAiB,EAAQ,OACzBx9N,EAAW,EAAQ,OAEnBw5/B,EAAW,SAAU9wmC,GACrB,OAAOA,EAAKC,OAAO,SAAUoL,EAAKlL,GAAO,OAAQkL,EAAIlL,GAAO20U,EAAemgnB,eAAe907B,GAAMkL,CAAM,EAAG,CAAEquG,QAASpC,EAAS/xF,MACjI,EAEmBwrlC,EAAsB,CAAC,MAAO,OAAQ,SAAU,OAAQ,YACxDC,EAAoB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,cAC1EC,EAAS,CAAC,OAAQ,kBAAmB,aAAc,uBACnDC,EAAW,CAAC,OAAQ,OAAQ,UAAW,YAAa,QAAS,OAAQ,cACrEC,EAAU,CAAC,iBAAkB,SAAU,OAAQ,SAK9DnjL,EAA4B,WAE5B,SAASA,EAAWzlnB,EAAQ6oyB,QACP,IAAbA,IAAuBA,GAAW,GACtCz7lC,KAAK4yT,OAASA,EACd5yT,KAAK23G,MAAQ,CAAC,EACd33G,KAAKjB,OAAS,CAAC,EAEf,IAAI28lC,EAAmB,WAAc,OAAO9oyB,EAAOulnB,eAAiB,EACpEx20B,EAASs+N,qBAAqBy7xB,EAAkB17lC,KAAM07lC,EAAkBN,EAAqBK,GAC7F,IAAIrjL,EAAiB,WAAc,OAAOxlnB,EAAOwlnB,cAAgB,EACjEz20B,EAASs+N,qBAAqBm4mB,EAAgBp46B,KAAKjB,OAAQq56B,EAAgBijL,EAAmBI,GAC9F,IAAIE,EAAM,WAAc,OAAO/oyB,EAAOt8M,iBAAmB,EACzD3U,EAASs+N,qBAAqB07xB,EAAK37lC,KAAKjB,OAAQ48lC,EAAKL,GACrD,IAAI7k/B,EAAY,WAAc,OAAOm8M,EAAOn8M,SAAW,EACvD9U,EAASs+N,qBAAqBxpN,EAAWz2G,KAAK23G,MAAOlB,EAAW8k/B,GAChE55/B,EAASs+N,qBAAqBxpN,EAAWz2G,KAAMy2G,EAAW+k/B,EAC9D,CAiCA,OAhCAnjL,EAAWj46B,UAAUqtF,IAAM,SAAUk+4B,EAAQ5n/B,EAAS4L,GAAiB,EAEvE0o7B,EAAWj46B,UAAUyoE,KAAO,WAAsB,EAElDwv2B,EAAWj46B,UAAUktM,OAAS,WAAsB,EAEpD+quB,EAAWj46B,UAAU9T,KAAO,WAAsB,EAElD+r7B,EAAWj46B,UAAUw+T,SAAW,SAAU1vT,GAAoB,EAQ9Dmp6B,EAAWj46B,UAAUk2D,MAAQ,WACzB,MAAO,CAAEuS,KAAM7oE,KAAK6oE,OAAQykI,OAAQttM,KAAKstM,SAAUhhN,KAAM0T,KAAK1T,OAClE,EACA+r7B,EAAWj46B,UAAU2jG,QAAU,WAAc,EAE7Cs00B,EAAWj46B,UAAUwogB,KAAO,SAAU9se,GAAe,EAErDu84B,EAAWj46B,UAAUmiC,OAAS,SAAUvsC,GAAmB,EAE3Dqi7B,EAAWj46B,UAAUks+B,eAAiB,SAAUpj4B,GAAiB,EAEjEmv0B,EAAWj46B,UAAUpc,MAAQ,SAAUqo/B,GAAoB,EAE3Dh0D,EAAWC,oBAAsB6iL,EAASC,GAE1C/iL,EAAWE,mBAAqB4iL,EAASE,GAClChjL,CACX,CAnD+B,GAoD/B5z7B,EAAQ4z7B,WAAaA,C,+BCrCrB,SAASt3H,EAAcigK,EAAUjr9B,EAAM8xB,GACrC,IAAI+zkC,EAAQ/zkC,EAAS,QAAU,QAC3B8irB,EAAM9irB,EAAS,OAAS,OACxBsy0B,EAAKty0B,EAAS,IAAM,GACpBwjrB,EAAMxjrB,EAAS,GAAK,IACxB,OAAQm57B,GACN,IAAK,OAAQ,OAAOjr9B,EAAO6lmC,EAAQ,OACnC,IAAK,QAAS,OAAOzhQ,EAAK,iBAAmBpk2B,EAAO,IACpD,IAAK,SAAU,MAAO,IAAMok2B,EAAKpk2B,EAAO40sB,EAClB,UAAY50sB,EAAO6lmC,EAAQ,WAAajxZ,EACxCU,EAAM,iBAAmBt1sB,EAAO,KACtD,IAAK,UAAW,MAAO,WAAaA,EAAO6lmC,EAAQ,WAAajxZ,EACzCU,EAAM,IAAMt1sB,EAAO,QACnB40sB,EAAM50sB,EAAO6lmC,EAAQ7lmC,EAAO,IACnD,QAAS,MAAO,UAAYA,EAAO6lmC,EAAQ,IAAM56I,EAAW,IAEhE,CAlDAt/3B,EAAOj9F,QAAU,CACf6sG,KA0BF,SAAc3tB,EAAG/+C,GAEf,IAAK,IAAIp6B,KADTo6B,EAAKA,GAAM,CAAC,EACI++C,EAAG/+C,EAAGp6B,GAAOm5E,EAAEn5E,GAC/B,OAAOo6B,CACT,EA7BEm8xB,cAAeA,EACf86S,eAkDF,SAAwBv7H,EAAWvq+B,GACjC,GACO,IADCuq+B,EAAUls+B,OACR,OAAO2szB,EAAcu/K,EAAU,GAAIvq+B,GAAM,GAE/C,IAAIy4F,EAAO,GACPo1K,EAAQ4hZ,EAAO86U,GASnB,IAAK,IAAI1/9B,KARLgjQ,EAAMvvP,OAASuvP,EAAMt4N,SACvBkjD,EAAOo1K,EAAM2sG,KAAO,IAAK,KAAOx6W,EAAO,OACvCy4F,GAAQ,UAAYz4F,EAAO,wBACpB6tQ,EAAM2sG,YACN3sG,EAAMvvP,aACNuvP,EAAMt4N,QAEXs4N,EAAM3gO,eAAe2gO,EAAM0sG,QACjB1sG,EACZp1K,IAASA,EAAO,OAAS,IAAOuytB,EAAcngzB,EAAG7K,GAAM,GAEzD,OAAOy4F,CAEb,EApEEgytB,cAwEF,SAAuBs7S,EAAmBx7H,GACxC,GAAIhs+B,MAAMyb,QAAQuw9B,GAAY,CAE5B,IADA,IAAI18tB,EAAQ,GACHv+Q,EAAE,EAAGA,EAAEi7+B,EAAUls+B,OAAQ/O,IAAK,CACrC,IAAIub,EAAI0/9B,EAAUj7+B,IACd02mC,EAAgBn7lC,IACW,UAAtBk7lC,GAAuC,UAANl7lC,KADlBgjQ,EAAMA,EAAMxvQ,QAAUwM,EAEhD,CACA,GAAIgjQ,EAAMxvQ,OAAQ,OAAOwvQ,CAC3B,KAAO,IAAIm41B,EAAgBz7H,GACzB,MAAO,CAACA,GACH,GAA0B,UAAtBw7H,GAA+C,UAAdx7H,EAC1C,MAAO,CAAC,QACV,CACF,EArFE96U,OAAQA,EACRz5a,YAAaA,EACb9Q,aAAcA,EACd0E,MAAO,EAAQ,OACfD,WAAY,EAAQ,OACpBmlO,cA8GF,SAAuBpyb,EAAKg/f,GAC1BA,GAAW,SACX,IAAIx/e,EAAUxf,EAAIzuB,MAAM,IAAI8tC,OAAO2/e,EAAS,MAC5C,OAAOx/e,EAAUA,EAAQ79B,OAAS,CACpC,EAjHE0wc,WAoHF,SAAoBryb,EAAKg/f,EAASr5O,GAGhC,OAFAq5O,GAAW,WACXr5O,EAAOA,EAAKr0S,QAAQ,MAAO,QACpB0uB,EAAI1uB,QAAQ,IAAI+tC,OAAO2/e,EAAS,KAAMr5O,EAAO,KACtD,EAvHE2sK,YA6HF,SAAqBt7V,GACnB,OAAOA,EAAI1lH,QAAQi4mC,EAAY,IACpBj4mC,QAAQk4mC,EAAkB,IAC1Bl4mC,QAAQm4mC,EAAoB,aACzC,EAhIE56S,iBA6IF,SAA0B73sB,EAAK5jB,GAC7B,IAAI5zD,EAAUw3E,EAAIzlH,MAAMm4mC,GAUxB,OATIlqkC,GAA6B,GAAlBA,EAAQ79B,SACrBq1G,EAAM5jB,EACE4jB,EAAI1lH,QAAQq4mC,EAAqB,IAC7Br4mC,QAAQs4mC,EAAcC,GAC1B7y/B,EAAI1lH,QAAQw4mC,EAAe,IACvBx4mC,QAAQy4mC,EAAcC,KAGpCxqkC,EAAUw3E,EAAIzlH,MAAM04mC,KACe,IAAnBzqkC,EAAQ79B,OACjBq1G,EAAI1lH,QAAQ44mC,EAAiB,IADSlz/B,CAE/C,EAzJE06V,eA4JF,SAAwB7+O,EAAQ3tG,GAC9B,GAAqB,kBAAV2tG,EAAqB,OAAQA,EACxC,IAAK,IAAI96N,KAAO86N,EAAQ,GAAI3tG,EAAMntH,GAAM,OAAO,CACjD,EA9JEs1zB,qBAiKF,SAA8Bx6lB,EAAQ3tG,EAAOil/B,GAC3C,GAAqB,kBAAVt34B,EAAqB,OAAQA,GAA2B,OAAjBs34B,EAClD,IAAK,IAAIpymC,KAAO86N,EAAQ,GAAI96N,GAAOoymC,GAAiBjl/B,EAAMntH,GAAM,OAAO,CACzE,EAnKEwwO,eAAgBA,EAChBoiZ,YA0KF,SAAqBz7S,EAAavpC,EAAMilV,EAAcnpmB,GAIpD,OAAO2olC,EAAUl7xB,EAHN07S,EACG,SAAajlV,GAAQlkR,EAAW,GAAK,8CACpCA,EAAW,SAAakkR,EAAO,SAAa,YAAiBA,EAAO,YAErF,EA9KEkuX,QAiLF,SAAiB3kV,EAAarvS,EAAM+qlB,GAIlC,OAAOw/e,EAAUl7xB,EAFH3mG,EADHqiZ,EACkB,IAAMy/e,EAAkBxqkC,GACxBy5M,EAAYz5M,IAE3C,EArLE45M,QA0LF,SAAiB7R,EAAO0i4B,EAAKn7vB,GAC3B,IAAIokB,EAAIg3uB,EAAajnmC,EAAMk8B,EAC3B,GAAc,KAAVooM,EAAc,MAAO,WACzB,GAAgB,KAAZA,EAAM,GAAW,CACnB,IAAKyve,EAAa5ntB,KAAKm4O,GAAQ,MAAM,IAAI9yN,MAAM,yBAA2B8yN,GAC1E2i4B,EAAc3i4B,EACdtkO,EAAO,UACT,KAAO,CAEL,KADAk8B,EAAUooM,EAAMr2O,MAAMgmtB,IACR,MAAM,IAAIzisB,MAAM,yBAA2B8yN,GAGzD,GAFA2rJ,GAAM/zV,EAAQ,GAEK,MADnB+qkC,EAAc/qkC,EAAQ,IACE,CACtB,GAAI+zV,GAAM+2uB,EAAK,MAAM,IAAIx1lC,MAAM,gCAAkCy+W,EAAK,gCAAkC+2uB,GACxG,OAAOn7vB,EAAMm7vB,EAAM/2uB,EACrB,CAEA,GAAIA,EAAK+2uB,EAAK,MAAM,IAAIx1lC,MAAM,sBAAwBy+W,EAAK,gCAAkC+2uB,GAE7F,GADAhnmC,EAAO,QAAWgnmC,EAAM/2uB,GAAO,KAC1Bg3uB,EAAa,OAAOjnmC,CAC3B,CAIA,IAFA,IAAIqiS,EAAOriS,EACPyxE,EAAWw1hC,EAAY97mC,MAAM,KACxBmE,EAAE,EAAGA,EAAEmiF,EAASpzE,OAAQ/O,IAAK,CACpC,IAAIy6C,EAAU0nC,EAASniF,GACnBy6C,IAEFs4P,GAAQ,QADRriS,GAAQg2O,EAAYkx3B,EAAoBn9jC,KAG5C,CACA,OAAOs4P,CACT,EAzNEw9xB,iBAkOF,SAA0BnjjC,GACxB,OAAOwqlC,EAAoBv3gC,mBAAmBjzE,GAChD,EAnOEwqlC,oBAAqBA,EACrB52c,eAqOF,SAAwB5zoB,GACtB,OAAO61E,mBAAmBw0gC,EAAkBrqlC,GAC9C,EAtOEqqlC,kBAAmBA,GAoDrB,IAAIf,EAAkBv2c,EAAO,CAAE,SAAU,SAAU,UAAW,UAAW,SAkBzE,SAASA,EAAO5unB,GAEd,IADA,IAAItqC,EAAO,CAAC,EACHjH,EAAE,EAAGA,EAAEuxC,EAAIxiC,OAAQ/O,IAAKiH,EAAKsqC,EAAIvxC,KAAM,EAChD,OAAOiH,CACT,CAGA,IAAIy09B,EAAa,wBACbo4F,EAAe,QACnB,SAASpt0B,EAAYvhP,GACnB,MAAqB,iBAAPA,EACJ,IAAMA,EAAM,IACZu29B,EAAW7+9B,KAAKsI,GACd,IAAMA,EACN,KAAOywO,EAAazwO,GAAO,IACzC,CAGA,SAASywO,EAAaxoN,GACpB,OAAOA,EAAI1uB,QAAQo1jC,EAAc,QACtBp1jC,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,MAC5B,CAiBA,IAAIi4mC,EAAa,gBACbC,EAAmB,uCACnBC,EAAqB,8CAQrBC,EAAgB,eAChBI,EAAgB,kEAChBH,EAAsB,uCACtBI,EAAe,uBACfC,EAAc,uCACdJ,EAAe,gFACfC,EAAoB,eACpBI,EAAkB,qCAClBC,EAAkB,iDA8BtB,SAAS3h4B,EAAevoN,GACtB,MAAO,IAAOwoN,EAAaxoN,GAAO,GACpC,CAmBA,IAAIq3rB,EAAe,sBACfE,EAAwB,mCAoC5B,SAAS6yZ,EAAWjjmC,EAAGC,GACrB,MAAS,MAALD,EAAkBC,GACdD,EAAI,MAAQC,GAAG9V,QAAQ,UAAW,GAC5C,CAaA,SAAS+4mC,EAAkBrqlC,GACzB,OAAOA,EAAI1uB,QAAQ,KAAM,MAAMA,QAAQ,MAAO,KAChD,CAGA,SAASk5mC,EAAoBxqlC,GAC3B,OAAOA,EAAI1uB,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAChD,C,yBCxQA29F,EAAOj9F,QAAU,CAIhBmuO,OAAQ,SAAgBxhN,EAAI0hC,EAAI59B,GAI/B,IAHA,IAAIzlB,EAAM2hB,EAAGhd,OACT8mG,EAAM,EAED71G,EAAI,EAAGA,EAAIoK,EAAKpK,IAAK,CAC7B,IAAI9B,GAAK6tB,EAAG/rB,IAAM,IAAMytD,EAAGztD,IAAM,GACjC61G,GAAO33G,EAAIA,CACZ,CAEA,OAAO2xB,EAAO1vB,KAAK0vB,KAAKgmF,GAAOA,CAChC,EACAqpyB,QAAS,SAAiBnz3B,EAAI0hC,EAAI59B,GAIjC,IAHA,IAAIzlB,EAAM2hB,EAAGhd,OACT8mG,EAAM,EAED71G,EAAI,EAAGA,EAAIoK,EAAKpK,IACxB61G,GAAO11G,KAAKM,KAAKsrB,EAAG/rB,IAAM,IAAMytD,EAAGztD,IAAM,IAI1C,OAAO6vB,EAAO1vB,KAAK0vB,KAAKgmF,GAAOA,CAChC,EAMA8sH,KAAM,SAAc52M,EAAI0hC,EAAI59B,GAC3B,IAAI3xB,EAAIiC,KAAKM,IAAIsrB,EAAK0hC,GACtB,OAAO59B,EAAO3xB,EAAIA,EAAIA,CACvB,E,+BCnCD,IAAIq8H,EAAc,EAAQ,OACtBqgZ,EAA0B,EAAQ,OAClCugH,EAAuB,EAAQ,OAC/Br/gB,EAAW,EAAQ,OACnBu6I,EAAkB,EAAQ,OAC1B/xB,EAAa,EAAQ,OAKzBllO,EAAQid,EAAIk+G,IAAgBqgZ,EAA0Bn2gB,OAAO0hC,iBAAmB,SAA0B1Q,EAAGysF,GAC3GpG,EAASrmF,GAMT,IALA,IAIItwB,EAJA4nC,EAAQspN,EAAgBn0I,GACxBl9G,EAAOs/N,EAAWpiH,GAClBnzG,EAAS/J,EAAK+J,OACdoC,EAAQ,EAELpC,EAASoC,GAAOgqnB,EAAqB9+mB,EAAEoZ,EAAGtwB,EAAMH,EAAKmM,KAAU47B,EAAM5nC,IAC5E,OAAOswB,CACT,C,yBCnBA,IAAI+lU,EAAavgV,UAGjBohF,EAAOj9F,QAAU,SAAUg9G,GACzB,GAAIA,EAHiB,iBAGM,MAAMo/O,EAAW,kCAC5C,OAAOp/O,CACT,C,yBCEQ,SAAW5gH,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJF,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEC,MAC7E,KAEJC,YACI,yEAAyED,MACrE,KAERE,SAAU,iDAAiDF,MAAM,KACjEG,cAAe,oBAAoBH,MAAM,KACzCI,YAAa,oBAAoBJ,MAAM,KACvCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,cAAe,cACfC,KAAM,SAAUC,GACZ,MAAiB,UAAVA,CACX,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,QAEA,OAEf,EACAG,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNC,EAAG,iBACHC,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERM,uBAAwB,YACxBC,QAAS,OACTN,SAAU,SAAUC,GAChB,OAAOA,EAAOC,QAAQ,gBAAiB,SAAUC,GAC7C,OAAOjD,EAAUiD,EACrB,EACJ,EACAC,WAAY,SAAUH,GAClB,OAAOA,EAAOC,QAAQ,MAAO,SAAUC,GACnC,OAAOlD,EAAUkD,EACrB,EACJ,EACAI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CA3GyCC,CAAQ,EAAQ,O,sHCFtDorlB,EAAuB,OACZ,SAASrjN,EAAWlnR,EAAWx1G,IAC5C,EAAA+jQ,EAAA,GAAa,EAAGx/P,WAChB,IAAImtC,GAAO,EAAA0oN,EAAA,GAAO5kJ,GACd/nD,GAAO,EAAAs4jB,EAAA,GAAer0kB,EAAM1xC,GAAS61G,UCH5B,SAA4BL,EAAWx1G,GACpD,IAAIxE,EAAMT,EAAOO,EAAOyiY,EAAuBD,EAAiBspP,EAAuBlpP,EAAuBC,GAC9G,EAAAp6H,EAAA,GAAa,EAAGx/P,WAChB,IAAIU,GAAiB,SACjB65X,GAAwB,EAAA96H,EAAA,GAAm3B,QAAx2BxoQ,EAAyjB,QAAjjBT,EAAoe,QAA3dO,EAAsH,QAA7GyiY,EAAwB/9X,aAAyC,EAASA,EAAQ8+X,6BAA6D,IAA1Bf,EAAmCA,EAAwB/9X,SAAyF,QAAtC89X,EAAkB99X,EAAQsuC,cAAwC,IAApBwvV,GAA4F,QAArDspP,EAAwBtpP,EAAgB99X,eAA+C,IAA1BonnB,OAA5J,EAAwMA,EAAsBtoP,6BAA6C,IAAVxjY,EAAmBA,EAAQ2J,EAAe65X,6BAA6C,IAAV/jY,EAAmBA,EAA4D,QAAnDmjY,EAAwBj5X,EAAeqpC,cAA8C,IAA1B4vV,GAAyG,QAA5DC,EAAyBD,EAAsBl+X,eAAgD,IAA3Bm+X,OAA9E,EAA2HA,EAAuBW,6BAA4C,IAATtjY,EAAkBA,EAAO,GAC56BqyF,GAAO,EAAAwuS,EAAA,GAAe7mR,EAAWx1G,GACjCstmC,EAAY,IAAIr0lC,KAAK,GAIzB,OAHAq0lC,EAAU5uzB,eAAe7wN,EAAM,EAAGixS,GAClCwuuB,EAAUt22B,YAAY,EAAG,EAAG,EAAG,IACpB,EAAA+uX,EAAA,GAAeunf,EAAWttmC,EAEvC,CDRuDutmC,CAAmB77jC,EAAM1xC,GAAS61G,UAKvF,OAAOjgH,KAAK+F,MAAM8xD,EAAOsyhB,GAAwB,CACnD,C,yBEiBAjuf,EAAOj9F,QAlBH,SAAgCsZ,EAAImuN,EAAS6nK,GACzCjqY,OAAO0hC,iBAAiBxrB,KAAM,CAC1BjC,GAAI,CACA2tB,YAAY,EACZ/lC,MAAOoY,GAEXmuN,QAAS,CACLxgM,YAAY,EACZ/lC,MAAOumO,GAEX6nK,QAAS,CACLroW,YAAY,EACZ/lC,MAAOouY,IAGnB,C,yBC1BJ,IAAIqpuB,EAA6C,oBAAjB1tlB,aAC1BA,aAC8B,oBAAvB2tlB,mBACHA,mBACA,KAWNjsrB,EAAqC,WAIrC,SAASA,EAAoBxhb,GACzBA,EAAU9F,OAAOC,OAAO,CACpB2lhB,aAAc0tlB,GACfxtmC,GACH9F,OAAO0hC,iBAAiBxrB,KAAM,CAC1Bs9lC,cAAe,CACX33mC,MAAOiK,EAAQ8/gB,cAEnB6tlB,cAAe,CACX53mC,MAAO,KACP8lC,UAAU,GAEd+xkC,SAAU,CACN73mC,MAAO,IAAIuN,KAEfk+a,oBAAqB,CACjB1lZ,YAAY,EACZ/lC,MAAOyrb,IAGnB,CAqCA,OA7BAA,EAAoBhxa,UAAUk0X,YAAc,SAAUF,GAClD,IAAKp0X,KAAKw9lC,SAAS7pmC,IAAIygY,KACnBp0X,KAAKw9lC,SAASlqmC,IAAI8gY,GACdp0X,KAAKs9lC,gBAAkBt9lC,KAAKu9lC,eAC5B,IACIv9lC,KAAKu9lC,cAAgB,IAAIv9lC,KAAKs9lC,aAClC,CACA,MAAOrzlC,GAEP,CAGR,OAAOjK,KAAKu9lC,aAChB,EAOAnsrB,EAAoBhxa,UAAUu0X,QAAU,SAAUP,GAC1Cp0X,KAAKw9lC,SAAS7pmC,IAAIygY,KAClBp0X,KAAKw9lC,SAAS/mkC,OAAO29V,IAChBp0X,KAAKw9lC,SAASzqlC,MAAQ/S,KAAKu9lC,gBAC5Bv9lC,KAAKu9lC,cAAc9vlC,QACnBzN,KAAKu9lC,cAAgB,MAGjC,EACOnsrB,CACX,CA9DwC,GA+DxC1vV,EAAOj9F,QAAU,IAAI2sb,C,+BC/ErB,IAAIxxT,EAAc,EAAQ,OACtB4ggB,EAAuB,EAAQ,OAC/BnhQ,EAA2B,EAAQ,MAEvC39R,EAAOj9F,QAAU,SAAU6mD,EAAQ9gD,EAAK7E,GAClCi6H,EAAa4ggB,EAAqB9+mB,EAAE4pC,EAAQ9gD,EAAK60X,EAAyB,EAAG15X,IAC5E2lD,EAAO9gD,GAAO7E,CACrB,C,gDCOA,QCPS,SAAS2lD,EAAQs0K,EAAUb,GAMhC,IALA,IAAIvoN,GAAS,EACTqwO,EAAW/8O,OAAOwhD,GAClBlZ,EAAQ2sL,EAASzzK,GACjBl3C,EAASg+B,EAAMh+B,OAEZA,KAAU,CACf,IAAI5J,EAAM4nC,IAA6B57B,GACvC,IAA+C,IAA3CopN,EAASinB,EAASr8O,GAAMA,EAAKq8O,GAC/B,KAEJ,CACA,OAAOv7L,CACT,C,gDCpBF,IAAIs2C,EAAc93F,OAAOsW,UAgBzB,QAPA,SAAqBza,GACnB,IAAIs5N,EAAOt5N,GAASA,EAAM8a,YAG1B,OAAO9a,KAFqB,mBAARs5N,GAAsBA,EAAK7+M,WAAcwhF,EAG/D,C,+BCXA,IAAIwrhB,EAAW,EAAQ,OACnBqwf,EAAuB,EAAQ,MACnC,SAAS/w4B,EAAgBC,EAAkB/8N,GACvC,IAAI0c,EAAQ,IAAImxlC,EAAqB9w4B,EAAkB/8N,GAEvD,OADA9F,OAAOmW,eAAeqM,EAAOogN,EAAgBtsN,WACtCkM,CACX,CACA8gmB,EAAS1gZ,EAAiB+w4B,GAC1B/7gC,EAAOj9F,QAAUioO,C,yBCHT,SAAW7rO,GAAU,aAIzB,IAAIyjY,EACI,8DAA8DpjY,MAC1D,KAERC,EAAc,kDAAkDD,MAAM,KACtEuzU,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEC7zU,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,SAAUgC,EAAGq7C,GACtB,OAAKr7C,EAEM,QAAQjB,KAAKs8C,GACbr9C,EAAYgC,EAAEo6F,SAEd+mS,EAAenhY,EAAEo6F,SAJjB+mS,CAMf,EACA5vD,YAAaA,EACbK,iBAAkBL,EAClBM,kBACI,+FACJC,uBACI,0FACJR,YAAaA,EACbS,gBAAiBT,EACjBU,iBAAkBV,EAClBrzU,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVS,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBwd,KAAKorL,QAAgB,IAAM,IAAM,MAC3D,EACA3oM,QAAS,WACL,MAAO,gBAAmC,IAAjBud,KAAKorL,QAAgB,IAAM,IAAM,MAC9D,EACA1oM,SAAU,WACN,MAAO,cAAiC,IAAjBsd,KAAKorL,QAAgB,IAAM,IAAM,MAC5D,EACAzoM,QAAS,WACL,MAAO,cAAiC,IAAjBqd,KAAKorL,QAAgB,IAAM,IAAM,MAC5D,EACAxoM,SAAU,WACN,MACI,0BACkB,IAAjBod,KAAKorL,QAAgB,IAAM,IAC5B,MAER,EACAvoM,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJo2B,EAAG,aACHi/H,GAAI,aACJp1J,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERM,uBAAwB,WACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETigY,YAAa,kBAKpB,CAlHyChgY,CAAQ,EAAQ,O,yBCGlD,SAAW1D,GAAU,aAIXA,EAAOG,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFC,MAC5F,KAEJC,YACI,wFAAwFD,MACpF,KAERE,SAAU,kDAAkDF,MAAM,KAClEG,cAAe,kDAAkDH,MAAM,KACvEI,YAAa,kDAAkDJ,MAAM,KACrEM,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVS,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNC,EAAG,OACHC,GAAI,UACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,cACJC,EAAG,MACHC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERQ,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA1DyCC,CAAQ,EAAQ,O,6BCJ1DE,EAAQ89F,YAAa,EACrB99F,EAAA,QAIA,WACE,GAAIi5mC,EACF,OAAOA,EAGT,GAAyB,oBAAdpvmC,UAA2B,CACpC,IAAIqvmC,EAAarvmC,UAAUC,UAAUhG,QAAQ,SAAW,EACpDqzc,EAAYttc,UAAUC,UAAUhG,QAAQ,YAAc,EACtDq1mC,EAAUtvmC,UAAUC,UAAUnG,cAAcG,QAAQ,OAAS,EAE7DopV,EAAWrjV,UAAUC,UAAUhG,QAAQ,WAAa,EACpDszc,EAAWvtc,UAAUC,UAAUhG,QAAQ,WAAa,EAiBxD,OAfIopV,GAAYkqH,IACdA,GAAW,GAGTlqH,GAAYisxB,IACdjsxB,GAAW,GAGb+rxB,EAAuB,CACrBC,WAAYA,EACZ/hqB,UAAWA,EACXgiqB,QAASA,EACTjsxB,SAAUA,EACVkqH,SAAUA,EAGd,CAUA,OARA6hqB,EAAuB,CACrB/rxB,UAAU,EACVgsxB,YAAY,EACZ/hqB,WAAW,EACXgiqB,SAAS,EACT/hqB,UAAU,EAId,EA1CA,IAAI6hqB,EAAuB,I,+BCJ3B,IAAIr7gC,EAAa,EAAQ,OACrB2jK,EAAa,EAAQ,OAMzBtkK,EAAOj9F,QAAU,SAAUiyR,EAAWnyO,GACpC,OAAOpwC,UAAUC,OAAS,GALFutF,EAKgBU,EAAWq0L,GAJ5C1wB,EAAWrkK,GAAYA,OAAW7qF,GAIwBurF,EAAWq0L,IAAcr0L,EAAWq0L,GAAWnyO,GALlG,IAAUo9C,CAM1B,C,gDCcA,QAJA,SAAeh8F,GACb,OAAgB,MAATA,CACT,C,+BCrBA,IAAI+1D,EAAO,EAAQ,OACfr7C,EAAO,EAAQ,OACfgzG,EAAW,EAAQ,OACnBwq/B,EAA+B,EAAQ,OACvCl7J,EAAwB,EAAQ,OAChCn1tB,EAAgB,EAAQ,OACxBtsH,EAAoB,EAAQ,OAC5B2ga,EAAiB,EAAQ,OACzBzgb,EAAc,EAAQ,OACtBssI,EAAoB,EAAQ,OAE5BwZ,EAAS5yP,MAIbotF,EAAOj9F,QAAU,SAAcq5mC,GAC7B,IAAIhjlC,EAAIu4F,EAASyq/B,GACbC,EAAiBvw3B,EAAcxtO,MAC/BkuO,EAAkB/5O,UAAUC,OAC5B+5O,EAAQD,EAAkB,EAAI/5O,UAAU,QAAK2C,EAC7CmhT,OAAoBnhT,IAAVq3O,EACV8pE,IAAS9pE,EAAQzyL,EAAKyyL,EAAOD,EAAkB,EAAI/5O,UAAU,QAAK2C,IACtE,IAEI1C,EAAQjB,EAAQmO,EAAMY,EAAUpa,EAAMnC,EAFtCmhP,EAAiB4G,EAAkB5yN,GACnCtkB,EAAQ,EAGZ,IAAIswO,GAAoB9mO,OAASknP,GAAUy7sB,EAAsB77tB,GAW/D,IAFA1yO,EAAS8sH,EAAkBpmG,GAC3B3nB,EAAS4qmC,EAAiB,IAAI/9lC,KAAK5L,GAAU8yP,EAAO9yP,GAC9CA,EAASoC,EAAOA,IACpB7Q,EAAQsyT,EAAU9pE,EAAMrzN,EAAEtkB,GAAQA,GAASskB,EAAEtkB,GAC7CqrhB,EAAe1uhB,EAAQqD,EAAO7Q,QAThC,IAHAwN,EAAS4qmC,EAAiB,IAAI/9lC,KAAS,GAEvClY,GADAoa,EAAWk/F,EAAYtmF,EAAGgsN,IACVh/O,OACRwZ,EAAOjB,EAAKvY,EAAMoa,IAAWV,KAAMhL,IACzC7Q,EAAQsyT,EAAU4lzB,EAA6B37lC,EAAUisO,EAAO,CAAC7sO,EAAK3b,MAAO6Q,IAAQ,GAAQ8K,EAAK3b,MAClGk8hB,EAAe1uhB,EAAQqD,EAAO7Q,GAWlC,OADAwN,EAAOiB,OAASoC,EACTrD,CACT,C,0ECxCIqD,GAAQ,QAAa,CACrBjD,KAAM,wBACNygiB,YAAa,eACbp9a,MAAO,CACHon/B,QAAS,CACLhmiC,UAAW,KACX6le,0BAA2B,MAE/BogkB,WAAY,CACRjulC,KAAM,UACN9K,SAAU,CAAEquF,KAAM,IAEtB2qgC,YAAa,CACTlulC,KAAM,UACN9K,SAAU,CAAE0me,MAAO,IAEvBuynB,aAAc,CACVnulC,KAAM,UACN9K,SAAU,CAAEjkB,OAAQ,GACpB65iB,gBAAgB,GAEpBsjkB,YAAa,CACTpulC,KAAM,UACN9K,SAAU,CAAEwme,MAAO,M,wICpB3B97d,EAAO,WAAiB,EAUxByulC,EAAe,SAAsBxr/B,GACvC,OAAOA,IAAQ,YAAaA,EAAMA,EAAIh9G,QAAUg9G,EAClD,EAoFA,QAtEA,SAAsBA,EAAKyr/B,EAAa7/lC,GACtC,IAAIrT,OAAiB,IAAVqT,EAAmB,CAAC,EAAIA,EAC/BuvC,EAAW5iD,EAAK4iD,SAChBuwjC,EAAoBnzmC,EAAKitV,aACzBA,OAAqC,IAAtBkmxB,EAA+B,QAAUA,EAExDC,GAA2B,IAAAv/lC,SAAO,GAClCmwX,EAAUkvuB,GAAe1ulC,EACzB6ulC,GAAqB,IAAAv/lC,aAAY,SAAUla,GAC7C,IA7BqBmnB,EA6BjB+kU,EAAgBmtxB,EAAaxr/B,GACjC,MAAUq+N,EAAe,iJACzBstxB,EAAyB3omC,UAAWq7U,IA/Bf/kU,EA+BgDnnB,IA9B7DmnB,EAAM4lR,SAAW5lR,EAAMi5a,QAAUj5a,EAAM2lR,SAAW3lR,EAAM6lR,YALpE,SAA0B7lR,GACxB,OAAwB,IAAjBA,EAAM+lR,MACf,CAiCgFws0B,CAAiB15mC,MAAQ,EAAAwC,EAAA,GAAS0pV,EAAelsV,EAAE+I,QACjI,EAAG,CAAC8kH,IACA8r/B,GAAc,EAAAp5uB,EAAA,GAAiB,SAAUvgY,GACtCw5mC,EAAyB3omC,SAC5Bu5X,EAAQpqY,EAEZ,GACI45mC,GAAc,EAAAr5uB,EAAA,GAAiB,SAAUvgY,GA9C3B,KA+CZA,EAAE4yT,SACJw3E,EAAQpqY,EAEZ,IACA,IAAA6a,WAAU,WACR,IAAImuC,GAAmB,MAAP6kE,EAAhB,CAGA,IC3DsBii8B,ED2DlB+pD,EAAe13mC,OAAOglB,MACtB68F,GC5DkB8r8B,ED4DEupD,EAAaxr/B,IC3DhC,EAAA5rH,EAAA,IAAc,EAAAqyV,EAAA,GAAgBw7tB,KD+D/BgqD,GAA6B,EAAAv8jC,EAAA,GAAOymE,EAAKqvO,EAAcomxB,GAAoB,GAC3EM,GAAsB,EAAAx8jC,EAAA,GAAOymE,EAAKqvO,EAAc,SAAUrzV,GAExDA,IAAM65mC,EAKVF,EAAY35mC,GAJV65mC,OAAe/nmC,CAKnB,GACIkomC,GAAsB,EAAAz8jC,EAAA,GAAOymE,EAAK,QAAS,SAAUhkH,GAEnDA,IAAM65mC,EAKVD,EAAY55mC,GAJV65mC,OAAe/nmC,CAKnB,GACImomC,EAA4B,GAQhC,MANI,iBAAkBj2/B,EAAItgH,kBACxBu2mC,EAA4B,GAAGnkmC,MAAMuF,KAAK2oG,EAAIt7G,KAAK8pH,UAAUzkH,IAAI,SAAUwqC,GACzE,OAAO,EAAAgF,EAAA,GAAOhF,EAAI,YAAa3tB,EACjC,IAGK,WACLkvlC,IACAC,IACAC,IACAC,EAA0BjtmC,QAAQ,SAAU4wC,GAC1C,OAAOA,GACT,EACF,CA1C6C,CA2C/C,EAAG,CAACiwE,EAAK7kE,EAAUqqS,EAAcomxB,EAAoBE,EAAaC,GACpE,C,yBE7FQ,SAAW/9mC,GAAU,aAIzB,IAAIC,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETE,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGCJ,EAAOG,aAAa,KAAM,CAC/BC,OAAQA,EACRE,YAAaF,EACbG,SACI,0EAA0EF,MACtE,KAERG,cACI,2DAA2DH,MAAM,KACrEI,YAAa,gBAAgBJ,MAAM,KACnCK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,cAAe,kBACfC,KAAM,SAAUC,GACZ,MAAO,UAAUC,KAAKD,EAC1B,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,UAEA,SAEf,EACAG,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACNC,EAAG,kBACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YACJC,EAAG,eACHC,GAAI,aACJC,EAAG,WACHC,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERC,SAAU,SAAUC,GAChB,OAAOA,EACFC,QAAQ,gBAAiB,SAAUC,GAChC,OAAOjD,EAAUiD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAE,WAAY,SAAUH,GAClB,OAAOA,EACFC,QAAQ,MAAO,SAAUC,GACtB,OAAOlD,EAAUkD,EACrB,GACCD,QAAQ,KAAM,IACvB,EACAK,KAAM,CACFC,IAAK,EACLC,IAAK,KAMhB,CA1HyCC,CAAQ,EAAQ,O,6BCJ1DuF,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAA,QACA,SAA2Bu8T,GACzB,OAAO,SAAkB5uR,EAAOoiF,EAAUC,EAAexrB,EAAUyrB,GACjE,IAAI+9f,EAAoBh+f,GAAiB,gBACrCi+f,EAAmBh+f,GAAgBF,EAEvC,GAAuB,MAAnBpiF,EAAMoiF,GACR,OAAO,IAAIjtG,MAAM,OAAS0hF,EAAW,KAAOyphB,EAA3B,0BAAgFD,EAAhF,4EAGnB,IAAK,IAAIv+mB,EAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,EAAO,EAAIA,EAAO,EAAI,GAAIK,EAAO,EAAGA,EAAOL,EAAMK,IAC9FF,EAAKE,EAAO,GAAKJ,UAAUI,GAG7B,OAAOysT,EAAUlgT,WAAMhK,EAAW,CAACs7B,EAAOoiF,EAAUC,EAAexrB,EAAUyrB,GAAc1mH,OAAOqG,GACpG,CACF,EACAqtF,EAAOj9F,QAAUA,EAAiB,O,+BCtBnB,SAASo0H,EAA8BtnG,EAAQonG,GAC5D,GAAc,MAAVpnG,EAAgB,MAAO,CAAC,EAC5B,IAEI/mB,EAAKnF,EAFL0I,EAAS,CAAC,EACV6qH,EAAa9uH,OAAOO,KAAKknB,GAE7B,IAAKlsB,EAAI,EAAGA,EAAIuzH,EAAWxkH,OAAQ/O,IACjCmF,EAAMouH,EAAWvzH,GACbszH,EAASpwH,QAAQiC,IAAQ,IAC7BuD,EAAOvD,GAAO+mB,EAAO/mB,IAEvB,OAAOuD,CACT,C,6CCTAtJ,EAAQ89F,YAAa,EACrB,IAAIk5E,EAAOj2K,KAAKi2K,KAAOj2K,KAAKi2K,KAAO,SAAUl1K,GAC3C,OAAOf,KAAKS,IAAIM,GAAKf,KAAKU,GAC5B,EAEAzB,EAAA,QAAkBg3K,C,yBCEV,SAAW56K,GAAU,aAIzB,SAASotC,EAAUgV,EAAQw+E,EAAej3H,EAAKk3H,GAC3C,OAAQl3H,GACJ,IAAK,IACD,OAAOi3H,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOx+E,GAAUw+E,EAAgB,OAAS,WAC9C,QACI,OAAOx+E,EAEnB,CAESpiD,EAAOG,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LC,MACnM,KAEJC,YACI,6EAA6ED,MACzE,KAERghI,kBAAkB,EAClB9gI,SAAU,6CAA6CF,MAAM,KAC7DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVC,cAAe,SACfC,KAAM,SAAUC,GACZ,MAAiB,OAAVA,CACX,EACAE,SAAU,SAAUC,EAAMC,EAAQC,GAC9B,OAAIF,EAAO,GACA,KAEA,IAEf,EACAG,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNC,EAAGgrC,EACH/qC,GAAI+qC,EACJ9qC,EAAG8qC,EACH7qC,GAAI6qC,EACJ5qC,EAAG4qC,EACH3qC,GAAI2qC,EACJ1qC,EAAG0qC,EACHzqC,GAAIyqC,EACJxqC,EAAGwqC,EACHvqC,GAAIuqC,EACJtqC,EAAGsqC,EACHrqC,GAAIqqC,GAER/pC,uBAAwB,eACxBC,QAAS,SAAU8+C,EAAQ09D,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO19D,EAAS,QACpB,QACI,OAAOA,EAEnB,GAKP,CAxGyC1+C,CAAQ,EAAQ,O,qCCL1D,IACQub,EADJC,EAAaC,MAAQA,KAAKD,YACtBD,EAAgB,SAAUvc,EAAGsW,GAI7B,OAHAiG,EAAgBhW,OAAOmW,gBAClB,CAAEC,UAAW,cAAgB5L,OAAS,SAAU/Q,EAAGsW,GAAKtW,EAAE2c,UAAYrG,CAAG,GAC1E,SAAUtW,EAAGsW,GAAK,IAAK,IAAIsG,KAAKtG,EAAO/P,OAAOsW,UAAUxU,eAAeyU,KAAKxG,EAAGsG,KAAI5c,EAAE4c,GAAKtG,EAAEsG,GAAI,EAC7FL,EAAcvc,EAAGsW,EAC5B,EACO,SAAUtW,EAAGsW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyG,UAAU,uBAAyBC,OAAO1G,GAAK,iCAE7D,SAAS2G,IAAOR,KAAKS,YAAcld,CAAG,CADtCuc,EAAcvc,EAAGsW,GAEjBtW,EAAE6c,UAAkB,OAANvG,EAAa/P,OAAO4W,OAAO7G,IAAM2G,EAAGJ,UAAYvG,EAAEuG,UAAW,IAAII,EACnF,GAEAk/F,EAAU1/F,MAAQA,KAAK0/F,QAAW,SAAU/7B,EAAG9iE,GAC/C,IAAI1d,EAAsB,mBAAXqB,QAAyBm/E,EAAEn/E,OAAO0d,UACjD,IAAK/e,EAAG,OAAOwgF,EACf,IAAmB5pD,EAAY/0B,EAA3BK,EAAIlC,EAAEkd,KAAKsjE,GAAOg8B,EAAK,GAC3B,IACI,WAAc,IAAN9+F,GAAgBA,KAAM,MAAQkZ,EAAI10B,EAAEyC,QAAQ0Z,MAAMm+F,EAAG7rG,KAAKimB,EAAEp0B,MACxE,CACA,MAAOskB,GAASjlB,EAAI,CAAEilB,MAAOA,EAAS,CACtC,QACI,IACQ8P,IAAMA,EAAEvY,OAASre,EAAIkC,EAAU,SAAIlC,EAAEkd,KAAKhb,EAClD,CACA,QAAU,GAAIL,EAAG,MAAMA,EAAEilB,KAAO,CACpC,CACA,OAAO01F,CACX,EACIu0O,EAAiBl0U,MAAQA,KAAKk0U,eAAkB,SAAUtvT,EAAIC,GAC9D,IAAK,IAAIx/B,EAAI,EAAG2oN,EAAKnpL,EAAKzwB,OAAQ4xB,EAAIpB,EAAGxwB,OAAQ/O,EAAI2oN,EAAI3oN,IAAK2gC,IAC1DpB,EAAGoB,GAAKnB,EAAKx/B,GACjB,OAAOu/B,CACX,EACI0lO,EAAQ,EAAQ,OAChB9mP,EAAK,EAAQ,OAAyB0V,EAAI1V,EAAGm+U,WAAYC,EAAgBp+U,EAAGo+U,cA8B5EijX,EAAiC,SAAU7gsB,GAQ3C,SAAS6gsB,EAAgBvuhB,EAAKukxB,EAAmBjr8B,GAC7C,IAAIsU,EAAQF,EAAO3D,KAAKL,KAAM667B,EAAkB987B,GAAI,OAAQnO,IAAYoQ,KAmDxE,OAlDAlW,OAAO0hC,iBAAiBtnB,EAAO,CAC3BiuT,eAAgB,CACZxsU,OAAO,EACP8lC,UAAU,GAEd+mS,UAAW,CACP7sU,MAAO,KACP8lC,UAAU,GAEd+pG,UAAW,CACP9pG,YAAY,EACZ/lC,OAAO,GAEXusU,cAAe,CACXxmS,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKmyT,cAChB,GAEJhoE,kBAAmB,CACfz+N,YAAY,EACZ/lC,MAAOk18B,EAAkB1wsB,mBAE7BC,eAAgB,CACZ1+N,YAAY,EACZ/lC,MAAOk18B,EAAkBzwsB,gBAE7BC,QAAS,CACL3+N,YAAY,EACZ/lC,MAAOk18B,EAAkBxwsB,SAE7B/1J,SAAU,CACN5oE,YAAY,EACZ73B,IAAK,WACD,OAAOmM,KAAKwyT,SAChB,GAEJ7nE,SAAU,CACNj/N,YAAY,EACZ/lC,MAA+C,OAAxCk18B,EAAkB1wsB,mBACmB,OAArC0wsB,EAAkBzwsB,gBAE7B9zE,IAAK,CACD5qJ,YAAY,EACZ/lC,MAAO2wL,KAGfukxB,EAAkBlw1B,GAAG,UAAW,SAAU50G,GACtCmO,EAAM2G,KAAK,UAAW9U,EAAMmO,EAChC,GACOA,CACX,CAkCA,OA9FAnE,EAAU8ksB,EAAiB7gsB,GAoE3B6gsB,EAAgBzksB,UAAUmyT,YAAc,SAAUj+N,GAC9C,IAAI45e,EAAiBh6P,EAAc,CAAC,MAAOx0O,EAAO51G,OAAO8+B,OAAOg5T,KAChE,IAAKssP,EAAev4iB,SAAS2+D,GAEzB,MAAMp7E,EAAEi1jB,cAAc,WAAYD,GAItC,OADAlukB,KAAKwyT,UAAYl+N,EACVt0F,IACX,EAIA6ksB,EAAgBzksB,UAAUgukB,YAAc,WAExC,EAKAy2H,EAAgBzksB,UAAUiukB,gBAAkB,SAAUn8Q,GAC9ClyT,KAAKmyT,iBAAmBD,IACxBlyT,KAAKmyT,eAAiBD,EACtBlyT,KAAK6K,KAAKqnT,EAAgB,cAAgB,aAAclyT,MAEhE,EACO6ksB,CACX,CAhGoC,CAgGlCv6c,GAoBF5oK,EAAOj9F,QAAUogtB,C,yBCvLjBnjnB,EAAOj9F,QAAU,SAA6Bg9G,EAAIi4H,EAAUC,GAC1D,IASEkS,EATEpiI,EAAM,IACNqwH,EAAOr4H,EAAGz3F,MACV+vN,EAAWt4H,EAAGu4H,UACdlU,EAAUrkH,EAAG6jH,OAAOoU,GACpBoS,EAAcrqI,EAAG+5H,WAAa/5H,EAAG0S,KAAK43H,YAAYrS,GAClDO,EAAiBx4H,EAAGy4H,cAAgB,IAAMR,EAC1CS,GAAiB14H,EAAG1xE,KAAKqqM,UACzBC,EAAQ,QAAUN,GAAY,IAC9BkS,EAAUxqI,EAAG1xE,KAAKsqM,OAASvU,GAAWA,EAAQuU,MAE9C4R,GACFxiI,GAAO,cAAgB,EAAS,MAAShI,EAAG0S,KAAK+3H,QAAQpmB,EAAQuU,MAAON,EAAUt4H,EAAGm6H,aAAgB,KACrGiQ,EAAe,SAAW/R,GAE1B+R,EAAe/lB,EAEjBr8G,GAAO,eAAiB,EAAS,QAC7BwiI,IACFxiI,GAAO,IAAM,EAAiB,8BAAgC,EAAiB,oBAEjFA,GAAO,aAAe,EAAS,MAAQ,EAAU,MAAQ,EAAiB,KACtEhI,EAAG1xE,KAAK8v+B,oBACVp25B,GAAO,gCAAkC,EAAS,eAAiB,EAAS,UAAahI,EAAG1xE,KAAwB,oBAAI,IAExH05E,GAAO,YAAc,EAAS,yBAA2B,EAAS,KAEpEA,GAAO,MACHwiI,IACFxiI,GAAO,SAETA,GAAO,UACP,IAAIqxH,EAAaA,GAAc,GAC/BA,EAAWhnO,KAAK21G,GAChBA,EAAM,IACkB,IAApBhI,EAAGs5H,cACLtxH,GAAO,2DAA8EhI,EAAY,UAAI,kBAAqBA,EAAG0S,KAAK6mH,eAAef,GAAmB,4BAA8B,EAAiB,OAC1L,IAArBx4H,EAAG1xE,KAAK+gK,WACVrnF,GAAO,sCAELA,GADEwiI,EACK,OAAU,EAEL,EAAiB,KAG7BxqI,EAAG1xE,KAAKmrM,UACVzxH,GAAO,eAELA,GADEwiI,EACK,kBAAoB,EAEpB,GAAK,EAEdxiI,GAAO,2CAA8ChI,EAAa,WAAI,YAAc,EAAU,KAEhGgI,GAAO,OAEPA,GAAO,OAET,IAAI0xH,EAAQ1xH,EAeZ,OAdAA,EAAMqxH,EAAWz4N,OACZo/F,EAAG25H,eAAiBjB,EACnB14H,EAAG5b,MACL4jB,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACH0wH,IACF1wH,GAAO,YAEFA,CACT,C,+BC1EA3/G,OAAOwY,eAAe7d,EAAS,aAAc,CAAEkB,OAAO,IAMtD,IAAIi8G,EAAe,EAAQ,OAEvBo1+B,EAAuC,WACvC,SAASA,EAAsBpkxB,EAAQssyB,QAClB,IAAbA,IAAuBA,GAAW,GACtCl/lC,KAAKk/lC,SAAWA,EAChBl/lC,KAAKkgX,eAAYppX,EACjBkJ,KAAKsgX,YAAc,EACvB,CA4BA,OA3BA02tB,EAAsB52kC,UAAUwuR,KAAO,WACnC,OAAI3lM,SAAS2lM,KACFz+Q,OAAO84E,SAAS2lM,MAEA,UAApB5uR,KAAKyJ,WAAyB,IAAM,EAC/C,EACAutkC,EAAsB52kC,UAAUqJ,SAAW,WACvC,OAAOw/E,SAASx/E,SAAS1lB,QAAQ,KAAM,GAC3C,EACAizlC,EAAsB52kC,UAAUnY,KAAO,WACnC,OAAOghG,SAASylM,QACpB,EACAsozB,EAAsB52kC,UAAUixR,UAAY,WACxC,OAAOrxR,KAAKk/lC,QAChB,EACAloB,EAAsB52kC,UAAUkwR,WAAa,SAAU6u0B,GACnD,OAAOv9/B,EAAawB,UAAU+7/B,GAAan/lC,KAAKsgX,YAAc6+uB,EAAYn/lC,KAAKsgX,WACnF,EACA02tB,EAAsB52kC,UAAUwuQ,SAAW,SAAU3gL,GACjD,OAAO2T,EAAawB,UAAUnV,GAAQjuF,KAAKkgX,UAAYjyR,EACnD2T,EAAawB,UAAUpjG,KAAKkgX,WAAalgX,KAAKkgX,UAAYlgX,KAAKo/lC,uBACvE,EACApoB,EAAsB52kC,UAAUg/lC,sBAAwB,WACpD,IAAIC,EAAU52mC,SAAS+hM,qBAAqB,QAAQ,GACpD,OAAOxqL,KAAKkgX,UAAYm/uB,EAAUA,EAAQpxgC,KAAKkkB,OAAOlpB,SAAS+E,OAAO55F,QAAU60F,SAASwhC,UAAY,GACzG,EACAus9B,EAAsB52kC,UAAU2jG,QAAU,WAAc,EACjDiz+B,CACX,CAnC0C,GAoC1CvylC,EAAQuylC,sBAAwBA,C,+BC5ChC,IAgBMz+gC,EAhBFmxB,EAAI,EAAQ,OACZ2W,EAAc,EAAQ,OACtB9qE,EAA2B,WAC3Bq+R,EAAW,EAAQ,OACnB5sU,EAAW,EAAQ,KACnB6sU,EAAa,EAAQ,OACrB5kG,EAAyB,EAAQ,OACjC6kG,EAAuB,EAAQ,OAC/Bn0M,EAAU,EAAQ,OAElB7kH,EAAQulG,EAAY,GAAGvlG,OACvBpR,EAAMlE,KAAKkE,IAEXqqU,EAA0BD,EAAqB,YASnDpqO,EAAE,CAAE37F,OAAQ,SAAUm3B,OAAO,EAAM27E,UAPX8e,IAAYo0M,IAC9Bx7P,EAAahjC,EAAyBh1B,OAAOH,UAAW,YACrDm4D,IAAeA,EAAW9sC,WAK8BsoS,IAA2B,CAC1FrjT,SAAU,SAAkBsjT,GAC1B,IAAI19G,EAAOtvN,EAASioO,EAAuBjvN,OAC3C6zT,EAAWG,GACX,IAAI++W,EAAc5+qB,UAAUC,OAAS,EAAID,UAAU,QAAK2C,EACpDrH,EAAM6mN,EAAKliN,OACX1H,OAAsBoK,IAAhBi8qB,EAA4BtjrB,EAAM/F,EAAIkqU,EAASm/W,GAActjrB,GACnE69M,EAAStmN,EAASgtU,GACtB,OAAOl5T,EAAMw7M,EAAM5pN,EAAM4gN,EAAOl5M,OAAQ1H,KAAS4gN,CACnD,G,6BC9BFxjN,OAAOwY,eAAe7d,EAAS,aAAc,CAC3CkB,OAAO,IAETlB,EAAiB,aAAI,EAiBrBA,EAAiB,QAhBN,WACT,IAAK,IAAIyP,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGvB,IAAI2p7B,EADgB,oBAAX/27B,cAEkB,IAAhBA,OAAO0zH,OAChB1zH,OAAOyzH,UAAYzzH,OAAOyzH,WAAa,GACvCzzH,OAAO0zH,KAAO,WACZ1zH,OAAOyzH,UAAU9mH,KAAKK,UACxB,IAED+p7B,EAAU/27B,QAAQ0zH,KAAK/5G,MAAMo96B,EAAS7p7B,GAE3C,C,kBCpBA,UASE,EAAO,CAAE,UAAY,EAMrB,SAAUq1F,GAEZA,EAAE8gT,GAAK9gT,EAAE8gT,IAAM,CAAC,EAEF9gT,EAAE8gT,GAAG3lU,QAAU,SAA7B,IAuB0BhyB,EAHtBysjC,EAAa,EACbC,EAAcjrmC,MAAM8L,UAAUtF,MAElC4uF,EAAE21K,WAAwBxsN,EAiBrB62C,EAAE21K,UAhBC,SAAU4vD,GAChB,IAAI1lS,EAAQm6O,EAAMr+Q,EAClB,IAAMA,EAAI,EAA4B,OAAvBq+Q,EAAOurD,EAAO5pU,IAAeA,IAC3C,KAGCkkC,EAASmgE,EAAE5gD,MAAO46N,EAAM,YACTn6O,EAAOqZ,QACrB8mD,EAAGg6K,GAAOkB,eAAgB,SAI5B,CAAE,MAAQ5/Q,GAAK,CAEhB6tD,EAAMo8Q,EACP,GAGDvlO,EAAEm9Q,OAAS,SAAUtzW,EAAM83C,EAAMjrC,GAChC,IAAIo/lC,EAAqB/+lC,EAAag/lC,EAIlCC,EAAmB,CAAC,EAEpBhp1B,EAAYnjR,EAAKrS,MAAO,KAAO,GAE/By+mC,EAAWjp1B,EAAY,KAD3BnjR,EAAOA,EAAKrS,MAAO,KAAO,IAuH1B,OApHMkf,IACLA,EAAYirC,EACZA,EAAOq+C,EAAEq9Q,QAGLr9Q,EAAE35E,QAAS3P,KACfA,EAAYspF,EAAEsZ,OAAOliG,MAAO,KAAM,CAAE,CAAC,GAAI9S,OAAQoS,KAIlDspF,EAAE0uM,KAAM,KAAOun0B,EAASv3mC,eAAkB,SAAUs7Q,GACnD,QAASh6K,EAAE3zF,KAAM2tQ,EAAMi81B,EACxB,EAEAj2gC,EAAGgtL,GAAchtL,EAAGgtL,IAAe,CAAC,EACpC8o1B,EAAsB91gC,EAAGgtL,GAAanjR,GACtCkN,EAAcipF,EAAGgtL,GAAanjR,GAAS,SAAU3D,EAAStJ,GAGzD,IAAM0Z,KAAK4/lC,cACV,OAAO,IAAIn/lC,EAAa7Q,EAAStJ,GAK7B6N,UAAUC,QACd4L,KAAK4/lC,cAAehwmC,EAAStJ,EAE/B,EAGAojG,EAAEsZ,OAAQviG,EAAa++lC,EAAqB,CAC3C36hC,QAASzkE,EAAUykE,QAInB68X,OAAQh4W,EAAEsZ,OAAQ,CAAC,EAAG5iG,GAItBy/lC,mBAAoB,MAGrBJ,EAAgB,IAAIp0jC,GAKNz7C,QAAU85F,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGy8/B,EAAc7vmC,SAC3D85F,EAAE94E,KAAMxQ,EAAW,SAAUkyB,EAAM3sC,GAC5B+jG,EAAE72E,WAAYltB,GAIpB+5mC,EAAkBptkC,GAAS,WAC1B,SAAStuB,IACR,OAAOqnC,EAAKjrC,UAAWkyB,GAAOxxB,MAAOd,KAAM7L,UAC5C,CAEA,SAAS2rmC,EAAazrmC,GACrB,OAAOg3C,EAAKjrC,UAAWkyB,GAAOxxB,MAAOd,KAAM3L,EAC5C,CAEA,OAAO,WACN,IAEI49F,EAFA8tgC,EAAU//lC,KAAKgE,OACfg8lC,EAAehgmC,KAAK8/lC,YAWxB,OARA9/lC,KAAKgE,OAASA,EACdhE,KAAK8/lC,YAAcA,EAEnB7tgC,EAActsG,EAAMmb,MAAOd,KAAM7L,WAEjC6L,KAAKgE,OAAS+7lC,EACd//lC,KAAK8/lC,YAAcE,EAEZ/tgC,CACR,CACC,CAxByB,GAH1BytgC,EAAkBptkC,GAAS3sC,CA4B7B,GACA8a,EAAYL,UAAYspF,EAAEm9Q,OAAO7jQ,OAAQy8/B,EAAe,CAKvDQ,kBAAmBT,GAAwBC,EAAcQ,mBAA8B1smC,GACrFmsmC,EAAkB,CACpBj/lC,YAAaA,EACbi2Q,UAAWA,EACXwp1B,WAAY3smC,EACZgopB,eAAgBokd,IAOZH,GACJ91gC,EAAE94E,KAAM4ulC,EAAoBK,mBAAoB,SAAUx6mC,EAAGqC,GAC5D,IAAIy4mC,EAAiBz4mC,EAAM0Y,UAI3BspF,EAAEm9Q,OAAQs5vB,EAAezp1B,UAAY,IAAMyp1B,EAAeD,WAAYz/lC,EACrE/Y,EAAMg6c,OACR,UAIO89pB,EAAoBK,oBAE3Bx0jC,EAAKw0jC,mBAAmB/rmC,KAAM2M,GAG/BipF,EAAEm9Q,OAAOu5vB,OAAQ7smC,EAAMkN,GAEhBA,CACR,EAEAipF,EAAEm9Q,OAAO7jQ,OAAS,SAAUj1G,GAO3B,IANA,IAGIvD,EACA7E,EAJA1D,EAAQs9mC,EAAYl/lC,KAAMlM,UAAW,GACrCksmC,EAAa,EACbluZ,EAAclwtB,EAAMmS,OAIhBismC,EAAaluZ,EAAakuZ,IACjC,IAAM71mC,KAAOvI,EAAOo+mC,GACnB16mC,EAAQ1D,EAAOo+mC,GAAc71mC,GACxBvI,EAAOo+mC,GAAaz0mC,eAAgBpB,SAAmBsM,IAAVnR,IAG5C+jG,EAAEghI,cAAe/kO,GACrBoI,EAAQvD,GAAQk/F,EAAEghI,cAAe38N,EAAQvD,IACxCk/F,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGj1G,EAAQvD,GAAO7E,GAGpC+jG,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGr9G,GAItBoI,EAAQvD,GAAQ7E,GAKpB,OAAOoI,CACR,EAEA27F,EAAEm9Q,OAAOu5vB,OAAS,SAAU7smC,EAAM+3C,GACjC,IAAIq0jC,EAAWr0jC,EAAOlrC,UAAUm7oB,gBAAkBhopB,EAClDm2F,EAAE50F,GAAIvB,GAAS,SAAU3D,GACxB,IAAI0wmC,EAAkC,iBAAZ1wmC,EACtByE,EAAOkrmC,EAAYl/lC,KAAMlM,UAAW,GACpC89F,EAAcjyF,KA2DlB,OAzDKsgmC,EAIEtgmC,KAAK5L,QAAsB,aAAZxE,EAGpBoQ,KAAK4Q,KAAM,WACV,IAAI2vlC,EACAlrmC,EAAWq0F,EAAE3zF,KAAMiK,KAAM2/lC,GAE7B,MAAiB,aAAZ/vmC,GACJqiG,EAAc58F,GACP,GAGFA,EAMAq0F,EAAE72E,WAAYxd,EAAUzF,KAAuC,MAAxBA,EAAQ8iB,OAAQ,IAK7D6tlC,EAAclrmC,EAAUzF,GAAUkR,MAAOzL,EAAUhB,MAE9BgB,QAA4ByB,IAAhBypmC,GAChCtugC,EAAcsugC,GAAeA,EAAY5y/B,OACxC1b,EAAY8z3B,UAAWw6I,EAAY1smC,OACnC0smC,GACM,QAJR,EANQ72gC,EAAEz/E,MAAO,mBAAqBra,EAAU,SAAW2D,EACzD,oBAPMm2F,EAAEz/E,MAAO,0BAA4B1W,EAA5B,uDAEgB3D,EAAU,IAgB5C,GA9BAqiG,OAAcn7F,GAmCVzC,EAAKD,SACTxE,EAAU85F,EAAEm9Q,OAAO7jQ,OAAOliG,MAAO,KAAM,CAAElR,GAAU5B,OAAQqG,KAG5D2L,KAAK4Q,KAAM,WACV,IAAIvb,EAAWq0F,EAAE3zF,KAAMiK,KAAM2/lC,GACxBtqmC,GACJA,EAASiwC,OAAQ11C,GAAW,CAAC,GACxByF,EAAS8iE,OACb9iE,EAAS8iE,SAGVuxB,EAAE3zF,KAAMiK,KAAM2/lC,EAAU,IAAIr0jC,EAAQ17C,EAASoQ,MAE/C,IAGMiyF,CACR,CACD,EAEAvI,EAAEq9Q,OAAS,WAAoC,EAC/Cr9Q,EAAEq9Q,OAAO84vB,mBAAqB,GAE9Bn2gC,EAAEq9Q,OAAO3mW,UAAY,CACpB8/lC,WAAY,SACZD,kBAAmB,GACnBO,eAAgB,QAEhB5wmC,QAAS,CACRy9G,QAAS,CAAC,EACVr/D,UAAU,EAGVttC,OAAQ,MAGTk/lC,cAAe,SAAUhwmC,EAAStJ,GACjCA,EAAUojG,EAAGpjG,GAAW0Z,KAAKwgmC,gBAAkBxgmC,MAAQ,GACvDA,KAAK1Z,QAAUojG,EAAGpjG,GAClB0Z,KAAKoqsB,KAAOk1Z,IACZt/lC,KAAKygmC,eAAiB,IAAMzgmC,KAAKkgmC,WAAalgmC,KAAKoqsB,KAEnDpqsB,KAAK0qG,SAAWhhB,IAChB1pF,KAAK0gmC,UAAYh3gC,IACjB1pF,KAAKinhC,UAAYv97B,IACjB1pF,KAAK2gmC,qBAAuB,CAAC,EAExBr6mC,IAAY0Z,OAChB0pF,EAAE3zF,KAAMzP,EAAS0Z,KAAKu7oB,eAAgBv7oB,MACtCA,KAAKgszB,KAAK,EAAMhszB,KAAK1Z,QAAS,CAC7Bs8C,OAAQ,SAAUz2B,GACZA,EAAMpe,SAAWzH,GACrB0Z,KAAKjJ,SAEP,IAEDiJ,KAAKvX,SAAWihG,EAAGpjG,EAAQojC,MAG1BpjC,EAAQW,cAGRX,EAAQmC,UAAYnC,GACrB0Z,KAAK7Y,OAASuiG,EAAG1pF,KAAKvX,SAAU,GAAIvB,aAAe8Y,KAAKvX,SAAU,GAAIs+G,eAGvE/mG,KAAKpQ,QAAU85F,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAChChjG,KAAKpQ,QACLoQ,KAAK4gmC,oBACLhxmC,GAEDoQ,KAAKil7B,UAEAjl7B,KAAKpQ,QAAQo+C,UACjBhuC,KAAK6gmC,mBAAoB7gmC,KAAKpQ,QAAQo+C,UAGvChuC,KAAKkl7B,SAAU,SAAU,KAAMll7B,KAAK8gmC,uBACpC9gmC,KAAKm4D,OACN,EAEAyoiC,kBAAmB,WAClB,MAAO,CAAC,CACT,EAEAE,oBAAqBp3gC,EAAE95E,KAEvBq16B,QAASv71B,EAAE95E,KAEXuoD,MAAOuxB,EAAE95E,KAET7Y,QAAS,WACR,IAAIu/M,EAAOt2M,KAEXA,KAAKgrC,WACL0+C,EAAE94E,KAAM5Q,KAAK2gmC,qBAAsB,SAAUn2mC,EAAK7E,GACjD2wN,EAAKyq5B,aAAcp7mC,EAAO6E,EAC3B,GAIAwV,KAAK1Z,QACH2mI,IAAKjtH,KAAKygmC,gBACVx+1B,WAAYjiQ,KAAKu7oB,gBACnBv7oB,KAAK6mW,SACH55O,IAAKjtH,KAAKygmC,gBACVp+1B,WAAY,iBAGdriQ,KAAK0qG,SAASuiB,IAAKjtH,KAAKygmC,eACzB,EAEAz1jC,SAAU0+C,EAAE95E,KAEZi3V,OAAQ,WACP,OAAO7mW,KAAK1Z,OACb,EAEAg/C,OAAQ,SAAU96C,EAAK7E,GACtB,IACI2wE,EACA0qiC,EACA37mC,EAHAuK,EAAUpF,EAKd,GAA0B,IAArB2J,UAAUC,OAGd,OAAOs1F,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGhjG,KAAKpQ,SAGlC,GAAoB,iBAARpF,EAMX,GAHAoF,EAAU,CAAC,EACX0mE,EAAQ9rE,EAAItJ,MAAO,KACnBsJ,EAAM8rE,EAAMpuB,QACPouB,EAAMliE,OAAS,CAEnB,IADA4smC,EAAYpxmC,EAASpF,GAAQk/F,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGhjG,KAAKpQ,QAASpF,IAC1DnF,EAAI,EAAGA,EAAIixE,EAAMliE,OAAS,EAAG/O,IAClC27mC,EAAW1qiC,EAAOjxE,IAAQ27mC,EAAW1qiC,EAAOjxE,KAAS,CAAC,EACtD27mC,EAAYA,EAAW1qiC,EAAOjxE,IAG/B,GADAmF,EAAM8rE,EAAMj0D,MACc,IAArBlO,UAAUC,OACd,YAA4B0C,IAArBkqmC,EAAWx2mC,GAAsB,KAAOw2mC,EAAWx2mC,GAE3Dw2mC,EAAWx2mC,GAAQ7E,CACpB,KAAO,CACN,GAA0B,IAArBwO,UAAUC,OACd,YAA+B0C,IAAxBkJ,KAAKpQ,QAASpF,GAAsB,KAAOwV,KAAKpQ,QAASpF,GAEjEoF,EAASpF,GAAQ7E,CAClB,CAKD,OAFAqa,KAAKihmC,YAAarxmC,GAEXoQ,IACR,EAEAihmC,YAAa,SAAUrxmC,GACtB,IAAIpF,EAEJ,IAAMA,KAAOoF,EACZoQ,KAAKkhmC,WAAY12mC,EAAKoF,EAASpF,IAGhC,OAAOwV,IACR,EAEAkhmC,WAAY,SAAU12mC,EAAK7E,GAW1B,MAVa,YAAR6E,GACJwV,KAAKmhmC,kBAAmBx7mC,GAGzBqa,KAAKpQ,QAASpF,GAAQ7E,EAET,aAAR6E,GACJwV,KAAK6gmC,mBAAoBl7mC,GAGnBqa,IACR,EAEAmhmC,kBAAmB,SAAUx7mC,GAC5B,IAAIy7mC,EAAUzwmC,EAAU0wmC,EAExB,IAAMD,KAAYz7mC,EACjB07mC,EAAkBrhmC,KAAK2gmC,qBAAsBS,GACxCz7mC,EAAOy7mC,KAAephmC,KAAKpQ,QAAQy9G,QAAS+z/B,IAC9CC,GACAA,EAAgBjtmC,SAQnBzD,EAAW+4F,EAAG23gC,EAAgBxtmC,OAC9BmM,KAAK+gmC,aAAcM,EAAiBD,GAMpCzwmC,EAASs5G,SAAUjqG,KAAKk0T,SAAU,CACjC5tU,QAASqK,EACTtG,KAAM+2mC,EACN/z/B,QAAS1nH,EACT2N,KAAK,KAGR,EAEAutmC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKshmC,aAActhmC,KAAK6mW,SAAU7mW,KAAKu7oB,eAAiB,YAAa,OAAQ51pB,GAGxEA,IACJqa,KAAK+gmC,aAAc/gmC,KAAK0gmC,UAAW,KAAM,kBACzC1gmC,KAAK+gmC,aAAc/gmC,KAAKinhC,UAAW,KAAM,kBAE3C,EAEAl56B,OAAQ,WACP,OAAO/tG,KAAKihmC,YAAa,CAAEjzjC,UAAU,GACtC,EAEA8/D,QAAS,WACR,OAAO9tG,KAAKihmC,YAAa,CAAEjzjC,UAAU,GACtC,EAEAkmR,SAAU,SAAUtkU,GACnB,IAAI2hQ,EAAO,GACPj7C,EAAOt2M,KAOX,SAASuhmC,EAAoBl0/B,EAASm0/B,GACrC,IAAI3rmC,EAASxQ,EACb,IAAMA,EAAI,EAAGA,EAAIgoH,EAAQj5G,OAAQ/O,IAChCwQ,EAAUygN,EAAKqq5B,qBAAsBtz/B,EAAShoH,KAASqkG,IAEtD7zF,EADIjG,EAAQ0D,IACFo2F,EAAGA,EAAEwhQ,OAAQr1V,EAAQhC,MAAM7F,OAAQ4B,EAAQtJ,QAAQuN,SAEnD61F,EAAG7zF,EAAQmnO,IAAKptO,EAAQtJ,SAAUuN,OAE7CyiN,EAAKqq5B,qBAAsBtz/B,EAAShoH,IAAQwQ,EAC5C07P,EAAKz9P,KAAMu5G,EAAShoH,IACfm8mC,GAAe5xmC,EAAQy9G,QAASA,EAAShoH,KAC7CksQ,EAAKz9P,KAAMlE,EAAQy9G,QAASA,EAAShoH,IAGxC,CAaA,OAjCAuK,EAAU85F,EAAEsZ,OAAQ,CACnB18G,QAAS0Z,KAAK1Z,QACd+mH,QAASrtG,KAAKpQ,QAAQy9G,SAAW,CAAC,GAChCz9G,GAmBHoQ,KAAKgszB,IAAKp8zB,EAAQtJ,QAAS,CAC1B,OAAU,2BAGNsJ,EAAQvF,MACZk3mC,EAAoB3xmC,EAAQvF,KAAKrG,MAAO,SAAY,IAAI,GAEpD4L,EAAQ4rF,OACZ+lhC,EAAoB3xmC,EAAQ4rF,MAAMx3F,MAAO,SAAY,IAG/CutQ,EAAKrzP,KAAM,IACnB,EAEAujmC,uBAAwB,SAAUt1lC,GACjC,IAAImqM,EAAOt2M,KACX0pF,EAAE94E,KAAM0lM,EAAKqq5B,qBAAsB,SAAUn2mC,EAAK7E,IACN,IAAtC+jG,EAAE6rI,QAASppN,EAAMpe,OAAQpI,KAC7B2wN,EAAKqq5B,qBAAsBn2mC,GAAQk/F,EAAG/jG,EAAMq3O,IAAK7wN,EAAMpe,QAAS8F,OAElE,EACD,EAEAktmC,aAAc,SAAUz6mC,EAAS+D,EAAMmxF,GACtC,OAAOx7E,KAAKshmC,aAAch7mC,EAAS+D,EAAMmxF,GAAO,EACjD,EAEAkmhC,UAAW,SAAUp7mC,EAAS+D,EAAMmxF,GACnC,OAAOx7E,KAAKshmC,aAAch7mC,EAAS+D,EAAMmxF,GAAO,EACjD,EAEA8lhC,aAAc,SAAUh7mC,EAAS+D,EAAMmxF,EAAOloF,GAC7CA,EAAuB,kBAARA,EAAsBA,EAAMkoF,EAC3C,IAAItzC,EAA6B,iBAAZ5hD,GAAoC,OAAZA,EAC5CsJ,EAAU,CACT4rF,MAAOtzC,EAAQ79C,EAAOmxF,EACtBnxF,KAAM69C,EAAQ5hD,EAAU+D,EACxB/D,QAAS4hD,EAAQloC,KAAK1Z,QAAUA,EAChCgN,IAAKA,GAGP,OADA1D,EAAQtJ,QAAQk+Q,YAAaxkQ,KAAKk0T,SAAUtkU,GAAW0D,GAChD0M,IACR,EAEAgszB,IAAK,SAAU21S,EAAuBr7mC,EAASysjB,GAC9C,IAAI6ujB,EACAvsmC,EAAW2K,KAGuB,kBAA1B2hmC,IACX5ujB,EAAWzsjB,EACXA,EAAUq7mC,EACVA,GAAwB,GAInB5ujB,GAKLzsjB,EAAUs7mC,EAAkBl4gC,EAAGpjG,GAC/B0Z,KAAK0qG,SAAW1qG,KAAK0qG,SAASp3G,IAAKhN,KALnCysjB,EAAWzsjB,EACXA,EAAU0Z,KAAK1Z,QACfs7mC,EAAkB5hmC,KAAK6mW,UAMxBn9Q,EAAE94E,KAAMmiiB,EAAU,SAAU5miB,EAAO+xC,GAClC,SAAS2jjC,IAKR,GAAMF,IAC4B,IAA9BtsmC,EAASzF,QAAQo+C,WACnB07C,EAAG1pF,MAAOkqG,SAAU,qBAGtB,OAA4B,iBAAZhsD,EAAuB7oD,EAAU6oD,GAAYA,GAC3Dp9C,MAAOzL,EAAUlB,UACpB,CAGwB,iBAAZ+pD,IACX2jjC,EAAap56B,KAAOvqI,EAAQuqI,KAC3BvqI,EAAQuqI,MAAQo56B,EAAap56B,MAAQ/+F,EAAE++F,QAGzC,IAAIzkM,EAAQmoB,EAAMnoB,MAAO,sBACrB+wG,EAAY/wG,EAAO,GAAMqR,EAASormC,eAClC94+B,EAAW3jI,EAAO,GAEjB2jI,EACJi6+B,EAAgBj3/B,GAAI5V,EAAW4yB,EAAUk6+B,GAEzCv7mC,EAAQqkH,GAAI5V,EAAW8sgC,EAEzB,EACD,EAEAtssB,KAAM,SAAUjva,EAASyuG,GACxBA,GAAcA,GAAa,IAAK7zG,MAAO,KAAMgd,KAAM8B,KAAKygmC,eAAiB,KACxEzgmC,KAAKygmC,eACNn6mC,EAAQ2mI,IAAKl4B,GAAYk4B,IAAKl4B,GAG9B/0F,KAAK0qG,SAAWhhB,EAAG1pF,KAAK0qG,SAASsyH,IAAK12O,GAAUuN,OAChDmM,KAAKinhC,UAAYv97B,EAAG1pF,KAAKinhC,UAAUjqzB,IAAK12O,GAAUuN,OAClDmM,KAAK0gmC,UAAYh3gC,EAAG1pF,KAAK0gmC,UAAU1j4B,IAAK12O,GAAUuN,MACnD,EAEA4hlB,OAAQ,SAAUv3hB,EAASza,GAK1B,IAAIpuC,EAAW2K,KACf,OAAOyH,WALP,WACC,OAA4B,iBAAZy2C,EAAuB7oD,EAAU6oD,GAAYA,GAC3Dp9C,MAAOzL,EAAUlB,UACpB,EAEiCsvC,GAAS,EAC3C,EAEAq+jC,WAAY,SAAUx7mC,GACrB0Z,KAAK0gmC,UAAY1gmC,KAAK0gmC,UAAUptmC,IAAKhN,GACrC0Z,KAAKgszB,IAAK1l0B,EAAS,CAClBg3Q,WAAY,SAAUnxP,GACrBnM,KAAK0hmC,UAAWh4gC,EAAGv9E,EAAM+kU,eAAiB,KAAM,iBACjD,EACA7zE,WAAY,SAAUlxP,GACrBnM,KAAK+gmC,aAAcr3gC,EAAGv9E,EAAM+kU,eAAiB,KAAM,iBACpD,GAEF,EAEA6wxB,WAAY,SAAUz7mC,GACrB0Z,KAAKinhC,UAAYjnhC,KAAKinhC,UAAU3zhC,IAAKhN,GACrC0Z,KAAKgszB,IAAK1l0B,EAAS,CAClBk4+B,QAAS,SAAUry9B,GAClBnM,KAAK0hmC,UAAWh4gC,EAAGv9E,EAAM+kU,eAAiB,KAAM,iBACjD,EACA8wxB,SAAU,SAAU71lC,GACnBnM,KAAK+gmC,aAAcr3gC,EAAGv9E,EAAM+kU,eAAiB,KAAM,iBACpD,GAEF,EAEAg0mB,SAAU,SAAUl16B,EAAM7D,EAAOpW,GAChC,IAAIu8B,EAAMugB,EACN3jC,EAAWlP,KAAKpQ,QAASogB,GAc7B,GAZAja,EAAOA,GAAQ,CAAC,GAChBoW,EAAQu9E,EAAEi1a,MAAOxyf,IACX6D,MAASA,IAAShQ,KAAKigmC,kBAC5BjwlC,EACAhQ,KAAKigmC,kBAAoBjwlC,GAAO5nB,cAIjC+jB,EAAMpe,OAASiS,KAAK1Z,QAAS,GAG7BusD,EAAO1mC,EAAM2vgB,cAEZ,IAAMxpf,KAAQugB,EACLvgB,KAAQnmB,IACfA,EAAOmmB,GAASugB,EAAMvgB,IAMzB,OADAtyB,KAAK1Z,QAAQ6+D,QAASh5C,EAAOpW,KACnB2zF,EAAE72E,WAAY3D,KAC2C,IAAlEA,EAASpO,MAAOd,KAAK1Z,QAAS,GAAK,CAAE6lB,GAAQne,OAAQ+H,KACrDoW,EAAM42P,qBACR,GAGDr5K,EAAE94E,KAAM,CAAEg0B,KAAM,SAAUG,KAAM,WAAa,SAAUR,EAAQ09jC,GAC9Dv4gC,EAAEq9Q,OAAO3mW,UAAW,IAAMmkC,GAAW,SAAUj+C,EAASsJ,EAASsf,GAKhE,IAAIithC,EAJoB,iBAAZvsiC,IACXA,EAAU,CAAEsG,OAAQtG,IAIrB,IAAIsymC,EAActymC,GAEL,IAAZA,GAAuC,iBAAZA,EAC1BqymC,EACArymC,EAAQsG,QAAU+rmC,EAHnB19jC,EAMuB,iBADxB30C,EAAUA,GAAW,CAAC,KAErBA,EAAU,CAAEsV,SAAUtV,IAGvBusiC,GAAczy8B,EAAE483B,cAAe129B,GAC/BA,EAAQyyC,SAAWnzB,EAEdtf,EAAQ6zC,OACZn9C,EAAQm9C,MAAO7zC,EAAQ6zC,OAGnB04/B,GAAczy8B,EAAEpzE,SAAWozE,EAAEpzE,QAAQpgB,OAAQgsmC,GACjD57mC,EAASi+C,GAAU30C,GACRsymC,IAAe39jC,GAAUj+C,EAAS47mC,GAC7C57mC,EAAS47mC,GAActymC,EAAQsV,SAAUtV,EAAQ2zC,OAAQr0B,GAEzD5oB,EAAQs2H,MAAO,SAAU90H,GACxB4hG,EAAG1pF,MAAQukC,KACNr1B,GACJA,EAAS7O,KAAM/Z,EAAS,IAEzBwB,GACD,EAEF,CACD,GAEa4hG,EAAEm9Q,OAqBf,WACA,IAAIs7vB,EACHx4mC,EAAMnE,KAAKmE,IACX7D,EAAMN,KAAKM,IACXs8mC,EAAc,oBACdC,EAAY,oBACZC,EAAU,wBACVC,EAAY,OACZC,EAAW,KACX3+rB,EAAYn6U,EAAE50F,GAAGhM,SAElB,SAAS25mC,EAAY13mC,EAASrE,EAAOE,GACpC,MAAO,CACN+pB,WAAY5lB,EAAS,KAAUy3mC,EAAStgnC,KAAM6I,EAAS,IAAQrE,EAAQ,IAAM,GAC7EiqB,WAAY5lB,EAAS,KAAUy3mC,EAAStgnC,KAAM6I,EAAS,IAAQnE,EAAS,IAAM,GAEhF,CAEA,SAAS87mC,EAAUp8mC,EAASguB,GAC3B,OAAO6R,SAAUujE,EAAEvgG,IAAK7C,EAASguB,GAAY,KAAQ,CACtD,CAgCAo1E,EAAE5gG,SAAW,CACZuwkB,eAAgB,WACf,QAA8BvikB,IAAzBqrmC,EACJ,OAAOA,EAER,IAAI96kC,EAAID,EACPggM,EAAM19H,EAAG,2IAGTi5gC,EAAWv74B,EAAI5vG,WAAY,GAc5B,OAZA9tB,EAAG,QAAS6mC,OAAQ62F,GACpB//L,EAAKs7kC,EAASh8mC,YACdygO,EAAIj+N,IAAK,WAAY,UAIhBk+B,KAFLD,EAAKu7kC,EAASh8mC,eAGbygC,EAAKggM,EAAK,GAAIl7N,aAGfk7N,EAAIxkL,SAEKu/jC,EAAuB96kC,EAAKD,CACtC,EACAw7kC,cAAe,SAAUn5mC,GACxB,IAAI8D,EAAY9D,EAAOqsQ,UAAYrsQ,EAAOkrhB,WAAa,GACrDlrhB,EAAOnD,QAAQ6C,IAAK,cACrBqE,EAAY/D,EAAOqsQ,UAAYrsQ,EAAOkrhB,WAAa,GAClDlrhB,EAAOnD,QAAQ6C,IAAK,cACrB05mC,EAA6B,WAAdt1mC,GACE,SAAdA,GAAwB9D,EAAO/C,MAAQ+C,EAAOnD,QAAS,GAAIuI,YAG/D,MAAO,CACNnI,MAH6B,WAAd8G,GACE,SAAdA,GAAwB/D,EAAO7C,OAAS6C,EAAOnD,QAAS,GAAIwI,aAEzC46F,EAAE5gG,SAASuwkB,iBAAmB,EACpDzykB,OAAQi8mC,EAAen5gC,EAAE5gG,SAASuwkB,iBAAmB,EAEvD,EACAypiB,cAAe,SAAUx8mC,GACxB,IAAIy8mC,EAAgBr5gC,EAAGpjG,GAAWa,QACjC2uQ,EAAWpsK,EAAEosK,SAAUit2B,EAAe,IACtCpulB,IAAeoulB,EAAe,IAAuC,IAAhCA,EAAe,GAAIt6/B,SAEzD,MAAO,CACNniH,QAASy8mC,EACTjt2B,SAAUA,EACV6+Q,WAAYA,EACZ/vhB,OALakxQ,GAAa6+Q,EAKkB,CAAExqhB,KAAM,EAAGH,IAAK,GAAxC0/F,EAAGpjG,GAAU1B,SACjCmI,WAAYg2mC,EAAch2mC,aAC1BE,UAAW81mC,EAAc91mC,YACzBvG,MAAOq8mC,EAAcxijC,aACrB35D,OAAQm8mC,EAActijC,cAExB,GAGDipC,EAAE50F,GAAGhM,SAAW,SAAU8G,GACzB,IAAMA,IAAYA,EAAQojQ,GACzB,OAAO6wK,EAAU/ia,MAAOd,KAAM7L,WAI/BvE,EAAU85F,EAAEsZ,OAAQ,CAAC,EAAGpzG,GAExB,IAAIozmC,EAAU1x/B,EAAaD,EAAc7D,EAAcy1/B,EAAcvgxB,EACpE30V,EAAS27F,EAAG95F,EAAQojQ,IACpBvpQ,EAASigG,EAAE5gG,SAASg6mC,cAAelzmC,EAAQnG,QAC3Cy5mC,EAAax5gC,EAAE5gG,SAAS85mC,cAAen5mC,GACvC05mC,GAAcvzmC,EAAQuzmC,WAAa,QAASjinC,MAAO,KACnD6J,EAAU,CAAC,EAoEZ,OAlEA23V,EAtGD,SAAwBh/E,GACvB,IAAIn1N,EAAMm1N,EAAM,GAChB,OAAsB,IAAjBn1N,EAAIk6D,SACD,CACN/hH,MAAOg9Q,EAAKh9Q,QACZE,OAAQ88Q,EAAK98Q,SACbhC,OAAQ,CAAEoF,IAAK,EAAGG,KAAM,IAGrBu/F,EAAEosK,SAAUvnN,GACT,CACN7nD,MAAOg9Q,EAAKh9Q,QACZE,OAAQ88Q,EAAK98Q,SACbhC,OAAQ,CAAEoF,IAAK05Q,EAAKz2Q,YAAa9C,KAAMu5Q,EAAK32Q,eAGzCwhD,EAAIo+E,eACD,CACNjmI,MAAO,EACPE,OAAQ,EACRhC,OAAQ,CAAEoF,IAAKukD,EAAIu3Y,MAAO37b,KAAMokD,EAAIs3Y,QAG/B,CACNn/b,MAAOg9Q,EAAKnjN,aACZ35D,OAAQ88Q,EAAKjjN,cACb77D,OAAQ8+Q,EAAK9+Q,SAEf,CA0Ecw+mC,CAAer1mC,GACvBA,EAAQ,GAAI4+H,iBAGhB/8H,EAAQ8gY,GAAK,YAEdp/Q,EAAcoxO,EAAWh8V,MACzB2qH,EAAeqxO,EAAW97V,OAC1B4mH,EAAek1O,EAAW99V,OAG1Bq+mC,EAAev5gC,EAAEsZ,OAAQ,CAAC,EAAGwK,GAI7B9jB,EAAE94E,KAAM,CAAE,KAAM,MAAQ,WACvB,IACCyylC,EACAC,EAFG/wlC,GAAQ3iB,EAASoQ,OAAU,IAAK9e,MAAO,KAIvB,IAAfqxB,EAAIne,SACRme,EAAM6vlC,EAAYlgnC,KAAMqwB,EAAK,IAC5BA,EAAIvkB,OAAQ,CAAE,WACdq0mC,EAAUngnC,KAAMqwB,EAAK,IACpB,CAAE,UAAWvkB,OAAQukB,GACrB,CAAE,SAAU,WAEfA,EAAK,GAAM6vlC,EAAYlgnC,KAAMqwB,EAAK,IAAQA,EAAK,GAAM,SACrDA,EAAK,GAAM8vlC,EAAUngnC,KAAMqwB,EAAK,IAAQA,EAAK,GAAM,SAGnD8wlC,EAAmBf,EAAQj9kC,KAAM9S,EAAK,IACtC+wlC,EAAiBhB,EAAQj9kC,KAAM9S,EAAK,IACpCxnB,EAASiV,MAAS,CACjBqjmC,EAAmBA,EAAkB,GAAM,EAC3CC,EAAiBA,EAAgB,GAAM,GAIxC1zmC,EAASoQ,MAAS,CACjBuimC,EAAUl9kC,KAAM9S,EAAK,IAAO,GAC5BgwlC,EAAUl9kC,KAAM9S,EAAK,IAAO,GAE9B,GAG0B,IAArB4wlC,EAAU/umC,SACd+umC,EAAW,GAAMA,EAAW,IAGJ,UAApBvzmC,EAAQ8gY,GAAI,GAChBuyuB,EAAa94mC,MAAQmnH,EACU,WAApB1hH,EAAQ8gY,GAAI,KACvBuyuB,EAAa94mC,MAAQmnH,EAAc,GAGX,WAApB1hH,EAAQ8gY,GAAI,GAChBuyuB,EAAaj5mC,KAAOqnH,EACW,WAApBzhH,EAAQ8gY,GAAI,KACvBuyuB,EAAaj5mC,KAAOqnH,EAAe,GAGpC2x/B,EAAWP,EAAY13mC,EAAQ2lY,GAAIp/Q,EAAaD,GAChD4x/B,EAAa94mC,MAAQ64mC,EAAU,GAC/BC,EAAaj5mC,KAAOg5mC,EAAU,GAEvBhjmC,KAAK4Q,KAAM,WACjB,IAAI2ylC,EAAmBz+H,EACtBphuB,EAAOh6K,EAAG1pF,MACVwjmC,EAAY9/1B,EAAKnjN,aACjBkjjC,EAAa//1B,EAAKjjN,cAClB03K,EAAauq4B,EAAU1imC,KAAM,cAC7Bg4N,EAAY0q4B,EAAU1imC,KAAM,aAC5B0jmC,EAAiBF,EAAYrr4B,EAAauq4B,EAAU1imC,KAAM,eACzDkjmC,EAAWx8mC,MACZi9mC,EAAkBF,EAAazr4B,EAAY0q4B,EAAU1imC,KAAM,gBAC1DkjmC,EAAWt8mC,OACZkC,EAAW4gG,EAAEsZ,OAAQ,CAAC,EAAGiggC,GACzBW,EAAWnB,EAAY13mC,EAAQ6lmB,GAAIltV,EAAKnjN,aAAcmjN,EAAKjjN,eAEnC,UAApB7wD,EAAQghmB,GAAI,GAChB9nmB,EAASqB,MAAQq5mC,EACc,WAApB5zmC,EAAQghmB,GAAI,KACvB9nmB,EAASqB,MAAQq5mC,EAAY,GAGL,WAApB5zmC,EAAQghmB,GAAI,GAChB9nmB,EAASkB,KAAOy5mC,EACe,WAApB7zmC,EAAQghmB,GAAI,KACvB9nmB,EAASkB,KAAOy5mC,EAAa,GAG9B36mC,EAASqB,MAAQy5mC,EAAU,GAC3B96mC,EAASkB,KAAO45mC,EAAU,GAE1BL,EAAoB,CACnBpr4B,WAAYA,EACZH,UAAWA,GAGZtuI,EAAE94E,KAAM,CAAE,OAAQ,OAAS,SAAUvrB,EAAG0iF,GAClC2hB,EAAE8gT,GAAG1hZ,SAAUq6mC,EAAW99mC,KAC9BqkG,EAAE8gT,GAAG1hZ,SAAUq6mC,EAAW99mC,IAAO0iF,GAAOj/E,EAAU,CACjDwoH,YAAaA,EACbD,aAAcA,EACdmy/B,UAAWA,EACXC,WAAYA,EACZF,kBAAmBA,EACnBG,eAAgBA,EAChBC,gBAAiBA,EACjB/+mC,OAAQ,CAAEo+mC,EAAU,GAAMY,EAAU,GAAKZ,EAAW,GAAMY,EAAU,IACpEhzgB,GAAIhhmB,EAAQghmB,GACZlgO,GAAI9gY,EAAQ8gY,GACZjnY,OAAQA,EACRi6Q,KAAMA,GAGT,GAEK9zQ,EAAQk1+B,QAGZA,EAAQ,SAAU1y8B,GACjB,IAAIjoC,EAAOqjH,EAAarjH,KAAOrB,EAASqB,KACvCF,EAAQE,EAAOmnH,EAAcky/B,EAC7Bx5mC,EAAMwjH,EAAaxjH,IAAMlB,EAASkB,IAClCE,EAASF,EAAMqnH,EAAeoy/B,EAC9BtsM,EAAW,CACVpp6B,OAAQ,CACPzH,QAASyH,EACT5D,KAAMqjH,EAAarjH,KACnBH,IAAKwjH,EAAaxjH,IAClBtD,MAAO4qH,EACP1qH,OAAQyqH,GAET/qH,QAAS,CACRA,QAASo9Q,EACTv5Q,KAAMrB,EAASqB,KACfH,IAAKlB,EAASkB,IACdtD,MAAO88mC,EACP58mC,OAAQ68mC,GAEThxjC,WAAYxoD,EAAQ,EAAI,OAASE,EAAO,EAAI,QAAU,SACtDw4D,SAAUz4D,EAAS,EAAI,MAAQF,EAAM,EAAI,SAAW,UAEjDsnH,EAAcky/B,GAAa19mC,EAAKqE,EAAOF,GAAUqnH,IACrD6lzB,EAAS1k3B,WAAa,UAElB4+D,EAAeoy/B,GAAc39mC,EAAKkE,EAAME,GAAWmnH,IACvD8lzB,EAASx02B,SAAW,UAEhBh5D,EAAK7D,EAAKqE,GAAQrE,EAAKmE,IAAYN,EAAK7D,EAAKkE,GAAOlE,EAAKoE,IAC7Dit6B,EAAS0sM,UAAY,aAErB1sM,EAAS0sM,UAAY,WAEtBj0mC,EAAQk1+B,MAAMzk+B,KAAML,KAAMoyB,EAAO+k4B,EAClC,GAGDzzpB,EAAK9+Q,OAAQ8kG,EAAEsZ,OAAQl6G,EAAU,CAAEg8+B,MAAOA,IAC3C,EACD,EAEAp74B,EAAE8gT,GAAG1hZ,SAAW,CACfomE,IAAK,CACJ/kE,KAAM,SAAUrB,EAAUiN,GACzB,IAMC+tmC,EANGr6mC,EAASsM,EAAKtM,OACjBs6mC,EAAet6mC,EAAOqsQ,SAAWrsQ,EAAOsD,WAAatD,EAAO7E,OAAOuF,KACnEo2D,EAAa92D,EAAO/C,MACpBs9mC,EAAmBl7mC,EAASqB,KAAO4L,EAAKwtmC,kBAAkBpr4B,WAC1D8r4B,EAAWF,EAAeC,EAC1BE,EAAYF,EAAmBjumC,EAAK2tmC,eAAiBnjjC,EAAawjjC,EAI9DhumC,EAAK2tmC,eAAiBnjjC,EAGrB0jjC,EAAW,GAAKC,GAAa,GACjCJ,EAAeh7mC,EAASqB,KAAO85mC,EAAWlumC,EAAK2tmC,eAAiBnjjC,EAC/DwjjC,EACDj7mC,EAASqB,MAAQ85mC,EAAWH,GAI5Bh7mC,EAASqB,KADE+5mC,EAAY,GAAKD,GAAY,EACxBF,EAIXE,EAAWC,EACCH,EAAexjjC,EAAaxqD,EAAK2tmC,eAEjCK,EAKPE,EAAW,EACtBn7mC,EAASqB,MAAQ85mC,EAGNC,EAAY,EACvBp7mC,EAASqB,MAAQ+5mC,EAIjBp7mC,EAASqB,KAAOR,EAAKb,EAASqB,KAAO65mC,EAAkBl7mC,EAASqB,KAElE,EACAH,IAAK,SAAUlB,EAAUiN,GACxB,IAMCoumC,EANG16mC,EAASsM,EAAKtM,OACjBs6mC,EAAet6mC,EAAOqsQ,SAAWrsQ,EAAOwD,UAAYxD,EAAO7E,OAAOoF,IAClEy2D,EAAc1qD,EAAKtM,OAAO7C,OAC1Bw9mC,EAAkBt7mC,EAASkB,IAAM+L,EAAKwtmC,kBAAkBvr4B,UACxDqs4B,EAAUN,EAAeK,EACzBE,EAAaF,EAAkBrumC,EAAK4tmC,gBAAkBljjC,EAAcsjjC,EAIhEhumC,EAAK4tmC,gBAAkBljjC,EAGtB4jjC,EAAU,GAAKC,GAAc,GACjCH,EAAgBr7mC,EAASkB,IAAMq6mC,EAAUtumC,EAAK4tmC,gBAAkBljjC,EAC/DsjjC,EACDj7mC,EAASkB,KAAOq6mC,EAAUF,GAI1Br7mC,EAASkB,IADEs6mC,EAAa,GAAKD,GAAW,EACzBN,EAIVM,EAAUC,EACCP,EAAetjjC,EAAc1qD,EAAK4tmC,gBAElCI,EAKNM,EAAU,EACrBv7mC,EAASkB,KAAOq6mC,EAGLC,EAAa,EACxBx7mC,EAASkB,KAAOs6mC,EAIhBx7mC,EAASkB,IAAML,EAAKb,EAASkB,IAAMo6mC,EAAiBt7mC,EAASkB,IAE/D,GAEDqlC,KAAM,CACLllC,KAAM,SAAUrB,EAAUiN,GACzB,IAkBC+tmC,EACAS,EAnBG96mC,EAASsM,EAAKtM,OACjBs6mC,EAAet6mC,EAAO7E,OAAOuF,KAAOV,EAAOsD,WAC3CwzD,EAAa92D,EAAO/C,MACpBF,EAAaiD,EAAOqsQ,SAAWrsQ,EAAOsD,WAAatD,EAAO7E,OAAOuF,KACjE65mC,EAAmBl7mC,EAASqB,KAAO4L,EAAKwtmC,kBAAkBpr4B,WAC1D8r4B,EAAWD,EAAmBx9mC,EAC9B09mC,EAAYF,EAAmBjumC,EAAK2tmC,eAAiBnjjC,EAAa/5D,EAClEo9mC,EAA4B,SAAjB7tmC,EAAK66lB,GAAI,IAClB76lB,EAAKytmC,UACW,UAAjBztmC,EAAK66lB,GAAI,GACR76lB,EAAKytmC,UACL,EACFR,EAA4B,SAAjBjtmC,EAAK26X,GAAI,GACnB36X,EAAKu7G,YACY,UAAjBv7G,EAAK26X,GAAI,IACP36X,EAAKu7G,YACN,EACF1sH,GAAU,EAAImR,EAAKnR,OAAQ,GAIvBq/mC,EAAW,IACfH,EAAeh7mC,EAASqB,KAAOy5mC,EAAWZ,EAAWp+mC,EAASmR,EAAK2tmC,eAClEnjjC,EAAawjjC,GACM,GAAKD,EAAeh+mC,EAAKm+mC,MAC5Cn7mC,EAASqB,MAAQy5mC,EAAWZ,EAAWp+mC,GAE7Bs/mC,EAAY,KACvBK,EAAcz7mC,EAASqB,KAAO4L,EAAKwtmC,kBAAkBpr4B,WAAayr4B,EACjEZ,EAAWp+mC,EAAS4B,GACF,GAAKV,EAAKy+mC,GAAgBL,KAC5Cp7mC,EAASqB,MAAQy5mC,EAAWZ,EAAWp+mC,EAG1C,EACAoF,IAAK,SAAUlB,EAAUiN,GACxB,IAmBCyumC,EACAL,EApBG16mC,EAASsM,EAAKtM,OACjBs6mC,EAAet6mC,EAAO7E,OAAOoF,IAAMP,EAAOwD,UAC1CwzD,EAAch3D,EAAO7C,OACrBH,EAAYgD,EAAOqsQ,SAAWrsQ,EAAOwD,UAAYxD,EAAO7E,OAAOoF,IAC/Do6mC,EAAkBt7mC,EAASkB,IAAM+L,EAAKwtmC,kBAAkBvr4B,UACxDqs4B,EAAUD,EAAkB39mC,EAC5B69mC,EAAaF,EAAkBrumC,EAAK4tmC,gBAAkBljjC,EAAch6D,EAEpEm9mC,EADuB,QAAjB7tmC,EAAK66lB,GAAI,IAEb76lB,EAAK0tmC,WACW,WAAjB1tmC,EAAK66lB,GAAI,GACR76lB,EAAK0tmC,WACL,EACFT,EAA4B,QAAjBjtmC,EAAK26X,GAAI,GACnB36X,EAAKs7G,aACY,WAAjBt7G,EAAK26X,GAAI,IACP36X,EAAKs7G,aACN,EACFzsH,GAAU,EAAImR,EAAKnR,OAAQ,GAGvBy/mC,EAAU,IACdF,EAAgBr7mC,EAASkB,IAAM45mC,EAAWZ,EAAWp+mC,EAASmR,EAAK4tmC,gBAClEljjC,EAAcsjjC,GACM,GAAKI,EAAgBr+mC,EAAKu+mC,MAC9Cv7mC,EAASkB,KAAO45mC,EAAWZ,EAAWp+mC,GAE5B0/mC,EAAa,KACxBE,EAAa17mC,EAASkB,IAAM+L,EAAKwtmC,kBAAkBvr4B,UAAY4r4B,EAAWZ,EACzEp+mC,EAAS6B,GACQ,GAAKX,EAAK0+mC,GAAeF,KAC1Cx7mC,EAASkB,KAAO45mC,EAAWZ,EAAWp+mC,EAGzC,GAED6/mC,QAAS,CACRt6mC,KAAM,WACLu/F,EAAE8gT,GAAG1hZ,SAASumC,KAAKllC,KAAK2W,MAAOd,KAAM7L,WACrCu1F,EAAE8gT,GAAG1hZ,SAASomE,IAAI/kE,KAAK2W,MAAOd,KAAM7L,UACrC,EACAnK,IAAK,WACJ0/F,EAAE8gT,GAAG1hZ,SAASumC,KAAKrlC,IAAI8W,MAAOd,KAAM7L,WACpCu1F,EAAE8gT,GAAG1hZ,SAASomE,IAAIllE,IAAI8W,MAAOd,KAAM7L,UACpC,GAIA,CAjdF,GAmdeu1F,EAAE8gT,GAAG1hZ,SAkBT4gG,EAAEsZ,OAAQtZ,EAAE0uM,KAAM,KAAO,CACnCriS,KAAM2zF,EAAE0uM,KAAKkzrB,aACZ5h4B,EAAE0uM,KAAKkzrB,aAAc,SAAUv1sB,GAC9B,OAAO,SAAUrS,GAChB,QAASh6K,EAAE3zF,KAAM2tQ,EAAMqS,EACxB,CACD,GAGA,SAAUrS,EAAMr+Q,EAAGrB,GAClB,QAAS0lG,EAAE3zF,KAAM2tQ,EAAM1/Q,EAAO,GAC/B,IAoBqB0lG,EAAE50F,GAAGkuG,OAAQ,CACnC0hgC,kBACKpg3B,EAAY,kBAAmB77P,SAASskB,cAAe,OAC1D,cACA,YAEM,WACN,OAAO/M,KAAK2qG,GAAI25I,EAAY,uBAAwB,SAAUn4O,GAC7DA,EAAMwgH,gBACP,EACD,GAGDg4+B,gBAAiB,WAChB,OAAO3kmC,KAAKitH,IAAK,uBAClB,IAhED,IAmDMq3H,EA0jDFsg3B,EAu3CEx6Z,EAzIDy6Z,EApwFDC,EAAY,cACfC,EAAiB,mBACjBC,EAAoB,sBAIpBrv2B,EAASjsK,EAEVA,EAAEpzE,QAAU,CACXpgB,OAAQ,CAAC,GAaV,SAAYy/P,EAAQ7+P,GAEnB,IAwHA2tC,EApHAwgkC,EAAc,0BAGdC,EAAgB,CAAE,CAChB9u9B,GAAI,sFACJh+G,MAAO,SAAU+skC,GAChB,MAAO,CACNA,EAAY,GACZA,EAAY,GACZA,EAAY,GACZA,EAAY,GAEd,GACE,CACF/u9B,GAAI,8GACJh+G,MAAO,SAAU+skC,GAChB,MAAO,CACY,KAAlBA,EAAY,GACM,KAAlBA,EAAY,GACM,KAAlBA,EAAY,GACZA,EAAY,GAEd,GACE,CAGF/u9B,GAAI,2CACJh+G,MAAO,SAAU+skC,GAChB,MAAO,CACNh/kC,SAAUg/kC,EAAY,GAAK,IAC3Bh/kC,SAAUg/kC,EAAY,GAAK,IAC3Bh/kC,SAAUg/kC,EAAY,GAAK,IAE7B,GACE,CAGF/u9B,GAAI,kCACJh+G,MAAO,SAAU+skC,GAChB,MAAO,CACNh/kC,SAAUg/kC,EAAY,GAAMA,EAAY,GAAK,IAC7Ch/kC,SAAUg/kC,EAAY,GAAMA,EAAY,GAAK,IAC7Ch/kC,SAAUg/kC,EAAY,GAAMA,EAAY,GAAK,IAE/C,GACE,CACF/u9B,GAAI,4GACJ3yB,MAAO,OACPrrF,MAAO,SAAU+skC,GAChB,MAAO,CACNA,EAAY,GACZA,EAAY,GAAM,IAClBA,EAAY,GAAM,IAClBA,EAAY,GAEd,IAIFn+kC,EAAQ2uO,EAAO/vO,MAAQ,SAAUoB,EAAO++X,EAAO1C,EAAMx8X,GACpD,OAAO,IAAI8uO,EAAO/vO,MAAM9wB,GAAGsjC,MAAOpR,EAAO++X,EAAO1C,EAAMx8X,EACvD,EACAotvB,EAAS,CACRj+hB,KAAM,CACL5jN,MAAO,CACNo+K,IAAK,CACJp+L,IAAK,EACLpC,KAAM,QAEP+1Y,MAAO,CACN3zY,IAAK,EACLpC,KAAM,QAEPqzY,KAAM,CACLjxY,IAAK,EACLpC,KAAM,UAKTo1lC,KAAM,CACLhzkC,MAAO,CACNjY,IAAK,CACJ/H,IAAK,EACLpC,KAAM,WAEPuqZ,WAAY,CACXnoZ,IAAK,EACLpC,KAAM,WAEPq1lC,UAAW,CACVjzlC,IAAK,EACLpC,KAAM,cAKV0pM,EAAY,CACX,KAAQ,CACP1zN,OAAO,EACP2D,IAAK,KAEN,QAAW,CACVA,IAAK,GAEN,QAAW,CACVg1W,IAAK,IACL34W,OAAO,IAGT2tY,EAAU3sW,EAAM2sW,QAAU,CAAC,EAG3B2xuB,EAAc3v2B,EAAQ,OAAS,GAM/B/kP,EAAO+kP,EAAO/kP,KAiBf,SAASs5W,EAAOvkY,EAAO2sC,EAAMizkC,GAC5B,IAAIv1lC,EAAO0pM,EAAWpnL,EAAKtiB,OAAU,CAAC,EAEtC,OAAc,MAATrqB,EACK4/mC,IAAejzkC,EAAKyyF,IAAQ,KAAOzyF,EAAKyyF,KAIlDp/H,EAAQqqB,EAAKhqB,QAAUL,EAAQgrB,WAAYhrB,GAItCI,MAAOJ,GACJ2sC,EAAKyyF,IAGR/0G,EAAK2uV,KAIAh5W,EAAQqqB,EAAK2uV,KAAQ3uV,EAAK2uV,IAI7B,EAAIh5W,EAAQ,EAAIqqB,EAAKrmB,IAAMhE,EAAQqqB,EAAKrmB,IAAMhE,EACtD,CAEA,SAAS6/mC,EAAa1hnC,GACrB,IAAI2hnC,EAAOz+kC,IACVgvN,EAAOyv3B,EAAKC,MAAQ,GAwBrB,OAtBA5hnC,EAASA,EAAOsE,cAEhBwoB,EAAMs0lC,EAAe,SAAU7/mC,EAAGy4F,GACjC,IAAI3lD,EACHn0C,EAAQ85F,EAAOs4D,GAAG/wH,KAAMvhC,GACxB8kC,EAAS5kC,GAAS85F,EAAO1lD,MAAOp0C,GAChC2hnC,EAAY7nhC,EAAO2lC,OAAS,OAE7B,GAAK76F,EASJ,OARAuP,EAASstkC,EAAME,GAAa/8kC,GAI5B68kC,EAAMxxV,EAAQ0xV,GAAYp5kC,OAAU4L,EAAQ87uB,EAAQ0xV,GAAYp5kC,OAChEypN,EAAOyv3B,EAAKC,MAAQvtkC,EAAOutkC,OAGpB,CAET,GAGK1v3B,EAAK5hP,QAIY,YAAhB4hP,EAAK93O,QACTy3P,EAAO3yJ,OAAQgzI,EAAMvxM,EAAOpe,aAEtBo/kC,GAIDhhkC,EAAQ3gD,EAChB,CAwNA,SAAS8hnC,EAASzlmC,EAAG0pF,EAAGxmG,GAEvB,OAAS,GADTA,GAAMA,EAAI,GAAM,GACH,EACL8c,GAAM0pF,EAAI1pF,GAAM9c,EAAI,EAEnB,EAAJA,EAAQ,EACLwmG,EAEC,EAAJxmG,EAAQ,EACL8c,GAAM0pF,EAAI1pF,IAAU,EAAI,EAAM9c,GAAM,EAErC8c,CACR,CAnTAmlmC,EAAY57kC,MAAMsgG,QAAU,kCAC5B2pQ,EAAQ39I,KAAOsv3B,EAAY57kC,MAAMV,gBAAgBzgC,QAAS,SAAY,EAItEqoB,EAAMqjwB,EAAQ,SAAU0xV,EAAWli/B,GAClCA,EAAMl3F,MAAQ,IAAMo5kC,EACpBli/B,EAAMrxF,MAAMvL,MAAQ,CACnBzU,IAAK,EACLpC,KAAM,UACN+0G,IAAK,EAEP,GAqEA/9F,EAAMlyB,GAAK6gQ,EAAO3yJ,OAAQh8E,EAAM5mB,UAAW,CAC1Cg4B,MAAO,SAAUo4K,EAAKu1M,EAAO1C,EAAMx8X,GAClC,GAAK2pL,IAAQ15M,EAEZ,OADAkJ,KAAK0lmC,MAAQ,CAAE,KAAM,KAAM,KAAM,MAC1B1lmC,MAEHwwM,EAAI7iG,QAAU6iG,EAAI/nG,YACtB+nG,EAAMmlD,EAAQnlD,GAAMrnN,IAAK48Z,GACzBA,EAAQjvZ,GAGT,IAAI2umC,EAAOzlmC,KACVgQ,EAAO2lP,EAAO3lP,KAAMwgM,GACpBwlC,EAAOh2O,KAAK0lmC,MAAQ,GAQrB,OALK3/sB,IAAUjvZ,IACd05M,EAAM,CAAEA,EAAKu1M,EAAO1C,EAAMx8X,GAC1B7W,EAAO,SAGM,WAATA,EACGhQ,KAAKo4B,MAAOotkC,EAAah15B,IAAS/rK,EAAOi7E,UAGnC,UAAT1vG,GACJY,EAAMqjwB,EAAOj+hB,KAAK5jN,MAAO,SAAU5nC,EAAK8nC,GACvC0jN,EAAM1jN,EAAKlgB,KAAQ83W,EAAO15K,EAAKl+K,EAAKlgB,KAAOkgB,EAC5C,GACOtyB,MAGM,WAATgQ,GAEHY,EAAMqjwB,EADFzjkB,aAAexpL,EACL,SAAU2+kC,EAAWli/B,GAC7B+sF,EAAK/sF,EAAMl3F,SACfk5kC,EAAMhi/B,EAAMl3F,OAAUikL,EAAK/sF,EAAMl3F,OAAQzxB,QAE3C,EAEc,SAAU6qmC,EAAWli/B,GAClC,IAAIl3F,EAAQk3F,EAAMl3F,MAClB3b,EAAM6yG,EAAMrxF,MAAO,SAAU5nC,EAAK8nC,GAGjC,IAAMmzkC,EAAMl5kC,IAAWk3F,EAAM7+F,GAAK,CAIjC,GAAa,UAARp6B,GAAiC,MAAdgmN,EAAKhmN,GAC5B,OAEDi7mC,EAAMl5kC,GAAUk3F,EAAM7+F,GAAI6glC,EAAKC,MAChC,CAIAD,EAAMl5kC,GAAS+F,EAAKlgB,KAAQ83W,EAAO15K,EAAKhmN,GAAO8nC,GAAM,EACtD,GAGKmzkC,EAAMl5kC,IACTopO,EAAOpgC,QAAS,KAAMkw4B,EAAMl5kC,GAAQzxB,MAAO,EAAG,IAAQ,IAGvD2qmC,EAAMl5kC,GAAS,GAAM,EAChBk3F,EAAM5+F,OACV4glC,EAAKC,MAAQji/B,EAAM5+F,KAAM4glC,EAAMl5kC,KAGlC,GAEMvsB,WAxCR,CA0CD,EACAilH,GAAI,SAAUvlF,GACb,IAAIulF,EAAKj+F,EAAO0Y,GACfkhB,GAAO,EACP6kjC,EAAOzlmC,KAgBR,OAdA4Q,EAAMqjwB,EAAQ,SAAUrywB,EAAG6hH,GAC1B,IAAIoi/B,EACHjxsB,EAAU3vS,EAAIxB,EAAMl3F,OAUrB,OATKqoY,IACJixsB,EAAaJ,EAAMhi/B,EAAMl3F,QAAWk3F,EAAM7+F,IAAM6+F,EAAM7+F,GAAI6glC,EAAKC,QAAW,GAC1E90lC,EAAM6yG,EAAMrxF,MAAO,SAAUxwB,EAAG0wB,GAC/B,GAA4B,MAAvBsiY,EAAStiY,EAAKlgB,KAElB,OADAwuC,EAASg0W,EAAStiY,EAAKlgB,OAAUyzlC,EAAYvzkC,EAAKlgB,IAGpD,IAEMwuC,CACR,GACOA,CACR,EACAkljC,OAAQ,WACP,IAAIC,EAAO,GACVN,EAAOzlmC,KAMR,OALA4Q,EAAMqjwB,EAAQ,SAAU0xV,EAAWli/B,GAC7Bgi/B,EAAMhi/B,EAAMl3F,QAChBw5kC,EAAKjymC,KAAM6xmC,EAEb,GACOI,EAAK1jmC,KACb,EACA6sC,WAAY,SAAU2R,EAAOtoD,GAC5B,IAAI7L,EAAMs6B,EAAO65B,GAChB8kjC,EAAYj5mC,EAAIo5mC,SAChBri/B,EAAQwwpB,EAAQ0xV,GAChBK,EAA8B,IAAjBhmmC,KAAK6mB,QAAgBG,EAAO,eAAkBhnB,KAC3DvT,EAAQu5mC,EAAYvi/B,EAAMl3F,QAAWk3F,EAAM7+F,GAAIohlC,EAAWN,OAC1DvymC,EAAS1G,EAAMqO,QA4BhB,OA1BApO,EAAMA,EAAK+2H,EAAMl3F,OACjB3b,EAAM6yG,EAAMrxF,MAAO,SAAU5nC,EAAK8nC,GACjC,IAAI97B,EAAQ87B,EAAKlgB,IAChBy/B,EAAaplD,EAAO+J,GACpBs7C,EAAWplD,EAAK8J,GAChBwZ,EAAO0pM,EAAWpnL,EAAKtiB,OAAU,CAAC,EAGjB,OAAb8hC,IAKe,OAAfD,EACJ1+C,EAAQqD,GAAUs7C,GAEb9hC,EAAK2uV,MACJ7sT,EAAWD,EAAa7hC,EAAK2uV,IAAM,EACvC9sT,GAAc7hC,EAAK2uV,IACR9sT,EAAaC,EAAW9hC,EAAK2uV,IAAM,IAC9C9sT,GAAc7hC,EAAK2uV,MAGrBxrW,EAAQqD,GAAU0zX,GAASp4U,EAAWD,GAAet5C,EAAWs5C,EAAYvf,IAE9E,GACOtyB,KAAM2lmC,GAAaxymC,EAC3B,EACAuhP,MAAO,SAAUux3B,GAGhB,GAAyB,IAApBjmmC,KAAK0lmC,MAAO,GAChB,OAAO1lmC,KAGR,IAAI6Z,EAAM7Z,KAAK0lmC,MAAM5qmC,QACpBlB,EAAIigB,EAAIxX,MACRqyO,EAAQ1tN,EAAOi/kC,GAASP,MAEzB,OAAO1+kC,EAAO2uO,EAAO5iQ,IAAK8mB,EAAK,SAAU1X,EAAG9c,GAC3C,OAAS,EAAIuU,GAAM86O,EAAOrvP,GAAMuU,EAAIuI,CACrC,GACD,EACA+jmC,aAAc,WACb,IAAIhxkC,EAAS,QACZ8gN,EAAO2f,EAAO5iQ,IAAKiN,KAAK0lmC,MAAO,SAAUvjmC,EAAG9c,GAC3C,OAAY,MAAL8c,EAAc9c,EAAI,EAAI,EAAI,EAAM8c,CACxC,GAOD,OALmB,IAAd6zO,EAAM,KACVA,EAAK3zO,MACL6yB,EAAS,QAGHA,EAAS8gN,EAAK93O,OAAS,GAC/B,EACAiomC,aAAc,WACb,IAAIjxkC,EAAS,QACZkwkC,EAAOzv2B,EAAO5iQ,IAAKiN,KAAKolmC,OAAQ,SAAUjjmC,EAAG9c,GAS5C,OARU,MAAL8c,IACJA,EAAI9c,EAAI,EAAI,EAAI,GAIZA,GAAKA,EAAI,IACb8c,EAAI3c,KAAK+F,MAAW,IAAJ4W,GAAY,KAEtBA,CACR,GAMD,OAJmB,IAAdijmC,EAAM,KACVA,EAAK/imC,MACL6yB,EAAS,QAEHA,EAASkwkC,EAAKlnmC,OAAS,GAC/B,EACAkomC,YAAa,SAAUC,GACtB,IAAIrw3B,EAAOh2O,KAAK0lmC,MAAM5qmC,QACrB+rB,EAAQmvN,EAAK3zO,MAMd,OAJKgkmC,GACJrw3B,EAAKliP,QAAkB,IAAR+yB,IAGT,IAAM8uO,EAAO5iQ,IAAKijP,EAAM,SAAU7zO,GAIxC,OAAoB,KADpBA,GAAMA,GAAK,GAAInb,SAAU,KAChBoN,OAAe,IAAM+N,EAAIA,CACnC,GAAIjE,KAAM,GACX,EACAlX,SAAU,WACT,OAA2B,IAApBgZ,KAAK0lmC,MAAO,GAAY,cAAgB1lmC,KAAKkmmC,cACrD,IAEDl/kC,EAAMlyB,GAAGsjC,MAAMh4B,UAAY4mB,EAAMlyB,GAmBjCm/wB,EAAOmxV,KAAKxglC,GAAK,SAAUoxN,GAC1B,GAAkB,MAAbA,EAAM,IAA4B,MAAbA,EAAM,IAA4B,MAAbA,EAAM,GACpD,MAAO,CAAE,KAAM,KAAM,KAAMA,EAAM,IAElC,IASC3yP,EAAGJ,EATA82B,EAAIi8N,EAAM,GAAM,IACnBr0O,EAAIq0O,EAAM,GAAM,IAChBn8O,EAAIm8O,EAAM,GAAM,IAChBp8O,EAAIo8O,EAAM,GACVrsP,EAAMnE,KAAKmE,IAAKowB,EAAGpY,EAAG9H,GACtBnQ,EAAMlE,KAAKkE,IAAKqwB,EAAGpY,EAAG9H,GACtBwjD,EAAO1zD,EAAMD,EACb4J,EAAM3J,EAAMD,EACZ8uB,EAAU,GAANllB,EAsBL,OAlBCjQ,EADIqG,IAAQC,EACR,EACOowB,IAAMpwB,EACX,IAAOgY,EAAI9H,GAAMwjD,EAAS,IACrB17C,IAAMhY,EACX,IAAOkQ,EAAIkgB,GAAMsjC,EAAS,IAE1B,IAAOtjC,EAAIpY,GAAM07C,EAAS,IAMhCp6D,EADa,IAATo6D,EACA,EACO7kC,GAAK,GACZ6kC,EAAO/pD,EAEP+pD,GAAS,EAAI/pD,GAEX,CAAE9N,KAAK+F,MAAOlI,GAAM,IAAKJ,EAAGu1B,EAAQ,MAAL5e,EAAY,EAAIA,EACvD,EAEAq6wB,EAAOmxV,KAAKvglC,KAAO,SAAUuglC,GAC5B,GAAkB,MAAbA,EAAM,IAA4B,MAAbA,EAAM,IAA4B,MAAbA,EAAM,GACpD,MAAO,CAAE,KAAM,KAAM,KAAMA,EAAM,IAElC,IAAI/hnC,EAAI+hnC,EAAM,GAAM,IACnBninC,EAAIminC,EAAM,GACV5slC,EAAI4slC,EAAM,GACVxrmC,EAAIwrmC,EAAM,GACVv7gC,EAAIrxE,GAAK,GAAMA,GAAM,EAAIv1B,GAAMu1B,EAAIv1B,EAAIu1B,EAAIv1B,EAC3Ckd,EAAI,EAAIqY,EAAIqxE,EAEb,MAAO,CACNrkG,KAAK+F,MAAwC,IAAjCq6mC,EAASzlmC,EAAG0pF,EAAGxmG,EAAM,EAAI,IACrCmC,KAAK+F,MAA4B,IAArBq6mC,EAASzlmC,EAAG0pF,EAAGxmG,IAC3BmC,KAAK+F,MAAwC,IAAjCq6mC,EAASzlmC,EAAG0pF,EAAGxmG,EAAM,EAAI,IACrCuW,EAEF,EAEAgX,EAAMqjwB,EAAQ,SAAU0xV,EAAWli/B,GAClC,IAAIrxF,EAAQqxF,EAAMrxF,MACjB7F,EAAQk3F,EAAMl3F,MACd3H,EAAK6+F,EAAM7+F,GACXC,EAAO4+F,EAAM5+F,KAGdmC,EAAMlyB,GAAI6wmC,GAAc,SAAUhgnC,GAMjC,GAHKi/B,IAAO5kB,KAAMusB,KACjBvsB,KAAMusB,GAAU3H,EAAI5kB,KAAK0lmC,QAErB//mC,IAAUmR,EACd,OAAOkJ,KAAMusB,GAAQzxB,QAGtB,IAAI+qB,EACH7V,EAAO2lP,EAAO3lP,KAAMrqB,GACpBixC,EAAiB,UAAT5mB,GAA6B,WAATA,EAAsBrqB,EAAQwO,UAC1Dw3B,EAAQ3rB,KAAMusB,GAAQzxB,QAUvB,OARA8V,EAAMwhB,EAAO,SAAU5nC,EAAK8nC,GAC3B,IAAI3K,EAAMiP,EAAc,WAAT5mB,EAAoBxlB,EAAM8nC,EAAKlgB,KAClC,MAAPuV,IACJA,EAAMgE,EAAO2G,EAAKlgB,MAEnBuZ,EAAO2G,EAAKlgB,KAAQ83W,EAAOviW,EAAK2K,EACjC,GAEKzN,IACJgB,EAAMmB,EAAOnC,EAAM8G,KACdY,GAAUZ,EACR9F,GAEAmB,EAAO2E,EAEhB,EAGA/a,EAAMwhB,EAAO,SAAU5nC,EAAK8nC,GAGtBtL,EAAMlyB,GAAItK,KAGfw8B,EAAMlyB,GAAItK,GAAQ,SAAU7E,GAC3B,IAIC3B,EAJGsinC,EAAQ3w2B,EAAO3lP,KAAMrqB,GACxBmP,EAAe,UAARtK,EAAoBwV,KAAKummC,MAAQ,OAAS,OAAWZ,EAC5Dh6kC,EAAQ3rB,KAAMlL,KACd2tC,EAAM9W,EAAO2G,EAAKlgB,KAGnB,MAAe,cAAVk0lC,EACG7jkC,GAGO,aAAV6jkC,IACJ3gnC,EAAQA,EAAM0a,KAAML,KAAMyiC,GAC1B6jkC,EAAQ3w2B,EAAO3lP,KAAMrqB,IAER,MAATA,GAAiB2sC,EAAKunO,MACnB75P,MAEO,WAAVsmmC,IACJtinC,EAAQihnC,EAAY5/kC,KAAM1/B,MAEzBA,EAAQ88C,EAAM9xB,WAAY3sB,EAAO,KAAyB,MAAfA,EAAO,GAAc,GAAK,IAGvE2nC,EAAO2G,EAAKlgB,KAAQzsB,EACbqa,KAAMlL,GAAM62B,IACpB,EACD,EACD,GAIA3E,EAAMqxC,KAAO,SAAUA,GACtB,IAAIotL,EAAQptL,EAAKn3E,MAAO,KACxB0vB,EAAM60O,EAAO,SAAUpgQ,EAAGgzE,GACzBs9L,EAAO4kuB,SAAUli6B,GAAS,CACzBtkE,IAAK,SAAU2vQ,EAAM/9Q,GACpB,IAAIwyC,EAAQ0s8B,EACX778B,EAAkB,GAEnB,GAAe,gBAAVrjC,IAAsD,WAAzBgwQ,EAAO3lP,KAAMrqB,KAC3CwyC,EAASqtkC,EAAa7/mC,KAAc,CAEvC,GADAA,EAAQqhC,EAAOmR,GAAUxyC,IACnBguY,EAAQ39I,MAA6B,IAArBrwP,EAAM+/mC,MAAO,GAAY,CAE9C,IADA7gI,EAAmB,oBAATxs6B,EAA6BqrM,EAAK17Q,WAAa07Q,GAElC,KAApB16O,GAA8C,gBAApBA,IAC5B678B,GAAWA,EAAQn78B,OAEnB,IACCV,EAAkB2sO,EAAOxsQ,IAAK07+B,EAAS,mBACvCA,EAAUA,EAAQ78+B,UACnB,CAAE,MAAQhD,GACV,CAGDW,EAAQA,EAAM+uP,MAAO1rN,GAAuC,gBAApBA,EACvCA,EACA,WACF,CAEArjC,EAAQA,EAAMugnC,cACf,CACA,IACCxi2B,EAAKh6O,MAAO2uC,GAAS1yE,CACtB,CAAE,MAAQX,GAIV,CACD,GAED2wQ,EAAOhkD,GAAGrwM,KAAM+2D,GAAS,SAAUs5I,GAC5BA,EAAG605B,YACR705B,EAAGllN,MAAQu6B,EAAO2qL,EAAG+xD,KAAMrrM,GAC3Bs5I,EAAGjlN,IAAMs6B,EAAO2qL,EAAGjlN,KACnBilN,EAAG605B,WAAY,GAEhB7w2B,EAAO4kuB,SAAUli6B,GAAOtkE,IAAK49M,EAAG+xD,KAAM/xD,EAAGllN,MAAMyiD,WAAYyiK,EAAGjlN,IAAKilN,EAAGp/L,KACvE,CACD,EAED,EAEAyU,EAAMqxC,KA7mBW,8JA+mBjBs9L,EAAO4kuB,SAAStx8B,YAAc,CAC7B6+d,OAAQ,SAAUnigB,GACjB,IAAIu1d,EAAW,CAAC,EAKhB,OAHAtqc,EAAM,CAAE,MAAO,QAAS,SAAU,QAAU,SAAUvrB,EAAGgjI,GACxD6yV,EAAU,SAAW7yV,EAAO,SAAY1iI,CACzC,GACOu1d,CACR,GAMDz2a,EAASkxN,EAAO/vO,MAAMlB,MAAQ,CAG7BlJ,KAAM,UACNK,MAAO,UACPwnY,KAAM,UACNoC,QAAS,UACTK,KAAM,UACNC,MAAO,UACPvlY,KAAM,UACNqnY,OAAQ,UACRlmY,KAAM,UACNknY,MAAO,UACPa,OAAQ,UACRl5M,IAAK,UACLjtL,OAAQ,UACRmnY,KAAM,UACNK,MAAO,UACPE,OAAQ,UAGR5kY,YAAa,CAAE,KAAM,KAAM,KAAM,GAEjCq5F,SAAU,UAGT,CAzpBF,CAypBKi2I,GAKL,WAEA,IAAI8w2B,EAAwB,CAAE,MAAO,SAAU,UAC9CC,EAAkB,CACjBprjC,OAAQ,EACR0qgB,aAAc,EACd/8hB,YAAa,EACb28hB,WAAY,EACZC,YAAa,EACbE,UAAW,EACXr3hB,YAAa,EACbK,OAAQ,EACRv+B,QAAS,GAeX,SAASm2mC,EAAkBjj2B,GAC1B,IAAIl5Q,EAAKiF,EACRi6B,EAAQg6O,EAAKz8Q,cAAcC,YAC1Bw8Q,EAAKz8Q,cAAcC,YAAYmB,iBAAkBq7Q,EAAM,MACvDA,EAAK4yjB,aACNph0B,EAAS,CAAC,EAEX,GAAKw0B,GAASA,EAAMt1B,QAAUs1B,EAAO,IAAOA,EAAOA,EAAO,IAEzD,IADAj6B,EAAMi6B,EAAMt1B,OACJ3E,KAEsB,iBAAjBi6B,EADZl/B,EAAMk/B,EAAOj6B,MAEZyF,EAAQw0F,EAAEo43B,UAAWt39B,IAAUk/B,EAAOl/B,SAMxC,IAAMA,KAAOk/B,EACiB,iBAAjBA,EAAOl/B,KAClB0K,EAAQ1K,GAAQk/B,EAAOl/B,IAK1B,OAAO0K,CACR,CAtCAw0F,EAAE94E,KACD,CAAE,kBAAmB,mBAAoB,oBAAqB,kBAC9D,SAAUhP,EAAG0wB,GACZo3D,EAAEioH,GAAGrwM,KAAMgxB,GAAS,SAAUq/K,IACb,SAAXA,EAAGjlN,MAAmBilN,EAAGi+M,SAAsB,IAAXj+M,EAAGp/L,MAAco/L,EAAGi+M,WAC5Dj6J,EAAOjsO,MAAOioL,EAAG+xD,KAAMpxO,EAAMq/K,EAAGjlN,KAChCilN,EAAGi+M,SAAU,EAEf,CACD,GAkDKlmU,EAAE50F,GAAG069B,UACV9l4B,EAAE50F,GAAG069B,QAAU,SAAU7n2B,GACxB,OAAO3nH,KAAK1M,IAAiB,MAAZq0H,EAChB3nH,KAAKgm9B,WAAahm9B,KAAKgm9B,WAAW/09B,OAAQ02H,GAE5C,GAGDj+B,EAAEpzE,QAAQswlC,aAAe,SAAUjhnC,EAAOuf,EAAUq+B,EAAQr0B,GAC3D,IAAIy0D,EAAI+lB,EAAEy3G,MAAOj8L,EAAUq+B,EAAQr0B,GAEnC,OAAOlP,KAAK48G,MAAO,WAClB,IAECiq/B,EAFG5rjC,EAAWyuC,EAAG1pF,MACjBki7B,EAAYjn4B,EAASs8M,KAAM,UAAa,GAExCuv2B,EAAgBnjiC,EAAE6zC,SAAWv8D,EAASpgD,KAAM,KAAM209B,UAAYv06B,EAG/D6rjC,EAAgBA,EAAc/zmC,IAAK,WAElC,MAAO,CACNwqC,GAFQmsD,EAAG1pF,MAGXvT,MAAOk6mC,EAAkB3mmC,MAE3B,IAGA6mmC,EAAmB,WAClBn9gC,EAAE94E,KAAM61lC,EAAuB,SAAUphnC,EAAGuuG,GACtCjuG,EAAOiuG,IACX34C,EAAU24C,EAAS,SAAWjuG,EAAOiuG,GAEvC,EACD,KAIAkzgC,EAAgBA,EAAc/zmC,IAAK,WAGlC,OAFAiN,KAAKtT,IAAMi6mC,EAAkB3mmC,KAAKu9B,GAAI,IACtCv9B,KAAKq9C,KA1DR,SAA0B0pjC,EAAUC,GACnC,IACCzzmC,EAAM5N,EADH03D,EAAO,CAAC,EAGZ,IAAM9pD,KAAQyzmC,EACbrhnC,EAAQqhnC,EAAUzzmC,GACbwzmC,EAAUxzmC,KAAW5N,IACnB+gnC,EAAiBnzmC,KACjBm2F,EAAEioH,GAAGrwM,KAAM/N,IAAWxN,MAAO4qB,WAAYhrB,MAC7C03D,EAAM9pD,GAAS5N,IAMnB,OAAO03D,CACR,CA0Ce4pjC,CAAiBjnmC,KAAKvT,MAAOuT,KAAKtT,KACvCsT,IACR,GAGAi7C,EAASs8M,KAAM,QAAS2qrB,GAGxB4kL,EAAgBA,EAAc/zmC,IAAK,WAClC,IAAIm0mC,EAAYlnmC,KACfmnmC,EAAMz9gC,EAAE+xM,WACR1rQ,EAAO25D,EAAEsZ,OAAQ,CAAC,EAAGr/B,EAAG,CACvBi5C,OAAO,EACPv6E,SAAU,WACT8kkC,EAAIvwmC,QAASswmC,EACd,IAIF,OADAlnmC,KAAKu9B,GAAGy/C,QAASh9E,KAAKq9C,KAAMttB,GACrBo3kC,EAAI9k/B,SACZ,GAGA34B,EAAE04B,KAAKthH,MAAO4oF,EAAGo9gC,EAAcjzmC,OAAQ2N,KAAM,WAG5CqlmC,IAIAn9gC,EAAE94E,KAAMzc,UAAW,WAClB,IAAIopC,EAAKv9B,KAAKu9B,GACdmsD,EAAE94E,KAAM5Q,KAAKq9C,KAAM,SAAU7yD,GAC5B+yC,EAAGp0C,IAAKqB,EAAK,GACd,EACD,GAIAm5E,EAAEthC,SAAShiC,KAAM46C,EAAU,GAC5B,EACD,EACD,EAEAyuC,EAAE50F,GAAGkuG,OAAQ,CACZiH,SAAU,SAAYp3D,GACrB,OAAO,SAAU6+T,EAAYvwK,EAAO59J,EAAQr0B,GAC3C,OAAOiyL,EACNz3G,EAAEpzE,QAAQswlC,aAAavmmC,KAAML,KAC5B,CAAE1M,IAAKo+W,GAAcvwK,EAAO59J,EAAQr0B,GACrC2jC,EAAK/xC,MAAOd,KAAM7L,UACpB,CACC,CAPQ,CAOLu1F,EAAE50F,GAAGm1G,UAEVP,YAAa,SAAY72D,GACxB,OAAO,SAAU6+T,EAAYvwK,EAAO59J,EAAQr0B,GAC3C,OAAO/a,UAAUC,OAAS,EACzBs1F,EAAEpzE,QAAQswlC,aAAavmmC,KAAML,KAC5B,CAAE4iC,OAAQ8uU,GAAcvwK,EAAO59J,EAAQr0B,GACxC2jC,EAAK/xC,MAAOd,KAAM7L,UACpB,CACC,CAPW,CAORu1F,EAAE50F,GAAG40G,aAEV86J,YAAa,SAAY3xN,GACxB,OAAO,SAAU6+T,EAAYipG,EAAOx5Q,EAAO59J,EAAQr0B,GAClD,MAAsB,kBAAVyrc,QAAiC7jd,IAAV6jd,EAC5Bx5Q,EAKEz3G,EAAEpzE,QAAQswlC,aAAavmmC,KAAML,KACjC26c,EAAQ,CAAErnd,IAAKo+W,GAAe,CAAE9uU,OAAQ8uU,GAC1CvwK,EAAO59J,EAAQr0B,GAJT2jC,EAAK/xC,MAAOd,KAAM7L,WASnBu1F,EAAEpzE,QAAQswlC,aAAavmmC,KAAML,KACnC,CAAEgoP,OAAQ0pH,GAAcipG,EAAOx5Q,EAAO59J,EAEzC,CACC,CAnBW,CAmBRmmD,EAAE50F,GAAG0vQ,aAEV4i2B,YAAa,SAAUxkkC,EAAQtvC,EAAK6tM,EAAO59J,EAAQr0B,GAClD,OAAOw6E,EAAEpzE,QAAQswlC,aAAavmmC,KAAML,KAAM,CACzC1M,IAAKA,EACLsvC,OAAQA,GACNu+J,EAAO59J,EAAQr0B,EACnB,GAGC,CA7MF,GAmNA,WAiVA,SAASm4lC,EAAqBnxmC,EAAQtG,EAASuxM,EAAOjyL,GAiDrD,OA9CKw6E,EAAEghI,cAAex0N,KACrBtG,EAAUsG,EACVA,EAASA,EAAOA,QAIjBA,EAAS,CAAEA,OAAQA,GAGH,MAAXtG,IACJA,EAAU,CAAC,GAIP85F,EAAE72E,WAAYjjB,KAClBsf,EAAWtf,EACXuxM,EAAQ,KACRvxM,EAAU,CAAC,IAIY,iBAAZA,GAAwB85F,EAAEioH,GAAG0qxB,OAAQzs+B,MAChDsf,EAAWiyL,EACXA,EAAQvxM,EACRA,EAAU,CAAC,GAIP85F,EAAE72E,WAAYsuL,KAClBjyL,EAAWiyL,EACXA,EAAQ,MAIJvxM,GACJ85F,EAAEsZ,OAAQ9sG,EAAQtG,GAGnBuxM,EAAQA,GAASvxM,EAAQsV,SACzBhP,EAAOgP,SAAWwkF,EAAEioH,GAAG1kF,IAAM,EACX,iBAAVk0E,EAAqBA,EAC5BA,KAASz3G,EAAEioH,GAAG0qxB,OAAS3y4B,EAAEioH,GAAG0qxB,OAAQl7xB,GACpCz3G,EAAEioH,GAAG0qxB,OAAO382B,SAEbxpH,EAAOmsC,SAAWnzB,GAAYtf,EAAQyyC,SAE/BnsC,CACR,CAEA,SAASoxmC,EAAyBhikC,GAGjC,QAAMA,GAA4B,iBAAXA,IAAuBokD,EAAEioH,GAAG0qxB,OAAQ/27B,KAKpC,iBAAXA,IAAwBokD,EAAEpzE,QAAQpgB,OAAQovC,MAKjDokD,EAAE72E,WAAYyyB,IAKI,iBAAXA,IAAwBA,EAAOpvC,MAM5C,CAyMA,SAASqxmC,EAAW90lC,EAAKnsB,GACvB,IAAIi6D,EAAaj6D,EAAQi6D,aACxBE,EAAcn6D,EAAQm6D,cAEtB73B,EADY,wIACOvD,KAAM5S,IAAS,CAAE,GAAI,EAAG8tC,EAAYE,EAAa,GAErE,MAAO,CACNz2D,IAAK2mB,WAAYiY,EAAQ,KAAS,EAClC3+B,MAAuB,SAAhB2+B,EAAQ,GAAiB23B,EAAa5vC,WAAYiY,EAAQ,IACjE1+B,OAAwB,SAAhB0+B,EAAQ,GAAiB63B,EAAc9vC,WAAYiY,EAAQ,IACnEz+B,KAAMwmB,WAAYiY,EAAQ,KAAS,EAEtC,CAhnBK8gE,EAAE0uM,MAAQ1uM,EAAE0uM,KAAK4J,SAAWt4M,EAAE0uM,KAAK4J,QAAQ/mP,WAC/CyuC,EAAE0uM,KAAK4J,QAAQ/mP,SAAW,SAAYpI,GACrC,OAAO,SAAU6wN,GAChB,QAASh6K,EAAGg6K,GAAO3tQ,KAAMivmC,IAAuBnyjC,EAAM6wN,EACvD,CACC,CAJwB,CAIrBh6K,EAAE0uM,KAAK4J,QAAQ/mP,YAGG,IAAnByuC,EAAE89gC,cACN99gC,EAAEsZ,OAAQtZ,EAAEpzE,QAAS,CAGpBmW,KAAM,SAAUnmC,EAASyN,GAExB,IADA,IAAI1O,EAAI,EAAG+O,EAASL,EAAIK,OAChB/O,EAAI+O,EAAQ/O,IACD,OAAb0O,EAAK1O,IACTiB,EAAQyP,KAAM+umC,EAAY/wmC,EAAK1O,GAAKiB,EAAS,GAAIojC,MAAO31B,EAAK1O,IAGhE,EAGAwnC,QAAS,SAAUvmC,EAASyN,GAE3B,IADA,IAAI4zB,EAAKtiC,EAAI,EAAG+O,EAASL,EAAIK,OACrB/O,EAAI+O,EAAQ/O,IACD,OAAb0O,EAAK1O,KACTsiC,EAAMrhC,EAAQyP,KAAM+umC,EAAY/wmC,EAAK1O,IACrCiB,EAAQ6C,IAAK4K,EAAK1O,GAAKsiC,GAG1B,EAEA6r3B,QAAS,SAAUj22B,EAAIpT,GAItB,MAHc,WAATA,IACJA,EAAOoT,EAAG0nF,GAAI,WAAc,OAAS,QAE/B96F,CACR,EAGAs9kC,cAAe,SAAUnhnC,GAGxB,GAAKA,EAAQmB,SAASw9H,GAAI,uBACzB,OAAO3+H,EAAQmB,SAIhB,IAAI2qC,EAAQ,CACV1rC,MAAOJ,EAAQi6D,YAAY,GAC3B35D,OAAQN,EAAQm6D,aAAa,GAC7B,MAASn6D,EAAQ6C,IAAK,UAEvBw5N,EAAUj5H,EAAG,eACXugB,SAAU,sBACV9gH,IAAK,CACLusE,SAAU,OACV24V,WAAY,cACZ/yW,OAAQ,OACRvsB,OAAQ,EACRv+B,QAAS,IAIXuiB,EAAO,CACNrsB,MAAOJ,EAAQI,QACfE,OAAQN,EAAQM,UAEjBm9C,EAASt7C,SAAS6wb,cAKnB,IACCv1Y,EAAOhmC,EACR,CAAE,MAAQ/Y,GACT++C,EAASt7C,SAASiF,IACnB,CAsCA,OApCApH,EAAQg8D,KAAMqgK,IAGTr8N,EAAS,KAAQy9C,GAAU2lD,EAAEliG,SAAUlB,EAAS,GAAKy9C,KACzD2lD,EAAG3lD,GAASohB,QAAS,SAKtBw9J,EAAUr8N,EAAQmB,SAGiB,WAA9BnB,EAAQ6C,IAAK,aACjBw5N,EAAQx5N,IAAK,CAAEL,SAAU,aACzBxC,EAAQ6C,IAAK,CAAEL,SAAU,eAEzB4gG,EAAEsZ,OAAQ5wE,EAAO,CAChBtpC,SAAUxC,EAAQ6C,IAAK,YACvB63b,OAAQ16b,EAAQ6C,IAAK,aAEtBugG,EAAE94E,KAAM,CAAE,MAAO,OAAQ,SAAU,SAAW,SAAUvrB,EAAGktB,GAC1D6f,EAAO7f,GAAQjsB,EAAQ6C,IAAKopB,GACvBxsB,MAAOogC,SAAUiM,EAAO7f,GAAO,OACnC6f,EAAO7f,GAAQ,OAEjB,GACAjsB,EAAQ6C,IAAK,CACZL,SAAU,WACVkB,IAAK,EACLG,KAAM,EACNF,MAAO,OACPC,OAAQ,UAGV5D,EAAQ6C,IAAK4pB,GAEN4vM,EAAQx5N,IAAKipC,GAAQwS,MAC7B,EAEA8ikC,cAAe,SAAUphnC,GACxB,IAAIy9C,EAASt7C,SAAS6wb,cAWtB,OATKhzb,EAAQmB,SAASw9H,GAAI,yBACzB3+H,EAAQmB,SAASw8Q,YAAa39Q,IAGzBA,EAAS,KAAQy9C,GAAU2lD,EAAEliG,SAAUlB,EAAS,GAAKy9C,KACzD2lD,EAAG3lD,GAASohB,QAAS,UAIhB7+D,CACR,IAIFojG,EAAEsZ,OAAQtZ,EAAEpzE,QAAS,CACpBuuD,QAAS,SAETi/J,OAAQ,SAAUvwO,EAAM42B,EAAMj0B,GAS7B,OARMA,IACLA,EAASi0B,EACTA,EAAO,UAGRu/D,EAAEpzE,QAAQpgB,OAAQ3C,GAAS2C,EAC3BwzF,EAAEpzE,QAAQpgB,OAAQ3C,GAAO42B,KAAOA,EAEzBj0B,CACR,EAEAyxmC,iBAAkB,SAAUrhnC,EAASovD,EAAS3mD,GAC7C,GAAiB,IAAZ2mD,EACJ,MAAO,CACN9uD,OAAQ,EACRF,MAAO,EACP+5D,YAAa,EACbF,WAAY,GAId,IAAIh6D,EAAkB,eAAdwI,GAAiC2mD,GAAW,KAAQ,IAAQ,EACnE/xD,EAAkB,aAAdoL,GAA+B2mD,GAAW,KAAQ,IAAQ,EAE/D,MAAO,CACN9uD,OAAQN,EAAQM,SAAWjD,EAC3B+C,MAAOJ,EAAQI,QAAUH,EACzBk6D,YAAan6D,EAAQm6D,cAAgB98D,EACrC48D,WAAYj6D,EAAQi6D,aAAeh6D,EAGrC,EAEAqhnC,UAAW,SAAU7+kC,GACpB,MAAO,CACNriC,MAAOqiC,EAAUkG,KAAKhlC,MAAQ8+B,EAAUkG,KAAK9kC,KAC7CvD,OAAQmiC,EAAUkG,KAAK/kC,OAAS6+B,EAAUkG,KAAKjlC,IAC/CG,KAAM4+B,EAAUkG,KAAK9kC,KACrBH,IAAK++B,EAAUkG,KAAKjlC,IAEtB,EAGAmtF,QAAS,SAAU7wF,EAASuhnC,EAAa7vkC,GACxC,IAAI4kF,EAAQt2H,EAAQs2H,QAEfir/B,EAAc,GAClBjr/B,EAAM7vF,OAAOjsB,MAAO87G,EACnB,CAAE,EAAG,GAAI5uH,OAAQ4uH,EAAM7vF,OAAQ86kC,EAAa7vkC,KAE9C1xC,EAAQ46U,SACT,EAEA4myB,UAAW,SAAUxhnC,GACpBA,EAAQyP,KAAMgvmC,EAAgBz+mC,EAAS,GAAIojC,MAAMsgG,QAClD,EAEA+9+B,aAAc,SAAUzhnC,GACvBA,EAAS,GAAIojC,MAAMsgG,QAAU1jI,EAAQyP,KAAMgvmC,IAAoB,GAC/Dz+mC,EAAQ27Q,WAAY8i2B,EACrB,EAEA56kC,KAAM,SAAU7jC,EAAS6jC,GACxB,IAAIgjB,EAAS7mD,EAAQ2+H,GAAI,WAQzB,MANc,WAAT96F,IACJA,EAAOgjB,EAAS,OAAS,SAErBA,EAAkB,SAAThjB,EAA2B,SAATA,KAC/BA,EAAO,QAEDA,CACR,EAGA69kC,YAAa,SAAUh6gC,EAAQ7uD,GAC9B,IAAIx7C,EAAG4C,EAEP,OAASynG,EAAQ,IACjB,IAAK,MACJrqG,EAAI,EACJ,MACD,IAAK,SACJA,EAAI,GACJ,MACD,IAAK,SACJA,EAAI,EACJ,MACD,QACCA,EAAIqqG,EAAQ,GAAM7uD,EAASv4C,OAG5B,OAASonG,EAAQ,IACjB,IAAK,OACJznG,EAAI,EACJ,MACD,IAAK,SACJA,EAAI,GACJ,MACD,IAAK,QACJA,EAAI,EACJ,MACD,QACCA,EAAIynG,EAAQ,GAAM7uD,EAASz4C,MAG5B,MAAO,CACNH,EAAGA,EACH5C,EAAGA,EAEL,EAGAsknC,kBAAmB,SAAU3hnC,GAC5B,IAAIq7N,EACHum5B,EAAc5hnC,EAAQ6C,IAAK,YAC3BL,EAAWxC,EAAQwC,WA+CpB,OAzCAxC,EAAQ6C,IAAK,CACZ6uO,UAAW1xO,EAAQ6C,IAAK,aACxB+uO,aAAc5xO,EAAQ6C,IAAK,gBAC3BgvO,WAAY7xO,EAAQ6C,IAAK,cACzB8uO,YAAa3xO,EAAQ6C,IAAK,iBAE1Bo3D,WAAYj6D,EAAQi6D,cACpBE,YAAan6D,EAAQm6D,eAEjB,qBAAqBv+D,KAAMgmnC,KAC/BA,EAAc,WAEdvm5B,EAAcj4H,EAAG,IAAMpjG,EAAS,GAAI6B,SAAW,KAAMsv+B,YAAanx+B,GAAU6C,IAAK,CAIhFqzD,QAAS,iBAAiBt6D,KAAMoE,EAAQ6C,IAAK,YAC5C,eACA,QACDmgH,WAAY,SAGZ0uH,UAAW1xO,EAAQ6C,IAAK,aACxB+uO,aAAc5xO,EAAQ6C,IAAK,gBAC3BgvO,WAAY7xO,EAAQ6C,IAAK,cACzB8uO,YAAa3xO,EAAQ6C,IAAK,eAC1B,MAAS7C,EAAQ6C,IAAK,WAEtBo3D,WAAYj6D,EAAQi6D,cACpBE,YAAan6D,EAAQm6D,eACrBwpD,SAAU,0BAEX3jH,EAAQyP,KAAM+umC,EAAY,cAAenj5B,IAG1Cr7N,EAAQ6C,IAAK,CACZL,SAAUo/mC,EACV/9mC,KAAMrB,EAASqB,KACfH,IAAKlB,EAASkB,MAGR23N,CACR,EAEAy+d,kBAAmB,SAAU95rB,GAC5B,IAAI6hnC,EAAUrD,EAAY,cACxBnj5B,EAAcr7N,EAAQyP,KAAMoymC,GAEzBxm5B,IACJA,EAAY/+K,SACZt8C,EAAQ27Q,WAAYkm2B,GAEtB,EAIA1k3B,QAAS,SAAUn9P,GAClBojG,EAAEpzE,QAAQyxlC,aAAczhnC,GACxBojG,EAAEpzE,QAAQ8pqB,kBAAmB95rB,EAC9B,EAEA8hnC,cAAe,SAAU9hnC,EAASsH,EAAMm1C,EAAQp9C,GAQ/C,OAPAA,EAAQA,GAAS,CAAC,EAClB+jG,EAAE94E,KAAMhjB,EAAM,SAAUvI,EAAGkB,GAC1B,IAAI62D,EAAO92D,EAAQ+hnC,QAAS9hnC,GACvB62D,EAAM,GAAM,IAChBz3D,EAAOY,GAAM62D,EAAM,GAAMra,EAASqa,EAAM,GAE1C,GACOz3D,CACR,IAkFD+jG,EAAE50F,GAAGkuG,OAAQ,CACZ9sG,OAAQ,WACP,IAAI7B,EAAOgzmC,EAAoBvmmC,MAAOd,KAAM7L,WAC3Cm0mC,EAAe5+gC,EAAEpzE,QAAQpgB,OAAQ7B,EAAK6B,QACtCqymC,EAAcD,EAAan+kC,KAC3ByyF,EAAQvoH,EAAKuoH,MACb4r/B,EAAY5r/B,GAAS,KACrBv6E,EAAWhuC,EAAKguC,SAChBlY,EAAO91B,EAAK81B,KACZq1B,EAAQ,GACR486B,EAAY,SAAUt0+B,GACrB,IAAIy1C,EAAKmsD,EAAG1pF,MACXyomC,EAAiB/+gC,EAAEpzE,QAAQ6T,KAAMoT,EAAIpT,IAAUo+kC,EAGhDhrkC,EAAGxnC,KAAMivmC,GAAmB,GAK5BxljC,EAAM1rD,KAAM20mC,GAGPF,IAAoC,SAAnBE,GAClBA,IAAmBF,GAAkC,SAAnBE,IACrClrkC,EAAGqH,OAGE2jkC,GAAkC,SAAnBE,GACpB/+gC,EAAEpzE,QAAQwxlC,UAAWvqkC,GAGjBmsD,EAAE72E,WAAY/qB,IAClBA,GAEF,EAED,GAAK4hG,EAAEioH,GAAG1kF,MAAQq7+B,EAGjB,OAAKn+kC,EACGnqB,KAAMmqB,GAAQ91B,EAAK6Q,SAAUm9B,GAE7BriC,KAAK4Q,KAAM,WACZyxB,GACJA,EAAShiC,KAAML,KAEjB,GAIF,SAAS2lH,EAAK79H,GACb,IAAI47Q,EAAOh6K,EAAG1pF,MAcd,SAASwB,IACHkoF,EAAE72E,WAAYwvB,IAClBA,EAAShiC,KAAMqjQ,EAAM,IAGjBh6K,EAAE72E,WAAY/qB,IAClBA,GAEF,CAIAuM,EAAK81B,KAAOq1B,EAAMtX,SAEM,IAAnBwhD,EAAE89gC,cAA2Be,EAUd,SAAdl0mC,EAAK81B,MAGTu5O,EAAMv5O,KACN3oB,KAEA8mmC,EAAajomC,KAAMqjQ,EAAM,GAAKrvQ,EA1ChC,WACCqvQ,EAAKzB,WAAY+i2B,GAEjBt7gC,EAAEpzE,QAAQmtO,QAASigB,GAEA,SAAdrvQ,EAAK81B,MACTu5O,EAAK3+N,OAGNvjC,GACD,IAiBMkiQ,EAAKz+I,GAAI,WAAuB,SAAT96F,EAA2B,SAATA,IAG7Cu5O,EAAMv5O,KACN3oB,KAEA8mmC,EAAajomC,KAAMqjQ,EAAM,GAAKrvQ,EAAMmN,EAYvC,CAKA,OAAiB,IAAVo7G,EACN58G,KAAK4Q,KAAMwr9B,GAAYxr9B,KAAM+0G,GAC7B3lH,KAAK48G,MAAO4r/B,EAAWpsI,GAAYx/2B,MAAO4r/B,EAAW7i/B,EACvD,EAEA/gF,KAAM,SAAYiO,GACjB,OAAO,SAAUvN,GAChB,GAAKgikC,EAAyBhikC,GAC7B,OAAOuN,EAAK/xC,MAAOd,KAAM7L,WAEzB,IAAIE,EAAOgzmC,EAAoBvmmC,MAAOd,KAAM7L,WAE5C,OADAE,EAAK81B,KAAO,OACLnqB,KAAK9J,OAAOmK,KAAML,KAAM3L,EAEjC,CACC,CAVI,CAUDq1F,EAAE50F,GAAG8vC,MAEVG,KAAM,SAAY8N,GACjB,OAAO,SAAUvN,GAChB,GAAKgikC,EAAyBhikC,GAC7B,OAAOuN,EAAK/xC,MAAOd,KAAM7L,WAEzB,IAAIE,EAAOgzmC,EAAoBvmmC,MAAOd,KAAM7L,WAE5C,OADAE,EAAK81B,KAAO,OACLnqB,KAAK9J,OAAOmK,KAAML,KAAM3L,EAEjC,CACC,CAVI,CAUDq1F,EAAE50F,GAAGiwC,MAEVijN,OAAQ,SAAYn1M,GACnB,OAAO,SAAUvN,GAChB,GAAKgikC,EAAyBhikC,IAA8B,kBAAXA,EAChD,OAAOuN,EAAK/xC,MAAOd,KAAM7L,WAEzB,IAAIE,EAAOgzmC,EAAoBvmmC,MAAOd,KAAM7L,WAE5C,OADAE,EAAK81B,KAAO,SACLnqB,KAAK9J,OAAOmK,KAAML,KAAM3L,EAEjC,CACC,CAVM,CAUHq1F,EAAE50F,GAAGkzP,QAEVqg3B,QAAS,SAAU79mC,GAClB,IAAIk/B,EAAQ1pB,KAAK7W,IAAKqB,GACrBm9B,EAAM,GAOP,OALA+hE,EAAE94E,KAAM,CAAE,KAAM,KAAM,IAAK,MAAQ,SAAUvrB,EAAG+3D,GAC1C1zB,EAAMnhC,QAAS60D,GAAS,IAC5Bz1B,EAAM,CAAEhX,WAAY+Y,GAAS0zB,GAE/B,GACOz1B,CACR,EAEA+glC,QAAS,SAAUC,GAClB,OAAKA,EACG3omC,KAAK7W,IAAK,OAAQ,QAAUw/mC,EAAQ3+mC,IAAM,MAAQ2+mC,EAAQ1+mC,MAAQ,MACxE0+mC,EAAQz+mC,OAAS,MAAQy+mC,EAAQx+mC,KAAO,OAEnCo9mC,EAAWvnmC,KAAK7W,IAAK,QAAU6W,KACvC,EAEA4omC,SAAU,SAAUh5mC,EAAS4R,GAC5B,IAAIlb,EAAUojG,EAAG1pF,MAChBjS,EAAS27F,EAAG95F,EAAQg1B,IACpBiklC,EAA2C,UAA7B96mC,EAAO5E,IAAK,YAC1BuE,EAAOg8F,EAAG,QACVo/gC,EAASD,EAAcn7mC,EAAKT,YAAc,EAC1C87mC,EAAUF,EAAcn7mC,EAAKX,aAAe,EAC5CgmrB,EAAchlrB,EAAOnJ,SACrBmkC,EAAY,CACX/+B,IAAK+orB,EAAY/orB,IAAM8+mC,EACvB3+mC,KAAM4orB,EAAY5orB,KAAO4+mC,EACzBninC,OAAQmH,EAAO+/F,cACfpnG,MAAOqH,EAAO6/F,cAEfkllB,EAAgBxsrB,EAAQ1B,SACxBgknC,EAAWl/gC,EAAG,2CACZi0jB,SAAU,QACV1ziB,SAAUr6G,EAAQk6G,WAClB3gH,IAAK,CACLa,IAAK8orB,EAAc9orB,IAAM8+mC,EACzB3+mC,KAAM2orB,EAAc3orB,KAAO4+mC,EAC3BninC,OAAQN,EAAQwnG,cAChBpnG,MAAOJ,EAAQsnG,aACf9kG,SAAU+/mC,EAAc,QAAU,aAElC7rhC,QAASj0D,EAAWn5B,EAAQsV,SAAUtV,EAAQ2zC,OAAQ,WACtDqlkC,EAAShmkC,SACJ8mD,EAAE72E,WAAYrR,IAClBA,GAEF,EACH,IAiBDkoF,EAAEioH,GAAGrwM,KAAK2tB,KAAO,SAAU0iL,GACpBA,EAAGq35B,WACRr35B,EAAGllN,MAAQi9F,EAAGioH,EAAG+xD,MAAOgl2B,UACD,iBAAX/25B,EAAGjlN,MACdilN,EAAGjlN,IAAM66mC,EAAW515B,EAAGjlN,IAAKilN,EAAG+xD,OAEhC/xD,EAAGq35B,UAAW,GAGft/gC,EAAGioH,EAAG+xD,MAAOgl2B,QAAS,CACrB1+mC,IAAK2nN,EAAGp/L,KAAQo/L,EAAGjlN,IAAI1C,IAAM2nN,EAAGllN,MAAMzC,KAAQ2nN,EAAGllN,MAAMzC,IACvDC,MAAO0nN,EAAGp/L,KAAQo/L,EAAGjlN,IAAIzC,MAAQ0nN,EAAGllN,MAAMxC,OAAU0nN,EAAGllN,MAAMxC,MAC7DC,OAAQynN,EAAGp/L,KAAQo/L,EAAGjlN,IAAIxC,OAASynN,EAAGllN,MAAMvC,QAAWynN,EAAGllN,MAAMvC,OAChEC,KAAMwnN,EAAGp/L,KAAQo/L,EAAGjlN,IAAIvC,KAAOwnN,EAAGllN,MAAMtC,MAASwnN,EAAGllN,MAAMtC,MAE5D,CAEE,CAroBF,GA+oBIy6mC,EAAc,CAAC,EAEnBl7gC,EAAE94E,KAAM,CAAE,OAAQ,QAAS,QAAS,QAAS,QAAU,SAAUvrB,EAAGkO,GACnEqxmC,EAAarxmC,GAAS,SAAU4M,GAC/B,OAAO3a,KAAKC,IAAK0a,EAAG9a,EAAI,EACzB,CACD,GAEAqkG,EAAEsZ,OAAQ4hgC,EAAa,CACtBqE,KAAM,SAAU9omC,GACf,OAAO,EAAI3a,KAAK6xB,IAAKlX,EAAI3a,KAAKytB,GAAK,EACpC,EACAi2lC,KAAM,SAAU/omC,GACf,OAAO,EAAI3a,KAAK0vB,KAAM,EAAI/U,EAAIA,EAC/B,EACAgpmC,QAAS,SAAUhpmC,GAClB,OAAa,IAANA,GAAiB,IAANA,EAAUA,GAC1B3a,KAAKC,IAAK,EAAG,GAAM0a,EAAI,IAAQ3a,KAAK4wB,KAAmB,IAAVjW,EAAI,GAAW,KAAQ3a,KAAKytB,GAAK,GACjF,EACAm2lC,KAAM,SAAUjpmC,GACf,OAAOA,EAAIA,GAAM,EAAIA,EAAI,EAC1B,EACAkpmC,OAAQ,SAAUlpmC,GAIjB,IAHA,IAAImpmC,EACHrnnB,EAAS,EAEF9hf,IAAQmpmC,EAAO9jnC,KAAKC,IAAK,IAAKw8f,IAAa,GAAM,KACzD,OAAO,EAAIz8f,KAAKC,IAAK,EAAG,EAAIw8f,GAAW,OAASz8f,KAAKC,KAAc,EAAP6jnC,EAAW,GAAM,GAAKnpmC,EAAG,EACtF,IAGDupF,EAAE94E,KAAMg0lC,EAAa,SAAUrxmC,EAAMg2mC,GACpC7/gC,EAAEnmD,OAAQ,SAAWhwC,GAASg2mC,EAC9B7/gC,EAAEnmD,OAAQ,UAAYhwC,GAAS,SAAU4M,GACxC,OAAO,EAAIopmC,EAAQ,EAAIppmC,EACxB,EACAupF,EAAEnmD,OAAQ,YAAchwC,GAAS,SAAU4M,GAC1C,OAAOA,EAAI,GACVopmC,EAAY,EAAJppmC,GAAU,EAClB,EAAIopmC,GAAa,EAALppmC,EAAS,GAAM,CAC7B,CACD,GAIaupF,EAAEpzE,QAoBUozE,EAAEpzE,QAAQwtN,OAAQ,QAAS,OAAQ,SAAUl0O,EAAS4R,GAC9E,IAAIzO,EAAM,CACRizX,GAAI,CAAE,SAAU,OAChBrjU,SAAU,CAAE,SAAU,OACtB+myB,KAAM,CAAE,MAAO,UACfv/1B,KAAM,CAAE,QAAS,QACjBsoD,WAAY,CAAE,QAAS,QACvBxoD,MAAO,CAAE,OAAQ,UAElB3D,EAAUojG,EAAG1pF,MACbjR,EAAYa,EAAQb,WAAa,KACjCtC,EAAQnG,EAAQoinC,UAChB1rhC,EAAU,CAAE/tD,KAAMy6D,EAAEsZ,OAAQ,CAAC,EAAGv2G,IAChCk1N,EAAcj4H,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAE5C02F,EAAQ/tD,KAAMl8B,EAAKhE,GAAa,IAAQiuF,EAAQ/tD,KAAMl8B,EAAKhE,GAAa,IAElD,SAAjBa,EAAQu6B,OACZ7jC,EAAQoinC,QAAS1rhC,EAAQ/tD,MACpB0yL,GACJA,EAAYx4N,IAAKugG,EAAEpzE,QAAQsxlC,UAAW5qhC,IAGvCA,EAAQ/tD,KAAOxiC,GAGXk1N,GACJA,EAAY3kI,QAAS0M,EAAEpzE,QAAQsxlC,UAAW5qhC,GAAWptF,EAAQsV,SAAUtV,EAAQ2zC,QAGhFj9C,EAAQ02F,QAASA,EAAS,CACzB4/B,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAEZ,GAoB0BkoF,EAAEpzE,QAAQwtN,OAAQ,SAAU,SAAUl0O,EAAS4R,GACxE,IAAIgomC,EAAQC,EAAUC,EACrBpjnC,EAAUojG,EAAG1pF,MAGbmqB,EAAOv6B,EAAQu6B,KACf4a,EAAgB,SAAT5a,EACPya,EAAgB,SAATza,EACPp7B,EAAYa,EAAQb,WAAa,KACjCwJ,EAAW3I,EAAQ2I,SACnB0nN,EAAQrwN,EAAQqwN,OAAS,EAGzB5+K,EAAgB,EAAR4+K,GAAcr7K,GAAQG,EAAO,EAAI,GACzCo8J,EAAQvxM,EAAQsV,SAAWm8B,EAC3BkC,EAAS3zC,EAAQ2zC,OAGjBsvE,EAAsB,OAAd9jH,GAAoC,SAAdA,EAAyB,MAAQ,OAC/D46mC,EAAyB,OAAd56mC,GAAoC,SAAdA,EACjC1J,EAAI,EAEJuknC,EAAWtjnC,EAAQs2H,QAAQxoH,OAgC5B,IA9BAs1F,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAE7BojnC,EAAWpjnC,EAAQ6C,IAAK0pH,GAGlBt6G,IACLA,EAAWjS,EAAiB,QAARusH,EAAgB,cAAgB,gBAAmB,GAGnEjuE,KACJ6kkC,EAAW,CAAEhsmC,QAAS,IACZo1G,GAAQ62/B,EAIlBpjnC,EACE6C,IAAK,UAAW,GAChBA,IAAK0pH,EAAK82/B,EAAqB,GAAXpxmC,EAA0B,EAAXA,GACnCykF,QAASyshC,EAAUto6B,EAAO59J,IAIxBwB,IACJxsC,GAAsB/S,KAAKC,IAAK,EAAGw6N,EAAQ,KAG5Cwp5B,EAAW,CAAC,GACF52/B,GAAQ62/B,EAGVrknC,EAAI46N,EAAO56N,KAClBmknC,EAAS,CAAC,GACF32/B,IAAU82/B,EAAS,KAAO,MAASpxmC,EAE3CjS,EACE02F,QAASwshC,EAAQro6B,EAAO59J,GACxBy5C,QAASyshC,EAAUto6B,EAAO59J,GAE5BhrC,EAAWwsC,EAAkB,EAAXxsC,EAAeA,EAAW,EAIxCwsC,KACJykkC,EAAS,CAAE/rmC,QAAS,IACZo1G,IAAU82/B,EAAS,KAAO,MAASpxmC,EAE3CjS,EAAQ02F,QAASwshC,EAAQro6B,EAAO59J,IAGjCj9C,EAAQs2H,MAAOp7G,GAEfkoF,EAAEpzE,QAAQ6gE,QAAS7wF,EAASsjnC,EAAUvokC,EAAQ,EAC/C,GAoBwBqoD,EAAEpzE,QAAQwtN,OAAQ,OAAQ,OAAQ,SAAUl0O,EAAS4R,GAC5E,IAAI/U,EACHuwF,EAAU,CAAC,EACX12F,EAAUojG,EAAG1pF,MACbjR,EAAYa,EAAQb,WAAa,WACjC86mC,EAAqB,SAAd96mC,EACP0jD,EAAao3jC,GAAsB,eAAd96mC,EACrB4zD,EAAWknjC,GAAsB,aAAd96mC,EAEpBtC,EAAQnG,EAAQoinC,UAChB1rhC,EAAQ/tD,KAAO,CACdjlC,IAAK24D,GAAal2D,EAAMvC,OAASuC,EAAMzC,KAAQ,EAAIyC,EAAMzC,IACzDC,MAAOwoD,GAAehmD,EAAMxC,MAAQwC,EAAMtC,MAAS,EAAIsC,EAAMxC,MAC7DC,OAAQy4D,GAAal2D,EAAMvC,OAASuC,EAAMzC,KAAQ,EAAIyC,EAAMvC,OAC5DC,KAAMsoD,GAAehmD,EAAMxC,MAAQwC,EAAMtC,MAAS,EAAIsC,EAAMtC,MAG7Du/F,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAEP,SAAjBsJ,EAAQu6B,OACZ7jC,EAAQoinC,QAAS1rhC,EAAQ/tD,MACzB+tD,EAAQ/tD,KAAOxiC,GAGhBnG,EAAQ02F,QAASA,EAAS,CACzB4/B,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAGZ,GAoBwBkoF,EAAEpzE,QAAQwtN,OAAQ,OAAQ,OAAQ,SAAUl0O,EAAS4R,GAE5E,IAAIjJ,EACHjS,EAAUojG,EAAG1pF,MAEb4kC,EAAgB,SADTh1C,EAAQu6B,KAEfp7B,EAAYa,EAAQb,WAAa,OACjC8jH,EAAsB,OAAd9jH,GAAoC,SAAdA,EAAyB,MAAQ,OAC/D46mC,EAAyB,OAAd56mC,GAAoC,SAAdA,EAAyB,KAAO,KACjE+6mC,EAA8B,OAAXH,EAAoB,KAAO,KAC9C5glC,EAAY,CACXtrB,QAAS,GAGXisF,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAE7BiS,EAAW3I,EAAQ2I,UAClBjS,EAAiB,QAARusH,EAAgB,cAAgB,eAAgB,GAAS,EAEnE9pF,EAAW8pF,GAAQ82/B,EAASpxmC,EAEvBqsC,IACJt+C,EAAQ6C,IAAK4/B,GAEbA,EAAW8pF,GAAQi3/B,EAAiBvxmC,EACpCwwB,EAAUtrB,QAAU,GAIrBnX,EAAQ02F,QAASj0D,EAAW,CAC3B6zF,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAEZ,GAsB2BkoF,EAAEpzE,QAAQwtN,OAAQ,UAAW,OAAQ,SAAUl0O,EAAS4R,GAElF,IAAInc,EAAG2gC,EAAG77B,EAAMH,EAAK826B,EAAIlwU,EACxBt5b,EAAO1nK,EAAQm6mC,OAASvknC,KAAK+F,MAAO/F,KAAK0vB,KAAMtlB,EAAQm6mC,SAAa,EACpEz57B,EAAQhZ,EACRhxK,EAAUojG,EAAG1pF,MAEb4kC,EAAgB,SADTh1C,EAAQu6B,KAIfvlC,EAAS0B,EAAQs+C,OAAOz7C,IAAK,aAAc,UAAWvE,SAGtD8B,EAAQlB,KAAKsjE,KAAMxiE,EAAQi6D,aAAe+vH,GAC1C1pL,EAASpB,KAAKsjE,KAAMxiE,EAAQm6D,cAAgB62G,GAC5Cyy8B,EAAS,GAGV,SAASC,IACRD,EAAOj2mC,KAAMkM,MACR+pmC,EAAO31mC,SAAWkjK,EAAOgZ,IAiD9BhqL,EAAQ6C,IAAK,CACZmgH,WAAY,YAEb5f,EAAGqghC,GAASnnkC,SACZphC,IAlDD,CAGA,IAAMnc,EAAI,EAAGA,EAAIiyK,EAAMjyK,IAItB,IAHA2E,EAAMpF,EAAOoF,IAAM3E,EAAIuB,EACvBgqmB,EAAKvrmB,GAAMiyK,EAAO,GAAM,EAElBtxI,EAAI,EAAGA,EAAIsqJ,EAAOtqJ,IACvB77B,EAAOvF,EAAOuF,KAAO67B,EAAIt/B,EACzBo66B,EAAK964B,GAAMsqJ,EAAQ,GAAM,EAIzBhqL,EACE2+B,QACA04nB,SAAU,QACVr7lB,KAAM,eACNn5D,IAAK,CACLL,SAAU,WACVwgH,WAAY,UACZn/G,MAAO67B,EAAIt/B,EACXsD,KAAM3E,EAAIuB,IAKVa,SACCwiH,SAAU,sBACV9gH,IAAK,CACLL,SAAU,WACVwE,SAAU,SACV5G,MAAOA,EACPE,OAAQA,EACRuD,KAAMA,GAASy6C,EAAOk83B,EAAKp66B,EAAQ,GACnCsD,IAAKA,GAAQ46C,EAAOgsjB,EAAKhqmB,EAAS,GAClC6W,QAASmnC,EAAO,EAAI,IAEpBo4C,QAAS,CACT7yF,KAAMA,GAASy6C,EAAO,EAAIk83B,EAAKp66B,GAC/BsD,IAAKA,GAAQ46C,EAAO,EAAIgsjB,EAAKhqmB,GAC7B6W,QAASmnC,EAAO,EAAI,GAClBh1C,EAAQsV,UAAY,IAAKtV,EAAQ2zC,OAAQymkC,EAWjD,GAoBwBtghC,EAAEpzE,QAAQwtN,OAAQ,OAAQ,SAAU,SAAUl0O,EAAS4R,GAC9E,IAAIojC,EAAwB,SAAjBh1C,EAAQu6B,KAEnBu/D,EAAG1pF,MACD7W,IAAK,UAAWy7C,EAAO,EAAI,GAC3Bo4C,QAAS,CACTv/E,QAASmnC,EAAO,EAAI,GAClB,CACFg4E,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAEb,GAoBwBkoF,EAAEpzE,QAAQwtN,OAAQ,OAAQ,OAAQ,SAAUl0O,EAAS4R,GAG5E,IAAIlb,EAAUojG,EAAG1pF,MAChBmqB,EAAOv6B,EAAQu6B,KACfya,EAAgB,SAATza,EACP4a,EAAgB,SAAT5a,EACPpX,EAAOnjB,EAAQmjB,MAAQ,GACvB2iC,EAAU,YAAYrwB,KAAMtS,GAE5B8/F,EADejjH,EAAQq6mC,WACJ,CAAE,QAAS,UAAa,CAAE,SAAU,SACvD/kmC,EAAWtV,EAAQsV,SAAW,EAE9By8M,EAAcj4H,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAE3CmG,EAAQnG,EAAQoinC,UAChBwB,EAAa,CAAEj7kC,KAAMy6D,EAAEsZ,OAAQ,CAAC,EAAGv2G,IACnC09mC,EAAa,CAAEl7kC,KAAMy6D,EAAEsZ,OAAQ,CAAC,EAAGv2G,IAEnC8L,EAAW,CAAE9L,EAAOomH,EAAK,IAAOpmH,EAAOomH,EAAK,KAE5C+2/B,EAAWtjnC,EAAQs2H,QAAQxoH,OAEvBshD,IACJ3iC,EAAOoT,SAAUuvB,EAAS,GAAK,IAAO,IAAMn9C,EAAUwsC,EAAO,EAAI,IAElEmlkC,EAAWj7kC,KAAM4jF,EAAK,IAAQ9/F,EAC9Bo3lC,EAAWl7kC,KAAM4jF,EAAK,IAAQ9/F,EAC9Bo3lC,EAAWl7kC,KAAM4jF,EAAK,IAAQ,EAEzBjuE,IACJt+C,EAAQoinC,QAASyB,EAAWl7kC,MACvB0yL,GACJA,EAAYx4N,IAAKugG,EAAEpzE,QAAQsxlC,UAAWuC,IAGvCA,EAAWl7kC,KAAOxiC,GAInBnG,EACEs2H,MAAO,SAAU90H,GACZ65N,GACJA,EACE3kI,QAAS0M,EAAEpzE,QAAQsxlC,UAAWsC,GAAchlmC,EAAUtV,EAAQ2zC,QAC9Dy5C,QAAS0M,EAAEpzE,QAAQsxlC,UAAWuC,GAAcjlmC,EAAUtV,EAAQ2zC,QAGjEz7C,GACD,GACCk1F,QAASkthC,EAAYhlmC,EAAUtV,EAAQ2zC,QACvCy5C,QAASmthC,EAAYjlmC,EAAUtV,EAAQ2zC,QACvCq5E,MAAOp7G,GAETkoF,EAAEpzE,QAAQ6gE,QAAS7wF,EAASsjnC,EAAU,EACvC,GAoB6BlghC,EAAEpzE,QAAQwtN,OAAQ,YAAa,OAAQ,SAAUl0O,EAAS4R,GACtF,IAAIlb,EAAUojG,EAAG1pF,MAChB+oB,EAAY,CACXC,gBAAiB1iC,EAAQ6C,IAAK,oBAGV,SAAjByG,EAAQu6B,OACZpB,EAAUtrB,QAAU,GAGrBisF,EAAEpzE,QAAQwxlC,UAAWxhnC,GAErBA,EACE6C,IAAK,CACLg3P,gBAAiB,OACjBn3N,gBAAiBp5B,EAAQo3B,OAAS,YAElCg2D,QAASj0D,EAAW,CACpB6zF,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAEb,GAoBwBkoF,EAAEpzE,QAAQwtN,OAAQ,OAAQ,SAAUl0O,EAAS4R,GAGpE,IAAI4omC,EAAUrnkC,EAAQq4D,EACrB90G,EAAUojG,EAAG1pF,MAGbqqmC,EAAS,CAAE,YACXC,EAAS,CAAE,iBAAkB,oBAAqB,aAAc,iBAChEC,EAAS,CAAE,kBAAmB,mBAAoB,cAAe,gBAGjEpglC,EAAOv6B,EAAQu6B,KACf0C,EAAmB,WAAT1C,EACVS,EAAQh7B,EAAQg7B,OAAS,OACzBojE,EAASp+F,EAAQo+F,QAAU,CAAE,SAAU,UACvCllG,EAAWxC,EAAQ6C,IAAK,YACxBopB,EAAMjsB,EAAQwC,WACdq2C,EAAWuqD,EAAEpzE,QAAQqxlC,iBAAkBrhnC,GACvCu+B,EAAOj1B,EAAQi1B,MAAQsa,EACvBva,EAAKh1B,EAAQg1B,IAAM8kE,EAAEpzE,QAAQqxlC,iBAAkBrhnC,EAAS,GAEzDojG,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAEf,SAAT6jC,IACJixE,EAAOv2E,EACPA,EAAOD,EACPA,EAAKw2E,GAINr4D,EAAS,CACRle,KAAM,CACLlhC,EAAGkhC,EAAKj+B,OAASu4C,EAASv4C,OAC1BL,EAAGs+B,EAAKn+B,MAAQy4C,EAASz4C,OAE1Bk+B,GAAI,CACHjhC,EAAGihC,EAAGh+B,OAASu4C,EAASv4C,OACxBL,EAAGq+B,EAAGl+B,MAAQy4C,EAASz4C,QAKV,QAAVkkC,GAA6B,SAAVA,IAGlBmY,EAAOle,KAAKlhC,IAAMo/C,EAAOne,GAAGjhC,IAChCkhC,EAAO6kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAASgknC,EAAQvnkC,EAAOle,KAAKlhC,EAAGkhC,GAChED,EAAK8kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAASgknC,EAAQvnkC,EAAOne,GAAGjhC,EAAGihC,IAIxDme,EAAOle,KAAKt+B,IAAMw8C,EAAOne,GAAGr+B,IAChCs+B,EAAO6kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAASiknC,EAAQxnkC,EAAOle,KAAKt+B,EAAGs+B,GAChED,EAAK8kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAASiknC,EAAQxnkC,EAAOne,GAAGr+B,EAAGq+B,KAK/C,YAAVgG,GAAiC,SAAVA,GAGtBmY,EAAOle,KAAKlhC,IAAMo/C,EAAOne,GAAGjhC,IAChCkhC,EAAO6kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAAS+jnC,EAAQtnkC,EAAOle,KAAKlhC,EAAGkhC,GAChED,EAAK8kE,EAAEpzE,QAAQ8xlC,cAAe9hnC,EAAS+jnC,EAAQtnkC,EAAOne,GAAGjhC,EAAGihC,IAKzDopE,IACJo8gC,EAAW1ghC,EAAEpzE,QAAQ0xlC,YAAah6gC,EAAQ7uD,GAC1Cta,EAAK76B,KAAQm1C,EAASshB,YAAc57B,EAAK47B,aAAgB2pjC,EAASzmnC,EAAI4uB,EAAIvoB,IAC1E66B,EAAK16B,MAASg1C,EAASohB,WAAa17B,EAAK07B,YAAe6pjC,EAAS7jnC,EAAIgsB,EAAIpoB,KACzEy6B,EAAG56B,KAAQm1C,EAASshB,YAAc77B,EAAG67B,aAAgB2pjC,EAASzmnC,EAAI4uB,EAAIvoB,IACtE46B,EAAGz6B,MAASg1C,EAASohB,WAAa37B,EAAG27B,YAAe6pjC,EAAS7jnC,EAAIgsB,EAAIpoB,MAEtE7D,EAAQ6C,IAAK07B,GAGE,YAAV+F,GAAiC,SAAVA,IAE3B0/kC,EAASA,EAAOt8mC,OAAQ,CAAE,YAAa,iBAAmBA,OAAQq8mC,GAClEE,EAASA,EAAOv8mC,OAAQ,CAAE,aAAc,gBAIxC1H,EAAQuU,KAAM,YAAa+V,KAAM,WAChC,IAAIlpB,EAAQgiG,EAAG1pF,MACdwqmC,EAAgB9ghC,EAAEpzE,QAAQqxlC,iBAAkBjgnC,GAC5C+inC,EAAY,CACX7jnC,OAAQ4jnC,EAAc5jnC,OAASm8C,EAAOle,KAAKlhC,EAC3C+C,MAAO8jnC,EAAc9jnC,MAAQq8C,EAAOle,KAAKt+B,EACzCk6D,YAAa+pjC,EAAc/pjC,YAAc1d,EAAOle,KAAKlhC,EACrD48D,WAAYiqjC,EAAcjqjC,WAAaxd,EAAOle,KAAKt+B,GAEpDmknC,EAAU,CACT9jnC,OAAQ4jnC,EAAc5jnC,OAASm8C,EAAOne,GAAGjhC,EACzC+C,MAAO8jnC,EAAc9jnC,MAAQq8C,EAAOne,GAAGr+B,EACvCk6D,YAAa+pjC,EAAc5jnC,OAASm8C,EAAOne,GAAGjhC,EAC9C48D,WAAYiqjC,EAAc9jnC,MAAQq8C,EAAOne,GAAGr+B,GAIzCw8C,EAAOle,KAAKlhC,IAAMo/C,EAAOne,GAAGjhC,IAChC8mnC,EAAY/ghC,EAAEpzE,QAAQ8xlC,cAAe1gnC,EAAO4inC,EAAQvnkC,EAAOle,KAAKlhC,EAAG8mnC,GACnEC,EAAUhhhC,EAAEpzE,QAAQ8xlC,cAAe1gnC,EAAO4inC,EAAQvnkC,EAAOne,GAAGjhC,EAAG+mnC,IAI3D3nkC,EAAOle,KAAKt+B,IAAMw8C,EAAOne,GAAGr+B,IAChCkknC,EAAY/ghC,EAAEpzE,QAAQ8xlC,cAAe1gnC,EAAO6inC,EAAQxnkC,EAAOle,KAAKt+B,EAAGkknC,GACnEC,EAAUhhhC,EAAEpzE,QAAQ8xlC,cAAe1gnC,EAAO6inC,EAAQxnkC,EAAOne,GAAGr+B,EAAGmknC,IAG3D79kC,GACJ68D,EAAEpzE,QAAQwxlC,UAAWpgnC,GAItBA,EAAMyB,IAAKshnC,GACX/inC,EAAMs1F,QAAS0thC,EAAS96mC,EAAQsV,SAAUtV,EAAQ2zC,OAAQ,WAGpD1W,GACJ68D,EAAEpzE,QAAQyxlC,aAAcrgnC,EAE1B,EACD,IAIDpB,EAAQ02F,QAASp4D,EAAI,CACpBg4F,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU,WAET,IAAIz9C,EAAS0B,EAAQ1B,SAED,IAAfggC,EAAGnnB,SACPnX,EAAQ6C,IAAK,UAAW07B,EAAKpnB,SAGxBovB,IACLvmC,EACE6C,IAAK,WAAyB,WAAbL,EAAwB,WAAaA,GACtDlE,OAAQA,GAIV8kG,EAAEpzE,QAAQwxlC,UAAWxhnC,IAGtBkb,GACD,GAGF,GAoByBkoF,EAAEpzE,QAAQwtN,OAAQ,QAAS,SAAUl0O,EAAS4R,GAGtE,IAAI+7B,EAAKmsD,EAAG1pF,MACXmqB,EAAOv6B,EAAQu6B,KACfurB,EAAUvvB,SAAUv2B,EAAQ8lD,QAAS,MACE,IAApCvvB,SAAUv2B,EAAQ8lD,QAAS,KAA4B,WAATvrB,EAAN,EAA8B,KAEzEqb,EAAakkD,EAAEsZ,QAAQ,EAAM,CAC5Bn+E,KAAM6kE,EAAEpzE,QAAQqxlC,iBAAkBpqkC,GAClC3Y,GAAI8kE,EAAEpzE,QAAQqxlC,iBAAkBpqkC,EAAImY,EAAS9lD,EAAQb,WAAa,QAClEi/F,OAAQp+F,EAAQo+F,QAAU,CAAE,SAAU,WACpCp+F,GAGCA,EAAQ8u1B,OACZl5yB,EAAW3gB,KAAKpnB,QAAU,EAC1B+nC,EAAW5gB,GAAGnnB,QAAU,GAGzBisF,EAAEpzE,QAAQpgB,OAAO6c,KAAK1S,KAAML,KAAMwlC,EAAYhkC,EAC/C,GAoBwBkoF,EAAEpzE,QAAQwtN,OAAQ,OAAQ,OAAQ,SAAUl0O,EAAS4R,GAC5E,IAAIgkC,EAAakkD,EAAEsZ,QAAQ,EAAM,CAAC,EAAGpzG,EAAS,CAC7C8u1B,MAAM,EACNhpyB,QAASvvB,SAAUv2B,EAAQ8lD,QAAS,KAAQ,MAG7Cg0C,EAAEpzE,QAAQpgB,OAAO00B,MAAMvqB,KAAML,KAAMwlC,EAAYhkC,EAChD,GAoB2BkoF,EAAEpzE,QAAQwtN,OAAQ,UAAW,OAAQ,SAAUl0O,EAAS4R,GAClF,IAAIlb,EAAUojG,EAAG1pF,MAChBmqB,EAAOv6B,EAAQu6B,KACfya,EAAgB,SAATza,EAEPwglC,EAAW/lkC,GADK,SAATza,EAIPkX,EAAmC,GAAvBzxC,EAAQqwN,OAAS,IAAc0q5B,EAAW,EAAI,GAC1DzlmC,EAAWtV,EAAQsV,SAAWm8B,EAC9BupkC,EAAY,EACZvlnC,EAAI,EACJuknC,EAAWtjnC,EAAQs2H,QAAQxoH,OAQ5B,KANKwwC,GAASt+C,EAAQ2+H,GAAI,cACzB3+H,EAAQ6C,IAAK,UAAW,GAAIy7C,OAC5BgmkC,EAAY,GAILvlnC,EAAIg8C,EAAOh8C,IAClBiB,EAAQ02F,QAAS,CAAEv/E,QAASmtmC,GAAa1lmC,EAAUtV,EAAQ2zC,QAC3DqnkC,EAAY,EAAIA,EAGjBtknC,EAAQ02F,QAAS,CAAEv/E,QAASmtmC,GAAa1lmC,EAAUtV,EAAQ2zC,QAE3Dj9C,EAAQs2H,MAAOp7G,GAEfkoF,EAAEpzE,QAAQ6gE,QAAS7wF,EAASsjnC,EAAUvokC,EAAQ,EAC/C,GAoByBqoD,EAAEpzE,QAAQwtN,OAAQ,QAAS,SAAUl0O,EAAS4R,GAEtE,IAAInc,EAAI,EACPiB,EAAUojG,EAAG1pF,MACbjR,EAAYa,EAAQb,WAAa,OACjCwJ,EAAW3I,EAAQ2I,UAAY,GAC/B0nN,EAAQrwN,EAAQqwN,OAAS,EACzB5+K,EAAgB,EAAR4+K,EAAY,EACpB9e,EAAQ37M,KAAK+F,MAAOqE,EAAQsV,SAAWm8B,GACvCwxE,EAAsB,OAAd9jH,GAAoC,SAAdA,EAAyB,MAAQ,OAC/D87mC,EAAiC,OAAd97mC,GAAoC,SAAdA,EACzCg6B,EAAY,CAAC,EACbmhlC,EAAa,CAAC,EACdC,EAAa,CAAC,EAEdP,EAAWtjnC,EAAQs2H,QAAQxoH,OAa5B,IAXAs1F,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAG7ByiC,EAAW8pF,IAAUg4/B,EAAiB,KAAO,MAAStymC,EACtD2xmC,EAAYr3/B,IAAUg4/B,EAAiB,KAAO,MAAoB,EAAXtymC,EACvD4xmC,EAAYt3/B,IAAUg4/B,EAAiB,KAAO,MAAoB,EAAXtymC,EAGvDjS,EAAQ02F,QAASj0D,EAAWo4K,EAAOvxM,EAAQ2zC,QAGnCl+C,EAAI46N,EAAO56N,IAClBiB,EACE02F,QAASkthC,EAAY/o6B,EAAOvxM,EAAQ2zC,QACpCy5C,QAASmthC,EAAYhp6B,EAAOvxM,EAAQ2zC,QAGvCj9C,EACE02F,QAASkthC,EAAY/o6B,EAAOvxM,EAAQ2zC,QACpCy5C,QAASj0D,EAAWo4K,EAAQ,EAAGvxM,EAAQ2zC,QACvCq5E,MAAOp7G,GAETkoF,EAAEpzE,QAAQ6gE,QAAS7wF,EAASsjnC,EAAUvokC,EAAQ,EAC/C,GAoByBqoD,EAAEpzE,QAAQwtN,OAAQ,QAAS,OAAQ,SAAUl0O,EAAS4R,GAC9E,IAAIspmC,EAAWC,EACdzknC,EAAUojG,EAAG1pF,MACbjN,EAAM,CACLizX,GAAI,CAAE,SAAU,OAChB0je,KAAM,CAAE,MAAO,UACfv/1B,KAAM,CAAE,QAAS,QACjBF,MAAO,CAAE,OAAQ,UAElBkgC,EAAOv6B,EAAQu6B,KACfp7B,EAAYa,EAAQb,WAAa,OACjC8jH,EAAsB,OAAd9jH,GAAoC,SAAdA,EAAyB,MAAQ,OAC/D87mC,EAAiC,OAAd97mC,GAAoC,SAAdA,EACzCwJ,EAAW3I,EAAQ2I,UAClBjS,EAAiB,QAARusH,EAAgB,cAAgB,eAAgB,GAC1D9pF,EAAY,CAAC,EAEd2gE,EAAEpzE,QAAQ2xlC,kBAAmB3hnC,GAE7BwknC,EAAYxknC,EAAQoinC,UACpBqC,EAAWzknC,EAAQwC,WAAY+pH,GAG/B9pF,EAAW8pF,IAAUg4/B,GAAkB,EAAI,GAAMtymC,EAAWwymC,EAC5DhilC,EAAUkG,KAAO3oC,EAAQoinC,UACzB3/kC,EAAUkG,KAAMl8B,EAAKhE,GAAa,IAAQg6B,EAAUkG,KAAMl8B,EAAKhE,GAAa,IAG9D,SAATo7B,IACJ7jC,EAAQoinC,QAAS3/kC,EAAUkG,MAC3B3oC,EAAQ6C,IAAK0pH,EAAK9pF,EAAW8pF,IAC7B9pF,EAAUkG,KAAO67kC,EACjB/hlC,EAAW8pF,GAAQk4/B,GAIpBzknC,EAAQ02F,QAASj0D,EAAW,CAC3B6zF,OAAO,EACP13G,SAAUtV,EAAQsV,SAClBq+B,OAAQ3zC,EAAQ2zC,OAChBlB,SAAU7gC,GAEZ,IAqBwB,IAAnBkoF,EAAE89gC,cACG99gC,EAAEpzE,QAAQwtN,OAAQ,WAAY,SAAUl0O,EAAS4R,GACzDkoF,EAAG1pF,MAAO4omC,SAAUh5mC,EAAS4R,EAC9B,GAsBDkoF,EAAE8gT,GAAGy8oB,UAAY,SAAU3giC,EAAS0knC,GACnC,IAAIj4mC,EAAKk4mC,EAASv13B,EAAKw13B,EAAoBC,EAC1ChjnC,EAAW7B,EAAQ6B,SAASC,cAE7B,MAAK,SAAWD,GAEf8inC,GADAl4mC,EAAMzM,EAAQ0B,YACAuL,QACRjN,EAAQ2nG,OAASg9gC,GAA0C,QAA/Bl4mC,EAAI5K,SAASC,iBAG/CstP,EAAMhsJ,EAAG,gBAAkBuhhC,EAAU,OAC1B72mC,OAAS,GAAKshP,EAAIzwH,GAAI,cAG7B,0CAA0C/iI,KAAMiG,IACpD+inC,GAAsB5knC,EAAQ0nD,YAQ7Bm9jC,EAAWzhhC,EAAGpjG,GAAUqnN,QAAS,YAAc,MAE9Cu95B,GAAsBC,EAASn9jC,UAIjCk9jC,EADW,MAAQ/inC,GACE7B,EAAQ2nG,MAER+8gC,EAGfE,GAAsBxhhC,EAAGpjG,GAAU2+H,GAAI,aAK/C,SAAkB3+H,GAEjB,IADA,IAAIgjH,EAAahjH,EAAQ6C,IAAK,cACP,YAAfmgH,GAEPA,GADAhjH,EAAUA,EAAQmB,UACG0B,IAAK,cAE3B,MAAsB,WAAfmgH,CACR,CAZ+DxkE,CAAS4kD,EAAGpjG,IAC3E,EAaAojG,EAAEsZ,OAAQtZ,EAAE0uM,KAAM,KAAO,CACxB6uvB,UAAW,SAAU3giC,GACpB,OAAOojG,EAAE8gT,GAAGy8oB,UAAW3giC,EAA0C,MAAjCojG,EAAE6tK,KAAMjxQ,EAAS,YAClD,IAGeojG,EAAE8gT,GAAGy8oB,UAQVv97B,EAAE50F,GAAGk7T,KAAO,WACtB,MAAiC,iBAAnBhwT,KAAM,GAAIgwT,KAAoBhwT,KAAK2tM,QAAS,QAAWjkH,EAAG1pF,KAAM,GAAIgwT,KACnF,EAmBqBtmO,EAAE8gT,GAAG4guB,eAAiB,CAC1CC,kBAAmB,WAClB,IAAIr7yB,EAAOtmO,EAAG1pF,MAGdyH,WAAY,WACX,IAAI80D,EAAYyzP,EAAKj6T,KAAM,2BAC3B2zF,EAAE94E,KAAM2rD,EAAW,WAClBv8D,KAAKuvQ,SACN,EACD,EACD,EAEA+71B,sBAAuB,WAEtB,GADAtrmC,KAAKgwT,KAAOhwT,KAAK1Z,QAAQ0pU,OACnBhwT,KAAKgwT,KAAK57T,OAAhB,CAIA,IAAImoE,EAAYv8D,KAAKgwT,KAAKj6T,KAAM,4BAA+B,GACzDwmE,EAAUnoE,QAGf4L,KAAKgwT,KAAKrlN,GAAI,sBAAuB3qG,KAAKqrmC,mBAE3C9uiC,EAAUzoE,KAAMkM,MAChBA,KAAKgwT,KAAKj6T,KAAM,0BAA2BwmE,EAT3C,CAUD,EAEAgviC,wBAAyB,WACxB,GAAMvrmC,KAAKgwT,KAAK57T,OAAhB,CAIA,IAAImoE,EAAYv8D,KAAKgwT,KAAKj6T,KAAM,2BAChCwmE,EAAUxvC,OAAQ28D,EAAE6rI,QAASv1N,KAAMu8D,GAAa,GAC3CA,EAAUnoE,OACd4L,KAAKgwT,KAAKj6T,KAAM,0BAA2BwmE,GAE3Cv8D,KAAKgwT,KACH/tD,WAAY,2BACZh1I,IAAK,sBATR,CAWD,GA0BsC,QAAlCvjC,EAAE50F,GAAG64G,OAAOxkB,UAAW,EAAG,KAK9BO,EAAE94E,KAAM,CAAE,QAAS,UAAY,SAAUvrB,EAAGkO,GAC3C,IAAIhB,EAAgB,UAATgB,EAAmB,CAAE,OAAQ,SAAY,CAAE,MAAO,UAC5Dyc,EAAOzc,EAAKnL,cACZyqD,EAAO,CACN+6C,WAAYlE,EAAE50F,GAAG84F,WACjBE,YAAapE,EAAE50F,GAAGg5F,YAClBvtC,WAAYmpC,EAAE50F,GAAGyrD,WACjBE,YAAaipC,EAAE50F,GAAG2rD,aAGpB,SAASn2D,EAAQo5Q,EAAM3wP,EAAMuoC,EAAQvsB,GAUpC,OATA26D,EAAE94E,KAAMre,EAAM,WACbwgB,GAAQpC,WAAY+4E,EAAEvgG,IAAKu6Q,EAAM,UAAY1jQ,QAAY,EACpDs7C,IACJvoC,GAAQpC,WAAY+4E,EAAEvgG,IAAKu6Q,EAAM,SAAW1jQ,KAAO,WAAe,GAE9D+uB,IACJhc,GAAQpC,WAAY+4E,EAAEvgG,IAAKu6Q,EAAM,SAAW1jQ,QAAY,EAE1D,GACO+S,CACR,CAEA22E,EAAE50F,GAAI,QAAUvB,GAAS,SAAUwf,GAClC,YAAcjc,IAATic,EACG8/B,EAAM,QAAUt/C,GAAO8M,KAAML,MAG9BA,KAAK4Q,KAAM,WACjB84E,EAAG1pF,MAAO7W,IAAK6mB,EAAM1lB,EAAQ0V,KAAM+S,GAAS,KAC7C,EACD,EAEA22E,EAAE50F,GAAI,QAAUvB,GAAS,SAAUwf,EAAMgc,GACxC,MAAqB,iBAAThc,EACJ8/B,EAAM,QAAUt/C,GAAO8M,KAAML,KAAM+S,GAGpC/S,KAAK4Q,KAAM,WACjB84E,EAAG1pF,MAAO7W,IAAK6mB,EAAM1lB,EAAQ0V,KAAM+S,GAAM,EAAMgc,GAAW,KAC3D,EACD,CACD,GAEA26D,EAAE50F,GAAG069B,QAAU,SAAU7n2B,GACxB,OAAO3nH,KAAK1M,IAAiB,MAAZq0H,EAChB3nH,KAAKgm9B,WAAahm9B,KAAKgm9B,WAAW/09B,OAAQ02H,GAE5C,GAmBaj+B,EAAE8gT,GAAG5yF,QAAU,CAC5Bq9vB,UAAW,EACX8D,MAAO,IACPvgT,OAAQ,GACRy9S,KAAM,GACNH,IAAK,GACLV,MAAO,GACP7hxB,OAAQ,GACRwixB,KAAM,GACNplzB,KAAM,GACNklzB,UAAW,GACXD,QAAS,GACToD,OAAQ,IACRpnzB,MAAO,GACP+jzB,MAAO,GACPT,IAAK,EACLc,GAAI,IAOgBts9B,EAAE8gT,GAAGoklB,gBACrBi2I,EAAiB,sCACd,SAAUl9+B,GAChB,OAAOA,EAAS5jI,QAAS8gnC,EAAgB,OAC1C,GAoBYn7gC,EAAE50F,GAAGy3C,OAAS,WAC1B,IAAIq9c,EAAUjiY,EAAU5pH,EAAIwuC,EAAQiwY,EAGpC,OAAKx8a,KAAM,GAAIusC,QAAUvsC,KAAM,GAAIusC,OAAOn4C,OAClC4L,KAAK+l9B,UAAW/l9B,KAAM,GAAIusC,SAMlCA,EAASvsC,KAAKuZ,GAAI,GAAIivF,QAAS,UAG/BzqG,EAAKiC,KAAKu3P,KAAM,SAQfilL,GAHAotE,EAAW5pf,KAAKuZ,GAAI,GAAIivF,UAAUt0D,QAGb5gD,IAAKs2f,EAASx1f,OAASw1f,EAAS4B,WAAaxrf,KAAKwrf,YAGvE7jY,EAAW,cAAgBj+B,EAAE8gT,GAAGoklB,eAAgB7w9B,GAAO,KAEvDwuC,EAASA,EAAOj5C,IAAKkpb,EAAU3hb,KAAM8sH,GAAW6n2B,QAAS7n2B,KAKnD3nH,KAAK+l9B,UAAWx56B,GACxB,EAmBmBm9C,EAAE50F,GAAGjH,aAAe,SAAU8o5B,GAChD,IAAI7t5B,EAAWkX,KAAK7W,IAAK,YACxBi8hC,EAAmC,aAAbt8hC,EACtByuqB,EAAgBo/O,EAAgB,uBAAyB,gBACzD9o5B,EAAemS,KAAKwoG,UAAUv3G,OAAQ,WACrC,IAAIxJ,EAASiiG,EAAG1pF,MAChB,QAAKolhC,GAAoD,WAA7B39hC,EAAO0B,IAAK,cAGjCouqB,EAAcr1qB,KAAMuF,EAAO0B,IAAK,YAAe1B,EAAO0B,IAAK,cACjE1B,EAAO0B,IAAK,cACd,GAAIowB,GAAI,GAET,MAAoB,UAAbzwB,GAAyB+E,EAAauG,OAE5CvG,EADA67F,EAAG1pF,KAAM,GAAI/Y,eAAiBwB,SAEhC,EAmBeihG,EAAEsZ,OAAQtZ,EAAE0uM,KAAM,KAAO,CACvCoz0B,SAAU,SAAUllnC,GACnB,IAAI2vU,EAAWvsO,EAAE6tK,KAAMjxQ,EAAS,YAC/B0knC,EAA0B,MAAZ/0yB,EACf,QAAU+0yB,GAAe/0yB,GAAY,IAAOvsO,EAAE8gT,GAAGy8oB,UAAW3giC,EAAS0knC,EACtE,IAoBcthhC,EAAE50F,GAAGkuG,OAAQ,CAC3B4F,UACKwhmB,EAAO,EAEJ,WACN,OAAOpqsB,KAAK4Q,KAAM,WACX5Q,KAAKjC,KACViC,KAAKjC,GAAK,YAAeqssB,EAE3B,EACD,GAGDqha,eAAgB,WACf,OAAOzrmC,KAAK4Q,KAAM,WACZ,cAAc1uB,KAAM8d,KAAKjC,KAC7B2rF,EAAG1pF,MAAOqiQ,WAAY,KAExB,EACD,IA0BsB34K,EAAEm9Q,OAAQ,eAAgB,CAChDhiS,QAAS,SACTj1E,QAAS,CACRm0C,OAAQ,EACRi5C,QAAS,CAAC,EACVqwB,QAAS,CACR,sBAAuB,gBACvB,gCAAiC,gBACjC,uBAAwB,oBAEzBq+/B,aAAa,EACbv/lC,MAAO,QACP0/E,OAAQ,uCACR8/gC,YAAa,OACbC,MAAO,CACNC,aAAc,uBACdhghC,OAAQ,wBAITixjB,SAAU,KACVgvd,eAAgB,MAGjBC,UAAW,CACV99/B,eAAgB,OAChBC,kBAAmB,OACnBhjD,WAAY,OACZC,cAAe,OACfvkE,OAAQ,QAGTqk5B,UAAW,CACVh9xB,eAAgB,OAChBC,kBAAmB,OACnBhjD,WAAY,OACZC,cAAe,OACfvkE,OAAQ,QAGTq+7B,QAAS,WACR,IAAIr17B,EAAUoQ,KAAKpQ,QAEnBoQ,KAAKko8B,SAAWlo8B,KAAKgsmC,SAAWtihC,IAChC1pF,KAAK0hmC,UAAW,eAAgB,6BAChC1hmC,KAAK1Z,QAAQixQ,KAAM,OAAQ,WAGrB3nQ,EAAQ87mC,cAAoC,IAAnB97mC,EAAQm0C,QAAsC,MAAlBn0C,EAAQm0C,SAClEn0C,EAAQm0C,OAAS,GAGlB/jC,KAAKismC,iBAGAr8mC,EAAQm0C,OAAS,IACrBn0C,EAAQm0C,QAAU/jC,KAAKgnF,QAAQ5yF,QAEhC4L,KAAK2hC,UACN,EAEAm/jC,oBAAqB,WACpB,MAAO,CACNj1gC,OAAQ7rF,KAAK+jC,OACbu2zB,MAAQt61B,KAAK+jC,OAAO3vC,OAAe4L,KAAK+jC,OAAOj8C,OAAlB4hG,IAE/B,EAEAwihC,aAAc,WACb,IAAIz3vB,EAAMj9P,EACTo0/B,EAAQ5rmC,KAAKpQ,QAAQg8mC,MAEjBA,IACJn3vB,EAAO/qR,EAAG,UACV1pF,KAAK0hmC,UAAWjtvB,EAAM,2BAA4B,WAAam3vB,EAAM//gC,QACrE4oR,EAAK+inB,UAAWx39B,KAAKgnF,SACrBwwB,EAAWx3G,KAAK+jC,OAAOyzE,SAAU,6BACjCx3G,KAAK+gmC,aAAcvp/B,EAAUo0/B,EAAM//gC,QACjC61gC,UAAWlq/B,EAAU,KAAMo0/B,EAAMC,cACjCnK,UAAW1hmC,KAAKgnF,QAAS,sBAE7B,EAEAmlhC,cAAe,WACdnsmC,KAAK+gmC,aAAc/gmC,KAAKgnF,QAAS,sBACjChnF,KAAKgnF,QAAQwwB,SAAU,6BAA8B50E,QACtD,EAEAoI,SAAU,WACT,IAAIs4L,EAGJtjO,KAAK1Z,QAAQ+7Q,WAAY,QAGzBriQ,KAAKgnF,QACHq7K,WAAY,2DACZop2B,iBAEFzrmC,KAAKmsmC,gBAGL7o4B,EAAWtjO,KAAKgnF,QAAQl/F,OACtBqB,IAAK,UAAW,IAChBk5Q,WAAY,oCACZop2B,iBAEgC,YAA7BzrmC,KAAKpQ,QAAQ+7mC,aACjBro4B,EAASn6O,IAAK,SAAU,GAE1B,EAEA+3mC,WAAY,SAAU12mC,EAAK7E,GACb,WAAR6E,GAOQ,UAARA,IACCwV,KAAKpQ,QAAQuc,OACjBnM,KAAKu1Z,KAAMv1Z,KAAKgnF,QAAShnF,KAAKpQ,QAAQuc,OAEvCnM,KAAKosmC,aAAczmnC,IAGpBqa,KAAKgE,OAAQxZ,EAAK7E,GAGL,gBAAR6E,GAA0B7E,IAAiC,IAAxBqa,KAAKpQ,QAAQm0C,QACpD/jC,KAAKqsmC,UAAW,GAGJ,UAAR7hnC,IACJwV,KAAKmsmC,gBACAxmnC,GACJqa,KAAKksmC,iBArBNlsmC,KAAKqsmC,UAAW1mnC,EAwBlB,EAEAk7mC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAK1Z,QAAQixQ,KAAM,gBAAiB5xQ,GAKpCqa,KAAKshmC,aAAc,KAAM,sBAAuB37mC,GAChDqa,KAAKshmC,aAActhmC,KAAKgnF,QAAQ1zF,IAAK0M,KAAKgnF,QAAQl/F,QAAU,KAAM,sBAC/DnC,EACJ,EAEA2mnC,SAAU,SAAUngmC,GACnB,IAAKA,EAAMi5a,SAAUj5a,EAAM2lR,QAA3B,CAIA,IAAI8lB,EAAUluN,EAAE8gT,GAAG5yF,QAClBxjT,EAAS4L,KAAKgnF,QAAQ5yF,OACtBwmrB,EAAe56qB,KAAKgnF,QAAQxwF,MAAO2V,EAAMpe,QACzCw+mC,GAAU,EAEX,OAASpgmC,EAAMyrS,SACf,KAAKA,EAAQhmD,MACb,KAAKgmD,EAAQq+vB,KACZs2D,EAAUvsmC,KAAKgnF,SAAW4zlB,EAAe,GAAMxmrB,GAC/C,MACD,KAAKwjT,EAAQjnD,KACb,KAAKinD,EAAQo+vB,GACZu2D,EAAUvsmC,KAAKgnF,SAAW4zlB,EAAe,EAAIxmrB,GAAWA,GACxD,MACD,KAAKwjT,EAAQ+9vB,MACb,KAAK/9vB,EAAQw9vB,MACZp1iC,KAAK8/D,cAAe3zD,GACpB,MACD,KAAKyrS,EAAQm+vB,KACZw2D,EAAUvsmC,KAAKgnF,QAAS,GACxB,MACD,KAAK4wN,EAAQk+vB,IACZy2D,EAAUvsmC,KAAKgnF,QAAS5yF,EAAS,GAI7Bm4mC,IACJ7ihC,EAAGv9E,EAAMpe,QAASwpQ,KAAM,YAAa,GACrC7tK,EAAG6ihC,GAAUh12B,KAAM,WAAY,GAC/B7tK,EAAG6ihC,GAAUpnjC,QAAS,SACtBh5C,EAAMwgH,iBAhCP,CAkCD,EAEA6/+B,cAAe,SAAUrgmC,GACnBA,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQo+vB,IAAM7piC,EAAM2lR,SAC/CpoM,EAAGv9E,EAAM+kU,eAAgBr2S,OAAOsqB,QAAS,QAE3C,EAEAoqN,QAAS,WACR,IAAI3/Q,EAAUoQ,KAAKpQ,QACnBoQ,KAAKismC,kBAGqB,IAAnBr8mC,EAAQm0C,SAA4C,IAAxBn0C,EAAQ87mC,cACxC1rmC,KAAKgnF,QAAQ5yF,QACfxE,EAAQm0C,QAAS,EACjB/jC,KAAK+jC,OAAS2lD,MAGgB,IAAnB95F,EAAQm0C,OACnB/jC,KAAKqsmC,UAAW,GAGLrsmC,KAAK+jC,OAAO3vC,SAAWs1F,EAAEliG,SAAUwY,KAAK1Z,QAAS,GAAK0Z,KAAK+jC,OAAQ,IAGzE/jC,KAAKgnF,QAAQ5yF,SAAW4L,KAAKgnF,QAAQnsF,KAAM,sBAAuBzG,QACtExE,EAAQm0C,QAAS,EACjB/jC,KAAK+jC,OAAS2lD,KAId1pF,KAAKqsmC,UAAW7mnC,KAAKmE,IAAK,EAAGiG,EAAQm0C,OAAS,IAO/Cn0C,EAAQm0C,OAAS/jC,KAAKgnF,QAAQxwF,MAAOwJ,KAAK+jC,QAG3C/jC,KAAKmsmC,gBAELnsmC,KAAK2hC,UACN,EAEAsqkC,eAAgB,WACf,IAAIQ,EAAczsmC,KAAKgnF,QACtB0lhC,EAAa1smC,KAAK2smC,OAEnB3smC,KAAKgnF,QAAUhnF,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQi8F,QAC/C7rF,KAAK0hmC,UAAW1hmC,KAAKgnF,QAAS,oDAC7B,oBAEDhnF,KAAK2smC,OAAS3smC,KAAKgnF,QAAQl/F,OAAOmJ,OAAQ,sCAAuC8zC,OACjF/kC,KAAK0hmC,UAAW1hmC,KAAK2smC,OAAQ,uBAAwB,qCAGhDD,IACJ1smC,KAAKu1Z,KAAMk3sB,EAAYzv4B,IAAKh9N,KAAKgnF,UACjChnF,KAAKu1Z,KAAMm3sB,EAAW1v4B,IAAKh9N,KAAK2smC,SAElC,EAEAhrkC,SAAU,WACT,IAAI4W,EACH3oD,EAAUoQ,KAAKpQ,QACf+7mC,EAAc/7mC,EAAQ+7mC,YACtBlknC,EAASuY,KAAK1Z,QAAQmB,SAEvBuY,KAAK+jC,OAAS/jC,KAAK4smC,YAAah9mC,EAAQm0C,QACxC/jC,KAAK0hmC,UAAW1hmC,KAAK+jC,OAAQ,6BAA8B,mBACzDg9jC,aAAc/gmC,KAAK+jC,OAAQ,iCAC7B/jC,KAAK0hmC,UAAW1hmC,KAAK+jC,OAAOj8C,OAAQ,+BACpCkY,KAAK+jC,OAAOj8C,OAAO88C,OAEnB5kC,KAAKgnF,QACHuwK,KAAM,OAAQ,OACd3mP,KAAM,WACN,IAAIi7E,EAASnC,EAAG1pF,MACf6smC,EAAWhhhC,EAAO+c,WAAW2uJ,KAAM,MACnC+imB,EAAQzuwB,EAAO/jG,OACfglnC,EAAUxyQ,EAAM1xvB,WAAW2uJ,KAAM,MAClC1rK,EAAO0rK,KAAM,gBAAiBu12B,GAC9BxyQ,EAAM/imB,KAAM,kBAAmBs12B,EAChC,GACC/knC,OACCyvQ,KAAM,OAAQ,YAEjBv3P,KAAKgnF,QACHg2I,IAAKh9N,KAAK+jC,QACTwzN,KAAM,CACN,gBAAiB,QACjB,gBAAiB,QACjB0+D,UAAW,IAEXnuU,OACCyvQ,KAAM,CACN,cAAe,SAEfxyN,OAGE/kC,KAAK+jC,OAAO3vC,OAGjB4L,KAAK+jC,OAAOwzN,KAAM,CACjB,gBAAiB,OACjB,gBAAiB,OACjB0+D,SAAU,IAETnuU,OACCyvQ,KAAM,CACN,cAAe,UATlBv3P,KAAKgnF,QAAQztE,GAAI,GAAIg+O,KAAM,WAAY,GAaxCv3P,KAAKksmC,eAELlsmC,KAAKosmC,aAAcx8mC,EAAQuc,OAEN,SAAhBw/lC,GACJpzjC,EAAY9wD,EAAOb,SACnBoZ,KAAK1Z,QAAQklgB,SAAU,YAAa56e,KAAM,WACzC,IAAI8yP,EAAOh6K,EAAG1pF,MACblX,EAAW46Q,EAAKv6Q,IAAK,YAEJ,aAAbL,GAAwC,UAAbA,IAGhCyvD,GAAamrN,EAAKjjN,aAAa,GAChC,GAEAzgD,KAAKgnF,QAAQp2E,KAAM,WAClB2nC,GAAamxC,EAAG1pF,MAAOygD,aAAa,EACrC,GAEAzgD,KAAKgnF,QAAQl/F,OACX8oB,KAAM,WACN84E,EAAG1pF,MAAOpZ,OAAQpB,KAAKmE,IAAK,EAAG4uD,EAC9BmxC,EAAG1pF,MAAO8tF,cAAgBpE,EAAG1pF,MAAOpZ,UACtC,GACCuC,IAAK,WAAY,SACQ,SAAhBwinC,IACXpzjC,EAAY,EACZv4C,KAAKgnF,QAAQl/F,OACX8oB,KAAM,WACN,IAAIslZ,EAAYxsU,EAAG1pF,MAAOilH,GAAI,YACxBixS,GACLxsU,EAAG1pF,MAAO4kC,OAEX2T,EAAY/yD,KAAKmE,IAAK4uD,EAAWmxC,EAAG1pF,MAAO7W,IAAK,SAAU,IAAKvC,UACzDsva,GACLxsU,EAAG1pF,MAAO+kC,MAEZ,GACCn+C,OAAQ2xD,GAEZ,EAEA8zjC,UAAW,SAAU71mC,GACpB,IAAIutC,EAAS/jC,KAAK4smC,YAAap2mC,GAAS,GAGnCutC,IAAW/jC,KAAK+jC,OAAQ,KAK7BA,EAASA,GAAU/jC,KAAK+jC,OAAQ,GAEhC/jC,KAAK8/D,cAAe,CACnB/xE,OAAQg2C,EACRmtS,cAAentS,EACf4oF,eAAgBjjC,EAAE95E,OAEpB,EAEAg9lC,YAAa,SAAUjl/B,GACtB,MAA2B,iBAAbA,EAAwB3nH,KAAKgnF,QAAQztE,GAAIouG,GAAaj+B,GACrE,EAEA0ihC,aAAc,SAAUjgmC,GACvB,IAAIod,EAAS,CACZ89yB,QAAS,YAELl7zB,GACJu9E,EAAE94E,KAAMzE,EAAMjrB,MAAO,KAAO,SAAUsV,EAAOu+F,GAC5CxrE,EAAQwrE,GAAc,eACvB,GAGD/0F,KAAKu1Z,KAAMv1Z,KAAKgnF,QAAQ1zF,IAAK0M,KAAKgnF,QAAQl/F,SAC1CkY,KAAKgszB,IAAKhszB,KAAKgnF,QAASz9D,GACxBvpB,KAAKgszB,IAAKhszB,KAAKgnF,QAAQl/F,OAAQ,CAAEu/0B,QAAS,kBAC1Crn0B,KAAK8hmC,WAAY9hmC,KAAKgnF,SACtBhnF,KAAK+hmC,WAAY/hmC,KAAKgnF,QACvB,EAEAlnB,cAAe,SAAU3zD,GACxB,IAAI4gmC,EAAgBC,EACnBp9mC,EAAUoQ,KAAKpQ,QACfm0C,EAAS/jC,KAAK+jC,OACdkpkC,EAAUvjhC,EAAGv9E,EAAM+kU,eACnBg8xB,EAAkBD,EAAS,KAAQlpkC,EAAQ,GAC3C0n2B,EAAayhO,GAAmBt9mC,EAAQ87mC,YACxCyB,EAAS1hO,EAAa/hzB,IAAMujhC,EAAQnlnC,OACpCslnC,EAASrpkC,EAAOj8C,OAChBulnC,EAAY,CACXC,UAAWvpkC,EACXwpkC,SAAUH,EACVI,UAAW/hO,EAAa/hzB,IAAMujhC,EAC9BQ,SAAUN,GAGZhhmC,EAAMwgH,iBAKFug/B,IAAoBt9mC,EAAQ87mC,cAG4B,IAAxD1rmC,KAAKkl7B,SAAU,iBAAkB/46B,EAAOkhmC,KAI5Cz9mC,EAAQm0C,QAAS0n2B,GAAqBzr4B,KAAKgnF,QAAQxwF,MAAOy2mC,GAI1DjtmC,KAAK+jC,OAASmpkC,EAAkBxjhC,IAAMujhC,EACtCjtmC,KAAK0tmC,QAASL,GAIdrtmC,KAAK+gmC,aAAch9jC,EAAQ,6BAA8B,mBACpDn0C,EAAQg8mC,QACZmB,EAAiBhpkC,EAAOyzE,SAAU,6BAClCx3G,KAAK+gmC,aAAcgM,EAAgB,KAAMn9mC,EAAQg8mC,MAAMC,cACrDnK,UAAWqL,EAAgB,KAAMn9mC,EAAQg8mC,MAAM//gC,SAG5CqhhC,IACLltmC,KAAK+gmC,aAAckM,EAAS,iCAC1BvL,UAAWuL,EAAS,6BAA8B,mBAC/Cr9mC,EAAQg8mC,QACZoB,EAAkBC,EAAQz1/B,SAAU,6BACpCx3G,KAAK+gmC,aAAciM,EAAiB,KAAMp9mC,EAAQg8mC,MAAM//gC,QACtD61gC,UAAWsL,EAAiB,KAAMp9mC,EAAQg8mC,MAAMC,eAGnD7rmC,KAAK0hmC,UAAWuL,EAAQnlnC,OAAQ,gCAElC,EAEA4lnC,QAAS,SAAU33mC,GAClB,IAAIo3mC,EAASp3mC,EAAK03mC,SACjBL,EAASptmC,KAAKko8B,SAAS9z8B,OAAS4L,KAAKko8B,SAAWny8B,EAAKw3mC,SAGtDvtmC,KAAKko8B,SAAS508B,IAAK0M,KAAKgsmC,UAAWtmmC,MAAM,GAAM,GAC/C1F,KAAKko8B,SAAWilK,EAChBntmC,KAAKgsmC,SAAWoB,EAEXptmC,KAAKpQ,QAAQotF,QACjBh9E,KAAKq5zB,SAAU8zS,EAAQC,EAAQr3mC,IAE/Bq3mC,EAAOrokC,OACPookC,EAAOvokC,OACP5kC,KAAK2tmC,gBAAiB53mC,IAGvBq3mC,EAAO712B,KAAM,CACZ,cAAe,SAEhB612B,EAAOvykC,OAAO08N,KAAM,CACnB,gBAAiB,QACjB,gBAAiB,UAMb412B,EAAO/4mC,QAAUg5mC,EAAOh5mC,OAC5Bg5mC,EAAOvykC,OAAO08N,KAAM,CACnB,UAAa,EACb,gBAAiB,UAEP412B,EAAO/4mC,QAClB4L,KAAKgnF,QAAQ/1F,OAAQ,WACpB,OAAwD,IAAjDk1B,SAAUujE,EAAG1pF,MAAOu3P,KAAM,YAAc,GAChD,GACEA,KAAM,YAAa,GAGtB412B,EACE512B,KAAM,cAAe,SACrB18N,OACC08N,KAAM,CACN,gBAAiB,OACjB,gBAAiB,OACjB0+D,SAAU,GAEd,EAEAojgB,SAAU,SAAU8zS,EAAQC,EAAQr3mC,GACnC,IAAI4iD,EAAOpV,EAAQr+B,EAClBoxM,EAAOt2M,KACPmp8B,EAAS,EACTnt6B,EAAYmxkC,EAAOhknC,IAAK,cACxBug2B,EAAOyjR,EAAO/4mC,UACVg5mC,EAAOh5mC,QAAY+4mC,EAAO32mC,QAAU42mC,EAAO52mC,SAC/CwmF,EAAUh9E,KAAKpQ,QAAQotF,SAAW,CAAC,EACnCptF,EAAU851B,GAAQ1swB,EAAQ0swB,MAAQ1swB,EAClC36C,EAAW,WACVi0K,EAAKq35B,gBAAiB53mC,EACvB,EAaD,MAXwB,iBAAZnG,IACXsV,EAAWtV,GAEY,iBAAZA,IACX2zC,EAAS3zC,GAIV2zC,EAASA,GAAU3zC,EAAQ2zC,QAAUy5C,EAAQz5C,OAC7Cr+B,EAAWA,GAAYtV,EAAQsV,UAAY83E,EAAQ93E,SAE7CkomC,EAAOh5mC,OAGP+4mC,EAAO/4mC,QAIbukD,EAAQw0jC,EAAOvokC,OAAO6b,cACtB2sjC,EAAOpwhC,QAASh9E,KAAK+rmC,UAAW,CAC/B7mmC,SAAUA,EACVq+B,OAAQA,EACRjiC,KAAM,SAAUwH,EAAK6oM,GACpBA,EAAG7oM,IAAMtjB,KAAK+F,MAAOud,EACtB,SAEDqkmC,EACEpokC,OACAi4C,QAASh9E,KAAKir4B,UAAW,CACzB/l4B,SAAUA,EACVq+B,OAAQA,EACRlB,SAAUA,EACV/gC,KAAM,SAAUwH,EAAK6oM,GACpBA,EAAG7oM,IAAMtjB,KAAK+F,MAAOud,GACJ,WAAZ6oM,EAAGr/K,KACY,gBAAd0J,IACJmt6B,GAAUx3vB,EAAG7oM,KAE0B,YAA7BwtM,EAAK1mN,QAAQ+7mC,cACxBh65B,EAAG7oM,IAAMtjB,KAAK+F,MAAOotD,EAAQy0jC,EAAO3sjC,cAAgB0o5B,GACpDA,EAAS,EAEX,KA3BMikK,EAAOpwhC,QAASh9E,KAAK+rmC,UAAW7mmC,EAAUq+B,EAAQlB,GAHlD8qkC,EAAOnwhC,QAASh9E,KAAKir4B,UAAW/l4B,EAAUq+B,EAAQlB,EAgC3D,EAEAsrkC,gBAAiB,SAAU53mC,GAC1B,IAAIq3mC,EAASr3mC,EAAKw3mC,SACjB1ykC,EAAOuykC,EAAOvykC,OAEf76B,KAAK+gmC,aAAcqM,EAAQ,+BAC3BptmC,KAAK+gmC,aAAclmkC,EAAM,8BACvB6mkC,UAAW7mkC,EAAM,iCAGduykC,EAAOh5mC,SACXg5mC,EAAO3lnC,SAAU,GAAIqiH,UAAYsjgC,EAAO3lnC,SAAU,GAAIqiH,WAEvD9pG,KAAKkl7B,SAAU,WAAY,KAAMnv7B,EAClC,IAKuB2zF,EAAE8gT,GAAG+plB,kBAAoB,SAAU9r+B,GAC1D,IAAI6wb,EAIJ,IACCA,EAAgB7wb,EAAS6wb,aAC1B,CAAE,MAAQrva,GACTqva,EAAgB7wb,EAASiF,IAC1B,CAgBA,OAXM4rb,IACLA,EAAgB7wb,EAASiF,MAMpB4rb,EAAcnxb,WACnBmxb,EAAgB7wb,EAASiF,MAGnB4rb,CACR,EAuBkB5vV,EAAEm9Q,OAAQ,UAAW,CACtChiS,QAAS,SACT27hC,eAAgB,OAChB/8jC,MAAO,IACP7zC,QAAS,CACRg8mC,MAAO,CACNgC,QAAS,qBAEV15kC,MAAO,MACP25kC,MAAO,KACP/knC,SAAU,CACT8nmB,GAAI,WACJlgO,GAAI,aAELpyX,KAAM,OAGNyyF,KAAM,KACNC,MAAO,KACPi/N,OAAQ,MAGTg1nB,QAAS,WACRjl7B,KAAK8tmC,WAAa9tmC,KAAK1Z,QAIvB0Z,KAAK+tmC,cAAe,EACpB/tmC,KAAK1Z,QACHsiH,WACA2uJ,KAAM,CACNj5P,KAAM0B,KAAKpQ,QAAQ0O,KACnB23T,SAAU,IAGZj2T,KAAK0hmC,UAAW,UAAW,+BAC3B1hmC,KAAKgszB,IAAK,CAIT,0BAA2B,SAAU7/yB,GACpCA,EAAMwgH,gBACP,EACA,sBAAuB,SAAUxgH,GAChC,IAAIpe,EAAS27F,EAAGv9E,EAAMpe,QAClBg2C,EAAS2lD,EAAGA,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,MACjDuX,KAAK+tmC,cAAgBhgnC,EAAOivO,IAAK,sBAAuB5oO,SAC7D4L,KAAKiwT,OAAQ9jT,GAGPA,EAAMk0U,yBACXrgV,KAAK+tmC,cAAe,GAIhBhgnC,EAAO4F,IAAK,YAAaS,OAC7B4L,KAAK8nf,OAAQ37e,IACDnM,KAAK1Z,QAAQ2+H,GAAI,WAC5BlhF,EAAO4pK,QAAS,YAAav5M,SAG9B4L,KAAK1Z,QAAQ6+D,QAAS,QAAS,EAAE,IAI5BnlD,KAAK+jC,QAAuD,IAA7C/jC,KAAK+jC,OAAOykE,QAAS,YAAap0G,QACrDuT,aAAc3H,KAAKoH,QAIvB,EACA,2BAA4B,SAAU+E,GAKrC,IAAKnM,KAAKgumC,eAAV,CAIA,IAAIC,EAAevkhC,EAAGv9E,EAAMpe,QAAS4/M,QAAS,iBAC7C5/M,EAAS27F,EAAGv9E,EAAM+kU,eAGd+8xB,EAAc,KAAQlgnC,EAAQ,KAMnCiS,KAAK+gmC,aAAchzmC,EAAOy9f,WAAWh0Y,SAAU,oBAC9C,KAAM,mBACPx3G,KAAKgxF,MAAO7kF,EAAOpe,GAdnB,CAeD,EACAsvQ,WAAY,cACZ,sBAAuB,cACvBrsK,MAAO,SAAU7kF,EAAO+hmC,GAIvB,IAAIl7lC,EAAOhT,KAAK+jC,QAAU/jC,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQskC,OAAQ3a,GAAI,GAEhE20lC,GACLlumC,KAAKgxF,MAAO7kF,EAAO6G,EAErB,EACA+9E,KAAM,SAAU5kF,GACfnM,KAAKy1kB,OAAQ,YACQ/rf,EAAEliG,SACrBwY,KAAK1Z,QAAS,GACdojG,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,MAGvCuX,KAAKmumC,YAAahimC,EAEpB,EACD,EACAk7zB,QAAS,aAGVrn0B,KAAKuvQ,UAGLvvQ,KAAKgszB,IAAKhszB,KAAKvX,SAAU,CACxB2nI,MAAO,SAAUjkH,GACXnM,KAAKoumC,sBAAuBjimC,IAChCnM,KAAKmumC,YAAahimC,GAInBnM,KAAK+tmC,cAAe,CACrB,GAEF,EAEA/ikC,SAAU,WACT,IAECqjkC,EAFWrumC,KAAK1Z,QAAQuU,KAAM,iBAC5BwnQ,WAAY,sBACG7qJ,SAAU,yBACzBi0/B,iBACApp2B,WAAY,+BAGfriQ,KAAK1Z,QACH+7Q,WAAY,yBACZxnQ,KAAM,YAAa209B,UAClBnttB,WAAY,yEAEZop2B,iBACA7mkC,OAEHypkC,EAAS72/B,WAAW5mG,KAAM,WACzB,IAAI8yP,EAAOh6K,EAAG1pF,MACT0jQ,EAAK3tQ,KAAM,0BACf2tQ,EAAK9gO,QAEP,EACD,EAEA0pkC,SAAU,SAAUngmC,GACnB,IAAInoB,EAAO62C,EAAMg3+B,EAAWr5+B,EAC3Bm0F,GAAiB,EAElB,OAASxgH,EAAMyrS,SACf,KAAKluN,EAAE8gT,GAAG5yF,QAAQg+vB,QACjB51iC,KAAKsumC,aAAcnimC,GACnB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQi+vB,UACjB71iC,KAAKuumC,SAAUpimC,GACf,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQm+vB,KACjB/1iC,KAAK49zB,MAAO,QAAS,QAASzxzB,GAC9B,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQk+vB,IACjB91iC,KAAK49zB,MAAO,OAAQ,OAAQzxzB,GAC5B,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQo+vB,GACjBh2iC,KAAKovB,SAAUjjB,GACf,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQq+vB,KACjBj2iC,KAAKlY,KAAMqkB,GACX,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQjnD,KACjB3wP,KAAKkn0B,SAAU/6zB,GACf,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQhmD,MACZ5xP,KAAK+jC,SAAW/jC,KAAK+jC,OAAOkhF,GAAI,uBACpCjlH,KAAK8nf,OAAQ37e,GAEd,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQw9vB,MAClB,KAAK1r9B,EAAE8gT,GAAG5yF,QAAQ+9vB,MACjB31iC,KAAKqsmC,UAAWlgmC,GAChB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQrkB,OACjBvzR,KAAKkn0B,SAAU/6zB,GACf,MACD,QACCwgH,GAAiB,EACjB9xF,EAAO76B,KAAKgumC,gBAAkB,GAC9Bx1kC,GAAO,EAGPq5+B,EAAY1lgC,EAAMyrS,SAAW,IAAMzrS,EAAMyrS,SAAW,KACjDzrS,EAAMyrS,QAAU,IAAK5wT,WAAauZ,OAAOysF,aAAc7gF,EAAMyrS,SAEhEjwS,aAAc3H,KAAKwumC,aAEd38F,IAAch3+B,EAClBrC,GAAO,EAEPq5+B,EAAYh3+B,EAAOg3+B,EAGpB7thC,EAAQgc,KAAKyumC,iBAAkB58F,IAC/B7thC,EAAQw0C,IAA+C,IAAvCx0C,EAAMwS,MAAOwJ,KAAK+jC,OAAOj8C,QACxCkY,KAAK+jC,OAAO2r7B,QAAS,iBACrB1r+B,GAIWoQ,SACXy9gC,EAAYtxgC,OAAOysF,aAAc7gF,EAAMyrS,SACvC5zT,EAAQgc,KAAKyumC,iBAAkB58F,IAG3B7thC,EAAMoQ,QACV4L,KAAKgxF,MAAO7kF,EAAOnoB,GACnBgc,KAAKgumC,eAAiBn8F,EACtB7xgC,KAAKwumC,YAAcxumC,KAAKy1kB,OAAQ,kBACxBz1kB,KAAKgumC,cACb,EAAG,aAEIhumC,KAAKgumC,eAITrh/B,GACJxgH,EAAMwgH,gBAER,EAEA0/+B,UAAW,SAAUlgmC,GACfnM,KAAK+jC,SAAW/jC,KAAK+jC,OAAOkhF,GAAI,wBAC/BjlH,KAAK+jC,OAAOyzE,SAAU,0BAA2BpjH,OACrD4L,KAAK8nf,OAAQ37e,GAEbnM,KAAKiwT,OAAQ9jT,GAGhB,EAEAojQ,QAAS,WACR,IAAWr7O,EAAOw6kC,EAAaC,EAAUC,EACxCt45B,EAAOt2M,KACPy0W,EAAOz0W,KAAKpQ,QAAQg8mC,MAAMgC,QAC1BS,EAAWrumC,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQi+mC,OAE5C7tmC,KAAKshmC,aAAc,gBAAiB,OAAQthmC,KAAK1Z,QAAQuU,KAAM,YAAazG,QAG5Es6mC,EAAcL,EAASp9mC,OAAQ,kBAC7B8zC,OACAwyN,KAAM,CACNj5P,KAAM0B,KAAKpQ,QAAQ0O,KACnB,cAAe,OACf,gBAAiB,UAEjBsS,KAAM,WACN,IAAIwu2B,EAAO11xB,EAAG1pF,MACbgT,EAAOos2B,EAAKvk1B,OACZg0kC,EAAenlhC,EAAG,UAAW3zF,KAAM,yBAAyB,GAE7DugN,EAAKor5B,UAAWmN,EAAc,eAAgB,WAAap6vB,GAC3DzhW,EACEukP,KAAM,gBAAiB,QACvB8M,QAASwq2B,GACXzvP,EAAK7nnB,KAAM,kBAAmBvkP,EAAKukP,KAAM,MAC1C,GAEDv3P,KAAK0hmC,UAAWgN,EAAa,UAAW,yCAGxCx6kC,EADQm6kC,EAAS/6mC,IAAK0M,KAAK1Z,SACbuU,KAAMmF,KAAKpQ,QAAQskC,QAG3B8oM,IAAK,iBAAkBpsN,KAAM,WAClC,IAAIoC,EAAO02E,EAAG1pF,MACTs2M,EAAKw45B,WAAY97lC,IACrBsjM,EAAKor5B,UAAW1ulC,EAAM,kBAAmB,oBAE3C,GAIA47lC,GADAD,EAAWz6kC,EAAM8oM,IAAK,oCACCxlH,WACrBwlH,IAAK,YACJp0H,WACA2uJ,KAAM,CACN0+D,UAAW,EACX33T,KAAM0B,KAAK+umC,cAEd/umC,KAAK0hmC,UAAWiN,EAAU,gBACxBjN,UAAWkN,EAAa,wBAG1B16kC,EAAMjjC,OAAQ,sBAAuBsmQ,KAAM,gBAAiB,QAGvDv3P,KAAK+jC,SAAW2lD,EAAEliG,SAAUwY,KAAK1Z,QAAS,GAAK0Z,KAAK+jC,OAAQ,KAChE/jC,KAAK+wF,MAEP,EAEAg+gC,UAAW,WACV,MAAO,CACN3vP,KAAM,WACN4vP,QAAS,UACPhvmC,KAAKpQ,QAAQ0O,KACjB,EAEA4imC,WAAY,SAAU12mC,EAAK7E,GAC1B,GAAa,UAAR6E,EAAkB,CACtB,IAAIohnC,EAAQ5rmC,KAAK1Z,QAAQuU,KAAM,iBAC/BmF,KAAK+gmC,aAAc6K,EAAO,KAAM5rmC,KAAKpQ,QAAQg8mC,MAAMgC,SACjDlM,UAAWkK,EAAO,KAAMjmnC,EAAMionC,QACjC,CACA5tmC,KAAKgE,OAAQxZ,EAAK7E,EACnB,EAEAk7mC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAK1Z,QAAQixQ,KAAM,gBAAiBh3P,OAAQ5a,IAC5Cqa,KAAKshmC,aAAc,KAAM,sBAAuB37mC,EACjD,EAEAqrG,MAAO,SAAU7kF,EAAO6G,GACvB,IAAIojnB,EAAQs/D,EAASu5a,EACrBjvmC,KAAK+wF,KAAM5kF,EAAOA,GAAwB,UAAfA,EAAM6D,MAEjChQ,KAAKkvmC,gBAAiBl8lC,GAEtBhT,KAAK+jC,OAAS/wB,EAAKw7C,QAEnBknoB,EAAU11rB,KAAK+jC,OAAOyzE,SAAU,yBAChCx3G,KAAK0hmC,UAAWhsa,EAAS,KAAM,mBAI1B11rB,KAAKpQ,QAAQ0O,MACjB0B,KAAK1Z,QAAQixQ,KAAM,wBAAyBm+b,EAAQn+b,KAAM,OAI3D032B,EAAejvmC,KAAK+jC,OAClBt8C,SACCkmN,QAAS,iBACRn2F,SAAU,yBACdx3G,KAAK0hmC,UAAWuN,EAAc,KAAM,mBAE/B9imC,GAAwB,YAAfA,EAAM6D,KACnBhQ,KAAKs/gB,SAELt/gB,KAAKoH,MAAQpH,KAAKy1kB,OAAQ,WACzBz1kB,KAAKs/gB,QACN,EAAGt/gB,KAAKyjC,QAGT2ylB,EAASpjnB,EAAKwkG,SAAU,aACZpjH,QAAU+X,GAAW,SAASjqB,KAAMiqB,EAAM6D,OACrDhQ,KAAKmvmC,cAAe/4e,GAErBp2nB,KAAK8tmC,WAAa96lC,EAAKvrB,SAEvBuY,KAAKkl7B,SAAU,QAAS/46B,EAAO,CAAE6G,KAAMA,GACxC,EAEAk8lC,gBAAiB,SAAUl8lC,GAC1B,IAAI+yiB,EAAW76f,EAAYtmE,EAAQgO,EAAQw8mC,EAAenkiC,EACrDjrE,KAAKqvmC,eACTtpjB,EAAYp1iB,WAAY+4E,EAAEvgG,IAAK6W,KAAK8tmC,WAAY,GAAK,oBAAwB,EAC7E5ijC,EAAav6C,WAAY+4E,EAAEvgG,IAAK6W,KAAK8tmC,WAAY,GAAK,gBAAoB,EAC1ElpnC,EAASouB,EAAKpuB,SAASoF,IAAMgW,KAAK8tmC,WAAWlpnC,SAASoF,IAAM+7jB,EAAY76f,EACxEt4D,EAASoN,KAAK8tmC,WAAW7gnC,YACzBminC,EAAgBpvmC,KAAK8tmC,WAAWlnnC,SAChCqkF,EAAaj4D,EAAKytC,cAEb77D,EAAS,EACbob,KAAK8tmC,WAAW7gnC,UAAW2F,EAAShO,GACzBA,EAASqmF,EAAamkiC,GACjCpvmC,KAAK8tmC,WAAW7gnC,UAAW2F,EAAShO,EAASwqnC,EAAgBnkiC,GAGhE,EAEA8lB,KAAM,SAAU5kF,EAAOmjmC,GAChBA,GACL3nmC,aAAc3H,KAAKoH,OAGdpH,KAAK+jC,SAIX/jC,KAAK+gmC,aAAc/gmC,KAAK+jC,OAAOyzE,SAAU,yBACxC,KAAM,mBAEPx3G,KAAKkl7B,SAAU,OAAQ/46B,EAAO,CAAE6G,KAAMhT,KAAK+jC,SAC3C/jC,KAAK+jC,OAAS,KACf,EAEAorkC,cAAe,SAAUvB,GACxBjmmC,aAAc3H,KAAKoH,OAIoB,SAAlCwmmC,EAAQr22B,KAAM,iBAInBv3P,KAAKoH,MAAQpH,KAAKy1kB,OAAQ,WACzBz1kB,KAAKs/gB,SACLt/gB,KAAK+kgC,MAAO6oG,EACb,EAAG5tmC,KAAKyjC,OACT,EAEAsh+B,MAAO,SAAU6oG,GAChB,IAAI9knC,EAAW4gG,EAAEsZ,OAAQ,CACxBgwJ,GAAIhzP,KAAK+jC,QACP/jC,KAAKpQ,QAAQ9G,UAEhB6e,aAAc3H,KAAKoH,OACnBpH,KAAK1Z,QAAQuU,KAAM,YAAamiO,IAAK4w4B,EAAQplgC,QAAS,aACpDzjE,OACAwyN,KAAM,cAAe,QAEvBq22B,EACEhpkC,OACAy9N,WAAY,eACZ9K,KAAM,gBAAiB,QACvBzuQ,SAAUA,EACb,EAEAqlnC,YAAa,SAAUhimC,EAAO25B,GAC7Bn+B,aAAc3H,KAAKoH,OACnBpH,KAAKoH,MAAQpH,KAAKy1kB,OAAQ,WAGzB,IAAI85hB,EAAczpkC,EAAM9lC,KAAK1Z,QAC5BojG,EAAGv9E,GAASA,EAAMpe,QAAS4/M,QAAS3tM,KAAK1Z,QAAQuU,KAAM,aAIlD00mC,EAAYn7mC,SACjBm7mC,EAAcvvmC,KAAK1Z,SAGpB0Z,KAAKs/gB,OAAQiwlB,GAEbvvmC,KAAK+wF,KAAM5kF,GAGXnM,KAAK+gmC,aAAcwO,EAAY10mC,KAAM,oBAAsB,KAAM,mBAEjEmF,KAAK8tmC,WAAayB,CACnB,EAAGvvmC,KAAKyjC,MACT,EAIA67e,OAAQ,SAAUkwlB,GACXA,IACLA,EAAYxvmC,KAAK+jC,OAAS/jC,KAAK+jC,OAAOt8C,SAAWuY,KAAK1Z,SAGvDkpnC,EAAU30mC,KAAM,YACdkqC,OACAwyN,KAAM,cAAe,QACrBA,KAAM,gBAAiB,QAC1B,EAEA622B,sBAAuB,SAAUjimC,GAChC,OAAQu9E,EAAGv9E,EAAMpe,QAAS4/M,QAAS,YAAav5M,MACjD,EAEA06mC,WAAY,SAAU97lC,GAGrB,OAAQ,sBAAsB9wB,KAAM8wB,EAAK8c,OAC1C,EAEAo3yB,SAAU,SAAU/6zB,GACnB,IAAIg0R,EAAUngS,KAAK+jC,QAClB/jC,KAAK+jC,OAAOt8C,SAASkmN,QAAS,gBAAiB3tM,KAAK1Z,SAChD65S,GAAWA,EAAQ/rS,SACvB4L,KAAKs/gB,SACLt/gB,KAAKgxF,MAAO7kF,EAAOg0R,GAErB,EAEA2nN,OAAQ,SAAU37e,GACjB,IAAIg0R,EAAUngS,KAAK+jC,QAClB/jC,KAAK+jC,OACHyzE,SAAU,aACT38G,KAAMmF,KAAKpQ,QAAQskC,OAClBs6B,QAEA2xO,GAAWA,EAAQ/rS,SACvB4L,KAAK+kgC,MAAO5kuB,EAAQ14S,UAGpBuY,KAAKy1kB,OAAQ,WACZz1kB,KAAKgxF,MAAO7kF,EAAOg0R,EACpB,GAEF,EAEAr4S,KAAM,SAAUqkB,GACfnM,KAAK49zB,MAAO,OAAQ,QAASzxzB,EAC9B,EAEAijB,SAAU,SAAUjjB,GACnBnM,KAAK49zB,MAAO,OAAQ,OAAQzxzB,EAC7B,EAEAsjmC,YAAa,WACZ,OAAOzvmC,KAAK+jC,SAAW/jC,KAAK+jC,OAAOwr7B,QAAS,iBAAkBn79B,MAC/D,EAEAs7mC,WAAY,WACX,OAAO1vmC,KAAK+jC,SAAW/jC,KAAK+jC,OAAO2r7B,QAAS,iBAAkBt79B,MAC/D,EAEAwp0B,MAAO,SAAU7u0B,EAAWkC,EAAQkb,GACnC,IAAIrkB,EACCkY,KAAK+jC,SAERj8C,EADkB,UAAdiH,GAAuC,SAAdA,EACtBiR,KAAK+jC,OACK,UAAdh1C,EAAwB,UAAY,WAAa,iBAClDwqB,IAAK,GAEAvZ,KAAK+jC,OACTh1C,EAAY,OAAS,iBACtBwqB,GAAI,IAGFzxB,GAASA,EAAKsM,QAAW4L,KAAK+jC,SACnCj8C,EAAOkY,KAAK8tmC,WAAWjzmC,KAAMmF,KAAKpQ,QAAQskC,OAASjjC,MAGpD+O,KAAKgxF,MAAO7kF,EAAOrkB,EACpB,EAEAymnC,SAAU,SAAUpimC,GACnB,IAAI6G,EAAMq4B,EAAMzkD,EAEVoZ,KAAK+jC,OAIN/jC,KAAK0vmC,eAGL1vmC,KAAKqvmC,cACThkkC,EAAOrrC,KAAK+jC,OAAOn/C,SAASoF,IAC5BpD,EAASoZ,KAAK1Z,QAAQM,SACtBoZ,KAAK+jC,OAAO2r7B,QAAS,iBAAkB9+8B,KAAM,WAE5C,OADAoC,EAAO02E,EAAG1pF,OACEpb,SAASoF,IAAMqhD,EAAOzkD,EAAS,CAC5C,GAEAoZ,KAAKgxF,MAAO7kF,EAAO6G,IAEnBhT,KAAKgxF,MAAO7kF,EAAOnM,KAAK8tmC,WAAWjzmC,KAAMmF,KAAKpQ,QAAQskC,OAClDl0B,KAAK+jC,OAAmB,OAAV,aAjBlB/jC,KAAKlY,KAAMqkB,EAmBb,EAEAmimC,aAAc,SAAUnimC,GACvB,IAAI6G,EAAMq4B,EAAMzkD,EACVoZ,KAAK+jC,OAIN/jC,KAAKyvmC,gBAGLzvmC,KAAKqvmC,cACThkkC,EAAOrrC,KAAK+jC,OAAOn/C,SAASoF,IAC5BpD,EAASoZ,KAAK1Z,QAAQM,SACtBoZ,KAAK+jC,OAAOwr7B,QAAS,iBAAkB3+8B,KAAM,WAE5C,OADAoC,EAAO02E,EAAG1pF,OACEpb,SAASoF,IAAMqhD,EAAOzkD,EAAS,CAC5C,GAEAoZ,KAAKgxF,MAAO7kF,EAAO6G,IAEnBhT,KAAKgxF,MAAO7kF,EAAOnM,KAAK8tmC,WAAWjzmC,KAAMmF,KAAKpQ,QAAQskC,OAAQs6B,UAhB9DxuD,KAAKlY,KAAMqkB,EAkBb,EAEAkjmC,WAAY,WACX,OAAOrvmC,KAAK1Z,QAAQm6D,cAAgBzgD,KAAK1Z,QAAQgsC,KAAM,eACxD,EAEA29R,OAAQ,SAAU9jT,GAIjBnM,KAAK+jC,OAAS/jC,KAAK+jC,QAAU2lD,EAAGv9E,EAAMpe,QAAS4/M,QAAS,iBACxD,IAAI68L,EAAK,CAAEx3X,KAAMhT,KAAK+jC,QAChB/jC,KAAK+jC,OAAOpwC,IAAK,YAAaS,QACnC4L,KAAKmumC,YAAahimC,GAAO,GAE1BnM,KAAKkl7B,SAAU,SAAU/46B,EAAOq+X,EACjC,EAEAikuB,iBAAkB,SAAU58F,GAC3B,IAAI89F,EAAmB99F,EAAU9thC,QAAS,8BAA+B,QACxE8lH,EAAQ,IAAI/3E,OAAQ,IAAM69kC,EAAkB,KAE7C,OAAO3vmC,KAAK8tmC,WACVjzmC,KAAMmF,KAAKpQ,QAAQskC,OAGlBjjC,OAAQ,iBACPA,OAAQ,WACR,OAAO44G,EAAM3nH,KACZwnG,EAAE1rF,KAAM0rF,EAAG1pF,MAAOw3G,SAAU,yBAA0B1nF,QACxD,EACJ,IAwBD45D,EAAEm9Q,OAAQ,kBAAmB,CAC5BhiS,QAAS,SACT27hC,eAAgB,UAChB5wmC,QAAS,CACR+tpB,SAAU,KACV3pS,WAAW,EACXvwU,MAAO,IACPy6L,UAAW,EACXp1O,SAAU,CACT8nmB,GAAI,WACJlgO,GAAI,cACJyyuB,UAAW,QAEZ5xlC,OAAQ,KAGR+xC,OAAQ,KACR71C,MAAO,KACPujF,MAAO,KACPjD,KAAM,KACNM,SAAU,KACVi/G,OAAQ,KACR2iH,OAAQ,MAGT2/yB,aAAc,EACd76mC,QAAS,EAETkw7B,QAAS,WASR,IAAI4qL,EAAkBC,EAAwBC,EAC7C5nnC,EAAW6X,KAAK1Z,QAAS,GAAI6B,SAASC,cACtC4nnC,EAA0B,aAAb7nnC,EACb8nnC,EAAuB,UAAb9nnC,EAMX6X,KAAKkwmC,YAAcF,IAAeC,GAAWjwmC,KAAKmwmC,mBAAoBnwmC,KAAK1Z,SAE3E0Z,KAAKowmC,YAAcpwmC,KAAK1Z,QAAS0pnC,GAAcC,EAAU,MAAQ,QACjEjwmC,KAAKqwmC,WAAY,EAEjBrwmC,KAAK0hmC,UAAW,yBAChB1hmC,KAAK1Z,QAAQixQ,KAAM,eAAgB,OAEnCv3P,KAAKgszB,IAAKhszB,KAAK1Z,QAAS,CACvB+g1B,QAAS,SAAUl7zB,GAClB,GAAKnM,KAAK1Z,QAAQgsC,KAAM,YAIvB,OAHAu9kC,GAAmB,EACnBE,GAAgB,OAChBD,GAAyB,GAI1BD,GAAmB,EACnBE,GAAgB,EAChBD,GAAyB,EACzB,IAAIl4zB,EAAUluN,EAAE8gT,GAAG5yF,QACnB,OAASzrS,EAAMyrS,SACf,KAAKA,EAAQg+vB,QACZi6D,GAAmB,EACnB7vmC,KAAK49zB,MAAO,eAAgBzxzB,GAC5B,MACD,KAAKyrS,EAAQi+vB,UACZg6D,GAAmB,EACnB7vmC,KAAK49zB,MAAO,WAAYzxzB,GACxB,MACD,KAAKyrS,EAAQo+vB,GACZ65D,GAAmB,EACnB7vmC,KAAKswmC,UAAW,WAAYnkmC,GAC5B,MACD,KAAKyrS,EAAQq+vB,KACZ45D,GAAmB,EACnB7vmC,KAAKswmC,UAAW,OAAQnkmC,GACxB,MACD,KAAKyrS,EAAQw9vB,MAGPp1iC,KAAKo/2B,KAAKr70B,SAId8rkC,GAAmB,EACnB1jmC,EAAMwgH,iBACN3sH,KAAKo/2B,KAAKnvjB,OAAQ9jT,IAEnB,MACD,KAAKyrS,EAAQs9vB,IACPl1iC,KAAKo/2B,KAAKr70B,QACd/jC,KAAKo/2B,KAAKnvjB,OAAQ9jT,GAEnB,MACD,KAAKyrS,EAAQrkB,OACPvzR,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,cACpBjlH,KAAKkwmC,aACVlwmC,KAAKigS,OAAQjgS,KAAKq3X,MAEnBr3X,KAAKyN,MAAOtB,GAKZA,EAAMwgH,kBAEP,MACD,QACCmj/B,GAAyB,EAGzB9vmC,KAAKuwmC,eAAgBpkmC,GAGvB,EACAqv0B,SAAU,SAAUrv0B,GACnB,GAAK0jmC,EAKJ,OAJAA,GAAmB,OACb7vmC,KAAKkwmC,cAAelwmC,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,aAC/C94G,EAAMwgH,kBAIR,IAAKmj/B,EAAL,CAKA,IAAIl4zB,EAAUluN,EAAE8gT,GAAG5yF,QACnB,OAASzrS,EAAMyrS,SACf,KAAKA,EAAQg+vB,QACZ51iC,KAAK49zB,MAAO,eAAgBzxzB,GAC5B,MACD,KAAKyrS,EAAQi+vB,UACZ71iC,KAAK49zB,MAAO,WAAYzxzB,GACxB,MACD,KAAKyrS,EAAQo+vB,GACZh2iC,KAAKswmC,UAAW,WAAYnkmC,GAC5B,MACD,KAAKyrS,EAAQq+vB,KACZj2iC,KAAKswmC,UAAW,OAAQnkmC,GAfzB,CAkBD,EACAlqB,MAAO,SAAUkqB,GAChB,GAAK4jmC,EAGJ,OAFAA,GAAgB,OAChB5jmC,EAAMwgH,iBAGP3sH,KAAKuwmC,eAAgBpkmC,EACtB,EACA6kF,MAAO,WACNhxF,KAAKwwmC,aAAe,KACpBxwmC,KAAKovB,SAAWpvB,KAAKigS,QACtB,EACAlvM,KAAM,SAAU5kF,GACVnM,KAAKywmC,kBACFzwmC,KAAKywmC,YAIb9omC,aAAc3H,KAAK0wmC,WACnB1wmC,KAAKyN,MAAOtB,GACZnM,KAAK0ja,QAASv3Z,GACf,IAGDnM,KAAK2wmC,cACL3wmC,KAAKo/2B,KAAO11xB,EAAG,QACbi0jB,SAAU39oB,KAAK4wmC,aACfxxP,KAAM,CAGN9g3B,KAAM,OAENymC,OACAq60B,KAAM,YAERp/2B,KAAK0hmC,UAAW1hmC,KAAKo/2B,KAAK943B,QAAS,kBAAmB,YACtD0Z,KAAKgszB,IAAKhszB,KAAKo/2B,KAAK943B,QAAS,CAC5Bm4e,UAAW,SAAUtyd,GAGpBA,EAAMwgH,iBAIN3sH,KAAKywmC,YAAa,EAClBzwmC,KAAKy1kB,OAAQ,kBACLz1kB,KAAKywmC,WAQPzwmC,KAAK1Z,QAAS,KAAQojG,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,KACjEuX,KAAK1Z,QAAQ6+D,QAAS,QAExB,EACD,EACA0rjC,UAAW,SAAU1kmC,EAAOq+X,GAC3B,IAAI3oY,EAAOmR,EAIX,GAAKhT,KAAKqwmC,YACTrwmC,KAAKqwmC,WAAY,EACZlkmC,EAAM2vgB,eAAiB,SAAS55hB,KAAMiqB,EAAM2vgB,cAAc9rgB,OAO9D,OANAhQ,KAAKo/2B,KAAKruxB,YAEV/wF,KAAKvX,SAASs7Q,IAAK,YAAa,WAC/Br6K,EAAGv9E,EAAMpe,QAASo3D,QAASh5C,EAAM2vgB,cAClC,GAMF9ogB,EAAOw3X,EAAGx3X,KAAKjd,KAAM,yBAChB,IAAUiK,KAAKkl7B,SAAU,QAAS/46B,EAAO,CAAE6G,KAAMA,KAGhD7G,EAAM2vgB,eAAiB,OAAO55hB,KAAMiqB,EAAM2vgB,cAAc9rgB,OAC5DhQ,KAAKigS,OAAQjtR,EAAKrtB,QAKpBkc,EAAQ2oY,EAAGx3X,KAAKukP,KAAM,eAAkBvkP,EAAKrtB,QAC/B+jG,EAAE1rF,KAAM6D,GAAQzN,SAC7B4L,KAAK8wmC,WAAWt5/B,WAAWzyE,OAC3B2kD,EAAG,SAAU55D,KAAMjuB,GAAQ87oB,SAAU39oB,KAAK8wmC,YAE5C,EACAC,WAAY,SAAU5kmC,EAAOq+X,GAC5B,IAAIx3X,EAAOw3X,EAAGx3X,KAAKjd,KAAM,wBACxBq5B,EAAWpvB,KAAKovB,SAGZpvB,KAAK1Z,QAAS,KAAQojG,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,MACjEuX,KAAK1Z,QAAQ6+D,QAAS,SACtBnlD,KAAKovB,SAAWA,EAKhBpvB,KAAKy1kB,OAAQ,WACZz1kB,KAAKovB,SAAWA,EAChBpvB,KAAKwwmC,aAAex9lC,CACrB,KAGI,IAAUhT,KAAKkl7B,SAAU,SAAU/46B,EAAO,CAAE6G,KAAMA,KACtDhT,KAAKigS,OAAQjtR,EAAKrtB,OAKnBqa,KAAKq3X,KAAOr3X,KAAKigS,SAEjBjgS,KAAKyN,MAAOtB,GACZnM,KAAKwwmC,aAAex9lC,CACrB,IAGDhT,KAAK8wmC,WAAapnhC,EAAG,QAAS,CAC7BprF,KAAM,SACN,YAAa,YACb,gBAAiB,cAEhBq/oB,SAAU39oB,KAAKvX,SAAU,GAAIiF,MAE/BsS,KAAK0hmC,UAAW1hmC,KAAK8wmC,WAAY,KAAM,+BAKvC9wmC,KAAKgszB,IAAKhszB,KAAK7Y,OAAQ,CACtB+u+B,aAAc,WACbl29B,KAAK1Z,QAAQ+7Q,WAAY,eAC1B,GAEF,EAEAr3N,SAAU,WACTrjC,aAAc3H,KAAK0wmC,WACnB1wmC,KAAK1Z,QAAQ+7Q,WAAY,gBACzBriQ,KAAKo/2B,KAAK943B,QAAQs8C,SAClB5iC,KAAK8wmC,WAAWlukC,QACjB,EAEAs+jC,WAAY,SAAU12mC,EAAK7E,GAC1Bqa,KAAKgE,OAAQxZ,EAAK7E,GACL,WAAR6E,GACJwV,KAAK2wmC,cAEO,aAARnmnC,GACJwV,KAAKo/2B,KAAK943B,QAAQq3pB,SAAU39oB,KAAK4wmC,aAErB,aAARpmnC,GAAsB7E,GAASqa,KAAKgrR,KACxChrR,KAAKgrR,IAAIrkM,OAEX,EAEAqqhC,uBAAwB,SAAU7kmC,GACjC,IAAIy+f,EAAc5qgB,KAAKo/2B,KAAK943B,QAAS,GAErC,OAAO6lB,EAAMpe,SAAWiS,KAAK1Z,QAAS,IACrC6lB,EAAMpe,SAAW68gB,GACjBlhb,EAAEliG,SAAUojhB,EAAaz+f,EAAMpe,OACjC,EAEAkjnC,qBAAsB,SAAU9kmC,GACzBnM,KAAKgxmC,uBAAwB7kmC,IAClCnM,KAAKyN,OAEP,EAEAmjmC,UAAW,WACV,IAAItqnC,EAAU0Z,KAAKpQ,QAAQ+tpB,SAgB3B,OAdKr3pB,IACJA,EAAUA,EAAQqnH,QAAUrnH,EAAQmiH,SACnC/e,EAAGpjG,GACH0Z,KAAKvX,SAASoS,KAAMvU,GAAUizB,GAAI,IAG9BjzB,GAAYA,EAAS,KAC1BA,EAAU0Z,KAAK1Z,QAAQqnN,QAAS,sBAG3BrnN,EAAQ8N,SACb9N,EAAU0Z,KAAKvX,SAAU,GAAIiF,MAGvBpH,CACR,EAEAqqnC,YAAa,WACZ,IAAIt8lC,EAAOo5E,EACV6oH,EAAOt2M,KACH0pF,EAAE35E,QAAS/P,KAAKpQ,QAAQ2hB,SAC5B8C,EAAQrU,KAAKpQ,QAAQ2hB,OACrBvR,KAAKuR,OAAS,SAAUq2Q,EAASv5L,GAChCA,EAAU3E,EAAE8gT,GAAG5gC,aAAa34W,OAAQojB,EAAOuzQ,EAAQyvG,MACpD,GAC0C,iBAAxBr3X,KAAKpQ,QAAQ2hB,QAC/Bk8E,EAAMztF,KAAKpQ,QAAQ2hB,OACnBvR,KAAKuR,OAAS,SAAUq2Q,EAASv5L,GAC3BioH,EAAK00E,KACT10E,EAAK00E,IAAIrkM,QAEV2vH,EAAK00E,IAAMthM,EAAEirjB,KAAM,CAClBlnjB,IAAKA,EACL13F,KAAM6xR,EACNo5rB,SAAU,OACVzwa,QAAS,SAAUx6iB,GAClBs4F,EAAUt4F,EACX,EACAkU,MAAO,WACNokF,EAAU,GACX,GAEF,GAEAruF,KAAKuR,OAASvR,KAAKpQ,QAAQ2hB,MAE7B,EAEAg/lC,eAAgB,SAAUpkmC,GACzBxE,aAAc3H,KAAK0wmC,WACnB1wmC,KAAK0wmC,UAAY1wmC,KAAKy1kB,OAAQ,WAG7B,IAAIy7hB,EAAclxmC,KAAKq3X,OAASr3X,KAAKigS,SACpCkx0B,EAAcnxmC,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,YACpCms/B,EAAcjlmC,EAAMi5a,QAAUj5a,EAAM2lR,SAAW3lR,EAAM4lR,SAAW5lR,EAAM6lR,SAEjEk/0B,KAAiBA,GAAgBC,GAAgBC,KACtDpxmC,KAAKwwmC,aAAe,KACpBxwmC,KAAKstM,OAAQ,KAAMnhM,GAErB,EAAGnM,KAAKpQ,QAAQ6zC,MACjB,EAEA6pK,OAAQ,SAAU3nN,EAAOwmB,GAMxB,OALAxmB,EAAiB,MAATA,EAAgBA,EAAQqa,KAAKigS,SAGrCjgS,KAAKq3X,KAAOr3X,KAAKigS,SAEZt6S,EAAMyO,OAAS4L,KAAKpQ,QAAQsuO,UACzBl+N,KAAKyN,MAAOtB,IAGsB,IAArCnM,KAAKkl7B,SAAU,SAAU/46B,GAIvBnM,KAAKqxmC,QAAS1rnC,QAJrB,CAKD,EAEA0rnC,QAAS,SAAU1rnC,GAClBqa,KAAKjL,UACLiL,KAAK0hmC,UAAW,2BAChB1hmC,KAAKsxmC,cAAe,EAEpBtxmC,KAAKuR,OAAQ,CAAE8lX,KAAM1xY,GAASqa,KAAKuxmC,YACpC,EAEAA,UAAW,WACV,IAAI/6mC,IAAUwJ,KAAK4vmC,aAEnB,OAAOlmhC,EAAEz0D,MAAO,SAAU4xE,GACpBrwG,IAAUwJ,KAAK4vmC,cACnB5vmC,KAAKwxmC,WAAY3qgC,GAGlB7mG,KAAKjL,UACCiL,KAAKjL,SACViL,KAAK+gmC,aAAc,0BAErB,EAAG/gmC,KACJ,EAEAwxmC,WAAY,SAAU3qgC,GAChBA,IACJA,EAAU7mG,KAAKyxmC,WAAY5qgC,IAE5B7mG,KAAKkl7B,SAAU,WAAY,KAAM,CAAEr+0B,QAASA,KACtC7mG,KAAKpQ,QAAQo+C,UAAY64D,GAAWA,EAAQzyG,SAAW4L,KAAKsxmC,cACjEtxmC,KAAK0xmC,SAAU7qgC,GACf7mG,KAAKkl7B,SAAU,SAIfll7B,KAAKs/gB,QAEP,EAEA7xgB,MAAO,SAAUtB,GAChBnM,KAAKsxmC,cAAe,EACpBtxmC,KAAKs/gB,OAAQnzgB,EACd,EAEAmzgB,OAAQ,SAAUnzgB,GAGjBnM,KAAKu1Z,KAAMv1Z,KAAKvX,SAAU,aAErBuX,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,cAC1BjlH,KAAKo/2B,KAAK943B,QAAQy+C,OAClB/kC,KAAKo/2B,KAAKruxB,OACV/wF,KAAKqwmC,WAAY,EACjBrwmC,KAAKkl7B,SAAU,QAAS/46B,GAE1B,EAEAu3Z,QAAS,SAAUv3Z,GACbnM,KAAKovB,WAAapvB,KAAKigS,UAC3BjgS,KAAKkl7B,SAAU,SAAU/46B,EAAO,CAAE6G,KAAMhT,KAAKwwmC,cAE/C,EAEAiB,WAAY,SAAUv9kC,GAGrB,OAAKA,EAAM9/B,QAAU8/B,EAAO,GAAIryB,OAASqyB,EAAO,GAAIvuC,MAC5CuuC,EAEDw1D,EAAE32F,IAAKmhC,EAAO,SAAUlhB,GAC9B,MAAqB,iBAATA,EACJ,CACNnR,MAAOmR,EACPrtB,MAAOqtB,GAGF02E,EAAEsZ,OAAQ,CAAC,EAAGhwF,EAAM,CAC1BnR,MAAOmR,EAAKnR,OAASmR,EAAKrtB,MAC1BA,MAAOqtB,EAAKrtB,OAASqtB,EAAKnR,OAE5B,EACD,EAEA6vmC,SAAU,SAAUx9kC,GACnB,IAAIy9kC,EAAK3xmC,KAAKo/2B,KAAK943B,QAAQuzQ,QAC3B75P,KAAK4xmC,YAAaD,EAAIz9kC,GACtBl0B,KAAKqwmC,WAAY,EACjBrwmC,KAAKo/2B,KAAK7vmB,UAGVoi2B,EAAG/skC,OACH5kC,KAAK6xmC,cACLF,EAAG7onC,SAAU4gG,EAAEsZ,OAAQ,CACtBgwJ,GAAIhzP,KAAK1Z,SACP0Z,KAAKpQ,QAAQ9G,WAEXkX,KAAKpQ,QAAQokX,WACjBh0W,KAAKo/2B,KAAKt33B,OAIXkY,KAAKgszB,IAAKhszB,KAAKvX,SAAU,CACxBg2e,UAAW,wBAEb,EAEAozoB,YAAa,WACZ,IAAIF,EAAK3xmC,KAAKo/2B,KAAK943B,QACnBqrnC,EAAGpxjC,WAAY/6D,KAAKmE,IAInBgonC,EAAGjrnC,MAAO,IAAK65D,aAAe,EAC9BvgD,KAAK1Z,QAAQi6D,cAEf,EAEAqxjC,YAAa,SAAUD,EAAIz9kC,GAC1B,IAAIoiL,EAAOt2M,KACX0pF,EAAE94E,KAAMsjB,EAAO,SAAU19B,EAAOwc,GAC/BsjM,EAAKw75B,gBAAiBH,EAAI3+lC,EAC3B,EACD,EAEA8+lC,gBAAiB,SAAUH,EAAI3+lC,GAC9B,OAAOhT,KAAK+xmC,YAAaJ,EAAI3+lC,GAAOjd,KAAM,uBAAwBid,EACnE,EAEA++lC,YAAa,SAAUJ,EAAI3+lC,GAC1B,OAAO02E,EAAG,QACR6mC,OAAQ7mC,EAAG,SAAU55D,KAAM9c,EAAKnR,QAChC87oB,SAAUg0d,EACb,EAEA/zS,MAAO,SAAU7u0B,EAAWod,GAC3B,GAAMnM,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,YAI5B,OAAKjlH,KAAKo/2B,KAAKqwP,eAAiB,YAAYvtnC,KAAM6M,IAChDiR,KAAKo/2B,KAAKswP,cAAgB,QAAQxtnC,KAAM6M,IAEnCiR,KAAKkwmC,aACVlwmC,KAAKigS,OAAQjgS,KAAKq3X,WAGnBr3X,KAAKo/2B,KAAKruxB,aAGX/wF,KAAKo/2B,KAAMrw3B,GAAaod,GAbvBnM,KAAKstM,OAAQ,KAAMnhM,EAcrB,EAEA06V,OAAQ,WACP,OAAO7mW,KAAKo/2B,KAAK943B,OAClB,EAEA25S,OAAQ,WACP,OAAOjgS,KAAKowmC,YAAYtvmC,MAAOd,KAAK1Z,QAAS6N,UAC9C,EAEAm8mC,UAAW,SAAU0B,EAAU7lmC,GACxBnM,KAAKkwmC,cAAelwmC,KAAKo/2B,KAAK943B,QAAQ2+H,GAAI,cAC/CjlH,KAAK49zB,MAAOo0S,EAAU7lmC,GAGtBA,EAAMwgH,iBAER,EAMAwj/B,mBAAoB,SAAU7pnC,GAC7B,IAAMA,EAAQ8N,OACb,OAAO,EAGR,IAAIg2L,EAAW9jM,EAAQgsC,KAAM,mBAE7B,MAAkB,YAAb83J,EACIpqL,KAAKmwmC,mBAAoB7pnC,EAAQmB,UAGtB,SAAb2iM,CACR,IAGD1gG,EAAEsZ,OAAQtZ,EAAE8gT,GAAG5gC,aAAc,CAC5BqowB,YAAa,SAAUtsnC,GACtB,OAAOA,EAAM5B,QAAS,8BAA+B,OACtD,EACAkN,OAAQ,SAAUojB,EAAOgjX,GACxB,IAAIlhR,EAAU,IAAIrkF,OAAQ43D,EAAE8gT,GAAG5gC,aAAaqowB,YAAa56uB,GAAQ,KACjE,OAAO3tS,EAAEw83B,KAAM7x8B,EAAO,SAAU1uB,GAC/B,OAAOwwH,EAAQj0H,KAAMyD,EAAMkc,OAASlc,EAAMA,OAASA,EACpD,EACD,IAMD+jG,EAAEm9Q,OAAQ,kBAAmBn9Q,EAAE8gT,GAAG5gC,aAAc,CAC/Ch6W,QAAS,CACRkhM,SAAU,CACToh7B,UAAW,qBACXpy5B,QAAS,SAAU3iK,GAClB,OAAOA,GAAWA,EAAS,EAAI,eAAiB,cAC/C,qDACF,IAIFq0jC,WAAY,SAAU3qgC,GACrB,IAAIzW,EACJpwF,KAAK8/lC,YAAa3rmC,WACb6L,KAAKpQ,QAAQo+C,UAAYhuC,KAAKsxmC,eAIlClhhC,EADIyW,GAAWA,EAAQzyG,OACb4L,KAAKpQ,QAAQkhM,SAASgvB,QAASj5G,EAAQzyG,QAEvC4L,KAAKpQ,QAAQkhM,SAASoh7B,UAEjClymC,KAAK8wmC,WAAWt5/B,WAAWzyE,OAC3B2kD,EAAG,SAAU55D,KAAMsgE,GAAUutjB,SAAU39oB,KAAK8wmC,YAC7C,IAGyBpnhC,EAAE8gT,GAAG5gC,aAA/B,IAo7BIuowB,EA95BAC,EAA0B,0BA67B9B,SAASC,IACRrymC,KAAKsymC,SAAW,KAChBtymC,KAAKswmC,WAAY,EACjBtwmC,KAAKuymC,gBAAkB,GACvBvymC,KAAKwymC,oBAAqB,EAC1BxymC,KAAKyymC,WAAY,EACjBzymC,KAAK0ymC,WAAa,oBAClB1ymC,KAAK2ymC,aAAe,uBACpB3ymC,KAAK4ymC,aAAe,uBACpB5ymC,KAAK6ymC,cAAgB,wBACrB7ymC,KAAK8ymC,aAAe,uBACpB9ymC,KAAK+ymC,cAAgB,yBACrB/ymC,KAAKgzmC,mBAAqB,6BAC1BhzmC,KAAKizmC,cAAgB,4BACrBjzmC,KAAKkzmC,cAAgB,+BACrBlzmC,KAAKmzmC,SAAW,GAChBnzmC,KAAKmzmC,SAAU,IAAO,CACrB35N,UAAW,OACX45N,SAAU,OACV/sN,SAAU,OACV5M,YAAa,QACb45N,WAAY,CAAE,UAAU,WAAW,QAAQ,QAAQ,MAAM,OACxD,OAAO,SAAS,YAAY,UAAU,WAAW,YAClDC,gBAAiB,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAChGC,SAAU,CAAE,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC9EC,cAAe,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,YAAa,CAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAC7CC,WAAY,KACZv5N,WAAY,WACZ1/W,SAAU,EACVk5kB,OAAO,EACPC,oBAAoB,EACpBC,WAAY,IAEb7zmC,KAAK8zmC,UAAY,CAChBC,OAAQ,QAERC,SAAU,SACVC,YAAa,CAAC,EACdC,YAAa,KAEbC,WAAY,GACZ/2kB,WAAY,MACZg3kB,YAAa,GACbC,iBAAiB,EACjBC,kBAAkB,EAElBC,wBAAwB,EACxBC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZl5J,UAAW,YAGXm5J,iBAAiB,EACjBC,mBAAmB,EACnBC,UAAU,EACVC,cAAe90mC,KAAK+0mC,YAEpBC,gBAAiB,MAGjBpiO,QAAS,KACTF,QAAS,KACTxt4B,SAAU,OACV+vmC,cAAe,KAGfC,WAAY,KAEZ3/yB,SAAU,KACV4/yB,kBAAmB,KACnB/lvB,QAAS,KACTgmvB,eAAgB,EAChBC,iBAAkB,EAClBC,WAAY,EACZC,cAAe,GACfC,SAAU,GACVC,UAAW,GACXC,gBAAgB,EAChBC,iBAAiB,EACjBC,UAAU,EACV5nkC,UAAU,GAEX07C,EAAEsZ,OAAQhjG,KAAK8zmC,UAAW9zmC,KAAKmzmC,SAAU,KACzCnzmC,KAAKmzmC,SAASzyxB,GAAKh3P,EAAEsZ,QAAQ,EAAM,CAAC,EAAGhjG,KAAKmzmC,SAAU,KACtDnzmC,KAAKmzmC,SAAU,SAAYzphC,EAAEsZ,QAAQ,EAAM,CAAC,EAAGhjG,KAAKmzmC,SAASzyxB,IAC7D1gV,KAAK61mC,MAAQC,EAAsBpshC,EAAG,YAAc1pF,KAAK0ymC,WAAa,+FACvE,CAs1DA,SAASoD,EAAsBD,GAC9B,IAAIlu/B,EAAW,iFACf,OAAOku/B,EAAMlrgC,GAAI,WAAYgd,EAAU,WACrCj+B,EAAG1pF,MAAO0pG,YAAa,mBACkC,IAApD1pG,KAAK8pG,UAAUvhH,QAAS,uBAC5BmhG,EAAG1pF,MAAO0pG,YAAa,6BAEiC,IAApD1pG,KAAK8pG,UAAUvhH,QAAS,uBAC5BmhG,EAAG1pF,MAAO0pG,YAAa,2BAEzB,GACCiB,GAAI,YAAagd,EAAUou/B,EAC9B,CAEA,SAASA,IACFrshC,EAAEsshC,WAAWC,sBAAuB9D,EAAsB924B,OAAS824B,EAAsB0D,MAAMpunC,SAAU,GAAM0qnC,EAAsBlwnC,MAAO,MACjJynG,EAAG1pF,MAAOwoG,QAAS,2BAA4B3tG,KAAM,KAAM6uG,YAAa,kBACxEhgB,EAAG1pF,MAAOiqG,SAAU,mBACqC,IAApDjqG,KAAK8pG,UAAUvhH,QAAS,uBAC5BmhG,EAAG1pF,MAAOiqG,SAAU,6BAEoC,IAApDjqG,KAAK8pG,UAAUvhH,QAAS,uBAC5BmhG,EAAG1pF,MAAOiqG,SAAU,4BAGvB,CAGA,SAASisgC,EAAyBnonC,EAAQqkC,GAEzC,IAAM,IAAI7+B,KADVm2F,EAAEsZ,OAAQj1G,EAAQqkC,GACAA,EACK,MAAjBA,EAAO7+B,KACXxF,EAAQwF,GAAS6+B,EAAO7+B,IAG1B,OAAOxF,CACR,CA74F0B27F,EAAEm9Q,OAAQ,kBAAmB,CACtDhiS,QAAS,SACT27hC,eAAgB,QAChB5wmC,QAAS,CACRb,UAAW,aACXi/C,SAAU,KACVmokC,aAAa,EACbjilC,MAAO,CACN,OAAU,uEACV,kBAAqB,yBACrB,cAAiB,8CACjB,WAAc,SACd,QAAW,sBAIb+w5B,QAAS,WACRjl7B,KAAKo2mC,UACN,EAGAA,SAAU,WACTp2mC,KAAK1Z,QAAQixQ,KAAM,OAAQ,WAC3Bv3P,KAAKuvQ,SACN,EAEAvkO,SAAU,WACThrC,KAAKq2mC,iBAAkB,WACvBr2mC,KAAKs2mC,aAAar02B,WAAY,wBAC9BjiQ,KAAK1Z,QAAQ+7Q,WAAY,QACpBriQ,KAAKpQ,QAAQskC,MAAMqilC,mBACvBv2mC,KAAK1Z,QACHuU,KAAMmF,KAAKpQ,QAAQskC,MAAMqilC,mBACzB17mC,KAAM,mCACNyoO,WAAWyqB,QAEf,EAEAyo3B,aAAc,WACb,IAAIlg6B,EAAOt2M,KACVs2mC,EAAe,GAGhB5shC,EAAE94E,KAAM5Q,KAAKpQ,QAAQskC,MAAO,SAAU2yU,EAAQl/O,GAC7C,IAAIp7E,EACA38C,EAAU,CAAC,EAGf,GAAM+3H,EAIN,MAAgB,sBAAXk/O,IACJt6T,EAAS+pK,EAAKhwN,QAAQuU,KAAM8sH,IACrB/2G,KAAM,WACZ,IAAItqB,EAAUojG,EAAG1pF,MAEZ1Z,EAAQkxH,SAAU,mCAAoCpjH,QAG3D9N,EAAQg9O,WACN6/vB,QAAS,uDACZ,GACA7sxB,EAAKor5B,UAAWn1jC,EAAQ,KAAM,qDAC9B+pkC,EAAeA,EAAatonC,OAAQu+C,EAAO14C,cAKtC61F,EAAE50F,GAAI+xW,KAOXj3W,EADI0mN,EAAM,IAAMuwJ,EAAS,WACfvwJ,EAAM,IAAMuwJ,EAAS,WAAa,UAElC,CAAEx5P,QAAS,CAAC,GAIvBipG,EAAKhwN,QACHuU,KAAM8sH,GACN/2G,KAAM,WACN,IAAItqB,EAAUojG,EAAG1pF,MACb3K,EAAW/O,EAASugX,GAAU,YAI9B4vwB,EAAkB/shC,EAAEm9Q,OAAO7jQ,OAAQ,CAAC,EAAGpzG,GAI3C,GAAgB,WAAXi3W,IAAuBvgX,EAAQmB,OAAQ,eAAgB2M,OAA5D,CAKMiB,IACLA,EAAW/O,EAASugX,KAAYA,GAAU,aAEtCxxW,IACJohnC,EAAgBppgC,QACfipG,EAAKog6B,sBAAuBD,EAAgBppgC,QAASh4G,IAEvD/O,EAASugX,GAAU4vwB,GAInB,IAAIE,EAAgBrwnC,EAASugX,GAAU,UACvCn9Q,EAAE3zF,KAAM4gnC,EAAe,GAAK,uBAC3BthnC,GAAsB/O,EAASugX,GAAU,aAE1CyvwB,EAAaxinC,KAAM6inC,EAAe,GAlBlC,CAmBD,IACF,GAEA32mC,KAAKs2mC,aAAe5shC,EAAGA,EAAEwhQ,OAAQorxB,IACjCt2mC,KAAK0hmC,UAAW1hmC,KAAKs2mC,aAAc,uBACpC,EAEAD,iBAAkB,SAAU9xkC,GAC3BvkC,KAAKs2mC,aAAa1lmC,KAAM,WACvB,IACC7a,EADa2zF,EAAG1pF,MACDjK,KAAM,wBACjBA,GAAQA,EAAMwuC,IAClBxuC,EAAMwuC,IAER,EACD,EAEAqykC,mBAAoB,SAAUtwnC,EAASwC,GACtC,IACIwK,EAAM0M,KAAK62mC,oBAAqB/tnC,EAAU,SAAUukH,QAAQxrG,MAEhE7B,KAAK+gmC,aAAcz6mC,EAAS,KAHf,+EAIb0Z,KAAK0hmC,UAAWp7mC,EAAS,KAAMgN,EAChC,EAEAujnC,oBAAqB,SAAU/tnC,EAAU0B,GACxC,IAAIuE,EAAuC,aAA3BiR,KAAKpQ,QAAQb,UACzBoE,EAAS,CACZk6G,QAAS,CAAC,GASX,OAPAl6G,EAAOk6G,QAAS7iH,GAAQ,CACvB,OAAU,GACV,MAAS,cAAiBuE,EAAY,MAAQ,QAC9C,KAAQ,cAAiBA,EAAY,SAAW,SAChD,KAAQ,iBACNjG,GAEIqK,CACR,EAEA2jnC,gBAAiB,SAAUhunC,GAC1B,IAAI8G,EAAUoQ,KAAK62mC,oBAAqB/tnC,EAAU,cAKlD,OAHA8G,EAAQy9G,QAAS,iBAAoB,GACrCz9G,EAAQy9G,QAAS,mBAAsB,GAEhCz9G,CACR,EAEAmnnC,eAAgB,SAAUjunC,GACzB,OAAOkX,KAAK62mC,oBAAqB/tnC,EAAU,YAC5C,EAEAkunC,sBAAuB,SAAUlunC,GAChC,OAAOkX,KAAK62mC,oBAAqB/tnC,EAAU,yBAC5C,EAEAmunC,mBAAoB,SAAUnunC,GAC7B,IAAIiG,EAAuC,aAA3BiR,KAAKpQ,QAAQb,UAC7B,MAAO,CACNrI,QAAOqI,GAAY,OACnBs+G,QAAS,CACRhB,OAAQ,CACP,4BAA6B,GAC7B,8BAA+B,IAEhC79C,MAAO,CACN,4BAA6B,cAAiBz/D,EAAY,MAAQ,MAClE,8BAA+B,cAAiBA,EAAY,MAAQ,SAErEmlD,KAAM,CACL,4BAA6BnlD,EAAY,GAAK,eAC9C,8BAA+B,cAAiBA,EAAY,SAAW,UAExE6rV,KAAM,CACL,4BAA6B,gBAC7B,8BAA+B,kBAG9B9xV,GAEL,EAEA4tnC,sBAAuB,SAAUrpgC,EAASh4G,GACzC,IAAIlC,EAAS,CAAC,EAMd,OALAu2F,EAAE94E,KAAMy8F,EAAS,SAAU7iH,GAC1B,IAAIqL,EAAUR,EAASzF,QAAQy9G,QAAS7iH,IAAS,GACjDqL,EAAU6zF,EAAE1rF,KAAMnI,EAAQ9R,QAASqunC,EAAyB,KAC5Dj/mC,EAAQ3I,IAAUqL,EAAU,IAAMw3G,EAAS7iH,IAAQzG,QAAS,OAAQ,IACrE,GACOoP,CACR,EAEA+tmC,WAAY,SAAU12mC,EAAK7E,GACb,cAAR6E,GACJwV,KAAK+gmC,aAAc,mBAAqB/gmC,KAAKpQ,QAAQb,WAGtDiR,KAAKgE,OAAQxZ,EAAK7E,GACL,aAAR6E,EAKLwV,KAAKuvQ,UAJJvvQ,KAAKq2mC,iBAAkB1wnC,EAAQ,UAAY,SAK7C,EAEA4pR,QAAS,WACR,IAAI/3J,EACH8+F,EAAOt2M,KAERA,KAAK0hmC,UAAW,mCAAqC1hmC,KAAKpQ,QAAQb,WAElC,eAA3BiR,KAAKpQ,QAAQb,WACjBiR,KAAK0hmC,UAAW,KAAM,sBAEvB1hmC,KAAKw2mC,eAELh//B,EAAWx3G,KAAKs2mC,aAGXt2mC,KAAKpQ,QAAQumnC,cACjB3+/B,EAAWA,EAASvmH,OAAQ,aAGxBumH,EAASpjH,SAIbs1F,EAAE94E,KAAM,CAAE,QAAS,QAAU,SAAUpa,EAAO7Q,GAC7C,IAAI0P,EAAWmiH,EAAU7xH,KAAUoQ,KAAM,wBAEzC,GAAKV,GAAYihN,EAAM,IAAMjhN,EAAS6qmC,WAAa,WAAc,CAChE,IAAItwmC,EAAU0mN,EAAM,IAAMjhN,EAAS6qmC,WAAa,WAC3B,IAApB1o/B,EAASpjH,OAAe,OAASzO,GAElCiK,EAAQy9G,QAAUipG,EAAKog6B,sBAAuB9mnC,EAAQy9G,QAASh4G,GAC/DA,EAAS/O,QAAS+O,EAAS6qmC,YAActwmC,EAC1C,MACC0mN,EAAKsg6B,mBAAoBp//B,EAAU7xH,KAAWA,EAEhD,GAGAqa,KAAKq2mC,iBAAkB,WAEzB,IAwBD3shC,EAAEm9Q,OAAQ,mBAAoB,CAAEn9Q,EAAE8gT,GAAG4guB,eAAgB,CACpDvmiC,QAAS,SACTj1E,QAAS,CACRo+C,SAAU,KACVnsC,MAAO,KACP4yW,MAAM,EACNpnQ,QAAS,CACR,yBAA0B,gBAC1B,wBAAyB,kBAI3Buz/B,kBAAmB,WAClB,IAAI5yjC,EAAUzB,EACV+pK,EAAOt2M,KACPpQ,EAAUoQ,KAAKgE,UAAY,CAAC,EAmChC,OA9BAhE,KAAKk3mC,YAEL3qkC,EAASvsC,KAAK1Z,QAAQimD,SAGtBvsC,KAAK6B,MAAQ6nF,EAAGn9C,EAAQA,EAAOn4C,OAAS,IAClC4L,KAAK6B,MAAMzN,QAChBs1F,EAAEz/E,MAAO,2CAGVjK,KAAKm3mC,cAAgB,GAIrBn3mC,KAAK6B,MAAMyhO,WAAWtG,IAAKh9N,KAAK1Z,QAAS,IAAMsqB,KAAM,WAIpD0lM,EAAK6g6B,eAAmC,IAAlBn3mC,KAAKyoG,SAAiB/e,EAAG1pF,MAAO8vB,OAAS9vB,KAAK+pc,SACrE,GAGK/pc,KAAKm3mC,gBACTvnnC,EAAQiS,MAAQ7B,KAAKm3mC,eAIL,OADjBnpkC,EAAWhuC,KAAK1Z,QAAS,GAAI0nD,YAE5Bp+C,EAAQo+C,SAAWA,GAEbp+C,CACR,EAEAq17B,QAAS,WACR,IAAIjvoB,EAAUh2S,KAAK1Z,QAAS,GAAI0vT,QAEhCh2S,KAAKsrmC,wBAEyB,MAAzBtrmC,KAAKpQ,QAAQo+C,WACjBhuC,KAAKpQ,QAAQo+C,SAAWhuC,KAAK1Z,QAAS,GAAI0nD,UAG3ChuC,KAAKkhmC,WAAY,WAAYlhmC,KAAKpQ,QAAQo+C,UAC1ChuC,KAAK0hmC,UAAW,mBAAoB,+BACpC1hmC,KAAK0hmC,UAAW1hmC,KAAK6B,MAAO,yBAA0B,uBAEnC,UAAd7B,KAAKgQ,MACThQ,KAAK0hmC,UAAW1hmC,KAAK6B,MAAO,gCAGxB7B,KAAKpQ,QAAQiS,OAAS7B,KAAKpQ,QAAQiS,QAAU7B,KAAKm3mC,cACtDn3mC,KAAKo3mC,eACMp3mC,KAAKm3mC,gBAChBn3mC,KAAKpQ,QAAQiS,MAAQ7B,KAAKm3mC,eAG3Bn3mC,KAAKo2mC,WAEApg0B,IACJh2S,KAAK0hmC,UAAW1hmC,KAAK6B,MAAO,2BAA4B,mBACnD7B,KAAKy0W,MACTz0W,KAAK0hmC,UAAW1hmC,KAAKy0W,KAAM,KAAM,mBAInCz0W,KAAKgszB,IAAK,CACT1owB,OAAQ,iBACR0tC,MAAO,WACNhxF,KAAK0hmC,UAAW1hmC,KAAK6B,MAAO,KAAM,iCACnC,EACAkvF,KAAM,WACL/wF,KAAK+gmC,aAAc/gmC,KAAK6B,MAAO,KAAM,iCACtC,GAEF,EAEAq1mC,UAAW,WACV,IAAI/unC,EAAW6X,KAAK1Z,QAAS,GAAI6B,SAASC,cAC1C4X,KAAKgQ,KAAOhQ,KAAK1Z,QAAS,GAAI0pB,KACZ,UAAb7nB,GAAyB,iBAAiBjG,KAAM8d,KAAKgQ,OACzD05E,EAAEz/E,MAAO,kDAAoD9hB,EAC5D,qBAAuB6X,KAAKgQ,KAE/B,EAGAommC,SAAU,WACTp2mC,KAAKq3mC,YAAar3mC,KAAK1Z,QAAS,GAAI0vT,QACrC,EAEA6wD,OAAQ,WACP,OAAO7mW,KAAK6B,KACb,EAEAy1mC,eAAgB,WACf,IACI/jnC,EAAOyM,KAAK1Z,QAAS,GAAIiN,KACzBgknC,EAAe,eAAiB7thC,EAAE8gT,GAAGoklB,eAAgBr79B,GAAS,KAElE,OAAMA,GAIDyM,KAAKgwT,KAAK57T,OACNs1F,EAAG1pF,KAAKgwT,KAAM,GAAIr/T,UAAWM,OAAQsmnC,GAIrC7thC,EAAG6thC,GAAetmnC,OAAQ,WACjC,OAAmC,IAA5By4F,EAAG1pF,MAAOgwT,OAAO57T,MACzB,IAGY4oO,IAAKh9N,KAAK1Z,SAbfojG,EAAG,GAcZ,EAEA8thC,eAAgB,WACf,IAAIxh0B,EAAUh2S,KAAK1Z,QAAS,GAAI0vT,QAChCh2S,KAAKshmC,aAActhmC,KAAK6B,MAAO,2BAA4B,kBAAmBm0S,GAEzEh2S,KAAKpQ,QAAQ6kX,MAAsB,aAAdz0W,KAAKgQ,MAC9BhQ,KAAKshmC,aAActhmC,KAAKy0W,KAAM,KAAM,iCAAkCz+D,GACpEsrzB,aAActhmC,KAAKy0W,KAAM,KAAM,iBAAkBz+D,GAGjC,UAAdh2S,KAAKgQ,MACThQ,KAAKs3mC,iBACH1mmC,KAAM,WACN,IAAIvb,EAAWq0F,EAAG1pF,MAAOy3mC,cAAe,YAEnCpinC,GACJA,EAAS0rmC,aAAc1rmC,EAASwM,MAC/B,2BAA4B,kBAE/B,EAEH,EAEAmpC,SAAU,WACThrC,KAAKurmC,0BAEAvrmC,KAAKy0W,OACTz0W,KAAKy0W,KAAK7xU,SACV5iC,KAAK03mC,UAAU90kC,SAEjB,EAEAs+jC,WAAY,SAAU12mC,EAAK7E,GAG1B,GAAa,UAAR6E,GAAoB7E,EAAzB,CAMA,GAFAqa,KAAKgE,OAAQxZ,EAAK7E,GAEL,aAAR6E,EAKJ,OAJAwV,KAAKshmC,aAActhmC,KAAK6B,MAAO,KAAM,oBAAqBlc,QAC1Dqa,KAAK1Z,QAAS,GAAI0nD,SAAWroD,GAK9Bqa,KAAKuvQ,SAXL,CAYD,EAEA8n2B,YAAa,SAAUrh0B,GACtB,IAAIzrC,EAAQ,8BAEPvqQ,KAAKpQ,QAAQ6kX,MACXz0W,KAAKy0W,OACVz0W,KAAKy0W,KAAO/qR,EAAG,UACf1pF,KAAK03mC,UAAYhuhC,EAAG,kBACpB1pF,KAAK0hmC,UAAW1hmC,KAAK03mC,UAAW,gCAGd,aAAd13mC,KAAKgQ,MACTu6P,GAASyrC,EAAU,iCAAmC,gBACtDh2S,KAAK+gmC,aAAc/gmC,KAAKy0W,KAAM,KAAMz+D,EAAU,gBAAkB,kBAEhEzrC,GAAS,gBAEVvqQ,KAAK0hmC,UAAW1hmC,KAAKy0W,KAAM,wBAAyBlqG,GAC9CyrC,GACLh2S,KAAK+gmC,aAAc/gmC,KAAKy0W,KAAM,KAAM,kCAErCz0W,KAAKy0W,KAAK+inB,UAAWx39B,KAAK6B,OAAQsuE,MAAOnwE,KAAK03mC,iBACrB5gnC,IAAdkJ,KAAKy0W,OAChBz0W,KAAKy0W,KAAK7xU,SACV5iC,KAAK03mC,UAAU90kC,gBACR5iC,KAAKy0W,KAEd,EAEA2iwB,aAAc,WAGb,IAAI9z4B,EAAWtjO,KAAK6B,MAAMyhO,WAAWtG,IAAKh9N,KAAK1Z,QAAS,IACnD0Z,KAAKy0W,OACTnxI,EAAWA,EAAStG,IAAKh9N,KAAKy0W,KAAM,KAEhCz0W,KAAK03mC,YACTp04B,EAAWA,EAAStG,IAAKh9N,KAAK03mC,UAAW,KAE1Cp04B,EAAS1gM,SAET5iC,KAAK6B,MAAM0uH,OAAQvwH,KAAKpQ,QAAQiS,MACjC,EAEA0tQ,QAAS,WACR,IAAIymC,EAAUh2S,KAAK1Z,QAAS,GAAI0vT,QAC/BukJ,EAAav6b,KAAK1Z,QAAS,GAAI0nD,SAEhChuC,KAAKq3mC,YAAarh0B,GAClBh2S,KAAKshmC,aAActhmC,KAAK6B,MAAO,2BAA4B,kBAAmBm0S,GAClD,OAAvBh2S,KAAKpQ,QAAQiS,OACjB7B,KAAKo3mC,eAGD78qB,IAAev6b,KAAKpQ,QAAQo+C,UAChChuC,KAAKihmC,YAAa,CAAE,SAAY1mqB,GAElC,KAI0B7wW,EAAE8gT,GAAGituB,cAuBhC/thC,EAAEm9Q,OAAQ,YAAa,CACtBhiS,QAAS,SACT27hC,eAAgB,WAChB5wmC,QAAS,CACRy9G,QAAS,CACR,YAAa,iBAEdr/D,SAAU,KACVymU,KAAM,KACNkjwB,aAAc,YACd91mC,MAAO,KACP+1mC,WAAW,GAGZhX,kBAAmB,WAClB,IAAI5yjC,EAIHp+C,EAAUoQ,KAAKgE,UAAY,CAAC,EAc7B,OAZAhE,KAAKiwmC,QAAUjwmC,KAAK1Z,QAAQ2+H,GAAI,SAGf,OADjBj3E,EAAWhuC,KAAK1Z,QAAS,GAAI0nD,YAE5Bp+C,EAAQo+C,SAAWA,GAGpBhuC,KAAKm3mC,cAAgBn3mC,KAAKiwmC,QAAUjwmC,KAAK1Z,QAAQqhC,MAAQ3nB,KAAK1Z,QAAQ0C,OACjEgX,KAAKm3mC,gBACTvnnC,EAAQiS,MAAQ7B,KAAKm3mC,eAGfvnnC,CACR,EAEAq17B,QAAS,YACFjl7B,KAAKslC,OAAOsykC,WAAa53mC,KAAKpQ,QAAQ6kX,OAC3Cz0W,KAAKpQ,QAAQgonC,WAAY,GAMI,MAAzB53mC,KAAKpQ,QAAQo+C,WACjBhuC,KAAKpQ,QAAQo+C,SAAWhuC,KAAK1Z,QAAS,GAAI0nD,WAAY,GAGvDhuC,KAAKmo6B,WAAano6B,KAAK1Z,QAAQixQ,KAAM,SAGhCv3P,KAAKpQ,QAAQiS,OAAS7B,KAAKpQ,QAAQiS,QAAU7B,KAAKm3mC,gBACjDn3mC,KAAKiwmC,QACTjwmC,KAAK1Z,QAAQqhC,IAAK3nB,KAAKpQ,QAAQiS,OAE/B7B,KAAK1Z,QAAQ0C,KAAMgX,KAAKpQ,QAAQiS,QAGlC7B,KAAK0hmC,UAAW,YAAa,aAC7B1hmC,KAAKkhmC,WAAY,WAAYlhmC,KAAKpQ,QAAQo+C,UAC1ChuC,KAAKo2mC,WAEAp2mC,KAAK1Z,QAAQ2+H,GAAI,MACrBjlH,KAAKgszB,IAAK,CACT,MAAS,SAAU7/yB,GACbA,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQ+9vB,QACnCxpiC,EAAMwgH,iBAKD3sH,KAAK1Z,QAAS,GAAI8pI,MACtBpwH,KAAK1Z,QAAS,GAAI8pI,QAElBpwH,KAAK1Z,QAAQ6+D,QAAS,SAGzB,GAGH,EAEAixjC,SAAU,WACHp2mC,KAAK1Z,QAAQ2+H,GAAI,WACtBjlH,KAAK1Z,QAAQixQ,KAAM,OAAQ,UAGvBv3P,KAAKpQ,QAAQ6kX,OACjBz0W,KAAKq3mC,YAAa,OAAQr3mC,KAAKpQ,QAAQ6kX,MACvCz0W,KAAK0p2B,iBAEP,EAEAA,eAAgB,WACf1p2B,KAAKs2C,MAAQt2C,KAAK1Z,QAAQixQ,KAAM,SAE1Bv3P,KAAKpQ,QAAQgonC,WAAc53mC,KAAKs2C,OACrCt2C,KAAK1Z,QAAQixQ,KAAM,QAASv3P,KAAKpQ,QAAQiS,MAE3C,EAEAw1mC,YAAa,SAAU/xkC,EAAQ3/C,GAC9B,IAAI8uX,EAAkB,iBAAXnvU,EACVx8C,EAAW2rX,EAAOz0W,KAAKpQ,QAAQ+nnC,aAAehynC,EAC9CkynC,EAA4B,QAAb/unC,GAAmC,WAAbA,EAGhCkX,KAAKy0W,KAQCA,GAGXz0W,KAAK+gmC,aAAc/gmC,KAAKy0W,KAAM,KAAMz0W,KAAKpQ,QAAQ6kX,OAVjDz0W,KAAKy0W,KAAO/qR,EAAG,UAEf1pF,KAAK0hmC,UAAW1hmC,KAAKy0W,KAAM,iBAAkB,WAEvCz0W,KAAKpQ,QAAQgonC,WAClB53mC,KAAK0hmC,UAAW,wBASbjtvB,GACJz0W,KAAK0hmC,UAAW1hmC,KAAKy0W,KAAM,KAAM9uX,GAGlCqa,KAAK83mC,YAAahvnC,GAIb+unC,GACJ73mC,KAAK0hmC,UAAW1hmC,KAAKy0W,KAAM,KAAM,wBAC5Bz0W,KAAK03mC,WACT13mC,KAAK03mC,UAAU90kC,WAMV5iC,KAAK03mC,YACV13mC,KAAK03mC,UAAYhuhC,EAAG,kBACpB1pF,KAAK0hmC,UAAW1hmC,KAAK03mC,UAAW,yBAEjC13mC,KAAK+gmC,aAAc/gmC,KAAKy0W,KAAM,KAAM,uBACpCz0W,KAAK+3mC,iBAAkBjvnC,GAEzB,EAEAkiD,SAAU,WACThrC,KAAK1Z,QAAQ+7Q,WAAY,QAEpBriQ,KAAKy0W,MACTz0W,KAAKy0W,KAAK7xU,SAEN5iC,KAAK03mC,WACT13mC,KAAK03mC,UAAU90kC,SAEV5iC,KAAKmo6B,UACVno6B,KAAK1Z,QAAQ+7Q,WAAY,QAE3B,EAEA012B,iBAAkB,SAAUJ,GAC3B33mC,KAAKy0W,KAAM,kBAAkBvyX,KAAMy1nC,GAAiB,SAAW,SAAW33mC,KAAK03mC,UAChF,EAEAI,YAAa,SAAUH,GACtB33mC,KAAK1Z,QAAS,kBAAkBpE,KAAMy1nC,GAAiB,SAAW,WAAa33mC,KAAKy0W,KACrF,EAEAwsvB,YAAa,SAAUrxmC,GACtB,IAAIoonC,OAAqClhnC,IAAtBlH,EAAQgonC,UACzB53mC,KAAKpQ,QAAQgonC,UACbhonC,EAAQgonC,UACTK,OAA2BnhnC,IAAjBlH,EAAQ6kX,KAAqBz0W,KAAKpQ,QAAQ6kX,KAAO7kX,EAAQ6kX,KAE9DujwB,GAAiBC,IACtBronC,EAAQgonC,WAAY,GAErB53mC,KAAKgE,OAAQpU,EACd,EAEAsxmC,WAAY,SAAU12mC,EAAK7E,GACb,SAAR6E,IACC7E,EACJqa,KAAKq3mC,YAAa7snC,EAAK7E,GACZqa,KAAKy0W,OAChBz0W,KAAKy0W,KAAK7xU,SACL5iC,KAAK03mC,WACT13mC,KAAK03mC,UAAU90kC,WAKL,iBAARp4C,GACJwV,KAAKq3mC,YAAa7snC,EAAK7E,GAIX,cAAR6E,IACHwV,KAAKshmC,aAAc,sBAAuB,MAAO37mC,GACjDqa,KAAK0p2B,kBAGM,UAARl/2B,IACCwV,KAAKiwmC,QACTjwmC,KAAK1Z,QAAQqhC,IAAKhiC,IAKlBqa,KAAK1Z,QAAQ0C,KAAMrD,GACdqa,KAAKy0W,OACTz0W,KAAK83mC,YAAa93mC,KAAKpQ,QAAQ+nnC,cAC/B33mC,KAAK+3mC,iBAAkB/3mC,KAAKpQ,QAAQ+nnC,iBAKvC33mC,KAAKgE,OAAQxZ,EAAK7E,GAEL,aAAR6E,IACJwV,KAAKshmC,aAAc,KAAM,oBAAqB37mC,GAC9Cqa,KAAK1Z,QAAS,GAAI0nD,SAAWroD,EACxBA,GACJqa,KAAK1Z,QAAQyqG,OAGhB,EAEAw+K,QAAS,WAIR,IAAIgrL,EAAav6b,KAAK1Z,QAAQ2+H,GAAI,iBACjCjlH,KAAK1Z,QAAS,GAAI0nD,SAAWhuC,KAAK1Z,QAAQ4jH,SAAU,sBAEhDqwV,IAAev6b,KAAKpQ,QAAQo+C,UAChChuC,KAAKihmC,YAAa,CAAEjzjC,SAAUusZ,IAG/Bv6b,KAAK0p2B,gBACN,KAIuB,IAAnBhgxB,EAAE89gC,eAGN99gC,EAAEm9Q,OAAQ,YAAan9Q,EAAE8gT,GAAGt4G,OAAQ,CACnCtiS,QAAS,CACRkgC,MAAM,EACN87kC,MAAO,CACNv00B,QAAS,KACT+ga,UAAW,OAIb6sP,QAAS,WACHjl7B,KAAKpQ,QAAQgonC,YAAc53mC,KAAKpQ,QAAQkgC,OAC5C9vB,KAAKpQ,QAAQgonC,UAAY53mC,KAAKpQ,QAAQkgC,OAEjC9vB,KAAKpQ,QAAQgonC,WAAa53mC,KAAKpQ,QAAQkgC,OAC5C9vB,KAAKpQ,QAAQkgC,KAAO9vB,KAAKpQ,QAAQgonC,WAE5B53mC,KAAKpQ,QAAQ6kX,OAAUz0W,KAAKpQ,QAAQg8mC,MAAMv00B,UAC9Cr3R,KAAKpQ,QAAQg8mC,MAAMxza,UAOTp4rB,KAAKpQ,QAAQ6kX,OACxBz0W,KAAKpQ,QAAQg8mC,MAAMv00B,QAAUr3R,KAAKpQ,QAAQ6kX,MAPrCz0W,KAAKpQ,QAAQg8mC,MAAMv00B,QACvBr3R,KAAKpQ,QAAQ6kX,KAAOz0W,KAAKpQ,QAAQg8mC,MAAMv00B,SAEvCr3R,KAAKpQ,QAAQ6kX,KAAOz0W,KAAKpQ,QAAQg8mC,MAAMxza,UACvCp4rB,KAAKpQ,QAAQ+nnC,aAAe,OAK9B33mC,KAAKgE,QACN,EAEAk9lC,WAAY,SAAU12mC,EAAK7E,GACb,SAAR6E,GAIQ,cAARA,IACJwV,KAAKpQ,QAAQkgC,KAAOnqC,GAER,SAAR6E,IACJwV,KAAKpQ,QAAQg8mC,MAAMv00B,QAAU1xS,GAEjB,UAAR6E,IACC7E,EAAM0xS,SACVr3R,KAAKgE,OAAQ,OAAQre,EAAM0xS,SAC3Br3R,KAAKgE,OAAQ,eAAgB,cAClBre,EAAMyysB,YACjBp4rB,KAAKgE,OAAQ,OAAQre,EAAMyysB,WAC3Bp4rB,KAAKgE,OAAQ,eAAgB,SAG/BhE,KAAK8/lC,YAAa3rmC,YAlBjB6L,KAAKgE,OAAQ,YAAare,EAmB5B,IAGD+jG,EAAE50F,GAAGo9R,OAAS,SAAYr/O,GACzB,OAAO,WACN,OAAM7yC,KAAK5L,QAAY4L,KAAK5L,QAAgC,UAAtB4L,KAAM,GAAIgxG,SAC5ChxG,KAAK5L,QAAgC,UAAtB4L,KAAM,GAAIgxG,SACF,aAAxBhxG,KAAKu3P,KAAM,SAAmD,UAAxBv3P,KAAKu3P,KAAM,QAE5C1kN,EAAK/xC,MAAOd,KAAM7L,YAEpBu1F,EAAE8gT,GAAGituB,eACV/thC,EAAEz/E,MAAO,gCAEgB,IAArB9V,UAAUC,OACP4L,KAAKy3mC,cAAe,CAC1B,MAAQ,IAGHz3mC,KAAKy3mC,cAAc32mC,MAAOd,KAAM7L,WACxC,CACC,CAlBY,CAkBTu1F,EAAE50F,GAAGo9R,QAEVxoM,EAAE50F,GAAGojnC,UAAY,WAIhB,OAHMxuhC,EAAE8gT,GAAG2tuB,cACVzuhC,EAAEz/E,MAAO,+BAEc,WAAnB9V,UAAW,IAAuC,UAAnBA,UAAW,IAAmBA,UAAW,GACrE6L,KAAKm4mC,aAAar3mC,MAAOd,KAC/B,CAAE7L,UAAW,GAAK,eAAgBA,UAAW,KAEvB,WAAnBA,UAAW,IAAuC,UAAnBA,UAAW,GACvC6L,KAAKm4mC,aAAar3mC,MAAOd,KAAM,CAAE7L,UAAW,GAAK,kBAE1B,iBAAnBA,UAAW,IAAoBA,UAAW,GAAI+/B,QACzD//B,UAAW,GAAI+/B,MAAQ,CACtBg+P,OAAQ/9R,UAAW,GAAI+/B,QAGlBl0B,KAAKm4mC,aAAar3mC,MAAOd,KAAM7L,WACvC,GAGmBu1F,EAAE8gT,GAAGt4G,OAyBzBxoM,EAAEsZ,OAAQtZ,EAAE8gT,GAAI,CAAEwruB,WAAY,CAAEnxiC,QAAS,YA2HzC6kB,EAAEsZ,OAAQqvgC,EAAWjymC,UAAW,CAE/Bg4mC,gBAAiB,gBAGjBC,QAAS,EAGTC,kBAAmB,WAClB,OAAOt4mC,KAAK61mC,KACb,EAMA9tf,YAAa,SAAU/ma,GAEtB,OADAk15B,EAAyBl2mC,KAAK8zmC,UAAW9y5B,GAAY,CAAC,GAC/ChhN,IACR,EAMAu4mC,kBAAmB,SAAUxqnC,EAAQizN,GACpC,IAAI74N,EAAUkzO,EAAQoq4B,EAEtBpq4B,EAAwB,SADxBlzO,EAAW4F,EAAO5F,SAASC,gBACmB,SAAbD,EAC3B4F,EAAOgQ,KACZiC,KAAKoqsB,MAAQ,EACbr8sB,EAAOgQ,GAAK,KAAOiC,KAAKoqsB,OAEzBq7Z,EAAOzlmC,KAAKw4mC,SAAU9uhC,EAAG37F,GAAUstO,IAC9Bra,SAAWt3H,EAAEsZ,OAAQ,CAAC,EAAGg+G,GAAY,CAAC,GACzB,UAAb74N,EACJ6X,KAAKy4mC,mBAAoB1qnC,EAAQ03mC,GACtBpq4B,GACXr7N,KAAK04mC,kBAAmB3qnC,EAAQ03mC,EAElC,EAGA+S,SAAU,SAAUzqnC,EAAQstO,GAE3B,MAAO,CAAEt9N,GADAhQ,EAAQ,GAAIgQ,GAAGha,QAAS,qBAAsB,UACtC9B,MAAO8L,EACvB4qnC,YAAa,EAAGC,cAAe,EAAGC,aAAc,EAChDC,UAAW,EAAGC,SAAU,EACxB194B,OAAQA,EACRw64B,MAAUx64B,EACVy64B,EAAsBpshC,EAAG,eAAiB1pF,KAAK2ymC,aAAe,wFAD3C3ymC,KAAK61mC,MAE1B,EAGA4C,mBAAoB,SAAU1qnC,EAAQ03mC,GACrC,IAAIxjnC,EAAQynG,EAAG37F,GACf03mC,EAAKl1+B,OAAS7mC,EAAG,IACjB+7gC,EAAKtgjC,QAAUukC,EAAG,IACbznG,EAAMioH,SAAUlqG,KAAKo4mC,mBAG1Bp4mC,KAAK++f,aAAc98gB,EAAOwjnC,GAC1BxjnC,EAAMgoH,SAAUjqG,KAAKo4mC,iBAAkBztgC,GAAI,UAAW3qG,KAAKg5mC,YAC1DrugC,GAAI,WAAY3qG,KAAKi5mC,aAActugC,GAAI,QAAS3qG,KAAKk5mC,UACtDl5mC,KAAKm5mC,UAAW1T,GAChB/7gC,EAAE3zF,KAAMhI,EAAQ,aAAc03mC,GAGzBA,EAAKzk5B,SAAShzK,UAClBhuC,KAAKo5mC,mBAAoBrrnC,GAE3B,EAGAgxgB,aAAc,SAAU98gB,EAAOwjnC,GAC9B,IAAIsO,EAAQ32kB,EAAYg3kB,EACvBD,EAAan0mC,KAAKk3D,KAAMuuiC,EAAM,cAC9BkO,EAAQ3zmC,KAAKk3D,KAAMuuiC,EAAM,SAErBA,EAAKl1+B,QACTk1+B,EAAKl1+B,OAAO3tF,SAERuxkC,IACJ1O,EAAKl1+B,OAAS7mC,EAAG,gBAAkB1pF,KAAK4ymC,aAAe,KAAOuB,EAAa,WAC3ElynC,EAAO0xnC,EAAQ,SAAW,SAAWlO,EAAKl1+B,SAG3CtuI,EAAMgrI,IAAK,QAASjtH,KAAKq5mC,iBAEpB5T,EAAKtgjC,SACTsgjC,EAAKtgjC,QAAQviB,SAIE,WADhBmxkC,EAAS/zmC,KAAKk3D,KAAMuuiC,EAAM,YACY,SAAXsO,GAC1B9xnC,EAAM0oH,GAAI,QAAS3qG,KAAKq5mC,iBAET,WAAXtF,GAAkC,SAAXA,IAC3B32kB,EAAap9hB,KAAKk3D,KAAMuuiC,EAAM,cAC9B2O,EAAcp0mC,KAAKk3D,KAAMuuiC,EAAM,eAC/BA,EAAKtgjC,QAAUukC,EAAG1pF,KAAKk3D,KAAMuuiC,EAAM,mBAClC/7gC,EAAG,UAAWugB,SAAUjqG,KAAK6ymC,eAC5Bt72B,KAAM,CAAElwJ,IAAK+sgC,EAAa/lwB,IAAK+uL,EAAY9mf,MAAO8mf,IACnD1zc,EAAG,mCAAoCugB,SAAUjqG,KAAK6ymC,eACrD7pnC,KAAOornC,EAA2B1qhC,EAAG,UAAW6tK,KAChD,CAAElwJ,IAAI+sgC,EAAa/lwB,IAAI+uL,EAAY9mf,MAAM8mf,IADpBA,IAEvBn7iB,EAAO0xnC,EAAQ,SAAW,SAAWlO,EAAKtgjC,SAC1CsgjC,EAAKtgjC,QAAQwlD,GAAI,QAAS,WASzB,OARKjhB,EAAEsshC,WAAWxD,oBAAsB9ohC,EAAEsshC,WAAWsD,aAAer3nC,EAAO,GAC1EynG,EAAEsshC,WAAWuD,kBACF7vhC,EAAEsshC,WAAWxD,oBAAsB9ohC,EAAEsshC,WAAWsD,aAAer3nC,EAAO,IACjFynG,EAAEsshC,WAAWuD,kBACb7vhC,EAAEsshC,WAAWqD,gBAAiBp3nC,EAAO,KAErCynG,EAAEsshC,WAAWqD,gBAAiBp3nC,EAAO,KAE/B,CACR,GAEF,EAGAk3nC,UAAW,SAAU1T,GACpB,GAAKzlmC,KAAKk3D,KAAMuuiC,EAAM,cAAiBA,EAAKpq4B,OAAS,CACpD,IAAIm+4B,EAAS7vnC,EAAK8vnC,EAAMp0nC,EACvBi8C,EAAO,IAAIz4B,KAAM,KAAM,GAAQ,IAC/Bsx4B,EAAan64B,KAAKk3D,KAAMuuiC,EAAM,cAE1BtrN,EAAWn25B,MAAO,UACtBw1nC,EAAU,SAAU90lC,GAGnB,IAFA/6B,EAAM,EACN8vnC,EAAO,EACDp0nC,EAAI,EAAGA,EAAIq/B,EAAMtwB,OAAQ/O,IACzBq/B,EAAOr/B,GAAI+O,OAASzK,IACxBA,EAAM+6B,EAAOr/B,GAAI+O,OACjBqlnC,EAAOp0nC,GAGT,OAAOo0nC,CACR,EACAn4kC,EAAKokE,SAAU8zgC,EAASx5mC,KAAKk3D,KAAMuuiC,EAAQtrN,EAAWn25B,MAAO,MAC5D,aAAe,qBAChBs9C,EAAK67F,QAASq8+B,EAASx5mC,KAAKk3D,KAAMuuiC,EAAQtrN,EAAWn25B,MAAO,MAC3D,WAAa,kBAAwB,GAAKs9C,EAAK87F,WAEjDqo+B,EAAKxjnC,MAAMs1Q,KAAM,OAAQv3P,KAAK05mC,YAAajU,EAAMnkkC,GAAOltC,OACzD,CACD,EAGAsknC,kBAAmB,SAAU3qnC,EAAQ03mC,GACpC,IAAIkU,EAAUjwhC,EAAG37F,GACZ4rnC,EAAQzvgC,SAAUlqG,KAAKo4mC,mBAG5BuB,EAAQ1vgC,SAAUjqG,KAAKo4mC,iBAAkB7n/B,OAAQk1+B,EAAKoQ,OACtDnshC,EAAE3zF,KAAMhI,EAAQ,aAAc03mC,GAC9BzlmC,KAAK45mC,SAAUnU,EAAMzlmC,KAAK65mC,gBAAiBpU,IAAQ,GACnDzlmC,KAAK85mC,kBAAmBrU,GACxBzlmC,KAAK+5mC,iBAAkBtU,GAGlBA,EAAKzk5B,SAAShzK,UAClBhuC,KAAKo5mC,mBAAoBrrnC,GAK1B03mC,EAAKoQ,MAAM1snC,IAAK,UAAW,SAC5B,EAYA6wnC,kBAAmB,SAAU/3nC,EAAOq/C,EAAMi0R,EAAUv0G,EAAUzuM,GAC7D,IAAIxU,EAAIk8mC,EAAcC,EAAevp/B,EAASC,EAC7C60+B,EAAOzlmC,KAAKm6mC,YAqCb,OAnCM1U,IACLzlmC,KAAKoqsB,MAAQ,EACbrssB,EAAK,KAAOiC,KAAKoqsB,KACjBpqsB,KAAKo6mC,aAAe1whC,EAAG,0BAA4B3rF,EAClD,4DACDiC,KAAKo6mC,aAAazvgC,GAAI,UAAW3qG,KAAKg5mC,YACtCtvhC,EAAG,QAAS6mC,OAAQvwH,KAAKo6mC,eACzB3U,EAAOzlmC,KAAKm6mC,YAAcn6mC,KAAKw4mC,SAAUx4mC,KAAKo6mC,cAAc,IACvDp55B,SAAW,CAAC,EACjBt3H,EAAE3zF,KAAMiK,KAAKo6mC,aAAc,GAAK,aAAc3U,IAE/CyQ,EAAyBzQ,EAAKzk5B,SAAUA,GAAY,CAAC,GACrD1/K,EAASA,GAAQA,EAAK7gC,cAAgBoI,KAAO7I,KAAK05mC,YAAajU,EAAMnkkC,GAASA,EAC9EthC,KAAKo6mC,aAAazylC,IAAK2Z,GAEvBthC,KAAKwwG,KAASj+F,EAAQA,EAAIne,OAASme,EAAM,CAAEA,EAAIsza,MAAOtza,EAAIuza,OAAY,KAChE9lb,KAAKwwG,OACVypgC,EAAexxnC,SAASC,gBAAgBwD,YACxCgunC,EAAgBzxnC,SAASC,gBAAgBuD,aACzC0kI,EAAUloI,SAASC,gBAAgBqE,YAActE,SAASiF,KAAKX,WAC/D6jI,EAAUnoI,SAASC,gBAAgBuE,WAAaxE,SAASiF,KAAKT,UAC9D+S,KAAKwwG,KACJ,CAAIypgC,EAAe,EAAM,IAAMtp/B,EAAWup/B,EAAgB,EAAM,IAAMtp/B,IAIxE5wH,KAAKo6mC,aAAajxnC,IAAK,OAAU6W,KAAKwwG,KAAM,GAAM,GAAO,MAAOrnH,IAAK,MAAO6W,KAAKwwG,KAAM,GAAM,MAC7Fi1/B,EAAKzk5B,SAASu0G,SAAWA,EACzBv1T,KAAKyymC,WAAY,EACjBzymC,KAAK61mC,MAAM5rgC,SAAUjqG,KAAK8ymC,cAC1B9ymC,KAAKq5mC,gBAAiBr5mC,KAAKo6mC,aAAc,IACpC1whC,EAAE2whC,SACN3whC,EAAE2whC,QAASr6mC,KAAK61mC,OAEjBnshC,EAAE3zF,KAAMiK,KAAKo6mC,aAAc,GAAK,aAAc3U,GACvCzlmC,IACR,EAKAs6mC,mBAAoB,SAAUvsnC,GAC7B,IAAI5F,EACHoynC,EAAU7whC,EAAG37F,GACb03mC,EAAO/7gC,EAAE3zF,KAAMhI,EAAQ,cAElBwsnC,EAAQrwgC,SAAUlqG,KAAKo4mC,mBAI7BjwnC,EAAW4F,EAAO5F,SAASC,cAC3BshG,EAAEu4K,WAAYl0Q,EAAQ,cACJ,UAAb5F,GACJs9mC,EAAKl1+B,OAAO3tF,SACZ6ikC,EAAKtgjC,QAAQviB,SACb23kC,EAAQ7wgC,YAAa1pG,KAAKo4mC,iBACzBnr/B,IAAK,QAASjtH,KAAKq5mC,iBACnBps/B,IAAK,UAAWjtH,KAAKg5mC,YACrB/r/B,IAAK,WAAYjtH,KAAKi5mC,aACtBhs/B,IAAK,QAASjtH,KAAKk5mC,WACI,QAAb/wnC,GAAmC,SAAbA,GACjCoynC,EAAQ7wgC,YAAa1pG,KAAKo4mC,iBAAkBv+2B,QAGxCs42B,IAA0B1M,IAC9B0M,EAAwB,MAE1B,EAKAqI,kBAAmB,SAAUzsnC,GAC5B,IAAI5F,EAAUkzO,EACbk/4B,EAAU7whC,EAAG37F,GACb03mC,EAAO/7gC,EAAE3zF,KAAMhI,EAAQ,cAElBwsnC,EAAQrwgC,SAAUlqG,KAAKo4mC,mBAKX,WADlBjwnC,EAAW4F,EAAO5F,SAASC,gBAE1B2F,EAAOigD,UAAW,EAClBy3jC,EAAKtgjC,QAAQl0D,OAAQ,UACpB2f,KAAM,WAAa5Q,KAAKguC,UAAW,CAAO,GAAIthD,MAC9CuE,OAAQ,OAAQ9H,IAAK,CAAEsU,QAAS,MAAOqvE,OAAQ,MACxB,QAAb3kF,GAAmC,SAAbA,KACjCkzO,EAASk/4B,EAAQ/igC,SAAU,IAAMx3G,KAAK2ymC,eAC/Bn7/B,WAAW9N,YAAa,qBAC/B2xH,EAAOxgO,KAAM,yDACZy3B,KAAM,YAAY,IAEpBtyB,KAAKuymC,gBAAkB7ohC,EAAE32F,IAAKiN,KAAKuymC,gBAClC,SAAU5snC,GAAU,OAASA,IAAUoI,EAAS,KAAOpI,CAAS,GAClE,EAKAyznC,mBAAoB,SAAUrrnC,GAC7B,IAAI5F,EAAUkzO,EACbk/4B,EAAU7whC,EAAG37F,GACb03mC,EAAO/7gC,EAAE3zF,KAAMhI,EAAQ,cAElBwsnC,EAAQrwgC,SAAUlqG,KAAKo4mC,mBAKX,WADlBjwnC,EAAW4F,EAAO5F,SAASC,gBAE1B2F,EAAOigD,UAAW,EAClBy3jC,EAAKtgjC,QAAQl0D,OAAQ,UACpB2f,KAAM,WAAa5Q,KAAKguC,UAAW,CAAM,GAAIthD,MAC7CuE,OAAQ,OAAQ9H,IAAK,CAAEsU,QAAS,MAAOqvE,OAAQ,aACxB,QAAb3kF,GAAmC,SAAbA,KACjCkzO,EAASk/4B,EAAQ/igC,SAAU,IAAMx3G,KAAK2ymC,eAC/Bn7/B,WAAWvN,SAAU,qBAC5BoxH,EAAOxgO,KAAM,yDACZy3B,KAAM,YAAY,IAEpBtyB,KAAKuymC,gBAAkB7ohC,EAAE32F,IAAKiN,KAAKuymC,gBAClC,SAAU5snC,GAAU,OAASA,IAAUoI,EAAS,KAAOpI,CAAS,GACjEqa,KAAKuymC,gBAAiBvymC,KAAKuymC,gBAAgBn+mC,QAAWrG,EACvD,EAMAkonC,sBAAuB,SAAUlonC,GAChC,IAAMA,EACL,OAAO,EAER,IAAM,IAAI1I,EAAI,EAAGA,EAAI2a,KAAKuymC,gBAAgBn+mC,OAAQ/O,IACjD,GAAK2a,KAAKuymC,gBAAiBltnC,KAAQ0I,EAClC,OAAO,EAGT,OAAO,CACR,EAOA0snC,SAAU,SAAU1snC,GACnB,IACC,OAAO27F,EAAE3zF,KAAMhI,EAAQ,aACxB,CACA,MAAQ26G,GACP,KAAM,2CACP,CACD,EAWAgygC,kBAAmB,SAAU3snC,EAAQwF,EAAM5N,GAC1C,IAAIq7N,EAAU1/K,EAAMsx2B,EAASF,EAC5B+yN,EAAOzlmC,KAAKy6mC,SAAU1snC,GAEvB,GAA0B,IAArBoG,UAAUC,QAAgC,iBAATb,EACrC,MAAkB,aAATA,EAAsBm2F,EAAEsZ,OAAQ,CAAC,EAAGtZ,EAAEsshC,WAAWlC,WACvDrO,EAAkB,QAATlymC,EAAiBm2F,EAAEsZ,OAAQ,CAAC,EAAGyigC,EAAKzk5B,UAC/ChhN,KAAKk3D,KAAMuuiC,EAAMlymC,GAAW,KAG9BytN,EAAWztN,GAAQ,CAAC,EACC,iBAATA,KACXytN,EAAW,CAAC,GACFztN,GAAS5N,GAGf8/mC,IACCzlmC,KAAKsymC,WAAa7M,GACtBzlmC,KAAKu5mC,kBAGNj4kC,EAAOthC,KAAK26mC,mBAAoB5snC,GAAQ,GACxC6k5B,EAAU5y4B,KAAK46mC,eAAgBnV,EAAM,OACrC/yN,EAAU1y4B,KAAK46mC,eAAgBnV,EAAM,OACrCyQ,EAAyBzQ,EAAKzk5B,SAAUA,GAGvB,OAAZ4xrB,QAA4C974B,IAAxBkqN,EAASm5rB,iBAAiDrj5B,IAArBkqN,EAAS4xrB,UACtE6yN,EAAKzk5B,SAAS4xrB,QAAU5y4B,KAAK05mC,YAAajU,EAAM7yN,IAEhC,OAAZF,QAA4C574B,IAAxBkqN,EAASm5rB,iBAAiDrj5B,IAArBkqN,EAAS0xrB,UACtE+yN,EAAKzk5B,SAAS0xrB,QAAU1y4B,KAAK05mC,YAAajU,EAAM/yN,IAE5C,aAAc1xrB,IACbA,EAAShzK,SACbhuC,KAAKo5mC,mBAAoBrrnC,GAEzBiS,KAAKw6mC,kBAAmBzsnC,IAG1BiS,KAAK++f,aAAcr1a,EAAG37F,GAAU03mC,GAChCzlmC,KAAKm5mC,UAAW1T,GAChBzlmC,KAAK45mC,SAAUnU,EAAMnkkC,GACrBthC,KAAK+5mC,iBAAkBtU,GACvBzlmC,KAAK85mC,kBAAmBrU,GAE1B,EAGAoV,kBAAmB,SAAU9snC,EAAQwF,EAAM5N,GAC1Cqa,KAAK06mC,kBAAmB3snC,EAAQwF,EAAM5N,EACvC,EAKAm1nC,mBAAoB,SAAU/snC,GAC7B,IAAI03mC,EAAOzlmC,KAAKy6mC,SAAU1snC,GACrB03mC,GACJzlmC,KAAK85mC,kBAAmBrU,EAE1B,EAMAsV,mBAAoB,SAAUhtnC,EAAQuzC,GACrC,IAAImkkC,EAAOzlmC,KAAKy6mC,SAAU1snC,GACrB03mC,IACJzlmC,KAAK45mC,SAAUnU,EAAMnkkC,GACrBthC,KAAK85mC,kBAAmBrU,GACxBzlmC,KAAK+5mC,iBAAkBtU,GAEzB,EAOAkV,mBAAoB,SAAU5snC,EAAQitnC,GACrC,IAAIvV,EAAOzlmC,KAAKy6mC,SAAU1snC,GAI1B,OAHK03mC,IAASA,EAAKpq4B,QAClBr7N,KAAKi7mC,kBAAmBxV,EAAMuV,GAEtBvV,EAAOzlmC,KAAKk7mC,SAAUzV,GAAS,IACzC,EAGAuT,WAAY,SAAU7smC,GACrB,IAAIopT,EAAUwvP,EAASq2Z,EACtBqqJ,EAAO/7gC,EAAEsshC,WAAWyE,SAAUtumC,EAAMpe,QACpC6xiC,GAAU,EACV+zE,EAAQlO,EAAKoQ,MAAM5w/B,GAAI,sBAGxB,GADAwg/B,EAAK6K,WAAY,EACZ5mhC,EAAEsshC,WAAWxD,mBACjB,OAASrmmC,EAAMyrS,SACd,KAAK,EAAGluN,EAAEsshC,WAAWuD,kBACnB35E,GAAU,EACV,MACF,KAAK,GAgBH,OAhBOxkF,EAAM1x3B,EAAG,MAAQA,EAAEsshC,WAAW9C,cAAgB,SAClDxphC,EAAEsshC,WAAW/C,cAAgB,IAAKxN,EAAKoQ,QAChC,IACTnshC,EAAEsshC,WAAWmF,WAAYhvmC,EAAMpe,OAAQ03mC,EAAKmT,cAAenT,EAAKoT,aAAcz9J,EAAK,KAGpF7lpB,EAAW7rO,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cAEnC1gjB,EAAUr7d,EAAEsshC,WAAW0D,YAAajU,GAGpClwyB,EAASz0T,MAAS2kmC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAO,GAAM,KAAQ,CAAE8ikB,EAAS0gjB,KAEpE/7gC,EAAEsshC,WAAWuD,mBAGP,EACT,KAAK,GAAI7vhC,EAAEsshC,WAAWuD,kBACpB,MACF,KAAK,GAAI7vhC,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAUoe,EAAM2lR,SACrDpoM,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,kBACzB/7gC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cAAkB,KAC7C,MACF,KAAK,GAAI/7gC,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAUoe,EAAM2lR,SACrDpoM,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,kBACzB/7gC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cAAkB,KAC7C,MACF,KAAK,IAASt5lC,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWqF,WAAYlvmC,EAAMpe,QAEhC6xiC,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QACjC,MACF,KAAK,IAAS5lR,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWsF,WAAYnvmC,EAAMpe,QAEhC6xiC,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QACjC,MACF,KAAK,IAAS5lR,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAU4lnC,EAAQ,GAAM,EAAK,KAE9D/zE,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QAG5B5lR,EAAM2vgB,cAAc12F,QACxB17V,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAUoe,EAAM2lR,SAC9CpoM,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,kBACzB/7gC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cAAkB,KAI9C,MACF,KAAK,IAASt5lC,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,QAAS,EAAG,KAE7C6xiC,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QACjC,MACF,KAAK,IAAS5lR,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAU4lnC,GAAS,EAAI,EAAM,KAE9D/zE,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QAG5B5lR,EAAM2vgB,cAAc12F,QACxB17V,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAUoe,EAAM2lR,SAC9CpoM,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,kBACzB/7gC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cAAkB,KAI9C,MACF,KAAK,IAASt5lC,EAAM2lR,SAAW3lR,EAAM4lR,UAClCroM,EAAEsshC,WAAWoF,YAAajvmC,EAAMpe,OAAQ,EAAI,KAE7C6xiC,EAAUzzhC,EAAM2lR,SAAW3lR,EAAM4lR,QACjC,MACF,QAAS6twB,GAAU,OAES,KAAlBzzhC,EAAMyrS,SAAkBzrS,EAAM2lR,QACzCpoM,EAAEsshC,WAAWqD,gBAAiBr5mC,MAE9B4/hC,GAAU,EAGNA,IACJzzhC,EAAMwgH,iBACNxgH,EAAMm3P,kBAER,EAGA212B,YAAa,SAAU9smC,GACtB,IAAIooR,EAAO7xH,EACV+i8B,EAAO/7gC,EAAEsshC,WAAWyE,SAAUtumC,EAAMpe,QAErC,GAAK27F,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,kBAG7B,OAFAlx0B,EAAQ7qM,EAAEsshC,WAAWuF,eAAgB7xhC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,eAC9D/i8B,EAAMniK,OAAOysF,aAAgC,MAAlB7gF,EAAM27a,SAAmB37a,EAAMyrS,QAAUzrS,EAAM27a,UACnE37a,EAAM2lR,SAAW3lR,EAAM4lR,SAAarvH,EAAM,MAAQ6xH,GAASA,EAAMhsS,QAASm6K,IAAS,CAE5F,EAGAw28B,SAAU,SAAU/smC,GACnB,IACCs5lC,EAAO/7gC,EAAEsshC,WAAWyE,SAAUtumC,EAAMpe,QAErC,GAAK03mC,EAAKxjnC,MAAM0lC,QAAU89kC,EAAK+V,QAC9B,IACQ9xhC,EAAEsshC,WAAW5g+B,UAAW1rD,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cACrDA,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAM0lC,MAAQ,KAClC+hE,EAAEsshC,WAAWyF,iBAAkBhW,MAG/B/7gC,EAAEsshC,WAAWiF,kBAAmBxV,GAChC/7gC,EAAEsshC,WAAW+D,iBAAkBtU,GAC/B/7gC,EAAEsshC,WAAW8D,kBAAmBrU,GAElC,CACA,MAAQ/8/B,GACR,CAED,OAAO,CACR,EAOA2wgC,gBAAiB,SAAUp3nC,GAU1B,IAAIwjnC,EAAMyP,EAAYwG,EAAoBhpnC,EACzC9N,EAAQovnC,EAAU9umC,EATmB,WADtCjjB,EAAQA,EAAM8L,QAAU9L,GACbkG,SAASC,gBACnBnG,EAAQynG,EAAG,QAASznG,EAAM+F,YAAc,IAGpC0hG,EAAEsshC,WAAWC,sBAAuBh0nC,IAAWynG,EAAEsshC,WAAWsD,aAAer3nC,IAOhFwjnC,EAAO/7gC,EAAEsshC,WAAWyE,SAAUx4nC,GACzBynG,EAAEsshC,WAAW1D,UAAY5ohC,EAAEsshC,WAAW1D,WAAa7M,IACvD/7gC,EAAEsshC,WAAW1D,SAASuD,MAAMnwmC,MAAM,GAAM,GACnC+/lC,GAAQ/7gC,EAAEsshC,WAAWxD,oBACzB9ohC,EAAEsshC,WAAWuD,gBAAiB7vhC,EAAEsshC,WAAW1D,SAASrwnC,MAAO,MAMjC,KAD5By5nC,GADAxG,EAAaxrhC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,eACJyP,EAAWp0mC,MAAO7e,EAAO,CAAEA,EAAOwjnC,IAAW,CAAC,KAIhFyQ,EAAyBzQ,EAAKzk5B,SAAU065B,GAExCjW,EAAK+V,QAAU,KACf9xhC,EAAEsshC,WAAWsD,WAAar3nC,EAC1BynG,EAAEsshC,WAAWiF,kBAAmBxV,GAE3B/7gC,EAAEsshC,WAAWvD,YACjBxwnC,EAAM0D,MAAQ,IAET+jG,EAAEsshC,WAAWxlgC,OAClB9mB,EAAEsshC,WAAWxlgC,KAAO9mB,EAAEsshC,WAAW2F,SAAU15nC,GAC3CynG,EAAEsshC,WAAWxlgC,KAAM,IAAOvuH,EAAM4E,cAGjC6L,GAAU,EACVg3F,EAAGznG,GAAQumH,UAAU53F,KAAM,WAE1B,QADAle,GAA2C,UAAhCg3F,EAAG1pF,MAAO7W,IAAK,YAE3B,GAEAvE,EAAS,CAAEuF,KAAMu/F,EAAEsshC,WAAWxlgC,KAAM,GAAKxmH,IAAK0/F,EAAEsshC,WAAWxlgC,KAAM,IACjE9mB,EAAEsshC,WAAWxlgC,KAAO,KAGpBi1/B,EAAKoQ,MAAMh82B,QAGX4r2B,EAAKoQ,MAAM1snC,IAAK,CAAEL,SAAU,WAAY0zD,QAAS,QAASxyD,IAAK,YAC/D0/F,EAAEsshC,WAAW8D,kBAAmBrU,GAIhC7gnC,EAAS8kG,EAAEsshC,WAAW4F,aAAcnW,EAAM7gnC,EAAQ8N,GAClD+ymC,EAAKoQ,MAAM1snC,IAAK,CAAEL,SAAY4gG,EAAEsshC,WAAWvD,WAAa/ohC,EAAE2whC,QACzD,SAAa3nnC,EAAU,QAAU,WAAgB8pD,QAAS,OAC1DryD,KAAMvF,EAAOuF,KAAO,KAAMH,IAAKpF,EAAOoF,IAAM,OAEvCy7mC,EAAKpq4B,SACV244B,EAAWtqhC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,YACpCvgmC,EAAWwkF,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,YACpCA,EAAKoQ,MAAM1snC,IAAK,UA9vBnB,SAA+Bu6Q,GAE9B,IADA,IAAI56Q,EAAUnD,EACN+9Q,EAAKtvQ,QAAUsvQ,EAAM,KAAQj7Q,UAAW,CAM/C,IAAkB,cADlBK,EAAW46Q,EAAKv6Q,IAAK,cACwB,aAAbL,GAAwC,UAAbA,KAM1DnD,EAAQwgC,SAAUu9O,EAAKv6Q,IAAK,UAAY,KAClCpD,MAAOJ,IAAqB,IAAVA,GACvB,OAAOA,EAGT+9Q,EAAOA,EAAKj8Q,QACb,CAEA,OAAO,CACR,CAuuB8Bo0nC,CAAsBnyhC,EAAGznG,IAAY,GAChEynG,EAAEsshC,WAAWxD,oBAAqB,EAE7B9ohC,EAAEpzE,SAAWozE,EAAEpzE,QAAQpgB,OAAQ89mC,GACnCvO,EAAKoQ,MAAMjxkC,KAAMovkC,EAAUtqhC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,eAAiBvgmC,GAErEugmC,EAAKoQ,MAAO7B,GAAY,QAAUA,EAAW9umC,EAAW,MAGpDwkF,EAAEsshC,WAAW8F,kBAAmBrW,IACpCA,EAAKxjnC,MAAMkjE,QAAS,SAGrBukC,EAAEsshC,WAAW1D,SAAW7M,IAE1B,EAGAqU,kBAAmB,SAAUrU,GAC5BzlmC,KAAKq4mC,QAAU,EACflG,EAAwB1M,EACxBA,EAAKoQ,MAAMh82B,QAAQtpI,OAAQvwH,KAAK+7mC,cAAetW,IAC/CzlmC,KAAKg8mC,gBAAiBvW,GAEtB,IAAIwW,EACHC,EAAYl8mC,KAAKm8mC,mBAAoB1W,GACrC108B,EAAOmr9B,EAAW,GAElBE,EAAa3W,EAAKoQ,MAAMh7mC,KAAM,IAAMmF,KAAKkzmC,cAAgB,MAErDkJ,EAAWhonC,OAAS,GACxB2hnC,EAA2Bj1mC,MAAOs7mC,EAAWvonC,IAAK,IAGnD4xmC,EAAKoQ,MAAMnsgC,YAAa,qEAAsEhjH,MAAO,IAChGqqK,EAAO,GACX008B,EAAKoQ,MAAM5rgC,SAAU,uBAAyB8mD,GAAO5nK,IAAK,QATlD,GASqE4nK,EAAS,MAEvF008B,EAAKoQ,OAA4B,IAAnBqG,EAAW,IAAgC,IAAnBA,EAAW,GAAY,MAAQ,UACpE,SAAW,uBACZzW,EAAKoQ,OAAS71mC,KAAKk3D,KAAMuuiC,EAAM,SAAY,MAAQ,UAClD,SAAW,qBAEPA,IAAS/7gC,EAAEsshC,WAAW1D,UAAY5ohC,EAAEsshC,WAAWxD,oBAAsB9ohC,EAAEsshC,WAAW8F,kBAAmBrW,IACzGA,EAAKxjnC,MAAMkjE,QAAS,SAIhBsgjC,EAAK4W,YACTJ,EAAgBxW,EAAK4W,UACrB50mC,WAAY,WAGNw0mC,IAAkBxW,EAAK4W,WAAa5W,EAAK4W,WAC7C5W,EAAKoQ,MAAMh7mC,KAAM,mCAAoCopQ,YAAawh2B,EAAK4W,WAExEJ,EAAgBxW,EAAK4W,UAAY,IAClC,EAAG,GAEL,EAKAP,kBAAmB,SAAUrW,GAC5B,OAAOA,EAAKxjnC,OAASwjnC,EAAKxjnC,MAAMgjI,GAAI,cAAiBwg/B,EAAKxjnC,MAAMgjI,GAAI,eAAkBwg/B,EAAKxjnC,MAAMgjI,GAAI,SACtG,EAGA22/B,aAAc,SAAUnW,EAAM7gnC,EAAQ8N,GACrC,IAAI4pnC,EAAU7W,EAAKoQ,MAAMt1jC,aACxBg8jC,EAAW9W,EAAKoQ,MAAMp1jC,cACtB+7jC,EAAa/W,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAMs+D,aAAe,EACpDk8jC,EAAchX,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAMw+D,cAAgB,EACtDi8jC,EAAYj0nC,SAASC,gBAAgBwD,aAAgBwG,EAAU,EAAIg3F,EAAGjhG,UAAWsE,cACjFiqiB,EAAavuiB,SAASC,gBAAgBuD,cAAiByG,EAAU,EAAIg3F,EAAGjhG,UAAWwE,aAYpF,OAVArI,EAAOuF,MAAU6V,KAAKk3D,KAAMuuiC,EAAM,SAAc6W,EAAUE,EAAe,EACzE53nC,EAAOuF,MAAUuI,GAAW9N,EAAOuF,OAASs7mC,EAAKxjnC,MAAM2C,SAASuF,KAASu/F,EAAGjhG,UAAWsE,aAAe,EACtGnI,EAAOoF,KAAS0I,GAAW9N,EAAOoF,MAAUy7mC,EAAKxjnC,MAAM2C,SAASoF,IAAMyynC,EAAkB/yhC,EAAGjhG,UAAWwE,YAAc,EAGpHrI,EAAOuF,MAAQ3E,KAAKkE,IAAK9E,EAAOuF,KAAQvF,EAAOuF,KAAOmynC,EAAUI,GAAaA,EAAYJ,EACxF92nC,KAAKM,IAAKlB,EAAOuF,KAAOmynC,EAAUI,GAAc,GACjD93nC,EAAOoF,KAAOxE,KAAKkE,IAAK9E,EAAOoF,IAAOpF,EAAOoF,IAAMuynC,EAAWvllB,GAAcA,EAAaullB,EACxF/2nC,KAAKM,IAAKy2nC,EAAWE,GAAgB,GAE/B73nC,CACR,EAGA+2nC,SAAU,SAAUrpmC,GAKnB,IAJA,IAAIxpB,EACH28mC,EAAOzlmC,KAAKy6mC,SAAUnomC,GACtBqhmC,EAAQ3zmC,KAAKk3D,KAAMuuiC,EAAM,SAElBnzlC,IAAsB,WAAbA,EAAItC,MAAsC,IAAjBsC,EAAIm2F,UAAkB/e,EAAE0uM,KAAK4J,QAAQ70P,OAAQ76B,KACtFA,EAAMA,EAAKqhmC,EAAQ,kBAAoB,eAIxC,MAAO,EADP7qnC,EAAW4gG,EAAGp3E,GAAM1tB,UACFuF,KAAMrB,EAASkB,IAClC,EAKAuvnC,gBAAiB,SAAUt3nC,GAC1B,IAAI+xnC,EAAU9umC,EAAUkshB,EAAahiK,EACpCq2uB,EAAOzlmC,KAAKsymC,UAEP7M,GAAUxjnC,GAASwjnC,IAAS/7gC,EAAE3zF,KAAM9T,EAAO,eAI5C+d,KAAKwymC,qBACTwB,EAAWh0mC,KAAKk3D,KAAMuuiC,EAAM,YAC5BvgmC,EAAWlF,KAAKk3D,KAAMuuiC,EAAM,YAC5Br0kB,EAAc,WACb1nc,EAAEsshC,WAAW2G,YAAalX,EAC3B,EAGK/7gC,EAAEpzE,UAAaozE,EAAEpzE,QAAQpgB,OAAQ89mC,IAActqhC,EAAEpzE,QAAS09lC,IAC9DvO,EAAKoQ,MAAM9wkC,KAAMivkC,EAAUtqhC,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,eAAiBvgmC,EAAUkshB,GAE/Eq0kB,EAAKoQ,MAAsB,cAAb7B,EAA2B,UACzB,WAAbA,EAAwB,UAAY,QAAgBA,EAAW9umC,EAAW,KAAQkshB,GAGhF4ilB,GACL5ilB,IAEDpxhB,KAAKwymC,oBAAqB,GAE1BpjvB,EAAUpvX,KAAKk3D,KAAMuuiC,EAAM,aAE1Br2uB,EAAQtuX,MAAS2kmC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAO,GAAM,KAAQ,CAAIwjnC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAM0lC,MAAQ,GAAM89kC,IAGnGzlmC,KAAKs5mC,WAAa,KACbt5mC,KAAKyymC,YACTzymC,KAAKo6mC,aAAajxnC,IAAK,CAAEL,SAAU,WAAYqB,KAAM,IAAKH,IAAK,WAC1D0/F,EAAE2whC,UACN3whC,EAAEkzhC,YACFlzhC,EAAG,QAAS6mC,OAAQvwH,KAAK61mC,SAG3B71mC,KAAKyymC,WAAY,EAEnB,EAGAkK,YAAa,SAAUlX,GACtBA,EAAKoQ,MAAMnsgC,YAAa1pG,KAAK8ymC,cAAe7l/B,IAAK,0BAClD,EAGA4v/B,oBAAqB,SAAU1wmC,GAC9B,GAAMu9E,EAAEsshC,WAAW1D,SAAnB,CAIA,IAAIiI,EAAU7whC,EAAGv9E,EAAMpe,QACtB03mC,EAAO/7gC,EAAEsshC,WAAWyE,SAAUF,EAAS,KAE/BA,EAAS,GAAIx8mC,KAAO2rF,EAAEsshC,WAAWtD,YACoB,IAA5D6H,EAAQ/xgC,QAAS,IAAM9e,EAAEsshC,WAAWtD,YAAat+mC,QAChDmmnC,EAAQrwgC,SAAUxgB,EAAEsshC,WAAWoC,kBAC/BmC,EAAQ5s6B,QAAS,IAAMjkH,EAAEsshC,WAAWnD,eAAgBz+mC,SACrDs1F,EAAEsshC,WAAWxD,oBAAyB9ohC,EAAEsshC,WAAWvD,WAAa/ohC,EAAE2whC,YACjEE,EAAQrwgC,SAAUxgB,EAAEsshC,WAAWoC,kBAAqB1uhC,EAAEsshC,WAAW1D,WAAa7M,IAC/E/7gC,EAAEsshC,WAAWuD,iBAXf,CAaD,EAGA6B,YAAa,SAAUr9mC,EAAInZ,EAAQ+7G,GAClC,IAAI5yG,EAAS27F,EAAG3rF,GACf0nmC,EAAOzlmC,KAAKy6mC,SAAU1snC,EAAQ,IAE1BiS,KAAKi2mC,sBAAuBlonC,EAAQ,MAGzCiS,KAAK88mC,gBAAiBrX,EAAM7gnC,GACd,MAAX+7G,EAAiB3gG,KAAKk3D,KAAMuuiC,EAAM,oBAAuB,GAC3D9kgC,GACD3gG,KAAK85mC,kBAAmBrU,GACzB,EAGA6V,WAAY,SAAUv9mC,GACrB,IAAIujC,EACHvzC,EAAS27F,EAAG3rF,GACZ0nmC,EAAOzlmC,KAAKy6mC,SAAU1snC,EAAQ,IAE1BiS,KAAKk3D,KAAMuuiC,EAAM,gBAAmBA,EAAKsX,YAC7CtX,EAAKkT,YAAclT,EAAKsX,WACxBtX,EAAKqT,UAAYrT,EAAKmT,cAAgBnT,EAAKuX,aAC3CvX,EAAKsT,SAAWtT,EAAKoT,aAAepT,EAAKvwf,cAEzC5zkB,EAAO,IAAIz4B,KACX48lC,EAAKkT,YAAcr3kC,EAAKikE,UACxBkggC,EAAKqT,UAAYrT,EAAKmT,cAAgBt3kC,EAAKqkE,WAC3C8//B,EAAKsT,SAAWtT,EAAKoT,aAAev3kC,EAAKukE,eAE1C7lG,KAAKi9mC,cAAexX,GACpBzlmC,KAAKo7mC,YAAartnC,EACnB,EAGAmvnC,iBAAkB,SAAUn/mC,EAAIkyT,EAAQtvN,GACvC,IAAI5yG,EAAS27F,EAAG3rF,GACf0nmC,EAAOzlmC,KAAKy6mC,SAAU1snC,EAAQ,IAE/B03mC,EAAM,YAA0B,MAAX9kgC,EAAiB,QAAU,SAChD8kgC,EAAM,QAAsB,MAAX9kgC,EAAiB,QAAU,SAC3Cx6E,SAAU8pS,EAAOrgU,QAASqgU,EAAO9J,eAAgBxgU,MAAO,IAEzDqa,KAAKi9mC,cAAexX,GACpBzlmC,KAAKo7mC,YAAartnC,EACnB,EAGAotnC,WAAY,SAAUp9mC,EAAIw/E,EAAOE,EAAMmhL,GACtC,IAAI6m2B,EACH13mC,EAAS27F,EAAG3rF,GAER2rF,EAAGk1K,GAAK10J,SAAUlqG,KAAKgzmC,qBAAwBhzmC,KAAKi2mC,sBAAuBlonC,EAAQ,OAIxF03mC,EAAOzlmC,KAAKy6mC,SAAU1snC,EAAQ,KACzB4qnC,YAAclT,EAAKsX,WAAarzhC,EAAG,IAAKk1K,GAAK51Q,OAClDy8mC,EAAKmT,cAAgBnT,EAAKuX,aAAez/hC,EACzCkohC,EAAKoT,aAAepT,EAAKvwf,YAAcz3hB,EACvCz9E,KAAKm9mC,YAAap/mC,EAAIiC,KAAK05mC,YAAajU,EACvCA,EAAKsX,WAAYtX,EAAKuX,aAAcvX,EAAKvwf,cAC3C,EAGAmmgB,WAAY,SAAUt9mC,GACrB,IAAIhQ,EAAS27F,EAAG3rF,GAChBiC,KAAKm9mC,YAAapvnC,EAAQ,GAC3B,EAGAovnC,YAAa,SAAUp/mC,EAAIgnjB,GAC1B,IAAIxvP,EACHxnU,EAAS27F,EAAG3rF,GACZ0nmC,EAAOzlmC,KAAKy6mC,SAAU1snC,EAAQ,IAE/Bg3jB,EAAuB,MAAXA,EAAkBA,EAAU/kjB,KAAK05mC,YAAajU,GACrDA,EAAKxjnC,OACTwjnC,EAAKxjnC,MAAM0lC,IAAKo9hB,GAEjB/kjB,KAAK+5mC,iBAAkBtU,IAEvBlwyB,EAAWv1T,KAAKk3D,KAAMuuiC,EAAM,aAE3BlwyB,EAASz0T,MAAS2kmC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAO,GAAM,KAAQ,CAAE8ikB,EAAS0gjB,IACzDA,EAAKxjnC,OAChBwjnC,EAAKxjnC,MAAMkjE,QAAS,UAGhBsgjC,EAAKpq4B,OACTr7N,KAAK85mC,kBAAmBrU,IAExBzlmC,KAAKu5mC,kBACLv5mC,KAAKs5mC,WAAa7T,EAAKxjnC,MAAO,GACK,iBAAtBwjnC,EAAKxjnC,MAAO,IACxBwjnC,EAAKxjnC,MAAMkjE,QAAS,SAErBnlD,KAAKs5mC,WAAa,KAEpB,EAGAS,iBAAkB,SAAUtU,GAC3B,IAAIgQ,EAAWn0kC,EAAMyjhB,EACpBywjB,EAAWx1mC,KAAKk3D,KAAMuuiC,EAAM,YAExB+P,IACJC,EAAYz1mC,KAAKk3D,KAAMuuiC,EAAM,cAAiBzlmC,KAAKk3D,KAAMuuiC,EAAM,cAC/DnkkC,EAAOthC,KAAKk7mC,SAAUzV,GACtB1gjB,EAAU/kjB,KAAKu/iB,WAAYk2jB,EAAWn0kC,EAAMthC,KAAKy7mC,iBAAkBhW,IACnE/7gC,EAAG8rhC,GAAW7tlC,IAAKo9hB,GAErB,EAMAq4jB,WAAY,SAAU97kC,GACrB,IAAIg8C,EAAMh8C,EAAK87F,SACf,MAAO,CAAI9/C,EAAM,GAAKA,EAAM,EAAK,GAClC,EAMAy3hC,YAAa,SAAUzzkC,GACtB,IAAIg9C,EACHu2zB,EAAY,IAAIhs4B,KAAMy4B,EAAKmkE,WAQ5B,OALAovyB,EAAU13wB,QAAS03wB,EAAUtvyB,UAAY,GAAMsvyB,EAAUz3wB,UAAY,IAErE9+C,EAAOu2zB,EAAUpvyB,UACjBovyB,EAAUnvyB,SAAU,GACpBmvyB,EAAU13wB,QAAS,GACZ33I,KAAKQ,MAAOR,KAAK+F,OAAS+yF,EAAOu2zB,GAAc,OAAa,GAAM,CAC1E,EAeAz/vB,UAAW,SAAU52G,EAAQ74C,EAAOq7N,GACnC,GAAe,MAAVxiL,GAA2B,MAAT74C,EACtB,KAAM,oBAIP,GAAe,MADfA,EAA2B,iBAAVA,EAAqBA,EAAMqB,WAAarB,EAAQ,IAEhE,OAAO,KAGR,IAAI03nC,EAASx1pB,EAAKrsY,EAcjBl6C,EAbAg8kC,EAAS,EACTC,GAAwBv85B,EAAWA,EAASg05B,gBAAkB,OAAUh1mC,KAAK8zmC,UAAUkB,gBACvFA,EAAmD,iBAAxBuI,EAAmCA,GAC7D,IAAI10mC,MAAOg9F,cAAgB,IAAM1/E,SAAUo3lC,EAAqB,IACjE/J,GAAkBxy5B,EAAWA,EAASwy5B,cAAgB,OAAUxzmC,KAAK8zmC,UAAUN,cAC/ED,GAAavy5B,EAAWA,EAASuy5B,SAAW,OAAUvzmC,KAAK8zmC,UAAUP,SACrED,GAAoBty5B,EAAWA,EAASsy5B,gBAAkB,OAAUtzmC,KAAK8zmC,UAAUR,gBACnFD,GAAery5B,EAAWA,EAASqy5B,WAAa,OAAUrzmC,KAAK8zmC,UAAUT,WACzE51hC,GAAQ,EACRF,GAAS,EACTD,GAAO,EACPh5F,GAAO,EACPi+R,GAAU,EAIVi71B,EAAY,SAAUx5nC,GACrB,IAAIiuC,EAAYorlC,EAAU,EAAI7+kC,EAAOpqC,QAAUoqC,EAAO9rB,OAAQ2qmC,EAAU,KAAQr5nC,EAIhF,OAHKiuC,GACJorlC,IAEMprlC,CACR,EAGAiu0B,EAAY,SAAUl82B,GACrB,IAAIy5nC,EAAYD,EAAWx5nC,GAC1B+uB,EAAmB,MAAV/uB,EAAgB,GAAiB,MAAVA,EAAgB,GACpC,MAAVA,GAAiBy5nC,EAAY,EAAgB,MAAVz5nC,EAAgB,EAAI,EAEzD83G,EAAS,IAAIhqE,OAAQ,SADC,MAAV9tC,EAAgB+uB,EAAO,GACM,IAAMA,EAAO,KACtDkrB,EAAMt4C,EAAMwjG,UAAWm0hC,GAASt5nC,MAAO83G,GACxC,IAAM79D,EACL,KAAM,8BAAgCq/kC,EAGvC,OADAA,GAAUr/kC,EAAK,GAAI7pC,OACZ+xB,SAAU8X,EAAK,GAAK,GAC5B,EAGA23X,EAAU,SAAU5xa,EAAO05nC,EAAYC,GACtC,IAAInnnC,GAAS,EACZkuB,EAAQglE,EAAE32F,IAAKyqnC,EAAWx5nC,GAAU25nC,EAAYD,EAAY,SAAUv7mC,EAAGsP,GACxE,MAAO,CAAE,CAAEA,EAAGtP,GACf,GAAI/O,KAAM,SAAUwG,EAAGC,GACtB,QAAUD,EAAG,GAAIxF,OAASyF,EAAG,GAAIzF,OAClC,GAUD,GARAs1F,EAAE94E,KAAM8T,EAAO,SAAUr/B,EAAGm9M,GAC3B,IAAIjvM,EAAOivM,EAAM,GACjB,GAAK78M,EAAMwsH,OAAQmrgC,EAAQ/pnC,EAAKa,QAAShM,gBAAkBmL,EAAKnL,cAG/D,OAFAoO,EAAQgsM,EAAM,GACd866B,GAAU/pnC,EAAKa,QACR,CAET,IACgB,IAAXoC,EACJ,OAAOA,EAAQ,EAEf,KAAM,4BAA8B8mnC,CAEtC,EAGAM,EAAe,WACd,GAAKj4nC,EAAM+sB,OAAQ4qmC,KAAa9+kC,EAAO9rB,OAAQ2qmC,GAC9C,KAAM,kCAAoCC,EAE3CA,GACD,EAED,IAAMD,EAAU,EAAGA,EAAU7+kC,EAAOpqC,OAAQipnC,IAC3C,GAAK961B,EAC8B,MAA7B/jP,EAAO9rB,OAAQ2qmC,IAAsBG,EAAW,KAGpDI,IAFAr71B,GAAU,OAKX,OAAS/jP,EAAO9rB,OAAQ2qmC,IACvB,IAAK,IACJ//hC,EAAM4ixB,EAAW,KACjB,MACD,IAAK,IACJtqc,EAAS,IAAK49sB,EAAeD,GAC7B,MACD,IAAK,IACJjvnC,EAAM472B,EAAW,KACjB,MACD,IAAK,IACJ3ixB,EAAQ2ixB,EAAW,KACnB,MACD,IAAK,IACJ3ixB,EAAQq4U,EAAS,IAAK09sB,EAAiBD,GACvC,MACD,IAAK,IACJ51hC,EAAOyixB,EAAW,KAClB,MACD,IAAK,IAEJzixB,GADAn8C,EAAO,IAAIz4B,KAAMq31B,EAAW,OAChBr6vB,cACZtoB,EAAQj8C,EAAKqkE,WAAa,EAC1BroB,EAAMh8C,EAAKikE,UACX,MACD,IAAK,IAEJ9nB,GADAn8C,EAAO,IAAIz4B,MAAQq31B,EAAW,KAAQlg2B,KAAK69mC,cAAiB,MAChDh4gC,cACZtoB,EAAQj8C,EAAKqkE,WAAa,EAC1BroB,EAAMh8C,EAAKikE,UACX,MACD,IAAK,IACCi4gC,EAAW,KACfI,IAEAr71B,GAAU,EAEX,MACD,QACCq71B,IAKJ,GAAKN,EAAS33nC,EAAMyO,SACnBonF,EAAQ71F,EAAMwsH,OAAQmrgC,IAChB,OAAOp7nC,KAAMs5F,IAClB,KAAM,4CAA8CA,EAWtD,IAPe,IAAViC,EACJA,GAAO,IAAI50E,MAAOg9F,cACPpoB,EAAO,MAClBA,IAAQ,IAAI50E,MAAOg9F,eAAgB,IAAIh9F,MAAOg9F,cAAgB,KAC3DpoB,GAAQu3hC,EAAkB,GAAK,MAG9B1wnC,GAAO,EAGX,IAFAi5F,EAAQ,EACRD,EAAMh5F,IAGAg5F,IADLuqY,EAAM7nd,KAAK89mC,gBAAiBrgiC,EAAMF,EAAQ,MAI1CA,IACAD,GAAOuqY,EAKT,IADAvmb,EAAOthC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM40E,EAAMF,EAAQ,EAAGD,KACpDuoB,gBAAkBpoB,GAAQn8C,EAAKqkE,WAAa,IAAMpoB,GAASj8C,EAAKikE,YAAcjoB,EACvF,KAAM,eAEP,OAAOh8C,CACR,EAGA08kC,KAAM,WACNC,OAAQ,aACRj3B,SAAU,WACVk3B,QAAS,WACTC,QAAS,aACTC,SAAU,WACVC,SAAU,YACVp3B,SAAU,YACVq3B,IAAK,WACLC,MAAO,IACPC,UAAW,IACXC,IAAK,WAELZ,aAC8B,IADZ,OAAqBr4nC,KAAKQ,MAAO,OAAaR,KAAKQ,MAAO,MAC3ER,KAAKQ,MAAO,QAAsB,GAAK,GAAK,IA8B7Cu5jB,WAAY,SAAU/ghB,EAAQ8C,EAAM0/K,GACnC,IAAM1/K,EACL,MAAO,GAGR,IAAI+7kC,EACH7J,GAAkBxy5B,EAAWA,EAASwy5B,cAAgB,OAAUxzmC,KAAK8zmC,UAAUN,cAC/ED,GAAavy5B,EAAWA,EAASuy5B,SAAW,OAAUvzmC,KAAK8zmC,UAAUP,SACrED,GAAoBty5B,EAAWA,EAASsy5B,gBAAkB,OAAUtzmC,KAAK8zmC,UAAUR,gBACnFD,GAAery5B,EAAWA,EAASqy5B,WAAa,OAAUrzmC,KAAK8zmC,UAAUT,WAGzEmK,EAAY,SAAUx5nC,GACrB,IAAIiuC,EAAYorlC,EAAU,EAAI7+kC,EAAOpqC,QAAUoqC,EAAO9rB,OAAQ2qmC,EAAU,KAAQr5nC,EAIhF,OAHKiuC,GACJorlC,IAEMprlC,CACR,EAGA+L,EAAe,SAAUh6C,EAAO2B,EAAO8J,GACtC,IAAIwuC,EAAM,GAAKt4C,EACf,GAAK63nC,EAAWx5nC,GACf,KAAQi6C,EAAI7pC,OAAS3E,GACpBwuC,EAAM,IAAMA,EAGd,OAAOA,CACR,EAGAoi+B,EAAa,SAAUr8gC,EAAO2B,EAAO+3nC,EAAYC,GAChD,OAASH,EAAWx5nC,GAAU25nC,EAAWh4nC,GAAU+3nC,EAAY/3nC,EAChE,EACAo8N,EAAS,GACTwgE,GAAU,EAEX,GAAKjhP,EACJ,IAAM+7kC,EAAU,EAAGA,EAAU7+kC,EAAOpqC,OAAQipnC,IAC3C,GAAK961B,EAC8B,MAA7B/jP,EAAO9rB,OAAQ2qmC,IAAsBG,EAAW,KAGpDz75B,GAAUvjL,EAAO9rB,OAAQ2qmC,GAFzB961B,GAAU,OAKX,OAAS/jP,EAAO9rB,OAAQ2qmC,IACvB,IAAK,IACJt75B,GAAU/jL,EAAc,IAAKsD,EAAKikE,UAAW,GAC7C,MACD,IAAK,IACJw8G,GAAUs+yB,EAAY,IAAK/+9B,EAAK87F,SAAUo2+B,EAAeD,GACzD,MACD,IAAK,IACJxx5B,GAAU/jL,EAAc,IACvBx4C,KAAK+F,OAAS,IAAIsd,KAAMy4B,EAAKukE,cAAevkE,EAAKqkE,WAAYrkE,EAAKikE,WAAYE,UAAY,IAAI58F,KAAMy4B,EAAKukE,cAAe,EAAG,GAAIJ,WAAc,OAAY,GAC1J,MACD,IAAK,IACJs8G,GAAU/jL,EAAc,IAAKsD,EAAKqkE,WAAa,EAAG,GAClD,MACD,IAAK,IACJo8G,GAAUs+yB,EAAY,IAAK/+9B,EAAKqkE,WAAY2tgC,EAAiBD,GAC7D,MACD,IAAK,IACJtx5B,GAAYy75B,EAAW,KAAQl8kC,EAAKukE,eACjCvkE,EAAKukE,cAAgB,IAAM,GAAK,IAAM,IAAOvkE,EAAKukE,cAAgB,IACrE,MACD,IAAK,IACJk8G,GAAUzgL,EAAKmkE,UACf,MACD,IAAK,IACJs8G,GAA2B,IAAjBzgL,EAAKmkE,UAAoBzlG,KAAK69mC,aACxC,MACD,IAAK,IACCL,EAAW,KACfz75B,GAAU,IAEVwgE,GAAU,EAEX,MACD,QACCxgE,GAAUvjL,EAAO9rB,OAAQ2qmC,GAK9B,OAAOt75B,CACR,EAGAw55B,eAAgB,SAAU/8kC,GACzB,IAAI6+kC,EACH9o1B,EAAQ,GACRhS,GAAU,EAGVi71B,EAAY,SAAUx5nC,GACrB,IAAIiuC,EAAYorlC,EAAU,EAAI7+kC,EAAOpqC,QAAUoqC,EAAO9rB,OAAQ2qmC,EAAU,KAAQr5nC,EAIhF,OAHKiuC,GACJorlC,IAEMprlC,CACR,EAED,IAAMorlC,EAAU,EAAGA,EAAU7+kC,EAAOpqC,OAAQipnC,IAC3C,GAAK961B,EAC8B,MAA7B/jP,EAAO9rB,OAAQ2qmC,IAAsBG,EAAW,KAGpDjp1B,GAAS/1P,EAAO9rB,OAAQ2qmC,GAFxB961B,GAAU,OAKX,OAAS/jP,EAAO9rB,OAAQ2qmC,IACvB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClC9o1B,GAAS,aACT,MACD,IAAK,IAAK,IAAK,IACd,OAAO,KACR,IAAK,IACCip1B,EAAW,KACfjp1B,GAAS,IAEThS,GAAU,EAEX,MACD,QACCgS,GAAS/1P,EAAO9rB,OAAQ2qmC,GAI5B,OAAO9o1B,CACR,EAGAr9N,KAAM,SAAUuuiC,EAAMlymC,GACrB,YAAiCuD,IAA1B2umC,EAAKzk5B,SAAUztN,GACrBkymC,EAAKzk5B,SAAUztN,GAASyM,KAAK8zmC,UAAWvgnC,EAC1C,EAGA0nnC,kBAAmB,SAAUxV,EAAMuV,GAClC,GAAKvV,EAAKxjnC,MAAM0lC,QAAU89kC,EAAK+V,QAA/B,CAIA,IAAIrhO,EAAan64B,KAAKk3D,KAAMuuiC,EAAM,cACjC7h/B,EAAQ6h/B,EAAK+V,QAAU/V,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAM0lC,MAAQ,KACvDuslC,EAAcl0mC,KAAK65mC,gBAAiBpU,GACpCnkkC,EAAO4ykC,EACPlz5B,EAAWhhN,KAAKy7mC,iBAAkBhW,GAEnC,IACCnkkC,EAAOthC,KAAKo1I,UAAW+kwB,EAAYv2xB,EAAOo9F,IAAckz5B,CACzD,CAAE,MAAQ/nmC,GACTy3G,EAAUo3/B,EAAY,GAAKp3/B,CAC5B,CACA6h/B,EAAKkT,YAAcr3kC,EAAKikE,UACxBkggC,EAAKqT,UAAYrT,EAAKmT,cAAgBt3kC,EAAKqkE,WAC3C8//B,EAAKsT,SAAWtT,EAAKoT,aAAev3kC,EAAKukE,cACzC4//B,EAAKsX,WAAen5/B,EAAQtiF,EAAKikE,UAAY,EAC7CkggC,EAAKuX,aAAiBp5/B,EAAQtiF,EAAKqkE,WAAa,EAChD8//B,EAAKvwf,YAAgBtxf,EAAQtiF,EAAKukE,cAAgB,EAClD7lG,KAAK88mC,gBAAiBrX,EAnBtB,CAoBD,EAGAoU,gBAAiB,SAAUpU,GAC1B,OAAOzlmC,KAAK0+mC,gBAAiBjZ,EAC5BzlmC,KAAK2+mC,eAAgBlZ,EAAMzlmC,KAAKk3D,KAAMuuiC,EAAM,eAAiB,IAAI58lC,MACnE,EAGA81mC,eAAgB,SAAUlZ,EAAMnkkC,EAAM4ykC,GACrC,IA0CCj3f,EAAoB,MAAR37kB,GAAyB,KAATA,EAAc4ykC,EAAgC,iBAAT5ykC,EArClD,SAAU18C,GACxB,IACC,OAAO8kG,EAAEsshC,WAAW5g+B,UAAW1rD,EAAEsshC,WAAW9+iC,KAAMuuiC,EAAM,cACvD7gnC,EAAQ8kG,EAAEsshC,WAAWyF,iBAAkBhW,GACzC,CACA,MAAQzgnC,GAGR,CAUA,IARA,IAAIs8C,GAAS18C,EAAOwD,cAAcpE,MAAO,MACxC0lG,EAAEsshC,WAAWkF,SAAUzV,GAAS,OAAU,IAAI58lC,KAC9C40E,EAAOn8C,EAAKukE,cACZtoB,EAAQj8C,EAAKqkE,WACbroB,EAAMh8C,EAAKikE,UACX/T,EAAU,uCACVv/D,EAAUu/D,EAAQnsE,KAAMzgC,GAEjBqtC,GAAU,CACjB,OAASA,EAAS,IAAO,KACxB,IAAK,IAAM,IAAK,IACfqrD,GAAOn3D,SAAU8L,EAAS,GAAK,IAAM,MACtC,IAAK,IAAM,IAAK,IACfqrD,GAAsC,EAA/Bn3D,SAAU8L,EAAS,GAAK,IAAU,MAC1C,IAAK,IAAM,IAAK,IACfsrD,GAASp3D,SAAU8L,EAAS,GAAK,IACjCqrD,EAAM93F,KAAKkE,IAAK4zF,EAAKoM,EAAEsshC,WAAW8H,gBAAiBrgiC,EAAMF,IACzD,MACD,IAAK,IAAK,IAAK,IACdE,GAAQt3D,SAAU8L,EAAS,GAAK,IAChCqrD,EAAM93F,KAAKkE,IAAK4zF,EAAKoM,EAAEsshC,WAAW8H,gBAAiBrgiC,EAAMF,IAG3DtrD,EAAUu/D,EAAQnsE,KAAMzgC,EACzB,CACA,OAAO,IAAIikB,KAAM40E,EAAMF,EAAOD,EAC/B,CACqFshiC,CAAct9kC,GAChF,iBAATA,EAAsBv7C,MAAOu7C,GAAS4ykC,EA3C7B,SAAUtvnC,GAC5B,IAAI08C,EAAO,IAAIz4B,KAEf,OADAy4B,EAAK67F,QAAS77F,EAAKikE,UAAY3gH,GACxB08C,CACR,CAuC8Du9kC,CAAev9kC,GAAW,IAAIz4B,KAAMy4B,EAAKmkE,WASxG,OAPAw3gB,EAAYA,GAAkC,iBAAvBA,EAAQj2nB,WAAgCktnC,EAAcj3f,KAE5EA,EAAQvre,SAAU,GAClBure,EAAQtre,WAAY,GACpBsre,EAAQrre,WAAY,GACpBqre,EAAQz0hB,gBAAiB,IAEnBxoF,KAAK+9mC,sBAAuB9ggB,EACpC,EASA8ggB,sBAAuB,SAAUz8kC,GAChC,OAAMA,GAGNA,EAAKowG,SAAUpwG,EAAK0jG,WAAa,GAAK1jG,EAAK0jG,WAAa,EAAI,GACrD1jG,GAHC,IAIT,EAGAs4kC,SAAU,SAAUnU,EAAMnkkC,EAAMw9kC,GAC/B,IAAI/jjC,GAASz5B,EACZy9kC,EAAYtZ,EAAKmT,cACjBoG,EAAWvZ,EAAKoT,aAChB57f,EAAUj9mB,KAAK0+mC,gBAAiBjZ,EAAMzlmC,KAAK2+mC,eAAgBlZ,EAAMnkkC,EAAM,IAAIz4B,OAE5E48lC,EAAKkT,YAAclT,EAAKsX,WAAa9/f,EAAQ13gB,UAC7CkggC,EAAKqT,UAAYrT,EAAKmT,cAAgBnT,EAAKuX,aAAe//f,EAAQt3gB,WAClE8//B,EAAKsT,SAAWtT,EAAKoT,aAAepT,EAAKvwf,YAAc+H,EAAQp3gB,cACxDk5gC,IAActZ,EAAKmT,eAAiBoG,IAAavZ,EAAKoT,cAAmBiG,GAC/E9+mC,KAAKi9mC,cAAexX,GAErBzlmC,KAAK88mC,gBAAiBrX,GACjBA,EAAKxjnC,OACTwjnC,EAAKxjnC,MAAM0lC,IAAKozC,EAAQ,GAAK/6D,KAAK05mC,YAAajU,GAEjD,EAGAyV,SAAU,SAAUzV,GAIlB,OAHkBA,EAAKvwf,aAAiBuwf,EAAKxjnC,OAA8B,KAArBwjnC,EAAKxjnC,MAAM0lC,MAAiB,KAClF3nB,KAAK+9mC,sBAAuB,IAAIl1mC,KAChC48lC,EAAKvwf,YAAauwf,EAAKuX,aAAcvX,EAAKsX,YAE5C,EAKAf,gBAAiB,SAAUvW,GAC1B,IAAI6P,EAAat1mC,KAAKk3D,KAAMuuiC,EAAM,cACjC1nmC,EAAK,IAAM0nmC,EAAK1nmC,GAAGha,QAAS,QAAS,MACtC0hnC,EAAKoQ,MAAMh7mC,KAAM,kBAAmB9H,IAAK,WACxC,IAAImrD,EAAU,CACbrjB,KAAM,WACL6uD,EAAEsshC,WAAWoF,YAAar9mC,GAAKu3mC,EAAY,IAC5C,EACAxtnC,KAAM,WACL4hG,EAAEsshC,WAAWoF,YAAar9mC,GAAKu3mC,EAAY,IAC5C,EACAvwkC,KAAM,WACL2kD,EAAEsshC,WAAWuD,iBACd,EACAx/mB,MAAO,WACNrwa,EAAEsshC,WAAWsF,WAAYv9mC,EAC1B,EACAkhnC,UAAW,WAEV,OADAv1hC,EAAEsshC,WAAWmF,WAAYp9mC,GAAKiC,KAAKlC,aAAc,eAAiBkC,KAAKlC,aAAc,aAAekC,OAC7F,CACR,EACAk/mC,YAAa,WAEZ,OADAx1hC,EAAEsshC,WAAWkH,iBAAkBn/mC,EAAIiC,KAAM,MAClC,CACR,EACAm/mC,WAAY,WAEX,OADAz1hC,EAAEsshC,WAAWkH,iBAAkBn/mC,EAAIiC,KAAM,MAClC,CACR,GAED0pF,EAAG1pF,MAAO2qG,GAAI3qG,KAAKlC,aAAc,cAAgBogD,EAASl+C,KAAKlC,aAAc,iBAC9E,EACD,EAGAi+mC,cAAe,SAAUtW,GACxB,IAAI2Z,EAAShM,EAAUv4kC,EAAMwr3B,EAAUv+5B,EAAM2x5B,EAAar6V,EACzD1+W,EAAU2+6B,EAAa5klB,EAAUo6kB,EAAUtB,EAAUE,EACrDJ,EAAYC,EAAiB2B,EAAeN,EAC5CC,EAAmBV,EAAalrnC,EAAM3E,EAAK4nF,EAAKliE,EAAOuiE,EAAKswiB,EAC5D0igB,EAAaC,EAAU7g3B,EAAOphL,EAAKihgC,EAAaihC,EAAUC,EAASC,EACnEC,EAAWC,EAAMth3B,EAAOuh3B,EAAaC,EAAY7hE,EACjD8hE,EAAW,IAAIl3mC,KACfkxf,EAAQ/5f,KAAK+9mC,sBACZ,IAAIl1mC,KAAMk3mC,EAASl6gC,cAAek6gC,EAASp6gC,WAAYo6gC,EAASx6gC,YACjEougC,EAAQ3zmC,KAAKk3D,KAAMuuiC,EAAM,SACzBkQ,EAAkB31mC,KAAKk3D,KAAMuuiC,EAAM,mBACnC6O,EAAmBt0mC,KAAKk3D,KAAMuuiC,EAAM,oBACpC8O,EAAyBv0mC,KAAKk3D,KAAMuuiC,EAAM,0BAC1CyW,EAAYl8mC,KAAKm8mC,mBAAoB1W,GACrC4P,EAAmBr1mC,KAAKk3D,KAAMuuiC,EAAM,oBACpC6P,EAAat1mC,KAAKk3D,KAAMuuiC,EAAM,cAC9Bua,EAAoC,IAAnB9D,EAAW,IAAgC,IAAnBA,EAAW,GACpD5ykB,EAActpiB,KAAK+9mC,sBAA0BtY,EAAKsX,WACjD,IAAIl0mC,KAAM48lC,EAAKvwf,YAAauwf,EAAKuX,aAAcvX,EAAKsX,YADU,IAAIl0mC,KAAM,KAAM,EAAG,IAElF+p4B,EAAU5y4B,KAAK46mC,eAAgBnV,EAAM,OACrC/yN,EAAU1y4B,KAAK46mC,eAAgBnV,EAAM,OACrCqT,EAAYrT,EAAKqT,UAAYzD,EAC7B0D,GAAWtT,EAAKsT,SAMjB,GAJKD,EAAY,IAChBA,GAAa,GACbC,MAEIrmO,EAIJ,IAHA0sO,EAAUp/mC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM6p4B,EAAQ7syB,cACvD6syB,EAAQ/syB,WAAeu2gC,EAAW,GAAMA,EAAW,GAAQ,EAAGxpO,EAAQntyB,YACvE65gC,EAAYxsO,GAAWwsO,EAAUxsO,EAAUA,EAAUwsO,EAC7Cp/mC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAMkwmC,GAAUD,EAAW,IAAQsG,KAC1EtG,EACiB,IAChBA,EAAY,GACZC,MAqDH,IAjDAtT,EAAKqT,UAAYA,EACjBrT,EAAKsT,SAAWA,GAEhB3F,EAAWpzmC,KAAKk3D,KAAMuuiC,EAAM,YAC5B2N,EAAcmB,EAAoCv0mC,KAAKu/iB,WAAY6zjB,EAClEpzmC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAMkwmC,GAAUD,EAAYxD,EAAY,IACxEt1mC,KAAKy7mC,iBAAkBhW,IAFe2N,EAIvCv4kC,EAAS76B,KAAKignC,gBAAiBxa,GAAO,EAAGsT,GAAUD,GAClD,6FACa1F,EAAW,mDAAsDO,EAAQ,IAAM,KAAQ,KAAOP,EAAW,cACpHkB,EAAmB,GAAK,wEAA0ElB,EAAW,mDAAsDO,EAAQ,IAAM,KAAQ,KAAOP,EAAW,cAE9M/sN,EAAWrm5B,KAAKk3D,KAAMuuiC,EAAM,YAC5Bp/M,EAAckuN,EAAoCv0mC,KAAKu/iB,WAAY8mW,EAClErm5B,KAAK+9mC,sBAAuB,IAAIl1mC,KAAMkwmC,GAAUD,EAAYxD,EAAY,IACxEt1mC,KAAKy7mC,iBAAkBhW,IAFep/M,EAIvCv+5B,EAASkY,KAAKignC,gBAAiBxa,EAAM,EAAIsT,GAAUD,GAClD,6FACazyN,EAAW,mDAAsDstN,EAAQ,IAAM,KAAQ,KAAOttN,EAAW,cACpHiuN,EAAmB,GAAK,wEAA0EjuN,EAAW,mDAAsDstN,EAAQ,IAAM,KAAQ,KAAOttN,EAAW,cAE9M5M,EAAcz54B,KAAKk3D,KAAMuuiC,EAAM,eAC/BrmjB,EAAap/iB,KAAKk3D,KAAMuuiC,EAAM,gBAAmBA,EAAKsX,WAAazzkB,EAAcvvC,EACjF0/Y,EAAiB86N,EAChBv0mC,KAAKu/iB,WAAYk6V,EAAar6V,EAAUp/iB,KAAKy7mC,iBAAkBhW,IADtBhsN,EAG1C/4sB,EAAc+k6B,EAAKpq4B,OAC6B,GADpB,+IAC3Br7N,KAAKk3D,KAAMuuiC,EAAM,aAAgB,YAElC4Z,EAAc,EAAsB,4DAA+D1L,EAAQjz6B,EAAW,KACnH1gM,KAAKkgnC,WAAYza,EAAMrmjB,GAAa,oJAChCq6V,EAAc,YAAc,KAASk6N,EAAQ,GAAKjz6B,GAAa,SAAW,GAEjF+5V,EAAWt0gB,SAAUnmB,KAAKk3D,KAAMuuiC,EAAM,YAAc,IACpDhrkB,EAAa10iB,MAAO00iB,GAAa,EAAIA,EAErCo6kB,EAAW70mC,KAAKk3D,KAAMuuiC,EAAM,YAC5B8N,EAAWvzmC,KAAKk3D,KAAMuuiC,EAAM,YAC5BgO,EAAczzmC,KAAKk3D,KAAMuuiC,EAAM,eAC/B4N,EAAarzmC,KAAKk3D,KAAMuuiC,EAAM,cAC9B6N,EAAkBtzmC,KAAKk3D,KAAMuuiC,EAAM,mBACnCwP,EAAgBj1mC,KAAKk3D,KAAMuuiC,EAAM,iBACjCkP,EAAkB30mC,KAAKk3D,KAAMuuiC,EAAM,mBACnCmP,EAAoB50mC,KAAKk3D,KAAMuuiC,EAAM,qBACrCyO,EAAcl0mC,KAAK65mC,gBAAiBpU,GACpCz8mC,EAAO,GAEDijF,EAAM,EAAGA,EAAMiwiC,EAAW,GAAKjwiC,IAAQ,CAG5C,IAFAliE,EAAQ,GACR/J,KAAKq4mC,QAAU,EACT/riC,EAAM,EAAGA,EAAM4viC,EAAW,GAAK5viC,IAAQ,CAI5C,GAHAswiB,EAAe58mB,KAAK+9mC,sBAAuB,IAAIl1mC,KAAMkwmC,GAAUD,EAAWrT,EAAKkT,cAC/E2G,EAAc,iBACdC,EAAW,GACNS,EAAe,CAEnB,GADAT,GAAY,kCACPrD,EAAW,GAAM,EACrB,OAAS5viC,GACR,KAAK,EAAGiziC,GAAY,6BACnBD,EAAc,eAAkB3L,EAAQ,QAAU,QAAU,MAC7D,KAAKuI,EAAW,GAAM,EAAGqD,GAAY,4BACpCD,EAAc,eAAkB3L,EAAQ,OAAS,SAAW,MAC7D,QAAS4L,GAAY,8BAA+BD,EAAc,GAGpEC,GAAY,IACb,CASA,IARAA,GAAY,uEAAyED,EAAc,MAChG,WAAWp9nC,KAAMo9nC,IAAyB,IAARrziC,EAAc0niC,EAAQ7rnC,EAAO+yC,EAAS,KACxE,YAAY34C,KAAMo9nC,IAAyB,IAARrziC,EAAc0niC,EAAQ94kC,EAAO/yC,EAAS,IAC3EkY,KAAKmgnC,yBAA0B1a,EAAMqT,EAAWC,GAAUnmO,EAASF,EACnEzm0B,EAAM,GAAKK,EAAM,EAAG+miC,EAAYC,GAJrB,0DAOZ502B,EAAUm22B,EAAW,sCAAwC70mC,KAAKk3D,KAAMuuiC,EAAM,cAAiB,QAAU,GACnGphnC,EAAM,EAAGA,EAAM,EAAGA,IAEvBq6Q,GAAS,oBAAwBr6Q,EAAMo2iB,EAAW,GAAM,GAAK,EAAI,kCAAoC,IAA5F,iBACU84kB,EAFnBj2hC,GAAQj5F,EAAMo2iB,GAAa,GAEU,KAAOg5kB,EAAan2hC,GAAQ,eAYlE,IAVAiiiC,GAAY7g3B,EAAQ,uBACpB6/0B,EAAcv+kC,KAAK89mC,gBAAiB/E,GAAUD,GACzCC,KAAatT,EAAKoT,cAAgBC,IAAcrT,EAAKmT,gBACzDnT,EAAKkT,YAAcnznC,KAAKkE,IAAK+7mC,EAAKkT,YAAap6B,IAEhDihC,GAAax/mC,KAAKognC,oBAAqBrH,GAAUD,GAAcr+kB,EAAW,GAAM,EAChFgllB,EAAUj6nC,KAAKsjE,MAAQ02jC,EAAWjhC,GAAgB,GAClDmhC,EAAYM,GAAehgnC,KAAKq4mC,QAAUoH,EAAUz/mC,KAAKq4mC,QAAoBoH,EAC7Ez/mC,KAAKq4mC,QAAUqH,EACfC,EAAY3/mC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAMkwmC,GAAUD,EAAW,EAAI0G,IACrEI,EAAO,EAAGA,EAAOF,EAASE,IAAS,CAIxC,IAHAL,GAAY,OACZjh3B,EAAWu22B,EAAgB,sCAC1B70mC,KAAKk3D,KAAMuuiC,EAAM,gBAAjBzlmC,CAAoC2/mC,GAAc,QAD7B,GAEhBt7nC,EAAM,EAAGA,EAAM,EAAGA,IACvBw7nC,EAAgB5K,EACfA,EAAcn0mC,MAAS2kmC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAO,GAAM,KAAQ,CAAE09nC,IAAgB,EAAE,EAAM,IAEzF1hE,GADA6hE,EAAeH,EAAUh6gC,aAAemzgC,KACRlE,IAAwBiL,EAAa,IAClEjtO,GAAW+sO,EAAY/sO,GAAeF,GAAWitO,EAAYjtO,EAChEp0oB,GAAS,gBACJj6Q,EAAMo2iB,EAAW,GAAM,GAAK,EAAI,0BAA4B,KAC9DqllB,EAAa,6BAA+B,KAC1CH,EAAUl6gC,YAAcm3gB,EAAan3gB,WAAaqzgC,IAAcrT,EAAKmT,eAAiBnT,EAAK6K,WAC7F4D,EAAYzugC,YAAck6gC,EAAUl6gC,WAAayugC,EAAYzugC,YAAcm3gB,EAAan3gB,UAG1F,IAAMzlG,KAAKkzmC,cAAgB,KACzBj1D,EAAe,IAAMj+iC,KAAKgzmC,mBAAqB,qBAAuB,KACtE8M,IAAenL,EAAkB,GAAK,IAAMkL,EAAa,IACzDF,EAAUl6gC,YAAc6jc,EAAY7jc,UAAY,IAAMzlG,KAAKizmC,cAAgB,KAC3E0M,EAAUl6gC,YAAcs0Z,EAAMt0Z,UAAY,uBAAyB,KAAS,KACzEq6gC,IAAcnL,IAAqBkL,EAAa,GAAqE,GAA/D,WAAaA,EAAa,GAAI97nC,QAAS,KAAM,SAAY,MAClHk6jC,EAAe,GAAK,4DAA8D0hE,EAAUh6gC,WAAa,gBAAkBg6gC,EAAU95gC,cAAgB,KAAQ,KAC7Ji6gC,IAAenL,EAAkB,SACjC12D,EAAe,kCAAoC0hE,EAAUp6gC,UAAY,UAAY,8BACrFo6gC,EAAUl6gC,YAAcs0Z,EAAMt0Z,UAAY,sBAAwB,KAClEk6gC,EAAUl6gC,YAAc6jc,EAAY7jc,UAAY,mBAAqB,KACrEq6gC,EAAa,yBAA2B,IAC1C,cAAgBH,EAAUp6gC,UAAY,QAAa,QACpDo6gC,EAAUxi/B,QAASwi/B,EAAUp6gC,UAAY,GACzCo6gC,EAAY3/mC,KAAK+9mC,sBAAuB4B,GAEzCJ,GAAYjh3B,EAAQ,OACrB,GACAw62B,EACiB,KAChBA,EAAY,EACZC,MAIDhvmC,GAFAw1mC,GAAY,oBAAuBS,EAAe,UAC3C9D,EAAW,GAAM,GAAK5viC,IAAQ4viC,EAAW,GAAM,EAAM,8CAAgD,IAAO,GAEpH,CACAlznC,GAAQ+gB,CACT,CAGA,OAFA/gB,GAAQq2nC,EACR5Z,EAAK6K,WAAY,EACVtnnC,CACR,EAGAm3nC,yBAA0B,SAAU1a,EAAMqT,EAAWC,EAAUnmO,EAASF,EACtEt6M,EAAWi7a,EAAYC,GAExB,IAAI+M,EAAWC,EAAW/iiC,EAAOmuZ,EAAO60oB,EAAUC,EAAe/iiC,EAAMgjiC,EACtEhM,EAAcz0mC,KAAKk3D,KAAMuuiC,EAAM,eAC/BiP,EAAa10mC,KAAKk3D,KAAMuuiC,EAAM,cAC9BmO,EAAqB5zmC,KAAKk3D,KAAMuuiC,EAAM,sBACtCz8mC,EAAO,oCACP03nC,EAAY,GAGb,GAAKtob,IAAcq8a,EAClBiM,GAAa,qCAAuCrN,EAAYyF,GAAc,cACxE,CAIN,IAHAuH,EAAcztO,GAAWA,EAAQ/syB,gBAAkBkzgC,EACnDuH,EAAc5tO,GAAWA,EAAQ7syB,gBAAkBkzgC,EACnD2H,GAAa,sFACPnjiC,EAAQ,EAAGA,EAAQ,GAAIA,MACpB8iiC,GAAa9iiC,GAASq1zB,EAAQjtyB,eAAmB26gC,GAAa/iiC,GAASm1zB,EAAQ/syB,cACtF+6gC,GAAa,kBAAoBnjiC,EAAQ,KACtCA,IAAUu7hC,EAAY,uBAAyB,IACjD,IAAMxF,EAAiB/1hC,GAAU,aAGpCmjiC,GAAa,WACd,CAOA,GALM9M,IACL5qnC,GAAQ03nC,IAActob,GAAgBq8a,GAAeC,EAA0B,GAAX,YAI/DjP,EAAK4W,UAEV,GADA5W,EAAK4W,UAAY,GACZjkb,IAAcs8a,EAClB1rnC,GAAQ,oCAAsC+vnC,EAAW,cACnD,CAgBN,IAbArtoB,EAAQ1re,KAAKk3D,KAAMuuiC,EAAM,aAAcvknC,MAAO,KAC9Cq/nC,GAAW,IAAI13mC,MAAOg9F,cACtB26gC,EAAgB,SAAU76nC,GACzB,IAAI83F,EAAS93F,EAAM3B,MAAO,YAAe+0nC,EAAW5ylC,SAAUxgC,EAAMwjG,UAAW,GAAK,IACjFxjG,EAAM3B,MAAO,WAAcu8nC,EAAWp6lC,SAAUxgC,EAAO,IACzDwgC,SAAUxgC,EAAO,IAClB,OAASI,MAAO03F,GAAS8iiC,EAAW9iiC,CACrC,EACAA,EAAO+iiC,EAAe90oB,EAAO,IAC7B+0oB,EAAUj7nC,KAAKmE,IAAK8zF,EAAM+iiC,EAAe90oB,EAAO,IAAO,KACvDjuZ,EAASm1zB,EAAUpt5B,KAAKmE,IAAK8zF,EAAMm1zB,EAAQ/syB,eAAkBpoB,EAC7DgjiC,EAAY/tO,EAAUlt5B,KAAKkE,IAAK+2nC,EAAS/tO,EAAQ7syB,eAAkB46gC,EACnEhb,EAAK4W,WAAa,oFACV5+hC,GAAQgjiC,EAAShjiC,IACxBgohC,EAAK4W,WAAa,kBAAoB5+hC,EAAO,KAC1CA,IAASs7hC,EAAW,uBAAyB,IAC/C,IAAMt7hC,EAAO,YAEfgohC,EAAK4W,WAAa,YAElBrznC,GAAQy8mC,EAAK4W,UACb5W,EAAK4W,UAAY,IAClB,CAQD,OALArznC,GAAQgX,KAAKk3D,KAAMuuiC,EAAM,cACpBmO,IACJ5qnC,KAAUovsB,GAAgBq8a,GAAeC,EAA0B,GAAX,UAAkBgM,GAE3E13nC,EAAQ,QAET,EAGA8znC,gBAAiB,SAAUrX,EAAM7gnC,EAAQ+7G,GACxC,IAAIljB,EAAOgohC,EAAKoT,cAA4B,MAAXl4gC,EAAiB/7G,EAAS,GAC1D24F,EAAQkohC,EAAKmT,eAA6B,MAAXj4gC,EAAiB/7G,EAAS,GACzD04F,EAAM93F,KAAKkE,IAAK+7mC,EAAKkT,YAAa34mC,KAAK89mC,gBAAiBrgiC,EAAMF,KAAyB,MAAXojB,EAAiB/7G,EAAS,GACtG08C,EAAOthC,KAAK0+mC,gBAAiBjZ,EAAMzlmC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM40E,EAAMF,EAAOD,KAEvFmohC,EAAKkT,YAAcr3kC,EAAKikE,UACxBkggC,EAAKqT,UAAYrT,EAAKmT,cAAgBt3kC,EAAKqkE,WAC3C8//B,EAAKsT,SAAWtT,EAAKoT,aAAev3kC,EAAKukE,cACzB,MAAXlF,GAA6B,MAAXA,GACtB3gG,KAAKi9mC,cAAexX,EAEtB,EAGAiZ,gBAAiB,SAAUjZ,EAAMnkkC,GAChC,IAAIsx2B,EAAU5y4B,KAAK46mC,eAAgBnV,EAAM,OACxC/yN,EAAU1y4B,KAAK46mC,eAAgBnV,EAAM,OACrCxof,EAAY21R,GAAWtx2B,EAAOsx2B,EAAUA,EAAUtx2B,EACnD,OAASox2B,GAAWz1R,EAAUy1R,EAAUA,EAAUz1R,CACnD,EAGAgggB,cAAe,SAAUxX,GACxB,IAAI7myB,EAAW5+T,KAAKk3D,KAAMuuiC,EAAM,qBAC3B7myB,GACJA,EAAS99T,MAAS2kmC,EAAKxjnC,MAAQwjnC,EAAKxjnC,MAAO,GAAM,KAChD,CAAEwjnC,EAAKoT,aAAcpT,EAAKmT,cAAgB,EAAGnT,GAEhD,EAGA0W,mBAAoB,SAAU1W,GAC7B,IAAIyW,EAAYl8mC,KAAKk3D,KAAMuuiC,EAAM,kBACjC,OAAsB,MAAbyW,EAAoB,CAAE,EAAG,GAA6B,iBAAdA,EAAyB,CAAE,EAAGA,GAAcA,CAC9F,EAGAtB,eAAgB,SAAUnV,EAAMkb,GAC/B,OAAO3gnC,KAAK2+mC,eAAgBlZ,EAAMzlmC,KAAKk3D,KAAMuuiC,EAAMkb,EAAS,QAAU,KACvE,EAGA7C,gBAAiB,SAAUrgiC,EAAMF,GAChC,OAAO,GAAKv9E,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM40E,EAAMF,EAAO,KAAOgoB,SACvE,EAGA66gC,oBAAqB,SAAU3iiC,EAAMF,GACpC,OAAO,IAAI10E,KAAM40E,EAAMF,EAAO,GAAI6/C,QACnC,EAGA6i/B,gBAAiB,SAAUxa,EAAM7gnC,EAAQg8nC,EAASC,GACjD,IAAI3E,EAAYl8mC,KAAKm8mC,mBAAoB1W,GACxCnkkC,EAAOthC,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM+3mC,EAC7CC,GAAaj8nC,EAAS,EAAIA,EAASs3nC,EAAW,GAAMA,EAAW,IAAO,IAKvE,OAHKt3nC,EAAS,GACb08C,EAAK67F,QAASn9H,KAAK89mC,gBAAiBx8kC,EAAKukE,cAAevkE,EAAKqkE,aAEvD3lG,KAAKkgnC,WAAYza,EAAMnkkC,EAC/B,EAGA4+kC,WAAY,SAAUza,EAAMnkkC,GAC3B,IAAIw/kC,EAAW5rgB,EACd09R,EAAU5y4B,KAAK46mC,eAAgBnV,EAAM,OACrC/yN,EAAU1y4B,KAAK46mC,eAAgBnV,EAAM,OACrCsb,EAAU,KACVC,EAAU,KACVt1oB,EAAQ1re,KAAKk3D,KAAMuuiC,EAAM,aAc1B,OAbM/5nB,IACJo1oB,EAAYp1oB,EAAMxqf,MAAO,KACzBg0nB,GAAc,IAAIrsmB,MAAOg9F,cACzBk7gC,EAAU56lC,SAAU26lC,EAAW,GAAK,IACpCE,EAAU76lC,SAAU26lC,EAAW,GAAK,IAC/BA,EAAW,GAAI98nC,MAAO,aAC1B+8nC,GAAW7rgB,GAEP4rgB,EAAW,GAAI98nC,MAAO,aAC1Bg9nC,GAAW9rgB,MAIF09R,GAAWtx2B,EAAKmkE,WAAamtyB,EAAQntyB,cAC7CityB,GAAWpx2B,EAAKmkE,WAAaityB,EAAQjtyB,cACrCs7gC,GAAWz/kC,EAAKukE,eAAiBk7gC,MACjCC,GAAW1/kC,EAAKukE,eAAiBm7gC,EACtC,EAGAvF,iBAAkB,SAAUhW,GAC3B,IAAIuP,EAAkBh1mC,KAAKk3D,KAAMuuiC,EAAM,mBAGvC,MAAO,CAAEuP,gBAFTA,EAA+C,iBAApBA,EAA+BA,GACzD,IAAInsmC,MAAOg9F,cAAgB,IAAM1/E,SAAU6ulC,EAAiB,IAE5DxB,cAAexzmC,KAAKk3D,KAAMuuiC,EAAM,iBAAmB8N,SAAUvzmC,KAAKk3D,KAAMuuiC,EAAM,YAC9E6N,gBAAiBtzmC,KAAKk3D,KAAMuuiC,EAAM,mBAAqB4N,WAAYrzmC,KAAKk3D,KAAMuuiC,EAAM,cACtF,EAGAiU,YAAa,SAAUjU,EAAMnohC,EAAKC,EAAOE,GAClCH,IACLmohC,EAAKsX,WAAatX,EAAKkT,YACvBlT,EAAKuX,aAAevX,EAAKmT,cACzBnT,EAAKvwf,YAAcuwf,EAAKoT,cAEzB,IAAIv3kC,EAASg8C,EAAuB,iBAARA,EAAmBA,EAC9Ct9E,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM40E,EAAMF,EAAOD,IACnDt9E,KAAK+9mC,sBAAuB,IAAIl1mC,KAAM48lC,EAAKvwf,YAAauwf,EAAKuX,aAAcvX,EAAKsX,aACjF,OAAO/8mC,KAAKu/iB,WAAYv/iB,KAAKk3D,KAAMuuiC,EAAM,cAAgBnkkC,EAAMthC,KAAKy7mC,iBAAkBhW,GACvF,IAkDD/7gC,EAAE50F,GAAGkhnC,WAAa,SAAUpmnC,GAG3B,IAAMoQ,KAAK5L,OACV,OAAO4L,KAIF0pF,EAAEsshC,WAAWrj/B,cAClBjpC,EAAGjhG,UAAWkiH,GAAI,YAAajhB,EAAEsshC,WAAW6G,qBAC5CnzhC,EAAEsshC,WAAWrj/B,aAAc,GAIuB,IAA9CjpC,EAAG,IAAMA,EAAEsshC,WAAWtD,YAAat+mC,QACvCs1F,EAAG,QAAS6mC,OAAQ7mC,EAAEsshC,WAAWH,OAGlC,IAAIj+P,EAAYtj3B,MAAM8L,UAAUtF,MAAMuF,KAAMlM,UAAW,GACvD,MAAwB,iBAAZvE,GAAsC,eAAZA,GAAwC,YAAZA,GAAqC,WAAZA,EAI1E,WAAZA,GAA6C,IAArBuE,UAAUC,QAA0C,iBAAnBD,UAAW,GACjEu1F,EAAEsshC,WAAY,IAAMpmnC,EAAU,cACpCkR,MAAO4oF,EAAEsshC,WAAY,CAAEh2mC,KAAM,IAAMhS,OAAQ4p3B,IAEtC532B,KAAK4Q,KAAM,WACE,iBAAZhhB,EACN85F,EAAEsshC,WAAY,IAAMpmnC,EAAU,cAC7BkR,MAAO4oF,EAAEsshC,WAAY,CAAEh2mC,MAAOhS,OAAQ4p3B,IACvCluxB,EAAEsshC,WAAWuC,kBAAmBv4mC,KAAMpQ,EACxC,GAZQ85F,EAAEsshC,WAAY,IAAMpmnC,EAAU,cACpCkR,MAAO4oF,EAAEsshC,WAAY,CAAEh2mC,KAAM,IAAMhS,OAAQ4p3B,GAY9C,EAEAluxB,EAAEsshC,WAAa,IAAI3D,EACnB3ohC,EAAEsshC,WAAWrj/B,aAAc,EAC3BjpC,EAAEsshC,WAAW5ra,MAAO,IAAIvhsB,MAAO48F,UAC/B/b,EAAEsshC,WAAWnxiC,QAAU,SAEC6kB,EAAEsshC,WAMjBtshC,EAAE8gT,GAAGv/B,KAAO,cAAc5lV,KAAM/2B,UAAUC,UAAUnG,eAN7D,IAwBI2lnC,GAAe,EACnBrkhC,EAAGjhG,UAAWkiH,GAAI,UAAW,WAC5BojgC,GAAe,CAChB,GAEmBrkhC,EAAEm9Q,OAAQ,WAAY,CACxChiS,QAAS,SACTj1E,QAAS,CACR+yC,OAAQ,0CACRpqC,SAAU,EACVkrC,MAAO,GAERi4e,WAAY,WACX,IAAIplU,EAAOt2M,KAEXA,KAAK1Z,QACHqkH,GAAI,aAAe3qG,KAAKkgmC,WAAY,SAAU/zlC,GAC9C,OAAOmqM,EAAK2q6B,WAAY90mC,EACzB,GACCw+F,GAAI,SAAW3qG,KAAKkgmC,WAAY,SAAU/zlC,GAC1C,IAAK,IAASu9E,EAAE3zF,KAAMoW,EAAMpe,OAAQuoN,EAAK4p5B,WAAa,sBAGrD,OAFAx2gC,EAAEu4K,WAAY91P,EAAMpe,OAAQuoN,EAAK4p5B,WAAa,sBAC9C/zlC,EAAMk3P,4BACC,CAET,GAEDrjQ,KAAKiie,SAAU,CAChB,EAIA05C,cAAe,WACd37gB,KAAK1Z,QAAQ2mI,IAAK,IAAMjtH,KAAKkgmC,YACxBlgmC,KAAKkhnC,oBACTlhnC,KAAKvX,SACHwkI,IAAK,aAAejtH,KAAKkgmC,WAAYlgmC,KAAKkhnC,oBAC1Cj0/B,IAAK,WAAajtH,KAAKkgmC,WAAYlgmC,KAAKmhnC,iBAE5C,EAEAF,WAAY,SAAU90mC,GAGrB,IAAK4hmC,EAAL,CAIA/tmC,KAAKohnC,aAAc,EAGjBphnC,KAAKqhnC,eAAiBrhnC,KAAKshnC,SAAUn1mC,GAEvCnM,KAAKuhnC,gBAAkBp1mC,EAEvB,IAAImqM,EAAOt2M,KACVwhnC,EAA8B,IAAhBr1mC,EAAM8lR,MAIpBwv1B,IAA8C,iBAAxBzhnC,KAAKpQ,QAAQ+yC,SAAuBx2B,EAAMpe,OAAO5F,WACtEuhG,EAAGv9E,EAAMpe,QAAS4/M,QAAS3tM,KAAKpQ,QAAQ+yC,QAASvuC,OACnD,QAAMotnC,IAAaC,GAAezhnC,KAAK67gB,cAAe1vgB,KAItDnM,KAAK0hnC,eAAiB1hnC,KAAKpQ,QAAQ6zC,MAC7BzjC,KAAK0hnC,gBACV1hnC,KAAK2hnC,iBAAmBl6mC,WAAY,WACnC6uM,EAAKor6B,eAAgB,CACtB,EAAG1hnC,KAAKpQ,QAAQ6zC,QAGZzjC,KAAK4hnC,kBAAmBz1mC,IAAWnM,KAAK6hnC,eAAgB11mC,KAC5DnM,KAAKqhnC,eAAgD,IAA9BrhnC,KAAK8hnC,YAAa31mC,IACnCnM,KAAKqhnC,gBACVl1mC,EAAMwgH,iBACC,KAKJ,IAASjjC,EAAE3zF,KAAMoW,EAAMpe,OAAQiS,KAAKkgmC,WAAa,uBACrDx2gC,EAAEu4K,WAAY91P,EAAMpe,OAAQiS,KAAKkgmC,WAAa,sBAI/ClgmC,KAAKkhnC,mBAAqB,SAAU/0mC,GACnC,OAAOmqM,EAAKyr6B,WAAY51mC,EACzB,EACAnM,KAAKmhnC,iBAAmB,SAAUh1mC,GACjC,OAAOmqM,EAAKgr6B,SAAUn1mC,EACvB,EAEAnM,KAAKvX,SACHkiH,GAAI,aAAe3qG,KAAKkgmC,WAAYlgmC,KAAKkhnC,oBACzCv2gC,GAAI,WAAa3qG,KAAKkgmC,WAAYlgmC,KAAKmhnC,kBAEzCh1mC,EAAMwgH,iBAENoh/B,GAAe,EACR,IAvDP,CAwDD,EAEAgU,WAAY,SAAU51mC,GAMrB,GAAKnM,KAAKohnC,YAAc,CAGvB,GAAK13hC,EAAE8gT,GAAGv/B,MAASxiX,SAASuwP,cAAgBvwP,SAASuwP,aAAe,KACjE7sO,EAAM+lR,OACR,OAAOlyR,KAAKshnC,SAAUn1mC,GAGhB,IAAMA,EAAM8lR,MAKlB,GAAK9lR,EAAM2vgB,cAAc12F,QAAUj5a,EAAM2vgB,cAAchqP,SACrD3lR,EAAM2vgB,cAAc/pP,SAAW5lR,EAAM2vgB,cAAc9pP,SACpDhyR,KAAKginC,oBAAqB,OACpB,IAAMhinC,KAAKginC,mBACjB,OAAOhinC,KAAKshnC,SAAUn1mC,EAGzB,CAMA,OAJKA,EAAM8lR,OAAS9lR,EAAM+lR,UACzBlyR,KAAKohnC,aAAc,GAGfphnC,KAAKqhnC,eACTrhnC,KAAKiinC,WAAY91mC,GACVA,EAAMwgH,mBAGT3sH,KAAK4hnC,kBAAmBz1mC,IAAWnM,KAAK6hnC,eAAgB11mC,KAC5DnM,KAAKqhnC,eACkD,IAApDrhnC,KAAK8hnC,YAAa9hnC,KAAKuhnC,gBAAiBp1mC,GACzCnM,KAAKqhnC,cAAgBrhnC,KAAKiinC,WAAY91mC,GAAUnM,KAAKshnC,SAAUn1mC,KAG1DnM,KAAKqhnC,cACd,EAEAC,SAAU,SAAUn1mC,GACnBnM,KAAKvX,SACHwkI,IAAK,aAAejtH,KAAKkgmC,WAAYlgmC,KAAKkhnC,oBAC1Cj0/B,IAAK,WAAajtH,KAAKkgmC,WAAYlgmC,KAAKmhnC,kBAErCnhnC,KAAKqhnC,gBACTrhnC,KAAKqhnC,eAAgB,EAEhBl1mC,EAAMpe,SAAWiS,KAAKuhnC,gBAAgBxznC,QAC1C27F,EAAE3zF,KAAMoW,EAAMpe,OAAQiS,KAAKkgmC,WAAa,sBAAsB,GAG/DlgmC,KAAKkinC,WAAY/1mC,IAGbnM,KAAK2hnC,mBACTh6mC,aAAc3H,KAAK2hnC,yBACZ3hnC,KAAK2hnC,kBAGb3hnC,KAAKginC,oBAAqB,EAC1BjU,GAAe,EACf5hmC,EAAMwgH,gBACP,EAEAi1/B,kBAAmB,SAAUz1mC,GAC5B,OAAS3mB,KAAKmE,IACZnE,KAAKM,IAAKka,KAAKuhnC,gBAAgB17rB,MAAQ15a,EAAM05a,OAC7Crgc,KAAKM,IAAKka,KAAKuhnC,gBAAgBz7rB,MAAQ35a,EAAM25a,SACzC9lb,KAAKpQ,QAAQ2I,QAEpB,EAEAspnC,eAAgB,WACf,OAAO7hnC,KAAK0hnC,aACb,EAGAI,YAAa,WAAyB,EACtCG,WAAY,WAAyB,EACrCC,WAAY,WAAyB,EACrCrmmB,cAAe,WAA0B,OAAO,CAAM,IAO1Cnyb,EAAE8gT,GAAGhyU,OAAS,CAC1BllE,IAAK,SAAUouF,EAAQp8C,EAAQvxC,GAC9B,IAAI1O,EACH6/B,EAAQwkE,EAAE8gT,GAAI9oT,GAASthF,UACxB,IAAM/a,KAAK0O,EACVmxB,EAAMwF,QAASrlC,GAAM6/B,EAAMwF,QAASrlC,IAAO,GAC3C6/B,EAAMwF,QAASrlC,GAAIyO,KAAM,CAAEwxC,EAAQvxC,EAAK1O,IAE1C,EACAgb,KAAM,SAAUhL,EAAU9B,EAAMc,EAAM8tnC,GACrC,IAAI98nC,EACH0O,EAAMsB,EAASq1B,QAASn3B,GAEzB,GAAMQ,IAIAounC,GAAwB9snC,EAAS/O,QAAS,GAAI0B,YACJ,KAA9CqN,EAAS/O,QAAS,GAAI0B,WAAWygH,UAInC,IAAMpjH,EAAI,EAAGA,EAAI0O,EAAIK,OAAQ/O,IACvBgQ,EAASzF,QAASmE,EAAK1O,GAAK,KAChC0O,EAAK1O,GAAK,GAAIyb,MAAOzL,EAAS/O,QAAS+N,EAG1C,GAKcq1F,EAAE8gT,GAAG43uB,SAAW,SAAU97nC,GAInCA,GAA8C,SAAnCA,EAAQ6B,SAASC,eAChCshG,EAAGpjG,GAAU6+D,QAAS,OAExB,EAqBAukC,EAAEm9Q,OAAQ,eAAgBn9Q,EAAE8gT,GAAGwtE,MAAO,CACrCnzY,QAAS,SACTo7hC,kBAAmB,OACnBrwmC,QAAS,CACR+hH,YAAY,EACZgsiB,SAAU,SACVzrpB,MAAM,EACNmwnC,mBAAmB,EACnBC,aAAa,EACbx1iC,OAAQ,OACRy1iC,UAAU,EACVtskC,MAAM,EACNsxL,QAAQ,EACR80a,OAAQ,WACRmme,WAAW,EACX/knC,SAAS,EACTglnC,kBAAkB,EAClB1rkB,QAAQ,EACRmtF,eAAgB,IAChBv7mB,MAAO,UACP/1B,QAAQ,EACR8vnC,kBAAmB,GACnBt6c,YAAa,GACbmc,MAAM,EACNo+b,SAAU,OACVC,cAAe,GACfr8kC,OAAO,EACPy6Y,QAAQ,EAGR61B,KAAM,KACNpqd,MAAO,KACPiZ,KAAM,MAEPu/6B,QAAS,WAEqB,aAAxBjl7B,KAAKpQ,QAAQyspB,QACjBr8oB,KAAK6inC,uBAED7inC,KAAKpQ,QAAQ+hH,YACjB3xG,KAAK0hmC,UAAW,gBAEjB1hmC,KAAK8inC,sBAEL9inC,KAAK07gB,YACN,EAEAwllB,WAAY,SAAU12mC,EAAK7E,GAC1Bqa,KAAKgE,OAAQxZ,EAAK7E,GACL,WAAR6E,IACJwV,KAAK+inC,yBACL/inC,KAAK8inC,sBAEP,EAEA93kC,SAAU,YACFhrC,KAAKq8oB,QAAUr8oB,KAAK1Z,SAAU2+H,GAAI,0BACxCjlH,KAAKgjnC,gBAAiB,GAGvBhjnC,KAAK+inC,yBACL/inC,KAAK27gB,gBACN,EAEAE,cAAe,SAAU1vgB,GACxB,IAAIw3D,EAAI3jE,KAAKpQ,QAGb,QAAKoQ,KAAKq8oB,QAAU14kB,EAAE31B,UACpB07C,EAAGv9E,EAAMpe,QAAS4/M,QAAS,wBAAyBv5M,OAAS,IAK/D4L,KAAKunO,OAASvnO,KAAKijnC,WAAY92mC,IACzBnM,KAAKunO,SAIXvnO,KAAKkjnC,mBAAoB/2mC,GAEzBnM,KAAKmjnC,cAA8B,IAAhBx/iC,EAAE6+iC,UAAqB,SAAW7+iC,EAAE6+iC,WAEhD,IAER,EAEAW,aAAc,SAAUx7/B,GACvB3nH,KAAKojnC,aAAepjnC,KAAKvX,SAASoS,KAAM8sH,GAAW50H,IAAK,WACvD,IAAIo0G,EAASzd,EAAG1pF,MAEhB,OAAO0pF,EAAG,SACRvgG,IAAK,WAAY,YACjBw0pB,SAAUx2iB,EAAO1/G,UACjB84D,WAAY4mD,EAAO5mD,cACnBE,YAAa0mD,EAAO1mD,eACpB77D,OAAQuiH,EAAOviH,UAAY,EAC9B,EACD,EAEAy+nC,eAAgB,WACVrjnC,KAAKojnC,eACTpjnC,KAAKojnC,aAAaxglC,gBACX5iC,KAAKojnC,aAEd,EAEAF,mBAAoB,SAAU/2mC,GAC7B,IAAImta,EAAgB5vV,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,IACjDihG,EAAGv9E,EAAMpe,QAKP4/M,QAAS2rO,GAAgBllb,QAKrCs1F,EAAE8gT,GAAG43uB,SAAU9osB,EAChB,EAEAwosB,YAAa,SAAU31mC,GAEtB,IAAIw3D,EAAI3jE,KAAKpQ,QA+Cb,OA5CAoQ,KAAKq8oB,OAASr8oB,KAAKsjnC,cAAen3mC,GAElCnM,KAAK0hmC,UAAW1hmC,KAAKq8oB,OAAQ,yBAG7Br8oB,KAAKujnC,0BAGA75hC,EAAE8gT,GAAGg5uB,YACT95hC,EAAE8gT,GAAGg5uB,UAAU3tnC,QAAUmK,MAS1BA,KAAKyjnC,gBAGLzjnC,KAAKkomC,YAAclomC,KAAKq8oB,OAAOlzpB,IAAK,YACpC6W,KAAKnS,aAAemS,KAAKq8oB,OAAOxupB,cAAc,GAC9CmS,KAAKjX,aAAeiX,KAAKq8oB,OAAOtzpB,eAChCiX,KAAK0jnC,iBAAmB1jnC,KAAKq8oB,OAAO7ziB,UAAUv3G,OAAQ,WACpD,MAAuC,UAAhCy4F,EAAG1pF,MAAO7W,IAAK,WACvB,GAAIiL,OAAS,EAGd4L,KAAK2jnC,YAAc3jnC,KAAK1Z,QAAQ1B,SAChCob,KAAK4jnC,gBAAiBz3mC,GAGtBnM,KAAK4nd,iBAAmB5nd,KAAKlX,SAAWkX,KAAK6jnC,kBAAmB13mC,GAAO,GACvEnM,KAAK8jnC,cAAgB33mC,EAAM05a,MAC3B7lb,KAAK+jnC,cAAgB53mC,EAAM25a,MAGzBniX,EAAE4+iC,UAAYvinC,KAAKgknC,wBAAyBrgjC,EAAE4+iC,UAGhDvinC,KAAKiknC,mBAGoC,IAApCjknC,KAAKkl7B,SAAU,QAAS/46B,IAC5BnM,KAAKkl1B,UACE,IAIRll1B,KAAKujnC,0BAGA75hC,EAAE8gT,GAAGg5uB,YAAc7/iC,EAAEugjC,eACzBx6hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgBnknC,KAAMmM,GAKtCnM,KAAKiinC,WAAY91mC,GAAO,GAInBu9E,EAAE8gT,GAAGg5uB,WACT95hC,EAAE8gT,GAAGg5uB,UAAUY,UAAWpknC,KAAMmM,IAG1B,EACR,EAEAy3mC,gBAAiB,SAAUz3mC,GAC1BnM,KAAKpb,OAAS,CACboF,IAAKgW,KAAK2jnC,YAAY35nC,IAAMgW,KAAKonD,QAAQp9D,IACzCG,KAAM6V,KAAK2jnC,YAAYx5nC,KAAO6V,KAAKonD,QAAQj9D,KAC3CyI,QAAQ,EACRnL,OAAQuY,KAAKqknC,mBACb/izB,SAAUthU,KAAKsknC,sBAGhBtknC,KAAKpb,OAAOwrI,MAAQ,CACnBjmI,KAAMgiB,EAAM05a,MAAQ7lb,KAAKpb,OAAOuF,KAChCH,IAAKmiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOoF,IAEjC,EAEAi4nC,WAAY,SAAU91mC,EAAOo4mC,GAY5B,GATKvknC,KAAK0jnC,mBACT1jnC,KAAKpb,OAAO6C,OAASuY,KAAKqknC,oBAI3BrknC,KAAKlX,SAAWkX,KAAK6jnC,kBAAmB13mC,GAAO,GAC/CnM,KAAK2jnC,YAAc3jnC,KAAKwknC,mBAAoB,aAGtCD,EAAgB,CACrB,IAAI/5uB,EAAKxqY,KAAKyknC,UACd,IAA4C,IAAvCzknC,KAAKkl7B,SAAU,OAAQ/46B,EAAOq+X,GAElC,OADAxqY,KAAKshnC,SAAU,IAAI53hC,EAAEi1a,MAAO,UAAWxyf,KAChC,EAERnM,KAAKlX,SAAW0hZ,EAAG1hZ,QACpB,CASA,OAPAkX,KAAKq8oB,OAAQ,GAAI3ynB,MAAMv/B,KAAO6V,KAAKlX,SAASqB,KAAO,KACnD6V,KAAKq8oB,OAAQ,GAAI3ynB,MAAM1/B,IAAMgW,KAAKlX,SAASkB,IAAM,KAE5C0/F,EAAE8gT,GAAGg5uB,WACT95hC,EAAE8gT,GAAGg5uB,UAAU3sqB,KAAM72c,KAAMmM,IAGrB,CACR,EAEA+1mC,WAAY,SAAU/1mC,GAGrB,IAAImqM,EAAOt2M,KACV0knC,GAAU,EA+BX,OA9BKh7hC,EAAE8gT,GAAGg5uB,YAAcxjnC,KAAKpQ,QAAQs0nC,gBACpCQ,EAAUh7hC,EAAE8gT,GAAGg5uB,UAAUv5mB,KAAMjqgB,KAAMmM,IAIjCnM,KAAK0knC,UACTA,EAAU1knC,KAAK0knC,QACf1knC,KAAK0knC,SAAU,GAGe,YAAxB1knC,KAAKpQ,QAAQmnjB,SAAyB2tkB,GACjB,UAAxB1knC,KAAKpQ,QAAQmnjB,QAAsB2tkB,IACb,IAAxB1knC,KAAKpQ,QAAQmnjB,QAAqBrtd,EAAE72E,WAAY7S,KAAKpQ,QAAQmnjB,SAC7D/2iB,KAAKpQ,QAAQmnjB,OAAO12iB,KAAML,KAAK1Z,QAASo+nC,GAEzCh7hC,EAAG1pF,KAAKq8oB,QAASr/jB,QAChBh9E,KAAK4nd,iBACLzhc,SAAUnmB,KAAKpQ,QAAQs0oB,eAAgB,IACvC,YACyC,IAAnC5tb,EAAK4uuB,SAAU,OAAQ/46B,IAC3BmqM,EAAK4uoB,QAEP,IAGuC,IAAnCll1B,KAAKkl7B,SAAU,OAAQ/46B,IAC3BnM,KAAKkl1B,UAIA,CACR,EAEAo8R,SAAU,SAAUn1mC,GAiBnB,OAhBAnM,KAAKqjnC,iBAIA35hC,EAAE8gT,GAAGg5uB,WACT95hC,EAAE8gT,GAAGg5uB,UAAUmB,SAAU3knC,KAAMmM,GAI3BnM,KAAK4knC,cAAc3//B,GAAI94G,EAAMpe,SAIjCiS,KAAK1Z,QAAQ6+D,QAAS,SAGhBukC,EAAE8gT,GAAGwtE,MAAM53c,UAAUkhnC,SAASjhnC,KAAML,KAAMmM,EAClD,EAEAw2B,OAAQ,WAQP,OANK3iC,KAAKq8oB,OAAOp3hB,GAAI,0BACpBjlH,KAAKshnC,SAAU,IAAI53hC,EAAEi1a,MAAO,UAAW,CAAE5wgB,OAAQiS,KAAK1Z,QAAS,MAE/D0Z,KAAKkl1B,SAGCll1B,IAER,EAEAijnC,WAAY,SAAU92mC,GACrB,OAAOnM,KAAKpQ,QAAQ23O,UACjB79I,EAAGv9E,EAAMpe,QAAS4/M,QAAS3tM,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQ23O,SAAWnzO,MAE1E,EAEA0unC,oBAAqB,WACpB9inC,KAAK4knC,cAAgB5knC,KAAKpQ,QAAQ23O,OACjCvnO,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQ23O,QAAWvnO,KAAK1Z,QACjD0Z,KAAK0hmC,UAAW1hmC,KAAK4knC,cAAe,sBACrC,EAEA7B,uBAAwB,WACvB/inC,KAAK+gmC,aAAc/gmC,KAAK4knC,cAAe,sBACxC,EAEAtB,cAAe,SAAUn3mC,GAExB,IAAIw3D,EAAI3jE,KAAKpQ,QACZi1nC,EAAmBn7hC,EAAE72E,WAAY8wD,EAAE04kB,QACnCA,EAASwoe,EACRn7hC,EAAG/lB,EAAE04kB,OAAOv7oB,MAAOd,KAAK1Z,QAAS,GAAK,CAAE6lB,KACzB,UAAbw3D,EAAE04kB,OACHr8oB,KAAK1Z,QAAQ2+B,QAAQo9O,WAAY,MACjCriQ,KAAK1Z,QAoBR,OAlBM+1pB,EAAO7ziB,QAAS,QAASp0G,QAC9BiopB,EAAOsB,SAA2B,WAAfh6kB,EAAEg6kB,SACpB39oB,KAAK1Z,QAAS,GAAI0B,WAClB27E,EAAEg6kB,UAMCkne,GAAoBxoe,EAAQ,KAAQr8oB,KAAK1Z,QAAS,IACtD0Z,KAAK6inC,uBAGDxme,EAAQ,KAAQr8oB,KAAK1Z,QAAS,IAChC,mBAAuBpE,KAAMm6pB,EAAOlzpB,IAAK,cAC3CkzpB,EAAOlzpB,IAAK,WAAY,YAGlBkzpB,CAER,EAEAwme,qBAAsB,WACf,aAAiB3goC,KAAM8d,KAAK1Z,QAAQ6C,IAAK,eAC9C6W,KAAK1Z,QAAS,GAAIojC,MAAM5gC,SAAW,WAErC,EAEAk7nC,wBAAyB,SAAU1xmC,GACd,iBAARA,IACXA,EAAMA,EAAIpxB,MAAO,MAEbwoG,EAAE35E,QAASuC,KACfA,EAAM,CAAEnoB,MAAOmoB,EAAK,GAAKtoB,KAAMsoB,EAAK,IAAO,IAEvC,SAAUA,IACdtS,KAAKpb,OAAOwrI,MAAMjmI,KAAOmoB,EAAInoB,KAAO6V,KAAKonD,QAAQj9D,MAE7C,UAAWmoB,IACftS,KAAKpb,OAAOwrI,MAAMjmI,KAAO6V,KAAK8knC,kBAAkBp+nC,MAAQ4rB,EAAIroB,MAAQ+V,KAAKonD,QAAQj9D,MAE7E,QAASmoB,IACbtS,KAAKpb,OAAOwrI,MAAMpmI,IAAMsoB,EAAItoB,IAAMgW,KAAKonD,QAAQp9D,KAE3C,WAAYsoB,IAChBtS,KAAKpb,OAAOwrI,MAAMpmI,IAAMgW,KAAK8knC,kBAAkBl+nC,OAAS0rB,EAAIpoB,OAAS8V,KAAKonD,QAAQp9D,IAEpF,EAEA+6nC,YAAa,SAAUz+nC,GACtB,MAAO,eAAmBpE,KAAMoE,EAAQ0qH,UAAa1qH,IAAY0Z,KAAKvX,SAAU,EACjF,EAEA47nC,iBAAkB,WAGjB,IAAIr3uB,EAAKhtY,KAAKjX,aAAanE,SAC1B6D,EAAWuX,KAAKvX,SAAU,GAmB3B,MAV0B,aAArBuX,KAAKkomC,aAA8BlomC,KAAKnS,aAAc,KAAQpF,GACjEihG,EAAEliG,SAAUwY,KAAKnS,aAAc,GAAKmS,KAAKjX,aAAc,MACxDikZ,EAAG7iZ,MAAQ6V,KAAKnS,aAAad,aAC7BigZ,EAAGhjZ,KAAOgW,KAAKnS,aAAaZ,aAGxB+S,KAAK+knC,YAAa/knC,KAAKjX,aAAc,MACzCikZ,EAAK,CAAEhjZ,IAAK,EAAGG,KAAM,IAGf,CACNH,IAAKgjZ,EAAGhjZ,KAAQm8B,SAAUnmB,KAAKjX,aAAaI,IAAK,kBAAoB,KAAQ,GAC7EgB,KAAM6iZ,EAAG7iZ,MAASg8B,SAAUnmB,KAAKjX,aAAaI,IAAK,mBAAqB,KAAQ,GAGlF,EAEAm7nC,mBAAoB,WACnB,GAA0B,aAArBtknC,KAAKkomC,YACT,MAAO,CAAEl+mC,IAAK,EAAGG,KAAM,GAGxB,IAAIgW,EAAIH,KAAK1Z,QAAQwC,WACpBk8nC,EAAmBhlnC,KAAK+knC,YAAa/knC,KAAKnS,aAAc,IAEzD,MAAO,CACN7D,IAAKmW,EAAEnW,KAAQm8B,SAAUnmB,KAAKq8oB,OAAOlzpB,IAAK,OAAS,KAAQ,IACvD67nC,EAAmD,EAAhChlnC,KAAKnS,aAAaZ,aACzC9C,KAAMgW,EAAEhW,MAASg8B,SAAUnmB,KAAKq8oB,OAAOlzpB,IAAK,QAAU,KAAQ,IAC1D67nC,EAAoD,EAAjChlnC,KAAKnS,aAAad,cAG3C,EAEA02nC,cAAe,WACdzjnC,KAAKonD,QAAU,CACdj9D,KAAQg8B,SAAUnmB,KAAK1Z,QAAQ6C,IAAK,cAAgB,KAAQ,EAC5Da,IAAOm8B,SAAUnmB,KAAK1Z,QAAQ6C,IAAK,aAAe,KAAQ,EAC1Dc,MAASk8B,SAAUnmB,KAAK1Z,QAAQ6C,IAAK,eAAiB,KAAQ,EAC9De,OAAUi8B,SAAUnmB,KAAK1Z,QAAQ6C,IAAK,gBAAkB,KAAQ,EAElE,EAEAo6nC,wBAAyB,WACxBvjnC,KAAK8knC,kBAAoB,CACxBp+nC,MAAOsZ,KAAKq8oB,OAAO97lB,aACnB35D,OAAQoZ,KAAKq8oB,OAAO57lB,cAEtB,EAEAwjkC,gBAAiB,WAEhB,IAAIgB,EAAkBr/nC,EAAGq5J,EACxBt7E,EAAI3jE,KAAKpQ,QACTnH,EAAWuX,KAAKvX,SAAU,GAE3BuX,KAAKklnC,kBAAoB,KAEnBvhjC,EAAE2+iC,YAKe,WAAlB3+iC,EAAE2+iC,YAagB,aAAlB3+iC,EAAE2+iC,YAWF3+iC,EAAE2+iC,YAAY7hnC,cAAgBnM,OAKZ,WAAlBqvE,EAAE2+iC,cACN3+iC,EAAE2+iC,YAActinC,KAAKq8oB,OAAQ,GAAIr0pB,aAIlCi3J,GADAr5J,EAAI8jG,EAAG/lB,EAAE2+iC,cACD,MAMR2C,EAAmB,gBAAgB/ioC,KAAM0D,EAAEuD,IAAK,aAEhD6W,KAAKsinC,YAAc,EAChBn8lC,SAAUvgC,EAAEuD,IAAK,mBAAqB,KAAQ,IAC7Cg9B,SAAUvgC,EAAEuD,IAAK,eAAiB,KAAQ,IAC3Cg9B,SAAUvgC,EAAEuD,IAAK,kBAAoB,KAAQ,IAC5Cg9B,SAAUvgC,EAAEuD,IAAK,cAAgB,KAAQ,IAC1C87nC,EAAmBz/nC,KAAKmE,IAAKs1J,EAAGpwJ,YAAaowJ,EAAGt4J,aAAgBs4J,EAAGt4J,cAClEw/B,SAAUvgC,EAAEuD,IAAK,oBAAsB,KAAQ,IAC/Cg9B,SAAUvgC,EAAEuD,IAAK,gBAAkB,KAAQ,GAC7C6W,KAAK8knC,kBAAkBp+nC,MACvBsZ,KAAKonD,QAAQj9D,KACb6V,KAAKonD,QAAQn9D,OACZg7nC,EAAmBz/nC,KAAKmE,IAAKs1J,EAAGnwJ,aAAcmwJ,EAAGp4J,cAAiBo4J,EAAGp4J,eACpEs/B,SAAUvgC,EAAEuD,IAAK,qBAAuB,KAAQ,IAChDg9B,SAAUvgC,EAAEuD,IAAK,iBAAmB,KAAQ,GAC9C6W,KAAK8knC,kBAAkBl+nC,OACvBoZ,KAAKonD,QAAQp9D,IACbgW,KAAKonD,QAAQl9D,QAEf8V,KAAKklnC,kBAAoBt/nC,IAnCxBoa,KAAKsinC,YAAc3+iC,EAAE2+iC,YAXrBtinC,KAAKsinC,YAAc,CAClB,EACA,EACA54hC,EAAGjhG,GAAW/B,QAAUsZ,KAAK8knC,kBAAkBp+nC,MAAQsZ,KAAKonD,QAAQj9D,MAClEu/F,EAAGjhG,GAAW7B,UAAY6B,EAASiF,KAAK1F,WAAW8G,cACpDkR,KAAK8knC,kBAAkBl+nC,OAASoZ,KAAKonD,QAAQp9D,KAlB/CgW,KAAKsinC,YAAc,CAClB54hC,EAAGviG,QAAS4F,aAAeiT,KAAKpb,OAAO08U,SAASn3U,KAAO6V,KAAKpb,OAAO6C,OAAO0C,KAC1Eu/F,EAAGviG,QAAS8F,YAAc+S,KAAKpb,OAAO08U,SAASt3U,IAAMgW,KAAKpb,OAAO6C,OAAOuC,IACxE0/F,EAAGviG,QAAS4F,aAAe28F,EAAGviG,QAAST,QACtCsZ,KAAK8knC,kBAAkBp+nC,MAAQsZ,KAAKonD,QAAQj9D,KAC7Cu/F,EAAGviG,QAAS8F,aACTy8F,EAAGviG,QAASP,UAAY6B,EAASiF,KAAK1F,WAAW8G,cACnDkR,KAAK8knC,kBAAkBl+nC,OAASoZ,KAAKonD,QAAQp9D,KAZ/CgW,KAAKsinC,YAAc,IAiErB,EAEAkC,mBAAoB,SAAUjhoC,EAAGgvB,GAE1BA,IACLA,EAAMvS,KAAKlX,UAGZ,IAAI61W,EAAY,aAANp7W,EAAmB,GAAK,EACjCyhoC,EAAmBhlnC,KAAK+knC,YAAa/knC,KAAKnS,aAAc,IAEzD,MAAO,CACN7D,IAGCuoB,EAAIvoB,IAGJgW,KAAKpb,OAAO08U,SAASt3U,IAAM20W,EAG3B3+V,KAAKpb,OAAO6C,OAAOuC,IAAM20W,GACA,UAArB3+V,KAAKkomC,aACPlomC,KAAKpb,OAAOgO,OAAO5I,IAClBg7nC,EAAmB,EAAIhlnC,KAAKpb,OAAOgO,OAAO5I,KAAU20W,EAExDx0W,KAGCooB,EAAIpoB,KAGJ6V,KAAKpb,OAAO08U,SAASn3U,KAAOw0W,EAG5B3+V,KAAKpb,OAAO6C,OAAO0C,KAAOw0W,GACD,UAArB3+V,KAAKkomC,aACPlomC,KAAKpb,OAAOgO,OAAOzI,KAClB66nC,EAAmB,EAAIhlnC,KAAKpb,OAAOgO,OAAOzI,MAAWw0W,EAI3D,EAEAklxB,kBAAmB,SAAU13mC,EAAOg5mC,GAEnC,IAAI7C,EAAax1uB,EAAI9iZ,EAAKG,EACzBw5E,EAAI3jE,KAAKpQ,QACTo1nC,EAAmBhlnC,KAAK+knC,YAAa/knC,KAAKnS,aAAc,IACxDg4b,EAAQ15a,EAAM05a,MACdC,EAAQ35a,EAAM25a,MA2Ef,OAxEMk/rB,GAAqBhlnC,KAAKpb,OAAOgO,SACtCoN,KAAKpb,OAAOgO,OAAS,CACpB5I,IAAKgW,KAAKnS,aAAaZ,YACvB9C,KAAM6V,KAAKnS,aAAad,eAUrBo4nC,IACCnlnC,KAAKsinC,cACJtinC,KAAKklnC,mBACTp4uB,EAAK9sY,KAAKklnC,kBAAkBtgoC,SAC5B09nC,EAAc,CACbtinC,KAAKsinC,YAAa,GAAMx1uB,EAAG3iZ,KAC3B6V,KAAKsinC,YAAa,GAAMx1uB,EAAG9iZ,IAC3BgW,KAAKsinC,YAAa,GAAMx1uB,EAAG3iZ,KAC3B6V,KAAKsinC,YAAa,GAAMx1uB,EAAG9iZ,MAG5Bs4nC,EAActinC,KAAKsinC,YAGfn2mC,EAAM05a,MAAQ7lb,KAAKpb,OAAOwrI,MAAMjmI,KAAOm4nC,EAAa,KACxDz8rB,EAAQy8rB,EAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMjmI,MAEzCgiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOwrI,MAAMpmI,IAAMs4nC,EAAa,KACvDx8rB,EAAQw8rB,EAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMpmI,KAEzCmiB,EAAM05a,MAAQ7lb,KAAKpb,OAAOwrI,MAAMjmI,KAAOm4nC,EAAa,KACxDz8rB,EAAQy8rB,EAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMjmI,MAEzCgiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOwrI,MAAMpmI,IAAMs4nC,EAAa,KACvDx8rB,EAAQw8rB,EAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMpmI,MAI1C25E,EAAE1tB,OAINjsD,EAAM25E,EAAE1tB,KAAM,GAAMj2C,KAAK+jnC,cAAgBv+nC,KAAK+F,OAASu6b,EACtD9lb,KAAK+jnC,eAAkBpgjC,EAAE1tB,KAAM,IAAQ0tB,EAAE1tB,KAAM,GAAMj2C,KAAK+jnC,cAC3Dj+rB,EAAQw8rB,EAAkBt4nC,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,KAAOs4nC,EAAa,IACrEt4nC,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,IAAMs4nC,EAAa,GAC1Ct4nC,EACIA,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,KAAOs4nC,EAAa,GAC/Ct4nC,EAAM25E,EAAE1tB,KAAM,GAAMjsD,EAAM25E,EAAE1tB,KAAM,GAAUjsD,EAE/CG,EAAOw5E,EAAE1tB,KAAM,GAAMj2C,KAAK8jnC,cACzBt+nC,KAAK+F,OAASs6b,EAAQ7lb,KAAK8jnC,eAAkBngjC,EAAE1tB,KAAM,IAAQ0tB,EAAE1tB,KAAM,GACrEj2C,KAAK8jnC,cACNj+rB,EAAQy8rB,EAAkBn4nC,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,MAAQm4nC,EAAa,IACvEn4nC,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,KAAOm4nC,EAAa,GAC5Cn4nC,EACIA,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,MAAQm4nC,EAAa,GACjDn4nC,EAAOw5E,EAAE1tB,KAAM,GAAM9rD,EAAOw5E,EAAE1tB,KAAM,GAAU9rD,GAGlC,MAAXw5E,EAAEzxE,OACN2zb,EAAQ7lb,KAAK8jnC,eAGE,MAAXngjC,EAAEzxE,OACN4zb,EAAQ9lb,KAAK+jnC,gBAIR,CACN/5nC,IAGC87b,EAGA9lb,KAAKpb,OAAOwrI,MAAMpmI,IAGlBgW,KAAKpb,OAAO08U,SAASt3U,IAGrBgW,KAAKpb,OAAO6C,OAAOuC,KACI,UAArBgW,KAAKkomC,aACLlomC,KAAKpb,OAAOgO,OAAO5I,IAClBg7nC,EAAmB,EAAIhlnC,KAAKpb,OAAOgO,OAAO5I,KAE9CG,KAGC07b,EAGA7lb,KAAKpb,OAAOwrI,MAAMjmI,KAGlB6V,KAAKpb,OAAO08U,SAASn3U,KAGrB6V,KAAKpb,OAAO6C,OAAO0C,MACI,UAArB6V,KAAKkomC,aACLlomC,KAAKpb,OAAOgO,OAAOzI,KAClB66nC,EAAmB,EAAIhlnC,KAAKpb,OAAOgO,OAAOzI,MAIhD,EAEA+61B,OAAQ,WACPll1B,KAAK+gmC,aAAc/gmC,KAAKq8oB,OAAQ,yBAC3Br8oB,KAAKq8oB,OAAQ,KAAQr8oB,KAAK1Z,QAAS,IAAQ0Z,KAAKolnC,qBACpDplnC,KAAKq8oB,OAAOz5mB,SAEb5iC,KAAKq8oB,OAAS,KACdr8oB,KAAKolnC,qBAAsB,EACtBplnC,KAAKgjnC,gBACThjnC,KAAKjJ,SAEP,EAIAmu7B,SAAU,SAAUl16B,EAAM7D,EAAOq+X,GAShC,OARAA,EAAKA,GAAMxqY,KAAKyknC,UAChB/6hC,EAAE8gT,GAAGhyU,OAAOn4D,KAAML,KAAMgQ,EAAM,CAAE7D,EAAOq+X,EAAIxqY,OAAQ,GAG9C,qBAAqB9d,KAAM8tB,KAC/BhQ,KAAK2jnC,YAAc3jnC,KAAKwknC,mBAAoB,YAC5Ch6uB,EAAG5lZ,OAASob,KAAK2jnC,aAEXj6hC,EAAEq9Q,OAAO3mW,UAAU8k7B,SAAS7k7B,KAAML,KAAMgQ,EAAM7D,EAAOq+X,EAC7D,EAEA9/W,QAAS,CAAC,EAEV+5lC,QAAS,WACR,MAAO,CACNpoe,OAAQr8oB,KAAKq8oB,OACbvzpB,SAAUkX,KAAKlX,SACf8+d,iBAAkB5nd,KAAK4nd,iBACvBhje,OAAQob,KAAK2jnC,YAEf,IAIDj6hC,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,oBAAqB,CAClD7G,MAAO,SAAU0f,EAAOq+X,EAAI/+D,GAC3B,IAAIyvU,EAAaxxjB,EAAEsZ,OAAQ,CAAC,EAAGwnS,EAAI,CAClCx3X,KAAMy4T,EAAUnlV,UAGjBmlV,EAAU45yB,UAAY,GACtB37hC,EAAG+hP,EAAU77U,QAAQyynC,mBAAoBzxmC,KAAM,WAC9C,IAAImroB,EAAWryjB,EAAG1pF,MAAO+7oB,SAAU,YAE9BA,IAAaA,EAASnspB,QAAQo+C,WAClCy9R,EAAU45yB,UAAUvxnC,KAAMiopB,GAK1BA,EAAS0me,mBACT1me,EAASmpS,SAAU,WAAY/46B,EAAO+uoB,GAExC,EACD,EACAx1oB,KAAM,SAAUyG,EAAOq+X,EAAI/+D,GAC1B,IAAIyvU,EAAaxxjB,EAAEsZ,OAAQ,CAAC,EAAGwnS,EAAI,CAClCx3X,KAAMy4T,EAAUnlV,UAGjBmlV,EAAU25yB,qBAAsB,EAEhC17hC,EAAE94E,KAAM66T,EAAU45yB,UAAW,WAC5B,IAAItpe,EAAW/7oB,KAEV+7oB,EAASiuB,QACbjuB,EAASiuB,OAAS,EAGlBv+V,EAAU25yB,qBAAsB,EAChCrpe,EAASqpe,qBAAsB,EAK/Brpe,EAASupe,WAAa,CACrBx8nC,SAAUizpB,EAASp6b,YAAYx4N,IAAK,YACpCa,IAAK+xpB,EAASp6b,YAAYx4N,IAAK,OAC/BgB,KAAM4xpB,EAASp6b,YAAYx4N,IAAK,SAGjC4ypB,EAASmme,WAAY/1mC,GAIrB4voB,EAASnspB,QAAQyspB,OAASN,EAASnspB,QAAQ21nC,UAM3Cxpe,EAASqpe,qBAAsB,EAE/Brpe,EAASmpS,SAAU,aAAc/46B,EAAO+uoB,GAE1C,EACD,EACArkM,KAAM,SAAU1qc,EAAOq+X,EAAI/+D,GAC1B/hP,EAAE94E,KAAM66T,EAAU45yB,UAAW,WAC5B,IAAIG,GAAwB,EAC3Bzpe,EAAW/7oB,KAGZ+7oB,EAAS4ne,YAAcl4yB,EAAUk4yB,YACjC5ne,EAAS+oe,kBAAoBr5yB,EAAUq5yB,kBACvC/oe,EAASn3pB,OAAOwrI,MAAQq7M,EAAU7mV,OAAOwrI,MAEpC2rhB,EAAS0pe,gBAAiB1pe,EAAS2pe,kBACvCF,GAAwB,EAExB97hC,EAAE94E,KAAM66T,EAAU45yB,UAAW,WAa5B,OAVArlnC,KAAK2jnC,YAAcl4yB,EAAUk4yB,YAC7B3jnC,KAAK8knC,kBAAoBr5yB,EAAUq5yB,kBACnC9knC,KAAKpb,OAAOwrI,MAAQq7M,EAAU7mV,OAAOwrI,MAEhCpwH,OAAS+7oB,GACZ/7oB,KAAKylnC,gBAAiBzlnC,KAAK0lnC,iBAC3Bh8hC,EAAEliG,SAAUu0pB,EAASz1pB,QAAS,GAAK0Z,KAAK1Z,QAAS,MAClDk/nC,GAAwB,GAGlBA,CACR,IAGIA,GAIEzpe,EAASiuB,SACdjuB,EAASiuB,OAAS,EAGlBv+V,EAAUwxd,QAAUzyZ,EAAG6xQ,OAAO50pB,SAE9Bs0pB,EAAS63M,YAAcppd,EAAG6xQ,OACxBsB,SAAU5B,EAASz1pB,SACnByP,KAAM,oBAAoB,GAG5BgmpB,EAASnspB,QAAQ21nC,QAAUxpe,EAASnspB,QAAQyspB,OAE5CN,EAASnspB,QAAQyspB,OAAS,WACzB,OAAO7xQ,EAAG6xQ,OAAQ,EACnB,EAIAlwoB,EAAMpe,OAASgupB,EAAS63M,YAAa,GACrC73M,EAASlgI,cAAe1vgB,GAAO,GAC/B4voB,EAAS+le,YAAa31mC,GAAO,GAAM,GAInC4voB,EAASn3pB,OAAOwrI,MAAMpmI,IAAMyhV,EAAU7mV,OAAOwrI,MAAMpmI,IACnD+xpB,EAASn3pB,OAAOwrI,MAAMjmI,KAAOshV,EAAU7mV,OAAOwrI,MAAMjmI,KACpD4xpB,EAASn3pB,OAAO6C,OAAO0C,MAAQshV,EAAU7mV,OAAO6C,OAAO0C,KACtD4xpB,EAASn3pB,OAAO6C,OAAO0C,KACxB4xpB,EAASn3pB,OAAO6C,OAAOuC,KAAOyhV,EAAU7mV,OAAO6C,OAAOuC,IACrD+xpB,EAASn3pB,OAAO6C,OAAOuC,IAExByhV,EAAUy5mB,SAAU,aAAc/46B,GAIlCs/T,EAAUi5yB,QAAU3oe,EAASz1pB,QAI7BojG,EAAE94E,KAAM66T,EAAU45yB,UAAW,WAC5BrlnC,KAAKyinC,kBACN,GAGAh3yB,EAAUmohB,YAAcnohB,EAAUnlV,QAClCy1pB,EAAS4pe,YAAcl6yB,GAGnBswU,EAAS63M,cACb73M,EAASkme,WAAY91mC,GAKrBq+X,EAAG1hZ,SAAWizpB,EAASjzpB,WAOnBizpB,EAASiuB,SAEbjuB,EAASiuB,OAAS,EAClBjuB,EAASqpe,qBAAsB,EAI/Brpe,EAASnspB,QAAQg2nC,QAAU7pe,EAASnspB,QAAQmnjB,OAC5CglG,EAASnspB,QAAQmnjB,QAAS,EAE1BglG,EAASmpS,SAAU,MAAO/46B,EAAO4voB,EAAS0oe,QAAS1oe,IACnDA,EAASmme,WAAY/1mC,GAAO,GAI5B4voB,EAASnspB,QAAQmnjB,OAASglG,EAASnspB,QAAQg2nC,QAC3C7pe,EAASnspB,QAAQyspB,OAASN,EAASnspB,QAAQ21nC,QAEtCxpe,EAASp6b,aACbo6b,EAASp6b,YAAY/+K,SAKtB4nW,EAAG6xQ,OAAOsB,SAAUlyU,EAAUwxd,SAC9Bxxd,EAAUm4yB,gBAAiBz3mC,GAC3Bq+X,EAAG1hZ,SAAW2iV,EAAUo4yB,kBAAmB13mC,GAAO,GAElDs/T,EAAUy5mB,SAAU,eAAgB/46B,GAGpCs/T,EAAUi5yB,SAAU,EAIpBh7hC,EAAE94E,KAAM66T,EAAU45yB,UAAW,WAC5BrlnC,KAAKyinC,kBACN,GAGH,EACD,IAGD/4hC,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,SAAU,CACvC7G,MAAO,SAAU0f,EAAOq+X,EAAIn1Y,GAC3B,IAAIuL,EAAI8oF,EAAG,QACV/lB,EAAItuE,EAASzF,QAETgR,EAAEzX,IAAK,YACXw6E,EAAEkijC,QAAUjlnC,EAAEzX,IAAK,WAEpByX,EAAEzX,IAAK,SAAUw6E,EAAEmJ,OACpB,EACApnE,KAAM,SAAUyG,EAAOq+X,EAAIn1Y,GAC1B,IAAIsuE,EAAItuE,EAASzF,QACZ+zE,EAAEkijC,SACNn8hC,EAAG,QAASvgG,IAAK,SAAUw6E,EAAEkijC,QAE/B,IAGDn8hC,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,UAAW,CACxC7G,MAAO,SAAU0f,EAAOq+X,EAAIn1Y,GAC3B,IAAIuL,EAAI8oF,EAAG8gT,EAAG6xQ,QACb14kB,EAAItuE,EAASzF,QACTgR,EAAEzX,IAAK,aACXw6E,EAAEmijC,SAAWllnC,EAAEzX,IAAK,YAErByX,EAAEzX,IAAK,UAAWw6E,EAAElmE,QACrB,EACAiI,KAAM,SAAUyG,EAAOq+X,EAAIn1Y,GAC1B,IAAIsuE,EAAItuE,EAASzF,QACZ+zE,EAAEmijC,UACNp8hC,EAAG8gT,EAAG6xQ,QAASlzpB,IAAK,UAAWw6E,EAAEmijC,SAEnC,IAGDp8hC,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,SAAU,CACvC7G,MAAO,SAAU0f,EAAOq+X,EAAInlZ,GACrBA,EAAE0goC,wBACP1goC,EAAE0goC,sBAAwB1goC,EAAEg3pB,OAAOxupB,cAAc,IAG7CxI,EAAE0goC,sBAAuB,KAAQ1goC,EAAEoD,SAAU,IACP,SAAzCpD,EAAE0goC,sBAAuB,GAAI/0gC,UAC9B3rH,EAAE2goC,eAAiB3goC,EAAE0goC,sBAAsBnhoC,SAE7C,EACAiyd,KAAM,SAAU1qc,EAAOq+X,EAAInlZ,GAE1B,IAAIs+E,EAAIt+E,EAAEuK,QACTkkrB,GAAW,EACXjmrB,EAAexI,EAAE0goC,sBAAuB,GACxCt9nC,EAAWpD,EAAEoD,SAAU,GAEnBoF,IAAiBpF,GAAqC,SAAzBoF,EAAamjH,SACxCrtC,EAAEzxE,MAAmB,MAAXyxE,EAAEzxE,OACV7M,EAAE2goC,eAAeh8nC,IAAM6D,EAAahH,aAAiBslB,EAAM25a,MAChEniX,EAAE++iC,kBACH70nC,EAAaZ,UAAY6mrB,EAAWjmrB,EAAaZ,UAAY02E,EAAEykmB,YACpDj8pB,EAAM25a,MAAQzgc,EAAE2goC,eAAeh8nC,IAAM25E,EAAE++iC,oBAClD70nC,EAAaZ,UAAY6mrB,EAAWjmrB,EAAaZ,UAAY02E,EAAEykmB,cAI3DzkmB,EAAEzxE,MAAmB,MAAXyxE,EAAEzxE,OACV7M,EAAE2goC,eAAe77nC,KAAO0D,EAAalH,YAAgBwlB,EAAM05a,MAChEliX,EAAE++iC,kBACH70nC,EAAad,WAAa+mrB,EAAWjmrB,EAAad,WAAa42E,EAAEykmB,YACtDj8pB,EAAM05a,MAAQxgc,EAAE2goC,eAAe77nC,KAAOw5E,EAAE++iC,oBACnD70nC,EAAad,WAAa+mrB,EAAWjmrB,EAAad,WAAa42E,EAAEykmB,gBAM7DzkmB,EAAEzxE,MAAmB,MAAXyxE,EAAEzxE,OACZia,EAAM25a,MAAQp8V,EAAGjhG,GAAWwE,YAAc02E,EAAE++iC,kBAChD5uc,EAAWpqlB,EAAGjhG,GAAWwE,UAAWy8F,EAAGjhG,GAAWwE,YAAc02E,EAAEykmB,aACvD1+kB,EAAGviG,QAASP,UAAaulB,EAAM25a,MAAQp8V,EAAGjhG,GAAWwE,aAC/D02E,EAAE++iC,oBACH5uc,EAAWpqlB,EAAGjhG,GAAWwE,UAAWy8F,EAAGjhG,GAAWwE,YAAc02E,EAAEykmB,eAI9DzkmB,EAAEzxE,MAAmB,MAAXyxE,EAAEzxE,OACZia,EAAM05a,MAAQn8V,EAAGjhG,GAAWsE,aAAe42E,EAAE++iC,kBACjD5uc,EAAWpqlB,EAAGjhG,GAAWsE,WACxB28F,EAAGjhG,GAAWsE,aAAe42E,EAAEykmB,aAErB1+kB,EAAGviG,QAAST,SAAYylB,EAAM05a,MAAQn8V,EAAGjhG,GAAWsE,cAC9D42E,EAAE++iC,oBACH5uc,EAAWpqlB,EAAGjhG,GAAWsE,WACxB28F,EAAGjhG,GAAWsE,aAAe42E,EAAEykmB,iBAOjB,IAAb0L,GAAsBpqlB,EAAE8gT,GAAGg5uB,YAAc7/iC,EAAEugjC,eAC/Cx6hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgB9+nC,EAAG8mB,EAGpC,IAGDu9E,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,OAAQ,CACrC7G,MAAO,SAAU0f,EAAOq+X,EAAInlZ,GAE3B,IAAIs+E,EAAIt+E,EAAEuK,QAEVvK,EAAE4goC,aAAe,GAEjBv8hC,EAAG/lB,EAAE4gnB,KAAK9jrB,cAAgBF,OAAWojE,EAAE4gnB,KAAKrwpB,OAAS,sBAA0ByvC,EAAE4gnB,MAC/E3zqB,KAAM,WACN,IAAI4zX,EAAK96S,EAAG1pF,MACXkmnC,EAAK1hvB,EAAG5/Y,SACJob,OAAS3a,EAAEiB,QAAS,IACxBjB,EAAE4goC,aAAanynC,KAAM,CACpBkf,KAAMhT,KACNtZ,MAAO89Y,EAAGjkV,aAAc35D,OAAQ49Y,EAAG/jV,cACnCz2D,IAAKk8nC,EAAGl8nC,IAAKG,KAAM+7nC,EAAG/7nC,MAGzB,EAEF,EACA0sd,KAAM,SAAU1qc,EAAOq+X,EAAIi7tB,GAE1B,IAAIxkwB,EAAIpkN,EAAI6xlB,EAAInxkB,EAAI/kJ,EAAGuB,EAAGnZ,EAAG/G,EAAGxU,EAAGmpE,EAClCmV,EAAI8hiC,EAAK71mC,QACTrM,EAAIogF,EAAEi/iC,cACNzvjC,EAAKq3U,EAAG5lZ,OAAOuF,KAAMkpE,EAAKF,EAAKsyiC,EAAKqf,kBAAkBp+nC,MACtD0sE,EAAKo3U,EAAG5lZ,OAAOoF,IAAKspE,EAAKF,EAAKqyiC,EAAKqf,kBAAkBl+nC,OAEtD,IAAMvB,EAAIognC,EAAKwgB,aAAa7xnC,OAAS,EAAG/O,GAAK,EAAGA,IAG/C00B,GADAvB,EAAIitlC,EAAKwgB,aAAc5goC,GAAI8E,KAAOs7mC,EAAKr+iC,QAAQj9D,MACvCs7mC,EAAKwgB,aAAc5goC,GAAIqB,MAE/BmT,GADA+G,EAAI6kmC,EAAKwgB,aAAc5goC,GAAI2E,IAAMy7mC,EAAKr+iC,QAAQp9D,KACtCy7mC,EAAKwgB,aAAc5goC,GAAIuB,OAE1BysE,EAAK76C,EAAIj1B,GAAK4vE,EAAKp5C,EAAIx2B,GAAK+vE,EAAK1yD,EAAIrd,GAAK6vE,EAAKv5D,EAAItW,IACrDmmG,EAAEliG,SAAUi+mC,EAAKwgB,aAAc5goC,GAAI2tB,KAAK/rB,cACzCw+mC,EAAKwgB,aAAc5goC,GAAI2tB,OACnByylC,EAAKwgB,aAAc5goC,GAAI8goC,UACzB1gB,EAAK71mC,QAAQ20rB,KAAK5vT,SACnB8wuB,EAAK71mC,QAAQ20rB,KAAK5vT,QAAQt0X,KACzBolmC,EAAKn/mC,QACL6lB,EACAu9E,EAAEsZ,OAAQyigC,EAAKgf,UAAW,CAAE2B,SAAU3gB,EAAKwgB,aAAc5goC,GAAI2tB,QAGhEyylC,EAAKwgB,aAAc5goC,GAAI8goC,UAAW,IAIf,UAAfxijC,EAAEg/iC,WACN1hxB,EAAKz7W,KAAKM,IAAK8a,EAAI0yD,IAAQ/vE,EAC3Bs5J,EAAKr3J,KAAKM,IAAK+T,EAAIu5D,IAAQ7vE,EAC3BmrvB,EAAKlpvB,KAAKM,IAAK0yB,EAAI66C,IAAQ9vE,EAC3Bg6K,EAAK/3K,KAAKM,IAAKi0B,EAAIo5C,IAAQ5vE,EACtB09W,IACJupC,EAAG1hZ,SAASkB,IAAMy7mC,EAAK+e,mBAAoB,WAAY,CACtDx6nC,IAAK4W,EAAI6kmC,EAAKqf,kBAAkBl+nC,OAChCuD,KAAM,IACHH,KAEA6yJ,IACJ2tP,EAAG1hZ,SAASkB,IAAMy7mC,EAAK+e,mBAAoB,WAAY,CACtDx6nC,IAAK6P,EACL1P,KAAM,IACHH,KAEA0kvB,IACJlkW,EAAG1hZ,SAASqB,KAAOs7mC,EAAK+e,mBAAoB,WAAY,CACvDx6nC,IAAK,EACLG,KAAMquB,EAAIitlC,EAAKqf,kBAAkBp+nC,QAC9ByD,MAEAozK,IACJitO,EAAG1hZ,SAASqB,KAAOs7mC,EAAK+e,mBAAoB,WAAY,CACvDx6nC,IAAK,EACLG,KAAM4vB,IACH5vB,OAINqkE,EAAUyyS,GAAMpkN,GAAM6xlB,GAAMnxkB,EAER,UAAf55F,EAAEg/iC,WACN1hxB,EAAKz7W,KAAKM,IAAK8a,EAAIwyD,IAAQ7vE,EAC3Bs5J,EAAKr3J,KAAKM,IAAK+T,EAAIy5D,IAAQ/vE,EAC3BmrvB,EAAKlpvB,KAAKM,IAAK0yB,EAAI26C,IAAQ5vE,EAC3Bg6K,EAAK/3K,KAAKM,IAAKi0B,EAAIs5C,IAAQ9vE,EACtB09W,IACJupC,EAAG1hZ,SAASkB,IAAMy7mC,EAAK+e,mBAAoB,WAAY,CACtDx6nC,IAAK4W,EACLzW,KAAM,IACHH,KAEA6yJ,IACJ2tP,EAAG1hZ,SAASkB,IAAMy7mC,EAAK+e,mBAAoB,WAAY,CACtDx6nC,IAAK6P,EAAI4rmC,EAAKqf,kBAAkBl+nC,OAChCuD,KAAM,IACHH,KAEA0kvB,IACJlkW,EAAG1hZ,SAASqB,KAAOs7mC,EAAK+e,mBAAoB,WAAY,CACvDx6nC,IAAK,EACLG,KAAMquB,IACHruB,MAEAozK,IACJitO,EAAG1hZ,SAASqB,KAAOs7mC,EAAK+e,mBAAoB,WAAY,CACvDx6nC,IAAK,EACLG,KAAM4vB,EAAI0rlC,EAAKqf,kBAAkBp+nC,QAC9ByD,QAIAs7mC,EAAKwgB,aAAc5goC,GAAI8goC,WAAcllxB,GAAMpkN,GAAM6xlB,GAAMnxkB,GAAM/uG,IAChEi3iC,EAAK71mC,QAAQ20rB,KAAKA,MACnBkhb,EAAK71mC,QAAQ20rB,KAAKA,KAAKlkrB,KACtBolmC,EAAKn/mC,QACL6lB,EACAu9E,EAAEsZ,OAAQyigC,EAAKgf,UAAW,CACzB2B,SAAU3gB,EAAKwgB,aAAc5goC,GAAI2tB,QAGrCyylC,EAAKwgB,aAAc5goC,GAAI8goC,SAAallxB,GAAMpkN,GAAM6xlB,GAAMnxkB,GAAM/uG,EAI9D,IAGDk7B,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,QAAS,CACtC7G,MAAO,SAAU0f,EAAOq+X,EAAIn1Y,GAC3B,IAAI3L,EACHi6E,EAAItuE,EAASzF,QACbma,EAAQ2/E,EAAE883B,UAAW983B,EAAG/lB,EAAEp9B,QAAUnzC,KAAM,SAAUwG,EAAGC,GACtD,OAASssB,SAAUujE,EAAG9vF,GAAIzQ,IAAK,UAAY,KAAQ,IAChDg9B,SAAUujE,EAAG7vF,GAAI1Q,IAAK,UAAY,KAAQ,EAC9C,GAEK4gB,EAAM3V,SAEZ1K,EAAMy8B,SAAUujE,EAAG3/E,EAAO,IAAM5gB,IAAK,UAAY,KAAQ,EACzDugG,EAAG3/E,GAAQ6G,KAAM,SAAUvrB,GAC1BqkG,EAAG1pF,MAAO7W,IAAK,SAAUO,EAAMrE,EAChC,GACA2a,KAAK7W,IAAK,SAAYO,EAAMqgB,EAAM3V,QACnC,IAGDs1F,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,SAAU,CACvC7G,MAAO,SAAU0f,EAAOq+X,EAAIn1Y,GAC3B,IAAIuL,EAAI8oF,EAAG8gT,EAAG6xQ,QACb14kB,EAAItuE,EAASzF,QAETgR,EAAEzX,IAAK,YACXw6E,EAAE8vwB,QAAU7y0B,EAAEzX,IAAK,WAEpByX,EAAEzX,IAAK,SAAUw6E,EAAEq9W,OACpB,EACAt7a,KAAM,SAAUyG,EAAOq+X,EAAIn1Y,GAC1B,IAAIsuE,EAAItuE,EAASzF,QAEZ+zE,EAAE8vwB,SACN/pvB,EAAG8gT,EAAG6xQ,QAASlzpB,IAAK,SAAUw6E,EAAE8vwB,QAElC,IAGsB/pvB,EAAE8gT,GAAG/+D,UAuB5B/hP,EAAEm9Q,OAAQ,eAAgBn9Q,EAAE8gT,GAAGwtE,MAAO,CACrCnzY,QAAS,SACTo7hC,kBAAmB,SACnBrwmC,QAAS,CACRy2nC,YAAY,EACZrpiC,SAAS,EACTspiC,gBAAiB,OACjBC,cAAe,QACf7skC,aAAa,EACb8skC,UAAU,EACVn5gC,QAAS,CACR,kBAAmB,yCAEpBi1gC,aAAa,EACbmE,OAAO,EACPxwkC,MAAM,EACNywkC,QAAS,SACTrqe,QAAQ,EACR9jmB,UAAW,KACX3nB,SAAU,KACV+39B,UAAW,GACX7yb,SAAU,GAGV90I,OAAQ,GAGR/ob,OAAQ,KACRxL,MAAO,KACPiZ,KAAM,MAGPihnC,KAAM,SAAUhhoC,GACf,OAAOgrB,WAAYhrB,IAAW,CAC/B,EAEA6la,UAAW,SAAU7la,GACpB,OAAQI,MAAO4qB,WAAYhrB,GAC5B,EAEA0pnC,WAAY,SAAU9xkC,EAAI3jC,GAEzB,GAAmC,WAA9B8vF,EAAGnsD,GAAKp0C,IAAK,YACjB,OAAO,EAGR,IAAIyJ,EAAWgH,GAAW,SAANA,EAAiB,aAAe,YACnDjG,GAAM,EAEP,OAAK4pC,EAAI3qC,GAAW,IAOpB2qC,EAAI3qC,GAAW,EACfe,EAAQ4pC,EAAI3qC,GAAW,EACvB2qC,EAAI3qC,GAAW,EACRe,EACR,EAEAsx7B,QAAS,WAER,IAAI793B,EACHuc,EAAI3jE,KAAKpQ,QACT0mN,EAAOt2M,KACRA,KAAK0hmC,UAAW,gBAEhBh4gC,EAAEsZ,OAAQhjG,KAAM,CACfi9D,eAAkB0G,EAAc,YAChCjqB,YAAaiqB,EAAEjqB,YACfktkC,gBAAiB5mnC,KAAK1Z,QACtBugoC,8BAA+B,GAC/BtB,QAAS5hjC,EAAE04kB,QAAU14kB,EAAE8ijC,OAAS9ijC,EAAEqZ,QAAUrZ,EAAE04kB,QAAU,sBAAwB,OAI5Er8oB,KAAK1Z,QAAS,GAAI6B,SAASnE,MAAO,kDAEtCgc,KAAK1Z,QAAQg8D,KACZonC,EAAG,4DAA6DvgG,IAAK,CACpEL,SAAUkX,KAAK1Z,QAAQ6C,IAAK,YAC5BzC,MAAOsZ,KAAK1Z,QAAQi6D,aACpB35D,OAAQoZ,KAAK1Z,QAAQm6D,cACrBz2D,IAAKgW,KAAK1Z,QAAQ6C,IAAK,OACvBgB,KAAM6V,KAAK1Z,QAAQ6C,IAAK,WAI1B6W,KAAK1Z,QAAU0Z,KAAK1Z,QAAQmB,SAASsO,KACpC,eAAgBiK,KAAK1Z,QAAQwgoC,UAAW,aAGzC9mnC,KAAK+mnC,kBAAmB,EAExB3/jC,EAAU,CACT4wK,UAAWh4N,KAAK4mnC,gBAAgBz9nC,IAAK,aACrC8uO,YAAaj4N,KAAK4mnC,gBAAgBz9nC,IAAK,eACvC+uO,aAAcl4N,KAAK4mnC,gBAAgBz9nC,IAAK,gBACxCgvO,WAAYn4N,KAAK4mnC,gBAAgBz9nC,IAAK,eAGvC6W,KAAK1Z,QAAQ6C,IAAKi+D,GAClBpnD,KAAK4mnC,gBAAgBz9nC,IAAK,SAAU,GAIpC6W,KAAKgnnC,oBAAsBhnnC,KAAK4mnC,gBAAgBz9nC,IAAK,UACrD6W,KAAK4mnC,gBAAgBz9nC,IAAK,SAAU,QAEpC6W,KAAK6mnC,8BAA8B/ynC,KAAMkM,KAAK4mnC,gBAAgBz9nC,IAAK,CAClEL,SAAU,SACVyrL,KAAM,EACN/3H,QAAS,WAKVx8C,KAAK4mnC,gBAAgBz9nC,IAAKi+D,GAE1BpnD,KAAKinnC,yBAGNjnnC,KAAKknnC,gBAEAvjjC,EAAE6ijC,UACN98hC,EAAG1pF,KAAK1Z,SACNqkH,GAAI,aAAc,WACbhnC,EAAE31B,WAGPsoK,EAAKyq5B,aAAc,yBACnBzq5B,EAAK6w6B,SAASvilC,OACf,GACC+lE,GAAI,aAAc,WACbhnC,EAAE31B,UAGDsoK,EAAKmgT,WACVngT,EAAKor5B,UAAW,yBAChBpr5B,EAAK6w6B,SAASpilC,OAEhB,GAGF/kC,KAAK07gB,YACN,EAEA1we,SAAU,WAEThrC,KAAK27gB,gBAEL,IAAIh5T,EACH33K,EAAW,SAAU2uC,GACpB+P,EAAG/P,GACDsoL,WAAY,aACZA,WAAY,gBACZh1I,IAAK,cACLpyH,KAAM,wBACL+nC,QACJ,EAmBD,OAhBK5iC,KAAK+mnC,mBACT/7kC,EAAUhrC,KAAK1Z,SACfq8N,EAAU3iN,KAAK1Z,QACf0Z,KAAK4mnC,gBAAgBz9nC,IAAK,CACzBL,SAAU65N,EAAQx5N,IAAK,YACvBzC,MAAOi8N,EAAQpiK,aACf35D,OAAQ+7N,EAAQliK,cAChBz2D,IAAK24N,EAAQx5N,IAAK,OAClBgB,KAAMw4N,EAAQx5N,IAAK,UAChBsu+B,YAAa90wB,GACjBA,EAAQ//K,UAGT5iC,KAAK4mnC,gBAAgBz9nC,IAAK,SAAU6W,KAAKgnnC,qBACzCh8kC,EAAUhrC,KAAK4mnC,iBAER5mnC,IACR,EAEAkhmC,WAAY,SAAU12mC,EAAK7E,GAC1Bqa,KAAKgE,OAAQxZ,EAAK7E,GAGb,YADI6E,IAERwV,KAAKonnC,iBACLpnnC,KAAKknnC,gBAKP,EAEAA,cAAe,WACd,IAAsB3/4B,EAAQliP,EAAGwb,EAAGwmnC,EAAOn1nC,EAAvCyxE,EAAI3jE,KAAKpQ,QAAoC0mN,EAAOt2M,KAexD,GAdAA,KAAK0mnC,QAAU/ijC,EAAE+ijC,UACbh9hC,EAAG,uBAAwB1pF,KAAK1Z,SAAU8N,OACjC,CACVyM,EAAG,kBACH7b,EAAG,kBACH/B,EAAG,kBACH22B,EAAG,kBACHy4T,GAAI,mBACJC,GAAI,mBACJC,GAAI,mBACJlsC,GAAI,oBARL,UAWFrmS,KAAKmnnC,SAAWz9hC,IACX1pF,KAAK0mnC,QAAQjmnC,cAAgBF,OASjC,IAPsB,QAAjBP,KAAK0mnC,UACT1mnC,KAAK0mnC,QAAU,uBAGhB7lnC,EAAIb,KAAK0mnC,QAAQxloC,MAAO,KACxB8e,KAAK0mnC,QAAU,CAAC,EAEVrhoC,EAAI,EAAGA,EAAIwb,EAAEzM,OAAQ/O,IAG1BgioC,EAAQ,iBADR9/4B,EAAS79I,EAAE1rF,KAAM6C,EAAGxb,KAEpB6M,EAAOw3F,EAAG,SACV1pF,KAAK0hmC,UAAWxvmC,EAAM,uBAAyBm1nC,GAE/Cn1nC,EAAK/I,IAAK,CAAE63b,OAAQr9W,EAAEq9W,SAEtBhhb,KAAK0mnC,QAASn/4B,GAAW,iBAAmBA,EAC5CvnO,KAAK1Z,QAAQiqI,OAAQr+H,GAKvB8N,KAAKsnnC,YAAc,SAAUv5nC,GAE5B,IAAI1I,EAAG6M,EAAMq1nC,EAAQC,EAIrB,IAAMnioC,KAFN0I,EAASA,GAAUiS,KAAK1Z,QAEb0Z,KAAK0mnC,QAEV1mnC,KAAK0mnC,QAASrhoC,GAAIob,cAAgBF,OACtCP,KAAK0mnC,QAASrhoC,GAAM2a,KAAK1Z,QAAQkxH,SAAUx3G,KAAK0mnC,QAASrhoC,IAAMmpE,QAAQ5pB,QAC5D5kC,KAAK0mnC,QAASrhoC,GAAIsoH,QAAU3tG,KAAK0mnC,QAASrhoC,GAAIojH,YACzDzoG,KAAK0mnC,QAASrhoC,GAAMqkG,EAAG1pF,KAAK0mnC,QAASrhoC,IACrC2a,KAAKgszB,IAAKhszB,KAAK0mnC,QAASrhoC,GAAK,CAAE,UAAaixN,EAAK2q6B,cAG7CjhnC,KAAK+mnC,kBACR/mnC,KAAK4mnC,gBAAiB,GACpBz+nC,SACAnE,MAAO,uCACVkO,EAAOw3F,EAAG1pF,KAAK0mnC,QAASrhoC,GAAK2a,KAAK1Z,SAElCkhoC,EAAa,kBAAkBtloC,KAAMmD,GACpC6M,EAAKuuD,cACLvuD,EAAKquD,aAENgnkC,EAAS,CAAE,UACV,UAAUrloC,KAAMmD,GAAM,MACtB,UAAUnD,KAAMmD,GAAM,SACtB,MAAMnD,KAAMmD,GAAM,QAAU,QAAS6Y,KAAM,IAE5CnQ,EAAO5E,IAAKo+nC,EAAQC,GAEpBxnnC,KAAKinnC,yBAGNjnnC,KAAKmnnC,SAAWnnnC,KAAKmnnC,SAAS7znC,IAAK0M,KAAK0mnC,QAASrhoC,GAEnD,EAGA2a,KAAKsnnC,YAAatnnC,KAAK1Z,SAEvB0Z,KAAKmnnC,SAAWnnnC,KAAKmnnC,SAAS7znC,IAAK0M,KAAK1Z,QAAQuU,KAAM,yBACtDmF,KAAKmnnC,SAASziB,mBAEd1kmC,KAAKmnnC,SAASx8gC,GAAI,YAAa,WACxB2rG,EAAKmgT,WACLz2f,KAAK8pG,YACT53G,EAAO8N,KAAK8pG,UAAU9lH,MAAO,wCAE9BsyN,EAAKpkN,KAAOA,GAAQA,EAAM,GAAMA,EAAM,GAAM,KAE9C,GAEKyxE,EAAE6ijC,WACNxmnC,KAAKmnnC,SAASpilC,OACd/kC,KAAK0hmC,UAAW,yBAElB,EAEA0lB,eAAgB,WACfpnnC,KAAKmnnC,SAASvklC,QACf,EAEAi5e,cAAe,SAAU1vgB,GACxB,IAAI9mB,EAAGkiP,EACNxzH,GAAU,EAEX,IAAM1uH,KAAK2a,KAAK0mnC,UACfn/4B,EAAS79I,EAAG1pF,KAAK0mnC,QAASrhoC,IAAO,MACjB8mB,EAAMpe,QAAU27F,EAAEliG,SAAU+/O,EAAQp7N,EAAMpe,WACzDgmH,GAAU,GAIZ,OAAQ/zG,KAAKpQ,QAAQo+C,UAAY+lE,CAClC,EAEA+tgC,YAAa,SAAU31mC,GAEtB,IAAIs7mC,EAASC,EAAQ56iC,EACpBnJ,EAAI3jE,KAAKpQ,QACT2tC,EAAKv9B,KAAK1Z,QAkDX,OAhDA0Z,KAAKy2f,UAAW,EAEhBz2f,KAAK2nnC,eAELF,EAAUznnC,KAAK2mnC,KAAM3mnC,KAAKq8oB,OAAOlzpB,IAAK,SACtCu+nC,EAAS1nnC,KAAK2mnC,KAAM3mnC,KAAKq8oB,OAAOlzpB,IAAK,QAEhCw6E,EAAE2+iC,cACNmF,GAAW/9hC,EAAG/lB,EAAE2+iC,aAAcv1nC,cAAgB,EAC9C26nC,GAAUh+hC,EAAG/lB,EAAE2+iC,aAAcr1nC,aAAe,GAG7C+S,KAAKpb,OAASob,KAAKq8oB,OAAOz3pB,SAC1Bob,KAAKlX,SAAW,CAAEqB,KAAMs9nC,EAASz9nC,IAAK09nC,GAEtC1nnC,KAAK+S,KAAO/S,KAAKulnC,QAAU,CACzB7+nC,MAAOsZ,KAAKq8oB,OAAO31pB,QACnBE,OAAQoZ,KAAKq8oB,OAAOz1pB,UACjB,CACHF,MAAO62C,EAAG72C,QACVE,OAAQ22C,EAAG32C,UAGboZ,KAAKgva,aAAehva,KAAKulnC,QAAU,CACjC7+nC,MAAO62C,EAAGgjB,aACV35D,OAAQ22C,EAAGkjB,eACR,CACH/5D,MAAO62C,EAAG72C,QACVE,OAAQ22C,EAAG32C,UAGboZ,KAAKmud,SAAW,CACfzne,MAAO62C,EAAGgjB,aAAehjB,EAAG72C,QAC5BE,OAAQ22C,EAAGkjB,cAAgBljB,EAAG32C,UAG/BoZ,KAAK4nd,iBAAmB,CAAEz9d,KAAMs9nC,EAASz9nC,IAAK09nC,GAC9C1nnC,KAAK4nnC,sBAAwB,CAAEz9nC,KAAMgiB,EAAM05a,MAAO77b,IAAKmiB,EAAM25a,OAE7D9lb,KAAK05C,YAAyC,iBAAlBiqB,EAAEjqB,YAC7BiqB,EAAEjqB,YACE15C,KAAKgva,aAAatob,MAAQsZ,KAAKgva,aAAapob,QAAY,EAE7DkmF,EAAS4c,EAAG,iBAAmB1pF,KAAK9N,MAAO/I,IAAK,UAChDugG,EAAG,QAASvgG,IAAK,SAAqB,SAAX2jF,EAAoB9sE,KAAK9N,KAAO,UAAY46E,GAEvE9sE,KAAK0hmC,UAAW,yBAChB1hmC,KAAK6nnC,WAAY,QAAS17mC,IACnB,CACR,EAEA81mC,WAAY,SAAU91mC,GAErB,IAAIpW,EAAMq8B,EACT01lC,EAAM9nnC,KAAK4nnC,sBACXhunC,EAAIoG,KAAK9N,KACT0uM,EAAOz0L,EAAM05a,MAAQiisB,EAAI39nC,MAAU,EACnC02M,EAAO10L,EAAM25a,MAAQgisB,EAAI99nC,KAAS,EAClCm7D,EAAUnlD,KAAK0ja,QAAS9pa,GAIzB,OAFAoG,KAAK+nnC,0BAEC5ikC,IAINpvD,EAAOovD,EAAQrkD,MAAOd,KAAM,CAAEmM,EAAOy0L,EAAIC,IAEzC7gM,KAAKgonC,yBAA0B77mC,EAAM6lR,WAChChyR,KAAKi9D,cAAgB9wD,EAAM6lR,YAC/Bj8R,EAAOiK,KAAKionC,aAAclynC,EAAMoW,IAGjCpW,EAAOiK,KAAKkonC,aAAcnynC,EAAMoW,GAEhCnM,KAAKmonC,aAAcpynC,GAEnBiK,KAAK6nnC,WAAY,SAAU17mC,GAE3BimB,EAAQpyB,KAAKoonC,iBAEPponC,KAAKulnC,SAAWvlnC,KAAK6mnC,8BAA8BzynC,QACxD4L,KAAKinnC,wBAGAv9hC,EAAE483B,cAAel07B,KACtBpyB,KAAK+nnC,wBACL/nnC,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKwqY,MACrCxqY,KAAKoonC,kBAGC,EACR,EAEAlG,WAAY,SAAU/1mC,GAErBnM,KAAKy2f,UAAW,EAChB,IAAInjS,EAAI+05B,EAAMC,EAAUC,EAAUtloC,EAAGkH,EAAMH,EAC1C25E,EAAI3jE,KAAKpQ,QAAS0mN,EAAOt2M,KAwC1B,OAtCKA,KAAKulnC,UAIT+C,GADAD,GADA/05B,EAAKtzN,KAAK6mnC,+BACAzynC,QAAU,YAAgBlS,KAAMoxO,EAAI,GAAInrO,YAC/B6X,KAAKqvmC,WAAY/74B,EAAI,GAAK,QAAW,EAAIhd,EAAK63Q,SAASvne,OAC1E2hoC,EAAWF,EAAO,EAAI/x6B,EAAK63Q,SAASzne,MAEpCzD,EAAI,CACHyD,MAAS4vN,EAAK+lc,OAAO31pB,QAAW6hoC,EAChC3hoC,OAAU0vN,EAAK+lc,OAAOz1pB,SAAW0hoC,GAElCn+nC,EAASwmB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,UACpCmtN,EAAKxtN,SAASqB,KAAOmsN,EAAKsxQ,iBAAiBz9d,OAAY,KAC1DH,EAAQ2mB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,SACnCmtN,EAAKxtN,SAASkB,IAAMssN,EAAKsxQ,iBAAiB59d,MAAW,KAElD25E,EAAEqZ,SACPh9E,KAAK1Z,QAAQ6C,IAAKugG,EAAEsZ,OAAQ//G,EAAG,CAAE+G,IAAKA,EAAKG,KAAMA,KAGlDmsN,EAAK+lc,OAAOz1pB,OAAQ0vN,EAAKvjM,KAAKnsB,QAC9B0vN,EAAK+lc,OAAO31pB,MAAO4vN,EAAKvjM,KAAKrsB,OAExBsZ,KAAKulnC,UAAY5hjC,EAAEqZ,SACvBh9E,KAAKinnC,yBAIPv9hC,EAAG,QAASvgG,IAAK,SAAU,QAE3B6W,KAAK+gmC,aAAc,yBAEnB/gmC,KAAK6nnC,WAAY,OAAQ17mC,GAEpBnM,KAAKulnC,SACTvlnC,KAAKq8oB,OAAOz5mB,UAGN,CAER,EAEAmllC,sBAAuB,WACtB/nnC,KAAKwonC,aAAe,CACnBx+nC,IAAKgW,KAAKlX,SAASkB,IACnBG,KAAM6V,KAAKlX,SAASqB,MAErB6V,KAAKyonC,SAAW,CACf/hoC,MAAOsZ,KAAK+S,KAAKrsB,MACjBE,OAAQoZ,KAAK+S,KAAKnsB,OAEpB,EAEAwhoC,cAAe,WACd,IAAIh2lC,EAAQ,CAAC,EAiBb,OAfKpyB,KAAKlX,SAASkB,MAAQgW,KAAKwonC,aAAax+nC,MAC5CooC,EAAMpoC,IAAMgW,KAAKlX,SAASkB,IAAM,MAE5BgW,KAAKlX,SAASqB,OAAS6V,KAAKwonC,aAAar+nC,OAC7CioC,EAAMjoC,KAAO6V,KAAKlX,SAASqB,KAAO,MAE9B6V,KAAK+S,KAAKrsB,QAAUsZ,KAAKyonC,SAAS/hoC,QACtC0rC,EAAM1rC,MAAQsZ,KAAK+S,KAAKrsB,MAAQ,MAE5BsZ,KAAK+S,KAAKnsB,SAAWoZ,KAAKyonC,SAAS7hoC,SACvCwrC,EAAMxrC,OAASoZ,KAAK+S,KAAKnsB,OAAS,MAGnCoZ,KAAKq8oB,OAAOlzpB,IAAKipC,GAEVA,CACR,EAEA41lC,yBAA0B,SAAUU,GACnC,IAAIC,EAAWC,EAAWC,EAAYC,EAAYjvnC,EACjD8pE,EAAI3jE,KAAKpQ,QAEViK,EAAI,CACHi8jB,SAAU91jB,KAAKwrZ,UAAW7nV,EAAEmyf,UAAanyf,EAAEmyf,SAAW,EACtDlliB,SAAU5wB,KAAKwrZ,UAAW7nV,EAAE/yC,UAAa+yC,EAAE/yC,SAAWrrC,IACtDojgC,UAAW3o/B,KAAKwrZ,UAAW7nV,EAAEgl7B,WAAchl7B,EAAEgl7B,UAAY,EACzDpw8B,UAAWv4C,KAAKwrZ,UAAW7nV,EAAEprB,WAAcorB,EAAEprB,UAAYhzD,MAGrDya,KAAKi9D,cAAgByrjC,KACzBC,EAAY9unC,EAAE8u/B,UAAY3o/B,KAAK05C,YAC/BmvkC,EAAahvnC,EAAEi8jB,SAAW91jB,KAAK05C,YAC/BkvkC,EAAY/unC,EAAE0+C,UAAYv4C,KAAK05C,YAC/BovkC,EAAajvnC,EAAE+2B,SAAW5wB,KAAK05C,YAE1BivkC,EAAY9unC,EAAEi8jB,WAClBj8jB,EAAEi8jB,SAAW6yjB,GAETE,EAAahvnC,EAAE8u/B,YACnB9u/B,EAAE8u/B,UAAYkgI,GAEVD,EAAY/unC,EAAE+2B,WAClB/2B,EAAE+2B,SAAWg4lC,GAETE,EAAajvnC,EAAE0+C,YACnB1+C,EAAE0+C,UAAYuwkC,IAGhB9onC,KAAK+onC,aAAelvnC,CACrB,EAEAsunC,aAAc,SAAUpynC,GACvBiK,KAAKpb,OAASob,KAAKq8oB,OAAOz3pB,SACrBob,KAAKwrZ,UAAWz1Z,EAAK5L,QACzB6V,KAAKlX,SAASqB,KAAO4L,EAAK5L,MAEtB6V,KAAKwrZ,UAAWz1Z,EAAK/L,OACzBgW,KAAKlX,SAASkB,IAAM+L,EAAK/L,KAErBgW,KAAKwrZ,UAAWz1Z,EAAKnP,UACzBoZ,KAAK+S,KAAKnsB,OAASmP,EAAKnP,QAEpBoZ,KAAKwrZ,UAAWz1Z,EAAKrP,SACzBsZ,KAAK+S,KAAKrsB,MAAQqP,EAAKrP,MAEzB,EAEAuhoC,aAAc,SAAUlynC,GAEvB,IAAIiznC,EAAOhpnC,KAAKlX,SACfkmP,EAAQhvO,KAAK+S,KACbnZ,EAAIoG,KAAK9N,KAiBV,OAfK8N,KAAKwrZ,UAAWz1Z,EAAKnP,QACzBmP,EAAKrP,MAAUqP,EAAKnP,OAASoZ,KAAK05C,YACvB15C,KAAKwrZ,UAAWz1Z,EAAKrP,SAChCqP,EAAKnP,OAAWmP,EAAKrP,MAAQsZ,KAAK05C,aAGxB,OAAN9/C,IACJ7D,EAAK5L,KAAO6+nC,EAAK7+nC,MAAS6kP,EAAMtoP,MAAQqP,EAAKrP,OAC7CqP,EAAK/L,IAAM,MAED,OAAN4P,IACJ7D,EAAK/L,IAAMg/nC,EAAKh/nC,KAAQglP,EAAMpoP,OAASmP,EAAKnP,QAC5CmP,EAAK5L,KAAO6+nC,EAAK7+nC,MAAS6kP,EAAMtoP,MAAQqP,EAAKrP,QAGvCqP,CACR,EAEAmynC,aAAc,SAAUnynC,GAEvB,IAAI4tE,EAAI3jE,KAAK+onC,aACZnvnC,EAAIoG,KAAK9N,KACT+2nC,EAASjpnC,KAAKwrZ,UAAWz1Z,EAAKrP,QAAWi9E,EAAE/yC,UAAc+yC,EAAE/yC,SAAW76B,EAAKrP,MAC3EwioC,EAASlpnC,KAAKwrZ,UAAWz1Z,EAAKnP,SAAY+8E,EAAEprB,WAAeorB,EAAEprB,UAAYxiD,EAAKnP,OAC9EuioC,EAASnpnC,KAAKwrZ,UAAWz1Z,EAAKrP,QAAWi9E,EAAEmyf,UAAcnyf,EAAEmyf,SAAW//jB,EAAKrP,MAC3E0ioC,EAASppnC,KAAKwrZ,UAAWz1Z,EAAKnP,SAAY+8E,EAAEgl7B,WAAehl7B,EAAEgl7B,UAAY5y/B,EAAKnP,OAC9Eg/f,EAAK5lf,KAAK4nd,iBAAiBz9d,KAAO6V,KAAKgva,aAAatob,MACpDwpc,EAAKlwb,KAAK4nd,iBAAiB59d,IAAMgW,KAAKgva,aAAapob,OACnD8uK,EAAK,UAAUxzK,KAAM0X,GAAKk6G,EAAK,UAAU5xH,KAAM0X,GAkChD,OAjCKuvnC,IACJpznC,EAAKrP,MAAQi9E,EAAEmyf,UAEXszjB,IACJrznC,EAAKnP,OAAS+8E,EAAEgl7B,WAEZsgI,IACJlznC,EAAKrP,MAAQi9E,EAAE/yC,UAEXs4lC,IACJnznC,EAAKnP,OAAS+8E,EAAEprB,WAGZ4wkC,GAAUzz9B,IACd3/J,EAAK5L,KAAOy7f,EAAKjib,EAAEmyf,UAEfmzjB,GAAUvz9B,IACd3/J,EAAK5L,KAAOy7f,EAAKjib,EAAE/yC,UAEfw4lC,GAAUt1gC,IACd/9G,EAAK/L,IAAMkmc,EAAKvsX,EAAEgl7B,WAEdugI,GAAUp1gC,IACd/9G,EAAK/L,IAAMkmc,EAAKvsX,EAAEprB,WAIbxiD,EAAKrP,OAAUqP,EAAKnP,QAAWmP,EAAK5L,OAAQ4L,EAAK/L,IAE1C+L,EAAKrP,OAAUqP,EAAKnP,QAAWmP,EAAK/L,MAAO+L,EAAK5L,OAC5D4L,EAAK5L,KAAO,MAFZ4L,EAAK/L,IAAM,KAKL+L,CACR,EAEAsznC,gCAAiC,SAAU/ioC,GAgB1C,IAfA,IAAIjB,EAAI,EACPisE,EAAS,GACTp1B,EAAU,CACT51C,EAAQ6C,IAAK,kBACb7C,EAAQ6C,IAAK,oBACb7C,EAAQ6C,IAAK,qBACb7C,EAAQ6C,IAAK,oBAEd8yC,EAAW,CACV31C,EAAQ6C,IAAK,cACb7C,EAAQ6C,IAAK,gBACb7C,EAAQ6C,IAAK,iBACb7C,EAAQ6C,IAAK,gBAGP9D,EAAI,EAAGA,IACdisE,EAAQjsE,GAAQsrB,WAAYurB,EAAS72C,KAAS,EAC9CisE,EAAQjsE,IAASsrB,WAAYsrB,EAAU52C,KAAS,EAGjD,MAAO,CACNuB,OAAQ0qE,EAAQ,GAAMA,EAAQ,GAC9B5qE,MAAO4qE,EAAQ,GAAMA,EAAQ,GAE/B,EAEA21jC,sBAAuB,WAEtB,GAAMjnnC,KAAK6mnC,8BAA8BzynC,OAQzC,IAJA,IAAIk1nC,EACHjkoC,EAAI,EACJiB,EAAU0Z,KAAKq8oB,QAAUr8oB,KAAK1Z,QAEvBjB,EAAI2a,KAAK6mnC,8BAA8BzynC,OAAQ/O,IAEtDikoC,EAAOtpnC,KAAK6mnC,8BAA+BxhoC,GAIrC2a,KAAKupnC,kBACVvpnC,KAAKupnC,gBAAkBvpnC,KAAKqpnC,gCAAiCC,IAG9DA,EAAKngoC,IAAK,CACTvC,OAAUN,EAAQM,SAAWoZ,KAAKupnC,gBAAgB3ioC,QAAY,EAC9DF,MAASJ,EAAQI,QAAUsZ,KAAKupnC,gBAAgB7ioC,OAAW,GAK9D,EAEAihoC,aAAc,WAEb,IAAIpqlC,EAAKv9B,KAAK1Z,QAASq9E,EAAI3jE,KAAKpQ,QAChCoQ,KAAKwpnC,cAAgBjslC,EAAG34C,SAEnBob,KAAKulnC,SAETvlnC,KAAKq8oB,OAASr8oB,KAAKq8oB,QAAU3yjB,EAAG,wCAEhC1pF,KAAK0hmC,UAAW1hmC,KAAKq8oB,OAAQr8oB,KAAKulnC,SAClCvlnC,KAAKq8oB,OAAOlzpB,IAAK,CAChBzC,MAAOsZ,KAAK1Z,QAAQi6D,aACpB35D,OAAQoZ,KAAK1Z,QAAQm6D,cACrB33D,SAAU,WACVqB,KAAM6V,KAAKwpnC,cAAcr/nC,KAAO,KAChCH,IAAKgW,KAAKwpnC,cAAcx/nC,IAAM,KAC9Bg3b,SAAUr9W,EAAEq9W,SAGbhhb,KAAKq8oB,OACHsB,SAAU,QACV+md,oBAGF1kmC,KAAKq8oB,OAASr8oB,KAAK1Z,OAGrB,EAEAo9a,QAAS,CACR1+a,EAAG,SAAUmnB,EAAOy0L,GACnB,MAAO,CAAEl6M,MAAOsZ,KAAKgva,aAAatob,MAAQk6M,EAC3C,EACAhnL,EAAG,SAAUzN,EAAOy0L,GACnB,IAAI5hD,EAAKh/I,KAAKgva,aACd,MAAO,CAAE7kb,KADwB6V,KAAK4nd,iBACpBz9d,KAAOy2M,EAAIl6M,MAAOs4J,EAAGt4J,MAAQk6M,EAChD,EACA//L,EAAG,SAAUsL,EAAOy0L,EAAIC,GACvB,IAAI7hD,EAAKh/I,KAAKgva,aACd,MAAO,CAAEhlb,IADwBgW,KAAK4nd,iBACrB59d,IAAM62M,EAAIj6M,OAAQo4J,EAAGp4J,OAASi6M,EAChD,EACA59M,EAAG,SAAUkpB,EAAOy0L,EAAIC,GACvB,MAAO,CAAEj6M,OAAQoZ,KAAKgva,aAAapob,OAASi6M,EAC7C,EACAwxI,GAAI,SAAUlmU,EAAOy0L,EAAIC,GACxB,OAAOn3G,EAAEsZ,OAAQhjG,KAAK0ja,QAAQzgb,EAAE6d,MAAOd,KAAM7L,WAC5C6L,KAAK0ja,QAAQ1+a,EAAE8b,MAAOd,KAAM,CAAEmM,EAAOy0L,EAAIC,IAC3C,EACAyxI,GAAI,SAAUnmU,EAAOy0L,EAAIC,GACxB,OAAOn3G,EAAEsZ,OAAQhjG,KAAK0ja,QAAQzgb,EAAE6d,MAAOd,KAAM7L,WAC5C6L,KAAK0ja,QAAQ9pZ,EAAE9Y,MAAOd,KAAM,CAAEmM,EAAOy0L,EAAIC,IAC3C,EACA0xI,GAAI,SAAUpmU,EAAOy0L,EAAIC,GACxB,OAAOn3G,EAAEsZ,OAAQhjG,KAAK0ja,QAAQ7ia,EAAEC,MAAOd,KAAM7L,WAC5C6L,KAAK0ja,QAAQ1+a,EAAE8b,MAAOd,KAAM,CAAEmM,EAAOy0L,EAAIC,IAC3C,EACAwlG,GAAI,SAAUl6R,EAAOy0L,EAAIC,GACxB,OAAOn3G,EAAEsZ,OAAQhjG,KAAK0ja,QAAQ7ia,EAAEC,MAAOd,KAAM7L,WAC5C6L,KAAK0ja,QAAQ9pZ,EAAE9Y,MAAOd,KAAM,CAAEmM,EAAOy0L,EAAIC,IAC3C,GAGDgn7B,WAAY,SAAUhnnC,EAAGsL,GACxBu9E,EAAE8gT,GAAGhyU,OAAOn4D,KAAML,KAAMa,EAAG,CAAEsL,EAAOnM,KAAKwqY,OACjC,WAAN3pY,GAAkBb,KAAKkl7B,SAAUrk7B,EAAGsL,EAAOnM,KAAKwqY,KACnD,EAEA9/W,QAAS,CAAC,EAEV8/W,GAAI,WACH,MAAO,CACNo8uB,gBAAiB5mnC,KAAK4mnC,gBACtBtgoC,QAAS0Z,KAAK1Z,QACd+1pB,OAAQr8oB,KAAKq8oB,OACbvzpB,SAAUkX,KAAKlX,SACfiqB,KAAM/S,KAAK+S,KACXi8Z,aAAchva,KAAKgva,aACnB44C,iBAAkB5nd,KAAK4nd,iBAEzB,IAQDl+X,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,UAAW,CAExCoS,KAAM,SAAUyG,GACf,IAAImqM,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC/BnjjC,EAAI2yI,EAAK1mN,QACT0jO,EAAKhd,EAAKuw6B,8BACVwB,EAAO/05B,EAAGl/N,QAAU,YAAgBlS,KAAMoxO,EAAI,GAAInrO,UAClDmgoC,EAAWD,GAAQ/x6B,EAAK+45B,WAAY/74B,EAAI,GAAK,QAAW,EAAIhd,EAAK63Q,SAASvne,OAC1E2hoC,EAAWF,EAAO,EAAI/x6B,EAAK63Q,SAASzne,MACpCgjC,EAAQ,CACPhjC,MAAS4vN,EAAKvjM,KAAKrsB,MAAQ6hoC,EAC3B3hoC,OAAU0vN,EAAKvjM,KAAKnsB,OAAS0hoC,GAE9Bn+nC,EAASwmB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,UACpCmtN,EAAKxtN,SAASqB,KAAOmsN,EAAKsxQ,iBAAiBz9d,OAAY,KAC1DH,EAAQ2mB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,SACnCmtN,EAAKxtN,SAASkB,IAAMssN,EAAKsxQ,iBAAiB59d,MAAW,KAEzDssN,EAAKhwN,QAAQ02F,QACZ0M,EAAEsZ,OAAQt5E,EAAO1/B,GAAOG,EAAO,CAAEH,IAAKA,EAAKG,KAAMA,GAAS,CAAC,GAAK,CAC/D+a,SAAUy+D,EAAE2ijC,gBACZ/ilC,OAAQogC,EAAE4ijC,cACVjlnC,KAAM,WAEL,IAAIvL,EAAO,CACVrP,MAAOiqB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,UACrCvC,OAAQ+pB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,WACtCa,IAAK2mB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,QACnCgB,KAAMwmB,WAAY2lM,EAAKhwN,QAAQ6C,IAAK,UAGhCmqO,GAAMA,EAAGl/N,QACbs1F,EAAG4pI,EAAI,IAAMnqO,IAAK,CAAEzC,MAAOqP,EAAKrP,MAAOE,OAAQmP,EAAKnP,SAIrD0vN,EAAK6x6B,aAAcpynC,GACnBugN,EAAKux6B,WAAY,SAAU17mC,EAE5B,GAGH,IAIDu9E,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,cAAe,CAE5C7G,MAAO,WACN,IAAInG,EAAS6Z,EAAG2sY,EAAIh5R,EAAI4hD,EAAIhvK,EAAOE,EAClC0vN,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC5BnjjC,EAAI2yI,EAAK1mN,QACT2tC,EAAK+4K,EAAKhwN,QACV81b,EAAKz4W,EAAE2+iC,YACPrj+B,EAAOm9R,aAAc1yV,EACpB0yV,EAAGvob,IAAK,GACN,SAAS3R,KAAMk6b,GAAS7+Y,EAAG91C,SAASoM,IAAK,GAAMuob,EAE7Cn9R,IAINq3D,EAAKmz6B,iBAAmB//hC,EAAGu1D,GAEtB,WAAW/8J,KAAMk6b,IAAQA,IAAO3zb,UACpC6tN,EAAKsgU,gBAAkB,CACtBzshB,KAAM,EACNH,IAAK,GAENssN,EAAKkisB,kBAAoB,CACxBru5B,KAAM,EACNH,IAAK,GAGNssN,EAAKoz6B,WAAa,CACjBpjoC,QAASojG,EAAGjhG,UACZ0B,KAAM,EACNH,IAAK,EACLtD,MAAOgjG,EAAGjhG,UAAW/B,QACrBE,OAAQ8iG,EAAGjhG,UAAW7B,UAAY6B,SAASiF,KAAK1F,WAAW8G,gBAG5DxI,EAAUojG,EAAGu1D,GACb9+I,EAAI,GACJupF,EAAG,CAAE,MAAO,QAAS,OAAQ,WAAa94E,KAAM,SAAUvrB,EAAGkO,GAC5D4M,EAAG9a,GAAMixN,EAAKqw6B,KAAMrgoC,EAAQ6C,IAAK,UAAYoK,GAC9C,GAEA+iN,EAAKsgU,gBAAkBtwhB,EAAQ1B,SAC/B0xN,EAAKkisB,kBAAoBly5B,EAAQwC,WACjCwtN,EAAKjvJ,cAAgB,CACpBzgE,OAAUN,EAAQwnG,cAAgB3tF,EAAG,GACrCzZ,MAASJ,EAAQsnG,aAAeztF,EAAG,IAGpC2sY,EAAKx2L,EAAKsgU,gBACV9ia,EAAKwiG,EAAKjvJ,cAAczgE,OACxB8uK,EAAK4gD,EAAKjvJ,cAAc3gE,MACxBA,EAAU4vN,EAAK+45B,WAAapw9B,EAAI,QAAWA,EAAGpwJ,YAAc6mK,EAC5D9uK,EAAW0vN,EAAK+45B,WAAapw9B,GAAOA,EAAGnwJ,aAAeglH,EAEtDwiG,EAAKoz6B,WAAa,CACjBpjoC,QAAS24J,EACT90J,KAAM2iZ,EAAG3iZ,KACTH,IAAK8iZ,EAAG9iZ,IACRtD,MAAOA,EACPE,OAAQA,IAGX,EAEAqR,OAAQ,SAAUkU,GACjB,IAAIw9mC,EAAOC,EAAOC,EAAUC,EAC3Bxz6B,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC5BnjjC,EAAI2yI,EAAK1mN,QACTk9Y,EAAKx2L,EAAKsgU,gBACVt9Y,EAAKg9E,EAAKxtN,SACVihoC,EAASzz6B,EAAKr5I,cAAgB9wD,EAAM6lR,SACpCg41B,EAAM,CACLhgoC,IAAK,EACLG,KAAM,GAEP80J,EAAKq3D,EAAKmz6B,iBACVQ,GAAiB,EAEbhr+B,EAAI,KAAQx2J,UAAY,SAAavG,KAAM+8J,EAAG91J,IAAK,eACvD6goC,EAAMl9uB,GAGFxzQ,EAAGnvI,MAASmsN,EAAKiv6B,QAAUz4uB,EAAG3iZ,KAAO,KACzCmsN,EAAKvjM,KAAKrsB,MAAQ4vN,EAAKvjM,KAAKrsB,OACzB4vN,EAAKiv6B,QACJjv6B,EAAKxtN,SAASqB,KAAO2iZ,EAAG3iZ,KACxBmsN,EAAKxtN,SAASqB,KAAO6/nC,EAAI7/nC,MAExB4/nC,IACJzz6B,EAAKvjM,KAAKnsB,OAAS0vN,EAAKvjM,KAAKrsB,MAAQ4vN,EAAK58J,YAC1CuwkC,GAAiB,GAElB3z6B,EAAKxtN,SAASqB,KAAOw5E,EAAE04kB,OAASvvQ,EAAG3iZ,KAAO,GAGtCmvI,EAAGtvI,KAAQssN,EAAKiv6B,QAAUz4uB,EAAG9iZ,IAAM,KACvCssN,EAAKvjM,KAAKnsB,OAAS0vN,EAAKvjM,KAAKnsB,QAC1B0vN,EAAKiv6B,QACJjv6B,EAAKxtN,SAASkB,IAAM8iZ,EAAG9iZ,IACzBssN,EAAKxtN,SAASkB,KAEX+/nC,IACJzz6B,EAAKvjM,KAAKrsB,MAAQ4vN,EAAKvjM,KAAKnsB,OAAS0vN,EAAK58J,YAC1CuwkC,GAAiB,GAElB3z6B,EAAKxtN,SAASkB,IAAMssN,EAAKiv6B,QAAUz4uB,EAAG9iZ,IAAM,GAG7C6/nC,EAAWvz6B,EAAKmz6B,iBAAiB51nC,IAAK,KAAQyiN,EAAKhwN,QAAQmB,SAASoM,IAAK,GACzEi2nC,EAAmB,oBAAoB5noC,KAAMo0N,EAAKmz6B,iBAAiBtgoC,IAAK,aAEnE0goC,GAAYC,GAChBxz6B,EAAK1xN,OAAOuF,KAAOmsN,EAAKoz6B,WAAWv/nC,KAAOmsN,EAAKxtN,SAASqB,KACxDmsN,EAAK1xN,OAAOoF,IAAMssN,EAAKoz6B,WAAW1/nC,IAAMssN,EAAKxtN,SAASkB,MAEtDssN,EAAK1xN,OAAOuF,KAAOmsN,EAAKhwN,QAAQ1B,SAASuF,KACzCmsN,EAAK1xN,OAAOoF,IAAMssN,EAAKhwN,QAAQ1B,SAASoF,KAGzC2/nC,EAAQnkoC,KAAKM,IAAKwwN,EAAK63Q,SAASzne,OAC7B4vN,EAAKiv6B,QACNjv6B,EAAK1xN,OAAOuF,KAAO6/nC,EAAI7/nC,KACrBmsN,EAAK1xN,OAAOuF,KAAO2iZ,EAAG3iZ,OAE1By/nC,EAAQpkoC,KAAKM,IAAKwwN,EAAK63Q,SAASvne,QAC7B0vN,EAAKiv6B,QACNjv6B,EAAK1xN,OAAOoF,IAAMggoC,EAAIhgoC,IACpBssN,EAAK1xN,OAAOoF,IAAM8iZ,EAAG9iZ,MAEpB2/nC,EAAQrz6B,EAAKvjM,KAAKrsB,OAAS4vN,EAAKoz6B,WAAWhjoC,QAC/C4vN,EAAKvjM,KAAKrsB,MAAQ4vN,EAAKoz6B,WAAWhjoC,MAAQijoC,EACrCI,IACJzz6B,EAAKvjM,KAAKnsB,OAAS0vN,EAAKvjM,KAAKrsB,MAAQ4vN,EAAK58J,YAC1CuwkC,GAAiB,IAIdL,EAAQtz6B,EAAKvjM,KAAKnsB,QAAU0vN,EAAKoz6B,WAAW9ioC,SAChD0vN,EAAKvjM,KAAKnsB,OAAS0vN,EAAKoz6B,WAAW9ioC,OAASgjoC,EACvCG,IACJzz6B,EAAKvjM,KAAKrsB,MAAQ4vN,EAAKvjM,KAAKnsB,OAAS0vN,EAAK58J,YAC1CuwkC,GAAiB,IAIbA,IACL3z6B,EAAKxtN,SAASqB,KAAOmsN,EAAKky6B,aAAar+nC,KACvCmsN,EAAKxtN,SAASkB,IAAMssN,EAAKky6B,aAAax+nC,IACtCssN,EAAKvjM,KAAKrsB,MAAQ4vN,EAAKmy6B,SAAS/hoC,MAChC4vN,EAAKvjM,KAAKnsB,OAAS0vN,EAAKmy6B,SAAS7hoC,OAEnC,EAEA8e,KAAM,WACL,IAAI4wM,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC/BnjjC,EAAI2yI,EAAK1mN,QACTk9Y,EAAKx2L,EAAKsgU,gBACVozmB,EAAM1z6B,EAAKkisB,kBACXv5vB,EAAKq3D,EAAKmz6B,iBACVpte,EAAS3yjB,EAAG4sH,EAAK+lc,QACjBxvQ,EAAKwvQ,EAAOz3pB,SACZg1B,EAAIyioB,EAAO97lB,aAAe+1J,EAAK63Q,SAASzne,MACxCrD,EAAIg5pB,EAAO57lB,cAAgB61J,EAAK63Q,SAASvne,OAErC0vN,EAAKiv6B,UAAY5hjC,EAAEqZ,SAAW,WAAe96F,KAAM+8J,EAAG91J,IAAK,cAC/DugG,EAAG1pF,MAAO7W,IAAK,CACdgB,KAAM0iZ,EAAG1iZ,KAAO6/nC,EAAI7/nC,KAAO2iZ,EAAG3iZ,KAC9BzD,MAAOkzB,EACPhzB,OAAQvD,IAILizN,EAAKiv6B,UAAY5hjC,EAAEqZ,SAAW,SAAa96F,KAAM+8J,EAAG91J,IAAK,cAC7DugG,EAAG1pF,MAAO7W,IAAK,CACdgB,KAAM0iZ,EAAG1iZ,KAAO6/nC,EAAI7/nC,KAAO2iZ,EAAG3iZ,KAC9BzD,MAAOkzB,EACPhzB,OAAQvD,GAGX,IAGDqmG,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,aAAc,CAE3C7G,MAAO,WACN,IACCk3E,EADU+lB,EAAG1pF,MAAO8mnC,UAAW,YACtBl3nC,QAEV85F,EAAG/lB,EAAE0ijC,YAAaz1mC,KAAM,WACvB,IAAI2sB,EAAKmsD,EAAG1pF,MACZu9B,EAAGxnC,KAAM,0BAA2B,CACnCrP,MAAOiqB,WAAY4sB,EAAG72C,SAAWE,OAAQ+pB,WAAY4sB,EAAG32C,UACxDuD,KAAMwmB,WAAY4sB,EAAGp0C,IAAK,SAAYa,IAAK2mB,WAAY4sB,EAAGp0C,IAAK,SAEjE,EACD,EAEA8O,OAAQ,SAAUkU,EAAOq+X,GACxB,IAAIl0L,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC/BnjjC,EAAI2yI,EAAK1mN,QACT+imB,EAAKr8Y,EAAK04N,aACV5sa,EAAKk0M,EAAKsxQ,iBACVptb,EAAQ,CACP5zC,OAAU0vN,EAAKvjM,KAAKnsB,OAAS+rmB,EAAG/rmB,QAAY,EAC5CF,MAAS4vN,EAAKvjM,KAAKrsB,MAAQismB,EAAGjsmB,OAAW,EACzCsD,IAAOssN,EAAKxtN,SAASkB,IAAMoY,EAAGpY,KAAS,EACvCG,KAAQmsN,EAAKxtN,SAASqB,KAAOiY,EAAGjY,MAAU,GAG3Cu/F,EAAG/lB,EAAE0ijC,YAAaz1mC,KAAM,WACvB,IAAI2sB,EAAKmsD,EAAG1pF,MAAQvT,EAAQi9F,EAAG1pF,MAAOjK,KAAM,2BAA6B2zB,EAAQ,CAAC,EACjFvgC,EAAMo0C,EAAGirE,QAASgiS,EAAGo8uB,gBAAiB,IAAMxynC,OAC1C,CAAE,QAAS,UACX,CAAE,QAAS,SAAU,MAAO,QAE/Bs1F,EAAE94E,KAAMznB,EAAK,SAAU9D,EAAGitC,GACzB,IAAI4oE,GAAQzuG,EAAO6lC,IAAU,IAAQkI,EAAOlI,IAAU,GACjD4oE,GAAOA,GAAO,IAClBxxE,EAAO4I,GAAS4oE,GAAO,KAEzB,GAEA39D,EAAGp0C,IAAKugC,EACT,EACF,EAEAhkB,KAAM,WACLgkF,EAAG1pF,MAAOiiQ,WAAY,0BACvB,IAGDv4K,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,QAAS,CAEtC7G,MAAO,WAEN,IAAI6pN,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAAc9n+B,EAAKs3D,EAAKvjM,KAExDujM,EAAKmw6B,MAAQnw6B,EAAKsw6B,gBAAgB3hmC,QAClCqxL,EAAKmw6B,MAAMt9nC,IAAK,CACfsU,QAAS,IACT++C,QAAS,QACT1zD,SAAU,WACVlC,OAAQo4J,EAAGp4J,OACXF,MAAOs4J,EAAGt4J,MACVqoC,OAAQ,EACR5kC,KAAM,EACNH,IAAK,IAGNssN,EAAKor5B,UAAWpr5B,EAAKmw6B,MAAO,uBAIJ,IAAnB/8hC,EAAE89gC,cAAwD,iBAAvBlx5B,EAAK1mN,QAAQ62nC,OAGpDnw6B,EAAKmw6B,MAAMx8gC,SAAUjqG,KAAKpQ,QAAQ62nC,OAGnCnw6B,EAAKmw6B,MAAM9oe,SAAUrnc,EAAK+lc,OAE3B,EAEApkpB,OAAQ,WACP,IAAIq+M,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC3Bxw6B,EAAKmw6B,OACTnw6B,EAAKmw6B,MAAMt9nC,IAAK,CACfL,SAAU,WACVlC,OAAQ0vN,EAAKvjM,KAAKnsB,OAClBF,MAAO4vN,EAAKvjM,KAAKrsB,OAGpB,EAEAgf,KAAM,WACL,IAAI4wM,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC3Bxw6B,EAAKmw6B,OAASnw6B,EAAK+lc,QACvB/lc,EAAK+lc,OAAOxopB,IAAK,GAAIq8F,YAAaomH,EAAKmw6B,MAAM5ynC,IAAK,GAEpD,IAID61F,EAAE8gT,GAAGhyU,OAAOllE,IAAK,YAAa,OAAQ,CAErC2E,OAAQ,WACP,IAAIsxnC,EACHjz6B,EAAO5sH,EAAG1pF,MAAO8mnC,UAAW,YAC5BnjjC,EAAI2yI,EAAK1mN,QACTovJ,EAAKs3D,EAAKvjM,KACV4/kB,EAAKr8Y,EAAK04N,aACV5sa,EAAKk0M,EAAKsxQ,iBACVhud,EAAI08M,EAAKpkN,KACT+jD,EAAyB,iBAAX0tB,EAAE1tB,KAAoB,CAAE0tB,EAAE1tB,KAAM0tB,EAAE1tB,MAAS0tB,EAAE1tB,KAC3Di0kC,EAAUj0kC,EAAM,IAAO,EACvBk0kC,EAAUl0kC,EAAM,IAAO,EACvBo6c,EAAK7qgB,KAAK+F,OAASyzJ,EAAGt4J,MAAQismB,EAAGjsmB,OAAUwjoC,GAAUA,EACrD55nB,EAAK9qgB,KAAK+F,OAASyzJ,EAAGp4J,OAAS+rmB,EAAG/rmB,QAAWujoC,GAAUA,EACvD7pkC,EAAWqyiB,EAAGjsmB,MAAQ2pgB,EACtB7vc,EAAYmyiB,EAAG/rmB,OAAS0pgB,EACxB85nB,EAAazmjC,EAAE/yC,UAAc+yC,EAAE/yC,SAAW0vB,EAC1C+pkC,EAAc1mjC,EAAEprB,WAAeorB,EAAEprB,UAAYiI,EAC7C8pkC,EAAa3mjC,EAAEmyf,UAAcnyf,EAAEmyf,SAAWx1gB,EAC1CiqkC,EAAc5mjC,EAAEgl7B,WAAehl7B,EAAEgl7B,UAAYno8B,EAE9CmjB,EAAE1tB,KAAOA,EAEJq0kC,IACJhqkC,GAAY4pkC,GAERK,IACJ/pkC,GAAa2pkC,GAETC,IACJ9pkC,GAAY4pkC,GAERG,IACJ7pkC,GAAa2pkC,GAGT,aAAajooC,KAAM0X,IACvB08M,EAAKvjM,KAAKrsB,MAAQ45D,EAClBg2J,EAAKvjM,KAAKnsB,OAAS45D,GACR,SAASt+D,KAAM0X,IAC1B08M,EAAKvjM,KAAKrsB,MAAQ45D,EAClBg2J,EAAKvjM,KAAKnsB,OAAS45D,EACnB81J,EAAKxtN,SAASkB,IAAMoY,EAAGpY,IAAMsmgB,GAClB,SAASpugB,KAAM0X,IAC1B08M,EAAKvjM,KAAKrsB,MAAQ45D,EAClBg2J,EAAKvjM,KAAKnsB,OAAS45D,EACnB81J,EAAKxtN,SAASqB,KAAOiY,EAAGjY,KAAOkmgB,KAE1B7vc,EAAY2pkC,GAAS,GAAK7pkC,EAAW4pkC,GAAS,KAClDX,EAAkBjz6B,EAAK+y6B,gCAAiCrpnC,OAGpDwgD,EAAY2pkC,EAAQ,GACxB7z6B,EAAKvjM,KAAKnsB,OAAS45D,EACnB81J,EAAKxtN,SAASkB,IAAMoY,EAAGpY,IAAMsmgB,IAE7B9vc,EAAY2pkC,EAAQZ,EAAgB3ioC,OACpC0vN,EAAKvjM,KAAKnsB,OAAS45D,EACnB81J,EAAKxtN,SAASkB,IAAMoY,EAAGpY,IAAM2omB,EAAG/rmB,OAAS45D,GAErCF,EAAW4pkC,EAAQ,GACvB5z6B,EAAKvjM,KAAKrsB,MAAQ45D,EAClBg2J,EAAKxtN,SAASqB,KAAOiY,EAAGjY,KAAOkmgB,IAE/B/vc,EAAW4pkC,EAAQX,EAAgB7ioC,MACnC4vN,EAAKvjM,KAAKrsB,MAAQ45D,EAClBg2J,EAAKxtN,SAASqB,KAAOiY,EAAGjY,KAAOwomB,EAAGjsmB,MAAQ45D,GAG7C,IAIsBopC,EAAE8gT,GAAGs8uB,UAuB5Bp9hC,EAAEm9Q,OAAQ,YAAa,CACtBhiS,QAAS,SACTj1E,QAAS,CACR+tpB,SAAU,OACV6se,UAAU,EACVzksB,QAAS,GACT14U,QAAS,CACR,YAAa,gBACb,qBAAsB,iBAEvBo9gC,eAAe,EACfjxO,UAAW,QACX/tkB,WAAW,EACX1mS,KAAM,KACNn+C,OAAQ,OACR2xD,UAAW,KACX3nB,SAAU,KACV+39B,UAAW,IACX7yb,SAAU,IACVspV,OAAO,EACPt25B,SAAU,CACT8nmB,GAAI,SACJlgO,GAAI,SACJ19H,GAAI7rQ,OACJg8mC,UAAW,MAGXr+H,MAAO,SAAUvy9B,GAChB,IAAIm4mC,EAAYhhiC,EAAG1pF,MAAO7W,IAAKopB,GAAM3tB,SAASoF,IACzC0goC,EAAY,GAChBhhiC,EAAG1pF,MAAO7W,IAAK,MAAOopB,EAAIvoB,IAAM0goC,EAElC,GAED5D,WAAW,EACXlilC,KAAM,KACN0R,MAAO,KACP5vD,MAAO,IAGPikoC,YAAa,KACbl9mC,MAAO,KACPopc,KAAM,KACNutqB,UAAW,KACXO,SAAU,KACV3zhC,MAAO,KACPjD,KAAM,KACN91F,OAAQ,KACR2ynC,YAAa,KACbC,WAAY,MAGbC,mBAAoB,CACnB/ksB,SAAS,EACTn/b,QAAQ,EACR2xD,WAAW,EACX3nB,UAAU,EACV+39B,WAAW,EACX7yb,UAAU,EACVpvkB,OAAO,GAGRqkoC,wBAAyB,CACxBxykC,WAAW,EACX3nB,UAAU,EACV+39B,WAAW,EACX7yb,UAAU,GAGXmvX,QAAS,WACRjl7B,KAAKgrnC,YAAc,CAClBxukC,QAASx8C,KAAK1Z,QAAS,GAAIojC,MAAM8yB,QACjC91D,MAAOsZ,KAAK1Z,QAAS,GAAIojC,MAAMhjC,MAC/BiigC,UAAW3o/B,KAAK1Z,QAAS,GAAIojC,MAAMi/9B,UACnCpw8B,UAAWv4C,KAAK1Z,QAAS,GAAIojC,MAAM6uB,UACnC3xD,OAAQoZ,KAAK1Z,QAAS,GAAIojC,MAAM9iC,QAEjCoZ,KAAK4nd,iBAAmB,CACvBnge,OAAQuY,KAAK1Z,QAAQmB,SACrB+O,MAAOwJ,KAAK1Z,QAAQmB,SAAS+vH,WAAWhhH,MAAOwJ,KAAK1Z,UAErD0Z,KAAKirnC,cAAgBjrnC,KAAK1Z,QAAQixQ,KAAM,SACb,MAAtBv3P,KAAKpQ,QAAQ0mD,OAAuC,MAAtBt2C,KAAKirnC,gBACvCjrnC,KAAKpQ,QAAQ0mD,MAAQt2C,KAAKirnC,eAItBjrnC,KAAKpQ,QAAQo+C,WACjBhuC,KAAKpQ,QAAQo+C,UAAW,GAGzBhuC,KAAKkrnC,iBAELlrnC,KAAK1Z,QACHs+C,OACAy9N,WAAY,SACZs7Y,SAAU39oB,KAAKmrnC,UAEjBnrnC,KAAK0hmC,UAAW,oBAAqB,qBAErC1hmC,KAAKornC,kBACLprnC,KAAKqrnC,oBAEArrnC,KAAKpQ,QAAQ67U,WAAa/hP,EAAE50F,GAAG22U,WACnCzrU,KAAKsrnC,iBAEDtrnC,KAAKpQ,QAAQk3nC,WAAap9hC,EAAE50F,GAAGgynC,WACnC9mnC,KAAKurnC,iBAGNvrnC,KAAKwrnC,SAAU,EAEfxrnC,KAAKyrnC,aACN,EAEAtzjC,MAAO,WACDn4D,KAAKpQ,QAAQ46nC,UACjBxqnC,KAAK+tF,MAEP,EAEA6ihC,UAAW,WACV,IAAItqnC,EAAU0Z,KAAKpQ,QAAQ+tpB,SAC3B,OAAKr3pB,IAAaA,EAAQqnH,QAAUrnH,EAAQmiH,UACpC/e,EAAGpjG,GAEJ0Z,KAAKvX,SAASoS,KAAMvU,GAAW,QAASizB,GAAI,EACpD,EAEAyxB,SAAU,WACT,IAAIljD,EACH8/d,EAAmB5nd,KAAK4nd,iBAEzB5nd,KAAK0rnC,mBACL1rnC,KAAK2rnC,kBAEL3rnC,KAAK1Z,QACHmlnC,iBACAtinC,IAAK6W,KAAKgrnC,aAGV/jkC,SAEFjnD,KAAKmrnC,SAASvolC,SAET5iC,KAAKirnC,eACTjrnC,KAAK1Z,QAAQixQ,KAAM,QAASv3P,KAAKirnC,gBAGlCnjoC,EAAO8/d,EAAiBnge,OAAO+vH,WAAWj+F,GAAIquc,EAAiBpxd,QAGrDpC,QAAUtM,EAAM,KAAQkY,KAAK1Z,QAAS,GAC/CwB,EAAKooF,OAAQlwE,KAAK1Z,SAElBshe,EAAiBnge,OAAO8oI,OAAQvwH,KAAK1Z,QAEvC,EAEAugX,OAAQ,WACP,OAAO7mW,KAAKmrnC,QACb,EAEAr9gC,QAASpkB,EAAE95E,KACXm+F,OAAQrkB,EAAE95E,KAEVnC,MAAO,SAAUtB,GAChB,IAAImqM,EAAOt2M,KAELA,KAAKwrnC,UAAqD,IAA1CxrnC,KAAKkl7B,SAAU,cAAe/46B,KAIpDnM,KAAKwrnC,SAAU,EACfxrnC,KAAK4rnC,gBAAkB,KACvB5rnC,KAAK2rnC,kBACL3rnC,KAAK0rnC,mBAEC1rnC,KAAK439B,OAAO3m+B,OAAQ,cAAek0D,QAAS,SAAU/wD,QAK3Ds1F,EAAE8gT,GAAG43uB,SAAU14hC,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,KAGvDuX,KAAK6rnC,MAAO7rnC,KAAKmrnC,SAAUnrnC,KAAKpQ,QAAQm1C,KAAM,WAC7CuxK,EAAK4uuB,SAAU,QAAS/46B,EACzB,GACD,EAEAut0B,OAAQ,WACP,OAAO150B,KAAKwrnC,OACb,EAEAjrvB,UAAW,WACVvgY,KAAK8rnC,YACN,EAEAA,WAAY,SAAU3/mC,EAAOgy+B,GAC5B,IAAItt4B,GAAQ,EACXk7gC,EAAW/rnC,KAAKmrnC,SAAS3/nB,SAAU,qBAAsBz4f,IAAK,WAC7D,OAAQ22F,EAAG1pF,MAAO7W,IAAK,UACxB,GAAI0K,MACJm4nC,EAAYxmoC,KAAKmE,IAAImX,MAAO,KAAMirnC,GAUnC,OARKC,IAAchsnC,KAAKmrnC,SAAShioC,IAAK,aACrC6W,KAAKmrnC,SAAShioC,IAAK,UAAW6ioC,EAAY,GAC1Cn7gC,GAAQ,GAGJA,IAAUst4B,GACdn++B,KAAKkl7B,SAAU,QAAS/46B,GAElB0kG,CACR,EAEA9iB,KAAM,WACL,IAAIuoH,EAAOt2M,KACNA,KAAKwrnC,QACJxrnC,KAAK8rnC,cACT9rnC,KAAKisnC,kBAKPjsnC,KAAKwrnC,SAAU,EACfxrnC,KAAK439B,OAASlu4B,EAAGA,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,KAExDuX,KAAKkyE,QACLlyE,KAAK6ja,YACL7ja,KAAKksnC,iBACLlsnC,KAAK8rnC,WAAY,MAAM,GAKlB9rnC,KAAKw4N,SACTx4N,KAAKw4N,QAAQrvO,IAAK,UAAW6W,KAAKmrnC,SAAShioC,IAAK,WAAc,GAG/D6W,KAAKmsnC,MAAOnsnC,KAAKmrnC,SAAUnrnC,KAAKpQ,QAAQg1C,KAAM,WAC7C0xK,EAAK216B,iBACL316B,EAAK4uuB,SAAU,QAChB,GAKAll7B,KAAKosnC,mBAELpsnC,KAAKkl7B,SAAU,QAChB,EAEA+mM,eAAgB,WASf,IAAIr6N,EAAW5x5B,KAAK4rnC,gBACdh6N,IACLA,EAAW5x5B,KAAK1Z,QAAQuU,KAAM,gBAEzB+25B,EAASx95B,SACdw95B,EAAW5x5B,KAAK1Z,QAAQuU,KAAM,cAEzB+25B,EAASx95B,SACdw95B,EAAW5x5B,KAAKqsnC,mBAAmBxxnC,KAAM,cAEpC+25B,EAASx95B,SACdw95B,EAAW5x5B,KAAKssnC,sBAAsBr7nC,OAAQ,cAEzC2g6B,EAASx95B,SACdw95B,EAAW5x5B,KAAKmrnC,UAEjBv5N,EAASr44B,GAAI,GAAI4rC,QAAS,QAC3B,EAEAonkC,WAAY,SAAUpgnC,GACrB,SAASqgnC,IACR,IAAIlzsB,EAAgB5vV,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,IAC/CuX,KAAKmrnC,SAAU,KAAQ7xsB,GACjC5vV,EAAEliG,SAAUwY,KAAKmrnC,SAAU,GAAK7xsB,IAEjCt5a,KAAKisnC,gBAEP,CACA9/mC,EAAMwgH,iBACN6//B,EAAWnsnC,KAAML,MAKjBA,KAAKy1kB,OAAQ+2iB,EACd,EAEAtB,eAAgB,WACflrnC,KAAKmrnC,SAAWzhiC,EAAG,SACjB3kD,OACAwyN,KAAM,CAGN0+D,UAAW,EACX33T,KAAM,WAENq/oB,SAAU39oB,KAAK4wmC,aAEjB5wmC,KAAK0hmC,UAAW1hmC,KAAKmrnC,SAAU,YAAa,wCAC5CnrnC,KAAKgszB,IAAKhszB,KAAKmrnC,SAAU,CACxB9jT,QAAS,SAAUl7zB,GAClB,GAAKnM,KAAKpQ,QAAQ66nC,gBAAkBt+mC,EAAM42P,sBAAwB52P,EAAMyrS,SACtEzrS,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQrkB,OAGhC,OAFApnR,EAAMwgH,sBACN3sH,KAAKyN,MAAOtB,GAKb,GAAKA,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQs9vB,MAAO/oiC,EAAM42P,qBAAjD,CAGA,IAAI0p3B,EAAYzsnC,KAAKmrnC,SAAStwnC,KAAM,aACnC2zD,EAAQi+jC,EAAUx7nC,OAAQ,UAC1BijD,EAAOu4kC,EAAUx7nC,OAAQ,SAEnBkb,EAAMpe,SAAWmmD,EAAM,IAAO/nC,EAAMpe,SAAWiS,KAAKmrnC,SAAU,IAClEh/mC,EAAM6lR,SAKK7lR,EAAMpe,SAAWygE,EAAO,IACpCriD,EAAMpe,SAAWiS,KAAKmrnC,SAAU,KAASh/mC,EAAM6lR,WAChDhyR,KAAKy1kB,OAAQ,WACZvhiB,EAAKiR,QAAS,QACf,GACAh5C,EAAMwgH,mBATN3sH,KAAKy1kB,OAAQ,WACZjnhB,EAAMrJ,QAAS,QAChB,GACAh5C,EAAMwgH,iBAVP,CAkBD,EACA8xW,UAAW,SAAUtyd,GACfnM,KAAK8rnC,WAAY3/mC,IACrBnM,KAAKisnC,gBAEP,IAMKjsnC,KAAK1Z,QAAQuU,KAAM,sBAAuBzG,QAC/C4L,KAAKmrnC,SAAS5z3B,KAAM,CACnB,mBAAoBv3P,KAAK1Z,QAAQsiH,WAAW2uJ,KAAM,OAGrD,EAEA6z3B,gBAAiB,WAChB,IAAIsB,EAEJ1snC,KAAK2snC,iBAAmBjjiC,EAAG,SAC3B1pF,KAAK0hmC,UAAW1hmC,KAAK2snC,iBACpB,qBAAsB,uCACvB3snC,KAAKgszB,IAAKhszB,KAAK2snC,iBAAkB,CAChClupB,UAAW,SAAUtyd,GAKdu9E,EAAGv9E,EAAMpe,QAAS4/M,QAAS,8BAGhC3tM,KAAKmrnC,SAAShmkC,QAAS,QAEzB,IAMDnlD,KAAKssnC,sBAAwB5iiC,EAAG,mCAC9BwoM,OAAQ,CACRrwR,MAAO6nF,EAAG,OAAQ55D,KAAM9vB,KAAKpQ,QAAQ4p5B,WAAYxw5B,OACjDyrX,KAAM,qBACNmjwB,WAAW,IAEXj6d,SAAU39oB,KAAK2snC,kBAEjB3snC,KAAK0hmC,UAAW1hmC,KAAKssnC,sBAAuB,4BAC5CtsnC,KAAKgszB,IAAKhszB,KAAKssnC,sBAAuB,CACrCl8/B,MAAO,SAAUjkH,GAChBA,EAAMwgH,iBACN3sH,KAAKyN,MAAOtB,EACb,IAGDugnC,EAAgBhjiC,EAAG,UAAWkf,WAAW4u3B,UAAWx39B,KAAK2snC,kBACzD3snC,KAAK0hmC,UAAWgrB,EAAe,mBAC/B1snC,KAAK4snC,OAAQF,GAEb1snC,KAAK2snC,iBAAiBn1J,UAAWx39B,KAAKmrnC,UAEtCnrnC,KAAKmrnC,SAAS5z3B,KAAM,CACnB,kBAAmBm13B,EAAcn13B,KAAM,OAEzC,EAEAq13B,OAAQ,SAAUt2kC,GACZt2C,KAAKpQ,QAAQ0mD,MACjBA,EAAMxmB,KAAM9vB,KAAKpQ,QAAQ0mD,OAEzBA,EAAMttD,KAAM,SAEd,EAEAqioC,kBAAmB,WAClBrrnC,KAAKqsnC,mBAAqB3iiC,EAAG,SAC7B1pF,KAAK0hmC,UAAW1hmC,KAAKqsnC,mBAAoB,uBACxC,wCAEDrsnC,KAAK6snC,YAAcnjiC,EAAG,SACpBi0jB,SAAU39oB,KAAKqsnC,oBACjBrsnC,KAAK0hmC,UAAW1hmC,KAAK6snC,YAAa,uBAElC7snC,KAAK8snC,gBACN,EAEAA,eAAgB,WACf,IAAIx26B,EAAOt2M,KACV+lb,EAAU/lb,KAAKpQ,QAAQm2b,QAGxB/lb,KAAKqsnC,mBAAmBzplC,SACxB5iC,KAAK6snC,YAAYhz3B,QAEZnwK,EAAE483B,cAAevgiB,IAAer8V,EAAE35E,QAASg2a,KAAcA,EAAQ3xb,OACrE4L,KAAK+gmC,aAAc/gmC,KAAKmrnC,SAAU,sBAInCzhiC,EAAE94E,KAAMm1a,EAAS,SAAUxyb,EAAM6+B,GAChC,IAAIg+F,EAAO28/B,EACX36lC,EAAQs3D,EAAE72E,WAAYuf,GACrB,CAAEg+F,MAAOh+F,EAAOtC,KAAMv8B,GACtB6+B,EAGDA,EAAQs3D,EAAEsZ,OAAQ,CAAEhzF,KAAM,UAAYoiB,GAGtCg+F,EAAQh+F,EAAMg+F,MACd28/B,EAAgB,CACft4wB,KAAMriV,EAAMqiV,KACZkjwB,aAAcvllC,EAAMullC,aACpBC,UAAWxllC,EAAMwllC,UAGjBhM,MAAOx5kC,EAAMw5kC,MACb97kC,KAAMsC,EAAMtC,aAGNsC,EAAMg+F,aACNh+F,EAAMqiV,YACNriV,EAAMullC,oBACNvllC,EAAMwllC,iBAGNxllC,EAAMw5kC,MACc,kBAAfx5kC,EAAMtC,aACVsC,EAAMtC,KAGd45D,EAAG,oBAAqBt3D,GACtB8/P,OAAQ661B,GACRpve,SAAUrnc,EAAKu26B,aACflihC,GAAI,QAAS,WACbylB,EAAMtvH,MAAOw1M,EAAKhwN,QAAS,GAAK6N,UACjC,EACF,GACA6L,KAAK0hmC,UAAW1hmC,KAAKmrnC,SAAU,qBAC/BnrnC,KAAKqsnC,mBAAmB1ue,SAAU39oB,KAAKmrnC,UACxC,EAEAG,eAAgB,WACf,IAAIh16B,EAAOt2M,KACVpQ,EAAUoQ,KAAKpQ,QAEhB,SAASo9nC,EAAYxivB,GACpB,MAAO,CACN1hZ,SAAU0hZ,EAAG1hZ,SACblE,OAAQ4lZ,EAAG5lZ,OAEb,CAEAob,KAAKmrnC,SAAS1/yB,UAAW,CACxB9oS,OAAQ,gDACR4kM,OAAQ,sBACR+64B,YAAa,WACb71nC,MAAO,SAAU0f,EAAOq+X,GACvBl0L,EAAKor5B,UAAWh4gC,EAAG1pF,MAAQ,sBAC3Bs2M,EAAK6s6B,eACL7s6B,EAAK4uuB,SAAU,YAAa/46B,EAAO6gnC,EAAYxivB,GAChD,EACAqsE,KAAM,SAAU1qc,EAAOq+X,GACtBl0L,EAAK4uuB,SAAU,OAAQ/46B,EAAO6gnC,EAAYxivB,GAC3C,EACA9kY,KAAM,SAAUyG,EAAOq+X,GACtB,IAAIrgZ,EAAOqgZ,EAAG5lZ,OAAOuF,KAAOmsN,EAAK7tN,SAASsE,aACzC/C,EAAMwgZ,EAAG5lZ,OAAOoF,IAAMssN,EAAK7tN,SAASwE,YAErC2C,EAAQ9G,SAAW,CAClB8nmB,GAAI,WACJlgO,GAAI,QAAWvmY,GAAQ,EAAI,IAAM,IAAOA,EAApC,QACOH,GAAO,EAAI,IAAM,IAAOA,EACnCgpQ,GAAI18C,EAAKnvN,QAEVmvN,EAAKyq5B,aAAcr3gC,EAAG1pF,MAAQ,sBAC9Bs2M,EAAK+s6B,iBACL/s6B,EAAK4uuB,SAAU,WAAY/46B,EAAO6gnC,EAAYxivB,GAC/C,GAEF,EAEA+gvB,eAAgB,WACf,IAAIj16B,EAAOt2M,KACVpQ,EAAUoQ,KAAKpQ,QACf82nC,EAAU92nC,EAAQk3nC,UAIlBh+nC,EAAWkX,KAAKmrnC,SAAShioC,IAAK,YAC9B8joC,EAAmC,iBAAZvG,EACtBA,EACA,sBAEF,SAASsG,EAAYxivB,GACpB,MAAO,CACNo9E,iBAAkBp9E,EAAGo9E,iBACrB54C,aAAcxkC,EAAGwkC,aACjBlmb,SAAU0hZ,EAAG1hZ,SACbiqB,KAAMy3X,EAAGz3X,KAEX,CAEA/S,KAAKmrnC,SAASrE,UAAW,CACxBnklC,OAAQ,qBACR2/kC,YAAa,WACb+D,WAAYrmnC,KAAK1Z,QACjBsqC,SAAUhhC,EAAQghC,SAClB2nB,UAAW3oD,EAAQ2oD,UACnBu9gB,SAAUlmkB,EAAQkmkB,SAClB6yb,UAAW3o/B,KAAKktnC,aAChBxG,QAASuG,EACTxgoC,MAAO,SAAU0f,EAAOq+X,GACvBl0L,EAAKor5B,UAAWh4gC,EAAG1pF,MAAQ,sBAC3Bs2M,EAAK6s6B,eACL7s6B,EAAK4uuB,SAAU,cAAe/46B,EAAO6gnC,EAAYxivB,GAClD,EACAvyY,OAAQ,SAAUkU,EAAOq+X,GACxBl0L,EAAK4uuB,SAAU,SAAU/46B,EAAO6gnC,EAAYxivB,GAC7C,EACA9kY,KAAM,SAAUyG,EAAOq+X,GACtB,IAAI5lZ,EAAS0xN,EAAK606B,SAASvmoC,SAC1BuF,EAAOvF,EAAOuF,KAAOmsN,EAAK7tN,SAASsE,aACnC/C,EAAMpF,EAAOoF,IAAMssN,EAAK7tN,SAASwE,YAElC2C,EAAQhJ,OAAS0vN,EAAK606B,SAASvkoC,SAC/BgJ,EAAQlJ,MAAQ4vN,EAAK606B,SAASzkoC,QAC9BkJ,EAAQ9G,SAAW,CAClB8nmB,GAAI,WACJlgO,GAAI,QAAWvmY,GAAQ,EAAI,IAAM,IAAOA,EAApC,QACOH,GAAO,EAAI,IAAM,IAAOA,EACnCgpQ,GAAI18C,EAAKnvN,QAEVmvN,EAAKyq5B,aAAcr3gC,EAAG1pF,MAAQ,sBAC9Bs2M,EAAK+s6B,iBACL/s6B,EAAK4uuB,SAAU,aAAc/46B,EAAO6gnC,EAAYxivB,GACjD,IAECrhZ,IAAK,WAAYL,EACpB,EAEA2ioC,YAAa,WACZzrnC,KAAKgszB,IAAKhszB,KAAK6mW,SAAU,CACxB23nB,QAAS,SAAUry9B,GAClBnM,KAAKosnC,mBACLpsnC,KAAK4rnC,gBAAkBliiC,EAAGv9E,EAAMpe,OACjC,GAEF,EAEAq+nC,iBAAkB,WACjBpsnC,KAAK0rnC,mBACL1rnC,KAAKmtnC,qBAAqBh2iC,QAASn3E,KACpC,EAEA0rnC,iBAAkB,WACjB,IAAInvjC,EAAYv8D,KAAKmtnC,qBACpBvrzB,EAASl4O,EAAE6rI,QAASv1N,KAAMu8D,IACV,IAAZqlQ,GACJrlQ,EAAUxvC,OAAQ60S,EAAQ,EAE5B,EAEAurzB,mBAAoB,WACnB,IAAI5wjC,EAAYv8D,KAAKvX,SAASsN,KAAM,uBAKpC,OAJMwmE,IACLA,EAAY,GACZv8D,KAAKvX,SAASsN,KAAM,sBAAuBwmE,IAErCA,CACR,EAEA2wjC,WAAY,WACX,IAAIt9nC,EAAUoQ,KAAKpQ,QAEnB,MAA0B,SAAnBA,EAAQhJ,OACdgJ,EAAQ+4/B,UACRnjgC,KAAKkE,IAAKkG,EAAQ+4/B,UAAW/4/B,EAAQhJ,OACvC,EAEAi9a,UAAW,WAGV,IAAI3N,EAAYl2Z,KAAKmrnC,SAASlmgC,GAAI,YAC5BixS,GACLl2Z,KAAKmrnC,SAASvmlC,OAEf5kC,KAAKmrnC,SAASrioC,SAAUkX,KAAKpQ,QAAQ9G,UAC/Bota,GACLl2Z,KAAKmrnC,SAASpmlC,MAEhB,EAEAk8jC,YAAa,SAAUrxmC,GACtB,IAAI0mN,EAAOt2M,KACV/H,GAAS,EACTm1nC,EAAmB,CAAC,EAErB1jiC,EAAE94E,KAAMhhB,EAAS,SAAUpF,EAAK7E,GAC/B2wN,EAAK4q5B,WAAY12mC,EAAK7E,GAEjB6E,KAAO8rN,EAAKw06B,qBAChB7ynC,GAAS,GAELzN,KAAO8rN,EAAKy06B,0BAChBqC,EAAkB5ioC,GAAQ7E,EAE5B,GAEKsS,IACJ+H,KAAKkyE,QACLlyE,KAAK6ja,aAED7ja,KAAKmrnC,SAASlmgC,GAAI,wBACtBjlH,KAAKmrnC,SAASrE,UAAW,SAAUsG,EAErC,EAEAlsB,WAAY,SAAU12mC,EAAK7E,GAC1B,IAAIo1jB,EAAasykB,EAChBlC,EAAWnrnC,KAAKmrnC,SAEJ,aAAR3goC,IAILwV,KAAKgE,OAAQxZ,EAAK7E,GAEL,aAAR6E,GACJwV,KAAKmrnC,SAASxte,SAAU39oB,KAAK4wmC,aAGjB,YAARpmnC,GACJwV,KAAK8snC,iBAGO,cAARtioC,GACJwV,KAAKssnC,sBAAsBp61B,OAAQ,CAGlCrwR,MAAO6nF,EAAG,OAAQ55D,KAAM,GAAK9vB,KAAKpQ,QAAQ4p5B,WAAYxw5B,SAI3C,cAARwB,KACJuwjB,EAAcowkB,EAASlmgC,GAAI,0BACNt/H,GACpBwloC,EAAS1/yB,UAAW,YAGfsvO,GAAep1jB,GACpBqa,KAAKsrnC,kBAIM,aAAR9goC,GACJwV,KAAK6ja,YAGO,cAARr5a,KAGJ6ioC,EAAclC,EAASlmgC,GAAI,0BACNt/H,GACpBwloC,EAASrE,UAAW,WAIhBuG,GAAgC,iBAAV1noC,GAC1BwloC,EAASrE,UAAW,SAAU,UAAWnhoC,GAIpC0noC,IAAyB,IAAV1noC,GACpBqa,KAAKurnC,kBAIM,UAAR/goC,GACJwV,KAAK4snC,OAAQ5snC,KAAK2snC,iBAAiB9xnC,KAAM,qBAE3C,EAEAq3E,MAAO,WAIN,IAAIo7iC,EAAkBC,EAAkBpjI,EACvCv6/B,EAAUoQ,KAAKpQ,QAGhBoQ,KAAK1Z,QAAQs+C,OAAOz7C,IAAK,CACxBzC,MAAO,OACPiigC,UAAW,EACXpw8B,UAAW,OACX3xD,OAAQ,IAGJgJ,EAAQkmkB,SAAWlmkB,EAAQlJ,QAC/BkJ,EAAQlJ,MAAQkJ,EAAQkmkB,UAKzBw3jB,EAAmBttnC,KAAKmrnC,SAAShioC,IAAK,CACrCvC,OAAQ,OACRF,MAAOkJ,EAAQlJ,QAEd+5D,cACF8skC,EAAmB/noC,KAAKmE,IAAK,EAAGiG,EAAQ+4/B,UAAY2kI,GACpDnjI,EAAgD,iBAAtBv6/B,EAAQ2oD,UACjC/yD,KAAKmE,IAAK,EAAGiG,EAAQ2oD,UAAY+0kC,GACjC,OAEuB,SAAnB19nC,EAAQhJ,OACZoZ,KAAK1Z,QAAQ6C,IAAK,CACjBw//B,UAAW4kI,EACXh1kC,UAAW4x8B,EACXvjgC,OAAQ,SAGToZ,KAAK1Z,QAAQM,OAAQpB,KAAKmE,IAAK,EAAGiG,EAAQhJ,OAAS0moC,IAG/CttnC,KAAKmrnC,SAASlmgC,GAAI,wBACtBjlH,KAAKmrnC,SAASrE,UAAW,SAAU,YAAa9mnC,KAAKktnC,aAEvD,EAEA/J,aAAc,WACbnjnC,KAAKojnC,aAAepjnC,KAAKvX,SAASoS,KAAM,UAAW9H,IAAK,WACvD,IAAIo0G,EAASzd,EAAG1pF,MAEhB,OAAO0pF,EAAG,SACRvgG,IAAK,CACLL,SAAU,WACVpC,MAAOygH,EAAO5mD,aACd35D,OAAQugH,EAAO1mD,gBAEfk9lB,SAAUx2iB,EAAO1/G,UACjB7C,OAAQuiH,EAAOviH,UAAY,EAC9B,EACD,EAEAy+nC,eAAgB,WACVrjnC,KAAKojnC,eACTpjnC,KAAKojnC,aAAaxglC,gBACX5iC,KAAKojnC,aAEd,EAEAoK,kBAAmB,SAAUrhnC,GAC5B,QAAKu9E,EAAGv9E,EAAMpe,QAAS4/M,QAAS,cAAev5M,UAMtCs1F,EAAGv9E,EAAMpe,QAAS4/M,QAAS,kBAAmBv5M,MACxD,EAEA83nC,eAAgB,WACf,GAAMlsnC,KAAKpQ,QAAQwv5B,MAAnB,CAMA,IAAIquO,GAAY,EAChBztnC,KAAKy1kB,OAAQ,WACZg4iB,GAAY,CACb,GAEMztnC,KAAKvX,SAASsN,KAAM,uBAKzBiK,KAAKgszB,IAAKhszB,KAAKvX,SAAU,CACxB+1+B,QAAS,SAAUry9B,GACbshnC,GAICztnC,KAAKwtnC,kBAAmBrhnC,KAC7BA,EAAMwgH,iBACN3sH,KAAKmtnC,qBAAsB,GAAIlB,iBAEjC,IAIFjsnC,KAAKw4N,QAAU9uI,EAAG,SAChBi0jB,SAAU39oB,KAAK4wmC,aAEjB5wmC,KAAK0hmC,UAAW1hmC,KAAKw4N,QAAS,KAAM,8BACpCx4N,KAAKgszB,IAAKhszB,KAAKw4N,QAAS,CACvBimQ,UAAW,eAEZz+d,KAAKvX,SAASsN,KAAM,sBACjBiK,KAAKvX,SAASsN,KAAM,uBAA0B,GAAM,EApCvD,CAqCD,EAEA41nC,gBAAiB,WAChB,GAAM3rnC,KAAKpQ,QAAQwv5B,OAIdp/4B,KAAKw4N,QAAU,CACnB,IAAI6tmB,EAAWrm0B,KAAKvX,SAASsN,KAAM,sBAAyB,EAEtDsw0B,EAILrm0B,KAAKvX,SAASsN,KAAM,qBAAsBsw0B,IAH1Crm0B,KAAKu1Z,KAAMv1Z,KAAKvX,SAAU,WAC1BuX,KAAKvX,SAASw5Q,WAAY,uBAK3BjiQ,KAAKw4N,QAAQ51L,SACb5iC,KAAKw4N,QAAU,IAChB,CACD,KAKuB,IAAnB9uI,EAAE89gC,cAGN99gC,EAAEm9Q,OAAQ,YAAan9Q,EAAE8gT,GAAG87jB,OAAQ,CACnC128B,QAAS,CACR458B,YAAa,IAEd0hL,eAAgB,WACflrnC,KAAKgE,SACLhE,KAAKmrnC,SAASlhhC,SAAUjqG,KAAKpQ,QAAQ458B,YACtC,EACA03J,WAAY,SAAU12mC,EAAK7E,GACb,gBAAR6E,GACJwV,KAAKmrnC,SACHzhhC,YAAa1pG,KAAKpQ,QAAQ458B,aAC1Bv/1B,SAAUtkH,GAEbqa,KAAK8/lC,YAAa3rmC,UACnB,IAIkBu1F,EAAE8gT,GAAG87jB,OAoBzB582B,EAAEm9Q,OAAQ,eAAgB,CACzBhiS,QAAS,SACTo7hC,kBAAmB,OACnBrwmC,QAAS,CACRgoX,OAAQ,IACRjmQ,YAAY,EACZ+7gC,QAAQ,EACR/kmC,MAAO,UACP00oB,UAAW,YAGXvgB,SAAU,KACV6we,WAAY,KACZ1jnB,KAAM,KACNxga,IAAK,KACL6pjB,KAAM,MAEP2xR,QAAS,WAER,IAAI2oM,EACHjqjC,EAAI3jE,KAAKpQ,QACTgoX,EAASj0S,EAAEi0S,OAEZ53W,KAAK6tnC,QAAS,EACd7tnC,KAAK8tnC,OAAQ,EAEb9tnC,KAAK43W,OAASluR,EAAE72E,WAAY+kW,GAAWA,EAAS,SAAUr0X,GACzD,OAAOA,EAAE0hI,GAAI2yP,EACd,EAEA53W,KAAK4tnC,YAAc,WAClB,IAAKz5nC,UAAUC,OAOd,OAAOw5nC,IAENA,EAAc,CACblnoC,MAAOsZ,KAAK1Z,QAAS,GAAIK,YACzBC,OAAQoZ,KAAK1Z,QAAS,GAAIO,eAR5B+moC,EAAcz5nC,UAAW,EAW3B,EAEA6L,KAAK+tnC,cAAepqjC,EAAEh7C,OAEtBg7C,EAAEguC,YAAc3xG,KAAK0hmC,UAAW,eAEjC,EAEAqsB,cAAe,SAAUplmC,GAGxB+gE,EAAE8gT,GAAGg5uB,UAAU/uc,WAAY9rpB,GAAU+gE,EAAE8gT,GAAGg5uB,UAAU/uc,WAAY9rpB,IAAW,GAC3E+gE,EAAE8gT,GAAGg5uB,UAAU/uc,WAAY9rpB,GAAQ70B,KAAMkM,KAC1C,EAEAgunC,QAAS,SAAU/jnB,GAElB,IADA,IAAI5khB,EAAI,EACAA,EAAI4khB,EAAK71gB,OAAQ/O,IACnB4khB,EAAM5khB,KAAQ2a,MAClBiqgB,EAAKl9e,OAAQ1nC,EAAG,EAGnB,EAEA2lD,SAAU,WACT,IAAIi/d,EAAOvgb,EAAE8gT,GAAGg5uB,UAAU/uc,WAAYz0qB,KAAKpQ,QAAQ+4B,OAEnD3oB,KAAKgunC,QAAS/jnB,EACf,EAEAi3lB,WAAY,SAAU12mC,EAAK7E,GAE1B,GAAa,WAAR6E,EACJwV,KAAK43W,OAASluR,EAAE72E,WAAYltB,GAAUA,EAAQ,SAAUpC,GACvD,OAAOA,EAAE0hI,GAAIt/H,EACd,OACM,GAAa,UAAR6E,EAAkB,CAC7B,IAAIy/gB,EAAOvgb,EAAE8gT,GAAGg5uB,UAAU/uc,WAAYz0qB,KAAKpQ,QAAQ+4B,OAEnD3oB,KAAKgunC,QAAS/jnB,GACdjqgB,KAAK+tnC,cAAepooC,EACrB,CAEAqa,KAAKgE,OAAQxZ,EAAK7E,EACnB,EAEA0mnC,UAAW,SAAUlgmC,GACpB,IAAIs/T,EAAY/hP,EAAE8gT,GAAGg5uB,UAAU3tnC,QAE/BmK,KAAKiunC,kBACAxizB,GACJzrU,KAAKkl7B,SAAU,WAAY/46B,EAAOnM,KAAKwqY,GAAI/+D,GAE7C,EAEAyizB,YAAa,SAAU/hnC,GACtB,IAAIs/T,EAAY/hP,EAAE8gT,GAAGg5uB,UAAU3tnC,QAE/BmK,KAAKmunC,qBACA1izB,GACJzrU,KAAKkl7B,SAAU,aAAc/46B,EAAOnM,KAAKwqY,GAAI/+D,GAE/C,EAEA2izB,MAAO,SAAUjinC,GAEhB,IAAIs/T,EAAY/hP,EAAE8gT,GAAGg5uB,UAAU3tnC,QAGzB41U,IAAeA,EAAUmohB,aAC7BnohB,EAAUnlV,SAAW,KAAQ0Z,KAAK1Z,QAAS,IAIxC0Z,KAAK43W,OAAOv3W,KAAML,KAAK1Z,QAAS,GAAOmlV,EAAUmohB,aACpDnohB,EAAUnlV,WACX0Z,KAAKqunC,iBACLrunC,KAAKkl7B,SAAU,OAAQ/46B,EAAOnM,KAAKwqY,GAAI/+D,IAGzC,EAEA6izB,KAAM,SAAUninC,GAEf,IAAIs/T,EAAY/hP,EAAE8gT,GAAGg5uB,UAAU3tnC,QAGzB41U,IAAeA,EAAUmohB,aAC7BnohB,EAAUnlV,SAAW,KAAQ0Z,KAAK1Z,QAAS,IAIxC0Z,KAAK43W,OAAOv3W,KAAML,KAAK1Z,QAAS,GAAOmlV,EAAUmohB,aACpDnohB,EAAUnlV,WACX0Z,KAAKuunC,oBACLvunC,KAAKkl7B,SAAU,MAAO/46B,EAAOnM,KAAKwqY,GAAI/+D,IAGxC,EAEA+izB,MAAO,SAAUrinC,EAAOkmC,GAEvB,IAAIo5R,EAAYp5R,GAAUq3C,EAAE8gT,GAAGg5uB,UAAU3tnC,QACxC44nC,GAAuB,EAGxB,SAAMhjzB,IAAeA,EAAUmohB,aAC7BnohB,EAAUnlV,SAAW,KAAQ0Z,KAAK1Z,QAAS,MAI7C0Z,KAAK1Z,QACHuU,KAAM,uBACNmiO,IAAK,0BACLpsN,KAAM,WACN,IAAI60lC,EAAO/7gC,EAAG1pF,MAAOq4hB,UAAW,YAChC,GACCotkB,EAAK71mC,QAAQ89nC,SACZjoB,EAAK71mC,QAAQo+C,UACdy3jC,EAAK71mC,QAAQ+4B,QAAU8iT,EAAU77U,QAAQ+4B,OACzC88kC,EAAK7tvB,OAAOv3W,KACXolmC,EAAKn/mC,QAAS,GAAOmlV,EAAUmohB,aAAenohB,EAAUnlV,UAEzD8jC,EACCqhT,EACA/hP,EAAEsZ,OAAQyigC,EAAM,CAAE7gnC,OAAQ6gnC,EAAKn/mC,QAAQ1B,WACvC6gnC,EAAK71mC,QAAQytqB,UAAWlxpB,GAIzB,OADAsinC,GAAuB,GAChB,CACT,IACIA,KAIAzunC,KAAK43W,OAAOv3W,KAAML,KAAK1Z,QAAS,GACjCmlV,EAAUmohB,aAAenohB,EAAUnlV,WACtC0Z,KAAKmunC,qBACLnunC,KAAKuunC,oBAELvunC,KAAKkl7B,SAAU,OAAQ/46B,EAAOnM,KAAKwqY,GAAI/+D,IAChCzrU,KAAK1Z,SAKd,EAEAkkZ,GAAI,SAAU5kZ,GACb,MAAO,CACN6lV,UAAa7lV,EAAEgu2B,aAAehu2B,EAAEU,QAChC+1pB,OAAQz2pB,EAAEy2pB,OACVvzpB,SAAUlD,EAAEkD,SACZlE,OAAQgB,EAAE+9nC,YAEZ,EAIA0K,eAAgB,WACfrunC,KAAK0hmC,UAAW,qBACjB,EAEA6sB,kBAAmB,WAClBvunC,KAAK+gmC,aAAc,qBACpB,EAEAktB,gBAAiB,WAChBjunC,KAAK0hmC,UAAW,sBACjB,EAEAysB,mBAAoB,WACnBnunC,KAAK+gmC,aAAc,sBACpB,IAGD,IAkpIMlhI,EAlpIFz18B,EAAYs/D,EAAE8gT,GAAGpgX,UAAY,WAChC,SAASskmC,EAAYnooC,EAAG4I,EAAW4jB,GAClC,OAASxsB,GAAK4I,GAAiB5I,EAAM4I,EAAY4jB,CAClD,CAEA,OAAO,SAAU04T,EAAW4sN,EAAWs2lB,EAAexinC,GAErD,IAAMkshB,EAAUzziB,OACf,OAAO,EAGR,IAAIuuE,GAAOs4Q,EAAUk4yB,aACnBl4yB,EAAU3iV,SAASi6U,UAAW54U,KAAOshV,EAAUrkR,QAAQj9D,KACxDipE,GAAOq4Q,EAAUk4yB,aAChBl4yB,EAAU3iV,SAASi6U,UAAW/4U,IAAMyhV,EAAUrkR,QAAQp9D,IACvDqpE,EAAKF,EAAKs4Q,EAAUq5yB,kBAAkBp+nC,MACtC4sE,EAAKF,EAAKq4Q,EAAUq5yB,kBAAkBl+nC,OACtC4xB,EAAI6/gB,EAAUzziB,OAAOuF,KACrByW,EAAIy3hB,EAAUzziB,OAAOoF,IACrB+vB,EAAIvB,EAAI6/gB,EAAUu1lB,cAAclnoC,MAChCmT,EAAI+G,EAAIy3hB,EAAUu1lB,cAAchnoC,OAEjC,OAAS+noC,GACT,IAAK,MACJ,OAASn2mC,GAAK26C,GAAME,GAAMt5C,GAAKnZ,GAAKwyD,GAAME,GAAMz5D,EACjD,IAAK,YACJ,OAAS2e,EAAI26C,EAAOs4Q,EAAUq5yB,kBAAkBp+nC,MAAQ,GACvD2sE,EAAOo4Q,EAAUq5yB,kBAAkBp+nC,MAAQ,EAAMqzB,GACjDnZ,EAAIwyD,EAAOq4Q,EAAUq5yB,kBAAkBl+nC,OAAS,GAChD0sE,EAAOm4Q,EAAUq5yB,kBAAkBl+nC,OAAS,EAAMiT,EACpD,IAAK,UACJ,OAAO60nC,EAAYvinC,EAAM25a,MAAOllb,EAAGy3hB,EAAUu1lB,cAAchnoC,SAC1D8noC,EAAYvinC,EAAM05a,MAAOrta,EAAG6/gB,EAAUu1lB,cAAclnoC,OACtD,IAAK,QACJ,OACG0sE,GAAMxyD,GAAKwyD,GAAMv5D,GACjBy5D,GAAM1yD,GAAK0yD,GAAMz5D,GACjBu5D,EAAKxyD,GAAK0yD,EAAKz5D,KAEfs5D,GAAM36C,GAAK26C,GAAMp5C,GACjBs5C,GAAM76C,GAAK66C,GAAMt5C,GACjBo5C,EAAK36C,GAAK66C,EAAKt5C,GAEnB,QACC,OAAO,EAET,CACC,CA/C+B,GA2kHjC,SAAS60mC,EAAgB95nC,GACxB,OAAO,WACN,IAAIs6B,EAAWpvB,KAAK1Z,QAAQqhC,MAC5B7yB,EAAGgM,MAAOd,KAAM7L,WAChB6L,KAAK2hC,WACAvS,IAAapvB,KAAK1Z,QAAQqhC,OAC9B3nB,KAAKkl7B,SAAU,SAEjB,CACD,CAhiHAx71B,EAAE8gT,GAAGg5uB,UAAY,CAChB3tnC,QAAS,KACT4+qB,WAAY,CAAE,QAAW,IACzB0vc,eAAgB,SAAUvjnC,EAAGuL,GAE5B,IAAI9mB,EAAG2gC,EACN7iC,EAAIumG,EAAE8gT,GAAGg5uB,UAAU/uc,WAAY7zqB,EAAEhR,QAAQ+4B,QAAW,GACpD3Y,EAAO7D,EAAQA,EAAM6D,KAAO,KAC5BpiB,GAASgT,EAAEgz1B,aAAehz1B,EAAEta,SAAUuU,KAAM,uBAAwB209B,UAErEq/J,EAAgB,IAAMxpoC,EAAI,EAAGA,EAAIlC,EAAEiR,OAAQ/O,IAG1C,KAAKlC,EAAGkC,GAAIuK,QAAQo+C,UAAcptC,IAAMzd,EAAGkC,GAAIuyX,OAAOv3W,KAAMld,EAAGkC,GAAIiB,QAAS,GACxEsa,EAAEgz1B,aAAehz1B,EAAEta,UADvB,CAMA,IAAM0/B,EAAI,EAAGA,EAAIp4B,EAAKwG,OAAQ4xB,IAC7B,GAAKp4B,EAAMo4B,KAAQ7iC,EAAGkC,GAAIiB,QAAS,GAAM,CACxCnD,EAAGkC,GAAIuooC,cAAchnoC,OAAS,EAC9B,SAASiooC,CACV,CAGD1roC,EAAGkC,GAAIy/C,QAA8C,SAApC3hD,EAAGkC,GAAIiB,QAAQ6C,IAAK,WAC/BhG,EAAGkC,GAAIy/C,UAKC,cAAT90B,GACJ7sB,EAAGkC,GAAIgnnC,UAAUhsmC,KAAMld,EAAGkC,GAAK8mB,GAGhChpB,EAAGkC,GAAIT,OAASzB,EAAGkC,GAAIiB,QAAQ1B,SAC/BzB,EAAGkC,GAAIuooC,YAAa,CACnBlnoC,MAAOvD,EAAGkC,GAAIiB,QAAS,GAAIK,YAC3BC,OAAQzD,EAAGkC,GAAIiB,QAAS,GAAIO,eAvB7B,CA4BF,EACAojhB,KAAM,SAAUx+L,EAAWt/T,GAE1B,IAAIu4mC,GAAU,EAqBd,OAlBAh7hC,EAAE94E,MAAQ84E,EAAE8gT,GAAGg5uB,UAAU/uc,WAAYhpW,EAAU77U,QAAQ+4B,QAAW,IAAK7tB,QAAS,WAEzEkF,KAAKpQ,WAGLoQ,KAAKpQ,QAAQo+C,UAAYhuC,KAAK8kC,SAClC1a,EAAWqhT,EAAWzrU,KAAMA,KAAKpQ,QAAQytqB,UAAWlxpB,KACrDu4mC,EAAU1knC,KAAKwunC,MAAMnunC,KAAML,KAAMmM,IAAWu4mC,IAGvC1knC,KAAKpQ,QAAQo+C,UAAYhuC,KAAK8kC,SAAW9kC,KAAK43W,OAAOv3W,KAAML,KAAK1Z,QAAS,GAC3EmlV,EAAUmohB,aAAenohB,EAAUnlV,WACtC0Z,KAAK8tnC,OAAQ,EACb9tnC,KAAK6tnC,QAAS,EACd7tnC,KAAKkunC,YAAY7tnC,KAAML,KAAMmM,IAG/B,GACOu4mC,CAER,EACAN,UAAW,SAAU34yB,EAAWt/T,GAI/Bs/T,EAAUnlV,QAAQmp+B,aAAc,QAAS9k3B,GAAI,mBAAoB,WAC1D8gO,EAAU77U,QAAQ6ynC,kBACvB/4hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgB14yB,EAAWt/T,EAE5C,EACD,EACA0qc,KAAM,SAAUprI,EAAWt/T,GAIrBs/T,EAAU77U,QAAQ6ynC,kBACtB/4hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgB14yB,EAAWt/T,GAI3Cu9E,EAAE94E,KAAM84E,EAAE8gT,GAAGg5uB,UAAU/uc,WAAYhpW,EAAU77U,QAAQ+4B,QAAW,GAAI,WAEnE,IAAK3oB,KAAKpQ,QAAQo+C,WAAYhuC,KAAK8unC,aAAgB9unC,KAAK8kC,QAAxD,CAIA,IAAIiqlC,EAAgBpmmC,EAAOlhC,EAC1B2zZ,EAAahxX,EAAWqhT,EAAWzrU,KAAMA,KAAKpQ,QAAQytqB,UAAWlxpB,GACjEvmB,GAAKw1Z,GAAcp7Y,KAAK6tnC,OACvB,QACEzyuB,IAAep7Y,KAAK6tnC,OAAS,SAAW,KACtCjooC,IAIDoa,KAAKpQ,QAAQ89nC,SAGjB/kmC,EAAQ3oB,KAAKpQ,QAAQ+4B,OACrBlhC,EAASuY,KAAK1Z,QAAQkiH,QAAS,uBAAwBv3G,OAAQ,WAC9D,OAAOy4F,EAAG1pF,MAAOq4hB,UAAW,YAAazoiB,QAAQ+4B,QAAUA,CAC5D,IAEYv0B,UACX26nC,EAAiBrliC,EAAGjiG,EAAQ,IAAM4wiB,UAAW,aAC9By2lB,YAAsB,WAANlpoC,IAK5BmpoC,GAAwB,WAANnpoC,IACtBmpoC,EAAelB,QAAS,EACxBkB,EAAejB,OAAQ,EACvBiB,EAAeT,KAAKjunC,KAAM0unC,EAAgB5inC,IAG3CnM,KAAMpa,IAAM,EACZoa,KAAY,UAANpa,EAAgB,SAAW,UAAY,EAC7Coa,KAAY,WAANpa,EAAiB,QAAU,QAASya,KAAML,KAAMmM,GAGjD4inC,GAAwB,UAANnpoC,IACtBmpoC,EAAejB,OAAQ,EACvBiB,EAAelB,QAAS,EACxBkB,EAAeX,MAAM/tnC,KAAM0unC,EAAgB5inC,IAxC5C,CA0CD,EAED,EACAw4mC,SAAU,SAAUl5yB,EAAWt/T,GAC9Bs/T,EAAUnlV,QAAQmp+B,aAAc,QAASxi2B,IAAK,oBAIxCw+M,EAAU77U,QAAQ6ynC,kBACvB/4hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgB14yB,EAAWt/T,EAE5C,IAKuB,IAAnBu9E,EAAE89gC,cAGN99gC,EAAEm9Q,OAAQ,eAAgBn9Q,EAAE8gT,GAAG6tJ,UAAW,CACzCzoiB,QAAS,CACRo/nC,YAAY,EACZ7hP,aAAa,GAEd8gP,gBAAiB,WAChBjunC,KAAKgE,SACAhE,KAAKpQ,QAAQu94B,aACjBnt4B,KAAK1Z,QAAQ2jH,SAAUjqG,KAAKpQ,QAAQu94B,YAEtC,EACAghP,mBAAoB,WACnBnunC,KAAKgE,SACAhE,KAAKpQ,QAAQu94B,aACjBnt4B,KAAK1Z,QAAQojH,YAAa1pG,KAAKpQ,QAAQu94B,YAEzC,EACAkhP,eAAgB,WACfrunC,KAAKgE,SACAhE,KAAKpQ,QAAQo/nC,YACjBhvnC,KAAK1Z,QAAQ2jH,SAAUjqG,KAAKpQ,QAAQo/nC,WAEtC,EACAT,kBAAmB,WAClBvunC,KAAKgE,SACAhE,KAAKpQ,QAAQo/nC,YACjBhvnC,KAAK1Z,QAAQojH,YAAa1pG,KAAKpQ,QAAQo/nC,WAEzC,IAIqBtliC,EAAE8gT,GAAG6tJ,UAyBH3uc,EAAEm9Q,OAAQ,iBAAkB,CACpDhiS,QAAS,SACTj1E,QAAS,CACRy9G,QAAS,CACR,iBAAkB,gBAClB,uBAAwB,iBACxB,0BAA2B,mBAE5B1jH,IAAK,IACLhE,MAAO,EAEP29D,OAAQ,KACRjhB,SAAU,MAGX34C,IAAK,EAELu77B,QAAS,WAGRjl7B,KAAKuhR,SAAWvhR,KAAKpQ,QAAQjK,MAAQqa,KAAKivnC,oBAE1CjvnC,KAAK1Z,QAAQixQ,KAAM,CAIlBj5P,KAAM,cACN,gBAAiB0B,KAAKtW,MAEvBsW,KAAK0hmC,UAAW,iBAAkB,+BAElC1hmC,KAAKkvnC,SAAWxliC,EAAG,SAAUi0jB,SAAU39oB,KAAK1Z,SAC5C0Z,KAAK0hmC,UAAW1hmC,KAAKkvnC,SAAU,uBAAwB,oBACvDlvnC,KAAKmvnC,eACN,EAEAnklC,SAAU,WACThrC,KAAK1Z,QAAQ+7Q,WAAY,kDAEzBriQ,KAAKkvnC,SAAStslC,QACf,EAEAj9C,MAAO,SAAU8oI,GAChB,QAAkB33H,IAAb23H,EACJ,OAAOzuH,KAAKpQ,QAAQjK,MAGrBqa,KAAKpQ,QAAQjK,MAAQqa,KAAKivnC,kBAAmBxggC,GAC7CzuH,KAAKmvnC,eACN,EAEAF,kBAAmB,SAAUxggC,GAY5B,YAXkB33H,IAAb23H,IACJA,EAAWzuH,KAAKpQ,QAAQjK,OAGzBqa,KAAKovnC,eAA6B,IAAb3ggC,EAGI,iBAAbA,IACXA,EAAW,IAGLzuH,KAAKovnC,eACX5poC,KAAKkE,IAAKsW,KAAKpQ,QAAQjG,IAAKnE,KAAKmE,IAAKqW,KAAKtW,IAAK+kI,GAClD,EAEAwy+B,YAAa,SAAUrxmC,GAGtB,IAAIjK,EAAQiK,EAAQjK,aACbiK,EAAQjK,MAEfqa,KAAKgE,OAAQpU,GAEboQ,KAAKpQ,QAAQjK,MAAQqa,KAAKivnC,kBAAmBtpoC,GAC7Cqa,KAAKmvnC,eACN,EAEAjuB,WAAY,SAAU12mC,EAAK7E,GACb,QAAR6E,IAGJ7E,EAAQH,KAAKmE,IAAKqW,KAAKtW,IAAK/D,IAE7Bqa,KAAKgE,OAAQxZ,EAAK7E,EACnB,EAEAk7mC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAK1Z,QAAQixQ,KAAM,gBAAiB5xQ,GACpCqa,KAAKshmC,aAAc,KAAM,sBAAuB37mC,EACjD,EAEA0poC,YAAa,WACZ,OAAOrvnC,KAAKovnC,cACX,IACA,KAAQpvnC,KAAKpQ,QAAQjK,MAAQqa,KAAKtW,MAAUsW,KAAKpQ,QAAQjG,IAAMqW,KAAKtW,IACtE,EAEAyloC,cAAe,WACd,IAAIxpoC,EAAQqa,KAAKpQ,QAAQjK,MACxBqksB,EAAahqrB,KAAKqvnC,cAEnBrvnC,KAAKkvnC,SACHln4B,OAAQhoP,KAAKovnC,eAAiBzpoC,EAAQqa,KAAKtW,KAC3ChD,MAAOsjsB,EAAWjsjB,QAAS,GAAM,KAEnC/9H,KACEshmC,aAActhmC,KAAKkvnC,SAAU,0BAA2B,KACxDvpoC,IAAUqa,KAAKpQ,QAAQjG,KACvB23mC,aAAc,+BAAgC,KAAMthmC,KAAKovnC,eAEtDpvnC,KAAKovnC,eACTpvnC,KAAK1Z,QAAQ+7Q,WAAY,iBACnBriQ,KAAKsvnC,aACVtvnC,KAAKsvnC,WAAa5liC,EAAG,SAAUi0jB,SAAU39oB,KAAKkvnC,UAC9ClvnC,KAAK0hmC,UAAW1hmC,KAAKsvnC,WAAY,6BAGlCtvnC,KAAK1Z,QAAQixQ,KAAM,CAClB,gBAAiBv3P,KAAKpQ,QAAQjG,IAC9B,gBAAiBhE,IAEbqa,KAAKsvnC,aACTtvnC,KAAKsvnC,WAAW1slC,SAChB5iC,KAAKsvnC,WAAa,OAIftvnC,KAAKuhR,WAAa57R,IACtBqa,KAAKuhR,SAAW57R,EAChBqa,KAAKkl7B,SAAU,WAEXv/7B,IAAUqa,KAAKpQ,QAAQjG,KAC3BqW,KAAKkl7B,SAAU,WAEjB,IAsBuBx71B,EAAEm9Q,OAAQ,gBAAiBn9Q,EAAE8gT,GAAGwtE,MAAO,CAC9DnzY,QAAS,SACTj1E,QAAS,CACR+tpB,SAAU,OACV4xe,aAAa,EACbh3nC,SAAU,EACVtH,OAAQ,IACRosqB,UAAW,QAGX16Z,SAAU,KACV6s3B,UAAW,KACX/ioC,MAAO,KACPiZ,KAAM,KACN+pnC,WAAY,KACZC,YAAa,MAEdzqM,QAAS,WACR,IAAI3uuB,EAAOt2M,KAEXA,KAAK0hmC,UAAW,iBAEhB1hmC,KAAK8+d,SAAU,EAGf9+d,KAAKuvQ,QAAU,WACdj5D,EAAKpnG,WAAaxlB,EAAG4sH,EAAKhwN,QAAS,IAAM1B,SACzC0xN,EAAKq56B,UAAYjmiC,EAAG4sH,EAAK1mN,QAAQqB,OAAQqlN,EAAKhwN,QAAS,IACvDgwN,EAAKor5B,UAAWpr5B,EAAKq56B,UAAW,eAChCr56B,EAAKq56B,UAAU/+mC,KAAM,WACpB,IAAI+hX,EAAQjpS,EAAG1pF,MACd4vnC,EAAiBj9vB,EAAM/tY,SACvB2tB,EAAM,CACLpoB,KAAMyloC,EAAezloC,KAAOmsN,EAAKpnG,WAAW/kH,KAC5CH,IAAK4loC,EAAe5loC,IAAMssN,EAAKpnG,WAAWllH,KAE5C0/F,EAAE3zF,KAAMiK,KAAM,kBAAmB,CAChC1Z,QAAS0Z,KACT+xQ,SAAU4gH,EACVxoY,KAAMooB,EAAIpoB,KACVH,IAAKuoB,EAAIvoB,IACTC,MAAOsoB,EAAIpoB,KAAOwoY,EAAMpyU,aACxBr2D,OAAQqoB,EAAIvoB,IAAM2oY,EAAMlyU,cACxBovkC,eAAe,EACflt3B,SAAUgwH,EAAMzoR,SAAU,eAC1BslhC,UAAW78vB,EAAMzoR,SAAU,gBAC3BwlhC,YAAa/8vB,EAAMzoR,SAAU,mBAE/B,EACD,EACAlqG,KAAKuvQ,UAELvvQ,KAAK07gB,aAEL17gB,KAAKq8oB,OAAS3yjB,EAAG,SACjB1pF,KAAK0hmC,UAAW1hmC,KAAKq8oB,OAAQ,uBAC9B,EAEArxmB,SAAU,WACThrC,KAAK2vnC,UAAU1t3B,WAAY,mBAC3BjiQ,KAAK27gB,eACN,EAEAmmmB,YAAa,SAAU31mC,GACtB,IAAImqM,EAAOt2M,KACVpQ,EAAUoQ,KAAKpQ,QAEhBoQ,KAAK8vnC,KAAO,CAAE3jnC,EAAM05a,MAAO15a,EAAM25a,OACjC9lb,KAAKkvG,WAAaxlB,EAAG1pF,KAAK1Z,QAAS,IAAM1B,SAEpCob,KAAKpQ,QAAQo+C,WAIlBhuC,KAAK2vnC,UAAYjmiC,EAAG95F,EAAQqB,OAAQ+O,KAAK1Z,QAAS,IAElD0Z,KAAKkl7B,SAAU,QAAS/46B,GAExBu9E,EAAG95F,EAAQ+tpB,UAAWpthB,OAAQvwH,KAAKq8oB,QAGnCr8oB,KAAKq8oB,OAAOlzpB,IAAK,CAChB,KAAQgjB,EAAM05a,MACd,IAAO15a,EAAM25a,MACb,MAAS,EACT,OAAU,IAGNl2b,EAAQ2/nC,aACZvvnC,KAAKuvQ,UAGNvvQ,KAAK2vnC,UAAU1+nC,OAAQ,gBAAiB2f,KAAM,WAC7C,IAAIm/mC,EAAWrmiC,EAAE3zF,KAAMiK,KAAM,mBAC7B+vnC,EAASF,eAAgB,EACnB1jnC,EAAM4lR,SAAY5lR,EAAM2lR,UAC7Bx7E,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,eACtCg+2B,EAASpt3B,UAAW,EACpBrsD,EAAKor5B,UAAWquB,EAASh+2B,SAAU,kBACnCg+2B,EAASL,aAAc,EAGvBp56B,EAAK4uuB,SAAU,cAAe/46B,EAAO,CACpCujnC,YAAaK,EAASzpoC,UAGzB,GAEAojG,EAAGv9E,EAAMpe,QAASy6G,UAAUgn3B,UAAU5+8B,KAAM,WAC3C,IAAIo/mC,EACHD,EAAWrmiC,EAAE3zF,KAAMiK,KAAM,mBAC1B,GAAK+vnC,EAmBJ,OAlBAC,GAAc7jnC,EAAM4lR,UAAY5lR,EAAM2lR,UACpCi+1B,EAASh+2B,SAAS7nK,SAAU,eAC9BosG,EAAKyq5B,aAAcgvB,EAASh+2B,SAAUi+2B,EAAW,iBAAmB,eAClEtuB,UAAWquB,EAASh+2B,SAAUi+2B,EAAW,eAAiB,kBAC5DD,EAASL,aAAeM,EACxBD,EAASP,UAAYQ,EACrBD,EAASpt3B,SAAWqt3B,EAGfA,EACJ156B,EAAK4uuB,SAAU,YAAa/46B,EAAO,CAClCqjnC,UAAWO,EAASzpoC,UAGrBgwN,EAAK4uuB,SAAU,cAAe/46B,EAAO,CACpCujnC,YAAaK,EAASzpoC,WAGjB,CAET,GAED,EAEA27nC,WAAY,SAAU91mC,GAIrB,GAFAnM,KAAK8+d,SAAU,GAEV9+d,KAAKpQ,QAAQo+C,SAAlB,CAIA,IAAIhpB,EACHsxL,EAAOt2M,KACPpQ,EAAUoQ,KAAKpQ,QACfujE,EAAKnzD,KAAK8vnC,KAAM,GAChB18jC,EAAKpzD,KAAK8vnC,KAAM,GAChBz8jC,EAAKlnD,EAAM05a,MACXvyX,EAAKnnD,EAAM25a,MAyFZ,OAvFK3yX,EAAKE,IAAOruC,EAAMquC,EAAIA,EAAKF,EAAIA,EAAKnuC,GACpCouC,EAAKE,IAAOtuC,EAAMsuC,EAAIA,EAAKF,EAAIA,EAAKpuC,GACzChlB,KAAKq8oB,OAAOlzpB,IAAK,CAAEgB,KAAMgpE,EAAInpE,IAAKopE,EAAI1sE,MAAO2sE,EAAKF,EAAIvsE,OAAQ0sE,EAAKF,IAEnEpzD,KAAK2vnC,UAAU/+mC,KAAM,WACpB,IAAIm/mC,EAAWrmiC,EAAE3zF,KAAMiK,KAAM,mBAC5Bg1Z,GAAM,EACNpwa,EAAS,CAAC,EAGLmroC,GAAYA,EAASzpoC,UAAYgwN,EAAKhwN,QAAS,KAIrD1B,EAAOuF,KAAS4loC,EAAS5loC,KAASmsN,EAAKpnG,WAAW/kH,KAClDvF,EAAOqF,MAAS8loC,EAAS9loC,MAASqsN,EAAKpnG,WAAW/kH,KAClDvF,EAAOoF,IAAS+loC,EAAS/loC,IAASssN,EAAKpnG,WAAWllH,IAClDpF,EAAOsF,OAAS6loC,EAAS7loC,OAASosN,EAAKpnG,WAAWllH,IAEvB,UAAtB4F,EAAQytqB,UACZroQ,IAAWpwa,EAAOuF,KAAOkpE,GAAMzuE,EAAOqF,MAAQkpE,GAAMvuE,EAAOoF,IAAMspE,GACjD1uE,EAAOsF,OAASkpE,GACC,QAAtBxjE,EAAQytqB,YACnBroQ,EAAQpwa,EAAOuF,KAAOgpE,GAAMvuE,EAAOqF,MAAQopE,GAAMzuE,EAAOoF,IAAMopE,GAC9CxuE,EAAOsF,OAASopE,GAG5B0hW,GAGC+6tB,EAASpt3B,WACbrsD,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,eACtCg+2B,EAASpt3B,UAAW,GAEhBot3B,EAASL,cACbp56B,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,kBACtCg+2B,EAASL,aAAc,GAElBK,EAASP,YACdl56B,EAAKor5B,UAAWquB,EAASh+2B,SAAU,gBACnCg+2B,EAASP,WAAY,EAGrBl56B,EAAK4uuB,SAAU,YAAa/46B,EAAO,CAClCqjnC,UAAWO,EAASzpoC,aAMjBypoC,EAASP,aACNrjnC,EAAM4lR,SAAW5lR,EAAM2lR,UAAai+1B,EAASF,eACnDv56B,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,gBACtCg+2B,EAASP,WAAY,EACrBl56B,EAAKor5B,UAAWquB,EAASh+2B,SAAU,eACnCg+2B,EAASpt3B,UAAW,IAEpBrsD,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,gBACtCg+2B,EAASP,WAAY,EAChBO,EAASF,gBACbv56B,EAAKor5B,UAAWquB,EAASh+2B,SAAU,kBACnCg+2B,EAASL,aAAc,GAIxBp56B,EAAK4uuB,SAAU,cAAe/46B,EAAO,CACpCujnC,YAAaK,EAASzpoC,YAIpBypoC,EAASpt3B,WACPx2P,EAAM4lR,SAAY5lR,EAAM2lR,SAAYi+1B,EAASF,gBAClDv56B,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,eACtCg+2B,EAASpt3B,UAAW,EAEpBrsD,EAAKor5B,UAAWquB,EAASh+2B,SAAU,kBACnCg+2B,EAASL,aAAc,EAGvBp56B,EAAK4uuB,SAAU,cAAe/46B,EAAO,CACpCujnC,YAAaK,EAASzpoC,aAK3B,IAEO,CAjGP,CAkGD,EAEA47nC,WAAY,SAAU/1mC,GACrB,IAAImqM,EAAOt2M,KA4BX,OA1BAA,KAAK8+d,SAAU,EAEfp1Y,EAAG,kBAAmB1pF,KAAK1Z,QAAS,IAAMsqB,KAAM,WAC/C,IAAIm/mC,EAAWrmiC,EAAE3zF,KAAMiK,KAAM,mBAC7Bs2M,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,kBACtCg+2B,EAASL,aAAc,EACvBK,EAASF,eAAgB,EACzBv56B,EAAK4uuB,SAAU,aAAc/46B,EAAO,CACnCsjnC,WAAYM,EAASzpoC,SAEvB,GACAojG,EAAG,gBAAiB1pF,KAAK1Z,QAAS,IAAMsqB,KAAM,WAC7C,IAAIm/mC,EAAWrmiC,EAAE3zF,KAAMiK,KAAM,mBAC7Bs2M,EAAKyq5B,aAAcgvB,EAASh+2B,SAAU,gBACpC2v1B,UAAWquB,EAASh+2B,SAAU,eAChCg+2B,EAASP,WAAY,EACrBO,EAASpt3B,UAAW,EACpBot3B,EAASF,eAAgB,EACzBv56B,EAAK4uuB,SAAU,WAAY/46B,EAAO,CACjCw2P,SAAUot3B,EAASzpoC,SAErB,GACA0Z,KAAKkl7B,SAAU,OAAQ/46B,GAEvBnM,KAAKq8oB,OAAOz5mB,UAEL,CACR,IA2BuB8mD,EAAEm9Q,OAAQ,gBAAiB,CAAEn9Q,EAAE8gT,GAAG4guB,eAAgB,CACzEvmiC,QAAS,SACT27hC,eAAgB,WAChB5wmC,QAAS,CACR+tpB,SAAU,KACVtwiB,QAAS,CACR,4BAA6B,gBAC7B,8BAA+B,iBAEhCr/D,SAAU,KACV49jC,MAAO,CACN150B,OAAQ,wBAETppS,SAAU,CACT8nmB,GAAI,WACJlgO,GAAI,cACJyyuB,UAAW,QAEZz8mC,OAAO,EAGP48D,OAAQ,KACR71C,MAAO,KACPujF,MAAO,KACPjD,KAAM,KACNkiO,OAAQ,MAGTg1nB,QAAS,WACR,IAAIgrM,EAAejwnC,KAAK1Z,QAAQsiH,WAAW2uJ,KAAM,MACjDv3P,KAAKnC,IAAM,CACVvX,QAAS2poC,EACT/91B,OAAQ+91B,EAAe,UACvB7wQ,KAAM6wQ,EAAe,SAGtBjwnC,KAAKkwnC,cACLlwnC,KAAKmwnC,YACLnwnC,KAAKsrmC,wBAELtrmC,KAAKownC,WAAY,EACjBpwnC,KAAKqwnC,UAAY3miC,GAClB,EAEAwmiC,YAAa,WACZ,IAAIz7wB,EACHn+J,EAAOt2M,KACPgT,EAAOhT,KAAKswnC,aACXtwnC,KAAK1Z,QAAQuU,KAAM,mBACnBmF,KAAK1Z,QAAS,GAAI6/T,eAIpBnmT,KAAKusC,OAASvsC,KAAK1Z,QAAQimD,SAASgrN,KAAM,MAAOv3P,KAAKnC,IAAIq0R,QAC1DlyR,KAAKgszB,IAAKhszB,KAAKusC,OAAQ,CACtB6jF,MAAO,SAAUjkH,GAChBnM,KAAKkyR,OAAOlhM,QACZ7kF,EAAMwgH,gBACP,IAID3sH,KAAK1Z,QAAQy+C,OAGb/kC,KAAKkyR,OAASxoM,EAAG,SAAU,CAC1B2k0B,SAAUru5B,KAAKpQ,QAAQo+C,UAAY,EAAI,EACvCjwC,GAAIiC,KAAKnC,IAAIq0R,OACb5zR,KAAM,WACN,gBAAiB,QACjB,oBAAqB,OACrB,YAAa0B,KAAKnC,IAAIuh3B,KACtB,gBAAiB,OACjB9o0B,MAAOt2C,KAAK1Z,QAAQixQ,KAAM,WAEzBkguB,YAAaz39B,KAAK1Z,SAEpB0Z,KAAK0hmC,UAAW1hmC,KAAKkyR,OAAQ,mDAC5B,uBAEDuiF,EAAO/qR,EAAG,UAAWi0jB,SAAU39oB,KAAKkyR,QACpClyR,KAAK0hmC,UAAWjtvB,EAAM,qBAAsB,WAAaz0W,KAAKpQ,QAAQg8mC,MAAM150B,QAC5ElyR,KAAKuwnC,WAAavwnC,KAAKwwnC,kBAAmBx9mC,GACxC2qoB,SAAU39oB,KAAKkyR,SAEW,IAAvBlyR,KAAKpQ,QAAQlJ,OACjBsZ,KAAKywnC,gBAGNzwnC,KAAKgszB,IAAKhszB,KAAKkyR,OAAQlyR,KAAK0wnC,eAC5B1wnC,KAAKkyR,OAAOnuB,IAAK,UAAW,WAIrBztD,EAAK856B,WACV956B,EAAKq66B,cAEP,EACD,EAEAR,UAAW,WACV,IAAI756B,EAAOt2M,KAGXA,KAAKo/2B,KAAO11xB,EAAG,OAAQ,CACtB,cAAe,OACf,kBAAmB1pF,KAAKnC,IAAIq0R,OAC5Bn0R,GAAIiC,KAAKnC,IAAIuh3B,OAIdp/2B,KAAK4wnC,SAAWlniC,EAAG,SAAU6mC,OAAQvwH,KAAKo/2B,MAC1Cp/2B,KAAK0hmC,UAAW1hmC,KAAK4wnC,SAAU,qBAAsB,YACrD5wnC,KAAK4wnC,SAASjze,SAAU39oB,KAAK4wmC,aAG7B5wmC,KAAK6wnC,aAAe7wnC,KAAKo/2B,KACvBA,KAAM,CACN/xwB,QAAS,CACR,UAAW,oBAEZ/uG,KAAM,UACN2xT,OAAQ,SAAU9jT,EAAOq+X,GACxBr+X,EAAMwgH,iBAKN2pF,EAAKw66B,gBAELx66B,EAAKy66B,QAASvmvB,EAAGx3X,KAAKjd,KAAM,sBAAwBoW,EACrD,EACA6kF,MAAO,SAAU7kF,EAAOq+X,GACvB,IAAIx3X,EAAOw3X,EAAGx3X,KAAKjd,KAAM,sBAGD,MAAnBugN,EAAK066B,YAAsBh+mC,EAAKxc,QAAU8/M,EAAK066B,aACnD166B,EAAK4uuB,SAAU,QAAS/46B,EAAO,CAAE6G,KAAMA,IACjCsjM,EAAKojoB,QACVpjoB,EAAKy66B,QAAS/9mC,EAAM7G,IAGtBmqM,EAAK066B,WAAah+mC,EAAKxc,MAEvB8/M,EAAK47E,OAAO36B,KAAM,wBACjBjhD,EAAK+56B,UAAU92mC,GAAIvG,EAAKxc,OAAQ+gQ,KAAM,MACxC,IAEA6nnB,KAAM,YAGRp/2B,KAAK6wnC,aAAat7tB,KAAMv1Z,KAAKo/2B,KAAM,cAGnCp/2B,KAAK6wnC,aAAaziB,sBAAwB,WACzC,OAAO,CACR,EAGApumC,KAAK6wnC,aAAa/hB,WAAa,WAC9B,OAAO,CACR,CACD,EAEAv/1B,QAAS,WACRvvQ,KAAK2wnC,eACL3wnC,KAAKuwnC,WAAWts3B,YACfjkQ,KAAKuwnC,WAAavwnC,KAAKwwnC,kBAGtBxwnC,KAAKixnC,mBAAmBl7nC,KAAM,uBAA0B,CAAC,IAG/B,OAAvBiK,KAAKpQ,QAAQlJ,OACjBsZ,KAAKywnC,eAEP,EAEAE,aAAc,WACb,IAAI39mC,EACHpjB,EAAUoQ,KAAK1Z,QAAQuU,KAAM,UAE9BmF,KAAKo/2B,KAAKvlnB,QAEV75P,KAAKkxnC,cAAethoC,GACpBoQ,KAAK4xmC,YAAa5xmC,KAAKo/2B,KAAMp/2B,KAAKk0B,OAElCl0B,KAAK6wnC,aAAath3B,UAClBvvQ,KAAKqwnC,UAAYrwnC,KAAKo/2B,KAAKvk3B,KAAM,MAC/BmiO,IAAK,2BACJniO,KAAM,yBAETmF,KAAKownC,WAAY,EAEXxgoC,EAAQwE,SAId4e,EAAOhT,KAAKixnC,mBAGZjxnC,KAAK6wnC,aAAa7/hC,MAAO,KAAMh+E,GAC/BhT,KAAKmxnC,SAAUn+mC,EAAKjd,KAAM,uBAG1BiK,KAAKkhmC,WAAY,WAAYlhmC,KAAK1Z,QAAQgsC,KAAM,aACjD,EAEAy7D,KAAM,SAAU5hF,GACVnM,KAAKpQ,QAAQo+C,WAKZhuC,KAAKownC,WAKVpwnC,KAAK+gmC,aAAc/gmC,KAAKo/2B,KAAKvk3B,KAAM,oBAAsB,KAAM,mBAC/DmF,KAAK6wnC,aAAa7/hC,MAAO,KAAMhxF,KAAKixnC,qBALpCjxnC,KAAK2wnC,eASA3wnC,KAAKqwnC,UAAUj8nC,SAIrB4L,KAAK050B,QAAS,EACd150B,KAAKoxnC,cACLpxnC,KAAK6xmC,cACL7xmC,KAAK6ja,YAEL7ja,KAAKgszB,IAAKhszB,KAAKvX,SAAUuX,KAAKqxnC,gBAE9BrxnC,KAAKkl7B,SAAU,OAAQ/46B,IACxB,EAEA03Z,UAAW,WACV7ja,KAAK4wnC,SAAS9noC,SAAU4gG,EAAEsZ,OAAQ,CAAEgwJ,GAAIhzP,KAAKkyR,QAAUlyR,KAAKpQ,QAAQ9G,UACrE,EAEA2kB,MAAO,SAAUtB,GACVnM,KAAK050B,SAIX150B,KAAK050B,QAAS,EACd150B,KAAKoxnC,cAELpxnC,KAAK6T,MAAQ,KACb7T,KAAKu1Z,KAAMv1Z,KAAKvX,UAEhBuX,KAAKkl7B,SAAU,QAAS/46B,GACzB,EAEA06V,OAAQ,WACP,OAAO7mW,KAAKkyR,MACb,EAEAo/1B,WAAY,WACX,OAAOtxnC,KAAKo/2B,IACb,EAEAoxQ,kBAAmB,SAAUx9mC,GAC5B,IAAIu9mC,EAAa7miC,EAAG,UAKpB,OAHA1pF,KAAKuxnC,SAAUhB,EAAYv9mC,EAAKnR,OAChC7B,KAAK0hmC,UAAW6uB,EAAY,sBAErBA,CACR,EAEA3e,YAAa,SAAUD,EAAIz9kC,GAC1B,IAAIoiL,EAAOt2M,KACVwxnC,EAAkB,GAEnB9niC,EAAE94E,KAAMsjB,EAAO,SAAU19B,EAAOwc,GAC/B,IAAIy3X,EAECz3X,EAAKqrP,WAAamz3B,IACtB/mvB,EAAK/gT,EAAG,OAAQ,CACf55D,KAAM9c,EAAKqrP,WAEZ/nD,EAAKor5B,UAAWj3tB,EAAI,yBAA0B,mBAC3Cz3X,EAAK1sB,QAAQmB,OAAQ,YAAa6qC,KAAM,YACzC,qBACA,KAEFm4W,EAAGkzQ,SAAUg0d,GAEb6f,EAAkBx+mC,EAAKqrP,UAGxB/nD,EAAKw75B,gBAAiBH,EAAI3+lC,EAC3B,EACD,EAEA8+lC,gBAAiB,SAAUH,EAAI3+lC,GAC9B,OAAOhT,KAAK+xmC,YAAaJ,EAAI3+lC,GAAOjd,KAAM,qBAAsBid,EACjE,EAEA++lC,YAAa,SAAUJ,EAAI3+lC,GAC1B,IAAIy3X,EAAK/gT,EAAG,QACXi5H,EAAUj5H,EAAG,QAAS,CACrBpzC,MAAOtjC,EAAK1sB,QAAQixQ,KAAM,WAQ5B,OALKvkP,EAAKg7B,UACThuC,KAAK0hmC,UAAWj3tB,EAAI,KAAM,qBAE3BzqY,KAAKuxnC,SAAU5u6B,EAAS3vM,EAAKnR,OAEtB4oY,EAAGl6Q,OAAQoyF,GAAUg7b,SAAUg0d,EACvC,EAEA4f,SAAU,SAAUjroC,EAASX,GACvBA,EACJW,EAAQwpC,KAAMnqC,GAEdW,EAAQ0C,KAAM,SAEhB,EAEA400B,MAAO,SAAU7u0B,EAAWod,GAC3B,IAAI6G,EAAMlrB,EACTmJ,EAAS,gBAEL+O,KAAK050B,OACT1m0B,EAAOhT,KAAKqwnC,UAAU92mC,GAAIvZ,KAAKgxnC,YAAavpoC,OAAQ,OAEpDurB,EAAOhT,KAAKqwnC,UAAU92mC,GAAIvZ,KAAK1Z,QAAS,GAAI6/T,eAAgB1+T,OAAQ,MACpEwJ,GAAU,6BAIVnJ,EADkB,UAAdiH,GAAuC,SAAdA,EACtBikB,EAAoB,UAAdjkB,EAAwB,UAAY,WAAakC,GAASsoB,IAAK,GAErEvG,EAAMjkB,EAAY,OAASkC,GAASsoB,GAAI,IAGtCnlB,QACT4L,KAAK6wnC,aAAa7/hC,MAAO7kF,EAAOrkB,EAElC,EAEAmpoC,iBAAkB,WACjB,OAAOjxnC,KAAKqwnC,UAAU92mC,GAAIvZ,KAAK1Z,QAAS,GAAI6/T,eAAgB1+T,OAAQ,KACrE,EAEAimnC,QAAS,SAAUvhmC,GAClBnM,KAAMA,KAAK050B,OAAS,QAAU,QAAUvt0B,EACzC,EAEA2knC,cAAe,WACd,IAAI1prB,EAEEpnc,KAAK6T,QAIN1sB,OAAOggc,eACXigB,EAAYjgd,OAAOggc,gBACTwR,kBACVyO,EAAUxO,SAAU54b,KAAK6T,QAIzB7T,KAAK6T,MAAMo8S,SAMZjwT,KAAKkyR,OAAOlhM,QACb,EAEAqgiC,eAAgB,CACf5ypB,UAAW,SAAUtyd,GACdnM,KAAK050B,SAILhwvB,EAAGv9E,EAAMpe,QAAS4/M,QAAS,yBAC/BjkH,EAAE8gT,GAAGoklB,eAAgB5u9B,KAAKnC,IAAIq0R,SAAW99R,QAC1C4L,KAAKyN,MAAOtB,GAEd,GAGDuknC,cAAe,CAGdjypB,UAAW,WACV,IAAIr3B,EAECjgd,OAAOggc,cACXigB,EAAYjgd,OAAOggc,gBACJiR,aACdp4b,KAAK6T,MAAQuzb,EAAUqqrB,WAAY,IAKpCzxnC,KAAK6T,MAAQprB,SAAS2+c,UAAU3O,aAElC,EAEAroU,MAAO,SAAUjkH,GAChBnM,KAAK8wnC,gBACL9wnC,KAAK0tmC,QAASvhmC,EACf,EAEAk7zB,QAAS,SAAUl7zB,GAClB,IAAIwgH,GAAiB,EACrB,OAASxgH,EAAMyrS,SACf,KAAKluN,EAAE8gT,GAAG5yF,QAAQs9vB,IAClB,KAAKxr9B,EAAE8gT,GAAG5yF,QAAQrkB,OACjBvzR,KAAKyN,MAAOtB,GACZwgH,GAAiB,EACjB,MACD,KAAKjjC,EAAE8gT,GAAG5yF,QAAQw9vB,MACZp1iC,KAAK050B,QACT150B,KAAK0xnC,mBAAoBvlnC,GAE1B,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQo+vB,GACZ7piC,EAAMi5a,OACVplb,KAAK0tmC,QAASvhmC,GAEdnM,KAAK49zB,MAAO,OAAQzxzB,GAErB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQq+vB,KACZ9piC,EAAMi5a,OACVplb,KAAK0tmC,QAASvhmC,GAEdnM,KAAK49zB,MAAO,OAAQzxzB,GAErB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQ+9vB,MACZ31iC,KAAK050B,OACT150B,KAAK0xnC,mBAAoBvlnC,GAEzBnM,KAAK0tmC,QAASvhmC,GAEf,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQjnD,KACjB3wP,KAAK49zB,MAAO,OAAQzxzB,GACpB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQhmD,MACjB5xP,KAAK49zB,MAAO,OAAQzxzB,GACpB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQm+vB,KAClB,KAAKrs9B,EAAE8gT,GAAG5yF,QAAQg+vB,QACjB51iC,KAAK49zB,MAAO,QAASzxzB,GACrB,MACD,KAAKu9E,EAAE8gT,GAAG5yF,QAAQk+vB,IAClB,KAAKps9B,EAAE8gT,GAAG5yF,QAAQi+vB,UACjB71iC,KAAK49zB,MAAO,OAAQzxzB,GACpB,MACD,QACCnM,KAAKo/2B,KAAKj6zB,QAASh5C,GACnBwgH,GAAiB,EAGbA,GACJxgH,EAAMwgH,gBAER,GAGD+kgC,mBAAoB,SAAUvlnC,GAC7B,IAAI6G,EAAOhT,KAAKqwnC,UAAU92mC,GAAIvZ,KAAKgxnC,YAAavpoC,OAAQ,MAClDurB,EAAKk3F,SAAU,sBACpBlqG,KAAK+wnC,QAAS/9mC,EAAKjd,KAAM,sBAAwBoW,EAEnD,EAEA4knC,QAAS,SAAU/9mC,EAAM7G,GACxB,IAAIog5B,EAAWvs5B,KAAK1Z,QAAS,GAAI6/T,cAGjCnmT,KAAK1Z,QAAS,GAAI6/T,cAAgBnzS,EAAKxc,MACvCwJ,KAAKuwnC,WAAWts3B,YAAajkQ,KAAKuwnC,WAAavwnC,KAAKwwnC,kBAAmBx9mC,IACvEhT,KAAKmxnC,SAAUn+mC,GACfhT,KAAKkl7B,SAAU,SAAU/46B,EAAO,CAAE6G,KAAMA,IAEnCA,EAAKxc,QAAU+15B,GACnBvs5B,KAAKkl7B,SAAU,SAAU/46B,EAAO,CAAE6G,KAAMA,IAGzChT,KAAKyN,MAAOtB,EACb,EAEAglnC,SAAU,SAAUn+mC,GACnB,IAAIjV,EAAKiC,KAAKqwnC,UAAU92mC,GAAIvG,EAAKxc,OAAQ+gQ,KAAM,MAE/Cv3P,KAAKkyR,OAAO36B,KAAM,CACjB,kBAAmBx5P,EACnB,wBAAyBA,IAE1BiC,KAAKo/2B,KAAK7nnB,KAAM,wBAAyBx5P,EAC1C,EAEAmjmC,WAAY,SAAU12mC,EAAK7E,GAC1B,GAAa,UAAR6E,EAAkB,CACtB,IAAIiqX,EAAOz0W,KAAKkyR,OAAOr3R,KAAM,gBAC7BmF,KAAK+gmC,aAActsvB,EAAM,KAAMz0W,KAAKpQ,QAAQg8mC,MAAM150B,QAChDwv0B,UAAWjtvB,EAAM,KAAM9uX,EAAMusS,OAChC,CAEAlyR,KAAKgE,OAAQxZ,EAAK7E,GAEL,aAAR6E,GACJwV,KAAK4wnC,SAASjze,SAAU39oB,KAAK4wmC,aAGjB,UAARpmnC,GACJwV,KAAKywnC,eAEP,EAEA5vB,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAK6wnC,aAAavrlC,OAAQ,WAAY3/C,GACtCqa,KAAKkyR,OAAO36B,KAAM,gBAAiB5xQ,GACnCqa,KAAKshmC,aAActhmC,KAAKkyR,OAAQ,KAAM,oBAAqBvsS,GAE3Dqa,KAAK1Z,QAAQgsC,KAAM,WAAY3sC,GAC1BA,GACJqa,KAAKkyR,OAAO36B,KAAM,YAAa,GAC/Bv3P,KAAKyN,SAELzN,KAAKkyR,OAAO36B,KAAM,WAAY,EAEhC,EAEAq52B,UAAW,WACV,IAAItqnC,EAAU0Z,KAAKpQ,QAAQ+tpB,SAgB3B,OAdKr3pB,IACJA,EAAUA,EAAQqnH,QAAUrnH,EAAQmiH,SACnC/e,EAAGpjG,GACH0Z,KAAKvX,SAASoS,KAAMvU,GAAUizB,GAAI,IAG9BjzB,GAAYA,EAAS,KAC1BA,EAAU0Z,KAAK1Z,QAAQqnN,QAAS,sBAG3BrnN,EAAQ8N,SACb9N,EAAU0Z,KAAKvX,SAAU,GAAIiF,MAGvBpH,CACR,EAEA8qoC,YAAa,WACZpxnC,KAAKkyR,OAAO36B,KAAM,gBAAiBv3P,KAAK050B,QAKxC150B,KAAK+gmC,aAAc/gmC,KAAKkyR,OAAQ,yBAC7BlyR,KAAK050B,OAAS,SAAW,SAC1BgoR,UAAW1hmC,KAAKkyR,OAAQ,yBACtBlyR,KAAK050B,OAAS,OAAS,WACzB4nR,aAActhmC,KAAK4wnC,SAAU,qBAAsB,KAAM5wnC,KAAK050B,QAEhE150B,KAAKo/2B,KAAK7nnB,KAAM,eAAgBv3P,KAAK050B,OACtC,EAEA+2S,cAAe,WACd,IAAI/poC,EAAQsZ,KAAKpQ,QAAQlJ,OAGV,IAAVA,GAMU,OAAVA,IACJA,EAAQsZ,KAAK1Z,QAAQs+C,OAAO2b,aAC5BvgD,KAAK1Z,QAAQy+C,QAGd/kC,KAAKkyR,OAAO3xO,WAAY75D,IAVvBsZ,KAAKkyR,OAAO/oS,IAAK,QAAS,GAW5B,EAEA0onC,YAAa,WACZ7xmC,KAAKo/2B,KAAK7+zB,WAAY/6D,KAAKmE,IAC1BqW,KAAKkyR,OAAO3xO,aAKZvgD,KAAKo/2B,KAAK143B,MAAO,IAAK65D,aAAe,GAEvC,EAEAqgjC,kBAAmB,WAClB,IAAIhxmC,EAAUoQ,KAAKgE,SAInB,OAFApU,EAAQo+C,SAAWhuC,KAAK1Z,QAAQgsC,KAAM,YAE/B1iC,CACR,EAEAshoC,cAAe,SAAUthoC,GACxB,IAAI0mN,EAAOt2M,KACVjK,EAAO,GACRnG,EAAQghB,KAAM,SAAUpa,EAAOwc,GAC9Bjd,EAAKjC,KAAMwiN,EAAKg66B,aAAc5miC,EAAG12E,GAAQxc,GAC1C,GACAwJ,KAAKk0B,MAAQn+B,CACd,EAEAu6nC,aAAc,SAAUhrlC,EAAQ9uC,GAC/B,IAAI6nQ,EAAW/4N,EAAO79C,OAAQ,YAE9B,MAAO,CACNnB,QAASg/C,EACT9uC,MAAOA,EACP7Q,MAAO2/C,EAAO3d,MACd9lB,MAAOyjC,EAAOxV,OACduuO,SAAUA,EAAS9G,KAAM,UAAa,GACtCvpN,SAAUqwN,EAAS/rO,KAAM,aAAgBgT,EAAOhT,KAAM,YAExD,EAEA0Y,SAAU,WACThrC,KAAKurmC,0BACLvrmC,KAAK4wnC,SAAShulC,SACd5iC,KAAKkyR,OAAOtvP,SACZ5iC,KAAK1Z,QAAQs+C,OACb5kC,KAAK1Z,QAAQmlnC,iBACbzrmC,KAAKusC,OAAOgrN,KAAM,MAAOv3P,KAAKnC,IAAIvX,QACnC,KAwBmBojG,EAAEm9Q,OAAQ,YAAan9Q,EAAE8gT,GAAGwtE,MAAO,CACtDnzY,QAAS,SACTo7hC,kBAAmB,QAEnBrwmC,QAAS,CACRotF,SAAS,EACTqwB,QAAS,CACR,YAAa,gBACb,mBAAoB,gBAIpB,kBAAmB,kCAEpB90G,SAAU,EACV5O,IAAK,IACLD,IAAK,EACL4poB,YAAa,aACbz/mB,OAAO,EACPvS,KAAM,EACN3b,MAAO,EACPijC,OAAQ,KAGR06B,OAAQ,KACRk+0B,MAAO,KACP/04B,MAAO,KACPiZ,KAAM,MAKP6/4B,SAAU,EAEV0/B,QAAS,WACRjl7B,KAAK2xnC,aAAc,EACnB3xnC,KAAK4xnC,eAAgB,EACrB5xnC,KAAK6xnC,aAAc,EACnB7xnC,KAAK8xnC,aAAe,KACpB9xnC,KAAK+xnC,qBACL/xnC,KAAK07gB,aACL17gB,KAAKgynC,mBAELhynC,KAAK0hmC,UAAW,uBAAyB1hmC,KAAKsznB,YAC7C,+BAEDtznB,KAAK2hC,WAEL3hC,KAAK6xnC,aAAc,CACpB,EAEAlwlC,SAAU,WACT3hC,KAAKiynC,eACLjynC,KAAKkynC,iBACLlynC,KAAKosmC,eACLpsmC,KAAKmvnC,eACN,EAEA+C,eAAgB,WACf,IAAI7soC,EAAG8soC,EACNvioC,EAAUoQ,KAAKpQ,QACfwioC,EAAkBpynC,KAAK1Z,QAAQuU,KAAM,qBAErC6rnC,EAAU,GASX,IAPAyL,EAAgBvioC,EAAQg5B,QAAUh5B,EAAQg5B,OAAOx0B,QAAY,EAExDg+nC,EAAgBh+nC,OAAS+9nC,IAC7BC,EAAgBt3nC,MAAOq3nC,GAAcvvlC,SACrCwvlC,EAAkBA,EAAgBt3nC,MAAO,EAAGq3nC,IAGvC9soC,EAAI+soC,EAAgBh+nC,OAAQ/O,EAAI8soC,EAAa9soC,IAClDqhoC,EAAQ5ynC,KAXC,8BAcVkM,KAAK0mnC,QAAU0L,EAAgB9+nC,IAAKo2F,EAAGg9hC,EAAQxonC,KAAM,KAAOy/oB,SAAU39oB,KAAK1Z,UAE3E0Z,KAAK0hmC,UAAW1hmC,KAAK0mnC,QAAS,mBAAoB,oBAElD1mnC,KAAKunO,OAASvnO,KAAK0mnC,QAAQntmC,GAAI,GAE/BvZ,KAAK0mnC,QAAQ91mC,KAAM,SAAUvrB,GAC5BqkG,EAAG1pF,MACDjK,KAAM,yBAA0B1Q,GAChCkyQ,KAAM,WAAY,EACrB,EACD,EAEA063B,aAAc,WACb,IAAIrioC,EAAUoQ,KAAKpQ,QAEdA,EAAQikB,QACW,IAAlBjkB,EAAQikB,QACNjkB,EAAQg5B,OAEFh5B,EAAQg5B,OAAOx0B,QAAoC,IAA1BxE,EAAQg5B,OAAOx0B,OACnDxE,EAAQg5B,OAAS,CAAEh5B,EAAQg5B,OAAQ,GAAKh5B,EAAQg5B,OAAQ,IAC7C8gE,EAAE35E,QAASngB,EAAQg5B,UAC9Bh5B,EAAQg5B,OAASh5B,EAAQg5B,OAAO9tB,MAAO,IAJvClL,EAAQg5B,OAAS,CAAE5oB,KAAKqynC,YAAarynC,KAAKqynC,cAQtCrynC,KAAK6T,OAAU7T,KAAK6T,MAAMzf,QAM/B4L,KAAK+gmC,aAAc/gmC,KAAK6T,MAAO,2CAG/B7T,KAAK6T,MAAM1qB,IAAK,CACf,KAAQ,GACR,OAAU,OAVX6W,KAAK6T,MAAQ61E,EAAG,SACdi0jB,SAAU39oB,KAAK1Z,SAEjB0Z,KAAK0hmC,UAAW1hmC,KAAK6T,MAAO,oBAUN,QAAlBjkB,EAAQikB,OAAqC,QAAlBjkB,EAAQikB,OACvC7T,KAAK0hmC,UAAW1hmC,KAAK6T,MAAO,mBAAqBjkB,EAAQikB,SAGrD7T,KAAK6T,OACT7T,KAAK6T,MAAM+uB,SAEZ5iC,KAAK6T,MAAQ,KAEf,EAEAu4lC,aAAc,WACbpsmC,KAAKu1Z,KAAMv1Z,KAAK0mnC,SAChB1mnC,KAAKgszB,IAAKhszB,KAAK0mnC,QAAS1mnC,KAAKsynC,eAC7BtynC,KAAK8hmC,WAAY9hmC,KAAK0mnC,SACtB1mnC,KAAK+hmC,WAAY/hmC,KAAK0mnC,QACvB,EAEA17kC,SAAU,WACThrC,KAAK0mnC,QAAQ9jlC,SACR5iC,KAAK6T,OACT7T,KAAK6T,MAAM+uB,SAGZ5iC,KAAK27gB,eACN,EAEAE,cAAe,SAAU1vgB,GACxB,IAAIrjB,EAAUypoC,EAAWh6nC,EAAUi6nC,EAAeh8nC,EAAgB5R,EAAQ6toC,EACzEn86B,EAAOt2M,KACP2jE,EAAI3jE,KAAKpQ,QAEV,OAAK+zE,EAAE31B,WAIPhuC,KAAK0ynC,YAAc,CAClBhsoC,MAAOsZ,KAAK1Z,QAAQi6D,aACpB35D,OAAQoZ,KAAK1Z,QAAQm6D,eAEtBzgD,KAAKwpnC,cAAgBxpnC,KAAK1Z,QAAQ1B,SAElCkE,EAAW,CAAEvC,EAAG4lB,EAAM05a,MAAOlic,EAAGwoB,EAAM25a,OACtCyssB,EAAYvynC,KAAK2ynC,oBAAqB7poC,GACtCyP,EAAWyH,KAAK4ynC,YAAc5ynC,KAAKqynC,YAAc,EACjDrynC,KAAK0mnC,QAAQ91mC,KAAM,SAAUvrB,GAC5B,IAAIwtoC,EAAertoC,KAAKM,IAAKysoC,EAAYj86B,EAAK1tL,OAAQvjC,KAC/CkT,EAAWs6nC,GACft6nC,IAAas6nC,IACZxtoC,IAAMixN,EAAKw86B,mBAAqBx86B,EAAK1tL,OAAQvjC,KAAQs+E,EAAEj6E,QAC1D6O,EAAWs6nC,EACXL,EAAgB9oiC,EAAG1pF,MACnBxJ,EAAQnR,EAEV,IAGiB,IADP2a,KAAKwjC,OAAQr3B,EAAO3V,KAI9BwJ,KAAK4xnC,eAAgB,EAErB5xnC,KAAK8xnC,aAAet7nC,EAEpBwJ,KAAK0hmC,UAAW8wB,EAAe,KAAM,mBACrCA,EAAcrtkC,QAAS,SAEvBvgE,EAAS4toC,EAAc5toC,SACvB6toC,GAAmB/oiC,EAAGv9E,EAAMpe,QAASy6G,UAAUgn3B,UAAUvq2B,GAAI,qBAC7DjlH,KAAK+ynC,aAAeN,EAAkB,CAAEtooC,KAAM,EAAGH,IAAK,GAAM,CAC3DG,KAAMgiB,EAAM05a,MAAQjhc,EAAOuF,KAASqooC,EAAc9roC,QAAU,EAC5DsD,IAAKmiB,EAAM25a,MAAQlhc,EAAOoF,IACvBwooC,EAAc5roC,SAAW,GACzBu/B,SAAUqsmC,EAAcrpoC,IAAK,kBAAoB,KAAQ,IACzDg9B,SAAUqsmC,EAAcrpoC,IAAK,qBAAuB,KAAQ,IAC5Dg9B,SAAUqsmC,EAAcrpoC,IAAK,aAAe,KAAQ,IAGlD6W,KAAK0mnC,QAAQx8gC,SAAU,mBAC5BlqG,KAAKgznC,OAAQ7mnC,EAAO3V,EAAO+7nC,GAE5BvynC,KAAK6xnC,aAAc,GACZ,GACR,EAEA/P,YAAa,WACZ,OAAO,CACR,EAEAG,WAAY,SAAU91mC,GACrB,IAAIrjB,EAAW,CAAEvC,EAAG4lB,EAAM05a,MAAOlic,EAAGwoB,EAAM25a,OACzCyssB,EAAYvynC,KAAK2ynC,oBAAqB7poC,GAIvC,OAFAkX,KAAKgznC,OAAQ7mnC,EAAOnM,KAAK8xnC,aAAcS,IAEhC,CACR,EAEArQ,WAAY,SAAU/1mC,GAWrB,OAVAnM,KAAK+gmC,aAAc/gmC,KAAK0mnC,QAAS,KAAM,mBACvC1mnC,KAAK4xnC,eAAgB,EAErB5xnC,KAAKkhE,MAAO/0D,EAAOnM,KAAK8xnC,cACxB9xnC,KAAK0ja,QAASv3Z,EAAOnM,KAAK8xnC,cAE1B9xnC,KAAK8xnC,aAAe,KACpB9xnC,KAAK+ynC,aAAe,KACpB/ynC,KAAK6xnC,aAAc,GAEZ,CACR,EAEAE,mBAAoB,WACnB/xnC,KAAKsznB,YAA6C,aAA7BtznB,KAAKpQ,QAAQ0joB,YAA+B,WAAa,YAC/E,EAEAq/f,oBAAqB,SAAU7poC,GAC9B,IAAImqoC,EACHC,EACAC,EACAC,EACAC,EA0BD,MAxB0B,eAArBrznC,KAAKsznB,aACT2/f,EAAajznC,KAAK0ynC,YAAYhsoC,MAC9BwsoC,EAAapqoC,EAASvC,EAAIyZ,KAAKwpnC,cAAcr/nC,MAC1C6V,KAAK+ynC,aAAe/ynC,KAAK+ynC,aAAa5ooC,KAAO,KAEhD8ooC,EAAajznC,KAAK0ynC,YAAY9roC,OAC9BssoC,EAAapqoC,EAASnF,EAAIqc,KAAKwpnC,cAAcx/nC,KAC1CgW,KAAK+ynC,aAAe/ynC,KAAK+ynC,aAAa/ooC,IAAM,KAGhDmpoC,EAAiBD,EAAaD,GACV,IACnBE,EAAe,GAEXA,EAAe,IACnBA,EAAe,GAEU,aAArBnznC,KAAKsznB,cACT6/f,EAAe,EAAIA,GAGpBC,EAAapznC,KAAK4ynC,YAAc5ynC,KAAKqynC,YACrCgB,EAAarznC,KAAKqynC,YAAcc,EAAeC,EAExCpznC,KAAKsznC,gBAAiBD,EAC9B,EAEA5O,QAAS,SAAUjunC,EAAO7Q,EAAOijC,GAChC,IAAI2qmC,EAAS,CACZhs5B,OAAQvnO,KAAK0mnC,QAASlwnC,GACtBg9nC,YAAah9nC,EACb7Q,WAAiBmR,IAAVnR,EAAsBA,EAAQqa,KAAKra,SAQ3C,OALKqa,KAAKyznC,uBACTF,EAAO5toC,WAAkBmR,IAAVnR,EAAsBA,EAAQqa,KAAK4oB,OAAQpyB,GAC1D+8nC,EAAO3qmC,OAASA,GAAU5oB,KAAK4oB,UAGzB2qmC,CACR,EAEAE,mBAAoB,WACnB,OAAOzznC,KAAKpQ,QAAQg5B,QAAU5oB,KAAKpQ,QAAQg5B,OAAOx0B,MACnD,EAEAovC,OAAQ,SAAUr3B,EAAO3V,GACxB,OAAOwJ,KAAKkl7B,SAAU,QAAS/46B,EAAOnM,KAAKyknC,QAASjunC,GACrD,EAEAw8nC,OAAQ,SAAU7mnC,EAAO3V,EAAOwyQ,GAC/B,IAAa0q3B,EACZtwlC,EAAepjC,KAAKra,QACpBs5S,EAAYj/R,KAAK4oB,SAEb5oB,KAAKyznC,uBACTC,EAAW1znC,KAAK4oB,OAAQpyB,EAAQ,EAAI,GACpC4sC,EAAepjC,KAAK4oB,OAAQpyB,GAEQ,IAA/BwJ,KAAKpQ,QAAQg5B,OAAOx0B,SAAuC,IAAvB4L,KAAKpQ,QAAQikB,QACrDm1P,EAAoB,IAAVxyQ,EAAchR,KAAKkE,IAAKgqoC,EAAU1q3B,GAAWxjR,KAAKmE,IAAK+poC,EAAU1q3B,IAG5Ei2B,EAAWzoS,GAAUwyQ,GAGjBA,IAAW5lO,IAOC,IAHPpjC,KAAKkl7B,SAAU,QAAS/46B,EAAOnM,KAAKyknC,QAASjunC,EAAOwyQ,EAAQi2B,MAOjEj/R,KAAKyznC,qBACTzznC,KAAK4oB,OAAQpyB,EAAOwyQ,GAEpBhpQ,KAAKra,MAAOqjR,GAEd,EAEA9nM,MAAO,SAAU/0D,EAAO3V,GACvBwJ,KAAKkl7B,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,QAASjunC,GAC7C,EAEAkta,QAAS,SAAUv3Z,EAAO3V,GACnBwJ,KAAK2xnC,aAAgB3xnC,KAAK4xnC,gBAG/B5xnC,KAAK8ynC,kBAAoBt8nC,EACzBwJ,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,QAASjunC,IAEhD,EAEA7Q,MAAO,SAAU8oI,GAChB,OAAKt6H,UAAUC,QACd4L,KAAKpQ,QAAQjK,MAAQqa,KAAKsznC,gBAAiB7kgC,GAC3CzuH,KAAKmvnC,qBACLnvnC,KAAK0ja,QAAS,KAAM,IAId1ja,KAAKigS,QACb,EAEAr3Q,OAAQ,SAAUpyB,EAAOi4H,GACxB,IAAIglO,EACHx0D,EACA55S,EAED,GAAK8O,UAAUC,OAAS,EAIvB,OAHA4L,KAAKpQ,QAAQg5B,OAAQpyB,GAAUwJ,KAAKsznC,gBAAiB7kgC,GACrDzuH,KAAKmvnC,qBACLnvnC,KAAK0ja,QAAS,KAAMlta,GAIrB,IAAKrC,UAAUC,OAiBd,OAAO4L,KAAKqlQ,UAhBZ,IAAK37K,EAAE35E,QAAS5b,UAAW,IAS1B,OAAK6L,KAAKyznC,qBACFzznC,KAAKqlQ,QAAS7uQ,GAEdwJ,KAAKra,QATb,IAFA8tW,EAAOzzV,KAAKpQ,QAAQg5B,OACpBq2Q,EAAY9qS,UAAW,GACjB9O,EAAI,EAAGA,EAAIouW,EAAKr/V,OAAQ/O,GAAK,EAClCouW,EAAMpuW,GAAM2a,KAAKsznC,gBAAiBr01B,EAAW55S,IAC7C2a,KAAK0ja,QAAS,KAAMr+a,GAErB2a,KAAKmvnC,eAWR,EAEAjuB,WAAY,SAAU12mC,EAAK7E,GAC1B,IAAIN,EACHsuoC,EAAa,EAkBd,OAhBa,UAARnpoC,IAA0C,IAAvBwV,KAAKpQ,QAAQikB,QACrB,QAAVluB,GACJqa,KAAKpQ,QAAQjK,MAAQqa,KAAKqlQ,QAAS,GACnCrlQ,KAAKpQ,QAAQg5B,OAAS,MACD,QAAVjjC,IACXqa,KAAKpQ,QAAQjK,MAAQqa,KAAKqlQ,QAASrlQ,KAAKpQ,QAAQg5B,OAAOx0B,OAAS,GAChE4L,KAAKpQ,QAAQg5B,OAAS,OAInB8gE,EAAE35E,QAAS/P,KAAKpQ,QAAQg5B,UAC5B+qmC,EAAa3znC,KAAKpQ,QAAQg5B,OAAOx0B,QAGlC4L,KAAKgE,OAAQxZ,EAAK7E,GAET6E,GACR,IAAK,cACJwV,KAAK+xnC,qBACL/xnC,KAAK+gmC,aAAc,2CACjBW,UAAW,aAAe1hmC,KAAKsznB,aACjCtznB,KAAKmvnC,gBACAnvnC,KAAKpQ,QAAQikB,OACjB7T,KAAK4znC,cAAejuoC,GAIrBqa,KAAK0mnC,QAAQv9nC,IAAe,eAAVxD,EAAyB,SAAW,OAAQ,IAC9D,MACD,IAAK,QACJqa,KAAK6xnC,aAAc,EACnB7xnC,KAAKmvnC,gBACLnvnC,KAAK0ja,QAAS,KAAM,GACpB1ja,KAAK6xnC,aAAc,EACnB,MACD,IAAK,SAKJ,IAJA7xnC,KAAK6xnC,aAAc,EACnB7xnC,KAAKmvnC,gBAGC9poC,EAAIsuoC,EAAa,EAAGtuoC,GAAK,EAAGA,IACjC2a,KAAK0ja,QAAS,KAAMr+a,GAErB2a,KAAK6xnC,aAAc,EACnB,MACD,IAAK,OACL,IAAK,MACL,IAAK,MACJ7xnC,KAAK6xnC,aAAc,EACnB7xnC,KAAKgynC,mBACLhynC,KAAKmvnC,gBACLnvnC,KAAK6xnC,aAAc,EACnB,MACD,IAAK,QACJ7xnC,KAAK6xnC,aAAc,EACnB7xnC,KAAK2hC,WACL3hC,KAAK6xnC,aAAc,EAGtB,EAEAhxB,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAKshmC,aAAc,KAAM,sBAAuB37mC,EACjD,EAIAs6S,OAAQ,WACP,IAAIt4Q,EAAM3nB,KAAKpQ,QAAQjK,MAGvB,OAFMqa,KAAKsznC,gBAAiB3rmC,EAG7B,EAKA09O,QAAS,SAAU7uQ,GAClB,IAAImxB,EACH8rU,EACApuW,EAED,GAAK8O,UAAUC,OAId,OAHAuzB,EAAM3nB,KAAKpQ,QAAQg5B,OAAQpyB,GACrBwJ,KAAKsznC,gBAAiB3rmC,GAGtB,GAAK3nB,KAAKyznC,qBAAuB,CAKvC,IADAhgyB,EAAOzzV,KAAKpQ,QAAQg5B,OAAO9tB,QACrBzV,EAAI,EAAGA,EAAIouW,EAAKr/V,OAAQ/O,GAAK,EAClCouW,EAAMpuW,GAAM2a,KAAKsznC,gBAAiB7/xB,EAAMpuW,IAGzC,OAAOouW,CACR,CACC,MAAO,EAET,EAGA6/xB,gBAAiB,SAAU3rmC,GAC1B,GAAKA,GAAO3nB,KAAKqynC,YAChB,OAAOrynC,KAAKqynC,YAEb,GAAK1qmC,GAAO3nB,KAAK4ynC,YAChB,OAAO5ynC,KAAK4ynC,YAEb,IAAItxnC,EAAStB,KAAKpQ,QAAQ0R,KAAO,EAAMtB,KAAKpQ,QAAQ0R,KAAO,EAC1DuynC,GAAelsmC,EAAM3nB,KAAKqynC,aAAgB/wnC,EAC1Ckvd,EAAa7oc,EAAMksmC,EAQpB,OAN8B,EAAzBruoC,KAAKM,IAAK+toC,IAAoBvynC,IAClCkvd,GAAgBqjqB,EAAa,EAAMvynC,GAAUA,GAKvCqP,WAAY6/c,EAAWzyV,QAAS,GACxC,EAEAi0/B,iBAAkB,WACjB,IAAIrooC,EAAMqW,KAAKpQ,QAAQjG,IACtBD,EAAMsW,KAAKqynC,YACX/wnC,EAAOtB,KAAKpQ,QAAQ0R,MAErB3X,EADYnE,KAAK+F,OAAS5B,EAAMD,GAAQ4X,GAASA,EAChC5X,GACNsW,KAAKpQ,QAAQjG,MAGvBA,GAAO2X,GAERtB,KAAKrW,IAAMgnB,WAAYhnB,EAAIo0I,QAAS/9H,KAAK8znC,cAC1C,EAEAA,WAAY,WACX,IAAIt7iC,EAAYx4E,KAAK+znC,aAAc/znC,KAAKpQ,QAAQ0R,MAIhD,OAH0B,OAArBtB,KAAKpQ,QAAQlG,MACjB8uF,EAAYhzF,KAAKmE,IAAK6uF,EAAWx4E,KAAK+znC,aAAc/znC,KAAKpQ,QAAQlG,OAE3D8uF,CACR,EAEAu7iC,aAAc,SAAU91lC,GACvB,IAAIxrB,EAAMwrB,EAAIj3C,WACbgrE,EAAUv/C,EAAIlqB,QAAS,KACxB,OAAoB,IAAbypE,EAAiB,EAAIv/C,EAAIre,OAAS49D,EAAU,CACpD,EAEAqgkC,UAAW,WACV,OAAOrynC,KAAKpQ,QAAQlG,GACrB,EAEAkpoC,UAAW,WACV,OAAO5ynC,KAAKrW,GACb,EAEAiqoC,cAAe,SAAUtggB,GACH,aAAhBA,GACJtznB,KAAK6T,MAAM1qB,IAAK,CAAE,MAAS,GAAI,KAAQ,KAEnB,eAAhBmqoB,GACJtznB,KAAK6T,MAAM1qB,IAAK,CAAE,OAAU,GAAI,OAAU,IAE5C,EAEAgmoC,cAAe,WACd,IAAI6E,EAAgBC,EAAYtuoC,EAAOuuoC,EAAUC,EAChDC,EAASp0nC,KAAKpQ,QAAQikB,MACtB8vD,EAAI3jE,KAAKpQ,QACT0mN,EAAOt2M,KACPg9E,GAAah9E,KAAK6xnC,aAAgBlujC,EAAEqZ,QACpC2hP,EAAO,CAAC,EAEJ3+T,KAAKyznC,qBACTzznC,KAAK0mnC,QAAQ91mC,KAAM,SAAUvrB,GAC5B4uoC,GAAe396B,EAAK1tL,OAAQvjC,GAAMixN,EAAK+76B,cAAkB/76B,EAAKs86B,YAC7Dt86B,EAAK+76B,aAAgB,IACtB1zzB,EAA2B,eAArBroH,EAAKg9a,YAA+B,OAAS,UAAa2ggB,EAAa,IAC7EvqiC,EAAG1pF,MAAO0F,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS2hP,EAAMh7P,EAAEqZ,UACnC,IAAvBs5H,EAAK1mN,QAAQikB,QACS,eAArByiM,EAAKg9a,aACE,IAANjuoB,GACJixN,EAAKziM,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvD7yF,KAAM8poC,EAAa,KACjBtwjC,EAAEqZ,SAEK,IAAN33F,GACJixN,EAAKziM,MAAOmpE,EAAU,UAAY,OAAS,CAC1Ct2F,MAASutoC,EAAaD,EAAmB,KACvC,CACFp3gC,OAAO,EACP13G,SAAUy+D,EAAEqZ,YAIH,IAAN33F,GACJixN,EAAKziM,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvD9yF,OAAQ,EAAiB,KACvBy5E,EAAEqZ,SAEK,IAAN33F,GACJixN,EAAKziM,MAAOmpE,EAAU,UAAY,OAAS,CAC1Cp2F,OAAUqtoC,EAAaD,EAAmB,KACxC,CACFp3gC,OAAO,EACP13G,SAAUy+D,EAAEqZ,YAKhBg3iC,EAAiBC,CAClB,IAEAtuoC,EAAQqa,KAAKra,QACbuuoC,EAAWl0nC,KAAKqynC,YAChB8B,EAAWn0nC,KAAK4ynC,YAChBqB,EAAeE,IAAaD,GACxBvuoC,EAAQuuoC,IAAeC,EAAWD,GAAa,IACjD,EACFv1zB,EAA2B,eAArB3+T,KAAKsznB,YAA+B,OAAS,UAAa2ggB,EAAa,IAC7Ej0nC,KAAKunO,OAAO7hO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS2hP,EAAMh7P,EAAEqZ,SAEjD,QAAXo3iC,GAAyC,eAArBp0nC,KAAKsznB,aAC7BtznB,KAAK6T,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvDt2F,MAAOutoC,EAAa,KAClBtwjC,EAAEqZ,SAEU,QAAXo3iC,GAAyC,eAArBp0nC,KAAKsznB,aAC7BtznB,KAAK6T,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvDt2F,MAAS,IAAMutoC,EAAe,KAC5BtwjC,EAAEqZ,SAEU,QAAXo3iC,GAAyC,aAArBp0nC,KAAKsznB,aAC7BtznB,KAAK6T,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvDp2F,OAAQqtoC,EAAa,KACnBtwjC,EAAEqZ,SAEU,QAAXo3iC,GAAyC,aAArBp0nC,KAAKsznB,aAC7BtznB,KAAK6T,MAAMnO,KAAM,EAAG,GAAKs3E,EAAU,UAAY,OAAS,CACvDp2F,OAAU,IAAMqtoC,EAAe,KAC7BtwjC,EAAEqZ,SAGR,EAEAs1iC,cAAe,CACdjrT,QAAS,SAAUl7zB,GAClB,IAAakonC,EAAQrr3B,EAAQ1nQ,EAC5B9K,EAAQkzF,EAAGv9E,EAAMpe,QAASgI,KAAM,0BAEjC,OAASoW,EAAMyrS,SACd,KAAKluN,EAAE8gT,GAAG5yF,QAAQm+vB,KAClB,KAAKrs9B,EAAE8gT,GAAG5yF,QAAQk+vB,IAClB,KAAKps9B,EAAE8gT,GAAG5yF,QAAQg+vB,QAClB,KAAKls9B,EAAE8gT,GAAG5yF,QAAQi+vB,UAClB,KAAKns9B,EAAE8gT,GAAG5yF,QAAQo+vB,GAClB,KAAKts9B,EAAE8gT,GAAG5yF,QAAQhmD,MAClB,KAAKloK,EAAE8gT,GAAG5yF,QAAQq+vB,KAClB,KAAKvs9B,EAAE8gT,GAAG5yF,QAAQjnD,KAEjB,GADAxkP,EAAMwgH,kBACA3sH,KAAK2xnC,cACV3xnC,KAAK2xnC,aAAc,EACnB3xnC,KAAK0hmC,UAAWh4gC,EAAGv9E,EAAMpe,QAAU,KAAM,oBAExB,IADPiS,KAAKwjC,OAAQr3B,EAAO3V,IAE7B,OAaJ,OAPA8K,EAAOtB,KAAKpQ,QAAQ0R,KAEnB+ynC,EAASrr3B,EADLhpQ,KAAKyznC,qBACSzznC,KAAK4oB,OAAQpyB,GAEbwJ,KAAKra,QAGfwmB,EAAMyrS,SACd,KAAKluN,EAAE8gT,GAAG5yF,QAAQm+vB,KACjB/syB,EAAShpQ,KAAKqynC,YACd,MACD,KAAK3oiC,EAAE8gT,GAAG5yF,QAAQk+vB,IACjB9syB,EAAShpQ,KAAK4ynC,YACd,MACD,KAAKlpiC,EAAE8gT,GAAG5yF,QAAQg+vB,QACjB5syB,EAAShpQ,KAAKsznC,gBACbe,GAAar0nC,KAAK4ynC,YAAc5ynC,KAAKqynC,aAAgBrynC,KAAKul5B,UAE3D,MACD,KAAK77zB,EAAE8gT,GAAG5yF,QAAQi+vB,UACjB7syB,EAAShpQ,KAAKsznC,gBACbe,GAAar0nC,KAAK4ynC,YAAc5ynC,KAAKqynC,aAAgBrynC,KAAKul5B,UAC3D,MACD,KAAK77zB,EAAE8gT,GAAG5yF,QAAQo+vB,GAClB,KAAKts9B,EAAE8gT,GAAG5yF,QAAQhmD,MACjB,GAAKyi4B,IAAWr0nC,KAAK4ynC,YACpB,OAED5p3B,EAAShpQ,KAAKsznC,gBAAiBe,EAAS/ynC,GACxC,MACD,KAAKooF,EAAE8gT,GAAG5yF,QAAQq+vB,KAClB,KAAKvs9B,EAAE8gT,GAAG5yF,QAAQjnD,KACjB,GAAK0j4B,IAAWr0nC,KAAKqynC,YACpB,OAEDrp3B,EAAShpQ,KAAKsznC,gBAAiBe,EAAS/ynC,GAI1CtB,KAAKgznC,OAAQ7mnC,EAAO3V,EAAOwyQ,EAC5B,EACAy1H,MAAO,SAAUtyX,GAChB,IAAI3V,EAAQkzF,EAAGv9E,EAAMpe,QAASgI,KAAM,0BAE/BiK,KAAK2xnC,cACT3xnC,KAAK2xnC,aAAc,EACnB3xnC,KAAKkhE,MAAO/0D,EAAO3V,GACnBwJ,KAAK0ja,QAASv3Z,EAAO3V,GACrBwJ,KAAK+gmC,aAAcr3gC,EAAGv9E,EAAMpe,QAAU,KAAM,mBAE9C,KAuBoB27F,EAAEm9Q,OAAQ,cAAen9Q,EAAE8gT,GAAGwtE,MAAO,CAC1DnzY,QAAS,SACTo7hC,kBAAmB,OACnB9+1B,OAAO,EACPvxQ,QAAS,CACR+tpB,SAAU,SACVzrpB,MAAM,EACNoioC,aAAa,EACbhS,aAAa,EACbx1iC,OAAQ,OACRy1iC,UAAU,EACVgS,aAAa,EACbC,sBAAsB,EACtBC,iBAAiB,EACjBx+kC,MAAM,EACNsxL,QAAQ,EACR80a,OAAQ,WACRnonB,MAAO,MACPz2B,SAAS,EACTkkN,aAAa,EACbo1V,QAAQ,EACRnkjB,QAAQ,EACR8vnC,kBAAmB,GACnBt6c,YAAa,GACbz/oB,MAAO,UACP00oB,UAAW,YACXr8O,OAAQ,IAGR87N,SAAU,KACV43e,WAAY,KACZpxkC,OAAQ,KACRqqkC,WAAY,KACZlkhC,IAAK,KACL6pjB,KAAM,KACNxiB,QAAS,KACTlumB,OAAQ,KACRxvC,KAAM,KACN3G,MAAO,KACPiZ,KAAM,KACNtP,OAAQ,MAGTu+nC,YAAa,SAAUpuoC,EAAG4I,EAAW4jB,GACpC,OAASxsB,GAAK4I,GAAiB5I,EAAM4I,EAAY4jB,CAClD,EAEA6hnC,YAAa,SAAU5hnC,GACtB,MAAO,aAAiB9wB,KAAM8wB,EAAK7pB,IAAK,WACvC,oBAAwBjH,KAAM8wB,EAAK7pB,IAAK,WAC1C,EAEA877B,QAAS,WACRjl7B,KAAK0lnC,eAAiB,CAAC,EACvB1lnC,KAAK0hmC,UAAW,eAGhB1hmC,KAAKuvQ,UAGLvvQ,KAAKpb,OAASob,KAAK1Z,QAAQ1B,SAG3Bob,KAAK07gB,aAEL17gB,KAAK8inC,sBAGL9inC,KAAKmhQ,OAAQ,CAEd,EAEA+/1B,WAAY,SAAU12mC,EAAK7E,GAC1Bqa,KAAKgE,OAAQxZ,EAAK7E,GAEL,WAAR6E,GACJwV,KAAK8inC,qBAEP,EAEAA,oBAAqB,WACpB,IAAIxs6B,EAAOt2M,KACXA,KAAK+gmC,aAAc/gmC,KAAK1Z,QAAQuU,KAAM,uBAAyB,sBAC/D6uF,EAAE94E,KAAM5Q,KAAKk0B,MAAO,WACnBoiL,EAAKor5B,UACJ1hmC,KAAK3K,SAASzF,QAAQ23O,OACrBvnO,KAAKgT,KAAKnY,KAAMmF,KAAK3K,SAASzF,QAAQ23O,QACtCvnO,KAAKgT,KACN,qBAEF,EACD,EAEAg4B,SAAU,WACThrC,KAAK27gB,gBAEL,IAAM,IAAIt2hB,EAAI2a,KAAKk0B,MAAM9/B,OAAS,EAAG/O,GAAK,EAAGA,IAC5C2a,KAAKk0B,MAAO7uC,GAAI2tB,KAAKivP,WAAYjiQ,KAAKkgmC,WAAa,SAGpD,OAAOlgmC,IACR,EAEA67gB,cAAe,SAAU1vgB,EAAO0onC,GAC/B,IAAIjhS,EAAc,KACjBkhS,GAAc,EACdx+6B,EAAOt2M,KAER,QAAKA,KAAK+0nC,WAIL/0nC,KAAKpQ,QAAQo+C,UAAkC,WAAtBhuC,KAAKpQ,QAAQogB,OAK3ChQ,KAAKg1nC,cAAe7onC,GAGpBu9E,EAAGv9E,EAAMpe,QAASy6G,UAAU53F,KAAM,WACjC,GAAK84E,EAAE3zF,KAAMiK,KAAMs2M,EAAK4p5B,WAAa,WAAc5p5B,EAElD,OADAs9oB,EAAclqwB,EAAG1pF,OACV,CAET,GACK0pF,EAAE3zF,KAAMoW,EAAMpe,OAAQuoN,EAAK4p5B,WAAa,WAAc5p5B,IAC1Ds9oB,EAAclqwB,EAAGv9E,EAAMpe,UAGlB6l2B,GAGD5z1B,KAAKpQ,QAAQ23O,SAAWst5B,IAC5BnriC,EAAG1pF,KAAKpQ,QAAQ23O,OAAQqsnB,GAAc/41B,KAAM,KAAM209B,UAAU5+8B,KAAM,WAC5D5Q,OAASmM,EAAMpe,SACnB+moC,GAAc,EAEhB,IACMA,KAKP90nC,KAAK4z1B,YAAcA,EACnB5z1B,KAAKi1nC,2BACE,IAER,EAEAnT,YAAa,SAAU31mC,EAAO0onC,EAAgBK,GAE7C,IAAI7voC,EAAGqI,EACNi2E,EAAI3jE,KAAKpQ,QAqHV,GAnHAoQ,KAAKm1nC,iBAAmBn1nC,KAIxBA,KAAKyinC,mBAGLzinC,KAAKq8oB,OAASr8oB,KAAKsjnC,cAAen3mC,GAGlCnM,KAAKujnC,0BAQLvjnC,KAAKyjnC,gBAGLzjnC,KAAKnS,aAAemS,KAAKq8oB,OAAOxupB,eAGhCmS,KAAKpb,OAASob,KAAK4z1B,YAAYhv2B,SAC/Bob,KAAKpb,OAAS,CACboF,IAAKgW,KAAKpb,OAAOoF,IAAMgW,KAAKonD,QAAQp9D,IACpCG,KAAM6V,KAAKpb,OAAOuF,KAAO6V,KAAKonD,QAAQj9D,MAGvCu/F,EAAEsZ,OAAQhjG,KAAKpb,OAAQ,CACtBwrI,MAAO,CACNjmI,KAAMgiB,EAAM05a,MAAQ7lb,KAAKpb,OAAOuF,KAChCH,IAAKmiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOoF,KAEhCvC,OAAQuY,KAAKqknC,mBAIb/izB,SAAUthU,KAAKsknC,uBAKhBtknC,KAAKq8oB,OAAOlzpB,IAAK,WAAY,YAC7B6W,KAAKkomC,YAAclomC,KAAKq8oB,OAAOlzpB,IAAK,YAGpC6W,KAAK4nd,iBAAmB5nd,KAAK6jnC,kBAAmB13mC,GAChDnM,KAAK8jnC,cAAgB33mC,EAAM05a,MAC3B7lb,KAAK+jnC,cAAgB53mC,EAAM25a,MAGzBniX,EAAE4+iC,UAAYvinC,KAAKgknC,wBAAyBrgjC,EAAE4+iC,UAGhDvinC,KAAKo1nC,YAAc,CAClBv6lC,KAAM76B,KAAK4z1B,YAAY/4zB,OAAQ,GAC/BpzC,OAAQuY,KAAK4z1B,YAAYns2B,SAAU,IAK/BuY,KAAKq8oB,OAAQ,KAAQr8oB,KAAK4z1B,YAAa,IAC3C5z1B,KAAK4z1B,YAAY7uzB,OAIlB/kC,KAAKq1nC,qBAGA1xjC,EAAE2+iC,aACNtinC,KAAKiknC,kBAGDtgjC,EAAEmJ,QAAuB,SAAbnJ,EAAEmJ,SAClBp/E,EAAOsS,KAAKvX,SAASoS,KAAM,QAG3BmF,KAAKs1nC,aAAe5noC,EAAKvE,IAAK,UAC9BuE,EAAKvE,IAAK,SAAUw6E,EAAEmJ,QAEtB9sE,KAAKu1nC,iBACJ7riC,EAAG,qBAAuB/lB,EAAEmJ,OAAS,0BAA2B6wkB,SAAUjwpB,IAGvEi2E,EAAElmE,UACDuC,KAAKq8oB,OAAOlzpB,IAAK,aACrB6W,KAAKw1nC,eAAiBx1nC,KAAKq8oB,OAAOlzpB,IAAK,YAExC6W,KAAKq8oB,OAAOlzpB,IAAK,UAAWw6E,EAAElmE,UAG1BkmE,EAAEq9W,SACDhhb,KAAKq8oB,OAAOlzpB,IAAK,YACrB6W,KAAKy1nC,cAAgBz1nC,KAAKq8oB,OAAOlzpB,IAAK,WAEvC6W,KAAKq8oB,OAAOlzpB,IAAK,SAAUw6E,EAAEq9W,SAIzBhhb,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IACV,SAAnCuX,KAAKnS,aAAc,GAAImjH,UACxBhxG,KAAKgmnC,eAAiBhmnC,KAAKnS,aAAajJ,UAIzCob,KAAKkl7B,SAAU,QAAS/46B,EAAOnM,KAAKyknC,WAG9BzknC,KAAK01nC,4BACV11nC,KAAKujnC,2BAIA2R,EACL,IAAM7voC,EAAI2a,KAAK83gB,WAAW1jhB,OAAS,EAAG/O,GAAK,EAAGA,IAC7C2a,KAAK83gB,WAAYzyhB,GAAI6/7B,SAAU,WAAY/46B,EAAOnM,KAAKyknC,QAASzknC,OAoBlE,OAfK0pF,EAAE8gT,GAAGg5uB,YACT95hC,EAAE8gT,GAAGg5uB,UAAU3tnC,QAAUmK,MAGrB0pF,EAAE8gT,GAAGg5uB,YAAc7/iC,EAAEugjC,eACzBx6hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgBnknC,KAAMmM,GAGtCnM,KAAK83Y,UAAW,EAEhB93Y,KAAK0hmC,UAAW1hmC,KAAKq8oB,OAAQ,sBAI7Br8oB,KAAKiinC,WAAY91mC,IACV,CAER,EAEA81mC,WAAY,SAAU91mC,GACrB,IAAI9mB,EAAG2tB,EAAM2inC,EAAahx6B,EACzBhhJ,EAAI3jE,KAAKpQ,QACTkkrB,GAAW,EAwEZ,IArEA9zqB,KAAKlX,SAAWkX,KAAK6jnC,kBAAmB13mC,GACxCnM,KAAK2jnC,YAAc3jnC,KAAKwknC,mBAAoB,YAEtCxknC,KAAK41nC,kBACV51nC,KAAK41nC,gBAAkB51nC,KAAK2jnC,aAIxB3jnC,KAAKpQ,QAAQgD,SACZoN,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IACV,SAAnCuX,KAAKnS,aAAc,GAAImjH,SAEjBhxG,KAAKgmnC,eAAeh8nC,IAAMgW,KAAKnS,aAAc,GAAIhH,aACtDslB,EAAM25a,MAAQniX,EAAE++iC,kBACjB1inC,KAAKnS,aAAc,GAAIZ,UACtB6mrB,EAAW9zqB,KAAKnS,aAAc,GAAIZ,UAAY02E,EAAEykmB,YACtCj8pB,EAAM25a,MAAQ9lb,KAAKgmnC,eAAeh8nC,IAAM25E,EAAE++iC,oBACrD1inC,KAAKnS,aAAc,GAAIZ,UACtB6mrB,EAAW9zqB,KAAKnS,aAAc,GAAIZ,UAAY02E,EAAEykmB,aAG3CpoqB,KAAKgmnC,eAAe77nC,KAAO6V,KAAKnS,aAAc,GAAIlH,YACvDwlB,EAAM05a,MAAQliX,EAAE++iC,kBACjB1inC,KAAKnS,aAAc,GAAId,WAAa+mrB,EACnC9zqB,KAAKnS,aAAc,GAAId,WAAa42E,EAAEykmB,YAC5Bj8pB,EAAM05a,MAAQ7lb,KAAKgmnC,eAAe77nC,KAAOw5E,EAAE++iC,oBACtD1inC,KAAKnS,aAAc,GAAId,WAAa+mrB,EACnC9zqB,KAAKnS,aAAc,GAAId,WAAa42E,EAAEykmB,eAKnCj8pB,EAAM25a,MAAQ9lb,KAAKvX,SAASwE,YAAc02E,EAAE++iC,kBAChD5uc,EAAW9zqB,KAAKvX,SAASwE,UAAW+S,KAAKvX,SAASwE,YAAc02E,EAAEykmB,aACvDpoqB,KAAK7Y,OAAOP,UAAaulB,EAAM25a,MAAQ9lb,KAAKvX,SAASwE,aAC/D02E,EAAE++iC,oBACH5uc,EAAW9zqB,KAAKvX,SAASwE,UAAW+S,KAAKvX,SAASwE,YAAc02E,EAAEykmB,cAG9Dj8pB,EAAM05a,MAAQ7lb,KAAKvX,SAASsE,aAAe42E,EAAE++iC,kBACjD5uc,EAAW9zqB,KAAKvX,SAASsE,WACxBiT,KAAKvX,SAASsE,aAAe42E,EAAEykmB,aAErBpoqB,KAAK7Y,OAAOT,SAAYylB,EAAM05a,MAAQ7lb,KAAKvX,SAASsE,cAC9D42E,EAAE++iC,oBACH5uc,EAAW9zqB,KAAKvX,SAASsE,WACxBiT,KAAKvX,SAASsE,aAAe42E,EAAEykmB,gBAMhB,IAAb0L,GAAsBpqlB,EAAE8gT,GAAGg5uB,YAAc7/iC,EAAEugjC,eAC/Cx6hC,EAAE8gT,GAAGg5uB,UAAUW,eAAgBnknC,KAAMmM,IAKvCnM,KAAK2jnC,YAAc3jnC,KAAKwknC,mBAAoB,YAGtCxknC,KAAKpQ,QAAQsC,MAA8B,MAAtB8N,KAAKpQ,QAAQsC,OACvC8N,KAAKq8oB,OAAQ,GAAI3ynB,MAAMv/B,KAAO6V,KAAKlX,SAASqB,KAAO,MAE9C6V,KAAKpQ,QAAQsC,MAA8B,MAAtB8N,KAAKpQ,QAAQsC,OACvC8N,KAAKq8oB,OAAQ,GAAI3ynB,MAAM1/B,IAAMgW,KAAKlX,SAASkB,IAAM,MAI5C3E,EAAI2a,KAAKk0B,MAAM9/B,OAAS,EAAG/O,GAAK,EAAGA,IAMxC,GAFAswoC,GADA3inC,EAAOhT,KAAKk0B,MAAO7uC,IACA2tB,KAAM,IACzB2xM,EAAe3kN,KAAK61nC,uBAAwB7inC,KAYvCA,EAAK3d,WAAa2K,KAAKm1nC,oBAOvBQ,IAAgB31nC,KAAK4z1B,YAAa,IACtC5z1B,KAAK2hN,YAA8B,IAAjBgD,EAAqB,OAAS,UAAY,KAAQgx6B,GACnEjsiC,EAAEliG,SAAUwY,KAAK2hN,YAAa,GAAKg06B,IACZ,iBAAtB31nC,KAAKpQ,QAAQogB,MACb05E,EAAEliG,SAAUwY,KAAK1Z,QAAS,GAAKqvoC,IAGhC,CAID,GAFA31nC,KAAKjR,UAA6B,IAAjB41N,EAAqB,OAAS,KAEf,YAA3B3kN,KAAKpQ,QAAQytqB,YAA2Br9pB,KAAK81nC,qBAAsB9inC,GAGvE,MAFAhT,KAAK+1nC,WAAY5pnC,EAAO6G,GAKzBhT,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,WACrC,KACD,CAeD,OAXAzknC,KAAKg2nC,mBAAoB7pnC,GAGpBu9E,EAAE8gT,GAAGg5uB,WACT95hC,EAAE8gT,GAAGg5uB,UAAU3sqB,KAAM72c,KAAMmM,GAI5BnM,KAAKkl7B,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,WAEnCzknC,KAAK41nC,gBAAkB51nC,KAAK2jnC,aACrB,CAER,EAEAzB,WAAY,SAAU/1mC,EAAOo4mC,GAE5B,GAAMp4mC,EAAN,CASA,GAJKu9E,EAAE8gT,GAAGg5uB,YAAcxjnC,KAAKpQ,QAAQs0nC,eACpCx6hC,EAAE8gT,GAAGg5uB,UAAUv5mB,KAAMjqgB,KAAMmM,GAGvBnM,KAAKpQ,QAAQmnjB,OAAS,CAC1B,IAAIzgW,EAAOt2M,KACVyiC,EAAMziC,KAAK2hN,YAAY/8N,SACvBsN,EAAO8N,KAAKpQ,QAAQsC,KACpB62B,EAAY,CAAC,EAER72B,GAAiB,MAATA,IACb62B,EAAU5+B,KAAOs4C,EAAIt4C,KAAO6V,KAAKpb,OAAO6C,OAAO0C,KAAO6V,KAAKonD,QAAQj9D,MAChE6V,KAAKjX,aAAc,KAAQiX,KAAKvX,SAAU,GAAIiF,KAC/C,EACAsS,KAAKjX,aAAc,GAAIgE,aAGpBmF,GAAiB,MAATA,IACb62B,EAAU/+B,IAAMy4C,EAAIz4C,IAAMgW,KAAKpb,OAAO6C,OAAOuC,IAAMgW,KAAKonD,QAAQp9D,KAC7DgW,KAAKjX,aAAc,KAAQiX,KAAKvX,SAAU,GAAIiF,KAC/C,EACAsS,KAAKjX,aAAc,GAAIkE,YAG1B+S,KAAK+0nC,WAAY,EACjBrriC,EAAG1pF,KAAKq8oB,QAASr/jB,QAChBj0D,EACA5C,SAAUnmB,KAAKpQ,QAAQmnjB,OAAQ,KAAQ,IACvC,WACCzgW,EAAK4uoB,OAAQ/40B,EACd,EAEF,MACCnM,KAAKkl1B,OAAQ/40B,EAAOo4mC,GAGrB,OAAO,CAvCP,CAyCD,EAEA5hlC,OAAQ,WAEP,GAAK3iC,KAAK83Y,SAAW,CAEpB93Y,KAAKshnC,SAAU,IAAI53hC,EAAEi1a,MAAO,UAAW,CAAE5wgB,OAAQ,QAEpB,aAAxBiS,KAAKpQ,QAAQyspB,QACjBr8oB,KAAK4z1B,YAAYzq2B,IAAK6W,KAAKslnC,YAC3BtlnC,KAAK+gmC,aAAc/gmC,KAAK4z1B,YAAa,uBAErC5z1B,KAAK4z1B,YAAYhvzB,OAIlB,IAAM,IAAIv/C,EAAI2a,KAAK83gB,WAAW1jhB,OAAS,EAAG/O,GAAK,EAAGA,IACjD2a,KAAK83gB,WAAYzyhB,GAAI6/7B,SAAU,aAAc,KAAMll7B,KAAKyknC,QAASzknC,OAC5DA,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,OACxCtzpB,KAAK83gB,WAAYzyhB,GAAI6/7B,SAAU,MAAO,KAAMll7B,KAAKyknC,QAASzknC,OAC1DA,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,KAAO,EAI9C,CA4BA,OA1BKtzpB,KAAK2hN,cAIJ3hN,KAAK2hN,YAAa,GAAI35N,YAC1BgY,KAAK2hN,YAAa,GAAI35N,WAAWkoG,YAAalwF,KAAK2hN,YAAa,IAEpC,aAAxB3hN,KAAKpQ,QAAQyspB,QAAyBr8oB,KAAKq8oB,QAC9Cr8oB,KAAKq8oB,OAAQ,GAAIr0pB,YAClBgY,KAAKq8oB,OAAOz5mB,SAGb8mD,EAAEsZ,OAAQhjG,KAAM,CACfq8oB,OAAQ,KACRvkQ,UAAU,EACVi9uB,WAAW,EACXkB,aAAc,OAGVj2nC,KAAKo1nC,YAAYv6lC,KACrB6uD,EAAG1pF,KAAKo1nC,YAAYv6lC,MAAOs1C,MAAOnwE,KAAK4z1B,aAEvClqwB,EAAG1pF,KAAKo1nC,YAAY3toC,QAAS48Q,QAASrkQ,KAAK4z1B,cAItC5z1B,IAER,EAEAwjH,UAAW,SAAU7/C,GAEpB,IAAIzvC,EAAQl0B,KAAKk2nC,kBAAmBvyjC,GAAKA,EAAEo1c,WAC1CtmgB,EAAM,GAiBP,OAhBAkxD,EAAIA,GAAK,CAAC,EAEV+lB,EAAGx1D,GAAQtjB,KAAM,WAChB,IAAIwzB,GAAQslD,EAAG/lB,EAAE3wD,MAAQhT,MAAOu3P,KAAM5zL,EAAEmxM,WAAa,OAAU,IAC7D9wR,MAAO2/E,EAAEi7K,YAAc,kBACpBx6M,GACJ3xB,EAAI3e,MACD6vE,EAAEn5E,KAAO45C,EAAK,GAAM,MACtB,KAAQu/B,EAAEn5E,KAAOm5E,EAAEi7K,WAAax6M,EAAK,GAAMA,EAAK,IAEnD,IAEM3xB,EAAIre,QAAUuvE,EAAEn5E,KACrBioB,EAAI3e,KAAM6vE,EAAEn5E,IAAM,KAGZioB,EAAIvU,KAAM,IAElB,EAEA4lN,QAAS,SAAUngJ,GAElB,IAAIzvC,EAAQl0B,KAAKk2nC,kBAAmBvyjC,GAAKA,EAAEo1c,WAC1Clzf,EAAM,GAOP,OALA89C,EAAIA,GAAK,CAAC,EAEVzvC,EAAMtjB,KAAM,WACXiV,EAAI/xB,KAAM41F,EAAG/lB,EAAE3wD,MAAQhT,MAAOu3P,KAAM5zL,EAAEmxM,WAAa,OAAU,GAC9D,GACOjvP,CAER,EAGA4/lC,gBAAiB,SAAUzymC,GAE1B,IAAImgD,EAAKnzD,KAAK2jnC,YAAYx5nC,KACzBkpE,EAAKF,EAAKnzD,KAAK8knC,kBAAkBp+nC,MACjC0sE,EAAKpzD,KAAK2jnC,YAAY35nC,IACtBspE,EAAKF,EAAKpzD,KAAK8knC,kBAAkBl+nC,OACjC4xB,EAAIxF,EAAK7oB,KACT4vB,EAAIvB,EAAIxF,EAAKtsB,MACbka,EAAIoS,EAAKhpB,IACT6P,EAAI+G,EAAIoS,EAAKpsB,OACbuvoC,EAAUn2nC,KAAKpb,OAAOwrI,MAAMpmI,IAC5BosoC,EAAUp2nC,KAAKpb,OAAOwrI,MAAMjmI,KAC5BksoC,EAA8C,MAAtBr2nC,KAAKpQ,QAAQsC,MAAsBkhE,EAAK+ikC,EAAYv1nC,GACzEwyD,EAAK+ikC,EAAYt8nC,EACpBy8nC,EAA6C,MAAtBt2nC,KAAKpQ,QAAQsC,MAAsBihE,EAAKijkC,EAAY59mC,GACxE26C,EAAKijkC,EAAYr8mC,EACpBw8mC,EAAgBF,GAAuBC,EAExC,MAAgC,YAA3Bt2nC,KAAKpQ,QAAQytqB,WACjBr9pB,KAAKpQ,QAAQ4moC,2BACgB,YAA3Bx2nC,KAAKpQ,QAAQytqB,WACdr9pB,KAAK8knC,kBAAmB9knC,KAAKg1C,SAAW,QAAU,UAClDhiC,EAAMhT,KAAKg1C,SAAW,QAAU,UAE1BuhlC,EAGE/9mC,EAAI26C,EAAOnzD,KAAK8knC,kBAAkBp+nC,MAAQ,GAClD2sE,EAAOrzD,KAAK8knC,kBAAkBp+nC,MAAQ,EAAMqzB,GAC5CnZ,EAAIwyD,EAAOpzD,KAAK8knC,kBAAkBl+nC,OAAS,GAC3C0sE,EAAOtzD,KAAK8knC,kBAAkBl+nC,OAAS,EAAMiT,CAGhD,EAEAg8nC,uBAAwB,SAAU7inC,GACjC,IAAIyjnC,EAAmBC,EACtBL,EAA8C,MAAtBr2nC,KAAKpQ,QAAQsC,MACpC8N,KAAK20nC,YACJ30nC,KAAK2jnC,YAAY35nC,IAAMgW,KAAKpb,OAAOwrI,MAAMpmI,IAAKgpB,EAAKhpB,IAAKgpB,EAAKpsB,QAC/D0voC,EAA6C,MAAtBt2nC,KAAKpQ,QAAQsC,MACnC8N,KAAK20nC,YACJ30nC,KAAK2jnC,YAAYx5nC,KAAO6V,KAAKpb,OAAOwrI,MAAMjmI,KAAM6oB,EAAK7oB,KAAM6oB,EAAKtsB,OAGnE,SAFiB2voC,IAAuBC,KAMxCG,EAAoBz2nC,KAAK22nC,4BACzBD,EAAsB12nC,KAAK42nC,8BAEpB52nC,KAAKg1C,SACiB,UAAxB0hlC,GAAyD,SAAtBD,EAAiC,EAAI,EACxEA,IAA6C,SAAtBA,EAA+B,EAAI,GAEhE,EAEAX,qBAAsB,SAAU9inC,GAE/B,IAAI6jnC,EAAmB72nC,KAAK20nC,YAAa30nC,KAAK2jnC,YAAY35nC,IACxDgW,KAAKpb,OAAOwrI,MAAMpmI,IAAKgpB,EAAKhpB,IAAQgpB,EAAKpsB,OAAS,EAAKosB,EAAKpsB,QAC7DkwoC,EAAkB92nC,KAAK20nC,YAAa30nC,KAAK2jnC,YAAYx5nC,KACpD6V,KAAKpb,OAAOwrI,MAAMjmI,KAAM6oB,EAAK7oB,KAAS6oB,EAAKtsB,MAAQ,EAAKssB,EAAKtsB,OAC9D+voC,EAAoBz2nC,KAAK22nC,4BACzBD,EAAsB12nC,KAAK42nC,8BAE5B,OAAK52nC,KAAKg1C,UAAY0hlC,EACc,UAAxBA,GAAmCI,GACnB,SAAxBJ,IAAmCI,EAE/BL,IAA+C,SAAtBA,GAAgCI,GACvC,OAAtBJ,IAA+BI,EAGpC,EAEAF,0BAA2B,WAC1B,IAAIn8lC,EAAQx6B,KAAK2jnC,YAAY35nC,IAAMgW,KAAK41nC,gBAAgB5roC,IACxD,OAAiB,IAAVwwC,IAAiBA,EAAQ,EAAI,OAAS,KAC9C,EAEAo8lC,4BAA6B,WAC5B,IAAIp8lC,EAAQx6B,KAAK2jnC,YAAYx5nC,KAAO6V,KAAK41nC,gBAAgBzroC,KACzD,OAAiB,IAAVqwC,IAAiBA,EAAQ,EAAI,QAAU,OAC/C,EAEA+0O,QAAS,SAAUpjQ,GAIlB,OAHAnM,KAAKg1nC,cAAe7onC,GACpBnM,KAAK8inC,sBACL9inC,KAAKyinC,mBACEzinC,IACR,EAEA+2nC,aAAc,WACb,IAAInnoC,EAAUoQ,KAAKpQ,QACnB,OAAOA,EAAQ0koC,YAAY7znC,cAAgBF,OAC1C,CAAE3Q,EAAQ0koC,aACV1koC,EAAQ0koC,WACV,EAEA4B,kBAAmB,SAAUn9mB,GAE5B,IAAI1zhB,EAAG2gC,EAAGyc,EAAKgjkC,EACdvxkC,EAAQ,GACR8imC,EAAU,GACV1C,EAAct0nC,KAAK+2nC,eAEpB,GAAKzC,GAAev7mB,EACnB,IAAM1zhB,EAAIivoC,EAAYlgoC,OAAS,EAAG/O,GAAK,EAAGA,IAEzC,IAAM2gC,GADNyc,EAAMinD,EAAG4qiC,EAAajvoC,GAAK2a,KAAKvX,SAAU,KAC5B2L,OAAS,EAAG4xB,GAAK,EAAGA,KACjCy/kC,EAAO/7gC,EAAE3zF,KAAM0sC,EAAKzc,GAAKhmB,KAAKu7oB,kBACjBkqd,IAASzlmC,OAASylmC,EAAK71mC,QAAQo+C,UAC3CgplC,EAAQljoC,KAAM,CAAE41F,EAAE72E,WAAY4ylC,EAAK71mC,QAAQskC,OAC1CuxkC,EAAK71mC,QAAQskC,MAAM7zB,KAAMolmC,EAAKn/mC,SAC9BojG,EAAG+7gC,EAAK71mC,QAAQskC,MAAOuxkC,EAAKn/mC,SAC1B02O,IAAK,uBACLA,IAAK,4BAA8Byo4B,IAa1C,SAASwxB,IACR/imC,EAAMpgC,KAAMkM,KACb,CACA,IAVAg3nC,EAAQljoC,KAAM,CAAE41F,EAAE72E,WAAY7S,KAAKpQ,QAAQskC,OAC1Cl0B,KAAKpQ,QAAQskC,MACX7zB,KAAML,KAAK1Z,QAAS,KAAM,CAAEsJ,QAASoQ,KAAKpQ,QAASojB,KAAMhT,KAAK4z1B,cAChElqwB,EAAG1pF,KAAKpQ,QAAQskC,MAAOl0B,KAAK1Z,SAC1B02O,IAAK,uBACLA,IAAK,4BAA8Bh9N,OAKhC3a,EAAI2xoC,EAAQ5ioC,OAAS,EAAG/O,GAAK,EAAGA,IACrC2xoC,EAAS3xoC,GAAK,GAAIurB,KAAMqmnC,GAGzB,OAAOvtiC,EAAGx1D,EAEX,EAEA+gmC,yBAA0B,WAEzB,IAAIrnoC,EAAOoS,KAAK4z1B,YAAY/41B,KAAM,SAAWmF,KAAKkgmC,WAAa,UAE/DlgmC,KAAKk0B,MAAQw1D,EAAEw83B,KAAMlm9B,KAAKk0B,MAAO,SAAUlhB,GAC1C,IAAM,IAAIgT,EAAI,EAAGA,EAAIp4B,EAAKwG,OAAQ4xB,IACjC,GAAKp4B,EAAMo4B,KAAQhT,EAAKA,KAAM,GAC7B,OAAO,EAGT,OAAO,CACR,EAED,EAEAginC,cAAe,SAAU7onC,GAExBnM,KAAKk0B,MAAQ,GACbl0B,KAAK83gB,WAAa,CAAE93gB,MAEpB,IAAI3a,EAAG2gC,EAAGyc,EAAKgjkC,EAAMyxB,EAAYC,EAAUnknC,EAAMoknC,EAChDljmC,EAAQl0B,KAAKk0B,MACb8imC,EAAU,CAAE,CAAEttiC,EAAE72E,WAAY7S,KAAKpQ,QAAQskC,OACxCl0B,KAAKpQ,QAAQskC,MAAM7zB,KAAML,KAAK1Z,QAAS,GAAK6lB,EAAO,CAAE6G,KAAMhT,KAAK4z1B,cAChElqwB,EAAG1pF,KAAKpQ,QAAQskC,MAAOl0B,KAAK1Z,SAAW0Z,OACxCs0nC,EAAct0nC,KAAK+2nC,eAGpB,GAAKzC,GAAet0nC,KAAKmhQ,MACxB,IAAM97Q,EAAIivoC,EAAYlgoC,OAAS,EAAG/O,GAAK,EAAGA,IAEzC,IAAM2gC,GADNyc,EAAMinD,EAAG4qiC,EAAajvoC,GAAK2a,KAAKvX,SAAU,KAC5B2L,OAAS,EAAG4xB,GAAK,EAAGA,KACjCy/kC,EAAO/7gC,EAAE3zF,KAAM0sC,EAAKzc,GAAKhmB,KAAKu7oB,kBACjBkqd,IAASzlmC,OAASylmC,EAAK71mC,QAAQo+C,WAC3CgplC,EAAQljoC,KAAM,CAAE41F,EAAE72E,WAAY4ylC,EAAK71mC,QAAQskC,OAC1CuxkC,EAAK71mC,QAAQskC,MACX7zB,KAAMolmC,EAAKn/mC,QAAS,GAAK6lB,EAAO,CAAE6G,KAAMhT,KAAK4z1B,cAC/ClqwB,EAAG+7gC,EAAK71mC,QAAQskC,MAAOuxkC,EAAKn/mC,SAAWm/mC,IACxCzlmC,KAAK83gB,WAAWhkhB,KAAM2xmC,IAM1B,IAAMpgnC,EAAI2xoC,EAAQ5ioC,OAAS,EAAG/O,GAAK,EAAGA,IAIrC,IAHA6xoC,EAAaF,EAAS3xoC,GAAK,GAGrB2gC,EAAI,EAAGoxmC,GAFbD,EAAWH,EAAS3xoC,GAAK,IAEa+O,OAAQ4xB,EAAIoxmC,EAAepxmC,KAChEhT,EAAO02E,EAAGytiC,EAAUnxmC,KAGfjwB,KAAMiK,KAAKkgmC,WAAa,QAASg3B,GAEtChjmC,EAAMpgC,KAAM,CACXkf,KAAMA,EACN3d,SAAU6hoC,EACVxwoC,MAAO,EAAGE,OAAQ,EAClBuD,KAAM,EAAGH,IAAK,GAKlB,EAEAy4nC,iBAAkB,SAAUx4a,GAa3B,IAAI5ktB,EAAG2tB,EAAMpS,EAAGT,EAEhB,IAZAH,KAAKg1C,WAAWh1C,KAAKk0B,MAAM9/B,SACJ,MAAtB4L,KAAKpQ,QAAQsC,MAAgB8N,KAAK40nC,YAAa50nC,KAAKk0B,MAAO,GAAIlhB,OAK3DhT,KAAKjX,cAAgBiX,KAAKq8oB,SAC9Br8oB,KAAKpb,OAAO6C,OAASuY,KAAKqknC,oBAKrBh/nC,EAAI2a,KAAKk0B,MAAM9/B,OAAS,EAAG/O,GAAK,EAAGA,KACxC2tB,EAAOhT,KAAKk0B,MAAO7uC,IAGTgQ,WAAa2K,KAAKm1nC,kBAAoBn1nC,KAAKm1nC,kBACnDninC,EAAKA,KAAM,KAAQhT,KAAK4z1B,YAAa,KAIvChz1B,EAAIZ,KAAKpQ,QAAQynoC,iBAChB3tiC,EAAG1pF,KAAKpQ,QAAQynoC,iBAAkBrknC,EAAKA,MACvCA,EAAKA,KAEAi3rB,IACLj3rB,EAAKtsB,MAAQka,EAAE2/C,aACfvtC,EAAKpsB,OAASga,EAAE6/C,eAGjBtgD,EAAIS,EAAEhc,SACNouB,EAAK7oB,KAAOgW,EAAEhW,KACd6oB,EAAKhpB,IAAMmW,EAAEnW,KAGd,GAAKgW,KAAKpQ,QAAQyiD,QAAUryC,KAAKpQ,QAAQyiD,OAAOillC,kBAC/Ct3nC,KAAKpQ,QAAQyiD,OAAOillC,kBAAkBj3nC,KAAML,WAE5C,IAAM3a,EAAI2a,KAAK83gB,WAAW1jhB,OAAS,EAAG/O,GAAK,EAAGA,IAC7C8a,EAAIH,KAAK83gB,WAAYzyhB,GAAIiB,QAAQ1B,SACjCob,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAev7nC,KAAOgW,EAAEhW,KAC7C6V,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAe17nC,IAAMmW,EAAEnW,IAC5CgW,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAeh/nC,MACnCsZ,KAAK83gB,WAAYzyhB,GAAIiB,QAAQi6D,aAC9BvgD,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAe9+nC,OACnCoZ,KAAK83gB,WAAYzyhB,GAAIiB,QAAQm6D,cAIhC,OAAOzgD,IACR,EAEAq1nC,mBAAoB,SAAU/+6B,GAE7B,IAAIxsG,EACHnmC,GAFD2yI,EAAOA,GAAQt2M,MAELpQ,QAEJ+zE,EAAEg+I,aAAeh+I,EAAEg+I,YAAYlhN,cAAgBF,SACpDupG,EAAYnmC,EAAEg+I,YACdh+I,EAAEg+I,YAAc,CACfr7N,QAAS,WAER,IAAI6B,EAAWmuN,EAAKs9oB,YAAa,GAAIzr2B,SAASC,cAC7C9B,EAAUojG,EAAG,IAAMvhG,EAAW,IAAKmuN,EAAK7tN,SAAU,IAqBnD,OAnBC6tN,EAAKor5B,UAAWp7mC,EAAS,0BACvBwjH,GAAawsG,EAAKs9oB,YAAa,GAAI9pvB,WACnCi3/B,aAAcz6mC,EAAS,sBAER,UAAb6B,EACJmuN,EAAKih7B,qBACJjh7B,EAAKs9oB,YAAY/41B,KAAM,MAAO0e,GAAI,GAClCmwE,EAAG,OAAQ4sH,EAAK7tN,SAAU,IAAMk1pB,SAAUr3pB,IAEnB,OAAb6B,EACXmuN,EAAKih7B,qBAAsBjh7B,EAAKs9oB,YAAatt2B,GACrB,QAAb6B,GACX7B,EAAQixQ,KAAM,MAAOjhD,EAAKs9oB,YAAYr8lB,KAAM,QAGvCztJ,GACLxjH,EAAQ6C,IAAK,aAAc,UAGrB7C,CACR,EACA8P,OAAQ,SAAU0vD,EAAW3lD,GAMvB2pG,IAAcnmC,EAAE6wjC,uBAMfr0nC,EAAEvZ,UACPuZ,EAAEvZ,OACD0vN,EAAKs9oB,YAAY9lwB,cACjB3nE,SAAUmwL,EAAKs9oB,YAAYzq2B,IAAK,eAAkB,EAAG,IACrDg9B,SAAUmwL,EAAKs9oB,YAAYzq2B,IAAK,kBAAqB,EAAG,KAEpDgX,EAAEzZ,SACPyZ,EAAEzZ,MACD4vN,EAAKs9oB,YAAYhmwB,aACjBznE,SAAUmwL,EAAKs9oB,YAAYzq2B,IAAK,gBAAmB,EAAG,IACtDg9B,SAAUmwL,EAAKs9oB,YAAYzq2B,IAAK,iBAAoB,EAAG,KAE1D,IAKFmtN,EAAKqL,YAAcj4H,EAAG/lB,EAAEg+I,YAAYr7N,QAAQ+Z,KAAMi2M,EAAKhwN,QAASgwN,EAAKs9oB,cAGrEt9oB,EAAKs9oB,YAAYzjxB,MAAOmmI,EAAKqL,aAG7Bh+I,EAAEg+I,YAAYvrN,OAAQkgN,EAAMA,EAAKqL,YAElC,EAEA416B,qBAAsB,SAAUC,EAAUC,GACzC,IAAInh7B,EAAOt2M,KAEXw3nC,EAAShghC,WAAW5mG,KAAM,WACzB84E,EAAG,kBAAmB4sH,EAAK7tN,SAAU,IACnC8uQ,KAAM,UAAW7tK,EAAG1pF,MAAOu3P,KAAM,YAAe,GAChDomZ,SAAU85e,EACb,EACD,EAEAzB,mBAAoB,SAAU7pnC,GAC7B,IAAI9mB,EAAG2gC,EAAGgiM,EAAM0v6B,EAAuBC,EAAaz66B,EAAcz6K,EAAKm1lC,EACtE5ilC,EAAU9iD,EACV2loC,EAAqB,KACrBC,EAAiB,KAGlB,IAAMzyoC,EAAI2a,KAAK83gB,WAAW1jhB,OAAS,EAAG/O,GAAK,EAAGA,IAG7C,IAAKqkG,EAAEliG,SAAUwY,KAAK4z1B,YAAa,GAAK5z1B,KAAK83gB,WAAYzyhB,GAAIiB,QAAS,IAItE,GAAK0Z,KAAKylnC,gBAAiBzlnC,KAAK83gB,WAAYzyhB,GAAIqgoC,gBAAmB,CAGlE,GAAKmS,GACHnuiC,EAAEliG,SACDwY,KAAK83gB,WAAYzyhB,GAAIiB,QAAS,GAC9BuxoC,EAAmBvxoC,QAAS,IAC9B,SAGDuxoC,EAAqB73nC,KAAK83gB,WAAYzyhB,GACtCyyoC,EAAiBzyoC,CAElB,MAGM2a,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,OACxCtzpB,KAAK83gB,WAAYzyhB,GAAI6/7B,SAAU,MAAO/46B,EAAOnM,KAAKyknC,QAASzknC,OAC3DA,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,KAAO,GAO9C,GAAMuke,EAKN,GAAgC,IAA3B73nC,KAAK83gB,WAAW1jhB,OACd4L,KAAK83gB,WAAYggnB,GAAiBpS,eAAepyd,OACtDtzpB,KAAK83gB,WAAYggnB,GAAiB5yM,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,QAASzknC,OACzEA,KAAK83gB,WAAYggnB,GAAiBpS,eAAepyd,KAAO,OAEnD,CAWN,IAPAtrc,EAAO,IACP0v6B,EAAwB,KAExBC,GADA3ilC,EAAW6ilC,EAAmB7ilC,UAAYh1C,KAAK40nC,YAAa50nC,KAAK4z1B,cACxC,OAAS,MAClC12oB,EAAeloK,EAAW,QAAU,SACpC9iD,EAAO8iD,EAAW,QAAU,QAEtBhvB,EAAIhmB,KAAKk0B,MAAM9/B,OAAS,EAAG4xB,GAAK,EAAGA,IAClC0jE,EAAEliG,SACNwY,KAAK83gB,WAAYggnB,GAAiBxxoC,QAAS,GAAK0Z,KAAKk0B,MAAOlO,GAAIhT,KAAM,KAInEhT,KAAKk0B,MAAOlO,GAAIhT,KAAM,KAAQhT,KAAK4z1B,YAAa,KAIrDnxzB,EAAMziC,KAAKk0B,MAAOlO,GAAIhT,KAAKpuB,SAAU+yoC,GACrCC,GAAa,EACRzrnC,EAAOja,GAASuwC,EAAMziC,KAAKk0B,MAAOlO,GAAKk3L,GAAiB,IAC5D066B,GAAa,GAGTpyoC,KAAKM,IAAKqmB,EAAOja,GAASuwC,GAAQulL,IACtCA,EAAOxiO,KAAKM,IAAKqmB,EAAOja,GAASuwC,GACjCi1lC,EAAwB13nC,KAAKk0B,MAAOlO,GACpChmB,KAAKjR,UAAY6ooC,EAAa,KAAO,SAKvC,IAAMF,IAA0B13nC,KAAKpQ,QAAQ2koC,YAC5C,OAGD,GAAKv0nC,KAAKm1nC,mBAAqBn1nC,KAAK83gB,WAAYggnB,GAK/C,YAJM93nC,KAAKm1nC,iBAAiBzP,eAAepyd,OAC1CtzpB,KAAK83gB,WAAYggnB,GAAiB5yM,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,WAChEzknC,KAAKm1nC,iBAAiBzP,eAAepyd,KAAO,IAK9Coke,EACC13nC,KAAK+1nC,WAAY5pnC,EAAOurnC,EAAuB,MAAM,GACrD13nC,KAAK+1nC,WAAY5pnC,EAAO,KAAMnM,KAAK83gB,WAAYggnB,GAAiBxxoC,SAAS,GAC1E0Z,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,WACrCzknC,KAAK83gB,WAAYggnB,GAAiB5yM,SAAU,SAAU/46B,EAAOnM,KAAKyknC,QAASzknC,OAC3EA,KAAKm1nC,iBAAmBn1nC,KAAK83gB,WAAYggnB,GAGzC93nC,KAAKpQ,QAAQ+xN,YAAYvrN,OAAQ4J,KAAKm1nC,iBAAkBn1nC,KAAK2hN,aAE7D3hN,KAAK83gB,WAAYggnB,GAAiB5yM,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,QAASzknC,OACzEA,KAAK83gB,WAAYggnB,GAAiBpS,eAAepyd,KAAO,CACzD,CAED,EAEAgwd,cAAe,SAAUn3mC,GAExB,IAAIw3D,EAAI3jE,KAAKpQ,QACZyspB,EAAS3yjB,EAAE72E,WAAY8wD,EAAE04kB,QACxB3yjB,EAAG/lB,EAAE04kB,OAAOv7oB,MAAOd,KAAK1Z,QAAS,GAAK,CAAE6lB,EAAOnM,KAAK4z1B,eACrC,UAAbjwxB,EAAE04kB,OAAqBr8oB,KAAK4z1B,YAAY3u0B,QAAUjlB,KAAK4z1B,YA0B3D,OAvBMv3M,EAAO7ziB,QAAS,QAASp0G,QAC9Bs1F,EAAkB,WAAf/lB,EAAEg6kB,SACJh6kB,EAAEg6kB,SACF39oB,KAAK4z1B,YAAa,GAAI5r2B,YAAc,GAAImoG,YAAaksjB,EAAQ,IAG1DA,EAAQ,KAAQr8oB,KAAK4z1B,YAAa,KACtC5z1B,KAAKslnC,WAAa,CACjB5+nC,MAAOsZ,KAAK4z1B,YAAa,GAAIlq0B,MAAMhjC,MACnCE,OAAQoZ,KAAK4z1B,YAAa,GAAIlq0B,MAAM9iC,OACpCkC,SAAUkX,KAAK4z1B,YAAYzq2B,IAAK,YAChCa,IAAKgW,KAAK4z1B,YAAYzq2B,IAAK,OAC3BgB,KAAM6V,KAAK4z1B,YAAYzq2B,IAAK,UAIxBkzpB,EAAQ,GAAI3ynB,MAAMhjC,QAASi9E,EAAE8wjC,iBAClCp4e,EAAO31pB,MAAOsZ,KAAK4z1B,YAAYlt2B,SAE1B21pB,EAAQ,GAAI3ynB,MAAM9iC,SAAU+8E,EAAE8wjC,iBACnCp4e,EAAOz1pB,OAAQoZ,KAAK4z1B,YAAYht2B,UAG1By1pB,CAER,EAEA2ne,wBAAyB,SAAU1xmC,GACd,iBAARA,IACXA,EAAMA,EAAIpxB,MAAO,MAEbwoG,EAAE35E,QAASuC,KACfA,EAAM,CAAEnoB,MAAOmoB,EAAK,GAAKtoB,KAAMsoB,EAAK,IAAO,IAEvC,SAAUA,IACdtS,KAAKpb,OAAOwrI,MAAMjmI,KAAOmoB,EAAInoB,KAAO6V,KAAKonD,QAAQj9D,MAE7C,UAAWmoB,IACftS,KAAKpb,OAAOwrI,MAAMjmI,KAAO6V,KAAK8knC,kBAAkBp+nC,MAAQ4rB,EAAIroB,MAAQ+V,KAAKonD,QAAQj9D,MAE7E,QAASmoB,IACbtS,KAAKpb,OAAOwrI,MAAMpmI,IAAMsoB,EAAItoB,IAAMgW,KAAKonD,QAAQp9D,KAE3C,WAAYsoB,IAChBtS,KAAKpb,OAAOwrI,MAAMpmI,IAAMgW,KAAK8knC,kBAAkBl+nC,OAAS0rB,EAAIpoB,OAAS8V,KAAKonD,QAAQp9D,IAEpF,EAEAq6nC,iBAAkB,WAGjBrknC,KAAKjX,aAAeiX,KAAKq8oB,OAAOtzpB,eAChC,IAAIikZ,EAAKhtY,KAAKjX,aAAanE,SAuB3B,MAd0B,aAArBob,KAAKkomC,aAA8BlomC,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IAChFihG,EAAEliG,SAAUwY,KAAKnS,aAAc,GAAKmS,KAAKjX,aAAc,MACxDikZ,EAAG7iZ,MAAQ6V,KAAKnS,aAAad,aAC7BigZ,EAAGhjZ,KAAOgW,KAAKnS,aAAaZ,cAKxB+S,KAAKjX,aAAc,KAAQiX,KAAKvX,SAAU,GAAIiF,MAC/CsS,KAAKjX,aAAc,GAAIioH,SACwB,SAAjDhxG,KAAKjX,aAAc,GAAIioH,QAAQ5oH,eAA4BshG,EAAE8gT,GAAGv/B,MACjE+hC,EAAK,CAAEhjZ,IAAK,EAAGG,KAAM,IAGf,CACNH,IAAKgjZ,EAAGhjZ,KAAQm8B,SAAUnmB,KAAKjX,aAAaI,IAAK,kBAAoB,KAAQ,GAC7EgB,KAAM6iZ,EAAG7iZ,MAASg8B,SAAUnmB,KAAKjX,aAAaI,IAAK,mBAAqB,KAAQ,GAGlF,EAEAm7nC,mBAAoB,WAEnB,GAA0B,aAArBtknC,KAAKkomC,YAA6B,CACtC,IAAI/nmC,EAAIH,KAAK4z1B,YAAY9q2B,WACzB,MAAO,CACNkB,IAAKmW,EAAEnW,KAAQm8B,SAAUnmB,KAAKq8oB,OAAOlzpB,IAAK,OAAS,KAAQ,GAC1D6W,KAAKnS,aAAaZ,YACnB9C,KAAMgW,EAAEhW,MAASg8B,SAAUnmB,KAAKq8oB,OAAOlzpB,IAAK,QAAU,KAAQ,GAC7D6W,KAAKnS,aAAad,aAErB,CACC,MAAO,CAAE/C,IAAK,EAAGG,KAAM,EAGzB,EAEAs5nC,cAAe,WACdzjnC,KAAKonD,QAAU,CACdj9D,KAAQg8B,SAAUnmB,KAAK4z1B,YAAYzq2B,IAAK,cAAgB,KAAQ,EAChEa,IAAOm8B,SAAUnmB,KAAK4z1B,YAAYzq2B,IAAK,aAAe,KAAQ,EAEhE,EAEAo6nC,wBAAyB,WACxBvjnC,KAAK8knC,kBAAoB,CACxBp+nC,MAAOsZ,KAAKq8oB,OAAO97lB,aACnB35D,OAAQoZ,KAAKq8oB,OAAO57lB,cAEtB,EAEAwjkC,gBAAiB,WAEhB,IAAIhl+B,EAAI6tP,EAAIwmR,EACX3vlB,EAAI3jE,KAAKpQ,QACa,WAAlB+zE,EAAE2+iC,cACN3+iC,EAAE2+iC,YAActinC,KAAKq8oB,OAAQ,GAAIr0pB,YAEX,aAAlB27E,EAAE2+iC,aAAgD,WAAlB3+iC,EAAE2+iC,cACtCtinC,KAAKsinC,YAAc,CAClB,EAAItinC,KAAKpb,OAAO08U,SAASn3U,KAAO6V,KAAKpb,OAAO6C,OAAO0C,KACnD,EAAI6V,KAAKpb,OAAO08U,SAASt3U,IAAMgW,KAAKpb,OAAO6C,OAAOuC,IAChC,aAAlB25E,EAAE2+iC,YACDtinC,KAAKvX,SAAS/B,QACdsZ,KAAK7Y,OAAOT,QAAUsZ,KAAK8knC,kBAAkBp+nC,MAAQsZ,KAAKonD,QAAQj9D,MAC/C,aAAlBw5E,EAAE2+iC,YACDtinC,KAAKvX,SAAS7B,UAAY6B,SAASiF,KAAK1F,WAAW8G,aACrDkR,KAAK7Y,OAAOP,UAAYoZ,KAAKvX,SAAU,GAAIiF,KAAK1F,WAAW8G,cACxDkR,KAAK8knC,kBAAkBl+nC,OAASoZ,KAAKonD,QAAQp9D,MAI7C,6BAAiC9H,KAAMyhF,EAAE2+iC,eAC9Crj+B,EAAKv1D,EAAG/lB,EAAE2+iC,aAAe,GACzBx1uB,EAAKpjT,EAAG/lB,EAAE2+iC,aAAc19nC,SACxB0uqB,EAAuC,WAA9B5pkB,EAAGu1D,GAAK91J,IAAK,YAEtB6W,KAAKsinC,YAAc,CAClBx1uB,EAAG3iZ,MAASg8B,SAAUujE,EAAGu1D,GAAK91J,IAAK,mBAAqB,KAAQ,IAC7Dg9B,SAAUujE,EAAGu1D,GAAK91J,IAAK,eAAiB,KAAQ,GAAM6W,KAAKonD,QAAQj9D,KACtE2iZ,EAAG9iZ,KAAQm8B,SAAUujE,EAAGu1D,GAAK91J,IAAK,kBAAoB,KAAQ,IAC3Dg9B,SAAUujE,EAAGu1D,GAAK91J,IAAK,cAAgB,KAAQ,GAAM6W,KAAKonD,QAAQp9D,IACrE8iZ,EAAG3iZ,MAASmpqB,EAAO9tqB,KAAKmE,IAAKs1J,EAAGpwJ,YAAaowJ,EAAGt4J,aAAgBs4J,EAAGt4J,cAChEw/B,SAAUujE,EAAGu1D,GAAK91J,IAAK,mBAAqB,KAAQ,IACpDg9B,SAAUujE,EAAGu1D,GAAK91J,IAAK,gBAAkB,KAAQ,GACnD6W,KAAK8knC,kBAAkBp+nC,MAAQsZ,KAAKonD,QAAQj9D,KAC7C2iZ,EAAG9iZ,KAAQspqB,EAAO9tqB,KAAKmE,IAAKs1J,EAAGnwJ,aAAcmwJ,EAAGp4J,cAAiBo4J,EAAGp4J,eACjEs/B,SAAUujE,EAAGu1D,GAAK91J,IAAK,kBAAoB,KAAQ,IACnDg9B,SAAUujE,EAAGu1D,GAAK91J,IAAK,iBAAmB,KAAQ,GACpD6W,KAAK8knC,kBAAkBl+nC,OAASoZ,KAAKonD,QAAQp9D,KAIjD,EAEAw6nC,mBAAoB,SAAUjhoC,EAAGgvB,GAE1BA,IACLA,EAAMvS,KAAKlX,UAEZ,IAAI61W,EAAY,aAANp7W,EAAmB,GAAK,EACjCqP,EAA8B,aAArBoN,KAAKkomC,aACVlomC,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IAC7CihG,EAAEliG,SAAUwY,KAAKnS,aAAc,GAAKmS,KAAKjX,aAAc,IAEtDiX,KAAKnS,aADLmS,KAAKjX,aAEPi8nC,EAAmB,eAAmB9ioC,KAAM0Q,EAAQ,GAAIo+G,SAEzD,MAAO,CACNhnH,IAGCuoB,EAAIvoB,IAGJgW,KAAKpb,OAAO08U,SAASt3U,IAAM20W,EAG3B3+V,KAAKpb,OAAO6C,OAAOuC,IAAM20W,GACA,UAArB3+V,KAAKkomC,aACPlomC,KAAKnS,aAAaZ,YACjB+3nC,EAAmB,EAAIpynC,EAAO3F,aAAkB0xW,EAEpDx0W,KAGCooB,EAAIpoB,KAGJ6V,KAAKpb,OAAO08U,SAASn3U,KAAOw0W,EAG5B3+V,KAAKpb,OAAO6C,OAAO0C,KAAOw0W,GACD,UAArB3+V,KAAKkomC,aACPlomC,KAAKnS,aAAad,aAAei4nC,EAAmB,EACrDpynC,EAAO7F,cAAiB4xW,EAI5B,EAEAklxB,kBAAmB,SAAU13mC,GAE5B,IAAIniB,EAAKG,EACRw5E,EAAI3jE,KAAKpQ,QACTi2b,EAAQ15a,EAAM05a,MACdC,EAAQ35a,EAAM25a,MACdlzb,EAA8B,aAArBoN,KAAKkomC,aACVlomC,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IAC7CihG,EAAEliG,SAAUwY,KAAKnS,aAAc,GAAKmS,KAAKjX,aAAc,IAEtDiX,KAAKnS,aADLmS,KAAKjX,aAENi8nC,EAAmB,eAAmB9ioC,KAAM0Q,EAAQ,GAAIo+G,SAyD1D,MAnD0B,aAArBhxG,KAAKkomC,aAAiClomC,KAAKnS,aAAc,KAAQmS,KAAKvX,SAAU,IACnFuX,KAAKnS,aAAc,KAAQmS,KAAKjX,aAAc,KAC/CiX,KAAKpb,OAAO08U,SAAWthU,KAAKsknC,sBAQxBtknC,KAAK4nd,mBAEJ5nd,KAAKsinC,cACJn2mC,EAAM05a,MAAQ7lb,KAAKpb,OAAOwrI,MAAMjmI,KAAO6V,KAAKsinC,YAAa,KAC7Dz8rB,EAAQ7lb,KAAKsinC,YAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMjmI,MAE9CgiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOwrI,MAAMpmI,IAAMgW,KAAKsinC,YAAa,KAC5Dx8rB,EAAQ9lb,KAAKsinC,YAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMpmI,KAE9CmiB,EAAM05a,MAAQ7lb,KAAKpb,OAAOwrI,MAAMjmI,KAAO6V,KAAKsinC,YAAa,KAC7Dz8rB,EAAQ7lb,KAAKsinC,YAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMjmI,MAE9CgiB,EAAM25a,MAAQ9lb,KAAKpb,OAAOwrI,MAAMpmI,IAAMgW,KAAKsinC,YAAa,KAC5Dx8rB,EAAQ9lb,KAAKsinC,YAAa,GAAMtinC,KAAKpb,OAAOwrI,MAAMpmI,MAI/C25E,EAAE1tB,OACNjsD,EAAMgW,KAAK+jnC,cAAgBv+nC,KAAK+F,OAASu6b,EAAQ9lb,KAAK+jnC,eACrDpgjC,EAAE1tB,KAAM,IAAQ0tB,EAAE1tB,KAAM,GACzB6vY,EAAQ9lb,KAAKsinC,YACRt4nC,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,KAAOgW,KAAKsinC,YAAa,IACpDt4nC,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,KAAOgW,KAAKsinC,YAAa,GAChDt4nC,EACIA,EAAMgW,KAAKpb,OAAOwrI,MAAMpmI,KAAOgW,KAAKsinC,YAAa,GACpDt4nC,EAAM25E,EAAE1tB,KAAM,GAAMjsD,EAAM25E,EAAE1tB,KAAM,GAClCjsD,EAEJG,EAAO6V,KAAK8jnC,cAAgBt+nC,KAAK+F,OAASs6b,EAAQ7lb,KAAK8jnC,eACtDngjC,EAAE1tB,KAAM,IAAQ0tB,EAAE1tB,KAAM,GACzB4vY,EAAQ7lb,KAAKsinC,YACRn4nC,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,MAAQ6V,KAAKsinC,YAAa,IACtDn4nC,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,MAAQ6V,KAAKsinC,YAAa,GAClDn4nC,EACIA,EAAO6V,KAAKpb,OAAOwrI,MAAMjmI,MAAQ6V,KAAKsinC,YAAa,GACtDn4nC,EAAOw5E,EAAE1tB,KAAM,GAAM9rD,EAAOw5E,EAAE1tB,KAAM,GACpC9rD,IAKC,CACNH,IAGC87b,EAGA9lb,KAAKpb,OAAOwrI,MAAMpmI,IAGlBgW,KAAKpb,OAAO08U,SAASt3U,IAGrBgW,KAAKpb,OAAO6C,OAAOuC,KACM,UAArBgW,KAAKkomC,aACPlomC,KAAKnS,aAAaZ,YACjB+3nC,EAAmB,EAAIpynC,EAAO3F,aAElC9C,KAGC07b,EAGA7lb,KAAKpb,OAAOwrI,MAAMjmI,KAGlB6V,KAAKpb,OAAO08U,SAASn3U,KAGrB6V,KAAKpb,OAAO6C,OAAO0C,MACM,UAArB6V,KAAKkomC,aACPlomC,KAAKnS,aAAad,aACnBi4nC,EAAmB,EAAIpynC,EAAO7F,cAIlC,EAEAgpoC,WAAY,SAAU5pnC,EAAO9mB,EAAGuU,EAAGm+nC,GAElCn+nC,EAAIA,EAAG,GAAIu2F,YAAanwF,KAAK2hN,YAAa,IACzCt8N,EAAE2tB,KAAM,GAAIhrB,WAAW2gI,aAAc3oH,KAAK2hN,YAAa,GACjC,SAAnB3hN,KAAKjR,UAAuB1J,EAAE2tB,KAAM,GAAM3tB,EAAE2tB,KAAM,GAAI01G,aAQ1D1oH,KAAKi6L,QAAUj6L,KAAKi6L,UAAYj6L,KAAKi6L,QAAU,EAC/C,IAAIA,EAAUj6L,KAAKi6L,QAEnBj6L,KAAKy1kB,OAAQ,WACPx7Y,IAAYj6L,KAAKi6L,SAGrBj6L,KAAKyinC,kBAAmBsV,EAE1B,EAED,EAEA7yS,OAAQ,SAAU/40B,EAAOo4mC,GAExBvknC,KAAK+0nC,WAAY,EAIjB,IAAI1voC,EACH2yoC,EAAkB,GAUnB,IALMh4nC,KAAKi2nC,cAAgBj2nC,KAAK4z1B,YAAYns2B,SAAS2M,QACpD4L,KAAK2hN,YAAYzxI,OAAQlwE,KAAK4z1B,aAE/B5z1B,KAAKi2nC,aAAe,KAEfj2nC,KAAKq8oB,OAAQ,KAAQr8oB,KAAK4z1B,YAAa,GAAM,CACjD,IAAMvu2B,KAAK2a,KAAKslnC,WACe,SAAzBtlnC,KAAKslnC,WAAYjgoC,IAA2C,WAAzB2a,KAAKslnC,WAAYjgoC,KACxD2a,KAAKslnC,WAAYjgoC,GAAM,IAGzB2a,KAAK4z1B,YAAYzq2B,IAAK6W,KAAKslnC,YAC3BtlnC,KAAK+gmC,aAAc/gmC,KAAK4z1B,YAAa,qBACtC,MACC5z1B,KAAK4z1B,YAAYhvzB,OAwClB,SAASqzlC,EAAYjonC,EAAM3a,EAAUywD,GACpC,OAAO,SAAU35C,GAChB25C,EAAUo/3B,SAAUl16B,EAAM7D,EAAO9W,EAASovnC,QAASpvnC,GACpD,CACD,CACA,IA1CK2K,KAAK2lnC,cAAgBpB,GACzByT,EAAgBlkoC,KAAM,SAAUqY,GAC/BnM,KAAKkl7B,SAAU,UAAW/46B,EAAOnM,KAAKyknC,QAASzknC,KAAK2lnC,aACrD,IAEM3lnC,KAAK2lnC,aACV3lnC,KAAKo1nC,YAAYv6lC,OACjB76B,KAAK4z1B,YAAY/4zB,OAAOmiM,IAAK,uBAAyB,IACtDh9N,KAAKo1nC,YAAY3toC,SAAWuY,KAAK4z1B,YAAYns2B,SAAU,IAAU88nC,GAGlEyT,EAAgBlkoC,KAAM,SAAUqY,GAC/BnM,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,UACtC,GAKIzknC,OAASA,KAAKm1nC,mBACZ5Q,IACLyT,EAAgBlkoC,KAAM,SAAUqY,GAC/BnM,KAAKkl7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,UACtC,GACAuT,EAAgBlkoC,KAAM,SAAYlO,GACjC,OAAO,SAAUumB,GAChBvmB,EAAEs/7B,SAAU,UAAW/46B,EAAOnM,KAAKyknC,QAASzknC,MAC7C,CACC,EAAEK,KAAML,KAAMA,KAAKm1nC,mBACrB6C,EAAgBlkoC,KAAM,SAAYlO,GACjC,OAAO,SAAUumB,GAChBvmB,EAAEs/7B,SAAU,SAAU/46B,EAAOnM,KAAKyknC,QAASzknC,MAC5C,CACC,EAAEK,KAAML,KAAMA,KAAKm1nC,qBAUjB9voC,EAAI2a,KAAK83gB,WAAW1jhB,OAAS,EAAG/O,GAAK,EAAGA,IACvCk/nC,GACLyT,EAAgBlkoC,KAAMmkoC,EAAY,aAAcj4nC,KAAMA,KAAK83gB,WAAYzyhB,KAEnE2a,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,OACxC0ke,EAAgBlkoC,KAAMmkoC,EAAY,MAAOj4nC,KAAMA,KAAK83gB,WAAYzyhB,KAChE2a,KAAK83gB,WAAYzyhB,GAAIqgoC,eAAepyd,KAAO,GAiC7C,GA5BKtzpB,KAAKs1nC,eACTt1nC,KAAKvX,SAASoS,KAAM,QAAS1R,IAAK,SAAU6W,KAAKs1nC,cACjDt1nC,KAAKu1nC,iBAAiB3ylC,UAElB5iC,KAAKw1nC,gBACTx1nC,KAAKq8oB,OAAOlzpB,IAAK,UAAW6W,KAAKw1nC,gBAE7Bx1nC,KAAKy1nC,eACTz1nC,KAAKq8oB,OAAOlzpB,IAAK,SAAiC,SAAvB6W,KAAKy1nC,cAA2B,GAAKz1nC,KAAKy1nC,eAGtEz1nC,KAAK83Y,UAAW,EAEVysuB,GACLvknC,KAAKkl7B,SAAU,aAAc/46B,EAAOnM,KAAKyknC,WAK1CzknC,KAAK2hN,YAAa,GAAI35N,WAAWkoG,YAAalwF,KAAK2hN,YAAa,IAE1D3hN,KAAKolnC,sBACLplnC,KAAKq8oB,OAAQ,KAAQr8oB,KAAK4z1B,YAAa,IAC3C5z1B,KAAKq8oB,OAAOz5mB,SAEb5iC,KAAKq8oB,OAAS,OAGTkoe,EAAgB,CACrB,IAAMl/nC,EAAI,EAAGA,EAAI2yoC,EAAgB5joC,OAAQ/O,IAGxC2yoC,EAAiB3yoC,GAAIgb,KAAML,KAAMmM,GAElCnM,KAAKkl7B,SAAU,OAAQ/46B,EAAOnM,KAAKyknC,UACpC,CAGA,OADAzknC,KAAK2lnC,aAAc,GACX3lnC,KAAKolnC,mBAEd,EAEAlgM,SAAU,YACqD,IAAzDx71B,EAAEq9Q,OAAO3mW,UAAU8k7B,SAASpk7B,MAAOd,KAAM7L,YAC7C6L,KAAK2iC,QAEP,EAEA8hlC,QAAS,SAAUyT,GAClB,IAAIzyB,EAAOyyB,GAASl4nC,KACpB,MAAO,CACNq8oB,OAAQopd,EAAKppd,OACb16b,YAAa8j5B,EAAK9j5B,aAAej4H,EAAG,IACpC5gG,SAAU28mC,EAAK38mC,SACf8+d,iBAAkB69oB,EAAK79oB,iBACvBhje,OAAQ6gnC,EAAKke,YACb3wmC,KAAMyylC,EAAK7xQ,YACXxr1B,OAAQ8vnC,EAAQA,EAAM5xoC,QAAU,KAElC,IAoCDojG,EAAEm9Q,OAAQ,aAAc,CACvBhiS,QAAS,SACT27hC,eAAgB,UAChBP,kBAAmB,OACnBrwmC,QAAS,CACRy9G,QAAS,CACR,aAAc,gBACd,kBAAmB,eACnB,gBAAiB,gBAElB8qhC,QAAS,KACTvsB,MAAO,CACNliR,KAAM,uBACN1je,GAAI,wBAELoywB,aAAa,EACbzuoC,IAAK,KACLD,IAAK,KACLwif,aAAc,KACdv8X,KAAM,GACNruG,KAAM,EAENgiD,OAAQ,KACRo3lB,KAAM,KACNjupB,MAAO,KACPiZ,KAAM,MAGPu/6B,QAAS,WAGRjl7B,KAAKkhmC,WAAY,MAAOlhmC,KAAKpQ,QAAQjG,KACrCqW,KAAKkhmC,WAAY,MAAOlhmC,KAAKpQ,QAAQlG,KACrCsW,KAAKkhmC,WAAY,OAAQlhmC,KAAKpQ,QAAQ0R,MAIhB,KAAjBtB,KAAKra,SAGTqa,KAAKigS,OAAQjgS,KAAK1Z,QAAQqhC,OAAO,GAGlC3nB,KAAK0sE,QACL1sE,KAAKgszB,IAAKhszB,KAAK+zH,SACf/zH,KAAK2hC,WAKL3hC,KAAKgszB,IAAKhszB,KAAK7Y,OAAQ,CACtB+u+B,aAAc,WACbl29B,KAAK1Z,QAAQ+7Q,WAAY,eAC1B,GAEF,EAEAu+1B,kBAAmB,WAClB,IAAIhxmC,EAAUoQ,KAAKgE,SACf1d,EAAU0Z,KAAK1Z,QASnB,OAPAojG,EAAE94E,KAAM,CAAE,MAAO,MAAO,QAAU,SAAUvrB,EAAGigD,GAC9C,IAAI3/C,EAAQW,EAAQixQ,KAAMjyN,GACZ,MAAT3/C,GAAiBA,EAAMyO,SAC3BxE,EAAS01C,GAAW3/C,EAEtB,GAEOiK,CACR,EAEAmkI,QAAS,CACRszsB,QAAS,SAAUl7zB,GACbnM,KAAKwjC,OAAQr3B,IAAWnM,KAAKssmC,SAAUngmC,IAC3CA,EAAMwgH,gBAER,EACA8xQ,MAAO,QACPztS,MAAO,WACNhxF,KAAKovB,SAAWpvB,KAAK1Z,QAAQqhC,KAC9B,EACAopE,KAAM,SAAU5kF,GACVnM,KAAKywmC,kBACFzwmC,KAAKywmC,YAIbzwmC,KAAKkhE,QACLlhE,KAAK2hC,WACA3hC,KAAKovB,WAAapvB,KAAK1Z,QAAQqhC,OACnC3nB,KAAKkl7B,SAAU,SAAU/46B,GAE3B,EACA0h5B,WAAY,SAAU1h5B,EAAOquB,GAC5B,GAAMA,EAAN,CAGA,IAAMx6B,KAAKq4nC,WAAar4nC,KAAKwjC,OAAQr3B,GACpC,OAAO,EAGRnM,KAAKs4nC,OAAS99lC,EAAQ,EAAI,GAAK,GAAMx6B,KAAKpQ,QAAQ0R,KAAM6K,GACxDxE,aAAc3H,KAAKuge,iBACnBvge,KAAKuge,gBAAkBvge,KAAKy1kB,OAAQ,WAC9Bz1kB,KAAKq4nC,UACTr4nC,KAAKkhE,MAAO/0D,EAEd,EAAG,KACHA,EAAMwgH,gBAZN,CAaD,EACA,+BAAgC,SAAUxgH,GACzC,IAAIijB,EASJ,SAASo9lC,IACOxsnC,KAAK1Z,QAAS,KAAQojG,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,MAE3EuX,KAAK1Z,QAAQ6+D,QAAS,SACtBnlD,KAAKovB,SAAWA,EAKhBpvB,KAAKy1kB,OAAQ,WACZz1kB,KAAKovB,SAAWA,CACjB,GAEF,CAfAA,EAAWpvB,KAAK1Z,QAAS,KAAQojG,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,IACvEuX,KAAKovB,SAAWpvB,KAAK1Z,QAAQqhC,MAiB9Bxb,EAAMwgH,iBACN6//B,EAAWnsnC,KAAML,MAMjBA,KAAKywmC,YAAa,EAClBzwmC,KAAKy1kB,OAAQ,kBACLz1kB,KAAKywmC,WACZ+b,EAAWnsnC,KAAML,KAClB,IAE8B,IAAzBA,KAAKwjC,OAAQr3B,IAIlBnM,KAAKu4nC,QAAS,KAAM7uiC,EAAGv9E,EAAM+kU,eAC3BhnO,SAAU,iBAAoB,GAAK,EAAG/9F,EACzC,EACA,6BAA8B,QAC9B,gCAAiC,SAAUA,GAG1C,GAAMu9E,EAAGv9E,EAAM+kU,eAAgBhnO,SAAU,mBAIzC,OAA8B,IAAzBlqG,KAAKwjC,OAAQr3B,SAGlBnM,KAAKu4nC,QAAS,KAAM7uiC,EAAGv9E,EAAM+kU,eAC3BhnO,SAAU,iBAAoB,GAAK,EAAG/9F,EACzC,EAKA,gCAAiC,SAIlCiqmC,SAAU,WACTp2mC,KAAKw4nC,UAAYx4nC,KAAK1Z,QACpBixQ,KAAM,eAAgB,OACtBj1M,KAAM,UACN76D,SAGC8oI,OACA,iBAEJ,EAEA7jD,MAAO,WACN1sE,KAAKo2mC,WAELp2mC,KAAK0hmC,UAAW1hmC,KAAKw4nC,UAAW,aAAc,+BAC9Cx4nC,KAAK0hmC,UAAW,oBAEhB1hmC,KAAK1Z,QAAQixQ,KAAM,OAAQ,cAG3Bv3P,KAAK+lb,QAAU/lb,KAAKw4nC,UAAUhhhC,SAAU,KACtC+/I,KAAM,YAAa,GACnBA,KAAM,eAAe,GACrB26B,OAAQ,CACR7kL,QAAS,CACR,YAAa,MAKhBrtG,KAAK+gmC,aAAc/gmC,KAAK+lb,QAAS,iBAEjC/lb,KAAK0hmC,UAAW1hmC,KAAK+lb,QAAQv3X,QAAS,mCACtCxuD,KAAK0hmC,UAAW1hmC,KAAK+lb,QAAQ7xY,OAAQ,qCACrCl0C,KAAK+lb,QAAQv3X,QAAQ0jO,OAAQ,CAC5B,KAAQlyR,KAAKpQ,QAAQg8mC,MAAM5lvB,GAC3B,WAAa,IAEdhmX,KAAK+lb,QAAQ7xY,OAAOg+O,OAAQ,CAC3B,KAAQlyR,KAAKpQ,QAAQg8mC,MAAMliR,KAC3B,WAAa,IAKT1p1B,KAAK+lb,QAAQn/b,SAAWpB,KAAKsjE,KAAgC,GAA1B9oD,KAAKw4nC,UAAU5xoC,WACrDoZ,KAAKw4nC,UAAU5xoC,SAAW,GAC3BoZ,KAAKw4nC,UAAU5xoC,OAAQoZ,KAAKw4nC,UAAU5xoC,SAExC,EAEA0lnC,SAAU,SAAUngmC,GACnB,IAAIvc,EAAUoQ,KAAKpQ,QAClBgoT,EAAUluN,EAAE8gT,GAAG5yF,QAEhB,OAASzrS,EAAMyrS,SACf,KAAKA,EAAQo+vB,GAEZ,OADAh2iC,KAAKu4nC,QAAS,KAAM,EAAGpsnC,IAChB,EACR,KAAKyrS,EAAQq+vB,KAEZ,OADAj2iC,KAAKu4nC,QAAS,MAAO,EAAGpsnC,IACjB,EACR,KAAKyrS,EAAQg+vB,QAEZ,OADA51iC,KAAKu4nC,QAAS,KAAM3ooC,EAAQ+/G,KAAMxjG,IAC3B,EACR,KAAKyrS,EAAQi+vB,UAEZ,OADA71iC,KAAKu4nC,QAAS,MAAO3ooC,EAAQ+/G,KAAMxjG,IAC5B,EAGR,OAAO,CACR,EAEAq3B,OAAQ,SAAUr3B,GACjB,SAAMnM,KAAKq4nC,WAAgD,IAApCr4nC,KAAKkl7B,SAAU,QAAS/46B,KAIzCnM,KAAKi6L,UACVj6L,KAAKi6L,QAAU,GAEhBj6L,KAAKq4nC,UAAW,EACT,GACR,EAEAE,QAAS,SAAUlzoC,EAAG+3F,EAAOjxE,GAC5B9mB,EAAIA,GAAK,IAETsiB,aAAc3H,KAAKoH,OACnBpH,KAAKoH,MAAQpH,KAAKy1kB,OAAQ,WACzBz1kB,KAAKu4nC,QAAS,GAAIn7iC,EAAOjxE,EAC1B,EAAG9mB,GAEH2a,KAAKs4nC,MAAOl7iC,EAAQp9E,KAAKpQ,QAAQ0R,KAAM6K,EACxC,EAEAmsnC,MAAO,SAAUh3nC,EAAM6K,GACtB,IAAIxmB,EAAQqa,KAAKra,SAAW,EAEtBqa,KAAKi6L,UACVj6L,KAAKi6L,QAAU,GAGhBt0M,EAAQqa,KAAKy4nC,aAAc9yoC,EAAQ2b,EAAOtB,KAAK04nC,WAAY14nC,KAAKi6L,UAE1Dj6L,KAAKq4nC,WAAiE,IAArDr4nC,KAAKkl7B,SAAU,OAAQ/46B,EAAO,CAAExmB,MAAOA,MAC7Dqa,KAAKigS,OAAQt6S,GACbqa,KAAKi6L,UAEP,EAEAy+7B,WAAY,SAAUrzoC,GACrB,IAAI+yoC,EAAcp4nC,KAAKpQ,QAAQwooC,YAE/B,OAAKA,EACG1uiC,EAAE72E,WAAYulnC,GACpBA,EAAa/yoC,GACbG,KAAKQ,MAAOX,EAAIA,EAAIA,EAAI,IAAQA,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAGxD,CACR,EAEAyuoC,WAAY,WACX,IAAIt7iC,EAAYx4E,KAAK+znC,aAAc/znC,KAAKpQ,QAAQ0R,MAIhD,OAH0B,OAArBtB,KAAKpQ,QAAQlG,MACjB8uF,EAAYhzF,KAAKmE,IAAK6uF,EAAWx4E,KAAK+znC,aAAc/znC,KAAKpQ,QAAQlG,OAE3D8uF,CACR,EAEAu7iC,aAAc,SAAU91lC,GACvB,IAAIxrB,EAAMwrB,EAAIj3C,WACbgrE,EAAUv/C,EAAIlqB,QAAS,KACxB,OAAoB,IAAbypE,EAAiB,EAAIv/C,EAAIre,OAAS49D,EAAU,CACpD,EAEAymkC,aAAc,SAAU9yoC,GACvB,IAAI0lD,EAAMstlC,EACT/ooC,EAAUoQ,KAAKpQ,QAiBhB,OAZA+ooC,EAAWhzoC,GADX0lD,EAAuB,OAAhBz7C,EAAQlG,IAAekG,EAAQlG,IAAM,GAO5C/D,EAAQ0lD,GAHRstlC,EAAWnzoC,KAAK+F,MAAOotoC,EAAW/ooC,EAAQ0R,MAAS1R,EAAQ0R,MAM3D3b,EAAQgrB,WAAYhrB,EAAMo4I,QAAS/9H,KAAK8znC,eAGnB,OAAhBlkoC,EAAQjG,KAAgBhE,EAAQiK,EAAQjG,IACrCiG,EAAQjG,IAEK,OAAhBiG,EAAQlG,KAAgB/D,EAAQiK,EAAQlG,IACrCkG,EAAQlG,IAGT/D,CACR,EAEAu7E,MAAO,SAAU/0D,GACVnM,KAAKq4nC,WAIX1wnC,aAAc3H,KAAKoH,OACnBO,aAAc3H,KAAKuge,iBACnBvge,KAAKi6L,QAAU,EACfj6L,KAAKq4nC,UAAW,EAChBr4nC,KAAKkl7B,SAAU,OAAQ/46B,GACxB,EAEA+0lC,WAAY,SAAU12mC,EAAK7E,GAC1B,IAAIw6C,EAAWquB,EAAOta,EAEtB,GAAa,YAAR1pD,GAA6B,iBAARA,EAIzB,OAHA21C,EAAYngC,KAAK44nC,OAAQ54nC,KAAK1Z,QAAQqhC,OACtC3nB,KAAKpQ,QAASpF,GAAQ7E,OACtBqa,KAAK1Z,QAAQqhC,IAAK3nB,KAAKs4G,QAASn4E,IAIpB,QAAR31C,GAAyB,QAARA,GAAyB,SAARA,GAChB,iBAAV7E,IACXA,EAAQqa,KAAK44nC,OAAQjzoC,IAGV,UAAR6E,IACJgkE,EAAQxuD,KAAK+lb,QAAQv3X,QAAQ3zD,KAAM,YACnCmF,KAAK+gmC,aAAcvyiC,EAAO,KAAMxuD,KAAKpQ,QAAQg8mC,MAAM5lvB,IACnDhmX,KAAK0hmC,UAAWlziC,EAAO,KAAM7oE,EAAMqgY,IACnC9xU,EAAOl0C,KAAK+lb,QAAQ7xY,OAAOr5C,KAAM,YACjCmF,KAAK+gmC,aAAc7sjC,EAAM,KAAMl0C,KAAKpQ,QAAQg8mC,MAAMliR,MAClD1p1B,KAAK0hmC,UAAWxtjC,EAAM,KAAMvuD,EAAM+j2B,OAGnC1p1B,KAAKgE,OAAQxZ,EAAK7E,EACnB,EAEAk7mC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAKgE,OAAQre,GAEbqa,KAAKshmC,aAActhmC,KAAKw4nC,UAAW,KAAM,sBAAuB7yoC,GAChEqa,KAAK1Z,QAAQgsC,KAAM,aAAc3sC,GACjCqa,KAAK+lb,QAAQ7zJ,OAAQvsS,EAAQ,UAAY,SAC1C,EAEAs7mC,YAAa2tB,EAAgB,SAAUh/nC,GACtCoQ,KAAKgE,OAAQpU,EACd,GAEAgpoC,OAAQ,SAAUjxmC,GAKjB,MAJoB,iBAARA,GAA4B,KAARA,IAC/BA,EAAMxgC,OAAO0xoC,WAAa74nC,KAAKpQ,QAAQs8e,aACtC2spB,UAAUlonC,WAAYgX,EAAK,GAAI3nB,KAAKpQ,QAAQuooC,UAAaxwmC,GAE5C,KAARA,GAAc5hC,MAAO4hC,GAAQ,KAAOA,CAC5C,EAEA2wF,QAAS,SAAU3yH,GAClB,MAAe,KAAVA,EACG,GAEDwB,OAAO0xoC,WAAa74nC,KAAKpQ,QAAQs8e,aACvC2spB,UAAUr6lC,OAAQ74C,EAAOqa,KAAKpQ,QAAQs8e,aAAclse,KAAKpQ,QAAQuooC,SACjExyoC,CACF,EAEAg8C,SAAU,WACT3hC,KAAK1Z,QAAQixQ,KAAM,CAClB,gBAAiBv3P,KAAKpQ,QAAQlG,IAC9B,gBAAiBsW,KAAKpQ,QAAQjG,IAG9B,gBAAiBqW,KAAK44nC,OAAQ54nC,KAAK1Z,QAAQqhC,QAE7C,EAEAmhL,QAAS,WACR,IAAInjN,EAAQqa,KAAKra,QAGjB,OAAe,OAAVA,GAKEA,IAAUqa,KAAKy4nC,aAAc9yoC,EACrC,EAGAs6S,OAAQ,SAAUt6S,EAAOmzoC,GACxB,IAAI3gmC,EACW,KAAVxyC,GAEY,QADhBwyC,EAASn4B,KAAK44nC,OAAQjzoC,MAEfmzoC,IACL3gmC,EAASn4B,KAAKy4nC,aAActgmC,IAE7BxyC,EAAQqa,KAAKs4G,QAASngF,IAGxBn4B,KAAK1Z,QAAQqhC,IAAKhiC,GAClBqa,KAAK2hC,UACN,EAEAqJ,SAAU,WACThrC,KAAK1Z,QACHgsC,KAAM,YAAY,GAClB+vO,WAAY,+DAEdriQ,KAAKw4nC,UAAUv03B,YAAajkQ,KAAK1Z,QAClC,EAEAk/tB,OAAQopa,EAAgB,SAAUxxiC,GACjCp9E,KAAK+4nC,QAAS37iC,EACf,GACA27iC,QAAS,SAAU37iC,GACbp9E,KAAKwjC,WACTxjC,KAAKs4nC,OAASl7iC,GAAS,GAAMp9E,KAAKpQ,QAAQ0R,MAC1CtB,KAAKkhE,QAEP,EAEA83jC,SAAUpK,EAAgB,SAAUxxiC,GACnCp9E,KAAKi5nC,UAAW77iC,EACjB,GACA67iC,UAAW,SAAU77iC,GACfp9E,KAAKwjC,WACTxjC,KAAKs4nC,OAASl7iC,GAAS,IAAOp9E,KAAKpQ,QAAQ0R,MAC3CtB,KAAKkhE,QAEP,EAEAg4jC,OAAQtK,EAAgB,SAAU7nO,GACjC/m5B,KAAK+4nC,SAAWhyO,GAAS,GAAM/m5B,KAAKpQ,QAAQ+/G,KAC7C,GAEAwphC,SAAUvK,EAAgB,SAAU7nO,GACnC/m5B,KAAKi5nC,WAAalyO,GAAS,GAAM/m5B,KAAKpQ,QAAQ+/G,KAC/C,GAEAhqH,MAAO,SAAUqjR,GAChB,IAAM70Q,UAAUC,OACf,OAAO4L,KAAK44nC,OAAQ54nC,KAAK1Z,QAAQqhC,OAElCinmC,EAAgB5unC,KAAKigS,QAAS5/R,KAAML,KAAMgpQ,EAC3C,EAEA69F,OAAQ,WACP,OAAO7mW,KAAKw4nC,SACb,KAKuB,IAAnB9uiC,EAAE89gC,cAGN99gC,EAAEm9Q,OAAQ,aAAcn9Q,EAAE8gT,GAAG4uvB,QAAS,CACrChjB,SAAU,WACTp2mC,KAAKw4nC,UAAYx4nC,KAAK1Z,QACpBixQ,KAAM,eAAgB,OACtBj1M,KAAMtiD,KAAKq5nC,kBACX5xoC,SAGC8oI,OAAQvwH,KAAKs5nC,cACjB,EACAD,eAAgB,WACf,MAAO,QACR,EAEAC,YAAa,WACZ,MAAO,gBACR,IAImB5viC,EAAE8gT,GAAG4uvB,QAuB1B1viC,EAAEm9Q,OAAQ,UAAW,CACpBhiS,QAAS,SACTphC,MAAO,IACP7zC,QAAS,CACRm0C,OAAQ,KACRspE,QAAS,CACR,UAAW,gBACX,cAAe,gBACf,gBAAiB,mBACjB,cAAe,iBAEhBq+/B,aAAa,EACbv/lC,MAAO,QACPw/lC,YAAa,UACb5mkC,KAAM,KACNH,KAAM,KAGNk4mB,SAAU,KACVgvd,eAAgB,KAChBytB,WAAY,KACZvw6B,KAAM,MAGPww6B,UACK35J,EAAQ,OAEL,SAAUt0qB,GAChB,IAAIku0B,EAAWC,EAEfD,EAAYlu0B,EAAOt9N,KAAKlqG,QAAS87+B,EAAO,IACxC65J,EAAczwiC,SAASgF,KAAKlqG,QAAS87+B,EAAO,IAG5C,IACC45J,EAAY/ziC,mBAAoB+ziC,EACjC,CAAE,MAAQxvnC,GAAS,CACnB,IACCyvnC,EAAch0iC,mBAAoBg0iC,EACnC,CAAE,MAAQzvnC,GAAS,CAEnB,OAAOshT,EAAOj/T,KAAK8H,OAAS,GAAKqloC,IAAcC,CAChD,GAGDz0M,QAAS,WACR,IAAI3uuB,EAAOt2M,KACVpQ,EAAUoQ,KAAKpQ,QAEhBoQ,KAAK8hC,SAAU,EAEf9hC,KAAK0hmC,UAAW,UAAW,+BAC3B1hmC,KAAKshmC,aAAc,sBAAuB,KAAM1xmC,EAAQ87mC,aAExD1rmC,KAAK25nC,eACL/poC,EAAQm0C,OAAS/jC,KAAK45nC,iBAIjBlwiC,EAAE35E,QAASngB,EAAQo+C,YACvBp+C,EAAQo+C,SAAW07C,EAAEwhQ,OAAQt7V,EAAQo+C,SAAShgD,OAC7C07F,EAAE32F,IAAKiN,KAAK4zO,KAAK3iP,OAAQ,sBAAwB,SAAUw5Y,GAC1D,OAAOn0L,EAAKs9B,KAAKp9O,MAAOi0Y,EACzB,KACGr3Y,SAIwB,IAAxB4M,KAAKpQ,QAAQm0C,QAAoB/jC,KAAK65nC,QAAQzloC,OAClD4L,KAAK+jC,OAAS/jC,KAAK4smC,YAAah9mC,EAAQm0C,QAExC/jC,KAAK+jC,OAAS2lD,IAGf1pF,KAAK2hC,WAEA3hC,KAAK+jC,OAAO3vC,QAChB4L,KAAKgpN,KAAMp5N,EAAQm0C,OAErB,EAEA61lC,eAAgB,WACf,IAAI71lC,EAAS/jC,KAAKpQ,QAAQm0C,OACzB2nkC,EAAc1rmC,KAAKpQ,QAAQ87mC,YAC3BouB,EAAe7wiC,SAAS38F,KAAK68F,UAAW,GAsCzC,OApCgB,OAAXplD,IAGC+1lC,GACJ95nC,KAAK4zO,KAAKhjO,KAAM,SAAUvrB,EAAG2kL,GAC5B,GAAKtgF,EAAGsgF,GAAMutF,KAAM,mBAAsBui4B,EAEzC,OADA/1lC,EAAS1+C,GACF,CAET,GAIe,OAAX0+C,IACJA,EAAS/jC,KAAK4zO,KAAKp9O,MAAOwJ,KAAK4zO,KAAK3iP,OAAQ,qBAI7B,OAAX8yC,IAA+B,IAAZA,IACvBA,IAAS/jC,KAAK4zO,KAAKx/O,QAAS,KAKd,IAAX2vC,IAEa,KADjBA,EAAS/jC,KAAK4zO,KAAKp9O,MAAOwJ,KAAK4zO,KAAKr6N,GAAIwqB,OAEvCA,GAAS2nkC,GAAsB,IAK3BA,IAA0B,IAAX3nkC,GAAoB/jC,KAAK65nC,QAAQzloC,SACrD2vC,EAAS,GAGHA,CACR,EAEA+8jC,oBAAqB,WACpB,MAAO,CACN927B,IAAKhqK,KAAK+jC,OACVu2zB,MAAQt61B,KAAK+jC,OAAO3vC,OAAe4L,KAAK+5nC,gBAAiB/5nC,KAAK+jC,QAAjC2lD,IAE/B,EAEAswiC,YAAa,SAAU7tnC,GACtB,IAAI8tnC,EAAavwiC,EAAGA,EAAE8gT,GAAG+plB,kBAAmBv09B,KAAKvX,SAAU,KAAQklN,QAAS,MAC3Ew4G,EAAgBnmT,KAAK4zO,KAAKp9O,MAAOyjoC,GACjCC,GAAe,EAEhB,IAAKl6nC,KAAKm6nC,eAAgBhunC,GAA1B,CAIA,OAASA,EAAMyrS,SACf,KAAKluN,EAAE8gT,GAAG5yF,QAAQhmD,MAClB,KAAKloK,EAAE8gT,GAAG5yF,QAAQq+vB,KACjB9vvB,IACA,MACD,KAAKz8N,EAAE8gT,GAAG5yF,QAAQo+vB,GAClB,KAAKts9B,EAAE8gT,GAAG5yF,QAAQjnD,KACjBup4B,GAAe,EACf/z0B,IACA,MACD,KAAKz8N,EAAE8gT,GAAG5yF,QAAQk+vB,IACjB3vvB,EAAgBnmT,KAAK65nC,QAAQzloC,OAAS,EACtC,MACD,KAAKs1F,EAAE8gT,GAAG5yF,QAAQm+vB,KACjB5vvB,EAAgB,EAChB,MACD,KAAKz8N,EAAE8gT,GAAG5yF,QAAQ+9vB,MAMjB,OAHAxpiC,EAAMwgH,iBACNhlH,aAAc3H,KAAKo6nC,iBACnBp6nC,KAAKqsmC,UAAWlmzB,GAEjB,KAAKz8N,EAAE8gT,GAAG5yF,QAAQw9vB,MAQjB,OALAjpiC,EAAMwgH,iBACNhlH,aAAc3H,KAAKo6nC,iBAGnBp6nC,KAAKqsmC,UAAWlmzB,IAAkBnmT,KAAKpQ,QAAQm0C,QAAiBoiR,GAEjE,QACC,OAIDh6S,EAAMwgH,iBACNhlH,aAAc3H,KAAKo6nC,YACnBj00B,EAAgBnmT,KAAKq6nC,cAAel00B,EAAe+z0B,GAG7C/tnC,EAAM2lR,SAAY3lR,EAAM4lR,UAK7Bko2B,EAAW1i4B,KAAM,gBAAiB,SAClCv3P,KAAK4zO,KAAKr6N,GAAI4sS,GAAgB5uD,KAAM,gBAAiB,QAErDv3P,KAAKo6nC,WAAap6nC,KAAKy1kB,OAAQ,WAC9Bz1kB,KAAKslC,OAAQ,SAAU6gR,EACxB,EAAGnmT,KAAKyjC,OAtDT,CAwDD,EAEA62lC,cAAe,SAAUnunC,GACnBnM,KAAKm6nC,eAAgBhunC,IAKrBA,EAAM2lR,SAAW3lR,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQo+vB,KACpD7piC,EAAMwgH,iBACN3sH,KAAK+jC,OAAOohB,QAAS,SAEvB,EAGAg1kC,eAAgB,SAAUhunC,GACzB,OAAKA,EAAMi5a,QAAUj5a,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQg+vB,SACnD51iC,KAAKqsmC,UAAWrsmC,KAAKq6nC,cAAer6nC,KAAKpQ,QAAQm0C,OAAS,GAAG,KACtD,GAEH53B,EAAMi5a,QAAUj5a,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQi+vB,WACnD71iC,KAAKqsmC,UAAWrsmC,KAAKq6nC,cAAer6nC,KAAKpQ,QAAQm0C,OAAS,GAAG,KACtD,QAFR,CAID,EAEAw2lC,aAAc,SAAU/joC,EAAO0joC,GAC9B,IAAIM,EAAex6nC,KAAK4zO,KAAKx/O,OAAS,EAEtC,SAASqmoC,IAOR,OANKjkoC,EAAQgkoC,IACZhkoC,EAAQ,GAEJA,EAAQ,IACZA,EAAQgkoC,GAEFhkoC,CACR,CAEA,MAA6D,IAArDkzF,EAAE6rI,QAASkl6B,IAAaz6nC,KAAKpQ,QAAQo+C,WAC5Cx3C,EAAQ0joC,EAAe1joC,EAAQ,EAAIA,EAAQ,EAG5C,OAAOA,CACR,EAEA6joC,cAAe,SAAU7joC,EAAO0joC,GAG/B,OAFA1joC,EAAQwJ,KAAKu6nC,aAAc/joC,EAAO0joC,GAClCl6nC,KAAK4zO,KAAKr6N,GAAI/iB,GAAQ2uD,QAAS,SACxB3uD,CACR,EAEA0qmC,WAAY,SAAU12mC,EAAK7E,GACb,WAAR6E,GAOLwV,KAAKgE,OAAQxZ,EAAK7E,GAEL,gBAAR6E,IACJwV,KAAKshmC,aAAc,sBAAuB,KAAM37mC,GAG1CA,IAAiC,IAAxBqa,KAAKpQ,QAAQm0C,QAC3B/jC,KAAKqsmC,UAAW,IAIL,UAAR7hnC,GACJwV,KAAKosmC,aAAczmnC,GAGP,gBAAR6E,GACJwV,KAAK06nC,kBAAmB/0oC,IApBxBqa,KAAKqsmC,UAAW1mnC,EAsBlB,EAEAg1oC,kBAAmB,SAAUruoC,GAC5B,OAAOA,EAAOA,EAAKvI,QAAS,sCAAuC,QAAW,EAC/E,EAEAwrR,QAAS,WACR,IAAI3/Q,EAAUoQ,KAAKpQ,QAClBgroC,EAAM56nC,KAAK66nC,QAAQrjhC,SAAU,iBAI9B5nH,EAAQo+C,SAAW07C,EAAE32F,IAAK6noC,EAAI3poC,OAAQ,sBAAwB,SAAU+4K,GACvE,OAAO4w9B,EAAIpkoC,MAAOwzK,EACnB,GAEAhqK,KAAK25nC,gBAGmB,IAAnB/poC,EAAQm0C,QAAqB/jC,KAAK65nC,QAAQzloC,OAKnC4L,KAAK+jC,OAAO3vC,SAAWs1F,EAAEliG,SAAUwY,KAAK66nC,QAAS,GAAK76nC,KAAK+jC,OAAQ,IAGzE/jC,KAAK4zO,KAAKx/O,SAAWxE,EAAQo+C,SAAS55C,QAC1CxE,EAAQm0C,QAAS,EACjB/jC,KAAK+jC,OAAS2lD,KAId1pF,KAAKqsmC,UAAWrsmC,KAAKu6nC,aAAc/0oC,KAAKmE,IAAK,EAAGiG,EAAQm0C,OAAS,IAAK,IAOvEn0C,EAAQm0C,OAAS/jC,KAAK4zO,KAAKp9O,MAAOwJ,KAAK+jC,SApBvCn0C,EAAQm0C,QAAS,EACjB/jC,KAAK+jC,OAAS2lD,KAsBf1pF,KAAK2hC,UACN,EAEAA,SAAU,WACT3hC,KAAK6gmC,mBAAoB7gmC,KAAKpQ,QAAQo+C,UACtChuC,KAAKosmC,aAAcpsmC,KAAKpQ,QAAQuc,OAChCnM,KAAK06nC,kBAAmB16nC,KAAKpQ,QAAQ+7mC,aAErC3rmC,KAAK4zO,KAAK5W,IAAKh9N,KAAK+jC,QAASwzN,KAAM,CAClC,gBAAiB,QACjB,gBAAiB,QACjB0+D,UAAW,IAEZj2T,KAAK2smC,OAAO3v4B,IAAKh9N,KAAK+5nC,gBAAiB/5nC,KAAK+jC,SAC1CgB,OACAwyN,KAAM,CACN,cAAe,SAIXv3P,KAAK+jC,OAAO3vC,QAGjB4L,KAAK+jC,OACHwzN,KAAM,CACN,gBAAiB,OACjB,gBAAiB,OACjB0+D,SAAU,IAEZj2T,KAAK0hmC,UAAW1hmC,KAAK+jC,OAAQ,iBAAkB,mBAC/C/jC,KAAK+5nC,gBAAiB/5nC,KAAK+jC,QACzBa,OACA2yN,KAAM,CACN,cAAe,WAZjBv3P,KAAK4zO,KAAKr6N,GAAI,GAAIg+O,KAAM,WAAY,EAetC,EAEAoi4B,aAAc,WACb,IAAIrj7B,EAAOt2M,KACV86nC,EAAW96nC,KAAK4zO,KAChBmn5B,EAAc/6nC,KAAK65nC,QACnBntB,EAAa1smC,KAAK2smC,OAEnB3smC,KAAK66nC,QAAU76nC,KAAKg7nC,WAAWzj4B,KAAM,OAAQ,WAC7Cv3P,KAAK0hmC,UAAW1hmC,KAAK66nC,QAAS,cAC7B,uDAGD76nC,KAAK66nC,QACHlwhC,GAAI,YAAc3qG,KAAKygmC,eAAgB,OAAQ,SAAUt0lC,GACpDu9E,EAAG1pF,MAAOilH,GAAI,uBAClB94G,EAAMwgH,gBAER,GAQChiB,GAAI,QAAU3qG,KAAKygmC,eAAgB,kBAAmB,WACjD/2gC,EAAG1pF,MAAO2tM,QAAS,MAAO1oF,GAAI,uBAClCjlH,KAAK+wF,MAEP,GAED/wF,KAAK4zO,KAAO5zO,KAAK66nC,QAAQhgoC,KAAM,qBAC7B08P,KAAM,CACNj5P,KAAM,MACN23T,UAAW,IAEbj2T,KAAK0hmC,UAAW1hmC,KAAK4zO,KAAM,cAAe,oBAE1C5zO,KAAK65nC,QAAU75nC,KAAK4zO,KAAK7gP,IAAK,WAC7B,OAAO22F,EAAG,IAAK1pF,MAAQ,EACxB,GACEu3P,KAAM,CACNj5P,KAAM,eACN23T,UAAW,IAEbj2T,KAAK0hmC,UAAW1hmC,KAAK65nC,QAAS,kBAE9B75nC,KAAK2smC,OAASjjhC,IAEd1pF,KAAK65nC,QAAQjpnC,KAAM,SAAUvrB,EAAGkmU,GAC/B,IAAI5jM,EAAU2yuB,EAAOwyQ,EACpBmuB,EAAWvxiC,EAAG6hO,GAAS3iN,WAAW2uJ,KAAM,MACxCvtF,EAAMtgF,EAAG6hO,GAAS59G,QAAS,MAC3But7B,EAAuBlx9B,EAAIutF,KAAM,iBAG7BjhD,EAAKkj7B,SAAUju0B,IAEnBuhzB,GADAnl/B,EAAW4jM,EAAOj/T,MACC68F,UAAW,GAC9BmxwB,EAAQhkpB,EAAKhwN,QAAQuU,KAAMy7M,EAAKqk7B,kBAAmBhzgC,MAQnDA,EAAW,KADXml/B,EAAU9i8B,EAAIutF,KAAM,kBAAqB7tK,EAAG,CAAC,GAAIkf,WAAY,GAAI7qG,KAEjEu81B,EAAQhkpB,EAAKhwN,QAAQuU,KAAM8sH,IACfvzH,SACXkm2B,EAAQhkpB,EAAK6k7B,aAAcruB,IACrBr1I,YAAanhxB,EAAKq25B,OAAQtnnC,EAAI,IAAOixN,EAAKuk7B,SAEjDvgS,EAAM/imB,KAAM,YAAa,WAGrB+imB,EAAMlm2B,SACVkiN,EAAKq25B,OAASr25B,EAAKq25B,OAAOr5mC,IAAKgn2B,IAE3B4gS,GACJlx9B,EAAIj0K,KAAM,wBAAyBmloC,GAEpClx9B,EAAIutF,KAAM,CACT,gBAAiBu12B,EACjB,kBAAmBmuB,IAEpB3gS,EAAM/imB,KAAM,kBAAmB0j4B,EAChC,GAEAj7nC,KAAK2smC,OAAOp12B,KAAM,OAAQ,YAC1Bv3P,KAAK0hmC,UAAW1hmC,KAAK2smC,OAAQ,gBAAiB,qBAGzCmuB,IACJ96nC,KAAKu1Z,KAAMuluB,EAAS995B,IAAKh9N,KAAK4zO,OAC9B5zO,KAAKu1Z,KAAMwluB,EAAY/95B,IAAKh9N,KAAK65nC,UACjC75nC,KAAKu1Z,KAAMm3sB,EAAW1v4B,IAAKh9N,KAAK2smC,SAElC,EAGAquB,SAAU,WACT,OAAOh7nC,KAAK66nC,SAAW76nC,KAAK1Z,QAAQuU,KAAM,UAAW0e,GAAI,EAC1D,EAEA4hnC,aAAc,SAAUp9nC,GACvB,OAAO2rF,EAAG,SACR6tK,KAAM,KAAMx5P,GACZhI,KAAM,mBAAmB,EAC5B,EAEA8qmC,mBAAoB,SAAU7yjC,GAC7B,IAAI4lzB,EAAanpd,EAAIplZ,EAWrB,IATKqkG,EAAE35E,QAASi+B,KACTA,EAAS55C,OAEH45C,EAAS55C,SAAW4L,KAAK65nC,QAAQzloC,SAC5C45C,GAAW,GAFXA,GAAW,GAOP3oD,EAAI,EAAKolZ,EAAKzqY,KAAK4zO,KAAMvuP,GAAOA,IACrCuu2B,EAAclqwB,EAAG+gT,IACC,IAAbz8V,IAAmD,IAA9B07C,EAAE6rI,QAASlwO,EAAG2oD,IACvC4lzB,EAAYr8lB,KAAM,gBAAiB,QACnCv3P,KAAK0hmC,UAAW9tQ,EAAa,KAAM,uBAEnCA,EAAYvxlB,WAAY,iBACxBriQ,KAAK+gmC,aAAcntQ,EAAa,KAAM,sBAIxC5z1B,KAAKpQ,QAAQo+C,SAAWA,EAExBhuC,KAAKshmC,aAActhmC,KAAK6mW,SAAU7mW,KAAKu7oB,eAAiB,YAAa,MACvD,IAAbvtmB,EACF,EAEAo+jC,aAAc,SAAUjgmC,GACvB,IAAIod,EAAS,CAAC,EACTpd,GACJu9E,EAAE94E,KAAMzE,EAAMjrB,MAAO,KAAO,SAAUsV,EAAOu+F,GAC5CxrE,EAAQwrE,GAAc,eACvB,GAGD/0F,KAAKu1Z,KAAMv1Z,KAAK65nC,QAAQvmoC,IAAK0M,KAAK4zO,MAAOtgP,IAAK0M,KAAK2smC,SAGnD3smC,KAAKgszB,KAAK,EAAMhszB,KAAK65nC,QAAS,CAC7BzpgC,MAAO,SAAUjkH,GAChBA,EAAMwgH,gBACP,IAED3sH,KAAKgszB,IAAKhszB,KAAK65nC,QAAStwmC,GACxBvpB,KAAKgszB,IAAKhszB,KAAK4zO,KAAM,CAAEyzlB,QAAS,gBAChCrn0B,KAAKgszB,IAAKhszB,KAAK2smC,OAAQ,CAAEtlS,QAAS,kBAElCrn0B,KAAK+hmC,WAAY/hmC,KAAK4zO,MACtB5zO,KAAK8hmC,WAAY9hmC,KAAK4zO,KACvB,EAEA8m5B,kBAAmB,SAAU/uB,GAC5B,IAAIpzjC,EACH9wD,EAASuY,KAAK1Z,QAAQmB,SAEF,SAAhBkknC,GACJpzjC,EAAY9wD,EAAOb,SACnB2xD,GAAav4C,KAAK1Z,QAAQm6D,cAAgBzgD,KAAK1Z,QAAQM,SAEvDoZ,KAAK1Z,QAAQklgB,SAAU,YAAa56e,KAAM,WACzC,IAAI8yP,EAAOh6K,EAAG1pF,MACblX,EAAW46Q,EAAKv6Q,IAAK,YAEJ,aAAbL,GAAwC,UAAbA,IAGhCyvD,GAAamrN,EAAKjjN,aAAa,GAChC,GAEAzgD,KAAK1Z,QAAQkxH,WAAWwlH,IAAKh9N,KAAK2smC,QAAS/7lC,KAAM,WAChD2nC,GAAamxC,EAAG1pF,MAAOygD,aAAa,EACrC,GAEAzgD,KAAK2smC,OAAO/7lC,KAAM,WACjB84E,EAAG1pF,MAAOpZ,OAAQpB,KAAKmE,IAAK,EAAG4uD,EAC9BmxC,EAAG1pF,MAAO8tF,cAAgBpE,EAAG1pF,MAAOpZ,UACtC,GACEuC,IAAK,WAAY,SACQ,SAAhBwinC,IACXpzjC,EAAY,EACZv4C,KAAK2smC,OAAO/7lC,KAAM,WACjB2nC,EAAY/yD,KAAKmE,IAAK4uD,EAAWmxC,EAAG1pF,MAAOpZ,OAAQ,IAAKA,SACzD,GAAIA,OAAQ2xD,GAEd,EAEAunB,cAAe,SAAU3zD,GACxB,IAAIvc,EAAUoQ,KAAKpQ,QAClBm0C,EAAS/jC,KAAK+jC,OAEdimI,EADStgF,EAAGv9E,EAAM+kU,eACLvjI,QAAS,MACtBu/5B,EAAkBlj8B,EAAK,KAAQjmI,EAAQ,GACvC0n2B,EAAayhO,GAAmBt9mC,EAAQ87mC,YACxCyB,EAAS1hO,EAAa/hzB,IAAM1pF,KAAK+5nC,gBAAiB/v9B,GAClDoj8B,EAAUrpkC,EAAO3vC,OAAe4L,KAAK+5nC,gBAAiBh2lC,GAA5B2lD,IAC1B2jhC,EAAY,CACX+tB,OAAQr3lC,EACRwpkC,SAAUH,EACViuB,OAAQ5vP,EAAa/hzB,IAAMsgF,EAC3Byj8B,SAAUN,GAGZhhmC,EAAMwgH,iBAEDq9C,EAAI9/D,SAAU,sBAGjB8/D,EAAI9/D,SAAU,oBAGdlqG,KAAK8hC,SAGHorkC,IAAoBt9mC,EAAQ87mC,cAG4B,IAAxD1rmC,KAAKkl7B,SAAU,iBAAkB/46B,EAAOkhmC,KAI5Cz9mC,EAAQm0C,QAAS0n2B,GAAqBzr4B,KAAK4zO,KAAKp9O,MAAOwzK,GAEvDhqK,KAAK+jC,OAASmpkC,EAAkBxjhC,IAAMsgF,EACjChqK,KAAKgrR,KACThrR,KAAKgrR,IAAIrkM,QAGJymhC,EAAOh5mC,QAAW+4mC,EAAO/4mC,QAC9Bs1F,EAAEz/E,MAAO,oDAGLkjmC,EAAO/4mC,QACX4L,KAAKgpN,KAAMhpN,KAAK4zO,KAAKp9O,MAAOwzK,GAAO79J,GAEpCnM,KAAK0tmC,QAASvhmC,EAAOkhmC,GACtB,EAGAK,QAAS,SAAUvhmC,EAAOkhmC,GACzB,IAAI/25B,EAAOt2M,KACVmtmC,EAASE,EAAUI,SACnBL,EAASC,EAAUE,SAIpB,SAASlrkC,IACRi0K,EAAKx0K,SAAU,EACfw0K,EAAK4uuB,SAAU,WAAY/46B,EAAOkhmC,EACnC,CAEA,SAASzokC,IACR0xK,EAAKor5B,UAAW2L,EAAUguB,OAAO1t7B,QAAS,MAAQ,iBAAkB,mBAE/Dw/5B,EAAO/4mC,QAAUkiN,EAAK1mN,QAAQg1C,KAClC0xK,EAAK616B,MAAOhf,EAAQ725B,EAAK1mN,QAAQg1C,KAAMvC,IAEvC8qkC,EAAOvokC,OACPvC,IAEF,CAhBAriC,KAAK8hC,SAAU,EAmBVsrkC,EAAOh5mC,QAAU4L,KAAKpQ,QAAQm1C,KAClC/kC,KAAK6rnC,MAAOze,EAAQptmC,KAAKpQ,QAAQm1C,KAAM,WACtCuxK,EAAKyq5B,aAAcsM,EAAU+tB,OAAOzt7B,QAAS,MAC5C,iBAAkB,mBACnB/oK,GACD,IAEA5kC,KAAK+gmC,aAAcsM,EAAU+tB,OAAOzt7B,QAAS,MAC5C,iBAAkB,mBACnBy/5B,EAAOrokC,OACPH,KAGDwokC,EAAO712B,KAAM,cAAe,QAC5B812B,EAAU+tB,OAAO7j4B,KAAM,CACtB,gBAAiB,QACjB,gBAAiB,UAMb412B,EAAO/4mC,QAAUg5mC,EAAOh5mC,OAC5Bi5mC,EAAU+tB,OAAO7j4B,KAAM,YAAa,GACzB412B,EAAO/4mC,QAClB4L,KAAK4zO,KAAK3iP,OAAQ,WACjB,OAAwC,IAAjCy4F,EAAG1pF,MAAOu3P,KAAM,WACxB,GACEA,KAAM,YAAa,GAGtB412B,EAAO512B,KAAM,cAAe,SAC5B812B,EAAUguB,OAAO9j4B,KAAM,CACtB,gBAAiB,OACjB,gBAAiB,OACjB0+D,SAAU,GAEZ,EAEAo2yB,UAAW,SAAU71mC,GACpB,IAAI+0T,EACHxnR,EAAS/jC,KAAK4smC,YAAap2mC,GAGvButC,EAAQ,KAAQ/jC,KAAK+jC,OAAQ,KAK5BA,EAAO3vC,SACZ2vC,EAAS/jC,KAAK+jC,QAGfwnR,EAASxnR,EAAOlpC,KAAM,mBAAqB,GAC3CmF,KAAK8/D,cAAe,CACnB/xE,OAAQw9T,EACR2lB,cAAe3lB,EACf5+L,eAAgBjjC,EAAE95E,OAEpB,EAEAg9lC,YAAa,SAAUp2mC,GACtB,OAAiB,IAAVA,EAAkBkzF,IAAM1pF,KAAK4zO,KAAKr6N,GAAI/iB,EAC9C,EAEA8koC,UAAW,SAAU9koC,GAQpB,MALsB,iBAAVA,IACXA,EAAQwJ,KAAK65nC,QAAQrjoC,MAAOwJ,KAAK65nC,QAAQ5ooC,OAAQ,WAChDy4F,EAAE8gT,GAAGoklB,eAAgBp49B,GAAU,QAG1BA,CACR,EAEAw0C,SAAU,WACJhrC,KAAKgrR,KACThrR,KAAKgrR,IAAIrkM,QAGV3mF,KAAK66nC,QACHx43B,WAAY,QACZp1I,IAAKjtH,KAAKygmC,gBAEZzgmC,KAAK65nC,QACHx33B,WAAY,iBACZop2B,iBAEFzrmC,KAAK4zO,KAAKtgP,IAAK0M,KAAK2smC,QAAS/7lC,KAAM,WAC7B84E,EAAE3zF,KAAMiK,KAAM,mBAClB0pF,EAAG1pF,MAAO4iC,SAEV8mD,EAAG1pF,MAAOqiQ,WAAY,4FAGxB,GAEAriQ,KAAK4zO,KAAKhjO,KAAM,WACf,IAAI65X,EAAK/gT,EAAG1pF,MACX66B,EAAO4vW,EAAG10Y,KAAM,yBACZ8kC,EACJ4vW,EACElzI,KAAM,gBAAiB18N,GACvBonO,WAAY,yBAEdwoI,EAAGpoI,WAAY,gBAEjB,GAEAriQ,KAAK2smC,OAAO/nkC,OAEsB,YAA7B5kC,KAAKpQ,QAAQ+7mC,aACjB3rmC,KAAK2smC,OAAOxjnC,IAAK,SAAU,GAE7B,EAEA4kH,OAAQ,SAAUv3G,GACjB,IAAIw3C,EAAWhuC,KAAKpQ,QAAQo+C,UACV,IAAbA,SAIUl3C,IAAVN,EACJw3C,GAAW,GAEXx3C,EAAQwJ,KAAKs7nC,UAAW9koC,GAEvBw3C,EADI07C,EAAE35E,QAASi+B,GACJ07C,EAAE32F,IAAKi7C,EAAU,SAAU/P,GACrC,OAAOA,IAAQznC,EAAQynC,EAAM,IAC9B,GAEWyrD,EAAE32F,IAAKiN,KAAK4zO,KAAM,SAAU62J,EAAIxsW,GAC1C,OAAOA,IAAQznC,EAAQynC,EAAM,IAC9B,IAGFj+B,KAAK6gmC,mBAAoB7yjC,GAC1B,EAEA8/D,QAAS,SAAUt3G,GAClB,IAAIw3C,EAAWhuC,KAAKpQ,QAAQo+C,SAC5B,IAAkB,IAAbA,EAAL,CAIA,QAAel3C,IAAVN,EACJw3C,GAAW,MACL,CAEN,GADAx3C,EAAQwJ,KAAKs7nC,UAAW9koC,IACe,IAAlCkzF,EAAE6rI,QAAS/+N,EAAOw3C,GACtB,OAGAA,EADI07C,EAAE35E,QAASi+B,GACJ07C,EAAE53E,MAAO,CAAEtb,GAASw3C,GAAW56C,OAE/B,CAAEoD,EAEf,CACAwJ,KAAK6gmC,mBAAoB7yjC,EAfzB,CAgBD,EAEAg7K,KAAM,SAAUxyN,EAAO2V,GACtB3V,EAAQwJ,KAAKs7nC,UAAW9koC,GACxB,IAAI8/M,EAAOt2M,KACVgqK,EAAMhqK,KAAK4zO,KAAKr6N,GAAI/iB,GACpB+0T,EAASvhJ,EAAInvK,KAAM,mBACnBy/1B,EAAQt61B,KAAK+5nC,gBAAiB/v9B,GAC9Bqj8B,EAAY,CACXrj8B,IAAKA,EACLswrB,MAAOA,GAERj4zB,EAAW,SAAUm+7B,EAAOrz2B,GACX,UAAXA,GACJmpF,EAAKq25B,OAAOjnmC,MAAM,GAAO,GAG1B4wM,EAAKyq5B,aAAc/27B,EAAK,mBACxBswrB,EAAMj4lB,WAAY,aAEbm+tB,IAAUlqxB,EAAK00E,YACZ10E,EAAK00E,GAEd,EAGIhrR,KAAKw5nC,SAAUju0B,EAAQ,MAI5BvrT,KAAKgrR,IAAMthM,EAAEirjB,KAAM30oB,KAAKu7nC,cAAehw0B,EAAQp/S,EAAOkhmC,IAKjDrtmC,KAAKgrR,KAA+B,aAAxBhrR,KAAKgrR,IAAIjC,aACzB/oR,KAAK0hmC,UAAW137B,EAAK,mBACrBswrB,EAAM/imB,KAAM,YAAa,QAEzBv3P,KAAKgrR,IACHxpR,KAAM,SAAU6sF,EAAU8+B,EAAQqz2B,GAIlC/49B,WAAY,WACX6y1B,EAAMtx2B,KAAMqlG,GACZioH,EAAK4uuB,SAAU,OAAQ/46B,EAAOkhmC,GAE9BhrkC,EAAUm+7B,EAAOrz2B,EAClB,EAAG,EACJ,GACCk8B,KAAM,SAAUm30B,EAAOrz2B,GAIvB1lH,WAAY,WACX46B,EAAUm+7B,EAAOrz2B,EAClB,EAAG,EACJ,IAEH,EAEAougC,cAAe,SAAUhw0B,EAAQp/S,EAAOkhmC,GACvC,IAAI/25B,EAAOt2M,KACX,MAAO,CAINytF,IAAK89N,EAAOh0D,KAAM,QAASxzQ,QAAS,OAAQ,IAC5C0++B,WAAY,SAAUjC,EAAOx/wB,GAC5B,OAAO1K,EAAK4uuB,SAAU,aAAc/46B,EACnCu9E,EAAEsZ,OAAQ,CAAEw93B,MAAOA,EAAOO,aAAc//wB,GAAYqs5B,GACtD,EAEF,EAEA0sB,gBAAiB,SAAU/v9B,GAC1B,IAAIjsK,EAAK2rF,EAAGsgF,GAAMutF,KAAM,iBACxB,OAAOv3P,KAAK1Z,QAAQuU,KAAMmF,KAAK26nC,kBAAmB,IAAM58nC,GACzD,KAKuB,IAAnB2rF,EAAE89gC,cAGN99gC,EAAEm9Q,OAAQ,UAAWn9Q,EAAE8gT,GAAG52J,KAAM,CAC/B+l5B,aAAc,WACb35nC,KAAK8/lC,YAAa3rmC,WAClB6L,KAAK0hmC,UAAW1hmC,KAAK4zO,KAAM,SAC5B,IAIgBlqJ,EAAE8gT,GAAG52J,KAuBvBlqJ,EAAEm9Q,OAAQ,aAAc,CACvBhiS,QAAS,SACTj1E,QAAS,CACRy9G,QAAS,CACR,aAAc,kCAEfxG,QAAS,WAIR,IAAIvwD,EAAQozC,EAAG1pF,MAAOu3P,KAAM,UAAa,GAGzC,OAAO7tK,EAAG,OAAQ55D,KAAMwmB,GAAQttD,MACjC,EACA+7C,MAAM,EAGN7Q,MAAO,0BACPprC,SAAU,CACT8nmB,GAAI,cACJlgO,GAAI,cACJyyuB,UAAW,gBAEZv+jC,MAAM,EACNt4B,OAAO,EAGPmB,MAAO,KACPsgF,KAAM,MAGPytiC,gBAAiB,SAAU933B,EAAM3lQ,GAChC,IAAI09nC,GAAgB/33B,EAAKnM,KAAM,qBAAwB,IAAKr2Q,MAAO,OACnEu6oC,EAAY3noC,KAAMiK,GAClB2lQ,EACE3tQ,KAAM,gBAAiBgI,GACvBw5P,KAAM,mBAAoB7tK,EAAE1rF,KAAMy9nC,EAAYv9nC,KAAM,MACvD,EAEAw9nC,mBAAoB,SAAUh43B,GAC7B,IAAI3lQ,EAAK2lQ,EAAK3tQ,KAAM,iBACnB0loC,GAAgB/33B,EAAKnM,KAAM,qBAAwB,IAAKr2Q,MAAO,OAC/DsV,EAAQkzF,EAAE6rI,QAASx3N,EAAI09nC,IAER,IAAXjloC,GACJiloC,EAAY1umC,OAAQv2B,EAAO,GAG5BktQ,EAAKzB,WAAY,kBACjBw53B,EAAc/xiC,EAAE1rF,KAAMy9nC,EAAYv9nC,KAAM,OAEvCwlQ,EAAKnM,KAAM,mBAAoBkk4B,GAE/B/33B,EAAKrB,WAAY,mBAEnB,EAEA4irB,QAAS,WACRjl7B,KAAKgszB,IAAK,CACTgnB,UAAW,OACXwrJ,QAAS,SAIVx+9B,KAAK27nC,SAAW,CAAC,EAGjB37nC,KAAKwoG,QAAU,CAAC,EAGhBxoG,KAAK8wmC,WAAapnhC,EAAG,SACnB6tK,KAAM,CACNj5P,KAAM,MACN,YAAa,YACb,gBAAiB,cAEjBq/oB,SAAU39oB,KAAKvX,SAAU,GAAIiF,MAC/BsS,KAAK0hmC,UAAW1hmC,KAAK8wmC,WAAY,KAAM,+BAEvC9wmC,KAAK47nC,eAAiBlyiC,EAAG,GAC1B,EAEAw3gC,WAAY,SAAU12mC,EAAK7E,GAC1B,IAAI2wN,EAAOt2M,KAEXA,KAAKgE,OAAQxZ,EAAK7E,GAEL,YAAR6E,GACJk/F,EAAE94E,KAAM5Q,KAAK27nC,SAAU,SAAU59nC,EAAI89nC,GACpCvl7B,EAAKmjoB,eAAgBoiT,EAAYv1oC,QAClC,EAEF,EAEAu6mC,mBAAoB,SAAUl7mC,GAC7Bqa,KAAMra,EAAQ,WAAa,YAC5B,EAEAm2oC,SAAU,WACT,IAAIxl7B,EAAOt2M,KAGX0pF,EAAE94E,KAAM5Q,KAAK27nC,SAAU,SAAU59nC,EAAI89nC,GACpC,IAAI1vnC,EAAQu9E,EAAEi1a,MAAO,QACrBxyf,EAAMpe,OAASoe,EAAM+kU,cAAgB2qzB,EAAYv1oC,QAAS,GAC1DgwN,EAAK7oM,MAAOtB,GAAO,EACpB,GAGAnM,KAAK47nC,eAAiB57nC,KAAK47nC,eAAetooC,IACzC0M,KAAK1Z,QAAQuU,KAAMmF,KAAKpQ,QAAQskC,OAAQs77B,UACtCv+9B,OAAQ,WACR,IAAI3K,EAAUojG,EAAG1pF,MACjB,GAAK1Z,EAAQ2+H,GAAI,WAChB,OAAO3+H,EACLyP,KAAM,mBAAoBzP,EAAQixQ,KAAM,UACxC8K,WAAY,QAEhB,GAEH,EAEA053B,QAAS,WAGR/7nC,KAAK47nC,eAAehrnC,KAAM,WACzB,IAAItqB,EAAUojG,EAAG1pF,MACZ1Z,EAAQyP,KAAM,qBAClBzP,EAAQixQ,KAAM,QAASjxQ,EAAQyP,KAAM,oBAEvC,GACAiK,KAAK47nC,eAAiBlyiC,EAAG,GAC1B,EAEAqE,KAAM,SAAU5hF,GACf,IAAImqM,EAAOt2M,KACVjS,EAAS27F,EAAGv9E,EAAQA,EAAMpe,OAASiS,KAAK1Z,SAItCqnN,QAAS3tM,KAAKpQ,QAAQskC,OAGnBnmC,EAAOqG,SAAUrG,EAAOgI,KAAM,mBAI/BhI,EAAOwpQ,KAAM,UACjBxpQ,EAAOgI,KAAM,mBAAoBhI,EAAOwpQ,KAAM,UAG/CxpQ,EAAOgI,KAAM,mBAAmB,GAG3BoW,GAAwB,cAAfA,EAAM6D,MACnBjiB,EAAOy6G,UAAU53F,KAAM,WACtB,IACCornC,EADGv0oC,EAASiiG,EAAG1pF,MAEXvY,EAAOsO,KAAM,sBACjBimoC,EAAYtyiC,EAAEi1a,MAAO,SACX5wgB,OAASiuoC,EAAU9qzB,cAAgBlxU,KAC7Cs2M,EAAK7oM,MAAOuunC,GAAW,IAEnBv0oC,EAAO8vQ,KAAM,WACjB9vQ,EAAOmhH,WACP0tG,EAAK9tG,QAASxoG,KAAKjC,IAAO,CACzBzX,QAAS0Z,KACTs2C,MAAO7uD,EAAO8vQ,KAAM,UAErB9vQ,EAAO8vQ,KAAM,QAAS,IAExB,GAGDv3P,KAAKi8nC,uBAAwB9vnC,EAAOpe,GACpCiS,KAAKy50B,eAAgB1r1B,EAAQoe,GAC9B,EAEAst0B,eAAgB,SAAU1r1B,EAAQoe,GACjC,IAAI06F,EACHq1hC,EAAgBl8nC,KAAKpQ,QAAQi3G,QAC7ByvG,EAAOt2M,KACPskP,EAAYn4O,EAAQA,EAAM6D,KAAO,KAElC,GAA8B,iBAAlBksnC,GAA8BA,EAAczzhC,UACtDyzhC,EAAcvuhC,OACf,OAAO3tG,KAAK+kgC,MAAO54/B,EAAOpe,EAAQmuoC,IAGnCr1hC,EAAUq1hC,EAAc77nC,KAAMtS,EAAQ,GAAK,SAAUsgG,GAIpDioH,EAAKm/X,OAAQ,WAGN1nlB,EAAOgI,KAAM,qBASdoW,IACJA,EAAM6D,KAAOs0O,GAEdtkP,KAAK+kgC,MAAO54/B,EAAOpe,EAAQsgG,GAC5B,EACD,KAECruF,KAAK+kgC,MAAO54/B,EAAOpe,EAAQ84G,EAE7B,EAEAk+5B,MAAO,SAAU54/B,EAAOpe,EAAQ84G,GAC/B,IAAIg1hC,EAAaxllC,EAAS8llC,EAAaC,EACtCC,EAAiB3yiC,EAAEsZ,OAAQ,CAAC,EAAGhjG,KAAKpQ,QAAQ9G,UA2C7C,SAASA,EAAUqjB,GAClBkwnC,EAAerp4B,GAAK7mP,EACfkqC,EAAQ4uE,GAAI,YAGjB5uE,EAAQvtD,SAAUuzoC,EACnB,CA/CMx1hC,KAMNg1hC,EAAc77nC,KAAKs8nC,MAAOvuoC,IAEzB8toC,EAAYxllC,QAAQx7C,KAAM,uBAAwB7R,KAAM69G,IAWpD94G,EAAOk3H,GAAI,aACV94G,GAAwB,cAAfA,EAAM6D,KACnBjiB,EAAOwpQ,KAAM,QAAS,IAEtBxpQ,EAAOs0Q,WAAY,UAIrBw53B,EAAc77nC,KAAKu80B,SAAUxu1B,GAC7BsoD,EAAUwllC,EAAYxllC,QACtBr2C,KAAKw7nC,gBAAiBztoC,EAAQsoD,EAAQkhN,KAAM,OAC5ClhN,EAAQx7C,KAAM,uBAAwB7R,KAAM69G,GAK5C7mG,KAAK8wmC,WAAWt5/B,WAAWzyE,QAC3Bq3lC,EAAc1yiC,EAAG,SAAU1gG,KAAMqtD,EAAQx7C,KAAM,uBAAwB7R,SAC3Dq5Q,WAAY,QAASxnQ,KAAM,UAAWwnQ,WAAY,QAC9D+53B,EAAY/53B,WAAY,MAAOxnQ,KAAM,QAASwnQ,WAAY,MAC1D+53B,EAAYz+e,SAAU39oB,KAAK8wmC,YAStB9wmC,KAAKpQ,QAAQ0c,OAASH,GAAS,SAASjqB,KAAMiqB,EAAM6D,OACxDhQ,KAAKgszB,IAAKhszB,KAAKvX,SAAU,CACxBm4e,UAAW93e,IAIZA,EAAUqjB,IAEVkqC,EAAQvtD,SAAU4gG,EAAEsZ,OAAQ,CAC3BgwJ,GAAIjlQ,GACFiS,KAAKpQ,QAAQ9G,WAGjButD,EAAQtR,OAER/kC,KAAKmsnC,MAAO91kC,EAASr2C,KAAKpQ,QAAQg1C,MAM7B5kC,KAAKpQ,QAAQ0c,OAAStM,KAAKpQ,QAAQg1C,MAAQ5kC,KAAKpQ,QAAQg1C,KAAKnB,QACjE04lC,EAAcn8nC,KAAKm8nC,YAAcjuiC,YAAa,WACxC73C,EAAQ4uE,GAAI,cAChBn8H,EAAUuzoC,EAAerp4B,IACzB5kK,cAAe+tiC,GAEjB,EAAGzyiC,EAAEioH,GAAGvzH,WAGTp+E,KAAKkl7B,SAAU,OAAQ/46B,EAAO,CAAEkqC,QAASA,KAC1C,EAEA4llC,uBAAwB,SAAU9vnC,EAAOpe,GACxC,IAAIw7B,EAAS,CACZk1W,MAAO,SAAUtyX,GAChB,GAAKA,EAAMyrS,UAAYluN,EAAE8gT,GAAG5yF,QAAQrkB,OAAS,CAC5C,IAAIgp2B,EAAY7yiC,EAAEi1a,MAAOxyf,GACzBownC,EAAUrrzB,cAAgBnjV,EAAQ,GAClCiS,KAAKyN,MAAO8unC,GAAW,EACxB,CACD,GAKIxuoC,EAAQ,KAAQiS,KAAK1Z,QAAS,KAClCijC,EAAOqZ,OAAS,WACf5iC,KAAKw8nC,eAAgBx8nC,KAAKs8nC,MAAOvuoC,GAASsoD,QAC3C,GAGKlqC,GAAwB,cAAfA,EAAM6D,OACpBuZ,EAAO8zO,WAAa,SAEflxP,GAAwB,YAAfA,EAAM6D,OACpBuZ,EAAOy4kC,SAAW,SAEnBhimC,KAAKgszB,KAAK,EAAMj+zB,EAAQw7B,EACzB,EAEA9b,MAAO,SAAUtB,GAChB,IAAIkqC,EACHigK,EAAOt2M,KACPjS,EAAS27F,EAAGv9E,EAAQA,EAAM+kU,cAAgBlxU,KAAK1Z,SAC/Cu1oC,EAAc77nC,KAAKs8nC,MAAOvuoC,GAGrB8toC,GAUNxllC,EAAUwllC,EAAYxllC,QAIjBwllC,EAAYv5O,UAKjBl0zB,cAAepuF,KAAKm8nC,aAIfpuoC,EAAOgI,KAAM,sBAAyBhI,EAAOwpQ,KAAM,UACvDxpQ,EAAOwpQ,KAAM,QAASxpQ,EAAOgI,KAAM,qBAGpCiK,KAAK07nC,mBAAoB3toC,GAEzB8toC,EAAYY,QAAS,EACrBpmlC,EAAQ3wC,MAAM,GACd1F,KAAK6rnC,MAAOx1kC,EAASr2C,KAAKpQ,QAAQm1C,KAAM,WACvCuxK,EAAKkm7B,eAAgB9yiC,EAAG1pF,MACzB,GAEAjS,EAAOk0Q,WAAY,mBACnBjiQ,KAAKu1Z,KAAMxna,EAAQ,6BAGdA,EAAQ,KAAQiS,KAAK1Z,QAAS,IAClC0Z,KAAKu1Z,KAAMxna,EAAQ,UAEpBiS,KAAKu1Z,KAAMv1Z,KAAKvX,SAAU,aAErB0jB,GAAwB,eAAfA,EAAM6D,MACnB05E,EAAE94E,KAAM5Q,KAAKwoG,QAAS,SAAUzqG,EAAItW,GACnCiiG,EAAGjiG,EAAOnB,SAAUixQ,KAAM,QAAS9vQ,EAAO6uD,cACnCggK,EAAK9tG,QAASzqG,EACtB,GAGD89nC,EAAYv5O,SAAU,EACtBti5B,KAAKkl7B,SAAU,QAAS/46B,EAAO,CAAEkqC,QAASA,IACpCwllC,EAAYY,SACjBZ,EAAYv5O,SAAU,KAhDtBv05B,EAAOk0Q,WAAY,kBAkDrB,EAEAs6kB,SAAU,SAAUj21B,GACnB,IAAI+vD,EAAUqzC,EAAG,SAAU6tK,KAAM,OAAQ,WACxC1wJ,EAAUnd,EAAG,SAAUi0jB,SAAUtnmB,GACjCt4C,EAAKs4C,EAAQuyD,WAAW2uJ,KAAM,MAO/B,OALAv3P,KAAK0hmC,UAAW76/B,EAAS,sBACzB7mG,KAAK0hmC,UAAWrrjC,EAAS,aAAc,+BAEvCA,EAAQsnmB,SAAU39oB,KAAK4wmC,UAAWtqnC,IAE3B0Z,KAAK27nC,SAAU59nC,GAAO,CAC5BzX,QAASA,EACT+vD,QAASA,EAEX,EAEAimlC,MAAO,SAAUvuoC,GAChB,IAAIgQ,EAAKhQ,EAAOgI,KAAM,iBACtB,OAAOgI,EAAKiC,KAAK27nC,SAAU59nC,GAAO,IACnC,EAEAy+nC,eAAgB,SAAUnmlC,GACzBA,EAAQzT,gBACD5iC,KAAK27nC,SAAUtllC,EAAQkhN,KAAM,MACrC,EAEAq52B,UAAW,SAAU7inC,GACpB,IAAIzH,EAAUyH,EAAO4/M,QAAS,qBAM9B,OAJMrnN,EAAQ8N,SACb9N,EAAU0Z,KAAKvX,SAAU,GAAIiF,MAGvBpH,CACR,EAEA0kD,SAAU,WACT,IAAIsrK,EAAOt2M,KAGX0pF,EAAE94E,KAAM5Q,KAAK27nC,SAAU,SAAU59nC,EAAI89nC,GAGpC,IAAI1vnC,EAAQu9E,EAAEi1a,MAAO,QACpBr4gB,EAAUu1oC,EAAYv1oC,QACvB6lB,EAAMpe,OAASoe,EAAM+kU,cAAgB5qV,EAAS,GAC9CgwN,EAAK7oM,MAAOtB,GAAO,GAInBu9E,EAAG,IAAM3rF,GAAK6kC,SAGTt8C,EAAQyP,KAAM,sBAGZzP,EAAQixQ,KAAM,UACnBjxQ,EAAQixQ,KAAM,QAASjxQ,EAAQyP,KAAM,qBAEtCzP,EAAQ27Q,WAAY,oBAEtB,GACAjiQ,KAAK8wmC,WAAWlukC,QACjB,KAKuB,IAAnB8mD,EAAE89gC,cAGN99gC,EAAEm9Q,OAAQ,aAAcn9Q,EAAE8gT,GAAGn0V,QAAS,CACrCzmD,QAAS,CACR8soC,aAAc,MAEfngT,SAAU,WACT,IAAIs/S,EAAc77nC,KAAK8/lC,YAAa3rmC,WAIpC,OAHK6L,KAAKpQ,QAAQ8soC,cACjBb,EAAYxllC,QAAQ4zD,SAAUjqG,KAAKpQ,QAAQ8soC,cAErCb,CACR,IAImBnyiC,EAAE8gT,GAAGn0V,OAK1B,OAxwkB8B,mC,+BCR9B,IAAI5uD,EAAS,EAAQ,OAErBi6F,EAAOj9F,QAAUgD,C,+DCUjB,QAJA,SAAsB9B,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ,GAC9C,C","sources":["webpack://rsf-app/./node_modules/moment/locale/fa.js","webpack://rsf-app/./node_modules/lodash-es/_Symbol.js","webpack://rsf-app/./node_modules/ieee754/index.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/within.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/createPopper.js","webpack://rsf-app/./node_modules/react-overlays/esm/popper.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://rsf-app/./node_modules/react-overlays/esm/usePopper.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useSafeState.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/preflighttest.js","webpack://rsf-app/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://rsf-app/./node_modules/chart.js/dist/chart.esm.js","webpack://rsf-app/./node_modules/core-js/internals/to-string.js","webpack://rsf-app/./node_modules/lodash/_getRawTag.js","webpack://rsf-app/./node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js","webpack://rsf-app/./node_modules/final-form-arrays/dist/final-form-arrays.es.js","webpack://rsf-app/./node_modules/object-keys/isArguments.js","webpack://rsf-app/./node_modules/core-js/internals/perform.js","webpack://rsf-app/./node_modules/object-keys/index.js","webpack://rsf-app/./node_modules/moment/locale/sd.js","webpack://rsf-app/./node_modules/redux-thunk/es/index.js","webpack://rsf-app/./node_modules/density-clustering/lib/PriorityQueue.js","webpack://rsf-app/./node_modules/dom-helpers/esm/listen.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/math-trig.js","webpack://rsf-app/./node_modules/twilio-video/es5/networkqualityconfiguration.js","webpack://rsf-app/./node_modules/core-js/internals/array-species-create.js","webpack://rsf-app/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://rsf-app/./node_modules/moment/locale/zh-hk.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.to-iso-string.js","webpack://rsf-app/./node_modules/core-js/internals/get-iterator-direct.js","webpack://rsf-app/./node_modules/lodash-es/_cloneTypedArray.js","webpack://rsf-app/./node_modules/core-js/actual/number/index.js","webpack://rsf-app/./node_modules/lodash/isFunction.js","webpack://rsf-app/./node_modules/core-js/internals/get-async-iterator.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/urlMatcherFactory.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.filter.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateMatcher.js","webpack://rsf-app/./node_modules/core-js/internals/is-integral-number.js","webpack://rsf-app/./node_modules/date-fns/esm/addMonths/index.js","webpack://rsf-app/./node_modules/core-js/internals/species-constructor.js","webpack://rsf-app/./node_modules/core-js/internals/object-create.js","webpack://rsf-app/./node_modules/lodash-es/_getRawTag.js","webpack://rsf-app/./node_modules/lodash-es/_objectToString.js","webpack://rsf-app/./node_modules/lodash-es/_baseGetTag.js","webpack://rsf-app/./node_modules/lodash/isEqual.js","webpack://rsf-app/./node_modules/tether/dist/js/tether.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Table.js","webpack://rsf-app/./node_modules/core-js/internals/get-substitution.js","webpack://rsf-app/./node_modules/lodash/_baseFindIndex.js","webpack://rsf-app/./node_modules/ajv/lib/compile/schema_obj.js","webpack://rsf-app/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateRegistry.js","webpack://rsf-app/./node_modules/google-map-react/lib/google_map_markers_prerender.js","webpack://rsf-app/./node_modules/react-ga4/dist/ga4.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.constructor.js","webpack://rsf-app/./node_modules/core-js/internals/array-group-to-map.js","webpack://rsf-app/./node_modules/moment/locale/et.js","webpack://rsf-app/./node_modules/lodash/_castArrayLikeObject.js","webpack://rsf-app/./node_modules/lodash/flattenDeep.js","webpack://rsf-app/./node_modules/moment/locale/sr-cyrl.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/q.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.js","webpack://rsf-app/./node_modules/lodash-es/_baseToString.js","webpack://rsf-app/./node_modules/lodash-es/toString.js","webpack://rsf-app/./node_modules/serialize-javascript/index.js","webpack://rsf-app/./node_modules/core-js/internals/same-value.js","webpack://rsf-app/./node_modules/moment/locale/eu.js","webpack://rsf-app/./node_modules/angular-ui-tour/dist/angular-ui-tour.js","webpack://rsf-app/./node_modules/core-js/internals/environment-webkit-version.js","webpack://rsf-app/./node_modules/lodash/_nativeKeys.js","webpack://rsf-app/./node_modules/lodash/isBuffer.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/renderhintssignaling.js","webpack://rsf-app/./node_modules/point-in-polygon/flat.js","webpack://rsf-app/./node_modules/xlsx/xlsx.mjs","webpack://rsf-app/./node_modules/@turf/helpers/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/meta/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/bbox/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/invariant/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/boolean-point-in-polygon/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/distance/dist/es/index.js","webpack://rsf-app/./node_modules/topojson-server/src/object.js","webpack://rsf-app/./node_modules/topojson-server/src/hash/point-hash.js","webpack://rsf-app/./node_modules/@turf/bezier-spline/dist/es/lib/spline.js","webpack://rsf-app/./node_modules/@turf/great-circle/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/isobands/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/polygonize/dist/es/lib/util.js","webpack://rsf-app/./node_modules/@turf/polygonize/dist/es/lib/Node.js","webpack://rsf-app/./node_modules/@turf/polygonize/dist/es/lib/Edge.js","webpack://rsf-app/./node_modules/@turf/polygonize/dist/es/lib/EdgeRing.js","webpack://rsf-app/./node_modules/@turf/envelope/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/bbox-polygon/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/shortest-path/dist/es/index.js","webpack://rsf-app/./node_modules/@turf/polygonize/dist/es/lib/Graph.js","webpack://rsf-app/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://rsf-app/./node_modules/d3-voronoi/src/Edge.js","webpack://rsf-app/./node_modules/d3-voronoi/src/Cell.js","webpack://rsf-app/./node_modules/d3-voronoi/src/Circle.js","webpack://rsf-app/./node_modules/d3-voronoi/src/Beach.js","webpack://rsf-app/./node_modules/d3-voronoi/src/Diagram.js","webpack://rsf-app/./node_modules/d3-geo/src/adder.js","webpack://rsf-app/./node_modules/d3-geo/src/math.js","webpack://rsf-app/./node_modules/d3-array/src/bisector.js","webpack://rsf-app/./node_modules/d3-geo/src/rotation.js","webpack://rsf-app/./node_modules/d3-array/src/ascending.js","webpack://rsf-app/./node_modules/d3-geo/src/area.js","webpack://rsf-app/./node_modules/d3-geo/src/bounds.js","webpack://rsf-app/./node_modules/d3-array/src/bisect.js","webpack://rsf-app/./node_modules/d3-array/src/array.js","webpack://rsf-app/./node_modules/d3-array/src/ticks.js","webpack://rsf-app/./node_modules/d3-geo/src/polygonContains.js","webpack://rsf-app/./node_modules/d3-geo/src/transform.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://rsf-app/./node_modules/d3-geo/src/length.js","webpack://rsf-app/./node_modules/d3-geo/src/path/area.js","webpack://rsf-app/./node_modules/d3-geo/src/path/measure.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/resample.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/orthographic.js","webpack://rsf-app/./node_modules/d3-geo/src/projection/stereographic.js","webpack://rsf-app/./node_modules/core-js/internals/document-create-element.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/localtrackpublication.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/usePrevious.js","webpack://rsf-app/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitystats.js","webpack://rsf-app/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://rsf-app/./node_modules/lodash/_mapCacheHas.js","webpack://rsf-app/./node_modules/underscore/modules/_setup.js","webpack://rsf-app/./node_modules/underscore/modules/restArguments.js","webpack://rsf-app/./node_modules/underscore/modules/isObject.js","webpack://rsf-app/./node_modules/underscore/modules/isNull.js","webpack://rsf-app/./node_modules/underscore/modules/isUndefined.js","webpack://rsf-app/./node_modules/underscore/modules/isBoolean.js","webpack://rsf-app/./node_modules/underscore/modules/isElement.js","webpack://rsf-app/./node_modules/underscore/modules/_tagTester.js","webpack://rsf-app/./node_modules/underscore/modules/isString.js","webpack://rsf-app/./node_modules/underscore/modules/isNumber.js","webpack://rsf-app/./node_modules/underscore/modules/isDate.js","webpack://rsf-app/./node_modules/underscore/modules/isRegExp.js","webpack://rsf-app/./node_modules/underscore/modules/isError.js","webpack://rsf-app/./node_modules/underscore/modules/isSymbol.js","webpack://rsf-app/./node_modules/underscore/modules/isArrayBuffer.js","webpack://rsf-app/./node_modules/underscore/modules/isFunction.js","webpack://rsf-app/./node_modules/underscore/modules/_hasObjectTag.js","webpack://rsf-app/./node_modules/underscore/modules/_stringTagBug.js","webpack://rsf-app/./node_modules/underscore/modules/isDataView.js","webpack://rsf-app/./node_modules/underscore/modules/isArray.js","webpack://rsf-app/./node_modules/underscore/modules/_has.js","webpack://rsf-app/./node_modules/underscore/modules/isArguments.js","webpack://rsf-app/./node_modules/underscore/modules/isFinite.js","webpack://rsf-app/./node_modules/underscore/modules/isNaN.js","webpack://rsf-app/./node_modules/underscore/modules/constant.js","webpack://rsf-app/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://rsf-app/./node_modules/underscore/modules/_shallowProperty.js","webpack://rsf-app/./node_modules/underscore/modules/_getByteLength.js","webpack://rsf-app/./node_modules/underscore/modules/_isBufferLike.js","webpack://rsf-app/./node_modules/underscore/modules/isTypedArray.js","webpack://rsf-app/./node_modules/underscore/modules/_getLength.js","webpack://rsf-app/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://rsf-app/./node_modules/underscore/modules/keys.js","webpack://rsf-app/./node_modules/underscore/modules/isEmpty.js","webpack://rsf-app/./node_modules/underscore/modules/isMatch.js","webpack://rsf-app/./node_modules/underscore/modules/underscore.js","webpack://rsf-app/./node_modules/underscore/modules/_toBufferView.js","webpack://rsf-app/./node_modules/underscore/modules/isEqual.js","webpack://rsf-app/./node_modules/underscore/modules/allKeys.js","webpack://rsf-app/./node_modules/underscore/modules/_methodFingerprint.js","webpack://rsf-app/./node_modules/underscore/modules/isMap.js","webpack://rsf-app/./node_modules/underscore/modules/isWeakMap.js","webpack://rsf-app/./node_modules/underscore/modules/isSet.js","webpack://rsf-app/./node_modules/underscore/modules/isWeakSet.js","webpack://rsf-app/./node_modules/underscore/modules/values.js","webpack://rsf-app/./node_modules/underscore/modules/pairs.js","webpack://rsf-app/./node_modules/underscore/modules/invert.js","webpack://rsf-app/./node_modules/underscore/modules/functions.js","webpack://rsf-app/./node_modules/underscore/modules/_createAssigner.js","webpack://rsf-app/./node_modules/underscore/modules/extend.js","webpack://rsf-app/./node_modules/underscore/modules/extendOwn.js","webpack://rsf-app/./node_modules/underscore/modules/defaults.js","webpack://rsf-app/./node_modules/underscore/modules/_baseCreate.js","webpack://rsf-app/./node_modules/underscore/modules/create.js","webpack://rsf-app/./node_modules/underscore/modules/clone.js","webpack://rsf-app/./node_modules/underscore/modules/tap.js","webpack://rsf-app/./node_modules/underscore/modules/toPath.js","webpack://rsf-app/./node_modules/underscore/modules/_toPath.js","webpack://rsf-app/./node_modules/underscore/modules/_deepGet.js","webpack://rsf-app/./node_modules/underscore/modules/get.js","webpack://rsf-app/./node_modules/underscore/modules/has.js","webpack://rsf-app/./node_modules/underscore/modules/identity.js","webpack://rsf-app/./node_modules/underscore/modules/matcher.js","webpack://rsf-app/./node_modules/underscore/modules/property.js","webpack://rsf-app/./node_modules/underscore/modules/_optimizeCb.js","webpack://rsf-app/./node_modules/underscore/modules/_baseIteratee.js","webpack://rsf-app/./node_modules/underscore/modules/iteratee.js","webpack://rsf-app/./node_modules/underscore/modules/_cb.js","webpack://rsf-app/./node_modules/underscore/modules/mapObject.js","webpack://rsf-app/./node_modules/underscore/modules/noop.js","webpack://rsf-app/./node_modules/underscore/modules/propertyOf.js","webpack://rsf-app/./node_modules/underscore/modules/times.js","webpack://rsf-app/./node_modules/underscore/modules/random.js","webpack://rsf-app/./node_modules/underscore/modules/now.js","webpack://rsf-app/./node_modules/underscore/modules/_createEscaper.js","webpack://rsf-app/./node_modules/underscore/modules/_escapeMap.js","webpack://rsf-app/./node_modules/underscore/modules/escape.js","webpack://rsf-app/./node_modules/underscore/modules/unescape.js","webpack://rsf-app/./node_modules/underscore/modules/_unescapeMap.js","webpack://rsf-app/./node_modules/underscore/modules/templateSettings.js","webpack://rsf-app/./node_modules/underscore/modules/template.js","webpack://rsf-app/./node_modules/underscore/modules/result.js","webpack://rsf-app/./node_modules/underscore/modules/uniqueId.js","webpack://rsf-app/./node_modules/underscore/modules/chain.js","webpack://rsf-app/./node_modules/underscore/modules/_executeBound.js","webpack://rsf-app/./node_modules/underscore/modules/partial.js","webpack://rsf-app/./node_modules/underscore/modules/bind.js","webpack://rsf-app/./node_modules/underscore/modules/_isArrayLike.js","webpack://rsf-app/./node_modules/underscore/modules/_flatten.js","webpack://rsf-app/./node_modules/underscore/modules/bindAll.js","webpack://rsf-app/./node_modules/underscore/modules/memoize.js","webpack://rsf-app/./node_modules/underscore/modules/delay.js","webpack://rsf-app/./node_modules/underscore/modules/defer.js","webpack://rsf-app/./node_modules/underscore/modules/throttle.js","webpack://rsf-app/./node_modules/underscore/modules/debounce.js","webpack://rsf-app/./node_modules/underscore/modules/wrap.js","webpack://rsf-app/./node_modules/underscore/modules/negate.js","webpack://rsf-app/./node_modules/underscore/modules/compose.js","webpack://rsf-app/./node_modules/underscore/modules/after.js","webpack://rsf-app/./node_modules/underscore/modules/before.js","webpack://rsf-app/./node_modules/underscore/modules/once.js","webpack://rsf-app/./node_modules/underscore/modules/findKey.js","webpack://rsf-app/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://rsf-app/./node_modules/underscore/modules/findIndex.js","webpack://rsf-app/./node_modules/underscore/modules/findLastIndex.js","webpack://rsf-app/./node_modules/underscore/modules/sortedIndex.js","webpack://rsf-app/./node_modules/underscore/modules/_createIndexFinder.js","webpack://rsf-app/./node_modules/underscore/modules/indexOf.js","webpack://rsf-app/./node_modules/underscore/modules/lastIndexOf.js","webpack://rsf-app/./node_modules/underscore/modules/find.js","webpack://rsf-app/./node_modules/underscore/modules/findWhere.js","webpack://rsf-app/./node_modules/underscore/modules/each.js","webpack://rsf-app/./node_modules/underscore/modules/map.js","webpack://rsf-app/./node_modules/underscore/modules/_createReduce.js","webpack://rsf-app/./node_modules/underscore/modules/reduce.js","webpack://rsf-app/./node_modules/underscore/modules/reduceRight.js","webpack://rsf-app/./node_modules/underscore/modules/filter.js","webpack://rsf-app/./node_modules/underscore/modules/reject.js","webpack://rsf-app/./node_modules/underscore/modules/every.js","webpack://rsf-app/./node_modules/underscore/modules/some.js","webpack://rsf-app/./node_modules/underscore/modules/contains.js","webpack://rsf-app/./node_modules/underscore/modules/invoke.js","webpack://rsf-app/./node_modules/underscore/modules/pluck.js","webpack://rsf-app/./node_modules/underscore/modules/where.js","webpack://rsf-app/./node_modules/underscore/modules/max.js","webpack://rsf-app/./node_modules/underscore/modules/min.js","webpack://rsf-app/./node_modules/underscore/modules/toArray.js","webpack://rsf-app/./node_modules/underscore/modules/sample.js","webpack://rsf-app/./node_modules/underscore/modules/shuffle.js","webpack://rsf-app/./node_modules/underscore/modules/sortBy.js","webpack://rsf-app/./node_modules/underscore/modules/_group.js","webpack://rsf-app/./node_modules/underscore/modules/groupBy.js","webpack://rsf-app/./node_modules/underscore/modules/indexBy.js","webpack://rsf-app/./node_modules/underscore/modules/countBy.js","webpack://rsf-app/./node_modules/underscore/modules/partition.js","webpack://rsf-app/./node_modules/underscore/modules/size.js","webpack://rsf-app/./node_modules/underscore/modules/_keyInObj.js","webpack://rsf-app/./node_modules/underscore/modules/pick.js","webpack://rsf-app/./node_modules/underscore/modules/omit.js","webpack://rsf-app/./node_modules/underscore/modules/initial.js","webpack://rsf-app/./node_modules/underscore/modules/first.js","webpack://rsf-app/./node_modules/underscore/modules/rest.js","webpack://rsf-app/./node_modules/underscore/modules/last.js","webpack://rsf-app/./node_modules/underscore/modules/compact.js","webpack://rsf-app/./node_modules/underscore/modules/flatten.js","webpack://rsf-app/./node_modules/underscore/modules/difference.js","webpack://rsf-app/./node_modules/underscore/modules/without.js","webpack://rsf-app/./node_modules/underscore/modules/uniq.js","webpack://rsf-app/./node_modules/underscore/modules/union.js","webpack://rsf-app/./node_modules/underscore/modules/intersection.js","webpack://rsf-app/./node_modules/underscore/modules/unzip.js","webpack://rsf-app/./node_modules/underscore/modules/zip.js","webpack://rsf-app/./node_modules/underscore/modules/object.js","webpack://rsf-app/./node_modules/underscore/modules/range.js","webpack://rsf-app/./node_modules/underscore/modules/chunk.js","webpack://rsf-app/./node_modules/underscore/modules/_chainResult.js","webpack://rsf-app/./node_modules/underscore/modules/mixin.js","webpack://rsf-app/./node_modules/underscore/modules/underscore-array-methods.js","webpack://rsf-app/./node_modules/underscore/modules/index-default.js","webpack://rsf-app/./node_modules/lodash/_getSymbols.js","webpack://rsf-app/./node_modules/ajv/lib/compile/async.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormContext.js","webpack://rsf-app/./node_modules/@mapbox/point-geometry/index.js","webpack://rsf-app/./node_modules/lodash/_baseIsTypedArray.js","webpack://rsf-app/./node_modules/geojson-rbush/index.js","webpack://rsf-app/./node_modules/google-map-react/lib/google_heatmap.js","webpack://rsf-app/./node_modules/deep-equal/index.js","webpack://rsf-app/./node_modules/json-schema-merge-allof/src/common.js","webpack://rsf-app/./node_modules/lodash/_baseMap.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/sdp/trackmatcher.js","webpack://rsf-app/./node_modules/lodash-es/isLength.js","webpack://rsf-app/./node_modules/lodash/intersection.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localaudiotrack.js","webpack://rsf-app/./node_modules/prop-types/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.bold.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.search.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/util/sdp.js","webpack://rsf-app/./node_modules/moment/locale/sk.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitymediastats.js","webpack://rsf-app/./node_modules/skmeans/dist/node/kinit.js","webpack://rsf-app/./node_modules/lodash/_getTag.js","webpack://rsf-app/./node_modules/moment/locale/ku-kmr.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/twiliowarning.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/path/pathUtils.js","webpack://rsf-app/./node_modules/core-js/internals/add-to-unscopables.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","webpack://rsf-app/./node_modules/compute-gcd/lib/index.js","webpack://rsf-app/./node_modules/lodash/mergeWith.js","webpack://rsf-app/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://rsf-app/./node_modules/moment/locale/ar-ps.js","webpack://rsf-app/./node_modules/core-js/internals/create-property-descriptor.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.group-by.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/ref.js","webpack://rsf-app/./node_modules/angular/index.js","webpack://rsf-app/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://rsf-app/./node_modules/json-schema-traverse/index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/view/index.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Fade.js","webpack://rsf-app/./node_modules/moment/locale/ca.js","webpack://rsf-app/./node_modules/twilio-video/src/ws.js","webpack://rsf-app/./node_modules/ajv/lib/compile/index.js","webpack://rsf-app/./node_modules/angular-bind-html-compile/angular-bind-html-compile.js","webpack://rsf-app/./node_modules/regenerator-runtime/runtime.js","webpack://rsf-app/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormLabel.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.race.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/detectsilentvideo.js","webpack://rsf-app/./node_modules/core-js/internals/environment-is-webos-webkit.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/passiveEvents.js","webpack://rsf-app/./node_modules/json-schema-merge-allof/src/complex-resolvers/properties.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/custom.js","webpack://rsf-app/./node_modules/core-js/internals/array-from-async.js","webpack://rsf-app/./node_modules/browser-image-compression/dist/browser-image-compression.mjs","webpack://rsf-app/./node_modules/moment/locale/ne.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/pattern.js","webpack://rsf-app/./node_modules/core-js/internals/array-last-index-of.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localvideotrack.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/lookup-reference.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.last-index-of.js","webpack://rsf-app/./node_modules/moment/locale/en-in.js","webpack://rsf-app/./node_modules/lodash/uniqWith.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/utils/criteria-eval.js","webpack://rsf-app/./node_modules/lodash-es/_DataView.js","webpack://rsf-app/./node_modules/lodash-es/_Promise.js","webpack://rsf-app/./node_modules/lodash-es/_WeakMap.js","webpack://rsf-app/./node_modules/lodash-es/_getTag.js","webpack://rsf-app/./node_modules/lodash/_root.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/pipelines/backgroundImageStage.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/hookRegistry.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.finally.js","webpack://rsf-app/./node_modules/object-is/polyfill.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ElementChildren.js","webpack://rsf-app/./node_modules/core-js/internals/iterator-close.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.to-reversed.js","webpack://rsf-app/./node_modules/warning/warning.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://rsf-app/./node_modules/react-overlays/esm/DropdownToggle.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/isPlainObject.js","webpack://rsf-app/./node_modules/lodash/_baseClone.js","webpack://rsf-app/./node_modules/date-fns/esm/toDate/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/data/transceiver.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/const.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localdatatrack.js","webpack://rsf-app/./node_modules/core-js/internals/function-name.js","webpack://rsf-app/./node_modules/lodash/_getValue.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.constructor.js","webpack://rsf-app/./node_modules/call-bind/index.js","webpack://rsf-app/./node_modules/date-fns/esm/formatISO/index.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/text.js","webpack://rsf-app/./node_modules/core-js/internals/set-to-string-tag.js","webpack://rsf-app/./node_modules/core-js/internals/is-symbol.js","webpack://rsf-app/./node_modules/lodash/_getMatchData.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/icereport.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.find-last.js","webpack://rsf-app/./node_modules/date-fns/esm/subYears/index.js","webpack://rsf-app/./node_modules/date-fns/esm/addYears/index.js","webpack://rsf-app/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://rsf-app/./node_modules/moment/locale/ta.js","webpack://rsf-app/./node_modules/json-schema-merge-allof/src/complex-resolvers/items.js","webpack://rsf-app/./node_modules/angular/angular.js","webpack://rsf-app/./node_modules/core-js/internals/proxy-accessor.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/remotetrackpublication.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/updateGlobals.js","webpack://rsf-app/./node_modules/lodash/isPlainObject.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/publisherhintsignaling.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.starts-with.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Jumbotron.js","webpack://rsf-app/./node_modules/moment/locale/br.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.with.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/AbstractNavItem.js","webpack://rsf-app/./node_modules/moment/locale/he.js","webpack://rsf-app/./node_modules/moment/locale/te.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.big.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotevideotrackpublication.js","webpack://rsf-app/./node_modules/lodash/_baseIndexOfWith.js","webpack://rsf-app/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/urlRule.js","webpack://rsf-app/./node_modules/lodash/pullAll.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcsessiondescription/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/syntheticvideo.js","webpack://rsf-app/./node_modules/uuid/v4.js","webpack://rsf-app/./node_modules/lodash/_getMapData.js","webpack://rsf-app/./node_modules/lodash/_hashHas.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/isNumber.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/twilio-video-errors.js","webpack://rsf-app/./node_modules/lodash-es/stubArray.js","webpack://rsf-app/./node_modules/lodash/toString.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/sdp/simulcast.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.find-last-index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/baseLocationService.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.unshift.js","webpack://rsf-app/./node_modules/core-js/internals/environment-ff-version.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateService.js","webpack://rsf-app/./node_modules/core-js/internals/environment-is-ie-or-edge.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/PopoverTitle.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/PopoverContent.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Popover.js","webpack://rsf-app/./node_modules/core-js/internals/is-possible-prototype.js","webpack://rsf-app/./node_modules/is-regex/index.js","webpack://rsf-app/./node_modules/lodash/_arraySome.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/comment.js","webpack://rsf-app/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://rsf-app/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://rsf-app/./node_modules/react-tracking/build/makeClassMemberDecorator.js","webpack://rsf-app/./node_modules/lodash-es/_nativeKeys.js","webpack://rsf-app/./node_modules/lodash-es/_baseKeys.js","webpack://rsf-app/./node_modules/lodash/_arrayPush.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.with-resolvers.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/glob.js","webpack://rsf-app/./node_modules/deepmerge/dist/cjs.js","webpack://rsf-app/./node_modules/google-map-react/lib/google_map.js","webpack://rsf-app/./node_modules/core-js/stable/date/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/twilioerror.js","webpack://rsf-app/./node_modules/bessel/bessel.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/remoteaudiotrackstats.js","webpack://rsf-app/./node_modules/core-js/stable/regexp/index.js","webpack://rsf-app/./node_modules/lodash/_safeGet.js","webpack://rsf-app/./node_modules/react-overlays/esm/Overlay.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Overlay.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/OverlayTrigger.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.some.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/InputGroup.js","webpack://rsf-app/./node_modules/react/cjs/react.production.min.js","webpack://rsf-app/./node_modules/preact/hooks/dist/hooks.module.js","webpack://rsf-app/./node_modules/preact/compat/dist/compat.module.js","webpack://rsf-app/./node_modules/lodash/_arrayIncludes.js","webpack://rsf-app/./node_modules/regexp.prototype.flags/polyfill.js","webpack://rsf-app/./node_modules/lodash/_baseIteratee.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/path/pathNode.js","webpack://rsf-app/./node_modules/lodash-es/_getPrototype.js","webpack://rsf-app/./node_modules/moment/locale/lo.js","webpack://rsf-app/./node_modules/core-js/actual/array/index.js","webpack://rsf-app/./node_modules/lodash/_baseIsSet.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localdatatrackpublication.js","webpack://rsf-app/./node_modules/core-js/internals/environment-is-node.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.sup.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/index.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.function.metadata.js","webpack://rsf-app/./node_modules/lodash-es/_getSymbols.js","webpack://rsf-app/./node_modules/lodash-es/_arrayFilter.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.all.js","webpack://rsf-app/./node_modules/lodash/_assignValue.js","webpack://rsf-app/./node_modules/jstat/dist/jstat.js","webpack://rsf-app/./node_modules/moment/locale/uk.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualityvideostats.js","webpack://rsf-app/./node_modules/lodash-es/_basePick.js","webpack://rsf-app/./node_modules/lodash-es/pick.js","webpack://rsf-app/./node_modules/lodash-es/uniqueId.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/ArrayField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/BooleanField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/MultiSchemaField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/NumberField.js","webpack://rsf-app/./node_modules/markdown-to-jsx/dist/index.modern.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/ObjectField.js","webpack://rsf-app/./node_modules/lodash-es/unset.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/SchemaField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/StringField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/NullField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ArrayFieldDescriptionTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ArrayFieldItemTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ArrayFieldTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ArrayFieldTitleTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/BaseInputTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ButtonTemplates/SubmitButton.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ButtonTemplates/IconButton.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ButtonTemplates/AddButton.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/DescriptionField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ErrorList.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/FieldTemplate/Label.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/FieldTemplate/index.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/FieldTemplate/FieldTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/FieldErrorTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/FieldHelpTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ObjectFieldTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/TitleField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/UnsupportedField.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/WrapIfAdditionalTemplate.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/AltDateWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/AltDateTimeWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/CheckboxWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/CheckboxesWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/ColorWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/DateWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/DateTimeWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/EmailWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/FileWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/HiddenWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/PasswordWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/RadioWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/RangeWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/SelectWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/TextareaWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/TextWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/TimeWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/URLWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/UpDownWidget.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/Form.js","webpack://rsf-app/./node_modules/lodash-es/forEach.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/getDefaultRegistry.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/fields/index.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/index.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/templates/ButtonTemplates/index.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/components/widgets/index.js","webpack://rsf-app/./node_modules/@rjsf/core/lib/index.js","webpack://rsf-app/./node_modules/core-js/internals/try-to-string.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/track.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/icereportfactory.js","webpack://rsf-app/./node_modules/react-tracking/build/trackEventMethodDecorator.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/sid.js","webpack://rsf-app/./node_modules/core-js/modules/es.aggregate-error.constructor.js","webpack://rsf-app/./node_modules/moment/locale/hy-am.js","webpack://rsf-app/./node_modules/lodash/_basePropertyDeep.js","webpack://rsf-app/./node_modules/google-map-react/lib/google_map_map.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/memoryLocationConfig.js","webpack://rsf-app/./node_modules/@vgs/collect-js/dist/collect-js.esm.js","webpack://rsf-app/./node_modules/moment/locale/bn-bd.js","webpack://rsf-app/./node_modules/moment/locale/si.js","webpack://rsf-app/./node_modules/@fullcalendar/react/dist/index.js","webpack://rsf-app/./node_modules/lodash/_mapCacheDelete.js","webpack://rsf-app/./node_modules/moment/locale/es-mx.js","webpack://rsf-app/./node_modules/twilio-video/es5/encodingparameters.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/getturncredentials.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useEventCallback.js","webpack://rsf-app/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://rsf-app/./node_modules/value-equal/esm/value-equal.js","webpack://rsf-app/./node_modules/history/esm/history.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://rsf-app/./node_modules/date-fns/esm/format/index.js","webpack://rsf-app/./node_modules/date-fns/esm/isValid/index.js","webpack://rsf-app/./node_modules/date-fns/esm/isDate/index.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.find-last-index.js","webpack://rsf-app/./node_modules/core-js/internals/to-length.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ToastContext.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ToastHeader.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ToastBody.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Toast.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.at.js","webpack://rsf-app/./node_modules/core-js/internals/queue.js","webpack://rsf-app/./node_modules/core-js/internals/function-apply.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://rsf-app/./node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","webpack://rsf-app/./node_modules/core-js/es/string/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.reduce-right.js","webpack://rsf-app/./node_modules/core-js/internals/string-trim-end.js","webpack://rsf-app/./node_modules/has/src/index.js","webpack://rsf-app/./node_modules/lodash-es/_getAllKeys.js","webpack://rsf-app/./node_modules/core-js/internals/path.js","webpack://rsf-app/./node_modules/lodash/_cacheHas.js","webpack://rsf-app/./node_modules/@fullcalendar/bootstrap/internal.js","webpack://rsf-app/./node_modules/@fullcalendar/bootstrap/index.js","webpack://rsf-app/./node_modules/lodash/_baseSetToString.js","webpack://rsf-app/./node_modules/core-js/internals/array-includes.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/util/index.js","webpack://rsf-app/./node_modules/core-js/stable/array/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/senderreport.js","webpack://rsf-app/./node_modules/core-js/internals/is-object.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/syntheticaudio.js","webpack://rsf-app/./node_modules/invariant/browser.js","webpack://rsf-app/./node_modules/lodash/_mapToArray.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/index.js","webpack://rsf-app/./node_modules/core-js/internals/html.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/financial.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/remotevideotrackstats.js","webpack://rsf-app/./node_modules/core-js/internals/async-iterator-close.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.italics.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://rsf-app/./node_modules/moment/locale/es-do.js","webpack://rsf-app/./node_modules/lodash-es/cloneDeep.js","webpack://rsf-app/./node_modules/lodash/_createAssigner.js","webpack://rsf-app/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://rsf-app/./node_modules/rsf-visualizer/dist/rsf-visualizer.js","webpack://rsf-app/./node_modules/moment/locale/vi.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/isEmpty.js","webpack://rsf-app/./node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/remotetrackstats.js","webpack://rsf-app/./node_modules/lodash/_Hash.js","webpack://rsf-app/./node_modules/uncontrollable/lib/esm/utils.js","webpack://rsf-app/./node_modules/uncontrollable/lib/esm/hook.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.includes.js","webpack://rsf-app/./node_modules/lodash/_copyObject.js","webpack://rsf-app/./node_modules/moment/locale/it-ch.js","webpack://rsf-app/./node_modules/twilio-video/es5/webaudio/workaround180748.js","webpack://rsf-app/./node_modules/redux-devtools-extension/index.js","webpack://rsf-app/./node_modules/lodash/_equalByTag.js","webpack://rsf-app/./node_modules/lodash/_basePullAll.js","webpack://rsf-app/./node_modules/lodash-es/_copyObject.js","webpack://rsf-app/./node_modules/lodash/_hashClear.js","webpack://rsf-app/./node_modules/lodash-es/_Stack.js","webpack://rsf-app/./node_modules/lodash-es/_stackClear.js","webpack://rsf-app/./node_modules/lodash-es/_stackDelete.js","webpack://rsf-app/./node_modules/lodash-es/_stackGet.js","webpack://rsf-app/./node_modules/lodash-es/_stackHas.js","webpack://rsf-app/./node_modules/lodash-es/_stackSet.js","webpack://rsf-app/./node_modules/core-js/internals/classof-raw.js","webpack://rsf-app/./node_modules/moment/locale/nb.js","webpack://rsf-app/./node_modules/reselect/es/defaultMemoize.js","webpack://rsf-app/./node_modules/reselect/es/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/util/latch.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/trackpublication.js","webpack://rsf-app/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/getstats.js","webpack://rsf-app/./node_modules/react-transition-group/esm/config.js","webpack://rsf-app/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://rsf-app/./node_modules/react-transition-group/esm/Transition.js","webpack://rsf-app/./node_modules/core-js/es/number/index.js","webpack://rsf-app/./node_modules/react-is/cjs/react-is.production.min.js","webpack://rsf-app/./node_modules/core-js/internals/validate-arguments-length.js","webpack://rsf-app/./node_modules/prop-types-extra/lib/all.js","webpack://rsf-app/./node_modules/lodash/_copyArray.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/propertyNames.js","webpack://rsf-app/./node_modules/core-js/internals/string-html-forced.js","webpack://rsf-app/./node_modules/lodash-es/isObject.js","webpack://rsf-app/./node_modules/core-js/internals/inherit-if-required.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.to-string.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/params/stateParams.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.from.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Tooltip.js","webpack://rsf-app/./node_modules/nvd3/build/nv.d3.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/pipelines/backgroundBlurStage.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.iterator.js","webpack://rsf-app/./node_modules/lodash/isObject.js","webpack://rsf-app/./node_modules/moment/locale/ja.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.code-point-at.js","webpack://rsf-app/./node_modules/lodash/_castFunction.js","webpack://rsf-app/./node_modules/core-js/internals/async-from-sync-iterator.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://rsf-app/./node_modules/d3/d3.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/shallowEqual.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://rsf-app/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://rsf-app/./node_modules/ajv/lib/data.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/omit.js","webpack://rsf-app/./node_modules/moment/locale/ro.js","webpack://rsf-app/./node_modules/moment/locale/ar-ma.js","webpack://rsf-app/./node_modules/twilio-video/es5/room.js","webpack://rsf-app/./node_modules/core-js/internals/error-stack-installable.js","webpack://rsf-app/./node_modules/lodash/_listCacheGet.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/injector.js","webpack://rsf-app/./node_modules/core-js/internals/object-define-property.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsArguments.js","webpack://rsf-app/./node_modules/lodash-es/isArguments.js","webpack://rsf-app/./node_modules/moment/locale/af.js","webpack://rsf-app/./node_modules/ng-focus-if/focusIf.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.index-of.js","webpack://rsf-app/./node_modules/lodash-es/_isIndex.js","webpack://rsf-app/./node_modules/core-js/internals/to-indexed-object.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.is-finite.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.replace.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Button.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/peerconnectionreportfactory.js","webpack://rsf-app/./node_modules/core-js/internals/shared.js","webpack://rsf-app/./node_modules/uuid/lib/rng-browser.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.parse-int.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/resolve/resolvable.js","webpack://rsf-app/./node_modules/lodash/_equalArrays.js","webpack://rsf-app/./node_modules/lodash/_assocIndexOf.js","webpack://rsf-app/./node_modules/core-js/modules/es.object.to-string.js","webpack://rsf-app/./node_modules/moment/locale/de-at.js","webpack://rsf-app/./node_modules/twilio-video/es5/remoteparticipant.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.from-async.js","webpack://rsf-app/./node_modules/core-js/internals/length-of-array-like.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/lazyLoad.js","webpack://rsf-app/./node_modules/core-js/internals/iterators.js","webpack://rsf-app/./node_modules/moment/locale/hr.js","webpack://rsf-app/./node_modules/angular-sanitize/index.js","webpack://rsf-app/./node_modules/moment/locale/fr-ca.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualityfractionloststats.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/peerconnectionreport.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/senderreportfactory.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.copy-within.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.sort.js","webpack://rsf-app/./node_modules/dom-helpers/esm/matches.js","webpack://rsf-app/./node_modules/react-overlays/esm/Dropdown.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/DropdownItem.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Dropdown.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/localmediarestartdeferreds.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcpeerconnection/index.js","webpack://rsf-app/./node_modules/moment/locale/kk.js","webpack://rsf-app/./node_modules/lodash/_baseIntersection.js","webpack://rsf-app/./node_modules/lodash/_baseUnary.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Feedback.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.from-code-point.js","webpack://rsf-app/./node_modules/redux-immutable/dist/utilities/validateNextState.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/index.js","webpack://rsf-app/./node_modules/lodash-es/keys.js","webpack://rsf-app/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.exec.js","webpack://rsf-app/./node_modules/lodash/_baseIsArguments.js","webpack://rsf-app/./node_modules/twilio-video/es5/noisecancellationadapter.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://rsf-app/./node_modules/ajv/lib/ajv.js","webpack://rsf-app/./node_modules/react-global-configuration/build/configuration.js","webpack://rsf-app/./node_modules/lodash/_baseHasIn.js","webpack://rsf-app/./node_modules/angular-scroll/angular-scroll.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/room.js","webpack://rsf-app/./node_modules/moment/locale/en-ca.js","webpack://rsf-app/./node_modules/lodash/_WeakMap.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useForceUpdate.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/audiotrack.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/AccordionContext.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/AccordionToggle.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Collapse.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/AccordionCollapse.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Accordion.js","webpack://rsf-app/./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.match-all.js","webpack://rsf-app/./node_modules/core-js/internals/an-object.js","webpack://rsf-app/./node_modules/lodash-es/_coreJsData.js","webpack://rsf-app/./node_modules/lodash-es/_isMasked.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsNative.js","webpack://rsf-app/./node_modules/lodash-es/_getNative.js","webpack://rsf-app/./node_modules/lodash-es/_getValue.js","webpack://rsf-app/./node_modules/lodash/_isKey.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/peerconnectionmanager.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.concat.js","webpack://rsf-app/./node_modules/moment/locale/tet.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/hookBuilder.js","webpack://rsf-app/./node_modules/object-keys/implementation.js","webpack://rsf-app/./node_modules/lodash/_getPrototype.js","webpack://rsf-app/./node_modules/moment/locale/be.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/memoryLocationService.js","webpack://rsf-app/./node_modules/lodash-es/identity.js","webpack://rsf-app/./node_modules/lodash.frompairs/index.js","webpack://rsf-app/./node_modules/lodash/_baseIsMap.js","webpack://rsf-app/./node_modules/@fullcalendar/core/internal-common.js","webpack://rsf-app/./node_modules/moment/locale/tl-ph.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/Processor.js","webpack://rsf-app/./node_modules/leaflet-simple-map-screenshoter/dist/leaflet-simple-map-screenshoter.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/transceiver.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/anyOf.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/createChainedFunction.js","webpack://rsf-app/./node_modules/google-map-react/lib/index.js","webpack://rsf-app/./node_modules/react-overlays/esm/useWaitForDOMRef.js","webpack://rsf-app/./node_modules/lodash/_stackHas.js","webpack://rsf-app/./node_modules/moment/locale/pa-in.js","webpack://rsf-app/./node_modules/ajv/lib/compile/ucs2length.js","webpack://rsf-app/./node_modules/lodash/_arrayIncludesWith.js","webpack://rsf-app/./node_modules/react-ga4/dist/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/dominantspeakersignaling.js","webpack://rsf-app/./node_modules/core-js/modules/es.aggregate-error.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/filter.js","webpack://rsf-app/./node_modules/eventemitter3/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://rsf-app/./node_modules/lodash/isLength.js","webpack://rsf-app/./node_modules/moment/locale/mk.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/compatibility.js","webpack://rsf-app/./node_modules/lodash/_isIndex.js","webpack://rsf-app/./node_modules/core-js/internals/hidden-keys.js","webpack://rsf-app/./node_modules/core-js/internals/function-bind.js","webpack://rsf-app/./node_modules/lodash/_baseForOwn.js","webpack://rsf-app/./node_modules/react-tracking/build/TrackingPropType.js","webpack://rsf-app/./node_modules/lodash/_isStrictComparable.js","webpack://rsf-app/./node_modules/lodash-es/_toKey.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotemediatrack.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Tab.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/params/paramTypes.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.of.js","webpack://rsf-app/./node_modules/moment/locale/tlh.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://rsf-app/./node_modules/date-fns/esm/startOfDay/index.js","webpack://rsf-app/./node_modules/lodash/_listCacheSet.js","webpack://rsf-app/./node_modules/core-js/internals/this-number-value.js","webpack://rsf-app/./node_modules/lodash/_setCacheAdd.js","webpack://rsf-app/./node_modules/moment/locale/zh-mo.js","webpack://rsf-app/./node_modules/moment/locale/bo.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.try.js","webpack://rsf-app/./node_modules/d3-timer/src/timer.js","webpack://rsf-app/./node_modules/d3-timer/src/interval.js","webpack://rsf-app/./node_modules/lodash/_castPath.js","webpack://rsf-app/./node_modules/core-js/actual/string/index.js","webpack://rsf-app/./node_modules/fast-deep-equal/index.js","webpack://rsf-app/./node_modules/moment/locale/gom-deva.js","webpack://rsf-app/./node_modules/density-clustering/lib/KMEANS.js","webpack://rsf-app/./node_modules/classnames/index.js","webpack://rsf-app/./node_modules/core-js/internals/normalize-string-argument.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.is-integer.js","webpack://rsf-app/./node_modules/lodash-es/_initCloneObject.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/redirectTo.js","webpack://rsf-app/./node_modules/lodash/_Promise.js","webpack://rsf-app/./node_modules/lodash/_setToString.js","webpack://rsf-app/./node_modules/moment/locale/eo.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/utils/TwilioTFLite.js","webpack://rsf-app/./node_modules/lodash/sortBy.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/invalidTransition.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualityaudiostats.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.trim-right.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/mediasignaling.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/transitionEventType.js","webpack://rsf-app/./node_modules/core-js/internals/uid.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/timeout.js","webpack://rsf-app/./node_modules/moment/locale/se.js","webpack://rsf-app/./node_modules/core-js/internals/is-constructor.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/NavContext.js","webpack://rsf-app/./node_modules/connected-react-router/lib/structure/immutable/getIn.js","webpack://rsf-app/./node_modules/core-js/internals/inspect-source.js","webpack://rsf-app/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.fill.js","webpack://rsf-app/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://rsf-app/./node_modules/react-currency-formatter/dist/react-currency-formatter.umd.js","webpack://rsf-app/./node_modules/core-js/internals/number-parse-float.js","webpack://rsf-app/./node_modules/json-schema-merge-allof/src/index.js","webpack://rsf-app/./node_modules/core-js/internals/iterator-create-constructor.js","webpack://rsf-app/./node_modules/twilio-video/es5/transceiver.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/es5/index.js","webpack://rsf-app/./node_modules/react-tracking/build/useTracking.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/divWithClassName.js","webpack://rsf-app/./node_modules/core-js/internals/is-array.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateBuilder.js","webpack://rsf-app/./node_modules/core-js/internals/array-set-length.js","webpack://rsf-app/./node_modules/core-js/internals/array-method-is-strict.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/es5/localvideotrack.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/interface.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.slice.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/remoteparticipant.js","webpack://rsf-app/./node_modules/lodash/_freeGlobal.js","webpack://rsf-app/./node_modules/lodash/_arrayMap.js","webpack://rsf-app/./node_modules/lodash-es/isPlainObject.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/log.js","webpack://rsf-app/./node_modules/core-js/internals/own-keys.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/resolve/interface.js","webpack://rsf-app/./node_modules/fscreen/lib/index.js","webpack://rsf-app/./node_modules/path-to-regexp/index.js","webpack://rsf-app/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://rsf-app/./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.blink.js","webpack://rsf-app/./node_modules/lodash/_initCloneObject.js","webpack://rsf-app/./node_modules/core-js/internals/a-constructor.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/mos.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/constants.js","webpack://rsf-app/./node_modules/date-fns/esm/constants/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/utils.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://rsf-app/./node_modules/date-fns/esm/parse/index.js","webpack://rsf-app/./node_modules/date-fns/esm/add/index.js","webpack://rsf-app/./node_modules/@tberrysoln/rsf-form/dist/rsf-form.esm.js","webpack://rsf-app/./node_modules/core-js/internals/to-absolute-index.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/contains.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Alert.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.pad-end.js","webpack://rsf-app/./node_modules/lodash-es/set.js","webpack://rsf-app/./node_modules/lodash/_hashSet.js","webpack://rsf-app/./node_modules/core-js/internals/ie8-dom-define.js","webpack://rsf-app/./node_modules/lodash/flatten.js","webpack://rsf-app/./node_modules/core-js/internals/new-promise-capability.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Badge.js","webpack://rsf-app/./node_modules/angular-messages/index.js","webpack://rsf-app/./node_modules/density-clustering/lib/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitylatencystats.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/information.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ThemeProvider.js","webpack://rsf-app/./node_modules/object-is/shim.js","webpack://rsf-app/./node_modules/core-js/internals/async-iterator-iteration.js","webpack://rsf-app/./node_modules/lodash/_isIterateeCall.js","webpack://rsf-app/./node_modules/core-js/internals/define-built-in.js","webpack://rsf-app/./node_modules/lodash-es/toPath.js","webpack://rsf-app/./node_modules/core-js/internals/classof.js","webpack://rsf-app/./node_modules/events/events.js","webpack://rsf-app/./node_modules/moment/locale/fy.js","webpack://rsf-app/./node_modules/ng-file-upload/dist/ng-file-upload-all.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.regexp.escape.js","webpack://rsf-app/./node_modules/lodash/isTypedArray.js","webpack://rsf-app/./node_modules/lodash-es/memoize.js","webpack://rsf-app/./node_modules/lodash-es/_stringToPath.js","webpack://rsf-app/./node_modules/lodash-es/_memoizeCapped.js","webpack://rsf-app/./node_modules/lodash/_Stack.js","webpack://rsf-app/./node_modules/lodash/keysIn.js","webpack://rsf-app/./node_modules/lodash/constant.js","webpack://rsf-app/./node_modules/lodash-es/_baseSet.js","webpack://rsf-app/./node_modules/dom-helpers/esm/transitionEnd.js","webpack://rsf-app/./node_modules/core-js/internals/array-to-reversed.js","webpack://rsf-app/./node_modules/object-is/index.js","webpack://rsf-app/./node_modules/p-cancelable/index.js","webpack://rsf-app/./node_modules/leaflet.gridlayer.googlemutant/dist/Leaflet.GoogleMutant.js","webpack://rsf-app/./node_modules/lodash/_Uint8Array.js","webpack://rsf-app/./node_modules/moment/locale/fr-ch.js","webpack://rsf-app/./node_modules/call-bind/callBound.js","webpack://rsf-app/./node_modules/lodash/_createBaseEach.js","webpack://rsf-app/./node_modules/lodash/isSet.js","webpack://rsf-app/./node_modules/lodash-es/isArrayLike.js","webpack://rsf-app/./node_modules/define-properties/index.js","webpack://rsf-app/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://rsf-app/./node_modules/ng-infinite-scroll/build/ng-infinite-scroll.js","webpack://rsf-app/./node_modules/lodash.isequalwith/index.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/CloseButton.js","webpack://rsf-app/./node_modules/email-validator/index.js","webpack://rsf-app/./node_modules/core-js/internals/error-stack-clear.js","webpack://rsf-app/./node_modules/@fullcalendar/interaction/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://rsf-app/./node_modules/phoenix/priv/static/phoenix.mjs","webpack://rsf-app/./node_modules/lodash/_SetCache.js","webpack://rsf-app/./node_modules/core-js/es/function/index.js","webpack://rsf-app/./node_modules/react-fontawesome/lib/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/es5/localdatatrack.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.trim-end.js","webpack://rsf-app/./node_modules/core-js/internals/has-own-property.js","webpack://rsf-app/./node_modules/core-js/actual/regexp/index.js","webpack://rsf-app/./node_modules/lodash/_baseCreate.js","webpack://rsf-app/./node_modules/core-js/internals/define-global-property.js","webpack://rsf-app/./node_modules/core-js/internals/environment-v8-version.js","webpack://rsf-app/./node_modules/lodash-es/_baseHas.js","webpack://rsf-app/./node_modules/lodash-es/has.js","webpack://rsf-app/./node_modules/angular-ui-sortable/src/sortable.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/SafeAnchor.js","webpack://rsf-app/./node_modules/lodash/forEach.js","webpack://rsf-app/./node_modules/lodash-es/_copyArray.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/index.js","webpack://rsf-app/./node_modules/lodash-es/_Set.js","webpack://rsf-app/./node_modules/core-js/internals/array-with.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/raf.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/localtrackstats.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.is-nan.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.resolve.js","webpack://rsf-app/./node_modules/lodash/isObjectLike.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/database.js","webpack://rsf-app/./node_modules/lodash-es/_overArg.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormGroup.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/view/view.js","webpack://rsf-app/./node_modules/core-js/internals/function-bind-native.js","webpack://rsf-app/./node_modules/moment/locale/sw.js","webpack://rsf-app/./node_modules/react-dom/index.js","webpack://rsf-app/./node_modules/moment/locale/sv.js","webpack://rsf-app/./node_modules/uuid/v1.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://rsf-app/./node_modules/lodash-es/isBuffer.js","webpack://rsf-app/./node_modules/lodash-es/stubFalse.js","webpack://rsf-app/./node_modules/ng-file-upload/dist/ng-file-upload-shim.js","webpack://rsf-app/./node_modules/has-symbols/shams.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/properties.js","webpack://rsf-app/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://rsf-app/./node_modules/moment/locale/ar-dz.js","webpack://rsf-app/./node_modules/connected-react-router/lib/reducer.js","webpack://rsf-app/./node_modules/moment/locale/ga.js","webpack://rsf-app/./node_modules/moment/locale/ka.js","webpack://rsf-app/./node_modules/lodash/_baseIsMatch.js","webpack://rsf-app/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://rsf-app/./node_modules/moment/locale/mi.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/params/index.js","webpack://rsf-app/./node_modules/lodash-es/_root.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/dependencies.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/TabPane.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.is-well-formed.js","webpack://rsf-app/./node_modules/formdata-polyfill/formdata.min.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalFooter.js","webpack://rsf-app/./node_modules/moment/locale/ar-ly.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localtrackpublication.js","webpack://rsf-app/./node_modules/lodash/some.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.trim.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.repeat.js","webpack://rsf-app/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://rsf-app/./node_modules/twilio-video/es5/createlocaltrack.js","webpack://rsf-app/./node_modules/lodash/_baseMergeDeep.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/params/paramType.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/support.js","webpack://rsf-app/./node_modules/moment/locale/en-sg.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/background/VirtualBackgroundProcessor.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Container.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/engineering.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.trim-start.js","webpack://rsf-app/./node_modules/lodash/_baseAssignValue.js","webpack://rsf-app/./node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","webpack://rsf-app/./node_modules/@dnd-kit/core/dist/core.esm.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/asyncvar.js","webpack://rsf-app/./node_modules/date-fns/esm/sub/index.js","webpack://rsf-app/./node_modules/date-fns/esm/subDays/index.js","webpack://rsf-app/./node_modules/@dnd-kit/sortable/dist/sortable.esm.js","webpack://rsf-app/./node_modules/lodash/_compareMultiple.js","webpack://rsf-app/./node_modules/core-js/internals/descriptors.js","webpack://rsf-app/./node_modules/use-memo-one/dist/use-memo-one.esm.js","webpack://rsf-app/./node_modules/css-box-model/dist/css-box-model.esm.js","webpack://rsf-app/./node_modules/raf-schd/dist/raf-schd.esm.js","webpack://rsf-app/./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","webpack://rsf-app/./node_modules/moment/locale/nl-be.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.promise.with-resolvers.js","webpack://rsf-app/./node_modules/core-js/internals/string-trim.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useMergedRefs.js","webpack://rsf-app/./node_modules/lodash/_baseAssignIn.js","webpack://rsf-app/./node_modules/core-js/internals/array-iteration-from-last.js","webpack://rsf-app/./node_modules/moment/locale/hi.js","webpack://rsf-app/./node_modules/hone/dist/hone.js","webpack://rsf-app/./node_modules/regexp.prototype.flags/shim.js","webpack://rsf-app/./node_modules/lodash-es/_Uint8Array.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/receiverreport.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.push.js","webpack://rsf-app/./node_modules/core-js/internals/get-built-in-prototype-method.js","webpack://rsf-app/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://rsf-app/./node_modules/core-js/internals/object-assign.js","webpack://rsf-app/./node_modules/connected-react-router/lib/selectors.js","webpack://rsf-app/./node_modules/tinyqueue/index.js","webpack://rsf-app/./node_modules/core-js/internals/environment-is-ios-pebble.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla.js","webpack://rsf-app/./node_modules/date-fns/esm/subMonths/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/timer.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Image.js","webpack://rsf-app/./node_modules/react-is/index.js","webpack://rsf-app/./node_modules/@turf/bbox/dist/js/index.js","webpack://rsf-app/./node_modules/lodash/isSymbol.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/pipelines/webgl2Pipeline.js","webpack://rsf-app/./node_modules/moment/locale/bs.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack://rsf-app/./node_modules/twilio-video/es5/participant.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Row.js","webpack://rsf-app/./node_modules/lodash/_createSet.js","webpack://rsf-app/./node_modules/core-js/internals/global-this.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.string.is-well-formed.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/lib_geo/wrap.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/TabContext.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/detectsilentaudio.js","webpack://rsf-app/./node_modules/lodash/_baseIsNative.js","webpack://rsf-app/./node_modules/object-assign/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/localaudiotrackstats.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.epsilon.js","webpack://rsf-app/./node_modules/lodash-es/_arrayMap.js","webpack://rsf-app/./node_modules/core-js/es/array/index.js","webpack://rsf-app/./node_modules/moment/locale/sr.js","webpack://rsf-app/./node_modules/angular-stripe-checkout/angular-stripe-checkout.js","webpack://rsf-app/./node_modules/moment/locale/lt.js","webpack://rsf-app/./node_modules/lodash/_isFlattenable.js","webpack://rsf-app/./node_modules/ajv/lib/compile/formats.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.group.js","webpack://rsf-app/./node_modules/lodash/_baseOrderBy.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.strike.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/logical.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.flat.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/onEnterExitRetain.js","webpack://rsf-app/./node_modules/core-js/internals/export.js","webpack://rsf-app/./node_modules/uri-js/dist/es5/uri.all.js","webpack://rsf-app/./node_modules/moment/locale/sl.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/insightspublisher/null.js","webpack://rsf-app/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://rsf-app/./node_modules/react-chartjs-2/dist/index.js","webpack://rsf-app/./node_modules/lodash-es/_baseSetToString.js","webpack://rsf-app/./node_modules/lodash-es/constant.js","webpack://rsf-app/./node_modules/lodash-es/_shortOut.js","webpack://rsf-app/./node_modules/lodash-es/_setToString.js","webpack://rsf-app/./node_modules/lodash-es/_baseHasIn.js","webpack://rsf-app/./node_modules/lodash-es/hasIn.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/trackstats.js","webpack://rsf-app/./node_modules/core-js/internals/indexed-object.js","webpack://rsf-app/./node_modules/lodash/_baseProperty.js","webpack://rsf-app/./node_modules/is-arguments/index.js","webpack://rsf-app/./node_modules/lodash/_baseGet.js","webpack://rsf-app/./node_modules/core-js/internals/whitespaces.js","webpack://rsf-app/./node_modules/lodash/_toSource.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.promise.try.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/types/api.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/console.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/object.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/CustomError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/types.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/WWWAuthError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/misc.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/url.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/AuthSdkError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/oauth.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/oauthMeta.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/constants.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/AuthApiError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/OAuthError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/crypto/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/features.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/http/request.js","webpack://rsf-app/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/types/Token.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/_virtual/_tslib.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/transactionMeta.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/interact.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/actionParser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/generateIdxAction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/jsonpath.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/idxResponseParser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/remediationParser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/parsers.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/v1/makeIdxState.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/idxState/index.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/types/idx-js.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/index.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/introspect.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/util.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/util.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Base/Remediator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/GenericRemediator/util.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/GenericRemediator/GenericRemediator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/util.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediate.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/run.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticate.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/Authenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/VerificationCodeAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/OktaVerifyTotp.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/OktaPassword.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/SecurityQuestionEnrollment.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/SecurityQuestionVerification.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/WebauthnEnrollment.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/WebauthnVerification.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Base/VerifyAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/authenticator/getAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/EnrollAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/EnrollPoll.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/SelectEnrollmentChannel.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/EnrollmentChannelData.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/ChallengeAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/ChallengePoll.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/ResetAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/EnrollProfile.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Identify.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/ReEnrollAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/ReEnrollAuthenticatorWarning.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/RedirectIdp.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Base/SelectAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/SelectAuthenticatorAuthenticate.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/SelectAuthenticatorEnroll.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/SelectAuthenticatorUnlockAccount.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/SelectEnrollProfile.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Base/AuthenticatorData.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/AuthenticatorVerificationData.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/AuthenticatorEnrollmentData.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/remediators/Skip.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/flow/AuthenticationFlow.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/flow/PasswordRecoveryFlow.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/flow/RegistrationFlow.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/flow/AccountUnlockFlow.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/flow/FlowSpecification.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/cancel.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/urlParams.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/emailVerify.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/proceed.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/poll.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/startTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/register.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/recoverPassword.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/handleInteractionCodeRedirect.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/unlockAccount.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/errors.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/loginRedirect.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/http/OktaUserAgent.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/http/headers.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/crypto/base64.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/crypto/oidcHash.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/crypto/verifyToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/util/PromiseQueue.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/pkce.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/decodeToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/defaultTokenParams.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/dpop.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/endpoints/token.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/endpoints/well-known.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/verifyToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/validateClaims.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/handleOAuthResponse.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/exchangeCodeForTokens.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/prepareTokenParams.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/endpoints/authorize.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/getToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/getWithoutPrompt.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/getWithPopup.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/getWithRedirect.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/parseFromUrl.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/renewTokensWithRefresh.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/refreshToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/renewToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/renewTokens.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/revokeToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/introspect.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/enrollAuthenticator.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/prepareEnrollAuthenticatorParams.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/defaultEnrollAuthenticatorParams.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/enrollAuthenticatorMeta.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/factory/api.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/getUserInfo.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/validateToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/clock.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/types/TokenManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/TokenManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/browser/browserStorage.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/core/AuthStateManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/services/AutoRenewService.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/util.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/methods/native.js","webpack://rsf-app/./node_modules/oblivious-set/dist/es/index.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/options.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","webpack://rsf-app/./node_modules/unload/dist/es/index.js","webpack://rsf-app/./node_modules/unload/dist/es/node.js","webpack://rsf-app/./node_modules/unload/dist/es/browser.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/leader-election-util.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/leader-election-web-lock.js","webpack://rsf-app/./node_modules/broadcast-channel/dist/esbrowser/leader-election.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/services/SyncStorageService.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/services/LeaderElectionService.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/services/RenewOnTabActivationService.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/core/ServiceManager/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/session/api.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/core/factory.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/base/factory.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/storage/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/http/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/core/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/mixin/index.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/mixin/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/session/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/session/factory.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/browser/fingerprint.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/webauthn.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/storage/options/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/fetch/fetchRequest.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/options/OAuthOptionsConstructor.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/http/options.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/storage/options/StorageOptionsConstructor.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/base/options.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/options/browser.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/storage/SavedObject.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/storage/BaseStorageManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/types/Transaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/Base.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/request.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/ProfileTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/ProfileSchemaTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/types.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/profileApi.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/EmailStatusTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/EmailChallengeTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/EmailTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/emailApi.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/PhoneTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/phoneApi.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/transactions/PasswordTransaction.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/passwordApi.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/util/stateToken.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/api.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/util/link2fn.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/errors/AuthPollStopError.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/util/poll.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/util/flattenEmbedded.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/util/links2fns.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/AuthnTransactionImpl.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/factory.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/exports/exports/default.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/options.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/core/options.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/storage.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/storage.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/factory/OktaAuthIdx.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/factory/api.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/idx/IdxTransactionManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/TransactionManager.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/oidc/util/sharedStorage.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/myaccount/mixin.js","webpack://rsf-app/./node_modules/@okta/okta-auth-js/esm/browser/authn/mixin.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.iterator.js","webpack://rsf-app/./node_modules/moment/locale/bg.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/required.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/_limitLength.js","webpack://rsf-app/./node_modules/leaflet-measure/dist/leaflet-measure.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/movingaveragedelta.js","webpack://rsf-app/./node_modules/angular-scroll/index.js","webpack://rsf-app/./node_modules/buffer/index.js","webpack://rsf-app/./node_modules/moment/locale/pt-br.js","webpack://rsf-app/./node_modules/moment/locale/ug-cn.js","webpack://rsf-app/./node_modules/connected-react-router/lib/immutable.js","webpack://rsf-app/./node_modules/redux-immutable/dist/utilities/getStateName.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.join.js","webpack://rsf-app/./node_modules/connected-react-router/esm/middleware.js","webpack://rsf-app/./node_modules/lodash/_listCacheHas.js","webpack://rsf-app/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.sub.js","webpack://rsf-app/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://rsf-app/./node_modules/ng-focus-if/index.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useMounted.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/not.js","webpack://rsf-app/./node_modules/lodash/_copySymbolsIn.js","webpack://rsf-app/./node_modules/core-js/modules/es.function.has-instance.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.find-index.js","webpack://rsf-app/./node_modules/core-js/internals/to-object.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/videotrack.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/remotetrackpublication.js","webpack://rsf-app/./node_modules/has-tostringtag/shams.js","webpack://rsf-app/./node_modules/lodash/_hasPath.js","webpack://rsf-app/./node_modules/core-js/internals/math-log10.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/utils/Benchmark.js","webpack://rsf-app/./node_modules/quickselect/quickselect.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/TabContainer.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/sum.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/iceconnectionmonitor.js","webpack://rsf-app/./node_modules/immutable/dist/immutable.es.js","webpack://rsf-app/./node_modules/lodash/_cloneArrayBuffer.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/queue.js","webpack://rsf-app/./node_modules/lodash/_getAllKeys.js","webpack://rsf-app/./node_modules/turf-jsts/jsts.min.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/documentvisibilitymonitor.js","webpack://rsf-app/./node_modules/lodash/memoize.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.find.js","webpack://rsf-app/./node_modules/preact/dist/preact.module.js","webpack://rsf-app/./node_modules/core-js/internals/make-built-in.js","webpack://rsf-app/./node_modules/moment/locale/zh-tw.js","webpack://rsf-app/./node_modules/core-js/internals/number-is-finite.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.substr.js","webpack://rsf-app/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://rsf-app/./node_modules/react-tracking/build/ReactTrackingContext.js","webpack://rsf-app/./node_modules/lodash/property.js","webpack://rsf-app/./node_modules/lodash/_equalObjects.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.link.js","webpack://rsf-app/./node_modules/core-js/internals/get-iterator-method.js","webpack://rsf-app/./node_modules/twilio-video/es5/eventemitter.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/PageItem.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Pagination.js","webpack://rsf-app/./node_modules/core-js/internals/iterator-define.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/_limitProperties.js","webpack://rsf-app/./node_modules/lodash/_stackClear.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/coreResolvables.js","webpack://rsf-app/./node_modules/lodash/_setCacheHas.js","webpack://rsf-app/./node_modules/point-in-polygon/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.reject.js","webpack://rsf-app/./node_modules/tiny-emitter/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.for-each.js","webpack://rsf-app/./node_modules/angular-resource/angular-resource.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.string.to-well-formed.js","webpack://rsf-app/./node_modules/lodash/_shortOut.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/validate.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/insightspublisher/index.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/_limitItems.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ListGroupItem.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ListGroup.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/networkqualitysignaling.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/geo.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.from-async.js","webpack://rsf-app/./node_modules/moment/locale/fo.js","webpack://rsf-app/./node_modules/lodash-es/_baseAssignValue.js","webpack://rsf-app/./node_modules/lodash/_customDefaultsMerge.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcpeerconnection/chrome.js","webpack://rsf-app/./node_modules/moment/locale/zh-cn.js","webpack://rsf-app/./node_modules/deep-freeze/index.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/AbstractNav.js","webpack://rsf-app/./node_modules/core-js/internals/number-parse-int.js","webpack://rsf-app/./node_modules/lodash-es/_baseUnary.js","webpack://rsf-app/./node_modules/lodash-es/_assignValue.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://rsf-app/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://rsf-app/./node_modules/date-fns/esm/endOfYear/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualityrecvstats.js","webpack://rsf-app/./node_modules/lodash-es/isObjectLike.js","webpack://rsf-app/./node_modules/core-js/internals/object-to-string.js","webpack://rsf-app/./node_modules/randombytes/browser.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/dynamicimport.js","webpack://rsf-app/./node_modules/robust-predicates/umd/orient2d.min.js","webpack://rsf-app/./node_modules/leaflet/dist/leaflet-src.js","webpack://rsf-app/./node_modules/core-js/internals/string-trim-start.js","webpack://rsf-app/./node_modules/density-clustering/lib/DBSCAN.js","webpack://rsf-app/./node_modules/core-js/internals/date-to-primitive.js","webpack://rsf-app/./node_modules/lodash/_MapCache.js","webpack://rsf-app/./node_modules/lodash/_compareAscending.js","webpack://rsf-app/./node_modules/core-js/actual/function/index.js","webpack://rsf-app/./node_modules/lodash/isBoolean.js","webpack://rsf-app/./node_modules/moment/locale/en-au.js","webpack://rsf-app/./node_modules/core-js/internals/async-iterator-prototype.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.to-reversed.js","webpack://rsf-app/./node_modules/react-tracking/build/index.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/items.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/cancelableroomsignalingpromise.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.splice.js","webpack://rsf-app/./node_modules/moment/locale/nn.js","webpack://rsf-app/./node_modules/moment/locale/el.js","webpack://rsf-app/./node_modules/moment/locale/de-ch.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://rsf-app/./node_modules/lodash-es/isTypedArray.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/statistical.js","webpack://rsf-app/./node_modules/moment/locale/bm.js","webpack://rsf-app/./node_modules/lodash-es/_customOmitClone.js","webpack://rsf-app/./node_modules/lodash-es/omit.js","webpack://rsf-app/./node_modules/dom-helpers/esm/querySelectorAll.js","webpack://rsf-app/./node_modules/ngmap/build/scripts/ng-map.js","webpack://rsf-app/./node_modules/lodash/_coreJsData.js","webpack://rsf-app/./node_modules/lodash/_isPrototype.js","webpack://rsf-app/./node_modules/lodash/_DataView.js","webpack://rsf-app/./node_modules/redux-immutable/dist/utilities/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcsessiondescription/chrome.js","webpack://rsf-app/./node_modules/lodash/_baseUniq.js","webpack://rsf-app/./node_modules/moment/locale/th.js","webpack://rsf-app/./node_modules/core-js/internals/get-method.js","webpack://rsf-app/./node_modules/moment/locale/ss.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/DropdownButton.js","webpack://rsf-app/./node_modules/lodash/_getNative.js","webpack://rsf-app/./node_modules/moment/locale/en-gb.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/videoprocessoreventobserver.js","webpack://rsf-app/./node_modules/jsonpointer/jsonpointer.js","webpack://rsf-app/./node_modules/react-tracking/build/trackingHoC.js","webpack://rsf-app/./node_modules/leaflet-draw/dist/leaflet.draw.js","webpack://rsf-app/./node_modules/core-js/internals/define-built-ins.js","webpack://rsf-app/./node_modules/react-router/esm/react-router.js","webpack://rsf-app/./node_modules/dom-helpers/esm/contains.js","webpack://rsf-app/./node_modules/lodash/isArray.js","webpack://rsf-app/./node_modules/moment/locale/cs.js","webpack://rsf-app/./node_modules/moment/locale/es-us.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://rsf-app/./node_modules/lodash/_overRest.js","webpack://rsf-app/./node_modules/core-js/actual/date/index.js","webpack://rsf-app/./node_modules/core-js/internals/to-property-key.js","webpack://rsf-app/./node_modules/core-js/internals/array-copy-within.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.to-sorted.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/localtrackpublication.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-exec.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.dot-all.js","webpack://rsf-app/./node_modules/react-overlays/esm/DropdownContext.js","webpack://rsf-app/./node_modules/twilio-video/es5/vendor/loglevel.js","webpack://rsf-app/./node_modules/moment/locale/uz.js","webpack://rsf-app/./node_modules/core-js/internals/iterators-core.js","webpack://rsf-app/./node_modules/moment/locale/ur.js","webpack://rsf-app/./node_modules/core-js/internals/advance-string-index.js","webpack://rsf-app/./node_modules/twilio-video/es5/index.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/pick.js","webpack://rsf-app/./node_modules/moment/locale/me.js","webpack://rsf-app/./node_modules/lodash/get.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotedatatrackpublication.js","webpack://rsf-app/./node_modules/@turf/meta/dist/js/index.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://rsf-app/./node_modules/core-js/es/object/assign.js","webpack://rsf-app/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://rsf-app/./node_modules/twilio-video/es5/statemachine.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/rejectFactory.js","webpack://rsf-app/./node_modules/moment/locale/ar-kw.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.trim-left.js","webpack://rsf-app/./node_modules/core-js/modules/es.parse-int.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/pipelines/loadSegmentationStage.js","webpack://rsf-app/./node_modules/react-overlays/esm/DropdownMenu.js","webpack://rsf-app/./node_modules/polygon-clipping/dist/polygon-clipping.umd.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.now.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.is-safe-integer.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/utils/error.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/mediastream.js","webpack://rsf-app/./node_modules/core-js/internals/array-iteration.js","webpack://rsf-app/./node_modules/core-js/internals/task.js","webpack://rsf-app/./node_modules/lodash/_objectToString.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/background/BackgroundProcessor.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/cancelablepromise.js","webpack://rsf-app/./node_modules/lodash-es/_baseTimes.js","webpack://rsf-app/./node_modules/moment/locale/tk.js","webpack://rsf-app/./node_modules/lodash-es/_baseCreate.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/lib_geo/transform.js","webpack://rsf-app/./node_modules/twilio-video/es5/vendor/inherits.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.fontcolor.js","webpack://rsf-app/./node_modules/lodash/_baseIsEqual.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/utils/common.js","webpack://rsf-app/./node_modules/uuid/lib/bytesToUuid.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/CardImg.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Card.js","webpack://rsf-app/./node_modules/core-js/internals/not-a-regexp.js","webpack://rsf-app/./node_modules/core-js/internals/string-pad.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitysendorrecvstats.js","webpack://rsf-app/./node_modules/core-js/stable/string/index.js","webpack://rsf-app/./node_modules/core-js/internals/string-trim-forced.js","webpack://rsf-app/./node_modules/moment/locale/dv.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.to-json.js","webpack://rsf-app/./node_modules/core-js/stable/number/index.js","webpack://rsf-app/./node_modules/core-js/internals/is-regexp.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/browserdetection.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-get-flags.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Col.js","webpack://rsf-app/./node_modules/point-in-polygon/nested.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/background/GaussianBlurBackgroundProcessor.js","webpack://rsf-app/./node_modules/react-redux/es/components/Context.js","webpack://rsf-app/./node_modules/react-redux/es/utils/batch.js","webpack://rsf-app/./node_modules/react-redux/es/utils/Subscription.js","webpack://rsf-app/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://rsf-app/./node_modules/react-redux/es/components/Provider.js","webpack://rsf-app/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://rsf-app/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://rsf-app/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://rsf-app/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://rsf-app/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://rsf-app/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://rsf-app/./node_modules/react-redux/es/connect/mergeProps.js","webpack://rsf-app/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://rsf-app/./node_modules/react-redux/es/connect/connect.js","webpack://rsf-app/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://rsf-app/./node_modules/react-redux/es/hooks/useStore.js","webpack://rsf-app/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://rsf-app/./node_modules/react-redux/es/hooks/useSelector.js","webpack://rsf-app/./node_modules/react-redux/es/index.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useCallbackRef.js","webpack://rsf-app/./node_modules/moment/locale/bn.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/statsreport.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/globals.js","webpack://rsf-app/./node_modules/moment/locale/ar.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/CarouselCaption.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/CarouselItem.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Carousel.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useUpdateEffect.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.get-year.js","webpack://rsf-app/./node_modules/skmeans/dist/node/main.js","webpack://rsf-app/./node_modules/lodash/_stringToPath.js","webpack://rsf-app/./node_modules/core-js/internals/object-keys-internal.js","webpack://rsf-app/./node_modules/lodash-es/isSymbol.js","webpack://rsf-app/./node_modules/core-js/modules/es.function.name.js","webpack://rsf-app/./node_modules/lodash-es/_nativeCreate.js","webpack://rsf-app/./node_modules/lodash-es/_hashGet.js","webpack://rsf-app/./node_modules/lodash-es/_hashHas.js","webpack://rsf-app/./node_modules/lodash-es/_Hash.js","webpack://rsf-app/./node_modules/lodash-es/_hashClear.js","webpack://rsf-app/./node_modules/lodash-es/_hashDelete.js","webpack://rsf-app/./node_modules/lodash-es/_hashSet.js","webpack://rsf-app/./node_modules/lodash-es/_mapCacheClear.js","webpack://rsf-app/./node_modules/lodash-es/_getMapData.js","webpack://rsf-app/./node_modules/lodash-es/_isKeyable.js","webpack://rsf-app/./node_modules/lodash-es/_MapCache.js","webpack://rsf-app/./node_modules/lodash-es/_mapCacheDelete.js","webpack://rsf-app/./node_modules/lodash-es/_mapCacheGet.js","webpack://rsf-app/./node_modules/lodash-es/_mapCacheHas.js","webpack://rsf-app/./node_modules/lodash-es/_mapCacheSet.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.map.js","webpack://rsf-app/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://rsf-app/./node_modules/is-date-object/index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateObject.js","webpack://rsf-app/./node_modules/lodash/_memoizeCapped.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/localparticipant.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.to-exponential.js","webpack://rsf-app/./node_modules/scriptjs/dist/script.js","webpack://rsf-app/./node_modules/core-js/internals/create-iter-result-object.js","webpack://rsf-app/./node_modules/dom-helpers/esm/hyphenate.js","webpack://rsf-app/./node_modules/dom-helpers/esm/hyphenateStyle.js","webpack://rsf-app/./node_modules/dom-helpers/esm/isTransform.js","webpack://rsf-app/./node_modules/dom-helpers/esm/css.js","webpack://rsf-app/./node_modules/dom-helpers/esm/getComputedStyle.js","webpack://rsf-app/./node_modules/dom-helpers/esm/ownerWindow.js","webpack://rsf-app/./node_modules/connected-react-router/lib/actions.js","webpack://rsf-app/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://rsf-app/./node_modules/lodash/_mapCacheClear.js","webpack://rsf-app/./node_modules/moment/locale/ko.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/mediatrack.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/senderorreceiverreportfactory.js","webpack://rsf-app/./node_modules/lodash/stubArray.js","webpack://rsf-app/./node_modules/twilio-video/es5/data/transport.js","webpack://rsf-app/./node_modules/angulartics/src/index.js","webpack://rsf-app/./node_modules/lodash/uniq.js","webpack://rsf-app/./node_modules/core-js/internals/a-string.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/DropdownMenu.js","webpack://rsf-app/./node_modules/angular-resource/index.js","webpack://rsf-app/./node_modules/lodash/_stackGet.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://rsf-app/./node_modules/lodash/_listCacheClear.js","webpack://rsf-app/./node_modules/ui-bootstrap4/dist/ui-bootstrap-tpls.js","webpack://rsf-app/./node_modules/lodash/_hashDelete.js","webpack://rsf-app/./node_modules/lodash/noop.js","webpack://rsf-app/./node_modules/has-symbols/index.js","webpack://rsf-app/./node_modules/moment/locale/x-pseudo.js","webpack://rsf-app/./node_modules/core-js/es/regexp/index.js","webpack://rsf-app/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://rsf-app/./node_modules/moment/locale/cy.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.is-array.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormCheckInput.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormCheckLabel.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormCheck.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormFileInput.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormFileLabel.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormFile.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormText.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Switch.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Form.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/index.js","webpack://rsf-app/./node_modules/ajv/lib/compile/error_classes.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack://rsf-app/./node_modules/isarray/index.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/NavbarContext.js","webpack://rsf-app/./node_modules/lodash-es/_nodeUtil.js","webpack://rsf-app/./node_modules/lodash/isArrayLike.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/getCombinedConnectionStats.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/isArraysEqualEps.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-flags-detection.js","webpack://rsf-app/./node_modules/lodash-es/_overRest.js","webpack://rsf-app/./node_modules/lodash-es/_apply.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/pipelines/fastBilateralFilterStage.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remoteaudiotrackpublication.js","webpack://rsf-app/./node_modules/moment/locale/en-il.js","webpack://rsf-app/./node_modules/process/browser.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/SelectableContext.js","webpack://rsf-app/./node_modules/angular-nvd3/dist/angular-nvd3.js","webpack://rsf-app/./node_modules/ngcomponent/index.js","webpack://rsf-app/./node_modules/core-js/internals/shared-key.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/resolve.js","webpack://rsf-app/./node_modules/date-fns/esm/endOfDay/index.js","webpack://rsf-app/./node_modules/lodash-es/_baseGet.js","webpack://rsf-app/./node_modules/lodash-es/isEmpty.js","webpack://rsf-app/./node_modules/validate.io-number/lib/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/receiverreportfactory.js","webpack://rsf-app/./node_modules/earcut/src/earcut.js","webpack://rsf-app/./node_modules/moment/locale/en-ie.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://rsf-app/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://rsf-app/./node_modules/lodash/_hashGet.js","webpack://rsf-app/./node_modules/function-bind/index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/hashLocationService.js","webpack://rsf-app/./node_modules/lodash-es/eq.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://rsf-app/./node_modules/lodash/_matchesStrictComparable.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.at-alternative.js","webpack://rsf-app/./node_modules/@fullcalendar/core/index.js","webpack://rsf-app/./node_modules/core-js/internals/dom-iterables.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.to-well-formed.js","webpack://rsf-app/./node_modules/base64-js/index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/router.js","webpack://rsf-app/./node_modules/core-js/internals/array-slice.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/localparticipant.js","webpack://rsf-app/./node_modules/core-js/internals/require-object-coercible.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/common.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/TabContent.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotevideotrack.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/recording.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-flags.js","webpack://rsf-app/./node_modules/lodash/last.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.pad-start.js","webpack://rsf-app/./node_modules/core-js/internals/string-multibyte.js","webpack://rsf-app/./node_modules/lodash/_Map.js","webpack://rsf-app/./node_modules/lodash-es/_Map.js","webpack://rsf-app/./node_modules/uuid/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/networkqualitymonitor.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/types.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/detectElementResize.js","webpack://rsf-app/./node_modules/lodash-es/_basePickBy.js","webpack://rsf-app/./node_modules/core-js/modules/es.object.assign.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/coreservices.js","webpack://rsf-app/./node_modules/lodash/_baseRest.js","webpack://rsf-app/./node_modules/moment/locale/oc-lnc.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.flags.js","webpack://rsf-app/./node_modules/moment/locale/lv.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.fontsize.js","webpack://rsf-app/./node_modules/core-js/internals/function-call.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/DropdownToggle.js","webpack://rsf-app/./node_modules/lodash/toPlainObject.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/constants.js","webpack://rsf-app/./node_modules/scheduler/index.js","webpack://rsf-app/./node_modules/react-global-configuration/build/index.js","webpack://rsf-app/./node_modules/lodash/_listCacheDelete.js","webpack://rsf-app/./node_modules/core-js/internals/get-iterator.js","webpack://rsf-app/./node_modules/moment/locale/gd.js","webpack://rsf-app/./node_modules/core-js/internals/flatten-into-array.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcicecandidate.js","webpack://rsf-app/./node_modules/core-js/internals/date-to-iso-string.js","webpack://rsf-app/./node_modules/get-intrinsic/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://rsf-app/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ButtonGroup.js","webpack://rsf-app/./node_modules/lodash/_arrayLikeKeys.js","webpack://rsf-app/./node_modules/ngstorage/ngStorage.js","webpack://rsf-app/./node_modules/@pdftron/webviewer/webviewer.min.js","webpack://rsf-app/./node_modules/core-js/internals/object-keys.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/index.js","webpack://rsf-app/./node_modules/react-files/dist/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/backoff.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/FormControl.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remoteaudiotrack.js","webpack://rsf-app/./node_modules/concaveman/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/localvideotrackstats.js","webpack://rsf-app/./node_modules/regexp.prototype.flags/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.to-spliced.js","webpack://rsf-app/./node_modules/react-ga4/dist/format.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.match.js","webpack://rsf-app/./node_modules/jslib-html5-camera-photo/build/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://rsf-app/./node_modules/lodash/_cloneTypedArray.js","webpack://rsf-app/./node_modules/twilio-video/es5/webaudio/detectsilence.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcrtpsender.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/params/param.js","webpack://rsf-app/./node_modules/lodash-es/_freeGlobal.js","webpack://rsf-app/./node_modules/core-js/internals/map-helpers.js","webpack://rsf-app/./node_modules/moment/locale/my.js","webpack://rsf-app/./node_modules/core-js/internals/string-repeat.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/peerconnection.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcpeerconnection/firefox.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.to-sorted.js","webpack://rsf-app/./node_modules/lodash/isArguments.js","webpack://rsf-app/./node_modules/core-js/stable/promise/index.js","webpack://rsf-app/./node_modules/moment/locale/uz-latn.js","webpack://rsf-app/./node_modules/fast-json-stable-stringify/index.js","webpack://rsf-app/./node_modules/rbush/index.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/utils/support.js","webpack://rsf-app/./node_modules/lodash/_baseGetTag.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/eventobserver.js","webpack://rsf-app/./node_modules/lodash-es/_arrayEach.js","webpack://rsf-app/./node_modules/core-js/internals/iterate.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/mediastreamtrack.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotetrackpublication.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.reduce.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/trackswitchoffsignaling.js","webpack://rsf-app/./node_modules/core-js/internals/to-primitive.js","webpack://rsf-app/./node_modules/twilio-video/es5/createlocaltracks.js","webpack://rsf-app/./node_modules/lodash/_baseKeysIn.js","webpack://rsf-app/./node_modules/lodash/_mapCacheSet.js","webpack://rsf-app/./node_modules/dom-helpers/esm/scrollbarSize.js","webpack://rsf-app/./node_modules/dom-helpers/esm/activeElement.js","webpack://rsf-app/./node_modules/dom-helpers/esm/addClass.js","webpack://rsf-app/./node_modules/dom-helpers/esm/removeClass.js","webpack://rsf-app/./node_modules/dom-helpers/esm/isWindow.js","webpack://rsf-app/./node_modules/dom-helpers/esm/isDocument.js","webpack://rsf-app/./node_modules/react-overlays/esm/isOverflowing.js","webpack://rsf-app/./node_modules/react-overlays/esm/manageAriaHidden.js","webpack://rsf-app/./node_modules/react-overlays/esm/ModalManager.js","webpack://rsf-app/./node_modules/react-overlays/esm/Modal.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/BootstrapModalManager.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalBody.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalContext.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalDialog.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalHeader.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/ModalTitle.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Modal.js","webpack://rsf-app/./node_modules/lodash/_cloneRegExp.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/icebox.js","webpack://rsf-app/./node_modules/moment/locale/ms.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/isObject.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/allowAdditionalItems.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/asNumber.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/constants.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getUiOptions.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/canExpand.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/createErrorHandler.js","webpack://rsf-app/./node_modules/lodash-es/_SetCache.js","webpack://rsf-app/./node_modules/lodash-es/_setCacheAdd.js","webpack://rsf-app/./node_modules/lodash-es/_setCacheHas.js","webpack://rsf-app/./node_modules/lodash-es/_arraySome.js","webpack://rsf-app/./node_modules/lodash-es/_cacheHas.js","webpack://rsf-app/./node_modules/lodash-es/_equalArrays.js","webpack://rsf-app/./node_modules/lodash-es/_mapToArray.js","webpack://rsf-app/./node_modules/lodash-es/_setToArray.js","webpack://rsf-app/./node_modules/lodash-es/_equalByTag.js","webpack://rsf-app/./node_modules/lodash-es/_equalObjects.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsEqual.js","webpack://rsf-app/./node_modules/lodash-es/isEqualWith.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/deepEquals.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/findSchemaDefinition.js","webpack://rsf-app/./node_modules/lodash-es/isNumber.js","webpack://rsf-app/./node_modules/lodash-es/isString.js","webpack://rsf-app/./node_modules/lodash-es/_arrayReduce.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsMatch.js","webpack://rsf-app/./node_modules/lodash-es/_isStrictComparable.js","webpack://rsf-app/./node_modules/lodash-es/_getMatchData.js","webpack://rsf-app/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://rsf-app/./node_modules/lodash-es/_baseMatches.js","webpack://rsf-app/./node_modules/lodash-es/_basePropertyDeep.js","webpack://rsf-app/./node_modules/lodash-es/property.js","webpack://rsf-app/./node_modules/lodash-es/_baseProperty.js","webpack://rsf-app/./node_modules/lodash-es/_baseIteratee.js","webpack://rsf-app/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://rsf-app/./node_modules/lodash-es/_baseReduce.js","webpack://rsf-app/./node_modules/lodash-es/reduce.js","webpack://rsf-app/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://rsf-app/./node_modules/lodash-es/_baseTrim.js","webpack://rsf-app/./node_modules/lodash-es/toNumber.js","webpack://rsf-app/./node_modules/lodash-es/toFinite.js","webpack://rsf-app/./node_modules/lodash-es/times.js","webpack://rsf-app/./node_modules/lodash-es/toInteger.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getOptionMatchingSimpleDiscriminator.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/getMatchingOption.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/getFirstMatchingOption.js","webpack://rsf-app/./node_modules/lodash-es/transform.js","webpack://rsf-app/./node_modules/lodash-es/_assignMergeValue.js","webpack://rsf-app/./node_modules/lodash-es/isArrayLikeObject.js","webpack://rsf-app/./node_modules/lodash-es/_safeGet.js","webpack://rsf-app/./node_modules/lodash-es/toPlainObject.js","webpack://rsf-app/./node_modules/lodash-es/_baseMergeDeep.js","webpack://rsf-app/./node_modules/lodash-es/_baseMerge.js","webpack://rsf-app/./node_modules/lodash-es/_baseRest.js","webpack://rsf-app/./node_modules/lodash-es/_isIterateeCall.js","webpack://rsf-app/./node_modules/lodash-es/merge.js","webpack://rsf-app/./node_modules/lodash-es/_createAssigner.js","webpack://rsf-app/./node_modules/lodash-es/flattenDeep.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsNaN.js","webpack://rsf-app/./node_modules/lodash-es/_arrayIncludes.js","webpack://rsf-app/./node_modules/lodash-es/_baseIndexOf.js","webpack://rsf-app/./node_modules/lodash-es/_strictIndexOf.js","webpack://rsf-app/./node_modules/lodash-es/_baseFindIndex.js","webpack://rsf-app/./node_modules/lodash-es/_arrayIncludesWith.js","webpack://rsf-app/./node_modules/lodash-es/noop.js","webpack://rsf-app/./node_modules/lodash-es/_createSet.js","webpack://rsf-app/./node_modules/lodash-es/_baseUniq.js","webpack://rsf-app/./node_modules/lodash-es/uniq.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getDiscriminatorFieldFromSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/guessType.js","webpack://rsf-app/./node_modules/lodash-es/union.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getSchemaType.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/mergeSchemas.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/retrieveSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/getClosestMatchingOption.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/isFixedItems.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/mergeDefaultsWithFormData.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/mergeObjects.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/isConstant.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/isSelect.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/isMultiSelect.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/constIsAjvDataReference.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/optionsList.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/toConstant.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/getDefaultFormState.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/isCustomWidget.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/isFilesArray.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/sanitizeDataForNewSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/toIdSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/toPathSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/createSchemaUtils.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/getDisplayLabel.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schema/mergeValidationData.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/dataURItoBlob.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/pad.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/dateRangeOptions.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/englishStringTranslator.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/replaceStringParameters.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enumOptionsValueForIndex.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enumOptionsDeselectValue.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enumOptionsIsSelected.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enumOptionsIndexForValue.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enumOptionsSelectValue.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getDateElementProps.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/rangeSpec.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getInputProps.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getSubmitButtonOptions.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getTemplate.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getWidget.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/hasWidget.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/idGenerators.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/labelValue.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/localToUTC.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/orderProperties.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/parseDateString.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/schemaRequiresTrueValue.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/shouldRender.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/toDateString.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/toErrorList.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/ErrorSchemaBuilder.js","webpack://rsf-app/./node_modules/lodash-es/setWith.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/toErrorSchema.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/unwrapErrorHandler.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/utcToLocal.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/validationDataMerge.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/withIdRefPrefix.js","webpack://rsf-app/./node_modules/lodash-es/pickBy.js","webpack://rsf-app/./node_modules/lodash-es/_baseDifference.js","webpack://rsf-app/./node_modules/lodash-es/difference.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/getChangedFields.js","webpack://rsf-app/./node_modules/@rjsf/utils/lib/enums.js","webpack://rsf-app/./node_modules/core-js/internals/a-possible-prototype.js","webpack://rsf-app/./node_modules/google-map-react/lib/marker_dispatcher.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/sender.js","webpack://rsf-app/./node_modules/ajv/lib/keyword.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.to-spliced.js","webpack://rsf-app/./node_modules/moment/locale/ml.js","webpack://rsf-app/./node_modules/react2angular/index.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/strings.js","webpack://rsf-app/./node_modules/ajv/lib/compile/rules.js","webpack://rsf-app/./node_modules/url-polyfill/url-polyfill.js","webpack://rsf-app/./node_modules/lodash/mapValues.js","webpack://rsf-app/./node_modules/lodash/_baseSortBy.js","webpack://rsf-app/./node_modules/ui-bootstrap4/index.js","webpack://rsf-app/./node_modules/moment/locale/id.js","webpack://rsf-app/./node_modules/lodash/_isKeyable.js","webpack://rsf-app/./node_modules/lodash/_Symbol.js","webpack://rsf-app/./node_modules/lodash/_overArg.js","webpack://rsf-app/./node_modules/lodash/defaultsDeep.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.includes.js","webpack://rsf-app/./node_modules/core-js/internals/array-sort.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/_limit.js","webpack://rsf-app/./node_modules/jquery/dist/jquery.js","webpack://rsf-app/./node_modules/twilio-video/es5/preflight/makestat.js","webpack://rsf-app/./node_modules/lodash/_baseAssign.js","webpack://rsf-app/./node_modules/react/jsx-runtime.js","webpack://rsf-app/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://rsf-app/./node_modules/@dnd-kit/utilities/dist/utilities.esm.js","webpack://rsf-app/./node_modules/twilio-video/es5/cancelableroompromise.js","webpack://rsf-app/./node_modules/density-clustering/lib/OPTICS.js","webpack://rsf-app/./node_modules/lodash/eq.js","webpack://rsf-app/./node_modules/twilio-video/es5/queueingeventemitter.js","webpack://rsf-app/./node_modules/core-js/internals/function-bind-context.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localvideotrackpublication.js","webpack://rsf-app/./node_modules/lodash/_cloneDataView.js","webpack://rsf-app/./node_modules/lodash/_initCloneArray.js","webpack://rsf-app/./node_modules/twilio-video/es5/data/sender.js","webpack://rsf-app/./node_modules/lodash/_Set.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/path/index.js","webpack://rsf-app/./node_modules/lodash-es/_arrayPush.js","webpack://rsf-app/./node_modules/lodash/_strictIndexOf.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/urlRouter.js","webpack://rsf-app/./node_modules/moment/locale/mt.js","webpack://rsf-app/./node_modules/lodash/_initCloneByTag.js","webpack://rsf-app/./node_modules/ua-parser-js/src/ua-parser.js","webpack://rsf-app/./node_modules/core-js/internals/create-html.js","webpack://rsf-app/./node_modules/moment/locale/gl.js","webpack://rsf-app/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://rsf-app/./node_modules/lodash-es/get.js","webpack://rsf-app/./node_modules/lodash/_baseToString.js","webpack://rsf-app/./node_modules/core-js/internals/install-error-cause.js","webpack://rsf-app/./node_modules/core-js/internals/shared-store.js","webpack://rsf-app/./node_modules/regexp.prototype.flags/implementation.js","webpack://rsf-app/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/index.js","webpack://rsf-app/./node_modules/lodash/_toKey.js","webpack://rsf-app/./node_modules/moment/locale/de.js","webpack://rsf-app/./node_modules/core-js/internals/array-group.js","webpack://rsf-app/./node_modules/angulartics/src/angulartics.js","webpack://rsf-app/./node_modules/lodash/_baseTimes.js","webpack://rsf-app/./node_modules/core-js/internals/well-known-symbol.js","webpack://rsf-app/./node_modules/final-form/dist/final-form.es.js","webpack://rsf-app/./node_modules/react-final-form/dist/react-final-form.es.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/transitionService.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.flat-map.js","webpack://rsf-app/./node_modules/moment/locale/ky.js","webpack://rsf-app/./node_modules/whatwg-fetch/fetch.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/twilioconnectiontransport.js","webpack://rsf-app/./node_modules/@fullcalendar/daygrid/internal.js","webpack://rsf-app/./node_modules/compute-lcm/lib/index.js","webpack://rsf-app/./node_modules/ng-file-upload/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/trackprioritysignaling.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/date-time.js","webpack://rsf-app/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://rsf-app/./node_modules/core-js/internals/fails.js","webpack://rsf-app/./node_modules/@uirouter/angularjs/release/ui-router-angularjs.js","webpack://rsf-app/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://rsf-app/./node_modules/core-js/internals/a-callable.js","webpack://rsf-app/./node_modules/moment/locale/en-nz.js","webpack://rsf-app/./node_modules/core-js/modules/es.object.keys.js","webpack://rsf-app/./node_modules/core-js/internals/function-uncurry-this.js","webpack://rsf-app/./node_modules/connected-react-router/lib/structure/plain/getIn.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/lib_geo/lat_lng.js","webpack://rsf-app/./node_modules/moment/locale/lb.js","webpack://rsf-app/./node_modules/workbox-window/build/workbox-window.prod.es5.mjs","webpack://rsf-app/./node_modules/lodash/_arrayFilter.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/index.js","webpack://rsf-app/./node_modules/moment/locale/pt.js","webpack://rsf-app/./node_modules/lodash-es/_baseForOwn.js","webpack://rsf-app/./node_modules/moment/locale/tzl.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/resolve/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.replace-all.js","webpack://rsf-app/./node_modules/lodash-es/_baseKeysIn.js","webpack://rsf-app/./node_modules/lodash-es/_nativeKeysIn.js","webpack://rsf-app/./node_modules/lodash-es/keysIn.js","webpack://rsf-app/./node_modules/has-proto/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/index.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://rsf-app/./node_modules/lodash/_ListCache.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.group-to-map.js","webpack://rsf-app/./node_modules/lodash-es/_cloneBuffer.js","webpack://rsf-app/./node_modules/lodash/intersectionWith.js","webpack://rsf-app/./node_modules/@rjsf/validator-ajv6/lib/createAjvInstance.js","webpack://rsf-app/./node_modules/@rjsf/validator-ajv6/lib/validator.js","webpack://rsf-app/./node_modules/@rjsf/validator-ajv6/lib/index.js","webpack://rsf-app/./node_modules/@rjsf/validator-ajv6/lib/customizeValidator.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/allOf.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/format.js","webpack://rsf-app/./node_modules/angular-nvd3/index.js","webpack://rsf-app/./node_modules/core-js/internals/promise-native-constructor.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/enum.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.to-precision.js","webpack://rsf-app/./node_modules/lodash/hasIn.js","webpack://rsf-app/./node_modules/core-js/internals/math-trunc.js","webpack://rsf-app/./node_modules/core-js/internals/error-stack-install.js","webpack://rsf-app/./node_modules/google-map-react/lib/loaders/google_map_loader.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/transition.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/index.js","webpack://rsf-app/./node_modules/lodash/_baseEach.js","webpack://rsf-app/./node_modules/core-js/internals/array-reduce.js","webpack://rsf-app/./node_modules/lodash/_stackSet.js","webpack://rsf-app/./node_modules/connected-react-router/esm/actions.js","webpack://rsf-app/./node_modules/core-js/actual/object/assign.js","webpack://rsf-app/./node_modules/lodash/_nativeCreate.js","webpack://rsf-app/./node_modules/lodash-es/_toSource.js","webpack://rsf-app/./node_modules/angular-sanitize/angular-sanitize.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/utils.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/v2/room.js","webpack://rsf-app/./node_modules/moment/locale/tzm.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/predicates.js","webpack://rsf-app/./node_modules/angular-hotkeys/build/hotkeys.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/helpers/webglHelper.js","webpack://rsf-app/./node_modules/connected-react-router/lib/ConnectedRouter.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.catch.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/NavItem.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/NavLink.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Nav.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/Tabs.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/resolve/resolveContext.js","webpack://rsf-app/./node_modules/lodash/_baseGetAllKeys.js","webpack://rsf-app/./node_modules/moment/locale/yo.js","webpack://rsf-app/./node_modules/redux-immutable/dist/utilities/getUnexpectedInvocationParameterMessage.js","webpack://rsf-app/./node_modules/moment/locale/ru.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://rsf-app/./node_modules/moment/locale/ar-sa.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localaudiotrackpublication.js","webpack://rsf-app/./node_modules/core-js/internals/environment-user-agent.js","webpack://rsf-app/./node_modules/redux/es/redux.js","webpack://rsf-app/./node_modules/validate.io-function/lib/index.js","webpack://rsf-app/./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack://rsf-app/./node_modules/lodash/_baseFlatten.js","webpack://rsf-app/./node_modules/twilio-video/es5/localparticipant.js","webpack://rsf-app/./node_modules/lodash/_createBaseFor.js","webpack://rsf-app/./node_modules/lodash-es/flatten.js","webpack://rsf-app/./node_modules/lodash-es/_flatRest.js","webpack://rsf-app/./node_modules/lodash/_getAllKeysIn.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/interface.js","webpack://rsf-app/./node_modules/lodash/identity.js","webpack://rsf-app/./node_modules/lodash-es/_getSymbolsIn.js","webpack://rsf-app/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://rsf-app/./node_modules/lodash-es/_baseSlice.js","webpack://rsf-app/./node_modules/lodash-es/_parent.js","webpack://rsf-app/./node_modules/lodash-es/_baseUnset.js","webpack://rsf-app/./node_modules/lodash-es/last.js","webpack://rsf-app/./node_modules/lodash/isArrayLikeObject.js","webpack://rsf-app/./node_modules/lodash/_arrayEach.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/getusermedia.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/views.js","webpack://rsf-app/./node_modules/lodash/_baseDifference.js","webpack://rsf-app/./node_modules/lodash-es/_getAllKeysIn.js","webpack://rsf-app/./node_modules/lodash-es/_defineProperty.js","webpack://rsf-app/./node_modules/core-js/internals/environment.js","webpack://rsf-app/./node_modules/lodash/_setToArray.js","webpack://rsf-app/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://rsf-app/./node_modules/validate.io-integer/lib/index.js","webpack://rsf-app/./node_modules/core-js/internals/array-fill.js","webpack://rsf-app/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://rsf-app/./node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://rsf-app/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack://rsf-app/./node_modules/stylis/src/Utility.js","webpack://rsf-app/./node_modules/stylis/src/Tokenizer.js","webpack://rsf-app/./node_modules/stylis/src/Enum.js","webpack://rsf-app/./node_modules/stylis/src/Serializer.js","webpack://rsf-app/./node_modules/stylis/src/Parser.js","webpack://rsf-app/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://rsf-app/./node_modules/stylis/src/Middleware.js","webpack://rsf-app/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://rsf-app/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://rsf-app/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://rsf-app/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack://rsf-app/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://rsf-app/./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack://rsf-app/./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","webpack://rsf-app/./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack://rsf-app/./node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","webpack://rsf-app/./node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","webpack://rsf-app/./node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","webpack://rsf-app/./node_modules/react-select/dist/index-641ee5b8.esm.js","webpack://rsf-app/./node_modules/react-select/dist/Select-ef7c0426.esm.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://rsf-app/./node_modules/react-select/dist/react-select.esm.js","webpack://rsf-app/./node_modules/moment/locale/kn.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/processors/webgl2/helpers/segmentationHelper.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitysendstats.js","webpack://rsf-app/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://rsf-app/./node_modules/lodash/defaults.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/urlMatcher.js","webpack://rsf-app/./node_modules/redux-immutable/dist/combineReducers.js","webpack://rsf-app/./node_modules/humanize-plus/dist/humanize.js","webpack://rsf-app/./node_modules/hot-formula-parser/error.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/helper/number.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/add.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/ampersand.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/divide.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/equal.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/formula-function.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/greater-than.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/greater-than-or-equal.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/less-than.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/less-than-or-equal.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/minus.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/multiply.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/not-equal.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/operator/power.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/evaluate-by-operator/evaluate-by-operator.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/supported-formulas.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/grammar-parser/grammar-parser.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/helper/string.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/helper/cell.mjs","webpack://rsf-app/./node_modules/hot-formula-parser/parser.mjs","webpack://rsf-app/./node_modules/lodash-es/_hasPath.js","webpack://rsf-app/./node_modules/moment/locale/tr.js","webpack://rsf-app/./node_modules/lodash/_baseMerge.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/triggerBrowserReflow.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/pushStateLocationService.js","webpack://rsf-app/./node_modules/validate.io-array/lib/index.js","webpack://rsf-app/./node_modules/lodash/_baseIsNaN.js","webpack://rsf-app/./node_modules/moment/locale/fr.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/uniqueItems.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.with.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.raw.js","webpack://rsf-app/./node_modules/core-js/es/date/index.js","webpack://rsf-app/./node_modules/lodash/_nodeUtil.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/sdp/index.js","webpack://rsf-app/./node_modules/lodash/assign.js","webpack://rsf-app/./node_modules/moment/locale/mr.js","webpack://rsf-app/./node_modules/dom-helpers/esm/camelize.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/createWithBsPrefix.js","webpack://rsf-app/./node_modules/lodash/_getSymbolsIn.js","webpack://rsf-app/./node_modules/moment/locale/tg.js","webpack://rsf-app/./node_modules/lodash-es/_isKey.js","webpack://rsf-app/./node_modules/lodash/_baseFor.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/url.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcsessiondescription/firefox.js","webpack://rsf-app/./node_modules/moment/locale/sq.js","webpack://rsf-app/./node_modules/react-overlays/esm/safeFindDOMNode.js","webpack://rsf-app/./node_modules/rc-util/es/KeyCode.js","webpack://rsf-app/./node_modules/rc-input-number/es/InputNumber.js","webpack://rsf-app/./node_modules/rc-input-number/es/index.js","webpack://rsf-app/./node_modules/lodash/_baseIsEqualDeep.js","webpack://rsf-app/./node_modules/twilio-video/es5/eventtarget.js","webpack://rsf-app/./node_modules/core-js/modules/es.number.parse-float.js","webpack://rsf-app/./node_modules/lodash/_isMasked.js","webpack://rsf-app/./node_modules/core-js/internals/array-species-constructor.js","webpack://rsf-app/./node_modules/lodash-es/_castPath.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.species.js","webpack://rsf-app/./node_modules/core-js/internals/set-species.js","webpack://rsf-app/./node_modules/lodash-es/_isFlattenable.js","webpack://rsf-app/./node_modules/lodash-es/_baseFlatten.js","webpack://rsf-app/./node_modules/lodash/isMap.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.sticky.js","webpack://rsf-app/./node_modules/lodash/_assignMergeValue.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/index.js","webpack://rsf-app/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/average.js","webpack://rsf-app/./node_modules/lodash/_baseMatchesProperty.js","webpack://rsf-app/./node_modules/lodash/cloneDeep.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.group-by-to-map.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/networkmonitor.js","webpack://rsf-app/./node_modules/moment/locale/it.js","webpack://rsf-app/./node_modules/dom-helpers/esm/addEventListener.js","webpack://rsf-app/./node_modules/core-js/stable/object/assign.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.every.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/if.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/participant.js","webpack://rsf-app/./node_modules/geojson-equality/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/localmediatrack.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/transition/transitionHook.js","webpack://rsf-app/./node_modules/core-js/internals/enum-bug-keys.js","webpack://rsf-app/./node_modules/@turf/helpers/dist/js/index.js","webpack://rsf-app/./node_modules/lodash/_baseKeys.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/hof.js","webpack://rsf-app/./node_modules/twilio-video/es5/data/receiver.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.small.js","webpack://rsf-app/./node_modules/object-is/implementation.js","webpack://rsf-app/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://rsf-app/./node_modules/function-bind/implementation.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/stateQueueManager.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/common/trace.js","webpack://rsf-app/./node_modules/moment/locale/is.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://rsf-app/./node_modules/lodash-es/_assocIndexOf.js","webpack://rsf-app/./node_modules/lodash-es/_listCacheDelete.js","webpack://rsf-app/./node_modules/lodash-es/_ListCache.js","webpack://rsf-app/./node_modules/lodash-es/_listCacheClear.js","webpack://rsf-app/./node_modules/lodash-es/_listCacheGet.js","webpack://rsf-app/./node_modules/lodash-es/_listCacheHas.js","webpack://rsf-app/./node_modules/lodash-es/_listCacheSet.js","webpack://rsf-app/./node_modules/core-js/internals/environment-is-ios.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useTimeout.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.to-primitive.js","webpack://rsf-app/./node_modules/redux-immutable/dist/index.js","webpack://rsf-app/./node_modules/lodash-es/isFunction.js","webpack://rsf-app/./node_modules/twilio-video/es5/webrtc/rtcpeerconnection/safari.js","webpack://rsf-app/./node_modules/moment/locale/jv.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://rsf-app/./node_modules/moment/locale/ar-tn.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.anchor.js","webpack://rsf-app/./node_modules/lodash/stubFalse.js","webpack://rsf-app/./node_modules/lodash/_nativeKeysIn.js","webpack://rsf-app/./node_modules/core-js/internals/array-for-each.js","webpack://rsf-app/./node_modules/lodash/_mapCacheGet.js","webpack://rsf-app/./node_modules/json-schema-compare/src/index.js","webpack://rsf-app/./node_modules/connected-react-router/lib/structure/immutable/index.js","webpack://rsf-app/./node_modules/moment/locale/fi.js","webpack://rsf-app/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://rsf-app/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://rsf-app/./node_modules/twilio-video/es5/connect.js","webpack://rsf-app/./node_modules/moment/locale/hu.js","webpack://rsf-app/./node_modules/@fullcalendar/timegrid/internal.js","webpack://rsf-app/./node_modules/@fullcalendar/timegrid/index.js","webpack://rsf-app/./node_modules/core-js/internals/an-instance.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.split.js","webpack://rsf-app/./node_modules/core-js/internals/host-report-errors.js","webpack://rsf-app/./node_modules/core-js/actual/promise/index.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.test.js","webpack://rsf-app/./node_modules/lodash/_baseSome.js","webpack://rsf-app/./node_modules/lodash/_stackDelete.js","webpack://rsf-app/./node_modules/ajv/lib/compile/resolve.js","webpack://rsf-app/./node_modules/lodash/_apply.js","webpack://rsf-app/./node_modules/core-js/internals/internal-state.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.set-year.js","webpack://rsf-app/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useWillUnmount.js","webpack://rsf-app/./node_modules/@restart/hooks/esm/useUpdatedRef.js","webpack://rsf-app/./node_modules/dom-helpers/esm/ownerDocument.js","webpack://rsf-app/./node_modules/lodash/without.js","webpack://rsf-app/./node_modules/@twilio/video-processors/es5/utils/version.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://rsf-app/./node_modules/@popperjs/core/lib/enums.js","webpack://rsf-app/./node_modules/file-saver/FileSaver.js","webpack://rsf-app/./node_modules/core-js/internals/microtask.js","webpack://rsf-app/./node_modules/lodash-es/isArray.js","webpack://rsf-app/./node_modules/core-js/internals/to-string-tag-support.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/receiver.js","webpack://rsf-app/./node_modules/lodash/_copySymbols.js","webpack://rsf-app/./node_modules/moment/locale/ms-my.js","webpack://rsf-app/./node_modules/handlebars/dist/handlebars.min.js","webpack://rsf-app/./node_modules/moment/locale/nl.js","webpack://rsf-app/./node_modules/core-js/internals/is-forced.js","webpack://rsf-app/./node_modules/safe-buffer/index.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://rsf-app/./node_modules/date-fns/esm/addDays/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/sdp/issue8329.js","webpack://rsf-app/./node_modules/lodash/_defineProperty.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/constants.js","webpack://rsf-app/./node_modules/lodash/_cloneBuffer.js","webpack://rsf-app/./node_modules/moment/locale/gom-latn.js","webpack://rsf-app/./node_modules/core-js/internals/safe-get-built-in.js","webpack://rsf-app/./node_modules/core-js/internals/promise-resolve.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/nullobserver.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://rsf-app/./node_modules/core-js/modules/es.date.to-gmt-string.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.any.js","webpack://rsf-app/./node_modules/moment/locale/da.js","webpack://rsf-app/./node_modules/lodash/_baseMatches.js","webpack://rsf-app/./node_modules/twilio-video/es5/twilioconnection.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/networkqualitybandwidthstats.js","webpack://rsf-app/./node_modules/lodash/_cloneSymbol.js","webpack://rsf-app/./node_modules/ajv/lib/cache.js","webpack://rsf-app/./node_modules/react-tracking/build/withTrackingComponentDecorator.js","webpack://rsf-app/./node_modules/core-js/modules/es.function.bind.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://rsf-app/./node_modules/dom-helpers/esm/hasClass.js","webpack://rsf-app/./node_modules/lodash-es/_baseEach.js","webpack://rsf-app/./node_modules/lodash-es/_createBaseEach.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.fixed.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/CardContext.js","webpack://rsf-app/./node_modules/moment/locale/pl.js","webpack://rsf-app/./node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","webpack://rsf-app/./node_modules/core-js/modules/es.array.reverse.js","webpack://rsf-app/./node_modules/google-map-react/lib/google_map_markers.js","webpack://rsf-app/./node_modules/lodash-es/_initCloneArray.js","webpack://rsf-app/./node_modules/lodash-es/_cloneRegExp.js","webpack://rsf-app/./node_modules/lodash-es/_cloneSymbol.js","webpack://rsf-app/./node_modules/lodash-es/_initCloneByTag.js","webpack://rsf-app/./node_modules/lodash-es/_cloneDataView.js","webpack://rsf-app/./node_modules/lodash-es/isMap.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsMap.js","webpack://rsf-app/./node_modules/lodash-es/isSet.js","webpack://rsf-app/./node_modules/lodash-es/_baseIsSet.js","webpack://rsf-app/./node_modules/lodash-es/_baseClone.js","webpack://rsf-app/./node_modules/lodash-es/_copySymbolsIn.js","webpack://rsf-app/./node_modules/lodash-es/_baseAssignIn.js","webpack://rsf-app/./node_modules/lodash-es/_copySymbols.js","webpack://rsf-app/./node_modules/lodash-es/_baseAssign.js","webpack://rsf-app/./node_modules/@handsontable/formulajs/lib/miscellaneous.js","webpack://rsf-app/./node_modules/core-js/internals/is-callable.js","webpack://rsf-app/./node_modules/angular-messages/angular-messages.js","webpack://rsf-app/./node_modules/dom-helpers/esm/removeEventListener.js","webpack://rsf-app/./node_modules/moment/locale/gu.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/state/targetState.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/plugins.js","webpack://rsf-app/./node_modules/moment/moment.js","webpack://rsf-app/./node_modules/twilio-video/es5/util/validate.js","webpack://rsf-app/./node_modules/core-js/modules/esnext.array.find-last.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/hooks/ignoredTransition.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/oneOf.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/noisecancellationimpl.js","webpack://rsf-app/./node_modules/connected-react-router/lib/middleware.js","webpack://rsf-app/./node_modules/moment/locale/az.js","webpack://rsf-app/./node_modules/react-tracking/build/dispatchTrackingEvent.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/remoteparticipant.js","webpack://rsf-app/./node_modules/lodash/keys.js","webpack://rsf-app/./node_modules/moment/locale/fil.js","webpack://rsf-app/./node_modules/moment/locale/cv.js","webpack://rsf-app/./node_modules/core-js/modules/es.regexp.escape.js","webpack://rsf-app/./node_modules/financejs/finance.js","webpack://rsf-app/./node_modules/lodash/_baseIndexOf.js","webpack://rsf-app/./node_modules/core-js/modules/es.promise.all-settled.js","webpack://rsf-app/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://rsf-app/./node_modules/core-js/internals/is-pure.js","webpack://rsf-app/./node_modules/core-js/es/promise/index.js","webpack://rsf-app/./node_modules/react/index.js","webpack://rsf-app/./node_modules/validate.io-integer-array/lib/index.js","webpack://rsf-app/./node_modules/react-tracking/build/useTrackingImpl.js","webpack://rsf-app/./node_modules/twilio-video/es5/signaling/recording.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/url/urlService.js","webpack://rsf-app/./node_modules/ajv/lib/compile/util.js","webpack://rsf-app/./node_modules/skmeans/dist/node/distance.js","webpack://rsf-app/./node_modules/core-js/internals/object-define-properties.js","webpack://rsf-app/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://rsf-app/./node_modules/moment/locale/km.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://rsf-app/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://rsf-app/./node_modules/twilio-video/es5/stats/senderorreceiverreport.js","webpack://rsf-app/./node_modules/twilio-video/es5/webaudio/audiocontext.js","webpack://rsf-app/./node_modules/core-js/internals/create-property.js","webpack://rsf-app/./node_modules/lodash-es/_baseFor.js","webpack://rsf-app/./node_modules/lodash-es/_createBaseFor.js","webpack://rsf-app/./node_modules/lodash-es/_isPrototype.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/es5/localaudiotrack.js","webpack://rsf-app/./node_modules/moment/locale/es.js","webpack://rsf-app/./node_modules/moment/locale/tzm-latn.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/detect.js","webpack://rsf-app/./node_modules/core-js/internals/get-built-in.js","webpack://rsf-app/./node_modules/lodash-es/isNil.js","webpack://rsf-app/./node_modules/core-js/internals/array-from.js","webpack://rsf-app/./node_modules/@fullcalendar/daygrid/index.js","webpack://rsf-app/./node_modules/react-overlays/esm/useRootClose.js","webpack://rsf-app/./node_modules/react-overlays/esm/ownerDocument.js","webpack://rsf-app/./node_modules/moment/locale/ku.js","webpack://rsf-app/./node_modules/prop-types-extra/lib/isRequiredForA11y.js","webpack://rsf-app/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://rsf-app/./node_modules/google-map-react/lib/utils/math/log2.js","webpack://rsf-app/./node_modules/moment/locale/mn.js","webpack://rsf-app/./node_modules/twilio-video/es5/media/track/remotedatatrack.js","webpack://rsf-app/./node_modules/ajv/lib/dotjs/multipleOf.js","webpack://rsf-app/./node_modules/@uirouter/core/lib/vanilla/browserLocationConfig.js","webpack://rsf-app/./node_modules/core-js/modules/es.string.ends-with.js","webpack://rsf-app/./node_modules/react-ga4/dist/gtag.js","webpack://rsf-app/./node_modules/jquery-ui-dist/jquery-ui.js","webpack://rsf-app/./node_modules/core-js/stable/function/index.js","webpack://rsf-app/./node_modules/lodash-es/_castFunction.js"],"sourcesContent":["//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n                '_'\n            ),\n        weekdays:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: element.offsetWidth,\n    height: element.offsetHeight\n  };\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n  Element); */\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n  HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n  ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || // DOM Element detected\n    // $FlowFixMe[incompatible-return]: need a better way to handle this...\n    element.host || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  var offsetParent = element.offsetParent;\n\n  if (offsetParent) {\n    var html = getDocumentElement(offsetParent);\n\n    if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n      return html;\n    }\n  }\n\n  return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n  return Math.max(min, Math.min(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: Math.round(x * dpr) / dpr || 0,\n    y: Math.round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets;\n\n  var _ref3 = roundOffsets ? roundOffsetsByDPR(offsets) : offsets,\n      _ref3$x = _ref3.x,\n      x = _ref3$x === void 0 ? 0 : _ref3$x,\n      _ref3$y = _ref3.y,\n      y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n    /*:: offsetParent = (offsetParent: Element); */\n\n\n    if (placement === top) {\n      sideY = bottom;\n      y -= offsetParent.clientHeight - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right;\n      x -= offsetParent.clientWidth - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n  var state = _ref4.state,\n      options = _ref4.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","export default function getBoundingClientRect(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    width: rect.width,\n    height: rect.height,\n    top: rect.top,\n    right: rect.right,\n    bottom: rect.bottom,\n    left: rect.left,\n    x: rect.left,\n    y: rect.top\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = getNodeName(scrollParent) === 'body';\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign(Object.assign({}, rect), {}, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = Math.max(rect.top, accRect.top);\n    accRect.right = Math.min(rect.right, accRect.right);\n    accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n    accRect.left = Math.max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = element.ownerDocument.body;\n  var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main.79caed11',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement);\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n  defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n      options: Object.assign(Object.assign({}, existing.options), current.options),\n      data: Object.assign(Object.assign({}, existing.data), current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main.79caed11',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main.79caed11',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var _preventedOffset = within(_min, _offset, _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main.79caed11',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n      _options$padding = options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n  state.modifiersData[name + \"#persistent\"] = {\n    padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main.79caed11',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n  return {\n    position: position,\n    top: '0',\n    left: '0',\n    opacity: '0',\n    pointerEvents: 'none'\n  };\n};\n\nvar disabledApplyStylesModifier = {\n  name: 'applyStyles',\n  enabled: false\n}; // until docjs supports type exports...\n\nvar ariaDescribedByModifier = {\n  name: 'ariaDescribedBy',\n  enabled: true,\n  phase: 'afterWrite',\n  effect: function effect(_ref) {\n    var state = _ref.state;\n    return function () {\n      var _state$elements = state.elements,\n          reference = _state$elements.reference,\n          popper = _state$elements.popper;\n\n      if ('removeAttribute' in reference) {\n        var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n          return id.trim() !== popper.id;\n        });\n        if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n      }\n    };\n  },\n  fn: function fn(_ref2) {\n    var _popper$getAttribute;\n\n    var state = _ref2.state;\n    var _state$elements2 = state.elements,\n        popper = _state$elements2.popper,\n        reference = _state$elements2.reference;\n    var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n    if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n      var ids = reference.getAttribute('aria-describedby');\n\n      if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n        return;\n      }\n\n      reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n    }\n  }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object}      options\n * @param {object=}     options.modifiers Popper.js modifiers\n * @param {boolean=}    options.enabled toggle the popper functionality on/off\n * @param {string=}     options.placement The popper element placement relative to the reference element\n * @param {string=}     options.strategy the positioning strategy\n * @param {boolean=}    options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=}   options.onCreate called when the popper is created\n * @param {function=}   options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n  var _ref3 = _temp === void 0 ? {} : _temp,\n      _ref3$enabled = _ref3.enabled,\n      enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n      _ref3$placement = _ref3.placement,\n      placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n      _ref3$strategy = _ref3.strategy,\n      strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n      _ref3$modifiers = _ref3.modifiers,\n      modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n      config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n  var popperInstanceRef = useRef();\n  var update = useCallback(function () {\n    var _popperInstanceRef$cu;\n\n    (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n  }, []);\n  var forceUpdate = useCallback(function () {\n    var _popperInstanceRef$cu2;\n\n    (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n  }, []);\n\n  var _useSafeState = useSafeState(useState({\n    placement: placement,\n    update: update,\n    forceUpdate: forceUpdate,\n    attributes: {},\n    styles: {\n      popper: initialPopperStyles(strategy),\n      arrow: {}\n    }\n  })),\n      popperState = _useSafeState[0],\n      setState = _useSafeState[1];\n\n  var updateModifier = useMemo(function () {\n    return {\n      name: 'updateStateModifier',\n      enabled: true,\n      phase: 'write',\n      requires: ['computeStyles'],\n      fn: function fn(_ref4) {\n        var state = _ref4.state;\n        var styles = {};\n        var attributes = {};\n        Object.keys(state.elements).forEach(function (element) {\n          styles[element] = state.styles[element];\n          attributes[element] = state.attributes[element];\n        });\n        setState({\n          state: state,\n          styles: styles,\n          attributes: attributes,\n          update: update,\n          forceUpdate: forceUpdate,\n          placement: state.placement\n        });\n      }\n    };\n  }, [update, forceUpdate, setState]);\n  useEffect(function () {\n    if (!popperInstanceRef.current || !enabled) return;\n    popperInstanceRef.current.setOptions({\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n    }); // intentionally NOT re-running on new modifiers\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [strategy, placement, updateModifier, enabled]);\n  useEffect(function () {\n    if (!enabled || referenceElement == null || popperElement == null) {\n      return undefined;\n    }\n\n    popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n    }));\n    return function () {\n      if (popperInstanceRef.current != null) {\n        popperInstanceRef.current.destroy();\n        popperInstanceRef.current = undefined;\n        setState(function (s) {\n          return _extends({}, s, {\n            attributes: {},\n            styles: {\n              popper: initialPopperStyles(strategy)\n            }\n          });\n        });\n      }\n    }; // This is only run once to _create_ the popper\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [enabled, referenceElement, popperElement]);\n  return popperState;\n}\n\nexport default usePopper;","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n  var isMounted = useMounted();\n  return [state[0], useCallback(function (nextState) {\n    if (!isMounted()) return;\n    return state[1](nextState);\n  }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.runPreflight = exports.PreflightTest = void 0;\nvar constants_1 = require(\"../util/constants\");\nvar timer_1 = require(\"./timer\");\nvar mos_1 = require(\"./mos\");\nvar getCombinedConnectionStats_1 = require(\"./getCombinedConnectionStats\");\nvar getturncredentials_1 = require(\"./getturncredentials\");\nvar makestat_1 = require(\"./makestat\");\nvar syntheticaudio_1 = require(\"./syntheticaudio\");\nvar syntheticvideo_1 = require(\"./syntheticvideo\");\nvar index_1 = require(\"../util/index\");\nvar WS_SERVER = require('../util/constants').WS_SERVER;\nvar Log = require('../util/log');\nvar EventEmitter = require('../eventemitter');\nvar MovingAverageDelta = require('../util/movingaveragedelta');\nvar EventObserver = require('../util/eventobserver');\nvar InsightsPublisher = require('../util/insightspublisher');\nvar _a = require('../util/sid'), createSID = _a.createSID, sessionSID = _a.sessionSID;\nvar _b = require('../util/twilio-video-errors'), SignalingConnectionTimeoutError = _b.SignalingConnectionTimeoutError, MediaConnectionError = _b.MediaConnectionError;\nvar SECOND = 1000;\nvar DEFAULT_TEST_DURATION = 10 * SECOND;\n/**\n * progress values that are sent by {@link PreflightTest#event:progress}\n * @enum {string}\n */\nvar PreflightProgress = {\n    /**\n     * {@link PreflightTest} has successfully generated synthetic tracks\n     */\n    mediaAcquired: 'mediaAcquired',\n    /**\n     * {@link PreflightTest} has successfully connected to twilio server and obtained turn credentials\n     */\n    connected: 'connected',\n    /**\n     * SubscriberParticipant successfully subscribed to media tracks.\n     */\n    mediaSubscribed: 'mediaSubscribed',\n    /**\n     * Media flow was detected.\n     */\n    mediaStarted: 'mediaStarted',\n    /**\n     * Established DTLS connection. This is measured from RTCDtlsTransport `connecting` to `connected` state.\n     * On Safari, Support for measuring this is missing, this event will be not be emitted on Safari.\n     */\n    dtlsConnected: 'dtlsConnected',\n    /**\n     * Established a PeerConnection, This is measured from PeerConnection `connecting` to `connected` state.\n     * On Firefox, Support for measuring this is missing, this event will be not be emitted on Firefox.\n     */\n    peerConnectionConnected: 'peerConnectionConnected',\n    /**\n     * Established ICE connection. This is measured from ICE connection `checking` to `connected` state.\n     */\n    iceConnected: 'iceConnected'\n};\nfunction notEmpty(value) {\n    return value !== null && typeof value !== 'undefined';\n}\nvar nInstances = 0;\n/**\n * A {@link PreflightTest} monitors progress of an ongoing preflight test.\n * <br><br>\n * Instance of {@link PreflightTest} is returned by calling {@link module:twilio-video.runPreflight}\n * @extends EventEmitter\n * @emits PreflightTest#completed\n * @emits PreflightTest#failed\n * @emits PreflightTest#progress\n */\nvar PreflightTest = /** @class */ (function (_super) {\n    __extends(PreflightTest, _super);\n    /**\n     * Constructs {@link PreflightTest}.\n     * @param {string} token\n     * @param {?PreflightOptions} [options]\n     */\n    function PreflightTest(token, options) {\n        var _this = _super.call(this) || this;\n        _this._testTiming = new timer_1.Timer();\n        _this._dtlsTiming = new timer_1.Timer();\n        _this._iceTiming = new timer_1.Timer();\n        _this._peerConnectionTiming = new timer_1.Timer();\n        _this._mediaTiming = new timer_1.Timer();\n        _this._connectTiming = new timer_1.Timer();\n        _this._sentBytesMovingAverage = new MovingAverageDelta();\n        _this._packetLossMovingAverage = new MovingAverageDelta();\n        _this._progressEvents = [];\n        _this._receivedBytesMovingAverage = new MovingAverageDelta();\n        var internalOptions = options;\n        var _a = internalOptions.environment, environment = _a === void 0 ? 'prod' : _a, _b = internalOptions.region, region = _b === void 0 ? 'gll' : _b, _c = internalOptions.duration, duration = _c === void 0 ? DEFAULT_TEST_DURATION : _c;\n        // eslint-disable-next-line new-cap\n        var wsServer = internalOptions.wsServer || WS_SERVER(environment, region);\n        _this._log = new Log('default', _this, constants_1.DEFAULT_LOG_LEVEL, constants_1.DEFAULT_LOGGER_NAME);\n        _this._testDuration = duration;\n        _this._instanceId = nInstances++;\n        _this._testTiming.start();\n        _this._runPreflightTest(token, environment, wsServer);\n        return _this;\n    }\n    PreflightTest.prototype.toString = function () {\n        return \"[Preflight #\" + this._instanceId + \"]\";\n    };\n    /**\n     * stops ongoing tests and emits error\n     */\n    PreflightTest.prototype.stop = function () {\n        this._stopped = true;\n    };\n    PreflightTest.prototype._generatePreflightReport = function (collectedStats) {\n        this._testTiming.stop();\n        return {\n            testTiming: this._testTiming.getTimeMeasurement(),\n            networkTiming: {\n                dtls: this._dtlsTiming.getTimeMeasurement(),\n                ice: this._iceTiming.getTimeMeasurement(),\n                peerConnection: this._peerConnectionTiming.getTimeMeasurement(),\n                connect: this._connectTiming.getTimeMeasurement(),\n                media: this._mediaTiming.getTimeMeasurement()\n            },\n            stats: {\n                jitter: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.jitter),\n                rtt: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.rtt),\n                packetLoss: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.packetLoss),\n            },\n            selectedIceCandidatePairStats: collectedStats ? collectedStats.selectedIceCandidatePairStats : null,\n            iceCandidateStats: collectedStats ? collectedStats.iceCandidateStats : [],\n            progressEvents: this._progressEvents,\n            // NOTE(mpatwardhan): internal properties.\n            mos: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.mos),\n        };\n    };\n    PreflightTest.prototype._executePreflightStep = function (stepName, step, timeoutError) {\n        return __awaiter(this, void 0, void 0, function () {\n            var MAX_STEP_DURATION, stepPromise, timer, timeoutPromise, result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this._log.debug('Executing step: ', stepName);\n                        MAX_STEP_DURATION = this._testDuration + 10 * SECOND;\n                        if (this._stopped) {\n                            throw new Error('stopped');\n                        }\n                        stepPromise = Promise.resolve().then(step);\n                        timer = null;\n                        timeoutPromise = new Promise(function (_resolve, reject) {\n                            timer = setTimeout(function () {\n                                reject(timeoutError || new Error(stepName + \" timeout.\"));\n                            }, MAX_STEP_DURATION);\n                        });\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, , 3, 4]);\n                        return [4 /*yield*/, Promise.race([timeoutPromise, stepPromise])];\n                    case 2:\n                        result = _a.sent();\n                        return [2 /*return*/, result];\n                    case 3:\n                        if (timer !== null) {\n                            clearTimeout(timer);\n                        }\n                        return [7 /*endfinally*/];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectNetworkTimings = function (pc) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            var dtlsTransport;\n            pc.addEventListener('iceconnectionstatechange', function () {\n                if (pc.iceConnectionState === 'checking') {\n                    _this._iceTiming.start();\n                }\n                if (pc.iceConnectionState === 'connected') {\n                    _this._iceTiming.stop();\n                    _this._updateProgress(PreflightProgress.iceConnected);\n                    if (!dtlsTransport || dtlsTransport && dtlsTransport.state === 'connected') {\n                        resolve();\n                    }\n                }\n            });\n            // firefox does not support connectionstatechange.\n            pc.addEventListener('connectionstatechange', function () {\n                if (pc.connectionState === 'connecting') {\n                    _this._peerConnectionTiming.start();\n                }\n                if (pc.connectionState === 'connected') {\n                    _this._peerConnectionTiming.stop();\n                    _this._updateProgress(PreflightProgress.peerConnectionConnected);\n                }\n            });\n            // Safari does not expose sender.transport.\n            var senders = pc.getSenders();\n            var transport = senders.map(function (sender) { return sender.transport; }).find(notEmpty);\n            if (typeof transport !== 'undefined') {\n                dtlsTransport = transport;\n                dtlsTransport.addEventListener('statechange', function () {\n                    if (dtlsTransport.state === 'connecting') {\n                        _this._dtlsTiming.start();\n                    }\n                    if (dtlsTransport.state === 'connected') {\n                        _this._dtlsTiming.stop();\n                        _this._updateProgress(PreflightProgress.dtlsConnected);\n                        if (pc.iceConnectionState === 'connected') {\n                            resolve();\n                        }\n                    }\n                });\n            }\n        });\n    };\n    PreflightTest.prototype._setupInsights = function (_a) {\n        var token = _a.token, _b = _a.environment, environment = _b === void 0 ? constants_1.DEFAULT_ENVIRONMENT : _b, _c = _a.realm, realm = _c === void 0 ? constants_1.DEFAULT_REALM : _c;\n        var eventPublisherOptions = {};\n        var eventPublisher = new InsightsPublisher(token, constants_1.SDK_NAME, constants_1.SDK_VERSION, environment, realm, eventPublisherOptions);\n        // event publisher requires room sid/participant sid. supply fake ones.\n        eventPublisher.connect('PREFLIGHT_ROOM_SID', 'PREFLIGHT_PARTICIPANT');\n        var eventObserver = new EventObserver(eventPublisher, Date.now(), this._log);\n        // eslint-disable-next-line no-undefined\n        var undefinedValue = undefined;\n        return {\n            reportToInsights: function (_a) {\n                var _b, _c;\n                var report = _a.report;\n                var jitterStats = report.stats.jitter || undefinedValue;\n                var rttStats = report.stats.rtt || undefinedValue;\n                var packetLossStats = report.stats.packetLoss || undefinedValue;\n                var mosStats = report.mos || undefinedValue;\n                // stringify important info from ice candidates.\n                var candidateTypeToProtocols = new Map();\n                report.iceCandidateStats.forEach(function (candidateStats) {\n                    if (candidateStats.candidateType && candidateStats.protocol) {\n                        var protocols = candidateTypeToProtocols.get(candidateStats.candidateType) || [];\n                        if (protocols.indexOf(candidateStats.protocol) < 0) {\n                            protocols.push(candidateStats.protocol);\n                        }\n                        candidateTypeToProtocols.set(candidateStats.candidateType, protocols);\n                    }\n                });\n                var iceCandidateStats = JSON.stringify(Object.fromEntries(candidateTypeToProtocols));\n                var insightsReport = {\n                    name: 'report',\n                    group: 'preflight',\n                    level: report.error ? 'error' : 'info',\n                    payload: {\n                        sessionSID: sessionSID,\n                        preflightSID: createSID('PF'),\n                        progressEvents: JSON.stringify(report.progressEvents),\n                        testTiming: report.testTiming,\n                        dtlsTiming: report.networkTiming.dtls,\n                        iceTiming: report.networkTiming.ice,\n                        peerConnectionTiming: report.networkTiming.peerConnection,\n                        connectTiming: report.networkTiming.connect,\n                        mediaTiming: report.networkTiming.media,\n                        selectedLocalCandidate: (_b = report.selectedIceCandidatePairStats) === null || _b === void 0 ? void 0 : _b.localCandidate,\n                        selectedRemoteCandidate: (_c = report.selectedIceCandidatePairStats) === null || _c === void 0 ? void 0 : _c.remoteCandidate,\n                        iceCandidateStats: iceCandidateStats,\n                        jitterStats: jitterStats,\n                        rttStats: rttStats,\n                        packetLossStats: packetLossStats,\n                        mosStats: mosStats,\n                        error: report.error\n                    }\n                };\n                eventObserver.emit('event', insightsReport);\n                setTimeout(function () { return eventPublisher.disconnect(); }, 2000);\n            }\n        };\n    };\n    PreflightTest.prototype._runPreflightTest = function (token, environment, wsServer) {\n        return __awaiter(this, void 0, void 0, function () {\n            var localTracks, pcs, reportToInsights, elements_1, iceServers, senderPC_1, receiverPC_1, remoteTracks_1, collectedStats_1, report, error_1, preflightReport;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        localTracks = [];\n                        pcs = [];\n                        reportToInsights = this._setupInsights({ token: token, environment: environment }).reportToInsights;\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 8, 9, 10]);\n                        elements_1 = [];\n                        return [4 /*yield*/, this._executePreflightStep('Acquire media', function () { return [syntheticaudio_1.syntheticAudio(), syntheticvideo_1.syntheticVideo({ width: 640, height: 480 })]; })];\n                    case 2:\n                        localTracks = _a.sent();\n                        this._updateProgress(PreflightProgress.mediaAcquired);\n                        this.emit('debug', { localTracks: localTracks });\n                        this._connectTiming.start();\n                        return [4 /*yield*/, this._executePreflightStep('Get turn credentials', function () { return getturncredentials_1.getTurnCredentials(token, wsServer); }, new SignalingConnectionTimeoutError())];\n                    case 3:\n                        iceServers = _a.sent();\n                        this._connectTiming.stop();\n                        this._updateProgress(PreflightProgress.connected);\n                        senderPC_1 = new RTCPeerConnection({ iceServers: iceServers, iceTransportPolicy: 'relay', bundlePolicy: 'max-bundle' });\n                        receiverPC_1 = new RTCPeerConnection({ iceServers: iceServers, bundlePolicy: 'max-bundle' });\n                        pcs.push(senderPC_1);\n                        pcs.push(receiverPC_1);\n                        this._mediaTiming.start();\n                        return [4 /*yield*/, this._executePreflightStep('Setup Peer Connections', function () { return __awaiter(_this, void 0, void 0, function () {\n                                var remoteTracksPromise, offer, updatedOffer, answer;\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0:\n                                            senderPC_1.addEventListener('icecandidate', function (event) { return event.candidate && receiverPC_1.addIceCandidate(event.candidate); });\n                                            receiverPC_1.addEventListener('icecandidate', function (event) { return event.candidate && senderPC_1.addIceCandidate(event.candidate); });\n                                            localTracks.forEach(function (track) { return senderPC_1.addTrack(track); });\n                                            remoteTracksPromise = new Promise(function (resolve) {\n                                                var remoteTracks = [];\n                                                receiverPC_1.addEventListener('track', function (event) {\n                                                    remoteTracks.push(event.track);\n                                                    if (remoteTracks.length === localTracks.length) {\n                                                        resolve(remoteTracks);\n                                                    }\n                                                });\n                                            });\n                                            return [4 /*yield*/, senderPC_1.createOffer()];\n                                        case 1:\n                                            offer = _a.sent();\n                                            updatedOffer = offer;\n                                            return [4 /*yield*/, senderPC_1.setLocalDescription(updatedOffer)];\n                                        case 2:\n                                            _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.setRemoteDescription(updatedOffer)];\n                                        case 3:\n                                            _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.createAnswer()];\n                                        case 4:\n                                            answer = _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.setLocalDescription(answer)];\n                                        case 5:\n                                            _a.sent();\n                                            return [4 /*yield*/, senderPC_1.setRemoteDescription(answer)];\n                                        case 6:\n                                            _a.sent();\n                                            return [4 /*yield*/, this._collectNetworkTimings(senderPC_1)];\n                                        case 7:\n                                            _a.sent();\n                                            return [2 /*return*/, remoteTracksPromise];\n                                    }\n                                });\n                            }); }, new MediaConnectionError())];\n                    case 4:\n                        remoteTracks_1 = _a.sent();\n                        this.emit('debug', { remoteTracks: remoteTracks_1 });\n                        remoteTracks_1.forEach(function (track) {\n                            track.addEventListener('ended', function () { return _this._log.warn(track.kind + ':ended'); });\n                            track.addEventListener('mute', function () { return _this._log.warn(track.kind + ':muted'); });\n                            track.addEventListener('unmute', function () { return _this._log.warn(track.kind + ':unmuted'); });\n                        });\n                        this._updateProgress(PreflightProgress.mediaSubscribed);\n                        return [4 /*yield*/, this._executePreflightStep('Wait for tracks to start', function () {\n                                return new Promise(function (resolve) {\n                                    var element = document.createElement('video');\n                                    element.autoplay = true;\n                                    element.playsInline = true;\n                                    element.muted = true;\n                                    element.srcObject = new MediaStream(remoteTracks_1);\n                                    elements_1.push(element);\n                                    _this.emit('debugElement', element);\n                                    element.oncanplay = resolve;\n                                });\n                            }, new MediaConnectionError())];\n                    case 5:\n                        _a.sent();\n                        this._mediaTiming.stop();\n                        this._updateProgress(PreflightProgress.mediaStarted);\n                        return [4 /*yield*/, this._executePreflightStep('Collect stats for duration', function () { return _this._collectRTCStatsForDuration(_this._testDuration, initCollectedStats(), senderPC_1, receiverPC_1); })];\n                    case 6:\n                        collectedStats_1 = _a.sent();\n                        return [4 /*yield*/, this._executePreflightStep('Generate report', function () { return _this._generatePreflightReport(collectedStats_1); })];\n                    case 7:\n                        report = _a.sent();\n                        reportToInsights({ report: report });\n                        this.emit('completed', report);\n                        return [3 /*break*/, 10];\n                    case 8:\n                        error_1 = _a.sent();\n                        preflightReport = this._generatePreflightReport();\n                        reportToInsights({ report: __assign(__assign({}, preflightReport), { error: error_1 === null || error_1 === void 0 ? void 0 : error_1.toString() }) });\n                        this.emit('failed', error_1, preflightReport);\n                        return [3 /*break*/, 10];\n                    case 9:\n                        pcs.forEach(function (pc) { return pc.close(); });\n                        localTracks.forEach(function (track) { return track.stop(); });\n                        return [7 /*endfinally*/];\n                    case 10: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectRTCStats = function (collectedStats, senderPC, receiverPC) {\n        return __awaiter(this, void 0, void 0, function () {\n            var combinedStats, timestamp, bytesSent, bytesReceived, packets, packetsLost, roundTripTime, jitter, selectedIceCandidatePairStats, iceCandidateStats, hasLastData, fractionPacketLost, percentPacketsLost, score;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, getCombinedConnectionStats_1.getCombinedConnectionStats({ publisher: senderPC, subscriber: receiverPC })];\n                    case 1:\n                        combinedStats = _a.sent();\n                        timestamp = combinedStats.timestamp, bytesSent = combinedStats.bytesSent, bytesReceived = combinedStats.bytesReceived, packets = combinedStats.packets, packetsLost = combinedStats.packetsLost, roundTripTime = combinedStats.roundTripTime, jitter = combinedStats.jitter, selectedIceCandidatePairStats = combinedStats.selectedIceCandidatePairStats, iceCandidateStats = combinedStats.iceCandidateStats;\n                        hasLastData = collectedStats.jitter.length > 0;\n                        collectedStats.jitter.push(jitter);\n                        collectedStats.rtt.push(roundTripTime);\n                        this._sentBytesMovingAverage.putSample(bytesSent, timestamp);\n                        this._receivedBytesMovingAverage.putSample(bytesReceived, timestamp);\n                        this._packetLossMovingAverage.putSample(packetsLost, packets);\n                        if (hasLastData) {\n                            // convert BytesMovingAverage which is in bytes/millisecond to bits/second\n                            collectedStats.outgoingBitrate.push(this._sentBytesMovingAverage.get() * 1000 * 8);\n                            collectedStats.incomingBitrate.push(this._receivedBytesMovingAverage.get() * 1000 * 8);\n                            fractionPacketLost = this._packetLossMovingAverage.get();\n                            percentPacketsLost = Math.min(100, fractionPacketLost * 100);\n                            collectedStats.packetLoss.push(percentPacketsLost);\n                            score = mos_1.calculateMOS(roundTripTime, jitter, fractionPacketLost);\n                            collectedStats.mos.push(score);\n                        }\n                        if (!collectedStats.selectedIceCandidatePairStats) {\n                            collectedStats.selectedIceCandidatePairStats = selectedIceCandidatePairStats;\n                        }\n                        if (collectedStats.iceCandidateStats.length === 0) {\n                            collectedStats.iceCandidateStats = iceCandidateStats;\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectRTCStatsForDuration = function (duration, collectedStats, senderPC, receiverPC) {\n        return __awaiter(this, void 0, void 0, function () {\n            var startTime, STAT_INTERVAL, remainingDuration;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        startTime = Date.now();\n                        STAT_INTERVAL = Math.min(1000, duration);\n                        return [4 /*yield*/, index_1.waitForSometime(STAT_INTERVAL)];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this._collectRTCStats(collectedStats, senderPC, receiverPC)];\n                    case 2:\n                        _a.sent();\n                        remainingDuration = duration - (Date.now() - startTime);\n                        if (!(remainingDuration > 0)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, this._collectRTCStatsForDuration(remainingDuration, collectedStats, senderPC, receiverPC)];\n                    case 3:\n                        collectedStats = _a.sent();\n                        _a.label = 4;\n                    case 4: return [2 /*return*/, collectedStats];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._updateProgress = function (name) {\n        var duration = Date.now() - this._testTiming.getTimeMeasurement().start;\n        this._progressEvents.push({ duration: duration, name: name });\n        this.emit('progress', name);\n    };\n    return PreflightTest;\n}(EventEmitter));\nexports.PreflightTest = PreflightTest;\nfunction initCollectedStats() {\n    return {\n        mos: [],\n        jitter: [],\n        rtt: [],\n        outgoingBitrate: [],\n        incomingBitrate: [],\n        packetLoss: [],\n        selectedIceCandidatePairStats: null,\n        iceCandidateStats: [],\n    };\n}\n/**\n * Represents network timing measurements captured during preflight test\n * @typedef {object} NetworkTiming\n * @property {TimeMeasurement} [connect] - Time to establish signaling connection and acquire turn credentials\n * @property {TimeMeasurement} [media] - Time to start media. This is measured from calling connect to remote media getting started.\n * @property {TimeMeasurement} [dtls] - Time to establish dtls connection. This is measured from RTCDtlsTransport `connecting` to `connected` state. (Not available on Safari)\n * @property {TimeMeasurement} [ice] - Time to establish ice connectivity. This is measured from ICE connection `checking` to `connected` state.\n * @property {TimeMeasurement} [peerConnection] - Time to establish peer connectivity. This is measured from PeerConnection `connecting` to `connected` state. (Not available on Firefox)\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} Stats\n * @property  {number} [average] - Average value observed.\n * @property  {number} [max] - Max value observed.\n * @property  {number} [min] - Min value observed.\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} SelectedIceCandidatePairStats\n * @property  {RTCIceCandidateStats} [localCandidate] - Selected local ice candidate\n * @property  {RTCIceCandidateStats} [remoteCandidate] - Selected local ice candidate\n */\n/**\n * Represents RTC related stats that were observed during preflight test\n * @typedef {object} PreflightReportStats\n * @property {Stats} [jitter] - Packet delay variation in seconds\n * @property {Stats} [rtt] - Round trip time, to the server back to the client in milliseconds.\n * @property {Stats} [packetLoss] - Packet loss as a percent of total packets sent.\n*/\n/**\n * A {@link PreflightProgress} event with timing information.\n * @typedef {object} ProgressEvent\n * @property {number} [duration] - The duration of the event, measured from the start of the test.\n * @property {string} [name] - The {@link PreflightProgress} event name.\n */\n/**\n * Represents report generated by {@link PreflightTest}.\n * @typedef {object} PreflightTestReport\n * @property {TimeMeasurement} [testTiming] - Time measurements of test run time.\n * @property {NetworkTiming} [networkTiming] - Network related time measurements.\n * @property {PreflightReportStats} [stats] - RTC related stats captured during the test.\n * @property {Array<RTCIceCandidateStats>} [iceCandidateStats] - List of gathered ice candidates.\n * @property {SelectedIceCandidatePairStats} selectedIceCandidatePairStats - Stats for the ice candidates that were used for the connection.\n * @property {Array<ProgressEvent>} [progressEvents] - {@link ProgressEvent} events detected during the test.\n * Use this information to determine which steps were completed and which ones were not.\n */\n/**\n * You may pass these options to {@link module:twilio-video.testPreflight} in order to override the\n * default behavior.\n * @typedef {object} PreflightOptions\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n *   nearest signaling server determined by latency based routing. Setting a value other\n *   than <code style=\"padding:0 0\">gll</code> bypasses routing and guarantees that signaling traffic will be\n *   terminated in the region that you prefer. Please refer to this <a href=\"https://www.twilio.com/docs/video/ip-address-whitelisting#signaling-communication\" target=\"_blank\">table</a>\n *   for the list of supported signaling regions.\n * @property {number} [duration=10000] - number of milliseconds to run test for.\n *   once connected test will run for this duration before generating the stats report.\n */\n/**\n * Preflight test has completed successfully.\n * @param {PreflightTestReport} report - Results of the test.\n * @event PreflightTest#completed\n */\n/**\n * Preflight test has encountered a failure and is now stopped.\n * @param {TwilioError|Error} error - A TwilioError or a DOMException.\n * Possible TwilioErrors include Signaling and Media related errors which can be found\n * <a href=\"https://www.twilio.com/docs/video/build-js-video-application-recommendations-and-best-practices#connection-errors\" target=\"_blank\">here</a>.\n * @param {PreflightTestReport} report - Partial results gathered during the test. Use this information to help determine the cause of failure.\n * @event PreflightTest#failed\n */\n/**\n * Emitted to indicate progress of the test\n * @param {PreflightProgress} progress - Indicates the status completed.\n * @event PreflightTest#progress\n */\n/**\n * @method\n * @name runPreflight\n * @description Run a preflight test. This method will start a test to check the quality of network connection.\n * @memberof module:twilio-video\n * @param {string} token - The Access Token string\n * @param {PreflightOptions} options - Options for the test\n * @returns {PreflightTest} preflightTest - An instance to be used to monitor progress of the test.\n * @example\n * var { runPreflight } = require('twilio-video');\n * var preflight = runPreflight(token, preflightOptions);\n * preflightTest.on('progress', progress => {\n *   console.log('preflight progress:', progress);\n * });\n *\n * preflightTest.on('failed', (error, report) => {\n *   console.error('preflight error:', error, report);\n * });\n *\n * preflightTest.on('completed', report => {\n *   console.log('preflight completed:', report));\n * });\n*/\nfunction runPreflight(token, options) {\n    if (options === void 0) { options = {}; }\n    var preflight = new PreflightTest(token, options);\n    return preflight;\n}\nexports.runPreflight = runPreflight;\n//# sourceMappingURL=preflighttest.js.map","/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\n  }\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n  const idx = key.indexOf(dot, start);\n  return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n  if (key === emptyString) {\n    return obj;\n  }\n  let pos = 0;\n  let idx = indexOfDotOrLength(key, pos);\n  while (obj && idx > pos) {\n    obj = obj[key.slice(pos, idx)];\n    pos = idx + 1;\n    idx = indexOfDotOrLength(key, pos);\n  }\n  return obj;\n}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n}\nvar defaults = new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  let type, xOffset, yOffset, size, cornerRadius;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\n  default:\n    ctx.arc(x, y, radius, 0, TAU);\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      ctx.rect(x - size, y - size, 2 * size, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = '';\n  }\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n      : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n      : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\n  }\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect();\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n    : mode === 'after' ? t < 1 ? p1.y : p2.y\n    : t > 0 ? p2.y : p1.y\n  };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  let {start, end, loop} = segment;\n  let i, ilen;\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n  return result;\n}\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { toFont as $, _rlookupByKey as A, _isPointInArea as B, getAngleFromPoint as C, toPadding as D, each as E, getMaximumSize as F, _getParentNode as G, HALF_PI as H, readUsedSize as I, throttled as J, supportsEventListenerOptions as K, _isDomSupported as L, log10 as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, toDegrees as S, TAU as T, _measureText as U, _int16Range as V, _alignPixel as W, clipArea as X, renderText as Y, unclipArea as Z, _arrayUnique as _, resolve as a, QUARTER_PI as a$, _toLeftRightCenter as a0, _alignStartEnd as a1, overrides as a2, merge as a3, _capitalize as a4, descriptors as a5, isFunction as a6, _attachContext as a7, _createResolver as a8, _descriptors as a9, _textX as aA, restoreTextDirection as aB, noop as aC, distanceBetweenPoints as aD, _setMinAndMaxByKey as aE, niceNum as aF, almostWhole as aG, almostEquals as aH, _decimalPlaces as aI, _longestText as aJ, _filterBetween as aK, _lookup as aL, isPatternOrGradient as aM, getHoverColor as aN, clone$1 as aO, _merger as aP, _mergerIf as aQ, _deprecated as aR, toFontString as aS, splineCurve as aT, splineCurveMonotone as aU, getStyle as aV, fontString as aW, toLineHeight as aX, PITAU as aY, INFINITY as aZ, RAD_PER_DEG as a_, mergeIf as aa, uid as ab, debounce as ac, retinaScale as ad, clearCanvas as ae, setsEqual as af, _elementsEqual as ag, _isClickEvent as ah, _isBetween as ai, _readValueToProps as aj, _updateBezierControlPoints as ak, _computeSegments as al, _boundSegments as am, _steppedInterpolation as an, _bezierInterpolation as ao, _pointInLine as ap, _steppedLineTo as aq, _bezierCurveTo as ar, drawPoint as as, addRoundedRectPath as at, toTRBL as au, toTRBLCorners as av, _boundSegment as aw, _normalizeAngle as ax, getRtlAdapter as ay, overrideTextDirection as az, isArray as b, TWO_THIRDS_PI as b0, _angleDiff as b1, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _isPointInArea, C as getAngleFromPoint, D as toPadding, E as each, F as getMaximumSize, G as _getParentNode, I as readUsedSize, J as throttled, K as supportsEventListenerOptions, L as _isDomSupported, M as log10, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as toDegrees, U as _measureText, V as _int16Range, W as _alignPixel, X as clipArea, Y as renderText, Z as unclipArea, $ as toFont, a0 as _toLeftRightCenter, a1 as _alignStartEnd, a2 as overrides, a3 as merge, a4 as _capitalize, a5 as descriptors, a6 as isFunction, a7 as _attachContext, a8 as _createResolver, a9 as _descriptors, aa as mergeIf, ab as uid, ac as debounce, ad as retinaScale, ae as clearCanvas, af as setsEqual, ag as _elementsEqual, ah as _isClickEvent, ai as _isBetween, aj as _readValueToProps, ak as _updateBezierControlPoints, al as _computeSegments, am as _boundSegments, an as _steppedInterpolation, ao as _bezierInterpolation, ap as _pointInLine, aq as _steppedLineTo, ar as _bezierCurveTo, as as drawPoint, at as addRoundedRectPath, au as toTRBL, av as toTRBLCorners, aw as _boundSegment, ax as _normalizeAngle, ay as getRtlAdapter, az as overrideTextDirection, aA as _textX, aB as restoreTextDirection, aC as noop, aD as distanceBetweenPoints, aE as _setMinAndMaxByKey, aF as niceNum, aG as almostWhole, aH as almostEquals, aI as _decimalPlaces, aJ as _longestText, aK as _filterBetween, aL as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n  delay: undefined,\n  duration: 1000,\n  easing: 'easeOutQuart',\n  fn: undefined,\n  from: undefined,\n  loop: undefined,\n  to: undefined,\n  type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.set('transitions', {\n  active: {\n    animation: {\n      duration: 400\n    }\n  },\n  resize: {\n    animation: {\n      duration: 0\n    }\n  },\n  show: {\n    animations: {\n      colors: {\n        from: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        duration: 0\n      },\n    }\n  },\n  hide: {\n    animations: {\n      colors: {\n        to: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        easing: 'linear',\n        fn: v => v | 0\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n  if (value === null) {\n    return;\n  }\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n  }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.initialize();\n  }\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n  }\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        break;\n      }\n    }\n    if (sorted) {\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n  update(mode) {}\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\n    }\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n  _getStacks(last, dataIndex) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const metasets = iScale.getMatchingVisibleMetas(this._type);\n    const stacked = iScale.options.stacked;\n    const ilen = metasets.length;\n    const stacks = [];\n    let i, item;\n    for (i = 0; i < ilen; ++i) {\n      item = metasets[i];\n      if (!item.controller.options.grouped) {\n        continue;\n      }\n      if (typeof dataIndex !== 'undefined') {\n        const val = item.controller.getParsed(dataIndex)[\n          item.controller._cachedMeta.vScale.axis\n        ];\n        if (isNullOrUndef(val) || isNaN(val)) {\n          continue;\n        }\n      }\n      if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n        stacks.push(item.stack);\n      }\n      if (item.index === last) {\n        break;\n      }\n    }\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n    }\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n      offset: true,\n      grid: {\n        offset: true\n      }\n    },\n    _value_: {\n      type: 'linear',\n      beginAtZero: true,\n    }\n  }\n};\n\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    let startAngle = this._getRotation();\n    let i;\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n      this.updateElement(arc, i, properties, mode);\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n    return total;\n  }\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n    if (!arcs) {\n      return 0;\n    }\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n  getMaxOffset(arcs) {\n    let max = 0;\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: false\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n    },\n  },\n  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n    this.updateElements(points, start, count, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n  return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n    const defaultAngle = 360 / this.countVisibleElements();\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: true\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n    },\n  },\n  indexAxis: 'r',\n  startAngle: 0,\n};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n        }\n      }\n    }\n  },\n  scales: {\n    r: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      beginAtZero: true,\n      grid: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      startAngle: 0\n    }\n  }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n      return items;\n    },\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.size) {\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\n    }\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\n    drawOnChartArea: true,\n    drawTicks: true,\n    tickLength: 8,\n    tickWidth: (_ctx, options) => options.lineWidth,\n    tickColor: (_ctx, options) => options.color,\n    offset: false,\n    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\n  ticks: {\n    minRotation: 0,\n    maxRotation: 50,\n    mirror: false,\n    textStrokeWidth: 0,\n    textStrokeColor: '',\n    padding: 3,\n    display: true,\n    autoSkip: true,\n    autoSkipPadding: 3,\n    labelOffset: 0,\n    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n  _fallback: false,\n  _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n  _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\n  }\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n  parse(raw, index) {\n    return raw;\n  }\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n        if (isHorizontal) {\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = grid.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n      if (isHorizontal) {\n        x = pixel;\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n    return align;\n  }\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\n    }\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\n    }\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    return this.plugins;\n  }\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n}\nvar registry = new Registry();\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\n  }\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\nfunction allPlugins(config) {\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n    }\n  }\n  return plugins;\n}\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n  const result = [];\n  const context = chart.getContext();\n  for (let i = 0; i < plugins.length; i++) {\n    const plugin = plugins[i];\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, plugin, opts, context)\n    });\n  }\n  return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const firstIDs = Object.create(null);\n  const scales = Object.create(null);\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n    const scopes = new Set();\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvar version = \"3.8.0\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\nclass Chart {\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n      );\n    }\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass.prototype, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n    return [];\n  }\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (spacing) {\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n  if (outerEnd > 0) {\n    const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n    ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n  }\n  const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n  ctx.lineTo(p4.x, p4.y);\n  if (innerEnd > 0) {\n    const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n    ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n  }\n  ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n  if (innerStart > 0) {\n    const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n    ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n  }\n  const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n  ctx.lineTo(p8.x, p8.y);\n  if (outerStart > 0) {\n    const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n    ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\n  }\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = this.options.spacing / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\n    const spacing = (options.spacing || 0) / 2;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\n}\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n    if (!segments.length) {\n      return;\n    }\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderWidth: 3,\n  capBezierPoints: true,\n  cubicInterpolationMode: 'default',\n  fill: false,\n  spanGaps: false,\n  stepped: false,\n  tension: 0,\n};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n  const enableBorder = enableBorderRadius || isObject(value);\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n    ctx.save();\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n    maxArea = area = -1;\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\n}\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\n  }\n}\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n      source.line.updateControlPoints(area, source.axis);\n      if (draw) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (source) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\n  }\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\n        const drawOptions = {\n          radius: boxWidth * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n        drawPoint(ctx, drawOptions, centerX, centerY);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n    };\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n      rtlHelper.setWidth(this.width);\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    if (!titleOpts.display) {\n      return;\n    }\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n    const x = _alignStartEnd(position, left, left + maxWidth);\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\n    }\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\n}\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart || config._chart;\n    this._chart = this.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\n    }\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = labelColors.borderWidth || 1;\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\n      }\n    }\n  },\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: {\n      beforeTitle: noop,\n      title(tooltipItems) {\n        if (tooltipItems.length > 0) {\n          const item = tooltipItems[0];\n          const labels = item.chart.data.labels;\n          const labelCount = labels ? labels.length : 0;\n          if (this && this.options && this.options.mode === 'dataset') {\n            return item.dataset.label || '';\n          } else if (item.label) {\n            return item.label;\n          } else if (labelCount > 0 && item.dataIndex < labelCount) {\n            return labels[item.dataIndex];\n          }\n        }\n        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\n      beforeLabel: noop,\n      label(tooltipItem) {\n        if (this && this.options && this.options.mode === 'dataset') {\n          return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n        }\n        let label = tooltipItem.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        const value = tooltipItem.formattedValue;\n        if (!isNullOrUndef(value)) {\n          label += value;\n        }\n        return label;\n      },\n      labelColor(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          borderColor: options.borderColor,\n          backgroundColor: options.backgroundColor,\n          borderWidth: options.borderWidth,\n          borderDash: options.borderDash,\n          borderDashOffset: options.borderDashOffset,\n          borderRadius: 0,\n        };\n      },\n      labelTextColor() {\n        return this.options.bodyColor;\n      },\n      labelPointStyle(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          pointStyle: options.pointStyle,\n          rotation: options.rotation,\n        };\n      },\n      afterLabel: noop,\n      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== max) {\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n  return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\n      const backdropLeft = left - padding.left;\n      const backdropTop = top - padding.top;\n      const backdropWidth = right - left + padding.width;\n      const backdropHeight = bottom - top + padding.height;\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: backdropLeft,\n          y: backdropTop,\n          w: backdropWidth,\n          h: backdropHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n      }\n    }\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\n\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\n  }\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\n\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","function e(e,t){var i={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(i[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(i[o[n]]=e[o[n]])}return i}\"function\"==typeof SuppressedError&&SuppressedError;var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function o(e,t){return e(t={exports:{}},t.exports),t.exports}var n=o((function(e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(){var e=this;this.locked=new Map,this.addToLocked=function(t,i){var o=e.locked.get(t);void 0===o?void 0===i?e.locked.set(t,[]):e.locked.set(t,[i]):void 0!==i&&(o.unshift(i),e.locked.set(t,o))},this.isLocked=function(t){return e.locked.has(t)},this.lock=function(t){return new Promise((function(i,o){e.isLocked(t)?e.addToLocked(t,i):(e.addToLocked(t),i())}))},this.unlock=function(t){var i=e.locked.get(t);if(void 0!==i&&0!==i.length){var o=i.pop();e.locked.set(t,i),void 0!==o&&setTimeout(o,0)}else e.locked.delete(t)}}return e.getInstance=function(){return void 0===e.instance&&(e.instance=new e),e.instance},e}();t.default=function(){return i.getInstance()}}));i(n);var a=i(o((function(e,i){var o=t&&t.__awaiter||function(e,t,i,o){return new(i||(i=Promise))((function(n,a){function r(e){try{c(o.next(e))}catch(e){a(e)}}function s(e){try{c(o.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):new i((function(t){t(e.value)})).then(r,s)}c((o=o.apply(e,t||[])).next())}))},a=t&&t.__generator||function(e,t){var i,o,n,a,r={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(i)throw new TypeError(\"Generator is already executing.\");for(;r;)try{if(i=1,o&&(n=2&a[0]?o.return:a[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,a[1])).done)return n;switch(o=0,n&&(a=[2&a[0],n.value]),a[0]){case 0:case 1:n=a;break;case 4:return r.label++,{value:a[1],done:!1};case 5:r.label++,o=a[1],a=[0];continue;case 7:a=r.ops.pop(),r.trys.pop();continue;default:if(!(n=r.trys,(n=n.length>0&&n[n.length-1])||6!==a[0]&&2!==a[0])){r=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]<n[3])){r.label=a[1];break}if(6===a[0]&&r.label<n[1]){r.label=n[1],n=a;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(a);break}n[2]&&r.ops.pop(),r.trys.pop();continue}a=t.call(e,r)}catch(e){a=[6,e],o=0}finally{i=n=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},r=t;Object.defineProperty(i,\"__esModule\",{value:!0});var s=\"browser-tabs-lock-key\",c={key:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},getItem:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},clear:function(){return o(r,void 0,void 0,(function(){return a(this,(function(e){return[2,window.localStorage.clear()]}))}))},removeItem:function(e){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},setItem:function(e,t){return o(r,void 0,void 0,(function(){return a(this,(function(e){throw new Error(\"Unsupported\")}))}))},keySync:function(e){return window.localStorage.key(e)},getItemSync:function(e){return window.localStorage.getItem(e)},clearSync:function(){return window.localStorage.clear()},removeItemSync:function(e){return window.localStorage.removeItem(e)},setItemSync:function(e,t){return window.localStorage.setItem(e,t)}};function u(e){return new Promise((function(t){return setTimeout(t,e)}))}function d(e){for(var t=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\",i=\"\",o=0;o<e;o++){i+=t[Math.floor(Math.random()*t.length)]}return i}var l=function(){function e(t){this.acquiredIatSet=new Set,this.storageHandler=void 0,this.id=Date.now().toString()+d(15),this.acquireLock=this.acquireLock.bind(this),this.releaseLock=this.releaseLock.bind(this),this.releaseLock__private__=this.releaseLock__private__.bind(this),this.waitForSomethingToChange=this.waitForSomethingToChange.bind(this),this.refreshLockWhileAcquired=this.refreshLockWhileAcquired.bind(this),this.storageHandler=t,void 0===e.waiters&&(e.waiters=[])}return e.prototype.acquireLock=function(t,i){return void 0===i&&(i=5e3),o(this,void 0,void 0,(function(){var o,n,r,l,h,p,m;return a(this,(function(a){switch(a.label){case 0:o=Date.now()+d(4),n=Date.now()+i,r=s+\"-\"+t,l=void 0===this.storageHandler?c:this.storageHandler,a.label=1;case 1:return Date.now()<n?[4,u(30)]:[3,8];case 2:return a.sent(),null!==l.getItemSync(r)?[3,5]:(h=this.id+\"-\"+t+\"-\"+o,[4,u(Math.floor(25*Math.random()))]);case 3:return a.sent(),l.setItemSync(r,JSON.stringify({id:this.id,iat:o,timeoutKey:h,timeAcquired:Date.now(),timeRefreshed:Date.now()})),[4,u(30)];case 4:return a.sent(),null!==(p=l.getItemSync(r))&&(m=JSON.parse(p)).id===this.id&&m.iat===o?(this.acquiredIatSet.add(o),this.refreshLockWhileAcquired(r,o),[2,!0]):[3,7];case 5:return e.lockCorrector(void 0===this.storageHandler?c:this.storageHandler),[4,this.waitForSomethingToChange(n)];case 6:a.sent(),a.label=7;case 7:return o=Date.now()+d(4),[3,1];case 8:return[2,!1]}}))}))},e.prototype.refreshLockWhileAcquired=function(e,t){return o(this,void 0,void 0,(function(){var i=this;return a(this,(function(r){return setTimeout((function(){return o(i,void 0,void 0,(function(){var i,o,r;return a(this,(function(a){switch(a.label){case 0:return[4,n.default().lock(t)];case 1:return a.sent(),this.acquiredIatSet.has(t)?(i=void 0===this.storageHandler?c:this.storageHandler,null===(o=i.getItemSync(e))?(n.default().unlock(t),[2]):((r=JSON.parse(o)).timeRefreshed=Date.now(),i.setItemSync(e,JSON.stringify(r)),n.default().unlock(t),this.refreshLockWhileAcquired(e,t),[2])):(n.default().unlock(t),[2])}}))}))}),1e3),[2]}))}))},e.prototype.waitForSomethingToChange=function(t){return o(this,void 0,void 0,(function(){return a(this,(function(i){switch(i.label){case 0:return[4,new Promise((function(i){var o=!1,n=Date.now(),a=!1;function r(){if(a||(window.removeEventListener(\"storage\",r),e.removeFromWaiting(r),clearTimeout(s),a=!0),!o){o=!0;var t=50-(Date.now()-n);t>0?setTimeout(i,t):i(null)}}window.addEventListener(\"storage\",r),e.addToWaiting(r);var s=setTimeout(r,Math.max(0,t-Date.now()))}))];case 1:return i.sent(),[2]}}))}))},e.addToWaiting=function(t){this.removeFromWaiting(t),void 0!==e.waiters&&e.waiters.push(t)},e.removeFromWaiting=function(t){void 0!==e.waiters&&(e.waiters=e.waiters.filter((function(e){return e!==t})))},e.notifyWaiters=function(){void 0!==e.waiters&&e.waiters.slice().forEach((function(e){return e()}))},e.prototype.releaseLock=function(e){return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.releaseLock__private__(e)];case 1:return[2,t.sent()]}}))}))},e.prototype.releaseLock__private__=function(t){return o(this,void 0,void 0,(function(){var i,o,r,u;return a(this,(function(a){switch(a.label){case 0:return i=void 0===this.storageHandler?c:this.storageHandler,o=s+\"-\"+t,null===(r=i.getItemSync(o))?[2]:(u=JSON.parse(r)).id!==this.id?[3,2]:[4,n.default().lock(u.iat)];case 1:a.sent(),this.acquiredIatSet.delete(u.iat),i.removeItemSync(o),n.default().unlock(u.iat),e.notifyWaiters(),a.label=2;case 2:return[2]}}))}))},e.lockCorrector=function(t){for(var i=Date.now()-5e3,o=t,n=[],a=0;;){var r=o.keySync(a);if(null===r)break;n.push(r),a++}for(var c=!1,u=0;u<n.length;u++){var d=n[u];if(d.includes(s)){var l=o.getItemSync(d);if(null!==l){var h=JSON.parse(l);(void 0===h.timeRefreshed&&h.timeAcquired<i||void 0!==h.timeRefreshed&&h.timeRefreshed<i)&&(o.removeItemSync(d),c=!0)}}}c&&e.notifyWaiters()},e.waiters=void 0,e}();i.default=l})));const r={timeoutInSeconds:60},s={name:\"auth0-spa-js\",version:\"2.3.0\"},c=()=>Date.now();class u extends Error{constructor(e,t){super(t),this.error=e,this.error_description=t,Object.setPrototypeOf(this,u.prototype)}static fromPayload({error:e,error_description:t}){return new u(e,t)}}class d extends u{constructor(e,t,i,o=null){super(e,t),this.state=i,this.appState=o,Object.setPrototypeOf(this,d.prototype)}}class l extends u{constructor(){super(\"timeout\",\"Timeout\"),Object.setPrototypeOf(this,l.prototype)}}class h extends l{constructor(e){super(),this.popup=e,Object.setPrototypeOf(this,h.prototype)}}class p extends u{constructor(e){super(\"cancelled\",\"Popup closed\"),this.popup=e,Object.setPrototypeOf(this,p.prototype)}}class m extends u{constructor(e,t,i){super(e,t),this.mfa_token=i,Object.setPrototypeOf(this,m.prototype)}}class f extends u{constructor(e,t){super(\"missing_refresh_token\",`Missing Refresh Token (audience: '${g(e,[\"default\"])}', scope: '${g(t)}')`),this.audience=e,this.scope=t,Object.setPrototypeOf(this,f.prototype)}}function g(e,t=[]){return e&&!t.includes(e)?e:\"\"}const w=()=>window.crypto,y=()=>{const e=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.\";let t=\"\";return Array.from(w().getRandomValues(new Uint8Array(43))).forEach((i=>t+=e[i%e.length])),t},k=e=>btoa(e),v=t=>{var{clientId:i}=t,o=e(t,[\"clientId\"]);return new URLSearchParams((e=>Object.keys(e).filter((t=>void 0!==e[t])).reduce(((t,i)=>Object.assign(Object.assign({},t),{[i]:e[i]})),{}))(Object.assign({client_id:i},o))).toString()},b=e=>(e=>decodeURIComponent(atob(e).split(\"\").map((e=>\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))(e.replace(/_/g,\"/\").replace(/-/g,\"+\")),_=async(e,t)=>{const i=await fetch(e,t);return{ok:i.ok,json:await i.json()}},I=async(e,t,i)=>{const o=new AbortController;let n;return t.signal=o.signal,Promise.race([_(e,t),new Promise(((e,t)=>{n=setTimeout((()=>{o.abort(),t(new Error(\"Timeout when executing 'fetch'\"))}),i)}))]).finally((()=>{clearTimeout(n)}))},S=async(e,t,i,o,n,a,r)=>{return s={auth:{audience:t,scope:i},timeout:n,fetchUrl:e,fetchOptions:o,useFormData:r},c=a,new Promise((function(e,t){const i=new MessageChannel;i.port1.onmessage=function(o){o.data.error?t(new Error(o.data.error)):e(o.data),i.port1.close()},c.postMessage(s,[i.port2])}));var s,c},O=async(e,t,i,o,n,a,r=1e4)=>n?S(e,t,i,o,r,n,a):I(e,o,r);async function T(t,i){var{baseUrl:o,timeout:n,audience:a,scope:r,auth0Client:c,useFormData:d}=t,l=e(t,[\"baseUrl\",\"timeout\",\"audience\",\"scope\",\"auth0Client\",\"useFormData\"]);const h=\"urn:ietf:params:oauth:grant-type:token-exchange\"===l.grant_type,p=Object.assign(Object.assign(Object.assign({},l),h&&a&&{audience:a}),h&&r&&{scope:r}),g=d?v(p):JSON.stringify(p);return await async function(t,i,o,n,a,r,s){let c,d=null;for(let e=0;e<3;e++)try{c=await O(t,o,n,a,r,s,i),d=null;break}catch(e){d=e}if(d)throw d;const l=c.json,{error:h,error_description:p}=l,g=e(l,[\"error\",\"error_description\"]),{ok:w}=c;if(!w){const e=p||`HTTP error. Unable to fetch ${t}`;if(\"mfa_required\"===h)throw new m(h,e,g.mfa_token);if(\"missing_refresh_token\"===h)throw new f(o,n);throw new u(h||\"request_error\",e)}return g}(`${o}/oauth/token`,n,a||\"default\",r,{method:\"POST\",body:g,headers:{\"Content-Type\":d?\"application/x-www-form-urlencoded\":\"application/json\",\"Auth0-Client\":btoa(JSON.stringify(c||s))}},i,d)}const j=(...e)=>{return(t=e.filter(Boolean).join(\" \").trim().split(/\\s+/),Array.from(new Set(t))).join(\" \");var t};class z{constructor(e,t=\"@@auth0spajs@@\",i){this.prefix=t,this.suffix=i,this.clientId=e.clientId,this.scope=e.scope,this.audience=e.audience}toKey(){return[this.prefix,this.clientId,this.audience,this.scope,this.suffix].filter(Boolean).join(\"::\")}static fromKey(e){const[t,i,o,n]=e.split(\"::\");return new z({clientId:i,scope:n,audience:o},t)}static fromCacheEntry(e){const{scope:t,audience:i,client_id:o}=e;return new z({scope:t,audience:i,clientId:o})}}class C{set(e,t){localStorage.setItem(e,JSON.stringify(t))}get(e){const t=window.localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return}}remove(e){localStorage.removeItem(e)}allKeys(){return Object.keys(window.localStorage).filter((e=>e.startsWith(\"@@auth0spajs@@\")))}}class P{constructor(){this.enclosedCache=function(){let e={};return{set(t,i){e[t]=i},get(t){const i=e[t];if(i)return i},remove(t){delete e[t]},allKeys:()=>Object.keys(e)}}()}}class x{constructor(e,t,i){this.cache=e,this.keyManifest=t,this.nowProvider=i||c}async setIdToken(e,t,i){var o;const n=this.getIdTokenCacheKey(e);await this.cache.set(n,{id_token:t,decodedToken:i}),await(null===(o=this.keyManifest)||void 0===o?void 0:o.add(n))}async getIdToken(e){const t=await this.cache.get(this.getIdTokenCacheKey(e.clientId));if(!t&&e.scope&&e.audience){const t=await this.get(e);if(!t)return;if(!t.id_token||!t.decodedToken)return;return{id_token:t.id_token,decodedToken:t.decodedToken}}if(t)return{id_token:t.id_token,decodedToken:t.decodedToken}}async get(e,t=0){var i;let o=await this.cache.get(e.toKey());if(!o){const t=await this.getCacheKeys();if(!t)return;const i=this.matchExistingCacheKey(e,t);i&&(o=await this.cache.get(i))}if(!o)return;const n=await this.nowProvider(),a=Math.floor(n/1e3);return o.expiresAt-t<a?o.body.refresh_token?(o.body={refresh_token:o.body.refresh_token},await this.cache.set(e.toKey(),o),o.body):(await this.cache.remove(e.toKey()),void await(null===(i=this.keyManifest)||void 0===i?void 0:i.remove(e.toKey()))):o.body}async set(e){var t;const i=new z({clientId:e.client_id,scope:e.scope,audience:e.audience}),o=await this.wrapCacheEntry(e);await this.cache.set(i.toKey(),o),await(null===(t=this.keyManifest)||void 0===t?void 0:t.add(i.toKey()))}async clear(e){var t;const i=await this.getCacheKeys();i&&(await i.filter((t=>!e||t.includes(e))).reduce((async(e,t)=>{await e,await this.cache.remove(t)}),Promise.resolve()),await(null===(t=this.keyManifest)||void 0===t?void 0:t.clear()))}async wrapCacheEntry(e){const t=await this.nowProvider();return{body:e,expiresAt:Math.floor(t/1e3)+e.expires_in}}async getCacheKeys(){var e;return this.keyManifest?null===(e=await this.keyManifest.get())||void 0===e?void 0:e.keys:this.cache.allKeys?this.cache.allKeys():void 0}getIdTokenCacheKey(e){return new z({clientId:e},\"@@auth0spajs@@\",\"@@user@@\").toKey()}matchExistingCacheKey(e,t){return t.filter((t=>{var i;const o=z.fromKey(t),n=new Set(o.scope&&o.scope.split(\" \")),a=(null===(i=e.scope)||void 0===i?void 0:i.split(\" \"))||[],r=o.scope&&a.reduce(((e,t)=>e&&n.has(t)),!0);return\"@@auth0spajs@@\"===o.prefix&&o.clientId===e.clientId&&o.audience===e.audience&&r}))[0]}}class Z{constructor(e,t,i){this.storage=e,this.clientId=t,this.cookieDomain=i,this.storageKey=`a0.spajs.txs.${this.clientId}`}create(e){this.storage.save(this.storageKey,e,{daysUntilExpire:1,cookieDomain:this.cookieDomain})}get(){return this.storage.get(this.storageKey)}remove(){this.storage.remove(this.storageKey,{cookieDomain:this.cookieDomain})}}const K=e=>\"number\"==typeof e,W=[\"iss\",\"aud\",\"exp\",\"nbf\",\"iat\",\"jti\",\"azp\",\"nonce\",\"auth_time\",\"at_hash\",\"c_hash\",\"acr\",\"amr\",\"sub_jwk\",\"cnf\",\"sip_from_tag\",\"sip_date\",\"sip_callid\",\"sip_cseq_num\",\"sip_via_branch\",\"orig\",\"dest\",\"mky\",\"events\",\"toe\",\"txn\",\"rph\",\"sid\",\"vot\",\"vtm\"],E=e=>{if(!e.id_token)throw new Error(\"ID token is required but missing\");const t=(e=>{const t=e.split(\".\"),[i,o,n]=t;if(3!==t.length||!i||!o||!n)throw new Error(\"ID token could not be decoded\");const a=JSON.parse(b(o)),r={__raw:e},s={};return Object.keys(a).forEach((e=>{r[e]=a[e],W.includes(e)||(s[e]=a[e])})),{encoded:{header:i,payload:o,signature:n},header:JSON.parse(b(i)),claims:r,user:s}})(e.id_token);if(!t.claims.iss)throw new Error(\"Issuer (iss) claim must be a string present in the ID token\");if(t.claims.iss!==e.iss)throw new Error(`Issuer (iss) claim mismatch in the ID token; expected \"${e.iss}\", found \"${t.claims.iss}\"`);if(!t.user.sub)throw new Error(\"Subject (sub) claim must be a string present in the ID token\");if(\"RS256\"!==t.header.alg)throw new Error(`Signature algorithm of \"${t.header.alg}\" is not supported. Expected the ID token to be signed with \"RS256\".`);if(!t.claims.aud||\"string\"!=typeof t.claims.aud&&!Array.isArray(t.claims.aud))throw new Error(\"Audience (aud) claim must be a string or array of strings present in the ID token\");if(Array.isArray(t.claims.aud)){if(!t.claims.aud.includes(e.aud))throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but was not one of \"${t.claims.aud.join(\", \")}\"`);if(t.claims.aud.length>1){if(!t.claims.azp)throw new Error(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\");if(t.claims.azp!==e.aud)throw new Error(`Authorized Party (azp) claim mismatch in the ID token; expected \"${e.aud}\", found \"${t.claims.azp}\"`)}}else if(t.claims.aud!==e.aud)throw new Error(`Audience (aud) claim mismatch in the ID token; expected \"${e.aud}\" but found \"${t.claims.aud}\"`);if(e.nonce){if(!t.claims.nonce)throw new Error(\"Nonce (nonce) claim must be a string present in the ID token\");if(t.claims.nonce!==e.nonce)throw new Error(`Nonce (nonce) claim mismatch in the ID token; expected \"${e.nonce}\", found \"${t.claims.nonce}\"`)}if(e.max_age&&!K(t.claims.auth_time))throw new Error(\"Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified\");if(null==t.claims.exp||!K(t.claims.exp))throw new Error(\"Expiration Time (exp) claim must be a number present in the ID token\");if(!K(t.claims.iat))throw new Error(\"Issued At (iat) claim must be a number present in the ID token\");const i=e.leeway||60,o=new Date(e.now||Date.now()),n=new Date(0);if(n.setUTCSeconds(t.claims.exp+i),o>n)throw new Error(`Expiration Time (exp) claim error in the ID token; current time (${o}) is after expiration time (${n})`);if(null!=t.claims.nbf&&K(t.claims.nbf)){const e=new Date(0);if(e.setUTCSeconds(t.claims.nbf-i),o<e)throw new Error(`Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Current time (${o}) is before ${e}`)}if(null!=t.claims.auth_time&&K(t.claims.auth_time)){const n=new Date(0);if(n.setUTCSeconds(parseInt(t.claims.auth_time)+e.max_age+i),o>n)throw new Error(`Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time (${o}) is after last auth at ${n}`)}if(e.organization){const i=e.organization.trim();if(i.startsWith(\"org_\")){const e=i;if(!t.claims.org_id)throw new Error(\"Organization ID (org_id) claim must be a string present in the ID token\");if(e!==t.claims.org_id)throw new Error(`Organization ID (org_id) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_id}\"`)}else{const e=i.toLowerCase();if(!t.claims.org_name)throw new Error(\"Organization Name (org_name) claim must be a string present in the ID token\");if(e!==t.claims.org_name)throw new Error(`Organization Name (org_name) claim mismatch in the ID token; expected \"${e}\", found \"${t.claims.org_name}\"`)}}return t};var R=o((function(e,i){var o=t&&t.__assign||function(){return o=Object.assign||function(e){for(var t,i=1,o=arguments.length;i<o;i++)for(var n in t=arguments[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},o.apply(this,arguments)};function n(e,t){if(!t)return\"\";var i=\"; \"+e;return!0===t?i:i+\"=\"+t}function a(e,t,i){return encodeURIComponent(e).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\")+\"=\"+encodeURIComponent(t).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent)+function(e){if(\"number\"==typeof e.expires){var t=new Date;t.setMilliseconds(t.getMilliseconds()+864e5*e.expires),e.expires=t}return n(\"Expires\",e.expires?e.expires.toUTCString():\"\")+n(\"Domain\",e.domain)+n(\"Path\",e.path)+n(\"Secure\",e.secure)+n(\"SameSite\",e.sameSite)}(i)}function r(e){for(var t={},i=e?e.split(\"; \"):[],o=/(%[\\dA-F]{2})+/gi,n=0;n<i.length;n++){var a=i[n].split(\"=\"),r=a.slice(1).join(\"=\");'\"'===r.charAt(0)&&(r=r.slice(1,-1));try{t[a[0].replace(o,decodeURIComponent)]=r.replace(o,decodeURIComponent)}catch(e){}}return t}function s(){return r(document.cookie)}function c(e,t,i){document.cookie=a(e,t,o({path:\"/\"},i))}i.__esModule=!0,i.encode=a,i.parse=r,i.getAll=s,i.get=function(e){return s()[e]},i.set=c,i.remove=function(e,t){c(e,\"\",o(o({},t),{expires:-1}))}}));i(R),R.encode,R.parse,R.getAll;var U=R.get,L=R.set,D=R.remove;const X={get(e){const t=U(e);if(void 0!==t)return JSON.parse(t)},save(e,t,i){let o={};\"https:\"===window.location.protocol&&(o={secure:!0,sameSite:\"none\"}),(null==i?void 0:i.daysUntilExpire)&&(o.expires=i.daysUntilExpire),(null==i?void 0:i.cookieDomain)&&(o.domain=i.cookieDomain),L(e,JSON.stringify(t),o)},remove(e,t){let i={};(null==t?void 0:t.cookieDomain)&&(i.domain=t.cookieDomain),D(e,i)}},N={get(e){const t=X.get(e);return t||X.get(`_legacy_${e}`)},save(e,t,i){let o={};\"https:\"===window.location.protocol&&(o={secure:!0}),(null==i?void 0:i.daysUntilExpire)&&(o.expires=i.daysUntilExpire),(null==i?void 0:i.cookieDomain)&&(o.domain=i.cookieDomain),L(`_legacy_${e}`,JSON.stringify(t),o),X.save(e,t,i)},remove(e,t){let i={};(null==t?void 0:t.cookieDomain)&&(i.domain=t.cookieDomain),D(e,i),X.remove(e,t),X.remove(`_legacy_${e}`,t)}},J={get(e){if(\"undefined\"==typeof sessionStorage)return;const t=sessionStorage.getItem(e);return null!=t?JSON.parse(t):void 0},save(e,t){sessionStorage.setItem(e,JSON.stringify(t))},remove(e){sessionStorage.removeItem(e)}};function F(e,t,i){var o=void 0===t?null:t,n=function(e,t){var i=atob(e);if(t){for(var o=new Uint8Array(i.length),n=0,a=i.length;n<a;++n)o[n]=i.charCodeAt(n);return String.fromCharCode.apply(null,new Uint16Array(o.buffer))}return i}(e,void 0!==i&&i),a=n.indexOf(\"\\n\",10)+1,r=n.substring(a)+(o?\"//# sourceMappingURL=\"+o:\"\"),s=new Blob([r],{type:\"application/javascript\"});return URL.createObjectURL(s)}var H,Y,G,V,M=(H=\"Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3MgZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQscil7c3VwZXIociksdGhpcy5lcnJvcj10LHRoaXMuZXJyb3JfZGVzY3JpcHRpb249cixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxlLnByb3RvdHlwZSl9c3RhdGljIGZyb21QYXlsb2FkKHtlcnJvcjp0LGVycm9yX2Rlc2NyaXB0aW9uOnJ9KXtyZXR1cm4gbmV3IGUodCxyKX19Y2xhc3MgdCBleHRlbmRzIGV7Y29uc3RydWN0b3IoZSxzKXtzdXBlcigibWlzc2luZ19yZWZyZXNoX3Rva2VuIixgTWlzc2luZyBSZWZyZXNoIFRva2VuIChhdWRpZW5jZTogJyR7cihlLFsiZGVmYXVsdCJdKX0nLCBzY29wZTogJyR7cihzKX0nKWApLHRoaXMuYXVkaWVuY2U9ZSx0aGlzLnNjb3BlPXMsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsdC5wcm90b3R5cGUpfX1mdW5jdGlvbiByKGUsdD1bXSl7cmV0dXJuIGUmJiF0LmluY2x1ZGVzKGUpP2U6IiJ9ImZ1bmN0aW9uIj09dHlwZW9mIFN1cHByZXNzZWRFcnJvciYmU3VwcHJlc3NlZEVycm9yO2NvbnN0IHM9ZT0+e3ZhcntjbGllbnRJZDp0fT1lLHI9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIHMgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxzKSYmdC5pbmRleE9mKHMpPDAmJihyW3NdPWVbc10pO2lmKG51bGwhPWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxzLmxlbmd0aDtvKyspdC5pbmRleE9mKHNbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHNbb10pJiYocltzW29dXT1lW3Nbb11dKX1yZXR1cm4gcn0oZSxbImNsaWVudElkIl0pO3JldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKChlPT5PYmplY3Qua2V5cyhlKS5maWx0ZXIoKHQ9PnZvaWQgMCE9PWVbdF0pKS5yZWR1Y2UoKCh0LHIpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse1tyXTplW3JdfSkpLHt9KSkoT2JqZWN0LmFzc2lnbih7Y2xpZW50X2lkOnR9LHIpKSkudG9TdHJpbmcoKX07bGV0IG89e307Y29uc3Qgbj0oZSx0KT0+YCR7ZX18JHt0fWA7YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGFzeW5jKHtkYXRhOnt0aW1lb3V0OmUsYXV0aDpyLGZldGNoVXJsOmksZmV0Y2hPcHRpb25zOmMsdXNlRm9ybURhdGE6YX0scG9ydHM6W3BdfSk9PntsZXQgZjtjb25zdHthdWRpZW5jZTp1LHNjb3BlOmx9PXJ8fHt9O3RyeXtjb25zdCByPWE/KGU9Pntjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMoZSkscj17fTtyZXR1cm4gdC5mb3JFYWNoKCgoZSx0KT0+e3JbdF09ZX0pKSxyfSkoYy5ib2R5KTpKU09OLnBhcnNlKGMuYm9keSk7aWYoIXIucmVmcmVzaF90b2tlbiYmInJlZnJlc2hfdG9rZW4iPT09ci5ncmFudF90eXBlKXtjb25zdCBlPSgoZSx0KT0+b1tuKGUsdCldKSh1LGwpO2lmKCFlKXRocm93IG5ldyB0KHUsbCk7Yy5ib2R5PWE/cyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3JlZnJlc2hfdG9rZW46ZX0pKTpKU09OLnN0cmluZ2lmeShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3JlZnJlc2hfdG9rZW46ZX0pKX1sZXQgaCxnOyJmdW5jdGlvbiI9PXR5cGVvZiBBYm9ydENvbnRyb2xsZXImJihoPW5ldyBBYm9ydENvbnRyb2xsZXIsYy5zaWduYWw9aC5zaWduYWwpO3RyeXtnPWF3YWl0IFByb21pc2UucmFjZShbKGQ9ZSxuZXcgUHJvbWlzZSgoZT0+c2V0VGltZW91dChlLGQpKSkpLGZldGNoKGksT2JqZWN0LmFzc2lnbih7fSxjKSldKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBwLnBvc3RNZXNzYWdlKHtlcnJvcjplLm1lc3NhZ2V9KX1pZighZylyZXR1cm4gaCYmaC5hYm9ydCgpLHZvaWQgcC5wb3N0TWVzc2FnZSh7ZXJyb3I6IlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyJ9KTtmPWF3YWl0IGcuanNvbigpLGYucmVmcmVzaF90b2tlbj8oKChlLHQscik9PntvW24odCxyKV09ZX0pKGYucmVmcmVzaF90b2tlbix1LGwpLGRlbGV0ZSBmLnJlZnJlc2hfdG9rZW4pOigoZSx0KT0+e2RlbGV0ZSBvW24oZSx0KV19KSh1LGwpLHAucG9zdE1lc3NhZ2Uoe29rOmcub2ssanNvbjpmfSl9Y2F0Y2goZSl7cC5wb3N0TWVzc2FnZSh7b2s6ITEsanNvbjp7ZXJyb3I6ZS5lcnJvcixlcnJvcl9kZXNjcmlwdGlvbjplLm1lc3NhZ2V9fSl9dmFyIGR9KSl9KCk7Cgo=\",Y=null,G=!1,function(e){return V=V||F(H,Y,G),new Worker(V,e)});const A={};class B{constructor(e,t){this.cache=e,this.clientId=t,this.manifestKey=this.createManifestKeyFrom(this.clientId)}async add(e){var t;const i=new Set((null===(t=await this.cache.get(this.manifestKey))||void 0===t?void 0:t.keys)||[]);i.add(e),await this.cache.set(this.manifestKey,{keys:[...i]})}async remove(e){const t=await this.cache.get(this.manifestKey);if(t){const i=new Set(t.keys);return i.delete(e),i.size>0?await this.cache.set(this.manifestKey,{keys:[...i]}):await this.cache.remove(this.manifestKey)}}get(){return this.cache.get(this.manifestKey)}clear(){return this.cache.remove(this.manifestKey)}createManifestKeyFrom(e){return`@@auth0spajs@@::${e}`}}const $={memory:()=>(new P).enclosedCache,localstorage:()=>new C},q=e=>$[e],Q=t=>{const{openUrl:i,onRedirect:o}=t,n=e(t,[\"openUrl\",\"onRedirect\"]);return Object.assign(Object.assign({},n),{openUrl:!1===i||i?i:o})},ee=new a;class te{constructor(e){let t,i;if(this.userCache=(new P).enclosedCache,this.defaultOptions={authorizationParams:{scope:\"openid profile email\"},useRefreshTokensFallback:!1,useFormData:!0},this._releaseLockOnPageHide=async()=>{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide)},this.options=Object.assign(Object.assign(Object.assign({},this.defaultOptions),e),{authorizationParams:Object.assign(Object.assign({},this.defaultOptions.authorizationParams),e.authorizationParams)}),\"undefined\"!=typeof window&&(()=>{if(!w())throw new Error(\"For security reasons, `window.crypto` is required to run `auth0-spa-js`.\");if(void 0===w().subtle)throw new Error(\"\\n      auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/main/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\\n    \")})(),e.cache&&e.cacheLocation&&console.warn(\"Both `cache` and `cacheLocation` options have been specified in the Auth0Client configuration; ignoring `cacheLocation` and using `cache`.\"),e.cache)i=e.cache;else{if(t=e.cacheLocation||\"memory\",!q(t))throw new Error(`Invalid cache location \"${t}\"`);i=q(t)()}this.httpTimeoutMs=e.httpTimeoutInSeconds?1e3*e.httpTimeoutInSeconds:1e4,this.cookieStorage=!1===e.legacySameSiteCookie?X:N,this.orgHintCookieName=`auth0.${this.options.clientId}.organization_hint`,this.isAuthenticatedCookieName=(e=>`auth0.${e}.is.authenticated`)(this.options.clientId),this.sessionCheckExpiryDays=e.sessionCheckExpiryDays||1;const o=e.useCookiesForTransactions?this.cookieStorage:J;var n;this.scope=j(\"openid\",this.options.authorizationParams.scope,this.options.useRefreshTokens?\"offline_access\":\"\"),this.transactionManager=new Z(o,this.options.clientId,this.options.cookieDomain),this.nowProvider=this.options.nowProvider||c,this.cacheManager=new x(i,i.allKeys?void 0:new B(i,this.options.clientId),this.nowProvider),this.domainUrl=(n=this.options.domain,/^https?:\\/\\//.test(n)?n:`https://${n}`),this.tokenIssuer=((e,t)=>e?e.startsWith(\"https://\")?e:`https://${e}/`:`${t}/`)(this.options.issuer,this.domainUrl),\"undefined\"!=typeof window&&window.Worker&&this.options.useRefreshTokens&&\"memory\"===t&&(this.options.workerUrl?this.worker=new Worker(this.options.workerUrl):this.worker=new M)}_url(e){const t=encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client||s)));return`${this.domainUrl}${e}&auth0Client=${t}`}_authorizeUrl(e){return this._url(`/authorize?${v(e)}`)}async _verifyIdToken(e,t,i){const o=await this.nowProvider();return E({iss:this.tokenIssuer,aud:this.options.clientId,id_token:e,nonce:t,organization:i,leeway:this.options.leeway,max_age:(n=this.options.authorizationParams.max_age,\"string\"!=typeof n?n:parseInt(n,10)||void 0),now:o});var n}_processOrgHint(e){e?this.cookieStorage.save(this.orgHintCookieName,e,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}):this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain})}async _prepareAuthorizeUrl(e,t,i){const o=k(y()),n=k(y()),a=y(),r=(e=>{const t=new Uint8Array(e);return(e=>{const t={\"+\":\"-\",\"/\":\"_\",\"=\":\"\"};return e.replace(/[+/=]/g,(e=>t[e]))})(window.btoa(String.fromCharCode(...Array.from(t))))})(await(async e=>{const t=w().subtle.digest({name:\"SHA-256\"},(new TextEncoder).encode(e));return await t})(a)),s=((e,t,i,o,n,a,r,s)=>Object.assign(Object.assign(Object.assign({client_id:e.clientId},e.authorizationParams),i),{scope:j(t,i.scope),response_type:\"code\",response_mode:s||\"query\",state:o,nonce:n,redirect_uri:r||e.authorizationParams.redirect_uri,code_challenge:a,code_challenge_method:\"S256\"}))(this.options,this.scope,e,o,n,r,e.redirect_uri||this.options.authorizationParams.redirect_uri||i,null==t?void 0:t.response_mode),c=this._authorizeUrl(s);return{nonce:n,code_verifier:a,scope:s.scope,audience:s.audience||\"default\",redirect_uri:s.redirect_uri,state:o,url:c}}async loginWithPopup(e,t){var i;if(e=e||{},!(t=t||{}).popup&&(t.popup=(e=>{const t=window.screenX+(window.innerWidth-400)/2,i=window.screenY+(window.innerHeight-600)/2;return window.open(e,\"auth0:authorize:popup\",`left=${t},top=${i},width=400,height=600,resizable,scrollbars=yes,status=1`)})(\"\"),!t.popup))throw new Error(\"Unable to open a popup for loginWithPopup - window.open returned `null`\");const o=await this._prepareAuthorizeUrl(e.authorizationParams||{},{response_mode:\"web_message\"},window.location.origin);t.popup.location.href=o.url;const n=await(e=>new Promise(((t,i)=>{let o;const n=setInterval((()=>{e.popup&&e.popup.closed&&(clearInterval(n),clearTimeout(a),window.removeEventListener(\"message\",o,!1),i(new p(e.popup)))}),1e3),a=setTimeout((()=>{clearInterval(n),i(new h(e.popup)),window.removeEventListener(\"message\",o,!1)}),1e3*(e.timeoutInSeconds||60));o=function(r){if(r.data&&\"authorization_response\"===r.data.type){if(clearTimeout(a),clearInterval(n),window.removeEventListener(\"message\",o,!1),e.popup.close(),r.data.response.error)return i(u.fromPayload(r.data.response));t(r.data.response)}},window.addEventListener(\"message\",o)})))(Object.assign(Object.assign({},t),{timeoutInSeconds:t.timeoutInSeconds||this.options.authorizeTimeoutInSeconds||60}));if(o.state!==n.state)throw new u(\"state_mismatch\",\"Invalid state\");const a=(null===(i=e.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization;await this._requestToken({audience:o.audience,scope:o.scope,code_verifier:o.code_verifier,grant_type:\"authorization_code\",code:n.code,redirect_uri:o.redirect_uri},{nonceIn:o.nonce,organization:a})}async getUser(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.user}async getIdTokenClaims(){var e;const t=await this._getIdTokenFromCache();return null===(e=null==t?void 0:t.decodedToken)||void 0===e?void 0:e.claims}async loginWithRedirect(t={}){var i;const o=Q(t),{openUrl:n,fragment:a,appState:r}=o,s=e(o,[\"openUrl\",\"fragment\",\"appState\"]),c=(null===(i=s.authorizationParams)||void 0===i?void 0:i.organization)||this.options.authorizationParams.organization,u=await this._prepareAuthorizeUrl(s.authorizationParams||{}),{url:d}=u,l=e(u,[\"url\"]);this.transactionManager.create(Object.assign(Object.assign(Object.assign({},l),{appState:r}),c&&{organization:c}));const h=a?`${d}#${a}`:d;n?await n(h):window.location.assign(h)}async handleRedirectCallback(e=window.location.href){const t=e.split(\"?\").slice(1);if(0===t.length)throw new Error(\"There are no query params available for parsing.\");const{state:i,code:o,error:n,error_description:a}=(e=>{e.indexOf(\"#\")>-1&&(e=e.substring(0,e.indexOf(\"#\")));const t=new URLSearchParams(e);return{state:t.get(\"state\"),code:t.get(\"code\")||void 0,error:t.get(\"error\")||void 0,error_description:t.get(\"error_description\")||void 0}})(t.join(\"\")),r=this.transactionManager.get();if(!r)throw new u(\"missing_transaction\",\"Invalid state\");if(this.transactionManager.remove(),n)throw new d(n,a||n,i,r.appState);if(!r.code_verifier||r.state&&r.state!==i)throw new u(\"state_mismatch\",\"Invalid state\");const s=r.organization,c=r.nonce,l=r.redirect_uri;return await this._requestToken(Object.assign({audience:r.audience,scope:r.scope,code_verifier:r.code_verifier,grant_type:\"authorization_code\",code:o},l?{redirect_uri:l}:{}),{nonceIn:c,organization:s}),{appState:r.appState}}async checkSession(e){if(!this.cookieStorage.get(this.isAuthenticatedCookieName)){if(!this.cookieStorage.get(\"auth0.is.authenticated\"))return;this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(\"auth0.is.authenticated\")}try{await this.getTokenSilently(e)}catch(e){}}async getTokenSilently(e={}){var t;const i=Object.assign(Object.assign({cacheMode:\"on\"},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(t=e.authorizationParams)||void 0===t?void 0:t.scope)})}),o=await((e,t)=>{let i=A[t];return i||(i=e().finally((()=>{delete A[t],i=null})),A[t]=i),i})((()=>this._getTokenSilently(i)),`${this.options.clientId}::${i.authorizationParams.audience}::${i.authorizationParams.scope}`);return e.detailedResponse?o:null==o?void 0:o.access_token}async _getTokenSilently(t){const{cacheMode:i}=t,o=e(t,[\"cacheMode\"]);if(\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}if(\"cache-only\"!==i){if(!await(async(e,t=3)=>{for(let i=0;i<t;i++)if(await e())return!0;return!1})((()=>ee.acquireLock(\"auth0.lock.getTokenSilently\",5e3)),10))throw new l;try{if(window.addEventListener(\"pagehide\",this._releaseLockOnPageHide),\"off\"!==i){const e=await this._getEntryFromCache({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId});if(e)return e}const e=this.options.useRefreshTokens?await this._getTokenUsingRefreshToken(o):await this._getTokenFromIFrame(o),{id_token:t,access_token:n,oauthTokenScope:a,expires_in:r}=e;return Object.assign(Object.assign({id_token:t,access_token:n},a?{scope:a}:null),{expires_in:r})}finally{await ee.releaseLock(\"auth0.lock.getTokenSilently\"),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide)}}}async getTokenWithPopup(e={},t={}){var i;const o=Object.assign(Object.assign({},e),{authorizationParams:Object.assign(Object.assign(Object.assign({},this.options.authorizationParams),e.authorizationParams),{scope:j(this.scope,null===(i=e.authorizationParams)||void 0===i?void 0:i.scope)})});t=Object.assign(Object.assign({},r),t),await this.loginWithPopup(o,t);return(await this.cacheManager.get(new z({scope:o.authorizationParams.scope,audience:o.authorizationParams.audience||\"default\",clientId:this.options.clientId}))).access_token}async isAuthenticated(){return!!await this.getUser()}_buildLogoutUrl(t){null!==t.clientId?t.clientId=t.clientId||this.options.clientId:delete t.clientId;const i=t.logoutParams||{},{federated:o}=i,n=e(i,[\"federated\"]),a=o?\"&federated\":\"\";return this._url(`/v2/logout?${v(Object.assign({clientId:t.clientId},n))}`)+a}async logout(t={}){const i=Q(t),{openUrl:o}=i,n=e(i,[\"openUrl\"]);null===t.clientId?await this.cacheManager.clear():await this.cacheManager.clear(t.clientId||this.options.clientId),this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(this.isAuthenticatedCookieName,{cookieDomain:this.options.cookieDomain}),this.userCache.remove(\"@@user@@\");const a=this._buildLogoutUrl(n);o?await o(a):!1!==o&&window.location.assign(a)}async _getTokenFromIFrame(e){const t=Object.assign(Object.assign({},e.authorizationParams),{prompt:\"none\"}),i=this.cookieStorage.get(this.orgHintCookieName);i&&!t.organization&&(t.organization=i);const{url:o,state:n,nonce:a,code_verifier:r,redirect_uri:s,scope:c,audience:d}=await this._prepareAuthorizeUrl(t,{response_mode:\"web_message\"},window.location.origin);try{if(window.crossOriginIsolated)throw new u(\"login_required\",\"The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.\");const i=e.timeoutInSeconds||this.options.authorizeTimeoutInSeconds;let h;try{h=new URL(this.domainUrl).origin}catch(e){h=this.domainUrl}const p=await((e,t,i=60)=>new Promise(((o,n)=>{const a=window.document.createElement(\"iframe\");a.setAttribute(\"width\",\"0\"),a.setAttribute(\"height\",\"0\"),a.style.display=\"none\";const r=()=>{window.document.body.contains(a)&&(window.document.body.removeChild(a),window.removeEventListener(\"message\",s,!1))};let s;const c=setTimeout((()=>{n(new l),r()}),1e3*i);s=function(e){if(e.origin!=t)return;if(!e.data||\"authorization_response\"!==e.data.type)return;const i=e.source;i&&i.close(),e.data.response.error?n(u.fromPayload(e.data.response)):o(e.data.response),clearTimeout(c),window.removeEventListener(\"message\",s,!1),setTimeout(r,2e3)},window.addEventListener(\"message\",s,!1),window.document.body.appendChild(a),a.setAttribute(\"src\",e)})))(o,h,i);if(n!==p.state)throw new u(\"state_mismatch\",\"Invalid state\");const m=await this._requestToken(Object.assign(Object.assign({},e.authorizationParams),{code_verifier:r,code:p.code,grant_type:\"authorization_code\",redirect_uri:s,timeout:e.authorizationParams.timeout||this.httpTimeoutMs}),{nonceIn:a,organization:t.organization});return Object.assign(Object.assign({},m),{scope:c,oauthTokenScope:m.scope,audience:d})}catch(e){throw\"login_required\"===e.error&&this.logout({openUrl:!1}),e}}async _getTokenUsingRefreshToken(e){const t=await this.cacheManager.get(new z({scope:e.authorizationParams.scope,audience:e.authorizationParams.audience||\"default\",clientId:this.options.clientId}));if(!(t&&t.refresh_token||this.worker)){if(this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw new f(e.authorizationParams.audience||\"default\",e.authorizationParams.scope)}const i=e.authorizationParams.redirect_uri||this.options.authorizationParams.redirect_uri||window.location.origin,o=\"number\"==typeof e.timeoutInSeconds?1e3*e.timeoutInSeconds:null;try{const n=await this._requestToken(Object.assign(Object.assign(Object.assign({},e.authorizationParams),{grant_type:\"refresh_token\",refresh_token:t&&t.refresh_token,redirect_uri:i}),o&&{timeout:o}));return Object.assign(Object.assign({},n),{scope:e.authorizationParams.scope,oauthTokenScope:n.scope,audience:e.authorizationParams.audience||\"default\"})}catch(t){if((t.message.indexOf(\"Missing Refresh Token\")>-1||t.message&&t.message.indexOf(\"invalid refresh token\")>-1)&&this.options.useRefreshTokensFallback)return await this._getTokenFromIFrame(e);throw t}}async _saveEntryInCache(t){const{id_token:i,decodedToken:o}=t,n=e(t,[\"id_token\",\"decodedToken\"]);this.userCache.set(\"@@user@@\",{id_token:i,decodedToken:o}),await this.cacheManager.setIdToken(this.options.clientId,t.id_token,t.decodedToken),await this.cacheManager.set(n)}async _getIdTokenFromCache(){const e=this.options.authorizationParams.audience||\"default\",t=await this.cacheManager.getIdToken(new z({clientId:this.options.clientId,audience:e,scope:this.scope})),i=this.userCache.get(\"@@user@@\");return t&&t.id_token===(null==i?void 0:i.id_token)?i:(this.userCache.set(\"@@user@@\",t),t)}async _getEntryFromCache({scope:e,audience:t,clientId:i}){const o=await this.cacheManager.get(new z({scope:e,audience:t,clientId:i}),60);if(o&&o.access_token){const{access_token:e,oauthTokenScope:t,expires_in:i}=o,n=await this._getIdTokenFromCache();return n&&Object.assign(Object.assign({id_token:n.id_token,access_token:e},t?{scope:t}:null),{expires_in:i})}}async _requestToken(e,t){const{nonceIn:i,organization:o}=t||{},n=await T(Object.assign({baseUrl:this.domainUrl,client_id:this.options.clientId,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs},e),this.worker),a=await this._verifyIdToken(n.id_token,i,o);return await this._saveEntryInCache(Object.assign(Object.assign(Object.assign(Object.assign({},n),{decodedToken:a,scope:e.scope,audience:e.audience||\"default\"}),n.scope?{oauthTokenScope:n.scope}:null),{client_id:this.options.clientId})),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this._processOrgHint(o||a.claims.org_id),Object.assign(Object.assign({},n),{decodedToken:a})}async exchangeToken(e){return this._requestToken({grant_type:\"urn:ietf:params:oauth:grant-type:token-exchange\",subject_token:e.subject_token,subject_token_type:e.subject_token_type,scope:j(e.scope,this.scope),audience:e.audience||this.options.authorizationParams.audience})}}class ie{}async function oe(e){const t=new te(e);return await t.checkSession(),t}export{te as Auth0Client,d as AuthenticationError,z as CacheKey,u as GenericError,P as InMemoryCache,C as LocalStorageCache,m as MfaRequiredError,f as MissingRefreshTokenError,p as PopupCancelledError,h as PopupTimeoutError,l as TimeoutError,ie as User,oe as createAuth0Client};\n//# sourceMappingURL=auth0-spa-js.production.esm.js.map\n","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\n//      \nfunction moveFieldState(state, source, destKey, oldState) {\n  if (oldState === void 0) {\n    oldState = state;\n  }\n\n  delete state.fields[source.name];\n  state.fields[destKey] = _extends({}, source, {\n    name: destKey,\n    // prevent functions from being overwritten\n    // if the state.fields[destKey] does not exist, it will be created\n    // when that field gets registered, with its own change/blur/focus callbacks\n    change: oldState.fields[destKey] && oldState.fields[destKey].change,\n    blur: oldState.fields[destKey] && oldState.fields[destKey].blur,\n    focus: oldState.fields[destKey] && oldState.fields[destKey].focus,\n    lastFieldState: undefined // clearing lastFieldState forces renotification\n\n  });\n\n  if (!state.fields[destKey].change) {\n    delete state.fields[destKey].change;\n  }\n\n  if (!state.fields[destKey].blur) {\n    delete state.fields[destKey].blur;\n  }\n\n  if (!state.fields[destKey].focus) {\n    delete state.fields[destKey].focus;\n  }\n}\n\n//      \n// From MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\nvar escapeRegexTokens = function escapeRegexTokens(string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}; // $& means the whole matched string\n\nvar insert = function insert(_ref, state, _ref2) {\n  var name = _ref[0],\n      index = _ref[1],\n      value = _ref[2];\n  var changeValue = _ref2.changeValue,\n      resetFieldState = _ref2.resetFieldState;\n  changeValue(state, name, function (array) {\n    var copy = [].concat(array || []);\n    copy.splice(index, 0, value);\n    return copy;\n  });\n\n  var backup = _extends({}, state.fields); // now we have increment any higher indexes\n\n\n  var pattern = new RegExp(\"^\" + escapeRegexTokens(name) + \"\\\\[(\\\\d+)\\\\](.*)\"); // we need to increment high indices first so\n  // lower indices won't overlap\n\n  Object.keys(state.fields).sort().reverse().forEach(function (key) {\n    var tokens = pattern.exec(key);\n\n    if (tokens) {\n      var fieldIndex = Number(tokens[1]);\n\n      if (fieldIndex >= index) {\n        // inc index one higher\n        var incrementedKey = name + \"[\" + (fieldIndex + 1) + \"]\" + tokens[2];\n        moveFieldState(state, backup[key], incrementedKey);\n      }\n    }\n  });\n};\n\n//      \nvar concat = function concat(_ref, state, _ref2) {\n  var name = _ref[0],\n      value = _ref[1];\n  var changeValue = _ref2.changeValue;\n  changeValue(state, name, function (array) {\n    return array ? [].concat(array, value) : value;\n  });\n};\n\n//      \n\nfunction moveFields(name, matchPrefix, destIndex, state) {\n  Object.keys(state.fields).forEach(function (key) {\n    if (key.substring(0, matchPrefix.length) === matchPrefix) {\n      var suffix = key.substring(matchPrefix.length);\n      var destKey = name + \"[\" + destIndex + \"]\" + suffix;\n      moveFieldState(state, state.fields[key], destKey);\n    }\n  });\n}\n\n//      \nfunction restoreFunctions(state, backupState) {\n  Object.keys(state.fields).forEach(function (key) {\n    state.fields[key] = _extends({}, state.fields[key], {\n      change: state.fields[key].change || backupState.fields[key] && backupState.fields[key].change,\n      blur: state.fields[key].blur || backupState.fields[key] && backupState.fields[key].blur,\n      focus: state.fields[key].focus || backupState.fields[key] && backupState.fields[key].focus\n    });\n\n    if (!state.fields[key].change) {\n      delete state.fields[key].change;\n    }\n\n    if (!state.fields[key].blur) {\n      delete state.fields[key].blur;\n    }\n\n    if (!state.fields[key].focus) {\n      delete state.fields[key].focus;\n    }\n  });\n}\n\nvar TMP = 'tmp';\n\nvar move = function move(_ref, state, _ref2) {\n  var name = _ref[0],\n      from = _ref[1],\n      to = _ref[2];\n  var changeValue = _ref2.changeValue;\n\n  if (from === to) {\n    return;\n  }\n\n  changeValue(state, name, function (array) {\n    var copy = [].concat(array || []);\n    var value = copy[from];\n    copy.splice(from, 1);\n    copy.splice(to, 0, value);\n    return copy;\n  }); //make a copy of a state for further functions restore\n\n  var backupState = _extends({}, state, {\n    fields: _extends({}, state.fields) // move this row to tmp index\n\n  });\n\n  var fromPrefix = name + \"[\" + from + \"]\";\n  moveFields(name, fromPrefix, TMP, state);\n\n  if (from < to) {\n    // moving to a higher index\n    // decrement all indices between from and to\n    for (var i = from + 1; i <= to; i++) {\n      var innerFromPrefix = name + \"[\" + i + \"]\";\n      moveFields(name, innerFromPrefix, \"\" + (i - 1), state);\n    }\n  } else {\n    // moving to a lower index\n    // increment all indices between to and from\n    for (var _i = from - 1; _i >= to; _i--) {\n      var _innerFromPrefix = name + \"[\" + _i + \"]\";\n\n      moveFields(name, _innerFromPrefix, \"\" + (_i + 1), state);\n    }\n  } // move from tmp index to destination\n\n\n  var tmpPrefix = name + \"[\" + TMP + \"]\";\n  moveFields(name, tmpPrefix, to, state);\n  restoreFunctions(state, backupState);\n};\n\n//      \n\nvar pop = function pop(_ref, state, _ref2) {\n  var name = _ref[0];\n  var changeValue = _ref2.changeValue;\n  var result;\n  var removedIndex;\n  changeValue(state, name, function (array) {\n    if (array) {\n      if (!array.length) {\n        return [];\n      }\n\n      removedIndex = array.length - 1;\n      result = array[removedIndex];\n      return array.slice(0, removedIndex);\n    }\n  }); // now we have to remove any subfields for our index,\n\n  if (removedIndex !== undefined) {\n    var pattern = new RegExp(\"^\" + escapeRegexTokens(name) + \"\\\\[\" + removedIndex + \"].*\");\n    Object.keys(state.fields).forEach(function (key) {\n      if (pattern.test(key)) {\n        delete state.fields[key];\n      }\n    });\n  }\n\n  return result;\n};\n\n//      \nvar push = function push(_ref, state, _ref2) {\n  var name = _ref[0],\n      value = _ref[1];\n  var changeValue = _ref2.changeValue;\n  changeValue(state, name, function (array) {\n    return array ? [].concat(array, [value]) : [value];\n  });\n};\n\nvar remove = function remove(_ref, state, _ref2) {\n  var name = _ref[0],\n      index = _ref[1];\n  var changeValue = _ref2.changeValue,\n      renameField = _ref2.renameField;\n  var returnValue;\n  changeValue(state, name, function (array) {\n    var copy = [].concat(array || []);\n    returnValue = copy[index];\n    copy.splice(index, 1);\n    return copy;\n  }); // now we have to remove any subfields for our index,\n  // and decrement all higher indexes.\n\n  var pattern = new RegExp(\"^\" + escapeRegexTokens(name) + \"\\\\[(\\\\d+)\\\\](.*)\");\n\n  var backup = _extends({}, state, {\n    fields: _extends({}, state.fields)\n  });\n\n  Object.keys(state.fields).forEach(function (key) {\n    var tokens = pattern.exec(key);\n\n    if (tokens) {\n      var fieldIndex = Number(tokens[1]);\n\n      if (fieldIndex === index) {\n        // delete any subfields for this array item\n        delete state.fields[key];\n      } else if (fieldIndex > index) {\n        // shift all higher ones down\n        delete state.fields[key];\n        var decrementedKey = name + \"[\" + (fieldIndex - 1) + \"]\" + tokens[2];\n\n        if (backup.fields[decrementedKey]) {\n          moveFieldState(state, backup.fields[key], decrementedKey, backup);\n        } else {\n          // take care of setting the correct change, blur, focus, validators on new field\n          renameField(state, key, decrementedKey);\n        }\n      }\n    }\n  });\n  return returnValue;\n};\n\nvar countBelow = function countBelow(array, value) {\n  return array.reduce(function (count, item) {\n    return item < value ? count + 1 : count;\n  }, 0);\n};\n\nvar removeBatch = function removeBatch(_ref, state, _ref2) {\n  var name = _ref[0],\n      indexes = _ref[1];\n  var changeValue = _ref2.changeValue;\n  var sortedIndexes = [].concat(indexes);\n  sortedIndexes.sort(); // remove duplicates\n\n  for (var i = 0; i < sortedIndexes.length; i++) {\n    if (i > 0 && sortedIndexes[i] === sortedIndexes[i - 1]) {\n      sortedIndexes.splice(i--, 1);\n    }\n  }\n\n  var returnValue = [];\n  changeValue(state, name, function (array) {\n    // use original order of indexes for return value\n    returnValue = indexes.map(function (index) {\n      return array && array[index];\n    });\n\n    if (!array || !sortedIndexes.length) {\n      return array;\n    }\n\n    var copy = [].concat(array);\n    var removed = [];\n    sortedIndexes.forEach(function (index) {\n      copy.splice(index - removed.length, 1);\n      removed.push(array && array[index]);\n    });\n    return copy;\n  }); // now we have to remove any subfields for our indexes,\n  // and decrement all higher indexes.\n\n  var pattern = new RegExp(\"^\" + escapeRegexTokens(name) + \"\\\\[(\\\\d+)\\\\](.*)\");\n\n  var newState = _extends({}, state, {\n    fields: {}\n  });\n\n  Object.keys(state.fields).forEach(function (key) {\n    var tokens = pattern.exec(key);\n\n    if (tokens) {\n      var fieldIndex = Number(tokens[1]);\n\n      if (!~sortedIndexes.indexOf(fieldIndex)) {\n        // not one of the removed indexes\n        // shift all higher ones down\n        var decrementedKey = name + \"[\" + (fieldIndex - countBelow(sortedIndexes, fieldIndex)) + \"]\" + tokens[2];\n        moveFieldState(newState, state.fields[key], decrementedKey, state);\n      }\n    } else {\n      newState.fields[key] = state.fields[key];\n    }\n  });\n  state.fields = newState.fields;\n  return returnValue;\n};\n\n//      \n\nvar shift = function shift(_ref, state, tools) {\n  var name = _ref[0];\n  return remove([name, 0], state, tools);\n};\n\nvar TMP$1 = 'tmp';\n\nvar swap = function swap(_ref, state, _ref2) {\n  var name = _ref[0],\n      indexA = _ref[1],\n      indexB = _ref[2];\n  var changeValue = _ref2.changeValue;\n\n  if (indexA === indexB) {\n    return;\n  }\n\n  changeValue(state, name, function (array) {\n    var copy = [].concat(array || []);\n    var a = copy[indexA];\n    copy[indexA] = copy[indexB];\n    copy[indexB] = a;\n    return copy;\n  }); //make a copy of a state for further functions restore\n\n  var backupState = _extends({}, state, {\n    fields: _extends({}, state.fields) // swap all field state that begin with \"name[indexA]\" with that under \"name[indexB]\"\n\n  });\n\n  var aPrefix = name + \"[\" + indexA + \"]\";\n  var bPrefix = name + \"[\" + indexB + \"]\";\n  var tmpPrefix = name + \"[\" + TMP$1 + \"]\";\n  moveFields(name, aPrefix, TMP$1, state);\n  moveFields(name, bPrefix, indexA, state);\n  moveFields(name, tmpPrefix, indexB, state);\n  restoreFunctions(state, backupState);\n};\n\n//      \n\nvar unshift = function unshift(_ref, state, tools) {\n  var name = _ref[0],\n      value = _ref[1];\n  return insert([name, 0, value], state, tools);\n};\n\n//      \nvar update = function update(_ref, state, _ref2) {\n  var name = _ref[0],\n      index = _ref[1],\n      value = _ref[2];\n  var changeValue = _ref2.changeValue;\n  changeValue(state, name, function (array) {\n    var copy = [].concat(array || []);\n    copy.splice(index, 1, value);\n    return copy;\n  });\n};\n\n//      \nvar mutators = {\n  insert: insert,\n  concat: concat,\n  move: move,\n  pop: pop,\n  push: push,\n  remove: remove,\n  removeBatch: removeBatch,\n  shift: shift,\n  swap: swap,\n  unshift: unshift,\n  update: update\n};\n\nexport default mutators;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","function createThunkMiddleware(extraArgument) {\n  return function (_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        if (typeof action === 'function') {\n          return action(dispatch, getState, extraArgument);\n        }\n\n        return next(action);\n      };\n    };\n  };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","/**\r\n * PriorityQueue\r\n * Elements in this queue are sorted according to their value\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * PriorityQueue class construcotr\r\n * @constructor\r\n *\r\n * @example\r\n * queue: [1,2,3,4]\r\n * priorities: [4,1,2,3]\r\n * > result = [1,4,2,3]\r\n *\r\n * @param {Array} elements\r\n * @param {Array} priorities\r\n * @param {string} sorting - asc / desc\r\n * @returns {PriorityQueue}\r\n */\r\nfunction PriorityQueue(elements, priorities, sorting) {\r\n  /** @type {Array} */\r\n  this._queue = [];\r\n  /** @type {Array} */\r\n  this._priorities = [];\r\n  /** @type {string} */\r\n  this._sorting = 'desc';\r\n\r\n  this._init(elements, priorities, sorting);\r\n};\r\n\r\n/**\r\n * Insert element\r\n *\r\n * @param {Object} ele\r\n * @param {Object} priority\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.insert = function(ele, priority) {\r\n  var indexToInsert = this._queue.length;\r\n  var index = indexToInsert;\r\n\r\n  while (index--) {\r\n    var priority2 = this._priorities[index];\r\n    if (this._sorting === 'desc') {\r\n      if (priority > priority2) {\r\n        indexToInsert = index;\r\n      }\r\n    } else {\r\n      if (priority < priority2) {\r\n        indexToInsert = index;\r\n      }\r\n    }\r\n  }\r\n\r\n  this._insertAt(ele, priority, indexToInsert);\r\n};\r\n\r\n/**\r\n * Remove element\r\n *\r\n * @param {Object} ele\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.remove = function(ele) {\r\n  var index = this._queue.length;\r\n\r\n  while (index--) {\r\n    var ele2 = this._queue[index];\r\n    if (ele === ele2) {\r\n      this._queue.splice(index, 1);\r\n      this._priorities.splice(index, 1);\r\n      break;\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * For each loop wrapper\r\n *\r\n * @param {function} func\r\n * @returs {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.forEach = function(func) {\r\n  this._queue.forEach(func);\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElements = function() {\r\n  return this._queue;\r\n};\r\n\r\n/**\r\n * @param {number} index\r\n * @returns {Object}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElementPriority = function(index) {\r\n  return this._priorities[index];\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getPriorities = function() {\r\n  return this._priorities;\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElementsWithPriorities = function() {\r\n  var result = [];\r\n\r\n  for (var i = 0, l = this._queue.length; i < l; i++) {\r\n    result.push([this._queue[i], this._priorities[i]]);\r\n  }\r\n\r\n  return result;\r\n};\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} elements\r\n * @param {Array} priorities\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nPriorityQueue.prototype._init = function(elements, priorities, sorting) {\r\n\r\n  if (elements && priorities) {\r\n    this._queue = [];\r\n    this._priorities = [];\r\n\r\n    if (elements.length !== priorities.length) {\r\n      throw new Error('Arrays must have the same length');\r\n    }\r\n\r\n    for (var i = 0; i < elements.length; i++) {\r\n      this.insert(elements[i], priorities[i]);\r\n    }\r\n  }\r\n\r\n  if (sorting) {\r\n    this._sorting = sorting;\r\n  }\r\n};\r\n\r\n/**\r\n * Insert element at given position\r\n *\r\n * @param {Object} ele\r\n * @param {number} index\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nPriorityQueue.prototype._insertAt = function(ele, priority, index) {\r\n  if (this._queue.length === index) {\r\n    this._queue.push(ele);\r\n    this._priorities.push(priority);\r\n  } else {\r\n    this._queue.splice(index, 0, ele);\r\n    this._priorities.splice(index, 0, priority);\r\n  }\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = PriorityQueue;\r\n}\r\n","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","var utils = require('./utils/common');\nvar error = require('./utils/error');\nvar statistical = require('./statistical');\nvar information = require('./information');\nvar evalExpression = require('./utils/criteria-eval');\n\nexports.ABS = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.abs(number);\n\n  return result;\n};\n\nexports.ACOS = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.acos(number);\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.ACOSH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.log(number + Math.sqrt(number * number - 1));\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.ACOT = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.atan(1 / number);\n\n  return result;\n};\n\nexports.ACOTH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = 0.5 * Math.log((number + 1) / (number - 1));\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\n//TODO: use options\nexports.AGGREGATE = function(function_num, options, ref1, ref2) {\n  function_num = utils.parseNumber(function_num);\n  options = utils.parseNumber(function_num);\n  if (utils.anyIsError(function_num, options)) {\n    return error.value;\n  }\n  switch (function_num) {\n    case 1:\n      return statistical.AVERAGE(ref1);\n    case 2:\n      return statistical.COUNT(ref1);\n    case 3:\n      return statistical.COUNTA(ref1);\n    case 4:\n      return statistical.MAX(ref1);\n    case 5:\n      return statistical.MIN(ref1);\n    case 6:\n      return exports.PRODUCT(ref1);\n    case 7:\n      return statistical.STDEV.S(ref1);\n    case 8:\n      return statistical.STDEV.P(ref1);\n    case 9:\n      return exports.SUM(ref1);\n    case 10:\n      return statistical.VAR.S(ref1);\n    case 11:\n      return statistical.VAR.P(ref1);\n    case 12:\n      return statistical.MEDIAN(ref1);\n    case 13:\n      return statistical.MODE.SNGL(ref1);\n    case 14:\n      return statistical.LARGE(ref1, ref2);\n    case 15:\n      return statistical.SMALL(ref1, ref2);\n    case 16:\n      return statistical.PERCENTILE.INC(ref1, ref2);\n    case 17:\n      return statistical.QUARTILE.INC(ref1, ref2);\n    case 18:\n      return statistical.PERCENTILE.EXC(ref1, ref2);\n    case 19:\n      return statistical.QUARTILE.EXC(ref1, ref2);\n  }\n};\n\nexports.ARABIC = function(text) {\n  // Credits: Rafa? Kukawski\n  if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {\n    return error.value;\n  }\n  var r = 0;\n  text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function(i) {\n    r += {\n      M: 1000,\n      CM: 900,\n      D: 500,\n      CD: 400,\n      C: 100,\n      XC: 90,\n      L: 50,\n      XL: 40,\n      X: 10,\n      IX: 9,\n      V: 5,\n      IV: 4,\n      I: 1\n    }[i];\n  });\n  return r;\n};\n\nexports.ASIN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.asin(number);\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.ASINH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.log(number + Math.sqrt(number * number + 1));\n};\n\nexports.ATAN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.atan(number);\n};\n\nexports.ATAN2 = function(number_x, number_y) {\n  number_x = utils.parseNumber(number_x);\n  number_y = utils.parseNumber(number_y);\n  if (utils.anyIsError(number_x, number_y)) {\n    return error.value;\n  }\n  return Math.atan2(number_x, number_y);\n};\n\nexports.ATANH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var result = Math.log((1 + number) / (1 - number)) / 2;\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.BASE = function(number, radix, min_length) {\n  min_length = min_length || 0;\n\n  number = utils.parseNumber(number);\n  radix = utils.parseNumber(radix);\n  min_length = utils.parseNumber(min_length);\n  if (utils.anyIsError(number, radix, min_length)) {\n    return error.value;\n  }\n  min_length = (min_length === undefined) ? 0 : min_length;\n  var result = number.toString(radix);\n  return new Array(Math.max(min_length + 1 - result.length, 0)).join('0') + result;\n};\n\nexports.CEILING = function(number, significance, mode) {\n  significance = (significance === undefined) ? 1 : Math.abs(significance);\n  mode = mode || 0;\n\n  number = utils.parseNumber(number);\n  significance = utils.parseNumber(significance);\n  mode = utils.parseNumber(mode);\n  if (utils.anyIsError(number, significance, mode)) {\n    return error.value;\n  }\n  if (significance === 0) {\n    return 0;\n  }\n  var precision = -Math.floor(Math.log(significance) / Math.log(10));\n  if (number >= 0) {\n    return exports.ROUND(Math.ceil(number / significance) * significance, precision);\n  } else {\n    if (mode === 0) {\n      return -exports.ROUND(Math.floor(Math.abs(number) / significance) * significance, precision);\n    } else {\n      return -exports.ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision);\n    }\n  }\n};\n\nexports.CEILING.MATH = exports.CEILING;\n\nexports.CEILING.PRECISE = exports.CEILING;\n\nexports.COMBIN = function(number, number_chosen) {\n  number = utils.parseNumber(number);\n  number_chosen = utils.parseNumber(number_chosen);\n  if (utils.anyIsError(number, number_chosen)) {\n    return error.value;\n  }\n  return exports.FACT(number) / (exports.FACT(number_chosen) * exports.FACT(number - number_chosen));\n};\n\nexports.COMBINA = function(number, number_chosen) {\n  number = utils.parseNumber(number);\n  number_chosen = utils.parseNumber(number_chosen);\n  if (utils.anyIsError(number, number_chosen)) {\n    return error.value;\n  }\n  return (number === 0 && number_chosen === 0) ? 1 : exports.COMBIN(number + number_chosen - 1, number - 1);\n};\n\nexports.COS = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.cos(number);\n};\n\nexports.COSH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return (Math.exp(number) + Math.exp(-number)) / 2;\n};\n\nexports.COT = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return 1 / Math.tan(number);\n};\n\nexports.COTH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var e2 = Math.exp(2 * number);\n  return (e2 + 1) / (e2 - 1);\n};\n\nexports.CSC = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return 1 / Math.sin(number);\n};\n\nexports.CSCH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return 2 / (Math.exp(number) - Math.exp(-number));\n};\n\nexports.DECIMAL = function(number, radix) {\n  if (arguments.length < 1) {\n    return error.value;\n  }\n\n  return parseInt(number, radix);\n};\n\nexports.DEGREES = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return number * 180 / Math.PI;\n};\n\nexports.EVEN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return exports.CEILING(number, -2, -1);\n};\n\nexports.EXP = function(number) {\n  if (arguments.length < 1) {\n    return error.na;\n  }\n  if (typeof number !== 'number' || arguments.length > 1) {\n    return error.error;\n  }\n\n  number = Math.exp(number);\n\n  return number;\n};\n\nvar MEMOIZED_FACT = [];\nexports.FACT = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var n = Math.floor(number);\n  if (n === 0 || n === 1) {\n    return 1;\n  } else if (MEMOIZED_FACT[n] > 0) {\n    return MEMOIZED_FACT[n];\n  } else {\n    MEMOIZED_FACT[n] = exports.FACT(n - 1) * n;\n    return MEMOIZED_FACT[n];\n  }\n};\n\nexports.FACTDOUBLE = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var n = Math.floor(number);\n  if (n <= 0) {\n    return 1;\n  } else {\n    return n * exports.FACTDOUBLE(n - 2);\n  }\n};\n\nexports.FLOOR = function(number, significance) {\n  number = utils.parseNumber(number);\n  significance = utils.parseNumber(significance);\n  if (utils.anyIsError(number, significance)) {\n    return error.value;\n  }\n  if (significance === 0) {\n    return 0;\n  }\n\n  if (!(number > 0 && significance > 0) && !(number < 0 && significance < 0)) {\n    return error.num;\n  }\n\n  significance = Math.abs(significance);\n  var precision = -Math.floor(Math.log(significance) / Math.log(10));\n  if (number >= 0) {\n    return exports.ROUND(Math.floor(number / significance) * significance, precision);\n  } else {\n    return -exports.ROUND(Math.ceil(Math.abs(number) / significance), precision);\n  }\n};\n\n//TODO: Verify\nexports.FLOOR.MATH = function(number, significance, mode) {\n  significance = (significance === undefined) ? 1 : significance;\n  mode = (mode === undefined) ? 0 : mode;\n\n  number = utils.parseNumber(number);\n  significance = utils.parseNumber(significance);\n  mode = utils.parseNumber(mode);\n  if (utils.anyIsError(number, significance, mode)) {\n    return error.value;\n  }\n  if (significance === 0) {\n    return 0;\n  }\n\n  significance = significance ? Math.abs(significance) : 1;\n  var precision = -Math.floor(Math.log(significance) / Math.log(10));\n  if (number >= 0) {\n    return exports.ROUND(Math.floor(number / significance) * significance, precision);\n  } else if (mode === 0 || mode === undefined) {\n    return -exports.ROUND(Math.ceil(Math.abs(number) / significance) * significance, precision);\n  }\n  return -exports.ROUND(Math.floor(Math.abs(number) / significance) * significance, precision);\n};\n\n// Deprecated\nexports.FLOOR.PRECISE = exports.FLOOR.MATH;\n\n// adapted http://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\nexports.GCD = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var n = range.length;\n  var r0 = range[0];\n  var x = r0 < 0 ? -r0 : r0;\n  for (var i = 1; i < n; i++) {\n    var ri = range[i];\n    var y = ri < 0 ? -ri : ri;\n    while (x && y) {\n      if (x > y) {\n        x %= y;\n      } else {\n        y %= x;\n      }\n    }\n    x += y;\n  }\n  return x;\n};\n\n\nexports.INT = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.floor(number);\n};\n\n//TODO: verify\nexports.ISO = {\n  CEILING: exports.CEILING\n};\n\nexports.LCM = function() {\n  // Credits: Jonas Raoni Soares Silva\n  var o = utils.parseNumberArray(utils.flatten(arguments));\n  if (o instanceof Error) {\n    return o;\n  }\n  for (var i, j, n, d, r = 1;\n       (n = o.pop()) !== undefined;) {\n    while (n > 1) {\n      if (n % 2) {\n        for (i = 3, j = Math.floor(Math.sqrt(n)); i <= j && n % i; i += 2) {\n          //empty\n        }\n        d = (i <= j) ? i : n;\n      } else {\n        d = 2;\n      }\n      for (n /= d, r *= d, i = o.length; i;\n           (o[--i] % d) === 0 && (o[i] /= d) === 1 && o.splice(i, 1)) {\n        //empty\n      }\n    }\n  }\n  return r;\n};\n\nexports.LN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.log(number);\n};\n\nexports.LN10 = function() {\n  return Math.log(10);\n};\n\nexports.LN2 = function() {\n  return Math.log(2);\n};\n\nexports.LOG10E = function() {\n  return Math.LOG10E;\n};\n\nexports.LOG2E = function() {\n  return Math.LOG2E;\n};\n\nexports.LOG = function(number, base) {\n  number = utils.parseNumber(number);\n  base = utils.parseNumber(base);\n  if (utils.anyIsError(number, base)) {\n    return error.value;\n  }\n  base = (base === undefined) ? 10 : base;\n  return Math.log(number) / Math.log(base);\n};\n\nexports.LOG10 = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.log(number) / Math.log(10);\n};\n\nexports.MOD = function(dividend, divisor) {\n  dividend = utils.parseNumber(dividend);\n  divisor = utils.parseNumber(divisor);\n  if (utils.anyIsError(dividend, divisor)) {\n    return error.value;\n  }\n  if (divisor === 0) {\n    return error.div0;\n  }\n  var modulus = Math.abs(dividend % divisor);\n  return (divisor > 0) ? modulus : -modulus;\n};\n\nexports.MROUND = function(number, multiple) {\n  number = utils.parseNumber(number);\n  multiple = utils.parseNumber(multiple);\n  if (utils.anyIsError(number, multiple)) {\n    return error.value;\n  }\n  if (number * multiple < 0) {\n    return error.num;\n  }\n\n  return Math.round(number / multiple) * multiple;\n};\n\nexports.MULTINOMIAL = function() {\n  var args = utils.parseNumberArray(utils.flatten(arguments));\n  if (args instanceof Error) {\n    return args;\n  }\n  var sum = 0;\n  var divisor = 1;\n  for (var i = 0; i < args.length; i++) {\n    sum += args[i];\n    divisor *= exports.FACT(args[i]);\n  }\n  return exports.FACT(sum) / divisor;\n};\n\nexports.ODD = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var temp = Math.ceil(Math.abs(number));\n  temp = (temp & 1) ? temp : temp + 1;\n  return (number > 0) ? temp : -temp;\n};\n\nexports.PI = function() {\n  return Math.PI;\n};\n\nexports.E = function() {\n  return Math.E;\n};\n\nexports.POWER = function(number, power) {\n  number = utils.parseNumber(number);\n  power = utils.parseNumber(power);\n  if (utils.anyIsError(number, power)) {\n    return error.value;\n  }\n  var result = Math.pow(number, power);\n  if (isNaN(result)) {\n    return error.num;\n  }\n\n  return result;\n};\n\nexports.PRODUCT = function() {\n  var args = utils.parseNumberArray(utils.flatten(arguments));\n  if (args instanceof Error) {\n    return args;\n  }\n  var result = 1;\n  for (var i = 0; i < args.length; i++) {\n    result *= args[i];\n  }\n  return result;\n};\n\nexports.QUOTIENT = function(numerator, denominator) {\n  numerator = utils.parseNumber(numerator);\n  denominator = utils.parseNumber(denominator);\n  if (utils.anyIsError(numerator, denominator)) {\n    return error.value;\n  }\n  return parseInt(numerator / denominator, 10);\n};\n\nexports.RADIANS = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return number * Math.PI / 180;\n};\n\nexports.RAND = function() {\n  return Math.random();\n};\n\nexports.RANDBETWEEN = function(bottom, top) {\n  bottom = utils.parseNumber(bottom);\n  top = utils.parseNumber(top);\n  if (utils.anyIsError(bottom, top)) {\n    return error.value;\n  }\n  // Creative Commons Attribution 3.0 License\n  // Copyright (c) 2012 eqcode\n  return bottom + Math.ceil((top - bottom + 1) * Math.random()) - 1;\n};\n\n// TODO\nexports.ROMAN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  // The MIT License\n  // Copyright (c) 2008 Steven Levithan\n  var digits = String(number).split('');\n  var key = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];\n  var roman = '';\n  var i = 3;\n  while (i--) {\n    roman = (key[+digits.pop() + (i * 10)] || '') + roman;\n  }\n  return new Array(+digits.join('') + 1).join('M') + roman;\n};\n\nexports.ROUND = function(number, digits) {\n  number = utils.parseNumber(number);\n  digits = utils.parseNumber(digits);\n  if (utils.anyIsError(number, digits)) {\n    return error.value;\n  }\n  return Math.round(number * Math.pow(10, digits)) / Math.pow(10, digits);\n};\n\nexports.ROUNDDOWN = function(number, digits) {\n  number = utils.parseNumber(number);\n  digits = utils.parseNumber(digits);\n  if (utils.anyIsError(number, digits)) {\n    return error.value;\n  }\n  var sign = (number > 0) ? 1 : -1;\n  return sign * (Math.floor(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\n};\n\nexports.ROUNDUP = function(number, digits) {\n  number = utils.parseNumber(number);\n  digits = utils.parseNumber(digits);\n  if (utils.anyIsError(number, digits)) {\n    return error.value;\n  }\n  var sign = (number > 0) ? 1 : -1;\n  return sign * (Math.ceil(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\n};\n\nexports.SEC = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return 1 / Math.cos(number);\n};\n\nexports.SECH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return 2 / (Math.exp(number) + Math.exp(-number));\n};\n\nexports.SERIESSUM = function(x, n, m, coefficients) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  m = utils.parseNumber(m);\n  coefficients = utils.parseNumberArray(coefficients);\n  if (utils.anyIsError(x, n, m, coefficients)) {\n    return error.value;\n  }\n  var result = coefficients[0] * Math.pow(x, n);\n  for (var i = 1; i < coefficients.length; i++) {\n    result += coefficients[i] * Math.pow(x, n + i * m);\n  }\n  return result;\n};\n\nexports.SIGN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  if (number < 0) {\n    return -1;\n  } else if (number === 0) {\n    return 0;\n  } else {\n    return 1;\n  }\n};\n\nexports.SIN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.sin(number);\n};\n\nexports.SINH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return (Math.exp(number) - Math.exp(-number)) / 2;\n};\n\nexports.SQRT = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  if (number < 0) {\n    return error.num;\n  }\n  return Math.sqrt(number);\n};\n\nexports.SQRTPI = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.sqrt(number * Math.PI);\n};\n\nexports.SQRT1_2 = function() {\n  return 1 / Math.sqrt(2);\n};\n\nexports.SQRT2 = function() {\n  return Math.sqrt(2);\n};\n\nexports.SUBTOTAL = function(function_code, ref1) {\n  function_code = utils.parseNumber(function_code);\n  if (function_code instanceof Error) {\n    return function_code;\n  }\n  switch (function_code) {\n    case 1:\n      return statistical.AVERAGE(ref1);\n    case 2:\n      return statistical.COUNT(ref1);\n    case 3:\n      return statistical.COUNTA(ref1);\n    case 4:\n      return statistical.MAX(ref1);\n    case 5:\n      return statistical.MIN(ref1);\n    case 6:\n      return exports.PRODUCT(ref1);\n    case 7:\n      return statistical.STDEV.S(ref1);\n    case 8:\n      return statistical.STDEV.P(ref1);\n    case 9:\n      return exports.SUM(ref1);\n    case 10:\n      return statistical.VAR.S(ref1);\n    case 11:\n      return statistical.VAR.P(ref1);\n    // no hidden values for us\n    case 101:\n      return statistical.AVERAGE(ref1);\n    case 102:\n      return statistical.COUNT(ref1);\n    case 103:\n      return statistical.COUNTA(ref1);\n    case 104:\n      return statistical.MAX(ref1);\n    case 105:\n      return statistical.MIN(ref1);\n    case 106:\n      return exports.PRODUCT(ref1);\n    case 107:\n      return statistical.STDEV.S(ref1);\n    case 108:\n      return statistical.STDEV.P(ref1);\n    case 109:\n      return exports.SUM(ref1);\n    case 110:\n      return statistical.VAR.S(ref1);\n    case 111:\n      return statistical.VAR.P(ref1);\n\n  }\n};\n\nexports.ADD = function (num1, num2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  num1 = utils.parseNumber(num1);\n  num2 = utils.parseNumber(num2);\n  if (utils.anyIsError(num1, num2)) {\n    return error.value;\n  }\n\n  return num1 + num2;\n};\n\nexports.MINUS = function (num1, num2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  num1 = utils.parseNumber(num1);\n  num2 = utils.parseNumber(num2);\n  if (utils.anyIsError(num1, num2)) {\n    return error.value;\n  }\n\n  return num1 - num2;\n};\n\nexports.DIVIDE = function (dividend, divisor) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  dividend = utils.parseNumber(dividend);\n  divisor = utils.parseNumber(divisor);\n  if (utils.anyIsError(dividend, divisor)) {\n    return error.value;\n  }\n\n  if (divisor === 0) {\n    return error.div0;\n  }\n\n  return dividend / divisor;\n};\n\nexports.MULTIPLY = function (factor1, factor2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  factor1 = utils.parseNumber(factor1);\n  factor2 = utils.parseNumber(factor2);\n  if (utils.anyIsError(factor1, factor2)) {\n    return error.value;\n  }\n\n  return factor1 * factor2;\n};\n\nexports.GTE = function (num1, num2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  num1 = utils.parseNumber(num1);\n  num2 = utils.parseNumber(num2);\n  if (utils.anyIsError(num1, num2)) {\n    return error.error;\n  }\n\n  return num1 >= num2;\n};\n\nexports.LT = function (num1, num2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  num1 = utils.parseNumber(num1);\n  num2 = utils.parseNumber(num2);\n  if (utils.anyIsError(num1, num2)) {\n    return error.error;\n  }\n\n  return num1 < num2;\n};\n\n\nexports.LTE = function (num1, num2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  num1 = utils.parseNumber(num1);\n  num2 = utils.parseNumber(num2);\n  if (utils.anyIsError(num1, num2)) {\n    return error.error;\n  }\n\n  return num1 <= num2;\n};\n\nexports.EQ = function (value1, value2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  return value1 === value2;\n};\n\nexports.NE = function (value1, value2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  return value1 !== value2;\n};\n\nexports.POW = function (base, exponent) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  base = utils.parseNumber(base);\n  exponent = utils.parseNumber(exponent);\n  if (utils.anyIsError(base, exponent)) {\n    return error.error;\n  }\n\n  return exports.POWER(base, exponent);\n};\n\nexports.SUM = function() {\n  var result = 0;\n\n  utils.arrayEach(utils.argsToArray(arguments), function(value) {\n    if (typeof value === 'number') {\n      result += value;\n\n    } else if (typeof value === 'string') {\n      var parsed = parseFloat(value);\n\n      !isNaN(parsed) && (result += parsed);\n\n    } else if (Array.isArray(value)) {\n      result += exports.SUM.apply(null, value);\n    }\n  });\n\n  return result;\n};\n\nexports.SUMIF = function(range, criteria) {\n  range = utils.parseNumberArray(utils.flatten(range));\n\n  if (range instanceof Error) {\n    return range;\n  }\n  var result = 0;\n  var isWildcard = criteria === void 0 || criteria === '*';\n  var tokenizedCriteria = isWildcard ? null : evalExpression.parse(criteria + '');\n\n  for (var i = 0; i < range.length; i++) {\n    var value = range[i];\n\n    if (isWildcard) {\n      result += value;\n    } else {\n      var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n      result += (evalExpression.compute(tokens) ? value : 0);\n    }\n  }\n\n  return result;\n};\n\nexports.SUMIFS = function() {\n  var args = utils.argsToArray(arguments);\n  var range = utils.parseNumberArray(utils.flatten(args.shift()));\n\n  if (range instanceof Error) {\n    return range;\n  }\n  var criterias = args;\n  var n_range_elements = range.length;\n  var criteriaLength = criterias.length;\n  var result = 0;\n\n  for (var i = 0; i < n_range_elements; i++) {\n    var value = range[i];\n    var isMeetCondition = false;\n\n    for (var j = 0; j < criteriaLength; j++) {\n      var criteria = criterias[j];\n      var isWildcard = criteria === void 0 || criteria === '*';\n      var computedResult = false;\n\n      if (isWildcard) {\n        computedResult = true;\n      } else {\n        var tokenizedCriteria = evalExpression.parse(criteria + '');\n        var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n        computedResult = evalExpression.compute(tokens);\n      }\n\n      // Criterias are calculated as AND so any `false` breakes the loop as unmeet condition\n      if (!computedResult) {\n        isMeetCondition = false;\n        break;\n      }\n\n      isMeetCondition = true;\n    }\n\n    if (isMeetCondition) {\n      result += value;\n    }\n  }\n\n  return result;\n};\n\nexports.SUMPRODUCT = function() {\n  if (!arguments || arguments.length === 0) {\n    return error.value;\n  }\n  var arrays = arguments.length + 1;\n  var result = 0;\n  var product;\n  var k;\n  var _i;\n  var _ij;\n  for (var i = 0; i < arguments[0].length; i++) {\n    if (!(arguments[0][i] instanceof Array)) {\n      product = 1;\n      for (k = 1; k < arrays; k++) {\n        _i = utils.parseNumber(arguments[k - 1][i]);\n        if (_i instanceof Error) {\n          return _i;\n        }\n        product *= _i;\n      }\n      result += product;\n    } else {\n      for (var j = 0; j < arguments[0][i].length; j++) {\n        product = 1;\n        for (k = 1; k < arrays; k++) {\n          _ij = utils.parseNumber(arguments[k - 1][i][j]);\n          if (_ij instanceof Error) {\n            return _ij;\n          }\n          product *= _ij;\n        }\n        result += product;\n      }\n    }\n  }\n  return result;\n};\n\nexports.SUMSQ = function() {\n  var numbers = utils.parseNumberArray(utils.flatten(arguments));\n  if (numbers instanceof Error) {\n    return numbers;\n  }\n  var result = 0;\n  var length = numbers.length;\n  for (var i = 0; i < length; i++) {\n    result += (information.ISNUMBER(numbers[i])) ? numbers[i] * numbers[i] : 0;\n  }\n  return result;\n};\n\nexports.SUMX2MY2 = function(array_x, array_y) {\n  array_x = utils.parseNumberArray(utils.flatten(array_x));\n  array_y = utils.parseNumberArray(utils.flatten(array_y));\n  if (utils.anyIsError(array_x, array_y)) {\n    return error.value;\n  }\n  var result = 0;\n  for (var i = 0; i < array_x.length; i++) {\n    result += array_x[i] * array_x[i] - array_y[i] * array_y[i];\n  }\n  return result;\n};\n\nexports.SUMX2PY2 = function(array_x, array_y) {\n  array_x = utils.parseNumberArray(utils.flatten(array_x));\n  array_y = utils.parseNumberArray(utils.flatten(array_y));\n  if (utils.anyIsError(array_x, array_y)) {\n    return error.value;\n  }\n  var result = 0;\n  array_x = utils.parseNumberArray(utils.flatten(array_x));\n  array_y = utils.parseNumberArray(utils.flatten(array_y));\n  for (var i = 0; i < array_x.length; i++) {\n    result += array_x[i] * array_x[i] + array_y[i] * array_y[i];\n  }\n  return result;\n};\n\nexports.SUMXMY2 = function(array_x, array_y) {\n  array_x = utils.parseNumberArray(utils.flatten(array_x));\n  array_y = utils.parseNumberArray(utils.flatten(array_y));\n  if (utils.anyIsError(array_x, array_y)) {\n    return error.value;\n  }\n  var result = 0;\n  array_x = utils.flatten(array_x);\n  array_y = utils.flatten(array_y);\n  for (var i = 0; i < array_x.length; i++) {\n    result += Math.pow(array_x[i] - array_y[i], 2);\n  }\n  return result;\n};\n\nexports.TAN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return Math.tan(number);\n};\n\nexports.TANH = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  var e2 = Math.exp(2 * number);\n  return (e2 - 1) / (e2 + 1);\n};\n\nexports.TRUNC = function(number, digits) {\n  digits = (digits === undefined) ? 0 : digits;\n  number = utils.parseNumber(number);\n  digits = utils.parseNumber(digits);\n  if (utils.anyIsError(number, digits)) {\n    return error.value;\n  }\n  var sign = (number > 0) ? 1 : -1;\n  return sign * (Math.floor(Math.abs(number) * Math.pow(10, digits))) / Math.pow(10, digits);\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar _a = require('./util/constants'), DEFAULT_NQ_LEVEL_LOCAL = _a.DEFAULT_NQ_LEVEL_LOCAL, DEFAULT_NQ_LEVEL_REMOTE = _a.DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL = _a.MAX_NQ_LEVEL;\nvar inRange = require('./util').inRange;\n/**\n * {@link NetworkQualityConfigurationImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements NetworkQualityConfiguration\n * @property {?NetworkQualityVerbosity} local - Verbosity level for {@link LocalParticipant}\n * @property {?NetworkQualityVerbosity} remote - Verbosity level for {@link RemoteParticipant}s\n */\nvar NetworkQualityConfigurationImpl = /** @class */ (function (_super) {\n    __extends(NetworkQualityConfigurationImpl, _super);\n    /**\n     * Construct an {@link NetworkQualityConfigurationImpl}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - Initial {@link NetworkQualityConfiguration}\n     */\n    function NetworkQualityConfigurationImpl(networkQualityConfiguration) {\n        var _this = _super.call(this) || this;\n        networkQualityConfiguration = Object.assign({\n            local: DEFAULT_NQ_LEVEL_LOCAL,\n            remote: DEFAULT_NQ_LEVEL_REMOTE\n        }, networkQualityConfiguration);\n        Object.defineProperties(_this, {\n            local: {\n                value: inRange(networkQualityConfiguration.local, DEFAULT_NQ_LEVEL_LOCAL, MAX_NQ_LEVEL)\n                    ? networkQualityConfiguration.local\n                    : DEFAULT_NQ_LEVEL_LOCAL,\n                writable: true\n            },\n            remote: {\n                value: inRange(networkQualityConfiguration.remote, DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL)\n                    ? networkQualityConfiguration.remote\n                    : DEFAULT_NQ_LEVEL_REMOTE,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Update the verbosity levels for network quality information for\n     * {@link LocalParticipant} and {@link RemoteParticipant} with those\n     * in the given {@link NetworkQualityConfiguration}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new {@link NetworkQualityConfiguration}\n     */\n    NetworkQualityConfigurationImpl.prototype.update = function (networkQualityConfiguration) {\n        var _this = this;\n        networkQualityConfiguration = Object.assign({\n            local: this.local,\n            remote: this.remote\n        }, networkQualityConfiguration);\n        [\n            ['local', DEFAULT_NQ_LEVEL_LOCAL, 3],\n            ['remote', DEFAULT_NQ_LEVEL_REMOTE, 3]\n        ].forEach(function (_a) {\n            var _b = __read(_a, 3), localOrRemote = _b[0], min = _b[1], max = _b[2];\n            _this[localOrRemote] = typeof networkQualityConfiguration[localOrRemote] === 'number'\n                && inRange(networkQualityConfiguration[localOrRemote], min, max)\n                ? networkQualityConfiguration[localOrRemote]\n                : min;\n        });\n    };\n    return NetworkQualityConfigurationImpl;\n}(EventEmitter));\nmodule.exports = NetworkQualityConfigurationImpl;\n//# sourceMappingURL=networkqualityconfiguration.js.map","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n  toISOString: toISOString\n});\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/ecma262/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","'use strict';\nvar parent = require('../../stable/number');\n\nmodule.exports = parent;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","'use strict';\nvar call = require('../internals/function-call');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar anObject = require('../internals/an-object');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getMethod = require('../internals/get-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\n\nmodule.exports = function (it, usingIterator) {\n  var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator;\n  return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it)));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module url\n */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar urlMatcher_1 = require(\"./urlMatcher\");\nvar param_1 = require(\"../params/param\");\nvar paramTypes_1 = require(\"../params/paramTypes\");\n/**\n * Factory for [[UrlMatcher]] instances.\n *\n * The factory is available to ng1 services as\n * `$urlMatcherFactory` or ng1 providers as `$urlMatcherFactoryProvider`.\n */\nvar UrlMatcherFactory = /** @class */ (function () {\n    function UrlMatcherFactory() {\n        var _this = this;\n        /** @hidden */ this.paramTypes = new paramTypes_1.ParamTypes();\n        /** @hidden */ this._isCaseInsensitive = false;\n        /** @hidden */ this._isStrictMode = true;\n        /** @hidden */ this._defaultSquashPolicy = false;\n        /** @internalapi Creates a new [[Param]] for a given location (DefType) */\n        this.paramFactory = {\n            /** Creates a new [[Param]] from a CONFIG block */\n            fromConfig: function (id, type, config) {\n                return new param_1.Param(id, type, config, param_1.DefType.CONFIG, _this);\n            },\n            /** Creates a new [[Param]] from a url PATH */\n            fromPath: function (id, type, config) {\n                return new param_1.Param(id, type, config, param_1.DefType.PATH, _this);\n            },\n            /** Creates a new [[Param]] from a url SEARCH */\n            fromSearch: function (id, type, config) {\n                return new param_1.Param(id, type, config, param_1.DefType.SEARCH, _this);\n            },\n        };\n        /** @hidden */\n        this._getConfig = function (config) {\n            return common_1.extend({ strict: _this._isStrictMode, caseInsensitive: _this._isCaseInsensitive }, config);\n        };\n        common_1.extend(this, { UrlMatcher: urlMatcher_1.UrlMatcher, Param: param_1.Param });\n    }\n    /** @inheritdoc */\n    UrlMatcherFactory.prototype.caseInsensitive = function (value) {\n        return this._isCaseInsensitive = predicates_1.isDefined(value) ? value : this._isCaseInsensitive;\n    };\n    /** @inheritdoc */\n    UrlMatcherFactory.prototype.strictMode = function (value) {\n        return this._isStrictMode = predicates_1.isDefined(value) ? value : this._isStrictMode;\n    };\n    /** @inheritdoc */\n    UrlMatcherFactory.prototype.defaultSquashPolicy = function (value) {\n        if (predicates_1.isDefined(value) && value !== true && value !== false && !predicates_1.isString(value))\n            throw new Error(\"Invalid squash policy: \" + value + \". Valid policies: false, true, arbitrary-string\");\n        return this._defaultSquashPolicy = predicates_1.isDefined(value) ? value : this._defaultSquashPolicy;\n    };\n    /**\n     * Creates a [[UrlMatcher]] for the specified pattern.\n     *\n     * @param pattern  The URL pattern.\n     * @param config  The config object hash.\n     * @returns The UrlMatcher.\n     */\n    UrlMatcherFactory.prototype.compile = function (pattern, config) {\n        return new urlMatcher_1.UrlMatcher(pattern, this.paramTypes, this.paramFactory, this._getConfig(config));\n    };\n    /**\n     * Returns true if the specified object is a [[UrlMatcher]], or false otherwise.\n     *\n     * @param object  The object to perform the type check against.\n     * @returns `true` if the object matches the `UrlMatcher` interface, by\n     *          implementing all the same methods.\n     */\n    UrlMatcherFactory.prototype.isMatcher = function (object) {\n        // TODO: typeof?\n        if (!predicates_1.isObject(object))\n            return false;\n        var result = true;\n        common_1.forEach(urlMatcher_1.UrlMatcher.prototype, function (val, name) {\n            if (predicates_1.isFunction(val))\n                result = result && (predicates_1.isDefined(object[name]) && predicates_1.isFunction(object[name]));\n        });\n        return result;\n    };\n    /**\n     * Creates and registers a custom [[ParamType]] object\n     *\n     * A [[ParamType]] can be used to generate URLs with typed parameters.\n     *\n     * @param name  The type name.\n     * @param definition The type definition. See [[ParamTypeDefinition]] for information on the values accepted.\n     * @param definitionFn A function that is injected before the app runtime starts.\n     *        The result of this function should be a [[ParamTypeDefinition]].\n     *        The result is merged into the existing `definition`.\n     *        See [[ParamType]] for information on the values accepted.\n     *\n     * @returns - if a type was registered: the [[UrlMatcherFactory]]\n     *   - if only the `name` parameter was specified: the currently registered [[ParamType]] object, or undefined\n     *\n     * Note: Register custom types *before using them* in a state definition.\n     *\n     * See [[ParamTypeDefinition]] for examples\n     */\n    UrlMatcherFactory.prototype.type = function (name, definition, definitionFn) {\n        var type = this.paramTypes.type(name, definition, definitionFn);\n        return !predicates_1.isDefined(definition) ? type : this;\n    };\n    /** @hidden */\n    UrlMatcherFactory.prototype.$get = function () {\n        this.paramTypes.enqueue = false;\n        this.paramTypes._flushTypeQueue();\n        return this;\n    };\n    /** @internalapi */\n    UrlMatcherFactory.prototype.dispose = function () {\n        this.paramTypes.dispose();\n    };\n    return UrlMatcherFactory;\n}());\nexports.UrlMatcherFactory = UrlMatcherFactory;\n//# sourceMappingURL=urlMatcherFactory.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module state */ /** for typedoc */\nvar predicates_1 = require(\"../common/predicates\");\nvar common_1 = require(\"../common/common\");\nvar StateMatcher = /** @class */ (function () {\n    function StateMatcher(_states) {\n        this._states = _states;\n    }\n    StateMatcher.prototype.isRelative = function (stateName) {\n        stateName = stateName || '';\n        return stateName.indexOf('.') === 0 || stateName.indexOf('^') === 0;\n    };\n    StateMatcher.prototype.find = function (stateOrName, base, matchGlob) {\n        if (matchGlob === void 0) { matchGlob = true; }\n        if (!stateOrName && stateOrName !== '')\n            return undefined;\n        var isStr = predicates_1.isString(stateOrName);\n        var name = isStr ? stateOrName : stateOrName.name;\n        if (this.isRelative(name))\n            name = this.resolvePath(name, base);\n        var state = this._states[name];\n        if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n            return state;\n        }\n        else if (isStr && matchGlob) {\n            var _states = common_1.values(this._states);\n            var matches = _states.filter(function (_state) {\n                return _state.__stateObjectCache.nameGlob &&\n                    _state.__stateObjectCache.nameGlob.matches(name);\n            });\n            if (matches.length > 1) {\n                // tslint:disable-next-line:no-console\n                console.log(\"stateMatcher.find: Found multiple matches for \" + name + \" using glob: \", matches.map(function (match) { return match.name; }));\n            }\n            return matches[0];\n        }\n        return undefined;\n    };\n    StateMatcher.prototype.resolvePath = function (name, base) {\n        if (!base)\n            throw new Error(\"No reference point given for path '\" + name + \"'\");\n        var baseState = this.find(base);\n        var splitName = name.split('.');\n        var pathLength = splitName.length;\n        var i = 0, current = baseState;\n        for (; i < pathLength; i++) {\n            if (splitName[i] === '' && i === 0) {\n                current = baseState;\n                continue;\n            }\n            if (splitName[i] === '^') {\n                if (!current.parent)\n                    throw new Error(\"Path '\" + name + \"' not valid for state '\" + baseState.name + \"'\");\n                current = current.parent;\n                continue;\n            }\n            break;\n        }\n        var relName = splitName.slice(i).join('.');\n        return current.name + (current.name && relName ? '.' : '') + relName;\n    };\n    return StateMatcher;\n}());\nexports.StateMatcher = StateMatcher;\n//# sourceMappingURL=stateMatcher.js.map","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  var dayOfMonth = date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/*! tether 1.4.0 */\n\n(function(root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory(require, exports, module);\n  } else {\n    root.Tether = factory();\n  }\n}(this, function(require, exports, module) {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar TetherBase = undefined;\nif (typeof TetherBase === 'undefined') {\n  TetherBase = { modules: [] };\n}\n\nvar zeroElement = null;\n\n// Same as native getBoundingClientRect, except it takes into account parent <frame> offsets\n// if the element lies within a nested document (<frame> or <iframe>-like).\nfunction getActualBoundingClientRect(node) {\n  var boundingRect = node.getBoundingClientRect();\n\n  // The original object returned by getBoundingClientRect is immutable, so we clone it\n  // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9\n  var rect = {};\n  for (var k in boundingRect) {\n    rect[k] = boundingRect[k];\n  }\n\n  if (node.ownerDocument !== document) {\n    var _frameElement = node.ownerDocument.defaultView.frameElement;\n    if (_frameElement) {\n      var frameRect = getActualBoundingClientRect(_frameElement);\n      rect.top += frameRect.top;\n      rect.bottom += frameRect.top;\n      rect.left += frameRect.left;\n      rect.right += frameRect.left;\n    }\n  }\n\n  return rect;\n}\n\nfunction getScrollParents(el) {\n  // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n  var computedStyle = getComputedStyle(el) || {};\n  var position = computedStyle.position;\n  var parents = [];\n\n  if (position === 'fixed') {\n    return [el];\n  }\n\n  var parent = el;\n  while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {\n    var style = undefined;\n    try {\n      style = getComputedStyle(parent);\n    } catch (err) {}\n\n    if (typeof style === 'undefined' || style === null) {\n      parents.push(parent);\n      return parents;\n    }\n\n    var _style = style;\n    var overflow = _style.overflow;\n    var overflowX = _style.overflowX;\n    var overflowY = _style.overflowY;\n\n    if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n      if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {\n        parents.push(parent);\n      }\n    }\n  }\n\n  parents.push(el.ownerDocument.body);\n\n  // If the node is within a frame, account for the parent window scroll\n  if (el.ownerDocument !== document) {\n    parents.push(el.ownerDocument.defaultView);\n  }\n\n  return parents;\n}\n\nvar uniqueId = (function () {\n  var id = 0;\n  return function () {\n    return ++id;\n  };\n})();\n\nvar zeroPosCache = {};\nvar getOrigin = function getOrigin() {\n  // getBoundingClientRect is unfortunately too accurate.  It introduces a pixel or two of\n  // jitter as the user scrolls that messes with our ability to detect if two positions\n  // are equivilant or not.  We place an element at the top left of the page that will\n  // get the same jitter, so we can cancel the two out.\n  var node = zeroElement;\n  if (!node || !document.body.contains(node)) {\n    node = document.createElement('div');\n    node.setAttribute('data-tether-id', uniqueId());\n    extend(node.style, {\n      top: 0,\n      left: 0,\n      position: 'absolute'\n    });\n\n    document.body.appendChild(node);\n\n    zeroElement = node;\n  }\n\n  var id = node.getAttribute('data-tether-id');\n  if (typeof zeroPosCache[id] === 'undefined') {\n    zeroPosCache[id] = getActualBoundingClientRect(node);\n\n    // Clear the cache when this position call is done\n    defer(function () {\n      delete zeroPosCache[id];\n    });\n  }\n\n  return zeroPosCache[id];\n};\n\nfunction removeUtilElements() {\n  if (zeroElement) {\n    document.body.removeChild(zeroElement);\n  }\n  zeroElement = null;\n};\n\nfunction getBounds(el) {\n  var doc = undefined;\n  if (el === document) {\n    doc = document;\n    el = document.documentElement;\n  } else {\n    doc = el.ownerDocument;\n  }\n\n  var docEl = doc.documentElement;\n\n  var box = getActualBoundingClientRect(el);\n\n  var origin = getOrigin();\n\n  box.top -= origin.top;\n  box.left -= origin.left;\n\n  if (typeof box.width === 'undefined') {\n    box.width = document.body.scrollWidth - box.left - box.right;\n  }\n  if (typeof box.height === 'undefined') {\n    box.height = document.body.scrollHeight - box.top - box.bottom;\n  }\n\n  box.top = box.top - docEl.clientTop;\n  box.left = box.left - docEl.clientLeft;\n  box.right = doc.body.clientWidth - box.width - box.left;\n  box.bottom = doc.body.clientHeight - box.height - box.top;\n\n  return box;\n}\n\nfunction getOffsetParent(el) {\n  return el.offsetParent || document.documentElement;\n}\n\nvar _scrollBarSize = null;\nfunction getScrollBarSize() {\n  if (_scrollBarSize) {\n    return _scrollBarSize;\n  }\n  var inner = document.createElement('div');\n  inner.style.width = '100%';\n  inner.style.height = '200px';\n\n  var outer = document.createElement('div');\n  extend(outer.style, {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    pointerEvents: 'none',\n    visibility: 'hidden',\n    width: '200px',\n    height: '150px',\n    overflow: 'hidden'\n  });\n\n  outer.appendChild(inner);\n\n  document.body.appendChild(outer);\n\n  var widthContained = inner.offsetWidth;\n  outer.style.overflow = 'scroll';\n  var widthScroll = inner.offsetWidth;\n\n  if (widthContained === widthScroll) {\n    widthScroll = outer.clientWidth;\n  }\n\n  document.body.removeChild(outer);\n\n  var width = widthContained - widthScroll;\n\n  _scrollBarSize = { width: width, height: width };\n  return _scrollBarSize;\n}\n\nfunction extend() {\n  var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  var args = [];\n\n  Array.prototype.push.apply(args, arguments);\n\n  args.slice(1).forEach(function (obj) {\n    if (obj) {\n      for (var key in obj) {\n        if (({}).hasOwnProperty.call(obj, key)) {\n          out[key] = obj[key];\n        }\n      }\n    }\n  });\n\n  return out;\n}\n\nfunction removeClass(el, name) {\n  if (typeof el.classList !== 'undefined') {\n    name.split(' ').forEach(function (cls) {\n      if (cls.trim()) {\n        el.classList.remove(cls);\n      }\n    });\n  } else {\n    var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');\n    var className = getClassName(el).replace(regex, ' ');\n    setClassName(el, className);\n  }\n}\n\nfunction addClass(el, name) {\n  if (typeof el.classList !== 'undefined') {\n    name.split(' ').forEach(function (cls) {\n      if (cls.trim()) {\n        el.classList.add(cls);\n      }\n    });\n  } else {\n    removeClass(el, name);\n    var cls = getClassName(el) + (' ' + name);\n    setClassName(el, cls);\n  }\n}\n\nfunction hasClass(el, name) {\n  if (typeof el.classList !== 'undefined') {\n    return el.classList.contains(name);\n  }\n  var className = getClassName(el);\n  return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);\n}\n\nfunction getClassName(el) {\n  // Can't use just SVGAnimatedString here since nodes within a Frame in IE have\n  // completely separately SVGAnimatedString base classes\n  if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {\n    return el.className.baseVal;\n  }\n  return el.className;\n}\n\nfunction setClassName(el, className) {\n  el.setAttribute('class', className);\n}\n\nfunction updateClasses(el, add, all) {\n  // Of the set of 'all' classes, we need the 'add' classes, and only the\n  // 'add' classes to be set.\n  all.forEach(function (cls) {\n    if (add.indexOf(cls) === -1 && hasClass(el, cls)) {\n      removeClass(el, cls);\n    }\n  });\n\n  add.forEach(function (cls) {\n    if (!hasClass(el, cls)) {\n      addClass(el, cls);\n    }\n  });\n}\n\nvar deferred = [];\n\nvar defer = function defer(fn) {\n  deferred.push(fn);\n};\n\nvar flush = function flush() {\n  var fn = undefined;\n  while (fn = deferred.pop()) {\n    fn();\n  }\n};\n\nvar Evented = (function () {\n  function Evented() {\n    _classCallCheck(this, Evented);\n  }\n\n  _createClass(Evented, [{\n    key: 'on',\n    value: function on(event, handler, ctx) {\n      var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\n\n      if (typeof this.bindings === 'undefined') {\n        this.bindings = {};\n      }\n      if (typeof this.bindings[event] === 'undefined') {\n        this.bindings[event] = [];\n      }\n      this.bindings[event].push({ handler: handler, ctx: ctx, once: once });\n    }\n  }, {\n    key: 'once',\n    value: function once(event, handler, ctx) {\n      this.on(event, handler, ctx, true);\n    }\n  }, {\n    key: 'off',\n    value: function off(event, handler) {\n      if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') {\n        return;\n      }\n\n      if (typeof handler === 'undefined') {\n        delete this.bindings[event];\n      } else {\n        var i = 0;\n        while (i < this.bindings[event].length) {\n          if (this.bindings[event][i].handler === handler) {\n            this.bindings[event].splice(i, 1);\n          } else {\n            ++i;\n          }\n        }\n      }\n    }\n  }, {\n    key: 'trigger',\n    value: function trigger(event) {\n      if (typeof this.bindings !== 'undefined' && this.bindings[event]) {\n        var i = 0;\n\n        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        while (i < this.bindings[event].length) {\n          var _bindings$event$i = this.bindings[event][i];\n          var handler = _bindings$event$i.handler;\n          var ctx = _bindings$event$i.ctx;\n          var once = _bindings$event$i.once;\n\n          var context = ctx;\n          if (typeof context === 'undefined') {\n            context = this;\n          }\n\n          handler.apply(context, args);\n\n          if (once) {\n            this.bindings[event].splice(i, 1);\n          } else {\n            ++i;\n          }\n        }\n      }\n    }\n  }]);\n\n  return Evented;\n})();\n\nTetherBase.Utils = {\n  getActualBoundingClientRect: getActualBoundingClientRect,\n  getScrollParents: getScrollParents,\n  getBounds: getBounds,\n  getOffsetParent: getOffsetParent,\n  extend: extend,\n  addClass: addClass,\n  removeClass: removeClass,\n  hasClass: hasClass,\n  updateClasses: updateClasses,\n  defer: defer,\n  flush: flush,\n  uniqueId: uniqueId,\n  Evented: Evented,\n  getScrollBarSize: getScrollBarSize,\n  removeUtilElements: removeUtilElements\n};\n/* globals TetherBase, performance */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x6, _x7, _x8) { var _again = true; _function: while (_again) { var object = _x6, property = _x7, receiver = _x8; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x6 = parent; _x7 = property; _x8 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nif (typeof TetherBase === 'undefined') {\n  throw new Error('You must include the utils.js file before tether.js');\n}\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getScrollParents = _TetherBase$Utils.getScrollParents;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar getOffsetParent = _TetherBase$Utils.getOffsetParent;\nvar extend = _TetherBase$Utils.extend;\nvar addClass = _TetherBase$Utils.addClass;\nvar removeClass = _TetherBase$Utils.removeClass;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\nvar flush = _TetherBase$Utils.flush;\nvar getScrollBarSize = _TetherBase$Utils.getScrollBarSize;\nvar removeUtilElements = _TetherBase$Utils.removeUtilElements;\n\nfunction within(a, b) {\n  var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];\n\n  return a + diff >= b && b >= a - diff;\n}\n\nvar transformKey = (function () {\n  if (typeof document === 'undefined') {\n    return '';\n  }\n  var el = document.createElement('div');\n\n  var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];\n  for (var i = 0; i < transforms.length; ++i) {\n    var key = transforms[i];\n    if (el.style[key] !== undefined) {\n      return key;\n    }\n  }\n})();\n\nvar tethers = [];\n\nvar position = function position() {\n  tethers.forEach(function (tether) {\n    tether.position(false);\n  });\n  flush();\n};\n\nfunction now() {\n  if (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {\n    return performance.now();\n  }\n  return +new Date();\n}\n\n(function () {\n  var lastCall = null;\n  var lastDuration = null;\n  var pendingTimeout = null;\n\n  var tick = function tick() {\n    if (typeof lastDuration !== 'undefined' && lastDuration > 16) {\n      // We voluntarily throttle ourselves if we can't manage 60fps\n      lastDuration = Math.min(lastDuration - 16, 250);\n\n      // Just in case this is the last event, remember to position just once more\n      pendingTimeout = setTimeout(tick, 250);\n      return;\n    }\n\n    if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {\n      // Some browsers call events a little too frequently, refuse to run more than is reasonable\n      return;\n    }\n\n    if (pendingTimeout != null) {\n      clearTimeout(pendingTimeout);\n      pendingTimeout = null;\n    }\n\n    lastCall = now();\n    position();\n    lastDuration = now() - lastCall;\n  };\n\n  if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {\n    ['resize', 'scroll', 'touchmove'].forEach(function (event) {\n      window.addEventListener(event, tick);\n    });\n  }\n})();\n\nvar MIRROR_LR = {\n  center: 'center',\n  left: 'right',\n  right: 'left'\n};\n\nvar MIRROR_TB = {\n  middle: 'middle',\n  top: 'bottom',\n  bottom: 'top'\n};\n\nvar OFFSET_MAP = {\n  top: 0,\n  left: 0,\n  middle: '50%',\n  center: '50%',\n  bottom: '100%',\n  right: '100%'\n};\n\nvar autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {\n  var left = attachment.left;\n  var top = attachment.top;\n\n  if (left === 'auto') {\n    left = MIRROR_LR[relativeToAttachment.left];\n  }\n\n  if (top === 'auto') {\n    top = MIRROR_TB[relativeToAttachment.top];\n  }\n\n  return { left: left, top: top };\n};\n\nvar attachmentToOffset = function attachmentToOffset(attachment) {\n  var left = attachment.left;\n  var top = attachment.top;\n\n  if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {\n    left = OFFSET_MAP[attachment.left];\n  }\n\n  if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {\n    top = OFFSET_MAP[attachment.top];\n  }\n\n  return { left: left, top: top };\n};\n\nfunction addOffset() {\n  var out = { top: 0, left: 0 };\n\n  for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {\n    offsets[_key] = arguments[_key];\n  }\n\n  offsets.forEach(function (_ref) {\n    var top = _ref.top;\n    var left = _ref.left;\n\n    if (typeof top === 'string') {\n      top = parseFloat(top, 10);\n    }\n    if (typeof left === 'string') {\n      left = parseFloat(left, 10);\n    }\n\n    out.top += top;\n    out.left += left;\n  });\n\n  return out;\n}\n\nfunction offsetToPx(offset, size) {\n  if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {\n    offset.left = parseFloat(offset.left, 10) / 100 * size.width;\n  }\n  if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {\n    offset.top = parseFloat(offset.top, 10) / 100 * size.height;\n  }\n\n  return offset;\n}\n\nvar parseOffset = function parseOffset(value) {\n  var _value$split = value.split(' ');\n\n  var _value$split2 = _slicedToArray(_value$split, 2);\n\n  var top = _value$split2[0];\n  var left = _value$split2[1];\n\n  return { top: top, left: left };\n};\nvar parseAttachment = parseOffset;\n\nvar TetherClass = (function (_Evented) {\n  _inherits(TetherClass, _Evented);\n\n  function TetherClass(options) {\n    var _this = this;\n\n    _classCallCheck(this, TetherClass);\n\n    _get(Object.getPrototypeOf(TetherClass.prototype), 'constructor', this).call(this);\n    this.position = this.position.bind(this);\n\n    tethers.push(this);\n\n    this.history = [];\n\n    this.setOptions(options, false);\n\n    TetherBase.modules.forEach(function (module) {\n      if (typeof module.initialize !== 'undefined') {\n        module.initialize.call(_this);\n      }\n    });\n\n    this.position();\n  }\n\n  _createClass(TetherClass, [{\n    key: 'getClass',\n    value: function getClass() {\n      var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];\n      var classes = this.options.classes;\n\n      if (typeof classes !== 'undefined' && classes[key]) {\n        return this.options.classes[key];\n      } else if (this.options.classPrefix) {\n        return this.options.classPrefix + '-' + key;\n      } else {\n        return key;\n      }\n    }\n  }, {\n    key: 'setOptions',\n    value: function setOptions(options) {\n      var _this2 = this;\n\n      var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n      var defaults = {\n        offset: '0 0',\n        targetOffset: '0 0',\n        targetAttachment: 'auto auto',\n        classPrefix: 'tether'\n      };\n\n      this.options = extend(defaults, options);\n\n      var _options = this.options;\n      var element = _options.element;\n      var target = _options.target;\n      var targetModifier = _options.targetModifier;\n\n      this.element = element;\n      this.target = target;\n      this.targetModifier = targetModifier;\n\n      if (this.target === 'viewport') {\n        this.target = document.body;\n        this.targetModifier = 'visible';\n      } else if (this.target === 'scroll-handle') {\n        this.target = document.body;\n        this.targetModifier = 'scroll-handle';\n      }\n\n      ['element', 'target'].forEach(function (key) {\n        if (typeof _this2[key] === 'undefined') {\n          throw new Error('Tether Error: Both element and target must be defined');\n        }\n\n        if (typeof _this2[key].jquery !== 'undefined') {\n          _this2[key] = _this2[key][0];\n        } else if (typeof _this2[key] === 'string') {\n          _this2[key] = document.querySelector(_this2[key]);\n        }\n      });\n\n      addClass(this.element, this.getClass('element'));\n      if (!(this.options.addTargetClasses === false)) {\n        addClass(this.target, this.getClass('target'));\n      }\n\n      if (!this.options.attachment) {\n        throw new Error('Tether Error: You must provide an attachment');\n      }\n\n      this.targetAttachment = parseAttachment(this.options.targetAttachment);\n      this.attachment = parseAttachment(this.options.attachment);\n      this.offset = parseOffset(this.options.offset);\n      this.targetOffset = parseOffset(this.options.targetOffset);\n\n      if (typeof this.scrollParents !== 'undefined') {\n        this.disable();\n      }\n\n      if (this.targetModifier === 'scroll-handle') {\n        this.scrollParents = [this.target];\n      } else {\n        this.scrollParents = getScrollParents(this.target);\n      }\n\n      if (!(this.options.enabled === false)) {\n        this.enable(pos);\n      }\n    }\n  }, {\n    key: 'getTargetBounds',\n    value: function getTargetBounds() {\n      if (typeof this.targetModifier !== 'undefined') {\n        if (this.targetModifier === 'visible') {\n          if (this.target === document.body) {\n            return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };\n          } else {\n            var bounds = getBounds(this.target);\n\n            var out = {\n              height: bounds.height,\n              width: bounds.width,\n              top: bounds.top,\n              left: bounds.left\n            };\n\n            out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));\n            out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));\n            out.height = Math.min(innerHeight, out.height);\n            out.height -= 2;\n\n            out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));\n            out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));\n            out.width = Math.min(innerWidth, out.width);\n            out.width -= 2;\n\n            if (out.top < pageYOffset) {\n              out.top = pageYOffset;\n            }\n            if (out.left < pageXOffset) {\n              out.left = pageXOffset;\n            }\n\n            return out;\n          }\n        } else if (this.targetModifier === 'scroll-handle') {\n          var bounds = undefined;\n          var target = this.target;\n          if (target === document.body) {\n            target = document.documentElement;\n\n            bounds = {\n              left: pageXOffset,\n              top: pageYOffset,\n              height: innerHeight,\n              width: innerWidth\n            };\n          } else {\n            bounds = getBounds(target);\n          }\n\n          var style = getComputedStyle(target);\n\n          var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;\n\n          var scrollBottom = 0;\n          if (hasBottomScroll) {\n            scrollBottom = 15;\n          }\n\n          var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;\n\n          var out = {\n            width: 15,\n            height: height * 0.975 * (height / target.scrollHeight),\n            left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15\n          };\n\n          var fitAdj = 0;\n          if (height < 408 && this.target === document.body) {\n            fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;\n          }\n\n          if (this.target !== document.body) {\n            out.height = Math.max(out.height, 24);\n          }\n\n          var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);\n          out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);\n\n          if (this.target === document.body) {\n            out.height = Math.max(out.height, 24);\n          }\n\n          return out;\n        }\n      } else {\n        return getBounds(this.target);\n      }\n    }\n  }, {\n    key: 'clearCache',\n    value: function clearCache() {\n      this._cache = {};\n    }\n  }, {\n    key: 'cache',\n    value: function cache(k, getter) {\n      // More than one module will often need the same DOM info, so\n      // we keep a cache which is cleared on each position call\n      if (typeof this._cache === 'undefined') {\n        this._cache = {};\n      }\n\n      if (typeof this._cache[k] === 'undefined') {\n        this._cache[k] = getter.call(this);\n      }\n\n      return this._cache[k];\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var _this3 = this;\n\n      var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n      if (!(this.options.addTargetClasses === false)) {\n        addClass(this.target, this.getClass('enabled'));\n      }\n      addClass(this.element, this.getClass('enabled'));\n      this.enabled = true;\n\n      this.scrollParents.forEach(function (parent) {\n        if (parent !== _this3.target.ownerDocument) {\n          parent.addEventListener('scroll', _this3.position);\n        }\n      });\n\n      if (pos) {\n        this.position();\n      }\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      var _this4 = this;\n\n      removeClass(this.target, this.getClass('enabled'));\n      removeClass(this.element, this.getClass('enabled'));\n      this.enabled = false;\n\n      if (typeof this.scrollParents !== 'undefined') {\n        this.scrollParents.forEach(function (parent) {\n          parent.removeEventListener('scroll', _this4.position);\n        });\n      }\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      var _this5 = this;\n\n      this.disable();\n\n      tethers.forEach(function (tether, i) {\n        if (tether === _this5) {\n          tethers.splice(i, 1);\n        }\n      });\n\n      // Remove any elements we were using for convenience from the DOM\n      if (tethers.length === 0) {\n        removeUtilElements();\n      }\n    }\n  }, {\n    key: 'updateAttachClasses',\n    value: function updateAttachClasses(elementAttach, targetAttach) {\n      var _this6 = this;\n\n      elementAttach = elementAttach || this.attachment;\n      targetAttach = targetAttach || this.targetAttachment;\n      var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];\n\n      if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {\n        // updateAttachClasses can be called more than once in a position call, so\n        // we need to clean up after ourselves such that when the last defer gets\n        // ran it doesn't add any extra classes from previous calls.\n        this._addAttachClasses.splice(0, this._addAttachClasses.length);\n      }\n\n      if (typeof this._addAttachClasses === 'undefined') {\n        this._addAttachClasses = [];\n      }\n      var add = this._addAttachClasses;\n\n      if (elementAttach.top) {\n        add.push(this.getClass('element-attached') + '-' + elementAttach.top);\n      }\n      if (elementAttach.left) {\n        add.push(this.getClass('element-attached') + '-' + elementAttach.left);\n      }\n      if (targetAttach.top) {\n        add.push(this.getClass('target-attached') + '-' + targetAttach.top);\n      }\n      if (targetAttach.left) {\n        add.push(this.getClass('target-attached') + '-' + targetAttach.left);\n      }\n\n      var all = [];\n      sides.forEach(function (side) {\n        all.push(_this6.getClass('element-attached') + '-' + side);\n        all.push(_this6.getClass('target-attached') + '-' + side);\n      });\n\n      defer(function () {\n        if (!(typeof _this6._addAttachClasses !== 'undefined')) {\n          return;\n        }\n\n        updateClasses(_this6.element, _this6._addAttachClasses, all);\n        if (!(_this6.options.addTargetClasses === false)) {\n          updateClasses(_this6.target, _this6._addAttachClasses, all);\n        }\n\n        delete _this6._addAttachClasses;\n      });\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      var _this7 = this;\n\n      var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n      // flushChanges commits the changes immediately, leave true unless you are positioning multiple\n      // tethers (in which case call Tether.Utils.flush yourself when you're done)\n\n      if (!this.enabled) {\n        return;\n      }\n\n      this.clearCache();\n\n      // Turn 'auto' attachments into the appropriate corner or edge\n      var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);\n\n      this.updateAttachClasses(this.attachment, targetAttachment);\n\n      var elementPos = this.cache('element-bounds', function () {\n        return getBounds(_this7.element);\n      });\n\n      var width = elementPos.width;\n      var height = elementPos.height;\n\n      if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n        var _lastSize = this.lastSize;\n\n        // We cache the height and width to make it possible to position elements that are\n        // getting hidden.\n        width = _lastSize.width;\n        height = _lastSize.height;\n      } else {\n        this.lastSize = { width: width, height: height };\n      }\n\n      var targetPos = this.cache('target-bounds', function () {\n        return _this7.getTargetBounds();\n      });\n      var targetSize = targetPos;\n\n      // Get an actual px offset from the attachment\n      var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });\n      var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);\n\n      var manualOffset = offsetToPx(this.offset, { width: width, height: height });\n      var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);\n\n      // Add the manually provided offset\n      offset = addOffset(offset, manualOffset);\n      targetOffset = addOffset(targetOffset, manualTargetOffset);\n\n      // It's now our goal to make (element position + offset) == (target position + target offset)\n      var left = targetPos.left + targetOffset.left - offset.left;\n      var top = targetPos.top + targetOffset.top - offset.top;\n\n      for (var i = 0; i < TetherBase.modules.length; ++i) {\n        var _module2 = TetherBase.modules[i];\n        var ret = _module2.position.call(this, {\n          left: left,\n          top: top,\n          targetAttachment: targetAttachment,\n          targetPos: targetPos,\n          elementPos: elementPos,\n          offset: offset,\n          targetOffset: targetOffset,\n          manualOffset: manualOffset,\n          manualTargetOffset: manualTargetOffset,\n          scrollbarSize: scrollbarSize,\n          attachment: this.attachment\n        });\n\n        if (ret === false) {\n          return false;\n        } else if (typeof ret === 'undefined' || typeof ret !== 'object') {\n          continue;\n        } else {\n          top = ret.top;\n          left = ret.left;\n        }\n      }\n\n      // We describe the position three different ways to give the optimizer\n      // a chance to decide the best possible way to position the element\n      // with the fewest repaints.\n      var next = {\n        // It's position relative to the page (absolute positioning when\n        // the element is a child of the body)\n        page: {\n          top: top,\n          left: left\n        },\n\n        // It's position relative to the viewport (fixed positioning)\n        viewport: {\n          top: top - pageYOffset,\n          bottom: pageYOffset - top - height + innerHeight,\n          left: left - pageXOffset,\n          right: pageXOffset - left - width + innerWidth\n        }\n      };\n\n      var doc = this.target.ownerDocument;\n      var win = doc.defaultView;\n\n      var scrollbarSize = undefined;\n      if (win.innerHeight > doc.documentElement.clientHeight) {\n        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n        next.viewport.bottom -= scrollbarSize.height;\n      }\n\n      if (win.innerWidth > doc.documentElement.clientWidth) {\n        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n        next.viewport.right -= scrollbarSize.width;\n      }\n\n      if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {\n        // Absolute positioning in the body will be relative to the page, not the 'initial containing block'\n        next.page.bottom = doc.body.scrollHeight - top - height;\n        next.page.right = doc.body.scrollWidth - left - width;\n      }\n\n      if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {\n        (function () {\n          var offsetParent = _this7.cache('target-offsetparent', function () {\n            return getOffsetParent(_this7.target);\n          });\n          var offsetPosition = _this7.cache('target-offsetparent-bounds', function () {\n            return getBounds(offsetParent);\n          });\n          var offsetParentStyle = getComputedStyle(offsetParent);\n          var offsetParentSize = offsetPosition;\n\n          var offsetBorder = {};\n          ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {\n            offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);\n          });\n\n          offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;\n          offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;\n\n          if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {\n            if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {\n              // We're within the visible part of the target's scroll parent\n              var scrollTop = offsetParent.scrollTop;\n              var scrollLeft = offsetParent.scrollLeft;\n\n              // It's position relative to the target's offset parent (absolute positioning when\n              // the element is moved to be a child of the target's offset parent).\n              next.offset = {\n                top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,\n                left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left\n              };\n            }\n          }\n        })();\n      }\n\n      // We could also travel up the DOM and try each containing context, rather than only\n      // looking at the body, but we're gonna get diminishing returns.\n\n      this.move(next);\n\n      this.history.unshift(next);\n\n      if (this.history.length > 3) {\n        this.history.pop();\n      }\n\n      if (flushChanges) {\n        flush();\n      }\n\n      return true;\n    }\n\n    // THE ISSUE\n  }, {\n    key: 'move',\n    value: function move(pos) {\n      var _this8 = this;\n\n      if (!(typeof this.element.parentNode !== 'undefined')) {\n        return;\n      }\n\n      var same = {};\n\n      for (var type in pos) {\n        same[type] = {};\n\n        for (var key in pos[type]) {\n          var found = false;\n\n          for (var i = 0; i < this.history.length; ++i) {\n            var point = this.history[i];\n            if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {\n              found = true;\n              break;\n            }\n          }\n\n          if (!found) {\n            same[type][key] = true;\n          }\n        }\n      }\n\n      var css = { top: '', left: '', right: '', bottom: '' };\n\n      var transcribe = function transcribe(_same, _pos) {\n        var hasOptimizations = typeof _this8.options.optimizations !== 'undefined';\n        var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;\n        if (gpu !== false) {\n          var yPos = undefined,\n              xPos = undefined;\n          if (_same.top) {\n            css.top = 0;\n            yPos = _pos.top;\n          } else {\n            css.bottom = 0;\n            yPos = -_pos.bottom;\n          }\n\n          if (_same.left) {\n            css.left = 0;\n            xPos = _pos.left;\n          } else {\n            css.right = 0;\n            xPos = -_pos.right;\n          }\n\n          if (window.matchMedia) {\n            // HubSpot/tether#207\n            var retina = window.matchMedia('only screen and (min-resolution: 1.3dppx)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3)').matches;\n            if (!retina) {\n              xPos = Math.round(xPos);\n              yPos = Math.round(yPos);\n            }\n          }\n\n          css[transformKey] = 'translateX(' + xPos + 'px) translateY(' + yPos + 'px)';\n\n          if (transformKey !== 'msTransform') {\n            // The Z transform will keep this in the GPU (faster, and prevents artifacts),\n            // but IE9 doesn't support 3d transforms and will choke.\n            css[transformKey] += \" translateZ(0)\";\n          }\n        } else {\n          if (_same.top) {\n            css.top = _pos.top + 'px';\n          } else {\n            css.bottom = _pos.bottom + 'px';\n          }\n\n          if (_same.left) {\n            css.left = _pos.left + 'px';\n          } else {\n            css.right = _pos.right + 'px';\n          }\n        }\n      };\n\n      var moved = false;\n      if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {\n        css.position = 'absolute';\n        transcribe(same.page, pos.page);\n      } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {\n        css.position = 'fixed';\n        transcribe(same.viewport, pos.viewport);\n      } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {\n        (function () {\n          css.position = 'absolute';\n          var offsetParent = _this8.cache('target-offsetparent', function () {\n            return getOffsetParent(_this8.target);\n          });\n\n          if (getOffsetParent(_this8.element) !== offsetParent) {\n            defer(function () {\n              _this8.element.parentNode.removeChild(_this8.element);\n              offsetParent.appendChild(_this8.element);\n            });\n          }\n\n          transcribe(same.offset, pos.offset);\n          moved = true;\n        })();\n      } else {\n        css.position = 'absolute';\n        transcribe({ top: true, left: true }, pos.page);\n      }\n\n      if (!moved) {\n        if (this.options.bodyElement) {\n          this.options.bodyElement.appendChild(this.element);\n        } else {\n          var offsetParentIsBody = true;\n          var currentNode = this.element.parentNode;\n          while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY') {\n            if (getComputedStyle(currentNode).position !== 'static') {\n              offsetParentIsBody = false;\n              break;\n            }\n\n            currentNode = currentNode.parentNode;\n          }\n\n          if (!offsetParentIsBody) {\n            this.element.parentNode.removeChild(this.element);\n            this.element.ownerDocument.body.appendChild(this.element);\n          }\n        }\n      }\n\n      // Any css change will trigger a repaint, so let's avoid one if nothing changed\n      var writeCSS = {};\n      var write = false;\n      for (var key in css) {\n        var val = css[key];\n        var elVal = this.element.style[key];\n\n        if (elVal !== val) {\n          write = true;\n          writeCSS[key] = val;\n        }\n      }\n\n      if (write) {\n        defer(function () {\n          extend(_this8.element.style, writeCSS);\n          _this8.trigger('repositioned');\n        });\n      }\n    }\n  }]);\n\n  return TetherClass;\n})(Evented);\n\nTetherClass.modules = [];\n\nTetherBase.position = position;\n\nvar Tether = extend(TetherClass, TetherBase);\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar extend = _TetherBase$Utils.extend;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nvar BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];\n\nfunction getBoundingRect(tether, to) {\n  if (to === 'scrollParent') {\n    to = tether.scrollParents[0];\n  } else if (to === 'window') {\n    to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];\n  }\n\n  if (to === document) {\n    to = to.documentElement;\n  }\n\n  if (typeof to.nodeType !== 'undefined') {\n    (function () {\n      var node = to;\n      var size = getBounds(to);\n      var pos = size;\n      var style = getComputedStyle(to);\n\n      to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];\n\n      // Account any parent Frames scroll offset\n      if (node.ownerDocument !== document) {\n        var win = node.ownerDocument.defaultView;\n        to[0] += win.pageXOffset;\n        to[1] += win.pageYOffset;\n        to[2] += win.pageXOffset;\n        to[3] += win.pageYOffset;\n      }\n\n      BOUNDS_FORMAT.forEach(function (side, i) {\n        side = side[0].toUpperCase() + side.substr(1);\n        if (side === 'Top' || side === 'Left') {\n          to[i] += parseFloat(style['border' + side + 'Width']);\n        } else {\n          to[i] -= parseFloat(style['border' + side + 'Width']);\n        }\n      });\n    })();\n  }\n\n  return to;\n}\n\nTetherBase.modules.push({\n  position: function position(_ref) {\n    var _this = this;\n\n    var top = _ref.top;\n    var left = _ref.left;\n    var targetAttachment = _ref.targetAttachment;\n\n    if (!this.options.constraints) {\n      return true;\n    }\n\n    var _cache = this.cache('element-bounds', function () {\n      return getBounds(_this.element);\n    });\n\n    var height = _cache.height;\n    var width = _cache.width;\n\n    if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n      var _lastSize = this.lastSize;\n\n      // Handle the item getting hidden as a result of our positioning without glitching\n      // the classes in and out\n      width = _lastSize.width;\n      height = _lastSize.height;\n    }\n\n    var targetSize = this.cache('target-bounds', function () {\n      return _this.getTargetBounds();\n    });\n\n    var targetHeight = targetSize.height;\n    var targetWidth = targetSize.width;\n\n    var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];\n\n    this.options.constraints.forEach(function (constraint) {\n      var outOfBoundsClass = constraint.outOfBoundsClass;\n      var pinnedClass = constraint.pinnedClass;\n\n      if (outOfBoundsClass) {\n        allClasses.push(outOfBoundsClass);\n      }\n      if (pinnedClass) {\n        allClasses.push(pinnedClass);\n      }\n    });\n\n    allClasses.forEach(function (cls) {\n      ['left', 'top', 'right', 'bottom'].forEach(function (side) {\n        allClasses.push(cls + '-' + side);\n      });\n    });\n\n    var addClasses = [];\n\n    var tAttachment = extend({}, targetAttachment);\n    var eAttachment = extend({}, this.attachment);\n\n    this.options.constraints.forEach(function (constraint) {\n      var to = constraint.to;\n      var attachment = constraint.attachment;\n      var pin = constraint.pin;\n\n      if (typeof attachment === 'undefined') {\n        attachment = '';\n      }\n\n      var changeAttachX = undefined,\n          changeAttachY = undefined;\n      if (attachment.indexOf(' ') >= 0) {\n        var _attachment$split = attachment.split(' ');\n\n        var _attachment$split2 = _slicedToArray(_attachment$split, 2);\n\n        changeAttachY = _attachment$split2[0];\n        changeAttachX = _attachment$split2[1];\n      } else {\n        changeAttachX = changeAttachY = attachment;\n      }\n\n      var bounds = getBoundingRect(_this, to);\n\n      if (changeAttachY === 'target' || changeAttachY === 'both') {\n        if (top < bounds[1] && tAttachment.top === 'top') {\n          top += targetHeight;\n          tAttachment.top = 'bottom';\n        }\n\n        if (top + height > bounds[3] && tAttachment.top === 'bottom') {\n          top -= targetHeight;\n          tAttachment.top = 'top';\n        }\n      }\n\n      if (changeAttachY === 'together') {\n        if (tAttachment.top === 'top') {\n          if (eAttachment.top === 'bottom' && top < bounds[1]) {\n            top += targetHeight;\n            tAttachment.top = 'bottom';\n\n            top += height;\n            eAttachment.top = 'top';\n          } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {\n            top -= height - targetHeight;\n            tAttachment.top = 'bottom';\n\n            eAttachment.top = 'bottom';\n          }\n        }\n\n        if (tAttachment.top === 'bottom') {\n          if (eAttachment.top === 'top' && top + height > bounds[3]) {\n            top -= targetHeight;\n            tAttachment.top = 'top';\n\n            top -= height;\n            eAttachment.top = 'bottom';\n          } else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {\n            top += height - targetHeight;\n            tAttachment.top = 'top';\n\n            eAttachment.top = 'top';\n          }\n        }\n\n        if (tAttachment.top === 'middle') {\n          if (top + height > bounds[3] && eAttachment.top === 'top') {\n            top -= height;\n            eAttachment.top = 'bottom';\n          } else if (top < bounds[1] && eAttachment.top === 'bottom') {\n            top += height;\n            eAttachment.top = 'top';\n          }\n        }\n      }\n\n      if (changeAttachX === 'target' || changeAttachX === 'both') {\n        if (left < bounds[0] && tAttachment.left === 'left') {\n          left += targetWidth;\n          tAttachment.left = 'right';\n        }\n\n        if (left + width > bounds[2] && tAttachment.left === 'right') {\n          left -= targetWidth;\n          tAttachment.left = 'left';\n        }\n      }\n\n      if (changeAttachX === 'together') {\n        if (left < bounds[0] && tAttachment.left === 'left') {\n          if (eAttachment.left === 'right') {\n            left += targetWidth;\n            tAttachment.left = 'right';\n\n            left += width;\n            eAttachment.left = 'left';\n          } else if (eAttachment.left === 'left') {\n            left += targetWidth;\n            tAttachment.left = 'right';\n\n            left -= width;\n            eAttachment.left = 'right';\n          }\n        } else if (left + width > bounds[2] && tAttachment.left === 'right') {\n          if (eAttachment.left === 'left') {\n            left -= targetWidth;\n            tAttachment.left = 'left';\n\n            left -= width;\n            eAttachment.left = 'right';\n          } else if (eAttachment.left === 'right') {\n            left -= targetWidth;\n            tAttachment.left = 'left';\n\n            left += width;\n            eAttachment.left = 'left';\n          }\n        } else if (tAttachment.left === 'center') {\n          if (left + width > bounds[2] && eAttachment.left === 'left') {\n            left -= width;\n            eAttachment.left = 'right';\n          } else if (left < bounds[0] && eAttachment.left === 'right') {\n            left += width;\n            eAttachment.left = 'left';\n          }\n        }\n      }\n\n      if (changeAttachY === 'element' || changeAttachY === 'both') {\n        if (top < bounds[1] && eAttachment.top === 'bottom') {\n          top += height;\n          eAttachment.top = 'top';\n        }\n\n        if (top + height > bounds[3] && eAttachment.top === 'top') {\n          top -= height;\n          eAttachment.top = 'bottom';\n        }\n      }\n\n      if (changeAttachX === 'element' || changeAttachX === 'both') {\n        if (left < bounds[0]) {\n          if (eAttachment.left === 'right') {\n            left += width;\n            eAttachment.left = 'left';\n          } else if (eAttachment.left === 'center') {\n            left += width / 2;\n            eAttachment.left = 'left';\n          }\n        }\n\n        if (left + width > bounds[2]) {\n          if (eAttachment.left === 'left') {\n            left -= width;\n            eAttachment.left = 'right';\n          } else if (eAttachment.left === 'center') {\n            left -= width / 2;\n            eAttachment.left = 'right';\n          }\n        }\n      }\n\n      if (typeof pin === 'string') {\n        pin = pin.split(',').map(function (p) {\n          return p.trim();\n        });\n      } else if (pin === true) {\n        pin = ['top', 'left', 'right', 'bottom'];\n      }\n\n      pin = pin || [];\n\n      var pinned = [];\n      var oob = [];\n\n      if (top < bounds[1]) {\n        if (pin.indexOf('top') >= 0) {\n          top = bounds[1];\n          pinned.push('top');\n        } else {\n          oob.push('top');\n        }\n      }\n\n      if (top + height > bounds[3]) {\n        if (pin.indexOf('bottom') >= 0) {\n          top = bounds[3] - height;\n          pinned.push('bottom');\n        } else {\n          oob.push('bottom');\n        }\n      }\n\n      if (left < bounds[0]) {\n        if (pin.indexOf('left') >= 0) {\n          left = bounds[0];\n          pinned.push('left');\n        } else {\n          oob.push('left');\n        }\n      }\n\n      if (left + width > bounds[2]) {\n        if (pin.indexOf('right') >= 0) {\n          left = bounds[2] - width;\n          pinned.push('right');\n        } else {\n          oob.push('right');\n        }\n      }\n\n      if (pinned.length) {\n        (function () {\n          var pinnedClass = undefined;\n          if (typeof _this.options.pinnedClass !== 'undefined') {\n            pinnedClass = _this.options.pinnedClass;\n          } else {\n            pinnedClass = _this.getClass('pinned');\n          }\n\n          addClasses.push(pinnedClass);\n          pinned.forEach(function (side) {\n            addClasses.push(pinnedClass + '-' + side);\n          });\n        })();\n      }\n\n      if (oob.length) {\n        (function () {\n          var oobClass = undefined;\n          if (typeof _this.options.outOfBoundsClass !== 'undefined') {\n            oobClass = _this.options.outOfBoundsClass;\n          } else {\n            oobClass = _this.getClass('out-of-bounds');\n          }\n\n          addClasses.push(oobClass);\n          oob.forEach(function (side) {\n            addClasses.push(oobClass + '-' + side);\n          });\n        })();\n      }\n\n      if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {\n        eAttachment.left = tAttachment.left = false;\n      }\n      if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {\n        eAttachment.top = tAttachment.top = false;\n      }\n\n      if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {\n        _this.updateAttachClasses(eAttachment, tAttachment);\n        _this.trigger('update', {\n          attachment: eAttachment,\n          targetAttachment: tAttachment\n        });\n      }\n    });\n\n    defer(function () {\n      if (!(_this.options.addTargetClasses === false)) {\n        updateClasses(_this.target, addClasses, allClasses);\n      }\n      updateClasses(_this.element, addClasses, allClasses);\n    });\n\n    return { top: top, left: left };\n  }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nTetherBase.modules.push({\n  position: function position(_ref) {\n    var _this = this;\n\n    var top = _ref.top;\n    var left = _ref.left;\n\n    var _cache = this.cache('element-bounds', function () {\n      return getBounds(_this.element);\n    });\n\n    var height = _cache.height;\n    var width = _cache.width;\n\n    var targetPos = this.getTargetBounds();\n\n    var bottom = top + height;\n    var right = left + width;\n\n    var abutted = [];\n    if (top <= targetPos.bottom && bottom >= targetPos.top) {\n      ['left', 'right'].forEach(function (side) {\n        var targetPosSide = targetPos[side];\n        if (targetPosSide === left || targetPosSide === right) {\n          abutted.push(side);\n        }\n      });\n    }\n\n    if (left <= targetPos.right && right >= targetPos.left) {\n      ['top', 'bottom'].forEach(function (side) {\n        var targetPosSide = targetPos[side];\n        if (targetPosSide === top || targetPosSide === bottom) {\n          abutted.push(side);\n        }\n      });\n    }\n\n    var allClasses = [];\n    var addClasses = [];\n\n    var sides = ['left', 'top', 'right', 'bottom'];\n    allClasses.push(this.getClass('abutted'));\n    sides.forEach(function (side) {\n      allClasses.push(_this.getClass('abutted') + '-' + side);\n    });\n\n    if (abutted.length) {\n      addClasses.push(this.getClass('abutted'));\n    }\n\n    abutted.forEach(function (side) {\n      addClasses.push(_this.getClass('abutted') + '-' + side);\n    });\n\n    defer(function () {\n      if (!(_this.options.addTargetClasses === false)) {\n        updateClasses(_this.target, addClasses, allClasses);\n      }\n      updateClasses(_this.element, addClasses, allClasses);\n    });\n\n    return true;\n  }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nTetherBase.modules.push({\n  position: function position(_ref) {\n    var top = _ref.top;\n    var left = _ref.left;\n\n    if (!this.options.shift) {\n      return;\n    }\n\n    var shift = this.options.shift;\n    if (typeof this.options.shift === 'function') {\n      shift = this.options.shift.call(this, { top: top, left: left });\n    }\n\n    var shiftTop = undefined,\n        shiftLeft = undefined;\n    if (typeof shift === 'string') {\n      shift = shift.split(' ');\n      shift[1] = shift[1] || shift[0];\n\n      var _shift = shift;\n\n      var _shift2 = _slicedToArray(_shift, 2);\n\n      shiftTop = _shift2[0];\n      shiftLeft = _shift2[1];\n\n      shiftTop = parseFloat(shiftTop, 10);\n      shiftLeft = parseFloat(shiftLeft, 10);\n    } else {\n      shiftTop = shift.top;\n      shiftLeft = shift.left;\n    }\n\n    top += shiftTop;\n    left += shiftLeft;\n\n    return { top: top, left: left };\n  }\n});\nreturn Tether;\n\n}));\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      striped = _ref.striped,\n      bordered = _ref.bordered,\n      borderless = _ref.borderless,\n      hover = _ref.hover,\n      size = _ref.size,\n      variant = _ref.variant,\n      responsive = _ref.responsive,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"striped\", \"bordered\", \"borderless\", \"hover\", \"size\", \"variant\", \"responsive\"]);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'table');\n  var classes = classNames(className, decoratedBsPrefix, variant && decoratedBsPrefix + \"-\" + variant, size && decoratedBsPrefix + \"-\" + size, striped && decoratedBsPrefix + \"-striped\", bordered && decoratedBsPrefix + \"-bordered\", borderless && decoratedBsPrefix + \"-borderless\", hover && decoratedBsPrefix + \"-hover\");\n  var table = /*#__PURE__*/React.createElement(\"table\", _extends({}, props, {\n    className: classes,\n    ref: ref\n  }));\n\n  if (responsive) {\n    var responsiveClass = decoratedBsPrefix + \"-responsive\";\n\n    if (typeof responsive === 'string') {\n      responsiveClass = responsiveClass + \"-\" + responsive;\n    }\n\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: responsiveClass\n    }, table);\n  }\n\n  return table;\n});\nexport default Table;","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n","'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n  util.copy(obj, this);\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","\"use strict\";\n/**\n * @coreapi\n * @module state\n */ /** for typedoc */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stateMatcher_1 = require(\"./stateMatcher\");\nvar stateBuilder_1 = require(\"./stateBuilder\");\nvar stateQueueManager_1 = require(\"./stateQueueManager\");\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar StateRegistry = /** @class */ (function () {\n    /** @internalapi */\n    function StateRegistry(_router) {\n        this._router = _router;\n        this.states = {};\n        this.listeners = [];\n        this.matcher = new stateMatcher_1.StateMatcher(this.states);\n        this.builder = new stateBuilder_1.StateBuilder(this.matcher, _router.urlMatcherFactory);\n        this.stateQueue = new stateQueueManager_1.StateQueueManager(this, _router.urlRouter, this.states, this.builder, this.listeners);\n        this._registerRoot();\n    }\n    /** @internalapi */\n    StateRegistry.prototype._registerRoot = function () {\n        var rootStateDef = {\n            name: '',\n            url: '^',\n            views: null,\n            params: {\n                '#': { value: null, type: 'hash', dynamic: true },\n            },\n            abstract: true,\n        };\n        var _root = this._root = this.stateQueue.register(rootStateDef);\n        _root.navigable = null;\n    };\n    /** @internalapi */\n    StateRegistry.prototype.dispose = function () {\n        var _this = this;\n        this.stateQueue.dispose();\n        this.listeners = [];\n        this.get().forEach(function (state) { return _this.get(state) && _this.deregister(state); });\n    };\n    /**\n     * Listen for a State Registry events\n     *\n     * Adds a callback that is invoked when states are registered or deregistered with the StateRegistry.\n     *\n     * #### Example:\n     * ```js\n     * let allStates = registry.get();\n     *\n     * // Later, invoke deregisterFn() to remove the listener\n     * let deregisterFn = registry.onStatesChanged((event, states) => {\n     *   switch(event) {\n     *     case: 'registered':\n     *       states.forEach(state => allStates.push(state));\n     *       break;\n     *     case: 'deregistered':\n     *       states.forEach(state => {\n     *         let idx = allStates.indexOf(state);\n     *         if (idx !== -1) allStates.splice(idx, 1);\n     *       });\n     *       break;\n     *   }\n     * });\n     * ```\n     *\n     * @param listener a callback function invoked when the registered states changes.\n     *        The function receives two parameters, `event` and `state`.\n     *        See [[StateRegistryListener]]\n     * @return a function that deregisters the listener\n     */\n    StateRegistry.prototype.onStatesChanged = function (listener) {\n        this.listeners.push(listener);\n        return function deregisterListener() {\n            common_1.removeFrom(this.listeners)(listener);\n        }.bind(this);\n    };\n    /**\n     * Gets the implicit root state\n     *\n     * Gets the root of the state tree.\n     * The root state is implicitly created by UI-Router.\n     * Note: this returns the internal [[StateObject]] representation, not a [[StateDeclaration]]\n     *\n     * @return the root [[StateObject]]\n     */\n    StateRegistry.prototype.root = function () {\n        return this._root;\n    };\n    /**\n     * Adds a state to the registry\n     *\n     * Registers a [[StateDeclaration]] or queues it for registration.\n     *\n     * Note: a state will be queued if the state's parent isn't yet registered.\n     *\n     * @param stateDefinition the definition of the state to register.\n     * @returns the internal [[StateObject]] object.\n     *          If the state was successfully registered, then the object is fully built (See: [[StateBuilder]]).\n     *          If the state was only queued, then the object is not fully built.\n     */\n    StateRegistry.prototype.register = function (stateDefinition) {\n        return this.stateQueue.register(stateDefinition);\n    };\n    /** @hidden */\n    StateRegistry.prototype._deregisterTree = function (state) {\n        var _this = this;\n        var all = this.get().map(function (s) { return s.$$state(); });\n        var getChildren = function (states) {\n            var _children = all.filter(function (s) { return states.indexOf(s.parent) !== -1; });\n            return _children.length === 0 ? _children : _children.concat(getChildren(_children));\n        };\n        var children = getChildren([state]);\n        var deregistered = [state].concat(children).reverse();\n        deregistered.forEach(function (_state) {\n            var $ur = _this._router.urlRouter;\n            // Remove URL rule\n            $ur.rules().filter(hof_1.propEq('state', _state)).forEach($ur.removeRule.bind($ur));\n            // Remove state from registry\n            delete _this.states[_state.name];\n        });\n        return deregistered;\n    };\n    /**\n     * Removes a state from the registry\n     *\n     * This removes a state from the registry.\n     * If the state has children, they are are also removed from the registry.\n     *\n     * @param stateOrName the state's name or object representation\n     * @returns {StateObject[]} a list of removed states\n     */\n    StateRegistry.prototype.deregister = function (stateOrName) {\n        var _state = this.get(stateOrName);\n        if (!_state)\n            throw new Error(\"Can't deregister state; not found: \" + stateOrName);\n        var deregisteredStates = this._deregisterTree(_state.$$state());\n        this.listeners.forEach(function (listener) { return listener('deregistered', deregisteredStates.map(function (s) { return s.self; })); });\n        return deregisteredStates;\n    };\n    StateRegistry.prototype.get = function (stateOrName, base) {\n        var _this = this;\n        if (arguments.length === 0)\n            return Object.keys(this.states).map(function (name) { return _this.states[name].self; });\n        var found = this.matcher.find(stateOrName, base);\n        return found && found.self || null;\n    };\n    StateRegistry.prototype.decorator = function (name, func) {\n        return this.builder.builder(name, func);\n    };\n    return StateRegistry;\n}());\nexports.StateRegistry = StateRegistry;\n//# sourceMappingURL=stateRegistry.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function (props) {\n  return _react2.default.createElement(\n    'div',\n    { style: style },\n    _react2.default.createElement(_google_map_markers2.default, _extends({}, props, { prerender: true }))\n  );\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _google_map_markers = require('./google_map_markers');\n\nvar _google_map_markers2 = _interopRequireDefault(_google_map_markers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar style = {\n  width: '50%',\n  height: '50%',\n  left: '50%',\n  top: '50%',\n  // backgroundColor: 'red',\n  margin: 0,\n  padding: 0,\n  position: 'absolute'\n  // opacity: 0.3\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n  _excluded2 = [\"title\", \"location\"],\n  _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n  function GA4() {\n    var _this = this;\n    _classCallCheck(this, GA4);\n    _defineProperty(this, \"reset\", function () {\n      _this.isInitialized = false;\n      _this._testMode = false;\n      _this._currentMeasurementId;\n      _this._hasLoadedGA = false;\n      _this._isQueuing = false;\n      _this._queueGtag = [];\n    });\n    _defineProperty(this, \"_gtag\", function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      if (!_this._testMode) {\n        if (_this._isQueuing) {\n          _this._queueGtag.push(args);\n        } else {\n          _gtag[\"default\"].apply(void 0, args);\n        }\n      } else {\n        _this._queueGtag.push(args);\n      }\n    });\n    _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n      var gtagUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"https://www.googletagmanager.com/gtag/js\";\n      if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n        return;\n      }\n      if (!_this._hasLoadedGA) {\n        // Global Site Tag (gtag.js) - Google Analytics\n        var script = document.createElement(\"script\");\n        script.async = true;\n        script.src = \"\".concat(gtagUrl, \"?id=\").concat(GA_MEASUREMENT_ID);\n        if (nonce) {\n          script.setAttribute(\"nonce\", nonce);\n        }\n        document.body.appendChild(script);\n        window.dataLayer = window.dataLayer || [];\n        window.gtag = function gtag() {\n          window.dataLayer.push(arguments);\n        };\n        _this._hasLoadedGA = true;\n      }\n    });\n    _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n      if (!gaOptions) {\n        return;\n      }\n      var mapFields = {\n        // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n        // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n        cookieUpdate: \"cookie_update\",\n        cookieExpires: \"cookie_expires\",\n        cookieDomain: \"cookie_domain\",\n        cookieFlags: \"cookie_flags\",\n        // must be in set method?\n        userId: \"user_id\",\n        clientId: \"client_id\",\n        anonymizeIp: \"anonymize_ip\",\n        // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n        contentGroup1: \"content_group1\",\n        contentGroup2: \"content_group2\",\n        contentGroup3: \"content_group3\",\n        contentGroup4: \"content_group4\",\n        contentGroup5: \"content_group5\",\n        // https://support.google.com/analytics/answer/9050852?hl=en\n        allowAdFeatures: \"allow_google_signals\",\n        allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n        nonInteraction: \"non_interaction\",\n        page: \"page_path\",\n        hitCallback: \"event_callback\"\n      };\n      var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n        if (mapFields[key]) {\n          prev[mapFields[key]] = value;\n        } else {\n          prev[key] = value;\n        }\n        return prev;\n      }, {});\n      return gtagOptions;\n    });\n    _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!GA_MEASUREMENT_ID) {\n        throw new Error(\"Require GA_MEASUREMENT_ID\");\n      }\n      var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n        trackingId: GA_MEASUREMENT_ID\n      }] : GA_MEASUREMENT_ID;\n      _this._currentMeasurementId = initConfigs[0].trackingId;\n      var gaOptions = options.gaOptions,\n        gtagOptions = options.gtagOptions,\n        nonce = options.nonce,\n        _options$testMode = options.testMode,\n        testMode = _options$testMode === void 0 ? false : _options$testMode,\n        gtagUrl = options.gtagUrl;\n      _this._testMode = testMode;\n      if (!testMode) {\n        _this._loadGA(_this._currentMeasurementId, nonce, gtagUrl);\n      }\n      if (!_this.isInitialized) {\n        _this._gtag(\"js\", new Date());\n        initConfigs.forEach(function (config) {\n          var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n          if (Object.keys(mergedGtagOptions).length) {\n            _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n          } else {\n            _this._gtag(\"config\", config.trackingId);\n          }\n        });\n      }\n      _this.isInitialized = true;\n      if (!testMode) {\n        var queues = _toConsumableArray(_this._queueGtag);\n        _this._queueGtag = [];\n        _this._isQueuing = false;\n        while (queues.length) {\n          var queue = queues.shift();\n          _this._gtag.apply(_this, _toConsumableArray(queue));\n          if (queue[0] === \"get\") {\n            _this._isQueuing = true;\n          }\n        }\n      }\n    });\n    _defineProperty(this, \"set\", function (fieldsObject) {\n      if (!fieldsObject) {\n        console.warn(\"`fieldsObject` is required in .set()\");\n        return;\n      }\n      if (_typeof(fieldsObject) !== \"object\") {\n        console.warn(\"Expected `fieldsObject` arg to be an Object\");\n        return;\n      }\n      if (Object.keys(fieldsObject).length === 0) {\n        console.warn(\"empty `fieldsObject` given to .set()\");\n      }\n      _this._gaCommand(\"set\", fieldsObject);\n    });\n    _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n      _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n        event_category: eventCategory,\n        event_label: eventLabel,\n        value: eventValue\n      }, fieldsObject && {\n        non_interaction: fieldsObject.nonInteraction\n      }), _this._toGtagOptions(fieldsObject)));\n    });\n    _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n      } else {\n        var _args$ = args[0],\n          eventCategory = _args$.eventCategory,\n          eventAction = _args$.eventAction,\n          eventLabel = _args$.eventLabel,\n          eventValue = _args$.eventValue,\n          hitType = _args$.hitType,\n          rest = _objectWithoutProperties(_args$, _excluded);\n        _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n      }\n    });\n    _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n      _this._gtag(\"event\", \"timing_complete\", {\n        name: timingVar,\n        value: timingValue,\n        event_category: timingCategory,\n        event_label: timingLabel\n      });\n    });\n    _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n      if (fieldsObject && Object.keys(fieldsObject).length) {\n        var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n          title = _this$_toGtagOptions.title,\n          location = _this$_toGtagOptions.location,\n          rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n        _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n          page_path: page\n        }), title && {\n          page_title: title\n        }), location && {\n          page_location: location\n        }), rest));\n      } else if (page) {\n        _this._gtag(\"event\", \"page_view\", {\n          page_path: page\n        });\n      } else {\n        _this._gtag(\"event\", \"page_view\");\n      }\n    });\n    _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n      } else {\n        var _args$2 = args[0],\n          page = _args$2.page,\n          hitType = _args$2.hitType,\n          rest = _objectWithoutProperties(_args$2, _excluded3);\n        _this._gaCommandSendPageview(page, rest);\n      }\n    });\n    _defineProperty(this, \"_gaCommandSend\", function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n      var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n      switch (hitType) {\n        case \"event\":\n          _this._gaCommandSendEventParameters.apply(_this, args);\n          break;\n        case \"pageview\":\n          _this._gaCommandSendPageviewParameters.apply(_this, args);\n          break;\n        case \"timing\":\n          _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n          break;\n        case \"screenview\":\n        case \"transaction\":\n        case \"item\":\n        case \"social\":\n        case \"exception\":\n          console.warn(\"Unsupported send command: \".concat(hitType));\n          break;\n        default:\n          console.warn(\"Send command doesn't exist: \".concat(hitType));\n      }\n    });\n    _defineProperty(this, \"_gaCommandSet\", function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n      if (typeof args[0] === \"string\") {\n        args[0] = _defineProperty({}, args[0], args[1]);\n      }\n      _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n    });\n    _defineProperty(this, \"_gaCommand\", function (command) {\n      for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n        args[_key6 - 1] = arguments[_key6];\n      }\n      switch (command) {\n        case \"send\":\n          _this._gaCommandSend.apply(_this, args);\n          break;\n        case \"set\":\n          _this._gaCommandSet.apply(_this, args);\n          break;\n        default:\n          console.warn(\"Command doesn't exist: \".concat(command));\n      }\n    });\n    _defineProperty(this, \"ga\", function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n      if (typeof args[0] === \"string\") {\n        _this._gaCommand.apply(_this, args);\n      } else {\n        var readyCallback = args[0];\n        _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n          _this._isQueuing = false;\n          var queues = _this._queueGtag;\n          readyCallback({\n            get: function get(property) {\n              return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n            }\n          });\n          while (queues.length) {\n            var queue = queues.shift();\n            _this._gtag.apply(_this, _toConsumableArray(queue));\n          }\n        });\n        _this._isQueuing = true;\n      }\n      return _this.ga;\n    });\n    _defineProperty(this, \"event\", function (optionsOrName, params) {\n      if (typeof optionsOrName === \"string\") {\n        _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n      } else {\n        var action = optionsOrName.action,\n          category = optionsOrName.category,\n          label = optionsOrName.label,\n          value = optionsOrName.value,\n          nonInteraction = optionsOrName.nonInteraction,\n          transport = optionsOrName.transport;\n        if (!category || !action) {\n          console.warn(\"args.category AND args.action are required in event()\");\n          return;\n        }\n\n        // Required Fields\n        var fieldObject = {\n          hitType: \"event\",\n          eventCategory: (0, _format[\"default\"])(category),\n          eventAction: (0, _format[\"default\"])(action)\n        };\n\n        // Optional Fields\n        if (label) {\n          fieldObject.eventLabel = (0, _format[\"default\"])(label);\n        }\n        if (typeof value !== \"undefined\") {\n          if (typeof value !== \"number\") {\n            console.warn(\"Expected `args.value` arg to be a Number.\");\n          } else {\n            fieldObject.eventValue = value;\n          }\n        }\n        if (typeof nonInteraction !== \"undefined\") {\n          if (typeof nonInteraction !== \"boolean\") {\n            console.warn(\"`args.nonInteraction` must be a boolean.\");\n          } else {\n            fieldObject.nonInteraction = nonInteraction;\n          }\n        }\n        if (typeof transport !== \"undefined\") {\n          if (typeof transport !== \"string\") {\n            console.warn(\"`args.transport` must be a string.\");\n          } else {\n            if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n              console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n            }\n            fieldObject.transport = transport;\n          }\n        }\n        _this._gaCommand(\"send\", fieldObject);\n      }\n    });\n    _defineProperty(this, \"send\", function (fieldObject) {\n      _this._gaCommand(\"send\", fieldObject);\n    });\n    this.reset();\n  }\n  _createClass(GA4, [{\n    key: \"gtag\",\n    value: function gtag() {\n      this._gtag.apply(this, arguments);\n    }\n  }]);\n  return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = globalThis[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = globalThis.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        // fast equal of /^0b[01]+$/i\n        case 66:\n        case 98:\n          radix = 2;\n          maxCode = 49;\n          break;\n        // fast equal of /^0o[0-7]+$/i\n        case 79:\n        case 111:\n          radix = 8;\n          maxCode = 55;\n          break;\n        default:\n          return +it;\n      }\n      digits = stringSlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n  // includes check on 1..constructor(foo) case\n  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n  Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar MapHelpers = require('../internals/map-helpers');\n\nvar Map = MapHelpers.Map;\nvar mapGet = MapHelpers.get;\nvar mapHas = MapHelpers.has;\nvar mapSet = MapHelpers.set;\nvar push = uncurryThis([].push);\n\n// `Array.prototype.groupToMap` method\n// https://github.com/tc39/proposal-array-grouping\nmodule.exports = function groupToMap(callbackfn /* , thisArg */) {\n  var O = toObject(this);\n  var self = IndexedObject(O);\n  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  var map = new Map();\n  var length = lengthOfArrayLike(self);\n  var index = 0;\n  var key, value;\n  for (;length > index; index++) {\n    value = self[index];\n    key = boundFunction(value, index, O);\n    if (mapHas(map, key)) push(mapGet(map, key), value);\n    else mapSet(map, key, [value]);\n  } return map;\n};\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays:\n            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n                '_'\n            ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једног минута'],\n            mm: ['минут', 'минута', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            d: ['један дан', 'једног дана'],\n            dd: ['дан', 'дана', 'дана'],\n            M: ['један месец', 'једног месеца'],\n            MM: ['месец', 'месеца', 'месеци'],\n            y: ['једну годину', 'једне године'],\n            yy: ['годину', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'једна година';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'годину') {\n                return number + ' година';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort:\n            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar index_1 = require(\"../common/index\");\n/**\n * An angular1-like promise api\n *\n * This object implements four methods similar to the\n * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This API provides native ES6 promise support wrapped as a $q-like API.\n * Internally, UI-Router uses this $q object to perform promise operations.\n * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n *\n * $q-like promise api\n */\nexports.$q = {\n    /** Normalizes a value as a promise */\n    when: function (val) { return new Promise(function (resolve, reject) { return resolve(val); }); },\n    /** Normalizes a value as a promise rejection */\n    reject: function (val) { return new Promise(function (resolve, reject) { reject(val); }); },\n    /** @returns a deferred object, which has `resolve` and `reject` functions */\n    defer: function () {\n        var deferred = {};\n        deferred.promise = new Promise(function (resolve, reject) {\n            deferred.resolve = resolve;\n            deferred.reject = reject;\n        });\n        return deferred;\n    },\n    /** Like Promise.all(), but also supports object key/promise notation like $q */\n    all: function (promises) {\n        if (index_1.isArray(promises)) {\n            return Promise.all(promises);\n        }\n        if (index_1.isObject(promises)) {\n            // Convert promises map to promises array.\n            // When each promise resolves, map it to a tuple { key: key, val: val }\n            var chain = Object.keys(promises)\n                .map(function (key) { return promises[key].then(function (val) { return ({ key: key, val: val }); }); });\n            // Then wait for all promises to resolve, and convert them back to an object\n            return exports.$q.all(chain).then(function (values) {\n                return values.reduce(function (acc, tuple) { acc[tuple.key] = tuple.val; return acc; }, {});\n            });\n        }\n    },\n};\n//# sourceMappingURL=q.js.map","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nvar randomBytes = require('randombytes');\n\n// Generate an internal UID to make the regexp pattern harder to guess.\nvar UID_LENGTH          = 16;\nvar UID                 = generateUID();\nvar PLACE_HOLDER_REGEXP = new RegExp('(\\\\\\\\)?\"@__(F|R|D|M|S|A|U|I|B|L)-' + UID + '-(\\\\d+)__@\"', 'g');\n\nvar IS_NATIVE_CODE_REGEXP = /\\{\\s*\\[native code\\]\\s*\\}/g;\nvar IS_PURE_FUNCTION = /function.*?\\(/;\nvar IS_ARROW_FUNCTION = /.*?=>.*?/;\nvar UNSAFE_CHARS_REGEXP   = /[<>\\/\\u2028\\u2029]/g;\n\nvar RESERVED_SYMBOLS = ['*', 'async'];\n\n// Mapping of unsafe HTML and invalid JavaScript line terminator chars to their\n// Unicode char counterparts which are safe to use in JavaScript strings.\nvar ESCAPED_CHARS = {\n    '<'     : '\\\\u003C',\n    '>'     : '\\\\u003E',\n    '/'     : '\\\\u002F',\n    '\\u2028': '\\\\u2028',\n    '\\u2029': '\\\\u2029'\n};\n\nfunction escapeUnsafeChars(unsafeChar) {\n    return ESCAPED_CHARS[unsafeChar];\n}\n\nfunction generateUID() {\n    var bytes = randomBytes(UID_LENGTH);\n    var result = '';\n    for(var i=0; i<UID_LENGTH; ++i) {\n        result += bytes[i].toString(16);\n    }\n    return result;\n}\n\nfunction deleteFunctions(obj){\n    var functionKeys = [];\n    for (var key in obj) {\n        if (typeof obj[key] === \"function\") {\n            functionKeys.push(key);\n        }\n    }\n    for (var i = 0; i < functionKeys.length; i++) {\n        delete obj[functionKeys[i]];\n    }\n}\n\nmodule.exports = function serialize(obj, options) {\n    options || (options = {});\n\n    // Backwards-compatibility for `space` as the second argument.\n    if (typeof options === 'number' || typeof options === 'string') {\n        options = {space: options};\n    }\n\n    var functions = [];\n    var regexps   = [];\n    var dates     = [];\n    var maps      = [];\n    var sets      = [];\n    var arrays    = [];\n    var undefs    = [];\n    var infinities= [];\n    var bigInts = [];\n    var urls = [];\n\n    // Returns placeholders for functions and regexps (identified by index)\n    // which are later replaced by their string representation.\n    function replacer(key, value) {\n\n        // For nested function\n        if(options.ignoreFunction){\n            deleteFunctions(value);\n        }\n\n        if (!value && value !== undefined && value !== BigInt(0)) {\n            return value;\n        }\n\n        // If the value is an object w/ a toJSON method, toJSON is called before\n        // the replacer runs, so we use this[key] to get the non-toJSONed value.\n        var origValue = this[key];\n        var type = typeof origValue;\n\n        if (type === 'object') {\n            if(origValue instanceof RegExp) {\n                return '@__R-' + UID + '-' + (regexps.push(origValue) - 1) + '__@';\n            }\n\n            if(origValue instanceof Date) {\n                return '@__D-' + UID + '-' + (dates.push(origValue) - 1) + '__@';\n            }\n\n            if(origValue instanceof Map) {\n                return '@__M-' + UID + '-' + (maps.push(origValue) - 1) + '__@';\n            }\n\n            if(origValue instanceof Set) {\n                return '@__S-' + UID + '-' + (sets.push(origValue) - 1) + '__@';\n            }\n\n            if(origValue instanceof Array) {\n                var isSparse = origValue.filter(function(){return true}).length !== origValue.length;\n                if (isSparse) {\n                    return '@__A-' + UID + '-' + (arrays.push(origValue) - 1) + '__@';\n                }\n            }\n\n            if(origValue instanceof URL) {\n                return '@__L-' + UID + '-' + (urls.push(origValue) - 1) + '__@';\n            }\n        }\n\n        if (type === 'function') {\n            return '@__F-' + UID + '-' + (functions.push(origValue) - 1) + '__@';\n        }\n\n        if (type === 'undefined') {\n            return '@__U-' + UID + '-' + (undefs.push(origValue) - 1) + '__@';\n        }\n\n        if (type === 'number' && !isNaN(origValue) && !isFinite(origValue)) {\n            return '@__I-' + UID + '-' + (infinities.push(origValue) - 1) + '__@';\n        }\n\n        if (type === 'bigint') {\n            return '@__B-' + UID + '-' + (bigInts.push(origValue) - 1) + '__@';\n        }\n\n        return value;\n    }\n\n    function serializeFunc(fn) {\n      var serializedFn = fn.toString();\n      if (IS_NATIVE_CODE_REGEXP.test(serializedFn)) {\n          throw new TypeError('Serializing native function: ' + fn.name);\n      }\n\n      // pure functions, example: {key: function() {}}\n      if(IS_PURE_FUNCTION.test(serializedFn)) {\n          return serializedFn;\n      }\n\n      // arrow functions, example: arg1 => arg1+5\n      if(IS_ARROW_FUNCTION.test(serializedFn)) {\n          return serializedFn;\n      }\n\n      var argsStartsAt = serializedFn.indexOf('(');\n      var def = serializedFn.substr(0, argsStartsAt)\n        .trim()\n        .split(' ')\n        .filter(function(val) { return val.length > 0 });\n\n      var nonReservedSymbols = def.filter(function(val) {\n        return RESERVED_SYMBOLS.indexOf(val) === -1\n      });\n\n      // enhanced literal objects, example: {key() {}}\n      if(nonReservedSymbols.length > 0) {\n          return (def.indexOf('async') > -1 ? 'async ' : '') + 'function'\n            + (def.join('').indexOf('*') > -1 ? '*' : '')\n            + serializedFn.substr(argsStartsAt);\n      }\n\n      // arrow functions\n      return serializedFn;\n    }\n\n    // Check if the parameter is function\n    if (options.ignoreFunction && typeof obj === \"function\") {\n        obj = undefined;\n    }\n    // Protects against `JSON.stringify()` returning `undefined`, by serializing\n    // to the literal string: \"undefined\".\n    if (obj === undefined) {\n        return String(obj);\n    }\n\n    var str;\n\n    // Creates a JSON string representation of the value.\n    // NOTE: Node 0.12 goes into slow mode with extra JSON.stringify() args.\n    if (options.isJSON && !options.space) {\n        str = JSON.stringify(obj);\n    } else {\n        str = JSON.stringify(obj, options.isJSON ? null : replacer, options.space);\n    }\n\n    // Protects against `JSON.stringify()` returning `undefined`, by serializing\n    // to the literal string: \"undefined\".\n    if (typeof str !== 'string') {\n        return String(str);\n    }\n\n    // Replace unsafe HTML and invalid JavaScript line terminator chars with\n    // their safe Unicode char counterpart. This _must_ happen before the\n    // regexps and functions are serialized and added back to the string.\n    if (options.unsafe !== true) {\n        str = str.replace(UNSAFE_CHARS_REGEXP, escapeUnsafeChars);\n    }\n\n    if (functions.length === 0 && regexps.length === 0 && dates.length === 0 && maps.length === 0 && sets.length === 0 && arrays.length === 0 && undefs.length === 0 && infinities.length === 0 && bigInts.length === 0 && urls.length === 0) {\n        return str;\n    }\n\n    // Replaces all occurrences of function, regexp, date, map and set placeholders in the\n    // JSON string with their string representations. If the original value can\n    // not be found, then `undefined` is used.\n    return str.replace(PLACE_HOLDER_REGEXP, function (match, backSlash, type, valueIndex) {\n        // The placeholder may not be preceded by a backslash. This is to prevent\n        // replacing things like `\"a\\\"@__R-<UID>-0__@\"` and thus outputting\n        // invalid JS.\n        if (backSlash) {\n            return match;\n        }\n\n        if (type === 'D') {\n            return \"new Date(\\\"\" + dates[valueIndex].toISOString() + \"\\\")\";\n        }\n\n        if (type === 'R') {\n            return \"new RegExp(\" + serialize(regexps[valueIndex].source) + \", \\\"\" + regexps[valueIndex].flags + \"\\\")\";\n        }\n\n        if (type === 'M') {\n            return \"new Map(\" + serialize(Array.from(maps[valueIndex].entries()), options) + \")\";\n        }\n\n        if (type === 'S') {\n            return \"new Set(\" + serialize(Array.from(sets[valueIndex].values()), options) + \")\";\n        }\n\n        if (type === 'A') {\n            return \"Array.prototype.slice.call(\" + serialize(Object.assign({ length: arrays[valueIndex].length }, arrays[valueIndex]), options) + \")\";\n        }\n\n        if (type === 'U') {\n            return 'undefined'\n        }\n\n        if (type === 'I') {\n            return infinities[valueIndex];\n        }\n\n        if (type === 'B') {\n            return \"BigInt(\\\"\" + bigInts[valueIndex] + \"\\\")\";\n        }\n\n        if (type === 'L') {\n            return \"new URL(\" + serialize(urls[valueIndex].toString(), options) + \")\";\n        }\n\n        var fn = functions[valueIndex];\n\n        return serializeFunc(fn);\n    });\n}\n","'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort:\n            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n                '_'\n            ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"), require(\"angular-sanitize\"), require(\"angular-scroll\"), require(\"angular-hotkeys\"), require(\"angular-bind-html-compile\"), require(\"tether\"), require(\"hone\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\", \"angular-sanitize\", \"angular-scroll\", \"angular-hotkeys\", \"angular-bind-html-compile\", \"Tether\", \"Hone\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"uiTour\"] = factory(require(\"angular\"), require(\"angular-sanitize\"), require(\"angular-scroll\"), require(\"angular-hotkeys\"), require(\"angular-bind-html-compile\"), require(\"tether\"), require(\"hone\"));\n\telse\n\t\troot[\"uiTour\"] = factory(root[\"angular\"], root[\"angular-sanitize\"], root[\"angular-scroll\"], root[\"angular-hotkeys\"], root[\"angular-bind-html-compile\"], root[\"Tether\"], root[\"Hone\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_5__, __WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_7__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nrun.$inject = [\"TourConfig\", \"uiTourService\", \"$rootScope\", \"$injector\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\n__webpack_require__(2);\n\n__webpack_require__(3);\n\n__webpack_require__(4);\n\n__webpack_require__(5);\n\nvar _tether = __webpack_require__(6);\n\nvar _tether2 = _interopRequireDefault(_tether);\n\nvar _hone = __webpack_require__(7);\n\nvar _hone2 = _interopRequireDefault(_hone);\n\n__webpack_require__(8);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction run(TourConfig, uiTourService, $rootScope, $injector) {\n    'ngInject';\n\n    //when the user navigates via browser button, kill tours\n\n    function checkAndKillToursOnNavigate() {\n        if (!uiTourService.isTourWaiting()) {\n            uiTourService.endAllTours();\n        }\n    }\n\n    if (TourConfig.areNavigationInterceptorsEnabled()) {\n        $rootScope.$on('$locationChangeStart', checkAndKillToursOnNavigate);\n        $rootScope.$on('$stateChangeStart', checkAndKillToursOnNavigate);\n\n        //for UIRouter 1.0, not sure if it works\n        if ($injector.has('$transitions')) {\n            $injector.get('$transitions').onStart({}, checkAndKillToursOnNavigate);\n        }\n    }\n}\n\nexports.default = _angular2.default.module('bm.uiTour', ['ngSanitize', 'duScroll', 'cfp.hotkeys', 'angular-bind-html-compile']).run(run).value('Tether', _tether2.default).value('Hone', _hone2.default).constant('positionMap', __webpack_require__(13).default).provider('TourConfig', __webpack_require__(14).default).factory('uiTourBackdrop', __webpack_require__(15).default).factory('TourHelpers', __webpack_require__(16).default).factory('uiTourService', __webpack_require__(17).default).factory('TourStepService', __webpack_require__(18).default).controller('uiTourController', __webpack_require__(19).default).directive('uiTour', __webpack_require__(21).default).directive('tourStep', __webpack_require__(22).default).name;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_7__;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(9);\nif(typeof content === 'string') content = [[module.i, content, '']];\n// Prepare cssTransformation\nvar transform;\n\nvar options = {}\noptions.transform = transform\n// add the styles to the DOM\nvar update = __webpack_require__(11)(content, options);\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(false) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!./angular-ui-tour.css\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!./angular-ui-tour.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(10)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \".no-scrolling {\\n    height: 100%;\\n    overflow: hidden;\\n}\\n\\n/*this might be an accessibility issue*/\\n.ui-tour-popup:focus {\\n    outline: none;\\n}\\n\\n.ui-tour-popup-orphan {\\n    position: fixed;\\n    top: 50%;\\n    left: 50%;\\n    margin: 0;\\n    transform: translateX(-50%) translateY(-50%);\\n}\\n\\n/*improve popover arrows:*/\\n.ui-tour-popup.popover.bottom-left > .arrow,\\n.ui-tour-popup.popover.top-left > .arrow {\\n    left: 25px;\\n}\\n\\n.ui-tour-popup.popover.bottom-right > .arrow,\\n.ui-tour-popup.popover.top-right > .arrow {\\n    left: auto;\\n    right: 25px;\\n}\\n\\n.ui-tour-popup.popover.right-top > .arrow,\\n.ui-tour-popup.popover.left-top > .arrow {\\n    top: 25px;\\n}\\n\\n.ui-tour-popup.popover.left-bottom > .arrow,\\n.ui-tour-popup.popover.right-bottom > .arrow {\\n    top: auto;\\n    bottom: 25px;\\n}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(12);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton) options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n\tif (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t    result = options.transform(obj.css);\n\n\t    if (result) {\n\t    \t// If transform returns a value, use that instead of the original css.\n\t    \t// This allows running runtime transformations on the css.\n\t    \tobj.css = result;\n\t    } else {\n\t    \t// If the transform function returns a falsy value, don't add this css.\n\t    \t// This allows conditional loading of css\n\t    \treturn function() {\n\t    \t\t// noop\n\t    \t};\n\t    }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default.  Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n  // get current location\n  var location = typeof window !== \"undefined\" && window.location;\n\n  if (!location) {\n    throw new Error(\"fixUrls requires window.location\");\n  }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t  return css;\n  }\n\n  var baseUrl = location.protocol + \"//\" + location.host;\n  var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\(  = Match on the word \"url\" with any whitespace after it and then a parens\n\t   (  = Start a capturing group\n\t     (?:  = Start a non-capturing group\n\t         [^)(]  = Match anything that isn't a parentheses\n\t         |  = OR\n\t         \\(  = Match a start parentheses\n\t             (?:  = Start another non-capturing groups\n\t                 [^)(]+  = Match anything that isn't a parentheses\n\t                 |  = OR\n\t                 \\(  = Match a start parentheses\n\t                     [^)(]*  = Match anything that isn't a parentheses\n\t                 \\)  = Match a end parentheses\n\t             )  = End Group\n              *\\) = Match anything and then a close parens\n          )  = Close non-capturing group\n          *  = Match anything\n       )  = Close capturing group\n\t \\)  = Match a close parens\n\n\t /gi  = Get all matches, not the first.  Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) {\n\t\t  return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t  \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = {\n    'top': {\n        target: 'top center',\n        popup: 'bottom center'\n    },\n    'top-left': {\n        target: 'top left',\n        popup: 'bottom left'\n    },\n    'top-right': {\n        target: 'top right',\n        popup: 'bottom right'\n    },\n    'bottom': {\n        target: 'bottom center',\n        popup: 'top center'\n    },\n    'bottom-left': {\n        target: 'bottom left',\n        popup: 'top left'\n    },\n    'bottom-right': {\n        target: 'bottom right',\n        popup: 'top right'\n    },\n    'left': {\n        target: 'middle left',\n        popup: 'middle right'\n    },\n    'left-top': {\n        target: 'top left',\n        popup: 'top right'\n    },\n    'left-bottom': {\n        target: 'bottom left',\n        popup: 'bottom right'\n    },\n    'right': {\n        target: 'middle right',\n        popup: 'middle left'\n    },\n    'right-top': {\n        target: 'top right',\n        popup: 'top left'\n    },\n    'right-bottom': {\n        target: 'bottom right',\n        popup: 'bottom left'\n    }\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = TourConfig;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction TourConfig() {\n    'ngInject';\n\n    var navigationInterceptorsEnabled = false,\n        config = {\n        placement: 'top',\n        animation: true,\n        popupDelay: 1,\n        closePopupDelay: 0,\n        enable: true,\n        appendToBody: false,\n        popupClass: '',\n        orphan: false,\n        backdrop: false,\n        backdropZIndex: 10000,\n        backdropPadding: '0px',\n        scrollOffset: 100,\n        scrollIntoView: true,\n        useUiRouter: false,\n        useHotkeys: false,\n        scrollParentId: '$document',\n\n        onStart: null,\n        onEnd: null,\n        onPause: null,\n        onResume: null,\n        onNext: null,\n        onPrev: null,\n        onShow: null,\n        onShown: null,\n        onHide: null,\n        onHidden: null\n    };\n\n    this.set = function (option, value) {\n        config[option] = value;\n    };\n\n    this.enableNavigationInterceptors = function () {\n        navigationInterceptorsEnabled = true;\n    };\n\n    this.$get = ['$q', function ($q) {\n\n        var service = {};\n\n        service.get = function (option) {\n            return config[option];\n        };\n\n        service.getAll = function () {\n            return _angular2.default.copy(config);\n        };\n\n        service.areNavigationInterceptorsEnabled = function () {\n            return navigationInterceptorsEnabled;\n        };\n\n        //wrap functions with promises\n        (function () {\n            _angular2.default.forEach(config, function (value, key) {\n                if (key.indexOf('on') === 0 && _angular2.default.isFunction(value)) {\n                    config[key] = function () {\n                        return $q.resolve(value());\n                    };\n                }\n            });\n        })();\n\n        return service;\n    }];\n}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nuiTourBackdrop.$inject = [\"$document\", \"Hone\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = uiTourBackdrop;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uiTourBackdrop($document, Hone) {\n    'ngInject';\n\n    var service = {},\n        $body = _angular2.default.element($document[0].body),\n        preventDefault = function preventDefault(e) {\n        e.preventDefault();\n    },\n        hone = new Hone({\n        classPrefix: 'ui-tour-backdrop'\n    });\n\n    function preventScrolling() {\n        $body.addClass('no-scrolling');\n        $body.on('touchmove', preventDefault);\n    }\n\n    function allowScrolling() {\n        $body.removeClass('no-scrolling');\n        $body.off('touchmove', preventDefault);\n    }\n\n    service.createForElement = function (element, backdropOptions) {\n        hone.setOptions(backdropOptions);\n        hone.position(element[0]);\n        hone.show();\n\n        if (backdropOptions.preventScrolling) {\n            service.shouldPreventScrolling(true);\n        } else {\n            service.shouldPreventScrolling(false);\n        }\n    };\n\n    service.hide = function () {\n        hone.hide();\n        service.shouldPreventScrolling(false);\n    };\n\n    service.shouldPreventScrolling = function () {\n        var shouldPreventScrolling = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n        if (shouldPreventScrolling) {\n            preventScrolling();\n        } else {\n            allowScrolling();\n        }\n    };\n\n    service.reposition = function () {\n        if (hone.status === Hone.status.VISIBLE) {\n            hone.position();\n        }\n    };\n\n    return service;\n}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nTourHelpers.$inject = [\"$http\", \"$compile\", \"$location\", \"TourConfig\", \"$q\", \"$injector\", \"$timeout\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = TourHelpers;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction TourHelpers($http, $compile, $location, TourConfig, $q, $injector, $timeout) {\n    'ngInject';\n\n    var helpers = {},\n        safeApply,\n        $state;\n\n    if ($injector.has('$state')) {\n        $state = $injector.get('$state');\n    }\n\n    /**\n     * Helper function that calls scope.$apply if a digest is not currently in progress\n     * Borrowed from: https://coderwall.com/p/ngisma\n     *\n     * @param {$rootScope.Scope} scope\n     * @param {Function} fn\n     */\n    safeApply = helpers.safeApply = function (scope, fn) {\n        var phase = scope.$root.$$phase;\n\n        if (phase === '$apply' || phase === '$digest') {\n            if (fn && typeof fn === 'function') {\n                fn();\n            }\n        } else {\n            scope.$apply(fn);\n        }\n    };\n\n    /**\n     * Converts a stringified boolean to a JS boolean\n     *\n     * @param string\n     * @returns {*}\n     */\n    function stringToBoolean(string) {\n        if (string === 'true') {\n            return true;\n        } else if (string === 'false') {\n            return false;\n        }\n\n        return string;\n    }\n\n    /**\n     * This will attach the properties native to Angular UI Tooltips. If there is a tour-level value set\n     * for any of them, this passes that value along to the step\n     *\n     * @param {$rootScope.Scope} scope The tour step's scope\n     * @param {Attributes} attrs The tour step's Attributes\n     * @param {Object} step Represents the tour step object\n     * @param {Array} properties The list of Tooltip properties\n     */\n    helpers.attachTourConfigProperties = function (scope, attrs, step, properties) {\n        _angular2.default.forEach(properties, function (property) {\n            if (!attrs[helpers.getAttrName(property)] && _angular2.default.isDefined(step.config(property))) {\n                attrs.$set(helpers.getAttrName(property), String(step.config(property)));\n            }\n        });\n    };\n\n    /**\n     * Helper function that attaches event handlers to options\n     *\n     * @param {$rootScope.Scope} scope\n     * @param {Attributes} attrs\n     * @param {Object} options represents the tour or step object\n     * @param {Array} events\n     * @param {boolean} prefix - used only by the tour directive\n     */\n    helpers.attachEventHandlers = function (scope, attrs, options, events, prefix) {\n\n        _angular2.default.forEach(events, function (eventName) {\n            var attrName = helpers.getAttrName(eventName, prefix);\n\n            if (attrs[attrName]) {\n                options[eventName] = function () {\n                    return $q(function (resolve) {\n                        safeApply(scope, function () {\n                            resolve(scope.$eval(attrs[attrName]));\n                        });\n                    });\n                };\n            }\n        });\n    };\n\n    /**\n     * Helper function that attaches observers to option attributes\n     *\n     * @param {Attributes} attrs\n     * @param {Object} options represents the tour or step object\n     * @param {Array} keys attribute names\n     * @param {boolean} prefix - used only by the tour directive\n     */\n    helpers.attachInterpolatedValues = function (attrs, options, keys, prefix) {\n\n        _angular2.default.forEach(keys, function (key) {\n            var attrName = helpers.getAttrName(key, prefix);\n\n            if (attrs[attrName]) {\n                options[key] = stringToBoolean(attrs[attrName]);\n                attrs.$observe(attrName, function (newValue) {\n                    options[key] = stringToBoolean(newValue);\n                });\n            }\n        });\n    };\n\n    /**\n     * sets up a redirect when the next or previous step is in a different view\n     *\n     * @param step - the current step (not the next or prev one)\n     * @param ctrl - the tour controller\n     * @param direction - enum (onPrev, onNext)\n     * @param path - the url that the next step is on (will use $location.path())\n     * @param targetName - the ID of the next or previous step\n     */\n    helpers.setRedirect = function (step, ctrl, direction, path, targetName) {\n        var oldHandler = step[direction];\n\n        step[direction] = function (tour) {\n            return $q(function (resolve) {\n                if (oldHandler) {\n                    oldHandler(tour);\n                }\n                ctrl.waitFor(targetName);\n                if (step.config('useUiRouter')) {\n                    $state.go(path).then(resolve);\n                } else {\n                    $location.path(path);\n                    $timeout(resolve);\n                }\n            });\n        };\n    };\n\n    /**\n     * Returns the attribute name for an option depending on the prefix\n     *\n     * @param {string} option - name of option\n     * @param {string} prefix - should only be used by tour directive and set to 'uiTour'\n     * @returns {string} potentially prefixed name of option, or just name of option\n     */\n    helpers.getAttrName = function (option, prefix) {\n        return (prefix || 'tourStep') + option.charAt(0).toUpperCase() + option.substr(1);\n    };\n\n    return helpers;\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nuiTourService.$inject = [\"$controller\", \"$q\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = uiTourService;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uiTourService($controller, $q) {\n    'ngInject';\n\n    var service = {},\n        tours = [];\n\n    /**\n     * If there is only one tour, returns the tour\n     */\n    service.getTour = function () {\n        return tours[0];\n    };\n\n    /**\n     * Look up a specific tour by name\n     *\n     * @param {string} name Name of tour\n     */\n    service.getTourByName = function (name) {\n        return tours.filter(function (tour) {\n            return tour.options.name === name;\n        })[0];\n    };\n\n    /**\n     * Finds the tour available to a specific element\n     *\n     * @param {jqLite | HTMLElement} element Element to use to look up tour\n     * @returns {*}\n     */\n    service.getTourByElement = function (element) {\n        return _angular2.default.element(element).controller('uiTour');\n    };\n\n    /**\n     * Creates a tour that is not attached to a DOM element (experimental)\n     *\n     * @param {string} name Name of the tour (required)\n     * @param {{}=} config Options to override defaults\n     */\n    service.createDetachedTour = function (name, config) {\n        if (!name) {\n            throw {\n                name: 'ParameterMissingError',\n                message: 'A unique tour name is required for creating a detached tour.'\n            };\n        }\n\n        config = config || {};\n\n        config.name = name;\n        return $controller('uiTourController').init(config);\n    };\n\n    /**\n     * Checks to see if there are any tours that are waiting.\n     * Useful when checking if navigation is due to tour or browser\n     *\n     * @returns {boolean} if there is one or more waiting tours\n     */\n    service.isTourWaiting = function () {\n        return tours.reduce(function (isWaiting, tour) {\n            return isWaiting || tour.getStatus() === tour.Status.WAITING;\n        }, false);\n    };\n\n    /**\n     * Ends all tours\n     *\n     * @returns {Promise} resolved once all tours have ended\n     */\n    service.endAllTours = function () {\n        return $q.all(tours.map(function (tour) {\n            return tour.end();\n        }));\n    };\n\n    /**\n     * Used by uiTourController to register a tour\n     *\n     * @protected\n     * @param tour\n     */\n    service._registerTour = function (tour) {\n        tours.push(tour);\n    };\n\n    /**\n     * Used by uiTourController to remove a destroyed tour from the registry\n     *\n     * @protected\n     * @param tour\n     */\n    service._unregisterTour = function (tour) {\n        tours.splice(tours.indexOf(tour), 1);\n    };\n\n    return service;\n}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = [\"Tether\", \"$compile\", \"$document\", \"$templateCache\", \"$rootScope\", \"$window\", \"$q\", \"$timeout\", \"positionMap\", \"uiTourBackdrop\", function (Tether, $compile, $document, $templateCache, $rootScope, $window, $q, $timeout, positionMap, uiTourBackdrop) {\n    'ngInject';\n\n    var service = {},\n\n    /* eslint-disable */\n    easeInOutQuad = function easeInOutQuad(t) {\n        return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n    };\n    /* eslint-enable */\n\n    function createPopup(step, tour) {\n        var scope = _angular2.default.extend($rootScope.$new(), {\n            tourStep: step,\n            tour: tour\n        }),\n            popup = $compile($templateCache.get('tour-step-popup.html'))(scope),\n            parent = step.config('appendToBody') ? _angular2.default.element($document[0].body) : step.element.parent();\n\n        parent.append(popup);\n        return popup;\n    }\n\n    function focusPopup(step) {\n        if (!step.config('orphan') && step.config('scrollIntoView')) {\n            var scrollParent = step.config('scrollParentId') === '$document' ? $document : _angular2.default.element($document[0].getElementById(step.config('scrollParentId')));\n\n            scrollParent.duScrollToElementAnimated(step.popup, step.config('scrollOffset'), 500, easeInOutQuad).then(function () {\n                step.popup[0].focus();\n            }, function () {\n                return 'Failed to scroll.';\n            });\n        } else {\n            step.popup[0].focus();\n        }\n    }\n\n    function positionPopup(step) {\n        //orphans are positioned via css\n        if (step.config('orphan')) {\n            return;\n        }\n\n        //otherwise create or reposition the Tether\n        if (!step.tether) {\n            //create a tether\n            step.tether = new Tether({\n                element: step.popup[0],\n                target: step.element[0],\n                attachment: positionMap[step.config('placement')].popup,\n                targetAttachment: positionMap[step.config('placement')].target\n            });\n            step.tether.position();\n        } else {\n            //just reposition the tether\n            step.tether.enable();\n            step.tether.position();\n        }\n    }\n\n    /**\n     * Activates the popup for a given step\n     *\n     * @param step\n     */\n    function showPopup(step) {\n        //activate Tether\n        positionPopup(step);\n\n        //nudge the screen to ensure that Tether is positioned properly\n        $window.scrollTo($window.scrollX, $window.scrollY + 1);\n\n        //wait until next digest\n        $timeout(function () {\n            //show the popup\n            step.popup.css({\n                visibility: 'visible',\n                display: 'block'\n            });\n\n            //scroll to popup\n            focusPopup(step);\n        }, 100); //ensures size and position are correct\n    }\n\n    /**\n     * Hides the popup for a given step\n     *\n     * @param step\n     */\n    function hidePopup(step) {\n        if (step.tether) {\n            step.tether.disable();\n        }\n        step.popup[0].style.setProperty('display', 'none', 'important');\n    }\n\n    /**\n     * Initializes a step from a config object\n     *\n     * @param {{}} step - Step options\n     * @param {{}} tour - The tour to which the step belongs\n     * @returns {*} configured step\n     */\n    service.createStep = function (step, tour) {\n        if (!step.element && !step.elementId && !step.selector) {\n            throw {\n                name: 'PropertyMissingError',\n                message: 'Steps require an element, ID, or selector to be specified'\n            };\n        }\n\n        //for getting inherited options\n        step.config = function (option) {\n            if (_angular2.default.isDefined(step[option])) {\n                return step[option];\n            }\n            return tour.config(option);\n        };\n\n        //forces Tether to reposition\n        step.reposition = function () {\n            if (step.tether) {\n                step.tether.position();\n            }\n        };\n\n        //ensure it is enabled by default\n        if (!_angular2.default.isDefined(step.enabled)) {\n            step.enabled = true;\n        }\n\n        return step;\n    };\n\n    /**\n     * Shows a step for a given tour\n     *\n     * @param {{}} step - Step to show\n     * @param {{}} tour - The tour to which the step belongs\n     */\n    service.showStep = function (step, tour) {\n        //ensure there is a step target\n        if (step.elementId) {\n            step.element = _angular2.default.element($document[0].getElementById(step.elementId));\n        }\n        if (step.selector) {\n            step.element = _angular2.default.element($document[0].querySelector(step.selector));\n        }\n\n        if (!step.element) {\n            throw 'No element found for step: \\'' + step + '\\'.';\n        }\n\n        //show the backdrop\n        if (step.config('backdrop')) {\n            uiTourBackdrop.createForElement(step.element, {\n                preventScrolling: step.config('preventScrolling'),\n                fixed: step.config('fixed'),\n                borderRadius: step.config('backdropBorderRadius'),\n                padding: step.config('backdropPadding'),\n                fullScreen: step.config('orphan'),\n                events: {\n                    click: step.config('onBackdropClick')\n                }\n            });\n        }\n\n        //activate the target\n        step.element.addClass('ui-tour-active-step');\n\n        //create the popup\n        if (!step.popup) {\n            step.popup = createPopup(step, tour);\n        }\n\n        //show the popup\n        showPopup(step);\n    };\n\n    /**\n     * Shows a step\n     *\n     * @param {{}} step - Step to show\n     */\n    service.hideStep = function (step) {\n        //hide the popup\n        hidePopup(step);\n\n        //deactivate the target\n        step.element.removeClass('ui-tour-active-step');\n    };\n\n    return service;\n}];\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nuiTourController.$inject = [\"$timeout\", \"$q\", \"$filter\", \"$document\", \"TourConfig\", \"uiTourBackdrop\", \"uiTourService\", \"TourStepService\", \"hotkeys\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = uiTourController;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nvar _events = __webpack_require__(20);\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uiTourController($timeout, $q, $filter, $document, TourConfig, uiTourBackdrop, uiTourService, TourStepService, hotkeys) {\n    'ngInject';\n\n    var self = new _events2.default(),\n        stepList = [],\n        currentStep = null,\n        _resumeWhenFound,\n        TourStatus = {\n        OFF: 0,\n        ON: 1,\n        PAUSED: 2,\n        WAITING: 3\n    },\n        tourStatus = TourStatus.OFF,\n        options = TourConfig.getAll();\n\n    //polyfill \"off\"\n    self.off = self.removeListener;\n\n    /**\n     * Closer to $evalAsync, just resolves a promise\n     * after the next digest cycle\n     *\n     * @returns {Promise}\n     */\n    function digest() {\n        return $q.resolve();\n    }\n\n    /**\n     * return current step or null\n     * @returns {step}\n     */\n    function getCurrentStep() {\n        return currentStep;\n    }\n\n    /**\n     * set the current step (doesnt do anything else)\n     * @param {step} step Current step\n     */\n    function setCurrentStep(step) {\n        currentStep = step;\n    }\n\n    /**\n     * gets a step relative to current step\n     *\n     * @param {number} offset Positive integer to search right, negative to search left\n     * @returns {step}\n     */\n    function getStepByOffset(offset) {\n        if (!getCurrentStep()) {\n            return null;\n        }\n        if (getCurrentStep().config('nextPath') && offset > 0) {\n            return null;\n        }\n        if (getCurrentStep().config('prevPath') && offset < 0) {\n            return null;\n        }\n\n        return stepList[stepList.indexOf(getCurrentStep()) + offset];\n    }\n\n    /**\n     * retrieves a step (if it exists in the step list) by index, ID, or identity\n     * Note: I realize ID is short for identity, but ID is really the step name here\n     *\n     * @param {string | number | step} stepOrStepIdOrIndex Step to retrieve\n     * @returns {step}\n     */\n    function getStep(stepOrStepIdOrIndex) {\n        //index\n        if (_angular2.default.isNumber(stepOrStepIdOrIndex)) {\n            return stepList[stepOrStepIdOrIndex];\n        }\n\n        //ID string\n        if (_angular2.default.isString(stepOrStepIdOrIndex)) {\n            return stepList.filter(function (step) {\n                return step.stepId === stepOrStepIdOrIndex;\n            })[0];\n        }\n\n        //object\n        if (_angular2.default.isObject(stepOrStepIdOrIndex)) {\n            //step identity\n            if (~stepList.indexOf(stepOrStepIdOrIndex)) {\n                return stepOrStepIdOrIndex;\n            }\n\n            //step copy\n            if (stepOrStepIdOrIndex.stepId) {\n                return stepList.filter(function (step) {\n                    return step.stepId === stepOrStepIdOrIndex.stepId;\n                })[0];\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * return next step or null\n     * @returns {step}\n     */\n    function getNextStep() {\n        return getStepByOffset(+1);\n    }\n\n    /**\n     * return previous step or null\n     * @returns {step}\n     */\n    function getPrevStep() {\n        return getStepByOffset(-1);\n    }\n\n    /**\n     * is there a next step\n     *\n     * @returns {boolean}\n     */\n    function isNext() {\n        //not using .config('onNext') because we are looking only for config on the step and not the tour\n        return !!(getNextStep() || getCurrentStep() && (getCurrentStep().config('nextPath') || getCurrentStep().onNext));\n    }\n\n    /**\n     * is there a previous step\n     *\n     * @returns {boolean}\n     */\n    function isPrev() {\n        //not using .config('onPrev') because we are looking only for config on the step and not the tour\n        return !!(getPrevStep() || getCurrentStep() && (getCurrentStep().config('prevPath') || getCurrentStep().onPrev));\n    }\n\n    /**\n     * A safe way to invoke a possibly null event handler\n     *\n     * @param handler\n     * @returns {*}\n     */\n    function handleEvent(handler) {\n        return (handler || digest)();\n    }\n\n    /**\n     * Configures hot keys for controlling the tour with the keyboard\n     */\n    function setHotKeys() {\n        hotkeys.add({\n            combo: 'esc',\n            description: 'End tour',\n            callback: function callback() {\n                self.end();\n            }\n        });\n\n        hotkeys.add({\n            combo: 'right',\n            description: 'Go to next step',\n            callback: function callback() {\n                if (isNext()) {\n                    self.next();\n                }\n            }\n        });\n\n        hotkeys.add({\n            combo: 'left',\n            description: 'Go to previous step',\n            callback: function callback() {\n                if (isPrev()) {\n                    self.prev();\n                }\n            }\n        });\n    }\n\n    /**\n     * Turns off hot keys for when the tour isn't running\n     */\n    function unsetHotKeys() {\n        hotkeys.del('esc');\n        hotkeys.del('right');\n        hotkeys.del('left');\n    }\n\n    //---------------- Protected API -------------------\n    /**\n     * Adds a step to the tour in order\n     *\n     * @protected\n     * @param {object} step\n     */\n    self.addStep = function (step) {\n        if (~stepList.indexOf(step)) {\n            return;\n        }\n        stepList.push(step);\n        stepList = $filter('orderBy')(stepList, 'order');\n        self.emit('stepAdded', step);\n        if (_resumeWhenFound) {\n            _resumeWhenFound(step);\n        }\n    };\n\n    /**\n     * Removes a step from the tour\n     *\n     * @protected\n     * @param step\n     */\n    self.removeStep = function (step) {\n        var index = stepList.indexOf(step);\n\n        if (index !== -1) {\n            stepList.splice(index, 1);\n            self.emit('stepRemoved', step);\n        }\n    };\n\n    /**\n     * if a step's order was changed, replace it in the list\n     *\n     * @protected\n     * @param step\n     */\n    self.reorderStep = function (step) {\n        self.removeStep(step);\n        self.addStep(step);\n        self.emit('stepsReordered', step);\n    };\n\n    /**\n     * Checks to see if a step exists by ID, index, or identity\n     *\n     * @protected\n     * @param {string | number | step} stepOrStepIdOrIndex Step to check\n     * @returns {boolean}\n     */\n    self.hasStep = function (stepOrStepIdOrIndex) {\n        return !!getStep(stepOrStepIdOrIndex);\n    };\n\n    /**\n     * show supplied step\n     *\n     * @protected\n     * @param step\n     * @returns {promise}\n     */\n    self.showStep = function (step) {\n        return $q.resolve().then(function () {\n            if (!step) {\n                throw 'No step.';\n            }\n\n            return handleEvent(step.config('onShow'));\n        }).then(function () {\n\n            TourStepService.showStep(step, self);\n\n            return digest();\n        }).then(function () {\n            return handleEvent(step.config('onShown'));\n        }).then(function () {\n\n            self.emit('stepShown', step);\n            step.isNext = isNext;\n            step.isPrev = isPrev;\n        });\n    };\n\n    /**\n     * hides the supplied step\n     *\n     * @protected\n     * @param step\n     * @returns {Promise}\n     */\n    self.hideStep = function (step) {\n        return $q.resolve().then(function () {\n            if (!step) {\n                throw 'No step.';\n            }\n\n            return handleEvent(step.config('onHide'));\n        }).then(function () {\n\n            TourStepService.hideStep(step);\n\n            return digest();\n        }).then(function () {\n            return handleEvent(step.config('onHidden'));\n        }).then(function () {\n\n            self.emit('stepHidden', step);\n        });\n    };\n\n    /**\n     * Returns the value for specified option\n     *\n     * @protected\n     * @param {string} option Name of option\n     * @returns {*}\n     */\n    self.config = function (option) {\n        return options[option];\n    };\n\n    /**\n     * pass options from directive\n     *\n     * @protected\n     * @param opts\n     * @returns {self}\n     */\n    self.init = function (opts) {\n        options = _angular2.default.extend(options, opts);\n        self.options = options;\n        uiTourService._registerTour(self);\n        self.initialized = true;\n        self.emit('initialized');\n        return self;\n    };\n\n    /**\n     * Unregisters with the tour service when tour is destroyed\n     *\n     * @protected\n     */\n    self.destroy = function () {\n        uiTourService._unregisterTour(self);\n    };\n    //------------------ end Protected API ------------------\n\n\n    //------------------ Public API ------------------\n\n    /**\n     * starts the tour\n     *\n     * @returns {Promise}\n     */\n    self.start = function () {\n        return self.startAt(0);\n    };\n\n    /**\n     * starts the tour at a specified step, step index, or step ID\n     *\n     * @public\n     */\n    self.startAt = function (stepOrStepIdOrIndex) {\n        var step;\n        return $q.resolve().then(function () {\n            return handleEvent(options.onStart);\n        }).then(function () {\n            step = getStep(stepOrStepIdOrIndex);\n\n\n            setCurrentStep(step);\n            tourStatus = TourStatus.ON;\n            self.emit('started', step);\n\n            if (options.useHotkeys) {\n                setHotKeys();\n            }\n\n            return self.showStep(getCurrentStep());\n        });\n    };\n\n    /**\n     * ends the tour\n     *\n     * @public\n     */\n    self.end = function () {\n        return $q.resolve().then(function () {\n            return handleEvent(options.onEnd);\n        }).then(function () {\n\n            if (getCurrentStep()) {\n                uiTourBackdrop.hide();\n                return self.hideStep(getCurrentStep());\n            }\n        }).then(function () {\n            setCurrentStep(null);\n            self.emit('ended');\n            tourStatus = TourStatus.OFF;\n            _resumeWhenFound = null;\n\n            if (options.useHotkeys) {\n                unsetHotKeys();\n            }\n        });\n    };\n\n    /**\n     * pauses the tour\n     *\n     * @public\n     */\n    self.pause = function () {\n        return $q.resolve().then(function () {\n            return handleEvent(options.onPause);\n        }).then(function () {\n\n            tourStatus = TourStatus.PAUSED;\n\n            uiTourBackdrop.hide();\n            return self.hideStep(getCurrentStep());\n        }).then(function () {\n\n            self.emit('paused', getCurrentStep());\n        });\n    };\n\n    /**\n     * resumes a paused tour or starts it\n     *\n     * @public\n     */\n    self.resume = function () {\n        return $q.resolve().then(function () {\n            return handleEvent(options.onResume);\n        }).then(function () {\n\n            tourStatus = TourStatus.ON;\n            self.emit('resumed', getCurrentStep());\n            return self.showStep(getCurrentStep());\n        });\n    };\n\n    /**\n     * move to next step\n     *\n     * @public\n     * @returns {promise}\n     */\n    self.next = function () {\n        return self.goTo('$next');\n    };\n\n    /**\n     * move to previous step\n     *\n     * @public\n     * @returns {promise}\n     */\n    self.prev = function () {\n        return self.goTo('$prev');\n    };\n\n    /**\n     * Jumps to the provided step, step ID, or step index\n     *\n     * @param {step | string | number} goTo Step object, step ID string, or step index to jump to\n     * @returns {promise} Promise that resolves once the step is shown\n     */\n    self.goTo = function (goTo) {\n        var currentStep, stepToShow, actionMap, _test;\n\n        return $q.resolve().then(function () {\n            currentStep = getCurrentStep();\n            stepToShow = getStep(goTo);\n            actionMap = {\n                $prev: {\n                    getStep: getPrevStep,\n                    preEvent: 'onPrev',\n                    navCheck: 'prevStep'\n                },\n                $next: {\n                    getStep: getNextStep,\n                    preEvent: 'onNext',\n                    navCheck: 'nextStep'\n                }\n            };\n            _test = goTo === '$prev' || goTo === '$next';\n\n            if (_test) {\n                return $q.resolve().then(function () {\n                    return handleEvent(currentStep.config(actionMap[goTo].preEvent));\n                }).then(function () {\n                    return self.hideStep(currentStep);\n                });\n            }\n        }).then(function () {\n\n            //if a redirect occurred during onNext or onPrev, getCurrentStep() !== currentStep\n            //this will only be true if no redirect occurred, since the redirect sets current step\n            if (_test && (!currentStep[actionMap[goTo].navCheck] || currentStep[actionMap[goTo].navCheck] !== getCurrentStep().stepId)) {\n                setCurrentStep(actionMap[goTo].getStep());\n                self.emit('stepChanged', getCurrentStep());\n            }\n\n            //if the next/prev step does not have a backdrop, hide it\n            if (_test && getCurrentStep() && !getCurrentStep().config('backdrop')) {\n                uiTourBackdrop.hide();\n            }\n\n            //if the next/prev step does not prevent scrolling, allow it\n            if (_test && getCurrentStep() && !getCurrentStep().config('preventScrolling')) {\n                uiTourBackdrop.shouldPreventScrolling(false);\n            }\n\n            if (_test && getCurrentStep()) {\n                return self.showStep(getCurrentStep());\n            } else {\n                if (_test) {\n\n                    return self.end();\n                } else {\n                    return $q.resolve().then(function () {\n\n                        //if no step found\n                        if (!stepToShow) {\n                            throw 'No step.';\n                        }\n\n                        //take action\n                        return self.hideStep(getCurrentStep());\n                    }).then(function () {\n\n                        //if the next/prev step does not have a backdrop, hide it\n                        if (getCurrentStep().config('backdrop') && !stepToShow.config('backdrop')) {\n                            uiTourBackdrop.hide();\n                        }\n\n                        //if the next/prev step does not prevent scrolling, allow it\n                        if (getCurrentStep().config('backdrop') && !stepToShow.config('preventScrolling')) {\n                            uiTourBackdrop.shouldPreventScrolling(false);\n                        }\n\n                        setCurrentStep(stepToShow);\n                        self.emit('stepChanged', getCurrentStep());\n                        return self.showStep(stepToShow);\n                    });\n                }\n            }\n        }).then(function () {});\n    };\n\n    /**\n     * Tells the tour to pause until a specific step is added\n     *\n     * @public\n     * @param waitForStep\n     */\n    self.waitFor = function (waitForStep) {\n        function resumeWhenFound(step) {\n            if (step.stepId === waitForStep) {\n                setCurrentStep(stepList[stepList.indexOf(step)]);\n                self.resume();\n                _resumeWhenFound = null;\n            }\n        }return $q.resolve().then(function () {\n            _resumeWhenFound = resumeWhenFound;\n            //must reject so that when used in a lifecycle hook the execution stops\n            return self.pause();\n        }).then(function () {\n            tourStatus = TourStatus.WAITING;\n            return $q.reject();\n        });\n    };\n\n    /**\n     * Creates a step from a configuration object\n     *\n     * @param {{}} options - Step options, all are static\n     */\n    self.createStep = function (options) {\n        var step = TourStepService.createStep(options, self);\n\n        if (self.initialized) {\n            self.addStep(step);\n        } else {\n            self.once('initialized', function () {\n                self.addStep(step);\n            });\n        }\n\n        return step;\n    };\n\n    /**\n     * returns a copy of the current step (copied to avoid breaking internal functions)\n     *\n     * @returns {step}\n     */\n    self.getCurrentStep = function () {\n        return getCurrentStep();\n    };\n\n    /**\n     * Forces the popover and backdrop to reposition\n     */\n    self.reposition = function () {\n        if (getCurrentStep()) {\n            getCurrentStep().reposition();\n            uiTourBackdrop.reposition();\n        }\n    };\n\n    /**\n     * @typedef number TourStatus\n     */\n\n    /**\n     * Returns the current status of the tour\n     * @returns {TourStatus}\n     */\n    self.getStatus = function () {\n        return tourStatus;\n    };\n    /**\n     * @enum TourStatus\n     */\n    self.Status = TourStatus;\n\n    //------------------ end Public API ------------------\n\n    //some debugging functions\n    //all are private, unsafe, subject to change\n    //strongly not recommended for production code\n\n    self._getSteps = function () {\n        return stepList;\n    };\n    self._getCurrentStep = getCurrentStep;\n    self._setCurrentStep = setCurrentStep;\n\n    return self;\n}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nuiTourDirective.$inject = [\"TourHelpers\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = uiTourDirective;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uiTourDirective(TourHelpers) {\n    'ngInject';\n\n    return {\n        restrict: 'EA',\n        scope: true,\n        controller: 'uiTourController',\n        link: function link(scope, element, attrs, ctrl) {\n\n            //Pass static options through or use defaults\n            var tour = {\n                name: attrs.uiTour\n            },\n                events = 'onReady onStart onEnd onShow onShown onHide onHidden onNext onPrev onPause onResume onBackdropClick'.split(' '),\n                properties = 'placement animation popupDelay closePopupDelay enable appendToBody popupClass orphan backdrop backdropBorderRadius backdropPadding scrollParentId scrollOffset scrollIntoView useUiRouter useHotkeys'.split(' ');\n\n            //Pass interpolated values through\n            TourHelpers.attachInterpolatedValues(attrs, tour, properties, 'uiTour');\n\n            //Attach event handlers\n            TourHelpers.attachEventHandlers(scope, attrs, tour, events, 'uiTour');\n\n            //override the template url\n            if (attrs[TourHelpers.getAttrName('templateUrl', 'uiTour')]) {\n                tour.templateUrl = scope.$eval(attrs[TourHelpers.getAttrName('templateUrl', 'uiTour')]);\n            }\n\n            //If there is an options argument passed, just use that instead\n            if (attrs[TourHelpers.getAttrName('options')]) {\n                _angular2.default.extend(tour, scope.$eval(attrs[TourHelpers.getAttrName('options')]));\n            }\n\n            //Initialize tour\n            scope.tour = ctrl.init(tour);\n            if (typeof tour.onReady === 'function') {\n                tour.onReady();\n            }\n\n            scope.$on('$destroy', function () {\n                ctrl.destroy();\n            });\n        }\n    };\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\ntourStepDirective.$inject = [\"TourHelpers\", \"uiTourService\", \"$sce\"];\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = tourStepDirective;\n\nvar _angular = __webpack_require__(0);\n\nvar _angular2 = _interopRequireDefault(_angular);\n\n__webpack_require__(23);\n\n__webpack_require__(24);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction tourStepDirective(TourHelpers, uiTourService, $sce) {\n    'ngInject';\n\n    return {\n        restrict: 'EA',\n        scope: true,\n        require: '?^uiTour',\n        link: function link(scope, element, attrs, uiTourCtrl) {\n            var ctrl,\n\n            //Assign required options\n            step,\n                events = 'onShow onShown onHide onHidden onNext onPrev onBackdropClick'.split(' '),\n                options = 'content title animation placement backdrop backdropBorderRadius backdropPadding orphan popupDelay popupCloseDelay popupClass fixed preventScrolling scrollIntoView nextStep prevStep nextPath prevPath scrollOffset scrollParentId'.split(' '),\n                orderWatch,\n                enabledWatch,\n                contentWatch;\n\n            //check if this step belongs to another tour\n            if (attrs[TourHelpers.getAttrName('belongsTo')]) {\n                ctrl = uiTourService.getTourByName(attrs[TourHelpers.getAttrName('belongsTo')]);\n            } else if (uiTourCtrl) {\n                ctrl = uiTourCtrl;\n            }\n\n            if (!ctrl) {\n                throw {\n                    name: 'DependencyMissingError',\n                    message: 'No tour provided for tour step.'\n                };\n            }\n\n            //initialize the step\n            step = ctrl.createStep({\n                stepId: attrs.tourStep,\n                element: element\n            });\n\n            //Pass interpolated values through\n            TourHelpers.attachInterpolatedValues(attrs, step, options);\n            orderWatch = attrs.$observe(TourHelpers.getAttrName('order'), function (order) {\n                step.order = !isNaN(order * 1) ? order * 1 : 0;\n                if (ctrl.hasStep(step)) {\n                    ctrl.reorderStep(step);\n                }\n            });\n            enabledWatch = attrs.$observe(TourHelpers.getAttrName('enabled'), function (isEnabled) {\n                step.enabled = isEnabled !== 'false';\n                if (step.enabled) {\n                    ctrl.addStep(step);\n                } else {\n                    ctrl.removeStep(step);\n                }\n            });\n\n            // watch for content updates\n            contentWatch = attrs.$observe(TourHelpers.getAttrName('content'), function (content) {\n                if (content) {\n                    step.trustedContent = $sce.trustAsHtml(step.content);\n                }\n            });\n\n            //Attach event handlers\n            TourHelpers.attachEventHandlers(scope, attrs, step, events);\n\n            if (attrs[TourHelpers.getAttrName('templateUrl')]) {\n                step.templateUrl = scope.$eval(attrs[TourHelpers.getAttrName('templateUrl')]);\n            }\n\n            //If there is an options argument passed, just use that instead\n            if (attrs[TourHelpers.getAttrName('options')]) {\n                _angular2.default.extend(step, scope.$eval(attrs[TourHelpers.getAttrName('options')]));\n            }\n\n            //set up redirects (deprecated)\n            if (step.nextPath) {\n                step.redirectNext = true;\n                TourHelpers.setRedirect(step, ctrl, 'onNext', step.nextPath, step.nextStep);\n            }\n            if (step.prevPath) {\n                step.redirectPrev = true;\n                TourHelpers.setRedirect(step, ctrl, 'onPrev', step.prevPath, step.prevStep);\n            }\n\n            /**\n             * for HTML content\n             * @deprecated use `step.content` instead\n             */\n            step.trustedContent = $sce.trustAsHtml(step.content);\n\n            //Add step and tour to scope\n            scope.tourStep = step;\n            scope.tour = ctrl;\n\n            Object.defineProperties(step, {\n                element: {\n                    value: element\n                },\n                scope: {\n                    value: scope\n                }\n            });\n\n            //clean up when element is destroyed\n            scope.$on('$destroy', function () {\n                ctrl.removeStep(step);\n                orderWatch();\n                enabledWatch();\n                contentWatch();\n            });\n        }\n    };\n}\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"bm.uiTour\"])}\ncatch(e){ngModule=angular.module(\"bm.uiTour\",[])}\nvar v1=\"<div class=\\\"tourStep ui-tour-popup popover {{ tourStep.config('popupClass') }} {{ tourStep.config('orphan') ? 'ui-tour-popup-orphan' : tourStep.config('placement').split('-')[0] + ' ' + tourStep.config('placement') }}\\\" ng-style=\\\"{\\n        visibility: 'hidden',\\n        display: 'block',\\n        position: tourStep.config('fixed') || tourStep.config('orphan') ? 'fixed' : 'absolute',\\n        zIndex: tourStep.config('backdropZIndex') + 2\\n     }\\\" tabindex=\\\"0\\\" aria-hidden=\\\"{{ tour._getCurrentStep() !== tourStep }}\\\">\\n<div class=\\\"arrow\\\"></div>\\n<div class=\\\"popover-inner tour-step-inner\\\">\\n<h3 class=\\\"popover-title tour-step-title\\\" ng-bind=\\\"tourStep.config('title')\\\" ng-if=\\\"tourStep.config('title')\\\"></h3>\\n<div class=\\\"popover-content tour-step-content\\\" ng-include=\\\"tourStep.config('templateUrl') || 'tour-step-template.html'\\\"></div>\\n</div>\\n</div>\\n\";\nvar id1=\"tour-step-popup.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"bm.uiTour\"])}\ncatch(e){ngModule=angular.module(\"bm.uiTour\",[])}\nvar v1=\"<div>\\n<div class=\\\"popover-content tour-step-content\\\" bind-html-compile=\\\"tourStep.trustedContent || tourStep.content\\\"></div>\\n<div class=\\\"popover-navigation tour-step-navigation\\\">\\n<div class=\\\"btn-group\\\">\\n<button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-if=\\\"tourStep.isPrev()\\\" ng-click=\\\"tour.prev()\\\">&laquo; Prev</button>\\n<button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-if=\\\"tourStep.isNext()\\\" ng-click=\\\"tour.next()\\\">Next &raquo;</button>\\n<button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"tour.pause()\\\">Pause</button>\\n</div>\\n<button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"tour.end()\\\">End tour</button>\\n</div>\\n</div>\\n\";\nvar id1=\"tour-step-template.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ })\n/******/ ]);\n});","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar Timeout = require('../../util/timeout');\nvar isDeepEqual = require('../../util').isDeepEqual;\nvar RENDER_HINT_RESPONSE_TIME_MS = 2000; // time to wait for server response (before resending all hints.)\nvar messageId = 1;\nvar RenderHintsSignaling = /** @class */ (function (_super) {\n    __extends(RenderHintsSignaling, _super);\n    /**\n     * Construct a {@link RenderHintsSignaling}.\n     */\n    function RenderHintsSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'render_hints', options) || this;\n        Object.defineProperties(_this, {\n            _trackSidsToRenderHints: {\n                value: new Map()\n            },\n            _responseTimer: {\n                value: new Timeout(function () {\n                    _this._sendAllHints();\n                    // once timer fires, for next round double the delay.\n                    _this._responseTimer.setDelay(_this._responseTimer.delay * 2);\n                }, RENDER_HINT_RESPONSE_TIME_MS, false),\n            }\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'render_hints':\n                        _this._processHintResults((message && message.subscriber && message.subscriber.hints) || []);\n                        break;\n                    default:\n                        _this._log.warn('Unknown message type: ', message.type);\n                        break;\n                }\n            });\n            // NOTE(mpatwardhan): When transport is set (either 1st time of after vms failover)\n            // resend all track states.\n            _this._sendAllHints();\n        });\n        return _this;\n    }\n    RenderHintsSignaling.prototype._sendAllHints = function () {\n        var _this = this;\n        // to force sending all hints simply mark all tracks as dirty.\n        Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n            var trackState = _this._trackSidsToRenderHints.get(trackSid);\n            if (trackState.renderDimensions) {\n                trackState.isDimensionDirty = true;\n            }\n            if ('enabled' in trackState) {\n                trackState.isEnabledDirty = true;\n            }\n        });\n        this._sendHints();\n    };\n    RenderHintsSignaling.prototype._processHintResults = function (hintResults) {\n        var _this = this;\n        this._responseTimer.clear();\n        this._responseTimer.setDelay(RENDER_HINT_RESPONSE_TIME_MS);\n        hintResults.forEach(function (hintResult) {\n            if (hintResult.result !== 'OK') {\n                _this._log.debug('Server error processing hint:', hintResult);\n            }\n        });\n        this._sendHints();\n    };\n    RenderHintsSignaling.prototype._sendHints = function () {\n        var _this = this;\n        if (!this._transport || this._responseTimer.isSet) {\n            return;\n        }\n        var hints = [];\n        Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n            var trackState = _this._trackSidsToRenderHints.get(trackSid);\n            if (trackState.isEnabledDirty || trackState.isDimensionDirty) {\n                var mspHint = {\n                    'track': trackSid,\n                };\n                if (trackState.isEnabledDirty) {\n                    mspHint.enabled = trackState.enabled;\n                    trackState.isEnabledDirty = false;\n                }\n                if (trackState.isDimensionDirty) {\n                    // eslint-disable-next-line camelcase\n                    mspHint.render_dimensions = trackState.renderDimensions;\n                    trackState.isDimensionDirty = false;\n                }\n                hints.push(mspHint);\n            }\n        });\n        if (hints.length > 0) {\n            var payLoad = {\n                type: 'render_hints',\n                subscriber: {\n                    id: messageId++,\n                    hints: hints\n                }\n            };\n            this._log.debug('Outgoing: ', payLoad);\n            this._transport.publish(payLoad);\n            this._responseTimer.start();\n        }\n    };\n    /**\n     * @param {Track.SID} trackSid\n     * @param {ClientRenderHint} renderHint\n     */\n    RenderHintsSignaling.prototype.setTrackHint = function (trackSid, renderHint) {\n        var trackState = this._trackSidsToRenderHints.get(trackSid) || { isEnabledDirty: false, isDimensionDirty: false };\n        if ('enabled' in renderHint && trackState.enabled !== renderHint.enabled) {\n            trackState.enabled = !!renderHint.enabled;\n            trackState.isEnabledDirty = true;\n        }\n        if (renderHint.renderDimensions && !isDeepEqual(renderHint.renderDimensions, trackState.renderDimensions)) {\n            // eslint-disable-next-line camelcase\n            trackState.renderDimensions = renderHint.renderDimensions;\n            trackState.isDimensionDirty = true;\n        }\n        this._trackSidsToRenderHints.set(trackSid, trackState);\n        this._sendHints();\n    };\n    /**\n     * must be called when track is unsubscribed.\n     * @param {Track.SID} trackSid\n     */\n    RenderHintsSignaling.prototype.clearTrackHint = function (trackSid) {\n        this._trackSidsToRenderHints.delete(trackSid);\n    };\n    return RenderHintsSignaling;\n}(MediaSignaling));\nmodule.exports = RenderHintsSignaling;\n//# sourceMappingURL=renderhintssignaling.js.map","module.exports = function pointInPolygonFlat (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = (end-start)/2;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[start+i*2+0], yi = vs[start+i*2+1];\n        var xj = vs[start+j*2+0], yj = vs[start+j*2+1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/:    1252, /* ANSI */\n\t/*::[*/1/*::]*/:   65001, /* DEFAULT */\n\t/*::[*/2/*::]*/:   65001, /* SYMBOL */\n\t/*::[*/77/*::]*/:  10000, /* MAC */\n\t/*::[*/128/*::]*/:   932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/:   949, /* HANGUL */\n\t/*::[*/130/*::]*/:  1361, /* JOHAB */\n\t/*::[*/134/*::]*/:   936, /* GB2312 */\n\t/*::[*/136/*::]*/:   950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/:  1253, /* GREEK */\n\t/*::[*/162/*::]*/:  1254, /* TURKISH */\n\t/*::[*/163/*::]*/:  1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/:  1255, /* HEBREW */\n\t/*::[*/178/*::]*/:  1256, /* ARABIC */\n\t/*::[*/186/*::]*/:  1257, /* BALTIC */\n\t/*::[*/204/*::]*/:  1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/:   874, /* THAI */\n\t/*::[*/238/*::]*/:  1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/:  1252, /* OEM */\n\t/*::[*/69/*::]*/:   6969  /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array<number>*/ { var o/*:Array<number>*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  for (var i = 0; i < input.length; ) {\n    c1 = input.charCodeAt(i++);\n    e1 = c1 >> 2;\n    c2 = input.charCodeAt(i++);\n    e2 = (c1 & 3) << 4 | c2 >> 4;\n    c3 = input.charCodeAt(i++);\n    e3 = (c2 & 15) << 2 | c3 >> 6;\n    e4 = c3 & 63;\n    if (isNaN(c2)) {\n      e3 = e4 = 64;\n    } else if (isNaN(c3)) {\n      e4 = 64;\n    }\n    o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n  }\n  return o;\n}\nfunction Base64_decode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n  for (var i = 0; i < input.length; ) {\n    e1 = Base64_map.indexOf(input.charAt(i++));\n    e2 = Base64_map.indexOf(input.charAt(i++));\n    c1 = e1 << 2 | e2 >> 4;\n    o += String.fromCharCode(c1);\n    e3 = Base64_map.indexOf(input.charAt(i++));\n    c2 = (e2 & 15) << 4 | e3 >> 2;\n    if (e3 !== 64) {\n      o += String.fromCharCode(c2);\n    }\n    e4 = Base64_map.indexOf(input.charAt(i++));\n    c3 = (e3 & 3) << 6 | e4;\n    if (e4 !== 64) {\n      o += String.fromCharCode(c3);\n    }\n  }\n  return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array<number>*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array<number>*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array<string>};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array<Array<string> >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array<Array<string> >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]=  'General';\n\tt[1]=  '0';\n\tt[2]=  '0.00';\n\tt[3]=  '#,##0';\n\tt[4]=  '#,##0.00';\n\tt[9]=  '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0:  'General',\n\t1:  '0',\n\t2:  '0.00',\n\t3:  '#,##0',\n\t4:  '#,##0.00',\n\t9:  '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5:  37, 6:  38, 7:  39, 8:  40,         //  5 -> 37 ...  8 -> 40\n\n\t23:  0, 24:  0, 25:  0, 26:  0,         // 23 ->  0 ... 26 ->  0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59:  1, 60:  2, 61:  3, 62:  4,         // 59 ->  1 ... 62 ->  4\n\n\t67:  9, 68: 10,                         // 67 ->  9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14,                 // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17,         // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22,                 // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47,                 // 79 -> 45 ... 81 -> 47\n\t82: 0                                   // 82 ->  0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t//  5 -- Currency,   0 decimal, black negative\n\t5:  '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t//  6 -- Currency,   0 decimal, red   negative\n\t6:  '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t//  7 -- Currency,   2 decimal, black negative\n\t7:  '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t//  8 -- Currency,   2 decimal, red   negative\n\t8:  '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $  Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $  Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array<number>*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n  /* TODO: properly adjust y/m/d and  */\n  o[0] -= 581;\n  var dow = date.getDay();\n  if(date < 60) dow = (dow + 6) % 7;\n  return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_flt(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = pad0r(val, 0);\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\tri = dec(val, r[1].length);\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(ri,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,##0.00\": return write_num_flt(type, \"#,##0.00\", val);\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(pad0r(aval,0)); return x !== \"0\" ? sign + x : \"\";\n\t\tcase \"###,###.00\": return write_num_flt(type, \"###,##0.00\",val).replace(/^0\\./,\".\");\n\t\tcase \"#,###.00\": return write_num_flt(type, \"#,##0.00\",val).replace(/^0\\./,\".\");\n\t\tdefault:\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num_cm2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_pct2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_exp2(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp2(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(!o.match(/[Ee]/)) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nfunction write_num_int(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_int(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = \"\" + val;\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\"+val).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(0,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(\"\"+aval); return x !== \"0\" ? sign + x : \"\";\n\t\tdefault:\n\t\t\tif(fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0,fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\treturn (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n}\nfunction SSF_split_fmt(fmt/*:string*/)/*:Array<string>*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >=  60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t}\n\t\telse if(decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tjj = ostr.indexOf(\".\")-1;\n\t\t\tfor(i=decpt; i>= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t\tjj = ostr.indexOf(\".\")+1;\n\t\t\tfor(i=decpt; i<out.length; ++i) {\n\t\t\t\tif(out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j<out[i].v.length; ++j) {\n\t\t\t\t\tif(jj<ostr.length) vv += ostr.charAt(jj++);\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t}\n\t}\n\tfor(i=0; i<out.length; ++i) if(out[i] != null && 'n?'.indexOf(out[i].t)>-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\":  if(v == thresh) return true; break;\n\t\tcase \">\":  if(v >  thresh) return true; break;\n\t\tcase \"<\":  if(v <  thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array<string>*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array<number>;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array<number>;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array<number>*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4];\nvar T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array<number>*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n   high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n   add 1980 to stored year\n   stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array<number>*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array<RawBytes>*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array<RawBytes>*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array<number>*/ = [], q/*:Array<number>*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n    DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array<RawBytes>*/, start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/, chkd/*:?Array<boolean>*/)/*:SectorEntry*/ {\n\tvar buf/*:Array<number>*/ = [], buf_chain/*:Array<any>*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array<boolean>*/ = [], buf/*:Array<number>*/ = [], buf_chain/*:Array<RawBytes>*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array<number>*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname:  name,\n\t\t\ttype:  blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL:     blob.read_shift(4, 'i'),\n\t\t\tR:     blob.read_shift(4, 'i'),\n\t\t\tC:     blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name =  filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array<number>*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L =  [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j/*:number*/ = 0, flen/*:number*/ = 0;\n\tvar file/*:CFBEntry*/ = cfb.FileIndex[0];\n\tfor(; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(flen < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array<string>*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array<string>*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/*  LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [   3,   4,   5,   6,   7,   8,   9,  10,  11,  13 , 15,  17,  19,  23,  27,  31,  35,  43,  51,  59,  67,  83,  99, 115, 131, 163, 195, 227, 258 ];\n\n/*  DST_ID = [  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,  14,  15,  16,  17,  18,  19,   20,   21,   22,   23,   24,   25,   26,    27,    28,    29 ]; */\nvar DST_LN = [  1,  2,  3,  4,  5,  7,  9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<<n)-1);\n\tvar v = buf[h] >>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count  = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32)  : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens/*:Array<number>*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array<number>*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token  */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128)   : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count =  use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes/*:Array<number>*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4,  (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4,  (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text/*:string*/)/*:string*/ {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o/*:Array<string>*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array<string>*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array<string>*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array<any>*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array<number>*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array<string>*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i<k.length; ++i) {\n\t\tvar n = k[i].replace(/^Root Entry[\\/]/,\"\").toLowerCase();\n\t\tif(f == n || g == n) return zip.files ? zip.files[k[i]] : zip.FileIndex[i];\n\t}\n\treturn null;\n}\n\nfunction getzipfile(zip, file/*:string*/) {\n\tvar o = safegetzipfile(zip, file);\n\tif(o == null) throw new Error(\"Cannot find file \" + file + \" in zip\");\n\treturn o;\n}\n\nfunction getzipdata(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdata(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipdata(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipstr(zip, file/*:string*/, safe/*:?boolean*/)/*:?string*/ {\n\tif(!safe) return getdatastr(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipstr(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipbin(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdatabin(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipbin(zip, file); } catch(e) { return null; }\n}\n\nfunction zipentries(zip) {\n\tvar k = zip.FullPaths || keys(zip.files), o = [];\n\tfor(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\\/]/, \"\"));\n\treturn o.sort();\n}\n\nfunction zip_add_file(zip, path, content) {\n\tif(zip.FullPaths) {\n\t\tif(typeof content == \"string\") {\n\t\t\tvar res;\n\t\t\tif(has_buf) res = Buffer_from(content);\n\t\t\t/* TODO: investigate performance in Edge 13 */\n\t\t\t//else if(typeof TextEncoder !== \"undefined\") res = new TextEncoder().encode(content);\n\t\t\telse res = utf8decode(content);\n\t\t\treturn CFB.utils.cfb_add(zip, path, res);\n\t\t}\n\t\tCFB.utils.cfb_add(zip, path, content);\n\t}\n\telse zip.file(path, content);\n}\n\nfunction zip_new() { return CFB.utils.cfb_new(); }\n\nfunction zip_read(d, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": return CFB.read(d, { type: \"base64\" });\n\t\tcase \"binary\": return CFB.read(d, { type: \"binary\" });\n\t\tcase \"buffer\": case \"array\": return CFB.read(d, { type: \"buffer\" });\n\t}\n\tthrow new Error(\"Unrecognized type \" + o.type);\n}\n\nfunction resolve_path(path/*:string*/, base/*:string*/)/*:string*/ {\n\tif(path.charAt(0) == \"/\") return path.slice(1);\n\tvar result = base.split('/');\n\tif(base.slice(-1) != \"/\") result.pop(); // folder path\n\tvar target = path.split('/');\n\twhile (target.length !== 0) {\n\t\tvar step = target.shift();\n\t\tif (step === '..') result.pop();\n\t\telse if (step !== '.') result.push(step);\n\t}\n\treturn result.join('/');\n}\nvar XML_HEADER = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r\\n';\nvar attregexg=/([^\"\\s?>\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'&quot;': '\"',\n\t'&apos;': \"'\",\n\t'&gt;': '>',\n\t'&lt;': '<',\n\t'&amp;': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"<![CDATA[\");\n\t\tif(i == -1) return s.replace(encregex, function($$, $1) { return encodings[$$]||String.fromCharCode(parseInt($1,$$.indexOf(\"x\")>-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"<br/>\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\&#10;\"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches <foo>...</foo> extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)</(?:\\\\w+:)?'+f+'>',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt',   '>'], ['lt',   '<'], ['amp',  '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+</g,\"<\")\n\t\t\t\t// Replace remaining new lines and spaces with space\n\t\t\t\t.replace(/[\\t\\n\\r ]+/g, \" \")\n\t\t\t\t// Replace <br> tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)</(?:vt:)?\" + bt + \">\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)</;\nfunction parseVector(data/*:string*/, opts)/*:Array<{v:string,t:string}>*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array<string>*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array<any>*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f + '>'; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f : \"/\") + '>';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/&quot;/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?><!\\/:]*:|)([^\\s?<>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o':    'urn:schemas-microsoft-com:office:office',\n\t'x':    'urn:schemas-microsoft-com:office:excel',\n\t'ss':   'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt':   'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv':   'http://macVmlSchemaUri',\n\t'v':    'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array<Array<RawBytes> >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i<bufs[0].length;++i) if(bufs[0][i]) for(var j=0,L=bufs[0][i].length;j<L;j+=w) x.push.apply(x, bufs[0][i].slice(j,j+w)); return x; };\nvar __toBuffer = has_buf ? function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar __utf16le = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; } : ___utf16le;\n\nvar ___hexlify = function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar __hexlify = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { return Buffer.isBuffer(b)/*:: && b instanceof Buffer*/ ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); } : ___hexlify;\n\nvar ___utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(\"\"); };\nvar __utf8 = has_buf ? function utf8_b(b/*:RawBytes|CFBlob*/, s/*:number*/, e/*:number*/) { return (Buffer.isBuffer(b)/*:: && (b instanceof Buffer)*/) ? b.toString('utf8',s,e) : ___utf8(b,s,e); } : ___utf8;\n\nvar ___lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE  = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase  1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase  2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase  3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase  4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase  8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array<Block>*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array<string>*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range.  If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0),  q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY    = 0x0000;\n//var VT_NULL     = 0x0001;\nvar VT_I2       = 0x0002;\nvar VT_I4       = 0x0003;\n//var VT_R4       = 0x0004;\n//var VT_R8       = 0x0005;\n//var VT_CY       = 0x0006;\n//var VT_DATE     = 0x0007;\n//var VT_BSTR     = 0x0008;\n//var VT_ERROR    = 0x000A;\nvar VT_BOOL     = 0x000B;\nvar VT_VARIANT  = 0x000C;\n//var VT_DECIMAL  = 0x000E;\n//var VT_I1       = 0x0010;\n//var VT_UI1      = 0x0011;\n//var VT_UI2      = 0x0012;\nvar VT_UI4      = 0x0013;\n//var VT_I8       = 0x0014;\n//var VT_UI8      = 0x0015;\n//var VT_INT      = 0x0016;\n//var VT_UINT     = 0x0017;\nvar VT_LPSTR    = 0x001E;\n//var VT_LPWSTR   = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB     = 0x0041;\n//var VT_STREAM   = 0x0042;\n//var VT_STORAGE  = 0x0043;\n//var VT_STREAMED_Object  = 0x0044;\n//var VT_STORED_Object    = 0x0045;\n//var VT_BLOB_Object      = 0x0046;\nvar VT_CF       = 0x0047;\n//var VT_CLSID    = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR   = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR   = 0x101E;\n//var VT_ARRAY    = 0x2000;\n\nvar VT_STRING   = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR     = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM   = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\"  // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array<number>*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\":        0x00,\n\t\"#DIV/0!\":       0x07,\n\t\"#VALUE!\":       0x0F,\n\t\"#REF!\":         0x17,\n\t\"#NAME?\":        0x1D,\n\t\"#NUM!\":         0x24,\n\t\"#N/A\":          0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\":         0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary <SpreadsheetML> */\n/* 14.2 Part Summary <DrawingML> */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\\w+):/)||[\"\",\"\"])[1] ]; break;\n\t\t\tcase '<Default': ctext[y.Extension] = y.ContentType; break;\n\t\t\tcase '<Override':\n\t\t\t\tif(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\tif(ct.xmlns !== XMLNS.CT) throw new Error(\"Unknown Namespace: \" + ct.xmlns);\n\tct.calcchain = ct.calcchains.length > 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array<string>}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array<string>*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '<Relationship') {\n\t\t\tvar rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; if(y.TargetMode) rel.TargetMode = y.TargetMode;\n\t\t\tvar canonictarget = y.TargetMode === 'External' ? y.Target : resolve_path(y.Target, currentFilePath);\n\t\t\trels[canonictarget] = rel;\n\t\t\thash[y.Id] = rel;\n\t\t}\n\t});\n\trels[\"!id\"] = hash;\n\treturn rels;\n}\n\n\n/* TODO */\nfunction write_rels(rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\n\t\t//'xmlns:ns0': XMLNS.RELS,\n\t\t'xmlns': XMLNS.RELS\n\t})];\n\tkeys(rels['!id']).forEach(function(rid) {\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\n\t});\n\tif(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 <manifest:manifest>\n\t\tcase 'file-entry': // 4.3 <manifest:file-entry>\n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 <manifest:encryption-data>\n\t\tcase 'algorithm': // 4.5 <manifest:algorithm>\n\t\tcase 'start-key-generation': // 4.6 <manifest:start-key-generation>\n\t\tcase 'key-derivation': // 4.7 <manifest:key-derivation>\n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array<Array<string> >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">\\n');\n\to.push('  <manifest:file-entry manifest:full-path=\"/\" manifest:version=\"1.2\" manifest:media-type=\"application/vnd.oasis.opendocument.spreadsheet\"/>\\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push('  <manifest:file-entry manifest:full-path=\"' + manifest[i][0] + '\" manifest:media-type=\"' + manifest[i][1] + '\"/>\\n');\n\to.push('</manifest:manifest>');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + file + '\">\\n',\n\t\t'    <rdf:type rdf:resource=\"http://docs.oasis-open.org/ns/office/1.2/meta/' + (tag || \"odf\") + '#' + res + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + base + '\">\\n',\n\t\t'    <ns0:hasPart xmlns:ns0=\"http://docs.oasis-open.org/ns/office/1.2/meta/pkg#\" rdf:resource=\"' + file + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('</rdf:RDF>');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn '<office:document-meta xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" office:version=\"1.2\"><office:meta><meta:generator>Sheet' + 'JS ' + XLSX.version + '</meta:generator></office:meta></office:document-meta>';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array<Array<string> >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array<RegExp>*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array<Array<string> >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\",  \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array<Array<any>>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"<vt:lpstr>\" + escapexml(s) + \"</vt:lpstr>\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Properties': break;\n\t\t\tcase '<property': name = unescapexml(y.name); break;\n\t\t\tcase '</property>': name = null; break;\n\t\t\tdefault: if (x.indexOf('<vt:') === 0) {\n\t\t\t\tvar toks = x.split('>');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"</\") {/* empty */\n\t\t\t} else if(opts.WTF) throw new Error(x);\n\t\t}\n\t}\n\treturn p;\n}\n\nfunction write_cust_props(cp/*::, opts*/)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Properties', null, {\n\t\t'xmlns': XMLNS.CUST_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t})];\n\tif(!cp) return o.join(\"\");\n\tvar pid = 1;\n\tkeys(cp).forEach(function custprop(k) { ++pid;\n\t\to[o.length] = (writextag('property', write_vt(cp[k], true), {\n\t\t\t'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',\n\t\t\t'pid': pid,\n\t\t\t'name': escapexml(k)\n\t\t}));\n\t});\n\tif(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array<string>*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array<string>*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '</' + T + '>';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j<n; ++j) o.write_shift(1, 0); return o; }\n\nfunction parslurp(blob, length, cb) {\n\tvar arr = [], target = blob.l + length;\n\twhile(blob.l < target) arr.push(cb(blob, target - blob.l));\n\tif(target !== blob.l) throw new Error(\"Slurp error\");\n\treturn arr;\n}\n\nfunction parsebool(blob, length/*:number*/) { return blob.read_shift(length) === 0x1; }\nfunction writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; }\n\nfunction parseuint16(blob/*::, length:?number, opts:?any*/) { return blob.read_shift(2, 'u'); }\nfunction writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; }\nfunction parseuint16a(blob, length/*:: :?number, opts:?any*/) { return parslurp(blob,length,parseuint16);}\n\n/* --- 2.5 Structures --- */\n\n/* [MS-XLS] 2.5.10 Bes (boolean or error) */\nfunction parse_Bes(blob/*::, length*/) {\n\tvar v = blob.read_shift(1), t = blob.read_shift(1);\n\treturn t === 0x01 ? v : v === 0x01;\n}\nfunction write_Bes(v, t/*:string*/, o) {\n\tif(!o) o = new_buf(2);\n\to.write_shift(1, ((t == 'e') ? +v : +!!v));\n\to.write_shift(1, ((t == 'e') ? 1 : 0));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.240 ShortXLUnicodeString */\nfunction parse_ShortXLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff >= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"<t>\" + z.t + \"</t>\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip,      /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip,      /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip,      /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip,      /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf,        /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip,      /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip,      /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip,      /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip,      /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip,      /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts,       /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip,      /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip,      /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip,      /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip,      /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip,      /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip,      /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip,      /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array<number>*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array<Range>*/ {\n\tvar merges/*:Array<Range>*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array<Range>*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present  SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127,           /*::[*/0x08/*::]*/:   865,\n\t/*::[*/0x09/*::]*/:   437,           /*::[*/0x0A/*::]*/:   850,\n\t/*::[*/0x0B/*::]*/:   437,           /*::[*/0x0D/*::]*/:   437,\n\t/*::[*/0x0E/*::]*/:   850,           /*::[*/0x0F/*::]*/:   437,\n\t/*::[*/0x10/*::]*/:   850,           /*::[*/0x11/*::]*/:   437,\n\t/*::[*/0x12/*::]*/:   850,           /*::[*/0x13/*::]*/:   932,\n\t/*::[*/0x14/*::]*/:   850,           /*::[*/0x15/*::]*/:   437,\n\t/*::[*/0x16/*::]*/:   850,           /*::[*/0x17/*::]*/:   865,\n\t/*::[*/0x18/*::]*/:   437,           /*::[*/0x19/*::]*/:   437,\n\t/*::[*/0x1A/*::]*/:   850,           /*::[*/0x1B/*::]*/:   437,\n\t/*::[*/0x1C/*::]*/:   863,           /*::[*/0x1D/*::]*/:   850,\n\t/*::[*/0x1F/*::]*/:   852,           /*::[*/0x22/*::]*/:   852,\n\t/*::[*/0x23/*::]*/:   852,           /*::[*/0x24/*::]*/:   860,\n\t/*::[*/0x25/*::]*/:   850,           /*::[*/0x26/*::]*/:   866,\n\t/*::[*/0x37/*::]*/:   850,           /*::[*/0x40/*::]*/:   852,\n\t/*::[*/0x4D/*::]*/:   936,           /*::[*/0x4E/*::]*/:   949,\n\t/*::[*/0x4F/*::]*/:   950,           /*::[*/0x50/*::]*/:   874,\n\t/*::[*/0x57/*::]*/:  1252,           /*::[*/0x58/*::]*/:  1252,\n\t/*::[*/0x59/*::]*/:  1252,           /*::[*/0x6C/*::]*/:   863,\n\t/*::[*/0x86/*::]*/:   737,           /*::[*/0x87/*::]*/:   852,\n\t/*::[*/0x88/*::]*/:   857,           /*::[*/0xCC/*::]*/:  1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array<DBFField>*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write '  /  /  ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \"  .  \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array<string>*/ = [];\n\tvar colwidths/*:Array<number>*/ = [];\n\tvar coldecimals/*:Array<number>*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array<any>*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j<headers.length; ++j) {\n\t\t\tif(headers[j] == null) continue;\n\t\t\tswitch(coltypes[j]) {\n\t\t\t\tcase 'L': rout.write_shift(1, data[i][j] == null ? 0x3F : data[i][j] ? 0x54 : 0x46); break;\n\t\t\t\tcase 'B': rout.write_shift(8, data[i][j]||0, 'f'); break;\n\t\t\t\tcase 'N':\n\t\t\t\t\tvar _n = \"0\";\n\t\t\t\t\tif(typeof data[i][j] == \"number\") _n = data[i][j].toFixed(coldecimals[j]||0);\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"sbcs\");\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_s.length; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê',         HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î',         HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û',         HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê',         He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î',         Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û',         Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ',  z:'œ',  a:'Æ',  j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169,  c:170,  R:174,  \"B \":180,\n\t\t/*::[*/0/*::]*/:176,    /*::[*/1/*::]*/:177,  /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179,    /*::[*/5/*::]*/:181,  /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183,    Q:185,  k:186,  b:208,  i:216,  l:222,  s:240,  y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array<string>*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array<RowInfo>*/ = [], colinfo/*:Array<ColInfo>*/ = [], cw/*:Array<string>*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'A': break; // TODO: comment\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; C_seen_X = true; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; if(!C_seen_X) C = 0;\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tval = record[rj].slice(1);\n\t\t\t\t\tif(val.charAt(0) === '\"') val = val.slice(1,val.length - 1);\n\t\t\t\t\telse if(val === 'TRUE') val = true;\n\t\t\t\t\telse if(val === 'FALSE') val = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(val))) {\n\t\t\t\t\t\tval = fuzzynum(val);\n\t\t\t\t\t\tif(next_cell_format !== null && fmt_is_date(next_cell_format)) val = numdate(val);\n\t\t\t\t\t} else if(!isNaN(fuzzydate(val).getDate())) {\n\t\t\t\t\t\tval = parseDate(val);\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof $cptable !== 'undefined' && typeof val == \"string\" && ((opts||{}).type != \"string\") && (opts||{}).codepage) val = $cptable.utils.decode(opts.codepage, val);\n\t\t\t\t\tC_seen_K = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'E':\n\t\t\t\t\tC_seen_E = true;\n\t\t\t\t\tvar formula = rc_to_a1(record[rj].slice(1), {r:R,c:C});\n\t\t\t\t\tarr[R][C] = [arr[R][C], formula];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S':\n\t\t\t\t\tC_seen_S = true;\n\t\t\t\t\tarr[R][C] = [arr[R][C], \"S5S\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'G': break; // unknown\n\t\t\t\tcase 'R': _R = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tcase 'C': _C = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(C_seen_K) {\n\t\t\t\tif(arr[R][C] && arr[R][C].length == 2) arr[R][C][0] = val;\n\t\t\t\telse arr[R][C] = val;\n\t\t\t\tnext_cell_format = null;\n\t\t\t}\n\t\t\tif(C_seen_S) {\n\t\t\t\tif(C_seen_E) throw new Error(\"SYLK shared formula cannot have own formula\");\n\t\t\t\tvar shrbase = _R > -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; ++F_seen; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; /*C = 0;*/\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'M': Mval = parseInt(record[rj].slice(1)) / 20; break;\n\t\t\t\tcase 'F': break; /* ??? */\n\t\t\t\tcase 'G': break; /* hide grid */\n\t\t\t\tcase 'P':\n\t\t\t\t\tnext_cell_format = formats[parseInt(record[rj].slice(1))];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': break; /* cell style */\n\t\t\t\tcase 'D': break; /* column */\n\t\t\t\tcase 'N': break; /* font */\n\t\t\t\tcase 'W':\n\t\t\t\t\tcw = record[rj].slice(1).split(\" \");\n\t\t\t\t\tfor(j = parseInt(cw[0], 10); j <= parseInt(cw[1], 10); ++j) {\n\t\t\t\t\t\tMval = parseInt(cw[2], 10);\n\t\t\t\t\t\tcolinfo[j-1] = Mval === 0 ? {hidden:true}: {wch:Mval}; process_col(colinfo[j-1]);\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C': /* default column format */\n\t\t\t\t\tC = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!colinfo[C]) colinfo[C] = {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R': /* row properties */\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!rowinfo[R]) rowinfo[R] = {};\n\t\t\t\t\tif(Mval > 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array<string>*/, rows/*:Array<RowInfo>*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array<string>*/ = [\"ID;PWXL;N;E\"], o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array<string>*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array<string>*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array<string>*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array<string>*/ = [], oo/*:Array<string>*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage)  str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array<string>*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\"          \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t  \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t  \"\",  \"+\",  \"-\",  \"*\",  \"/\",  \"^\",  \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\",  \"<\",  \">\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\"  // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<condense': break;\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<extend': break;\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<shadow':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<shadow>':\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\t\t\tcase '</shadow>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\tfont.cp = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty TODO */\n\t\t\tcase '<outline':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<outline>':\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\t\t\tcase '</outline>': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '<rFont': font.name = y.val; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': font.sz = y.val; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<strike>':\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\t\t\tcase '</strike>': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tif(!y.val) break;\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase 'double': font.uval = \"double\"; break;\n\t\t\t\t\tcase 'singleAccounting': font.uval = \"single-accounting\"; break;\n\t\t\t\t\tcase 'doubleAccounting': font.uval = \"double-accounting\"; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '<u>':\n\t\t\tcase '<u/>': font.u = 1; break;\n\t\t\tcase '</u>': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '<b':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<b>':\n\t\t\tcase '<b/>': font.b = 1; break;\n\t\t\tcase '</b>': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '<i':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<i>':\n\t\t\tcase '<i/>': font.i = 1; break;\n\t\t\tcase '</i>': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '<color':\n\t\t\t\tif(y.rgb) font.color = y.rgb.slice(2,8);\n\t\t\t\tbreak;\n\t\t\tcase '<color>': case '<color/>': case '</color>': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '<family': font.family = y.val; break;\n\t\t\tcase '<family>': case '<family/>': case '</family>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '<vertAlign': font.valign = y.val; break;\n\t\t\tcase '<vertAlign>': case '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '<scheme': break;\n\t\t\tcase '<scheme>': case '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of <r> tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array<string>*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('<span style=\"' + style.join(\"\") + '\">');\n\n\t\tif(font.b) { intro.push(\"<b>\"); outro.push(\"</b>\"); }\n\t\tif(font.i) { intro.push(\"<i>\"); outro.push(\"</i>\"); }\n\t\tif(font.strike) { intro.push(\"<s>\"); outro.push(\"</s>\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"</\" + align + \">\"); }\n\n\t\toutro.push(\"</span>\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array<string>, string, Array<string>]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'<br/>') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"<si>\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"<t\";\n\t\t\tif(!s.t) s.t = \"\";\n\t\t\tif(s.t.match(straywsregex)) sitag += ' xml:space=\"preserve\"';\n\t\t\tsitag += \">\" + escapexml(s.t) + \"</t>\";\n\t\t}\n\t\tsitag += \"</si>\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array<number>*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array<number>*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array<string>*/ {\n\tvar o/*:Array<string>*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5  EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6  EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<encryption': case '</encryption>': break;\n\t\t\tcase '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;\n\t\t\tcase '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encryptedHmacValue; break;\n\t\t\tcase '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;\n\t\t\tcase '</keyEncryptors>': break;\n\n\t\t\tcase '<keyEncryptor': o.uri = y.uri; break;\n\t\t\tcase '</keyEncryptor>': break;\n\t\t\tcase '<encryptedKey': o.encs.push(y); break;\n\t\t\tdefault: throw y[0];\n\t\t}\n\t});\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */\nfunction parse_RC4CryptoHeader(blob, length/*:number*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;\n\tif(vers.Minor != 2) throw new Error('unrecognized minor version code: ' + vers.Minor);\n\tif(vers.Major > 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array':  return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6);   rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2);   rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6);   rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4);   rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6);   rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) if(Math.abs(collw - cycle_width(collw)) <= delta) { delta = Math.abs(collw - cycle_width(collw)); _MDW = MDW; }\n\tMDW = _MDW;\n}\n/* XLML specifies width in terms of pixels */\n/*function find_mdw_wpx(wpx) {\n\tvar delta = Infinity, guess = 0, _MDW = MIN_MDW;\n\tfor(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) {\n\t\tguess = char2width_(px2char_(wpx))*256;\n\t\tguess = (guess) % 1;\n\t\tif(guess > 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<borders': case '<borders>': case '</borders>': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '<border': case '<border>': case '<border/>':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '</border>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<left/>': break;\n\t\t\tcase '<left': case '<left>': break;\n\t\t\tcase '</left>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<right/>': break;\n\t\t\tcase '<right': case '<right>': break;\n\t\t\tcase '</right>': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '<top/>': break;\n\t\t\tcase '<top': case '<top>': break;\n\t\t\tcase '</top>': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '<bottom/>': break;\n\t\t\tcase '<bottom': case '<bottom>': break;\n\t\t\tcase '</bottom>': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '<diagonal': case '<diagonal>': case '<diagonal/>': break;\n\t\t\tcase '</diagonal>': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '<horizontal': case '<horizontal>': case '<horizontal/>': break;\n\t\t\tcase '</horizontal>': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '<vertical': case '<vertical>': case '<vertical/>': break;\n\t\t\tcase '</vertical>': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '<start': case '<start>': case '<start/>': break;\n\t\t\tcase '</start>': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '<end': case '<end>': case '<end/>': break;\n\t\t\tcase '</end>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color>':\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fills': case '<fills>': case '</fills>': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '<fill>': case '<fill': case '<fill/>':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '</fill>': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '<gradientFill>': break;\n\t\t\tcase '<gradientFill':\n\t\t\tcase '</gradientFill>': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '<patternFill': case '<patternFill>':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '<patternFill/>': case '</patternFill>': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '<bgColor':\n\t\t\t\tif(!fill.bgColor) fill.bgColor = {};\n\t\t\t\tif(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10);\n\t\t\t\tif(y.theme) fill.bgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.bgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb) fill.bgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<bgColor/>': case '</bgColor>': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '<fgColor':\n\t\t\t\tif(!fill.fgColor) fill.fgColor = {};\n\t\t\t\tif(y.theme) fill.fgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.fgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb != null) fill.fgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<fgColor/>': case '</fgColor>': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '<stop': case '<stop/>': break;\n\t\t\tcase '</stop>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color/>': break;\n\t\t\tcase '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fonts': case '<fonts>': case '</fonts>': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '<font': case '<font>': break;\n\t\t\tcase '</font>': case '<font/>':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '<name': if(y.val) font.name = utf8read(y.val); break;\n\t\t\tcase '<name/>': case '</name>': break;\n\n\t\t\t/* 18.8.2  b CT_BooleanProperty */\n\t\t\tcase '<b': font.bold = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<b/>': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '<i': font.italic = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<i/>': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase \"none\": font.underline = 0x00; break;\n\t\t\t\t\tcase \"single\": font.underline = 0x01; break;\n\t\t\t\t\tcase \"double\": font.underline = 0x02; break;\n\t\t\t\t\tcase \"singleAccounting\": font.underline = 0x21; break;\n\t\t\t\t\tcase \"doubleAccounting\": font.underline = 0x22; break;\n\t\t\t\t} break;\n\t\t\tcase '<u/>': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike': font.strike = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\n\t\t\t/* 18.4.2  outline CT_BooleanProperty */\n\t\t\tcase '<outline': font.outline = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '<shadow': font.shadow = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '<condense': font.condense = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<condense/>': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '<extend': font.extend = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<extend/>': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': if(y.val) font.sz = +y.val; break;\n\t\t\tcase '<sz/>': case '</sz>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '<vertAlign': if(y.val) font.vertAlign = y.val; break;\n\t\t\tcase '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '<family': if(y.val) font.family = parseInt(y.val,10); break;\n\t\t\tcase '<family/>': case '</family>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '<scheme': if(y.val) font.scheme = y.val; break;\n\t\t\tcase '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\ty.codepage = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.?.? color CT_Color */\n\t\t\tcase '<color':\n\t\t\t\tif(!font.color) font.color = {};\n\t\t\t\tif(y.auto) font.color.auto = parsexmlbool(y.auto);\n\n\t\t\t\tif(y.rgb) font.color.rgb = y.rgb.slice(-6);\n\t\t\t\telse if(y.indexed) {\n\t\t\t\t\tfont.color.index = parseInt(y.indexed, 10);\n\t\t\t\t\tvar icv = XLSIcv[font.color.index];\n\t\t\t\t\tif(font.color.index == 81) icv = XLSIcv[1];\n\t\t\t\t\tif(!icv) icv = XLSIcv[1]; //throw new Error(x); // note: 206 is valid\n\t\t\t\t\tfont.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);\n\t\t\t\t} else if(y.theme) {\n\t\t\t\t\tfont.color.theme = parseInt(y.theme, 10);\n\t\t\t\t\tif(y.tint) font.color.tint = parseFloat(y.tint);\n\t\t\t\t\tif(y.theme && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\t\tfont.color.rgb = rgb_tint(themes.themeElements.clrScheme[font.color.theme].rgb, font.color.tint || 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array<number>*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break;\n\t\t\tcase '<numFmt': {\n\t\t\t\tvar f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10);\n\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\tif(j>0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '</numFmt>': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"<numFmts>\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"</numFmts>\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '<xf': case '<xf/>':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '</xf>': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '<alignment': case '<alignment/>':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '</alignment>': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '<protection':\n\t\t\t\tbreak;\n\t\t\tcase '</protection>': case '<protection/>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"</cellXfs>\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5  borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9  cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8  cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('<fonts count=\"1\"><font><sz val=\"12\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font></fonts>');\n\to[o.length] = ('<fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills>');\n\to[o.length] = ('<borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>');\n\to[o.length] = ('<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('<cellStyles count=\"1\"><cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/></cellStyles>');\n\to[o.length] = ('<dxfs count=\"0\"/>');\n\to[o.length] = ('<tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium9\" defaultPivotStyle=\"PivotStyleMedium4\"/>');\n\n\tif(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId:   0,\n\t\tfillId:   0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'</a:lt1>', '</a:dk1>', '</a:lt2>', '</a:dk2>',\n\t'</a:accent1>', '</a:accent2>', '</a:accent3>',\n\t'</a:accent4>', '</a:accent5>', '</a:accent6>',\n\t'</a:hlink>', '</a:folHlink>'\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '<a:clrScheme': case '</a:clrScheme>': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '<a:srgbClr':\n\t\t\t\tcolor.rgb = y.val; break;\n\n\t\t\t/* 20.1.2.3.33 sysClr CT_SystemColor */\n\t\t\tcase '<a:sysClr':\n\t\t\t\tcolor.rgb = y.lastClr; break;\n\n\t\t\t/* 20.1.4.1.1 accent1 (Accent 1) */\n\t\t\t/* 20.1.4.1.2 accent2 (Accent 2) */\n\t\t\t/* 20.1.4.1.3 accent3 (Accent 3) */\n\t\t\t/* 20.1.4.1.4 accent4 (Accent 4) */\n\t\t\t/* 20.1.4.1.5 accent5 (Accent 5) */\n\t\t\t/* 20.1.4.1.6 accent6 (Accent 6) */\n\t\t\t/* 20.1.4.1.9 dk1 (Dark 1) */\n\t\t\t/* 20.1.4.1.10 dk2 (Dark 2) */\n\t\t\t/* 20.1.4.1.15 folHlink (Followed Hyperlink) */\n\t\t\t/* 20.1.4.1.19 hlink (Hyperlink) */\n\t\t\t/* 20.1.4.1.22 lt1 (Light 1) */\n\t\t\t/* 20.1.4.1.23 lt2 (Light 2) */\n\t\t\tcase '<a:dk1>': case '</a:dk1>':\n\t\t\tcase '<a:lt1>': case '</a:lt1>':\n\t\t\tcase '<a:dk2>': case '</a:dk2>':\n\t\t\tcase '<a:lt2>': case '</a:lt2>':\n\t\t\tcase '<a:accent1>': case '</a:accent1>':\n\t\t\tcase '<a:accent2>': case '</a:accent2>':\n\t\t\tcase '<a:accent3>': case '</a:accent3>':\n\t\t\tcase '<a:accent4>': case '</a:accent4>':\n\t\t\tcase '<a:accent5>': case '</a:accent5>':\n\t\t\tcase '<a:accent6>': case '</a:accent6>':\n\t\t\tcase '<a:hlink>': case '</a:hlink>':\n\t\t\tcase '<a:folHlink>': case '</a:folHlink>':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /<a:clrScheme([^>]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /<a:fontScheme([^>]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /<a:fmtScheme([^>]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /<a:themeElements([^>]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">';\n\to[o.length] =  '<a:themeElements>';\n\n\to[o.length] =   '<a:clrScheme name=\"Office\">';\n\to[o.length] =    '<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>';\n\to[o.length] =    '<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>';\n\to[o.length] =    '<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>';\n\to[o.length] =    '<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>';\n\to[o.length] =    '<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>';\n\to[o.length] =    '<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>';\n\to[o.length] =    '<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>';\n\to[o.length] =    '<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>';\n\to[o.length] =    '<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>';\n\to[o.length] =    '<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>';\n\to[o.length] =    '<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>';\n\to[o.length] =    '<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>';\n\to[o.length] =   '</a:clrScheme>';\n\n\to[o.length] =   '<a:fontScheme name=\"Office\">';\n\to[o.length] =    '<a:majorFont>';\n\to[o.length] =     '<a:latin typeface=\"Cambria\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:majorFont>';\n\to[o.length] =    '<a:minorFont>';\n\to[o.length] =     '<a:latin typeface=\"Calibri\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:minorFont>';\n\to[o.length] =   '</a:fontScheme>';\n\n\to[o.length] =   '<a:fmtScheme name=\"Office\">';\n\to[o.length] =    '<a:fillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"1\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"100000\"/><a:shade val=\"100000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:shade val=\"100000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"0\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:fillStyleLst>';\n\to[o.length] =    '<a:lnStyleLst>';\n\to[o.length] =     '<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =    '</a:lnStyleLst>';\n\to[o.length] =    '<a:effectStyleLst>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =      '<a:scene3d><a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera><a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig></a:scene3d>';\n\to[o.length] =      '<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =    '</a:effectStyleLst>';\n\to[o.length] =    '<a:bgFillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:bgFillStyleLst>';\n\to[o.length] =   '</a:fmtScheme>';\n\to[o.length] =  '</a:themeElements>';\n\n\to[o.length] =  '<a:objectDefaults>';\n\to[o.length] =   '<a:spDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"3\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"lt1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:spDef>';\n\to[o.length] =   '<a:lnDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"0\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"tx1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:lnDef>';\n\to[o.length] =  '</a:objectDefaults>';\n\to[o.length] =  '<a:extraClrSchemeLst/>';\n\to[o.length] = '</a:theme>';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array<any>*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n  return {\n    flags: data.read_shift(4),\n    version: data.read_shift(4),\n    name: parse_XLWideString(data, length - 8)\n  };\n}\nfunction write_BrtMdtinfo(data) {\n  var o = new_buf(12 + 2 * data.name.length);\n  o.write_shift(4, data.flags);\n  o.write_shift(4, data.version);\n  write_XLWideString(data.name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n  var out = [];\n  var cnt = data.read_shift(4);\n  while (cnt-- > 0)\n    out.push([data.read_shift(4), data.read_shift(4)]);\n  return out;\n}\nfunction write_BrtMdb(mdb) {\n  var o = new_buf(4 + 8 * mdb.length);\n  o.write_shift(4, mdb.length);\n  for (var i = 0; i < mdb.length; ++i) {\n    o.write_shift(4, mdb[i][0]);\n    o.write_shift(4, mdb[i][1]);\n  }\n  return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n  var o = new_buf(8 + 2 * name.length);\n  o.write_shift(4, cnt);\n  write_XLWideString(name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n  data.l += 4;\n  return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n  var o = new_buf(8);\n  o.write_shift(4, cnt);\n  o.write_shift(4, cm ? 1 : 0);\n  return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  var opts = _opts || {};\n  var state = [];\n  var pass = false;\n  var metatype = 2;\n  recordhopper(data, function(val, R, RT) {\n    switch (RT) {\n      case 335:\n        out.Types.push({ name: val.name });\n        break;\n      case 51:\n        val.forEach(function(r) {\n          if (metatype == 1)\n            out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n          else if (metatype == 0)\n            out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n        });\n        break;\n      case 337:\n        metatype = val ? 1 : 0;\n        break;\n      case 338:\n        metatype = 2;\n        break;\n      case 35:\n        state.push(RT);\n        pass = true;\n        break;\n      case 36:\n        state.pop();\n        pass = false;\n        break;\n      default:\n        if (R.T) {\n        } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n          throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n    }\n  });\n  return out;\n}\nfunction write_xlmeta_bin() {\n  var ba = buf_array();\n  write_record(ba, 332);\n  write_record(ba, 334, write_UInt32LE(1));\n  write_record(ba, 335, write_BrtMdtinfo({\n    name: \"XLDAPR\",\n    version: 12e4,\n    flags: 3496657072\n  }));\n  write_record(ba, 336);\n  write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n  write_record(ba, 52);\n  write_record(ba, 35, write_UInt32LE(514));\n  write_record(ba, 4096, write_UInt32LE(0));\n  write_record(ba, 4097, writeuint16(1));\n  write_record(ba, 36);\n  write_record(ba, 53);\n  write_record(ba, 340);\n  write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n  write_record(ba, 51, write_BrtMdb([[1, 0]]));\n  write_record(ba, 338);\n  write_record(ba, 333);\n  return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  if (!data)\n    return out;\n  var pass = false;\n  var metatype = 2;\n  var lastmeta;\n  data.replace(tagregex, function(x) {\n    var y = parsexmltag(x);\n    switch (strip_ns(y[0])) {\n      case \"<?xml\":\n        break;\n      case \"<metadata\":\n      case \"</metadata>\":\n        break;\n      case \"<metadataTypes\":\n      case \"</metadataTypes>\":\n        break;\n      case \"<metadataType\":\n        out.Types.push({ name: y.name });\n        break;\n      case \"</metadataType>\":\n        break;\n      case \"<futureMetadata\":\n        for (var j = 0; j < out.Types.length; ++j)\n          if (out.Types[j].name == y.name)\n            lastmeta = out.Types[j];\n        break;\n      case \"</futureMetadata>\":\n        break;\n      case \"<bk>\":\n        break;\n      case \"</bk>\":\n        break;\n      case \"<rc\":\n        if (metatype == 1)\n          out.Cell.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        else if (metatype == 0)\n          out.Value.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        break;\n      case \"</rc>\":\n        break;\n      case \"<cellMetadata\":\n        metatype = 1;\n        break;\n      case \"</cellMetadata>\":\n        metatype = 2;\n        break;\n      case \"<valueMetadata\":\n        metatype = 0;\n        break;\n      case \"</valueMetadata>\":\n        metatype = 2;\n        break;\n      case \"<extLst\":\n      case \"<extLst>\":\n      case \"</extLst>\":\n      case \"<extLst/>\":\n        break;\n      case \"<ext\":\n        pass = true;\n        break;\n      case \"</ext>\":\n        pass = false;\n        break;\n      case \"<rvb\":\n        if (!lastmeta)\n          break;\n        if (!lastmeta.offsets)\n          lastmeta.offsets = [];\n        lastmeta.offsets.push(+y.i);\n        break;\n      default:\n        if (!pass && opts.WTF)\n          throw new Error(\"unrecognized \" + y[0] + \" in metadata\");\n    }\n    return x;\n  });\n  return out;\n}\nfunction write_xlmeta_xml() {\n  var o = [XML_HEADER];\n  o.push('<metadata xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:xlrd=\"http://schemas.microsoft.com/office/spreadsheetml/2017/richdata\" xmlns:xda=\"http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray\">\\n  <metadataTypes count=\"1\">\\n    <metadataType name=\"XLDAPR\" minSupportedVersion=\"120000\" copy=\"1\" pasteAll=\"1\" pasteValues=\"1\" merge=\"1\" splitFirst=\"1\" rowColShift=\"1\" clearFormats=\"1\" clearComments=\"1\" assign=\"1\" coerce=\"1\" cellMeta=\"1\"/>\\n  </metadataTypes>\\n  <futureMetadata name=\"XLDAPR\" count=\"1\">\\n    <bk>\\n      <extLst>\\n        <ext uri=\"{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}\">\\n          <xda:dynamicArrayProperties fDynamic=\"1\" fCollapsed=\"0\"/>\\n        </ext>\\n      </extLst>\\n    </bk>\\n  </futureMetadata>\\n  <cellMetadata count=\"1\">\\n    <bk>\\n      <rc t=\"1\" v=\"0\"/>\\n    </bk>\\n  </cellMetadata>\\n</metadata>');\n  return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array<any>*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\t/* 18.6.2  calcChain CT_CalcChain 1 */\n\t\t\tcase '<calcChain': case '<calcChain>': case '</calcChain>': break;\n\t\t\t/* 18.6.1  c CT_CalcCell 1 */\n\t\t\tcase '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break;\n\t\t}\n\t});\n\treturn d;\n}\n\n//function write_cc_xml(data, opts) { }\n\n/* [MS-XLSB] 2.6.4.1 */\nfunction parse_BrtCalcChainItem$(data) {\n\tvar out = {};\n\tout.i = data.read_shift(4);\n\tvar cell = {};\n\tcell.r = data.read_shift(4);\n\tcell.c = data.read_shift(4);\n\tout.r = encode_cell(cell);\n\tvar flags = data.read_shift(1);\n\tif(flags & 0x2) out.l = '1';\n\tif(flags & 0x8) out.a = '1';\n\treturn out;\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_bin(data, name, opts) {\n\tvar out = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_cc(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x003F: /* 'BrtCalcChainItem$' */\n\t\t\t\tout.push(val); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml(/*::data, rel, name:string, _opts*/) {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, rel, name/*:string*/, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n}\n/* 20.5 DrawingML - SpreadsheetML Drawing */\n/* 20.5.2.35 wsDr CT_Drawing */\nfunction parse_drawing(data, rels/*:any*/) {\n\tif(!data) return \"??\";\n\t/*\n\t  Chartsheet Drawing:\n\t   - 20.5.2.35 wsDr CT_Drawing\n\t    - 20.5.2.1  absoluteAnchor CT_AbsoluteAnchor\n\t     - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t      - 20.1.2.2.16 graphic CT_GraphicalObject\n\t       - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n          - chart reference\n\t   the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/<c:chart [^>]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'<v:shape' + wxt_helper({\n\t\tid:'_x0000_s' + _shapeid,\n\t\ttype:\"#_x0000_t202\",\n\t\tstyle:\"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10\" + (x[1].hidden ? \";visibility:hidden\" : \"\") ,\n\t\tfillcolor:\"#ECFAD4\",\n\t\tstrokecolor:\"#edeaa1\"\n\t}) + '>',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'<v:textbox><div style=\"text-align:left\"></div></v:textbox>',\n\t\t'<x:ClientData ObjectType=\"Note\">',\n\t\t\t'<x:MoveWithCells/>',\n\t\t\t'<x:SizeWithCells/>',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '<x:Visible/>',\n\t\t'</x:ClientData>',\n\t'</v:shape>'\n\t]); });\n\to.push('</xml>');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array<RawComment>*/, threaded/*:boolean*/, people/*:?Array<any>*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar commentList/*:Array<RawComment>*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"<t></t>\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array<string>*/ = [];\n\to.push(\"<authors>\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"<author>\" + a + \"</author>\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"<author>\" + \"tc=\" + w.ID + \"</author>\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"<author>SheetJ5</author>\"); }\n\to.push(\"</authors>\");\n\to.push(\"<commentList>\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('<comment ref=\"' + d[0] + '\" authorId=\"' + lastauthor + '\"><text>');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n    \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n    \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('</text></comment>');\n\t});\n\to.push(\"</commentList>\");\n\tif(o.length>2) { o[o.length] = ('</comments>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.6.207 ThreadedComments CT_ThreadedComments */\n\t\t\tcase '<ThreadedComments': break;\n\t\t\tcase '</ThreadedComments>': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '<threadedComment': comment = {author: y.personId, guid: y.id, ref: y.ref, T: 1}; break;\n\t\t\tcase '</threadedComment>': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '<text>': case '<text': tidx = idx + x.length; break;\n\t\t\tcase '</text>': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '<mentions': case '<mentions>': pass = true; break;\n\t\t\tcase '</mentions>': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('</ThreadedComments>');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.4.85 personList CT_PersonList */\n\t\t\tcase '<personList': break;\n\t\t\tcase '</personList>': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '<person': out.push({name: y.displayname, id: y.id }); break;\n\t\t\tcase '</person>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"</personList>\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array<RawComment>*/ {\n\tvar out/*:Array<RawComment>*/ = [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n  var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n  cfb.FullPaths.forEach(function(p, i) {\n    if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n      return;\n    var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n    CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n  });\n  return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n  vba.FullPaths.forEach(function(p, i) {\n    if (i == 0)\n      return;\n    var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n    if (newpath.slice(-1) !== \"/\")\n      CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n  });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array<number>*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array<number>*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array<Range>*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array<Array<any>>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73  ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array<Array<string>>*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array<string>*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array<any>*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array<string>*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd':    /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv':    /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq':     /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe':     /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt':     /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe':     /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt':     /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul':    /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe':     /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower':  /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub':    /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n  0: \"BEEP\",\n  1: \"OPEN\",\n  2: \"OPEN.LINKS\",\n  3: \"CLOSE.ALL\",\n  4: \"SAVE\",\n  5: \"SAVE.AS\",\n  6: \"FILE.DELETE\",\n  7: \"PAGE.SETUP\",\n  8: \"PRINT\",\n  9: \"PRINTER.SETUP\",\n  10: \"QUIT\",\n  11: \"NEW.WINDOW\",\n  12: \"ARRANGE.ALL\",\n  13: \"WINDOW.SIZE\",\n  14: \"WINDOW.MOVE\",\n  15: \"FULL\",\n  16: \"CLOSE\",\n  17: \"RUN\",\n  22: \"SET.PRINT.AREA\",\n  23: \"SET.PRINT.TITLES\",\n  24: \"SET.PAGE.BREAK\",\n  25: \"REMOVE.PAGE.BREAK\",\n  26: \"FONT\",\n  27: \"DISPLAY\",\n  28: \"PROTECT.DOCUMENT\",\n  29: \"PRECISION\",\n  30: \"A1.R1C1\",\n  31: \"CALCULATE.NOW\",\n  32: \"CALCULATION\",\n  34: \"DATA.FIND\",\n  35: \"EXTRACT\",\n  36: \"DATA.DELETE\",\n  37: \"SET.DATABASE\",\n  38: \"SET.CRITERIA\",\n  39: \"SORT\",\n  40: \"DATA.SERIES\",\n  41: \"TABLE\",\n  42: \"FORMAT.NUMBER\",\n  43: \"ALIGNMENT\",\n  44: \"STYLE\",\n  45: \"BORDER\",\n  46: \"CELL.PROTECTION\",\n  47: \"COLUMN.WIDTH\",\n  48: \"UNDO\",\n  49: \"CUT\",\n  50: \"COPY\",\n  51: \"PASTE\",\n  52: \"CLEAR\",\n  53: \"PASTE.SPECIAL\",\n  54: \"EDIT.DELETE\",\n  55: \"INSERT\",\n  56: \"FILL.RIGHT\",\n  57: \"FILL.DOWN\",\n  61: \"DEFINE.NAME\",\n  62: \"CREATE.NAMES\",\n  63: \"FORMULA.GOTO\",\n  64: \"FORMULA.FIND\",\n  65: \"SELECT.LAST.CELL\",\n  66: \"SHOW.ACTIVE.CELL\",\n  67: \"GALLERY.AREA\",\n  68: \"GALLERY.BAR\",\n  69: \"GALLERY.COLUMN\",\n  70: \"GALLERY.LINE\",\n  71: \"GALLERY.PIE\",\n  72: \"GALLERY.SCATTER\",\n  73: \"COMBINATION\",\n  74: \"PREFERRED\",\n  75: \"ADD.OVERLAY\",\n  76: \"GRIDLINES\",\n  77: \"SET.PREFERRED\",\n  78: \"AXES\",\n  79: \"LEGEND\",\n  80: \"ATTACH.TEXT\",\n  81: \"ADD.ARROW\",\n  82: \"SELECT.CHART\",\n  83: \"SELECT.PLOT.AREA\",\n  84: \"PATTERNS\",\n  85: \"MAIN.CHART\",\n  86: \"OVERLAY\",\n  87: \"SCALE\",\n  88: \"FORMAT.LEGEND\",\n  89: \"FORMAT.TEXT\",\n  90: \"EDIT.REPEAT\",\n  91: \"PARSE\",\n  92: \"JUSTIFY\",\n  93: \"HIDE\",\n  94: \"UNHIDE\",\n  95: \"WORKSPACE\",\n  96: \"FORMULA\",\n  97: \"FORMULA.FILL\",\n  98: \"FORMULA.ARRAY\",\n  99: \"DATA.FIND.NEXT\",\n  100: \"DATA.FIND.PREV\",\n  101: \"FORMULA.FIND.NEXT\",\n  102: \"FORMULA.FIND.PREV\",\n  103: \"ACTIVATE\",\n  104: \"ACTIVATE.NEXT\",\n  105: \"ACTIVATE.PREV\",\n  106: \"UNLOCKED.NEXT\",\n  107: \"UNLOCKED.PREV\",\n  108: \"COPY.PICTURE\",\n  109: \"SELECT\",\n  110: \"DELETE.NAME\",\n  111: \"DELETE.FORMAT\",\n  112: \"VLINE\",\n  113: \"HLINE\",\n  114: \"VPAGE\",\n  115: \"HPAGE\",\n  116: \"VSCROLL\",\n  117: \"HSCROLL\",\n  118: \"ALERT\",\n  119: \"NEW\",\n  120: \"CANCEL.COPY\",\n  121: \"SHOW.CLIPBOARD\",\n  122: \"MESSAGE\",\n  124: \"PASTE.LINK\",\n  125: \"APP.ACTIVATE\",\n  126: \"DELETE.ARROW\",\n  127: \"ROW.HEIGHT\",\n  128: \"FORMAT.MOVE\",\n  129: \"FORMAT.SIZE\",\n  130: \"FORMULA.REPLACE\",\n  131: \"SEND.KEYS\",\n  132: \"SELECT.SPECIAL\",\n  133: \"APPLY.NAMES\",\n  134: \"REPLACE.FONT\",\n  135: \"FREEZE.PANES\",\n  136: \"SHOW.INFO\",\n  137: \"SPLIT\",\n  138: \"ON.WINDOW\",\n  139: \"ON.DATA\",\n  140: \"DISABLE.INPUT\",\n  142: \"OUTLINE\",\n  143: \"LIST.NAMES\",\n  144: \"FILE.CLOSE\",\n  145: \"SAVE.WORKBOOK\",\n  146: \"DATA.FORM\",\n  147: \"COPY.CHART\",\n  148: \"ON.TIME\",\n  149: \"WAIT\",\n  150: \"FORMAT.FONT\",\n  151: \"FILL.UP\",\n  152: \"FILL.LEFT\",\n  153: \"DELETE.OVERLAY\",\n  155: \"SHORT.MENUS\",\n  159: \"SET.UPDATE.STATUS\",\n  161: \"COLOR.PALETTE\",\n  162: \"DELETE.STYLE\",\n  163: \"WINDOW.RESTORE\",\n  164: \"WINDOW.MAXIMIZE\",\n  166: \"CHANGE.LINK\",\n  167: \"CALCULATE.DOCUMENT\",\n  168: \"ON.KEY\",\n  169: \"APP.RESTORE\",\n  170: \"APP.MOVE\",\n  171: \"APP.SIZE\",\n  172: \"APP.MINIMIZE\",\n  173: \"APP.MAXIMIZE\",\n  174: \"BRING.TO.FRONT\",\n  175: \"SEND.TO.BACK\",\n  185: \"MAIN.CHART.TYPE\",\n  186: \"OVERLAY.CHART.TYPE\",\n  187: \"SELECT.END\",\n  188: \"OPEN.MAIL\",\n  189: \"SEND.MAIL\",\n  190: \"STANDARD.FONT\",\n  191: \"CONSOLIDATE\",\n  192: \"SORT.SPECIAL\",\n  193: \"GALLERY.3D.AREA\",\n  194: \"GALLERY.3D.COLUMN\",\n  195: \"GALLERY.3D.LINE\",\n  196: \"GALLERY.3D.PIE\",\n  197: \"VIEW.3D\",\n  198: \"GOAL.SEEK\",\n  199: \"WORKGROUP\",\n  200: \"FILL.GROUP\",\n  201: \"UPDATE.LINK\",\n  202: \"PROMOTE\",\n  203: \"DEMOTE\",\n  204: \"SHOW.DETAIL\",\n  206: \"UNGROUP\",\n  207: \"OBJECT.PROPERTIES\",\n  208: \"SAVE.NEW.OBJECT\",\n  209: \"SHARE\",\n  210: \"SHARE.NAME\",\n  211: \"DUPLICATE\",\n  212: \"APPLY.STYLE\",\n  213: \"ASSIGN.TO.OBJECT\",\n  214: \"OBJECT.PROTECTION\",\n  215: \"HIDE.OBJECT\",\n  216: \"SET.EXTRACT\",\n  217: \"CREATE.PUBLISHER\",\n  218: \"SUBSCRIBE.TO\",\n  219: \"ATTRIBUTES\",\n  220: \"SHOW.TOOLBAR\",\n  222: \"PRINT.PREVIEW\",\n  223: \"EDIT.COLOR\",\n  224: \"SHOW.LEVELS\",\n  225: \"FORMAT.MAIN\",\n  226: \"FORMAT.OVERLAY\",\n  227: \"ON.RECALC\",\n  228: \"EDIT.SERIES\",\n  229: \"DEFINE.STYLE\",\n  240: \"LINE.PRINT\",\n  243: \"ENTER.DATA\",\n  249: \"GALLERY.RADAR\",\n  250: \"MERGE.STYLES\",\n  251: \"EDITION.OPTIONS\",\n  252: \"PASTE.PICTURE\",\n  253: \"PASTE.PICTURE.LINK\",\n  254: \"SPELLING\",\n  256: \"ZOOM\",\n  259: \"INSERT.OBJECT\",\n  260: \"WINDOW.MINIMIZE\",\n  265: \"SOUND.NOTE\",\n  266: \"SOUND.PLAY\",\n  267: \"FORMAT.SHAPE\",\n  268: \"EXTEND.POLYGON\",\n  269: \"FORMAT.AUTO\",\n  272: \"GALLERY.3D.BAR\",\n  273: \"GALLERY.3D.SURFACE\",\n  274: \"FILL.AUTO\",\n  276: \"CUSTOMIZE.TOOLBAR\",\n  277: \"ADD.TOOL\",\n  278: \"EDIT.OBJECT\",\n  279: \"ON.DOUBLECLICK\",\n  280: \"ON.ENTRY\",\n  281: \"WORKBOOK.ADD\",\n  282: \"WORKBOOK.MOVE\",\n  283: \"WORKBOOK.COPY\",\n  284: \"WORKBOOK.OPTIONS\",\n  285: \"SAVE.WORKSPACE\",\n  288: \"CHART.WIZARD\",\n  289: \"DELETE.TOOL\",\n  290: \"MOVE.TOOL\",\n  291: \"WORKBOOK.SELECT\",\n  292: \"WORKBOOK.ACTIVATE\",\n  293: \"ASSIGN.TO.TOOL\",\n  295: \"COPY.TOOL\",\n  296: \"RESET.TOOL\",\n  297: \"CONSTRAIN.NUMERIC\",\n  298: \"PASTE.TOOL\",\n  302: \"WORKBOOK.NEW\",\n  305: \"SCENARIO.CELLS\",\n  306: \"SCENARIO.DELETE\",\n  307: \"SCENARIO.ADD\",\n  308: \"SCENARIO.EDIT\",\n  309: \"SCENARIO.SHOW\",\n  310: \"SCENARIO.SHOW.NEXT\",\n  311: \"SCENARIO.SUMMARY\",\n  312: \"PIVOT.TABLE.WIZARD\",\n  313: \"PIVOT.FIELD.PROPERTIES\",\n  314: \"PIVOT.FIELD\",\n  315: \"PIVOT.ITEM\",\n  316: \"PIVOT.ADD.FIELDS\",\n  318: \"OPTIONS.CALCULATION\",\n  319: \"OPTIONS.EDIT\",\n  320: \"OPTIONS.VIEW\",\n  321: \"ADDIN.MANAGER\",\n  322: \"MENU.EDITOR\",\n  323: \"ATTACH.TOOLBARS\",\n  324: \"VBAActivate\",\n  325: \"OPTIONS.CHART\",\n  328: \"VBA.INSERT.FILE\",\n  330: \"VBA.PROCEDURE.DEFINITION\",\n  336: \"ROUTING.SLIP\",\n  338: \"ROUTE.DOCUMENT\",\n  339: \"MAIL.LOGON\",\n  342: \"INSERT.PICTURE\",\n  343: \"EDIT.TOOL\",\n  344: \"GALLERY.DOUGHNUT\",\n  350: \"CHART.TREND\",\n  352: \"PIVOT.ITEM.PROPERTIES\",\n  354: \"WORKBOOK.INSERT\",\n  355: \"OPTIONS.TRANSITION\",\n  356: \"OPTIONS.GENERAL\",\n  370: \"FILTER.ADVANCED\",\n  373: \"MAIL.ADD.MAILER\",\n  374: \"MAIL.DELETE.MAILER\",\n  375: \"MAIL.REPLY\",\n  376: \"MAIL.REPLY.ALL\",\n  377: \"MAIL.FORWARD\",\n  378: \"MAIL.NEXT.LETTER\",\n  379: \"DATA.LABEL\",\n  380: \"INSERT.TITLE\",\n  381: \"FONT.PROPERTIES\",\n  382: \"MACRO.OPTIONS\",\n  383: \"WORKBOOK.HIDE\",\n  384: \"WORKBOOK.UNHIDE\",\n  385: \"WORKBOOK.DELETE\",\n  386: \"WORKBOOK.NAME\",\n  388: \"GALLERY.CUSTOM\",\n  390: \"ADD.CHART.AUTOFORMAT\",\n  391: \"DELETE.CHART.AUTOFORMAT\",\n  392: \"CHART.ADD.DATA\",\n  393: \"AUTO.OUTLINE\",\n  394: \"TAB.ORDER\",\n  395: \"SHOW.DIALOG\",\n  396: \"SELECT.ALL\",\n  397: \"UNGROUP.SHEETS\",\n  398: \"SUBTOTAL.CREATE\",\n  399: \"SUBTOTAL.REMOVE\",\n  400: \"RENAME.OBJECT\",\n  412: \"WORKBOOK.SCROLL\",\n  413: \"WORKBOOK.NEXT\",\n  414: \"WORKBOOK.PREV\",\n  415: \"WORKBOOK.TAB.SPLIT\",\n  416: \"FULL.SCREEN\",\n  417: \"WORKBOOK.PROTECT\",\n  420: \"SCROLLBAR.PROPERTIES\",\n  421: \"PIVOT.SHOW.PAGES\",\n  422: \"TEXT.TO.COLUMNS\",\n  423: \"FORMAT.CHARTTYPE\",\n  424: \"LINK.FORMAT\",\n  425: \"TRACER.DISPLAY\",\n  430: \"TRACER.NAVIGATE\",\n  431: \"TRACER.CLEAR\",\n  432: \"TRACER.ERROR\",\n  433: \"PIVOT.FIELD.GROUP\",\n  434: \"PIVOT.FIELD.UNGROUP\",\n  435: \"CHECKBOX.PROPERTIES\",\n  436: \"LABEL.PROPERTIES\",\n  437: \"LISTBOX.PROPERTIES\",\n  438: \"EDITBOX.PROPERTIES\",\n  439: \"PIVOT.REFRESH\",\n  440: \"LINK.COMBO\",\n  441: \"OPEN.TEXT\",\n  442: \"HIDE.DIALOG\",\n  443: \"SET.DIALOG.FOCUS\",\n  444: \"ENABLE.OBJECT\",\n  445: \"PUSHBUTTON.PROPERTIES\",\n  446: \"SET.DIALOG.DEFAULT\",\n  447: \"FILTER\",\n  448: \"FILTER.SHOW.ALL\",\n  449: \"CLEAR.OUTLINE\",\n  450: \"FUNCTION.WIZARD\",\n  451: \"ADD.LIST.ITEM\",\n  452: \"SET.LIST.ITEM\",\n  453: \"REMOVE.LIST.ITEM\",\n  454: \"SELECT.LIST.ITEM\",\n  455: \"SET.CONTROL.VALUE\",\n  456: \"SAVE.COPY.AS\",\n  458: \"OPTIONS.LISTS.ADD\",\n  459: \"OPTIONS.LISTS.DELETE\",\n  460: \"SERIES.AXES\",\n  461: \"SERIES.X\",\n  462: \"SERIES.Y\",\n  463: \"ERRORBAR.X\",\n  464: \"ERRORBAR.Y\",\n  465: \"FORMAT.CHART\",\n  466: \"SERIES.ORDER\",\n  467: \"MAIL.LOGOFF\",\n  468: \"CLEAR.ROUTING.SLIP\",\n  469: \"APP.ACTIVATE.MICROSOFT\",\n  470: \"MAIL.EDIT.MAILER\",\n  471: \"ON.SHEET\",\n  472: \"STANDARD.WIDTH\",\n  473: \"SCENARIO.MERGE\",\n  474: \"SUMMARY.INFO\",\n  475: \"FIND.FILE\",\n  476: \"ACTIVE.CELL.FONT\",\n  477: \"ENABLE.TIPWIZARD\",\n  478: \"VBA.MAKE.ADDIN\",\n  480: \"INSERTDATATABLE\",\n  481: \"WORKGROUP.OPTIONS\",\n  482: \"MAIL.SEND.MAILER\",\n  485: \"AUTOCORRECT\",\n  489: \"POST.DOCUMENT\",\n  491: \"PICKLIST\",\n  493: \"VIEW.SHOW\",\n  494: \"VIEW.DEFINE\",\n  495: \"VIEW.DELETE\",\n  509: \"SHEET.BACKGROUND\",\n  510: \"INSERT.MAP.OBJECT\",\n  511: \"OPTIONS.MENONO\",\n  517: \"MSOCHECKS\",\n  518: \"NORMAL\",\n  519: \"LAYOUT\",\n  520: \"RM.PRINT.AREA\",\n  521: \"CLEAR.PRINT.AREA\",\n  522: \"ADD.PRINT.AREA\",\n  523: \"MOVE.BRK\",\n  545: \"HIDECURR.NOTE\",\n  546: \"HIDEALL.NOTES\",\n  547: \"DELETE.NOTE\",\n  548: \"TRAVERSE.NOTES\",\n  549: \"ACTIVATE.NOTES\",\n  620: \"PROTECT.REVISIONS\",\n  621: \"UNPROTECT.REVISIONS\",\n  647: \"OPTIONS.ME\",\n  653: \"WEB.PUBLISH\",\n  667: \"NEWWEBQUERY\",\n  673: \"PIVOT.TABLE.CHART\",\n  753: \"OPTIONS.SAVE\",\n  755: \"OPTIONS.SPELL\",\n  808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n  0: \"COUNT\",\n  1: \"IF\",\n  2: \"ISNA\",\n  3: \"ISERROR\",\n  4: \"SUM\",\n  5: \"AVERAGE\",\n  6: \"MIN\",\n  7: \"MAX\",\n  8: \"ROW\",\n  9: \"COLUMN\",\n  10: \"NA\",\n  11: \"NPV\",\n  12: \"STDEV\",\n  13: \"DOLLAR\",\n  14: \"FIXED\",\n  15: \"SIN\",\n  16: \"COS\",\n  17: \"TAN\",\n  18: \"ATAN\",\n  19: \"PI\",\n  20: \"SQRT\",\n  21: \"EXP\",\n  22: \"LN\",\n  23: \"LOG10\",\n  24: \"ABS\",\n  25: \"INT\",\n  26: \"SIGN\",\n  27: \"ROUND\",\n  28: \"LOOKUP\",\n  29: \"INDEX\",\n  30: \"REPT\",\n  31: \"MID\",\n  32: \"LEN\",\n  33: \"VALUE\",\n  34: \"TRUE\",\n  35: \"FALSE\",\n  36: \"AND\",\n  37: \"OR\",\n  38: \"NOT\",\n  39: \"MOD\",\n  40: \"DCOUNT\",\n  41: \"DSUM\",\n  42: \"DAVERAGE\",\n  43: \"DMIN\",\n  44: \"DMAX\",\n  45: \"DSTDEV\",\n  46: \"VAR\",\n  47: \"DVAR\",\n  48: \"TEXT\",\n  49: \"LINEST\",\n  50: \"TREND\",\n  51: \"LOGEST\",\n  52: \"GROWTH\",\n  53: \"GOTO\",\n  54: \"HALT\",\n  55: \"RETURN\",\n  56: \"PV\",\n  57: \"FV\",\n  58: \"NPER\",\n  59: \"PMT\",\n  60: \"RATE\",\n  61: \"MIRR\",\n  62: \"IRR\",\n  63: \"RAND\",\n  64: \"MATCH\",\n  65: \"DATE\",\n  66: \"TIME\",\n  67: \"DAY\",\n  68: \"MONTH\",\n  69: \"YEAR\",\n  70: \"WEEKDAY\",\n  71: \"HOUR\",\n  72: \"MINUTE\",\n  73: \"SECOND\",\n  74: \"NOW\",\n  75: \"AREAS\",\n  76: \"ROWS\",\n  77: \"COLUMNS\",\n  78: \"OFFSET\",\n  79: \"ABSREF\",\n  80: \"RELREF\",\n  81: \"ARGUMENT\",\n  82: \"SEARCH\",\n  83: \"TRANSPOSE\",\n  84: \"ERROR\",\n  85: \"STEP\",\n  86: \"TYPE\",\n  87: \"ECHO\",\n  88: \"SET.NAME\",\n  89: \"CALLER\",\n  90: \"DEREF\",\n  91: \"WINDOWS\",\n  92: \"SERIES\",\n  93: \"DOCUMENTS\",\n  94: \"ACTIVE.CELL\",\n  95: \"SELECTION\",\n  96: \"RESULT\",\n  97: \"ATAN2\",\n  98: \"ASIN\",\n  99: \"ACOS\",\n  100: \"CHOOSE\",\n  101: \"HLOOKUP\",\n  102: \"VLOOKUP\",\n  103: \"LINKS\",\n  104: \"INPUT\",\n  105: \"ISREF\",\n  106: \"GET.FORMULA\",\n  107: \"GET.NAME\",\n  108: \"SET.VALUE\",\n  109: \"LOG\",\n  110: \"EXEC\",\n  111: \"CHAR\",\n  112: \"LOWER\",\n  113: \"UPPER\",\n  114: \"PROPER\",\n  115: \"LEFT\",\n  116: \"RIGHT\",\n  117: \"EXACT\",\n  118: \"TRIM\",\n  119: \"REPLACE\",\n  120: \"SUBSTITUTE\",\n  121: \"CODE\",\n  122: \"NAMES\",\n  123: \"DIRECTORY\",\n  124: \"FIND\",\n  125: \"CELL\",\n  126: \"ISERR\",\n  127: \"ISTEXT\",\n  128: \"ISNUMBER\",\n  129: \"ISBLANK\",\n  130: \"T\",\n  131: \"N\",\n  132: \"FOPEN\",\n  133: \"FCLOSE\",\n  134: \"FSIZE\",\n  135: \"FREADLN\",\n  136: \"FREAD\",\n  137: \"FWRITELN\",\n  138: \"FWRITE\",\n  139: \"FPOS\",\n  140: \"DATEVALUE\",\n  141: \"TIMEVALUE\",\n  142: \"SLN\",\n  143: \"SYD\",\n  144: \"DDB\",\n  145: \"GET.DEF\",\n  146: \"REFTEXT\",\n  147: \"TEXTREF\",\n  148: \"INDIRECT\",\n  149: \"REGISTER\",\n  150: \"CALL\",\n  151: \"ADD.BAR\",\n  152: \"ADD.MENU\",\n  153: \"ADD.COMMAND\",\n  154: \"ENABLE.COMMAND\",\n  155: \"CHECK.COMMAND\",\n  156: \"RENAME.COMMAND\",\n  157: \"SHOW.BAR\",\n  158: \"DELETE.MENU\",\n  159: \"DELETE.COMMAND\",\n  160: \"GET.CHART.ITEM\",\n  161: \"DIALOG.BOX\",\n  162: \"CLEAN\",\n  163: \"MDETERM\",\n  164: \"MINVERSE\",\n  165: \"MMULT\",\n  166: \"FILES\",\n  167: \"IPMT\",\n  168: \"PPMT\",\n  169: \"COUNTA\",\n  170: \"CANCEL.KEY\",\n  171: \"FOR\",\n  172: \"WHILE\",\n  173: \"BREAK\",\n  174: \"NEXT\",\n  175: \"INITIATE\",\n  176: \"REQUEST\",\n  177: \"POKE\",\n  178: \"EXECUTE\",\n  179: \"TERMINATE\",\n  180: \"RESTART\",\n  181: \"HELP\",\n  182: \"GET.BAR\",\n  183: \"PRODUCT\",\n  184: \"FACT\",\n  185: \"GET.CELL\",\n  186: \"GET.WORKSPACE\",\n  187: \"GET.WINDOW\",\n  188: \"GET.DOCUMENT\",\n  189: \"DPRODUCT\",\n  190: \"ISNONTEXT\",\n  191: \"GET.NOTE\",\n  192: \"NOTE\",\n  193: \"STDEVP\",\n  194: \"VARP\",\n  195: \"DSTDEVP\",\n  196: \"DVARP\",\n  197: \"TRUNC\",\n  198: \"ISLOGICAL\",\n  199: \"DCOUNTA\",\n  200: \"DELETE.BAR\",\n  201: \"UNREGISTER\",\n  204: \"USDOLLAR\",\n  205: \"FINDB\",\n  206: \"SEARCHB\",\n  207: \"REPLACEB\",\n  208: \"LEFTB\",\n  209: \"RIGHTB\",\n  210: \"MIDB\",\n  211: \"LENB\",\n  212: \"ROUNDUP\",\n  213: \"ROUNDDOWN\",\n  214: \"ASC\",\n  215: \"DBCS\",\n  216: \"RANK\",\n  219: \"ADDRESS\",\n  220: \"DAYS360\",\n  221: \"TODAY\",\n  222: \"VDB\",\n  223: \"ELSE\",\n  224: \"ELSE.IF\",\n  225: \"END.IF\",\n  226: \"FOR.CELL\",\n  227: \"MEDIAN\",\n  228: \"SUMPRODUCT\",\n  229: \"SINH\",\n  230: \"COSH\",\n  231: \"TANH\",\n  232: \"ASINH\",\n  233: \"ACOSH\",\n  234: \"ATANH\",\n  235: \"DGET\",\n  236: \"CREATE.OBJECT\",\n  237: \"VOLATILE\",\n  238: \"LAST.ERROR\",\n  239: \"CUSTOM.UNDO\",\n  240: \"CUSTOM.REPEAT\",\n  241: \"FORMULA.CONVERT\",\n  242: \"GET.LINK.INFO\",\n  243: \"TEXT.BOX\",\n  244: \"INFO\",\n  245: \"GROUP\",\n  246: \"GET.OBJECT\",\n  247: \"DB\",\n  248: \"PAUSE\",\n  251: \"RESUME\",\n  252: \"FREQUENCY\",\n  253: \"ADD.TOOLBAR\",\n  254: \"DELETE.TOOLBAR\",\n  255: \"User\",\n  256: \"RESET.TOOLBAR\",\n  257: \"EVALUATE\",\n  258: \"GET.TOOLBAR\",\n  259: \"GET.TOOL\",\n  260: \"SPELLING.CHECK\",\n  261: \"ERROR.TYPE\",\n  262: \"APP.TITLE\",\n  263: \"WINDOW.TITLE\",\n  264: \"SAVE.TOOLBAR\",\n  265: \"ENABLE.TOOL\",\n  266: \"PRESS.TOOL\",\n  267: \"REGISTER.ID\",\n  268: \"GET.WORKBOOK\",\n  269: \"AVEDEV\",\n  270: \"BETADIST\",\n  271: \"GAMMALN\",\n  272: \"BETAINV\",\n  273: \"BINOMDIST\",\n  274: \"CHIDIST\",\n  275: \"CHIINV\",\n  276: \"COMBIN\",\n  277: \"CONFIDENCE\",\n  278: \"CRITBINOM\",\n  279: \"EVEN\",\n  280: \"EXPONDIST\",\n  281: \"FDIST\",\n  282: \"FINV\",\n  283: \"FISHER\",\n  284: \"FISHERINV\",\n  285: \"FLOOR\",\n  286: \"GAMMADIST\",\n  287: \"GAMMAINV\",\n  288: \"CEILING\",\n  289: \"HYPGEOMDIST\",\n  290: \"LOGNORMDIST\",\n  291: \"LOGINV\",\n  292: \"NEGBINOMDIST\",\n  293: \"NORMDIST\",\n  294: \"NORMSDIST\",\n  295: \"NORMINV\",\n  296: \"NORMSINV\",\n  297: \"STANDARDIZE\",\n  298: \"ODD\",\n  299: \"PERMUT\",\n  300: \"POISSON\",\n  301: \"TDIST\",\n  302: \"WEIBULL\",\n  303: \"SUMXMY2\",\n  304: \"SUMX2MY2\",\n  305: \"SUMX2PY2\",\n  306: \"CHITEST\",\n  307: \"CORREL\",\n  308: \"COVAR\",\n  309: \"FORECAST\",\n  310: \"FTEST\",\n  311: \"INTERCEPT\",\n  312: \"PEARSON\",\n  313: \"RSQ\",\n  314: \"STEYX\",\n  315: \"SLOPE\",\n  316: \"TTEST\",\n  317: \"PROB\",\n  318: \"DEVSQ\",\n  319: \"GEOMEAN\",\n  320: \"HARMEAN\",\n  321: \"SUMSQ\",\n  322: \"KURT\",\n  323: \"SKEW\",\n  324: \"ZTEST\",\n  325: \"LARGE\",\n  326: \"SMALL\",\n  327: \"QUARTILE\",\n  328: \"PERCENTILE\",\n  329: \"PERCENTRANK\",\n  330: \"MODE\",\n  331: \"TRIMMEAN\",\n  332: \"TINV\",\n  334: \"MOVIE.COMMAND\",\n  335: \"GET.MOVIE\",\n  336: \"CONCATENATE\",\n  337: \"POWER\",\n  338: \"PIVOT.ADD.DATA\",\n  339: \"GET.PIVOT.TABLE\",\n  340: \"GET.PIVOT.FIELD\",\n  341: \"GET.PIVOT.ITEM\",\n  342: \"RADIANS\",\n  343: \"DEGREES\",\n  344: \"SUBTOTAL\",\n  345: \"SUMIF\",\n  346: \"COUNTIF\",\n  347: \"COUNTBLANK\",\n  348: \"SCENARIO.GET\",\n  349: \"OPTIONS.LISTS.GET\",\n  350: \"ISPMT\",\n  351: \"DATEDIF\",\n  352: \"DATESTRING\",\n  353: \"NUMBERSTRING\",\n  354: \"ROMAN\",\n  355: \"OPEN.DIALOG\",\n  356: \"SAVE.DIALOG\",\n  357: \"VIEW.GET\",\n  358: \"GETPIVOTDATA\",\n  359: \"HYPERLINK\",\n  360: \"PHONETIC\",\n  361: \"AVERAGEA\",\n  362: \"MAXA\",\n  363: \"MINA\",\n  364: \"STDEVPA\",\n  365: \"VARPA\",\n  366: \"STDEVA\",\n  367: \"VARA\",\n  368: \"BAHTTEXT\",\n  369: \"THAIDAYOFWEEK\",\n  370: \"THAIDIGIT\",\n  371: \"THAIMONTHOFYEAR\",\n  372: \"THAINUMSOUND\",\n  373: \"THAINUMSTRING\",\n  374: \"THAISTRINGLENGTH\",\n  375: \"ISTHAIDIGIT\",\n  376: \"ROUNDBAHTDOWN\",\n  377: \"ROUNDBAHTUP\",\n  378: \"THAIYEAR\",\n  379: \"RTD\",\n  380: \"CUBEVALUE\",\n  381: \"CUBEMEMBER\",\n  382: \"CUBEMEMBERPROPERTY\",\n  383: \"CUBERANKEDMEMBER\",\n  384: \"HEX2BIN\",\n  385: \"HEX2DEC\",\n  386: \"HEX2OCT\",\n  387: \"DEC2BIN\",\n  388: \"DEC2HEX\",\n  389: \"DEC2OCT\",\n  390: \"OCT2BIN\",\n  391: \"OCT2HEX\",\n  392: \"OCT2DEC\",\n  393: \"BIN2DEC\",\n  394: \"BIN2OCT\",\n  395: \"BIN2HEX\",\n  396: \"IMSUB\",\n  397: \"IMDIV\",\n  398: \"IMPOWER\",\n  399: \"IMABS\",\n  400: \"IMSQRT\",\n  401: \"IMLN\",\n  402: \"IMLOG2\",\n  403: \"IMLOG10\",\n  404: \"IMSIN\",\n  405: \"IMCOS\",\n  406: \"IMEXP\",\n  407: \"IMARGUMENT\",\n  408: \"IMCONJUGATE\",\n  409: \"IMAGINARY\",\n  410: \"IMREAL\",\n  411: \"COMPLEX\",\n  412: \"IMSUM\",\n  413: \"IMPRODUCT\",\n  414: \"SERIESSUM\",\n  415: \"FACTDOUBLE\",\n  416: \"SQRTPI\",\n  417: \"QUOTIENT\",\n  418: \"DELTA\",\n  419: \"GESTEP\",\n  420: \"ISEVEN\",\n  421: \"ISODD\",\n  422: \"MROUND\",\n  423: \"ERF\",\n  424: \"ERFC\",\n  425: \"BESSELJ\",\n  426: \"BESSELK\",\n  427: \"BESSELY\",\n  428: \"BESSELI\",\n  429: \"XIRR\",\n  430: \"XNPV\",\n  431: \"PRICEMAT\",\n  432: \"YIELDMAT\",\n  433: \"INTRATE\",\n  434: \"RECEIVED\",\n  435: \"DISC\",\n  436: \"PRICEDISC\",\n  437: \"YIELDDISC\",\n  438: \"TBILLEQ\",\n  439: \"TBILLPRICE\",\n  440: \"TBILLYIELD\",\n  441: \"PRICE\",\n  442: \"YIELD\",\n  443: \"DOLLARDE\",\n  444: \"DOLLARFR\",\n  445: \"NOMINAL\",\n  446: \"EFFECT\",\n  447: \"CUMPRINC\",\n  448: \"CUMIPMT\",\n  449: \"EDATE\",\n  450: \"EOMONTH\",\n  451: \"YEARFRAC\",\n  452: \"COUPDAYBS\",\n  453: \"COUPDAYS\",\n  454: \"COUPDAYSNC\",\n  455: \"COUPNCD\",\n  456: \"COUPNUM\",\n  457: \"COUPPCD\",\n  458: \"DURATION\",\n  459: \"MDURATION\",\n  460: \"ODDLPRICE\",\n  461: \"ODDLYIELD\",\n  462: \"ODDFPRICE\",\n  463: \"ODDFYIELD\",\n  464: \"RANDBETWEEN\",\n  465: \"WEEKNUM\",\n  466: \"AMORDEGRC\",\n  467: \"AMORLINC\",\n  468: \"CONVERT\",\n  724: \"SHEETJS\",\n  469: \"ACCRINT\",\n  470: \"ACCRINTM\",\n  471: \"WORKDAY\",\n  472: \"NETWORKDAYS\",\n  473: \"GCD\",\n  474: \"MULTINOMIAL\",\n  475: \"LCM\",\n  476: \"FVSCHEDULE\",\n  477: \"CUBEKPIMEMBER\",\n  478: \"CUBESET\",\n  479: \"CUBESETCOUNT\",\n  480: \"IFERROR\",\n  481: \"COUNTIFS\",\n  482: \"SUMIFS\",\n  483: \"AVERAGEIF\",\n  484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n  2: 1,\n  3: 1,\n  10: 0,\n  15: 1,\n  16: 1,\n  17: 1,\n  18: 1,\n  19: 0,\n  20: 1,\n  21: 1,\n  22: 1,\n  23: 1,\n  24: 1,\n  25: 1,\n  26: 1,\n  27: 2,\n  30: 2,\n  31: 3,\n  32: 1,\n  33: 1,\n  34: 0,\n  35: 0,\n  38: 1,\n  39: 2,\n  40: 3,\n  41: 3,\n  42: 3,\n  43: 3,\n  44: 3,\n  45: 3,\n  47: 3,\n  48: 2,\n  53: 1,\n  61: 3,\n  63: 0,\n  65: 3,\n  66: 3,\n  67: 1,\n  68: 1,\n  69: 1,\n  70: 1,\n  71: 1,\n  72: 1,\n  73: 1,\n  74: 0,\n  75: 1,\n  76: 1,\n  77: 1,\n  79: 2,\n  80: 2,\n  83: 1,\n  85: 0,\n  86: 1,\n  89: 0,\n  90: 1,\n  94: 0,\n  95: 0,\n  97: 2,\n  98: 1,\n  99: 1,\n  101: 3,\n  102: 3,\n  105: 1,\n  106: 1,\n  108: 2,\n  111: 1,\n  112: 1,\n  113: 1,\n  114: 1,\n  117: 2,\n  118: 1,\n  119: 4,\n  121: 1,\n  126: 1,\n  127: 1,\n  128: 1,\n  129: 1,\n  130: 1,\n  131: 1,\n  133: 1,\n  134: 1,\n  135: 1,\n  136: 2,\n  137: 2,\n  138: 2,\n  140: 1,\n  141: 1,\n  142: 3,\n  143: 4,\n  144: 4,\n  161: 1,\n  162: 1,\n  163: 1,\n  164: 1,\n  165: 2,\n  172: 1,\n  175: 2,\n  176: 2,\n  177: 3,\n  178: 2,\n  179: 1,\n  184: 1,\n  186: 1,\n  189: 3,\n  190: 1,\n  195: 3,\n  196: 3,\n  197: 1,\n  198: 1,\n  199: 3,\n  201: 1,\n  207: 4,\n  210: 3,\n  211: 1,\n  212: 2,\n  213: 2,\n  214: 1,\n  215: 1,\n  225: 0,\n  229: 1,\n  230: 1,\n  231: 1,\n  232: 1,\n  233: 1,\n  234: 1,\n  235: 3,\n  244: 1,\n  247: 4,\n  252: 2,\n  257: 1,\n  261: 1,\n  271: 1,\n  273: 4,\n  274: 2,\n  275: 2,\n  276: 2,\n  277: 3,\n  278: 3,\n  279: 1,\n  280: 3,\n  281: 3,\n  282: 3,\n  283: 1,\n  284: 1,\n  285: 2,\n  286: 4,\n  287: 3,\n  288: 2,\n  289: 4,\n  290: 3,\n  291: 3,\n  292: 3,\n  293: 4,\n  294: 1,\n  295: 3,\n  296: 1,\n  297: 3,\n  298: 1,\n  299: 2,\n  300: 3,\n  301: 3,\n  302: 4,\n  303: 2,\n  304: 2,\n  305: 2,\n  306: 2,\n  307: 2,\n  308: 2,\n  309: 3,\n  310: 2,\n  311: 2,\n  312: 2,\n  313: 2,\n  314: 2,\n  315: 2,\n  316: 4,\n  325: 2,\n  326: 2,\n  327: 2,\n  328: 2,\n  331: 2,\n  332: 2,\n  337: 2,\n  342: 1,\n  343: 1,\n  346: 2,\n  347: 1,\n  350: 4,\n  351: 3,\n  352: 1,\n  353: 2,\n  360: 1,\n  368: 1,\n  369: 1,\n  370: 1,\n  371: 1,\n  372: 1,\n  373: 1,\n  374: 1,\n  375: 1,\n  376: 1,\n  377: 1,\n  378: 1,\n  382: 3,\n  385: 1,\n  392: 1,\n  393: 1,\n  396: 2,\n  397: 2,\n  398: 2,\n  399: 1,\n  400: 1,\n  401: 1,\n  402: 1,\n  403: 1,\n  404: 1,\n  405: 1,\n  406: 1,\n  407: 1,\n  408: 1,\n  409: 1,\n  410: 1,\n  414: 4,\n  415: 1,\n  416: 1,\n  417: 2,\n  420: 1,\n  421: 1,\n  422: 2,\n  424: 1,\n  425: 2,\n  426: 2,\n  427: 2,\n  428: 2,\n  430: 3,\n  438: 3,\n  439: 3,\n  440: 3,\n  443: 2,\n  444: 2,\n  445: 2,\n  446: 2,\n  447: 6,\n  448: 6,\n  449: 2,\n  450: 2,\n  464: 2,\n  468: 3,\n  476: 2,\n  479: 1,\n  480: 2,\n  65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left   == null) margins.left   = defs[0];\n\tif(margins.right  == null) margins.right  = defs[1];\n\tif(margins.top    == null) margins.top    = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array<any>*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array<ColInfo>*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2  autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array<Range>*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array<Range>*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '<mergeCells count=\"' + merges.length + '\">';\n\tfor(var i = 0; i != merges.length; ++i) o += '<mergeCell ref=\"' + encode_range(merges[i]) + '\"/>';\n\treturn o + '</mergeCells>';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array<string>*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"<cols>\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"</cols>\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array<string>*/ = [], cref/*:?Array<string>*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array<RowInfo>*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"<c \" + (x.slice(0,1)==\"<\"?\">\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/<f[^>]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array<string>*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '<sheetData/>';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"<hyperlinks>\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"</hyperlinks>\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] =  write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left  = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left)  f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\",             false], // fObjects\n\t\t[\"scenarios\",           false], // fScenarios\n\t\t[\"formatCells\",          true], // fFormatCells\n\t\t[\"formatColumns\",        true], // fFormatColumns\n\t\t[\"formatRows\",           true], // fFormatRows\n\t\t[\"insertColumns\",        true], // fInsertColumns\n\t\t[\"insertRows\",           true], // fInsertRows\n\t\t[\"insertHyperlinks\",     true], // fInsertHyperlinks\n\t\t[\"deleteColumns\",        true], // fDeleteColumns\n\t\t[\"deleteRows\",           true], // fDeleteRows\n\t\t[\"selectLockedCells\",   false], // fSelLockedCells\n\t\t[\"sort\",                 true], // fSort\n\t\t[\"autoFilter\",           true], // fAutoFilter\n\t\t[\"pivotTables\",          true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false]  // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse      o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array<Range>*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array<number|string>, string, ?string]*/ {\n\tvar col/*:Array<number|string>*/ = [];\n\tvar num = data.match(/^<c:numCache>/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/<c:pt idx=\"(\\d*)\">(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/<c:pt idx=\"(\\d*?)\"><c:v>(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/<c:formatCode>([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/<c:f>(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/<c:numCache>[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery',           false, \"bool\"],\n\t['autoCompressPictures',        true,  \"bool\"],\n\t['backupFile',                  false, \"bool\"],\n\t['checkCompatibility',          false, \"bool\"],\n\t['CodeName',                    ''],\n\t['date1904',                    false, \"bool\"],\n\t['defaultThemeVersion',         0,      \"int\"],\n\t['filterPrivacy',               false, \"bool\"],\n\t['hidePivotFieldList',          false, \"bool\"],\n\t['promptedSolutions',           false, \"bool\"],\n\t['publishItems',                false, \"bool\"],\n\t['refreshAllConnections',       false, \"bool\"],\n\t['saveExternalLinkValues',      true,  \"bool\"],\n\t['showBorderUnselectedTables',  true,  \"bool\"],\n\t['showInkAnnotation',           true,  \"bool\"],\n\t['showObjects',                 'all'],\n\t['showPivotChartFilter',        false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab',                   0,      \"int\"],\n\t['autoFilterDateGrouping',      true,  \"bool\"],\n\t['firstSheet',                  0,      \"int\"],\n\t['minimized',                   false, \"bool\"],\n\t['showHorizontalScroll',        true,  \"bool\"],\n\t['showSheetTabs',               true,  \"bool\"],\n\t['showVerticalScroll',          true,  \"bool\"],\n\t['tabRatio',                    600,    \"int\"],\n\t['visibility',                  'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2  (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 18.2.27 workbook CT_Workbook 1 */\n\t\t\tcase '<workbook':\n\t\t\t\tif(x.match(wbnsregex)) xmlns = \"xmlns\" + x.match(/<(\\w+):/)[1];\n\t\t\t\twb.xmlns = y[xmlns];\n\t\t\t\tbreak;\n\t\t\tcase '</workbook>': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '<fileVersion': delete y[0]; wb.AppVersion = y; break;\n\t\t\tcase '<fileVersion/>': case '</fileVersion>': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '<fileSharing':\n\t\t\t\tbreak;\n\t\t\tcase '<fileSharing/>': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '<workbookPr':\n\t\t\tcase '<workbookPr/>':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '</workbookPr>': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '<workbookProtection':\n\t\t\t\tbreak;\n\t\t\tcase '<workbookProtection/>': break;\n\n\t\t\t/* 18.2.1  bookViews CT_BookViews ? */\n\t\t\tcase '<bookViews': case '<bookViews>': case '</bookViews>': break;\n\t\t\t/* 18.2.30   workbookView CT_BookView + */\n\t\t\tcase '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '</workbookView>': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '<sheets': case '<sheets>': case '</sheets>': break; // aggregate sheet\n\t\t\t/* 18.2.19   sheet CT_Sheet + */\n\t\t\tcase '<sheet':\n\t\t\t\tswitch(y.state) {\n\t\t\t\t\tcase \"hidden\": y.Hidden = 1; break;\n\t\t\t\t\tcase \"veryHidden\": y.Hidden = 2; break;\n\t\t\t\t\tdefault: y.Hidden = 0;\n\t\t\t\t}\n\t\t\t\tdelete y.state;\n\t\t\t\ty.name = unescapexml(utf8read(y.name));\n\t\t\t\tdelete y[0]; wb.Sheets.push(y); break;\n\t\t\tcase '</sheet>': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '<functionGroups': case '<functionGroups/>': break;\n\t\t\t/* 18.2.14   functionGroup CT_FunctionGroup + */\n\t\t\tcase '<functionGroup': break;\n\n\t\t\t/* 18.2.9  externalReferences CT_ExternalReferences ? */\n\t\t\tcase '<externalReferences': case '</externalReferences>': case '<externalReferences>': break;\n\t\t\t/* 18.2.8    externalReference CT_ExternalReference + */\n\t\t\tcase '<externalReference': break;\n\n\t\t\t/* 18.2.6  definedNames CT_DefinedNames ? */\n\t\t\tcase '<definedNames/>': break;\n\t\t\tcase '<definedNames>': case '<definedNames': pass=true; break;\n\t\t\tcase '</definedNames>': pass=false; break;\n\t\t\t/* 18.2.5    definedName CT_DefinedName + */\n\t\t\tcase '<definedName': {\n\t\t\t\tdname = {};\n\t\t\t\tdname.Name = utf8read(y.name);\n\t\t\t\tif(y.comment) dname.Comment = y.comment;\n\t\t\t\tif(y.localSheetId) dname.Sheet = +y.localSheetId;\n\t\t\t\tif(parsexmlbool(y.hidden||\"0\")) dname.Hidden = true;\n\t\t\t\tdnstart = idx + x.length;\n\t\t\t}\tbreak;\n\t\t\tcase '</definedName>': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '<definedName/>': break;\n\n\t\t\t/* 18.2.2  calcPr CT_CalcPr ? */\n\t\t\tcase '<calcPr': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '<calcPr/>': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '</calcPr>': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '<oleSize': break;\n\n\t\t\t/* 18.2.4  customWorkbookViews CT_CustomWorkbookViews ? */\n\t\t\tcase '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break;\n\t\t\t/* 18.2.3  customWorkbookView CT_CustomWorkbookView + */\n\t\t\tcase '<customWorkbookView': case '</customWorkbookView>': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break;\n\t\t\t/* 18.2.17 pivotCache CT_PivotCache ? */\n\t\t\tcase '<pivotCache': break;\n\n\t\t\t/* 18.2.21 smartTagPr CT_SmartTagPr ? */\n\t\t\tcase '<smartTagPr': case '<smartTagPr/>': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '<smartTagType': break;\n\n\t\t\t/* 18.2.24 webPublishing CT_WebPublishing ? */\n\t\t\tcase '<webPublishing': case '<webPublishing/>': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '<fileRecoveryPr': case '<fileRecoveryPr/>': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '<webPublishObject': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break; //TODO: check with versions of excel\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '<ArchID': break;\n\t\t\tcase '<AlternateContent':\n\t\t\tcase '<AlternateContent>': pass=true; break;\n\t\t\tcase '</AlternateContent>': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase '<revisionPtr': break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');\n\t\t}\n\t\treturn x;\n\t});\n\tif(XMLNS_main.indexOf(wb.xmlns) === -1) throw new Error(\"Unknown Namespace: \" + wb.xmlns);\n\n\tparse_wb_defaults(wb);\n\n\treturn wb;\n}\n\nfunction write_wb_xml(wb/*:Workbook*//*::, opts:?WriteOpts*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to[o.length] = writextag('workbook', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t//'xmlns:mx': XMLNS.mx,\n\t\t//'xmlns:s': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t});\n\n\tvar write_names = (wb.Workbook && (wb.Workbook.Names||[]).length > 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"<bookViews>\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '<workbookView firstSheet=\"' + i + '\" activeTab=\"' + i + '\"/>';\n\t\to[o.length] = \"</bookViews>\";\n\t}\n\n\to[o.length] = \"<sheets>\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"</sheets>\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"<definedNames>\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"</definedNames>\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4,  28800);\n\to.write_shift(4,  17600);\n\to.write_shift(4,  500);\n\to.write_shift(4,  idx);\n\to.write_shift(4,  idx);\n\tvar flags = 0x78;\n\to.write_shift(1,  flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array<RawComment>*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array<any>*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"<?xml\") == -1) [\"html\", \"table\", \"head\", \"meta\", \"script\", \"style\", \"div\"].forEach(function(tag) { if(opening.indexOf(\"<\" + tag) >= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array<string>*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag('<Data ss:Type=\"String\">'), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array<RowInfo>*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\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\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is <office:document> */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is <uof:UOF> */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array<string>*/ = ['<Style ss:ID=\"Default\" ss:Name=\"Normal\"><NumberFormat/></Style>'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array<string>*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array<string>*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"<PageSetup>\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"</PageSetup>\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"<Selected/>\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"<DisplayRightToLeft/>\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array<any>*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('<Data ss:Type=\"' + t + '\">' + _v + '</Data>');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '<Row ss:Index=\"' + (R+1) + '\"';\n\tif(row) {\n\t\tif(row.hpt && !row.hpx) row.hpx = pt2px(row.hpt);\n\t\tif(row.hpx) o += ' ss:AutoFitHeight=\"0\" ss:Height=\"' + row.hpx + '\"';\n\t\tif(row.hidden) o += ' ss:Hidden=\"1\"';\n\t}\n\treturn o + '>';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array<string>*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"</Row>\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Names>\" + t + \"</Names>\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Table>\" + t + \"</Table>\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array<string>*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns':      XLMLNS.ss,\n\t\t'xmlns:o':    XLMLNS.o,\n\t\t'xmlns:x':    XLMLNS.x,\n\t\t'xmlns:ss':   XLMLNS.ss,\n\t\t'xmlns:dt':   XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue          0x003c\n\t- 2.4.59 ContinueBigName   0x043c\n\t- 2.4.60 ContinueFrt       0x0812\n\t- 2.4.61 ContinueFrt11     0x0875\n\t- 2.4.62 ContinueFrt12     0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array<string>*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval =  1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval =  1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;\n\tif(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error(\"Sheet not found: \" + o.sheet);\n\twrite_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o));\n\t/* ... */\n\twrite_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);\n\t/* ... */\n\twrite_biff_rec(ba, 0x000A);\n\treturn ba.end();\n}\n\nfunction write_FONTS_biff8(ba, data, opts) {\n\twrite_biff_rec(ba, 0x0031 /* Font */, write_Font({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Arial\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}, opts));\n}\n\n\nfunction write_FMTS_biff8(ba, NF/*:?SSFTable*/, opts) {\n\tif(!NF) return;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_biff_rec(ba, 0x041E /* Format */, write_Format(i, NF[i], opts));\n\t});\n}\n\nfunction write_FEAT(ba, ws) {\n\t/* [MS-XLS] 2.4.112 */\n\tvar o = new_buf(19);\n\to.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);\n\twrite_biff_rec(ba, 0x0867 /* FeatHdr */, o);\n\t/* [MS-XLS] 2.4.111 */\n\to = new_buf(39);\n\to.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);\n\to.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);\n\twrite_Ref8U(safe_decode_range(ws['!ref']||\"A1\"), o);\n\to.write_shift(4, 4);\n\twrite_biff_rec(ba, 0x0868 /* Feat */, o);\n}\n\nfunction write_CELLXFS_biff8(ba, opts) {\n\tfor(var i = 0; i < 16; ++i) write_biff_rec(ba, 0x00e0 /* XF */, write_XF({numFmtId:0, style:true}, 0, opts));\n\topts.cellXfs.forEach(function(c) {\n\t\twrite_biff_rec(ba, 0x00e0 /* XF */, write_XF(c, 0, opts));\n\t});\n}\n\nfunction write_ws_biff8_hlinks(ba/*:BufArray*/, ws) {\n\tfor(var R=0; R<ws['!links'].length; ++R) {\n\t\tvar HL = ws['!links'][R];\n\t\twrite_biff_rec(ba, 0x01b8 /* HLink */, write_HLink(HL));\n\t\tif(HL[1].Tooltip) write_biff_rec(ba, 0x0800 /* HLinkTooltip */, write_HLinkTooltip(HL));\n\t}\n\tdelete ws['!links'];\n}\n\nfunction write_ws_cols_biff8(ba, cols) {\n\tif(!cols) return;\n\tvar cnt = 0;\n\tcols.forEach(function(col, idx) {\n\t\tif(++cnt <= 256 && col) {\n\t\t\twrite_biff_rec(ba, 0x007d /* ColInfo */, write_ColInfo(col_obj_w(idx, col), idx));\n\t\t}\n\t});\n}\n\nfunction write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts) {\n\tvar os = 16 + get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.v == null && !cell.bf) {\n\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t\treturn;\n\t}\n\tif(cell.bf) write_biff_rec(ba, 0x0006 /* Formula */, write_Formula(cell, R, C, opts, os));\n\telse switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\t/* TODO: emit RK as appropriate */\n\t\t\twrite_biff_rec(ba, 0x0203 /* Number */, write_Number(R, C, v, os, opts));\n\t\t\tbreak;\n\t\tcase 'b': case 'e':\n\t\t\twrite_biff_rec(ba, 0x0205 /* BoolErr */, write_BoolErr(R, C, cell.v, os, opts, cell.t));\n\t\t\tbreak;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvar isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);\n\t\t\t\twrite_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));\n\t\t\t} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||\"\").slice(0,255), os, opts));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t}\n}\n\n/* [MS-XLS] 2.1.7.20.5 */\nfunction write_ws_biff8(idx/*:number*/, opts, wb/*:Workbook*/) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheet/*:WBWSProp*/ = ((_WB.Sheets||[])[idx]||{}/*:any*/);\n\tvar dense = Array.isArray(ws);\n\tvar b8 = opts.biff == 8;\n\tvar ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array<WBWSProp>*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255).  Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(/<!--.*?-->/g, \"\");\n\tvar mtch/*:any*/ = str.match(/<table/i);\n\tif(!mtch) throw new Error(\"Invalid HTML: could not find <table>\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?<tr[^>]*>)/i, \"<tr>\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array<Range>*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"<tr\") { ++R; if(opts.sheetRows && opts.sheetRows <= R) { --R; break; } C = 0; continue; }\n\t\tif(hd != \"<td\" && hd != \"<th\") continue;\n\t\tvar cells = row.split(/<\\/t[dh]>/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/<t[dh]/i)) continue;\n\t\t\tvar m = cell, cc = 0;\n\t\t\t/* TODO: parse styles etc */\n\t\t\twhile(m.charAt(0) == \"<\" && (cc = m.indexOf(\">\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array<Range>*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array<string>*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '<span contenteditable=\"true\">' + w + '</span>';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '<a href=\"' + cell.l.Target +'\">' + w + '</a>';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"<tr>\";\n\treturn preamble + oo.join(\"\") + \"</tr>\";\n}\n\nvar HTML_BEGIN = '<html><head><meta charset=\"utf-8\"/><title>SheetJS Table Export</title></head><body>';\nvar HTML_END = '</body></html>';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/<table[\\s\\S]*?>[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find <table>\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\treturn out.join(\"\") + '<table' + (o && o.id ? ' id=\"' + o.id + '\"' : \"\") + '>';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array<string>*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"</table>\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection<HTMLTableRowElement>*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array<Range>*/ = [], midx = 0;\n\tvar rowinfo/*:Array<RowInfo>*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection<HTMLTableCellElement>*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used.  Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new <a> */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array<any>*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(/<text:s\\/>/g,\" \")\n\t\t.replace(/<text:s text:c=\"(\\d+)\"\\/>/g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/<text:tab[^>]*\\/>/g,\"\\t\")\n\t\t.replace(/<text:line-break\\/>/g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday:           [\"d\",   \"dd\"],\n\tmonth:         [\"m\",   \"mm\"],\n\tyear:          [\"y\",   \"yy\"],\n\thours:         [\"h\",   \"hh\"],\n\tminutes:       [\"m\",   \"mm\"],\n\tseconds:       [\"s\",   \"ss\"],\n\t\"am-pm\":       [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera:           [\"e\",   \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter:       [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array<any>*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array<string>*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array<Range>*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array<RowInfo>*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 <table:table>\n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 <table:table-row-group>\n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 <table:table-row>\n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 <table:covered-table-cell>\n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\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\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 <table:table-cell>\n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: <office:document> is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 <office:document-content>\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 <office:spreadsheet>\n\t\t\tcase 'scripts': // 3.12 <office:scripts>\n\t\t\tcase 'styles': // TODO <office:styles>\n\t\t\tcase 'font-face-decls': // 3.14 <office:font-face-decls>\n\t\t\tcase 'master-styles': // 3.15.4 <office:master-styles> -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 <office:annotation>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 <dc:creator>\n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: <office:meta> <uof:元数据> FODS/UOF\n\t\t\tcase 'settings': // TODO: <office:settings>\n\t\t\tcase 'config-item-set': // TODO: <office:config-item-set>\n\t\t\tcase 'config-item-map-indexed': // TODO: <office:config-item-map-indexed>\n\t\t\tcase 'config-item-map-entry': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'config-item-map-named': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'shapes': // 9.2.8 <table:shapes>\n\t\t\tcase 'frame': // 10.4.2 <draw:frame>\n\t\t\tcase 'text-box': // 10.4.3 <draw:text-box>\n\t\t\tcase 'image': // 10.4.4 <draw:image>\n\t\t\tcase 'data-pilot-tables': // 9.6.2 <table:data-pilot-tables>\n\t\t\tcase 'list-style': // 16.30 <text:list-style>\n\t\t\tcase 'form': // 13.13 <form:form>\n\t\t\tcase 'dde-links': // 9.8 <table:dde-links>\n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: <number:scientific-number>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: <number:currency-symbol>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: <number:currency-style>\n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 <number:number-style>\n\t\t\tcase 'percentage-style': // 16.27.9 <number:percentage-style>\n\t\t\tcase 'date-style': // 16.27.10 <number:date-style>\n\t\t\tcase 'time-style': // 16.27.18 <number:time-style>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 <office:script>\n\t\t\tcase 'libraries': break; // TODO: <ooo:libraries>\n\t\t\tcase 'automatic-styles': break; // 3.15.3 <office:automatic-styles>\n\n\t\t\tcase 'default-style': // TODO: <style:default-style>\n\t\t\tcase 'page-layout': break; // TODO: <style:page-layout>\n\t\t\tcase 'style': // 16.2 <style:style>\n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 <style:map>\n\t\t\tcase 'font-face': break; // 16.21 <style:font-face>\n\n\t\t\tcase 'paragraph-properties': break; // 17.6 <style:paragraph-properties>\n\t\t\tcase 'table-properties': break; // 17.15 <style:table-properties>\n\t\t\tcase 'table-column-properties': break; // 17.16 <style:table-column-properties>\n\t\t\tcase 'table-row-properties': break; // 17.17 <style:table-row-properties>\n\t\t\tcase 'table-cell-properties': break; // 17.18 <style:table-cell-properties>\n\n\t\t\tcase 'number': // 16.27.3 <number:number>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 <number:fraction>\n\n\t\t\tcase 'day': // 16.27.11 <number:day>\n\t\t\tcase 'month': // 16.27.12 <number:month>\n\t\t\tcase 'year': // 16.27.13 <number:year>\n\t\t\tcase 'era': // 16.27.14 <number:era>\n\t\t\tcase 'day-of-week': // 16.27.15 <number:day-of-week>\n\t\t\tcase 'week-of-year': // 16.27.16 <number:week-of-year>\n\t\t\tcase 'quarter': // 16.27.17 <number:quarter>\n\t\t\tcase 'hours': // 16.27.19 <number:hours>\n\t\t\tcase 'minutes': // 16.27.20 <number:minutes>\n\t\t\tcase 'seconds': // 16.27.21 <number:seconds>\n\t\t\tcase 'am-pm': // 16.27.22 <number:am-pm>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 <number:boolean-style>\n\t\t\tcase 'boolean': break; // 16.27.24 <number:boolean>\n\t\t\tcase 'text-style': break; // 16.27.25 <number:text-style>\n\t\t\tcase 'text': // 16.27.26 <number:text>\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 <table:named-range>\n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 <number:text-content>\n\t\t\tcase 'text-properties': break; // 16.27.27 <style:text-properties>\n\t\t\tcase 'embedded-text': break; // 16.27.4 <number:embedded-text>\n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 <table:table-column>\n\t\t\tcase 'table-header-rows': break; // 9.1.7 <table:table-header-rows>\n\t\t\tcase 'table-rows': break; // 9.1.12 <table:table-rows>\n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 <table:table-column-group>\n\t\t\tcase 'table-header-columns': break; // 9.1.11 <table:table-header-columns>\n\t\t\tcase 'table-columns': break; // 9.1.12 <table:table-columns>\n\n\t\t\tcase 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 <style:graphic-properties>\n\t\t\tcase 'calculation-settings': break; // 9.4.1 <table:calculation-settings>\n\t\t\tcase 'named-expressions': break; // 9.4.11 <table:named-expressions>\n\t\t\tcase 'label-range': break; // 9.4.9 <table:label-range>\n\t\t\tcase 'label-ranges': break; // 9.4.10 <table:label-ranges>\n\t\t\tcase 'named-expression': break; // 9.4.13 <table:named-expression>\n\t\t\tcase 'sort': break; // 9.4.19 <table:sort>\n\t\t\tcase 'sort-by': break; // 9.4.20 <table:sort-by>\n\t\t\tcase 'sort-groups': break; // 9.4.22 <table:sort-groups>\n\n\t\t\tcase 'tab': break; // 6.1.4 <text:tab>\n\t\t\tcase 'line-break': break; // 6.1.5 <text:line-break>\n\t\t\tcase 'span': break; // 6.1.7 <text:span>\n\t\t\tcase 'p': case '文本串': // 5.1.3 <text:p>\n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // <text:p>\n\t\t\tcase 's': break; // <text:s>\n\n\t\t\tcase 'database-range': // 9.4.15 <table:database-range>\n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 <draw:object>\n\t\t\tcase 'title': case '标题': break; // <*:title> OR <uof:标题>\n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 <table:iteration>\n\t\t\tcase 'content-validations': break; // 9.4.4 <table:\n\t\t\tcase 'content-validation': break; // 9.4.5 <table:\n\t\t\tcase 'help-message': break; // 9.4.6 <table:\n\t\t\tcase 'error-message': break; // 9.4.7 <table:\n\t\t\tcase 'database-ranges': break; // 9.4.14 <table:database-ranges>\n\t\t\tcase 'filter': break; // 9.5.2 <table:filter>\n\t\t\tcase 'filter-and': break; // 9.5.3 <table:filter-and>\n\t\t\tcase 'filter-or': break; // 9.5.4 <table:filter-or>\n\t\t\tcase 'filter-condition': break; // 9.5.5 <table:filter-condition>\n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 <text:\n\t\t\tcase 'list-level-style-number': break; // 16.32 <text:\n\t\t\tcase 'list-level-properties': break; // 17.19 <style:\n\n\t\t\t/* 7.3 Document Fields */\n\t\t\tcase 'sender-firstname': // 7.3.6.2\n\t\t\tcase 'sender-lastname': // 7.3.6.3\n\t\t\tcase 'sender-initials': // 7.3.6.4\n\t\t\tcase 'sender-title': // 7.3.6.5\n\t\t\tcase 'sender-position': // 7.3.6.6\n\t\t\tcase 'sender-email': // 7.3.6.7\n\t\t\tcase 'sender-phone-private': // 7.3.6.8\n\t\t\tcase 'sender-fax': // 7.3.6.9\n\t\t\tcase 'sender-company': // 7.3.6.10\n\t\t\tcase 'sender-phone-work': // 7.3.6.11\n\t\t\tcase 'sender-street': // 7.3.6.12\n\t\t\tcase 'sender-city': // 7.3.6.13\n\t\t\tcase 'sender-postal-code': // 7.3.6.14\n\t\t\tcase 'sender-country': // 7.3.6.15\n\t\t\tcase 'sender-state-or-province': // 7.3.6.16\n\t\t\tcase 'author-name': // 7.3.7.1\n\t\t\tcase 'author-initials': // 7.3.7.2\n\t\t\tcase 'chapter': // 7.3.8\n\t\t\tcase 'file-name': // 7.3.9\n\t\t\tcase 'template-name': // 7.3.9\n\t\t\tcase 'sheet-name': // 7.3.9\n\t\t\t\tbreak;\n\n\t\t\tcase 'event-listener':\n\t\t\t\tbreak;\n\t\t\t/* TODO: FODS Properties */\n\t\t\tcase 'initial-creator':\n\t\t\tcase 'creation-date':\n\t\t\tcase 'print-date':\n\t\t\tcase 'generator':\n\t\t\tcase 'document-statistic':\n\t\t\tcase 'user-defined':\n\t\t\tcase 'editing-duration':\n\t\t\tcase 'editing-cycles':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: FODS Config */\n\t\t\tcase 'config-item':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: style tokens */\n\t\t\tcase 'page-number': break; // TODO <text:page-number>\n\t\t\tcase 'page-count': break; // TODO <text:page-count>\n\t\t\tcase 'time': break; // TODO <text:time>\n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 <table:\n\t\t\tcase 'detective': break; // 9.3.2 <table:\n\t\t\tcase 'operation': break; // 9.3.3 <table:\n\t\t\tcase 'highlighted-range': break; // 9.3.4 <table:\n\n\t\t\t/* 9.6 Data Pilot Tables <table: */\n\t\t\tcase 'data-pilot-table': // 9.6.3\n\t\t\tcase 'source-cell-range': // 9.6.5\n\t\t\tcase 'source-service': // 9.6.6\n\t\t\tcase 'data-pilot-field': // 9.6.7\n\t\t\tcase 'data-pilot-level': // 9.6.8\n\t\t\tcase 'data-pilot-subtotals': // 9.6.9\n\t\t\tcase 'data-pilot-subtotal': // 9.6.10\n\t\t\tcase 'data-pilot-members': // 9.6.11\n\t\t\tcase 'data-pilot-member': // 9.6.12\n\t\t\tcase 'data-pilot-display-info': // 9.6.13\n\t\t\tcase 'data-pilot-sort-info': // 9.6.14\n\t\t\tcase 'data-pilot-layout-info': // 9.6.15\n\t\t\tcase 'data-pilot-field-reference': // 9.6.16\n\t\t\tcase 'data-pilot-groups': // 9.6.17\n\t\t\tcase 'data-pilot-group': // 9.6.18\n\t\t\tcase 'data-pilot-group-member': // 9.6.19\n\t\t\t\tbreak;\n\n\t\t\t/* 10.3 Drawing Shapes */\n\t\t\tcase 'rect': // 10.3.2\n\t\t\t\tbreak;\n\n\t\t\t/* 14.6 DDE Connections */\n\t\t\tcase 'dde-connection-decls': // 14.6.2 <text:\n\t\t\tcase 'dde-connection-decl': // 14.6.3 <text:\n\t\t\tcase 'dde-link': // 14.6.4 <table:\n\t\t\tcase 'dde-source': // 14.6.5 <office:\n\t\t\t\tbreak;\n\n\t\t\tcase 'properties': break; // 13.7 <form:properties>\n\t\t\tcase 'property': break; // 13.8 <form:property>\n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // <table:\n\t\t\tcase 'office-document-common-attrs': break; // bare\n\t\t\tdefault: switch(Rn[2]) {\n\t\t\t\tcase 'dc:':       // TODO: properties\n\t\t\t\tcase 'calcext:':  // ignore undocumented extensions\n\t\t\t\tcase 'loext:':    // ignore undocumented extensions\n\t\t\t\tcase 'ooo:':      // ignore undocumented extensions\n\t\t\t\tcase 'chartooo:': // ignore undocumented extensions\n\t\t\t\tcase 'draw:':     // TODO: drawing\n\t\t\t\tcase 'style:':    // TODO: styles\n\t\t\t\tcase 'chart:':    // TODO: charts\n\t\t\t\tcase 'form:':     // TODO: forms\n\t\t\t\tcase 'uof:':      // TODO: uof\n\t\t\t\tcase '表:':       // TODO: uof\n\t\t\t\tcase '字:':       // TODO: uof\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts.WTF) throw new Error(Rn);\n\t\t\t}\n\t\t}\n\t\tvar out/*:Workbook*/ = ({\n\t\t\tSheets: Sheets,\n\t\t\tSheetNames: SheetNames,\n\t\t\tWorkbook: WB\n\t\t}/*:any*/);\n\t\tif(opts.bookSheets) delete /*::(*/out/*:: :any)*/.Sheets;\n\t\treturn out;\n}\n\nfunction parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\topts = opts || ({}/*:any*/);\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);\n\tvar content = getzipstr(zip, 'content.xml');\n\tif(!content) throw new Error(\"Missing content.xml in ODS / UOF file\");\n\tvar wb = parse_content_xml(utf8read(content), opts);\n\tif(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml'));\n\treturn wb;\n}\nfunction parse_fods(data/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treturn parse_content_xml(data, opts);\n}\n\n/* OpenDocument */\nvar write_styles_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\tvar master_styles = [\n\t\t'<office:master-styles>',\n\t\t\t'<style:master-page style:name=\"mp1\" style:page-layout-name=\"mp1\">',\n\t\t\t\t'<style:header/>',\n\t\t\t\t'<style:header-left style:display=\"false\"/>',\n\t\t\t\t'<style:footer/>',\n\t\t\t\t'<style:footer-left style:display=\"false\"/>',\n\t\t\t'</style:master-page>',\n\t\t'</office:master-styles>'\n\t].join(\"\");\n\n\tvar payload = '<office:document-styles ' + wxt_helper({\n\t\t'xmlns:office':   \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t'xmlns:table':    \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t'xmlns:style':    \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t'xmlns:text':     \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t'xmlns:draw':     \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t'xmlns:fo':       \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t'xmlns:xlink':    \"http://www.w3.org/1999/xlink\",\n\t\t'xmlns:dc':       \"http://purl.org/dc/elements/1.1/\",\n\t\t'xmlns:number':   \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t'xmlns:svg':      \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t'xmlns:of':       \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t'office:version': \"1.2\"\n\t}) + '>' + master_styles + '</office:document-styles>';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/  +/g, function($$){return '<text:s text:c=\"'+$$.length+'\"/>';})\n\t\t\t.replace(/\\t/g, \"<text:tab/>\")\n\t\t\t.replace(/\\n/g, \"</text:p><text:p>\")\n\t\t\t.replace(/^ /, \"<text:s/>\").replace(/ $/, \"<text:s/>\");\n\t};\n\n\tvar null_cell_xml = '          <table:table-cell />\\n';\n\tvar covered_cell_xml = '          <table:covered-table-cell/>\\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array<string>*/ = [];\n\t\to.push('      <table:table table:name=\"' + escapexml(wb.SheetNames[i]) + '\" table:style-name=\"ta1\">\\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push('        <table:table-column' + (ws[\"!cols\"][C] ? ' table:style-name=\"co' + ws[\"!cols\"][C].ods + '\"' : '') + '></table:table-column>\\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '></table:table-row>\\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '>\\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] =    (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] =    (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&amp;\")});\n\t\t\t\t}\n\t\t\t\to.push('          ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push('        </table:table-row>\\n');\n\t\t}\n\t\to.push('      </table:table>\\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array<string>*/, wb) {\n\t\to.push(' <office:automatic-styles>\\n');\n\n\t\to.push('  <number:date-style style:name=\"N37\" number:automatic-order=\"true\">\\n');\n\t\to.push('   <number:month number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:day number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:year/>\\n');\n\t\to.push('  </number:date-style>\\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"co' + cidx + '\" style:family=\"table-column\">\\n');\n\t\t\t\t\to.push('   <style:table-column-properties fo:break-before=\"auto\" style:column-width=\"' + w + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"ro' + ridx + '\" style:family=\"table-row\">\\n');\n\t\t\t\t\to.push('   <style:table-row-properties fo:break-before=\"auto\" style:row-height=\"' + h + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push('  <style:style style:name=\"ta1\" style:family=\"table\" style:master-page-name=\"mp1\">\\n');\n\t\to.push('   <style:table-properties table:display=\"true\" style:writing-mode=\"lr-tb\"/>\\n');\n\t\to.push('  </style:style>\\n');\n\n\t\t/* table cells, text */\n\t\to.push('  <style:style style:name=\"ce1\" style:family=\"table-cell\" style:parent-style-name=\"Default\" style:data-style-name=\"N37\"/>\\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' </office:automatic-styles>\\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office':       \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table':        \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style':        \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text':         \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw':         \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo':           \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink':        \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc':           \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta':         \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number':       \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg':          \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart':        \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d':         \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math':         \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form':         \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script':       \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo':          \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow':         \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc':         \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom':          \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms':       \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd':          \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi':          \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet':        \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt':          \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of':           \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml':        \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl':        \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo':     \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo':      \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext':      \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext':        \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field':        \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx':        \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t':        \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version':     \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config':    \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('<office:document' + attr + fods + '>\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('<office:document-content' + attr  + '>\\n');\n\t\t// o.push('  <office:scripts/>\\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push('  <office:body>\\n');\n\t\to.push('    <office:spreadsheet>\\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push('    </office:spreadsheet>\\n');\n\t\to.push('  </office:body>\\n');\n\t\tif(opts.bookType == \"fods\") o.push('</office:document>');\n\t\telse o.push('</office:document-content>');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array<Array<string> >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n  return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n  return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n  return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n  outer:\n    for (var L = 0; L <= body.length - search.length; ++L) {\n      for (var j = 0; j < search.length; ++j)\n        if (body[L + j] != search[j])\n          continue outer;\n      return true;\n    }\n  return false;\n}\nfunction u8concat(u8a) {\n  var len = u8a.reduce(function(acc, x) {\n    return acc + x.length;\n  }, 0);\n  var out = new Uint8Array(len);\n  var off = 0;\n  u8a.forEach(function(u8) {\n    out.set(u8, off);\n    off += u8.length;\n  });\n  return out;\n}\nfunction popcnt(x) {\n  x -= x >> 1 & 1431655765;\n  x = (x & 858993459) + (x >> 2 & 858993459);\n  return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n  var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n  var mantissa = buf[offset + 14] & 1;\n  for (var j = offset + 13; j >= offset; --j)\n    mantissa = mantissa * 256 + buf[j];\n  return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n  var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n  var mantissa = value / Math.pow(10, exp - 6176);\n  buf[offset + 15] |= exp >> 7;\n  buf[offset + 14] |= (exp & 127) << 1;\n  for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n    buf[offset + i] = mantissa & 255;\n  buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n  var l = ptr ? ptr[0] : 0;\n  var usz = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      usz |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 28);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 35);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 42);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n    }\n  if (ptr)\n    ptr[0] = l;\n  return usz;\n}\nfunction write_varint49(v) {\n  var usz = new Uint8Array(7);\n  usz[0] = v & 127;\n  var L = 1;\n  sz:\n    if (v > 127) {\n      usz[L - 1] |= 128;\n      usz[L] = v >> 7 & 127;\n      ++L;\n      if (v <= 16383)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 14 & 127;\n      ++L;\n      if (v <= 2097151)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 21 & 127;\n      ++L;\n      if (v <= 268435455)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 256 >>> 21 & 127;\n      ++L;\n      if (v <= 34359738367)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 65536 >>> 21 & 127;\n      ++L;\n      if (v <= 4398046511103)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 16777216 >>> 21 & 127;\n      ++L;\n    }\n  return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n  var l = 0, i32 = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      i32 |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 28;\n    }\n  return i32;\n}\nfunction parse_shallow(buf) {\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var off = ptr[0];\n    var num = parse_varint49(buf, ptr);\n    var type = num & 7;\n    num = Math.floor(num / 8);\n    var len = 0;\n    var res;\n    if (num == 0)\n      break;\n    switch (type) {\n      case 0:\n        {\n          var l = ptr[0];\n          while (buf[ptr[0]++] >= 128)\n            ;\n          res = buf.slice(l, ptr[0]);\n        }\n        break;\n      case 5:\n        len = 4;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 1:\n        len = 8;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 2:\n        len = parse_varint49(buf, ptr);\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 3:\n      case 4:\n      default:\n        throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n    }\n    var v = { data: res, type: type };\n    if (out[num] == null)\n      out[num] = [v];\n    else\n      out[num].push(v);\n  }\n  return out;\n}\nfunction write_shallow(proto) {\n  var out = [];\n  proto.forEach(function(field, idx) {\n    field.forEach(function(item) {\n      if (!item.data)\n        return;\n      out.push(write_varint49(idx * 8 + item.type));\n      if (item.type == 2)\n        out.push(write_varint49(item.data.length));\n      out.push(item.data);\n    });\n  });\n  return u8concat(out);\n}\nfunction mappa(data, cb) {\n  return (data == null ? void 0 : data.map(function(d) {\n    return cb(d.data);\n  })) || [];\n}\nfunction parse_iwa_file(buf) {\n  var _a;\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var len = parse_varint49(buf, ptr);\n    var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n    ptr[0] += len;\n    var res = {\n      id: varint_to_i32(ai[1][0].data),\n      messages: []\n    };\n    ai[2].forEach(function(b) {\n      var mi = parse_shallow(b.data);\n      var fl = varint_to_i32(mi[3][0].data);\n      res.messages.push({\n        meta: mi,\n        data: buf.slice(ptr[0], ptr[0] + fl)\n      });\n      ptr[0] += fl;\n    });\n    if ((_a = ai[3]) == null ? void 0 : _a[0])\n      res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n    out.push(res);\n  }\n  return out;\n}\nfunction write_iwa_file(ias) {\n  var bufs = [];\n  ias.forEach(function(ia) {\n    var ai = [];\n    ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n    ai[2] = [];\n    if (ia.merge != null)\n      ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n    var midata = [];\n    ia.messages.forEach(function(mi) {\n      midata.push(mi.data);\n      mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n      ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n    });\n    var aipayload = write_shallow(ai);\n    bufs.push(write_varint49(aipayload.length));\n    bufs.push(aipayload);\n    midata.forEach(function(mid) {\n      return bufs.push(mid);\n    });\n  });\n  return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n  if (type != 0)\n    throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n  var ptr = [0];\n  var usz = parse_varint49(buf, ptr);\n  var chunks = [];\n  while (ptr[0] < buf.length) {\n    var tag = buf[ptr[0]] & 3;\n    if (tag == 0) {\n      var len = buf[ptr[0]++] >> 2;\n      if (len < 60)\n        ++len;\n      else {\n        var c = len - 59;\n        len = buf[ptr[0]];\n        if (c > 1)\n          len |= buf[ptr[0] + 1] << 8;\n        if (c > 2)\n          len |= buf[ptr[0] + 2] << 16;\n        if (c > 3)\n          len |= buf[ptr[0] + 3] << 24;\n        len >>>= 0;\n        len++;\n        ptr[0] += c;\n      }\n      chunks.push(buf.slice(ptr[0], ptr[0] + len));\n      ptr[0] += len;\n      continue;\n    } else {\n      var offset = 0, length = 0;\n      if (tag == 1) {\n        length = (buf[ptr[0]] >> 2 & 7) + 4;\n        offset = (buf[ptr[0]++] & 224) << 3;\n        offset |= buf[ptr[0]++];\n      } else {\n        length = (buf[ptr[0]++] >> 2) + 1;\n        if (tag == 2) {\n          offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n          ptr[0] += 2;\n        } else {\n          offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n          ptr[0] += 4;\n        }\n      }\n      chunks = [u8concat(chunks)];\n      if (offset == 0)\n        throw new Error(\"Invalid offset 0\");\n      if (offset > chunks[0].length)\n        throw new Error(\"Invalid offset beyond length\");\n      if (length >= offset) {\n        chunks.push(chunks[0].slice(-offset));\n        length -= offset;\n        while (length >= chunks[chunks.length - 1].length) {\n          chunks.push(chunks[chunks.length - 1]);\n          length -= chunks[chunks.length - 1].length;\n        }\n      }\n      chunks.push(chunks[0].slice(-offset, -offset + length));\n    }\n  }\n  var o = u8concat(chunks);\n  if (o.length != usz)\n    throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n  return o;\n}\nfunction decompress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var t = buf[l++];\n    var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n    l += 3;\n    out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n    l += len;\n  }\n  if (l !== buf.length)\n    throw new Error(\"data is not a valid framed stream!\");\n  return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var c = Math.min(buf.length - l, 268435455);\n    var frame = new Uint8Array(4);\n    out.push(frame);\n    var usz = write_varint49(c);\n    var L = usz.length;\n    out.push(usz);\n    if (c <= 60) {\n      L++;\n      out.push(new Uint8Array([c - 1 << 2]));\n    } else if (c <= 256) {\n      L += 2;\n      out.push(new Uint8Array([240, c - 1 & 255]));\n    } else if (c <= 65536) {\n      L += 3;\n      out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n    } else if (c <= 16777216) {\n      L += 4;\n      out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n    } else if (c <= 4294967296) {\n      L += 5;\n      out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n    }\n    out.push(buf.slice(l, l + c));\n    L += c;\n    frame[0] = 0;\n    frame[1] = L & 255;\n    frame[2] = L >> 8 & 255;\n    frame[3] = L >> 16 & 255;\n    l += c;\n  }\n  return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(4, true);\n  var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n  var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 512) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n  if (flags & 16) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 32) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 64) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  var ret;\n  switch (buf[2]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: ieee };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else if (sidx > -1)\n          ret = { t: \"s\", v: sst[sidx] };\n        else if (!isNaN(ieee))\n          ret = { t: \"n\", v: ieee };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n      }\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(8, true);\n  var data_offset = 12;\n  var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 1) {\n    d128 = readDecimal128LE(buf, data_offset);\n    data_offset += 16;\n  }\n  if (flags & 2) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 4) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  if (flags & 8) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 16) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  var ret;\n  switch (buf[1]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: d128 };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n      }\n      break;\n    case 10:\n      ret = { t: \"n\", v: d128 };\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction write_new_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 5;\n  switch (cell.t) {\n    case \"n\":\n      out[1] = 2;\n      writeDecimal128LE(out, l, cell.v);\n      flags |= 1;\n      l += 16;\n      break;\n    case \"b\":\n      out[1] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 2;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[1] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 8;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(8, flags, true);\n  return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 3;\n  switch (cell.t) {\n    case \"n\":\n      out[2] = 2;\n      dv.setFloat64(l, cell.v, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"b\":\n      out[2] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[2] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 16;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(4, flags, true);\n  return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n  switch (buf[0]) {\n    case 0:\n    case 1:\n    case 2:\n    case 3:\n      return parse_old_storage(buf, sst, rsst, buf[0]);\n    case 5:\n      return parse_new_storage(buf, sst, rsst);\n    default:\n      throw new Error(\"Unsupported payload version \".concat(buf[0]));\n  }\n}\nfunction parse_TSP_Reference(buf) {\n  var pb = parse_shallow(buf);\n  return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n  var out = [];\n  out[1] = [{ type: 0, data: write_varint49(idx) }];\n  return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n  var pb = parse_shallow(root.data);\n  var type = varint_to_i32(pb[1][0].data);\n  var entries = pb[3];\n  var data = [];\n  (entries || []).forEach(function(entry) {\n    var le = parse_shallow(entry.data);\n    var key = varint_to_i32(le[1][0].data) >>> 0;\n    switch (type) {\n      case 1:\n        data[key] = u8str(le[3][0].data);\n        break;\n      case 8:\n        {\n          var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n          var rtp = parse_shallow(rt.data);\n          var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n          var mtype = varint_to_i32(rtpref.meta[1][0].data);\n          if (mtype != 2001)\n            throw new Error(\"2000 unexpected reference to \".concat(mtype));\n          var tswpsa = parse_shallow(rtpref.data);\n          data[key] = tswpsa[3].map(function(x) {\n            return u8str(x.data);\n          }).join(\"\");\n        }\n        break;\n    }\n  });\n  return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n  var pb = parse_shallow(u8);\n  var R = varint_to_i32(pb[1][0].data) >>> 0;\n  var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n  var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n  var used_storage_u8, used_storage;\n  if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n    used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n    used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n  } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n    used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n    used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n  } else\n    throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n  var width = wide_offsets ? 4 : 1;\n  var used_storage_offsets = u8_to_dataview(used_storage_u8);\n  var offsets = [];\n  for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n    var off = used_storage_offsets.getUint16(C * 2, true);\n    if (off < 65535)\n      offsets.push([C, off]);\n  }\n  if (offsets.length != cnt)\n    throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n  var cells = [];\n  for (C = 0; C < offsets.length - 1; ++C)\n    cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n  if (offsets.length >= 1)\n    cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n  return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n  var ri = mappa(pb[5], function(u8) {\n    return parse_TST_TileRowInfo(u8, storage);\n  });\n  return {\n    nrows: varint_to_i32(pb[4][0].data) >>> 0,\n    data: ri.reduce(function(acc, x) {\n      if (!acc[x.R])\n        acc[x.R] = [];\n      x.cells.forEach(function(cell, C) {\n        if (acc[x.R][C])\n          throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n        acc[x.R][C] = cell;\n      });\n      return acc;\n    }, [])\n  };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n  range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n  if (range.e.r < 0)\n    throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n  range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n  if (range.e.c < 0)\n    throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n  ws[\"!ref\"] = encode_range(range);\n  var store = parse_shallow(pb[4][0].data);\n  var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n  var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n  var tile = parse_shallow(store[3][0].data);\n  var _R = 0;\n  tile[1].forEach(function(t) {\n    var tl = parse_shallow(t.data);\n    var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n    var mtype = varint_to_i32(ref.meta[1][0].data);\n    if (mtype != 6002)\n      throw new Error(\"6001 unexpected reference to \".concat(mtype));\n    var _tile = parse_TST_Tile(M, ref);\n    _tile.data.forEach(function(row, R) {\n      row.forEach(function(buf, C) {\n        var addr = encode_cell({ r: _R + R, c: C });\n        var res = parse_cell_storage(buf, sst, rsst);\n        if (res)\n          ws[addr] = res;\n      });\n    });\n    _R += _tile.nrows;\n  });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n  var pb = parse_shallow(root.data);\n  var out = { \"!ref\": \"A1\" };\n  var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n  var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n  if (mtype != 6001)\n    throw new Error(\"6000 unexpected reference to \".concat(mtype));\n  parse_TST_TableModelArchive(M, tableref[0], out);\n  return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var out = {\n    name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n    sheets: []\n  };\n  var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n  shapeoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 6e3)\n        out.sheets.push(parse_TST_TableInfoArchive(M, m));\n    });\n  });\n  return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n  var out = book_new();\n  var pb = parse_shallow(root.data);\n  var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n  sheetoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 2) {\n        var root2 = parse_TN_SheetArchive(M, m);\n        root2.sheets.forEach(function(sheet, idx) {\n          book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n        });\n      }\n    });\n  });\n  if (out.SheetNames.length == 0)\n    throw new Error(\"Empty NUMBERS file\");\n  return out;\n}\nfunction parse_numbers_iwa(cfb) {\n  var _a, _b, _c, _d;\n  var M = {}, indices = [];\n  cfb.FullPaths.forEach(function(p) {\n    if (p.match(/\\.iwpv2/))\n      throw new Error(\"Unsupported password protection\");\n  });\n  cfb.FileIndex.forEach(function(s) {\n    if (!s.name.match(/\\.iwa$/))\n      return;\n    var o;\n    try {\n      o = decompress_iwa_file(s.content);\n    } catch (e) {\n      return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n    }\n    var packets;\n    try {\n      packets = parse_iwa_file(o);\n    } catch (e) {\n      return console.log(\"## \" + (e.message || e));\n    }\n    packets.forEach(function(packet) {\n      M[packet.id] = packet.messages;\n      indices.push(packet.id);\n    });\n  });\n  if (!indices.length)\n    throw new Error(\"File has no messages\");\n  var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n  if (!docroot)\n    indices.forEach(function(idx) {\n      M[idx].forEach(function(iwam) {\n        var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n        if (mtype == 1) {\n          if (!docroot)\n            docroot = iwam;\n          else\n            throw new Error(\"Document has multiple roots\");\n        }\n      });\n    });\n  if (!docroot)\n    throw new Error(\"Cannot find Document root\");\n  return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n  var _a, _b, _c, _d;\n  if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n    throw \"Mutation only works on post-BNC storages!\";\n  var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n  if (wide_offsets)\n    throw \"Math only works with normal offsets\";\n  var cnt = 0;\n  var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n  var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n  for (var C = 0; C < data.length; ++C) {\n    if (data[C] == null) {\n      dv.setUint16(C * 2, 65535, true);\n      _dv.setUint16(C * 2, 65535);\n      continue;\n    }\n    dv.setUint16(C * 2, last_offset, true);\n    _dv.setUint16(C * 2, _last_offset, true);\n    var celload, _celload;\n    switch (typeof data[C]) {\n      case \"string\":\n        celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n        break;\n      case \"number\":\n        celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n        break;\n      case \"boolean\":\n        celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n        break;\n      default:\n        throw new Error(\"Unsupported value \" + data[C]);\n    }\n    cell_storage.push(celload);\n    last_offset += celload.length;\n    _cell_storage.push(_celload);\n    _last_offset += _celload.length;\n    ++cnt;\n  }\n  tri[2][0].data = write_varint49(cnt);\n  for (; C < tri[7][0].data.length / 2; ++C) {\n    dv.setUint16(C * 2, 65535, true);\n    _dv.setUint16(C * 2, 65535, true);\n  }\n  tri[6][0].data = u8concat(cell_storage);\n  tri[3][0].data = u8concat(_cell_storage);\n  return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n  if (!opts || !opts.numbers)\n    throw new Error(\"Must pass a `numbers` option -- check the README\");\n  var ws = wb.Sheets[wb.SheetNames[0]];\n  if (wb.SheetNames.length > 1)\n    console.error(\"The Numbers writer currently writes only the first table\");\n  var range = decode_range(ws[\"!ref\"]);\n  range.s.r = range.s.c = 0;\n  var trunc = false;\n  if (range.e.c > 9) {\n    trunc = true;\n    range.e.c = 9;\n  }\n  if (range.e.r > 49) {\n    trunc = true;\n    range.e.r = 49;\n  }\n  if (trunc)\n    console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n  var data = sheet_to_json(ws, { range: range, header: 1 });\n  var SST = [\"~Sh33tJ5~\"];\n  data.forEach(function(row) {\n    return row.forEach(function(cell) {\n      if (typeof cell == \"string\")\n        SST.push(cell);\n    });\n  });\n  var dependents = {};\n  var indices = [];\n  var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (fi.type != 2)\n      return;\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var old_content = fi.content;\n    var raw1 = decompress_iwa_file(old_content);\n    var x2 = parse_iwa_file(raw1);\n    x2.forEach(function(packet2) {\n      indices.push(packet2.id);\n      dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n    });\n  });\n  indices.sort(function(x2, y2) {\n    return x2 - y2;\n  });\n  var indices_varint = indices.filter(function(x2) {\n    return x2 > 1;\n  }).map(function(x2) {\n    return [x2, write_varint49(x2)];\n  });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n    x2.forEach(function(ia) {\n      ia.messages.forEach(function(m) {\n        indices_varint.forEach(function(ivi) {\n          if (ia.messages.some(function(mess) {\n            return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n          })) {\n            dependents[ivi[0]].deps.push(ia.id);\n          }\n        });\n      });\n    });\n  });\n  function get_unique_msgid() {\n    for (var i = 927262; i < 2e6; ++i)\n      if (!dependents[i])\n        return i;\n    throw new Error(\"Too many messages\");\n  }\n  var entry = CFB.find(cfb, dependents[1].location);\n  var x = parse_iwa_file(decompress_iwa_file(entry.content));\n  var docroot;\n  for (var xi = 0; xi < x.length; ++xi) {\n    var packet = x[xi];\n    if (packet.id == 1)\n      docroot = packet;\n  }\n  var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  var pb = parse_shallow(docroot.messages[0].data);\n  {\n    pb[6][0].data = write_varint49(range.e.r + 1);\n    pb[7][0].data = write_varint49(range.e.c + 1);\n    var cruidsref = parse_TSP_Reference(pb[46][0].data);\n    var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n    var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n    {\n      for (var j = 0; j < _x.length; ++j) {\n        if (_x[j].id == cruidsref)\n          break;\n      }\n      if (_x[j].id != cruidsref)\n        throw \"Bad ColumnRowUIDMapArchive\";\n      var cruids = parse_shallow(_x[j].messages[0].data);\n      cruids[1] = [];\n      cruids[2] = [], cruids[3] = [];\n      for (var C = 0; C <= range.e.c; ++C) {\n        var uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n        cruids[1].push({ type: 2, data: write_shallow(uuid) });\n        cruids[2].push({ type: 0, data: write_varint49(C) });\n        cruids[3].push({ type: 0, data: write_varint49(C) });\n      }\n      cruids[4] = [];\n      cruids[5] = [], cruids[6] = [];\n      for (var R = 0; R <= range.e.r; ++R) {\n        uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n        cruids[4].push({ type: 2, data: write_shallow(uuid) });\n        cruids[5].push({ type: 0, data: write_varint49(R) });\n        cruids[6].push({ type: 0, data: write_varint49(R) });\n      }\n      _x[j].messages[0].data = write_shallow(cruids);\n    }\n    oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n    oldbucket.size = oldbucket.content.length;\n    delete pb[46];\n    var store = parse_shallow(pb[4][0].data);\n    {\n      store[7][0].data = write_varint49(range.e.r + 1);\n      var row_headers = parse_shallow(store[1][0].data);\n      var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != row_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        var base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (R = 0; R < data.length; ++R) {\n          var _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(R);\n          _bucket[4][0].data = write_varint49(data[R].length);\n          base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var col_header_ref = parse_TSP_Reference(store[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != col_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (C = 0; C <= range.e.c; ++C) {\n          _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(C);\n          _bucket[4][0].data = write_varint49(range.e.r + 1);\n          base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var sstref = parse_TSP_Reference(store[4][0].data);\n      (function() {\n        var sentry = CFB.find(cfb, dependents[sstref].location);\n        var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n        var sstroot;\n        for (var sxi = 0; sxi < sx.length; ++sxi) {\n          var packet2 = sx[sxi];\n          if (packet2.id == sstref)\n            sstroot = packet2;\n        }\n        var sstdata = parse_shallow(sstroot.messages[0].data);\n        {\n          sstdata[3] = [];\n          var newsst = [];\n          SST.forEach(function(str, i) {\n            newsst[1] = [{ type: 0, data: write_varint49(i) }];\n            newsst[2] = [{ type: 0, data: write_varint49(1) }];\n            newsst[3] = [{ type: 2, data: stru8(str) }];\n            sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n          });\n        }\n        sstroot.messages[0].data = write_shallow(sstdata);\n        var sy = write_iwa_file(sx);\n        var raw32 = compress_iwa_file(sy);\n        sentry.content = raw32;\n        sentry.size = sentry.content.length;\n      })();\n      var tile = parse_shallow(store[3][0].data);\n      {\n        var t = tile[1][0];\n        delete tile[2];\n        var tl = parse_shallow(t.data);\n        {\n          var tileref = parse_TSP_Reference(tl[2][0].data);\n          (function() {\n            var tentry = CFB.find(cfb, dependents[tileref].location);\n            var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n            var tileroot;\n            for (var sxi = 0; sxi < tx.length; ++sxi) {\n              var packet2 = tx[sxi];\n              if (packet2.id == tileref)\n                tileroot = packet2;\n            }\n            var tiledata = parse_shallow(tileroot.messages[0].data);\n            {\n              delete tiledata[6];\n              delete tile[7];\n              var rowload = new Uint8Array(tiledata[5][0].data);\n              tiledata[5] = [];\n              var cnt = 0;\n              for (var R2 = 0; R2 <= range.e.r; ++R2) {\n                var tilerow = parse_shallow(rowload);\n                cnt += write_tile_row(tilerow, data[R2], SST);\n                tilerow[1][0].data = write_varint49(R2);\n                tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n              }\n              tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n              tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n              tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n              tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n            }\n            tileroot.messages[0].data = write_shallow(tiledata);\n            var ty = write_iwa_file(tx);\n            var raw32 = compress_iwa_file(ty);\n            tentry.content = raw32;\n            tentry.size = tentry.content.length;\n          })();\n        }\n        t.data = write_shallow(tl);\n      }\n      store[3][0].data = write_shallow(tile);\n    }\n    pb[4][0].data = write_shallow(store);\n  }\n  docroot.messages[0].data = write_shallow(pb);\n  var y = write_iwa_file(x);\n  var raw3 = compress_iwa_file(y);\n  entry.content = raw3;\n  entry.size = entry.content.length;\n  return cfb;\n}\nfunction fix_opts_func(defaults/*:Array<Array<any> >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet':  _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart':  _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro':  _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar.  Originally they were unified in one\n   export function.  This is horrible for tree shaking in the common case (most\n   applications need to export files in one format) so this function supports\n   both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array<number>*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array':  return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, header/*:number*/, hdr/*:Array<any>*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar out/*:Array<any>*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array<string>*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array<string>*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array<string>*/ = [], C;\n\tvar cmds/*:Array<string>*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array<string>*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array<any>*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"</table>\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n  set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n    centimeters: earthRadius * 100,\n    centimetres: earthRadius * 100,\n    degrees: earthRadius / 111325,\n    feet: earthRadius * 3.28084,\n    inches: earthRadius * 39.37,\n    kilometers: earthRadius / 1000,\n    kilometres: earthRadius / 1000,\n    meters: earthRadius,\n    metres: earthRadius,\n    miles: earthRadius / 1609.344,\n    millimeters: earthRadius * 1000,\n    millimetres: earthRadius * 1000,\n    nauticalmiles: earthRadius / 1852,\n    radians: 1,\n    yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n    return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\n","import { feature, lineString, isObject, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexport { coordAll, coordEach, coordReduce, featureEach, featureReduce, findPoint, findSegment, flattenEach, flattenReduce, geomEach, geomReduce, lineEach, lineReduce, propEach, propReduce, segmentEach, segmentReduce };\n","import { coordEach } from \"@turf/meta\";\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n    var result = [Infinity, Infinity, -Infinity, -Infinity];\n    coordEach(geojson, function (coord) {\n        if (result[0] > coord[0]) {\n            result[0] = coord[0];\n        }\n        if (result[1] > coord[1]) {\n            result[1] = coord[1];\n        }\n        if (result[2] < coord[0]) {\n            result[2] = coord[0];\n        }\n        if (result[3] < coord[1]) {\n            result[3] = coord[1];\n        }\n    });\n    return result;\n}\nbbox[\"default\"] = bbox;\nexport default bbox;\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        isNumber(coordinates[0]) &&\n        isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\n","import { getCoord, getGeom } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n *   [-81, 41],\n *   [-81, 47],\n *   [-72, 47],\n *   [-72, 41],\n *   [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nexport default function booleanPointInPolygon(point, polygon, options) {\n    if (options === void 0) { options = {}; }\n    // validation\n    if (!point) {\n        throw new Error(\"point is required\");\n    }\n    if (!polygon) {\n        throw new Error(\"polygon is required\");\n    }\n    var pt = getCoord(point);\n    var geom = getGeom(polygon);\n    var type = geom.type;\n    var bbox = polygon.bbox;\n    var polys = geom.coordinates;\n    // Quick elimination if point is not inside bbox\n    if (bbox && inBBox(pt, bbox) === false) {\n        return false;\n    }\n    // normalize to multipolygon\n    if (type === \"Polygon\") {\n        polys = [polys];\n    }\n    var insidePoly = false;\n    for (var i = 0; i < polys.length && !insidePoly; i++) {\n        // check if it is in the outer ring first\n        if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n            var inHole = false;\n            var k = 1;\n            // check for the point in any of the holes\n            while (k < polys[i].length && !inHole) {\n                if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n                    inHole = true;\n                }\n                k++;\n            }\n            if (!inHole) {\n                insidePoly = true;\n            }\n        }\n    }\n    return insidePoly;\n}\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n    var isInside = false;\n    if (ring[0][0] === ring[ring.length - 1][0] &&\n        ring[0][1] === ring[ring.length - 1][1]) {\n        ring = ring.slice(0, ring.length - 1);\n    }\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n        var xi = ring[i][0];\n        var yi = ring[i][1];\n        var xj = ring[j][0];\n        var yj = ring[j][1];\n        var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 &&\n            (xi - pt[0]) * (xj - pt[0]) <= 0 &&\n            (yi - pt[1]) * (yj - pt[1]) <= 0;\n        if (onBoundary) {\n            return !ignoreBoundary;\n        }\n        var intersect = yi > pt[1] !== yj > pt[1] &&\n            pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi;\n        if (intersect) {\n            isInside = !isInside;\n        }\n    }\n    return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n    return (bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1]);\n}\n","import { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians, } from \"@turf/helpers\";\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var coordinates1 = getCoord(from);\n    var coordinates2 = getCoord(to);\n    var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n    var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n    var lat1 = degreesToRadians(coordinates1[1]);\n    var lat2 = degreesToRadians(coordinates2[1]);\n    var a = Math.pow(Math.sin(dLat / 2), 2) +\n        Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n    return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexport default distance;\n","export var hasOwnProperty = Object.prototype.hasOwnProperty;\n","// TODO if quantized, use simpler Int32 hashing?\n\nvar buffer = new ArrayBuffer(16),\n    floats = new Float64Array(buffer),\n    uints = new Uint32Array(buffer);\n\nexport default function(point) {\n  floats[0] = point[0];\n  floats[1] = point[1];\n  var hash = uints[0] ^ uints[1];\n  hash = hash << 5 ^ hash >> 7 ^ uints[2] ^ uints[3];\n  return hash & 0x7fffffff;\n}\n","/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar Spline = /** @class */ (function () {\n    function Spline(options) {\n        this.points = options.points || [];\n        this.duration = options.duration || 10000;\n        this.sharpness = options.sharpness || 0.85;\n        this.centers = [];\n        this.controls = [];\n        this.stepLength = options.stepLength || 60;\n        this.length = this.points.length;\n        this.delay = 0;\n        // this is to ensure compatibility with the 2d version\n        for (var i = 0; i < this.length; i++) {\n            this.points[i].z = this.points[i].z || 0;\n        }\n        for (var i = 0; i < this.length - 1; i++) {\n            var p1 = this.points[i];\n            var p2 = this.points[i + 1];\n            this.centers.push({\n                x: (p1.x + p2.x) / 2,\n                y: (p1.y + p2.y) / 2,\n                z: (p1.z + p2.z) / 2,\n            });\n        }\n        this.controls.push([this.points[0], this.points[0]]);\n        for (var i = 0; i < this.centers.length - 1; i++) {\n            var dx = this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n            var dy = this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n            var dz = this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n            this.controls.push([\n                {\n                    x: (1.0 - this.sharpness) * this.points[i + 1].x +\n                        this.sharpness * (this.centers[i].x + dx),\n                    y: (1.0 - this.sharpness) * this.points[i + 1].y +\n                        this.sharpness * (this.centers[i].y + dy),\n                    z: (1.0 - this.sharpness) * this.points[i + 1].z +\n                        this.sharpness * (this.centers[i].z + dz),\n                },\n                {\n                    x: (1.0 - this.sharpness) * this.points[i + 1].x +\n                        this.sharpness * (this.centers[i + 1].x + dx),\n                    y: (1.0 - this.sharpness) * this.points[i + 1].y +\n                        this.sharpness * (this.centers[i + 1].y + dy),\n                    z: (1.0 - this.sharpness) * this.points[i + 1].z +\n                        this.sharpness * (this.centers[i + 1].z + dz),\n                },\n            ]);\n        }\n        this.controls.push([\n            this.points[this.length - 1],\n            this.points[this.length - 1],\n        ]);\n        this.steps = this.cacheSteps(this.stepLength);\n        return this;\n    }\n    /**\n     * Caches an array of equidistant (more or less) points on the curve.\n     */\n    Spline.prototype.cacheSteps = function (mindist) {\n        var steps = [];\n        var laststep = this.pos(0);\n        steps.push(0);\n        for (var t = 0; t < this.duration; t += 10) {\n            var step = this.pos(t);\n            var dist = Math.sqrt((step.x - laststep.x) * (step.x - laststep.x) +\n                (step.y - laststep.y) * (step.y - laststep.y) +\n                (step.z - laststep.z) * (step.z - laststep.z));\n            if (dist > mindist) {\n                steps.push(t);\n                laststep = step;\n            }\n        }\n        return steps;\n    };\n    /**\n     * returns angle and speed in the given point in the curve\n     */\n    Spline.prototype.vector = function (t) {\n        var p1 = this.pos(t + 10);\n        var p2 = this.pos(t - 10);\n        return {\n            angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n            speed: Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) +\n                (p2.y - p1.y) * (p2.y - p1.y) +\n                (p2.z - p1.z) * (p2.z - p1.z)),\n        };\n    };\n    /**\n     * Gets the position of the point, given time.\n     *\n     * WARNING: The speed is not constant. The time it takes between control points is constant.\n     *\n     * For constant speed, use Spline.steps[i];\n     */\n    Spline.prototype.pos = function (time) {\n        var t = time - this.delay;\n        if (t < 0) {\n            t = 0;\n        }\n        if (t > this.duration) {\n            t = this.duration - 1;\n        }\n        // t = t-this.delay;\n        var t2 = t / this.duration;\n        if (t2 >= 1) {\n            return this.points[this.length - 1];\n        }\n        var n = Math.floor((this.points.length - 1) * t2);\n        var t1 = (this.length - 1) * t2 - n;\n        return bezier(t1, this.points[n], this.controls[n][1], this.controls[n + 1][0], this.points[n + 1]);\n    };\n    return Spline;\n}());\nexport default Spline;\nfunction bezier(t, p1, c1, c2, p2) {\n    var b = B(t);\n    var pos = {\n        x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n        y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n        z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n    };\n    return pos;\n}\nfunction B(t) {\n    var t2 = t * t;\n    var t3 = t2 * t;\n    return [\n        t3,\n        3 * t2 * (1 - t),\n        3 * t * (1 - t) * (1 - t),\n        (1 - t) * (1 - t) * (1 - t),\n    ];\n}\n","import { getCoord } from '@turf/invariant';\n\nvar D2R = Math.PI / 180;\nvar R2D = 180 / Math.PI;\n\nvar Coord = function (lon, lat) {\n  this.lon = lon;\n  this.lat = lat;\n  this.x = D2R * lon;\n  this.y = D2R * lat;\n};\n\nCoord.prototype.view = function () {\n  return String(this.lon).slice(0, 4) + \",\" + String(this.lat).slice(0, 4);\n};\n\nCoord.prototype.antipode = function () {\n  var anti_lat = -1 * this.lat;\n  var anti_lon = this.lon < 0 ? 180 + this.lon : (180 - this.lon) * -1;\n  return new Coord(anti_lon, anti_lat);\n};\n\nvar LineString = function () {\n  this.coords = [];\n  this.length = 0;\n};\n\nLineString.prototype.move_to = function (coord) {\n  this.length++;\n  this.coords.push(coord);\n};\n\nvar Arc = function (properties) {\n  this.properties = properties || {};\n  this.geometries = [];\n};\n\nArc.prototype.json = function () {\n  if (this.geometries.length <= 0) {\n    return {\n      geometry: { type: \"LineString\", coordinates: null },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  } else if (this.geometries.length === 1) {\n    return {\n      geometry: { type: \"LineString\", coordinates: this.geometries[0].coords },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  } else {\n    var multiline = [];\n    for (var i = 0; i < this.geometries.length; i++) {\n      multiline.push(this.geometries[i].coords);\n    }\n    return {\n      geometry: { type: \"MultiLineString\", coordinates: multiline },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  }\n};\n\n// TODO - output proper multilinestring\nArc.prototype.wkt = function () {\n  var wkt_string = \"\";\n  var wkt = \"LINESTRING(\";\n  var collect = function (c) {\n    wkt += c[0] + \" \" + c[1] + \",\";\n  };\n  for (var i = 0; i < this.geometries.length; i++) {\n    if (this.geometries[i].coords.length === 0) {\n      return \"LINESTRING(empty)\";\n    } else {\n      var coords = this.geometries[i].coords;\n      coords.forEach(collect);\n      wkt_string += wkt.substring(0, wkt.length - 1) + \")\";\n    }\n  }\n  return wkt_string;\n};\n\n/*\n * http://en.wikipedia.org/wiki/Great-circle_distance\n *\n */\nvar GreatCircle = function (start, end, properties) {\n  if (!start || start.x === undefined || start.y === undefined) {\n    throw new Error(\n      \"GreatCircle constructor expects two args: start and end objects with x and y properties\"\n    );\n  }\n  if (!end || end.x === undefined || end.y === undefined) {\n    throw new Error(\n      \"GreatCircle constructor expects two args: start and end objects with x and y properties\"\n    );\n  }\n  this.start = new Coord(start.x, start.y);\n  this.end = new Coord(end.x, end.y);\n  this.properties = properties || {};\n\n  var w = this.start.x - this.end.x;\n  var h = this.start.y - this.end.y;\n  var z =\n    Math.pow(Math.sin(h / 2.0), 2) +\n    Math.cos(this.start.y) *\n      Math.cos(this.end.y) *\n      Math.pow(Math.sin(w / 2.0), 2);\n  this.g = 2.0 * Math.asin(Math.sqrt(z));\n\n  if (this.g === Math.PI) {\n    throw new Error(\n      \"it appears \" +\n        start.view() +\n        \" and \" +\n        end.view() +\n        \" are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite\"\n    );\n  } else if (isNaN(this.g)) {\n    throw new Error(\n      \"could not calculate great circle between \" + start + \" and \" + end\n    );\n  }\n};\n\n/*\n * http://williams.best.vwh.net/avform.htm#Intermediate\n */\nGreatCircle.prototype.interpolate = function (f) {\n  var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);\n  var B = Math.sin(f * this.g) / Math.sin(this.g);\n  var x =\n    A * Math.cos(this.start.y) * Math.cos(this.start.x) +\n    B * Math.cos(this.end.y) * Math.cos(this.end.x);\n  var y =\n    A * Math.cos(this.start.y) * Math.sin(this.start.x) +\n    B * Math.cos(this.end.y) * Math.sin(this.end.x);\n  var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);\n  var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n  var lon = R2D * Math.atan2(y, x);\n  return [lon, lat];\n};\n\n/*\n * Generate points along the great circle\n */\nGreatCircle.prototype.Arc = function (npoints, options) {\n  var first_pass = [];\n  if (!npoints || npoints <= 2) {\n    first_pass.push([this.start.lon, this.start.lat]);\n    first_pass.push([this.end.lon, this.end.lat]);\n  } else {\n    var delta = 1.0 / (npoints - 1);\n    for (var i = 0; i < npoints; ++i) {\n      var step = delta * i;\n      var pair = this.interpolate(step);\n      first_pass.push(pair);\n    }\n  }\n  /* partial port of dateline handling from:\n      gdal/ogr/ogrgeometryfactory.cpp\n\n      TODO - does not handle all wrapping scenarios yet\n    */\n  var bHasBigDiff = false;\n  var dfMaxSmallDiffLong = 0;\n  // from http://www.gdal.org/ogr2ogr.html\n  // -datelineoffset:\n  // (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)\n  var dfDateLineOffset = options && options.offset ? options.offset : 10;\n  var dfLeftBorderX = 180 - dfDateLineOffset;\n  var dfRightBorderX = -180 + dfDateLineOffset;\n  var dfDiffSpace = 360 - dfDateLineOffset;\n\n  // https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342\n  for (var j = 1; j < first_pass.length; ++j) {\n    var dfPrevX = first_pass[j - 1][0];\n    var dfX = first_pass[j][0];\n    var dfDiffLong = Math.abs(dfX - dfPrevX);\n    if (\n      dfDiffLong > dfDiffSpace &&\n      ((dfX > dfLeftBorderX && dfPrevX < dfRightBorderX) ||\n        (dfPrevX > dfLeftBorderX && dfX < dfRightBorderX))\n    ) {\n      bHasBigDiff = true;\n    } else if (dfDiffLong > dfMaxSmallDiffLong) {\n      dfMaxSmallDiffLong = dfDiffLong;\n    }\n  }\n\n  var poMulti = [];\n  if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {\n    var poNewLS = [];\n    poMulti.push(poNewLS);\n    for (var k = 0; k < first_pass.length; ++k) {\n      var dfX0 = parseFloat(first_pass[k][0]);\n      if (k > 0 && Math.abs(dfX0 - first_pass[k - 1][0]) > dfDiffSpace) {\n        var dfX1 = parseFloat(first_pass[k - 1][0]);\n        var dfY1 = parseFloat(first_pass[k - 1][1]);\n        var dfX2 = parseFloat(first_pass[k][0]);\n        var dfY2 = parseFloat(first_pass[k][1]);\n        if (\n          dfX1 > -180 &&\n          dfX1 < dfRightBorderX &&\n          dfX2 === 180 &&\n          k + 1 < first_pass.length &&\n          first_pass[k - 1][0] > -180 &&\n          first_pass[k - 1][0] < dfRightBorderX\n        ) {\n          poNewLS.push([-180, first_pass[k][1]]);\n          k++;\n          poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n          continue;\n        } else if (\n          dfX1 > dfLeftBorderX &&\n          dfX1 < 180 &&\n          dfX2 === -180 &&\n          k + 1 < first_pass.length &&\n          first_pass[k - 1][0] > dfLeftBorderX &&\n          first_pass[k - 1][0] < 180\n        ) {\n          poNewLS.push([180, first_pass[k][1]]);\n          k++;\n          poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n          continue;\n        }\n\n        if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX) {\n          // swap dfX1, dfX2\n          var tmpX = dfX1;\n          dfX1 = dfX2;\n          dfX2 = tmpX;\n          // swap dfY1, dfY2\n          var tmpY = dfY1;\n          dfY1 = dfY2;\n          dfY2 = tmpY;\n        }\n        if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {\n          dfX2 += 360;\n        }\n\n        if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2) {\n          var dfRatio = (180 - dfX1) / (dfX2 - dfX1);\n          var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;\n          poNewLS.push([\n            first_pass[k - 1][0] > dfLeftBorderX ? 180 : -180,\n            dfY,\n          ]);\n          poNewLS = [];\n          poNewLS.push([\n            first_pass[k - 1][0] > dfLeftBorderX ? -180 : 180,\n            dfY,\n          ]);\n          poMulti.push(poNewLS);\n        } else {\n          poNewLS = [];\n          poMulti.push(poNewLS);\n        }\n        poNewLS.push([dfX0, first_pass[k][1]]);\n      } else {\n        poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n      }\n    }\n  } else {\n    // add normally\n    var poNewLS0 = [];\n    poMulti.push(poNewLS0);\n    for (var l = 0; l < first_pass.length; ++l) {\n      poNewLS0.push([first_pass[l][0], first_pass[l][1]]);\n    }\n  }\n\n  var arc = new Arc(this.properties);\n  for (var m = 0; m < poMulti.length; ++m) {\n    var line = new LineString();\n    arc.geometries.push(line);\n    var points = poMulti[m];\n    for (var j0 = 0; j0 < points.length; ++j0) {\n      line.move_to(points[j0]);\n    }\n  }\n  return arc;\n};\n\n/**\n * Calculate great circles routes as {@link LineString} or {@link MultiLineString}.\n * If the `start` and `end` points span the antimeridian, the resulting feature will\n * be split into a `MultiLineString`.\n *\n * @name greatCircle\n * @param {Coord} start source point feature\n * @param {Coord} end destination point feature\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] line feature properties\n * @param {number} [options.npoints=100] number of points\n * @param {number} [options.offset=10] offset controls the likelyhood that lines will\n * be split which cross the dateline. The higher the number the more likely.\n * @returns {Feature<LineString | MultiLineString>} great circle line feature\n * @example\n * var start = turf.point([-122, 48]);\n * var end = turf.point([-77, 39]);\n *\n * var greatCircle = turf.greatCircle(start, end, {properties: {name: 'Seattle to DC'}});\n *\n * //addToMap\n * var addToMap = [start, end, greatCircle]\n */\nfunction greatCircle(start, end, options) {\n  // Optional parameters\n  options = options || {};\n  if (typeof options !== \"object\") throw new Error(\"options is invalid\");\n  var properties = options.properties;\n  var npoints = options.npoints;\n  var offset = options.offset;\n\n  start = getCoord(start);\n  end = getCoord(end);\n  properties = properties || {};\n  npoints = npoints || 100;\n  offset = offset || 10;\n\n  var generator = new GreatCircle(\n    { x: start[0], y: start[1] },\n    { x: end[0], y: end[1] },\n    properties\n  );\n\n  var line = generator.Arc(npoints, { offset: offset });\n\n  return line.json();\n}\n\nexport default greatCircle;\n","import bbox from '@turf/bbox';\nimport area from '@turf/area';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport explode from '@turf/explode';\nimport { collectionOf, getCoords } from '@turf/invariant';\nimport { isObject, multiPolygon, featureCollection, polygon } from '@turf/helpers';\nimport objectAssign from 'object-assign';\nimport { featureEach } from '@turf/meta';\n\n/**\n * Takes a {@link Point} grid and returns a correspondent matrix {Array<Array<number>>}\n * of the 'property' values\n *\n * @name gridToMatrix\n * @param {FeatureCollection<Point>} grid of points\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {boolean} [options.flip=false] returns the matrix upside-down\n * @param {boolean} [options.flags=false] flags, adding a `matrixPosition` array field ([row, column]) to its properties,\n * the grid points with coordinates on the matrix\n * @returns {Array<Array<number>>} matrix of property values\n * @example\n *   var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n *   var cellSize = 3;\n *   var grid = turf.pointGrid(extent, cellSize);\n *   // add a random property to each point between 0 and 60\n *   for (var i = 0; i < grid.features.length; i++) {\n *     grid.features[i].properties.elevation = (Math.random() * 60);\n *   }\n *   gridToMatrix(grid);\n *   //= [\n *     [ 1, 13, 10,  9, 10, 13, 18],\n *     [34,  8,  5,  4,  5,  8, 13],\n *     [10,  5,  2,  1,  2,  5,  4],\n *     [ 0,  4, 56, 19,  1,  4,  9],\n *     [10,  5,  2,  1,  2,  5, 10],\n *     [57,  8,  5,  4,  5,  0, 57],\n *     [ 3, 13, 10,  9,  5, 13, 18],\n *     [18, 13, 10,  9, 78, 13, 18]\n *   ]\n */\nfunction gridToMatrix(grid, options) {\n  // Optional parameters\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var flip = options.flip;\n  var flags = options.flags;\n\n  // validation\n  collectionOf(grid, \"Point\", \"input must contain Points\");\n\n  var pointsMatrix = sortPointsByLatLng(grid, flip);\n\n  var matrix = [];\n  // create property matrix from sorted points\n  // looping order matters here\n  for (var r = 0; r < pointsMatrix.length; r++) {\n    var pointRow = pointsMatrix[r];\n    var row = [];\n    for (var c = 0; c < pointRow.length; c++) {\n      var point = pointRow[c];\n      // Check if zProperty exist\n      if (point.properties[zProperty]) row.push(point.properties[zProperty]);\n      else row.push(0);\n      // add flags\n      if (flags === true) point.properties.matrixPosition = [r, c];\n    }\n    matrix.push(row);\n  }\n\n  return matrix;\n}\n\n/**\n * Sorts points by latitude and longitude, creating a 2-dimensional array of points\n *\n * @private\n * @param {FeatureCollection<Point>} points GeoJSON Point features\n * @param {boolean} [flip=false] returns the matrix upside-down\n * @returns {Array<Array<Point>>} points ordered by latitude and longitude\n */\nfunction sortPointsByLatLng(points, flip) {\n  var pointsByLatitude = {};\n\n  // divide points by rows with the same latitude\n  featureEach(points, function (point) {\n    var lat = getCoords(point)[1];\n    if (!pointsByLatitude[lat]) pointsByLatitude[lat] = [];\n    pointsByLatitude[lat].push(point);\n  });\n\n  // sort points (with the same latitude) by longitude\n  var orderedRowsByLatitude = Object.keys(pointsByLatitude).map(function (lat) {\n    var row = pointsByLatitude[lat];\n    var rowOrderedByLongitude = row.sort(function (a, b) {\n      return getCoords(a)[0] - getCoords(b)[0];\n    });\n    return rowOrderedByLongitude;\n  });\n\n  // sort rows (of points with the same latitude) by latitude\n  var pointMatrix = orderedRowsByLatitude.sort(function (a, b) {\n    if (flip) return getCoords(a[0])[1] - getCoords(b[0])[1];\n    else return getCoords(b[0])[1] - getCoords(a[0])[1];\n  });\n\n  return pointMatrix;\n}\n\n/*!\n * @license GNU Affero General Public License.\n * Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>\n * v. 1.2.0\n * https://github.com/RaumZeit/MarchingSquares.js\n *\n * MarchingSquaresJS is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * MarchingSquaresJS is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * As additional permission under GNU Affero General Public License version 3\n * section 7, third-party projects (personal or commercial) may distribute,\n * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the\n * requirement that said third-party project for that reason alone becomes\n * subject to any requirement of the GNU Affero General Public License version 3.\n * Any modifications to MarchingSquaresJS, however, must be shared with the public\n * and made available.\n *\n * In summary this:\n * - allows you to use MarchingSquaresJS at no cost\n * - allows you to use MarchingSquaresJS for both personal and commercial purposes\n * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any\n *   license as long as this license notice is included\n * - enables you to keep the source code of your program that uses MarchingSquaresJS\n *   undisclosed\n * - forces you to share any modifications you have made to MarchingSquaresJS,\n *   e.g. bug-fixes\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with MarchingSquaresJS.  If not, see <http://www.gnu.org/licenses/>.\n */\nvar defaultSettings = {\n  successCallback: null,\n  verbose: false,\n  polygons: false,\n};\n\nvar settings = {};\n\n/*\n  Compute isobands(s) of a scalar 2D field given a certain\n  threshold and a bandwidth by applying the Marching Squares\n  Algorithm. The function returns a list of path coordinates\n  either for individual polygons within each grid cell, or the\n  outline of connected polygons.\n*/\nfunction isoBands(data, minV, bandwidth, options) {\n  /* process options */\n  options = options ? options : {};\n\n  var optionKeys = Object.keys(defaultSettings);\n\n  for (var i = 0; i < optionKeys.length; i++) {\n    var key = optionKeys[i];\n    var val = options[key];\n    val =\n      typeof val !== \"undefined\" && val !== null ? val : defaultSettings[key];\n\n    settings[key] = val;\n  }\n\n  if (settings.verbose)\n    console.log(\n      \"MarchingSquaresJS-isoBands: computing isobands for [\" +\n        minV +\n        \":\" +\n        (minV + bandwidth) +\n        \"]\"\n    );\n\n  var grid = computeBandGrid(data, minV, bandwidth);\n\n  var ret;\n  if (settings.polygons) {\n    if (settings.verbose)\n      console.log(\n        \"MarchingSquaresJS-isoBands: returning single polygons for each grid cell\"\n      );\n    ret = BandGrid2Areas(grid);\n  } else {\n    if (settings.verbose)\n      console.log(\n        \"MarchingSquaresJS-isoBands: returning polygon paths for entire data grid\"\n      );\n    ret = BandGrid2AreaPaths(grid);\n  }\n\n  if (typeof settings.successCallback === \"function\")\n    settings.successCallback(ret);\n\n  return ret;\n}\n\n/*\n  Thats all for the public interface, below follows the actual\n  implementation\n*/\n\n/* Some private variables */\nvar Node0 = 64,\n  Node1 = 16,\n  Node2 = 4,\n  Node3 = 1;\n\n/*\n  The look-up tables for tracing back the contour path\n  of isoBands\n*/\n\nvar isoBandNextXTL = [];\nvar isoBandNextYTL = [];\nvar isoBandNextOTL = [];\n\nvar isoBandNextXTR = [];\nvar isoBandNextYTR = [];\nvar isoBandNextOTR = [];\n\nvar isoBandNextXRT = [];\nvar isoBandNextYRT = [];\nvar isoBandNextORT = [];\n\nvar isoBandNextXRB = [];\nvar isoBandNextYRB = [];\nvar isoBandNextORB = [];\n\nvar isoBandNextXBL = [];\nvar isoBandNextYBL = [];\nvar isoBandNextOBL = [];\n\nvar isoBandNextXBR = [];\nvar isoBandNextYBR = [];\nvar isoBandNextOBR = [];\n\nvar isoBandNextXLT = [];\nvar isoBandNextYLT = [];\nvar isoBandNextOLT = [];\n\nvar isoBandNextXLB = [];\nvar isoBandNextYLB = [];\nvar isoBandNextOLB = [];\n\nisoBandNextXRT[85] = isoBandNextXRB[85] = -1;\nisoBandNextYRT[85] = isoBandNextYRB[85] = 0;\nisoBandNextORT[85] = isoBandNextORB[85] = 1;\nisoBandNextXLT[85] = isoBandNextXLB[85] = 1;\nisoBandNextYLT[85] = isoBandNextYLB[85] = 0;\nisoBandNextOLT[85] = isoBandNextOLB[85] = 1;\n\nisoBandNextXTL[85] = isoBandNextXTR[85] = 0;\nisoBandNextYTL[85] = isoBandNextYTR[85] = -1;\nisoBandNextOTL[85] = isoBandNextOBL[85] = 0;\nisoBandNextXBR[85] = isoBandNextXBL[85] = 0;\nisoBandNextYBR[85] = isoBandNextYBL[85] = 1;\nisoBandNextOTR[85] = isoBandNextOBR[85] = 1;\n\n/* triangle cases */\nisoBandNextXLB[1] = isoBandNextXLB[169] = 0;\nisoBandNextYLB[1] = isoBandNextYLB[169] = -1;\nisoBandNextOLB[1] = isoBandNextOLB[169] = 0;\nisoBandNextXBL[1] = isoBandNextXBL[169] = -1;\nisoBandNextYBL[1] = isoBandNextYBL[169] = 0;\nisoBandNextOBL[1] = isoBandNextOBL[169] = 0;\n\nisoBandNextXRB[4] = isoBandNextXRB[166] = 0;\nisoBandNextYRB[4] = isoBandNextYRB[166] = -1;\nisoBandNextORB[4] = isoBandNextORB[166] = 1;\nisoBandNextXBR[4] = isoBandNextXBR[166] = 1;\nisoBandNextYBR[4] = isoBandNextYBR[166] = 0;\nisoBandNextOBR[4] = isoBandNextOBR[166] = 0;\n\nisoBandNextXRT[16] = isoBandNextXRT[154] = 0;\nisoBandNextYRT[16] = isoBandNextYRT[154] = 1;\nisoBandNextORT[16] = isoBandNextORT[154] = 1;\nisoBandNextXTR[16] = isoBandNextXTR[154] = 1;\nisoBandNextYTR[16] = isoBandNextYTR[154] = 0;\nisoBandNextOTR[16] = isoBandNextOTR[154] = 1;\n\nisoBandNextXLT[64] = isoBandNextXLT[106] = 0;\nisoBandNextYLT[64] = isoBandNextYLT[106] = 1;\nisoBandNextOLT[64] = isoBandNextOLT[106] = 0;\nisoBandNextXTL[64] = isoBandNextXTL[106] = -1;\nisoBandNextYTL[64] = isoBandNextYTL[106] = 0;\nisoBandNextOTL[64] = isoBandNextOTL[106] = 1;\n\n/* single trapezoid cases */\nisoBandNextXLT[2] = isoBandNextXLT[168] = 0;\nisoBandNextYLT[2] = isoBandNextYLT[168] = -1;\nisoBandNextOLT[2] = isoBandNextOLT[168] = 1;\nisoBandNextXLB[2] = isoBandNextXLB[168] = 0;\nisoBandNextYLB[2] = isoBandNextYLB[168] = -1;\nisoBandNextOLB[2] = isoBandNextOLB[168] = 0;\nisoBandNextXBL[2] = isoBandNextXBL[168] = -1;\nisoBandNextYBL[2] = isoBandNextYBL[168] = 0;\nisoBandNextOBL[2] = isoBandNextOBL[168] = 0;\nisoBandNextXBR[2] = isoBandNextXBR[168] = -1;\nisoBandNextYBR[2] = isoBandNextYBR[168] = 0;\nisoBandNextOBR[2] = isoBandNextOBR[168] = 1;\n\nisoBandNextXRT[8] = isoBandNextXRT[162] = 0;\nisoBandNextYRT[8] = isoBandNextYRT[162] = -1;\nisoBandNextORT[8] = isoBandNextORT[162] = 0;\nisoBandNextXRB[8] = isoBandNextXRB[162] = 0;\nisoBandNextYRB[8] = isoBandNextYRB[162] = -1;\nisoBandNextORB[8] = isoBandNextORB[162] = 1;\nisoBandNextXBL[8] = isoBandNextXBL[162] = 1;\nisoBandNextYBL[8] = isoBandNextYBL[162] = 0;\nisoBandNextOBL[8] = isoBandNextOBL[162] = 1;\nisoBandNextXBR[8] = isoBandNextXBR[162] = 1;\nisoBandNextYBR[8] = isoBandNextYBR[162] = 0;\nisoBandNextOBR[8] = isoBandNextOBR[162] = 0;\n\nisoBandNextXRT[32] = isoBandNextXRT[138] = 0;\nisoBandNextYRT[32] = isoBandNextYRT[138] = 1;\nisoBandNextORT[32] = isoBandNextORT[138] = 1;\nisoBandNextXRB[32] = isoBandNextXRB[138] = 0;\nisoBandNextYRB[32] = isoBandNextYRB[138] = 1;\nisoBandNextORB[32] = isoBandNextORB[138] = 0;\nisoBandNextXTL[32] = isoBandNextXTL[138] = 1;\nisoBandNextYTL[32] = isoBandNextYTL[138] = 0;\nisoBandNextOTL[32] = isoBandNextOTL[138] = 0;\nisoBandNextXTR[32] = isoBandNextXTR[138] = 1;\nisoBandNextYTR[32] = isoBandNextYTR[138] = 0;\nisoBandNextOTR[32] = isoBandNextOTR[138] = 1;\n\nisoBandNextXLB[128] = isoBandNextXLB[42] = 0;\nisoBandNextYLB[128] = isoBandNextYLB[42] = 1;\nisoBandNextOLB[128] = isoBandNextOLB[42] = 1;\nisoBandNextXLT[128] = isoBandNextXLT[42] = 0;\nisoBandNextYLT[128] = isoBandNextYLT[42] = 1;\nisoBandNextOLT[128] = isoBandNextOLT[42] = 0;\nisoBandNextXTL[128] = isoBandNextXTL[42] = -1;\nisoBandNextYTL[128] = isoBandNextYTL[42] = 0;\nisoBandNextOTL[128] = isoBandNextOTL[42] = 1;\nisoBandNextXTR[128] = isoBandNextXTR[42] = -1;\nisoBandNextYTR[128] = isoBandNextYTR[42] = 0;\nisoBandNextOTR[128] = isoBandNextOTR[42] = 0;\n\n/* single rectangle cases */\nisoBandNextXRB[5] = isoBandNextXRB[165] = -1;\nisoBandNextYRB[5] = isoBandNextYRB[165] = 0;\nisoBandNextORB[5] = isoBandNextORB[165] = 0;\nisoBandNextXLB[5] = isoBandNextXLB[165] = 1;\nisoBandNextYLB[5] = isoBandNextYLB[165] = 0;\nisoBandNextOLB[5] = isoBandNextOLB[165] = 0;\n\nisoBandNextXBR[20] = isoBandNextXBR[150] = 0;\nisoBandNextYBR[20] = isoBandNextYBR[150] = 1;\nisoBandNextOBR[20] = isoBandNextOBR[150] = 1;\nisoBandNextXTR[20] = isoBandNextXTR[150] = 0;\nisoBandNextYTR[20] = isoBandNextYTR[150] = -1;\nisoBandNextOTR[20] = isoBandNextOTR[150] = 1;\n\nisoBandNextXRT[80] = isoBandNextXRT[90] = -1;\nisoBandNextYRT[80] = isoBandNextYRT[90] = 0;\nisoBandNextORT[80] = isoBandNextORT[90] = 1;\nisoBandNextXLT[80] = isoBandNextXLT[90] = 1;\nisoBandNextYLT[80] = isoBandNextYLT[90] = 0;\nisoBandNextOLT[80] = isoBandNextOLT[90] = 1;\n\nisoBandNextXBL[65] = isoBandNextXBL[105] = 0;\nisoBandNextYBL[65] = isoBandNextYBL[105] = 1;\nisoBandNextOBL[65] = isoBandNextOBL[105] = 0;\nisoBandNextXTL[65] = isoBandNextXTL[105] = 0;\nisoBandNextYTL[65] = isoBandNextYTL[105] = -1;\nisoBandNextOTL[65] = isoBandNextOTL[105] = 0;\n\nisoBandNextXRT[160] = isoBandNextXRT[10] = -1;\nisoBandNextYRT[160] = isoBandNextYRT[10] = 0;\nisoBandNextORT[160] = isoBandNextORT[10] = 1;\nisoBandNextXRB[160] = isoBandNextXRB[10] = -1;\nisoBandNextYRB[160] = isoBandNextYRB[10] = 0;\nisoBandNextORB[160] = isoBandNextORB[10] = 0;\nisoBandNextXLB[160] = isoBandNextXLB[10] = 1;\nisoBandNextYLB[160] = isoBandNextYLB[10] = 0;\nisoBandNextOLB[160] = isoBandNextOLB[10] = 0;\nisoBandNextXLT[160] = isoBandNextXLT[10] = 1;\nisoBandNextYLT[160] = isoBandNextYLT[10] = 0;\nisoBandNextOLT[160] = isoBandNextOLT[10] = 1;\n\nisoBandNextXBR[130] = isoBandNextXBR[40] = 0;\nisoBandNextYBR[130] = isoBandNextYBR[40] = 1;\nisoBandNextOBR[130] = isoBandNextOBR[40] = 1;\nisoBandNextXBL[130] = isoBandNextXBL[40] = 0;\nisoBandNextYBL[130] = isoBandNextYBL[40] = 1;\nisoBandNextOBL[130] = isoBandNextOBL[40] = 0;\nisoBandNextXTL[130] = isoBandNextXTL[40] = 0;\nisoBandNextYTL[130] = isoBandNextYTL[40] = -1;\nisoBandNextOTL[130] = isoBandNextOTL[40] = 0;\nisoBandNextXTR[130] = isoBandNextXTR[40] = 0;\nisoBandNextYTR[130] = isoBandNextYTR[40] = -1;\nisoBandNextOTR[130] = isoBandNextOTR[40] = 1;\n\n/* single hexagon cases */\nisoBandNextXRB[37] = isoBandNextXRB[133] = 0;\nisoBandNextYRB[37] = isoBandNextYRB[133] = 1;\nisoBandNextORB[37] = isoBandNextORB[133] = 1;\nisoBandNextXLB[37] = isoBandNextXLB[133] = 0;\nisoBandNextYLB[37] = isoBandNextYLB[133] = 1;\nisoBandNextOLB[37] = isoBandNextOLB[133] = 0;\nisoBandNextXTL[37] = isoBandNextXTL[133] = -1;\nisoBandNextYTL[37] = isoBandNextYTL[133] = 0;\nisoBandNextOTL[37] = isoBandNextOTL[133] = 0;\nisoBandNextXTR[37] = isoBandNextXTR[133] = 1;\nisoBandNextYTR[37] = isoBandNextYTR[133] = 0;\nisoBandNextOTR[37] = isoBandNextOTR[133] = 0;\n\nisoBandNextXBR[148] = isoBandNextXBR[22] = -1;\nisoBandNextYBR[148] = isoBandNextYBR[22] = 0;\nisoBandNextOBR[148] = isoBandNextOBR[22] = 0;\nisoBandNextXLB[148] = isoBandNextXLB[22] = 0;\nisoBandNextYLB[148] = isoBandNextYLB[22] = -1;\nisoBandNextOLB[148] = isoBandNextOLB[22] = 1;\nisoBandNextXLT[148] = isoBandNextXLT[22] = 0;\nisoBandNextYLT[148] = isoBandNextYLT[22] = 1;\nisoBandNextOLT[148] = isoBandNextOLT[22] = 1;\nisoBandNextXTR[148] = isoBandNextXTR[22] = -1;\nisoBandNextYTR[148] = isoBandNextYTR[22] = 0;\nisoBandNextOTR[148] = isoBandNextOTR[22] = 1;\n\nisoBandNextXRT[82] = isoBandNextXRT[88] = 0;\nisoBandNextYRT[82] = isoBandNextYRT[88] = -1;\nisoBandNextORT[82] = isoBandNextORT[88] = 1;\nisoBandNextXBR[82] = isoBandNextXBR[88] = 1;\nisoBandNextYBR[82] = isoBandNextYBR[88] = 0;\nisoBandNextOBR[82] = isoBandNextOBR[88] = 1;\nisoBandNextXBL[82] = isoBandNextXBL[88] = -1;\nisoBandNextYBL[82] = isoBandNextYBL[88] = 0;\nisoBandNextOBL[82] = isoBandNextOBL[88] = 1;\nisoBandNextXLT[82] = isoBandNextXLT[88] = 0;\nisoBandNextYLT[82] = isoBandNextYLT[88] = -1;\nisoBandNextOLT[82] = isoBandNextOLT[88] = 0;\n\nisoBandNextXRT[73] = isoBandNextXRT[97] = 0;\nisoBandNextYRT[73] = isoBandNextYRT[97] = 1;\nisoBandNextORT[73] = isoBandNextORT[97] = 0;\nisoBandNextXRB[73] = isoBandNextXRB[97] = 0;\nisoBandNextYRB[73] = isoBandNextYRB[97] = -1;\nisoBandNextORB[73] = isoBandNextORB[97] = 0;\nisoBandNextXBL[73] = isoBandNextXBL[97] = 1;\nisoBandNextYBL[73] = isoBandNextYBL[97] = 0;\nisoBandNextOBL[73] = isoBandNextOBL[97] = 0;\nisoBandNextXTL[73] = isoBandNextXTL[97] = 1;\nisoBandNextYTL[73] = isoBandNextYTL[97] = 0;\nisoBandNextOTL[73] = isoBandNextOTL[97] = 1;\n\nisoBandNextXRT[145] = isoBandNextXRT[25] = 0;\nisoBandNextYRT[145] = isoBandNextYRT[25] = -1;\nisoBandNextORT[145] = isoBandNextORT[25] = 0;\nisoBandNextXBL[145] = isoBandNextXBL[25] = 1;\nisoBandNextYBL[145] = isoBandNextYBL[25] = 0;\nisoBandNextOBL[145] = isoBandNextOBL[25] = 1;\nisoBandNextXLB[145] = isoBandNextXLB[25] = 0;\nisoBandNextYLB[145] = isoBandNextYLB[25] = 1;\nisoBandNextOLB[145] = isoBandNextOLB[25] = 1;\nisoBandNextXTR[145] = isoBandNextXTR[25] = -1;\nisoBandNextYTR[145] = isoBandNextYTR[25] = 0;\nisoBandNextOTR[145] = isoBandNextOTR[25] = 0;\n\nisoBandNextXRB[70] = isoBandNextXRB[100] = 0;\nisoBandNextYRB[70] = isoBandNextYRB[100] = 1;\nisoBandNextORB[70] = isoBandNextORB[100] = 0;\nisoBandNextXBR[70] = isoBandNextXBR[100] = -1;\nisoBandNextYBR[70] = isoBandNextYBR[100] = 0;\nisoBandNextOBR[70] = isoBandNextOBR[100] = 1;\nisoBandNextXLT[70] = isoBandNextXLT[100] = 0;\nisoBandNextYLT[70] = isoBandNextYLT[100] = -1;\nisoBandNextOLT[70] = isoBandNextOLT[100] = 1;\nisoBandNextXTL[70] = isoBandNextXTL[100] = 1;\nisoBandNextYTL[70] = isoBandNextYTL[100] = 0;\nisoBandNextOTL[70] = isoBandNextOTL[100] = 0;\n\n/* single pentagon cases */\nisoBandNextXRB[101] = isoBandNextXRB[69] = 0;\nisoBandNextYRB[101] = isoBandNextYRB[69] = 1;\nisoBandNextORB[101] = isoBandNextORB[69] = 0;\nisoBandNextXTL[101] = isoBandNextXTL[69] = 1;\nisoBandNextYTL[101] = isoBandNextYTL[69] = 0;\nisoBandNextOTL[101] = isoBandNextOTL[69] = 0;\n\nisoBandNextXLB[149] = isoBandNextXLB[21] = 0;\nisoBandNextYLB[149] = isoBandNextYLB[21] = 1;\nisoBandNextOLB[149] = isoBandNextOLB[21] = 1;\nisoBandNextXTR[149] = isoBandNextXTR[21] = -1;\nisoBandNextYTR[149] = isoBandNextYTR[21] = 0;\nisoBandNextOTR[149] = isoBandNextOTR[21] = 0;\n\nisoBandNextXBR[86] = isoBandNextXBR[84] = -1;\nisoBandNextYBR[86] = isoBandNextYBR[84] = 0;\nisoBandNextOBR[86] = isoBandNextOBR[84] = 1;\nisoBandNextXLT[86] = isoBandNextXLT[84] = 0;\nisoBandNextYLT[86] = isoBandNextYLT[84] = -1;\nisoBandNextOLT[86] = isoBandNextOLT[84] = 1;\n\nisoBandNextXRT[89] = isoBandNextXRT[81] = 0;\nisoBandNextYRT[89] = isoBandNextYRT[81] = -1;\nisoBandNextORT[89] = isoBandNextORT[81] = 0;\nisoBandNextXBL[89] = isoBandNextXBL[81] = 1;\nisoBandNextYBL[89] = isoBandNextYBL[81] = 0;\nisoBandNextOBL[89] = isoBandNextOBL[81] = 1;\n\nisoBandNextXRT[96] = isoBandNextXRT[74] = 0;\nisoBandNextYRT[96] = isoBandNextYRT[74] = 1;\nisoBandNextORT[96] = isoBandNextORT[74] = 0;\nisoBandNextXRB[96] = isoBandNextXRB[74] = -1;\nisoBandNextYRB[96] = isoBandNextYRB[74] = 0;\nisoBandNextORB[96] = isoBandNextORB[74] = 1;\nisoBandNextXLT[96] = isoBandNextXLT[74] = 1;\nisoBandNextYLT[96] = isoBandNextYLT[74] = 0;\nisoBandNextOLT[96] = isoBandNextOLT[74] = 0;\nisoBandNextXTL[96] = isoBandNextXTL[74] = 1;\nisoBandNextYTL[96] = isoBandNextYTL[74] = 0;\nisoBandNextOTL[96] = isoBandNextOTL[74] = 1;\n\nisoBandNextXRT[24] = isoBandNextXRT[146] = 0;\nisoBandNextYRT[24] = isoBandNextYRT[146] = -1;\nisoBandNextORT[24] = isoBandNextORT[146] = 1;\nisoBandNextXBR[24] = isoBandNextXBR[146] = 1;\nisoBandNextYBR[24] = isoBandNextYBR[146] = 0;\nisoBandNextOBR[24] = isoBandNextOBR[146] = 1;\nisoBandNextXBL[24] = isoBandNextXBL[146] = 0;\nisoBandNextYBL[24] = isoBandNextYBL[146] = 1;\nisoBandNextOBL[24] = isoBandNextOBL[146] = 1;\nisoBandNextXTR[24] = isoBandNextXTR[146] = 0;\nisoBandNextYTR[24] = isoBandNextYTR[146] = -1;\nisoBandNextOTR[24] = isoBandNextOTR[146] = 0;\n\nisoBandNextXRB[6] = isoBandNextXRB[164] = -1;\nisoBandNextYRB[6] = isoBandNextYRB[164] = 0;\nisoBandNextORB[6] = isoBandNextORB[164] = 1;\nisoBandNextXBR[6] = isoBandNextXBR[164] = -1;\nisoBandNextYBR[6] = isoBandNextYBR[164] = 0;\nisoBandNextOBR[6] = isoBandNextOBR[164] = 0;\nisoBandNextXLB[6] = isoBandNextXLB[164] = 0;\nisoBandNextYLB[6] = isoBandNextYLB[164] = -1;\nisoBandNextOLB[6] = isoBandNextOLB[164] = 1;\nisoBandNextXLT[6] = isoBandNextXLT[164] = 1;\nisoBandNextYLT[6] = isoBandNextYLT[164] = 0;\nisoBandNextOLT[6] = isoBandNextOLT[164] = 0;\n\nisoBandNextXBL[129] = isoBandNextXBL[41] = 0;\nisoBandNextYBL[129] = isoBandNextYBL[41] = 1;\nisoBandNextOBL[129] = isoBandNextOBL[41] = 1;\nisoBandNextXLB[129] = isoBandNextXLB[41] = 0;\nisoBandNextYLB[129] = isoBandNextYLB[41] = 1;\nisoBandNextOLB[129] = isoBandNextOLB[41] = 0;\nisoBandNextXTL[129] = isoBandNextXTL[41] = -1;\nisoBandNextYTL[129] = isoBandNextYTL[41] = 0;\nisoBandNextOTL[129] = isoBandNextOTL[41] = 0;\nisoBandNextXTR[129] = isoBandNextXTR[41] = 0;\nisoBandNextYTR[129] = isoBandNextYTR[41] = -1;\nisoBandNextOTR[129] = isoBandNextOTR[41] = 0;\n\nisoBandNextXBR[66] = isoBandNextXBR[104] = 0;\nisoBandNextYBR[66] = isoBandNextYBR[104] = 1;\nisoBandNextOBR[66] = isoBandNextOBR[104] = 0;\nisoBandNextXBL[66] = isoBandNextXBL[104] = -1;\nisoBandNextYBL[66] = isoBandNextYBL[104] = 0;\nisoBandNextOBL[66] = isoBandNextOBL[104] = 1;\nisoBandNextXLT[66] = isoBandNextXLT[104] = 0;\nisoBandNextYLT[66] = isoBandNextYLT[104] = -1;\nisoBandNextOLT[66] = isoBandNextOLT[104] = 0;\nisoBandNextXTL[66] = isoBandNextXTL[104] = 0;\nisoBandNextYTL[66] = isoBandNextYTL[104] = -1;\nisoBandNextOTL[66] = isoBandNextOTL[104] = 1;\n\nisoBandNextXRT[144] = isoBandNextXRT[26] = -1;\nisoBandNextYRT[144] = isoBandNextYRT[26] = 0;\nisoBandNextORT[144] = isoBandNextORT[26] = 0;\nisoBandNextXLB[144] = isoBandNextXLB[26] = 1;\nisoBandNextYLB[144] = isoBandNextYLB[26] = 0;\nisoBandNextOLB[144] = isoBandNextOLB[26] = 1;\nisoBandNextXLT[144] = isoBandNextXLT[26] = 0;\nisoBandNextYLT[144] = isoBandNextYLT[26] = 1;\nisoBandNextOLT[144] = isoBandNextOLT[26] = 1;\nisoBandNextXTR[144] = isoBandNextXTR[26] = -1;\nisoBandNextYTR[144] = isoBandNextYTR[26] = 0;\nisoBandNextOTR[144] = isoBandNextOTR[26] = 1;\n\nisoBandNextXRB[36] = isoBandNextXRB[134] = 0;\nisoBandNextYRB[36] = isoBandNextYRB[134] = 1;\nisoBandNextORB[36] = isoBandNextORB[134] = 1;\nisoBandNextXBR[36] = isoBandNextXBR[134] = 0;\nisoBandNextYBR[36] = isoBandNextYBR[134] = 1;\nisoBandNextOBR[36] = isoBandNextOBR[134] = 0;\nisoBandNextXTL[36] = isoBandNextXTL[134] = 0;\nisoBandNextYTL[36] = isoBandNextYTL[134] = -1;\nisoBandNextOTL[36] = isoBandNextOTL[134] = 1;\nisoBandNextXTR[36] = isoBandNextXTR[134] = 1;\nisoBandNextYTR[36] = isoBandNextYTR[134] = 0;\nisoBandNextOTR[36] = isoBandNextOTR[134] = 0;\n\nisoBandNextXRT[9] = isoBandNextXRT[161] = -1;\nisoBandNextYRT[9] = isoBandNextYRT[161] = 0;\nisoBandNextORT[9] = isoBandNextORT[161] = 0;\nisoBandNextXRB[9] = isoBandNextXRB[161] = 0;\nisoBandNextYRB[9] = isoBandNextYRB[161] = -1;\nisoBandNextORB[9] = isoBandNextORB[161] = 0;\nisoBandNextXBL[9] = isoBandNextXBL[161] = 1;\nisoBandNextYBL[9] = isoBandNextYBL[161] = 0;\nisoBandNextOBL[9] = isoBandNextOBL[161] = 0;\nisoBandNextXLB[9] = isoBandNextXLB[161] = 1;\nisoBandNextYLB[9] = isoBandNextYLB[161] = 0;\nisoBandNextOLB[9] = isoBandNextOLB[161] = 1;\n\n/* 8-sided cases */\nisoBandNextXRT[136] = 0;\nisoBandNextYRT[136] = 1;\nisoBandNextORT[136] = 1;\nisoBandNextXRB[136] = 0;\nisoBandNextYRB[136] = 1;\nisoBandNextORB[136] = 0;\nisoBandNextXBR[136] = -1;\nisoBandNextYBR[136] = 0;\nisoBandNextOBR[136] = 1;\nisoBandNextXBL[136] = -1;\nisoBandNextYBL[136] = 0;\nisoBandNextOBL[136] = 0;\nisoBandNextXLB[136] = 0;\nisoBandNextYLB[136] = -1;\nisoBandNextOLB[136] = 0;\nisoBandNextXLT[136] = 0;\nisoBandNextYLT[136] = -1;\nisoBandNextOLT[136] = 1;\nisoBandNextXTL[136] = 1;\nisoBandNextYTL[136] = 0;\nisoBandNextOTL[136] = 0;\nisoBandNextXTR[136] = 1;\nisoBandNextYTR[136] = 0;\nisoBandNextOTR[136] = 1;\n\nisoBandNextXRT[34] = 0;\nisoBandNextYRT[34] = -1;\nisoBandNextORT[34] = 0;\nisoBandNextXRB[34] = 0;\nisoBandNextYRB[34] = -1;\nisoBandNextORB[34] = 1;\nisoBandNextXBR[34] = 1;\nisoBandNextYBR[34] = 0;\nisoBandNextOBR[34] = 0;\nisoBandNextXBL[34] = 1;\nisoBandNextYBL[34] = 0;\nisoBandNextOBL[34] = 1;\nisoBandNextXLB[34] = 0;\nisoBandNextYLB[34] = 1;\nisoBandNextOLB[34] = 1;\nisoBandNextXLT[34] = 0;\nisoBandNextYLT[34] = 1;\nisoBandNextOLT[34] = 0;\nisoBandNextXTL[34] = -1;\nisoBandNextYTL[34] = 0;\nisoBandNextOTL[34] = 1;\nisoBandNextXTR[34] = -1;\nisoBandNextYTR[34] = 0;\nisoBandNextOTR[34] = 0;\n\nisoBandNextXRT[35] = 0;\nisoBandNextYRT[35] = 1;\nisoBandNextORT[35] = 1;\nisoBandNextXRB[35] = 0;\nisoBandNextYRB[35] = -1;\nisoBandNextORB[35] = 1;\nisoBandNextXBR[35] = 1;\nisoBandNextYBR[35] = 0;\nisoBandNextOBR[35] = 0;\nisoBandNextXBL[35] = -1;\nisoBandNextYBL[35] = 0;\nisoBandNextOBL[35] = 0;\nisoBandNextXLB[35] = 0;\nisoBandNextYLB[35] = -1;\nisoBandNextOLB[35] = 0;\nisoBandNextXLT[35] = 0;\nisoBandNextYLT[35] = 1;\nisoBandNextOLT[35] = 0;\nisoBandNextXTL[35] = -1;\nisoBandNextYTL[35] = 0;\nisoBandNextOTL[35] = 1;\nisoBandNextXTR[35] = 1;\nisoBandNextYTR[35] = 0;\nisoBandNextOTR[35] = 1;\n\n/* 6-sided cases */\nisoBandNextXRT[153] = 0;\nisoBandNextYRT[153] = 1;\nisoBandNextORT[153] = 1;\nisoBandNextXBL[153] = -1;\nisoBandNextYBL[153] = 0;\nisoBandNextOBL[153] = 0;\nisoBandNextXLB[153] = 0;\nisoBandNextYLB[153] = -1;\nisoBandNextOLB[153] = 0;\nisoBandNextXTR[153] = 1;\nisoBandNextYTR[153] = 0;\nisoBandNextOTR[153] = 1;\n\nisoBandNextXRB[102] = 0;\nisoBandNextYRB[102] = -1;\nisoBandNextORB[102] = 1;\nisoBandNextXBR[102] = 1;\nisoBandNextYBR[102] = 0;\nisoBandNextOBR[102] = 0;\nisoBandNextXLT[102] = 0;\nisoBandNextYLT[102] = 1;\nisoBandNextOLT[102] = 0;\nisoBandNextXTL[102] = -1;\nisoBandNextYTL[102] = 0;\nisoBandNextOTL[102] = 1;\n\nisoBandNextXRT[155] = 0;\nisoBandNextYRT[155] = -1;\nisoBandNextORT[155] = 0;\nisoBandNextXBL[155] = 1;\nisoBandNextYBL[155] = 0;\nisoBandNextOBL[155] = 1;\nisoBandNextXLB[155] = 0;\nisoBandNextYLB[155] = 1;\nisoBandNextOLB[155] = 1;\nisoBandNextXTR[155] = -1;\nisoBandNextYTR[155] = 0;\nisoBandNextOTR[155] = 0;\n\nisoBandNextXRB[103] = 0;\nisoBandNextYRB[103] = 1;\nisoBandNextORB[103] = 0;\nisoBandNextXBR[103] = -1;\nisoBandNextYBR[103] = 0;\nisoBandNextOBR[103] = 1;\nisoBandNextXLT[103] = 0;\nisoBandNextYLT[103] = -1;\nisoBandNextOLT[103] = 1;\nisoBandNextXTL[103] = 1;\nisoBandNextYTL[103] = 0;\nisoBandNextOTL[103] = 0;\n\n/* 7-sided cases */\nisoBandNextXRT[152] = 0;\nisoBandNextYRT[152] = 1;\nisoBandNextORT[152] = 1;\nisoBandNextXBR[152] = -1;\nisoBandNextYBR[152] = 0;\nisoBandNextOBR[152] = 1;\nisoBandNextXBL[152] = -1;\nisoBandNextYBL[152] = 0;\nisoBandNextOBL[152] = 0;\nisoBandNextXLB[152] = 0;\nisoBandNextYLB[152] = -1;\nisoBandNextOLB[152] = 0;\nisoBandNextXLT[152] = 0;\nisoBandNextYLT[152] = -1;\nisoBandNextOLT[152] = 1;\nisoBandNextXTR[152] = 1;\nisoBandNextYTR[152] = 0;\nisoBandNextOTR[152] = 1;\n\nisoBandNextXRT[156] = 0;\nisoBandNextYRT[156] = -1;\nisoBandNextORT[156] = 1;\nisoBandNextXBR[156] = 1;\nisoBandNextYBR[156] = 0;\nisoBandNextOBR[156] = 1;\nisoBandNextXBL[156] = -1;\nisoBandNextYBL[156] = 0;\nisoBandNextOBL[156] = 0;\nisoBandNextXLB[156] = 0;\nisoBandNextYLB[156] = -1;\nisoBandNextOLB[156] = 0;\nisoBandNextXLT[156] = 0;\nisoBandNextYLT[156] = 1;\nisoBandNextOLT[156] = 1;\nisoBandNextXTR[156] = -1;\nisoBandNextYTR[156] = 0;\nisoBandNextOTR[156] = 1;\n\nisoBandNextXRT[137] = 0;\nisoBandNextYRT[137] = 1;\nisoBandNextORT[137] = 1;\nisoBandNextXRB[137] = 0;\nisoBandNextYRB[137] = 1;\nisoBandNextORB[137] = 0;\nisoBandNextXBL[137] = -1;\nisoBandNextYBL[137] = 0;\nisoBandNextOBL[137] = 0;\nisoBandNextXLB[137] = 0;\nisoBandNextYLB[137] = -1;\nisoBandNextOLB[137] = 0;\nisoBandNextXTL[137] = 1;\nisoBandNextYTL[137] = 0;\nisoBandNextOTL[137] = 0;\nisoBandNextXTR[137] = 1;\nisoBandNextYTR[137] = 0;\nisoBandNextOTR[137] = 1;\n\nisoBandNextXRT[139] = 0;\nisoBandNextYRT[139] = 1;\nisoBandNextORT[139] = 1;\nisoBandNextXRB[139] = 0;\nisoBandNextYRB[139] = -1;\nisoBandNextORB[139] = 0;\nisoBandNextXBL[139] = 1;\nisoBandNextYBL[139] = 0;\nisoBandNextOBL[139] = 0;\nisoBandNextXLB[139] = 0;\nisoBandNextYLB[139] = 1;\nisoBandNextOLB[139] = 0;\nisoBandNextXTL[139] = -1;\nisoBandNextYTL[139] = 0;\nisoBandNextOTL[139] = 0;\nisoBandNextXTR[139] = 1;\nisoBandNextYTR[139] = 0;\nisoBandNextOTR[139] = 1;\n\nisoBandNextXRT[98] = 0;\nisoBandNextYRT[98] = -1;\nisoBandNextORT[98] = 0;\nisoBandNextXRB[98] = 0;\nisoBandNextYRB[98] = -1;\nisoBandNextORB[98] = 1;\nisoBandNextXBR[98] = 1;\nisoBandNextYBR[98] = 0;\nisoBandNextOBR[98] = 0;\nisoBandNextXBL[98] = 1;\nisoBandNextYBL[98] = 0;\nisoBandNextOBL[98] = 1;\nisoBandNextXLT[98] = 0;\nisoBandNextYLT[98] = 1;\nisoBandNextOLT[98] = 0;\nisoBandNextXTL[98] = -1;\nisoBandNextYTL[98] = 0;\nisoBandNextOTL[98] = 1;\n\nisoBandNextXRT[99] = 0;\nisoBandNextYRT[99] = 1;\nisoBandNextORT[99] = 0;\nisoBandNextXRB[99] = 0;\nisoBandNextYRB[99] = -1;\nisoBandNextORB[99] = 1;\nisoBandNextXBR[99] = 1;\nisoBandNextYBR[99] = 0;\nisoBandNextOBR[99] = 0;\nisoBandNextXBL[99] = -1;\nisoBandNextYBL[99] = 0;\nisoBandNextOBL[99] = 1;\nisoBandNextXLT[99] = 0;\nisoBandNextYLT[99] = -1;\nisoBandNextOLT[99] = 0;\nisoBandNextXTL[99] = 1;\nisoBandNextYTL[99] = 0;\nisoBandNextOTL[99] = 1;\n\nisoBandNextXRB[38] = 0;\nisoBandNextYRB[38] = -1;\nisoBandNextORB[38] = 1;\nisoBandNextXBR[38] = 1;\nisoBandNextYBR[38] = 0;\nisoBandNextOBR[38] = 0;\nisoBandNextXLB[38] = 0;\nisoBandNextYLB[38] = 1;\nisoBandNextOLB[38] = 1;\nisoBandNextXLT[38] = 0;\nisoBandNextYLT[38] = 1;\nisoBandNextOLT[38] = 0;\nisoBandNextXTL[38] = -1;\nisoBandNextYTL[38] = 0;\nisoBandNextOTL[38] = 1;\nisoBandNextXTR[38] = -1;\nisoBandNextYTR[38] = 0;\nisoBandNextOTR[38] = 0;\n\nisoBandNextXRB[39] = 0;\nisoBandNextYRB[39] = 1;\nisoBandNextORB[39] = 1;\nisoBandNextXBR[39] = -1;\nisoBandNextYBR[39] = 0;\nisoBandNextOBR[39] = 0;\nisoBandNextXLB[39] = 0;\nisoBandNextYLB[39] = -1;\nisoBandNextOLB[39] = 1;\nisoBandNextXLT[39] = 0;\nisoBandNextYLT[39] = 1;\nisoBandNextOLT[39] = 0;\nisoBandNextXTL[39] = -1;\nisoBandNextYTL[39] = 0;\nisoBandNextOTL[39] = 1;\nisoBandNextXTR[39] = 1;\nisoBandNextYTR[39] = 0;\nisoBandNextOTR[39] = 0;\n\n/*\n  Define helper functions for the polygon_table\n  */\n\n/* triangle cases */\nvar p00 = function (cell) {\n  return [\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\nvar p01 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n  ];\n};\nvar p02 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [1, 1],\n    [1, cell.righttop],\n  ];\n};\nvar p03 = function (cell) {\n  return [\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* trapezoid cases */\nvar p04 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\nvar p05 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n  ];\n};\nvar p06 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\nvar p07 = function (cell) {\n  return [\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* rectangle cases */\nvar p08 = function (cell) {\n  return [\n    [0, 0],\n    [0, cell.leftbottom],\n    [1, cell.rightbottom],\n    [1, 0],\n  ];\n};\nvar p09 = function (cell) {\n  return [\n    [1, 0],\n    [cell.bottomright, 0],\n    [cell.topright, 1],\n    [1, 1],\n  ];\n};\nvar p10 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [0, cell.lefttop],\n    [0, 1],\n  ];\n};\nvar p11 = function (cell) {\n  return [\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\nvar p12 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\nvar p13 = function (cell) {\n  return [\n    [cell.topleft, 1],\n    [cell.topright, 1],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n  ];\n};\n/* square case */\nvar p14 = function () {\n  return [\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 0],\n  ];\n};\n/* pentagon cases */\nvar p15 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1211 || 1011 */\nvar p16 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [1, 1],\n    [1, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\n/* 2111 || 0111 */\nvar p17 = function (cell) {\n  return [\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [1, 1],\n  ];\n};\n/* 1112 || 1110 */\nvar p18 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n  ];\n};\n/* 1121 || 1101 */\nvar p19 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1200 || 1022 */\nvar p20 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [cell.topright, 1],\n  ];\n};\n/* 0120 || 2102 */\nvar p21 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\n/* 0012 || 2210 */\nvar p22 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n  ];\n};\n/* 2001 || 0221 */\nvar p23 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1002 || 1220 */\nvar p24 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2100 || 0122 */\nvar p25 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0210 || 2012 */\nvar p26 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\n/* 0021 || 2201 */\n/*hexagon cases */\nvar p27 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0211 || 2011 */\nvar p28 = function (cell) {\n  return [\n    [1, 1],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2110 || 0112 */\nvar p29 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n  ];\n};\n/* 1102 || 1120 */\nvar p30 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1021 || 1201 */\nvar p31 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topright, 1],\n  ];\n};\n/* 2101 || 0121 */\nvar p32 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1012 || 1210 */\n/* 8-sided cases */\nvar p33 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* flipped == 1 state for 0202 and 2020 */\n/* 6-sided cases */\nvar p34 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topright, 1],\n  ];\n};\n/* 0101 with flipped == 1 || 2121 with flipped == 1 */\nvar p35 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1010 with flipped == 1 || 1212 with flipped == 1 */\n/* 7-sided cases */\nvar p36 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2120 with flipped == 1 || 0102 with flipped == 1 */\nvar p37 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 2021 with flipped == 1 || 0201 with flipped == 1 */\nvar p38 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1202 with flipped == 1 || 1020 with flipped == 1 */\nvar p39 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0212 with flipped == 1 || 2010 with flipped == 1 */\n\n/*\n  The lookup tables for edge number given the polygon\n  is entered at a specific location\n*/\n\nvar isoBandEdgeRT = [];\nvar isoBandEdgeRB = [];\nvar isoBandEdgeBR = [];\nvar isoBandEdgeBL = [];\nvar isoBandEdgeLB = [];\nvar isoBandEdgeLT = [];\nvar isoBandEdgeTL = [];\nvar isoBandEdgeTR = [];\n\n/* triangle cases */\nisoBandEdgeBL[1] = isoBandEdgeLB[1] = 18;\nisoBandEdgeBL[169] = isoBandEdgeLB[169] = 18;\nisoBandEdgeBR[4] = isoBandEdgeRB[4] = 12;\nisoBandEdgeBR[166] = isoBandEdgeRB[166] = 12;\nisoBandEdgeRT[16] = isoBandEdgeTR[16] = 4;\nisoBandEdgeRT[154] = isoBandEdgeTR[154] = 4;\nisoBandEdgeLT[64] = isoBandEdgeTL[64] = 22;\nisoBandEdgeLT[106] = isoBandEdgeTL[106] = 22;\n\n/* trapezoid cases */\nisoBandEdgeBR[2] = isoBandEdgeLT[2] = 17;\nisoBandEdgeBL[2] = isoBandEdgeLB[2] = 18;\nisoBandEdgeBR[168] = isoBandEdgeLT[168] = 17;\nisoBandEdgeBL[168] = isoBandEdgeLB[168] = 18;\nisoBandEdgeRT[8] = isoBandEdgeBL[8] = 9;\nisoBandEdgeRB[8] = isoBandEdgeBR[8] = 12;\nisoBandEdgeRT[162] = isoBandEdgeBL[162] = 9;\nisoBandEdgeRB[162] = isoBandEdgeBR[162] = 12;\nisoBandEdgeRT[32] = isoBandEdgeTR[32] = 4;\nisoBandEdgeRB[32] = isoBandEdgeTL[32] = 1;\nisoBandEdgeRT[138] = isoBandEdgeTR[138] = 4;\nisoBandEdgeRB[138] = isoBandEdgeTL[138] = 1;\nisoBandEdgeLB[128] = isoBandEdgeTR[128] = 21;\nisoBandEdgeLT[128] = isoBandEdgeTL[128] = 22;\nisoBandEdgeLB[42] = isoBandEdgeTR[42] = 21;\nisoBandEdgeLT[42] = isoBandEdgeTL[42] = 22;\n\n/* rectangle cases */\nisoBandEdgeRB[5] = isoBandEdgeLB[5] = 14;\nisoBandEdgeRB[165] = isoBandEdgeLB[165] = 14;\nisoBandEdgeBR[20] = isoBandEdgeTR[20] = 6;\nisoBandEdgeBR[150] = isoBandEdgeTR[150] = 6;\nisoBandEdgeRT[80] = isoBandEdgeLT[80] = 11;\nisoBandEdgeRT[90] = isoBandEdgeLT[90] = 11;\nisoBandEdgeBL[65] = isoBandEdgeTL[65] = 3;\nisoBandEdgeBL[105] = isoBandEdgeTL[105] = 3;\nisoBandEdgeRT[160] = isoBandEdgeLT[160] = 11;\nisoBandEdgeRB[160] = isoBandEdgeLB[160] = 14;\nisoBandEdgeRT[10] = isoBandEdgeLT[10] = 11;\nisoBandEdgeRB[10] = isoBandEdgeLB[10] = 14;\nisoBandEdgeBR[130] = isoBandEdgeTR[130] = 6;\nisoBandEdgeBL[130] = isoBandEdgeTL[130] = 3;\nisoBandEdgeBR[40] = isoBandEdgeTR[40] = 6;\nisoBandEdgeBL[40] = isoBandEdgeTL[40] = 3;\n\n/* pentagon cases */\nisoBandEdgeRB[101] = isoBandEdgeTL[101] = 1;\nisoBandEdgeRB[69] = isoBandEdgeTL[69] = 1;\nisoBandEdgeLB[149] = isoBandEdgeTR[149] = 21;\nisoBandEdgeLB[21] = isoBandEdgeTR[21] = 21;\nisoBandEdgeBR[86] = isoBandEdgeLT[86] = 17;\nisoBandEdgeBR[84] = isoBandEdgeLT[84] = 17;\nisoBandEdgeRT[89] = isoBandEdgeBL[89] = 9;\nisoBandEdgeRT[81] = isoBandEdgeBL[81] = 9;\nisoBandEdgeRT[96] = isoBandEdgeTL[96] = 0;\nisoBandEdgeRB[96] = isoBandEdgeLT[96] = 15;\nisoBandEdgeRT[74] = isoBandEdgeTL[74] = 0;\nisoBandEdgeRB[74] = isoBandEdgeLT[74] = 15;\nisoBandEdgeRT[24] = isoBandEdgeBR[24] = 8;\nisoBandEdgeBL[24] = isoBandEdgeTR[24] = 7;\nisoBandEdgeRT[146] = isoBandEdgeBR[146] = 8;\nisoBandEdgeBL[146] = isoBandEdgeTR[146] = 7;\nisoBandEdgeRB[6] = isoBandEdgeLT[6] = 15;\nisoBandEdgeBR[6] = isoBandEdgeLB[6] = 16;\nisoBandEdgeRB[164] = isoBandEdgeLT[164] = 15;\nisoBandEdgeBR[164] = isoBandEdgeLB[164] = 16;\nisoBandEdgeBL[129] = isoBandEdgeTR[129] = 7;\nisoBandEdgeLB[129] = isoBandEdgeTL[129] = 20;\nisoBandEdgeBL[41] = isoBandEdgeTR[41] = 7;\nisoBandEdgeLB[41] = isoBandEdgeTL[41] = 20;\nisoBandEdgeBR[66] = isoBandEdgeTL[66] = 2;\nisoBandEdgeBL[66] = isoBandEdgeLT[66] = 19;\nisoBandEdgeBR[104] = isoBandEdgeTL[104] = 2;\nisoBandEdgeBL[104] = isoBandEdgeLT[104] = 19;\nisoBandEdgeRT[144] = isoBandEdgeLB[144] = 10;\nisoBandEdgeLT[144] = isoBandEdgeTR[144] = 23;\nisoBandEdgeRT[26] = isoBandEdgeLB[26] = 10;\nisoBandEdgeLT[26] = isoBandEdgeTR[26] = 23;\nisoBandEdgeRB[36] = isoBandEdgeTR[36] = 5;\nisoBandEdgeBR[36] = isoBandEdgeTL[36] = 2;\nisoBandEdgeRB[134] = isoBandEdgeTR[134] = 5;\nisoBandEdgeBR[134] = isoBandEdgeTL[134] = 2;\nisoBandEdgeRT[9] = isoBandEdgeLB[9] = 10;\nisoBandEdgeRB[9] = isoBandEdgeBL[9] = 13;\nisoBandEdgeRT[161] = isoBandEdgeLB[161] = 10;\nisoBandEdgeRB[161] = isoBandEdgeBL[161] = 13;\n\n/* hexagon cases */\nisoBandEdgeRB[37] = isoBandEdgeTR[37] = 5;\nisoBandEdgeLB[37] = isoBandEdgeTL[37] = 20;\nisoBandEdgeRB[133] = isoBandEdgeTR[133] = 5;\nisoBandEdgeLB[133] = isoBandEdgeTL[133] = 20;\nisoBandEdgeBR[148] = isoBandEdgeLB[148] = 16;\nisoBandEdgeLT[148] = isoBandEdgeTR[148] = 23;\nisoBandEdgeBR[22] = isoBandEdgeLB[22] = 16;\nisoBandEdgeLT[22] = isoBandEdgeTR[22] = 23;\nisoBandEdgeRT[82] = isoBandEdgeBR[82] = 8;\nisoBandEdgeBL[82] = isoBandEdgeLT[82] = 19;\nisoBandEdgeRT[88] = isoBandEdgeBR[88] = 8;\nisoBandEdgeBL[88] = isoBandEdgeLT[88] = 19;\nisoBandEdgeRT[73] = isoBandEdgeTL[73] = 0;\nisoBandEdgeRB[73] = isoBandEdgeBL[73] = 13;\nisoBandEdgeRT[97] = isoBandEdgeTL[97] = 0;\nisoBandEdgeRB[97] = isoBandEdgeBL[97] = 13;\nisoBandEdgeRT[145] = isoBandEdgeBL[145] = 9;\nisoBandEdgeLB[145] = isoBandEdgeTR[145] = 21;\nisoBandEdgeRT[25] = isoBandEdgeBL[25] = 9;\nisoBandEdgeLB[25] = isoBandEdgeTR[25] = 21;\nisoBandEdgeRB[70] = isoBandEdgeTL[70] = 1;\nisoBandEdgeBR[70] = isoBandEdgeLT[70] = 17;\nisoBandEdgeRB[100] = isoBandEdgeTL[100] = 1;\nisoBandEdgeBR[100] = isoBandEdgeLT[100] = 17;\n\n/* 8-sided cases */\nisoBandEdgeRT[34] = isoBandEdgeBL[34] = 9;\nisoBandEdgeRB[34] = isoBandEdgeBR[34] = 12;\nisoBandEdgeLB[34] = isoBandEdgeTR[34] = 21;\nisoBandEdgeLT[34] = isoBandEdgeTL[34] = 22;\nisoBandEdgeRT[136] = isoBandEdgeTR[136] = 4;\nisoBandEdgeRB[136] = isoBandEdgeTL[136] = 1;\nisoBandEdgeBR[136] = isoBandEdgeLT[136] = 17;\nisoBandEdgeBL[136] = isoBandEdgeLB[136] = 18;\nisoBandEdgeRT[35] = isoBandEdgeTR[35] = 4;\nisoBandEdgeRB[35] = isoBandEdgeBR[35] = 12;\nisoBandEdgeBL[35] = isoBandEdgeLB[35] = 18;\nisoBandEdgeLT[35] = isoBandEdgeTL[35] = 22;\n\n/* 6-sided cases */\nisoBandEdgeRT[153] = isoBandEdgeTR[153] = 4;\nisoBandEdgeBL[153] = isoBandEdgeLB[153] = 18;\nisoBandEdgeRB[102] = isoBandEdgeBR[102] = 12;\nisoBandEdgeLT[102] = isoBandEdgeTL[102] = 22;\nisoBandEdgeRT[155] = isoBandEdgeBL[155] = 9;\nisoBandEdgeLB[155] = isoBandEdgeTR[155] = 23;\nisoBandEdgeRB[103] = isoBandEdgeTL[103] = 1;\nisoBandEdgeBR[103] = isoBandEdgeLT[103] = 17;\n\n/* 7-sided cases */\nisoBandEdgeRT[152] = isoBandEdgeTR[152] = 4;\nisoBandEdgeBR[152] = isoBandEdgeLT[152] = 17;\nisoBandEdgeBL[152] = isoBandEdgeLB[152] = 18;\nisoBandEdgeRT[156] = isoBandEdgeBR[156] = 8;\nisoBandEdgeBL[156] = isoBandEdgeLB[156] = 18;\nisoBandEdgeLT[156] = isoBandEdgeTR[156] = 23;\nisoBandEdgeRT[137] = isoBandEdgeTR[137] = 4;\nisoBandEdgeRB[137] = isoBandEdgeTL[137] = 1;\nisoBandEdgeBL[137] = isoBandEdgeLB[137] = 18;\nisoBandEdgeRT[139] = isoBandEdgeTR[139] = 4;\nisoBandEdgeRB[139] = isoBandEdgeBL[139] = 13;\nisoBandEdgeLB[139] = isoBandEdgeTL[139] = 20;\nisoBandEdgeRT[98] = isoBandEdgeBL[98] = 9;\nisoBandEdgeRB[98] = isoBandEdgeBR[98] = 12;\nisoBandEdgeLT[98] = isoBandEdgeTL[98] = 22;\nisoBandEdgeRT[99] = isoBandEdgeTL[99] = 0;\nisoBandEdgeRB[99] = isoBandEdgeBR[99] = 12;\nisoBandEdgeBL[99] = isoBandEdgeLT[99] = 19;\nisoBandEdgeRB[38] = isoBandEdgeBR[38] = 12;\nisoBandEdgeLB[38] = isoBandEdgeTR[38] = 21;\nisoBandEdgeLT[38] = isoBandEdgeTL[38] = 22;\nisoBandEdgeRB[39] = isoBandEdgeTR[39] = 5;\nisoBandEdgeBR[39] = isoBandEdgeLB[39] = 16;\nisoBandEdgeLT[39] = isoBandEdgeTL[39] = 22;\n\n/*\n  The lookup tables for all different polygons that\n  may appear within a grid cell\n*/\n\nvar polygon_table = [];\n\n/* triangle cases */\npolygon_table[1] = polygon_table[169] = p00; /* 2221 || 0001 */\npolygon_table[4] = polygon_table[166] = p01; /* 2212 || 0010 */\npolygon_table[16] = polygon_table[154] = p02; /* 2122 || 0100 */\npolygon_table[64] = polygon_table[106] = p03; /* 1222 || 1000 */\n\n/* trapezoid cases */\npolygon_table[168] = polygon_table[2] = p04; /* 2220 || 0002 */\npolygon_table[162] = polygon_table[8] = p05; /* 2202 || 0020 */\npolygon_table[138] = polygon_table[32] = p06; /* 2022 || 0200 */\npolygon_table[42] = polygon_table[128] = p07; /* 0222 || 2000 */\n\n/* rectangle cases */\npolygon_table[5] = polygon_table[165] = p08; /* 0011 || 2211 */\npolygon_table[20] = polygon_table[150] = p09; /* 0110 || 2112 */\npolygon_table[80] = polygon_table[90] = p10; /* 1100 || 1122 */\npolygon_table[65] = polygon_table[105] = p11; /* 1001 || 1221 */\npolygon_table[160] = polygon_table[10] = p12; /* 2200 || 0022 */\npolygon_table[130] = polygon_table[40] = p13; /* 2002 || 0220 */\n\n/* square case */\npolygon_table[85] = p14; /* 1111 */\n\n/* pentagon cases */\npolygon_table[101] = polygon_table[69] = p15; /* 1211 || 1011 */\npolygon_table[149] = polygon_table[21] = p16; /* 2111 || 0111 */\npolygon_table[86] = polygon_table[84] = p17; /* 1112 || 1110 */\npolygon_table[89] = polygon_table[81] = p18; /* 1121 || 1101 */\npolygon_table[96] = polygon_table[74] = p19; /* 1200 || 1022 */\npolygon_table[24] = polygon_table[146] = p20; /* 0120 || 2102 */\npolygon_table[6] = polygon_table[164] = p21; /* 0012 || 2210 */\npolygon_table[129] = polygon_table[41] = p22; /* 2001 || 0221 */\npolygon_table[66] = polygon_table[104] = p23; /* 1002 || 1220 */\npolygon_table[144] = polygon_table[26] = p24; /* 2100 || 0122 */\npolygon_table[36] = polygon_table[134] = p25; /* 0210 || 2012 */\npolygon_table[9] = polygon_table[161] = p26; /* 0021 || 2201 */\n\n/* hexagon cases */\npolygon_table[37] = polygon_table[133] = p27; /* 0211 || 2011 */\npolygon_table[148] = polygon_table[22] = p28; /* 2110 || 0112 */\npolygon_table[82] = polygon_table[88] = p29; /* 1102 || 1120 */\npolygon_table[73] = polygon_table[97] = p30; /* 1021 || 1201 */\npolygon_table[145] = polygon_table[25] = p31; /* 2101 || 0121 */\npolygon_table[70] = polygon_table[100] = p32; /* 1012 || 1210 */\n\n/* 8-sided cases */\npolygon_table[34] = function (c) {\n  return [p07(c), p05(c)];\n}; /* 0202 || 2020 with flipped == 0 */\npolygon_table[35] = p33; /* flipped == 1 state for 0202 and 2020 */\npolygon_table[136] = function (c) {\n  return [p06(c), p04(c)];\n}; /* 2020 || 0202 with flipped == 0 */\n\n/* 6-sided cases */\npolygon_table[153] = function (c) {\n  return [p02(c), p00(c)];\n}; /* 0101 with flipped == 0 || 2121 with flipped == 2 */\npolygon_table[102] = function (c) {\n  return [p01(c), p03(c)];\n}; /* 1010 with flipped == 0 || 1212 with flipped == 2 */\npolygon_table[155] = p34; /* 0101 with flipped == 1 || 2121 with flipped == 1 */\npolygon_table[103] = p35; /* 1010 with flipped == 1 || 1212 with flipped == 1 */\n\n/* 7-sided cases */\npolygon_table[152] = function (c) {\n  return [p02(c), p04(c)];\n}; /* 2120 with flipped == 2 || 0102 with flipped == 0 */\npolygon_table[156] = p36; /* 2120 with flipped == 1 || 0102 with flipped == 1 */\npolygon_table[137] = function (c) {\n  return [p06(c), p00(c)];\n}; /* 2021 with flipped == 2 || 0201 with flipped == 0 */\npolygon_table[139] = p37; /* 2021 with flipped == 1 || 0201 with flipped == 1 */\npolygon_table[98] = function (c) {\n  return [p05(c), p03(c)];\n}; /* 1202 with flipped == 2 || 1020 with flipped == 0 */\npolygon_table[99] = p38; /* 1202 with flipped == 1 || 1020 with flipped == 1 */\npolygon_table[38] = function (c) {\n  return [p01(c), p07(c)];\n}; /* 0212 with flipped == 2 || 2010 with flipped == 0 */\npolygon_table[39] = p39; /* 0212 with flipped == 1 || 2010 with flipped == 1 */\n\n/*\n####################################\nSome small helper functions\n####################################\n*/\n\n/* assume that x1 == 1 &&  x0 == 0 */\nfunction interpolateX(y, y0, y1) {\n  return (y - y0) / (y1 - y0);\n}\n\nfunction isArray(myArray) {\n  return myArray.constructor.toString().indexOf(\"Array\") > -1;\n}\n\n/*\n####################################\nBelow is the actual Marching Squares implementation\n####################################\n*/\n\nfunction computeBandGrid(data, minV, bandwidth) {\n  var rows = data.length - 1;\n  var cols = data[0].length - 1;\n  var BandGrid = { rows: rows, cols: cols, cells: [] };\n\n  var maxV = minV + Math.abs(bandwidth);\n\n  for (var j = 0; j < rows; ++j) {\n    BandGrid.cells[j] = [];\n    for (var i = 0; i < cols; ++i) {\n      /*  compose the 4-trit corner representation */\n      var cval = 0;\n\n      var tl = data[j + 1][i];\n      var tr = data[j + 1][i + 1];\n      var br = data[j][i + 1];\n      var bl = data[j][i];\n\n      if (isNaN(tl) || isNaN(tr) || isNaN(br) || isNaN(bl)) {\n        continue;\n      }\n\n      cval |= tl < minV ? 0 : tl > maxV ? 128 : 64;\n      cval |= tr < minV ? 0 : tr > maxV ? 32 : 16;\n      cval |= br < minV ? 0 : br > maxV ? 8 : 4;\n      cval |= bl < minV ? 0 : bl > maxV ? 2 : 1;\n\n      var cval_real = +cval;\n\n      /* resolve ambiguity via averaging */\n      var flipped = 0;\n      if (\n        cval === 17 /* 0101 */ ||\n        cval === 18 /* 0102 */ ||\n        cval === 33 /* 0201 */ ||\n        cval === 34 /* 0202 */ ||\n        cval === 38 /* 0212 */ ||\n        cval === 68 /* 1010 */ ||\n        cval === 72 /* 1020 */ ||\n        cval === 98 /* 1202 */ ||\n        cval === 102 /* 1212 */ ||\n        cval === 132 /* 2010 */ ||\n        cval === 136 /* 2020 */ ||\n        cval === 137 /* 2021 */ ||\n        cval === 152 /* 2120 */ ||\n        cval === 153 /* 2121 */\n      ) {\n        var average = (tl + tr + br + bl) / 4;\n        /* set flipped state */\n        flipped = average > maxV ? 2 : average < minV ? 0 : 1;\n\n        /* adjust cval for flipped cases */\n\n        /* 8-sided cases */\n        if (cval === 34) {\n          if (flipped === 1) {\n            cval = 35;\n          } else if (flipped === 0) {\n            cval = 136;\n          }\n        } else if (cval === 136) {\n          if (flipped === 1) {\n            cval = 35;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 34;\n          }\n        } else if (cval === 17) {\n          /* 6-sided polygon cases */\n          if (flipped === 1) {\n            cval = 155;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 153;\n          }\n        } else if (cval === 68) {\n          if (flipped === 1) {\n            cval = 103;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 102;\n          }\n        } else if (cval === 153) {\n          if (flipped === 1) cval = 155;\n        } else if (cval === 102) {\n          if (flipped === 1) cval = 103;\n        } else if (cval === 152) {\n          /* 7-sided polygon cases */\n          if (flipped < 2) {\n            cval = 156;\n            flipped = 1;\n          }\n        } else if (cval === 137) {\n          if (flipped < 2) {\n            cval = 139;\n            flipped = 1;\n          }\n        } else if (cval === 98) {\n          if (flipped < 2) {\n            cval = 99;\n            flipped = 1;\n          }\n        } else if (cval === 38) {\n          if (flipped < 2) {\n            cval = 39;\n            flipped = 1;\n          }\n        } else if (cval === 18) {\n          if (flipped > 0) {\n            cval = 156;\n            flipped = 4;\n          } else {\n            cval = 152;\n          }\n        } else if (cval === 33) {\n          if (flipped > 0) {\n            cval = 139;\n            flipped = 4;\n          } else {\n            cval = 137;\n          }\n        } else if (cval === 72) {\n          if (flipped > 0) {\n            cval = 99;\n            flipped = 4;\n          } else {\n            cval = 98;\n          }\n        } else if (cval === 132) {\n          if (flipped > 0) {\n            cval = 39;\n            flipped = 4;\n          } else {\n            cval = 38;\n          }\n        }\n      }\n\n      /* add cell to BandGrid if it contains at least one polygon-side */\n      if (cval != 0 && cval != 170) {\n        var topleft,\n          topright,\n          bottomleft,\n          bottomright,\n          righttop,\n          rightbottom,\n          lefttop,\n          leftbottom;\n\n        topleft = topright = bottomleft = bottomright = righttop = rightbottom = lefttop = leftbottom = 0.5;\n\n        var edges = [];\n\n        /* do interpolation here */\n        /* 1st Triangles */\n        if (cval === 1) {\n          /* 0001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 169) {\n          /* 2221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 4) {\n          /* 0010 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = interpolateX(minV, bl, br);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 166) {\n          /* 2212 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 16) {\n          /* 0100 */\n          righttop = interpolateX(minV, br, tr);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 154) {\n          /* 2122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 64) {\n          /* 1000 */\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 106) {\n          /* 1222 */\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 168) {\n          /* 2nd Trapezoids */\n          /* 2220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 2) {\n          /* 0002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 162) {\n          /* 2202 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 8) {\n          /* 0020 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 138) {\n          /* 2022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 32) {\n          /* 0200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 42) {\n          /* 0222 */\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 128) {\n          /* 2000 */\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        }\n\n        /* 3rd rectangle cases */\n        if (cval === 5) {\n          /* 0011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 165) {\n          /* 2211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 20) {\n          /* 0110 */\n          bottomright = interpolateX(minV, bl, br);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 150) {\n          /* 2112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 80) {\n          /* 1100 */\n          righttop = interpolateX(minV, br, tr);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 90) {\n          /* 1122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 65) {\n          /* 1001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 105) {\n          /* 1221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 160) {\n          /* 2200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 10) {\n          /* 0022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 130) {\n          /* 2002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 40) {\n          /* 0220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 101) {\n          /* 4th single pentagon cases */\n          /* 1211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 69) {\n          /* 1011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 149) {\n          /* 2111 */\n          leftbottom = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 21) {\n          /* 0111 */\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 86) {\n          /* 1112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 84) {\n          /* 1110 */\n          bottomright = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 89) {\n          /* 1121 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 81) {\n          /* 1101 */\n          righttop = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 96) {\n          /* 1200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 74) {\n          /* 1022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 24) {\n          /* 0120 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 146) {\n          /* 2102 */\n          righttop = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 6) {\n          /* 0012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 164) {\n          /* 2210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 129) {\n          /* 2001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 41) {\n          /* 0221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 66) {\n          /* 1002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 104) {\n          /* 1220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeTL[cval]);\n        } else if (cval === 144) {\n          /* 2100 */\n          righttop = interpolateX(minV, br, tr);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 26) {\n          /* 0122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 36) {\n          /* 0210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 134) {\n          /* 2012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 9) {\n          /* 0021 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 161) {\n          /* 2201 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 37) {\n          /* 5th single hexagon cases */\n          /* 0211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 133) {\n          /* 2011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 148) {\n          /* 2110 */\n          bottomright = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 22) {\n          /* 0112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 82) {\n          /* 1102 */\n          righttop = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 88) {\n          /* 1120 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 73) {\n          /* 1021 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 97) {\n          /* 1201 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 145) {\n          /* 2101 */\n          righttop = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 25) {\n          /* 0121 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 70) {\n          /* 1012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 100) {\n          /* 1210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 34) {\n          /* 8-sided cases */\n          /* 0202 || 2020 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 35) {\n          /* flipped == 1 state for 0202, and 2020 with flipped == 4*/\n          if (flipped === 4) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 136) {\n          /* 2020 || 0202 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 153) {\n          /* 6-sided polygon cases */\n          /* 0101 with flipped == 0 || 2121 with flipped == 2 */\n          if (flipped === 0) {\n            righttop = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 102) {\n          /* 1010 with flipped == 0 || 1212 with flipped == 2 */\n          if (flipped === 0) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 155) {\n          /* 0101 with flipped == 4 || 2121 with flipped == 1 */\n          if (flipped === 4) {\n            righttop = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 103) {\n          /* 1010 with flipped == 4 || 1212 with flipped == 1 */\n          if (flipped === 4) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 152) {\n          /* 7-sided polygon cases */\n          /* 2120 with flipped == 2 || 0102 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 156) {\n          /* 2120 with flipped == 1 || 0102 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 137) {\n          /* 2021 with flipped == 2 || 0201 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 139) {\n          /* 2021 with flipped == 1 || 0201 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 98) {\n          /* 1202 with flipped == 2 || 1020 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 99) {\n          /* 1202 with flipped == 1 || 1020 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 38) {\n          /* 0212 with flipped == 2 || 2010 with flipped == 0 */\n          if (flipped === 0) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 39) {\n          /* 0212 with flipped == 1 || 2010 with flipped == 4 */\n          if (flipped === 4) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 85) {\n          righttop = 1;\n          rightbottom = 0;\n          bottomright = 1;\n          bottomleft = 0;\n          leftbottom = 0;\n          lefttop = 1;\n          topleft = 0;\n          topright = 1;\n        }\n\n        if (\n          topleft < 0 ||\n          topleft > 1 ||\n          topright < 0 ||\n          topright > 1 ||\n          righttop < 0 ||\n          righttop > 1 ||\n          bottomright < 0 ||\n          bottomright > 1 ||\n          leftbottom < 0 ||\n          leftbottom > 1 ||\n          lefttop < 0 ||\n          lefttop > 1\n        ) {\n          console.log(\n            \"MarchingSquaresJS-isoBands: \" +\n              cval +\n              \" \" +\n              cval_real +\n              \" \" +\n              tl +\n              \",\" +\n              tr +\n              \",\" +\n              br +\n              \",\" +\n              bl +\n              \" \" +\n              flipped +\n              \" \" +\n              topleft +\n              \" \" +\n              topright +\n              \" \" +\n              righttop +\n              \" \" +\n              rightbottom +\n              \" \" +\n              bottomright +\n              \" \" +\n              bottomleft +\n              \" \" +\n              leftbottom +\n              \" \" +\n              lefttop\n          );\n        }\n\n        BandGrid.cells[j][i] = {\n          cval: cval,\n          cval_real: cval_real,\n          flipped: flipped,\n          topleft: topleft,\n          topright: topright,\n          righttop: righttop,\n          rightbottom: rightbottom,\n          bottomright: bottomright,\n          bottomleft: bottomleft,\n          leftbottom: leftbottom,\n          lefttop: lefttop,\n          edges: edges,\n        };\n      }\n    }\n  }\n\n  return BandGrid;\n}\n\nfunction BandGrid2AreaPaths(grid) {\n  var areas = [];\n  var rows = grid.rows;\n  var cols = grid.cols;\n  var currentPolygon = [];\n\n  for (var j = 0; j < rows; j++) {\n    for (var i = 0; i < cols; i++) {\n      if (\n        typeof grid.cells[j][i] !== \"undefined\" &&\n        grid.cells[j][i].edges.length > 0\n      ) {\n        /* trace back polygon path starting from this cell */\n\n        var cell = grid.cells[j][i];\n\n        /* get start coordinates */\n\n        var prev = getStartXY(cell),\n          next = null,\n          p = i,\n          q = j;\n\n        if (prev !== null) {\n          currentPolygon.push([prev.p[0] + p, prev.p[1] + q]);\n          //console.log(cell);\n          //console.log(\"coords: \" + (prev.p[0] + p) + \" \" + (prev.p[1] + q));\n        }\n\n        do {\n          //console.log(p + \",\" + q);\n          //console.log(grid.cells[q][p]);\n          //console.log(grid.cells[q][p].edges);\n          //console.log(\"from : \" + prev.x + \" \" + prev.y + \" \" + prev.o);\n\n          next = getExitXY(grid.cells[q][p], prev.x, prev.y, prev.o);\n          if (next !== null) {\n            //console.log(\"coords: \" + (next.p[0] + p) + \" \" + (next.p[1] + q));\n            currentPolygon.push([next.p[0] + p, next.p[1] + q]);\n            p += next.x;\n            q += next.y;\n            prev = next;\n          } else {\n            //console.log(\"getExitXY() returned null!\");\n            break;\n          }\n          //console.log(\"to : \" + next.x + \" \" + next.y + \" \" + next.o);\n          /* special case, where we've reached the grid boundaries */\n          if (\n            q < 0 ||\n            q >= rows ||\n            p < 0 ||\n            p >= cols ||\n            typeof grid.cells[q][p] === \"undefined\"\n          ) {\n            /* to create a closed path, we need to trace our way\n                arround the missing data, until we find an entry\n                point again\n            */\n\n            /* set back coordinates of current cell */\n            p -= next.x;\n            q -= next.y;\n\n            //console.log(\"reached boundary at \" + p + \" \" + q);\n\n            var missing = traceOutOfGridPath(\n              grid,\n              p,\n              q,\n              next.x,\n              next.y,\n              next.o\n            );\n            if (missing !== null) {\n              missing.path.forEach(function (pp) {\n                //console.log(\"coords: \" + (pp[0]) + \" \" + (pp[1]));\n                currentPolygon.push(pp);\n              });\n              p = missing.i;\n              q = missing.j;\n              prev = missing;\n            } else {\n              break;\n            }\n            //console.log(grid.cells[q][p]);\n          }\n        } while (\n          typeof grid.cells[q][p] !== \"undefined\" &&\n          grid.cells[q][p].edges.length > 0\n        );\n\n        areas.push(currentPolygon);\n        //console.log(\"next polygon\");\n        //console.log(currentPolygon);\n        currentPolygon = [];\n        if (grid.cells[j][i].edges.length > 0) i--;\n      }\n    }\n  }\n  return areas;\n}\n\nfunction traceOutOfGridPath(grid, i, j, d_x, d_y, d_o) {\n  var cell = grid.cells[j][i];\n  var cval = cell.cval_real;\n  var p = i + d_x,\n    q = j + d_y;\n  var path = [];\n  var closed = false;\n\n  while (!closed) {\n    //console.log(\"processing cell \" + p + \",\" + q + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n    if (\n      typeof grid.cells[q] === \"undefined\" ||\n      typeof grid.cells[q][p] === \"undefined\"\n    ) {\n      //console.log(\"which is undefined\");\n      /* we can't move on, so we have to change direction to proceed further */\n\n      /* go back to previous cell */\n      q -= d_y;\n      p -= d_x;\n      cell = grid.cells[q][p];\n      cval = cell.cval_real;\n\n      /* check where we've left defined cells of the grid... */\n      if (d_y === -1) {\n        /* we came from top */\n        if (d_o === 0) {\n          /* exit left */\n          if (cval & Node3) {\n            /* lower left node is within range, so we move left */\n            path.push([p, q]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n          } else if (cval & Node2) {\n            /* lower right node is within range, so we move right */\n            path.push([p + 1, q]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n          } else {\n            /* close the path */\n            path.push([p + cell.bottomright, q]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 1;\n            closed = true;\n            break;\n          }\n        } else if (cval & Node3) {\n          path.push([p, q]);\n          d_x = -1;\n          d_y = 0;\n          d_o = 0;\n        } else if (cval & Node2) {\n          path.push([p + cell.bottomright, q]);\n          d_x = 0;\n          d_y = 1;\n          d_o = 1;\n          closed = true;\n          break;\n        } else {\n          path.push([p + cell.bottomleft, q]);\n          d_x = 0;\n          d_y = 1;\n          d_o = 0;\n          closed = true;\n          break;\n        }\n      } else if (d_y === 1) {\n        /* we came from bottom */\n        //console.log(\"we came from bottom and hit a non-existing cell \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          /* exit left */\n          if (cval & Node1) {\n            /* top right node is within range, so we move right */\n            path.push([p + 1, q + 1]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else if (!(cval & Node0)) {\n            /* found entry within same cell */\n            path.push([p + cell.topright, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          } else {\n            path.push([p + cell.topleft, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else if (cval & Node1) {\n          path.push([p + 1, q + 1]);\n          d_x = 1;\n          d_y = 0;\n          d_o = 1;\n        } else {\n          /* move right */\n          path.push([p + 1, q + 1]);\n          d_x = 1;\n          d_y = 0;\n          d_o = 1;\n          //console.log(\"wtf\");\n          //break;\n        }\n      } else if (d_x === -1) {\n        /* we came from right */\n        //console.log(\"we came from right and hit a non-existing cell at \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          //console.log(\"continue at bottom\");\n          if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n            //console.log(\"moving upwards to \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n          } else if (!(cval & Node3)) {\n            /* there has to be an entry into the regular grid again! */\n            //console.log(\"exiting top\");\n            path.push([p, q + cell.lefttop]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n            closed = true;\n            break;\n          } else {\n            //console.log(\"exiting bottom\");\n            path.push([p, q + cell.leftbottom]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else {\n          //console.log(\"continue at top\");\n          if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n            //console.log(\"moving upwards to \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n          } else {\n            /* */\n            console.log(\"MarchingSquaresJS-isoBands: wtf\");\n            break;\n          }\n        }\n      } else if (d_x === 1) {\n        /* we came from left */\n        //console.log(\"we came from left and hit a non-existing cell \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          /* exit bottom */\n          if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else {\n            path.push([p + 1, q + cell.rightbottom]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else {\n          /* exit top */\n          if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else if (!(cval & Node1)) {\n            path.push([p + 1, q + cell.rightbottom]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          } else {\n            path.push([p + 1, q + cell.righttop]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 1;\n            break;\n          }\n        }\n      } else {\n        /* we came from the same cell */\n        console.log(\"MarchingSquaresJS-isoBands: we came from nowhere!\");\n        break;\n      }\n    } else {\n      /* try to find an entry into the regular grid again! */\n      cell = grid.cells[q][p];\n      cval = cell.cval_real;\n      //console.log(\"which is defined\");\n\n      if (d_x === -1) {\n        if (d_o === 0) {\n          /* try to go downwards */\n          if (\n            typeof grid.cells[q - 1] !== \"undefined\" &&\n            typeof grid.cells[q - 1][p] !== \"undefined\"\n          ) {\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else if (cval & Node3) {\n            /* proceed searching in x-direction */\n            //console.log(\"proceeding in x-direction!\");\n            path.push([p, q]);\n          } else {\n            /* we must have found an entry into the regular grid */\n            path.push([p + cell.bottomright, q]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        } else if (cval & Node0) {\n          /* proceed searchin in x-direction */\n          console.log(\"MarchingSquaresJS-isoBands: proceeding in x-direction!\");\n        } else {\n          /* we must have found an entry into the regular grid */\n          console.log(\n            \"MarchingSquaresJS-isoBands: found entry from top at \" + p + \",\" + q\n          );\n          break;\n        }\n      } else if (d_x === 1) {\n        if (d_o === 0) {\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        } else {\n          /* try to go upwards */\n          if (\n            typeof grid.cells[q + 1] !== \"undefined\" &&\n            typeof grid.cells[q + 1][p] !== \"undefined\"\n          ) {\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n          } else if (cval & Node1) {\n            path.push([p + 1, q + 1]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else {\n            /* found an entry point into regular grid! */\n            path.push([p + cell.topleft, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 0;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        }\n      } else if (d_y === -1) {\n        if (d_o === 1) {\n          /* try to go right */\n          if (typeof grid.cells[q][p + 1] !== \"undefined\") {\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else {\n            /* found entry into regular grid! */\n            path.push([p + 1, q + cell.righttop]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from top at \" + p + \",\" + q);\n            break;\n          }\n        } else {\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        }\n      } else if (d_y === 1) {\n        if (d_o === 0) {\n          //console.log(\"we came from bottom left and proceed to the left\");\n          /* try to go left */\n          if (typeof grid.cells[q][p - 1] !== \"undefined\") {\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n          } else if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n          } else {\n            /* found an entry point into regular grid! */\n            path.push([p, q + cell.leftbottom]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        } else {\n          //console.log(\"we came from bottom right and proceed to the right\");\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        }\n      } else {\n        console.log(\"MarchingSquaresJS-isoBands: where did we came from???\");\n        break;\n      }\n    }\n\n    p += d_x;\n    q += d_y;\n    //console.log(\"going on to  \" + p + \",\" + q + \" via \" + d_x + \" \" + d_y + \" \" + d_o);\n\n    if (p === i && q === j) {\n      /* bail out, once we've closed a circle path */\n      break;\n    }\n  }\n\n  //console.log(\"exit with \" + p + \",\" + q + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n  return { path: path, i: p, j: q, x: d_x, y: d_y, o: d_o };\n}\n\nfunction deleteEdge(cell, edgeIdx) {\n  delete cell.edges[edgeIdx];\n  for (var k = edgeIdx + 1; k < cell.edges.length; k++) {\n    cell.edges[k - 1] = cell.edges[k];\n  }\n  cell.edges.pop();\n}\n\nfunction getStartXY(cell) {\n  if (cell.edges.length > 0) {\n    var e = cell.edges[cell.edges.length - 1];\n    //console.log(\"starting with edge \" + e);\n    var cval = cell.cval_real;\n    switch (e) {\n      case 0:\n        if (cval & Node1) {\n          /* node 1 within range */\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          /* node 1 below or above threshold */\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        }\n      case 1:\n        if (cval & Node2) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 2:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        }\n      case 3:\n        if (cval & Node3) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 4:\n        if (cval & Node1) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 5:\n        if (cval & Node2) {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 6:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 7:\n        if (cval & Node3) {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 8:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        }\n      case 9:\n        if (cval & Node3) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 10:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        }\n      case 11:\n        if (cval & Node0) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 12:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 13:\n        if (cval & Node3) {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 14:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 15:\n        if (cval & Node0) {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 16:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        }\n      case 17:\n        if (cval & Node0) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 18:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 19:\n        if (cval & Node0) {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 20:\n        if (cval & Node0) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        }\n      case 21:\n        if (cval & Node1) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 22:\n        if (cval & Node0) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 23:\n        if (cval & Node1) {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      default:\n        console.log(\"MarchingSquaresJS-isoBands: edge index out of range!\");\n        console.log(cell);\n        break;\n    }\n  }\n\n  return null;\n}\n\nfunction getExitXY(cell, x, y, o) {\n  var e,\n    id_x,\n    d_x,\n    d_y,\n    cval = cell.cval;\n  var d_o;\n\n  switch (x) {\n    case -1:\n      switch (o) {\n        case 0:\n          e = isoBandEdgeRB[cval];\n          d_x = isoBandNextXRB[cval];\n          d_y = isoBandNextYRB[cval];\n          d_o = isoBandNextORB[cval];\n          break;\n        default:\n          e = isoBandEdgeRT[cval];\n          d_x = isoBandNextXRT[cval];\n          d_y = isoBandNextYRT[cval];\n          d_o = isoBandNextORT[cval];\n          break;\n      }\n      break;\n    case 1:\n      switch (o) {\n        case 0:\n          e = isoBandEdgeLB[cval];\n          d_x = isoBandNextXLB[cval];\n          d_y = isoBandNextYLB[cval];\n          d_o = isoBandNextOLB[cval];\n          break;\n        default:\n          e = isoBandEdgeLT[cval];\n          d_x = isoBandNextXLT[cval];\n          d_y = isoBandNextYLT[cval];\n          d_o = isoBandNextOLT[cval];\n          break;\n      }\n      break;\n    default:\n      switch (y) {\n        case -1:\n          switch (o) {\n            case 0:\n              e = isoBandEdgeTL[cval];\n              d_x = isoBandNextXTL[cval];\n              d_y = isoBandNextYTL[cval];\n              d_o = isoBandNextOTL[cval];\n              break;\n            default:\n              e = isoBandEdgeTR[cval];\n              d_x = isoBandNextXTR[cval];\n              d_y = isoBandNextYTR[cval];\n              d_o = isoBandNextOTR[cval];\n              break;\n          }\n          break;\n        case 1:\n          switch (o) {\n            case 0:\n              e = isoBandEdgeBL[cval];\n              d_x = isoBandNextXBL[cval];\n              d_y = isoBandNextYBL[cval];\n              d_o = isoBandNextOBL[cval];\n              break;\n            default:\n              e = isoBandEdgeBR[cval];\n              d_x = isoBandNextXBR[cval];\n              d_y = isoBandNextYBR[cval];\n              d_o = isoBandNextOBR[cval];\n              break;\n          }\n          break;\n      }\n      break;\n  }\n\n  id_x = cell.edges.indexOf(e);\n  if (typeof cell.edges[id_x] !== \"undefined\") {\n    deleteEdge(cell, id_x);\n  } else {\n    //console.log(\"wrong edges...\");\n    //console.log(x + \" \" + y + \" \" + o);\n    //console.log(cell);\n    return null;\n  }\n\n  cval = cell.cval_real;\n\n  switch (e) {\n    case 0:\n      if (cval & Node1) {\n        /* node 1 within range */\n        x = cell.topleft;\n        y = 1;\n      } else {\n        /* node 1 below or above threshold */\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 1:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 2:\n      if (cval & Node2) {\n        x = cell.topleft;\n        y = 1;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 3:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 4:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 5:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.topright;\n        y = 1;\n      }\n      break;\n    case 6:\n      if (cval & Node2) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 7:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = cell.topright;\n        y = 1;\n      }\n      break;\n    case 8:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.righttop;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 9:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 10:\n      if (cval & Node3) {\n        x = 1;\n        y = cell.righttop;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 11:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 12:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 13:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 1;\n        y = cell.rightbottom;\n      }\n      break;\n    case 14:\n      if (cval & Node3) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 15:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = 1;\n        y = cell.rightbottom;\n      }\n      break;\n    case 16:\n      if (cval & Node2) {\n        x = 0;\n        y = cell.leftbottom;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 17:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 18:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 19:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.bottomleft;\n        y = 0;\n      }\n      break;\n    case 20:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.leftbottom;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 21:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 22:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 23:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 0;\n        y = cell.lefttop;\n      }\n      break;\n    default:\n      console.log(\"MarchingSquaresJS-isoBands: edge index out of range!\");\n      console.log(cell);\n      return null;\n  }\n\n  if (\n    typeof x === \"undefined\" ||\n    typeof y === \"undefined\" ||\n    typeof d_x === \"undefined\" ||\n    typeof d_y === \"undefined\" ||\n    typeof d_o === \"undefined\"\n  ) {\n    console.log(\"MarchingSquaresJS-isoBands: undefined value!\");\n    console.log(cell);\n    console.log(x + \" \" + y + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n  }\n  return { p: [x, y], x: d_x, y: d_y, o: d_o };\n}\n\nfunction BandGrid2Areas(grid) {\n  var areas = [];\n  var area_idx = 0;\n\n  grid.cells.forEach(function (g, j) {\n    g.forEach(function (gg, i) {\n      if (typeof gg !== \"undefined\") {\n        var a = polygon_table[gg.cval](gg);\n        if (typeof a === \"object\" && isArray(a)) {\n          if (typeof a[0] === \"object\" && isArray(a[0])) {\n            if (typeof a[0][0] === \"object\" && isArray(a[0][0])) {\n              a.forEach(function (aa) {\n                aa.forEach(function (aaa) {\n                  aaa[0] += i;\n                  aaa[1] += j;\n                });\n                areas[area_idx++] = aa;\n              });\n            } else {\n              a.forEach(function (aa) {\n                aa[0] += i;\n                aa[1] += j;\n              });\n              areas[area_idx++] = a;\n            }\n          } else {\n            console.log(\n              \"MarchingSquaresJS-isoBands: bandcell polygon with malformed coordinates\"\n            );\n          }\n        } else {\n          console.log(\n            \"MarchingSquaresJS-isoBands: bandcell polygon with null coordinates\"\n          );\n        }\n      }\n    });\n  });\n\n  return areas;\n}\n\n/**\n * Takes a square or rectangular grid {@link FeatureCollection} of {@link Point} features with z-values and an array of\n * value breaks and generates filled contour isobands.\n *\n * @name isobands\n * @param {FeatureCollection<Point>} pointGrid input points - must be square or rectangular\n * @param {Array<number>} breaks where to draw contours\n * @param {Object} [options={}] options on output\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {Object} [options.commonProperties={}] GeoJSON properties passed to ALL isobands\n * @param {Array<Object>} [options.breaksProperties=[]] GeoJSON properties passed, in order, to the correspondent isoband (order defined by breaks)\n * @returns {FeatureCollection<MultiPolygon>} a FeatureCollection of {@link MultiPolygon} features representing isobands\n */\nfunction isobands(pointGrid, breaks, options) {\n  // Optional parameters\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var commonProperties = options.commonProperties || {};\n  var breaksProperties = options.breaksProperties || [];\n\n  // Validation\n  collectionOf(pointGrid, \"Point\", \"Input must contain Points\");\n  if (!breaks) throw new Error(\"breaks is required\");\n  if (!Array.isArray(breaks)) throw new Error(\"breaks is not an Array\");\n  if (!isObject(commonProperties))\n    throw new Error(\"commonProperties is not an Object\");\n  if (!Array.isArray(breaksProperties))\n    throw new Error(\"breaksProperties is not an Array\");\n\n  // Isoband methods\n  var matrix = gridToMatrix(pointGrid, { zProperty: zProperty, flip: true });\n  var contours = createContourLines(matrix, breaks, zProperty);\n  contours = rescaleContours(contours, matrix, pointGrid);\n\n  var multipolygons = contours.map(function (contour, index) {\n    if (breaksProperties[index] && !isObject(breaksProperties[index])) {\n      throw new Error(\"Each mappedProperty is required to be an Object\");\n    }\n    // collect all properties\n    var contourProperties = objectAssign(\n      {},\n      commonProperties,\n      breaksProperties[index]\n    );\n    contourProperties[zProperty] = contour[zProperty];\n    var multiP = multiPolygon(contour.groupedRings, contourProperties);\n    return multiP;\n  });\n\n  return featureCollection(multipolygons);\n}\n\n/**\n * Creates the contours lines (featuresCollection of polygon features) from the 2D data grid\n *\n * Marchingsquares process the grid data as a 3D representation of a function on a 2D plane, therefore it\n * assumes the points (x-y coordinates) are one 'unit' distance. The result of the IsoBands function needs to be\n * rescaled, with turfjs, to the original area and proportions on the map\n *\n * @private\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Array<number>} breaks Breaks\n * @param {string} [property='elevation'] Property\n * @returns {Array<any>} contours\n */\nfunction createContourLines(matrix, breaks, property) {\n  var contours = [];\n  for (var i = 1; i < breaks.length; i++) {\n    var lowerBand = +breaks[i - 1]; // make sure the breaks value is a number\n    var upperBand = +breaks[i];\n\n    var isobandsCoords = isoBands(matrix, lowerBand, upperBand - lowerBand);\n    // as per GeoJson rules for creating a Polygon, make sure the first element\n    // in the array of LinearRings represents the exterior ring (i.e. biggest area),\n    // and any subsequent elements represent interior rings (i.e. smaller area);\n    // this avoids rendering issues of the MultiPolygons on the map\n    var nestedRings = orderByArea(isobandsCoords);\n    var groupedRings = groupNestedRings(nestedRings);\n    var obj = {};\n    obj[\"groupedRings\"] = groupedRings;\n    obj[property] = lowerBand + \"-\" + upperBand;\n    contours.push(obj);\n  }\n  return contours;\n}\n\n/**\n * Transform isobands of 2D grid to polygons for the map\n *\n * @private\n * @param {Array<any>} contours Contours\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Object} points Points by Latitude\n * @returns {Array<any>} contours\n */\nfunction rescaleContours(contours, matrix, points) {\n  // get dimensions (on the map) of the original grid\n  var gridBbox = bbox(points); // [ minX, minY, maxX, maxY ]\n  var originalWidth = gridBbox[2] - gridBbox[0];\n  var originalHeigth = gridBbox[3] - gridBbox[1];\n\n  // get origin, which is the first point of the last row on the rectangular data on the map\n  var x0 = gridBbox[0];\n  var y0 = gridBbox[1];\n  // get number of cells per side\n  var matrixWidth = matrix[0].length - 1;\n  var matrixHeight = matrix.length - 1;\n  // calculate the scaling factor between matrix and rectangular grid on the map\n  var scaleX = originalWidth / matrixWidth;\n  var scaleY = originalHeigth / matrixHeight;\n\n  var resize = function (point) {\n    point[0] = point[0] * scaleX + x0;\n    point[1] = point[1] * scaleY + y0;\n  };\n\n  // resize and shift each point/line of the isobands\n  contours.forEach(function (contour) {\n    contour.groupedRings.forEach(function (lineRingSet) {\n      lineRingSet.forEach(function (lineRing) {\n        lineRing.forEach(resize);\n      });\n    });\n  });\n  return contours;\n}\n\n/*  utility functions */\n\n/**\n * Returns an array of coordinates (of LinearRings) in descending order by area\n *\n * @private\n * @param {Array<LineString>} ringsCoords array of closed LineString\n * @returns {Array} array of the input LineString ordered by area\n */\nfunction orderByArea(ringsCoords) {\n  var ringsWithArea = [];\n  var areas = [];\n  ringsCoords.forEach(function (coords) {\n    // var poly = polygon([points]);\n    var ringArea = area(polygon([coords]));\n    // create an array of areas value\n    areas.push(ringArea);\n    // associate each lineRing with its area\n    ringsWithArea.push({ ring: coords, area: ringArea });\n  });\n  areas.sort(function (a, b) {\n    // bigger --> smaller\n    return b - a;\n  });\n  // create a new array of linearRings coordinates ordered by their area\n  var orderedByArea = [];\n  areas.forEach(function (area) {\n    for (var lr = 0; lr < ringsWithArea.length; lr++) {\n      if (ringsWithArea[lr].area === area) {\n        orderedByArea.push(ringsWithArea[lr].ring);\n        ringsWithArea.splice(lr, 1);\n        break;\n      }\n    }\n  });\n  return orderedByArea;\n}\n\n/**\n * Returns an array of arrays of coordinates, each representing\n * a set of (coordinates of) nested LinearRings,\n * i.e. the first ring contains all the others\n *\n * @private\n * @param {Array} orderedLinearRings array of coordinates (of LinearRings) in descending order by area\n * @returns {Array<Array>} Array of coordinates of nested LinearRings\n */\nfunction groupNestedRings(orderedLinearRings) {\n  // create a list of the (coordinates of) LinearRings\n  var lrList = orderedLinearRings.map(function (lr) {\n    return { lrCoordinates: lr, grouped: false };\n  });\n  var groupedLinearRingsCoords = [];\n  while (!allGrouped(lrList)) {\n    for (var i = 0; i < lrList.length; i++) {\n      if (!lrList[i].grouped) {\n        // create new group starting with the larger not already grouped ring\n        var group = [];\n        group.push(lrList[i].lrCoordinates);\n        lrList[i].grouped = true;\n        var outerMostPoly = polygon([lrList[i].lrCoordinates]);\n        // group all the rings contained by the outermost ring\n        for (var j = i + 1; j < lrList.length; j++) {\n          if (!lrList[j].grouped) {\n            var lrPoly = polygon([lrList[j].lrCoordinates]);\n            if (isInside(lrPoly, outerMostPoly)) {\n              group.push(lrList[j].lrCoordinates);\n              lrList[j].grouped = true;\n            }\n          }\n        }\n        // insert the new group\n        groupedLinearRingsCoords.push(group);\n      }\n    }\n  }\n  return groupedLinearRingsCoords;\n}\n\n/**\n * @private\n * @param {Polygon} testPolygon polygon of interest\n * @param {Polygon} targetPolygon polygon you want to compare with\n * @returns {boolean} true if test-Polygon is inside target-Polygon\n */\nfunction isInside(testPolygon, targetPolygon) {\n  var points = explode(testPolygon);\n  for (var i = 0; i < points.features.length; i++) {\n    if (!booleanPointInPolygon(points.features[i], targetPolygon)) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * @private\n * @param {Array<Object>} list list of objects which might contain the 'group' attribute\n * @returns {boolean} true if all the objects in the list are marked as grouped\n */\nfunction allGrouped(list) {\n  for (var i = 0; i < list.length; i++) {\n    if (list[i].grouped === false) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isobands;\n","import booleanPointInPolygon from \"@turf/boolean-point-in-polygon\";\nimport { point } from \"@turf/helpers\";\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign#Polyfill\nfunction mathSign(x) {\n    return ((x > 0) - (x < 0) || +x);\n}\n/**\n * Returns the direction of the point q relative to the vector p1 -> p2.\n *\n * Implementation of geos::algorithm::CGAlgorithm::orientationIndex()\n * (same as geos::algorithm::CGAlgorithm::computeOrientation())\n *\n * @param {number[]} p1 - the origin point of the vector\n * @param {number[]} p2 - the final point of the vector\n * @param {number[]} q - the point to compute the direction to\n *\n * @returns {number} - 1 if q is ccw (left) from p1->p2,\n *    -1 if q is cw (right) from p1->p2,\n *     0 if q is colinear with p1->p2\n */\nexport function orientationIndex(p1, p2, q) {\n    var dx1 = p2[0] - p1[0], dy1 = p2[1] - p1[1], dx2 = q[0] - p2[0], dy2 = q[1] - p2[1];\n    return mathSign(dx1 * dy2 - dx2 * dy1);\n}\n/**\n * Checks if two envelopes are equal.\n *\n * The function assumes that the arguments are envelopes, i.e.: Rectangular polygon\n *\n * @param {Feature<Polygon>} env1 - Envelope\n * @param {Feature<Polygon>} env2 - Envelope\n * @returns {boolean} - True if the envelopes are equal\n */\nexport function envelopeIsEqual(env1, env2) {\n    var envX1 = env1.geometry.coordinates[0].map(function (c) { return c[0]; }), envY1 = env1.geometry.coordinates[0].map(function (c) { return c[1]; }), envX2 = env2.geometry.coordinates[0].map(function (c) { return c[0]; }), envY2 = env2.geometry.coordinates[0].map(function (c) { return c[1]; });\n    return (Math.max.apply(null, envX1) === Math.max.apply(null, envX2) &&\n        Math.max.apply(null, envY1) === Math.max.apply(null, envY2) &&\n        Math.min.apply(null, envX1) === Math.min.apply(null, envX2) &&\n        Math.min.apply(null, envY1) === Math.min.apply(null, envY2));\n}\n/**\n * Check if a envelope is contained in other one.\n *\n * The function assumes that the arguments are envelopes, i.e.: Convex polygon\n * XXX: Envelopes are rectangular, checking if a point is inside a rectangule is something easy,\n * this could be further improved.\n *\n * @param {Feature<Polygon>} self - Envelope\n * @param {Feature<Polygon>} env - Envelope\n * @returns {boolean} - True if env is contained in self\n */\nexport function envelopeContains(self, env) {\n    return env.geometry.coordinates[0].every(function (c) {\n        return booleanPointInPolygon(point(c), self);\n    });\n}\n/**\n * Checks if two coordinates are equal.\n *\n * @param {number[]} coord1 - First coordinate\n * @param {number[]} coord2 - Second coordinate\n * @returns {boolean} - True if coordinates are equal\n */\nexport function coordinatesEqual(coord1, coord2) {\n    return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n}\n","import { orientationIndex } from \"./util.js\";\n/**\n * Node\n */\nvar Node = /** @class */ (function () {\n    function Node(coordinates) {\n        this.id = Node.buildId(coordinates);\n        this.coordinates = coordinates; //< {Number[]}\n        this.innerEdges = []; //< {Edge[]}\n        // We wil store to (out) edges in an CCW order as geos::planargraph::DirectedEdgeStar does\n        this.outerEdges = []; //< {Edge[]}\n        this.outerEdgesSorted = false; //< {Boolean} flag that stores if the outer Edges had been sorted\n    }\n    Node.buildId = function (coordinates) {\n        return coordinates.join(\",\");\n    };\n    Node.prototype.removeInnerEdge = function (edge) {\n        this.innerEdges = this.innerEdges.filter(function (e) { return e.from.id !== edge.from.id; });\n    };\n    Node.prototype.removeOuterEdge = function (edge) {\n        this.outerEdges = this.outerEdges.filter(function (e) { return e.to.id !== edge.to.id; });\n    };\n    /**\n     * Outer edges are stored CCW order.\n     *\n     * @memberof Node\n     * @param {Edge} edge - Edge to add as an outerEdge.\n     */\n    Node.prototype.addOuterEdge = function (edge) {\n        this.outerEdges.push(edge);\n        this.outerEdgesSorted = false;\n    };\n    /**\n     * Sorts outer edges in CCW way.\n     *\n     * @memberof Node\n     * @private\n     */\n    Node.prototype.sortOuterEdges = function () {\n        var _this = this;\n        if (!this.outerEdgesSorted) {\n            //this.outerEdges.sort((a, b) => a.compareTo(b));\n            // Using this comparator in order to be deterministic\n            this.outerEdges.sort(function (a, b) {\n                var aNode = a.to, bNode = b.to;\n                if (aNode.coordinates[0] - _this.coordinates[0] >= 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] < 0)\n                    return 1;\n                if (aNode.coordinates[0] - _this.coordinates[0] < 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] >= 0)\n                    return -1;\n                if (aNode.coordinates[0] - _this.coordinates[0] === 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] === 0) {\n                    if (aNode.coordinates[1] - _this.coordinates[1] >= 0 ||\n                        bNode.coordinates[1] - _this.coordinates[1] >= 0)\n                        return aNode.coordinates[1] - bNode.coordinates[1];\n                    return bNode.coordinates[1] - aNode.coordinates[1];\n                }\n                var det = orientationIndex(_this.coordinates, aNode.coordinates, bNode.coordinates);\n                if (det < 0)\n                    return 1;\n                if (det > 0)\n                    return -1;\n                var d1 = Math.pow(aNode.coordinates[0] - _this.coordinates[0], 2) +\n                    Math.pow(aNode.coordinates[1] - _this.coordinates[1], 2), d2 = Math.pow(bNode.coordinates[0] - _this.coordinates[0], 2) +\n                    Math.pow(bNode.coordinates[1] - _this.coordinates[1], 2);\n                return d1 - d2;\n            });\n            this.outerEdgesSorted = true;\n        }\n    };\n    /**\n     * Retrieves outer edges.\n     *\n     * They are sorted if they aren't in the CCW order.\n     *\n     * @memberof Node\n     * @returns {Edge[]} - List of outer edges sorted in a CCW order.\n     */\n    Node.prototype.getOuterEdges = function () {\n        this.sortOuterEdges();\n        return this.outerEdges;\n    };\n    Node.prototype.getOuterEdge = function (i) {\n        this.sortOuterEdges();\n        return this.outerEdges[i];\n    };\n    Node.prototype.addInnerEdge = function (edge) {\n        this.innerEdges.push(edge);\n    };\n    return Node;\n}());\nexport default Node;\n","import { lineString } from \"@turf/helpers\";\nimport { orientationIndex } from \"./util.js\";\n/**\n * This class is inspired by GEOS's geos::operation::polygonize::PolygonizeDirectedEdge\n */\nvar Edge = /** @class */ (function () {\n    /**\n     * @param {Node} from - start node of the Edge\n     * @param {Node} to - end node of the edge\n     */\n    function Edge(from, to) {\n        this.from = from; //< start\n        this.to = to; //< End\n        this.next = undefined; //< The edge to be computed after\n        this.label = undefined; //< Used in order to detect Cut Edges (Bridges)\n        this.symetric = undefined; //< The symetric edge of this\n        this.ring = undefined; //< EdgeRing in which the Edge is\n        this.from.addOuterEdge(this);\n        this.to.addInnerEdge(this);\n    }\n    /**\n     * Creates or get the symetric Edge.\n     *\n     * @returns {Edge} - Symetric Edge.\n     */\n    Edge.prototype.getSymetric = function () {\n        if (!this.symetric) {\n            this.symetric = new Edge(this.to, this.from);\n            this.symetric.symetric = this;\n        }\n        return this.symetric;\n    };\n    /**\n     * Removes edge from from and to nodes.\n     */\n    Edge.prototype.deleteEdge = function () {\n        this.from.removeOuterEdge(this);\n        this.to.removeInnerEdge(this);\n    };\n    /**\n     * Compares Edge equallity.\n     *\n     * An edge is equal to another, if the from and to nodes are the same.\n     *\n     * @param {Edge} edge - Another Edge\n     * @returns {boolean} - True if Edges are equal, False otherwise\n     */\n    Edge.prototype.isEqual = function (edge) {\n        return this.from.id === edge.from.id && this.to.id === edge.to.id;\n    };\n    Edge.prototype.toString = function () {\n        return \"Edge { \" + this.from.id + \" -> \" + this.to.id + \" }\";\n    };\n    /**\n     * Returns a LineString representation of the Edge\n     *\n     * @returns {Feature<LineString>} - LineString representation of the Edge\n     */\n    Edge.prototype.toLineString = function () {\n        return lineString([this.from.coordinates, this.to.coordinates]);\n    };\n    /**\n     * Comparator of two edges.\n     *\n     * Implementation of geos::planargraph::DirectedEdge::compareTo.\n     *\n     * @param {Edge} edge - Another edge to compare with this one\n     * @returns {number} -1 if this Edge has a greater angle with the positive x-axis than b,\n     *          0 if the Edges are colinear,\n     *          1 otherwise\n     */\n    Edge.prototype.compareTo = function (edge) {\n        return orientationIndex(edge.from.coordinates, edge.to.coordinates, this.to.coordinates);\n    };\n    return Edge;\n}());\nexport default Edge;\n","import { orientationIndex, envelopeIsEqual, envelopeContains, coordinatesEqual, } from \"./util.js\";\nimport { multiPoint, polygon, point, } from \"@turf/helpers\";\nimport envelope from \"@turf/envelope\";\nimport booleanPointInPolygon from \"@turf/boolean-point-in-polygon\";\n/**\n * Ring of edges which form a polygon.\n *\n * The ring may be either an outer shell or a hole.\n *\n * This class is inspired in GEOS's geos::operation::polygonize::EdgeRing\n */\nvar EdgeRing = /** @class */ (function () {\n    function EdgeRing() {\n        this.edges = [];\n        this.polygon = undefined; //< Caches Polygon representation\n        this.envelope = undefined; //< Caches Envelope representation\n    }\n    /**\n     * Add an edge to the ring, inserting it in the last position.\n     *\n     * @memberof EdgeRing\n     * @param {Edge} edge - Edge to be inserted\n     */\n    EdgeRing.prototype.push = function (edge) {\n        this.edges.push(edge);\n        this.polygon = this.envelope = undefined;\n    };\n    /**\n     * Get Edge.\n     *\n     * @memberof EdgeRing\n     * @param {number} i - Index\n     * @returns {Edge} - Edge in the i position\n     */\n    EdgeRing.prototype.get = function (i) {\n        return this.edges[i];\n    };\n    Object.defineProperty(EdgeRing.prototype, \"length\", {\n        /**\n         * Getter of length property.\n         *\n         * @memberof EdgeRing\n         * @returns {number} - Length of the edge ring.\n         */\n        get: function () {\n            return this.edges.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Similar to Array.prototype.forEach for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.forEach\n     */\n    EdgeRing.prototype.forEach = function (f) {\n        this.edges.forEach(f);\n    };\n    /**\n     * Similar to Array.prototype.map for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.map\n     * @returns {Array} - The mapped values in the function\n     */\n    EdgeRing.prototype.map = function (f) {\n        return this.edges.map(f);\n    };\n    /**\n     * Similar to Array.prototype.some for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.some\n     * @returns {boolean} - True if an Edge check the condition\n     */\n    EdgeRing.prototype.some = function (f) {\n        return this.edges.some(f);\n    };\n    /**\n     * Check if the ring is valid in geomtry terms.\n     *\n     * A ring must have either 0 or 4 or more points. The first and the last must be\n     * equal (in 2D)\n     * geos::geom::LinearRing::validateConstruction\n     *\n     * @memberof EdgeRing\n     * @returns {boolean} - Validity of the EdgeRing\n     */\n    EdgeRing.prototype.isValid = function () {\n        // TODO: stub\n        return true;\n    };\n    /**\n     * Tests whether this ring is a hole.\n     *\n     * A ring is a hole if it is oriented counter-clockwise.\n     * Similar implementation of geos::algorithm::CGAlgorithms::isCCW\n     *\n     * @memberof EdgeRing\n     * @returns {boolean} - true: if it is a hole\n     */\n    EdgeRing.prototype.isHole = function () {\n        var _this = this;\n        // XXX: Assuming Ring is valid\n        // Find highest point\n        var hiIndex = this.edges.reduce(function (high, edge, i) {\n            if (edge.from.coordinates[1] > _this.edges[high].from.coordinates[1])\n                high = i;\n            return high;\n        }, 0), iPrev = (hiIndex === 0 ? this.length : hiIndex) - 1, iNext = (hiIndex + 1) % this.length, disc = orientationIndex(this.edges[iPrev].from.coordinates, this.edges[hiIndex].from.coordinates, this.edges[iNext].from.coordinates);\n        if (disc === 0)\n            return (this.edges[iPrev].from.coordinates[0] >\n                this.edges[iNext].from.coordinates[0]);\n        return disc > 0;\n    };\n    /**\n     * Creates a MultiPoint representing the EdgeRing (discarts edges directions).\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<MultiPoint>} - Multipoint representation of the EdgeRing\n     */\n    EdgeRing.prototype.toMultiPoint = function () {\n        return multiPoint(this.edges.map(function (edge) { return edge.from.coordinates; }));\n    };\n    /**\n     * Creates a Polygon representing the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<Polygon>} - Polygon representation of the Edge Ring\n     */\n    EdgeRing.prototype.toPolygon = function () {\n        if (this.polygon)\n            return this.polygon;\n        var coordinates = this.edges.map(function (edge) { return edge.from.coordinates; });\n        coordinates.push(this.edges[0].from.coordinates);\n        return (this.polygon = polygon([coordinates]));\n    };\n    /**\n     * Calculates the envelope of the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<Polygon>} - envelope\n     */\n    EdgeRing.prototype.getEnvelope = function () {\n        if (this.envelope)\n            return this.envelope;\n        return (this.envelope = envelope(this.toPolygon()));\n    };\n    /**\n     * `geos::operation::polygonize::EdgeRing::findEdgeRingContaining`\n     *\n     * @param {EdgeRing} testEdgeRing - EdgeRing to look in the list\n     * @param {EdgeRing[]} shellList - List of EdgeRing in which to search\n     *\n     * @returns {EdgeRing} - EdgeRing which contains the testEdgeRing\n     */\n    EdgeRing.findEdgeRingContaining = function (testEdgeRing, shellList) {\n        var testEnvelope = testEdgeRing.getEnvelope();\n        var minEnvelope, minShell;\n        shellList.forEach(function (shell) {\n            var tryEnvelope = shell.getEnvelope();\n            if (minShell)\n                minEnvelope = minShell.getEnvelope();\n            // the hole envelope cannot equal the shell envelope\n            if (envelopeIsEqual(tryEnvelope, testEnvelope))\n                return;\n            if (envelopeContains(tryEnvelope, testEnvelope)) {\n                var testEdgeRingCoordinates = testEdgeRing.map(function (edge) { return edge.from.coordinates; });\n                var testPoint = void 0;\n                var _loop_1 = function (pt) {\n                    if (!shell.some(function (edge) { return coordinatesEqual(pt, edge.from.coordinates); })) {\n                        testPoint = pt;\n                    }\n                };\n                for (var _i = 0, testEdgeRingCoordinates_1 = testEdgeRingCoordinates; _i < testEdgeRingCoordinates_1.length; _i++) {\n                    var pt = testEdgeRingCoordinates_1[_i];\n                    _loop_1(pt);\n                }\n                if (testPoint && shell.inside(point(testPoint))) {\n                    if (!minShell || envelopeContains(minEnvelope, tryEnvelope))\n                        minShell = shell;\n                }\n            }\n        });\n        return minShell;\n    };\n    /**\n     * Checks if the point is inside the edgeRing\n     *\n     * @param {Feature<Point>} pt - Point to check if it is inside the edgeRing\n     * @returns {boolean} - True if it is inside, False otherwise\n     */\n    EdgeRing.prototype.inside = function (pt) {\n        return booleanPointInPolygon(pt, this.toPolygon());\n    };\n    return EdgeRing;\n}());\nexport default EdgeRing;\n","import bbox from '@turf/bbox';\nimport bboxPolygon from '@turf/bbox-polygon';\n\n/**\n * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.\n *\n * @name envelope\n * @param {GeoJSON} geojson input features\n * @returns {Feature<Polygon>} a rectangular Polygon feature that encompasses all vertices\n * @example\n * var features = turf.featureCollection([\n *   turf.point([-75.343, 39.984], {\"name\": \"Location A\"}),\n *   turf.point([-75.833, 39.284], {\"name\": \"Location B\"}),\n *   turf.point([-75.534, 39.123], {\"name\": \"Location C\"})\n * ]);\n *\n * var enveloped = turf.envelope(features);\n *\n * //addToMap\n * var addToMap = [features, enveloped];\n */\nfunction envelope(geojson) {\n  return bboxPolygon(bbox(geojson));\n}\n\nexport default envelope;\n","import { polygon } from \"@turf/helpers\";\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature<Polygon>} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */\nexport default function bboxPolygon(bbox, options) {\n    if (options === void 0) { options = {}; }\n    // Convert BBox positions to Numbers\n    // No performance loss for including Number()\n    // https://github.com/Turfjs/turf/issues/1119\n    var west = Number(bbox[0]);\n    var south = Number(bbox[1]);\n    var east = Number(bbox[2]);\n    var north = Number(bbox[3]);\n    if (bbox.length === 6) {\n        throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n    }\n    var lowLeft = [west, south];\n    var topLeft = [west, north];\n    var topRight = [east, north];\n    var lowRight = [east, south];\n    return polygon([[lowLeft, lowRight, topRight, topLeft, lowLeft]], options.properties, { bbox: bbox, id: options.id });\n}\n","import bbox from '@turf/bbox';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport distance from '@turf/distance';\nimport scale from '@turf/transform-scale';\nimport cleanCoords from '@turf/clean-coords';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport { getCoord, getType, getGeom } from '@turf/invariant';\nimport { isObject, featureCollection, isNumber, point, feature, lineString } from '@turf/helpers';\n\n// javascript-astar 0.4.1\n// http://github.com/bgrins/javascript-astar\n// Freely distributable under the MIT License.\n// Implements the astar search algorithm in javascript using a Binary Heap.\n// Includes Binary Heap (with modifications) from Marijn Haverbeke.\n// http://eloquentjavascript.net/appendix2.html\n\nfunction pathTo(node) {\n  var curr = node,\n    path = [];\n  while (curr.parent) {\n    path.unshift(curr);\n    curr = curr.parent;\n  }\n  return path;\n}\n\nfunction getHeap() {\n  return new BinaryHeap(function (node) {\n    return node.f;\n  });\n}\n\n/**\n * Astar\n * @private\n */\nvar astar = {\n  /**\n   * Perform an A* Search on a graph given a start and end node.\n   *\n   * @private\n   * @memberof astar\n   * @param {Graph} graph Graph\n   * @param {GridNode} start Start\n   * @param {GridNode} end End\n   * @param {Object} [options] Options\n   * @param {bool} [options.closest] Specifies whether to return the path to the closest node if the target is unreachable.\n   * @param {Function} [options.heuristic] Heuristic function (see astar.heuristics).\n   * @returns {Object} Search\n   */\n  search: function (graph, start, end, options) {\n    graph.cleanDirty();\n    options = options || {};\n    var heuristic = options.heuristic || astar.heuristics.manhattan,\n      closest = options.closest || false;\n\n    var openHeap = getHeap(),\n      closestNode = start; // set the start node to be the closest if required\n\n    start.h = heuristic(start, end);\n\n    openHeap.push(start);\n\n    while (openHeap.size() > 0) {\n      // Grab the lowest f(x) to process next.  Heap keeps this sorted for us.\n      var currentNode = openHeap.pop();\n\n      // End case -- result has been found, return the traced path.\n      if (currentNode === end) {\n        return pathTo(currentNode);\n      }\n\n      // Normal case -- move currentNode from open to closed, process each of its neighbors.\n      currentNode.closed = true;\n\n      // Find all neighbors for the current node.\n      var neighbors = graph.neighbors(currentNode);\n\n      for (var i = 0, il = neighbors.length; i < il; ++i) {\n        var neighbor = neighbors[i];\n\n        if (neighbor.closed || neighbor.isWall()) {\n          // Not a valid node to process, skip to next neighbor.\n          continue;\n        }\n\n        // The g score is the shortest distance from start to current node.\n        // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet.\n        var gScore = currentNode.g + neighbor.getCost(currentNode),\n          beenVisited = neighbor.visited;\n\n        if (!beenVisited || gScore < neighbor.g) {\n          // Found an optimal (so far) path to this node.  Take score for node to see how good it is.\n          neighbor.visited = true;\n          neighbor.parent = currentNode;\n          neighbor.h = neighbor.h || heuristic(neighbor, end);\n          neighbor.g = gScore;\n          neighbor.f = neighbor.g + neighbor.h;\n          graph.markDirty(neighbor);\n          if (closest) {\n            // If the neighbour is closer than the current closestNode or if it's equally close but has\n            // a cheaper path than the current closest node then it becomes the closest node\n            if (\n              neighbor.h < closestNode.h ||\n              (neighbor.h === closestNode.h && neighbor.g < closestNode.g)\n            ) {\n              closestNode = neighbor;\n            }\n          }\n\n          if (!beenVisited) {\n            // Pushing to heap will put it in proper place based on the 'f' value.\n            openHeap.push(neighbor);\n          } else {\n            // Already seen the node, but since it has been rescored we need to reorder it in the heap\n            openHeap.rescoreElement(neighbor);\n          }\n        }\n      }\n    }\n\n    if (closest) {\n      return pathTo(closestNode);\n    }\n\n    // No result was found - empty array signifies failure to find path.\n    return [];\n  },\n  // See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html\n  heuristics: {\n    manhattan: function (pos0, pos1) {\n      var d1 = Math.abs(pos1.x - pos0.x);\n      var d2 = Math.abs(pos1.y - pos0.y);\n      return d1 + d2;\n    },\n    diagonal: function (pos0, pos1) {\n      var D = 1;\n      var D2 = Math.sqrt(2);\n      var d1 = Math.abs(pos1.x - pos0.x);\n      var d2 = Math.abs(pos1.y - pos0.y);\n      return D * (d1 + d2) + (D2 - 2 * D) * Math.min(d1, d2);\n    },\n  },\n  cleanNode: function (node) {\n    node.f = 0;\n    node.g = 0;\n    node.h = 0;\n    node.visited = false;\n    node.closed = false;\n    node.parent = null;\n  },\n};\n\n/**\n * A graph memory structure\n *\n * @private\n * @param {Array} gridIn 2D array of input weights\n * @param {Object} [options] Options\n * @param {boolean} [options.diagonal] Specifies whether diagonal moves are allowed\n * @returns {void} Graph\n */\nfunction Graph(gridIn, options) {\n  options = options || {};\n  this.nodes = [];\n  this.diagonal = !!options.diagonal;\n  this.grid = [];\n  for (var x = 0; x < gridIn.length; x++) {\n    this.grid[x] = [];\n\n    for (var y = 0, row = gridIn[x]; y < row.length; y++) {\n      var node = new GridNode(x, y, row[y]);\n      this.grid[x][y] = node;\n      this.nodes.push(node);\n    }\n  }\n  this.init();\n}\n\nGraph.prototype.init = function () {\n  this.dirtyNodes = [];\n  for (var i = 0; i < this.nodes.length; i++) {\n    astar.cleanNode(this.nodes[i]);\n  }\n};\n\nGraph.prototype.cleanDirty = function () {\n  for (var i = 0; i < this.dirtyNodes.length; i++) {\n    astar.cleanNode(this.dirtyNodes[i]);\n  }\n  this.dirtyNodes = [];\n};\n\nGraph.prototype.markDirty = function (node) {\n  this.dirtyNodes.push(node);\n};\n\nGraph.prototype.neighbors = function (node) {\n  var ret = [],\n    x = node.x,\n    y = node.y,\n    grid = this.grid;\n\n  // West\n  if (grid[x - 1] && grid[x - 1][y]) {\n    ret.push(grid[x - 1][y]);\n  }\n\n  // East\n  if (grid[x + 1] && grid[x + 1][y]) {\n    ret.push(grid[x + 1][y]);\n  }\n\n  // South\n  if (grid[x] && grid[x][y - 1]) {\n    ret.push(grid[x][y - 1]);\n  }\n\n  // North\n  if (grid[x] && grid[x][y + 1]) {\n    ret.push(grid[x][y + 1]);\n  }\n\n  if (this.diagonal) {\n    // Southwest\n    if (grid[x - 1] && grid[x - 1][y - 1]) {\n      ret.push(grid[x - 1][y - 1]);\n    }\n\n    // Southeast\n    if (grid[x + 1] && grid[x + 1][y - 1]) {\n      ret.push(grid[x + 1][y - 1]);\n    }\n\n    // Northwest\n    if (grid[x - 1] && grid[x - 1][y + 1]) {\n      ret.push(grid[x - 1][y + 1]);\n    }\n\n    // Northeast\n    if (grid[x + 1] && grid[x + 1][y + 1]) {\n      ret.push(grid[x + 1][y + 1]);\n    }\n  }\n\n  return ret;\n};\n\nGraph.prototype.toString = function () {\n  var graphString = [],\n    nodes = this.grid, // when using grid\n    rowDebug,\n    row,\n    y,\n    l;\n  for (var x = 0, len = nodes.length; x < len; x++) {\n    rowDebug = [];\n    row = nodes[x];\n    for (y = 0, l = row.length; y < l; y++) {\n      rowDebug.push(row[y].weight);\n    }\n    graphString.push(rowDebug.join(\" \"));\n  }\n  return graphString.join(\"\\n\");\n};\n\nfunction GridNode(x, y, weight) {\n  this.x = x;\n  this.y = y;\n  this.weight = weight;\n}\n\nGridNode.prototype.toString = function () {\n  return \"[\" + this.x + \" \" + this.y + \"]\";\n};\n\nGridNode.prototype.getCost = function (fromNeighbor) {\n  // Take diagonal weight into consideration.\n  if (fromNeighbor && fromNeighbor.x !== this.x && fromNeighbor.y !== this.y) {\n    return this.weight * 1.41421;\n  }\n  return this.weight;\n};\n\nGridNode.prototype.isWall = function () {\n  return this.weight === 0;\n};\n\nfunction BinaryHeap(scoreFunction) {\n  this.content = [];\n  this.scoreFunction = scoreFunction;\n}\n\nBinaryHeap.prototype = {\n  push: function (element) {\n    // Add the new element to the end of the array.\n    this.content.push(element);\n\n    // Allow it to sink down.\n    this.sinkDown(this.content.length - 1);\n  },\n  pop: function () {\n    // Store the first element so we can return it later.\n    var result = this.content[0];\n    // Get the element at the end of the array.\n    var end = this.content.pop();\n    // If there are any elements left, put the end element at the\n    // start, and let it bubble up.\n    if (this.content.length > 0) {\n      this.content[0] = end;\n      this.bubbleUp(0);\n    }\n    return result;\n  },\n  remove: function (node) {\n    var i = this.content.indexOf(node);\n\n    // When it is found, the process seen in 'pop' is repeated\n    // to fill up the hole.\n    var end = this.content.pop();\n\n    if (i !== this.content.length - 1) {\n      this.content[i] = end;\n\n      if (this.scoreFunction(end) < this.scoreFunction(node)) {\n        this.sinkDown(i);\n      } else {\n        this.bubbleUp(i);\n      }\n    }\n  },\n  size: function () {\n    return this.content.length;\n  },\n  rescoreElement: function (node) {\n    this.sinkDown(this.content.indexOf(node));\n  },\n  sinkDown: function (n) {\n    // Fetch the element that has to be sunk.\n    var element = this.content[n];\n\n    // When at 0, an element can not sink any further.\n    while (n > 0) {\n      // Compute the parent element's index, and fetch it.\n      var parentN = ((n + 1) >> 1) - 1,\n        parent = this.content[parentN];\n      // Swap the elements if the parent is greater.\n      if (this.scoreFunction(element) < this.scoreFunction(parent)) {\n        this.content[parentN] = element;\n        this.content[n] = parent;\n        // Update 'n' to continue at the new position.\n        n = parentN;\n        // Found a parent that is less, no need to sink any further.\n      } else {\n        break;\n      }\n    }\n  },\n  bubbleUp: function (n) {\n    // Look up the target element and its score.\n    var length = this.content.length,\n      element = this.content[n],\n      elemScore = this.scoreFunction(element);\n\n    while (true) {\n      // Compute the indices of the child elements.\n      var child2N = (n + 1) << 1,\n        child1N = child2N - 1;\n      // This is used to store the new position of the element, if any.\n      var swap = null,\n        child1Score;\n      // If the first child exists (is inside the array)...\n      if (child1N < length) {\n        // Look it up and compute its score.\n        var child1 = this.content[child1N];\n        child1Score = this.scoreFunction(child1);\n\n        // If the score is less than our element's, we need to swap.\n        if (child1Score < elemScore) {\n          swap = child1N;\n        }\n      }\n\n      // Do the same checks for the other child.\n      if (child2N < length) {\n        var child2 = this.content[child2N],\n          child2Score = this.scoreFunction(child2);\n        if (child2Score < (swap === null ? elemScore : child1Score)) {\n          swap = child2N;\n        }\n      }\n\n      // If the element needs to be moved, swap it, and continue.\n      if (swap !== null) {\n        this.content[n] = this.content[swap];\n        this.content[swap] = element;\n        n = swap;\n        // Otherwise, we are done.\n      } else {\n        break;\n      }\n    }\n  },\n};\n\n/**\n * Returns the shortest {@link LineString|path} from {@link Point|start} to {@link Point|end} without colliding with\n * any {@link Feature} in {@link FeatureCollection<Polygon>| obstacles}\n *\n * @name shortestPath\n * @param {Coord} start point\n * @param {Coord} end point\n * @param {Object} [options={}] optional parameters\n * @param {Geometry|Feature|FeatureCollection<Polygon>} [options.obstacles] areas which path cannot travel\n * @param {number} [options.minDistance] minimum distance between shortest path and obstacles\n * @param {string} [options.units='kilometers'] unit in which resolution & minimum distance will be expressed in; it can be degrees, radians, miles, kilometers, ...\n * @param {number} [options.resolution=100] distance between matrix points on which the path will be calculated\n * @returns {Feature<LineString>} shortest path between start and end\n * @example\n * var start = [-5, -6];\n * var end = [9, -6];\n * var options = {\n *   obstacles: turf.polygon([[[0, -7], [5, -7], [5, -3], [0, -3], [0, -7]]])\n * };\n *\n * var path = turf.shortestPath(start, end, options);\n *\n * //addToMap\n * var addToMap = [start, end, options.obstacles, path];\n */\nfunction shortestPath(start, end, options) {\n  // Optional parameters\n  options = options || {};\n  if (!isObject(options)) throw new Error(\"options is invalid\");\n  var resolution = options.resolution;\n  var minDistance = options.minDistance;\n  var obstacles = options.obstacles || featureCollection([]);\n\n  // validation\n  if (!start) throw new Error(\"start is required\");\n  if (!end) throw new Error(\"end is required\");\n  if ((resolution && !isNumber(resolution)) || resolution <= 0)\n    throw new Error(\"options.resolution must be a number, greater than 0\");\n  if (minDistance)\n    throw new Error(\"options.minDistance is not yet implemented\");\n\n  // Normalize Inputs\n  var startCoord = getCoord(start);\n  var endCoord = getCoord(end);\n  start = point(startCoord);\n  end = point(endCoord);\n\n  // Handle obstacles\n  switch (getType(obstacles)) {\n    case \"FeatureCollection\":\n      if (obstacles.features.length === 0)\n        return lineString([startCoord, endCoord]);\n      break;\n    case \"Polygon\":\n      obstacles = featureCollection([feature(getGeom(obstacles))]);\n      break;\n    default:\n      throw new Error(\"invalid obstacles\");\n  }\n\n  // define path grid area\n  var collection = obstacles;\n  collection.features.push(start);\n  collection.features.push(end);\n  var box = bbox(scale(bboxPolygon(bbox(collection)), 1.15)); // extend 15%\n  if (!resolution) {\n    var width = distance([box[0], box[1]], [box[2], box[1]], options);\n    resolution = width / 100;\n  }\n  collection.features.pop();\n  collection.features.pop();\n\n  var west = box[0];\n  var south = box[1];\n  var east = box[2];\n  var north = box[3];\n\n  var xFraction = resolution / distance([west, south], [east, south], options);\n  var cellWidth = xFraction * (east - west);\n  var yFraction = resolution / distance([west, south], [west, north], options);\n  var cellHeight = yFraction * (north - south);\n\n  var bboxHorizontalSide = east - west;\n  var bboxVerticalSide = north - south;\n  var columns = Math.floor(bboxHorizontalSide / cellWidth);\n  var rows = Math.floor(bboxVerticalSide / cellHeight);\n  // adjust origin of the grid\n  var deltaX = (bboxHorizontalSide - columns * cellWidth) / 2;\n  var deltaY = (bboxVerticalSide - rows * cellHeight) / 2;\n\n  // loop through points only once to speed up process\n  // define matrix grid for A-star algorithm\n  var pointMatrix = [];\n  var matrix = [];\n\n  var closestToStart = [];\n  var closestToEnd = [];\n  var minDistStart = Infinity;\n  var minDistEnd = Infinity;\n  var currentY = north - deltaY;\n  var r = 0;\n  while (currentY >= south) {\n    // var currentY = south + deltaY;\n    var matrixRow = [];\n    var pointMatrixRow = [];\n    var currentX = west + deltaX;\n    var c = 0;\n    while (currentX <= east) {\n      var pt = point([currentX, currentY]);\n      var isInsideObstacle = isInside(pt, obstacles);\n      // feed obstacles matrix\n      matrixRow.push(isInsideObstacle ? 0 : 1); // with javascript-astar\n      // matrixRow.push(isInsideObstacle ? 1 : 0); // with astar-andrea\n      // map point's coords\n      pointMatrixRow.push(currentX + \"|\" + currentY);\n      // set closest points\n      var distStart = distance(pt, start);\n      // if (distStart < minDistStart) {\n      if (!isInsideObstacle && distStart < minDistStart) {\n        minDistStart = distStart;\n        closestToStart = { x: c, y: r };\n      }\n      var distEnd = distance(pt, end);\n      // if (distEnd < minDistEnd) {\n      if (!isInsideObstacle && distEnd < minDistEnd) {\n        minDistEnd = distEnd;\n        closestToEnd = { x: c, y: r };\n      }\n      currentX += cellWidth;\n      c++;\n    }\n    matrix.push(matrixRow);\n    pointMatrix.push(pointMatrixRow);\n    currentY -= cellHeight;\n    r++;\n  }\n\n  // find path on matrix grid\n\n  // javascript-astar ----------------------\n  var graph = new Graph(matrix, { diagonal: true });\n  var startOnMatrix = graph.grid[closestToStart.y][closestToStart.x];\n  var endOnMatrix = graph.grid[closestToEnd.y][closestToEnd.x];\n  var result = astar.search(graph, startOnMatrix, endOnMatrix);\n\n  var path = [startCoord];\n  result.forEach(function (coord) {\n    var coords = pointMatrix[coord.x][coord.y].split(\"|\");\n    path.push([+coords[0], +coords[1]]); // make sure coords are numbers\n  });\n  path.push(endCoord);\n  // ---------------------------------------\n\n  // astar-andrea ------------------------\n  // var result = aStar(matrix, [closestToStart.x, closestToStart.y], [closestToEnd.x, closestToEnd.y], 'DiagonalFree');\n  // var path = [start.geometry.coordinates];\n  // result.forEach(function (coord) {\n  //     var coords = pointMatrix[coord[1]][coord[0]].split('|');\n  //     path.push([+coords[0], +coords[1]]); // make sure coords are numbers\n  // });\n  // path.push(end.geometry.coordinates);\n  // ---------------------------------------\n\n  return cleanCoords(lineString(path));\n}\n\n/**\n * Checks if Point is inside any of the Polygons\n *\n * @private\n * @param {Feature<Point>} pt to check\n * @param {FeatureCollection<Polygon>} polygons features\n * @returns {boolean} if inside or not\n */\nfunction isInside(pt, polygons) {\n  for (var i = 0; i < polygons.features.length; i++) {\n    if (booleanPointInPolygon(pt, polygons.features[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default shortestPath;\n","import Node from \"./Node.js\";\nimport Edge from \"./Edge.js\";\nimport EdgeRing from \"./EdgeRing.js\";\nimport { flattenEach, coordReduce } from \"@turf/meta\";\nimport { featureOf } from \"@turf/invariant\";\n/**\n * Validates the geoJson.\n *\n * @param {GeoJSON} geoJson - input geoJson.\n * @throws {Error} if geoJson is invalid.\n */\nfunction validateGeoJson(geoJson) {\n    if (!geoJson)\n        throw new Error(\"No geojson passed\");\n    if (geoJson.type !== \"FeatureCollection\" &&\n        geoJson.type !== \"GeometryCollection\" &&\n        geoJson.type !== \"MultiLineString\" &&\n        geoJson.type !== \"LineString\" &&\n        geoJson.type !== \"Feature\")\n        throw new Error(\"Invalid input type '\" + geoJson.type + \"'. Geojson must be FeatureCollection, GeometryCollection, LineString, MultiLineString or Feature\");\n}\n/**\n * Represents a planar graph of edges and nodes that can be used to compute a polygonization.\n *\n * Although, this class is inspired by GEOS's `geos::operation::polygonize::PolygonizeGraph`,\n * it isn't a rewrite. As regards algorithm, this class implements the same logic, but it\n * isn't a javascript transcription of the C++ source.\n *\n * This graph is directed (both directions are created)\n */\nvar Graph = /** @class */ (function () {\n    function Graph() {\n        this.edges = []; //< {Edge[]} dirEdges\n        // The key is the `id` of the Node (ie: coordinates.join(','))\n        this.nodes = {};\n    }\n    /**\n     * Creates a graph from a GeoJSON.\n     *\n     * @param {FeatureCollection<LineString>} geoJson - it must comply with the restrictions detailed in the index\n     * @returns {Graph} - The newly created graph\n     * @throws {Error} if geoJson is invalid.\n     */\n    Graph.fromGeoJson = function (geoJson) {\n        validateGeoJson(geoJson);\n        var graph = new Graph();\n        flattenEach(geoJson, function (feature) {\n            featureOf(feature, \"LineString\", \"Graph::fromGeoJson\");\n            // When a LineString if formed by many segments, split them\n            coordReduce(feature, function (prev, cur) {\n                if (prev) {\n                    var start = graph.getNode(prev), end = graph.getNode(cur);\n                    graph.addEdge(start, end);\n                }\n                return cur;\n            });\n        });\n        return graph;\n    };\n    /**\n     * Creates or get a Node.\n     *\n     * @param {number[]} coordinates - Coordinates of the node\n     * @returns {Node} - The created or stored node\n     */\n    Graph.prototype.getNode = function (coordinates) {\n        var id = Node.buildId(coordinates);\n        var node = this.nodes[id];\n        if (!node)\n            node = this.nodes[id] = new Node(coordinates);\n        return node;\n    };\n    /**\n     * Adds an Edge and its symetricall.\n     *\n     * Edges are added symetrically, i.e.: we also add its symetric\n     *\n     * @param {Node} from - Node which starts the Edge\n     * @param {Node} to - Node which ends the Edge\n     */\n    Graph.prototype.addEdge = function (from, to) {\n        var edge = new Edge(from, to), symetricEdge = edge.getSymetric();\n        this.edges.push(edge);\n        this.edges.push(symetricEdge);\n    };\n    /**\n     * Removes Dangle Nodes (nodes with grade 1).\n     */\n    Graph.prototype.deleteDangles = function () {\n        var _this = this;\n        Object.keys(this.nodes)\n            .map(function (id) { return _this.nodes[id]; })\n            .forEach(function (node) { return _this._removeIfDangle(node); });\n    };\n    /**\n     * Check if node is dangle, if so, remove it.\n     *\n     * It calls itself recursively, removing a dangling node might cause another dangling node\n     *\n     * @param {Node} node - Node to check if it's a dangle\n     */\n    Graph.prototype._removeIfDangle = function (node) {\n        var _this = this;\n        // As edges are directed and symetrical, we count only innerEdges\n        if (node.innerEdges.length <= 1) {\n            var outerNodes = node.getOuterEdges().map(function (e) { return e.to; });\n            this.removeNode(node);\n            outerNodes.forEach(function (n) { return _this._removeIfDangle(n); });\n        }\n    };\n    /**\n     * Delete cut-edges (bridge edges).\n     *\n     * The graph will be traversed, all the edges will be labeled according the ring\n     * in which they are. (The label is a number incremented by 1). Edges with the same\n     * label are cut-edges.\n     */\n    Graph.prototype.deleteCutEdges = function () {\n        var _this = this;\n        this._computeNextCWEdges();\n        this._findLabeledEdgeRings();\n        // Cut-edges (bridges) are edges where both edges have the same label\n        this.edges.forEach(function (edge) {\n            if (edge.label === edge.symetric.label) {\n                _this.removeEdge(edge.symetric);\n                _this.removeEdge(edge);\n            }\n        });\n    };\n    /**\n     * Set the `next` property of each Edge.\n     *\n     * The graph will be transversed in a CW form, so, we set the next of the symetrical edge as the previous one.\n     * OuterEdges are sorted CCW.\n     *\n     * @param {Node} [node] - If no node is passed, the function calls itself for every node in the Graph\n     */\n    Graph.prototype._computeNextCWEdges = function (node) {\n        var _this = this;\n        if (typeof node === \"undefined\") {\n            Object.keys(this.nodes).forEach(function (id) {\n                return _this._computeNextCWEdges(_this.nodes[id]);\n            });\n        }\n        else {\n            node.getOuterEdges().forEach(function (edge, i) {\n                node.getOuterEdge((i === 0 ? node.getOuterEdges().length : i) - 1).symetric.next = edge;\n            });\n        }\n    };\n    /**\n     * Computes the next edge pointers going CCW around the given node, for the given edgering label.\n     *\n     * This algorithm has the effect of converting maximal edgerings into minimal edgerings\n     *\n     * XXX: method literally transcribed from `geos::operation::polygonize::PolygonizeGraph::computeNextCCWEdges`,\n     * could be written in a more javascript way.\n     *\n     * @param {Node} node - Node\n     * @param {number} label - Ring's label\n     */\n    Graph.prototype._computeNextCCWEdges = function (node, label) {\n        var edges = node.getOuterEdges();\n        var firstOutDE, prevInDE;\n        for (var i = edges.length - 1; i >= 0; --i) {\n            var de = edges[i], sym = de.symetric, outDE = void 0, inDE = void 0;\n            if (de.label === label)\n                outDE = de;\n            if (sym.label === label)\n                inDE = sym;\n            if (!outDE || !inDE)\n                // This edge is not in edgering\n                continue;\n            if (inDE)\n                prevInDE = inDE;\n            if (outDE) {\n                if (prevInDE) {\n                    prevInDE.next = outDE;\n                    prevInDE = undefined;\n                }\n                if (!firstOutDE)\n                    firstOutDE = outDE;\n            }\n        }\n        if (prevInDE)\n            prevInDE.next = firstOutDE;\n    };\n    /**\n     * Finds rings and labels edges according to which rings are.\n     *\n     * The label is a number which is increased for each ring.\n     *\n     * @returns {Edge[]} edges that start rings\n     */\n    Graph.prototype._findLabeledEdgeRings = function () {\n        var edgeRingStarts = [];\n        var label = 0;\n        this.edges.forEach(function (edge) {\n            if (edge.label >= 0)\n                return;\n            edgeRingStarts.push(edge);\n            var e = edge;\n            do {\n                e.label = label;\n                e = e.next;\n            } while (!edge.isEqual(e));\n            label++;\n        });\n        return edgeRingStarts;\n    };\n    /**\n     * Computes the EdgeRings formed by the edges in this graph.\n     *\n     * @returns {EdgeRing[]} - A list of all the EdgeRings in the graph.\n     */\n    Graph.prototype.getEdgeRings = function () {\n        var _this = this;\n        this._computeNextCWEdges();\n        // Clear labels\n        this.edges.forEach(function (edge) {\n            edge.label = undefined;\n        });\n        this._findLabeledEdgeRings().forEach(function (edge) {\n            // convertMaximalToMinimalEdgeRings\n            _this._findIntersectionNodes(edge).forEach(function (node) {\n                _this._computeNextCCWEdges(node, edge.label);\n            });\n        });\n        var edgeRingList = [];\n        // find all edgerings\n        this.edges.forEach(function (edge) {\n            if (edge.ring)\n                return;\n            edgeRingList.push(_this._findEdgeRing(edge));\n        });\n        return edgeRingList;\n    };\n    /**\n     * Find all nodes in a Maxima EdgeRing which are self-intersection nodes.\n     *\n     * @param {Node} startEdge - Start Edge of the Ring\n     * @returns {Node[]} - intersection nodes\n     */\n    Graph.prototype._findIntersectionNodes = function (startEdge) {\n        var intersectionNodes = [];\n        var edge = startEdge;\n        var _loop_1 = function () {\n            // getDegree\n            var degree = 0;\n            edge.from.getOuterEdges().forEach(function (e) {\n                if (e.label === startEdge.label)\n                    ++degree;\n            });\n            if (degree > 1)\n                intersectionNodes.push(edge.from);\n            edge = edge.next;\n        };\n        do {\n            _loop_1();\n        } while (!startEdge.isEqual(edge));\n        return intersectionNodes;\n    };\n    /**\n     * Get the edge-ring which starts from the provided Edge.\n     *\n     * @param {Edge} startEdge - starting edge of the edge ring\n     * @returns {EdgeRing} - EdgeRing which start Edge is the provided one.\n     */\n    Graph.prototype._findEdgeRing = function (startEdge) {\n        var edge = startEdge;\n        var edgeRing = new EdgeRing();\n        do {\n            edgeRing.push(edge);\n            edge.ring = edgeRing;\n            edge = edge.next;\n        } while (!startEdge.isEqual(edge));\n        return edgeRing;\n    };\n    /**\n     * Removes a node from the Graph.\n     *\n     * It also removes edges asociated to that node\n     * @param {Node} node - Node to be removed\n     */\n    Graph.prototype.removeNode = function (node) {\n        var _this = this;\n        node.getOuterEdges().forEach(function (edge) { return _this.removeEdge(edge); });\n        node.innerEdges.forEach(function (edge) { return _this.removeEdge(edge); });\n        delete this.nodes[node.id];\n    };\n    /**\n     * Remove edge from the graph and deletes the edge.\n     *\n     * @param {Edge} edge - Edge to be removed\n     */\n    Graph.prototype.removeEdge = function (edge) {\n        this.edges = this.edges.filter(function (e) { return !e.isEqual(edge); });\n        edge.deleteEdge();\n    };\n    return Graph;\n}());\nexport default Graph;\n","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublicationSignaling = require('../localtrackpublication');\nvar TwilioWarning = require('../../util/twiliowarning');\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\n/**\n * @extends LocalTrackPublicationSignaling\n */\nvar LocalTrackPublicationV2 = /** @class */ (function (_super) {\n    __extends(LocalTrackPublicationV2, _super);\n    /**\n     * Construct a {@link LocalTrackPublicationV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @param {object} [options]\n     */\n    function LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, options) {\n        var _this = _super.call(this, trackSender, name, priority) || this;\n        Object.defineProperties(_this, {\n            _log: {\n                value: options.log.createLog('default', _this)\n            },\n            _mediaStates: {\n                value: { recordings: null },\n                writable: true\n            },\n            _noiseCancellationVendor: {\n                value: noiseCancellationVendor,\n            }\n        });\n        return _this;\n    }\n    /**\n     * Get the {@link LocalTrackPublicationV2#Representation} of a given {@link TrackSignaling}.\n     * @returns {LocalTrackPublicationV2#Representation} - without the SID\n     */\n    LocalTrackPublicationV2.prototype.getState = function () {\n        var state = {\n            enabled: this.isEnabled,\n            id: this.id,\n            kind: this.kind,\n            name: this.name,\n            priority: this.updatedPriority,\n        };\n        if (this._noiseCancellationVendor) {\n            // eslint-disable-next-line camelcase\n            state.audio_processor = this._noiseCancellationVendor;\n        }\n        return state;\n    };\n    LocalTrackPublicationV2.prototype.toString = function () {\n        return \"[LocalTrackPublicationV2: \" + this.sid + \"]\";\n    };\n    /**\n     * Compare the {@link LocalTrackPublicationV2} to a {@link LocalTrackPublicationV2#Representation} of itself\n     * and perform any updates necessary.\n     * @param {PublishedTrack} track\n     * @returns {this}\n     * @fires TrackSignaling#updated\n     */\n    LocalTrackPublicationV2.prototype.update = function (track) {\n        switch (track.state) {\n            case 'ready':\n                this.setSid(track.sid);\n                break;\n            case 'failed': {\n                var error = track.error;\n                this.publishFailed(createTwilioError(error.code, error.message));\n                break;\n            }\n            default: // 'created'\n                break;\n        }\n        return this;\n    };\n    LocalTrackPublicationV2.prototype.updateMediaStates = function (mediaStates) {\n        if (!mediaStates || !mediaStates.recordings ||\n            this._mediaStates.recordings === mediaStates.recordings) {\n            return this;\n        }\n        this._mediaStates.recordings = mediaStates.recordings;\n        switch (this._mediaStates.recordings) {\n            case 'OK':\n                this._log.info('Warnings have cleared.');\n                this.emit('warningsCleared');\n                break;\n            case 'NO_MEDIA':\n                this._log.warn('Recording media lost.');\n                this.emit('warning', TwilioWarning.recordingMediaLost);\n                break;\n            default:\n                this._log.warn(\"Unknown media state detected: \" + this._mediaStates.recordings);\n                break;\n        }\n        return this;\n    };\n    return LocalTrackPublicationV2;\n}(LocalTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link LocalTrackPublicationV2}.\n * @typedef {object} LocalTrackPublicationV2#Representation\n * @property {boolean} enabled\n * @property {Track.ID} id\n * @property {Track.Kind} kind\n * @property {string} name\n * @priority {Track.Priority} priority\n * @property {Track.SID} sid\n */\nmodule.exports = LocalTrackPublicationV2;\n//# sourceMappingURL=localtrackpublication.js.map","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n  var ref = useRef(null);\n  useEffect(function () {\n    ref.current = value;\n  });\n  return ref.current;\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\nvar NetworkQualityAudioStats = require('./networkqualityaudiostats');\nvar NetworkQualityVideoStats = require('./networkqualityvideostats');\n/**\n * Network quality statistics for a {@link Participant}.\n * @property {NetworkQualityLevel} level - {@link NetworkQualityLevel} of the {@link Participant}\n * @property {?NetworkQualityAudioStats} audio - {@link NetworkQualityMediaStats}\n *   for audio; <code>null</code> if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   or below\n * @property {?NetworkQualityVideoStats} video - {@link NetworkQualityMediaStats}\n *   for video; <code>null</code> if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   or below\n */\nvar NetworkQualityStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityStats}.\n     * @param {NetworkQualityLevels} networkQualityLevels\n     */\n    function NetworkQualityStats(_a) {\n        var level = _a.level, audio = _a.audio, video = _a.video;\n        Object.defineProperties(this, {\n            level: {\n                value: level,\n                enumerable: true\n            },\n            audio: {\n                value: audio ? new NetworkQualityAudioStats(audio) : null,\n                enumerable: true\n            },\n            video: {\n                value: video ? new NetworkQualityVideoStats(video) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityStats;\n}());\nmodule.exports = NetworkQualityStats;\n//# sourceMappingURL=networkqualitystats.js.map","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n          (typeof global == 'object' && global.global === global && global) ||\n          Function('return this')() ||\n          {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n    supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n    nativeKeys = Object.keys,\n    nativeCreate = Object.create,\n    nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n    _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n  'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n  startIndex = startIndex == null ? func.length - 1 : +startIndex;\n  return function() {\n    var length = Math.max(arguments.length - startIndex, 0),\n        rest = Array(length),\n        index = 0;\n    for (; index < length; index++) {\n      rest[index] = arguments[index + startIndex];\n    }\n    switch (startIndex) {\n      case 0: return func.call(this, rest);\n      case 1: return func.call(this, arguments[0], rest);\n      case 2: return func.call(this, arguments[0], arguments[1], rest);\n    }\n    var args = Array(startIndex + 1);\n    for (index = 0; index < startIndex; index++) {\n      args[index] = arguments[index];\n    }\n    args[startIndex] = rest;\n    return func.apply(this, args);\n  };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n  var type = typeof obj;\n  return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n  return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n  return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n  return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n  return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n  var tag = '[object ' + name + ']';\n  return function(obj) {\n    return toString.call(obj) === tag;\n  };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n  isFunction = function(obj) {\n    return typeof obj == 'function' || false;\n  };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n      supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n    ),\n    isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n  return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n  return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n  if (!isArguments(arguments)) {\n    isArguments = function(obj) {\n      return has(obj, 'callee');\n    };\n  }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n  return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n  return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n  return function() {\n    return value;\n  };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n  return function(collection) {\n    var sizeProperty = getSizeProperty(collection);\n    return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n  }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n  return function(obj) {\n    return obj == null ? void 0 : obj[key];\n  };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n  // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n  // Otherwise, fall back on the above regular expression.\n  return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n                isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n  var hash = {};\n  for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n  return {\n    contains: function(key) { return hash[key] === true; },\n    push: function(key) {\n      hash[key] = true;\n      return keys.push(key);\n    }\n  };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n  keys = emulatedSet(keys);\n  var nonEnumIdx = nonEnumerableProps.length;\n  var constructor = obj.constructor;\n  var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n  // Constructor is a special case.\n  var prop = 'constructor';\n  if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n  while (nonEnumIdx--) {\n    prop = nonEnumerableProps[nonEnumIdx];\n    if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n      keys.push(prop);\n    }\n  }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n  if (!isObject(obj)) return [];\n  if (nativeKeys) return nativeKeys(obj);\n  var keys = [];\n  for (var key in obj) if (has(obj, key)) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n  if (obj == null) return true;\n  // Skip the more expensive `toString`-based type checks if `obj` has no\n  // `.length`.\n  var length = getLength(obj);\n  if (typeof length == 'number' && (\n    isArray(obj) || isString(obj) || isArguments(obj)\n  )) return length === 0;\n  return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n  var _keys = keys(attrs), length = _keys.length;\n  if (object == null) return !length;\n  var obj = Object(object);\n  for (var i = 0; i < length; i++) {\n    var key = _keys[i];\n    if (attrs[key] !== obj[key] || !(key in obj)) return false;\n  }\n  return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n  if (obj instanceof _) return obj;\n  if (!(this instanceof _)) return new _(obj);\n  this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n  return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n  return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n  return new Uint8Array(\n    bufferSource.buffer || bufferSource,\n    bufferSource.byteOffset || 0,\n    getByteLength(bufferSource)\n  );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug }  from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n  // Identical objects are equal. `0 === -0`, but they aren't identical.\n  // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n  if (a === b) return a !== 0 || 1 / a === 1 / b;\n  // `null` or `undefined` only equal to itself (strict comparison).\n  if (a == null || b == null) return false;\n  // `NaN`s are equivalent, but non-reflexive.\n  if (a !== a) return b !== b;\n  // Exhaust primitive checks\n  var type = typeof a;\n  if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n  return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n  // Unwrap any wrapped objects.\n  if (a instanceof _) a = a._wrapped;\n  if (b instanceof _) b = b._wrapped;\n  // Compare `[[Class]]` names.\n  var className = toString.call(a);\n  if (className !== toString.call(b)) return false;\n  // Work around a bug in IE 10 - Edge 13.\n  if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n    if (!isDataView(b)) return false;\n    className = tagDataView;\n  }\n  switch (className) {\n    // These types are compared by value.\n    case '[object RegExp]':\n      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n    case '[object String]':\n      // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n      // equivalent to `new String(\"5\")`.\n      return '' + a === '' + b;\n    case '[object Number]':\n      // `NaN`s are equivalent, but non-reflexive.\n      // Object(NaN) is equivalent to NaN.\n      if (+a !== +a) return +b !== +b;\n      // An `egal` comparison is performed for other numeric values.\n      return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n    case '[object Date]':\n    case '[object Boolean]':\n      // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a === +b;\n    case '[object Symbol]':\n      return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n    case '[object ArrayBuffer]':\n    case tagDataView:\n      // Coerce to typed array so we can fall through.\n      return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n  }\n\n  var areArrays = className === '[object Array]';\n  if (!areArrays && isTypedArray(a)) {\n      var byteLength = getByteLength(a);\n      if (byteLength !== getByteLength(b)) return false;\n      if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n      areArrays = true;\n  }\n  if (!areArrays) {\n    if (typeof a != 'object' || typeof b != 'object') return false;\n\n    // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n    // from different frames are.\n    var aCtor = a.constructor, bCtor = b.constructor;\n    if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n                             isFunction(bCtor) && bCtor instanceof bCtor)\n                        && ('constructor' in a && 'constructor' in b)) {\n      return false;\n    }\n  }\n  // Assume equality for cyclic structures. The algorithm for detecting cyclic\n  // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n  // Initializing stack of traversed objects.\n  // It's done here since we only need them for objects and arrays comparison.\n  aStack = aStack || [];\n  bStack = bStack || [];\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    if (aStack[length] === a) return bStack[length] === b;\n  }\n\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n\n  // Recursively compare objects and arrays.\n  if (areArrays) {\n    // Compare array lengths to determine if a deep comparison is necessary.\n    length = a.length;\n    if (length !== b.length) return false;\n    // Deep compare the contents, ignoring non-numeric properties.\n    while (length--) {\n      if (!eq(a[length], b[length], aStack, bStack)) return false;\n    }\n  } else {\n    // Deep compare objects.\n    var _keys = keys(a), key;\n    length = _keys.length;\n    // Ensure that both objects contain the same number of properties before comparing deep equality.\n    if (keys(b).length !== length) return false;\n    while (length--) {\n      // Deep compare each member\n      key = _keys[length];\n      if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n  return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n  if (!isObject(obj)) return [];\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n  var length = getLength(methods);\n  return function(obj) {\n    if (obj == null) return false;\n    // `Map`, `WeakMap` and `Set` have no enumerable keys.\n    var keys = allKeys(obj);\n    if (getLength(keys)) return false;\n    for (var i = 0; i < length; i++) {\n      if (!isFunction(obj[methods[i]])) return false;\n    }\n    // If we are testing against `WeakMap`, we need to ensure that\n    // `obj` doesn't have a `forEach` method in order to distinguish\n    // it from a regular `Map`.\n    return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n  };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n    hasName = 'has',\n    commonInit = ['clear', 'delete'],\n    mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n    weakMapMethods = commonInit.concat(mapTail),\n    setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var values = Array(length);\n  for (var i = 0; i < length; i++) {\n    values[i] = obj[_keys[i]];\n  }\n  return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var pairs = Array(length);\n  for (var i = 0; i < length; i++) {\n    pairs[i] = [_keys[i], obj[_keys[i]]];\n  }\n  return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n  var result = {};\n  var _keys = keys(obj);\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    result[obj[_keys[i]]] = _keys[i];\n  }\n  return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n  var names = [];\n  for (var key in obj) {\n    if (isFunction(obj[key])) names.push(key);\n  }\n  return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n  return function(obj) {\n    var length = arguments.length;\n    if (defaults) obj = Object(obj);\n    if (length < 2 || obj == null) return obj;\n    for (var index = 1; index < length; index++) {\n      var source = arguments[index],\n          keys = keysFunc(source),\n          l = keys.length;\n      for (var i = 0; i < l; i++) {\n        var key = keys[i];\n        if (!defaults || obj[key] === void 0) obj[key] = source[key];\n      }\n    }\n    return obj;\n  };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n  return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n  if (!isObject(prototype)) return {};\n  if (nativeCreate) return nativeCreate(prototype);\n  var Ctor = ctor();\n  Ctor.prototype = prototype;\n  var result = new Ctor;\n  Ctor.prototype = null;\n  return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n  var result = baseCreate(prototype);\n  if (props) extendOwn(result, props);\n  return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n  if (!isObject(obj)) return obj;\n  return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n  interceptor(obj);\n  return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n  return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n  return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    if (obj == null) return void 0;\n    obj = obj[path[i]];\n  }\n  return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n  var value = deepGet(object, toPath(path));\n  return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n  path = toPath(path);\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    var key = path[i];\n    if (!_has(obj, key)) return false;\n    obj = obj[key];\n  }\n  return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n  return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n  attrs = extendOwn({}, attrs);\n  return function(obj) {\n    return isMatch(obj, attrs);\n  };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n  path = toPath(path);\n  return function(obj) {\n    return deepGet(obj, path);\n  };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n  if (context === void 0) return func;\n  switch (argCount == null ? 3 : argCount) {\n    case 1: return function(value) {\n      return func.call(context, value);\n    };\n    // The 2-argument case is omitted because we’re not using it.\n    case 3: return function(value, index, collection) {\n      return func.call(context, value, index, collection);\n    };\n    case 4: return function(accumulator, value, index, collection) {\n      return func.call(context, accumulator, value, index, collection);\n    };\n  }\n  return function() {\n    return func.apply(context, arguments);\n  };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n  if (value == null) return identity;\n  if (isFunction(value)) return optimizeCb(value, context, argCount);\n  if (isObject(value) && !isArray(value)) return matcher(value);\n  return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n  return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n  if (_.iteratee !== iteratee) return _.iteratee(value, context);\n  return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = keys(obj),\n      length = _keys.length,\n      results = {};\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys[index];\n    results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n  if (obj == null) return noop;\n  return function(path) {\n    return get(obj, path);\n  };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n  var accum = Array(Math.max(0, n));\n  iteratee = optimizeCb(iteratee, context, 1);\n  for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n  return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n  return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n  var escaper = function(match) {\n    return map[match];\n  };\n  // Regexes for identifying a key that needs to be escaped.\n  var source = '(?:' + keys(map).join('|') + ')';\n  var testRegexp = RegExp(source);\n  var replaceRegexp = RegExp(source, 'g');\n  return function(string) {\n    string = string == null ? '' : '' + string;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n  };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n  evaluate: /<%([\\s\\S]+?)%>/g,\n  interpolate: /<%=([\\s\\S]+?)%>/g,\n  escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n  \"'\": \"'\",\n  '\\\\': '\\\\',\n  '\\r': 'r',\n  '\\n': 'n',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n  return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n  if (!settings && oldSettings) settings = oldSettings;\n  settings = defaults({}, settings, _.templateSettings);\n\n  // Combine delimiters into one regular expression via alternation.\n  var matcher = RegExp([\n    (settings.escape || noMatch).source,\n    (settings.interpolate || noMatch).source,\n    (settings.evaluate || noMatch).source\n  ].join('|') + '|$', 'g');\n\n  // Compile the template source, escaping string literals appropriately.\n  var index = 0;\n  var source = \"__p+='\";\n  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n    source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n    index = offset + match.length;\n\n    if (escape) {\n      source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n    } else if (interpolate) {\n      source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n    } else if (evaluate) {\n      source += \"';\\n\" + evaluate + \"\\n__p+='\";\n    }\n\n    // Adobe VMs need the match returned to produce the correct offset.\n    return match;\n  });\n  source += \"';\\n\";\n\n  var argument = settings.variable;\n  if (argument) {\n    // Insure against third-party code injection. (CVE-2021-23358)\n    if (!bareIdentifier.test(argument)) throw new Error(\n      'variable is not a bare identifier: ' + argument\n    );\n  } else {\n    // If a variable is not specified, place data values in local scope.\n    source = 'with(obj||{}){\\n' + source + '}\\n';\n    argument = 'obj';\n  }\n\n  source = \"var __t,__p='',__j=Array.prototype.join,\" +\n    \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n    source + 'return __p;\\n';\n\n  var render;\n  try {\n    render = new Function(argument, '_', source);\n  } catch (e) {\n    e.source = source;\n    throw e;\n  }\n\n  var template = function(data) {\n    return render.call(this, data, _);\n  };\n\n  // Provide the compiled source as a convenience for precompilation.\n  template.source = 'function(' + argument + '){\\n' + source + '}';\n\n  return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n  path = toPath(path);\n  var length = path.length;\n  if (!length) {\n    return isFunction(fallback) ? fallback.call(obj) : fallback;\n  }\n  for (var i = 0; i < length; i++) {\n    var prop = obj == null ? void 0 : obj[path[i]];\n    if (prop === void 0) {\n      prop = fallback;\n      i = length; // Ensure we don't continue iterating.\n    }\n    obj = isFunction(prop) ? prop.call(obj) : prop;\n  }\n  return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n  var id = ++idCounter + '';\n  return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n  var instance = _(obj);\n  instance._chain = true;\n  return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n  if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n  var self = baseCreate(sourceFunc.prototype);\n  var result = sourceFunc.apply(self, args);\n  if (isObject(result)) return result;\n  return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n  var placeholder = partial.placeholder;\n  var bound = function() {\n    var position = 0, length = boundArgs.length;\n    var args = Array(length);\n    for (var i = 0; i < length; i++) {\n      args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n    }\n    while (position < arguments.length) args.push(arguments[position++]);\n    return executeBound(func, bound, this, this, args);\n  };\n  return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n  if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n  var bound = restArguments(function(callArgs) {\n    return executeBound(func, bound, context, this, args.concat(callArgs));\n  });\n  return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n  output = output || [];\n  if (!depth && depth !== 0) {\n    depth = Infinity;\n  } else if (depth <= 0) {\n    return output.concat(input);\n  }\n  var idx = output.length;\n  for (var i = 0, length = getLength(input); i < length; i++) {\n    var value = input[i];\n    if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n      // Flatten current level of array or arguments object.\n      if (depth > 1) {\n        flatten(value, depth - 1, strict, output);\n        idx = output.length;\n      } else {\n        var j = 0, len = value.length;\n        while (j < len) output[idx++] = value[j++];\n      }\n    } else if (!strict) {\n      output[idx++] = value;\n    }\n  }\n  return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n  keys = flatten(keys, false, false);\n  var index = keys.length;\n  if (index < 1) throw new Error('bindAll must be passed function names');\n  while (index--) {\n    var key = keys[index];\n    obj[key] = bind(obj[key], obj);\n  }\n  return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n  var memoize = function(key) {\n    var cache = memoize.cache;\n    var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n    if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n    return cache[address];\n  };\n  memoize.cache = {};\n  return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n  return setTimeout(function() {\n    return func.apply(null, args);\n  }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n  var timeout, context, args, result;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function() {\n    var _now = now();\n    if (!previous && options.leading === false) previous = _now;\n    var remaining = wait - (_now - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = _now;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function() {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n  var timeout, previous, args, result, context;\n\n  var later = function() {\n    var passed = now() - previous;\n    if (wait > passed) {\n      timeout = setTimeout(later, wait - passed);\n    } else {\n      timeout = null;\n      if (!immediate) result = func.apply(context, args);\n      // This check is needed because `func` can recursively invoke `debounced`.\n      if (!timeout) args = context = null;\n    }\n  };\n\n  var debounced = restArguments(function(_args) {\n    context = this;\n    args = _args;\n    previous = now();\n    if (!timeout) {\n      timeout = setTimeout(later, wait);\n      if (immediate) result = func.apply(context, args);\n    }\n    return result;\n  });\n\n  debounced.cancel = function() {\n    clearTimeout(timeout);\n    timeout = args = context = null;\n  };\n\n  return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n  return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n  return function() {\n    return !predicate.apply(this, arguments);\n  };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n  var args = arguments;\n  var start = args.length - 1;\n  return function() {\n    var i = start;\n    var result = args[start].apply(this, arguments);\n    while (i--) result = args[i].call(this, result);\n    return result;\n  };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n  return function() {\n    if (--times < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n  var memo;\n  return function() {\n    if (--times > 0) {\n      memo = func.apply(this, arguments);\n    }\n    if (times <= 1) func = null;\n    return memo;\n  };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = keys(obj), key;\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    key = _keys[i];\n    if (predicate(obj[key], key, obj)) return key;\n  }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n  return function(array, predicate, context) {\n    predicate = cb(predicate, context);\n    var length = getLength(array);\n    var index = dir > 0 ? 0 : length - 1;\n    for (; index >= 0 && index < length; index += dir) {\n      if (predicate(array[index], index, array)) return index;\n    }\n    return -1;\n  };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n  iteratee = cb(iteratee, context, 1);\n  var value = iteratee(obj);\n  var low = 0, high = getLength(array);\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n    if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n  }\n  return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n  return function(array, item, idx) {\n    var i = 0, length = getLength(array);\n    if (typeof idx == 'number') {\n      if (dir > 0) {\n        i = idx >= 0 ? idx : Math.max(idx + length, i);\n      } else {\n        length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n      }\n    } else if (sortedIndex && idx && length) {\n      idx = sortedIndex(array, item);\n      return array[idx] === item ? idx : -1;\n    }\n    if (item !== item) {\n      idx = predicateFind(slice.call(array, i, length), isNaN);\n      return idx >= 0 ? idx + i : -1;\n    }\n    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n      if (array[idx] === item) return idx;\n    }\n    return -1;\n  };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n  var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n  var key = keyFinder(obj, predicate, context);\n  if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n  return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n  iteratee = optimizeCb(iteratee, context);\n  var i, length;\n  if (isArrayLike(obj)) {\n    for (i = 0, length = obj.length; i < length; i++) {\n      iteratee(obj[i], i, obj);\n    }\n  } else {\n    var _keys = keys(obj);\n    for (i = 0, length = _keys.length; i < length; i++) {\n      iteratee(obj[_keys[i]], _keys[i], obj);\n    }\n  }\n  return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length,\n      results = Array(length);\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    results[index] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n  // Wrap code that reassigns argument variables in a separate function than\n  // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n  var reducer = function(obj, iteratee, memo, initial) {\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        index = dir > 0 ? 0 : length - 1;\n    if (!initial) {\n      memo = obj[_keys ? _keys[index] : index];\n      index += dir;\n    }\n    for (; index >= 0 && index < length; index += dir) {\n      var currentKey = _keys ? _keys[index] : index;\n      memo = iteratee(memo, obj[currentKey], currentKey, obj);\n    }\n    return memo;\n  };\n\n  return function(obj, iteratee, memo, context) {\n    var initial = arguments.length >= 3;\n    return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n  };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n  var results = [];\n  predicate = cb(predicate, context);\n  each(obj, function(value, index, list) {\n    if (predicate(value, index, list)) results.push(value);\n  });\n  return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n  return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (!predicate(obj[currentKey], currentKey, obj)) return false;\n  }\n  return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (predicate(obj[currentKey], currentKey, obj)) return true;\n  }\n  return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n  if (!isArrayLike(obj)) obj = values(obj);\n  if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n  return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n  var contextPath, func;\n  if (isFunction(path)) {\n    func = path;\n  } else {\n    path = toPath(path);\n    contextPath = path.slice(0, -1);\n    path = path[path.length - 1];\n  }\n  return map(obj, function(context) {\n    var method = func;\n    if (!method) {\n      if (contextPath && contextPath.length) {\n        context = deepGet(context, contextPath);\n      }\n      if (context == null) return void 0;\n      method = context[path];\n    }\n    return method == null ? method : method.apply(context, args);\n  });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n  return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n  return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n  var result = -Infinity, lastComputed = -Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value > result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n  var result = Infinity, lastComputed = Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value < result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n  if (!obj) return [];\n  if (isArray(obj)) return slice.call(obj);\n  if (isString(obj)) {\n    // Keep surrogate pair characters together.\n    return obj.match(reStrSymbol);\n  }\n  if (isArrayLike(obj)) return map(obj, identity);\n  return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n  if (n == null || guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    return obj[random(obj.length - 1)];\n  }\n  var sample = toArray(obj);\n  var length = getLength(sample);\n  n = Math.max(Math.min(n, length), 0);\n  var last = length - 1;\n  for (var index = 0; index < n; index++) {\n    var rand = random(index, last);\n    var temp = sample[index];\n    sample[index] = sample[rand];\n    sample[rand] = temp;\n  }\n  return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n  return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n  var index = 0;\n  iteratee = cb(iteratee, context);\n  return pluck(map(obj, function(value, key, list) {\n    return {\n      value: value,\n      index: index++,\n      criteria: iteratee(value, key, list)\n    };\n  }).sort(function(left, right) {\n    var a = left.criteria;\n    var b = right.criteria;\n    if (a !== b) {\n      if (a > b || a === void 0) return 1;\n      if (a < b || b === void 0) return -1;\n    }\n    return left.index - right.index;\n  }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n  return function(obj, iteratee, context) {\n    var result = partition ? [[], []] : {};\n    iteratee = cb(iteratee, context);\n    each(obj, function(value, index) {\n      var key = iteratee(value, index, obj);\n      behavior(result, value, key);\n    });\n    return result;\n  };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n  result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n  result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n  if (obj == null) return 0;\n  return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n  return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n  var result = {}, iteratee = keys[0];\n  if (obj == null) return result;\n  if (isFunction(iteratee)) {\n    if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n    keys = allKeys(obj);\n  } else {\n    iteratee = keyInObj;\n    keys = flatten(keys, false, false);\n    obj = Object(obj);\n  }\n  for (var i = 0, length = keys.length; i < length; i++) {\n    var key = keys[i];\n    var value = obj[key];\n    if (iteratee(value, key, obj)) result[key] = value;\n  }\n  return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n  var iteratee = keys[0], context;\n  if (isFunction(iteratee)) {\n    iteratee = negate(iteratee);\n    if (keys.length > 1) context = keys[1];\n  } else {\n    keys = map(flatten(keys, false, false), String);\n    iteratee = function(value, key) {\n      return !contains(keys, key);\n    };\n  }\n  return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n  return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[0];\n  return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n  return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[array.length - 1];\n  return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n  return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n  return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n  rest = flatten(rest, true, true);\n  return filter(array, function(value){\n    return !contains(rest, value);\n  });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n  return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n  if (!isBoolean(isSorted)) {\n    context = iteratee;\n    iteratee = isSorted;\n    isSorted = false;\n  }\n  if (iteratee != null) iteratee = cb(iteratee, context);\n  var result = [];\n  var seen = [];\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var value = array[i],\n        computed = iteratee ? iteratee(value, i, array) : value;\n    if (isSorted && !iteratee) {\n      if (!i || seen !== computed) result.push(value);\n      seen = computed;\n    } else if (iteratee) {\n      if (!contains(seen, computed)) {\n        seen.push(computed);\n        result.push(value);\n      }\n    } else if (!contains(result, value)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n  return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n  var result = [];\n  var argsLength = arguments.length;\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var item = array[i];\n    if (contains(result, item)) continue;\n    var j;\n    for (j = 1; j < argsLength; j++) {\n      if (!contains(arguments[j], item)) break;\n    }\n    if (j === argsLength) result.push(item);\n  }\n  return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n  var length = (array && max(array, getLength).length) || 0;\n  var result = Array(length);\n\n  for (var index = 0; index < length; index++) {\n    result[index] = pluck(array, index);\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength  from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n  var result = {};\n  for (var i = 0, length = getLength(list); i < length; i++) {\n    if (values) {\n      result[list[i]] = values[i];\n    } else {\n      result[list[i][0]] = list[i][1];\n    }\n  }\n  return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n  if (stop == null) {\n    stop = start || 0;\n    start = 0;\n  }\n  if (!step) {\n    step = stop < start ? -1 : 1;\n  }\n\n  var length = Math.max(Math.ceil((stop - start) / step), 0);\n  var range = Array(length);\n\n  for (var idx = 0; idx < length; idx++, start += step) {\n    range[idx] = start;\n  }\n\n  return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n  if (count == null || count < 1) return [];\n  var result = [];\n  var i = 0, length = array.length;\n  while (i < length) {\n    result.push(slice.call(array, i, i += count));\n  }\n  return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n  return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n  each(functions(obj), function(name) {\n    var func = _[name] = obj[name];\n    _.prototype[name] = function() {\n      var args = [this._wrapped];\n      push.apply(args, arguments);\n      return chainResult(this, func.apply(_, args));\n    };\n  });\n  return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) {\n      method.apply(obj, arguments);\n      if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n        delete obj[0];\n      }\n    }\n    return chainResult(this, obj);\n  };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) obj = method.apply(obj, arguments);\n    return chainResult(this, obj);\n  };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","'use strict';\n\nvar MissingRefError = require('./error_classes').MissingRef;\n\nmodule.exports = compileAsync;\n\n\n/**\n * Creates validating function for passed schema with asynchronous loading of missing schemas.\n * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n * @this  Ajv\n * @param {Object}   schema schema object\n * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n  /* eslint no-shadow: 0 */\n  /* global Promise */\n  /* jshint validthis: true */\n  var self = this;\n  if (typeof this._opts.loadSchema != 'function')\n    throw new Error('options.loadSchema should be a function');\n\n  if (typeof meta == 'function') {\n    callback = meta;\n    meta = undefined;\n  }\n\n  var p = loadMetaSchemaOf(schema).then(function () {\n    var schemaObj = self._addSchema(schema, undefined, meta);\n    return schemaObj.validate || _compileAsync(schemaObj);\n  });\n\n  if (callback) {\n    p.then(\n      function(v) { callback(null, v); },\n      callback\n    );\n  }\n\n  return p;\n\n\n  function loadMetaSchemaOf(sch) {\n    var $schema = sch.$schema;\n    return $schema && !self.getSchema($schema)\n            ? compileAsync.call(self, { $ref: $schema }, true)\n            : Promise.resolve();\n  }\n\n\n  function _compileAsync(schemaObj) {\n    try { return self._compile(schemaObj); }\n    catch(e) {\n      if (e instanceof MissingRefError) return loadMissingSchema(e);\n      throw e;\n    }\n\n\n    function loadMissingSchema(e) {\n      var ref = e.missingSchema;\n      if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n      var schemaPromise = self._loadingSchemas[ref];\n      if (!schemaPromise) {\n        schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n        schemaPromise.then(removePromise, removePromise);\n      }\n\n      return schemaPromise.then(function (sch) {\n        if (!added(ref)) {\n          return loadMetaSchemaOf(sch).then(function () {\n            if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n          });\n        }\n      }).then(function() {\n        return _compileAsync(schemaObj);\n      });\n\n      function removePromise() {\n        delete self._loadingSchemas[ref];\n      }\n\n      function added(ref) {\n        return self._refs[ref] || self._schemas[ref];\n      }\n    }\n  }\n}\n","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n  controlId: undefined\n});\nexport default FormContext;","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n    this.x = x;\n    this.y = y;\n}\n\nPoint.prototype = {\n\n    /**\n     * Clone this point, returning a new point that can be modified\n     * without affecting the old one.\n     * @return {Point} the clone\n     */\n    clone: function() { return new Point(this.x, this.y); },\n\n    /**\n     * Add this point's x & y coordinates to another point,\n     * yielding a new point.\n     * @param {Point} p the other point\n     * @return {Point} output point\n     */\n    add:     function(p) { return this.clone()._add(p); },\n\n    /**\n     * Subtract this point's x & y coordinates to from point,\n     * yielding a new point.\n     * @param {Point} p the other point\n     * @return {Point} output point\n     */\n    sub:     function(p) { return this.clone()._sub(p); },\n\n    /**\n     * Multiply this point's x & y coordinates by point,\n     * yielding a new point.\n     * @param {Point} p the other point\n     * @return {Point} output point\n     */\n    multByPoint:    function(p) { return this.clone()._multByPoint(p); },\n\n    /**\n     * Divide this point's x & y coordinates by point,\n     * yielding a new point.\n     * @param {Point} p the other point\n     * @return {Point} output point\n     */\n    divByPoint:     function(p) { return this.clone()._divByPoint(p); },\n\n    /**\n     * Multiply this point's x & y coordinates by a factor,\n     * yielding a new point.\n     * @param {Point} k factor\n     * @return {Point} output point\n     */\n    mult:    function(k) { return this.clone()._mult(k); },\n\n    /**\n     * Divide this point's x & y coordinates by a factor,\n     * yielding a new point.\n     * @param {Point} k factor\n     * @return {Point} output point\n     */\n    div:     function(k) { return this.clone()._div(k); },\n\n    /**\n     * Rotate this point around the 0, 0 origin by an angle a,\n     * given in radians\n     * @param {Number} a angle to rotate around, in radians\n     * @return {Point} output point\n     */\n    rotate:  function(a) { return this.clone()._rotate(a); },\n\n    /**\n     * Rotate this point around p point by an angle a,\n     * given in radians\n     * @param {Number} a angle to rotate around, in radians\n     * @param {Point} p Point to rotate around\n     * @return {Point} output point\n     */\n    rotateAround:  function(a,p) { return this.clone()._rotateAround(a,p); },\n\n    /**\n     * Multiply this point by a 4x1 transformation matrix\n     * @param {Array<Number>} m transformation matrix\n     * @return {Point} output point\n     */\n    matMult: function(m) { return this.clone()._matMult(m); },\n\n    /**\n     * Calculate this point but as a unit vector from 0, 0, meaning\n     * that the distance from the resulting point to the 0, 0\n     * coordinate will be equal to 1 and the angle from the resulting\n     * point to the 0, 0 coordinate will be the same as before.\n     * @return {Point} unit vector point\n     */\n    unit:    function() { return this.clone()._unit(); },\n\n    /**\n     * Compute a perpendicular point, where the new y coordinate\n     * is the old x coordinate and the new x coordinate is the old y\n     * coordinate multiplied by -1\n     * @return {Point} perpendicular point\n     */\n    perp:    function() { return this.clone()._perp(); },\n\n    /**\n     * Return a version of this point with the x & y coordinates\n     * rounded to integers.\n     * @return {Point} rounded point\n     */\n    round:   function() { return this.clone()._round(); },\n\n    /**\n     * Return the magitude of this point: this is the Euclidean\n     * distance from the 0, 0 coordinate to this point's x and y\n     * coordinates.\n     * @return {Number} magnitude\n     */\n    mag: function() {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n    },\n\n    /**\n     * Judge whether this point is equal to another point, returning\n     * true or false.\n     * @param {Point} other the other point\n     * @return {boolean} whether the points are equal\n     */\n    equals: function(other) {\n        return this.x === other.x &&\n               this.y === other.y;\n    },\n\n    /**\n     * Calculate the distance from this point to another point\n     * @param {Point} p the other point\n     * @return {Number} distance\n     */\n    dist: function(p) {\n        return Math.sqrt(this.distSqr(p));\n    },\n\n    /**\n     * Calculate the distance from this point to another point,\n     * without the square root step. Useful if you're comparing\n     * relative distances.\n     * @param {Point} p the other point\n     * @return {Number} distance\n     */\n    distSqr: function(p) {\n        var dx = p.x - this.x,\n            dy = p.y - this.y;\n        return dx * dx + dy * dy;\n    },\n\n    /**\n     * Get the angle from the 0, 0 coordinate to this point, in radians\n     * coordinates.\n     * @return {Number} angle\n     */\n    angle: function() {\n        return Math.atan2(this.y, this.x);\n    },\n\n    /**\n     * Get the angle from this point to another point, in radians\n     * @param {Point} b the other point\n     * @return {Number} angle\n     */\n    angleTo: function(b) {\n        return Math.atan2(this.y - b.y, this.x - b.x);\n    },\n\n    /**\n     * Get the angle between this point and another point, in radians\n     * @param {Point} b the other point\n     * @return {Number} angle\n     */\n    angleWith: function(b) {\n        return this.angleWithSep(b.x, b.y);\n    },\n\n    /*\n     * Find the angle of the two vectors, solving the formula for\n     * the cross product a x b = |a||b|sin(θ) for θ.\n     * @param {Number} x the x-coordinate\n     * @param {Number} y the y-coordinate\n     * @return {Number} the angle in radians\n     */\n    angleWithSep: function(x, y) {\n        return Math.atan2(\n            this.x * y - this.y * x,\n            this.x * x + this.y * y);\n    },\n\n    _matMult: function(m) {\n        var x = m[0] * this.x + m[1] * this.y,\n            y = m[2] * this.x + m[3] * this.y;\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n\n    _add: function(p) {\n        this.x += p.x;\n        this.y += p.y;\n        return this;\n    },\n\n    _sub: function(p) {\n        this.x -= p.x;\n        this.y -= p.y;\n        return this;\n    },\n\n    _mult: function(k) {\n        this.x *= k;\n        this.y *= k;\n        return this;\n    },\n\n    _div: function(k) {\n        this.x /= k;\n        this.y /= k;\n        return this;\n    },\n\n    _multByPoint: function(p) {\n        this.x *= p.x;\n        this.y *= p.y;\n        return this;\n    },\n\n    _divByPoint: function(p) {\n        this.x /= p.x;\n        this.y /= p.y;\n        return this;\n    },\n\n    _unit: function() {\n        this._div(this.mag());\n        return this;\n    },\n\n    _perp: function() {\n        var y = this.y;\n        this.y = this.x;\n        this.x = -y;\n        return this;\n    },\n\n    _rotate: function(angle) {\n        var cos = Math.cos(angle),\n            sin = Math.sin(angle),\n            x = cos * this.x - sin * this.y,\n            y = sin * this.x + cos * this.y;\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n\n    _rotateAround: function(angle, p) {\n        var cos = Math.cos(angle),\n            sin = Math.sin(angle),\n            x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n            y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n        this.x = x;\n        this.y = y;\n        return this;\n    },\n\n    _round: function() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        return this;\n    }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n    if (a instanceof Point) {\n        return a;\n    }\n    if (Array.isArray(a)) {\n        return new Point(a[0], a[1]);\n    }\n    return a;\n};\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var rbush = require('rbush');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar turfBBox = require('@turf/bbox').default;\nvar featureEach = meta.featureEach;\nvar coordEach = meta.coordEach;\nvar polygon = helpers.polygon;\nvar featureCollection = helpers.featureCollection;\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush(maxEntries) {\n    var tree = rbush(maxEntries);\n    /**\n     * [insert](https://github.com/mourner/rbush#data-format)\n     *\n     * @param {Feature} feature insert single GeoJSON Feature\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     * tree.insert(poly)\n     */\n    tree.insert = function (feature) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.insert.call(this, feature);\n    };\n\n    /**\n     * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n     *\n     * @param {FeatureCollection|Array<Feature>} features load entire GeoJSON FeatureCollection\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var polys = turf.polygons([\n     *     [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n     *     [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n     * ]);\n     * tree.load(polys);\n     */\n    tree.load = function (features) {\n        var load = [];\n        // Load an Array of Features\n        if (Array.isArray(features)) {\n            features.forEach(function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        } else {\n            // Load a FeatureCollection\n            featureEach(features, function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        }\n        return rbush.prototype.load.call(this, load);\n    };\n\n    /**\n     * [remove](https://github.com/mourner/rbush#removing-data)\n     *\n     * @param {Feature} feature remove single GeoJSON Feature\n     * @param {Function} equals Pass a custom equals function to compare by value for removal.\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.remove(poly);\n     */\n    tree.remove = function (feature, equals) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.remove.call(this, feature, equals);\n    };\n\n    /**\n     * [clear](https://github.com/mourner/rbush#removing-data)\n     *\n     * @returns {RBush} GeoJSON Rbush\n     * @example\n     * tree.clear()\n     */\n    tree.clear = function () {\n        return rbush.prototype.clear.call(this);\n    };\n\n    /**\n     * [search](https://github.com/mourner/rbush#search)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n     * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.search(poly);\n     */\n    tree.search = function (geojson) {\n        var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n        return featureCollection(features);\n    };\n\n    /**\n     * [collides](https://github.com/mourner/rbush#collisions)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n     * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.collides(poly);\n     */\n    tree.collides = function (geojson) {\n        return rbush.prototype.collides.call(this, this.toBBox(geojson));\n    };\n\n    /**\n     * [all](https://github.com/mourner/rbush#search)\n     *\n     * @returns {FeatureCollection} all the features in RBush\n     * @example\n     * tree.all()\n     */\n    tree.all = function () {\n        var features = rbush.prototype.all.call(this);\n        return featureCollection(features);\n    };\n\n    /**\n     * [toJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @returns {any} export data as JSON object\n     * @example\n     * var exported = tree.toJSON()\n     */\n    tree.toJSON = function () {\n        return rbush.prototype.toJSON.call(this);\n    };\n\n    /**\n     * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @param {any} json import previously exported data\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var exported = {\n     *   \"children\": [\n     *     {\n     *       \"type\": \"Feature\",\n     *       \"geometry\": {\n     *         \"type\": \"Point\",\n     *         \"coordinates\": [110, 50]\n     *       },\n     *       \"properties\": {},\n     *       \"bbox\": [110, 50, 110, 50]\n     *     }\n     *   ],\n     *   \"height\": 1,\n     *   \"leaf\": true,\n     *   \"minX\": 110,\n     *   \"minY\": 50,\n     *   \"maxX\": 110,\n     *   \"maxY\": 50\n     * }\n     * tree.fromJSON(exported)\n     */\n    tree.fromJSON = function (json) {\n        return rbush.prototype.fromJSON.call(this, json);\n    };\n\n    /**\n     * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n     *\n     * @private\n     * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n     * @returns {Object} converted to {minX, minY, maxX, maxY}\n     */\n    tree.toBBox = function (geojson) {\n        var bbox;\n        if (geojson.bbox) bbox = geojson.bbox;\n        else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n        else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n        else if (geojson.type === 'Feature') bbox = turfBBox(geojson);\n        else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson);\n        else throw new Error('invalid geojson')\n\n        return {\n            minX: bbox[0],\n            minY: bbox[1],\n            maxX: bbox[2],\n            maxY: bbox[3]\n        };\n    };\n    return tree;\n}\n\nmodule.exports = geojsonRbush;\nmodule.exports.default = geojsonRbush;\n","\"use strict\";\n\nexports.__esModule = true;\nvar generateHeatmap = exports.generateHeatmap = function generateHeatmap(instance, _ref) {\n  var positions = _ref.positions;\n  return new instance.visualization.HeatmapLayer({\n    data: positions.reduce(function (acc, _ref2) {\n      var lat = _ref2.lat,\n          lng = _ref2.lng,\n          _ref2$weight = _ref2.weight,\n          weight = _ref2$weight === undefined ? 1 : _ref2$weight;\n\n      acc.push({\n        location: new instance.LatLng(lat, lng),\n        weight: weight\n      });\n      return acc;\n    }, [])\n  });\n};\n\nvar optionsHeatmap = exports.optionsHeatmap = function optionsHeatmap(instance, _ref3) {\n  var _ref3$options = _ref3.options,\n      options = _ref3$options === undefined ? {} : _ref3$options;\n  return Object.keys(options).map(function (option) {\n    return instance.set(option, options[option]);\n  });\n};","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected;\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  /* eslint max-statements: [2, 50] */\n  var i, key;\n  if (typeof a !== typeof b) { return false; }\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if (aIsRegex || bIsRegex) {\n    return a.source === b.source && flags(a) === flags(b);\n  }\n\n  if (isDate(a) && isDate(b)) {\n    return getTime.call(a) === getTime.call(b);\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  try {\n    var ka = objectKeys(a);\n    var kb = objectKeys(b);\n  } catch (e) { // happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; }\n  }\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) { return false; }\n  }\n\n  return true;\n}\n\nmodule.exports = deepEqual;\n","const flatten = require('lodash/flatten')\nconst flattenDeep = require('lodash/flattenDeep')\nconst isPlainObject = require('lodash/isPlainObject')\nconst uniq = require('lodash/uniq')\nconst uniqWith = require('lodash/uniqWith')\nconst without = require('lodash/without')\n\nfunction deleteUndefinedProps(returnObject) {\n  // cleanup empty\n  for (const prop in returnObject) {\n    if (has(returnObject, prop) && isEmptySchema(returnObject[prop])) {\n      delete returnObject[prop]\n    }\n  }\n  return returnObject\n}\n\nconst allUniqueKeys = (arr) => uniq(flattenDeep(arr.map(keys)))\nconst getValues = (schemas, key) => schemas.map(schema => schema && schema[key])\nconst has = (obj, propName) => Object.prototype.hasOwnProperty.call(obj, propName)\nconst keys = obj => {\n  if (isPlainObject(obj) || Array.isArray(obj)) {\n    return Object.keys(obj)\n  } else {\n    return []\n  }\n}\n\nconst notUndefined = (val) => val !== undefined\nconst isSchema = (val) => isPlainObject(val) || val === true || val === false\nconst isEmptySchema = (obj) => (!keys(obj).length) && obj !== false && obj !== true\nconst withoutArr = (arr, ...rest) => without.apply(null, [arr].concat(flatten(rest)))\n\nmodule.exports = {\n  allUniqueKeys,\n  deleteUndefinedProps,\n  getValues,\n  has,\n  isEmptySchema,\n  isSchema,\n  keys,\n  notUndefined,\n  uniqWith,\n  withoutArr\n}\n","var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n","'use strict';\nvar getMediaSections = require('./').getMediaSections;\n/**\n * An {@link TrackMatcher} matches an RTCTrackEvent with a MediaStreamTrack\n * ID based on the MID of the underlying RTCRtpTransceiver.\n */\nvar TrackMatcher = /** @class */ (function () {\n    /**\n     * Construct an {@link TrackMatcher}.\n     */\n    function TrackMatcher() {\n        Object.defineProperties(this, {\n            _midsToTrackIds: {\n                value: new Map(),\n                writable: true\n            }\n        });\n    }\n    /**\n     * Match a given MediaStreamTrack with its ID.\n     * @param {RTCTrackEvent} event\n     * @returns {?Track.ID}\n     */\n    TrackMatcher.prototype.match = function (event) {\n        return this._midsToTrackIds.get(event.transceiver.mid) || null;\n    };\n    /**\n     * Update the {@link TrackMatcher} with a new SDP.\n     * @param {string} sdp\n     */\n    TrackMatcher.prototype.update = function (sdp) {\n        var sections = getMediaSections(sdp, '(audio|video)');\n        this._midsToTrackIds = sections.reduce(function (midsToTrackIds, section) {\n            var midMatches = section.match(/^a=mid:(.+)$/m) || [];\n            var trackIdMatches = section.match(/^a=msid:.+ (.+)$/m) || [];\n            var mid = midMatches[1];\n            var trackId = trackIdMatches[1];\n            return mid && trackId ? midsToTrackIds.set(mid, trackId) : midsToTrackIds;\n        }, this._midsToTrackIds);\n    };\n    return TrackMatcher;\n}());\nmodule.exports = TrackMatcher;\n//# sourceMappingURL=trackmatcher.js.map","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nmodule.exports = intersection;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar AudioTrack = require('./audiotrack');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar LocalMediaAudioTrack = mixinLocalMediaTrack(AudioTrack);\n/**\n * A {@link LocalAudioTrack} is an {@link AudioTrack} representing audio that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalAudioTrack#enable} and\n * {@link LocalAudioTrack#disable} or stopped completely with\n * {@link LocalAudioTrack#stop}.\n * @extends AudioTrack\n * @property {Track.ID} id - The {@link LocalAudioTrack}'s ID\n * @property {boolean} isMuted - Whether or not the audio source has stopped sending samples to the\n *   {@link LocalAudioTrack}; This can happen when the microphone is taken over by another application,\n *   mainly on mobile devices; When this property toggles, then <code>muted</code> and <code>unmuted</code>\n *   events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalAudioTrack} is\n *   stopped\n * @property {NoiseCancellation?} noiseCancellation - When a LocalAudioTrack is created\n *   with {@link NoiseCancellationOptions}, this property provides interface\n *   to enable or disable the noise cancellation at runtime.\n * @emits LocalAudioTrack#disabled\n * @emits LocalAudioTrack#enabled\n * @emits LocalAudioTrack#muted\n * @emits LocalAudioTrack#started\n * @emits LocalAudioTrack#stopped\n * @emits LocalAudioTrack#unmuted\n */\nvar LocalAudioTrack = /** @class */ (function (_super) {\n    __extends(LocalAudioTrack, _super);\n    /**\n     * Construct a {@link LocalAudioTrack} from a MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n     * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n     */\n    function LocalAudioTrack(mediaStreamTrack, options) {\n        var _this = this;\n        var noiseCancellation = (options === null || options === void 0 ? void 0 : options.noiseCancellation) || null;\n        _this = _super.call(this, mediaStreamTrack, options) || this;\n        var log = _this._log;\n        var _a = mediaStreamTrack.label, defaultDeviceLabel = _a === void 0 ? '' : _a;\n        var _b = mediaStreamTrack.getSettings(), _c = _b.deviceId, defaultDeviceId = _c === void 0 ? '' : _c, _d = _b.groupId, defaultGroupId = _d === void 0 ? '' : _d;\n        Object.defineProperties(_this, {\n            _currentDefaultDeviceInfo: {\n                value: { deviceId: defaultDeviceId, groupId: defaultGroupId, label: defaultDeviceLabel },\n                writable: true\n            },\n            _defaultDeviceCaptureMode: {\n                value: !isIOS()\n                    && _this._isCreatedByCreateLocalTracks\n                    && typeof navigator === 'object'\n                    && typeof navigator.mediaDevices === 'object'\n                    && typeof navigator.mediaDevices.addEventListener === 'function'\n                    && typeof navigator.mediaDevices.enumerateDevices === 'function'\n                    ? (options === null || options === void 0 ? void 0 : options.defaultDeviceCaptureMode) || 'auto'\n                    : 'manual'\n            },\n            _onDeviceChange: {\n                value: function () {\n                    navigator.mediaDevices.enumerateDevices().then(function (deviceInfos) {\n                        // NOTE(mmalavalli): In Chrome, when the default device changes, and we restart the LocalAudioTrack with\n                        // device ID \"default\", it will not switch to the new default device unless all LocalAudioTracks capturing\n                        // from the old default device are stopped. So, we restart the LocalAudioTrack with the actual device ID of\n                        // the new default device instead.\n                        var defaultDeviceInfo = deviceInfos.find(function (_a) {\n                            var deviceId = _a.deviceId, kind = _a.kind;\n                            return kind === 'audioinput' && deviceId !== 'default';\n                        });\n                        if (defaultDeviceInfo && ['deviceId', 'groupId'].some(function (prop) {\n                            return defaultDeviceInfo[prop] !== _this._currentDefaultDeviceInfo[prop];\n                        })) {\n                            log.info('Default device changed, restarting the LocalAudioTrack');\n                            log.debug(\"Old default device: \\\"\" + _this._currentDefaultDeviceInfo.deviceId + \"\\\" => \\\"\" + _this._currentDefaultDeviceInfo.label + \"\\\"\");\n                            log.debug(\"New default device: \\\"\" + defaultDeviceInfo.deviceId + \"\\\" => \\\"\" + defaultDeviceInfo.label + \"\\\"\");\n                            _this._currentDefaultDeviceInfo = defaultDeviceInfo;\n                            _this._restartDefaultDevice().catch(function (error) { return log.warn(\"Failed to restart: \" + error.message); });\n                        }\n                    }, function (error) {\n                        log.warn(\"Failed to run enumerateDevices(): \" + error.message);\n                    });\n                }\n            },\n            _restartOnDefaultDeviceChangeCleanup: {\n                value: null,\n                writable: true\n            },\n            noiseCancellation: {\n                enumerable: true,\n                value: noiseCancellation,\n                writable: false\n            },\n        });\n        log.debug('defaultDeviceCaptureMode:', _this._defaultDeviceCaptureMode);\n        _this._maybeRestartOnDefaultDeviceChange();\n        return _this;\n    }\n    LocalAudioTrack.prototype.toString = function () {\n        return \"[LocalAudioTrack #\" + this._instanceId + \": \" + this.id + \"]\";\n    };\n    LocalAudioTrack.prototype.attach = function (el) {\n        el = _super.prototype.attach.call(this, el);\n        el.muted = true;\n        return el;\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._end = function () {\n        return _super.prototype._end.apply(this, arguments);\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._maybeRestartOnDefaultDeviceChange = function () {\n        var _this = this;\n        var _a = this, constraints = _a._constraints, defaultDeviceCaptureMode = _a._defaultDeviceCaptureMode, log = _a._log;\n        var mediaStreamTrack = this.noiseCancellation ? this.noiseCancellation.sourceTrack : this.mediaStreamTrack;\n        var deviceId = mediaStreamTrack.getSettings().deviceId;\n        var isNotEqualToCapturedDeviceIdOrEqualToDefault = function (requestedDeviceId) {\n            return requestedDeviceId !== deviceId || requestedDeviceId === 'default';\n        };\n        var isCapturingFromDefaultDevice = (function checkIfCapturingFromDefaultDevice(deviceIdConstraint) {\n            if (deviceIdConstraint === void 0) { deviceIdConstraint = {}; }\n            if (typeof deviceIdConstraint === 'string') {\n                return isNotEqualToCapturedDeviceIdOrEqualToDefault(deviceIdConstraint);\n            }\n            else if (Array.isArray(deviceIdConstraint)) {\n                return deviceIdConstraint.every(isNotEqualToCapturedDeviceIdOrEqualToDefault);\n            }\n            else if (deviceIdConstraint.exact) {\n                return checkIfCapturingFromDefaultDevice(deviceIdConstraint.exact);\n            }\n            else if (deviceIdConstraint.ideal) {\n                return checkIfCapturingFromDefaultDevice(deviceIdConstraint.ideal);\n            }\n            return true;\n        }(constraints.deviceId));\n        if (defaultDeviceCaptureMode === 'auto' && isCapturingFromDefaultDevice) {\n            if (!this._restartOnDefaultDeviceChangeCleanup) {\n                log.info('LocalAudioTrack will be restarted if the default device changes');\n                navigator.mediaDevices.addEventListener('devicechange', this._onDeviceChange);\n                this._restartOnDefaultDeviceChangeCleanup = function () {\n                    log.info('Cleaning up the listener to restart the LocalAudioTrack if the default device changes');\n                    navigator.mediaDevices.removeEventListener('devicechange', _this._onDeviceChange);\n                    _this._restartOnDefaultDeviceChangeCleanup = null;\n                };\n            }\n        }\n        else {\n            log.info('LocalAudioTrack will NOT be restarted if the default device changes');\n            if (this._restartOnDefaultDeviceChangeCleanup) {\n                this._restartOnDefaultDeviceChangeCleanup();\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._reacquireTrack = function (constraints) {\n        var _this = this;\n        this._log.debug('_reacquireTrack: ', constraints);\n        if (this.noiseCancellation) {\n            return this.noiseCancellation.reacquireTrack(function () {\n                return _super.prototype._reacquireTrack.call(_this, constraints);\n            });\n        }\n        return _super.prototype._reacquireTrack.call(this, constraints);\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._restartDefaultDevice = function () {\n        var _this = this;\n        var constraints = Object.assign({}, this._constraints);\n        var restartConstraints = Object.assign({}, constraints, { deviceId: this._currentDefaultDeviceInfo.deviceId });\n        return this.restart(restartConstraints).then(function () {\n            // NOTE(mmalavalli): Since we used the new default device's ID while restarting the LocalAudioTrack,\n            // we reset the constraints to the original constraints so that the default device detection logic in\n            // _maybeRestartOnDefaultDeviceChange() still works.\n            _this._constraints = constraints;\n            _this._maybeRestartOnDefaultDeviceChange();\n        });\n    };\n    /**\n     * Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.\n     * @returns {this}\n     * @fires LocalAudioTrack#disabled\n     */\n    LocalAudioTrack.prototype.disable = function () {\n        return _super.prototype.disable.apply(this, arguments);\n    };\n    /**\n     * Enable the {@link LocalAudioTrack}. This is equivalent to unmuting the audio source.\n     * @returns {this}\n     * @fires LocalAudioTrack#enabled\n    */ /**\n     * Enable or disable the {@link LocalAudioTrack}. This is equivalent to unmuting or muting\n     * the audio source respectively.\n     * @param {boolean} [enabled] - Specify false to disable the\n     *   {@link LocalAudioTrack}\n     * @returns {this}\n     * @fires LocalAudioTrack#disabled\n     * @fires LocalAudioTrack#enabled\n     */\n    LocalAudioTrack.prototype.enable = function () {\n        return _super.prototype.enable.apply(this, arguments);\n    };\n    /**\n     * Restart the {@link LocalAudioTrack}. This stops the existing MediaStreamTrack\n     * and creates a new MediaStreamTrack. If the {@link LocalAudioTrack} is being published\n     * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n     * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n     * the <code>mediaStreamTrack</code> property. If you want to listen to events on\n     * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n     * the {@link LocalAudioTrack}'s ID is no longer guaranteed to be the same as the\n     * underlying MediaStreamTrack's ID.\n     * @param {MediaTrackConstraints} [constraints] - The optional <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n     *   for restarting the {@link LocalAudioTrack}; If not specified, then the current MediaTrackConstraints\n     *   will be used; If <code>{}</code> (empty object) is specified, then the default MediaTrackConstraints\n     *   will be used\n     * @returns {Promise<void>} Rejects with a TypeError if the {@link LocalAudioTrack} was not created\n     *   using an one of <code>createLocalAudioTrack</code>, <code>createLocalTracks</code> or <code>connect</code>;\n     *   Also rejects with the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Exceptions\" target=\"_blank\">DOMException</a>\n     *   raised by <code>getUserMedia</code> when it fails\n     * @fires LocalAudioTrack#stopped\n     * @fires LocalAudioTrack#started\n     * @example\n     * const { connect, createLocalAudioTrack } = require('twilio-video');\n     *\n     * // Create a LocalAudioTrack that captures audio from a USB microphone.\n     * createLocalAudioTrack({ deviceId: 'usb-mic-id' }).then(function(localAudioTrack) {\n     *   return connect('token', {\n     *     name: 'my-cool-room',\n     *     tracks: [localAudioTrack]\n     *   });\n     * }).then(function(room) {\n     *   // Restart the LocalAudioTrack to capture audio from the default microphone.\n     *   const localAudioTrack = Array.from(room.localParticipant.audioTracks.values())[0].track;\n     *   return localAudioTrack.restart({ deviceId: 'default-mic-id' });\n     * });\n     */\n    LocalAudioTrack.prototype.restart = function () {\n        return _super.prototype.restart.apply(this, arguments);\n    };\n    /**\n     * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n     * {@link LocalAudioTrack}, you should unpublish it after stopping.\n     * @returns {this}\n     * @fires LocalAudioTrack#stopped\n     */\n    LocalAudioTrack.prototype.stop = function () {\n        if (this.noiseCancellation) {\n            this.noiseCancellation.stop();\n        }\n        if (this._restartOnDefaultDeviceChangeCleanup) {\n            this._restartOnDefaultDeviceChangeCleanup();\n        }\n        return _super.prototype.stop.apply(this, arguments);\n    };\n    return LocalAudioTrack;\n}(LocalMediaAudioTrack));\n/**\n * The {@link LocalAudioTrack} was disabled, i.e. the audio source was muted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was\n *   disabled\n * @event LocalAudioTrack#disabled\n */\n/**\n * The {@link LocalAudioTrack} was enabled, i.e. the audio source was unmuted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was enabled\n * @event LocalAudioTrack#enabled\n */\n/**\n * The {@link LocalAudioTrack} was muted because the audio source stopped sending samples, most\n * likely due to another application taking said audio source, especially on mobile devices.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was muted\n * @event LocalAudioTrack#muted\n */\n/**\n * The {@link LocalAudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that started\n * @event LocalAudioTrack#started\n */\n/**\n * The {@link LocalAudioTrack} stopped, either because {@link LocalAudioTrack#stop}\n * or {@link LocalAudioTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that stopped\n * @event LocalAudioTrack#stopped\n */\n/**\n * The {@link LocalAudioTrack} was unmuted because the audio source resumed sending samples,\n * most likely due to the application that took over the said audio source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalAudioTrack#restart} is called on a muted {@link LocalAudioTrack} with a\n * new audio source.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was unmuted\n * @event LocalAudioTrack#unmuted\n */\nmodule.exports = LocalAudioTrack;\n//# sourceMappingURL=localaudiotrack.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = isObject(regexp) ? getMethod(regexp, SEARCH) : undefined;\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","/* globals RTCPeerConnection, RTCRtpTransceiver */\n'use strict';\nvar _a = require('./'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser;\n// NOTE(mmalavalli): We cache Chrome's sdpSemantics support in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar isSdpSemanticsSupported = null;\n/**\n * Check if Chrome supports specifying sdpSemantics for an RTCPeerConnection.\n * @return {boolean}\n */\nfunction checkIfSdpSemanticsIsSupported() {\n    if (typeof isSdpSemanticsSupported === 'boolean') {\n        return isSdpSemanticsSupported;\n    }\n    if (typeof RTCPeerConnection === 'undefined') {\n        isSdpSemanticsSupported = false;\n        return isSdpSemanticsSupported;\n    }\n    try {\n        // eslint-disable-next-line no-new\n        new RTCPeerConnection({ sdpSemantics: 'foo' });\n        isSdpSemanticsSupported = false;\n    }\n    catch (e) {\n        isSdpSemanticsSupported = true;\n    }\n    return isSdpSemanticsSupported;\n}\n// NOTE(mmalavalli): We cache Chrome's SDP format in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar chromeSdpFormat = null;\n/**\n * Clear cached Chrome's SDP format\n */\nfunction clearChromeCachedSdpFormat() {\n    chromeSdpFormat = null;\n}\n/**\n * Get Chrome's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getChromeDefaultSdpFormat() {\n    if (!chromeSdpFormat) {\n        if (typeof RTCPeerConnection !== 'undefined'\n            && 'addTransceiver' in RTCPeerConnection.prototype) {\n            var pc = new RTCPeerConnection();\n            try {\n                pc.addTransceiver('audio');\n                chromeSdpFormat = 'unified';\n            }\n            catch (e) {\n                chromeSdpFormat = 'planb';\n            }\n            pc.close();\n        }\n        else {\n            chromeSdpFormat = 'planb';\n        }\n    }\n    return chromeSdpFormat;\n}\n/**\n * Get Chrome's SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getChromeSdpFormat(sdpSemantics) {\n    if (!sdpSemantics || !checkIfSdpSemanticsIsSupported()) {\n        return getChromeDefaultSdpFormat();\n    }\n    return {\n        'plan-b': 'planb',\n        'unified-plan': 'unified'\n    }[sdpSemantics];\n}\n/**\n * Get Safari's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getSafariSdpFormat() {\n    return typeof RTCRtpTransceiver !== 'undefined'\n        && 'currentDirection' in RTCRtpTransceiver.prototype\n        ? 'unified'\n        : 'planb';\n}\n/**\n * Get the browser's default SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getSdpFormat(sdpSemantics) {\n    return {\n        chrome: getChromeSdpFormat(sdpSemantics),\n        firefox: 'unified',\n        safari: getSafariSdpFormat()\n    }[guessBrowser()] || null;\n}\n/**\n * Match a pattern across lines, returning the first capture group for any\n * matches.\n * @param {string} pattern\n * @param {string} lines\n * @returns {Set<string>} matches\n */\nfunction getMatches(pattern, lines) {\n    var matches = lines.match(new RegExp(pattern, 'gm')) || [];\n    return matches.reduce(function (results, line) {\n        var match = line.match(new RegExp(pattern));\n        return match ? results.add(match[1]) : results;\n    }, new Set());\n}\n/**\n * Get a Set of MediaStreamTrack IDs from an SDP.\n * @param {string} pattern\n * @param {string} sdp\n * @returns {Set<string>}\n */\nfunction getTrackIds(pattern, sdp) {\n    return getMatches(pattern, sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Set<string>} trackIds\n */\nfunction getPlanBTrackIds(sdp) {\n    return getTrackIds('^a=ssrc:[0-9]+ +msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @returns {Set<string>} trackIds\n */\nfunction getUnifiedPlanTrackIds(sdp) {\n    return getTrackIds('^a=msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set<string>}\n */\nfunction getPlanBSSRCs(sdp, trackId) {\n    var pattern = \"^a=ssrc:([0-9]+) +msid:[^ ]+ +\" + trackId + \" *$\";\n    return getMatches(pattern, sdp);\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp -  sdp string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n    if (kind === void 0) { kind = '.*'; }\n    if (direction === void 0) { direction = '.*'; }\n    return sdp.split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\" + mediaSection; }).filter(function (mediaSection) {\n        var kindPattern = new RegExp(\"m=\" + kind, 'gm');\n        var directionPattern = new RegExp(\"a=\" + direction, 'gm');\n        return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n    });\n}\n/**\n * Get the Set of SSRCs announced in a MediaSection.\n * @param {string} mediaSection\n * @returns {Array<string>} ssrcs\n */\nfunction getMediaSectionSSRCs(mediaSection) {\n    return Array.from(getMatches('^a=ssrc:([0-9]+) +.*$', mediaSection));\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set<string>}\n */\nfunction getUnifiedPlanSSRCs(sdp, trackId) {\n    var mediaSections = getMediaSections(sdp);\n    var msidAttrRegExp = new RegExp(\"^a=msid:[^ ]+ +\" + trackId + \" *$\", 'gm');\n    var matchingMediaSections = mediaSections.filter(function (mediaSection) { return mediaSection.match(msidAttrRegExp); });\n    return new Set(flatMap(matchingMediaSections, getMediaSectionSSRCs));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from an SDP.\n * @param {function(string): Set<string>} getTrackIds\n * @param {function(string, string): Set<string>} getSSRCs\n * @param {string} sdp - SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getTrackIdsToSSRCs(getTrackIds, getSSRCs, sdp) {\n    return new Map(Array.from(getTrackIds(sdp)).map(function (trackId) { return [trackId, getSSRCs(sdp, trackId)]; }));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getPlanBTrackIdsToSSRCs(sdp) {\n    return getTrackIdsToSSRCs(getPlanBTrackIds, getPlanBSSRCs, sdp);\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getUnifiedPlanTrackIdsToSSRCs(sdp) {\n    return getTrackIdsToSSRCs(getUnifiedPlanTrackIds, getUnifiedPlanSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {function(string): Map<string, Set<string>>} getTrackIdsToSSRCs\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - SDP\n * @returns {strinng} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(getTrackIdsToSSRCs, trackIdsToSSRCs, sdp) {\n    var newTrackIdsToSSRCs = getTrackIdsToSSRCs(sdp);\n    var newSSRCsToOldSSRCs = new Map();\n    // NOTE(mroberts): First, update a=ssrc attributes.\n    newTrackIdsToSSRCs.forEach(function (ssrcs, trackId) {\n        if (!trackIdsToSSRCs.has(trackId)) {\n            trackIdsToSSRCs.set(trackId, ssrcs);\n            return;\n        }\n        var oldSSRCs = Array.from(trackIdsToSSRCs.get(trackId));\n        var newSSRCs = Array.from(ssrcs);\n        oldSSRCs.forEach(function (oldSSRC, i) {\n            var newSSRC = newSSRCs[i];\n            newSSRCsToOldSSRCs.set(newSSRC, oldSSRC);\n            var pattern = \"^a=ssrc:\" + newSSRC + \" (.*)$\";\n            var replacement = \"a=ssrc:\" + oldSSRC + \" $1\";\n            sdp = sdp.replace(new RegExp(pattern, 'gm'), replacement);\n        });\n    });\n    // NOTE(mroberts): Then, update a=ssrc-group attributes.\n    var pattern = '^(a=ssrc-group:[^ ]+ +)(.*)$';\n    var matches = sdp.match(new RegExp(pattern, 'gm')) || [];\n    matches.forEach(function (line) {\n        var match = line.match(new RegExp(pattern));\n        if (!match) {\n            return;\n        }\n        var prefix = match[1];\n        var newSSRCs = match[2];\n        var oldSSRCs = newSSRCs.split(' ').map(function (newSSRC) {\n            var oldSSRC = newSSRCsToOldSSRCs.get(newSSRC);\n            return oldSSRC ? oldSSRC : newSSRC;\n        }).join(' ');\n        sdp = sdp.replace(match[0], prefix + oldSSRCs);\n    });\n    return sdp;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updatePlanBTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n    return updateTrackIdsToSSRCs(getPlanBTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updateUnifiedPlanTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n    return updateTrackIdsToSSRCs(getUnifiedPlanTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\nexports.clearChromeCachedSdpFormat = clearChromeCachedSdpFormat;\nexports.getSdpFormat = getSdpFormat;\nexports.getMediaSections = getMediaSections;\nexports.getPlanBTrackIds = getPlanBTrackIds;\nexports.getUnifiedPlanTrackIds = getUnifiedPlanTrackIds;\nexports.getPlanBSSRCs = getPlanBSSRCs;\nexports.getUnifiedPlanSSRCs = getUnifiedPlanSSRCs;\nexports.updatePlanBTrackIdsToSSRCs = updatePlanBTrackIdsToSSRCs;\nexports.updateUnifiedPlanTrackIdsToSSRCs = updateUnifiedPlanTrackIdsToSSRCs;\n//# sourceMappingURL=sdp.js.map","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months =\n            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n                '_'\n            ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","'use strict';\nvar NetworkQualitySendStats = require('./networkqualitysendstats');\nvar NetworkQualityRecvStats = require('./networkqualityrecvstats');\n/**\n * Network quality statistics shared between a {@link Participant}'s audio or video.\n * @property {NetworkQualityLevel} send - {@link NetworkQualityLevel} of the\n *  {@link Participant}'s published audio or video\n * @property {number} recv - {@link NetworkQualityLevel} of the\n *  {@link Participant}'s subscribed audio or video\n * @property {?NetworkQualitySendOrRecvStats} sendStats - {@link NetworkQualitySendOrRecvStats}\n *   based on which {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code>\n *   is calculated\n * @property {?NetworkQualitySendOrRecvStats} recvStats - {@link NetworkQualitySendOrRecvStats}\n *   based on which {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code>\n *   is calculated\n */\nvar NetworkQualityMediaStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityMediaStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityMediaStats(_a) {\n        var send = _a.send, recv = _a.recv, _b = _a.sendStats, sendStats = _b === void 0 ? null : _b, _c = _a.recvStats, recvStats = _c === void 0 ? null : _c;\n        Object.defineProperties(this, {\n            send: {\n                value: send,\n                enumerable: true\n            },\n            recv: {\n                value: recv,\n                enumerable: true\n            },\n            sendStats: {\n                value: sendStats ? new NetworkQualitySendStats(sendStats) : null,\n                enumerable: true\n            },\n            recvStats: {\n                value: recvStats ? new NetworkQualityRecvStats(recvStats) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityMediaStats;\n}());\nmodule.exports = NetworkQualityMediaStats;\n//# sourceMappingURL=networkqualitymediastats.js.map","\"use strict\";\n\nvar Distance = require(\"./distance.js\"),\n    eudist = Distance.eudist,\n    dist = Distance.dist;\n\nmodule.exports = {\n\tkmrand: function kmrand(data, k) {\n\t\tvar map = {},\n\t\t    ks = [],\n\t\t    t = k << 2;\n\t\tvar len = data.length;\n\t\tvar multi = data[0].length > 0;\n\n\t\twhile (ks.length < k && t-- > 0) {\n\t\t\tvar d = data[Math.floor(Math.random() * len)];\n\t\t\tvar key = multi ? d.join(\"_\") : \"\" + d;\n\t\t\tif (!map[key]) {\n\t\t\t\tmap[key] = true;\n\t\t\t\tks.push(d);\n\t\t\t}\n\t\t}\n\n\t\tif (ks.length < k) throw new Error(\"Error initializating clusters\");else return ks;\n\t},\n\n\n\t/**\n  * K-means++ initial centroid selection\n  */\n\tkmpp: function kmpp(data, k) {\n\t\tvar distance = data[0].length ? eudist : dist;\n\t\tvar ks = [],\n\t\t    len = data.length;\n\t\tvar multi = data[0].length > 0;\n\t\tvar map = {};\n\n\t\t// First random centroid\n\t\tvar c = data[Math.floor(Math.random() * len)];\n\t\tvar key = multi ? c.join(\"_\") : \"\" + c;\n\t\tks.push(c);\n\t\tmap[key] = true;\n\n\t\t// Retrieve next centroids\n\t\twhile (ks.length < k) {\n\t\t\t// Min Distances between current centroids and data points\n\t\t\tvar dists = [],\n\t\t\t    lk = ks.length;\n\t\t\tvar dsum = 0,\n\t\t\t    prs = [];\n\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar min = Infinity;\n\t\t\t\tfor (var j = 0; j < lk; j++) {\n\t\t\t\t\tvar _dist = distance(data[i], ks[j]);\n\t\t\t\t\tif (_dist <= min) min = _dist;\n\t\t\t\t}\n\t\t\t\tdists[i] = min;\n\t\t\t}\n\n\t\t\t// Sum all min distances\n\t\t\tfor (var _i = 0; _i < len; _i++) {\n\t\t\t\tdsum += dists[_i];\n\t\t\t}\n\n\t\t\t// Probabilities and cummulative prob (cumsum)\n\t\t\tfor (var _i2 = 0; _i2 < len; _i2++) {\n\t\t\t\tprs[_i2] = { i: _i2, v: data[_i2], pr: dists[_i2] / dsum, cs: 0 };\n\t\t\t}\n\n\t\t\t// Sort Probabilities\n\t\t\tprs.sort(function (a, b) {\n\t\t\t\treturn a.pr - b.pr;\n\t\t\t});\n\n\t\t\t// Cummulative Probabilities\n\t\t\tprs[0].cs = prs[0].pr;\n\t\t\tfor (var _i3 = 1; _i3 < len; _i3++) {\n\t\t\t\tprs[_i3].cs = prs[_i3 - 1].cs + prs[_i3].pr;\n\t\t\t}\n\n\t\t\t// Randomize\n\t\t\tvar rnd = Math.random();\n\n\t\t\t// Gets only the items whose cumsum >= rnd\n\t\t\tvar idx = 0;\n\t\t\twhile (idx < len - 1 && prs[idx++].cs < rnd) {}\n\t\t\tks.push(prs[idx - 1].v);\n\t\t\t/*\n   let done = false;\n   while(!done) {\n   \t// this is our new centroid\n   \tc = prs[idx-1].v\n   \tkey = multi? c.join(\"_\") : `${c}`;\n   \tif(!map[key]) {\n   \t\tmap[key] = true;\n   \t\tks.push(c);\n   \t\tdone = true;\n   \t}\n   \telse {\n   \t\tidx++;\n   \t}\n   }\n   */\n\t\t}\n\n\t\treturn ks;\n\t}\n};\n//# sourceMappingURL=kinit.js.map\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(num, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['çend sanîye', 'çend sanîyeyan'],\n            ss: [num + ' sanîye', num + ' sanîyeyan'],\n            m: ['deqîqeyek', 'deqîqeyekê'],\n            mm: [num + ' deqîqe', num + ' deqîqeyan'],\n            h: ['saetek', 'saetekê'],\n            hh: [num + ' saet', num + ' saetan'],\n            d: ['rojek', 'rojekê'],\n            dd: [num + ' roj', num + ' rojan'],\n            w: ['hefteyek', 'hefteyekê'],\n            ww: [num + ' hefte', num + ' hefteyan'],\n            M: ['mehek', 'mehekê'],\n            MM: [num + ' meh', num + ' mehan'],\n            y: ['salek', 'salekê'],\n            yy: [num + ' sal', num + ' salan'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    // function obliqueNumSuffix(num) {\n    //     if(num.includes(':'))\n    //         num = parseInt(num.split(':')[0]);\n    //     else\n    //         num = parseInt(num);\n    //     return num == 0 || num % 10 == 1 ? 'ê'\n    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n    // }\n    function ezafeNumSuffix(num) {\n        num = '' + num;\n        var l = num.substring(num.length - 1),\n            ll = num.length > 1 ? num.substring(num.length - 2) : '';\n        if (\n            !(ll == 12 || ll == 13) &&\n            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n        )\n            return 'yê';\n        return 'ê';\n    }\n\n    var kuKmr = moment.defineLocale('ku-kmr', {\n        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n        // But the names below are more well known and handy\n        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n            '_'\n        ),\n        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'bn' : 'BN';\n            } else {\n                return isLower ? 'pn' : 'PN';\n            }\n        },\n        meridiemParse: /bn|BN|pn|PN/,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[a] YYYY[an]',\n            LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n            ll: 'Do MMM[.] YYYY[an]',\n            lll: 'Do MMM[.] YYYY[an] HH:mm',\n            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Îro di saet] LT [de]',\n            nextDay: '[Sibê di saet] LT [de]',\n            nextWeek: 'dddd [di saet] LT [de]',\n            lastDay: '[Duh di saet] LT [de]',\n            lastWeek: 'dddd[a borî di saet] LT [de]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'di %s de',\n            past: 'berî %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n        ordinal: function (num, period) {\n            var p = period.toLowerCase();\n            if (p.includes('w') || p.includes('m')) return num + '.';\n\n            return num + ezafeNumSuffix(num);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return kuKmr;\n\n})));\n","'use strict';\n/**\n * @private\n * Represents a warning encountered when\n * interacting with one of Twilio's services.\n */\n// eslint-disable-next-line\nvar TwilioWarning = {\n    recordingMediaLost: 'recording-media-lost'\n};\nmodule.exports = TwilioWarning;\n//# sourceMappingURL=twiliowarning.js.map","\"use strict\";\n/** @module path */ /** for typedoc */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar targetState_1 = require(\"../state/targetState\");\nvar pathNode_1 = require(\"./pathNode\");\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nvar PathUtils = /** @class */ (function () {\n    function PathUtils() {\n    }\n    /** Given a PathNode[], create an TargetState */\n    PathUtils.makeTargetState = function (registry, path) {\n        var state = common_1.tail(path).state;\n        return new targetState_1.TargetState(registry, state, path.map(hof_1.prop('paramValues')).reduce(common_1.mergeR, {}), {});\n    };\n    PathUtils.buildPath = function (targetState) {\n        var toParams = targetState.params();\n        return targetState.$state().path.map(function (state) { return new pathNode_1.PathNode(state).applyRawParams(toParams); });\n    };\n    /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n    PathUtils.buildToPath = function (fromPath, targetState) {\n        var toPath = PathUtils.buildPath(targetState);\n        if (targetState.options().inherit) {\n            return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n        }\n        return toPath;\n    };\n    /**\n     * Creates ViewConfig objects and adds to nodes.\n     *\n     * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n     */\n    PathUtils.applyViewConfigs = function ($view, path, states) {\n        // Only apply the viewConfigs to the nodes for the given states\n        path.filter(function (node) { return common_1.inArray(states, node.state); }).forEach(function (node) {\n            var viewDecls = common_1.values(node.state.views || {});\n            var subPath = PathUtils.subPath(path, function (n) { return n === node; });\n            var viewConfigs = viewDecls.map(function (view) { return $view.createViewConfig(subPath, view); });\n            node.views = viewConfigs.reduce(common_1.unnestR, []);\n        });\n    };\n    /**\n     * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n     *\n     * For a parameter in a node to be inherited from the from path:\n     * - The toPath's node must have a matching node in the fromPath (by state).\n     * - The parameter name must not be found in the toKeys parameter array.\n     *\n     * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n     * caller, for instance, $state.transitionTo(..., toParams).  If a key was found in toParams,\n     * it is not inherited from the fromPath.\n     */\n    PathUtils.inheritParams = function (fromPath, toPath, toKeys) {\n        if (toKeys === void 0) { toKeys = []; }\n        function nodeParamVals(path, state) {\n            var node = common_1.find(path, hof_1.propEq('state', state));\n            return common_1.extend({}, node && node.paramValues);\n        }\n        var noInherit = fromPath.map(function (node) { return node.paramSchema; })\n            .reduce(common_1.unnestR, [])\n            .filter(function (param) { return !param.inherit; })\n            .map(hof_1.prop('id'));\n        /**\n         * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n         * matching node in fromPath.  Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n         */\n        function makeInheritedParamsNode(toNode) {\n            // All param values for the node (may include default key/vals, when key was not found in toParams)\n            var toParamVals = common_1.extend({}, toNode && toNode.paramValues);\n            // limited to only those keys found in toParams\n            var incomingParamVals = common_1.pick(toParamVals, toKeys);\n            toParamVals = common_1.omit(toParamVals, toKeys);\n            var fromParamVals = common_1.omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n            // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n            var ownParamVals = common_1.extend(toParamVals, fromParamVals, incomingParamVals);\n            return new pathNode_1.PathNode(toNode.state).applyRawParams(ownParamVals);\n        }\n        // The param keys specified by the incoming toParams\n        return toPath.map(makeInheritedParamsNode);\n    };\n    /**\n     * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n     */\n    PathUtils.treeChanges = function (fromPath, toPath, reloadState) {\n        var max = Math.min(fromPath.length, toPath.length);\n        var keep = 0;\n        var nodesMatch = function (node1, node2) {\n            return node1.equals(node2, PathUtils.nonDynamicParams);\n        };\n        while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n            keep++;\n        }\n        /** Given a retained node, return a new node which uses the to node's param values */\n        function applyToParams(retainedNode, idx) {\n            var cloned = retainedNode.clone();\n            cloned.paramValues = toPath[idx].paramValues;\n            return cloned;\n        }\n        var from, retained, exiting, entering, to;\n        from = fromPath;\n        retained = from.slice(0, keep);\n        exiting = from.slice(keep);\n        // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n        var retainedWithToParams = retained.map(applyToParams);\n        entering = toPath.slice(keep);\n        to = (retainedWithToParams).concat(entering);\n        return { from: from, to: to, retained: retained, retainedWithToParams: retainedWithToParams, exiting: exiting, entering: entering };\n    };\n    /**\n     * Returns a new path which is: the subpath of the first path which matches the second path.\n     *\n     * The new path starts from root and contains any nodes that match the nodes in the second path.\n     * It stops before the first non-matching node.\n     *\n     * Nodes are compared using their state property and their parameter values.\n     * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n     *\n     * @param pathA the first path\n     * @param pathB the second path\n     * @param paramsFn a function which returns the parameters to consider when comparing\n     *\n     * @returns an array of PathNodes from the first path which match the nodes in the second path\n     */\n    PathUtils.matching = function (pathA, pathB, paramsFn) {\n        var done = false;\n        var tuples = common_1.arrayTuples(pathA, pathB);\n        return tuples.reduce(function (matching, _a) {\n            var nodeA = _a[0], nodeB = _a[1];\n            done = done || !nodeA.equals(nodeB, paramsFn);\n            return done ? matching : matching.concat(nodeA);\n        }, []);\n    };\n    /**\n     * Returns true if two paths are identical.\n     *\n     * @param pathA\n     * @param pathB\n     * @param paramsFn a function which returns the parameters to consider when comparing\n     * @returns true if the the states and parameter values for both paths are identical\n     */\n    PathUtils.equals = function (pathA, pathB, paramsFn) {\n        return pathA.length === pathB.length &&\n            PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n    };\n    /**\n     * Return a subpath of a path, which stops at the first matching node\n     *\n     * Given an array of nodes, returns a subset of the array starting from the first node,\n     * stopping when the first node matches the predicate.\n     *\n     * @param path a path of [[PathNode]]s\n     * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n     * @returns a subpath up to the matching node, or undefined if no match is found\n     */\n    PathUtils.subPath = function (path, predicate) {\n        var node = common_1.find(path, predicate);\n        var elementIdx = path.indexOf(node);\n        return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n    };\n    PathUtils.nonDynamicParams = function (node) {\n        return node.state.parameters({ inherit: false })\n            .filter(function (param) { return !param.dynamic; });\n    };\n    /** Gets the raw parameter values from a path */\n    PathUtils.paramValues = function (path) {\n        return path.reduce(function (acc, node) { return common_1.extend(acc, node.paramValues); }, {});\n    };\n    return PathUtils;\n}());\nexports.PathUtils = PathUtils;\n//# sourceMappingURL=pathUtils.js.map","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n  var styles = window.getComputedStyle(element);\n  var top = parseFloat(styles.marginTop) || 0;\n  var right = parseFloat(styles.marginRight) || 0;\n  var bottom = parseFloat(styles.marginBottom) || 0;\n  var left = parseFloat(styles.marginLeft) || 0;\n  return {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left\n  };\n}\n\nexport default function usePopperMarginModifiers() {\n  var overlayRef = useRef(null);\n  var margins = useRef(null);\n  var popoverClass = useBootstrapPrefix(undefined, 'popover');\n  var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n  var callback = useCallback(function (overlay) {\n    if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n    margins.current = getMargins(overlay);\n    overlay.style.margin = '0';\n    overlayRef.current = overlay;\n  }, [popoverClass, dropdownMenuClass]);\n  var offset = useMemo(function () {\n    return {\n      name: 'offset',\n      options: {\n        offset: function offset(_ref) {\n          var placement = _ref.placement;\n          if (!margins.current) return [0, 0];\n          var _margins$current = margins.current,\n              top = _margins$current.top,\n              left = _margins$current.left,\n              bottom = _margins$current.bottom,\n              right = _margins$current.right;\n\n          switch (placement.split('-')[0]) {\n            case 'top':\n              return [0, bottom];\n\n            case 'left':\n              return [0, right];\n\n            case 'bottom':\n              return [0, top];\n\n            case 'right':\n              return [0, left];\n\n            default:\n              return [0, 0];\n          }\n        }\n      }\n    };\n  }, [margins]); // Converts popover arrow margin to arrow modifier padding\n\n  var popoverArrowMargins = useMemo(function () {\n    return {\n      name: 'popoverArrowMargins',\n      enabled: true,\n      phase: 'main.79caed11',\n      requiresIfExists: ['arrow'],\n      effect: function effect(_ref2) {\n        var state = _ref2.state;\n\n        if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass) || !state.modifiersData['arrow#persistent']) {\n          return undefined;\n        }\n\n        var _getMargins = getMargins(state.elements.arrow),\n            top = _getMargins.top,\n            right = _getMargins.right;\n\n        var padding = top || right;\n        state.modifiersData['arrow#persistent'].padding = {\n          top: padding,\n          left: padding,\n          right: padding,\n          bottom: padding\n        };\n        state.elements.arrow.style.margin = '0';\n        return function () {\n          if (state.elements.arrow) state.elements.arrow.style.margin = '';\n        };\n      }\n    };\n  }, [popoverClass]);\n  return [callback, [offset, popoverArrowMargins]];\n}","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisIntegerArray = require( 'validate.io-integer-array' ),\n\tisFunction = require( 'validate.io-function' );\n\n\n// VARIABLES //\n\nvar MAXINT = Math.pow( 2, 31 ) - 1;\n\n\n// FUNCTIONS //\n\n/**\n* FUNCTION: gcd( a, b )\n*\tComputes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm.\n*\n* @param {Number} a - integer\n* @param {Number} b - integer\n* @returns {Number} greatest common divisor\n*/\nfunction gcd( a, b ) {\n\tvar k = 1,\n\t\tt;\n\t// Simple cases:\n\tif ( a === 0 ) {\n\t\treturn b;\n\t}\n\tif ( b === 0 ) {\n\t\treturn a;\n\t}\n\t// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...\n\twhile ( a%2 === 0 && b%2 === 0 ) {\n\t\ta = a / 2; // right shift\n\t\tb = b / 2; // right shift\n\t\tk = k * 2; // left shift\n\t}\n\t// Reduce `a` to an odd number...\n\twhile ( a%2 === 0 ) {\n\t\ta = a / 2; // right shift\n\t}\n\t// Henceforth, `a` is always odd...\n\twhile ( b ) {\n\t\t// Remove all factors of 2 in `b`, as they are not common...\n\t\twhile ( b%2 === 0 ) {\n\t\t\tb = b / 2; // right shift\n\t\t}\n\t\t// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...\n\t\tif ( a > b ) {\n\t\t\tt = b;\n\t\t\tb = a;\n\t\t\ta = t;\n\t\t}\n\t\tb = b - a; // b=0 iff b=a\n\t}\n\t// Restore common factors of 2...\n\treturn k * a;\n} // end FUNCTION gcd()\n\n/**\n* FUNCTION: bitwise( a, b )\n*\tComputes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm and bitwise operations.\n*\n* @param {Number} a - safe integer\n* @param {Number} b - safe integer\n* @returns {Number} greatest common divisor\n*/\nfunction bitwise( a, b ) {\n\tvar k = 0,\n\t\tt;\n\t// Simple cases:\n\tif ( a === 0 ) {\n\t\treturn b;\n\t}\n\tif ( b === 0 ) {\n\t\treturn a;\n\t}\n\t// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...\n\twhile ( (a & 1) === 0 && (b & 1) === 0 ) {\n\t\ta >>>= 1; // right shift\n\t\tb >>>= 1; // right shift\n\t\tk++;\n\t}\n\t// Reduce `a` to an odd number...\n\twhile ( (a & 1) === 0 ) {\n\t\ta >>>= 1; // right shift\n\t}\n\t// Henceforth, `a` is always odd...\n\twhile ( b ) {\n\t\t// Remove all factors of 2 in `b`, as they are not common...\n\t\twhile ( (b & 1) === 0 ) {\n\t\t\tb >>>= 1; // right shift\n\t\t}\n\t\t// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...\n\t\tif ( a > b ) {\n\t\t\tt = b;\n\t\t\tb = a;\n\t\t\ta = t;\n\t\t}\n\t\tb = b - a; // b=0 iff b=a\n\t}\n\t// Restore common factors of 2...\n\treturn a << k;\n} // end FUNCTION bitwise()\n\n\n// GREATEST COMMON DIVISOR //\n\n/**\n* FUNCTION: compute( arr[, clbk] )\n*\tComputes the greatest common divisor.\n*\n* @param {Number[]|Number} arr - input array of integers\n* @param {Function|Number} [clbk] - accessor function for accessing array values\n* @returns {Number|Null} greatest common divisor or null\n*/\nfunction compute() {\n\tvar nargs = arguments.length,\n\t\targs,\n\t\tclbk,\n\t\tarr,\n\t\tlen,\n\t\ta, b,\n\t\ti;\n\n\t// Copy the input arguments to an array...\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\t// Have we been provided with integer arguments?\n\tif ( isIntegerArray( args ) ) {\n\t\tif ( nargs === 2 ) {\n\t\t\ta = args[ 0 ];\n\t\t\tb = args[ 1 ];\n\t\t\tif ( a < 0 ) {\n\t\t\t\ta = -a;\n\t\t\t}\n\t\t\tif ( b < 0 ) {\n\t\t\t\tb = -b;\n\t\t\t}\n\t\t\tif ( a <= MAXINT && b <= MAXINT ) {\n\t\t\t\treturn bitwise( a, b );\n\t\t\t} else {\n\t\t\t\treturn gcd( a, b );\n\t\t\t}\n\t\t}\n\t\tarr = args;\n\t}\n\t// If not integers, ensure the first argument is an array...\n\telse if ( !isArray( args[ 0 ] ) ) {\n\t\tthrow new TypeError( 'gcd()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );\n\t}\n\t// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...\n\telse if ( nargs > 1 ) {\n\t\tarr = args[ 0 ];\n\t\tclbk = args[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( 'gcd()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );\n\t\t}\n\t}\n\t// We have been provided an array...\n\telse {\n\t\tarr = args[ 0 ];\n\t}\n\tlen = arr.length;\n\n\t// Check if a sufficient number of values have been provided...\n\tif ( len < 2 ) {\n\t\treturn null;\n\t}\n\t// If an accessor is provided, extract the array values...\n\tif ( clbk ) {\n\t\ta = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\ta[ i ] = clbk( arr[ i ], i );\n\t\t}\n\t\tarr = a;\n\t}\n\t// Given an input array, ensure all array values are integers...\n\tif ( nargs < 3 ) {\n\t\tif ( !isIntegerArray( arr ) ) {\n\t\t\tthrow new TypeError( 'gcd()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );\n\t\t}\n\t}\n\t// Convert any negative integers to positive integers...\n\tfor ( i = 0; i < len; i++ ) {\n\t\ta = arr[ i ];\n\t\tif ( a < 0 ) {\n\t\t\tarr[ i ] = -a;\n\t\t}\n\t}\n\t// Exploit the fact that the gcd is an associative function...\n\ta = arr[ 0 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tb = arr[ i ];\n\t\tif ( b <= MAXINT && a <= MAXINT ) {\n\t\t\ta = bitwise( a, b );\n\t\t} else {\n\t\t\ta = gcd( a, b );\n\t\t}\n\t}\n\treturn a;\n} // end FUNCTION compute()\n\n\n// EXPORTS //\n\nmodule.exports = compute;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   if (_.isArray(objValue)) {\n *     return objValue.concat(srcValue);\n *   }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n  baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arPs = moment.defineLocale('ar-ps', {\n        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n            '_'\n        ),\n        monthsShort:\n            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('') // reversed since negative lookbehind not supported everywhere\n                .reverse()\n                .join('')\n                .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('')\n                .reverse()\n                .join('')\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arPs;\n\n})));\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar $group = require('../internals/array-group');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\n// https://bugs.webkit.org/show_bug.cgi?id=236541\n$({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupBy') }, {\n  groupBy: function groupBy(callbackfn /* , thisArg */) {\n    var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n    return $group(this, callbackfn, thisArg);\n  }\n});\n\naddToUnscopables('groupBy');\n","'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $async, $refCode;\n  if ($schema == '#' || $schema == '#/') {\n    if (it.isRoot) {\n      $async = it.async;\n      $refCode = 'validate';\n    } else {\n      $async = it.root.schema.$async === true;\n      $refCode = 'root.refVal[0]';\n    }\n  } else {\n    var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n    if ($refVal === undefined) {\n      var $message = it.MissingRefError.message(it.baseId, $schema);\n      if (it.opts.missingRefs == 'fail') {\n        it.logger.error($message);\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        if ($breakOnError) {\n          out += ' if (false) { ';\n        }\n      } else if (it.opts.missingRefs == 'ignore') {\n        it.logger.warn($message);\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n      } else {\n        throw new it.MissingRefError(it.baseId, $schema, $message);\n      }\n    } else if ($refVal.inline) {\n      var $it = it.util.copy(it);\n      $it.level++;\n      var $nextValid = 'valid' + $it.level;\n      $it.schema = $refVal.schema;\n      $it.schemaPath = '';\n      $it.errSchemaPath = $schema;\n      var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n      out += ' ' + ($code) + ' ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n      }\n    } else {\n      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n      $refCode = $refVal.code;\n    }\n  }\n  if ($refCode) {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    if (it.opts.passContext) {\n      out += ' ' + ($refCode) + '.call(this, ';\n    } else {\n      out += ' ' + ($refCode) + '( ';\n    }\n    out += ' ' + ($data) + ', (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';\n    var __callValidate = out;\n    out = $$outStack.pop();\n    if ($async) {\n      if (!it.async) throw new Error('async schema referenced by sync schema');\n      if ($breakOnError) {\n        out += ' var ' + ($valid) + '; ';\n      }\n      out += ' try { await ' + (__callValidate) + '; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = true; ';\n      }\n      out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = false; ';\n      }\n      out += ' } ';\n      if ($breakOnError) {\n        out += ' if (' + ($valid) + ') { ';\n      }\n    } else {\n      out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n      if ($breakOnError) {\n        out += ' else { ';\n      }\n    }\n  }\n  return out;\n}\n","require('./angular');\nmodule.exports = angular;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./view\"));\n//# sourceMappingURL=index.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"className\", \"children\"]);\n\n  var handleEnter = useCallback(function (node) {\n    triggerBrowserReflow(node);\n    if (props.onEnter) props.onEnter(node);\n  }, [props]);\n  return /*#__PURE__*/React.createElement(Transition, _extends({\n    ref: ref,\n    addEndListener: transitionEnd\n  }, props, {\n    onEnter: handleEnter\n  }), function (status, innerProps) {\n    return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n      className: classNames('fade', className, children.props.className, fadeStyles[status])\n    }));\n  });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone:\n                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                    '_'\n                ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n                '_'\n            ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","module.exports = WebSocket;\n","'use strict';\n\nvar resolve = require('./resolve')\n  , util = require('./util')\n  , errorClasses = require('./error_classes')\n  , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Object} root object with information about the root schema for this schema\n * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param  {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n  /* jshint validthis: true, evil: true */\n  /* eslint no-shadow: 0 */\n  var self = this\n    , opts = this._opts\n    , refVal = [ undefined ]\n    , refs = {}\n    , patterns = []\n    , patternsHash = {}\n    , defaults = []\n    , defaultsHash = {}\n    , customRules = [];\n\n  root = root || { schema: schema, refVal: refVal, refs: refs };\n\n  var c = checkCompiling.call(this, schema, root, baseId);\n  var compilation = this._compilations[c.index];\n  if (c.compiling) return (compilation.callValidate = callValidate);\n\n  var formats = this._formats;\n  var RULES = this.RULES;\n\n  try {\n    var v = localCompile(schema, root, localRefs, baseId);\n    compilation.validate = v;\n    var cv = compilation.callValidate;\n    if (cv) {\n      cv.schema = v.schema;\n      cv.errors = null;\n      cv.refs = v.refs;\n      cv.refVal = v.refVal;\n      cv.root = v.root;\n      cv.$async = v.$async;\n      if (opts.sourceCode) cv.source = v.source;\n    }\n    return v;\n  } finally {\n    endCompiling.call(this, schema, root, baseId);\n  }\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var validate = compilation.validate;\n    var result = validate.apply(this, arguments);\n    callValidate.errors = validate.errors;\n    return result;\n  }\n\n  function localCompile(_schema, _root, localRefs, baseId) {\n    var isRoot = !_root || (_root && _root.schema == _schema);\n    if (_root.schema != root.schema)\n      return compile.call(self, _schema, _root, localRefs, baseId);\n\n    var $async = _schema.$async === true;\n\n    var sourceCode = validateGenerator({\n      isTop: true,\n      schema: _schema,\n      isRoot: isRoot,\n      baseId: baseId,\n      root: _root,\n      schemaPath: '',\n      errSchemaPath: '#',\n      errorPath: '\"\"',\n      MissingRefError: errorClasses.MissingRef,\n      RULES: RULES,\n      validate: validateGenerator,\n      util: util,\n      resolve: resolve,\n      resolveRef: resolveRef,\n      usePattern: usePattern,\n      useDefault: useDefault,\n      useCustomRule: useCustomRule,\n      opts: opts,\n      formats: formats,\n      logger: self.logger,\n      self: self\n    });\n\n    sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n                   + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n                   + sourceCode;\n\n    if (opts.processCode) sourceCode = opts.processCode(sourceCode);\n    // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n    var validate;\n    try {\n      var makeValidate = new Function(\n        'self',\n        'RULES',\n        'formats',\n        'root',\n        'refVal',\n        'defaults',\n        'customRules',\n        'equal',\n        'ucs2length',\n        'ValidationError',\n        sourceCode\n      );\n\n      validate = makeValidate(\n        self,\n        RULES,\n        formats,\n        root,\n        refVal,\n        defaults,\n        customRules,\n        equal,\n        ucs2length,\n        ValidationError\n      );\n\n      refVal[0] = validate;\n    } catch(e) {\n      self.logger.error('Error compiling schema, function code:', sourceCode);\n      throw e;\n    }\n\n    validate.schema = _schema;\n    validate.errors = null;\n    validate.refs = refs;\n    validate.refVal = refVal;\n    validate.root = isRoot ? validate : _root;\n    if ($async) validate.$async = true;\n    if (opts.sourceCode === true) {\n      validate.source = {\n        code: sourceCode,\n        patterns: patterns,\n        defaults: defaults\n      };\n    }\n\n    return validate;\n  }\n\n  function resolveRef(baseId, ref, isRoot) {\n    ref = resolve.url(baseId, ref);\n    var refIndex = refs[ref];\n    var _refVal, refCode;\n    if (refIndex !== undefined) {\n      _refVal = refVal[refIndex];\n      refCode = 'refVal[' + refIndex + ']';\n      return resolvedRef(_refVal, refCode);\n    }\n    if (!isRoot && root.refs) {\n      var rootRefId = root.refs[ref];\n      if (rootRefId !== undefined) {\n        _refVal = root.refVal[rootRefId];\n        refCode = addLocalRef(ref, _refVal);\n        return resolvedRef(_refVal, refCode);\n      }\n    }\n\n    refCode = addLocalRef(ref);\n    var v = resolve.call(self, localCompile, root, ref);\n    if (v === undefined) {\n      var localSchema = localRefs && localRefs[ref];\n      if (localSchema) {\n        v = resolve.inlineRef(localSchema, opts.inlineRefs)\n            ? localSchema\n            : compile.call(self, localSchema, root, localRefs, baseId);\n      }\n    }\n\n    if (v === undefined) {\n      removeLocalRef(ref);\n    } else {\n      replaceLocalRef(ref, v);\n      return resolvedRef(v, refCode);\n    }\n  }\n\n  function addLocalRef(ref, v) {\n    var refId = refVal.length;\n    refVal[refId] = v;\n    refs[ref] = refId;\n    return 'refVal' + refId;\n  }\n\n  function removeLocalRef(ref) {\n    delete refs[ref];\n  }\n\n  function replaceLocalRef(ref, v) {\n    var refId = refs[ref];\n    refVal[refId] = v;\n  }\n\n  function resolvedRef(refVal, code) {\n    return typeof refVal == 'object' || typeof refVal == 'boolean'\n            ? { code: code, schema: refVal, inline: true }\n            : { code: code, $async: refVal && !!refVal.$async };\n  }\n\n  function usePattern(regexStr) {\n    var index = patternsHash[regexStr];\n    if (index === undefined) {\n      index = patternsHash[regexStr] = patterns.length;\n      patterns[index] = regexStr;\n    }\n    return 'pattern' + index;\n  }\n\n  function useDefault(value) {\n    switch (typeof value) {\n      case 'boolean':\n      case 'number':\n        return '' + value;\n      case 'string':\n        return util.toQuotedString(value);\n      case 'object':\n        if (value === null) return 'null';\n        var valueStr = stableStringify(value);\n        var index = defaultsHash[valueStr];\n        if (index === undefined) {\n          index = defaultsHash[valueStr] = defaults.length;\n          defaults[index] = value;\n        }\n        return 'default' + index;\n    }\n  }\n\n  function useCustomRule(rule, schema, parentSchema, it) {\n    var validateSchema = rule.definition.validateSchema;\n    if (validateSchema && self._opts.validateSchema !== false) {\n      var valid = validateSchema(schema);\n      if (!valid) {\n        var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n        if (self._opts.validateSchema == 'log') self.logger.error(message);\n        else throw new Error(message);\n      }\n    }\n\n    var compile = rule.definition.compile\n      , inline = rule.definition.inline\n      , macro = rule.definition.macro;\n\n    var validate;\n    if (compile) {\n      validate = compile.call(self, schema, parentSchema, it);\n    } else if (macro) {\n      validate = macro.call(self, schema, parentSchema, it);\n      if (opts.validateSchema !== false) self.validateSchema(validate, true);\n    } else if (inline) {\n      validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n    } else {\n      validate = rule.definition.validate;\n      if (!validate) return;\n    }\n\n    if (validate === undefined)\n      throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n    var index = customRules.length;\n    customRules[index] = validate;\n\n    return {\n      code: 'customRule' + index,\n      validate: validate\n    };\n  }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var index = compIndex.call(this, schema, root, baseId);\n  if (index >= 0) return { index: index, compiling: true };\n  index = this._compilations.length;\n  this._compilations[index] = {\n    schema: schema,\n    root: root,\n    baseId: baseId\n  };\n  return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var i = compIndex.call(this, schema, root, baseId);\n  if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n  /* jshint validthis: true */\n  for (var i=0; i<this._compilations.length; i++) {\n    var c = this._compilations[i];\n    if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n  }\n  return -1;\n}\n\n\nfunction patternCode(i, patterns) {\n  return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n}\n\n\nfunction defaultCode(i) {\n  return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n  return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n  return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n  if (!arr.length) return '';\n  var code = '';\n  for (var i=0; i<arr.length; i++)\n    code += statement(i, arr);\n  return code;\n}\n","(function (angular) {\n    'use strict';\n\n    var bindHtmlCompile = angular.module('angular-bind-html-compile', []);\n\n    bindHtmlCompile.directive('bindHtmlCompile', ['$compile', function ($compile) {\n        return {\n            restrict: 'A',\n            link: function (scope, element, attrs) {\n                scope.$watch(function () {\n                    return scope.$eval(attrs.bindHtmlCompile);\n                }, function (value) {\n                    // In case value is a TrustedValueHolderType, sometimes it\n                    // needs to be explicitly called into a string in order to\n                    // get the HTML string.\n                    element.html(value && value.toString());\n                    // If scope is provided use it, otherwise use parent scope\n                    var compileScope = scope;\n                    if (attrs.bindHtmlScope) {\n                        compileScope = scope.$eval(attrs.bindHtmlScope);\n                    }\n                    $compile(element.contents())(compileScope);\n                });\n            }\n        };\n    }]);\n\n    if (typeof module !== 'undefined' && module.exports) {\n        module.exports = bindHtmlCompile.name;\n    }\n}(window.angular));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per GeneratorResume behavior specified since ES2015:\n        // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n        // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next method, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable != null) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    throw new TypeError(typeof iterable + \" is not iterable\");\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'label' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var columnClass = 'col-form-label';\n  if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n  var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n  htmlFor = htmlFor || controlId;\n  if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n    as: \"label\",\n    className: classes,\n    htmlFor: htmlFor\n  }, props));\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    React.createElement(Component, _extends({\n      ref: ref,\n      className: classes,\n      htmlFor: htmlFor\n    }, props))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\n// Cached copy of the <canvas> used to check silent video frames.\nvar canvas = null;\nvar N_SAMPLES = 3;\nvar SAMPLE_HEIGHT = 50;\nvar SAMPLE_INTERVAL_MS = 250;\nvar SAMPLE_WIDTH = 50;\n/**\n * Check whether the current video frame is silent by selecting a 50x50\n * sample and calculating the max value of the pixel data. If it is 0, then\n * the frame is considered to be silent.\n * @private\n * @param {HTMLVideoElement} el\n * @returns {boolean} true if silent, false if not\n */\nfunction checkSilence(el) {\n    try {\n        var context = canvas.getContext('2d');\n        context.drawImage(el, 0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n        var frame = context.getImageData(0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n        var frameDataWithoutAlpha = frame.data.filter(function (item, i) { return (i + 1) % 4; });\n        var max = Math.max.apply(Math, frameDataWithoutAlpha);\n        return max === 0;\n    }\n    catch (ex) {\n        // eslint-disable-next-line no-console\n        console.log('Error checking silence: ', ex);\n        return false;\n    }\n}\n/**\n * Detect whether the video stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLVideoElement} el\n * @returns {Promise<boolean>} true if silent, false if not.\n */\nfunction detectSilentVideo(el) {\n    // Create the canvas when detectSilentVideo() is called for the\n    // first time.\n    canvas = canvas || document.createElement('canvas');\n    // Resolve the returned Promise with true if 3 consecutive sample\n    // frames from the video being played by the HTMLVideoElement are\n    // silent.\n    return new Promise(function (resolve) {\n        var samplesLeft = N_SAMPLES;\n        setTimeout(function doCheckSilence() {\n            samplesLeft--;\n            if (!checkSilence(el)) {\n                return resolve(false);\n            }\n            if (samplesLeft > 0) {\n                return setTimeout(doCheckSilence, SAMPLE_INTERVAL_MS);\n            }\n            return resolve(true);\n        }, SAMPLE_INTERVAL_MS);\n    });\n}\nmodule.exports = detectSilentVideo;\n//# sourceMappingURL=detectsilentvideo.js.map","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\n\nexports.__esModule = true;\nexports.default = addPassiveEventListener;\n// feature detection for passive support\n// see: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nfunction hasPassiveSupport() {\n  var passiveSupported = false;\n\n  try {\n    var options = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        passiveSupported = true;\n      }\n    });\n\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, options);\n  } catch (err) {\n    passiveSupported = false;\n  }\n\n  return passiveSupported;\n}\n\nfunction addPassiveEventListener(element, eventName, func, capture) {\n  element.addEventListener(eventName, func, hasPassiveSupport() ? {\n    capture: capture,\n    passive: true\n  } : capture);\n}","\nconst compare = require('json-schema-compare')\nconst forEach = require('lodash/forEach')\nconst {\n  allUniqueKeys,\n  deleteUndefinedProps,\n  getValues,\n  keys,\n  notUndefined,\n  uniqWith,\n  withoutArr\n} = require('../common')\n\nfunction removeFalseSchemas(target) {\n  forEach(target, function(schema, prop) {\n    if (schema === false) {\n      delete target[prop]\n    }\n  })\n}\n\nfunction mergeSchemaGroup(group, mergeSchemas) {\n  const allKeys = allUniqueKeys(group)\n  return allKeys.reduce(function(all, key) {\n    const schemas = getValues(group, key)\n    const compacted = uniqWith(schemas.filter(notUndefined), compare)\n    all[key] = mergeSchemas(compacted, key)\n    return all\n  }, {})\n}\n\nmodule.exports = {\n  keywords: ['properties', 'patternProperties', 'additionalProperties'],\n  resolver(values, parents, mergers, options) {\n    // first get rid of all non permitted properties\n    if (!options.ignoreAdditionalProperties) {\n      values.forEach(function(subSchema) {\n        const otherSubSchemas = values.filter(s => s !== subSchema)\n        const ownKeys = keys(subSchema.properties)\n        const ownPatternKeys = keys(subSchema.patternProperties)\n        const ownPatterns = ownPatternKeys.map(k => new RegExp(k))\n        otherSubSchemas.forEach(function(other) {\n          const allOtherKeys = keys(other.properties)\n          const keysMatchingPattern = allOtherKeys.filter(k => ownPatterns.some(pk => pk.test(k)))\n          const additionalKeys = withoutArr(allOtherKeys, ownKeys, keysMatchingPattern)\n          additionalKeys.forEach(function(key) {\n            other.properties[key] = mergers.properties([\n              other.properties[key], subSchema.additionalProperties\n            ], key)\n          })\n        })\n      })\n\n      // remove disallowed patternProperties\n      values.forEach(function(subSchema) {\n        const otherSubSchemas = values.filter(s => s !== subSchema)\n        const ownPatternKeys = keys(subSchema.patternProperties)\n        if (subSchema.additionalProperties === false) {\n          otherSubSchemas.forEach(function(other) {\n            const allOtherPatterns = keys(other.patternProperties)\n            const additionalPatternKeys = withoutArr(allOtherPatterns, ownPatternKeys)\n            additionalPatternKeys.forEach(key => delete other.patternProperties[key])\n          })\n        }\n      })\n    }\n\n    const returnObject = {\n      additionalProperties: mergers.additionalProperties(values.map(s => s.additionalProperties)),\n      patternProperties: mergeSchemaGroup(values.map(s => s.patternProperties), mergers.patternProperties),\n      properties: mergeSchemaGroup(values.map(s => s.properties), mergers.properties)\n    }\n\n    if (returnObject.additionalProperties === false) {\n      removeFalseSchemas(returnObject.properties)\n    }\n\n    return deleteUndefinedProps(returnObject)\n  }\n}\n","'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $rule = this,\n    $definition = 'definition' + $lvl,\n    $rDef = $rule.definition,\n    $closingBraces = '';\n  var $compile, $inline, $macro, $ruleValidate, $validateCode;\n  if ($isData && $rDef.$data) {\n    $validateCode = 'keywordValidate' + $lvl;\n    var $validateSchema = $rDef.validateSchema;\n    out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n  } else {\n    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n    if (!$ruleValidate) return;\n    $schemaValue = 'validate.schema' + $schemaPath;\n    $validateCode = $ruleValidate.code;\n    $compile = $rDef.compile;\n    $inline = $rDef.inline;\n    $macro = $rDef.macro;\n  }\n  var $ruleErrs = $validateCode + '.errors',\n    $i = 'i' + $lvl,\n    $ruleErr = 'ruleErr' + $lvl,\n    $asyncKeyword = $rDef.async;\n  if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n  if (!($inline || $macro)) {\n    out += '' + ($ruleErrs) + ' = null;';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($isData && $rDef.$data) {\n    $closingBraces += '}';\n    out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n    if ($validateSchema) {\n      $closingBraces += '}';\n      out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n    }\n  }\n  if ($inline) {\n    if ($rDef.statements) {\n      out += ' ' + ($ruleValidate.validate) + ' ';\n    } else {\n      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n    }\n  } else if ($macro) {\n    var $it = it.util.copy(it);\n    var $closingBraces = '';\n    $it.level++;\n    var $nextValid = 'valid' + $it.level;\n    $it.schema = $ruleValidate.validate;\n    $it.schemaPath = '';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($code);\n  } else {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    out += '  ' + ($validateCode) + '.call( ';\n    if (it.opts.passContext) {\n      out += 'this';\n    } else {\n      out += 'self';\n    }\n    if ($compile || $rDef.schema === false) {\n      out += ' , ' + ($data) + ' ';\n    } else {\n      out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n    }\n    out += ' , (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';\n    var def_callRuleValidate = out;\n    out = $$outStack.pop();\n    if ($rDef.errors === false) {\n      out += ' ' + ($valid) + ' = ';\n      if ($asyncKeyword) {\n        out += 'await ';\n      }\n      out += '' + (def_callRuleValidate) + '; ';\n    } else {\n      if ($asyncKeyword) {\n        $ruleErrs = 'customErrors' + $lvl;\n        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n      } else {\n        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n      }\n    }\n  }\n  if ($rDef.modifying) {\n    out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n  }\n  out += '' + ($closingBraces);\n  if ($rDef.valid) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  } else {\n    out += ' if ( ';\n    if ($rDef.valid === undefined) {\n      out += ' !';\n      if ($macro) {\n        out += '' + ($nextValid);\n      } else {\n        out += '' + ($valid);\n      }\n    } else {\n      out += ' ' + (!$rDef.valid) + ' ';\n    }\n    out += ') { ';\n    $errorKeyword = $rule.keyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    var def_customError = out;\n    out = $$outStack.pop();\n    if ($inline) {\n      if ($rDef.errors) {\n        if ($rDef.errors != 'full') {\n          out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } ';\n        }\n      } else {\n        if ($rDef.errors === false) {\n          out += ' ' + (def_customError) + ' ';\n        } else {\n          out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } } ';\n        }\n      }\n    } else if ($macro) {\n      out += '   var err =   '; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError(vErrors); ';\n        } else {\n          out += ' validate.errors = vErrors; return false; ';\n        }\n      }\n    } else {\n      if ($rDef.errors === false) {\n        out += ' ' + (def_customError) + ' ';\n      } else {\n        out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\";  ';\n        if (it.opts.verbose) {\n          out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n        }\n        out += ' } } else { ' + (def_customError) + ' } ';\n      }\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\nvar isConstructor = require('../internals/is-constructor');\nvar getAsyncIterator = require('../internals/get-async-iterator');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar getMethod = require('../internals/get-method');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar toArray = require('../internals/async-iterator-iteration').toArray;\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar arrayIterator = uncurryThis(getBuiltInPrototypeMethod('Array', 'values'));\nvar arrayIteratorNext = uncurryThis(arrayIterator([]).next);\n\nvar safeArrayIterator = function () {\n  return new SafeArrayIterator(this);\n};\n\nvar SafeArrayIterator = function (O) {\n  this.iterator = arrayIterator(O);\n};\n\nSafeArrayIterator.prototype.next = function () {\n  return arrayIteratorNext(this.iterator);\n};\n\n// `Array.fromAsync` method implementation\n// https://github.com/tc39/proposal-array-from-async\nmodule.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {\n  var C = this;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;\n  return new (getBuiltIn('Promise'))(function (resolve) {\n    var O = toObject(asyncItems);\n    if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);\n    var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);\n    var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || safeArrayIterator;\n    var A = isConstructor(C) ? new C() : [];\n    var iterator = usingAsyncIterator\n      ? getAsyncIterator(O, usingAsyncIterator)\n      : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));\n    resolve(toArray(iterator, mapfn, A));\n  });\n};\n","/**\n * Browser Image Compression\n * v2.0.2\n * by Donald <donaldcwl@gmail.com>\n * https://github.com/Donaldcwl/browser-image-compression\n */\n\nfunction _mergeNamespaces(e,t){return t.forEach((function(t){t&&\"string\"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if(\"default\"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}function copyExifWithoutOrientation(e,t){return new Promise((function(r,i){let o;return getApp1Segment(e).then((function(e){try{return o=e,r(new Blob([t.slice(0,2),o,t.slice(2)],{type:\"image/jpeg\"}))}catch(e){return i(e)}}),i)}))}const getApp1Segment=e=>new Promise(((t,r)=>{const i=new FileReader;i.addEventListener(\"load\",(({target:{result:e}})=>{const i=new DataView(e);let o=0;if(65496!==i.getUint16(o))return r(\"not a valid JPEG\");for(o+=2;;){const a=i.getUint16(o);if(65498===a)break;const s=i.getUint16(o+2);if(65505===a&&1165519206===i.getUint32(o+4)){const a=o+10;let f;switch(i.getUint16(a)){case 18761:f=!0;break;case 19789:f=!1;break;default:return r(\"TIFF header contains invalid endian\")}if(42!==i.getUint16(a+2,f))return r(\"TIFF header contains invalid version\");const l=i.getUint32(a+4,f),c=a+l+2+12*i.getUint16(a+l,f);for(let e=a+l+2;e<c;e+=12){if(274==i.getUint16(e,f)){if(3!==i.getUint16(e+2,f))return r(\"Orientation data type is invalid\");if(1!==i.getUint32(e+4,f))return r(\"Orientation data count is invalid\");i.setUint16(e+8,1,f);break}}return t(e.slice(o,o+2+s))}o+=2+s}return t(new Blob)})),i.readAsArrayBuffer(e)}));var e={},t={get exports(){return e},set exports(t){e=t}};!function(e){var r,i,UZIP={};t.exports=UZIP,UZIP.parse=function(e,t){for(var r=UZIP.bin.readUshort,i=UZIP.bin.readUint,o=0,a={},s=new Uint8Array(e),f=s.length-4;101010256!=i(s,f);)f--;o=f;o+=4;var l=r(s,o+=4);r(s,o+=2);var c=i(s,o+=2),u=i(s,o+=4);o+=4,o=u;for(var h=0;h<l;h++){i(s,o),o+=4,o+=4,o+=4,i(s,o+=4);c=i(s,o+=4);var d=i(s,o+=4),A=r(s,o+=4),g=r(s,o+2),p=r(s,o+4);o+=6;var m=i(s,o+=8);o+=4,o+=A+g+p,UZIP._readLocal(s,m,a,c,d,t)}return a},UZIP._readLocal=function(e,t,r,i,o,a){var s=UZIP.bin.readUshort,f=UZIP.bin.readUint;f(e,t),s(e,t+=4),s(e,t+=2);var l=s(e,t+=2);f(e,t+=2),f(e,t+=4),t+=4;var c=s(e,t+=8),u=s(e,t+=2);t+=2;var h=UZIP.bin.readUTF8(e,t,c);if(t+=c,t+=u,a)r[h]={size:o,csize:i};else{var d=new Uint8Array(e.buffer,t);if(0==l)r[h]=new Uint8Array(d.buffer.slice(t,t+i));else{if(8!=l)throw\"unknown compression method: \"+l;var A=new Uint8Array(o);UZIP.inflateRaw(d,A),r[h]=A}}},UZIP.inflateRaw=function(e,t){return UZIP.F.inflate(e,t)},UZIP.inflate=function(e,t){return e[0],e[1],UZIP.inflateRaw(new Uint8Array(e.buffer,e.byteOffset+2,e.length-6),t)},UZIP.deflate=function(e,t){null==t&&(t={level:6});var r=0,i=new Uint8Array(50+Math.floor(1.1*e.length));i[r]=120,i[r+1]=156,r+=2,r=UZIP.F.deflateRaw(e,i,r,t.level);var o=UZIP.adler(e,0,e.length);return i[r+0]=o>>>24&255,i[r+1]=o>>>16&255,i[r+2]=o>>>8&255,i[r+3]=o>>>0&255,new Uint8Array(i.buffer,0,r+4)},UZIP.deflateRaw=function(e,t){null==t&&(t={level:6});var r=new Uint8Array(50+Math.floor(1.1*e.length)),i=UZIP.F.deflateRaw(e,r,i,t.level);return new Uint8Array(r.buffer,0,i)},UZIP.encode=function(e,t){null==t&&(t=!1);var r=0,i=UZIP.bin.writeUint,o=UZIP.bin.writeUshort,a={};for(var s in e){var f=!UZIP._noNeed(s)&&!t,l=e[s],c=UZIP.crc.crc(l,0,l.length);a[s]={cpr:f,usize:l.length,crc:c,file:f?UZIP.deflateRaw(l):l}}for(var s in a)r+=a[s].file.length+30+46+2*UZIP.bin.sizeUTF8(s);r+=22;var u=new Uint8Array(r),h=0,d=[];for(var s in a){var A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,0)}var g=0,p=h;for(var s in a){A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,1,d[g++])}var m=h-p;return i(u,h,101010256),h+=4,o(u,h+=4,g),o(u,h+=2,g),i(u,h+=2,m),i(u,h+=4,p),h+=4,h+=2,u.buffer},UZIP._noNeed=function(e){var t=e.split(\".\").pop().toLowerCase();return-1!=\"png,jpg,jpeg,zip\".indexOf(t)},UZIP._writeHeader=function(e,t,r,i,o,a){var s=UZIP.bin.writeUint,f=UZIP.bin.writeUshort,l=i.file;return s(e,t,0==o?67324752:33639248),t+=4,1==o&&(t+=2),f(e,t,20),f(e,t+=2,0),f(e,t+=2,i.cpr?8:0),s(e,t+=2,0),s(e,t+=4,i.crc),s(e,t+=4,l.length),s(e,t+=4,i.usize),f(e,t+=4,UZIP.bin.sizeUTF8(r)),f(e,t+=2,0),t+=2,1==o&&(t+=2,t+=2,s(e,t+=6,a),t+=4),t+=UZIP.bin.writeUTF8(e,t,r),0==o&&(e.set(l,t),t+=l.length),t},UZIP.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var r=t,i=0;i<8;i++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r}return e}(),update:function(e,t,r,i){for(var o=0;o<i;o++)e=UZIP.crc.table[255&(e^t[r+o])]^e>>>8;return e},crc:function(e,t,r){return 4294967295^UZIP.crc.update(4294967295,e,t,r)}},UZIP.adler=function(e,t,r){for(var i=1,o=0,a=t,s=t+r;a<s;){for(var f=Math.min(a+5552,s);a<f;)o+=i+=e[a++];i%=65521,o%=65521}return o<<16|i},UZIP.bin={readUshort:function(e,t){return e[t]|e[t+1]<<8},writeUshort:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255},readUint:function(e,t){return 16777216*e[t+3]+(e[t+2]<<16|e[t+1]<<8|e[t])},writeUint:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255,e[t+2]=r>>16&255,e[t+3]=r>>24&255},readASCII:function(e,t,r){for(var i=\"\",o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII:function(e,t,r){for(var i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i)},pad:function(e){return e.length<2?\"0\"+e:e},readUTF8:function(e,t,r){for(var i,o=\"\",a=0;a<r;a++)o+=\"%\"+UZIP.bin.pad(e[t+a].toString(16));try{i=decodeURIComponent(o)}catch(i){return UZIP.bin.readASCII(e,t,r)}return i},writeUTF8:function(e,t,r){for(var i=r.length,o=0,a=0;a<i;a++){var s=r.charCodeAt(a);if(0==(4294967168&s))e[t+o]=s,o++;else if(0==(4294965248&s))e[t+o]=192|s>>6,e[t+o+1]=128|s>>0&63,o+=2;else if(0==(4294901760&s))e[t+o]=224|s>>12,e[t+o+1]=128|s>>6&63,e[t+o+2]=128|s>>0&63,o+=3;else{if(0!=(4292870144&s))throw\"e\";e[t+o]=240|s>>18,e[t+o+1]=128|s>>12&63,e[t+o+2]=128|s>>6&63,e[t+o+3]=128|s>>0&63,o+=4}}return o},sizeUTF8:function(e){for(var t=e.length,r=0,i=0;i<t;i++){var o=e.charCodeAt(i);if(0==(4294967168&o))r++;else if(0==(4294965248&o))r+=2;else if(0==(4294901760&o))r+=3;else{if(0!=(4292870144&o))throw\"e\";r+=4}}return r}},UZIP.F={},UZIP.F.deflateRaw=function(e,t,r,i){var o=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][i],a=UZIP.F.U,s=UZIP.F._goodIndex;UZIP.F._hash;var f=UZIP.F._putsE,l=0,c=r<<3,u=0,h=e.length;if(0==i){for(;l<h;){f(t,c,l+(_=Math.min(65535,h-l))==h?1:0),c=UZIP.F._copyExact(e,l,_,t,c+8),l+=_}return c>>>3}var d=a.lits,A=a.strt,g=a.prev,p=0,m=0,w=0,v=0,b=0,y=0;for(h>2&&(A[y=UZIP.F._hash(e,0)]=0),l=0;l<h;l++){if(b=y,l+1<h-2){y=UZIP.F._hash(e,l+1);var E=l+1&32767;g[E]=A[y],A[y]=E}if(u<=l){(p>14e3||m>26697)&&h-l>100&&(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(l==h-1||u==h?1:0,d,p,v,e,w,l-w,t,c),p=m=v=0,w=l);var F=0;l<h-2&&(F=UZIP.F._bestMatch(e,l,g,b,Math.min(o[2],h-l),o[3]));var _=F>>>16,B=65535&F;if(0!=F){B=65535&F;var U=s(_=F>>>16,a.of0);a.lhst[257+U]++;var C=s(B,a.df0);a.dhst[C]++,v+=a.exb[U]+a.dxb[C],d[p]=_<<23|l-u,d[p+1]=B<<16|U<<8|C,p+=2,u=l+_}else a.lhst[e[l]]++;m++}}for(w==l&&0!=e.length||(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(1,d,p,v,e,w,l-w,t,c),p=0,m=0,p=m=v=0,w=l);0!=(7&c);)c++;return c>>>3},UZIP.F._bestMatch=function(e,t,r,i,o,a){var s=32767&t,f=r[s],l=s-f+32768&32767;if(f==s||i!=UZIP.F._hash(e,t-l))return 0;for(var c=0,u=0,h=Math.min(32767,t);l<=h&&0!=--a&&f!=s;){if(0==c||e[t+c]==e[t+c-l]){var d=UZIP.F._howLong(e,t,l);if(d>c){if(u=l,(c=d)>=o)break;l+2<d&&(d=l+2);for(var A=0,g=0;g<d-2;g++){var p=t-l+g+32768&32767,m=p-r[p]+32768&32767;m>A&&(A=m,f=p)}}}l+=(s=f)-(f=r[s])+32768&32767}return c<<16|u},UZIP.F._howLong=function(e,t,r){if(e[t]!=e[t-r]||e[t+1]!=e[t+1-r]||e[t+2]!=e[t+2-r])return 0;var i=t,o=Math.min(e.length,t+258);for(t+=3;t<o&&e[t]==e[t-r];)t++;return t-i},UZIP.F._hash=function(e,t){return(e[t]<<8|e[t+1])+(e[t+2]<<4)&65535},UZIP.saved=0,UZIP.F._writeBlock=function(e,t,r,i,o,a,s,f,l){var c,u,h,d,A,g,p,m,w,v=UZIP.F.U,b=UZIP.F._putsF,y=UZIP.F._putsE;v.lhst[256]++,u=(c=UZIP.F.getTrees())[0],h=c[1],d=c[2],A=c[3],g=c[4],p=c[5],m=c[6],w=c[7];var E=32+(0==(l+3&7)?0:8-(l+3&7))+(s<<3),F=i+UZIP.F.contSize(v.fltree,v.lhst)+UZIP.F.contSize(v.fdtree,v.dhst),_=i+UZIP.F.contSize(v.ltree,v.lhst)+UZIP.F.contSize(v.dtree,v.dhst);_+=14+3*p+UZIP.F.contSize(v.itree,v.ihst)+(2*v.ihst[16]+3*v.ihst[17]+7*v.ihst[18]);for(var B=0;B<286;B++)v.lhst[B]=0;for(B=0;B<30;B++)v.dhst[B]=0;for(B=0;B<19;B++)v.ihst[B]=0;var U=E<F&&E<_?0:F<_?1:2;if(b(f,l,e),b(f,l+1,U),l+=3,0==U){for(;0!=(7&l);)l++;l=UZIP.F._copyExact(o,a,s,f,l)}else{var C,I;if(1==U&&(C=v.fltree,I=v.fdtree),2==U){UZIP.F.makeCodes(v.ltree,u),UZIP.F.revCodes(v.ltree,u),UZIP.F.makeCodes(v.dtree,h),UZIP.F.revCodes(v.dtree,h),UZIP.F.makeCodes(v.itree,d),UZIP.F.revCodes(v.itree,d),C=v.ltree,I=v.dtree,y(f,l,A-257),y(f,l+=5,g-1),y(f,l+=5,p-4),l+=4;for(var Q=0;Q<p;Q++)y(f,l+3*Q,v.itree[1+(v.ordr[Q]<<1)]);l+=3*p,l=UZIP.F._codeTiny(m,v.itree,f,l),l=UZIP.F._codeTiny(w,v.itree,f,l)}for(var M=a,x=0;x<r;x+=2){for(var S=t[x],R=S>>>23,T=M+(8388607&S);M<T;)l=UZIP.F._writeLit(o[M++],C,f,l);if(0!=R){var O=t[x+1],P=O>>16,H=O>>8&255,L=255&O;y(f,l=UZIP.F._writeLit(257+H,C,f,l),R-v.of0[H]),l+=v.exb[H],b(f,l=UZIP.F._writeLit(L,I,f,l),P-v.df0[L]),l+=v.dxb[L],M+=R}}l=UZIP.F._writeLit(256,C,f,l)}return l},UZIP.F._copyExact=function(e,t,r,i,o){var a=o>>>3;return i[a]=r,i[a+1]=r>>>8,i[a+2]=255-i[a],i[a+3]=255-i[a+1],a+=4,i.set(new Uint8Array(e.buffer,t,r),a),o+(r+4<<3)},UZIP.F.getTrees=function(){for(var e=UZIP.F.U,t=UZIP.F._hufTree(e.lhst,e.ltree,15),r=UZIP.F._hufTree(e.dhst,e.dtree,15),i=[],o=UZIP.F._lenCodes(e.ltree,i),a=[],s=UZIP.F._lenCodes(e.dtree,a),f=0;f<i.length;f+=2)e.ihst[i[f]]++;for(f=0;f<a.length;f+=2)e.ihst[a[f]]++;for(var l=UZIP.F._hufTree(e.ihst,e.itree,7),c=19;c>4&&0==e.itree[1+(e.ordr[c-1]<<1)];)c--;return[t,r,l,o,s,c,i,a]},UZIP.F.getSecond=function(e){for(var t=[],r=0;r<e.length;r+=2)t.push(e[r+1]);return t},UZIP.F.nonZero=function(e){for(var t=\"\",r=0;r<e.length;r+=2)0!=e[r+1]&&(t+=(r>>1)+\",\");return t},UZIP.F.contSize=function(e,t){for(var r=0,i=0;i<t.length;i++)r+=t[i]*e[1+(i<<1)];return r},UZIP.F._codeTiny=function(e,t,r,i){for(var o=0;o<e.length;o+=2){var a=e[o],s=e[o+1];i=UZIP.F._writeLit(a,t,r,i);var f=16==a?2:17==a?3:7;a>15&&(UZIP.F._putsE(r,i,s,f),i+=f)}return i},UZIP.F._lenCodes=function(e,t){for(var r=e.length;2!=r&&0==e[r-1];)r-=2;for(var i=0;i<r;i+=2){var o=e[i+1],a=i+3<r?e[i+3]:-1,s=i+5<r?e[i+5]:-1,f=0==i?-1:e[i-1];if(0==o&&a==o&&s==o){for(var l=i+5;l+2<r&&e[l+2]==o;)l+=2;(c=Math.min(l+1-i>>>1,138))<11?t.push(17,c-3):t.push(18,c-11),i+=2*c-2}else if(o==f&&a==o&&s==o){for(l=i+5;l+2<r&&e[l+2]==o;)l+=2;var c=Math.min(l+1-i>>>1,6);t.push(16,c-3),i+=2*c-2}else t.push(o,0)}return r>>>1},UZIP.F._hufTree=function(e,t,r){var i=[],o=e.length,a=t.length,s=0;for(s=0;s<a;s+=2)t[s]=0,t[s+1]=0;for(s=0;s<o;s++)0!=e[s]&&i.push({lit:s,f:e[s]});var f=i.length,l=i.slice(0);if(0==f)return 0;if(1==f){var c=i[0].lit;l=0==c?1:0;return t[1+(c<<1)]=1,t[1+(l<<1)]=1,1}i.sort((function(e,t){return e.f-t.f}));var u=i[0],h=i[1],d=0,A=1,g=2;for(i[0]={lit:-1,f:u.f+h.f,l:u,r:h,d:0};A!=f-1;)u=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],h=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],i[A++]={lit:-1,f:u.f+h.f,l:u,r:h};var p=UZIP.F.setDepth(i[A-1],0);for(p>r&&(UZIP.F.restrictDepth(l,r,p),p=r),s=0;s<f;s++)t[1+(l[s].lit<<1)]=l[s].d;return p},UZIP.F.setDepth=function(e,t){return-1!=e.lit?(e.d=t,t):Math.max(UZIP.F.setDepth(e.l,t+1),UZIP.F.setDepth(e.r,t+1))},UZIP.F.restrictDepth=function(e,t,r){var i=0,o=1<<r-t,a=0;for(e.sort((function(e,t){return t.d==e.d?e.f-t.f:t.d-e.d})),i=0;i<e.length&&e[i].d>t;i++){var s=e[i].d;e[i].d=t,a+=o-(1<<r-s)}for(a>>>=r-t;a>0;){(s=e[i].d)<t?(e[i].d++,a-=1<<t-s-1):i++}for(;i>=0;i--)e[i].d==t&&a<0&&(e[i].d--,a++);0!=a&&console.log(\"debt left\")},UZIP.F._goodIndex=function(e,t){var r=0;return t[16|r]<=e&&(r|=16),t[8|r]<=e&&(r|=8),t[4|r]<=e&&(r|=4),t[2|r]<=e&&(r|=2),t[1|r]<=e&&(r|=1),r},UZIP.F._writeLit=function(e,t,r,i){return UZIP.F._putsF(r,i,t[e<<1]),i+t[1+(e<<1)]},UZIP.F.inflate=function(e,t){var r=Uint8Array;if(3==e[0]&&0==e[1])return t||new r(0);var i=UZIP.F,o=i._bitsF,a=i._bitsE,s=i._decodeTiny,f=i.makeCodes,l=i.codes2map,c=i._get17,u=i.U,h=null==t;h&&(t=new r(e.length>>>2<<3));for(var d,A,g=0,p=0,m=0,w=0,v=0,b=0,y=0,E=0,F=0;0==g;)if(g=o(e,F,1),p=o(e,F+1,2),F+=3,0!=p){if(h&&(t=UZIP.F._check(t,E+(1<<17))),1==p&&(d=u.flmap,A=u.fdmap,b=511,y=31),2==p){m=a(e,F,5)+257,w=a(e,F+5,5)+1,v=a(e,F+10,4)+4,F+=14;for(var _=0;_<38;_+=2)u.itree[_]=0,u.itree[_+1]=0;var B=1;for(_=0;_<v;_++){var U=a(e,F+3*_,3);u.itree[1+(u.ordr[_]<<1)]=U,U>B&&(B=U)}F+=3*v,f(u.itree,B),l(u.itree,B,u.imap),d=u.lmap,A=u.dmap,F=s(u.imap,(1<<B)-1,m+w,e,F,u.ttree);var C=i._copyOut(u.ttree,0,m,u.ltree);b=(1<<C)-1;var I=i._copyOut(u.ttree,m,w,u.dtree);y=(1<<I)-1,f(u.ltree,C),l(u.ltree,C,d),f(u.dtree,I),l(u.dtree,I,A)}for(;;){var Q=d[c(e,F)&b];F+=15&Q;var M=Q>>>4;if(M>>>8==0)t[E++]=M;else{if(256==M)break;var x=E+M-254;if(M>264){var S=u.ldef[M-257];x=E+(S>>>3)+a(e,F,7&S),F+=7&S}var R=A[c(e,F)&y];F+=15&R;var T=R>>>4,O=u.ddef[T],P=(O>>>4)+o(e,F,15&O);for(F+=15&O,h&&(t=UZIP.F._check(t,E+(1<<17)));E<x;)t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P];E=x}}}else{0!=(7&F)&&(F+=8-(7&F));var H=4+(F>>>3),L=e[H-4]|e[H-3]<<8;h&&(t=UZIP.F._check(t,E+L)),t.set(new r(e.buffer,e.byteOffset+H,L),E),F=H+L<<3,E+=L}return t.length==E?t:t.slice(0,E)},UZIP.F._check=function(e,t){var r=e.length;if(t<=r)return e;var i=new Uint8Array(Math.max(r<<1,t));return i.set(e,0),i},UZIP.F._decodeTiny=function(e,t,r,i,o,a){for(var s=UZIP.F._bitsE,f=UZIP.F._get17,l=0;l<r;){var c=e[f(i,o)&t];o+=15&c;var u=c>>>4;if(u<=15)a[l]=u,l++;else{var h=0,d=0;16==u?(d=3+s(i,o,2),o+=2,h=a[l-1]):17==u?(d=3+s(i,o,3),o+=3):18==u&&(d=11+s(i,o,7),o+=7);for(var A=l+d;l<A;)a[l]=h,l++}}return o},UZIP.F._copyOut=function(e,t,r,i){for(var o=0,a=0,s=i.length>>>1;a<r;){var f=e[a+t];i[a<<1]=0,i[1+(a<<1)]=f,f>o&&(o=f),a++}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},UZIP.F.makeCodes=function(e,t){for(var r,i,o,a,s=UZIP.F.U,f=e.length,l=s.bl_count,c=0;c<=t;c++)l[c]=0;for(c=1;c<f;c+=2)l[e[c]]++;var u=s.next_code;for(r=0,l[0]=0,i=1;i<=t;i++)r=r+l[i-1]<<1,u[i]=r;for(o=0;o<f;o+=2)0!=(a=e[o+1])&&(e[o]=u[a],u[a]++)},UZIP.F.codes2map=function(e,t,r){for(var i=e.length,o=UZIP.F.U.rev15,a=0;a<i;a+=2)if(0!=e[a+1])for(var s=a>>1,f=e[a+1],l=s<<4|f,c=t-f,u=e[a]<<c,h=u+(1<<c);u!=h;){r[o[u]>>>15-t]=l,u++}},UZIP.F.revCodes=function(e,t){for(var r=UZIP.F.U.rev15,i=15-t,o=0;o<e.length;o+=2){var a=e[o]<<t-e[o+1];e[o]=r[a]>>>i}},UZIP.F._putsE=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8},UZIP.F._putsF=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16},UZIP.F._bitsE=function(e,t,r){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},UZIP.F._bitsF=function(e,t,r){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},UZIP.F._get17=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},UZIP.F._get25=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},UZIP.F.U=(r=Uint16Array,i=Uint32Array,{next_code:new r(16),bl_count:new r(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new r(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new i(32),flmap:new r(512),fltree:[],fdmap:new r(32),fdtree:[],lmap:new r(32768),ltree:[],ttree:[],dmap:new r(32768),dtree:[],imap:new r(512),itree:[],rev15:new r(32768),lhst:new i(286),dhst:new i(30),ihst:new i(19),lits:new i(15e3),strt:new r(65536),prev:new r(32768)}),function(){for(var e=UZIP.F.U,t=0;t<32768;t++){var r=t;r=(4278255360&(r=(4042322160&(r=(3435973836&(r=(2863311530&r)>>>1|(1431655765&r)<<1))>>>2|(858993459&r)<<2))>>>4|(252645135&r)<<4))>>>8|(16711935&r)<<8,e.rev15[t]=(r>>>16|r<<16)>>>17}function pushV(e,t,r){for(;0!=t--;)e.push(0,r)}for(t=0;t<32;t++)e.ldef[t]=e.of0[t]<<3|e.exb[t],e.ddef[t]=e.df0[t]<<4|e.dxb[t];pushV(e.fltree,144,8),pushV(e.fltree,112,9),pushV(e.fltree,24,7),pushV(e.fltree,8,8),UZIP.F.makeCodes(e.fltree,9),UZIP.F.codes2map(e.fltree,9,e.flmap),UZIP.F.revCodes(e.fltree,9),pushV(e.fdtree,32,5),UZIP.F.makeCodes(e.fdtree,5),UZIP.F.codes2map(e.fdtree,5,e.fdmap),UZIP.F.revCodes(e.fdtree,5),pushV(e.itree,19,0),pushV(e.ltree,286,0),pushV(e.dtree,30,0),pushV(e.ttree,320,0)}()}();var UZIP=_mergeNamespaces({__proto__:null,default:e},[e]);const UPNG=function(){var e={nextZero(e,t){for(;0!=e[t];)t++;return t},readUshort:(e,t)=>e[t]<<8|e[t+1],writeUshort(e,t,r){e[t]=r>>8&255,e[t+1]=255&r},readUint:(e,t)=>16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3]),writeUint(e,t,r){e[t]=r>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r},readASCII(e,t,r){let i=\"\";for(let o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII(e,t,r){for(let i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i)},readBytes(e,t,r){const i=[];for(let o=0;o<r;o++)i.push(e[t+o]);return i},pad:e=>e.length<2?`0${e}`:e,readUTF8(t,r,i){let o,a=\"\";for(let o=0;o<i;o++)a+=`%${e.pad(t[r+o].toString(16))}`;try{o=decodeURIComponent(a)}catch(o){return e.readASCII(t,r,i)}return o}};function decodeImage(t,r,i,o){const a=r*i,s=_getBPP(o),f=Math.ceil(r*s/8),l=new Uint8Array(4*a),c=new Uint32Array(l.buffer),{ctype:u}=o,{depth:h}=o,d=e.readUshort;if(6==u){const e=a<<2;if(8==h)for(var A=0;A<e;A+=4)l[A]=t[A],l[A+1]=t[A+1],l[A+2]=t[A+2],l[A+3]=t[A+3];if(16==h)for(A=0;A<e;A++)l[A]=t[A<<1]}else if(2==u){const e=o.tabs.tRNS;if(null==e){if(8==h)for(A=0;A<a;A++){var g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g]}if(16==h)for(A=0;A<a;A++){g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g]}}else{var p=e[0];const r=e[1],i=e[2];if(8==h)for(A=0;A<a;A++){var m=A<<2;g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g],t[g]==p&&t[g+1]==r&&t[g+2]==i&&(l[m+3]=0)}if(16==h)for(A=0;A<a;A++){m=A<<2,g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g],d(t,g)==p&&d(t,g+2)==r&&d(t,g+4)==i&&(l[m+3]=0)}}}else if(3==u){const e=o.tabs.PLTE,s=o.tabs.tRNS,c=s?s.length:0;if(1==h)for(var w=0;w<i;w++){var v=w*f,b=w*r;for(A=0;A<r;A++){m=b+A<<2;var y=3*(E=t[v+(A>>3)]>>7-((7&A)<<0)&1);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255}}if(2==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>2)]>>6-((3&A)<<1)&3);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255}if(4==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>1)]>>4-((1&A)<<2)&15);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255}if(8==h)for(A=0;A<a;A++){var E;m=A<<2,y=3*(E=t[A]);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255}}else if(4==u){if(8==h)for(A=0;A<a;A++){m=A<<2;var F=t[_=A<<1];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+1]}if(16==h)for(A=0;A<a;A++){var _;m=A<<2,F=t[_=A<<2];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+2]}}else if(0==u)for(p=o.tabs.tRNS?o.tabs.tRNS:-1,w=0;w<i;w++){const e=w*f,i=w*r;if(1==h)for(var B=0;B<r;B++){var U=(F=255*(t[e+(B>>>3)]>>>7-(7&B)&1))==255*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F}else if(2==h)for(B=0;B<r;B++){U=(F=85*(t[e+(B>>>2)]>>>6-((3&B)<<1)&3))==85*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F}else if(4==h)for(B=0;B<r;B++){U=(F=17*(t[e+(B>>>1)]>>>4-((1&B)<<2)&15))==17*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F}else if(8==h)for(B=0;B<r;B++){U=(F=t[e+B])==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F}else if(16==h)for(B=0;B<r;B++){F=t[e+(B<<1)],U=d(t,e+(B<<1))==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F}}return l}function _decompress(e,r,i,o){const a=_getBPP(e),s=Math.ceil(i*a/8),f=new Uint8Array((s+1+e.interlace)*o);return r=e.tabs.CgBI?t(r,f):_inflate(r,f),0==e.interlace?r=_filterZero(r,e,0,i,o):1==e.interlace&&(r=function _readInterlace(e,t){const r=t.width,i=t.height,o=_getBPP(t),a=o>>3,s=Math.ceil(r*o/8),f=new Uint8Array(i*s);let l=0;const c=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],h=[8,8,8,4,4,2,2],d=[8,8,4,4,2,2,1];let A=0;for(;A<7;){const p=h[A],m=d[A];let w=0,v=0,b=c[A];for(;b<i;)b+=p,v++;let y=u[A];for(;y<r;)y+=m,w++;const E=Math.ceil(w*o/8);_filterZero(e,t,l,w,v);let F=0,_=c[A];for(;_<i;){let t=u[A],i=l+F*E<<3;for(;t<r;){var g;if(1==o)g=(g=e[i>>3])>>7-(7&i)&1,f[_*s+(t>>3)]|=g<<7-((7&t)<<0);if(2==o)g=(g=e[i>>3])>>6-(7&i)&3,f[_*s+(t>>2)]|=g<<6-((3&t)<<1);if(4==o)g=(g=e[i>>3])>>4-(7&i)&15,f[_*s+(t>>1)]|=g<<4-((1&t)<<2);if(o>=8){const r=_*s+t*a;for(let t=0;t<a;t++)f[r+t]=e[(i>>3)+t]}i+=o,t+=m}F++,_+=p}w*v!=0&&(l+=v*(1+E)),A+=1}return f}(r,e)),r}function _inflate(e,r){return t(new Uint8Array(e.buffer,2,e.length-6),r)}var t=function(){const e={H:{}};return e.H.N=function(t,r){const i=Uint8Array;let o,a,s=0,f=0,l=0,c=0,u=0,h=0,d=0,A=0,g=0;if(3==t[0]&&0==t[1])return r||new i(0);const p=e.H,m=p.b,w=p.e,v=p.R,b=p.n,y=p.A,E=p.Z,F=p.m,_=null==r;for(_&&(r=new i(t.length>>>2<<5));0==s;)if(s=m(t,g,1),f=m(t,g+1,2),g+=3,0!=f){if(_&&(r=e.H.W(r,A+(1<<17))),1==f&&(o=F.J,a=F.h,h=511,d=31),2==f){l=w(t,g,5)+257,c=w(t,g+5,5)+1,u=w(t,g+10,4)+4,g+=14;let e=1;for(var B=0;B<38;B+=2)F.Q[B]=0,F.Q[B+1]=0;for(B=0;B<u;B++){const r=w(t,g+3*B,3);F.Q[1+(F.X[B]<<1)]=r,r>e&&(e=r)}g+=3*u,b(F.Q,e),y(F.Q,e,F.u),o=F.w,a=F.d,g=v(F.u,(1<<e)-1,l+c,t,g,F.v);const r=p.V(F.v,0,l,F.C);h=(1<<r)-1;const i=p.V(F.v,l,c,F.D);d=(1<<i)-1,b(F.C,r),y(F.C,r,o),b(F.D,i),y(F.D,i,a)}for(;;){const e=o[E(t,g)&h];g+=15&e;const i=e>>>4;if(i>>>8==0)r[A++]=i;else{if(256==i)break;{let e=A+i-254;if(i>264){const r=F.q[i-257];e=A+(r>>>3)+w(t,g,7&r),g+=7&r}const o=a[E(t,g)&d];g+=15&o;const s=o>>>4,f=F.c[s],l=(f>>>4)+m(t,g,15&f);for(g+=15&f;A<e;)r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l];A=e}}}}else{0!=(7&g)&&(g+=8-(7&g));const o=4+(g>>>3),a=t[o-4]|t[o-3]<<8;_&&(r=e.H.W(r,A+a)),r.set(new i(t.buffer,t.byteOffset+o,a),A),g=o+a<<3,A+=a}return r.length==A?r:r.slice(0,A)},e.H.W=function(e,t){const r=e.length;if(t<=r)return e;const i=new Uint8Array(r<<1);return i.set(e,0),i},e.H.R=function(t,r,i,o,a,s){const f=e.H.e,l=e.H.Z;let c=0;for(;c<i;){const e=t[l(o,a)&r];a+=15&e;const i=e>>>4;if(i<=15)s[c]=i,c++;else{let e=0,t=0;16==i?(t=3+f(o,a,2),a+=2,e=s[c-1]):17==i?(t=3+f(o,a,3),a+=3):18==i&&(t=11+f(o,a,7),a+=7);const r=c+t;for(;c<r;)s[c]=e,c++}}return a},e.H.V=function(e,t,r,i){let o=0,a=0;const s=i.length>>>1;for(;a<r;){const r=e[a+t];i[a<<1]=0,i[1+(a<<1)]=r,r>o&&(o=r),a++}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},e.H.n=function(t,r){const i=e.H.m,o=t.length;let a,s,f;let l;const c=i.j;for(var u=0;u<=r;u++)c[u]=0;for(u=1;u<o;u+=2)c[t[u]]++;const h=i.K;for(a=0,c[0]=0,s=1;s<=r;s++)a=a+c[s-1]<<1,h[s]=a;for(f=0;f<o;f+=2)l=t[f+1],0!=l&&(t[f]=h[l],h[l]++)},e.H.A=function(t,r,i){const o=t.length,a=e.H.m.r;for(let e=0;e<o;e+=2)if(0!=t[e+1]){const o=e>>1,s=t[e+1],f=o<<4|s,l=r-s;let c=t[e]<<l;const u=c+(1<<l);for(;c!=u;){i[a[c]>>>15-r]=f,c++}}},e.H.l=function(t,r){const i=e.H.m.r,o=15-r;for(let e=0;e<t.length;e+=2){const a=t[e]<<r-t[e+1];t[e]=i[a]>>>o}},e.H.M=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8},e.H.I=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16},e.H.e=function(e,t,r){return(e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},e.H.b=function(e,t,r){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},e.H.Z=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},e.H.i=function(e,t){return(e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},e.H.m=function(){const e=Uint16Array,t=Uint32Array;return{K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new t(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new t(286),Y:new t(30),a:new t(19),t:new t(15e3),k:new e(65536),g:new e(32768)}}(),function(){const t=e.H.m;for(var r=0;r<32768;r++){let e=r;e=(2863311530&e)>>>1|(1431655765&e)<<1,e=(3435973836&e)>>>2|(858993459&e)<<2,e=(4042322160&e)>>>4|(252645135&e)<<4,e=(4278255360&e)>>>8|(16711935&e)<<8,t.r[r]=(e>>>16|e<<16)>>>17}function n(e,t,r){for(;0!=t--;)e.push(0,r)}for(r=0;r<32;r++)t.q[r]=t.S[r]<<3|t.T[r],t.c[r]=t.p[r]<<4|t.z[r];n(t._,144,8),n(t._,112,9),n(t._,24,7),n(t._,8,8),e.H.n(t._,9),e.H.A(t._,9,t.J),e.H.l(t._,9),n(t.$,32,5),e.H.n(t.$,5),e.H.A(t.$,5,t.h),e.H.l(t.$,5),n(t.Q,19,0),n(t.C,286,0),n(t.D,30,0),n(t.v,320,0)}(),e.H.N}();function _getBPP(e){return[1,null,3,1,2,null,4][e.ctype]*e.depth}function _filterZero(e,t,r,i,o){let a=_getBPP(t);const s=Math.ceil(i*a/8);let f,l;a=Math.ceil(a/8);let c=e[r],u=0;if(c>1&&(e[r]=[0,0,1][c-2]),3==c)for(u=a;u<s;u++)e[u+1]=e[u+1]+(e[u+1-a]>>>1)&255;for(let t=0;t<o;t++)if(f=r+t*s,l=f+t+1,c=e[l-1],u=0,0==c)for(;u<s;u++)e[f+u]=e[l+u];else if(1==c){for(;u<a;u++)e[f+u]=e[l+u];for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-a]}else if(2==c)for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-s];else if(3==c){for(;u<a;u++)e[f+u]=e[l+u]+(e[f+u-s]>>>1);for(;u<s;u++)e[f+u]=e[l+u]+(e[f+u-s]+e[f+u-a]>>>1)}else{for(;u<a;u++)e[f+u]=e[l+u]+_paeth(0,e[f+u-s],0);for(;u<s;u++)e[f+u]=e[l+u]+_paeth(e[f+u-a],e[f+u-s],e[f+u-a-s])}return e}function _paeth(e,t,r){const i=e+t-r,o=i-e,a=i-t,s=i-r;return o*o<=a*a&&o*o<=s*s?e:a*a<=s*s?t:r}function _IHDR(t,r,i){i.width=e.readUint(t,r),r+=4,i.height=e.readUint(t,r),r+=4,i.depth=t[r],r++,i.ctype=t[r],r++,i.compress=t[r],r++,i.filter=t[r],r++,i.interlace=t[r],r++}function _copyTile(e,t,r,i,o,a,s,f,l){const c=Math.min(t,o),u=Math.min(r,a);let h=0,d=0;for(let r=0;r<u;r++)for(let a=0;a<c;a++)if(s>=0&&f>=0?(h=r*t+a<<2,d=(f+r)*o+s+a<<2):(h=(-f+r)*t-s+a<<2,d=r*o+a<<2),0==l)i[d]=e[h],i[d+1]=e[h+1],i[d+2]=e[h+2],i[d+3]=e[h+3];else if(1==l){var A=e[h+3]*(1/255),g=e[h]*A,p=e[h+1]*A,m=e[h+2]*A,w=i[d+3]*(1/255),v=i[d]*w,b=i[d+1]*w,y=i[d+2]*w;const t=1-A,r=A+w*t,o=0==r?0:1/r;i[d+3]=255*r,i[d+0]=(g+v*t)*o,i[d+1]=(p+b*t)*o,i[d+2]=(m+y*t)*o}else if(2==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];A==w&&g==v&&p==b&&m==y?(i[d]=0,i[d+1]=0,i[d+2]=0,i[d+3]=0):(i[d]=g,i[d+1]=p,i[d+2]=m,i[d+3]=A)}else if(3==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];if(A==w&&g==v&&p==b&&m==y)continue;if(A<220&&w>20)return!1}return!0}return{decode:function decode(r){const i=new Uint8Array(r);let o=8;const a=e,s=a.readUshort,f=a.readUint,l={tabs:{},frames:[]},c=new Uint8Array(i.length);let u,h=0,d=0;const A=[137,80,78,71,13,10,26,10];for(var g=0;g<8;g++)if(i[g]!=A[g])throw\"The input is not a PNG file!\";for(;o<i.length;){const e=a.readUint(i,o);o+=4;const r=a.readASCII(i,o,4);if(o+=4,\"IHDR\"==r)_IHDR(i,o,l);else if(\"iCCP\"==r){for(var p=o;0!=i[p];)p++;a.readASCII(i,o,p-o),i[p+1];const s=i.slice(p+2,o+e);let f=null;try{f=_inflate(s)}catch(e){f=t(s)}l.tabs[r]=f}else if(\"CgBI\"==r)l.tabs[r]=i.slice(o,o+4);else if(\"IDAT\"==r){for(g=0;g<e;g++)c[h+g]=i[o+g];h+=e}else if(\"acTL\"==r)l.tabs[r]={num_frames:f(i,o),num_plays:f(i,o+4)},u=new Uint8Array(i.length);else if(\"fcTL\"==r){if(0!=d)(E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height),d=0;const e={x:f(i,o+12),y:f(i,o+16),width:f(i,o+4),height:f(i,o+8)};let t=s(i,o+22);t=s(i,o+20)/(0==t?100:t);const r={rect:e,delay:Math.round(1e3*t),dispose:i[o+24],blend:i[o+25]};l.frames.push(r)}else if(\"fdAT\"==r){for(g=0;g<e-4;g++)u[d+g]=i[o+g+4];d+=e-4}else if(\"pHYs\"==r)l.tabs[r]=[a.readUint(i,o),a.readUint(i,o+4),i[o+8]];else if(\"cHRM\"==r){l.tabs[r]=[];for(g=0;g<8;g++)l.tabs[r].push(a.readUint(i,o+4*g))}else if(\"tEXt\"==r||\"zTXt\"==r){null==l.tabs[r]&&(l.tabs[r]={});var m=a.nextZero(i,o),w=a.readASCII(i,o,m-o),v=o+e-m-1;if(\"tEXt\"==r)y=a.readASCII(i,m+1,v);else{var b=_inflate(i.slice(m+2,m+2+v));y=a.readUTF8(b,0,b.length)}l.tabs[r][w]=y}else if(\"iTXt\"==r){null==l.tabs[r]&&(l.tabs[r]={});m=0,p=o;m=a.nextZero(i,p);w=a.readASCII(i,p,m-p);const t=i[p=m+1];var y;i[p+1],p+=2,m=a.nextZero(i,p),a.readASCII(i,p,m-p),p=m+1,m=a.nextZero(i,p),a.readUTF8(i,p,m-p);v=e-((p=m+1)-o);if(0==t)y=a.readUTF8(i,p,v);else{b=_inflate(i.slice(p,p+v));y=a.readUTF8(b,0,b.length)}l.tabs[r][w]=y}else if(\"PLTE\"==r)l.tabs[r]=a.readBytes(i,o,e);else if(\"hIST\"==r){const e=l.tabs.PLTE.length/3;l.tabs[r]=[];for(g=0;g<e;g++)l.tabs[r].push(s(i,o+2*g))}else if(\"tRNS\"==r)3==l.ctype?l.tabs[r]=a.readBytes(i,o,e):0==l.ctype?l.tabs[r]=s(i,o):2==l.ctype&&(l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]);else if(\"gAMA\"==r)l.tabs[r]=a.readUint(i,o)/1e5;else if(\"sRGB\"==r)l.tabs[r]=i[o];else if(\"bKGD\"==r)0==l.ctype||4==l.ctype?l.tabs[r]=[s(i,o)]:2==l.ctype||6==l.ctype?l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]:3==l.ctype&&(l.tabs[r]=i[o]);else if(\"IEND\"==r)break;o+=e,a.readUint(i,o),o+=4}var E;return 0!=d&&((E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height)),l.data=_decompress(l,c,l.width,l.height),delete l.compress,delete l.interlace,delete l.filter,l},toRGBA8:function toRGBA8(e){const t=e.width,r=e.height;if(null==e.tabs.acTL)return[decodeImage(e.data,t,r,e).buffer];const i=[];null==e.frames[0].data&&(e.frames[0].data=e.data);const o=t*r*4,a=new Uint8Array(o),s=new Uint8Array(o),f=new Uint8Array(o);for(let c=0;c<e.frames.length;c++){const u=e.frames[c],h=u.rect.x,d=u.rect.y,A=u.rect.width,g=u.rect.height,p=decodeImage(u.data,A,g,e);if(0!=c)for(var l=0;l<o;l++)f[l]=a[l];if(0==u.blend?_copyTile(p,A,g,a,t,r,h,d,0):1==u.blend&&_copyTile(p,A,g,a,t,r,h,d,1),i.push(a.buffer.slice(0)),0==u.dispose);else if(1==u.dispose)_copyTile(s,A,g,a,t,r,h,d,0);else if(2==u.dispose)for(l=0;l<o;l++)a[l]=f[l]}return i},_paeth:_paeth,_copyTile:_copyTile,_bin:e}}();!function(){const{_copyTile:e}=UPNG,{_bin:t}=UPNG,r=UPNG._paeth;var i={table:function(){const e=new Uint32Array(256);for(let t=0;t<256;t++){let r=t;for(let e=0;e<8;e++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r}return e}(),update(e,t,r,o){for(let a=0;a<o;a++)e=i.table[255&(e^t[r+a])]^e>>>8;return e},crc:(e,t,r)=>4294967295^i.update(4294967295,e,t,r)};function addErr(e,t,r,i){t[r]+=e[0]*i>>4,t[r+1]+=e[1]*i>>4,t[r+2]+=e[2]*i>>4,t[r+3]+=e[3]*i>>4}function N(e){return Math.max(0,Math.min(255,e))}function D(e,t){const r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2],a=e[3]-t[3];return r*r+i*i+o*o+a*a}function dither(e,t,r,i,o,a,s){null==s&&(s=1);const f=i.length,l=[];for(var c=0;c<f;c++){const e=i[c];l.push([e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255])}for(c=0;c<f;c++){let e=4294967295;for(var u=0,h=0;h<f;h++){var d=D(l[c],l[h]);h!=c&&d<e&&(e=d,u=h)}}const A=new Uint32Array(o.buffer),g=new Int16Array(t*r*4),p=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(c=0;c<p.length;c++)p[c]=255*((p[c]+.5)/16-.5);for(let o=0;o<r;o++)for(let w=0;w<t;w++){var m;c=4*(o*t+w);if(2!=s)m=[N(e[c]+g[c]),N(e[c+1]+g[c+1]),N(e[c+2]+g[c+2]),N(e[c+3]+g[c+3])];else{d=p[4*(3&o)+(3&w)];m=[N(e[c]+d),N(e[c+1]+d),N(e[c+2]+d),N(e[c+3]+d)]}u=0;let v=16777215;for(h=0;h<f;h++){const e=D(m,l[h]);e<v&&(v=e,u=h)}const b=l[u],y=[m[0]-b[0],m[1]-b[1],m[2]-b[2],m[3]-b[3]];1==s&&(w!=t-1&&addErr(y,g,c+4,7),o!=r-1&&(0!=w&&addErr(y,g,c+4*t-4,3),addErr(y,g,c+4*t,5),w!=t-1&&addErr(y,g,c+4*t+4,1))),a[c>>2]=u,A[c>>2]=i[u]}}function _main(e,r,o,a,s){null==s&&(s={});const{crc:f}=i,l=t.writeUint,c=t.writeUshort,u=t.writeASCII;let h=8;const d=e.frames.length>1;let A,g=!1,p=33+(d?20:0);if(null!=s.sRGB&&(p+=13),null!=s.pHYs&&(p+=21),null!=s.iCCP&&(A=pako.deflate(s.iCCP),p+=21+A.length+4),3==e.ctype){for(var m=e.plte.length,w=0;w<m;w++)e.plte[w]>>>24!=255&&(g=!0);p+=8+3*m+4+(g?8+1*m+4:0)}for(var v=0;v<e.frames.length;v++){d&&(p+=38),p+=(F=e.frames[v]).cimg.length+12,0!=v&&(p+=4)}p+=12;const b=new Uint8Array(p),y=[137,80,78,71,13,10,26,10];for(w=0;w<8;w++)b[w]=y[w];if(l(b,h,13),h+=4,u(b,h,\"IHDR\"),h+=4,l(b,h,r),h+=4,l(b,h,o),h+=4,b[h]=e.depth,h++,b[h]=e.ctype,h++,b[h]=0,h++,b[h]=0,h++,b[h]=0,h++,l(b,h,f(b,h-17,17)),h+=4,null!=s.sRGB&&(l(b,h,1),h+=4,u(b,h,\"sRGB\"),h+=4,b[h]=s.sRGB,h++,l(b,h,f(b,h-5,5)),h+=4),null!=s.iCCP){const e=13+A.length;l(b,h,e),h+=4,u(b,h,\"iCCP\"),h+=4,u(b,h,\"ICC profile\"),h+=11,h+=2,b.set(A,h),h+=A.length,l(b,h,f(b,h-(e+4),e+4)),h+=4}if(null!=s.pHYs&&(l(b,h,9),h+=4,u(b,h,\"pHYs\"),h+=4,l(b,h,s.pHYs[0]),h+=4,l(b,h,s.pHYs[1]),h+=4,b[h]=s.pHYs[2],h++,l(b,h,f(b,h-13,13)),h+=4),d&&(l(b,h,8),h+=4,u(b,h,\"acTL\"),h+=4,l(b,h,e.frames.length),h+=4,l(b,h,null!=s.loop?s.loop:0),h+=4,l(b,h,f(b,h-12,12)),h+=4),3==e.ctype){l(b,h,3*(m=e.plte.length)),h+=4,u(b,h,\"PLTE\"),h+=4;for(w=0;w<m;w++){const t=3*w,r=e.plte[w],i=255&r,o=r>>>8&255,a=r>>>16&255;b[h+t+0]=i,b[h+t+1]=o,b[h+t+2]=a}if(h+=3*m,l(b,h,f(b,h-3*m-4,3*m+4)),h+=4,g){l(b,h,m),h+=4,u(b,h,\"tRNS\"),h+=4;for(w=0;w<m;w++)b[h+w]=e.plte[w]>>>24&255;h+=m,l(b,h,f(b,h-m-4,m+4)),h+=4}}let E=0;for(v=0;v<e.frames.length;v++){var F=e.frames[v];d&&(l(b,h,26),h+=4,u(b,h,\"fcTL\"),h+=4,l(b,h,E++),h+=4,l(b,h,F.rect.width),h+=4,l(b,h,F.rect.height),h+=4,l(b,h,F.rect.x),h+=4,l(b,h,F.rect.y),h+=4,c(b,h,a[v]),h+=2,c(b,h,1e3),h+=2,b[h]=F.dispose,h++,b[h]=F.blend,h++,l(b,h,f(b,h-30,30)),h+=4);const t=F.cimg;l(b,h,(m=t.length)+(0==v?0:4)),h+=4;const r=h;u(b,h,0==v?\"IDAT\":\"fdAT\"),h+=4,0!=v&&(l(b,h,E++),h+=4),b.set(t,h),h+=m,l(b,h,f(b,r,h-r)),h+=4}return l(b,h,0),h+=4,u(b,h,\"IEND\"),h+=4,l(b,h,f(b,h-4,4)),h+=4,b.buffer}function compressPNG(e,t,r){for(let i=0;i<e.frames.length;i++){const o=e.frames[i];o.rect.width;const a=o.rect.height,s=new Uint8Array(a*o.bpl+a);o.cimg=_filterZero(o.img,a,o.bpp,o.bpl,s,t,r)}}function compress(t,r,i,o,a){const s=a[0],f=a[1],l=a[2],c=a[3],u=a[4],h=a[5];let d=6,A=8,g=255;for(var p=0;p<t.length;p++){const e=new Uint8Array(t[p]);for(var m=e.length,w=0;w<m;w+=4)g&=e[w+3]}const v=255!=g,b=function framize(t,r,i,o,a,s){const f=[];for(var l=0;l<t.length;l++){const h=new Uint8Array(t[l]),A=new Uint32Array(h.buffer);var c;let g=0,p=0,m=r,w=i,v=o?1:0;if(0!=l){const b=s||o||1==l||0!=f[l-2].dispose?1:2;let y=0,E=1e9;for(let e=0;e<b;e++){var u=new Uint8Array(t[l-1-e]);const o=new Uint32Array(t[l-1-e]);let s=r,f=i,c=-1,h=-1;for(let e=0;e<i;e++)for(let t=0;t<r;t++){A[d=e*r+t]!=o[d]&&(t<s&&(s=t),t>c&&(c=t),e<f&&(f=e),e>h&&(h=e))}-1==c&&(s=f=c=h=0),a&&(1==(1&s)&&s--,1==(1&f)&&f--);const v=(c-s+1)*(h-f+1);v<E&&(E=v,y=e,g=s,p=f,m=c-s+1,w=h-f+1)}u=new Uint8Array(t[l-1-y]);1==y&&(f[l-1].dispose=2),c=new Uint8Array(m*w*4),e(u,r,i,c,m,w,-g,-p,0),v=e(h,r,i,c,m,w,-g,-p,3)?1:0,1==v?_prepareDiff(h,r,i,c,{x:g,y:p,width:m,height:w}):e(h,r,i,c,m,w,-g,-p,0)}else c=h.slice(0);f.push({rect:{x:g,y:p,width:m,height:w},img:c,blend:v,dispose:0})}if(o)for(l=0;l<f.length;l++){if(1==(A=f[l]).blend)continue;const e=A.rect,o=f[l-1].rect,s=Math.min(e.x,o.x),c=Math.min(e.y,o.y),u={x:s,y:c,width:Math.max(e.x+e.width,o.x+o.width)-s,height:Math.max(e.y+e.height,o.y+o.height)-c};f[l-1].dispose=1,l-1!=0&&_updateFrame(t,r,i,f,l-1,u,a),_updateFrame(t,r,i,f,l,u,a)}let h=0;if(1!=t.length)for(var d=0;d<f.length;d++){var A;h+=(A=f[d]).rect.width*A.rect.height}return f}(t,r,i,s,f,l),y={},E=[],F=[];if(0!=o){const e=[];for(w=0;w<b.length;w++)e.push(b[w].img.buffer);const t=function concatRGBA(e){let t=0;for(var r=0;r<e.length;r++)t+=e[r].byteLength;const i=new Uint8Array(t);let o=0;for(r=0;r<e.length;r++){const t=new Uint8Array(e[r]),a=t.length;for(let e=0;e<a;e+=4){let r=t[e],a=t[e+1],s=t[e+2];const f=t[e+3];0==f&&(r=a=s=0),i[o+e]=r,i[o+e+1]=a,i[o+e+2]=s,i[o+e+3]=f}o+=a}return i.buffer}(e),r=quantize(t,o);for(w=0;w<r.plte.length;w++)E.push(r.plte[w].est.rgba);let i=0;for(w=0;w<b.length;w++){const e=(B=b[w]).img.length;var _=new Uint8Array(r.inds.buffer,i>>2,e>>2);F.push(_);const t=new Uint8Array(r.abuf,i,e);h&&dither(B.img,B.rect.width,B.rect.height,E,t,_),B.img.set(t),i+=e}}else for(p=0;p<b.length;p++){var B=b[p];const e=new Uint32Array(B.img.buffer);var U=B.rect.width;m=e.length,_=new Uint8Array(m);F.push(_);for(w=0;w<m;w++){const t=e[w];if(0!=w&&t==e[w-1])_[w]=_[w-1];else if(w>U&&t==e[w-U])_[w]=_[w-U];else{let e=y[t];if(null==e&&(y[t]=e=E.length,E.push(t),E.length>=300))break;_[w]=e}}}const C=E.length;C<=256&&0==u&&(A=C<=2?1:C<=4?2:C<=16?4:8,A=Math.max(A,c));for(p=0;p<b.length;p++){(B=b[p]).rect.x,B.rect.y;U=B.rect.width;const e=B.rect.height;let t=B.img;new Uint32Array(t.buffer);let r=4*U,i=4;if(C<=256&&0==u){r=Math.ceil(A*U/8);var I=new Uint8Array(r*e);const o=F[p];for(let t=0;t<e;t++){w=t*r;const e=t*U;if(8==A)for(var Q=0;Q<U;Q++)I[w+Q]=o[e+Q];else if(4==A)for(Q=0;Q<U;Q++)I[w+(Q>>1)]|=o[e+Q]<<4-4*(1&Q);else if(2==A)for(Q=0;Q<U;Q++)I[w+(Q>>2)]|=o[e+Q]<<6-2*(3&Q);else if(1==A)for(Q=0;Q<U;Q++)I[w+(Q>>3)]|=o[e+Q]<<7-1*(7&Q)}t=I,d=3,i=1}else if(0==v&&1==b.length){I=new Uint8Array(U*e*3);const o=U*e;for(w=0;w<o;w++){const e=3*w,r=4*w;I[e]=t[r],I[e+1]=t[r+1],I[e+2]=t[r+2]}t=I,d=2,i=3,r=3*U}B.img=t,B.bpl=r,B.bpp=i}return{ctype:d,depth:A,plte:E,frames:b}}function _updateFrame(t,r,i,o,a,s,f){const l=Uint8Array,c=Uint32Array,u=new l(t[a-1]),h=new c(t[a-1]),d=a+1<t.length?new l(t[a+1]):null,A=new l(t[a]),g=new c(A.buffer);let p=r,m=i,w=-1,v=-1;for(let e=0;e<s.height;e++)for(let t=0;t<s.width;t++){const i=s.x+t,f=s.y+e,l=f*r+i,c=g[l];0==c||0==o[a-1].dispose&&h[l]==c&&(null==d||0!=d[4*l+3])||(i<p&&(p=i),i>w&&(w=i),f<m&&(m=f),f>v&&(v=f))}-1==w&&(p=m=w=v=0),f&&(1==(1&p)&&p--,1==(1&m)&&m--),s={x:p,y:m,width:w-p+1,height:v-m+1};const b=o[a];b.rect=s,b.blend=1,b.img=new Uint8Array(s.width*s.height*4),0==o[a-1].dispose?(e(u,r,i,b.img,s.width,s.height,-s.x,-s.y,0),_prepareDiff(A,r,i,b.img,s)):e(A,r,i,b.img,s.width,s.height,-s.x,-s.y,0)}function _prepareDiff(t,r,i,o,a){e(t,r,i,o,a.width,a.height,-a.x,-a.y,2)}function _filterZero(e,t,r,i,o,a,s){const f=[];let l,c=[0,1,2,3,4];-1!=a?c=[a]:(t*i>5e5||1==r)&&(c=[0]),s&&(l={level:0});const u=UZIP;for(var h=0;h<c.length;h++){for(let a=0;a<t;a++)_filterLine(o,e,a,i,r,c[h]);f.push(u.deflate(o,l))}let d,A=1e9;for(h=0;h<f.length;h++)f[h].length<A&&(d=h,A=f[h].length);return f[d]}function _filterLine(e,t,i,o,a,s){const f=i*o;let l=f+i;if(e[l]=s,l++,0==s)if(o<500)for(var c=0;c<o;c++)e[l+c]=t[f+c];else e.set(new Uint8Array(t.buffer,f,o),l);else if(1==s){for(c=0;c<a;c++)e[l+c]=t[f+c];for(c=a;c<o;c++)e[l+c]=t[f+c]-t[f+c-a]+256&255}else if(0==i){for(c=0;c<a;c++)e[l+c]=t[f+c];if(2==s)for(c=a;c<o;c++)e[l+c]=t[f+c];if(3==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-(t[f+c-a]>>1)+256&255;if(4==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-r(t[f+c-a],0,0)+256&255}else{if(2==s)for(c=0;c<o;c++)e[l+c]=t[f+c]+256-t[f+c-o]&255;if(3==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-(t[f+c-o]>>1)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-(t[f+c-o]+t[f+c-a]>>1)&255}if(4==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-r(0,t[f+c-o],0)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-r(t[f+c-a],t[f+c-o],t[f+c-a-o])&255}}}function quantize(e,t){const r=new Uint8Array(e),i=r.slice(0),o=new Uint32Array(i.buffer),a=getKDtree(i,t),s=a[0],f=a[1],l=r.length,c=new Uint8Array(l>>2);let u;if(r.length<2e7)for(var h=0;h<l;h+=4){u=getNearest(s,d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255)),c[h>>2]=u.ind,o[h>>2]=u.est.rgba}else for(h=0;h<l;h+=4){var d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255);for(u=s;u.left;)u=planeDst(u.est,d,A,g,p)<=0?u.left:u.right;c[h>>2]=u.ind,o[h>>2]=u.est.rgba}return{abuf:i.buffer,inds:c,plte:f}}function getKDtree(e,t,r){null==r&&(r=1e-4);const i=new Uint32Array(e.buffer),o={i0:0,i1:e.length,bst:null,est:null,tdst:0,left:null,right:null};o.bst=stats(e,o.i0,o.i1),o.est=estats(o.bst);const a=[o];for(;a.length<t;){let t=0,o=0;for(var s=0;s<a.length;s++)a[s].est.L>t&&(t=a[s].est.L,o=s);if(t<r)break;const f=a[o],l=splitPixels(e,i,f.i0,f.i1,f.est.e,f.est.eMq255);if(f.i0>=l||f.i1<=l){f.est.L=0;continue}const c={i0:f.i0,i1:l,bst:null,est:null,tdst:0,left:null,right:null};c.bst=stats(e,c.i0,c.i1),c.est=estats(c.bst);const u={i0:l,i1:f.i1,bst:null,est:null,tdst:0,left:null,right:null};u.bst={R:[],m:[],N:f.bst.N-c.bst.N};for(s=0;s<16;s++)u.bst.R[s]=f.bst.R[s]-c.bst.R[s];for(s=0;s<4;s++)u.bst.m[s]=f.bst.m[s]-c.bst.m[s];u.est=estats(u.bst),f.left=c,f.right=u,a[o]=c,a.push(u)}a.sort(((e,t)=>t.bst.N-e.bst.N));for(s=0;s<a.length;s++)a[s].ind=s;return[o,a]}function getNearest(e,t,r,i,o){if(null==e.left)return e.tdst=function dist(e,t,r,i,o){const a=t-e[0],s=r-e[1],f=i-e[2],l=o-e[3];return a*a+s*s+f*f+l*l}(e.est.q,t,r,i,o),e;const a=planeDst(e.est,t,r,i,o);let s=e.left,f=e.right;a>0&&(s=e.right,f=e.left);const l=getNearest(s,t,r,i,o);if(l.tdst<=a*a)return l;const c=getNearest(f,t,r,i,o);return c.tdst<l.tdst?c:l}function planeDst(e,t,r,i,o){const{e:a}=e;return a[0]*t+a[1]*r+a[2]*i+a[3]*o-e.eMq}function splitPixels(e,t,r,i,o,a){for(i-=4;r<i;){for(;vecDot(e,r,o)<=a;)r+=4;for(;vecDot(e,i,o)>a;)i-=4;if(r>=i)break;const s=t[r>>2];t[r>>2]=t[i>>2],t[i>>2]=s,r+=4,i-=4}for(;vecDot(e,r,o)>a;)r-=4;return r+4}function vecDot(e,t,r){return e[t]*r[0]+e[t+1]*r[1]+e[t+2]*r[2]+e[t+3]*r[3]}function stats(e,t,r){const i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=[0,0,0,0],a=r-t>>2;for(let a=t;a<r;a+=4){const t=e[a]*(1/255),r=e[a+1]*(1/255),s=e[a+2]*(1/255),f=e[a+3]*(1/255);o[0]+=t,o[1]+=r,o[2]+=s,o[3]+=f,i[0]+=t*t,i[1]+=t*r,i[2]+=t*s,i[3]+=t*f,i[5]+=r*r,i[6]+=r*s,i[7]+=r*f,i[10]+=s*s,i[11]+=s*f,i[15]+=f*f}return i[4]=i[1],i[8]=i[2],i[9]=i[6],i[12]=i[3],i[13]=i[7],i[14]=i[11],{R:i,m:o,N:a}}function estats(e){const{R:t}=e,{m:r}=e,{N:i}=e,a=r[0],s=r[1],f=r[2],l=r[3],c=0==i?0:1/i,u=[t[0]-a*a*c,t[1]-a*s*c,t[2]-a*f*c,t[3]-a*l*c,t[4]-s*a*c,t[5]-s*s*c,t[6]-s*f*c,t[7]-s*l*c,t[8]-f*a*c,t[9]-f*s*c,t[10]-f*f*c,t[11]-f*l*c,t[12]-l*a*c,t[13]-l*s*c,t[14]-l*f*c,t[15]-l*l*c],h=u,d=o;let A=[Math.random(),Math.random(),Math.random(),Math.random()],g=0,p=0;if(0!=i)for(let e=0;e<16&&(A=d.multVec(h,A),p=Math.sqrt(d.dot(A,A)),A=d.sml(1/p,A),!(0!=e&&Math.abs(p-g)<1e-9));e++)g=p;const m=[a*c,s*c,f*c,l*c];return{Cov:u,q:m,e:A,L:g,eMq255:d.dot(d.sml(255,m),A),eMq:d.dot(A,m),rgba:(Math.round(255*m[3])<<24|Math.round(255*m[2])<<16|Math.round(255*m[1])<<8|Math.round(255*m[0])<<0)>>>0}}var o={multVec:(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]],dot:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],sml:(e,t)=>[e*t[0],e*t[1],e*t[2],e*t[3]]};UPNG.encode=function encode(e,t,r,i,o,a,s){null==i&&(i=0),null==s&&(s=!1);const f=compress(e,t,r,i,[!1,!1,!1,0,s,!1]);return compressPNG(f,-1),_main(f,t,r,o,a)},UPNG.encodeLL=function encodeLL(e,t,r,i,o,a,s,f){const l={ctype:0+(1==i?0:2)+(0==o?0:4),depth:a,frames:[]},c=(i+o)*a,u=c*t;for(let i=0;i<e.length;i++)l.frames.push({rect:{x:0,y:0,width:t,height:r},img:new Uint8Array(e[i]),blend:0,dispose:1,bpp:Math.ceil(c/8),bpl:Math.ceil(u/8)});return compressPNG(l,0,!0),_main(l,t,r,s,f)},UPNG.encode.compress=compress,UPNG.encode.dither=dither,UPNG.quantize=quantize,UPNG.quantize.getKDtree=getKDtree,UPNG.quantize.getNearest=getNearest}();const r={toArrayBuffer(e,t){const i=e.width,o=e.height,a=i<<2,s=e.getContext(\"2d\").getImageData(0,0,i,o),f=new Uint32Array(s.data.buffer),l=(32*i+31)/32<<2,c=l*o,u=122+c,h=new ArrayBuffer(u),d=new DataView(h),A=1<<20;let g,p,m,w,v=A,b=0,y=0,E=0;function set16(e){d.setUint16(y,e,!0),y+=2}function set32(e){d.setUint32(y,e,!0),y+=4}function seek(e){y+=e}set16(19778),set32(u),seek(4),set32(122),set32(108),set32(i),set32(-o>>>0),set16(1),set16(32),set32(3),set32(c),set32(2835),set32(2835),seek(8),set32(16711680),set32(65280),set32(255),set32(4278190080),set32(1466527264),function convert(){for(;b<o&&v>0;){for(w=122+b*l,g=0;g<a;)v--,p=f[E++],m=p>>>24,d.setUint32(w+g,p<<8|m),g+=4;b++}E<f.length?(v=A,setTimeout(convert,r._dly)):t(h)}()},toBlob(e,t){this.toArrayBuffer(e,(e=>{t(new Blob([e],{type:\"image/bmp\"}))}))},_dly:9};var i={CHROME:\"CHROME\",FIREFOX:\"FIREFOX\",DESKTOP_SAFARI:\"DESKTOP_SAFARI\",IE:\"IE\",IOS:\"IOS\",ETC:\"ETC\"},o={[i.CHROME]:16384,[i.FIREFOX]:11180,[i.DESKTOP_SAFARI]:16384,[i.IE]:8192,[i.IOS]:4096,[i.ETC]:8192};const a=\"undefined\"!=typeof window,s=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,f=a&&window.cordova&&window.cordova.require&&window.cordova.require(\"cordova/modulemapper\"),CustomFile=(a||s)&&(f&&f.getOriginalSymbol(window,\"File\")||\"undefined\"!=typeof File&&File),CustomFileReader=(a||s)&&(f&&f.getOriginalSymbol(window,\"FileReader\")||\"undefined\"!=typeof FileReader&&FileReader);function getFilefromDataUrl(e,t,r=Date.now()){return new Promise((i=>{const o=e.split(\",\"),a=o[0].match(/:(.*?);/)[1],s=globalThis.atob(o[1]);let f=s.length;const l=new Uint8Array(f);for(;f--;)l[f]=s.charCodeAt(f);const c=new Blob([l],{type:a});c.name=t,c.lastModified=r,i(c)}))}function getDataUrlFromFile(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=()=>t(i.result),i.onerror=e=>r(e),i.readAsDataURL(e)}))}function loadImage(e){return new Promise(((t,r)=>{const i=new Image;i.onload=()=>t(i),i.onerror=e=>r(e),i.src=e}))}function getBrowserName(){if(void 0!==getBrowserName.cachedResult)return getBrowserName.cachedResult;let e=i.ETC;const{userAgent:t}=navigator;return/Chrom(e|ium)/i.test(t)?e=i.CHROME:/iP(ad|od|hone)/i.test(t)&&/WebKit/i.test(t)?e=i.IOS:/Safari/i.test(t)?e=i.DESKTOP_SAFARI:/Firefox/i.test(t)?e=i.FIREFOX:(/MSIE/i.test(t)||!0==!!document.documentMode)&&(e=i.IE),getBrowserName.cachedResult=e,getBrowserName.cachedResult}function approximateBelowMaximumCanvasSizeOfBrowser(e,t){const r=getBrowserName(),i=o[r];let a=e,s=t,f=a*s;const l=a>s?s/a:a/s;for(;f>i*i;){const e=(i+a)/2,t=(i+s)/2;e<t?(s=t,a=t*l):(s=e*l,a=e),f=a*s}return{width:a,height:s}}function getNewCanvasAndCtx(e,t){let r,i;try{if(r=new OffscreenCanvas(e,t),i=r.getContext(\"2d\"),null===i)throw new Error(\"getContext of OffscreenCanvas returns null\")}catch(e){r=document.createElement(\"canvas\"),i=r.getContext(\"2d\")}return r.width=e,r.height=t,[r,i]}function drawImageInCanvas(e,t){const{width:r,height:i}=approximateBelowMaximumCanvasSizeOfBrowser(e.width,e.height),[o,a]=getNewCanvasAndCtx(r,i);return t&&/jpe?g/.test(t)&&(a.fillStyle=\"white\",a.fillRect(0,0,o.width,o.height)),a.drawImage(e,0,0,o.width,o.height),o}function isIOS(){return void 0!==isIOS.cachedResult||(isIOS.cachedResult=[\"iPad Simulator\",\"iPhone Simulator\",\"iPod Simulator\",\"iPad\",\"iPhone\",\"iPod\"].includes(navigator.platform)||navigator.userAgent.includes(\"Mac\")&&\"undefined\"!=typeof document&&\"ontouchend\"in document),isIOS.cachedResult}function drawFileInCanvas(e,t={}){return new Promise((function(r,o){let a,s;var $Try_2_Post=function(){try{return s=drawImageInCanvas(a,t.fileType||e.type),r([a,s])}catch(e){return o(e)}},$Try_2_Catch=function(t){try{0;var $Try_3_Catch=function(e){try{throw e}catch(e){return o(e)}};try{let t;return getDataUrlFromFile(e).then((function(e){try{return t=e,loadImage(t).then((function(e){try{return a=e,function(){try{return $Try_2_Post()}catch(e){return o(e)}}()}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){$Try_3_Catch(e)}}catch(e){return o(e)}};try{if(isIOS()||[i.DESKTOP_SAFARI,i.MOBILE_SAFARI].includes(getBrowserName()))throw new Error(\"Skip createImageBitmap on IOS and Safari\");return createImageBitmap(e).then((function(e){try{return a=e,$Try_2_Post()}catch(e){return $Try_2_Catch()}}),$Try_2_Catch)}catch(e){$Try_2_Catch()}}))}function canvasToFile(e,t,i,o,a=1){return new Promise((function(s,f){let l;if(\"image/png\"===t){let c,u,h;return c=e.getContext(\"2d\"),({data:u}=c.getImageData(0,0,e.width,e.height)),h=UPNG.encode([u.buffer],e.width,e.height,4096*a),l=new Blob([h],{type:t}),l.name=i,l.lastModified=o,$If_4.call(this)}{if(\"image/bmp\"===t)return new Promise((t=>r.toBlob(e,t))).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_5.call(this)}catch(e){return f(e)}}.bind(this),f);{if(\"function\"==typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return e.convertToBlob({type:t,quality:a}).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f);{let d;return d=e.toDataURL(t,a),getFilefromDataUrl(d,i,o).then(function(e){try{return l=e,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f)}function $If_6(){return $If_5.call(this)}}function $If_5(){return $If_4.call(this)}}function $If_4(){return s(l)}}))}function cleanupCanvasMemory(e){e.width=0,e.height=0}function isAutoOrientationInBrowser(){return new Promise((function(e,t){let r,i,o,a,s;return void 0!==isAutoOrientationInBrowser.cachedResult?e(isAutoOrientationInBrowser.cachedResult):(r=\"data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==\",getFilefromDataUrl(\"data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==\",\"test.jpg\",Date.now()).then((function(r){try{return i=r,drawFileInCanvas(i).then((function(r){try{return o=r[1],canvasToFile(o,i.type,i.name,i.lastModified).then((function(r){try{return a=r,cleanupCanvasMemory(o),drawFileInCanvas(a).then((function(r){try{return s=r[0],isAutoOrientationInBrowser.cachedResult=1===s.width&&2===s.height,e(isAutoOrientationInBrowser.cachedResult)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t))}))}function getExifOrientation(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=e=>{const r=new DataView(e.target.result);if(65496!=r.getUint16(0,!1))return t(-2);const i=r.byteLength;let o=2;for(;o<i;){if(r.getUint16(o+2,!1)<=8)return t(-1);const e=r.getUint16(o,!1);if(o+=2,65505==e){if(1165519206!=r.getUint32(o+=2,!1))return t(-1);const e=18761==r.getUint16(o+=6,!1);o+=r.getUint32(o+4,e);const i=r.getUint16(o,e);o+=2;for(let a=0;a<i;a++)if(274==r.getUint16(o+12*a,e))return t(r.getUint16(o+12*a+8,e))}else{if(65280!=(65280&e))break;o+=r.getUint16(o,!1)}}return t(-1)},i.onerror=e=>r(e),i.readAsArrayBuffer(e)}))}function handleMaxWidthOrHeight(e,t){const{width:r}=e,{height:i}=e,{maxWidthOrHeight:o}=t;let a,s=e;return isFinite(o)&&(r>o||i>o)&&([s,a]=getNewCanvasAndCtx(r,i),r>i?(s.width=o,s.height=i/r*o):(s.width=r/i*o,s.height=o),a.drawImage(e,0,0,s.width,s.height),cleanupCanvasMemory(e)),s}function followExifOrientation(e,t){const{width:r}=e,{height:i}=e,[o,a]=getNewCanvasAndCtx(r,i);switch(t>4&&t<9?(o.width=i,o.height=r):(o.width=r,o.height=i),t){case 2:a.transform(-1,0,0,1,r,0);break;case 3:a.transform(-1,0,0,-1,r,i);break;case 4:a.transform(1,0,0,-1,0,i);break;case 5:a.transform(0,1,1,0,0,0);break;case 6:a.transform(0,1,-1,0,i,0);break;case 7:a.transform(0,-1,-1,0,i,r);break;case 8:a.transform(0,-1,1,0,0,r)}return a.drawImage(e,0,0,r,i),cleanupCanvasMemory(e),o}function compress(e,t,r=0){return new Promise((function(i,o){let a,s,f,l,c,u,h,d,A,g,p,m,w,v,b,y,E,F,_,B;function incProgress(e=5){if(t.signal&&t.signal.aborted)throw t.signal.reason;a+=e,t.onProgress(Math.min(a,100))}function setProgress(e){if(t.signal&&t.signal.aborted)throw t.signal.reason;a=Math.min(Math.max(e,a),100),t.onProgress(a)}return a=r,s=t.maxIteration||10,f=1024*t.maxSizeMB*1024,incProgress(),drawFileInCanvas(e,t).then(function(r){try{return[,l]=r,incProgress(),c=handleMaxWidthOrHeight(l,t),incProgress(),new Promise((function(r,i){var o;if(!(o=t.exifOrientation))return getExifOrientation(e).then(function(e){try{return o=e,$If_2.call(this)}catch(e){return i(e)}}.bind(this),i);function $If_2(){return r(o)}return $If_2.call(this)})).then(function(r){try{return u=r,incProgress(),isAutoOrientationInBrowser().then(function(r){try{return h=r?c:followExifOrientation(c,u),incProgress(),d=t.initialQuality||1,A=t.fileType||e.type,canvasToFile(h,A,e.name,e.lastModified,d).then(function(r){try{{if(g=r,incProgress(),p=g.size>f,m=g.size>e.size,!p&&!m)return setProgress(100),i(g);var a;function $Loop_3(){if(s--&&(b>f||b>w)){let t,r;return t=B?.95*_.width:_.width,r=B?.95*_.height:_.height,[E,F]=getNewCanvasAndCtx(t,r),F.drawImage(_,0,0,t,r),d*=\"image/png\"===A?.85:.95,canvasToFile(E,A,e.name,e.lastModified,d).then((function(e){try{return y=e,cleanupCanvasMemory(_),_=E,b=y.size,setProgress(Math.min(99,Math.floor((v-b)/(v-f)*100))),$Loop_3}catch(e){return o(e)}}),o)}return[1]}return w=e.size,v=g.size,b=v,_=h,B=!t.alwaysKeepResolution&&p,(a=function(e){for(;e;){if(e.then)return void e.then(a,o);try{if(e.pop){if(e.length)return e.pop()?$Loop_3_exit.call(this):e;e=$Loop_3}else e=e.call(this)}catch(e){return o(e)}}}.bind(this))($Loop_3);function $Loop_3_exit(){return cleanupCanvasMemory(_),cleanupCanvasMemory(E),cleanupCanvasMemory(c),cleanupCanvasMemory(h),cleanupCanvasMemory(l),setProgress(100),i(y)}}}catch(u){return o(u)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}))}const l=\"\\nlet scriptImported = false\\nself.addEventListener('message', async (e) => {\\n  const { file, id, imageCompressionLibUrl, options } = e.data\\n  options.onProgress = (progress) => self.postMessage({ progress, id })\\n  try {\\n    if (!scriptImported) {\\n      // console.log('[worker] importScripts', imageCompressionLibUrl)\\n      self.importScripts(imageCompressionLibUrl)\\n      scriptImported = true\\n    }\\n    // console.log('[worker] self', self)\\n    const compressedFile = await imageCompression(file, options)\\n    self.postMessage({ file: compressedFile, id })\\n  } catch (e) {\\n    // console.error('[worker] error', e)\\n    self.postMessage({ error: e.message + '\\\\n' + e.stack, id })\\n  }\\n})\\n\";let c;function compressOnWebWorker(e,t){return new Promise(((r,i)=>{c||(c=function createWorkerScriptURL(e){const t=[];return\"function\"==typeof e?t.push(`(${e})()`):t.push(e),URL.createObjectURL(new Blob(t))}(l));const o=new Worker(c);o.addEventListener(\"message\",(function handler(e){if(t.signal&&t.signal.aborted)o.terminate();else if(void 0===e.data.progress){if(e.data.error)return i(new Error(e.data.error)),void o.terminate();r(e.data.file),o.terminate()}else t.onProgress(e.data.progress)})),o.addEventListener(\"error\",i),t.signal&&t.signal.addEventListener(\"abort\",(()=>{i(t.signal.reason),o.terminate()})),o.postMessage({file:e,imageCompressionLibUrl:t.libURL,options:{...t,onProgress:void 0,signal:void 0}})}))}function imageCompression(e,t){return new Promise((function(r,i){let o,a,s,f,l,c;if(o={...t},s=0,({onProgress:f}=o),o.maxSizeMB=o.maxSizeMB||Number.POSITIVE_INFINITY,l=\"boolean\"!=typeof o.useWebWorker||o.useWebWorker,delete o.useWebWorker,o.onProgress=e=>{s=e,\"function\"==typeof f&&f(s)},!(e instanceof Blob||e instanceof CustomFile))return i(new Error(\"The file given is not an instance of Blob or File\"));if(!/^image/.test(e.type))return i(new Error(\"The file given is not an image\"));if(c=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!l||\"function\"!=typeof Worker||c)return compress(e,o).then(function(e){try{return a=e,$If_4.call(this)}catch(e){return i(e)}}.bind(this),i);var u=function(){try{return $If_4.call(this)}catch(e){return i(e)}}.bind(this),$Try_1_Catch=function(t){try{return compress(e,o).then((function(e){try{return a=e,u()}catch(e){return i(e)}}),i)}catch(e){return i(e)}};try{return o.libURL=o.libURL||\"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js\",compressOnWebWorker(e,o).then((function(e){try{return a=e,u()}catch(e){return $Try_1_Catch()}}),$Try_1_Catch)}catch(e){$Try_1_Catch()}function $If_4(){try{a.name=e.name,a.lastModified=e.lastModified}catch(e){}try{o.preserveExif&&\"image/jpeg\"===e.type&&(!o.fileType||o.fileType&&o.fileType===e.type)&&(a=copyExifWithoutOrientation(e,a))}catch(e){}return r(a)}}))}imageCompression.getDataUrlFromFile=getDataUrlFromFile,imageCompression.getFilefromDataUrl=getFilefromDataUrl,imageCompression.loadImage=loadImage,imageCompression.drawImageInCanvas=drawImageInCanvas,imageCompression.drawFileInCanvas=drawFileInCanvas,imageCompression.canvasToFile=canvasToFile,imageCompression.getExifOrientation=getExifOrientation,imageCompression.handleMaxWidthOrHeight=handleMaxWidthOrHeight,imageCompression.followExifOrientation=followExifOrientation,imageCompression.cleanupCanvasMemory=cleanupCanvasMemory,imageCompression.isAutoOrientationInBrowser=isAutoOrientationInBrowser,imageCompression.approximateBelowMaximumCanvasSizeOfBrowser=approximateBelowMaximumCanvasSizeOfBrowser,imageCompression.copyExifWithoutOrientation=copyExifWithoutOrientation,imageCompression.getBrowserName=getBrowserName,imageCompression.version=\"2.0.2\";export{imageCompression as default};\n//# sourceMappingURL=browser-image-compression.mjs.map\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n  }\n  out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match pattern \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  if (length === 0) return -1;\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar VideoTrack = require('./videotrack');\nvar isUserMediaTrack = require('../../util').isUserMediaTrack;\nvar LocalMediaVideoTrack = mixinLocalMediaTrack(VideoTrack);\n/**\n * A {@link LocalVideoTrack} is a {@link VideoTrack} representing video that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalVideoTrack#enable} and\n * {@link LocalVideoTrack#disable} or stopped completely with\n * {@link LocalVideoTrack#stop}.\n * @extends VideoTrack\n * @property {Track.ID} id - The {@link LocalVideoTrack}'s ID\n * @property {boolean} isMuted - Whether or not the video source has stopped sending frames to the\n *   {@link LocalVideoTrack}; This can happen when the camera is taken over by another application,\n *   mainly on mobile devices; When this property toggles, then <code>muted</code> and <code>unmuted</code>\n *   events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalVideoTrack} is\n *   stopped\n * @emits LocalVideoTrack#disabled\n * @emits LocalVideoTrack#enabled\n * @emits LocalVideoTrack#muted\n * @emits LocalVideoTrack#started\n * @emits LocalVideoTrack#stopped\n * @emits LocalVideoTrack#unmuted\n */\nvar LocalVideoTrack = /** @class */ (function (_super) {\n    __extends(LocalVideoTrack, _super);\n    /**\n     * Construct a {@link LocalVideoTrack} from a MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n     * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n     */\n    function LocalVideoTrack(mediaStreamTrack, options) {\n        var _this = this;\n        options = Object.assign({\n            workaroundSilentLocalVideo: isIOS()\n                && isUserMediaTrack(mediaStreamTrack)\n                && typeof document !== 'undefined'\n                && typeof document.createElement === 'function'\n        }, options);\n        _this = _super.call(this, mediaStreamTrack, options) || this;\n        Object.defineProperties(_this, {\n            _workaroundSilentLocalVideo: {\n                value: options.workaroundSilentLocalVideo\n                    ? workaroundSilentLocalVideo\n                    : null\n            },\n            _workaroundSilentLocalVideoCleanup: {\n                value: null,\n                writable: true\n            }\n        });\n        // NOTE(mmalavalli): In iOS Safari, we work around a bug where local video\n        // MediaStreamTracks are silent (even though they are enabled, live and unmuted)\n        // after accepting/rejecting a phone call.\n        if (_this._workaroundSilentLocalVideo) {\n            _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n        }\n        return _this;\n    }\n    LocalVideoTrack.prototype.toString = function () {\n        return \"[LocalVideoTrack #\" + this._instanceId + \": \" + this.id + \"]\";\n    };\n    /**\n     * @private\n     */\n    LocalVideoTrack.prototype._checkIfCanCaptureFrames = function () {\n        return _super.prototype._checkIfCanCaptureFrames.call(this, this._trackSender.isPublishing);\n    };\n    /**\n     * @private\n     */\n    LocalVideoTrack.prototype._end = function () {\n        return _super.prototype._end.apply(this, arguments);\n    };\n    /**\n     * @private\n     */\n    LocalVideoTrack.prototype._setSenderMediaStreamTrack = function (useProcessed) {\n        var _this = this;\n        var unprocessedTrack = this.mediaStreamTrack;\n        var mediaStreamTrack = useProcessed ? this.processedTrack : unprocessedTrack;\n        return this._trackSender.setMediaStreamTrack(mediaStreamTrack)\n            .catch(function (error) { return _this._log.warn('setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender', { error: error, mediaStreamTrack: mediaStreamTrack }); })\n            .then(function () {\n            _this._unprocessedTrack = useProcessed ? unprocessedTrack : null;\n        });\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     * localVideoTrack.addProcessor(new GrayScaleProcessor(100));\n     */\n    LocalVideoTrack.prototype.addProcessor = function () {\n        this._log.debug('Adding VideoProcessor to the LocalVideoTrack');\n        var result = _super.prototype.addProcessor.apply(this, arguments);\n        if (!this.processedTrack) {\n            return this._log.warn('Unable to add a VideoProcessor to the LocalVideoTrack');\n        }\n        this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n        this._setSenderMediaStreamTrack(true);\n        return result;\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     * const grayScaleProcessor = new GrayScaleProcessor(100);\n     * localVideoTrack.addProcessor(grayScaleProcessor);\n     *\n     * document.getElementById('remove-button').onclick = () => localVideoTrack.removeProcessor(grayScaleProcessor);\n     */\n    LocalVideoTrack.prototype.removeProcessor = function () {\n        var _this = this;\n        this._log.debug('Removing VideoProcessor from the LocalVideoTrack');\n        var result = _super.prototype.removeProcessor.apply(this, arguments);\n        this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the original MediaStreamTrack');\n        this._setSenderMediaStreamTrack()\n            .then(function () { return _this._updateElementsMediaStreamTrack(); });\n        return result;\n    };\n    /**\n     * Disable the {@link LocalVideoTrack}. This is equivalent to pausing a video source.\n     * If a {@link VideoProcessor} is added, then <code>processedTrack</code> is also disabled.\n     * @returns {this}\n     * @fires VideoTrack#disabled\n     */\n    LocalVideoTrack.prototype.disable = function () {\n        var result = _super.prototype.disable.apply(this, arguments);\n        if (this.processedTrack) {\n            this.processedTrack.enabled = false;\n        }\n        return result;\n    };\n    /**\n     * Enable the {@link LocalVideoTrack}. This is equivalent to unpausing the video source.\n     * If a {@link VideoProcessor} is added, then <code>processedTrack</code> is also enabled.\n     * @returns {this}\n     * @fires VideoTrack#enabled\n    */ /**\n     * Enable or disable the {@link LocalVideoTrack}. This is equivalent to unpausing or pausing\n     * the video source respectively. If a {@link VideoProcessor} is added, then <code>processedTrack</code>\n     * is also enabled or disabled.\n     * @param {boolean} [enabled] - Specify false to disable the\n     *   {@link LocalVideoTrack}\n     * @returns {this}\n     * @fires VideoTrack#disabled\n     * @fires VideoTrack#enabled\n     */\n    LocalVideoTrack.prototype.enable = function (enabled) {\n        if (enabled === void 0) { enabled = true; }\n        var result = _super.prototype.enable.apply(this, arguments);\n        if (this.processedTrack) {\n            this.processedTrack.enabled = enabled;\n            if (enabled) {\n                this._captureFrames();\n                this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n                this._setSenderMediaStreamTrack(true);\n            }\n        }\n        return result;\n    };\n    /**\n     * Restart the {@link LocalVideoTrack}. This stops the existing MediaStreamTrack\n     * and creates a new MediaStreamTrack. If the {@link LocalVideoTrack} is being published\n     * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n     * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n     * the <code>mediaStreamTrack</code> property. If you want to listen to events on\n     * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n     * the {@link LocalVideoTrack}'s ID is no longer guaranteed to be the same as the\n     * underlying MediaStreamTrack's ID.\n     * @param {MediaTrackConstraints} [constraints] - The optional <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n     *   for restarting the {@link LocalVideoTrack}; If not specified, then the current MediaTrackConstraints\n     *   will be used; If <code>{}</code> (empty object) is specified, then the default MediaTrackConstraints\n     *   will be used\n     * @returns {Promise<void>} Rejects with a TypeError if the {@link LocalVideoTrack} was not created\n     *   using an one of <code>createLocalVideoTrack</code>, <code>createLocalTracks</code> or <code>connect</code>;\n     *   Also rejects with the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Exceptions\" target=\"_blank\">DOMException</a>\n     *   raised by <code>getUserMedia</code> when it fails\n     * @fires LocalVideoTrack#stopped\n     * @fires LocalVideoTrack#started\n     * @example\n     * const { connect, createLocalVideoTrack } = require('twilio-video');\n     *\n     * // Create a LocalVideoTrack that captures video from the front-facing camera.\n     * createLocalVideoTrack({ facingMode: 'user' }).then(function(localVideoTrack) {\n     *   return connect('token', {\n     *     name: 'my-cool-room',\n     *     tracks: [localVideoTrack]\n     *   });\n     * }).then(function(room) {\n     *   // Restart the LocalVideoTrack to capture video from the back-facing camera.\n     *   const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     *   return localVideoTrack.restart({ facingMode: 'environment' });\n     * });\n     */\n    LocalVideoTrack.prototype.restart = function () {\n        var _this = this;\n        if (this._workaroundSilentLocalVideoCleanup) {\n            this._workaroundSilentLocalVideoCleanup();\n            this._workaroundSilentLocalVideoCleanup = null;\n        }\n        var promise = _super.prototype.restart.apply(this, arguments);\n        if (this.processor) {\n            promise.then(function () {\n                _this._restartProcessor();\n            });\n        }\n        if (this._workaroundSilentLocalVideo) {\n            promise.finally(function () {\n                _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n            });\n        }\n        return promise;\n    };\n    /**\n     * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n     * {@link LocalVideoTrack}, you should unpublish it after stopping.\n     * @returns {this}\n     * @fires LocalVideoTrack#stopped\n     */\n    LocalVideoTrack.prototype.stop = function () {\n        if (this._workaroundSilentLocalVideoCleanup) {\n            this._workaroundSilentLocalVideoCleanup();\n            this._workaroundSilentLocalVideoCleanup = null;\n        }\n        return _super.prototype.stop.apply(this, arguments);\n    };\n    return LocalVideoTrack;\n}(LocalMediaVideoTrack));\n/**\n * Work around a bug where local video MediaStreamTracks are silent (even though\n * they are enabled, live and unmuted) after accepting/rejecting a phone call.\n * @private\n * @param {LocalVideoTrack} localVideoTrack\n * @param {HTMLDocument} doc\n * @returns {function} Cleans up listeners attached by the workaround\n */\nfunction workaroundSilentLocalVideo(localVideoTrack, doc) {\n    var log = localVideoTrack._log;\n    var el = localVideoTrack._dummyEl, mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n    function onUnmute() {\n        if (!localVideoTrack.isEnabled) {\n            return;\n        }\n        log.info('Unmuted, checking silence');\n        // The dummy element is paused, so play it and then detect silence.\n        el.play().then(function () { return detectSilentVideo(el, doc); }).then(function (isSilent) {\n            if (!isSilent) {\n                log.info('Non-silent frames detected, so no need to restart');\n                return;\n            }\n            log.warn('Silence detected, restarting');\n            // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n            // without stopping it first, then a NotReadableError is raised. Hence,\n            // we stop the MediaStreamTrack here.\n            localVideoTrack._stop();\n            // Restart the LocalVideoTrack.\n            // eslint-disable-next-line consistent-return\n            return localVideoTrack._restart();\n        }).catch(function (error) {\n            log.warn('Failed to detect silence and restart:', error);\n        }).finally(function () {\n            // If silent frames were not detected, then pause the dummy element again,\n            // if there is no processed track.\n            el = localVideoTrack._dummyEl;\n            if (el && !el.paused && !localVideoTrack.processedTrack) {\n                el.pause();\n            }\n            // Reset the unmute handler.\n            mediaStreamTrack.removeEventListener('unmute', onUnmute);\n            mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n            mediaStreamTrack.addEventListener('unmute', onUnmute);\n        });\n    }\n    // Set the unmute handler.\n    mediaStreamTrack.addEventListener('unmute', onUnmute);\n    return function () {\n        mediaStreamTrack.removeEventListener('unmute', onUnmute);\n    };\n}\n/**\n * The {@link LocalVideoTrack} was disabled, i.e. the video source was paused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was\n *   disabled\n * @event LocalVideoTrack#disabled\n */\n/**\n * The {@link LocalVideoTrack} was enabled, i.e. the video source was unpaused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was enabled\n * @event LocalVideoTrack#enabled\n */\n/**\n * The {@link LocalVideoTrack} was muted because the video source stopped sending frames, most\n * likely due to another application taking said video source, especially on mobile devices.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was muted\n * @event LocalVideoTrack#muted\n */\n/**\n * The {@link LocalVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that started\n * @event LocalVideoTrack#started\n */\n/**\n * The {@link LocalVideoTrack} stopped, either because {@link LocalVideoTrack#stop}\n * or {@link LocalVideoTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that stopped\n * @event LocalVideoTrack#stopped\n */\n/**\n * The {@link LocalVideoTrack} was unmuted because the video source resumed sending frames,\n * most likely due to the application that took over the said video source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalVideoTrack#restart} is called on a muted {@link LocalVideoTrack} with a\n * new video source.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was unmuted\n * @event LocalVideoTrack#unmuted\n */\nmodule.exports = LocalVideoTrack;\n//# sourceMappingURL=localvideotrack.js.map","var error = require('./utils/error');\nvar utils = require('./utils/common');\n\nexports.MATCH = function(lookupValue, lookupArray, matchType) {\n  if (!lookupValue && !lookupArray) {\n    return error.na;\n  }\n\n  if (arguments.length === 2) {\n    matchType = 1;\n  }\n  if (!(lookupArray instanceof Array)) {\n    return error.na;\n  }\n\n  if (matchType !== -1 && matchType !== 0 && matchType !== 1) {\n    return error.na;\n  }\n  var index;\n  var indexValue;\n  for (var idx = 0; idx < lookupArray.length; idx++) {\n    if (matchType === 1) {\n      if (lookupArray[idx] === lookupValue) {\n        return idx + 1;\n      } else if (lookupArray[idx] < lookupValue) {\n        if (!indexValue) {\n          index = idx + 1;\n          indexValue = lookupArray[idx];\n        } else if (lookupArray[idx] > indexValue) {\n          index = idx + 1;\n          indexValue = lookupArray[idx];\n        }\n      }\n    } else if (matchType === 0) {\n      if (typeof lookupValue === 'string') {\n        lookupValue = lookupValue.replace(/\\?/g, '.');\n        if (lookupArray[idx].toLowerCase().match(lookupValue.toLowerCase())) {\n          return idx + 1;\n        }\n      } else {\n        if (lookupArray[idx] === lookupValue) {\n          return idx + 1;\n        }\n      }\n    } else if (matchType === -1) {\n      if (lookupArray[idx] === lookupValue) {\n        return idx + 1;\n      } else if (lookupArray[idx] > lookupValue) {\n        if (!indexValue) {\n          index = idx + 1;\n          indexValue = lookupArray[idx];\n        } else if (lookupArray[idx] < indexValue) {\n          index = idx + 1;\n          indexValue = lookupArray[idx];\n        }\n      }\n    }\n  }\n\n  return index ? index : error.na;\n};\n\nexports.VLOOKUP = function (needle, table, index, rangeLookup) {\n  if (!needle || !table || !index) {\n    return error.na;\n  }\n\n  rangeLookup = rangeLookup || false;\n  for (var i = 0; i < table.length; i++) {\n    var row = table[i];\n    if ((!rangeLookup && row[0] === needle) ||\n      ((row[0] === needle) ||\n        (rangeLookup && typeof row[0] === \"string\" && row[0].toLowerCase().indexOf(needle.toLowerCase()) !== -1))) {\n      return (index < (row.length + 1) ? row[index - 1] : error.ref);\n    }\n  }\n\n  return error.na;\n};\n\nexports.HLOOKUP = function (needle, table, index, rangeLookup) {\n  if (!needle || !table || !index) {\n    return error.na;\n  }\n\n  rangeLookup = rangeLookup || false;\n\n  var transposedTable = utils.transpose(table);\n\n  for (var i = 0; i < transposedTable.length; i++) {\n    var row = transposedTable[i];\n    if ((!rangeLookup && row[0] === needle) ||\n      ((row[0] === needle) ||\n        (rangeLookup && typeof row[0] === \"string\" && row[0].toLowerCase().indexOf(needle.toLowerCase()) !== -1))) {\n      return (index < (row.length + 1) ? row[index - 1] : error.ref);\n    }\n  }\n\n  return error.na;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var defaultOperator = '=';\nvar validSymbols = ['>', '>=', '<', '<=', '=', '<>'];\nvar TOKEN_TYPE_OPERATOR = 'operator';\nvar TOKEN_TYPE_LITERAL = 'literal';\nvar SUPPORTED_TOKENS = [TOKEN_TYPE_OPERATOR, TOKEN_TYPE_LITERAL];\n\nexports.TOKEN_TYPE_OPERATOR = TOKEN_TYPE_OPERATOR;\nexports.TOKEN_TYPE_LITERAL = TOKEN_TYPE_LITERAL;\n\n/**\n * Create token which describe passed symbol/value.\n *\n * @param {String} value Value/Symbol to describe.\n * @param {String} type Type of the token 'operator' or 'literal'.\n * @return {Object}\n */\nfunction createToken(value, type) {\n  if (SUPPORTED_TOKENS.indexOf(type) === -1) {\n    throw new Error('Unsupported token type: ' + type);\n  }\n\n  return {\n    value: value,\n    type: type,\n  };\n}\n\n/**\n * Tries to cast numeric values to their type passed as a string.\n *\n * @param {*} value\n * @return {*}\n */\nfunction castValueToCorrectType(value) {\n  if (typeof value !== 'string') {\n    return value;\n  }\n\n  if (/^\\d+(\\.\\d+)?$/.test(value)) {\n    value = value.indexOf('.') === -1 ? parseInt(value, 10) : parseFloat(value);\n  }\n\n  return value;\n}\n\n/**\n * Generate stream of tokens from passed expression.\n *\n * @param {String} expression\n * @return {String[]}\n */\nfunction tokenizeExpression(expression) {\n  var expressionLength = expression.length;\n  var tokens = [];\n  var cursorIndex = 0;\n  var processedValue = '';\n  var processedSymbol = '';\n\n  while (cursorIndex < expressionLength) {\n    var char = expression.charAt(cursorIndex);\n\n    switch (char) {\n      case '>':\n      case '<':\n      case '=':\n        processedSymbol = processedSymbol + char;\n\n        if (processedValue.length > 0) {\n          tokens.push(processedValue);\n          processedValue = '';\n        }\n      break;\n      default:\n        if (processedSymbol.length > 0) {\n          tokens.push(processedSymbol);\n          processedSymbol = '';\n        }\n\n        processedValue = processedValue + char;\n      break;\n    }\n    cursorIndex++;\n  }\n\n  if (processedValue.length > 0) {\n    tokens.push(processedValue);\n  }\n  if (processedSymbol.length > 0) {\n    tokens.push(processedSymbol);\n  }\n\n  return tokens;\n};\n\n/**\n * Analyze and convert tokens to an object which describes their meaning.\n *\n * @param {String[]} tokens\n * @return {Object[]}\n */\nfunction analyzeTokens(tokens) {\n  var literalValue = '';\n  var analyzedTokens = [];\n\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (i === 0 && validSymbols.indexOf(token) >= 0) {\n      analyzedTokens.push(createToken(token, TOKEN_TYPE_OPERATOR));\n    } else {\n      literalValue += token;\n    }\n  }\n\n  if (literalValue.length > 0) {\n    analyzedTokens.push(createToken(castValueToCorrectType(literalValue), TOKEN_TYPE_LITERAL));\n  }\n\n  if (analyzedTokens.length > 0 && analyzedTokens[0].type !== TOKEN_TYPE_OPERATOR) {\n    analyzedTokens.unshift(createToken(defaultOperator, TOKEN_TYPE_OPERATOR));\n  }\n\n  return analyzedTokens;\n};\n\n/**\n * Compute/Evaluate an expression passed as an array of tokens.\n *\n * @param {Object[]} tokens\n * @return {Boolean}\n */\nfunction computeExpression(tokens) {\n  var values = [];\n  var operator;\n\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    switch (token.type) {\n      case TOKEN_TYPE_OPERATOR:\n        operator = token.value;\n      break;\n      case TOKEN_TYPE_LITERAL:\n        values.push(token.value);\n      break;\n    }\n  }\n\n  return evaluate(values, operator);\n};\n\n/**\n * Evaluate values based on passed math operator.\n *\n * @param {*} values\n * @param {String} operator\n * @return {Boolean}\n */\nfunction evaluate(values, operator) {\n  var result = false;\n\n  switch (operator) {\n    case '>':\n      result = values[0] > values[1];\n      break;\n    case '>=':\n      result = values[0] >= values[1];\n      break;\n    case '<':\n      result = values[0] < values[1];\n      break;\n    case '<=':\n      result = values[0] <= values[1];\n      break;\n    case '=':\n      result = values[0] == values[1];\n      break;\n    case '<>':\n      result = values[0] != values[1];\n      break;\n  }\n\n  return result;\n}\n\nexports.parse = function(expression) {\n  return analyzeTokens(tokenizeExpression(expression));\n};\nexports.createToken = createToken;\nexports.compute = computeExpression;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildBackgroundImageStage = void 0;\nvar webglHelper_1 = require(\"../helpers/webglHelper\");\nfunction buildBackgroundImageStage(gl, positionBuffer, texCoordBuffer, personMaskTexture, backgroundImage, canvas) {\n    var vertexShaderSource = (0, webglHelper_1.glsl)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"#version 300 es\\n\\n    uniform vec2 u_backgroundScale;\\n    uniform vec2 u_backgroundOffset;\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n    out vec2 v_backgroundCoord;\\n\\n    void main() {\\n      // Flipping Y is required when rendering to canvas\\n      gl_Position = vec4(a_position * vec2(1.0, -1.0), 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n      v_backgroundCoord = a_texCoord * u_backgroundScale + u_backgroundOffset;\\n    }\\n  \"], [\"#version 300 es\\n\\n    uniform vec2 u_backgroundScale;\\n    uniform vec2 u_backgroundOffset;\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n    out vec2 v_backgroundCoord;\\n\\n    void main() {\\n      // Flipping Y is required when rendering to canvas\\n      gl_Position = vec4(a_position * vec2(1.0, -1.0), 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n      v_backgroundCoord = a_texCoord * u_backgroundScale + u_backgroundOffset;\\n    }\\n  \"])));\n    var fragmentShaderSource = (0, webglHelper_1.glsl)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform sampler2D u_background;\\n    uniform vec2 u_coverage;\\n    uniform float u_lightWrapping;\\n    uniform float u_blendMode;\\n\\n    in vec2 v_texCoord;\\n    in vec2 v_backgroundCoord;\\n\\n    out vec4 outColor;\\n\\n    vec3 screen(vec3 a, vec3 b) {\\n      return 1.0 - (1.0 - a) * (1.0 - b);\\n    }\\n\\n    vec3 linearDodge(vec3 a, vec3 b) {\\n      return a + b;\\n    }\\n\\n    void main() {\\n      vec3 frameColor = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 backgroundColor = texture(u_background, v_backgroundCoord).rgb;\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n      float lightWrapMask = 1.0 - max(0.0, personMask - u_coverage.y) / (1.0 - u_coverage.y);\\n      vec3 lightWrap = u_lightWrapping * lightWrapMask * backgroundColor;\\n      frameColor = u_blendMode * linearDodge(frameColor, lightWrap) +\\n        (1.0 - u_blendMode) * screen(frameColor, lightWrap);\\n      personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);\\n      outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);\\n    }\\n  \"], [\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform sampler2D u_background;\\n    uniform vec2 u_coverage;\\n    uniform float u_lightWrapping;\\n    uniform float u_blendMode;\\n\\n    in vec2 v_texCoord;\\n    in vec2 v_backgroundCoord;\\n\\n    out vec4 outColor;\\n\\n    vec3 screen(vec3 a, vec3 b) {\\n      return 1.0 - (1.0 - a) * (1.0 - b);\\n    }\\n\\n    vec3 linearDodge(vec3 a, vec3 b) {\\n      return a + b;\\n    }\\n\\n    void main() {\\n      vec3 frameColor = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 backgroundColor = texture(u_background, v_backgroundCoord).rgb;\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n      float lightWrapMask = 1.0 - max(0.0, personMask - u_coverage.y) / (1.0 - u_coverage.y);\\n      vec3 lightWrap = u_lightWrapping * lightWrapMask * backgroundColor;\\n      frameColor = u_blendMode * linearDodge(frameColor, lightWrap) +\\n        (1.0 - u_blendMode) * screen(frameColor, lightWrap);\\n      personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);\\n      outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);\\n    }\\n  \"])));\n    var outputWidth = canvas.width, outputHeight = canvas.height;\n    var outputRatio = outputWidth / outputHeight;\n    var vertexShader = (0, webglHelper_1.compileShader)(gl, gl.VERTEX_SHADER, vertexShaderSource);\n    var fragmentShader = (0, webglHelper_1.compileShader)(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n    var program = (0, webglHelper_1.createPiplelineStageProgram)(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer);\n    var backgroundScaleLocation = gl.getUniformLocation(program, 'u_backgroundScale');\n    var backgroundOffsetLocation = gl.getUniformLocation(program, 'u_backgroundOffset');\n    var inputFrameLocation = gl.getUniformLocation(program, 'u_inputFrame');\n    var personMaskLocation = gl.getUniformLocation(program, 'u_personMask');\n    var backgroundLocation = gl.getUniformLocation(program, 'u_background');\n    var coverageLocation = gl.getUniformLocation(program, 'u_coverage');\n    var lightWrappingLocation = gl.getUniformLocation(program, 'u_lightWrapping');\n    var blendModeLocation = gl.getUniformLocation(program, 'u_blendMode');\n    gl.useProgram(program);\n    gl.uniform2f(backgroundScaleLocation, 1, 1);\n    gl.uniform2f(backgroundOffsetLocation, 0, 0);\n    gl.uniform1i(inputFrameLocation, 0);\n    gl.uniform1i(personMaskLocation, 1);\n    gl.uniform2f(coverageLocation, 0, 1);\n    gl.uniform1f(lightWrappingLocation, 0);\n    gl.uniform1f(blendModeLocation, 0);\n    var backgroundTexture = null;\n    // TODO Find a better to handle background being loaded\n    if (backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.complete) {\n        updateBackgroundImage(backgroundImage);\n    }\n    else if (backgroundImage) {\n        backgroundImage.onload = function () {\n            updateBackgroundImage(backgroundImage);\n        };\n    }\n    function render() {\n        gl.viewport(0, 0, outputWidth, outputHeight);\n        gl.useProgram(program);\n        gl.activeTexture(gl.TEXTURE1);\n        gl.bindTexture(gl.TEXTURE_2D, personMaskTexture);\n        if (backgroundTexture !== null) {\n            gl.activeTexture(gl.TEXTURE2);\n            gl.bindTexture(gl.TEXTURE_2D, backgroundTexture);\n            // TODO Handle correctly the background not loaded yet\n            gl.uniform1i(backgroundLocation, 2);\n        }\n        gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n        gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n    }\n    function updateBackgroundImage(backgroundImage) {\n        backgroundTexture = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, backgroundImage.naturalWidth, backgroundImage.naturalHeight, gl.LINEAR, gl.LINEAR);\n        gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, backgroundImage.naturalWidth, backgroundImage.naturalHeight, gl.RGBA, gl.UNSIGNED_BYTE, backgroundImage);\n        var xOffset = 0;\n        var yOffset = 0;\n        var backgroundWidth = backgroundImage.naturalWidth;\n        var backgroundHeight = backgroundImage.naturalHeight;\n        var backgroundRatio = backgroundWidth / backgroundHeight;\n        if (backgroundRatio < outputRatio) {\n            backgroundHeight = backgroundWidth / outputRatio;\n            yOffset = (backgroundImage.naturalHeight - backgroundHeight) / 2;\n        }\n        else {\n            backgroundWidth = backgroundHeight * outputRatio;\n            xOffset = (backgroundImage.naturalWidth - backgroundWidth) / 2;\n        }\n        var xScale = backgroundWidth / backgroundImage.naturalWidth;\n        var yScale = backgroundHeight / backgroundImage.naturalHeight;\n        xOffset /= backgroundImage.naturalWidth;\n        yOffset /= backgroundImage.naturalHeight;\n        gl.uniform2f(backgroundScaleLocation, xScale, yScale);\n        gl.uniform2f(backgroundOffsetLocation, xOffset, yOffset);\n    }\n    function updateCoverage(coverage) {\n        gl.useProgram(program);\n        gl.uniform2f(coverageLocation, coverage[0], coverage[1]);\n    }\n    function updateLightWrapping(lightWrapping) {\n        gl.useProgram(program);\n        gl.uniform1f(lightWrappingLocation, lightWrapping);\n    }\n    function updateBlendMode(blendMode) {\n        gl.useProgram(program);\n        gl.uniform1f(blendModeLocation, blendMode === 'screen' ? 0 : 1);\n    }\n    function cleanUp() {\n        gl.deleteTexture(backgroundTexture);\n        gl.deleteProgram(program);\n        gl.deleteShader(fragmentShader);\n        gl.deleteShader(vertexShader);\n    }\n    return {\n        render: render,\n        updateCoverage: updateCoverage,\n        updateLightWrapping: updateLightWrapping,\n        updateBlendMode: updateBlendMode,\n        cleanUp: cleanUp,\n    };\n}\nexports.buildBackgroundImageStage = buildBackgroundImageStage;\nvar templateObject_1, templateObject_2;\n//# sourceMappingURL=backgroundImageStage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nvar common_1 = require(\"../common\");\nvar interface_1 = require(\"./interface\");\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @hidden\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n *   and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nfunction matchState(state, criterion) {\n    var toMatch = common_1.isString(criterion) ? [criterion] : criterion;\n    function matchGlobs(_state) {\n        var globStrings = toMatch;\n        for (var i = 0; i < globStrings.length; i++) {\n            var glob = new common_1.Glob(globStrings[i]);\n            if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    var matchFn = (common_1.isFunction(toMatch) ? toMatch : matchGlobs);\n    return !!matchFn(state);\n}\nexports.matchState = matchState;\n/**\n * @internalapi\n * The registration data for a registered transition hook\n */\nvar RegisteredHook = /** @class */ (function () {\n    function RegisteredHook(tranSvc, eventType, callback, matchCriteria, removeHookFromRegistry, options) {\n        if (options === void 0) { options = {}; }\n        this.tranSvc = tranSvc;\n        this.eventType = eventType;\n        this.callback = callback;\n        this.matchCriteria = matchCriteria;\n        this.removeHookFromRegistry = removeHookFromRegistry;\n        this.invokeCount = 0;\n        this._deregistered = false;\n        this.priority = options.priority || 0;\n        this.bind = options.bind || null;\n        this.invokeLimit = options.invokeLimit;\n    }\n    /**\n     * Gets the matching [[PathNode]]s\n     *\n     * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n     * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n     *\n     * Returning `null` is significant to distinguish between the default\n     * \"match-all criterion value\" of `true` compared to a `() => true` function,\n     * when the nodes is an empty array.\n     *\n     * This is useful to allow a transition match criteria of `entering: true`\n     * to still match a transition, even when `entering === []`.  Contrast that\n     * with `entering: (state) => true` which only matches when a state is actually\n     * being entered.\n     */\n    RegisteredHook.prototype._matchingNodes = function (nodes, criterion) {\n        if (criterion === true)\n            return nodes;\n        var matching = nodes.filter(function (node) { return matchState(node.state, criterion); });\n        return matching.length ? matching : null;\n    };\n    /**\n     * Gets the default match criteria (all `true`)\n     *\n     * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n     *\n     * ```js\n     * {\n     *   to: true,\n     *   from: true,\n     *   entering: true,\n     *   exiting: true,\n     *   retained: true,\n     * }\n     */\n    RegisteredHook.prototype._getDefaultMatchCriteria = function () {\n        return common_1.mapObj(this.tranSvc._pluginapi._getPathTypes(), function () { return true; });\n    };\n    /**\n     * Gets matching nodes as [[IMatchingNodes]]\n     *\n     * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n     *\n     * ```js\n     * let matches: IMatchingNodes = {\n     *   to:       _matchingNodes([tail(treeChanges.to)],   mc.to),\n     *   from:     _matchingNodes([tail(treeChanges.from)], mc.from),\n     *   exiting:  _matchingNodes(treeChanges.exiting,      mc.exiting),\n     *   retained: _matchingNodes(treeChanges.retained,     mc.retained),\n     *   entering: _matchingNodes(treeChanges.entering,     mc.entering),\n     * };\n     * ```\n     */\n    RegisteredHook.prototype._getMatchingNodes = function (treeChanges) {\n        var _this = this;\n        var criteria = common_1.extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n        var paths = common_1.values(this.tranSvc._pluginapi._getPathTypes());\n        return paths.reduce(function (mn, pathtype) {\n            // STATE scope criteria matches against every node in the path.\n            // TRANSITION scope criteria matches against only the last node in the path\n            var isStateHook = pathtype.scope === interface_1.TransitionHookScope.STATE;\n            var path = treeChanges[pathtype.name] || [];\n            var nodes = isStateHook ? path : [common_1.tail(path)];\n            mn[pathtype.name] = _this._matchingNodes(nodes, criteria[pathtype.name]);\n            return mn;\n        }, {});\n    };\n    /**\n     * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n     *\n     * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n     * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n     */\n    RegisteredHook.prototype.matches = function (treeChanges) {\n        var matches = this._getMatchingNodes(treeChanges);\n        // Check if all the criteria matched the TreeChanges object\n        var allMatched = common_1.values(matches).every(common_1.identity);\n        return allMatched ? matches : null;\n    };\n    RegisteredHook.prototype.deregister = function () {\n        this.removeHookFromRegistry(this);\n        this._deregistered = true;\n    };\n    return RegisteredHook;\n}());\nexports.RegisteredHook = RegisteredHook;\n/** @hidden Return a registration function of the requested type. */\nfunction makeEvent(registry, transitionService, eventType) {\n    // Create the object which holds the registered transition hooks.\n    var _registeredHooks = registry._registeredHooks = (registry._registeredHooks || {});\n    var hooks = _registeredHooks[eventType.name] = [];\n    var removeHookFn = common_1.removeFrom(hooks);\n    // Create hook registration function on the IHookRegistry for the event\n    registry[eventType.name] = hookRegistrationFn;\n    function hookRegistrationFn(matchObject, callback, options) {\n        if (options === void 0) { options = {}; }\n        var registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n        hooks.push(registeredHook);\n        return registeredHook.deregister.bind(registeredHook);\n    }\n    return hookRegistrationFn;\n}\nexports.makeEvent = makeEvent;\n//# sourceMappingURL=hookRegistry.js.map","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","import React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n  var index = 0;\n  return React.Children.map(children, function (child) {\n    return /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child;\n  });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n  var index = 0;\n  React.Children.forEach(children, function (child) {\n    if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n  });\n}\n\nexport { map, forEach };","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\n\n// `Array.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-array.prototype.toreversed\n$({ target: 'Array', proto: true }, {\n  toReversed: function toReversed() {\n    return arrayToReversed(toIndexedObject(this), $Array);\n  }\n});\n\naddToUnscopables('toReversed');\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.1.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = $String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return nativeToFixed(0.00008, 3) !== '0.000' ||\n    nativeToFixed(0.9, 0) !== '1' ||\n    nativeToFixed(1.255, 2) !== '1.25' ||\n    nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw new $RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number !== number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return $String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n","import PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n  var _ref = useContext(DropdownContext) || {},\n      _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$toggle = _ref.toggle,\n      toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n      setToggle = _ref.setToggle;\n\n  return [{\n    ref: setToggle || noop,\n    'aria-haspopup': true,\n    'aria-expanded': !!show\n  }, {\n    show: show,\n    toggle: toggle\n  }];\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n  var children = _ref2.children;\n\n  var _useDropdownToggle = useDropdownToggle(),\n      props = _useDropdownToggle[0],\n      _useDropdownToggle$ = _useDropdownToggle[1],\n      show = _useDropdownToggle$.show,\n      toggle = _useDropdownToggle$.toggle;\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    show: show,\n    toggle: toggle,\n    props: props\n  }));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isPlainObject;\n// source taken from https://github.com/rackt/redux/blob/master/src/utils/isPlainObject.js\nvar fnToString = function fnToString(fn) {\n  return Function.prototype.toString.call(fn);\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (!obj || (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {\n    return false;\n  }\n\n  var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype;\n\n  if (proto === null) {\n    return true;\n  }\n\n  var constructor = proto.constructor;\n\n  return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === fnToString(Object);\n}","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackTransceiver = require('../transceiver');\n/**\n * A {@link DataTrackTransceiver} represents either one or more local\n * RTCDataChannels or a single remote RTCDataChannel. It can be used to send or\n * receive data.\n * @extends TrackTransceiver\n * @property {string} id\n * @property {string} kind - \"data\"\n * @property {?number} maxPacketLifeTime\n * @property {?number} maxRetransmits\n * @property {boolean} ordered\n */\nvar DataTrackTransceiver = /** @class */ (function (_super) {\n    __extends(DataTrackTransceiver, _super);\n    /**\n     * Construct a {@link DataTrackTransceiver}.\n     * @param {string} id\n     * @param {?number} maxPacketLifeTime\n     * @param {?number} maxRetransmits\n     * @param {boolean} ordered\n     */\n    function DataTrackTransceiver(id, maxPacketLifeTime, maxRetransmits, ordered) {\n        var _this = _super.call(this, id, 'data') || this;\n        Object.defineProperties(_this, {\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: ordered\n            }\n        });\n        return _this;\n    }\n    return DataTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = DataTrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!$isData) {\n    out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to constant\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Track = require('./');\nvar DefaultDataTrackSender = require('../../data/sender');\n/**\n * A {@link LocalDataTrack} is a {@link Track} representing data that your\n * {@link LocalParticipant} can publish to a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - The {@link LocalDataTrack}'s ID\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n *   limit (in milliseconds) during which the {@link LocalDataTrack} will send\n *   or re-send data if not acknowledged on the underlying RTCDataChannel(s).\n * @property {?number} maxRetransmits - If non-null, this represents the number\n *   of times the {@link LocalDataTrack} will resend data if not successfully\n *   delivered on the underlying RTCDataChannel(s).\n * @property {boolean} ordered - true if data on the {@link LocalDataTrack} is\n *   guaranteed to be sent in order.\n * @property {boolean} reliable - This is true if both\n *   <code>maxPacketLifeTime</code> and <code>maxRetransmits</code> are set to\n *   null. In other words, if this is true, there is no bound on packet lifetime\n *   or the number of times the {@link LocalDataTrack} will attempt to send\n *   data, ensuring \"reliable\" transmission.\n * @example\n * var Video = require('twilio-video');\n *\n * var localDataTrack = new Video.LocalDataTrack();\n * window.addEventListener('mousemove', function(event) {\n *   localDataTrack.send(JSON.stringify({\n *     x: e.clientX,\n *     y: e.clientY\n *   }));\n * });\n *\n * var token1 = getAccessToken();\n * Video.connect(token1, {\n *   name: 'my-cool-room',\n *   tracks: [localDataTrack]\n * });\n *\n * var token2 = getAccessToken();\n * Video.connect(token2, {\n *   name: 'my-cool-room',\n *   tracks: []\n * }).then(function(room) {\n *   room.on('trackSubscribed', function(track) {\n *     track.on('message', function(message) {\n *       console.log(JSON.parse(message)); // { x: <number>, y: <number> }\n *     });\n *   });\n * });\n */\nvar LocalDataTrack = /** @class */ (function (_super) {\n    __extends(LocalDataTrack, _super);\n    /**\n     * Construct a {@link LocalDataTrack}.\n     * @param {LocalDataTrackOptions} [options] - {@link LocalDataTrack} options\n     */\n    function LocalDataTrack(options) {\n        var _this = this;\n        options = Object.assign({\n            DataTrackSender: DefaultDataTrackSender,\n            maxPacketLifeTime: null,\n            maxRetransmits: null,\n            ordered: true\n        }, options);\n        var DataTrackSender = options.DataTrackSender;\n        var dataTrackSender = new DataTrackSender(options.maxPacketLifeTime, options.maxRetransmits, options.ordered);\n        _this = _super.call(this, dataTrackSender.id, 'data', options) || this;\n        Object.defineProperties(_this, {\n            _trackSender: {\n                value: dataTrackSender\n            },\n            id: {\n                enumerable: true,\n                value: dataTrackSender.id\n            },\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: options.maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: options.maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: options.ordered\n            },\n            reliable: {\n                enumerable: true,\n                value: options.maxPacketLifeTime === null\n                    && options.maxRetransmits === null\n            }\n        });\n        return _this;\n    }\n    /**\n     * Send a message over the {@link LocalDataTrack}.\n     * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n     * @returns {void}\n     */\n    LocalDataTrack.prototype.send = function (data) {\n        this._trackSender.send(data);\n    };\n    return LocalDataTrack;\n}(Track));\n/**\n * {@link LocalDataTrack} options\n * @typedef {LocalTrackOptions} LocalDataTrackOptions\n * @property {?number} [maxPacketLifeTime=null] - Set this to limit the time\n *   (in milliseconds) during which the LocalDataTrack will send or re-send data\n *   if not successfully delivered on the underlying RTCDataChannel(s). It is an\n *   error to specify both this and <code>maxRetransmits</code>.\n * @property {?number} [maxRetransmits=null] - Set this to limit the number of\n *   times the {@link LocalDataTrack} will send or re-send data if not\n *   acknowledged on the underlying RTCDataChannel(s). It is an error to specify\n *   both this and <code>maxPacketLifeTime</code>.\n * @property {boolean} [ordered=true] - Set this to false to allow data on the\n *   LocalDataTrack to be sent out-of-order.\n */\nmodule.exports = LocalDataTrack;\n//# sourceMappingURL=localdatatrack.js.map","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    globalThis.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: null\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n// `Promise` constructor\n// https://tc39.es/ecma262/#sec-promise-executor\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nPromiseWrapper = path.Promise;\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n  var _options$format, _options$representati;\n  requiredArgs(1, arguments);\n  var originalDate = toDate(date);\n  if (isNaN(originalDate.getTime())) {\n    throw new RangeError('Invalid time value');\n  }\n  var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n  var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n  if (format !== 'extended' && format !== 'basic') {\n    throw new RangeError(\"format must be 'extended' or 'basic'\");\n  }\n  if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n    throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n  }\n  var result = '';\n  var tzOffset = '';\n  var dateDelimiter = format === 'extended' ? '-' : '';\n  var timeDelimiter = format === 'extended' ? ':' : '';\n\n  // Representation is either 'date' or 'complete'\n  if (representation !== 'time') {\n    var day = addLeadingZeros(originalDate.getDate(), 2);\n    var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n    var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n    // yyyyMMdd or yyyy-MM-dd.\n    result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n  }\n\n  // Representation is either 'time' or 'complete'\n  if (representation !== 'date') {\n    // Add the timezone.\n    var offset = originalDate.getTimezoneOffset();\n    if (offset !== 0) {\n      var absoluteOffset = Math.abs(offset);\n      var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n      var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n      // If less than 0, the sign is +, because it is ahead of time.\n      var sign = offset < 0 ? '+' : '-';\n      tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n    } else {\n      tzOffset = 'Z';\n    }\n    var hour = addLeadingZeros(originalDate.getHours(), 2);\n    var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n    var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n    // If there's also date, separate it with time with 'T'\n    var separator = result === '' ? '' : 'T';\n\n    // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n    var time = [hour, minute, second].join(timeDelimiter);\n\n    // HHmmss or HH:mm:ss.\n    result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n  }\n  return result;\n}","var utils = require('./utils/common');\nvar error = require('./utils/error');\n\n//TODO\nexports.ASC = function() {\n  throw new Error('ASC is not implemented');\n};\n\n//TODO\nexports.BAHTTEXT = function() {\n  throw new Error('BAHTTEXT is not implemented');\n};\n\nexports.CHAR = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return String.fromCharCode(number);\n};\n\nexports.CLEAN = function(text) {\n  text = text || '';\n  var re = /[\\0-\\x1F]/g;\n  return text.replace(re, \"\");\n};\n\nexports.CODE = function(text) {\n  text = text || '';\n  var result = text.charCodeAt(0);\n\n  if (isNaN(result)) {\n    result = error.na;\n  }\n  return result;\n};\n\nexports.CONCATENATE = function() {\n  var args = utils.flatten(arguments);\n\n  var trueFound = 0;\n  while ((trueFound = args.indexOf(true)) > -1) {\n    args[trueFound] = 'TRUE';\n  }\n\n  var falseFound = 0;\n  while ((falseFound = args.indexOf(false)) > -1) {\n    args[falseFound] = 'FALSE';\n  }\n\n  return args.join('');\n};\n\n//TODO\nexports.DBCS = function() {\n  throw new Error('DBCS is not implemented');\n};\n\n//TODO\nexports.DOLLAR = function() {\n  throw new Error('DOLLAR is not implemented');\n};\n\nexports.EXACT = function(text1, text2) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n  return text1 === text2;\n};\n\nexports.FIND = function(find_text, within_text, position) {\n  if (arguments.length < 2) {\n    return error.na;\n  }\n  position = (position === undefined) ? 0 : position;\n  return within_text ? within_text.indexOf(find_text, position - 1) + 1 : null;\n};\n\n//TODO\nexports.FIXED = function() {\n  throw new Error('FIXED is not implemented');\n};\n\nexports.HTML2TEXT = function (value) {\n  var result = '';\n\n  if (value) {\n    if (value instanceof Array) {\n      value.forEach(function (line) {\n        if (result !== '') {\n          result += '\\n';\n        }\n        result += (line.replace(/<(?:.|\\n)*?>/gm, ''));\n      });\n    } else {\n      result = value.replace(/<(?:.|\\n)*?>/gm, '');\n    }\n  }\n\n  return result;\n};\n\nexports.LEFT = function(text, number) {\n  number = (number === undefined) ? 1 : number;\n  number = utils.parseNumber(number);\n  if (number instanceof Error || typeof text !== 'string') {\n    return error.value;\n  }\n  return text ? text.substring(0, number) : null;\n};\n\nexports.LEN = function(text) {\n  if (arguments.length === 0) {\n    return error.error;\n  }\n\n  if (typeof text === 'string') {\n    return text ? text.length : 0;\n  }\n\n  if (text.length) {\n    return text.length;\n  }\n\n  return error.value;\n};\n\nexports.LOWER = function(text) {\n  if (typeof text !== 'string') {\n    return error.value;\n  }\n  return text ? text.toLowerCase() : text;\n};\n\nexports.MID = function(text, start, number) {\n  start = utils.parseNumber(start);\n  number = utils.parseNumber(number);\n  if (utils.anyIsError(start, number) || typeof text !== 'string') {\n    return number;\n  }\n\n  var begin = start - 1;\n  var end = begin + number;\n\n  return text.substring(begin, end);\n};\n\n// TODO\nexports.NUMBERVALUE = function (text, decimal_separator, group_separator)  {\n  decimal_separator = (typeof decimal_separator === 'undefined') ? '.' : decimal_separator;\n  group_separator = (typeof group_separator === 'undefined') ? ',' : group_separator;\n  return Number(text.replace(decimal_separator, '.').replace(group_separator, ''));\n};\n\n// TODO\nexports.PRONETIC = function() {\n  throw new Error('PRONETIC is not implemented');\n};\n\nexports.PROPER = function(text) {\n  if (text === undefined || text.length === 0) {\n    return error.value;\n  }\n  if (text === true) {\n    text = 'TRUE';\n  }\n  if (text === false) {\n    text = 'FALSE';\n  }\n  if (isNaN(text) && typeof text === 'number') {\n    return error.value;\n  }\n  if (typeof text === 'number') {\n    text = '' + text;\n  }\n\n  return text.replace(/\\w\\S*/g, function(txt) {\n    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n  });\n};\n\nexports.REGEXEXTRACT = function (text, regular_expression) {\n  if (arguments.length < 2) {\n    return error.na;\n  }\n  var match = text.match(new RegExp(regular_expression));\n  return match ? (match[match.length > 1 ? match.length - 1 : 0]) : null;\n};\n\nexports.REGEXMATCH = function (text, regular_expression, full) {\n  if (arguments.length < 2) {\n    return error.na;\n  }\n  var match = text.match(new RegExp(regular_expression));\n  return full ? match : !!match;\n};\n\nexports.REGEXREPLACE = function (text, regular_expression, replacement) {\n  if (arguments.length < 3) {\n    return error.na;\n  }\n  return text.replace(new RegExp(regular_expression), replacement);\n};\n\nexports.REPLACE = function(text, position, length, new_text) {\n  position = utils.parseNumber(position);\n  length = utils.parseNumber(length);\n  if (utils.anyIsError(position, length) ||\n    typeof text !== 'string' ||\n    typeof new_text !== 'string') {\n    return error.value;\n  }\n  return text.substr(0, position - 1) + new_text + text.substr(position - 1 + length);\n};\n\nexports.REPT = function(text, number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return new Array(number + 1).join(text);\n};\n\nexports.RIGHT = function(text, number) {\n  number = (number === undefined) ? 1 : number;\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return text ? text.substring(text.length - number) : error.na;\n};\n\nexports.SEARCH = function(find_text, within_text, position) {\n  var foundAt;\n  if (typeof find_text !== 'string' || typeof within_text !== 'string') {\n    return error.value;\n  }\n  position = (position === undefined) ? 0 : position;\n  foundAt = within_text.toLowerCase().indexOf(find_text.toLowerCase(), position - 1)+1;\n  return (foundAt === 0)?error.value:foundAt;\n};\n\nexports.SPLIT = function (text, separator) {\n  return text.split(separator);\n};\n\nexports.SUBSTITUTE = function(text, old_text, new_text, occurrence) {\n  if (arguments.length < 2) {\n    return error.na;\n  }\n  if (!text || !old_text || !new_text) {\n    return text;\n  } else if (occurrence === undefined) {\n    return text.replace(new RegExp(old_text, 'g'), new_text);\n  } else {\n    var index = 0;\n    var i = 0;\n    while (text.indexOf(old_text, index) > 0) {\n      index = text.indexOf(old_text, index + 1);\n      i++;\n      if (i === occurrence) {\n        return text.substring(0, index) + new_text + text.substring(index + old_text.length);\n      }\n    }\n  }\n};\n\nexports.T = function(value) {\n  return (typeof value === \"string\") ? value : '';\n};\n\n// TODO incomplete implementation\nexports.TEXT = function() {\n  throw new Error('TEXT is not implemented');\n};\n\nexports.TRIM = function(text) {\n  if (typeof text !== 'string') {\n    return error.value;\n  }\n  return text.replace(/ +/g, ' ').trim();\n};\n\nexports.UNICHAR = exports.CHAR;\n\nexports.UNICODE = exports.CODE;\n\nexports.UPPER = function(text) {\n  if (typeof text !== 'string') {\n    return error.value;\n  }\n  return text.toUpperCase();\n};\n\n//TODO\nexports.VALUE = function() {\n  throw new Error('VALUE is not implemented');\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","'use strict';\n/**\n * @property {number} [availableSend] - bps (undefined in Firefox)\n * @property {number} recv - bps\n * @property {number} [rtt] - s (undefined in Firefox)\n * @property {number} send - bps\n */\nvar IceReport = /** @class */ (function () {\n    /**\n     * Construct an {@link IceReport}.\n     * @param {number} send - bps\n     * @param {number} recv - bps\n     * @param {number} [rtt] - s\n     * @param {number} [availableSend] - bps\n     */\n    function IceReport(send, recv, availableSend, rtt) {\n        Object.defineProperties(this, {\n            availableSend: {\n                enumerable: true,\n                value: availableSend\n            },\n            recv: {\n                enumerable: true,\n                value: recv\n            },\n            rtt: {\n                enumerable: true,\n                value: rtt\n            },\n            send: {\n                enumerable: true,\n                value: send\n            }\n        });\n    }\n    /**\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @returns {IceReport}\n     */\n    IceReport.of = function (olderStats, newerStats) {\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n        var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n        var send = secondsElapsed > 0\n            ? (deltaBytesSent / secondsElapsed) * 8\n            : 0;\n        var recv = secondsElapsed > 0\n            ? (deltaBytesReceived / secondsElapsed) * 8\n            : 0;\n        var availableSend = newerStats.availableOutgoingBitrate, rtt = newerStats.currentRoundTripTime;\n        return new IceReport(send, recv, availableSend, rtt);\n    };\n    return IceReport;\n}());\nmodule.exports = IceReport;\n//# sourceMappingURL=icereport.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n  findLast: function findLast(callbackfn /* , that = undefined */) {\n    return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLast');\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addYears(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, amount * 12);\n}","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort:\n            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n                '_'\n            ),\n        weekdays:\n            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n                '_'\n            ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","\nconst compare = require('json-schema-compare')\nconst forEach = require('lodash/forEach')\nconst {\n  allUniqueKeys,\n  deleteUndefinedProps,\n  has,\n  isSchema,\n  notUndefined,\n  uniqWith\n} = require('../common')\n\nfunction removeFalseSchemasFromArray(target) {\n  forEach(target, function(schema, index) {\n    if (schema === false) {\n      target.splice(index, 1)\n    }\n  })\n}\n\nfunction getItemSchemas(subSchemas, key) {\n  return subSchemas.map(function(sub) {\n    if (!sub) {\n      return undefined\n    }\n\n    if (Array.isArray(sub.items)) {\n      const schemaAtPos = sub.items[key]\n      if (isSchema(schemaAtPos)) {\n        return schemaAtPos\n      } else if (has(sub, 'additionalItems')) {\n        return sub.additionalItems\n      }\n    } else {\n      return sub.items\n    }\n\n    return undefined\n  })\n}\n\nfunction getAdditionalSchemas(subSchemas) {\n  return subSchemas.map(function(sub) {\n    if (!sub) {\n      return undefined\n    }\n    if (Array.isArray(sub.items)) {\n      return sub.additionalItems\n    }\n    return sub.items\n  })\n}\n\n// Provide source when array\nfunction mergeItems(group, mergeSchemas, items) {\n  const allKeys = allUniqueKeys(items)\n  return allKeys.reduce(function(all, key) {\n    const schemas = getItemSchemas(group, key)\n    const compacted = uniqWith(schemas.filter(notUndefined), compare)\n    all[key] = mergeSchemas(compacted, key)\n    return all\n  }, [])\n}\n\nmodule.exports = {\n  keywords: ['items', 'additionalItems'],\n  resolver(values, parents, mergers) {\n    // const createSubMerger = groupKey => (schemas, key) => mergeSchemas(schemas, parents.concat(groupKey, key))\n    const items = values.map(s => s.items)\n    const itemsCompacted = items.filter(notUndefined)\n    const returnObject = {}\n\n    // if all items keyword values are schemas, we can merge them as simple schemas\n    // if not we need to merge them as mixed\n    if (itemsCompacted.every(isSchema)) {\n      returnObject.items = mergers.items(items)\n    } else {\n      returnObject.items = mergeItems(values, mergers.items, items)\n    }\n\n    let schemasAtLastPos\n    if (itemsCompacted.every(Array.isArray)) {\n      schemasAtLastPos = values.map(s => s.additionalItems)\n    } else if (itemsCompacted.some(Array.isArray)) {\n      schemasAtLastPos = getAdditionalSchemas(values)\n    }\n\n    if (schemasAtLastPos) {\n      returnObject.additionalItems = mergers.additionalItems(schemasAtLastPos)\n    }\n\n    if (returnObject.additionalItems === false && Array.isArray(returnObject.items)) {\n      removeFalseSchemasFromArray(returnObject.items)\n    }\n\n    return deleteUndefinedProps(returnObject)\n  }\n}\n","/**\n * @license AngularJS v1.6.6\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window) {'use strict';\n\n/* exported\n  minErrConfig,\n  errorHandlingConfig,\n  isValidObjectMaxDepth\n*/\n\nvar minErrConfig = {\n  objectMaxDepth: 5\n};\n\n/**\n * @ngdoc function\n * @name angular.errorHandlingConfig\n * @module ng\n * @kind function\n *\n * @description\n * Configure several aspects of error handling in AngularJS if used as a setter or return the\n * current configuration if used as a getter. The following options are supported:\n *\n * - **objectMaxDepth**: The maximum depth to which objects are traversed when stringified for error messages.\n *\n * Omitted or undefined options will leave the corresponding configuration values unchanged.\n *\n * @param {Object=} config - The configuration object. May only contain the options that need to be\n *     updated. Supported keys:\n *\n * * `objectMaxDepth`  **{Number}** - The max depth for stringifying objects. Setting to a\n *   non-positive or non-numeric value, removes the max depth limit.\n *   Default: 5\n */\nfunction errorHandlingConfig(config) {\n  if (isObject(config)) {\n    if (isDefined(config.objectMaxDepth)) {\n      minErrConfig.objectMaxDepth = isValidObjectMaxDepth(config.objectMaxDepth) ? config.objectMaxDepth : NaN;\n    }\n  } else {\n    return minErrConfig;\n  }\n}\n\n/**\n * @private\n * @param {Number} maxDepth\n * @return {boolean}\n */\nfunction isValidObjectMaxDepth(maxDepth) {\n  return isNumber(maxDepth) && maxDepth > 0;\n}\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one.  The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning\n *   error from returned function, for cases when a particular type of error is useful.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module, ErrorConstructor) {\n  ErrorConstructor = ErrorConstructor || Error;\n  return function() {\n    var code = arguments[0],\n      template = arguments[1],\n      message = '[' + (module ? module + ':' : '') + code + '] ',\n      templateArgs = sliceArgs(arguments, 2).map(function(arg) {\n        return toDebugString(arg, minErrConfig.objectMaxDepth);\n      }),\n      paramPrefix, i;\n\n    message += template.replace(/\\{\\d+\\}/g, function(match) {\n      var index = +match.slice(1, -1);\n\n      if (index < templateArgs.length) {\n        return templateArgs[index];\n      }\n\n      return match;\n    });\n\n    message += '\\nhttp://errors.angularjs.org/1.6.6/' +\n      (module ? module + '/' : '') + code;\n\n    for (i = 0, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {\n      message += paramPrefix + 'p' + i + '=' + encodeURIComponent(templateArgs[i]);\n    }\n\n    return new ErrorConstructor(message);\n  };\n}\n\n/* We need to tell ESLint what variables are being exported */\n/* exported\n  angular,\n  msie,\n  jqLite,\n  jQuery,\n  slice,\n  splice,\n  push,\n  toString,\n  minErrConfig,\n  errorHandlingConfig,\n  isValidObjectMaxDepth,\n  ngMinErr,\n  angularModule,\n  uid,\n  REGEX_STRING_REGEXP,\n  VALIDITY_STATE_PROPERTY,\n\n  lowercase,\n  uppercase,\n  manualLowercase,\n  manualUppercase,\n  nodeName_,\n  isArrayLike,\n  forEach,\n  forEachSorted,\n  reverseParams,\n  nextUid,\n  setHashKey,\n  extend,\n  toInt,\n  inherit,\n  merge,\n  noop,\n  identity,\n  valueFn,\n  isUndefined,\n  isDefined,\n  isObject,\n  isBlankObject,\n  isString,\n  isNumber,\n  isNumberNaN,\n  isDate,\n  isError,\n  isArray,\n  isFunction,\n  isRegExp,\n  isWindow,\n  isScope,\n  isFile,\n  isFormData,\n  isBlob,\n  isBoolean,\n  isPromiseLike,\n  trim,\n  escapeForRegexp,\n  isElement,\n  makeMap,\n  includes,\n  arrayRemove,\n  copy,\n  simpleCompare,\n  equals,\n  csp,\n  jq,\n  concat,\n  sliceArgs,\n  bind,\n  toJsonReplacer,\n  toJson,\n  fromJson,\n  convertTimezoneToLocal,\n  timezoneToOffset,\n  startingTag,\n  tryDecodeURIComponent,\n  parseKeyValue,\n  toKeyValue,\n  encodeUriSegment,\n  encodeUriQuery,\n  angularInit,\n  bootstrap,\n  getTestability,\n  snake_case,\n  bindJQuery,\n  assertArg,\n  assertArgFn,\n  assertNotHasOwnProperty,\n  getter,\n  getBlockNodes,\n  hasOwnProperty,\n  createMap,\n  stringify,\n\n  NODE_TYPE_ELEMENT,\n  NODE_TYPE_ATTRIBUTE,\n  NODE_TYPE_TEXT,\n  NODE_TYPE_COMMENT,\n  NODE_TYPE_DOCUMENT,\n  NODE_TYPE_DOCUMENT_FRAGMENT\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @installation\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n * <div doc-module-components=\"ng\"></div>\n */\n\nvar REGEX_STRING_REGEXP = /^\\/(.+)\\/([a-z]*)$/;\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = 'validity';\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * @ngdoc function\n * @name angular.lowercase\n * @module ng\n * @kind function\n *\n * @deprecated\n * sinceVersion=\"1.5.0\"\n * removeVersion=\"1.7.0\"\n * Use [String.prototype.toLowerCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) instead.\n *\n * @description Converts the specified string to lowercase.\n * @param {string} string String to be converted to lowercase.\n * @returns {string} Lowercased string.\n */\nvar lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};\n\n/**\n * @ngdoc function\n * @name angular.uppercase\n * @module ng\n * @kind function\n *\n * @deprecated\n * sinceVersion=\"1.5.0\"\n * removeVersion=\"1.7.0\"\n * Use [String.prototype.toUpperCase](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) instead.\n *\n * @description Converts the specified string to uppercase.\n * @param {string} string String to be converted to uppercase.\n * @returns {string} Uppercased string.\n */\nvar uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};\n\n\nvar manualLowercase = function(s) {\n  /* eslint-disable no-bitwise */\n  return isString(s)\n      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})\n      : s;\n  /* eslint-enable */\n};\nvar manualUppercase = function(s) {\n  /* eslint-disable no-bitwise */\n  return isString(s)\n      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})\n      : s;\n  /* eslint-enable */\n};\n\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387\nif ('i' !== 'I'.toLowerCase()) {\n  lowercase = manualLowercase;\n  uppercase = manualUppercase;\n}\n\n\nvar\n    msie,             // holds major version number for IE, or NaN if UA is not IE.\n    jqLite,           // delay binding since jQuery could be loaded after us.\n    jQuery,           // delay binding\n    slice             = [].slice,\n    splice            = [].splice,\n    push              = [].push,\n    toString          = Object.prototype.toString,\n    getPrototypeOf    = Object.getPrototypeOf,\n    ngMinErr          = minErr('ng'),\n\n    /** @name angular */\n    angular           = window.angular || (window.angular = {}),\n    angularModule,\n    uid               = 0;\n\n// Support: IE 9-11 only\n/**\n * documentMode is an IE-only property\n * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx\n */\nmsie = window.document.documentMode;\n\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n *                   String ...)\n */\nfunction isArrayLike(obj) {\n\n  // `null`, `undefined` and `window` are not array-like\n  if (obj == null || isWindow(obj)) return false;\n\n  // arrays, strings and jQuery/jqLite objects are array like\n  // * jqLite is either the jQuery or jqLite constructor function\n  // * we have to check the existence of jqLite first as this method is called\n  //   via the forEach method when constructing the jqLite object in the first place\n  if (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite)) return true;\n\n  // Support: iOS 8.2 (not reproducible in simulator)\n  // \"length\" in obj used to prevent JIT error (gh-11508)\n  var length = 'length' in Object(obj) && obj.length;\n\n  // NodeList objects (with `item` method) and\n  // other objects with suitable length characteristics are array-like\n  return isNumber(length) &&\n    (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item === 'function');\n\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`\n * is the value of an object property or an array element, `key` is the object property key or\n * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n * Unlike ES262's\n * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),\n * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just\n * return the value provided.\n *\n   ```js\n     var values = {name: 'misko', gender: 'male'};\n     var log = [];\n     angular.forEach(values, function(value, key) {\n       this.push(key + ': ' + value);\n     }, log);\n     expect(log).toEqual(['name: misko', 'gender: male']);\n   ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\n\nfunction forEach(obj, iterator, context) {\n  var key, length;\n  if (obj) {\n    if (isFunction(obj)) {\n      for (key in obj) {\n        if (key !== 'prototype' && key !== 'length' && key !== 'name' && obj.hasOwnProperty(key)) {\n          iterator.call(context, obj[key], key, obj);\n        }\n      }\n    } else if (isArray(obj) || isArrayLike(obj)) {\n      var isPrimitive = typeof obj !== 'object';\n      for (key = 0, length = obj.length; key < length; key++) {\n        if (isPrimitive || key in obj) {\n          iterator.call(context, obj[key], key, obj);\n        }\n      }\n    } else if (obj.forEach && obj.forEach !== forEach) {\n        obj.forEach(iterator, context, obj);\n    } else if (isBlankObject(obj)) {\n      // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n      for (key in obj) {\n        iterator.call(context, obj[key], key, obj);\n      }\n    } else if (typeof obj.hasOwnProperty === 'function') {\n      // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed\n      for (key in obj) {\n        if (obj.hasOwnProperty(key)) {\n          iterator.call(context, obj[key], key, obj);\n        }\n      }\n    } else {\n      // Slow path for objects which do not have a method `hasOwnProperty`\n      for (key in obj) {\n        if (hasOwnProperty.call(obj, key)) {\n          iterator.call(context, obj[key], key, obj);\n        }\n      }\n    }\n  }\n  return obj;\n}\n\nfunction forEachSorted(obj, iterator, context) {\n  var keys = Object.keys(obj).sort();\n  for (var i = 0; i < keys.length; i++) {\n    iterator.call(context, obj[keys[i]], keys[i]);\n  }\n  return keys;\n}\n\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n  return function(value, key) {iteratorFn(key, value);};\n}\n\n/**\n * A consistent way of creating unique IDs in angular.\n *\n * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before\n * we hit number precision issues in JavaScript.\n *\n * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M\n *\n * @returns {number} an unique alpha-numeric string\n */\nfunction nextUid() {\n  return ++uid;\n}\n\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n  if (h) {\n    obj.$$hashKey = h;\n  } else {\n    delete obj.$$hashKey;\n  }\n}\n\n\nfunction baseExtend(dst, objs, deep) {\n  var h = dst.$$hashKey;\n\n  for (var i = 0, ii = objs.length; i < ii; ++i) {\n    var obj = objs[i];\n    if (!isObject(obj) && !isFunction(obj)) continue;\n    var keys = Object.keys(obj);\n    for (var j = 0, jj = keys.length; j < jj; j++) {\n      var key = keys[j];\n      var src = obj[key];\n\n      if (deep && isObject(src)) {\n        if (isDate(src)) {\n          dst[key] = new Date(src.valueOf());\n        } else if (isRegExp(src)) {\n          dst[key] = new RegExp(src);\n        } else if (src.nodeName) {\n          dst[key] = src.cloneNode(true);\n        } else if (isElement(src)) {\n          dst[key] = src.clone();\n        } else {\n          if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};\n          baseExtend(dst[key], [src], true);\n        }\n      } else {\n        dst[key] = src;\n      }\n    }\n  }\n\n  setHashKey(dst, h);\n  return dst;\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.\n *\n * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use\n * {@link angular.merge} for this.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n  return baseExtend(dst, slice.call(arguments, 1), false);\n}\n\n\n/**\n* @ngdoc function\n* @name angular.merge\n* @module ng\n* @kind function\n*\n* @description\n* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.\n*\n* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source\n* objects, performing a deep copy.\n*\n* @deprecated\n* sinceVersion=\"1.6.5\"\n* This function is deprecated, but will not be removed in the 1.x lifecycle.\n* There are edge cases (see {@link angular.merge#known-issues known issues}) that are not\n* supported by this function. We suggest\n* using [lodash's merge()](https://lodash.com/docs/4.17.4#merge) instead.\n*\n* @knownIssue\n* This is a list of (known) object types that are not handled correctly by this function:\n* - [`Blob`](https://developer.mozilla.org/docs/Web/API/Blob)\n* - [`MediaStream`](https://developer.mozilla.org/docs/Web/API/MediaStream)\n* - [`CanvasGradient`](https://developer.mozilla.org/docs/Web/API/CanvasGradient)\n* - AngularJS {@link $rootScope.Scope scopes};\n*\n* @param {Object} dst Destination object.\n* @param {...Object} src Source object(s).\n* @returns {Object} Reference to `dst`.\n*/\nfunction merge(dst) {\n  return baseExtend(dst, slice.call(arguments, 1), true);\n}\n\n\n\nfunction toInt(str) {\n  return parseInt(str, 10);\n}\n\nvar isNumberNaN = Number.isNaN || function isNumberNaN(num) {\n  // eslint-disable-next-line no-self-compare\n  return num !== num;\n};\n\n\nfunction inherit(parent, extra) {\n  return extend(Object.create(parent), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n   ```js\n     function foo(callback) {\n       var result = calculateResult();\n       (callback || angular.noop)(result);\n     }\n   ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n   ```js\n   function transformer(transformationFn, value) {\n     return (transformationFn || angular.identity)(value);\n   };\n\n   // E.g.\n   function getResult(fn, input) {\n     return (fn || angular.identity)(input);\n   };\n\n   getResult(function(n) { return n * 2; }, 21);   // returns 42\n   getResult(null, 21);                            // returns 21\n   getResult(undefined, 21);                       // returns 21\n   ```\n *\n * @param {*} value to be returned.\n * @returns {*} the value passed in.\n */\nfunction identity($) {return $;}\nidentity.$inject = [];\n\n\nfunction valueFn(value) {return function valueRef() {return value;};}\n\nfunction hasCustomToString(obj) {\n  return isFunction(obj.toString) && obj.toString !== toString;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value) {return typeof value === 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value) {return typeof value !== 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value) {\n  // http://jsperf.com/isobject4\n  return value !== null && typeof value === 'object';\n}\n\n\n/**\n * Determine if a value is an object with a null prototype\n *\n * @returns {boolean} True if `value` is an `Object` with a null prototype\n */\nfunction isBlankObject(value) {\n  return value !== null && typeof value === 'object' && !getPrototypeOf(value);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value) {return typeof value === 'string';}\n\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * This includes the \"special\" numbers `NaN`, `+Infinity` and `-Infinity`.\n *\n * If you wish to exclude these then you can use the native\n * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)\n * method.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value) {return typeof value === 'number';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n  return toString.call(value) === '[object Date]';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`. Alias of Array.isArray.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = Array.isArray;\n\n/**\n * @description\n * Determines if a reference is an `Error`.\n * Loosely based on https://www.npmjs.com/package/iserror\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Error`.\n */\nfunction isError(value) {\n  var tag = toString.call(value);\n  switch (tag) {\n    case '[object Error]': return true;\n    case '[object Exception]': return true;\n    case '[object DOMException]': return true;\n    default: return value instanceof Error;\n  }\n}\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value) {return typeof value === 'function';}\n\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n  return toString.call(value) === '[object RegExp]';\n}\n\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n  return obj && obj.window === obj;\n}\n\n\nfunction isScope(obj) {\n  return obj && obj.$evalAsync && obj.$watch;\n}\n\n\nfunction isFile(obj) {\n  return toString.call(obj) === '[object File]';\n}\n\n\nfunction isFormData(obj) {\n  return toString.call(obj) === '[object FormData]';\n}\n\n\nfunction isBlob(obj) {\n  return toString.call(obj) === '[object Blob]';\n}\n\n\nfunction isBoolean(value) {\n  return typeof value === 'boolean';\n}\n\n\nfunction isPromiseLike(obj) {\n  return obj && isFunction(obj.then);\n}\n\n\nvar TYPED_ARRAY_REGEXP = /^\\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;\nfunction isTypedArray(value) {\n  return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value));\n}\n\nfunction isArrayBuffer(obj) {\n  return toString.call(obj) === '[object ArrayBuffer]';\n}\n\n\nvar trim = function(value) {\n  return isString(value) ? value.trim() : value;\n};\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021\n// Prereq: s is a string.\nvar escapeForRegexp = function(s) {\n  return s\n    .replace(/([-()[\\]{}+?*.$^|,:#<!\\\\])/g, '\\\\$1')\n    // eslint-disable-next-line no-control-regex\n    .replace(/\\x08/g, '\\\\x08');\n};\n\n\n/**\n * @ngdoc function\n * @name angular.isElement\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a DOM element (or wrapped jQuery element).\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).\n */\nfunction isElement(node) {\n  return !!(node &&\n    (node.nodeName  // We are a direct element.\n    || (node.prop && node.attr && node.find)));  // We have an on and find method part of jQuery API.\n}\n\n/**\n * @param str 'key1,key2,...'\n * @returns {object} in the form of {key1:true, key2:true, ...}\n */\nfunction makeMap(str) {\n  var obj = {}, items = str.split(','), i;\n  for (i = 0; i < items.length; i++) {\n    obj[items[i]] = true;\n  }\n  return obj;\n}\n\n\nfunction nodeName_(element) {\n  return lowercase(element.nodeName || (element[0] && element[0].nodeName));\n}\n\nfunction includes(array, obj) {\n  return Array.prototype.indexOf.call(array, obj) !== -1;\n}\n\nfunction arrayRemove(array, value) {\n  var index = array.indexOf(value);\n  if (index >= 0) {\n    array.splice(index, 1);\n  }\n  return index;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for arrays) or properties (for objects)\n *   are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to `destination` an exception will be thrown.\n *\n * <br />\n * <div class=\"alert alert-warning\">\n *   Only enumerable properties are taken into account. Non-enumerable properties (both on `source`\n *   and on `destination`) will be ignored.\n * </div>\n *\n * @param {*} source The source that will be used to make a copy.\n *                   Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n *     provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n  <example module=\"copyExample\" name=\"angular-copy\">\n    <file name=\"index.html\">\n      <div ng-controller=\"ExampleController\">\n        <form novalidate class=\"simple-form\">\n          <label>Name: <input type=\"text\" ng-model=\"user.name\" /></label><br />\n          <label>Age:  <input type=\"number\" ng-model=\"user.age\" /></label><br />\n          Gender: <label><input type=\"radio\" ng-model=\"user.gender\" value=\"male\" />male</label>\n                  <label><input type=\"radio\" ng-model=\"user.gender\" value=\"female\" />female</label><br />\n          <button ng-click=\"reset()\">RESET</button>\n          <button ng-click=\"update(user)\">SAVE</button>\n        </form>\n        <pre>form = {{user | json}}</pre>\n        <pre>master = {{master | json}}</pre>\n      </div>\n    </file>\n    <file name=\"script.js\">\n      // Module: copyExample\n      angular.\n        module('copyExample', []).\n        controller('ExampleController', ['$scope', function($scope) {\n          $scope.master = {};\n\n          $scope.reset = function() {\n            // Example with 1 argument\n            $scope.user = angular.copy($scope.master);\n          };\n\n          $scope.update = function(user) {\n            // Example with 2 arguments\n            angular.copy(user, $scope.master);\n          };\n\n          $scope.reset();\n        }]);\n    </file>\n  </example>\n */\nfunction copy(source, destination, maxDepth) {\n  var stackSource = [];\n  var stackDest = [];\n  maxDepth = isValidObjectMaxDepth(maxDepth) ? maxDepth : NaN;\n\n  if (destination) {\n    if (isTypedArray(destination) || isArrayBuffer(destination)) {\n      throw ngMinErr('cpta', 'Can\\'t copy! TypedArray destination cannot be mutated.');\n    }\n    if (source === destination) {\n      throw ngMinErr('cpi', 'Can\\'t copy! Source and destination are identical.');\n    }\n\n    // Empty the destination object\n    if (isArray(destination)) {\n      destination.length = 0;\n    } else {\n      forEach(destination, function(value, key) {\n        if (key !== '$$hashKey') {\n          delete destination[key];\n        }\n      });\n    }\n\n    stackSource.push(source);\n    stackDest.push(destination);\n    return copyRecurse(source, destination, maxDepth);\n  }\n\n  return copyElement(source, maxDepth);\n\n  function copyRecurse(source, destination, maxDepth) {\n    maxDepth--;\n    if (maxDepth < 0) {\n      return '...';\n    }\n    var h = destination.$$hashKey;\n    var key;\n    if (isArray(source)) {\n      for (var i = 0, ii = source.length; i < ii; i++) {\n        destination.push(copyElement(source[i], maxDepth));\n      }\n    } else if (isBlankObject(source)) {\n      // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n      for (key in source) {\n        destination[key] = copyElement(source[key], maxDepth);\n      }\n    } else if (source && typeof source.hasOwnProperty === 'function') {\n      // Slow path, which must rely on hasOwnProperty\n      for (key in source) {\n        if (source.hasOwnProperty(key)) {\n          destination[key] = copyElement(source[key], maxDepth);\n        }\n      }\n    } else {\n      // Slowest path --- hasOwnProperty can't be called as a method\n      for (key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          destination[key] = copyElement(source[key], maxDepth);\n        }\n      }\n    }\n    setHashKey(destination, h);\n    return destination;\n  }\n\n  function copyElement(source, maxDepth) {\n    // Simple values\n    if (!isObject(source)) {\n      return source;\n    }\n\n    // Already copied values\n    var index = stackSource.indexOf(source);\n    if (index !== -1) {\n      return stackDest[index];\n    }\n\n    if (isWindow(source) || isScope(source)) {\n      throw ngMinErr('cpws',\n        'Can\\'t copy! Making copies of Window or Scope instances is not supported.');\n    }\n\n    var needsRecurse = false;\n    var destination = copyType(source);\n\n    if (destination === undefined) {\n      destination = isArray(source) ? [] : Object.create(getPrototypeOf(source));\n      needsRecurse = true;\n    }\n\n    stackSource.push(source);\n    stackDest.push(destination);\n\n    return needsRecurse\n      ? copyRecurse(source, destination, maxDepth)\n      : destination;\n  }\n\n  function copyType(source) {\n    switch (toString.call(source)) {\n      case '[object Int8Array]':\n      case '[object Int16Array]':\n      case '[object Int32Array]':\n      case '[object Float32Array]':\n      case '[object Float64Array]':\n      case '[object Uint8Array]':\n      case '[object Uint8ClampedArray]':\n      case '[object Uint16Array]':\n      case '[object Uint32Array]':\n        return new source.constructor(copyElement(source.buffer), source.byteOffset, source.length);\n\n      case '[object ArrayBuffer]':\n        // Support: IE10\n        if (!source.slice) {\n          // If we're in this case we know the environment supports ArrayBuffer\n          /* eslint-disable no-undef */\n          var copied = new ArrayBuffer(source.byteLength);\n          new Uint8Array(copied).set(new Uint8Array(source));\n          /* eslint-enable */\n          return copied;\n        }\n        return source.slice(0);\n\n      case '[object Boolean]':\n      case '[object Number]':\n      case '[object String]':\n      case '[object Date]':\n        return new source.constructor(source.valueOf());\n\n      case '[object RegExp]':\n        var re = new RegExp(source.source, source.toString().match(/[^/]*$/)[0]);\n        re.lastIndex = source.lastIndex;\n        return re;\n\n      case '[object Blob]':\n        return new source.constructor([source], {type: source.type});\n    }\n\n    if (isFunction(source.cloneNode)) {\n      return source.cloneNode(true);\n    }\n  }\n}\n\n\n// eslint-disable-next-line no-self-compare\nfunction simpleCompare(a, b) { return a === b || (a !== a && b !== b); }\n\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n *   comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n *   representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n *\n * @example\n   <example module=\"equalsExample\" name=\"equalsExample\">\n     <file name=\"index.html\">\n      <div ng-controller=\"ExampleController\">\n        <form novalidate>\n          <h3>User 1</h3>\n          Name: <input type=\"text\" ng-model=\"user1.name\">\n          Age: <input type=\"number\" ng-model=\"user1.age\">\n\n          <h3>User 2</h3>\n          Name: <input type=\"text\" ng-model=\"user2.name\">\n          Age: <input type=\"number\" ng-model=\"user2.age\">\n\n          <div>\n            <br/>\n            <input type=\"button\" value=\"Compare\" ng-click=\"compare()\">\n          </div>\n          User 1: <pre>{{user1 | json}}</pre>\n          User 2: <pre>{{user2 | json}}</pre>\n          Equal: <pre>{{result}}</pre>\n        </form>\n      </div>\n    </file>\n    <file name=\"script.js\">\n        angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {\n          $scope.user1 = {};\n          $scope.user2 = {};\n          $scope.compare = function() {\n            $scope.result = angular.equals($scope.user1, $scope.user2);\n          };\n        }]);\n    </file>\n  </example>\n */\nfunction equals(o1, o2) {\n  if (o1 === o2) return true;\n  if (o1 === null || o2 === null) return false;\n  // eslint-disable-next-line no-self-compare\n  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n  if (t1 === t2 && t1 === 'object') {\n    if (isArray(o1)) {\n      if (!isArray(o2)) return false;\n      if ((length = o1.length) === o2.length) {\n        for (key = 0; key < length; key++) {\n          if (!equals(o1[key], o2[key])) return false;\n        }\n        return true;\n      }\n    } else if (isDate(o1)) {\n      if (!isDate(o2)) return false;\n      return simpleCompare(o1.getTime(), o2.getTime());\n    } else if (isRegExp(o1)) {\n      if (!isRegExp(o2)) return false;\n      return o1.toString() === o2.toString();\n    } else {\n      if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||\n        isArray(o2) || isDate(o2) || isRegExp(o2)) return false;\n      keySet = createMap();\n      for (key in o1) {\n        if (key.charAt(0) === '$' || isFunction(o1[key])) continue;\n        if (!equals(o1[key], o2[key])) return false;\n        keySet[key] = true;\n      }\n      for (key in o2) {\n        if (!(key in keySet) &&\n            key.charAt(0) !== '$' &&\n            isDefined(o2[key]) &&\n            !isFunction(o2[key])) return false;\n      }\n      return true;\n    }\n  }\n  return false;\n}\n\nvar csp = function() {\n  if (!isDefined(csp.rules)) {\n\n\n    var ngCspElement = (window.document.querySelector('[ng-csp]') ||\n                    window.document.querySelector('[data-ng-csp]'));\n\n    if (ngCspElement) {\n      var ngCspAttribute = ngCspElement.getAttribute('ng-csp') ||\n                    ngCspElement.getAttribute('data-ng-csp');\n      csp.rules = {\n        noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1),\n        noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1)\n      };\n    } else {\n      csp.rules = {\n        noUnsafeEval: noUnsafeEval(),\n        noInlineStyle: false\n      };\n    }\n  }\n\n  return csp.rules;\n\n  function noUnsafeEval() {\n    try {\n      // eslint-disable-next-line no-new, no-new-func\n      new Function('');\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n};\n\n/**\n * @ngdoc directive\n * @module ng\n * @name ngJq\n *\n * @element ANY\n * @param {string=} ngJq the name of the library available under `window`\n * to be used for angular.element\n * @description\n * Use this directive to force the angular.element library.  This should be\n * used to force either jqLite by leaving ng-jq blank or setting the name of\n * the jquery variable under window (eg. jQuery).\n *\n * Since angular looks for this directive when it is loaded (doesn't wait for the\n * DOMContentLoaded event), it must be placed on an element that comes before the script\n * which loads angular. Also, only the first instance of `ng-jq` will be used and all\n * others ignored.\n *\n * @example\n * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.\n ```html\n <!doctype html>\n <html ng-app ng-jq>\n ...\n ...\n </html>\n ```\n * @example\n * This example shows how to use a jQuery based library of a different name.\n * The library name must be available at the top most 'window'.\n ```html\n <!doctype html>\n <html ng-app ng-jq=\"jQueryLib\">\n ...\n ...\n </html>\n ```\n */\nvar jq = function() {\n  if (isDefined(jq.name_)) return jq.name_;\n  var el;\n  var i, ii = ngAttrPrefixes.length, prefix, name;\n  for (i = 0; i < ii; ++i) {\n    prefix = ngAttrPrefixes[i];\n    el = window.document.querySelector('[' + prefix.replace(':', '\\\\:') + 'jq]');\n    if (el) {\n      name = el.getAttribute(prefix + 'jq');\n      break;\n    }\n  }\n\n  return (jq.name_ = name);\n};\n\nfunction concat(array1, array2, index) {\n  return array1.concat(slice.call(array2, index));\n}\n\nfunction sliceArgs(args, startIndex) {\n  return slice.call(args, startIndex || 0);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.bind\n * @module ng\n * @kind function\n *\n * @description\n * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for\n * `fn`). You can supply optional `args` that are prebound to the function. This feature is also\n * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as\n * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).\n *\n * @param {Object} self Context which `fn` should be evaluated in.\n * @param {function()} fn Function to be bound.\n * @param {...*} args Optional arguments to be prebound to the `fn` function call.\n * @returns {function()} Function that wraps the `fn` with all the specified bindings.\n */\nfunction bind(self, fn) {\n  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];\n  if (isFunction(fn) && !(fn instanceof RegExp)) {\n    return curryArgs.length\n      ? function() {\n          return arguments.length\n            ? fn.apply(self, concat(curryArgs, arguments, 0))\n            : fn.apply(self, curryArgs);\n        }\n      : function() {\n          return arguments.length\n            ? fn.apply(self, arguments)\n            : fn.call(self);\n        };\n  } else {\n    // In IE, native methods are not functions so they cannot be bound (note: they don't need to be).\n    return fn;\n  }\n}\n\n\nfunction toJsonReplacer(key, value) {\n  var val = value;\n\n  if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {\n    val = undefined;\n  } else if (isWindow(value)) {\n    val = '$WINDOW';\n  } else if (value &&  window.document === value) {\n    val = '$DOCUMENT';\n  } else if (isScope(value)) {\n    val = '$SCOPE';\n  }\n\n  return val;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number|boolean} obj Input to be serialized into JSON.\n * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.\n *    If set to an integer, the JSON output will contain that many spaces per indentation.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n * @knownIssue\n *\n * The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date`\n * object with an invalid date value. The only reliable way to prevent this is to monkeypatch the\n * `Date.prototype.toJSON` method as follows:\n *\n * ```\n * var _DatetoJSON = Date.prototype.toJSON;\n * Date.prototype.toJSON = function() {\n *   try {\n *     return _DatetoJSON.call(this);\n *   } catch(e) {\n *     if (e instanceof RangeError) {\n *       return null;\n *     }\n *     throw e;\n *   }\n * };\n * ```\n *\n * See https://github.com/angular/angular.js/pull/14221 for more information.\n */\nfunction toJson(obj, pretty) {\n  if (isUndefined(obj)) return undefined;\n  if (!isNumber(pretty)) {\n    pretty = pretty ? 2 : null;\n  }\n  return JSON.stringify(obj, toJsonReplacer, pretty);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized JSON string.\n */\nfunction fromJson(json) {\n  return isString(json)\n      ? JSON.parse(json)\n      : json;\n}\n\n\nvar ALL_COLONS = /:/g;\nfunction timezoneToOffset(timezone, fallback) {\n  // Support: IE 9-11 only, Edge 13-15+\n  // IE/Edge do not \"understand\" colon (`:`) in timezone\n  timezone = timezone.replace(ALL_COLONS, '');\n  var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n  return isNumberNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\n\n\nfunction addDateMinutes(date, minutes) {\n  date = new Date(date.getTime());\n  date.setMinutes(date.getMinutes() + minutes);\n  return date;\n}\n\n\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n  reverse = reverse ? -1 : 1;\n  var dateTimezoneOffset = date.getTimezoneOffset();\n  var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n  return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\n}\n\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n  element = jqLite(element).clone().empty();\n  var elemHtml = jqLite('<div>').append(element).html();\n  try {\n    return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :\n        elemHtml.\n          match(/^(<[^>]+>)/)[1].\n          replace(/^<([\\w-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);});\n  } catch (e) {\n    return lowercase(elemHtml);\n  }\n\n}\n\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n  try {\n    return decodeURIComponent(value);\n  } catch (e) {\n    // Ignore any invalid uri component.\n  }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.<string,boolean|Array>}\n */\nfunction parseKeyValue(/**string*/keyValue) {\n  var obj = {};\n  forEach((keyValue || '').split('&'), function(keyValue) {\n    var splitPoint, key, val;\n    if (keyValue) {\n      key = keyValue = keyValue.replace(/\\+/g,'%20');\n      splitPoint = keyValue.indexOf('=');\n      if (splitPoint !== -1) {\n        key = keyValue.substring(0, splitPoint);\n        val = keyValue.substring(splitPoint + 1);\n      }\n      key = tryDecodeURIComponent(key);\n      if (isDefined(key)) {\n        val = isDefined(val) ? tryDecodeURIComponent(val) : true;\n        if (!hasOwnProperty.call(obj, key)) {\n          obj[key] = val;\n        } else if (isArray(obj[key])) {\n          obj[key].push(val);\n        } else {\n          obj[key] = [obj[key],val];\n        }\n      }\n    }\n  });\n  return obj;\n}\n\nfunction toKeyValue(obj) {\n  var parts = [];\n  forEach(obj, function(value, key) {\n    if (isArray(value)) {\n      forEach(value, function(arrayValue) {\n        parts.push(encodeUriQuery(key, true) +\n                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n      });\n    } else {\n    parts.push(encodeUriQuery(key, true) +\n               (value === true ? '' : '=' + encodeUriQuery(value, true)));\n    }\n  });\n  return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n *    segment       = *pchar\n *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n *    pct-encoded   = \"%\" HEXDIG HEXDIG\n *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n  return encodeUriQuery(val, true).\n             replace(/%26/gi, '&').\n             replace(/%3D/gi, '=').\n             replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n *    query         = *( pchar / \"/\" / \"?\" )\n *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n *    pct-encoded   = \"%\" HEXDIG HEXDIG\n *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n  return encodeURIComponent(val).\n             replace(/%40/gi, '@').\n             replace(/%3A/gi, ':').\n             replace(/%24/g, '$').\n             replace(/%2C/gi, ',').\n             replace(/%3B/gi, ';').\n             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}\n\nvar ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];\n\nfunction getNgAttribute(element, ngAttr) {\n  var attr, i, ii = ngAttrPrefixes.length;\n  for (i = 0; i < ii; ++i) {\n    attr = ngAttrPrefixes[i] + ngAttr;\n    if (isString(attr = element.getAttribute(attr))) {\n      return attr;\n    }\n  }\n  return null;\n}\n\nfunction allowAutoBootstrap(document) {\n  var script = document.currentScript;\n\n  if (!script) {\n    // Support: IE 9-11 only\n    // IE does not have `document.currentScript`\n    return true;\n  }\n\n  // If the `currentScript` property has been clobbered just return false, since this indicates a probable attack\n  if (!(script instanceof window.HTMLScriptElement || script instanceof window.SVGScriptElement)) {\n    return false;\n  }\n\n  var attributes = script.attributes;\n  var srcs = [attributes.getNamedItem('src'), attributes.getNamedItem('href'), attributes.getNamedItem('xlink:href')];\n\n  return srcs.every(function(src) {\n    if (!src) {\n      return true;\n    }\n    if (!src.value) {\n      return false;\n    }\n\n    var link = document.createElement('a');\n    link.href = src.value;\n\n    if (document.location.origin === link.origin) {\n      // Same-origin resources are always allowed, even for non-whitelisted schemes.\n      return true;\n    }\n    // Disabled bootstrapping unless angular.js was loaded from a known scheme used on the web.\n    // This is to prevent angular.js bundled with browser extensions from being used to bypass the\n    // content security policy in web pages and other browser extensions.\n    switch (link.protocol) {\n      case 'http:':\n      case 'https:':\n      case 'ftp:':\n      case 'blob:':\n      case 'file:':\n      case 'data:':\n        return true;\n      default:\n        return false;\n    }\n  });\n}\n\n// Cached as it has to run during loading so that document.currentScript is available.\nvar isAutoBootstrapAllowed = allowAutoBootstrap(window.document);\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n *   {@link angular.module module} name to load.\n * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be\n *   created in \"strict-di\" mode. This means that the application will fail to invoke functions which\n *   do not use explicit function annotation (and are thus unsuitable for minification), as described\n *   in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in\n *   tracking down the root of these bugs.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `<body>` or `<html>` tags.\n *\n * There are a few things to keep in mind when using `ngApp`:\n * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n *   found in the document will be used to define the root element to auto-bootstrap as an\n *   application. To run multiple applications in an HTML document you must manually bootstrap them using\n *   {@link angular.bootstrap} instead.\n * - AngularJS applications cannot be nested within each other.\n * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`.\n *   This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and\n *   {@link ngRoute.ngView `ngView`}.\n *   Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n *   causing animations to stop working and making the injector inaccessible from outside the app.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application.  This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common way to bootstrap an application.\n *\n <example module=\"ngAppDemo\" name=\"ng-app\">\n   <file name=\"index.html\">\n   <div ng-controller=\"ngAppDemoController\">\n     I can add: {{a}} + {{b}} =  {{ a+b }}\n   </div>\n   </file>\n   <file name=\"script.js\">\n   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n     $scope.a = 1;\n     $scope.b = 2;\n   });\n   </file>\n </example>\n *\n * Using `ngStrictDi`, you would see something like this:\n *\n <example ng-app-included=\"true\" name=\"strict-di\">\n   <file name=\"index.html\">\n   <div ng-app=\"ngAppStrictDemo\" ng-strict-di>\n       <div ng-controller=\"GoodController1\">\n           I can add: {{a}} + {{b}} =  {{ a+b }}\n\n           <p>This renders because the controller does not fail to\n              instantiate, by using explicit annotation style (see\n              script.js for details)\n           </p>\n       </div>\n\n       <div ng-controller=\"GoodController2\">\n           Name: <input ng-model=\"name\"><br />\n           Hello, {{name}}!\n\n           <p>This renders because the controller does not fail to\n              instantiate, by using explicit annotation style\n              (see script.js for details)\n           </p>\n       </div>\n\n       <div ng-controller=\"BadController\">\n           I can add: {{a}} + {{b}} =  {{ a+b }}\n\n           <p>The controller could not be instantiated, due to relying\n              on automatic function annotations (which are disabled in\n              strict mode). As such, the content of this section is not\n              interpolated, and there should be an error in your web console.\n           </p>\n       </div>\n   </div>\n   </file>\n   <file name=\"script.js\">\n   angular.module('ngAppStrictDemo', [])\n     // BadController will fail to instantiate, due to relying on automatic function annotation,\n     // rather than an explicit annotation\n     .controller('BadController', function($scope) {\n       $scope.a = 1;\n       $scope.b = 2;\n     })\n     // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,\n     // due to using explicit annotations using the array style and $inject property, respectively.\n     .controller('GoodController1', ['$scope', function($scope) {\n       $scope.a = 1;\n       $scope.b = 2;\n     }])\n     .controller('GoodController2', GoodController2);\n     function GoodController2($scope) {\n       $scope.name = 'World';\n     }\n     GoodController2.$inject = ['$scope'];\n   </file>\n   <file name=\"style.css\">\n   div[ng-controller] {\n       margin-bottom: 1em;\n       -webkit-border-radius: 4px;\n       border-radius: 4px;\n       border: 1px solid;\n       padding: .5em;\n   }\n   div[ng-controller^=Good] {\n       border-color: #d6e9c6;\n       background-color: #dff0d8;\n       color: #3c763d;\n   }\n   div[ng-controller^=Bad] {\n       border-color: #ebccd1;\n       background-color: #f2dede;\n       color: #a94442;\n       margin-bottom: 0;\n   }\n   </file>\n </example>\n */\nfunction angularInit(element, bootstrap) {\n  var appElement,\n      module,\n      config = {};\n\n  // The element `element` has priority over any other element.\n  forEach(ngAttrPrefixes, function(prefix) {\n    var name = prefix + 'app';\n\n    if (!appElement && element.hasAttribute && element.hasAttribute(name)) {\n      appElement = element;\n      module = element.getAttribute(name);\n    }\n  });\n  forEach(ngAttrPrefixes, function(prefix) {\n    var name = prefix + 'app';\n    var candidate;\n\n    if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\\\:') + ']'))) {\n      appElement = candidate;\n      module = candidate.getAttribute(name);\n    }\n  });\n  if (appElement) {\n    if (!isAutoBootstrapAllowed) {\n      window.console.error('Angular: disabling automatic bootstrap. <script> protocol indicates ' +\n          'an extension, document.location.href does not match.');\n      return;\n    }\n    config.strictDi = getNgAttribute(appElement, 'strict-di') !== null;\n    bootstrap(appElement, module ? [module] : [], config);\n  }\n}\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * For more information, see the {@link guide/bootstrap Bootstrap guide}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n * <div class=\"alert alert-warning\">\n * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n * </div>\n *\n * <div class=\"alert alert-warning\">\n * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion},\n * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}.\n * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n * causing animations to stop working and making the injector inaccessible from outside the app.\n * </div>\n *\n * ```html\n * <!doctype html>\n * <html>\n * <body>\n * <div ng-controller=\"WelcomeController\">\n *   {{greeting}}\n * </div>\n *\n * <script src=\"angular.js\"></script>\n * <script>\n *   var app = angular.module('demo', [])\n *   .controller('WelcomeController', function($scope) {\n *       $scope.greeting = 'Welcome!';\n *   });\n *   angular.bootstrap(document, ['demo']);\n * </script>\n * </body>\n * </html>\n * ```\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.\n *     Each item in the array should be the name of a predefined module or a (DI annotated)\n *     function that will be invoked by the injector as a `config` block.\n *     See: {@link angular.module modules}\n * @param {Object=} config an object for defining configuration options for the application. The\n *     following keys are supported:\n *\n * * `strictDi` - disable automatic function annotation for the application. This is meant to\n *   assist in finding bugs which break minified code. Defaults to `false`.\n *\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules, config) {\n  if (!isObject(config)) config = {};\n  var defaultConfig = {\n    strictDi: false\n  };\n  config = extend(defaultConfig, config);\n  var doBootstrap = function() {\n    element = jqLite(element);\n\n    if (element.injector()) {\n      var tag = (element[0] === window.document) ? 'document' : startingTag(element);\n      // Encode angle brackets to prevent input from being sanitized to empty string #8683.\n      throw ngMinErr(\n          'btstrpd',\n          'App already bootstrapped with this element \\'{0}\\'',\n          tag.replace(/</,'&lt;').replace(/>/,'&gt;'));\n    }\n\n    modules = modules || [];\n    modules.unshift(['$provide', function($provide) {\n      $provide.value('$rootElement', element);\n    }]);\n\n    if (config.debugInfoEnabled) {\n      // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.\n      modules.push(['$compileProvider', function($compileProvider) {\n        $compileProvider.debugInfoEnabled(true);\n      }]);\n    }\n\n    modules.unshift('ng');\n    var injector = createInjector(modules, config.strictDi);\n    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',\n       function bootstrapApply(scope, element, compile, injector) {\n        scope.$apply(function() {\n          element.data('$injector', injector);\n          compile(element)(scope);\n        });\n      }]\n    );\n    return injector;\n  };\n\n  var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;\n  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n  if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {\n    config.debugInfoEnabled = true;\n    window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');\n  }\n\n  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n    return doBootstrap();\n  }\n\n  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');\n  angular.resumeBootstrap = function(extraModules) {\n    forEach(extraModules, function(module) {\n      modules.push(module);\n    });\n    return doBootstrap();\n  };\n\n  if (isFunction(angular.resumeDeferredBootstrap)) {\n    angular.resumeDeferredBootstrap();\n  }\n}\n\n/**\n * @ngdoc function\n * @name angular.reloadWithDebugInfo\n * @module ng\n * @description\n * Use this function to reload the current application with debug information turned on.\n * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.\n *\n * See {@link ng.$compileProvider#debugInfoEnabled} for more.\n */\nfunction reloadWithDebugInfo() {\n  window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;\n  window.location.reload();\n}\n\n/**\n * @name angular.getTestability\n * @module ng\n * @description\n * Get the testability service for the instance of Angular on the given\n * element.\n * @param {DOMElement} element DOM element which is the root of angular application.\n */\nfunction getTestability(rootElement) {\n  var injector = angular.element(rootElement).injector();\n  if (!injector) {\n    throw ngMinErr('test',\n      'no injector found for element argument to getTestability');\n  }\n  return injector.get('$$testability');\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n  separator = separator || '_';\n  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n    return (pos ? separator : '') + letter.toLowerCase();\n  });\n}\n\nvar bindJQueryFired = false;\nfunction bindJQuery() {\n  var originalCleanData;\n\n  if (bindJQueryFired) {\n    return;\n  }\n\n  // bind to jQuery if present;\n  var jqName = jq();\n  jQuery = isUndefined(jqName) ? window.jQuery :   // use jQuery (if present)\n           !jqName             ? undefined     :   // use jqLite\n                                 window[jqName];   // use jQuery specified by `ngJq`\n\n  // Use jQuery if it exists with proper functionality, otherwise default to us.\n  // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.\n  // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older\n  // versions. It will not work for sure with jQuery <1.7, though.\n  if (jQuery && jQuery.fn.on) {\n    jqLite = jQuery;\n    extend(jQuery.fn, {\n      scope: JQLitePrototype.scope,\n      isolateScope: JQLitePrototype.isolateScope,\n      controller: /** @type {?} */ (JQLitePrototype).controller,\n      injector: JQLitePrototype.injector,\n      inheritedData: JQLitePrototype.inheritedData\n    });\n\n    // All nodes removed from the DOM via various jQuery APIs like .remove()\n    // are passed through jQuery.cleanData. Monkey-patch this method to fire\n    // the $destroy event on all removed nodes.\n    originalCleanData = jQuery.cleanData;\n    jQuery.cleanData = function(elems) {\n      var events;\n      for (var i = 0, elem; (elem = elems[i]) != null; i++) {\n        events = jQuery._data(elem, 'events');\n        if (events && events.$destroy) {\n          jQuery(elem).triggerHandler('$destroy');\n        }\n      }\n      originalCleanData(elems);\n    };\n  } else {\n    jqLite = JQLite;\n  }\n\n  angular.element = jqLite;\n\n  // Prevent double-proxying.\n  bindJQueryFired = true;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n  if (!arg) {\n    throw ngMinErr('areq', 'Argument \\'{0}\\' is {1}', (name || '?'), (reason || 'required'));\n  }\n  return arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n  if (acceptArrayAnnotation && isArray(arg)) {\n      arg = arg[arg.length - 1];\n  }\n\n  assertArg(isFunction(arg), name, 'not a function, got ' +\n      (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));\n  return arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param  {String} name    the name to test\n * @param  {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n  if (name === 'hasOwnProperty') {\n    throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n  }\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n  if (!path) return obj;\n  var keys = path.split('.');\n  var key;\n  var lastInstance = obj;\n  var len = keys.length;\n\n  for (var i = 0; i < len; i++) {\n    key = keys[i];\n    if (obj) {\n      obj = (lastInstance = obj)[key];\n    }\n  }\n  if (!bindFnToScope && isFunction(obj)) {\n    return bind(lastInstance, obj);\n  }\n  return obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {Array} the inputted object or a jqLite collection containing the nodes\n */\nfunction getBlockNodes(nodes) {\n  // TODO(perf): update `nodes` instead of creating a new object?\n  var node = nodes[0];\n  var endNode = nodes[nodes.length - 1];\n  var blockNodes;\n\n  for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {\n    if (blockNodes || nodes[i] !== node) {\n      if (!blockNodes) {\n        blockNodes = jqLite(slice.call(nodes, 0, i));\n      }\n      blockNodes.push(node);\n    }\n  }\n\n  return blockNodes || nodes;\n}\n\n\n/**\n * Creates a new object without a prototype. This object is useful for lookup without having to\n * guard against prototypically inherited properties via hasOwnProperty.\n *\n * Related micro-benchmarks:\n * - http://jsperf.com/object-create2\n * - http://jsperf.com/proto-map-lookup/2\n * - http://jsperf.com/for-in-vs-object-keys2\n *\n * @returns {Object}\n */\nfunction createMap() {\n  return Object.create(null);\n}\n\nfunction stringify(value) {\n  if (value == null) { // null || undefined\n    return '';\n  }\n  switch (typeof value) {\n    case 'string':\n      break;\n    case 'number':\n      value = '' + value;\n      break;\n    default:\n      if (hasCustomToString(value) && !isArray(value) && !isDate(value)) {\n        value = value.toString();\n      } else {\n        value = toJson(value);\n      }\n  }\n\n  return value;\n}\n\nvar NODE_TYPE_ELEMENT = 1;\nvar NODE_TYPE_ATTRIBUTE = 2;\nvar NODE_TYPE_TEXT = 3;\nvar NODE_TYPE_COMMENT = 8;\nvar NODE_TYPE_DOCUMENT = 9;\nvar NODE_TYPE_DOCUMENT_FRAGMENT = 11;\n\n/**\n * @ngdoc type\n * @name angular.Module\n * @module ng\n * @description\n *\n * Interface for configuring angular {@link angular.module modules}.\n */\n\nfunction setupModuleLoader(window) {\n\n  var $injectorMinErr = minErr('$injector');\n  var ngMinErr = minErr('ng');\n\n  function ensure(obj, name, factory) {\n    return obj[name] || (obj[name] = factory());\n  }\n\n  var angular = ensure(window, 'angular', Object);\n\n  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap\n  angular.$$minErr = angular.$$minErr || minErr;\n\n  return ensure(angular, 'module', function() {\n    /** @type {Object.<string, angular.Module>} */\n    var modules = {};\n\n    /**\n     * @ngdoc function\n     * @name angular.module\n     * @module ng\n     * @description\n     *\n     * The `angular.module` is a global place for creating, registering and retrieving Angular\n     * modules.\n     * All modules (angular core or 3rd party) that should be available to an application must be\n     * registered using this mechanism.\n     *\n     * Passing one argument retrieves an existing {@link angular.Module},\n     * whereas passing more than one argument creates a new {@link angular.Module}\n     *\n     *\n     * # Module\n     *\n     * A module is a collection of services, directives, controllers, filters, and configuration information.\n     * `angular.module` is used to configure the {@link auto.$injector $injector}.\n     *\n     * ```js\n     * // Create a new module\n     * var myModule = angular.module('myModule', []);\n     *\n     * // register a new service\n     * myModule.value('appName', 'MyCoolApp');\n     *\n     * // configure existing services inside initialization blocks.\n     * myModule.config(['$locationProvider', function($locationProvider) {\n     *   // Configure existing providers\n     *   $locationProvider.hashPrefix('!');\n     * }]);\n     * ```\n     *\n     * Then you can create an injector and load your modules like this:\n     *\n     * ```js\n     * var injector = angular.injector(['ng', 'myModule'])\n     * ```\n     *\n     * However it's more likely that you'll just use\n     * {@link ng.directive:ngApp ngApp} or\n     * {@link angular.bootstrap} to simplify this process for you.\n     *\n     * @param {!string} name The name of the module to create or retrieve.\n     * @param {!Array.<string>=} requires If specified then new module is being created. If\n     *        unspecified then the module is being retrieved for further configuration.\n     * @param {Function=} configFn Optional configuration function for the module. Same as\n     *        {@link angular.Module#config Module#config()}.\n     * @returns {angular.Module} new module with the {@link angular.Module} api.\n     */\n    return function module(name, requires, configFn) {\n\n      var info = {};\n\n      var assertNotHasOwnProperty = function(name, context) {\n        if (name === 'hasOwnProperty') {\n          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n        }\n      };\n\n      assertNotHasOwnProperty(name, 'module');\n      if (requires && modules.hasOwnProperty(name)) {\n        modules[name] = null;\n      }\n      return ensure(modules, name, function() {\n        if (!requires) {\n          throw $injectorMinErr('nomod', 'Module \\'{0}\\' is not available! You either misspelled ' +\n             'the module name or forgot to load it. If registering a module ensure that you ' +\n             'specify the dependencies as the second argument.', name);\n        }\n\n        /** @type {!Array.<Array.<*>>} */\n        var invokeQueue = [];\n\n        /** @type {!Array.<Function>} */\n        var configBlocks = [];\n\n        /** @type {!Array.<Function>} */\n        var runBlocks = [];\n\n        var config = invokeLater('$injector', 'invoke', 'push', configBlocks);\n\n        /** @type {angular.Module} */\n        var moduleInstance = {\n          // Private state\n          _invokeQueue: invokeQueue,\n          _configBlocks: configBlocks,\n          _runBlocks: runBlocks,\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#info\n           * @module ng\n           *\n           * @param {Object=} info Information about the module\n           * @returns {Object|Module} The current info object for this module if called as a getter,\n           *                          or `this` if called as a setter.\n           *\n           * @description\n           * Read and write custom information about this module.\n           * For example you could put the version of the module in here.\n           *\n           * ```js\n           * angular.module('myModule', []).info({ version: '1.0.0' });\n           * ```\n           *\n           * The version could then be read back out by accessing the module elsewhere:\n           *\n           * ```\n           * var version = angular.module('myModule').info().version;\n           * ```\n           *\n           * You can also retrieve this information during runtime via the\n           * {@link $injector#modules `$injector.modules`} property:\n           *\n           * ```js\n           * var version = $injector.modules['myModule'].info().version;\n           * ```\n           */\n          info: function(value) {\n            if (isDefined(value)) {\n              if (!isObject(value)) throw ngMinErr('aobj', 'Argument \\'{0}\\' must be an object', 'value');\n              info = value;\n              return this;\n            }\n            return info;\n          },\n\n          /**\n           * @ngdoc property\n           * @name angular.Module#requires\n           * @module ng\n           *\n           * @description\n           * Holds the list of modules which the injector will load before the current module is\n           * loaded.\n           */\n          requires: requires,\n\n          /**\n           * @ngdoc property\n           * @name angular.Module#name\n           * @module ng\n           *\n           * @description\n           * Name of the module.\n           */\n          name: name,\n\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#provider\n           * @module ng\n           * @param {string} name service name\n           * @param {Function} providerType Construction function for creating new instance of the\n           *                                service.\n           * @description\n           * See {@link auto.$provide#provider $provide.provider()}.\n           */\n          provider: invokeLaterAndSetModuleName('$provide', 'provider'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#factory\n           * @module ng\n           * @param {string} name service name\n           * @param {Function} providerFunction Function for creating new instance of the service.\n           * @description\n           * See {@link auto.$provide#factory $provide.factory()}.\n           */\n          factory: invokeLaterAndSetModuleName('$provide', 'factory'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#service\n           * @module ng\n           * @param {string} name service name\n           * @param {Function} constructor A constructor function that will be instantiated.\n           * @description\n           * See {@link auto.$provide#service $provide.service()}.\n           */\n          service: invokeLaterAndSetModuleName('$provide', 'service'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#value\n           * @module ng\n           * @param {string} name service name\n           * @param {*} object Service instance object.\n           * @description\n           * See {@link auto.$provide#value $provide.value()}.\n           */\n          value: invokeLater('$provide', 'value'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#constant\n           * @module ng\n           * @param {string} name constant name\n           * @param {*} object Constant value.\n           * @description\n           * Because the constants are fixed, they get applied before other provide methods.\n           * See {@link auto.$provide#constant $provide.constant()}.\n           */\n          constant: invokeLater('$provide', 'constant', 'unshift'),\n\n           /**\n           * @ngdoc method\n           * @name angular.Module#decorator\n           * @module ng\n           * @param {string} name The name of the service to decorate.\n           * @param {Function} decorFn This function will be invoked when the service needs to be\n           *                           instantiated and should return the decorated service instance.\n           * @description\n           * See {@link auto.$provide#decorator $provide.decorator()}.\n           */\n          decorator: invokeLaterAndSetModuleName('$provide', 'decorator', configBlocks),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#animation\n           * @module ng\n           * @param {string} name animation name\n           * @param {Function} animationFactory Factory function for creating new instance of an\n           *                                    animation.\n           * @description\n           *\n           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.\n           *\n           *\n           * Defines an animation hook that can be later used with\n           * {@link $animate $animate} service and directives that use this service.\n           *\n           * ```js\n           * module.animation('.animation-name', function($inject1, $inject2) {\n           *   return {\n           *     eventName : function(element, done) {\n           *       //code to run the animation\n           *       //once complete, then run done()\n           *       return function cancellationFunction(element) {\n           *         //code to cancel the animation\n           *       }\n           *     }\n           *   }\n           * })\n           * ```\n           *\n           * See {@link ng.$animateProvider#register $animateProvider.register()} and\n           * {@link ngAnimate ngAnimate module} for more information.\n           */\n          animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#filter\n           * @module ng\n           * @param {string} name Filter name - this must be a valid angular expression identifier\n           * @param {Function} filterFactory Factory function for creating new instance of filter.\n           * @description\n           * See {@link ng.$filterProvider#register $filterProvider.register()}.\n           *\n           * <div class=\"alert alert-warning\">\n           * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.\n           * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace\n           * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores\n           * (`myapp_subsection_filterx`).\n           * </div>\n           */\n          filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#controller\n           * @module ng\n           * @param {string|Object} name Controller name, or an object map of controllers where the\n           *    keys are the names and the values are the constructors.\n           * @param {Function} constructor Controller constructor function.\n           * @description\n           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.\n           */\n          controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#directive\n           * @module ng\n           * @param {string|Object} name Directive name, or an object map of directives where the\n           *    keys are the names and the values are the factories.\n           * @param {Function} directiveFactory Factory function for creating new instance of\n           * directives.\n           * @description\n           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.\n           */\n          directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#component\n           * @module ng\n           * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp)\n           * @param {Object} options Component definition object (a simplified\n           *    {@link ng.$compile#directive-definition-object directive definition object})\n           *\n           * @description\n           * See {@link ng.$compileProvider#component $compileProvider.component()}.\n           */\n          component: invokeLaterAndSetModuleName('$compileProvider', 'component'),\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#config\n           * @module ng\n           * @param {Function} configFn Execute this function on module load. Useful for service\n           *    configuration.\n           * @description\n           * Use this method to register work which needs to be performed on module loading.\n           * For more about how to configure services, see\n           * {@link providers#provider-recipe Provider Recipe}.\n           */\n          config: config,\n\n          /**\n           * @ngdoc method\n           * @name angular.Module#run\n           * @module ng\n           * @param {Function} initializationFn Execute this function after injector creation.\n           *    Useful for application initialization.\n           * @description\n           * Use this method to register work which should be performed when the injector is done\n           * loading all modules.\n           */\n          run: function(block) {\n            runBlocks.push(block);\n            return this;\n          }\n        };\n\n        if (configFn) {\n          config(configFn);\n        }\n\n        return moduleInstance;\n\n        /**\n         * @param {string} provider\n         * @param {string} method\n         * @param {String=} insertMethod\n         * @returns {angular.Module}\n         */\n        function invokeLater(provider, method, insertMethod, queue) {\n          if (!queue) queue = invokeQueue;\n          return function() {\n            queue[insertMethod || 'push']([provider, method, arguments]);\n            return moduleInstance;\n          };\n        }\n\n        /**\n         * @param {string} provider\n         * @param {string} method\n         * @returns {angular.Module}\n         */\n        function invokeLaterAndSetModuleName(provider, method, queue) {\n          if (!queue) queue = invokeQueue;\n          return function(recipeName, factoryFunction) {\n            if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;\n            queue.push([provider, method, arguments]);\n            return moduleInstance;\n          };\n        }\n      });\n    };\n  });\n\n}\n\n/* global shallowCopy: true */\n\n/**\n * Creates a shallow copy of an object, an array or a primitive.\n *\n * Assumes that there are no proto properties for objects.\n */\nfunction shallowCopy(src, dst) {\n  if (isArray(src)) {\n    dst = dst || [];\n\n    for (var i = 0, ii = src.length; i < ii; i++) {\n      dst[i] = src[i];\n    }\n  } else if (isObject(src)) {\n    dst = dst || {};\n\n    for (var key in src) {\n      if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n        dst[key] = src[key];\n      }\n    }\n  }\n\n  return dst || src;\n}\n\n/* exported toDebugString */\n\nfunction serializeObject(obj, maxDepth) {\n  var seen = [];\n\n  // There is no direct way to stringify object until reaching a specific depth\n  // and a very deep object can cause a performance issue, so we copy the object\n  // based on this specific depth and then stringify it.\n  if (isValidObjectMaxDepth(maxDepth)) {\n    // This file is also included in `angular-loader`, so `copy()` might not always be available in\n    // the closure. Therefore, it is lazily retrieved as `angular.copy()` when needed.\n    obj = angular.copy(obj, null, maxDepth);\n  }\n  return JSON.stringify(obj, function(key, val) {\n    val = toJsonReplacer(key, val);\n    if (isObject(val)) {\n\n      if (seen.indexOf(val) >= 0) return '...';\n\n      seen.push(val);\n    }\n    return val;\n  });\n}\n\nfunction toDebugString(obj, maxDepth) {\n  if (typeof obj === 'function') {\n    return obj.toString().replace(/ \\{[\\s\\S]*$/, '');\n  } else if (isUndefined(obj)) {\n    return 'undefined';\n  } else if (typeof obj !== 'string') {\n    return serializeObject(obj, maxDepth);\n  }\n  return obj;\n}\n\n/* global angularModule: true,\n  version: true,\n\n  $CompileProvider,\n\n  htmlAnchorDirective,\n  inputDirective,\n  inputDirective,\n  formDirective,\n  scriptDirective,\n  selectDirective,\n  optionDirective,\n  ngBindDirective,\n  ngBindHtmlDirective,\n  ngBindTemplateDirective,\n  ngClassDirective,\n  ngClassEvenDirective,\n  ngClassOddDirective,\n  ngCloakDirective,\n  ngControllerDirective,\n  ngFormDirective,\n  ngHideDirective,\n  ngIfDirective,\n  ngIncludeDirective,\n  ngIncludeFillContentDirective,\n  ngInitDirective,\n  ngNonBindableDirective,\n  ngPluralizeDirective,\n  ngRepeatDirective,\n  ngShowDirective,\n  ngStyleDirective,\n  ngSwitchDirective,\n  ngSwitchWhenDirective,\n  ngSwitchDefaultDirective,\n  ngOptionsDirective,\n  ngTranscludeDirective,\n  ngModelDirective,\n  ngListDirective,\n  ngChangeDirective,\n  patternDirective,\n  patternDirective,\n  requiredDirective,\n  requiredDirective,\n  minlengthDirective,\n  minlengthDirective,\n  maxlengthDirective,\n  maxlengthDirective,\n  ngValueDirective,\n  ngModelOptionsDirective,\n  ngAttributeAliasDirectives,\n  ngEventDirectives,\n\n  $AnchorScrollProvider,\n  $AnimateProvider,\n  $CoreAnimateCssProvider,\n  $$CoreAnimateJsProvider,\n  $$CoreAnimateQueueProvider,\n  $$AnimateRunnerFactoryProvider,\n  $$AnimateAsyncRunFactoryProvider,\n  $BrowserProvider,\n  $CacheFactoryProvider,\n  $ControllerProvider,\n  $DateProvider,\n  $DocumentProvider,\n  $$IsDocumentHiddenProvider,\n  $ExceptionHandlerProvider,\n  $FilterProvider,\n  $$ForceReflowProvider,\n  $InterpolateProvider,\n  $IntervalProvider,\n  $HttpProvider,\n  $HttpParamSerializerProvider,\n  $HttpParamSerializerJQLikeProvider,\n  $HttpBackendProvider,\n  $xhrFactoryProvider,\n  $jsonpCallbacksProvider,\n  $LocationProvider,\n  $LogProvider,\n  $$MapProvider,\n  $ParseProvider,\n  $RootScopeProvider,\n  $QProvider,\n  $$QProvider,\n  $$SanitizeUriProvider,\n  $SceProvider,\n  $SceDelegateProvider,\n  $SnifferProvider,\n  $TemplateCacheProvider,\n  $TemplateRequestProvider,\n  $$TestabilityProvider,\n  $TimeoutProvider,\n  $$RAFProvider,\n  $WindowProvider,\n  $$jqLiteProvider,\n  $$CookieReaderProvider\n*/\n\n\n/**\n * @ngdoc object\n * @name angular.version\n * @module ng\n * @description\n * An object that contains information about the current AngularJS version.\n *\n * This object has the following properties:\n *\n * - `full` – `{string}` – Full version string, such as \"0.9.18\".\n * - `major` – `{number}` – Major version number, such as \"0\".\n * - `minor` – `{number}` – Minor version number, such as \"9\".\n * - `dot` – `{number}` – Dot version number, such as \"18\".\n * - `codeName` – `{string}` – Code name of the release, such as \"jiggling-armfat\".\n */\nvar version = {\n  // These placeholder strings will be replaced by grunt's `build` task.\n  // They need to be double- or single-quoted.\n  full: '1.6.6',\n  major: 1,\n  minor: 6,\n  dot: 6,\n  codeName: 'interdimensional-cable'\n};\n\n\nfunction publishExternalAPI(angular) {\n  extend(angular, {\n    'errorHandlingConfig': errorHandlingConfig,\n    'bootstrap': bootstrap,\n    'copy': copy,\n    'extend': extend,\n    'merge': merge,\n    'equals': equals,\n    'element': jqLite,\n    'forEach': forEach,\n    'injector': createInjector,\n    'noop': noop,\n    'bind': bind,\n    'toJson': toJson,\n    'fromJson': fromJson,\n    'identity': identity,\n    'isUndefined': isUndefined,\n    'isDefined': isDefined,\n    'isString': isString,\n    'isFunction': isFunction,\n    'isObject': isObject,\n    'isNumber': isNumber,\n    'isElement': isElement,\n    'isArray': isArray,\n    'version': version,\n    'isDate': isDate,\n    'lowercase': lowercase,\n    'uppercase': uppercase,\n    'callbacks': {$$counter: 0},\n    'getTestability': getTestability,\n    'reloadWithDebugInfo': reloadWithDebugInfo,\n    '$$minErr': minErr,\n    '$$csp': csp,\n    '$$encodeUriSegment': encodeUriSegment,\n    '$$encodeUriQuery': encodeUriQuery,\n    '$$stringify': stringify\n  });\n\n  angularModule = setupModuleLoader(window);\n\n  angularModule('ng', ['ngLocale'], ['$provide',\n    function ngModule($provide) {\n      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.\n      $provide.provider({\n        $$sanitizeUri: $$SanitizeUriProvider\n      });\n      $provide.provider('$compile', $CompileProvider).\n        directive({\n            a: htmlAnchorDirective,\n            input: inputDirective,\n            textarea: inputDirective,\n            form: formDirective,\n            script: scriptDirective,\n            select: selectDirective,\n            option: optionDirective,\n            ngBind: ngBindDirective,\n            ngBindHtml: ngBindHtmlDirective,\n            ngBindTemplate: ngBindTemplateDirective,\n            ngClass: ngClassDirective,\n            ngClassEven: ngClassEvenDirective,\n            ngClassOdd: ngClassOddDirective,\n            ngCloak: ngCloakDirective,\n            ngController: ngControllerDirective,\n            ngForm: ngFormDirective,\n            ngHide: ngHideDirective,\n            ngIf: ngIfDirective,\n            ngInclude: ngIncludeDirective,\n            ngInit: ngInitDirective,\n            ngNonBindable: ngNonBindableDirective,\n            ngPluralize: ngPluralizeDirective,\n            ngRepeat: ngRepeatDirective,\n            ngShow: ngShowDirective,\n            ngStyle: ngStyleDirective,\n            ngSwitch: ngSwitchDirective,\n            ngSwitchWhen: ngSwitchWhenDirective,\n            ngSwitchDefault: ngSwitchDefaultDirective,\n            ngOptions: ngOptionsDirective,\n            ngTransclude: ngTranscludeDirective,\n            ngModel: ngModelDirective,\n            ngList: ngListDirective,\n            ngChange: ngChangeDirective,\n            pattern: patternDirective,\n            ngPattern: patternDirective,\n            required: requiredDirective,\n            ngRequired: requiredDirective,\n            minlength: minlengthDirective,\n            ngMinlength: minlengthDirective,\n            maxlength: maxlengthDirective,\n            ngMaxlength: maxlengthDirective,\n            ngValue: ngValueDirective,\n            ngModelOptions: ngModelOptionsDirective\n        }).\n        directive({\n          ngInclude: ngIncludeFillContentDirective\n        }).\n        directive(ngAttributeAliasDirectives).\n        directive(ngEventDirectives);\n      $provide.provider({\n        $anchorScroll: $AnchorScrollProvider,\n        $animate: $AnimateProvider,\n        $animateCss: $CoreAnimateCssProvider,\n        $$animateJs: $$CoreAnimateJsProvider,\n        $$animateQueue: $$CoreAnimateQueueProvider,\n        $$AnimateRunner: $$AnimateRunnerFactoryProvider,\n        $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider,\n        $browser: $BrowserProvider,\n        $cacheFactory: $CacheFactoryProvider,\n        $controller: $ControllerProvider,\n        $document: $DocumentProvider,\n        $$isDocumentHidden: $$IsDocumentHiddenProvider,\n        $exceptionHandler: $ExceptionHandlerProvider,\n        $filter: $FilterProvider,\n        $$forceReflow: $$ForceReflowProvider,\n        $interpolate: $InterpolateProvider,\n        $interval: $IntervalProvider,\n        $http: $HttpProvider,\n        $httpParamSerializer: $HttpParamSerializerProvider,\n        $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,\n        $httpBackend: $HttpBackendProvider,\n        $xhrFactory: $xhrFactoryProvider,\n        $jsonpCallbacks: $jsonpCallbacksProvider,\n        $location: $LocationProvider,\n        $log: $LogProvider,\n        $parse: $ParseProvider,\n        $rootScope: $RootScopeProvider,\n        $q: $QProvider,\n        $$q: $$QProvider,\n        $sce: $SceProvider,\n        $sceDelegate: $SceDelegateProvider,\n        $sniffer: $SnifferProvider,\n        $templateCache: $TemplateCacheProvider,\n        $templateRequest: $TemplateRequestProvider,\n        $$testability: $$TestabilityProvider,\n        $timeout: $TimeoutProvider,\n        $window: $WindowProvider,\n        $$rAF: $$RAFProvider,\n        $$jqLite: $$jqLiteProvider,\n        $$Map: $$MapProvider,\n        $$cookieReader: $$CookieReaderProvider\n      });\n    }\n  ])\n  .info({ angularVersion: '1.6.6' });\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *     Any commits to this file should be reviewed with security in mind.  *\n *   Changes to this file can potentially create security vulnerabilities. *\n *          An approval from 2 Core members with history of modifying      *\n *                         this file is required.                          *\n *                                                                         *\n *  Does the change somehow allow for arbitrary javascript to be executed? *\n *    Or allows for someone to change the prototype of built-in objects?   *\n *     Or gives undesired access to variables likes document or window?    *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/* global\n  JQLitePrototype: true,\n  BOOLEAN_ATTR: true,\n  ALIASED_ATTR: true\n*/\n\n//////////////////////////////////\n//JQLite\n//////////////////////////////////\n\n/**\n * @ngdoc function\n * @name angular.element\n * @module ng\n * @kind function\n *\n * @description\n * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.\n *\n * If jQuery is available, `angular.element` is an alias for the\n * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`\n * delegates to Angular's built-in subset of jQuery, called \"jQuery lite\" or **jqLite**.\n *\n * jqLite is a tiny, API-compatible subset of jQuery that allows\n * Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most\n * commonly needed functionality with the goal of having a very small footprint.\n *\n * To use `jQuery`, simply ensure it is loaded before the `angular.js` file. You can also use the\n * {@link ngJq `ngJq`} directive to specify that jqlite should be used over jQuery, or to use a\n * specific version of jQuery if multiple versions exist on the page.\n *\n * <div class=\"alert alert-info\">**Note:** All element references in Angular are always wrapped with jQuery or\n * jqLite (such as the element argument in a directive's compile / link function). They are never raw DOM references.</div>\n *\n * <div class=\"alert alert-warning\">**Note:** Keep in mind that this function will not find elements\n * by tag name / CSS selector. For lookups by tag name, try instead `angular.element(document).find(...)`\n * or `$document.find()`, or use the standard DOM APIs, e.g. `document.querySelectorAll()`.</div>\n *\n * ## Angular's jqLite\n * jqLite provides only the following jQuery methods:\n *\n * - [`addClass()`](http://api.jquery.com/addClass/) - Does not support a function as first argument\n * - [`after()`](http://api.jquery.com/after/)\n * - [`append()`](http://api.jquery.com/append/)\n * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters\n * - [`bind()`](http://api.jquery.com/bind/) (_deprecated_, use [`on()`](http://api.jquery.com/on/)) - Does not support namespaces, selectors or eventData\n * - [`children()`](http://api.jquery.com/children/) - Does not support selectors\n * - [`clone()`](http://api.jquery.com/clone/)\n * - [`contents()`](http://api.jquery.com/contents/)\n * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`.\n *   As a setter, does not convert numbers to strings or append 'px', and also does not have automatic property prefixing.\n * - [`data()`](http://api.jquery.com/data/)\n * - [`detach()`](http://api.jquery.com/detach/)\n * - [`empty()`](http://api.jquery.com/empty/)\n * - [`eq()`](http://api.jquery.com/eq/)\n * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name\n * - [`hasClass()`](http://api.jquery.com/hasClass/)\n * - [`html()`](http://api.jquery.com/html/)\n * - [`next()`](http://api.jquery.com/next/) - Does not support selectors\n * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData\n * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces, selectors or event object as parameter\n * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors\n * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors\n * - [`prepend()`](http://api.jquery.com/prepend/)\n * - [`prop()`](http://api.jquery.com/prop/)\n * - [`ready()`](http://api.jquery.com/ready/) (_deprecated_, use `angular.element(callback)` instead of `angular.element(document).ready(callback)`)\n * - [`remove()`](http://api.jquery.com/remove/)\n * - [`removeAttr()`](http://api.jquery.com/removeAttr/) - Does not support multiple attributes\n * - [`removeClass()`](http://api.jquery.com/removeClass/) - Does not support a function as first argument\n * - [`removeData()`](http://api.jquery.com/removeData/)\n * - [`replaceWith()`](http://api.jquery.com/replaceWith/)\n * - [`text()`](http://api.jquery.com/text/)\n * - [`toggleClass()`](http://api.jquery.com/toggleClass/) - Does not support a function as first argument\n * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers\n * - [`unbind()`](http://api.jquery.com/unbind/) (_deprecated_, use [`off()`](http://api.jquery.com/off/)) - Does not support namespaces or event object as parameter\n * - [`val()`](http://api.jquery.com/val/)\n * - [`wrap()`](http://api.jquery.com/wrap/)\n *\n * ## jQuery/jqLite Extras\n * Angular also provides the following additional methods and events to both jQuery and jqLite:\n *\n * ### Events\n * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event\n *    on all DOM nodes being removed.  This can be used to clean up any 3rd party bindings to the DOM\n *    element before it is removed.\n *\n * ### Methods\n * - `controller(name)` - retrieves the controller of the current element or its parent. By default\n *   retrieves controller associated with the `ngController` directive. If `name` is provided as\n *   camelCase directive name, then the controller for this directive will be retrieved (e.g.\n *   `'ngModel'`).\n * - `injector()` - retrieves the injector of the current element or its parent.\n * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current\n *   element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to\n *   be enabled.\n * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the\n *   current element. This getter should be used only on elements that contain a directive which starts a new isolate\n *   scope. Calling `scope()` on this element always returns the original non-isolate scope.\n *   Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.\n * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top\n *   parent element is reached.\n *\n * @knownIssue You cannot spy on `angular.element` if you are using Jasmine version 1.x. See\n * https://github.com/angular/angular.js/issues/14251 for more information.\n *\n * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.\n * @returns {Object} jQuery object.\n */\n\nJQLite.expando = 'ng339';\n\nvar jqCache = JQLite.cache = {},\n    jqId = 1;\n\n/*\n * !!! This is an undocumented \"private\" function !!!\n */\nJQLite._data = function(node) {\n  //jQuery always returns an object on cache miss\n  return this.cache[node[this.expando]] || {};\n};\n\nfunction jqNextId() { return ++jqId; }\n\n\nvar DASH_LOWERCASE_REGEXP = /-([a-z])/g;\nvar MS_HACK_REGEXP = /^-ms-/;\nvar MOUSE_EVENT_MAP = { mouseleave: 'mouseout', mouseenter: 'mouseover' };\nvar jqLiteMinErr = minErr('jqLite');\n\n/**\n * Converts kebab-case to camelCase.\n * There is also a special case for the ms prefix starting with a lowercase letter.\n * @param name Name to normalize\n */\nfunction cssKebabToCamel(name) {\n    return kebabToCamel(name.replace(MS_HACK_REGEXP, 'ms-'));\n}\n\nfunction fnCamelCaseReplace(all, letter) {\n  return letter.toUpperCase();\n}\n\n/**\n * Converts kebab-case to camelCase.\n * @param name Name to normalize\n */\nfunction kebabToCamel(name) {\n  return name\n    .replace(DASH_LOWERCASE_REGEXP, fnCamelCaseReplace);\n}\n\nvar SINGLE_TAG_REGEXP = /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/;\nvar HTML_REGEXP = /<|&#?\\w+;/;\nvar TAG_NAME_REGEXP = /<([\\w:-]+)/;\nvar XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi;\n\nvar wrapMap = {\n  'option': [1, '<select multiple=\"multiple\">', '</select>'],\n\n  'thead': [1, '<table>', '</table>'],\n  'col': [2, '<table><colgroup>', '</colgroup></table>'],\n  'tr': [2, '<table><tbody>', '</tbody></table>'],\n  'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],\n  '_default': [0, '', '']\n};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction jqLiteIsTextNode(html) {\n  return !HTML_REGEXP.test(html);\n}\n\nfunction jqLiteAcceptsData(node) {\n  // The window object can accept data but has no nodeType\n  // Otherwise we are only interested in elements (1) and documents (9)\n  var nodeType = node.nodeType;\n  return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;\n}\n\nfunction jqLiteHasData(node) {\n  for (var key in jqCache[node.ng339]) {\n    return true;\n  }\n  return false;\n}\n\nfunction jqLiteBuildFragment(html, context) {\n  var tmp, tag, wrap,\n      fragment = context.createDocumentFragment(),\n      nodes = [], i;\n\n  if (jqLiteIsTextNode(html)) {\n    // Convert non-html into a text node\n    nodes.push(context.createTextNode(html));\n  } else {\n    // Convert html into DOM nodes\n    tmp = fragment.appendChild(context.createElement('div'));\n    tag = (TAG_NAME_REGEXP.exec(html) || ['', ''])[1].toLowerCase();\n    wrap = wrapMap[tag] || wrapMap._default;\n    tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, '<$1></$2>') + wrap[2];\n\n    // Descend through wrappers to the right content\n    i = wrap[0];\n    while (i--) {\n      tmp = tmp.lastChild;\n    }\n\n    nodes = concat(nodes, tmp.childNodes);\n\n    tmp = fragment.firstChild;\n    tmp.textContent = '';\n  }\n\n  // Remove wrapper from fragment\n  fragment.textContent = '';\n  fragment.innerHTML = ''; // Clear inner HTML\n  forEach(nodes, function(node) {\n    fragment.appendChild(node);\n  });\n\n  return fragment;\n}\n\nfunction jqLiteParseHTML(html, context) {\n  context = context || window.document;\n  var parsed;\n\n  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {\n    return [context.createElement(parsed[1])];\n  }\n\n  if ((parsed = jqLiteBuildFragment(html, context))) {\n    return parsed.childNodes;\n  }\n\n  return [];\n}\n\nfunction jqLiteWrapNode(node, wrapper) {\n  var parent = node.parentNode;\n\n  if (parent) {\n    parent.replaceChild(wrapper, node);\n  }\n\n  wrapper.appendChild(node);\n}\n\n\n// IE9-11 has no method \"contains\" in SVG element and in Node.prototype. Bug #10259.\nvar jqLiteContains = window.Node.prototype.contains || /** @this */ function(arg) {\n  // eslint-disable-next-line no-bitwise\n  return !!(this.compareDocumentPosition(arg) & 16);\n};\n\n/////////////////////////////////////////////\nfunction JQLite(element) {\n  if (element instanceof JQLite) {\n    return element;\n  }\n\n  var argIsString;\n\n  if (isString(element)) {\n    element = trim(element);\n    argIsString = true;\n  }\n  if (!(this instanceof JQLite)) {\n    if (argIsString && element.charAt(0) !== '<') {\n      throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');\n    }\n    return new JQLite(element);\n  }\n\n  if (argIsString) {\n    jqLiteAddNodes(this, jqLiteParseHTML(element));\n  } else if (isFunction(element)) {\n    jqLiteReady(element);\n  } else {\n    jqLiteAddNodes(this, element);\n  }\n}\n\nfunction jqLiteClone(element) {\n  return element.cloneNode(true);\n}\n\nfunction jqLiteDealoc(element, onlyDescendants) {\n  if (!onlyDescendants && jqLiteAcceptsData(element)) jqLite.cleanData([element]);\n\n  if (element.querySelectorAll) {\n    jqLite.cleanData(element.querySelectorAll('*'));\n  }\n}\n\nfunction jqLiteOff(element, type, fn, unsupported) {\n  if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');\n\n  var expandoStore = jqLiteExpandoStore(element);\n  var events = expandoStore && expandoStore.events;\n  var handle = expandoStore && expandoStore.handle;\n\n  if (!handle) return; //no listeners registered\n\n  if (!type) {\n    for (type in events) {\n      if (type !== '$destroy') {\n        element.removeEventListener(type, handle);\n      }\n      delete events[type];\n    }\n  } else {\n\n    var removeHandler = function(type) {\n      var listenerFns = events[type];\n      if (isDefined(fn)) {\n        arrayRemove(listenerFns || [], fn);\n      }\n      if (!(isDefined(fn) && listenerFns && listenerFns.length > 0)) {\n        element.removeEventListener(type, handle);\n        delete events[type];\n      }\n    };\n\n    forEach(type.split(' '), function(type) {\n      removeHandler(type);\n      if (MOUSE_EVENT_MAP[type]) {\n        removeHandler(MOUSE_EVENT_MAP[type]);\n      }\n    });\n  }\n}\n\nfunction jqLiteRemoveData(element, name) {\n  var expandoId = element.ng339;\n  var expandoStore = expandoId && jqCache[expandoId];\n\n  if (expandoStore) {\n    if (name) {\n      delete expandoStore.data[name];\n      return;\n    }\n\n    if (expandoStore.handle) {\n      if (expandoStore.events.$destroy) {\n        expandoStore.handle({}, '$destroy');\n      }\n      jqLiteOff(element);\n    }\n    delete jqCache[expandoId];\n    element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it\n  }\n}\n\n\nfunction jqLiteExpandoStore(element, createIfNecessary) {\n  var expandoId = element.ng339,\n      expandoStore = expandoId && jqCache[expandoId];\n\n  if (createIfNecessary && !expandoStore) {\n    element.ng339 = expandoId = jqNextId();\n    expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};\n  }\n\n  return expandoStore;\n}\n\n\nfunction jqLiteData(element, key, value) {\n  if (jqLiteAcceptsData(element)) {\n    var prop;\n\n    var isSimpleSetter = isDefined(value);\n    var isSimpleGetter = !isSimpleSetter && key && !isObject(key);\n    var massGetter = !key;\n    var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);\n    var data = expandoStore && expandoStore.data;\n\n    if (isSimpleSetter) { // data('key', value)\n      data[kebabToCamel(key)] = value;\n    } else {\n      if (massGetter) {  // data()\n        return data;\n      } else {\n        if (isSimpleGetter) { // data('key')\n          // don't force creation of expandoStore if it doesn't exist yet\n          return data && data[kebabToCamel(key)];\n        } else { // mass-setter: data({key1: val1, key2: val2})\n          for (prop in key) {\n            data[kebabToCamel(prop)] = key[prop];\n          }\n        }\n      }\n    }\n  }\n}\n\nfunction jqLiteHasClass(element, selector) {\n  if (!element.getAttribute) return false;\n  return ((' ' + (element.getAttribute('class') || '') + ' ').replace(/[\\n\\t]/g, ' ').\n      indexOf(' ' + selector + ' ') > -1);\n}\n\nfunction jqLiteRemoveClass(element, cssClasses) {\n  if (cssClasses && element.setAttribute) {\n    forEach(cssClasses.split(' '), function(cssClass) {\n      element.setAttribute('class', trim(\n          (' ' + (element.getAttribute('class') || '') + ' ')\n          .replace(/[\\n\\t]/g, ' ')\n          .replace(' ' + trim(cssClass) + ' ', ' '))\n      );\n    });\n  }\n}\n\nfunction jqLiteAddClass(element, cssClasses) {\n  if (cssClasses && element.setAttribute) {\n    var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')\n                            .replace(/[\\n\\t]/g, ' ');\n\n    forEach(cssClasses.split(' '), function(cssClass) {\n      cssClass = trim(cssClass);\n      if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {\n        existingClasses += cssClass + ' ';\n      }\n    });\n\n    element.setAttribute('class', trim(existingClasses));\n  }\n}\n\n\nfunction jqLiteAddNodes(root, elements) {\n  // THIS CODE IS VERY HOT. Don't make changes without benchmarking.\n\n  if (elements) {\n\n    // if a Node (the most common case)\n    if (elements.nodeType) {\n      root[root.length++] = elements;\n    } else {\n      var length = elements.length;\n\n      // if an Array or NodeList and not a Window\n      if (typeof length === 'number' && elements.window !== elements) {\n        if (length) {\n          for (var i = 0; i < length; i++) {\n            root[root.length++] = elements[i];\n          }\n        }\n      } else {\n        root[root.length++] = elements;\n      }\n    }\n  }\n}\n\n\nfunction jqLiteController(element, name) {\n  return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');\n}\n\nfunction jqLiteInheritedData(element, name, value) {\n  // if element is the document object work with the html element instead\n  // this makes $(document).scope() possible\n  if (element.nodeType === NODE_TYPE_DOCUMENT) {\n    element = element.documentElement;\n  }\n  var names = isArray(name) ? name : [name];\n\n  while (element) {\n    for (var i = 0, ii = names.length; i < ii; i++) {\n      if (isDefined(value = jqLite.data(element, names[i]))) return value;\n    }\n\n    // If dealing with a document fragment node with a host element, and no parent, use the host\n    // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM\n    // to lookup parent controllers.\n    element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);\n  }\n}\n\nfunction jqLiteEmpty(element) {\n  jqLiteDealoc(element, true);\n  while (element.firstChild) {\n    element.removeChild(element.firstChild);\n  }\n}\n\nfunction jqLiteRemove(element, keepData) {\n  if (!keepData) jqLiteDealoc(element);\n  var parent = element.parentNode;\n  if (parent) parent.removeChild(element);\n}\n\n\nfunction jqLiteDocumentLoaded(action, win) {\n  win = win || window;\n  if (win.document.readyState === 'complete') {\n    // Force the action to be run async for consistent behavior\n    // from the action's point of view\n    // i.e. it will definitely not be in a $apply\n    win.setTimeout(action);\n  } else {\n    // No need to unbind this handler as load is only ever called once\n    jqLite(win).on('load', action);\n  }\n}\n\nfunction jqLiteReady(fn) {\n  function trigger() {\n    window.document.removeEventListener('DOMContentLoaded', trigger);\n    window.removeEventListener('load', trigger);\n    fn();\n  }\n\n  // check if document is already loaded\n  if (window.document.readyState === 'complete') {\n    window.setTimeout(fn);\n  } else {\n    // We can not use jqLite since we are not done loading and jQuery could be loaded later.\n\n    // Works for modern browsers and IE9\n    window.document.addEventListener('DOMContentLoaded', trigger);\n\n    // Fallback to window.onload for others\n    window.addEventListener('load', trigger);\n  }\n}\n\n//////////////////////////////////////////\n// Functions which are declared directly.\n//////////////////////////////////////////\nvar JQLitePrototype = JQLite.prototype = {\n  ready: jqLiteReady,\n  toString: function() {\n    var value = [];\n    forEach(this, function(e) { value.push('' + e);});\n    return '[' + value.join(', ') + ']';\n  },\n\n  eq: function(index) {\n      return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);\n  },\n\n  length: 0,\n  push: push,\n  sort: [].sort,\n  splice: [].splice\n};\n\n//////////////////////////////////////////\n// Functions iterating getter/setters.\n// these functions return self on setter and\n// value on get.\n//////////////////////////////////////////\nvar BOOLEAN_ATTR = {};\nforEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {\n  BOOLEAN_ATTR[lowercase(value)] = value;\n});\nvar BOOLEAN_ELEMENTS = {};\nforEach('input,select,option,textarea,button,form,details'.split(','), function(value) {\n  BOOLEAN_ELEMENTS[value] = true;\n});\nvar ALIASED_ATTR = {\n  'ngMinlength': 'minlength',\n  'ngMaxlength': 'maxlength',\n  'ngMin': 'min',\n  'ngMax': 'max',\n  'ngPattern': 'pattern',\n  'ngStep': 'step'\n};\n\nfunction getBooleanAttrName(element, name) {\n  // check dom last since we will most likely fail on name\n  var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];\n\n  // booleanAttr is here twice to minimize DOM access\n  return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;\n}\n\nfunction getAliasedAttrName(name) {\n  return ALIASED_ATTR[name];\n}\n\nforEach({\n  data: jqLiteData,\n  removeData: jqLiteRemoveData,\n  hasData: jqLiteHasData,\n  cleanData: function jqLiteCleanData(nodes) {\n    for (var i = 0, ii = nodes.length; i < ii; i++) {\n      jqLiteRemoveData(nodes[i]);\n    }\n  }\n}, function(fn, name) {\n  JQLite[name] = fn;\n});\n\nforEach({\n  data: jqLiteData,\n  inheritedData: jqLiteInheritedData,\n\n  scope: function(element) {\n    // Can't use jqLiteData here directly so we stay compatible with jQuery!\n    return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);\n  },\n\n  isolateScope: function(element) {\n    // Can't use jqLiteData here directly so we stay compatible with jQuery!\n    return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');\n  },\n\n  controller: jqLiteController,\n\n  injector: function(element) {\n    return jqLiteInheritedData(element, '$injector');\n  },\n\n  removeAttr: function(element, name) {\n    element.removeAttribute(name);\n  },\n\n  hasClass: jqLiteHasClass,\n\n  css: function(element, name, value) {\n    name = cssKebabToCamel(name);\n\n    if (isDefined(value)) {\n      element.style[name] = value;\n    } else {\n      return element.style[name];\n    }\n  },\n\n  attr: function(element, name, value) {\n    var ret;\n    var nodeType = element.nodeType;\n    if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT ||\n      !element.getAttribute) {\n      return;\n    }\n\n    var lowercasedName = lowercase(name);\n    var isBooleanAttr = BOOLEAN_ATTR[lowercasedName];\n\n    if (isDefined(value)) {\n      // setter\n\n      if (value === null || (value === false && isBooleanAttr)) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, isBooleanAttr ? lowercasedName : value);\n      }\n    } else {\n      // getter\n\n      ret = element.getAttribute(name);\n\n      if (isBooleanAttr && ret !== null) {\n        ret = lowercasedName;\n      }\n      // Normalize non-existing attributes to undefined (as jQuery).\n      return ret === null ? undefined : ret;\n    }\n  },\n\n  prop: function(element, name, value) {\n    if (isDefined(value)) {\n      element[name] = value;\n    } else {\n      return element[name];\n    }\n  },\n\n  text: (function() {\n    getText.$dv = '';\n    return getText;\n\n    function getText(element, value) {\n      if (isUndefined(value)) {\n        var nodeType = element.nodeType;\n        return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';\n      }\n      element.textContent = value;\n    }\n  })(),\n\n  val: function(element, value) {\n    if (isUndefined(value)) {\n      if (element.multiple && nodeName_(element) === 'select') {\n        var result = [];\n        forEach(element.options, function(option) {\n          if (option.selected) {\n            result.push(option.value || option.text);\n          }\n        });\n        return result;\n      }\n      return element.value;\n    }\n    element.value = value;\n  },\n\n  html: function(element, value) {\n    if (isUndefined(value)) {\n      return element.innerHTML;\n    }\n    jqLiteDealoc(element, true);\n    element.innerHTML = value;\n  },\n\n  empty: jqLiteEmpty\n}, function(fn, name) {\n  /**\n   * Properties: writes return selection, reads return first value\n   */\n  JQLite.prototype[name] = function(arg1, arg2) {\n    var i, key;\n    var nodeCount = this.length;\n\n    // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it\n    // in a way that survives minification.\n    // jqLiteEmpty takes no arguments but is a setter.\n    if (fn !== jqLiteEmpty &&\n        (isUndefined((fn.length === 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2))) {\n      if (isObject(arg1)) {\n\n        // we are a write, but the object properties are the key/values\n        for (i = 0; i < nodeCount; i++) {\n          if (fn === jqLiteData) {\n            // data() takes the whole object in jQuery\n            fn(this[i], arg1);\n          } else {\n            for (key in arg1) {\n              fn(this[i], key, arg1[key]);\n            }\n          }\n        }\n        // return self for chaining\n        return this;\n      } else {\n        // we are a read, so read the first child.\n        // TODO: do we still need this?\n        var value = fn.$dv;\n        // Only if we have $dv do we iterate over all, otherwise it is just the first element.\n        var jj = (isUndefined(value)) ? Math.min(nodeCount, 1) : nodeCount;\n        for (var j = 0; j < jj; j++) {\n          var nodeValue = fn(this[j], arg1, arg2);\n          value = value ? value + nodeValue : nodeValue;\n        }\n        return value;\n      }\n    } else {\n      // we are a write, so apply to all children\n      for (i = 0; i < nodeCount; i++) {\n        fn(this[i], arg1, arg2);\n      }\n      // return self for chaining\n      return this;\n    }\n  };\n});\n\nfunction createEventHandler(element, events) {\n  var eventHandler = function(event, type) {\n    // jQuery specific api\n    event.isDefaultPrevented = function() {\n      return event.defaultPrevented;\n    };\n\n    var eventFns = events[type || event.type];\n    var eventFnsLength = eventFns ? eventFns.length : 0;\n\n    if (!eventFnsLength) return;\n\n    if (isUndefined(event.immediatePropagationStopped)) {\n      var originalStopImmediatePropagation = event.stopImmediatePropagation;\n      event.stopImmediatePropagation = function() {\n        event.immediatePropagationStopped = true;\n\n        if (event.stopPropagation) {\n          event.stopPropagation();\n        }\n\n        if (originalStopImmediatePropagation) {\n          originalStopImmediatePropagation.call(event);\n        }\n      };\n    }\n\n    event.isImmediatePropagationStopped = function() {\n      return event.immediatePropagationStopped === true;\n    };\n\n    // Some events have special handlers that wrap the real handler\n    var handlerWrapper = eventFns.specialHandlerWrapper || defaultHandlerWrapper;\n\n    // Copy event handlers in case event handlers array is modified during execution.\n    if ((eventFnsLength > 1)) {\n      eventFns = shallowCopy(eventFns);\n    }\n\n    for (var i = 0; i < eventFnsLength; i++) {\n      if (!event.isImmediatePropagationStopped()) {\n        handlerWrapper(element, event, eventFns[i]);\n      }\n    }\n  };\n\n  // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all\n  //       events on `element`\n  eventHandler.elem = element;\n  return eventHandler;\n}\n\nfunction defaultHandlerWrapper(element, event, handler) {\n  handler.call(element, event);\n}\n\nfunction specialMouseHandlerWrapper(target, event, handler) {\n  // Refer to jQuery's implementation of mouseenter & mouseleave\n  // Read about mouseenter and mouseleave:\n  // http://www.quirksmode.org/js/events_mouse.html#link8\n  var related = event.relatedTarget;\n  // For mousenter/leave call the handler if related is outside the target.\n  // NB: No relatedTarget if the mouse left/entered the browser window\n  if (!related || (related !== target && !jqLiteContains.call(target, related))) {\n    handler.call(target, event);\n  }\n}\n\n//////////////////////////////////////////\n// Functions iterating traversal.\n// These functions chain results into a single\n// selector.\n//////////////////////////////////////////\nforEach({\n  removeData: jqLiteRemoveData,\n\n  on: function jqLiteOn(element, type, fn, unsupported) {\n    if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');\n\n    // Do not add event handlers to non-elements because they will not be cleaned up.\n    if (!jqLiteAcceptsData(element)) {\n      return;\n    }\n\n    var expandoStore = jqLiteExpandoStore(element, true);\n    var events = expandoStore.events;\n    var handle = expandoStore.handle;\n\n    if (!handle) {\n      handle = expandoStore.handle = createEventHandler(element, events);\n    }\n\n    // http://jsperf.com/string-indexof-vs-split\n    var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];\n    var i = types.length;\n\n    var addHandler = function(type, specialHandlerWrapper, noEventListener) {\n      var eventFns = events[type];\n\n      if (!eventFns) {\n        eventFns = events[type] = [];\n        eventFns.specialHandlerWrapper = specialHandlerWrapper;\n        if (type !== '$destroy' && !noEventListener) {\n          element.addEventListener(type, handle);\n        }\n      }\n\n      eventFns.push(fn);\n    };\n\n    while (i--) {\n      type = types[i];\n      if (MOUSE_EVENT_MAP[type]) {\n        addHandler(MOUSE_EVENT_MAP[type], specialMouseHandlerWrapper);\n        addHandler(type, undefined, true);\n      } else {\n        addHandler(type);\n      }\n    }\n  },\n\n  off: jqLiteOff,\n\n  one: function(element, type, fn) {\n    element = jqLite(element);\n\n    //add the listener twice so that when it is called\n    //you can remove the original function and still be\n    //able to call element.off(ev, fn) normally\n    element.on(type, function onFn() {\n      element.off(type, fn);\n      element.off(type, onFn);\n    });\n    element.on(type, fn);\n  },\n\n  replaceWith: function(element, replaceNode) {\n    var index, parent = element.parentNode;\n    jqLiteDealoc(element);\n    forEach(new JQLite(replaceNode), function(node) {\n      if (index) {\n        parent.insertBefore(node, index.nextSibling);\n      } else {\n        parent.replaceChild(node, element);\n      }\n      index = node;\n    });\n  },\n\n  children: function(element) {\n    var children = [];\n    forEach(element.childNodes, function(element) {\n      if (element.nodeType === NODE_TYPE_ELEMENT) {\n        children.push(element);\n      }\n    });\n    return children;\n  },\n\n  contents: function(element) {\n    return element.contentDocument || element.childNodes || [];\n  },\n\n  append: function(element, node) {\n    var nodeType = element.nodeType;\n    if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;\n\n    node = new JQLite(node);\n\n    for (var i = 0, ii = node.length; i < ii; i++) {\n      var child = node[i];\n      element.appendChild(child);\n    }\n  },\n\n  prepend: function(element, node) {\n    if (element.nodeType === NODE_TYPE_ELEMENT) {\n      var index = element.firstChild;\n      forEach(new JQLite(node), function(child) {\n        element.insertBefore(child, index);\n      });\n    }\n  },\n\n  wrap: function(element, wrapNode) {\n    jqLiteWrapNode(element, jqLite(wrapNode).eq(0).clone()[0]);\n  },\n\n  remove: jqLiteRemove,\n\n  detach: function(element) {\n    jqLiteRemove(element, true);\n  },\n\n  after: function(element, newElement) {\n    var index = element, parent = element.parentNode;\n\n    if (parent) {\n      newElement = new JQLite(newElement);\n\n      for (var i = 0, ii = newElement.length; i < ii; i++) {\n        var node = newElement[i];\n        parent.insertBefore(node, index.nextSibling);\n        index = node;\n      }\n    }\n  },\n\n  addClass: jqLiteAddClass,\n  removeClass: jqLiteRemoveClass,\n\n  toggleClass: function(element, selector, condition) {\n    if (selector) {\n      forEach(selector.split(' '), function(className) {\n        var classCondition = condition;\n        if (isUndefined(classCondition)) {\n          classCondition = !jqLiteHasClass(element, className);\n        }\n        (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);\n      });\n    }\n  },\n\n  parent: function(element) {\n    var parent = element.parentNode;\n    return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;\n  },\n\n  next: function(element) {\n    return element.nextElementSibling;\n  },\n\n  find: function(element, selector) {\n    if (element.getElementsByTagName) {\n      return element.getElementsByTagName(selector);\n    } else {\n      return [];\n    }\n  },\n\n  clone: jqLiteClone,\n\n  triggerHandler: function(element, event, extraParameters) {\n\n    var dummyEvent, eventFnsCopy, handlerArgs;\n    var eventName = event.type || event;\n    var expandoStore = jqLiteExpandoStore(element);\n    var events = expandoStore && expandoStore.events;\n    var eventFns = events && events[eventName];\n\n    if (eventFns) {\n      // Create a dummy event to pass to the handlers\n      dummyEvent = {\n        preventDefault: function() { this.defaultPrevented = true; },\n        isDefaultPrevented: function() { return this.defaultPrevented === true; },\n        stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },\n        isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },\n        stopPropagation: noop,\n        type: eventName,\n        target: element\n      };\n\n      // If a custom event was provided then extend our dummy event with it\n      if (event.type) {\n        dummyEvent = extend(dummyEvent, event);\n      }\n\n      // Copy event handlers in case event handlers array is modified during execution.\n      eventFnsCopy = shallowCopy(eventFns);\n      handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];\n\n      forEach(eventFnsCopy, function(fn) {\n        if (!dummyEvent.isImmediatePropagationStopped()) {\n          fn.apply(element, handlerArgs);\n        }\n      });\n    }\n  }\n}, function(fn, name) {\n  /**\n   * chaining functions\n   */\n  JQLite.prototype[name] = function(arg1, arg2, arg3) {\n    var value;\n\n    for (var i = 0, ii = this.length; i < ii; i++) {\n      if (isUndefined(value)) {\n        value = fn(this[i], arg1, arg2, arg3);\n        if (isDefined(value)) {\n          // any function which returns a value needs to be wrapped\n          value = jqLite(value);\n        }\n      } else {\n        jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));\n      }\n    }\n    return isDefined(value) ? value : this;\n  };\n});\n\n// bind legacy bind/unbind to on/off\nJQLite.prototype.bind = JQLite.prototype.on;\nJQLite.prototype.unbind = JQLite.prototype.off;\n\n\n// Provider for private $$jqLite service\n/** @this */\nfunction $$jqLiteProvider() {\n  this.$get = function $$jqLite() {\n    return extend(JQLite, {\n      hasClass: function(node, classes) {\n        if (node.attr) node = node[0];\n        return jqLiteHasClass(node, classes);\n      },\n      addClass: function(node, classes) {\n        if (node.attr) node = node[0];\n        return jqLiteAddClass(node, classes);\n      },\n      removeClass: function(node, classes) {\n        if (node.attr) node = node[0];\n        return jqLiteRemoveClass(node, classes);\n      }\n    });\n  };\n}\n\n/**\n * Computes a hash of an 'obj'.\n * Hash of a:\n *  string is string\n *  number is number as string\n *  object is either result of calling $$hashKey function on the object or uniquely generated id,\n *         that is also assigned to the $$hashKey property of the object.\n *\n * @param obj\n * @returns {string} hash string such that the same input will have the same hash string.\n *         The resulting string key is in 'type:hashKey' format.\n */\nfunction hashKey(obj, nextUidFn) {\n  var key = obj && obj.$$hashKey;\n\n  if (key) {\n    if (typeof key === 'function') {\n      key = obj.$$hashKey();\n    }\n    return key;\n  }\n\n  var objType = typeof obj;\n  if (objType === 'function' || (objType === 'object' && obj !== null)) {\n    key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();\n  } else {\n    key = objType + ':' + obj;\n  }\n\n  return key;\n}\n\n// A minimal ES2015 Map implementation.\n// Should be bug/feature equivalent to the native implementations of supported browsers\n// (for the features required in Angular).\n// See https://kangax.github.io/compat-table/es6/#test-Map\nvar nanKey = Object.create(null);\nfunction NgMapShim() {\n  this._keys = [];\n  this._values = [];\n  this._lastKey = NaN;\n  this._lastIndex = -1;\n}\nNgMapShim.prototype = {\n  _idx: function(key) {\n    if (key === this._lastKey) {\n      return this._lastIndex;\n    }\n    this._lastKey = key;\n    this._lastIndex = this._keys.indexOf(key);\n    return this._lastIndex;\n  },\n  _transformKey: function(key) {\n    return isNumberNaN(key) ? nanKey : key;\n  },\n  get: function(key) {\n    key = this._transformKey(key);\n    var idx = this._idx(key);\n    if (idx !== -1) {\n      return this._values[idx];\n    }\n  },\n  set: function(key, value) {\n    key = this._transformKey(key);\n    var idx = this._idx(key);\n    if (idx === -1) {\n      idx = this._lastIndex = this._keys.length;\n    }\n    this._keys[idx] = key;\n    this._values[idx] = value;\n\n    // Support: IE11\n    // Do not `return this` to simulate the partial IE11 implementation\n  },\n  delete: function(key) {\n    key = this._transformKey(key);\n    var idx = this._idx(key);\n    if (idx === -1) {\n      return false;\n    }\n    this._keys.splice(idx, 1);\n    this._values.splice(idx, 1);\n    this._lastKey = NaN;\n    this._lastIndex = -1;\n    return true;\n  }\n};\n\n// For now, always use `NgMapShim`, even if `window.Map` is available. Some native implementations\n// are still buggy (often in subtle ways) and can cause hard-to-debug failures. When native `Map`\n// implementations get more stable, we can reconsider switching to `window.Map` (when available).\nvar NgMap = NgMapShim;\n\nvar $$MapProvider = [/** @this */function() {\n  this.$get = [function() {\n    return NgMap;\n  }];\n}];\n\n/**\n * @ngdoc function\n * @module ng\n * @name angular.injector\n * @kind function\n *\n * @description\n * Creates an injector object that can be used for retrieving services as well as for\n * dependency injection (see {@link guide/di dependency injection}).\n *\n * @param {Array.<string|Function>} modules A list of module functions or their aliases. See\n *     {@link angular.module}. The `ng` module must be explicitly added.\n * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which\n *     disallows argument name annotation inference.\n * @returns {injector} Injector object. See {@link auto.$injector $injector}.\n *\n * @example\n * Typical usage\n * ```js\n *   // create an injector\n *   var $injector = angular.injector(['ng']);\n *\n *   // use the injector to kick off your application\n *   // use the type inference to auto inject arguments, or use implicit injection\n *   $injector.invoke(function($rootScope, $compile, $document) {\n *     $compile($document)($rootScope);\n *     $rootScope.$digest();\n *   });\n * ```\n *\n * Sometimes you want to get access to the injector of a currently running Angular app\n * from outside Angular. Perhaps, you want to inject and compile some markup after the\n * application has been bootstrapped. You can do this using the extra `injector()` added\n * to JQuery/jqLite elements. See {@link angular.element}.\n *\n * *This is fairly rare but could be the case if a third party library is injecting the\n * markup.*\n *\n * In the following example a new block of HTML containing a `ng-controller`\n * directive is added to the end of the document body by JQuery. We then compile and link\n * it into the current AngularJS scope.\n *\n * ```js\n * var $div = $('<div ng-controller=\"MyCtrl\">{{content.label}}</div>');\n * $(document.body).append($div);\n *\n * angular.element(document).injector().invoke(function($compile) {\n *   var scope = angular.element($div).scope();\n *   $compile($div)(scope);\n * });\n * ```\n */\n\n\n/**\n * @ngdoc module\n * @name auto\n * @installation\n * @description\n *\n * Implicit module which gets automatically added to each {@link auto.$injector $injector}.\n */\n\nvar ARROW_ARG = /^([^(]+?)=>/;\nvar FN_ARGS = /^[^(]*\\(\\s*([^)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar $injectorMinErr = minErr('$injector');\n\nfunction stringifyFn(fn) {\n  return Function.prototype.toString.call(fn);\n}\n\nfunction extractArgs(fn) {\n  var fnText = stringifyFn(fn).replace(STRIP_COMMENTS, ''),\n      args = fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);\n  return args;\n}\n\nfunction anonFn(fn) {\n  // For anonymous functions, showing at the very least the function signature can help in\n  // debugging.\n  var args = extractArgs(fn);\n  if (args) {\n    return 'function(' + (args[1] || '').replace(/[\\s\\r\\n]+/, ' ') + ')';\n  }\n  return 'fn';\n}\n\nfunction annotate(fn, strictDi, name) {\n  var $inject,\n      argDecl,\n      last;\n\n  if (typeof fn === 'function') {\n    if (!($inject = fn.$inject)) {\n      $inject = [];\n      if (fn.length) {\n        if (strictDi) {\n          if (!isString(name) || !name) {\n            name = fn.name || anonFn(fn);\n          }\n          throw $injectorMinErr('strictdi',\n            '{0} is not using explicit annotation and cannot be invoked in strict mode', name);\n        }\n        argDecl = extractArgs(fn);\n        forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {\n          arg.replace(FN_ARG, function(all, underscore, name) {\n            $inject.push(name);\n          });\n        });\n      }\n      fn.$inject = $inject;\n    }\n  } else if (isArray(fn)) {\n    last = fn.length - 1;\n    assertArgFn(fn[last], 'fn');\n    $inject = fn.slice(0, last);\n  } else {\n    assertArgFn(fn, 'fn', true);\n  }\n  return $inject;\n}\n\n///////////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $injector\n *\n * @description\n *\n * `$injector` is used to retrieve object instances as defined by\n * {@link auto.$provide provider}, instantiate types, invoke methods,\n * and load modules.\n *\n * The following always holds true:\n *\n * ```js\n *   var $injector = angular.injector();\n *   expect($injector.get('$injector')).toBe($injector);\n *   expect($injector.invoke(function($injector) {\n *     return $injector;\n *   })).toBe($injector);\n * ```\n *\n * # Injection Function Annotation\n *\n * JavaScript does not have annotations, and annotations are needed for dependency injection. The\n * following are all valid ways of annotating function with injection arguments and are equivalent.\n *\n * ```js\n *   // inferred (only works if code not minified/obfuscated)\n *   $injector.invoke(function(serviceA){});\n *\n *   // annotated\n *   function explicit(serviceA) {};\n *   explicit.$inject = ['serviceA'];\n *   $injector.invoke(explicit);\n *\n *   // inline\n *   $injector.invoke(['serviceA', function(serviceA){}]);\n * ```\n *\n * ## Inference\n *\n * In JavaScript calling `toString()` on a function returns the function definition. The definition\n * can then be parsed and the function arguments can be extracted. This method of discovering\n * annotations is disallowed when the injector is in strict mode.\n * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the\n * argument names.\n *\n * ## `$inject` Annotation\n * By adding an `$inject` property onto a function the injection parameters can be specified.\n *\n * ## Inline\n * As an array of injection names, where the last item in the array is the function to call.\n */\n\n/**\n * @ngdoc property\n * @name $injector#modules\n * @type {Object}\n * @description\n * A hash containing all the modules that have been loaded into the\n * $injector.\n *\n * You can use this property to find out information about a module via the\n * {@link angular.Module#info `myModule.info(...)`} method.\n *\n * For example:\n *\n * ```\n * var info = $injector.modules['ngAnimate'].info();\n * ```\n *\n * **Do not use this property to attempt to modify the modules after the application\n * has been bootstrapped.**\n */\n\n\n/**\n * @ngdoc method\n * @name $injector#get\n *\n * @description\n * Return an instance of the service.\n *\n * @param {string} name The name of the instance to retrieve.\n * @param {string=} caller An optional string to provide the origin of the function call for error messages.\n * @return {*} The instance.\n */\n\n/**\n * @ngdoc method\n * @name $injector#invoke\n *\n * @description\n * Invoke the method and supply the method arguments from the `$injector`.\n *\n * @param {Function|Array.<string|Function>} fn The injectable function to invoke. Function parameters are\n *   injected according to the {@link guide/di $inject Annotation} rules.\n * @param {Object=} self The `this` for the invoked method.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n *                         object first, before the `$injector` is consulted.\n * @returns {*} the value returned by the invoked `fn` function.\n */\n\n/**\n * @ngdoc method\n * @name $injector#has\n *\n * @description\n * Allows the user to query if the particular service exists.\n *\n * @param {string} name Name of the service to query.\n * @returns {boolean} `true` if injector has given service.\n */\n\n/**\n * @ngdoc method\n * @name $injector#instantiate\n * @description\n * Create a new instance of JS type. The method takes a constructor function, invokes the new\n * operator, and supplies all of the arguments to the constructor function as specified by the\n * constructor annotation.\n *\n * @param {Function} Type Annotated constructor function.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {Object} new instance of `Type`.\n */\n\n/**\n * @ngdoc method\n * @name $injector#annotate\n *\n * @description\n * Returns an array of service names which the function is requesting for injection. This API is\n * used by the injector to determine which services need to be injected into the function when the\n * function is invoked. There are three ways in which the function can be annotated with the needed\n * dependencies.\n *\n * # Argument names\n *\n * The simplest form is to extract the dependencies from the arguments of the function. This is done\n * by converting the function into a string using `toString()` method and extracting the argument\n * names.\n * ```js\n *   // Given\n *   function MyController($scope, $route) {\n *     // ...\n *   }\n *\n *   // Then\n *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * You can disallow this method by using strict injection mode.\n *\n * This method does not work with code minification / obfuscation. For this reason the following\n * annotation strategies are supported.\n *\n * # The `$inject` property\n *\n * If a function has an `$inject` property and its value is an array of strings, then the strings\n * represent names of services to be injected into the function.\n * ```js\n *   // Given\n *   var MyController = function(obfuscatedScope, obfuscatedRoute) {\n *     // ...\n *   }\n *   // Define function dependencies\n *   MyController['$inject'] = ['$scope', '$route'];\n *\n *   // Then\n *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * # The array notation\n *\n * It is often desirable to inline Injected functions and that's when setting the `$inject` property\n * is very inconvenient. In these situations using the array notation to specify the dependencies in\n * a way that survives minification is a better choice:\n *\n * ```js\n *   // We wish to write this (not minification / obfuscation safe)\n *   injector.invoke(function($compile, $rootScope) {\n *     // ...\n *   });\n *\n *   // We are forced to write break inlining\n *   var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {\n *     // ...\n *   };\n *   tmpFn.$inject = ['$compile', '$rootScope'];\n *   injector.invoke(tmpFn);\n *\n *   // To better support inline function the inline annotation is supported\n *   injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {\n *     // ...\n *   }]);\n *\n *   // Therefore\n *   expect(injector.annotate(\n *      ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])\n *    ).toEqual(['$compile', '$rootScope']);\n * ```\n *\n * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to\n * be retrieved as described above.\n *\n * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.\n *\n * @returns {Array.<string>} The names of the services which the function requires.\n */\n\n\n\n/**\n * @ngdoc service\n * @name $provide\n *\n * @description\n *\n * The {@link auto.$provide $provide} service has a number of methods for registering components\n * with the {@link auto.$injector $injector}. Many of these functions are also exposed on\n * {@link angular.Module}.\n *\n * An Angular **service** is a singleton object created by a **service factory**.  These **service\n * factories** are functions which, in turn, are created by a **service provider**.\n * The **service providers** are constructor functions. When instantiated they must contain a\n * property called `$get`, which holds the **service factory** function.\n *\n * When you request a service, the {@link auto.$injector $injector} is responsible for finding the\n * correct **service provider**, instantiating it and then calling its `$get` **service factory**\n * function to get the instance of the **service**.\n *\n * Often services have no configuration options and there is no need to add methods to the service\n * provider.  The provider will be no more than a constructor function with a `$get` property. For\n * these cases the {@link auto.$provide $provide} service has additional helper methods to register\n * services without specifying a provider.\n *\n * * {@link auto.$provide#provider provider(name, provider)} - registers a **service provider** with the\n *     {@link auto.$injector $injector}\n * * {@link auto.$provide#constant constant(name, obj)} - registers a value/object that can be accessed by\n *     providers and services.\n * * {@link auto.$provide#value value(name, obj)} - registers a value/object that can only be accessed by\n *     services, not providers.\n * * {@link auto.$provide#factory factory(name, fn)} - registers a service **factory function**\n *     that will be wrapped in a **service provider** object, whose `$get` property will contain the\n *     given factory function.\n * * {@link auto.$provide#service service(name, Fn)} - registers a **constructor function**\n *     that will be wrapped in a **service provider** object, whose `$get` property will instantiate\n *      a new object using the given constructor function.\n * * {@link auto.$provide#decorator decorator(name, decorFn)} - registers a **decorator function** that\n *      will be able to modify or replace the implementation of another service.\n *\n * See the individual methods for more information and examples.\n */\n\n/**\n * @ngdoc method\n * @name $provide#provider\n * @description\n *\n * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions\n * are constructor functions, whose instances are responsible for \"providing\" a factory for a\n * service.\n *\n * Service provider names start with the name of the service they provide followed by `Provider`.\n * For example, the {@link ng.$log $log} service has a provider called\n * {@link ng.$logProvider $logProvider}.\n *\n * Service provider objects can have additional methods which allow configuration of the provider\n * and its service. Importantly, you can configure what kind of service is created by the `$get`\n * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a\n * method {@link ng.$logProvider#debugEnabled debugEnabled}\n * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the\n * console or not.\n *\n * @param {string} name The name of the instance. NOTE: the provider will be available under `name +\n                        'Provider'` key.\n * @param {(Object|function())} provider If the provider is:\n *\n *   - `Object`: then it should have a `$get` method. The `$get` method will be invoked using\n *     {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.\n *   - `Constructor`: a new instance of the provider will be created using\n *     {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.\n *\n * @returns {Object} registered provider instance\n\n * @example\n *\n * The following example shows how to create a simple event tracking service and register it using\n * {@link auto.$provide#provider $provide.provider()}.\n *\n * ```js\n *  // Define the eventTracker provider\n *  function EventTrackerProvider() {\n *    var trackingUrl = '/track';\n *\n *    // A provider method for configuring where the tracked events should been saved\n *    this.setTrackingUrl = function(url) {\n *      trackingUrl = url;\n *    };\n *\n *    // The service factory function\n *    this.$get = ['$http', function($http) {\n *      var trackedEvents = {};\n *      return {\n *        // Call this to track an event\n *        event: function(event) {\n *          var count = trackedEvents[event] || 0;\n *          count += 1;\n *          trackedEvents[event] = count;\n *          return count;\n *        },\n *        // Call this to save the tracked events to the trackingUrl\n *        save: function() {\n *          $http.post(trackingUrl, trackedEvents);\n *        }\n *      };\n *    }];\n *  }\n *\n *  describe('eventTracker', function() {\n *    var postSpy;\n *\n *    beforeEach(module(function($provide) {\n *      // Register the eventTracker provider\n *      $provide.provider('eventTracker', EventTrackerProvider);\n *    }));\n *\n *    beforeEach(module(function(eventTrackerProvider) {\n *      // Configure eventTracker provider\n *      eventTrackerProvider.setTrackingUrl('/custom-track');\n *    }));\n *\n *    it('tracks events', inject(function(eventTracker) {\n *      expect(eventTracker.event('login')).toEqual(1);\n *      expect(eventTracker.event('login')).toEqual(2);\n *    }));\n *\n *    it('saves to the tracking url', inject(function(eventTracker, $http) {\n *      postSpy = spyOn($http, 'post');\n *      eventTracker.event('login');\n *      eventTracker.save();\n *      expect(postSpy).toHaveBeenCalled();\n *      expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');\n *      expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');\n *      expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });\n *    }));\n *  });\n * ```\n */\n\n/**\n * @ngdoc method\n * @name $provide#factory\n * @description\n *\n * Register a **service factory**, which will be called to return the service instance.\n * This is short for registering a service where its provider consists of only a `$get` property,\n * which is the given service factory function.\n * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to\n * configure your service in a provider.\n *\n * @param {string} name The name of the instance.\n * @param {Function|Array.<string|Function>} $getFn The injectable $getFn for the instance creation.\n *                      Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service\n * ```js\n *   $provide.factory('ping', ['$http', function($http) {\n *     return function ping() {\n *       return $http.send('/ping');\n *     };\n *   }]);\n * ```\n * You would then inject and use this service like this:\n * ```js\n *   someModule.controller('Ctrl', ['ping', function(ping) {\n *     ping();\n *   }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#service\n * @description\n *\n * Register a **service constructor**, which will be invoked with `new` to create the service\n * instance.\n * This is short for registering a service where its provider's `$get` property is a factory\n * function that returns an instance instantiated by the injector from the service constructor\n * function.\n *\n * Internally it looks a bit like this:\n *\n * ```\n * {\n *   $get: function() {\n *     return $injector.instantiate(constructor);\n *   }\n * }\n * ```\n *\n *\n * You should use {@link auto.$provide#service $provide.service(class)} if you define your service\n * as a type/class.\n *\n * @param {string} name The name of the instance.\n * @param {Function|Array.<string|Function>} constructor An injectable class (constructor function)\n *     that will be instantiated.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service using\n * {@link auto.$provide#service $provide.service(class)}.\n * ```js\n *   var Ping = function($http) {\n *     this.$http = $http;\n *   };\n *\n *   Ping.$inject = ['$http'];\n *\n *   Ping.prototype.send = function() {\n *     return this.$http.get('/ping');\n *   };\n *   $provide.service('ping', Ping);\n * ```\n * You would then inject and use this service like this:\n * ```js\n *   someModule.controller('Ctrl', ['ping', function(ping) {\n *     ping.send();\n *   }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#value\n * @description\n *\n * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a\n * number, an array, an object or a function. This is short for registering a service where its\n * provider's `$get` property is a factory function that takes no arguments and returns the **value\n * service**. That also means it is not possible to inject other services into a value service.\n *\n * Value services are similar to constant services, except that they cannot be injected into a\n * module configuration function (see {@link angular.Module#config}) but they can be overridden by\n * an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the instance.\n * @param {*} value The value.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here are some examples of creating value services.\n * ```js\n *   $provide.value('ADMIN_USER', 'admin');\n *\n *   $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });\n *\n *   $provide.value('halfOf', function(value) {\n *     return value / 2;\n *   });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#constant\n * @description\n *\n * Register a **constant service** with the {@link auto.$injector $injector}, such as a string,\n * a number, an array, an object or a function. Like the {@link auto.$provide#value value}, it is not\n * possible to inject other services into a constant.\n *\n * But unlike {@link auto.$provide#value value}, a constant can be\n * injected into a module configuration function (see {@link angular.Module#config}) and it cannot\n * be overridden by an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the constant.\n * @param {*} value The constant value.\n * @returns {Object} registered instance\n *\n * @example\n * Here a some examples of creating constants:\n * ```js\n *   $provide.constant('SHARD_HEIGHT', 306);\n *\n *   $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);\n *\n *   $provide.constant('double', function(value) {\n *     return value * 2;\n *   });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#decorator\n * @description\n *\n * Register a **decorator function** with the {@link auto.$injector $injector}. A decorator function\n * intercepts the creation of a service, allowing it to override or modify the behavior of the\n * service. The return value of the decorator function may be the original service, or a new service\n * that replaces (or wraps and delegates to) the original service.\n *\n * You can find out more about using decorators in the {@link guide/decorators} guide.\n *\n * @param {string} name The name of the service to decorate.\n * @param {Function|Array.<string|Function>} decorator This function will be invoked when the service needs to be\n *    provided and should return the decorated service instance. The function is called using\n *    the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.\n *    Local injection arguments:\n *\n *    * `$delegate` - The original service instance, which can be replaced, monkey patched, configured,\n *      decorated or delegated to.\n *\n * @example\n * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting\n * calls to {@link ng.$log#error $log.warn()}.\n * ```js\n *   $provide.decorator('$log', ['$delegate', function($delegate) {\n *     $delegate.warn = $delegate.error;\n *     return $delegate;\n *   }]);\n * ```\n */\n\n\nfunction createInjector(modulesToLoad, strictDi) {\n  strictDi = (strictDi === true);\n  var INSTANTIATING = {},\n      providerSuffix = 'Provider',\n      path = [],\n      loadedModules = new NgMap(),\n      providerCache = {\n        $provide: {\n            provider: supportObject(provider),\n            factory: supportObject(factory),\n            service: supportObject(service),\n            value: supportObject(value),\n            constant: supportObject(constant),\n            decorator: decorator\n          }\n      },\n      providerInjector = (providerCache.$injector =\n          createInternalInjector(providerCache, function(serviceName, caller) {\n            if (angular.isString(caller)) {\n              path.push(caller);\n            }\n            throw $injectorMinErr('unpr', 'Unknown provider: {0}', path.join(' <- '));\n          })),\n      instanceCache = {},\n      protoInstanceInjector =\n          createInternalInjector(instanceCache, function(serviceName, caller) {\n            var provider = providerInjector.get(serviceName + providerSuffix, caller);\n            return instanceInjector.invoke(\n                provider.$get, provider, undefined, serviceName);\n          }),\n      instanceInjector = protoInstanceInjector;\n\n  providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) };\n  instanceInjector.modules = providerInjector.modules = createMap();\n  var runBlocks = loadModules(modulesToLoad);\n  instanceInjector = protoInstanceInjector.get('$injector');\n  instanceInjector.strictDi = strictDi;\n  forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); });\n\n  return instanceInjector;\n\n  ////////////////////////////////////\n  // $provider\n  ////////////////////////////////////\n\n  function supportObject(delegate) {\n    return function(key, value) {\n      if (isObject(key)) {\n        forEach(key, reverseParams(delegate));\n      } else {\n        return delegate(key, value);\n      }\n    };\n  }\n\n  function provider(name, provider_) {\n    assertNotHasOwnProperty(name, 'service');\n    if (isFunction(provider_) || isArray(provider_)) {\n      provider_ = providerInjector.instantiate(provider_);\n    }\n    if (!provider_.$get) {\n      throw $injectorMinErr('pget', 'Provider \\'{0}\\' must define $get factory method.', name);\n    }\n    return (providerCache[name + providerSuffix] = provider_);\n  }\n\n  function enforceReturnValue(name, factory) {\n    return /** @this */ function enforcedReturnValue() {\n      var result = instanceInjector.invoke(factory, this);\n      if (isUndefined(result)) {\n        throw $injectorMinErr('undef', 'Provider \\'{0}\\' must return a value from $get factory method.', name);\n      }\n      return result;\n    };\n  }\n\n  function factory(name, factoryFn, enforce) {\n    return provider(name, {\n      $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn\n    });\n  }\n\n  function service(name, constructor) {\n    return factory(name, ['$injector', function($injector) {\n      return $injector.instantiate(constructor);\n    }]);\n  }\n\n  function value(name, val) { return factory(name, valueFn(val), false); }\n\n  function constant(name, value) {\n    assertNotHasOwnProperty(name, 'constant');\n    providerCache[name] = value;\n    instanceCache[name] = value;\n  }\n\n  function decorator(serviceName, decorFn) {\n    var origProvider = providerInjector.get(serviceName + providerSuffix),\n        orig$get = origProvider.$get;\n\n    origProvider.$get = function() {\n      var origInstance = instanceInjector.invoke(orig$get, origProvider);\n      return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});\n    };\n  }\n\n  ////////////////////////////////////\n  // Module Loading\n  ////////////////////////////////////\n  function loadModules(modulesToLoad) {\n    assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array');\n    var runBlocks = [], moduleFn;\n    forEach(modulesToLoad, function(module) {\n      if (loadedModules.get(module)) return;\n      loadedModules.set(module, true);\n\n      function runInvokeQueue(queue) {\n        var i, ii;\n        for (i = 0, ii = queue.length; i < ii; i++) {\n          var invokeArgs = queue[i],\n              provider = providerInjector.get(invokeArgs[0]);\n\n          provider[invokeArgs[1]].apply(provider, invokeArgs[2]);\n        }\n      }\n\n      try {\n        if (isString(module)) {\n          moduleFn = angularModule(module);\n          instanceInjector.modules[module] = moduleFn;\n          runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);\n          runInvokeQueue(moduleFn._invokeQueue);\n          runInvokeQueue(moduleFn._configBlocks);\n        } else if (isFunction(module)) {\n            runBlocks.push(providerInjector.invoke(module));\n        } else if (isArray(module)) {\n            runBlocks.push(providerInjector.invoke(module));\n        } else {\n          assertArgFn(module, 'module');\n        }\n      } catch (e) {\n        if (isArray(module)) {\n          module = module[module.length - 1];\n        }\n        if (e.message && e.stack && e.stack.indexOf(e.message) === -1) {\n          // Safari & FF's stack traces don't contain error.message content\n          // unlike those of Chrome and IE\n          // So if stack doesn't contain message, we create a new string that contains both.\n          // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.\n          // eslint-disable-next-line no-ex-assign\n          e = e.message + '\\n' + e.stack;\n        }\n        throw $injectorMinErr('modulerr', 'Failed to instantiate module {0} due to:\\n{1}',\n                  module, e.stack || e.message || e);\n      }\n    });\n    return runBlocks;\n  }\n\n  ////////////////////////////////////\n  // internal Injector\n  ////////////////////////////////////\n\n  function createInternalInjector(cache, factory) {\n\n    function getService(serviceName, caller) {\n      if (cache.hasOwnProperty(serviceName)) {\n        if (cache[serviceName] === INSTANTIATING) {\n          throw $injectorMinErr('cdep', 'Circular dependency found: {0}',\n                    serviceName + ' <- ' + path.join(' <- '));\n        }\n        return cache[serviceName];\n      } else {\n        try {\n          path.unshift(serviceName);\n          cache[serviceName] = INSTANTIATING;\n          cache[serviceName] = factory(serviceName, caller);\n          return cache[serviceName];\n        } catch (err) {\n          if (cache[serviceName] === INSTANTIATING) {\n            delete cache[serviceName];\n          }\n          throw err;\n        } finally {\n          path.shift();\n        }\n      }\n    }\n\n\n    function injectionArgs(fn, locals, serviceName) {\n      var args = [],\n          $inject = createInjector.$$annotate(fn, strictDi, serviceName);\n\n      for (var i = 0, length = $inject.length; i < length; i++) {\n        var key = $inject[i];\n        if (typeof key !== 'string') {\n          throw $injectorMinErr('itkn',\n                  'Incorrect injection token! Expected service name as string, got {0}', key);\n        }\n        args.push(locals && locals.hasOwnProperty(key) ? locals[key] :\n                                                         getService(key, serviceName));\n      }\n      return args;\n    }\n\n    function isClass(func) {\n      // Support: IE 9-11 only\n      // IE 9-11 do not support classes and IE9 leaks with the code below.\n      if (msie || typeof func !== 'function') {\n        return false;\n      }\n      var result = func.$$ngIsClass;\n      if (!isBoolean(result)) {\n        // Support: Edge 12-13 only\n        // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6156135/\n        result = func.$$ngIsClass = /^(?:class\\b|constructor\\()/.test(stringifyFn(func));\n      }\n      return result;\n    }\n\n    function invoke(fn, self, locals, serviceName) {\n      if (typeof locals === 'string') {\n        serviceName = locals;\n        locals = null;\n      }\n\n      var args = injectionArgs(fn, locals, serviceName);\n      if (isArray(fn)) {\n        fn = fn[fn.length - 1];\n      }\n\n      if (!isClass(fn)) {\n        // http://jsperf.com/angularjs-invoke-apply-vs-switch\n        // #5388\n        return fn.apply(self, args);\n      } else {\n        args.unshift(null);\n        return new (Function.prototype.bind.apply(fn, args))();\n      }\n    }\n\n\n    function instantiate(Type, locals, serviceName) {\n      // Check if Type is annotated and use just the given function at n-1 as parameter\n      // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);\n      var ctor = (isArray(Type) ? Type[Type.length - 1] : Type);\n      var args = injectionArgs(Type, locals, serviceName);\n      // Empty object at position 0 is ignored for invocation with `new`, but required.\n      args.unshift(null);\n      return new (Function.prototype.bind.apply(ctor, args))();\n    }\n\n\n    return {\n      invoke: invoke,\n      instantiate: instantiate,\n      get: getService,\n      annotate: createInjector.$$annotate,\n      has: function(name) {\n        return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);\n      }\n    };\n  }\n}\n\ncreateInjector.$$annotate = annotate;\n\n/**\n * @ngdoc provider\n * @name $anchorScrollProvider\n * @this\n *\n * @description\n * Use `$anchorScrollProvider` to disable automatic scrolling whenever\n * {@link ng.$location#hash $location.hash()} changes.\n */\nfunction $AnchorScrollProvider() {\n\n  var autoScrollingEnabled = true;\n\n  /**\n   * @ngdoc method\n   * @name $anchorScrollProvider#disableAutoScrolling\n   *\n   * @description\n   * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to\n   * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />\n   * Use this method to disable automatic scrolling.\n   *\n   * If automatic scrolling is disabled, one must explicitly call\n   * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the\n   * current hash.\n   */\n  this.disableAutoScrolling = function() {\n    autoScrollingEnabled = false;\n  };\n\n  /**\n   * @ngdoc service\n   * @name $anchorScroll\n   * @kind function\n   * @requires $window\n   * @requires $location\n   * @requires $rootScope\n   *\n   * @description\n   * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the\n   * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified\n   * in the\n   * [HTML5 spec](http://www.w3.org/html/wg/drafts/html/master/browsers.html#an-indicated-part-of-the-document).\n   *\n   * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to\n   * match any anchor whenever it changes. This can be disabled by calling\n   * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.\n   *\n   * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a\n   * vertical scroll-offset (either fixed or dynamic).\n   *\n   * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of\n   *                       {@link ng.$location#hash $location.hash()} will be used.\n   *\n   * @property {(number|function|jqLite)} yOffset\n   * If set, specifies a vertical scroll-offset. This is often useful when there are fixed\n   * positioned elements at the top of the page, such as navbars, headers etc.\n   *\n   * `yOffset` can be specified in various ways:\n   * - **number**: A fixed number of pixels to be used as offset.<br /><br />\n   * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return\n   *   a number representing the offset (in pixels).<br /><br />\n   * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from\n   *   the top of the page to the element's bottom will be used as offset.<br />\n   *   **Note**: The element will be taken into account only as long as its `position` is set to\n   *   `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust\n   *   their height and/or positioning according to the viewport's size.\n   *\n   * <br />\n   * <div class=\"alert alert-warning\">\n   * In order for `yOffset` to work properly, scrolling should take place on the document's root and\n   * not some child element.\n   * </div>\n   *\n   * @example\n     <example module=\"anchorScrollExample\" name=\"anchor-scroll\">\n       <file name=\"index.html\">\n         <div id=\"scrollArea\" ng-controller=\"ScrollController\">\n           <a ng-click=\"gotoBottom()\">Go to bottom</a>\n           <a id=\"bottom\"></a> You're at the bottom!\n         </div>\n       </file>\n       <file name=\"script.js\">\n         angular.module('anchorScrollExample', [])\n           .controller('ScrollController', ['$scope', '$location', '$anchorScroll',\n             function($scope, $location, $anchorScroll) {\n               $scope.gotoBottom = function() {\n                 // set the location.hash to the id of\n                 // the element you wish to scroll to.\n                 $location.hash('bottom');\n\n                 // call $anchorScroll()\n                 $anchorScroll();\n               };\n             }]);\n       </file>\n       <file name=\"style.css\">\n         #scrollArea {\n           height: 280px;\n           overflow: auto;\n         }\n\n         #bottom {\n           display: block;\n           margin-top: 2000px;\n         }\n       </file>\n     </example>\n   *\n   * <hr />\n   * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).\n   * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.\n   *\n   * @example\n     <example module=\"anchorScrollOffsetExample\" name=\"anchor-scroll-offset\">\n       <file name=\"index.html\">\n         <div class=\"fixed-header\" ng-controller=\"headerCtrl\">\n           <a href=\"\" ng-click=\"gotoAnchor(x)\" ng-repeat=\"x in [1,2,3,4,5]\">\n             Go to anchor {{x}}\n           </a>\n         </div>\n         <div id=\"anchor{{x}}\" class=\"anchor\" ng-repeat=\"x in [1,2,3,4,5]\">\n           Anchor {{x}} of 5\n         </div>\n       </file>\n       <file name=\"script.js\">\n         angular.module('anchorScrollOffsetExample', [])\n           .run(['$anchorScroll', function($anchorScroll) {\n             $anchorScroll.yOffset = 50;   // always scroll by 50 extra pixels\n           }])\n           .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',\n             function($anchorScroll, $location, $scope) {\n               $scope.gotoAnchor = function(x) {\n                 var newHash = 'anchor' + x;\n                 if ($location.hash() !== newHash) {\n                   // set the $location.hash to `newHash` and\n                   // $anchorScroll will automatically scroll to it\n                   $location.hash('anchor' + x);\n                 } else {\n                   // call $anchorScroll() explicitly,\n                   // since $location.hash hasn't changed\n                   $anchorScroll();\n                 }\n               };\n             }\n           ]);\n       </file>\n       <file name=\"style.css\">\n         body {\n           padding-top: 50px;\n         }\n\n         .anchor {\n           border: 2px dashed DarkOrchid;\n           padding: 10px 10px 200px 10px;\n         }\n\n         .fixed-header {\n           background-color: rgba(0, 0, 0, 0.2);\n           height: 50px;\n           position: fixed;\n           top: 0; left: 0; right: 0;\n         }\n\n         .fixed-header > a {\n           display: inline-block;\n           margin: 5px 15px;\n         }\n       </file>\n     </example>\n   */\n  this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {\n    var document = $window.document;\n\n    // Helper function to get first anchor from a NodeList\n    // (using `Array#some()` instead of `angular#forEach()` since it's more performant\n    //  and working in all supported browsers.)\n    function getFirstAnchor(list) {\n      var result = null;\n      Array.prototype.some.call(list, function(element) {\n        if (nodeName_(element) === 'a') {\n          result = element;\n          return true;\n        }\n      });\n      return result;\n    }\n\n    function getYOffset() {\n\n      var offset = scroll.yOffset;\n\n      if (isFunction(offset)) {\n        offset = offset();\n      } else if (isElement(offset)) {\n        var elem = offset[0];\n        var style = $window.getComputedStyle(elem);\n        if (style.position !== 'fixed') {\n          offset = 0;\n        } else {\n          offset = elem.getBoundingClientRect().bottom;\n        }\n      } else if (!isNumber(offset)) {\n        offset = 0;\n      }\n\n      return offset;\n    }\n\n    function scrollTo(elem) {\n      if (elem) {\n        elem.scrollIntoView();\n\n        var offset = getYOffset();\n\n        if (offset) {\n          // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.\n          // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the\n          // top of the viewport.\n          //\n          // IF the number of pixels from the top of `elem` to the end of the page's content is less\n          // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some\n          // way down the page.\n          //\n          // This is often the case for elements near the bottom of the page.\n          //\n          // In such cases we do not need to scroll the whole `offset` up, just the difference between\n          // the top of the element and the offset, which is enough to align the top of `elem` at the\n          // desired position.\n          var elemTop = elem.getBoundingClientRect().top;\n          $window.scrollBy(0, elemTop - offset);\n        }\n      } else {\n        $window.scrollTo(0, 0);\n      }\n    }\n\n    function scroll(hash) {\n      // Allow numeric hashes\n      hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() : $location.hash();\n      var elm;\n\n      // empty hash, scroll to the top of the page\n      if (!hash) scrollTo(null);\n\n      // element with given id\n      else if ((elm = document.getElementById(hash))) scrollTo(elm);\n\n      // first anchor with given name :-D\n      else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);\n\n      // no element and hash === 'top', scroll to the top of the page\n      else if (hash === 'top') scrollTo(null);\n    }\n\n    // does not scroll when user clicks on anchor link that is currently on\n    // (no url change, no $location.hash() change), browser native does scroll\n    if (autoScrollingEnabled) {\n      $rootScope.$watch(function autoScrollWatch() {return $location.hash();},\n        function autoScrollWatchAction(newVal, oldVal) {\n          // skip the initial scroll if $location.hash is empty\n          if (newVal === oldVal && newVal === '') return;\n\n          jqLiteDocumentLoaded(function() {\n            $rootScope.$evalAsync(scroll);\n          });\n        });\n    }\n\n    return scroll;\n  }];\n}\n\nvar $animateMinErr = minErr('$animate');\nvar ELEMENT_NODE = 1;\nvar NG_ANIMATE_CLASSNAME = 'ng-animate';\n\nfunction mergeClasses(a,b) {\n  if (!a && !b) return '';\n  if (!a) return b;\n  if (!b) return a;\n  if (isArray(a)) a = a.join(' ');\n  if (isArray(b)) b = b.join(' ');\n  return a + ' ' + b;\n}\n\nfunction extractElementNode(element) {\n  for (var i = 0; i < element.length; i++) {\n    var elm = element[i];\n    if (elm.nodeType === ELEMENT_NODE) {\n      return elm;\n    }\n  }\n}\n\nfunction splitClasses(classes) {\n  if (isString(classes)) {\n    classes = classes.split(' ');\n  }\n\n  // Use createMap() to prevent class assumptions involving property names in\n  // Object.prototype\n  var obj = createMap();\n  forEach(classes, function(klass) {\n    // sometimes the split leaves empty string values\n    // incase extra spaces were applied to the options\n    if (klass.length) {\n      obj[klass] = true;\n    }\n  });\n  return obj;\n}\n\n// if any other type of options value besides an Object value is\n// passed into the $animate.method() animation then this helper code\n// will be run which will ignore it. While this patch is not the\n// greatest solution to this, a lot of existing plugins depend on\n// $animate to either call the callback (< 1.2) or return a promise\n// that can be changed. This helper function ensures that the options\n// are wiped clean incase a callback function is provided.\nfunction prepareAnimateOptions(options) {\n  return isObject(options)\n      ? options\n      : {};\n}\n\nvar $$CoreAnimateJsProvider = /** @this */ function() {\n  this.$get = noop;\n};\n\n// this is prefixed with Core since it conflicts with\n// the animateQueueProvider defined in ngAnimate/animateQueue.js\nvar $$CoreAnimateQueueProvider = /** @this */ function() {\n  var postDigestQueue = new NgMap();\n  var postDigestElements = [];\n\n  this.$get = ['$$AnimateRunner', '$rootScope',\n       function($$AnimateRunner,   $rootScope) {\n    return {\n      enabled: noop,\n      on: noop,\n      off: noop,\n      pin: noop,\n\n      push: function(element, event, options, domOperation) {\n        if (domOperation) {\n          domOperation();\n        }\n\n        options = options || {};\n        if (options.from) {\n          element.css(options.from);\n        }\n        if (options.to) {\n          element.css(options.to);\n        }\n\n        if (options.addClass || options.removeClass) {\n          addRemoveClassesPostDigest(element, options.addClass, options.removeClass);\n        }\n\n        var runner = new $$AnimateRunner();\n\n        // since there are no animations to run the runner needs to be\n        // notified that the animation call is complete.\n        runner.complete();\n        return runner;\n      }\n    };\n\n\n    function updateData(data, classes, value) {\n      var changed = false;\n      if (classes) {\n        classes = isString(classes) ? classes.split(' ') :\n                  isArray(classes) ? classes : [];\n        forEach(classes, function(className) {\n          if (className) {\n            changed = true;\n            data[className] = value;\n          }\n        });\n      }\n      return changed;\n    }\n\n    function handleCSSClassChanges() {\n      forEach(postDigestElements, function(element) {\n        var data = postDigestQueue.get(element);\n        if (data) {\n          var existing = splitClasses(element.attr('class'));\n          var toAdd = '';\n          var toRemove = '';\n          forEach(data, function(status, className) {\n            var hasClass = !!existing[className];\n            if (status !== hasClass) {\n              if (status) {\n                toAdd += (toAdd.length ? ' ' : '') + className;\n              } else {\n                toRemove += (toRemove.length ? ' ' : '') + className;\n              }\n            }\n          });\n\n          forEach(element, function(elm) {\n            if (toAdd) {\n              jqLiteAddClass(elm, toAdd);\n            }\n            if (toRemove) {\n              jqLiteRemoveClass(elm, toRemove);\n            }\n          });\n          postDigestQueue.delete(element);\n        }\n      });\n      postDigestElements.length = 0;\n    }\n\n\n    function addRemoveClassesPostDigest(element, add, remove) {\n      var data = postDigestQueue.get(element) || {};\n\n      var classesAdded = updateData(data, add, true);\n      var classesRemoved = updateData(data, remove, false);\n\n      if (classesAdded || classesRemoved) {\n\n        postDigestQueue.set(element, data);\n        postDigestElements.push(element);\n\n        if (postDigestElements.length === 1) {\n          $rootScope.$$postDigest(handleCSSClassChanges);\n        }\n      }\n    }\n  }];\n};\n\n/**\n * @ngdoc provider\n * @name $animateProvider\n *\n * @description\n * Default implementation of $animate that doesn't perform any animations, instead just\n * synchronously performs DOM updates and resolves the returned runner promise.\n *\n * In order to enable animations the `ngAnimate` module has to be loaded.\n *\n * To see the functional implementation check out `src/ngAnimate/animate.js`.\n */\nvar $AnimateProvider = ['$provide', /** @this */ function($provide) {\n  var provider = this;\n  var classNameFilter = null;\n  var customFilter = null;\n\n  this.$$registeredAnimations = Object.create(null);\n\n   /**\n   * @ngdoc method\n   * @name $animateProvider#register\n   *\n   * @description\n   * Registers a new injectable animation factory function. The factory function produces the\n   * animation object which contains callback functions for each event that is expected to be\n   * animated.\n   *\n   *   * `eventFn`: `function(element, ... , doneFunction, options)`\n   *   The element to animate, the `doneFunction` and the options fed into the animation. Depending\n   *   on the type of animation additional arguments will be injected into the animation function. The\n   *   list below explains the function signatures for the different animation methods:\n   *\n   *   - setClass: function(element, addedClasses, removedClasses, doneFunction, options)\n   *   - addClass: function(element, addedClasses, doneFunction, options)\n   *   - removeClass: function(element, removedClasses, doneFunction, options)\n   *   - enter, leave, move: function(element, doneFunction, options)\n   *   - animate: function(element, fromStyles, toStyles, doneFunction, options)\n   *\n   *   Make sure to trigger the `doneFunction` once the animation is fully complete.\n   *\n   * ```js\n   *   return {\n   *     //enter, leave, move signature\n   *     eventFn : function(element, done, options) {\n   *       //code to run the animation\n   *       //once complete, then run done()\n   *       return function endFunction(wasCancelled) {\n   *         //code to cancel the animation\n   *       }\n   *     }\n   *   }\n   * ```\n   *\n   * @param {string} name The name of the animation (this is what the class-based CSS value will be compared to).\n   * @param {Function} factory The factory function that will be executed to return the animation\n   *                           object.\n   */\n  this.register = function(name, factory) {\n    if (name && name.charAt(0) !== '.') {\n      throw $animateMinErr('notcsel', 'Expecting class selector starting with \\'.\\' got \\'{0}\\'.', name);\n    }\n\n    var key = name + '-animation';\n    provider.$$registeredAnimations[name.substr(1)] = key;\n    $provide.factory(key, factory);\n  };\n\n  /**\n   * @ngdoc method\n   * @name $animateProvider#customFilter\n   *\n   * @description\n   * Sets and/or returns the custom filter function that is used to \"filter\" animations, i.e.\n   * determine if an animation is allowed or not. When no filter is specified (the default), no\n   * animation will be blocked. Setting the `customFilter` value will only allow animations for\n   * which the filter function's return value is truthy.\n   *\n   * This allows to easily create arbitrarily complex rules for filtering animations, such as\n   * allowing specific events only, or enabling animations on specific subtrees of the DOM, etc.\n   * Filtering animations can also boost performance for low-powered devices, as well as\n   * applications containing a lot of structural operations.\n   *\n   * <div class=\"alert alert-success\">\n   *   **Best Practice:**\n   *   Keep the filtering function as lean as possible, because it will be called for each DOM\n   *   action (e.g. insertion, removal, class change) performed by \"animation-aware\" directives.\n   *   See {@link guide/animations#which-directives-support-animations- here} for a list of built-in\n   *   directives that support animations.\n   *   Performing computationally expensive or time-consuming operations on each call of the\n   *   filtering function can make your animations sluggish.\n   * </div>\n   *\n   * **Note:** If present, `customFilter` will be checked before\n   * {@link $animateProvider#classNameFilter classNameFilter}.\n   *\n   * @param {Function=} filterFn - The filter function which will be used to filter all animations.\n   *   If a falsy value is returned, no animation will be performed. The function will be called\n   *   with the following arguments:\n   *   - **node** `{DOMElement}` - The DOM element to be animated.\n   *   - **event** `{String}` - The name of the animation event (e.g. `enter`, `leave`, `addClass`\n   *     etc).\n   *   - **options** `{Object}` - A collection of options/styles used for the animation.\n   * @return {Function} The current filter function or `null` if there is none set.\n   */\n  this.customFilter = function(filterFn) {\n    if (arguments.length === 1) {\n      customFilter = isFunction(filterFn) ? filterFn : null;\n    }\n\n    return customFilter;\n  };\n\n  /**\n   * @ngdoc method\n   * @name $animateProvider#classNameFilter\n   *\n   * @description\n   * Sets and/or returns the CSS class regular expression that is checked when performing\n   * an animation. Upon bootstrap the classNameFilter value is not set at all and will\n   * therefore enable $animate to attempt to perform an animation on any element that is triggered.\n   * When setting the `classNameFilter` value, animations will only be performed on elements\n   * that successfully match the filter expression. This in turn can boost performance\n   * for low-powered devices as well as applications containing a lot of structural operations.\n   *\n   * **Note:** If present, `classNameFilter` will be checked after\n   * {@link $animateProvider#customFilter customFilter}. If `customFilter` is present and returns\n   * false, `classNameFilter` will not be checked.\n   *\n   * @param {RegExp=} expression The className expression which will be checked against all animations\n   * @return {RegExp} The current CSS className expression value. If null then there is no expression value\n   */\n  this.classNameFilter = function(expression) {\n    if (arguments.length === 1) {\n      classNameFilter = (expression instanceof RegExp) ? expression : null;\n      if (classNameFilter) {\n        var reservedRegex = new RegExp('[(\\\\s|\\\\/)]' + NG_ANIMATE_CLASSNAME + '[(\\\\s|\\\\/)]');\n        if (reservedRegex.test(classNameFilter.toString())) {\n          classNameFilter = null;\n          throw $animateMinErr('nongcls', '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the \"{0}\" CSS class.', NG_ANIMATE_CLASSNAME);\n        }\n      }\n    }\n    return classNameFilter;\n  };\n\n  this.$get = ['$$animateQueue', function($$animateQueue) {\n    function domInsert(element, parentElement, afterElement) {\n      // if for some reason the previous element was removed\n      // from the dom sometime before this code runs then let's\n      // just stick to using the parent element as the anchor\n      if (afterElement) {\n        var afterNode = extractElementNode(afterElement);\n        if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) {\n          afterElement = null;\n        }\n      }\n      if (afterElement) {\n        afterElement.after(element);\n      } else {\n        parentElement.prepend(element);\n      }\n    }\n\n    /**\n     * @ngdoc service\n     * @name $animate\n     * @description The $animate service exposes a series of DOM utility methods that provide support\n     * for animation hooks. The default behavior is the application of DOM operations, however,\n     * when an animation is detected (and animations are enabled), $animate will do the heavy lifting\n     * to ensure that animation runs with the triggered DOM operation.\n     *\n     * By default $animate doesn't trigger any animations. This is because the `ngAnimate` module isn't\n     * included and only when it is active then the animation hooks that `$animate` triggers will be\n     * functional. Once active then all structural `ng-` directives will trigger animations as they perform\n     * their DOM-related operations (enter, leave and move). Other directives such as `ngClass`,\n     * `ngShow`, `ngHide` and `ngMessages` also provide support for animations.\n     *\n     * It is recommended that the`$animate` service is always used when executing DOM-related procedures within directives.\n     *\n     * To learn more about enabling animation support, click here to visit the\n     * {@link ngAnimate ngAnimate module page}.\n     */\n    return {\n      // we don't call it directly since non-existant arguments may\n      // be interpreted as null within the sub enabled function\n\n      /**\n       *\n       * @ngdoc method\n       * @name $animate#on\n       * @kind function\n       * @description Sets up an event listener to fire whenever the animation event (enter, leave, move, etc...)\n       *    has fired on the given element or among any of its children. Once the listener is fired, the provided callback\n       *    is fired with the following params:\n       *\n       * ```js\n       * $animate.on('enter', container,\n       *    function callback(element, phase) {\n       *      // cool we detected an enter animation within the container\n       *    }\n       * );\n       * ```\n       *\n       * @param {string} event the animation event that will be captured (e.g. enter, leave, move, addClass, removeClass, etc...)\n       * @param {DOMElement} container the container element that will capture each of the animation events that are fired on itself\n       *     as well as among its children\n       * @param {Function} callback the callback function that will be fired when the listener is triggered\n       *\n       * The arguments present in the callback function are:\n       * * `element` - The captured DOM element that the animation was fired on.\n       * * `phase` - The phase of the animation. The two possible phases are **start** (when the animation starts) and **close** (when it ends).\n       */\n      on: $$animateQueue.on,\n\n      /**\n       *\n       * @ngdoc method\n       * @name $animate#off\n       * @kind function\n       * @description Deregisters an event listener based on the event which has been associated with the provided element. This method\n       * can be used in three different ways depending on the arguments:\n       *\n       * ```js\n       * // remove all the animation event listeners listening for `enter`\n       * $animate.off('enter');\n       *\n       * // remove listeners for all animation events from the container element\n       * $animate.off(container);\n       *\n       * // remove all the animation event listeners listening for `enter` on the given element and its children\n       * $animate.off('enter', container);\n       *\n       * // remove the event listener function provided by `callback` that is set\n       * // to listen for `enter` on the given `container` as well as its children\n       * $animate.off('enter', container, callback);\n       * ```\n       *\n       * @param {string|DOMElement} event|container the animation event (e.g. enter, leave, move,\n       * addClass, removeClass, etc...), or the container element. If it is the element, all other\n       * arguments are ignored.\n       * @param {DOMElement=} container the container element the event listener was placed on\n       * @param {Function=} callback the callback function that was registered as the listener\n       */\n      off: $$animateQueue.off,\n\n      /**\n       * @ngdoc method\n       * @name $animate#pin\n       * @kind function\n       * @description Associates the provided element with a host parent element to allow the element to be animated even if it exists\n       *    outside of the DOM structure of the Angular application. By doing so, any animation triggered via `$animate` can be issued on the\n       *    element despite being outside the realm of the application or within another application. Say for example if the application\n       *    was bootstrapped on an element that is somewhere inside of the `<body>` tag, but we wanted to allow for an element to be situated\n       *    as a direct child of `document.body`, then this can be achieved by pinning the element via `$animate.pin(element)`. Keep in mind\n       *    that calling `$animate.pin(element, parentElement)` will not actually insert into the DOM anywhere; it will just create the association.\n       *\n       *    Note that this feature is only active when the `ngAnimate` module is used.\n       *\n       * @param {DOMElement} element the external element that will be pinned\n       * @param {DOMElement} parentElement the host parent element that will be associated with the external element\n       */\n      pin: $$animateQueue.pin,\n\n      /**\n       *\n       * @ngdoc method\n       * @name $animate#enabled\n       * @kind function\n       * @description Used to get and set whether animations are enabled or not on the entire application or on an element and its children. This\n       * function can be called in four ways:\n       *\n       * ```js\n       * // returns true or false\n       * $animate.enabled();\n       *\n       * // changes the enabled state for all animations\n       * $animate.enabled(false);\n       * $animate.enabled(true);\n       *\n       * // returns true or false if animations are enabled for an element\n       * $animate.enabled(element);\n       *\n       * // changes the enabled state for an element and its children\n       * $animate.enabled(element, true);\n       * $animate.enabled(element, false);\n       * ```\n       *\n       * @param {DOMElement=} element the element that will be considered for checking/setting the enabled state\n       * @param {boolean=} enabled whether or not the animations will be enabled for the element\n       *\n       * @return {boolean} whether or not animations are enabled\n       */\n      enabled: $$animateQueue.enabled,\n\n      /**\n       * @ngdoc method\n       * @name $animate#cancel\n       * @kind function\n       * @description Cancels the provided animation.\n       *\n       * @param {Promise} animationPromise The animation promise that is returned when an animation is started.\n       */\n      cancel: function(runner) {\n        if (runner.end) {\n          runner.end();\n        }\n      },\n\n      /**\n       *\n       * @ngdoc method\n       * @name $animate#enter\n       * @kind function\n       * @description Inserts the element into the DOM either after the `after` element (if provided) or\n       *   as the first child within the `parent` element and then triggers an animation.\n       *   A promise is returned that will be resolved during the next digest once the animation\n       *   has completed.\n       *\n       * @param {DOMElement} element the element which will be inserted into the DOM\n       * @param {DOMElement} parent the parent element which will append the element as\n       *   a child (so long as the after element is not present)\n       * @param {DOMElement=} after the sibling element after which the element will be appended\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      enter: function(element, parent, after, options) {\n        parent = parent && jqLite(parent);\n        after = after && jqLite(after);\n        parent = parent || after.parent();\n        domInsert(element, parent, after);\n        return $$animateQueue.push(element, 'enter', prepareAnimateOptions(options));\n      },\n\n      /**\n       *\n       * @ngdoc method\n       * @name $animate#move\n       * @kind function\n       * @description Inserts (moves) the element into its new position in the DOM either after\n       *   the `after` element (if provided) or as the first child within the `parent` element\n       *   and then triggers an animation. A promise is returned that will be resolved\n       *   during the next digest once the animation has completed.\n       *\n       * @param {DOMElement} element the element which will be moved into the new DOM position\n       * @param {DOMElement} parent the parent element which will append the element as\n       *   a child (so long as the after element is not present)\n       * @param {DOMElement=} after the sibling element after which the element will be appended\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      move: function(element, parent, after, options) {\n        parent = parent && jqLite(parent);\n        after = after && jqLite(after);\n        parent = parent || after.parent();\n        domInsert(element, parent, after);\n        return $$animateQueue.push(element, 'move', prepareAnimateOptions(options));\n      },\n\n      /**\n       * @ngdoc method\n       * @name $animate#leave\n       * @kind function\n       * @description Triggers an animation and then removes the element from the DOM.\n       * When the function is called a promise is returned that will be resolved during the next\n       * digest once the animation has completed.\n       *\n       * @param {DOMElement} element the element which will be removed from the DOM\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      leave: function(element, options) {\n        return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() {\n          element.remove();\n        });\n      },\n\n      /**\n       * @ngdoc method\n       * @name $animate#addClass\n       * @kind function\n       *\n       * @description Triggers an addClass animation surrounding the addition of the provided CSS class(es). Upon\n       *   execution, the addClass operation will only be handled after the next digest and it will not trigger an\n       *   animation if element already contains the CSS class or if the class is removed at a later step.\n       *   Note that class-based animations are treated differently compared to structural animations\n       *   (like enter, move and leave) since the CSS classes may be added/removed at different points\n       *   depending if CSS or JavaScript animations are used.\n       *\n       * @param {DOMElement} element the element which the CSS classes will be applied to\n       * @param {string} className the CSS class(es) that will be added (multiple classes are separated via spaces)\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      addClass: function(element, className, options) {\n        options = prepareAnimateOptions(options);\n        options.addClass = mergeClasses(options.addclass, className);\n        return $$animateQueue.push(element, 'addClass', options);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $animate#removeClass\n       * @kind function\n       *\n       * @description Triggers a removeClass animation surrounding the removal of the provided CSS class(es). Upon\n       *   execution, the removeClass operation will only be handled after the next digest and it will not trigger an\n       *   animation if element does not contain the CSS class or if the class is added at a later step.\n       *   Note that class-based animations are treated differently compared to structural animations\n       *   (like enter, move and leave) since the CSS classes may be added/removed at different points\n       *   depending if CSS or JavaScript animations are used.\n       *\n       * @param {DOMElement} element the element which the CSS classes will be applied to\n       * @param {string} className the CSS class(es) that will be removed (multiple classes are separated via spaces)\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      removeClass: function(element, className, options) {\n        options = prepareAnimateOptions(options);\n        options.removeClass = mergeClasses(options.removeClass, className);\n        return $$animateQueue.push(element, 'removeClass', options);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $animate#setClass\n       * @kind function\n       *\n       * @description Performs both the addition and removal of a CSS classes on an element and (during the process)\n       *    triggers an animation surrounding the class addition/removal. Much like `$animate.addClass` and\n       *    `$animate.removeClass`, `setClass` will only evaluate the classes being added/removed once a digest has\n       *    passed. Note that class-based animations are treated differently compared to structural animations\n       *    (like enter, move and leave) since the CSS classes may be added/removed at different points\n       *    depending if CSS or JavaScript animations are used.\n       *\n       * @param {DOMElement} element the element which the CSS classes will be applied to\n       * @param {string} add the CSS class(es) that will be added (multiple classes are separated via spaces)\n       * @param {string} remove the CSS class(es) that will be removed (multiple classes are separated via spaces)\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      setClass: function(element, add, remove, options) {\n        options = prepareAnimateOptions(options);\n        options.addClass = mergeClasses(options.addClass, add);\n        options.removeClass = mergeClasses(options.removeClass, remove);\n        return $$animateQueue.push(element, 'setClass', options);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $animate#animate\n       * @kind function\n       *\n       * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element.\n       * If any detected CSS transition, keyframe or JavaScript matches the provided className value, then the animation will take\n       * on the provided styles. For example, if a transition animation is set for the given className, then the provided `from` and\n       * `to` styles will be applied alongside the given transition. If the CSS style provided in `from` does not have a corresponding\n       * style in `to`, the style in `from` is applied immediately, and no animation is run.\n       * If a JavaScript animation is detected then the provided styles will be given in as function parameters into the `animate`\n       * method (or as part of the `options` parameter):\n       *\n       * ```js\n       * ngModule.animation('.my-inline-animation', function() {\n       *   return {\n       *     animate : function(element, from, to, done, options) {\n       *       //animation\n       *       done();\n       *     }\n       *   }\n       * });\n       * ```\n       *\n       * @param {DOMElement} element the element which the CSS styles will be applied to\n       * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation.\n       * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation.\n       * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If\n       *    this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element.\n       *    (Note that if no animation is detected then this value will not be applied to the element.)\n       * @param {object=} options an optional collection of options/styles that will be applied to the element.\n       *   The object can have the following properties:\n       *\n       *   - **addClass** - `{string}` - space-separated CSS classes to add to element\n       *   - **from** - `{Object}` - CSS properties & values at the beginning of animation. Must have matching `to`\n       *   - **removeClass** - `{string}` - space-separated CSS classes to remove from element\n       *   - **to** - `{Object}` - CSS properties & values at end of animation. Must have matching `from`\n       *\n       * @return {Promise} the animation callback promise\n       */\n      animate: function(element, from, to, className, options) {\n        options = prepareAnimateOptions(options);\n        options.from = options.from ? extend(options.from, from) : from;\n        options.to   = options.to   ? extend(options.to, to)     : to;\n\n        className = className || 'ng-inline-animate';\n        options.tempClasses = mergeClasses(options.tempClasses, className);\n        return $$animateQueue.push(element, 'animate', options);\n      }\n    };\n  }];\n}];\n\nvar $$AnimateAsyncRunFactoryProvider = /** @this */ function() {\n  this.$get = ['$$rAF', function($$rAF) {\n    var waitQueue = [];\n\n    function waitForTick(fn) {\n      waitQueue.push(fn);\n      if (waitQueue.length > 1) return;\n      $$rAF(function() {\n        for (var i = 0; i < waitQueue.length; i++) {\n          waitQueue[i]();\n        }\n        waitQueue = [];\n      });\n    }\n\n    return function() {\n      var passed = false;\n      waitForTick(function() {\n        passed = true;\n      });\n      return function(callback) {\n        if (passed) {\n          callback();\n        } else {\n          waitForTick(callback);\n        }\n      };\n    };\n  }];\n};\n\nvar $$AnimateRunnerFactoryProvider = /** @this */ function() {\n  this.$get = ['$q', '$sniffer', '$$animateAsyncRun', '$$isDocumentHidden', '$timeout',\n       function($q,   $sniffer,   $$animateAsyncRun,   $$isDocumentHidden,   $timeout) {\n\n    var INITIAL_STATE = 0;\n    var DONE_PENDING_STATE = 1;\n    var DONE_COMPLETE_STATE = 2;\n\n    AnimateRunner.chain = function(chain, callback) {\n      var index = 0;\n\n      next();\n      function next() {\n        if (index === chain.length) {\n          callback(true);\n          return;\n        }\n\n        chain[index](function(response) {\n          if (response === false) {\n            callback(false);\n            return;\n          }\n          index++;\n          next();\n        });\n      }\n    };\n\n    AnimateRunner.all = function(runners, callback) {\n      var count = 0;\n      var status = true;\n      forEach(runners, function(runner) {\n        runner.done(onProgress);\n      });\n\n      function onProgress(response) {\n        status = status && response;\n        if (++count === runners.length) {\n          callback(status);\n        }\n      }\n    };\n\n    function AnimateRunner(host) {\n      this.setHost(host);\n\n      var rafTick = $$animateAsyncRun();\n      var timeoutTick = function(fn) {\n        $timeout(fn, 0, false);\n      };\n\n      this._doneCallbacks = [];\n      this._tick = function(fn) {\n        if ($$isDocumentHidden()) {\n          timeoutTick(fn);\n        } else {\n          rafTick(fn);\n        }\n      };\n      this._state = 0;\n    }\n\n    AnimateRunner.prototype = {\n      setHost: function(host) {\n        this.host = host || {};\n      },\n\n      done: function(fn) {\n        if (this._state === DONE_COMPLETE_STATE) {\n          fn();\n        } else {\n          this._doneCallbacks.push(fn);\n        }\n      },\n\n      progress: noop,\n\n      getPromise: function() {\n        if (!this.promise) {\n          var self = this;\n          this.promise = $q(function(resolve, reject) {\n            self.done(function(status) {\n              if (status === false) {\n                reject();\n              } else {\n                resolve();\n              }\n            });\n          });\n        }\n        return this.promise;\n      },\n\n      then: function(resolveHandler, rejectHandler) {\n        return this.getPromise().then(resolveHandler, rejectHandler);\n      },\n\n      'catch': function(handler) {\n        return this.getPromise()['catch'](handler);\n      },\n\n      'finally': function(handler) {\n        return this.getPromise()['finally'](handler);\n      },\n\n      pause: function() {\n        if (this.host.pause) {\n          this.host.pause();\n        }\n      },\n\n      resume: function() {\n        if (this.host.resume) {\n          this.host.resume();\n        }\n      },\n\n      end: function() {\n        if (this.host.end) {\n          this.host.end();\n        }\n        this._resolve(true);\n      },\n\n      cancel: function() {\n        if (this.host.cancel) {\n          this.host.cancel();\n        }\n        this._resolve(false);\n      },\n\n      complete: function(response) {\n        var self = this;\n        if (self._state === INITIAL_STATE) {\n          self._state = DONE_PENDING_STATE;\n          self._tick(function() {\n            self._resolve(response);\n          });\n        }\n      },\n\n      _resolve: function(response) {\n        if (this._state !== DONE_COMPLETE_STATE) {\n          forEach(this._doneCallbacks, function(fn) {\n            fn(response);\n          });\n          this._doneCallbacks.length = 0;\n          this._state = DONE_COMPLETE_STATE;\n        }\n      }\n    };\n\n    return AnimateRunner;\n  }];\n};\n\n/* exported $CoreAnimateCssProvider */\n\n/**\n * @ngdoc service\n * @name $animateCss\n * @kind object\n * @this\n *\n * @description\n * This is the core version of `$animateCss`. By default, only when the `ngAnimate` is included,\n * then the `$animateCss` service will actually perform animations.\n *\n * Click here {@link ngAnimate.$animateCss to read the documentation for $animateCss}.\n */\nvar $CoreAnimateCssProvider = function() {\n  this.$get = ['$$rAF', '$q', '$$AnimateRunner', function($$rAF, $q, $$AnimateRunner) {\n\n    return function(element, initialOptions) {\n      // all of the animation functions should create\n      // a copy of the options data, however, if a\n      // parent service has already created a copy then\n      // we should stick to using that\n      var options = initialOptions || {};\n      if (!options.$$prepared) {\n        options = copy(options);\n      }\n\n      // there is no point in applying the styles since\n      // there is no animation that goes on at all in\n      // this version of $animateCss.\n      if (options.cleanupStyles) {\n        options.from = options.to = null;\n      }\n\n      if (options.from) {\n        element.css(options.from);\n        options.from = null;\n      }\n\n      var closed, runner = new $$AnimateRunner();\n      return {\n        start: run,\n        end: run\n      };\n\n      function run() {\n        $$rAF(function() {\n          applyAnimationContents();\n          if (!closed) {\n            runner.complete();\n          }\n          closed = true;\n        });\n        return runner;\n      }\n\n      function applyAnimationContents() {\n        if (options.addClass) {\n          element.addClass(options.addClass);\n          options.addClass = null;\n        }\n        if (options.removeClass) {\n          element.removeClass(options.removeClass);\n          options.removeClass = null;\n        }\n        if (options.to) {\n          element.css(options.to);\n          options.to = null;\n        }\n      }\n    };\n  }];\n};\n\n/* global stripHash: true */\n\n/**\n * ! This is a private undocumented service !\n *\n * @name $browser\n * @requires $log\n * @description\n * This object has two goals:\n *\n * - hide all the global state in the browser caused by the window object\n * - abstract away all the browser specific features and inconsistencies\n *\n * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`\n * service, which can be used for convenient testing of the application without the interaction with\n * the real browser apis.\n */\n/**\n * @param {object} window The global window object.\n * @param {object} document jQuery wrapped document.\n * @param {object} $log window.console or an object with the same interface.\n * @param {object} $sniffer $sniffer service\n */\nfunction Browser(window, document, $log, $sniffer) {\n  var self = this,\n      location = window.location,\n      history = window.history,\n      setTimeout = window.setTimeout,\n      clearTimeout = window.clearTimeout,\n      pendingDeferIds = {};\n\n  self.isMock = false;\n\n  var outstandingRequestCount = 0;\n  var outstandingRequestCallbacks = [];\n\n  // TODO(vojta): remove this temporary api\n  self.$$completeOutstandingRequest = completeOutstandingRequest;\n  self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };\n\n  /**\n   * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`\n   * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.\n   */\n  function completeOutstandingRequest(fn) {\n    try {\n      fn.apply(null, sliceArgs(arguments, 1));\n    } finally {\n      outstandingRequestCount--;\n      if (outstandingRequestCount === 0) {\n        while (outstandingRequestCallbacks.length) {\n          try {\n            outstandingRequestCallbacks.pop()();\n          } catch (e) {\n            $log.error(e);\n          }\n        }\n      }\n    }\n  }\n\n  function getHash(url) {\n    var index = url.indexOf('#');\n    return index === -1 ? '' : url.substr(index);\n  }\n\n  /**\n   * @private\n   * Note: this method is used only by scenario runner\n   * TODO(vojta): prefix this method with $$ ?\n   * @param {function()} callback Function that will be called when no outstanding request\n   */\n  self.notifyWhenNoOutstandingRequests = function(callback) {\n    if (outstandingRequestCount === 0) {\n      callback();\n    } else {\n      outstandingRequestCallbacks.push(callback);\n    }\n  };\n\n  //////////////////////////////////////////////////////////////\n  // URL API\n  //////////////////////////////////////////////////////////////\n\n  var cachedState, lastHistoryState,\n      lastBrowserUrl = location.href,\n      baseElement = document.find('base'),\n      pendingLocation = null,\n      getCurrentState = !$sniffer.history ? noop : function getCurrentState() {\n        try {\n          return history.state;\n        } catch (e) {\n          // MSIE can reportedly throw when there is no state (UNCONFIRMED).\n        }\n      };\n\n  cacheState();\n\n  /**\n   * @name $browser#url\n   *\n   * @description\n   * GETTER:\n   * Without any argument, this method just returns current value of location.href.\n   *\n   * SETTER:\n   * With at least one argument, this method sets url to new value.\n   * If html5 history api supported, pushState/replaceState is used, otherwise\n   * location.href/location.replace is used.\n   * Returns its own instance to allow chaining\n   *\n   * NOTE: this api is intended for use only by the $location service. Please use the\n   * {@link ng.$location $location service} to change url.\n   *\n   * @param {string} url New url (when used as setter)\n   * @param {boolean=} replace Should new url replace current history record?\n   * @param {object=} state object to use with pushState/replaceState\n   */\n  self.url = function(url, replace, state) {\n    // In modern browsers `history.state` is `null` by default; treating it separately\n    // from `undefined` would cause `$browser.url('/foo')` to change `history.state`\n    // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.\n    if (isUndefined(state)) {\n      state = null;\n    }\n\n    // Android Browser BFCache causes location, history reference to become stale.\n    if (location !== window.location) location = window.location;\n    if (history !== window.history) history = window.history;\n\n    // setter\n    if (url) {\n      var sameState = lastHistoryState === state;\n\n      // Don't change anything if previous and current URLs and states match. This also prevents\n      // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.\n      // See https://github.com/angular/angular.js/commit/ffb2701\n      if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {\n        return self;\n      }\n      var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);\n      lastBrowserUrl = url;\n      lastHistoryState = state;\n      // Don't use history API if only the hash changed\n      // due to a bug in IE10/IE11 which leads\n      // to not firing a `hashchange` nor `popstate` event\n      // in some cases (see #9143).\n      if ($sniffer.history && (!sameBase || !sameState)) {\n        history[replace ? 'replaceState' : 'pushState'](state, '', url);\n        cacheState();\n      } else {\n        if (!sameBase) {\n          pendingLocation = url;\n        }\n        if (replace) {\n          location.replace(url);\n        } else if (!sameBase) {\n          location.href = url;\n        } else {\n          location.hash = getHash(url);\n        }\n        if (location.href !== url) {\n          pendingLocation = url;\n        }\n      }\n      if (pendingLocation) {\n        pendingLocation = url;\n      }\n      return self;\n    // getter\n    } else {\n      // - pendingLocation is needed as browsers don't allow to read out\n      //   the new location.href if a reload happened or if there is a bug like in iOS 9 (see\n      //   https://openradar.appspot.com/22186109).\n      // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172\n      return pendingLocation || location.href.replace(/%27/g,'\\'');\n    }\n  };\n\n  /**\n   * @name $browser#state\n   *\n   * @description\n   * This method is a getter.\n   *\n   * Return history.state or null if history.state is undefined.\n   *\n   * @returns {object} state\n   */\n  self.state = function() {\n    return cachedState;\n  };\n\n  var urlChangeListeners = [],\n      urlChangeInit = false;\n\n  function cacheStateAndFireUrlChange() {\n    pendingLocation = null;\n    fireStateOrUrlChange();\n  }\n\n  // This variable should be used *only* inside the cacheState function.\n  var lastCachedState = null;\n  function cacheState() {\n    // This should be the only place in $browser where `history.state` is read.\n    cachedState = getCurrentState();\n    cachedState = isUndefined(cachedState) ? null : cachedState;\n\n    // Prevent callbacks fo fire twice if both hashchange & popstate were fired.\n    if (equals(cachedState, lastCachedState)) {\n      cachedState = lastCachedState;\n    }\n\n    lastCachedState = cachedState;\n    lastHistoryState = cachedState;\n  }\n\n  function fireStateOrUrlChange() {\n    var prevLastHistoryState = lastHistoryState;\n    cacheState();\n\n    if (lastBrowserUrl === self.url() && prevLastHistoryState === cachedState) {\n      return;\n    }\n\n    lastBrowserUrl = self.url();\n    lastHistoryState = cachedState;\n    forEach(urlChangeListeners, function(listener) {\n      listener(self.url(), cachedState);\n    });\n  }\n\n  /**\n   * @name $browser#onUrlChange\n   *\n   * @description\n   * Register callback function that will be called, when url changes.\n   *\n   * It's only called when the url is changed from outside of angular:\n   * - user types different url into address bar\n   * - user clicks on history (forward/back) button\n   * - user clicks on a link\n   *\n   * It's not called when url is changed by $browser.url() method\n   *\n   * The listener gets called with new url as parameter.\n   *\n   * NOTE: this api is intended for use only by the $location service. Please use the\n   * {@link ng.$location $location service} to monitor url changes in angular apps.\n   *\n   * @param {function(string)} listener Listener function to be called when url changes.\n   * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.\n   */\n  self.onUrlChange = function(callback) {\n    // TODO(vojta): refactor to use node's syntax for events\n    if (!urlChangeInit) {\n      // We listen on both (hashchange/popstate) when available, as some browsers don't\n      // fire popstate when user changes the address bar and don't fire hashchange when url\n      // changed by push/replaceState\n\n      // html5 history api - popstate event\n      if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange);\n      // hashchange event\n      jqLite(window).on('hashchange', cacheStateAndFireUrlChange);\n\n      urlChangeInit = true;\n    }\n\n    urlChangeListeners.push(callback);\n    return callback;\n  };\n\n  /**\n   * @private\n   * Remove popstate and hashchange handler from window.\n   *\n   * NOTE: this api is intended for use only by $rootScope.\n   */\n  self.$$applicationDestroyed = function() {\n    jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange);\n  };\n\n  /**\n   * Checks whether the url has changed outside of Angular.\n   * Needs to be exported to be able to check for changes that have been done in sync,\n   * as hashchange/popstate events fire in async.\n   */\n  self.$$checkUrlChange = fireStateOrUrlChange;\n\n  //////////////////////////////////////////////////////////////\n  // Misc API\n  //////////////////////////////////////////////////////////////\n\n  /**\n   * @name $browser#baseHref\n   *\n   * @description\n   * Returns current <base href>\n   * (always relative - without domain)\n   *\n   * @returns {string} The current base href\n   */\n  self.baseHref = function() {\n    var href = baseElement.attr('href');\n    return href ? href.replace(/^(https?:)?\\/\\/[^/]*/, '') : '';\n  };\n\n  /**\n   * @name $browser#defer\n   * @param {function()} fn A function, who's execution should be deferred.\n   * @param {number=} [delay=0] of milliseconds to defer the function execution.\n   * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.\n   *\n   * @description\n   * Executes a fn asynchronously via `setTimeout(fn, delay)`.\n   *\n   * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using\n   * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed\n   * via `$browser.defer.flush()`.\n   *\n   */\n  self.defer = function(fn, delay) {\n    var timeoutId;\n    outstandingRequestCount++;\n    timeoutId = setTimeout(function() {\n      delete pendingDeferIds[timeoutId];\n      completeOutstandingRequest(fn);\n    }, delay || 0);\n    pendingDeferIds[timeoutId] = true;\n    return timeoutId;\n  };\n\n\n  /**\n   * @name $browser#defer.cancel\n   *\n   * @description\n   * Cancels a deferred task identified with `deferId`.\n   *\n   * @param {*} deferId Token returned by the `$browser.defer` function.\n   * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n   *                    canceled.\n   */\n  self.defer.cancel = function(deferId) {\n    if (pendingDeferIds[deferId]) {\n      delete pendingDeferIds[deferId];\n      clearTimeout(deferId);\n      completeOutstandingRequest(noop);\n      return true;\n    }\n    return false;\n  };\n\n}\n\n/** @this */\nfunction $BrowserProvider() {\n  this.$get = ['$window', '$log', '$sniffer', '$document',\n      function($window, $log, $sniffer, $document) {\n        return new Browser($window, $document, $log, $sniffer);\n      }];\n}\n\n/**\n * @ngdoc service\n * @name $cacheFactory\n * @this\n *\n * @description\n * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to\n * them.\n *\n * ```js\n *\n *  var cache = $cacheFactory('cacheId');\n *  expect($cacheFactory.get('cacheId')).toBe(cache);\n *  expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();\n *\n *  cache.put(\"key\", \"value\");\n *  cache.put(\"another key\", \"another value\");\n *\n *  // We've specified no options on creation\n *  expect(cache.info()).toEqual({id: 'cacheId', size: 2});\n *\n * ```\n *\n *\n * @param {string} cacheId Name or id of the newly created cache.\n * @param {object=} options Options object that specifies the cache behavior. Properties:\n *\n *   - `{number=}` `capacity` — turns the cache into LRU cache.\n *\n * @returns {object} Newly created cache object with the following set of methods:\n *\n * - `{object}` `info()` — Returns id, size, and options of cache.\n * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns\n *   it.\n * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.\n * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.\n * - `{void}` `removeAll()` — Removes all cached values.\n * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.\n *\n * @example\n   <example module=\"cacheExampleApp\" name=\"cache-factory\">\n     <file name=\"index.html\">\n       <div ng-controller=\"CacheController\">\n         <input ng-model=\"newCacheKey\" placeholder=\"Key\">\n         <input ng-model=\"newCacheValue\" placeholder=\"Value\">\n         <button ng-click=\"put(newCacheKey, newCacheValue)\">Cache</button>\n\n         <p ng-if=\"keys.length\">Cached Values</p>\n         <div ng-repeat=\"key in keys\">\n           <span ng-bind=\"key\"></span>\n           <span>: </span>\n           <b ng-bind=\"cache.get(key)\"></b>\n         </div>\n\n         <p>Cache Info</p>\n         <div ng-repeat=\"(key, value) in cache.info()\">\n           <span ng-bind=\"key\"></span>\n           <span>: </span>\n           <b ng-bind=\"value\"></b>\n         </div>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('cacheExampleApp', []).\n         controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {\n           $scope.keys = [];\n           $scope.cache = $cacheFactory('cacheId');\n           $scope.put = function(key, value) {\n             if (angular.isUndefined($scope.cache.get(key))) {\n               $scope.keys.push(key);\n             }\n             $scope.cache.put(key, angular.isUndefined(value) ? null : value);\n           };\n         }]);\n     </file>\n     <file name=\"style.css\">\n       p {\n         margin: 10px 0 3px;\n       }\n     </file>\n   </example>\n */\nfunction $CacheFactoryProvider() {\n\n  this.$get = function() {\n    var caches = {};\n\n    function cacheFactory(cacheId, options) {\n      if (cacheId in caches) {\n        throw minErr('$cacheFactory')('iid', 'CacheId \\'{0}\\' is already taken!', cacheId);\n      }\n\n      var size = 0,\n          stats = extend({}, options, {id: cacheId}),\n          data = createMap(),\n          capacity = (options && options.capacity) || Number.MAX_VALUE,\n          lruHash = createMap(),\n          freshEnd = null,\n          staleEnd = null;\n\n      /**\n       * @ngdoc type\n       * @name $cacheFactory.Cache\n       *\n       * @description\n       * A cache object used to store and retrieve data, primarily used by\n       * {@link $http $http} and the {@link ng.directive:script script} directive to cache\n       * templates and other data.\n       *\n       * ```js\n       *  angular.module('superCache')\n       *    .factory('superCache', ['$cacheFactory', function($cacheFactory) {\n       *      return $cacheFactory('super-cache');\n       *    }]);\n       * ```\n       *\n       * Example test:\n       *\n       * ```js\n       *  it('should behave like a cache', inject(function(superCache) {\n       *    superCache.put('key', 'value');\n       *    superCache.put('another key', 'another value');\n       *\n       *    expect(superCache.info()).toEqual({\n       *      id: 'super-cache',\n       *      size: 2\n       *    });\n       *\n       *    superCache.remove('another key');\n       *    expect(superCache.get('another key')).toBeUndefined();\n       *\n       *    superCache.removeAll();\n       *    expect(superCache.info()).toEqual({\n       *      id: 'super-cache',\n       *      size: 0\n       *    });\n       *  }));\n       * ```\n       */\n      return (caches[cacheId] = {\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#put\n         * @kind function\n         *\n         * @description\n         * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be\n         * retrieved later, and incrementing the size of the cache if the key was not already\n         * present in the cache. If behaving like an LRU cache, it will also remove stale\n         * entries from the set.\n         *\n         * It will not insert undefined values into the cache.\n         *\n         * @param {string} key the key under which the cached data is stored.\n         * @param {*} value the value to store alongside the key. If it is undefined, the key\n         *    will not be stored.\n         * @returns {*} the value stored.\n         */\n        put: function(key, value) {\n          if (isUndefined(value)) return;\n          if (capacity < Number.MAX_VALUE) {\n            var lruEntry = lruHash[key] || (lruHash[key] = {key: key});\n\n            refresh(lruEntry);\n          }\n\n          if (!(key in data)) size++;\n          data[key] = value;\n\n          if (size > capacity) {\n            this.remove(staleEnd.key);\n          }\n\n          return value;\n        },\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#get\n         * @kind function\n         *\n         * @description\n         * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.\n         *\n         * @param {string} key the key of the data to be retrieved\n         * @returns {*} the value stored.\n         */\n        get: function(key) {\n          if (capacity < Number.MAX_VALUE) {\n            var lruEntry = lruHash[key];\n\n            if (!lruEntry) return;\n\n            refresh(lruEntry);\n          }\n\n          return data[key];\n        },\n\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#remove\n         * @kind function\n         *\n         * @description\n         * Removes an entry from the {@link $cacheFactory.Cache Cache} object.\n         *\n         * @param {string} key the key of the entry to be removed\n         */\n        remove: function(key) {\n          if (capacity < Number.MAX_VALUE) {\n            var lruEntry = lruHash[key];\n\n            if (!lruEntry) return;\n\n            if (lruEntry === freshEnd) freshEnd = lruEntry.p;\n            if (lruEntry === staleEnd) staleEnd = lruEntry.n;\n            link(lruEntry.n,lruEntry.p);\n\n            delete lruHash[key];\n          }\n\n          if (!(key in data)) return;\n\n          delete data[key];\n          size--;\n        },\n\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#removeAll\n         * @kind function\n         *\n         * @description\n         * Clears the cache object of any entries.\n         */\n        removeAll: function() {\n          data = createMap();\n          size = 0;\n          lruHash = createMap();\n          freshEnd = staleEnd = null;\n        },\n\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#destroy\n         * @kind function\n         *\n         * @description\n         * Destroys the {@link $cacheFactory.Cache Cache} object entirely,\n         * removing it from the {@link $cacheFactory $cacheFactory} set.\n         */\n        destroy: function() {\n          data = null;\n          stats = null;\n          lruHash = null;\n          delete caches[cacheId];\n        },\n\n\n        /**\n         * @ngdoc method\n         * @name $cacheFactory.Cache#info\n         * @kind function\n         *\n         * @description\n         * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.\n         *\n         * @returns {object} an object with the following properties:\n         *   <ul>\n         *     <li>**id**: the id of the cache instance</li>\n         *     <li>**size**: the number of entries kept in the cache instance</li>\n         *     <li>**...**: any additional properties from the options object when creating the\n         *       cache.</li>\n         *   </ul>\n         */\n        info: function() {\n          return extend({}, stats, {size: size});\n        }\n      });\n\n\n      /**\n       * makes the `entry` the freshEnd of the LRU linked list\n       */\n      function refresh(entry) {\n        if (entry !== freshEnd) {\n          if (!staleEnd) {\n            staleEnd = entry;\n          } else if (staleEnd === entry) {\n            staleEnd = entry.n;\n          }\n\n          link(entry.n, entry.p);\n          link(entry, freshEnd);\n          freshEnd = entry;\n          freshEnd.n = null;\n        }\n      }\n\n\n      /**\n       * bidirectionally links two entries of the LRU linked list\n       */\n      function link(nextEntry, prevEntry) {\n        if (nextEntry !== prevEntry) {\n          if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify\n          if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify\n        }\n      }\n    }\n\n\n  /**\n   * @ngdoc method\n   * @name $cacheFactory#info\n   *\n   * @description\n   * Get information about all the caches that have been created\n   *\n   * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`\n   */\n    cacheFactory.info = function() {\n      var info = {};\n      forEach(caches, function(cache, cacheId) {\n        info[cacheId] = cache.info();\n      });\n      return info;\n    };\n\n\n  /**\n   * @ngdoc method\n   * @name $cacheFactory#get\n   *\n   * @description\n   * Get access to a cache object by the `cacheId` used when it was created.\n   *\n   * @param {string} cacheId Name or id of a cache to access.\n   * @returns {object} Cache object identified by the cacheId or undefined if no such cache.\n   */\n    cacheFactory.get = function(cacheId) {\n      return caches[cacheId];\n    };\n\n\n    return cacheFactory;\n  };\n}\n\n/**\n * @ngdoc service\n * @name $templateCache\n * @this\n *\n * @description\n * The first time a template is used, it is loaded in the template cache for quick retrieval. You\n * can load templates directly into the cache in a `script` tag, or by consuming the\n * `$templateCache` service directly.\n *\n * Adding via the `script` tag:\n *\n * ```html\n *   <script type=\"text/ng-template\" id=\"templateId.html\">\n *     <p>This is the content of the template</p>\n *   </script>\n * ```\n *\n * **Note:** the `script` tag containing the template does not need to be included in the `head` of\n * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,\n * element with ng-app attribute), otherwise the template will be ignored.\n *\n * Adding via the `$templateCache` service:\n *\n * ```js\n * var myApp = angular.module('myApp', []);\n * myApp.run(function($templateCache) {\n *   $templateCache.put('templateId.html', 'This is the content of the template');\n * });\n * ```\n *\n * To retrieve the template later, simply use it in your component:\n * ```js\n * myApp.component('myComponent', {\n *    templateUrl: 'templateId.html'\n * });\n * ```\n *\n * or get it via the `$templateCache` service:\n * ```js\n * $templateCache.get('templateId.html')\n * ```\n *\n * See {@link ng.$cacheFactory $cacheFactory}.\n *\n */\nfunction $TemplateCacheProvider() {\n  this.$get = ['$cacheFactory', function($cacheFactory) {\n    return $cacheFactory('templates');\n  }];\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *     Any commits to this file should be reviewed with security in mind.  *\n *   Changes to this file can potentially create security vulnerabilities. *\n *          An approval from 2 Core members with history of modifying      *\n *                         this file is required.                          *\n *                                                                         *\n *  Does the change somehow allow for arbitrary javascript to be executed? *\n *    Or allows for someone to change the prototype of built-in objects?   *\n *     Or gives undesired access to variables like document or window?    *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!\n *\n * DOM-related variables:\n *\n * - \"node\" - DOM Node\n * - \"element\" - DOM Element or Node\n * - \"$node\" or \"$element\" - jqLite-wrapped node or element\n *\n *\n * Compiler related stuff:\n *\n * - \"linkFn\" - linking fn of a single directive\n * - \"nodeLinkFn\" - function that aggregates all linking fns for a particular node\n * - \"childLinkFn\" -  function that aggregates all linking fns for child nodes of a particular node\n * - \"compositeLinkFn\" - function that aggregates all linking fns for a compilation root (nodeList)\n */\n\n\n/**\n * @ngdoc service\n * @name $compile\n * @kind function\n *\n * @description\n * Compiles an HTML string or DOM into a template and produces a template function, which\n * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.\n *\n * The compilation is a process of walking the DOM tree and matching DOM elements to\n * {@link ng.$compileProvider#directive directives}.\n *\n * <div class=\"alert alert-warning\">\n * **Note:** This document is an in-depth reference of all directive options.\n * For a gentle introduction to directives with examples of common use cases,\n * see the {@link guide/directive directive guide}.\n * </div>\n *\n * ## Comprehensive Directive API\n *\n * There are many different options for a directive.\n *\n * The difference resides in the return value of the factory function.\n * You can either return a {@link $compile#directive-definition-object Directive Definition Object (see below)}\n * that defines the directive properties, or just the `postLink` function (all other properties will have\n * the default values).\n *\n * <div class=\"alert alert-success\">\n * **Best Practice:** It's recommended to use the \"directive definition object\" form.\n * </div>\n *\n * Here's an example directive declared with a Directive Definition Object:\n *\n * ```js\n *   var myModule = angular.module(...);\n *\n *   myModule.directive('directiveName', function factory(injectables) {\n *     var directiveDefinitionObject = {\n *       {@link $compile#-priority- priority}: 0,\n *       {@link $compile#-template- template}: '<div></div>', // or // function(tElement, tAttrs) { ... },\n *       // or\n *       // {@link $compile#-templateurl- templateUrl}: 'directive.html', // or // function(tElement, tAttrs) { ... },\n *       {@link $compile#-transclude- transclude}: false,\n *       {@link $compile#-restrict- restrict}: 'A',\n *       {@link $compile#-templatenamespace- templateNamespace}: 'html',\n *       {@link $compile#-scope- scope}: false,\n *       {@link $compile#-controller- controller}: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },\n *       {@link $compile#-controlleras- controllerAs}: 'stringIdentifier',\n *       {@link $compile#-bindtocontroller- bindToController}: false,\n *       {@link $compile#-require- require}: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],\n *       {@link $compile#-multielement- multiElement}: false,\n *       {@link $compile#-compile- compile}: function compile(tElement, tAttrs, transclude) {\n *         return {\n *            {@link $compile#pre-linking-function pre}: function preLink(scope, iElement, iAttrs, controller) { ... },\n *            {@link $compile#post-linking-function post}: function postLink(scope, iElement, iAttrs, controller) { ... }\n *         }\n *         // or\n *         // return function postLink( ... ) { ... }\n *       },\n *       // or\n *       // {@link $compile#-link- link}: {\n *       //  {@link $compile#pre-linking-function pre}: function preLink(scope, iElement, iAttrs, controller) { ... },\n *       //  {@link $compile#post-linking-function post}: function postLink(scope, iElement, iAttrs, controller) { ... }\n *       // }\n *       // or\n *       // {@link $compile#-link- link}: function postLink( ... ) { ... }\n *     };\n *     return directiveDefinitionObject;\n *   });\n * ```\n *\n * <div class=\"alert alert-warning\">\n * **Note:** Any unspecified options will use the default value. You can see the default values below.\n * </div>\n *\n * Therefore the above can be simplified as:\n *\n * ```js\n *   var myModule = angular.module(...);\n *\n *   myModule.directive('directiveName', function factory(injectables) {\n *     var directiveDefinitionObject = {\n *       link: function postLink(scope, iElement, iAttrs) { ... }\n *     };\n *     return directiveDefinitionObject;\n *     // or\n *     // return function postLink(scope, iElement, iAttrs) { ... }\n *   });\n * ```\n *\n * ### Life-cycle hooks\n * Directive controllers can provide the following methods that are called by Angular at points in the life-cycle of the\n * directive:\n * * `$onInit()` - Called on each controller after all the controllers on an element have been constructed and\n *   had their bindings initialized (and before the pre &amp; post linking functions for the directives on\n *   this element). This is a good place to put initialization code for your controller.\n * * `$onChanges(changesObj)` - Called whenever one-way (`<`) or interpolation (`@`) bindings are updated. The\n *   `changesObj` is a hash whose keys are the names of the bound properties that have changed, and the values are an\n *   object of the form `{ currentValue, previousValue, isFirstChange() }`. Use this hook to trigger updates within a\n *   component such as cloning the bound value to prevent accidental mutation of the outer value. Note that this will\n *   also be called when your bindings are initialized.\n * * `$doCheck()` - Called on each turn of the digest cycle. Provides an opportunity to detect and act on\n *   changes. Any actions that you wish to take in response to the changes that you detect must be\n *   invoked from this hook; implementing this has no effect on when `$onChanges` is called. For example, this hook\n *   could be useful if you wish to perform a deep equality check, or to check a Date object, changes to which would not\n *   be detected by Angular's change detector and thus not trigger `$onChanges`. This hook is invoked with no arguments;\n *   if detecting changes, you must store the previous value(s) for comparison to the current values.\n * * `$onDestroy()` - Called on a controller when its containing scope is destroyed. Use this hook for releasing\n *   external resources, watches and event handlers. Note that components have their `$onDestroy()` hooks called in\n *   the same order as the `$scope.$broadcast` events are triggered, which is top down. This means that parent\n *   components will have their `$onDestroy()` hook called before child components.\n * * `$postLink()` - Called after this controller's element and its children have been linked. Similar to the post-link\n *   function this hook can be used to set up DOM event handlers and do direct DOM manipulation.\n *   Note that child elements that contain `templateUrl` directives will not have been compiled and linked since\n *   they are waiting for their template to load asynchronously and their own compilation and linking has been\n *   suspended until that occurs.\n *\n * #### Comparison with Angular 2 life-cycle hooks\n * Angular 2 also uses life-cycle hooks for its components. While the Angular 1 life-cycle hooks are similar there are\n * some differences that you should be aware of, especially when it comes to moving your code from Angular 1 to Angular 2:\n *\n * * Angular 1 hooks are prefixed with `$`, such as `$onInit`. Angular 2 hooks are prefixed with `ng`, such as `ngOnInit`.\n * * Angular 1 hooks can be defined on the controller prototype or added to the controller inside its constructor.\n *   In Angular 2 you can only define hooks on the prototype of the Component class.\n * * Due to the differences in change-detection, you may get many more calls to `$doCheck` in Angular 1 than you would to\n *   `ngDoCheck` in Angular 2\n * * Changes to the model inside `$doCheck` will trigger new turns of the digest loop, which will cause the changes to be\n *   propagated throughout the application.\n *   Angular 2 does not allow the `ngDoCheck` hook to trigger a change outside of the component. It will either throw an\n *   error or do nothing depending upon the state of `enableProdMode()`.\n *\n * #### Life-cycle hook examples\n *\n * This example shows how you can check for mutations to a Date object even though the identity of the object\n * has not changed.\n *\n * <example name=\"doCheckDateExample\" module=\"do-check-module\">\n *   <file name=\"app.js\">\n *     angular.module('do-check-module', [])\n *       .component('app', {\n *         template:\n *           'Month: <input ng-model=\"$ctrl.month\" ng-change=\"$ctrl.updateDate()\">' +\n *           'Date: {{ $ctrl.date }}' +\n *           '<test date=\"$ctrl.date\"></test>',\n *         controller: function() {\n *           this.date = new Date();\n *           this.month = this.date.getMonth();\n *           this.updateDate = function() {\n *             this.date.setMonth(this.month);\n *           };\n *         }\n *       })\n *       .component('test', {\n *         bindings: { date: '<' },\n *         template:\n *           '<pre>{{ $ctrl.log | json }}</pre>',\n *         controller: function() {\n *           var previousValue;\n *           this.log = [];\n *           this.$doCheck = function() {\n *             var currentValue = this.date && this.date.valueOf();\n *             if (previousValue !== currentValue) {\n *               this.log.push('doCheck: date mutated: ' + this.date);\n *               previousValue = currentValue;\n *             }\n *           };\n *         }\n *       });\n *   </file>\n *   <file name=\"index.html\">\n *     <app></app>\n *   </file>\n * </example>\n *\n * This example show how you might use `$doCheck` to trigger changes in your component's inputs even if the\n * actual identity of the component doesn't change. (Be aware that cloning and deep equality checks on large\n * arrays or objects can have a negative impact on your application performance)\n *\n * <example name=\"doCheckArrayExample\" module=\"do-check-module\">\n *   <file name=\"index.html\">\n *     <div ng-init=\"items = []\">\n *       <button ng-click=\"items.push(items.length)\">Add Item</button>\n *       <button ng-click=\"items = []\">Reset Items</button>\n *       <pre>{{ items }}</pre>\n *       <test items=\"items\"></test>\n *     </div>\n *   </file>\n *   <file name=\"app.js\">\n *      angular.module('do-check-module', [])\n *        .component('test', {\n *          bindings: { items: '<' },\n *          template:\n *            '<pre>{{ $ctrl.log | json }}</pre>',\n *          controller: function() {\n *            this.log = [];\n *\n *            this.$doCheck = function() {\n *              if (this.items_ref !== this.items) {\n *                this.log.push('doCheck: items changed');\n *                this.items_ref = this.items;\n *              }\n *              if (!angular.equals(this.items_clone, this.items)) {\n *                this.log.push('doCheck: items mutated');\n *                this.items_clone = angular.copy(this.items);\n *              }\n *            };\n *          }\n *        });\n *   </file>\n * </example>\n *\n *\n * ### Directive Definition Object\n *\n * The directive definition object provides instructions to the {@link ng.$compile\n * compiler}. The attributes are:\n *\n * #### `multiElement`\n * When this property is set to true (default is `false`), the HTML compiler will collect DOM nodes between\n * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them\n * together as the directive elements. It is recommended that this feature be used on directives\n * which are not strictly behavioral (such as {@link ngClick}), and which\n * do not manipulate or replace child nodes (such as {@link ngInclude}).\n *\n * #### `priority`\n * When there are multiple directives defined on a single DOM element, sometimes it\n * is necessary to specify the order in which the directives are applied. The `priority` is used\n * to sort the directives before their `compile` functions get called. Priority is defined as a\n * number. Directives with greater numerical `priority` are compiled first. Pre-link functions\n * are also run in priority order, but post-link functions are run in reverse order. The order\n * of directives with the same priority is undefined. The default priority is `0`.\n *\n * #### `terminal`\n * If set to true then the current `priority` will be the last set of directives\n * which will execute (any directives at the current priority will still execute\n * as the order of execution on same `priority` is undefined). Note that expressions\n * and other directives used in the directive's template will also be excluded from execution.\n *\n * #### `scope`\n * The scope property can be `false`, `true`, or an object:\n *\n * * **`false` (default):** No scope will be created for the directive. The directive will use its\n * parent's scope.\n *\n * * **`true`:** A new child scope that prototypically inherits from its parent will be created for\n * the directive's element. If multiple directives on the same element request a new scope,\n * only one new scope is created.\n *\n * * **`{...}` (an object hash):** A new \"isolate\" scope is created for the directive's template.\n * The 'isolate' scope differs from normal scope in that it does not prototypically\n * inherit from its parent scope. This is useful when creating reusable components, which should not\n * accidentally read or modify data in the parent scope. Note that an isolate scope\n * directive without a `template` or `templateUrl` will not apply the isolate scope\n * to its children elements.\n *\n * The 'isolate' scope object hash defines a set of local scope properties derived from attributes on the\n * directive's element. These local properties are useful for aliasing values for templates. The keys in\n * the object hash map to the name of the property on the isolate scope; the values define how the property\n * is bound to the parent scope, via matching attributes on the directive's element:\n *\n * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is\n *   always a string since DOM attributes are strings. If no `attr` name is specified then the\n *   attribute name is assumed to be the same as the local name. Given `<my-component\n *   my-attr=\"hello {{name}}\">` and the isolate scope definition `scope: { localName:'@myAttr' }`,\n *   the directive's scope property `localName` will reflect the interpolated value of `hello\n *   {{name}}`. As the `name` attribute changes so will the `localName` property on the directive's\n *   scope. The `name` is read from the parent scope (not the directive's scope).\n *\n * * `=` or `=attr` - set up a bidirectional binding between a local scope property and an expression\n *   passed via the attribute `attr`. The expression is evaluated in the context of the parent scope.\n *   If no `attr` name is specified then the attribute name is assumed to be the same as the local\n *   name. Given `<my-component my-attr=\"parentModel\">` and the isolate scope definition `scope: {\n *   localModel: '=myAttr' }`, the property `localModel` on the directive's scope will reflect the\n *   value of `parentModel` on the parent scope. Changes to `parentModel` will be reflected in\n *   `localModel` and vice versa. Optional attributes should be marked as such with a question mark:\n *   `=?` or `=?attr`. If the binding expression is non-assignable, or if the attribute isn't\n *   optional and doesn't exist, an exception ({@link error/$compile/nonassign `$compile:nonassign`})\n *   will be thrown upon discovering changes to the local value, since it will be impossible to sync\n *   them back to the parent scope. By default, the {@link ng.$rootScope.Scope#$watch `$watch`}\n *   method is used for tracking changes, and the equality check is based on object identity.\n *   However, if an object literal or an array literal is passed as the binding expression, the\n *   equality check is done by value (using the {@link angular.equals} function). It's also possible\n *   to watch the evaluated value shallowly with {@link ng.$rootScope.Scope#$watchCollection\n *   `$watchCollection`}: use `=*` or `=*attr` (`=*?` or `=*?attr` if the attribute is optional).\n *\n  * * `<` or `<attr` - set up a one-way (one-directional) binding between a local scope property and an\n *   expression passed via the attribute `attr`. The expression is evaluated in the context of the\n *   parent scope. If no `attr` name is specified then the attribute name is assumed to be the same as the\n *   local name. You can also make the binding optional by adding `?`: `<?` or `<?attr`.\n *\n *   For example, given `<my-component my-attr=\"parentModel\">` and directive definition of\n *   `scope: { localModel:'<myAttr' }`, then the isolated scope property `localModel` will reflect the\n *   value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected\n *   in `localModel`, but changes in `localModel` will not reflect in `parentModel`. There are however\n *   two caveats:\n *     1. one-way binding does not copy the value from the parent to the isolate scope, it simply\n *     sets the same value. That means if your bound value is an object, changes to its properties\n *     in the isolated scope will be reflected in the parent scope (because both reference the same object).\n *     2. one-way binding watches changes to the **identity** of the parent value. That means the\n *     {@link ng.$rootScope.Scope#$watch `$watch`} on the parent value only fires if the reference\n *     to the value has changed. In most cases, this should not be of concern, but can be important\n *     to know if you one-way bind to an object, and then replace that object in the isolated scope.\n *     If you now change a property of the object in your parent scope, the change will not be\n *     propagated to the isolated scope, because the identity of the object on the parent scope\n *     has not changed. Instead you must assign a new object.\n *\n *   One-way binding is useful if you do not plan to propagate changes to your isolated scope bindings\n *   back to the parent. However, it does not make this completely impossible.\n *\n * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope. If\n *   no `attr` name is specified then the attribute name is assumed to be the same as the local name.\n *   Given `<my-component my-attr=\"count = count + value\">` and the isolate scope definition `scope: {\n *   localFn:'&myAttr' }`, the isolate scope property `localFn` will point to a function wrapper for\n *   the `count = count + value` expression. Often it's desirable to pass data from the isolated scope\n *   via an expression to the parent scope. This can be done by passing a map of local variable names\n *   and values into the expression wrapper fn. For example, if the expression is `increment(amount)`\n *   then we can specify the amount value by calling the `localFn` as `localFn({amount: 22})`.\n *\n * In general it's possible to apply more than one directive to one element, but there might be limitations\n * depending on the type of scope required by the directives. The following points will help explain these limitations.\n * For simplicity only two directives are taken into account, but it is also applicable for several directives:\n *\n * * **no scope** + **no scope** => Two directives which don't require their own scope will use their parent's scope\n * * **child scope** + **no scope** =>  Both directives will share one single child scope\n * * **child scope** + **child scope** =>  Both directives will share one single child scope\n * * **isolated scope** + **no scope** =>  The isolated directive will use it's own created isolated scope. The other directive will use\n * its parent's scope\n * * **isolated scope** + **child scope** =>  **Won't work!** Only one scope can be related to one element. Therefore these directives cannot\n * be applied to the same element.\n * * **isolated scope** + **isolated scope**  =>  **Won't work!** Only one scope can be related to one element. Therefore these directives\n * cannot be applied to the same element.\n *\n *\n * #### `bindToController`\n * This property is used to bind scope properties directly to the controller. It can be either\n * `true` or an object hash with the same format as the `scope` property.\n *\n * When an isolate scope is used for a directive (see above), `bindToController: true` will\n * allow a component to have its properties bound to the controller, rather than to scope.\n *\n * After the controller is instantiated, the initial values of the isolate scope bindings will be bound to the controller\n * properties. You can access these bindings once they have been initialized by providing a controller method called\n * `$onInit`, which is called after all the controllers on an element have been constructed and had their bindings\n * initialized.\n *\n * <div class=\"alert alert-warning\">\n * **Deprecation warning:** if `$compileProcvider.preAssignBindingsEnabled(true)` was called, bindings for non-ES6 class\n * controllers are bound to `this` before the controller constructor is called but this use is now deprecated. Please\n * place initialization code that relies upon bindings inside a `$onInit` method on the controller, instead.\n * </div>\n *\n * It is also possible to set `bindToController` to an object hash with the same format as the `scope` property.\n * This will set up the scope bindings to the controller directly. Note that `scope` can still be used\n * to define which kind of scope is created. By default, no scope is created. Use `scope: {}` to create an isolate\n * scope (useful for component directives).\n *\n * If both `bindToController` and `scope` are defined and have object hashes, `bindToController` overrides `scope`.\n *\n *\n * #### `controller`\n * Controller constructor function. The controller is instantiated before the\n * pre-linking phase and can be accessed by other directives (see\n * `require` attribute). This allows the directives to communicate with each other and augment\n * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:\n *\n * * `$scope` - Current scope associated with the element\n * * `$element` - Current element\n * * `$attrs` - Current attributes object for the element\n * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:\n *   `function([scope], cloneLinkingFn, futureParentElement, slotName)`:\n *    * `scope`: (optional) override the scope.\n *    * `cloneLinkingFn`: (optional) argument to create clones of the original transcluded content.\n *    * `futureParentElement` (optional):\n *        * defines the parent to which the `cloneLinkingFn` will add the cloned elements.\n *        * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.\n *        * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)\n *          and when the `cloneLinkingFn` is passed,\n *          as those elements need to created and cloned in a special way when they are defined outside their\n *          usual containers (e.g. like `<svg>`).\n *        * See also the `directive.templateNamespace` property.\n *    * `slotName`: (optional) the name of the slot to transclude. If falsy (e.g. `null`, `undefined` or `''`)\n *      then the default transclusion is provided.\n *    The `$transclude` function also has a method on it, `$transclude.isSlotFilled(slotName)`, which returns\n *    `true` if the specified slot contains content (i.e. one or more DOM nodes).\n *\n * #### `require`\n * Require another directive and inject its controller as the fourth argument to the linking function. The\n * `require` property can be a string, an array or an object:\n * * a **string** containing the name of the directive to pass to the linking function\n * * an **array** containing the names of directives to pass to the linking function. The argument passed to the\n * linking function will be an array of controllers in the same order as the names in the `require` property\n * * an **object** whose property values are the names of the directives to pass to the linking function. The argument\n * passed to the linking function will also be an object with matching keys, whose values will hold the corresponding\n * controllers.\n *\n * If the `require` property is an object and `bindToController` is truthy, then the required controllers are\n * bound to the controller using the keys of the `require` property. This binding occurs after all the controllers\n * have been constructed but before `$onInit` is called.\n * If the name of the required controller is the same as the local name (the key), the name can be\n * omitted. For example, `{parentDir: '^^'}` is equivalent to `{parentDir: '^^parentDir'}`.\n * See the {@link $compileProvider#component} helper for an example of how this can be used.\n * If no such required directive(s) can be found, or if the directive does not have a controller, then an error is\n * raised (unless no link function is specified and the required controllers are not being bound to the directive\n * controller, in which case error checking is skipped). The name can be prefixed with:\n *\n * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.\n * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.\n * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.\n * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.\n * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass\n *   `null` to the `link` fn if not found.\n * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass\n *   `null` to the `link` fn if not found.\n *\n *\n * #### `controllerAs`\n * Identifier name for a reference to the controller in the directive's scope.\n * This allows the controller to be referenced from the directive template. This is especially\n * useful when a directive is used as component, i.e. with an `isolate` scope. It's also possible\n * to use it in a directive without an `isolate` / `new` scope, but you need to be aware that the\n * `controllerAs` reference might overwrite a property that already exists on the parent scope.\n *\n *\n * #### `restrict`\n * String of subset of `EACM` which restricts the directive to a specific directive\n * declaration style. If omitted, the defaults (elements and attributes) are used.\n *\n * * `E` - Element name (default): `<my-directive></my-directive>`\n * * `A` - Attribute (default): `<div my-directive=\"exp\"></div>`\n * * `C` - Class: `<div class=\"my-directive: exp;\"></div>`\n * * `M` - Comment: `<!-- directive: my-directive exp -->`\n *\n *\n * #### `templateNamespace`\n * String representing the document type used by the markup in the template.\n * AngularJS needs this information as those elements need to be created and cloned\n * in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.\n *\n * * `html` - All root nodes in the template are HTML. Root nodes may also be\n *   top-level elements such as `<svg>` or `<math>`.\n * * `svg` - The root nodes in the template are SVG elements (excluding `<math>`).\n * * `math` - The root nodes in the template are MathML elements (excluding `<svg>`).\n *\n * If no `templateNamespace` is specified, then the namespace is considered to be `html`.\n *\n * #### `template`\n * HTML markup that may:\n * * Replace the contents of the directive's element (default).\n * * Replace the directive's element itself (if `replace` is true - DEPRECATED).\n * * Wrap the contents of the directive's element (if `transclude` is true).\n *\n * Value may be:\n *\n * * A string. For example `<div red-on-hover>{{delete_str}}</div>`.\n * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`\n *   function api below) and returns a string value.\n *\n *\n * #### `templateUrl`\n * This is similar to `template` but the template is loaded from the specified URL, asynchronously.\n *\n * Because template loading is asynchronous the compiler will suspend compilation of directives on that element\n * for later when the template has been resolved.  In the meantime it will continue to compile and link\n * sibling and parent elements as though this element had not contained any directives.\n *\n * The compiler does not suspend the entire compilation to wait for templates to be loaded because this\n * would result in the whole app \"stalling\" until all templates are loaded asynchronously - even in the\n * case when only one deeply nested directive has `templateUrl`.\n *\n * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}\n *\n * You can specify `templateUrl` as a string representing the URL or as a function which takes two\n * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns\n * a string value representing the url.  In either case, the template URL is passed through {@link\n * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.\n *\n *\n * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0)\n * specify what the template should replace. Defaults to `false`.\n *\n * * `true` - the template will replace the directive's element.\n * * `false` - the template will replace the contents of the directive's element.\n *\n * The replacement process migrates all of the attributes / classes from the old element to the new\n * one. See the {@link guide/directive#template-expanding-directive\n * Directives Guide} for an example.\n *\n * There are very few scenarios where element replacement is required for the application function,\n * the main one being reusable custom components that are used within SVG contexts\n * (because SVG doesn't work with custom elements in the DOM tree).\n *\n * #### `transclude`\n * Extract the contents of the element where the directive appears and make it available to the directive.\n * The contents are compiled and provided to the directive as a **transclusion function**. See the\n * {@link $compile#transclusion Transclusion} section below.\n *\n *\n * #### `compile`\n *\n * ```js\n *   function compile(tElement, tAttrs, transclude) { ... }\n * ```\n *\n * The compile function deals with transforming the template DOM. Since most directives do not do\n * template transformation, it is not used often. The compile function takes the following arguments:\n *\n *   * `tElement` - template element - The element where the directive has been declared. It is\n *     safe to do template transformation on the element and child elements only.\n *\n *   * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared\n *     between all directive compile functions.\n *\n *   * `transclude` -  [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`\n *\n * <div class=\"alert alert-warning\">\n * **Note:** The template instance and the link instance may be different objects if the template has\n * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that\n * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration\n * should be done in a linking function rather than in a compile function.\n * </div>\n\n * <div class=\"alert alert-warning\">\n * **Note:** The compile function cannot handle directives that recursively use themselves in their\n * own templates or compile functions. Compiling these directives results in an infinite loop and\n * stack overflow errors.\n *\n * This can be avoided by manually using $compile in the postLink function to imperatively compile\n * a directive's template instead of relying on automatic template compilation via `template` or\n * `templateUrl` declaration or manual compilation inside the compile function.\n * </div>\n *\n * <div class=\"alert alert-danger\">\n * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it\n *   e.g. does not know about the right outer scope. Please use the transclude function that is passed\n *   to the link function instead.\n * </div>\n\n * A compile function can have a return value which can be either a function or an object.\n *\n * * returning a (post-link) function - is equivalent to registering the linking function via the\n *   `link` property of the config object when the compile function is empty.\n *\n * * returning an object with function(s) registered via `pre` and `post` properties - allows you to\n *   control when a linking function should be called during the linking phase. See info about\n *   pre-linking and post-linking functions below.\n *\n *\n * #### `link`\n * This property is used only if the `compile` property is not defined.\n *\n * ```js\n *   function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }\n * ```\n *\n * The link function is responsible for registering DOM listeners as well as updating the DOM. It is\n * executed after the template has been cloned. This is where most of the directive logic will be\n * put.\n *\n *   * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the\n *     directive for registering {@link ng.$rootScope.Scope#$watch watches}.\n *\n *   * `iElement` - instance element - The element where the directive is to be used. It is safe to\n *     manipulate the children of the element only in `postLink` function since the children have\n *     already been linked.\n *\n *   * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared\n *     between all directive linking functions.\n *\n *   * `controller` - the directive's required controller instance(s) - Instances are shared\n *     among all directives, which allows the directives to use the controllers as a communication\n *     channel. The exact value depends on the directive's `require` property:\n *       * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one\n *       * `string`: the controller instance\n *       * `array`: array of controller instances\n *\n *     If a required controller cannot be found, and it is optional, the instance is `null`,\n *     otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown.\n *\n *     Note that you can also require the directive's own controller - it will be made available like\n *     any other controller.\n *\n *   * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.\n *     This is the same as the `$transclude` parameter of directive controllers,\n *     see {@link ng.$compile#-controller- the controller section for details}.\n *     `function([scope], cloneLinkingFn, futureParentElement)`.\n *\n * #### Pre-linking function\n *\n * Executed before the child elements are linked. Not safe to do DOM transformation since the\n * compiler linking function will fail to locate the correct elements for linking.\n *\n * #### Post-linking function\n *\n * Executed after the child elements are linked.\n *\n * Note that child elements that contain `templateUrl` directives will not have been compiled\n * and linked since they are waiting for their template to load asynchronously and their own\n * compilation and linking has been suspended until that occurs.\n *\n * It is safe to do DOM transformation in the post-linking function on elements that are not waiting\n * for their async templates to be resolved.\n *\n *\n * ### Transclusion\n *\n * Transclusion is the process of extracting a collection of DOM elements from one part of the DOM and\n * copying them to another part of the DOM, while maintaining their connection to the original AngularJS\n * scope from where they were taken.\n *\n * Transclusion is used (often with {@link ngTransclude}) to insert the\n * original contents of a directive's element into a specified place in the template of the directive.\n * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded\n * content has access to the properties on the scope from which it was taken, even if the directive\n * has isolated scope.\n * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.\n *\n * This makes it possible for the widget to have private state for its template, while the transcluded\n * content has access to its originating scope.\n *\n * <div class=\"alert alert-warning\">\n * **Note:** When testing an element transclude directive you must not place the directive at the root of the\n * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives\n * Testing Transclusion Directives}.\n * </div>\n *\n * There are three kinds of transclusion depending upon whether you want to transclude just the contents of the\n * directive's element, the entire element or multiple parts of the element contents:\n *\n * * `true` - transclude the content (i.e. the child nodes) of the directive's element.\n * * `'element'` - transclude the whole of the directive's element including any directives on this\n *   element that defined at a lower priority than this directive. When used, the `template`\n *   property is ignored.\n * * **`{...}` (an object hash):** - map elements of the content onto transclusion \"slots\" in the template.\n *\n * **Mult-slot transclusion** is declared by providing an object for the `transclude` property.\n *\n * This object is a map where the keys are the name of the slot to fill and the value is an element selector\n * used to match the HTML to the slot. The element selector should be in normalized form (e.g. `myElement`)\n * and will match the standard element variants (e.g. `my-element`, `my:element`, `data-my-element`, etc).\n *\n * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}\n *\n * If the element selector is prefixed with a `?` then that slot is optional.\n *\n * For example, the transclude object `{ slotA: '?myCustomElement' }` maps `<my-custom-element>` elements to\n * the `slotA` slot, which can be accessed via the `$transclude` function or via the {@link ngTransclude} directive.\n *\n * Slots that are not marked as optional (`?`) will trigger a compile time error if there are no matching elements\n * in the transclude content. If you wish to know if an optional slot was filled with content, then you can call\n * `$transclude.isSlotFilled(slotName)` on the transclude function passed to the directive's link function and\n * injectable into the directive's controller.\n *\n *\n * #### Transclusion Functions\n *\n * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion\n * function** to the directive's `link` function and `controller`. This transclusion function is a special\n * **linking function** that will return the compiled contents linked to a new transclusion scope.\n *\n * <div class=\"alert alert-info\">\n * If you are just using {@link ngTransclude} then you don't need to worry about this function, since\n * ngTransclude will deal with it for us.\n * </div>\n *\n * If you want to manually control the insertion and removal of the transcluded content in your directive\n * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery\n * object that contains the compiled DOM, which is linked to the correct transclusion scope.\n *\n * When you call a transclusion function you can pass in a **clone attach function**. This function accepts\n * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded\n * content and the `scope` is the newly created transclusion scope, which the clone will be linked to.\n *\n * <div class=\"alert alert-info\">\n * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a transclude function\n * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.\n * </div>\n *\n * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone\n * attach function**:\n *\n * ```js\n * var transcludedContent, transclusionScope;\n *\n * $transclude(function(clone, scope) {\n *   element.append(clone);\n *   transcludedContent = clone;\n *   transclusionScope = scope;\n * });\n * ```\n *\n * Later, if you want to remove the transcluded content from your DOM then you should also destroy the\n * associated transclusion scope:\n *\n * ```js\n * transcludedContent.remove();\n * transclusionScope.$destroy();\n * ```\n *\n * <div class=\"alert alert-info\">\n * **Best Practice**: if you intend to add and remove transcluded content manually in your directive\n * (by calling the transclude function to get the DOM and calling `element.remove()` to remove it),\n * then you are also responsible for calling `$destroy` on the transclusion scope.\n * </div>\n *\n * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}\n * automatically destroy their transcluded clones as necessary so you do not need to worry about this if\n * you are simply using {@link ngTransclude} to inject the transclusion into your directive.\n *\n *\n * #### Transclusion Scopes\n *\n * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion\n * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed\n * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it\n * was taken.\n *\n * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look\n * like this:\n *\n * ```html\n * <div ng-app>\n *   <div isolate>\n *     <div transclusion>\n *     </div>\n *   </div>\n * </div>\n * ```\n *\n * The `$parent` scope hierarchy will look like this:\n *\n   ```\n   - $rootScope\n     - isolate\n       - transclusion\n   ```\n *\n * but the scopes will inherit prototypically from different scopes to their `$parent`.\n *\n   ```\n   - $rootScope\n     - transclusion\n   - isolate\n   ```\n *\n *\n * ### Attributes\n *\n * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the\n * `link()` or `compile()` functions. It has a variety of uses.\n *\n * * *Accessing normalized attribute names:* Directives like 'ngBind' can be expressed in many ways:\n *   'ng:bind', `data-ng-bind`, or 'x-ng-bind'. The attributes object allows for normalized access\n *   to the attributes.\n *\n * * *Directive inter-communication:* All directives share the same instance of the attributes\n *   object which allows the directives to use the attributes object as inter directive\n *   communication.\n *\n * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object\n *   allowing other directives to read the interpolated value.\n *\n * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes\n *   that contain interpolation (e.g. `src=\"{{bar}}\"`). Not only is this very efficient but it's also\n *   the only way to easily get the actual value because during the linking phase the interpolation\n *   hasn't been evaluated yet and so the value is at this time set to `undefined`.\n *\n * ```js\n * function linkingFn(scope, elm, attrs, ctrl) {\n *   // get the attribute value\n *   console.log(attrs.ngModel);\n *\n *   // change the attribute\n *   attrs.$set('ngModel', 'new value');\n *\n *   // observe changes to interpolated attribute\n *   attrs.$observe('ngModel', function(value) {\n *     console.log('ngModel has changed value to ' + value);\n *   });\n * }\n * ```\n *\n * ## Example\n *\n * <div class=\"alert alert-warning\">\n * **Note**: Typically directives are registered with `module.directive`. The example below is\n * to illustrate how `$compile` works.\n * </div>\n *\n <example module=\"compileExample\" name=\"compile\">\n   <file name=\"index.html\">\n    <script>\n      angular.module('compileExample', [], function($compileProvider) {\n        // configure new 'compile' directive by passing a directive\n        // factory function. The factory function injects the '$compile'\n        $compileProvider.directive('compile', function($compile) {\n          // directive factory creates a link function\n          return function(scope, element, attrs) {\n            scope.$watch(\n              function(scope) {\n                 // watch the 'compile' expression for changes\n                return scope.$eval(attrs.compile);\n              },\n              function(value) {\n                // when the 'compile' expression changes\n                // assign it into the current DOM\n                element.html(value);\n\n                // compile the new DOM and link it to the current\n                // scope.\n                // NOTE: we only compile .childNodes so that\n                // we don't get into infinite loop compiling ourselves\n                $compile(element.contents())(scope);\n              }\n            );\n          };\n        });\n      })\n      .controller('GreeterController', ['$scope', function($scope) {\n        $scope.name = 'Angular';\n        $scope.html = 'Hello {{name}}';\n      }]);\n    </script>\n    <div ng-controller=\"GreeterController\">\n      <input ng-model=\"name\"> <br/>\n      <textarea ng-model=\"html\"></textarea> <br/>\n      <div compile=\"html\"></div>\n    </div>\n   </file>\n   <file name=\"protractor.js\" type=\"protractor\">\n     it('should auto compile', function() {\n       var textarea = $('textarea');\n       var output = $('div[compile]');\n       // The initial state reads 'Hello Angular'.\n       expect(output.getText()).toBe('Hello Angular');\n       textarea.clear();\n       textarea.sendKeys('{{name}}!');\n       expect(output.getText()).toBe('Angular!');\n     });\n   </file>\n </example>\n\n *\n *\n * @param {string|DOMElement} element Element or HTML string to compile into a template function.\n * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.\n *\n * <div class=\"alert alert-danger\">\n * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it\n *   e.g. will not use the right outer scope. Please pass the transclude function as a\n *   `parentBoundTranscludeFn` to the link function instead.\n * </div>\n *\n * @param {number} maxPriority only apply directives lower than given priority (Only effects the\n *                 root element(s), not their children)\n * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template\n * (a DOM element/tree) to a scope. Where:\n *\n *  * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.\n *  * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the\n *  `template` and call the `cloneAttachFn` function allowing the caller to attach the\n *  cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is\n *  called as: <br/> `cloneAttachFn(clonedElement, scope)` where:\n *\n *      * `clonedElement` - is a clone of the original `element` passed into the compiler.\n *      * `scope` - is the current scope with which the linking function is working with.\n *\n *  * `options` - An optional object hash with linking options. If `options` is provided, then the following\n *  keys may be used to control linking behavior:\n *\n *      * `parentBoundTranscludeFn` - the transclude function made available to\n *        directives; if given, it will be passed through to the link functions of\n *        directives found in `element` during compilation.\n *      * `transcludeControllers` - an object hash with keys that map controller names\n *        to a hash with the key `instance`, which maps to the controller instance;\n *        if given, it will make the controllers available to directives on the compileNode:\n *        ```\n *        {\n *          parent: {\n *            instance: parentControllerInstance\n *          }\n *        }\n *        ```\n *      * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add\n *        the cloned elements; only needed for transcludes that are allowed to contain non html\n *        elements (e.g. SVG elements). See also the directive.controller property.\n *\n * Calling the linking function returns the element of the template. It is either the original\n * element passed in, or the clone of the element if the `cloneAttachFn` is provided.\n *\n * After linking the view is not updated until after a call to $digest which typically is done by\n * Angular automatically.\n *\n * If you need access to the bound view, there are two ways to do it:\n *\n * - If you are not asking the linking function to clone the template, create the DOM element(s)\n *   before you send them to the compiler and keep this reference around.\n *   ```js\n *     var element = $compile('<p>{{total}}</p>')(scope);\n *   ```\n *\n * - if on the other hand, you need the element to be cloned, the view reference from the original\n *   example would not point to the clone, but rather to the original template that was cloned. In\n *   this case, you can access the clone via the cloneAttachFn:\n *   ```js\n *     var templateElement = angular.element('<p>{{total}}</p>'),\n *         scope = ....;\n *\n *     var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {\n *       //attach the clone to DOM document at the right place\n *     });\n *\n *     //now we have reference to the cloned DOM via `clonedElement`\n *   ```\n *\n *\n * For information on how the compiler works, see the\n * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.\n *\n * @knownIssue\n *\n * ### Double Compilation\n *\n   Double compilation occurs when an already compiled part of the DOM gets\n   compiled again. This is an undesired effect and can lead to misbehaving directives, performance issues,\n   and memory leaks. Refer to the Compiler Guide {@link guide/compiler#double-compilation-and-how-to-avoid-it\n   section on double compilation} for an in-depth explanation and ways to avoid it.\n *\n */\n\nvar $compileMinErr = minErr('$compile');\n\nfunction UNINITIALIZED_VALUE() {}\nvar _UNINITIALIZED_VALUE = new UNINITIALIZED_VALUE();\n\n/**\n * @ngdoc provider\n * @name $compileProvider\n *\n * @description\n */\n$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];\n/** @this */\nfunction $CompileProvider($provide, $$sanitizeUriProvider) {\n  var hasDirectives = {},\n      Suffix = 'Directive',\n      COMMENT_DIRECTIVE_REGEXP = /^\\s*directive:\\s*([\\w-]+)\\s+(.*)$/,\n      CLASS_DIRECTIVE_REGEXP = /(([\\w-]+)(?::([^;]+))?;?)/,\n      ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'),\n      REQUIRE_PREFIX_REGEXP = /^(?:(\\^\\^?)?(\\?)?(\\^\\^?)?)?/;\n\n  // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes\n  // The assumption is that future DOM event attribute names will begin with\n  // 'on' and be composed of only English letters.\n  var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;\n  var bindingCache = createMap();\n\n  function parseIsolateBindings(scope, directiveName, isController) {\n    var LOCAL_REGEXP = /^\\s*([@&<]|=(\\*?))(\\??)\\s*([\\w$]*)\\s*$/;\n\n    var bindings = createMap();\n\n    forEach(scope, function(definition, scopeName) {\n      if (definition in bindingCache) {\n        bindings[scopeName] = bindingCache[definition];\n        return;\n      }\n      var match = definition.match(LOCAL_REGEXP);\n\n      if (!match) {\n        throw $compileMinErr('iscp',\n            'Invalid {3} for directive \\'{0}\\'.' +\n            ' Definition: {... {1}: \\'{2}\\' ...}',\n            directiveName, scopeName, definition,\n            (isController ? 'controller bindings definition' :\n            'isolate scope definition'));\n      }\n\n      bindings[scopeName] = {\n        mode: match[1][0],\n        collection: match[2] === '*',\n        optional: match[3] === '?',\n        attrName: match[4] || scopeName\n      };\n      if (match[4]) {\n        bindingCache[definition] = bindings[scopeName];\n      }\n    });\n\n    return bindings;\n  }\n\n  function parseDirectiveBindings(directive, directiveName) {\n    var bindings = {\n      isolateScope: null,\n      bindToController: null\n    };\n    if (isObject(directive.scope)) {\n      if (directive.bindToController === true) {\n        bindings.bindToController = parseIsolateBindings(directive.scope,\n                                                         directiveName, true);\n        bindings.isolateScope = {};\n      } else {\n        bindings.isolateScope = parseIsolateBindings(directive.scope,\n                                                     directiveName, false);\n      }\n    }\n    if (isObject(directive.bindToController)) {\n      bindings.bindToController =\n          parseIsolateBindings(directive.bindToController, directiveName, true);\n    }\n    if (bindings.bindToController && !directive.controller) {\n      // There is no controller\n      throw $compileMinErr('noctrl',\n            'Cannot bind to controller without directive \\'{0}\\'s controller.',\n            directiveName);\n    }\n    return bindings;\n  }\n\n  function assertValidDirectiveName(name) {\n    var letter = name.charAt(0);\n    if (!letter || letter !== lowercase(letter)) {\n      throw $compileMinErr('baddir', 'Directive/Component name \\'{0}\\' is invalid. The first character must be a lowercase letter', name);\n    }\n    if (name !== name.trim()) {\n      throw $compileMinErr('baddir',\n            'Directive/Component name \\'{0}\\' is invalid. The name should not contain leading or trailing whitespaces',\n            name);\n    }\n  }\n\n  function getDirectiveRequire(directive) {\n    var require = directive.require || (directive.controller && directive.name);\n\n    if (!isArray(require) && isObject(require)) {\n      forEach(require, function(value, key) {\n        var match = value.match(REQUIRE_PREFIX_REGEXP);\n        var name = value.substring(match[0].length);\n        if (!name) require[key] = match[0] + key;\n      });\n    }\n\n    return require;\n  }\n\n  function getDirectiveRestrict(restrict, name) {\n    if (restrict && !(isString(restrict) && /[EACM]/.test(restrict))) {\n      throw $compileMinErr('badrestrict',\n          'Restrict property \\'{0}\\' of directive \\'{1}\\' is invalid',\n          restrict,\n          name);\n    }\n\n    return restrict || 'EA';\n  }\n\n  /**\n   * @ngdoc method\n   * @name $compileProvider#directive\n   * @kind function\n   *\n   * @description\n   * Register a new directive with the compiler.\n   *\n   * @param {string|Object} name Name of the directive in camel-case (i.e. <code>ngBind</code> which\n   *    will match as <code>ng-bind</code>), or an object map of directives where the keys are the\n   *    names and the values are the factories.\n   * @param {Function|Array} directiveFactory An injectable directive factory function. See the\n   *    {@link guide/directive directive guide} and the {@link $compile compile API} for more info.\n   * @returns {ng.$compileProvider} Self for chaining.\n   */\n  this.directive = function registerDirective(name, directiveFactory) {\n    assertArg(name, 'name');\n    assertNotHasOwnProperty(name, 'directive');\n    if (isString(name)) {\n      assertValidDirectiveName(name);\n      assertArg(directiveFactory, 'directiveFactory');\n      if (!hasDirectives.hasOwnProperty(name)) {\n        hasDirectives[name] = [];\n        $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',\n          function($injector, $exceptionHandler) {\n            var directives = [];\n            forEach(hasDirectives[name], function(directiveFactory, index) {\n              try {\n                var directive = $injector.invoke(directiveFactory);\n                if (isFunction(directive)) {\n                  directive = { compile: valueFn(directive) };\n                } else if (!directive.compile && directive.link) {\n                  directive.compile = valueFn(directive.link);\n                }\n                directive.priority = directive.priority || 0;\n                directive.index = index;\n                directive.name = directive.name || name;\n                directive.require = getDirectiveRequire(directive);\n                directive.restrict = getDirectiveRestrict(directive.restrict, name);\n                directive.$$moduleName = directiveFactory.$$moduleName;\n                directives.push(directive);\n              } catch (e) {\n                $exceptionHandler(e);\n              }\n            });\n            return directives;\n          }]);\n      }\n      hasDirectives[name].push(directiveFactory);\n    } else {\n      forEach(name, reverseParams(registerDirective));\n    }\n    return this;\n  };\n\n  /**\n   * @ngdoc method\n   * @name $compileProvider#component\n   * @module ng\n   * @param {string|Object} name Name of the component in camelCase (i.e. `myComp` which will match `<my-comp>`),\n   *    or an object map of components where the keys are the names and the values are the component definition objects.\n   * @param {Object} options Component definition object (a simplified\n   *    {@link ng.$compile#directive-definition-object directive definition object}),\n   *    with the following properties (all optional):\n   *\n   *    - `controller` – `{(string|function()=}` – controller constructor function that should be\n   *      associated with newly created scope or the name of a {@link ng.$compile#-controller-\n   *      registered controller} if passed as a string. An empty `noop` function by default.\n   *    - `controllerAs` – `{string=}` – identifier name for to reference the controller in the component's scope.\n   *      If present, the controller will be published to scope under the `controllerAs` name.\n   *      If not present, this will default to be `$ctrl`.\n   *    - `template` – `{string=|function()=}` – html template as a string or a function that\n   *      returns an html template as a string which should be used as the contents of this component.\n   *      Empty string by default.\n   *\n   *      If `template` is a function, then it is {@link auto.$injector#invoke injected} with\n   *      the following locals:\n   *\n   *      - `$element` - Current element\n   *      - `$attrs` - Current attributes object for the element\n   *\n   *    - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html\n   *      template that should be used  as the contents of this component.\n   *\n   *      If `templateUrl` is a function, then it is {@link auto.$injector#invoke injected} with\n   *      the following locals:\n   *\n   *      - `$element` - Current element\n   *      - `$attrs` - Current attributes object for the element\n   *\n   *    - `bindings` – `{object=}` – defines bindings between DOM attributes and component properties.\n   *      Component properties are always bound to the component controller and not to the scope.\n   *      See {@link ng.$compile#-bindtocontroller- `bindToController`}.\n   *    - `transclude` – `{boolean=}` – whether {@link $compile#transclusion content transclusion} is enabled.\n   *      Disabled by default.\n   *    - `require` - `{Object<string, string>=}` - requires the controllers of other directives and binds them to\n   *      this component's controller. The object keys specify the property names under which the required\n   *      controllers (object values) will be bound. See {@link ng.$compile#-require- `require`}.\n   *    - `$...` – additional properties to attach to the directive factory function and the controller\n   *      constructor function. (This is used by the component router to annotate)\n   *\n   * @returns {ng.$compileProvider} the compile provider itself, for chaining of function calls.\n   * @description\n   * Register a **component definition** with the compiler. This is a shorthand for registering a special\n   * type of directive, which represents a self-contained UI component in your application. Such components\n   * are always isolated (i.e. `scope: {}`) and are always restricted to elements (i.e. `restrict: 'E'`).\n   *\n   * Component definitions are very simple and do not require as much configuration as defining general\n   * directives. Component definitions usually consist only of a template and a controller backing it.\n   *\n   * In order to make the definition easier, components enforce best practices like use of `controllerAs`,\n   * `bindToController`. They always have **isolate scope** and are restricted to elements.\n   *\n   * Here are a few examples of how you would usually define components:\n   *\n   * ```js\n   *   var myMod = angular.module(...);\n   *   myMod.component('myComp', {\n   *     template: '<div>My name is {{$ctrl.name}}</div>',\n   *     controller: function() {\n   *       this.name = 'shahar';\n   *     }\n   *   });\n   *\n   *   myMod.component('myComp', {\n   *     template: '<div>My name is {{$ctrl.name}}</div>',\n   *     bindings: {name: '@'}\n   *   });\n   *\n   *   myMod.component('myComp', {\n   *     templateUrl: 'views/my-comp.html',\n   *     controller: 'MyCtrl',\n   *     controllerAs: 'ctrl',\n   *     bindings: {name: '@'}\n   *   });\n   *\n   * ```\n   * For more examples, and an in-depth guide, see the {@link guide/component component guide}.\n   *\n   * <br />\n   * See also {@link ng.$compileProvider#directive $compileProvider.directive()}.\n   */\n  this.component = function registerComponent(name, options) {\n    if (!isString(name)) {\n      forEach(name, reverseParams(bind(this, registerComponent)));\n      return this;\n    }\n\n    var controller = options.controller || function() {};\n\n    function factory($injector) {\n      function makeInjectable(fn) {\n        if (isFunction(fn) || isArray(fn)) {\n          return /** @this */ function(tElement, tAttrs) {\n            return $injector.invoke(fn, this, {$element: tElement, $attrs: tAttrs});\n          };\n        } else {\n          return fn;\n        }\n      }\n\n      var template = (!options.template && !options.templateUrl ? '' : options.template);\n      var ddo = {\n        controller: controller,\n        controllerAs: identifierForController(options.controller) || options.controllerAs || '$ctrl',\n        template: makeInjectable(template),\n        templateUrl: makeInjectable(options.templateUrl),\n        transclude: options.transclude,\n        scope: {},\n        bindToController: options.bindings || {},\n        restrict: 'E',\n        require: options.require\n      };\n\n      // Copy annotations (starting with $) over to the DDO\n      forEach(options, function(val, key) {\n        if (key.charAt(0) === '$') ddo[key] = val;\n      });\n\n      return ddo;\n    }\n\n    // TODO(pete) remove the following `forEach` before we release 1.6.0\n    // The component-router@0.2.0 looks for the annotations on the controller constructor\n    // Nothing in Angular looks for annotations on the factory function but we can't remove\n    // it from 1.5.x yet.\n\n    // Copy any annotation properties (starting with $) over to the factory and controller constructor functions\n    // These could be used by libraries such as the new component router\n    forEach(options, function(val, key) {\n      if (key.charAt(0) === '$') {\n        factory[key] = val;\n        // Don't try to copy over annotations to named controller\n        if (isFunction(controller)) controller[key] = val;\n      }\n    });\n\n    factory.$inject = ['$injector'];\n\n    return this.directive(name, factory);\n  };\n\n\n  /**\n   * @ngdoc method\n   * @name $compileProvider#aHrefSanitizationWhitelist\n   * @kind function\n   *\n   * @description\n   * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n   * urls during a[href] sanitization.\n   *\n   * The sanitization is a security measure aimed at preventing XSS attacks via html links.\n   *\n   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into\n   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`\n   * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n   *\n   * @param {RegExp=} regexp New regexp to whitelist urls with.\n   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n   *    chaining otherwise.\n   */\n  this.aHrefSanitizationWhitelist = function(regexp) {\n    if (isDefined(regexp)) {\n      $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);\n      return this;\n    } else {\n      return $$sanitizeUriProvider.aHrefSanitizationWhitelist();\n    }\n  };\n\n\n  /**\n   * @ngdoc method\n   * @name $compileProvider#imgSrcSanitizationWhitelist\n   * @kind function\n   *\n   * @description\n   * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n   * urls during img[src] sanitization.\n   *\n   * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n   *\n   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into\n   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`\n   * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n   *\n   * @param {RegExp=} regexp New regexp to whitelist urls with.\n   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n   *    chaining otherwise.\n   */\n  this.imgSrcSanitizationWhitelist = function(regexp) {\n    if (isDefined(regexp)) {\n      $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);\n      return this;\n    } else {\n      return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();\n    }\n  };\n\n  /**\n   * @ngdoc method\n   * @name  $compileProvider#debugInfoEnabled\n   *\n   * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the\n   * current debugInfoEnabled state\n   * @returns {*} current value if used as getter or itself (chaining) if used as setter\n   *\n   * @kind function\n   *\n   * @description\n   * Call this method to enable/disable various debug runtime information in the compiler such as adding\n   * binding information and a reference to the current scope on to DOM elements.\n   * If enabled, the compiler will add the following to DOM elements that have been bound to the scope\n   * * `ng-binding` CSS class\n   * * `$binding` data property containing an array of the binding expressions\n   *\n   * You may want to disable this in production for a significant performance boost. See\n   * {@link guide/production#disabling-debug-data Disabling Debug Data} for more.\n   *\n   * The default value is true.\n   */\n  var debugInfoEnabled = true;\n  this.debugInfoEnabled = function(enabled) {\n    if (isDefined(enabled)) {\n      debugInfoEnabled = enabled;\n      return this;\n    }\n    return debugInfoEnabled;\n  };\n\n  /**\n   * @ngdoc method\n   * @name  $compileProvider#preAssignBindingsEnabled\n   *\n   * @param {boolean=} enabled update the preAssignBindingsEnabled state if provided, otherwise just return the\n   * current preAssignBindingsEnabled state\n   * @returns {*} current value if used as getter or itself (chaining) if used as setter\n   *\n   * @kind function\n   *\n   * @description\n   * Call this method to enable/disable whether directive controllers are assigned bindings before\n   * calling the controller's constructor.\n   * If enabled (true), the compiler assigns the value of each of the bindings to the\n   * properties of the controller object before the constructor of this object is called.\n   *\n   * If disabled (false), the compiler calls the constructor first before assigning bindings.\n   *\n   * The default value is false.\n   *\n   * @deprecated\n   * sinceVersion=\"1.6.0\"\n   * removeVersion=\"1.7.0\"\n   *\n   * This method and the option to assign the bindings before calling the controller's constructor\n   * will be removed in v1.7.0.\n   */\n  var preAssignBindingsEnabled = false;\n  this.preAssignBindingsEnabled = function(enabled) {\n    if (isDefined(enabled)) {\n      preAssignBindingsEnabled = enabled;\n      return this;\n    }\n    return preAssignBindingsEnabled;\n  };\n\n  /**\n   * @ngdoc method\n   * @name  $compileProvider#strictComponentBindingsEnabled\n   *\n   * @param {boolean=} enabled update the strictComponentBindingsEnabled state if provided, otherwise just return the\n   * current strictComponentBindingsEnabled state\n   * @returns {*} current value if used as getter or itself (chaining) if used as setter\n   *\n   * @kind function\n   *\n   * @description\n   * Call this method to enable/disable strict component bindings check. If enabled, the compiler will enforce that\n   * for all bindings of a component that are not set as optional with `?`, an attribute needs to be provided\n   * on the component's HTML tag.\n   *\n   * The default value is false.\n   */\n  var strictComponentBindingsEnabled = false;\n  this.strictComponentBindingsEnabled = function(enabled) {\n    if (isDefined(enabled)) {\n      strictComponentBindingsEnabled = enabled;\n      return this;\n    }\n    return strictComponentBindingsEnabled;\n  };\n\n  var TTL = 10;\n  /**\n   * @ngdoc method\n   * @name $compileProvider#onChangesTtl\n   * @description\n   *\n   * Sets the number of times `$onChanges` hooks can trigger new changes before giving up and\n   * assuming that the model is unstable.\n   *\n   * The current default is 10 iterations.\n   *\n   * In complex applications it's possible that dependencies between `$onChanges` hooks and bindings will result\n   * in several iterations of calls to these hooks. However if an application needs more than the default 10\n   * iterations to stabilize then you should investigate what is causing the model to continuously change during\n   * the `$onChanges` hook execution.\n   *\n   * Increasing the TTL could have performance implications, so you should not change it without proper justification.\n   *\n   * @param {number} limit The number of `$onChanges` hook iterations.\n   * @returns {number|object} the current limit (or `this` if called as a setter for chaining)\n   */\n  this.onChangesTtl = function(value) {\n    if (arguments.length) {\n      TTL = value;\n      return this;\n    }\n    return TTL;\n  };\n\n  var commentDirectivesEnabledConfig = true;\n  /**\n   * @ngdoc method\n   * @name $compileProvider#commentDirectivesEnabled\n   * @description\n   *\n   * It indicates to the compiler\n   * whether or not directives on comments should be compiled.\n   * Defaults to `true`.\n   *\n   * Calling this function with false disables the compilation of directives\n   * on comments for the whole application.\n   * This results in a compilation performance gain,\n   * as the compiler doesn't have to check comments when looking for directives.\n   * This should however only be used if you are sure that no comment directives are used in\n   * the application (including any 3rd party directives).\n   *\n   * @param {boolean} enabled `false` if the compiler may ignore directives on comments\n   * @returns {boolean|object} the current value (or `this` if called as a setter for chaining)\n   */\n  this.commentDirectivesEnabled = function(value) {\n    if (arguments.length) {\n      commentDirectivesEnabledConfig = value;\n      return this;\n    }\n    return commentDirectivesEnabledConfig;\n  };\n\n\n  var cssClassDirectivesEnabledConfig = true;\n  /**\n   * @ngdoc method\n   * @name $compileProvider#cssClassDirectivesEnabled\n   * @description\n   *\n   * It indicates to the compiler\n   * whether or not directives on element classes should be compiled.\n   * Defaults to `true`.\n   *\n   * Calling this function with false disables the compilation of directives\n   * on element classes for the whole application.\n   * This results in a compilation performance gain,\n   * as the compiler doesn't have to check element classes when looking for directives.\n   * This should however only be used if you are sure that no class directives are used in\n   * the application (including any 3rd party directives).\n   *\n   * @param {boolean} enabled `false` if the compiler may ignore directives on element classes\n   * @returns {boolean|object} the current value (or `this` if called as a setter for chaining)\n   */\n  this.cssClassDirectivesEnabled = function(value) {\n    if (arguments.length) {\n      cssClassDirectivesEnabledConfig = value;\n      return this;\n    }\n    return cssClassDirectivesEnabledConfig;\n  };\n\n  this.$get = [\n            '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse',\n            '$controller', '$rootScope', '$sce', '$animate', '$$sanitizeUri',\n    function($injector,   $interpolate,   $exceptionHandler,   $templateRequest,   $parse,\n             $controller,   $rootScope,   $sce,   $animate,   $$sanitizeUri) {\n\n    var SIMPLE_ATTR_NAME = /^\\w/;\n    var specialAttrHolder = window.document.createElement('div');\n\n\n    var commentDirectivesEnabled = commentDirectivesEnabledConfig;\n    var cssClassDirectivesEnabled = cssClassDirectivesEnabledConfig;\n\n\n    var onChangesTtl = TTL;\n    // The onChanges hooks should all be run together in a single digest\n    // When changes occur, the call to trigger their hooks will be added to this queue\n    var onChangesQueue;\n\n    // This function is called in a $$postDigest to trigger all the onChanges hooks in a single digest\n    function flushOnChangesQueue() {\n      try {\n        if (!(--onChangesTtl)) {\n          // We have hit the TTL limit so reset everything\n          onChangesQueue = undefined;\n          throw $compileMinErr('infchng', '{0} $onChanges() iterations reached. Aborting!\\n', TTL);\n        }\n        // We must run this hook in an apply since the $$postDigest runs outside apply\n        $rootScope.$apply(function() {\n          var errors = [];\n          for (var i = 0, ii = onChangesQueue.length; i < ii; ++i) {\n            try {\n              onChangesQueue[i]();\n            } catch (e) {\n              errors.push(e);\n            }\n          }\n          // Reset the queue to trigger a new schedule next time there is a change\n          onChangesQueue = undefined;\n          if (errors.length) {\n            throw errors;\n          }\n        });\n      } finally {\n        onChangesTtl++;\n      }\n    }\n\n\n    function Attributes(element, attributesToCopy) {\n      if (attributesToCopy) {\n        var keys = Object.keys(attributesToCopy);\n        var i, l, key;\n\n        for (i = 0, l = keys.length; i < l; i++) {\n          key = keys[i];\n          this[key] = attributesToCopy[key];\n        }\n      } else {\n        this.$attr = {};\n      }\n\n      this.$$element = element;\n    }\n\n    Attributes.prototype = {\n      /**\n       * @ngdoc method\n       * @name $compile.directive.Attributes#$normalize\n       * @kind function\n       *\n       * @description\n       * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or\n       * `data-`) to its normalized, camelCase form.\n       *\n       * Also there is special case for Moz prefix starting with upper case letter.\n       *\n       * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}\n       *\n       * @param {string} name Name to normalize\n       */\n      $normalize: directiveNormalize,\n\n\n      /**\n       * @ngdoc method\n       * @name $compile.directive.Attributes#$addClass\n       * @kind function\n       *\n       * @description\n       * Adds the CSS class value specified by the classVal parameter to the element. If animations\n       * are enabled then an animation will be triggered for the class addition.\n       *\n       * @param {string} classVal The className value that will be added to the element\n       */\n      $addClass: function(classVal) {\n        if (classVal && classVal.length > 0) {\n          $animate.addClass(this.$$element, classVal);\n        }\n      },\n\n      /**\n       * @ngdoc method\n       * @name $compile.directive.Attributes#$removeClass\n       * @kind function\n       *\n       * @description\n       * Removes the CSS class value specified by the classVal parameter from the element. If\n       * animations are enabled then an animation will be triggered for the class removal.\n       *\n       * @param {string} classVal The className value that will be removed from the element\n       */\n      $removeClass: function(classVal) {\n        if (classVal && classVal.length > 0) {\n          $animate.removeClass(this.$$element, classVal);\n        }\n      },\n\n      /**\n       * @ngdoc method\n       * @name $compile.directive.Attributes#$updateClass\n       * @kind function\n       *\n       * @description\n       * Adds and removes the appropriate CSS class values to the element based on the difference\n       * between the new and old CSS class values (specified as newClasses and oldClasses).\n       *\n       * @param {string} newClasses The current CSS className value\n       * @param {string} oldClasses The former CSS className value\n       */\n      $updateClass: function(newClasses, oldClasses) {\n        var toAdd = tokenDifference(newClasses, oldClasses);\n        if (toAdd && toAdd.length) {\n          $animate.addClass(this.$$element, toAdd);\n        }\n\n        var toRemove = tokenDifference(oldClasses, newClasses);\n        if (toRemove && toRemove.length) {\n          $animate.removeClass(this.$$element, toRemove);\n        }\n      },\n\n      /**\n       * Set a normalized attribute on the element in a way such that all directives\n       * can share the attribute. This function properly handles boolean attributes.\n       * @param {string} key Normalized key. (ie ngAttribute)\n       * @param {string|boolean} value The value to set. If `null` attribute will be deleted.\n       * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.\n       *     Defaults to true.\n       * @param {string=} attrName Optional none normalized name. Defaults to key.\n       */\n      $set: function(key, value, writeAttr, attrName) {\n        // TODO: decide whether or not to throw an error if \"class\"\n        //is set through this function since it may cause $updateClass to\n        //become unstable.\n\n        var node = this.$$element[0],\n            booleanKey = getBooleanAttrName(node, key),\n            aliasedKey = getAliasedAttrName(key),\n            observer = key,\n            nodeName;\n\n        if (booleanKey) {\n          this.$$element.prop(key, value);\n          attrName = booleanKey;\n        } else if (aliasedKey) {\n          this[aliasedKey] = value;\n          observer = aliasedKey;\n        }\n\n        this[key] = value;\n\n        // translate normalized key to actual key\n        if (attrName) {\n          this.$attr[key] = attrName;\n        } else {\n          attrName = this.$attr[key];\n          if (!attrName) {\n            this.$attr[key] = attrName = snake_case(key, '-');\n          }\n        }\n\n        nodeName = nodeName_(this.$$element);\n\n        if ((nodeName === 'a' && (key === 'href' || key === 'xlinkHref')) ||\n            (nodeName === 'img' && key === 'src')) {\n          // sanitize a[href] and img[src] values\n          this[key] = value = $$sanitizeUri(value, key === 'src');\n        } else if (nodeName === 'img' && key === 'srcset' && isDefined(value)) {\n          // sanitize img[srcset] values\n          var result = '';\n\n          // first check if there are spaces because it's not the same pattern\n          var trimmedSrcset = trim(value);\n          //                (   999x   ,|   999w   ,|   ,|,   )\n          var srcPattern = /(\\s+\\d+x\\s*,|\\s+\\d+w\\s*,|\\s+,|,\\s+)/;\n          var pattern = /\\s/.test(trimmedSrcset) ? srcPattern : /(,)/;\n\n          // split srcset into tuple of uri and descriptor except for the last item\n          var rawUris = trimmedSrcset.split(pattern);\n\n          // for each tuples\n          var nbrUrisWith2parts = Math.floor(rawUris.length / 2);\n          for (var i = 0; i < nbrUrisWith2parts; i++) {\n            var innerIdx = i * 2;\n            // sanitize the uri\n            result += $$sanitizeUri(trim(rawUris[innerIdx]), true);\n            // add the descriptor\n            result += (' ' + trim(rawUris[innerIdx + 1]));\n          }\n\n          // split the last item into uri and descriptor\n          var lastTuple = trim(rawUris[i * 2]).split(/\\s/);\n\n          // sanitize the last uri\n          result += $$sanitizeUri(trim(lastTuple[0]), true);\n\n          // and add the last descriptor if any\n          if (lastTuple.length === 2) {\n            result += (' ' + trim(lastTuple[1]));\n          }\n          this[key] = value = result;\n        }\n\n        if (writeAttr !== false) {\n          if (value === null || isUndefined(value)) {\n            this.$$element.removeAttr(attrName);\n          } else {\n            if (SIMPLE_ATTR_NAME.test(attrName)) {\n              this.$$element.attr(attrName, value);\n            } else {\n              setSpecialAttr(this.$$element[0], attrName, value);\n            }\n          }\n        }\n\n        // fire observers\n        var $$observers = this.$$observers;\n        if ($$observers) {\n          forEach($$observers[observer], function(fn) {\n            try {\n              fn(value);\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n          });\n        }\n      },\n\n\n      /**\n       * @ngdoc method\n       * @name $compile.directive.Attributes#$observe\n       * @kind function\n       *\n       * @description\n       * Observes an interpolated attribute.\n       *\n       * The observer function will be invoked once during the next `$digest` following\n       * compilation. The observer is then invoked whenever the interpolated value\n       * changes.\n       *\n       * @param {string} key Normalized key. (ie ngAttribute) .\n       * @param {function(interpolatedValue)} fn Function that will be called whenever\n                the interpolated value of the attribute changes.\n       *        See the {@link guide/interpolation#how-text-and-attribute-bindings-work Interpolation\n       *        guide} for more info.\n       * @returns {function()} Returns a deregistration function for this observer.\n       */\n      $observe: function(key, fn) {\n        var attrs = this,\n            $$observers = (attrs.$$observers || (attrs.$$observers = createMap())),\n            listeners = ($$observers[key] || ($$observers[key] = []));\n\n        listeners.push(fn);\n        $rootScope.$evalAsync(function() {\n          if (!listeners.$$inter && attrs.hasOwnProperty(key) && !isUndefined(attrs[key])) {\n            // no one registered attribute interpolation function, so lets call it manually\n            fn(attrs[key]);\n          }\n        });\n\n        return function() {\n          arrayRemove(listeners, fn);\n        };\n      }\n    };\n\n    function setSpecialAttr(element, attrName, value) {\n      // Attributes names that do not start with letters (such as `(click)`) cannot be set using `setAttribute`\n      // so we have to jump through some hoops to get such an attribute\n      // https://github.com/angular/angular.js/pull/13318\n      specialAttrHolder.innerHTML = '<span ' + attrName + '>';\n      var attributes = specialAttrHolder.firstChild.attributes;\n      var attribute = attributes[0];\n      // We have to remove the attribute from its container element before we can add it to the destination element\n      attributes.removeNamedItem(attribute.name);\n      attribute.value = value;\n      element.attributes.setNamedItem(attribute);\n    }\n\n    function safeAddClass($element, className) {\n      try {\n        $element.addClass(className);\n      } catch (e) {\n        // ignore, since it means that we are trying to set class on\n        // SVG element, where class name is read-only.\n      }\n    }\n\n\n    var startSymbol = $interpolate.startSymbol(),\n        endSymbol = $interpolate.endSymbol(),\n        denormalizeTemplate = (startSymbol === '{{' && endSymbol  === '}}')\n            ? identity\n            : function denormalizeTemplate(template) {\n              return template.replace(/\\{\\{/g, startSymbol).replace(/}}/g, endSymbol);\n        },\n        NG_ATTR_BINDING = /^ngAttr[A-Z]/;\n    var MULTI_ELEMENT_DIR_RE = /^(.+)Start$/;\n\n    compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {\n      var bindings = $element.data('$binding') || [];\n\n      if (isArray(binding)) {\n        bindings = bindings.concat(binding);\n      } else {\n        bindings.push(binding);\n      }\n\n      $element.data('$binding', bindings);\n    } : noop;\n\n    compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {\n      safeAddClass($element, 'ng-binding');\n    } : noop;\n\n    compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {\n      var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';\n      $element.data(dataName, scope);\n    } : noop;\n\n    compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {\n      safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope');\n    } : noop;\n\n    compile.$$createComment = function(directiveName, comment) {\n      var content = '';\n      if (debugInfoEnabled) {\n        content = ' ' + (directiveName || '') + ': ';\n        if (comment) content += comment + ' ';\n      }\n      return window.document.createComment(content);\n    };\n\n    return compile;\n\n    //================================\n\n    function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,\n                        previousCompileContext) {\n      if (!($compileNodes instanceof jqLite)) {\n        // jquery always rewraps, whereas we need to preserve the original selector so that we can\n        // modify it.\n        $compileNodes = jqLite($compileNodes);\n      }\n      var compositeLinkFn =\n              compileNodes($compileNodes, transcludeFn, $compileNodes,\n                           maxPriority, ignoreDirective, previousCompileContext);\n      compile.$$addScopeClass($compileNodes);\n      var namespace = null;\n      return function publicLinkFn(scope, cloneConnectFn, options) {\n        if (!$compileNodes) {\n          throw $compileMinErr('multilink', 'This element has already been linked.');\n        }\n        assertArg(scope, 'scope');\n\n        if (previousCompileContext && previousCompileContext.needsNewScope) {\n          // A parent directive did a replace and a directive on this element asked\n          // for transclusion, which caused us to lose a layer of element on which\n          // we could hold the new transclusion scope, so we will create it manually\n          // here.\n          scope = scope.$parent.$new();\n        }\n\n        options = options || {};\n        var parentBoundTranscludeFn = options.parentBoundTranscludeFn,\n          transcludeControllers = options.transcludeControllers,\n          futureParentElement = options.futureParentElement;\n\n        // When `parentBoundTranscludeFn` is passed, it is a\n        // `controllersBoundTransclude` function (it was previously passed\n        // as `transclude` to directive.link) so we must unwrap it to get\n        // its `boundTranscludeFn`\n        if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {\n          parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;\n        }\n\n        if (!namespace) {\n          namespace = detectNamespaceForChildElements(futureParentElement);\n        }\n        var $linkNode;\n        if (namespace !== 'html') {\n          // When using a directive with replace:true and templateUrl the $compileNodes\n          // (or a child element inside of them)\n          // might change, so we need to recreate the namespace adapted compileNodes\n          // for call to the link function.\n          // Note: This will already clone the nodes...\n          $linkNode = jqLite(\n            wrapTemplate(namespace, jqLite('<div>').append($compileNodes).html())\n          );\n        } else if (cloneConnectFn) {\n          // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart\n          // and sometimes changes the structure of the DOM.\n          $linkNode = JQLitePrototype.clone.call($compileNodes);\n        } else {\n          $linkNode = $compileNodes;\n        }\n\n        if (transcludeControllers) {\n          for (var controllerName in transcludeControllers) {\n            $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance);\n          }\n        }\n\n        compile.$$addScopeInfo($linkNode, scope);\n\n        if (cloneConnectFn) cloneConnectFn($linkNode, scope);\n        if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);\n\n        if (!cloneConnectFn) {\n          $compileNodes = compositeLinkFn = null;\n        }\n        return $linkNode;\n      };\n    }\n\n    function detectNamespaceForChildElements(parentElement) {\n      // TODO: Make this detect MathML as well...\n      var node = parentElement && parentElement[0];\n      if (!node) {\n        return 'html';\n      } else {\n        return nodeName_(node) !== 'foreignobject' && toString.call(node).match(/SVG/) ? 'svg' : 'html';\n      }\n    }\n\n    /**\n     * Compile function matches each node in nodeList against the directives. Once all directives\n     * for a particular node are collected their compile functions are executed. The compile\n     * functions return values - the linking functions - are combined into a composite linking\n     * function, which is the a linking function for the node.\n     *\n     * @param {NodeList} nodeList an array of nodes or NodeList to compile\n     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the\n     *        scope argument is auto-generated to the new child of the transcluded parent scope.\n     * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then\n     *        the rootElement must be set the jqLite collection of the compile root. This is\n     *        needed so that the jqLite collection items can be replaced with widgets.\n     * @param {number=} maxPriority Max directive priority.\n     * @returns {Function} A composite linking function of all of the matched directives or null.\n     */\n    function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective,\n                            previousCompileContext) {\n      var linkFns = [],\n          // `nodeList` can be either an element's `.childNodes` (live NodeList)\n          // or a jqLite/jQuery collection or an array\n          notLiveList = isArray(nodeList) || (nodeList instanceof jqLite),\n          attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;\n\n\n      for (var i = 0; i < nodeList.length; i++) {\n        attrs = new Attributes();\n\n        // Support: IE 11 only\n        // Workaround for #11781 and #14924\n        if (msie === 11) {\n          mergeConsecutiveTextNodes(nodeList, i, notLiveList);\n        }\n\n        // We must always refer to `nodeList[i]` hereafter,\n        // since the nodes can be replaced underneath us.\n        directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined,\n                                        ignoreDirective);\n\n        nodeLinkFn = (directives.length)\n            ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement,\n                                      null, [], [], previousCompileContext)\n            : null;\n\n        if (nodeLinkFn && nodeLinkFn.scope) {\n          compile.$$addScopeClass(attrs.$$element);\n        }\n\n        childLinkFn = (nodeLinkFn && nodeLinkFn.terminal ||\n                      !(childNodes = nodeList[i].childNodes) ||\n                      !childNodes.length)\n            ? null\n            : compileNodes(childNodes,\n                 nodeLinkFn ? (\n                  (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement)\n                     && nodeLinkFn.transclude) : transcludeFn);\n\n        if (nodeLinkFn || childLinkFn) {\n          linkFns.push(i, nodeLinkFn, childLinkFn);\n          linkFnFound = true;\n          nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;\n        }\n\n        //use the previous context only for the first element in the virtual group\n        previousCompileContext = null;\n      }\n\n      // return a linking function if we have found anything, null otherwise\n      return linkFnFound ? compositeLinkFn : null;\n\n      function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) {\n        var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn;\n        var stableNodeList;\n\n\n        if (nodeLinkFnFound) {\n          // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our\n          // offsets don't get screwed up\n          var nodeListLength = nodeList.length;\n          stableNodeList = new Array(nodeListLength);\n\n          // create a sparse array by only copying the elements which have a linkFn\n          for (i = 0; i < linkFns.length; i += 3) {\n            idx = linkFns[i];\n            stableNodeList[idx] = nodeList[idx];\n          }\n        } else {\n          stableNodeList = nodeList;\n        }\n\n        for (i = 0, ii = linkFns.length; i < ii;) {\n          node = stableNodeList[linkFns[i++]];\n          nodeLinkFn = linkFns[i++];\n          childLinkFn = linkFns[i++];\n\n          if (nodeLinkFn) {\n            if (nodeLinkFn.scope) {\n              childScope = scope.$new();\n              compile.$$addScopeInfo(jqLite(node), childScope);\n            } else {\n              childScope = scope;\n            }\n\n            if (nodeLinkFn.transcludeOnThisElement) {\n              childBoundTranscludeFn = createBoundTranscludeFn(\n                  scope, nodeLinkFn.transclude, parentBoundTranscludeFn);\n\n            } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) {\n              childBoundTranscludeFn = parentBoundTranscludeFn;\n\n            } else if (!parentBoundTranscludeFn && transcludeFn) {\n              childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);\n\n            } else {\n              childBoundTranscludeFn = null;\n            }\n\n            nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn);\n\n          } else if (childLinkFn) {\n            childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn);\n          }\n        }\n      }\n    }\n\n    function mergeConsecutiveTextNodes(nodeList, idx, notLiveList) {\n      var node = nodeList[idx];\n      var parent = node.parentNode;\n      var sibling;\n\n      if (node.nodeType !== NODE_TYPE_TEXT) {\n        return;\n      }\n\n      while (true) {\n        sibling = parent ? node.nextSibling : nodeList[idx + 1];\n        if (!sibling || sibling.nodeType !== NODE_TYPE_TEXT) {\n          break;\n        }\n\n        node.nodeValue = node.nodeValue + sibling.nodeValue;\n\n        if (sibling.parentNode) {\n          sibling.parentNode.removeChild(sibling);\n        }\n        if (notLiveList && sibling === nodeList[idx + 1]) {\n          nodeList.splice(idx + 1, 1);\n        }\n      }\n    }\n\n    function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) {\n      function boundTranscludeFn(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {\n\n        if (!transcludedScope) {\n          transcludedScope = scope.$new(false, containingScope);\n          transcludedScope.$$transcluded = true;\n        }\n\n        return transcludeFn(transcludedScope, cloneFn, {\n          parentBoundTranscludeFn: previousBoundTranscludeFn,\n          transcludeControllers: controllers,\n          futureParentElement: futureParentElement\n        });\n      }\n\n      // We need  to attach the transclusion slots onto the `boundTranscludeFn`\n      // so that they are available inside the `controllersBoundTransclude` function\n      var boundSlots = boundTranscludeFn.$$slots = createMap();\n      for (var slotName in transcludeFn.$$slots) {\n        if (transcludeFn.$$slots[slotName]) {\n          boundSlots[slotName] = createBoundTranscludeFn(scope, transcludeFn.$$slots[slotName], previousBoundTranscludeFn);\n        } else {\n          boundSlots[slotName] = null;\n        }\n      }\n\n      return boundTranscludeFn;\n    }\n\n    /**\n     * Looks for directives on the given node and adds them to the directive collection which is\n     * sorted.\n     *\n     * @param node Node to search.\n     * @param directives An array to which the directives are added to. This array is sorted before\n     *        the function returns.\n     * @param attrs The shared attrs object which is used to populate the normalized attributes.\n     * @param {number=} maxPriority Max directive priority.\n     */\n    function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {\n      var nodeType = node.nodeType,\n          attrsMap = attrs.$attr,\n          match,\n          nodeName,\n          className;\n\n      switch (nodeType) {\n        case NODE_TYPE_ELEMENT: /* Element */\n\n          nodeName = nodeName_(node);\n\n          // use the node name: <directive>\n          addDirective(directives,\n              directiveNormalize(nodeName), 'E', maxPriority, ignoreDirective);\n\n          // iterate over the attributes\n          for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,\n                   j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {\n            var attrStartName = false;\n            var attrEndName = false;\n\n            attr = nAttrs[j];\n            name = attr.name;\n            value = attr.value;\n\n            // support ngAttr attribute binding\n            ngAttrName = directiveNormalize(name);\n            isNgAttr = NG_ATTR_BINDING.test(ngAttrName);\n            if (isNgAttr) {\n              name = name.replace(PREFIX_REGEXP, '')\n                .substr(8).replace(/_(.)/g, function(match, letter) {\n                  return letter.toUpperCase();\n                });\n            }\n\n            var multiElementMatch = ngAttrName.match(MULTI_ELEMENT_DIR_RE);\n            if (multiElementMatch && directiveIsMultiElement(multiElementMatch[1])) {\n              attrStartName = name;\n              attrEndName = name.substr(0, name.length - 5) + 'end';\n              name = name.substr(0, name.length - 6);\n            }\n\n            nName = directiveNormalize(name.toLowerCase());\n            attrsMap[nName] = name;\n            if (isNgAttr || !attrs.hasOwnProperty(nName)) {\n                attrs[nName] = value;\n                if (getBooleanAttrName(node, nName)) {\n                  attrs[nName] = true; // presence means true\n                }\n            }\n            addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);\n            addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,\n                          attrEndName);\n          }\n\n          if (nodeName === 'input' && node.getAttribute('type') === 'hidden') {\n            // Hidden input elements can have strange behaviour when navigating back to the page\n            // This tells the browser not to try to cache and reinstate previous values\n            node.setAttribute('autocomplete', 'off');\n          }\n\n          // use class as directive\n          if (!cssClassDirectivesEnabled) break;\n          className = node.className;\n          if (isObject(className)) {\n              // Maybe SVGAnimatedString\n              className = className.animVal;\n          }\n          if (isString(className) && className !== '') {\n            while ((match = CLASS_DIRECTIVE_REGEXP.exec(className))) {\n              nName = directiveNormalize(match[2]);\n              if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {\n                attrs[nName] = trim(match[3]);\n              }\n              className = className.substr(match.index + match[0].length);\n            }\n          }\n          break;\n        case NODE_TYPE_TEXT: /* Text Node */\n          addTextInterpolateDirective(directives, node.nodeValue);\n          break;\n        case NODE_TYPE_COMMENT: /* Comment */\n          if (!commentDirectivesEnabled) break;\n          collectCommentDirectives(node, directives, attrs, maxPriority, ignoreDirective);\n          break;\n      }\n\n      directives.sort(byPriority);\n      return directives;\n    }\n\n    function collectCommentDirectives(node, directives, attrs, maxPriority, ignoreDirective) {\n      // function created because of performance, try/catch disables\n      // the optimization of the whole function #14848\n      try {\n        var match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);\n        if (match) {\n          var nName = directiveNormalize(match[1]);\n          if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {\n            attrs[nName] = trim(match[2]);\n          }\n        }\n      } catch (e) {\n        // turns out that under some circumstances IE9 throws errors when one attempts to read\n        // comment's node value.\n        // Just ignore it and continue. (Can't seem to reproduce in test case.)\n      }\n    }\n\n    /**\n     * Given a node with a directive-start it collects all of the siblings until it finds\n     * directive-end.\n     * @param node\n     * @param attrStart\n     * @param attrEnd\n     * @returns {*}\n     */\n    function groupScan(node, attrStart, attrEnd) {\n      var nodes = [];\n      var depth = 0;\n      if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {\n        do {\n          if (!node) {\n            throw $compileMinErr('uterdir',\n                      'Unterminated attribute, found \\'{0}\\' but no matching \\'{1}\\' found.',\n                      attrStart, attrEnd);\n          }\n          if (node.nodeType === NODE_TYPE_ELEMENT) {\n            if (node.hasAttribute(attrStart)) depth++;\n            if (node.hasAttribute(attrEnd)) depth--;\n          }\n          nodes.push(node);\n          node = node.nextSibling;\n        } while (depth > 0);\n      } else {\n        nodes.push(node);\n      }\n\n      return jqLite(nodes);\n    }\n\n    /**\n     * Wrapper for linking function which converts normal linking function into a grouped\n     * linking function.\n     * @param linkFn\n     * @param attrStart\n     * @param attrEnd\n     * @returns {Function}\n     */\n    function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {\n      return function groupedElementsLink(scope, element, attrs, controllers, transcludeFn) {\n        element = groupScan(element[0], attrStart, attrEnd);\n        return linkFn(scope, element, attrs, controllers, transcludeFn);\n      };\n    }\n\n    /**\n     * A function generator that is used to support both eager and lazy compilation\n     * linking function.\n     * @param eager\n     * @param $compileNodes\n     * @param transcludeFn\n     * @param maxPriority\n     * @param ignoreDirective\n     * @param previousCompileContext\n     * @returns {Function}\n     */\n    function compilationGenerator(eager, $compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext) {\n      var compiled;\n\n      if (eager) {\n        return compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext);\n      }\n      return /** @this */ function lazyCompilation() {\n        if (!compiled) {\n          compiled = compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext);\n\n          // Null out all of these references in order to make them eligible for garbage collection\n          // since this is a potentially long lived closure\n          $compileNodes = transcludeFn = previousCompileContext = null;\n        }\n        return compiled.apply(this, arguments);\n      };\n    }\n\n    /**\n     * Once the directives have been collected, their compile functions are executed. This method\n     * is responsible for inlining directive templates as well as terminating the application\n     * of the directives if the terminal directive has been reached.\n     *\n     * @param {Array} directives Array of collected directives to execute their compile function.\n     *        this needs to be pre-sorted by priority order.\n     * @param {Node} compileNode The raw DOM node to apply the compile functions to\n     * @param {Object} templateAttrs The shared attribute function\n     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the\n     *                                                  scope argument is auto-generated to the new\n     *                                                  child of the transcluded parent scope.\n     * @param {JQLite} jqCollection If we are working on the root of the compile tree then this\n     *                              argument has the root jqLite array so that we can replace nodes\n     *                              on it.\n     * @param {Object=} originalReplaceDirective An optional directive that will be ignored when\n     *                                           compiling the transclusion.\n     * @param {Array.<Function>} preLinkFns\n     * @param {Array.<Function>} postLinkFns\n     * @param {Object} previousCompileContext Context used for previous compilation of the current\n     *                                        node\n     * @returns {Function} linkFn\n     */\n    function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,\n                                   jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,\n                                   previousCompileContext) {\n      previousCompileContext = previousCompileContext || {};\n\n      var terminalPriority = -Number.MAX_VALUE,\n          newScopeDirective = previousCompileContext.newScopeDirective,\n          controllerDirectives = previousCompileContext.controllerDirectives,\n          newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,\n          templateDirective = previousCompileContext.templateDirective,\n          nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,\n          hasTranscludeDirective = false,\n          hasTemplate = false,\n          hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,\n          $compileNode = templateAttrs.$$element = jqLite(compileNode),\n          directive,\n          directiveName,\n          $template,\n          replaceDirective = originalReplaceDirective,\n          childTranscludeFn = transcludeFn,\n          linkFn,\n          didScanForMultipleTransclusion = false,\n          mightHaveMultipleTransclusionError = false,\n          directiveValue;\n\n      // executes all directives on the current element\n      for (var i = 0, ii = directives.length; i < ii; i++) {\n        directive = directives[i];\n        var attrStart = directive.$$start;\n        var attrEnd = directive.$$end;\n\n        // collect multiblock sections\n        if (attrStart) {\n          $compileNode = groupScan(compileNode, attrStart, attrEnd);\n        }\n        $template = undefined;\n\n        if (terminalPriority > directive.priority) {\n          break; // prevent further processing of directives\n        }\n\n        directiveValue = directive.scope;\n\n        if (directiveValue) {\n\n          // skip the check for directives with async templates, we'll check the derived sync\n          // directive when the template arrives\n          if (!directive.templateUrl) {\n            if (isObject(directiveValue)) {\n              // This directive is trying to add an isolated scope.\n              // Check that there is no scope of any kind already\n              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective,\n                                directive, $compileNode);\n              newIsolateScopeDirective = directive;\n            } else {\n              // This directive is trying to add a child scope.\n              // Check that there is no isolated scope already\n              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,\n                                $compileNode);\n            }\n          }\n\n          newScopeDirective = newScopeDirective || directive;\n        }\n\n        directiveName = directive.name;\n\n        // If we encounter a condition that can result in transclusion on the directive,\n        // then scan ahead in the remaining directives for others that may cause a multiple\n        // transclusion error to be thrown during the compilation process.  If a matching directive\n        // is found, then we know that when we encounter a transcluded directive, we need to eagerly\n        // compile the `transclude` function rather than doing it lazily in order to throw\n        // exceptions at the correct time\n        if (!didScanForMultipleTransclusion && ((directive.replace && (directive.templateUrl || directive.template))\n            || (directive.transclude && !directive.$$tlb))) {\n                var candidateDirective;\n\n                for (var scanningIndex = i + 1; (candidateDirective = directives[scanningIndex++]);) {\n                    if ((candidateDirective.transclude && !candidateDirective.$$tlb)\n                        || (candidateDirective.replace && (candidateDirective.templateUrl || candidateDirective.template))) {\n                        mightHaveMultipleTransclusionError = true;\n                        break;\n                    }\n                }\n\n                didScanForMultipleTransclusion = true;\n        }\n\n        if (!directive.templateUrl && directive.controller) {\n          controllerDirectives = controllerDirectives || createMap();\n          assertNoDuplicate('\\'' + directiveName + '\\' controller',\n              controllerDirectives[directiveName], directive, $compileNode);\n          controllerDirectives[directiveName] = directive;\n        }\n\n        directiveValue = directive.transclude;\n\n        if (directiveValue) {\n          hasTranscludeDirective = true;\n\n          // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.\n          // This option should only be used by directives that know how to safely handle element transclusion,\n          // where the transcluded nodes are added or replaced after linking.\n          if (!directive.$$tlb) {\n            assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);\n            nonTlbTranscludeDirective = directive;\n          }\n\n          if (directiveValue === 'element') {\n            hasElementTranscludeDirective = true;\n            terminalPriority = directive.priority;\n            $template = $compileNode;\n            $compileNode = templateAttrs.$$element =\n                jqLite(compile.$$createComment(directiveName, templateAttrs[directiveName]));\n            compileNode = $compileNode[0];\n            replaceWith(jqCollection, sliceArgs($template), compileNode);\n\n            // Support: Chrome < 50\n            // https://github.com/angular/angular.js/issues/14041\n\n            // In the versions of V8 prior to Chrome 50, the document fragment that is created\n            // in the `replaceWith` function is improperly garbage collected despite still\n            // being referenced by the `parentNode` property of all of the child nodes.  By adding\n            // a reference to the fragment via a different property, we can avoid that incorrect\n            // behavior.\n            // TODO: remove this line after Chrome 50 has been released\n            $template[0].$$parentNode = $template[0].parentNode;\n\n            childTranscludeFn = compilationGenerator(mightHaveMultipleTransclusionError, $template, transcludeFn, terminalPriority,\n                                        replaceDirective && replaceDirective.name, {\n                                          // Don't pass in:\n                                          // - controllerDirectives - otherwise we'll create duplicates controllers\n                                          // - newIsolateScopeDirective or templateDirective - combining templates with\n                                          //   element transclusion doesn't make sense.\n                                          //\n                                          // We need only nonTlbTranscludeDirective so that we prevent putting transclusion\n                                          // on the same element more than once.\n                                          nonTlbTranscludeDirective: nonTlbTranscludeDirective\n                                        });\n          } else {\n\n            var slots = createMap();\n\n            if (!isObject(directiveValue)) {\n              $template = jqLite(jqLiteClone(compileNode)).contents();\n            } else {\n\n              // We have transclusion slots,\n              // collect them up, compile them and store their transclusion functions\n              $template = [];\n\n              var slotMap = createMap();\n              var filledSlots = createMap();\n\n              // Parse the element selectors\n              forEach(directiveValue, function(elementSelector, slotName) {\n                // If an element selector starts with a ? then it is optional\n                var optional = (elementSelector.charAt(0) === '?');\n                elementSelector = optional ? elementSelector.substring(1) : elementSelector;\n\n                slotMap[elementSelector] = slotName;\n\n                // We explicitly assign `null` since this implies that a slot was defined but not filled.\n                // Later when calling boundTransclusion functions with a slot name we only error if the\n                // slot is `undefined`\n                slots[slotName] = null;\n\n                // filledSlots contains `true` for all slots that are either optional or have been\n                // filled. This is used to check that we have not missed any required slots\n                filledSlots[slotName] = optional;\n              });\n\n              // Add the matching elements into their slot\n              forEach($compileNode.contents(), function(node) {\n                var slotName = slotMap[directiveNormalize(nodeName_(node))];\n                if (slotName) {\n                  filledSlots[slotName] = true;\n                  slots[slotName] = slots[slotName] || [];\n                  slots[slotName].push(node);\n                } else {\n                  $template.push(node);\n                }\n              });\n\n              // Check for required slots that were not filled\n              forEach(filledSlots, function(filled, slotName) {\n                if (!filled) {\n                  throw $compileMinErr('reqslot', 'Required transclusion slot `{0}` was not filled.', slotName);\n                }\n              });\n\n              for (var slotName in slots) {\n                if (slots[slotName]) {\n                  // Only define a transclusion function if the slot was filled\n                  slots[slotName] = compilationGenerator(mightHaveMultipleTransclusionError, slots[slotName], transcludeFn);\n                }\n              }\n            }\n\n            $compileNode.empty(); // clear contents\n            childTranscludeFn = compilationGenerator(mightHaveMultipleTransclusionError, $template, transcludeFn, undefined,\n                undefined, { needsNewScope: directive.$$isolateScope || directive.$$newScope});\n            childTranscludeFn.$$slots = slots;\n          }\n        }\n\n        if (directive.template) {\n          hasTemplate = true;\n          assertNoDuplicate('template', templateDirective, directive, $compileNode);\n          templateDirective = directive;\n\n          directiveValue = (isFunction(directive.template))\n              ? directive.template($compileNode, templateAttrs)\n              : directive.template;\n\n          directiveValue = denormalizeTemplate(directiveValue);\n\n          if (directive.replace) {\n            replaceDirective = directive;\n            if (jqLiteIsTextNode(directiveValue)) {\n              $template = [];\n            } else {\n              $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));\n            }\n            compileNode = $template[0];\n\n            if ($template.length !== 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {\n              throw $compileMinErr('tplrt',\n                  'Template for directive \\'{0}\\' must have exactly one root element. {1}',\n                  directiveName, '');\n            }\n\n            replaceWith(jqCollection, $compileNode, compileNode);\n\n            var newTemplateAttrs = {$attr: {}};\n\n            // combine directives from the original node and from the template:\n            // - take the array of directives for this element\n            // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)\n            // - collect directives from the template and sort them by priority\n            // - combine directives as: processed + template + unprocessed\n            var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);\n            var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));\n\n            if (newIsolateScopeDirective || newScopeDirective) {\n              // The original directive caused the current element to be replaced but this element\n              // also needs to have a new scope, so we need to tell the template directives\n              // that they would need to get their scope from further up, if they require transclusion\n              markDirectiveScope(templateDirectives, newIsolateScopeDirective, newScopeDirective);\n            }\n            directives = directives.concat(templateDirectives).concat(unprocessedDirectives);\n            mergeTemplateAttributes(templateAttrs, newTemplateAttrs);\n\n            ii = directives.length;\n          } else {\n            $compileNode.html(directiveValue);\n          }\n        }\n\n        if (directive.templateUrl) {\n          hasTemplate = true;\n          assertNoDuplicate('template', templateDirective, directive, $compileNode);\n          templateDirective = directive;\n\n          if (directive.replace) {\n            replaceDirective = directive;\n          }\n\n          // eslint-disable-next-line no-func-assign\n          nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,\n              templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {\n                controllerDirectives: controllerDirectives,\n                newScopeDirective: (newScopeDirective !== directive) && newScopeDirective,\n                newIsolateScopeDirective: newIsolateScopeDirective,\n                templateDirective: templateDirective,\n                nonTlbTranscludeDirective: nonTlbTranscludeDirective\n              });\n          ii = directives.length;\n        } else if (directive.compile) {\n          try {\n            linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);\n            var context = directive.$$originalDirective || directive;\n            if (isFunction(linkFn)) {\n              addLinkFns(null, bind(context, linkFn), attrStart, attrEnd);\n            } else if (linkFn) {\n              addLinkFns(bind(context, linkFn.pre), bind(context, linkFn.post), attrStart, attrEnd);\n            }\n          } catch (e) {\n            $exceptionHandler(e, startingTag($compileNode));\n          }\n        }\n\n        if (directive.terminal) {\n          nodeLinkFn.terminal = true;\n          terminalPriority = Math.max(terminalPriority, directive.priority);\n        }\n\n      }\n\n      nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;\n      nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;\n      nodeLinkFn.templateOnThisElement = hasTemplate;\n      nodeLinkFn.transclude = childTranscludeFn;\n\n      previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;\n\n      // might be normal or delayed nodeLinkFn depending on if templateUrl is present\n      return nodeLinkFn;\n\n      ////////////////////\n\n      function addLinkFns(pre, post, attrStart, attrEnd) {\n        if (pre) {\n          if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);\n          pre.require = directive.require;\n          pre.directiveName = directiveName;\n          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n            pre = cloneAndAnnotateFn(pre, {isolateScope: true});\n          }\n          preLinkFns.push(pre);\n        }\n        if (post) {\n          if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);\n          post.require = directive.require;\n          post.directiveName = directiveName;\n          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {\n            post = cloneAndAnnotateFn(post, {isolateScope: true});\n          }\n          postLinkFns.push(post);\n        }\n      }\n\n      function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {\n        var i, ii, linkFn, isolateScope, controllerScope, elementControllers, transcludeFn, $element,\n            attrs, scopeBindingInfo;\n\n        if (compileNode === linkNode) {\n          attrs = templateAttrs;\n          $element = templateAttrs.$$element;\n        } else {\n          $element = jqLite(linkNode);\n          attrs = new Attributes($element, templateAttrs);\n        }\n\n        controllerScope = scope;\n        if (newIsolateScopeDirective) {\n          isolateScope = scope.$new(true);\n        } else if (newScopeDirective) {\n          controllerScope = scope.$parent;\n        }\n\n        if (boundTranscludeFn) {\n          // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`\n          // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`\n          transcludeFn = controllersBoundTransclude;\n          transcludeFn.$$boundTransclude = boundTranscludeFn;\n          // expose the slots on the `$transclude` function\n          transcludeFn.isSlotFilled = function(slotName) {\n            return !!boundTranscludeFn.$$slots[slotName];\n          };\n        }\n\n        if (controllerDirectives) {\n          elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope, newIsolateScopeDirective);\n        }\n\n        if (newIsolateScopeDirective) {\n          // Initialize isolate scope bindings for new isolate scope directive.\n          compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective ||\n              templateDirective === newIsolateScopeDirective.$$originalDirective)));\n          compile.$$addScopeClass($element, true);\n          isolateScope.$$isolateBindings =\n              newIsolateScopeDirective.$$isolateBindings;\n          scopeBindingInfo = initializeDirectiveBindings(scope, attrs, isolateScope,\n                                        isolateScope.$$isolateBindings,\n                                        newIsolateScopeDirective);\n          if (scopeBindingInfo.removeWatches) {\n            isolateScope.$on('$destroy', scopeBindingInfo.removeWatches);\n          }\n        }\n\n        // Initialize bindToController bindings\n        for (var name in elementControllers) {\n          var controllerDirective = controllerDirectives[name];\n          var controller = elementControllers[name];\n          var bindings = controllerDirective.$$bindings.bindToController;\n\n          if (preAssignBindingsEnabled) {\n            if (bindings) {\n              controller.bindingInfo =\n                initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective);\n            } else {\n              controller.bindingInfo = {};\n            }\n\n            var controllerResult = controller();\n            if (controllerResult !== controller.instance) {\n              // If the controller constructor has a return value, overwrite the instance\n              // from setupControllers\n              controller.instance = controllerResult;\n              $element.data('$' + controllerDirective.name + 'Controller', controllerResult);\n              if (controller.bindingInfo.removeWatches) {\n                controller.bindingInfo.removeWatches();\n              }\n              controller.bindingInfo =\n                initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective);\n            }\n          } else {\n            controller.instance = controller();\n            $element.data('$' + controllerDirective.name + 'Controller', controller.instance);\n            controller.bindingInfo =\n              initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective);\n          }\n        }\n\n        // Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy\n        forEach(controllerDirectives, function(controllerDirective, name) {\n          var require = controllerDirective.require;\n          if (controllerDirective.bindToController && !isArray(require) && isObject(require)) {\n            extend(elementControllers[name].instance, getControllers(name, require, $element, elementControllers));\n          }\n        });\n\n        // Handle the init and destroy lifecycle hooks on all controllers that have them\n        forEach(elementControllers, function(controller) {\n          var controllerInstance = controller.instance;\n          if (isFunction(controllerInstance.$onChanges)) {\n            try {\n              controllerInstance.$onChanges(controller.bindingInfo.initialChanges);\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n          }\n          if (isFunction(controllerInstance.$onInit)) {\n            try {\n              controllerInstance.$onInit();\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n          }\n          if (isFunction(controllerInstance.$doCheck)) {\n            controllerScope.$watch(function() { controllerInstance.$doCheck(); });\n            controllerInstance.$doCheck();\n          }\n          if (isFunction(controllerInstance.$onDestroy)) {\n            controllerScope.$on('$destroy', function callOnDestroyHook() {\n              controllerInstance.$onDestroy();\n            });\n          }\n        });\n\n        // PRELINKING\n        for (i = 0, ii = preLinkFns.length; i < ii; i++) {\n          linkFn = preLinkFns[i];\n          invokeLinkFn(linkFn,\n              linkFn.isolateScope ? isolateScope : scope,\n              $element,\n              attrs,\n              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),\n              transcludeFn\n          );\n        }\n\n        // RECURSION\n        // We only pass the isolate scope, if the isolate directive has a template,\n        // otherwise the child elements do not belong to the isolate directive.\n        var scopeToChild = scope;\n        if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {\n          scopeToChild = isolateScope;\n        }\n        if (childLinkFn) {\n          childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);\n        }\n\n        // POSTLINKING\n        for (i = postLinkFns.length - 1; i >= 0; i--) {\n          linkFn = postLinkFns[i];\n          invokeLinkFn(linkFn,\n              linkFn.isolateScope ? isolateScope : scope,\n              $element,\n              attrs,\n              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),\n              transcludeFn\n          );\n        }\n\n        // Trigger $postLink lifecycle hooks\n        forEach(elementControllers, function(controller) {\n          var controllerInstance = controller.instance;\n          if (isFunction(controllerInstance.$postLink)) {\n            controllerInstance.$postLink();\n          }\n        });\n\n        // This is the function that is injected as `$transclude`.\n        // Note: all arguments are optional!\n        function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement, slotName) {\n          var transcludeControllers;\n          // No scope passed in:\n          if (!isScope(scope)) {\n            slotName = futureParentElement;\n            futureParentElement = cloneAttachFn;\n            cloneAttachFn = scope;\n            scope = undefined;\n          }\n\n          if (hasElementTranscludeDirective) {\n            transcludeControllers = elementControllers;\n          }\n          if (!futureParentElement) {\n            futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;\n          }\n          if (slotName) {\n            // slotTranscludeFn can be one of three things:\n            //  * a transclude function - a filled slot\n            //  * `null` - an optional slot that was not filled\n            //  * `undefined` - a slot that was not declared (i.e. invalid)\n            var slotTranscludeFn = boundTranscludeFn.$$slots[slotName];\n            if (slotTranscludeFn) {\n              return slotTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);\n            } else if (isUndefined(slotTranscludeFn)) {\n              throw $compileMinErr('noslot',\n               'No parent directive that requires a transclusion with slot name \"{0}\". ' +\n               'Element: {1}',\n               slotName, startingTag($element));\n            }\n          } else {\n            return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);\n          }\n        }\n      }\n    }\n\n    function getControllers(directiveName, require, $element, elementControllers) {\n      var value;\n\n      if (isString(require)) {\n        var match = require.match(REQUIRE_PREFIX_REGEXP);\n        var name = require.substring(match[0].length);\n        var inheritType = match[1] || match[3];\n        var optional = match[2] === '?';\n\n        //If only parents then start at the parent element\n        if (inheritType === '^^') {\n          $element = $element.parent();\n        //Otherwise attempt getting the controller from elementControllers in case\n        //the element is transcluded (and has no data) and to avoid .data if possible\n        } else {\n          value = elementControllers && elementControllers[name];\n          value = value && value.instance;\n        }\n\n        if (!value) {\n          var dataName = '$' + name + 'Controller';\n          value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName);\n        }\n\n        if (!value && !optional) {\n          throw $compileMinErr('ctreq',\n              'Controller \\'{0}\\', required by directive \\'{1}\\', can\\'t be found!',\n              name, directiveName);\n        }\n      } else if (isArray(require)) {\n        value = [];\n        for (var i = 0, ii = require.length; i < ii; i++) {\n          value[i] = getControllers(directiveName, require[i], $element, elementControllers);\n        }\n      } else if (isObject(require)) {\n        value = {};\n        forEach(require, function(controller, property) {\n          value[property] = getControllers(directiveName, controller, $element, elementControllers);\n        });\n      }\n\n      return value || null;\n    }\n\n    function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope, newIsolateScopeDirective) {\n      var elementControllers = createMap();\n      for (var controllerKey in controllerDirectives) {\n        var directive = controllerDirectives[controllerKey];\n        var locals = {\n          $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,\n          $element: $element,\n          $attrs: attrs,\n          $transclude: transcludeFn\n        };\n\n        var controller = directive.controller;\n        if (controller === '@') {\n          controller = attrs[directive.name];\n        }\n\n        var controllerInstance = $controller(controller, locals, true, directive.controllerAs);\n\n        // For directives with element transclusion the element is a comment.\n        // In this case .data will not attach any data.\n        // Instead, we save the controllers for the element in a local hash and attach to .data\n        // later, once we have the actual element.\n        elementControllers[directive.name] = controllerInstance;\n        $element.data('$' + directive.name + 'Controller', controllerInstance.instance);\n      }\n      return elementControllers;\n    }\n\n    // Depending upon the context in which a directive finds itself it might need to have a new isolated\n    // or child scope created. For instance:\n    // * if the directive has been pulled into a template because another directive with a higher priority\n    // asked for element transclusion\n    // * if the directive itself asks for transclusion but it is at the root of a template and the original\n    // element was replaced. See https://github.com/angular/angular.js/issues/12936\n    function markDirectiveScope(directives, isolateScope, newScope) {\n      for (var j = 0, jj = directives.length; j < jj; j++) {\n        directives[j] = inherit(directives[j], {$$isolateScope: isolateScope, $$newScope: newScope});\n      }\n    }\n\n    /**\n     * looks up the directive and decorates it with exception handling and proper parameters. We\n     * call this the boundDirective.\n     *\n     * @param {string} name name of the directive to look up.\n     * @param {string} location The directive must be found in specific format.\n     *   String containing any of theses characters:\n     *\n     *   * `E`: element name\n     *   * `A': attribute\n     *   * `C`: class\n     *   * `M`: comment\n     * @returns {boolean} true if directive was added.\n     */\n    function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,\n                          endAttrName) {\n      if (name === ignoreDirective) return null;\n      var match = null;\n      if (hasDirectives.hasOwnProperty(name)) {\n        for (var directive, directives = $injector.get(name + Suffix),\n            i = 0, ii = directives.length; i < ii; i++) {\n          directive = directives[i];\n          if ((isUndefined(maxPriority) || maxPriority > directive.priority) &&\n               directive.restrict.indexOf(location) !== -1) {\n            if (startAttrName) {\n              directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});\n            }\n            if (!directive.$$bindings) {\n              var bindings = directive.$$bindings =\n                  parseDirectiveBindings(directive, directive.name);\n              if (isObject(bindings.isolateScope)) {\n                directive.$$isolateBindings = bindings.isolateScope;\n              }\n            }\n            tDirectives.push(directive);\n            match = directive;\n          }\n        }\n      }\n      return match;\n    }\n\n\n    /**\n     * looks up the directive and returns true if it is a multi-element directive,\n     * and therefore requires DOM nodes between -start and -end markers to be grouped\n     * together.\n     *\n     * @param {string} name name of the directive to look up.\n     * @returns true if directive was registered as multi-element.\n     */\n    function directiveIsMultiElement(name) {\n      if (hasDirectives.hasOwnProperty(name)) {\n        for (var directive, directives = $injector.get(name + Suffix),\n            i = 0, ii = directives.length; i < ii; i++) {\n          directive = directives[i];\n          if (directive.multiElement) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n\n    /**\n     * When the element is replaced with HTML template then the new attributes\n     * on the template need to be merged with the existing attributes in the DOM.\n     * The desired effect is to have both of the attributes present.\n     *\n     * @param {object} dst destination attributes (original DOM)\n     * @param {object} src source attributes (from the directive template)\n     */\n    function mergeTemplateAttributes(dst, src) {\n      var srcAttr = src.$attr,\n          dstAttr = dst.$attr;\n\n      // reapply the old attributes to the new element\n      forEach(dst, function(value, key) {\n        if (key.charAt(0) !== '$') {\n          if (src[key] && src[key] !== value) {\n            if (value.length) {\n              value += (key === 'style' ? ';' : ' ') + src[key];\n            } else {\n              value = src[key];\n            }\n          }\n          dst.$set(key, value, true, srcAttr[key]);\n        }\n      });\n\n      // copy the new attributes on the old attrs object\n      forEach(src, function(value, key) {\n        // Check if we already set this attribute in the loop above.\n        // `dst` will never contain hasOwnProperty as DOM parser won't let it.\n        // You will get an \"InvalidCharacterError: DOM Exception 5\" error if you\n        // have an attribute like \"has-own-property\" or \"data-has-own-property\", etc.\n        if (!dst.hasOwnProperty(key) && key.charAt(0) !== '$') {\n          dst[key] = value;\n\n          if (key !== 'class' && key !== 'style') {\n            dstAttr[key] = srcAttr[key];\n          }\n        }\n      });\n    }\n\n\n    function compileTemplateUrl(directives, $compileNode, tAttrs,\n        $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {\n      var linkQueue = [],\n          afterTemplateNodeLinkFn,\n          afterTemplateChildLinkFn,\n          beforeTemplateCompileNode = $compileNode[0],\n          origAsyncDirective = directives.shift(),\n          derivedSyncDirective = inherit(origAsyncDirective, {\n            templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective\n          }),\n          templateUrl = (isFunction(origAsyncDirective.templateUrl))\n              ? origAsyncDirective.templateUrl($compileNode, tAttrs)\n              : origAsyncDirective.templateUrl,\n          templateNamespace = origAsyncDirective.templateNamespace;\n\n      $compileNode.empty();\n\n      $templateRequest(templateUrl)\n        .then(function(content) {\n          var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;\n\n          content = denormalizeTemplate(content);\n\n          if (origAsyncDirective.replace) {\n            if (jqLiteIsTextNode(content)) {\n              $template = [];\n            } else {\n              $template = removeComments(wrapTemplate(templateNamespace, trim(content)));\n            }\n            compileNode = $template[0];\n\n            if ($template.length !== 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {\n              throw $compileMinErr('tplrt',\n                  'Template for directive \\'{0}\\' must have exactly one root element. {1}',\n                  origAsyncDirective.name, templateUrl);\n            }\n\n            tempTemplateAttrs = {$attr: {}};\n            replaceWith($rootElement, $compileNode, compileNode);\n            var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);\n\n            if (isObject(origAsyncDirective.scope)) {\n              // the original directive that caused the template to be loaded async required\n              // an isolate scope\n              markDirectiveScope(templateDirectives, true);\n            }\n            directives = templateDirectives.concat(directives);\n            mergeTemplateAttributes(tAttrs, tempTemplateAttrs);\n          } else {\n            compileNode = beforeTemplateCompileNode;\n            $compileNode.html(content);\n          }\n\n          directives.unshift(derivedSyncDirective);\n\n          afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,\n              childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,\n              previousCompileContext);\n          forEach($rootElement, function(node, i) {\n            if (node === compileNode) {\n              $rootElement[i] = $compileNode[0];\n            }\n          });\n          afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);\n\n          while (linkQueue.length) {\n            var scope = linkQueue.shift(),\n                beforeTemplateLinkNode = linkQueue.shift(),\n                linkRootElement = linkQueue.shift(),\n                boundTranscludeFn = linkQueue.shift(),\n                linkNode = $compileNode[0];\n\n            if (scope.$$destroyed) continue;\n\n            if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {\n              var oldClasses = beforeTemplateLinkNode.className;\n\n              if (!(previousCompileContext.hasElementTranscludeDirective &&\n                  origAsyncDirective.replace)) {\n                // it was cloned therefore we have to clone as well.\n                linkNode = jqLiteClone(compileNode);\n              }\n              replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);\n\n              // Copy in CSS classes from original node\n              safeAddClass(jqLite(linkNode), oldClasses);\n            }\n            if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n              childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n            } else {\n              childBoundTranscludeFn = boundTranscludeFn;\n            }\n            afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,\n              childBoundTranscludeFn);\n          }\n          linkQueue = null;\n        }).catch(function(error) {\n          if (isError(error)) {\n            $exceptionHandler(error);\n          }\n        });\n\n      return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {\n        var childBoundTranscludeFn = boundTranscludeFn;\n        if (scope.$$destroyed) return;\n        if (linkQueue) {\n          linkQueue.push(scope,\n                         node,\n                         rootElement,\n                         childBoundTranscludeFn);\n        } else {\n          if (afterTemplateNodeLinkFn.transcludeOnThisElement) {\n            childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);\n          }\n          afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);\n        }\n      };\n    }\n\n\n    /**\n     * Sorting function for bound directives.\n     */\n    function byPriority(a, b) {\n      var diff = b.priority - a.priority;\n      if (diff !== 0) return diff;\n      if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;\n      return a.index - b.index;\n    }\n\n    function assertNoDuplicate(what, previousDirective, directive, element) {\n\n      function wrapModuleNameIfDefined(moduleName) {\n        return moduleName ?\n          (' (module: ' + moduleName + ')') :\n          '';\n      }\n\n      if (previousDirective) {\n        throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}',\n            previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName),\n            directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element));\n      }\n    }\n\n\n    function addTextInterpolateDirective(directives, text) {\n      var interpolateFn = $interpolate(text, true);\n      if (interpolateFn) {\n        directives.push({\n          priority: 0,\n          compile: function textInterpolateCompileFn(templateNode) {\n            var templateNodeParent = templateNode.parent(),\n                hasCompileParent = !!templateNodeParent.length;\n\n            // When transcluding a template that has bindings in the root\n            // we don't have a parent and thus need to add the class during linking fn.\n            if (hasCompileParent) compile.$$addBindingClass(templateNodeParent);\n\n            return function textInterpolateLinkFn(scope, node) {\n              var parent = node.parent();\n              if (!hasCompileParent) compile.$$addBindingClass(parent);\n              compile.$$addBindingInfo(parent, interpolateFn.expressions);\n              scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {\n                node[0].nodeValue = value;\n              });\n            };\n          }\n        });\n      }\n    }\n\n\n    function wrapTemplate(type, template) {\n      type = lowercase(type || 'html');\n      switch (type) {\n      case 'svg':\n      case 'math':\n        var wrapper = window.document.createElement('div');\n        wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';\n        return wrapper.childNodes[0].childNodes;\n      default:\n        return template;\n      }\n    }\n\n\n    function getTrustedContext(node, attrNormalizedName) {\n      if (attrNormalizedName === 'srcdoc') {\n        return $sce.HTML;\n      }\n      var tag = nodeName_(node);\n      // All tags with src attributes require a RESOURCE_URL value, except for\n      // img and various html5 media tags.\n      if (attrNormalizedName === 'src' || attrNormalizedName === 'ngSrc') {\n        if (['img', 'video', 'audio', 'source', 'track'].indexOf(tag) === -1) {\n          return $sce.RESOURCE_URL;\n        }\n      // maction[xlink:href] can source SVG.  It's not limited to <maction>.\n      } else if (attrNormalizedName === 'xlinkHref' ||\n          (tag === 'form' && attrNormalizedName === 'action') ||\n          // links can be stylesheets or imports, which can run script in the current origin\n          (tag === 'link' && attrNormalizedName === 'href')\n      ) {\n        return $sce.RESOURCE_URL;\n      }\n    }\n\n\n    function addAttrInterpolateDirective(node, directives, value, name, isNgAttr) {\n      var trustedContext = getTrustedContext(node, name);\n      var mustHaveExpression = !isNgAttr;\n      var allOrNothing = ALL_OR_NOTHING_ATTRS[name] || isNgAttr;\n\n      var interpolateFn = $interpolate(value, mustHaveExpression, trustedContext, allOrNothing);\n\n      // no interpolation found -> ignore\n      if (!interpolateFn) return;\n\n      if (name === 'multiple' && nodeName_(node) === 'select') {\n        throw $compileMinErr('selmulti',\n            'Binding to the \\'multiple\\' attribute is not supported. Element: {0}',\n            startingTag(node));\n      }\n\n      if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {\n        throw $compileMinErr('nodomevents',\n            'Interpolations for HTML DOM event attributes are disallowed.  Please use the ' +\n                'ng- versions (such as ng-click instead of onclick) instead.');\n      }\n\n      directives.push({\n        priority: 100,\n        compile: function() {\n            return {\n              pre: function attrInterpolatePreLinkFn(scope, element, attr) {\n                var $$observers = (attr.$$observers || (attr.$$observers = createMap()));\n\n                // If the attribute has changed since last $interpolate()ed\n                var newValue = attr[name];\n                if (newValue !== value) {\n                  // we need to interpolate again since the attribute value has been updated\n                  // (e.g. by another directive's compile function)\n                  // ensure unset/empty values make interpolateFn falsy\n                  interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);\n                  value = newValue;\n                }\n\n                // if attribute was updated so that there is no interpolation going on we don't want to\n                // register any observers\n                if (!interpolateFn) return;\n\n                // initialize attr object so that it's ready in case we need the value for isolate\n                // scope initialization, otherwise the value would not be available from isolate\n                // directive's linking fn during linking phase\n                attr[name] = interpolateFn(scope);\n\n                ($$observers[name] || ($$observers[name] = [])).$$inter = true;\n                (attr.$$observers && attr.$$observers[name].$$scope || scope).\n                  $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {\n                    //special case for class attribute addition + removal\n                    //so that class changes can tap into the animation\n                    //hooks provided by the $animate service. Be sure to\n                    //skip animations when the first digest occurs (when\n                    //both the new and the old values are the same) since\n                    //the CSS classes are the non-interpolated values\n                    if (name === 'class' && newValue !== oldValue) {\n                      attr.$updateClass(newValue, oldValue);\n                    } else {\n                      attr.$set(name, newValue);\n                    }\n                  });\n              }\n            };\n          }\n      });\n    }\n\n\n    /**\n     * This is a special jqLite.replaceWith, which can replace items which\n     * have no parents, provided that the containing jqLite collection is provided.\n     *\n     * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes\n     *                               in the root of the tree.\n     * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep\n     *                                  the shell, but replace its DOM node reference.\n     * @param {Node} newNode The new DOM node.\n     */\n    function replaceWith($rootElement, elementsToRemove, newNode) {\n      var firstElementToRemove = elementsToRemove[0],\n          removeCount = elementsToRemove.length,\n          parent = firstElementToRemove.parentNode,\n          i, ii;\n\n      if ($rootElement) {\n        for (i = 0, ii = $rootElement.length; i < ii; i++) {\n          if ($rootElement[i] === firstElementToRemove) {\n            $rootElement[i++] = newNode;\n            for (var j = i, j2 = j + removeCount - 1,\n                     jj = $rootElement.length;\n                 j < jj; j++, j2++) {\n              if (j2 < jj) {\n                $rootElement[j] = $rootElement[j2];\n              } else {\n                delete $rootElement[j];\n              }\n            }\n            $rootElement.length -= removeCount - 1;\n\n            // If the replaced element is also the jQuery .context then replace it\n            // .context is a deprecated jQuery api, so we should set it only when jQuery set it\n            // http://api.jquery.com/context/\n            if ($rootElement.context === firstElementToRemove) {\n              $rootElement.context = newNode;\n            }\n            break;\n          }\n        }\n      }\n\n      if (parent) {\n        parent.replaceChild(newNode, firstElementToRemove);\n      }\n\n      // Append all the `elementsToRemove` to a fragment. This will...\n      // - remove them from the DOM\n      // - allow them to still be traversed with .nextSibling\n      // - allow a single fragment.qSA to fetch all elements being removed\n      var fragment = window.document.createDocumentFragment();\n      for (i = 0; i < removeCount; i++) {\n        fragment.appendChild(elementsToRemove[i]);\n      }\n\n      if (jqLite.hasData(firstElementToRemove)) {\n        // Copy over user data (that includes Angular's $scope etc.). Don't copy private\n        // data here because there's no public interface in jQuery to do that and copying over\n        // event listeners (which is the main use of private data) wouldn't work anyway.\n        jqLite.data(newNode, jqLite.data(firstElementToRemove));\n\n        // Remove $destroy event listeners from `firstElementToRemove`\n        jqLite(firstElementToRemove).off('$destroy');\n      }\n\n      // Cleanup any data/listeners on the elements and children.\n      // This includes invoking the $destroy event on any elements with listeners.\n      jqLite.cleanData(fragment.querySelectorAll('*'));\n\n      // Update the jqLite collection to only contain the `newNode`\n      for (i = 1; i < removeCount; i++) {\n        delete elementsToRemove[i];\n      }\n      elementsToRemove[0] = newNode;\n      elementsToRemove.length = 1;\n    }\n\n\n    function cloneAndAnnotateFn(fn, annotation) {\n      return extend(function() { return fn.apply(null, arguments); }, fn, annotation);\n    }\n\n\n    function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {\n      try {\n        linkFn(scope, $element, attrs, controllers, transcludeFn);\n      } catch (e) {\n        $exceptionHandler(e, startingTag($element));\n      }\n    }\n\n    function strictBindingsCheck(attrName, directiveName) {\n      if (strictComponentBindingsEnabled) {\n        throw $compileMinErr('missingattr',\n          'Attribute \\'{0}\\' of \\'{1}\\' is non-optional and must be set!',\n          attrName, directiveName);\n      }\n    }\n\n    // Set up $watches for isolate scope and controller bindings.\n    function initializeDirectiveBindings(scope, attrs, destination, bindings, directive) {\n      var removeWatchCollection = [];\n      var initialChanges = {};\n      var changes;\n\n      forEach(bindings, function initializeBinding(definition, scopeName) {\n        var attrName = definition.attrName,\n        optional = definition.optional,\n        mode = definition.mode, // @, =, <, or &\n        lastValue,\n        parentGet, parentSet, compare, removeWatch;\n\n        switch (mode) {\n\n          case '@':\n            if (!optional && !hasOwnProperty.call(attrs, attrName)) {\n              strictBindingsCheck(attrName, directive.name);\n              destination[scopeName] = attrs[attrName] = undefined;\n\n            }\n            removeWatch = attrs.$observe(attrName, function(value) {\n              if (isString(value) || isBoolean(value)) {\n                var oldValue = destination[scopeName];\n                recordChanges(scopeName, value, oldValue);\n                destination[scopeName] = value;\n              }\n            });\n            attrs.$$observers[attrName].$$scope = scope;\n            lastValue = attrs[attrName];\n            if (isString(lastValue)) {\n              // If the attribute has been provided then we trigger an interpolation to ensure\n              // the value is there for use in the link fn\n              destination[scopeName] = $interpolate(lastValue)(scope);\n            } else if (isBoolean(lastValue)) {\n              // If the attributes is one of the BOOLEAN_ATTR then Angular will have converted\n              // the value to boolean rather than a string, so we special case this situation\n              destination[scopeName] = lastValue;\n            }\n            initialChanges[scopeName] = new SimpleChange(_UNINITIALIZED_VALUE, destination[scopeName]);\n            removeWatchCollection.push(removeWatch);\n            break;\n\n          case '=':\n            if (!hasOwnProperty.call(attrs, attrName)) {\n              if (optional) break;\n              strictBindingsCheck(attrName, directive.name);\n              attrs[attrName] = undefined;\n            }\n            if (optional && !attrs[attrName]) break;\n\n            parentGet = $parse(attrs[attrName]);\n            if (parentGet.literal) {\n              compare = equals;\n            } else {\n              compare = simpleCompare;\n            }\n            parentSet = parentGet.assign || function() {\n              // reset the change, or we will throw this exception on every $digest\n              lastValue = destination[scopeName] = parentGet(scope);\n              throw $compileMinErr('nonassign',\n                  'Expression \\'{0}\\' in attribute \\'{1}\\' used with directive \\'{2}\\' is non-assignable!',\n                  attrs[attrName], attrName, directive.name);\n            };\n            lastValue = destination[scopeName] = parentGet(scope);\n            var parentValueWatch = function parentValueWatch(parentValue) {\n              if (!compare(parentValue, destination[scopeName])) {\n                // we are out of sync and need to copy\n                if (!compare(parentValue, lastValue)) {\n                  // parent changed and it has precedence\n                  destination[scopeName] = parentValue;\n                } else {\n                  // if the parent can be assigned then do so\n                  parentSet(scope, parentValue = destination[scopeName]);\n                }\n              }\n              lastValue = parentValue;\n              return lastValue;\n            };\n            parentValueWatch.$stateful = true;\n            if (definition.collection) {\n              removeWatch = scope.$watchCollection(attrs[attrName], parentValueWatch);\n            } else {\n              removeWatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);\n            }\n            removeWatchCollection.push(removeWatch);\n            break;\n\n          case '<':\n            if (!hasOwnProperty.call(attrs, attrName)) {\n              if (optional) break;\n              strictBindingsCheck(attrName, directive.name);\n              attrs[attrName] = undefined;\n            }\n            if (optional && !attrs[attrName]) break;\n\n            parentGet = $parse(attrs[attrName]);\n            var deepWatch = parentGet.literal;\n\n            var initialValue = destination[scopeName] = parentGet(scope);\n            initialChanges[scopeName] = new SimpleChange(_UNINITIALIZED_VALUE, destination[scopeName]);\n\n            removeWatch = scope.$watch(parentGet, function parentValueWatchAction(newValue, oldValue) {\n              if (oldValue === newValue) {\n                if (oldValue === initialValue || (deepWatch && equals(oldValue, initialValue))) {\n                  return;\n                }\n                oldValue = initialValue;\n              }\n              recordChanges(scopeName, newValue, oldValue);\n              destination[scopeName] = newValue;\n            }, deepWatch);\n\n            removeWatchCollection.push(removeWatch);\n            break;\n\n          case '&':\n            if (!optional && !hasOwnProperty.call(attrs, attrName)) {\n              strictBindingsCheck(attrName, directive.name);\n            }\n            // Don't assign Object.prototype method to scope\n            parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop;\n\n            // Don't assign noop to destination if expression is not valid\n            if (parentGet === noop && optional) break;\n\n            destination[scopeName] = function(locals) {\n              return parentGet(scope, locals);\n            };\n            break;\n        }\n      });\n\n      function recordChanges(key, currentValue, previousValue) {\n        if (isFunction(destination.$onChanges) && !simpleCompare(currentValue, previousValue)) {\n          // If we have not already scheduled the top level onChangesQueue handler then do so now\n          if (!onChangesQueue) {\n            scope.$$postDigest(flushOnChangesQueue);\n            onChangesQueue = [];\n          }\n          // If we have not already queued a trigger of onChanges for this controller then do so now\n          if (!changes) {\n            changes = {};\n            onChangesQueue.push(triggerOnChangesHook);\n          }\n          // If the has been a change on this property already then we need to reuse the previous value\n          if (changes[key]) {\n            previousValue = changes[key].previousValue;\n          }\n          // Store this change\n          changes[key] = new SimpleChange(previousValue, currentValue);\n        }\n      }\n\n      function triggerOnChangesHook() {\n        destination.$onChanges(changes);\n        // Now clear the changes so that we schedule onChanges when more changes arrive\n        changes = undefined;\n      }\n\n      return {\n        initialChanges: initialChanges,\n        removeWatches: removeWatchCollection.length && function removeWatches() {\n          for (var i = 0, ii = removeWatchCollection.length; i < ii; ++i) {\n            removeWatchCollection[i]();\n          }\n        }\n      };\n    }\n  }];\n}\n\nfunction SimpleChange(previous, current) {\n  this.previousValue = previous;\n  this.currentValue = current;\n}\nSimpleChange.prototype.isFirstChange = function() { return this.previousValue === _UNINITIALIZED_VALUE; };\n\n\nvar PREFIX_REGEXP = /^((?:x|data)[:\\-_])/i;\nvar SPECIAL_CHARS_REGEXP = /[:\\-_]+(.)/g;\n\n/**\n * Converts all accepted directives format into proper directive name.\n * @param name Name to normalize\n */\nfunction directiveNormalize(name) {\n  return name\n    .replace(PREFIX_REGEXP, '')\n    .replace(SPECIAL_CHARS_REGEXP, fnCamelCaseReplace);\n}\n\n/**\n * @ngdoc type\n * @name $compile.directive.Attributes\n *\n * @description\n * A shared object between directive compile / linking functions which contains normalized DOM\n * element attributes. The values reflect current binding state `{{ }}`. The normalization is\n * needed since all of these are treated as equivalent in Angular:\n *\n * ```\n *    <span ng:bind=\"a\" ng-bind=\"a\" data-ng-bind=\"a\" x-ng-bind=\"a\">\n * ```\n */\n\n/**\n * @ngdoc property\n * @name $compile.directive.Attributes#$attr\n *\n * @description\n * A map of DOM element attribute names to the normalized name. This is\n * needed to do reverse lookup from normalized name back to actual name.\n */\n\n\n/**\n * @ngdoc method\n * @name $compile.directive.Attributes#$set\n * @kind function\n *\n * @description\n * Set DOM element attribute value.\n *\n *\n * @param {string} name Normalized element attribute name of the property to modify. The name is\n *          reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}\n *          property to the original name.\n * @param {string} value Value to set the attribute to. The value can be an interpolated string.\n */\n\n\n\n/**\n * Closure compiler type information\n */\n\nfunction nodesetLinkingFn(\n  /* angular.Scope */ scope,\n  /* NodeList */ nodeList,\n  /* Element */ rootElement,\n  /* function(Function) */ boundTranscludeFn\n) {}\n\nfunction directiveLinkingFn(\n  /* nodesetLinkingFn */ nodesetLinkingFn,\n  /* angular.Scope */ scope,\n  /* Node */ node,\n  /* Element */ rootElement,\n  /* function(Function) */ boundTranscludeFn\n) {}\n\nfunction tokenDifference(str1, str2) {\n  var values = '',\n      tokens1 = str1.split(/\\s+/),\n      tokens2 = str2.split(/\\s+/);\n\n  outer:\n  for (var i = 0; i < tokens1.length; i++) {\n    var token = tokens1[i];\n    for (var j = 0; j < tokens2.length; j++) {\n      if (token === tokens2[j]) continue outer;\n    }\n    values += (values.length > 0 ? ' ' : '') + token;\n  }\n  return values;\n}\n\nfunction removeComments(jqNodes) {\n  jqNodes = jqLite(jqNodes);\n  var i = jqNodes.length;\n\n  if (i <= 1) {\n    return jqNodes;\n  }\n\n  while (i--) {\n    var node = jqNodes[i];\n    if (node.nodeType === NODE_TYPE_COMMENT ||\n       (node.nodeType === NODE_TYPE_TEXT && node.nodeValue.trim() === '')) {\n         splice.call(jqNodes, i, 1);\n    }\n  }\n  return jqNodes;\n}\n\nvar $controllerMinErr = minErr('$controller');\n\n\nvar CNTRL_REG = /^(\\S+)(\\s+as\\s+([\\w$]+))?$/;\nfunction identifierForController(controller, ident) {\n  if (ident && isString(ident)) return ident;\n  if (isString(controller)) {\n    var match = CNTRL_REG.exec(controller);\n    if (match) return match[3];\n  }\n}\n\n\n/**\n * @ngdoc provider\n * @name $controllerProvider\n * @this\n *\n * @description\n * The {@link ng.$controller $controller service} is used by Angular to create new\n * controllers.\n *\n * This provider allows controller registration via the\n * {@link ng.$controllerProvider#register register} method.\n */\nfunction $ControllerProvider() {\n  var controllers = {},\n      globals = false;\n\n  /**\n   * @ngdoc method\n   * @name $controllerProvider#has\n   * @param {string} name Controller name to check.\n   */\n  this.has = function(name) {\n    return controllers.hasOwnProperty(name);\n  };\n\n  /**\n   * @ngdoc method\n   * @name $controllerProvider#register\n   * @param {string|Object} name Controller name, or an object map of controllers where the keys are\n   *    the names and the values are the constructors.\n   * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI\n   *    annotations in the array notation).\n   */\n  this.register = function(name, constructor) {\n    assertNotHasOwnProperty(name, 'controller');\n    if (isObject(name)) {\n      extend(controllers, name);\n    } else {\n      controllers[name] = constructor;\n    }\n  };\n\n  /**\n   * @ngdoc method\n   * @name $controllerProvider#allowGlobals\n   * @description If called, allows `$controller` to find controller constructors on `window`\n   *\n   * @deprecated\n   * sinceVersion=\"v1.3.0\"\n   * removeVersion=\"v1.7.0\"\n   * This method of finding controllers has been deprecated.\n   */\n  this.allowGlobals = function() {\n    globals = true;\n  };\n\n\n  this.$get = ['$injector', '$window', function($injector, $window) {\n\n    /**\n     * @ngdoc service\n     * @name $controller\n     * @requires $injector\n     *\n     * @param {Function|string} constructor If called with a function then it's considered to be the\n     *    controller constructor function. Otherwise it's considered to be a string which is used\n     *    to retrieve the controller constructor using the following steps:\n     *\n     *    * check if a controller with given name is registered via `$controllerProvider`\n     *    * check if evaluating the string on the current scope returns a constructor\n     *    * if $controllerProvider#allowGlobals, check `window[constructor]` on the global\n     *      `window` object (deprecated, not recommended)\n     *\n     *    The string can use the `controller as property` syntax, where the controller instance is published\n     *    as the specified property on the `scope`; the `scope` must be injected into `locals` param for this\n     *    to work correctly.\n     *\n     * @param {Object} locals Injection locals for Controller.\n     * @return {Object} Instance of given controller.\n     *\n     * @description\n     * `$controller` service is responsible for instantiating controllers.\n     *\n     * It's just a simple call to {@link auto.$injector $injector}, but extracted into\n     * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).\n     */\n    return function $controller(expression, locals, later, ident) {\n      // PRIVATE API:\n      //   param `later` --- indicates that the controller's constructor is invoked at a later time.\n      //                     If true, $controller will allocate the object with the correct\n      //                     prototype chain, but will not invoke the controller until a returned\n      //                     callback is invoked.\n      //   param `ident` --- An optional label which overrides the label parsed from the controller\n      //                     expression, if any.\n      var instance, match, constructor, identifier;\n      later = later === true;\n      if (ident && isString(ident)) {\n        identifier = ident;\n      }\n\n      if (isString(expression)) {\n        match = expression.match(CNTRL_REG);\n        if (!match) {\n          throw $controllerMinErr('ctrlfmt',\n            'Badly formed controller string \\'{0}\\'. ' +\n            'Must match `__name__ as __id__` or `__name__`.', expression);\n        }\n        constructor = match[1];\n        identifier = identifier || match[3];\n        expression = controllers.hasOwnProperty(constructor)\n            ? controllers[constructor]\n            : getter(locals.$scope, constructor, true) ||\n                (globals ? getter($window, constructor, true) : undefined);\n\n        if (!expression) {\n          throw $controllerMinErr('ctrlreg',\n            'The controller with the name \\'{0}\\' is not registered.', constructor);\n        }\n\n        assertArgFn(expression, constructor, true);\n      }\n\n      if (later) {\n        // Instantiate controller later:\n        // This machinery is used to create an instance of the object before calling the\n        // controller's constructor itself.\n        //\n        // This allows properties to be added to the controller before the constructor is\n        // invoked. Primarily, this is used for isolate scope bindings in $compile.\n        //\n        // This feature is not intended for use by applications, and is thus not documented\n        // publicly.\n        // Object creation: http://jsperf.com/create-constructor/2\n        var controllerPrototype = (isArray(expression) ?\n          expression[expression.length - 1] : expression).prototype;\n        instance = Object.create(controllerPrototype || null);\n\n        if (identifier) {\n          addIdentifier(locals, identifier, instance, constructor || expression.name);\n        }\n\n        return extend(function $controllerInit() {\n          var result = $injector.invoke(expression, instance, locals, constructor);\n          if (result !== instance && (isObject(result) || isFunction(result))) {\n            instance = result;\n            if (identifier) {\n              // If result changed, re-assign controllerAs value to scope.\n              addIdentifier(locals, identifier, instance, constructor || expression.name);\n            }\n          }\n          return instance;\n        }, {\n          instance: instance,\n          identifier: identifier\n        });\n      }\n\n      instance = $injector.instantiate(expression, locals, constructor);\n\n      if (identifier) {\n        addIdentifier(locals, identifier, instance, constructor || expression.name);\n      }\n\n      return instance;\n    };\n\n    function addIdentifier(locals, identifier, instance, name) {\n      if (!(locals && isObject(locals.$scope))) {\n        throw minErr('$controller')('noscp',\n          'Cannot export controller \\'{0}\\' as \\'{1}\\'! No $scope object provided via `locals`.',\n          name, identifier);\n      }\n\n      locals.$scope[identifier] = instance;\n    }\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $document\n * @requires $window\n * @this\n *\n * @description\n * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.\n *\n * @example\n   <example module=\"documentExample\" name=\"document\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <p>$document title: <b ng-bind=\"title\"></b></p>\n         <p>window.document title: <b ng-bind=\"windowTitle\"></b></p>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('documentExample', [])\n         .controller('ExampleController', ['$scope', '$document', function($scope, $document) {\n           $scope.title = $document[0].title;\n           $scope.windowTitle = angular.element(window.document)[0].title;\n         }]);\n     </file>\n   </example>\n */\nfunction $DocumentProvider() {\n  this.$get = ['$window', function(window) {\n    return jqLite(window.document);\n  }];\n}\n\n\n/**\n * @private\n * @this\n * Listens for document visibility change and makes the current status accessible.\n */\nfunction $$IsDocumentHiddenProvider() {\n  this.$get = ['$document', '$rootScope', function($document, $rootScope) {\n    var doc = $document[0];\n    var hidden = doc && doc.hidden;\n\n    $document.on('visibilitychange', changeListener);\n\n    $rootScope.$on('$destroy', function() {\n      $document.off('visibilitychange', changeListener);\n    });\n\n    function changeListener() {\n      hidden = doc.hidden;\n    }\n\n    return function() {\n      return hidden;\n    };\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $exceptionHandler\n * @requires ng.$log\n * @this\n *\n * @description\n * Any uncaught exception in angular expressions is delegated to this service.\n * The default implementation simply delegates to `$log.error` which logs it into\n * the browser console.\n *\n * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by\n * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.\n *\n * ## Example:\n *\n * The example below will overwrite the default `$exceptionHandler` in order to (a) log uncaught\n * errors to the backend for later inspection by the developers and (b) to use `$log.warn()` instead\n * of `$log.error()`.\n *\n * ```js\n *   angular.\n *     module('exceptionOverwrite', []).\n *     factory('$exceptionHandler', ['$log', 'logErrorsToBackend', function($log, logErrorsToBackend) {\n *       return function myExceptionHandler(exception, cause) {\n *         logErrorsToBackend(exception, cause);\n *         $log.warn(exception, cause);\n *       };\n *     }]);\n * ```\n *\n * <hr />\n * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind`\n * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler}\n * (unless executed during a digest).\n *\n * If you wish, you can manually delegate exceptions, e.g.\n * `try { ... } catch(e) { $exceptionHandler(e); }`\n *\n * @param {Error} exception Exception associated with the error.\n * @param {string=} cause Optional information about the context in which\n *       the error was thrown.\n *\n */\nfunction $ExceptionHandlerProvider() {\n  this.$get = ['$log', function($log) {\n    return function(exception, cause) {\n      $log.error.apply($log, arguments);\n    };\n  }];\n}\n\nvar $$ForceReflowProvider = /** @this */ function() {\n  this.$get = ['$document', function($document) {\n    return function(domNode) {\n      //the line below will force the browser to perform a repaint so\n      //that all the animated elements within the animation frame will\n      //be properly updated and drawn on screen. This is required to\n      //ensure that the preparation animation is properly flushed so that\n      //the active state picks up from there. DO NOT REMOVE THIS LINE.\n      //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH\n      //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND\n      //WILL TAKE YEARS AWAY FROM YOUR LIFE.\n      if (domNode) {\n        if (!domNode.nodeType && domNode instanceof jqLite) {\n          domNode = domNode[0];\n        }\n      } else {\n        domNode = $document[0].body;\n      }\n      return domNode.offsetWidth + 1;\n    };\n  }];\n};\n\nvar APPLICATION_JSON = 'application/json';\nvar CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'};\nvar JSON_START = /^\\[|^\\{(?!\\{)/;\nvar JSON_ENDS = {\n  '[': /]$/,\n  '{': /}$/\n};\nvar JSON_PROTECTION_PREFIX = /^\\)]\\}',?\\n/;\nvar $httpMinErr = minErr('$http');\n\nfunction serializeValue(v) {\n  if (isObject(v)) {\n    return isDate(v) ? v.toISOString() : toJson(v);\n  }\n  return v;\n}\n\n\n/** @this */\nfunction $HttpParamSerializerProvider() {\n  /**\n   * @ngdoc service\n   * @name $httpParamSerializer\n   * @description\n   *\n   * Default {@link $http `$http`} params serializer that converts objects to strings\n   * according to the following rules:\n   *\n   * * `{'foo': 'bar'}` results in `foo=bar`\n   * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object)\n   * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element)\n   * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D` (stringified and encoded representation of an object)\n   *\n   * Note that serializer will sort the request parameters alphabetically.\n   * */\n\n  this.$get = function() {\n    return function ngParamSerializer(params) {\n      if (!params) return '';\n      var parts = [];\n      forEachSorted(params, function(value, key) {\n        if (value === null || isUndefined(value) || isFunction(value)) return;\n        if (isArray(value)) {\n          forEach(value, function(v) {\n            parts.push(encodeUriQuery(key)  + '=' + encodeUriQuery(serializeValue(v)));\n          });\n        } else {\n          parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value)));\n        }\n      });\n\n      return parts.join('&');\n    };\n  };\n}\n\n/** @this */\nfunction $HttpParamSerializerJQLikeProvider() {\n  /**\n   * @ngdoc service\n   * @name $httpParamSerializerJQLike\n   *\n   * @description\n   *\n   * Alternative {@link $http `$http`} params serializer that follows\n   * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic.\n   * The serializer will also sort the params alphabetically.\n   *\n   * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property:\n   *\n   * ```js\n   * $http({\n   *   url: myUrl,\n   *   method: 'GET',\n   *   params: myParams,\n   *   paramSerializer: '$httpParamSerializerJQLike'\n   * });\n   * ```\n   *\n   * It is also possible to set it as the default `paramSerializer` in the\n   * {@link $httpProvider#defaults `$httpProvider`}.\n   *\n   * Additionally, you can inject the serializer and use it explicitly, for example to serialize\n   * form data for submission:\n   *\n   * ```js\n   * .controller(function($http, $httpParamSerializerJQLike) {\n   *   //...\n   *\n   *   $http({\n   *     url: myUrl,\n   *     method: 'POST',\n   *     data: $httpParamSerializerJQLike(myData),\n   *     headers: {\n   *       'Content-Type': 'application/x-www-form-urlencoded'\n   *     }\n   *   });\n   *\n   * });\n   * ```\n   *\n   * */\n  this.$get = function() {\n    return function jQueryLikeParamSerializer(params) {\n      if (!params) return '';\n      var parts = [];\n      serialize(params, '', true);\n      return parts.join('&');\n\n      function serialize(toSerialize, prefix, topLevel) {\n        if (toSerialize === null || isUndefined(toSerialize)) return;\n        if (isArray(toSerialize)) {\n          forEach(toSerialize, function(value, index) {\n            serialize(value, prefix + '[' + (isObject(value) ? index : '') + ']');\n          });\n        } else if (isObject(toSerialize) && !isDate(toSerialize)) {\n          forEachSorted(toSerialize, function(value, key) {\n            serialize(value, prefix +\n                (topLevel ? '' : '[') +\n                key +\n                (topLevel ? '' : ']'));\n          });\n        } else {\n          parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize)));\n        }\n      }\n    };\n  };\n}\n\nfunction defaultHttpResponseTransform(data, headers) {\n  if (isString(data)) {\n    // Strip json vulnerability protection prefix and trim whitespace\n    var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();\n\n    if (tempData) {\n      var contentType = headers('Content-Type');\n      var hasJsonContentType = contentType && (contentType.indexOf(APPLICATION_JSON) === 0);\n\n      if (hasJsonContentType || isJsonLike(tempData)) {\n        try {\n          data = fromJson(tempData);\n        } catch (e) {\n          if (!hasJsonContentType) {\n            return data;\n          }\n          throw $httpMinErr('baddata', 'Data must be a valid JSON object. Received: \"{0}\". ' +\n          'Parse error: \"{1}\"', data, e);\n        }\n      }\n    }\n  }\n\n  return data;\n}\n\nfunction isJsonLike(str) {\n    var jsonStart = str.match(JSON_START);\n    return jsonStart && JSON_ENDS[jsonStart[0]].test(str);\n}\n\n/**\n * Parse headers into key value object\n *\n * @param {string} headers Raw headers as a string\n * @returns {Object} Parsed headers as key value object\n */\nfunction parseHeaders(headers) {\n  var parsed = createMap(), i;\n\n  function fillInParsed(key, val) {\n    if (key) {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  }\n\n  if (isString(headers)) {\n    forEach(headers.split('\\n'), function(line) {\n      i = line.indexOf(':');\n      fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1)));\n    });\n  } else if (isObject(headers)) {\n    forEach(headers, function(headerVal, headerKey) {\n      fillInParsed(lowercase(headerKey), trim(headerVal));\n    });\n  }\n\n  return parsed;\n}\n\n\n/**\n * Returns a function that provides access to parsed headers.\n *\n * Headers are lazy parsed when first requested.\n * @see parseHeaders\n *\n * @param {(string|Object)} headers Headers to provide access to.\n * @returns {function(string=)} Returns a getter function which if called with:\n *\n *   - if called with an argument returns a single header value or null\n *   - if called with no arguments returns an object containing all headers.\n */\nfunction headersGetter(headers) {\n  var headersObj;\n\n  return function(name) {\n    if (!headersObj) headersObj =  parseHeaders(headers);\n\n    if (name) {\n      var value = headersObj[lowercase(name)];\n      if (value === undefined) {\n        value = null;\n      }\n      return value;\n    }\n\n    return headersObj;\n  };\n}\n\n\n/**\n * Chain all given functions\n *\n * This function is used for both request and response transforming\n *\n * @param {*} data Data to transform.\n * @param {function(string=)} headers HTTP headers getter fn.\n * @param {number} status HTTP status code of the response.\n * @param {(Function|Array.<Function>)} fns Function or an array of functions.\n * @returns {*} Transformed data.\n */\nfunction transformData(data, headers, status, fns) {\n  if (isFunction(fns)) {\n    return fns(data, headers, status);\n  }\n\n  forEach(fns, function(fn) {\n    data = fn(data, headers, status);\n  });\n\n  return data;\n}\n\n\nfunction isSuccess(status) {\n  return 200 <= status && status < 300;\n}\n\n\n/**\n * @ngdoc provider\n * @name $httpProvider\n * @this\n *\n * @description\n * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.\n * */\nfunction $HttpProvider() {\n  /**\n   * @ngdoc property\n   * @name $httpProvider#defaults\n   * @description\n   *\n   * Object containing default values for all {@link ng.$http $http} requests.\n   *\n   * - **`defaults.cache`** - {boolean|Object} - A boolean value or object created with\n   * {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of HTTP responses\n   * by default. See {@link $http#caching $http Caching} for more information.\n   *\n   * - **`defaults.headers`** - {Object} - Default headers for all $http requests.\n   * Refer to {@link ng.$http#setting-http-headers $http} for documentation on\n   * setting default headers.\n   *     - **`defaults.headers.common`**\n   *     - **`defaults.headers.post`**\n   *     - **`defaults.headers.put`**\n   *     - **`defaults.headers.patch`**\n   *\n   * - **`defaults.jsonpCallbackParam`** - `{string}` - the name of the query parameter that passes the name of the\n   * callback in a JSONP request. The value of this parameter will be replaced with the expression generated by the\n   * {@link $jsonpCallbacks} service. Defaults to `'callback'`.\n   *\n   * - **`defaults.paramSerializer`** - `{string|function(Object<string,string>):string}` - A function\n   *  used to the prepare string representation of request parameters (specified as an object).\n   *  If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}.\n   *  Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}.\n   *\n   * - **`defaults.transformRequest`** -\n   * `{Array<function(data, headersGetter)>|function(data, headersGetter)}` -\n   * An array of functions (or a single function) which are applied to the request data.\n   * By default, this is an array with one request transformation function:\n   *\n   *   - If the `data` property of the request configuration object contains an object, serialize it\n   *     into JSON format.\n   *\n   * - **`defaults.transformResponse`** -\n   * `{Array<function(data, headersGetter, status)>|function(data, headersGetter, status)}` -\n   * An array of functions (or a single function) which are applied to the response data. By default,\n   * this is an array which applies one response transformation function that does two things:\n   *\n   *  - If XSRF prefix is detected, strip it\n   *    (see {@link ng.$http#security-considerations Security Considerations in the $http docs}).\n   *  - If the `Content-Type` is `application/json` or the response looks like JSON,\n   *    deserialize it using a JSON parser.\n   *\n   * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.\n   * Defaults value is `'XSRF-TOKEN'`.\n   *\n   * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the\n   * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.\n   *\n   **/\n  var defaults = this.defaults = {\n    // transform incoming response data\n    transformResponse: [defaultHttpResponseTransform],\n\n    // transform outgoing request data\n    transformRequest: [function(d) {\n      return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;\n    }],\n\n    // default headers\n    headers: {\n      common: {\n        'Accept': 'application/json, text/plain, */*'\n      },\n      post:   shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n      put:    shallowCopy(CONTENT_TYPE_APPLICATION_JSON),\n      patch:  shallowCopy(CONTENT_TYPE_APPLICATION_JSON)\n    },\n\n    xsrfCookieName: 'XSRF-TOKEN',\n    xsrfHeaderName: 'X-XSRF-TOKEN',\n\n    paramSerializer: '$httpParamSerializer',\n\n    jsonpCallbackParam: 'callback'\n  };\n\n  var useApplyAsync = false;\n  /**\n   * @ngdoc method\n   * @name $httpProvider#useApplyAsync\n   * @description\n   *\n   * Configure $http service to combine processing of multiple http responses received at around\n   * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in\n   * significant performance improvement for bigger applications that make many HTTP requests\n   * concurrently (common during application bootstrap).\n   *\n   * Defaults to false. If no value is specified, returns the current configured value.\n   *\n   * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred\n   *    \"apply\" on the next tick, giving time for subsequent requests in a roughly ~10ms window\n   *    to load and share the same digest cycle.\n   *\n   * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.\n   *    otherwise, returns the current configured value.\n   **/\n  this.useApplyAsync = function(value) {\n    if (isDefined(value)) {\n      useApplyAsync = !!value;\n      return this;\n    }\n    return useApplyAsync;\n  };\n\n  /**\n   * @ngdoc property\n   * @name $httpProvider#interceptors\n   * @description\n   *\n   * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}\n   * pre-processing of request or postprocessing of responses.\n   *\n   * These service factories are ordered by request, i.e. they are applied in the same order as the\n   * array, on request, but reverse order, on response.\n   *\n   * {@link ng.$http#interceptors Interceptors detailed info}\n   **/\n  var interceptorFactories = this.interceptors = [];\n\n  this.$get = ['$browser', '$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector', '$sce',\n      function($browser, $httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector, $sce) {\n\n    var defaultCache = $cacheFactory('$http');\n\n    /**\n     * Make sure that default param serializer is exposed as a function\n     */\n    defaults.paramSerializer = isString(defaults.paramSerializer) ?\n      $injector.get(defaults.paramSerializer) : defaults.paramSerializer;\n\n    /**\n     * Interceptors stored in reverse order. Inner interceptors before outer interceptors.\n     * The reversal is needed so that we can build up the interception chain around the\n     * server request.\n     */\n    var reversedInterceptors = [];\n\n    forEach(interceptorFactories, function(interceptorFactory) {\n      reversedInterceptors.unshift(isString(interceptorFactory)\n          ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));\n    });\n\n    /**\n     * @ngdoc service\n     * @kind function\n     * @name $http\n     * @requires ng.$httpBackend\n     * @requires $cacheFactory\n     * @requires $rootScope\n     * @requires $q\n     * @requires $injector\n     *\n     * @description\n     * The `$http` service is a core Angular service that facilitates communication with the remote\n     * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)\n     * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).\n     *\n     * For unit testing applications that use `$http` service, see\n     * {@link ngMock.$httpBackend $httpBackend mock}.\n     *\n     * For a higher level of abstraction, please check out the {@link ngResource.$resource\n     * $resource} service.\n     *\n     * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by\n     * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage\n     * it is important to familiarize yourself with these APIs and the guarantees they provide.\n     *\n     *\n     * ## General usage\n     * The `$http` service is a function which takes a single argument — a {@link $http#usage configuration object} —\n     * that is used to generate an HTTP request and returns  a {@link ng.$q promise}.\n     *\n     * ```js\n     *   // Simple GET request example:\n     *   $http({\n     *     method: 'GET',\n     *     url: '/someUrl'\n     *   }).then(function successCallback(response) {\n     *       // this callback will be called asynchronously\n     *       // when the response is available\n     *     }, function errorCallback(response) {\n     *       // called asynchronously if an error occurs\n     *       // or server returns response with an error status.\n     *     });\n     * ```\n     *\n     * The response object has these properties:\n     *\n     *   - **data** – `{string|Object}` – The response body transformed with the transform\n     *     functions.\n     *   - **status** – `{number}` – HTTP status code of the response.\n     *   - **headers** – `{function([headerName])}` – Header getter function.\n     *   - **config** – `{Object}` – The configuration object that was used to generate the request.\n     *   - **statusText** – `{string}` – HTTP status text of the response.\n     *   - **xhrStatus** – `{string}` – Status of the XMLHttpRequest (`complete`, `error`, `timeout` or `abort`).\n     *\n     * A response status code between 200 and 299 is considered a success status and will result in\n     * the success callback being called. Any response status code outside of that range is\n     * considered an error status and will result in the error callback being called.\n     * Also, status codes less than -1 are normalized to zero. -1 usually means the request was\n     * aborted, e.g. using a `config.timeout`.\n     * Note that if the response is a redirect, XMLHttpRequest will transparently follow it, meaning\n     * that the outcome (success or error) will be determined by the final response status code.\n     *\n     *\n     * ## Shortcut methods\n     *\n     * Shortcut methods are also available. All shortcut methods require passing in the URL, and\n     * request data must be passed in for POST/PUT requests. An optional config can be passed as the\n     * last argument.\n     *\n     * ```js\n     *   $http.get('/someUrl', config).then(successCallback, errorCallback);\n     *   $http.post('/someUrl', data, config).then(successCallback, errorCallback);\n     * ```\n     *\n     * Complete list of shortcut methods:\n     *\n     * - {@link ng.$http#get $http.get}\n     * - {@link ng.$http#head $http.head}\n     * - {@link ng.$http#post $http.post}\n     * - {@link ng.$http#put $http.put}\n     * - {@link ng.$http#delete $http.delete}\n     * - {@link ng.$http#jsonp $http.jsonp}\n     * - {@link ng.$http#patch $http.patch}\n     *\n     *\n     * ## Writing Unit Tests that use $http\n     * When unit testing (using {@link ngMock ngMock}), it is necessary to call\n     * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending\n     * request using trained responses.\n     *\n     * ```\n     * $httpBackend.expectGET(...);\n     * $http.get(...);\n     * $httpBackend.flush();\n     * ```\n     *\n     * ## Setting HTTP Headers\n     *\n     * The $http service will automatically add certain HTTP headers to all requests. These defaults\n     * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration\n     * object, which currently contains this default configuration:\n     *\n     * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):\n     *   - <code>Accept: application/json, text/plain, \\*&#65279;/&#65279;\\*</code>\n     * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)\n     *   - `Content-Type: application/json`\n     * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)\n     *   - `Content-Type: application/json`\n     *\n     * To add or overwrite these defaults, simply add or remove a property from these configuration\n     * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object\n     * with the lowercased HTTP method name as the key, e.g.\n     * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`.\n     *\n     * The defaults can also be set at runtime via the `$http.defaults` object in the same\n     * fashion. For example:\n     *\n     * ```\n     * module.run(function($http) {\n     *   $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w';\n     * });\n     * ```\n     *\n     * In addition, you can supply a `headers` property in the config object passed when\n     * calling `$http(config)`, which overrides the defaults without changing them globally.\n     *\n     * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,\n     * Use the `headers` property, setting the desired header to `undefined`. For example:\n     *\n     * ```js\n     * var req = {\n     *  method: 'POST',\n     *  url: 'http://example.com',\n     *  headers: {\n     *    'Content-Type': undefined\n     *  },\n     *  data: { test: 'test' }\n     * }\n     *\n     * $http(req).then(function(){...}, function(){...});\n     * ```\n     *\n     * ## Transforming Requests and Responses\n     *\n     * Both requests and responses can be transformed using transformation functions: `transformRequest`\n     * and `transformResponse`. These properties can be a single function that returns\n     * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions,\n     * which allows you to `push` or `unshift` a new transformation function into the transformation chain.\n     *\n     * <div class=\"alert alert-warning\">\n     * **Note:** Angular does not make a copy of the `data` parameter before it is passed into the `transformRequest` pipeline.\n     * That means changes to the properties of `data` are not local to the transform function (since Javascript passes objects by reference).\n     * For example, when calling `$http.get(url, $scope.myObject)`, modifications to the object's properties in a transformRequest\n     * function will be reflected on the scope and in any templates where the object is data-bound.\n     * To prevent this, transform functions should have no side-effects.\n     * If you need to modify properties, it is recommended to make a copy of the data, or create new object to return.\n     * </div>\n     *\n     * ### Default Transformations\n     *\n     * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and\n     * `defaults.transformResponse` properties. If a request does not provide its own transformations\n     * then these will be applied.\n     *\n     * You can augment or replace the default transformations by modifying these properties by adding to or\n     * replacing the array.\n     *\n     * Angular provides the following default transformations:\n     *\n     * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`) is\n     * an array with one function that does the following:\n     *\n     * - If the `data` property of the request configuration object contains an object, serialize it\n     *   into JSON format.\n     *\n     * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`) is\n     * an array with one function that does the following:\n     *\n     *  - If XSRF prefix is detected, strip it (see Security Considerations section below).\n     *  - If the `Content-Type` is `application/json` or the response looks like JSON,\n   *      deserialize it using a JSON parser.\n     *\n     *\n     * ### Overriding the Default Transformations Per Request\n     *\n     * If you wish to override the request/response transformations only for a single request then provide\n     * `transformRequest` and/or `transformResponse` properties on the configuration object passed\n     * into `$http`.\n     *\n     * Note that if you provide these properties on the config object the default transformations will be\n     * overwritten. If you wish to augment the default transformations then you must include them in your\n     * local transformation array.\n     *\n     * The following code demonstrates adding a new response transformation to be run after the default response\n     * transformations have been run.\n     *\n     * ```js\n     * function appendTransform(defaults, transform) {\n     *\n     *   // We can't guarantee that the default transformation is an array\n     *   defaults = angular.isArray(defaults) ? defaults : [defaults];\n     *\n     *   // Append the new transformation to the defaults\n     *   return defaults.concat(transform);\n     * }\n     *\n     * $http({\n     *   url: '...',\n     *   method: 'GET',\n     *   transformResponse: appendTransform($http.defaults.transformResponse, function(value) {\n     *     return doTransform(value);\n     *   })\n     * });\n     * ```\n     *\n     *\n     * ## Caching\n     *\n     * {@link ng.$http `$http`} responses are not cached by default. To enable caching, you must\n     * set the config.cache value or the default cache value to TRUE or to a cache object (created\n     * with {@link ng.$cacheFactory `$cacheFactory`}). If defined, the value of config.cache takes\n     * precedence over the default cache value.\n     *\n     * In order to:\n     *   * cache all responses - set the default cache value to TRUE or to a cache object\n     *   * cache a specific response - set config.cache value to TRUE or to a cache object\n     *\n     * If caching is enabled, but neither the default cache nor config.cache are set to a cache object,\n     * then the default `$cacheFactory(\"$http\")` object is used.\n     *\n     * The default cache value can be set by updating the\n     * {@link ng.$http#defaults `$http.defaults.cache`} property or the\n     * {@link $httpProvider#defaults `$httpProvider.defaults.cache`} property.\n     *\n     * When caching is enabled, {@link ng.$http `$http`} stores the response from the server using\n     * the relevant cache object. The next time the same request is made, the response is returned\n     * from the cache without sending a request to the server.\n     *\n     * Take note that:\n     *\n     *   * Only GET and JSONP requests are cached.\n     *   * The cache key is the request URL including search parameters; headers are not considered.\n     *   * Cached responses are returned asynchronously, in the same way as responses from the server.\n     *   * If multiple identical requests are made using the same cache, which is not yet populated,\n     *     one request will be made to the server and remaining requests will return the same response.\n     *   * A cache-control header on the response does not affect if or how responses are cached.\n     *\n     *\n     * ## Interceptors\n     *\n     * Before you start creating interceptors, be sure to understand the\n     * {@link ng.$q $q and deferred/promise APIs}.\n     *\n     * For purposes of global error handling, authentication, or any kind of synchronous or\n     * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be\n     * able to intercept requests before they are handed to the server and\n     * responses before they are handed over to the application code that\n     * initiated these requests. The interceptors leverage the {@link ng.$q\n     * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.\n     *\n     * The interceptors are service factories that are registered with the `$httpProvider` by\n     * adding them to the `$httpProvider.interceptors` array. The factory is called and\n     * injected with dependencies (if specified) and returns the interceptor.\n     *\n     * There are two kinds of interceptors (and two kinds of rejection interceptors):\n     *\n     *   * `request`: interceptors get called with a http {@link $http#usage config} object. The function is free to\n     *     modify the `config` object or create a new one. The function needs to return the `config`\n     *     object directly, or a promise containing the `config` or a new `config` object.\n     *   * `requestError`: interceptor gets called when a previous interceptor threw an error or\n     *     resolved with a rejection.\n     *   * `response`: interceptors get called with http `response` object. The function is free to\n     *     modify the `response` object or create a new one. The function needs to return the `response`\n     *     object directly, or as a promise containing the `response` or a new `response` object.\n     *   * `responseError`: interceptor gets called when a previous interceptor threw an error or\n     *     resolved with a rejection.\n     *\n     *\n     * ```js\n     *   // register the interceptor as a service\n     *   $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {\n     *     return {\n     *       // optional method\n     *       'request': function(config) {\n     *         // do something on success\n     *         return config;\n     *       },\n     *\n     *       // optional method\n     *      'requestError': function(rejection) {\n     *         // do something on error\n     *         if (canRecover(rejection)) {\n     *           return responseOrNewPromise\n     *         }\n     *         return $q.reject(rejection);\n     *       },\n     *\n     *\n     *\n     *       // optional method\n     *       'response': function(response) {\n     *         // do something on success\n     *         return response;\n     *       },\n     *\n     *       // optional method\n     *      'responseError': function(rejection) {\n     *         // do something on error\n     *         if (canRecover(rejection)) {\n     *           return responseOrNewPromise\n     *         }\n     *         return $q.reject(rejection);\n     *       }\n     *     };\n     *   });\n     *\n     *   $httpProvider.interceptors.push('myHttpInterceptor');\n     *\n     *\n     *   // alternatively, register the interceptor via an anonymous factory\n     *   $httpProvider.interceptors.push(function($q, dependency1, dependency2) {\n     *     return {\n     *      'request': function(config) {\n     *          // same as above\n     *       },\n     *\n     *       'response': function(response) {\n     *          // same as above\n     *       }\n     *     };\n     *   });\n     * ```\n     *\n     * ## Security Considerations\n     *\n     * When designing web applications, consider security threats from:\n     *\n     * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n     * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)\n     *\n     * Both server and the client must cooperate in order to eliminate these threats. Angular comes\n     * pre-configured with strategies that address these issues, but for this to work backend server\n     * cooperation is required.\n     *\n     * ### JSON Vulnerability Protection\n     *\n     * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)\n     * allows third party website to turn your JSON resource URL into\n     * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To\n     * counter this your server can prefix all JSON requests with following string `\")]}',\\n\"`.\n     * Angular will automatically strip the prefix before processing it as JSON.\n     *\n     * For example if your server needs to return:\n     * ```js\n     * ['one','two']\n     * ```\n     *\n     * which is vulnerable to attack, your server can return:\n     * ```js\n     * )]}',\n     * ['one','two']\n     * ```\n     *\n     * Angular will strip the prefix, before processing the JSON.\n     *\n     *\n     * ### Cross Site Request Forgery (XSRF) Protection\n     *\n     * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is an attack technique by\n     * which the attacker can trick an authenticated user into unknowingly executing actions on your\n     * website. Angular provides a mechanism to counter XSRF. When performing XHR requests, the\n     * $http service reads a token from a cookie (by default, `XSRF-TOKEN`) and sets it as an HTTP\n     * header (`X-XSRF-TOKEN`). Since only JavaScript that runs on your domain could read the\n     * cookie, your server can be assured that the XHR came from JavaScript running on your domain.\n     * The header will not be set for cross-domain requests.\n     *\n     * To take advantage of this, your server needs to set a token in a JavaScript readable session\n     * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the\n     * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure\n     * that only JavaScript running on your domain could have sent the request. The token must be\n     * unique for each user and must be verifiable by the server (to prevent the JavaScript from\n     * making up its own tokens). We recommend that the token is a digest of your site's\n     * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography&#41;)\n     * for added security.\n     *\n     * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName\n     * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,\n     * or the per-request config object.\n     *\n     * In order to prevent collisions in environments where multiple Angular apps share the\n     * same domain or subdomain, we recommend that each application uses unique cookie name.\n     *\n     * @param {object} config Object describing the request to be made and how it should be\n     *    processed. The object has following properties:\n     *\n     *    - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)\n     *    - **url** – `{string|TrustedObject}` – Absolute or relative URL of the resource that is being requested;\n     *      or an object created by a call to `$sce.trustAsResourceUrl(url)`.\n     *    - **params** – `{Object.<string|Object>}` – Map of strings or objects which will be serialized\n     *      with the `paramSerializer` and appended as GET parameters.\n     *    - **data** – `{string|Object}` – Data to be sent as the request message data.\n     *    - **headers** – `{Object}` – Map of strings or functions which return strings representing\n     *      HTTP headers to send to the server. If the return value of a function is null, the\n     *      header will not be sent. Functions accept a config object as an argument.\n     *    - **eventHandlers** - `{Object}` - Event listeners to be bound to the XMLHttpRequest object.\n     *      To bind events to the XMLHttpRequest upload object, use `uploadEventHandlers`.\n     *      The handler will be called in the context of a `$apply` block.\n     *    - **uploadEventHandlers** - `{Object}` - Event listeners to be bound to the XMLHttpRequest upload\n     *      object. To bind events to the XMLHttpRequest object, use `eventHandlers`.\n     *      The handler will be called in the context of a `$apply` block.\n     *    - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.\n     *    - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.\n     *    - **transformRequest** –\n     *      `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –\n     *      transform function or an array of such functions. The transform function takes the http\n     *      request body and headers and returns its transformed (typically serialized) version.\n     *      See {@link ng.$http#overriding-the-default-transformations-per-request\n     *      Overriding the Default Transformations}\n     *    - **transformResponse** –\n     *      `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –\n     *      transform function or an array of such functions. The transform function takes the http\n     *      response body, headers and status and returns its transformed (typically deserialized) version.\n     *      See {@link ng.$http#overriding-the-default-transformations-per-request\n     *      Overriding the Default Transformations}\n     *    - **paramSerializer** - `{string|function(Object<string,string>):string}` - A function used to\n     *      prepare the string representation of request parameters (specified as an object).\n     *      If specified as string, it is interpreted as function registered with the\n     *      {@link $injector $injector}, which means you can create your own serializer\n     *      by registering it as a {@link auto.$provide#service service}.\n     *      The default serializer is the {@link $httpParamSerializer $httpParamSerializer};\n     *      alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike}\n     *    - **cache** – `{boolean|Object}` – A boolean value or object created with\n     *      {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of the HTTP response.\n     *      See {@link $http#caching $http Caching} for more information.\n     *    - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}\n     *      that should abort the request when resolved.\n     *    - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the\n     *      XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)\n     *      for more information.\n     *    - **responseType** - `{string}` - see\n     *      [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype).\n     *\n     * @returns {HttpPromise} Returns a {@link ng.$q `Promise}` that will be resolved to a response object\n     *                        when the request succeeds or fails.\n     *\n     *\n     * @property {Array.<Object>} pendingRequests Array of config objects for currently pending\n     *   requests. This is primarily meant to be used for debugging purposes.\n     *\n     *\n     * @example\n<example module=\"httpExample\" name=\"http-service\">\n<file name=\"index.html\">\n  <div ng-controller=\"FetchController\">\n    <select ng-model=\"method\" aria-label=\"Request method\">\n      <option>GET</option>\n      <option>JSONP</option>\n    </select>\n    <input type=\"text\" ng-model=\"url\" size=\"80\" aria-label=\"URL\" />\n    <button id=\"fetchbtn\" ng-click=\"fetch()\">fetch</button><br>\n    <button id=\"samplegetbtn\" ng-click=\"updateModel('GET', 'http-hello.html')\">Sample GET</button>\n    <button id=\"samplejsonpbtn\"\n      ng-click=\"updateModel('JSONP',\n                    'https://angularjs.org/greet.php?name=Super%20Hero')\">\n      Sample JSONP\n    </button>\n    <button id=\"invalidjsonpbtn\"\n      ng-click=\"updateModel('JSONP', 'https://angularjs.org/doesntexist')\">\n        Invalid JSONP\n      </button>\n    <pre>http status code: {{status}}</pre>\n    <pre>http response data: {{data}}</pre>\n  </div>\n</file>\n<file name=\"script.js\">\n  angular.module('httpExample', [])\n    .config(['$sceDelegateProvider', function($sceDelegateProvider) {\n      // We must whitelist the JSONP endpoint that we are using to show that we trust it\n      $sceDelegateProvider.resourceUrlWhitelist([\n        'self',\n        'https://angularjs.org/**'\n      ]);\n    }])\n    .controller('FetchController', ['$scope', '$http', '$templateCache',\n      function($scope, $http, $templateCache) {\n        $scope.method = 'GET';\n        $scope.url = 'http-hello.html';\n\n        $scope.fetch = function() {\n          $scope.code = null;\n          $scope.response = null;\n\n          $http({method: $scope.method, url: $scope.url, cache: $templateCache}).\n            then(function(response) {\n              $scope.status = response.status;\n              $scope.data = response.data;\n            }, function(response) {\n              $scope.data = response.data || 'Request failed';\n              $scope.status = response.status;\n          });\n        };\n\n        $scope.updateModel = function(method, url) {\n          $scope.method = method;\n          $scope.url = url;\n        };\n      }]);\n</file>\n<file name=\"http-hello.html\">\n  Hello, $http!\n</file>\n<file name=\"protractor.js\" type=\"protractor\">\n  var status = element(by.binding('status'));\n  var data = element(by.binding('data'));\n  var fetchBtn = element(by.id('fetchbtn'));\n  var sampleGetBtn = element(by.id('samplegetbtn'));\n  var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));\n\n  it('should make an xhr GET request', function() {\n    sampleGetBtn.click();\n    fetchBtn.click();\n    expect(status.getText()).toMatch('200');\n    expect(data.getText()).toMatch(/Hello, \\$http!/);\n  });\n\n// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185\n// it('should make a JSONP request to angularjs.org', function() {\n//   var sampleJsonpBtn = element(by.id('samplejsonpbtn'));\n//   sampleJsonpBtn.click();\n//   fetchBtn.click();\n//   expect(status.getText()).toMatch('200');\n//   expect(data.getText()).toMatch(/Super Hero!/);\n// });\n\n  it('should make JSONP request to invalid URL and invoke the error handler',\n      function() {\n    invalidJsonpBtn.click();\n    fetchBtn.click();\n    expect(status.getText()).toMatch('0');\n    expect(data.getText()).toMatch('Request failed');\n  });\n</file>\n</example>\n     */\n    function $http(requestConfig) {\n\n      if (!isObject(requestConfig)) {\n        throw minErr('$http')('badreq', 'Http request configuration must be an object.  Received: {0}', requestConfig);\n      }\n\n      if (!isString($sce.valueOf(requestConfig.url))) {\n        throw minErr('$http')('badreq', 'Http request configuration url must be a string or a $sce trusted object.  Received: {0}', requestConfig.url);\n      }\n\n      var config = extend({\n        method: 'get',\n        transformRequest: defaults.transformRequest,\n        transformResponse: defaults.transformResponse,\n        paramSerializer: defaults.paramSerializer,\n        jsonpCallbackParam: defaults.jsonpCallbackParam\n      }, requestConfig);\n\n      config.headers = mergeHeaders(requestConfig);\n      config.method = uppercase(config.method);\n      config.paramSerializer = isString(config.paramSerializer) ?\n          $injector.get(config.paramSerializer) : config.paramSerializer;\n\n      $browser.$$incOutstandingRequestCount();\n\n      var requestInterceptors = [];\n      var responseInterceptors = [];\n      var promise = $q.resolve(config);\n\n      // apply interceptors\n      forEach(reversedInterceptors, function(interceptor) {\n        if (interceptor.request || interceptor.requestError) {\n          requestInterceptors.unshift(interceptor.request, interceptor.requestError);\n        }\n        if (interceptor.response || interceptor.responseError) {\n          responseInterceptors.push(interceptor.response, interceptor.responseError);\n        }\n      });\n\n      promise = chainInterceptors(promise, requestInterceptors);\n      promise = promise.then(serverRequest);\n      promise = chainInterceptors(promise, responseInterceptors);\n      promise = promise.finally(completeOutstandingRequest);\n\n      return promise;\n\n\n      function chainInterceptors(promise, interceptors) {\n        for (var i = 0, ii = interceptors.length; i < ii;) {\n          var thenFn = interceptors[i++];\n          var rejectFn = interceptors[i++];\n\n          promise = promise.then(thenFn, rejectFn);\n        }\n\n        interceptors.length = 0;\n\n        return promise;\n      }\n\n      function completeOutstandingRequest() {\n        $browser.$$completeOutstandingRequest(noop);\n      }\n\n      function executeHeaderFns(headers, config) {\n        var headerContent, processedHeaders = {};\n\n        forEach(headers, function(headerFn, header) {\n          if (isFunction(headerFn)) {\n            headerContent = headerFn(config);\n            if (headerContent != null) {\n              processedHeaders[header] = headerContent;\n            }\n          } else {\n            processedHeaders[header] = headerFn;\n          }\n        });\n\n        return processedHeaders;\n      }\n\n      function mergeHeaders(config) {\n        var defHeaders = defaults.headers,\n            reqHeaders = extend({}, config.headers),\n            defHeaderName, lowercaseDefHeaderName, reqHeaderName;\n\n        defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);\n\n        // using for-in instead of forEach to avoid unnecessary iteration after header has been found\n        defaultHeadersIteration:\n        for (defHeaderName in defHeaders) {\n          lowercaseDefHeaderName = lowercase(defHeaderName);\n\n          for (reqHeaderName in reqHeaders) {\n            if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {\n              continue defaultHeadersIteration;\n            }\n          }\n\n          reqHeaders[defHeaderName] = defHeaders[defHeaderName];\n        }\n\n        // execute if header value is a function for merged headers\n        return executeHeaderFns(reqHeaders, shallowCopy(config));\n      }\n\n      function serverRequest(config) {\n        var headers = config.headers;\n        var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest);\n\n        // strip content-type if data is undefined\n        if (isUndefined(reqData)) {\n          forEach(headers, function(value, header) {\n            if (lowercase(header) === 'content-type') {\n              delete headers[header];\n            }\n          });\n        }\n\n        if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {\n          config.withCredentials = defaults.withCredentials;\n        }\n\n        // send request\n        return sendReq(config, reqData).then(transformResponse, transformResponse);\n      }\n\n      function transformResponse(response) {\n        // make a copy since the response must be cacheable\n        var resp = extend({}, response);\n        resp.data = transformData(response.data, response.headers, response.status,\n                                  config.transformResponse);\n        return (isSuccess(response.status))\n          ? resp\n          : $q.reject(resp);\n      }\n    }\n\n    $http.pendingRequests = [];\n\n    /**\n     * @ngdoc method\n     * @name $http#get\n     *\n     * @description\n     * Shortcut method to perform `GET` request.\n     *\n     * @param {string|TrustedObject} url Absolute or relative URL of the resource that is being requested;\n     *                                   or an object created by a call to `$sce.trustAsResourceUrl(url)`.\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n\n    /**\n     * @ngdoc method\n     * @name $http#delete\n     *\n     * @description\n     * Shortcut method to perform `DELETE` request.\n     *\n     * @param {string|TrustedObject} url Absolute or relative URL of the resource that is being requested;\n     *                                   or an object created by a call to `$sce.trustAsResourceUrl(url)`.\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n\n    /**\n     * @ngdoc method\n     * @name $http#head\n     *\n     * @description\n     * Shortcut method to perform `HEAD` request.\n     *\n     * @param {string|TrustedObject} url Absolute or relative URL of the resource that is being requested;\n     *                                   or an object created by a call to `$sce.trustAsResourceUrl(url)`.\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n\n    /**\n     * @ngdoc method\n     * @name $http#jsonp\n     *\n     * @description\n     * Shortcut method to perform `JSONP` request.\n     *\n     * Note that, since JSONP requests are sensitive because the response is given full access to the browser,\n     * the url must be declared, via {@link $sce} as a trusted resource URL.\n     * You can trust a URL by adding it to the whitelist via\n     * {@link $sceDelegateProvider#resourceUrlWhitelist  `$sceDelegateProvider.resourceUrlWhitelist`} or\n     * by explicitly trusting the URL via {@link $sce#trustAsResourceUrl `$sce.trustAsResourceUrl(url)`}.\n     *\n     * JSONP requests must specify a callback to be used in the response from the server. This callback\n     * is passed as a query parameter in the request. You must specify the name of this parameter by\n     * setting the `jsonpCallbackParam` property on the request config object.\n     *\n     * ```\n     * $http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})\n     * ```\n     *\n     * You can also specify a default callback parameter name in `$http.defaults.jsonpCallbackParam`.\n     * Initially this is set to `'callback'`.\n     *\n     * <div class=\"alert alert-danger\">\n     * You can no longer use the `JSON_CALLBACK` string as a placeholder for specifying where the callback\n     * parameter value should go.\n     * </div>\n     *\n     * If you would like to customise where and how the callbacks are stored then try overriding\n     * or decorating the {@link $jsonpCallbacks} service.\n     *\n     * @param {string|TrustedObject} url Absolute or relative URL of the resource that is being requested;\n     *                                   or an object created by a call to `$sce.trustAsResourceUrl(url)`.\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n    createShortMethods('get', 'delete', 'head', 'jsonp');\n\n    /**\n     * @ngdoc method\n     * @name $http#post\n     *\n     * @description\n     * Shortcut method to perform `POST` request.\n     *\n     * @param {string} url Relative or absolute URL specifying the destination of the request\n     * @param {*} data Request content\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n\n    /**\n     * @ngdoc method\n     * @name $http#put\n     *\n     * @description\n     * Shortcut method to perform `PUT` request.\n     *\n     * @param {string} url Relative or absolute URL specifying the destination of the request\n     * @param {*} data Request content\n     * @param {Object=} config Optional configuration object\n     * @returns {HttpPromise} Future object\n     */\n\n     /**\n      * @ngdoc method\n      * @name $http#patch\n      *\n      * @description\n      * Shortcut method to perform `PATCH` request.\n      *\n      * @param {string} url Relative or absolute URL specifying the destination of the request\n      * @param {*} data Request content\n      * @param {Object=} config Optional configuration object\n      * @returns {HttpPromise} Future object\n      */\n    createShortMethodsWithData('post', 'put', 'patch');\n\n        /**\n         * @ngdoc property\n         * @name $http#defaults\n         *\n         * @description\n         * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of\n         * default headers, withCredentials as well as request and response transformations.\n         *\n         * See \"Setting HTTP Headers\" and \"Transforming Requests and Responses\" sections above.\n         */\n    $http.defaults = defaults;\n\n\n    return $http;\n\n\n    function createShortMethods(names) {\n      forEach(arguments, function(name) {\n        $http[name] = function(url, config) {\n          return $http(extend({}, config || {}, {\n            method: name,\n            url: url\n          }));\n        };\n      });\n    }\n\n\n    function createShortMethodsWithData(name) {\n      forEach(arguments, function(name) {\n        $http[name] = function(url, data, config) {\n          return $http(extend({}, config || {}, {\n            method: name,\n            url: url,\n            data: data\n          }));\n        };\n      });\n    }\n\n\n    /**\n     * Makes the request.\n     *\n     * !!! ACCESSES CLOSURE VARS:\n     * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests\n     */\n    function sendReq(config, reqData) {\n      var deferred = $q.defer(),\n          promise = deferred.promise,\n          cache,\n          cachedResp,\n          reqHeaders = config.headers,\n          isJsonp = lowercase(config.method) === 'jsonp',\n          url = config.url;\n\n      if (isJsonp) {\n        // JSONP is a pretty sensitive operation where we're allowing a script to have full access to\n        // our DOM and JS space.  So we require that the URL satisfies SCE.RESOURCE_URL.\n        url = $sce.getTrustedResourceUrl(url);\n      } else if (!isString(url)) {\n        // If it is not a string then the URL must be a $sce trusted object\n        url = $sce.valueOf(url);\n      }\n\n      url = buildUrl(url, config.paramSerializer(config.params));\n\n      if (isJsonp) {\n        // Check the url and add the JSONP callback placeholder\n        url = sanitizeJsonpCallbackParam(url, config.jsonpCallbackParam);\n      }\n\n      $http.pendingRequests.push(config);\n      promise.then(removePendingReq, removePendingReq);\n\n      if ((config.cache || defaults.cache) && config.cache !== false &&\n          (config.method === 'GET' || config.method === 'JSONP')) {\n        cache = isObject(config.cache) ? config.cache\n            : isObject(/** @type {?} */ (defaults).cache)\n              ? /** @type {?} */ (defaults).cache\n              : defaultCache;\n      }\n\n      if (cache) {\n        cachedResp = cache.get(url);\n        if (isDefined(cachedResp)) {\n          if (isPromiseLike(cachedResp)) {\n            // cached request has already been sent, but there is no response yet\n            cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);\n          } else {\n            // serving from cache\n            if (isArray(cachedResp)) {\n              resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3], cachedResp[4]);\n            } else {\n              resolvePromise(cachedResp, 200, {}, 'OK', 'complete');\n            }\n          }\n        } else {\n          // put the promise for the non-transformed response into cache as a placeholder\n          cache.put(url, promise);\n        }\n      }\n\n\n      // if we won't have the response in cache, set the xsrf headers and\n      // send the request to the backend\n      if (isUndefined(cachedResp)) {\n        var xsrfValue = urlIsSameOrigin(config.url)\n            ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName]\n            : undefined;\n        if (xsrfValue) {\n          reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;\n        }\n\n        $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,\n            config.withCredentials, config.responseType,\n            createApplyHandlers(config.eventHandlers),\n            createApplyHandlers(config.uploadEventHandlers));\n      }\n\n      return promise;\n\n      function createApplyHandlers(eventHandlers) {\n        if (eventHandlers) {\n          var applyHandlers = {};\n          forEach(eventHandlers, function(eventHandler, key) {\n            applyHandlers[key] = function(event) {\n              if (useApplyAsync) {\n                $rootScope.$applyAsync(callEventHandler);\n              } else if ($rootScope.$$phase) {\n                callEventHandler();\n              } else {\n                $rootScope.$apply(callEventHandler);\n              }\n\n              function callEventHandler() {\n                eventHandler(event);\n              }\n            };\n          });\n          return applyHandlers;\n        }\n      }\n\n\n      /**\n       * Callback registered to $httpBackend():\n       *  - caches the response if desired\n       *  - resolves the raw $http promise\n       *  - calls $apply\n       */\n      function done(status, response, headersString, statusText, xhrStatus) {\n        if (cache) {\n          if (isSuccess(status)) {\n            cache.put(url, [status, response, parseHeaders(headersString), statusText, xhrStatus]);\n          } else {\n            // remove promise from the cache\n            cache.remove(url);\n          }\n        }\n\n        function resolveHttpPromise() {\n          resolvePromise(response, status, headersString, statusText, xhrStatus);\n        }\n\n        if (useApplyAsync) {\n          $rootScope.$applyAsync(resolveHttpPromise);\n        } else {\n          resolveHttpPromise();\n          if (!$rootScope.$$phase) $rootScope.$apply();\n        }\n      }\n\n\n      /**\n       * Resolves the raw $http promise.\n       */\n      function resolvePromise(response, status, headers, statusText, xhrStatus) {\n        //status: HTTP response status code, 0, -1 (aborted by timeout / promise)\n        status = status >= -1 ? status : 0;\n\n        (isSuccess(status) ? deferred.resolve : deferred.reject)({\n          data: response,\n          status: status,\n          headers: headersGetter(headers),\n          config: config,\n          statusText: statusText,\n          xhrStatus: xhrStatus\n        });\n      }\n\n      function resolvePromiseWithResult(result) {\n        resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText, result.xhrStatus);\n      }\n\n      function removePendingReq() {\n        var idx = $http.pendingRequests.indexOf(config);\n        if (idx !== -1) $http.pendingRequests.splice(idx, 1);\n      }\n    }\n\n\n    function buildUrl(url, serializedParams) {\n      if (serializedParams.length > 0) {\n        url += ((url.indexOf('?') === -1) ? '?' : '&') + serializedParams;\n      }\n      return url;\n    }\n\n    function sanitizeJsonpCallbackParam(url, key) {\n      if (/[&?][^=]+=JSON_CALLBACK/.test(url)) {\n        // Throw if the url already contains a reference to JSON_CALLBACK\n        throw $httpMinErr('badjsonp', 'Illegal use of JSON_CALLBACK in url, \"{0}\"', url);\n      }\n\n      var callbackParamRegex = new RegExp('[&?]' + key + '=');\n      if (callbackParamRegex.test(url)) {\n        // Throw if the callback param was already provided\n        throw $httpMinErr('badjsonp', 'Illegal use of callback param, \"{0}\", in url, \"{1}\"', key, url);\n      }\n\n      // Add in the JSON_CALLBACK callback param value\n      url += ((url.indexOf('?') === -1) ? '?' : '&') + key + '=JSON_CALLBACK';\n\n      return url;\n    }\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $xhrFactory\n * @this\n *\n * @description\n * Factory function used to create XMLHttpRequest objects.\n *\n * Replace or decorate this service to create your own custom XMLHttpRequest objects.\n *\n * ```\n * angular.module('myApp', [])\n * .factory('$xhrFactory', function() {\n *   return function createXhr(method, url) {\n *     return new window.XMLHttpRequest({mozSystem: true});\n *   };\n * });\n * ```\n *\n * @param {string} method HTTP method of the request (GET, POST, PUT, ..)\n * @param {string} url URL of the request.\n */\nfunction $xhrFactoryProvider() {\n  this.$get = function() {\n    return function createXhr() {\n      return new window.XMLHttpRequest();\n    };\n  };\n}\n\n/**\n * @ngdoc service\n * @name $httpBackend\n * @requires $jsonpCallbacks\n * @requires $document\n * @requires $xhrFactory\n * @this\n *\n * @description\n * HTTP backend used by the {@link ng.$http service} that delegates to\n * XMLHttpRequest object or JSONP and deals with browser incompatibilities.\n *\n * You should never need to use this service directly, instead use the higher-level abstractions:\n * {@link ng.$http $http} or {@link ngResource.$resource $resource}.\n *\n * During testing this implementation is swapped with {@link ngMock.$httpBackend mock\n * $httpBackend} which can be trained with responses.\n */\nfunction $HttpBackendProvider() {\n  this.$get = ['$browser', '$jsonpCallbacks', '$document', '$xhrFactory', function($browser, $jsonpCallbacks, $document, $xhrFactory) {\n    return createHttpBackend($browser, $xhrFactory, $browser.defer, $jsonpCallbacks, $document[0]);\n  }];\n}\n\nfunction createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {\n  // TODO(vojta): fix the signature\n  return function(method, url, post, callback, headers, timeout, withCredentials, responseType, eventHandlers, uploadEventHandlers) {\n    url = url || $browser.url();\n\n    if (lowercase(method) === 'jsonp') {\n      var callbackPath = callbacks.createCallback(url);\n      var jsonpDone = jsonpReq(url, callbackPath, function(status, text) {\n        // jsonpReq only ever sets status to 200 (OK), 404 (ERROR) or -1 (WAITING)\n        var response = (status === 200) && callbacks.getResponse(callbackPath);\n        completeRequest(callback, status, response, '', text, 'complete');\n        callbacks.removeCallback(callbackPath);\n      });\n    } else {\n\n      var xhr = createXhr(method, url);\n\n      xhr.open(method, url, true);\n      forEach(headers, function(value, key) {\n        if (isDefined(value)) {\n            xhr.setRequestHeader(key, value);\n        }\n      });\n\n      xhr.onload = function requestLoaded() {\n        var statusText = xhr.statusText || '';\n\n        // responseText is the old-school way of retrieving response (supported by IE9)\n        // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\n        var response = ('response' in xhr) ? xhr.response : xhr.responseText;\n\n        // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n        var status = xhr.status === 1223 ? 204 : xhr.status;\n\n        // fix status code when it is 0 (0 status is undocumented).\n        // Occurs when accessing file resources or on Android 4.1 stock browser\n        // while retrieving files from application cache.\n        if (status === 0) {\n          status = response ? 200 : urlResolve(url).protocol === 'file' ? 404 : 0;\n        }\n\n        completeRequest(callback,\n            status,\n            response,\n            xhr.getAllResponseHeaders(),\n            statusText,\n            'complete');\n      };\n\n      var requestError = function() {\n        // The response is always empty\n        // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error\n        completeRequest(callback, -1, null, null, '', 'error');\n      };\n\n      var requestAborted = function() {\n        completeRequest(callback, -1, null, null, '', 'abort');\n      };\n\n      var requestTimeout = function() {\n        // The response is always empty\n        // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error\n        completeRequest(callback, -1, null, null, '', 'timeout');\n      };\n\n      xhr.onerror = requestError;\n      xhr.onabort = requestAborted;\n      xhr.ontimeout = requestTimeout;\n\n      forEach(eventHandlers, function(value, key) {\n          xhr.addEventListener(key, value);\n      });\n\n      forEach(uploadEventHandlers, function(value, key) {\n        xhr.upload.addEventListener(key, value);\n      });\n\n      if (withCredentials) {\n        xhr.withCredentials = true;\n      }\n\n      if (responseType) {\n        try {\n          xhr.responseType = responseType;\n        } catch (e) {\n          // WebKit added support for the json responseType value on 09/03/2013\n          // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are\n          // known to throw when setting the value \"json\" as the response type. Other older\n          // browsers implementing the responseType\n          //\n          // The json response type can be ignored if not supported, because JSON payloads are\n          // parsed on the client-side regardless.\n          if (responseType !== 'json') {\n            throw e;\n          }\n        }\n      }\n\n      xhr.send(isUndefined(post) ? null : post);\n    }\n\n    if (timeout > 0) {\n      var timeoutId = $browserDefer(timeoutRequest, timeout);\n    } else if (isPromiseLike(timeout)) {\n      timeout.then(timeoutRequest);\n    }\n\n\n    function timeoutRequest() {\n      if (jsonpDone) {\n        jsonpDone();\n      }\n      if (xhr) {\n        xhr.abort();\n      }\n    }\n\n    function completeRequest(callback, status, response, headersString, statusText, xhrStatus) {\n      // cancel timeout and subsequent timeout promise resolution\n      if (isDefined(timeoutId)) {\n        $browserDefer.cancel(timeoutId);\n      }\n      jsonpDone = xhr = null;\n\n      callback(status, response, headersString, statusText, xhrStatus);\n    }\n  };\n\n  function jsonpReq(url, callbackPath, done) {\n    url = url.replace('JSON_CALLBACK', callbackPath);\n    // we can't use jQuery/jqLite here because jQuery does crazy stuff with script elements, e.g.:\n    // - fetches local scripts via XHR and evals them\n    // - adds and immediately removes script elements from the document\n    var script = rawDocument.createElement('script'), callback = null;\n    script.type = 'text/javascript';\n    script.src = url;\n    script.async = true;\n\n    callback = function(event) {\n      script.removeEventListener('load', callback);\n      script.removeEventListener('error', callback);\n      rawDocument.body.removeChild(script);\n      script = null;\n      var status = -1;\n      var text = 'unknown';\n\n      if (event) {\n        if (event.type === 'load' && !callbacks.wasCalled(callbackPath)) {\n          event = { type: 'error' };\n        }\n        text = event.type;\n        status = event.type === 'error' ? 404 : 200;\n      }\n\n      if (done) {\n        done(status, text);\n      }\n    };\n\n    script.addEventListener('load', callback);\n    script.addEventListener('error', callback);\n    rawDocument.body.appendChild(script);\n    return callback;\n  }\n}\n\nvar $interpolateMinErr = angular.$interpolateMinErr = minErr('$interpolate');\n$interpolateMinErr.throwNoconcat = function(text) {\n  throw $interpolateMinErr('noconcat',\n      'Error while interpolating: {0}\\nStrict Contextual Escaping disallows ' +\n      'interpolations that concatenate multiple expressions when a trusted value is ' +\n      'required.  See http://docs.angularjs.org/api/ng.$sce', text);\n};\n\n$interpolateMinErr.interr = function(text, err) {\n  return $interpolateMinErr('interr', 'Can\\'t interpolate: {0}\\n{1}', text, err.toString());\n};\n\n/**\n * @ngdoc provider\n * @name $interpolateProvider\n * @this\n *\n * @description\n *\n * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.\n *\n * <div class=\"alert alert-danger\">\n * This feature is sometimes used to mix different markup languages, e.g. to wrap an Angular\n * template within a Python Jinja template (or any other template language). Mixing templating\n * languages is **very dangerous**. The embedding template language will not safely escape Angular\n * expressions, so any user-controlled values in the template will cause Cross Site Scripting (XSS)\n * security bugs!\n * </div>\n *\n * @example\n<example name=\"custom-interpolation-markup\" module=\"customInterpolationApp\">\n<file name=\"index.html\">\n<script>\n  var customInterpolationApp = angular.module('customInterpolationApp', []);\n\n  customInterpolationApp.config(function($interpolateProvider) {\n    $interpolateProvider.startSymbol('//');\n    $interpolateProvider.endSymbol('//');\n  });\n\n\n  customInterpolationApp.controller('DemoController', function() {\n      this.label = \"This binding is brought you by // interpolation symbols.\";\n  });\n</script>\n<div ng-controller=\"DemoController as demo\">\n    //demo.label//\n</div>\n</file>\n<file name=\"protractor.js\" type=\"protractor\">\n  it('should interpolate binding with custom symbols', function() {\n    expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');\n  });\n</file>\n</example>\n */\nfunction $InterpolateProvider() {\n  var startSymbol = '{{';\n  var endSymbol = '}}';\n\n  /**\n   * @ngdoc method\n   * @name $interpolateProvider#startSymbol\n   * @description\n   * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.\n   *\n   * @param {string=} value new value to set the starting symbol to.\n   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n   */\n  this.startSymbol = function(value) {\n    if (value) {\n      startSymbol = value;\n      return this;\n    } else {\n      return startSymbol;\n    }\n  };\n\n  /**\n   * @ngdoc method\n   * @name $interpolateProvider#endSymbol\n   * @description\n   * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.\n   *\n   * @param {string=} value new value to set the ending symbol to.\n   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.\n   */\n  this.endSymbol = function(value) {\n    if (value) {\n      endSymbol = value;\n      return this;\n    } else {\n      return endSymbol;\n    }\n  };\n\n\n  this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {\n    var startSymbolLength = startSymbol.length,\n        endSymbolLength = endSymbol.length,\n        escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'),\n        escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g');\n\n    function escape(ch) {\n      return '\\\\\\\\\\\\' + ch;\n    }\n\n    function unescapeText(text) {\n      return text.replace(escapedStartRegexp, startSymbol).\n        replace(escapedEndRegexp, endSymbol);\n    }\n\n    // TODO: this is the same as the constantWatchDelegate in parse.js\n    function constantWatchDelegate(scope, listener, objectEquality, constantInterp) {\n      var unwatch = scope.$watch(function constantInterpolateWatch(scope) {\n        unwatch();\n        return constantInterp(scope);\n      }, listener, objectEquality);\n      return unwatch;\n    }\n\n    /**\n     * @ngdoc service\n     * @name $interpolate\n     * @kind function\n     *\n     * @requires $parse\n     * @requires $sce\n     *\n     * @description\n     *\n     * Compiles a string with markup into an interpolation function. This service is used by the\n     * HTML {@link ng.$compile $compile} service for data binding. See\n     * {@link ng.$interpolateProvider $interpolateProvider} for configuring the\n     * interpolation markup.\n     *\n     *\n     * ```js\n     *   var $interpolate = ...; // injected\n     *   var exp = $interpolate('Hello {{name | uppercase}}!');\n     *   expect(exp({name:'Angular'})).toEqual('Hello ANGULAR!');\n     * ```\n     *\n     * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is\n     * `true`, the interpolation function will return `undefined` unless all embedded expressions\n     * evaluate to a value other than `undefined`.\n     *\n     * ```js\n     *   var $interpolate = ...; // injected\n     *   var context = {greeting: 'Hello', name: undefined };\n     *\n     *   // default \"forgiving\" mode\n     *   var exp = $interpolate('{{greeting}} {{name}}!');\n     *   expect(exp(context)).toEqual('Hello !');\n     *\n     *   // \"allOrNothing\" mode\n     *   exp = $interpolate('{{greeting}} {{name}}!', false, null, true);\n     *   expect(exp(context)).toBeUndefined();\n     *   context.name = 'Angular';\n     *   expect(exp(context)).toEqual('Hello Angular!');\n     * ```\n     *\n     * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior.\n     *\n     * #### Escaped Interpolation\n     * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers\n     * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash).\n     * It will be rendered as a regular start/end marker, and will not be interpreted as an expression\n     * or binding.\n     *\n     * This enables web-servers to prevent script injection attacks and defacing attacks, to some\n     * degree, while also enabling code examples to work without relying on the\n     * {@link ng.directive:ngNonBindable ngNonBindable} directive.\n     *\n     * **For security purposes, it is strongly encouraged that web servers escape user-supplied data,\n     * replacing angle brackets (&lt;, &gt;) with &amp;lt; and &amp;gt; respectively, and replacing all\n     * interpolation start/end markers with their escaped counterparts.**\n     *\n     * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered\n     * output when the $interpolate service processes the text. So, for HTML elements interpolated\n     * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter\n     * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such,\n     * this is typically useful only when user-data is used in rendering a template from the server, or\n     * when otherwise untrusted data is used by a directive.\n     *\n     * <example name=\"interpolation\">\n     *  <file name=\"index.html\">\n     *    <div ng-init=\"username='A user'\">\n     *      <p ng-init=\"apptitle='Escaping demo'\">{{apptitle}}: \\{\\{ username = \"defaced value\"; \\}\\}\n     *        </p>\n     *      <p><strong>{{username}}</strong> attempts to inject code which will deface the\n     *        application, but fails to accomplish their task, because the server has correctly\n     *        escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash)\n     *        characters.</p>\n     *      <p>Instead, the result of the attempted script injection is visible, and can be removed\n     *        from the database by an administrator.</p>\n     *    </div>\n     *  </file>\n     * </example>\n     *\n     * @knownIssue\n     * It is currently not possible for an interpolated expression to contain the interpolation end\n     * symbol. For example, `{{ '}}' }}` will be incorrectly interpreted as `{{ ' }}` + `' }}`, i.e.\n     * an interpolated expression consisting of a single-quote (`'`) and the `' }}` string.\n     *\n     * @knownIssue\n     * All directives and components must use the standard `{{` `}}` interpolation symbols\n     * in their templates. If you change the application interpolation symbols the {@link $compile}\n     * service will attempt to denormalize the standard symbols to the custom symbols.\n     * The denormalization process is not clever enough to know not to replace instances of the standard\n     * symbols where they would not normally be treated as interpolation symbols. For example in the following\n     * code snippet the closing braces of the literal object will get incorrectly denormalized:\n     *\n     * ```\n     * <div data-context='{\"context\":{\"id\":3,\"type\":\"page\"}}\">\n     * ```\n     *\n     * The workaround is to ensure that such instances are separated by whitespace:\n     * ```\n     * <div data-context='{\"context\":{\"id\":3,\"type\":\"page\"} }\">\n     * ```\n     *\n     * See https://github.com/angular/angular.js/pull/14610#issuecomment-219401099 for more information.\n     *\n     * @param {string} text The text with markup to interpolate.\n     * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have\n     *    embedded expression in order to return an interpolation function. Strings with no\n     *    embedded expression will return null for the interpolation function.\n     * @param {string=} trustedContext when provided, the returned function passes the interpolated\n     *    result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,\n     *    trustedContext)} before returning it.  Refer to the {@link ng.$sce $sce} service that\n     *    provides Strict Contextual Escaping for details.\n     * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined\n     *    unless all embedded expressions evaluate to a value other than `undefined`.\n     * @returns {function(context)} an interpolation function which is used to compute the\n     *    interpolated string. The function has these parameters:\n     *\n     * - `context`: evaluation context for all expressions embedded in the interpolated text\n     */\n    function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {\n      // Provide a quick exit and simplified result function for text with no interpolation\n      if (!text.length || text.indexOf(startSymbol) === -1) {\n        var constantInterp;\n        if (!mustHaveExpression) {\n          var unescapedText = unescapeText(text);\n          constantInterp = valueFn(unescapedText);\n          constantInterp.exp = text;\n          constantInterp.expressions = [];\n          constantInterp.$$watchDelegate = constantWatchDelegate;\n        }\n        return constantInterp;\n      }\n\n      allOrNothing = !!allOrNothing;\n      var startIndex,\n          endIndex,\n          index = 0,\n          expressions = [],\n          parseFns = [],\n          textLength = text.length,\n          exp,\n          concat = [],\n          expressionPositions = [];\n\n      while (index < textLength) {\n        if (((startIndex = text.indexOf(startSymbol, index)) !== -1) &&\n             ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) !== -1)) {\n          if (index !== startIndex) {\n            concat.push(unescapeText(text.substring(index, startIndex)));\n          }\n          exp = text.substring(startIndex + startSymbolLength, endIndex);\n          expressions.push(exp);\n          parseFns.push($parse(exp, parseStringifyInterceptor));\n          index = endIndex + endSymbolLength;\n          expressionPositions.push(concat.length);\n          concat.push('');\n        } else {\n          // we did not find an interpolation, so we have to add the remainder to the separators array\n          if (index !== textLength) {\n            concat.push(unescapeText(text.substring(index)));\n          }\n          break;\n        }\n      }\n\n      // Concatenating expressions makes it hard to reason about whether some combination of\n      // concatenated values are unsafe to use and could easily lead to XSS.  By requiring that a\n      // single expression be used for iframe[src], object[src], etc., we ensure that the value\n      // that's used is assigned or constructed by some JS code somewhere that is more testable or\n      // make it obvious that you bound the value to some user controlled value.  This helps reduce\n      // the load when auditing for XSS issues.\n      if (trustedContext && concat.length > 1) {\n          $interpolateMinErr.throwNoconcat(text);\n      }\n\n      if (!mustHaveExpression || expressions.length) {\n        var compute = function(values) {\n          for (var i = 0, ii = expressions.length; i < ii; i++) {\n            if (allOrNothing && isUndefined(values[i])) return;\n            concat[expressionPositions[i]] = values[i];\n          }\n          return concat.join('');\n        };\n\n        var getValue = function(value) {\n          return trustedContext ?\n            $sce.getTrusted(trustedContext, value) :\n            $sce.valueOf(value);\n        };\n\n        return extend(function interpolationFn(context) {\n            var i = 0;\n            var ii = expressions.length;\n            var values = new Array(ii);\n\n            try {\n              for (; i < ii; i++) {\n                values[i] = parseFns[i](context);\n              }\n\n              return compute(values);\n            } catch (err) {\n              $exceptionHandler($interpolateMinErr.interr(text, err));\n            }\n\n          }, {\n          // all of these properties are undocumented for now\n          exp: text, //just for compatibility with regular watchers created via $watch\n          expressions: expressions,\n          $$watchDelegate: function(scope, listener) {\n            var lastValue;\n            return scope.$watchGroup(parseFns, /** @this */ function interpolateFnWatcher(values, oldValues) {\n              var currValue = compute(values);\n              if (isFunction(listener)) {\n                listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);\n              }\n              lastValue = currValue;\n            });\n          }\n        });\n      }\n\n      function parseStringifyInterceptor(value) {\n        try {\n          value = getValue(value);\n          return allOrNothing && !isDefined(value) ? value : stringify(value);\n        } catch (err) {\n          $exceptionHandler($interpolateMinErr.interr(text, err));\n        }\n      }\n    }\n\n\n    /**\n     * @ngdoc method\n     * @name $interpolate#startSymbol\n     * @description\n     * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.\n     *\n     * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change\n     * the symbol.\n     *\n     * @returns {string} start symbol.\n     */\n    $interpolate.startSymbol = function() {\n      return startSymbol;\n    };\n\n\n    /**\n     * @ngdoc method\n     * @name $interpolate#endSymbol\n     * @description\n     * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.\n     *\n     * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change\n     * the symbol.\n     *\n     * @returns {string} end symbol.\n     */\n    $interpolate.endSymbol = function() {\n      return endSymbol;\n    };\n\n    return $interpolate;\n  }];\n}\n\n/** @this */\nfunction $IntervalProvider() {\n  this.$get = ['$rootScope', '$window', '$q', '$$q', '$browser',\n       function($rootScope,   $window,   $q,   $$q,   $browser) {\n    var intervals = {};\n\n\n     /**\n      * @ngdoc service\n      * @name $interval\n      *\n      * @description\n      * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay`\n      * milliseconds.\n      *\n      * The return value of registering an interval function is a promise. This promise will be\n      * notified upon each tick of the interval, and will be resolved after `count` iterations, or\n      * run indefinitely if `count` is not defined. The value of the notification will be the\n      * number of iterations that have run.\n      * To cancel an interval, call `$interval.cancel(promise)`.\n      *\n      * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to\n      * move forward by `millis` milliseconds and trigger any functions scheduled to run in that\n      * time.\n      *\n      * <div class=\"alert alert-warning\">\n      * **Note**: Intervals created by this service must be explicitly destroyed when you are finished\n      * with them.  In particular they are not automatically destroyed when a controller's scope or a\n      * directive's element are destroyed.\n      * You should take this into consideration and make sure to always cancel the interval at the\n      * appropriate moment.  See the example below for more details on how and when to do this.\n      * </div>\n      *\n      * @param {function()} fn A function that should be called repeatedly. If no additional arguments\n      *   are passed (see below), the function is called with the current iteration count.\n      * @param {number} delay Number of milliseconds between each function call.\n      * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat\n      *   indefinitely.\n      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n      * @param {...*=} Pass additional parameters to the executed function.\n      * @returns {promise} A promise which will be notified on each iteration. It will resolve once all iterations of the interval complete.\n      *\n      * @example\n      * <example module=\"intervalExample\" name=\"interval-service\">\n      * <file name=\"index.html\">\n      *   <script>\n      *     angular.module('intervalExample', [])\n      *       .controller('ExampleController', ['$scope', '$interval',\n      *         function($scope, $interval) {\n      *           $scope.format = 'M/d/yy h:mm:ss a';\n      *           $scope.blood_1 = 100;\n      *           $scope.blood_2 = 120;\n      *\n      *           var stop;\n      *           $scope.fight = function() {\n      *             // Don't start a new fight if we are already fighting\n      *             if ( angular.isDefined(stop) ) return;\n      *\n      *             stop = $interval(function() {\n      *               if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {\n      *                 $scope.blood_1 = $scope.blood_1 - 3;\n      *                 $scope.blood_2 = $scope.blood_2 - 4;\n      *               } else {\n      *                 $scope.stopFight();\n      *               }\n      *             }, 100);\n      *           };\n      *\n      *           $scope.stopFight = function() {\n      *             if (angular.isDefined(stop)) {\n      *               $interval.cancel(stop);\n      *               stop = undefined;\n      *             }\n      *           };\n      *\n      *           $scope.resetFight = function() {\n      *             $scope.blood_1 = 100;\n      *             $scope.blood_2 = 120;\n      *           };\n      *\n      *           $scope.$on('$destroy', function() {\n      *             // Make sure that the interval is destroyed too\n      *             $scope.stopFight();\n      *           });\n      *         }])\n      *       // Register the 'myCurrentTime' directive factory method.\n      *       // We inject $interval and dateFilter service since the factory method is DI.\n      *       .directive('myCurrentTime', ['$interval', 'dateFilter',\n      *         function($interval, dateFilter) {\n      *           // return the directive link function. (compile function not needed)\n      *           return function(scope, element, attrs) {\n      *             var format,  // date format\n      *                 stopTime; // so that we can cancel the time updates\n      *\n      *             // used to update the UI\n      *             function updateTime() {\n      *               element.text(dateFilter(new Date(), format));\n      *             }\n      *\n      *             // watch the expression, and update the UI on change.\n      *             scope.$watch(attrs.myCurrentTime, function(value) {\n      *               format = value;\n      *               updateTime();\n      *             });\n      *\n      *             stopTime = $interval(updateTime, 1000);\n      *\n      *             // listen on DOM destroy (removal) event, and cancel the next UI update\n      *             // to prevent updating time after the DOM element was removed.\n      *             element.on('$destroy', function() {\n      *               $interval.cancel(stopTime);\n      *             });\n      *           }\n      *         }]);\n      *   </script>\n      *\n      *   <div>\n      *     <div ng-controller=\"ExampleController\">\n      *       <label>Date format: <input ng-model=\"format\"></label> <hr/>\n      *       Current time is: <span my-current-time=\"format\"></span>\n      *       <hr/>\n      *       Blood 1 : <font color='red'>{{blood_1}}</font>\n      *       Blood 2 : <font color='red'>{{blood_2}}</font>\n      *       <button type=\"button\" data-ng-click=\"fight()\">Fight</button>\n      *       <button type=\"button\" data-ng-click=\"stopFight()\">StopFight</button>\n      *       <button type=\"button\" data-ng-click=\"resetFight()\">resetFight</button>\n      *     </div>\n      *   </div>\n      *\n      * </file>\n      * </example>\n      */\n    function interval(fn, delay, count, invokeApply) {\n      var hasParams = arguments.length > 4,\n          args = hasParams ? sliceArgs(arguments, 4) : [],\n          setInterval = $window.setInterval,\n          clearInterval = $window.clearInterval,\n          iteration = 0,\n          skipApply = (isDefined(invokeApply) && !invokeApply),\n          deferred = (skipApply ? $$q : $q).defer(),\n          promise = deferred.promise;\n\n      count = isDefined(count) ? count : 0;\n\n      promise.$$intervalId = setInterval(function tick() {\n        if (skipApply) {\n          $browser.defer(callback);\n        } else {\n          $rootScope.$evalAsync(callback);\n        }\n        deferred.notify(iteration++);\n\n        if (count > 0 && iteration >= count) {\n          deferred.resolve(iteration);\n          clearInterval(promise.$$intervalId);\n          delete intervals[promise.$$intervalId];\n        }\n\n        if (!skipApply) $rootScope.$apply();\n\n      }, delay);\n\n      intervals[promise.$$intervalId] = deferred;\n\n      return promise;\n\n      function callback() {\n        if (!hasParams) {\n          fn(iteration);\n        } else {\n          fn.apply(null, args);\n        }\n      }\n    }\n\n\n     /**\n      * @ngdoc method\n      * @name $interval#cancel\n      *\n      * @description\n      * Cancels a task associated with the `promise`.\n      *\n      * @param {Promise=} promise returned by the `$interval` function.\n      * @returns {boolean} Returns `true` if the task was successfully canceled.\n      */\n    interval.cancel = function(promise) {\n      if (promise && promise.$$intervalId in intervals) {\n        // Interval cancels should not report as unhandled promise.\n        markQExceptionHandled(intervals[promise.$$intervalId].promise);\n        intervals[promise.$$intervalId].reject('canceled');\n        $window.clearInterval(promise.$$intervalId);\n        delete intervals[promise.$$intervalId];\n        return true;\n      }\n      return false;\n    };\n\n    return interval;\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $jsonpCallbacks\n * @requires $window\n * @description\n * This service handles the lifecycle of callbacks to handle JSONP requests.\n * Override this service if you wish to customise where the callbacks are stored and\n * how they vary compared to the requested url.\n */\nvar $jsonpCallbacksProvider = /** @this */ function() {\n  this.$get = function() {\n    var callbacks = angular.callbacks;\n    var callbackMap = {};\n\n    function createCallback(callbackId) {\n      var callback = function(data) {\n        callback.data = data;\n        callback.called = true;\n      };\n      callback.id = callbackId;\n      return callback;\n    }\n\n    return {\n      /**\n       * @ngdoc method\n       * @name $jsonpCallbacks#createCallback\n       * @param {string} url the url of the JSONP request\n       * @returns {string} the callback path to send to the server as part of the JSONP request\n       * @description\n       * {@link $httpBackend} calls this method to create a callback and get hold of the path to the callback\n       * to pass to the server, which will be used to call the callback with its payload in the JSONP response.\n       */\n      createCallback: function(url) {\n        var callbackId = '_' + (callbacks.$$counter++).toString(36);\n        var callbackPath = 'angular.callbacks.' + callbackId;\n        var callback = createCallback(callbackId);\n        callbackMap[callbackPath] = callbacks[callbackId] = callback;\n        return callbackPath;\n      },\n      /**\n       * @ngdoc method\n       * @name $jsonpCallbacks#wasCalled\n       * @param {string} callbackPath the path to the callback that was sent in the JSONP request\n       * @returns {boolean} whether the callback has been called, as a result of the JSONP response\n       * @description\n       * {@link $httpBackend} calls this method to find out whether the JSONP response actually called the\n       * callback that was passed in the request.\n       */\n      wasCalled: function(callbackPath) {\n        return callbackMap[callbackPath].called;\n      },\n      /**\n       * @ngdoc method\n       * @name $jsonpCallbacks#getResponse\n       * @param {string} callbackPath the path to the callback that was sent in the JSONP request\n       * @returns {*} the data received from the response via the registered callback\n       * @description\n       * {@link $httpBackend} calls this method to get hold of the data that was provided to the callback\n       * in the JSONP response.\n       */\n      getResponse: function(callbackPath) {\n        return callbackMap[callbackPath].data;\n      },\n      /**\n       * @ngdoc method\n       * @name $jsonpCallbacks#removeCallback\n       * @param {string} callbackPath the path to the callback that was sent in the JSONP request\n       * @description\n       * {@link $httpBackend} calls this method to remove the callback after the JSONP request has\n       * completed or timed-out.\n       */\n      removeCallback: function(callbackPath) {\n        var callback = callbackMap[callbackPath];\n        delete callbacks[callback.id];\n        delete callbackMap[callbackPath];\n      }\n    };\n  };\n};\n\n/**\n * @ngdoc service\n * @name $locale\n *\n * @description\n * $locale service provides localization rules for various Angular components. As of right now the\n * only public api is:\n *\n * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)\n */\n\nvar PATH_MATCH = /^([^?#]*)(\\?([^#]*))?(#(.*))?$/,\n    DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};\nvar $locationMinErr = minErr('$location');\n\n\n/**\n * Encode path using encodeUriSegment, ignoring forward slashes\n *\n * @param {string} path Path to encode\n * @returns {string}\n */\nfunction encodePath(path) {\n  var segments = path.split('/'),\n      i = segments.length;\n\n  while (i--) {\n    segments[i] = encodeUriSegment(segments[i]);\n  }\n\n  return segments.join('/');\n}\n\nfunction parseAbsoluteUrl(absoluteUrl, locationObj) {\n  var parsedUrl = urlResolve(absoluteUrl);\n\n  locationObj.$$protocol = parsedUrl.protocol;\n  locationObj.$$host = parsedUrl.hostname;\n  locationObj.$$port = toInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;\n}\n\nvar DOUBLE_SLASH_REGEX = /^\\s*[\\\\/]{2,}/;\nfunction parseAppUrl(url, locationObj) {\n\n  if (DOUBLE_SLASH_REGEX.test(url)) {\n    throw $locationMinErr('badpath', 'Invalid url \"{0}\".', url);\n  }\n\n  var prefixed = (url.charAt(0) !== '/');\n  if (prefixed) {\n    url = '/' + url;\n  }\n  var match = urlResolve(url);\n  locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?\n      match.pathname.substring(1) : match.pathname);\n  locationObj.$$search = parseKeyValue(match.search);\n  locationObj.$$hash = decodeURIComponent(match.hash);\n\n  // make sure path starts with '/';\n  if (locationObj.$$path && locationObj.$$path.charAt(0) !== '/') {\n    locationObj.$$path = '/' + locationObj.$$path;\n  }\n}\n\nfunction startsWith(str, search) {\n  return str.slice(0, search.length) === search;\n}\n\n/**\n *\n * @param {string} base\n * @param {string} url\n * @returns {string} returns text from `url` after `base` or `undefined` if it does not begin with\n *                   the expected string.\n */\nfunction stripBaseUrl(base, url) {\n  if (startsWith(url, base)) {\n    return url.substr(base.length);\n  }\n}\n\n\nfunction stripHash(url) {\n  var index = url.indexOf('#');\n  return index === -1 ? url : url.substr(0, index);\n}\n\nfunction trimEmptyHash(url) {\n  return url.replace(/(#.+)|#$/, '$1');\n}\n\n\nfunction stripFile(url) {\n  return url.substr(0, stripHash(url).lastIndexOf('/') + 1);\n}\n\n/* return the server only (scheme://host:port) */\nfunction serverBase(url) {\n  return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));\n}\n\n\n/**\n * LocationHtml5Url represents a URL\n * This object is exposed as $location service when HTML5 mode is enabled and supported\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} appBaseNoFile application base URL stripped of any filename\n * @param {string} basePrefix URL path prefix\n */\nfunction LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {\n  this.$$html5 = true;\n  basePrefix = basePrefix || '';\n  parseAbsoluteUrl(appBase, this);\n\n\n  /**\n   * Parse given HTML5 (regular) URL string into properties\n   * @param {string} url HTML5 URL\n   * @private\n   */\n  this.$$parse = function(url) {\n    var pathUrl = stripBaseUrl(appBaseNoFile, url);\n    if (!isString(pathUrl)) {\n      throw $locationMinErr('ipthprfx', 'Invalid url \"{0}\", missing path prefix \"{1}\".', url,\n          appBaseNoFile);\n    }\n\n    parseAppUrl(pathUrl, this);\n\n    if (!this.$$path) {\n      this.$$path = '/';\n    }\n\n    this.$$compose();\n  };\n\n  /**\n   * Compose url and update `absUrl` property\n   * @private\n   */\n  this.$$compose = function() {\n    var search = toKeyValue(this.$$search),\n        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n    this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'\n\n    this.$$urlUpdatedByLocation = true;\n  };\n\n  this.$$parseLinkUrl = function(url, relHref) {\n    if (relHref && relHref[0] === '#') {\n      // special case for links to hash fragments:\n      // keep the old url and only replace the hash fragment\n      this.hash(relHref.slice(1));\n      return true;\n    }\n    var appUrl, prevAppUrl;\n    var rewrittenUrl;\n\n\n    if (isDefined(appUrl = stripBaseUrl(appBase, url))) {\n      prevAppUrl = appUrl;\n      if (basePrefix && isDefined(appUrl = stripBaseUrl(basePrefix, appUrl))) {\n        rewrittenUrl = appBaseNoFile + (stripBaseUrl('/', appUrl) || appUrl);\n      } else {\n        rewrittenUrl = appBase + prevAppUrl;\n      }\n    } else if (isDefined(appUrl = stripBaseUrl(appBaseNoFile, url))) {\n      rewrittenUrl = appBaseNoFile + appUrl;\n    } else if (appBaseNoFile === url + '/') {\n      rewrittenUrl = appBaseNoFile;\n    }\n    if (rewrittenUrl) {\n      this.$$parse(rewrittenUrl);\n    }\n    return !!rewrittenUrl;\n  };\n}\n\n\n/**\n * LocationHashbangUrl represents URL\n * This object is exposed as $location service when developer doesn't opt into html5 mode.\n * It also serves as the base class for html5 mode fallback on legacy browsers.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} appBaseNoFile application base URL stripped of any filename\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {\n\n  parseAbsoluteUrl(appBase, this);\n\n\n  /**\n   * Parse given hashbang URL into properties\n   * @param {string} url Hashbang URL\n   * @private\n   */\n  this.$$parse = function(url) {\n    var withoutBaseUrl = stripBaseUrl(appBase, url) || stripBaseUrl(appBaseNoFile, url);\n    var withoutHashUrl;\n\n    if (!isUndefined(withoutBaseUrl) && withoutBaseUrl.charAt(0) === '#') {\n\n      // The rest of the URL starts with a hash so we have\n      // got either a hashbang path or a plain hash fragment\n      withoutHashUrl = stripBaseUrl(hashPrefix, withoutBaseUrl);\n      if (isUndefined(withoutHashUrl)) {\n        // There was no hashbang prefix so we just have a hash fragment\n        withoutHashUrl = withoutBaseUrl;\n      }\n\n    } else {\n      // There was no hashbang path nor hash fragment:\n      // If we are in HTML5 mode we use what is left as the path;\n      // Otherwise we ignore what is left\n      if (this.$$html5) {\n        withoutHashUrl = withoutBaseUrl;\n      } else {\n        withoutHashUrl = '';\n        if (isUndefined(withoutBaseUrl)) {\n          appBase = url;\n          /** @type {?} */ (this).replace();\n        }\n      }\n    }\n\n    parseAppUrl(withoutHashUrl, this);\n\n    this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);\n\n    this.$$compose();\n\n    /*\n     * In Windows, on an anchor node on documents loaded from\n     * the filesystem, the browser will return a pathname\n     * prefixed with the drive name ('/C:/path') when a\n     * pathname without a drive is set:\n     *  * a.setAttribute('href', '/foo')\n     *   * a.pathname === '/C:/foo' //true\n     *\n     * Inside of Angular, we're always using pathnames that\n     * do not include drive names for routing.\n     */\n    function removeWindowsDriveName(path, url, base) {\n      /*\n      Matches paths for file protocol on windows,\n      such as /C:/foo/bar, and captures only /foo/bar.\n      */\n      var windowsFilePathExp = /^\\/[A-Z]:(\\/.*)/;\n\n      var firstPathSegmentMatch;\n\n      //Get the relative path from the input URL.\n      if (startsWith(url, base)) {\n        url = url.replace(base, '');\n      }\n\n      // The input URL intentionally contains a first path segment that ends with a colon.\n      if (windowsFilePathExp.exec(url)) {\n        return path;\n      }\n\n      firstPathSegmentMatch = windowsFilePathExp.exec(path);\n      return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;\n    }\n  };\n\n  /**\n   * Compose hashbang URL and update `absUrl` property\n   * @private\n   */\n  this.$$compose = function() {\n    var search = toKeyValue(this.$$search),\n        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n    this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');\n\n    this.$$urlUpdatedByLocation = true;\n  };\n\n  this.$$parseLinkUrl = function(url, relHref) {\n    if (stripHash(appBase) === stripHash(url)) {\n      this.$$parse(url);\n      return true;\n    }\n    return false;\n  };\n}\n\n\n/**\n * LocationHashbangUrl represents URL\n * This object is exposed as $location service when html5 history api is enabled but the browser\n * does not support it.\n *\n * @constructor\n * @param {string} appBase application base URL\n * @param {string} appBaseNoFile application base URL stripped of any filename\n * @param {string} hashPrefix hashbang prefix\n */\nfunction LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {\n  this.$$html5 = true;\n  LocationHashbangUrl.apply(this, arguments);\n\n  this.$$parseLinkUrl = function(url, relHref) {\n    if (relHref && relHref[0] === '#') {\n      // special case for links to hash fragments:\n      // keep the old url and only replace the hash fragment\n      this.hash(relHref.slice(1));\n      return true;\n    }\n\n    var rewrittenUrl;\n    var appUrl;\n\n    if (appBase === stripHash(url)) {\n      rewrittenUrl = url;\n    } else if ((appUrl = stripBaseUrl(appBaseNoFile, url))) {\n      rewrittenUrl = appBase + hashPrefix + appUrl;\n    } else if (appBaseNoFile === url + '/') {\n      rewrittenUrl = appBaseNoFile;\n    }\n    if (rewrittenUrl) {\n      this.$$parse(rewrittenUrl);\n    }\n    return !!rewrittenUrl;\n  };\n\n  this.$$compose = function() {\n    var search = toKeyValue(this.$$search),\n        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';\n\n    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;\n    // include hashPrefix in $$absUrl when $$url is empty so IE9 does not reload page because of removal of '#'\n    this.$$absUrl = appBase + hashPrefix + this.$$url;\n\n    this.$$urlUpdatedByLocation = true;\n  };\n\n}\n\n\nvar locationPrototype = {\n\n  /**\n   * Ensure absolute URL is initialized.\n   * @private\n   */\n  $$absUrl:'',\n\n  /**\n   * Are we in html5 mode?\n   * @private\n   */\n  $$html5: false,\n\n  /**\n   * Has any change been replacing?\n   * @private\n   */\n  $$replace: false,\n\n  /**\n   * @ngdoc method\n   * @name $location#absUrl\n   *\n   * @description\n   * This method is getter only.\n   *\n   * Return full URL representation with all segments encoded according to rules specified in\n   * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var absUrl = $location.absUrl();\n   * // => \"http://example.com/#/some/path?foo=bar&baz=xoxo\"\n   * ```\n   *\n   * @return {string} full URL\n   */\n  absUrl: locationGetter('$$absUrl'),\n\n  /**\n   * @ngdoc method\n   * @name $location#url\n   *\n   * @description\n   * This method is getter / setter.\n   *\n   * Return URL (e.g. `/path?a=b#hash`) when called without any parameter.\n   *\n   * Change path, search and hash, when called with parameter and return `$location`.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var url = $location.url();\n   * // => \"/some/path?foo=bar&baz=xoxo\"\n   * ```\n   *\n   * @param {string=} url New URL without base prefix (e.g. `/path?a=b#hash`)\n   * @return {string} url\n   */\n  url: function(url) {\n    if (isUndefined(url)) {\n      return this.$$url;\n    }\n\n    var match = PATH_MATCH.exec(url);\n    if (match[1] || url === '') this.path(decodeURIComponent(match[1]));\n    if (match[2] || match[1] || url === '') this.search(match[3] || '');\n    this.hash(match[5] || '');\n\n    return this;\n  },\n\n  /**\n   * @ngdoc method\n   * @name $location#protocol\n   *\n   * @description\n   * This method is getter only.\n   *\n   * Return protocol of current URL.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var protocol = $location.protocol();\n   * // => \"http\"\n   * ```\n   *\n   * @return {string} protocol of current URL\n   */\n  protocol: locationGetter('$$protocol'),\n\n  /**\n   * @ngdoc method\n   * @name $location#host\n   *\n   * @description\n   * This method is getter only.\n   *\n   * Return host of current URL.\n   *\n   * Note: compared to the non-angular version `location.host` which returns `hostname:port`, this returns the `hostname` portion only.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var host = $location.host();\n   * // => \"example.com\"\n   *\n   * // given URL http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo\n   * host = $location.host();\n   * // => \"example.com\"\n   * host = location.host;\n   * // => \"example.com:8080\"\n   * ```\n   *\n   * @return {string} host of current URL.\n   */\n  host: locationGetter('$$host'),\n\n  /**\n   * @ngdoc method\n   * @name $location#port\n   *\n   * @description\n   * This method is getter only.\n   *\n   * Return port of current URL.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var port = $location.port();\n   * // => 80\n   * ```\n   *\n   * @return {Number} port\n   */\n  port: locationGetter('$$port'),\n\n  /**\n   * @ngdoc method\n   * @name $location#path\n   *\n   * @description\n   * This method is getter / setter.\n   *\n   * Return path of current URL when called without any parameter.\n   *\n   * Change path when called with parameter and return `$location`.\n   *\n   * Note: Path should always begin with forward slash (/), this method will add the forward slash\n   * if it is missing.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var path = $location.path();\n   * // => \"/some/path\"\n   * ```\n   *\n   * @param {(string|number)=} path New path\n   * @return {(string|object)} path if called with no parameters, or `$location` if called with a parameter\n   */\n  path: locationGetterSetter('$$path', function(path) {\n    path = path !== null ? path.toString() : '';\n    return path.charAt(0) === '/' ? path : '/' + path;\n  }),\n\n  /**\n   * @ngdoc method\n   * @name $location#search\n   *\n   * @description\n   * This method is getter / setter.\n   *\n   * Return search part (as object) of current URL when called without any parameter.\n   *\n   * Change search part when called with parameter and return `$location`.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo\n   * var searchObject = $location.search();\n   * // => {foo: 'bar', baz: 'xoxo'}\n   *\n   * // set foo to 'yipee'\n   * $location.search('foo', 'yipee');\n   * // $location.search() => {foo: 'yipee', baz: 'xoxo'}\n   * ```\n   *\n   * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or\n   * hash object.\n   *\n   * When called with a single argument the method acts as a setter, setting the `search` component\n   * of `$location` to the specified value.\n   *\n   * If the argument is a hash object containing an array of values, these values will be encoded\n   * as duplicate search parameters in the URL.\n   *\n   * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`\n   * will override only a single search property.\n   *\n   * If `paramValue` is an array, it will override the property of the `search` component of\n   * `$location` specified via the first argument.\n   *\n   * If `paramValue` is `null`, the property specified via the first argument will be deleted.\n   *\n   * If `paramValue` is `true`, the property specified via the first argument will be added with no\n   * value nor trailing equal sign.\n   *\n   * @return {Object} If called with no arguments returns the parsed `search` object. If called with\n   * one or more arguments returns `$location` object itself.\n   */\n  search: function(search, paramValue) {\n    switch (arguments.length) {\n      case 0:\n        return this.$$search;\n      case 1:\n        if (isString(search) || isNumber(search)) {\n          search = search.toString();\n          this.$$search = parseKeyValue(search);\n        } else if (isObject(search)) {\n          search = copy(search, {});\n          // remove object undefined or null properties\n          forEach(search, function(value, key) {\n            if (value == null) delete search[key];\n          });\n\n          this.$$search = search;\n        } else {\n          throw $locationMinErr('isrcharg',\n              'The first argument of the `$location#search()` call must be a string or an object.');\n        }\n        break;\n      default:\n        if (isUndefined(paramValue) || paramValue === null) {\n          delete this.$$search[search];\n        } else {\n          this.$$search[search] = paramValue;\n        }\n    }\n\n    this.$$compose();\n    return this;\n  },\n\n  /**\n   * @ngdoc method\n   * @name $location#hash\n   *\n   * @description\n   * This method is getter / setter.\n   *\n   * Returns the hash fragment when called without any parameters.\n   *\n   * Changes the hash fragment when called with a parameter and returns `$location`.\n   *\n   *\n   * ```js\n   * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue\n   * var hash = $location.hash();\n   * // => \"hashValue\"\n   * ```\n   *\n   * @param {(string|number)=} hash New hash fragment\n   * @return {string} hash\n   */\n  hash: locationGetterSetter('$$hash', function(hash) {\n    return hash !== null ? hash.toString() : '';\n  }),\n\n  /**\n   * @ngdoc method\n   * @name $location#replace\n   *\n   * @description\n   * If called, all changes to $location during the current `$digest` will replace the current history\n   * record, instead of adding a new one.\n   */\n  replace: function() {\n    this.$$replace = true;\n    return this;\n  }\n};\n\nforEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {\n  Location.prototype = Object.create(locationPrototype);\n\n  /**\n   * @ngdoc method\n   * @name $location#state\n   *\n   * @description\n   * This method is getter / setter.\n   *\n   * Return the history state object when called without any parameter.\n   *\n   * Change the history state object when called with one parameter and return `$location`.\n   * The state object is later passed to `pushState` or `replaceState`.\n   *\n   * NOTE: This method is supported only in HTML5 mode and only in browsers supporting\n   * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support\n   * older browsers (like IE9 or Android < 4.0), don't use this method.\n   *\n   * @param {object=} state State object for pushState or replaceState\n   * @return {object} state\n   */\n  Location.prototype.state = function(state) {\n    if (!arguments.length) {\n      return this.$$state;\n    }\n\n    if (Location !== LocationHtml5Url || !this.$$html5) {\n      throw $locationMinErr('nostate', 'History API state support is available only ' +\n        'in HTML5 mode and only in browsers supporting HTML5 History API');\n    }\n    // The user might modify `stateObject` after invoking `$location.state(stateObject)`\n    // but we're changing the $$state reference to $browser.state() during the $digest\n    // so the modification window is narrow.\n    this.$$state = isUndefined(state) ? null : state;\n    this.$$urlUpdatedByLocation = true;\n\n    return this;\n  };\n});\n\n\nfunction locationGetter(property) {\n  return /** @this */ function() {\n    return this[property];\n  };\n}\n\n\nfunction locationGetterSetter(property, preprocess) {\n  return /** @this */ function(value) {\n    if (isUndefined(value)) {\n      return this[property];\n    }\n\n    this[property] = preprocess(value);\n    this.$$compose();\n\n    return this;\n  };\n}\n\n\n/**\n * @ngdoc service\n * @name $location\n *\n * @requires $rootElement\n *\n * @description\n * The $location service parses the URL in the browser address bar (based on the\n * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL\n * available to your application. Changes to the URL in the address bar are reflected into\n * $location service and changes to $location are reflected into the browser address bar.\n *\n * **The $location service:**\n *\n * - Exposes the current URL in the browser address bar, so you can\n *   - Watch and observe the URL.\n *   - Change the URL.\n * - Synchronizes the URL with the browser when the user\n *   - Changes the address bar.\n *   - Clicks the back or forward button (or clicks a History link).\n *   - Clicks on a link.\n * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).\n *\n * For more information see {@link guide/$location Developer Guide: Using $location}\n */\n\n/**\n * @ngdoc provider\n * @name $locationProvider\n * @this\n *\n * @description\n * Use the `$locationProvider` to configure how the application deep linking paths are stored.\n */\nfunction $LocationProvider() {\n  var hashPrefix = '!',\n      html5Mode = {\n        enabled: false,\n        requireBase: true,\n        rewriteLinks: true\n      };\n\n  /**\n   * @ngdoc method\n   * @name $locationProvider#hashPrefix\n   * @description\n   * The default value for the prefix is `'!'`.\n   * @param {string=} prefix Prefix for hash part (containing path and search)\n   * @returns {*} current value if used as getter or itself (chaining) if used as setter\n   */\n  this.hashPrefix = function(prefix) {\n    if (isDefined(prefix)) {\n      hashPrefix = prefix;\n      return this;\n    } else {\n      return hashPrefix;\n    }\n  };\n\n  /**\n   * @ngdoc method\n   * @name $locationProvider#html5Mode\n   * @description\n   * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value.\n   *   If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported\n   *   properties:\n   *   - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to\n   *     change urls where supported. Will fall back to hash-prefixed paths in browsers that do not\n   *     support `pushState`.\n   *   - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies\n   *     whether or not a <base> tag is required to be present. If `enabled` and `requireBase` are\n   *     true, and a base tag is not present, an error will be thrown when `$location` is injected.\n   *     See the {@link guide/$location $location guide for more information}\n   *   - **rewriteLinks** - `{boolean|string}` - (default: `true`) When html5Mode is enabled,\n   *     enables/disables URL rewriting for relative links. If set to a string, URL rewriting will\n   *     only happen on links with an attribute that matches the given string. For example, if set\n   *     to `'internal-link'`, then the URL will only be rewritten for `<a internal-link>` links.\n   *     Note that [attribute name normalization](guide/directive#normalization) does not apply\n   *     here, so `'internalLink'` will **not** match `'internal-link'`.\n   *\n   * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter\n   */\n  this.html5Mode = function(mode) {\n    if (isBoolean(mode)) {\n      html5Mode.enabled = mode;\n      return this;\n    } else if (isObject(mode)) {\n\n      if (isBoolean(mode.enabled)) {\n        html5Mode.enabled = mode.enabled;\n      }\n\n      if (isBoolean(mode.requireBase)) {\n        html5Mode.requireBase = mode.requireBase;\n      }\n\n      if (isBoolean(mode.rewriteLinks) || isString(mode.rewriteLinks)) {\n        html5Mode.rewriteLinks = mode.rewriteLinks;\n      }\n\n      return this;\n    } else {\n      return html5Mode;\n    }\n  };\n\n  /**\n   * @ngdoc event\n   * @name $location#$locationChangeStart\n   * @eventType broadcast on root scope\n   * @description\n   * Broadcasted before a URL will change.\n   *\n   * This change can be prevented by calling\n   * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more\n   * details about event object. Upon successful change\n   * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired.\n   *\n   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when\n   * the browser supports the HTML5 History API.\n   *\n   * @param {Object} angularEvent Synthetic event object.\n   * @param {string} newUrl New URL\n   * @param {string=} oldUrl URL that was before it was changed.\n   * @param {string=} newState New history state object\n   * @param {string=} oldState History state object that was before it was changed.\n   */\n\n  /**\n   * @ngdoc event\n   * @name $location#$locationChangeSuccess\n   * @eventType broadcast on root scope\n   * @description\n   * Broadcasted after a URL was changed.\n   *\n   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when\n   * the browser supports the HTML5 History API.\n   *\n   * @param {Object} angularEvent Synthetic event object.\n   * @param {string} newUrl New URL\n   * @param {string=} oldUrl URL that was before it was changed.\n   * @param {string=} newState New history state object\n   * @param {string=} oldState History state object that was before it was changed.\n   */\n\n  this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window',\n      function($rootScope, $browser, $sniffer, $rootElement, $window) {\n    var $location,\n        LocationMode,\n        baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''\n        initialUrl = $browser.url(),\n        appBase;\n\n    if (html5Mode.enabled) {\n      if (!baseHref && html5Mode.requireBase) {\n        throw $locationMinErr('nobase',\n          '$location in HTML5 mode requires a <base> tag to be present!');\n      }\n      appBase = serverBase(initialUrl) + (baseHref || '/');\n      LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;\n    } else {\n      appBase = stripHash(initialUrl);\n      LocationMode = LocationHashbangUrl;\n    }\n    var appBaseNoFile = stripFile(appBase);\n\n    $location = new LocationMode(appBase, appBaseNoFile, '#' + hashPrefix);\n    $location.$$parseLinkUrl(initialUrl, initialUrl);\n\n    $location.$$state = $browser.state();\n\n    var IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i;\n\n    function setBrowserUrlWithFallback(url, replace, state) {\n      var oldUrl = $location.url();\n      var oldState = $location.$$state;\n      try {\n        $browser.url(url, replace, state);\n\n        // Make sure $location.state() returns referentially identical (not just deeply equal)\n        // state object; this makes possible quick checking if the state changed in the digest\n        // loop. Checking deep equality would be too expensive.\n        $location.$$state = $browser.state();\n      } catch (e) {\n        // Restore old values if pushState fails\n        $location.url(oldUrl);\n        $location.$$state = oldState;\n\n        throw e;\n      }\n    }\n\n    $rootElement.on('click', function(event) {\n      var rewriteLinks = html5Mode.rewriteLinks;\n      // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)\n      // currently we open nice url link and redirect then\n\n      if (!rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which === 2 || event.button === 2) return;\n\n      var elm = jqLite(event.target);\n\n      // traverse the DOM up to find first A tag\n      while (nodeName_(elm[0]) !== 'a') {\n        // ignore rewriting if no A tag (reached root element, or no parent - removed from document)\n        if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;\n      }\n\n      if (isString(rewriteLinks) && isUndefined(elm.attr(rewriteLinks))) return;\n\n      var absHref = elm.prop('href');\n      // get the actual href attribute - see\n      // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx\n      var relHref = elm.attr('href') || elm.attr('xlink:href');\n\n      if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {\n        // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during\n        // an animation.\n        absHref = urlResolve(absHref.animVal).href;\n      }\n\n      // Ignore when url is started with javascript: or mailto:\n      if (IGNORE_URI_REGEXP.test(absHref)) return;\n\n      if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {\n        if ($location.$$parseLinkUrl(absHref, relHref)) {\n          // We do a preventDefault for all urls that are part of the angular application,\n          // in html5mode and also without, so that we are able to abort navigation without\n          // getting double entries in the location history.\n          event.preventDefault();\n          // update location manually\n          if ($location.absUrl() !== $browser.url()) {\n            $rootScope.$apply();\n            // hack to work around FF6 bug 684208 when scenario runner clicks on links\n            $window.angular['ff-684208-preventDefault'] = true;\n          }\n        }\n      }\n    });\n\n\n    // rewrite hashbang url <> html5 url\n    if (trimEmptyHash($location.absUrl()) !== trimEmptyHash(initialUrl)) {\n      $browser.url($location.absUrl(), true);\n    }\n\n    var initializing = true;\n\n    // update $location when $browser url changes\n    $browser.onUrlChange(function(newUrl, newState) {\n\n      if (!startsWith(newUrl, appBaseNoFile)) {\n        // If we are navigating outside of the app then force a reload\n        $window.location.href = newUrl;\n        return;\n      }\n\n      $rootScope.$evalAsync(function() {\n        var oldUrl = $location.absUrl();\n        var oldState = $location.$$state;\n        var defaultPrevented;\n        newUrl = trimEmptyHash(newUrl);\n        $location.$$parse(newUrl);\n        $location.$$state = newState;\n\n        defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,\n            newState, oldState).defaultPrevented;\n\n        // if the location was changed by a `$locationChangeStart` handler then stop\n        // processing this location change\n        if ($location.absUrl() !== newUrl) return;\n\n        if (defaultPrevented) {\n          $location.$$parse(oldUrl);\n          $location.$$state = oldState;\n          setBrowserUrlWithFallback(oldUrl, false, oldState);\n        } else {\n          initializing = false;\n          afterLocationChange(oldUrl, oldState);\n        }\n      });\n      if (!$rootScope.$$phase) $rootScope.$digest();\n    });\n\n    // update browser\n    $rootScope.$watch(function $locationWatch() {\n      if (initializing || $location.$$urlUpdatedByLocation) {\n        $location.$$urlUpdatedByLocation = false;\n\n        var oldUrl = trimEmptyHash($browser.url());\n        var newUrl = trimEmptyHash($location.absUrl());\n        var oldState = $browser.state();\n        var currentReplace = $location.$$replace;\n        var urlOrStateChanged = oldUrl !== newUrl ||\n          ($location.$$html5 && $sniffer.history && oldState !== $location.$$state);\n\n        if (initializing || urlOrStateChanged) {\n          initializing = false;\n\n          $rootScope.$evalAsync(function() {\n            var newUrl = $location.absUrl();\n            var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,\n                $location.$$state, oldState).defaultPrevented;\n\n            // if the location was changed by a `$locationChangeStart` handler then stop\n            // processing this location change\n            if ($location.absUrl() !== newUrl) return;\n\n            if (defaultPrevented) {\n              $location.$$parse(oldUrl);\n              $location.$$state = oldState;\n            } else {\n              if (urlOrStateChanged) {\n                setBrowserUrlWithFallback(newUrl, currentReplace,\n                                          oldState === $location.$$state ? null : $location.$$state);\n              }\n              afterLocationChange(oldUrl, oldState);\n            }\n          });\n        }\n      }\n\n      $location.$$replace = false;\n\n      // we don't need to return anything because $evalAsync will make the digest loop dirty when\n      // there is a change\n    });\n\n    return $location;\n\n    function afterLocationChange(oldUrl, oldState) {\n      $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl,\n        $location.$$state, oldState);\n    }\n}];\n}\n\n/**\n * @ngdoc service\n * @name $log\n * @requires $window\n *\n * @description\n * Simple service for logging. Default implementation safely writes the message\n * into the browser's console (if present).\n *\n * The main purpose of this service is to simplify debugging and troubleshooting.\n *\n * To reveal the location of the calls to `$log` in the JavaScript console,\n * you can \"blackbox\" the AngularJS source in your browser:\n *\n * [Mozilla description of blackboxing](https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Black_box_a_source).\n * [Chrome description of blackboxing](https://developer.chrome.com/devtools/docs/blackboxing).\n *\n * Note: Not all browsers support blackboxing.\n *\n * The default is to log `debug` messages. You can use\n * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.\n *\n * @example\n   <example module=\"logExample\" name=\"log-service\">\n     <file name=\"script.js\">\n       angular.module('logExample', [])\n         .controller('LogController', ['$scope', '$log', function($scope, $log) {\n           $scope.$log = $log;\n           $scope.message = 'Hello World!';\n         }]);\n     </file>\n     <file name=\"index.html\">\n       <div ng-controller=\"LogController\">\n         <p>Reload this page with open console, enter text and hit the log button...</p>\n         <label>Message:\n         <input type=\"text\" ng-model=\"message\" /></label>\n         <button ng-click=\"$log.log(message)\">log</button>\n         <button ng-click=\"$log.warn(message)\">warn</button>\n         <button ng-click=\"$log.info(message)\">info</button>\n         <button ng-click=\"$log.error(message)\">error</button>\n         <button ng-click=\"$log.debug(message)\">debug</button>\n       </div>\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc provider\n * @name $logProvider\n * @this\n *\n * @description\n * Use the `$logProvider` to configure how the application logs messages\n */\nfunction $LogProvider() {\n  var debug = true,\n      self = this;\n\n  /**\n   * @ngdoc method\n   * @name $logProvider#debugEnabled\n   * @description\n   * @param {boolean=} flag enable or disable debug level messages\n   * @returns {*} current value if used as getter or itself (chaining) if used as setter\n   */\n  this.debugEnabled = function(flag) {\n    if (isDefined(flag)) {\n      debug = flag;\n      return this;\n    } else {\n      return debug;\n    }\n  };\n\n  this.$get = ['$window', function($window) {\n    // Support: IE 9-11, Edge 12-14+\n    // IE/Edge display errors in such a way that it requires the user to click in 4 places\n    // to see the stack trace. There is no way to feature-detect it so there's a chance\n    // of the user agent sniffing to go wrong but since it's only about logging, this shouldn't\n    // break apps. Other browsers display errors in a sensible way and some of them map stack\n    // traces along source maps if available so it makes sense to let browsers display it\n    // as they want.\n    var formatStackTrace = msie || /\\bEdge\\//.test($window.navigator && $window.navigator.userAgent);\n\n    return {\n      /**\n       * @ngdoc method\n       * @name $log#log\n       *\n       * @description\n       * Write a log message\n       */\n      log: consoleLog('log'),\n\n      /**\n       * @ngdoc method\n       * @name $log#info\n       *\n       * @description\n       * Write an information message\n       */\n      info: consoleLog('info'),\n\n      /**\n       * @ngdoc method\n       * @name $log#warn\n       *\n       * @description\n       * Write a warning message\n       */\n      warn: consoleLog('warn'),\n\n      /**\n       * @ngdoc method\n       * @name $log#error\n       *\n       * @description\n       * Write an error message\n       */\n      error: consoleLog('error'),\n\n      /**\n       * @ngdoc method\n       * @name $log#debug\n       *\n       * @description\n       * Write a debug message\n       */\n      debug: (function() {\n        var fn = consoleLog('debug');\n\n        return function() {\n          if (debug) {\n            fn.apply(self, arguments);\n          }\n        };\n      })()\n    };\n\n    function formatError(arg) {\n      if (isError(arg)) {\n        if (arg.stack && formatStackTrace) {\n          arg = (arg.message && arg.stack.indexOf(arg.message) === -1)\n              ? 'Error: ' + arg.message + '\\n' + arg.stack\n              : arg.stack;\n        } else if (arg.sourceURL) {\n          arg = arg.message + '\\n' + arg.sourceURL + ':' + arg.line;\n        }\n      }\n      return arg;\n    }\n\n    function consoleLog(type) {\n      var console = $window.console || {},\n          logFn = console[type] || console.log || noop;\n\n      return function() {\n        var args = [];\n        forEach(arguments, function(arg) {\n          args.push(formatError(arg));\n        });\n        // Support: IE 9 only\n        // console methods don't inherit from Function.prototype in IE 9 so we can't\n        // call `logFn.apply(console, args)` directly.\n        return Function.prototype.apply.call(logFn, console, args);\n      };\n    }\n  }];\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *     Any commits to this file should be reviewed with security in mind.  *\n *   Changes to this file can potentially create security vulnerabilities. *\n *          An approval from 2 Core members with history of modifying      *\n *                         this file is required.                          *\n *                                                                         *\n *  Does the change somehow allow for arbitrary javascript to be executed? *\n *    Or allows for someone to change the prototype of built-in objects?   *\n *     Or gives undesired access to variables likes document or window?    *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $parseMinErr = minErr('$parse');\n\nvar objectValueOf = {}.constructor.prototype.valueOf;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are no longer sandboxed. So it is now even easier to access arbitrary JS code by\n// various means such as obtaining a reference to native JS functions like the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n//   {}.toString.constructor('alert(\"evil JS code\")')\n//\n// It is important to realize that if you create an expression from a string that contains user provided\n// content then it is possible that your application contains a security vulnerability to an XSS style attack.\n//\n// See https://docs.angularjs.org/guide/security\n\n\nfunction getStringValue(name) {\n  // Property names must be strings. This means that non-string objects cannot be used\n  // as keys in an object. Any non-string object, including a number, is typecasted\n  // into a string via the toString method.\n  // -- MDN, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names\n  //\n  // So, to ensure that we are checking the same `name` that JavaScript would use, we cast it\n  // to a string. It's not always possible. If `name` is an object and its `toString` method is\n  // 'broken' (doesn't return a string, isn't a function, etc.), an error will be thrown:\n  //\n  // TypeError: Cannot convert object to primitive value\n  //\n  // For performance reasons, we don't catch this error here and allow it to propagate up the call\n  // stack. Note that you'll get the same error in JavaScript if you try to access a property using\n  // such a 'broken' object as a key.\n  return name + '';\n}\n\n\nvar OPERATORS = createMap();\nforEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; });\nvar ESCAPE = {'n':'\\n', 'f':'\\f', 'r':'\\r', 't':'\\t', 'v':'\\v', '\\'':'\\'', '\"':'\"'};\n\n\n/////////////////////////////////////////\n\n\n/**\n * @constructor\n */\nvar Lexer = function Lexer(options) {\n  this.options = options;\n};\n\nLexer.prototype = {\n  constructor: Lexer,\n\n  lex: function(text) {\n    this.text = text;\n    this.index = 0;\n    this.tokens = [];\n\n    while (this.index < this.text.length) {\n      var ch = this.text.charAt(this.index);\n      if (ch === '\"' || ch === '\\'') {\n        this.readString(ch);\n      } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) {\n        this.readNumber();\n      } else if (this.isIdentifierStart(this.peekMultichar())) {\n        this.readIdent();\n      } else if (this.is(ch, '(){}[].,;:?')) {\n        this.tokens.push({index: this.index, text: ch});\n        this.index++;\n      } else if (this.isWhitespace(ch)) {\n        this.index++;\n      } else {\n        var ch2 = ch + this.peek();\n        var ch3 = ch2 + this.peek(2);\n        var op1 = OPERATORS[ch];\n        var op2 = OPERATORS[ch2];\n        var op3 = OPERATORS[ch3];\n        if (op1 || op2 || op3) {\n          var token = op3 ? ch3 : (op2 ? ch2 : ch);\n          this.tokens.push({index: this.index, text: token, operator: true});\n          this.index += token.length;\n        } else {\n          this.throwError('Unexpected next character ', this.index, this.index + 1);\n        }\n      }\n    }\n    return this.tokens;\n  },\n\n  is: function(ch, chars) {\n    return chars.indexOf(ch) !== -1;\n  },\n\n  peek: function(i) {\n    var num = i || 1;\n    return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;\n  },\n\n  isNumber: function(ch) {\n    return ('0' <= ch && ch <= '9') && typeof ch === 'string';\n  },\n\n  isWhitespace: function(ch) {\n    // IE treats non-breaking space as \\u00A0\n    return (ch === ' ' || ch === '\\r' || ch === '\\t' ||\n            ch === '\\n' || ch === '\\v' || ch === '\\u00A0');\n  },\n\n  isIdentifierStart: function(ch) {\n    return this.options.isIdentifierStart ?\n        this.options.isIdentifierStart(ch, this.codePointAt(ch)) :\n        this.isValidIdentifierStart(ch);\n  },\n\n  isValidIdentifierStart: function(ch) {\n    return ('a' <= ch && ch <= 'z' ||\n            'A' <= ch && ch <= 'Z' ||\n            '_' === ch || ch === '$');\n  },\n\n  isIdentifierContinue: function(ch) {\n    return this.options.isIdentifierContinue ?\n        this.options.isIdentifierContinue(ch, this.codePointAt(ch)) :\n        this.isValidIdentifierContinue(ch);\n  },\n\n  isValidIdentifierContinue: function(ch, cp) {\n    return this.isValidIdentifierStart(ch, cp) || this.isNumber(ch);\n  },\n\n  codePointAt: function(ch) {\n    if (ch.length === 1) return ch.charCodeAt(0);\n    // eslint-disable-next-line no-bitwise\n    return (ch.charCodeAt(0) << 10) + ch.charCodeAt(1) - 0x35FDC00;\n  },\n\n  peekMultichar: function() {\n    var ch = this.text.charAt(this.index);\n    var peek = this.peek();\n    if (!peek) {\n      return ch;\n    }\n    var cp1 = ch.charCodeAt(0);\n    var cp2 = peek.charCodeAt(0);\n    if (cp1 >= 0xD800 && cp1 <= 0xDBFF && cp2 >= 0xDC00 && cp2 <= 0xDFFF) {\n      return ch + peek;\n    }\n    return ch;\n  },\n\n  isExpOperator: function(ch) {\n    return (ch === '-' || ch === '+' || this.isNumber(ch));\n  },\n\n  throwError: function(error, start, end) {\n    end = end || this.index;\n    var colStr = (isDefined(start)\n            ? 's ' + start +  '-' + this.index + ' [' + this.text.substring(start, end) + ']'\n            : ' ' + end);\n    throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',\n        error, colStr, this.text);\n  },\n\n  readNumber: function() {\n    var number = '';\n    var start = this.index;\n    while (this.index < this.text.length) {\n      var ch = lowercase(this.text.charAt(this.index));\n      if (ch === '.' || this.isNumber(ch)) {\n        number += ch;\n      } else {\n        var peekCh = this.peek();\n        if (ch === 'e' && this.isExpOperator(peekCh)) {\n          number += ch;\n        } else if (this.isExpOperator(ch) &&\n            peekCh && this.isNumber(peekCh) &&\n            number.charAt(number.length - 1) === 'e') {\n          number += ch;\n        } else if (this.isExpOperator(ch) &&\n            (!peekCh || !this.isNumber(peekCh)) &&\n            number.charAt(number.length - 1) === 'e') {\n          this.throwError('Invalid exponent');\n        } else {\n          break;\n        }\n      }\n      this.index++;\n    }\n    this.tokens.push({\n      index: start,\n      text: number,\n      constant: true,\n      value: Number(number)\n    });\n  },\n\n  readIdent: function() {\n    var start = this.index;\n    this.index += this.peekMultichar().length;\n    while (this.index < this.text.length) {\n      var ch = this.peekMultichar();\n      if (!this.isIdentifierContinue(ch)) {\n        break;\n      }\n      this.index += ch.length;\n    }\n    this.tokens.push({\n      index: start,\n      text: this.text.slice(start, this.index),\n      identifier: true\n    });\n  },\n\n  readString: function(quote) {\n    var start = this.index;\n    this.index++;\n    var string = '';\n    var rawString = quote;\n    var escape = false;\n    while (this.index < this.text.length) {\n      var ch = this.text.charAt(this.index);\n      rawString += ch;\n      if (escape) {\n        if (ch === 'u') {\n          var hex = this.text.substring(this.index + 1, this.index + 5);\n          if (!hex.match(/[\\da-f]{4}/i)) {\n            this.throwError('Invalid unicode escape [\\\\u' + hex + ']');\n          }\n          this.index += 4;\n          string += String.fromCharCode(parseInt(hex, 16));\n        } else {\n          var rep = ESCAPE[ch];\n          string = string + (rep || ch);\n        }\n        escape = false;\n      } else if (ch === '\\\\') {\n        escape = true;\n      } else if (ch === quote) {\n        this.index++;\n        this.tokens.push({\n          index: start,\n          text: rawString,\n          constant: true,\n          value: string\n        });\n        return;\n      } else {\n        string += ch;\n      }\n      this.index++;\n    }\n    this.throwError('Unterminated quote', start);\n  }\n};\n\nvar AST = function AST(lexer, options) {\n  this.lexer = lexer;\n  this.options = options;\n};\n\nAST.Program = 'Program';\nAST.ExpressionStatement = 'ExpressionStatement';\nAST.AssignmentExpression = 'AssignmentExpression';\nAST.ConditionalExpression = 'ConditionalExpression';\nAST.LogicalExpression = 'LogicalExpression';\nAST.BinaryExpression = 'BinaryExpression';\nAST.UnaryExpression = 'UnaryExpression';\nAST.CallExpression = 'CallExpression';\nAST.MemberExpression = 'MemberExpression';\nAST.Identifier = 'Identifier';\nAST.Literal = 'Literal';\nAST.ArrayExpression = 'ArrayExpression';\nAST.Property = 'Property';\nAST.ObjectExpression = 'ObjectExpression';\nAST.ThisExpression = 'ThisExpression';\nAST.LocalsExpression = 'LocalsExpression';\n\n// Internal use only\nAST.NGValueParameter = 'NGValueParameter';\n\nAST.prototype = {\n  ast: function(text) {\n    this.text = text;\n    this.tokens = this.lexer.lex(text);\n\n    var value = this.program();\n\n    if (this.tokens.length !== 0) {\n      this.throwError('is an unexpected token', this.tokens[0]);\n    }\n\n    return value;\n  },\n\n  program: function() {\n    var body = [];\n    while (true) {\n      if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))\n        body.push(this.expressionStatement());\n      if (!this.expect(';')) {\n        return { type: AST.Program, body: body};\n      }\n    }\n  },\n\n  expressionStatement: function() {\n    return { type: AST.ExpressionStatement, expression: this.filterChain() };\n  },\n\n  filterChain: function() {\n    var left = this.expression();\n    while (this.expect('|')) {\n      left = this.filter(left);\n    }\n    return left;\n  },\n\n  expression: function() {\n    return this.assignment();\n  },\n\n  assignment: function() {\n    var result = this.ternary();\n    if (this.expect('=')) {\n      if (!isAssignable(result)) {\n        throw $parseMinErr('lval', 'Trying to assign a value to a non l-value');\n      }\n\n      result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='};\n    }\n    return result;\n  },\n\n  ternary: function() {\n    var test = this.logicalOR();\n    var alternate;\n    var consequent;\n    if (this.expect('?')) {\n      alternate = this.expression();\n      if (this.consume(':')) {\n        consequent = this.expression();\n        return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent};\n      }\n    }\n    return test;\n  },\n\n  logicalOR: function() {\n    var left = this.logicalAND();\n    while (this.expect('||')) {\n      left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() };\n    }\n    return left;\n  },\n\n  logicalAND: function() {\n    var left = this.equality();\n    while (this.expect('&&')) {\n      left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()};\n    }\n    return left;\n  },\n\n  equality: function() {\n    var left = this.relational();\n    var token;\n    while ((token = this.expect('==','!=','===','!=='))) {\n      left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() };\n    }\n    return left;\n  },\n\n  relational: function() {\n    var left = this.additive();\n    var token;\n    while ((token = this.expect('<', '>', '<=', '>='))) {\n      left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() };\n    }\n    return left;\n  },\n\n  additive: function() {\n    var left = this.multiplicative();\n    var token;\n    while ((token = this.expect('+','-'))) {\n      left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() };\n    }\n    return left;\n  },\n\n  multiplicative: function() {\n    var left = this.unary();\n    var token;\n    while ((token = this.expect('*','/','%'))) {\n      left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() };\n    }\n    return left;\n  },\n\n  unary: function() {\n    var token;\n    if ((token = this.expect('+', '-', '!'))) {\n      return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() };\n    } else {\n      return this.primary();\n    }\n  },\n\n  primary: function() {\n    var primary;\n    if (this.expect('(')) {\n      primary = this.filterChain();\n      this.consume(')');\n    } else if (this.expect('[')) {\n      primary = this.arrayDeclaration();\n    } else if (this.expect('{')) {\n      primary = this.object();\n    } else if (this.selfReferential.hasOwnProperty(this.peek().text)) {\n      primary = copy(this.selfReferential[this.consume().text]);\n    } else if (this.options.literals.hasOwnProperty(this.peek().text)) {\n      primary = { type: AST.Literal, value: this.options.literals[this.consume().text]};\n    } else if (this.peek().identifier) {\n      primary = this.identifier();\n    } else if (this.peek().constant) {\n      primary = this.constant();\n    } else {\n      this.throwError('not a primary expression', this.peek());\n    }\n\n    var next;\n    while ((next = this.expect('(', '[', '.'))) {\n      if (next.text === '(') {\n        primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() };\n        this.consume(')');\n      } else if (next.text === '[') {\n        primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true };\n        this.consume(']');\n      } else if (next.text === '.') {\n        primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false };\n      } else {\n        this.throwError('IMPOSSIBLE');\n      }\n    }\n    return primary;\n  },\n\n  filter: function(baseExpression) {\n    var args = [baseExpression];\n    var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true};\n\n    while (this.expect(':')) {\n      args.push(this.expression());\n    }\n\n    return result;\n  },\n\n  parseArguments: function() {\n    var args = [];\n    if (this.peekToken().text !== ')') {\n      do {\n        args.push(this.filterChain());\n      } while (this.expect(','));\n    }\n    return args;\n  },\n\n  identifier: function() {\n    var token = this.consume();\n    if (!token.identifier) {\n      this.throwError('is not a valid identifier', token);\n    }\n    return { type: AST.Identifier, name: token.text };\n  },\n\n  constant: function() {\n    // TODO check that it is a constant\n    return { type: AST.Literal, value: this.consume().value };\n  },\n\n  arrayDeclaration: function() {\n    var elements = [];\n    if (this.peekToken().text !== ']') {\n      do {\n        if (this.peek(']')) {\n          // Support trailing commas per ES5.1.\n          break;\n        }\n        elements.push(this.expression());\n      } while (this.expect(','));\n    }\n    this.consume(']');\n\n    return { type: AST.ArrayExpression, elements: elements };\n  },\n\n  object: function() {\n    var properties = [], property;\n    if (this.peekToken().text !== '}') {\n      do {\n        if (this.peek('}')) {\n          // Support trailing commas per ES5.1.\n          break;\n        }\n        property = {type: AST.Property, kind: 'init'};\n        if (this.peek().constant) {\n          property.key = this.constant();\n          property.computed = false;\n          this.consume(':');\n          property.value = this.expression();\n        } else if (this.peek().identifier) {\n          property.key = this.identifier();\n          property.computed = false;\n          if (this.peek(':')) {\n            this.consume(':');\n            property.value = this.expression();\n          } else {\n            property.value = property.key;\n          }\n        } else if (this.peek('[')) {\n          this.consume('[');\n          property.key = this.expression();\n          this.consume(']');\n          property.computed = true;\n          this.consume(':');\n          property.value = this.expression();\n        } else {\n          this.throwError('invalid key', this.peek());\n        }\n        properties.push(property);\n      } while (this.expect(','));\n    }\n    this.consume('}');\n\n    return {type: AST.ObjectExpression, properties: properties };\n  },\n\n  throwError: function(msg, token) {\n    throw $parseMinErr('syntax',\n        'Syntax Error: Token \\'{0}\\' {1} at column {2} of the expression [{3}] starting at [{4}].',\n          token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));\n  },\n\n  consume: function(e1) {\n    if (this.tokens.length === 0) {\n      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);\n    }\n\n    var token = this.expect(e1);\n    if (!token) {\n      this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());\n    }\n    return token;\n  },\n\n  peekToken: function() {\n    if (this.tokens.length === 0) {\n      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);\n    }\n    return this.tokens[0];\n  },\n\n  peek: function(e1, e2, e3, e4) {\n    return this.peekAhead(0, e1, e2, e3, e4);\n  },\n\n  peekAhead: function(i, e1, e2, e3, e4) {\n    if (this.tokens.length > i) {\n      var token = this.tokens[i];\n      var t = token.text;\n      if (t === e1 || t === e2 || t === e3 || t === e4 ||\n          (!e1 && !e2 && !e3 && !e4)) {\n        return token;\n      }\n    }\n    return false;\n  },\n\n  expect: function(e1, e2, e3, e4) {\n    var token = this.peek(e1, e2, e3, e4);\n    if (token) {\n      this.tokens.shift();\n      return token;\n    }\n    return false;\n  },\n\n  selfReferential: {\n    'this': {type: AST.ThisExpression },\n    '$locals': {type: AST.LocalsExpression }\n  }\n};\n\nfunction ifDefined(v, d) {\n  return typeof v !== 'undefined' ? v : d;\n}\n\nfunction plusFn(l, r) {\n  if (typeof l === 'undefined') return r;\n  if (typeof r === 'undefined') return l;\n  return l + r;\n}\n\nfunction isStateless($filter, filterName) {\n  var fn = $filter(filterName);\n  return !fn.$stateful;\n}\n\nvar PURITY_ABSOLUTE = 1;\nvar PURITY_RELATIVE = 2;\n\n// Detect nodes which could depend on non-shallow state of objects\nfunction isPure(node, parentIsPure) {\n  switch (node.type) {\n    // Computed members might invoke a stateful toString()\n    case AST.MemberExpression:\n      if (node.computed) {\n        return false;\n      }\n      break;\n\n    // Unary always convert to primative\n    case AST.UnaryExpression:\n      return PURITY_ABSOLUTE;\n\n    // The binary + operator can invoke a stateful toString().\n    case AST.BinaryExpression:\n      return node.operator !== '+' ? PURITY_ABSOLUTE : false;\n\n    // Functions / filters probably read state from within objects\n    case AST.CallExpression:\n      return false;\n  }\n\n  return (undefined === parentIsPure) ? PURITY_RELATIVE : parentIsPure;\n}\n\nfunction findConstantAndWatchExpressions(ast, $filter, parentIsPure) {\n  var allConstants;\n  var argsToWatch;\n  var isStatelessFilter;\n\n  var astIsPure = ast.isPure = isPure(ast, parentIsPure);\n\n  switch (ast.type) {\n  case AST.Program:\n    allConstants = true;\n    forEach(ast.body, function(expr) {\n      findConstantAndWatchExpressions(expr.expression, $filter, astIsPure);\n      allConstants = allConstants && expr.expression.constant;\n    });\n    ast.constant = allConstants;\n    break;\n  case AST.Literal:\n    ast.constant = true;\n    ast.toWatch = [];\n    break;\n  case AST.UnaryExpression:\n    findConstantAndWatchExpressions(ast.argument, $filter, astIsPure);\n    ast.constant = ast.argument.constant;\n    ast.toWatch = ast.argument.toWatch;\n    break;\n  case AST.BinaryExpression:\n    findConstantAndWatchExpressions(ast.left, $filter, astIsPure);\n    findConstantAndWatchExpressions(ast.right, $filter, astIsPure);\n    ast.constant = ast.left.constant && ast.right.constant;\n    ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);\n    break;\n  case AST.LogicalExpression:\n    findConstantAndWatchExpressions(ast.left, $filter, astIsPure);\n    findConstantAndWatchExpressions(ast.right, $filter, astIsPure);\n    ast.constant = ast.left.constant && ast.right.constant;\n    ast.toWatch = ast.constant ? [] : [ast];\n    break;\n  case AST.ConditionalExpression:\n    findConstantAndWatchExpressions(ast.test, $filter, astIsPure);\n    findConstantAndWatchExpressions(ast.alternate, $filter, astIsPure);\n    findConstantAndWatchExpressions(ast.consequent, $filter, astIsPure);\n    ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant;\n    ast.toWatch = ast.constant ? [] : [ast];\n    break;\n  case AST.Identifier:\n    ast.constant = false;\n    ast.toWatch = [ast];\n    break;\n  case AST.MemberExpression:\n    findConstantAndWatchExpressions(ast.object, $filter, astIsPure);\n    if (ast.computed) {\n      findConstantAndWatchExpressions(ast.property, $filter, astIsPure);\n    }\n    ast.constant = ast.object.constant && (!ast.computed || ast.property.constant);\n    ast.toWatch = ast.constant ? [] : [ast];\n    break;\n  case AST.CallExpression:\n    isStatelessFilter = ast.filter ? isStateless($filter, ast.callee.name) : false;\n    allConstants = isStatelessFilter;\n    argsToWatch = [];\n    forEach(ast.arguments, function(expr) {\n      findConstantAndWatchExpressions(expr, $filter, astIsPure);\n      allConstants = allConstants && expr.constant;\n      argsToWatch.push.apply(argsToWatch, expr.toWatch);\n    });\n    ast.constant = allConstants;\n    ast.toWatch = isStatelessFilter ? argsToWatch : [ast];\n    break;\n  case AST.AssignmentExpression:\n    findConstantAndWatchExpressions(ast.left, $filter, astIsPure);\n    findConstantAndWatchExpressions(ast.right, $filter, astIsPure);\n    ast.constant = ast.left.constant && ast.right.constant;\n    ast.toWatch = [ast];\n    break;\n  case AST.ArrayExpression:\n    allConstants = true;\n    argsToWatch = [];\n    forEach(ast.elements, function(expr) {\n      findConstantAndWatchExpressions(expr, $filter, astIsPure);\n      allConstants = allConstants && expr.constant;\n      argsToWatch.push.apply(argsToWatch, expr.toWatch);\n    });\n    ast.constant = allConstants;\n    ast.toWatch = argsToWatch;\n    break;\n  case AST.ObjectExpression:\n    allConstants = true;\n    argsToWatch = [];\n    forEach(ast.properties, function(property) {\n      findConstantAndWatchExpressions(property.value, $filter, astIsPure);\n      allConstants = allConstants && property.value.constant;\n      argsToWatch.push.apply(argsToWatch, property.value.toWatch);\n      if (property.computed) {\n        //`{[key]: value}` implicitly does `key.toString()` which may be non-pure\n        findConstantAndWatchExpressions(property.key, $filter, /*parentIsPure=*/false);\n        allConstants = allConstants && property.key.constant;\n        argsToWatch.push.apply(argsToWatch, property.key.toWatch);\n      }\n    });\n    ast.constant = allConstants;\n    ast.toWatch = argsToWatch;\n    break;\n  case AST.ThisExpression:\n    ast.constant = false;\n    ast.toWatch = [];\n    break;\n  case AST.LocalsExpression:\n    ast.constant = false;\n    ast.toWatch = [];\n    break;\n  }\n}\n\nfunction getInputs(body) {\n  if (body.length !== 1) return;\n  var lastExpression = body[0].expression;\n  var candidate = lastExpression.toWatch;\n  if (candidate.length !== 1) return candidate;\n  return candidate[0] !== lastExpression ? candidate : undefined;\n}\n\nfunction isAssignable(ast) {\n  return ast.type === AST.Identifier || ast.type === AST.MemberExpression;\n}\n\nfunction assignableAST(ast) {\n  if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {\n    return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='};\n  }\n}\n\nfunction isLiteral(ast) {\n  return ast.body.length === 0 ||\n      ast.body.length === 1 && (\n      ast.body[0].expression.type === AST.Literal ||\n      ast.body[0].expression.type === AST.ArrayExpression ||\n      ast.body[0].expression.type === AST.ObjectExpression);\n}\n\nfunction isConstant(ast) {\n  return ast.constant;\n}\n\nfunction ASTCompiler($filter) {\n  this.$filter = $filter;\n}\n\nASTCompiler.prototype = {\n  compile: function(ast) {\n    var self = this;\n    this.state = {\n      nextId: 0,\n      filters: {},\n      fn: {vars: [], body: [], own: {}},\n      assign: {vars: [], body: [], own: {}},\n      inputs: []\n    };\n    findConstantAndWatchExpressions(ast, self.$filter);\n    var extra = '';\n    var assignable;\n    this.stage = 'assign';\n    if ((assignable = assignableAST(ast))) {\n      this.state.computing = 'assign';\n      var result = this.nextId();\n      this.recurse(assignable, result);\n      this.return_(result);\n      extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l');\n    }\n    var toWatch = getInputs(ast.body);\n    self.stage = 'inputs';\n    forEach(toWatch, function(watch, key) {\n      var fnKey = 'fn' + key;\n      self.state[fnKey] = {vars: [], body: [], own: {}};\n      self.state.computing = fnKey;\n      var intoId = self.nextId();\n      self.recurse(watch, intoId);\n      self.return_(intoId);\n      self.state.inputs.push({name: fnKey, isPure: watch.isPure});\n      watch.watchId = key;\n    });\n    this.state.computing = 'fn';\n    this.stage = 'main.79caed11';\n    this.recurse(ast);\n    var fnString =\n      // The build and minification steps remove the string \"use strict\" from the code, but this is done using a regex.\n      // This is a workaround for this until we do a better job at only removing the prefix only when we should.\n      '\"' + this.USE + ' ' + this.STRICT + '\";\\n' +\n      this.filterPrefix() +\n      'var fn=' + this.generateFunction('fn', 's,l,a,i') +\n      extra +\n      this.watchFns() +\n      'return fn;';\n\n    // eslint-disable-next-line no-new-func\n    var fn = (new Function('$filter',\n        'getStringValue',\n        'ifDefined',\n        'plus',\n        fnString))(\n          this.$filter,\n          getStringValue,\n          ifDefined,\n          plusFn);\n    this.state = this.stage = undefined;\n    return fn;\n  },\n\n  USE: 'use',\n\n  STRICT: 'strict',\n\n  watchFns: function() {\n    var result = [];\n    var inputs = this.state.inputs;\n    var self = this;\n    forEach(inputs, function(input) {\n      result.push('var ' + input.name + '=' + self.generateFunction(input.name, 's'));\n      if (input.isPure) {\n        result.push(input.name, '.isPure=' + JSON.stringify(input.isPure) + ';');\n      }\n    });\n    if (inputs.length) {\n      result.push('fn.inputs=[' + inputs.map(function(i) { return i.name; }).join(',') + '];');\n    }\n    return result.join('');\n  },\n\n  generateFunction: function(name, params) {\n    return 'function(' + params + '){' +\n        this.varsPrefix(name) +\n        this.body(name) +\n        '};';\n  },\n\n  filterPrefix: function() {\n    var parts = [];\n    var self = this;\n    forEach(this.state.filters, function(id, filter) {\n      parts.push(id + '=$filter(' + self.escape(filter) + ')');\n    });\n    if (parts.length) return 'var ' + parts.join(',') + ';';\n    return '';\n  },\n\n  varsPrefix: function(section) {\n    return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : '';\n  },\n\n  body: function(section) {\n    return this.state[section].body.join('');\n  },\n\n  recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {\n    var left, right, self = this, args, expression, computed;\n    recursionFn = recursionFn || noop;\n    if (!skipWatchIdCheck && isDefined(ast.watchId)) {\n      intoId = intoId || this.nextId();\n      this.if_('i',\n        this.lazyAssign(intoId, this.computedMember('i', ast.watchId)),\n        this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)\n      );\n      return;\n    }\n    switch (ast.type) {\n    case AST.Program:\n      forEach(ast.body, function(expression, pos) {\n        self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; });\n        if (pos !== ast.body.length - 1) {\n          self.current().body.push(right, ';');\n        } else {\n          self.return_(right);\n        }\n      });\n      break;\n    case AST.Literal:\n      expression = this.escape(ast.value);\n      this.assign(intoId, expression);\n      recursionFn(intoId || expression);\n      break;\n    case AST.UnaryExpression:\n      this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; });\n      expression = ast.operator + '(' + this.ifDefined(right, 0) + ')';\n      this.assign(intoId, expression);\n      recursionFn(expression);\n      break;\n    case AST.BinaryExpression:\n      this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; });\n      this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; });\n      if (ast.operator === '+') {\n        expression = this.plus(left, right);\n      } else if (ast.operator === '-') {\n        expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);\n      } else {\n        expression = '(' + left + ')' + ast.operator + '(' + right + ')';\n      }\n      this.assign(intoId, expression);\n      recursionFn(expression);\n      break;\n    case AST.LogicalExpression:\n      intoId = intoId || this.nextId();\n      self.recurse(ast.left, intoId);\n      self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId));\n      recursionFn(intoId);\n      break;\n    case AST.ConditionalExpression:\n      intoId = intoId || this.nextId();\n      self.recurse(ast.test, intoId);\n      self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId));\n      recursionFn(intoId);\n      break;\n    case AST.Identifier:\n      intoId = intoId || this.nextId();\n      if (nameId) {\n        nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s');\n        nameId.computed = false;\n        nameId.name = ast.name;\n      }\n      self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)),\n        function() {\n          self.if_(self.stage === 'inputs' || 's', function() {\n            if (create && create !== 1) {\n              self.if_(\n                self.isNull(self.nonComputedMember('s', ast.name)),\n                self.lazyAssign(self.nonComputedMember('s', ast.name), '{}'));\n            }\n            self.assign(intoId, self.nonComputedMember('s', ast.name));\n          });\n        }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name))\n        );\n      recursionFn(intoId);\n      break;\n    case AST.MemberExpression:\n      left = nameId && (nameId.context = this.nextId()) || this.nextId();\n      intoId = intoId || this.nextId();\n      self.recurse(ast.object, left, undefined, function() {\n        self.if_(self.notNull(left), function() {\n          if (ast.computed) {\n            right = self.nextId();\n            self.recurse(ast.property, right);\n            self.getStringValue(right);\n            if (create && create !== 1) {\n              self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}'));\n            }\n            expression = self.computedMember(left, right);\n            self.assign(intoId, expression);\n            if (nameId) {\n              nameId.computed = true;\n              nameId.name = right;\n            }\n          } else {\n            if (create && create !== 1) {\n              self.if_(self.isNull(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}'));\n            }\n            expression = self.nonComputedMember(left, ast.property.name);\n            self.assign(intoId, expression);\n            if (nameId) {\n              nameId.computed = false;\n              nameId.name = ast.property.name;\n            }\n          }\n        }, function() {\n          self.assign(intoId, 'undefined');\n        });\n        recursionFn(intoId);\n      }, !!create);\n      break;\n    case AST.CallExpression:\n      intoId = intoId || this.nextId();\n      if (ast.filter) {\n        right = self.filter(ast.callee.name);\n        args = [];\n        forEach(ast.arguments, function(expr) {\n          var argument = self.nextId();\n          self.recurse(expr, argument);\n          args.push(argument);\n        });\n        expression = right + '(' + args.join(',') + ')';\n        self.assign(intoId, expression);\n        recursionFn(intoId);\n      } else {\n        right = self.nextId();\n        left = {};\n        args = [];\n        self.recurse(ast.callee, right, left, function() {\n          self.if_(self.notNull(right), function() {\n            forEach(ast.arguments, function(expr) {\n              self.recurse(expr, ast.constant ? undefined : self.nextId(), undefined, function(argument) {\n                args.push(argument);\n              });\n            });\n            if (left.name) {\n              expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')';\n            } else {\n              expression = right + '(' + args.join(',') + ')';\n            }\n            self.assign(intoId, expression);\n          }, function() {\n            self.assign(intoId, 'undefined');\n          });\n          recursionFn(intoId);\n        });\n      }\n      break;\n    case AST.AssignmentExpression:\n      right = this.nextId();\n      left = {};\n      this.recurse(ast.left, undefined, left, function() {\n        self.if_(self.notNull(left.context), function() {\n          self.recurse(ast.right, right);\n          expression = self.member(left.context, left.name, left.computed) + ast.operator + right;\n          self.assign(intoId, expression);\n          recursionFn(intoId || expression);\n        });\n      }, 1);\n      break;\n    case AST.ArrayExpression:\n      args = [];\n      forEach(ast.elements, function(expr) {\n        self.recurse(expr, ast.constant ? undefined : self.nextId(), undefined, function(argument) {\n          args.push(argument);\n        });\n      });\n      expression = '[' + args.join(',') + ']';\n      this.assign(intoId, expression);\n      recursionFn(intoId || expression);\n      break;\n    case AST.ObjectExpression:\n      args = [];\n      computed = false;\n      forEach(ast.properties, function(property) {\n        if (property.computed) {\n          computed = true;\n        }\n      });\n      if (computed) {\n        intoId = intoId || this.nextId();\n        this.assign(intoId, '{}');\n        forEach(ast.properties, function(property) {\n          if (property.computed) {\n            left = self.nextId();\n            self.recurse(property.key, left);\n          } else {\n            left = property.key.type === AST.Identifier ?\n                       property.key.name :\n                       ('' + property.key.value);\n          }\n          right = self.nextId();\n          self.recurse(property.value, right);\n          self.assign(self.member(intoId, left, property.computed), right);\n        });\n      } else {\n        forEach(ast.properties, function(property) {\n          self.recurse(property.value, ast.constant ? undefined : self.nextId(), undefined, function(expr) {\n            args.push(self.escape(\n                property.key.type === AST.Identifier ? property.key.name :\n                  ('' + property.key.value)) +\n                ':' + expr);\n          });\n        });\n        expression = '{' + args.join(',') + '}';\n        this.assign(intoId, expression);\n      }\n      recursionFn(intoId || expression);\n      break;\n    case AST.ThisExpression:\n      this.assign(intoId, 's');\n      recursionFn(intoId || 's');\n      break;\n    case AST.LocalsExpression:\n      this.assign(intoId, 'l');\n      recursionFn(intoId || 'l');\n      break;\n    case AST.NGValueParameter:\n      this.assign(intoId, 'v');\n      recursionFn(intoId || 'v');\n      break;\n    }\n  },\n\n  getHasOwnProperty: function(element, property) {\n    var key = element + '.' + property;\n    var own = this.current().own;\n    if (!own.hasOwnProperty(key)) {\n      own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')');\n    }\n    return own[key];\n  },\n\n  assign: function(id, value) {\n    if (!id) return;\n    this.current().body.push(id, '=', value, ';');\n    return id;\n  },\n\n  filter: function(filterName) {\n    if (!this.state.filters.hasOwnProperty(filterName)) {\n      this.state.filters[filterName] = this.nextId(true);\n    }\n    return this.state.filters[filterName];\n  },\n\n  ifDefined: function(id, defaultValue) {\n    return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')';\n  },\n\n  plus: function(left, right) {\n    return 'plus(' + left + ',' + right + ')';\n  },\n\n  return_: function(id) {\n    this.current().body.push('return ', id, ';');\n  },\n\n  if_: function(test, alternate, consequent) {\n    if (test === true) {\n      alternate();\n    } else {\n      var body = this.current().body;\n      body.push('if(', test, '){');\n      alternate();\n      body.push('}');\n      if (consequent) {\n        body.push('else{');\n        consequent();\n        body.push('}');\n      }\n    }\n  },\n\n  not: function(expression) {\n    return '!(' + expression + ')';\n  },\n\n  isNull: function(expression) {\n    return expression + '==null';\n  },\n\n  notNull: function(expression) {\n    return expression + '!=null';\n  },\n\n  nonComputedMember: function(left, right) {\n    var SAFE_IDENTIFIER = /^[$_a-zA-Z][$_a-zA-Z0-9]*$/;\n    var UNSAFE_CHARACTERS = /[^$_a-zA-Z0-9]/g;\n    if (SAFE_IDENTIFIER.test(right)) {\n      return left + '.' + right;\n    } else {\n      return left  + '[\"' + right.replace(UNSAFE_CHARACTERS, this.stringEscapeFn) + '\"]';\n    }\n  },\n\n  computedMember: function(left, right) {\n    return left + '[' + right + ']';\n  },\n\n  member: function(left, right, computed) {\n    if (computed) return this.computedMember(left, right);\n    return this.nonComputedMember(left, right);\n  },\n\n  getStringValue: function(item) {\n    this.assign(item, 'getStringValue(' + item + ')');\n  },\n\n  lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {\n    var self = this;\n    return function() {\n      self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);\n    };\n  },\n\n  lazyAssign: function(id, value) {\n    var self = this;\n    return function() {\n      self.assign(id, value);\n    };\n  },\n\n  stringEscapeRegex: /[^ a-zA-Z0-9]/g,\n\n  stringEscapeFn: function(c) {\n    return '\\\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);\n  },\n\n  escape: function(value) {\n    if (isString(value)) return '\\'' + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + '\\'';\n    if (isNumber(value)) return value.toString();\n    if (value === true) return 'true';\n    if (value === false) return 'false';\n    if (value === null) return 'null';\n    if (typeof value === 'undefined') return 'undefined';\n\n    throw $parseMinErr('esc', 'IMPOSSIBLE');\n  },\n\n  nextId: function(skip, init) {\n    var id = 'v' + (this.state.nextId++);\n    if (!skip) {\n      this.current().vars.push(id + (init ? '=' + init : ''));\n    }\n    return id;\n  },\n\n  current: function() {\n    return this.state[this.state.computing];\n  }\n};\n\n\nfunction ASTInterpreter($filter) {\n  this.$filter = $filter;\n}\n\nASTInterpreter.prototype = {\n  compile: function(ast) {\n    var self = this;\n    findConstantAndWatchExpressions(ast, self.$filter);\n    var assignable;\n    var assign;\n    if ((assignable = assignableAST(ast))) {\n      assign = this.recurse(assignable);\n    }\n    var toWatch = getInputs(ast.body);\n    var inputs;\n    if (toWatch) {\n      inputs = [];\n      forEach(toWatch, function(watch, key) {\n        var input = self.recurse(watch);\n        input.isPure = watch.isPure;\n        watch.input = input;\n        inputs.push(input);\n        watch.watchId = key;\n      });\n    }\n    var expressions = [];\n    forEach(ast.body, function(expression) {\n      expressions.push(self.recurse(expression.expression));\n    });\n    var fn = ast.body.length === 0 ? noop :\n             ast.body.length === 1 ? expressions[0] :\n             function(scope, locals) {\n               var lastValue;\n               forEach(expressions, function(exp) {\n                 lastValue = exp(scope, locals);\n               });\n               return lastValue;\n             };\n    if (assign) {\n      fn.assign = function(scope, value, locals) {\n        return assign(scope, locals, value);\n      };\n    }\n    if (inputs) {\n      fn.inputs = inputs;\n    }\n    return fn;\n  },\n\n  recurse: function(ast, context, create) {\n    var left, right, self = this, args;\n    if (ast.input) {\n      return this.inputs(ast.input, ast.watchId);\n    }\n    switch (ast.type) {\n    case AST.Literal:\n      return this.value(ast.value, context);\n    case AST.UnaryExpression:\n      right = this.recurse(ast.argument);\n      return this['unary' + ast.operator](right, context);\n    case AST.BinaryExpression:\n      left = this.recurse(ast.left);\n      right = this.recurse(ast.right);\n      return this['binary' + ast.operator](left, right, context);\n    case AST.LogicalExpression:\n      left = this.recurse(ast.left);\n      right = this.recurse(ast.right);\n      return this['binary' + ast.operator](left, right, context);\n    case AST.ConditionalExpression:\n      return this['ternary?:'](\n        this.recurse(ast.test),\n        this.recurse(ast.alternate),\n        this.recurse(ast.consequent),\n        context\n      );\n    case AST.Identifier:\n      return self.identifier(ast.name, context, create);\n    case AST.MemberExpression:\n      left = this.recurse(ast.object, false, !!create);\n      if (!ast.computed) {\n        right = ast.property.name;\n      }\n      if (ast.computed) right = this.recurse(ast.property);\n      return ast.computed ?\n        this.computedMember(left, right, context, create) :\n        this.nonComputedMember(left, right, context, create);\n    case AST.CallExpression:\n      args = [];\n      forEach(ast.arguments, function(expr) {\n        args.push(self.recurse(expr));\n      });\n      if (ast.filter) right = this.$filter(ast.callee.name);\n      if (!ast.filter) right = this.recurse(ast.callee, true);\n      return ast.filter ?\n        function(scope, locals, assign, inputs) {\n          var values = [];\n          for (var i = 0; i < args.length; ++i) {\n            values.push(args[i](scope, locals, assign, inputs));\n          }\n          var value = right.apply(undefined, values, inputs);\n          return context ? {context: undefined, name: undefined, value: value} : value;\n        } :\n        function(scope, locals, assign, inputs) {\n          var rhs = right(scope, locals, assign, inputs);\n          var value;\n          if (rhs.value != null) {\n            var values = [];\n            for (var i = 0; i < args.length; ++i) {\n              values.push(args[i](scope, locals, assign, inputs));\n            }\n            value = rhs.value.apply(rhs.context, values);\n          }\n          return context ? {value: value} : value;\n        };\n    case AST.AssignmentExpression:\n      left = this.recurse(ast.left, true, 1);\n      right = this.recurse(ast.right);\n      return function(scope, locals, assign, inputs) {\n        var lhs = left(scope, locals, assign, inputs);\n        var rhs = right(scope, locals, assign, inputs);\n        lhs.context[lhs.name] = rhs;\n        return context ? {value: rhs} : rhs;\n      };\n    case AST.ArrayExpression:\n      args = [];\n      forEach(ast.elements, function(expr) {\n        args.push(self.recurse(expr));\n      });\n      return function(scope, locals, assign, inputs) {\n        var value = [];\n        for (var i = 0; i < args.length; ++i) {\n          value.push(args[i](scope, locals, assign, inputs));\n        }\n        return context ? {value: value} : value;\n      };\n    case AST.ObjectExpression:\n      args = [];\n      forEach(ast.properties, function(property) {\n        if (property.computed) {\n          args.push({key: self.recurse(property.key),\n                     computed: true,\n                     value: self.recurse(property.value)\n          });\n        } else {\n          args.push({key: property.key.type === AST.Identifier ?\n                          property.key.name :\n                          ('' + property.key.value),\n                     computed: false,\n                     value: self.recurse(property.value)\n          });\n        }\n      });\n      return function(scope, locals, assign, inputs) {\n        var value = {};\n        for (var i = 0; i < args.length; ++i) {\n          if (args[i].computed) {\n            value[args[i].key(scope, locals, assign, inputs)] = args[i].value(scope, locals, assign, inputs);\n          } else {\n            value[args[i].key] = args[i].value(scope, locals, assign, inputs);\n          }\n        }\n        return context ? {value: value} : value;\n      };\n    case AST.ThisExpression:\n      return function(scope) {\n        return context ? {value: scope} : scope;\n      };\n    case AST.LocalsExpression:\n      return function(scope, locals) {\n        return context ? {value: locals} : locals;\n      };\n    case AST.NGValueParameter:\n      return function(scope, locals, assign) {\n        return context ? {value: assign} : assign;\n      };\n    }\n  },\n\n  'unary+': function(argument, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = argument(scope, locals, assign, inputs);\n      if (isDefined(arg)) {\n        arg = +arg;\n      } else {\n        arg = 0;\n      }\n      return context ? {value: arg} : arg;\n    };\n  },\n  'unary-': function(argument, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = argument(scope, locals, assign, inputs);\n      if (isDefined(arg)) {\n        arg = -arg;\n      } else {\n        arg = -0;\n      }\n      return context ? {value: arg} : arg;\n    };\n  },\n  'unary!': function(argument, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = !argument(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary+': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var lhs = left(scope, locals, assign, inputs);\n      var rhs = right(scope, locals, assign, inputs);\n      var arg = plusFn(lhs, rhs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary-': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var lhs = left(scope, locals, assign, inputs);\n      var rhs = right(scope, locals, assign, inputs);\n      var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary*': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary/': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary%': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary===': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary!==': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary==': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      // eslint-disable-next-line eqeqeq\n      var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary!=': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      // eslint-disable-next-line eqeqeq\n      var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary<': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary>': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary<=': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary>=': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary&&': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'binary||': function(left, right, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  'ternary?:': function(test, alternate, consequent, context) {\n    return function(scope, locals, assign, inputs) {\n      var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs);\n      return context ? {value: arg} : arg;\n    };\n  },\n  value: function(value, context) {\n    return function() { return context ? {context: undefined, name: undefined, value: value} : value; };\n  },\n  identifier: function(name, context, create) {\n    return function(scope, locals, assign, inputs) {\n      var base = locals && (name in locals) ? locals : scope;\n      if (create && create !== 1 && base && base[name] == null) {\n        base[name] = {};\n      }\n      var value = base ? base[name] : undefined;\n      if (context) {\n        return {context: base, name: name, value: value};\n      } else {\n        return value;\n      }\n    };\n  },\n  computedMember: function(left, right, context, create) {\n    return function(scope, locals, assign, inputs) {\n      var lhs = left(scope, locals, assign, inputs);\n      var rhs;\n      var value;\n      if (lhs != null) {\n        rhs = right(scope, locals, assign, inputs);\n        rhs = getStringValue(rhs);\n        if (create && create !== 1) {\n          if (lhs && !(lhs[rhs])) {\n            lhs[rhs] = {};\n          }\n        }\n        value = lhs[rhs];\n      }\n      if (context) {\n        return {context: lhs, name: rhs, value: value};\n      } else {\n        return value;\n      }\n    };\n  },\n  nonComputedMember: function(left, right, context, create) {\n    return function(scope, locals, assign, inputs) {\n      var lhs = left(scope, locals, assign, inputs);\n      if (create && create !== 1) {\n        if (lhs && lhs[right] == null) {\n          lhs[right] = {};\n        }\n      }\n      var value = lhs != null ? lhs[right] : undefined;\n      if (context) {\n        return {context: lhs, name: right, value: value};\n      } else {\n        return value;\n      }\n    };\n  },\n  inputs: function(input, watchId) {\n    return function(scope, value, locals, inputs) {\n      if (inputs) return inputs[watchId];\n      return input(scope, value, locals);\n    };\n  }\n};\n\n/**\n * @constructor\n */\nfunction Parser(lexer, $filter, options) {\n  this.ast = new AST(lexer, options);\n  this.astCompiler = options.csp ? new ASTInterpreter($filter) :\n                                   new ASTCompiler($filter);\n}\n\nParser.prototype = {\n  constructor: Parser,\n\n  parse: function(text) {\n    var ast = this.ast.ast(text);\n    var fn = this.astCompiler.compile(ast);\n    fn.literal = isLiteral(ast);\n    fn.constant = isConstant(ast);\n    return fn;\n  }\n};\n\nfunction getValueOf(value) {\n  return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n *   var getter = $parse('user.name');\n *   var setter = getter.assign;\n *   var context = {user:{name:'angular'}};\n *   var locals = {user:{name:'local'}};\n *\n *   expect(getter(context)).toEqual('angular');\n *   setter(context, 'newValue');\n *   expect(context.user.name).toEqual('newValue');\n *   expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n *    * `context` – `{object}` – an object against which any expressions embedded in the strings\n *      are evaluated against (typically a scope object).\n *    * `locals` – `{object=}` – local variables context object, useful for overriding values in\n *      `context`.\n *\n *    The returned function also has the following properties:\n *      * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n *        literal.\n *      * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n *        constant literals.\n *      * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n *        set to a function to change its value on the given context.\n *\n */\n\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @this\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n *  service.\n */\nfunction $ParseProvider() {\n  var cache = createMap();\n  var literals = {\n    'true': true,\n    'false': false,\n    'null': null,\n    'undefined': undefined\n  };\n  var identStart, identContinue;\n\n  /**\n   * @ngdoc method\n   * @name $parseProvider#addLiteral\n   * @description\n   *\n   * Configure $parse service to add literal values that will be present as literal at expressions.\n   *\n   * @param {string} literalName Token for the literal value. The literal name value must be a valid literal name.\n   * @param {*} literalValue Value for this literal. All literal values must be primitives or `undefined`.\n   *\n   **/\n  this.addLiteral = function(literalName, literalValue) {\n    literals[literalName] = literalValue;\n  };\n\n /**\n  * @ngdoc method\n  * @name $parseProvider#setIdentifierFns\n  *\n  * @description\n  *\n  * Allows defining the set of characters that are allowed in Angular expressions. The function\n  * `identifierStart` will get called to know if a given character is a valid character to be the\n  * first character for an identifier. The function `identifierContinue` will get called to know if\n  * a given character is a valid character to be a follow-up identifier character. The functions\n  * `identifierStart` and `identifierContinue` will receive as arguments the single character to be\n  * identifier and the character code point. These arguments will be `string` and `numeric`. Keep in\n  * mind that the `string` parameter can be two characters long depending on the character\n  * representation. It is expected for the function to return `true` or `false`, whether that\n  * character is allowed or not.\n  *\n  * Since this function will be called extensively, keep the implementation of these functions fast,\n  * as the performance of these functions have a direct impact on the expressions parsing speed.\n  *\n  * @param {function=} identifierStart The function that will decide whether the given character is\n  *   a valid identifier start character.\n  * @param {function=} identifierContinue The function that will decide whether the given character is\n  *   a valid identifier continue character.\n  */\n  this.setIdentifierFns = function(identifierStart, identifierContinue) {\n    identStart = identifierStart;\n    identContinue = identifierContinue;\n    return this;\n  };\n\n  this.$get = ['$filter', function($filter) {\n    var noUnsafeEval = csp().noUnsafeEval;\n    var $parseOptions = {\n          csp: noUnsafeEval,\n          literals: copy(literals),\n          isIdentifierStart: isFunction(identStart) && identStart,\n          isIdentifierContinue: isFunction(identContinue) && identContinue\n        };\n    return $parse;\n\n    function $parse(exp, interceptorFn) {\n      var parsedExpression, oneTime, cacheKey;\n\n      switch (typeof exp) {\n        case 'string':\n          exp = exp.trim();\n          cacheKey = exp;\n\n          parsedExpression = cache[cacheKey];\n\n          if (!parsedExpression) {\n            if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {\n              oneTime = true;\n              exp = exp.substring(2);\n            }\n            var lexer = new Lexer($parseOptions);\n            var parser = new Parser(lexer, $filter, $parseOptions);\n            parsedExpression = parser.parse(exp);\n            if (parsedExpression.constant) {\n              parsedExpression.$$watchDelegate = constantWatchDelegate;\n            } else if (oneTime) {\n              parsedExpression.$$watchDelegate = parsedExpression.literal ?\n                  oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;\n            } else if (parsedExpression.inputs) {\n              parsedExpression.$$watchDelegate = inputsWatchDelegate;\n            }\n            cache[cacheKey] = parsedExpression;\n          }\n          return addInterceptor(parsedExpression, interceptorFn);\n\n        case 'function':\n          return addInterceptor(exp, interceptorFn);\n\n        default:\n          return addInterceptor(noop, interceptorFn);\n      }\n    }\n\n    function expressionInputDirtyCheck(newValue, oldValueOfValue, compareObjectIdentity) {\n\n      if (newValue == null || oldValueOfValue == null) { // null/undefined\n        return newValue === oldValueOfValue;\n      }\n\n      if (typeof newValue === 'object') {\n\n        // attempt to convert the value to a primitive type\n        // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can\n        //             be cheaply dirty-checked\n        newValue = getValueOf(newValue);\n\n        if (typeof newValue === 'object' && !compareObjectIdentity) {\n          // objects/arrays are not supported - deep-watching them would be too expensive\n          return false;\n        }\n\n        // fall-through to the primitive equality check\n      }\n\n      //Primitive or NaN\n      // eslint-disable-next-line no-self-compare\n      return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue);\n    }\n\n    function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {\n      var inputExpressions = parsedExpression.inputs;\n      var lastResult;\n\n      if (inputExpressions.length === 1) {\n        var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails\n        inputExpressions = inputExpressions[0];\n        return scope.$watch(function expressionInputWatch(scope) {\n          var newInputValue = inputExpressions(scope);\n          if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf, inputExpressions.isPure)) {\n            lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]);\n            oldInputValueOf = newInputValue && getValueOf(newInputValue);\n          }\n          return lastResult;\n        }, listener, objectEquality, prettyPrintExpression);\n      }\n\n      var oldInputValueOfValues = [];\n      var oldInputValues = [];\n      for (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n        oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails\n        oldInputValues[i] = null;\n      }\n\n      return scope.$watch(function expressionInputsWatch(scope) {\n        var changed = false;\n\n        for (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n          var newInputValue = inputExpressions[i](scope);\n          if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i], inputExpressions[i].isPure))) {\n            oldInputValues[i] = newInputValue;\n            oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue);\n          }\n        }\n\n        if (changed) {\n          lastResult = parsedExpression(scope, undefined, undefined, oldInputValues);\n        }\n\n        return lastResult;\n      }, listener, objectEquality, prettyPrintExpression);\n    }\n\n    function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {\n      var unwatch, lastValue;\n      if (parsedExpression.inputs) {\n        unwatch = inputsWatchDelegate(scope, oneTimeListener, objectEquality, parsedExpression, prettyPrintExpression);\n      } else {\n        unwatch = scope.$watch(oneTimeWatch, oneTimeListener, objectEquality);\n      }\n      return unwatch;\n\n      function oneTimeWatch(scope) {\n        return parsedExpression(scope);\n      }\n      function oneTimeListener(value, old, scope) {\n        lastValue = value;\n        if (isFunction(listener)) {\n          listener(value, old, scope);\n        }\n        if (isDefined(value)) {\n          scope.$$postDigest(function() {\n            if (isDefined(lastValue)) {\n              unwatch();\n            }\n          });\n        }\n      }\n    }\n\n    function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) {\n      var unwatch, lastValue;\n      unwatch = scope.$watch(function oneTimeWatch(scope) {\n        return parsedExpression(scope);\n      }, function oneTimeListener(value, old, scope) {\n        lastValue = value;\n        if (isFunction(listener)) {\n          listener(value, old, scope);\n        }\n        if (isAllDefined(value)) {\n          scope.$$postDigest(function() {\n            if (isAllDefined(lastValue)) unwatch();\n          });\n        }\n      }, objectEquality);\n\n      return unwatch;\n\n      function isAllDefined(value) {\n        var allDefined = true;\n        forEach(value, function(val) {\n          if (!isDefined(val)) allDefined = false;\n        });\n        return allDefined;\n      }\n    }\n\n    function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {\n      var unwatch = scope.$watch(function constantWatch(scope) {\n        unwatch();\n        return parsedExpression(scope);\n      }, listener, objectEquality);\n      return unwatch;\n    }\n\n    function addInterceptor(parsedExpression, interceptorFn) {\n      if (!interceptorFn) return parsedExpression;\n      var watchDelegate = parsedExpression.$$watchDelegate;\n      var useInputs = false;\n\n      var regularWatch =\n          watchDelegate !== oneTimeLiteralWatchDelegate &&\n          watchDelegate !== oneTimeWatchDelegate;\n\n      var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) {\n        var value = useInputs && inputs ? inputs[0] : parsedExpression(scope, locals, assign, inputs);\n        return interceptorFn(value, scope, locals);\n      } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) {\n        var value = parsedExpression(scope, locals, assign, inputs);\n        var result = interceptorFn(value, scope, locals);\n        // we only return the interceptor's result if the\n        // initial value is defined (for bind-once)\n        return isDefined(value) ? result : value;\n      };\n\n      // Propagate $$watchDelegates other then inputsWatchDelegate\n      useInputs = !parsedExpression.inputs;\n      if (watchDelegate && watchDelegate !== inputsWatchDelegate) {\n        fn.$$watchDelegate = watchDelegate;\n        fn.inputs = parsedExpression.inputs;\n      } else if (!interceptorFn.$stateful) {\n        // Treat interceptor like filters - assume non-stateful by default and use the inputsWatchDelegate\n        fn.$$watchDelegate = inputsWatchDelegate;\n        fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression];\n      }\n\n      if (fn.inputs) {\n        fn.inputs = fn.inputs.map(function(e) {\n              // Remove the isPure flag of inputs when it is not absolute because they are now wrapped in a\n              // potentially non-pure interceptor function.\n              if (e.isPure === PURITY_RELATIVE) {\n                return function depurifier(s) { return e(s); };\n              }\n              return e;\n            });\n      }\n\n      return fn;\n    }\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $q\n * @requires $rootScope\n *\n * @description\n * A service that helps you run functions asynchronously, and use their return values (or exceptions)\n * when they are done processing.\n *\n * This is a [Promises/A+](https://promisesaplus.com/)-compliant implementation of promises/deferred\n * objects inspired by [Kris Kowal's Q](https://github.com/kriskowal/q).\n *\n * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred\n * implementations, and the other which resembles ES6 (ES2015) promises to some degree.\n *\n * # $q constructor\n *\n * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver`\n * function as the first argument. This is similar to the native Promise implementation from ES6,\n * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n *\n * While the constructor-style use is supported, not all of the supporting methods from ES6 promises are\n * available yet.\n *\n * It can be used like so:\n *\n * ```js\n *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`\n *   // are available in the current lexical scope (they could have been injected or passed in).\n *\n *   function asyncGreet(name) {\n *     // perform some asynchronous operation, resolve or reject the promise when appropriate.\n *     return $q(function(resolve, reject) {\n *       setTimeout(function() {\n *         if (okToGreet(name)) {\n *           resolve('Hello, ' + name + '!');\n *         } else {\n *           reject('Greeting ' + name + ' is not allowed.');\n *         }\n *       }, 1000);\n *     });\n *   }\n *\n *   var promise = asyncGreet('Robin Hood');\n *   promise.then(function(greeting) {\n *     alert('Success: ' + greeting);\n *   }, function(reason) {\n *     alert('Failed: ' + reason);\n *   });\n * ```\n *\n * Note: progress/notify callbacks are not currently supported via the ES6-style interface.\n *\n * Note: unlike ES6 behavior, an exception thrown in the constructor function will NOT implicitly reject the promise.\n *\n * However, the more traditional CommonJS-style usage is still available, and documented below.\n *\n * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an\n * interface for interacting with an object that represents the result of an action that is\n * performed asynchronously, and may or may not be finished at any given point in time.\n *\n * From the perspective of dealing with error handling, deferred and promise APIs are to\n * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.\n *\n * ```js\n *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`\n *   // are available in the current lexical scope (they could have been injected or passed in).\n *\n *   function asyncGreet(name) {\n *     var deferred = $q.defer();\n *\n *     setTimeout(function() {\n *       deferred.notify('About to greet ' + name + '.');\n *\n *       if (okToGreet(name)) {\n *         deferred.resolve('Hello, ' + name + '!');\n *       } else {\n *         deferred.reject('Greeting ' + name + ' is not allowed.');\n *       }\n *     }, 1000);\n *\n *     return deferred.promise;\n *   }\n *\n *   var promise = asyncGreet('Robin Hood');\n *   promise.then(function(greeting) {\n *     alert('Success: ' + greeting);\n *   }, function(reason) {\n *     alert('Failed: ' + reason);\n *   }, function(update) {\n *     alert('Got notification: ' + update);\n *   });\n * ```\n *\n * At first it might not be obvious why this extra complexity is worth the trouble. The payoff\n * comes in the way of guarantees that promise and deferred APIs make, see\n * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.\n *\n * Additionally the promise api allows for composition that is very hard to do with the\n * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.\n * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the\n * section on serial or parallel joining of promises.\n *\n * # The Deferred API\n *\n * A new instance of deferred is constructed by calling `$q.defer()`.\n *\n * The purpose of the deferred object is to expose the associated Promise instance as well as APIs\n * that can be used for signaling the successful or unsuccessful completion, as well as the status\n * of the task.\n *\n * **Methods**\n *\n * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection\n *   constructed via `$q.reject`, the promise will be rejected instead.\n * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to\n *   resolving it with a rejection constructed via `$q.reject`.\n * - `notify(value)` - provides updates on the status of the promise's execution. This may be called\n *   multiple times before the promise is either resolved or rejected.\n *\n * **Properties**\n *\n * - promise – `{Promise}` – promise object associated with this deferred.\n *\n *\n * # The Promise API\n *\n * A new promise instance is created when a deferred instance is created and can be retrieved by\n * calling `deferred.promise`.\n *\n * The purpose of the promise object is to allow for interested parties to get access to the result\n * of the deferred task when it completes.\n *\n * **Methods**\n *\n * - `then(successCallback, [errorCallback], [notifyCallback])` – regardless of when the promise was or\n *   will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously\n *   as soon as the result is available. The callbacks are called with a single argument: the result\n *   or rejection reason. Additionally, the notify callback may be called zero or more times to\n *   provide a progress indication, before the promise is resolved or rejected.\n *\n *   This method *returns a new promise* which is resolved or rejected via the return value of the\n *   `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved\n *   with the value which is resolved in that promise using\n *   [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)).\n *   It also notifies via the return value of the `notifyCallback` method. The promise cannot be\n *   resolved or rejected from the notifyCallback method. The errorCallback and notifyCallback\n *   arguments are optional.\n *\n * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`\n *\n * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise,\n *   but to do so without modifying the final value. This is useful to release resources or do some\n *   clean-up that needs to be done whether the promise was rejected or resolved. See the [full\n *   specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for\n *   more information.\n *\n * # Chaining promises\n *\n * Because calling the `then` method of a promise returns a new derived promise, it is easily\n * possible to create a chain of promises:\n *\n * ```js\n *   promiseB = promiseA.then(function(result) {\n *     return result + 1;\n *   });\n *\n *   // promiseB will be resolved immediately after promiseA is resolved and its value\n *   // will be the result of promiseA incremented by 1\n * ```\n *\n * It is possible to create chains of any length and since a promise can be resolved with another\n * promise (which will defer its resolution further), it is possible to pause/defer resolution of\n * the promises at any point in the chain. This makes it possible to implement powerful APIs like\n * $http's response interceptors.\n *\n *\n * # Differences between Kris Kowal's Q and $q\n *\n *  There are two main differences:\n *\n * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation\n *   mechanism in angular, which means faster propagation of resolution or rejection into your\n *   models and avoiding unnecessary browser repaints, which would result in flickering UI.\n * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains\n *   all the important functionality needed for common async tasks.\n *\n * # Testing\n *\n *  ```js\n *    it('should simulate promise', inject(function($q, $rootScope) {\n *      var deferred = $q.defer();\n *      var promise = deferred.promise;\n *      var resolvedValue;\n *\n *      promise.then(function(value) { resolvedValue = value; });\n *      expect(resolvedValue).toBeUndefined();\n *\n *      // Simulate resolving of promise\n *      deferred.resolve(123);\n *      // Note that the 'then' function does not get called synchronously.\n *      // This is because we want the promise API to always be async, whether or not\n *      // it got called synchronously or asynchronously.\n *      expect(resolvedValue).toBeUndefined();\n *\n *      // Propagate promise resolution to 'then' functions using $apply().\n *      $rootScope.$apply();\n *      expect(resolvedValue).toEqual(123);\n *    }));\n *  ```\n *\n * @param {function(function, function)} resolver Function which is responsible for resolving or\n *   rejecting the newly created promise. The first parameter is a function which resolves the\n *   promise, the second parameter is a function which rejects the promise.\n *\n * @returns {Promise} The newly created promise.\n */\n/**\n * @ngdoc provider\n * @name $qProvider\n * @this\n *\n * @description\n */\nfunction $QProvider() {\n  var errorOnUnhandledRejections = true;\n  this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {\n    return qFactory(function(callback) {\n      $rootScope.$evalAsync(callback);\n    }, $exceptionHandler, errorOnUnhandledRejections);\n  }];\n\n  /**\n   * @ngdoc method\n   * @name $qProvider#errorOnUnhandledRejections\n   * @kind function\n   *\n   * @description\n   * Retrieves or overrides whether to generate an error when a rejected promise is not handled.\n   * This feature is enabled by default.\n   *\n   * @param {boolean=} value Whether to generate an error when a rejected promise is not handled.\n   * @returns {boolean|ng.$qProvider} Current value when called without a new value or self for\n   *    chaining otherwise.\n   */\n  this.errorOnUnhandledRejections = function(value) {\n    if (isDefined(value)) {\n      errorOnUnhandledRejections = value;\n      return this;\n    } else {\n      return errorOnUnhandledRejections;\n    }\n  };\n}\n\n/** @this */\nfunction $$QProvider() {\n  var errorOnUnhandledRejections = true;\n  this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) {\n    return qFactory(function(callback) {\n      $browser.defer(callback);\n    }, $exceptionHandler, errorOnUnhandledRejections);\n  }];\n\n  this.errorOnUnhandledRejections = function(value) {\n    if (isDefined(value)) {\n      errorOnUnhandledRejections = value;\n      return this;\n    } else {\n      return errorOnUnhandledRejections;\n    }\n  };\n}\n\n/**\n * Constructs a promise manager.\n *\n * @param {function(function)} nextTick Function for executing functions in the next turn.\n * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for\n *     debugging purposes.\n * @param {boolean=} errorOnUnhandledRejections Whether an error should be generated on unhandled\n *     promises rejections.\n * @returns {object} Promise manager.\n */\nfunction qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {\n  var $qMinErr = minErr('$q', TypeError);\n  var queueSize = 0;\n  var checkQueue = [];\n\n  /**\n   * @ngdoc method\n   * @name ng.$q#defer\n   * @kind function\n   *\n   * @description\n   * Creates a `Deferred` object which represents a task which will finish in the future.\n   *\n   * @returns {Deferred} Returns a new instance of deferred.\n   */\n  function defer() {\n    return new Deferred();\n  }\n\n  function Deferred() {\n    var promise = this.promise = new Promise();\n    //Non prototype methods necessary to support unbound execution :/\n    this.resolve = function(val) { resolvePromise(promise, val); };\n    this.reject = function(reason) { rejectPromise(promise, reason); };\n    this.notify = function(progress) { notifyPromise(promise, progress); };\n  }\n\n\n  function Promise() {\n    this.$$state = { status: 0 };\n  }\n\n  extend(Promise.prototype, {\n    then: function(onFulfilled, onRejected, progressBack) {\n      if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) {\n        return this;\n      }\n      var result = new Promise();\n\n      this.$$state.pending = this.$$state.pending || [];\n      this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);\n      if (this.$$state.status > 0) scheduleProcessQueue(this.$$state);\n\n      return result;\n    },\n\n    'catch': function(callback) {\n      return this.then(null, callback);\n    },\n\n    'finally': function(callback, progressBack) {\n      return this.then(function(value) {\n        return handleCallback(value, resolve, callback);\n      }, function(error) {\n        return handleCallback(error, reject, callback);\n      }, progressBack);\n    }\n  });\n\n  function processQueue(state) {\n    var fn, promise, pending;\n\n    pending = state.pending;\n    state.processScheduled = false;\n    state.pending = undefined;\n    try {\n      for (var i = 0, ii = pending.length; i < ii; ++i) {\n        markQStateExceptionHandled(state);\n        promise = pending[i][0];\n        fn = pending[i][state.status];\n        try {\n          if (isFunction(fn)) {\n            resolvePromise(promise, fn(state.value));\n          } else if (state.status === 1) {\n            resolvePromise(promise, state.value);\n          } else {\n            rejectPromise(promise, state.value);\n          }\n        } catch (e) {\n          rejectPromise(promise, e);\n        }\n      }\n    } finally {\n      --queueSize;\n      if (errorOnUnhandledRejections && queueSize === 0) {\n        nextTick(processChecks);\n      }\n    }\n  }\n\n  function processChecks() {\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (!queueSize && checkQueue.length) {\n      var toCheck = checkQueue.shift();\n      if (!isStateExceptionHandled(toCheck)) {\n        markQStateExceptionHandled(toCheck);\n        var errorMessage = 'Possibly unhandled rejection: ' + toDebugString(toCheck.value);\n        if (isError(toCheck.value)) {\n          exceptionHandler(toCheck.value, errorMessage);\n        } else {\n          exceptionHandler(errorMessage);\n        }\n      }\n    }\n  }\n\n  function scheduleProcessQueue(state) {\n    if (errorOnUnhandledRejections && !state.pending && state.status === 2 && !isStateExceptionHandled(state)) {\n      if (queueSize === 0 && checkQueue.length === 0) {\n        nextTick(processChecks);\n      }\n      checkQueue.push(state);\n    }\n    if (state.processScheduled || !state.pending) return;\n    state.processScheduled = true;\n    ++queueSize;\n    nextTick(function() { processQueue(state); });\n  }\n\n  function resolvePromise(promise, val) {\n    if (promise.$$state.status) return;\n    if (val === promise) {\n      $$reject(promise, $qMinErr(\n        'qcycle',\n        'Expected promise to be resolved with value other than itself \\'{0}\\'',\n        val));\n    } else {\n      $$resolve(promise, val);\n    }\n\n  }\n\n  function $$resolve(promise, val) {\n    var then;\n    var done = false;\n    try {\n      if (isObject(val) || isFunction(val)) then = val.then;\n      if (isFunction(then)) {\n        promise.$$state.status = -1;\n        then.call(val, doResolve, doReject, doNotify);\n      } else {\n        promise.$$state.value = val;\n        promise.$$state.status = 1;\n        scheduleProcessQueue(promise.$$state);\n      }\n    } catch (e) {\n      doReject(e);\n    }\n\n    function doResolve(val) {\n      if (done) return;\n      done = true;\n      $$resolve(promise, val);\n    }\n    function doReject(val) {\n      if (done) return;\n      done = true;\n      $$reject(promise, val);\n    }\n    function doNotify(progress) {\n      notifyPromise(promise, progress);\n    }\n  }\n\n  function rejectPromise(promise, reason) {\n    if (promise.$$state.status) return;\n    $$reject(promise, reason);\n  }\n\n  function $$reject(promise, reason) {\n    promise.$$state.value = reason;\n    promise.$$state.status = 2;\n    scheduleProcessQueue(promise.$$state);\n  }\n\n  function notifyPromise(promise, progress) {\n    var callbacks = promise.$$state.pending;\n\n    if ((promise.$$state.status <= 0) && callbacks && callbacks.length) {\n      nextTick(function() {\n        var callback, result;\n        for (var i = 0, ii = callbacks.length; i < ii; i++) {\n          result = callbacks[i][0];\n          callback = callbacks[i][3];\n          try {\n            notifyPromise(result, isFunction(callback) ? callback(progress) : progress);\n          } catch (e) {\n            exceptionHandler(e);\n          }\n        }\n      });\n    }\n  }\n\n  /**\n   * @ngdoc method\n   * @name $q#reject\n   * @kind function\n   *\n   * @description\n   * Creates a promise that is resolved as rejected with the specified `reason`. This api should be\n   * used to forward rejection in a chain of promises. If you are dealing with the last promise in\n   * a promise chain, you don't need to worry about it.\n   *\n   * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of\n   * `reject` as the `throw` keyword in JavaScript. This also means that if you \"catch\" an error via\n   * a promise error callback and you want to forward the error to the promise derived from the\n   * current promise, you have to \"rethrow\" the error by returning a rejection constructed via\n   * `reject`.\n   *\n   * ```js\n   *   promiseB = promiseA.then(function(result) {\n   *     // success: do something and resolve promiseB\n   *     //          with the old or a new result\n   *     return result;\n   *   }, function(reason) {\n   *     // error: handle the error if possible and\n   *     //        resolve promiseB with newPromiseOrValue,\n   *     //        otherwise forward the rejection to promiseB\n   *     if (canHandle(reason)) {\n   *      // handle the error and recover\n   *      return newPromiseOrValue;\n   *     }\n   *     return $q.reject(reason);\n   *   });\n   * ```\n   *\n   * @param {*} reason Constant, message, exception or an object representing the rejection reason.\n   * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.\n   */\n  function reject(reason) {\n    var result = new Promise();\n    rejectPromise(result, reason);\n    return result;\n  }\n\n  function handleCallback(value, resolver, callback) {\n    var callbackOutput = null;\n    try {\n      if (isFunction(callback)) callbackOutput = callback();\n    } catch (e) {\n      return reject(e);\n    }\n    if (isPromiseLike(callbackOutput)) {\n      return callbackOutput.then(function() {\n        return resolver(value);\n      }, reject);\n    } else {\n      return resolver(value);\n    }\n  }\n\n  /**\n   * @ngdoc method\n   * @name $q#when\n   * @kind function\n   *\n   * @description\n   * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.\n   * This is useful when you are dealing with an object that might or might not be a promise, or if\n   * the promise comes from a source that can't be trusted.\n   *\n   * @param {*} value Value or a promise\n   * @param {Function=} successCallback\n   * @param {Function=} errorCallback\n   * @param {Function=} progressCallback\n   * @returns {Promise} Returns a promise of the passed value or promise\n   */\n\n\n  function when(value, callback, errback, progressBack) {\n    var result = new Promise();\n    resolvePromise(result, value);\n    return result.then(callback, errback, progressBack);\n  }\n\n  /**\n   * @ngdoc method\n   * @name $q#resolve\n   * @kind function\n   *\n   * @description\n   * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6.\n   *\n   * @param {*} value Value or a promise\n   * @param {Function=} successCallback\n   * @param {Function=} errorCallback\n   * @param {Function=} progressCallback\n   * @returns {Promise} Returns a promise of the passed value or promise\n   */\n  var resolve = when;\n\n  /**\n   * @ngdoc method\n   * @name $q#all\n   * @kind function\n   *\n   * @description\n   * Combines multiple promises into a single promise that is resolved when all of the input\n   * promises are resolved.\n   *\n   * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.\n   * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,\n   *   each value corresponding to the promise at the same index/key in the `promises` array/hash.\n   *   If any of the promises is resolved with a rejection, this resulting promise will be rejected\n   *   with the same rejection value.\n   */\n\n  function all(promises) {\n    var result = new Promise(),\n        counter = 0,\n        results = isArray(promises) ? [] : {};\n\n    forEach(promises, function(promise, key) {\n      counter++;\n      when(promise).then(function(value) {\n        results[key] = value;\n        if (!(--counter)) resolvePromise(result, results);\n      }, function(reason) {\n        rejectPromise(result, reason);\n      });\n    });\n\n    if (counter === 0) {\n      resolvePromise(result, results);\n    }\n\n    return result;\n  }\n\n  /**\n   * @ngdoc method\n   * @name $q#race\n   * @kind function\n   *\n   * @description\n   * Returns a promise that resolves or rejects as soon as one of those promises\n   * resolves or rejects, with the value or reason from that promise.\n   *\n   * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.\n   * @returns {Promise} a promise that resolves or rejects as soon as one of the `promises`\n   * resolves or rejects, with the value or reason from that promise.\n   */\n\n  function race(promises) {\n    var deferred = defer();\n\n    forEach(promises, function(promise) {\n      when(promise).then(deferred.resolve, deferred.reject);\n    });\n\n    return deferred.promise;\n  }\n\n  function $Q(resolver) {\n    if (!isFunction(resolver)) {\n      throw $qMinErr('norslvr', 'Expected resolverFn, got \\'{0}\\'', resolver);\n    }\n\n    var promise = new Promise();\n\n    function resolveFn(value) {\n      resolvePromise(promise, value);\n    }\n\n    function rejectFn(reason) {\n      rejectPromise(promise, reason);\n    }\n\n    resolver(resolveFn, rejectFn);\n\n    return promise;\n  }\n\n  // Let's make the instanceof operator work for promises, so that\n  // `new $q(fn) instanceof $q` would evaluate to true.\n  $Q.prototype = Promise.prototype;\n\n  $Q.defer = defer;\n  $Q.reject = reject;\n  $Q.when = when;\n  $Q.resolve = resolve;\n  $Q.all = all;\n  $Q.race = race;\n\n  return $Q;\n}\n\nfunction isStateExceptionHandled(state) {\n  return !!state.pur;\n}\nfunction markQStateExceptionHandled(state) {\n  state.pur = true;\n}\nfunction markQExceptionHandled(q) {\n  markQStateExceptionHandled(q.$$state);\n}\n\n/** @this */\nfunction $$RAFProvider() { //rAF\n  this.$get = ['$window', '$timeout', function($window, $timeout) {\n    var requestAnimationFrame = $window.requestAnimationFrame ||\n                                $window.webkitRequestAnimationFrame;\n\n    var cancelAnimationFrame = $window.cancelAnimationFrame ||\n                               $window.webkitCancelAnimationFrame ||\n                               $window.webkitCancelRequestAnimationFrame;\n\n    var rafSupported = !!requestAnimationFrame;\n    var raf = rafSupported\n      ? function(fn) {\n          var id = requestAnimationFrame(fn);\n          return function() {\n            cancelAnimationFrame(id);\n          };\n        }\n      : function(fn) {\n          var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666\n          return function() {\n            $timeout.cancel(timer);\n          };\n        };\n\n    raf.supported = rafSupported;\n\n    return raf;\n  }];\n}\n\n/**\n * DESIGN NOTES\n *\n * The design decisions behind the scope are heavily favored for speed and memory consumption.\n *\n * The typical use of scope is to watch the expressions, which most of the time return the same\n * value as last time so we optimize the operation.\n *\n * Closures construction is expensive in terms of speed as well as memory:\n *   - No closures, instead use prototypical inheritance for API\n *   - Internal state needs to be stored on scope directly, which means that private state is\n *     exposed as $$____ properties\n *\n * Loop operations are optimized by using while(count--) { ... }\n *   - This means that in order to keep the same order of execution as addition we have to add\n *     items to the array at the beginning (unshift) instead of at the end (push)\n *\n * Child scopes are created and removed often\n *   - Using an array would be slow since inserts in the middle are expensive; so we use linked lists\n *\n * There are fewer watches than observers. This is why you don't want the observer to be implemented\n * in the same way as watch. Watch requires return of the initialization function which is expensive\n * to construct.\n */\n\n\n/**\n * @ngdoc provider\n * @name $rootScopeProvider\n * @description\n *\n * Provider for the $rootScope service.\n */\n\n/**\n * @ngdoc method\n * @name $rootScopeProvider#digestTtl\n * @description\n *\n * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and\n * assuming that the model is unstable.\n *\n * The current default is 10 iterations.\n *\n * In complex applications it's possible that the dependencies between `$watch`s will result in\n * several digest iterations. However if an application needs more than the default 10 digest\n * iterations for its model to stabilize then you should investigate what is causing the model to\n * continuously change during the digest.\n *\n * Increasing the TTL could have performance implications, so you should not change it without\n * proper justification.\n *\n * @param {number} limit The number of digest iterations.\n */\n\n\n/**\n * @ngdoc service\n * @name $rootScope\n * @this\n *\n * @description\n *\n * Every application has a single root {@link ng.$rootScope.Scope scope}.\n * All other scopes are descendant scopes of the root scope. Scopes provide separation\n * between the model and the view, via a mechanism for watching the model for changes.\n * They also provide event emission/broadcast and subscription facility. See the\n * {@link guide/scope developer guide on scopes}.\n */\nfunction $RootScopeProvider() {\n  var TTL = 10;\n  var $rootScopeMinErr = minErr('$rootScope');\n  var lastDirtyWatch = null;\n  var applyAsyncId = null;\n\n  this.digestTtl = function(value) {\n    if (arguments.length) {\n      TTL = value;\n    }\n    return TTL;\n  };\n\n  function createChildScopeClass(parent) {\n    function ChildScope() {\n      this.$$watchers = this.$$nextSibling =\n          this.$$childHead = this.$$childTail = null;\n      this.$$listeners = {};\n      this.$$listenerCount = {};\n      this.$$watchersCount = 0;\n      this.$id = nextUid();\n      this.$$ChildScope = null;\n    }\n    ChildScope.prototype = parent;\n    return ChildScope;\n  }\n\n  this.$get = ['$exceptionHandler', '$parse', '$browser',\n      function($exceptionHandler, $parse, $browser) {\n\n    function destroyChildScope($event) {\n        $event.currentScope.$$destroyed = true;\n    }\n\n    function cleanUpScope($scope) {\n\n      // Support: IE 9 only\n      if (msie === 9) {\n        // There is a memory leak in IE9 if all child scopes are not disconnected\n        // completely when a scope is destroyed. So this code will recurse up through\n        // all this scopes children\n        //\n        // See issue https://github.com/angular/angular.js/issues/10706\n        if ($scope.$$childHead) {\n          cleanUpScope($scope.$$childHead);\n        }\n        if ($scope.$$nextSibling) {\n          cleanUpScope($scope.$$nextSibling);\n        }\n      }\n\n      // The code below works around IE9 and V8's memory leaks\n      //\n      // See:\n      // - https://code.google.com/p/v8/issues/detail?id=2073#c26\n      // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909\n      // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451\n\n      $scope.$parent = $scope.$$nextSibling = $scope.$$prevSibling = $scope.$$childHead =\n          $scope.$$childTail = $scope.$root = $scope.$$watchers = null;\n    }\n\n    /**\n     * @ngdoc type\n     * @name $rootScope.Scope\n     *\n     * @description\n     * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the\n     * {@link auto.$injector $injector}. Child scopes are created using the\n     * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when\n     * compiled HTML template is executed.) See also the {@link guide/scope Scopes guide} for\n     * an in-depth introduction and usage examples.\n     *\n     *\n     * # Inheritance\n     * A scope can inherit from a parent scope, as in this example:\n     * ```js\n         var parent = $rootScope;\n         var child = parent.$new();\n\n         parent.salutation = \"Hello\";\n         expect(child.salutation).toEqual('Hello');\n\n         child.salutation = \"Welcome\";\n         expect(child.salutation).toEqual('Welcome');\n         expect(parent.salutation).toEqual('Hello');\n     * ```\n     *\n     * When interacting with `Scope` in tests, additional helper methods are available on the\n     * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional\n     * details.\n     *\n     *\n     * @param {Object.<string, function()>=} providers Map of service factory which need to be\n     *                                       provided for the current scope. Defaults to {@link ng}.\n     * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should\n     *                              append/override services provided by `providers`. This is handy\n     *                              when unit-testing and having the need to override a default\n     *                              service.\n     * @returns {Object} Newly created scope.\n     *\n     */\n    function Scope() {\n      this.$id = nextUid();\n      this.$$phase = this.$parent = this.$$watchers =\n                     this.$$nextSibling = this.$$prevSibling =\n                     this.$$childHead = this.$$childTail = null;\n      this.$root = this;\n      this.$$destroyed = false;\n      this.$$listeners = {};\n      this.$$listenerCount = {};\n      this.$$watchersCount = 0;\n      this.$$isolateBindings = null;\n    }\n\n    /**\n     * @ngdoc property\n     * @name $rootScope.Scope#$id\n     *\n     * @description\n     * Unique scope ID (monotonically increasing) useful for debugging.\n     */\n\n     /**\n      * @ngdoc property\n      * @name $rootScope.Scope#$parent\n      *\n      * @description\n      * Reference to the parent scope.\n      */\n\n      /**\n       * @ngdoc property\n       * @name $rootScope.Scope#$root\n       *\n       * @description\n       * Reference to the root scope.\n       */\n\n    Scope.prototype = {\n      constructor: Scope,\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$new\n       * @kind function\n       *\n       * @description\n       * Creates a new child {@link ng.$rootScope.Scope scope}.\n       *\n       * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.\n       * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.\n       *\n       * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is\n       * desired for the scope and its child scopes to be permanently detached from the parent and\n       * thus stop participating in model change detection and listener notification by invoking.\n       *\n       * @param {boolean} isolate If true, then the scope does not prototypically inherit from the\n       *         parent scope. The scope is isolated, as it can not see parent scope properties.\n       *         When creating widgets, it is useful for the widget to not accidentally read parent\n       *         state.\n       *\n       * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent`\n       *                              of the newly created scope. Defaults to `this` scope if not provided.\n       *                              This is used when creating a transclude scope to correctly place it\n       *                              in the scope hierarchy while maintaining the correct prototypical\n       *                              inheritance.\n       *\n       * @returns {Object} The newly created child scope.\n       *\n       */\n      $new: function(isolate, parent) {\n        var child;\n\n        parent = parent || this;\n\n        if (isolate) {\n          child = new Scope();\n          child.$root = this.$root;\n        } else {\n          // Only create a child scope class if somebody asks for one,\n          // but cache it to allow the VM to optimize lookups.\n          if (!this.$$ChildScope) {\n            this.$$ChildScope = createChildScopeClass(this);\n          }\n          child = new this.$$ChildScope();\n        }\n        child.$parent = parent;\n        child.$$prevSibling = parent.$$childTail;\n        if (parent.$$childHead) {\n          parent.$$childTail.$$nextSibling = child;\n          parent.$$childTail = child;\n        } else {\n          parent.$$childHead = parent.$$childTail = child;\n        }\n\n        // When the new scope is not isolated or we inherit from `this`, and\n        // the parent scope is destroyed, the property `$$destroyed` is inherited\n        // prototypically. In all other cases, this property needs to be set\n        // when the parent scope is destroyed.\n        // The listener needs to be added after the parent is set\n        if (isolate || parent !== this) child.$on('$destroy', destroyChildScope);\n\n        return child;\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$watch\n       * @kind function\n       *\n       * @description\n       * Registers a `listener` callback to be executed whenever the `watchExpression` changes.\n       *\n       * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest\n       *   $digest()} and should return the value that will be watched. (`watchExpression` should not change\n       *   its value when executed multiple times with the same input because it may be executed multiple\n       *   times by {@link ng.$rootScope.Scope#$digest $digest()}. That is, `watchExpression` should be\n       *   [idempotent](http://en.wikipedia.org/wiki/Idempotence).)\n       * - The `listener` is called only when the value from the current `watchExpression` and the\n       *   previous call to `watchExpression` are not equal (with the exception of the initial run,\n       *   see below). Inequality is determined according to reference inequality,\n       *   [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)\n       *    via the `!==` Javascript operator, unless `objectEquality == true`\n       *   (see next point)\n       * - When `objectEquality == true`, inequality of the `watchExpression` is determined\n       *   according to the {@link angular.equals} function. To save the value of the object for\n       *   later comparison, the {@link angular.copy} function is used. This therefore means that\n       *   watching complex objects will have adverse memory and performance implications.\n       * - This should not be used to watch for changes in objects that are\n       *   or contain [File](https://developer.mozilla.org/docs/Web/API/File) objects due to limitations with {@link angular.copy `angular.copy`}.\n       * - The watch `listener` may change the model, which may trigger other `listener`s to fire.\n       *   This is achieved by rerunning the watchers until no changes are detected. The rerun\n       *   iteration limit is 10 to prevent an infinite loop deadlock.\n       *\n       *\n       * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,\n       * you can register a `watchExpression` function with no `listener`. (Be prepared for\n       * multiple calls to your `watchExpression` because it will execute multiple times in a\n       * single {@link ng.$rootScope.Scope#$digest $digest} cycle if a change is detected.)\n       *\n       * After a watcher is registered with the scope, the `listener` fn is called asynchronously\n       * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the\n       * watcher. In rare cases, this is undesirable because the listener is called when the result\n       * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you\n       * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the\n       * listener was called due to initialization.\n       *\n       *\n       *\n       * # Example\n       * ```js\n           // let's assume that scope was dependency injected as the $rootScope\n           var scope = $rootScope;\n           scope.name = 'misko';\n           scope.counter = 0;\n\n           expect(scope.counter).toEqual(0);\n           scope.$watch('name', function(newValue, oldValue) {\n             scope.counter = scope.counter + 1;\n           });\n           expect(scope.counter).toEqual(0);\n\n           scope.$digest();\n           // the listener is always called during the first $digest loop after it was registered\n           expect(scope.counter).toEqual(1);\n\n           scope.$digest();\n           // but now it will not be called unless the value changes\n           expect(scope.counter).toEqual(1);\n\n           scope.name = 'adam';\n           scope.$digest();\n           expect(scope.counter).toEqual(2);\n\n\n\n           // Using a function as a watchExpression\n           var food;\n           scope.foodCounter = 0;\n           expect(scope.foodCounter).toEqual(0);\n           scope.$watch(\n             // This function returns the value being watched. It is called for each turn of the $digest loop\n             function() { return food; },\n             // This is the change listener, called when the value returned from the above function changes\n             function(newValue, oldValue) {\n               if ( newValue !== oldValue ) {\n                 // Only increment the counter if the value changed\n                 scope.foodCounter = scope.foodCounter + 1;\n               }\n             }\n           );\n           // No digest has been run so the counter will be zero\n           expect(scope.foodCounter).toEqual(0);\n\n           // Run the digest but since food has not changed count will still be zero\n           scope.$digest();\n           expect(scope.foodCounter).toEqual(0);\n\n           // Update food and run digest.  Now the counter will increment\n           food = 'cheeseburger';\n           scope.$digest();\n           expect(scope.foodCounter).toEqual(1);\n\n       * ```\n       *\n       *\n       *\n       * @param {(function()|string)} watchExpression Expression that is evaluated on each\n       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers\n       *    a call to the `listener`.\n       *\n       *    - `string`: Evaluated as {@link guide/expression expression}\n       *    - `function(scope)`: called with current `scope` as a parameter.\n       * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value\n       *    of `watchExpression` changes.\n       *\n       *    - `newVal` contains the current value of the `watchExpression`\n       *    - `oldVal` contains the previous value of the `watchExpression`\n       *    - `scope` refers to the current scope\n       * @param {boolean=} [objectEquality=false] Compare for object equality using {@link angular.equals} instead of\n       *     comparing for reference equality.\n       * @returns {function()} Returns a deregistration function for this listener.\n       */\n      $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) {\n        var get = $parse(watchExp);\n\n        if (get.$$watchDelegate) {\n          return get.$$watchDelegate(this, listener, objectEquality, get, watchExp);\n        }\n        var scope = this,\n            array = scope.$$watchers,\n            watcher = {\n              fn: listener,\n              last: initWatchVal,\n              get: get,\n              exp: prettyPrintExpression || watchExp,\n              eq: !!objectEquality\n            };\n\n        lastDirtyWatch = null;\n\n        if (!isFunction(listener)) {\n          watcher.fn = noop;\n        }\n\n        if (!array) {\n          array = scope.$$watchers = [];\n          array.$$digestWatchIndex = -1;\n        }\n        // we use unshift since we use a while loop in $digest for speed.\n        // the while loop reads in reverse order.\n        array.unshift(watcher);\n        array.$$digestWatchIndex++;\n        incrementWatchersCount(this, 1);\n\n        return function deregisterWatch() {\n          var index = arrayRemove(array, watcher);\n          if (index >= 0) {\n            incrementWatchersCount(scope, -1);\n            if (index < array.$$digestWatchIndex) {\n              array.$$digestWatchIndex--;\n            }\n          }\n          lastDirtyWatch = null;\n        };\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$watchGroup\n       * @kind function\n       *\n       * @description\n       * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`.\n       * If any one expression in the collection changes the `listener` is executed.\n       *\n       * - The items in the `watchExpressions` array are observed via the standard `$watch` operation. Their return\n       *   values are examined for changes on every call to `$digest`.\n       * - The `listener` is called whenever any expression in the `watchExpressions` array changes.\n       *\n       * `$watchGroup` is more performant than watching each expression individually, and should be\n       * used when the listener does not need to know which expression has changed.\n       * If the listener needs to know which expression has changed,\n       * {@link ng.$rootScope.Scope#$watch $watch()} or\n       * {@link ng.$rootScope.Scope#$watchCollection $watchCollection()} should be used.\n       *\n       * @param {Array.<string|Function(scope)>} watchExpressions Array of expressions that will be individually\n       * watched using {@link ng.$rootScope.Scope#$watch $watch()}\n       *\n       * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any\n       *    expression in `watchExpressions` changes\n       *    The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching\n       *    those of `watchExpression`\n       *    and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching\n       *    those of `watchExpression`.\n       *\n       *    Note that `newValues` and `oldValues` reflect the differences in each **individual**\n       *    expression, and not the difference of the values between each call of the listener.\n       *    That means the difference between `newValues` and `oldValues` cannot be used to determine\n       *    which expression has changed / remained stable:\n       *\n       *    ```js\n       *\n       *    $scope.$watchGroup(['v1', 'v2'], function(newValues, oldValues) {\n       *      console.log(newValues, oldValues);\n       *    });\n       *\n       *    // newValues, oldValues initially\n       *    // [undefined, undefined], [undefined, undefined]\n       *\n       *    $scope.v1 = 'a';\n       *    $scope.v2 = 'a';\n       *\n       *    // ['a', 'a'], [undefined, undefined]\n       *\n       *    $scope.v2 = 'b'\n       *\n       *    // v1 hasn't changed since it became `'a'`, therefore its oldValue is still `undefined`\n       *    // ['a', 'b'], [undefined, 'a']\n       *\n       *    ```\n       *\n       *    The `scope` refers to the current scope.\n       * @returns {function()} Returns a de-registration function for all listeners.\n       */\n      $watchGroup: function(watchExpressions, listener) {\n        var oldValues = new Array(watchExpressions.length);\n        var newValues = new Array(watchExpressions.length);\n        var deregisterFns = [];\n        var self = this;\n        var changeReactionScheduled = false;\n        var firstRun = true;\n\n        if (!watchExpressions.length) {\n          // No expressions means we call the listener ASAP\n          var shouldCall = true;\n          self.$evalAsync(function() {\n            if (shouldCall) listener(newValues, newValues, self);\n          });\n          return function deregisterWatchGroup() {\n            shouldCall = false;\n          };\n        }\n\n        if (watchExpressions.length === 1) {\n          // Special case size of one\n          return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) {\n            newValues[0] = value;\n            oldValues[0] = oldValue;\n            listener(newValues, (value === oldValue) ? newValues : oldValues, scope);\n          });\n        }\n\n        forEach(watchExpressions, function(expr, i) {\n          var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) {\n            newValues[i] = value;\n            oldValues[i] = oldValue;\n            if (!changeReactionScheduled) {\n              changeReactionScheduled = true;\n              self.$evalAsync(watchGroupAction);\n            }\n          });\n          deregisterFns.push(unwatchFn);\n        });\n\n        function watchGroupAction() {\n          changeReactionScheduled = false;\n\n          if (firstRun) {\n            firstRun = false;\n            listener(newValues, newValues, self);\n          } else {\n            listener(newValues, oldValues, self);\n          }\n        }\n\n        return function deregisterWatchGroup() {\n          while (deregisterFns.length) {\n            deregisterFns.shift()();\n          }\n        };\n      },\n\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$watchCollection\n       * @kind function\n       *\n       * @description\n       * Shallow watches the properties of an object and fires whenever any of the properties change\n       * (for arrays, this implies watching the array items; for object maps, this implies watching\n       * the properties). If a change is detected, the `listener` callback is fired.\n       *\n       * - The `obj` collection is observed via standard $watch operation and is examined on every\n       *   call to $digest() to see if any items have been added, removed, or moved.\n       * - The `listener` is called whenever anything within the `obj` has changed. Examples include\n       *   adding, removing, and moving items belonging to an object or array.\n       *\n       *\n       * # Example\n       * ```js\n          $scope.names = ['igor', 'matias', 'misko', 'james'];\n          $scope.dataCount = 4;\n\n          $scope.$watchCollection('names', function(newNames, oldNames) {\n            $scope.dataCount = newNames.length;\n          });\n\n          expect($scope.dataCount).toEqual(4);\n          $scope.$digest();\n\n          //still at 4 ... no changes\n          expect($scope.dataCount).toEqual(4);\n\n          $scope.names.pop();\n          $scope.$digest();\n\n          //now there's been a change\n          expect($scope.dataCount).toEqual(3);\n       * ```\n       *\n       *\n       * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The\n       *    expression value should evaluate to an object or an array which is observed on each\n       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the\n       *    collection will trigger a call to the `listener`.\n       *\n       * @param {function(newCollection, oldCollection, scope)} listener a callback function called\n       *    when a change is detected.\n       *    - The `newCollection` object is the newly modified data obtained from the `obj` expression\n       *    - The `oldCollection` object is a copy of the former collection data.\n       *      Due to performance considerations, the`oldCollection` value is computed only if the\n       *      `listener` function declares two or more arguments.\n       *    - The `scope` argument refers to the current scope.\n       *\n       * @returns {function()} Returns a de-registration function for this listener. When the\n       *    de-registration function is executed, the internal watch operation is terminated.\n       */\n      $watchCollection: function(obj, listener) {\n        $watchCollectionInterceptor.$stateful = true;\n\n        var self = this;\n        // the current value, updated on each dirty-check run\n        var newValue;\n        // a shallow copy of the newValue from the last dirty-check run,\n        // updated to match newValue during dirty-check run\n        var oldValue;\n        // a shallow copy of the newValue from when the last change happened\n        var veryOldValue;\n        // only track veryOldValue if the listener is asking for it\n        var trackVeryOldValue = (listener.length > 1);\n        var changeDetected = 0;\n        var changeDetector = $parse(obj, $watchCollectionInterceptor);\n        var internalArray = [];\n        var internalObject = {};\n        var initRun = true;\n        var oldLength = 0;\n\n        function $watchCollectionInterceptor(_value) {\n          newValue = _value;\n          var newLength, key, bothNaN, newItem, oldItem;\n\n          // If the new value is undefined, then return undefined as the watch may be a one-time watch\n          if (isUndefined(newValue)) return;\n\n          if (!isObject(newValue)) { // if primitive\n            if (oldValue !== newValue) {\n              oldValue = newValue;\n              changeDetected++;\n            }\n          } else if (isArrayLike(newValue)) {\n            if (oldValue !== internalArray) {\n              // we are transitioning from something which was not an array into array.\n              oldValue = internalArray;\n              oldLength = oldValue.length = 0;\n              changeDetected++;\n            }\n\n            newLength = newValue.length;\n\n            if (oldLength !== newLength) {\n              // if lengths do not match we need to trigger change notification\n              changeDetected++;\n              oldValue.length = oldLength = newLength;\n            }\n            // copy the items to oldValue and look for changes.\n            for (var i = 0; i < newLength; i++) {\n              oldItem = oldValue[i];\n              newItem = newValue[i];\n\n              // eslint-disable-next-line no-self-compare\n              bothNaN = (oldItem !== oldItem) && (newItem !== newItem);\n              if (!bothNaN && (oldItem !== newItem)) {\n                changeDetected++;\n                oldValue[i] = newItem;\n              }\n            }\n          } else {\n            if (oldValue !== internalObject) {\n              // we are transitioning from something which was not an object into object.\n              oldValue = internalObject = {};\n              oldLength = 0;\n              changeDetected++;\n            }\n            // copy the items to oldValue and look for changes.\n            newLength = 0;\n            for (key in newValue) {\n              if (hasOwnProperty.call(newValue, key)) {\n                newLength++;\n                newItem = newValue[key];\n                oldItem = oldValue[key];\n\n                if (key in oldValue) {\n                  // eslint-disable-next-line no-self-compare\n                  bothNaN = (oldItem !== oldItem) && (newItem !== newItem);\n                  if (!bothNaN && (oldItem !== newItem)) {\n                    changeDetected++;\n                    oldValue[key] = newItem;\n                  }\n                } else {\n                  oldLength++;\n                  oldValue[key] = newItem;\n                  changeDetected++;\n                }\n              }\n            }\n            if (oldLength > newLength) {\n              // we used to have more keys, need to find them and destroy them.\n              changeDetected++;\n              for (key in oldValue) {\n                if (!hasOwnProperty.call(newValue, key)) {\n                  oldLength--;\n                  delete oldValue[key];\n                }\n              }\n            }\n          }\n          return changeDetected;\n        }\n\n        function $watchCollectionAction() {\n          if (initRun) {\n            initRun = false;\n            listener(newValue, newValue, self);\n          } else {\n            listener(newValue, veryOldValue, self);\n          }\n\n          // make a copy for the next time a collection is changed\n          if (trackVeryOldValue) {\n            if (!isObject(newValue)) {\n              //primitive\n              veryOldValue = newValue;\n            } else if (isArrayLike(newValue)) {\n              veryOldValue = new Array(newValue.length);\n              for (var i = 0; i < newValue.length; i++) {\n                veryOldValue[i] = newValue[i];\n              }\n            } else { // if object\n              veryOldValue = {};\n              for (var key in newValue) {\n                if (hasOwnProperty.call(newValue, key)) {\n                  veryOldValue[key] = newValue[key];\n                }\n              }\n            }\n          }\n        }\n\n        return this.$watch(changeDetector, $watchCollectionAction);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$digest\n       * @kind function\n       *\n       * @description\n       * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and\n       * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change\n       * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}\n       * until no more listeners are firing. This means that it is possible to get into an infinite\n       * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of\n       * iterations exceeds 10.\n       *\n       * Usually, you don't call `$digest()` directly in\n       * {@link ng.directive:ngController controllers} or in\n       * {@link ng.$compileProvider#directive directives}.\n       * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within\n       * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`.\n       *\n       * If you want to be notified whenever `$digest()` is called,\n       * you can register a `watchExpression` function with\n       * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.\n       *\n       * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.\n       *\n       * # Example\n       * ```js\n           var scope = ...;\n           scope.name = 'misko';\n           scope.counter = 0;\n\n           expect(scope.counter).toEqual(0);\n           scope.$watch('name', function(newValue, oldValue) {\n             scope.counter = scope.counter + 1;\n           });\n           expect(scope.counter).toEqual(0);\n\n           scope.$digest();\n           // the listener is always called during the first $digest loop after it was registered\n           expect(scope.counter).toEqual(1);\n\n           scope.$digest();\n           // but now it will not be called unless the value changes\n           expect(scope.counter).toEqual(1);\n\n           scope.name = 'adam';\n           scope.$digest();\n           expect(scope.counter).toEqual(2);\n       * ```\n       *\n       */\n      $digest: function() {\n        var watch, value, last, fn, get,\n            watchers,\n            dirty, ttl = TTL,\n            next, current, target = this,\n            watchLog = [],\n            logIdx, asyncTask;\n\n        beginPhase('$digest');\n        // Check for changes to browser url that happened in sync before the call to $digest\n        $browser.$$checkUrlChange();\n\n        if (this === $rootScope && applyAsyncId !== null) {\n          // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then\n          // cancel the scheduled $apply and flush the queue of expressions to be evaluated.\n          $browser.defer.cancel(applyAsyncId);\n          flushApplyAsync();\n        }\n\n        lastDirtyWatch = null;\n\n        do { // \"while dirty\" loop\n          dirty = false;\n          current = target;\n\n          // It's safe for asyncQueuePosition to be a local variable here because this loop can't\n          // be reentered recursively. Calling $digest from a function passed to $evalAsync would\n          // lead to a '$digest already in progress' error.\n          for (var asyncQueuePosition = 0; asyncQueuePosition < asyncQueue.length; asyncQueuePosition++) {\n            try {\n              asyncTask = asyncQueue[asyncQueuePosition];\n              fn = asyncTask.fn;\n              fn(asyncTask.scope, asyncTask.locals);\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n            lastDirtyWatch = null;\n          }\n          asyncQueue.length = 0;\n\n          traverseScopesLoop:\n          do { // \"traverse the scopes\" loop\n            if ((watchers = current.$$watchers)) {\n              // process our watches\n              watchers.$$digestWatchIndex = watchers.length;\n              while (watchers.$$digestWatchIndex--) {\n                try {\n                  watch = watchers[watchers.$$digestWatchIndex];\n                  // Most common watches are on primitives, in which case we can short\n                  // circuit it with === operator, only when === fails do we use .equals\n                  if (watch) {\n                    get = watch.get;\n                    if ((value = get(current)) !== (last = watch.last) &&\n                        !(watch.eq\n                            ? equals(value, last)\n                            : (isNumberNaN(value) && isNumberNaN(last)))) {\n                      dirty = true;\n                      lastDirtyWatch = watch;\n                      watch.last = watch.eq ? copy(value, null) : value;\n                      fn = watch.fn;\n                      fn(value, ((last === initWatchVal) ? value : last), current);\n                      if (ttl < 5) {\n                        logIdx = 4 - ttl;\n                        if (!watchLog[logIdx]) watchLog[logIdx] = [];\n                        watchLog[logIdx].push({\n                          msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp,\n                          newVal: value,\n                          oldVal: last\n                        });\n                      }\n                    } else if (watch === lastDirtyWatch) {\n                      // If the most recently dirty watcher is now clean, short circuit since the remaining watchers\n                      // have already been tested.\n                      dirty = false;\n                      break traverseScopesLoop;\n                    }\n                  }\n                } catch (e) {\n                  $exceptionHandler(e);\n                }\n              }\n            }\n\n            // Insanity Warning: scope depth-first traversal\n            // yes, this code is a bit crazy, but it works and we have tests to prove it!\n            // this piece should be kept in sync with the traversal in $broadcast\n            if (!(next = ((current.$$watchersCount && current.$$childHead) ||\n                (current !== target && current.$$nextSibling)))) {\n              while (current !== target && !(next = current.$$nextSibling)) {\n                current = current.$parent;\n              }\n            }\n          } while ((current = next));\n\n          // `break traverseScopesLoop;` takes us to here\n\n          if ((dirty || asyncQueue.length) && !(ttl--)) {\n            clearPhase();\n            throw $rootScopeMinErr('infdig',\n                '{0} $digest() iterations reached. Aborting!\\n' +\n                'Watchers fired in the last 5 iterations: {1}',\n                TTL, watchLog);\n          }\n\n        } while (dirty || asyncQueue.length);\n\n        clearPhase();\n\n        // postDigestQueuePosition isn't local here because this loop can be reentered recursively.\n        while (postDigestQueuePosition < postDigestQueue.length) {\n          try {\n            postDigestQueue[postDigestQueuePosition++]();\n          } catch (e) {\n            $exceptionHandler(e);\n          }\n        }\n        postDigestQueue.length = postDigestQueuePosition = 0;\n\n        // Check for changes to browser url that happened during the $digest\n        // (for which no event is fired; e.g. via `history.pushState()`)\n        $browser.$$checkUrlChange();\n      },\n\n\n      /**\n       * @ngdoc event\n       * @name $rootScope.Scope#$destroy\n       * @eventType broadcast on scope being destroyed\n       *\n       * @description\n       * Broadcasted when a scope and its children are being destroyed.\n       *\n       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n       * clean up DOM bindings before an element is removed from the DOM.\n       */\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$destroy\n       * @kind function\n       *\n       * @description\n       * Removes the current scope (and all of its children) from the parent scope. Removal implies\n       * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer\n       * propagate to the current scope and its children. Removal also implies that the current\n       * scope is eligible for garbage collection.\n       *\n       * The `$destroy()` is usually used by directives such as\n       * {@link ng.directive:ngRepeat ngRepeat} for managing the\n       * unrolling of the loop.\n       *\n       * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.\n       * Application code can register a `$destroy` event handler that will give it a chance to\n       * perform any necessary cleanup.\n       *\n       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to\n       * clean up DOM bindings before an element is removed from the DOM.\n       */\n      $destroy: function() {\n        // We can't destroy a scope that has been already destroyed.\n        if (this.$$destroyed) return;\n        var parent = this.$parent;\n\n        this.$broadcast('$destroy');\n        this.$$destroyed = true;\n\n        if (this === $rootScope) {\n          //Remove handlers attached to window when $rootScope is removed\n          $browser.$$applicationDestroyed();\n        }\n\n        incrementWatchersCount(this, -this.$$watchersCount);\n        for (var eventName in this.$$listenerCount) {\n          decrementListenerCount(this, this.$$listenerCount[eventName], eventName);\n        }\n\n        // sever all the references to parent scopes (after this cleanup, the current scope should\n        // not be retained by any of our references and should be eligible for garbage collection)\n        if (parent && parent.$$childHead === this) parent.$$childHead = this.$$nextSibling;\n        if (parent && parent.$$childTail === this) parent.$$childTail = this.$$prevSibling;\n        if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;\n        if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;\n\n        // Disable listeners, watchers and apply/digest methods\n        this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;\n        this.$on = this.$watch = this.$watchGroup = function() { return noop; };\n        this.$$listeners = {};\n\n        // Disconnect the next sibling to prevent `cleanUpScope` destroying those too\n        this.$$nextSibling = null;\n        cleanUpScope(this);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$eval\n       * @kind function\n       *\n       * @description\n       * Executes the `expression` on the current scope and returns the result. Any exceptions in\n       * the expression are propagated (uncaught). This is useful when evaluating Angular\n       * expressions.\n       *\n       * # Example\n       * ```js\n           var scope = ng.$rootScope.Scope();\n           scope.a = 1;\n           scope.b = 2;\n\n           expect(scope.$eval('a+b')).toEqual(3);\n           expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);\n       * ```\n       *\n       * @param {(string|function())=} expression An angular expression to be executed.\n       *\n       *    - `string`: execute using the rules as defined in  {@link guide/expression expression}.\n       *    - `function(scope)`: execute the function with the current `scope` parameter.\n       *\n       * @param {(object)=} locals Local variables object, useful for overriding values in scope.\n       * @returns {*} The result of evaluating the expression.\n       */\n      $eval: function(expr, locals) {\n        return $parse(expr)(this, locals);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$evalAsync\n       * @kind function\n       *\n       * @description\n       * Executes the expression on the current scope at a later point in time.\n       *\n       * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only\n       * that:\n       *\n       *   - it will execute after the function that scheduled the evaluation (preferably before DOM\n       *     rendering).\n       *   - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after\n       *     `expression` execution.\n       *\n       * Any exceptions from the execution of the expression are forwarded to the\n       * {@link ng.$exceptionHandler $exceptionHandler} service.\n       *\n       * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle\n       * will be scheduled. However, it is encouraged to always call code that changes the model\n       * from within an `$apply` call. That includes code evaluated via `$evalAsync`.\n       *\n       * @param {(string|function())=} expression An angular expression to be executed.\n       *\n       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.\n       *    - `function(scope)`: execute the function with the current `scope` parameter.\n       *\n       * @param {(object)=} locals Local variables object, useful for overriding values in scope.\n       */\n      $evalAsync: function(expr, locals) {\n        // if we are outside of an $digest loop and this is the first time we are scheduling async\n        // task also schedule async auto-flush\n        if (!$rootScope.$$phase && !asyncQueue.length) {\n          $browser.defer(function() {\n            if (asyncQueue.length) {\n              $rootScope.$digest();\n            }\n          });\n        }\n\n        asyncQueue.push({scope: this, fn: $parse(expr), locals: locals});\n      },\n\n      $$postDigest: function(fn) {\n        postDigestQueue.push(fn);\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$apply\n       * @kind function\n       *\n       * @description\n       * `$apply()` is used to execute an expression in angular from outside of the angular\n       * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).\n       * Because we are calling into the angular framework we need to perform proper scope life\n       * cycle of {@link ng.$exceptionHandler exception handling},\n       * {@link ng.$rootScope.Scope#$digest executing watches}.\n       *\n       * ## Life cycle\n       *\n       * # Pseudo-Code of `$apply()`\n       * ```js\n           function $apply(expr) {\n             try {\n               return $eval(expr);\n             } catch (e) {\n               $exceptionHandler(e);\n             } finally {\n               $root.$digest();\n             }\n           }\n       * ```\n       *\n       *\n       * Scope's `$apply()` method transitions through the following stages:\n       *\n       * 1. The {@link guide/expression expression} is executed using the\n       *    {@link ng.$rootScope.Scope#$eval $eval()} method.\n       * 2. Any exceptions from the execution of the expression are forwarded to the\n       *    {@link ng.$exceptionHandler $exceptionHandler} service.\n       * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the\n       *    expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.\n       *\n       *\n       * @param {(string|function())=} exp An angular expression to be executed.\n       *\n       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.\n       *    - `function(scope)`: execute the function with current `scope` parameter.\n       *\n       * @returns {*} The result of evaluating the expression.\n       */\n      $apply: function(expr) {\n        try {\n          beginPhase('$apply');\n          try {\n            return this.$eval(expr);\n          } finally {\n            clearPhase();\n          }\n        } catch (e) {\n          $exceptionHandler(e);\n        } finally {\n          try {\n            $rootScope.$digest();\n          } catch (e) {\n            $exceptionHandler(e);\n            // eslint-disable-next-line no-unsafe-finally\n            throw e;\n          }\n        }\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$applyAsync\n       * @kind function\n       *\n       * @description\n       * Schedule the invocation of $apply to occur at a later time. The actual time difference\n       * varies across browsers, but is typically around ~10 milliseconds.\n       *\n       * This can be used to queue up multiple expressions which need to be evaluated in the same\n       * digest.\n       *\n       * @param {(string|function())=} exp An angular expression to be executed.\n       *\n       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.\n       *    - `function(scope)`: execute the function with current `scope` parameter.\n       */\n      $applyAsync: function(expr) {\n        var scope = this;\n        if (expr) {\n          applyAsyncQueue.push($applyAsyncExpression);\n        }\n        expr = $parse(expr);\n        scheduleApplyAsync();\n\n        function $applyAsyncExpression() {\n          scope.$eval(expr);\n        }\n      },\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$on\n       * @kind function\n       *\n       * @description\n       * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for\n       * discussion of event life cycle.\n       *\n       * The event listener function format is: `function(event, args...)`. The `event` object\n       * passed into the listener has the following attributes:\n       *\n       *   - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or\n       *     `$broadcast`-ed.\n       *   - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the\n       *     event propagates through the scope hierarchy, this property is set to null.\n       *   - `name` - `{string}`: name of the event.\n       *   - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel\n       *     further event propagation (available only for events that were `$emit`-ed).\n       *   - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag\n       *     to true.\n       *   - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.\n       *\n       * @param {string} name Event name to listen on.\n       * @param {function(event, ...args)} listener Function to call when the event is emitted.\n       * @returns {function()} Returns a deregistration function for this listener.\n       */\n      $on: function(name, listener) {\n        var namedListeners = this.$$listeners[name];\n        if (!namedListeners) {\n          this.$$listeners[name] = namedListeners = [];\n        }\n        namedListeners.push(listener);\n\n        var current = this;\n        do {\n          if (!current.$$listenerCount[name]) {\n            current.$$listenerCount[name] = 0;\n          }\n          current.$$listenerCount[name]++;\n        } while ((current = current.$parent));\n\n        var self = this;\n        return function() {\n          var indexOfListener = namedListeners.indexOf(listener);\n          if (indexOfListener !== -1) {\n            namedListeners[indexOfListener] = null;\n            decrementListenerCount(self, 1, name);\n          }\n        };\n      },\n\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$emit\n       * @kind function\n       *\n       * @description\n       * Dispatches an event `name` upwards through the scope hierarchy notifying the\n       * registered {@link ng.$rootScope.Scope#$on} listeners.\n       *\n       * The event life cycle starts at the scope on which `$emit` was called. All\n       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get\n       * notified. Afterwards, the event traverses upwards toward the root scope and calls all\n       * registered listeners along the way. The event will stop propagating if one of the listeners\n       * cancels it.\n       *\n       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed\n       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.\n       *\n       * @param {string} name Event name to emit.\n       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.\n       * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).\n       */\n      $emit: function(name, args) {\n        var empty = [],\n            namedListeners,\n            scope = this,\n            stopPropagation = false,\n            event = {\n              name: name,\n              targetScope: scope,\n              stopPropagation: function() {stopPropagation = true;},\n              preventDefault: function() {\n                event.defaultPrevented = true;\n              },\n              defaultPrevented: false\n            },\n            listenerArgs = concat([event], arguments, 1),\n            i, length;\n\n        do {\n          namedListeners = scope.$$listeners[name] || empty;\n          event.currentScope = scope;\n          for (i = 0, length = namedListeners.length; i < length; i++) {\n\n            // if listeners were deregistered, defragment the array\n            if (!namedListeners[i]) {\n              namedListeners.splice(i, 1);\n              i--;\n              length--;\n              continue;\n            }\n            try {\n              //allow all listeners attached to the current scope to run\n              namedListeners[i].apply(null, listenerArgs);\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n          }\n          //if any listener on the current scope stops propagation, prevent bubbling\n          if (stopPropagation) {\n            event.currentScope = null;\n            return event;\n          }\n          //traverse upwards\n          scope = scope.$parent;\n        } while (scope);\n\n        event.currentScope = null;\n\n        return event;\n      },\n\n\n      /**\n       * @ngdoc method\n       * @name $rootScope.Scope#$broadcast\n       * @kind function\n       *\n       * @description\n       * Dispatches an event `name` downwards to all child scopes (and their children) notifying the\n       * registered {@link ng.$rootScope.Scope#$on} listeners.\n       *\n       * The event life cycle starts at the scope on which `$broadcast` was called. All\n       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get\n       * notified. Afterwards, the event propagates to all direct and indirect scopes of the current\n       * scope and calls all registered listeners along the way. The event cannot be canceled.\n       *\n       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed\n       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.\n       *\n       * @param {string} name Event name to broadcast.\n       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.\n       * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}\n       */\n      $broadcast: function(name, args) {\n        var target = this,\n            current = target,\n            next = target,\n            event = {\n              name: name,\n              targetScope: target,\n              preventDefault: function() {\n                event.defaultPrevented = true;\n              },\n              defaultPrevented: false\n            };\n\n        if (!target.$$listenerCount[name]) return event;\n\n        var listenerArgs = concat([event], arguments, 1),\n            listeners, i, length;\n\n        //down while you can, then up and next sibling or up and next sibling until back at root\n        while ((current = next)) {\n          event.currentScope = current;\n          listeners = current.$$listeners[name] || [];\n          for (i = 0, length = listeners.length; i < length; i++) {\n            // if listeners were deregistered, defragment the array\n            if (!listeners[i]) {\n              listeners.splice(i, 1);\n              i--;\n              length--;\n              continue;\n            }\n\n            try {\n              listeners[i].apply(null, listenerArgs);\n            } catch (e) {\n              $exceptionHandler(e);\n            }\n          }\n\n          // Insanity Warning: scope depth-first traversal\n          // yes, this code is a bit crazy, but it works and we have tests to prove it!\n          // this piece should be kept in sync with the traversal in $digest\n          // (though it differs due to having the extra check for $$listenerCount)\n          if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||\n              (current !== target && current.$$nextSibling)))) {\n            while (current !== target && !(next = current.$$nextSibling)) {\n              current = current.$parent;\n            }\n          }\n        }\n\n        event.currentScope = null;\n        return event;\n      }\n    };\n\n    var $rootScope = new Scope();\n\n    //The internal queues. Expose them on the $rootScope for debugging/testing purposes.\n    var asyncQueue = $rootScope.$$asyncQueue = [];\n    var postDigestQueue = $rootScope.$$postDigestQueue = [];\n    var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];\n\n    var postDigestQueuePosition = 0;\n\n    return $rootScope;\n\n\n    function beginPhase(phase) {\n      if ($rootScope.$$phase) {\n        throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);\n      }\n\n      $rootScope.$$phase = phase;\n    }\n\n    function clearPhase() {\n      $rootScope.$$phase = null;\n    }\n\n    function incrementWatchersCount(current, count) {\n      do {\n        current.$$watchersCount += count;\n      } while ((current = current.$parent));\n    }\n\n    function decrementListenerCount(current, count, name) {\n      do {\n        current.$$listenerCount[name] -= count;\n\n        if (current.$$listenerCount[name] === 0) {\n          delete current.$$listenerCount[name];\n        }\n      } while ((current = current.$parent));\n    }\n\n    /**\n     * function used as an initial value for watchers.\n     * because it's unique we can easily tell it apart from other values\n     */\n    function initWatchVal() {}\n\n    function flushApplyAsync() {\n      while (applyAsyncQueue.length) {\n        try {\n          applyAsyncQueue.shift()();\n        } catch (e) {\n          $exceptionHandler(e);\n        }\n      }\n      applyAsyncId = null;\n    }\n\n    function scheduleApplyAsync() {\n      if (applyAsyncId === null) {\n        applyAsyncId = $browser.defer(function() {\n          $rootScope.$apply(flushApplyAsync);\n        });\n      }\n    }\n  }];\n}\n\n/**\n * @ngdoc service\n * @name $rootElement\n *\n * @description\n * The root element of Angular application. This is either the element where {@link\n * ng.directive:ngApp ngApp} was declared or the element passed into\n * {@link angular.bootstrap}. The element represents the root element of application. It is also the\n * location where the application's {@link auto.$injector $injector} service gets\n * published, and can be retrieved using `$rootElement.injector()`.\n */\n\n\n// the implementation is in angular.bootstrap\n\n/**\n * @this\n * @description\n * Private service to sanitize uris for links and images. Used by $compile and $sanitize.\n */\nfunction $$SanitizeUriProvider() {\n  var aHrefSanitizationWhitelist = /^\\s*(https?|ftp|mailto|tel|file):/,\n    imgSrcSanitizationWhitelist = /^\\s*((https?|ftp|file|blob):|data:image\\/)/;\n\n  /**\n   * @description\n   * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n   * urls during a[href] sanitization.\n   *\n   * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n   *\n   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into\n   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`\n   * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n   *\n   * @param {RegExp=} regexp New regexp to whitelist urls with.\n   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n   *    chaining otherwise.\n   */\n  this.aHrefSanitizationWhitelist = function(regexp) {\n    if (isDefined(regexp)) {\n      aHrefSanitizationWhitelist = regexp;\n      return this;\n    }\n    return aHrefSanitizationWhitelist;\n  };\n\n\n  /**\n   * @description\n   * Retrieves or overrides the default regular expression that is used for whitelisting of safe\n   * urls during img[src] sanitization.\n   *\n   * The sanitization is a security measure aimed at prevent XSS attacks via html links.\n   *\n   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into\n   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`\n   * regular expression. If a match is found, the original url is written into the dom. Otherwise,\n   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.\n   *\n   * @param {RegExp=} regexp New regexp to whitelist urls with.\n   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for\n   *    chaining otherwise.\n   */\n  this.imgSrcSanitizationWhitelist = function(regexp) {\n    if (isDefined(regexp)) {\n      imgSrcSanitizationWhitelist = regexp;\n      return this;\n    }\n    return imgSrcSanitizationWhitelist;\n  };\n\n  this.$get = function() {\n    return function sanitizeUri(uri, isImage) {\n      var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist;\n      var normalizedVal;\n      normalizedVal = urlResolve(uri).href;\n      if (normalizedVal !== '' && !normalizedVal.match(regex)) {\n        return 'unsafe:' + normalizedVal;\n      }\n      return uri;\n    };\n  };\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *     Any commits to this file should be reviewed with security in mind.  *\n *   Changes to this file can potentially create security vulnerabilities. *\n *          An approval from 2 Core members with history of modifying      *\n *                         this file is required.                          *\n *                                                                         *\n *  Does the change somehow allow for arbitrary javascript to be executed? *\n *    Or allows for someone to change the prototype of built-in objects?   *\n *     Or gives undesired access to variables likes document or window?    *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/* exported $SceProvider, $SceDelegateProvider */\n\nvar $sceMinErr = minErr('$sce');\n\nvar SCE_CONTEXTS = {\n  // HTML is used when there's HTML rendered (e.g. ng-bind-html, iframe srcdoc binding).\n  HTML: 'html',\n\n  // Style statements or stylesheets. Currently unused in AngularJS.\n  CSS: 'css',\n\n  // An URL used in a context where it does not refer to a resource that loads code. Currently\n  // unused in AngularJS.\n  URL: 'url',\n\n  // RESOURCE_URL is a subtype of URL used where the referred-to resource could be interpreted as\n  // code. (e.g. ng-include, script src binding, templateUrl)\n  RESOURCE_URL: 'resourceUrl',\n\n  // Script. Currently unused in AngularJS.\n  JS: 'js'\n};\n\n// Helper functions follow.\n\nvar UNDERSCORE_LOWERCASE_REGEXP = /_([a-z])/g;\n\nfunction snakeToCamel(name) {\n  return name\n    .replace(UNDERSCORE_LOWERCASE_REGEXP, fnCamelCaseReplace);\n}\n\nfunction adjustMatcher(matcher) {\n  if (matcher === 'self') {\n    return matcher;\n  } else if (isString(matcher)) {\n    // Strings match exactly except for 2 wildcards - '*' and '**'.\n    // '*' matches any character except those from the set ':/.?&'.\n    // '**' matches any character (like .* in a RegExp).\n    // More than 2 *'s raises an error as it's ill defined.\n    if (matcher.indexOf('***') > -1) {\n      throw $sceMinErr('iwcard',\n          'Illegal sequence *** in string matcher.  String: {0}', matcher);\n    }\n    matcher = escapeForRegexp(matcher).\n                  replace(/\\\\\\*\\\\\\*/g, '.*').\n                  replace(/\\\\\\*/g, '[^:/.?&;]*');\n    return new RegExp('^' + matcher + '$');\n  } else if (isRegExp(matcher)) {\n    // The only other type of matcher allowed is a Regexp.\n    // Match entire URL / disallow partial matches.\n    // Flags are reset (i.e. no global, ignoreCase or multiline)\n    return new RegExp('^' + matcher.source + '$');\n  } else {\n    throw $sceMinErr('imatcher',\n        'Matchers may only be \"self\", string patterns or RegExp objects');\n  }\n}\n\n\nfunction adjustMatchers(matchers) {\n  var adjustedMatchers = [];\n  if (isDefined(matchers)) {\n    forEach(matchers, function(matcher) {\n      adjustedMatchers.push(adjustMatcher(matcher));\n    });\n  }\n  return adjustedMatchers;\n}\n\n\n/**\n * @ngdoc service\n * @name $sceDelegate\n * @kind function\n *\n * @description\n *\n * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict\n * Contextual Escaping (SCE)} services to AngularJS.\n *\n * For an overview of this service and the functionnality it provides in AngularJS, see the main\n * page for {@link ng.$sce SCE}. The current page is targeted for developers who need to alter how\n * SCE works in their application, which shouldn't be needed in most cases.\n *\n * <div class=\"alert alert-danger\">\n * AngularJS strongly relies on contextual escaping for the security of bindings: disabling or\n * modifying this might cause cross site scripting (XSS) vulnerabilities. For libraries owners,\n * changes to this service will also influence users, so be extra careful and document your changes.\n * </div>\n *\n * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of\n * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS.  This is\n * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to\n * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things\n * work because `$sce` delegates to `$sceDelegate` for these operations.\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.\n *\n * The default instance of `$sceDelegate` should work out of the box with little pain.  While you\n * can override it completely to change the behavior of `$sce`, the common case would\n * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting\n * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as\n * templates.  Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist\n * $sceDelegateProvider.resourceUrlWhitelist} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}\n */\n\n/**\n * @ngdoc provider\n * @name $sceDelegateProvider\n * @this\n *\n * @description\n *\n * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate\n * $sceDelegate service}, used as a delegate for {@link ng.$sce Strict Contextual Escaping (SCE)}.\n *\n * The `$sceDelegateProvider` allows one to get/set the whitelists and blacklists used to ensure\n * that the URLs used for sourcing AngularJS templates and other script-running URLs are safe (all\n * places that use the `$sce.RESOURCE_URL` context). See\n * {@link ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist}\n * and\n * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist},\n *\n * For the general details about this service in Angular, read the main page for {@link ng.$sce\n * Strict Contextual Escaping (SCE)}.\n *\n * **Example**:  Consider the following case. <a name=\"example\"></a>\n *\n * - your app is hosted at url `http://myapp.example.com/`\n * - but some of your templates are hosted on other domains you control such as\n *   `http://srv01.assets.example.com/`, `http://srv02.assets.example.com/`, etc.\n * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.\n *\n * Here is what a secure configuration for this scenario might look like:\n *\n * ```\n *  angular.module('myApp', []).config(function($sceDelegateProvider) {\n *    $sceDelegateProvider.resourceUrlWhitelist([\n *      // Allow same origin resource loads.\n *      'self',\n *      // Allow loading from our assets domain.  Notice the difference between * and **.\n *      'http://srv*.assets.example.com/**'\n *    ]);\n *\n *    // The blacklist overrides the whitelist so the open redirect here is blocked.\n *    $sceDelegateProvider.resourceUrlBlacklist([\n *      'http://myapp.example.com/clickThru**'\n *    ]);\n *  });\n * ```\n * Note that an empty whitelist will block every resource URL from being loaded, and will require\n * you to manually mark each one as trusted with `$sce.trustAsResourceUrl`. However, templates\n * requested by {@link ng.$templateRequest $templateRequest} that are present in\n * {@link ng.$templateCache $templateCache} will not go through this check. If you have a mechanism\n * to populate your templates in that cache at config time, then it is a good idea to remove 'self'\n * from that whitelist. This helps to mitigate the security impact of certain types of issues, like\n * for instance attacker-controlled `ng-includes`.\n */\n\nfunction $SceDelegateProvider() {\n  this.SCE_CONTEXTS = SCE_CONTEXTS;\n\n  // Resource URLs can also be trusted by policy.\n  var resourceUrlWhitelist = ['self'],\n      resourceUrlBlacklist = [];\n\n  /**\n   * @ngdoc method\n   * @name $sceDelegateProvider#resourceUrlWhitelist\n   * @kind function\n   *\n   * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value\n   *     provided.  This must be an array or null.  A snapshot of this array is used so further\n   *     changes to the array are ignored.\n   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n   *     allowed in this array.\n   *\n   * @return {Array} The currently set whitelist array.\n   *\n   * @description\n   * Sets/Gets the whitelist of trusted resource URLs.\n   *\n   * The **default value** when no whitelist has been explicitly set is `['self']` allowing only\n   * same origin resource requests.\n   *\n   * <div class=\"alert alert-warning\">\n   * **Note:** the default whitelist of 'self' is not recommended if your app shares its origin\n   * with other apps! It is a good idea to limit it to only your application's directory.\n   * </div>\n   */\n  this.resourceUrlWhitelist = function(value) {\n    if (arguments.length) {\n      resourceUrlWhitelist = adjustMatchers(value);\n    }\n    return resourceUrlWhitelist;\n  };\n\n  /**\n   * @ngdoc method\n   * @name $sceDelegateProvider#resourceUrlBlacklist\n   * @kind function\n   *\n   * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value\n   *     provided.  This must be an array or null.  A snapshot of this array is used so further\n   *     changes to the array are ignored.</p><p>\n   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items\n   *     allowed in this array.</p><p>\n   *     The typical usage for the blacklist is to **block\n   *     [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as\n   *     these would otherwise be trusted but actually return content from the redirected domain.\n   *     </p><p>\n   *     Finally, **the blacklist overrides the whitelist** and has the final say.\n   *\n   * @return {Array} The currently set blacklist array.\n   *\n   * @description\n   * Sets/Gets the blacklist of trusted resource URLs.\n   *\n   * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there\n   * is no blacklist.)\n   */\n\n  this.resourceUrlBlacklist = function(value) {\n    if (arguments.length) {\n      resourceUrlBlacklist = adjustMatchers(value);\n    }\n    return resourceUrlBlacklist;\n  };\n\n  this.$get = ['$injector', function($injector) {\n\n    var htmlSanitizer = function htmlSanitizer(html) {\n      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n    };\n\n    if ($injector.has('$sanitize')) {\n      htmlSanitizer = $injector.get('$sanitize');\n    }\n\n\n    function matchUrl(matcher, parsedUrl) {\n      if (matcher === 'self') {\n        return urlIsSameOrigin(parsedUrl);\n      } else {\n        // definitely a regex.  See adjustMatchers()\n        return !!matcher.exec(parsedUrl.href);\n      }\n    }\n\n    function isResourceUrlAllowedByPolicy(url) {\n      var parsedUrl = urlResolve(url.toString());\n      var i, n, allowed = false;\n      // Ensure that at least one item from the whitelist allows this url.\n      for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {\n        if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {\n          allowed = true;\n          break;\n        }\n      }\n      if (allowed) {\n        // Ensure that no item from the blacklist blocked this url.\n        for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {\n          if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {\n            allowed = false;\n            break;\n          }\n        }\n      }\n      return allowed;\n    }\n\n    function generateHolderType(Base) {\n      var holderType = function TrustedValueHolderType(trustedValue) {\n        this.$$unwrapTrustedValue = function() {\n          return trustedValue;\n        };\n      };\n      if (Base) {\n        holderType.prototype = new Base();\n      }\n      holderType.prototype.valueOf = function sceValueOf() {\n        return this.$$unwrapTrustedValue();\n      };\n      holderType.prototype.toString = function sceToString() {\n        return this.$$unwrapTrustedValue().toString();\n      };\n      return holderType;\n    }\n\n    var trustedValueHolderBase = generateHolderType(),\n        byType = {};\n\n    byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);\n    byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);\n    byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);\n    byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);\n    byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);\n\n    /**\n     * @ngdoc method\n     * @name $sceDelegate#trustAs\n     *\n     * @description\n     * Returns a trusted representation of the parameter for the specified context. This trusted\n     * object will later on be used as-is, without any security check, by bindings or directives\n     * that require this security context.\n     * For instance, marking a string as trusted for the `$sce.HTML` context will entirely bypass\n     * the potential `$sanitize` call in corresponding `$sce.HTML` bindings or directives, such as\n     * `ng-bind-html`. Note that in most cases you won't need to call this function: if you have the\n     * sanitizer loaded, passing the value itself will render all the HTML that does not pose a\n     * security risk.\n     *\n     * See {@link ng.$sceDelegate#getTrusted getTrusted} for the function that will consume those\n     * trusted values, and {@link ng.$sce $sce} for general documentation about strict contextual\n     * escaping.\n     *\n     * @param {string} type The context in which this value is safe for use, e.g. `$sce.URL`,\n     *     `$sce.RESOURCE_URL`, `$sce.HTML`, `$sce.JS` or `$sce.CSS`.\n     *\n     * @param {*} value The value that should be considered trusted.\n     * @return {*} A trusted representation of value, that can be used in the given context.\n     */\n    function trustAs(type, trustedValue) {\n      var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n      if (!Constructor) {\n        throw $sceMinErr('icontext',\n            'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',\n            type, trustedValue);\n      }\n      if (trustedValue === null || isUndefined(trustedValue) || trustedValue === '') {\n        return trustedValue;\n      }\n      // All the current contexts in SCE_CONTEXTS happen to be strings.  In order to avoid trusting\n      // mutable objects, we ensure here that the value passed in is actually a string.\n      if (typeof trustedValue !== 'string') {\n        throw $sceMinErr('itype',\n            'Attempted to trust a non-string value in a content requiring a string: Context: {0}',\n            type);\n      }\n      return new Constructor(trustedValue);\n    }\n\n    /**\n     * @ngdoc method\n     * @name $sceDelegate#valueOf\n     *\n     * @description\n     * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs\n     * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link\n     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.\n     *\n     * If the passed parameter is not a value that had been returned by {@link\n     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, it must be returned as-is.\n     *\n     * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}\n     *     call or anything else.\n     * @return {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs\n     *     `$sceDelegate.trustAs`} if `value` is the result of such a call.  Otherwise, returns\n     *     `value` unchanged.\n     */\n    function valueOf(maybeTrusted) {\n      if (maybeTrusted instanceof trustedValueHolderBase) {\n        return maybeTrusted.$$unwrapTrustedValue();\n      } else {\n        return maybeTrusted;\n      }\n    }\n\n    /**\n     * @ngdoc method\n     * @name $sceDelegate#getTrusted\n     *\n     * @description\n     * Takes any input, and either returns a value that's safe to use in the specified context, or\n     * throws an exception.\n     *\n     * In practice, there are several cases. When given a string, this function runs checks\n     * and sanitization to make it safe without prior assumptions. When given the result of a {@link\n     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call, it returns the originally supplied\n     * value if that value's context is valid for this call's context. Finally, this function can\n     * also throw when there is no way to turn `maybeTrusted` in a safe value (e.g., no sanitization\n     * is available or possible.)\n     *\n     * @param {string} type The context in which this value is to be used (such as `$sce.HTML`).\n     * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs\n     *     `$sceDelegate.trustAs`} call, or anything else (which will not be considered trusted.)\n     * @return {*} A version of the value that's safe to use in the given context, or throws an\n     *     exception if this is impossible.\n     */\n    function getTrusted(type, maybeTrusted) {\n      if (maybeTrusted === null || isUndefined(maybeTrusted) || maybeTrusted === '') {\n        return maybeTrusted;\n      }\n      var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);\n      // If maybeTrusted is a trusted class instance or subclass instance, then unwrap and return\n      // as-is.\n      if (constructor && maybeTrusted instanceof constructor) {\n        return maybeTrusted.$$unwrapTrustedValue();\n      }\n      // Otherwise, if we get here, then we may either make it safe, or throw an exception. This\n      // depends on the context: some are sanitizatible (HTML), some use whitelists (RESOURCE_URL),\n      // some are impossible to do (JS). This step isn't implemented for CSS and URL, as AngularJS\n      // has no corresponding sinks.\n      if (type === SCE_CONTEXTS.RESOURCE_URL) {\n        // RESOURCE_URL uses a whitelist.\n        if (isResourceUrlAllowedByPolicy(maybeTrusted)) {\n          return maybeTrusted;\n        } else {\n          throw $sceMinErr('insecurl',\n              'Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}',\n              maybeTrusted.toString());\n        }\n      } else if (type === SCE_CONTEXTS.HTML) {\n        // htmlSanitizer throws its own error when no sanitizer is available.\n        return htmlSanitizer(maybeTrusted);\n      }\n      // Default error when the $sce service has no way to make the input safe.\n      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');\n    }\n\n    return { trustAs: trustAs,\n             getTrusted: getTrusted,\n             valueOf: valueOf };\n  }];\n}\n\n\n/**\n * @ngdoc provider\n * @name $sceProvider\n * @this\n *\n * @description\n *\n * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.\n * -   enable/disable Strict Contextual Escaping (SCE) in a module\n * -   override the default implementation with a custom delegate\n *\n * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.\n */\n\n/**\n * @ngdoc service\n * @name $sce\n * @kind function\n *\n * @description\n *\n * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.\n *\n * # Strict Contextual Escaping\n *\n * Strict Contextual Escaping (SCE) is a mode in which AngularJS constrains bindings to only render\n * trusted values. Its goal is to assist in writing code in a way that (a) is secure by default, and\n * (b) makes auditing for security vulnerabilities such as XSS, clickjacking, etc. a lot easier.\n *\n * ## Overview\n *\n * To systematically block XSS security bugs, AngularJS treats all values as untrusted by default in\n * HTML or sensitive URL bindings. When binding untrusted values, AngularJS will automatically\n * run security checks on them (sanitizations, whitelists, depending on context), or throw when it\n * cannot guarantee the security of the result. That behavior depends strongly on contexts: HTML\n * can be sanitized, but template URLs cannot, for instance.\n *\n * To illustrate this, consider the `ng-bind-html` directive. It renders its value directly as HTML:\n * we call that the *context*. When given an untrusted input, AngularJS will attempt to sanitize it\n * before rendering if a sanitizer is available, and throw otherwise. To bypass sanitization and\n * render the input as-is, you will need to mark it as trusted for that context before attempting\n * to bind it.\n *\n * As of version 1.2, AngularJS ships with SCE enabled by default.\n *\n * ## In practice\n *\n * Here's an example of a binding in a privileged context:\n *\n * ```\n * <input ng-model=\"userHtml\" aria-label=\"User input\">\n * <div ng-bind-html=\"userHtml\"></div>\n * ```\n *\n * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user.  With SCE\n * disabled, this application allows the user to render arbitrary HTML into the DIV, which would\n * be an XSS security bug. In a more realistic example, one may be rendering user comments, blog\n * articles, etc. via bindings. (HTML is just one example of a context where rendering user\n * controlled input creates security vulnerabilities.)\n *\n * For the case of HTML, you might use a library, either on the client side, or on the server side,\n * to sanitize unsafe HTML before binding to the value and rendering it in the document.\n *\n * How would you ensure that every place that used these types of bindings was bound to a value that\n * was sanitized by your library (or returned as safe for rendering by your server?)  How can you\n * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some\n * properties/fields and forgot to update the binding to the sanitized value?\n *\n * To be secure by default, AngularJS makes sure bindings go through that sanitization, or\n * any similar validation process, unless there's a good reason to trust the given value in this\n * context.  That trust is formalized with a function call. This means that as a developer, you\n * can assume all untrusted bindings are safe. Then, to audit your code for binding security issues,\n * you just need to ensure the values you mark as trusted indeed are safe - because they were\n * received from your server, sanitized by your library, etc. You can organize your codebase to\n * help with this - perhaps allowing only the files in a specific directory to do this.\n * Ensuring that the internal API exposed by that code doesn't markup arbitrary values as safe then\n * becomes a more manageable task.\n *\n * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}\n * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to\n * build the trusted versions of your values.\n *\n * ## How does it work?\n *\n * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted\n * $sce.getTrusted(context, value)} rather than to the value directly.  Think of this function as\n * a way to enforce the required security context in your data sink. Directives use {@link\n * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs\n * the {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals. Also,\n * when binding without directives, AngularJS will understand the context of your bindings\n * automatically.\n *\n * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link\n * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}.  Here's the actual code (slightly\n * simplified):\n *\n * ```\n * var ngBindHtmlDirective = ['$sce', function($sce) {\n *   return function(scope, element, attr) {\n *     scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {\n *       element.html(value || '');\n *     });\n *   };\n * }];\n * ```\n *\n * ## Impact on loading templates\n *\n * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as\n * `templateUrl`'s specified by {@link guide/directive directives}.\n *\n * By default, Angular only loads templates from the same domain and protocol as the application\n * document.  This is done by calling {@link ng.$sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on the template URL.  To load templates from other domains and/or\n * protocols, you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist\n * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.\n *\n * *Please note*:\n * The browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy apply in addition to this and may further restrict whether the template is successfully\n * loaded.  This means that without the right CORS policy, loading templates from a different domain\n * won't work on all browsers.  Also, loading templates from `file://` URL does not work on some\n * browsers.\n *\n * ## This feels like too much overhead\n *\n * It's important to remember that SCE only applies to interpolation expressions.\n *\n * If your expressions are constant literals, they're automatically trusted and you don't need to\n * call `$sce.trustAs` on them (e.g.\n * `<div ng-bind-html=\"'<b>implicitly trusted</b>'\"></div>`) just works. The `$sceDelegate` will\n * also use the `$sanitize` service if it is available when binding untrusted values to\n * `$sce.HTML` context. AngularJS provides an implementation in `angular-sanitize.js`, and if you\n * wish to use it, you will also need to depend on the {@link ngSanitize `ngSanitize`} module in\n * your application.\n *\n * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load\n * templates in `ng-include` from your application's domain without having to even know about SCE.\n * It blocks loading templates from other domains or loading templates over http from an https\n * served document.  You can change these by setting your own custom {@link\n * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link\n * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.\n *\n * This significantly reduces the overhead.  It is far easier to pay the small overhead and have an\n * application that's secure and can be audited to verify that with much more ease than bolting\n * security onto an application later.\n *\n * <a name=\"contexts\"></a>\n * ## What trusted context types are supported?\n *\n * | Context             | Notes          |\n * |---------------------|----------------|\n * | `$sce.HTML`         | For HTML that's safe to source into the application.  The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered, and the {@link ngSanitize.$sanitize $sanitize} service is available (implemented by the {@link ngSanitize ngSanitize} module) this will sanitize the value instead of throwing an error. |\n * | `$sce.CSS`          | For CSS that's safe to source into the application.  Currently, no bindings require this context. Feel free to use it in your own directives. |\n * | `$sce.URL`          | For URLs that are safe to follow as links.  Currently unused (`<a href=`, `<img src=`, and some others sanitize their urls and don't constitute an SCE context.) |\n * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application.  Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG`, `VIDEO`, `AUDIO`, `SOURCE`, and `TRACK` (e.g. `IFRAME`, `OBJECT`, etc.)  <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does (it's not just the URL that matters, but also what is at the end of it), and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |\n * | `$sce.JS`           | For JavaScript that is safe to execute in your application's context.  Currently, no bindings require this context.  Feel free to use it in your own directives. |\n *\n *\n * Be aware that `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them\n * through {@link ng.$sce#getTrusted $sce.getTrusted}. There's no CSS-, URL-, or JS-context bindings\n * in AngularJS currently, so their corresponding `$sce.trustAs` functions aren't useful yet. This\n * might evolve.\n *\n * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name=\"resourceUrlPatternItem\"></a>\n *\n *  Each element in these arrays must be one of the following:\n *\n *  - **'self'**\n *    - The special **string**, `'self'`, can be used to match against all URLs of the **same\n *      domain** as the application document using the **same protocol**.\n *  - **String** (except the special value `'self'`)\n *    - The string is matched against the full *normalized / absolute URL* of the resource\n *      being tested (substring matches are not good enough.)\n *    - There are exactly **two wildcard sequences** - `*` and `**`.  All other characters\n *      match themselves.\n *    - `*`: matches zero or more occurrences of any character other than one of the following 6\n *      characters: '`:`', '`/`', '`.`', '`?`', '`&`' and '`;`'.  It's a useful wildcard for use\n *      in a whitelist.\n *    - `**`: matches zero or more occurrences of *any* character.  As such, it's not\n *      appropriate for use in a scheme, domain, etc. as it would match too much.  (e.g.\n *      http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might\n *      not have been the intention.)  Its usage at the very end of the path is ok.  (e.g.\n *      http://foo.example.com/templates/**).\n *  - **RegExp** (*see caveat below*)\n *    - *Caveat*:  While regular expressions are powerful and offer great flexibility,  their syntax\n *      (and all the inevitable escaping) makes them *harder to maintain*.  It's easy to\n *      accidentally introduce a bug when one updates a complex expression (imho, all regexes should\n *      have good test coverage).  For instance, the use of `.` in the regex is correct only in a\n *      small number of cases.  A `.` character in the regex used when matching the scheme or a\n *      subdomain could be matched against a `:` or literal `.` that was likely not intended.   It\n *      is highly recommended to use the string patterns and only fall back to regular expressions\n *      as a last resort.\n *    - The regular expression must be an instance of RegExp (i.e. not a string.)  It is\n *      matched against the **entire** *normalized / absolute URL* of the resource being tested\n *      (even when the RegExp did not have the `^` and `$` codes.)  In addition, any flags\n *      present on the RegExp (such as multiline, global, ignoreCase) are ignored.\n *    - If you are generating your JavaScript from some other templating engine (not\n *      recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),\n *      remember to escape your regular expression (and be aware that you might need more than\n *      one level of escaping depending on your templating engine and the way you interpolated\n *      the value.)  Do make use of your platform's escaping mechanism as it might be good\n *      enough before coding your own.  E.g. Ruby has\n *      [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)\n *      and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).\n *      Javascript lacks a similar built in function for escaping.  Take a look at Google\n *      Closure library's [goog.string.regExpEscape(s)](\n *      http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).\n *\n * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.\n *\n * ## Show me an example using SCE.\n *\n * <example module=\"mySceApp\" deps=\"angular-sanitize.js\" name=\"sce-service\">\n * <file name=\"index.html\">\n *   <div ng-controller=\"AppController as myCtrl\">\n *     <i ng-bind-html=\"myCtrl.explicitlyTrustedHtml\" id=\"explicitlyTrustedHtml\"></i><br><br>\n *     <b>User comments</b><br>\n *     By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when\n *     $sanitize is available.  If $sanitize isn't available, this results in an error instead of an\n *     exploit.\n *     <div class=\"well\">\n *       <div ng-repeat=\"userComment in myCtrl.userComments\">\n *         <b>{{userComment.name}}</b>:\n *         <span ng-bind-html=\"userComment.htmlComment\" class=\"htmlComment\"></span>\n *         <br>\n *       </div>\n *     </div>\n *   </div>\n * </file>\n *\n * <file name=\"script.js\">\n *   angular.module('mySceApp', ['ngSanitize'])\n *     .controller('AppController', ['$http', '$templateCache', '$sce',\n *       function AppController($http, $templateCache, $sce) {\n *         var self = this;\n *         $http.get('test_data.json', {cache: $templateCache}).then(function(response) {\n *           self.userComments = response.data;\n *         });\n *         self.explicitlyTrustedHtml = $sce.trustAsHtml(\n *             '<span onmouseover=\"this.textContent=&quot;Explicitly trusted HTML bypasses ' +\n *             'sanitization.&quot;\">Hover over this text.</span>');\n *       }]);\n * </file>\n *\n * <file name=\"test_data.json\">\n * [\n *   { \"name\": \"Alice\",\n *     \"htmlComment\":\n *         \"<span onmouseover='this.textContent=\\\"PWN3D!\\\"'>Is <i>anyone</i> reading this?</span>\"\n *   },\n *   { \"name\": \"Bob\",\n *     \"htmlComment\": \"<i>Yes!</i>  Am I the only other one?\"\n *   }\n * ]\n * </file>\n *\n * <file name=\"protractor.js\" type=\"protractor\">\n *   describe('SCE doc demo', function() {\n *     it('should sanitize untrusted values', function() {\n *       expect(element.all(by.css('.htmlComment')).first().getAttribute('innerHTML'))\n *           .toBe('<span>Is <i>anyone</i> reading this?</span>');\n *     });\n *\n *     it('should NOT sanitize explicitly trusted values', function() {\n *       expect(element(by.id('explicitlyTrustedHtml')).getAttribute('innerHTML')).toBe(\n *           '<span onmouseover=\"this.textContent=&quot;Explicitly trusted HTML bypasses ' +\n *           'sanitization.&quot;\">Hover over this text.</span>');\n *     });\n *   });\n * </file>\n * </example>\n *\n *\n *\n * ## Can I disable SCE completely?\n *\n * Yes, you can.  However, this is strongly discouraged.  SCE gives you a lot of security benefits\n * for little coding overhead.  It will be much harder to take an SCE disabled application and\n * either secure it on your own or enable SCE at a later stage.  It might make sense to disable SCE\n * for cases where you have a lot of existing code that was written before SCE was introduced and\n * you're migrating them a module at a time. Also do note that this is an app-wide setting, so if\n * you are writing a library, you will cause security bugs applications using it.\n *\n * That said, here's how you can completely disable SCE:\n *\n * ```\n * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {\n *   // Completely disable SCE.  For demonstration purposes only!\n *   // Do not use in new projects or libraries.\n *   $sceProvider.enabled(false);\n * });\n * ```\n *\n */\n\nfunction $SceProvider() {\n  var enabled = true;\n\n  /**\n   * @ngdoc method\n   * @name $sceProvider#enabled\n   * @kind function\n   *\n   * @param {boolean=} value If provided, then enables/disables SCE application-wide.\n   * @return {boolean} True if SCE is enabled, false otherwise.\n   *\n   * @description\n   * Enables/disables SCE and returns the current value.\n   */\n  this.enabled = function(value) {\n    if (arguments.length) {\n      enabled = !!value;\n    }\n    return enabled;\n  };\n\n\n  /* Design notes on the default implementation for SCE.\n   *\n   * The API contract for the SCE delegate\n   * -------------------------------------\n   * The SCE delegate object must provide the following 3 methods:\n   *\n   * - trustAs(contextEnum, value)\n   *     This method is used to tell the SCE service that the provided value is OK to use in the\n   *     contexts specified by contextEnum.  It must return an object that will be accepted by\n   *     getTrusted() for a compatible contextEnum and return this value.\n   *\n   * - valueOf(value)\n   *     For values that were not produced by trustAs(), return them as is.  For values that were\n   *     produced by trustAs(), return the corresponding input value to trustAs.  Basically, if\n   *     trustAs is wrapping the given values into some type, this operation unwraps it when given\n   *     such a value.\n   *\n   * - getTrusted(contextEnum, value)\n   *     This function should return the a value that is safe to use in the context specified by\n   *     contextEnum or throw and exception otherwise.\n   *\n   * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be\n   * opaque or wrapped in some holder object.  That happens to be an implementation detail.  For\n   * instance, an implementation could maintain a registry of all trusted objects by context.  In\n   * such a case, trustAs() would return the same object that was passed in.  getTrusted() would\n   * return the same object passed in if it was found in the registry under a compatible context or\n   * throw an exception otherwise.  An implementation might only wrap values some of the time based\n   * on some criteria.  getTrusted() might return a value and not throw an exception for special\n   * constants or objects even if not wrapped.  All such implementations fulfill this contract.\n   *\n   *\n   * A note on the inheritance model for SCE contexts\n   * ------------------------------------------------\n   * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types.  This\n   * is purely an implementation details.\n   *\n   * The contract is simply this:\n   *\n   *     getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)\n   *     will also succeed.\n   *\n   * Inheritance happens to capture this in a natural way. In some future, we may not use\n   * inheritance anymore. That is OK because no code outside of sce.js and sceSpecs.js would need to\n   * be aware of this detail.\n   */\n\n  this.$get = ['$parse', '$sceDelegate', function(\n                $parse,   $sceDelegate) {\n    // Support: IE 9-11 only\n    // Prereq: Ensure that we're not running in IE<11 quirks mode.  In that mode, IE < 11 allow\n    // the \"expression(javascript expression)\" syntax which is insecure.\n    if (enabled && msie < 8) {\n      throw $sceMinErr('iequirks',\n        'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' +\n        'mode.  You can fix this by adding the text <!doctype html> to the top of your HTML ' +\n        'document.  See http://docs.angularjs.org/api/ng.$sce for more information.');\n    }\n\n    var sce = shallowCopy(SCE_CONTEXTS);\n\n    /**\n     * @ngdoc method\n     * @name $sce#isEnabled\n     * @kind function\n     *\n     * @return {Boolean} True if SCE is enabled, false otherwise.  If you want to set the value, you\n     *     have to do it at module config time on {@link ng.$sceProvider $sceProvider}.\n     *\n     * @description\n     * Returns a boolean indicating if SCE is enabled.\n     */\n    sce.isEnabled = function() {\n      return enabled;\n    };\n    sce.trustAs = $sceDelegate.trustAs;\n    sce.getTrusted = $sceDelegate.getTrusted;\n    sce.valueOf = $sceDelegate.valueOf;\n\n    if (!enabled) {\n      sce.trustAs = sce.getTrusted = function(type, value) { return value; };\n      sce.valueOf = identity;\n    }\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAs\n     *\n     * @description\n     * Converts Angular {@link guide/expression expression} into a function.  This is like {@link\n     * ng.$parse $parse} and is identical when the expression is a literal constant.  Otherwise, it\n     * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,\n     * *result*)}\n     *\n     * @param {string} type The SCE context in which this result will be used.\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n    sce.parseAs = function sceParseAs(type, expr) {\n      var parsed = $parse(expr);\n      if (parsed.literal && parsed.constant) {\n        return parsed;\n      } else {\n        return $parse(expr, function(value) {\n          return sce.getTrusted(type, value);\n        });\n      }\n    };\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAs\n     *\n     * @description\n     * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such, returns a\n     * wrapped object that represents your value, and the trust you have in its safety for the given\n     * context. AngularJS can then use that value as-is in bindings of the specified secure context.\n     * This is used in bindings for `ng-bind-html`, `ng-include`, and most `src` attribute\n     * interpolations. See {@link ng.$sce $sce} for strict contextual escaping.\n     *\n     * @param {string} type The context in which this value is safe for use, e.g. `$sce.URL`,\n     *     `$sce.RESOURCE_URL`, `$sce.HTML`, `$sce.JS` or `$sce.CSS`.\n     *\n     * @param {*} value The value that that should be considered trusted.\n     * @return {*} A wrapped version of value that can be used as a trusted variant of your `value`\n     *     in the context you specified.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAsHtml\n     *\n     * @description\n     * Shorthand method.  `$sce.trustAsHtml(value)` →\n     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}\n     *\n     * @param {*} value The value to mark as trusted for `$sce.HTML` context.\n     * @return {*} A wrapped version of value that can be used as a trusted variant of your `value`\n     *     in `$sce.HTML` context (like `ng-bind-html`).\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAsCss\n     *\n     * @description\n     * Shorthand method.  `$sce.trustAsCss(value)` →\n     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.CSS, value)`}\n     *\n     * @param {*} value The value to mark as trusted for `$sce.CSS` context.\n     * @return {*} A wrapped version of value that can be used as a trusted variant\n     *     of your `value` in `$sce.CSS` context. This context is currently unused, so there are\n     *     almost no reasons to use this function so far.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAsUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.trustAsUrl(value)` →\n     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}\n     *\n     * @param {*} value The value to mark as trusted for `$sce.URL` context.\n     * @return {*} A wrapped version of value that can be used as a trusted variant of your `value`\n     *     in `$sce.URL` context. That context is currently unused, so there are almost no reasons\n     *     to use this function so far.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAsResourceUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.trustAsResourceUrl(value)` →\n     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}\n     *\n     * @param {*} value The value to mark as trusted for `$sce.RESOURCE_URL` context.\n     * @return {*} A wrapped version of value that can be used as a trusted variant of your `value`\n     *     in `$sce.RESOURCE_URL` context (template URLs in `ng-include`, most `src` attribute\n     *     bindings, ...)\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#trustAsJs\n     *\n     * @description\n     * Shorthand method.  `$sce.trustAsJs(value)` →\n     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}\n     *\n     * @param {*} value The value to mark as trusted for `$sce.JS` context.\n     * @return {*} A wrapped version of value that can be used as a trusted variant of your `value`\n     *     in `$sce.JS` context. That context is currently unused, so there are almost no reasons to\n     *     use this function so far.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrusted\n     *\n     * @description\n     * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}.  As such,\n     * takes any input, and either returns a value that's safe to use in the specified context,\n     * or throws an exception. This function is aware of trusted values created by the `trustAs`\n     * function and its shorthands, and when contexts are appropriate, returns the unwrapped value\n     * as-is. Finally, this function can also throw when there is no way to turn `maybeTrusted` in a\n     * safe value (e.g., no sanitization is available or possible.)\n     *\n     * @param {string} type The context in which this value is to be used.\n     * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs\n     *     `$sce.trustAs`} call, or anything else (which will not be considered trusted.)\n     * @return {*} A version of the value that's safe to use in the given context, or throws an\n     *     exception if this is impossible.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrustedHtml\n     *\n     * @description\n     * Shorthand method.  `$sce.getTrustedHtml(value)` →\n     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}\n     *\n     * @param {*} value The value to pass to `$sce.getTrusted`.\n     * @return {*} The return value of `$sce.getTrusted($sce.HTML, value)`\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrustedCss\n     *\n     * @description\n     * Shorthand method.  `$sce.getTrustedCss(value)` →\n     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}\n     *\n     * @param {*} value The value to pass to `$sce.getTrusted`.\n     * @return {*} The return value of `$sce.getTrusted($sce.CSS, value)`\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrustedUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.getTrustedUrl(value)` →\n     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}\n     *\n     * @param {*} value The value to pass to `$sce.getTrusted`.\n     * @return {*} The return value of `$sce.getTrusted($sce.URL, value)`\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrustedResourceUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.getTrustedResourceUrl(value)` →\n     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}\n     *\n     * @param {*} value The value to pass to `$sceDelegate.getTrusted`.\n     * @return {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#getTrustedJs\n     *\n     * @description\n     * Shorthand method.  `$sce.getTrustedJs(value)` →\n     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}\n     *\n     * @param {*} value The value to pass to `$sce.getTrusted`.\n     * @return {*} The return value of `$sce.getTrusted($sce.JS, value)`\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAsHtml\n     *\n     * @description\n     * Shorthand method.  `$sce.parseAsHtml(expression string)` →\n     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`}\n     *\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAsCss\n     *\n     * @description\n     * Shorthand method.  `$sce.parseAsCss(value)` →\n     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`}\n     *\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAsUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.parseAsUrl(value)` →\n     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`}\n     *\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAsResourceUrl\n     *\n     * @description\n     * Shorthand method.  `$sce.parseAsResourceUrl(value)` →\n     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`}\n     *\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n\n    /**\n     * @ngdoc method\n     * @name $sce#parseAsJs\n     *\n     * @description\n     * Shorthand method.  `$sce.parseAsJs(value)` →\n     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`}\n     *\n     * @param {string} expression String expression to compile.\n     * @return {function(context, locals)} A function which represents the compiled expression:\n     *\n     *    * `context` – `{object}` – an object against which any expressions embedded in the\n     *      strings are evaluated against (typically a scope object).\n     *    * `locals` – `{object=}` – local variables context object, useful for overriding values\n     *      in `context`.\n     */\n\n    // Shorthand delegations.\n    var parse = sce.parseAs,\n        getTrusted = sce.getTrusted,\n        trustAs = sce.trustAs;\n\n    forEach(SCE_CONTEXTS, function(enumValue, name) {\n      var lName = lowercase(name);\n      sce[snakeToCamel('parse_as_' + lName)] = function(expr) {\n        return parse(enumValue, expr);\n      };\n      sce[snakeToCamel('get_trusted_' + lName)] = function(value) {\n        return getTrusted(enumValue, value);\n      };\n      sce[snakeToCamel('trust_as_' + lName)] = function(value) {\n        return trustAs(enumValue, value);\n      };\n    });\n\n    return sce;\n  }];\n}\n\n/* exported $SnifferProvider */\n\n/**\n * !!! This is an undocumented \"private\" service !!!\n *\n * @name $sniffer\n * @requires $window\n * @requires $document\n * @this\n *\n * @property {boolean} history Does the browser support html5 history api ?\n * @property {boolean} transitions Does the browser support CSS transition events ?\n * @property {boolean} animations Does the browser support CSS animation events ?\n *\n * @description\n * This is very simple implementation of testing browser's features.\n */\nfunction $SnifferProvider() {\n  this.$get = ['$window', '$document', function($window, $document) {\n    var eventSupport = {},\n        // Chrome Packaged Apps are not allowed to access `history.pushState`.\n        // If not sandboxed, they can be detected by the presence of `chrome.app.runtime`\n        // (see https://developer.chrome.com/apps/api_index). If sandboxed, they can be detected by\n        // the presence of an extension runtime ID and the absence of other Chrome runtime APIs\n        // (see https://developer.chrome.com/apps/manifest/sandbox).\n        // (NW.js apps have access to Chrome APIs, but do support `history`.)\n        isNw = $window.nw && $window.nw.process,\n        isChromePackagedApp =\n            !isNw &&\n            $window.chrome &&\n            ($window.chrome.app && $window.chrome.app.runtime ||\n                !$window.chrome.app && $window.chrome.runtime && $window.chrome.runtime.id),\n        hasHistoryPushState = !isChromePackagedApp && $window.history && $window.history.pushState,\n        android =\n          toInt((/android (\\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),\n        boxee = /Boxee/i.test(($window.navigator || {}).userAgent),\n        document = $document[0] || {},\n        bodyStyle = document.body && document.body.style,\n        transitions = false,\n        animations = false;\n\n    if (bodyStyle) {\n      // Support: Android <5, Blackberry Browser 10, default Chrome in Android 4.4.x\n      // Mentioned browsers need a -webkit- prefix for transitions & animations.\n      transitions = !!('transition' in bodyStyle || 'webkitTransition' in bodyStyle);\n      animations = !!('animation' in bodyStyle || 'webkitAnimation' in bodyStyle);\n    }\n\n\n    return {\n      // Android has history.pushState, but it does not update location correctly\n      // so let's not use the history API at all.\n      // http://code.google.com/p/android/issues/detail?id=17471\n      // https://github.com/angular/angular.js/issues/904\n\n      // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has\n      // so let's not use the history API also\n      // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined\n      history: !!(hasHistoryPushState && !(android < 4) && !boxee),\n      hasEvent: function(event) {\n        // Support: IE 9-11 only\n        // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have\n        // it. In particular the event is not fired when backspace or delete key are pressed or\n        // when cut operation is performed.\n        // IE10+ implements 'input' event but it erroneously fires under various situations,\n        // e.g. when placeholder changes, or a form is focused.\n        if (event === 'input' && msie) return false;\n\n        if (isUndefined(eventSupport[event])) {\n          var divElm = document.createElement('div');\n          eventSupport[event] = 'on' + event in divElm;\n        }\n\n        return eventSupport[event];\n      },\n      csp: csp(),\n      transitions: transitions,\n      animations: animations,\n      android: android\n    };\n  }];\n}\n\nvar $templateRequestMinErr = minErr('$compile');\n\n/**\n * @ngdoc provider\n * @name $templateRequestProvider\n * @this\n *\n * @description\n * Used to configure the options passed to the {@link $http} service when making a template request.\n *\n * For example, it can be used for specifying the \"Accept\" header that is sent to the server, when\n * requesting a template.\n */\nfunction $TemplateRequestProvider() {\n\n  var httpOptions;\n\n  /**\n   * @ngdoc method\n   * @name $templateRequestProvider#httpOptions\n   * @description\n   * The options to be passed to the {@link $http} service when making the request.\n   * You can use this to override options such as the \"Accept\" header for template requests.\n   *\n   * The {@link $templateRequest} will set the `cache` and the `transformResponse` properties of the\n   * options if not overridden here.\n   *\n   * @param {string=} value new value for the {@link $http} options.\n   * @returns {string|self} Returns the {@link $http} options when used as getter and self if used as setter.\n   */\n  this.httpOptions = function(val) {\n    if (val) {\n      httpOptions = val;\n      return this;\n    }\n    return httpOptions;\n  };\n\n  /**\n   * @ngdoc service\n   * @name $templateRequest\n   *\n   * @description\n   * The `$templateRequest` service runs security checks then downloads the provided template using\n   * `$http` and, upon success, stores the contents inside of `$templateCache`. If the HTTP request\n   * fails or the response data of the HTTP request is empty, a `$compile` error will be thrown (the\n   * exception can be thwarted by setting the 2nd parameter of the function to true). Note that the\n   * contents of `$templateCache` are trusted, so the call to `$sce.getTrustedUrl(tpl)` is omitted\n   * when `tpl` is of type string and `$templateCache` has the matching entry.\n   *\n   * If you want to pass custom options to the `$http` service, such as setting the Accept header you\n   * can configure this via {@link $templateRequestProvider#httpOptions}.\n   *\n   * @param {string|TrustedResourceUrl} tpl The HTTP request template URL\n   * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty\n   *\n   * @return {Promise} a promise for the HTTP response data of the given URL.\n   *\n   * @property {number} totalPendingRequests total amount of pending template requests being downloaded.\n   */\n  this.$get = ['$exceptionHandler', '$templateCache', '$http', '$q', '$sce',\n    function($exceptionHandler, $templateCache, $http, $q, $sce) {\n\n      function handleRequestFn(tpl, ignoreRequestError) {\n        handleRequestFn.totalPendingRequests++;\n\n        // We consider the template cache holds only trusted templates, so\n        // there's no need to go through whitelisting again for keys that already\n        // are included in there. This also makes Angular accept any script\n        // directive, no matter its name. However, we still need to unwrap trusted\n        // types.\n        if (!isString(tpl) || isUndefined($templateCache.get(tpl))) {\n          tpl = $sce.getTrustedResourceUrl(tpl);\n        }\n\n        var transformResponse = $http.defaults && $http.defaults.transformResponse;\n\n        if (isArray(transformResponse)) {\n          transformResponse = transformResponse.filter(function(transformer) {\n            return transformer !== defaultHttpResponseTransform;\n          });\n        } else if (transformResponse === defaultHttpResponseTransform) {\n          transformResponse = null;\n        }\n\n        return $http.get(tpl, extend({\n            cache: $templateCache,\n            transformResponse: transformResponse\n          }, httpOptions))\n          .finally(function() {\n            handleRequestFn.totalPendingRequests--;\n          })\n          .then(function(response) {\n            $templateCache.put(tpl, response.data);\n            return response.data;\n          }, handleError);\n\n        function handleError(resp) {\n          if (!ignoreRequestError) {\n            resp = $templateRequestMinErr('tpload',\n                'Failed to load template: {0} (HTTP status: {1} {2})',\n                tpl, resp.status, resp.statusText);\n\n            $exceptionHandler(resp);\n          }\n\n          return $q.reject(resp);\n        }\n      }\n\n      handleRequestFn.totalPendingRequests = 0;\n\n      return handleRequestFn;\n    }\n  ];\n}\n\n/** @this */\nfunction $$TestabilityProvider() {\n  this.$get = ['$rootScope', '$browser', '$location',\n       function($rootScope,   $browser,   $location) {\n\n    /**\n     * @name $testability\n     *\n     * @description\n     * The private $$testability service provides a collection of methods for use when debugging\n     * or by automated test and debugging tools.\n     */\n    var testability = {};\n\n    /**\n     * @name $$testability#findBindings\n     *\n     * @description\n     * Returns an array of elements that are bound (via ng-bind or {{}})\n     * to expressions matching the input.\n     *\n     * @param {Element} element The element root to search from.\n     * @param {string} expression The binding expression to match.\n     * @param {boolean} opt_exactMatch If true, only returns exact matches\n     *     for the expression. Filters and whitespace are ignored.\n     */\n    testability.findBindings = function(element, expression, opt_exactMatch) {\n      var bindings = element.getElementsByClassName('ng-binding');\n      var matches = [];\n      forEach(bindings, function(binding) {\n        var dataBinding = angular.element(binding).data('$binding');\n        if (dataBinding) {\n          forEach(dataBinding, function(bindingName) {\n            if (opt_exactMatch) {\n              var matcher = new RegExp('(^|\\\\s)' + escapeForRegexp(expression) + '(\\\\s|\\\\||$)');\n              if (matcher.test(bindingName)) {\n                matches.push(binding);\n              }\n            } else {\n              if (bindingName.indexOf(expression) !== -1) {\n                matches.push(binding);\n              }\n            }\n          });\n        }\n      });\n      return matches;\n    };\n\n    /**\n     * @name $$testability#findModels\n     *\n     * @description\n     * Returns an array of elements that are two-way found via ng-model to\n     * expressions matching the input.\n     *\n     * @param {Element} element The element root to search from.\n     * @param {string} expression The model expression to match.\n     * @param {boolean} opt_exactMatch If true, only returns exact matches\n     *     for the expression.\n     */\n    testability.findModels = function(element, expression, opt_exactMatch) {\n      var prefixes = ['ng-', 'data-ng-', 'ng\\\\:'];\n      for (var p = 0; p < prefixes.length; ++p) {\n        var attributeEquals = opt_exactMatch ? '=' : '*=';\n        var selector = '[' + prefixes[p] + 'model' + attributeEquals + '\"' + expression + '\"]';\n        var elements = element.querySelectorAll(selector);\n        if (elements.length) {\n          return elements;\n        }\n      }\n    };\n\n    /**\n     * @name $$testability#getLocation\n     *\n     * @description\n     * Shortcut for getting the location in a browser agnostic way. Returns\n     *     the path, search, and hash. (e.g. /path?a=b#hash)\n     */\n    testability.getLocation = function() {\n      return $location.url();\n    };\n\n    /**\n     * @name $$testability#setLocation\n     *\n     * @description\n     * Shortcut for navigating to a location without doing a full page reload.\n     *\n     * @param {string} url The location url (path, search and hash,\n     *     e.g. /path?a=b#hash) to go to.\n     */\n    testability.setLocation = function(url) {\n      if (url !== $location.url()) {\n        $location.url(url);\n        $rootScope.$digest();\n      }\n    };\n\n    /**\n     * @name $$testability#whenStable\n     *\n     * @description\n     * Calls the callback when $timeout and $http requests are completed.\n     *\n     * @param {function} callback\n     */\n    testability.whenStable = function(callback) {\n      $browser.notifyWhenNoOutstandingRequests(callback);\n    };\n\n    return testability;\n  }];\n}\n\n/** @this */\nfunction $TimeoutProvider() {\n  this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler',\n       function($rootScope,   $browser,   $q,   $$q,   $exceptionHandler) {\n\n    var deferreds = {};\n\n\n     /**\n      * @ngdoc service\n      * @name $timeout\n      *\n      * @description\n      * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch\n      * block and delegates any exceptions to\n      * {@link ng.$exceptionHandler $exceptionHandler} service.\n      *\n      * The return value of calling `$timeout` is a promise, which will be resolved when\n      * the delay has passed and the timeout function, if provided, is executed.\n      *\n      * To cancel a timeout request, call `$timeout.cancel(promise)`.\n      *\n      * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to\n      * synchronously flush the queue of deferred functions.\n      *\n      * If you only want a promise that will be resolved after some specified delay\n      * then you can call `$timeout` without the `fn` function.\n      *\n      * @param {function()=} fn A function, whose execution should be delayed.\n      * @param {number=} [delay=0] Delay in milliseconds.\n      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise\n      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.\n      * @param {...*=} Pass additional parameters to the executed function.\n      * @returns {Promise} Promise that will be resolved when the timeout is reached. The promise\n      *   will be resolved with the return value of the `fn` function.\n      *\n      */\n    function timeout(fn, delay, invokeApply) {\n      if (!isFunction(fn)) {\n        invokeApply = delay;\n        delay = fn;\n        fn = noop;\n      }\n\n      var args = sliceArgs(arguments, 3),\n          skipApply = (isDefined(invokeApply) && !invokeApply),\n          deferred = (skipApply ? $$q : $q).defer(),\n          promise = deferred.promise,\n          timeoutId;\n\n      timeoutId = $browser.defer(function() {\n        try {\n          deferred.resolve(fn.apply(null, args));\n        } catch (e) {\n          deferred.reject(e);\n          $exceptionHandler(e);\n        } finally {\n          delete deferreds[promise.$$timeoutId];\n        }\n\n        if (!skipApply) $rootScope.$apply();\n      }, delay);\n\n      promise.$$timeoutId = timeoutId;\n      deferreds[timeoutId] = deferred;\n\n      return promise;\n    }\n\n\n     /**\n      * @ngdoc method\n      * @name $timeout#cancel\n      *\n      * @description\n      * Cancels a task associated with the `promise`. As a result of this, the promise will be\n      * resolved with a rejection.\n      *\n      * @param {Promise=} promise Promise returned by the `$timeout` function.\n      * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n      *   canceled.\n      */\n    timeout.cancel = function(promise) {\n      if (promise && promise.$$timeoutId in deferreds) {\n        // Timeout cancels should not report an unhandled promise.\n        markQExceptionHandled(deferreds[promise.$$timeoutId].promise);\n        deferreds[promise.$$timeoutId].reject('canceled');\n        delete deferreds[promise.$$timeoutId];\n        return $browser.defer.cancel(promise.$$timeoutId);\n      }\n      return false;\n    };\n\n    return timeout;\n  }];\n}\n\n// NOTE:  The usage of window and document instead of $window and $document here is\n// deliberate.  This service depends on the specific behavior of anchor nodes created by the\n// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and\n// cause us to break tests.  In addition, when the browser resolves a URL for XHR, it\n// doesn't know about mocked locations and resolves URLs to the real document - which is\n// exactly the behavior needed here.  There is little value is mocking these out for this\n// service.\nvar urlParsingNode = window.document.createElement('a');\nvar originUrl = urlResolve(window.location.href);\n\n\n/**\n *\n * Implementation Notes for non-IE browsers\n * ----------------------------------------\n * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,\n * results both in the normalizing and parsing of the URL.  Normalizing means that a relative\n * URL will be resolved into an absolute URL in the context of the application document.\n * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related\n * properties are all populated to reflect the normalized URL.  This approach has wide\n * compatibility - Safari 1+, Mozilla 1+ etc.  See\n * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n *\n * Implementation Notes for IE\n * ---------------------------\n * IE <= 10 normalizes the URL when assigned to the anchor node similar to the other\n * browsers.  However, the parsed components will not be set if the URL assigned did not specify\n * them.  (e.g. if you assign a.href = \"foo\", then a.protocol, a.host, etc. will be empty.)  We\n * work around that by performing the parsing in a 2nd step by taking a previously normalized\n * URL (e.g. by assigning to a.href) and assigning it a.href again.  This correctly populates the\n * properties such as protocol, hostname, port, etc.\n *\n * References:\n *   http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement\n *   http://www.aptana.com/reference/html/api/HTMLAnchorElement.html\n *   http://url.spec.whatwg.org/#urlutils\n *   https://github.com/angular/angular.js/pull/2902\n *   http://james.padolsey.com/javascript/parsing-urls-with-the-dom/\n *\n * @kind function\n * @param {string} url The URL to be parsed.\n * @description Normalizes and parses a URL.\n * @returns {object} Returns the normalized URL as a dictionary.\n *\n *   | member name   | Description    |\n *   |---------------|----------------|\n *   | href          | A normalized version of the provided URL if it was not an absolute URL |\n *   | protocol      | The protocol including the trailing colon                              |\n *   | host          | The host and port (if the port is non-default) of the normalizedUrl    |\n *   | search        | The search params, minus the question mark                             |\n *   | hash          | The hash string, minus the hash symbol\n *   | hostname      | The hostname\n *   | port          | The port, without \":\"\n *   | pathname      | The pathname, beginning with \"/\"\n *\n */\nfunction urlResolve(url) {\n  var href = url;\n\n  // Support: IE 9-11 only\n  if (msie) {\n    // Normalize before parse.  Refer Implementation Notes on why this is\n    // done in two steps on IE.\n    urlParsingNode.setAttribute('href', href);\n    href = urlParsingNode.href;\n  }\n\n  urlParsingNode.setAttribute('href', href);\n\n  // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n  return {\n    href: urlParsingNode.href,\n    protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n    host: urlParsingNode.host,\n    search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n    hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n    hostname: urlParsingNode.hostname,\n    port: urlParsingNode.port,\n    pathname: (urlParsingNode.pathname.charAt(0) === '/')\n      ? urlParsingNode.pathname\n      : '/' + urlParsingNode.pathname\n  };\n}\n\n/**\n * Parse a request URL and determine whether this is a same-origin request as the application document.\n *\n * @param {string|object} requestUrl The url of the request as a string that will be resolved\n * or a parsed URL object.\n * @returns {boolean} Whether the request is for the same origin as the application document.\n */\nfunction urlIsSameOrigin(requestUrl) {\n  var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;\n  return (parsed.protocol === originUrl.protocol &&\n          parsed.host === originUrl.host);\n}\n\n/**\n * @ngdoc service\n * @name $window\n * @this\n *\n * @description\n * A reference to the browser's `window` object. While `window`\n * is globally available in JavaScript, it causes testability problems, because\n * it is a global variable. In angular we always refer to it through the\n * `$window` service, so it may be overridden, removed or mocked for testing.\n *\n * Expressions, like the one defined for the `ngClick` directive in the example\n * below, are evaluated with respect to the current scope.  Therefore, there is\n * no risk of inadvertently coding in a dependency on a global value in such an\n * expression.\n *\n * @example\n   <example module=\"windowExample\" name=\"window-service\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('windowExample', [])\n           .controller('ExampleController', ['$scope', '$window', function($scope, $window) {\n             $scope.greeting = 'Hello, World!';\n             $scope.doGreeting = function(greeting) {\n               $window.alert(greeting);\n             };\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <input type=\"text\" ng-model=\"greeting\" aria-label=\"greeting\" />\n         <button ng-click=\"doGreeting(greeting)\">ALERT</button>\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n      it('should display the greeting in the input box', function() {\n       element(by.model('greeting')).sendKeys('Hello, E2E Tests');\n       // If we click the button it will block the test runner\n       // element(':button').click();\n      });\n     </file>\n   </example>\n */\nfunction $WindowProvider() {\n  this.$get = valueFn(window);\n}\n\n/**\n * @name $$cookieReader\n * @requires $document\n *\n * @description\n * This is a private service for reading cookies used by $http and ngCookies\n *\n * @return {Object} a key/value map of the current cookies\n */\nfunction $$CookieReader($document) {\n  var rawDocument = $document[0] || {};\n  var lastCookies = {};\n  var lastCookieString = '';\n\n  function safeGetCookie(rawDocument) {\n    try {\n      return rawDocument.cookie || '';\n    } catch (e) {\n      return '';\n    }\n  }\n\n  function safeDecodeURIComponent(str) {\n    try {\n      return decodeURIComponent(str);\n    } catch (e) {\n      return str;\n    }\n  }\n\n  return function() {\n    var cookieArray, cookie, i, index, name;\n    var currentCookieString = safeGetCookie(rawDocument);\n\n    if (currentCookieString !== lastCookieString) {\n      lastCookieString = currentCookieString;\n      cookieArray = lastCookieString.split('; ');\n      lastCookies = {};\n\n      for (i = 0; i < cookieArray.length; i++) {\n        cookie = cookieArray[i];\n        index = cookie.indexOf('=');\n        if (index > 0) { //ignore nameless cookies\n          name = safeDecodeURIComponent(cookie.substring(0, index));\n          // the first value that is seen for a cookie is the most\n          // specific one.  values for the same cookie name that\n          // follow are for less specific paths.\n          if (isUndefined(lastCookies[name])) {\n            lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));\n          }\n        }\n      }\n    }\n    return lastCookies;\n  };\n}\n\n$$CookieReader.$inject = ['$document'];\n\n/** @this */\nfunction $$CookieReaderProvider() {\n  this.$get = $$CookieReader;\n}\n\n/* global currencyFilter: true,\n dateFilter: true,\n filterFilter: true,\n jsonFilter: true,\n limitToFilter: true,\n lowercaseFilter: true,\n numberFilter: true,\n orderByFilter: true,\n uppercaseFilter: true,\n */\n\n/**\n * @ngdoc provider\n * @name $filterProvider\n * @description\n *\n * Filters are just functions which transform input to an output. However filters need to be\n * Dependency Injected. To achieve this a filter definition consists of a factory function which is\n * annotated with dependencies and is responsible for creating a filter function.\n *\n * <div class=\"alert alert-warning\">\n * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.\n * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace\n * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores\n * (`myapp_subsection_filterx`).\n * </div>\n *\n * ```js\n *   // Filter registration\n *   function MyModule($provide, $filterProvider) {\n *     // create a service to demonstrate injection (not always needed)\n *     $provide.value('greet', function(name){\n *       return 'Hello ' + name + '!';\n *     });\n *\n *     // register a filter factory which uses the\n *     // greet service to demonstrate DI.\n *     $filterProvider.register('greet', function(greet){\n *       // return the filter function which uses the greet service\n *       // to generate salutation\n *       return function(text) {\n *         // filters need to be forgiving so check input validity\n *         return text && greet(text) || text;\n *       };\n *     });\n *   }\n * ```\n *\n * The filter function is registered with the `$injector` under the filter name suffix with\n * `Filter`.\n *\n * ```js\n *   it('should be the same instance', inject(\n *     function($filterProvider) {\n *       $filterProvider.register('reverse', function(){\n *         return ...;\n *       });\n *     },\n *     function($filter, reverseFilter) {\n *       expect($filter('reverse')).toBe(reverseFilter);\n *     });\n * ```\n *\n *\n * For more information about how angular filters work, and how to create your own filters, see\n * {@link guide/filter Filters} in the Angular Developer Guide.\n */\n\n/**\n * @ngdoc service\n * @name $filter\n * @kind function\n * @description\n * Filters are used for formatting data displayed to the user.\n *\n * They can be used in view templates, controllers or services.Angular comes\n * with a collection of [built-in filters](api/ng/filter), but it is easy to\n * define your own as well.\n *\n * The general syntax in templates is as follows:\n *\n * ```html\n * {{ expression [| filter_name[:parameter_value] ... ] }}\n * ```\n *\n * @param {String} name Name of the filter function to retrieve\n * @return {Function} the filter function\n * @example\n   <example name=\"$filter\" module=\"filterExample\">\n     <file name=\"index.html\">\n       <div ng-controller=\"MainCtrl\">\n        <h3>{{ originalText }}</h3>\n        <h3>{{ filteredText }}</h3>\n       </div>\n     </file>\n\n     <file name=\"script.js\">\n      angular.module('filterExample', [])\n      .controller('MainCtrl', function($scope, $filter) {\n        $scope.originalText = 'hello';\n        $scope.filteredText = $filter('uppercase')($scope.originalText);\n      });\n     </file>\n   </example>\n  */\n$FilterProvider.$inject = ['$provide'];\n/** @this */\nfunction $FilterProvider($provide) {\n  var suffix = 'Filter';\n\n  /**\n   * @ngdoc method\n   * @name $filterProvider#register\n   * @param {string|Object} name Name of the filter function, or an object map of filters where\n   *    the keys are the filter names and the values are the filter factories.\n   *\n   *    <div class=\"alert alert-warning\">\n   *    **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.\n   *    Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace\n   *    your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores\n   *    (`myapp_subsection_filterx`).\n   *    </div>\n    * @param {Function} factory If the first argument was a string, a factory function for the filter to be registered.\n   * @returns {Object} Registered filter instance, or if a map of filters was provided then a map\n   *    of the registered filter instances.\n   */\n  function register(name, factory) {\n    if (isObject(name)) {\n      var filters = {};\n      forEach(name, function(filter, key) {\n        filters[key] = register(key, filter);\n      });\n      return filters;\n    } else {\n      return $provide.factory(name + suffix, factory);\n    }\n  }\n  this.register = register;\n\n  this.$get = ['$injector', function($injector) {\n    return function(name) {\n      return $injector.get(name + suffix);\n    };\n  }];\n\n  ////////////////////////////////////////\n\n  /* global\n    currencyFilter: false,\n    dateFilter: false,\n    filterFilter: false,\n    jsonFilter: false,\n    limitToFilter: false,\n    lowercaseFilter: false,\n    numberFilter: false,\n    orderByFilter: false,\n    uppercaseFilter: false\n  */\n\n  register('currency', currencyFilter);\n  register('date', dateFilter);\n  register('filter', filterFilter);\n  register('json', jsonFilter);\n  register('limitTo', limitToFilter);\n  register('lowercase', lowercaseFilter);\n  register('number', numberFilter);\n  register('orderBy', orderByFilter);\n  register('uppercase', uppercaseFilter);\n}\n\n/**\n * @ngdoc filter\n * @name filter\n * @kind function\n *\n * @description\n * Selects a subset of items from `array` and returns it as a new array.\n *\n * @param {Array} array The source array.\n * <div class=\"alert alert-info\">\n *   **Note**: If the array contains objects that reference themselves, filtering is not possible.\n * </div>\n * @param {string|Object|function()} expression The predicate to be used for selecting items from\n *   `array`.\n *\n *   Can be one of:\n *\n *   - `string`: The string is used for matching against the contents of the `array`. All strings or\n *     objects with string properties in `array` that match this string will be returned. This also\n *     applies to nested object properties.\n *     The predicate can be negated by prefixing the string with `!`.\n *\n *   - `Object`: A pattern object can be used to filter specific properties on objects contained\n *     by `array`. For example `{name:\"M\", phone:\"1\"}` predicate will return an array of items\n *     which have property `name` containing \"M\" and property `phone` containing \"1\". A special\n *     property name (`$` by default) can be used (e.g. as in `{$: \"text\"}`) to accept a match\n *     against any property of the object or its nested object properties. That's equivalent to the\n *     simple substring match with a `string` as described above. The special property name can be\n *     overwritten, using the `anyPropertyKey` parameter.\n *     The predicate can be negated by prefixing the string with `!`.\n *     For example `{name: \"!M\"}` predicate will return an array of items which have property `name`\n *     not containing \"M\".\n *\n *     Note that a named property will match properties on the same level only, while the special\n *     `$` property will match properties on the same level or deeper. E.g. an array item like\n *     `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but\n *     **will** be matched by `{$: 'John'}`.\n *\n *   - `function(value, index, array)`: A predicate function can be used to write arbitrary filters.\n *     The function is called for each element of the array, with the element, its index, and\n *     the entire array itself as arguments.\n *\n *     The final result is an array of those elements that the predicate returned true for.\n *\n * @param {function(actual, expected)|true|false} [comparator] Comparator which is used in\n *     determining if values retrieved using `expression` (when it is not a function) should be\n *     considered a match based on the expected value (from the filter expression) and actual\n *     value (from the object in the array).\n *\n *   Can be one of:\n *\n *   - `function(actual, expected)`:\n *     The function will be given the object value and the predicate value to compare and\n *     should return true if both values should be considered equal.\n *\n *   - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`.\n *     This is essentially strict comparison of expected and actual.\n *\n *   - `false`: A short hand for a function which will look for a substring match in a case\n *     insensitive way. Primitive values are converted to strings. Objects are not compared against\n *     primitives, unless they have a custom `toString` method (e.g. `Date` objects).\n *\n *\n *   Defaults to `false`.\n *\n * @param {string} [anyPropertyKey] The special property name that matches against any property.\n *     By default `$`.\n *\n * @example\n   <example name=\"filter-filter\">\n     <file name=\"index.html\">\n       <div ng-init=\"friends = [{name:'John', phone:'555-1276'},\n                                {name:'Mary', phone:'800-BIG-MARY'},\n                                {name:'Mike', phone:'555-4321'},\n                                {name:'Adam', phone:'555-5678'},\n                                {name:'Julie', phone:'555-8765'},\n                                {name:'Juliette', phone:'555-5678'}]\"></div>\n\n       <label>Search: <input ng-model=\"searchText\"></label>\n       <table id=\"searchTextResults\">\n         <tr><th>Name</th><th>Phone</th></tr>\n         <tr ng-repeat=\"friend in friends | filter:searchText\">\n           <td>{{friend.name}}</td>\n           <td>{{friend.phone}}</td>\n         </tr>\n       </table>\n       <hr>\n       <label>Any: <input ng-model=\"search.$\"></label> <br>\n       <label>Name only <input ng-model=\"search.name\"></label><br>\n       <label>Phone only <input ng-model=\"search.phone\"></label><br>\n       <label>Equality <input type=\"checkbox\" ng-model=\"strict\"></label><br>\n       <table id=\"searchObjResults\">\n         <tr><th>Name</th><th>Phone</th></tr>\n         <tr ng-repeat=\"friendObj in friends | filter:search:strict\">\n           <td>{{friendObj.name}}</td>\n           <td>{{friendObj.phone}}</td>\n         </tr>\n       </table>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       var expectFriendNames = function(expectedNames, key) {\n         element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {\n           arr.forEach(function(wd, i) {\n             expect(wd.getText()).toMatch(expectedNames[i]);\n           });\n         });\n       };\n\n       it('should search across all fields when filtering with a string', function() {\n         var searchText = element(by.model('searchText'));\n         searchText.clear();\n         searchText.sendKeys('m');\n         expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');\n\n         searchText.clear();\n         searchText.sendKeys('76');\n         expectFriendNames(['John', 'Julie'], 'friend');\n       });\n\n       it('should search in specific fields when filtering with a predicate object', function() {\n         var searchAny = element(by.model('search.$'));\n         searchAny.clear();\n         searchAny.sendKeys('i');\n         expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');\n       });\n       it('should use a equal comparison when comparator is true', function() {\n         var searchName = element(by.model('search.name'));\n         var strict = element(by.model('strict'));\n         searchName.clear();\n         searchName.sendKeys('Julie');\n         strict.click();\n         expectFriendNames(['Julie'], 'friendObj');\n       });\n     </file>\n   </example>\n */\n\nfunction filterFilter() {\n  return function(array, expression, comparator, anyPropertyKey) {\n    if (!isArrayLike(array)) {\n      if (array == null) {\n        return array;\n      } else {\n        throw minErr('filter')('notarray', 'Expected array but received: {0}', array);\n      }\n    }\n\n    anyPropertyKey = anyPropertyKey || '$';\n    var expressionType = getTypeForFilter(expression);\n    var predicateFn;\n    var matchAgainstAnyProp;\n\n    switch (expressionType) {\n      case 'function':\n        predicateFn = expression;\n        break;\n      case 'boolean':\n      case 'null':\n      case 'number':\n      case 'string':\n        matchAgainstAnyProp = true;\n        // falls through\n      case 'object':\n        predicateFn = createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp);\n        break;\n      default:\n        return array;\n    }\n\n    return Array.prototype.filter.call(array, predicateFn);\n  };\n}\n\n// Helper functions for `filterFilter`\nfunction createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp) {\n  var shouldMatchPrimitives = isObject(expression) && (anyPropertyKey in expression);\n  var predicateFn;\n\n  if (comparator === true) {\n    comparator = equals;\n  } else if (!isFunction(comparator)) {\n    comparator = function(actual, expected) {\n      if (isUndefined(actual)) {\n        // No substring matching against `undefined`\n        return false;\n      }\n      if ((actual === null) || (expected === null)) {\n        // No substring matching against `null`; only match against `null`\n        return actual === expected;\n      }\n      if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) {\n        // Should not compare primitives against objects, unless they have custom `toString` method\n        return false;\n      }\n\n      actual = lowercase('' + actual);\n      expected = lowercase('' + expected);\n      return actual.indexOf(expected) !== -1;\n    };\n  }\n\n  predicateFn = function(item) {\n    if (shouldMatchPrimitives && !isObject(item)) {\n      return deepCompare(item, expression[anyPropertyKey], comparator, anyPropertyKey, false);\n    }\n    return deepCompare(item, expression, comparator, anyPropertyKey, matchAgainstAnyProp);\n  };\n\n  return predicateFn;\n}\n\nfunction deepCompare(actual, expected, comparator, anyPropertyKey, matchAgainstAnyProp, dontMatchWholeObject) {\n  var actualType = getTypeForFilter(actual);\n  var expectedType = getTypeForFilter(expected);\n\n  if ((expectedType === 'string') && (expected.charAt(0) === '!')) {\n    return !deepCompare(actual, expected.substring(1), comparator, anyPropertyKey, matchAgainstAnyProp);\n  } else if (isArray(actual)) {\n    // In case `actual` is an array, consider it a match\n    // if ANY of it's items matches `expected`\n    return actual.some(function(item) {\n      return deepCompare(item, expected, comparator, anyPropertyKey, matchAgainstAnyProp);\n    });\n  }\n\n  switch (actualType) {\n    case 'object':\n      var key;\n      if (matchAgainstAnyProp) {\n        for (key in actual) {\n          // Under certain, rare, circumstances, key may not be a string and `charAt` will be undefined\n          // See: https://github.com/angular/angular.js/issues/15644\n          if (key.charAt && (key.charAt(0) !== '$') &&\n              deepCompare(actual[key], expected, comparator, anyPropertyKey, true)) {\n            return true;\n          }\n        }\n        return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, anyPropertyKey, false);\n      } else if (expectedType === 'object') {\n        for (key in expected) {\n          var expectedVal = expected[key];\n          if (isFunction(expectedVal) || isUndefined(expectedVal)) {\n            continue;\n          }\n\n          var matchAnyProperty = key === anyPropertyKey;\n          var actualVal = matchAnyProperty ? actual : actual[key];\n          if (!deepCompare(actualVal, expectedVal, comparator, anyPropertyKey, matchAnyProperty, matchAnyProperty)) {\n            return false;\n          }\n        }\n        return true;\n      } else {\n        return comparator(actual, expected);\n      }\n    case 'function':\n      return false;\n    default:\n      return comparator(actual, expected);\n  }\n}\n\n// Used for easily differentiating between `null` and actual `object`\nfunction getTypeForFilter(val) {\n  return (val === null) ? 'null' : typeof val;\n}\n\nvar MAX_DIGITS = 22;\nvar DECIMAL_SEP = '.';\nvar ZERO_CHAR = '0';\n\n/**\n * @ngdoc filter\n * @name currency\n * @kind function\n *\n * @description\n * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default\n * symbol for current locale is used.\n *\n * @param {number} amount Input to filter.\n * @param {string=} symbol Currency symbol or identifier to be displayed.\n * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale\n * @returns {string} Formatted number.\n *\n *\n * @example\n   <example module=\"currencyExample\" name=\"currency-filter\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('currencyExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.amount = 1234.56;\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <input type=\"number\" ng-model=\"amount\" aria-label=\"amount\"> <br>\n         default currency symbol ($): <span id=\"currency-default\">{{amount | currency}}</span><br>\n         custom currency identifier (USD$): <span id=\"currency-custom\">{{amount | currency:\"USD$\"}}</span><br>\n         no fractions (0): <span id=\"currency-no-fractions\">{{amount | currency:\"USD$\":0}}</span>\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should init with 1234.56', function() {\n         expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');\n         expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56');\n         expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235');\n       });\n       it('should update', function() {\n         if (browser.params.browser === 'safari') {\n           // Safari does not understand the minus key. See\n           // https://github.com/angular/protractor/issues/481\n           return;\n         }\n         element(by.model('amount')).clear();\n         element(by.model('amount')).sendKeys('-1234');\n         expect(element(by.id('currency-default')).getText()).toBe('-$1,234.00');\n         expect(element(by.id('currency-custom')).getText()).toBe('-USD$1,234.00');\n         expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234');\n       });\n     </file>\n   </example>\n */\ncurrencyFilter.$inject = ['$locale'];\nfunction currencyFilter($locale) {\n  var formats = $locale.NUMBER_FORMATS;\n  return function(amount, currencySymbol, fractionSize) {\n    if (isUndefined(currencySymbol)) {\n      currencySymbol = formats.CURRENCY_SYM;\n    }\n\n    if (isUndefined(fractionSize)) {\n      fractionSize = formats.PATTERNS[1].maxFrac;\n    }\n\n    // if null or undefined pass it through\n    return (amount == null)\n        ? amount\n        : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).\n            replace(/\\u00A4/g, currencySymbol);\n  };\n}\n\n/**\n * @ngdoc filter\n * @name number\n * @kind function\n *\n * @description\n * Formats a number as text.\n *\n * If the input is null or undefined, it will just be returned.\n * If the input is infinite (Infinity or -Infinity), the Infinity symbol '∞' or '-∞' is returned, respectively.\n * If the input is not a number an empty string is returned.\n *\n *\n * @param {number|string} number Number to format.\n * @param {(number|string)=} fractionSize Number of decimal places to round the number to.\n * If this is not provided then the fraction size is computed from the current locale's number\n * formatting pattern. In the case of the default locale, it will be 3.\n * @returns {string} Number rounded to `fractionSize` appropriately formatted based on the current\n *                   locale (e.g., in the en_US locale it will have \".\" as the decimal separator and\n *                   include \",\" group separators after each third digit).\n *\n * @example\n   <example module=\"numberFilterExample\" name=\"number-filter\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('numberFilterExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.val = 1234.56789;\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <label>Enter number: <input ng-model='val'></label><br>\n         Default formatting: <span id='number-default'>{{val | number}}</span><br>\n         No fractions: <span>{{val | number:0}}</span><br>\n         Negative number: <span>{{-val | number:4}}</span>\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should format numbers', function() {\n         expect(element(by.id('number-default')).getText()).toBe('1,234.568');\n         expect(element(by.binding('val | number:0')).getText()).toBe('1,235');\n         expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');\n       });\n\n       it('should update', function() {\n         element(by.model('val')).clear();\n         element(by.model('val')).sendKeys('3374.333');\n         expect(element(by.id('number-default')).getText()).toBe('3,374.333');\n         expect(element(by.binding('val | number:0')).getText()).toBe('3,374');\n         expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');\n      });\n     </file>\n   </example>\n */\nnumberFilter.$inject = ['$locale'];\nfunction numberFilter($locale) {\n  var formats = $locale.NUMBER_FORMATS;\n  return function(number, fractionSize) {\n\n    // if null or undefined pass it through\n    return (number == null)\n        ? number\n        : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,\n                       fractionSize);\n  };\n}\n\n/**\n * Parse a number (as a string) into three components that can be used\n * for formatting the number.\n *\n * (Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/)\n *\n * @param  {string} numStr The number to parse\n * @return {object} An object describing this number, containing the following keys:\n *  - d : an array of digits containing leading zeros as necessary\n *  - i : the number of the digits in `d` that are to the left of the decimal point\n *  - e : the exponent for numbers that would need more than `MAX_DIGITS` digits in `d`\n *\n */\nfunction parse(numStr) {\n  var exponent = 0, digits, numberOfIntegerDigits;\n  var i, j, zeros;\n\n  // Decimal point?\n  if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) {\n    numStr = numStr.replace(DECIMAL_SEP, '');\n  }\n\n  // Exponential form?\n  if ((i = numStr.search(/e/i)) > 0) {\n    // Work out the exponent.\n    if (numberOfIntegerDigits < 0) numberOfIntegerDigits = i;\n    numberOfIntegerDigits += +numStr.slice(i + 1);\n    numStr = numStr.substring(0, i);\n  } else if (numberOfIntegerDigits < 0) {\n    // There was no decimal point or exponent so it is an integer.\n    numberOfIntegerDigits = numStr.length;\n  }\n\n  // Count the number of leading zeros.\n  for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */ }\n\n  if (i === (zeros = numStr.length)) {\n    // The digits are all zero.\n    digits = [0];\n    numberOfIntegerDigits = 1;\n  } else {\n    // Count the number of trailing zeros\n    zeros--;\n    while (numStr.charAt(zeros) === ZERO_CHAR) zeros--;\n\n    // Trailing zeros are insignificant so ignore them\n    numberOfIntegerDigits -= i;\n    digits = [];\n    // Convert string to array of digits without leading/trailing zeros.\n    for (j = 0; i <= zeros; i++, j++) {\n      digits[j] = +numStr.charAt(i);\n    }\n  }\n\n  // If the number overflows the maximum allowed digits then use an exponent.\n  if (numberOfIntegerDigits > MAX_DIGITS) {\n    digits = digits.splice(0, MAX_DIGITS - 1);\n    exponent = numberOfIntegerDigits - 1;\n    numberOfIntegerDigits = 1;\n  }\n\n  return { d: digits, e: exponent, i: numberOfIntegerDigits };\n}\n\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changed the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {\n    var digits = parsedNumber.d;\n    var fractionLen = digits.length - parsedNumber.i;\n\n    // determine fractionSize if it is not specified; `+fractionSize` converts it to a number\n    fractionSize = (isUndefined(fractionSize)) ? Math.min(Math.max(minFrac, fractionLen), maxFrac) : +fractionSize;\n\n    // The index of the digit to where rounding is to occur\n    var roundAt = fractionSize + parsedNumber.i;\n    var digit = digits[roundAt];\n\n    if (roundAt > 0) {\n      // Drop fractional digits beyond `roundAt`\n      digits.splice(Math.max(parsedNumber.i, roundAt));\n\n      // Set non-fractional digits beyond `roundAt` to 0\n      for (var j = roundAt; j < digits.length; j++) {\n        digits[j] = 0;\n      }\n    } else {\n      // We rounded to zero so reset the parsedNumber\n      fractionLen = Math.max(0, fractionLen);\n      parsedNumber.i = 1;\n      digits.length = Math.max(1, roundAt = fractionSize + 1);\n      digits[0] = 0;\n      for (var i = 1; i < roundAt; i++) digits[i] = 0;\n    }\n\n    if (digit >= 5) {\n      if (roundAt - 1 < 0) {\n        for (var k = 0; k > roundAt; k--) {\n          digits.unshift(0);\n          parsedNumber.i++;\n        }\n        digits.unshift(1);\n        parsedNumber.i++;\n      } else {\n        digits[roundAt - 1]++;\n      }\n    }\n\n    // Pad out with zeros to get the required fraction length\n    for (; fractionLen < Math.max(0, fractionSize); fractionLen++) digits.push(0);\n\n\n    // Do any carrying, e.g. a digit was rounded up to 10\n    var carry = digits.reduceRight(function(carry, d, i, digits) {\n      d = d + carry;\n      digits[i] = d % 10;\n      return Math.floor(d / 10);\n    }, 0);\n    if (carry) {\n      digits.unshift(carry);\n      parsedNumber.i++;\n    }\n}\n\n/**\n * Format a number into a string\n * @param  {number} number       The number to format\n * @param  {{\n *           minFrac, // the minimum number of digits required in the fraction part of the number\n *           maxFrac, // the maximum number of digits required in the fraction part of the number\n *           gSize,   // number of digits in each group of separated digits\n *           lgSize,  // number of digits in the last group of digits before the decimal separator\n *           negPre,  // the string to go in front of a negative number (e.g. `-` or `(`))\n *           posPre,  // the string to go in front of a positive number\n *           negSuf,  // the string to go after a negative number (e.g. `)`)\n *           posSuf   // the string to go after a positive number\n *         }} pattern\n * @param  {string} groupSep     The string to separate groups of number (e.g. `,`)\n * @param  {string} decimalSep   The string to act as the decimal separator (e.g. `.`)\n * @param  {[type]} fractionSize The size of the fractional part of the number\n * @return {string}              The number formatted as a string\n */\nfunction formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {\n\n  if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';\n\n  var isInfinity = !isFinite(number);\n  var isZero = false;\n  var numStr = Math.abs(number) + '',\n      formattedText = '',\n      parsedNumber;\n\n  if (isInfinity) {\n    formattedText = '\\u221e';\n  } else {\n    parsedNumber = parse(numStr);\n\n    roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);\n\n    var digits = parsedNumber.d;\n    var integerLen = parsedNumber.i;\n    var exponent = parsedNumber.e;\n    var decimals = [];\n    isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true);\n\n    // pad zeros for small numbers\n    while (integerLen < 0) {\n      digits.unshift(0);\n      integerLen++;\n    }\n\n    // extract decimals digits\n    if (integerLen > 0) {\n      decimals = digits.splice(integerLen, digits.length);\n    } else {\n      decimals = digits;\n      digits = [0];\n    }\n\n    // format the integer digits with grouping separators\n    var groups = [];\n    if (digits.length >= pattern.lgSize) {\n      groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n    }\n    while (digits.length > pattern.gSize) {\n      groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n    }\n    if (digits.length) {\n      groups.unshift(digits.join(''));\n    }\n    formattedText = groups.join(groupSep);\n\n    // append the decimal digits\n    if (decimals.length) {\n      formattedText += decimalSep + decimals.join('');\n    }\n\n    if (exponent) {\n      formattedText += 'e+' + exponent;\n    }\n  }\n  if (number < 0 && !isZero) {\n    return pattern.negPre + formattedText + pattern.negSuf;\n  } else {\n    return pattern.posPre + formattedText + pattern.posSuf;\n  }\n}\n\nfunction padNumber(num, digits, trim, negWrap) {\n  var neg = '';\n  if (num < 0 || (negWrap && num <= 0)) {\n    if (negWrap) {\n      num = -num + 1;\n    } else {\n      num = -num;\n      neg = '-';\n    }\n  }\n  num = '' + num;\n  while (num.length < digits) num = ZERO_CHAR + num;\n  if (trim) {\n    num = num.substr(num.length - digits);\n  }\n  return neg + num;\n}\n\n\nfunction dateGetter(name, size, offset, trim, negWrap) {\n  offset = offset || 0;\n  return function(date) {\n    var value = date['get' + name]();\n    if (offset > 0 || value > -offset) {\n      value += offset;\n    }\n    if (value === 0 && offset === -12) value = 12;\n    return padNumber(value, size, trim, negWrap);\n  };\n}\n\nfunction dateStrGetter(name, shortForm, standAlone) {\n  return function(date, formats) {\n    var value = date['get' + name]();\n    var propPrefix = (standAlone ? 'STANDALONE' : '') + (shortForm ? 'SHORT' : '');\n    var get = uppercase(propPrefix + name);\n\n    return formats[get][value];\n  };\n}\n\nfunction timeZoneGetter(date, formats, offset) {\n  var zone = -1 * offset;\n  var paddedZone = (zone >= 0) ? '+' : '';\n\n  paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +\n                padNumber(Math.abs(zone % 60), 2);\n\n  return paddedZone;\n}\n\nfunction getFirstThursdayOfYear(year) {\n    // 0 = index of January\n    var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay();\n    // 4 = index of Thursday (+1 to account for 1st = 5)\n    // 11 = index of *next* Thursday (+1 account for 1st = 12)\n    return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst);\n}\n\nfunction getThursdayThisWeek(datetime) {\n    return new Date(datetime.getFullYear(), datetime.getMonth(),\n      // 4 = index of Thursday\n      datetime.getDate() + (4 - datetime.getDay()));\n}\n\nfunction weekGetter(size) {\n   return function(date) {\n      var firstThurs = getFirstThursdayOfYear(date.getFullYear()),\n         thisThurs = getThursdayThisWeek(date);\n\n      var diff = +thisThurs - +firstThurs,\n         result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n\n      return padNumber(result, size);\n   };\n}\n\nfunction ampmGetter(date, formats) {\n  return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];\n}\n\nfunction eraGetter(date, formats) {\n  return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1];\n}\n\nfunction longEraGetter(date, formats) {\n  return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1];\n}\n\nvar DATE_FORMATS = {\n  yyyy: dateGetter('FullYear', 4, 0, false, true),\n    yy: dateGetter('FullYear', 2, 0, true, true),\n     y: dateGetter('FullYear', 1, 0, false, true),\n  MMMM: dateStrGetter('Month'),\n   MMM: dateStrGetter('Month', true),\n    MM: dateGetter('Month', 2, 1),\n     M: dateGetter('Month', 1, 1),\n  LLLL: dateStrGetter('Month', false, true),\n    dd: dateGetter('Date', 2),\n     d: dateGetter('Date', 1),\n    HH: dateGetter('Hours', 2),\n     H: dateGetter('Hours', 1),\n    hh: dateGetter('Hours', 2, -12),\n     h: dateGetter('Hours', 1, -12),\n    mm: dateGetter('Minutes', 2),\n     m: dateGetter('Minutes', 1),\n    ss: dateGetter('Seconds', 2),\n     s: dateGetter('Seconds', 1),\n     // while ISO 8601 requires fractions to be prefixed with `.` or `,`\n     // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions\n   sss: dateGetter('Milliseconds', 3),\n  EEEE: dateStrGetter('Day'),\n   EEE: dateStrGetter('Day', true),\n     a: ampmGetter,\n     Z: timeZoneGetter,\n    ww: weekGetter(2),\n     w: weekGetter(1),\n     G: eraGetter,\n     GG: eraGetter,\n     GGG: eraGetter,\n     GGGG: longEraGetter\n};\n\nvar DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\\s\\S]*)/,\n    NUMBER_STRING = /^-?\\d+$/;\n\n/**\n * @ngdoc filter\n * @name date\n * @kind function\n *\n * @description\n *   Formats `date` to a string based on the requested `format`.\n *\n *   `format` string can be composed of the following elements:\n *\n *   * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)\n *   * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n *   * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)\n *   * `'MMMM'`: Month in year (January-December)\n *   * `'MMM'`: Month in year (Jan-Dec)\n *   * `'MM'`: Month in year, padded (01-12)\n *   * `'M'`: Month in year (1-12)\n *   * `'LLLL'`: Stand-alone month in year (January-December)\n *   * `'dd'`: Day in month, padded (01-31)\n *   * `'d'`: Day in month (1-31)\n *   * `'EEEE'`: Day in Week,(Sunday-Saturday)\n *   * `'EEE'`: Day in Week, (Sun-Sat)\n *   * `'HH'`: Hour in day, padded (00-23)\n *   * `'H'`: Hour in day (0-23)\n *   * `'hh'`: Hour in AM/PM, padded (01-12)\n *   * `'h'`: Hour in AM/PM, (1-12)\n *   * `'mm'`: Minute in hour, padded (00-59)\n *   * `'m'`: Minute in hour (0-59)\n *   * `'ss'`: Second in minute, padded (00-59)\n *   * `'s'`: Second in minute (0-59)\n *   * `'sss'`: Millisecond in second, padded (000-999)\n *   * `'a'`: AM/PM marker\n *   * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)\n *   * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year\n *   * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year\n *   * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD')\n *   * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini')\n *\n *   `format` string can also be one of the following predefined\n *   {@link guide/i18n localizable formats}:\n *\n *   * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale\n *     (e.g. Sep 3, 2010 12:05:08 PM)\n *   * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US  locale (e.g. 9/3/10 12:05 PM)\n *   * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US  locale\n *     (e.g. Friday, September 3, 2010)\n *   * `'longDate'`: equivalent to `'MMMM d, y'` for en_US  locale (e.g. September 3, 2010)\n *   * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US  locale (e.g. Sep 3, 2010)\n *   * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)\n *   * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM)\n *   * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM)\n *\n *   `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.\n *   `\"h 'in the morning'\"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence\n *   (e.g. `\"h 'o''clock'\"`).\n *\n *   Any other characters in the `format` string will be output as-is.\n *\n * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or\n *    number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its\n *    shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is\n *    specified in the string input, the time is considered to be in the local timezone.\n * @param {string=} format Formatting rules (see Description). If not specified,\n *    `mediumDate` is used.\n * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the\n *    continental US time zone abbreviations, but for general use, use a time zone offset, for\n *    example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)\n *    If not specified, the timezone of the browser will be used.\n * @returns {string} Formatted string or the input if input is not recognized as date/millis.\n *\n * @example\n   <example name=\"filter-date\">\n     <file name=\"index.html\">\n       <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:\n           <span>{{1288323623006 | date:'medium'}}</span><br>\n       <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:\n          <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>\n       <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:\n          <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>\n       <span ng-non-bindable>{{1288323623006 | date:\"MM/dd/yyyy 'at' h:mma\"}}</span>:\n          <span>{{'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"}}</span><br>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should format date', function() {\n         expect(element(by.binding(\"1288323623006 | date:'medium'\")).getText()).\n            toMatch(/Oct 2\\d, 2010 \\d{1,2}:\\d{2}:\\d{2} (AM|PM)/);\n         expect(element(by.binding(\"1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'\")).getText()).\n            toMatch(/2010-10-2\\d \\d{2}:\\d{2}:\\d{2} (-|\\+)?\\d{4}/);\n         expect(element(by.binding(\"'1288323623006' | date:'MM/dd/yyyy @ h:mma'\")).getText()).\n            toMatch(/10\\/2\\d\\/2010 @ \\d{1,2}:\\d{2}(AM|PM)/);\n         expect(element(by.binding(\"'1288323623006' | date:\\\"MM/dd/yyyy 'at' h:mma\\\"\")).getText()).\n            toMatch(/10\\/2\\d\\/2010 at \\d{1,2}:\\d{2}(AM|PM)/);\n       });\n     </file>\n   </example>\n */\ndateFilter.$inject = ['$locale'];\nfunction dateFilter($locale) {\n\n\n  var R_ISO8601_STR = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n                     // 1        2       3         4          5          6          7          8  9     10      11\n  function jsonStringToDate(string) {\n    var match;\n    if ((match = string.match(R_ISO8601_STR))) {\n      var date = new Date(0),\n          tzHour = 0,\n          tzMin  = 0,\n          dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,\n          timeSetter = match[8] ? date.setUTCHours : date.setHours;\n\n      if (match[9]) {\n        tzHour = toInt(match[9] + match[10]);\n        tzMin = toInt(match[9] + match[11]);\n      }\n      dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));\n      var h = toInt(match[4] || 0) - tzHour;\n      var m = toInt(match[5] || 0) - tzMin;\n      var s = toInt(match[6] || 0);\n      var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\n      timeSetter.call(date, h, m, s, ms);\n      return date;\n    }\n    return string;\n  }\n\n\n  return function(date, format, timezone) {\n    var text = '',\n        parts = [],\n        fn, match;\n\n    format = format || 'mediumDate';\n    format = $locale.DATETIME_FORMATS[format] || format;\n    if (isString(date)) {\n      date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date);\n    }\n\n    if (isNumber(date)) {\n      date = new Date(date);\n    }\n\n    if (!isDate(date) || !isFinite(date.getTime())) {\n      return date;\n    }\n\n    while (format) {\n      match = DATE_FORMATS_SPLIT.exec(format);\n      if (match) {\n        parts = concat(parts, match, 1);\n        format = parts.pop();\n      } else {\n        parts.push(format);\n        format = null;\n      }\n    }\n\n    var dateTimezoneOffset = date.getTimezoneOffset();\n    if (timezone) {\n      dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n      date = convertTimezoneToLocal(date, timezone, true);\n    }\n    forEach(parts, function(value) {\n      fn = DATE_FORMATS[value];\n      text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset)\n                 : value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n    });\n\n    return text;\n  };\n}\n\n\n/**\n * @ngdoc filter\n * @name json\n * @kind function\n *\n * @description\n *   Allows you to convert a JavaScript object into JSON string.\n *\n *   This filter is mostly useful for debugging. When using the double curly {{value}} notation\n *   the binding is automatically converted to JSON.\n *\n * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.\n * @param {number=} spacing The number of spaces to use per indentation, defaults to 2.\n * @returns {string} JSON string.\n *\n *\n * @example\n   <example name=\"filter-json\">\n     <file name=\"index.html\">\n       <pre id=\"default-spacing\">{{ {'name':'value'} | json }}</pre>\n       <pre id=\"custom-spacing\">{{ {'name':'value'} | json:4 }}</pre>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should jsonify filtered objects', function() {\n         expect(element(by.id('default-spacing')).getText()).toMatch(/\\{\\n {2}\"name\": ?\"value\"\\n}/);\n         expect(element(by.id('custom-spacing')).getText()).toMatch(/\\{\\n {4}\"name\": ?\"value\"\\n}/);\n       });\n     </file>\n   </example>\n *\n */\nfunction jsonFilter() {\n  return function(object, spacing) {\n    if (isUndefined(spacing)) {\n        spacing = 2;\n    }\n    return toJson(object, spacing);\n  };\n}\n\n\n/**\n * @ngdoc filter\n * @name lowercase\n * @kind function\n * @description\n * Converts string to lowercase.\n *\n * See the {@link ng.uppercase uppercase filter documentation} for a functionally identical example.\n *\n * @see angular.lowercase\n */\nvar lowercaseFilter = valueFn(lowercase);\n\n\n/**\n * @ngdoc filter\n * @name uppercase\n * @kind function\n * @description\n * Converts string to uppercase.\n * @example\n   <example module=\"uppercaseFilterExample\" name=\"filter-uppercase\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('uppercaseFilterExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.title = 'This is a title';\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <!-- This title should be formatted normally -->\n         <h1>{{title}}</h1>\n         <!-- This title should be capitalized -->\n         <h1>{{title | uppercase}}</h1>\n       </div>\n     </file>\n   </example>\n */\nvar uppercaseFilter = valueFn(uppercase);\n\n/**\n * @ngdoc filter\n * @name limitTo\n * @kind function\n *\n * @description\n * Creates a new array or string containing only a specified number of elements. The elements are\n * taken from either the beginning or the end of the source array, string or number, as specified by\n * the value and sign (positive or negative) of `limit`. Other array-like objects are also supported\n * (e.g. array subclasses, NodeLists, jqLite/jQuery collections etc). If a number is used as input,\n * it is converted to a string.\n *\n * @param {Array|ArrayLike|string|number} input - Array/array-like, string or number to be limited.\n * @param {string|number} limit - The length of the returned array or string. If the `limit` number\n *     is positive, `limit` number of items from the beginning of the source array/string are copied.\n *     If the number is negative, `limit` number  of items from the end of the source array/string\n *     are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined,\n *     the input will be returned unchanged.\n * @param {(string|number)=} begin - Index at which to begin limitation. As a negative index,\n *     `begin` indicates an offset from the end of `input`. Defaults to `0`.\n * @returns {Array|string} A new sub-array or substring of length `limit` or less if the input had\n *     less than `limit` elements.\n *\n * @example\n   <example module=\"limitToExample\" name=\"limit-to-filter\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('limitToExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.numbers = [1,2,3,4,5,6,7,8,9];\n             $scope.letters = \"abcdefghi\";\n             $scope.longNumber = 2345432342;\n             $scope.numLimit = 3;\n             $scope.letterLimit = 3;\n             $scope.longNumberLimit = 3;\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <label>\n            Limit {{numbers}} to:\n            <input type=\"number\" step=\"1\" ng-model=\"numLimit\">\n         </label>\n         <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>\n         <label>\n            Limit {{letters}} to:\n            <input type=\"number\" step=\"1\" ng-model=\"letterLimit\">\n         </label>\n         <p>Output letters: {{ letters | limitTo:letterLimit }}</p>\n         <label>\n            Limit {{longNumber}} to:\n            <input type=\"number\" step=\"1\" ng-model=\"longNumberLimit\">\n         </label>\n         <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p>\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       var numLimitInput = element(by.model('numLimit'));\n       var letterLimitInput = element(by.model('letterLimit'));\n       var longNumberLimitInput = element(by.model('longNumberLimit'));\n       var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));\n       var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));\n       var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit'));\n\n       it('should limit the number array to first three items', function() {\n         expect(numLimitInput.getAttribute('value')).toBe('3');\n         expect(letterLimitInput.getAttribute('value')).toBe('3');\n         expect(longNumberLimitInput.getAttribute('value')).toBe('3');\n         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');\n         expect(limitedLetters.getText()).toEqual('Output letters: abc');\n         expect(limitedLongNumber.getText()).toEqual('Output long number: 234');\n       });\n\n       // There is a bug in safari and protractor that doesn't like the minus key\n       // it('should update the output when -3 is entered', function() {\n       //   numLimitInput.clear();\n       //   numLimitInput.sendKeys('-3');\n       //   letterLimitInput.clear();\n       //   letterLimitInput.sendKeys('-3');\n       //   longNumberLimitInput.clear();\n       //   longNumberLimitInput.sendKeys('-3');\n       //   expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');\n       //   expect(limitedLetters.getText()).toEqual('Output letters: ghi');\n       //   expect(limitedLongNumber.getText()).toEqual('Output long number: 342');\n       // });\n\n       it('should not exceed the maximum size of input array', function() {\n         numLimitInput.clear();\n         numLimitInput.sendKeys('100');\n         letterLimitInput.clear();\n         letterLimitInput.sendKeys('100');\n         longNumberLimitInput.clear();\n         longNumberLimitInput.sendKeys('100');\n         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');\n         expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');\n         expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342');\n       });\n     </file>\n   </example>\n*/\nfunction limitToFilter() {\n  return function(input, limit, begin) {\n    if (Math.abs(Number(limit)) === Infinity) {\n      limit = Number(limit);\n    } else {\n      limit = toInt(limit);\n    }\n    if (isNumberNaN(limit)) return input;\n\n    if (isNumber(input)) input = input.toString();\n    if (!isArrayLike(input)) return input;\n\n    begin = (!begin || isNaN(begin)) ? 0 : toInt(begin);\n    begin = (begin < 0) ? Math.max(0, input.length + begin) : begin;\n\n    if (limit >= 0) {\n      return sliceFn(input, begin, begin + limit);\n    } else {\n      if (begin === 0) {\n        return sliceFn(input, limit, input.length);\n      } else {\n        return sliceFn(input, Math.max(0, begin + limit), begin);\n      }\n    }\n  };\n}\n\nfunction sliceFn(input, begin, end) {\n  if (isString(input)) return input.slice(begin, end);\n\n  return slice.call(input, begin, end);\n}\n\n/**\n * @ngdoc filter\n * @name orderBy\n * @kind function\n *\n * @description\n * Returns an array containing the items from the specified `collection`, ordered by a `comparator`\n * function based on the values computed using the `expression` predicate.\n *\n * For example, `[{id: 'foo'}, {id: 'bar'}] | orderBy:'id'` would result in\n * `[{id: 'bar'}, {id: 'foo'}]`.\n *\n * The `collection` can be an Array or array-like object (e.g. NodeList, jQuery object, TypedArray,\n * String, etc).\n *\n * The `expression` can be a single predicate, or a list of predicates each serving as a tie-breaker\n * for the preceding one. The `expression` is evaluated against each item and the output is used\n * for comparing with other items.\n *\n * You can change the sorting order by setting `reverse` to `true`. By default, items are sorted in\n * ascending order.\n *\n * The comparison is done using the `comparator` function. If none is specified, a default, built-in\n * comparator is used (see below for details - in a nutshell, it compares numbers numerically and\n * strings alphabetically).\n *\n * ### Under the hood\n *\n * Ordering the specified `collection` happens in two phases:\n *\n * 1. All items are passed through the predicate (or predicates), and the returned values are saved\n *    along with their type (`string`, `number` etc). For example, an item `{label: 'foo'}`, passed\n *    through a predicate that extracts the value of the `label` property, would be transformed to:\n *    ```\n *    {\n *      value: 'foo',\n *      type: 'string',\n *      index: ...\n *    }\n *    ```\n * 2. The comparator function is used to sort the items, based on the derived values, types and\n *    indices.\n *\n * If you use a custom comparator, it will be called with pairs of objects of the form\n * `{value: ..., type: '...', index: ...}` and is expected to return `0` if the objects are equal\n * (as far as the comparator is concerned), `-1` if the 1st one should be ranked higher than the\n * second, or `1` otherwise.\n *\n * In order to ensure that the sorting will be deterministic across platforms, if none of the\n * specified predicates can distinguish between two items, `orderBy` will automatically introduce a\n * dummy predicate that returns the item's index as `value`.\n * (If you are using a custom comparator, make sure it can handle this predicate as well.)\n *\n * If a custom comparator still can't distinguish between two items, then they will be sorted based\n * on their index using the built-in comparator.\n *\n * Finally, in an attempt to simplify things, if a predicate returns an object as the extracted\n * value for an item, `orderBy` will try to convert that object to a primitive value, before passing\n * it to the comparator. The following rules govern the conversion:\n *\n * 1. If the object has a `valueOf()` method that returns a primitive, its return value will be\n *    used instead.<br />\n *    (If the object has a `valueOf()` method that returns another object, then the returned object\n *    will be used in subsequent steps.)\n * 2. If the object has a custom `toString()` method (i.e. not the one inherited from `Object`) that\n *    returns a primitive, its return value will be used instead.<br />\n *    (If the object has a `toString()` method that returns another object, then the returned object\n *    will be used in subsequent steps.)\n * 3. No conversion; the object itself is used.\n *\n * ### The default comparator\n *\n * The default, built-in comparator should be sufficient for most usecases. In short, it compares\n * numbers numerically, strings alphabetically (and case-insensitively), for objects falls back to\n * using their index in the original collection, and sorts values of different types by type.\n *\n * More specifically, it follows these steps to determine the relative order of items:\n *\n * 1. If the compared values are of different types, compare the types themselves alphabetically.\n * 2. If both values are of type `string`, compare them alphabetically in a case- and\n *    locale-insensitive way.\n * 3. If both values are objects, compare their indices instead.\n * 4. Otherwise, return:\n *    -  `0`, if the values are equal (by strict equality comparison, i.e. using `===`).\n *    - `-1`, if the 1st value is \"less than\" the 2nd value (compared using the `<` operator).\n *    -  `1`, otherwise.\n *\n * **Note:** If you notice numbers not being sorted as expected, make sure they are actually being\n *           saved as numbers and not strings.\n * **Note:** For the purpose of sorting, `null` values are treated as the string `'null'` (i.e.\n *           `type: 'string'`, `value: 'null'`). This may cause unexpected sort order relative to\n *           other values.\n *\n * @param {Array|ArrayLike} collection - The collection (array or array-like object) to sort.\n * @param {(Function|string|Array.<Function|string>)=} expression - A predicate (or list of\n *    predicates) to be used by the comparator to determine the order of elements.\n *\n *    Can be one of:\n *\n *    - `Function`: A getter function. This function will be called with each item as argument and\n *      the return value will be used for sorting.\n *    - `string`: An Angular expression. This expression will be evaluated against each item and the\n *      result will be used for sorting. For example, use `'label'` to sort by a property called\n *      `label` or `'label.substring(0, 3)'` to sort by the first 3 characters of the `label`\n *      property.<br />\n *      (The result of a constant expression is interpreted as a property name to be used for\n *      comparison. For example, use `'\"special name\"'` (note the extra pair of quotes) to sort by a\n *      property called `special name`.)<br />\n *      An expression can be optionally prefixed with `+` or `-` to control the sorting direction,\n *      ascending or descending. For example, `'+label'` or `'-label'`. If no property is provided,\n *      (e.g. `'+'` or `'-'`), the collection element itself is used in comparisons.\n *    - `Array`: An array of function and/or string predicates. If a predicate cannot determine the\n *      relative order of two items, the next predicate is used as a tie-breaker.\n *\n * **Note:** If the predicate is missing or empty then it defaults to `'+'`.\n *\n * @param {boolean=} reverse - If `true`, reverse the sorting order.\n * @param {(Function)=} comparator - The comparator function used to determine the relative order of\n *    value pairs. If omitted, the built-in comparator will be used.\n *\n * @returns {Array} - The sorted array.\n *\n *\n * @example\n * ### Ordering a table with `ngRepeat`\n *\n * The example below demonstrates a simple {@link ngRepeat ngRepeat}, where the data is sorted by\n * age in descending order (expression is set to `'-age'`). The `comparator` is not set, which means\n * it defaults to the built-in comparator.\n *\n   <example name=\"orderBy-static\" module=\"orderByExample1\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <table class=\"friends\">\n           <tr>\n             <th>Name</th>\n             <th>Phone Number</th>\n             <th>Age</th>\n           </tr>\n           <tr ng-repeat=\"friend in friends | orderBy:'-age'\">\n             <td>{{friend.name}}</td>\n             <td>{{friend.phone}}</td>\n             <td>{{friend.age}}</td>\n           </tr>\n         </table>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('orderByExample1', [])\n         .controller('ExampleController', ['$scope', function($scope) {\n           $scope.friends = [\n             {name: 'John',   phone: '555-1212',  age: 10},\n             {name: 'Mary',   phone: '555-9876',  age: 19},\n             {name: 'Mike',   phone: '555-4321',  age: 21},\n             {name: 'Adam',   phone: '555-5678',  age: 35},\n             {name: 'Julie',  phone: '555-8765',  age: 29}\n           ];\n         }]);\n     </file>\n     <file name=\"style.css\">\n       .friends {\n         border-collapse: collapse;\n       }\n\n       .friends th {\n         border-bottom: 1px solid;\n       }\n       .friends td, .friends th {\n         border-left: 1px solid;\n         padding: 5px 10px;\n       }\n       .friends td:first-child, .friends th:first-child {\n         border-left: none;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       // Element locators\n       var names = element.all(by.repeater('friends').column('friend.name'));\n\n       it('should sort friends by age in reverse order', function() {\n         expect(names.get(0).getText()).toBe('Adam');\n         expect(names.get(1).getText()).toBe('Julie');\n         expect(names.get(2).getText()).toBe('Mike');\n         expect(names.get(3).getText()).toBe('Mary');\n         expect(names.get(4).getText()).toBe('John');\n       });\n     </file>\n   </example>\n * <hr />\n *\n * @example\n * ### Changing parameters dynamically\n *\n * All parameters can be changed dynamically. The next example shows how you can make the columns of\n * a table sortable, by binding the `expression` and `reverse` parameters to scope properties.\n *\n   <example name=\"orderBy-dynamic\" module=\"orderByExample2\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <pre>Sort by = {{propertyName}}; reverse = {{reverse}}</pre>\n         <hr/>\n         <button ng-click=\"propertyName = null; reverse = false\">Set to unsorted</button>\n         <hr/>\n         <table class=\"friends\">\n           <tr>\n             <th>\n               <button ng-click=\"sortBy('name')\">Name</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'name'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n             <th>\n               <button ng-click=\"sortBy('phone')\">Phone Number</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'phone'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n             <th>\n               <button ng-click=\"sortBy('age')\">Age</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'age'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n           </tr>\n           <tr ng-repeat=\"friend in friends | orderBy:propertyName:reverse\">\n             <td>{{friend.name}}</td>\n             <td>{{friend.phone}}</td>\n             <td>{{friend.age}}</td>\n           </tr>\n         </table>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('orderByExample2', [])\n         .controller('ExampleController', ['$scope', function($scope) {\n           var friends = [\n             {name: 'John',   phone: '555-1212',  age: 10},\n             {name: 'Mary',   phone: '555-9876',  age: 19},\n             {name: 'Mike',   phone: '555-4321',  age: 21},\n             {name: 'Adam',   phone: '555-5678',  age: 35},\n             {name: 'Julie',  phone: '555-8765',  age: 29}\n           ];\n\n           $scope.propertyName = 'age';\n           $scope.reverse = true;\n           $scope.friends = friends;\n\n           $scope.sortBy = function(propertyName) {\n             $scope.reverse = ($scope.propertyName === propertyName) ? !$scope.reverse : false;\n             $scope.propertyName = propertyName;\n           };\n         }]);\n     </file>\n     <file name=\"style.css\">\n       .friends {\n         border-collapse: collapse;\n       }\n\n       .friends th {\n         border-bottom: 1px solid;\n       }\n       .friends td, .friends th {\n         border-left: 1px solid;\n         padding: 5px 10px;\n       }\n       .friends td:first-child, .friends th:first-child {\n         border-left: none;\n       }\n\n       .sortorder:after {\n         content: '\\25b2';   // BLACK UP-POINTING TRIANGLE\n       }\n       .sortorder.reverse:after {\n         content: '\\25bc';   // BLACK DOWN-POINTING TRIANGLE\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       // Element locators\n       var unsortButton = element(by.partialButtonText('unsorted'));\n       var nameHeader = element(by.partialButtonText('Name'));\n       var phoneHeader = element(by.partialButtonText('Phone'));\n       var ageHeader = element(by.partialButtonText('Age'));\n       var firstName = element(by.repeater('friends').column('friend.name').row(0));\n       var lastName = element(by.repeater('friends').column('friend.name').row(4));\n\n       it('should sort friends by some property, when clicking on the column header', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         phoneHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Mary');\n\n         nameHeader.click();\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('Mike');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Adam');\n       });\n\n       it('should sort friends in reverse order, when clicking on the same column', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Adam');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n       });\n\n       it('should restore the original order, when clicking \"Set to unsorted\"', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         unsortButton.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Julie');\n       });\n     </file>\n   </example>\n * <hr />\n *\n * @example\n * ### Using `orderBy` inside a controller\n *\n * It is also possible to call the `orderBy` filter manually, by injecting `orderByFilter`, and\n * calling it with the desired parameters. (Alternatively, you could inject the `$filter` factory\n * and retrieve the `orderBy` filter with `$filter('orderBy')`.)\n *\n   <example name=\"orderBy-call-manually\" module=\"orderByExample3\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <pre>Sort by = {{propertyName}}; reverse = {{reverse}}</pre>\n         <hr/>\n         <button ng-click=\"sortBy(null)\">Set to unsorted</button>\n         <hr/>\n         <table class=\"friends\">\n           <tr>\n             <th>\n               <button ng-click=\"sortBy('name')\">Name</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'name'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n             <th>\n               <button ng-click=\"sortBy('phone')\">Phone Number</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'phone'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n             <th>\n               <button ng-click=\"sortBy('age')\">Age</button>\n               <span class=\"sortorder\" ng-show=\"propertyName === 'age'\" ng-class=\"{reverse: reverse}\"></span>\n             </th>\n           </tr>\n           <tr ng-repeat=\"friend in friends\">\n             <td>{{friend.name}}</td>\n             <td>{{friend.phone}}</td>\n             <td>{{friend.age}}</td>\n           </tr>\n         </table>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('orderByExample3', [])\n         .controller('ExampleController', ['$scope', 'orderByFilter', function($scope, orderBy) {\n           var friends = [\n             {name: 'John',   phone: '555-1212',  age: 10},\n             {name: 'Mary',   phone: '555-9876',  age: 19},\n             {name: 'Mike',   phone: '555-4321',  age: 21},\n             {name: 'Adam',   phone: '555-5678',  age: 35},\n             {name: 'Julie',  phone: '555-8765',  age: 29}\n           ];\n\n           $scope.propertyName = 'age';\n           $scope.reverse = true;\n           $scope.friends = orderBy(friends, $scope.propertyName, $scope.reverse);\n\n           $scope.sortBy = function(propertyName) {\n             $scope.reverse = (propertyName !== null && $scope.propertyName === propertyName)\n                 ? !$scope.reverse : false;\n             $scope.propertyName = propertyName;\n             $scope.friends = orderBy(friends, $scope.propertyName, $scope.reverse);\n           };\n         }]);\n     </file>\n     <file name=\"style.css\">\n       .friends {\n         border-collapse: collapse;\n       }\n\n       .friends th {\n         border-bottom: 1px solid;\n       }\n       .friends td, .friends th {\n         border-left: 1px solid;\n         padding: 5px 10px;\n       }\n       .friends td:first-child, .friends th:first-child {\n         border-left: none;\n       }\n\n       .sortorder:after {\n         content: '\\25b2';   // BLACK UP-POINTING TRIANGLE\n       }\n       .sortorder.reverse:after {\n         content: '\\25bc';   // BLACK DOWN-POINTING TRIANGLE\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       // Element locators\n       var unsortButton = element(by.partialButtonText('unsorted'));\n       var nameHeader = element(by.partialButtonText('Name'));\n       var phoneHeader = element(by.partialButtonText('Phone'));\n       var ageHeader = element(by.partialButtonText('Age'));\n       var firstName = element(by.repeater('friends').column('friend.name').row(0));\n       var lastName = element(by.repeater('friends').column('friend.name').row(4));\n\n       it('should sort friends by some property, when clicking on the column header', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         phoneHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Mary');\n\n         nameHeader.click();\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('Mike');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Adam');\n       });\n\n       it('should sort friends in reverse order, when clicking on the same column', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Adam');\n\n         ageHeader.click();\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n       });\n\n       it('should restore the original order, when clicking \"Set to unsorted\"', function() {\n         expect(firstName.getText()).toBe('Adam');\n         expect(lastName.getText()).toBe('John');\n\n         unsortButton.click();\n         expect(firstName.getText()).toBe('John');\n         expect(lastName.getText()).toBe('Julie');\n       });\n     </file>\n   </example>\n * <hr />\n *\n * @example\n * ### Using a custom comparator\n *\n * If you have very specific requirements about the way items are sorted, you can pass your own\n * comparator function. For example, you might need to compare some strings in a locale-sensitive\n * way. (When specifying a custom comparator, you also need to pass a value for the `reverse`\n * argument - passing `false` retains the default sorting order, i.e. ascending.)\n *\n   <example name=\"orderBy-custom-comparator\" module=\"orderByExample4\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <div class=\"friends-container custom-comparator\">\n           <h3>Locale-sensitive Comparator</h3>\n           <table class=\"friends\">\n             <tr>\n               <th>Name</th>\n               <th>Favorite Letter</th>\n             </tr>\n             <tr ng-repeat=\"friend in friends | orderBy:'favoriteLetter':false:localeSensitiveComparator\">\n               <td>{{friend.name}}</td>\n               <td>{{friend.favoriteLetter}}</td>\n             </tr>\n           </table>\n         </div>\n         <div class=\"friends-container default-comparator\">\n           <h3>Default Comparator</h3>\n           <table class=\"friends\">\n             <tr>\n               <th>Name</th>\n               <th>Favorite Letter</th>\n             </tr>\n             <tr ng-repeat=\"friend in friends | orderBy:'favoriteLetter'\">\n               <td>{{friend.name}}</td>\n               <td>{{friend.favoriteLetter}}</td>\n             </tr>\n           </table>\n         </div>\n       </div>\n     </file>\n     <file name=\"script.js\">\n       angular.module('orderByExample4', [])\n         .controller('ExampleController', ['$scope', function($scope) {\n           $scope.friends = [\n             {name: 'John',   favoriteLetter: 'Ä'},\n             {name: 'Mary',   favoriteLetter: 'Ü'},\n             {name: 'Mike',   favoriteLetter: 'Ö'},\n             {name: 'Adam',   favoriteLetter: 'H'},\n             {name: 'Julie',  favoriteLetter: 'Z'}\n           ];\n\n           $scope.localeSensitiveComparator = function(v1, v2) {\n             // If we don't get strings, just compare by index\n             if (v1.type !== 'string' || v2.type !== 'string') {\n               return (v1.index < v2.index) ? -1 : 1;\n             }\n\n             // Compare strings alphabetically, taking locale into account\n             return v1.value.localeCompare(v2.value);\n           };\n         }]);\n     </file>\n     <file name=\"style.css\">\n       .friends-container {\n         display: inline-block;\n         margin: 0 30px;\n       }\n\n       .friends {\n         border-collapse: collapse;\n       }\n\n       .friends th {\n         border-bottom: 1px solid;\n       }\n       .friends td, .friends th {\n         border-left: 1px solid;\n         padding: 5px 10px;\n       }\n       .friends td:first-child, .friends th:first-child {\n         border-left: none;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       // Element locators\n       var container = element(by.css('.custom-comparator'));\n       var names = container.all(by.repeater('friends').column('friend.name'));\n\n       it('should sort friends by favorite letter (in correct alphabetical order)', function() {\n         expect(names.get(0).getText()).toBe('John');\n         expect(names.get(1).getText()).toBe('Adam');\n         expect(names.get(2).getText()).toBe('Mike');\n         expect(names.get(3).getText()).toBe('Mary');\n         expect(names.get(4).getText()).toBe('Julie');\n       });\n     </file>\n   </example>\n *\n */\norderByFilter.$inject = ['$parse'];\nfunction orderByFilter($parse) {\n  return function(array, sortPredicate, reverseOrder, compareFn) {\n\n    if (array == null) return array;\n    if (!isArrayLike(array)) {\n      throw minErr('orderBy')('notarray', 'Expected array but received: {0}', array);\n    }\n\n    if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; }\n    if (sortPredicate.length === 0) { sortPredicate = ['+']; }\n\n    var predicates = processPredicates(sortPredicate);\n\n    var descending = reverseOrder ? -1 : 1;\n\n    // Define the `compare()` function. Use a default comparator if none is specified.\n    var compare = isFunction(compareFn) ? compareFn : defaultCompare;\n\n    // The next three lines are a version of a Swartzian Transform idiom from Perl\n    // (sometimes called the Decorate-Sort-Undecorate idiom)\n    // See https://en.wikipedia.org/wiki/Schwartzian_transform\n    var compareValues = Array.prototype.map.call(array, getComparisonObject);\n    compareValues.sort(doComparison);\n    array = compareValues.map(function(item) { return item.value; });\n\n    return array;\n\n    function getComparisonObject(value, index) {\n      // NOTE: We are adding an extra `tieBreaker` value based on the element's index.\n      // This will be used to keep the sort stable when none of the input predicates can\n      // distinguish between two elements.\n      return {\n        value: value,\n        tieBreaker: {value: index, type: 'number', index: index},\n        predicateValues: predicates.map(function(predicate) {\n          return getPredicateValue(predicate.get(value), index);\n        })\n      };\n    }\n\n    function doComparison(v1, v2) {\n      for (var i = 0, ii = predicates.length; i < ii; i++) {\n        var result = compare(v1.predicateValues[i], v2.predicateValues[i]);\n        if (result) {\n          return result * predicates[i].descending * descending;\n        }\n      }\n\n      return (compare(v1.tieBreaker, v2.tieBreaker) || defaultCompare(v1.tieBreaker, v2.tieBreaker)) * descending;\n    }\n  };\n\n  function processPredicates(sortPredicates) {\n    return sortPredicates.map(function(predicate) {\n      var descending = 1, get = identity;\n\n      if (isFunction(predicate)) {\n        get = predicate;\n      } else if (isString(predicate)) {\n        if ((predicate.charAt(0) === '+' || predicate.charAt(0) === '-')) {\n          descending = predicate.charAt(0) === '-' ? -1 : 1;\n          predicate = predicate.substring(1);\n        }\n        if (predicate !== '') {\n          get = $parse(predicate);\n          if (get.constant) {\n            var key = get();\n            get = function(value) { return value[key]; };\n          }\n        }\n      }\n      return {get: get, descending: descending};\n    });\n  }\n\n  function isPrimitive(value) {\n    switch (typeof value) {\n      case 'number': /* falls through */\n      case 'boolean': /* falls through */\n      case 'string':\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function objectValue(value) {\n    // If `valueOf` is a valid function use that\n    if (isFunction(value.valueOf)) {\n      value = value.valueOf();\n      if (isPrimitive(value)) return value;\n    }\n    // If `toString` is a valid function and not the one from `Object.prototype` use that\n    if (hasCustomToString(value)) {\n      value = value.toString();\n      if (isPrimitive(value)) return value;\n    }\n\n    return value;\n  }\n\n  function getPredicateValue(value, index) {\n    var type = typeof value;\n    if (value === null) {\n      type = 'string';\n      value = 'null';\n    } else if (type === 'object') {\n      value = objectValue(value);\n    }\n    return {value: value, type: type, index: index};\n  }\n\n  function defaultCompare(v1, v2) {\n    var result = 0;\n    var type1 = v1.type;\n    var type2 = v2.type;\n\n    if (type1 === type2) {\n      var value1 = v1.value;\n      var value2 = v2.value;\n\n      if (type1 === 'string') {\n        // Compare strings case-insensitively\n        value1 = value1.toLowerCase();\n        value2 = value2.toLowerCase();\n      } else if (type1 === 'object') {\n        // For basic objects, use the position of the object\n        // in the collection instead of the value\n        if (isObject(value1)) value1 = v1.index;\n        if (isObject(value2)) value2 = v2.index;\n      }\n\n      if (value1 !== value2) {\n        result = value1 < value2 ? -1 : 1;\n      }\n    } else {\n      result = type1 < type2 ? -1 : 1;\n    }\n\n    return result;\n  }\n}\n\nfunction ngDirective(directive) {\n  if (isFunction(directive)) {\n    directive = {\n      link: directive\n    };\n  }\n  directive.restrict = directive.restrict || 'AC';\n  return valueFn(directive);\n}\n\n/**\n * @ngdoc directive\n * @name a\n * @restrict E\n *\n * @description\n * Modifies the default behavior of the html a tag so that the default action is prevented when\n * the href attribute is empty.\n *\n * For dynamically creating `href` attributes for a tags, see the {@link ng.ngHref `ngHref`} directive.\n */\nvar htmlAnchorDirective = valueFn({\n  restrict: 'E',\n  compile: function(element, attr) {\n    if (!attr.href && !attr.xlinkHref) {\n      return function(scope, element) {\n        // If the linked element is not an anchor tag anymore, do nothing\n        if (element[0].nodeName.toLowerCase() !== 'a') return;\n\n        // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n        var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?\n                   'xlink:href' : 'href';\n        element.on('click', function(event) {\n          // if we have no href url, then don't navigate anywhere.\n          if (!element.attr(href)) {\n            event.preventDefault();\n          }\n        });\n      };\n    }\n  }\n});\n\n/**\n * @ngdoc directive\n * @name ngHref\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in an href attribute will\n * make the link go to the wrong URL if the user clicks it before\n * Angular has a chance to replace the `{{hash}}` markup with its\n * value. Until Angular replaces the markup the link will be broken\n * and will most likely return a 404 error. The `ngHref` directive\n * solves this problem.\n *\n * The wrong way to write it:\n * ```html\n * <a href=\"http://www.gravatar.com/avatar/{{hash}}\">link1</a>\n * ```\n *\n * The correct way to write it:\n * ```html\n * <a ng-href=\"http://www.gravatar.com/avatar/{{hash}}\">link1</a>\n * ```\n *\n * @element A\n * @param {template} ngHref any string which can contain `{{}}` markup.\n *\n * @example\n * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes\n * in links and their different behaviors:\n    <example name=\"ng-href\">\n      <file name=\"index.html\">\n        <input ng-model=\"value\" /><br />\n        <a id=\"link-1\" href ng-click=\"value = 1\">link 1</a> (link, don't reload)<br />\n        <a id=\"link-2\" href=\"\" ng-click=\"value = 2\">link 2</a> (link, don't reload)<br />\n        <a id=\"link-3\" ng-href=\"/{{'123'}}\">link 3</a> (link, reload!)<br />\n        <a id=\"link-4\" href=\"\" name=\"xx\" ng-click=\"value = 4\">anchor</a> (link, don't reload)<br />\n        <a id=\"link-5\" name=\"xxx\" ng-click=\"value = 5\">anchor</a> (no link)<br />\n        <a id=\"link-6\" ng-href=\"{{value}}\">link</a> (link, change location)\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should execute ng-click but not reload when href without value', function() {\n          element(by.id('link-1')).click();\n          expect(element(by.model('value')).getAttribute('value')).toEqual('1');\n          expect(element(by.id('link-1')).getAttribute('href')).toBe('');\n        });\n\n        it('should execute ng-click but not reload when href empty string', function() {\n          element(by.id('link-2')).click();\n          expect(element(by.model('value')).getAttribute('value')).toEqual('2');\n          expect(element(by.id('link-2')).getAttribute('href')).toBe('');\n        });\n\n        it('should execute ng-click and change url when ng-href specified', function() {\n          expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\\/123$/);\n\n          element(by.id('link-3')).click();\n\n          // At this point, we navigate away from an Angular page, so we need\n          // to use browser.driver to get the base webdriver.\n\n          browser.wait(function() {\n            return browser.driver.getCurrentUrl().then(function(url) {\n              return url.match(/\\/123$/);\n            });\n          }, 5000, 'page should navigate to /123');\n        });\n\n        it('should execute ng-click but not reload when href empty string and name specified', function() {\n          element(by.id('link-4')).click();\n          expect(element(by.model('value')).getAttribute('value')).toEqual('4');\n          expect(element(by.id('link-4')).getAttribute('href')).toBe('');\n        });\n\n        it('should execute ng-click but not reload when no href but name specified', function() {\n          element(by.id('link-5')).click();\n          expect(element(by.model('value')).getAttribute('value')).toEqual('5');\n          expect(element(by.id('link-5')).getAttribute('href')).toBe(null);\n        });\n\n        it('should only change url when only ng-href', function() {\n          element(by.model('value')).clear();\n          element(by.model('value')).sendKeys('6');\n          expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\\/6$/);\n\n          element(by.id('link-6')).click();\n\n          // At this point, we navigate away from an Angular page, so we need\n          // to use browser.driver to get the base webdriver.\n          browser.wait(function() {\n            return browser.driver.getCurrentUrl().then(function(url) {\n              return url.match(/\\/6$/);\n            });\n          }, 5000, 'page should navigate to /6');\n        });\n      </file>\n    </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngSrc\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `src` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrc` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * <img src=\"http://www.gravatar.com/avatar/{{hash}}\" alt=\"Description\"/>\n * ```\n *\n * The correct way to write it:\n * ```html\n * <img ng-src=\"http://www.gravatar.com/avatar/{{hash}}\" alt=\"Description\" />\n * ```\n *\n * @element IMG\n * @param {template} ngSrc any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngSrcset\n * @restrict A\n * @priority 99\n *\n * @description\n * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't\n * work right: The browser will fetch from the URL with the literal\n * text `{{hash}}` until Angular replaces the expression inside\n * `{{hash}}`. The `ngSrcset` directive solves this problem.\n *\n * The buggy way to write it:\n * ```html\n * <img srcset=\"http://www.gravatar.com/avatar/{{hash}} 2x\" alt=\"Description\"/>\n * ```\n *\n * The correct way to write it:\n * ```html\n * <img ng-srcset=\"http://www.gravatar.com/avatar/{{hash}} 2x\" alt=\"Description\" />\n * ```\n *\n * @element IMG\n * @param {template} ngSrcset any string which can contain `{{}}` markup.\n */\n\n/**\n * @ngdoc directive\n * @name ngDisabled\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * This directive sets the `disabled` attribute on the element (typically a form control,\n * e.g. `input`, `button`, `select` etc.) if the\n * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy.\n *\n * A special directive is necessary because we cannot use interpolation inside the `disabled`\n * attribute. See the {@link guide/interpolation interpolation guide} for more info.\n *\n * @example\n    <example name=\"ng-disabled\">\n      <file name=\"index.html\">\n        <label>Click me to toggle: <input type=\"checkbox\" ng-model=\"checked\"></label><br/>\n        <button ng-model=\"button\" ng-disabled=\"checked\">Button</button>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should toggle button', function() {\n          expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();\n          element(by.model('checked')).click();\n          expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();\n        });\n      </file>\n    </example>\n *\n * @element INPUT\n * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,\n *     then the `disabled` attribute will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngChecked\n * @restrict A\n * @priority 100\n *\n * @description\n * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy.\n *\n * Note that this directive should not be used together with {@link ngModel `ngModel`},\n * as this can lead to unexpected behavior.\n *\n * A special directive is necessary because we cannot use interpolation inside the `checked`\n * attribute. See the {@link guide/interpolation interpolation guide} for more info.\n *\n * @example\n    <example name=\"ng-checked\">\n      <file name=\"index.html\">\n        <label>Check me to check both: <input type=\"checkbox\" ng-model=\"master\"></label><br/>\n        <input id=\"checkSlave\" type=\"checkbox\" ng-checked=\"master\" aria-label=\"Slave input\">\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should check both checkBoxes', function() {\n          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();\n          element(by.model('master')).click();\n          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();\n        });\n      </file>\n    </example>\n *\n * @element INPUT\n * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,\n *     then the `checked` attribute will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngReadonly\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * Sets the `readonly` attribute on the element, if the expression inside `ngReadonly` is truthy.\n * Note that `readonly` applies only to `input` elements with specific types. [See the input docs on\n * MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-readonly) for more information.\n *\n * A special directive is necessary because we cannot use interpolation inside the `readonly`\n * attribute. See the {@link guide/interpolation interpolation guide} for more info.\n *\n * @example\n    <example name=\"ng-readonly\">\n      <file name=\"index.html\">\n        <label>Check me to make text readonly: <input type=\"checkbox\" ng-model=\"checked\"></label><br/>\n        <input type=\"text\" ng-readonly=\"checked\" value=\"I'm Angular\" aria-label=\"Readonly field\" />\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should toggle readonly attr', function() {\n          expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeFalsy();\n          element(by.model('checked')).click();\n          expect(element(by.css('[type=\"text\"]')).getAttribute('readonly')).toBeTruthy();\n        });\n      </file>\n    </example>\n *\n * @element INPUT\n * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,\n *     then special attribute \"readonly\" will be set on the element\n */\n\n\n/**\n * @ngdoc directive\n * @name ngSelected\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * Sets the `selected` attribute on the element, if the expression inside `ngSelected` is truthy.\n *\n * A special directive is necessary because we cannot use interpolation inside the `selected`\n * attribute. See the {@link guide/interpolation interpolation guide} for more info.\n *\n * <div class=\"alert alert-warning\">\n *   **Note:** `ngSelected` does not interact with the `select` and `ngModel` directives, it only\n *   sets the `selected` attribute on the element. If you are using `ngModel` on the select, you\n *   should not use `ngSelected` on the options, as `ngModel` will set the select value and\n *   selected options.\n * </div>\n *\n * @example\n    <example name=\"ng-selected\">\n      <file name=\"index.html\">\n        <label>Check me to select: <input type=\"checkbox\" ng-model=\"selected\"></label><br/>\n        <select aria-label=\"ngSelected demo\">\n          <option>Hello!</option>\n          <option id=\"greet\" ng-selected=\"selected\">Greetings!</option>\n        </select>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should select Greetings!', function() {\n          expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();\n          element(by.model('selected')).click();\n          expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();\n        });\n      </file>\n    </example>\n *\n * @element OPTION\n * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,\n *     then special attribute \"selected\" will be set on the element\n */\n\n/**\n * @ngdoc directive\n * @name ngOpen\n * @restrict A\n * @priority 100\n *\n * @description\n *\n * Sets the `open` attribute on the element, if the expression inside `ngOpen` is truthy.\n *\n * A special directive is necessary because we cannot use interpolation inside the `open`\n * attribute. See the {@link guide/interpolation interpolation guide} for more info.\n *\n * ## A note about browser compatibility\n *\n * Internet Explorer and Edge do not support the `details` element, it is\n * recommended to use {@link ng.ngShow} and {@link ng.ngHide} instead.\n *\n * @example\n     <example name=\"ng-open\">\n       <file name=\"index.html\">\n         <label>Toggle details: <input type=\"checkbox\" ng-model=\"open\"></label><br/>\n         <details id=\"details\" ng-open=\"open\">\n            <summary>List</summary>\n            <ul>\n              <li>Apple</li>\n              <li>Orange</li>\n              <li>Durian</li>\n            </ul>\n         </details>\n       </file>\n       <file name=\"protractor.js\" type=\"protractor\">\n         it('should toggle open', function() {\n           expect(element(by.id('details')).getAttribute('open')).toBeFalsy();\n           element(by.model('open')).click();\n           expect(element(by.id('details')).getAttribute('open')).toBeTruthy();\n         });\n       </file>\n     </example>\n *\n * @element DETAILS\n * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,\n *     then special attribute \"open\" will be set on the element\n */\n\nvar ngAttributeAliasDirectives = {};\n\n// boolean attrs are evaluated\nforEach(BOOLEAN_ATTR, function(propName, attrName) {\n  // binding to multiple is not supported\n  if (propName === 'multiple') return;\n\n  function defaultLinkFn(scope, element, attr) {\n    scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {\n      attr.$set(attrName, !!value);\n    });\n  }\n\n  var normalized = directiveNormalize('ng-' + attrName);\n  var linkFn = defaultLinkFn;\n\n  if (propName === 'checked') {\n    linkFn = function(scope, element, attr) {\n      // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input\n      if (attr.ngModel !== attr[normalized]) {\n        defaultLinkFn(scope, element, attr);\n      }\n    };\n  }\n\n  ngAttributeAliasDirectives[normalized] = function() {\n    return {\n      restrict: 'A',\n      priority: 100,\n      link: linkFn\n    };\n  };\n});\n\n// aliased input attrs are evaluated\nforEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {\n  ngAttributeAliasDirectives[ngAttr] = function() {\n    return {\n      priority: 100,\n      link: function(scope, element, attr) {\n        //special case ngPattern when a literal regular expression value\n        //is used as the expression (this way we don't have to watch anything).\n        if (ngAttr === 'ngPattern' && attr.ngPattern.charAt(0) === '/') {\n          var match = attr.ngPattern.match(REGEX_STRING_REGEXP);\n          if (match) {\n            attr.$set('ngPattern', new RegExp(match[1], match[2]));\n            return;\n          }\n        }\n\n        scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {\n          attr.$set(ngAttr, value);\n        });\n      }\n    };\n  };\n});\n\n// ng-src, ng-srcset, ng-href are interpolated\nforEach(['src', 'srcset', 'href'], function(attrName) {\n  var normalized = directiveNormalize('ng-' + attrName);\n  ngAttributeAliasDirectives[normalized] = function() {\n    return {\n      priority: 99, // it needs to run after the attributes are interpolated\n      link: function(scope, element, attr) {\n        var propName = attrName,\n            name = attrName;\n\n        if (attrName === 'href' &&\n            toString.call(element.prop('href')) === '[object SVGAnimatedString]') {\n          name = 'xlinkHref';\n          attr.$attr[name] = 'xlink:href';\n          propName = null;\n        }\n\n        attr.$observe(normalized, function(value) {\n          if (!value) {\n            if (attrName === 'href') {\n              attr.$set(name, null);\n            }\n            return;\n          }\n\n          attr.$set(name, value);\n\n          // Support: IE 9-11 only\n          // On IE, if \"ng:src\" directive declaration is used and \"src\" attribute doesn't exist\n          // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need\n          // to set the property as well to achieve the desired effect.\n          // We use attr[attrName] value since $set can sanitize the url.\n          if (msie && propName) element.prop(propName, attr[name]);\n        });\n      }\n    };\n  };\n});\n\n/* global -nullFormCtrl, -PENDING_CLASS, -SUBMITTED_CLASS\n */\nvar nullFormCtrl = {\n  $addControl: noop,\n  $$renameControl: nullFormRenameControl,\n  $removeControl: noop,\n  $setValidity: noop,\n  $setDirty: noop,\n  $setPristine: noop,\n  $setSubmitted: noop\n},\nPENDING_CLASS = 'ng-pending',\nSUBMITTED_CLASS = 'ng-submitted';\n\nfunction nullFormRenameControl(control, name) {\n  control.$name = name;\n}\n\n/**\n * @ngdoc type\n * @name form.FormController\n *\n * @property {boolean} $pristine True if user has not interacted with the form yet.\n * @property {boolean} $dirty True if user has already interacted with the form.\n * @property {boolean} $valid True if all of the containing forms and controls are valid.\n * @property {boolean} $invalid True if at least one containing control or form is invalid.\n * @property {boolean} $submitted True if user has submitted the form even if its invalid.\n *\n * @property {Object} $pending An object hash, containing references to controls or forms with\n *  pending validators, where:\n *\n *  - keys are validations tokens (error names).\n *  - values are arrays of controls or forms that have a pending validator for the given error name.\n *\n * See {@link form.FormController#$error $error} for a list of built-in validation tokens.\n *\n * @property {Object} $error An object hash, containing references to controls or forms with failing\n *  validators, where:\n *\n *  - keys are validation tokens (error names),\n *  - values are arrays of controls or forms that have a failing validator for the given error name.\n *\n *  Built-in validation tokens:\n *  - `email`\n *  - `max`\n *  - `maxlength`\n *  - `min`\n *  - `minlength`\n *  - `number`\n *  - `pattern`\n *  - `required`\n *  - `url`\n *  - `date`\n *  - `datetimelocal`\n *  - `time`\n *  - `week`\n *  - `month`\n *\n * @description\n * `FormController` keeps track of all its controls and nested forms as well as the state of them,\n * such as being valid/invalid or dirty/pristine.\n *\n * Each {@link ng.directive:form form} directive creates an instance\n * of `FormController`.\n *\n */\n//asks for $scope to fool the BC controller module\nFormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate'];\nfunction FormController($element, $attrs, $scope, $animate, $interpolate) {\n  this.$$controls = [];\n\n  // init state\n  this.$error = {};\n  this.$$success = {};\n  this.$pending = undefined;\n  this.$name = $interpolate($attrs.name || $attrs.ngForm || '')($scope);\n  this.$dirty = false;\n  this.$pristine = true;\n  this.$valid = true;\n  this.$invalid = false;\n  this.$submitted = false;\n  this.$$parentForm = nullFormCtrl;\n\n  this.$$element = $element;\n  this.$$animate = $animate;\n\n  setupValidity(this);\n}\n\nFormController.prototype = {\n  /**\n   * @ngdoc method\n   * @name form.FormController#$rollbackViewValue\n   *\n   * @description\n   * Rollback all form controls pending updates to the `$modelValue`.\n   *\n   * Updates may be pending by a debounced event or because the input is waiting for a some future\n   * event defined in `ng-model-options`. This method is typically needed by the reset button of\n   * a form that uses `ng-model-options` to pend updates.\n   */\n  $rollbackViewValue: function() {\n    forEach(this.$$controls, function(control) {\n      control.$rollbackViewValue();\n    });\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$commitViewValue\n   *\n   * @description\n   * Commit all form controls pending updates to the `$modelValue`.\n   *\n   * Updates may be pending by a debounced event or because the input is waiting for a some future\n   * event defined in `ng-model-options`. This method is rarely needed as `NgModelController`\n   * usually handles calling this in response to input events.\n   */\n  $commitViewValue: function() {\n    forEach(this.$$controls, function(control) {\n      control.$commitViewValue();\n    });\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$addControl\n   * @param {object} control control object, either a {@link form.FormController} or an\n   * {@link ngModel.NgModelController}\n   *\n   * @description\n   * Register a control with the form. Input elements using ngModelController do this automatically\n   * when they are linked.\n   *\n   * Note that the current state of the control will not be reflected on the new parent form. This\n   * is not an issue with normal use, as freshly compiled and linked controls are in a `$pristine`\n   * state.\n   *\n   * However, if the method is used programmatically, for example by adding dynamically created controls,\n   * or controls that have been previously removed without destroying their corresponding DOM element,\n   * it's the developers responsibility to make sure the current state propagates to the parent form.\n   *\n   * For example, if an input control is added that is already `$dirty` and has `$error` properties,\n   * calling `$setDirty()` and `$validate()` afterwards will propagate the state to the parent form.\n   */\n  $addControl: function(control) {\n    // Breaking change - before, inputs whose name was \"hasOwnProperty\" were quietly ignored\n    // and not added to the scope.  Now we throw an error.\n    assertNotHasOwnProperty(control.$name, 'input');\n    this.$$controls.push(control);\n\n    if (control.$name) {\n      this[control.$name] = control;\n    }\n\n    control.$$parentForm = this;\n  },\n\n  // Private API: rename a form control\n  $$renameControl: function(control, newName) {\n    var oldName = control.$name;\n\n    if (this[oldName] === control) {\n      delete this[oldName];\n    }\n    this[newName] = control;\n    control.$name = newName;\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$removeControl\n   * @param {object} control control object, either a {@link form.FormController} or an\n   * {@link ngModel.NgModelController}\n   *\n   * @description\n   * Deregister a control from the form.\n   *\n   * Input elements using ngModelController do this automatically when they are destroyed.\n   *\n   * Note that only the removed control's validation state (`$errors`etc.) will be removed from the\n   * form. `$dirty`, `$submitted` states will not be changed, because the expected behavior can be\n   * different from case to case. For example, removing the only `$dirty` control from a form may or\n   * may not mean that the form is still `$dirty`.\n   */\n  $removeControl: function(control) {\n    if (control.$name && this[control.$name] === control) {\n      delete this[control.$name];\n    }\n    forEach(this.$pending, function(value, name) {\n      // eslint-disable-next-line no-invalid-this\n      this.$setValidity(name, null, control);\n    }, this);\n    forEach(this.$error, function(value, name) {\n      // eslint-disable-next-line no-invalid-this\n      this.$setValidity(name, null, control);\n    }, this);\n    forEach(this.$$success, function(value, name) {\n      // eslint-disable-next-line no-invalid-this\n      this.$setValidity(name, null, control);\n    }, this);\n\n    arrayRemove(this.$$controls, control);\n    control.$$parentForm = nullFormCtrl;\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$setDirty\n   *\n   * @description\n   * Sets the form to a dirty state.\n   *\n   * This method can be called to add the 'ng-dirty' class and set the form to a dirty\n   * state (ng-dirty class). This method will also propagate to parent forms.\n   */\n  $setDirty: function() {\n    this.$$animate.removeClass(this.$$element, PRISTINE_CLASS);\n    this.$$animate.addClass(this.$$element, DIRTY_CLASS);\n    this.$dirty = true;\n    this.$pristine = false;\n    this.$$parentForm.$setDirty();\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$setPristine\n   *\n   * @description\n   * Sets the form to its pristine state.\n   *\n   * This method sets the form's `$pristine` state to true, the `$dirty` state to false, removes\n   * the `ng-dirty` class and adds the `ng-pristine` class. Additionally, it sets the `$submitted`\n   * state to false.\n   *\n   * This method will also propagate to all the controls contained in this form.\n   *\n   * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after\n   * saving or resetting it.\n   */\n  $setPristine: function() {\n    this.$$animate.setClass(this.$$element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS);\n    this.$dirty = false;\n    this.$pristine = true;\n    this.$submitted = false;\n    forEach(this.$$controls, function(control) {\n      control.$setPristine();\n    });\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$setUntouched\n   *\n   * @description\n   * Sets the form to its untouched state.\n   *\n   * This method can be called to remove the 'ng-touched' class and set the form controls to their\n   * untouched state (ng-untouched class).\n   *\n   * Setting a form controls back to their untouched state is often useful when setting the form\n   * back to its pristine state.\n   */\n  $setUntouched: function() {\n    forEach(this.$$controls, function(control) {\n      control.$setUntouched();\n    });\n  },\n\n  /**\n   * @ngdoc method\n   * @name form.FormController#$setSubmitted\n   *\n   * @description\n   * Sets the form to its submitted state.\n   */\n  $setSubmitted: function() {\n    this.$$animate.addClass(this.$$element, SUBMITTED_CLASS);\n    this.$submitted = true;\n    this.$$parentForm.$setSubmitted();\n  }\n};\n\n/**\n * @ngdoc method\n * @name form.FormController#$setValidity\n *\n * @description\n * Change the validity state of the form, and notify the parent form (if any).\n *\n * Application developers will rarely need to call this method directly. It is used internally, by\n * {@link ngModel.NgModelController#$setValidity NgModelController.$setValidity()}, to propagate a\n * control's validity state to the parent `FormController`.\n *\n * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be\n *        assigned to either `$error[validationErrorKey]` or `$pending[validationErrorKey]` (for\n *        unfulfilled `$asyncValidators`), so that it is available for data-binding. The\n *        `validationErrorKey` should be in camelCase and will get converted into dash-case for\n *        class name. Example: `myError` will result in `ng-valid-my-error` and\n *        `ng-invalid-my-error` classes and can be bound to as `{{ someForm.$error.myError }}`.\n * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending\n *        (undefined),  or skipped (null). Pending is used for unfulfilled `$asyncValidators`.\n *        Skipped is used by AngularJS when validators do not run because of parse errors and when\n *        `$asyncValidators` do not run because any of the `$validators` failed.\n * @param {NgModelController | FormController} controller - The controller whose validity state is\n *        triggering the change.\n */\naddSetValidityMethod({\n  clazz: FormController,\n  set: function(object, property, controller) {\n    var list = object[property];\n    if (!list) {\n      object[property] = [controller];\n    } else {\n      var index = list.indexOf(controller);\n      if (index === -1) {\n        list.push(controller);\n      }\n    }\n  },\n  unset: function(object, property, controller) {\n    var list = object[property];\n    if (!list) {\n      return;\n    }\n    arrayRemove(list, controller);\n    if (list.length === 0) {\n      delete object[property];\n    }\n  }\n});\n\n/**\n * @ngdoc directive\n * @name ngForm\n * @restrict EAC\n *\n * @description\n * Nestable alias of {@link ng.directive:form `form`} directive. HTML\n * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a\n * sub-group of controls needs to be determined.\n *\n * Note: the purpose of `ngForm` is to group controls,\n * but not to be a replacement for the `<form>` tag with all of its capabilities\n * (e.g. posting to the server, ...).\n *\n * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into\n *                       related scope, under this name.\n *\n */\n\n /**\n * @ngdoc directive\n * @name form\n * @restrict E\n *\n * @description\n * Directive that instantiates\n * {@link form.FormController FormController}.\n *\n * If the `name` attribute is specified, the form controller is published onto the current scope under\n * this name.\n *\n * # Alias: {@link ng.directive:ngForm `ngForm`}\n *\n * In Angular, forms can be nested. This means that the outer form is valid when all of the child\n * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so\n * Angular provides the {@link ng.directive:ngForm `ngForm`} directive, which behaves identically to\n * `form` but can be nested. Nested forms can be useful, for example, if the validity of a sub-group\n * of controls needs to be determined.\n *\n * # CSS classes\n *  - `ng-valid` is set if the form is valid.\n *  - `ng-invalid` is set if the form is invalid.\n *  - `ng-pending` is set if the form is pending.\n *  - `ng-pristine` is set if the form is pristine.\n *  - `ng-dirty` is set if the form is dirty.\n *  - `ng-submitted` is set if the form was submitted.\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n *\n * # Submitting a form and preventing the default action\n *\n * Since the role of forms in client-side Angular applications is different than in classical\n * roundtrip apps, it is desirable for the browser not to translate the form submission into a full\n * page reload that sends the data to the server. Instead some javascript logic should be triggered\n * to handle the form submission in an application-specific way.\n *\n * For this reason, Angular prevents the default action (form submission to the server) unless the\n * `<form>` element has an `action` attribute specified.\n *\n * You can use one of the following two ways to specify what javascript method should be called when\n * a form is submitted:\n *\n * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element\n * - {@link ng.directive:ngClick ngClick} directive on the first\n  *  button or input field of type submit (input[type=submit])\n *\n * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}\n * or {@link ng.directive:ngClick ngClick} directives.\n * This is because of the following form submission rules in the HTML specification:\n *\n * - If a form has only one input field then hitting enter in this field triggers form submit\n * (`ngSubmit`)\n * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter\n * doesn't trigger submit\n * - if a form has one or more input fields and one or more buttons or input[type=submit] then\n * hitting enter in any of the input fields will trigger the click handler on the *first* button or\n * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)\n *\n * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is\n * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`\n * to have access to the updated model.\n *\n * ## Animation Hooks\n *\n * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.\n * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any\n * other validations that are performed within the form. Animations in ngForm are similar to how\n * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well\n * as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style a form element\n * that has been rendered as invalid after it has been validated:\n *\n * <pre>\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-form {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-form.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * </pre>\n *\n * @example\n    <example name=\"ng-form\" deps=\"angular-animate.js\" animations=\"true\" fixBase=\"true\" module=\"formExample\">\n      <file name=\"index.html\">\n       <script>\n         angular.module('formExample', [])\n           .controller('FormController', ['$scope', function($scope) {\n             $scope.userType = 'guest';\n           }]);\n       </script>\n       <style>\n        .my-form {\n          transition:all linear 0.5s;\n          background: transparent;\n        }\n        .my-form.ng-invalid {\n          background: red;\n        }\n       </style>\n       <form name=\"myForm\" ng-controller=\"FormController\" class=\"my-form\">\n         userType: <input name=\"input\" ng-model=\"userType\" required>\n         <span class=\"error\" ng-show=\"myForm.input.$error.required\">Required!</span><br>\n         <code>userType = {{userType}}</code><br>\n         <code>myForm.input.$valid = {{myForm.input.$valid}}</code><br>\n         <code>myForm.input.$error = {{myForm.input.$error}}</code><br>\n         <code>myForm.$valid = {{myForm.$valid}}</code><br>\n         <code>myForm.$error.required = {{!!myForm.$error.required}}</code><br>\n        </form>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should initialize to model', function() {\n          var userType = element(by.binding('userType'));\n          var valid = element(by.binding('myForm.input.$valid'));\n\n          expect(userType.getText()).toContain('guest');\n          expect(valid.getText()).toContain('true');\n        });\n\n        it('should be invalid if empty', function() {\n          var userType = element(by.binding('userType'));\n          var valid = element(by.binding('myForm.input.$valid'));\n          var userInput = element(by.model('userType'));\n\n          userInput.clear();\n          userInput.sendKeys('');\n\n          expect(userType.getText()).toEqual('userType =');\n          expect(valid.getText()).toContain('false');\n        });\n      </file>\n    </example>\n *\n * @param {string=} name Name of the form. If specified, the form controller will be published into\n *                       related scope, under this name.\n */\nvar formDirectiveFactory = function(isNgForm) {\n  return ['$timeout', '$parse', function($timeout, $parse) {\n    var formDirective = {\n      name: 'form',\n      restrict: isNgForm ? 'EAC' : 'E',\n      require: ['form', '^^?form'], //first is the form's own ctrl, second is an optional parent form\n      controller: FormController,\n      compile: function ngFormCompile(formElement, attr) {\n        // Setup initial state of the control\n        formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);\n\n        var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false);\n\n        return {\n          pre: function ngFormPreLink(scope, formElement, attr, ctrls) {\n            var controller = ctrls[0];\n\n            // if `action` attr is not present on the form, prevent the default action (submission)\n            if (!('action' in attr)) {\n              // we can't use jq events because if a form is destroyed during submission the default\n              // action is not prevented. see #1238\n              //\n              // IE 9 is not affected because it doesn't fire a submit event and try to do a full\n              // page reload if the form was destroyed by submission of the form via a click handler\n              // on a button in the form. Looks like an IE9 specific bug.\n              var handleFormSubmission = function(event) {\n                scope.$apply(function() {\n                  controller.$commitViewValue();\n                  controller.$setSubmitted();\n                });\n\n                event.preventDefault();\n              };\n\n              formElement[0].addEventListener('submit', handleFormSubmission);\n\n              // unregister the preventDefault listener so that we don't not leak memory but in a\n              // way that will achieve the prevention of the default action.\n              formElement.on('$destroy', function() {\n                $timeout(function() {\n                  formElement[0].removeEventListener('submit', handleFormSubmission);\n                }, 0, false);\n              });\n            }\n\n            var parentFormCtrl = ctrls[1] || controller.$$parentForm;\n            parentFormCtrl.$addControl(controller);\n\n            var setter = nameAttr ? getSetter(controller.$name) : noop;\n\n            if (nameAttr) {\n              setter(scope, controller);\n              attr.$observe(nameAttr, function(newValue) {\n                if (controller.$name === newValue) return;\n                setter(scope, undefined);\n                controller.$$parentForm.$$renameControl(controller, newValue);\n                setter = getSetter(controller.$name);\n                setter(scope, controller);\n              });\n            }\n            formElement.on('$destroy', function() {\n              controller.$$parentForm.$removeControl(controller);\n              setter(scope, undefined);\n              extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards\n            });\n          }\n        };\n      }\n    };\n\n    return formDirective;\n\n    function getSetter(expression) {\n      if (expression === '') {\n        //create an assignable expression, so forms with an empty name can be renamed later\n        return $parse('this[\"\"]').assign;\n      }\n      return $parse(expression).assign || noop;\n    }\n  }];\n};\n\nvar formDirective = formDirectiveFactory();\nvar ngFormDirective = formDirectiveFactory(true);\n\n\n\n// helper methods\nfunction setupValidity(instance) {\n  instance.$$classCache = {};\n  instance.$$classCache[INVALID_CLASS] = !(instance.$$classCache[VALID_CLASS] = instance.$$element.hasClass(VALID_CLASS));\n}\nfunction addSetValidityMethod(context) {\n  var clazz = context.clazz,\n      set = context.set,\n      unset = context.unset;\n\n  clazz.prototype.$setValidity = function(validationErrorKey, state, controller) {\n    if (isUndefined(state)) {\n      createAndSet(this, '$pending', validationErrorKey, controller);\n    } else {\n      unsetAndCleanup(this, '$pending', validationErrorKey, controller);\n    }\n    if (!isBoolean(state)) {\n      unset(this.$error, validationErrorKey, controller);\n      unset(this.$$success, validationErrorKey, controller);\n    } else {\n      if (state) {\n        unset(this.$error, validationErrorKey, controller);\n        set(this.$$success, validationErrorKey, controller);\n      } else {\n        set(this.$error, validationErrorKey, controller);\n        unset(this.$$success, validationErrorKey, controller);\n      }\n    }\n    if (this.$pending) {\n      cachedToggleClass(this, PENDING_CLASS, true);\n      this.$valid = this.$invalid = undefined;\n      toggleValidationCss(this, '', null);\n    } else {\n      cachedToggleClass(this, PENDING_CLASS, false);\n      this.$valid = isObjectEmpty(this.$error);\n      this.$invalid = !this.$valid;\n      toggleValidationCss(this, '', this.$valid);\n    }\n\n    // re-read the state as the set/unset methods could have\n    // combined state in this.$error[validationError] (used for forms),\n    // where setting/unsetting only increments/decrements the value,\n    // and does not replace it.\n    var combinedState;\n    if (this.$pending && this.$pending[validationErrorKey]) {\n      combinedState = undefined;\n    } else if (this.$error[validationErrorKey]) {\n      combinedState = false;\n    } else if (this.$$success[validationErrorKey]) {\n      combinedState = true;\n    } else {\n      combinedState = null;\n    }\n\n    toggleValidationCss(this, validationErrorKey, combinedState);\n    this.$$parentForm.$setValidity(validationErrorKey, combinedState, this);\n  };\n\n  function createAndSet(ctrl, name, value, controller) {\n    if (!ctrl[name]) {\n      ctrl[name] = {};\n    }\n    set(ctrl[name], value, controller);\n  }\n\n  function unsetAndCleanup(ctrl, name, value, controller) {\n    if (ctrl[name]) {\n      unset(ctrl[name], value, controller);\n    }\n    if (isObjectEmpty(ctrl[name])) {\n      ctrl[name] = undefined;\n    }\n  }\n\n  function cachedToggleClass(ctrl, className, switchValue) {\n    if (switchValue && !ctrl.$$classCache[className]) {\n      ctrl.$$animate.addClass(ctrl.$$element, className);\n      ctrl.$$classCache[className] = true;\n    } else if (!switchValue && ctrl.$$classCache[className]) {\n      ctrl.$$animate.removeClass(ctrl.$$element, className);\n      ctrl.$$classCache[className] = false;\n    }\n  }\n\n  function toggleValidationCss(ctrl, validationErrorKey, isValid) {\n    validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';\n\n    cachedToggleClass(ctrl, VALID_CLASS + validationErrorKey, isValid === true);\n    cachedToggleClass(ctrl, INVALID_CLASS + validationErrorKey, isValid === false);\n  }\n}\n\nfunction isObjectEmpty(obj) {\n  if (obj) {\n    for (var prop in obj) {\n      if (obj.hasOwnProperty(prop)) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/* global\n  VALID_CLASS: false,\n  INVALID_CLASS: false,\n  PRISTINE_CLASS: false,\n  DIRTY_CLASS: false,\n  ngModelMinErr: false\n*/\n\n// Regex code was initially obtained from SO prior to modification: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231\nvar ISO_DATE_REGEXP = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/;\n// See valid URLs in RFC3987 (http://tools.ietf.org/html/rfc3987)\n// Note: We are being more lenient, because browsers are too.\n//   1. Scheme\n//   2. Slashes\n//   3. Username\n//   4. Password\n//   5. Hostname\n//   6. Port\n//   7. Path\n//   8. Query\n//   9. Fragment\n//                 1111111111111111 222   333333    44444        55555555555555555555555     666     77777777     8888888     999\nvar URL_REGEXP = /^[a-z][a-z\\d.+-]*:\\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\\s:/?#]+|\\[[a-f\\d:]+])(?::\\d+)?(?:\\/[^?#]*)?(?:\\?[^#]*)?(?:#.*)?$/i;\n// eslint-disable-next-line max-len\nvar EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/;\nvar NUMBER_REGEXP = /^\\s*(-|\\+)?(\\d+|(\\d*(\\.\\d*)))([eE][+-]?\\d+)?\\s*$/;\nvar DATE_REGEXP = /^(\\d{4,})-(\\d{2})-(\\d{2})$/;\nvar DATETIMELOCAL_REGEXP = /^(\\d{4,})-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d)(?::(\\d\\d)(\\.\\d{1,3})?)?$/;\nvar WEEK_REGEXP = /^(\\d{4,})-W(\\d\\d)$/;\nvar MONTH_REGEXP = /^(\\d{4,})-(\\d\\d)$/;\nvar TIME_REGEXP = /^(\\d\\d):(\\d\\d)(?::(\\d\\d)(\\.\\d{1,3})?)?$/;\n\nvar PARTIAL_VALIDATION_EVENTS = 'keydown wheel mousedown';\nvar PARTIAL_VALIDATION_TYPES = createMap();\nforEach('date,datetime-local,month,time,week'.split(','), function(type) {\n  PARTIAL_VALIDATION_TYPES[type] = true;\n});\n\nvar inputType = {\n\n  /**\n   * @ngdoc input\n   * @name input[text]\n   *\n   * @description\n   * Standard HTML text input with angular data binding, inherited by most of the `input` elements.\n   *\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} required Adds `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n   *    minlength.\n   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of\n   *    any length.\n   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string\n   *    that contains the regular expression body that will be converted to a regular expression\n   *    as in the ngPattern directive.\n   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n   *    does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n   *    If the expression evaluates to a RegExp object, then this is used directly.\n   *    If the expression evaluates to a string, then it will be converted to a RegExp\n   *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n   *    `new RegExp('^abc$')`.<br />\n   *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n   *    start at the index of the last search's match, thus not taking the whole input value into\n   *    account.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n   *    This parameter is ignored for input[type=password] controls, which will never trim the\n   *    input.\n   *\n   * @example\n      <example name=\"text-input-directive\" module=\"textInputExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('textInputExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.example = {\n                 text: 'guest',\n                 word: /^\\s*\\w*\\s*$/\n               };\n             }]);\n         </script>\n         <form name=\"myForm\" ng-controller=\"ExampleController\">\n           <label>Single word:\n             <input type=\"text\" name=\"input\" ng-model=\"example.text\"\n                    ng-pattern=\"example.word\" required ng-trim=\"false\">\n           </label>\n           <div role=\"alert\">\n             <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n               Required!</span>\n             <span class=\"error\" ng-show=\"myForm.input.$error.pattern\">\n               Single word only!</span>\n           </div>\n           <code>text = {{example.text}}</code><br/>\n           <code>myForm.input.$valid = {{myForm.input.$valid}}</code><br/>\n           <code>myForm.input.$error = {{myForm.input.$error}}</code><br/>\n           <code>myForm.$valid = {{myForm.$valid}}</code><br/>\n           <code>myForm.$error.required = {{!!myForm.$error.required}}</code><br/>\n          </form>\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          var text = element(by.binding('example.text'));\n          var valid = element(by.binding('myForm.input.$valid'));\n          var input = element(by.model('example.text'));\n\n          it('should initialize to model', function() {\n            expect(text.getText()).toContain('guest');\n            expect(valid.getText()).toContain('true');\n          });\n\n          it('should be invalid if empty', function() {\n            input.clear();\n            input.sendKeys('');\n\n            expect(text.getText()).toEqual('text =');\n            expect(valid.getText()).toContain('false');\n          });\n\n          it('should be invalid if multi word', function() {\n            input.clear();\n            input.sendKeys('hello world');\n\n            expect(valid.getText()).toContain('false');\n          });\n        </file>\n      </example>\n   */\n  'text': textInputType,\n\n    /**\n     * @ngdoc input\n     * @name input[date]\n     *\n     * @description\n     * Input with date validation and transformation. In browsers that do not yet support\n     * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601\n     * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many\n     * modern browsers do not yet support this input type, it is important to provide cues to users on the\n     * expected input format via a placeholder or label.\n     *\n     * The model must always be a Date object, otherwise Angular will throw an error.\n     * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.\n     *\n     * The timezone to be used to read/write the `Date` instance in the model can be defined using\n     * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.\n     *\n     * @param {string} ngModel Assignable angular expression to data-bind to.\n     * @param {string=} name Property name of the form under which the control is published.\n     * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a\n     *   valid ISO date string (yyyy-MM-dd). You can also use interpolation inside this attribute\n     *   (e.g. `min=\"{{minDate | date:'yyyy-MM-dd'}}\"`). Note that `min` will also add native HTML5\n     *   constraint validation.\n     * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be\n     *   a valid ISO date string (yyyy-MM-dd). You can also use interpolation inside this attribute\n     *   (e.g. `max=\"{{maxDate | date:'yyyy-MM-dd'}}\"`). Note that `max` will also add native HTML5\n     *   constraint validation.\n     * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO date string\n     *   the `ngMin` expression evaluates to. Note that it does not set the `min` attribute.\n     * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO date string\n     *   the `ngMax` expression evaluates to. Note that it does not set the `max` attribute.\n     * @param {string=} required Sets `required` validation error key if the value is not entered.\n     * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n     *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n     *    `required` when you want to data-bind to the `required` attribute.\n     * @param {string=} ngChange Angular expression to be executed when input changes due to user\n     *    interaction with the input element.\n     *\n     * @example\n     <example name=\"date-input-directive\" module=\"dateInputExample\">\n     <file name=\"index.html\">\n       <script>\n          angular.module('dateInputExample', [])\n            .controller('DateController', ['$scope', function($scope) {\n              $scope.example = {\n                value: new Date(2013, 9, 22)\n              };\n            }]);\n       </script>\n       <form name=\"myForm\" ng-controller=\"DateController as dateCtrl\">\n          <label for=\"exampleInput\">Pick a date in 2013:</label>\n          <input type=\"date\" id=\"exampleInput\" name=\"input\" ng-model=\"example.value\"\n              placeholder=\"yyyy-MM-dd\" min=\"2013-01-01\" max=\"2013-12-31\" required />\n          <div role=\"alert\">\n            <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n                Required!</span>\n            <span class=\"error\" ng-show=\"myForm.input.$error.date\">\n                Not a valid date!</span>\n           </div>\n           <tt>value = {{example.value | date: \"yyyy-MM-dd\"}}</tt><br/>\n           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n       </form>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n        var value = element(by.binding('example.value | date: \"yyyy-MM-dd\"'));\n        var valid = element(by.binding('myForm.input.$valid'));\n\n        // currently protractor/webdriver does not support\n        // sending keys to all known HTML5 input controls\n        // for various browsers (see https://github.com/angular/protractor/issues/562).\n        function setInput(val) {\n          // set the value of the element and force validation.\n          var scr = \"var ipt = document.getElementById('exampleInput'); \" +\n          \"ipt.value = '\" + val + \"';\" +\n          \"angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('\" + val + \"'); });\";\n          browser.executeScript(scr);\n        }\n\n        it('should initialize to model', function() {\n          expect(value.getText()).toContain('2013-10-22');\n          expect(valid.getText()).toContain('myForm.input.$valid = true');\n        });\n\n        it('should be invalid if empty', function() {\n          setInput('');\n          expect(value.getText()).toEqual('value =');\n          expect(valid.getText()).toContain('myForm.input.$valid = false');\n        });\n\n        it('should be invalid if over max', function() {\n          setInput('2015-01-01');\n          expect(value.getText()).toContain('');\n          expect(valid.getText()).toContain('myForm.input.$valid = false');\n        });\n     </file>\n     </example>\n     */\n  'date': createDateInputType('date', DATE_REGEXP,\n         createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),\n         'yyyy-MM-dd'),\n\n   /**\n    * @ngdoc input\n    * @name input[datetime-local]\n    *\n    * @description\n    * Input with datetime validation and transformation. In browsers that do not yet support\n    * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601\n    * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`.\n    *\n    * The model must always be a Date object, otherwise Angular will throw an error.\n    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.\n    *\n    * The timezone to be used to read/write the `Date` instance in the model can be defined using\n    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.\n    *\n    * @param {string} ngModel Assignable angular expression to data-bind to.\n    * @param {string=} name Property name of the form under which the control is published.\n    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n    *   This must be a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss). You can also use interpolation\n    *   inside this attribute (e.g. `min=\"{{minDatetimeLocal | date:'yyyy-MM-ddTHH:mm:ss'}}\"`).\n    *   Note that `min` will also add native HTML5 constraint validation.\n    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n    *   This must be a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss). You can also use interpolation\n    *   inside this attribute (e.g. `max=\"{{maxDatetimeLocal | date:'yyyy-MM-ddTHH:mm:ss'}}\"`).\n    *   Note that `max` will also add native HTML5 constraint validation.\n    * @param {(date|string)=} ngMin Sets the `min` validation error key to the Date / ISO datetime string\n    *   the `ngMin` expression evaluates to. Note that it does not set the `min` attribute.\n    * @param {(date|string)=} ngMax Sets the `max` validation error key to the Date / ISO datetime string\n    *   the `ngMax` expression evaluates to. Note that it does not set the `max` attribute.\n    * @param {string=} required Sets `required` validation error key if the value is not entered.\n    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n    *    `required` when you want to data-bind to the `required` attribute.\n    * @param {string=} ngChange Angular expression to be executed when input changes due to user\n    *    interaction with the input element.\n    *\n    * @example\n    <example name=\"datetimelocal-input-directive\" module=\"dateExample\">\n    <file name=\"index.html\">\n      <script>\n        angular.module('dateExample', [])\n          .controller('DateController', ['$scope', function($scope) {\n            $scope.example = {\n              value: new Date(2010, 11, 28, 14, 57)\n            };\n          }]);\n      </script>\n      <form name=\"myForm\" ng-controller=\"DateController as dateCtrl\">\n        <label for=\"exampleInput\">Pick a date between in 2013:</label>\n        <input type=\"datetime-local\" id=\"exampleInput\" name=\"input\" ng-model=\"example.value\"\n            placeholder=\"yyyy-MM-ddTHH:mm:ss\" min=\"2001-01-01T00:00:00\" max=\"2013-12-31T00:00:00\" required />\n        <div role=\"alert\">\n          <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n              Required!</span>\n          <span class=\"error\" ng-show=\"myForm.input.$error.datetimelocal\">\n              Not a valid date!</span>\n        </div>\n        <tt>value = {{example.value | date: \"yyyy-MM-ddTHH:mm:ss\"}}</tt><br/>\n        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n      </form>\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      var value = element(by.binding('example.value | date: \"yyyy-MM-ddTHH:mm:ss\"'));\n      var valid = element(by.binding('myForm.input.$valid'));\n\n      // currently protractor/webdriver does not support\n      // sending keys to all known HTML5 input controls\n      // for various browsers (https://github.com/angular/protractor/issues/562).\n      function setInput(val) {\n        // set the value of the element and force validation.\n        var scr = \"var ipt = document.getElementById('exampleInput'); \" +\n        \"ipt.value = '\" + val + \"';\" +\n        \"angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('\" + val + \"'); });\";\n        browser.executeScript(scr);\n      }\n\n      it('should initialize to model', function() {\n        expect(value.getText()).toContain('2010-12-28T14:57:00');\n        expect(valid.getText()).toContain('myForm.input.$valid = true');\n      });\n\n      it('should be invalid if empty', function() {\n        setInput('');\n        expect(value.getText()).toEqual('value =');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n\n      it('should be invalid if over max', function() {\n        setInput('2015-01-01T23:59:00');\n        expect(value.getText()).toContain('');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n    </file>\n    </example>\n    */\n  'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP,\n      createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']),\n      'yyyy-MM-ddTHH:mm:ss.sss'),\n\n  /**\n   * @ngdoc input\n   * @name input[time]\n   *\n   * @description\n   * Input with time validation and transformation. In browsers that do not yet support\n   * the HTML5 time input, a text element will be used. In that case, the text must be entered in a valid ISO-8601\n   * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a\n   * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`.\n   *\n   * The model must always be a Date object, otherwise Angular will throw an error.\n   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.\n   *\n   * The timezone to be used to read/write the `Date` instance in the model can be defined using\n   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n   *   This must be a valid ISO time format (HH:mm:ss). You can also use interpolation inside this\n   *   attribute (e.g. `min=\"{{minTime | date:'HH:mm:ss'}}\"`). Note that `min` will also add\n   *   native HTML5 constraint validation.\n   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n   *   This must be a valid ISO time format (HH:mm:ss). You can also use interpolation inside this\n   *   attribute (e.g. `max=\"{{maxTime | date:'HH:mm:ss'}}\"`). Note that `max` will also add\n   *   native HTML5 constraint validation.\n   * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO time string the\n   *   `ngMin` expression evaluates to. Note that it does not set the `min` attribute.\n   * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO time string the\n   *   `ngMax` expression evaluates to. Note that it does not set the `max` attribute.\n   * @param {string=} required Sets `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n   <example name=\"time-input-directive\" module=\"timeExample\">\n   <file name=\"index.html\">\n     <script>\n      angular.module('timeExample', [])\n        .controller('DateController', ['$scope', function($scope) {\n          $scope.example = {\n            value: new Date(1970, 0, 1, 14, 57, 0)\n          };\n        }]);\n     </script>\n     <form name=\"myForm\" ng-controller=\"DateController as dateCtrl\">\n        <label for=\"exampleInput\">Pick a time between 8am and 5pm:</label>\n        <input type=\"time\" id=\"exampleInput\" name=\"input\" ng-model=\"example.value\"\n            placeholder=\"HH:mm:ss\" min=\"08:00:00\" max=\"17:00:00\" required />\n        <div role=\"alert\">\n          <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n              Required!</span>\n          <span class=\"error\" ng-show=\"myForm.input.$error.time\">\n              Not a valid date!</span>\n        </div>\n        <tt>value = {{example.value | date: \"HH:mm:ss\"}}</tt><br/>\n        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n     </form>\n   </file>\n   <file name=\"protractor.js\" type=\"protractor\">\n      var value = element(by.binding('example.value | date: \"HH:mm:ss\"'));\n      var valid = element(by.binding('myForm.input.$valid'));\n\n      // currently protractor/webdriver does not support\n      // sending keys to all known HTML5 input controls\n      // for various browsers (https://github.com/angular/protractor/issues/562).\n      function setInput(val) {\n        // set the value of the element and force validation.\n        var scr = \"var ipt = document.getElementById('exampleInput'); \" +\n        \"ipt.value = '\" + val + \"';\" +\n        \"angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('\" + val + \"'); });\";\n        browser.executeScript(scr);\n      }\n\n      it('should initialize to model', function() {\n        expect(value.getText()).toContain('14:57:00');\n        expect(valid.getText()).toContain('myForm.input.$valid = true');\n      });\n\n      it('should be invalid if empty', function() {\n        setInput('');\n        expect(value.getText()).toEqual('value =');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n\n      it('should be invalid if over max', function() {\n        setInput('23:59:00');\n        expect(value.getText()).toContain('');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n   </file>\n   </example>\n   */\n  'time': createDateInputType('time', TIME_REGEXP,\n      createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),\n     'HH:mm:ss.sss'),\n\n   /**\n    * @ngdoc input\n    * @name input[week]\n    *\n    * @description\n    * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support\n    * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601\n    * week format (yyyy-W##), for example: `2013-W02`.\n    *\n    * The model must always be a Date object, otherwise Angular will throw an error.\n    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.\n    *\n    * The timezone to be used to read/write the `Date` instance in the model can be defined using\n    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.\n    *\n    * @param {string} ngModel Assignable angular expression to data-bind to.\n    * @param {string=} name Property name of the form under which the control is published.\n    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n    *   This must be a valid ISO week format (yyyy-W##). You can also use interpolation inside this\n    *   attribute (e.g. `min=\"{{minWeek | date:'yyyy-Www'}}\"`). Note that `min` will also add\n    *   native HTML5 constraint validation.\n    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n    *   This must be a valid ISO week format (yyyy-W##). You can also use interpolation inside this\n    *   attribute (e.g. `max=\"{{maxWeek | date:'yyyy-Www'}}\"`). Note that `max` will also add\n    *   native HTML5 constraint validation.\n    * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO week string\n    *   the `ngMin` expression evaluates to. Note that it does not set the `min` attribute.\n    * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO week string\n    *   the `ngMax` expression evaluates to. Note that it does not set the `max` attribute.\n    * @param {string=} required Sets `required` validation error key if the value is not entered.\n    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n    *    `required` when you want to data-bind to the `required` attribute.\n    * @param {string=} ngChange Angular expression to be executed when input changes due to user\n    *    interaction with the input element.\n    *\n    * @example\n    <example name=\"week-input-directive\" module=\"weekExample\">\n    <file name=\"index.html\">\n      <script>\n      angular.module('weekExample', [])\n        .controller('DateController', ['$scope', function($scope) {\n          $scope.example = {\n            value: new Date(2013, 0, 3)\n          };\n        }]);\n      </script>\n      <form name=\"myForm\" ng-controller=\"DateController as dateCtrl\">\n        <label>Pick a date between in 2013:\n          <input id=\"exampleInput\" type=\"week\" name=\"input\" ng-model=\"example.value\"\n                 placeholder=\"YYYY-W##\" min=\"2012-W32\"\n                 max=\"2013-W52\" required />\n        </label>\n        <div role=\"alert\">\n          <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n              Required!</span>\n          <span class=\"error\" ng-show=\"myForm.input.$error.week\">\n              Not a valid date!</span>\n        </div>\n        <tt>value = {{example.value | date: \"yyyy-Www\"}}</tt><br/>\n        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n      </form>\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      var value = element(by.binding('example.value | date: \"yyyy-Www\"'));\n      var valid = element(by.binding('myForm.input.$valid'));\n\n      // currently protractor/webdriver does not support\n      // sending keys to all known HTML5 input controls\n      // for various browsers (https://github.com/angular/protractor/issues/562).\n      function setInput(val) {\n        // set the value of the element and force validation.\n        var scr = \"var ipt = document.getElementById('exampleInput'); \" +\n        \"ipt.value = '\" + val + \"';\" +\n        \"angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('\" + val + \"'); });\";\n        browser.executeScript(scr);\n      }\n\n      it('should initialize to model', function() {\n        expect(value.getText()).toContain('2013-W01');\n        expect(valid.getText()).toContain('myForm.input.$valid = true');\n      });\n\n      it('should be invalid if empty', function() {\n        setInput('');\n        expect(value.getText()).toEqual('value =');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n\n      it('should be invalid if over max', function() {\n        setInput('2015-W01');\n        expect(value.getText()).toContain('');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n    </file>\n    </example>\n    */\n  'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'),\n\n  /**\n   * @ngdoc input\n   * @name input[month]\n   *\n   * @description\n   * Input with month validation and transformation. In browsers that do not yet support\n   * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601\n   * month format (yyyy-MM), for example: `2009-01`.\n   *\n   * The model must always be a Date object, otherwise Angular will throw an error.\n   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.\n   * If the model is not set to the first of the month, the next view to model update will set it\n   * to the first of the month.\n   *\n   * The timezone to be used to read/write the `Date` instance in the model can be defined using\n   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n   *   This must be a valid ISO month format (yyyy-MM). You can also use interpolation inside this\n   *   attribute (e.g. `min=\"{{minMonth | date:'yyyy-MM'}}\"`). Note that `min` will also add\n   *   native HTML5 constraint validation.\n   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n   *   This must be a valid ISO month format (yyyy-MM). You can also use interpolation inside this\n   *   attribute (e.g. `max=\"{{maxMonth | date:'yyyy-MM'}}\"`). Note that `max` will also add\n   *   native HTML5 constraint validation.\n   * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO week string\n   *   the `ngMin` expression evaluates to. Note that it does not set the `min` attribute.\n   * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO week string\n   *   the `ngMax` expression evaluates to. Note that it does not set the `max` attribute.\n\n   * @param {string=} required Sets `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n   <example name=\"month-input-directive\" module=\"monthExample\">\n   <file name=\"index.html\">\n     <script>\n      angular.module('monthExample', [])\n        .controller('DateController', ['$scope', function($scope) {\n          $scope.example = {\n            value: new Date(2013, 9, 1)\n          };\n        }]);\n     </script>\n     <form name=\"myForm\" ng-controller=\"DateController as dateCtrl\">\n       <label for=\"exampleInput\">Pick a month in 2013:</label>\n       <input id=\"exampleInput\" type=\"month\" name=\"input\" ng-model=\"example.value\"\n          placeholder=\"yyyy-MM\" min=\"2013-01\" max=\"2013-12\" required />\n       <div role=\"alert\">\n         <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n            Required!</span>\n         <span class=\"error\" ng-show=\"myForm.input.$error.month\">\n            Not a valid month!</span>\n       </div>\n       <tt>value = {{example.value | date: \"yyyy-MM\"}}</tt><br/>\n       <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n       <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n       <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n       <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n     </form>\n   </file>\n   <file name=\"protractor.js\" type=\"protractor\">\n      var value = element(by.binding('example.value | date: \"yyyy-MM\"'));\n      var valid = element(by.binding('myForm.input.$valid'));\n\n      // currently protractor/webdriver does not support\n      // sending keys to all known HTML5 input controls\n      // for various browsers (https://github.com/angular/protractor/issues/562).\n      function setInput(val) {\n        // set the value of the element and force validation.\n        var scr = \"var ipt = document.getElementById('exampleInput'); \" +\n        \"ipt.value = '\" + val + \"';\" +\n        \"angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('\" + val + \"'); });\";\n        browser.executeScript(scr);\n      }\n\n      it('should initialize to model', function() {\n        expect(value.getText()).toContain('2013-10');\n        expect(valid.getText()).toContain('myForm.input.$valid = true');\n      });\n\n      it('should be invalid if empty', function() {\n        setInput('');\n        expect(value.getText()).toEqual('value =');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n\n      it('should be invalid if over max', function() {\n        setInput('2015-01');\n        expect(value.getText()).toContain('');\n        expect(valid.getText()).toContain('myForm.input.$valid = false');\n      });\n   </file>\n   </example>\n   */\n  'month': createDateInputType('month', MONTH_REGEXP,\n     createDateParser(MONTH_REGEXP, ['yyyy', 'MM']),\n     'yyyy-MM'),\n\n  /**\n   * @ngdoc input\n   * @name input[number]\n   *\n   * @description\n   * Text input with number validation and transformation. Sets the `number` validation\n   * error if not a valid number.\n   *\n   * <div class=\"alert alert-warning\">\n   * The model must always be of type `number` otherwise Angular will throw an error.\n   * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt}\n   * error docs for more information and an example of how to convert your model if necessary.\n   * </div>\n   *\n   * ## Issues with HTML5 constraint validation\n   *\n   * In browsers that follow the\n   * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29),\n   * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}.\n   * If a non-number is entered in the input, the browser will report the value as an empty string,\n   * which means the view / model values in `ngModel` and subsequently the scope value\n   * will also be an empty string.\n   *\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.\n   *    Can be interpolated.\n   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.\n   *    Can be interpolated.\n   * @param {string=} ngMin Like `min`, sets the `min` validation error key if the value entered is less than `ngMin`,\n   *    but does not trigger HTML5 native validation. Takes an expression.\n   * @param {string=} ngMax Like `max`, sets the `max` validation error key if the value entered is greater than `ngMax`,\n   *    but does not trigger HTML5 native validation. Takes an expression.\n   * @param {string=} step Sets the `step` validation error key if the value entered does not fit the `step` constraint.\n   *    Can be interpolated.\n   * @param {string=} ngStep Like `step`, sets the `step` validation error key if the value entered does not fit the `ngStep` constraint,\n   *    but does not trigger HTML5 native validation. Takes an expression.\n   * @param {string=} required Sets `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n   *    minlength.\n   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of\n   *    any length.\n   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string\n   *    that contains the regular expression body that will be converted to a regular expression\n   *    as in the ngPattern directive.\n   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n   *    does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n   *    If the expression evaluates to a RegExp object, then this is used directly.\n   *    If the expression evaluates to a string, then it will be converted to a RegExp\n   *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n   *    `new RegExp('^abc$')`.<br />\n   *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n   *    start at the index of the last search's match, thus not taking the whole input value into\n   *    account.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n      <example name=\"number-input-directive\" module=\"numberExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('numberExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.example = {\n                 value: 12\n               };\n             }]);\n         </script>\n         <form name=\"myForm\" ng-controller=\"ExampleController\">\n           <label>Number:\n             <input type=\"number\" name=\"input\" ng-model=\"example.value\"\n                    min=\"0\" max=\"99\" required>\n          </label>\n           <div role=\"alert\">\n             <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n               Required!</span>\n             <span class=\"error\" ng-show=\"myForm.input.$error.number\">\n               Not valid number!</span>\n           </div>\n           <tt>value = {{example.value}}</tt><br/>\n           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n          </form>\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          var value = element(by.binding('example.value'));\n          var valid = element(by.binding('myForm.input.$valid'));\n          var input = element(by.model('example.value'));\n\n          it('should initialize to model', function() {\n            expect(value.getText()).toContain('12');\n            expect(valid.getText()).toContain('true');\n          });\n\n          it('should be invalid if empty', function() {\n            input.clear();\n            input.sendKeys('');\n            expect(value.getText()).toEqual('value =');\n            expect(valid.getText()).toContain('false');\n          });\n\n          it('should be invalid if over max', function() {\n            input.clear();\n            input.sendKeys('123');\n            expect(value.getText()).toEqual('value =');\n            expect(valid.getText()).toContain('false');\n          });\n        </file>\n      </example>\n   */\n  'number': numberInputType,\n\n\n  /**\n   * @ngdoc input\n   * @name input[url]\n   *\n   * @description\n   * Text input with URL validation. Sets the `url` validation error key if the content is not a\n   * valid URL.\n   *\n   * <div class=\"alert alert-warning\">\n   * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex\n   * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify\n   * the built-in validators (see the {@link guide/forms Forms guide})\n   * </div>\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} required Sets `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n   *    minlength.\n   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of\n   *    any length.\n   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string\n   *    that contains the regular expression body that will be converted to a regular expression\n   *    as in the ngPattern directive.\n   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n   *    does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n   *    If the expression evaluates to a RegExp object, then this is used directly.\n   *    If the expression evaluates to a string, then it will be converted to a RegExp\n   *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n   *    `new RegExp('^abc$')`.<br />\n   *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n   *    start at the index of the last search's match, thus not taking the whole input value into\n   *    account.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n      <example name=\"url-input-directive\" module=\"urlExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('urlExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.url = {\n                 text: 'http://google.com'\n               };\n             }]);\n         </script>\n         <form name=\"myForm\" ng-controller=\"ExampleController\">\n           <label>URL:\n             <input type=\"url\" name=\"input\" ng-model=\"url.text\" required>\n           <label>\n           <div role=\"alert\">\n             <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n               Required!</span>\n             <span class=\"error\" ng-show=\"myForm.input.$error.url\">\n               Not valid url!</span>\n           </div>\n           <tt>text = {{url.text}}</tt><br/>\n           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n           <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>\n          </form>\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          var text = element(by.binding('url.text'));\n          var valid = element(by.binding('myForm.input.$valid'));\n          var input = element(by.model('url.text'));\n\n          it('should initialize to model', function() {\n            expect(text.getText()).toContain('http://google.com');\n            expect(valid.getText()).toContain('true');\n          });\n\n          it('should be invalid if empty', function() {\n            input.clear();\n            input.sendKeys('');\n\n            expect(text.getText()).toEqual('text =');\n            expect(valid.getText()).toContain('false');\n          });\n\n          it('should be invalid if not url', function() {\n            input.clear();\n            input.sendKeys('box');\n\n            expect(valid.getText()).toContain('false');\n          });\n        </file>\n      </example>\n   */\n  'url': urlInputType,\n\n\n  /**\n   * @ngdoc input\n   * @name input[email]\n   *\n   * @description\n   * Text input with email validation. Sets the `email` validation error key if not a valid email\n   * address.\n   *\n   * <div class=\"alert alert-warning\">\n   * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex\n   * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can\n   * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide})\n   * </div>\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} required Sets `required` validation error key if the value is not entered.\n   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n   *    `required` when you want to data-bind to the `required` attribute.\n   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n   *    minlength.\n   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of\n   *    any length.\n   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string\n   *    that contains the regular expression body that will be converted to a regular expression\n   *    as in the ngPattern directive.\n   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n   *    does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n   *    If the expression evaluates to a RegExp object, then this is used directly.\n   *    If the expression evaluates to a string, then it will be converted to a RegExp\n   *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n   *    `new RegExp('^abc$')`.<br />\n   *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n   *    start at the index of the last search's match, thus not taking the whole input value into\n   *    account.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n      <example name=\"email-input-directive\" module=\"emailExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('emailExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.email = {\n                 text: 'me@example.com'\n               };\n             }]);\n         </script>\n           <form name=\"myForm\" ng-controller=\"ExampleController\">\n             <label>Email:\n               <input type=\"email\" name=\"input\" ng-model=\"email.text\" required>\n             </label>\n             <div role=\"alert\">\n               <span class=\"error\" ng-show=\"myForm.input.$error.required\">\n                 Required!</span>\n               <span class=\"error\" ng-show=\"myForm.input.$error.email\">\n                 Not valid email!</span>\n             </div>\n             <tt>text = {{email.text}}</tt><br/>\n             <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>\n             <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>\n             <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n             <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n             <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>\n           </form>\n         </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          var text = element(by.binding('email.text'));\n          var valid = element(by.binding('myForm.input.$valid'));\n          var input = element(by.model('email.text'));\n\n          it('should initialize to model', function() {\n            expect(text.getText()).toContain('me@example.com');\n            expect(valid.getText()).toContain('true');\n          });\n\n          it('should be invalid if empty', function() {\n            input.clear();\n            input.sendKeys('');\n            expect(text.getText()).toEqual('text =');\n            expect(valid.getText()).toContain('false');\n          });\n\n          it('should be invalid if not email', function() {\n            input.clear();\n            input.sendKeys('xxx');\n\n            expect(valid.getText()).toContain('false');\n          });\n        </file>\n      </example>\n   */\n  'email': emailInputType,\n\n\n  /**\n   * @ngdoc input\n   * @name input[radio]\n   *\n   * @description\n   * HTML radio button.\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string} value The value to which the `ngModel` expression should be set when selected.\n   *    Note that `value` only supports `string` values, i.e. the scope model needs to be a string,\n   *    too. Use `ngValue` if you need complex models (`number`, `object`, ...).\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   * @param {string} ngValue Angular expression to which `ngModel` will be be set when the radio\n   *    is selected. Should be used instead of the `value` attribute if you need\n   *    a non-string `ngModel` (`boolean`, `array`, ...).\n   *\n   * @example\n      <example name=\"radio-input-directive\" module=\"radioExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('radioExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.color = {\n                 name: 'blue'\n               };\n               $scope.specialValue = {\n                 \"id\": \"12345\",\n                 \"value\": \"green\"\n               };\n             }]);\n         </script>\n         <form name=\"myForm\" ng-controller=\"ExampleController\">\n           <label>\n             <input type=\"radio\" ng-model=\"color.name\" value=\"red\">\n             Red\n           </label><br/>\n           <label>\n             <input type=\"radio\" ng-model=\"color.name\" ng-value=\"specialValue\">\n             Green\n           </label><br/>\n           <label>\n             <input type=\"radio\" ng-model=\"color.name\" value=\"blue\">\n             Blue\n           </label><br/>\n           <tt>color = {{color.name | json}}</tt><br/>\n          </form>\n          Note that `ng-value=\"specialValue\"` sets radio item's value to be the value of `$scope.specialValue`.\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          it('should change state', function() {\n            var inputs = element.all(by.model('color.name'));\n            var color = element(by.binding('color.name'));\n\n            expect(color.getText()).toContain('blue');\n\n            inputs.get(0).click();\n            expect(color.getText()).toContain('red');\n\n            inputs.get(1).click();\n            expect(color.getText()).toContain('green');\n          });\n        </file>\n      </example>\n   */\n  'radio': radioInputType,\n\n  /**\n   * @ngdoc input\n   * @name input[range]\n   *\n   * @description\n   * Native range input with validation and transformation.\n   *\n   * The model for the range input must always be a `Number`.\n   *\n   * IE9 and other browsers that do not support the `range` type fall back\n   * to a text input without any default values for `min`, `max` and `step`. Model binding,\n   * validation and number parsing are nevertheless supported.\n   *\n   * Browsers that support range (latest Chrome, Safari, Firefox, Edge) treat `input[range]`\n   * in a way that never allows the input to hold an invalid value. That means:\n   * - any non-numerical value is set to `(max + min) / 2`.\n   * - any numerical value that is less than the current min val, or greater than the current max val\n   * is set to the min / max val respectively.\n   * - additionally, the current `step` is respected, so the nearest value that satisfies a step\n   * is used.\n   *\n   * See the [HTML Spec on input[type=range]](https://www.w3.org/TR/html5/forms.html#range-state-(type=range))\n   * for more info.\n   *\n   * This has the following consequences for Angular:\n   *\n   * Since the element value should always reflect the current model value, a range input\n   * will set the bound ngModel expression to the value that the browser has set for the\n   * input element. For example, in the following input `<input type=\"range\" ng-model=\"model.value\">`,\n   * if the application sets `model.value = null`, the browser will set the input to `'50'`.\n   * Angular will then set the model to `50`, to prevent input and model value being out of sync.\n   *\n   * That means the model for range will immediately be set to `50` after `ngModel` has been\n   * initialized. It also means a range input can never have the required error.\n   *\n   * This does not only affect changes to the model value, but also to the values of the `min`,\n   * `max`, and `step` attributes. When these change in a way that will cause the browser to modify\n   * the input value, Angular will also update the model value.\n   *\n   * Automatic value adjustment also means that a range input element can never have the `required`,\n   * `min`, or `max` errors.\n   *\n   * However, `step` is currently only fully implemented by Firefox. Other browsers have problems\n   * when the step value changes dynamically - they do not adjust the element value correctly, but\n   * instead may set the `stepMismatch` error. If that's the case, the Angular will set the `step`\n   * error on the input, and set the model to `undefined`.\n   *\n   * Note that `input[range]` is not compatible with`ngMax`, `ngMin`, and `ngStep`, because they do\n   * not set the `min` and `max` attributes, which means that the browser won't automatically adjust\n   * the input value based on their values, and will always assume min = 0, max = 100, and step = 1.\n   *\n   * @param {string}  ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {string=} min Sets the `min` validation to ensure that the value entered is greater\n   *                  than `min`. Can be interpolated.\n   * @param {string=} max Sets the `max` validation to ensure that the value entered is less than `max`.\n   *                  Can be interpolated.\n   * @param {string=} step Sets the `step` validation to ensure that the value entered matches the `step`\n   *                  Can be interpolated.\n   * @param {string=} ngChange Angular expression to be executed when the ngModel value changes due\n   *                  to user interaction with the input element.\n   * @param {expression=} ngChecked If the expression is truthy, then the `checked` attribute will be set on the\n   *                      element. **Note** : `ngChecked` should not be used alongside `ngModel`.\n   *                      Checkout {@link ng.directive:ngChecked ngChecked} for usage.\n   *\n   * @example\n      <example name=\"range-input-directive\" module=\"rangeExample\">\n        <file name=\"index.html\">\n          <script>\n            angular.module('rangeExample', [])\n              .controller('ExampleController', ['$scope', function($scope) {\n                $scope.value = 75;\n                $scope.min = 10;\n                $scope.max = 90;\n              }]);\n          </script>\n          <form name=\"myForm\" ng-controller=\"ExampleController\">\n\n            Model as range: <input type=\"range\" name=\"range\" ng-model=\"value\" min=\"{{min}}\"  max=\"{{max}}\">\n            <hr>\n            Model as number: <input type=\"number\" ng-model=\"value\"><br>\n            Min: <input type=\"number\" ng-model=\"min\"><br>\n            Max: <input type=\"number\" ng-model=\"max\"><br>\n            value = <code>{{value}}</code><br/>\n            myForm.range.$valid = <code>{{myForm.range.$valid}}</code><br/>\n            myForm.range.$error = <code>{{myForm.range.$error}}</code>\n          </form>\n        </file>\n      </example>\n\n   * ## Range Input with ngMin & ngMax attributes\n\n   * @example\n      <example name=\"range-input-directive-ng\" module=\"rangeExample\">\n        <file name=\"index.html\">\n          <script>\n            angular.module('rangeExample', [])\n              .controller('ExampleController', ['$scope', function($scope) {\n                $scope.value = 75;\n                $scope.min = 10;\n                $scope.max = 90;\n              }]);\n          </script>\n          <form name=\"myForm\" ng-controller=\"ExampleController\">\n            Model as range: <input type=\"range\" name=\"range\" ng-model=\"value\" ng-min=\"min\" ng-max=\"max\">\n            <hr>\n            Model as number: <input type=\"number\" ng-model=\"value\"><br>\n            Min: <input type=\"number\" ng-model=\"min\"><br>\n            Max: <input type=\"number\" ng-model=\"max\"><br>\n            value = <code>{{value}}</code><br/>\n            myForm.range.$valid = <code>{{myForm.range.$valid}}</code><br/>\n            myForm.range.$error = <code>{{myForm.range.$error}}</code>\n          </form>\n        </file>\n      </example>\n\n   */\n  'range': rangeInputType,\n\n  /**\n   * @ngdoc input\n   * @name input[checkbox]\n   *\n   * @description\n   * HTML checkbox.\n   *\n   * @param {string} ngModel Assignable angular expression to data-bind to.\n   * @param {string=} name Property name of the form under which the control is published.\n   * @param {expression=} ngTrueValue The value to which the expression should be set when selected.\n   * @param {expression=} ngFalseValue The value to which the expression should be set when not selected.\n   * @param {string=} ngChange Angular expression to be executed when input changes due to user\n   *    interaction with the input element.\n   *\n   * @example\n      <example name=\"checkbox-input-directive\" module=\"checkboxExample\">\n        <file name=\"index.html\">\n         <script>\n           angular.module('checkboxExample', [])\n             .controller('ExampleController', ['$scope', function($scope) {\n               $scope.checkboxModel = {\n                value1 : true,\n                value2 : 'YES'\n              };\n             }]);\n         </script>\n         <form name=\"myForm\" ng-controller=\"ExampleController\">\n           <label>Value1:\n             <input type=\"checkbox\" ng-model=\"checkboxModel.value1\">\n           </label><br/>\n           <label>Value2:\n             <input type=\"checkbox\" ng-model=\"checkboxModel.value2\"\n                    ng-true-value=\"'YES'\" ng-false-value=\"'NO'\">\n            </label><br/>\n           <tt>value1 = {{checkboxModel.value1}}</tt><br/>\n           <tt>value2 = {{checkboxModel.value2}}</tt><br/>\n          </form>\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          it('should change state', function() {\n            var value1 = element(by.binding('checkboxModel.value1'));\n            var value2 = element(by.binding('checkboxModel.value2'));\n\n            expect(value1.getText()).toContain('true');\n            expect(value2.getText()).toContain('YES');\n\n            element(by.model('checkboxModel.value1')).click();\n            element(by.model('checkboxModel.value2')).click();\n\n            expect(value1.getText()).toContain('false');\n            expect(value2.getText()).toContain('NO');\n          });\n        </file>\n      </example>\n   */\n  'checkbox': checkboxInputType,\n\n  'hidden': noop,\n  'button': noop,\n  'submit': noop,\n  'reset': noop,\n  'file': noop\n};\n\nfunction stringBasedInputType(ctrl) {\n  ctrl.$formatters.push(function(value) {\n    return ctrl.$isEmpty(value) ? value : value.toString();\n  });\n}\n\nfunction textInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n  stringBasedInputType(ctrl);\n}\n\nfunction baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  var type = lowercase(element[0].type);\n\n  // In composition mode, users are still inputting intermediate text buffer,\n  // hold the listener until composition is done.\n  // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent\n  if (!$sniffer.android) {\n    var composing = false;\n\n    element.on('compositionstart', function() {\n      composing = true;\n    });\n\n    element.on('compositionend', function() {\n      composing = false;\n      listener();\n    });\n  }\n\n  var timeout;\n\n  var listener = function(ev) {\n    if (timeout) {\n      $browser.defer.cancel(timeout);\n      timeout = null;\n    }\n    if (composing) return;\n    var value = element.val(),\n        event = ev && ev.type;\n\n    // By default we will trim the value\n    // If the attribute ng-trim exists we will avoid trimming\n    // If input type is 'password', the value is never trimmed\n    if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) {\n      value = trim(value);\n    }\n\n    // If a control is suffering from bad input (due to native validators), browsers discard its\n    // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the\n    // control's value is the same empty value twice in a row.\n    if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) {\n      ctrl.$setViewValue(value, event);\n    }\n  };\n\n  // if the browser does support \"input\" event, we are fine - except on IE9 which doesn't fire the\n  // input event on backspace, delete or cut\n  if ($sniffer.hasEvent('input')) {\n    element.on('input', listener);\n  } else {\n    var deferListener = function(ev, input, origValue) {\n      if (!timeout) {\n        timeout = $browser.defer(function() {\n          timeout = null;\n          if (!input || input.value !== origValue) {\n            listener(ev);\n          }\n        });\n      }\n    };\n\n    element.on('keydown', /** @this */ function(event) {\n      var key = event.keyCode;\n\n      // ignore\n      //    command            modifiers                   arrows\n      if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;\n\n      deferListener(event, this, this.value);\n    });\n\n    // if user modifies input value using context menu in IE, we need \"paste\" and \"cut\" events to catch it\n    if ($sniffer.hasEvent('paste')) {\n      element.on('paste cut', deferListener);\n    }\n  }\n\n  // if user paste into input using mouse on older browser\n  // or form autocomplete on newer browser, we need \"change\" event to catch it\n  element.on('change', listener);\n\n  // Some native input types (date-family) have the ability to change validity without\n  // firing any input/change events.\n  // For these event types, when native validators are present and the browser supports the type,\n  // check for validity changes on various DOM events.\n  if (PARTIAL_VALIDATION_TYPES[type] && ctrl.$$hasNativeValidators && type === attr.type) {\n    element.on(PARTIAL_VALIDATION_EVENTS, /** @this */ function(ev) {\n      if (!timeout) {\n        var validity = this[VALIDITY_STATE_PROPERTY];\n        var origBadInput = validity.badInput;\n        var origTypeMismatch = validity.typeMismatch;\n        timeout = $browser.defer(function() {\n          timeout = null;\n          if (validity.badInput !== origBadInput || validity.typeMismatch !== origTypeMismatch) {\n            listener(ev);\n          }\n        });\n      }\n    });\n  }\n\n  ctrl.$render = function() {\n    // Workaround for Firefox validation #12102.\n    var value = ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue;\n    if (element.val() !== value) {\n      element.val(value);\n    }\n  };\n}\n\nfunction weekParser(isoWeek, existingDate) {\n  if (isDate(isoWeek)) {\n    return isoWeek;\n  }\n\n  if (isString(isoWeek)) {\n    WEEK_REGEXP.lastIndex = 0;\n    var parts = WEEK_REGEXP.exec(isoWeek);\n    if (parts) {\n      var year = +parts[1],\n          week = +parts[2],\n          hours = 0,\n          minutes = 0,\n          seconds = 0,\n          milliseconds = 0,\n          firstThurs = getFirstThursdayOfYear(year),\n          addDays = (week - 1) * 7;\n\n      if (existingDate) {\n        hours = existingDate.getHours();\n        minutes = existingDate.getMinutes();\n        seconds = existingDate.getSeconds();\n        milliseconds = existingDate.getMilliseconds();\n      }\n\n      return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);\n    }\n  }\n\n  return NaN;\n}\n\nfunction createDateParser(regexp, mapping) {\n  return function(iso, date) {\n    var parts, map;\n\n    if (isDate(iso)) {\n      return iso;\n    }\n\n    if (isString(iso)) {\n      // When a date is JSON'ified to wraps itself inside of an extra\n      // set of double quotes. This makes the date parsing code unable\n      // to match the date string and parse it as a date.\n      if (iso.charAt(0) === '\"' && iso.charAt(iso.length - 1) === '\"') {\n        iso = iso.substring(1, iso.length - 1);\n      }\n      if (ISO_DATE_REGEXP.test(iso)) {\n        return new Date(iso);\n      }\n      regexp.lastIndex = 0;\n      parts = regexp.exec(iso);\n\n      if (parts) {\n        parts.shift();\n        if (date) {\n          map = {\n            yyyy: date.getFullYear(),\n            MM: date.getMonth() + 1,\n            dd: date.getDate(),\n            HH: date.getHours(),\n            mm: date.getMinutes(),\n            ss: date.getSeconds(),\n            sss: date.getMilliseconds() / 1000\n          };\n        } else {\n          map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };\n        }\n\n        forEach(parts, function(part, index) {\n          if (index < mapping.length) {\n            map[mapping[index]] = +part;\n          }\n        });\n        return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0);\n      }\n    }\n\n    return NaN;\n  };\n}\n\nfunction createDateInputType(type, regexp, parseDate, format) {\n  return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) {\n    badInputChecker(scope, element, attr, ctrl);\n    baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n    var timezone = ctrl && ctrl.$options.getOption('timezone');\n    var previousDate;\n\n    ctrl.$$parserName = type;\n    ctrl.$parsers.push(function(value) {\n      if (ctrl.$isEmpty(value)) return null;\n      if (regexp.test(value)) {\n        // Note: We cannot read ctrl.$modelValue, as there might be a different\n        // parser/formatter in the processing chain so that the model\n        // contains some different data format!\n        var parsedDate = parseDate(value, previousDate);\n        if (timezone) {\n          parsedDate = convertTimezoneToLocal(parsedDate, timezone);\n        }\n        return parsedDate;\n      }\n      return undefined;\n    });\n\n    ctrl.$formatters.push(function(value) {\n      if (value && !isDate(value)) {\n        throw ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);\n      }\n      if (isValidDate(value)) {\n        previousDate = value;\n        if (previousDate && timezone) {\n          previousDate = convertTimezoneToLocal(previousDate, timezone, true);\n        }\n        return $filter('date')(value, format, timezone);\n      } else {\n        previousDate = null;\n        return '';\n      }\n    });\n\n    if (isDefined(attr.min) || attr.ngMin) {\n      var minVal;\n      ctrl.$validators.min = function(value) {\n        return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;\n      };\n      attr.$observe('min', function(val) {\n        minVal = parseObservedDateValue(val);\n        ctrl.$validate();\n      });\n    }\n\n    if (isDefined(attr.max) || attr.ngMax) {\n      var maxVal;\n      ctrl.$validators.max = function(value) {\n        return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;\n      };\n      attr.$observe('max', function(val) {\n        maxVal = parseObservedDateValue(val);\n        ctrl.$validate();\n      });\n    }\n\n    function isValidDate(value) {\n      // Invalid Date: getTime() returns NaN\n      return value && !(value.getTime && value.getTime() !== value.getTime());\n    }\n\n    function parseObservedDateValue(val) {\n      return isDefined(val) && !isDate(val) ? parseDate(val) || undefined : val;\n    }\n  };\n}\n\nfunction badInputChecker(scope, element, attr, ctrl) {\n  var node = element[0];\n  var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);\n  if (nativeValidation) {\n    ctrl.$parsers.push(function(value) {\n      var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};\n      return validity.badInput || validity.typeMismatch ? undefined : value;\n    });\n  }\n}\n\nfunction numberFormatterParser(ctrl) {\n  ctrl.$$parserName = 'number';\n  ctrl.$parsers.push(function(value) {\n    if (ctrl.$isEmpty(value))      return null;\n    if (NUMBER_REGEXP.test(value)) return parseFloat(value);\n    return undefined;\n  });\n\n  ctrl.$formatters.push(function(value) {\n    if (!ctrl.$isEmpty(value)) {\n      if (!isNumber(value)) {\n        throw ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value);\n      }\n      value = value.toString();\n    }\n    return value;\n  });\n}\n\nfunction parseNumberAttrVal(val) {\n  if (isDefined(val) && !isNumber(val)) {\n    val = parseFloat(val);\n  }\n  return !isNumberNaN(val) ? val : undefined;\n}\n\nfunction isNumberInteger(num) {\n  // See http://stackoverflow.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript#14794066\n  // (minus the assumption that `num` is a number)\n\n  // eslint-disable-next-line no-bitwise\n  return (num | 0) === num;\n}\n\nfunction countDecimals(num) {\n  var numString = num.toString();\n  var decimalSymbolIndex = numString.indexOf('.');\n\n  if (decimalSymbolIndex === -1) {\n    if (-1 < num && num < 1) {\n      // It may be in the exponential notation format (`1e-X`)\n      var match = /e-(\\d+)$/.exec(numString);\n\n      if (match) {\n        return Number(match[1]);\n      }\n    }\n\n    return 0;\n  }\n\n  return numString.length - decimalSymbolIndex - 1;\n}\n\nfunction isValidForStep(viewValue, stepBase, step) {\n  // At this point `stepBase` and `step` are expected to be non-NaN values\n  // and `viewValue` is expected to be a valid stringified number.\n  var value = Number(viewValue);\n\n  var isNonIntegerValue = !isNumberInteger(value);\n  var isNonIntegerStepBase = !isNumberInteger(stepBase);\n  var isNonIntegerStep = !isNumberInteger(step);\n\n  // Due to limitations in Floating Point Arithmetic (e.g. `0.3 - 0.2 !== 0.1` or\n  // `0.5 % 0.1 !== 0`), we need to convert all numbers to integers.\n  if (isNonIntegerValue || isNonIntegerStepBase || isNonIntegerStep) {\n    var valueDecimals = isNonIntegerValue ? countDecimals(value) : 0;\n    var stepBaseDecimals = isNonIntegerStepBase ? countDecimals(stepBase) : 0;\n    var stepDecimals = isNonIntegerStep ? countDecimals(step) : 0;\n\n    var decimalCount = Math.max(valueDecimals, stepBaseDecimals, stepDecimals);\n    var multiplier = Math.pow(10, decimalCount);\n\n    value = value * multiplier;\n    stepBase = stepBase * multiplier;\n    step = step * multiplier;\n\n    if (isNonIntegerValue) value = Math.round(value);\n    if (isNonIntegerStepBase) stepBase = Math.round(stepBase);\n    if (isNonIntegerStep) step = Math.round(step);\n  }\n\n  return (value - stepBase) % step === 0;\n}\n\nfunction numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  badInputChecker(scope, element, attr, ctrl);\n  numberFormatterParser(ctrl);\n  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n  var minVal;\n  var maxVal;\n\n  if (isDefined(attr.min) || attr.ngMin) {\n    ctrl.$validators.min = function(value) {\n      return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;\n    };\n\n    attr.$observe('min', function(val) {\n      minVal = parseNumberAttrVal(val);\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    });\n  }\n\n  if (isDefined(attr.max) || attr.ngMax) {\n    ctrl.$validators.max = function(value) {\n      return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;\n    };\n\n    attr.$observe('max', function(val) {\n      maxVal = parseNumberAttrVal(val);\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    });\n  }\n\n  if (isDefined(attr.step) || attr.ngStep) {\n    var stepVal;\n    ctrl.$validators.step = function(modelValue, viewValue) {\n      return ctrl.$isEmpty(viewValue) || isUndefined(stepVal) ||\n             isValidForStep(viewValue, minVal || 0, stepVal);\n    };\n\n    attr.$observe('step', function(val) {\n      stepVal = parseNumberAttrVal(val);\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    });\n  }\n}\n\nfunction rangeInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  badInputChecker(scope, element, attr, ctrl);\n  numberFormatterParser(ctrl);\n  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n\n  var supportsRange = ctrl.$$hasNativeValidators && element[0].type === 'range',\n      minVal = supportsRange ? 0 : undefined,\n      maxVal = supportsRange ? 100 : undefined,\n      stepVal = supportsRange ? 1 : undefined,\n      validity = element[0].validity,\n      hasMinAttr = isDefined(attr.min),\n      hasMaxAttr = isDefined(attr.max),\n      hasStepAttr = isDefined(attr.step);\n\n  var originalRender = ctrl.$render;\n\n  ctrl.$render = supportsRange && isDefined(validity.rangeUnderflow) && isDefined(validity.rangeOverflow) ?\n    //Browsers that implement range will set these values automatically, but reading the adjusted values after\n    //$render would cause the min / max validators to be applied with the wrong value\n    function rangeRender() {\n      originalRender();\n      ctrl.$setViewValue(element.val());\n    } :\n    originalRender;\n\n  if (hasMinAttr) {\n    ctrl.$validators.min = supportsRange ?\n      // Since all browsers set the input to a valid value, we don't need to check validity\n      function noopMinValidator() { return true; } :\n      // non-support browsers validate the min val\n      function minValidator(modelValue, viewValue) {\n        return ctrl.$isEmpty(viewValue) || isUndefined(minVal) || viewValue >= minVal;\n      };\n\n    setInitialValueAndObserver('min', minChange);\n  }\n\n  if (hasMaxAttr) {\n    ctrl.$validators.max = supportsRange ?\n      // Since all browsers set the input to a valid value, we don't need to check validity\n      function noopMaxValidator() { return true; } :\n      // non-support browsers validate the max val\n      function maxValidator(modelValue, viewValue) {\n        return ctrl.$isEmpty(viewValue) || isUndefined(maxVal) || viewValue <= maxVal;\n      };\n\n    setInitialValueAndObserver('max', maxChange);\n  }\n\n  if (hasStepAttr) {\n    ctrl.$validators.step = supportsRange ?\n      function nativeStepValidator() {\n        // Currently, only FF implements the spec on step change correctly (i.e. adjusting the\n        // input element value to a valid value). It's possible that other browsers set the stepMismatch\n        // validity error instead, so we can at least report an error in that case.\n        return !validity.stepMismatch;\n      } :\n      // ngStep doesn't set the setp attr, so the browser doesn't adjust the input value as setting step would\n      function stepValidator(modelValue, viewValue) {\n        return ctrl.$isEmpty(viewValue) || isUndefined(stepVal) ||\n               isValidForStep(viewValue, minVal || 0, stepVal);\n      };\n\n    setInitialValueAndObserver('step', stepChange);\n  }\n\n  function setInitialValueAndObserver(htmlAttrName, changeFn) {\n    // interpolated attributes set the attribute value only after a digest, but we need the\n    // attribute value when the input is first rendered, so that the browser can adjust the\n    // input value based on the min/max value\n    element.attr(htmlAttrName, attr[htmlAttrName]);\n    attr.$observe(htmlAttrName, changeFn);\n  }\n\n  function minChange(val) {\n    minVal = parseNumberAttrVal(val);\n    // ignore changes before model is initialized\n    if (isNumberNaN(ctrl.$modelValue)) {\n      return;\n    }\n\n    if (supportsRange) {\n      var elVal = element.val();\n      // IE11 doesn't set the el val correctly if the minVal is greater than the element value\n      if (minVal > elVal) {\n        elVal = minVal;\n        element.val(elVal);\n      }\n      ctrl.$setViewValue(elVal);\n    } else {\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    }\n  }\n\n  function maxChange(val) {\n    maxVal = parseNumberAttrVal(val);\n    // ignore changes before model is initialized\n    if (isNumberNaN(ctrl.$modelValue)) {\n      return;\n    }\n\n    if (supportsRange) {\n      var elVal = element.val();\n      // IE11 doesn't set the el val correctly if the maxVal is less than the element value\n      if (maxVal < elVal) {\n        element.val(maxVal);\n        // IE11 and Chrome don't set the value to the minVal when max < min\n        elVal = maxVal < minVal ? minVal : maxVal;\n      }\n      ctrl.$setViewValue(elVal);\n    } else {\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    }\n  }\n\n  function stepChange(val) {\n    stepVal = parseNumberAttrVal(val);\n    // ignore changes before model is initialized\n    if (isNumberNaN(ctrl.$modelValue)) {\n      return;\n    }\n\n    // Some browsers don't adjust the input value correctly, but set the stepMismatch error\n    if (supportsRange && ctrl.$viewValue !== element.val()) {\n      ctrl.$setViewValue(element.val());\n    } else {\n      // TODO(matsko): implement validateLater to reduce number of validations\n      ctrl.$validate();\n    }\n  }\n}\n\nfunction urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  // Note: no badInputChecker here by purpose as `url` is only a validation\n  // in browsers, i.e. we can always read out input.value even if it is not valid!\n  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n  stringBasedInputType(ctrl);\n\n  ctrl.$$parserName = 'url';\n  ctrl.$validators.url = function(modelValue, viewValue) {\n    var value = modelValue || viewValue;\n    return ctrl.$isEmpty(value) || URL_REGEXP.test(value);\n  };\n}\n\nfunction emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {\n  // Note: no badInputChecker here by purpose as `url` is only a validation\n  // in browsers, i.e. we can always read out input.value even if it is not valid!\n  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);\n  stringBasedInputType(ctrl);\n\n  ctrl.$$parserName = 'email';\n  ctrl.$validators.email = function(modelValue, viewValue) {\n    var value = modelValue || viewValue;\n    return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);\n  };\n}\n\nfunction radioInputType(scope, element, attr, ctrl) {\n  var doTrim = !attr.ngTrim || trim(attr.ngTrim) !== 'false';\n  // make the name unique, if not defined\n  if (isUndefined(attr.name)) {\n    element.attr('name', nextUid());\n  }\n\n  var listener = function(ev) {\n    var value;\n    if (element[0].checked) {\n      value = attr.value;\n      if (doTrim) {\n        value = trim(value);\n      }\n      ctrl.$setViewValue(value, ev && ev.type);\n    }\n  };\n\n  element.on('click', listener);\n\n  ctrl.$render = function() {\n    var value = attr.value;\n    if (doTrim) {\n      value = trim(value);\n    }\n    element[0].checked = (value === ctrl.$viewValue);\n  };\n\n  attr.$observe('value', ctrl.$render);\n}\n\nfunction parseConstantExpr($parse, context, name, expression, fallback) {\n  var parseFn;\n  if (isDefined(expression)) {\n    parseFn = $parse(expression);\n    if (!parseFn.constant) {\n      throw ngModelMinErr('constexpr', 'Expected constant expression for `{0}`, but saw ' +\n                                   '`{1}`.', name, expression);\n    }\n    return parseFn(context);\n  }\n  return fallback;\n}\n\nfunction checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {\n  var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true);\n  var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false);\n\n  var listener = function(ev) {\n    ctrl.$setViewValue(element[0].checked, ev && ev.type);\n  };\n\n  element.on('click', listener);\n\n  ctrl.$render = function() {\n    element[0].checked = ctrl.$viewValue;\n  };\n\n  // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`\n  // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert\n  // it to a boolean.\n  ctrl.$isEmpty = function(value) {\n    return value === false;\n  };\n\n  ctrl.$formatters.push(function(value) {\n    return equals(value, trueValue);\n  });\n\n  ctrl.$parsers.push(function(value) {\n    return value ? trueValue : falseValue;\n  });\n}\n\n\n/**\n * @ngdoc directive\n * @name textarea\n * @restrict E\n *\n * @description\n * HTML textarea element control with angular data-binding. The data-binding and validation\n * properties of this element are exactly the same as those of the\n * {@link ng.directive:input input element}.\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n *    `required` when you want to data-bind to the `required` attribute.\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n *    minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any\n *    length.\n * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n *    does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n *    If the expression evaluates to a RegExp object, then this is used directly.\n *    If the expression evaluates to a string, then it will be converted to a RegExp\n *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n *    `new RegExp('^abc$')`.<br />\n *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n *    start at the index of the last search's match, thus not taking the whole input value into\n *    account.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n *    interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n *\n * @knownIssue\n *\n * When specifying the `placeholder` attribute of `<textarea>`, Internet Explorer will temporarily\n * insert the placeholder value as the textarea's content. If the placeholder value contains\n * interpolation (`{{ ... }}`), an error will be logged in the console when Angular tries to update\n * the value of the by-then-removed text node. This doesn't affect the functionality of the\n * textarea, but can be undesirable.\n *\n * You can work around this Internet Explorer issue by using `ng-attr-placeholder` instead of\n * `placeholder` on textareas, whenever you need interpolation in the placeholder value. You can\n * find more details on `ngAttr` in the\n * [Interpolation](guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes) section of the\n * Developer Guide.\n */\n\n\n/**\n * @ngdoc directive\n * @name input\n * @restrict E\n *\n * @description\n * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding,\n * input state control, and validation.\n * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers.\n *\n * <div class=\"alert alert-warning\">\n * **Note:** Not every feature offered is available for all input types.\n * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`.\n * </div>\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {boolean=} ngRequired Sets `required` attribute if set to true\n * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than\n *    minlength.\n * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than\n *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any\n *    length.\n * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue}\n *    value does not match a RegExp found by evaluating the Angular expression given in the attribute value.\n *    If the expression evaluates to a RegExp object, then this is used directly.\n *    If the expression evaluates to a string, then it will be converted to a RegExp\n *    after wrapping it in `^` and `$` characters. For instance, `\"abc\"` will be converted to\n *    `new RegExp('^abc$')`.<br />\n *    **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n *    start at the index of the last search's match, thus not taking the whole input value into\n *    account.\n * @param {string=} ngChange Angular expression to be executed when input changes due to user\n *    interaction with the input element.\n * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.\n *    This parameter is ignored for input[type=password] controls, which will never trim the\n *    input.\n *\n * @example\n    <example name=\"input-directive\" module=\"inputExample\">\n      <file name=\"index.html\">\n       <script>\n          angular.module('inputExample', [])\n            .controller('ExampleController', ['$scope', function($scope) {\n              $scope.user = {name: 'guest', last: 'visitor'};\n            }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <form name=\"myForm\">\n           <label>\n              User name:\n              <input type=\"text\" name=\"userName\" ng-model=\"user.name\" required>\n           </label>\n           <div role=\"alert\">\n             <span class=\"error\" ng-show=\"myForm.userName.$error.required\">\n              Required!</span>\n           </div>\n           <label>\n              Last name:\n              <input type=\"text\" name=\"lastName\" ng-model=\"user.last\"\n              ng-minlength=\"3\" ng-maxlength=\"10\">\n           </label>\n           <div role=\"alert\">\n             <span class=\"error\" ng-show=\"myForm.lastName.$error.minlength\">\n               Too short!</span>\n             <span class=\"error\" ng-show=\"myForm.lastName.$error.maxlength\">\n               Too long!</span>\n           </div>\n         </form>\n         <hr>\n         <tt>user = {{user}}</tt><br/>\n         <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br/>\n         <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br/>\n         <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br/>\n         <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br/>\n         <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n         <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n         <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br/>\n         <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br/>\n       </div>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        var user = element(by.exactBinding('user'));\n        var userNameValid = element(by.binding('myForm.userName.$valid'));\n        var lastNameValid = element(by.binding('myForm.lastName.$valid'));\n        var lastNameError = element(by.binding('myForm.lastName.$error'));\n        var formValid = element(by.binding('myForm.$valid'));\n        var userNameInput = element(by.model('user.name'));\n        var userLastInput = element(by.model('user.last'));\n\n        it('should initialize to model', function() {\n          expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"visitor\"}');\n          expect(userNameValid.getText()).toContain('true');\n          expect(formValid.getText()).toContain('true');\n        });\n\n        it('should be invalid if empty when required', function() {\n          userNameInput.clear();\n          userNameInput.sendKeys('');\n\n          expect(user.getText()).toContain('{\"last\":\"visitor\"}');\n          expect(userNameValid.getText()).toContain('false');\n          expect(formValid.getText()).toContain('false');\n        });\n\n        it('should be valid if empty when min length is set', function() {\n          userLastInput.clear();\n          userLastInput.sendKeys('');\n\n          expect(user.getText()).toContain('{\"name\":\"guest\",\"last\":\"\"}');\n          expect(lastNameValid.getText()).toContain('true');\n          expect(formValid.getText()).toContain('true');\n        });\n\n        it('should be invalid if less than required min length', function() {\n          userLastInput.clear();\n          userLastInput.sendKeys('xx');\n\n          expect(user.getText()).toContain('{\"name\":\"guest\"}');\n          expect(lastNameValid.getText()).toContain('false');\n          expect(lastNameError.getText()).toContain('minlength');\n          expect(formValid.getText()).toContain('false');\n        });\n\n        it('should be invalid if longer than max length', function() {\n          userLastInput.clear();\n          userLastInput.sendKeys('some ridiculously long name');\n\n          expect(user.getText()).toContain('{\"name\":\"guest\"}');\n          expect(lastNameValid.getText()).toContain('false');\n          expect(lastNameError.getText()).toContain('maxlength');\n          expect(formValid.getText()).toContain('false');\n        });\n      </file>\n    </example>\n */\nvar inputDirective = ['$browser', '$sniffer', '$filter', '$parse',\n    function($browser, $sniffer, $filter, $parse) {\n  return {\n    restrict: 'E',\n    require: ['?ngModel'],\n    link: {\n      pre: function(scope, element, attr, ctrls) {\n        if (ctrls[0]) {\n          (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer,\n                                                              $browser, $filter, $parse);\n        }\n      }\n    }\n  };\n}];\n\n\n\nvar CONSTANT_VALUE_REGEXP = /^(true|false|\\d+)$/;\n/**\n * @ngdoc directive\n * @name ngValue\n *\n * @description\n * Binds the given expression to the value of the element.\n *\n * It is mainly used on {@link input[radio] `input[radio]`} and option elements,\n * so that when the element is selected, the {@link ngModel `ngModel`} of that element (or its\n * {@link select `select`} parent element) is set to the bound value. It is especially useful\n * for dynamically generated lists using {@link ngRepeat `ngRepeat`}, as shown below.\n *\n * It can also be used to achieve one-way binding of a given expression to an input element\n * such as an `input[text]` or a `textarea`, when that element does not use ngModel.\n *\n * @element input\n * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute\n * and `value` property of the element.\n *\n * @example\n    <example name=\"ngValue-directive\" module=\"valueExample\">\n      <file name=\"index.html\">\n       <script>\n          angular.module('valueExample', [])\n            .controller('ExampleController', ['$scope', function($scope) {\n              $scope.names = ['pizza', 'unicorns', 'robots'];\n              $scope.my = { favorite: 'unicorns' };\n            }]);\n       </script>\n        <form ng-controller=\"ExampleController\">\n          <h2>Which is your favorite?</h2>\n            <label ng-repeat=\"name in names\" for=\"{{name}}\">\n              {{name}}\n              <input type=\"radio\"\n                     ng-model=\"my.favorite\"\n                     ng-value=\"name\"\n                     id=\"{{name}}\"\n                     name=\"favorite\">\n            </label>\n          <div>You chose {{my.favorite}}</div>\n        </form>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        var favorite = element(by.binding('my.favorite'));\n\n        it('should initialize to model', function() {\n          expect(favorite.getText()).toContain('unicorns');\n        });\n        it('should bind the values to the inputs', function() {\n          element.all(by.model('my.favorite')).get(0).click();\n          expect(favorite.getText()).toContain('pizza');\n        });\n      </file>\n    </example>\n */\nvar ngValueDirective = function() {\n  /**\n   *  inputs use the value attribute as their default value if the value property is not set.\n   *  Once the value property has been set (by adding input), it will not react to changes to\n   *  the value attribute anymore. Setting both attribute and property fixes this behavior, and\n   *  makes it possible to use ngValue as a sort of one-way bind.\n   */\n  function updateElementValue(element, attr, value) {\n    // Support: IE9 only\n    // In IE9 values are converted to string (e.g. `input.value = null` results in `input.value === 'null'`).\n    var propValue = isDefined(value) ? value : (msie === 9) ? '' : null;\n    element.prop('value', propValue);\n    attr.$set('value', value);\n  }\n\n  return {\n    restrict: 'A',\n    priority: 100,\n    compile: function(tpl, tplAttr) {\n      if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {\n        return function ngValueConstantLink(scope, elm, attr) {\n          var value = scope.$eval(attr.ngValue);\n          updateElementValue(elm, attr, value);\n        };\n      } else {\n        return function ngValueLink(scope, elm, attr) {\n          scope.$watch(attr.ngValue, function valueWatchAction(value) {\n            updateElementValue(elm, attr, value);\n          });\n        };\n      }\n    }\n  };\n};\n\n/**\n * @ngdoc directive\n * @name ngBind\n * @restrict AC\n *\n * @description\n * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element\n * with the value of a given expression, and to update the text content when the value of that\n * expression changes.\n *\n * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like\n * `{{ expression }}` which is similar but less verbose.\n *\n * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily\n * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an\n * element attribute, it makes the bindings invisible to the user while the page is loading.\n *\n * An alternative solution to this problem would be using the\n * {@link ng.directive:ngCloak ngCloak} directive.\n *\n *\n * @element ANY\n * @param {expression} ngBind {@link guide/expression Expression} to evaluate.\n *\n * @example\n * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.\n   <example module=\"bindExample\" name=\"ng-bind\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('bindExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.name = 'Whirled';\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n         <label>Enter name: <input type=\"text\" ng-model=\"name\"></label><br>\n         Hello <span ng-bind=\"name\"></span>!\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-bind', function() {\n         var nameInput = element(by.model('name'));\n\n         expect(element(by.binding('name')).getText()).toBe('Whirled');\n         nameInput.clear();\n         nameInput.sendKeys('world');\n         expect(element(by.binding('name')).getText()).toBe('world');\n       });\n     </file>\n   </example>\n */\nvar ngBindDirective = ['$compile', function($compile) {\n  return {\n    restrict: 'AC',\n    compile: function ngBindCompile(templateElement) {\n      $compile.$$addBindingClass(templateElement);\n      return function ngBindLink(scope, element, attr) {\n        $compile.$$addBindingInfo(element, attr.ngBind);\n        element = element[0];\n        scope.$watch(attr.ngBind, function ngBindWatchAction(value) {\n          element.textContent = stringify(value);\n        });\n      };\n    }\n  };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngBindTemplate\n *\n * @description\n * The `ngBindTemplate` directive specifies that the element\n * text content should be replaced with the interpolation of the template\n * in the `ngBindTemplate` attribute.\n * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`\n * expressions. This directive is needed since some HTML elements\n * (such as TITLE and OPTION) cannot contain SPAN elements.\n *\n * @element ANY\n * @param {string} ngBindTemplate template of form\n *   <tt>{{</tt> <tt>expression</tt> <tt>}}</tt> to eval.\n *\n * @example\n * Try it here: enter text in text box and watch the greeting change.\n   <example module=\"bindExample\" name=\"ng-bind-template\">\n     <file name=\"index.html\">\n       <script>\n         angular.module('bindExample', [])\n           .controller('ExampleController', ['$scope', function($scope) {\n             $scope.salutation = 'Hello';\n             $scope.name = 'World';\n           }]);\n       </script>\n       <div ng-controller=\"ExampleController\">\n        <label>Salutation: <input type=\"text\" ng-model=\"salutation\"></label><br>\n        <label>Name: <input type=\"text\" ng-model=\"name\"></label><br>\n        <pre ng-bind-template=\"{{salutation}} {{name}}!\"></pre>\n       </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-bind', function() {\n         var salutationElem = element(by.binding('salutation'));\n         var salutationInput = element(by.model('salutation'));\n         var nameInput = element(by.model('name'));\n\n         expect(salutationElem.getText()).toBe('Hello World!');\n\n         salutationInput.clear();\n         salutationInput.sendKeys('Greetings');\n         nameInput.clear();\n         nameInput.sendKeys('user');\n\n         expect(salutationElem.getText()).toBe('Greetings user!');\n       });\n     </file>\n   </example>\n */\nvar ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate, $compile) {\n  return {\n    compile: function ngBindTemplateCompile(templateElement) {\n      $compile.$$addBindingClass(templateElement);\n      return function ngBindTemplateLink(scope, element, attr) {\n        var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));\n        $compile.$$addBindingInfo(element, interpolateFn.expressions);\n        element = element[0];\n        attr.$observe('ngBindTemplate', function(value) {\n          element.textContent = isUndefined(value) ? '' : value;\n        });\n      };\n    }\n  };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngBindHtml\n *\n * @description\n * Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,\n * the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.\n * To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link\n * ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}\n * in your module's dependencies, you need to include \"angular-sanitize.js\" in your application.\n *\n * You may also bypass sanitization for values you know are safe. To do so, bind to\n * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}.  See the example\n * under {@link ng.$sce#show-me-an-example-using-sce- Strict Contextual Escaping (SCE)}.\n *\n * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you\n * will have an exception (instead of an exploit.)\n *\n * @element ANY\n * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.\n *\n * @example\n\n   <example module=\"bindHtmlExample\" deps=\"angular-sanitize.js\" name=\"ng-bind-html\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n        <p ng-bind-html=\"myHTML\"></p>\n       </div>\n     </file>\n\n     <file name=\"script.js\">\n       angular.module('bindHtmlExample', ['ngSanitize'])\n         .controller('ExampleController', ['$scope', function($scope) {\n           $scope.myHTML =\n              'I am an <code>HTML</code>string with ' +\n              '<a href=\"#\">links!</a> and other <em>stuff</em>';\n         }]);\n     </file>\n\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-bind-html', function() {\n         expect(element(by.binding('myHTML')).getText()).toBe(\n             'I am an HTMLstring with links! and other stuff');\n       });\n     </file>\n   </example>\n */\nvar ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse, $compile) {\n  return {\n    restrict: 'A',\n    compile: function ngBindHtmlCompile(tElement, tAttrs) {\n      var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);\n      var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function sceValueOf(val) {\n        // Unwrap the value to compare the actual inner safe value, not the wrapper object.\n        return $sce.valueOf(val);\n      });\n      $compile.$$addBindingClass(tElement);\n\n      return function ngBindHtmlLink(scope, element, attr) {\n        $compile.$$addBindingInfo(element, attr.ngBindHtml);\n\n        scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {\n          // The watched value is the unwrapped value. To avoid re-escaping, use the direct getter.\n          var value = ngBindHtmlGetter(scope);\n          element.html($sce.getTrustedHtml(value) || '');\n        });\n      };\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngChange\n *\n * @description\n * Evaluate the given expression when the user changes the input.\n * The expression is evaluated immediately, unlike the JavaScript onchange event\n * which only triggers at the end of a change (usually, when the user leaves the\n * form element or presses the return key).\n *\n * The `ngChange` expression is only evaluated when a change in the input value causes\n * a new value to be committed to the model.\n *\n * It will not be evaluated:\n * * if the value returned from the `$parsers` transformation pipeline has not changed\n * * if the input has continued to be invalid since the model will stay `null`\n * * if the model is changed programmatically and not by a change to the input value\n *\n *\n * Note, this directive requires `ngModel` to be present.\n *\n * @element input\n * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change\n * in input value.\n *\n * @example\n * <example name=\"ngChange-directive\" module=\"changeExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('changeExample', [])\n *         .controller('ExampleController', ['$scope', function($scope) {\n *           $scope.counter = 0;\n *           $scope.change = function() {\n *             $scope.counter++;\n *           };\n *         }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <input type=\"checkbox\" ng-model=\"confirmed\" ng-change=\"change()\" id=\"ng-change-example1\" />\n *       <input type=\"checkbox\" ng-model=\"confirmed\" id=\"ng-change-example2\" />\n *       <label for=\"ng-change-example2\">Confirmed</label><br />\n *       <tt>debug = {{confirmed}}</tt><br/>\n *       <tt>counter = {{counter}}</tt><br/>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     var counter = element(by.binding('counter'));\n *     var debug = element(by.binding('confirmed'));\n *\n *     it('should evaluate the expression if changing from view', function() {\n *       expect(counter.getText()).toContain('0');\n *\n *       element(by.id('ng-change-example1')).click();\n *\n *       expect(counter.getText()).toContain('1');\n *       expect(debug.getText()).toContain('true');\n *     });\n *\n *     it('should not evaluate the expression if changing from model', function() {\n *       element(by.id('ng-change-example2')).click();\n\n *       expect(counter.getText()).toContain('0');\n *       expect(debug.getText()).toContain('true');\n *     });\n *   </file>\n * </example>\n */\nvar ngChangeDirective = valueFn({\n  restrict: 'A',\n  require: 'ngModel',\n  link: function(scope, element, attr, ctrl) {\n    ctrl.$viewChangeListeners.push(function() {\n      scope.$eval(attr.ngChange);\n    });\n  }\n});\n\n/* exported\n  ngClassDirective,\n  ngClassEvenDirective,\n  ngClassOddDirective\n*/\n\nfunction classDirective(name, selector) {\n  name = 'ngClass' + name;\n  var indexWatchExpression;\n\n  return ['$parse', function($parse) {\n    return {\n      restrict: 'AC',\n      link: function(scope, element, attr) {\n        var expression = attr[name].trim();\n        var isOneTime = (expression.charAt(0) === ':') && (expression.charAt(1) === ':');\n\n        var watchInterceptor = isOneTime ? toFlatValue : toClassString;\n        var watchExpression = $parse(expression, watchInterceptor);\n        var watchAction = isOneTime ? ngClassOneTimeWatchAction : ngClassWatchAction;\n\n        var classCounts = element.data('$classCounts');\n        var oldModulo = true;\n        var oldClassString;\n\n        if (!classCounts) {\n          // Use createMap() to prevent class assumptions involving property\n          // names in Object.prototype\n          classCounts = createMap();\n          element.data('$classCounts', classCounts);\n        }\n\n        if (name !== 'ngClass') {\n          if (!indexWatchExpression) {\n            indexWatchExpression = $parse('$index', function moduloTwo($index) {\n              // eslint-disable-next-line no-bitwise\n              return $index & 1;\n            });\n          }\n\n          scope.$watch(indexWatchExpression, ngClassIndexWatchAction);\n        }\n\n        scope.$watch(watchExpression, watchAction, isOneTime);\n\n        function addClasses(classString) {\n          classString = digestClassCounts(split(classString), 1);\n          attr.$addClass(classString);\n        }\n\n        function removeClasses(classString) {\n          classString = digestClassCounts(split(classString), -1);\n          attr.$removeClass(classString);\n        }\n\n        function updateClasses(oldClassString, newClassString) {\n          var oldClassArray = split(oldClassString);\n          var newClassArray = split(newClassString);\n\n          var toRemoveArray = arrayDifference(oldClassArray, newClassArray);\n          var toAddArray = arrayDifference(newClassArray, oldClassArray);\n\n          var toRemoveString = digestClassCounts(toRemoveArray, -1);\n          var toAddString = digestClassCounts(toAddArray, 1);\n\n          attr.$addClass(toAddString);\n          attr.$removeClass(toRemoveString);\n        }\n\n        function digestClassCounts(classArray, count) {\n          var classesToUpdate = [];\n\n          forEach(classArray, function(className) {\n            if (count > 0 || classCounts[className]) {\n              classCounts[className] = (classCounts[className] || 0) + count;\n              if (classCounts[className] === +(count > 0)) {\n                classesToUpdate.push(className);\n              }\n            }\n          });\n\n          return classesToUpdate.join(' ');\n        }\n\n        function ngClassIndexWatchAction(newModulo) {\n          // This watch-action should run before the `ngClass[OneTime]WatchAction()`, thus it\n          // adds/removes `oldClassString`. If the `ngClass` expression has changed as well, the\n          // `ngClass[OneTime]WatchAction()` will update the classes.\n          if (newModulo === selector) {\n            addClasses(oldClassString);\n          } else {\n            removeClasses(oldClassString);\n          }\n\n          oldModulo = newModulo;\n        }\n\n        function ngClassOneTimeWatchAction(newClassValue) {\n          var newClassString = toClassString(newClassValue);\n\n          if (newClassString !== oldClassString) {\n            ngClassWatchAction(newClassString);\n          }\n        }\n\n        function ngClassWatchAction(newClassString) {\n          if (oldModulo === selector) {\n            updateClasses(oldClassString, newClassString);\n          }\n\n          oldClassString = newClassString;\n        }\n      }\n    };\n  }];\n\n  // Helpers\n  function arrayDifference(tokens1, tokens2) {\n    if (!tokens1 || !tokens1.length) return [];\n    if (!tokens2 || !tokens2.length) return tokens1;\n\n    var values = [];\n\n    outer:\n    for (var i = 0; i < tokens1.length; i++) {\n      var token = tokens1[i];\n      for (var j = 0; j < tokens2.length; j++) {\n        if (token === tokens2[j]) continue outer;\n      }\n      values.push(token);\n    }\n\n    return values;\n  }\n\n  function split(classString) {\n    return classString && classString.split(' ');\n  }\n\n  function toClassString(classValue) {\n    var classString = classValue;\n\n    if (isArray(classValue)) {\n      classString = classValue.map(toClassString).join(' ');\n    } else if (isObject(classValue)) {\n      classString = Object.keys(classValue).\n        filter(function(key) { return classValue[key]; }).\n        join(' ');\n    }\n\n    return classString;\n  }\n\n  function toFlatValue(classValue) {\n    var flatValue = classValue;\n\n    if (isArray(classValue)) {\n      flatValue = classValue.map(toFlatValue);\n    } else if (isObject(classValue)) {\n      var hasUndefined = false;\n\n      flatValue = Object.keys(classValue).filter(function(key) {\n        var value = classValue[key];\n\n        if (!hasUndefined && isUndefined(value)) {\n          hasUndefined = true;\n        }\n\n        return value;\n      });\n\n      if (hasUndefined) {\n        // Prevent the `oneTimeLiteralWatchInterceptor` from unregistering\n        // the watcher, by including at least one `undefined` value.\n        flatValue.push(undefined);\n      }\n    }\n\n    return flatValue;\n  }\n}\n\n/**\n * @ngdoc directive\n * @name ngClass\n * @restrict AC\n *\n * @description\n * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding\n * an expression that represents all classes to be added.\n *\n * The directive operates in three different ways, depending on which of three types the expression\n * evaluates to:\n *\n * 1. If the expression evaluates to a string, the string should be one or more space-delimited class\n * names.\n *\n * 2. If the expression evaluates to an object, then for each key-value pair of the\n * object with a truthy value the corresponding key is used as a class name.\n *\n * 3. If the expression evaluates to an array, each element of the array should either be a string as in\n * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array\n * to give you more control over what CSS classes appear. See the code below for an example of this.\n *\n *\n * The directive won't add duplicate classes if a particular class was already set.\n *\n * When the expression changes, the previously added classes are removed and only then are the\n * new classes added.\n *\n * @knownIssue\n * You should not use {@link guide/interpolation interpolation} in the value of the `class`\n * attribute, when using the `ngClass` directive on the same element.\n * See {@link guide/interpolation#known-issues here} for more info.\n *\n * @animations\n * | Animation                        | Occurs                              |\n * |----------------------------------|-------------------------------------|\n * | {@link ng.$animate#addClass addClass}       | just before the class is applied to the element   |\n * | {@link ng.$animate#removeClass removeClass} | just before the class is removed from the element |\n *\n * @element ANY\n * @param {expression} ngClass {@link guide/expression Expression} to eval. The result\n *   of the evaluation can be a string representing space delimited class\n *   names, an array, or a map of class names to boolean values. In the case of a map, the\n *   names of the properties whose values are truthy will be added as css classes to the\n *   element.\n *\n * @example Example that demonstrates basic bindings via ngClass directive.\n   <example name=\"ng-class\">\n     <file name=\"index.html\">\n       <p ng-class=\"{strike: deleted, bold: important, 'has-error': error}\">Map Syntax Example</p>\n       <label>\n          <input type=\"checkbox\" ng-model=\"deleted\">\n          deleted (apply \"strike\" class)\n       </label><br>\n       <label>\n          <input type=\"checkbox\" ng-model=\"important\">\n          important (apply \"bold\" class)\n       </label><br>\n       <label>\n          <input type=\"checkbox\" ng-model=\"error\">\n          error (apply \"has-error\" class)\n       </label>\n       <hr>\n       <p ng-class=\"style\">Using String Syntax</p>\n       <input type=\"text\" ng-model=\"style\"\n              placeholder=\"Type: bold strike red\" aria-label=\"Type: bold strike red\">\n       <hr>\n       <p ng-class=\"[style1, style2, style3]\">Using Array Syntax</p>\n       <input ng-model=\"style1\"\n              placeholder=\"Type: bold, strike or red\" aria-label=\"Type: bold, strike or red\"><br>\n       <input ng-model=\"style2\"\n              placeholder=\"Type: bold, strike or red\" aria-label=\"Type: bold, strike or red 2\"><br>\n       <input ng-model=\"style3\"\n              placeholder=\"Type: bold, strike or red\" aria-label=\"Type: bold, strike or red 3\"><br>\n       <hr>\n       <p ng-class=\"[style4, {orange: warning}]\">Using Array and Map Syntax</p>\n       <input ng-model=\"style4\" placeholder=\"Type: bold, strike\" aria-label=\"Type: bold, strike\"><br>\n       <label><input type=\"checkbox\" ng-model=\"warning\"> warning (apply \"orange\" class)</label>\n     </file>\n     <file name=\"style.css\">\n       .strike {\n           text-decoration: line-through;\n       }\n       .bold {\n           font-weight: bold;\n       }\n       .red {\n           color: red;\n       }\n       .has-error {\n           color: red;\n           background-color: yellow;\n       }\n       .orange {\n           color: orange;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       var ps = element.all(by.css('p'));\n\n       it('should let you toggle the class', function() {\n\n         expect(ps.first().getAttribute('class')).not.toMatch(/bold/);\n         expect(ps.first().getAttribute('class')).not.toMatch(/has-error/);\n\n         element(by.model('important')).click();\n         expect(ps.first().getAttribute('class')).toMatch(/bold/);\n\n         element(by.model('error')).click();\n         expect(ps.first().getAttribute('class')).toMatch(/has-error/);\n       });\n\n       it('should let you toggle string example', function() {\n         expect(ps.get(1).getAttribute('class')).toBe('');\n         element(by.model('style')).clear();\n         element(by.model('style')).sendKeys('red');\n         expect(ps.get(1).getAttribute('class')).toBe('red');\n       });\n\n       it('array example should have 3 classes', function() {\n         expect(ps.get(2).getAttribute('class')).toBe('');\n         element(by.model('style1')).sendKeys('bold');\n         element(by.model('style2')).sendKeys('strike');\n         element(by.model('style3')).sendKeys('red');\n         expect(ps.get(2).getAttribute('class')).toBe('bold strike red');\n       });\n\n       it('array with map example should have 2 classes', function() {\n         expect(ps.last().getAttribute('class')).toBe('');\n         element(by.model('style4')).sendKeys('bold');\n         element(by.model('warning')).click();\n         expect(ps.last().getAttribute('class')).toBe('bold orange');\n       });\n     </file>\n   </example>\n\n   ## Animations\n\n   The example below demonstrates how to perform animations using ngClass.\n\n   <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-class\">\n     <file name=\"index.html\">\n      <input id=\"setbtn\" type=\"button\" value=\"set\" ng-click=\"myVar='my-class'\">\n      <input id=\"clearbtn\" type=\"button\" value=\"clear\" ng-click=\"myVar=''\">\n      <br>\n      <span class=\"base-class\" ng-class=\"myVar\">Sample Text</span>\n     </file>\n     <file name=\"style.css\">\n       .base-class {\n         transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n       }\n\n       .base-class.my-class {\n         color: red;\n         font-size:3em;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-class', function() {\n         expect(element(by.css('.base-class')).getAttribute('class')).not.\n           toMatch(/my-class/);\n\n         element(by.id('setbtn')).click();\n\n         expect(element(by.css('.base-class')).getAttribute('class')).\n           toMatch(/my-class/);\n\n         element(by.id('clearbtn')).click();\n\n         expect(element(by.css('.base-class')).getAttribute('class')).not.\n           toMatch(/my-class/);\n       });\n     </file>\n   </example>\n\n\n   ## ngClass and pre-existing CSS3 Transitions/Animations\n   The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.\n   Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder\n   any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure\n   to view the step by step details of {@link $animate#addClass $animate.addClass} and\n   {@link $animate#removeClass $animate.removeClass}.\n */\nvar ngClassDirective = classDirective('', true);\n\n/**\n * @ngdoc directive\n * @name ngClassOdd\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result\n *   of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n   <example name=\"ng-class-odd\">\n     <file name=\"index.html\">\n        <ol ng-init=\"names=['John', 'Mary', 'Cate', 'Suz']\">\n          <li ng-repeat=\"name in names\">\n           <span ng-class-odd=\"'odd'\" ng-class-even=\"'even'\">\n             {{name}}\n           </span>\n          </li>\n        </ol>\n     </file>\n     <file name=\"style.css\">\n       .odd {\n         color: red;\n       }\n       .even {\n         color: blue;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-class-odd and ng-class-even', function() {\n         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n           toMatch(/odd/);\n         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n           toMatch(/even/);\n       });\n     </file>\n   </example>\n */\nvar ngClassOddDirective = classDirective('Odd', 0);\n\n/**\n * @ngdoc directive\n * @name ngClassEven\n * @restrict AC\n *\n * @description\n * The `ngClassOdd` and `ngClassEven` directives work exactly as\n * {@link ng.directive:ngClass ngClass}, except they work in\n * conjunction with `ngRepeat` and take effect only on odd (even) rows.\n *\n * This directive can be applied only within the scope of an\n * {@link ng.directive:ngRepeat ngRepeat}.\n *\n * @element ANY\n * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The\n *   result of the evaluation can be a string representing space delimited class names or an array.\n *\n * @example\n   <example name=\"ng-class-even\">\n     <file name=\"index.html\">\n        <ol ng-init=\"names=['John', 'Mary', 'Cate', 'Suz']\">\n          <li ng-repeat=\"name in names\">\n           <span ng-class-odd=\"'odd'\" ng-class-even=\"'even'\">\n             {{name}} &nbsp; &nbsp; &nbsp;\n           </span>\n          </li>\n        </ol>\n     </file>\n     <file name=\"style.css\">\n       .odd {\n         color: red;\n       }\n       .even {\n         color: blue;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-class-odd and ng-class-even', function() {\n         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).\n           toMatch(/odd/);\n         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).\n           toMatch(/even/);\n       });\n     </file>\n   </example>\n */\nvar ngClassEvenDirective = classDirective('Even', 1);\n\n/**\n * @ngdoc directive\n * @name ngCloak\n * @restrict AC\n *\n * @description\n * The `ngCloak` directive is used to prevent the Angular html template from being briefly\n * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this\n * directive to avoid the undesirable flicker effect caused by the html template display.\n *\n * The directive can be applied to the `<body>` element, but the preferred usage is to apply\n * multiple `ngCloak` directives to small portions of the page to permit progressive rendering\n * of the browser view.\n *\n * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and\n * `angular.min.js`.\n * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).\n *\n * ```css\n * [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n *   display: none !important;\n * }\n * ```\n *\n * When this css rule is loaded by the browser, all html elements (including their children) that\n * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive\n * during the compilation of the template it deletes the `ngCloak` element attribute, making\n * the compiled element visible.\n *\n * For the best result, the `angular.js` script must be loaded in the head section of the html\n * document; alternatively, the css rule above must be included in the external stylesheet of the\n * application.\n *\n * @element ANY\n *\n * @example\n   <example name=\"ng-cloak\">\n     <file name=\"index.html\">\n        <div id=\"template1\" ng-cloak>{{ 'hello' }}</div>\n        <div id=\"template2\" class=\"ng-cloak\">{{ 'world' }}</div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should remove the template directive and css class', function() {\n         expect($('#template1').getAttribute('ng-cloak')).\n           toBeNull();\n         expect($('#template2').getAttribute('ng-cloak')).\n           toBeNull();\n       });\n     </file>\n   </example>\n *\n */\nvar ngCloakDirective = ngDirective({\n  compile: function(element, attr) {\n    attr.$set('ngCloak', undefined);\n    element.removeClass('ng-cloak');\n  }\n});\n\n/**\n * @ngdoc directive\n * @name ngController\n *\n * @description\n * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular\n * supports the principles behind the Model-View-Controller design pattern.\n *\n * MVC components in angular:\n *\n * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties\n *   are accessed through bindings.\n * * View — The template (HTML with data bindings) that is rendered into the View.\n * * Controller — The `ngController` directive specifies a Controller class; the class contains business\n *   logic behind the application to decorate the scope with functions and values\n *\n * Note that you can also attach controllers to the DOM by declaring it in a route definition\n * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller\n * again using `ng-controller` in the template itself.  This will cause the controller to be attached\n * and executed twice.\n *\n * @element ANY\n * @scope\n * @priority 500\n * @param {expression} ngController Name of a constructor function registered with the current\n * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression}\n * that on the current scope evaluates to a constructor function.\n *\n * The controller instance can be published into a scope property by specifying\n * `ng-controller=\"as propertyName\"`.\n *\n * If the current `$controllerProvider` is configured to use globals (via\n * {@link ng.$controllerProvider#allowGlobals `$controllerProvider.allowGlobals()` }), this may\n * also be the name of a globally accessible constructor function (deprecated, not recommended).\n *\n * @example\n * Here is a simple form for editing user contact information. Adding, removing, clearing, and\n * greeting are methods declared on the controller (see source tab). These methods can\n * easily be called from the angular markup. Any changes to the data are automatically reflected\n * in the View without the need for a manual update.\n *\n * Two different declaration styles are included below:\n *\n * * one binds methods and properties directly onto the controller using `this`:\n * `ng-controller=\"SettingsController1 as settings\"`\n * * one injects `$scope` into the controller:\n * `ng-controller=\"SettingsController2\"`\n *\n * The second option is more common in the Angular community, and is generally used in boilerplates\n * and in this guide. However, there are advantages to binding properties directly to the controller\n * and avoiding scope.\n *\n * * Using `controller as` makes it obvious which controller you are accessing in the template when\n * multiple controllers apply to an element.\n * * If you are writing your controllers as classes you have easier access to the properties and\n * methods, which will appear on the scope, from inside the controller code.\n * * Since there is always a `.` in the bindings, you don't have to worry about prototypal\n * inheritance masking primitives.\n *\n * This example demonstrates the `controller as` syntax.\n *\n * <example name=\"ngControllerAs\" module=\"controllerAsExample\">\n *   <file name=\"index.html\">\n *    <div id=\"ctrl-as-exmpl\" ng-controller=\"SettingsController1 as settings\">\n *      <label>Name: <input type=\"text\" ng-model=\"settings.name\"/></label>\n *      <button ng-click=\"settings.greet()\">greet</button><br/>\n *      Contact:\n *      <ul>\n *        <li ng-repeat=\"contact in settings.contacts\">\n *          <select ng-model=\"contact.type\" aria-label=\"Contact method\" id=\"select_{{$index}}\">\n *             <option>phone</option>\n *             <option>email</option>\n *          </select>\n *          <input type=\"text\" ng-model=\"contact.value\" aria-labelledby=\"select_{{$index}}\" />\n *          <button ng-click=\"settings.clearContact(contact)\">clear</button>\n *          <button ng-click=\"settings.removeContact(contact)\" aria-label=\"Remove\">X</button>\n *        </li>\n *        <li><button ng-click=\"settings.addContact()\">add</button></li>\n *     </ul>\n *    </div>\n *   </file>\n *   <file name=\"app.js\">\n *    angular.module('controllerAsExample', [])\n *      .controller('SettingsController1', SettingsController1);\n *\n *    function SettingsController1() {\n *      this.name = 'John Smith';\n *      this.contacts = [\n *        {type: 'phone', value: '408 555 1212'},\n *        {type: 'email', value: 'john.smith@example.org'}\n *      ];\n *    }\n *\n *    SettingsController1.prototype.greet = function() {\n *      alert(this.name);\n *    };\n *\n *    SettingsController1.prototype.addContact = function() {\n *      this.contacts.push({type: 'email', value: 'yourname@example.org'});\n *    };\n *\n *    SettingsController1.prototype.removeContact = function(contactToRemove) {\n *     var index = this.contacts.indexOf(contactToRemove);\n *      this.contacts.splice(index, 1);\n *    };\n *\n *    SettingsController1.prototype.clearContact = function(contact) {\n *      contact.type = 'phone';\n *      contact.value = '';\n *    };\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     it('should check controller as', function() {\n *       var container = element(by.id('ctrl-as-exmpl'));\n *         expect(container.element(by.model('settings.name'))\n *           .getAttribute('value')).toBe('John Smith');\n *\n *       var firstRepeat =\n *           container.element(by.repeater('contact in settings.contacts').row(0));\n *       var secondRepeat =\n *           container.element(by.repeater('contact in settings.contacts').row(1));\n *\n *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n *           .toBe('408 555 1212');\n *\n *       expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n *           .toBe('john.smith@example.org');\n *\n *       firstRepeat.element(by.buttonText('clear')).click();\n *\n *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n *           .toBe('');\n *\n *       container.element(by.buttonText('add')).click();\n *\n *       expect(container.element(by.repeater('contact in settings.contacts').row(2))\n *           .element(by.model('contact.value'))\n *           .getAttribute('value'))\n *           .toBe('yourname@example.org');\n *     });\n *   </file>\n * </example>\n *\n * This example demonstrates the \"attach to `$scope`\" style of controller.\n *\n * <example name=\"ngController\" module=\"controllerExample\">\n *  <file name=\"index.html\">\n *   <div id=\"ctrl-exmpl\" ng-controller=\"SettingsController2\">\n *     <label>Name: <input type=\"text\" ng-model=\"name\"/></label>\n *     <button ng-click=\"greet()\">greet</button><br/>\n *     Contact:\n *     <ul>\n *       <li ng-repeat=\"contact in contacts\">\n *         <select ng-model=\"contact.type\" id=\"select_{{$index}}\">\n *            <option>phone</option>\n *            <option>email</option>\n *         </select>\n *         <input type=\"text\" ng-model=\"contact.value\" aria-labelledby=\"select_{{$index}}\" />\n *         <button ng-click=\"clearContact(contact)\">clear</button>\n *         <button ng-click=\"removeContact(contact)\">X</button>\n *       </li>\n *       <li>[ <button ng-click=\"addContact()\">add</button> ]</li>\n *    </ul>\n *   </div>\n *  </file>\n *  <file name=\"app.js\">\n *   angular.module('controllerExample', [])\n *     .controller('SettingsController2', ['$scope', SettingsController2]);\n *\n *   function SettingsController2($scope) {\n *     $scope.name = 'John Smith';\n *     $scope.contacts = [\n *       {type:'phone', value:'408 555 1212'},\n *       {type:'email', value:'john.smith@example.org'}\n *     ];\n *\n *     $scope.greet = function() {\n *       alert($scope.name);\n *     };\n *\n *     $scope.addContact = function() {\n *       $scope.contacts.push({type:'email', value:'yourname@example.org'});\n *     };\n *\n *     $scope.removeContact = function(contactToRemove) {\n *       var index = $scope.contacts.indexOf(contactToRemove);\n *       $scope.contacts.splice(index, 1);\n *     };\n *\n *     $scope.clearContact = function(contact) {\n *       contact.type = 'phone';\n *       contact.value = '';\n *     };\n *   }\n *  </file>\n *  <file name=\"protractor.js\" type=\"protractor\">\n *    it('should check controller', function() {\n *      var container = element(by.id('ctrl-exmpl'));\n *\n *      expect(container.element(by.model('name'))\n *          .getAttribute('value')).toBe('John Smith');\n *\n *      var firstRepeat =\n *          container.element(by.repeater('contact in contacts').row(0));\n *      var secondRepeat =\n *          container.element(by.repeater('contact in contacts').row(1));\n *\n *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n *          .toBe('408 555 1212');\n *      expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))\n *          .toBe('john.smith@example.org');\n *\n *      firstRepeat.element(by.buttonText('clear')).click();\n *\n *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))\n *          .toBe('');\n *\n *      container.element(by.buttonText('add')).click();\n *\n *      expect(container.element(by.repeater('contact in contacts').row(2))\n *          .element(by.model('contact.value'))\n *          .getAttribute('value'))\n *          .toBe('yourname@example.org');\n *    });\n *  </file>\n *</example>\n\n */\nvar ngControllerDirective = [function() {\n  return {\n    restrict: 'A',\n    scope: true,\n    controller: '@',\n    priority: 500\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngCsp\n *\n * @restrict A\n * @element ANY\n * @description\n *\n * Angular has some features that can conflict with certain restrictions that are applied when using\n * [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) rules.\n *\n * If you intend to implement CSP with these rules then you must tell Angular not to use these\n * features.\n *\n * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps.\n *\n *\n * The following default rules in CSP affect Angular:\n *\n * * The use of `eval()`, `Function(string)` and similar functions to dynamically create and execute\n * code from strings is forbidden. Angular makes use of this in the {@link $parse} service to\n * provide a 30% increase in the speed of evaluating Angular expressions. (This CSP rule can be\n * disabled with the CSP keyword `unsafe-eval`, but it is generally not recommended as it would\n * weaken the protections offered by CSP.)\n *\n * * The use of inline resources, such as inline `<script>` and `<style>` elements, are forbidden.\n * This prevents apps from injecting custom styles directly into the document. Angular makes use of\n * this to include some CSS rules (e.g. {@link ngCloak} and {@link ngHide}). To make these\n * directives work when a CSP rule is blocking inline styles, you must link to the `angular-csp.css`\n * in your HTML manually. (This CSP rule can be disabled with the CSP keyword `unsafe-inline`, but\n * it is generally not recommended as it would weaken the protections offered by CSP.)\n *\n * If you do not provide `ngCsp` then Angular tries to autodetect if CSP is blocking dynamic code\n * creation from strings (e.g., `unsafe-eval` not specified in CSP header) and automatically\n * deactivates this feature in the {@link $parse} service. This autodetection, however, triggers a\n * CSP error to be logged in the console:\n *\n * ```\n * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of\n * script in the following Content Security Policy directive: \"default-src 'self'\". Note that\n * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.\n * ```\n *\n * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`\n * directive on an element of the HTML document that appears before the `<script>` tag that loads\n * the `angular.js` file.\n *\n * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*\n *\n * You can specify which of the CSP related Angular features should be deactivated by providing\n * a value for the `ng-csp` attribute. The options are as follows:\n *\n * * no-inline-style: this stops Angular from injecting CSS styles into the DOM\n *\n * * no-unsafe-eval: this stops Angular from optimizing $parse with unsafe eval of strings\n *\n * You can use these values in the following combinations:\n *\n *\n * * No declaration means that Angular will assume that you can do inline styles, but it will do\n * a runtime check for unsafe-eval. E.g. `<body>`. This is backwardly compatible with previous\n * versions of Angular.\n *\n * * A simple `ng-csp` (or `data-ng-csp`) attribute will tell Angular to deactivate both inline\n * styles and unsafe eval. E.g. `<body ng-csp>`. This is backwardly compatible with previous\n * versions of Angular.\n *\n * * Specifying only `no-unsafe-eval` tells Angular that we must not use eval, but that we can\n * inject inline styles. E.g. `<body ng-csp=\"no-unsafe-eval\">`.\n *\n * * Specifying only `no-inline-style` tells Angular that we must not inject styles, but that we can\n * run eval - no automatic check for unsafe eval will occur. E.g. `<body ng-csp=\"no-inline-style\">`\n *\n * * Specifying both `no-unsafe-eval` and `no-inline-style` tells Angular that we must not inject\n * styles nor use eval, which is the same as an empty: ng-csp.\n * E.g.`<body ng-csp=\"no-inline-style;no-unsafe-eval\">`\n *\n * @example\n * This example shows how to apply the `ngCsp` directive to the `html` tag.\n   ```html\n     <!doctype html>\n     <html ng-app ng-csp>\n     ...\n     ...\n     </html>\n   ```\n  * @example\n      <!-- Note: the `.csp` suffix in the example name triggers CSP mode in our http server! -->\n      <example name=\"example.csp\" module=\"cspExample\" ng-csp=\"true\">\n        <file name=\"index.html\">\n          <div ng-controller=\"MainController as ctrl\">\n            <div>\n              <button ng-click=\"ctrl.inc()\" id=\"inc\">Increment</button>\n              <span id=\"counter\">\n                {{ctrl.counter}}\n              </span>\n            </div>\n\n            <div>\n              <button ng-click=\"ctrl.evil()\" id=\"evil\">Evil</button>\n              <span id=\"evilError\">\n                {{ctrl.evilError}}\n              </span>\n            </div>\n          </div>\n        </file>\n        <file name=\"script.js\">\n           angular.module('cspExample', [])\n             .controller('MainController', function MainController() {\n                this.counter = 0;\n                this.inc = function() {\n                  this.counter++;\n                };\n                this.evil = function() {\n                  try {\n                    eval('1+2'); // eslint-disable-line no-eval\n                  } catch (e) {\n                    this.evilError = e.message;\n                  }\n                };\n              });\n        </file>\n        <file name=\"protractor.js\" type=\"protractor\">\n          var util, webdriver;\n\n          var incBtn = element(by.id('inc'));\n          var counter = element(by.id('counter'));\n          var evilBtn = element(by.id('evil'));\n          var evilError = element(by.id('evilError'));\n\n          function getAndClearSevereErrors() {\n            return browser.manage().logs().get('browser').then(function(browserLog) {\n              return browserLog.filter(function(logEntry) {\n                return logEntry.level.value > webdriver.logging.Level.WARNING.value;\n              });\n            });\n          }\n\n          function clearErrors() {\n            getAndClearSevereErrors();\n          }\n\n          function expectNoErrors() {\n            getAndClearSevereErrors().then(function(filteredLog) {\n              expect(filteredLog.length).toEqual(0);\n              if (filteredLog.length) {\n                console.log('browser console errors: ' + util.inspect(filteredLog));\n              }\n            });\n          }\n\n          function expectError(regex) {\n            getAndClearSevereErrors().then(function(filteredLog) {\n              var found = false;\n              filteredLog.forEach(function(log) {\n                if (log.message.match(regex)) {\n                  found = true;\n                }\n              });\n              if (!found) {\n                throw new Error('expected an error that matches ' + regex);\n              }\n            });\n          }\n\n          beforeEach(function() {\n            util = require('util');\n            webdriver = require('selenium-webdriver');\n          });\n\n          // For now, we only test on Chrome,\n          // as Safari does not load the page with Protractor's injected scripts,\n          // and Firefox webdriver always disables content security policy (#6358)\n          if (browser.params.browser !== 'chrome') {\n            return;\n          }\n\n          it('should not report errors when the page is loaded', function() {\n            // clear errors so we are not dependent on previous tests\n            clearErrors();\n            // Need to reload the page as the page is already loaded when\n            // we come here\n            browser.driver.getCurrentUrl().then(function(url) {\n              browser.get(url);\n            });\n            expectNoErrors();\n          });\n\n          it('should evaluate expressions', function() {\n            expect(counter.getText()).toEqual('0');\n            incBtn.click();\n            expect(counter.getText()).toEqual('1');\n            expectNoErrors();\n          });\n\n          it('should throw and report an error when using \"eval\"', function() {\n            evilBtn.click();\n            expect(evilError.getText()).toMatch(/Content Security Policy/);\n            expectError(/Content Security Policy/);\n          });\n        </file>\n      </example>\n  */\n\n// `ngCsp` is not implemented as a proper directive any more, because we need it be processed while\n// we bootstrap the app (before `$parse` is instantiated). For this reason, we just have the `csp()`\n// fn that looks for the `ng-csp` attribute anywhere in the current doc.\n\n/**\n * @ngdoc directive\n * @name ngClick\n *\n * @description\n * The ngClick directive allows you to specify custom behavior when\n * an element is clicked.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon\n * click. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-click\">\n     <file name=\"index.html\">\n      <button ng-click=\"count = count + 1\" ng-init=\"count=0\">\n        Increment\n      </button>\n      <span>\n        count: {{count}}\n      </span>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-click', function() {\n         expect(element(by.binding('count')).getText()).toMatch('0');\n         element(by.css('button')).click();\n         expect(element(by.binding('count')).getText()).toMatch('1');\n       });\n     </file>\n   </example>\n */\n/*\n * A collection of directives that allows creation of custom event handlers that are defined as\n * angular expressions and are compiled and executed within the current scope.\n */\nvar ngEventDirectives = {};\n\n// For events that might fire synchronously during DOM manipulation\n// we need to execute their event handlers asynchronously using $evalAsync,\n// so that they are not executed in an inconsistent state.\nvar forceAsyncEvents = {\n  'blur': true,\n  'focus': true\n};\nforEach(\n  'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),\n  function(eventName) {\n    var directiveName = directiveNormalize('ng-' + eventName);\n    ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {\n      return {\n        restrict: 'A',\n        compile: function($element, attr) {\n          // NOTE:\n          // We expose the powerful `$event` object on the scope that provides access to the Window,\n          // etc. This is OK, because expressions are not sandboxed any more (and the expression\n          // sandbox was never meant to be a security feature anyway).\n          var fn = $parse(attr[directiveName]);\n          return function ngEventHandler(scope, element) {\n            element.on(eventName, function(event) {\n              var callback = function() {\n                fn(scope, {$event: event});\n              };\n              if (forceAsyncEvents[eventName] && $rootScope.$$phase) {\n                scope.$evalAsync(callback);\n              } else {\n                scope.$apply(callback);\n              }\n            });\n          };\n        }\n      };\n    }];\n  }\n);\n\n/**\n * @ngdoc directive\n * @name ngDblclick\n *\n * @description\n * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon\n * a dblclick. (The Event object is available as `$event`)\n *\n * @example\n   <example name=\"ng-dblclick\">\n     <file name=\"index.html\">\n      <button ng-dblclick=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (on double click)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousedown\n *\n * @description\n * The ngMousedown directive allows you to specify custom behavior on mousedown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon\n * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mousedown\">\n     <file name=\"index.html\">\n      <button ng-mousedown=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (on mouse down)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseup\n *\n * @description\n * Specify custom behavior on mouseup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon\n * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mouseup\">\n     <file name=\"index.html\">\n      <button ng-mouseup=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (on mouse up)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngMouseover\n *\n * @description\n * Specify custom behavior on mouseover event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon\n * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mouseover\">\n     <file name=\"index.html\">\n      <button ng-mouseover=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (when mouse is over)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseenter\n *\n * @description\n * Specify custom behavior on mouseenter event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon\n * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mouseenter\">\n     <file name=\"index.html\">\n      <button ng-mouseenter=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (when mouse enters)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngMouseleave\n *\n * @description\n * Specify custom behavior on mouseleave event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon\n * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mouseleave\">\n     <file name=\"index.html\">\n      <button ng-mouseleave=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (when mouse leaves)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngMousemove\n *\n * @description\n * Specify custom behavior on mousemove event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon\n * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-mousemove\">\n     <file name=\"index.html\">\n      <button ng-mousemove=\"count = count + 1\" ng-init=\"count=0\">\n        Increment (when mouse moves)\n      </button>\n      count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeydown\n *\n * @description\n * Specify custom behavior on keydown event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon\n * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n   <example name=\"ng-keydown\">\n     <file name=\"index.html\">\n      <input ng-keydown=\"count = count + 1\" ng-init=\"count=0\">\n      key down count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeyup\n *\n * @description\n * Specify custom behavior on keyup event.\n *\n * @element ANY\n * @priority 0\n * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon\n * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n   <example name=\"ng-keyup\">\n     <file name=\"index.html\">\n       <p>Typing in the input box below updates the key count</p>\n       <input ng-keyup=\"count = count + 1\" ng-init=\"count=0\"> key up count: {{count}}\n\n       <p>Typing in the input box below updates the keycode</p>\n       <input ng-keyup=\"event=$event\">\n       <p>event keyCode: {{ event.keyCode }}</p>\n       <p>event altKey: {{ event.altKey }}</p>\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngKeypress\n *\n * @description\n * Specify custom behavior on keypress event.\n *\n * @element ANY\n * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon\n * keypress. ({@link guide/expression#-event- Event object is available as `$event`}\n * and can be interrogated for keyCode, altKey, etc.)\n *\n * @example\n   <example name=\"ng-keypress\">\n     <file name=\"index.html\">\n      <input ng-keypress=\"count = count + 1\" ng-init=\"count=0\">\n      key press count: {{count}}\n     </file>\n   </example>\n */\n\n\n/**\n * @ngdoc directive\n * @name ngSubmit\n *\n * @description\n * Enables binding angular expressions to onsubmit events.\n *\n * Additionally it prevents the default action (which for form means sending the request to the\n * server and reloading the current page), but only if the form does not contain `action`,\n * `data-action`, or `x-action` attributes.\n *\n * <div class=\"alert alert-warning\">\n * **Warning:** Be careful not to cause \"double-submission\" by using both the `ngClick` and\n * `ngSubmit` handlers together. See the\n * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}\n * for a detailed discussion of when `ngSubmit` may be triggered.\n * </div>\n *\n * @element form\n * @priority 0\n * @param {expression} ngSubmit {@link guide/expression Expression} to eval.\n * ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example module=\"submitExample\" name=\"ng-submit\">\n     <file name=\"index.html\">\n      <script>\n        angular.module('submitExample', [])\n          .controller('ExampleController', ['$scope', function($scope) {\n            $scope.list = [];\n            $scope.text = 'hello';\n            $scope.submit = function() {\n              if ($scope.text) {\n                $scope.list.push(this.text);\n                $scope.text = '';\n              }\n            };\n          }]);\n      </script>\n      <form ng-submit=\"submit()\" ng-controller=\"ExampleController\">\n        Enter text and hit enter:\n        <input type=\"text\" ng-model=\"text\" name=\"text\" />\n        <input type=\"submit\" id=\"submit\" value=\"Submit\" />\n        <pre>list={{list}}</pre>\n      </form>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-submit', function() {\n         expect(element(by.binding('list')).getText()).toBe('list=[]');\n         element(by.css('#submit')).click();\n         expect(element(by.binding('list')).getText()).toContain('hello');\n         expect(element(by.model('text')).getAttribute('value')).toBe('');\n       });\n       it('should ignore empty strings', function() {\n         expect(element(by.binding('list')).getText()).toBe('list=[]');\n         element(by.css('#submit')).click();\n         element(by.css('#submit')).click();\n         expect(element(by.binding('list')).getText()).toContain('hello');\n        });\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngFocus\n *\n * @description\n * Specify custom behavior on focus event.\n *\n * Note: As the `focus` event is executed synchronously when calling `input.focus()`\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon\n * focus. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngBlur\n *\n * @description\n * Specify custom behavior on blur event.\n *\n * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when\n * an element has lost focus.\n *\n * Note: As the `blur` event is executed synchronously also during DOM manipulations\n * (e.g. removing a focussed input),\n * AngularJS executes the expression using `scope.$evalAsync` if the event is fired\n * during an `$apply` to ensure a consistent state.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon\n * blur. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n * See {@link ng.directive:ngClick ngClick}\n */\n\n/**\n * @ngdoc directive\n * @name ngCopy\n *\n * @description\n * Specify custom behavior on copy event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon\n * copy. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-copy\">\n     <file name=\"index.html\">\n      <input ng-copy=\"copied=true\" ng-init=\"copied=false; value='copy me'\" ng-model=\"value\">\n      copied: {{copied}}\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngCut\n *\n * @description\n * Specify custom behavior on cut event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon\n * cut. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-cut\">\n     <file name=\"index.html\">\n      <input ng-cut=\"cut=true\" ng-init=\"cut=false; value='cut me'\" ng-model=\"value\">\n      cut: {{cut}}\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngPaste\n *\n * @description\n * Specify custom behavior on paste event.\n *\n * @element window, input, select, textarea, a\n * @priority 0\n * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon\n * paste. ({@link guide/expression#-event- Event object is available as `$event`})\n *\n * @example\n   <example name=\"ng-paste\">\n     <file name=\"index.html\">\n      <input ng-paste=\"paste=true\" ng-init=\"paste=false\" placeholder='paste here'>\n      pasted: {{paste}}\n     </file>\n   </example>\n */\n\n/**\n * @ngdoc directive\n * @name ngIf\n * @restrict A\n * @multiElement\n *\n * @description\n * The `ngIf` directive removes or recreates a portion of the DOM tree based on an\n * {expression}. If the expression assigned to `ngIf` evaluates to a false\n * value then the element is removed from the DOM, otherwise a clone of the\n * element is reinserted into the DOM.\n *\n * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the\n * element in the DOM rather than changing its visibility via the `display` css property.  A common\n * case when this difference is significant is when using css selectors that rely on an element's\n * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.\n *\n * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope\n * is created when the element is restored.  The scope created within `ngIf` inherits from\n * its parent scope using\n * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).\n * An important implication of this is if `ngModel` is used within `ngIf` to bind to\n * a javascript primitive defined in the parent scope. In this case any modifications made to the\n * variable within the child scope will override (hide) the value in the parent scope.\n *\n * Also, `ngIf` recreates elements using their compiled state. An example of this behavior\n * is if an element's class attribute is directly modified after it's compiled, using something like\n * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element\n * the added class will be lost because the original compiled state is used to regenerate the element.\n *\n * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`\n * and `leave` effects.\n *\n * @animations\n * | Animation                        | Occurs                               |\n * |----------------------------------|-------------------------------------|\n * | {@link ng.$animate#enter enter}  | just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container |\n * | {@link ng.$animate#leave leave}  | just before the `ngIf` contents are removed from the DOM |\n *\n * @element ANY\n * @scope\n * @priority 600\n * @param {expression} ngIf If the {@link guide/expression expression} is falsy then\n *     the element is removed from the DOM tree. If it is truthy a copy of the compiled\n *     element is added to the DOM tree.\n *\n * @example\n  <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-if\">\n    <file name=\"index.html\">\n      <label>Click me: <input type=\"checkbox\" ng-model=\"checked\" ng-init=\"checked=true\" /></label><br/>\n      Show when checked:\n      <span ng-if=\"checked\" class=\"animate-if\">\n        This is removed when the checkbox is unchecked.\n      </span>\n    </file>\n    <file name=\"animations.css\">\n      .animate-if {\n        background:white;\n        border:1px solid black;\n        padding:10px;\n      }\n\n      .animate-if.ng-enter, .animate-if.ng-leave {\n        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n      }\n\n      .animate-if.ng-enter,\n      .animate-if.ng-leave.ng-leave-active {\n        opacity:0;\n      }\n\n      .animate-if.ng-leave,\n      .animate-if.ng-enter.ng-enter-active {\n        opacity:1;\n      }\n    </file>\n  </example>\n */\nvar ngIfDirective = ['$animate', '$compile', function($animate, $compile) {\n  return {\n    multiElement: true,\n    transclude: 'element',\n    priority: 600,\n    terminal: true,\n    restrict: 'A',\n    $$tlb: true,\n    link: function($scope, $element, $attr, ctrl, $transclude) {\n        var block, childScope, previousElements;\n        $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {\n\n          if (value) {\n            if (!childScope) {\n              $transclude(function(clone, newScope) {\n                childScope = newScope;\n                clone[clone.length++] = $compile.$$createComment('end ngIf', $attr.ngIf);\n                // Note: We only need the first/last node of the cloned nodes.\n                // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n                // by a directive with templateUrl when its template arrives.\n                block = {\n                  clone: clone\n                };\n                $animate.enter(clone, $element.parent(), $element);\n              });\n            }\n          } else {\n            if (previousElements) {\n              previousElements.remove();\n              previousElements = null;\n            }\n            if (childScope) {\n              childScope.$destroy();\n              childScope = null;\n            }\n            if (block) {\n              previousElements = getBlockNodes(block.clone);\n              $animate.leave(previousElements).done(function(response) {\n                if (response !== false) previousElements = null;\n              });\n              block = null;\n            }\n          }\n        });\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngInclude\n * @restrict ECA\n *\n * @description\n * Fetches, compiles and includes an external HTML fragment.\n *\n * By default, the template URL is restricted to the same domain and protocol as the\n * application document. This is done by calling {@link $sce#getTrustedResourceUrl\n * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols\n * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or\n * {@link $sce#trustAsResourceUrl wrap them} as trusted values. Refer to Angular's {@link\n * ng.$sce Strict Contextual Escaping}.\n *\n * In addition, the browser's\n * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)\n * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)\n * policy may further restrict whether the template is successfully loaded.\n * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`\n * access on some browsers.\n *\n * @animations\n * | Animation                        | Occurs                              |\n * |----------------------------------|-------------------------------------|\n * | {@link ng.$animate#enter enter}  | when the expression changes, on the new include |\n * | {@link ng.$animate#leave leave}  | when the expression changes, on the old include |\n *\n * The enter and leave animation occur concurrently.\n *\n * @scope\n * @priority 400\n *\n * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,\n *                 make sure you wrap it in **single** quotes, e.g. `src=\"'myPartialTemplate.html'\"`.\n * @param {string=} onload Expression to evaluate when a new partial is loaded.\n *                  <div class=\"alert alert-warning\">\n *                  **Note:** When using onload on SVG elements in IE11, the browser will try to call\n *                  a function with the name on the window element, which will usually throw a\n *                  \"function is undefined\" error. To fix this, you can instead use `data-onload` or a\n *                  different form that {@link guide/directive#normalization matches} `onload`.\n *                  </div>\n   *\n * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll\n *                  $anchorScroll} to scroll the viewport after the content is loaded.\n *\n *                  - If the attribute is not set, disable scrolling.\n *                  - If the attribute is set without value, enable scrolling.\n *                  - Otherwise enable scrolling only if the expression evaluates to truthy value.\n *\n * @example\n  <example module=\"includeExample\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-include\">\n    <file name=\"index.html\">\n     <div ng-controller=\"ExampleController\">\n       <select ng-model=\"template\" ng-options=\"t.name for t in templates\">\n        <option value=\"\">(blank)</option>\n       </select>\n       url of the template: <code>{{template.url}}</code>\n       <hr/>\n       <div class=\"slide-animate-container\">\n         <div class=\"slide-animate\" ng-include=\"template.url\"></div>\n       </div>\n     </div>\n    </file>\n    <file name=\"script.js\">\n      angular.module('includeExample', ['ngAnimate'])\n        .controller('ExampleController', ['$scope', function($scope) {\n          $scope.templates =\n            [{ name: 'template1.html', url: 'template1.html'},\n             { name: 'template2.html', url: 'template2.html'}];\n          $scope.template = $scope.templates[0];\n        }]);\n     </file>\n    <file name=\"template1.html\">\n      Content of template1.html\n    </file>\n    <file name=\"template2.html\">\n      Content of template2.html\n    </file>\n    <file name=\"animations.css\">\n      .slide-animate-container {\n        position:relative;\n        background:white;\n        border:1px solid black;\n        height:40px;\n        overflow:hidden;\n      }\n\n      .slide-animate {\n        padding:10px;\n      }\n\n      .slide-animate.ng-enter, .slide-animate.ng-leave {\n        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n        position:absolute;\n        top:0;\n        left:0;\n        right:0;\n        bottom:0;\n        display:block;\n        padding:10px;\n      }\n\n      .slide-animate.ng-enter {\n        top:-50px;\n      }\n      .slide-animate.ng-enter.ng-enter-active {\n        top:0;\n      }\n\n      .slide-animate.ng-leave {\n        top:0;\n      }\n      .slide-animate.ng-leave.ng-leave-active {\n        top:50px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      var templateSelect = element(by.model('template'));\n      var includeElem = element(by.css('[ng-include]'));\n\n      it('should load template1.html', function() {\n        expect(includeElem.getText()).toMatch(/Content of template1.html/);\n      });\n\n      it('should load template2.html', function() {\n        if (browser.params.browser === 'firefox') {\n          // Firefox can't handle using selects\n          // See https://github.com/angular/protractor/issues/480\n          return;\n        }\n        templateSelect.click();\n        templateSelect.all(by.css('option')).get(2).click();\n        expect(includeElem.getText()).toMatch(/Content of template2.html/);\n      });\n\n      it('should change to blank', function() {\n        if (browser.params.browser === 'firefox') {\n          // Firefox can't handle using selects\n          return;\n        }\n        templateSelect.click();\n        templateSelect.all(by.css('option')).get(0).click();\n        expect(includeElem.isPresent()).toBe(false);\n      });\n    </file>\n  </example>\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentRequested\n * @eventType emit on the scope ngInclude was declared in\n * @description\n * Emitted every time the ngInclude content is requested.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {String} src URL of content to load.\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentLoaded\n * @eventType emit on the current ngInclude scope\n * @description\n * Emitted every time the ngInclude content is reloaded.\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {String} src URL of content to load.\n */\n\n\n/**\n * @ngdoc event\n * @name ngInclude#$includeContentError\n * @eventType emit on the scope ngInclude was declared in\n * @description\n * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)\n *\n * @param {Object} angularEvent Synthetic event object.\n * @param {String} src URL of content to load.\n */\nvar ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate',\n                  function($templateRequest,   $anchorScroll,   $animate) {\n  return {\n    restrict: 'ECA',\n    priority: 400,\n    terminal: true,\n    transclude: 'element',\n    controller: angular.noop,\n    compile: function(element, attr) {\n      var srcExp = attr.ngInclude || attr.src,\n          onloadExp = attr.onload || '',\n          autoScrollExp = attr.autoscroll;\n\n      return function(scope, $element, $attr, ctrl, $transclude) {\n        var changeCounter = 0,\n            currentScope,\n            previousElement,\n            currentElement;\n\n        var cleanupLastIncludeContent = function() {\n          if (previousElement) {\n            previousElement.remove();\n            previousElement = null;\n          }\n          if (currentScope) {\n            currentScope.$destroy();\n            currentScope = null;\n          }\n          if (currentElement) {\n            $animate.leave(currentElement).done(function(response) {\n              if (response !== false) previousElement = null;\n            });\n            previousElement = currentElement;\n            currentElement = null;\n          }\n        };\n\n        scope.$watch(srcExp, function ngIncludeWatchAction(src) {\n          var afterAnimation = function(response) {\n            if (response !== false && isDefined(autoScrollExp) &&\n              (!autoScrollExp || scope.$eval(autoScrollExp))) {\n                $anchorScroll();\n            }\n          };\n          var thisChangeId = ++changeCounter;\n\n          if (src) {\n            //set the 2nd param to true to ignore the template request error so that the inner\n            //contents and scope can be cleaned up.\n            $templateRequest(src, true).then(function(response) {\n              if (scope.$$destroyed) return;\n\n              if (thisChangeId !== changeCounter) return;\n              var newScope = scope.$new();\n              ctrl.template = response;\n\n              // Note: This will also link all children of ng-include that were contained in the original\n              // html. If that content contains controllers, ... they could pollute/change the scope.\n              // However, using ng-include on an element with additional content does not make sense...\n              // Note: We can't remove them in the cloneAttchFn of $transclude as that\n              // function is called before linking the content, which would apply child\n              // directives to non existing elements.\n              var clone = $transclude(newScope, function(clone) {\n                cleanupLastIncludeContent();\n                $animate.enter(clone, null, $element).done(afterAnimation);\n              });\n\n              currentScope = newScope;\n              currentElement = clone;\n\n              currentScope.$emit('$includeContentLoaded', src);\n              scope.$eval(onloadExp);\n            }, function() {\n              if (scope.$$destroyed) return;\n\n              if (thisChangeId === changeCounter) {\n                cleanupLastIncludeContent();\n                scope.$emit('$includeContentError', src);\n              }\n            });\n            scope.$emit('$includeContentRequested', src);\n          } else {\n            cleanupLastIncludeContent();\n            ctrl.template = null;\n          }\n        });\n      };\n    }\n  };\n}];\n\n// This directive is called during the $transclude call of the first `ngInclude` directive.\n// It will replace and compile the content of the element with the loaded template.\n// We need this directive so that the element content is already filled when\n// the link function of another directive on the same element as ngInclude\n// is called.\nvar ngIncludeFillContentDirective = ['$compile',\n  function($compile) {\n    return {\n      restrict: 'ECA',\n      priority: -400,\n      require: 'ngInclude',\n      link: function(scope, $element, $attr, ctrl) {\n        if (toString.call($element[0]).match(/SVG/)) {\n          // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not\n          // support innerHTML, so detect this here and try to generate the contents\n          // specially.\n          $element.empty();\n          $compile(jqLiteBuildFragment(ctrl.template, window.document).childNodes)(scope,\n              function namespaceAdaptedClone(clone) {\n            $element.append(clone);\n          }, {futureParentElement: $element});\n          return;\n        }\n\n        $element.html(ctrl.template);\n        $compile($element.contents())(scope);\n      }\n    };\n  }];\n\n/**\n * @ngdoc directive\n * @name ngInit\n * @restrict AC\n *\n * @description\n * The `ngInit` directive allows you to evaluate an expression in the\n * current scope.\n *\n * <div class=\"alert alert-danger\">\n * This directive can be abused to add unnecessary amounts of logic into your templates.\n * There are only a few appropriate uses of `ngInit`, such as for aliasing special properties of\n * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below; and for injecting data via\n * server side scripting. Besides these few cases, you should use {@link guide/controller controllers}\n * rather than `ngInit` to initialize values on a scope.\n * </div>\n *\n * <div class=\"alert alert-warning\">\n * **Note**: If you have assignment in `ngInit` along with a {@link ng.$filter `filter`}, make\n * sure you have parentheses to ensure correct operator precedence:\n * <pre class=\"prettyprint\">\n * `<div ng-init=\"test1 = ($index | toString)\"></div>`\n * </pre>\n * </div>\n *\n * @priority 450\n *\n * @element ANY\n * @param {expression} ngInit {@link guide/expression Expression} to eval.\n *\n * @example\n   <example module=\"initExample\" name=\"ng-init\">\n     <file name=\"index.html\">\n   <script>\n     angular.module('initExample', [])\n       .controller('ExampleController', ['$scope', function($scope) {\n         $scope.list = [['a', 'b'], ['c', 'd']];\n       }]);\n   </script>\n   <div ng-controller=\"ExampleController\">\n     <div ng-repeat=\"innerList in list\" ng-init=\"outerIndex = $index\">\n       <div ng-repeat=\"value in innerList\" ng-init=\"innerIndex = $index\">\n          <span class=\"example-init\">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>\n       </div>\n     </div>\n   </div>\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should alias index positions', function() {\n         var elements = element.all(by.css('.example-init'));\n         expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');\n         expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');\n         expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');\n         expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');\n       });\n     </file>\n   </example>\n */\nvar ngInitDirective = ngDirective({\n  priority: 450,\n  compile: function() {\n    return {\n      pre: function(scope, element, attrs) {\n        scope.$eval(attrs.ngInit);\n      }\n    };\n  }\n});\n\n/**\n * @ngdoc directive\n * @name ngList\n *\n * @description\n * Text input that converts between a delimited string and an array of strings. The default\n * delimiter is a comma followed by a space - equivalent to `ng-list=\", \"`. You can specify a custom\n * delimiter as the value of the `ngList` attribute - for example, `ng-list=\" | \"`.\n *\n * The behaviour of the directive is affected by the use of the `ngTrim` attribute.\n * * If `ngTrim` is set to `\"false\"` then whitespace around both the separator and each\n *   list item is respected. This implies that the user of the directive is responsible for\n *   dealing with whitespace but also allows you to use whitespace as a delimiter, such as a\n *   tab or newline character.\n * * Otherwise whitespace around the delimiter is ignored when splitting (although it is respected\n *   when joining the list items back together) and whitespace around each list item is stripped\n *   before it is added to the model.\n *\n * ### Example with Validation\n *\n * <example name=\"ngList-directive\" module=\"listExample\">\n *   <file name=\"app.js\">\n *      angular.module('listExample', [])\n *        .controller('ExampleController', ['$scope', function($scope) {\n *          $scope.names = ['morpheus', 'neo', 'trinity'];\n *        }]);\n *   </file>\n *   <file name=\"index.html\">\n *    <form name=\"myForm\" ng-controller=\"ExampleController\">\n *      <label>List: <input name=\"namesInput\" ng-model=\"names\" ng-list required></label>\n *      <span role=\"alert\">\n *        <span class=\"error\" ng-show=\"myForm.namesInput.$error.required\">\n *        Required!</span>\n *      </span>\n *      <br>\n *      <tt>names = {{names}}</tt><br/>\n *      <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>\n *      <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>\n *      <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>\n *      <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>\n *     </form>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     var listInput = element(by.model('names'));\n *     var names = element(by.exactBinding('names'));\n *     var valid = element(by.binding('myForm.namesInput.$valid'));\n *     var error = element(by.css('span.error'));\n *\n *     it('should initialize to model', function() {\n *       expect(names.getText()).toContain('[\"morpheus\",\"neo\",\"trinity\"]');\n *       expect(valid.getText()).toContain('true');\n *       expect(error.getCssValue('display')).toBe('none');\n *     });\n *\n *     it('should be invalid if empty', function() {\n *       listInput.clear();\n *       listInput.sendKeys('');\n *\n *       expect(names.getText()).toContain('');\n *       expect(valid.getText()).toContain('false');\n *       expect(error.getCssValue('display')).not.toBe('none');\n *     });\n *   </file>\n * </example>\n *\n * ### Example - splitting on newline\n * <example name=\"ngList-directive-newlines\">\n *   <file name=\"index.html\">\n *    <textarea ng-model=\"list\" ng-list=\"&#10;\" ng-trim=\"false\"></textarea>\n *    <pre>{{ list | json }}</pre>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     it(\"should split the text by newlines\", function() {\n *       var listInput = element(by.model('list'));\n *       var output = element(by.binding('list | json'));\n *       listInput.sendKeys('abc\\ndef\\nghi');\n *       expect(output.getText()).toContain('[\\n  \"abc\",\\n  \"def\",\\n  \"ghi\"\\n]');\n *     });\n *   </file>\n * </example>\n *\n * @element input\n * @param {string=} ngList optional delimiter that should be used to split the value.\n */\nvar ngListDirective = function() {\n  return {\n    restrict: 'A',\n    priority: 100,\n    require: 'ngModel',\n    link: function(scope, element, attr, ctrl) {\n      var ngList = attr.ngList || ', ';\n      var trimValues = attr.ngTrim !== 'false';\n      var separator = trimValues ? trim(ngList) : ngList;\n\n      var parse = function(viewValue) {\n        // If the viewValue is invalid (say required but empty) it will be `undefined`\n        if (isUndefined(viewValue)) return;\n\n        var list = [];\n\n        if (viewValue) {\n          forEach(viewValue.split(separator), function(value) {\n            if (value) list.push(trimValues ? trim(value) : value);\n          });\n        }\n\n        return list;\n      };\n\n      ctrl.$parsers.push(parse);\n      ctrl.$formatters.push(function(value) {\n        if (isArray(value)) {\n          return value.join(ngList);\n        }\n\n        return undefined;\n      });\n\n      // Override the standard $isEmpty because an empty array means the input is empty.\n      ctrl.$isEmpty = function(value) {\n        return !value || !value.length;\n      };\n    }\n  };\n};\n\n/* global VALID_CLASS: true,\n  INVALID_CLASS: true,\n  PRISTINE_CLASS: true,\n  DIRTY_CLASS: true,\n  UNTOUCHED_CLASS: true,\n  TOUCHED_CLASS: true,\n  PENDING_CLASS: true,\n  addSetValidityMethod: true,\n  setupValidity: true,\n  defaultModelOptions: false\n*/\n\n\nvar VALID_CLASS = 'ng-valid',\n    INVALID_CLASS = 'ng-invalid',\n    PRISTINE_CLASS = 'ng-pristine',\n    DIRTY_CLASS = 'ng-dirty',\n    UNTOUCHED_CLASS = 'ng-untouched',\n    TOUCHED_CLASS = 'ng-touched',\n    EMPTY_CLASS = 'ng-empty',\n    NOT_EMPTY_CLASS = 'ng-not-empty';\n\nvar ngModelMinErr = minErr('ngModel');\n\n/**\n * @ngdoc type\n * @name ngModel.NgModelController\n *\n * @property {*} $viewValue The actual value from the control's view. For `input` elements, this is a\n * String. See {@link ngModel.NgModelController#$setViewValue} for information about when the $viewValue\n * is set.\n *\n * @property {*} $modelValue The value in the model that the control is bound to.\n *\n * @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever\n *  the control updates the ngModelController with a new {@link ngModel.NgModelController#$viewValue\n    `$viewValue`} from the DOM, usually via user input.\n    See {@link ngModel.NgModelController#$setViewValue `$setViewValue()`} for a detailed lifecycle explanation.\n    Note that the `$parsers` are not called when the bound ngModel expression changes programmatically.\n\n  The functions are called in array order, each passing\n    its return value through to the next. The last return value is forwarded to the\n    {@link ngModel.NgModelController#$validators `$validators`} collection.\n\n  Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue\n    `$viewValue`}.\n\n  Returning `undefined` from a parser means a parse error occurred. In that case,\n    no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel`\n    will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`}\n    is set to `true`. The parse error is stored in `ngModel.$error.parse`.\n\n  This simple example shows a parser that would convert text input value to lowercase:\n * ```js\n * function parse(value) {\n *   if (value) {\n *     return value.toLowerCase();\n *   }\n * }\n * ngModelController.$parsers.push(parse);\n * ```\n\n *\n * @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever\n    the bound ngModel expression changes programmatically. The `$formatters` are not called when the\n    value of the control is changed by user interaction.\n\n  Formatters are used to format / convert the {@link ngModel.NgModelController#$modelValue\n    `$modelValue`} for display in the control.\n\n  The functions are called in reverse array order, each passing the value through to the\n    next. The last return value is used as the actual DOM value.\n\n  This simple example shows a formatter that would convert the model value to uppercase:\n\n * ```js\n * function format(value) {\n *   if (value) {\n *     return value.toUpperCase();\n *   }\n * }\n * ngModel.$formatters.push(format);\n * ```\n *\n * @property {Object.<string, function>} $validators A collection of validators that are applied\n *      whenever the model value changes. The key value within the object refers to the name of the\n *      validator while the function refers to the validation operation. The validation operation is\n *      provided with the model value as an argument and must return a true or false value depending\n *      on the response of that validation.\n *\n * ```js\n * ngModel.$validators.validCharacters = function(modelValue, viewValue) {\n *   var value = modelValue || viewValue;\n *   return /[0-9]+/.test(value) &&\n *          /[a-z]+/.test(value) &&\n *          /[A-Z]+/.test(value) &&\n *          /\\W+/.test(value);\n * };\n * ```\n *\n * @property {Object.<string, function>} $asyncValidators A collection of validations that are expected to\n *      perform an asynchronous validation (e.g. a HTTP request). The validation function that is provided\n *      is expected to return a promise when it is run during the model validation process. Once the promise\n *      is delivered then the validation status will be set to true when fulfilled and false when rejected.\n *      When the asynchronous validators are triggered, each of the validators will run in parallel and the model\n *      value will only be updated once all validators have been fulfilled. As long as an asynchronous validator\n *      is unfulfilled, its key will be added to the controllers `$pending` property. Also, all asynchronous validators\n *      will only run once all synchronous validators have passed.\n *\n * Please note that if $http is used then it is important that the server returns a success HTTP response code\n * in order to fulfill the validation and a status level of `4xx` in order to reject the validation.\n *\n * ```js\n * ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {\n *   var value = modelValue || viewValue;\n *\n *   // Lookup user by username\n *   return $http.get('/api/users/' + value).\n *      then(function resolved() {\n *        //username exists, this means validation fails\n *        return $q.reject('exists');\n *      }, function rejected() {\n *        //username does not exist, therefore this validation passes\n *        return true;\n *      });\n * };\n * ```\n *\n * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the\n *     view value has changed. It is called with no arguments, and its return value is ignored.\n *     This can be used in place of additional $watches against the model value.\n *\n * @property {Object} $error An object hash with all failing validator ids as keys.\n * @property {Object} $pending An object hash with all pending validator ids as keys.\n *\n * @property {boolean} $untouched True if control has not lost focus yet.\n * @property {boolean} $touched True if control has lost focus.\n * @property {boolean} $pristine True if user has not interacted with the control yet.\n * @property {boolean} $dirty True if user has already interacted with the control.\n * @property {boolean} $valid True if there is no error.\n * @property {boolean} $invalid True if at least one error on the control.\n * @property {string} $name The name attribute of the control.\n *\n * @description\n *\n * `NgModelController` provides API for the {@link ngModel `ngModel`} directive.\n * The controller contains services for data-binding, validation, CSS updates, and value formatting\n * and parsing. It purposefully does not contain any logic which deals with DOM rendering or\n * listening to DOM events.\n * Such DOM related logic should be provided by other directives which make use of\n * `NgModelController` for data-binding to control elements.\n * Angular provides this DOM logic for most {@link input `input`} elements.\n * At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example\n * custom control example} that uses `ngModelController` to bind to `contenteditable` elements.\n *\n * @example\n * ### Custom Control Example\n * This example shows how to use `NgModelController` with a custom control to achieve\n * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)\n * collaborate together to achieve the desired result.\n *\n * `contenteditable` is an HTML5 attribute, which tells the browser to let the element\n * contents be edited in place by the user.\n *\n * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}\n * module to automatically remove \"bad\" content like inline event listener (e.g. `<span onclick=\"...\">`).\n * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks\n * that content using the `$sce` service.\n *\n * <example name=\"NgModelController\" module=\"customControl\" deps=\"angular-sanitize.js\">\n    <file name=\"style.css\">\n      [contenteditable] {\n        border: 1px solid black;\n        background-color: white;\n        min-height: 20px;\n      }\n\n      .ng-invalid {\n        border: 1px solid red;\n      }\n\n    </file>\n    <file name=\"script.js\">\n      angular.module('customControl', ['ngSanitize']).\n        directive('contenteditable', ['$sce', function($sce) {\n          return {\n            restrict: 'A', // only activate on element attribute\n            require: '?ngModel', // get a hold of NgModelController\n            link: function(scope, element, attrs, ngModel) {\n              if (!ngModel) return; // do nothing if no ng-model\n\n              // Specify how UI should be updated\n              ngModel.$render = function() {\n                element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));\n              };\n\n              // Listen for change events to enable binding\n              element.on('blur keyup change', function() {\n                scope.$evalAsync(read);\n              });\n              read(); // initialize\n\n              // Write data to the model\n              function read() {\n                var html = element.html();\n                // When we clear the content editable the browser leaves a <br> behind\n                // If strip-br attribute is provided then we strip this out\n                if (attrs.stripBr && html === '<br>') {\n                  html = '';\n                }\n                ngModel.$setViewValue(html);\n              }\n            }\n          };\n        }]);\n    </file>\n    <file name=\"index.html\">\n      <form name=\"myForm\">\n       <div contenteditable\n            name=\"myWidget\" ng-model=\"userContent\"\n            strip-br=\"true\"\n            required>Change me!</div>\n        <span ng-show=\"myForm.myWidget.$error.required\">Required!</span>\n       <hr>\n       <textarea ng-model=\"userContent\" aria-label=\"Dynamic textarea\"></textarea>\n      </form>\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n    it('should data-bind and become invalid', function() {\n      if (browser.params.browser === 'safari' || browser.params.browser === 'firefox') {\n        // SafariDriver can't handle contenteditable\n        // and Firefox driver can't clear contenteditables very well\n        return;\n      }\n      var contentEditable = element(by.css('[contenteditable]'));\n      var content = 'Change me!';\n\n      expect(contentEditable.getText()).toEqual(content);\n\n      contentEditable.clear();\n      contentEditable.sendKeys(protractor.Key.BACK_SPACE);\n      expect(contentEditable.getText()).toEqual('');\n      expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);\n    });\n    </file>\n * </example>\n *\n *\n */\nNgModelController.$inject = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$q', '$interpolate'];\nfunction NgModelController($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $q, $interpolate) {\n  this.$viewValue = Number.NaN;\n  this.$modelValue = Number.NaN;\n  this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.\n  this.$validators = {};\n  this.$asyncValidators = {};\n  this.$parsers = [];\n  this.$formatters = [];\n  this.$viewChangeListeners = [];\n  this.$untouched = true;\n  this.$touched = false;\n  this.$pristine = true;\n  this.$dirty = false;\n  this.$valid = true;\n  this.$invalid = false;\n  this.$error = {}; // keep invalid keys here\n  this.$$success = {}; // keep valid keys here\n  this.$pending = undefined; // keep pending keys here\n  this.$name = $interpolate($attr.name || '', false)($scope);\n  this.$$parentForm = nullFormCtrl;\n  this.$options = defaultModelOptions;\n\n  this.$$parsedNgModel = $parse($attr.ngModel);\n  this.$$parsedNgModelAssign = this.$$parsedNgModel.assign;\n  this.$$ngModelGet = this.$$parsedNgModel;\n  this.$$ngModelSet = this.$$parsedNgModelAssign;\n  this.$$pendingDebounce = null;\n  this.$$parserValid = undefined;\n\n  this.$$currentValidationRunId = 0;\n\n  // https://github.com/angular/angular.js/issues/15833\n  // Prevent `$$scope` from being iterated over by `copy` when NgModelController is deep watched\n  Object.defineProperty(this, '$$scope', {value: $scope});\n  this.$$attr = $attr;\n  this.$$element = $element;\n  this.$$animate = $animate;\n  this.$$timeout = $timeout;\n  this.$$parse = $parse;\n  this.$$q = $q;\n  this.$$exceptionHandler = $exceptionHandler;\n\n  setupValidity(this);\n  setupModelWatcher(this);\n}\n\nNgModelController.prototype = {\n  $$initGetterSetters: function() {\n    if (this.$options.getOption('getterSetter')) {\n      var invokeModelGetter = this.$$parse(this.$$attr.ngModel + '()'),\n          invokeModelSetter = this.$$parse(this.$$attr.ngModel + '($$$p)');\n\n      this.$$ngModelGet = function($scope) {\n        var modelValue = this.$$parsedNgModel($scope);\n        if (isFunction(modelValue)) {\n          modelValue = invokeModelGetter($scope);\n        }\n        return modelValue;\n      };\n      this.$$ngModelSet = function($scope, newValue) {\n        if (isFunction(this.$$parsedNgModel($scope))) {\n          invokeModelSetter($scope, {$$$p: newValue});\n        } else {\n          this.$$parsedNgModelAssign($scope, newValue);\n        }\n      };\n    } else if (!this.$$parsedNgModel.assign) {\n      throw ngModelMinErr('nonassign', 'Expression \\'{0}\\' is non-assignable. Element: {1}',\n          this.$$attr.ngModel, startingTag(this.$$element));\n    }\n  },\n\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$render\n   *\n   * @description\n   * Called when the view needs to be updated. It is expected that the user of the ng-model\n   * directive will implement this method.\n   *\n   * The `$render()` method is invoked in the following situations:\n   *\n   * * `$rollbackViewValue()` is called.  If we are rolling back the view value to the last\n   *   committed value then `$render()` is called to update the input control.\n   * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and\n   *   the `$viewValue` are different from last time.\n   *\n   * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of\n   * `$modelValue` and `$viewValue` are actually different from their previous values. If `$modelValue`\n   * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be\n   * invoked if you only change a property on the objects.\n   */\n  $render: noop,\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$isEmpty\n   *\n   * @description\n   * This is called when we need to determine if the value of an input is empty.\n   *\n   * For instance, the required directive does this to work out if the input has data or not.\n   *\n   * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.\n   *\n   * You can override this for input directives whose concept of being empty is different from the\n   * default. The `checkboxInputType` directive does this because in its case a value of `false`\n   * implies empty.\n   *\n   * @param {*} value The value of the input to check for emptiness.\n   * @returns {boolean} True if `value` is \"empty\".\n   */\n  $isEmpty: function(value) {\n    // eslint-disable-next-line no-self-compare\n    return isUndefined(value) || value === '' || value === null || value !== value;\n  },\n\n  $$updateEmptyClasses: function(value) {\n    if (this.$isEmpty(value)) {\n      this.$$animate.removeClass(this.$$element, NOT_EMPTY_CLASS);\n      this.$$animate.addClass(this.$$element, EMPTY_CLASS);\n    } else {\n      this.$$animate.removeClass(this.$$element, EMPTY_CLASS);\n      this.$$animate.addClass(this.$$element, NOT_EMPTY_CLASS);\n    }\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$setPristine\n   *\n   * @description\n   * Sets the control to its pristine state.\n   *\n   * This method can be called to remove the `ng-dirty` class and set the control to its pristine\n   * state (`ng-pristine` class). A model is considered to be pristine when the control\n   * has not been changed from when first compiled.\n   */\n  $setPristine: function() {\n    this.$dirty = false;\n    this.$pristine = true;\n    this.$$animate.removeClass(this.$$element, DIRTY_CLASS);\n    this.$$animate.addClass(this.$$element, PRISTINE_CLASS);\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$setDirty\n   *\n   * @description\n   * Sets the control to its dirty state.\n   *\n   * This method can be called to remove the `ng-pristine` class and set the control to its dirty\n   * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed\n   * from when first compiled.\n   */\n  $setDirty: function() {\n    this.$dirty = true;\n    this.$pristine = false;\n    this.$$animate.removeClass(this.$$element, PRISTINE_CLASS);\n    this.$$animate.addClass(this.$$element, DIRTY_CLASS);\n    this.$$parentForm.$setDirty();\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$setUntouched\n   *\n   * @description\n   * Sets the control to its untouched state.\n   *\n   * This method can be called to remove the `ng-touched` class and set the control to its\n   * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched\n   * by default, however this function can be used to restore that state if the model has\n   * already been touched by the user.\n   */\n  $setUntouched: function() {\n    this.$touched = false;\n    this.$untouched = true;\n    this.$$animate.setClass(this.$$element, UNTOUCHED_CLASS, TOUCHED_CLASS);\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$setTouched\n   *\n   * @description\n   * Sets the control to its touched state.\n   *\n   * This method can be called to remove the `ng-untouched` class and set the control to its\n   * touched state (`ng-touched` class). A model is considered to be touched when the user has\n   * first focused the control element and then shifted focus away from the control (blur event).\n   */\n  $setTouched: function() {\n    this.$touched = true;\n    this.$untouched = false;\n    this.$$animate.setClass(this.$$element, TOUCHED_CLASS, UNTOUCHED_CLASS);\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$rollbackViewValue\n   *\n   * @description\n   * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`,\n   * which may be caused by a pending debounced event or because the input is waiting for some\n   * future event.\n   *\n   * If you have an input that uses `ng-model-options` to set up debounced updates or updates that\n   * depend on special events such as `blur`, there can be a period when the `$viewValue` is out of\n   * sync with the ngModel's `$modelValue`.\n   *\n   * In this case, you can use `$rollbackViewValue()` to manually cancel the debounced / future update\n   * and reset the input to the last committed view value.\n   *\n   * It is also possible that you run into difficulties if you try to update the ngModel's `$modelValue`\n   * programmatically before these debounced/future events have resolved/occurred, because Angular's\n   * dirty checking mechanism is not able to tell whether the model has actually changed or not.\n   *\n   * The `$rollbackViewValue()` method should be called before programmatically changing the model of an\n   * input which may have such events pending. This is important in order to make sure that the\n   * input field will be updated with the new model value and any pending operations are cancelled.\n   *\n   * <example name=\"ng-model-cancel-update\" module=\"cancel-update-example\">\n   *   <file name=\"app.js\">\n   *     angular.module('cancel-update-example', [])\n   *\n   *     .controller('CancelUpdateController', ['$scope', function($scope) {\n   *       $scope.model = {value1: '', value2: ''};\n   *\n   *       $scope.setEmpty = function(e, value, rollback) {\n   *         if (e.keyCode === 27) {\n   *           e.preventDefault();\n   *           if (rollback) {\n   *             $scope.myForm[value].$rollbackViewValue();\n   *           }\n   *           $scope.model[value] = '';\n   *         }\n   *       };\n   *     }]);\n   *   </file>\n   *   <file name=\"index.html\">\n   *     <div ng-controller=\"CancelUpdateController\">\n   *       <p>Both of these inputs are only updated if they are blurred. Hitting escape should\n   *       empty them. Follow these steps and observe the difference:</p>\n   *       <ol>\n   *         <li>Type something in the input. You will see that the model is not yet updated</li>\n   *         <li>Press the Escape key.\n   *           <ol>\n   *             <li> In the first example, nothing happens, because the model is already '', and no\n   *             update is detected. If you blur the input, the model will be set to the current view.\n   *             </li>\n   *             <li> In the second example, the pending update is cancelled, and the input is set back\n   *             to the last committed view value (''). Blurring the input does nothing.\n   *             </li>\n   *           </ol>\n   *         </li>\n   *       </ol>\n   *\n   *       <form name=\"myForm\" ng-model-options=\"{ updateOn: 'blur' }\">\n   *         <div>\n   *           <p id=\"inputDescription1\">Without $rollbackViewValue():</p>\n   *           <input name=\"value1\" aria-describedby=\"inputDescription1\" ng-model=\"model.value1\"\n   *                  ng-keydown=\"setEmpty($event, 'value1')\">\n   *           value1: \"{{ model.value1 }}\"\n   *         </div>\n   *\n   *         <div>\n   *           <p id=\"inputDescription2\">With $rollbackViewValue():</p>\n   *           <input name=\"value2\" aria-describedby=\"inputDescription2\" ng-model=\"model.value2\"\n   *                  ng-keydown=\"setEmpty($event, 'value2', true)\">\n   *           value2: \"{{ model.value2 }}\"\n   *         </div>\n   *       </form>\n   *     </div>\n   *   </file>\n       <file name=\"style.css\">\n          div {\n            display: table-cell;\n          }\n          div:nth-child(1) {\n            padding-right: 30px;\n          }\n\n        </file>\n   * </example>\n   */\n  $rollbackViewValue: function() {\n    this.$$timeout.cancel(this.$$pendingDebounce);\n    this.$viewValue = this.$$lastCommittedViewValue;\n    this.$render();\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$validate\n   *\n   * @description\n   * Runs each of the registered validators (first synchronous validators and then\n   * asynchronous validators).\n   * If the validity changes to invalid, the model will be set to `undefined`,\n   * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.\n   * If the validity changes to valid, it will set the model to the last available valid\n   * `$modelValue`, i.e. either the last parsed value or the last value set from the scope.\n   */\n  $validate: function() {\n    // ignore $validate before model is initialized\n    if (isNumberNaN(this.$modelValue)) {\n      return;\n    }\n\n    var viewValue = this.$$lastCommittedViewValue;\n    // Note: we use the $$rawModelValue as $modelValue might have been\n    // set to undefined during a view -> model update that found validation\n    // errors. We can't parse the view here, since that could change\n    // the model although neither viewValue nor the model on the scope changed\n    var modelValue = this.$$rawModelValue;\n\n    var prevValid = this.$valid;\n    var prevModelValue = this.$modelValue;\n\n    var allowInvalid = this.$options.getOption('allowInvalid');\n\n    var that = this;\n    this.$$runValidators(modelValue, viewValue, function(allValid) {\n      // If there was no change in validity, don't update the model\n      // This prevents changing an invalid modelValue to undefined\n      if (!allowInvalid && prevValid !== allValid) {\n        // Note: Don't check this.$valid here, as we could have\n        // external validators (e.g. calculated on the server),\n        // that just call $setValidity and need the model value\n        // to calculate their validity.\n        that.$modelValue = allValid ? modelValue : undefined;\n\n        if (that.$modelValue !== prevModelValue) {\n          that.$$writeModelToScope();\n        }\n      }\n    });\n  },\n\n  $$runValidators: function(modelValue, viewValue, doneCallback) {\n    this.$$currentValidationRunId++;\n    var localValidationRunId = this.$$currentValidationRunId;\n    var that = this;\n\n    // check parser error\n    if (!processParseErrors()) {\n      validationDone(false);\n      return;\n    }\n    if (!processSyncValidators()) {\n      validationDone(false);\n      return;\n    }\n    processAsyncValidators();\n\n    function processParseErrors() {\n      var errorKey = that.$$parserName || 'parse';\n      if (isUndefined(that.$$parserValid)) {\n        setValidity(errorKey, null);\n      } else {\n        if (!that.$$parserValid) {\n          forEach(that.$validators, function(v, name) {\n            setValidity(name, null);\n          });\n          forEach(that.$asyncValidators, function(v, name) {\n            setValidity(name, null);\n          });\n        }\n        // Set the parse error last, to prevent unsetting it, should a $validators key == parserName\n        setValidity(errorKey, that.$$parserValid);\n        return that.$$parserValid;\n      }\n      return true;\n    }\n\n    function processSyncValidators() {\n      var syncValidatorsValid = true;\n      forEach(that.$validators, function(validator, name) {\n        var result = Boolean(validator(modelValue, viewValue));\n        syncValidatorsValid = syncValidatorsValid && result;\n        setValidity(name, result);\n      });\n      if (!syncValidatorsValid) {\n        forEach(that.$asyncValidators, function(v, name) {\n          setValidity(name, null);\n        });\n        return false;\n      }\n      return true;\n    }\n\n    function processAsyncValidators() {\n      var validatorPromises = [];\n      var allValid = true;\n      forEach(that.$asyncValidators, function(validator, name) {\n        var promise = validator(modelValue, viewValue);\n        if (!isPromiseLike(promise)) {\n          throw ngModelMinErr('nopromise',\n            'Expected asynchronous validator to return a promise but got \\'{0}\\' instead.', promise);\n        }\n        setValidity(name, undefined);\n        validatorPromises.push(promise.then(function() {\n          setValidity(name, true);\n        }, function() {\n          allValid = false;\n          setValidity(name, false);\n        }));\n      });\n      if (!validatorPromises.length) {\n        validationDone(true);\n      } else {\n        that.$$q.all(validatorPromises).then(function() {\n          validationDone(allValid);\n        }, noop);\n      }\n    }\n\n    function setValidity(name, isValid) {\n      if (localValidationRunId === that.$$currentValidationRunId) {\n        that.$setValidity(name, isValid);\n      }\n    }\n\n    function validationDone(allValid) {\n      if (localValidationRunId === that.$$currentValidationRunId) {\n\n        doneCallback(allValid);\n      }\n    }\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$commitViewValue\n   *\n   * @description\n   * Commit a pending update to the `$modelValue`.\n   *\n   * Updates may be pending by a debounced event or because the input is waiting for a some future\n   * event defined in `ng-model-options`. this method is rarely needed as `NgModelController`\n   * usually handles calling this in response to input events.\n   */\n  $commitViewValue: function() {\n    var viewValue = this.$viewValue;\n\n    this.$$timeout.cancel(this.$$pendingDebounce);\n\n    // If the view value has not changed then we should just exit, except in the case where there is\n    // a native validator on the element. In this case the validation state may have changed even though\n    // the viewValue has stayed empty.\n    if (this.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !this.$$hasNativeValidators)) {\n      return;\n    }\n    this.$$updateEmptyClasses(viewValue);\n    this.$$lastCommittedViewValue = viewValue;\n\n    // change to dirty\n    if (this.$pristine) {\n      this.$setDirty();\n    }\n    this.$$parseAndValidate();\n  },\n\n  $$parseAndValidate: function() {\n    var viewValue = this.$$lastCommittedViewValue;\n    var modelValue = viewValue;\n    var that = this;\n\n    this.$$parserValid = isUndefined(modelValue) ? undefined : true;\n\n    if (this.$$parserValid) {\n      for (var i = 0; i < this.$parsers.length; i++) {\n        modelValue = this.$parsers[i](modelValue);\n        if (isUndefined(modelValue)) {\n          this.$$parserValid = false;\n          break;\n        }\n      }\n    }\n    if (isNumberNaN(this.$modelValue)) {\n      // this.$modelValue has not been touched yet...\n      this.$modelValue = this.$$ngModelGet(this.$$scope);\n    }\n    var prevModelValue = this.$modelValue;\n    var allowInvalid = this.$options.getOption('allowInvalid');\n    this.$$rawModelValue = modelValue;\n\n    if (allowInvalid) {\n      this.$modelValue = modelValue;\n      writeToModelIfNeeded();\n    }\n\n    // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.\n    // This can happen if e.g. $setViewValue is called from inside a parser\n    this.$$runValidators(modelValue, this.$$lastCommittedViewValue, function(allValid) {\n      if (!allowInvalid) {\n        // Note: Don't check this.$valid here, as we could have\n        // external validators (e.g. calculated on the server),\n        // that just call $setValidity and need the model value\n        // to calculate their validity.\n        that.$modelValue = allValid ? modelValue : undefined;\n        writeToModelIfNeeded();\n      }\n    });\n\n    function writeToModelIfNeeded() {\n      if (that.$modelValue !== prevModelValue) {\n        that.$$writeModelToScope();\n      }\n    }\n  },\n\n  $$writeModelToScope: function() {\n    this.$$ngModelSet(this.$$scope, this.$modelValue);\n    forEach(this.$viewChangeListeners, function(listener) {\n      try {\n        listener();\n      } catch (e) {\n        // eslint-disable-next-line no-invalid-this\n        this.$$exceptionHandler(e);\n      }\n    }, this);\n  },\n\n  /**\n   * @ngdoc method\n   * @name ngModel.NgModelController#$setViewValue\n   *\n   * @description\n   * Update the view value.\n   *\n   * This method should be called when a control wants to change the view value; typically,\n   * this is done from within a DOM event handler. For example, the {@link ng.directive:input input}\n   * directive calls it when the value of the input changes and {@link ng.directive:select select}\n   * calls it when an option is selected.\n   *\n   * When `$setViewValue` is called, the new `value` will be staged for committing through the `$parsers`\n   * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged\n   * value is sent directly for processing through the `$parsers` pipeline. After this, the `$validators` and\n   * `$asyncValidators` are called and the value is applied to `$modelValue`.\n   * Finally, the value is set to the **expression** specified in the `ng-model` attribute and\n   * all the registered change listeners, in the `$viewChangeListeners` list are called.\n   *\n   * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn`\n   * and the `default` trigger is not listed, all those actions will remain pending until one of the\n   * `updateOn` events is triggered on the DOM element.\n   * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions}\n   * directive is used with a custom debounce for this particular event.\n   * Note that a `$digest` is only triggered once the `updateOn` events are fired, or if `debounce`\n   * is specified, once the timer runs out.\n   *\n   * When used with standard inputs, the view value will always be a string (which is in some cases\n   * parsed into another type, such as a `Date` object for `input[date]`.)\n   * However, custom controls might also pass objects to this method. In this case, we should make\n   * a copy of the object before passing it to `$setViewValue`. This is because `ngModel` does not\n   * perform a deep watch of objects, it only looks for a change of identity. If you only change\n   * the property of the object then ngModel will not realize that the object has changed and\n   * will not invoke the `$parsers` and `$validators` pipelines. For this reason, you should\n   * not change properties of the copy once it has been passed to `$setViewValue`.\n   * Otherwise you may cause the model value on the scope to change incorrectly.\n   *\n   * <div class=\"alert alert-info\">\n   * In any case, the value passed to the method should always reflect the current value\n   * of the control. For example, if you are calling `$setViewValue` for an input element,\n   * you should pass the input DOM value. Otherwise, the control and the scope model become\n   * out of sync. It's also important to note that `$setViewValue` does not call `$render` or change\n   * the control's DOM value in any way. If we want to change the control's DOM value\n   * programmatically, we should update the `ngModel` scope expression. Its new value will be\n   * picked up by the model controller, which will run it through the `$formatters`, `$render` it\n   * to update the DOM, and finally call `$validate` on it.\n   * </div>\n   *\n   * @param {*} value value from the view.\n   * @param {string} trigger Event that triggered the update.\n   */\n  $setViewValue: function(value, trigger) {\n    this.$viewValue = value;\n    if (this.$options.getOption('updateOnDefault')) {\n      this.$$debounceViewValueCommit(trigger);\n    }\n  },\n\n  $$debounceViewValueCommit: function(trigger) {\n    var debounceDelay = this.$options.getOption('debounce');\n\n    if (isNumber(debounceDelay[trigger])) {\n      debounceDelay = debounceDelay[trigger];\n    } else if (isNumber(debounceDelay['default'])) {\n      debounceDelay = debounceDelay['default'];\n    }\n\n    this.$$timeout.cancel(this.$$pendingDebounce);\n    var that = this;\n    if (debounceDelay > 0) { // this fails if debounceDelay is an object\n      this.$$pendingDebounce = this.$$timeout(function() {\n        that.$commitViewValue();\n      }, debounceDelay);\n    } else if (this.$$scope.$root.$$phase) {\n      this.$commitViewValue();\n    } else {\n      this.$$scope.$apply(function() {\n        that.$commitViewValue();\n      });\n    }\n  },\n\n  /**\n   * @ngdoc method\n   *\n   * @name ngModel.NgModelController#$overrideModelOptions\n   *\n   * @description\n   *\n   * Override the current model options settings programmatically.\n   *\n   * The previous `ModelOptions` value will not be modified. Instead, a\n   * new `ModelOptions` object will inherit from the previous one overriding\n   * or inheriting settings that are defined in the given parameter.\n   *\n   * See {@link ngModelOptions} for information about what options can be specified\n   * and how model option inheritance works.\n   *\n   * @param {Object} options a hash of settings to override the previous options\n   *\n   */\n  $overrideModelOptions: function(options) {\n    this.$options = this.$options.createChild(options);\n  }\n};\n\nfunction setupModelWatcher(ctrl) {\n  // model -> value\n  // Note: we cannot use a normal scope.$watch as we want to detect the following:\n  // 1. scope value is 'a'\n  // 2. user enters 'b'\n  // 3. ng-change kicks in and reverts scope value to 'a'\n  //    -> scope value did not change since the last digest as\n  //       ng-change executes in apply phase\n  // 4. view should be changed back to 'a'\n  ctrl.$$scope.$watch(function ngModelWatch(scope) {\n    var modelValue = ctrl.$$ngModelGet(scope);\n\n    // if scope model value and ngModel value are out of sync\n    // TODO(perf): why not move this to the action fn?\n    if (modelValue !== ctrl.$modelValue &&\n       // checks for NaN is needed to allow setting the model to NaN when there's an asyncValidator\n        // eslint-disable-next-line no-self-compare\n       (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue)\n    ) {\n      ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;\n      ctrl.$$parserValid = undefined;\n\n      var formatters = ctrl.$formatters,\n          idx = formatters.length;\n\n      var viewValue = modelValue;\n      while (idx--) {\n        viewValue = formatters[idx](viewValue);\n      }\n      if (ctrl.$viewValue !== viewValue) {\n        ctrl.$$updateEmptyClasses(viewValue);\n        ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;\n        ctrl.$render();\n\n        // It is possible that model and view value have been updated during render\n        ctrl.$$runValidators(ctrl.$modelValue, ctrl.$viewValue, noop);\n      }\n    }\n\n    return modelValue;\n  });\n}\n\n/**\n * @ngdoc method\n * @name ngModel.NgModelController#$setValidity\n *\n * @description\n * Change the validity state, and notify the form.\n *\n * This method can be called within $parsers/$formatters or a custom validation implementation.\n * However, in most cases it should be sufficient to use the `ngModel.$validators` and\n * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically.\n *\n * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned\n *        to either `$error[validationErrorKey]` or `$pending[validationErrorKey]`\n *        (for unfulfilled `$asyncValidators`), so that it is available for data-binding.\n *        The `validationErrorKey` should be in camelCase and will get converted into dash-case\n *        for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`\n *        classes and can be bound to as `{{ someForm.someControl.$error.myError }}`.\n * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined),\n *                          or skipped (null). Pending is used for unfulfilled `$asyncValidators`.\n *                          Skipped is used by Angular when validators do not run because of parse errors and\n *                          when `$asyncValidators` do not run because any of the `$validators` failed.\n */\naddSetValidityMethod({\n  clazz: NgModelController,\n  set: function(object, property) {\n    object[property] = true;\n  },\n  unset: function(object, property) {\n    delete object[property];\n  }\n});\n\n\n/**\n * @ngdoc directive\n * @name ngModel\n *\n * @element input\n * @priority 1\n *\n * @description\n * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a\n * property on the scope using {@link ngModel.NgModelController NgModelController},\n * which is created and exposed by this directive.\n *\n * `ngModel` is responsible for:\n *\n * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`\n *   require.\n * - Providing validation behavior (i.e. required, number, email, url).\n * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors).\n * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`,\n *   `ng-untouched`, `ng-empty`, `ng-not-empty`) including animations.\n * - Registering the control with its parent {@link ng.directive:form form}.\n *\n * Note: `ngModel` will try to bind to the property given by evaluating the expression on the\n * current scope. If the property doesn't already exist on this scope, it will be created\n * implicitly and added to the scope.\n *\n * For best practices on using `ngModel`, see:\n *\n *  - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)\n *\n * For basic examples, how to use `ngModel`, see:\n *\n *  - {@link ng.directive:input input}\n *    - {@link input[text] text}\n *    - {@link input[checkbox] checkbox}\n *    - {@link input[radio] radio}\n *    - {@link input[number] number}\n *    - {@link input[email] email}\n *    - {@link input[url] url}\n *    - {@link input[date] date}\n *    - {@link input[datetime-local] datetime-local}\n *    - {@link input[time] time}\n *    - {@link input[month] month}\n *    - {@link input[week] week}\n *  - {@link ng.directive:select select}\n *  - {@link ng.directive:textarea textarea}\n *\n * # Complex Models (objects or collections)\n *\n * By default, `ngModel` watches the model by reference, not value. This is important to know when\n * binding inputs to models that are objects (e.g. `Date`) or collections (e.g. arrays). If only properties of the\n * object or collection change, `ngModel` will not be notified and so the input will not be  re-rendered.\n *\n * The model must be assigned an entirely new object or collection before a re-rendering will occur.\n *\n * Some directives have options that will cause them to use a custom `$watchCollection` on the model expression\n * - for example, `ngOptions` will do so when a `track by` clause is included in the comprehension expression or\n * if the select is given the `multiple` attribute.\n *\n * The `$watchCollection()` method only does a shallow comparison, meaning that changing properties deeper than the\n * first level of the object (or only changing the properties of an item in the collection if it's an array) will still\n * not trigger a re-rendering of the model.\n *\n * # CSS classes\n * The following CSS classes are added and removed on the associated input/select/textarea element\n * depending on the validity of the model.\n *\n *  - `ng-valid`: the model is valid\n *  - `ng-invalid`: the model is invalid\n *  - `ng-valid-[key]`: for each valid key added by `$setValidity`\n *  - `ng-invalid-[key]`: for each invalid key added by `$setValidity`\n *  - `ng-pristine`: the control hasn't been interacted with yet\n *  - `ng-dirty`: the control has been interacted with\n *  - `ng-touched`: the control has been blurred\n *  - `ng-untouched`: the control hasn't been blurred\n *  - `ng-pending`: any `$asyncValidators` are unfulfilled\n *  - `ng-empty`: the view does not contain a value or the value is deemed \"empty\", as defined\n *     by the {@link ngModel.NgModelController#$isEmpty} method\n *  - `ng-not-empty`: the view contains a non-empty value\n *\n * Keep in mind that ngAnimate can detect each of these classes when added and removed.\n *\n * ## Animation Hooks\n *\n * Animations within models are triggered when any of the associated CSS classes are added and removed\n * on the input element which is attached to the model. These classes include: `.ng-pristine`, `.ng-dirty`,\n * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.\n * The animations that are triggered within ngModel are similar to how they work in ngClass and\n * animations can be hooked into using CSS transitions, keyframes as well as JS animations.\n *\n * The following example shows a simple way to utilize CSS transitions to style an input element\n * that has been rendered as invalid after it has been validated:\n *\n * <pre>\n * //be sure to include ngAnimate as a module to hook into more\n * //advanced animations\n * .my-input {\n *   transition:0.5s linear all;\n *   background: white;\n * }\n * .my-input.ng-invalid {\n *   background: red;\n *   color:white;\n * }\n * </pre>\n *\n * @example\n * <example deps=\"angular-animate.js\" animations=\"true\" fixBase=\"true\" module=\"inputExample\" name=\"ng-model\">\n     <file name=\"index.html\">\n       <script>\n        angular.module('inputExample', [])\n          .controller('ExampleController', ['$scope', function($scope) {\n            $scope.val = '1';\n          }]);\n       </script>\n       <style>\n         .my-input {\n           transition:all linear 0.5s;\n           background: transparent;\n         }\n         .my-input.ng-invalid {\n           color:white;\n           background: red;\n         }\n       </style>\n       <p id=\"inputDescription\">\n        Update input to see transitions when valid/invalid.\n        Integer is a valid value.\n       </p>\n       <form name=\"testForm\" ng-controller=\"ExampleController\">\n         <input ng-model=\"val\" ng-pattern=\"/^\\d+$/\" name=\"anim\" class=\"my-input\"\n                aria-describedby=\"inputDescription\" />\n       </form>\n     </file>\n * </example>\n *\n * ## Binding to a getter/setter\n *\n * Sometimes it's helpful to bind `ngModel` to a getter/setter function.  A getter/setter is a\n * function that returns a representation of the model when called with zero arguments, and sets\n * the internal state of a model when called with an argument. It's sometimes useful to use this\n * for models that have an internal representation that's different from what the model exposes\n * to the view.\n *\n * <div class=\"alert alert-success\">\n * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more\n * frequently than other parts of your code.\n * </div>\n *\n * You use this behavior by adding `ng-model-options=\"{ getterSetter: true }\"` to an element that\n * has `ng-model` attached to it. You can also add `ng-model-options=\"{ getterSetter: true }\"` to\n * a `<form>`, which will enable this behavior for all `<input>`s within it. See\n * {@link ng.directive:ngModelOptions `ngModelOptions`} for more.\n *\n * The following example shows how to use `ngModel` with a getter/setter:\n *\n * @example\n * <example name=\"ngModel-getter-setter\" module=\"getterSetterExample\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n         <form name=\"userForm\">\n           <label>Name:\n             <input type=\"text\" name=\"userName\"\n                    ng-model=\"user.name\"\n                    ng-model-options=\"{ getterSetter: true }\" />\n           </label>\n         </form>\n         <pre>user.name = <span ng-bind=\"user.name()\"></span></pre>\n       </div>\n     </file>\n     <file name=\"app.js\">\n       angular.module('getterSetterExample', [])\n         .controller('ExampleController', ['$scope', function($scope) {\n           var _name = 'Brian';\n           $scope.user = {\n             name: function(newName) {\n              // Note that newName can be undefined for two reasons:\n              // 1. Because it is called as a getter and thus called with no arguments\n              // 2. Because the property should actually be set to undefined. This happens e.g. if the\n              //    input is invalid\n              return arguments.length ? (_name = newName) : _name;\n             }\n           };\n         }]);\n     </file>\n * </example>\n */\nvar ngModelDirective = ['$rootScope', function($rootScope) {\n  return {\n    restrict: 'A',\n    require: ['ngModel', '^?form', '^?ngModelOptions'],\n    controller: NgModelController,\n    // Prelink needs to run before any input directive\n    // so that we can set the NgModelOptions in NgModelController\n    // before anyone else uses it.\n    priority: 1,\n    compile: function ngModelCompile(element) {\n      // Setup initial state of the control\n      element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);\n\n      return {\n        pre: function ngModelPreLink(scope, element, attr, ctrls) {\n          var modelCtrl = ctrls[0],\n              formCtrl = ctrls[1] || modelCtrl.$$parentForm,\n              optionsCtrl = ctrls[2];\n\n          if (optionsCtrl) {\n            modelCtrl.$options = optionsCtrl.$options;\n          }\n\n          modelCtrl.$$initGetterSetters();\n\n          // notify others, especially parent forms\n          formCtrl.$addControl(modelCtrl);\n\n          attr.$observe('name', function(newValue) {\n            if (modelCtrl.$name !== newValue) {\n              modelCtrl.$$parentForm.$$renameControl(modelCtrl, newValue);\n            }\n          });\n\n          scope.$on('$destroy', function() {\n            modelCtrl.$$parentForm.$removeControl(modelCtrl);\n          });\n        },\n        post: function ngModelPostLink(scope, element, attr, ctrls) {\n          var modelCtrl = ctrls[0];\n          if (modelCtrl.$options.getOption('updateOn')) {\n            element.on(modelCtrl.$options.getOption('updateOn'), function(ev) {\n              modelCtrl.$$debounceViewValueCommit(ev && ev.type);\n            });\n          }\n\n          function setTouched() {\n            modelCtrl.$setTouched();\n          }\n\n          element.on('blur', function() {\n            if (modelCtrl.$touched) return;\n\n            if ($rootScope.$$phase) {\n              scope.$evalAsync(setTouched);\n            } else {\n              scope.$apply(setTouched);\n            }\n          });\n        }\n      };\n    }\n  };\n}];\n\n/* exported defaultModelOptions */\nvar defaultModelOptions;\nvar DEFAULT_REGEXP = /(\\s+|^)default(\\s+|$)/;\n\n/**\n * @ngdoc type\n * @name ModelOptions\n * @description\n * A container for the options set by the {@link ngModelOptions} directive\n */\nfunction ModelOptions(options) {\n  this.$$options = options;\n}\n\nModelOptions.prototype = {\n\n  /**\n   * @ngdoc method\n   * @name ModelOptions#getOption\n   * @param {string} name the name of the option to retrieve\n   * @returns {*} the value of the option\n   * @description\n   * Returns the value of the given option\n   */\n  getOption: function(name) {\n    return this.$$options[name];\n  },\n\n  /**\n   * @ngdoc method\n   * @name ModelOptions#createChild\n   * @param {Object} options a hash of options for the new child that will override the parent's options\n   * @return {ModelOptions} a new `ModelOptions` object initialized with the given options.\n   */\n  createChild: function(options) {\n    var inheritAll = false;\n\n    // make a shallow copy\n    options = extend({}, options);\n\n    // Inherit options from the parent if specified by the value `\"$inherit\"`\n    forEach(options, /* @this */ function(option, key) {\n      if (option === '$inherit') {\n        if (key === '*') {\n          inheritAll = true;\n        } else {\n          options[key] = this.$$options[key];\n          // `updateOn` is special so we must also inherit the `updateOnDefault` option\n          if (key === 'updateOn') {\n            options.updateOnDefault = this.$$options.updateOnDefault;\n          }\n        }\n      } else {\n        if (key === 'updateOn') {\n          // If the `updateOn` property contains the `default` event then we have to remove\n          // it from the event list and set the `updateOnDefault` flag.\n          options.updateOnDefault = false;\n          options[key] = trim(option.replace(DEFAULT_REGEXP, function() {\n            options.updateOnDefault = true;\n            return ' ';\n          }));\n        }\n      }\n    }, this);\n\n    if (inheritAll) {\n      // We have a property of the form: `\"*\": \"$inherit\"`\n      delete options['*'];\n      defaults(options, this.$$options);\n    }\n\n    // Finally add in any missing defaults\n    defaults(options, defaultModelOptions.$$options);\n\n    return new ModelOptions(options);\n  }\n};\n\n\ndefaultModelOptions = new ModelOptions({\n  updateOn: '',\n  updateOnDefault: true,\n  debounce: 0,\n  getterSetter: false,\n  allowInvalid: false,\n  timezone: null\n});\n\n\n/**\n * @ngdoc directive\n * @name ngModelOptions\n *\n * @description\n * This directive allows you to modify the behaviour of {@link ngModel} directives within your\n * application. You can specify an `ngModelOptions` directive on any element. All {@link ngModel}\n * directives will use the options of their nearest `ngModelOptions` ancestor.\n *\n * The `ngModelOptions` settings are found by evaluating the value of the attribute directive as\n * an Angular expression. This expression should evaluate to an object, whose properties contain\n * the settings. For example: `<div \"ng-model-options\"=\"{ debounce: 100 }\"`.\n *\n * ## Inheriting Options\n *\n * You can specify that an `ngModelOptions` setting should be inherited from a parent `ngModelOptions`\n * directive by giving it the value of `\"$inherit\"`.\n * Then it will inherit that setting from the first `ngModelOptions` directive found by traversing up the\n * DOM tree. If there is no ancestor element containing an `ngModelOptions` directive then default settings\n * will be used.\n *\n * For example given the following fragment of HTML\n *\n *\n * ```html\n * <div ng-model-options=\"{ allowInvalid: true, debounce: 200 }\">\n *   <form ng-model-options=\"{ updateOn: 'blur', allowInvalid: '$inherit' }\">\n *     <input ng-model-options=\"{ updateOn: 'default', allowInvalid: '$inherit' }\" />\n *   </form>\n * </div>\n * ```\n *\n * the `input` element will have the following settings\n *\n * ```js\n * { allowInvalid: true, updateOn: 'default', debounce: 0 }\n * ```\n *\n * Notice that the `debounce` setting was not inherited and used the default value instead.\n *\n * You can specify that all undefined settings are automatically inherited from an ancestor by\n * including a property with key of `\"*\"` and value of `\"$inherit\"`.\n *\n * For example given the following fragment of HTML\n *\n *\n * ```html\n * <div ng-model-options=\"{ allowInvalid: true, debounce: 200 }\">\n *   <form ng-model-options=\"{ updateOn: 'blur', \"*\": '$inherit' }\">\n *     <input ng-model-options=\"{ updateOn: 'default', \"*\": '$inherit' }\" />\n *   </form>\n * </div>\n * ```\n *\n * the `input` element will have the following settings\n *\n * ```js\n * { allowInvalid: true, updateOn: 'default', debounce: 200 }\n * ```\n *\n * Notice that the `debounce` setting now inherits the value from the outer `<div>` element.\n *\n * If you are creating a reusable component then you should be careful when using `\"*\": \"$inherit\"`\n * since you may inadvertently inherit a setting in the future that changes the behavior of your component.\n *\n *\n * ## Triggering and debouncing model updates\n *\n * The `updateOn` and `debounce` properties allow you to specify a custom list of events that will\n * trigger a model update and/or a debouncing delay so that the actual update only takes place when\n * a timer expires; this timer will be reset after another change takes place.\n *\n * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might\n * be different from the value in the actual model. This means that if you update the model you\n * should also invoke {@link ngModel.NgModelController#$rollbackViewValue} on the relevant input field in\n * order to make sure it is synchronized with the model and that any debounced action is canceled.\n *\n * The easiest way to reference the control's {@link ngModel.NgModelController#$rollbackViewValue}\n * method is by making sure the input is placed inside a form that has a `name` attribute. This is\n * important because `form` controllers are published to the related scope under the name in their\n * `name` attribute.\n *\n * Any pending changes will take place immediately when an enclosing form is submitted via the\n * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`\n * to have access to the updated model.\n *\n * The following example shows how to override immediate updates. Changes on the inputs within the\n * form will update the model only when the control loses focus (blur event). If `escape` key is\n * pressed while the input field is focused, the value is reset to the value in the current model.\n *\n * <example name=\"ngModelOptions-directive-blur\" module=\"optionsExample\">\n *   <file name=\"index.html\">\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"userForm\">\n *         <label>\n *           Name:\n *           <input type=\"text\" name=\"userName\"\n *                  ng-model=\"user.name\"\n *                  ng-model-options=\"{ updateOn: 'blur' }\"\n *                  ng-keyup=\"cancel($event)\" />\n *         </label><br />\n *         <label>\n *           Other data:\n *           <input type=\"text\" ng-model=\"user.data\" />\n *         </label><br />\n *       </form>\n *       <pre>user.name = <span ng-bind=\"user.name\"></span></pre>\n *     </div>\n *   </file>\n *   <file name=\"app.js\">\n *     angular.module('optionsExample', [])\n *       .controller('ExampleController', ['$scope', function($scope) {\n *         $scope.user = { name: 'say', data: '' };\n *\n *         $scope.cancel = function(e) {\n *           if (e.keyCode === 27) {\n *             $scope.userForm.userName.$rollbackViewValue();\n *           }\n *         };\n *       }]);\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     var model = element(by.binding('user.name'));\n *     var input = element(by.model('user.name'));\n *     var other = element(by.model('user.data'));\n *\n *     it('should allow custom events', function() {\n *       input.sendKeys(' hello');\n *       input.click();\n *       expect(model.getText()).toEqual('say');\n *       other.click();\n *       expect(model.getText()).toEqual('say hello');\n *     });\n *\n *     it('should $rollbackViewValue when model changes', function() {\n *       input.sendKeys(' hello');\n *       expect(input.getAttribute('value')).toEqual('say hello');\n *       input.sendKeys(protractor.Key.ESCAPE);\n *       expect(input.getAttribute('value')).toEqual('say');\n *       other.click();\n *       expect(model.getText()).toEqual('say');\n *     });\n *   </file>\n * </example>\n *\n * The next example shows how to debounce model changes. Model will be updated only 1 sec after last change.\n * If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.\n *\n * <example name=\"ngModelOptions-directive-debounce\" module=\"optionsExample\">\n *   <file name=\"index.html\">\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"userForm\">\n *         Name:\n *         <input type=\"text\" name=\"userName\"\n *                ng-model=\"user.name\"\n *                ng-model-options=\"{ debounce: 1000 }\" />\n *         <button ng-click=\"userForm.userName.$rollbackViewValue(); user.name=''\">Clear</button><br />\n *       </form>\n *       <pre>user.name = <span ng-bind=\"user.name\"></span></pre>\n *     </div>\n *   </file>\n *   <file name=\"app.js\">\n *     angular.module('optionsExample', [])\n *       .controller('ExampleController', ['$scope', function($scope) {\n *         $scope.user = { name: 'say' };\n *       }]);\n *   </file>\n * </example>\n *\n * ## Model updates and validation\n *\n * The default behaviour in `ngModel` is that the model value is set to `undefined` when the\n * validation determines that the value is invalid. By setting the `allowInvalid` property to true,\n * the model will still be updated even if the value is invalid.\n *\n *\n * ## Connecting to the scope\n *\n * By setting the `getterSetter` property to true you are telling ngModel that the `ngModel` expression\n * on the scope refers to a \"getter/setter\" function rather than the value itself.\n *\n * The following example shows how to bind to getter/setters:\n *\n * <example name=\"ngModelOptions-directive-getter-setter\" module=\"getterSetterExample\">\n *   <file name=\"index.html\">\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"userForm\">\n *         <label>\n *           Name:\n *           <input type=\"text\" name=\"userName\"\n *                  ng-model=\"user.name\"\n *                  ng-model-options=\"{ getterSetter: true }\" />\n *         </label>\n *       </form>\n *       <pre>user.name = <span ng-bind=\"user.name()\"></span></pre>\n *     </div>\n *   </file>\n *   <file name=\"app.js\">\n *     angular.module('getterSetterExample', [])\n *       .controller('ExampleController', ['$scope', function($scope) {\n *         var _name = 'Brian';\n *         $scope.user = {\n *           name: function(newName) {\n *             return angular.isDefined(newName) ? (_name = newName) : _name;\n *           }\n *         };\n *       }]);\n *   </file>\n * </example>\n *\n *\n * ## Specifying timezones\n *\n * You can specify the timezone that date/time input directives expect by providing its name in the\n * `timezone` property.\n *\n * @param {Object} ngModelOptions options to apply to {@link ngModel} directives on this element and\n *   and its descendents. Valid keys are:\n *   - `updateOn`: string specifying which event should the input be bound to. You can set several\n *     events using an space delimited list. There is a special event called `default` that\n *     matches the default events belonging to the control.\n *   - `debounce`: integer value which contains the debounce model update value in milliseconds. A\n *     value of 0 triggers an immediate update. If an object is supplied instead, you can specify a\n *     custom value for each event. For example:\n *     ```\n *     ng-model-options=\"{\n *       updateOn: 'default blur',\n *       debounce: { 'default': 500, 'blur': 0 }\n *     }\"\n *     ```\n *   - `allowInvalid`: boolean value which indicates that the model can be set with values that did\n *     not validate correctly instead of the default behavior of setting the model to undefined.\n *   - `getterSetter`: boolean value which determines whether or not to treat functions bound to\n *     `ngModel` as getters/setters.\n *   - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for\n *     `<input type=\"date\" />`, `<input type=\"time\" />`, ... . It understands UTC/GMT and the\n *     continental US time zone abbreviations, but for general use, use a time zone offset, for\n *     example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)\n *     If not specified, the timezone of the browser will be used.\n *\n */\nvar ngModelOptionsDirective = function() {\n  NgModelOptionsController.$inject = ['$attrs', '$scope'];\n  function NgModelOptionsController($attrs, $scope) {\n    this.$$attrs = $attrs;\n    this.$$scope = $scope;\n  }\n  NgModelOptionsController.prototype = {\n    $onInit: function() {\n      var parentOptions = this.parentCtrl ? this.parentCtrl.$options : defaultModelOptions;\n      var modelOptionsDefinition = this.$$scope.$eval(this.$$attrs.ngModelOptions);\n\n      this.$options = parentOptions.createChild(modelOptionsDefinition);\n    }\n  };\n\n  return {\n    restrict: 'A',\n    // ngModelOptions needs to run before ngModel and input directives\n    priority: 10,\n    require: {parentCtrl: '?^^ngModelOptions'},\n    bindToController: true,\n    controller: NgModelOptionsController\n  };\n};\n\n\n// shallow copy over values from `src` that are not already specified on `dst`\nfunction defaults(dst, src) {\n  forEach(src, function(value, key) {\n    if (!isDefined(dst[key])) {\n      dst[key] = value;\n    }\n  });\n}\n\n/**\n * @ngdoc directive\n * @name ngNonBindable\n * @restrict AC\n * @priority 1000\n *\n * @description\n * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current\n * DOM element. This is useful if the element contains what appears to be Angular directives and\n * bindings but which should be ignored by Angular. This could be the case if you have a site that\n * displays snippets of code, for instance.\n *\n * @element ANY\n *\n * @example\n * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,\n * but the one wrapped in `ngNonBindable` is left alone.\n *\n * @example\n    <example name=\"ng-non-bindable\">\n      <file name=\"index.html\">\n        <div>Normal: {{1 + 2}}</div>\n        <div ng-non-bindable>Ignored: {{1 + 2}}</div>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n       it('should check ng-non-bindable', function() {\n         expect(element(by.binding('1 + 2')).getText()).toContain('3');\n         expect(element.all(by.css('div')).last().getText()).toMatch(/1 \\+ 2/);\n       });\n      </file>\n    </example>\n */\nvar ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });\n\n/* exported ngOptionsDirective */\n\n/* global jqLiteRemove */\n\nvar ngOptionsMinErr = minErr('ngOptions');\n\n/**\n * @ngdoc directive\n * @name ngOptions\n * @restrict A\n *\n * @description\n *\n * The `ngOptions` attribute can be used to dynamically generate a list of `<option>`\n * elements for the `<select>` element using the array or object obtained by evaluating the\n * `ngOptions` comprehension expression.\n *\n * In many cases, {@link ng.directive:ngRepeat ngRepeat} can be used on `<option>` elements instead of\n * `ngOptions` to achieve a similar result. However, `ngOptions` provides some benefits:\n * - more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the\n * comprehension expression\n * - reduced memory consumption by not creating a new scope for each repeated instance\n * - increased render speed by creating the options in a documentFragment instead of individually\n *\n * When an item in the `<select>` menu is selected, the array element or object property\n * represented by the selected option will be bound to the model identified by the `ngModel`\n * directive.\n *\n * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can\n * be nested into the `<select>` element. This element will then represent the `null` or \"not selected\"\n * option. See example below for demonstration.\n *\n * ## Complex Models (objects or collections)\n *\n * By default, `ngModel` watches the model by reference, not value. This is important to know when\n * binding the select to a model that is an object or a collection.\n *\n * One issue occurs if you want to preselect an option. For example, if you set\n * the model to an object that is equal to an object in your collection, `ngOptions` won't be able to set the selection,\n * because the objects are not identical. So by default, you should always reference the item in your collection\n * for preselections, e.g.: `$scope.selected = $scope.collection[3]`.\n *\n * Another solution is to use a `track by` clause, because then `ngOptions` will track the identity\n * of the item not by reference, but by the result of the `track by` expression. For example, if your\n * collection items have an id property, you would `track by item.id`.\n *\n * A different issue with objects or collections is that ngModel won't detect if an object property or\n * a collection item changes. For that reason, `ngOptions` additionally watches the model using\n * `$watchCollection`, when the expression contains a `track by` clause or the the select has the `multiple` attribute.\n * This allows ngOptions to trigger a re-rendering of the options even if the actual object/collection\n * has not changed identity, but only a property on the object or an item in the collection changes.\n *\n * Note that `$watchCollection` does a shallow comparison of the properties of the object (or the items in the collection\n * if the model is an array). This means that changing a property deeper than the first level inside the\n * object/collection will not trigger a re-rendering.\n *\n * ## `select` **`as`**\n *\n * Using `select` **`as`** will bind the result of the `select` expression to the model, but\n * the value of the `<select>` and `<option>` html elements will be either the index (for array data sources)\n * or property name (for object data sources) of the value within the collection. If a **`track by`** expression\n * is used, the result of that expression will be set as the value of the `option` and `select` elements.\n *\n *\n * ### `select` **`as`** and **`track by`**\n *\n * <div class=\"alert alert-warning\">\n * Be careful when using `select` **`as`** and **`track by`** in the same expression.\n * </div>\n *\n * Given this array of items on the $scope:\n *\n * ```js\n * $scope.items = [{\n *   id: 1,\n *   label: 'aLabel',\n *   subItem: { name: 'aSubItem' }\n * }, {\n *   id: 2,\n *   label: 'bLabel',\n *   subItem: { name: 'bSubItem' }\n * }];\n * ```\n *\n * This will work:\n *\n * ```html\n * <select ng-options=\"item as item.label for item in items track by item.id\" ng-model=\"selected\"></select>\n * ```\n * ```js\n * $scope.selected = $scope.items[0];\n * ```\n *\n * but this will not work:\n *\n * ```html\n * <select ng-options=\"item.subItem as item.label for item in items track by item.id\" ng-model=\"selected\"></select>\n * ```\n * ```js\n * $scope.selected = $scope.items[0].subItem;\n * ```\n *\n * In both examples, the **`track by`** expression is applied successfully to each `item` in the\n * `items` array. Because the selected option has been set programmatically in the controller, the\n * **`track by`** expression is also applied to the `ngModel` value. In the first example, the\n * `ngModel` value is `items[0]` and the **`track by`** expression evaluates to `items[0].id` with\n * no issue. In the second example, the `ngModel` value is `items[0].subItem` and the **`track by`**\n * expression evaluates to `items[0].subItem.id` (which is undefined). As a result, the model value\n * is not matched against any `<option>` and the `<select>` appears as having no selected value.\n *\n *\n * @param {string} ngModel Assignable AngularJS expression to data-bind to.\n * @param {comprehension_expression} ngOptions in one of the following forms:\n *\n *   * for array data sources:\n *     * `label` **`for`** `value` **`in`** `array`\n *     * `select` **`as`** `label` **`for`** `value` **`in`** `array`\n *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array`\n *     * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array`\n *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`\n *     * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`\n *     * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`\n *        (for including a filter with `track by`)\n *   * for object data sources:\n *     * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`\n *     * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`\n *     * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`\n *     * `label` **`disable when`** `disable` **`for (`**`key`**`,`** `value`**`) in`** `object`\n *     * `select` **`as`** `label` **`group by`** `group`\n *         **`for` `(`**`key`**`,`** `value`**`) in`** `object`\n *     * `select` **`as`** `label` **`disable when`** `disable`\n *         **`for` `(`**`key`**`,`** `value`**`) in`** `object`\n *\n * Where:\n *\n *   * `array` / `object`: an expression which evaluates to an array / object to iterate over.\n *   * `value`: local variable which will refer to each item in the `array` or each property value\n *      of `object` during iteration.\n *   * `key`: local variable which will refer to a property name in `object` during iteration.\n *   * `label`: The result of this expression will be the label for `<option>` element. The\n *     `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).\n *   * `select`: The result of this expression will be bound to the model of the parent `<select>`\n *      element. If not specified, `select` expression will default to `value`.\n *   * `group`: The result of this expression will be used to group options using the `<optgroup>`\n *      DOM element.\n *   * `disable`: The result of this expression will be used to disable the rendered `<option>`\n *      element. Return `true` to disable.\n *   * `trackexpr`: Used when working with an array of objects. The result of this expression will be\n *      used to identify the objects in the array. The `trackexpr` will most likely refer to the\n *     `value` variable (e.g. `value.propertyName`). With this the selection is preserved\n *      even when the options are recreated (e.g. reloaded from the server).\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} required The control is considered valid only if value is entered.\n * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to\n *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of\n *    `required` when you want to data-bind to the `required` attribute.\n * @param {string=} ngAttrSize sets the size of the select element dynamically. Uses the\n * {@link guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes ngAttr} directive.\n *\n * @example\n    <example module=\"selectExample\" name=\"select\">\n      <file name=\"index.html\">\n        <script>\n        angular.module('selectExample', [])\n          .controller('ExampleController', ['$scope', function($scope) {\n            $scope.colors = [\n              {name:'black', shade:'dark'},\n              {name:'white', shade:'light', notAnOption: true},\n              {name:'red', shade:'dark'},\n              {name:'blue', shade:'dark', notAnOption: true},\n              {name:'yellow', shade:'light', notAnOption: false}\n            ];\n            $scope.myColor = $scope.colors[2]; // red\n          }]);\n        </script>\n        <div ng-controller=\"ExampleController\">\n          <ul>\n            <li ng-repeat=\"color in colors\">\n              <label>Name: <input ng-model=\"color.name\"></label>\n              <label><input type=\"checkbox\" ng-model=\"color.notAnOption\"> Disabled?</label>\n              <button ng-click=\"colors.splice($index, 1)\" aria-label=\"Remove\">X</button>\n            </li>\n            <li>\n              <button ng-click=\"colors.push({})\">add</button>\n            </li>\n          </ul>\n          <hr/>\n          <label>Color (null not allowed):\n            <select ng-model=\"myColor\" ng-options=\"color.name for color in colors\"></select>\n          </label><br/>\n          <label>Color (null allowed):\n          <span  class=\"nullable\">\n            <select ng-model=\"myColor\" ng-options=\"color.name for color in colors\">\n              <option value=\"\">-- choose color --</option>\n            </select>\n          </span></label><br/>\n\n          <label>Color grouped by shade:\n            <select ng-model=\"myColor\" ng-options=\"color.name group by color.shade for color in colors\">\n            </select>\n          </label><br/>\n\n          <label>Color grouped by shade, with some disabled:\n            <select ng-model=\"myColor\"\n                  ng-options=\"color.name group by color.shade disable when color.notAnOption for color in colors\">\n            </select>\n          </label><br/>\n\n\n\n          Select <button ng-click=\"myColor = { name:'not in list', shade: 'other' }\">bogus</button>.\n          <br/>\n          <hr/>\n          Currently selected: {{ {selected_color:myColor} }}\n          <div style=\"border:solid 1px black; height:20px\"\n               ng-style=\"{'background-color':myColor.name}\">\n          </div>\n        </div>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n         it('should check ng-options', function() {\n           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');\n           element.all(by.model('myColor')).first().click();\n           element.all(by.css('select[ng-model=\"myColor\"] option')).first().click();\n           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');\n           element(by.css('.nullable select[ng-model=\"myColor\"]')).click();\n           element.all(by.css('.nullable select[ng-model=\"myColor\"] option')).first().click();\n           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');\n         });\n      </file>\n    </example>\n */\n\n/* eslint-disable max-len */\n//                     //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555000000000666666666666600000007777777777777000000000000000888888888800000000000000000009999999999\nvar NG_OPTIONS_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+group\\s+by\\s+([\\s\\S]+?))?(?:\\s+disable\\s+when\\s+([\\s\\S]+?))?\\s+for\\s+(?:([$\\w][$\\w]*)|(?:\\(\\s*([$\\w][$\\w]*)\\s*,\\s*([$\\w][$\\w]*)\\s*\\)))\\s+in\\s+([\\s\\S]+?)(?:\\s+track\\s+by\\s+([\\s\\S]+?))?$/;\n                        // 1: value expression (valueFn)\n                        // 2: label expression (displayFn)\n                        // 3: group by expression (groupByFn)\n                        // 4: disable when expression (disableWhenFn)\n                        // 5: array item variable name\n                        // 6: object item key variable name\n                        // 7: object item value variable name\n                        // 8: collection expression\n                        // 9: track by expression\n/* eslint-enable */\n\n\nvar ngOptionsDirective = ['$compile', '$document', '$parse', function($compile, $document, $parse) {\n\n  function parseOptionsExpression(optionsExp, selectElement, scope) {\n\n    var match = optionsExp.match(NG_OPTIONS_REGEXP);\n    if (!(match)) {\n      throw ngOptionsMinErr('iexp',\n        'Expected expression in form of ' +\n        '\\'_select_ (as _label_)? for (_key_,)?_value_ in _collection_\\'' +\n        ' but got \\'{0}\\'. Element: {1}',\n        optionsExp, startingTag(selectElement));\n    }\n\n    // Extract the parts from the ngOptions expression\n\n    // The variable name for the value of the item in the collection\n    var valueName = match[5] || match[7];\n    // The variable name for the key of the item in the collection\n    var keyName = match[6];\n\n    // An expression that generates the viewValue for an option if there is a label expression\n    var selectAs = / as /.test(match[0]) && match[1];\n    // An expression that is used to track the id of each object in the options collection\n    var trackBy = match[9];\n    // An expression that generates the viewValue for an option if there is no label expression\n    var valueFn = $parse(match[2] ? match[1] : valueName);\n    var selectAsFn = selectAs && $parse(selectAs);\n    var viewValueFn = selectAsFn || valueFn;\n    var trackByFn = trackBy && $parse(trackBy);\n\n    // Get the value by which we are going to track the option\n    // if we have a trackFn then use that (passing scope and locals)\n    // otherwise just hash the given viewValue\n    var getTrackByValueFn = trackBy ?\n                              function(value, locals) { return trackByFn(scope, locals); } :\n                              function getHashOfValue(value) { return hashKey(value); };\n    var getTrackByValue = function(value, key) {\n      return getTrackByValueFn(value, getLocals(value, key));\n    };\n\n    var displayFn = $parse(match[2] || match[1]);\n    var groupByFn = $parse(match[3] || '');\n    var disableWhenFn = $parse(match[4] || '');\n    var valuesFn = $parse(match[8]);\n\n    var locals = {};\n    var getLocals = keyName ? function(value, key) {\n      locals[keyName] = key;\n      locals[valueName] = value;\n      return locals;\n    } : function(value) {\n      locals[valueName] = value;\n      return locals;\n    };\n\n\n    function Option(selectValue, viewValue, label, group, disabled) {\n      this.selectValue = selectValue;\n      this.viewValue = viewValue;\n      this.label = label;\n      this.group = group;\n      this.disabled = disabled;\n    }\n\n    function getOptionValuesKeys(optionValues) {\n      var optionValuesKeys;\n\n      if (!keyName && isArrayLike(optionValues)) {\n        optionValuesKeys = optionValues;\n      } else {\n        // if object, extract keys, in enumeration order, unsorted\n        optionValuesKeys = [];\n        for (var itemKey in optionValues) {\n          if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {\n            optionValuesKeys.push(itemKey);\n          }\n        }\n      }\n      return optionValuesKeys;\n    }\n\n    return {\n      trackBy: trackBy,\n      getTrackByValue: getTrackByValue,\n      getWatchables: $parse(valuesFn, function(optionValues) {\n        // Create a collection of things that we would like to watch (watchedArray)\n        // so that they can all be watched using a single $watchCollection\n        // that only runs the handler once if anything changes\n        var watchedArray = [];\n        optionValues = optionValues || [];\n\n        var optionValuesKeys = getOptionValuesKeys(optionValues);\n        var optionValuesLength = optionValuesKeys.length;\n        for (var index = 0; index < optionValuesLength; index++) {\n          var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];\n          var value = optionValues[key];\n\n          var locals = getLocals(value, key);\n          var selectValue = getTrackByValueFn(value, locals);\n          watchedArray.push(selectValue);\n\n          // Only need to watch the displayFn if there is a specific label expression\n          if (match[2] || match[1]) {\n            var label = displayFn(scope, locals);\n            watchedArray.push(label);\n          }\n\n          // Only need to watch the disableWhenFn if there is a specific disable expression\n          if (match[4]) {\n            var disableWhen = disableWhenFn(scope, locals);\n            watchedArray.push(disableWhen);\n          }\n        }\n        return watchedArray;\n      }),\n\n      getOptions: function() {\n\n        var optionItems = [];\n        var selectValueMap = {};\n\n        // The option values were already computed in the `getWatchables` fn,\n        // which must have been called to trigger `getOptions`\n        var optionValues = valuesFn(scope) || [];\n        var optionValuesKeys = getOptionValuesKeys(optionValues);\n        var optionValuesLength = optionValuesKeys.length;\n\n        for (var index = 0; index < optionValuesLength; index++) {\n          var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];\n          var value = optionValues[key];\n          var locals = getLocals(value, key);\n          var viewValue = viewValueFn(scope, locals);\n          var selectValue = getTrackByValueFn(viewValue, locals);\n          var label = displayFn(scope, locals);\n          var group = groupByFn(scope, locals);\n          var disabled = disableWhenFn(scope, locals);\n          var optionItem = new Option(selectValue, viewValue, label, group, disabled);\n\n          optionItems.push(optionItem);\n          selectValueMap[selectValue] = optionItem;\n        }\n\n        return {\n          items: optionItems,\n          selectValueMap: selectValueMap,\n          getOptionFromViewValue: function(value) {\n            return selectValueMap[getTrackByValue(value)];\n          },\n          getViewValueFromOption: function(option) {\n            // If the viewValue could be an object that may be mutated by the application,\n            // we need to make a copy and not return the reference to the value on the option.\n            return trackBy ? copy(option.viewValue) : option.viewValue;\n          }\n        };\n      }\n    };\n  }\n\n\n  // Support: IE 9 only\n  // We can't just jqLite('<option>') since jqLite is not smart enough\n  // to create it in <select> and IE barfs otherwise.\n  var optionTemplate = window.document.createElement('option'),\n      optGroupTemplate = window.document.createElement('optgroup');\n\n    function ngOptionsPostLink(scope, selectElement, attr, ctrls) {\n\n      var selectCtrl = ctrls[0];\n      var ngModelCtrl = ctrls[1];\n      var multiple = attr.multiple;\n\n      // The emptyOption allows the application developer to provide their own custom \"empty\"\n      // option when the viewValue does not match any of the option values.\n      for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) {\n        if (children[i].value === '') {\n          selectCtrl.hasEmptyOption = true;\n          selectCtrl.emptyOption = children.eq(i);\n          break;\n        }\n      }\n\n      // The empty option will be compiled and rendered before we first generate the options\n      selectElement.empty();\n\n      var providedEmptyOption = !!selectCtrl.emptyOption;\n\n      var unknownOption = jqLite(optionTemplate.cloneNode(false));\n      unknownOption.val('?');\n\n      var options;\n      var ngOptions = parseOptionsExpression(attr.ngOptions, selectElement, scope);\n      // This stores the newly created options before they are appended to the select.\n      // Since the contents are removed from the fragment when it is appended,\n      // we only need to create it once.\n      var listFragment = $document[0].createDocumentFragment();\n\n      // Overwrite the implementation. ngOptions doesn't use hashes\n      selectCtrl.generateUnknownOptionValue = function(val) {\n        return '?';\n      };\n\n      // Update the controller methods for multiple selectable options\n      if (!multiple) {\n\n        selectCtrl.writeValue = function writeNgOptionsValue(value) {\n          // The options might not be defined yet when ngModel tries to render\n          if (!options) return;\n\n          var selectedOption = selectElement[0].options[selectElement[0].selectedIndex];\n          var option = options.getOptionFromViewValue(value);\n\n          // Make sure to remove the selected attribute from the previously selected option\n          // Otherwise, screen readers might get confused\n          if (selectedOption) selectedOption.removeAttribute('selected');\n\n          if (option) {\n            // Don't update the option when it is already selected.\n            // For example, the browser will select the first option by default. In that case,\n            // most properties are set automatically - except the `selected` attribute, which we\n            // set always\n\n            if (selectElement[0].value !== option.selectValue) {\n              selectCtrl.removeUnknownOption();\n\n              selectElement[0].value = option.selectValue;\n              option.element.selected = true;\n            }\n\n            option.element.setAttribute('selected', 'selected');\n          } else {\n            selectCtrl.selectUnknownOrEmptyOption(value);\n          }\n        };\n\n        selectCtrl.readValue = function readNgOptionsValue() {\n\n          var selectedOption = options.selectValueMap[selectElement.val()];\n\n          if (selectedOption && !selectedOption.disabled) {\n            selectCtrl.unselectEmptyOption();\n            selectCtrl.removeUnknownOption();\n            return options.getViewValueFromOption(selectedOption);\n          }\n          return null;\n        };\n\n        // If we are using `track by` then we must watch the tracked value on the model\n        // since ngModel only watches for object identity change\n        // FIXME: When a user selects an option, this watch will fire needlessly\n        if (ngOptions.trackBy) {\n          scope.$watch(\n            function() { return ngOptions.getTrackByValue(ngModelCtrl.$viewValue); },\n            function() { ngModelCtrl.$render(); }\n          );\n        }\n\n      } else {\n\n        selectCtrl.writeValue = function writeNgOptionsMultiple(values) {\n          // The options might not be defined yet when ngModel tries to render\n          if (!options) return;\n\n          // Only set `<option>.selected` if necessary, in order to prevent some browsers from\n          // scrolling to `<option>` elements that are outside the `<select>` element's viewport.\n          var selectedOptions = values && values.map(getAndUpdateSelectedOption) || [];\n\n          options.items.forEach(function(option) {\n            if (option.element.selected && !includes(selectedOptions, option)) {\n              option.element.selected = false;\n            }\n          });\n        };\n\n\n        selectCtrl.readValue = function readNgOptionsMultiple() {\n          var selectedValues = selectElement.val() || [],\n              selections = [];\n\n          forEach(selectedValues, function(value) {\n            var option = options.selectValueMap[value];\n            if (option && !option.disabled) selections.push(options.getViewValueFromOption(option));\n          });\n\n          return selections;\n        };\n\n        // If we are using `track by` then we must watch these tracked values on the model\n        // since ngModel only watches for object identity change\n        if (ngOptions.trackBy) {\n\n          scope.$watchCollection(function() {\n            if (isArray(ngModelCtrl.$viewValue)) {\n              return ngModelCtrl.$viewValue.map(function(value) {\n                return ngOptions.getTrackByValue(value);\n              });\n            }\n          }, function() {\n            ngModelCtrl.$render();\n          });\n\n        }\n      }\n\n      if (providedEmptyOption) {\n\n        // compile the element since there might be bindings in it\n        $compile(selectCtrl.emptyOption)(scope);\n\n        selectElement.prepend(selectCtrl.emptyOption);\n\n        if (selectCtrl.emptyOption[0].nodeType === NODE_TYPE_COMMENT) {\n          // This means the empty option has currently no actual DOM node, probably because\n          // it has been modified by a transclusion directive.\n          selectCtrl.hasEmptyOption = false;\n\n          // Redefine the registerOption function, which will catch\n          // options that are added by ngIf etc. (rendering of the node is async because of\n          // lazy transclusion)\n          selectCtrl.registerOption = function(optionScope, optionEl) {\n            if (optionEl.val() === '') {\n              selectCtrl.hasEmptyOption = true;\n              selectCtrl.emptyOption = optionEl;\n              selectCtrl.emptyOption.removeClass('ng-scope');\n              // This ensures the new empty option is selected if previously no option was selected\n              ngModelCtrl.$render();\n\n              optionEl.on('$destroy', function() {\n                var needsRerender = selectCtrl.$isEmptyOptionSelected();\n\n                selectCtrl.hasEmptyOption = false;\n                selectCtrl.emptyOption = undefined;\n\n                if (needsRerender) ngModelCtrl.$render();\n              });\n            }\n          };\n\n        } else {\n          // remove the class, which is added automatically because we recompile the element and it\n          // becomes the compilation root\n          selectCtrl.emptyOption.removeClass('ng-scope');\n        }\n\n      }\n\n      // We will re-render the option elements if the option values or labels change\n      scope.$watchCollection(ngOptions.getWatchables, updateOptions);\n\n      // ------------------------------------------------------------------ //\n\n      function addOptionElement(option, parent) {\n        var optionElement = optionTemplate.cloneNode(false);\n        parent.appendChild(optionElement);\n        updateOptionElement(option, optionElement);\n      }\n\n      function getAndUpdateSelectedOption(viewValue) {\n        var option = options.getOptionFromViewValue(viewValue);\n        var element = option && option.element;\n\n        if (element && !element.selected) element.selected = true;\n\n        return option;\n      }\n\n      function updateOptionElement(option, element) {\n        option.element = element;\n        element.disabled = option.disabled;\n        // Support: IE 11 only, Edge 12-13 only\n        // NOTE: The label must be set before the value, otherwise IE 11 & Edge create unresponsive\n        // selects in certain circumstances when multiple selects are next to each other and display\n        // the option list in listbox style, i.e. the select is [multiple], or specifies a [size].\n        // See https://github.com/angular/angular.js/issues/11314 for more info.\n        // This is unfortunately untestable with unit / e2e tests\n        if (option.label !== element.label) {\n          element.label = option.label;\n          element.textContent = option.label;\n        }\n        element.value = option.selectValue;\n      }\n\n      function updateOptions() {\n        var previousValue = options && selectCtrl.readValue();\n\n        // We must remove all current options, but cannot simply set innerHTML = null\n        // since the providedEmptyOption might have an ngIf on it that inserts comments which we\n        // must preserve.\n        // Instead, iterate over the current option elements and remove them or their optgroup\n        // parents\n        if (options) {\n\n          for (var i = options.items.length - 1; i >= 0; i--) {\n            var option = options.items[i];\n            if (isDefined(option.group)) {\n              jqLiteRemove(option.element.parentNode);\n            } else {\n              jqLiteRemove(option.element);\n            }\n          }\n        }\n\n        options = ngOptions.getOptions();\n\n        var groupElementMap = {};\n\n        options.items.forEach(function addOption(option) {\n          var groupElement;\n\n          if (isDefined(option.group)) {\n\n            // This option is to live in a group\n            // See if we have already created this group\n            groupElement = groupElementMap[option.group];\n\n            if (!groupElement) {\n\n              groupElement = optGroupTemplate.cloneNode(false);\n              listFragment.appendChild(groupElement);\n\n              // Update the label on the group element\n              // \"null\" is special cased because of Safari\n              groupElement.label = option.group === null ? 'null' : option.group;\n\n              // Store it for use later\n              groupElementMap[option.group] = groupElement;\n            }\n\n            addOptionElement(option, groupElement);\n\n          } else {\n\n            // This option is not in a group\n            addOptionElement(option, listFragment);\n          }\n        });\n\n        selectElement[0].appendChild(listFragment);\n\n        ngModelCtrl.$render();\n\n        // Check to see if the value has changed due to the update to the options\n        if (!ngModelCtrl.$isEmpty(previousValue)) {\n          var nextValue = selectCtrl.readValue();\n          var isNotPrimitive = ngOptions.trackBy || multiple;\n          if (isNotPrimitive ? !equals(previousValue, nextValue) : previousValue !== nextValue) {\n            ngModelCtrl.$setViewValue(nextValue);\n            ngModelCtrl.$render();\n          }\n        }\n      }\n  }\n\n  return {\n    restrict: 'A',\n    terminal: true,\n    require: ['select', 'ngModel'],\n    link: {\n      pre: function ngOptionsPreLink(scope, selectElement, attr, ctrls) {\n        // Deactivate the SelectController.register method to prevent\n        // option directives from accidentally registering themselves\n        // (and unwanted $destroy handlers etc.)\n        ctrls[0].registerOption = noop;\n      },\n      post: ngOptionsPostLink\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngPluralize\n * @restrict EA\n *\n * @description\n * `ngPluralize` is a directive that displays messages according to en-US localization rules.\n * These rules are bundled with angular.js, but can be overridden\n * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive\n * by specifying the mappings between\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * and the strings to be displayed.\n *\n * # Plural categories and explicit number rules\n * There are two\n * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)\n * in Angular's default en-US locale: \"one\" and \"other\".\n *\n * While a plural category may match many numbers (for example, in en-US locale, \"other\" can match\n * any number that is not 1), an explicit number rule can only match one number. For example, the\n * explicit number rule for \"3\" matches the number 3. There are examples of plural categories\n * and explicit number rules throughout the rest of this documentation.\n *\n * # Configuring ngPluralize\n * You configure ngPluralize by providing 2 attributes: `count` and `when`.\n * You can also provide an optional attribute, `offset`.\n *\n * The value of the `count` attribute can be either a string or an {@link guide/expression\n * Angular expression}; these are evaluated on the current scope for its bound value.\n *\n * The `when` attribute specifies the mappings between plural categories and the actual\n * string to be displayed. The value of the attribute should be a JSON object.\n *\n * The following example shows how to configure ngPluralize:\n *\n * ```html\n * <ng-pluralize count=\"personCount\"\n                 when=\"{'0': 'Nobody is viewing.',\n *                      'one': '1 person is viewing.',\n *                      'other': '{} people are viewing.'}\">\n * </ng-pluralize>\n *```\n *\n * In the example, `\"0: Nobody is viewing.\"` is an explicit number rule. If you did not\n * specify this rule, 0 would be matched to the \"other\" category and \"0 people are viewing\"\n * would be shown instead of \"Nobody is viewing\". You can specify an explicit number rule for\n * other numbers, for example 12, so that instead of showing \"12 people are viewing\", you can\n * show \"a dozen people are viewing\".\n *\n * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted\n * into pluralized strings. In the previous example, Angular will replace `{}` with\n * <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder\n * for <span ng-non-bindable>{{numberExpression}}</span>.\n *\n * If no rule is defined for a category, then an empty string is displayed and a warning is generated.\n * Note that some locales define more categories than `one` and `other`. For example, fr-fr defines `few` and `many`.\n *\n * # Configuring ngPluralize with offset\n * The `offset` attribute allows further customization of pluralized text, which can result in\n * a better user experience. For example, instead of the message \"4 people are viewing this document\",\n * you might display \"John, Kate and 2 others are viewing this document\".\n * The offset attribute allows you to offset a number by any desired value.\n * Let's take a look at an example:\n *\n * ```html\n * <ng-pluralize count=\"personCount\" offset=2\n *               when=\"{'0': 'Nobody is viewing.',\n *                      '1': '{{person1}} is viewing.',\n *                      '2': '{{person1}} and {{person2}} are viewing.',\n *                      'one': '{{person1}}, {{person2}} and one other person are viewing.',\n *                      'other': '{{person1}}, {{person2}} and {} other people are viewing.'}\">\n * </ng-pluralize>\n * ```\n *\n * Notice that we are still using two plural categories(one, other), but we added\n * three explicit number rules 0, 1 and 2.\n * When one person, perhaps John, views the document, \"John is viewing\" will be shown.\n * When three people view the document, no explicit number rule is found, so\n * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.\n * In this case, plural category 'one' is matched and \"John, Mary and one other person are viewing\"\n * is shown.\n *\n * Note that when you specify offsets, you must provide explicit number rules for\n * numbers from 0 up to and including the offset. If you use an offset of 3, for example,\n * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for\n * plural categories \"one\" and \"other\".\n *\n * @param {string|expression} count The variable to be bound to.\n * @param {string} when The mapping between plural category to its corresponding strings.\n * @param {number=} offset Offset to deduct from the total number.\n *\n * @example\n    <example module=\"pluralizeExample\" name=\"ng-pluralize\">\n      <file name=\"index.html\">\n        <script>\n          angular.module('pluralizeExample', [])\n            .controller('ExampleController', ['$scope', function($scope) {\n              $scope.person1 = 'Igor';\n              $scope.person2 = 'Misko';\n              $scope.personCount = 1;\n            }]);\n        </script>\n        <div ng-controller=\"ExampleController\">\n          <label>Person 1:<input type=\"text\" ng-model=\"person1\" value=\"Igor\" /></label><br/>\n          <label>Person 2:<input type=\"text\" ng-model=\"person2\" value=\"Misko\" /></label><br/>\n          <label>Number of People:<input type=\"text\" ng-model=\"personCount\" value=\"1\" /></label><br/>\n\n          <!--- Example with simple pluralization rules for en locale --->\n          Without Offset:\n          <ng-pluralize count=\"personCount\"\n                        when=\"{'0': 'Nobody is viewing.',\n                               'one': '1 person is viewing.',\n                               'other': '{} people are viewing.'}\">\n          </ng-pluralize><br>\n\n          <!--- Example with offset --->\n          With Offset(2):\n          <ng-pluralize count=\"personCount\" offset=2\n                        when=\"{'0': 'Nobody is viewing.',\n                               '1': '{{person1}} is viewing.',\n                               '2': '{{person1}} and {{person2}} are viewing.',\n                               'one': '{{person1}}, {{person2}} and one other person are viewing.',\n                               'other': '{{person1}}, {{person2}} and {} other people are viewing.'}\">\n          </ng-pluralize>\n        </div>\n      </file>\n      <file name=\"protractor.js\" type=\"protractor\">\n        it('should show correct pluralized string', function() {\n          var withoutOffset = element.all(by.css('ng-pluralize')).get(0);\n          var withOffset = element.all(by.css('ng-pluralize')).get(1);\n          var countInput = element(by.model('personCount'));\n\n          expect(withoutOffset.getText()).toEqual('1 person is viewing.');\n          expect(withOffset.getText()).toEqual('Igor is viewing.');\n\n          countInput.clear();\n          countInput.sendKeys('0');\n\n          expect(withoutOffset.getText()).toEqual('Nobody is viewing.');\n          expect(withOffset.getText()).toEqual('Nobody is viewing.');\n\n          countInput.clear();\n          countInput.sendKeys('2');\n\n          expect(withoutOffset.getText()).toEqual('2 people are viewing.');\n          expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');\n\n          countInput.clear();\n          countInput.sendKeys('3');\n\n          expect(withoutOffset.getText()).toEqual('3 people are viewing.');\n          expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');\n\n          countInput.clear();\n          countInput.sendKeys('4');\n\n          expect(withoutOffset.getText()).toEqual('4 people are viewing.');\n          expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');\n        });\n        it('should show data-bound names', function() {\n          var withOffset = element.all(by.css('ng-pluralize')).get(1);\n          var personCount = element(by.model('personCount'));\n          var person1 = element(by.model('person1'));\n          var person2 = element(by.model('person2'));\n          personCount.clear();\n          personCount.sendKeys('4');\n          person1.clear();\n          person1.sendKeys('Di');\n          person2.clear();\n          person2.sendKeys('Vojta');\n          expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');\n        });\n      </file>\n    </example>\n */\nvar ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, $interpolate, $log) {\n  var BRACE = /{}/g,\n      IS_WHEN = /^when(Minus)?(.+)$/;\n\n  return {\n    link: function(scope, element, attr) {\n      var numberExp = attr.count,\n          whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs\n          offset = attr.offset || 0,\n          whens = scope.$eval(whenExp) || {},\n          whensExpFns = {},\n          startSymbol = $interpolate.startSymbol(),\n          endSymbol = $interpolate.endSymbol(),\n          braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,\n          watchRemover = angular.noop,\n          lastCount;\n\n      forEach(attr, function(expression, attributeName) {\n        var tmpMatch = IS_WHEN.exec(attributeName);\n        if (tmpMatch) {\n          var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);\n          whens[whenKey] = element.attr(attr.$attr[attributeName]);\n        }\n      });\n      forEach(whens, function(expression, key) {\n        whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));\n\n      });\n\n      scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {\n        var count = parseFloat(newVal);\n        var countIsNaN = isNumberNaN(count);\n\n        if (!countIsNaN && !(count in whens)) {\n          // If an explicit number rule such as 1, 2, 3... is defined, just use it.\n          // Otherwise, check it against pluralization rules in $locale service.\n          count = $locale.pluralCat(count - offset);\n        }\n\n        // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.\n        // In JS `NaN !== NaN`, so we have to explicitly check.\n        if ((count !== lastCount) && !(countIsNaN && isNumberNaN(lastCount))) {\n          watchRemover();\n          var whenExpFn = whensExpFns[count];\n          if (isUndefined(whenExpFn)) {\n            if (newVal != null) {\n              $log.debug('ngPluralize: no rule defined for \\'' + count + '\\' in ' + whenExp);\n            }\n            watchRemover = noop;\n            updateElementText();\n          } else {\n            watchRemover = scope.$watch(whenExpFn, updateElementText);\n          }\n          lastCount = count;\n        }\n      });\n\n      function updateElementText(newText) {\n        element.text(newText || '');\n      }\n    }\n  };\n}];\n\n/* exported ngRepeatDirective */\n\n/**\n * @ngdoc directive\n * @name ngRepeat\n * @multiElement\n * @restrict A\n *\n * @description\n * The `ngRepeat` directive instantiates a template once per item from a collection. Each template\n * instance gets its own scope, where the given loop variable is set to the current collection item,\n * and `$index` is set to the item index or key.\n *\n * Special properties are exposed on the local scope of each template instance, including:\n *\n * | Variable  | Type            | Details                                                                     |\n * |-----------|-----------------|-----------------------------------------------------------------------------|\n * | `$index`  | {@type number}  | iterator offset of the repeated element (0..length-1)                       |\n * | `$first`  | {@type boolean} | true if the repeated element is first in the iterator.                      |\n * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |\n * | `$last`   | {@type boolean} | true if the repeated element is last in the iterator.                       |\n * | `$even`   | {@type boolean} | true if the iterator position `$index` is even (otherwise false).           |\n * | `$odd`    | {@type boolean} | true if the iterator position `$index` is odd (otherwise false).            |\n *\n * <div class=\"alert alert-info\">\n *   Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.\n *   This may be useful when, for instance, nesting ngRepeats.\n * </div>\n *\n *\n * # Iterating over object properties\n *\n * It is possible to get `ngRepeat` to iterate over the properties of an object using the following\n * syntax:\n *\n * ```js\n * <div ng-repeat=\"(key, value) in myObj\"> ... </div>\n * ```\n *\n * However, there are a few limitations compared to array iteration:\n *\n * - The JavaScript specification does not define the order of keys\n *   returned for an object, so Angular relies on the order returned by the browser\n *   when running `for key in myObj`. Browsers generally follow the strategy of providing\n *   keys in the order in which they were defined, although there are exceptions when keys are deleted\n *   and reinstated. See the\n *   [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes).\n *\n * - `ngRepeat` will silently *ignore* object keys starting with `$`, because\n *   it's a prefix used by Angular for public (`$`) and private (`$$`) properties.\n *\n * - The built-in filters {@link ng.orderBy orderBy} and {@link ng.filter filter} do not work with\n *   objects, and will throw an error if used with one.\n *\n * If you are hitting any of these limitations, the recommended workaround is to convert your object into an array\n * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could\n * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)\n * or implement a `$watch` on the object yourself.\n *\n *\n * # Tracking and Duplicates\n *\n * `ngRepeat` uses {@link $rootScope.Scope#$watchCollection $watchCollection} to detect changes in\n * the collection. When a change happens, `ngRepeat` then makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * To minimize creation of DOM elements, `ngRepeat` uses a function\n * to \"keep track\" of all items in the collection and their corresponding DOM elements.\n * For example, if an item is added to the collection, `ngRepeat` will know that all other items\n * already have DOM elements, and will not re-render them.\n *\n * The default tracking function (which tracks items by their identity) does not allow\n * duplicate items in arrays. This is because when there are duplicates, it is not possible\n * to maintain a one-to-one mapping between collection items and DOM elements.\n *\n * If you do need to repeat duplicate items, you can substitute the default tracking behavior\n * with your own using the `track by` expression.\n *\n * For example, you may track items by the index of each item in the collection, using the\n * special scope property `$index`:\n * ```html\n *    <div ng-repeat=\"n in [42, 42, 43, 43] track by $index\">\n *      {{n}}\n *    </div>\n * ```\n *\n * You may also use arbitrary expressions in `track by`, including references to custom functions\n * on the scope:\n * ```html\n *    <div ng-repeat=\"n in [42, 42, 43, 43] track by myTrackingFunction(n)\">\n *      {{n}}\n *    </div>\n * ```\n *\n * <div class=\"alert alert-success\">\n * If you are working with objects that have a unique identifier property, you should track\n * by this identifier instead of the object instance. Should you reload your data later, `ngRepeat`\n * will not have to rebuild the DOM elements for items it has already rendered, even if the\n * JavaScript objects in the collection have been substituted for new ones. For large collections,\n * this significantly improves rendering performance. If you don't have a unique identifier,\n * `track by $index` can also provide a performance boost.\n * </div>\n *\n * ```html\n *    <div ng-repeat=\"model in collection track by model.id\">\n *      {{model.name}}\n *    </div>\n * ```\n *\n * <br />\n * <div class=\"alert alert-warning\">\n * Avoid using `track by $index` when the repeated template contains\n * {@link guide/expression#one-time-binding one-time bindings}. In such cases, the `nth` DOM\n * element will always be matched with the `nth` item of the array, so the bindings on that element\n * will not be updated even when the corresponding item changes, essentially causing the view to get\n * out-of-sync with the underlying data.\n * </div>\n *\n * When no `track by` expression is provided, it is equivalent to tracking by the built-in\n * `$id` function, which tracks items by their identity:\n * ```html\n *    <div ng-repeat=\"obj in collection track by $id(obj)\">\n *      {{obj.prop}}\n *    </div>\n * ```\n *\n * <br />\n * <div class=\"alert alert-warning\">\n * **Note:** `track by` must always be the last expression:\n * </div>\n * ```\n *    <div ng-repeat=\"model in collection | orderBy: 'id' as filtered_result track by model.id\">\n *      {{model.name}}\n *    </div>\n * ```\n *\n *\n * # Special repeat start and end points\n * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending\n * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.\n * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)\n * up to and including the ending HTML tag where **ng-repeat-end** is placed.\n *\n * The example below makes use of this feature:\n * ```html\n *   <header ng-repeat-start=\"item in items\">\n *     Header {{ item }}\n *   </header>\n *   <div class=\"body\">\n *     Body {{ item }}\n *   </div>\n *   <footer ng-repeat-end>\n *     Footer {{ item }}\n *   </footer>\n * ```\n *\n * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:\n * ```html\n *   <header>\n *     Header A\n *   </header>\n *   <div class=\"body\">\n *     Body A\n *   </div>\n *   <footer>\n *     Footer A\n *   </footer>\n *   <header>\n *     Header B\n *   </header>\n *   <div class=\"body\">\n *     Body B\n *   </div>\n *   <footer>\n *     Footer B\n *   </footer>\n * ```\n *\n * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such\n * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).\n *\n * @animations\n * | Animation                        | Occurs                              |\n * |----------------------------------|-------------------------------------|\n * | {@link ng.$animate#enter enter} | when a new item is added to the list or when an item is revealed after a filter |\n * | {@link ng.$animate#leave leave} | when an item is removed from the list or when an item is filtered out |\n * | {@link ng.$animate#move move } | when an adjacent item is filtered out causing a reorder or when the item contents are reordered |\n *\n * See the example below for defining CSS animations with ngRepeat.\n *\n * @element ANY\n * @scope\n * @priority 1000\n * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These\n *   formats are currently supported:\n *\n *   * `variable in expression` – where variable is the user defined loop variable and `expression`\n *     is a scope expression giving the collection to enumerate.\n *\n *     For example: `album in artist.albums`.\n *\n *   * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,\n *     and `expression` is the scope expression giving the collection to enumerate.\n *\n *     For example: `(name, age) in {'adam':10, 'amalie':12}`.\n *\n *   * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression\n *     which can be used to associate the objects in the collection with the DOM elements. If no tracking expression\n *     is specified, ng-repeat associates elements by identity. It is an error to have\n *     more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are\n *     mapped to the same DOM element, which is not possible.)\n *\n *     <div class=\"alert alert-warning\">\n *       <strong>Note:</strong> the `track by` expression must come last - after any filters, and the alias expression.\n *     </div>\n *\n *     For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements\n *     will be associated by item identity in the array.\n *\n *     For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique\n *     `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements\n *     with the corresponding item in the array by identity. Moving the same object in array would move the DOM\n *     element in the same way in the DOM.\n *\n *     For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this\n *     case the object identity does not matter. Two objects are considered equivalent as long as their `id`\n *     property is same.\n *\n *     For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter\n *     to items in conjunction with a tracking expression.\n *\n *   * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the\n *     intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message\n *     when a filter is active on the repeater, but the filtered result set is empty.\n *\n *     For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after\n *     the items have been processed through the filter.\n *\n *     Please note that `as [variable name] is not an operator but rather a part of ngRepeat micro-syntax so it can be used only at the end\n *     (and not as operator, inside an expression).\n *\n *     For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` .\n *\n * @example\n * This example uses `ngRepeat` to display a list of people. A filter is used to restrict the displayed\n * results by name or by age. New (entering) and removed (leaving) items are animated.\n  <example module=\"ngRepeat\" name=\"ngRepeat\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-repeat\">\n    <file name=\"index.html\">\n      <div ng-controller=\"repeatController\">\n        I have {{friends.length}} friends. They are:\n        <input type=\"search\" ng-model=\"q\" placeholder=\"filter friends...\" aria-label=\"filter friends\" />\n        <ul class=\"example-animate-container\">\n          <li class=\"animate-repeat\" ng-repeat=\"friend in friends | filter:q as results\">\n            [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.\n          </li>\n          <li class=\"animate-repeat\" ng-if=\"results.length === 0\">\n            <strong>No results found...</strong>\n          </li>\n        </ul>\n      </div>\n    </file>\n    <file name=\"script.js\">\n      angular.module('ngRepeat', ['ngAnimate']).controller('repeatController', function($scope) {\n        $scope.friends = [\n          {name:'John', age:25, gender:'boy'},\n          {name:'Jessie', age:30, gender:'girl'},\n          {name:'Johanna', age:28, gender:'girl'},\n          {name:'Joy', age:15, gender:'girl'},\n          {name:'Mary', age:28, gender:'girl'},\n          {name:'Peter', age:95, gender:'boy'},\n          {name:'Sebastian', age:50, gender:'boy'},\n          {name:'Erika', age:27, gender:'girl'},\n          {name:'Patrick', age:40, gender:'boy'},\n          {name:'Samantha', age:60, gender:'girl'}\n        ];\n      });\n    </file>\n    <file name=\"animations.css\">\n      .example-animate-container {\n        background:white;\n        border:1px solid black;\n        list-style:none;\n        margin:0;\n        padding:0 10px;\n      }\n\n      .animate-repeat {\n        line-height:30px;\n        list-style:none;\n        box-sizing:border-box;\n      }\n\n      .animate-repeat.ng-move,\n      .animate-repeat.ng-enter,\n      .animate-repeat.ng-leave {\n        transition:all linear 0.5s;\n      }\n\n      .animate-repeat.ng-leave.ng-leave-active,\n      .animate-repeat.ng-move,\n      .animate-repeat.ng-enter {\n        opacity:0;\n        max-height:0;\n      }\n\n      .animate-repeat.ng-leave,\n      .animate-repeat.ng-move.ng-move-active,\n      .animate-repeat.ng-enter.ng-enter-active {\n        opacity:1;\n        max-height:30px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      var friends = element.all(by.repeater('friend in friends'));\n\n      it('should render initial data set', function() {\n        expect(friends.count()).toBe(10);\n        expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');\n        expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');\n        expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');\n        expect(element(by.binding('friends.length')).getText())\n            .toMatch(\"I have 10 friends. They are:\");\n      });\n\n       it('should update repeater when filter predicate changes', function() {\n         expect(friends.count()).toBe(10);\n\n         element(by.model('q')).sendKeys('ma');\n\n         expect(friends.count()).toBe(2);\n         expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');\n         expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');\n       });\n      </file>\n    </example>\n */\nvar ngRepeatDirective = ['$parse', '$animate', '$compile', function($parse, $animate, $compile) {\n  var NG_REMOVED = '$$NG_REMOVED';\n  var ngRepeatMinErr = minErr('ngRepeat');\n\n  var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {\n    // TODO(perf): generate setters to shave off ~40ms or 1-1.5%\n    scope[valueIdentifier] = value;\n    if (keyIdentifier) scope[keyIdentifier] = key;\n    scope.$index = index;\n    scope.$first = (index === 0);\n    scope.$last = (index === (arrayLength - 1));\n    scope.$middle = !(scope.$first || scope.$last);\n    // eslint-disable-next-line no-bitwise\n    scope.$odd = !(scope.$even = (index & 1) === 0);\n  };\n\n  var getBlockStart = function(block) {\n    return block.clone[0];\n  };\n\n  var getBlockEnd = function(block) {\n    return block.clone[block.clone.length - 1];\n  };\n\n\n  return {\n    restrict: 'A',\n    multiElement: true,\n    transclude: 'element',\n    priority: 1000,\n    terminal: true,\n    $$tlb: true,\n    compile: function ngRepeatCompile($element, $attr) {\n      var expression = $attr.ngRepeat;\n      var ngRepeatEndComment = $compile.$$createComment('end ngRepeat', expression);\n\n      var match = expression.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/);\n\n      if (!match) {\n        throw ngRepeatMinErr('iexp', 'Expected expression in form of \\'_item_ in _collection_[ track by _id_]\\' but got \\'{0}\\'.',\n            expression);\n      }\n\n      var lhs = match[1];\n      var rhs = match[2];\n      var aliasAs = match[3];\n      var trackByExp = match[4];\n\n      match = lhs.match(/^(?:(\\s*[$\\w]+)|\\(\\s*([$\\w]+)\\s*,\\s*([$\\w]+)\\s*\\))$/);\n\n      if (!match) {\n        throw ngRepeatMinErr('iidexp', '\\'_item_\\' in \\'_item_ in _collection_\\' should be an identifier or \\'(_key_, _value_)\\' expression, but got \\'{0}\\'.',\n            lhs);\n      }\n      var valueIdentifier = match[3] || match[1];\n      var keyIdentifier = match[2];\n\n      if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||\n          /^(null|undefined|this|\\$index|\\$first|\\$middle|\\$last|\\$even|\\$odd|\\$parent|\\$root|\\$id)$/.test(aliasAs))) {\n        throw ngRepeatMinErr('badident', 'alias \\'{0}\\' is invalid --- must be a valid JS identifier which is not a reserved name.',\n          aliasAs);\n      }\n\n      var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;\n      var hashFnLocals = {$id: hashKey};\n\n      if (trackByExp) {\n        trackByExpGetter = $parse(trackByExp);\n      } else {\n        trackByIdArrayFn = function(key, value) {\n          return hashKey(value);\n        };\n        trackByIdObjFn = function(key) {\n          return key;\n        };\n      }\n\n      return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {\n\n        if (trackByExpGetter) {\n          trackByIdExpFn = function(key, value, index) {\n            // assign key, value, and $index to the locals so that they can be used in hash functions\n            if (keyIdentifier) hashFnLocals[keyIdentifier] = key;\n            hashFnLocals[valueIdentifier] = value;\n            hashFnLocals.$index = index;\n            return trackByExpGetter($scope, hashFnLocals);\n          };\n        }\n\n        // Store a list of elements from previous run. This is a hash where key is the item from the\n        // iterator, and the value is objects with following properties.\n        //   - scope: bound scope\n        //   - clone: previous element.\n        //   - index: position\n        //\n        // We are using no-proto object so that we don't need to guard against inherited props via\n        // hasOwnProperty.\n        var lastBlockMap = createMap();\n\n        //watch props\n        $scope.$watchCollection(rhs, function ngRepeatAction(collection) {\n          var index, length,\n              previousNode = $element[0],     // node that cloned nodes should be inserted after\n                                              // initialized to the comment node anchor\n              nextNode,\n              // Same as lastBlockMap but it has the current state. It will become the\n              // lastBlockMap on the next iteration.\n              nextBlockMap = createMap(),\n              collectionLength,\n              key, value, // key/value of iteration\n              trackById,\n              trackByIdFn,\n              collectionKeys,\n              block,       // last object information {scope, element, id}\n              nextBlockOrder,\n              elementsToRemove;\n\n          if (aliasAs) {\n            $scope[aliasAs] = collection;\n          }\n\n          if (isArrayLike(collection)) {\n            collectionKeys = collection;\n            trackByIdFn = trackByIdExpFn || trackByIdArrayFn;\n          } else {\n            trackByIdFn = trackByIdExpFn || trackByIdObjFn;\n            // if object, extract keys, in enumeration order, unsorted\n            collectionKeys = [];\n            for (var itemKey in collection) {\n              if (hasOwnProperty.call(collection, itemKey) && itemKey.charAt(0) !== '$') {\n                collectionKeys.push(itemKey);\n              }\n            }\n          }\n\n          collectionLength = collectionKeys.length;\n          nextBlockOrder = new Array(collectionLength);\n\n          // locate existing items\n          for (index = 0; index < collectionLength; index++) {\n            key = (collection === collectionKeys) ? index : collectionKeys[index];\n            value = collection[key];\n            trackById = trackByIdFn(key, value, index);\n            if (lastBlockMap[trackById]) {\n              // found previously seen block\n              block = lastBlockMap[trackById];\n              delete lastBlockMap[trackById];\n              nextBlockMap[trackById] = block;\n              nextBlockOrder[index] = block;\n            } else if (nextBlockMap[trackById]) {\n              // if collision detected. restore lastBlockMap and throw an error\n              forEach(nextBlockOrder, function(block) {\n                if (block && block.scope) lastBlockMap[block.id] = block;\n              });\n              throw ngRepeatMinErr('dupes',\n                  'Duplicates in a repeater are not allowed. Use \\'track by\\' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}',\n                  expression, trackById, value);\n            } else {\n              // new never before seen block\n              nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};\n              nextBlockMap[trackById] = true;\n            }\n          }\n\n          // remove leftover items\n          for (var blockKey in lastBlockMap) {\n            block = lastBlockMap[blockKey];\n            elementsToRemove = getBlockNodes(block.clone);\n            $animate.leave(elementsToRemove);\n            if (elementsToRemove[0].parentNode) {\n              // if the element was not removed yet because of pending animation, mark it as deleted\n              // so that we can ignore it later\n              for (index = 0, length = elementsToRemove.length; index < length; index++) {\n                elementsToRemove[index][NG_REMOVED] = true;\n              }\n            }\n            block.scope.$destroy();\n          }\n\n          // we are not using forEach for perf reasons (trying to avoid #call)\n          for (index = 0; index < collectionLength; index++) {\n            key = (collection === collectionKeys) ? index : collectionKeys[index];\n            value = collection[key];\n            block = nextBlockOrder[index];\n\n            if (block.scope) {\n              // if we have already seen this object, then we need to reuse the\n              // associated scope/element\n\n              nextNode = previousNode;\n\n              // skip nodes that are already pending removal via leave animation\n              do {\n                nextNode = nextNode.nextSibling;\n              } while (nextNode && nextNode[NG_REMOVED]);\n\n              if (getBlockStart(block) !== nextNode) {\n                // existing item which got moved\n                $animate.move(getBlockNodes(block.clone), null, previousNode);\n              }\n              previousNode = getBlockEnd(block);\n              updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);\n            } else {\n              // new item which we don't know about\n              $transclude(function ngRepeatTransclude(clone, scope) {\n                block.scope = scope;\n                // http://jsperf.com/clone-vs-createcomment\n                var endNode = ngRepeatEndComment.cloneNode(false);\n                clone[clone.length++] = endNode;\n\n                $animate.enter(clone, null, previousNode);\n                previousNode = endNode;\n                // Note: We only need the first/last node of the cloned nodes.\n                // However, we need to keep the reference to the jqlite wrapper as it might be changed later\n                // by a directive with templateUrl when its template arrives.\n                block.clone = clone;\n                nextBlockMap[block.id] = block;\n                updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);\n              });\n            }\n          }\n          lastBlockMap = nextBlockMap;\n        });\n      };\n    }\n  };\n}];\n\nvar NG_HIDE_CLASS = 'ng-hide';\nvar NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';\n/**\n * @ngdoc directive\n * @name ngShow\n * @multiElement\n *\n * @description\n * The `ngShow` directive shows or hides the given HTML element based on the expression provided to\n * the `ngShow` attribute.\n *\n * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element.\n * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an\n * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see\n * {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * <!-- when $scope.myValue is truthy (element is visible) -->\n * <div ng-show=\"myValue\"></div>\n *\n * <!-- when $scope.myValue is falsy (element is hidden) -->\n * <div ng-show=\"myValue\" class=\"ng-hide\"></div>\n * ```\n *\n * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added\n * to the class attribute on the element causing it to become hidden. When truthy, the `.ng-hide`\n * CSS class is removed from the element causing the element not to appear hidden.\n *\n * ## Why is `!important` used?\n *\n * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the\n * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as\n * simple as changing the display style on a HTML list item would make hidden elements appear\n * visible. This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using `!important`, the show and hide behavior will work as expected despite any clash between\n * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a\n * developer chooses to override the styling to change how to hide an element then it is just a\n * matter of using `!important` in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display: none !important`. If you\n * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for\n * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually\n * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added.\n *\n * ```css\n * .ng-hide:not(.ng-hide-animate) {\n *   /&#42; These are just alternative ways of hiding an element &#42;/\n *   display: block!important;\n *   position: absolute;\n *   top: -9999px;\n *   left: -9999px;\n * }\n * ```\n *\n * By default you don't need to override anything in CSS and the animations will work around the\n * display style.\n *\n * ## A note about animations with `ngShow`\n *\n * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the\n * directive expression is true and false. This system works like the animation system present with\n * `ngClass` except that you must also include the `!important` flag to override the display\n * property so that the elements are not actually hidden during the animation.\n *\n * ```css\n * /&#42; A working example can be found at the bottom of this page. &#42;/\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n *   transition: all 0.5s linear;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property\n * to block during animation states - ngAnimate will automatically handle the style toggling for you.\n *\n * @animations\n * | Animation                                           | Occurs                                                                                                        |\n * |-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------|\n * | {@link $animate#addClass addClass} `.ng-hide`       | After the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden. |\n * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngShow` expression evaluates to a truthy value and just before contents are set to visible.        |\n *\n * @element ANY\n * @param {expression} ngShow If the {@link guide/expression expression} is truthy/falsy then the\n *                            element is shown/hidden respectively.\n *\n * @example\n * A simple example, animating the element's opacity:\n *\n  <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-show-simple\">\n    <file name=\"index.html\">\n      Show: <input type=\"checkbox\" ng-model=\"checked\" aria-label=\"Toggle ngShow\"><br />\n      <div class=\"check-element animate-show-hide\" ng-show=\"checked\">\n        I show up when your checkbox is checked.\n      </div>\n    </file>\n    <file name=\"animations.css\">\n      .animate-show-hide.ng-hide {\n        opacity: 0;\n      }\n\n      .animate-show-hide.ng-hide-add,\n      .animate-show-hide.ng-hide-remove {\n        transition: all linear 0.5s;\n      }\n\n      .check-element {\n        border: 1px solid black;\n        opacity: 1;\n        padding: 10px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      it('should check ngShow', function() {\n        var checkbox = element(by.model('checked'));\n        var checkElem = element(by.css('.check-element'));\n\n        expect(checkElem.isDisplayed()).toBe(false);\n        checkbox.click();\n        expect(checkElem.isDisplayed()).toBe(true);\n      });\n    </file>\n  </example>\n *\n * <hr />\n * @example\n * A more complex example, featuring different show/hide animations:\n *\n  <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-show-complex\">\n    <file name=\"index.html\">\n      Show: <input type=\"checkbox\" ng-model=\"checked\" aria-label=\"Toggle ngShow\"><br />\n      <div class=\"check-element funky-show-hide\" ng-show=\"checked\">\n        I show up when your checkbox is checked.\n      </div>\n    </file>\n    <file name=\"animations.css\">\n      body {\n        overflow: hidden;\n        perspective: 1000px;\n      }\n\n      .funky-show-hide.ng-hide-add {\n        transform: rotateZ(0);\n        transform-origin: right;\n        transition: all 0.5s ease-in-out;\n      }\n\n      .funky-show-hide.ng-hide-add.ng-hide-add-active {\n        transform: rotateZ(-135deg);\n      }\n\n      .funky-show-hide.ng-hide-remove {\n        transform: rotateY(90deg);\n        transform-origin: left;\n        transition: all 0.5s ease;\n      }\n\n      .funky-show-hide.ng-hide-remove.ng-hide-remove-active {\n        transform: rotateY(0);\n      }\n\n      .check-element {\n        border: 1px solid black;\n        opacity: 1;\n        padding: 10px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      it('should check ngShow', function() {\n        var checkbox = element(by.model('checked'));\n        var checkElem = element(by.css('.check-element'));\n\n        expect(checkElem.isDisplayed()).toBe(false);\n        checkbox.click();\n        expect(checkElem.isDisplayed()).toBe(true);\n      });\n    </file>\n  </example>\n */\nvar ngShowDirective = ['$animate', function($animate) {\n  return {\n    restrict: 'A',\n    multiElement: true,\n    link: function(scope, element, attr) {\n      scope.$watch(attr.ngShow, function ngShowWatchAction(value) {\n        // we're adding a temporary, animation-specific class for ng-hide since this way\n        // we can control when the element is actually displayed on screen without having\n        // to have a global/greedy CSS selector that breaks when other animations are run.\n        // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845\n        $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {\n          tempClasses: NG_HIDE_IN_PROGRESS_CLASS\n        });\n      });\n    }\n  };\n}];\n\n\n/**\n * @ngdoc directive\n * @name ngHide\n * @multiElement\n *\n * @description\n * The `ngHide` directive shows or hides the given HTML element based on the expression provided to\n * the `ngHide` attribute.\n *\n * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element.\n * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an\n * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see\n * {@link ng.directive:ngCsp ngCsp}).\n *\n * ```html\n * <!-- when $scope.myValue is truthy (element is hidden) -->\n * <div ng-hide=\"myValue\" class=\"ng-hide\"></div>\n *\n * <!-- when $scope.myValue is falsy (element is visible) -->\n * <div ng-hide=\"myValue\"></div>\n * ```\n *\n * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added\n * to the class attribute on the element causing it to become hidden. When falsy, the `.ng-hide`\n * CSS class is removed from the element causing the element not to appear hidden.\n *\n * ## Why is `!important` used?\n *\n * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the\n * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as\n * simple as changing the display style on a HTML list item would make hidden elements appear\n * visible. This also becomes a bigger issue when dealing with CSS frameworks.\n *\n * By using `!important`, the show and hide behavior will work as expected despite any clash between\n * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a\n * developer chooses to override the styling to change how to hide an element then it is just a\n * matter of using `!important` in their own CSS code.\n *\n * ### Overriding `.ng-hide`\n *\n * By default, the `.ng-hide` class will style the element with `display: none !important`. If you\n * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for\n * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually\n * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added.\n *\n * ```css\n * .ng-hide:not(.ng-hide-animate) {\n *   /&#42; These are just alternative ways of hiding an element &#42;/\n *   display: block!important;\n *   position: absolute;\n *   top: -9999px;\n *   left: -9999px;\n * }\n * ```\n *\n * By default you don't need to override in CSS anything and the animations will work around the\n * display style.\n *\n * ## A note about animations with `ngHide`\n *\n * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the\n * directive expression is true and false. This system works like the animation system present with\n * `ngClass` except that you must also include the `!important` flag to override the display\n * property so that the elements are not actually hidden during the animation.\n *\n * ```css\n * /&#42; A working example can be found at the bottom of this page. &#42;/\n * .my-element.ng-hide-add, .my-element.ng-hide-remove {\n *   transition: all 0.5s linear;\n * }\n *\n * .my-element.ng-hide-add { ... }\n * .my-element.ng-hide-add.ng-hide-add-active { ... }\n * .my-element.ng-hide-remove { ... }\n * .my-element.ng-hide-remove.ng-hide-remove-active { ... }\n * ```\n *\n * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property\n * to block during animation states - ngAnimate will automatically handle the style toggling for you.\n *\n * @animations\n * | Animation                                           | Occurs                                                                                                     |\n * |-----------------------------------------------------|------------------------------------------------------------------------------------------------------------|\n * | {@link $animate#addClass addClass} `.ng-hide`       | After the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden.  |\n * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngHide` expression evaluates to a non truthy value and just before contents are set to visible. |\n *\n *\n * @element ANY\n * @param {expression} ngHide If the {@link guide/expression expression} is truthy/falsy then the\n *                            element is hidden/shown respectively.\n *\n * @example\n * A simple example, animating the element's opacity:\n *\n  <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-hide-simple\">\n    <file name=\"index.html\">\n      Hide: <input type=\"checkbox\" ng-model=\"checked\" aria-label=\"Toggle ngHide\"><br />\n      <div class=\"check-element animate-show-hide\" ng-hide=\"checked\">\n        I hide when your checkbox is checked.\n      </div>\n    </file>\n    <file name=\"animations.css\">\n      .animate-show-hide.ng-hide {\n        opacity: 0;\n      }\n\n      .animate-show-hide.ng-hide-add,\n      .animate-show-hide.ng-hide-remove {\n        transition: all linear 0.5s;\n      }\n\n      .check-element {\n        border: 1px solid black;\n        opacity: 1;\n        padding: 10px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      it('should check ngHide', function() {\n        var checkbox = element(by.model('checked'));\n        var checkElem = element(by.css('.check-element'));\n\n        expect(checkElem.isDisplayed()).toBe(true);\n        checkbox.click();\n        expect(checkElem.isDisplayed()).toBe(false);\n      });\n    </file>\n  </example>\n *\n * <hr />\n * @example\n * A more complex example, featuring different show/hide animations:\n *\n  <example module=\"ngAnimate\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-hide-complex\">\n    <file name=\"index.html\">\n      Hide: <input type=\"checkbox\" ng-model=\"checked\" aria-label=\"Toggle ngHide\"><br />\n      <div class=\"check-element funky-show-hide\" ng-hide=\"checked\">\n        I hide when your checkbox is checked.\n      </div>\n    </file>\n    <file name=\"animations.css\">\n      body {\n        overflow: hidden;\n        perspective: 1000px;\n      }\n\n      .funky-show-hide.ng-hide-add {\n        transform: rotateZ(0);\n        transform-origin: right;\n        transition: all 0.5s ease-in-out;\n      }\n\n      .funky-show-hide.ng-hide-add.ng-hide-add-active {\n        transform: rotateZ(-135deg);\n      }\n\n      .funky-show-hide.ng-hide-remove {\n        transform: rotateY(90deg);\n        transform-origin: left;\n        transition: all 0.5s ease;\n      }\n\n      .funky-show-hide.ng-hide-remove.ng-hide-remove-active {\n        transform: rotateY(0);\n      }\n\n      .check-element {\n        border: 1px solid black;\n        opacity: 1;\n        padding: 10px;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      it('should check ngHide', function() {\n        var checkbox = element(by.model('checked'));\n        var checkElem = element(by.css('.check-element'));\n\n        expect(checkElem.isDisplayed()).toBe(true);\n        checkbox.click();\n        expect(checkElem.isDisplayed()).toBe(false);\n      });\n    </file>\n  </example>\n */\nvar ngHideDirective = ['$animate', function($animate) {\n  return {\n    restrict: 'A',\n    multiElement: true,\n    link: function(scope, element, attr) {\n      scope.$watch(attr.ngHide, function ngHideWatchAction(value) {\n        // The comment inside of the ngShowDirective explains why we add and\n        // remove a temporary class for the show/hide animation\n        $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {\n          tempClasses: NG_HIDE_IN_PROGRESS_CLASS\n        });\n      });\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngStyle\n * @restrict AC\n *\n * @description\n * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.\n *\n * @knownIssue\n * You should not use {@link guide/interpolation interpolation} in the value of the `style`\n * attribute, when using the `ngStyle` directive on the same element.\n * See {@link guide/interpolation#known-issues here} for more info.\n *\n * @element ANY\n * @param {expression} ngStyle\n *\n * {@link guide/expression Expression} which evals to an\n * object whose keys are CSS style names and values are corresponding values for those CSS\n * keys.\n *\n * Since some CSS style names are not valid keys for an object, they must be quoted.\n * See the 'background-color' style in the example below.\n *\n * @example\n   <example name=\"ng-style\">\n     <file name=\"index.html\">\n        <input type=\"button\" value=\"set color\" ng-click=\"myStyle={color:'red'}\">\n        <input type=\"button\" value=\"set background\" ng-click=\"myStyle={'background-color':'blue'}\">\n        <input type=\"button\" value=\"clear\" ng-click=\"myStyle={}\">\n        <br/>\n        <span ng-style=\"myStyle\">Sample Text</span>\n        <pre>myStyle={{myStyle}}</pre>\n     </file>\n     <file name=\"style.css\">\n       span {\n         color: black;\n       }\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       var colorSpan = element(by.css('span'));\n\n       it('should check ng-style', function() {\n         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n         element(by.css('input[value=\\'set color\\']')).click();\n         expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');\n         element(by.css('input[value=clear]')).click();\n         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');\n       });\n     </file>\n   </example>\n */\nvar ngStyleDirective = ngDirective(function(scope, element, attr) {\n  scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {\n    if (oldStyles && (newStyles !== oldStyles)) {\n      forEach(oldStyles, function(val, style) { element.css(style, '');});\n    }\n    if (newStyles) element.css(newStyles);\n  }, true);\n});\n\n/**\n * @ngdoc directive\n * @name ngSwitch\n * @restrict EA\n *\n * @description\n * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.\n * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location\n * as specified in the template.\n *\n * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it\n * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element\n * matches the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`on=\"...\"` attribute**\n * (or the **`ng-switch=\"...\"` attribute**), define any inner elements inside of the directive and place\n * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on\n * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default\n * attribute is displayed.\n *\n * <div class=\"alert alert-info\">\n * Be aware that the attribute values to match against cannot be expressions. They are interpreted\n * as literal string values to match against.\n * For example, **`ng-switch-when=\"someVal\"`** will match against the string `\"someVal\"` not against the\n * value of the expression `$scope.someVal`.\n * </div>\n\n * @animations\n * | Animation                        | Occurs                              |\n * |----------------------------------|-------------------------------------|\n * | {@link ng.$animate#enter enter}  | after the ngSwitch contents change and the matched child element is placed inside the container |\n * | {@link ng.$animate#leave leave}  | after the ngSwitch contents change and just before the former contents are removed from the DOM |\n *\n * @usage\n *\n * ```\n * <ANY ng-switch=\"expression\">\n *   <ANY ng-switch-when=\"matchValue1\">...</ANY>\n *   <ANY ng-switch-when=\"matchValue2\">...</ANY>\n *   <ANY ng-switch-default>...</ANY>\n * </ANY>\n * ```\n *\n *\n * @scope\n * @priority 1200\n * @param {*} ngSwitch|on expression to match against <code>ng-switch-when</code>.\n * On child elements add:\n *\n * * `ngSwitchWhen`: the case statement to match against. If match then this\n *   case will be displayed. If the same match appears multiple times, all the\n *   elements will be displayed. It is possible to associate multiple values to\n *   the same `ngSwitchWhen` by defining the optional attribute\n *   `ngSwitchWhenSeparator`. The separator will be used to split the value of\n *   the `ngSwitchWhen` attribute into multiple tokens, and the element will show\n *   if any of the `ngSwitch` evaluates to any of these tokens.\n * * `ngSwitchDefault`: the default case when no other case match. If there\n *   are multiple default cases, all of them will be displayed when no other\n *   case match.\n *\n *\n * @example\n  <example module=\"switchExample\" deps=\"angular-animate.js\" animations=\"true\" name=\"ng-switch\">\n    <file name=\"index.html\">\n      <div ng-controller=\"ExampleController\">\n        <select ng-model=\"selection\" ng-options=\"item for item in items\">\n        </select>\n        <code>selection={{selection}}</code>\n        <hr/>\n        <div class=\"animate-switch-container\"\n          ng-switch on=\"selection\">\n            <div class=\"animate-switch\" ng-switch-when=\"settings|options\" ng-switch-when-separator=\"|\">Settings Div</div>\n            <div class=\"animate-switch\" ng-switch-when=\"home\">Home Span</div>\n            <div class=\"animate-switch\" ng-switch-default>default</div>\n        </div>\n      </div>\n    </file>\n    <file name=\"script.js\">\n      angular.module('switchExample', ['ngAnimate'])\n        .controller('ExampleController', ['$scope', function($scope) {\n          $scope.items = ['settings', 'home', 'options', 'other'];\n          $scope.selection = $scope.items[0];\n        }]);\n    </file>\n    <file name=\"animations.css\">\n      .animate-switch-container {\n        position:relative;\n        background:white;\n        border:1px solid black;\n        height:40px;\n        overflow:hidden;\n      }\n\n      .animate-switch {\n        padding:10px;\n      }\n\n      .animate-switch.ng-animate {\n        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;\n\n        position:absolute;\n        top:0;\n        left:0;\n        right:0;\n        bottom:0;\n      }\n\n      .animate-switch.ng-leave.ng-leave-active,\n      .animate-switch.ng-enter {\n        top:-50px;\n      }\n      .animate-switch.ng-leave,\n      .animate-switch.ng-enter.ng-enter-active {\n        top:0;\n      }\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      var switchElem = element(by.css('[ng-switch]'));\n      var select = element(by.model('selection'));\n\n      it('should start in settings', function() {\n        expect(switchElem.getText()).toMatch(/Settings Div/);\n      });\n      it('should change to home', function() {\n        select.all(by.css('option')).get(1).click();\n        expect(switchElem.getText()).toMatch(/Home Span/);\n      });\n      it('should change to settings via \"options\"', function() {\n        select.all(by.css('option')).get(2).click();\n        expect(switchElem.getText()).toMatch(/Settings Div/);\n      });\n      it('should select default', function() {\n        select.all(by.css('option')).get(3).click();\n        expect(switchElem.getText()).toMatch(/default/);\n      });\n    </file>\n  </example>\n */\nvar ngSwitchDirective = ['$animate', '$compile', function($animate, $compile) {\n  return {\n    require: 'ngSwitch',\n\n    // asks for $scope to fool the BC controller module\n    controller: ['$scope', function NgSwitchController() {\n     this.cases = {};\n    }],\n    link: function(scope, element, attr, ngSwitchController) {\n      var watchExpr = attr.ngSwitch || attr.on,\n          selectedTranscludes = [],\n          selectedElements = [],\n          previousLeaveAnimations = [],\n          selectedScopes = [];\n\n      var spliceFactory = function(array, index) {\n          return function(response) {\n            if (response !== false) array.splice(index, 1);\n          };\n      };\n\n      scope.$watch(watchExpr, function ngSwitchWatchAction(value) {\n        var i, ii;\n\n        // Start with the last, in case the array is modified during the loop\n        while (previousLeaveAnimations.length) {\n          $animate.cancel(previousLeaveAnimations.pop());\n        }\n\n        for (i = 0, ii = selectedScopes.length; i < ii; ++i) {\n          var selected = getBlockNodes(selectedElements[i].clone);\n          selectedScopes[i].$destroy();\n          var runner = previousLeaveAnimations[i] = $animate.leave(selected);\n          runner.done(spliceFactory(previousLeaveAnimations, i));\n        }\n\n        selectedElements.length = 0;\n        selectedScopes.length = 0;\n\n        if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {\n          forEach(selectedTranscludes, function(selectedTransclude) {\n            selectedTransclude.transclude(function(caseElement, selectedScope) {\n              selectedScopes.push(selectedScope);\n              var anchor = selectedTransclude.element;\n              caseElement[caseElement.length++] = $compile.$$createComment('end ngSwitchWhen');\n              var block = { clone: caseElement };\n\n              selectedElements.push(block);\n              $animate.enter(caseElement, anchor.parent(), anchor);\n            });\n          });\n        }\n      });\n    }\n  };\n}];\n\nvar ngSwitchWhenDirective = ngDirective({\n  transclude: 'element',\n  priority: 1200,\n  require: '^ngSwitch',\n  multiElement: true,\n  link: function(scope, element, attrs, ctrl, $transclude) {\n\n    var cases = attrs.ngSwitchWhen.split(attrs.ngSwitchWhenSeparator).sort().filter(\n      // Filter duplicate cases\n      function(element, index, array) { return array[index - 1] !== element; }\n    );\n\n    forEach(cases, function(whenCase) {\n      ctrl.cases['!' + whenCase] = (ctrl.cases['!' + whenCase] || []);\n      ctrl.cases['!' + whenCase].push({ transclude: $transclude, element: element });\n    });\n  }\n});\n\nvar ngSwitchDefaultDirective = ngDirective({\n  transclude: 'element',\n  priority: 1200,\n  require: '^ngSwitch',\n  multiElement: true,\n  link: function(scope, element, attr, ctrl, $transclude) {\n    ctrl.cases['?'] = (ctrl.cases['?'] || []);\n    ctrl.cases['?'].push({ transclude: $transclude, element: element });\n   }\n});\n\n/**\n * @ngdoc directive\n * @name ngTransclude\n * @restrict EAC\n *\n * @description\n * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.\n *\n * You can specify that you want to insert a named transclusion slot, instead of the default slot, by providing the slot name\n * as the value of the `ng-transclude` or `ng-transclude-slot` attribute.\n *\n * If the transcluded content is not empty (i.e. contains one or more DOM nodes, including whitespace text nodes), any existing\n * content of this element will be removed before the transcluded content is inserted.\n * If the transcluded content is empty (or only whitespace), the existing content is left intact. This lets you provide fallback\n * content in the case that no transcluded content is provided.\n *\n * @element ANY\n *\n * @param {string} ngTransclude|ngTranscludeSlot the name of the slot to insert at this point. If this is not provided, is empty\n *                                               or its value is the same as the name of the attribute then the default slot is used.\n *\n * @example\n * ### Basic transclusion\n * This example demonstrates basic transclusion of content into a component directive.\n * <example name=\"simpleTranscludeExample\" module=\"transcludeExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('transcludeExample', [])\n *        .directive('pane', function(){\n *           return {\n *             restrict: 'E',\n *             transclude: true,\n *             scope: { title:'@' },\n *             template: '<div style=\"border: 1px solid black;\">' +\n *                         '<div style=\"background-color: gray\">{{title}}</div>' +\n *                         '<ng-transclude></ng-transclude>' +\n *                       '</div>'\n *           };\n *       })\n *       .controller('ExampleController', ['$scope', function($scope) {\n *         $scope.title = 'Lorem Ipsum';\n *         $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';\n *       }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <input ng-model=\"title\" aria-label=\"title\"> <br/>\n *       <textarea ng-model=\"text\" aria-label=\"text\"></textarea> <br/>\n *       <pane title=\"{{title}}\"><span>{{text}}</span></pane>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *      it('should have transcluded', function() {\n *        var titleElement = element(by.model('title'));\n *        titleElement.clear();\n *        titleElement.sendKeys('TITLE');\n *        var textElement = element(by.model('text'));\n *        textElement.clear();\n *        textElement.sendKeys('TEXT');\n *        expect(element(by.binding('title')).getText()).toEqual('TITLE');\n *        expect(element(by.binding('text')).getText()).toEqual('TEXT');\n *      });\n *   </file>\n * </example>\n *\n * @example\n * ### Transclude fallback content\n * This example shows how to use `NgTransclude` with fallback content, that\n * is displayed if no transcluded content is provided.\n *\n * <example module=\"transcludeFallbackContentExample\" name=\"ng-transclude\">\n * <file name=\"index.html\">\n * <script>\n * angular.module('transcludeFallbackContentExample', [])\n * .directive('myButton', function(){\n *             return {\n *               restrict: 'E',\n *               transclude: true,\n *               scope: true,\n *               template: '<button style=\"cursor: pointer;\">' +\n *                           '<ng-transclude>' +\n *                             '<b style=\"color: red;\">Button1</b>' +\n *                           '</ng-transclude>' +\n *                         '</button>'\n *             };\n *         });\n * </script>\n * <!-- fallback button content -->\n * <my-button id=\"fallback\"></my-button>\n * <!-- modified button content -->\n * <my-button id=\"modified\">\n *   <i style=\"color: green;\">Button2</i>\n * </my-button>\n * </file>\n * <file name=\"protractor.js\" type=\"protractor\">\n * it('should have different transclude element content', function() {\n *          expect(element(by.id('fallback')).getText()).toBe('Button1');\n *          expect(element(by.id('modified')).getText()).toBe('Button2');\n *        });\n * </file>\n * </example>\n *\n * @example\n * ### Multi-slot transclusion\n * This example demonstrates using multi-slot transclusion in a component directive.\n * <example name=\"multiSlotTranscludeExample\" module=\"multiSlotTranscludeExample\">\n *   <file name=\"index.html\">\n *    <style>\n *      .title, .footer {\n *        background-color: gray\n *      }\n *    </style>\n *    <div ng-controller=\"ExampleController\">\n *      <input ng-model=\"title\" aria-label=\"title\"> <br/>\n *      <textarea ng-model=\"text\" aria-label=\"text\"></textarea> <br/>\n *      <pane>\n *        <pane-title><a ng-href=\"{{link}}\">{{title}}</a></pane-title>\n *        <pane-body><p>{{text}}</p></pane-body>\n *      </pane>\n *    </div>\n *   </file>\n *   <file name=\"app.js\">\n *    angular.module('multiSlotTranscludeExample', [])\n *     .directive('pane', function() {\n *        return {\n *          restrict: 'E',\n *          transclude: {\n *            'title': '?paneTitle',\n *            'body': 'paneBody',\n *            'footer': '?paneFooter'\n *          },\n *          template: '<div style=\"border: 1px solid black;\">' +\n *                      '<div class=\"title\" ng-transclude=\"title\">Fallback Title</div>' +\n *                      '<div ng-transclude=\"body\"></div>' +\n *                      '<div class=\"footer\" ng-transclude=\"footer\">Fallback Footer</div>' +\n *                    '</div>'\n *        };\n *    })\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.title = 'Lorem Ipsum';\n *      $scope.link = 'https://google.com';\n *      $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';\n *    }]);\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *      it('should have transcluded the title and the body', function() {\n *        var titleElement = element(by.model('title'));\n *        titleElement.clear();\n *        titleElement.sendKeys('TITLE');\n *        var textElement = element(by.model('text'));\n *        textElement.clear();\n *        textElement.sendKeys('TEXT');\n *        expect(element(by.css('.title')).getText()).toEqual('TITLE');\n *        expect(element(by.binding('text')).getText()).toEqual('TEXT');\n *        expect(element(by.css('.footer')).getText()).toEqual('Fallback Footer');\n *      });\n *   </file>\n * </example>\n */\nvar ngTranscludeMinErr = minErr('ngTransclude');\nvar ngTranscludeDirective = ['$compile', function($compile) {\n  return {\n    restrict: 'EAC',\n    terminal: true,\n    compile: function ngTranscludeCompile(tElement) {\n\n      // Remove and cache any original content to act as a fallback\n      var fallbackLinkFn = $compile(tElement.contents());\n      tElement.empty();\n\n      return function ngTranscludePostLink($scope, $element, $attrs, controller, $transclude) {\n\n        if (!$transclude) {\n          throw ngTranscludeMinErr('orphan',\n          'Illegal use of ngTransclude directive in the template! ' +\n          'No parent directive that requires a transclusion found. ' +\n          'Element: {0}',\n          startingTag($element));\n        }\n\n\n        // If the attribute is of the form: `ng-transclude=\"ng-transclude\"` then treat it like the default\n        if ($attrs.ngTransclude === $attrs.$attr.ngTransclude) {\n          $attrs.ngTransclude = '';\n        }\n        var slotName = $attrs.ngTransclude || $attrs.ngTranscludeSlot;\n\n        // If the slot is required and no transclusion content is provided then this call will throw an error\n        $transclude(ngTranscludeCloneAttachFn, null, slotName);\n\n        // If the slot is optional and no transclusion content is provided then use the fallback content\n        if (slotName && !$transclude.isSlotFilled(slotName)) {\n          useFallbackContent();\n        }\n\n        function ngTranscludeCloneAttachFn(clone, transcludedScope) {\n          if (clone.length && notWhitespace(clone)) {\n            $element.append(clone);\n          } else {\n            useFallbackContent();\n            // There is nothing linked against the transcluded scope since no content was available,\n            // so it should be safe to clean up the generated scope.\n            transcludedScope.$destroy();\n          }\n        }\n\n        function useFallbackContent() {\n          // Since this is the fallback content rather than the transcluded content,\n          // we link against the scope of this directive rather than the transcluded scope\n          fallbackLinkFn($scope, function(clone) {\n            $element.append(clone);\n          });\n        }\n\n        function notWhitespace(nodes) {\n          for (var i = 0, ii = nodes.length; i < ii; i++) {\n            var node = nodes[i];\n            if (node.nodeType !== NODE_TYPE_TEXT || node.nodeValue.trim()) {\n              return true;\n            }\n          }\n        }\n      };\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name script\n * @restrict E\n *\n * @description\n * Load the content of a `<script>` element into {@link ng.$templateCache `$templateCache`}, so that the\n * template can be used by {@link ng.directive:ngInclude `ngInclude`},\n * {@link ngRoute.directive:ngView `ngView`}, or {@link guide/directive directives}. The type of the\n * `<script>` element must be specified as `text/ng-template`, and a cache name for the template must be\n * assigned through the element's `id`, which can then be used as a directive's `templateUrl`.\n *\n * @param {string} type Must be set to `'text/ng-template'`.\n * @param {string} id Cache name of the template.\n *\n * @example\n  <example  name=\"script-tag\">\n    <file name=\"index.html\">\n      <script type=\"text/ng-template\" id=\"/tpl.html\">\n        Content of the template.\n      </script>\n\n      <a ng-click=\"currentTpl='/tpl.html'\" id=\"tpl-link\">Load inlined template</a>\n      <div id=\"tpl-content\" ng-include src=\"currentTpl\"></div>\n    </file>\n    <file name=\"protractor.js\" type=\"protractor\">\n      it('should load template defined inside script tag', function() {\n        element(by.css('#tpl-link')).click();\n        expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);\n      });\n    </file>\n  </example>\n */\nvar scriptDirective = ['$templateCache', function($templateCache) {\n  return {\n    restrict: 'E',\n    terminal: true,\n    compile: function(element, attr) {\n      if (attr.type === 'text/ng-template') {\n        var templateUrl = attr.id,\n            text = element[0].text;\n\n        $templateCache.put(templateUrl, text);\n      }\n    }\n  };\n}];\n\n/* exported selectDirective, optionDirective */\n\nvar noopNgModelController = { $setViewValue: noop, $render: noop };\n\nfunction setOptionSelectedStatus(optionEl, value) {\n  optionEl.prop('selected', value);\n  /**\n   * When unselecting an option, setting the property to null / false should be enough\n   * However, screenreaders might react to the selected attribute instead, see\n   * https://github.com/angular/angular.js/issues/14419\n   * Note: \"selected\" is a boolean attr and will be removed when the \"value\" arg in attr() is false\n   * or null\n   */\n  optionEl.attr('selected', value);\n}\n\n/**\n * @ngdoc type\n * @name  select.SelectController\n *\n * @description\n * The controller for the {@link ng.select select} directive. The controller exposes\n * a few utility methods that can be used to augment the behavior of a regular or an\n * {@link ng.ngOptions ngOptions} select element.\n *\n * @example\n * ### Set a custom error when the unknown option is selected\n *\n * This example sets a custom error \"unknownValue\" on the ngModelController\n * when the select element's unknown option is selected, i.e. when the model is set to a value\n * that is not matched by any option.\n *\n * <example name=\"select-unknown-value-error\" module=\"staticSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"testSelect\"> Single select: </label><br>\n *     <select name=\"testSelect\" ng-model=\"selected\" unknown-value-error>\n *       <option value=\"option-1\">Option 1</option>\n *       <option value=\"option-2\">Option 2</option>\n *     </select><br>\n *     <span ng-if=\"myForm.testSelect.$error.unknownValue\">Error: The current model doesn't match any option</span>\n *\n *     <button ng-click=\"forceUnknownOption()\">Force unknown option</button><br>\n *   </form>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('staticSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.selected = null;\n *\n *      $scope.forceUnknownOption = function() {\n *        $scope.selected = 'nonsense';\n *      };\n *   }])\n *   .directive('unknownValueError', function() {\n *     return {\n *       require: ['ngModel', 'select'],\n *       link: function(scope, element, attrs, ctrls) {\n *         var ngModelCtrl = ctrls[0];\n *         var selectCtrl = ctrls[1];\n *\n *         ngModelCtrl.$validators.unknownValue = function(modelValue, viewValue) {\n *           if (selectCtrl.$isUnknownOptionSelected()) {\n *             return false;\n *           }\n *\n *           return true;\n *         };\n *       }\n *\n *     };\n *   });\n * </file>\n *</example>\n *\n *\n * @example\n * ### Set the \"required\" error when the unknown option is selected.\n *\n * By default, the \"required\" error on the ngModelController is only set on a required select\n * when the empty option is selected. This example adds a custom directive that also sets the\n * error when the unknown option is selected.\n *\n * <example name=\"select-unknown-value-required\" module=\"staticSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"testSelect\"> Select: </label><br>\n *     <select name=\"testSelect\" ng-model=\"selected\" unknown-value-required>\n *       <option value=\"option-1\">Option 1</option>\n *       <option value=\"option-2\">Option 2</option>\n *     </select><br>\n *     <span ng-if=\"myForm.testSelect.$error.required\">Error: Please select a value</span><br>\n *\n *     <button ng-click=\"forceUnknownOption()\">Force unknown option</button><br>\n *   </form>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('staticSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.selected = null;\n *\n *      $scope.forceUnknownOption = function() {\n *        $scope.selected = 'nonsense';\n *      };\n *   }])\n *   .directive('unknownValueRequired', function() {\n *     return {\n *       priority: 1, // This directive must run after the required directive has added its validator\n *       require: ['ngModel', 'select'],\n *       link: function(scope, element, attrs, ctrls) {\n *         var ngModelCtrl = ctrls[0];\n *         var selectCtrl = ctrls[1];\n *\n *         var originalRequiredValidator = ngModelCtrl.$validators.required;\n *\n *         ngModelCtrl.$validators.required = function() {\n *           if (attrs.required && selectCtrl.$isUnknownOptionSelected()) {\n *             return false;\n *           }\n *\n *           return originalRequiredValidator.apply(this, arguments);\n *         };\n *       }\n *     };\n *   });\n * </file>\n *</example>\n *\n *\n */\nvar SelectController =\n        ['$element', '$scope', /** @this */ function($element, $scope) {\n\n  var self = this,\n      optionsMap = new NgMap();\n\n  self.selectValueMap = {}; // Keys are the hashed values, values the original values\n\n  // If the ngModel doesn't get provided then provide a dummy noop version to prevent errors\n  self.ngModelCtrl = noopNgModelController;\n  self.multiple = false;\n\n  // The \"unknown\" option is one that is prepended to the list if the viewValue\n  // does not match any of the options. When it is rendered the value of the unknown\n  // option is '? XXX ?' where XXX is the hashKey of the value that is not known.\n  //\n  // Support: IE 9 only\n  // We can't just jqLite('<option>') since jqLite is not smart enough\n  // to create it in <select> and IE barfs otherwise.\n  self.unknownOption = jqLite(window.document.createElement('option'));\n\n  // The empty option is an option with the value '' that the application developer can\n  // provide inside the select. It is always selectable and indicates that a \"null\" selection has\n  // been made by the user.\n  // If the select has an empty option, and the model of the select is set to \"undefined\" or \"null\",\n  // the empty option is selected.\n  // If the model is set to a different unmatched value, the unknown option is rendered and\n  // selected, i.e both are present, because a \"null\" selection and an unknown value are different.\n  self.hasEmptyOption = false;\n  self.emptyOption = undefined;\n\n  self.renderUnknownOption = function(val) {\n    var unknownVal = self.generateUnknownOptionValue(val);\n    self.unknownOption.val(unknownVal);\n    $element.prepend(self.unknownOption);\n    setOptionSelectedStatus(self.unknownOption, true);\n    $element.val(unknownVal);\n  };\n\n  self.updateUnknownOption = function(val) {\n    var unknownVal = self.generateUnknownOptionValue(val);\n    self.unknownOption.val(unknownVal);\n    setOptionSelectedStatus(self.unknownOption, true);\n    $element.val(unknownVal);\n  };\n\n  self.generateUnknownOptionValue = function(val) {\n    return '? ' + hashKey(val) + ' ?';\n  };\n\n  self.removeUnknownOption = function() {\n    if (self.unknownOption.parent()) self.unknownOption.remove();\n  };\n\n  self.selectEmptyOption = function() {\n    if (self.emptyOption) {\n      $element.val('');\n      setOptionSelectedStatus(self.emptyOption, true);\n    }\n  };\n\n  self.unselectEmptyOption = function() {\n    if (self.hasEmptyOption) {\n      setOptionSelectedStatus(self.emptyOption, false);\n    }\n  };\n\n  $scope.$on('$destroy', function() {\n    // disable unknown option so that we don't do work when the whole select is being destroyed\n    self.renderUnknownOption = noop;\n  });\n\n  // Read the value of the select control, the implementation of this changes depending\n  // upon whether the select can have multiple values and whether ngOptions is at work.\n  self.readValue = function readSingleValue() {\n    var val = $element.val();\n    // ngValue added option values are stored in the selectValueMap, normal interpolations are not\n    var realVal = val in self.selectValueMap ? self.selectValueMap[val] : val;\n\n    if (self.hasOption(realVal)) {\n      return realVal;\n    }\n\n    return null;\n  };\n\n\n  // Write the value to the select control, the implementation of this changes depending\n  // upon whether the select can have multiple values and whether ngOptions is at work.\n  self.writeValue = function writeSingleValue(value) {\n    // Make sure to remove the selected attribute from the previously selected option\n    // Otherwise, screen readers might get confused\n    var currentlySelectedOption = $element[0].options[$element[0].selectedIndex];\n    if (currentlySelectedOption) setOptionSelectedStatus(jqLite(currentlySelectedOption), false);\n\n    if (self.hasOption(value)) {\n      self.removeUnknownOption();\n\n      var hashedVal = hashKey(value);\n      $element.val(hashedVal in self.selectValueMap ? hashedVal : value);\n\n      // Set selected attribute and property on selected option for screen readers\n      var selectedOption = $element[0].options[$element[0].selectedIndex];\n      setOptionSelectedStatus(jqLite(selectedOption), true);\n    } else {\n      self.selectUnknownOrEmptyOption(value);\n    }\n  };\n\n\n  // Tell the select control that an option, with the given value, has been added\n  self.addOption = function(value, element) {\n    // Skip comment nodes, as they only pollute the `optionsMap`\n    if (element[0].nodeType === NODE_TYPE_COMMENT) return;\n\n    assertNotHasOwnProperty(value, '\"option value\"');\n    if (value === '') {\n      self.hasEmptyOption = true;\n      self.emptyOption = element;\n    }\n    var count = optionsMap.get(value) || 0;\n    optionsMap.set(value, count + 1);\n    // Only render at the end of a digest. This improves render performance when many options\n    // are added during a digest and ensures all relevant options are correctly marked as selected\n    scheduleRender();\n  };\n\n  // Tell the select control that an option, with the given value, has been removed\n  self.removeOption = function(value) {\n    var count = optionsMap.get(value);\n    if (count) {\n      if (count === 1) {\n        optionsMap.delete(value);\n        if (value === '') {\n          self.hasEmptyOption = false;\n          self.emptyOption = undefined;\n        }\n      } else {\n        optionsMap.set(value, count - 1);\n      }\n    }\n  };\n\n  // Check whether the select control has an option matching the given value\n  self.hasOption = function(value) {\n    return !!optionsMap.get(value);\n  };\n\n  /**\n   * @ngdoc method\n   * @name select.SelectController#$hasEmptyOption\n   *\n   * @description\n   *\n   * Returns `true` if the select element currently has an empty option\n   * element, i.e. an option that signifies that the select is empty / the selection is null.\n   *\n   */\n  self.$hasEmptyOption = function() {\n    return self.hasEmptyOption;\n  };\n\n  /**\n   * @ngdoc method\n   * @name select.SelectController#$isUnknownOptionSelected\n   *\n   * @description\n   *\n   * Returns `true` if the select element's unknown option is selected. The unknown option is added\n   * and automatically selected whenever the select model doesn't match any option.\n   *\n   */\n  self.$isUnknownOptionSelected = function() {\n    // Presence of the unknown option means it is selected\n    return $element[0].options[0] === self.unknownOption[0];\n  };\n\n  /**\n   * @ngdoc method\n   * @name select.SelectController#$isEmptyOptionSelected\n   *\n   * @description\n   *\n   * Returns `true` if the select element has an empty option and this empty option is currently\n   * selected. Returns `false` if the select element has no empty option or it is not selected.\n   *\n   */\n  self.$isEmptyOptionSelected = function() {\n    return self.hasEmptyOption && $element[0].options[$element[0].selectedIndex] === self.emptyOption[0];\n  };\n\n  self.selectUnknownOrEmptyOption = function(value) {\n    if (value == null && self.emptyOption) {\n      self.removeUnknownOption();\n      self.selectEmptyOption();\n    } else if (self.unknownOption.parent().length) {\n      self.updateUnknownOption(value);\n    } else {\n      self.renderUnknownOption(value);\n    }\n  };\n\n  var renderScheduled = false;\n  function scheduleRender() {\n    if (renderScheduled) return;\n    renderScheduled = true;\n    $scope.$$postDigest(function() {\n      renderScheduled = false;\n      self.ngModelCtrl.$render();\n    });\n  }\n\n  var updateScheduled = false;\n  function scheduleViewValueUpdate(renderAfter) {\n    if (updateScheduled) return;\n\n    updateScheduled = true;\n\n    $scope.$$postDigest(function() {\n      if ($scope.$$destroyed) return;\n\n      updateScheduled = false;\n      self.ngModelCtrl.$setViewValue(self.readValue());\n      if (renderAfter) self.ngModelCtrl.$render();\n    });\n  }\n\n\n  self.registerOption = function(optionScope, optionElement, optionAttrs, interpolateValueFn, interpolateTextFn) {\n\n    if (optionAttrs.$attr.ngValue) {\n      // The value attribute is set by ngValue\n      var oldVal, hashedVal = NaN;\n      optionAttrs.$observe('value', function valueAttributeObserveAction(newVal) {\n\n        var removal;\n        var previouslySelected = optionElement.prop('selected');\n\n        if (isDefined(hashedVal)) {\n          self.removeOption(oldVal);\n          delete self.selectValueMap[hashedVal];\n          removal = true;\n        }\n\n        hashedVal = hashKey(newVal);\n        oldVal = newVal;\n        self.selectValueMap[hashedVal] = newVal;\n        self.addOption(newVal, optionElement);\n        // Set the attribute directly instead of using optionAttrs.$set - this stops the observer\n        // from firing a second time. Other $observers on value will also get the result of the\n        // ngValue expression, not the hashed value\n        optionElement.attr('value', hashedVal);\n\n        if (removal && previouslySelected) {\n          scheduleViewValueUpdate();\n        }\n\n      });\n    } else if (interpolateValueFn) {\n      // The value attribute is interpolated\n      optionAttrs.$observe('value', function valueAttributeObserveAction(newVal) {\n        // This method is overwritten in ngOptions and has side-effects!\n        self.readValue();\n\n        var removal;\n        var previouslySelected = optionElement.prop('selected');\n\n        if (isDefined(oldVal)) {\n          self.removeOption(oldVal);\n          removal = true;\n        }\n        oldVal = newVal;\n        self.addOption(newVal, optionElement);\n\n        if (removal && previouslySelected) {\n          scheduleViewValueUpdate();\n        }\n      });\n    } else if (interpolateTextFn) {\n      // The text content is interpolated\n      optionScope.$watch(interpolateTextFn, function interpolateWatchAction(newVal, oldVal) {\n        optionAttrs.$set('value', newVal);\n        var previouslySelected = optionElement.prop('selected');\n        if (oldVal !== newVal) {\n          self.removeOption(oldVal);\n        }\n        self.addOption(newVal, optionElement);\n\n        if (oldVal && previouslySelected) {\n          scheduleViewValueUpdate();\n        }\n      });\n    } else {\n      // The value attribute is static\n      self.addOption(optionAttrs.value, optionElement);\n    }\n\n\n    optionAttrs.$observe('disabled', function(newVal) {\n\n      // Since model updates will also select disabled options (like ngOptions),\n      // we only have to handle options becoming disabled, not enabled\n\n      if (newVal === 'true' || newVal && optionElement.prop('selected')) {\n        if (self.multiple) {\n          scheduleViewValueUpdate(true);\n        } else {\n          self.ngModelCtrl.$setViewValue(null);\n          self.ngModelCtrl.$render();\n        }\n      }\n    });\n\n    optionElement.on('$destroy', function() {\n      var currentValue = self.readValue();\n      var removeValue = optionAttrs.value;\n\n      self.removeOption(removeValue);\n      scheduleRender();\n\n      if (self.multiple && currentValue && currentValue.indexOf(removeValue) !== -1 ||\n          currentValue === removeValue\n      ) {\n        // When multiple (selected) options are destroyed at the same time, we don't want\n        // to run a model update for each of them. Instead, run a single update in the $$postDigest\n        scheduleViewValueUpdate(true);\n      }\n    });\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name select\n * @restrict E\n *\n * @description\n * HTML `select` element with angular data-binding.\n *\n * The `select` directive is used together with {@link ngModel `ngModel`} to provide data-binding\n * between the scope and the `<select>` control (including setting default values).\n * It also handles dynamic `<option>` elements, which can be added using the {@link ngRepeat `ngRepeat}` or\n * {@link ngOptions `ngOptions`} directives.\n *\n * When an item in the `<select>` menu is selected, the value of the selected option will be bound\n * to the model identified by the `ngModel` directive. With static or repeated options, this is\n * the content of the `value` attribute or the textContent of the `<option>`, if the value attribute is missing.\n * Value and textContent can be interpolated.\n *\n * The {@link select.SelectController select controller} exposes utility functions that can be used\n * to manipulate the select's behavior.\n *\n * ## Matching model and option values\n *\n * In general, the match between the model and an option is evaluated by strictly comparing the model\n * value against the value of the available options.\n *\n * If you are setting the option value with the option's `value` attribute, or textContent, the\n * value will always be a `string` which means that the model value must also be a string.\n * Otherwise the `select` directive cannot match them correctly.\n *\n * To bind the model to a non-string value, you can use one of the following strategies:\n * - the {@link ng.ngOptions `ngOptions`} directive\n *   ({@link ng.select#using-select-with-ngoptions-and-setting-a-default-value})\n * - the {@link ng.ngValue `ngValue`} directive, which allows arbitrary expressions to be\n *   option values ({@link ng.select#using-ngvalue-to-bind-the-model-to-an-array-of-objects Example})\n * - model $parsers / $formatters to convert the string value\n *   ({@link ng.select#binding-select-to-a-non-string-value-via-ngmodel-parsing-formatting Example})\n *\n * If the viewValue of `ngModel` does not match any of the options, then the control\n * will automatically add an \"unknown\" option, which it then removes when the mismatch is resolved.\n *\n * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can\n * be nested into the `<select>` element. This element will then represent the `null` or \"not selected\"\n * option. See example below for demonstration.\n *\n * ## Choosing between `ngRepeat` and `ngOptions`\n *\n * In many cases, `ngRepeat` can be used on `<option>` elements instead of {@link ng.directive:ngOptions\n * ngOptions} to achieve a similar result. However, `ngOptions` provides some benefits:\n * - more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the\n * comprehension expression\n * - reduced memory consumption by not creating a new scope for each repeated instance\n * - increased render speed by creating the options in a documentFragment instead of individually\n *\n * Specifically, select with repeated options slows down significantly starting at 2000 options in\n * Chrome and Internet Explorer / Edge.\n *\n *\n * @param {string} ngModel Assignable angular expression to data-bind to.\n * @param {string=} name Property name of the form under which the control is published.\n * @param {string=} multiple Allows multiple options to be selected. The selected values will be\n *     bound to the model as an array.\n * @param {string=} required Sets `required` validation error key if the value is not entered.\n * @param {string=} ngRequired Adds required attribute and required validation constraint to\n * the element when the ngRequired expression evaluates to true. Use ngRequired instead of required\n * when you want to data-bind to the required attribute.\n * @param {string=} ngChange Angular expression to be executed when selected option(s) changes due to user\n *    interaction with the select element.\n * @param {string=} ngOptions sets the options that the select is populated with and defines what is\n * set on the model on selection. See {@link ngOptions `ngOptions`}.\n * @param {string=} ngAttrSize sets the size of the select element dynamically. Uses the\n * {@link guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes ngAttr} directive.\n *\n *\n * @knownIssue\n *\n * In Firefox, the select model is only updated when the select element is blurred. For example,\n * when switching between options with the keyboard, the select model is only set to the\n * currently selected option when the select is blurred, e.g via tab key or clicking the mouse\n * outside the select.\n *\n * This is due to an ambiguity in the select element specification. See the\n * [issue on the Firefox bug tracker](https://bugzilla.mozilla.org/show_bug.cgi?id=126379)\n * for more information, and this\n * [Github comment for a workaround](https://github.com/angular/angular.js/issues/9134#issuecomment-130800488)\n *\n * @example\n * ### Simple `select` elements with static options\n *\n * <example name=\"static-select\" module=\"staticSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"singleSelect\"> Single select: </label><br>\n *     <select name=\"singleSelect\" ng-model=\"data.singleSelect\">\n *       <option value=\"option-1\">Option 1</option>\n *       <option value=\"option-2\">Option 2</option>\n *     </select><br>\n *\n *     <label for=\"singleSelect\"> Single select with \"not selected\" option and dynamic option values: </label><br>\n *     <select name=\"singleSelect\" id=\"singleSelect\" ng-model=\"data.singleSelect\">\n *       <option value=\"\">---Please select---</option> <!-- not selected / blank option -->\n *       <option value=\"{{data.option1}}\">Option 1</option> <!-- interpolation -->\n *       <option value=\"option-2\">Option 2</option>\n *     </select><br>\n *     <button ng-click=\"forceUnknownOption()\">Force unknown option</button><br>\n *     <tt>singleSelect = {{data.singleSelect}}</tt>\n *\n *     <hr>\n *     <label for=\"multipleSelect\"> Multiple select: </label><br>\n *     <select name=\"multipleSelect\" id=\"multipleSelect\" ng-model=\"data.multipleSelect\" multiple>\n *       <option value=\"option-1\">Option 1</option>\n *       <option value=\"option-2\">Option 2</option>\n *       <option value=\"option-3\">Option 3</option>\n *     </select><br>\n *     <tt>multipleSelect = {{data.multipleSelect}}</tt><br/>\n *   </form>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('staticSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.data = {\n *       singleSelect: null,\n *       multipleSelect: [],\n *       option1: 'option-1'\n *      };\n *\n *      $scope.forceUnknownOption = function() {\n *        $scope.data.singleSelect = 'nonsense';\n *      };\n *   }]);\n * </file>\n *</example>\n *\n * ### Using `ngRepeat` to generate `select` options\n * <example name=\"select-ngrepeat\" module=\"ngrepeatSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"repeatSelect\"> Repeat select: </label>\n *     <select name=\"repeatSelect\" id=\"repeatSelect\" ng-model=\"data.model\">\n *       <option ng-repeat=\"option in data.availableOptions\" value=\"{{option.id}}\">{{option.name}}</option>\n *     </select>\n *   </form>\n *   <hr>\n *   <tt>model = {{data.model}}</tt><br/>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('ngrepeatSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.data = {\n *       model: null,\n *       availableOptions: [\n *         {id: '1', name: 'Option A'},\n *         {id: '2', name: 'Option B'},\n *         {id: '3', name: 'Option C'}\n *       ]\n *      };\n *   }]);\n * </file>\n *</example>\n *\n * ### Using `ngValue` to bind the model to an array of objects\n * <example name=\"select-ngvalue\" module=\"ngvalueSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"ngvalueselect\"> ngvalue select: </label>\n *     <select size=\"6\" name=\"ngvalueselect\" ng-model=\"data.model\" multiple>\n *       <option ng-repeat=\"option in data.availableOptions\" ng-value=\"option.value\">{{option.name}}</option>\n *     </select>\n *   </form>\n *   <hr>\n *   <pre>model = {{data.model | json}}</pre><br/>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('ngvalueSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.data = {\n *       model: null,\n *       availableOptions: [\n           {value: 'myString', name: 'string'},\n           {value: 1, name: 'integer'},\n           {value: true, name: 'boolean'},\n           {value: null, name: 'null'},\n           {value: {prop: 'value'}, name: 'object'},\n           {value: ['a'], name: 'array'}\n *       ]\n *      };\n *   }]);\n * </file>\n *</example>\n *\n * ### Using `select` with `ngOptions` and setting a default value\n * See the {@link ngOptions ngOptions documentation} for more `ngOptions` usage examples.\n *\n * <example name=\"select-with-default-values\" module=\"defaultValueSelect\">\n * <file name=\"index.html\">\n * <div ng-controller=\"ExampleController\">\n *   <form name=\"myForm\">\n *     <label for=\"mySelect\">Make a choice:</label>\n *     <select name=\"mySelect\" id=\"mySelect\"\n *       ng-options=\"option.name for option in data.availableOptions track by option.id\"\n *       ng-model=\"data.selectedOption\"></select>\n *   </form>\n *   <hr>\n *   <tt>option = {{data.selectedOption}}</tt><br/>\n * </div>\n * </file>\n * <file name=\"app.js\">\n *  angular.module('defaultValueSelect', [])\n *    .controller('ExampleController', ['$scope', function($scope) {\n *      $scope.data = {\n *       availableOptions: [\n *         {id: '1', name: 'Option A'},\n *         {id: '2', name: 'Option B'},\n *         {id: '3', name: 'Option C'}\n *       ],\n *       selectedOption: {id: '3', name: 'Option C'} //This sets the default value of the select in the ui\n *       };\n *   }]);\n * </file>\n *</example>\n *\n *\n * ### Binding `select` to a non-string value via `ngModel` parsing / formatting\n *\n * <example name=\"select-with-non-string-options\" module=\"nonStringSelect\">\n *   <file name=\"index.html\">\n *     <select ng-model=\"model.id\" convert-to-number>\n *       <option value=\"0\">Zero</option>\n *       <option value=\"1\">One</option>\n *       <option value=\"2\">Two</option>\n *     </select>\n *     {{ model }}\n *   </file>\n *   <file name=\"app.js\">\n *     angular.module('nonStringSelect', [])\n *       .run(function($rootScope) {\n *         $rootScope.model = { id: 2 };\n *       })\n *       .directive('convertToNumber', function() {\n *         return {\n *           require: 'ngModel',\n *           link: function(scope, element, attrs, ngModel) {\n *             ngModel.$parsers.push(function(val) {\n *               return parseInt(val, 10);\n *             });\n *             ngModel.$formatters.push(function(val) {\n *               return '' + val;\n *             });\n *           }\n *         };\n *       });\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n *     it('should initialize to model', function() {\n *       expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two');\n *     });\n *   </file>\n * </example>\n *\n */\nvar selectDirective = function() {\n\n  return {\n    restrict: 'E',\n    require: ['select', '?ngModel'],\n    controller: SelectController,\n    priority: 1,\n    link: {\n      pre: selectPreLink,\n      post: selectPostLink\n    }\n  };\n\n  function selectPreLink(scope, element, attr, ctrls) {\n\n      var selectCtrl = ctrls[0];\n      var ngModelCtrl = ctrls[1];\n\n      // if ngModel is not defined, we don't need to do anything but set the registerOption\n      // function to noop, so options don't get added internally\n      if (!ngModelCtrl) {\n        selectCtrl.registerOption = noop;\n        return;\n      }\n\n\n      selectCtrl.ngModelCtrl = ngModelCtrl;\n\n      // When the selected item(s) changes we delegate getting the value of the select control\n      // to the `readValue` method, which can be changed if the select can have multiple\n      // selected values or if the options are being generated by `ngOptions`\n      element.on('change', function() {\n        selectCtrl.removeUnknownOption();\n        scope.$apply(function() {\n          ngModelCtrl.$setViewValue(selectCtrl.readValue());\n        });\n      });\n\n      // If the select allows multiple values then we need to modify how we read and write\n      // values from and to the control; also what it means for the value to be empty and\n      // we have to add an extra watch since ngModel doesn't work well with arrays - it\n      // doesn't trigger rendering if only an item in the array changes.\n      if (attr.multiple) {\n        selectCtrl.multiple = true;\n\n        // Read value now needs to check each option to see if it is selected\n        selectCtrl.readValue = function readMultipleValue() {\n          var array = [];\n          forEach(element.find('option'), function(option) {\n            if (option.selected && !option.disabled) {\n              var val = option.value;\n              array.push(val in selectCtrl.selectValueMap ? selectCtrl.selectValueMap[val] : val);\n            }\n          });\n          return array;\n        };\n\n        // Write value now needs to set the selected property of each matching option\n        selectCtrl.writeValue = function writeMultipleValue(value) {\n          forEach(element.find('option'), function(option) {\n            var shouldBeSelected = !!value && (includes(value, option.value) ||\n                                               includes(value, selectCtrl.selectValueMap[option.value]));\n            var currentlySelected = option.selected;\n\n            // Support: IE 9-11 only, Edge 12-15+\n            // In IE and Edge adding options to the selection via shift+click/UP/DOWN\n            // will de-select already selected options if \"selected\" on those options was set\n            // more than once (i.e. when the options were already selected)\n            // So we only modify the selected property if necessary.\n            // Note: this behavior cannot be replicated via unit tests because it only shows in the\n            // actual user interface.\n            if (shouldBeSelected !== currentlySelected) {\n              setOptionSelectedStatus(jqLite(option), shouldBeSelected);\n            }\n\n          });\n        };\n\n        // we have to do it on each watch since ngModel watches reference, but\n        // we need to work of an array, so we need to see if anything was inserted/removed\n        var lastView, lastViewRef = NaN;\n        scope.$watch(function selectMultipleWatch() {\n          if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) {\n            lastView = shallowCopy(ngModelCtrl.$viewValue);\n            ngModelCtrl.$render();\n          }\n          lastViewRef = ngModelCtrl.$viewValue;\n        });\n\n        // If we are a multiple select then value is now a collection\n        // so the meaning of $isEmpty changes\n        ngModelCtrl.$isEmpty = function(value) {\n          return !value || value.length === 0;\n        };\n\n      }\n    }\n\n    function selectPostLink(scope, element, attrs, ctrls) {\n      // if ngModel is not defined, we don't need to do anything\n      var ngModelCtrl = ctrls[1];\n      if (!ngModelCtrl) return;\n\n      var selectCtrl = ctrls[0];\n\n      // We delegate rendering to the `writeValue` method, which can be changed\n      // if the select can have multiple selected values or if the options are being\n      // generated by `ngOptions`.\n      // This must be done in the postLink fn to prevent $render to be called before\n      // all nodes have been linked correctly.\n      ngModelCtrl.$render = function() {\n        selectCtrl.writeValue(ngModelCtrl.$viewValue);\n      };\n    }\n};\n\n\n// The option directive is purely designed to communicate the existence (or lack of)\n// of dynamically created (and destroyed) option elements to their containing select\n// directive via its controller.\nvar optionDirective = ['$interpolate', function($interpolate) {\n  return {\n    restrict: 'E',\n    priority: 100,\n    compile: function(element, attr) {\n      var interpolateValueFn, interpolateTextFn;\n\n      if (isDefined(attr.ngValue)) {\n        // Will be handled by registerOption\n      } else if (isDefined(attr.value)) {\n        // If the value attribute is defined, check if it contains an interpolation\n        interpolateValueFn = $interpolate(attr.value, true);\n      } else {\n        // If the value attribute is not defined then we fall back to the\n        // text content of the option element, which may be interpolated\n        interpolateTextFn = $interpolate(element.text(), true);\n        if (!interpolateTextFn) {\n          attr.$set('value', element.text());\n        }\n      }\n\n      return function(scope, element, attr) {\n        // This is an optimization over using ^^ since we don't want to have to search\n        // all the way to the root of the DOM for every single option element\n        var selectCtrlName = '$selectController',\n            parent = element.parent(),\n            selectCtrl = parent.data(selectCtrlName) ||\n              parent.parent().data(selectCtrlName); // in case we are in optgroup\n\n        if (selectCtrl) {\n          selectCtrl.registerOption(scope, element, attr, interpolateValueFn, interpolateTextFn);\n        }\n      };\n    }\n  };\n}];\n\n/**\n * @ngdoc directive\n * @name ngRequired\n * @restrict A\n *\n * @description\n *\n * ngRequired adds the required {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.\n * It is most often used for {@link input `input`} and {@link select `select`} controls, but can also be\n * applied to custom controls.\n *\n * The directive sets the `required` attribute on the element if the Angular expression inside\n * `ngRequired` evaluates to true. A special directive for setting `required` is necessary because we\n * cannot use interpolation inside `required`. See the {@link guide/interpolation interpolation guide}\n * for more info.\n *\n * The validator will set the `required` error key to true if the `required` attribute is set and\n * calling {@link ngModel.NgModelController#$isEmpty `NgModelController.$isEmpty`} with the\n * {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} returns `true`. For example, the\n * `$isEmpty()` implementation for `input[text]` checks the length of the `$viewValue`. When developing\n * custom controls, `$isEmpty()` can be overwritten to account for a $viewValue that is not string-based.\n *\n * @example\n * <example name=\"ngRequiredDirective\" module=\"ngRequiredExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('ngRequiredExample', [])\n *         .controller('ExampleController', ['$scope', function($scope) {\n *           $scope.required = true;\n *         }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"form\">\n *         <label for=\"required\">Toggle required: </label>\n *         <input type=\"checkbox\" ng-model=\"required\" id=\"required\" />\n *         <br>\n *         <label for=\"input\">This input must be filled if `required` is true: </label>\n *         <input type=\"text\" ng-model=\"model\" id=\"input\" name=\"input\" ng-required=\"required\" /><br>\n *         <hr>\n *         required error set? = <code>{{form.input.$error.required}}</code><br>\n *         model = <code>{{model}}</code>\n *       </form>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n       var required = element(by.binding('form.input.$error.required'));\n       var model = element(by.binding('model'));\n       var input = element(by.id('input'));\n\n       it('should set the required error', function() {\n         expect(required.getText()).toContain('true');\n\n         input.sendKeys('123');\n         expect(required.getText()).not.toContain('true');\n         expect(model.getText()).toContain('123');\n       });\n *   </file>\n * </example>\n */\nvar requiredDirective = function() {\n  return {\n    restrict: 'A',\n    require: '?ngModel',\n    link: function(scope, elm, attr, ctrl) {\n      if (!ctrl) return;\n      attr.required = true; // force truthy in case we are on non input element\n\n      ctrl.$validators.required = function(modelValue, viewValue) {\n        return !attr.required || !ctrl.$isEmpty(viewValue);\n      };\n\n      attr.$observe('required', function() {\n        ctrl.$validate();\n      });\n    }\n  };\n};\n\n/**\n * @ngdoc directive\n * @name ngPattern\n *\n * @description\n *\n * ngPattern adds the pattern {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.\n * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.\n *\n * The validator sets the `pattern` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}\n * does not match a RegExp which is obtained by evaluating the Angular expression given in the\n * `ngPattern` attribute value:\n * * If the expression evaluates to a RegExp object, then this is used directly.\n * * If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it\n * in `^` and `$` characters. For instance, `\"abc\"` will be converted to `new RegExp('^abc$')`.\n *\n * <div class=\"alert alert-info\">\n * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to\n * start at the index of the last search's match, thus not taking the whole input value into\n * account.\n * </div>\n *\n * <div class=\"alert alert-info\">\n * **Note:** This directive is also added when the plain `pattern` attribute is used, with two\n * differences:\n * <ol>\n *   <li>\n *     `ngPattern` does not set the `pattern` attribute and therefore HTML5 constraint validation is\n *     not available.\n *   </li>\n *   <li>\n *     The `ngPattern` attribute must be an expression, while the `pattern` value must be\n *     interpolated.\n *   </li>\n * </ol>\n * </div>\n *\n * @example\n * <example name=\"ngPatternDirective\" module=\"ngPatternExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('ngPatternExample', [])\n *         .controller('ExampleController', ['$scope', function($scope) {\n *           $scope.regex = '\\\\d+';\n *         }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"form\">\n *         <label for=\"regex\">Set a pattern (regex string): </label>\n *         <input type=\"text\" ng-model=\"regex\" id=\"regex\" />\n *         <br>\n *         <label for=\"input\">This input is restricted by the current pattern: </label>\n *         <input type=\"text\" ng-model=\"model\" id=\"input\" name=\"input\" ng-pattern=\"regex\" /><br>\n *         <hr>\n *         input valid? = <code>{{form.input.$valid}}</code><br>\n *         model = <code>{{model}}</code>\n *       </form>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n       var model = element(by.binding('model'));\n       var input = element(by.id('input'));\n\n       it('should validate the input with the default pattern', function() {\n         input.sendKeys('aaa');\n         expect(model.getText()).not.toContain('aaa');\n\n         input.clear().then(function() {\n           input.sendKeys('123');\n           expect(model.getText()).toContain('123');\n         });\n       });\n *   </file>\n * </example>\n */\nvar patternDirective = function() {\n  return {\n    restrict: 'A',\n    require: '?ngModel',\n    link: function(scope, elm, attr, ctrl) {\n      if (!ctrl) return;\n\n      var regexp, patternExp = attr.ngPattern || attr.pattern;\n      attr.$observe('pattern', function(regex) {\n        if (isString(regex) && regex.length > 0) {\n          regex = new RegExp('^' + regex + '$');\n        }\n\n        if (regex && !regex.test) {\n          throw minErr('ngPattern')('noregexp',\n            'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,\n            regex, startingTag(elm));\n        }\n\n        regexp = regex || undefined;\n        ctrl.$validate();\n      });\n\n      ctrl.$validators.pattern = function(modelValue, viewValue) {\n        // HTML5 pattern constraint validates the input value, so we validate the viewValue\n        return ctrl.$isEmpty(viewValue) || isUndefined(regexp) || regexp.test(viewValue);\n      };\n    }\n  };\n};\n\n/**\n * @ngdoc directive\n * @name ngMaxlength\n *\n * @description\n *\n * ngMaxlength adds the maxlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.\n * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.\n *\n * The validator sets the `maxlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}\n * is longer than the integer obtained by evaluating the Angular expression given in the\n * `ngMaxlength` attribute value.\n *\n * <div class=\"alert alert-info\">\n * **Note:** This directive is also added when the plain `maxlength` attribute is used, with two\n * differences:\n * <ol>\n *   <li>\n *     `ngMaxlength` does not set the `maxlength` attribute and therefore HTML5 constraint\n *     validation is not available.\n *   </li>\n *   <li>\n *     The `ngMaxlength` attribute must be an expression, while the `maxlength` value must be\n *     interpolated.\n *   </li>\n * </ol>\n * </div>\n *\n * @example\n * <example name=\"ngMaxlengthDirective\" module=\"ngMaxlengthExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('ngMaxlengthExample', [])\n *         .controller('ExampleController', ['$scope', function($scope) {\n *           $scope.maxlength = 5;\n *         }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"form\">\n *         <label for=\"maxlength\">Set a maxlength: </label>\n *         <input type=\"number\" ng-model=\"maxlength\" id=\"maxlength\" />\n *         <br>\n *         <label for=\"input\">This input is restricted by the current maxlength: </label>\n *         <input type=\"text\" ng-model=\"model\" id=\"input\" name=\"input\" ng-maxlength=\"maxlength\" /><br>\n *         <hr>\n *         input valid? = <code>{{form.input.$valid}}</code><br>\n *         model = <code>{{model}}</code>\n *       </form>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n       var model = element(by.binding('model'));\n       var input = element(by.id('input'));\n\n       it('should validate the input with the default maxlength', function() {\n         input.sendKeys('abcdef');\n         expect(model.getText()).not.toContain('abcdef');\n\n         input.clear().then(function() {\n           input.sendKeys('abcde');\n           expect(model.getText()).toContain('abcde');\n         });\n       });\n *   </file>\n * </example>\n */\nvar maxlengthDirective = function() {\n  return {\n    restrict: 'A',\n    require: '?ngModel',\n    link: function(scope, elm, attr, ctrl) {\n      if (!ctrl) return;\n\n      var maxlength = -1;\n      attr.$observe('maxlength', function(value) {\n        var intVal = toInt(value);\n        maxlength = isNumberNaN(intVal) ? -1 : intVal;\n        ctrl.$validate();\n      });\n      ctrl.$validators.maxlength = function(modelValue, viewValue) {\n        return (maxlength < 0) || ctrl.$isEmpty(viewValue) || (viewValue.length <= maxlength);\n      };\n    }\n  };\n};\n\n/**\n * @ngdoc directive\n * @name ngMinlength\n *\n * @description\n *\n * ngMinlength adds the minlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.\n * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.\n *\n * The validator sets the `minlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}\n * is shorter than the integer obtained by evaluating the Angular expression given in the\n * `ngMinlength` attribute value.\n *\n * <div class=\"alert alert-info\">\n * **Note:** This directive is also added when the plain `minlength` attribute is used, with two\n * differences:\n * <ol>\n *   <li>\n *     `ngMinlength` does not set the `minlength` attribute and therefore HTML5 constraint\n *     validation is not available.\n *   </li>\n *   <li>\n *     The `ngMinlength` value must be an expression, while the `minlength` value must be\n *     interpolated.\n *   </li>\n * </ol>\n * </div>\n *\n * @example\n * <example name=\"ngMinlengthDirective\" module=\"ngMinlengthExample\">\n *   <file name=\"index.html\">\n *     <script>\n *       angular.module('ngMinlengthExample', [])\n *         .controller('ExampleController', ['$scope', function($scope) {\n *           $scope.minlength = 3;\n *         }]);\n *     </script>\n *     <div ng-controller=\"ExampleController\">\n *       <form name=\"form\">\n *         <label for=\"minlength\">Set a minlength: </label>\n *         <input type=\"number\" ng-model=\"minlength\" id=\"minlength\" />\n *         <br>\n *         <label for=\"input\">This input is restricted by the current minlength: </label>\n *         <input type=\"text\" ng-model=\"model\" id=\"input\" name=\"input\" ng-minlength=\"minlength\" /><br>\n *         <hr>\n *         input valid? = <code>{{form.input.$valid}}</code><br>\n *         model = <code>{{model}}</code>\n *       </form>\n *     </div>\n *   </file>\n *   <file name=\"protractor.js\" type=\"protractor\">\n       var model = element(by.binding('model'));\n       var input = element(by.id('input'));\n\n       it('should validate the input with the default minlength', function() {\n         input.sendKeys('ab');\n         expect(model.getText()).not.toContain('ab');\n\n         input.sendKeys('abc');\n         expect(model.getText()).toContain('abc');\n       });\n *   </file>\n * </example>\n */\nvar minlengthDirective = function() {\n  return {\n    restrict: 'A',\n    require: '?ngModel',\n    link: function(scope, elm, attr, ctrl) {\n      if (!ctrl) return;\n\n      var minlength = 0;\n      attr.$observe('minlength', function(value) {\n        minlength = toInt(value) || 0;\n        ctrl.$validate();\n      });\n      ctrl.$validators.minlength = function(modelValue, viewValue) {\n        return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;\n      };\n    }\n  };\n};\n\nif (window.angular.bootstrap) {\n  // AngularJS is already loaded, so we can return here...\n  if (window.console) {\n    console.log('WARNING: Tried to load angular more than once.');\n  }\n  return;\n}\n\n// try to bind to jquery now so that one can write jqLite(fn)\n// but we will rebind on bootstrap again.\nbindJQuery();\n\npublishExternalAPI(angular);\n\nangular.module(\"ngLocale\", [], [\"$provide\", function($provide) {\nvar PLURAL_CATEGORY = {ZERO: \"zero\", ONE: \"one\", TWO: \"two\", FEW: \"few\", MANY: \"many\", OTHER: \"other\"};\nfunction getDecimals(n) {\n  n = n + '';\n  var i = n.indexOf('.');\n  return (i == -1) ? 0 : n.length - i - 1;\n}\n\nfunction getVF(n, opt_precision) {\n  var v = opt_precision;\n\n  if (undefined === v) {\n    v = Math.min(getDecimals(n), 3);\n  }\n\n  var base = Math.pow(10, v);\n  var f = ((n * base) | 0) % base;\n  return {v: v, f: f};\n}\n\n$provide.value(\"$locale\", {\n  \"DATETIME_FORMATS\": {\n    \"AMPMS\": [\n      \"AM\",\n      \"PM\"\n    ],\n    \"DAY\": [\n      \"Sunday\",\n      \"Monday\",\n      \"Tuesday\",\n      \"Wednesday\",\n      \"Thursday\",\n      \"Friday\",\n      \"Saturday\"\n    ],\n    \"ERANAMES\": [\n      \"Before Christ\",\n      \"Anno Domini\"\n    ],\n    \"ERAS\": [\n      \"BC\",\n      \"AD\"\n    ],\n    \"FIRSTDAYOFWEEK\": 6,\n    \"MONTH\": [\n      \"January\",\n      \"February\",\n      \"March\",\n      \"April\",\n      \"May\",\n      \"June\",\n      \"July\",\n      \"August\",\n      \"September\",\n      \"October\",\n      \"November\",\n      \"December\"\n    ],\n    \"SHORTDAY\": [\n      \"Sun\",\n      \"Mon\",\n      \"Tue\",\n      \"Wed\",\n      \"Thu\",\n      \"Fri\",\n      \"Sat\"\n    ],\n    \"SHORTMONTH\": [\n      \"Jan\",\n      \"Feb\",\n      \"Mar\",\n      \"Apr\",\n      \"May\",\n      \"Jun\",\n      \"Jul\",\n      \"Aug\",\n      \"Sep\",\n      \"Oct\",\n      \"Nov\",\n      \"Dec\"\n    ],\n    \"STANDALONEMONTH\": [\n      \"January\",\n      \"February\",\n      \"March\",\n      \"April\",\n      \"May\",\n      \"June\",\n      \"July\",\n      \"August\",\n      \"September\",\n      \"October\",\n      \"November\",\n      \"December\"\n    ],\n    \"WEEKENDRANGE\": [\n      5,\n      6\n    ],\n    \"fullDate\": \"EEEE, MMMM d, y\",\n    \"longDate\": \"MMMM d, y\",\n    \"medium\": \"MMM d, y h:mm:ss a\",\n    \"mediumDate\": \"MMM d, y\",\n    \"mediumTime\": \"h:mm:ss a\",\n    \"short\": \"M/d/yy h:mm a\",\n    \"shortDate\": \"M/d/yy\",\n    \"shortTime\": \"h:mm a\"\n  },\n  \"NUMBER_FORMATS\": {\n    \"CURRENCY_SYM\": \"$\",\n    \"DECIMAL_SEP\": \".\",\n    \"GROUP_SEP\": \",\",\n    \"PATTERNS\": [\n      {\n        \"gSize\": 3,\n        \"lgSize\": 3,\n        \"maxFrac\": 3,\n        \"minFrac\": 0,\n        \"minInt\": 1,\n        \"negPre\": \"-\",\n        \"negSuf\": \"\",\n        \"posPre\": \"\",\n        \"posSuf\": \"\"\n      },\n      {\n        \"gSize\": 3,\n        \"lgSize\": 3,\n        \"maxFrac\": 2,\n        \"minFrac\": 2,\n        \"minInt\": 1,\n        \"negPre\": \"-\\u00a4\",\n        \"negSuf\": \"\",\n        \"posPre\": \"\\u00a4\",\n        \"posSuf\": \"\"\n      }\n    ]\n  },\n  \"id\": \"en-us\",\n  \"localeID\": \"en_US\",\n  \"pluralCat\": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}\n});\n}]);\n\n  jqLite(function() {\n    angularInit(window.document, bootstrap);\n  });\n\n})(window);\n\n!window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type=\"text/css\">@charset \"UTF-8\";[ng\\\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link RemoteTrackPublication} implementation\n * @extends TrackSignaling\n */\nvar RemoteTrackPublicationSignaling = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublicationSignaling, _super);\n    /**\n     * Construct a {@link RemoteTrackPublicationSignaling}.\n     * @param {Track.SID} sid\n     * @param {string} name\n     * @param {Track.Kind} kind\n     * @param {boolean} isEnabled\n     * @param {Track.Priority} priority\n     * @param {boolean} isSwitchedOff\n     */\n    function RemoteTrackPublicationSignaling(sid, name, kind, isEnabled, priority, isSwitchedOff) {\n        var _this = _super.call(this, name, kind, isEnabled, priority) || this;\n        Object.defineProperties(_this, {\n            _isSwitchedOff: {\n                value: isSwitchedOff,\n                writable: true\n            },\n        });\n        _this.setSid(sid);\n        return _this;\n    }\n    Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSubscribed\", {\n        /**\n         * Whether the {@link RemoteTrackPublicationSignaling} is subscribed to.\n         * @property {boolean}\n         */\n        get: function () {\n            return !!this.trackTransceiver;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSwitchedOff\", {\n        /**\n         * Whether the {@link RemoteTrackPublicationSignaling} is switched off.\n         * @property {boolean}\n         */\n        get: function () {\n            return this._isSwitchedOff;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @param {Error} error\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.subscribeFailed = function (error) {\n        if (!this.error) {\n            this._error = error;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Update the publish {@link Track.Priority}.\n     * @param {Track.Priority} priority\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.setPriority = function (priority) {\n        if (this._priority !== priority) {\n            this._priority = priority;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Updates track switch on/off state.\n     * @param {boolean} isSwitchedOff\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.setSwitchedOff = function (isSwitchedOff) {\n        if (this._isSwitchedOff !== isSwitchedOff) {\n            this._isSwitchedOff = isSwitchedOff;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return RemoteTrackPublicationSignaling;\n}(TrackSignaling));\nmodule.exports = RemoteTrackPublicationSignaling;\n//# sourceMappingURL=remotetrackpublication.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common/common\");\n/**\n * A [[TransitionHookFn]] which updates global UI-Router state\n *\n * Registered using `transitionService.onBefore({}, updateGlobalState);`\n *\n * Before a [[Transition]] starts, updates the global value of \"the current transition\" ([[Globals.transition]]).\n * After a successful [[Transition]], updates the global values of \"the current state\"\n * ([[Globals.current]] and [[Globals.$current]]) and \"the current param values\" ([[Globals.params]]).\n *\n * See also the deprecated properties:\n * [[StateService.transition]], [[StateService.current]], [[StateService.params]]\n */\nvar updateGlobalState = function (trans) {\n    var globals = trans.router.globals;\n    var transitionSuccessful = function () {\n        globals.successfulTransitions.enqueue(trans);\n        globals.$current = trans.$to();\n        globals.current = globals.$current.self;\n        common_1.copy(trans.params(), globals.params);\n    };\n    var clearCurrentTransition = function () {\n        // Do not clear globals.transition if a different transition has started in the meantime\n        if (globals.transition === trans)\n            globals.transition = null;\n    };\n    trans.onSuccess({}, transitionSuccessful, { priority: 10000 });\n    trans.promise.then(clearCurrentTransition, clearCurrentTransition);\n};\nexports.registerUpdateGlobalState = function (transitionService) {\n    return transitionService.onCreate({}, updateGlobalState);\n};\n//# sourceMappingURL=updateGlobals.js.map","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar messageId = 1;\nvar PublisherHintsSignaling = /** @class */ (function (_super) {\n    __extends(PublisherHintsSignaling, _super);\n    /**\n     * Construct a {@link RenderHintsSignaling}.\n     */\n    function PublisherHintsSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'publisher_hints', options) || this;\n        _this.on('ready', function (transport) {\n            _this._log.debug('publisher_hints transport ready:', transport);\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'publisher_hints':\n                        if (message.publisher && message.publisher.hints && message.publisher.id) {\n                            _this._processPublisherHints(message.publisher.hints, message.publisher.id);\n                        }\n                        break;\n                    default:\n                        _this._log.warn('Unknown message type: ', message.type);\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    PublisherHintsSignaling.prototype.sendTrackReplaced = function (_a) {\n        var trackSid = _a.trackSid;\n        if (!this._transport) {\n            return;\n        }\n        var payLoad = {\n            type: 'client_reset',\n            track: trackSid,\n            id: messageId++\n        };\n        this._log.debug('Outgoing: ', payLoad);\n        this._transport.publish(payLoad);\n    };\n    PublisherHintsSignaling.prototype.sendHintResponse = function (_a) {\n        var id = _a.id, hints = _a.hints;\n        if (!this._transport) {\n            return;\n        }\n        var payLoad = {\n            type: 'publisher_hints',\n            id: id,\n            hints: hints\n        };\n        this._log.debug('Outgoing: ', payLoad);\n        this._transport.publish(payLoad);\n    };\n    /**\n     * @private\n     */\n    PublisherHintsSignaling.prototype._processPublisherHints = function (hints, id) {\n        try {\n            this.emit('updated', hints, id);\n        }\n        catch (ex) {\n            this._log.error('error processing hints:', ex);\n        }\n    };\n    return PublisherHintsSignaling;\n}(MediaSignaling));\nmodule.exports = PublisherHintsSignaling;\n//# sourceMappingURL=publisherhintsignaling.js.map","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return stringSlice(that, index, index + search.length) === search;\n  }\n});\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  fluid: false\n};\nvar Jumbotron = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _classes;\n\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      fluid = _ref.fluid,\n      bsPrefix = _ref.bsPrefix,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"fluid\", \"bsPrefix\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'jumbotron');\n  var classes = (_classes = {}, _classes[bsPrefix] = true, _classes[bsPrefix + \"-fluid\"] = fluid, _classes);\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, classes)\n  }));\n});\nJumbotron.defaultProps = defaultProps;\nJumbotron.displayName = 'Jumbotron';\nexport default Jumbotron;","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex =\n            /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayWith = require('../internals/array-with');\nvar toIndexedObject = require('../internals/to-indexed-object');\n\nvar $Array = Array;\n\n// Firefox bug\nvar INCORRECT_EXCEPTION_ON_COERCION_FAIL = (function () {\n  try {\n    // eslint-disable-next-line es/no-array-prototype-with, no-throw-literal -- needed for testing\n    []['with']({ valueOf: function () { throw 4; } }, null);\n  } catch (error) {\n    return error !== 4;\n  }\n})();\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true, forced: INCORRECT_EXCEPTION_ON_COERCION_FAIL }, {\n  'with': function (index, value) {\n    return arrayWith(toIndexedObject(this), $Array, index, value);\n  }\n});\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n  disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      className = _ref.className,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      onClick = _ref.onClick,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n  var navKey = makeEventKey(eventKey, props.href);\n  var parentOnSelect = useContext(SelectableContext);\n  var navContext = useContext(NavContext);\n  var isActive = active;\n\n  if (navContext) {\n    if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n    var contextControllerId = navContext.getControllerId(navKey);\n    var contextControlledId = navContext.getControlledId(navKey);\n    process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n    props['data-rb-event-key'] = navKey;\n    props.id = contextControllerId || props.id;\n    props['aria-controls'] = contextControlledId || props['aria-controls'];\n    isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n  }\n\n  if (props.role === 'tab') {\n    if (props.disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    props['aria-selected'] = isActive;\n  }\n\n  var handleOnclick = useEventCallback(function (e) {\n    if (onClick) onClick(e);\n    if (navKey == null) return;\n    if (onSelect) onSelect(navKey, e);\n    if (parentOnSelect) parentOnSelect(navKey, e);\n  });\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleOnclick,\n    className: classNames(className, isActive && 'active')\n  }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort:\n            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse:\n            /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort:\n            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n                '_'\n            ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n  big: function big() {\n    return createHTML(this, 'big', '', '');\n  }\n});\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteVideoTrackPublication} represents a {@link RemoteVideoTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"video\"\n * @property {?RemoteVideoTrack} track - unless you have subscribed to the\n *   {@link RemoteVideoTrack}, this property is null\n * @emits RemoteVideoTrackPublication#subscribed\n * @emits RemoteVideoTrackPublication#subscriptionFailed\n * @emits RemoteVideoTrackPublication#trackDisabled\n * @emits RemoteVideoTrackPublication#trackEnabled\n * @emits RemoteVideoTrackPublication#unsubscribed\n */\nvar RemoteVideoTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteVideoTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteVideoTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteVideoTrackPublication.prototype.toString = function () {\n        return \"[RemoteVideoTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return RemoteVideoTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was subscribed to\n * @event RemoteVideoTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteVideoTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteVideoTrack} could not be\n *   subscribed to\n * @event RemoteVideoTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteVideoTrack} was disabled.\n * @event RemoteVideoTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled.\n * @event RemoteVideoTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was unsubscribed from\n * @event RemoteVideoTrackPublication#unsubscribed\n */\nmodule.exports = RemoteVideoTrackPublication;\n//# sourceMappingURL=remotevideotrackpublication.js.map","/**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOfWith(array, value, fromIndex, comparator) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (comparator(array[index], value)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseIndexOfWith;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module url\n */ /** */\nvar urlMatcher_1 = require(\"./urlMatcher\");\nvar predicates_1 = require(\"../common/predicates\");\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\n/**\n * Creates a [[UrlRule]]\n *\n * Creates a [[UrlRule]] from a:\n *\n * - `string`\n * - [[UrlMatcher]]\n * - `RegExp`\n * - [[StateObject]]\n * @internalapi\n */\nvar UrlRuleFactory = /** @class */ (function () {\n    function UrlRuleFactory(router) {\n        this.router = router;\n    }\n    UrlRuleFactory.prototype.compile = function (str) {\n        return this.router.urlMatcherFactory.compile(str);\n    };\n    UrlRuleFactory.prototype.create = function (what, handler) {\n        var _this = this;\n        var makeRule = hof_1.pattern([\n            [predicates_1.isString, function (_what) { return makeRule(_this.compile(_what)); }],\n            [hof_1.is(urlMatcher_1.UrlMatcher), function (_what) { return _this.fromUrlMatcher(_what, handler); }],\n            [predicates_1.isState, function (_what) { return _this.fromState(_what, _this.router); }],\n            [hof_1.is(RegExp), function (_what) { return _this.fromRegExp(_what, handler); }],\n            [predicates_1.isFunction, function (_what) { return new BaseUrlRule(_what, handler); }],\n        ]);\n        var rule = makeRule(what);\n        if (!rule)\n            throw new Error(\"invalid 'what' in when()\");\n        return rule;\n    };\n    /**\n     * A UrlRule which matches based on a UrlMatcher\n     *\n     * The `handler` may be either a `string`, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]\n     *\n     * ## Handler as a function\n     *\n     * If `handler` is a function, the function is invoked with:\n     *\n     * - matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])\n     * - url: the current Url ([[UrlParts]])\n     * - router: the router object ([[UIRouter]])\n     *\n     * #### Example:\n     * ```js\n     * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n     * var rule = factory.fromUrlMatcher(urlMatcher, match => \"/home/\" + match.fooId + \"/\" + match.barId);\n     * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n     * var result = rule.handler(match); // '/home/123/456'\n     * ```\n     *\n     * ## Handler as UrlMatcher\n     *\n     * If `handler` is a UrlMatcher, the handler matcher is used to create the new url.\n     * The `handler` UrlMatcher is formatted using the matched param from the first matcher.\n     * The url is replaced with the result.\n     *\n     * #### Example:\n     * ```js\n     * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n     * var handler = $umf.compile(\"/home/:fooId/:barId\");\n     * var rule = factory.fromUrlMatcher(urlMatcher, handler);\n     * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n     * var result = rule.handler(match); // '/home/123/456'\n     * ```\n     */\n    UrlRuleFactory.prototype.fromUrlMatcher = function (urlMatcher, handler) {\n        var _handler = handler;\n        if (predicates_1.isString(handler))\n            handler = this.router.urlMatcherFactory.compile(handler);\n        if (hof_1.is(urlMatcher_1.UrlMatcher)(handler))\n            _handler = function (match) { return handler.format(match); };\n        function matchUrlParamters(url) {\n            var params = urlMatcher.exec(url.path, url.search, url.hash);\n            return urlMatcher.validates(params) && params;\n        }\n        // Prioritize URLs, lowest to highest:\n        // - Some optional URL parameters, but none matched\n        // - No optional parameters in URL\n        // - Some optional parameters, some matched\n        // - Some optional parameters, all matched\n        function matchPriority(params) {\n            var optional = urlMatcher.parameters().filter(function (param) { return param.isOptional; });\n            if (!optional.length)\n                return 0.000001;\n            var matched = optional.filter(function (param) { return params[param.id]; });\n            return matched.length / optional.length;\n        }\n        var details = { urlMatcher: urlMatcher, matchPriority: matchPriority, type: 'URLMATCHER' };\n        return common_1.extend(new BaseUrlRule(matchUrlParamters, _handler), details);\n    };\n    /**\n     * A UrlRule which matches a state by its url\n     *\n     * #### Example:\n     * ```js\n     * var rule = factory.fromState($state.get('foo'), router);\n     * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n     * var result = rule.handler(match);\n     * // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }\n     * ```\n     */\n    UrlRuleFactory.prototype.fromState = function (state, router) {\n        /**\n         * Handles match by transitioning to matched state\n         *\n         * First checks if the router should start a new transition.\n         * A new transition is not required if the current state's URL\n         * and the new URL are already identical\n         */\n        var handler = function (match) {\n            var $state = router.stateService;\n            var globals = router.globals;\n            if ($state.href(state, match) !== $state.href(globals.current, globals.params)) {\n                $state.transitionTo(state, match, { inherit: true, source: 'url' });\n            }\n        };\n        var details = { state: state, type: 'STATE' };\n        return common_1.extend(this.fromUrlMatcher(state.url, handler), details);\n    };\n    /**\n     * A UrlRule which matches based on a regular expression\n     *\n     * The `handler` may be either a [[UrlRuleHandlerFn]] or a string.\n     *\n     * ## Handler as a function\n     *\n     * If `handler` is a function, the function is invoked with:\n     *\n     * - regexp match array (from `regexp`)\n     * - url: the current Url ([[UrlParts]])\n     * - router: the router object ([[UIRouter]])\n     *\n     * #### Example:\n     * ```js\n     * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, match => \"/home/\" + match[1])\n     * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n     * var result = rule.handler(match); // '/home/bar'\n     * ```\n     *\n     * ## Handler as string\n     *\n     * If `handler` is a string, the url is *replaced by the string* when the Rule is invoked.\n     * The string is first interpolated using `string.replace()` style pattern.\n     *\n     * #### Example:\n     * ```js\n     * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, \"/home/$1\")\n     * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n     * var result = rule.handler(match); // '/home/bar'\n     * ```\n     */\n    UrlRuleFactory.prototype.fromRegExp = function (regexp, handler) {\n        if (regexp.global || regexp.sticky)\n            throw new Error('Rule RegExp must not be global or sticky');\n        /**\n         * If handler is a string, the url will be replaced by the string.\n         * If the string has any String.replace() style variables in it (like `$2`),\n         * they will be replaced by the captures from [[match]]\n         */\n        var redirectUrlTo = function (match) {\n            // Interpolates matched values into $1 $2, etc using a String.replace()-style pattern\n            return handler.replace(/\\$(\\$|\\d{1,2})/, function (m, what) {\n                return match[what === '$' ? 0 : Number(what)];\n            });\n        };\n        var _handler = predicates_1.isString(handler) ? redirectUrlTo : handler;\n        var matchParamsFromRegexp = function (url) {\n            return regexp.exec(url.path);\n        };\n        var details = { regexp: regexp, type: 'REGEXP' };\n        return common_1.extend(new BaseUrlRule(matchParamsFromRegexp, _handler), details);\n    };\n    UrlRuleFactory.isUrlRule = function (obj) {\n        return obj && ['type', 'match', 'handler'].every(function (key) { return predicates_1.isDefined(obj[key]); });\n    };\n    return UrlRuleFactory;\n}());\nexports.UrlRuleFactory = UrlRuleFactory;\n/**\n * A base rule which calls `match`\n *\n * The value from the `match` function is passed through to the `handler`.\n * @internalapi\n */\nvar BaseUrlRule = /** @class */ (function () {\n    function BaseUrlRule(match, handler) {\n        var _this = this;\n        this.match = match;\n        this.type = 'RAW';\n        this.matchPriority = function (match) { return 0 - _this.$id; };\n        this.handler = handler || common_1.identity;\n    }\n    return BaseUrlRule;\n}());\nexports.BaseUrlRule = BaseUrlRule;\n//# sourceMappingURL=urlRule.js.map","var basePullAll = require('./_basePullAll');\n\n/**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\nfunction pullAll(array, values) {\n  return (array && array.length && values && values.length)\n    ? basePullAll(array, values)\n    : array;\n}\n\nmodule.exports = pullAll;\n","/* globals RTCSessionDescription */\n'use strict';\nif (typeof RTCSessionDescription === 'function') {\n    var guessBrowser = require('../util').guessBrowser;\n    switch (guessBrowser()) {\n        case 'chrome':\n            module.exports = require('./chrome');\n            break;\n        case 'firefox':\n            module.exports = require('./firefox');\n            break;\n        default:\n            module.exports = RTCSessionDescription;\n            break;\n    }\n}\nelse {\n    module.exports = function RTCSessionDescription() {\n        throw new Error('RTCSessionDescription is not supported');\n    };\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticVideo = void 0;\nfunction syntheticVideo(_a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.width, width = _c === void 0 ? 640 : _c, _d = _b.height, height = _d === void 0 ? 480 : _d;\n    var canvas = Object.assign(document.createElement('canvas'), { width: width, height: height });\n    var ctx = canvas.getContext('2d');\n    ctx.fillStyle = 'green';\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n    var stopped = false;\n    requestAnimationFrame(function animate() {\n        if (!stopped) {\n            // draw random rect/circle.\n            var r = Math.round(Math.random() * 255);\n            var g = Math.round(Math.random() * 255);\n            var b = Math.round(Math.random() * 255);\n            var a = Math.round(Math.random() * 255);\n            ctx.fillStyle = \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n            ctx.fillRect(Math.random() * width, Math.random() * height, 50, 50);\n            requestAnimationFrame(animate);\n        }\n    });\n    var stream = canvas.captureStream(30);\n    var track = stream.getTracks()[0];\n    var originalStop = track.stop;\n    track.stop = function () {\n        stopped = true;\n        originalStop.call(track);\n    };\n    return track;\n}\nexports.syntheticVideo = syntheticVideo;\n//# sourceMappingURL=syntheticvideo.js.map","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isNumber;\nfunction isObjectLike(value) {\n  return !!value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object';\n}\n\nvar objectToString = Object.prototype.toString;\n\nfunction isNumber(value) {\n  var numberTag = '[object Number]';\n  return typeof value === 'number' || isObjectLike(value) && objectToString.call(value) === numberTag;\n}","// NOTE: Do not edit this file. This code is auto-generated. Contact the\n// Twilio SDK Team for more information.\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TwilioError = require('./twilioerror');\nvar TwilioErrorByCode = {};\n/**\n * Create a {@link TwilioError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {TwilioError}\n */\nexports.createTwilioError = function createTwilioError(code, message) {\n    code = typeof code === 'number' ? code : 0;\n    message = typeof message === 'string' && message ? message : 'Unknown error';\n    return TwilioErrorByCode[code] ? new TwilioErrorByCode[code]() : new TwilioError(code, message);\n};\n/**\n * @class AccessTokenInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is invalid.\n * @extends TwilioError\n * @property {number} code - 20101\n * @property {string} message - 'Invalid Access Token'\n */\nvar AccessTokenInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenInvalidError, _super);\n    function AccessTokenInvalidError() {\n        var _this = _super.call(this, 20101, 'Invalid Access Token') || this;\n        Object.setPrototypeOf(_this, AccessTokenInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenInvalidError;\n}(TwilioError));\nexports.AccessTokenInvalidError = AccessTokenInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20101, { value: AccessTokenInvalidError });\n/**\n * @class AccessTokenHeaderInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid header.\n * @extends TwilioError\n * @property {number} code - 20102\n * @property {string} message - 'Invalid Access Token header'\n */\nvar AccessTokenHeaderInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenHeaderInvalidError, _super);\n    function AccessTokenHeaderInvalidError() {\n        var _this = _super.call(this, 20102, 'Invalid Access Token header') || this;\n        Object.setPrototypeOf(_this, AccessTokenHeaderInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenHeaderInvalidError;\n}(TwilioError));\nexports.AccessTokenHeaderInvalidError = AccessTokenHeaderInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20102, { value: AccessTokenHeaderInvalidError });\n/**\n * @class AccessTokenIssuerInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room contains an invalid issuer or subject.\n * @extends TwilioError\n * @property {number} code - 20103\n * @property {string} message - 'Invalid Access Token issuer/subject'\n */\nvar AccessTokenIssuerInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenIssuerInvalidError, _super);\n    function AccessTokenIssuerInvalidError() {\n        var _this = _super.call(this, 20103, 'Invalid Access Token issuer/subject') || this;\n        Object.setPrototypeOf(_this, AccessTokenIssuerInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenIssuerInvalidError;\n}(TwilioError));\nexports.AccessTokenIssuerInvalidError = AccessTokenIssuerInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20103, { value: AccessTokenIssuerInvalidError });\n/**\n * @class AccessTokenExpiredError\n * @classdesc Raised whenever the AccessToken used for connecting, or reconnecting to a Room has expired.\n * @extends TwilioError\n * @property {number} code - 20104\n * @property {string} message - 'Access Token expired or expiration date invalid'\n */\nvar AccessTokenExpiredError = /** @class */ (function (_super) {\n    __extends(AccessTokenExpiredError, _super);\n    function AccessTokenExpiredError() {\n        var _this = _super.call(this, 20104, 'Access Token expired or expiration date invalid') || this;\n        Object.setPrototypeOf(_this, AccessTokenExpiredError.prototype);\n        return _this;\n    }\n    return AccessTokenExpiredError;\n}(TwilioError));\nexports.AccessTokenExpiredError = AccessTokenExpiredError;\nObject.defineProperty(TwilioErrorByCode, 20104, { value: AccessTokenExpiredError });\n/**\n * @class AccessTokenNotYetValidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is not yet valid.\n * @extends TwilioError\n * @property {number} code - 20105\n * @property {string} message - 'Access Token not yet valid'\n */\nvar AccessTokenNotYetValidError = /** @class */ (function (_super) {\n    __extends(AccessTokenNotYetValidError, _super);\n    function AccessTokenNotYetValidError() {\n        var _this = _super.call(this, 20105, 'Access Token not yet valid') || this;\n        Object.setPrototypeOf(_this, AccessTokenNotYetValidError.prototype);\n        return _this;\n    }\n    return AccessTokenNotYetValidError;\n}(TwilioError));\nexports.AccessTokenNotYetValidError = AccessTokenNotYetValidError;\nObject.defineProperty(TwilioErrorByCode, 20105, { value: AccessTokenNotYetValidError });\n/**\n * @class AccessTokenGrantsInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has invalid grants.\n * @extends TwilioError\n * @property {number} code - 20106\n * @property {string} message - 'Invalid Access Token grants'\n */\nvar AccessTokenGrantsInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenGrantsInvalidError, _super);\n    function AccessTokenGrantsInvalidError() {\n        var _this = _super.call(this, 20106, 'Invalid Access Token grants') || this;\n        Object.setPrototypeOf(_this, AccessTokenGrantsInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenGrantsInvalidError;\n}(TwilioError));\nexports.AccessTokenGrantsInvalidError = AccessTokenGrantsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20106, { value: AccessTokenGrantsInvalidError });\n/**\n * @class AccessTokenSignatureInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid signature.\n * @extends TwilioError\n * @property {number} code - 20107\n * @property {string} message - 'Invalid Access Token signature'\n */\nvar AccessTokenSignatureInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenSignatureInvalidError, _super);\n    function AccessTokenSignatureInvalidError() {\n        var _this = _super.call(this, 20107, 'Invalid Access Token signature') || this;\n        Object.setPrototypeOf(_this, AccessTokenSignatureInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenSignatureInvalidError;\n}(TwilioError));\nexports.AccessTokenSignatureInvalidError = AccessTokenSignatureInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20107, { value: AccessTokenSignatureInvalidError });\n/**\n * @class SignalingConnectionError\n * @classdesc Raised whenever a signaling connection error occurs that is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53000\n * @property {string} message - 'Signaling connection error'\n */\nvar SignalingConnectionError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionError, _super);\n    function SignalingConnectionError() {\n        var _this = _super.call(this, 53000, 'Signaling connection error') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionError.prototype);\n        return _this;\n    }\n    return SignalingConnectionError;\n}(TwilioError));\nexports.SignalingConnectionError = SignalingConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53000, { value: SignalingConnectionError });\n/**\n * @class SignalingConnectionDisconnectedError\n * @classdesc Raised whenever the signaling connection is unexpectedly disconnected.\n * @extends TwilioError\n * @property {number} code - 53001\n * @property {string} message - 'Signaling connection disconnected'\n */\nvar SignalingConnectionDisconnectedError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionDisconnectedError, _super);\n    function SignalingConnectionDisconnectedError() {\n        var _this = _super.call(this, 53001, 'Signaling connection disconnected') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionDisconnectedError.prototype);\n        return _this;\n    }\n    return SignalingConnectionDisconnectedError;\n}(TwilioError));\nexports.SignalingConnectionDisconnectedError = SignalingConnectionDisconnectedError;\nObject.defineProperty(TwilioErrorByCode, 53001, { value: SignalingConnectionDisconnectedError });\n/**\n * @class SignalingConnectionTimeoutError\n * @classdesc Raised when connection liveliness checks fail, or when the signaling session expires.\n * @extends TwilioError\n * @property {number} code - 53002\n * @property {string} message - 'Signaling connection timed out'\n */\nvar SignalingConnectionTimeoutError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionTimeoutError, _super);\n    function SignalingConnectionTimeoutError() {\n        var _this = _super.call(this, 53002, 'Signaling connection timed out') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionTimeoutError.prototype);\n        return _this;\n    }\n    return SignalingConnectionTimeoutError;\n}(TwilioError));\nexports.SignalingConnectionTimeoutError = SignalingConnectionTimeoutError;\nObject.defineProperty(TwilioErrorByCode, 53002, { value: SignalingConnectionTimeoutError });\n/**\n * @class SignalingIncomingMessageInvalidError\n * @classdesc Raised whenever the Client receives a message from the Server that the Client cannot handle.\n * @extends TwilioError\n * @property {number} code - 53003\n * @property {string} message - 'Client received an invalid signaling message'\n */\nvar SignalingIncomingMessageInvalidError = /** @class */ (function (_super) {\n    __extends(SignalingIncomingMessageInvalidError, _super);\n    function SignalingIncomingMessageInvalidError() {\n        var _this = _super.call(this, 53003, 'Client received an invalid signaling message') || this;\n        Object.setPrototypeOf(_this, SignalingIncomingMessageInvalidError.prototype);\n        return _this;\n    }\n    return SignalingIncomingMessageInvalidError;\n}(TwilioError));\nexports.SignalingIncomingMessageInvalidError = SignalingIncomingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53003, { value: SignalingIncomingMessageInvalidError });\n/**\n * @class SignalingOutgoingMessageInvalidError\n * @classdesc Raised whenever the Client sends a message to the Server that the Server cannot handle.\n * @extends TwilioError\n * @property {number} code - 53004\n * @property {string} message - 'Client sent an invalid signaling message'\n */\nvar SignalingOutgoingMessageInvalidError = /** @class */ (function (_super) {\n    __extends(SignalingOutgoingMessageInvalidError, _super);\n    function SignalingOutgoingMessageInvalidError() {\n        var _this = _super.call(this, 53004, 'Client sent an invalid signaling message') || this;\n        Object.setPrototypeOf(_this, SignalingOutgoingMessageInvalidError.prototype);\n        return _this;\n    }\n    return SignalingOutgoingMessageInvalidError;\n}(TwilioError));\nexports.SignalingOutgoingMessageInvalidError = SignalingOutgoingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53004, { value: SignalingOutgoingMessageInvalidError });\n/**\n * @class SignalingServerBusyError\n * @classdesc Raised when the server is too busy to accept new clients.\n * @extends TwilioError\n * @property {number} code - 53006\n * @property {string} message - 'Video server is busy'\n */\nvar SignalingServerBusyError = /** @class */ (function (_super) {\n    __extends(SignalingServerBusyError, _super);\n    function SignalingServerBusyError() {\n        var _this = _super.call(this, 53006, 'Video server is busy') || this;\n        Object.setPrototypeOf(_this, SignalingServerBusyError.prototype);\n        return _this;\n    }\n    return SignalingServerBusyError;\n}(TwilioError));\nexports.SignalingServerBusyError = SignalingServerBusyError;\nObject.defineProperty(TwilioErrorByCode, 53006, { value: SignalingServerBusyError });\n/**\n * @class RoomNameInvalidError\n * @classdesc Raised whenever a Room name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53100\n * @property {string} message - 'Room name is invalid'\n */\nvar RoomNameInvalidError = /** @class */ (function (_super) {\n    __extends(RoomNameInvalidError, _super);\n    function RoomNameInvalidError() {\n        var _this = _super.call(this, 53100, 'Room name is invalid') || this;\n        Object.setPrototypeOf(_this, RoomNameInvalidError.prototype);\n        return _this;\n    }\n    return RoomNameInvalidError;\n}(TwilioError));\nexports.RoomNameInvalidError = RoomNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53100, { value: RoomNameInvalidError });\n/**\n * @class RoomNameTooLongError\n * @classdesc Raised whenever a Room name is too long.\n * @extends TwilioError\n * @property {number} code - 53101\n * @property {string} message - 'Room name is too long'\n */\nvar RoomNameTooLongError = /** @class */ (function (_super) {\n    __extends(RoomNameTooLongError, _super);\n    function RoomNameTooLongError() {\n        var _this = _super.call(this, 53101, 'Room name is too long') || this;\n        Object.setPrototypeOf(_this, RoomNameTooLongError.prototype);\n        return _this;\n    }\n    return RoomNameTooLongError;\n}(TwilioError));\nexports.RoomNameTooLongError = RoomNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53101, { value: RoomNameTooLongError });\n/**\n * @class RoomNameCharsInvalidError\n * @classdesc Raised whenever a Room name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53102\n * @property {string} message - 'Room name contains invalid characters'\n */\nvar RoomNameCharsInvalidError = /** @class */ (function (_super) {\n    __extends(RoomNameCharsInvalidError, _super);\n    function RoomNameCharsInvalidError() {\n        var _this = _super.call(this, 53102, 'Room name contains invalid characters') || this;\n        Object.setPrototypeOf(_this, RoomNameCharsInvalidError.prototype);\n        return _this;\n    }\n    return RoomNameCharsInvalidError;\n}(TwilioError));\nexports.RoomNameCharsInvalidError = RoomNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53102, { value: RoomNameCharsInvalidError });\n/**\n * @class RoomCreateFailedError\n * @classdesc Raised whenever the Server is unable to create a Room.\n * @extends TwilioError\n * @property {number} code - 53103\n * @property {string} message - 'Unable to create Room'\n */\nvar RoomCreateFailedError = /** @class */ (function (_super) {\n    __extends(RoomCreateFailedError, _super);\n    function RoomCreateFailedError() {\n        var _this = _super.call(this, 53103, 'Unable to create Room') || this;\n        Object.setPrototypeOf(_this, RoomCreateFailedError.prototype);\n        return _this;\n    }\n    return RoomCreateFailedError;\n}(TwilioError));\nexports.RoomCreateFailedError = RoomCreateFailedError;\nObject.defineProperty(TwilioErrorByCode, 53103, { value: RoomCreateFailedError });\n/**\n * @class RoomConnectFailedError\n * @classdesc Raised whenever a Client is unable to connect to a Room, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53104\n * @property {string} message - 'Unable to connect to Room'\n */\nvar RoomConnectFailedError = /** @class */ (function (_super) {\n    __extends(RoomConnectFailedError, _super);\n    function RoomConnectFailedError() {\n        var _this = _super.call(this, 53104, 'Unable to connect to Room') || this;\n        Object.setPrototypeOf(_this, RoomConnectFailedError.prototype);\n        return _this;\n    }\n    return RoomConnectFailedError;\n}(TwilioError));\nexports.RoomConnectFailedError = RoomConnectFailedError;\nObject.defineProperty(TwilioErrorByCode, 53104, { value: RoomConnectFailedError });\n/**\n * @class RoomMaxParticipantsExceededError\n * @classdesc Raised whenever a Client is unable to connect to a Room because the Room contains too many Participants.\n * @extends TwilioError\n * @property {number} code - 53105\n * @property {string} message - 'Room contains too many Participants'\n */\nvar RoomMaxParticipantsExceededError = /** @class */ (function (_super) {\n    __extends(RoomMaxParticipantsExceededError, _super);\n    function RoomMaxParticipantsExceededError() {\n        var _this = _super.call(this, 53105, 'Room contains too many Participants') || this;\n        Object.setPrototypeOf(_this, RoomMaxParticipantsExceededError.prototype);\n        return _this;\n    }\n    return RoomMaxParticipantsExceededError;\n}(TwilioError));\nexports.RoomMaxParticipantsExceededError = RoomMaxParticipantsExceededError;\nObject.defineProperty(TwilioErrorByCode, 53105, { value: RoomMaxParticipantsExceededError });\n/**\n * @class RoomNotFoundError\n * @classdesc Raised whenever attempting operation on a non-existent Room.\n * @extends TwilioError\n * @property {number} code - 53106\n * @property {string} message - 'Room not found'\n */\nvar RoomNotFoundError = /** @class */ (function (_super) {\n    __extends(RoomNotFoundError, _super);\n    function RoomNotFoundError() {\n        var _this = _super.call(this, 53106, 'Room not found') || this;\n        Object.setPrototypeOf(_this, RoomNotFoundError.prototype);\n        return _this;\n    }\n    return RoomNotFoundError;\n}(TwilioError));\nexports.RoomNotFoundError = RoomNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53106, { value: RoomNotFoundError });\n/**\n * @class RoomMaxParticipantsOutOfRangeError\n * @classdesc Raised in the REST API when MaxParticipants is set out of range.\n * @extends TwilioError\n * @property {number} code - 53107\n * @property {string} message - 'MaxParticipants is out of range'\n */\nvar RoomMaxParticipantsOutOfRangeError = /** @class */ (function (_super) {\n    __extends(RoomMaxParticipantsOutOfRangeError, _super);\n    function RoomMaxParticipantsOutOfRangeError() {\n        var _this = _super.call(this, 53107, 'MaxParticipants is out of range') || this;\n        Object.setPrototypeOf(_this, RoomMaxParticipantsOutOfRangeError.prototype);\n        return _this;\n    }\n    return RoomMaxParticipantsOutOfRangeError;\n}(TwilioError));\nexports.RoomMaxParticipantsOutOfRangeError = RoomMaxParticipantsOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53107, { value: RoomMaxParticipantsOutOfRangeError });\n/**\n * @class RoomTypeInvalidError\n * @classdesc Raised in the REST API when the user attempts to create a Room with an invalid RoomType\n * @extends TwilioError\n * @property {number} code - 53108\n * @property {string} message - 'RoomType is not valid'\n */\nvar RoomTypeInvalidError = /** @class */ (function (_super) {\n    __extends(RoomTypeInvalidError, _super);\n    function RoomTypeInvalidError() {\n        var _this = _super.call(this, 53108, 'RoomType is not valid') || this;\n        Object.setPrototypeOf(_this, RoomTypeInvalidError.prototype);\n        return _this;\n    }\n    return RoomTypeInvalidError;\n}(TwilioError));\nexports.RoomTypeInvalidError = RoomTypeInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53108, { value: RoomTypeInvalidError });\n/**\n * @class RoomTimeoutOutOfRangeError\n * @classdesc Raised in the REST API when Timeout is set out of range.\n * @extends TwilioError\n * @property {number} code - 53109\n * @property {string} message - 'Timeout is out of range'\n */\nvar RoomTimeoutOutOfRangeError = /** @class */ (function (_super) {\n    __extends(RoomTimeoutOutOfRangeError, _super);\n    function RoomTimeoutOutOfRangeError() {\n        var _this = _super.call(this, 53109, 'Timeout is out of range') || this;\n        Object.setPrototypeOf(_this, RoomTimeoutOutOfRangeError.prototype);\n        return _this;\n    }\n    return RoomTimeoutOutOfRangeError;\n}(TwilioError));\nexports.RoomTimeoutOutOfRangeError = RoomTimeoutOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53109, { value: RoomTimeoutOutOfRangeError });\n/**\n * @class RoomStatusCallbackMethodInvalidError\n * @classdesc Raised in the REST API when StatusCallbackMethod is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53110\n * @property {string} message - 'StatusCallbackMethod is invalid'\n */\nvar RoomStatusCallbackMethodInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusCallbackMethodInvalidError, _super);\n    function RoomStatusCallbackMethodInvalidError() {\n        var _this = _super.call(this, 53110, 'StatusCallbackMethod is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusCallbackMethodInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusCallbackMethodInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackMethodInvalidError = RoomStatusCallbackMethodInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53110, { value: RoomStatusCallbackMethodInvalidError });\n/**\n * @class RoomStatusCallbackInvalidError\n * @classdesc Raised in the REST API when StatusCallback is not a valid URL or the url is too long.\n * @extends TwilioError\n * @property {number} code - 53111\n * @property {string} message - 'StatusCallback is invalid'\n */\nvar RoomStatusCallbackInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusCallbackInvalidError, _super);\n    function RoomStatusCallbackInvalidError() {\n        var _this = _super.call(this, 53111, 'StatusCallback is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusCallbackInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusCallbackInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackInvalidError = RoomStatusCallbackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53111, { value: RoomStatusCallbackInvalidError });\n/**\n * @class RoomStatusInvalidError\n * @classdesc Raised in the REST API when Status is not valid or the Room is not in-progress.\n * @extends TwilioError\n * @property {number} code - 53112\n * @property {string} message - 'Status is invalid'\n */\nvar RoomStatusInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusInvalidError, _super);\n    function RoomStatusInvalidError() {\n        var _this = _super.call(this, 53112, 'Status is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusInvalidError;\n}(TwilioError));\nexports.RoomStatusInvalidError = RoomStatusInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53112, { value: RoomStatusInvalidError });\n/**\n * @class RoomRoomExistsError\n * @classdesc Raised in the REST API when the Room creation fails because a Room exists with the same name.\n * @extends TwilioError\n * @property {number} code - 53113\n * @property {string} message - 'Room exists'\n */\nvar RoomRoomExistsError = /** @class */ (function (_super) {\n    __extends(RoomRoomExistsError, _super);\n    function RoomRoomExistsError() {\n        var _this = _super.call(this, 53113, 'Room exists') || this;\n        Object.setPrototypeOf(_this, RoomRoomExistsError.prototype);\n        return _this;\n    }\n    return RoomRoomExistsError;\n}(TwilioError));\nexports.RoomRoomExistsError = RoomRoomExistsError;\nObject.defineProperty(TwilioErrorByCode, 53113, { value: RoomRoomExistsError });\n/**\n * @class RoomInvalidParametersError\n * @classdesc Raised in the REST API when one or more Room creation parameter is incompatible with the Room type.\n * @extends TwilioError\n * @property {number} code - 53114\n * @property {string} message - 'Room creation parameter(s) incompatible with the Room type'\n */\nvar RoomInvalidParametersError = /** @class */ (function (_super) {\n    __extends(RoomInvalidParametersError, _super);\n    function RoomInvalidParametersError() {\n        var _this = _super.call(this, 53114, 'Room creation parameter(s) incompatible with the Room type') || this;\n        Object.setPrototypeOf(_this, RoomInvalidParametersError.prototype);\n        return _this;\n    }\n    return RoomInvalidParametersError;\n}(TwilioError));\nexports.RoomInvalidParametersError = RoomInvalidParametersError;\nObject.defineProperty(TwilioErrorByCode, 53114, { value: RoomInvalidParametersError });\n/**\n * @class RoomMediaRegionInvalidError\n * @classdesc Raised in the REST API when MediaRegion is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53115\n * @property {string} message - 'MediaRegion is invalid'\n */\nvar RoomMediaRegionInvalidError = /** @class */ (function (_super) {\n    __extends(RoomMediaRegionInvalidError, _super);\n    function RoomMediaRegionInvalidError() {\n        var _this = _super.call(this, 53115, 'MediaRegion is invalid') || this;\n        Object.setPrototypeOf(_this, RoomMediaRegionInvalidError.prototype);\n        return _this;\n    }\n    return RoomMediaRegionInvalidError;\n}(TwilioError));\nexports.RoomMediaRegionInvalidError = RoomMediaRegionInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53115, { value: RoomMediaRegionInvalidError });\n/**\n * @class RoomMediaRegionUnavailableError\n * @classdesc Raised in the REST API when MediaRegion is set to a valid value but no media servers are available.\n * @extends TwilioError\n * @property {number} code - 53116\n * @property {string} message - 'There are no media servers available in the MediaRegion'\n */\nvar RoomMediaRegionUnavailableError = /** @class */ (function (_super) {\n    __extends(RoomMediaRegionUnavailableError, _super);\n    function RoomMediaRegionUnavailableError() {\n        var _this = _super.call(this, 53116, 'There are no media servers available in the MediaRegion') || this;\n        Object.setPrototypeOf(_this, RoomMediaRegionUnavailableError.prototype);\n        return _this;\n    }\n    return RoomMediaRegionUnavailableError;\n}(TwilioError));\nexports.RoomMediaRegionUnavailableError = RoomMediaRegionUnavailableError;\nObject.defineProperty(TwilioErrorByCode, 53116, { value: RoomMediaRegionUnavailableError });\n/**\n * @class RoomSubscriptionOperationNotSupportedError\n * @classdesc Raised whenever the subscription operation requested is not supported for the Room type.\n * @extends TwilioError\n * @property {number} code - 53117\n * @property {string} message - 'The subscription operation requested is not supported for the Room type'\n */\nvar RoomSubscriptionOperationNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomSubscriptionOperationNotSupportedError, _super);\n    function RoomSubscriptionOperationNotSupportedError() {\n        var _this = _super.call(this, 53117, 'The subscription operation requested is not supported for the Room type') || this;\n        Object.setPrototypeOf(_this, RoomSubscriptionOperationNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomSubscriptionOperationNotSupportedError;\n}(TwilioError));\nexports.RoomSubscriptionOperationNotSupportedError = RoomSubscriptionOperationNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53117, { value: RoomSubscriptionOperationNotSupportedError });\n/**\n * @class RoomCompletedError\n * @classdesc Raised whenever a Room is completed via the REST API.\n * @extends TwilioError\n * @property {number} code - 53118\n * @property {string} message - 'Room completed'\n */\nvar RoomCompletedError = /** @class */ (function (_super) {\n    __extends(RoomCompletedError, _super);\n    function RoomCompletedError() {\n        var _this = _super.call(this, 53118, 'Room completed') || this;\n        Object.setPrototypeOf(_this, RoomCompletedError.prototype);\n        return _this;\n    }\n    return RoomCompletedError;\n}(TwilioError));\nexports.RoomCompletedError = RoomCompletedError;\nObject.defineProperty(TwilioErrorByCode, 53118, { value: RoomCompletedError });\n/**\n * @class RoomAudioOnlyFlagNotSupportedError\n * @classdesc Raised whenever a participant tries to set the AudioOnly flag for a Room type other than Group Rooms.\n * @extends TwilioError\n * @property {number} code - 53124\n * @property {string} message - 'The AudioOnly flag is not supported for the Room type'\n */\nvar RoomAudioOnlyFlagNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomAudioOnlyFlagNotSupportedError, _super);\n    function RoomAudioOnlyFlagNotSupportedError() {\n        var _this = _super.call(this, 53124, 'The AudioOnly flag is not supported for the Room type') || this;\n        Object.setPrototypeOf(_this, RoomAudioOnlyFlagNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomAudioOnlyFlagNotSupportedError;\n}(TwilioError));\nexports.RoomAudioOnlyFlagNotSupportedError = RoomAudioOnlyFlagNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53124, { value: RoomAudioOnlyFlagNotSupportedError });\n/**\n * @class RoomTrackKindNotSupportedError\n * @classdesc Raised whenever a participant tries to publish a track or connects with a track that is not supported by the group room.\n * @extends TwilioError\n * @property {number} code - 53125\n * @property {string} message - 'The track kind is not supported by the Room'\n */\nvar RoomTrackKindNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomTrackKindNotSupportedError, _super);\n    function RoomTrackKindNotSupportedError() {\n        var _this = _super.call(this, 53125, 'The track kind is not supported by the Room') || this;\n        Object.setPrototypeOf(_this, RoomTrackKindNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomTrackKindNotSupportedError;\n}(TwilioError));\nexports.RoomTrackKindNotSupportedError = RoomTrackKindNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53125, { value: RoomTrackKindNotSupportedError });\n/**\n * @class ParticipantIdentityInvalidError\n * @classdesc Raised whenever a Participant identity is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53200\n * @property {string} message - 'Participant identity is invalid'\n */\nvar ParticipantIdentityInvalidError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityInvalidError, _super);\n    function ParticipantIdentityInvalidError() {\n        var _this = _super.call(this, 53200, 'Participant identity is invalid') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityInvalidError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityInvalidError = ParticipantIdentityInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53200, { value: ParticipantIdentityInvalidError });\n/**\n * @class ParticipantIdentityTooLongError\n * @classdesc Raised whenever a Participant identity is too long.\n * @extends TwilioError\n * @property {number} code - 53201\n * @property {string} message - 'Participant identity is too long'\n */\nvar ParticipantIdentityTooLongError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityTooLongError, _super);\n    function ParticipantIdentityTooLongError() {\n        var _this = _super.call(this, 53201, 'Participant identity is too long') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityTooLongError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityTooLongError;\n}(TwilioError));\nexports.ParticipantIdentityTooLongError = ParticipantIdentityTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53201, { value: ParticipantIdentityTooLongError });\n/**\n * @class ParticipantIdentityCharsInvalidError\n * @classdesc Raised whenever a Participant identity contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53202\n * @property {string} message - 'Participant identity contains invalid characters'\n */\nvar ParticipantIdentityCharsInvalidError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityCharsInvalidError, _super);\n    function ParticipantIdentityCharsInvalidError() {\n        var _this = _super.call(this, 53202, 'Participant identity contains invalid characters') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityCharsInvalidError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityCharsInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityCharsInvalidError = ParticipantIdentityCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53202, { value: ParticipantIdentityCharsInvalidError });\n/**\n * @class ParticipantMaxTracksExceededError\n * @classdesc Raised whenever a Participant tries to publish a Track and the maximum number of published tracks allowed in the Room at the same time has been reached\n * @extends TwilioError\n * @property {number} code - 53203\n * @property {string} message - 'The maximum number of published tracks allowed in the Room at the same time has been reached'\n */\nvar ParticipantMaxTracksExceededError = /** @class */ (function (_super) {\n    __extends(ParticipantMaxTracksExceededError, _super);\n    function ParticipantMaxTracksExceededError() {\n        var _this = _super.call(this, 53203, 'The maximum number of published tracks allowed in the Room at the same time has been reached') || this;\n        Object.setPrototypeOf(_this, ParticipantMaxTracksExceededError.prototype);\n        return _this;\n    }\n    return ParticipantMaxTracksExceededError;\n}(TwilioError));\nexports.ParticipantMaxTracksExceededError = ParticipantMaxTracksExceededError;\nObject.defineProperty(TwilioErrorByCode, 53203, { value: ParticipantMaxTracksExceededError });\n/**\n * @class ParticipantNotFoundError\n * @classdesc Raised whenever attempting an operation on a non-existent Participant.\n * @extends TwilioError\n * @property {number} code - 53204\n * @property {string} message - 'Participant not found'\n */\nvar ParticipantNotFoundError = /** @class */ (function (_super) {\n    __extends(ParticipantNotFoundError, _super);\n    function ParticipantNotFoundError() {\n        var _this = _super.call(this, 53204, 'Participant not found') || this;\n        Object.setPrototypeOf(_this, ParticipantNotFoundError.prototype);\n        return _this;\n    }\n    return ParticipantNotFoundError;\n}(TwilioError));\nexports.ParticipantNotFoundError = ParticipantNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53204, { value: ParticipantNotFoundError });\n/**\n * @class ParticipantDuplicateIdentityError\n * @classdesc Raised by the server to the existing Participant when a new Participant joins a Room with the same identity as the existing Participant.\n * @extends TwilioError\n * @property {number} code - 53205\n * @property {string} message - 'Participant disconnected because of duplicate identity'\n */\nvar ParticipantDuplicateIdentityError = /** @class */ (function (_super) {\n    __extends(ParticipantDuplicateIdentityError, _super);\n    function ParticipantDuplicateIdentityError() {\n        var _this = _super.call(this, 53205, 'Participant disconnected because of duplicate identity') || this;\n        Object.setPrototypeOf(_this, ParticipantDuplicateIdentityError.prototype);\n        return _this;\n    }\n    return ParticipantDuplicateIdentityError;\n}(TwilioError));\nexports.ParticipantDuplicateIdentityError = ParticipantDuplicateIdentityError;\nObject.defineProperty(TwilioErrorByCode, 53205, { value: ParticipantDuplicateIdentityError });\n/**\n * @class TrackInvalidError\n * @classdesc Raised whenever a Track is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53300\n * @property {string} message - 'Track is invalid'\n */\nvar TrackInvalidError = /** @class */ (function (_super) {\n    __extends(TrackInvalidError, _super);\n    function TrackInvalidError() {\n        var _this = _super.call(this, 53300, 'Track is invalid') || this;\n        Object.setPrototypeOf(_this, TrackInvalidError.prototype);\n        return _this;\n    }\n    return TrackInvalidError;\n}(TwilioError));\nexports.TrackInvalidError = TrackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53300, { value: TrackInvalidError });\n/**\n * @class TrackNameInvalidError\n * @classdesc Raised whenever a Track name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53301\n * @property {string} message - 'Track name is invalid'\n */\nvar TrackNameInvalidError = /** @class */ (function (_super) {\n    __extends(TrackNameInvalidError, _super);\n    function TrackNameInvalidError() {\n        var _this = _super.call(this, 53301, 'Track name is invalid') || this;\n        Object.setPrototypeOf(_this, TrackNameInvalidError.prototype);\n        return _this;\n    }\n    return TrackNameInvalidError;\n}(TwilioError));\nexports.TrackNameInvalidError = TrackNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53301, { value: TrackNameInvalidError });\n/**\n * @class TrackNameTooLongError\n * @classdesc Raised whenever a Track name is too long.\n * @extends TwilioError\n * @property {number} code - 53302\n * @property {string} message - 'Track name is too long'\n */\nvar TrackNameTooLongError = /** @class */ (function (_super) {\n    __extends(TrackNameTooLongError, _super);\n    function TrackNameTooLongError() {\n        var _this = _super.call(this, 53302, 'Track name is too long') || this;\n        Object.setPrototypeOf(_this, TrackNameTooLongError.prototype);\n        return _this;\n    }\n    return TrackNameTooLongError;\n}(TwilioError));\nexports.TrackNameTooLongError = TrackNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53302, { value: TrackNameTooLongError });\n/**\n * @class TrackNameCharsInvalidError\n * @classdesc Raised whenever a Track name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53303\n * @property {string} message - 'Track name contains invalid characters'\n */\nvar TrackNameCharsInvalidError = /** @class */ (function (_super) {\n    __extends(TrackNameCharsInvalidError, _super);\n    function TrackNameCharsInvalidError() {\n        var _this = _super.call(this, 53303, 'Track name contains invalid characters') || this;\n        Object.setPrototypeOf(_this, TrackNameCharsInvalidError.prototype);\n        return _this;\n    }\n    return TrackNameCharsInvalidError;\n}(TwilioError));\nexports.TrackNameCharsInvalidError = TrackNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53303, { value: TrackNameCharsInvalidError });\n/**\n * @class TrackNameIsDuplicatedError\n * @classdesc Raised whenever a Participant is currently publishing a Track with the same name.\n * @extends TwilioError\n * @property {number} code - 53304\n * @property {string} message - 'Track name is duplicated'\n */\nvar TrackNameIsDuplicatedError = /** @class */ (function (_super) {\n    __extends(TrackNameIsDuplicatedError, _super);\n    function TrackNameIsDuplicatedError() {\n        var _this = _super.call(this, 53304, 'Track name is duplicated') || this;\n        Object.setPrototypeOf(_this, TrackNameIsDuplicatedError.prototype);\n        return _this;\n    }\n    return TrackNameIsDuplicatedError;\n}(TwilioError));\nexports.TrackNameIsDuplicatedError = TrackNameIsDuplicatedError;\nObject.defineProperty(TwilioErrorByCode, 53304, { value: TrackNameIsDuplicatedError });\n/**\n * @class TrackServerTrackCapacityReachedError\n * @classdesc The server does not have enough resources available to create a new Track.\n * @extends TwilioError\n * @property {number} code - 53305\n * @property {string} message - 'The server has reached capacity and cannot fulfill this request'\n */\nvar TrackServerTrackCapacityReachedError = /** @class */ (function (_super) {\n    __extends(TrackServerTrackCapacityReachedError, _super);\n    function TrackServerTrackCapacityReachedError() {\n        var _this = _super.call(this, 53305, 'The server has reached capacity and cannot fulfill this request') || this;\n        Object.setPrototypeOf(_this, TrackServerTrackCapacityReachedError.prototype);\n        return _this;\n    }\n    return TrackServerTrackCapacityReachedError;\n}(TwilioError));\nexports.TrackServerTrackCapacityReachedError = TrackServerTrackCapacityReachedError;\nObject.defineProperty(TwilioErrorByCode, 53305, { value: TrackServerTrackCapacityReachedError });\n/**\n * @class MediaClientLocalDescFailedError\n * @classdesc Raised whenever a Client is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53400\n * @property {string} message - 'Client is unable to create or apply a local media description'\n */\nvar MediaClientLocalDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaClientLocalDescFailedError, _super);\n    function MediaClientLocalDescFailedError() {\n        var _this = _super.call(this, 53400, 'Client is unable to create or apply a local media description') || this;\n        Object.setPrototypeOf(_this, MediaClientLocalDescFailedError.prototype);\n        return _this;\n    }\n    return MediaClientLocalDescFailedError;\n}(TwilioError));\nexports.MediaClientLocalDescFailedError = MediaClientLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53400, { value: MediaClientLocalDescFailedError });\n/**\n * @class MediaServerLocalDescFailedError\n * @classdesc Raised whenever the Server is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53401\n * @property {string} message - 'Server is unable to create or apply a local media description'\n */\nvar MediaServerLocalDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaServerLocalDescFailedError, _super);\n    function MediaServerLocalDescFailedError() {\n        var _this = _super.call(this, 53401, 'Server is unable to create or apply a local media description') || this;\n        Object.setPrototypeOf(_this, MediaServerLocalDescFailedError.prototype);\n        return _this;\n    }\n    return MediaServerLocalDescFailedError;\n}(TwilioError));\nexports.MediaServerLocalDescFailedError = MediaServerLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53401, { value: MediaServerLocalDescFailedError });\n/**\n * @class MediaClientRemoteDescFailedError\n * @classdesc Raised whenever the Client receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53402\n * @property {string} message - 'Client is unable to apply a remote media description'\n */\nvar MediaClientRemoteDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaClientRemoteDescFailedError, _super);\n    function MediaClientRemoteDescFailedError() {\n        var _this = _super.call(this, 53402, 'Client is unable to apply a remote media description') || this;\n        Object.setPrototypeOf(_this, MediaClientRemoteDescFailedError.prototype);\n        return _this;\n    }\n    return MediaClientRemoteDescFailedError;\n}(TwilioError));\nexports.MediaClientRemoteDescFailedError = MediaClientRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53402, { value: MediaClientRemoteDescFailedError });\n/**\n * @class MediaServerRemoteDescFailedError\n * @classdesc Raised whenever the Server receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53403\n * @property {string} message - 'Server is unable to apply a remote media description'\n */\nvar MediaServerRemoteDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaServerRemoteDescFailedError, _super);\n    function MediaServerRemoteDescFailedError() {\n        var _this = _super.call(this, 53403, 'Server is unable to apply a remote media description') || this;\n        Object.setPrototypeOf(_this, MediaServerRemoteDescFailedError.prototype);\n        return _this;\n    }\n    return MediaServerRemoteDescFailedError;\n}(TwilioError));\nexports.MediaServerRemoteDescFailedError = MediaServerRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53403, { value: MediaServerRemoteDescFailedError });\n/**\n * @class MediaNoSupportedCodecError\n * @classdesc Raised whenever the intersection of codecs supported by the Client and the Server (or, in peer-to-peer, the Client and another Participant) is empty.\n * @extends TwilioError\n * @property {number} code - 53404\n * @property {string} message - 'No supported codec'\n */\nvar MediaNoSupportedCodecError = /** @class */ (function (_super) {\n    __extends(MediaNoSupportedCodecError, _super);\n    function MediaNoSupportedCodecError() {\n        var _this = _super.call(this, 53404, 'No supported codec') || this;\n        Object.setPrototypeOf(_this, MediaNoSupportedCodecError.prototype);\n        return _this;\n    }\n    return MediaNoSupportedCodecError;\n}(TwilioError));\nexports.MediaNoSupportedCodecError = MediaNoSupportedCodecError;\nObject.defineProperty(TwilioErrorByCode, 53404, { value: MediaNoSupportedCodecError });\n/**\n * @class MediaConnectionError\n * @classdesc Raised by the Client or Server whenever a media connection fails or raised by the Client whenever it detects that media has stopped flowing.\n * @extends TwilioError\n * @property {number} code - 53405\n * @property {string} message - 'Media connection failed or Media activity ceased'\n */\nvar MediaConnectionError = /** @class */ (function (_super) {\n    __extends(MediaConnectionError, _super);\n    function MediaConnectionError() {\n        var _this = _super.call(this, 53405, 'Media connection failed or Media activity ceased') || this;\n        Object.setPrototypeOf(_this, MediaConnectionError.prototype);\n        return _this;\n    }\n    return MediaConnectionError;\n}(TwilioError));\nexports.MediaConnectionError = MediaConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53405, { value: MediaConnectionError });\n/**\n * @class MediaDTLSTransportFailedError\n * @classdesc There was a problem while negotiating with the remote DTLS peer. Therefore the Participant will not be able to publish or subscribe to Tracks.\n * @extends TwilioError\n * @property {number} code - 53407\n * @property {string} message - 'Media connection failed due to DTLS handshake failure'\n */\nvar MediaDTLSTransportFailedError = /** @class */ (function (_super) {\n    __extends(MediaDTLSTransportFailedError, _super);\n    function MediaDTLSTransportFailedError() {\n        var _this = _super.call(this, 53407, 'Media connection failed due to DTLS handshake failure') || this;\n        Object.setPrototypeOf(_this, MediaDTLSTransportFailedError.prototype);\n        return _this;\n    }\n    return MediaDTLSTransportFailedError;\n}(TwilioError));\nexports.MediaDTLSTransportFailedError = MediaDTLSTransportFailedError;\nObject.defineProperty(TwilioErrorByCode, 53407, { value: MediaDTLSTransportFailedError });\n/**\n * @class ConfigurationAcquireFailedError\n * @classdesc Raised whenever the Client is unable to acquire configuration information from the Server.\n * @extends TwilioError\n * @property {number} code - 53500\n * @property {string} message - 'Unable to acquire configuration'\n */\nvar ConfigurationAcquireFailedError = /** @class */ (function (_super) {\n    __extends(ConfigurationAcquireFailedError, _super);\n    function ConfigurationAcquireFailedError() {\n        var _this = _super.call(this, 53500, 'Unable to acquire configuration') || this;\n        Object.setPrototypeOf(_this, ConfigurationAcquireFailedError.prototype);\n        return _this;\n    }\n    return ConfigurationAcquireFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireFailedError = ConfigurationAcquireFailedError;\nObject.defineProperty(TwilioErrorByCode, 53500, { value: ConfigurationAcquireFailedError });\n/**\n * @class ConfigurationAcquireTurnFailedError\n * @classdesc Raised whenever the Server is unable to return TURN credentials to the Client\n * @extends TwilioError\n * @property {number} code - 53501\n * @property {string} message - 'Unable to acquire TURN credentials'\n */\nvar ConfigurationAcquireTurnFailedError = /** @class */ (function (_super) {\n    __extends(ConfigurationAcquireTurnFailedError, _super);\n    function ConfigurationAcquireTurnFailedError() {\n        var _this = _super.call(this, 53501, 'Unable to acquire TURN credentials') || this;\n        Object.setPrototypeOf(_this, ConfigurationAcquireTurnFailedError.prototype);\n        return _this;\n    }\n    return ConfigurationAcquireTurnFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireTurnFailedError = ConfigurationAcquireTurnFailedError;\nObject.defineProperty(TwilioErrorByCode, 53501, { value: ConfigurationAcquireTurnFailedError });\n//# sourceMappingURL=twilio-video-errors.js.map","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildWebGL2Pipeline = void 0;\n/**\n * This pipeline is based on Volcomix's react project.\n * https://github.com/Volcomix/virtual-background\n * It was modified and converted into a module to work with\n * Twilio's Video Processor\n */\nvar webgl2Pipeline_1 = require(\"./pipelines/webgl2Pipeline\");\nObject.defineProperty(exports, \"buildWebGL2Pipeline\", { enumerable: true, get: function () { return webgl2Pipeline_1.buildWebGL2Pipeline; } });\n//# sourceMappingURL=index.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\n/**\n * Create a random {@link SSRC}.\n * @returns {SSRC}\n */\nfunction createSSRC() {\n    var ssrcMax = 0xffffffff;\n    return String(Math.floor(Math.random() * ssrcMax));\n}\n/**\n * @property {string} cName\n * @property {boolean} isSimulcastEnabled\n * @property {Map<RtxSSRC, PrimarySSRC>} rtxPairs\n * @property {Set<PrimarySSRC>} primarySSRCs\n * @property {string} streamId\n * @property {Track.ID} trackId\n */\nvar TrackAttributes = /** @class */ (function () {\n    /**\n     * Construct a {@link MediaStreamTrack} attribute store.\n     * @param {Track.ID} trackId - The MediaStreamTrack ID\n     * @param {MediaStreamID} streamId - The MediaStream ID\n     * @param {string} cName - The MediaStream cname\n     */\n    function TrackAttributes(trackId, streamId, cName) {\n        Object.defineProperties(this, {\n            cName: {\n                enumerable: true,\n                value: cName\n            },\n            isSimulcastEnabled: {\n                enumerable: true,\n                value: false,\n                writable: true\n            },\n            primarySSRCs: {\n                enumerable: true,\n                value: new Set()\n            },\n            rtxPairs: {\n                enumerable: true,\n                value: new Map()\n            },\n            streamId: {\n                enumerable: true,\n                value: streamId\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId\n            }\n        });\n    }\n    /**\n     * Add {@link SimSSRC}s to the {@link TrackAttributes}.\n     * @returns {void}\n     */\n    TrackAttributes.prototype.addSimulcastSSRCs = function () {\n        if (this.isSimulcastEnabled) {\n            return;\n        }\n        var simulcastSSRCs = [createSSRC(), createSSRC()];\n        simulcastSSRCs.forEach(function (ssrc) {\n            this.primarySSRCs.add(ssrc);\n        }, this);\n        if (this.rtxPairs.size) {\n            simulcastSSRCs.forEach(function (ssrc) {\n                this.rtxPairs.set(createSSRC(), ssrc);\n            }, this);\n        }\n    };\n    /**\n     * Add the given {@link PrimarySSRC} or {@link RtxSSRC} to the {@link TrackAttributes}\n     * and update the \"isSimulcastEnabled\" flag if it is also a {@link SimSSRC}.\n     * @param {SSRC} ssrc - The {@link SSRC} to be added\n     * @param {?PrimarySSRC} primarySSRC - The {@link PrimarySSRC}; if the given\n     *   {@link SSRC} itself is the {@link PrimarySSRC}, then this is set to null\n     * @param {boolean} isSimSSRC - true if the given {@link SSRC} is a\n     *   {@link SimSSRC}; false otherwise\n     * @returns {void}\n     */\n    TrackAttributes.prototype.addSSRC = function (ssrc, primarySSRC, isSimSSRC) {\n        if (primarySSRC) {\n            this.rtxPairs.set(ssrc, primarySSRC);\n        }\n        else {\n            this.primarySSRCs.add(ssrc);\n        }\n        this.isSimulcastEnabled = this.isSimulcastEnabled || isSimSSRC;\n    };\n    /**\n     * Construct the SDP lines for the {@link TrackAttributes}.\n     * @param {boolean} [excludeRtx=false]\n     * @returns {Array<string>} Array of SDP lines\n     */\n    TrackAttributes.prototype.toSdpLines = function (excludeRtx) {\n        var _this = this;\n        var rtxPairs = excludeRtx\n            ? []\n            : Array.from(this.rtxPairs.entries()).map(function (rtxPair) { return rtxPair.reverse(); });\n        var simSSRCs = Array.from(this.primarySSRCs.values());\n        var ssrcs = rtxPairs.length ? flatMap(rtxPairs) : simSSRCs;\n        var attrLines = flatMap(ssrcs, function (ssrc) { return [\n            \"a=ssrc:\" + ssrc + \" cname:\" + _this.cName,\n            \"a=ssrc:\" + ssrc + \" msid:\" + _this.streamId + \" \" + _this.trackId\n        ]; });\n        var rtxPairLines = rtxPairs.map(function (rtxPair) { return \"a=ssrc-group:FID \" + rtxPair.join(' '); });\n        var simGroupLines = [\n            \"a=ssrc-group:SIM \" + simSSRCs.join(' ')\n        ];\n        return rtxPairLines.concat(attrLines).concat(simGroupLines);\n    };\n    return TrackAttributes;\n}());\n/**\n * Get the matches for a given RegEx pattern.\n * @param {string} section - SDP media section\n * @param {string} pattern - RegEx pattern\n * @returns {Array<Array<string>>} - Array of pattern matches\n */\nfunction getMatches(section, pattern) {\n    var matches = section.match(new RegExp(pattern, 'gm')) || [];\n    return matches.map(function (match) {\n        var matches = match.match(new RegExp(pattern)) || [];\n        return matches.slice(1);\n    });\n}\n/**\n * Get the {@link SimSSRC}s that belong to a simulcast group.\n * @param {string} section - SDP media section\n * @returns {Set<SimSSRC>} Set of simulcast {@link SSRC}s\n */\nfunction getSimulcastSSRCs(section) {\n    var simGroupPattern = '^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$';\n    return new Set(flatMap(getMatches(section, simGroupPattern)));\n}\n/**\n * Get the value of the given attribute for an SSRC.\n * @param {string} section - SDP media section\n * @param {SSRC} ssrc - {@link SSRC} whose attribute's value is to be determinded\n * @param {string} attribute - {@link SSRC} attribute name\n * @param {string} - {@link SSRC} attribute value\n */\nfunction getSSRCAttribute(section, ssrc, attribute) {\n    var pattern = \"a=ssrc:\" + ssrc + \" \" + attribute + \":(.+)\";\n    return section.match(new RegExp(pattern))[1];\n}\n/**\n * Create a Map of {@link PrimarySSRC}s and their {@link RtxSSRC}s.\n * @param {string} section - SDP media section\n * @returns {Map<RtxSSRC, PrimarySSRC>} - Map of {@link RtxSSRC}s and their\n *   corresponding {@link PrimarySSRC}s\n */\nfunction getSSRCRtxPairs(section) {\n    var rtxPairPattern = '^a=ssrc-group:FID ([0-9]+) ([0-9]+)$';\n    return new Map(getMatches(section, rtxPairPattern).map(function (pair) { return pair.reverse(); }));\n}\n/**\n * Create SSRC attribute tuples.\n * @param {string} section\n * @returns {Array<[SSRC, MediaStreamID, Track.ID]>}\n */\nfunction createSSRCAttributeTuples(section) {\n    var _a = __read(flatMap(getMatches(section, '^a=msid:(.+) (.+)$')), 2), streamId = _a[0], trackId = _a[1];\n    var ssrcs = flatMap(getMatches(section, '^a=ssrc:(.+) cname:.+$'));\n    return ssrcs.map(function (ssrc) { return [ssrc, streamId, trackId]; });\n}\n/**\n * Create a Map of MediaStreamTrack IDs and their {@link TrackAttributes}.\n * @param {string} section - SDP media section\n * @returns {Map<Track.ID, TrackAttributes>}\n */\nfunction createTrackIdsToAttributes(section) {\n    var simSSRCs = getSimulcastSSRCs(section);\n    var rtxPairs = getSSRCRtxPairs(section);\n    var ssrcAttrTuples = createSSRCAttributeTuples(section);\n    return ssrcAttrTuples.reduce(function (trackIdsToSSRCs, tuple) {\n        var ssrc = tuple[0];\n        var streamId = tuple[1];\n        var trackId = tuple[2];\n        var trackAttributes = trackIdsToSSRCs.get(trackId) || new TrackAttributes(trackId, streamId, getSSRCAttribute(section, ssrc, 'cname'));\n        var primarySSRC = rtxPairs.get(ssrc) || null;\n        trackAttributes.addSSRC(ssrc, primarySSRC, simSSRCs.has(ssrc));\n        return trackIdsToSSRCs.set(trackId, trackAttributes);\n    }, new Map());\n}\n/**\n * Apply simulcast settings to the given SDP media section.\n * @param {string} section - SDP media section\n * @param {Map<Track.ID, TrackAttributes>} trackIdsToAttributes - Existing\n *   map which will be updated for new MediaStreamTrack IDs\n * @returns {string} - The transformed SDP media section\n */\nfunction setSimulcastInMediaSection(section, trackIdsToAttributes) {\n    var newTrackIdsToAttributes = createTrackIdsToAttributes(section);\n    var newTrackIds = Array.from(newTrackIdsToAttributes.keys());\n    var trackIds = Array.from(trackIdsToAttributes.keys());\n    var trackIdsToAdd = difference(newTrackIds, trackIds);\n    var trackIdsToIgnore = difference(trackIds, newTrackIds);\n    // Update \"trackIdsToAttributes\" with TrackAttributes for new\n    // MediaStreamTrack IDs.\n    var trackAttributesToAdd = flatMap(trackIdsToAdd, function (trackId) { return newTrackIdsToAttributes.get(trackId); });\n    trackAttributesToAdd.forEach(function (trackAttributes) {\n        trackAttributes.addSimulcastSSRCs();\n        trackIdsToAttributes.set(trackAttributes.trackId, trackAttributes);\n    });\n    // Get the SDP lines of the relevant MediaStreamTrack IDs from\n    // \"trackIdsToAttributes\".\n    trackIds = Array.from(trackIdsToAttributes.keys());\n    var relevantTrackIds = difference(trackIds, trackIdsToIgnore);\n    var relevantTrackAttributes = flatMap(relevantTrackIds, function (trackId) { return trackIdsToAttributes.get(trackId); });\n    var excludeRtx = !section.match(/a=rtpmap:[0-9]+ rtx/);\n    var relevantSdpLines = flatMap(relevantTrackAttributes, function (trackAttributes) { return trackAttributes.toSdpLines(excludeRtx); });\n    // Add the simulcast SSRC SDP lines to the media section. The Set ensures\n    // that the duplicates of the SSRC SDP lines that are in both \"section\" and\n    // \"relevantSdpLines\" are removed.\n    var sectionLines = flatMap(new Set(section.split('\\r\\n').concat(relevantSdpLines)));\n    var xGoogleFlagConference = 'a=x-google-flag:conference';\n    if (!section.match(xGoogleFlagConference)) {\n        sectionLines.push(xGoogleFlagConference);\n    }\n    return sectionLines.join('\\r\\n');\n}\n/**\n * String representing a MediaStream ID.\n * @typedef {string} MediaStreamID\n */\n/**\n * String representing the SSRC of a MediaStreamTrack.\n * @typedef {string} SSRC\n */\n/**\n * Primary SSRC.\n * @typedef {SSRC} PrimarySSRC\n */\n/**\n * Retransmission SSRC.\n * @typedef {SSRC} RtxSSRC\n */\n/**\n * Simulcast SSRC.\n * @typedef {SSRC} SimSSRC\n */\nmodule.exports = setSimulcastInMediaSection;\n//# sourceMappingURL=simulcast.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n  findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n    return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLastIndex');\n","\"use strict\";\n/**\n * @internalapi\n * @module vanilla\n */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common\");\nvar utils_1 = require(\"./utils\");\n/** A base `LocationServices` */\nvar BaseLocationServices = /** @class */ (function () {\n    function BaseLocationServices(router, fireAfterUpdate) {\n        var _this = this;\n        this.fireAfterUpdate = fireAfterUpdate;\n        this._listeners = [];\n        this._listener = function (evt) { return _this._listeners.forEach(function (cb) { return cb(evt); }); };\n        this.hash = function () { return utils_1.parseUrl(_this._get()).hash; };\n        this.path = function () { return utils_1.parseUrl(_this._get()).path; };\n        this.search = function () { return utils_1.getParams(utils_1.parseUrl(_this._get()).search); };\n        this._location = common_1.root.location;\n        this._history = common_1.root.history;\n    }\n    BaseLocationServices.prototype.url = function (url, replace) {\n        if (replace === void 0) { replace = true; }\n        if (common_1.isDefined(url) && url !== this._get()) {\n            this._set(null, null, url, replace);\n            if (this.fireAfterUpdate) {\n                this._listeners.forEach(function (cb) { return cb({ url: url }); });\n            }\n        }\n        return utils_1.buildUrl(this);\n    };\n    BaseLocationServices.prototype.onChange = function (cb) {\n        var _this = this;\n        this._listeners.push(cb);\n        return function () { return common_1.removeFrom(_this._listeners, cb); };\n    };\n    BaseLocationServices.prototype.dispose = function (router) {\n        common_1.deregAll(this._listeners);\n    };\n    return BaseLocationServices;\n}());\nexports.BaseLocationServices = BaseLocationServices;\n//# sourceMappingURL=baseLocationService.js.map","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  unshift: function unshift(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    if (argCount) {\n      doesNotExceedSafeInteger(len + argCount);\n      var k = len;\n      while (k--) {\n        var to = k + argCount;\n        if (k in O) O[to] = O[k];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (var j = 0; j < argCount; j++) {\n        O[j] = arguments[j];\n      }\n    } return setArrayLength(O, len + argCount);\n  }\n});\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module state\n */\n/** */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar queue_1 = require(\"../common/queue\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar pathUtils_1 = require(\"../path/pathUtils\");\nvar pathNode_1 = require(\"../path/pathNode\");\nvar transitionService_1 = require(\"../transition/transitionService\");\nvar rejectFactory_1 = require(\"../transition/rejectFactory\");\nvar targetState_1 = require(\"./targetState\");\nvar param_1 = require(\"../params/param\");\nvar glob_1 = require(\"../common/glob\");\nvar resolveContext_1 = require(\"../resolve/resolveContext\");\nvar lazyLoad_1 = require(\"../hooks/lazyLoad\");\nvar hof_1 = require(\"../common/hof\");\n/**\n * Provides state related service functions\n *\n * This class provides services related to ui-router states.\n * An instance of this class is located on the global [[UIRouter]] object.\n */\nvar StateService = /** @class */ (function () {\n    /** @internalapi */\n    function StateService(router) {\n        this.router = router;\n        /** @internalapi */\n        this.invalidCallbacks = [];\n        /** @hidden */\n        this._defaultErrorHandler = function $defaultErrorHandler($error$) {\n            if ($error$ instanceof Error && $error$.stack) {\n                console.error($error$);\n                console.error($error$.stack);\n            }\n            else if ($error$ instanceof rejectFactory_1.Rejection) {\n                console.error($error$.toString());\n                if ($error$.detail && $error$.detail.stack)\n                    console.error($error$.detail.stack);\n            }\n            else {\n                console.error($error$);\n            }\n        };\n        var getters = ['current', '$current', 'params', 'transition'];\n        var boundFns = Object.keys(StateService.prototype).filter(hof_1.not(common_1.inArray(getters)));\n        common_1.createProxyFunctions(hof_1.val(StateService.prototype), this, hof_1.val(this), boundFns);\n    }\n    Object.defineProperty(StateService.prototype, \"transition\", {\n        /**\n         * The [[Transition]] currently in progress (or null)\n         *\n         * This is a passthrough through to [[UIRouterGlobals.transition]]\n         */\n        get: function () { return this.router.globals.transition; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StateService.prototype, \"params\", {\n        /**\n         * The latest successful state parameters\n         *\n         * This is a passthrough through to [[UIRouterGlobals.params]]\n         */\n        get: function () { return this.router.globals.params; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StateService.prototype, \"current\", {\n        /**\n         * The current [[StateDeclaration]]\n         *\n         * This is a passthrough through to [[UIRouterGlobals.current]]\n         */\n        get: function () { return this.router.globals.current; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StateService.prototype, \"$current\", {\n        /**\n         * The current [[StateObject]]\n         *\n         * This is a passthrough through to [[UIRouterGlobals.$current]]\n         */\n        get: function () { return this.router.globals.$current; },\n        enumerable: true,\n        configurable: true\n    });\n    /** @internalapi */\n    StateService.prototype.dispose = function () {\n        this.defaultErrorHandler(common_1.noop);\n        this.invalidCallbacks = [];\n    };\n    /**\n     * Handler for when [[transitionTo]] is called with an invalid state.\n     *\n     * Invokes the [[onInvalid]] callbacks, in natural order.\n     * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n     * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n     *\n     * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n     *\n     * @internalapi\n     */\n    StateService.prototype._handleInvalidTargetState = function (fromPath, toState) {\n        var _this = this;\n        var fromState = pathUtils_1.PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n        var globals = this.router.globals;\n        var latestThing = function () { return globals.transitionHistory.peekTail(); };\n        var latest = latestThing();\n        var callbackQueue = new queue_1.Queue(this.invalidCallbacks.slice());\n        var injector = new resolveContext_1.ResolveContext(fromPath).injector();\n        var checkForRedirect = function (result) {\n            if (!(result instanceof targetState_1.TargetState)) {\n                return;\n            }\n            var target = result;\n            // Recreate the TargetState, in case the state is now defined.\n            target = _this.target(target.identifier(), target.params(), target.options());\n            if (!target.valid()) {\n                return rejectFactory_1.Rejection.invalid(target.error()).toPromise();\n            }\n            if (latestThing() !== latest) {\n                return rejectFactory_1.Rejection.superseded().toPromise();\n            }\n            return _this.transitionTo(target.identifier(), target.params(), target.options());\n        };\n        function invokeNextCallback() {\n            var nextCallback = callbackQueue.dequeue();\n            if (nextCallback === undefined)\n                return rejectFactory_1.Rejection.invalid(toState.error()).toPromise();\n            var callbackResult = coreservices_1.services.$q.when(nextCallback(toState, fromState, injector));\n            return callbackResult.then(checkForRedirect).then(function (result) { return result || invokeNextCallback(); });\n        }\n        return invokeNextCallback();\n    };\n    /**\n     * Registers an Invalid State handler\n     *\n     * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n     * has been called with an invalid state reference parameter\n     *\n     * Example:\n     * ```js\n     * stateService.onInvalid(function(to, from, injector) {\n     *   if (to.name() === 'foo') {\n     *     let lazyLoader = injector.get('LazyLoadService');\n     *     return lazyLoader.load('foo')\n     *         .then(() => stateService.target('foo'));\n     *   }\n     * });\n     * ```\n     *\n     * @param {function} callback invoked when the toState is invalid\n     *   This function receives the (invalid) toState, the fromState, and an injector.\n     *   The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n     *   If one is returned, it is treated as a redirect.\n     *\n     * @returns a function which deregisters the callback\n     */\n    StateService.prototype.onInvalid = function (callback) {\n        this.invalidCallbacks.push(callback);\n        return function deregisterListener() {\n            common_1.removeFrom(this.invalidCallbacks)(callback);\n        }.bind(this);\n    };\n    /**\n     * Reloads the current state\n     *\n     * A method that force reloads the current state, or a partial state hierarchy.\n     * All resolves are re-resolved, and components reinstantiated.\n     *\n     * #### Example:\n     * ```js\n     * let app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     $state.reload();\n     *   }\n     * });\n     * ```\n     *\n     * Note: `reload()` is just an alias for:\n     *\n     * ```js\n     * $state.transitionTo($state.current, $state.params, {\n     *   reload: true, inherit: false\n     * });\n     * ```\n     *\n     * @param reloadState A state name or a state object.\n     *    If present, this state and all its children will be reloaded, but ancestors will not reload.\n     *\n     * #### Example:\n     * ```js\n     * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n     * //and current state is 'contacts.detail.item'\n     * let app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     //will reload 'contact.detail' and nested 'contact.detail.item' states\n     *     $state.reload('contact.detail');\n     *   }\n     * });\n     * ```\n     *\n     * @returns A promise representing the state of the new transition. See [[StateService.go]]\n     */\n    StateService.prototype.reload = function (reloadState) {\n        return this.transitionTo(this.current, this.params, {\n            reload: predicates_1.isDefined(reloadState) ? reloadState : true,\n            inherit: false,\n            notify: false,\n        });\n    };\n    /**\n     * Transition to a different state and/or parameters\n     *\n     * Convenience method for transitioning to a new state.\n     *\n     * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n     * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n     * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n     * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n     * inherit from the current parameter values (because of `inherit: true`).\n     *\n     * #### Example:\n     * ```js\n     * let app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.go('contact.detail');\n     *   };\n     * });\n     * ```\n     *\n     * @param to Absolute state name, state object, or relative state path (relative to current state).\n     *\n     * Some examples:\n     *\n     * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n     * - `$state.go('^')` - will go to the parent state\n     * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n     * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n     *\n     * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n     *\n     *    Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n     *    This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n     *\n     * @param options Transition options\n     *\n     * @returns {promise} A promise representing the state of the new transition.\n     */\n    StateService.prototype.go = function (to, params, options) {\n        var defautGoOpts = { relative: this.$current, inherit: true };\n        var transOpts = common_1.defaults(options, defautGoOpts, transitionService_1.defaultTransOpts);\n        return this.transitionTo(to, params, transOpts);\n    };\n    /**\n     * Creates a [[TargetState]]\n     *\n     * This is a factory method for creating a TargetState\n     *\n     * This may be returned from a Transition Hook to redirect a transition, for example.\n     */\n    StateService.prototype.target = function (identifier, params, options) {\n        if (options === void 0) { options = {}; }\n        // If we're reloading, find the state object to reload from\n        if (predicates_1.isObject(options.reload) && !options.reload.name)\n            throw new Error('Invalid reload state object');\n        var reg = this.router.stateRegistry;\n        options.reloadState = options.reload === true ? reg.root() : reg.matcher.find(options.reload, options.relative);\n        if (options.reload && !options.reloadState)\n            throw new Error(\"No such reload state '\" + (predicates_1.isString(options.reload) ? options.reload : options.reload.name) + \"'\");\n        return new targetState_1.TargetState(this.router.stateRegistry, identifier, params, options);\n    };\n    StateService.prototype.getCurrentPath = function () {\n        var _this = this;\n        var globals = this.router.globals;\n        var latestSuccess = globals.successfulTransitions.peekTail();\n        var rootPath = function () { return [new pathNode_1.PathNode(_this.router.stateRegistry.root())]; };\n        return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n    };\n    /**\n     * Low-level method for transitioning to a new state.\n     *\n     * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n     *\n     * #### Example:\n     * ```js\n     * let app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.transitionTo('contact.detail');\n     *   };\n     * });\n     * ```\n     *\n     * @param to State name or state object.\n     * @param toParams A map of the parameters that will be sent to the state,\n     *      will populate $stateParams.\n     * @param options Transition options\n     *\n     * @returns A promise representing the state of the new transition. See [[go]]\n     */\n    StateService.prototype.transitionTo = function (to, toParams, options) {\n        var _this = this;\n        if (toParams === void 0) { toParams = {}; }\n        if (options === void 0) { options = {}; }\n        var router = this.router;\n        var globals = router.globals;\n        options = common_1.defaults(options, transitionService_1.defaultTransOpts);\n        var getCurrent = function () {\n            return globals.transition;\n        };\n        options = common_1.extend(options, { current: getCurrent });\n        var ref = this.target(to, toParams, options);\n        var currentPath = this.getCurrentPath();\n        if (!ref.exists())\n            return this._handleInvalidTargetState(currentPath, ref);\n        if (!ref.valid())\n            return common_1.silentRejection(ref.error());\n        /**\n         * Special handling for Ignored, Aborted, and Redirected transitions\n         *\n         * The semantics for the transition.run() promise and the StateService.transitionTo()\n         * promise differ. For instance, the run() promise may be rejected because it was\n         * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n         * no error occurred.  Likewise, the transition.run() promise may be rejected because of\n         * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n         */\n        var rejectedTransitionHandler = function (trans) { return function (error) {\n            if (error instanceof rejectFactory_1.Rejection) {\n                var isLatest = router.globals.lastStartedTransitionId === trans.$id;\n                if (error.type === rejectFactory_1.RejectType.IGNORED) {\n                    isLatest && router.urlRouter.update();\n                    // Consider ignored `Transition.run()` as a successful `transitionTo`\n                    return coreservices_1.services.$q.when(globals.current);\n                }\n                var detail = error.detail;\n                if (error.type === rejectFactory_1.RejectType.SUPERSEDED && error.redirected && detail instanceof targetState_1.TargetState) {\n                    // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n                    // by returning the promise for the new (redirect) `Transition.run()`.\n                    var redirect = trans.redirect(detail);\n                    return redirect.run().catch(rejectedTransitionHandler(redirect));\n                }\n                if (error.type === rejectFactory_1.RejectType.ABORTED) {\n                    isLatest && router.urlRouter.update();\n                    return coreservices_1.services.$q.reject(error);\n                }\n            }\n            var errorHandler = _this.defaultErrorHandler();\n            errorHandler(error);\n            return coreservices_1.services.$q.reject(error);\n        }; };\n        var transition = this.router.transitionService.create(currentPath, ref);\n        var transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n        common_1.silenceUncaughtInPromise(transitionToPromise); // issue #2676\n        // Return a promise for the transition, which also has the transition object on it.\n        return common_1.extend(transitionToPromise, { transition: transition });\n    };\n    /**\n     * Checks if the current state *is* the provided state\n     *\n     * Similar to [[includes]] but only checks for the full state name.\n     * If params is supplied then it will be tested for strict equality against the current\n     * active params object, so all params must match with none missing and no extras.\n     *\n     * #### Example:\n     * ```js\n     * $state.$current.name = 'contacts.details.item';\n     *\n     * // absolute name\n     * $state.is('contact.details.item'); // returns true\n     * $state.is(contactDetailItemStateObject); // returns true\n     * ```\n     *\n     * // relative name (. and ^), typically from a template\n     * // E.g. from the 'contacts.details' template\n     * ```html\n     * <div ng-class=\"{highlighted: $state.is('.item')}\">Item</div>\n     * ```\n     *\n     * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n     * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n     * to test against the current active state.\n     * @param options An options object. The options are:\n     *   - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n     *     test relative to `options.relative` state (or name).\n     *\n     * @returns Returns true if it is the state.\n     */\n    StateService.prototype.is = function (stateOrName, params, options) {\n        options = common_1.defaults(options, { relative: this.$current });\n        var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n        if (!predicates_1.isDefined(state))\n            return undefined;\n        if (this.$current !== state)\n            return false;\n        if (!params)\n            return true;\n        var schema = state.parameters({ inherit: true, matchingKeys: params });\n        return param_1.Param.equals(schema, param_1.Param.values(schema, params), this.params);\n    };\n    /**\n     * Checks if the current state *includes* the provided state\n     *\n     * A method to determine if the current active state is equal to or is the child of the\n     * state stateName. If any params are passed then they will be tested for a match as well.\n     * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n     *\n     * #### Example when `$state.$current.name === 'contacts.details.item'`\n     * ```js\n     * // Using partial names\n     * $state.includes(\"contacts\"); // returns true\n     * $state.includes(\"contacts.details\"); // returns true\n     * $state.includes(\"contacts.details.item\"); // returns true\n     * $state.includes(\"contacts.list\"); // returns false\n     * $state.includes(\"about\"); // returns false\n     * ```\n     *\n     * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n     * ```js\n     * $state.includes(\"*.details.*.*\"); // returns true\n     * $state.includes(\"*.details.**\"); // returns true\n     * $state.includes(\"**.item.**\"); // returns true\n     * $state.includes(\"*.details.item.url\"); // returns true\n     * $state.includes(\"*.details.*.url\"); // returns true\n     * $state.includes(\"*.details.*\"); // returns false\n     * $state.includes(\"item.**\"); // returns false\n     * ```\n     *\n     * @param stateOrName A partial name, relative name, glob pattern,\n     *   or state object to be searched for within the current state name.\n     * @param params A param object, e.g. `{sectionId: section.id}`,\n     *   that you'd like to test against the current active state.\n     * @param options An options object. The options are:\n     *   - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n     *     test relative to `options.relative` state (or name).\n     *\n     * @returns {boolean} Returns true if it does include the state\n     */\n    StateService.prototype.includes = function (stateOrName, params, options) {\n        options = common_1.defaults(options, { relative: this.$current });\n        var glob = predicates_1.isString(stateOrName) && glob_1.Glob.fromString(stateOrName);\n        if (glob) {\n            if (!glob.matches(this.$current.name))\n                return false;\n            stateOrName = this.$current.name;\n        }\n        var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n        if (!predicates_1.isDefined(state))\n            return undefined;\n        if (!predicates_1.isDefined(include[state.name]))\n            return false;\n        if (!params)\n            return true;\n        var schema = state.parameters({ inherit: true, matchingKeys: params });\n        return param_1.Param.equals(schema, param_1.Param.values(schema, params), this.params);\n    };\n    /**\n     * Generates a URL for a state and parameters\n     *\n     * Returns the url for the given state populated with the given params.\n     *\n     * #### Example:\n     * ```js\n     * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n     * ```\n     *\n     * @param stateOrName The state name or state object you'd like to generate a url from.\n     * @param params An object of parameter values to fill the state's required parameters.\n     * @param options Options object. The options are:\n     *\n     * @returns {string} compiled state url\n     */\n    StateService.prototype.href = function (stateOrName, params, options) {\n        var defaultHrefOpts = {\n            lossy: true,\n            inherit: true,\n            absolute: false,\n            relative: this.$current,\n        };\n        options = common_1.defaults(options, defaultHrefOpts);\n        params = params || {};\n        var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n        if (!predicates_1.isDefined(state))\n            return null;\n        if (options.inherit)\n            params = this.params.$inherit(params, this.$current, state);\n        var nav = (state && options.lossy) ? state.navigable : state;\n        if (!nav || nav.url === undefined || nav.url === null) {\n            return null;\n        }\n        return this.router.urlRouter.href(nav.url, params, {\n            absolute: options.absolute,\n        });\n    };\n    /**\n     * Sets or gets the default [[transitionTo]] error handler.\n     *\n     * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n     * This includes errors caused by resolves and transition hooks.\n     *\n     * Note:\n     * This handler does not receive certain Transition rejections.\n     * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n     *\n     * The built-in default error handler logs the error to the console.\n     *\n     * You can provide your own custom handler.\n     *\n     * #### Example:\n     * ```js\n     * stateService.defaultErrorHandler(function() {\n     *   // Do not log transitionTo errors\n     * });\n     * ```\n     *\n     * @param handler a global error handler function\n     * @returns the current global error handler\n     */\n    StateService.prototype.defaultErrorHandler = function (handler) {\n        return this._defaultErrorHandler = handler || this._defaultErrorHandler;\n    };\n    StateService.prototype.get = function (stateOrName, base) {\n        var reg = this.router.stateRegistry;\n        if (arguments.length === 0)\n            return reg.get();\n        return reg.get(stateOrName, base || this.$current);\n    };\n    /**\n     * Lazy loads a state\n     *\n     * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n     *\n     * @param stateOrName the state that should be lazy loaded\n     * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n     * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n     * This noop transition is not actually run.\n     *\n     * @returns a promise to lazy load\n     */\n    StateService.prototype.lazyLoad = function (stateOrName, transition) {\n        var state = this.get(stateOrName);\n        if (!state || !state.lazyLoad)\n            throw new Error('Can not lazy load ' + stateOrName);\n        var currentPath = this.getCurrentPath();\n        var target = pathUtils_1.PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n        transition = transition || this.router.transitionService.create(currentPath, target);\n        return lazyLoad_1.lazyLoadState(transition, state);\n    };\n    return StateService;\n}());\nexports.StateService = StateService;\n//# sourceMappingURL=stateService.js.map","'use strict';\nvar UA = require('../internals/environment-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar PopoverTitle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-header');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(bsPrefix, className)\n  }), children);\n});\nexport default PopoverTitle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-body');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix)\n  }), children);\n});\nexport default PopoverContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport PopoverTitle from './PopoverTitle';\nimport PopoverContent from './PopoverContent';\nvar defaultProps = {\n  placement: 'right'\n};\nvar Popover = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      content = _ref.content,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.popper,\n      _1 = _ref.show,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"content\", \"arrowProps\", \"popper\", \"show\"]);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'popover');\n\n  var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n      primaryPlacement = _ref2[0];\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    role: \"tooltip\",\n    style: style,\n    \"x-placement\": primaryPlacement,\n    className: classNames(className, decoratedBsPrefix, primaryPlacement && \"bs-popover-\" + primaryPlacement)\n  }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps)), content ? /*#__PURE__*/React.createElement(PopoverContent, null, children) : children);\n});\nPopover.defaultProps = defaultProps;\nPopover.Title = PopoverTitle;\nPopover.Content = PopoverContent;\nexport default Popover;","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $comment = it.util.toQuotedString($schema);\n  if (it.opts.$comment === true) {\n    out += ' console.log(' + ($comment) + ');';\n  } else if (typeof it.opts.$comment == 'function') {\n    out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n  }\n  return out;\n}\n","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=makeClassMemberDecorator;function makeClassMemberDecorator(decorate){return function decorateClassMember(target,name,descriptor){var configurable=descriptor.configurable,enumerable=descriptor.enumerable,value=descriptor.value,_get=descriptor.get,initializer=descriptor.initializer;if(value){return{configurable:configurable,enumerable:enumerable,value:decorate(value)}}if(_get||initializer){return{configurable:configurable,enumerable:enumerable,get:function get(){if(this===target){return null}var resolvedValue=initializer?Reflect.apply(initializer,this,[]):Reflect.apply(_get,this,[]);var decoratedValue=decorate(resolvedValue).bind(this);Reflect.defineProperty(this,name,{configurable:configurable,enumerable:enumerable,value:decoratedValue});return decoratedValue}}}throw new Error(\"called makeClassMemberDecorator on unsupported descriptor\")}}\n//# sourceMappingURL=makeClassMemberDecorator.js.map","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n  withResolvers: function withResolvers() {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    return {\n      promise: promiseCapability.promise,\n      resolve: promiseCapability.resolve,\n      reject: promiseCapability.reject\n    };\n  }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module core\n */\n/**\n * Matches state names using glob-like pattern strings.\n *\n * Globs can be used in specific APIs including:\n *\n * - [[StateService.is]]\n * - [[StateService.includes]]\n * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n *    - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n *\n * A `Glob` string is a pattern which matches state names.\n * Nested state names are split into segments (separated by a dot) when processing.\n * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n *\n * Globs work according to the following rules:\n *\n * ### Exact match:\n *\n * The glob `'A.B'` matches the state named exactly `'A.B'`.\n *\n * | Glob        |Matches states named|Does not match state named|\n * |:------------|:--------------------|:---------------------|\n * | `'A'`       | `'A'`               | `'B'` , `'A.C'`      |\n * | `'A.B'`     | `'A.B'`             | `'A'` , `'A.B.C'`    |\n * | `'foo'`     | `'foo'`             | `'FOO'` , `'foo.bar'`|\n *\n * ### Single star (`*`)\n *\n * A single star (`*`) is a wildcard that matches exactly one segment.\n *\n * | Glob        |Matches states named  |Does not match state named |\n * |:------------|:---------------------|:--------------------------|\n * | `'*'`       | `'A'` , `'Z'`        | `'A.B'` , `'Z.Y.X'`       |\n * | `'A.*'`     | `'A.B'` , `'A.C'`    | `'A'` , `'A.B.C'`         |\n * | `'A.*.*'`   | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n *\n * ### Double star (`**`)\n *\n * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n *\n * | Glob        |Matches states named                           |Does not match state named         |\n * |:------------|:----------------------------------------------|:----------------------------------|\n * | `'**'`      | `'A'` , `'A.B'`, `'Z.Y.X'`                    | (matches all states)              |\n * | `'A.**'`    | `'A'` , `'A.B'` , `'A.C.X'`                   | `'Z.Y.X'`                         |\n * | `'**.X'`    | `'X'` , `'A.X'` , `'Z.Y.X'`                   | `'A'` , `'A.login.Z'`             |\n * | `'A.**.X'`  | `'A.X'` , `'A.B.X'` , `'A.B.C.X'`             | `'A'` , `'A.B.C'`                 |\n *\n */\nvar Glob = /** @class */ (function () {\n    function Glob(text) {\n        this.text = text;\n        this.glob = text.split('.');\n        var regexpString = this.text.split('.')\n            .map(function (seg) {\n            if (seg === '**')\n                return '(?:|(?:\\\\.[^.]*)*)';\n            if (seg === '*')\n                return '\\\\.[^.]*';\n            return '\\\\.' + seg;\n        }).join('');\n        this.regexp = new RegExp('^' + regexpString + '$');\n    }\n    /** Returns true if the string has glob-like characters in it */\n    Glob.is = function (text) {\n        return !!/[!,*]+/.exec(text);\n    };\n    /** Returns a glob from the string, or null if the string isn't Glob-like */\n    Glob.fromString = function (text) {\n        return Glob.is(text) ? new Glob(text) : null;\n    };\n    Glob.prototype.matches = function (name) {\n        return this.regexp.test('.' + name);\n    };\n    return Glob;\n}());\nexports.Glob = Glob;\n//# sourceMappingURL=glob.js.map","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _google_map_map = require('./google_map_map');\n\nvar _google_map_map2 = _interopRequireDefault(_google_map_map);\n\nvar _marker_dispatcher = require('./marker_dispatcher');\n\nvar _marker_dispatcher2 = _interopRequireDefault(_marker_dispatcher);\n\nvar _google_map_markers = require('./google_map_markers');\n\nvar _google_map_markers2 = _interopRequireDefault(_google_map_markers);\n\nvar _google_map_markers_prerender = require('./google_map_markers_prerender');\n\nvar _google_map_markers_prerender2 = _interopRequireDefault(_google_map_markers_prerender);\n\nvar _google_heatmap = require('./google_heatmap');\n\nvar _google_map_loader = require('./loaders/google_map_loader');\n\nvar _google_map_loader2 = _interopRequireDefault(_google_map_loader);\n\nvar _geo = require('./utils/geo');\n\nvar _geo2 = _interopRequireDefault(_geo);\n\nvar _raf = require('./utils/raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _pick = require('./utils/pick');\n\nvar _pick2 = _interopRequireDefault(_pick);\n\nvar _omit = require('./utils/omit');\n\nvar _omit2 = _interopRequireDefault(_omit);\n\nvar _log = require('./utils/math/log2');\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _isEmpty = require('./utils/isEmpty');\n\nvar _isEmpty2 = _interopRequireDefault(_isEmpty);\n\nvar _isNumber = require('./utils/isNumber');\n\nvar _isNumber2 = _interopRequireDefault(_isNumber);\n\nvar _detect = require('./utils/detect');\n\nvar _detect2 = _interopRequireDefault(_detect);\n\nvar _shallowEqual = require('./utils/shallowEqual');\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _isPlainObject = require('./utils/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _isArraysEqualEps = require('./utils/isArraysEqualEps');\n\nvar _isArraysEqualEps2 = _interopRequireDefault(_isArraysEqualEps);\n\nvar _detectElementResize = require('./utils/detectElementResize');\n\nvar _detectElementResize2 = _interopRequireDefault(_detectElementResize);\n\nvar _passiveEvents = require('./utils/passiveEvents');\n\nvar _passiveEvents2 = _interopRequireDefault(_passiveEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable import/no-extraneous-dependencies, react/forbid-prop-types, react/no-find-dom-node, no-console */\n\n\n// helpers\n\n\n// loaders\n\n\n// utils\n\n\n// consts\nvar kEPS = 0.00001;\nvar K_GOOGLE_TILE_SIZE = 256;\n// real minZoom calculated here _getMinZoom\nvar K_IDLE_TIMEOUT = 100;\nvar K_IDLE_CLICK_TIMEOUT = 300;\nvar DEFAULT_MIN_ZOOM = 3;\n// Starting with version 3.32, the maps API calls `draw()` each frame during\n// a zoom animation.\nvar DRAW_CALLED_DURING_ANIMATION_VERSION = 32;\nvar IS_REACT_16 = _reactDom2.default.createPortal !== undefined;\n\nvar createPortal = IS_REACT_16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n\nfunction defaultOptions_() /* maps */{\n  return {\n    overviewMapControl: false,\n    streetViewControl: false,\n    rotateControl: true,\n    mapTypeControl: false,\n    // disable poi\n    styles: [{\n      featureType: 'poi',\n      elementType: 'labels',\n      stylers: [{ visibility: 'off' }]\n    }],\n    minZoom: DEFAULT_MIN_ZOOM // dynamically recalculted if possible during init\n  };\n}\n\nvar latLng2Obj = function latLng2Obj(latLng) {\n  return (0, _isPlainObject2.default)(latLng) ? latLng : { lat: latLng[0], lng: latLng[1] };\n};\n\nvar _checkMinZoom = function _checkMinZoom(zoom, minZoom) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (zoom < minZoom) {\n      console.warn('GoogleMap: ' + // eslint-disable-line\n      'minZoom option is less than recommended ' + 'minZoom option for your map sizes.\\n' + 'overrided to value ' + minZoom);\n    }\n  }\n\n  if (minZoom < zoom) {\n    return zoom;\n  }\n  return minZoom;\n};\n\nvar isFullScreen = function isFullScreen() {\n  return document.fullscreen || document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement;\n};\n\nvar GoogleMap = function (_Component) {\n  _inherits(GoogleMap, _Component);\n\n  // eslint-disable-line\n\n  function GoogleMap(props) {\n    _classCallCheck(this, GoogleMap);\n\n    var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n    _this._getMinZoom = function () {\n      if (_this.geoService_.getWidth() > 0 || _this.geoService_.getHeight() > 0) {\n        var tilesPerWidth = Math.ceil(_this.geoService_.getWidth() / K_GOOGLE_TILE_SIZE) + 2;\n        var tilesPerHeight = Math.ceil(_this.geoService_.getHeight() / K_GOOGLE_TILE_SIZE) + 2;\n        var maxTilesPerDim = Math.max(tilesPerWidth, tilesPerHeight);\n        return Math.ceil((0, _log2.default)(maxTilesPerDim));\n      }\n      return DEFAULT_MIN_ZOOM;\n    };\n\n    _this._computeMinZoom = function (minZoom) {\n      if (!(0, _isEmpty2.default)(minZoom)) {\n        return minZoom;\n      }\n      return _this._getMinZoom();\n    };\n\n    _this._mapDomResizeCallback = function () {\n      _this.resetSizeOnIdle_ = true;\n      if (_this.maps_) {\n        var originalCenter = _this.props.center || _this.props.defaultCenter;\n        var currentCenter = _this.map_.getCenter();\n        _this.maps_.event.trigger(_this.map_, 'resize');\n        _this.map_.setCenter(_this.props.resetBoundsOnResize ? originalCenter : currentCenter);\n      }\n    };\n\n    _this._setLayers = function (layerTypes) {\n      layerTypes.forEach(function (layerType) {\n        _this.layers_[layerType] = new _this.maps_[layerType]();\n        _this.layers_[layerType].setMap(_this.map_);\n      });\n    };\n\n    _this._renderPortal = function () {\n      return _react2.default.createElement(_google_map_markers2.default, {\n        experimental: _this.props.experimental,\n        onChildClick: _this._onChildClick,\n        onChildMouseDown: _this._onChildMouseDown,\n        onChildMouseEnter: _this._onChildMouseEnter,\n        onChildMouseLeave: _this._onChildMouseLeave,\n        geoService: _this.geoService_,\n        insideMapPanes: true,\n        distanceToMouse: _this.props.distanceToMouse,\n        getHoverDistance: _this._getHoverDistance,\n        dispatcher: _this.markersDispatcher_\n      });\n    };\n\n    _this._initMap = function () {\n      // only initialize the map once\n      if (_this.initialized_) {\n        return;\n      }\n      _this.initialized_ = true;\n\n      var propsCenter = latLng2Obj(_this.props.center || _this.props.defaultCenter);\n      _this.geoService_.setView(propsCenter, _this.props.zoom || _this.props.defaultZoom, 0);\n\n      _this._onBoundsChanged(); // now we can calculate map bounds center etc...\n\n      var bootstrapURLKeys = _extends({}, _this.props.apiKey && { key: _this.props.apiKey }, _this.props.bootstrapURLKeys);\n\n      _this.props.googleMapLoader(bootstrapURLKeys, _this.props.heatmapLibrary).then(function (maps) {\n        if (!_this.mounted_) {\n          return;\n        }\n\n        var centerLatLng = _this.geoService_.getCenter();\n\n        var propsOptions = {\n          zoom: _this.props.zoom || _this.props.defaultZoom,\n          center: new maps.LatLng(centerLatLng.lat, centerLatLng.lng)\n        };\n\n        // Start Heatmap\n        if (_this.props.heatmap.positions) {\n          Object.assign(_this, {\n            heatmap: (0, _google_heatmap.generateHeatmap)(maps, _this.props.heatmap)\n          });\n          (0, _google_heatmap.optionsHeatmap)(_this.heatmap, _this.props.heatmap);\n        }\n        // End Heatmap\n\n        // prevent to exapose full api\n        // next props must be exposed (console.log(Object.keys(pick(maps, isPlainObject))))\n        // \"Animation\", \"ControlPosition\", \"MapTypeControlStyle\", \"MapTypeId\",\n        // \"NavigationControlStyle\", \"ScaleControlStyle\", \"StrokePosition\",\n        // \"SymbolPath\", \"ZoomControlStyle\",\n        // \"event\", \"DirectionsStatus\", \"DirectionsTravelMode\", \"DirectionsUnitSystem\",\n        // \"DistanceMatrixStatus\",\n        // \"DistanceMatrixElementStatus\", \"ElevationStatus\", \"GeocoderLocationType\",\n        // \"GeocoderStatus\", \"KmlLayerStatus\",\n        // \"MaxZoomStatus\", \"StreetViewStatus\", \"TransitMode\", \"TransitRoutePreference\",\n        // \"TravelMode\", \"UnitSystem\"\n        var mapPlainObjects = (0, _pick2.default)(maps, _isPlainObject2.default);\n        var options = typeof _this.props.options === 'function' ? _this.props.options(mapPlainObjects) : _this.props.options;\n        var defaultOptions = defaultOptions_(mapPlainObjects);\n\n        var draggableOptions = !(0, _isEmpty2.default)(_this.props.draggable) && {\n          draggable: _this.props.draggable\n        };\n\n        var minZoom = _this._computeMinZoom(options.minZoom);\n        _this.minZoom_ = minZoom;\n\n        var preMapOptions = _extends({}, defaultOptions, {\n          minZoom: minZoom\n        }, options, propsOptions);\n\n        _this.defaultDraggableOption_ = !(0, _isEmpty2.default)(preMapOptions.draggable) ? preMapOptions.draggable : _this.defaultDraggableOption_;\n\n        var mapOptions = _extends({}, preMapOptions, draggableOptions);\n\n        mapOptions.minZoom = _checkMinZoom(mapOptions.minZoom, minZoom);\n\n        var map = new maps.Map(_reactDom2.default.findDOMNode(_this.googleMapDom_), mapOptions);\n\n        _this.map_ = map;\n        _this.maps_ = maps;\n\n        _this._setLayers(_this.props.layerTypes);\n\n        // Parse `google.maps.version` to capture the major version number.\n        var versionMatch = maps.version.match(/^3\\.(\\d+)\\./);\n        // The major version is the first (and only) captured group.\n        var mapsVersion = versionMatch && Number(versionMatch[1]);\n\n        // render in overlay\n        var this_ = _this;\n        var overlay = Object.assign(new maps.OverlayView(), {\n          onAdd: function onAdd() {\n            var K_MAX_WIDTH = typeof screen !== 'undefined' ? screen.width + 'px' : '2000px';\n            var K_MAX_HEIGHT = typeof screen !== 'undefined' ? screen.height + 'px' : '2000px';\n\n            var div = document.createElement('div');\n            div.style.backgroundColor = 'transparent';\n            div.style.position = 'absolute';\n            div.style.left = '0px';\n            div.style.top = '0px';\n            div.style.width = K_MAX_WIDTH; // prevents some chrome draw defects\n            div.style.height = K_MAX_HEIGHT;\n\n            if (this_.props.overlayViewDivStyle) {\n              var overlayViewDivStyle = this_.props.overlayViewDivStyle;\n\n              if ((typeof overlayViewDivStyle === 'undefined' ? 'undefined' : _typeof(overlayViewDivStyle)) === 'object') {\n                Object.keys(overlayViewDivStyle).forEach(function (property) {\n                  div.style[property] = overlayViewDivStyle[property];\n                });\n              }\n            }\n\n            var panes = this.getPanes();\n            panes.overlayMouseTarget.appendChild(div);\n            this_.geoService_.setMapCanvasProjection(maps, overlay.getProjection());\n\n            if (!IS_REACT_16) {\n              createPortal(this_, this_._renderPortal(), div,\n              // remove prerendered markers\n              function () {\n                return this_.setState({ overlay: div });\n              });\n            } else {\n              this_.setState({ overlay: div });\n            }\n          },\n          onRemove: function onRemove() {\n            var renderedOverlay = this_.state.overlay;\n            if (renderedOverlay && !IS_REACT_16) {\n              _reactDom2.default.unmountComponentAtNode(renderedOverlay);\n            }\n            this_.setState({ overlay: null });\n          },\n          draw: function draw() {\n            this_.updateCounter_++;\n            this_._onBoundsChanged(map, maps, !this_.props.debounced);\n\n            if (!this_.googleApiLoadedCalled_) {\n              this_._onGoogleApiLoaded({ map: map, maps: maps, ref: this_.googleMapDom_ });\n              this_.googleApiLoadedCalled_ = true;\n            }\n\n            if (this_.mouse_) {\n              var latLng = this_.geoService_.fromContainerPixelToLatLng(this_.mouse_);\n              this_.mouse_.lat = latLng.lat;\n              this_.mouse_.lng = latLng.lng;\n            }\n\n            this_._onChildMouseMove();\n\n            if (this_.markersDispatcher_) {\n              this_.markersDispatcher_.emit('kON_CHANGE');\n              if (this_.fireMouseEventOnIdle_) {\n                this_.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n              }\n            }\n          }\n        });\n\n        _this.overlay_ = overlay;\n\n        overlay.setMap(map);\n        if (_this.props.heatmap.positions) {\n          _this.heatmap.setMap(map);\n        }\n\n        if (_this.props.onTilesLoaded) {\n          maps.event.addListener(map, 'tilesloaded', function () {\n            this_._onTilesLoaded();\n          });\n        }\n\n        maps.event.addListener(map, 'zoom_changed', function () {\n          // recalc position at zoom start\n          if (this_.geoService_.getZoom() !== map.getZoom()) {\n            if (!this_.zoomAnimationInProgress_) {\n              this_.zoomAnimationInProgress_ = true;\n              this_._onZoomAnimationStart(map.zoom);\n            }\n\n            // If draw() is not called each frame during a zoom animation,\n            // simulate it.\n            if (mapsVersion < DRAW_CALLED_DURING_ANIMATION_VERSION) {\n              var TIMEOUT_ZOOM = 300;\n\n              if (new Date().getTime() - _this.zoomControlClickTime_ < TIMEOUT_ZOOM) {\n                // there is strange Google Map Api behavior in chrome when zoom animation of map\n                // is started only on second raf call, if was click on zoom control\n                // or +- keys pressed, so i wait for two rafs before change state\n\n                // this does not fully prevent animation jump\n                // but reduce it's occurence probability\n                (0, _raf2.default)(function () {\n                  return (0, _raf2.default)(function () {\n                    this_.updateCounter_++;\n                    this_._onBoundsChanged(map, maps);\n                  });\n                });\n              } else {\n                this_.updateCounter_++;\n                this_._onBoundsChanged(map, maps);\n              }\n            }\n          }\n        });\n\n        maps.event.addListener(map, 'idle', function () {\n          if (_this.resetSizeOnIdle_) {\n            _this._setViewSize();\n            var currMinZoom = _this._computeMinZoom(_this.props.options.minZoom);\n\n            if (currMinZoom !== _this.minZoom_) {\n              _this.minZoom_ = currMinZoom;\n              map.setOptions({ minZoom: currMinZoom });\n            }\n\n            _this.resetSizeOnIdle_ = false;\n          }\n\n          if (this_.zoomAnimationInProgress_) {\n            this_.zoomAnimationInProgress_ = false;\n            this_._onZoomAnimationEnd(map.zoom);\n          }\n\n          this_.updateCounter_++;\n          this_._onBoundsChanged(map, maps);\n\n          this_.dragTime_ = 0;\n\n          if (this_.markersDispatcher_) {\n            this_.markersDispatcher_.emit('kON_CHANGE');\n          }\n        });\n\n        maps.event.addListener(map, 'mouseover', function () {\n          // has advantage over div MouseLeave\n          this_.mouseInMap_ = true;\n        });\n\n        // an alternative way to know the mouse is back within the map\n        // This would not fire when clicking/interacting with google maps\n        // own on-map countrols+markers. This handles an edge case for touch devices\n        // + 'draggable:false' custom option. See #332 for more details.\n        maps.event.addListener(map, 'click', function () {\n          this_.mouseInMap_ = true;\n        });\n\n        maps.event.addListener(map, 'mouseout', function () {\n          // has advantage over div MouseLeave\n          this_.mouseInMap_ = false;\n          this_.mouse_ = null;\n          this_.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n        });\n\n        maps.event.addListener(map, 'drag', function () {\n          this_.dragTime_ = new Date().getTime();\n          this_._onDrag(map);\n        });\n\n        maps.event.addListener(map, 'dragend', function () {\n          // 'dragend' fires on mouse release.\n          // 'idle' listener waits until drag inertia ends before firing `onDragEnd`\n          var idleListener = maps.event.addListener(map, 'idle', function () {\n            maps.event.removeListener(idleListener);\n            this_._onDragEnd(map);\n          });\n        });\n        // user choosing satellite vs roads, etc\n        maps.event.addListener(map, 'maptypeid_changed', function () {\n          this_._onMapTypeIdChange(map.getMapTypeId());\n        });\n      }).catch(function (e) {\n        // notify callback of load failure\n        _this._onGoogleApiLoaded({\n          map: null,\n          maps: null,\n          ref: _this.googleMapDom_\n        });\n        console.error(e); // eslint-disable-line no-console\n        throw e;\n      });\n    };\n\n    _this._onGoogleApiLoaded = function () {\n      if (_this.props.onGoogleApiLoaded) {\n        var _this$props;\n\n        if (process.env.NODE_ENV !== 'production' && _this.props.yesIWantToUseGoogleMapApiInternals !== true) {\n          console.warn('GoogleMap: ' + // eslint-disable-line\n          'Usage of internal api objects is dangerous ' + 'and can cause a lot of issues.\\n' + 'To hide this warning add yesIWantToUseGoogleMapApiInternals={true} ' + 'to <GoogleMap instance');\n        }\n\n        (_this$props = _this.props).onGoogleApiLoaded.apply(_this$props, arguments);\n      }\n    };\n\n    _this._getHoverDistance = function () {\n      return _this.props.hoverDistance;\n    };\n\n    _this._onDrag = function () {\n      var _this$props2;\n\n      return _this.props.onDrag && (_this$props2 = _this.props).onDrag.apply(_this$props2, arguments);\n    };\n\n    _this._onDragEnd = function () {\n      var _this$props3;\n\n      return _this.props.onDragEnd && (_this$props3 = _this.props).onDragEnd.apply(_this$props3, arguments);\n    };\n\n    _this._onMapTypeIdChange = function () {\n      var _this$props4;\n\n      return _this.props.onMapTypeIdChange && (_this$props4 = _this.props).onMapTypeIdChange.apply(_this$props4, arguments);\n    };\n\n    _this._onZoomAnimationStart = function () {\n      var _this$props5;\n\n      return _this.props.onZoomAnimationStart && (_this$props5 = _this.props).onZoomAnimationStart.apply(_this$props5, arguments);\n    };\n\n    _this._onZoomAnimationEnd = function () {\n      var _this$props6;\n\n      return _this.props.onZoomAnimationEnd && (_this$props6 = _this.props).onZoomAnimationEnd.apply(_this$props6, arguments);\n    };\n\n    _this._onTilesLoaded = function () {\n      return _this.props.onTilesLoaded && _this.props.onTilesLoaded();\n    };\n\n    _this._onChildClick = function () {\n      if (_this.props.onChildClick) {\n        var _this$props7;\n\n        return (_this$props7 = _this.props).onChildClick.apply(_this$props7, arguments);\n      }\n      return undefined;\n    };\n\n    _this._onChildMouseDown = function (hoverKey, childProps) {\n      _this.childMouseDownArgs_ = [hoverKey, childProps];\n      if (_this.props.onChildMouseDown) {\n        _this.props.onChildMouseDown(hoverKey, childProps, _extends({}, _this.mouse_));\n      }\n    };\n\n    _this._onChildMouseUp = function () {\n      if (_this.childMouseDownArgs_) {\n        if (_this.props.onChildMouseUp) {\n          var _this$props8;\n\n          (_this$props8 = _this.props).onChildMouseUp.apply(_this$props8, _this.childMouseDownArgs_.concat([_extends({}, _this.mouse_)]));\n        }\n        _this.childMouseDownArgs_ = null;\n        _this.childMouseUpTime_ = new Date().getTime();\n      }\n    };\n\n    _this._onChildMouseMove = function () {\n      if (_this.childMouseDownArgs_) {\n        if (_this.props.onChildMouseMove) {\n          var _this$props9;\n\n          (_this$props9 = _this.props).onChildMouseMove.apply(_this$props9, _this.childMouseDownArgs_.concat([_extends({}, _this.mouse_)]));\n        }\n      }\n    };\n\n    _this._onChildMouseEnter = function () {\n      if (_this.props.onChildMouseEnter) {\n        var _this$props10;\n\n        return (_this$props10 = _this.props).onChildMouseEnter.apply(_this$props10, arguments);\n      }\n      return undefined;\n    };\n\n    _this._onChildMouseLeave = function () {\n      if (_this.props.onChildMouseLeave) {\n        var _this$props11;\n\n        return (_this$props11 = _this.props).onChildMouseLeave.apply(_this$props11, arguments);\n      }\n      return undefined;\n    };\n\n    _this._setViewSize = function () {\n      if (!_this.mounted_) return;\n      if (isFullScreen()) {\n        _this.geoService_.setViewSize(window.innerWidth, window.innerHeight);\n      } else {\n        var mapDom = _reactDom2.default.findDOMNode(_this.googleMapDom_);\n        _this.geoService_.setViewSize(mapDom.clientWidth, mapDom.clientHeight);\n      }\n      _this._onBoundsChanged();\n    };\n\n    _this._onWindowResize = function () {\n      _this.resetSizeOnIdle_ = true;\n    };\n\n    _this._onMapMouseMove = function (e) {\n      if (!_this.mouseInMap_) return;\n\n      var currTime = new Date().getTime();\n      var K_RECALC_CLIENT_RECT_MS = 50;\n\n      if (currTime - _this.mouseMoveTime_ > K_RECALC_CLIENT_RECT_MS) {\n        _this.boundingRect_ = e.currentTarget.getBoundingClientRect();\n      }\n      _this.mouseMoveTime_ = currTime;\n\n      var mousePosX = e.clientX - _this.boundingRect_.left;\n      var mousePosY = e.clientY - _this.boundingRect_.top;\n\n      if (!_this.mouse_) {\n        _this.mouse_ = { x: 0, y: 0, lat: 0, lng: 0 };\n      }\n\n      _this.mouse_.x = mousePosX;\n      _this.mouse_.y = mousePosY;\n\n      var latLng = _this.geoService_.fromContainerPixelToLatLng(_this.mouse_);\n      _this.mouse_.lat = latLng.lat;\n      _this.mouse_.lng = latLng.lng;\n\n      _this._onChildMouseMove();\n\n      if (currTime - _this.dragTime_ < K_IDLE_TIMEOUT) {\n        _this.fireMouseEventOnIdle_ = true;\n      } else {\n        _this.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n        _this.fireMouseEventOnIdle_ = false;\n      }\n    };\n\n    _this._onClick = function () {\n      var _this$props12;\n\n      return _this.props.onClick && !_this.childMouseDownArgs_ && new Date().getTime() - _this.childMouseUpTime_ > K_IDLE_CLICK_TIMEOUT && _this.dragTime_ === 0 && (_this$props12 = _this.props).onClick.apply(_this$props12, arguments);\n    };\n\n    _this._onMapClick = function (event) {\n      if (_this.markersDispatcher_) {\n        // support touch events and recalculate mouse position on click\n        _this._onMapMouseMove(event);\n        var currTime = new Date().getTime();\n        if (currTime - _this.dragTime_ > K_IDLE_TIMEOUT) {\n          if (_this.mouse_) {\n            _this._onClick(_extends({}, _this.mouse_, {\n              event: event\n            }));\n          }\n\n          _this.markersDispatcher_.emit('kON_CLICK', event);\n        }\n      }\n    };\n\n    _this._onMapMouseDownNative = function (event) {\n      if (!_this.mouseInMap_) return;\n\n      _this._onMapMouseDown(event);\n    };\n\n    _this._onMapMouseDown = function (event) {\n      if (_this.markersDispatcher_) {\n        var currTime = new Date().getTime();\n        if (currTime - _this.dragTime_ > K_IDLE_TIMEOUT) {\n          // Hovered marker detected at mouse move could be deleted at mouse down time\n          // so it will be good to force hovered marker recalculation\n          _this._onMapMouseMove(event);\n          _this.markersDispatcher_.emit('kON_MDOWN', event);\n        }\n      }\n    };\n\n    _this._onMapMouseDownCapture = function () {\n      if ((0, _detect2.default)().isChrome) {\n        // to fix strange zoom in chrome\n        _this.zoomControlClickTime_ = new Date().getTime();\n      }\n    };\n\n    _this._onKeyDownCapture = function () {\n      if ((0, _detect2.default)().isChrome) {\n        _this.zoomControlClickTime_ = new Date().getTime();\n      }\n    };\n\n    _this._isCenterDefined = function (center) {\n      return center && ((0, _isPlainObject2.default)(center) && (0, _isNumber2.default)(center.lat) && (0, _isNumber2.default)(center.lng) || center.length === 2 && (0, _isNumber2.default)(center[0]) && (0, _isNumber2.default)(center[1]));\n    };\n\n    _this._onBoundsChanged = function (map, maps, callExtBoundsChange) {\n      if (map) {\n        var gmC = map.getCenter();\n        _this.geoService_.setView([gmC.lat(), gmC.lng()], map.getZoom(), 0);\n      }\n\n      if ((_this.props.onChange || _this.props.onBoundsChange) && _this.geoService_.canProject()) {\n        var zoom = _this.geoService_.getZoom();\n        var bounds = _this.geoService_.getBounds();\n        var centerLatLng = _this.geoService_.getCenter();\n\n        if (!(0, _isArraysEqualEps2.default)(bounds, _this.prevBounds_, kEPS)) {\n          if (callExtBoundsChange !== false) {\n            var marginBounds = _this.geoService_.getBounds(_this.props.margin);\n            if (_this.props.onBoundsChange) {\n              _this.props.onBoundsChange(_this.centerIsObject_ ? _extends({}, centerLatLng) : [centerLatLng.lat, centerLatLng.lng], zoom, bounds, marginBounds);\n            }\n\n            if (_this.props.onChange) {\n              _this.props.onChange({\n                center: _extends({}, centerLatLng),\n                zoom: zoom,\n                bounds: {\n                  nw: {\n                    lat: bounds[0],\n                    lng: bounds[1]\n                  },\n                  se: {\n                    lat: bounds[2],\n                    lng: bounds[3]\n                  },\n                  sw: {\n                    lat: bounds[4],\n                    lng: bounds[5]\n                  },\n                  ne: {\n                    lat: bounds[6],\n                    lng: bounds[7]\n                  }\n                },\n                marginBounds: {\n                  nw: {\n                    lat: marginBounds[0],\n                    lng: marginBounds[1]\n                  },\n                  se: {\n                    lat: marginBounds[2],\n                    lng: marginBounds[3]\n                  },\n                  sw: {\n                    lat: marginBounds[4],\n                    lng: marginBounds[5]\n                  },\n                  ne: {\n                    lat: marginBounds[6],\n                    lng: marginBounds[7]\n                  }\n                },\n\n                size: _this.geoService_.hasSize() ? {\n                  width: _this.geoService_.getWidth(),\n                  height: _this.geoService_.getHeight()\n                } : {\n                  width: 0,\n                  height: 0\n                }\n              });\n            }\n\n            _this.prevBounds_ = bounds;\n          }\n        }\n      }\n    };\n\n    _this._registerChild = function (ref) {\n      _this.googleMapDom_ = ref;\n    };\n\n    _this.mounted_ = false;\n    _this.initialized_ = false;\n    _this.googleApiLoadedCalled_ = false;\n\n    _this.map_ = null;\n    _this.maps_ = null;\n    _this.prevBounds_ = null;\n    _this.heatmap = null;\n\n    _this.layers_ = {};\n\n    _this.mouse_ = null;\n    _this.mouseMoveTime_ = 0;\n    _this.boundingRect_ = null;\n    _this.mouseInMap_ = true;\n\n    _this.dragTime_ = 0;\n    _this.fireMouseEventOnIdle_ = false;\n    _this.updateCounter_ = 0;\n\n    _this.markersDispatcher_ = new _marker_dispatcher2.default(_this);\n    _this.geoService_ = new _geo2.default(K_GOOGLE_TILE_SIZE);\n    _this.centerIsObject_ = (0, _isPlainObject2.default)(_this.props.center);\n\n    _this.minZoom_ = DEFAULT_MIN_ZOOM;\n    _this.defaultDraggableOption_ = true;\n\n    _this.zoomControlClickTime_ = 0;\n\n    _this.childMouseDownArgs_ = null;\n    _this.childMouseUpTime_ = 0;\n\n    _this.googleMapDom_ = null;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (_this.props.apiKey) {\n        console.warn('GoogleMap: ' + // eslint-disable-line no-console\n        'apiKey is deprecated, use ' + 'bootstrapURLKeys={{key: YOUR_API_KEY}} instead.');\n      }\n\n      if (_this.props.onBoundsChange) {\n        console.warn('GoogleMap: ' + // eslint-disable-line no-console\n        'onBoundsChange is deprecated, use ' + 'onChange({center, zoom, bounds, ...other}) instead.');\n      }\n\n      if ((0, _isEmpty2.default)(_this.props.center) && (0, _isEmpty2.default)(_this.props.defaultCenter)) {\n        console.warn('GoogleMap: center or defaultCenter property must be defined' // eslint-disable-line no-console\n        );\n      }\n\n      if ((0, _isEmpty2.default)(_this.props.zoom) && (0, _isEmpty2.default)(_this.props.defaultZoom)) {\n        console.warn('GoogleMap: zoom or defaultZoom property must be defined' // eslint-disable-line no-console\n        );\n      }\n    }\n\n    if (_this._isCenterDefined(_this.props.center || _this.props.defaultCenter)) {\n      var propsCenter = latLng2Obj(_this.props.center || _this.props.defaultCenter);\n      _this.geoService_.setView(propsCenter, _this.props.zoom || _this.props.defaultZoom, 0);\n    }\n\n    _this.zoomAnimationInProgress_ = false;\n\n    _this.state = {\n      overlay: null\n    };\n    return _this;\n  }\n\n  GoogleMap.prototype.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    this.mounted_ = true;\n    (0, _passiveEvents2.default)(window, 'resize', this._onWindowResize, false);\n    (0, _passiveEvents2.default)(window, 'keydown', this._onKeyDownCapture, true);\n    var mapDom = _reactDom2.default.findDOMNode(this.googleMapDom_);\n    // gmap can't prevent map drag if mousedown event already occured\n    // the only workaround I find is prevent mousedown native browser event\n\n    if (mapDom) {\n      (0, _passiveEvents2.default)(mapDom, 'mousedown', this._onMapMouseDownNative, true);\n    }\n\n    (0, _passiveEvents2.default)(window, 'mouseup', this._onChildMouseUp, false);\n    var bootstrapURLKeys = _extends({}, this.props.apiKey && { key: this.props.apiKey }, this.props.bootstrapURLKeys);\n\n    this.props.googleMapLoader(bootstrapURLKeys, this.props.heatmapLibrary); // we can start load immediatly\n\n    setTimeout(function () {\n      // to detect size\n      _this2._setViewSize();\n      if (_this2._isCenterDefined(_this2.props.center || _this2.props.defaultCenter)) {\n        _this2._initMap();\n      }\n    }, 0, this);\n    if (this.props.resetBoundsOnResize) {\n      var that = this;\n      _detectElementResize2.default.addResizeListener(mapDom, that._mapDomResizeCallback);\n    }\n  };\n\n  GoogleMap.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    var _this3 = this;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(0, _shallowEqual2.default)(this.props.defaultCenter, nextProps.defaultCenter)) {\n        console.warn(\"GoogleMap: defaultCenter prop changed. You can't change default props.\");\n      }\n\n      if (!(0, _shallowEqual2.default)(this.props.defaultZoom, nextProps.defaultZoom)) {\n        console.warn(\"GoogleMap: defaultZoom prop changed. You can't change default props.\");\n      }\n    }\n\n    if (!this._isCenterDefined(this.props.center) && this._isCenterDefined(nextProps.center)) {\n      setTimeout(function () {\n        return _this3._initMap();\n      }, 0);\n    }\n\n    if (this.map_) {\n      var centerLatLng = this.geoService_.getCenter();\n      if (this._isCenterDefined(nextProps.center)) {\n        var nextPropsCenter = latLng2Obj(nextProps.center);\n        var currCenter = this._isCenterDefined(this.props.center) ? latLng2Obj(this.props.center) : null;\n\n        if (!currCenter || Math.abs(nextPropsCenter.lat - currCenter.lat) + Math.abs(nextPropsCenter.lng - currCenter.lng) > kEPS) {\n          if (Math.abs(nextPropsCenter.lat - centerLatLng.lat) + Math.abs(nextPropsCenter.lng - centerLatLng.lng) > kEPS) {\n            this.map_.panTo({\n              lat: nextPropsCenter.lat,\n              lng: nextPropsCenter.lng\n            });\n          }\n        }\n      }\n\n      if (!(0, _isEmpty2.default)(nextProps.zoom)) {\n        // if zoom chaged by user\n        if (Math.abs(nextProps.zoom - this.props.zoom) > 0) {\n          this.map_.setZoom(nextProps.zoom);\n        }\n      }\n\n      if (!(0, _isEmpty2.default)(this.props.draggable) && (0, _isEmpty2.default)(nextProps.draggable)) {\n        // reset to default\n        this.map_.setOptions({ draggable: this.defaultDraggableOption_ });\n      } else if (!(0, _shallowEqual2.default)(this.props.draggable, nextProps.draggable)) {\n        // also prevent this on window 'mousedown' event to prevent map move\n        this.map_.setOptions({ draggable: nextProps.draggable });\n      }\n\n      // use shallowEqual to try avoid calling map._setOptions if only the ref changes\n      if (!(0, _isEmpty2.default)(nextProps.options) && !(0, _shallowEqual2.default)(this.props.options, nextProps.options)) {\n        var mapPlainObjects = (0, _pick2.default)(this.maps_, _isPlainObject2.default);\n        var options = typeof nextProps.options === 'function' ? nextProps.options(mapPlainObjects) : nextProps.options;\n        // remove zoom, center and draggable options as these are managed by google-maps-react\n        options = (0, _omit2.default)(options, ['zoom', 'center', 'draggable']);\n\n        if ('minZoom' in options) {\n          var minZoom = this._computeMinZoom(options.minZoom);\n          options.minZoom = _checkMinZoom(options.minZoom, minZoom);\n        }\n\n        this.map_.setOptions(options);\n      }\n\n      if (!(0, _shallowEqual2.default)(nextProps.layerTypes, this.props.layerTypes)) {\n        Object.keys(this.layers_).forEach(function (layerKey) {\n          _this3.layers_[layerKey].setMap(null);\n          delete _this3.layers_[layerKey];\n        });\n        this._setLayers(nextProps.layerTypes);\n      }\n\n      if (this.heatmap && !(0, _shallowEqual2.default)(nextProps.heatmap.positions, this.props.heatmap.positions)) {\n        this.heatmap.setData(nextProps.heatmap.positions.map(function (p) {\n          return {\n            location: new _this3.maps_.LatLng(p.lat, p.lng),\n            weight: p.weight\n          };\n        }));\n      }\n    }\n  };\n\n  GoogleMap.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n    // draggable does not affect inner components\n    return !(0, _shallowEqual2.default)((0, _omit2.default)(this.props, ['draggable']), (0, _omit2.default)(nextProps, ['draggable'])) || !(0, _shallowEqual2.default)(this.state, nextState);\n  };\n\n  GoogleMap.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    this.markersDispatcher_.emit('kON_CHANGE');\n\n    if (!(0, _shallowEqual2.default)(this.props.hoverDistance, prevProps.hoverDistance)) {\n      this.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n    }\n  };\n\n  GoogleMap.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.mounted_ = false;\n    var mapDom = _reactDom2.default.findDOMNode(this.googleMapDom_);\n    if (mapDom) {\n      mapDom.removeEventListener('mousedown', this._onMapMouseDownNative, true);\n    }\n    window.removeEventListener('resize', this._onWindowResize);\n    window.removeEventListener('keydown', this._onKeyDownCapture);\n    window.removeEventListener('mouseup', this._onChildMouseUp, false);\n    if (this.props.resetBoundsOnResize) {\n      _detectElementResize2.default.removeResizeListener(mapDom, this._mapDomResizeCallback);\n    }\n\n    if (this.overlay_) {\n      // this triggers overlay_.onRemove(), which will unmount the <GoogleMapMarkers/>\n      this.overlay_.setMap(null);\n    }\n\n    if (this.maps_ && this.map_ && this.props.shouldUnregisterMapOnUnmount) {\n      // fix google, as otherwise listeners works even without map\n      this.map_.setOptions({ scrollwheel: false });\n      this.maps_.event.clearInstanceListeners(this.map_);\n    }\n\n    if (this.props.shouldUnregisterMapOnUnmount) {\n      this.map_ = null;\n      this.maps_ = null;\n    }\n    this.markersDispatcher_.dispose();\n\n    this.resetSizeOnIdle_ = false;\n\n    if (this.props.shouldUnregisterMapOnUnmount) {\n      delete this.map_;\n      delete this.markersDispatcher_;\n    }\n  };\n  // calc minZoom if map size available\n  // it's better to not set minZoom less than this calculation gives\n  // otherwise there is no homeomorphism between screen coordinates and map\n  // (one map coordinate can have different screen coordinates)\n\n\n  // this method works only if this.props.onChildMouseDown was called\n\n\n  // this method works only if this.props.onChildMouseDown was called\n\n\n  // K_IDLE_CLICK_TIMEOUT - looks like 300 is enough\n\n\n  // gmap can't prevent map drag if mousedown event already occured\n  // the only workaround I find is prevent mousedown native browser event\n\n\n  GoogleMap.prototype.render = function render() {\n    var overlay = this.state.overlay;\n    var mapMarkerPrerender = !overlay ? _react2.default.createElement(_google_map_markers_prerender2.default, {\n      experimental: this.props.experimental,\n      onChildClick: this._onChildClick,\n      onChildMouseDown: this._onChildMouseDown,\n      onChildMouseEnter: this._onChildMouseEnter,\n      onChildMouseLeave: this._onChildMouseLeave,\n      geoService: this.geoService_,\n      insideMapPanes: false,\n      distanceToMouse: this.props.distanceToMouse,\n      getHoverDistance: this._getHoverDistance,\n      dispatcher: this.markersDispatcher_\n    }) : null;\n\n    return _react2.default.createElement(\n      'div',\n      {\n        style: this.props.style,\n        onMouseMove: this._onMapMouseMove,\n        onMouseDownCapture: this._onMapMouseDownCapture,\n        onClick: this._onMapClick\n      },\n      _react2.default.createElement(_google_map_map2.default, { registerChild: this._registerChild }),\n      IS_REACT_16 && overlay && createPortal(this._renderPortal(), overlay),\n      mapMarkerPrerender\n    );\n  };\n\n  return GoogleMap;\n}(_react.Component);\n\nGoogleMap.propTypes = {\n  apiKey: _propTypes2.default.string,\n  bootstrapURLKeys: _propTypes2.default.any,\n\n  defaultCenter: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.shape({\n    lat: _propTypes2.default.number,\n    lng: _propTypes2.default.number\n  })]),\n  center: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.shape({\n    lat: _propTypes2.default.number,\n    lng: _propTypes2.default.number\n  })]),\n  defaultZoom: _propTypes2.default.number,\n  zoom: _propTypes2.default.number,\n  onBoundsChange: _propTypes2.default.func,\n  onChange: _propTypes2.default.func,\n  onClick: _propTypes2.default.func,\n  onChildClick: _propTypes2.default.func,\n  onChildMouseDown: _propTypes2.default.func,\n  onChildMouseUp: _propTypes2.default.func,\n  onChildMouseMove: _propTypes2.default.func,\n  onChildMouseEnter: _propTypes2.default.func,\n  onChildMouseLeave: _propTypes2.default.func,\n  onZoomAnimationStart: _propTypes2.default.func,\n  onZoomAnimationEnd: _propTypes2.default.func,\n  onDrag: _propTypes2.default.func,\n  onDragEnd: _propTypes2.default.func,\n  onMapTypeIdChange: _propTypes2.default.func,\n  onTilesLoaded: _propTypes2.default.func,\n  options: _propTypes2.default.any,\n  distanceToMouse: _propTypes2.default.func,\n  hoverDistance: _propTypes2.default.number,\n  debounced: _propTypes2.default.bool,\n  margin: _propTypes2.default.array,\n  googleMapLoader: _propTypes2.default.any,\n  onGoogleApiLoaded: _propTypes2.default.func,\n  yesIWantToUseGoogleMapApiInternals: _propTypes2.default.bool,\n  draggable: _propTypes2.default.bool,\n  style: _propTypes2.default.any,\n  resetBoundsOnResize: _propTypes2.default.bool,\n  layerTypes: _propTypes2.default.arrayOf(_propTypes2.default.string), // ['TransitLayer', 'TrafficLayer']\n  shouldUnregisterMapOnUnmount: _propTypes2.default.bool\n};\nGoogleMap.defaultProps = {\n  distanceToMouse: function distanceToMouse(pt, mousePos /* , markerProps */) {\n    return Math.sqrt((pt.x - mousePos.x) * (pt.x - mousePos.x) + (pt.y - mousePos.y) * (pt.y - mousePos.y));\n  },\n\n  hoverDistance: 30,\n  debounced: true,\n  options: defaultOptions_,\n  googleMapLoader: _google_map_loader2.default,\n  yesIWantToUseGoogleMapApiInternals: false,\n  style: {\n    width: '100%',\n    height: '100%',\n    margin: 0,\n    padding: 0,\n    position: 'relative'\n  },\n  layerTypes: [],\n  heatmap: {},\n  heatmapLibrary: false,\n  shouldUnregisterMapOnUnmount: true\n};\nGoogleMap.googleMapLoader = _google_map_loader2.default;\nexports.default = GoogleMap;","'use strict';\nvar parent = require('../../es/date');\n\nmodule.exports = parent;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\n/**\n * @extends Error\n * @property {number} code - Error code\n */\nvar TwilioError = /** @class */ (function (_super) {\n    __extends(TwilioError, _super);\n    /**\n     * Creates a new {@link TwilioError}\n     * @param {number} code - Error code\n     * @param {string} [message] - Error message\n     * @param {string} [fileName] - Name of the script file where error was generated\n     * @param {number} [lineNumber] - Line number of the script file where error was generated\n     */\n    function TwilioError(code) {\n        var _this = this;\n        var args = [].slice.call(arguments, 1);\n        _this = _super.apply(this, __spreadArray([], __read(args))) || this;\n        Object.setPrototypeOf(_this, TwilioError.prototype);\n        var error = Error.apply(_this, args);\n        error.name = 'TwilioError';\n        Object.defineProperty(_this, 'code', {\n            value: code,\n            enumerable: true\n        });\n        Object.getOwnPropertyNames(error).forEach(function (prop) {\n            Object.defineProperty(this, prop, {\n                value: error[prop],\n                enumerable: true\n            });\n        }, _this);\n        return _this;\n    }\n    /**\n     * Returns human readable string describing the error.\n     * @returns {string}\n     */\n    TwilioError.prototype.toString = function () {\n        var message = this.message ? \": \" + this.message : '';\n        return this.name + \" \" + this.code + message;\n    };\n    return TwilioError;\n}(Error));\nmodule.exports = TwilioError;\n//# sourceMappingURL=twilioerror.js.map","/* bessel.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported BESSEL */\nvar BESSEL;\n(function (factory) {\n  /*jshint ignore:start */\n  if(typeof DO_NOT_EXPORT_BESSEL === 'undefined') {\n    if('object' === typeof exports) {\n      factory(exports);\n    } else if ('function' === typeof define && define.amd) {\n      define(function () {\n        var module = {};\n        factory(module);\n        return module;\n      });\n    } else {\n      factory(BESSEL = {});\n    }\n  } else {\n    factory(BESSEL = {});\n  }\n  /*jshint ignore:end */\n}(function(BESSEL) {\nBESSEL.version = '1.0.2';\nvar M = Math;\n\nfunction _horner(arr, v) { for(var i = 0, z = 0; i < arr.length; ++i) z = v * z + arr[i]; return z; }\nfunction _bessel_iter(x, n, f0, f1, sign) {\n  if(n === 0) return f0;\n  if(n === 1) return f1;\n  var tdx = 2 / x, f2 = f1;\n  for(var o = 1; o < n; ++o) {\n    f2 = f1 * o * tdx + sign * f0;\n    f0 = f1; f1 = f2;\n  }\n  return f2;\n}\nfunction _bessel_wrap(bessel0, bessel1, name, nonzero, sign) {\n  return function bessel(x,n) {\n    if(nonzero) {\n      if(x === 0) return (nonzero == 1 ? -Infinity : Infinity);\n      else if(x < 0) return NaN;\n    }\n    if(n === 0) return bessel0(x);\n    if(n === 1) return bessel1(x);\n    if(n < 0) return NaN;\n    n|=0;\n    var b0 = bessel0(x), b1 = bessel1(x);\n    return _bessel_iter(x, n, b0, b1, sign);\n  };\n}\nvar besselj = (function() {\n  var W = 0.636619772; // 2 / Math.PI\n\n  var b0_a1a = [57568490574.0, -13362590354.0, 651619640.7, -11214424.18, 77392.33017, -184.9052456].reverse();\n  var b0_a2a = [57568490411.0, 1029532985.0, 9494680.718, 59272.64853, 267.8532712, 1.0].reverse();\n  var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n  var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934935152e-7].reverse();\n\n  function bessel0(x) {\n    var a=0, a1=0, a2=0, y = x * x;\n    if(x < 8) {\n      a1 = _horner(b0_a1a, y);\n      a2 = _horner(b0_a2a, y);\n      a = a1 / a2;\n    } else {\n      var xx = x - 0.785398164;\n      y = 64 / y;\n      a1 = _horner(b0_a1b, y);\n      a2 = _horner(b0_a2b, y);\n      a = M.sqrt(W/x)*(M.cos(xx)*a1-M.sin(xx)*a2*8/x);\n    }\n    return a;\n  }\n\n  var b1_a1a = [72362614232.0, -7895059235.0, 242396853.1, -2972611.439, 15704.48260, -30.16036606].reverse();\n  var b1_a2a = [144725228442.0, 2300535178.0, 18583304.74, 99447.43394, 376.9991397, 1.0].reverse();\n  var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n  var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n  function bessel1(x) {\n    var a=0, a1=0, a2=0, y = x*x, xx = M.abs(x) - 2.356194491;\n    if(Math.abs(x)< 8) {\n      a1 = x*_horner(b1_a1a, y);\n      a2 = _horner(b1_a2a, y);\n      a = a1 / a2;\n    } else {\n      y = 64 / y;\n      a1=_horner(b1_a1b, y);\n      a2=_horner(b1_a2b, y);\n      a=M.sqrt(W/M.abs(x))*(M.cos(xx)*a1-M.sin(xx)*a2*8/M.abs(x));\n      if(x < 0) a = -a;\n    }\n    return a;\n  }\n\n  return function besselj(x, n) {\n    n = Math.round(n);\n    if(!isFinite(x)) return isNaN(x) ? x : 0;\n    if(n < 0) return ((n%2)?-1:1)*besselj(x, -n);\n    if(x < 0) return ((n%2)?-1:1)*besselj(-x, n);\n    if(n === 0) return bessel0(x);\n    if(n === 1) return bessel1(x);\n    if(x === 0) return 0;\n\n    var ret=0.0;\n    if(x > n) {\n      ret = _bessel_iter(x, n, bessel0(x), bessel1(x),-1);\n    } else {\n      var m=2*M.floor((n+M.floor(M.sqrt(40*n)))/2);\n      var jsum=false;\n      var bjp=0.0, sum=0.0;\n      var bj=1.0, bjm = 0.0;\n      var tox = 2 / x;\n      for (var j=m;j>0;j--) {\n        bjm=j*tox*bj-bjp;\n        bjp=bj;\n        bj=bjm;\n        if (M.abs(bj) > 1E10) {\n          bj *= 1E-10;\n          bjp *= 1E-10;\n          ret *= 1E-10;\n          sum *= 1E-10;\n        }\n        if (jsum) sum += bj;\n        jsum=!jsum;\n        if (j == n) ret=bjp;\n      }\n      sum=2.0*sum-bj;\n      ret /= sum;\n    }\n    return ret;\n  };\n})();\nvar bessely = (function() {\n  var W = 0.636619772;\n\n  var b0_a1a = [-2957821389.0, 7062834065.0, -512359803.6, 10879881.29, -86327.92757, 228.4622733].reverse();\n  var b0_a2a = [40076544269.0, 745249964.8, 7189466.438, 47447.26470, 226.1030244, 1.0].reverse();\n  var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n  var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934945152e-7].reverse();\n\n  function bessel0(x) {\n    var a=0, a1=0, a2=0, y = x * x, xx = x - 0.785398164;\n    if(x < 8) {\n      a1 = _horner(b0_a1a, y);\n      a2 = _horner(b0_a2a, y);\n      a = a1/a2 + W * besselj(x,0) * M.log(x);\n    } else {\n      y = 64 / y;\n      a1 = _horner(b0_a1b, y);\n      a2 = _horner(b0_a2b, y);\n      a = M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n    }\n    return a;\n  }\n\n  var b1_a1a = [-0.4900604943e13, 0.1275274390e13, -0.5153438139e11, 0.7349264551e9, -0.4237922726e7, 0.8511937935e4].reverse();\n  var b1_a2a = [0.2499580570e14, 0.4244419664e12, 0.3733650367e10, 0.2245904002e8, 0.1020426050e6, 0.3549632885e3, 1].reverse();\n  var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n  var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n  function bessel1(x) {\n    var a=0, a1=0, a2=0, y = x*x, xx = x - 2.356194491;\n    if(x < 8) {\n      a1 = x*_horner(b1_a1a, y);\n      a2 = _horner(b1_a2a, y);\n      a = a1/a2 + W * (besselj(x,1) * M.log(x) - 1 / x);\n    } else {\n      y = 64 / y;\n      a1=_horner(b1_a1b, y);\n      a2=_horner(b1_a2b, y);\n      a=M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n    }\n    return a;\n  }\n\n  return _bessel_wrap(bessel0, bessel1, 'BESSELY', 1, -1);\n})();\nvar besseli = (function() {\n  var b0_a = [1.0, 3.5156229, 3.0899424, 1.2067492, 0.2659732, 0.360768e-1, 0.45813e-2].reverse();\n  var b0_b = [0.39894228, 0.1328592e-1, 0.225319e-2, -0.157565e-2, 0.916281e-2, -0.2057706e-1, 0.2635537e-1, -0.1647633e-1, 0.392377e-2].reverse();\n\n  function bessel0(x) {\n    if(x <= 3.75) return _horner(b0_a, x*x/(3.75*3.75));\n    return M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b0_b, 3.75/M.abs(x));\n  }\n\n  var b1_a = [0.5, 0.87890594, 0.51498869, 0.15084934, 0.2658733e-1, 0.301532e-2, 0.32411e-3].reverse();\n  var b1_b = [0.39894228, -0.3988024e-1, -0.362018e-2, 0.163801e-2, -0.1031555e-1, 0.2282967e-1, -0.2895312e-1, 0.1787654e-1, -0.420059e-2].reverse();\n\n  function bessel1(x) {\n    if(x < 3.75) return x * _horner(b1_a, x*x/(3.75*3.75));\n    return (x < 0 ? -1 : 1) * M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b1_b, 3.75/M.abs(x));\n  }\n\n  return function besseli(x, n) {\n    n = Math.round(n);\n    if(n === 0) return bessel0(x);\n    if(n === 1) return bessel1(x);\n    if(n < 0) return NaN;\n    if(M.abs(x) === 0) return 0;\n    if(x == Infinity) return Infinity;\n\n    var ret = 0.0, j, tox = 2 / M.abs(x), bip = 0.0, bi=1.0, bim=0.0;\n    var m=2*M.round((n+M.round(M.sqrt(40*n)))/2);\n    for (j=m;j>0;j--) {\n      bim=j*tox*bi + bip;\n      bip=bi; bi=bim;\n      if (M.abs(bi) > 1E10) {\n        bi *= 1E-10;\n        bip *= 1E-10;\n        ret *= 1E-10;\n      }\n      if(j == n) ret = bip;\n    }\n    ret *= besseli(x, 0) / bi;\n    return x < 0 && (n%2) ? -ret : ret;\n  };\n\n})();\n\nvar besselk = (function() {\n  var b0_a = [-0.57721566, 0.42278420, 0.23069756, 0.3488590e-1, 0.262698e-2, 0.10750e-3, 0.74e-5].reverse();\n  var b0_b = [1.25331414, -0.7832358e-1, 0.2189568e-1, -0.1062446e-1, 0.587872e-2, -0.251540e-2, 0.53208e-3].reverse();\n\n  function bessel0(x) {\n    if(x <= 2) return -M.log(x/2) * besseli(x,0) + _horner(b0_a, x*x/4);\n    return M.exp(-x) / M.sqrt(x) * _horner(b0_b, 2/x);\n  }\n\n  var b1_a = [1.0, 0.15443144, -0.67278579, -0.18156897, -0.1919402e-1, -0.110404e-2, -0.4686e-4].reverse();\n  var b1_b = [1.25331414, 0.23498619, -0.3655620e-1, 0.1504268e-1, -0.780353e-2, 0.325614e-2, -0.68245e-3].reverse();\n\n  function bessel1(x) {\n    if(x <= 2) return M.log(x/2) * besseli(x,1) + (1/x) * _horner(b1_a, x*x/4);\n    return M.exp(-x)/M.sqrt(x)*_horner(b1_b, 2/x);\n  }\n\n  return _bessel_wrap(bessel0, bessel1, 'BESSELK', 2, 1);\n})();\nBESSEL.besselj = besselj;\nBESSEL.bessely = bessely;\nBESSEL.besseli = besseli;\nBESSEL.besselk = besselk;\n}));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for an {@link AudioTrack}.\n * @extends RemoteTrackStats\n * @property {?AudioLevel} audioLevel - Output {@link AudioLevel}\n * @property {?number} jitter - Audio jitter in milliseconds\n */\nvar RemoteAudioTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link AudioTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteAudioTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            audioLevel: {\n                value: typeof statsReport.audioOutputLevel === 'number'\n                    ? statsReport.audioOutputLevel\n                    : null,\n                enumerable: true\n            },\n            jitter: {\n                value: typeof statsReport.jitter === 'number'\n                    ? statsReport.jitter\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteAudioTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteAudioTrackStats;\n//# sourceMappingURL=remoteaudiotrackstats.js.map","'use strict';\nvar parent = require('../../es/regexp');\n\nmodule.exports = parent;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { placements } from './popper';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, outerRef) {\n  var flip = props.flip,\n      offset = props.offset,\n      placement = props.placement,\n      _props$containerPaddi = props.containerPadding,\n      containerPadding = _props$containerPaddi === void 0 ? 5 : _props$containerPaddi,\n      _props$popperConfig = props.popperConfig,\n      popperConfig = _props$popperConfig === void 0 ? {} : _props$popperConfig,\n      Transition = props.transition;\n\n  var _useCallbackRef = useCallbackRef(),\n      rootElement = _useCallbackRef[0],\n      attachRef = _useCallbackRef[1];\n\n  var _useCallbackRef2 = useCallbackRef(),\n      arrowElement = _useCallbackRef2[0],\n      attachArrowRef = _useCallbackRef2[1];\n\n  var mergedRef = useMergedRefs(attachRef, outerRef);\n  var container = useWaitForDOMRef(props.container);\n  var target = useWaitForDOMRef(props.target);\n\n  var _useState = useState(!props.show),\n      exited = _useState[0],\n      setExited = _useState[1];\n\n  var _usePopper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n    placement: placement,\n    enableEvents: !!props.show,\n    containerPadding: containerPadding || 5,\n    flip: flip,\n    offset: offset,\n    arrowElement: arrowElement,\n    popperConfig: popperConfig\n  })),\n      styles = _usePopper.styles,\n      attributes = _usePopper.attributes,\n      popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n  if (props.show) {\n    if (exited) setExited(false);\n  } else if (!props.transition && !exited) {\n    setExited(true);\n  }\n\n  var handleHidden = function handleHidden() {\n    setExited(true);\n\n    if (props.onExited) {\n      props.onExited.apply(props, arguments);\n    }\n  }; // Don't un-render the overlay while it's transitioning out.\n\n\n  var mountOverlay = props.show || Transition && !exited;\n  useRootClose(rootElement, props.onHide, {\n    disabled: !props.rootClose || props.rootCloseDisabled,\n    clickTrigger: props.rootCloseEvent\n  });\n\n  if (!mountOverlay) {\n    // Don't bother showing anything if we don't have to.\n    return null;\n  }\n\n  var child = props.children(_extends({}, popper, {\n    show: !!props.show,\n    props: _extends({}, attributes.popper, {\n      style: styles.popper,\n      ref: mergedRef\n    }),\n    arrowProps: _extends({}, attributes.arrow, {\n      style: styles.arrow,\n      ref: attachArrowRef\n    })\n  }));\n\n  if (Transition) {\n    var onExit = props.onExit,\n        onExiting = props.onExiting,\n        onEnter = props.onEnter,\n        onEntering = props.onEntering,\n        onEntered = props.onEntered;\n    child = /*#__PURE__*/React.createElement(Transition, {\n      \"in\": props.show,\n      appear: true,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered\n    }, child);\n  }\n\n  return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nOverlay.propTypes = {\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: PropTypes.bool,\n\n  /** Specify where the overlay element is positioned in relation to the target element */\n  placement: PropTypes.oneOf(placements),\n\n  /**\n   * A DOM Element, Ref to an element, or function that returns either. The `target` element is where\n   * the overlay is positioned relative to.\n   */\n  target: PropTypes.any,\n\n  /**\n   * A DOM Element, Ref to an element, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: PropTypes.any,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Overlay to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: PropTypes.bool,\n\n  /**\n   * A render prop that returns an element to overlay and position. See\n   * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   placement: Placement,\n   *   update: () => void,\n   *   forceUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *     [string]: string | number,\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     [string]: string | number,\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Control how much space there is between the edge of the boundary element and overlay.\n   * A convenience shortcut to setting `popperConfig.modfiers.preventOverflow.padding`\n   */\n  containerPadding: PropTypes.number,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: PropTypes.object,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: PropTypes.bool,\n\n  /**\n   * Specify event for toggling overlay\n   */\n  rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n  /**\n   * Specify disabled for disable RootCloseWrapper\n   */\n  rootCloseDisabled: PropTypes.bool,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (props.rootClose) {\n      var _PropTypes$func;\n\n      return (_PropTypes$func = PropTypes.func).isRequired.apply(_PropTypes$func, [props].concat(args));\n    }\n\n    return PropTypes.func.apply(PropTypes, [props].concat(args));\n  },\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component\n   * used to animate the overlay as it changes visibility.\n   */\n  // @ts-ignore\n  transition: PropTypes.elementType,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: PropTypes.func\n};\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from 'react-overlays/Overlay';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nimport Fade from './Fade';\nvar defaultProps = {\n  transition: Fade,\n  rootClose: false,\n  show: false,\n  placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n  var ref = props.ref;\n  var aRef = arrowProps.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(safeFindDOMNode(r));\n  });\n\n  arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n    return aRef(safeFindDOMNode(r));\n  });\n}\n\nfunction Overlay(_ref) {\n  var overlay = _ref.children,\n      transition = _ref.transition,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n      outerProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"transition\", \"popperConfig\"]);\n\n  var popperRef = useRef({});\n\n  var _usePopperMarginModif = usePopperMarginModifiers(),\n      ref = _usePopperMarginModif[0],\n      marginModifiers = _usePopperMarginModif[1];\n\n  var actualTransition = transition === true ? Fade : transition || null;\n  return /*#__PURE__*/React.createElement(BaseOverlay, _extends({}, outerProps, {\n    ref: ref,\n    popperConfig: _extends({}, popperConfig, {\n      modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n    }),\n    transition: actualTransition\n  }), function (_ref2) {\n    var _state$modifiersData$;\n\n    var overlayProps = _ref2.props,\n        arrowProps = _ref2.arrowProps,\n        show = _ref2.show,\n        update = _ref2.update,\n        _ = _ref2.forceUpdate,\n        placement = _ref2.placement,\n        state = _ref2.state,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"props\", \"arrowProps\", \"show\", \"update\", \"forceUpdate\", \"placement\", \"state\"]);\n\n    wrapRefs(overlayProps, arrowProps);\n    var popper = Object.assign(popperRef.current, {\n      state: state,\n      scheduleUpdate: update,\n      placement: placement,\n      outOfBoundaries: (state == null ? void 0 : (_state$modifiersData$ = state.modifiersData.hide) == null ? void 0 : _state$modifiersData$.isReferenceHidden) || false\n    });\n    if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n      placement: placement,\n      show: show,\n      popper: popper,\n      arrowProps: arrowProps\n    }));\n    return /*#__PURE__*/React.cloneElement(overlay, _extends({}, props, overlayProps, {\n      placement: placement,\n      arrowProps: arrowProps,\n      popper: popper,\n      className: classNames(overlay.props.className, !transition && show && 'show'),\n      style: _extends({}, overlay.props.style, overlayProps.style)\n    }));\n  });\n}\n\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport contains from 'dom-helpers/contains';\nimport React, { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport Overlay from './Overlay';\n\nvar RefHolder = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(RefHolder, _React$Component);\n\n  function RefHolder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = RefHolder.prototype;\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(React.Component);\n\nfunction normalizeDelay(delay) {\n  return delay && typeof delay === 'object' ? delay : {\n    show: delay,\n    hide: delay\n  };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut(handler, args, relatedNative) {\n  var e = args[0];\n  var target = e.currentTarget;\n  var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n  if ((!related || related !== target) && !contains(target, related)) {\n    handler.apply(void 0, args);\n  }\n}\n\nvar defaultProps = {\n  defaultShow: false,\n  trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger(_ref) {\n  var trigger = _ref.trigger,\n      overlay = _ref.overlay,\n      children = _ref.children,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n      propsShow = _ref.show,\n      _ref$defaultShow = _ref.defaultShow,\n      defaultShow = _ref$defaultShow === void 0 ? false : _ref$defaultShow,\n      onToggle = _ref.onToggle,\n      propsDelay = _ref.delay,\n      placement = _ref.placement,\n      _ref$flip = _ref.flip,\n      flip = _ref$flip === void 0 ? placement && placement.indexOf('auto') !== -1 : _ref$flip,\n      props = _objectWithoutPropertiesLoose(_ref, [\"trigger\", \"overlay\", \"children\", \"popperConfig\", \"show\", \"defaultShow\", \"onToggle\", \"delay\", \"placement\", \"flip\"]);\n\n  var triggerNodeRef = useRef(null);\n  var timeout = useTimeout();\n  var hoverStateRef = useRef('');\n\n  var _useUncontrolledProp = useUncontrolledProp(propsShow, defaultShow, onToggle),\n      show = _useUncontrolledProp[0],\n      setShow = _useUncontrolledProp[1];\n\n  var delay = normalizeDelay(propsDelay);\n\n  var _ref2 = typeof children !== 'function' ? React.Children.only(children).props : {},\n      onFocus = _ref2.onFocus,\n      onBlur = _ref2.onBlur,\n      onClick = _ref2.onClick;\n\n  var getTarget = useCallback(function () {\n    return safeFindDOMNode(triggerNodeRef.current);\n  }, []);\n  var handleShow = useCallback(function () {\n    timeout.clear();\n    hoverStateRef.current = 'show';\n\n    if (!delay.show) {\n      setShow(true);\n      return;\n    }\n\n    timeout.set(function () {\n      if (hoverStateRef.current === 'show') setShow(true);\n    }, delay.show);\n  }, [delay.show, setShow, timeout]);\n  var handleHide = useCallback(function () {\n    timeout.clear();\n    hoverStateRef.current = 'hide';\n\n    if (!delay.hide) {\n      setShow(false);\n      return;\n    }\n\n    timeout.set(function () {\n      if (hoverStateRef.current === 'hide') setShow(false);\n    }, delay.hide);\n  }, [delay.hide, setShow, timeout]);\n  var handleFocus = useCallback(function () {\n    handleShow();\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    onFocus == null ? void 0 : onFocus.apply(void 0, args);\n  }, [handleShow, onFocus]);\n  var handleBlur = useCallback(function () {\n    handleHide();\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    onBlur == null ? void 0 : onBlur.apply(void 0, args);\n  }, [handleHide, onBlur]);\n  var handleClick = useCallback(function () {\n    setShow(!show);\n    if (onClick) onClick.apply(void 0, arguments);\n  }, [onClick, setShow, show]);\n  var handleMouseOver = useCallback(function () {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    handleMouseOverOut(handleShow, args, 'fromElement');\n  }, [handleShow]);\n  var handleMouseOut = useCallback(function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    handleMouseOverOut(handleHide, args, 'toElement');\n  }, [handleHide]);\n  var triggers = trigger == null ? [] : [].concat(trigger);\n  var triggerProps = {};\n\n  if (triggers.indexOf('click') !== -1) {\n    triggerProps.onClick = handleClick;\n  }\n\n  if (triggers.indexOf('focus') !== -1) {\n    triggerProps.onFocus = handleFocus;\n    triggerProps.onBlur = handleBlur;\n  }\n\n  if (triggers.indexOf('hover') !== -1) {\n    process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n    triggerProps.onMouseOver = handleMouseOver;\n    triggerProps.onMouseOut = handleMouseOut;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(_extends({}, triggerProps, {\n    ref: triggerNodeRef\n  })) : /*#__PURE__*/React.createElement(RefHolder, {\n    ref: triggerNodeRef\n  }, /*#__PURE__*/cloneElement(children, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, props, {\n    show: show,\n    onHide: handleHide,\n    flip: flip,\n    placement: placement,\n    popperConfig: popperConfig,\n    target: getTarget\n  }), overlay));\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n  return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n    type: \"checkbox\"\n  }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n  return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n    type: \"radio\"\n  }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      size = _ref.size,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"size\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size)\n  }));\n});\nInputGroup.displayName = 'InputGroup';\n\nvar InputGroupWithExtras = _extends({}, InputGroup, {\n  Text: InputGroupText,\n  Radio: InputGroupRadio,\n  Checkbox: InputGroupCheckbox,\n  Append: InputGroupAppend,\n  Prepend: InputGroupPrepend\n});\n\nexport default InputGroupWithExtras;","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function p(n){return o=1,y(B,n)}function y(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){r.u=!0;var f=r.shouldComponentUpdate;r.shouldComponentUpdate=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!f||f.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!f||f.call(this,n,t,r))}}return o.__N||o.__}function h(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function s(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,s(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[])),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,h as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,s as useLayoutEffect,F as useMemo,y as useReducer,_ as useRef,p as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function R(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new n).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var N=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var A=function(n,t){return null==n?null:r(r(n).map(t))},O={map:A,forEach:A,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},T=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var I=e.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function V(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n)},(D.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__h=null),[t(u,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function P(n){return this.getChildContext=function(){return n.context},n.children}function $(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function j(n,e){var r=t($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new n).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=\"undefined\"!=typeof document,Z=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function Y(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function q(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var G=e.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}e.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var X,nn={configurable:!0,get:function(){return this.class}},tn=e.vnode;e.vnode=function(n){var t=n.type,e=n.props,u=e;if(\"string\"==typeof t){var o=-1===t.indexOf(\"-\");for(var i in u={},e){var l=e[i];H&&\"children\"===i&&\"noscript\"===t||\"value\"===i&&\"defaultValue\"in e&&null==l||(\"defaultValue\"===i&&\"value\"in e&&null==e.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":/ondoubleclick/i.test(i)?i=\"ondblclick\":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i=\"oninput\":/^onfocus$/i.test(i)?i=\"onfocusin\":/^onblur$/i.test(i)?i=\"onfocusout\":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,\"-$&\").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i=\"oninputCapture\")),u[i]=l)}\"select\"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=r(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==t&&null!=u.defaultValue&&(u.value=r(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),n.props=u,e.class!=e.className&&(nn.enumerable=\"className\"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,\"className\",nn))}n.$$typeof=z,tn&&tn(n)};var en=e.__r;e.__r=function(n){en&&en(n),X=n.__c};var rn={ReactCurrentDispatcher:{current:{readContext:function(n){return X.__n[n.__c].props.value}}}},un=\"17.0.2\";function on(n){return t.bind(null,n)}function ln(n){return!!n&&n.$$typeof===z}function cn(n){return ln(n)?f.apply(null,arguments):n}function fn(n){return!!n.__k&&(o(null,n),!0)}function an(n){return n&&(n.base||1===n.nodeType&&n)||null}var sn=function(n,t){return n(t)},hn=function(n,t){return n(t)},vn=u;function dn(n){n()}function pn(n){return n}function mn(){return[!1,dn]}var yn=d;function _n(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),v(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var bn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:yn,useTransition:mn,useDeferredValue:pn,useSyncExternalStore:_n,startTransition:dn,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:O,render:Y,hydrate:q,unmountComponentAtNode:fn,createPortal:j,createElement:t,createContext:l,createFactory:on,cloneElement:cn,createRef:c,Fragment:u,isValidElement:ln,findDOMNode:an,Component:n,PureComponent:w,memo:R,forwardRef:k,flushSync:hn,unstable_batchedUpdates:sn,StrictMode:vn,Suspense:D,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:rn};export{O as Children,w as PureComponent,vn as StrictMode,D as Suspense,V as SuspenseList,rn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,cn as cloneElement,on as createFactory,j as createPortal,bn as default,an as findDOMNode,hn as flushSync,k as forwardRef,q as hydrate,ln as isValidElement,M as lazy,R as memo,Y as render,dn as startTransition,fn as unmountComponentAtNode,sn as unstable_batchedUpdates,pn as useDeferredValue,yn as useInsertionEffect,_n as useSyncExternalStore,mn as useTransition,un as version};\n//# sourceMappingURL=compat.module.js.map\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module path */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar param_1 = require(\"../params/param\");\n/**\n * @internalapi\n *\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nvar PathNode = /** @class */ (function () {\n    function PathNode(stateOrNode) {\n        if (stateOrNode instanceof PathNode) {\n            var node = stateOrNode;\n            this.state = node.state;\n            this.paramSchema = node.paramSchema.slice();\n            this.paramValues = common_1.extend({}, node.paramValues);\n            this.resolvables = node.resolvables.slice();\n            this.views = node.views && node.views.slice();\n        }\n        else {\n            var state = stateOrNode;\n            this.state = state;\n            this.paramSchema = state.parameters({ inherit: false });\n            this.paramValues = {};\n            this.resolvables = state.resolvables.map(function (res) { return res.clone(); });\n        }\n    }\n    PathNode.prototype.clone = function () {\n        return new PathNode(this);\n    };\n    /** Sets [[paramValues]] for the node, from the values of an object hash */\n    PathNode.prototype.applyRawParams = function (params) {\n        var getParamVal = function (paramDef) { return [paramDef.id, paramDef.value(params[paramDef.id])]; };\n        this.paramValues = this.paramSchema.reduce(function (memo, pDef) { return common_1.applyPairs(memo, getParamVal(pDef)); }, {});\n        return this;\n    };\n    /** Gets a specific [[Param]] metadata that belongs to the node */\n    PathNode.prototype.parameter = function (name) {\n        return common_1.find(this.paramSchema, hof_1.propEq('id', name));\n    };\n    /**\n     * @returns true if the state and parameter values for another PathNode are\n     * equal to the state and param values for this PathNode\n     */\n    PathNode.prototype.equals = function (node, paramsFn) {\n        var diff = this.diff(node, paramsFn);\n        return diff && diff.length === 0;\n    };\n    /**\n     * Finds Params with different parameter values on another PathNode.\n     *\n     * Given another node (of the same state), finds the parameter values which differ.\n     * Returns the [[Param]] (schema objects) whose parameter values differ.\n     *\n     * Given another node for a different state, returns `false`\n     *\n     * @param node The node to compare to\n     * @param paramsFn A function that returns which parameters should be compared.\n     * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n     */\n    PathNode.prototype.diff = function (node, paramsFn) {\n        if (this.state !== node.state)\n            return false;\n        var params = paramsFn ? paramsFn(this) : this.paramSchema;\n        return param_1.Param.changed(params, this.paramValues, node.paramValues);\n    };\n    /**\n     * Returns a clone of the PathNode\n     * @deprecated use instance method `node.clone()`\n     */\n    PathNode.clone = function (node) { return node.clone(); };\n    return PathNode;\n}());\nexports.PathNode = PathNode;\n//# sourceMappingURL=pathNode.js.map","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n                '_'\n            ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","'use strict';\nvar parent = require('../../stable/array');\nrequire('../../modules/esnext.array.from-async');\nrequire('../../modules/esnext.array.group');\nrequire('../../modules/esnext.array.group-to-map');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.array.find-last');\nrequire('../../modules/esnext.array.find-last-index');\nrequire('../../modules/esnext.array.group-by');\nrequire('../../modules/esnext.array.group-by-to-map');\nrequire('../../modules/esnext.array.to-reversed');\nrequire('../../modules/esnext.array.to-sorted');\nrequire('../../modules/esnext.array.to-spliced');\nrequire('../../modules/esnext.array.with');\n\nmodule.exports = parent;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalDataTrackPublication} is a {@link LocalDataTrack} that has been\n * published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"data\"\n * @property {LocalDataTrack} track - the {@link LocalDataTrack}\n */\nvar LocalDataTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalDataTrackPublication, _super);\n    /**\n     * Construct a {@link LocalDataTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalDataTrack} track - the {@link LocalDataTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalDataTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalDataTrackPublication.prototype.toString = function () {\n        return \"[LocalDataTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return LocalDataTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalDataTrackPublication;\n//# sourceMappingURL=localdatatrackpublication.js.map","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n  sup: function sup() {\n    return createHTML(this, 'sup', '', '');\n  }\n});\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar constants = require('./constants');\nvar E = constants.typeErrors, trackPriority = constants.trackPriority;\nvar util = require('../webrtc/util');\nvar sessionSID = require('./sid').sessionSID;\nvar TwilioWarning = require('./twiliowarning');\n/**\n * Return the given {@link LocalTrack} or a new {@link LocalTrack} for the\n * given MediaStreamTrack.\n * @param {LocalTrack|MediaStreamTrack} track\n * @param {object} options\n * @returns {LocalTrack}\n * @throws {TypeError}\n */\nfunction asLocalTrack(track, options) {\n    if (track instanceof options.LocalAudioTrack\n        || track instanceof options.LocalVideoTrack\n        || track instanceof options.LocalDataTrack) {\n        return track;\n    }\n    if (track instanceof options.MediaStreamTrack) {\n        return track.kind === 'audio'\n            ? new options.LocalAudioTrack(track, options)\n            : new options.LocalVideoTrack(track, options);\n    }\n    /* eslint new-cap:0 */\n    throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n}\n/**\n * Create a new {@link LocalTrackPublication} for the given {@link LocalTrack}.\n * @param {LocalTrack} track\n * @param {LocalTrackPublicationSignaling} signaling\n * @param {function(track: LocalTrackPublication): void} unpublish\n * @param {object} options\n */\nfunction asLocalTrackPublication(track, signaling, unpublish, options) {\n    var LocalTrackPublication = {\n        audio: options.LocalAudioTrackPublication,\n        video: options.LocalVideoTrackPublication,\n        data: options.LocalDataTrackPublication\n    }[track.kind];\n    return new LocalTrackPublication(signaling, track, unpublish, options);\n}\n/**\n * Capitalize a word.\n * @param {string} word\n * @returns {string} capitalized\n */\nfunction capitalize(word) {\n    return word[0].toUpperCase() + word.slice(1);\n}\n/**\n * Log deprecation warnings for the given events of an EventEmitter.\n * @param {string} name\n * @param {EventEmitter} emitter\n * @param {Map<string, string>} events\n * @param {Log} log\n */\nfunction deprecateEvents(name, emitter, events, log) {\n    var warningsShown = new Set();\n    emitter.on('newListener', function newListener(event) {\n        if (events.has(event) && !warningsShown.has(event)) {\n            log.deprecated(name + \"#\" + event + \" has been deprecated and scheduled for removal in twilio-video.js@2.0.0.\" + (events.get(event)\n                ? \" Use \" + name + \"#\" + events.get(event) + \" instead.\"\n                : ''));\n            warningsShown.add(event);\n        }\n        if (warningsShown.size >= events.size) {\n            emitter.removeListener('newListener', newListener);\n        }\n    });\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n    list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n    list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n    var difference = new Set();\n    list1.forEach(function (item) {\n        if (!list2.has(item)) {\n            difference.add(item);\n        }\n    });\n    return difference;\n}\n/**\n * Filter out the keys in an object with a given value.\n * @param {object} object - Object to be filtered\n * @param {*} [filterValue] - Value to be filtered out; If not specified, then\n *   filters out all keys which have an explicit value of \"undefined\"\n * @returns {object} - Filtered object\n */\nfunction filterObject(object, filterValue) {\n    return Object.keys(object).reduce(function (filtered, key) {\n        if (object[key] !== filterValue) {\n            filtered[key] = object[key];\n        }\n        return filtered;\n    }, {});\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} [mapFn]\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n    var listArray = list instanceof Map || list instanceof Set\n        ? Array.from(list.values())\n        : list;\n    mapFn = mapFn || function mapFn(item) {\n        return item;\n    };\n    return listArray.reduce(function (flattened, item) {\n        var mapped = mapFn(item);\n        return flattened.concat(mapped);\n    }, []);\n}\n/**\n * Get the user agent string, or return \"Unknown\".\n * @returns {string}\n */\nfunction getUserAgent() {\n    return typeof navigator !== 'undefined' && navigator.userAgent\n        ? navigator.userAgent\n        : 'Unknown';\n}\n/**\n * Get the platform component of the user agent string.\n * Example:\n *   Input - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36\n *   Output - macintosh\n * @returns {string}\n */\nfunction getPlatform() {\n    var userAgent = getUserAgent();\n    var _a = __read(userAgent.match(/\\(([^)]+)\\)/) || [], 2), _b = _a[1], match = _b === void 0 ? 'unknown' : _b;\n    var _c = __read(match.split(';').map(function (entry) { return entry.trim(); }), 1), platform = _c[0];\n    return platform.toLowerCase();\n}\n/**\n * Create a unique identifier.\n * @returns {string}\n */\nfunction makeUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n/**\n * Ensure that the given function is called once per tick.\n * @param {function} fn - Function to be executed\n * @returns {function} - Schedules the given function to be called on the next tick\n */\nfunction oncePerTick(fn) {\n    var timeout = null;\n    function nextTick() {\n        timeout = null;\n        fn();\n    }\n    return function scheduleNextTick() {\n        if (timeout) {\n            clearTimeout(timeout);\n        }\n        timeout = setTimeout(nextTick);\n    };\n}\nfunction promiseFromEvents(operation, eventEmitter, successEvent, failureEvent) {\n    return new Promise(function (resolve, reject) {\n        function onSuccess() {\n            var args = [].slice.call(arguments);\n            if (failureEvent) {\n                eventEmitter.removeListener(failureEvent, onFailure);\n            }\n            resolve.apply(void 0, __spreadArray([], __read(args)));\n        }\n        function onFailure() {\n            var args = [].slice.call(arguments);\n            eventEmitter.removeListener(successEvent, onSuccess);\n            reject.apply(void 0, __spreadArray([], __read(args)));\n        }\n        eventEmitter.once(successEvent, onSuccess);\n        if (failureEvent) {\n            eventEmitter.once(failureEvent, onFailure);\n        }\n        operation();\n    });\n}\n/**\n * Traverse down multiple nodes on an object and return null if\n * any link in the path is unavailable.\n * @param {Object} obj - Object to traverse\n * @param {String} path - Path to traverse. Period-separated.\n * @returns {Any|null}\n */\nfunction getOrNull(obj, path) {\n    return path.split('.').reduce(function (output, step) {\n        if (!output) {\n            return null;\n        }\n        return output[step];\n    }, obj);\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n    var deferred = {};\n    deferred.promise = new Promise(function (resolve, reject) {\n        deferred.resolve = resolve;\n        deferred.reject = reject;\n    });\n    return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n    if (methodName in wrapper) {\n        // Skip any methods already set.\n        return;\n    }\n    else if (methodName.match(/^on[a-z]+$/)) {\n        // Skip EventHandlers (these are handled in the constructor).\n        return;\n    }\n    var type;\n    try {\n        type = typeof source[methodName];\n    }\n    catch (error) {\n        // NOTE(mroberts): Attempting to check the type of non-function members\n        // on the prototype throws an error for some types.\n    }\n    if (type !== 'function') {\n        // Skip non-function members.\n        return;\n    }\n    /* eslint no-loop-func:0 */\n    wrapper[methodName] = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return (_a = this[target])[methodName].apply(_a, __spreadArray([], __read(args)));\n    };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n    for (var methodName in source) {\n        delegateMethod(source, wrapper, target, methodName);\n    }\n}\n/**\n * Determine whether two values are deeply equal.\n * @param {*} val1\n * @param {*} val2\n * @returns {boolean}\n */\nfunction isDeepEqual(val1, val2) {\n    if (val1 === val2) {\n        return true;\n    }\n    if (typeof val1 !== typeof val2) {\n        return false;\n    }\n    if (val1 === null) {\n        return val2 === null;\n    }\n    if (val2 === null) {\n        return false;\n    }\n    if (Array.isArray(val1)) {\n        return Array.isArray(val2)\n            && val1.length === val2.length\n            && val1.every(function (val, i) { return isDeepEqual(val, val2[i]); });\n    }\n    if (typeof val1 === 'object') {\n        var val1Keys = Object.keys(val1).sort();\n        var val2Keys = Object.keys(val2).sort();\n        return !Array.isArray(val2)\n            && isDeepEqual(val1Keys, val2Keys)\n            && val1Keys.every(function (key) { return isDeepEqual(val1[key], val2[key]); });\n    }\n    return false;\n}\n/**\n * Whether the given argument is a non-array object.\n * @param {*} object\n * @return {boolean}\n */\nfunction isNonArrayObject(object) {\n    return typeof object === 'object' && !Array.isArray(object);\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n    Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n        proxyProperty(source, wrapper, target, propertyName);\n    });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n    if (propertyName in wrapper) {\n        // Skip any properties already set.\n        return;\n    }\n    else if (propertyName.match(/^on[a-z]+$/)) {\n        Object.defineProperty(wrapper, propertyName, {\n            value: null,\n            writable: true\n        });\n        target.addEventListener(propertyName.slice(2), function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args)));\n        });\n        return;\n    }\n    Object.defineProperty(wrapper, propertyName, {\n        enumerable: true,\n        get: function () {\n            return target[propertyName];\n        }\n    });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function<Error>} onFailure\n * @returns {Promise<undefined>}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n    if (onSuccess) {\n        return promise.then(function (result) {\n            onSuccess(result);\n        }, function (error) {\n            onFailure(error);\n        });\n    }\n    return promise;\n}\n/**\n * Build the {@link LogLevels} object.\n * @param {String|LogLevel} logLevel - Log level name or object\n * @returns {LogLevels}\n */\nfunction buildLogLevels(logLevel) {\n    if (typeof logLevel === 'string') {\n        return {\n            default: logLevel,\n            media: logLevel,\n            signaling: logLevel,\n            webrtc: logLevel\n        };\n    }\n    return logLevel;\n}\n/**\n * Get the {@link Track}'s derived class name\n * @param {Track} track\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackClass(track, local) {\n    local = local ? 'Local' : '';\n    return local + (track.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }) + \"Track\";\n}\n/**\n * Get the {@link TrackPublication}'s derived class name\n * @param {TrackPublication} publication\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackPublicationClass(publication, local) {\n    local = local ? 'Local' : '';\n    return local + (publication.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }) + \"TrackPublication\";\n}\n/**\n * Sets all underscore-prefixed properties on `object` non-enumerable.\n * @param {Object} object\n * @returns {void}\n */\nfunction hidePrivateProperties(object) {\n    Object.getOwnPropertyNames(object).forEach(function (name) {\n        if (name.startsWith('_')) {\n            hideProperty(object, name);\n        }\n    });\n}\n/**\n * Creates a new subclass which, in the constructor, sets all underscore-prefixed\n * properties and the given public properties non-enumerable. This is useful for\n * patching up classes like EventEmitter which may set properties like `_events`\n * and `domain`.\n * @param {Function} klass\n * @param {Array<string>} props\n * @returns {Function} subclass\n */\nfunction hidePrivateAndCertainPublicPropertiesInClass(klass, props) {\n    // NOTE(mroberts): We do this to avoid giving the class a name.\n    return /** @class */ (function (_super) {\n        __extends(class_1, _super);\n        function class_1() {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var _this = _super.apply(this, __spreadArray([], __read(args))) || this;\n            hidePrivateProperties(_this);\n            hidePublicProperties(_this, props);\n            return _this;\n        }\n        return class_1;\n    }(klass));\n}\n/**\n * Hide a property of an object.\n * @param {object} object\n * @param {string} name\n */\nfunction hideProperty(object, name) {\n    var descriptor = Object.getOwnPropertyDescriptor(object, name);\n    descriptor.enumerable = false;\n    Object.defineProperty(object, name, descriptor);\n}\n/**\n * Hide the given public properties of an object.\n * @param {object} object\n * @param {Array<string>} [props=[]]\n */\nfunction hidePublicProperties(object, props) {\n    if (props === void 0) { props = []; }\n    props.forEach(function (name) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (object.hasOwnProperty(name)) {\n            hideProperty(object, name);\n        }\n    });\n}\n/**\n * Convert an Array of values to an Array of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Array<*>} array\n * @returns {Array<*>}\n */\nfunction arrayToJSON(array) {\n    return array.map(valueToJSON);\n}\n/**\n * Convert a Set of values to an Array of JSON values by calling `valueToJSON`\n * on each value.\n * @param {Set<*>} set\n * @returns {Array<*>}\n */\nfunction setToJSON(set) {\n    return arrayToJSON(__spreadArray([], __read(set)));\n}\n/**\n * Convert a Map from strings to values to an object of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Map<string, *>} map\n * @returns {object}\n */\nfunction mapToJSON(map) {\n    return __spreadArray([], __read(map.entries())).reduce(function (json, _a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n    }, {});\n}\n/**\n * Convert an object to a JSON value by calling `valueToJSON` on its enumerable\n * keys.\n * @param {object} object\n * @returns {object}\n */\nfunction objectToJSON(object) {\n    return Object.entries(object).reduce(function (json, _a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n    }, {});\n}\n/**\n * Convert a value into a JSON value.\n * @param {*} value\n * @returns {*}\n */\nfunction valueToJSON(value) {\n    if (Array.isArray(value)) {\n        return arrayToJSON(value);\n    }\n    else if (value instanceof Set) {\n        return setToJSON(value);\n    }\n    else if (value instanceof Map) {\n        return mapToJSON(value);\n    }\n    else if (value && typeof value === 'object') {\n        return objectToJSON(value);\n    }\n    return value;\n}\nfunction createRoomConnectEventPayload(connectOptions) {\n    function boolToString(val) {\n        return val ? 'true' : 'false';\n    }\n    var payload = {\n        sessionSID: sessionSID,\n        // arrays props converted to lengths.\n        iceServers: (connectOptions.iceServers || []).length,\n        audioTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'audio'; }).length,\n        videoTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'video'; }).length,\n        dataTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'data'; }).length,\n    };\n    // boolean properties.\n    [['audio'], ['automaticSubscription'], ['enableDscp'], ['eventListener'], ['preflight'], ['video'], ['dominantSpeaker', 'enableDominantSpeaker']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        payload[eventProp] = boolToString(!!connectOptions[prop]);\n    });\n    // numbers properties.\n    [['maxVideoBitrate'], ['maxAudioBitrate']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        if (typeof connectOptions[prop] === 'number') {\n            payload[eventProp] = connectOptions[prop];\n        }\n        else if (!isNaN(Number(connectOptions[prop]))) {\n            payload[eventProp] = Number(connectOptions[prop]);\n        }\n    });\n    // string properties.\n    [['iceTransportPolicy'], ['region'], ['name', 'roomName']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        if (typeof connectOptions[prop] === 'string') {\n            payload[eventProp] = connectOptions[prop];\n        }\n        else if (typeof connectOptions[prop] === 'number' && prop === 'name') {\n            payload[eventProp] = connectOptions[prop].toString();\n        }\n    });\n    // array props stringified.\n    ['preferredAudioCodecs', 'preferredVideoCodecs'].forEach(function (prop) {\n        if (prop in connectOptions) {\n            payload[prop] = JSON.stringify(connectOptions[prop]);\n        }\n    });\n    if ('networkQuality' in connectOptions) {\n        payload.networkQualityConfiguration = {};\n        if (isNonArrayObject(connectOptions.networkQuality)) {\n            ['local', 'remote'].forEach(function (prop) {\n                if (typeof connectOptions.networkQuality[prop] === 'number') {\n                    payload.networkQualityConfiguration[prop] = connectOptions.networkQuality[prop];\n                }\n            });\n        }\n        else {\n            payload.networkQualityConfiguration.remote = 0;\n            payload.networkQualityConfiguration.local = connectOptions.networkQuality ? 1 : 0;\n        }\n    }\n    if (connectOptions.bandwidthProfile && connectOptions.bandwidthProfile.video) {\n        var videoBPOptions_1 = connectOptions.bandwidthProfile.video || {};\n        payload.bandwidthProfileOptions = {};\n        ['mode', 'maxTracks', 'trackSwitchOffMode', 'dominantSpeakerPriority', 'maxSubscriptionBitrate', 'renderDimensions', 'contentPreferencesMode', 'clientTrackSwitchOffControl'].forEach(function (prop) {\n            if (typeof videoBPOptions_1[prop] === 'number' || typeof videoBPOptions_1[prop] === 'string') {\n                payload.bandwidthProfileOptions[prop] = videoBPOptions_1[prop];\n            }\n            else if (typeof videoBPOptions_1[prop] === 'boolean') {\n                payload.bandwidthProfileOptions[prop] = boolToString(videoBPOptions_1[prop]);\n            }\n            else if (typeof videoBPOptions_1[prop] === 'object') {\n                payload.bandwidthProfileOptions[prop] = JSON.stringify(videoBPOptions_1[prop]);\n            }\n        });\n    }\n    return {\n        group: 'room',\n        name: 'connect',\n        level: 'info',\n        payload: payload\n    };\n}\n/**\n * Create the bandwidth profile payload included in an RSP connect message.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {object}\n */\nfunction createBandwidthProfilePayload(bandwidthProfile) {\n    return createRSPPayload(bandwidthProfile, [\n        { prop: 'video', type: 'object', transform: createBandwidthProfileVideoPayload }\n    ]);\n}\n/**\n * Create the bandwidth profile video payload included in an RSP connect message.\n * @param {VideoBandwidthProfileOptions} bandwidthProfileVideo\n * @returns {object}\n */\nfunction createBandwidthProfileVideoPayload(bandwidthProfileVideo) {\n    return createRSPPayload(bandwidthProfileVideo, [\n        { prop: 'dominantSpeakerPriority', type: 'string', payloadProp: 'active_speaker_priority' },\n        { prop: 'maxSubscriptionBitrate', type: 'number', payloadProp: 'max_subscription_bandwidth' },\n        { prop: 'maxTracks', type: 'number', payloadProp: 'max_tracks' },\n        { prop: 'mode', type: 'string' },\n        { prop: 'renderDimensions', type: 'object', payloadProp: 'render_dimensions', transform: createRenderDimensionsPayload },\n        { prop: 'trackSwitchOffMode', type: 'string', payloadProp: 'track_switch_off' }\n    ]);\n}\n/**\n * Create the Media Signaling payload included in an RSP connect message.\n * @param {boolean} dominantSpeaker - whether to enable the Dominant Speaker\n *   protocol or not\n * @param {boolean} networkQuality - whether to enable the Network Quality\n *   protocol or not\n * @param {boolean} trackPriority - whether to enable the Track Priority\n *   protocol or not\n * @param {boolean} trackSwitchOff - whether to enable the Track Switch-Off\n *   protocol or not.\n * @param {boolean} renderHints - whether to enable the renderHints\n *   protocol or not.\n * @returns {object}\n */\nfunction createMediaSignalingPayload(dominantSpeaker, networkQuality, trackPriority, trackSwitchOff, adaptiveSimulcast, renderHints) {\n    var transports = { transports: [{ type: 'data-channel' }] };\n    return Object.assign(dominantSpeaker\n        // eslint-disable-next-line\n        ? { active_speaker: transports }\n        : {}, networkQuality\n        // eslint-disable-next-line\n        ? { network_quality: transports }\n        : {}, renderHints\n        // eslint-disable-next-line\n        ? { render_hints: transports }\n        : {}, adaptiveSimulcast\n        // eslint-disable-next-line\n        ? { publisher_hints: transports }\n        : {}, trackPriority\n        // eslint-disable-next-line\n        ? { track_priority: transports }\n        : {}, trackSwitchOff\n        // eslint-disable-next-line\n        ? { track_switch_off: transports }\n        : {});\n}\n/**\n * Create {@link VideoTrack.Dimensions} RSP payload.\n * @param {VideoTrack.Dimensions} [dimensions]\n * @returns {object}\n */\nfunction createDimensionsPayload(dimensions) {\n    return createRSPPayload(dimensions, [\n        { prop: 'height', type: 'number' },\n        { prop: 'width', type: 'number' }\n    ]);\n}\n/**\n * Create {@link VideoRenderDimensions} RSP payload.\n * @param renderDimensions\n * @returns {object}\n */\nfunction createRenderDimensionsPayload(renderDimensions) {\n    var PRIORITY_HIGH = trackPriority.PRIORITY_HIGH, PRIORITY_LOW = trackPriority.PRIORITY_LOW, PRIORITY_STANDARD = trackPriority.PRIORITY_STANDARD;\n    return createRSPPayload(renderDimensions, [\n        { prop: PRIORITY_HIGH, type: 'object', transform: createDimensionsPayload },\n        { prop: PRIORITY_LOW, type: 'object', transform: createDimensionsPayload },\n        { prop: PRIORITY_STANDARD, type: 'object', transform: createDimensionsPayload }\n    ]);\n}\n/**\n * Create an RSP payload for the given object.\n * @param {object} object - object for which RSP payload is to be generated\n * @param {Array<object>} propConversions - conversion rules for object properties;\n *   they specify how object properties should be converted to their corresponding\n *   RSP payload properties\n * @returns {object}\n */\nfunction createRSPPayload(object, propConversions) {\n    return propConversions.reduce(function (payload, _a) {\n        var _b;\n        var prop = _a.prop, type = _a.type, _c = _a.payloadProp, payloadProp = _c === void 0 ? prop : _c, _d = _a.transform, transform = _d === void 0 ? function (x) { return x; } : _d;\n        return typeof object[prop] === type\n            ? Object.assign((_b = {}, _b[payloadProp] = transform(object[prop]), _b), payload)\n            : payload;\n    }, {});\n}\n/**\n * Create the subscribe payload included in an RSP connect/update message.\n * @param {boolean} automaticSubscription - whether to subscribe to all RemoteTracks\n * @returns {object}\n */\nfunction createSubscribePayload(automaticSubscription) {\n    return {\n        rules: [{\n                type: automaticSubscription ? 'include' : 'exclude',\n                all: true\n            }],\n        revision: 1\n    };\n}\nfunction createMediaWarningsPayload(notifyWarnings) {\n    var _a;\n    var mediaWarnings = (_a = {},\n        _a[TwilioWarning.recordingMediaLost] = 'recordings',\n        _a);\n    return notifyWarnings\n        .map(function (twilioWarningName) { return mediaWarnings[twilioWarningName]; })\n        .filter(function (name) { return !!name; });\n}\n/**\n * Add random jitter to a given value in the range [-jitter, jitter].\n * @private\n * @param {number} value\n * @param {number} jitter\n * @returns {number} value + random(-jitter, +jitter)\n */\nfunction withJitter(value, jitter) {\n    var rand = Math.random();\n    return value - jitter + Math.floor(2 * jitter * rand + 0.5);\n}\n/**\n * Checks if the a number is in the range [min, max].\n * @private\n * @param {num} num\n * @param {number} min\n * @param {number} max\n * @return {boolean}\n */\nfunction inRange(num, min, max) {\n    return min <= num && num <= max;\n}\n/**\n * returns true if given MediaStreamTrack is a screen share track\n * @private\n * @param {MediaStreamTrack} track\n * @returns {boolean}\n */\nfunction isChromeScreenShareTrack(track) {\n    // NOTE(mpatwardhan): Chrome creates screen share tracks with label like: \"screen:69734272*\"\n    // we will check for label that starts with \"screen:D\" where D being a digit.\n    return util.guessBrowser() === 'chrome' && track.kind === 'video' && 'displaySurface' in track.getSettings();\n}\n/**\n * returns true if given MediaStreamTrack is a user media track\n * @private\n * @param {MediaStreamTrack} track\n * @returns {boolean}\n */\nfunction isUserMediaTrack(track) {\n    // NOTE(mpatwardhan): tracks obtained from getUserMedia have a deviceId in its settings.\n    return typeof track.getSettings().deviceId === 'string';\n}\n/**\n * Returns a promise that resolve after timeoutMS have passed.\n * @param {number} timeoutMS - time to wait in milliseconds.\n * @returns {Promise<void>}\n */\nfunction waitForSometime(timeoutMS) {\n    if (timeoutMS === void 0) { timeoutMS = 10; }\n    return new Promise(function (resolve) { return setTimeout(resolve, timeoutMS); });\n}\n/**\n * Returns a promise that resolve after event is received\n * @returns {Promise<void>}\n */\nfunction waitForEvent(eventTarget, event) {\n    return new Promise(function (resolve) {\n        eventTarget.addEventListener(event, function onevent(e) {\n            eventTarget.removeEventListener(event, onevent);\n            resolve(e);\n        });\n    });\n}\nexports.constants = constants;\nexports.createBandwidthProfilePayload = createBandwidthProfilePayload;\nexports.createMediaSignalingPayload = createMediaSignalingPayload;\nexports.createMediaWarningsPayload = createMediaWarningsPayload;\nexports.createRoomConnectEventPayload = createRoomConnectEventPayload;\nexports.createSubscribePayload = createSubscribePayload;\nexports.asLocalTrack = asLocalTrack;\nexports.asLocalTrackPublication = asLocalTrackPublication;\nexports.capitalize = capitalize;\nexports.deprecateEvents = deprecateEvents;\nexports.difference = difference;\nexports.filterObject = filterObject;\nexports.flatMap = flatMap;\nexports.getPlatform = getPlatform;\nexports.getUserAgent = getUserAgent;\nexports.hidePrivateProperties = hidePrivateProperties;\nexports.hidePrivateAndCertainPublicPropertiesInClass = hidePrivateAndCertainPublicPropertiesInClass;\nexports.isDeepEqual = isDeepEqual;\nexports.isNonArrayObject = isNonArrayObject;\nexports.inRange = inRange;\nexports.makeUUID = makeUUID;\nexports.oncePerTick = oncePerTick;\nexports.promiseFromEvents = promiseFromEvents;\nexports.getOrNull = getOrNull;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.proxyProperties = proxyProperties;\nexports.legacyPromise = legacyPromise;\nexports.buildLogLevels = buildLogLevels;\nexports.trackClass = trackClass;\nexports.trackPublicationClass = trackPublicationClass;\nexports.valueToJSON = valueToJSON;\nexports.withJitter = withJitter;\nexports.isChromeScreenShareTrack = isChromeScreenShareTrack;\nexports.isUserMediaTrack = isUserMediaTrack;\nexports.waitForSometime = waitForSometime;\nexports.waitForEvent = waitForEvent;\n//# sourceMappingURL=index.js.map","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n  defineProperty(FunctionPrototype, METADATA, {\n    value: null\n  });\n}\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","(function (window, factory) {\n    if (typeof exports === 'object') {\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        define(factory);\n    } else {\n        window.jStat = factory();\n    }\n})(this, function () {\nvar jStat = (function(Math, undefined) {\n\n// For quick reference.\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n// Calculate correction for IEEE error\n// TODO: This calculation can be improved.\nfunction calcRdx(n, m) {\n  var val = n > m ? n : m;\n  return Math.pow(10,\n                  17 - ~~(Math.log(((val > 0) ? val : -val)) * Math.LOG10E));\n}\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n  return toString.call(arg) === '[object Array]';\n};\n\n\nfunction isFunction(arg) {\n  return toString.call(arg) === '[object Function]';\n}\n\n\nfunction isNumber(num) {\n  return (typeof num === 'number') ? num - num === 0 : false;\n}\n\n\n// Converts the jStat matrix to vector.\nfunction toVector(arr) {\n  return concat.apply([], arr);\n}\n\n\n// The one and only jStat constructor.\nfunction jStat() {\n  return new jStat._init(arguments);\n}\n\n\n// TODO: Remove after all references in src files have been removed.\njStat.fn = jStat.prototype;\n\n\n// By separating the initializer from the constructor it's easier to handle\n// always returning a new instance whether \"new\" was used or not.\njStat._init = function _init(args) {\n  // If first argument is an array, must be vector or matrix.\n  if (isArray(args[0])) {\n    // Check if matrix.\n    if (isArray(args[0][0])) {\n      // See if a mapping function was also passed.\n      if (isFunction(args[1]))\n        args[0] = jStat.map(args[0], args[1]);\n      // Iterate over each is faster than this.push.apply(this, args[0].\n      for (var i = 0; i < args[0].length; i++)\n        this[i] = args[0][i];\n      this.length = args[0].length;\n\n    // Otherwise must be a vector.\n    } else {\n      this[0] = isFunction(args[1]) ? jStat.map(args[0], args[1]) : args[0];\n      this.length = 1;\n    }\n\n  // If first argument is number, assume creation of sequence.\n  } else if (isNumber(args[0])) {\n    this[0] = jStat.seq.apply(null, args);\n    this.length = 1;\n\n  // Handle case when jStat object is passed to jStat.\n  } else if (args[0] instanceof jStat) {\n    // Duplicate the object and pass it back.\n    return jStat(args[0].toArray());\n\n  // Unexpected argument value, return empty jStat object.\n  // TODO: This is strange behavior. Shouldn't this throw or some such to let\n  // the user know they had bad arguments?\n  } else {\n    this[0] = [];\n    this.length = 1;\n  }\n\n  return this;\n};\njStat._init.prototype = jStat.prototype;\njStat._init.constructor = jStat;\n\n\n// Utility functions.\n// TODO: for internal use only?\njStat.utils = {\n  calcRdx: calcRdx,\n  isArray: isArray,\n  isFunction: isFunction,\n  isNumber: isNumber,\n  toVector: toVector\n};\n\n\njStat._random_fn = Math.random;\njStat.setRandom = function setRandom(fn) {\n  if (typeof fn !== 'function')\n    throw new TypeError('fn is not a function');\n  jStat._random_fn = fn;\n};\n\n\n// Easily extend the jStat object.\n// TODO: is this seriously necessary?\njStat.extend = function extend(obj) {\n  var i, j;\n\n  if (arguments.length === 1) {\n    for (j in obj)\n      jStat[j] = obj[j];\n    return this;\n  }\n\n  for (i = 1; i < arguments.length; i++) {\n    for (j in arguments[i])\n      obj[j] = arguments[i][j];\n  }\n\n  return obj;\n};\n\n\n// Returns the number of rows in the matrix.\njStat.rows = function rows(arr) {\n  return arr.length || 1;\n};\n\n\n// Returns the number of columns in the matrix.\njStat.cols = function cols(arr) {\n  return arr[0].length || 1;\n};\n\n\n// Returns the dimensions of the object { rows: i, cols: j }\njStat.dimensions = function dimensions(arr) {\n  return {\n    rows: jStat.rows(arr),\n    cols: jStat.cols(arr)\n  };\n};\n\n\n// Returns a specified row as a vector or return a sub matrix by pick some rows\njStat.row = function row(arr, index) {\n  if (isArray(index)) {\n    return index.map(function(i) {\n      return jStat.row(arr, i);\n    })\n  }\n  return arr[index];\n};\n\n\n// return row as array\n// rowa([[1,2],[3,4]],0) -> [1,2]\njStat.rowa = function rowa(arr, i) {\n  return jStat.row(arr, i);\n};\n\n\n// Returns the specified column as a vector or return a sub matrix by pick some\n// columns\njStat.col = function col(arr, index) {\n  if (isArray(index)) {\n    var submat = jStat.arange(arr.length).map(function() {\n      return new Array(index.length);\n    });\n    index.forEach(function(ind, i){\n      jStat.arange(arr.length).forEach(function(j) {\n        submat[j][i] = arr[j][ind];\n      });\n    });\n    return submat;\n  }\n  var column = new Array(arr.length);\n  for (var i = 0; i < arr.length; i++)\n    column[i] = [arr[i][index]];\n  return column;\n};\n\n\n// return column as array\n// cola([[1,2],[3,4]],0) -> [1,3]\njStat.cola = function cola(arr, i) {\n  return jStat.col(arr, i).map(function(a){ return a[0] });\n};\n\n\n// Returns the diagonal of the matrix\njStat.diag = function diag(arr) {\n  var nrow = jStat.rows(arr);\n  var res = new Array(nrow);\n  for (var row = 0; row < nrow; row++)\n    res[row] = [arr[row][row]];\n  return res;\n};\n\n\n// Returns the anti-diagonal of the matrix\njStat.antidiag = function antidiag(arr) {\n  var nrow = jStat.rows(arr) - 1;\n  var res = new Array(nrow);\n  for (var i = 0; nrow >= 0; nrow--, i++)\n    res[i] = [arr[i][nrow]];\n  return res;\n};\n\n// Transpose a matrix or array.\njStat.transpose = function transpose(arr) {\n  var obj = [];\n  var objArr, rows, cols, j, i;\n\n  // Make sure arr is in matrix format.\n  if (!isArray(arr[0]))\n    arr = [arr];\n\n  rows = arr.length;\n  cols = arr[0].length;\n\n  for (i = 0; i < cols; i++) {\n    objArr = new Array(rows);\n    for (j = 0; j < rows; j++)\n      objArr[j] = arr[j][i];\n    obj.push(objArr);\n  }\n\n  // If obj is vector, return only single array.\n  return obj.length === 1 ? obj[0] : obj;\n};\n\n\n// Map a function to an array or array of arrays.\n// \"toAlter\" is an internal variable.\njStat.map = function map(arr, func, toAlter) {\n  var row, nrow, ncol, res, col;\n\n  if (!isArray(arr[0]))\n    arr = [arr];\n\n  nrow = arr.length;\n  ncol = arr[0].length;\n  res = toAlter ? arr : new Array(nrow);\n\n  for (row = 0; row < nrow; row++) {\n    // if the row doesn't exist, create it\n    if (!res[row])\n      res[row] = new Array(ncol);\n    for (col = 0; col < ncol; col++)\n      res[row][col] = func(arr[row][col], row, col);\n  }\n\n  return res.length === 1 ? res[0] : res;\n};\n\n\n// Cumulatively combine the elements of an array or array of arrays using a function.\njStat.cumreduce = function cumreduce(arr, func, toAlter) {\n  var row, nrow, ncol, res, col;\n\n  if (!isArray(arr[0]))\n    arr = [arr];\n\n  nrow = arr.length;\n  ncol = arr[0].length;\n  res = toAlter ? arr : new Array(nrow);\n\n  for (row = 0; row < nrow; row++) {\n    // if the row doesn't exist, create it\n    if (!res[row])\n      res[row] = new Array(ncol);\n    if (ncol > 0)\n      res[row][0] = arr[row][0];\n    for (col = 1; col < ncol; col++)\n      res[row][col] = func(res[row][col-1], arr[row][col]);\n  }\n  return res.length === 1 ? res[0] : res;\n};\n\n\n// Destructively alter an array.\njStat.alter = function alter(arr, func) {\n  return jStat.map(arr, func, true);\n};\n\n\n// Generate a rows x cols matrix according to the supplied function.\njStat.create = function  create(rows, cols, func) {\n  var res = new Array(rows);\n  var i, j;\n\n  if (isFunction(cols)) {\n    func = cols;\n    cols = rows;\n  }\n\n  for (i = 0; i < rows; i++) {\n    res[i] = new Array(cols);\n    for (j = 0; j < cols; j++)\n      res[i][j] = func(i, j);\n  }\n\n  return res;\n};\n\n\nfunction retZero() { return 0; }\n\n\n// Generate a rows x cols matrix of zeros.\njStat.zeros = function zeros(rows, cols) {\n  if (!isNumber(cols))\n    cols = rows;\n  return jStat.create(rows, cols, retZero);\n};\n\n\nfunction retOne() { return 1; }\n\n\n// Generate a rows x cols matrix of ones.\njStat.ones = function ones(rows, cols) {\n  if (!isNumber(cols))\n    cols = rows;\n  return jStat.create(rows, cols, retOne);\n};\n\n\n// Generate a rows x cols matrix of uniformly random numbers.\njStat.rand = function rand(rows, cols) {\n  if (!isNumber(cols))\n    cols = rows;\n  return jStat.create(rows, cols, jStat._random_fn);\n};\n\n\nfunction retIdent(i, j) { return i === j ? 1 : 0; }\n\n\n// Generate an identity matrix of size row x cols.\njStat.identity = function identity(rows, cols) {\n  if (!isNumber(cols))\n    cols = rows;\n  return jStat.create(rows, cols, retIdent);\n};\n\n\n// Tests whether a matrix is symmetric\njStat.symmetric = function symmetric(arr) {\n  var size = arr.length;\n  var row, col;\n\n  if (arr.length !== arr[0].length)\n    return false;\n\n  for (row = 0; row < size; row++) {\n    for (col = 0; col < size; col++)\n      if (arr[col][row] !== arr[row][col])\n        return false;\n  }\n\n  return true;\n};\n\n\n// Set all values to zero.\njStat.clear = function clear(arr) {\n  return jStat.alter(arr, retZero);\n};\n\n\n// Generate sequence.\njStat.seq = function seq(min, max, length, func) {\n  if (!isFunction(func))\n    func = false;\n\n  var arr = [];\n  var hival = calcRdx(min, max);\n  var step = (max * hival - min * hival) / ((length - 1) * hival);\n  var current = min;\n  var cnt;\n\n  // Current is assigned using a technique to compensate for IEEE error.\n  // TODO: Needs better implementation.\n  for (cnt = 0;\n       current <= max && cnt < length;\n       cnt++, current = (min * hival + step * hival * cnt) / hival) {\n    arr.push((func ? func(current, cnt) : current));\n  }\n\n  return arr;\n};\n\n\n// arange(5) -> [0,1,2,3,4]\n// arange(1,5) -> [1,2,3,4]\n// arange(5,1,-1) -> [5,4,3,2]\njStat.arange = function arange(start, end, step) {\n  var rl = [];\n  var i;\n  step = step || 1;\n  if (end === undefined) {\n    end = start;\n    start = 0;\n  }\n  if (start === end || step === 0) {\n    return [];\n  }\n  if (start < end && step < 0) {\n    return [];\n  }\n  if (start > end && step > 0) {\n    return [];\n  }\n  if (step > 0) {\n    for (i = start; i < end; i += step) {\n      rl.push(i);\n    }\n  } else {\n    for (i = start; i > end; i += step) {\n      rl.push(i);\n    }\n  }\n  return rl;\n};\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// slice(A,{row:{end:2},col:{start:1}}) -> [[2,3],[5,6]]\n// slice(A,1,{start:1}) -> [5,6]\n// as numpy code A[:2,1:]\njStat.slice = (function(){\n  function _slice(list, start, end, step) {\n    // note it's not equal to range.map mode it's a bug\n    var i;\n    var rl = [];\n    var length = list.length;\n    if (start === undefined && end === undefined && step === undefined) {\n      return jStat.copy(list);\n    }\n\n    start = start || 0;\n    end = end || list.length;\n    start = start >= 0 ? start : length + start;\n    end = end >= 0 ? end : length + end;\n    step = step || 1;\n    if (start === end || step === 0) {\n      return [];\n    }\n    if (start < end && step < 0) {\n      return [];\n    }\n    if (start > end && step > 0) {\n      return [];\n    }\n    if (step > 0) {\n      for (i = start; i < end; i += step) {\n        rl.push(list[i]);\n      }\n    } else {\n      for (i = start; i > end;i += step) {\n        rl.push(list[i]);\n      }\n    }\n    return rl;\n  }\n\n  function slice(list, rcSlice) {\n    var colSlice, rowSlice;\n    rcSlice = rcSlice || {};\n    if (isNumber(rcSlice.row)) {\n      if (isNumber(rcSlice.col))\n        return list[rcSlice.row][rcSlice.col];\n      var row = jStat.rowa(list, rcSlice.row);\n      colSlice = rcSlice.col || {};\n      return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n    }\n\n    if (isNumber(rcSlice.col)) {\n      var col = jStat.cola(list, rcSlice.col);\n      rowSlice = rcSlice.row || {};\n      return _slice(col, rowSlice.start, rowSlice.end, rowSlice.step);\n    }\n\n    rowSlice = rcSlice.row || {};\n    colSlice = rcSlice.col || {};\n    var rows = _slice(list, rowSlice.start, rowSlice.end, rowSlice.step);\n    return rows.map(function(row) {\n      return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n    });\n  }\n\n  return slice;\n}());\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// sliceAssign(A,{row:{start:1},col:{start:1}},[[0,0],[0,0]])\n// A=[[1,2,3],[4,0,0],[7,0,0]]\njStat.sliceAssign = function sliceAssign(A, rcSlice, B) {\n  var nl, ml;\n  if (isNumber(rcSlice.row)) {\n    if (isNumber(rcSlice.col))\n      return A[rcSlice.row][rcSlice.col] = B;\n    rcSlice.col = rcSlice.col || {};\n    rcSlice.col.start = rcSlice.col.start || 0;\n    rcSlice.col.end = rcSlice.col.end || A[0].length;\n    rcSlice.col.step = rcSlice.col.step || 1;\n    nl = jStat.arange(rcSlice.col.start,\n                          Math.min(A.length, rcSlice.col.end),\n                          rcSlice.col.step);\n    var m = rcSlice.row;\n    nl.forEach(function(n, i) {\n      A[m][n] = B[i];\n    });\n    return A;\n  }\n\n  if (isNumber(rcSlice.col)) {\n    rcSlice.row = rcSlice.row || {};\n    rcSlice.row.start = rcSlice.row.start || 0;\n    rcSlice.row.end = rcSlice.row.end || A.length;\n    rcSlice.row.step = rcSlice.row.step || 1;\n    ml = jStat.arange(rcSlice.row.start,\n                          Math.min(A[0].length, rcSlice.row.end),\n                          rcSlice.row.step);\n    var n = rcSlice.col;\n    ml.forEach(function(m, j) {\n      A[m][n] = B[j];\n    });\n    return A;\n  }\n\n  if (B[0].length === undefined) {\n    B = [B];\n  }\n  rcSlice.row.start = rcSlice.row.start || 0;\n  rcSlice.row.end = rcSlice.row.end || A.length;\n  rcSlice.row.step = rcSlice.row.step || 1;\n  rcSlice.col.start = rcSlice.col.start || 0;\n  rcSlice.col.end = rcSlice.col.end || A[0].length;\n  rcSlice.col.step = rcSlice.col.step || 1;\n  ml = jStat.arange(rcSlice.row.start,\n                        Math.min(A.length, rcSlice.row.end),\n                        rcSlice.row.step);\n  nl = jStat.arange(rcSlice.col.start,\n                        Math.min(A[0].length, rcSlice.col.end),\n                        rcSlice.col.step);\n  ml.forEach(function(m, i) {\n    nl.forEach(function(n, j) {\n      A[m][n] = B[i][j];\n    });\n  });\n  return A;\n};\n\n\n// [1,2,3] ->\n// [[1,0,0],[0,2,0],[0,0,3]]\njStat.diagonal = function diagonal(diagArray) {\n  var mat = jStat.zeros(diagArray.length, diagArray.length);\n  diagArray.forEach(function(t, i) {\n    mat[i][i] = t;\n  });\n  return mat;\n};\n\n\n// return copy of A\njStat.copy = function copy(A) {\n  return A.map(function(row) {\n    if (isNumber(row))\n      return row;\n    return row.map(function(t) {\n      return t;\n    });\n  });\n};\n\n\n// TODO: Go over this entire implementation. Seems a tragic waste of resources\n// doing all this work. Instead, and while ugly, use new Function() to generate\n// a custom function for each static method.\n\n// Quick reference.\nvar jProto = jStat.prototype;\n\n// Default length.\njProto.length = 0;\n\n// For internal use only.\n// TODO: Check if they're actually used, and if they are then rename them\n// to _*\njProto.push = Array.prototype.push;\njProto.sort = Array.prototype.sort;\njProto.splice = Array.prototype.splice;\njProto.slice = Array.prototype.slice;\n\n\n// Return a clean array.\njProto.toArray = function toArray() {\n  return this.length > 1 ? slice.call(this) : slice.call(this)[0];\n};\n\n\n// Map a function to a matrix or vector.\njProto.map = function map(func, toAlter) {\n  return jStat(jStat.map(this, func, toAlter));\n};\n\n\n// Cumulatively combine the elements of a matrix or vector using a function.\njProto.cumreduce = function cumreduce(func, toAlter) {\n  return jStat(jStat.cumreduce(this, func, toAlter));\n};\n\n\n// Destructively alter an array.\njProto.alter = function alter(func) {\n  jStat.alter(this, func);\n  return this;\n};\n\n\n// Extend prototype with methods that have no argument.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jProto[passfunc] = function(func) {\n      var self = this,\n      results;\n      // Check for callback.\n      if (func) {\n        setTimeout(function() {\n          func.call(self, jProto[passfunc].call(self));\n        });\n        return this;\n      }\n      results = jStat[passfunc](this);\n      return isArray(results) ? jStat(results) : results;\n    };\n  })(funcs[i]);\n})('transpose clear symmetric rows cols dimensions diag antidiag'.split(' '));\n\n\n// Extend prototype with methods that have one argument.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jProto[passfunc] = function(index, func) {\n      var self = this;\n      // check for callback\n      if (func) {\n        setTimeout(function() {\n          func.call(self, jProto[passfunc].call(self, index));\n        });\n        return this;\n      }\n      return jStat(jStat[passfunc](this, index));\n    };\n  })(funcs[i]);\n})('row col'.split(' '));\n\n\n// Extend prototype with simple shortcut methods.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jProto[passfunc] = function() {\n      return jStat(jStat[passfunc].apply(null, arguments));\n    };\n  })(funcs[i]);\n})('create zeros ones rand identity'.split(' '));\n\n\n// Exposing jStat.\nreturn jStat;\n\n}(Math));\n(function(jStat, Math) {\n\nvar isFunction = jStat.utils.isFunction;\n\n// Ascending functions for sort\nfunction ascNum(a, b) { return a - b; }\n\nfunction clip(arg, min, max) {\n  return Math.max(min, Math.min(arg, max));\n}\n\n\n// sum of an array\njStat.sum = function sum(arr) {\n  var sum = 0;\n  var i = arr.length;\n  while (--i >= 0)\n    sum += arr[i];\n  return sum;\n};\n\n\n// sum squared\njStat.sumsqrd = function sumsqrd(arr) {\n  var sum = 0;\n  var i = arr.length;\n  while (--i >= 0)\n    sum += arr[i] * arr[i];\n  return sum;\n};\n\n\n// sum of squared errors of prediction (SSE)\njStat.sumsqerr = function sumsqerr(arr) {\n  var mean = jStat.mean(arr);\n  var sum = 0;\n  var i = arr.length;\n  var tmp;\n  while (--i >= 0) {\n    tmp = arr[i] - mean;\n    sum += tmp * tmp;\n  }\n  return sum;\n};\n\n// sum of an array in each row\njStat.sumrow = function sumrow(arr) {\n  var sum = 0;\n  var i = arr.length;\n  while (--i >= 0)\n    sum += arr[i];\n  return sum;\n};\n\n// product of an array\njStat.product = function product(arr) {\n  var prod = 1;\n  var i = arr.length;\n  while (--i >= 0)\n    prod *= arr[i];\n  return prod;\n};\n\n\n// minimum value of an array\njStat.min = function min(arr) {\n  var low = arr[0];\n  var i = 0;\n  while (++i < arr.length)\n    if (arr[i] < low)\n      low = arr[i];\n  return low;\n};\n\n\n// maximum value of an array\njStat.max = function max(arr) {\n  var high = arr[0];\n  var i = 0;\n  while (++i < arr.length)\n    if (arr[i] > high)\n      high = arr[i];\n  return high;\n};\n\n\n// unique values of an array\njStat.unique = function unique(arr) {\n  var hash = {}, _arr = [];\n  for(var i = 0; i < arr.length; i++) {\n    if (!hash[arr[i]]) {\n      hash[arr[i]] = true;\n      _arr.push(arr[i]);\n    }\n  }\n  return _arr;\n};\n\n\n// mean value of an array\njStat.mean = function mean(arr) {\n  return jStat.sum(arr) / arr.length;\n};\n\n\n// mean squared error (MSE)\njStat.meansqerr = function meansqerr(arr) {\n  return jStat.sumsqerr(arr) / arr.length;\n};\n\n\n// geometric mean of an array\njStat.geomean = function geomean(arr) {\n  var logs = arr.map(Math.log)\n  var meanOfLogs = jStat.mean(logs)\n  return Math.exp(meanOfLogs)\n};\n\n\n// median of an array\njStat.median = function median(arr) {\n  var arrlen = arr.length;\n  var _arr = arr.slice().sort(ascNum);\n  // check if array is even or odd, then return the appropriate\n  return !(arrlen & 1)\n    ? (_arr[(arrlen / 2) - 1 ] + _arr[(arrlen / 2)]) / 2\n    : _arr[(arrlen / 2) | 0 ];\n};\n\n\n// cumulative sum of an array\njStat.cumsum = function cumsum(arr) {\n  return jStat.cumreduce(arr, function (a, b) { return a + b; });\n};\n\n\n// cumulative product of an array\njStat.cumprod = function cumprod(arr) {\n  return jStat.cumreduce(arr, function (a, b) { return a * b; });\n};\n\n\n// successive differences of a sequence\njStat.diff = function diff(arr) {\n  var diffs = [];\n  var arrLen = arr.length;\n  var i;\n  for (i = 1; i < arrLen; i++)\n    diffs.push(arr[i] - arr[i - 1]);\n  return diffs;\n};\n\n\n// ranks of an array\njStat.rank = function (arr) {\n  var i;\n  var distinctNumbers = [];\n  var numberCounts = {};\n  for (i = 0; i < arr.length; i++) {\n    var number = arr[i];\n    if (numberCounts[number]) {\n      numberCounts[number]++;\n    } else {\n      numberCounts[number] = 1;\n      distinctNumbers.push(number);\n    }\n  }\n\n  var sortedDistinctNumbers = distinctNumbers.sort(ascNum);\n  var numberRanks = {};\n  var currentRank = 1;\n  for (i = 0; i < sortedDistinctNumbers.length; i++) {\n    var number = sortedDistinctNumbers[i];\n    var count = numberCounts[number];\n    var first = currentRank;\n    var last = currentRank + count - 1;\n    var rank = (first + last) / 2;\n    numberRanks[number] = rank;\n    currentRank += count;\n  }\n\n  return arr.map(function (number) {\n    return numberRanks[number];\n  });\n};\n\n\n// mode of an array\n// if there are multiple modes of an array, return all of them\n// is this the appropriate way of handling it?\njStat.mode = function mode(arr) {\n  var arrLen = arr.length;\n  var _arr = arr.slice().sort(ascNum);\n  var count = 1;\n  var maxCount = 0;\n  var numMaxCount = 0;\n  var mode_arr = [];\n  var i;\n\n  for (i = 0; i < arrLen; i++) {\n    if (_arr[i] === _arr[i + 1]) {\n      count++;\n    } else {\n      if (count > maxCount) {\n        mode_arr = [_arr[i]];\n        maxCount = count;\n        numMaxCount = 0;\n      }\n      // are there multiple max counts\n      else if (count === maxCount) {\n        mode_arr.push(_arr[i]);\n        numMaxCount++;\n      }\n      // resetting count for new value in array\n      count = 1;\n    }\n  }\n\n  return numMaxCount === 0 ? mode_arr[0] : mode_arr;\n};\n\n\n// range of an array\njStat.range = function range(arr) {\n  return jStat.max(arr) - jStat.min(arr);\n};\n\n// variance of an array\n// flag = true indicates sample instead of population\njStat.variance = function variance(arr, flag) {\n  return jStat.sumsqerr(arr) / (arr.length - (flag ? 1 : 0));\n};\n\n// pooled variance of an array of arrays\njStat.pooledvariance = function pooledvariance(arr) {\n  var sumsqerr = arr.reduce(function (a, samples) {return a + jStat.sumsqerr(samples);}, 0);\n  var count = arr.reduce(function (a, samples) {return a + samples.length;}, 0);\n  return sumsqerr / (count - arr.length);\n};\n\n// deviation of an array\njStat.deviation = function (arr) {\n  var mean = jStat.mean(arr);\n  var arrlen = arr.length;\n  var dev = new Array(arrlen);\n  for (var i = 0; i < arrlen; i++) {\n    dev[i] = arr[i] - mean;\n  }\n  return dev;\n};\n\n// standard deviation of an array\n// flag = true indicates sample instead of population\njStat.stdev = function stdev(arr, flag) {\n  return Math.sqrt(jStat.variance(arr, flag));\n};\n\n// pooled standard deviation of an array of arrays\njStat.pooledstdev = function pooledstdev(arr) {\n  return Math.sqrt(jStat.pooledvariance(arr));\n};\n\n// mean deviation (mean absolute deviation) of an array\njStat.meandev = function meandev(arr) {\n  var mean = jStat.mean(arr);\n  var a = [];\n  for (var i = arr.length - 1; i >= 0; i--) {\n    a.push(Math.abs(arr[i] - mean));\n  }\n  return jStat.mean(a);\n};\n\n\n// median deviation (median absolute deviation) of an array\njStat.meddev = function meddev(arr) {\n  var median = jStat.median(arr);\n  var a = [];\n  for (var i = arr.length - 1; i >= 0; i--) {\n    a.push(Math.abs(arr[i] - median));\n  }\n  return jStat.median(a);\n};\n\n\n// coefficient of variation\njStat.coeffvar = function coeffvar(arr) {\n  return jStat.stdev(arr) / jStat.mean(arr);\n};\n\n\n// quartiles of an array\njStat.quartiles = function quartiles(arr) {\n  var arrlen = arr.length;\n  var _arr = arr.slice().sort(ascNum);\n  return [\n    _arr[ Math.round((arrlen) / 4) - 1 ],\n    _arr[ Math.round((arrlen) / 2) - 1 ],\n    _arr[ Math.round((arrlen) * 3 / 4) - 1 ]\n  ];\n};\n\n\n// Arbitary quantiles of an array. Direct port of the scipy.stats\n// implementation by Pierre GF Gerard-Marchant.\njStat.quantiles = function quantiles(arr, quantilesArray, alphap, betap) {\n  var sortedArray = arr.slice().sort(ascNum);\n  var quantileVals = [quantilesArray.length];\n  var n = arr.length;\n  var i, p, m, aleph, k, gamma;\n\n  if (typeof alphap === 'undefined')\n    alphap = 3 / 8;\n  if (typeof betap === 'undefined')\n    betap = 3 / 8;\n\n  for (i = 0; i < quantilesArray.length; i++) {\n    p = quantilesArray[i];\n    m = alphap + p * (1 - alphap - betap);\n    aleph = n * p + m;\n    k = Math.floor(clip(aleph, 1, n - 1));\n    gamma = clip(aleph - k, 0, 1);\n    quantileVals[i] = (1 - gamma) * sortedArray[k - 1] + gamma * sortedArray[k];\n  }\n\n  return quantileVals;\n};\n\n// Return the k-th percentile of values in a range, where k is in the range 0..1, inclusive.\n// Passing true for the exclusive parameter excludes both endpoints of the range.\njStat.percentile = function percentile(arr, k, exclusive) {\n  var _arr = arr.slice().sort(ascNum);\n  var realIndex = k * (_arr.length + (exclusive ? 1 : -1)) + (exclusive ? 0 : 1);\n  var index = parseInt(realIndex);\n  var frac = realIndex - index;\n  if (index + 1 < _arr.length) {\n    return _arr[index - 1] + frac * (_arr[index] - _arr[index - 1]);\n  } else {\n    return _arr[index - 1];\n  }\n}\n\n// The percentile rank of score in a given array. Returns the percentage\n// of all values in the input array that are less than (kind='strict') or\n// less or equal than (kind='weak') score. Default is weak.\njStat.percentileOfScore = function percentileOfScore(arr, score, kind) {\n  var counter = 0;\n  var len = arr.length;\n  var strict = false;\n  var value, i;\n\n  if (kind === 'strict')\n    strict = true;\n\n  for (i = 0; i < len; i++) {\n    value = arr[i];\n    if ((strict && value < score) ||\n        (!strict && value <= score)) {\n      counter++;\n    }\n  }\n\n  return counter / len;\n};\n\n\n// Histogram (bin count) data\njStat.histogram = function histogram(arr, binCnt) {\n  binCnt = binCnt || 4;\n  var first = jStat.min(arr);\n  var binWidth = (jStat.max(arr) - first) / binCnt;\n  var len = arr.length;\n  var bins = [];\n  var i;\n\n  for (i = 0; i < binCnt; i++)\n    bins[i] = 0;\n  for (i = 0; i < len; i++)\n    bins[Math.min(Math.floor(((arr[i] - first) / binWidth)), binCnt - 1)] += 1;\n\n  return bins;\n};\n\n\n// covariance of two arrays\njStat.covariance = function covariance(arr1, arr2) {\n  var u = jStat.mean(arr1);\n  var v = jStat.mean(arr2);\n  var arr1Len = arr1.length;\n  var sq_dev = new Array(arr1Len);\n  var i;\n\n  for (i = 0; i < arr1Len; i++)\n    sq_dev[i] = (arr1[i] - u) * (arr2[i] - v);\n\n  return jStat.sum(sq_dev) / (arr1Len - 1);\n};\n\n\n// (pearson's) population correlation coefficient, rho\njStat.corrcoeff = function corrcoeff(arr1, arr2) {\n  return jStat.covariance(arr1, arr2) /\n      jStat.stdev(arr1, 1) /\n      jStat.stdev(arr2, 1);\n};\n\n  // (spearman's) rank correlation coefficient, sp\njStat.spearmancoeff =  function (arr1, arr2) {\n  arr1 = jStat.rank(arr1);\n  arr2 = jStat.rank(arr2);\n  //return pearson's correlation of the ranks:\n  return jStat.corrcoeff(arr1, arr2);\n}\n\n\n// statistical standardized moments (general form of skew/kurt)\njStat.stanMoment = function stanMoment(arr, n) {\n  var mu = jStat.mean(arr);\n  var sigma = jStat.stdev(arr);\n  var len = arr.length;\n  var skewSum = 0;\n\n  for (var i = 0; i < len; i++)\n    skewSum += Math.pow((arr[i] - mu) / sigma, n);\n\n  return skewSum / arr.length;\n};\n\n// (pearson's) moment coefficient of skewness\njStat.skewness = function skewness(arr) {\n  return jStat.stanMoment(arr, 3);\n};\n\n// (pearson's) (excess) kurtosis\njStat.kurtosis = function kurtosis(arr) {\n  return jStat.stanMoment(arr, 4) - 3;\n};\n\n\nvar jProto = jStat.prototype;\n\n\n// Extend jProto with method for calculating cumulative sums and products.\n// This differs from the similar extension below as cumsum and cumprod should\n// not be run again in the case fullbool === true.\n// If a matrix is passed, automatically assume operation should be done on the\n// columns.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    // If a matrix is passed, automatically assume operation should be done on\n    // the columns.\n    jProto[passfunc] = function(fullbool, func) {\n      var arr = [];\n      var i = 0;\n      var tmpthis = this;\n      // Assignment reassignation depending on how parameters were passed in.\n      if (isFunction(fullbool)) {\n        func = fullbool;\n        fullbool = false;\n      }\n      // Check if a callback was passed with the function.\n      if (func) {\n        setTimeout(function() {\n          func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n        });\n        return this;\n      }\n      // Check if matrix and run calculations.\n      if (this.length > 1) {\n        tmpthis = fullbool === true ? this : this.transpose();\n        for (; i < tmpthis.length; i++)\n          arr[i] = jStat[passfunc](tmpthis[i]);\n        return arr;\n      }\n      // Pass fullbool if only vector, not a matrix. for variance and stdev.\n      return jStat[passfunc](this[0], fullbool);\n    };\n  })(funcs[i]);\n})(('cumsum cumprod').split(' '));\n\n\n// Extend jProto with methods which don't require arguments and work on columns.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    // If a matrix is passed, automatically assume operation should be done on\n    // the columns.\n    jProto[passfunc] = function(fullbool, func) {\n      var arr = [];\n      var i = 0;\n      var tmpthis = this;\n      // Assignment reassignation depending on how parameters were passed in.\n      if (isFunction(fullbool)) {\n        func = fullbool;\n        fullbool = false;\n      }\n      // Check if a callback was passed with the function.\n      if (func) {\n        setTimeout(function() {\n          func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n        });\n        return this;\n      }\n      // Check if matrix and run calculations.\n      if (this.length > 1) {\n        if (passfunc !== 'sumrow')\n          tmpthis = fullbool === true ? this : this.transpose();\n        for (; i < tmpthis.length; i++)\n          arr[i] = jStat[passfunc](tmpthis[i]);\n        return fullbool === true\n            ? jStat[passfunc](jStat.utils.toVector(arr))\n            : arr;\n      }\n      // Pass fullbool if only vector, not a matrix. for variance and stdev.\n      return jStat[passfunc](this[0], fullbool);\n    };\n  })(funcs[i]);\n})(('sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr ' +\n    'geomean median diff rank mode range variance deviation stdev meandev ' +\n    'meddev coeffvar quartiles histogram skewness kurtosis').split(' '));\n\n\n// Extend jProto with functions that take arguments. Operations on matrices are\n// done on columns.\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jProto[passfunc] = function() {\n      var arr = [];\n      var i = 0;\n      var tmpthis = this;\n      var args = Array.prototype.slice.call(arguments);\n      var callbackFunction;\n\n      // If the last argument is a function, we assume it's a callback; we\n      // strip the callback out and call the function again.\n      if (isFunction(args[args.length - 1])) {\n        callbackFunction = args[args.length - 1];\n        var argsToPass = args.slice(0, args.length - 1);\n\n        setTimeout(function() {\n          callbackFunction.call(tmpthis,\n                                jProto[passfunc].apply(tmpthis, argsToPass));\n        });\n        return this;\n\n      // Otherwise we curry the function args and call normally.\n      } else {\n        callbackFunction = undefined;\n        var curriedFunction = function curriedFunction(vector) {\n          return jStat[passfunc].apply(tmpthis, [vector].concat(args));\n        }\n      }\n\n      // If this is a matrix, run column-by-column.\n      if (this.length > 1) {\n        tmpthis = tmpthis.transpose();\n        for (; i < tmpthis.length; i++)\n          arr[i] = curriedFunction(tmpthis[i]);\n        return arr;\n      }\n\n      // Otherwise run on the vector.\n      return curriedFunction(this[0]);\n    };\n  })(funcs[i]);\n})('quantiles percentileOfScore'.split(' '));\n\n}(jStat, Math));\n// Special functions //\n(function(jStat, Math) {\n\n// Log-gamma function\njStat.gammaln = function gammaln(x) {\n  var j = 0;\n  var cof = [\n    76.18009172947146, -86.50532032941677, 24.01409824083091,\n    -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5\n  ];\n  var ser = 1.000000000190015;\n  var xx, y, tmp;\n  tmp = (y = xx = x) + 5.5;\n  tmp -= (xx + 0.5) * Math.log(tmp);\n  for (; j < 6; j++)\n    ser += cof[j] / ++y;\n  return Math.log(2.5066282746310005 * ser / xx) - tmp;\n};\n\n/*\n * log-gamma function to support poisson distribution sampling. The\n * algorithm comes from SPECFUN by Shanjie Zhang and Jianming Jin and their\n * book \"Computation of Special Functions\", 1996, John Wiley & Sons, Inc.\n */\njStat.loggam = function loggam(x) {\n  var x0, x2, xp, gl, gl0;\n  var k, n;\n\n  var a = [8.333333333333333e-02, -2.777777777777778e-03,\n          7.936507936507937e-04, -5.952380952380952e-04,\n          8.417508417508418e-04, -1.917526917526918e-03,\n          6.410256410256410e-03, -2.955065359477124e-02,\n          1.796443723688307e-01, -1.39243221690590e+00];\n  x0 = x;\n  n = 0;\n  if ((x == 1.0) || (x == 2.0)) {\n      return 0.0;\n  }\n  if (x <= 7.0) {\n      n = Math.floor(7 - x);\n      x0 = x + n;\n  }\n  x2 = 1.0 / (x0 * x0);\n  xp = 2 * Math.PI;\n  gl0 = a[9];\n  for (k = 8; k >= 0; k--) {\n      gl0 *= x2;\n      gl0 += a[k];\n  }\n  gl = gl0 / x0 + 0.5 * Math.log(xp) + (x0 - 0.5) * Math.log(x0) - x0;\n  if (x <= 7.0) {\n      for (k = 1; k <= n; k++) {\n          gl -= Math.log(x0 - 1.0);\n          x0 -= 1.0;\n      }\n  }\n  return gl;\n}\n\n// gamma of x\njStat.gammafn = function gammafn(x) {\n  var p = [-1.716185138865495, 24.76565080557592, -379.80425647094563,\n           629.3311553128184, 866.9662027904133, -31451.272968848367,\n           -36144.413418691176, 66456.14382024054\n  ];\n  var q = [-30.8402300119739, 315.35062697960416, -1015.1563674902192,\n           -3107.771671572311, 22538.118420980151, 4755.8462775278811,\n           -134659.9598649693, -115132.2596755535];\n  var fact = false;\n  var n = 0;\n  var xden = 0;\n  var xnum = 0;\n  var y = x;\n  var i, z, yi, res;\n  if (x > 171.6243769536076) {\n    return Infinity;\n  }\n  if (y <= 0) {\n    res = y % 1 + 3.6e-16;\n    if (res) {\n      fact = (!(y & 1) ? 1 : -1) * Math.PI / Math.sin(Math.PI * res);\n      y = 1 - y;\n    } else {\n      return Infinity;\n    }\n  }\n  yi = y;\n  if (y < 1) {\n    z = y++;\n  } else {\n    z = (y -= n = (y | 0) - 1) - 1;\n  }\n  for (i = 0; i < 8; ++i) {\n    xnum = (xnum + p[i]) * z;\n    xden = xden * z + q[i];\n  }\n  res = xnum / xden + 1;\n  if (yi < y) {\n    res /= yi;\n  } else if (yi > y) {\n    for (i = 0; i < n; ++i) {\n      res *= y;\n      y++;\n    }\n  }\n  if (fact) {\n    res = fact / res;\n  }\n  return res;\n};\n\n\n// lower incomplete gamma function, which is usually typeset with a\n// lower-case greek gamma as the function symbol\njStat.gammap = function gammap(a, x) {\n  return jStat.lowRegGamma(a, x) * jStat.gammafn(a);\n};\n\n\n// The lower regularized incomplete gamma function, usually written P(a,x)\njStat.lowRegGamma = function lowRegGamma(a, x) {\n  var aln = jStat.gammaln(a);\n  var ap = a;\n  var sum = 1 / a;\n  var del = sum;\n  var b = x + 1 - a;\n  var c = 1 / 1.0e-30;\n  var d = 1 / b;\n  var h = d;\n  var i = 1;\n  // calculate maximum number of itterations required for a\n  var ITMAX = -~(Math.log((a >= 1) ? a : 1 / a) * 8.5 + a * 0.4 + 17);\n  var an;\n\n  if (x < 0 || a <= 0) {\n    return NaN;\n  } else if (x < a + 1) {\n    for (; i <= ITMAX; i++) {\n      sum += del *= x / ++ap;\n    }\n    return (sum * Math.exp(-x + a * Math.log(x) - (aln)));\n  }\n\n  for (; i <= ITMAX; i++) {\n    an = -i * (i - a);\n    b += 2;\n    d = an * d + b;\n    c = b + an / c;\n    d = 1 / d;\n    h *= d * c;\n  }\n\n  return (1 - h * Math.exp(-x + a * Math.log(x) - (aln)));\n};\n\n// natural log factorial of n\njStat.factorialln = function factorialln(n) {\n  return n < 0 ? NaN : jStat.gammaln(n + 1);\n};\n\n// factorial of n\njStat.factorial = function factorial(n) {\n  return n < 0 ? NaN : jStat.gammafn(n + 1);\n};\n\n// combinations of n, m\njStat.combination = function combination(n, m) {\n  // make sure n or m don't exceed the upper limit of usable values\n  return (n > 170 || m > 170)\n      ? Math.exp(jStat.combinationln(n, m))\n      : (jStat.factorial(n) / jStat.factorial(m)) / jStat.factorial(n - m);\n};\n\n\njStat.combinationln = function combinationln(n, m){\n  return jStat.factorialln(n) - jStat.factorialln(m) - jStat.factorialln(n - m);\n};\n\n\n// permutations of n, m\njStat.permutation = function permutation(n, m) {\n  return jStat.factorial(n) / jStat.factorial(n - m);\n};\n\n\n// beta function\njStat.betafn = function betafn(x, y) {\n  // ensure arguments are positive\n  if (x <= 0 || y <= 0)\n    return undefined;\n  // make sure x + y doesn't exceed the upper limit of usable values\n  return (x + y > 170)\n      ? Math.exp(jStat.betaln(x, y))\n      : jStat.gammafn(x) * jStat.gammafn(y) / jStat.gammafn(x + y);\n};\n\n\n// natural logarithm of beta function\njStat.betaln = function betaln(x, y) {\n  return jStat.gammaln(x) + jStat.gammaln(y) - jStat.gammaln(x + y);\n};\n\n\n// Evaluates the continued fraction for incomplete beta function by modified\n// Lentz's method.\njStat.betacf = function betacf(x, a, b) {\n  var fpmin = 1e-30;\n  var m = 1;\n  var qab = a + b;\n  var qap = a + 1;\n  var qam = a - 1;\n  var c = 1;\n  var d = 1 - qab * x / qap;\n  var m2, aa, del, h;\n\n  // These q's will be used in factors that occur in the coefficients\n  if (Math.abs(d) < fpmin)\n    d = fpmin;\n  d = 1 / d;\n  h = d;\n\n  for (; m <= 100; m++) {\n    m2 = 2 * m;\n    aa = m * (b - m) * x / ((qam + m2) * (a + m2));\n    // One step (the even one) of the recurrence\n    d = 1 + aa * d;\n    if (Math.abs(d) < fpmin)\n      d = fpmin;\n    c = 1 + aa / c;\n    if (Math.abs(c) < fpmin)\n      c = fpmin;\n    d = 1 / d;\n    h *= d * c;\n    aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));\n    // Next step of the recurrence (the odd one)\n    d = 1 + aa * d;\n    if (Math.abs(d) < fpmin)\n      d = fpmin;\n    c = 1 + aa / c;\n    if (Math.abs(c) < fpmin)\n      c = fpmin;\n    d = 1 / d;\n    del = d * c;\n    h *= del;\n    if (Math.abs(del - 1.0) < 3e-7)\n      break;\n  }\n\n  return h;\n};\n\n\n// Returns the inverse of the lower regularized inomplete gamma function\njStat.gammapinv = function gammapinv(p, a) {\n  var j = 0;\n  var a1 = a - 1;\n  var EPS = 1e-8;\n  var gln = jStat.gammaln(a);\n  var x, err, t, u, pp, lna1, afac;\n\n  if (p >= 1)\n    return Math.max(100, a + 100 * Math.sqrt(a));\n  if (p <= 0)\n    return 0;\n  if (a > 1) {\n    lna1 = Math.log(a1);\n    afac = Math.exp(a1 * (lna1 - 1) - gln);\n    pp = (p < 0.5) ? p : 1 - p;\n    t = Math.sqrt(-2 * Math.log(pp));\n    x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t;\n    if (p < 0.5)\n      x = -x;\n    x = Math.max(1e-3,\n                 a * Math.pow(1 - 1 / (9 * a) - x / (3 * Math.sqrt(a)), 3));\n  } else {\n    t = 1 - a * (0.253 + a * 0.12);\n    if (p < t)\n      x = Math.pow(p / t, 1 / a);\n    else\n      x = 1 - Math.log(1 - (p - t) / (1 - t));\n  }\n\n  for(; j < 12; j++) {\n    if (x <= 0)\n      return 0;\n    err = jStat.lowRegGamma(a, x) - p;\n    if (a > 1)\n      t = afac * Math.exp(-(x - a1) + a1 * (Math.log(x) - lna1));\n    else\n      t = Math.exp(-x + a1 * Math.log(x) - gln);\n    u = err / t;\n    x -= (t = u / (1 - 0.5 * Math.min(1, u * ((a - 1) / x - 1))));\n    if (x <= 0)\n      x = 0.5 * (x + t);\n    if (Math.abs(t) < EPS * x)\n      break;\n  }\n\n  return x;\n};\n\n\n// Returns the error function erf(x)\njStat.erf = function erf(x) {\n  var cof = [-1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2,\n             -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4,\n             4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6,\n             1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8,\n             6.529054439e-9, 5.059343495e-9, -9.91364156e-10,\n             -2.27365122e-10, 9.6467911e-11, 2.394038e-12,\n             -6.886027e-12, 8.94487e-13, 3.13092e-13,\n             -1.12708e-13, 3.81e-16, 7.106e-15,\n             -1.523e-15, -9.4e-17, 1.21e-16,\n             -2.8e-17];\n  var j = cof.length - 1;\n  var isneg = false;\n  var d = 0;\n  var dd = 0;\n  var t, ty, tmp, res;\n\n  if (x < 0) {\n    x = -x;\n    isneg = true;\n  }\n\n  t = 2 / (2 + x);\n  ty = 4 * t - 2;\n\n  for(; j > 0; j--) {\n    tmp = d;\n    d = ty * d - dd + cof[j];\n    dd = tmp;\n  }\n\n  res = t * Math.exp(-x * x + 0.5 * (cof[0] + ty * d) - dd);\n  return isneg ? res - 1 : 1 - res;\n};\n\n\n// Returns the complmentary error function erfc(x)\njStat.erfc = function erfc(x) {\n  return 1 - jStat.erf(x);\n};\n\n\n// Returns the inverse of the complementary error function\njStat.erfcinv = function erfcinv(p) {\n  var j = 0;\n  var x, err, t, pp;\n  if (p >= 2)\n    return -100;\n  if (p <= 0)\n    return 100;\n  pp = (p < 1) ? p : 2 - p;\n  t = Math.sqrt(-2 * Math.log(pp / 2));\n  x = -0.70711 * ((2.30753 + t * 0.27061) /\n                  (1 + t * (0.99229 + t * 0.04481)) - t);\n  for (; j < 2; j++) {\n    err = jStat.erfc(x) - pp;\n    x += err / (1.12837916709551257 * Math.exp(-x * x) - x * err);\n  }\n  return (p < 1) ? x : -x;\n};\n\n\n// Returns the inverse of the incomplete beta function\njStat.ibetainv = function ibetainv(p, a, b) {\n  var EPS = 1e-8;\n  var a1 = a - 1;\n  var b1 = b - 1;\n  var j = 0;\n  var lna, lnb, pp, t, u, err, x, al, h, w, afac;\n  if (p <= 0)\n    return 0;\n  if (p >= 1)\n    return 1;\n  if (a >= 1 && b >= 1) {\n    pp = (p < 0.5) ? p : 1 - p;\n    t = Math.sqrt(-2 * Math.log(pp));\n    x = (2.30753 + t * 0.27061) / (1 + t* (0.99229 + t * 0.04481)) - t;\n    if (p < 0.5)\n      x = -x;\n    al = (x * x - 3) / 6;\n    h = 2 / (1 / (2 * a - 1)  + 1 / (2 * b - 1));\n    w = (x * Math.sqrt(al + h) / h) - (1 / (2 * b - 1) - 1 / (2 * a - 1)) *\n        (al + 5 / 6 - 2 / (3 * h));\n    x = a / (a + b * Math.exp(2 * w));\n  } else {\n    lna = Math.log(a / (a + b));\n    lnb = Math.log(b / (a + b));\n    t = Math.exp(a * lna) / a;\n    u = Math.exp(b * lnb) / b;\n    w = t + u;\n    if (p < t / w)\n      x = Math.pow(a * w * p, 1 / a);\n    else\n      x = 1 - Math.pow(b * w * (1 - p), 1 / b);\n  }\n  afac = -jStat.gammaln(a) - jStat.gammaln(b) + jStat.gammaln(a + b);\n  for(; j < 10; j++) {\n    if (x === 0 || x === 1)\n      return x;\n    err = jStat.ibeta(x, a, b) - p;\n    t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);\n    u = err / t;\n    x -= (t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x)))));\n    if (x <= 0)\n      x = 0.5 * (x + t);\n    if (x >= 1)\n      x = 0.5 * (x + t + 1);\n    if (Math.abs(t) < EPS * x && j > 0)\n      break;\n  }\n  return x;\n};\n\n\n// Returns the incomplete beta function I_x(a,b)\njStat.ibeta = function ibeta(x, a, b) {\n  // Factors in front of the continued fraction.\n  var bt = (x === 0 || x === 1) ?  0 :\n    Math.exp(jStat.gammaln(a + b) - jStat.gammaln(a) -\n             jStat.gammaln(b) + a * Math.log(x) + b *\n             Math.log(1 - x));\n  if (x < 0 || x > 1)\n    return false;\n  if (x < (a + 1) / (a + b + 2))\n    // Use continued fraction directly.\n    return bt * jStat.betacf(x, a, b) / a;\n  // else use continued fraction after making the symmetry transformation.\n  return 1 - bt * jStat.betacf(1 - x, b, a) / b;\n};\n\n\n// Returns a normal deviate (mu=0, sigma=1).\n// If n and m are specified it returns a object of normal deviates.\njStat.randn = function randn(n, m) {\n  var u, v, x, y, q;\n  if (!m)\n    m = n;\n  if (n)\n    return jStat.create(n, m, function() { return jStat.randn(); });\n  do {\n    u = jStat._random_fn();\n    v = 1.7156 * (jStat._random_fn() - 0.5);\n    x = u - 0.449871;\n    y = Math.abs(v) + 0.386595;\n    q = x * x + y * (0.19600 * y - 0.25472 * x);\n  } while (q > 0.27597 && (q > 0.27846 || v * v > -4 * Math.log(u) * u * u));\n  return v / u;\n};\n\n\n// Returns a gamma deviate by the method of Marsaglia and Tsang.\njStat.randg = function randg(shape, n, m) {\n  var oalph = shape;\n  var a1, a2, u, v, x, mat;\n  if (!m)\n    m = n;\n  if (!shape)\n    shape = 1;\n  if (n) {\n    mat = jStat.zeros(n,m);\n    mat.alter(function() { return jStat.randg(shape); });\n    return mat;\n  }\n  if (shape < 1)\n    shape += 1;\n  a1 = shape - 1 / 3;\n  a2 = 1 / Math.sqrt(9 * a1);\n  do {\n    do {\n      x = jStat.randn();\n      v = 1 + a2 * x;\n    } while(v <= 0);\n    v = v * v * v;\n    u = jStat._random_fn();\n  } while(u > 1 - 0.331 * Math.pow(x, 4) &&\n          Math.log(u) > 0.5 * x*x + a1 * (1 - v + Math.log(v)));\n  // alpha > 1\n  if (shape == oalph)\n    return a1 * v;\n  // alpha < 1\n  do {\n    u = jStat._random_fn();\n  } while(u === 0);\n  return Math.pow(u, 1 / oalph) * a1 * v;\n};\n\n\n// making use of static methods on the instance\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jStat.fn[passfunc] = function() {\n      return jStat(\n          jStat.map(this, function(value) { return jStat[passfunc](value); }));\n    }\n  })(funcs[i]);\n})('gammaln gammafn factorial factorialln'.split(' '));\n\n\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jStat.fn[passfunc] = function() {\n      return jStat(jStat[passfunc].apply(null, arguments));\n    };\n  })(funcs[i]);\n})('randn'.split(' '));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\n// generate all distribution instance methods\n(function(list) {\n  for (var i = 0; i < list.length; i++) (function(func) {\n    // distribution instance method\n    jStat[func] = function f(a, b, c) {\n      if (!(this instanceof f))\n        return new f(a, b, c);\n      this._a = a;\n      this._b = b;\n      this._c = c;\n      return this;\n    };\n    // distribution method to be used on a jStat instance\n    jStat.fn[func] = function(a, b, c) {\n      var newthis = jStat[func](a, b, c);\n      newthis.data = this;\n      return newthis;\n    };\n    // sample instance method\n    jStat[func].prototype.sample = function(arr) {\n      var a = this._a;\n      var b = this._b;\n      var c = this._c;\n      if (arr)\n        return jStat.alter(arr, function() {\n          return jStat[func].sample(a, b, c);\n        });\n      else\n        return jStat[func].sample(a, b, c);\n    };\n    // generate the pdf, cdf and inv instance methods\n    (function(vals) {\n      for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n        jStat[func].prototype[fnfunc] = function(x) {\n          var a = this._a;\n          var b = this._b;\n          var c = this._c;\n          if (!x && x !== 0)\n            x = this.data;\n          if (typeof x !== 'number') {\n            return jStat.fn.map.call(x, function(x) {\n              return jStat[func][fnfunc](x, a, b, c);\n            });\n          }\n          return jStat[func][fnfunc](x, a, b, c);\n        };\n      })(vals[i]);\n    })('pdf cdf inv'.split(' '));\n    // generate the mean, median, mode and variance instance methods\n    (function(vals) {\n      for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n        jStat[func].prototype[fnfunc] = function() {\n          return jStat[func][fnfunc](this._a, this._b, this._c);\n        };\n      })(vals[i]);\n    })('mean median mode variance'.split(' '));\n  })(list[i]);\n})((\n  'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy ' +\n  'laplace lognormal noncentralt normal pareto studentt weibull uniform ' +\n  'binomial negbin hypgeom poisson triangular tukey arcsine'\n).split(' '));\n\n\n\n// extend beta function with static methods\njStat.extend(jStat.beta, {\n  pdf: function pdf(x, alpha, beta) {\n    // PDF is zero outside the support\n    if (x > 1 || x < 0)\n      return 0;\n    // PDF is one for the uniform case\n    if (alpha == 1 && beta == 1)\n      return 1;\n\n    if (alpha < 512 && beta < 512) {\n      return (Math.pow(x, alpha - 1) * Math.pow(1 - x, beta - 1)) /\n          jStat.betafn(alpha, beta);\n    } else {\n      return Math.exp((alpha - 1) * Math.log(x) +\n                      (beta - 1) * Math.log(1 - x) -\n                      jStat.betaln(alpha, beta));\n    }\n  },\n\n  cdf: function cdf(x, alpha, beta) {\n    return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.ibeta(x, alpha, beta);\n  },\n\n  inv: function inv(x, alpha, beta) {\n    return jStat.ibetainv(x, alpha, beta);\n  },\n\n  mean: function mean(alpha, beta) {\n    return alpha / (alpha + beta);\n  },\n\n  median: function median(alpha, beta) {\n    return jStat.ibetainv(0.5, alpha, beta);\n  },\n\n  mode: function mode(alpha, beta) {\n    return (alpha - 1 ) / ( alpha + beta - 2);\n  },\n\n  // return a random sample\n  sample: function sample(alpha, beta) {\n    var u = jStat.randg(alpha);\n    return u / (u + jStat.randg(beta));\n  },\n\n  variance: function variance(alpha, beta) {\n    return (alpha * beta) / (Math.pow(alpha + beta, 2) * (alpha + beta + 1));\n  }\n});\n\n// extend F function with static methods\njStat.extend(jStat.centralF, {\n  // This implementation of the pdf function avoids float overflow\n  // See the way that R calculates this value:\n  // https://svn.r-project.org/R/trunk/src/nmath/df.c\n  pdf: function pdf(x, df1, df2) {\n    var p, q, f;\n\n    if (x < 0)\n      return 0;\n\n    if (df1 <= 2) {\n      if (x === 0 && df1 < 2) {\n        return Infinity;\n      }\n      if (x === 0 && df1 === 2) {\n        return 1;\n      }\n      return (1 / jStat.betafn(df1 / 2, df2 / 2)) *\n              Math.pow(df1 / df2, df1 / 2) *\n              Math.pow(x, (df1/2) - 1) *\n              Math.pow((1 + (df1 / df2) * x), -(df1 + df2) / 2);\n    }\n\n    p = (df1 * x) / (df2 + x * df1);\n    q = df2 / (df2 + x * df1);\n    f = df1 * q / 2.0;\n    return f * jStat.binomial.pdf((df1 - 2) / 2, (df1 + df2 - 2) / 2, p);\n  },\n\n  cdf: function cdf(x, df1, df2) {\n    if (x < 0)\n      return 0;\n    return jStat.ibeta((df1 * x) / (df1 * x + df2), df1 / 2, df2 / 2);\n  },\n\n  inv: function inv(x, df1, df2) {\n    return df2 / (df1 * (1 / jStat.ibetainv(x, df1 / 2, df2 / 2) - 1));\n  },\n\n  mean: function mean(df1, df2) {\n    return (df2 > 2) ? df2 / (df2 - 2) : undefined;\n  },\n\n  mode: function mode(df1, df2) {\n    return (df1 > 2) ? (df2 * (df1 - 2)) / (df1 * (df2 + 2)) : undefined;\n  },\n\n  // return a random sample\n  sample: function sample(df1, df2) {\n    var x1 = jStat.randg(df1 / 2) * 2;\n    var x2 = jStat.randg(df2 / 2) * 2;\n    return (x1 / df1) / (x2 / df2);\n  },\n\n  variance: function variance(df1, df2) {\n    if (df2 <= 4)\n      return undefined;\n    return 2 * df2 * df2 * (df1 + df2 - 2) /\n        (df1 * (df2 - 2) * (df2 - 2) * (df2 - 4));\n  }\n});\n\n\n// extend cauchy function with static methods\njStat.extend(jStat.cauchy, {\n  pdf: function pdf(x, local, scale) {\n    if (scale < 0) { return 0; }\n\n    return (scale / (Math.pow(x - local, 2) + Math.pow(scale, 2))) / Math.PI;\n  },\n\n  cdf: function cdf(x, local, scale) {\n    return Math.atan((x - local) / scale) / Math.PI + 0.5;\n  },\n\n  inv: function(p, local, scale) {\n    return local + scale * Math.tan(Math.PI * (p - 0.5));\n  },\n\n  median: function median(local/*, scale*/) {\n    return local;\n  },\n\n  mode: function mode(local/*, scale*/) {\n    return local;\n  },\n\n  sample: function sample(local, scale) {\n    return jStat.randn() *\n        Math.sqrt(1 / (2 * jStat.randg(0.5))) * scale + local;\n  }\n});\n\n\n\n// extend chisquare function with static methods\njStat.extend(jStat.chisquare, {\n  pdf: function pdf(x, dof) {\n    if (x < 0)\n      return 0;\n    return (x === 0 && dof === 2) ? 0.5 :\n        Math.exp((dof / 2 - 1) * Math.log(x) - x / 2 - (dof / 2) *\n                 Math.log(2) - jStat.gammaln(dof / 2));\n  },\n\n  cdf: function cdf(x, dof) {\n    if (x < 0)\n      return 0;\n    return jStat.lowRegGamma(dof / 2, x / 2);\n  },\n\n  inv: function(p, dof) {\n    return 2 * jStat.gammapinv(p, 0.5 * dof);\n  },\n\n  mean : function(dof) {\n    return dof;\n  },\n\n  // TODO: this is an approximation (is there a better way?)\n  median: function median(dof) {\n    return dof * Math.pow(1 - (2 / (9 * dof)), 3);\n  },\n\n  mode: function mode(dof) {\n    return (dof - 2 > 0) ? dof - 2 : 0;\n  },\n\n  sample: function sample(dof) {\n    return jStat.randg(dof / 2) * 2;\n  },\n\n  variance: function variance(dof) {\n    return 2 * dof;\n  }\n});\n\n\n\n// extend exponential function with static methods\njStat.extend(jStat.exponential, {\n  pdf: function pdf(x, rate) {\n    return x < 0 ? 0 : rate * Math.exp(-rate * x);\n  },\n\n  cdf: function cdf(x, rate) {\n    return x < 0 ? 0 : 1 - Math.exp(-rate * x);\n  },\n\n  inv: function(p, rate) {\n    return -Math.log(1 - p) / rate;\n  },\n\n  mean : function(rate) {\n    return 1 / rate;\n  },\n\n  median: function (rate) {\n    return (1 / rate) * Math.log(2);\n  },\n\n  mode: function mode(/*rate*/) {\n    return 0;\n  },\n\n  sample: function sample(rate) {\n    return -1 / rate * Math.log(jStat._random_fn());\n  },\n\n  variance : function(rate) {\n    return Math.pow(rate, -2);\n  }\n});\n\n\n\n// extend gamma function with static methods\njStat.extend(jStat.gamma, {\n  pdf: function pdf(x, shape, scale) {\n    if (x < 0)\n      return 0;\n    return (x === 0 && shape === 1) ? 1 / scale :\n            Math.exp((shape - 1) * Math.log(x) - x / scale -\n                    jStat.gammaln(shape) - shape * Math.log(scale));\n  },\n\n  cdf: function cdf(x, shape, scale) {\n    if (x < 0)\n      return 0;\n    return jStat.lowRegGamma(shape, x / scale);\n  },\n\n  inv: function(p, shape, scale) {\n    return jStat.gammapinv(p, shape) * scale;\n  },\n\n  mean : function(shape, scale) {\n    return shape * scale;\n  },\n\n  mode: function mode(shape, scale) {\n    if(shape > 1) return (shape - 1) * scale;\n    return undefined;\n  },\n\n  sample: function sample(shape, scale) {\n    return jStat.randg(shape) * scale;\n  },\n\n  variance: function variance(shape, scale) {\n    return shape * scale * scale;\n  }\n});\n\n// extend inverse gamma function with static methods\njStat.extend(jStat.invgamma, {\n  pdf: function pdf(x, shape, scale) {\n    if (x <= 0)\n      return 0;\n    return Math.exp(-(shape + 1) * Math.log(x) - scale / x -\n                    jStat.gammaln(shape) + shape * Math.log(scale));\n  },\n\n  cdf: function cdf(x, shape, scale) {\n    if (x <= 0)\n      return 0;\n    return 1 - jStat.lowRegGamma(shape, scale / x);\n  },\n\n  inv: function(p, shape, scale) {\n    return scale / jStat.gammapinv(1 - p, shape);\n  },\n\n  mean : function(shape, scale) {\n    return (shape > 1) ? scale / (shape - 1) : undefined;\n  },\n\n  mode: function mode(shape, scale) {\n    return scale / (shape + 1);\n  },\n\n  sample: function sample(shape, scale) {\n    return scale / jStat.randg(shape);\n  },\n\n  variance: function variance(shape, scale) {\n    if (shape <= 2)\n      return undefined;\n    return scale * scale / ((shape - 1) * (shape - 1) * (shape - 2));\n  }\n});\n\n\n// extend kumaraswamy function with static methods\njStat.extend(jStat.kumaraswamy, {\n  pdf: function pdf(x, alpha, beta) {\n    if (x === 0 && alpha === 1)\n      return beta;\n    else if (x === 1 && beta === 1)\n      return alpha;\n    return Math.exp(Math.log(alpha) + Math.log(beta) + (alpha - 1) *\n                    Math.log(x) + (beta - 1) *\n                    Math.log(1 - Math.pow(x, alpha)));\n  },\n\n  cdf: function cdf(x, alpha, beta) {\n    if (x < 0)\n      return 0;\n    else if (x > 1)\n      return 1;\n    return (1 - Math.pow(1 - Math.pow(x, alpha), beta));\n  },\n\n  inv: function inv(p, alpha, beta) {\n    return Math.pow(1 - Math.pow(1 - p, 1 / beta), 1 / alpha);\n  },\n\n  mean : function(alpha, beta) {\n    return (beta * jStat.gammafn(1 + 1 / alpha) *\n            jStat.gammafn(beta)) / (jStat.gammafn(1 + 1 / alpha + beta));\n  },\n\n  median: function median(alpha, beta) {\n    return Math.pow(1 - Math.pow(2, -1 / beta), 1 / alpha);\n  },\n\n  mode: function mode(alpha, beta) {\n    if (!(alpha >= 1 && beta >= 1 && (alpha !== 1 && beta !== 1)))\n      return undefined;\n    return Math.pow((alpha - 1) / (alpha * beta - 1), 1 / alpha);\n  },\n\n  variance: function variance(/*alpha, beta*/) {\n    throw new Error('variance not yet implemented');\n    // TODO: complete this\n  }\n});\n\n\n\n// extend lognormal function with static methods\njStat.extend(jStat.lognormal, {\n  pdf: function pdf(x, mu, sigma) {\n    if (x <= 0)\n      return 0;\n    return Math.exp(-Math.log(x) - 0.5 * Math.log(2 * Math.PI) -\n                    Math.log(sigma) - Math.pow(Math.log(x) - mu, 2) /\n                    (2 * sigma * sigma));\n  },\n\n  cdf: function cdf(x, mu, sigma) {\n    if (x < 0)\n      return 0;\n    return 0.5 +\n        (0.5 * jStat.erf((Math.log(x) - mu) / Math.sqrt(2 * sigma * sigma)));\n  },\n\n  inv: function(p, mu, sigma) {\n    return Math.exp(-1.41421356237309505 * sigma * jStat.erfcinv(2 * p) + mu);\n  },\n\n  mean: function mean(mu, sigma) {\n    return Math.exp(mu + sigma * sigma / 2);\n  },\n\n  median: function median(mu/*, sigma*/) {\n    return Math.exp(mu);\n  },\n\n  mode: function mode(mu, sigma) {\n    return Math.exp(mu - sigma * sigma);\n  },\n\n  sample: function sample(mu, sigma) {\n    return Math.exp(jStat.randn() * sigma + mu);\n  },\n\n  variance: function variance(mu, sigma) {\n    return (Math.exp(sigma * sigma) - 1) * Math.exp(2 * mu + sigma * sigma);\n  }\n});\n\n\n\n// extend noncentralt function with static methods\njStat.extend(jStat.noncentralt, {\n  pdf: function pdf(x, dof, ncp) {\n    var tol = 1e-14;\n    if (Math.abs(ncp) < tol)  // ncp approx 0; use student-t\n      return jStat.studentt.pdf(x, dof)\n\n    if (Math.abs(x) < tol) {  // different formula for x == 0\n      return Math.exp(jStat.gammaln((dof + 1) / 2) - ncp * ncp / 2 -\n                      0.5 * Math.log(Math.PI * dof) - jStat.gammaln(dof / 2));\n    }\n\n    // formula for x != 0\n    return dof / x *\n        (jStat.noncentralt.cdf(x * Math.sqrt(1 + 2 / dof), dof+2, ncp) -\n         jStat.noncentralt.cdf(x, dof, ncp));\n  },\n\n  cdf: function cdf(x, dof, ncp) {\n    var tol = 1e-14;\n    var min_iterations = 200;\n\n    if (Math.abs(ncp) < tol)  // ncp approx 0; use student-t\n      return jStat.studentt.cdf(x, dof);\n\n    // turn negative x into positive and flip result afterwards\n    var flip = false;\n    if (x < 0) {\n      flip = true;\n      ncp = -ncp;\n    }\n\n    var prob = jStat.normal.cdf(-ncp, 0, 1);\n    var value = tol + 1;\n    // use value at last two steps to determine convergence\n    var lastvalue = value;\n    var y = x * x / (x * x + dof);\n    var j = 0;\n    var p = Math.exp(-ncp * ncp / 2);\n    var q = Math.exp(-ncp * ncp / 2 - 0.5 * Math.log(2) -\n                     jStat.gammaln(3 / 2)) * ncp;\n    while (j < min_iterations || lastvalue > tol || value > tol) {\n      lastvalue = value;\n      if (j > 0) {\n        p *= (ncp * ncp) / (2 * j);\n        q *= (ncp * ncp) / (2 * (j + 1 / 2));\n      }\n      value = p * jStat.beta.cdf(y, j + 0.5, dof / 2) +\n          q * jStat.beta.cdf(y, j+1, dof/2);\n      prob += 0.5 * value;\n      j++;\n    }\n\n    return flip ? (1 - prob) : prob;\n  }\n});\n\n\n// extend normal function with static methods\njStat.extend(jStat.normal, {\n  pdf: function pdf(x, mean, std) {\n    return Math.exp(-0.5 * Math.log(2 * Math.PI) -\n                    Math.log(std) - Math.pow(x - mean, 2) / (2 * std * std));\n  },\n\n  cdf: function cdf(x, mean, std) {\n    return 0.5 * (1 + jStat.erf((x - mean) / Math.sqrt(2 * std * std)));\n  },\n\n  inv: function(p, mean, std) {\n    return -1.41421356237309505 * std * jStat.erfcinv(2 * p) + mean;\n  },\n\n  mean : function(mean/*, std*/) {\n    return mean;\n  },\n\n  median: function median(mean/*, std*/) {\n    return mean;\n  },\n\n  mode: function (mean/*, std*/) {\n    return mean;\n  },\n\n  sample: function sample(mean, std) {\n    return jStat.randn() * std + mean;\n  },\n\n  variance : function(mean, std) {\n    return std * std;\n  }\n});\n\n\n\n// extend pareto function with static methods\njStat.extend(jStat.pareto, {\n  pdf: function pdf(x, scale, shape) {\n    if (x < scale)\n      return 0;\n    return (shape * Math.pow(scale, shape)) / Math.pow(x, shape + 1);\n  },\n\n  cdf: function cdf(x, scale, shape) {\n    if (x < scale)\n      return 0;\n    return 1 - Math.pow(scale / x, shape);\n  },\n\n  inv: function inv(p, scale, shape) {\n    return scale / Math.pow(1 - p, 1 / shape);\n  },\n\n  mean: function mean(scale, shape) {\n    if (shape <= 1)\n      return undefined;\n    return (shape * Math.pow(scale, shape)) / (shape - 1);\n  },\n\n  median: function median(scale, shape) {\n    return scale * (shape * Math.SQRT2);\n  },\n\n  mode: function mode(scale/*, shape*/) {\n    return scale;\n  },\n\n  variance : function(scale, shape) {\n    if (shape <= 2)\n      return undefined;\n    return (scale*scale * shape) / (Math.pow(shape - 1, 2) * (shape - 2));\n  }\n});\n\n\n\n// extend studentt function with static methods\njStat.extend(jStat.studentt, {\n  pdf: function pdf(x, dof) {\n    dof = dof > 1e100 ? 1e100 : dof;\n    return (1/(Math.sqrt(dof) * jStat.betafn(0.5, dof/2))) *\n        Math.pow(1 + ((x * x) / dof), -((dof + 1) / 2));\n  },\n\n  cdf: function cdf(x, dof) {\n    var dof2 = dof / 2;\n    return jStat.ibeta((x + Math.sqrt(x * x + dof)) /\n                       (2 * Math.sqrt(x * x + dof)), dof2, dof2);\n  },\n\n  inv: function(p, dof) {\n    var x = jStat.ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);\n    x = Math.sqrt(dof * (1 - x) / x);\n    return (p > 0.5) ? x : -x;\n  },\n\n  mean: function mean(dof) {\n    return (dof > 1) ? 0 : undefined;\n  },\n\n  median: function median(/*dof*/) {\n    return 0;\n  },\n\n  mode: function mode(/*dof*/) {\n    return 0;\n  },\n\n  sample: function sample(dof) {\n    return jStat.randn() * Math.sqrt(dof / (2 * jStat.randg(dof / 2)));\n  },\n\n  variance: function variance(dof) {\n    return (dof  > 2) ? dof / (dof - 2) : (dof > 1) ? Infinity : undefined;\n  }\n});\n\n\n\n// extend weibull function with static methods\njStat.extend(jStat.weibull, {\n  pdf: function pdf(x, scale, shape) {\n    if (x < 0 || scale < 0 || shape < 0)\n      return 0;\n    return (shape / scale) * Math.pow((x / scale), (shape - 1)) *\n        Math.exp(-(Math.pow((x / scale), shape)));\n  },\n\n  cdf: function cdf(x, scale, shape) {\n    return x < 0 ? 0 : 1 - Math.exp(-Math.pow((x / scale), shape));\n  },\n\n  inv: function(p, scale, shape) {\n    return scale * Math.pow(-Math.log(1 - p), 1 / shape);\n  },\n\n  mean : function(scale, shape) {\n    return scale * jStat.gammafn(1 + 1 / shape);\n  },\n\n  median: function median(scale, shape) {\n    return scale * Math.pow(Math.log(2), 1 / shape);\n  },\n\n  mode: function mode(scale, shape) {\n    if (shape <= 1)\n      return 0;\n    return scale * Math.pow((shape - 1) / shape, 1 / shape);\n  },\n\n  sample: function sample(scale, shape) {\n    return scale * Math.pow(-Math.log(jStat._random_fn()), 1 / shape);\n  },\n\n  variance: function variance(scale, shape) {\n    return scale * scale * jStat.gammafn(1 + 2 / shape) -\n        Math.pow(jStat.weibull.mean(scale, shape), 2);\n  }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.uniform, {\n  pdf: function pdf(x, a, b) {\n    return (x < a || x > b) ? 0 : 1 / (b - a);\n  },\n\n  cdf: function cdf(x, a, b) {\n    if (x < a)\n      return 0;\n    else if (x < b)\n      return (x - a) / (b - a);\n    return 1;\n  },\n\n  inv: function(p, a, b) {\n    return a + (p * (b - a));\n  },\n\n  mean: function mean(a, b) {\n    return 0.5 * (a + b);\n  },\n\n  median: function median(a, b) {\n    return jStat.mean(a, b);\n  },\n\n  mode: function mode(/*a, b*/) {\n    throw new Error('mode is not yet implemented');\n  },\n\n  sample: function sample(a, b) {\n    return (a / 2 + b / 2) + (b / 2 - a / 2) * (2 * jStat._random_fn() - 1);\n  },\n\n  variance: function variance(a, b) {\n    return Math.pow(b - a, 2) / 12;\n  }\n});\n\n\n// Got this from http://www.math.ucla.edu/~tom/distributions/binomial.html\nfunction betinc(x, a, b, eps) {\n  var a0 = 0;\n  var b0 = 1;\n  var a1 = 1;\n  var b1 = 1;\n  var m9 = 0;\n  var a2 = 0;\n  var c9;\n\n  while (Math.abs((a1 - a2) / a1) > eps) {\n    a2 = a1;\n    c9 = -(a + m9) * (a + b + m9) * x / (a + 2 * m9) / (a + 2 * m9 + 1);\n    a0 = a1 + c9 * a0;\n    b0 = b1 + c9 * b0;\n    m9 = m9 + 1;\n    c9 = m9 * (b - m9) * x / (a + 2 * m9 - 1) / (a + 2 * m9);\n    a1 = a0 + c9 * a1;\n    b1 = b0 + c9 * b1;\n    a0 = a0 / b1;\n    b0 = b0 / b1;\n    a1 = a1 / b1;\n    b1 = 1;\n  }\n\n  return a1 / a;\n}\n\n\n// extend uniform function with static methods\njStat.extend(jStat.binomial, {\n  pdf: function pdf(k, n, p) {\n    return (p === 0 || p === 1) ?\n      ((n * p) === k ? 1 : 0) :\n      jStat.combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k);\n  },\n\n  cdf: function cdf(x, n, p) {\n    var betacdf;\n    var eps = 1e-10;\n\n    if (x < 0)\n      return 0;\n    if (x >= n)\n      return 1;\n    if (p < 0 || p > 1 || n <= 0)\n      return NaN;\n\n    x = Math.floor(x);\n    var z = p;\n    var a = x + 1;\n    var b = n - x;\n    var s = a + b;\n    var bt = Math.exp(jStat.gammaln(s) - jStat.gammaln(b) -\n                      jStat.gammaln(a) + a * Math.log(z) + b * Math.log(1 - z));\n\n    if (z < (a + 1) / (s + 2))\n      betacdf = bt * betinc(z, a, b, eps);\n    else\n      betacdf = 1 - bt * betinc(1 - z, b, a, eps);\n\n    return Math.round((1 - betacdf) * (1 / eps)) / (1 / eps);\n  }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.negbin, {\n  pdf: function pdf(k, r, p) {\n    if (k !== k >>> 0)\n      return false;\n    if (k < 0)\n      return 0;\n    return jStat.combination(k + r - 1, r - 1) *\n        Math.pow(1 - p, k) * Math.pow(p, r);\n  },\n\n  cdf: function cdf(x, r, p) {\n    var sum = 0,\n    k = 0;\n    if (x < 0) return 0;\n    for (; k <= x; k++) {\n      sum += jStat.negbin.pdf(k, r, p);\n    }\n    return sum;\n  }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.hypgeom, {\n  pdf: function pdf(k, N, m, n) {\n    // Hypergeometric PDF.\n\n    // A simplification of the CDF algorithm below.\n\n    // k = number of successes drawn\n    // N = population size\n    // m = number of successes in population\n    // n = number of items drawn from population\n\n    if(k !== k | 0) {\n      return false;\n    } else if(k < 0 || k < m - (N - n)) {\n      // It's impossible to have this few successes drawn.\n      return 0;\n    } else if(k > n || k > m) {\n      // It's impossible to have this many successes drawn.\n      return 0;\n    } else if (m * 2 > N) {\n      // More than half the population is successes.\n\n      if(n * 2 > N) {\n        // More than half the population is sampled.\n\n        return jStat.hypgeom.pdf(N - m - n + k, N, N - m, N - n)\n      } else {\n        // Half or less of the population is sampled.\n\n        return jStat.hypgeom.pdf(n - k, N, N - m, n);\n      }\n\n    } else if(n * 2 > N) {\n      // Half or less is successes.\n\n      return jStat.hypgeom.pdf(m - k, N, m, N - n);\n\n    } else if(m < n) {\n      // We want to have the number of things sampled to be less than the\n      // successes available. So swap the definitions of successful and sampled.\n      return jStat.hypgeom.pdf(k, N, n, m);\n    } else {\n      // If we get here, half or less of the population was sampled, half or\n      // less of it was successes, and we had fewer sampled things than\n      // successes. Now we can do this complicated iterative algorithm in an\n      // efficient way.\n\n      // The basic premise of the algorithm is that we partially normalize our\n      // intermediate product to keep it in a numerically good region, and then\n      // finish the normalization at the end.\n\n      // This variable holds the scaled probability of the current number of\n      // successes.\n      var scaledPDF = 1;\n\n      // This keeps track of how much we have normalized.\n      var samplesDone = 0;\n\n      for(var i = 0; i < k; i++) {\n        // For every possible number of successes up to that observed...\n\n        while(scaledPDF > 1 && samplesDone < n) {\n          // Intermediate result is growing too big. Apply some of the\n          // normalization to shrink everything.\n\n          scaledPDF *= 1 - (m / (N - samplesDone));\n\n          // Say we've normalized by this sample already.\n          samplesDone++;\n        }\n\n        // Work out the partially-normalized hypergeometric PDF for the next\n        // number of successes\n        scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n      }\n\n      for(; samplesDone < n; samplesDone++) {\n        // Apply all the rest of the normalization\n        scaledPDF *= 1 - (m / (N - samplesDone));\n      }\n\n      // Bound answer sanely before returning.\n      return Math.min(1, Math.max(0, scaledPDF));\n    }\n  },\n\n  cdf: function cdf(x, N, m, n) {\n    // Hypergeometric CDF.\n\n    // This algorithm is due to Prof. Thomas S. Ferguson, <tom@math.ucla.edu>,\n    // and comes from his hypergeometric test calculator at\n    // <http://www.math.ucla.edu/~tom/distributions/Hypergeometric.html>.\n\n    // x = number of successes drawn\n    // N = population size\n    // m = number of successes in population\n    // n = number of items drawn from population\n\n    if(x < 0 || x < m - (N - n)) {\n      // It's impossible to have this few successes drawn or fewer.\n      return 0;\n    } else if(x >= n || x >= m) {\n      // We will always have this many successes or fewer.\n      return 1;\n    } else if (m * 2 > N) {\n      // More than half the population is successes.\n\n      if(n * 2 > N) {\n        // More than half the population is sampled.\n\n        return jStat.hypgeom.cdf(N - m - n + x, N, N - m, N - n)\n      } else {\n        // Half or less of the population is sampled.\n\n        return 1 - jStat.hypgeom.cdf(n - x - 1, N, N - m, n);\n      }\n\n    } else if(n * 2 > N) {\n      // Half or less is successes.\n\n      return 1 - jStat.hypgeom.cdf(m - x - 1, N, m, N - n);\n\n    } else if(m < n) {\n      // We want to have the number of things sampled to be less than the\n      // successes available. So swap the definitions of successful and sampled.\n      return jStat.hypgeom.cdf(x, N, n, m);\n    } else {\n      // If we get here, half or less of the population was sampled, half or\n      // less of it was successes, and we had fewer sampled things than\n      // successes. Now we can do this complicated iterative algorithm in an\n      // efficient way.\n\n      // The basic premise of the algorithm is that we partially normalize our\n      // intermediate sum to keep it in a numerically good region, and then\n      // finish the normalization at the end.\n\n      // Holds the intermediate, scaled total CDF.\n      var scaledCDF = 1;\n\n      // This variable holds the scaled probability of the current number of\n      // successes.\n      var scaledPDF = 1;\n\n      // This keeps track of how much we have normalized.\n      var samplesDone = 0;\n\n      for(var i = 0; i < x; i++) {\n        // For every possible number of successes up to that observed...\n\n        while(scaledCDF > 1 && samplesDone < n) {\n          // Intermediate result is growing too big. Apply some of the\n          // normalization to shrink everything.\n\n          var factor = 1 - (m / (N - samplesDone));\n\n          scaledPDF *= factor;\n          scaledCDF *= factor;\n\n          // Say we've normalized by this sample already.\n          samplesDone++;\n        }\n\n        // Work out the partially-normalized hypergeometric PDF for the next\n        // number of successes\n        scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n\n        // Add to the CDF answer.\n        scaledCDF += scaledPDF;\n      }\n\n      for(; samplesDone < n; samplesDone++) {\n        // Apply all the rest of the normalization\n        scaledCDF *= 1 - (m / (N - samplesDone));\n      }\n\n      // Bound answer sanely before returning.\n      return Math.min(1, Math.max(0, scaledCDF));\n    }\n  }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.poisson, {\n  pdf: function pdf(k, l) {\n    if (l < 0 || (k % 1) !== 0 || k < 0) {\n      return 0;\n    }\n\n    return Math.pow(l, k) * Math.exp(-l) / jStat.factorial(k);\n  },\n\n  cdf: function cdf(x, l) {\n    var sumarr = [],\n    k = 0;\n    if (x < 0) return 0;\n    for (; k <= x; k++) {\n      sumarr.push(jStat.poisson.pdf(k, l));\n    }\n    return jStat.sum(sumarr);\n  },\n\n  mean : function(l) {\n    return l;\n  },\n\n  variance : function(l) {\n    return l;\n  },\n\n  sampleSmall: function sampleSmall(l) {\n    var p = 1, k = 0, L = Math.exp(-l);\n    do {\n      k++;\n      p *= jStat._random_fn();\n    } while (p > L);\n    return k - 1;\n  },\n\n  sampleLarge: function sampleLarge(l) {\n    var lam = l;\n    var k;\n    var U, V, slam, loglam, a, b, invalpha, vr, us;\n\n    slam = Math.sqrt(lam);\n    loglam = Math.log(lam);\n    b = 0.931 + 2.53 * slam;\n    a = -0.059 + 0.02483 * b;\n    invalpha = 1.1239 + 1.1328 / (b - 3.4);\n    vr = 0.9277 - 3.6224 / (b - 2);\n\n    while (1) {\n      U = Math.random() - 0.5;\n      V = Math.random();\n      us = 0.5 - Math.abs(U);\n      k = Math.floor((2 * a / us + b) * U + lam + 0.43);\n      if ((us >= 0.07) && (V <= vr)) {\n          return k;\n      }\n      if ((k < 0) || ((us < 0.013) && (V > us))) {\n          continue;\n      }\n      /* log(V) == log(0.0) ok here */\n      /* if U==0.0 so that us==0.0, log is ok since always returns */\n      if ((Math.log(V) + Math.log(invalpha) - Math.log(a / (us * us) + b)) <= (-lam + k * loglam - jStat.loggam(k + 1))) {\n          return k;\n      }\n    }\n  },\n\n  sample: function sample(l) {\n    if (l < 10)\n      return this.sampleSmall(l);\n    else\n      return this.sampleLarge(l);\n  }\n});\n\n// extend triangular function with static methods\njStat.extend(jStat.triangular, {\n  pdf: function pdf(x, a, b, c) {\n    if (b <= a || c < a || c > b) {\n      return NaN;\n    } else {\n      if (x < a || x > b) {\n        return 0;\n      } else if (x < c) {\n          return (2 * (x - a)) / ((b - a) * (c - a));\n      } else if (x === c) {\n          return (2 / (b - a));\n      } else { // x > c\n          return (2 * (b - x)) / ((b - a) * (b - c));\n      }\n    }\n  },\n\n  cdf: function cdf(x, a, b, c) {\n    if (b <= a || c < a || c > b)\n      return NaN;\n    if (x <= a)\n      return 0;\n    else if (x >= b)\n      return 1;\n    if (x <= c)\n      return Math.pow(x - a, 2) / ((b - a) * (c - a));\n    else // x > c\n      return 1 - Math.pow(b - x, 2) / ((b - a) * (b - c));\n  },\n\n  inv: function inv(p, a, b, c) {\n    if (b <= a || c < a || c > b) {\n      return NaN;\n    } else {\n      if (p <= ((c - a) / (b - a))) {\n        return a + (b - a) * Math.sqrt(p * ((c - a) / (b - a)));\n      } else { // p > ((c - a) / (b - a))\n        return a + (b - a) * (1 - Math.sqrt((1 - p) * (1 - ((c - a) / (b - a)))));\n      }\n    }\n  },\n\n  mean: function mean(a, b, c) {\n    return (a + b + c) / 3;\n  },\n\n  median: function median(a, b, c) {\n    if (c <= (a + b) / 2) {\n      return b - Math.sqrt((b - a) * (b - c)) / Math.sqrt(2);\n    } else if (c > (a + b) / 2) {\n      return a + Math.sqrt((b - a) * (c - a)) / Math.sqrt(2);\n    }\n  },\n\n  mode: function mode(a, b, c) {\n    return c;\n  },\n\n  sample: function sample(a, b, c) {\n    var u = jStat._random_fn();\n    if (u < ((c - a) / (b - a)))\n      return a + Math.sqrt(u * (b - a) * (c - a))\n    return b - Math.sqrt((1 - u) * (b - a) * (b - c));\n  },\n\n  variance: function variance(a, b, c) {\n    return (a * a + b * b + c * c - a * b - a * c - b * c) / 18;\n  }\n});\n\n\n// extend arcsine function with static methods\njStat.extend(jStat.arcsine, {\n  pdf: function pdf(x, a, b) {\n    if (b <= a) return NaN;\n\n    return (x <= a || x >= b) ? 0 :\n      (2 / Math.PI) *\n        Math.pow(Math.pow(b - a, 2) -\n                  Math.pow(2 * x - a - b, 2), -0.5);\n  },\n\n  cdf: function cdf(x, a, b) {\n    if (x < a)\n      return 0;\n    else if (x < b)\n      return (2 / Math.PI) * Math.asin(Math.sqrt((x - a)/(b - a)));\n    return 1;\n  },\n\n  inv: function(p, a, b) {\n    return a + (0.5 - 0.5 * Math.cos(Math.PI * p)) * (b - a);\n  },\n\n  mean: function mean(a, b) {\n    if (b <= a) return NaN;\n    return (a + b) / 2;\n  },\n\n  median: function median(a, b) {\n    if (b <= a) return NaN;\n    return (a + b) / 2;\n  },\n\n  mode: function mode(/*a, b*/) {\n    throw new Error('mode is not yet implemented');\n  },\n\n  sample: function sample(a, b) {\n    return ((a + b) / 2) + ((b - a) / 2) *\n      Math.sin(2 * Math.PI * jStat.uniform.sample(0, 1));\n  },\n\n  variance: function variance(a, b) {\n    if (b <= a) return NaN;\n    return Math.pow(b - a, 2) / 8;\n  }\n});\n\n\nfunction laplaceSign(x) { return x / Math.abs(x); }\n\njStat.extend(jStat.laplace, {\n  pdf: function pdf(x, mu, b) {\n    return (b <= 0) ? 0 : (Math.exp(-Math.abs(x - mu) / b)) / (2 * b);\n  },\n\n  cdf: function cdf(x, mu, b) {\n    if (b <= 0) { return 0; }\n\n    if(x < mu) {\n      return 0.5 * Math.exp((x - mu) / b);\n    } else {\n      return 1 - 0.5 * Math.exp(- (x - mu) / b);\n    }\n  },\n\n  mean: function(mu/*, b*/) {\n    return mu;\n  },\n\n  median: function(mu/*, b*/) {\n    return mu;\n  },\n\n  mode: function(mu/*, b*/) {\n    return mu;\n  },\n\n  variance: function(mu, b) {\n    return 2 * b * b;\n  },\n\n  sample: function sample(mu, b) {\n    var u = jStat._random_fn() - 0.5;\n\n    return mu - (b * laplaceSign(u) * Math.log(1 - (2 * Math.abs(u))));\n  }\n});\n\nfunction tukeyWprob(w, rr, cc) {\n  var nleg = 12;\n  var ihalf = 6;\n\n  var C1 = -30;\n  var C2 = -50;\n  var C3 = 60;\n  var bb   = 8;\n  var wlar = 3;\n  var wincr1 = 2;\n  var wincr2 = 3;\n  var xleg = [\n    0.981560634246719250690549090149,\n    0.904117256370474856678465866119,\n    0.769902674194304687036893833213,\n    0.587317954286617447296702418941,\n    0.367831498998180193752691536644,\n    0.125233408511468915472441369464\n  ];\n  var aleg = [\n    0.047175336386511827194615961485,\n    0.106939325995318430960254718194,\n    0.160078328543346226334652529543,\n    0.203167426723065921749064455810,\n    0.233492536538354808760849898925,\n    0.249147045813402785000562436043\n  ];\n\n  var qsqz = w * 0.5;\n\n  // if w >= 16 then the integral lower bound (occurs for c=20)\n  // is 0.99999999999995 so return a value of 1.\n\n  if (qsqz >= bb)\n    return 1.0;\n\n  // find (f(w/2) - 1) ^ cc\n  // (first term in integral of hartley's form).\n\n  var pr_w = 2 * jStat.normal.cdf(qsqz, 0, 1, 1, 0) - 1; // erf(qsqz / M_SQRT2)\n  // if pr_w ^ cc < 2e-22 then set pr_w = 0\n  if (pr_w >= Math.exp(C2 / cc))\n    pr_w = Math.pow(pr_w, cc);\n  else\n    pr_w = 0.0;\n\n  // if w is large then the second component of the\n  // integral is small, so fewer intervals are needed.\n\n  var wincr;\n  if (w > wlar)\n    wincr = wincr1;\n  else\n    wincr = wincr2;\n\n  // find the integral of second term of hartley's form\n  // for the integral of the range for equal-length\n  // intervals using legendre quadrature.  limits of\n  // integration are from (w/2, 8).  two or three\n  // equal-length intervals are used.\n\n  // blb and bub are lower and upper limits of integration.\n\n  var blb = qsqz;\n  var binc = (bb - qsqz) / wincr;\n  var bub = blb + binc;\n  var einsum = 0.0;\n\n  // integrate over each interval\n\n  var cc1 = cc - 1.0;\n  for (var wi = 1; wi <= wincr; wi++) {\n    var elsum = 0.0;\n    var a = 0.5 * (bub + blb);\n\n    // legendre quadrature with order = nleg\n\n    var b = 0.5 * (bub - blb);\n\n    for (var jj = 1; jj <= nleg; jj++) {\n      var j, xx;\n      if (ihalf < jj) {\n        j = (nleg - jj) + 1;\n        xx = xleg[j-1];\n      } else {\n        j = jj;\n        xx = -xleg[j-1];\n      }\n      var c = b * xx;\n      var ac = a + c;\n\n      // if exp(-qexpo/2) < 9e-14,\n      // then doesn't contribute to integral\n\n      var qexpo = ac * ac;\n      if (qexpo > C3)\n        break;\n\n      var pplus = 2 * jStat.normal.cdf(ac, 0, 1, 1, 0);\n      var pminus= 2 * jStat.normal.cdf(ac, w, 1, 1, 0);\n\n      // if rinsum ^ (cc-1) < 9e-14,\n      // then doesn't contribute to integral\n\n      var rinsum = (pplus * 0.5) - (pminus * 0.5);\n      if (rinsum >= Math.exp(C1 / cc1)) {\n        rinsum = (aleg[j-1] * Math.exp(-(0.5 * qexpo))) * Math.pow(rinsum, cc1);\n        elsum += rinsum;\n      }\n    }\n    elsum *= (((2.0 * b) * cc) / Math.sqrt(2 * Math.PI));\n    einsum += elsum;\n    blb = bub;\n    bub += binc;\n  }\n\n  // if pr_w ^ rr < 9e-14, then return 0\n  pr_w += einsum;\n  if (pr_w <= Math.exp(C1 / rr))\n    return 0;\n\n  pr_w = Math.pow(pr_w, rr);\n  if (pr_w >= 1) // 1 was iMax was eps\n    return 1;\n  return pr_w;\n}\n\nfunction tukeyQinv(p, c, v) {\n  var p0 = 0.322232421088;\n  var q0 = 0.993484626060e-01;\n  var p1 = -1.0;\n  var q1 = 0.588581570495;\n  var p2 = -0.342242088547;\n  var q2 = 0.531103462366;\n  var p3 = -0.204231210125;\n  var q3 = 0.103537752850;\n  var p4 = -0.453642210148e-04;\n  var q4 = 0.38560700634e-02;\n  var c1 = 0.8832;\n  var c2 = 0.2368;\n  var c3 = 1.214;\n  var c4 = 1.208;\n  var c5 = 1.4142;\n  var vmax = 120.0;\n\n  var ps = 0.5 - 0.5 * p;\n  var yi = Math.sqrt(Math.log(1.0 / (ps * ps)));\n  var t = yi + (((( yi * p4 + p3) * yi + p2) * yi + p1) * yi + p0)\n     / (((( yi * q4 + q3) * yi + q2) * yi + q1) * yi + q0);\n  if (v < vmax) t += (t * t * t + t) / v / 4.0;\n  var q = c1 - c2 * t;\n  if (v < vmax) q += -c3 / v + c4 * t / v;\n  return t * (q * Math.log(c - 1.0) + c5);\n}\n\njStat.extend(jStat.tukey, {\n  cdf: function cdf(q, nmeans, df) {\n    // Identical implementation as the R ptukey() function as of commit 68947\n    var rr = 1;\n    var cc = nmeans;\n\n    var nlegq = 16;\n    var ihalfq = 8;\n\n    var eps1 = -30.0;\n    var eps2 = 1.0e-14;\n    var dhaf  = 100.0;\n    var dquar = 800.0;\n    var deigh = 5000.0;\n    var dlarg = 25000.0;\n    var ulen1 = 1.0;\n    var ulen2 = 0.5;\n    var ulen3 = 0.25;\n    var ulen4 = 0.125;\n    var xlegq = [\n      0.989400934991649932596154173450,\n      0.944575023073232576077988415535,\n      0.865631202387831743880467897712,\n      0.755404408355003033895101194847,\n      0.617876244402643748446671764049,\n      0.458016777657227386342419442984,\n      0.281603550779258913230460501460,\n      0.950125098376374401853193354250e-1\n    ];\n    var alegq = [\n      0.271524594117540948517805724560e-1,\n      0.622535239386478928628438369944e-1,\n      0.951585116824927848099251076022e-1,\n      0.124628971255533872052476282192,\n      0.149595988816576732081501730547,\n      0.169156519395002538189312079030,\n      0.182603415044923588866763667969,\n      0.189450610455068496285396723208\n    ];\n\n    if (q <= 0)\n      return 0;\n\n    // df must be > 1\n    // there must be at least two values\n\n    if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n    if (!Number.isFinite(q))\n      return 1;\n\n    if (df > dlarg)\n      return tukeyWprob(q, rr, cc);\n\n    // calculate leading constant\n\n    var f2 = df * 0.5;\n    var f2lf = ((f2 * Math.log(df)) - (df * Math.log(2))) - jStat.gammaln(f2);\n    var f21 = f2 - 1.0;\n\n    // integral is divided into unit, half-unit, quarter-unit, or\n    // eighth-unit length intervals depending on the value of the\n    // degrees of freedom.\n\n    var ff4 = df * 0.25;\n    var ulen;\n    if      (df <= dhaf)  ulen = ulen1;\n    else if (df <= dquar) ulen = ulen2;\n    else if (df <= deigh) ulen = ulen3;\n    else                  ulen = ulen4;\n\n    f2lf += Math.log(ulen);\n\n    // integrate over each subinterval\n\n    var ans = 0.0;\n\n    for (var i = 1; i <= 50; i++) {\n      var otsum = 0.0;\n\n      // legendre quadrature with order = nlegq\n      // nodes (stored in xlegq) are symmetric around zero.\n\n      var twa1 = (2 * i - 1) * ulen;\n\n      for (var jj = 1; jj <= nlegq; jj++) {\n        var j, t1;\n        if (ihalfq < jj) {\n          j = jj - ihalfq - 1;\n          t1 = (f2lf + (f21 * Math.log(twa1 + (xlegq[j] * ulen))))\n              - (((xlegq[j] * ulen) + twa1) * ff4);\n        } else {\n          j = jj - 1;\n          t1 = (f2lf + (f21 * Math.log(twa1 - (xlegq[j] * ulen))))\n              + (((xlegq[j] * ulen) - twa1) * ff4);\n        }\n\n        // if exp(t1) < 9e-14, then doesn't contribute to integral\n        var qsqz;\n        if (t1 >= eps1) {\n          if (ihalfq < jj) {\n            qsqz = q * Math.sqrt(((xlegq[j] * ulen) + twa1) * 0.5);\n          } else {\n            qsqz = q * Math.sqrt(((-(xlegq[j] * ulen)) + twa1) * 0.5);\n          }\n\n          // call wprob to find integral of range portion\n\n          var wprb = tukeyWprob(qsqz, rr, cc);\n          var rotsum = (wprb * alegq[j]) * Math.exp(t1);\n          otsum += rotsum;\n        }\n        // end legendre integral for interval i\n        // L200:\n      }\n\n      // if integral for interval i < 1e-14, then stop.\n      // However, in order to avoid small area under left tail,\n      // at least  1 / ulen  intervals are calculated.\n      if (i * ulen >= 1.0 && otsum <= eps2)\n        break;\n\n      // end of interval i\n      // L330:\n\n      ans += otsum;\n    }\n\n    if (otsum > eps2) { // not converged\n      throw new Error('tukey.cdf failed to converge');\n    }\n    if (ans > 1)\n      ans = 1;\n    return ans;\n  },\n\n  inv: function(p, nmeans, df) {\n    // Identical implementation as the R qtukey() function as of commit 68947\n    var rr = 1;\n    var cc = nmeans;\n\n    var eps = 0.0001;\n    var maxiter = 50;\n\n    // df must be > 1 ; there must be at least two values\n    if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n    if (p < 0 || p > 1) return NaN;\n    if (p === 0) return 0;\n    if (p === 1) return Infinity;\n\n    // Initial value\n\n    var x0 = tukeyQinv(p, cc, df);\n\n    // Find prob(value < x0)\n\n    var valx0 = jStat.tukey.cdf(x0, nmeans, df) - p;\n\n    // Find the second iterate and prob(value < x1).\n    // If the first iterate has probability value\n    // exceeding p then second iterate is 1 less than\n    // first iterate; otherwise it is 1 greater.\n\n    var x1;\n    if (valx0 > 0.0)\n      x1 = Math.max(0.0, x0 - 1.0);\n    else\n      x1 = x0 + 1.0;\n    var valx1 = jStat.tukey.cdf(x1, nmeans, df) - p;\n\n    // Find new iterate\n\n    var ans;\n    for(var iter = 1; iter < maxiter; iter++) {\n      ans = x1 - ((valx1 * (x1 - x0)) / (valx1 - valx0));\n      valx0 = valx1;\n\n      // New iterate must be >= 0\n\n      x0 = x1;\n      if (ans < 0.0) {\n        ans = 0.0;\n        valx1 = -p;\n      }\n      // Find prob(value < new iterate)\n\n      valx1 = jStat.tukey.cdf(ans, nmeans, df) - p;\n      x1 = ans;\n\n      // If the difference between two successive\n      // iterates is less than eps, stop\n\n      var xabs = Math.abs(x1 - x0);\n      if (xabs < eps)\n        return ans;\n    }\n\n    throw new Error('tukey.inv failed to converge');\n  }\n});\n\n}(jStat, Math));\n/* Provides functions for the solution of linear system of equations, integration, extrapolation,\n * interpolation, eigenvalue problems, differential equations and PCA analysis. */\n\n(function(jStat, Math) {\n\nvar push = Array.prototype.push;\nvar isArray = jStat.utils.isArray;\n\nfunction isUsable(arg) {\n  return isArray(arg) || arg instanceof jStat;\n}\n\njStat.extend({\n\n  // add a vector/matrix to a vector/matrix or scalar\n  add: function add(arr, arg) {\n    // check if arg is a vector or scalar\n    if (isUsable(arg)) {\n      if (!isUsable(arg[0])) arg = [ arg ];\n      return jStat.map(arr, function(value, row, col) {\n        return value + arg[row][col];\n      });\n    }\n    return jStat.map(arr, function(value) { return value + arg; });\n  },\n\n  // subtract a vector or scalar from the vector\n  subtract: function subtract(arr, arg) {\n    // check if arg is a vector or scalar\n    if (isUsable(arg)) {\n      if (!isUsable(arg[0])) arg = [ arg ];\n      return jStat.map(arr, function(value, row, col) {\n        return value - arg[row][col] || 0;\n      });\n    }\n    return jStat.map(arr, function(value) { return value - arg; });\n  },\n\n  // matrix division\n  divide: function divide(arr, arg) {\n    if (isUsable(arg)) {\n      if (!isUsable(arg[0])) arg = [ arg ];\n      return jStat.multiply(arr, jStat.inv(arg));\n    }\n    return jStat.map(arr, function(value) { return value / arg; });\n  },\n\n  // matrix multiplication\n  multiply: function multiply(arr, arg) {\n    var row, col, nrescols, sum, nrow, ncol, res, rescols;\n    // eg: arr = 2 arg = 3 -> 6 for res[0][0] statement closure\n    if (arr.length === undefined && arg.length === undefined) {\n      return arr * arg;\n    }\n    nrow = arr.length,\n    ncol = arr[0].length,\n    res = jStat.zeros(nrow, nrescols = (isUsable(arg)) ? arg[0].length : ncol),\n    rescols = 0;\n    if (isUsable(arg)) {\n      for (; rescols < nrescols; rescols++) {\n        for (row = 0; row < nrow; row++) {\n          sum = 0;\n          for (col = 0; col < ncol; col++)\n          sum += arr[row][col] * arg[col][rescols];\n          res[row][rescols] = sum;\n        }\n      }\n      return (nrow === 1 && rescols === 1) ? res[0][0] : res;\n    }\n    return jStat.map(arr, function(value) { return value * arg; });\n  },\n\n  // outer([1,2,3],[4,5,6])\n  // ===\n  // [[1],[2],[3]] times [[4,5,6]]\n  // ->\n  // [[4,5,6],[8,10,12],[12,15,18]]\n  outer:function outer(A, B) {\n    return jStat.multiply(A.map(function(t){ return [t] }), [B]);\n  },\n\n\n  // Returns the dot product of two matricies\n  dot: function dot(arr, arg) {\n    if (!isUsable(arr[0])) arr = [ arr ];\n    if (!isUsable(arg[0])) arg = [ arg ];\n    // convert column to row vector\n    var left = (arr[0].length === 1 && arr.length !== 1) ? jStat.transpose(arr) : arr,\n    right = (arg[0].length === 1 && arg.length !== 1) ? jStat.transpose(arg) : arg,\n    res = [],\n    row = 0,\n    nrow = left.length,\n    ncol = left[0].length,\n    sum, col;\n    for (; row < nrow; row++) {\n      res[row] = [];\n      sum = 0;\n      for (col = 0; col < ncol; col++)\n      sum += left[row][col] * right[row][col];\n      res[row] = sum;\n    }\n    return (res.length === 1) ? res[0] : res;\n  },\n\n  // raise every element by a scalar\n  pow: function pow(arr, arg) {\n    return jStat.map(arr, function(value) { return Math.pow(value, arg); });\n  },\n\n  // exponentiate every element\n  exp: function exp(arr) {\n    return jStat.map(arr, function(value) { return Math.exp(value); });\n  },\n\n  // generate the natural log of every element\n  log: function exp(arr) {\n    return jStat.map(arr, function(value) { return Math.log(value); });\n  },\n\n  // generate the absolute values of the vector\n  abs: function abs(arr) {\n    return jStat.map(arr, function(value) { return Math.abs(value); });\n  },\n\n  // computes the p-norm of the vector\n  // In the case that a matrix is passed, uses the first row as the vector\n  norm: function norm(arr, p) {\n    var nnorm = 0,\n    i = 0;\n    // check the p-value of the norm, and set for most common case\n    if (isNaN(p)) p = 2;\n    // check if multi-dimensional array, and make vector correction\n    if (isUsable(arr[0])) arr = arr[0];\n    // vector norm\n    for (; i < arr.length; i++) {\n      nnorm += Math.pow(Math.abs(arr[i]), p);\n    }\n    return Math.pow(nnorm, 1 / p);\n  },\n\n  // computes the angle between two vectors in rads\n  // In case a matrix is passed, this uses the first row as the vector\n  angle: function angle(arr, arg) {\n    return Math.acos(jStat.dot(arr, arg) / (jStat.norm(arr) * jStat.norm(arg)));\n  },\n\n  // augment one matrix by another\n  // Note: this function returns a matrix, not a jStat object\n  aug: function aug(a, b) {\n    var newarr = [];\n    var i;\n    for (i = 0; i < a.length; i++) {\n      newarr.push(a[i].slice());\n    }\n    for (i = 0; i < newarr.length; i++) {\n      push.apply(newarr[i], b[i]);\n    }\n    return newarr;\n  },\n\n  // The inv() function calculates the inverse of a matrix\n  // Create the inverse by augmenting the matrix by the identity matrix of the\n  // appropriate size, and then use G-J elimination on the augmented matrix.\n  inv: function inv(a) {\n    var rows = a.length;\n    var cols = a[0].length;\n    var b = jStat.identity(rows, cols);\n    var c = jStat.gauss_jordan(a, b);\n    var result = [];\n    var i = 0;\n    var j;\n\n    //We need to copy the inverse portion to a new matrix to rid G-J artifacts\n    for (; i < rows; i++) {\n      result[i] = [];\n      for (j = cols; j < c[0].length; j++)\n        result[i][j - cols] = c[i][j];\n    }\n    return result;\n  },\n\n  // calculate the determinant of a matrix\n  det: function det(a) {\n    if (a.length === 2) {\n      return a[0][0] * a[1][1] - a[0][1] * a[1][0];\n    }\n\n    var determinant = 0;\n    for (var i = 0; i < a.length; i++) {\n      // build a sub matrix without column `i`\n      var submatrix = [];\n      for (var row = 1; row < a.length; row++) {\n        submatrix[row - 1] = [];\n        for (var col = 0; col < a.length; col++) {\n          if (col < i) {\n            submatrix[row - 1][col] = a[row][col];\n          } else if (col > i) {\n            submatrix[row - 1][col - 1] = a[row][col];\n          }\n        }\n      }\n\n      // alternate between + and - between determinants\n      var sign = i % 2 ? -1 : 1;\n      determinant += det(submatrix) * a[0][i] * sign;\n    }\n\n    return determinant\n  },\n\n  gauss_elimination: function gauss_elimination(a, b) {\n    var i = 0,\n    j = 0,\n    n = a.length,\n    m = a[0].length,\n    factor = 1,\n    sum = 0,\n    x = [],\n    maug, pivot, temp, k;\n    a = jStat.aug(a, b);\n    maug = a[0].length;\n    for(i = 0; i < n; i++) {\n      pivot = a[i][i];\n      j = i;\n      for (k = i + 1; k < m; k++) {\n        if (pivot < Math.abs(a[k][i])) {\n          pivot = a[k][i];\n          j = k;\n        }\n      }\n      if (j != i) {\n        for(k = 0; k < maug; k++) {\n          temp = a[i][k];\n          a[i][k] = a[j][k];\n          a[j][k] = temp;\n        }\n      }\n      for (j = i + 1; j < n; j++) {\n        factor = a[j][i] / a[i][i];\n        for(k = i; k < maug; k++) {\n          a[j][k] = a[j][k] - factor * a[i][k];\n        }\n      }\n    }\n    for (i = n - 1; i >= 0; i--) {\n      sum = 0;\n      for (j = i + 1; j<= n - 1; j++) {\n        sum = sum + x[j] * a[i][j];\n      }\n      x[i] =(a[i][maug - 1] - sum) / a[i][i];\n    }\n    return x;\n  },\n\n  gauss_jordan: function gauss_jordan(a, b) {\n    var m = jStat.aug(a, b);\n    var h = m.length;\n    var w = m[0].length;\n    var c = 0;\n    var x, y, y2;\n    // find max pivot\n    for (y = 0; y < h; y++) {\n      var maxrow = y;\n      for (y2 = y+1; y2 < h; y2++) {\n        if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))\n          maxrow = y2;\n      }\n      var tmp = m[y];\n      m[y] = m[maxrow];\n      m[maxrow] = tmp\n      for (y2 = y+1; y2 < h; y2++) {\n        c = m[y2][y] / m[y][y];\n        for (x = y; x < w; x++) {\n          m[y2][x] -= m[y][x] * c;\n        }\n      }\n    }\n    // backsubstitute\n    for (y = h-1; y >= 0; y--) {\n      c = m[y][y];\n      for (y2 = 0; y2 < y; y2++) {\n        for (x = w-1; x > y-1; x--) {\n          m[y2][x] -= m[y][x] * m[y2][y] / c;\n        }\n      }\n      m[y][y] /= c;\n      for (x = h; x < w; x++) {\n        m[y][x] /= c;\n      }\n    }\n    return m;\n  },\n\n  // solve equation\n  // Ax=b\n  // A is upper triangular matrix\n  // A=[[1,2,3],[0,4,5],[0,6,7]]\n  // b=[1,2,3]\n  // triaUpSolve(A,b) // -> [2.666,0.1666,1.666]\n  // if you use matrix style\n  // A=[[1,2,3],[0,4,5],[0,6,7]]\n  // b=[[1],[2],[3]]\n  // will return [[2.666],[0.1666],[1.666]]\n  triaUpSolve: function triaUpSolve(A, b) {\n    var size = A[0].length;\n    var x = jStat.zeros(1, size)[0];\n    var parts;\n    var matrix_mode = false;\n\n    if (b[0].length != undefined) {\n      b = b.map(function(i){ return i[0] });\n      matrix_mode = true;\n    }\n\n    jStat.arange(size - 1, -1, -1).forEach(function(i) {\n      parts = jStat.arange(i + 1, size).map(function(j) {\n        return x[j] * A[i][j];\n      });\n      x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n    });\n\n    if (matrix_mode)\n      return x.map(function(i){ return [i] });\n    return x;\n  },\n\n  triaLowSolve: function triaLowSolve(A, b) {\n    // like to triaUpSolve but A is lower triangular matrix\n    var size = A[0].length;\n    var x = jStat.zeros(1, size)[0];\n    var parts;\n\n    var matrix_mode=false;\n    if (b[0].length != undefined) {\n      b = b.map(function(i){ return i[0] });\n      matrix_mode = true;\n    }\n\n    jStat.arange(size).forEach(function(i) {\n      parts = jStat.arange(i).map(function(j) {\n        return A[i][j] * x[j];\n      });\n      x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n    })\n\n    if (matrix_mode)\n      return x.map(function(i){ return [i] });\n    return x;\n  },\n\n\n  // A -> [L,U]\n  // A=LU\n  // L is lower triangular matrix\n  // U is upper triangular matrix\n  lu: function lu(A) {\n    var size = A.length;\n    //var L=jStat.diagonal(jStat.ones(1,size)[0]);\n    var L = jStat.identity(size);\n    var R = jStat.zeros(A.length, A[0].length);\n    var parts;\n    jStat.arange(size).forEach(function(t) {\n      R[0][t] = A[0][t];\n    });\n    jStat.arange(1, size).forEach(function(l) {\n      jStat.arange(l).forEach(function(i) {\n        parts = jStat.arange(i).map(function(jj) {\n          return L[l][jj] * R[jj][i];\n        });\n        L[l][i] = (A[l][i] - jStat.sum(parts)) / R[i][i];\n      });\n      jStat.arange(l, size).forEach(function(j) {\n        parts = jStat.arange(l).map(function(jj) {\n          return L[l][jj] * R[jj][j];\n        });\n        R[l][j] = A[parts.length][j] - jStat.sum(parts);\n      });\n    });\n    return [L, R];\n  },\n\n  // A -> T\n  // A=TT'\n  // T is lower triangular matrix\n  cholesky: function cholesky(A) {\n    var size = A.length;\n    var T = jStat.zeros(A.length, A[0].length);\n    var parts;\n    jStat.arange(size).forEach(function(i) {\n      parts = jStat.arange(i).map(function(t) {\n        return Math.pow(T[i][t],2);\n      });\n      T[i][i] = Math.sqrt(A[i][i] - jStat.sum(parts));\n      jStat.arange(i + 1, size).forEach(function(j) {\n        parts = jStat.arange(i).map(function(t) {\n          return T[i][t] * T[j][t];\n        });\n        T[j][i] = (A[i][j] - jStat.sum(parts)) / T[i][i];\n      });\n    });\n    return T;\n  },\n\n\n  gauss_jacobi: function gauss_jacobi(a, b, x, r) {\n    var i = 0;\n    var j = 0;\n    var n = a.length;\n    var l = [];\n    var u = [];\n    var d = [];\n    var xv, c, h, xk;\n    for (; i < n; i++) {\n      l[i] = [];\n      u[i] = [];\n      d[i] = [];\n      for (j = 0; j < n; j++) {\n        if (i > j) {\n          l[i][j] = a[i][j];\n          u[i][j] = d[i][j] = 0;\n        } else if (i < j) {\n          u[i][j] = a[i][j];\n          l[i][j] = d[i][j] = 0;\n        } else {\n          d[i][j] = a[i][j];\n          l[i][j] = u[i][j] = 0;\n        }\n      }\n    }\n    h = jStat.multiply(jStat.multiply(jStat.inv(d), jStat.add(l, u)), -1);\n    c = jStat.multiply(jStat.inv(d), b);\n    xv = x;\n    xk = jStat.add(jStat.multiply(h, x), c);\n    i = 2;\n    while (Math.abs(jStat.norm(jStat.subtract(xk,xv))) > r) {\n      xv = xk;\n      xk = jStat.add(jStat.multiply(h, xv), c);\n      i++;\n    }\n    return xk;\n  },\n\n  gauss_seidel: function gauss_seidel(a, b, x, r) {\n    var i = 0;\n    var n = a.length;\n    var l = [];\n    var u = [];\n    var d = [];\n    var j, xv, c, h, xk;\n    for (; i < n; i++) {\n      l[i] = [];\n      u[i] = [];\n      d[i] = [];\n      for (j = 0; j < n; j++) {\n        if (i > j) {\n          l[i][j] = a[i][j];\n          u[i][j] = d[i][j] = 0;\n        } else if (i < j) {\n          u[i][j] = a[i][j];\n          l[i][j] = d[i][j] = 0;\n        } else {\n          d[i][j] = a[i][j];\n          l[i][j] = u[i][j] = 0;\n        }\n      }\n    }\n    h = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d, l)), u), -1);\n    c = jStat.multiply(jStat.inv(jStat.add(d, l)), b);\n    xv = x;\n    xk = jStat.add(jStat.multiply(h, x), c);\n    i = 2;\n    while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n      xv = xk;\n      xk = jStat.add(jStat.multiply(h, xv), c);\n      i = i + 1;\n    }\n    return xk;\n  },\n\n  SOR: function SOR(a, b, x, r, w) {\n    var i = 0;\n    var n = a.length;\n    var l = [];\n    var u = [];\n    var d = [];\n    var j, xv, c, h, xk;\n    for (; i < n; i++) {\n      l[i] = [];\n      u[i] = [];\n      d[i] = [];\n      for (j = 0; j < n; j++) {\n        if (i > j) {\n          l[i][j] = a[i][j];\n          u[i][j] = d[i][j] = 0;\n        } else if (i < j) {\n          u[i][j] = a[i][j];\n          l[i][j] = d[i][j] = 0;\n        } else {\n          d[i][j] = a[i][j];\n          l[i][j] = u[i][j] = 0;\n        }\n      }\n    }\n    h = jStat.multiply(jStat.inv(jStat.add(d, jStat.multiply(l, w))),\n                       jStat.subtract(jStat.multiply(d, 1 - w),\n                                      jStat.multiply(u, w)));\n    c = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d,\n        jStat.multiply(l, w))), b), w);\n    xv = x;\n    xk = jStat.add(jStat.multiply(h, x), c);\n    i = 2;\n    while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n      xv = xk;\n      xk = jStat.add(jStat.multiply(h, xv), c);\n      i++;\n    }\n    return xk;\n  },\n\n  householder: function householder(a) {\n    var m = a.length;\n    var n = a[0].length;\n    var i = 0;\n    var w = [];\n    var p = [];\n    var alpha, r, k, j, factor;\n    for (; i < m - 1; i++) {\n      alpha = 0;\n      for (j = i + 1; j < n; j++)\n      alpha += (a[j][i] * a[j][i]);\n      factor = (a[i + 1][i] > 0) ? -1 : 1;\n      alpha = factor * Math.sqrt(alpha);\n      r = Math.sqrt((((alpha * alpha) - a[i + 1][i] * alpha) / 2));\n      w = jStat.zeros(m, 1);\n      w[i + 1][0] = (a[i + 1][i] - alpha) / (2 * r);\n      for (k = i + 2; k < m; k++) w[k][0] = a[k][i] / (2 * r);\n      p = jStat.subtract(jStat.identity(m, n),\n          jStat.multiply(jStat.multiply(w, jStat.transpose(w)), 2));\n      a = jStat.multiply(p, jStat.multiply(a, p));\n    }\n    return a;\n  },\n\n  // A -> [Q,R]\n  // Q is orthogonal matrix\n  // R is upper triangular\n  QR: (function() {\n    // x -> Q\n    // find a orthogonal matrix Q st.\n    // Qx=y\n    // y is [||x||,0,0,...]\n\n    // quick ref\n    var sum   = jStat.sum;\n    var range = jStat.arange;\n\n    function qr2(x) {\n      // quick impletation\n      // https://www.stat.wisc.edu/~larget/math496/qr.html\n\n      var n = x.length;\n      var p = x[0].length;\n\n      var r = jStat.zeros(p, p);\n      x = jStat.copy(x);\n\n      var i,j,k;\n      for(j = 0; j < p; j++){\n        r[j][j] = Math.sqrt(sum(range(n).map(function(i){\n          return x[i][j] * x[i][j];\n        })));\n        for(i = 0; i < n; i++){\n          x[i][j] = x[i][j] / r[j][j];\n        }\n        for(k = j+1; k < p; k++){\n          r[j][k] = sum(range(n).map(function(i){\n            return x[i][j] * x[i][k];\n          }));\n          for(i = 0; i < n; i++){\n            x[i][k] = x[i][k] - x[i][j]*r[j][k];\n          }\n        }\n      }\n      return [x, r];\n    }\n\n    return qr2;\n  }()),\n\n  lstsq: (function() {\n    // solve least squard problem for Ax=b as QR decomposition way if b is\n    // [[b1],[b2],[b3]] form will return [[x1],[x2],[x3]] array form solution\n    // else b is [b1,b2,b3] form will return [x1,x2,x3] array form solution\n    function R_I(A) {\n      A = jStat.copy(A);\n      var size = A.length;\n      var I = jStat.identity(size);\n      jStat.arange(size - 1, -1, -1).forEach(function(i) {\n        jStat.sliceAssign(\n            I, { row: i }, jStat.divide(jStat.slice(I, { row: i }), A[i][i]));\n        jStat.sliceAssign(\n            A, { row: i }, jStat.divide(jStat.slice(A, { row: i }), A[i][i]));\n        jStat.arange(i).forEach(function(j) {\n          var c = jStat.multiply(A[j][i], -1);\n          var Aj = jStat.slice(A, { row: j });\n          var cAi = jStat.multiply(jStat.slice(A, { row: i }), c);\n          jStat.sliceAssign(A, { row: j }, jStat.add(Aj, cAi));\n          var Ij = jStat.slice(I, { row: j });\n          var cIi = jStat.multiply(jStat.slice(I, { row: i }), c);\n          jStat.sliceAssign(I, { row: j }, jStat.add(Ij, cIi));\n        })\n      });\n      return I;\n    }\n\n    function qr_solve(A, b){\n      var array_mode = false;\n      if (b[0].length === undefined) {\n        // [c1,c2,c3] mode\n        b = b.map(function(x){ return [x] });\n        array_mode = true;\n      }\n      var QR = jStat.QR(A);\n      var Q = QR[0];\n      var R = QR[1];\n      var attrs = A[0].length;\n      var Q1 = jStat.slice(Q,{col:{end:attrs}});\n      var R1 = jStat.slice(R,{row:{end:attrs}});\n      var RI = R_I(R1);\n      var Q2 = jStat.transpose(Q1);\n\n      if(Q2[0].length === undefined){\n        Q2 = [Q2]; // The confusing jStat.multifly implementation threat nature process again.\n      }\n\n      var x = jStat.multiply(jStat.multiply(RI, Q2), b);\n\n      if(x.length === undefined){\n        x = [[x]]; // The confusing jStat.multifly implementation threat nature process again.\n      }\n\n\n      if (array_mode)\n        return x.map(function(i){ return i[0] });\n      return x;\n    }\n\n    return qr_solve;\n  }()),\n\n  jacobi: function jacobi(a) {\n    var condition = 1;\n    var n = a.length;\n    var e = jStat.identity(n, n);\n    var ev = [];\n    var b, i, j, p, q, maxim, theta, s;\n    // condition === 1 only if tolerance is not reached\n    while (condition === 1) {\n      maxim = a[0][1];\n      p = 0;\n      q = 1;\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          if (i != j) {\n            if (maxim < Math.abs(a[i][j])) {\n              maxim = Math.abs(a[i][j]);\n              p = i;\n              q = j;\n            }\n          }\n        }\n      }\n      if (a[p][p] === a[q][q])\n        theta = (a[p][q] > 0) ? Math.PI / 4 : -Math.PI / 4;\n      else\n        theta = Math.atan(2 * a[p][q] / (a[p][p] - a[q][q])) / 2;\n      s = jStat.identity(n, n);\n      s[p][p] = Math.cos(theta);\n      s[p][q] = -Math.sin(theta);\n      s[q][p] = Math.sin(theta);\n      s[q][q] = Math.cos(theta);\n      // eigen vector matrix\n      e = jStat.multiply(e, s);\n      b = jStat.multiply(jStat.multiply(jStat.inv(s), a), s);\n      a = b;\n      condition = 0;\n      for (i = 1; i < n; i++) {\n        for (j = 1; j < n; j++) {\n          if (i != j && Math.abs(a[i][j]) > 0.001) {\n            condition = 1;\n          }\n        }\n      }\n    }\n    for (i = 0; i < n; i++) ev.push(a[i][i]);\n    //returns both the eigenvalue and eigenmatrix\n    return [e, ev];\n  },\n\n  rungekutta: function rungekutta(f, h, p, t_j, u_j, order) {\n    var k1, k2, u_j1, k3, k4;\n    if (order === 2) {\n      while (t_j <= p) {\n        k1 = h * f(t_j, u_j);\n        k2 = h * f(t_j + h, u_j + k1);\n        u_j1 = u_j + (k1 + k2) / 2;\n        u_j = u_j1;\n        t_j = t_j + h;\n      }\n    }\n    if (order === 4) {\n      while (t_j <= p) {\n        k1 = h * f(t_j, u_j);\n        k2 = h * f(t_j + h / 2, u_j + k1 / 2);\n        k3 = h * f(t_j + h / 2, u_j + k2 / 2);\n        k4 = h * f(t_j +h, u_j + k3);\n        u_j1 = u_j + (k1 + 2 * k2 + 2 * k3 + k4) / 6;\n        u_j = u_j1;\n        t_j = t_j + h;\n      }\n    }\n    return u_j;\n  },\n\n  romberg: function romberg(f, a, b, order) {\n    var i = 0;\n    var h = (b - a) / 2;\n    var x = [];\n    var h1 = [];\n    var g = [];\n    var m, a1, j, k, I;\n    while (i < order / 2) {\n      I = f(a);\n      for (j = a, k = 0; j <= b; j = j + h, k++) x[k] = j;\n      m = x.length;\n      for (j = 1; j < m - 1; j++) {\n        I += (((j % 2) !== 0) ? 4 : 2) * f(x[j]);\n      }\n      I = (h / 3) * (I + f(b));\n      g[i] = I;\n      h /= 2;\n      i++;\n    }\n    a1 = g.length;\n    m = 1;\n    while (a1 !== 1) {\n      for (j = 0; j < a1 - 1; j++)\n      h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n      a1 = h1.length;\n      g = h1;\n      h1 = [];\n      m++;\n    }\n    return g;\n  },\n\n  richardson: function richardson(X, f, x, h) {\n    function pos(X, x) {\n      var i = 0;\n      var n = X.length;\n      var p;\n      for (; i < n; i++)\n        if (X[i] === x) p = i;\n      return p;\n    }\n    var h_min = Math.abs(x - X[pos(X, x) + 1]);\n    var i = 0;\n    var g = [];\n    var h1 = [];\n    var y1, y2, m, a, j;\n    while (h >= h_min) {\n      y1 = pos(X, x + h);\n      y2 = pos(X, x);\n      g[i] = (f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / (h * h);\n      h /= 2;\n      i++;\n    }\n    a = g.length;\n    m = 1;\n    while (a != 1) {\n      for (j = 0; j < a - 1; j++)\n        h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n      a = h1.length;\n      g = h1;\n      h1 = [];\n      m++;\n    }\n    return g;\n  },\n\n  simpson: function simpson(f, a, b, n) {\n    var h = (b - a) / n;\n    var I = f(a);\n    var x = [];\n    var j = a;\n    var k = 0;\n    var i = 1;\n    var m;\n    for (; j <= b; j = j + h, k++)\n      x[k] = j;\n    m = x.length;\n    for (; i < m - 1; i++) {\n      I += ((i % 2 !== 0) ? 4 : 2) * f(x[i]);\n    }\n    return (h / 3) * (I + f(b));\n  },\n\n  hermite: function hermite(X, F, dF, value) {\n    var n = X.length;\n    var p = 0;\n    var i = 0;\n    var l = [];\n    var dl = [];\n    var A = [];\n    var B = [];\n    var j;\n    for (; i < n; i++) {\n      l[i] = 1;\n      for (j = 0; j < n; j++) {\n        if (i != j) l[i] *= (value - X[j]) / (X[i] - X[j]);\n      }\n      dl[i] = 0;\n      for (j = 0; j < n; j++) {\n        if (i != j) dl[i] += 1 / (X [i] - X[j]);\n      }\n      A[i] = (1 - 2 * (value - X[i]) * dl[i]) * (l[i] * l[i]);\n      B[i] = (value - X[i]) * (l[i] * l[i]);\n      p += (A[i] * F[i] + B[i] * dF[i]);\n    }\n    return p;\n  },\n\n  lagrange: function lagrange(X, F, value) {\n    var p = 0;\n    var i = 0;\n    var j, l;\n    var n = X.length;\n    for (; i < n; i++) {\n      l = F[i];\n      for (j = 0; j < n; j++) {\n        // calculating the lagrange polynomial L_i\n        if (i != j) l *= (value - X[j]) / (X[i] - X[j]);\n      }\n      // adding the lagrange polynomials found above\n      p += l;\n    }\n    return p;\n  },\n\n  cubic_spline: function cubic_spline(X, F, value) {\n    var n = X.length;\n    var i = 0, j;\n    var A = [];\n    var B = [];\n    var alpha = [];\n    var c = [];\n    var h = [];\n    var b = [];\n    var d = [];\n    for (; i < n - 1; i++)\n      h[i] = X[i + 1] - X[i];\n    alpha[0] = 0;\n    for (i = 1; i < n - 1; i++) {\n      alpha[i] = (3 / h[i]) * (F[i + 1] - F[i]) -\n          (3 / h[i-1]) * (F[i] - F[i-1]);\n    }\n    for (i = 1; i < n - 1; i++) {\n      A[i] = [];\n      B[i] = [];\n      A[i][i-1] = h[i-1];\n      A[i][i] = 2 * (h[i - 1] + h[i]);\n      A[i][i+1] = h[i];\n      B[i][0] = alpha[i];\n    }\n    c = jStat.multiply(jStat.inv(A), B);\n    for (j = 0; j < n - 1; j++) {\n      b[j] = (F[j + 1] - F[j]) / h[j] - h[j] * (c[j + 1][0] + 2 * c[j][0]) / 3;\n      d[j] = (c[j + 1][0] - c[j][0]) / (3 * h[j]);\n    }\n    for (j = 0; j < n; j++) {\n      if (X[j] > value) break;\n    }\n    j -= 1;\n    return F[j] + (value - X[j]) * b[j] + jStat.sq(value-X[j]) *\n        c[j] + (value - X[j]) * jStat.sq(value - X[j]) * d[j];\n  },\n\n  gauss_quadrature: function gauss_quadrature() {\n    throw new Error('gauss_quadrature not yet implemented');\n  },\n\n  PCA: function PCA(X) {\n    var m = X.length;\n    var n = X[0].length;\n    var i = 0;\n    var j, temp1;\n    var u = [];\n    var D = [];\n    var result = [];\n    var temp2 = [];\n    var Y = [];\n    var Bt = [];\n    var B = [];\n    var C = [];\n    var V = [];\n    var Vt = [];\n    for (i = 0; i < m; i++) {\n      u[i] = jStat.sum(X[i]) / n;\n    }\n    for (i = 0; i < n; i++) {\n      B[i] = [];\n      for(j = 0; j < m; j++) {\n        B[i][j] = X[j][i] - u[j];\n      }\n    }\n    B = jStat.transpose(B);\n    for (i = 0; i < m; i++) {\n      C[i] = [];\n      for (j = 0; j < m; j++) {\n        C[i][j] = (jStat.dot([B[i]], [B[j]])) / (n - 1);\n      }\n    }\n    result = jStat.jacobi(C);\n    V = result[0];\n    D = result[1];\n    Vt = jStat.transpose(V);\n    for (i = 0; i < D.length; i++) {\n      for (j = i; j < D.length; j++) {\n        if(D[i] < D[j])  {\n          temp1 = D[i];\n          D[i] = D[j];\n          D[j] = temp1;\n          temp2 = Vt[i];\n          Vt[i] = Vt[j];\n          Vt[j] = temp2;\n        }\n      }\n    }\n    Bt = jStat.transpose(B);\n    for (i = 0; i < m; i++) {\n      Y[i] = [];\n      for (j = 0; j < Bt.length; j++) {\n        Y[i][j] = jStat.dot([Vt[i]], [Bt[j]]);\n      }\n    }\n    return [X, D, Vt, Y];\n  }\n});\n\n// extend jStat.fn with methods that require one argument\n(function(funcs) {\n  for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n    jStat.fn[passfunc] = function(arg, func) {\n      var tmpthis = this;\n      // check for callback\n      if (func) {\n        setTimeout(function() {\n          func.call(tmpthis, jStat.fn[passfunc].call(tmpthis, arg));\n        }, 15);\n        return this;\n      }\n      if (typeof jStat[passfunc](this, arg) === 'number')\n        return jStat[passfunc](this, arg);\n      else\n        return jStat(jStat[passfunc](this, arg));\n    };\n  }(funcs[i]));\n}('add divide multiply subtract dot pow exp log abs norm angle'.split(' ')));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\nvar slice = [].slice;\nvar isNumber = jStat.utils.isNumber;\nvar isArray = jStat.utils.isArray;\n\n// flag==true denotes use of sample standard deviation\n// Z Statistics\njStat.extend({\n  // 2 different parameter lists:\n  // (value, mean, sd)\n  // (value, array, flag)\n  zscore: function zscore() {\n    var args = slice.call(arguments);\n    if (isNumber(args[1])) {\n      return (args[0] - args[1]) / args[2];\n    }\n    return (args[0] - jStat.mean(args[1])) / jStat.stdev(args[1], args[2]);\n  },\n\n  // 3 different paramter lists:\n  // (value, mean, sd, sides)\n  // (zscore, sides)\n  // (value, array, sides, flag)\n  ztest: function ztest() {\n    var args = slice.call(arguments);\n    var z;\n    if (isArray(args[1])) {\n      // (value, array, sides, flag)\n      z = jStat.zscore(args[0],args[1],args[3]);\n      return (args[2] === 1) ?\n        (jStat.normal.cdf(-Math.abs(z), 0, 1)) :\n        (jStat.normal.cdf(-Math.abs(z), 0, 1)*2);\n    } else {\n      if (args.length > 2) {\n        // (value, mean, sd, sides)\n        z = jStat.zscore(args[0],args[1],args[2]);\n        return (args[3] === 1) ?\n          (jStat.normal.cdf(-Math.abs(z),0,1)) :\n          (jStat.normal.cdf(-Math.abs(z),0,1)* 2);\n      } else {\n        // (zscore, sides)\n        z = args[0];\n        return (args[1] === 1) ?\n          (jStat.normal.cdf(-Math.abs(z),0,1)) :\n          (jStat.normal.cdf(-Math.abs(z),0,1)*2);\n      }\n    }\n  }\n});\n\njStat.extend(jStat.fn, {\n  zscore: function zscore(value, flag) {\n    return (value - this.mean()) / this.stdev(flag);\n  },\n\n  ztest: function ztest(value, sides, flag) {\n    var zscore = Math.abs(this.zscore(value, flag));\n    return (sides === 1) ?\n      (jStat.normal.cdf(-zscore, 0, 1)) :\n      (jStat.normal.cdf(-zscore, 0, 1) * 2);\n  }\n});\n\n// T Statistics\njStat.extend({\n  // 2 parameter lists\n  // (value, mean, sd, n)\n  // (value, array)\n  tscore: function tscore() {\n    var args = slice.call(arguments);\n    return (args.length === 4) ?\n      ((args[0] - args[1]) / (args[2] / Math.sqrt(args[3]))) :\n      ((args[0] - jStat.mean(args[1])) /\n       (jStat.stdev(args[1], true) / Math.sqrt(args[1].length)));\n  },\n\n  // 3 different paramter lists:\n  // (value, mean, sd, n, sides)\n  // (tscore, n, sides)\n  // (value, array, sides)\n  ttest: function ttest() {\n    var args = slice.call(arguments);\n    var tscore;\n    if (args.length === 5) {\n      tscore = Math.abs(jStat.tscore(args[0], args[1], args[2], args[3]));\n      return (args[4] === 1) ?\n        (jStat.studentt.cdf(-tscore, args[3]-1)) :\n        (jStat.studentt.cdf(-tscore, args[3]-1)*2);\n    }\n    if (isNumber(args[1])) {\n      tscore = Math.abs(args[0])\n      return (args[2] == 1) ?\n        (jStat.studentt.cdf(-tscore, args[1]-1)) :\n        (jStat.studentt.cdf(-tscore, args[1]-1) * 2);\n    }\n    tscore = Math.abs(jStat.tscore(args[0], args[1]))\n    return (args[2] == 1) ?\n      (jStat.studentt.cdf(-tscore, args[1].length-1)) :\n      (jStat.studentt.cdf(-tscore, args[1].length-1) * 2);\n  }\n});\n\njStat.extend(jStat.fn, {\n  tscore: function tscore(value) {\n    return (value - this.mean()) / (this.stdev(true) / Math.sqrt(this.cols()));\n  },\n\n  ttest: function ttest(value, sides) {\n    return (sides === 1) ?\n      (1 - jStat.studentt.cdf(Math.abs(this.tscore(value)), this.cols()-1)) :\n      (jStat.studentt.cdf(-Math.abs(this.tscore(value)), this.cols()-1)*2);\n  }\n});\n\n// F Statistics\njStat.extend({\n  // Paramter list is as follows:\n  // (array1, array2, array3, ...)\n  // or it is an array of arrays\n  // array of arrays conversion\n  anovafscore: function anovafscore() {\n    var args = slice.call(arguments),\n    expVar, sample, sampMean, sampSampMean, tmpargs, unexpVar, i, j;\n    if (args.length === 1) {\n      tmpargs = new Array(args[0].length);\n      for (i = 0; i < args[0].length; i++) {\n        tmpargs[i] = args[0][i];\n      }\n      args = tmpargs;\n    }\n    // Builds sample array\n    sample = new Array();\n    for (i = 0; i < args.length; i++) {\n      sample = sample.concat(args[i]);\n    }\n    sampMean = jStat.mean(sample);\n    // Computes the explained variance\n    expVar = 0;\n    for (i = 0; i < args.length; i++) {\n      expVar = expVar + args[i].length * Math.pow(jStat.mean(args[i]) - sampMean, 2);\n    }\n    expVar /= (args.length - 1);\n    // Computes unexplained variance\n    unexpVar = 0;\n    for (i = 0; i < args.length; i++) {\n      sampSampMean = jStat.mean(args[i]);\n      for (j = 0; j < args[i].length; j++) {\n        unexpVar += Math.pow(args[i][j] - sampSampMean, 2);\n      }\n    }\n    unexpVar /= (sample.length - args.length);\n    return expVar / unexpVar;\n  },\n\n  // 2 different paramter setups\n  // (array1, array2, array3, ...)\n  // (anovafscore, df1, df2)\n  anovaftest: function anovaftest() {\n    var args = slice.call(arguments),\n    df1, df2, n, i;\n    if (isNumber(args[0])) {\n      return 1 - jStat.centralF.cdf(args[0], args[1], args[2]);\n    }\n    var anovafscore = jStat.anovafscore(args);\n    df1 = args.length - 1;\n    n = 0;\n    for (i = 0; i < args.length; i++) {\n      n = n + args[i].length;\n    }\n    df2 = n - df1 - 1;\n    return 1 - jStat.centralF.cdf(anovafscore, df1, df2);\n  },\n\n  ftest: function ftest(fscore, df1, df2) {\n    return 1 - jStat.centralF.cdf(fscore, df1, df2);\n  }\n});\n\njStat.extend(jStat.fn, {\n  anovafscore: function anovafscore() {\n    return jStat.anovafscore(this.toArray());\n  },\n\n  anovaftes: function anovaftes() {\n    var n = 0;\n    var i;\n    for (i = 0; i < this.length; i++) {\n      n = n + this[i].length;\n    }\n    return jStat.ftest(this.anovafscore(), this.length - 1, n - this.length);\n  }\n});\n\n// Tukey's range test\njStat.extend({\n  // 2 parameter lists\n  // (mean1, mean2, n1, n2, sd)\n  // (array1, array2, sd)\n  qscore: function qscore() {\n    var args = slice.call(arguments);\n    var mean1, mean2, n1, n2, sd;\n    if (isNumber(args[0])) {\n        mean1 = args[0];\n        mean2 = args[1];\n        n1 = args[2];\n        n2 = args[3];\n        sd = args[4];\n    } else {\n        mean1 = jStat.mean(args[0]);\n        mean2 = jStat.mean(args[1]);\n        n1 = args[0].length;\n        n2 = args[1].length;\n        sd = args[2];\n    }\n    return Math.abs(mean1 - mean2) / (sd * Math.sqrt((1 / n1 + 1 / n2) / 2));\n  },\n\n  // 3 different parameter lists:\n  // (qscore, n, k)\n  // (mean1, mean2, n1, n2, sd, n, k)\n  // (array1, array2, sd, n, k)\n  qtest: function qtest() {\n    var args = slice.call(arguments);\n\n    var qscore;\n    if (args.length === 3) {\n      qscore = args[0];\n      args = args.slice(1);\n    } else if (args.length === 7) {\n      qscore = jStat.qscore(args[0], args[1], args[2], args[3], args[4]);\n      args = args.slice(5);\n    } else {\n      qscore = jStat.qscore(args[0], args[1], args[2]);\n      args = args.slice(3);\n    }\n\n    var n = args[0];\n    var k = args[1];\n\n    return 1 - jStat.tukey.cdf(qscore, k, n - k);\n  },\n\n  tukeyhsd: function tukeyhsd(arrays) {\n    var sd = jStat.pooledstdev(arrays);\n    var means = arrays.map(function (arr) {return jStat.mean(arr);});\n    var n = arrays.reduce(function (n, arr) {return n + arr.length;}, 0);\n\n    var results = [];\n    for (var i = 0; i < arrays.length; ++i) {\n        for (var j = i + 1; j < arrays.length; ++j) {\n            var p = jStat.qtest(means[i], means[j], arrays[i].length, arrays[j].length, sd, n, arrays.length);\n            results.push([[i, j], p]);\n        }\n    }\n\n    return results;\n  }\n});\n\n// Error Bounds\njStat.extend({\n  // 2 different parameter setups\n  // (value, alpha, sd, n)\n  // (value, alpha, array)\n  normalci: function normalci() {\n    var args = slice.call(arguments),\n    ans = new Array(2),\n    change;\n    if (args.length === 4) {\n      change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n                        args[2] / Math.sqrt(args[3]));\n    } else {\n      change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n                        jStat.stdev(args[2]) / Math.sqrt(args[2].length));\n    }\n    ans[0] = args[0] - change;\n    ans[1] = args[0] + change;\n    return ans;\n  },\n\n  // 2 different parameter setups\n  // (value, alpha, sd, n)\n  // (value, alpha, array)\n  tci: function tci() {\n    var args = slice.call(arguments),\n    ans = new Array(2),\n    change;\n    if (args.length === 4) {\n      change = Math.abs(jStat.studentt.inv(args[1] / 2, args[3] - 1) *\n                        args[2] / Math.sqrt(args[3]));\n    } else {\n      change = Math.abs(jStat.studentt.inv(args[1] / 2, args[2].length - 1) *\n                        jStat.stdev(args[2], true) / Math.sqrt(args[2].length));\n    }\n    ans[0] = args[0] - change;\n    ans[1] = args[0] + change;\n    return ans;\n  },\n\n  significant: function significant(pvalue, alpha) {\n    return pvalue < alpha;\n  }\n});\n\njStat.extend(jStat.fn, {\n  normalci: function normalci(value, alpha) {\n    return jStat.normalci(value, alpha, this.toArray());\n  },\n\n  tci: function tci(value, alpha) {\n    return jStat.tci(value, alpha, this.toArray());\n  }\n});\n\n// internal method for calculating the z-score for a difference of proportions test\nfunction differenceOfProportions(p1, n1, p2, n2) {\n  if (p1 > 1 || p2 > 1 || p1 <= 0 || p2 <= 0) {\n    throw new Error(\"Proportions should be greater than 0 and less than 1\")\n  }\n  var pooled = (p1 * n1 + p2 * n2) / (n1 + n2);\n  var se = Math.sqrt(pooled * (1 - pooled) * ((1/n1) + (1/n2)));\n  return (p1 - p2) / se;\n}\n\n// Difference of Proportions\njStat.extend(jStat.fn, {\n  oneSidedDifferenceOfProportions: function oneSidedDifferenceOfProportions(p1, n1, p2, n2) {\n    var z = differenceOfProportions(p1, n1, p2, n2);\n    return jStat.ztest(z, 1);\n  },\n\n  twoSidedDifferenceOfProportions: function twoSidedDifferenceOfProportions(p1, n1, p2, n2) {\n    var z = differenceOfProportions(p1, n1, p2, n2);\n    return jStat.ztest(z, 2);\n  }\n});\n\n}(jStat, Math));\njStat.models = (function(){\n  function sub_regress(exog) {\n    var var_count = exog[0].length;\n    var modelList = jStat.arange(var_count).map(function(endog_index) {\n      var exog_index =\n          jStat.arange(var_count).filter(function(i){return i!==endog_index});\n      return ols(jStat.col(exog, endog_index).map(function(x){ return x[0] }),\n                 jStat.col(exog, exog_index))\n    });\n    return modelList;\n  }\n\n  // do OLS model regress\n  // exog have include const columns ,it will not generate it .In fact, exog is\n  // \"design matrix\" look at\n  //https://en.wikipedia.org/wiki/Design_matrix\n  function ols(endog, exog) {\n    var nobs = endog.length;\n    var df_model = exog[0].length - 1;\n    var df_resid = nobs-df_model - 1;\n    var coef = jStat.lstsq(exog, endog);\n    var predict =\n        jStat.multiply(exog, coef.map(function(x) { return [x] }))\n            .map(function(p) { return p[0] });\n    var resid = jStat.subtract(endog, predict);\n    var ybar = jStat.mean(endog);\n    // constant cause problem\n    // var SST = jStat.sum(endog.map(function(y) {\n    //   return Math.pow(y-ybar,2);\n    // }));\n    var SSE = jStat.sum(predict.map(function(f) {\n      return Math.pow(f - ybar, 2);\n    }));\n    var SSR = jStat.sum(endog.map(function(y, i) {\n      return Math.pow(y - predict[i], 2);\n    }));\n    var SST = SSE + SSR;\n    var R2 = (SSE / SST);\n    return {\n        exog:exog,\n        endog:endog,\n        nobs:nobs,\n        df_model:df_model,\n        df_resid:df_resid,\n        coef:coef,\n        predict:predict,\n        resid:resid,\n        ybar:ybar,\n        SST:SST,\n        SSE:SSE,\n        SSR:SSR,\n        R2:R2\n    };\n  }\n\n  // H0: b_I=0\n  // H1: b_I!=0\n  function t_test(model) {\n    var subModelList = sub_regress(model.exog);\n    //var sigmaHat=jStat.stdev(model.resid);\n    var sigmaHat = Math.sqrt(model.SSR / (model.df_resid));\n    var seBetaHat = subModelList.map(function(mod) {\n      var SST = mod.SST;\n      var R2 = mod.R2;\n      return sigmaHat / Math.sqrt(SST * (1 - R2));\n    });\n    var tStatistic = model.coef.map(function(coef, i) {\n      return (coef - 0) / seBetaHat[i];\n    });\n    var pValue = tStatistic.map(function(t) {\n      var leftppf = jStat.studentt.cdf(t, model.df_resid);\n      return (leftppf > 0.5 ? 1 - leftppf : leftppf) * 2;\n    });\n    var c = jStat.studentt.inv(0.975, model.df_resid);\n    var interval95 = model.coef.map(function(coef, i) {\n      var d = c * seBetaHat[i];\n      return [coef - d, coef + d];\n    })\n    return {\n        se: seBetaHat,\n        t: tStatistic,\n        p: pValue,\n        sigmaHat: sigmaHat,\n        interval95: interval95\n    };\n  }\n\n  function F_test(model) {\n    var F_statistic =\n        (model.R2 / model.df_model) / ((1 - model.R2) / model.df_resid);\n    var fcdf = function(x, n1, n2) {\n      return jStat.beta.cdf(x / (n2 / n1 + x), n1 / 2, n2 / 2)\n    }\n    var pvalue = 1 - fcdf(F_statistic, model.df_model, model.df_resid);\n    return { F_statistic: F_statistic, pvalue: pvalue };\n  }\n\n  function ols_wrap(endog, exog) {\n    var model = ols(endog,exog);\n    var ttest = t_test(model);\n    var ftest = F_test(model);\n    // Provide the Wherry / Ezekiel / McNemar / Cohen Adjusted R^2\n    // Which matches the 'adjusted R^2' provided by R's lm package\n    var adjust_R2 =\n        1 - (1 - model.R2) * ((model.nobs - 1) / (model.df_resid));\n    model.t = ttest;\n    model.f = ftest;\n    model.adjust_R2 = adjust_R2;\n    return model;\n  }\n\n  return { ols: ols_wrap };\n})();\n//To regress, simply build X matrix\n//(append column of 1's) using\n//buildxmatrix and build the Y\n//matrix using buildymatrix\n//(simply the transpose)\n//and run regress.\n\n\n\n//Regressions\n\njStat.extend({\n  buildxmatrix: function buildxmatrix(){\n    //Parameters will be passed in as such\n    //(array1,array2,array3,...)\n    //as (x1,x2,x3,...)\n    //needs to be (1,x1,x2,x3,...)\n    var matrixRows = new Array(arguments.length);\n    for(var i=0;i<arguments.length;i++){\n      var array = [1];\n      matrixRows[i]= array.concat(arguments[i]);\n    }\n    return jStat(matrixRows);\n\n  },\n\n  builddxmatrix: function builddxmatrix() {\n    //Paramters will be passed in as such\n    //([array1,array2,...]\n    var matrixRows = new Array(arguments[0].length);\n    for(var i=0;i<arguments[0].length;i++){\n      var array = [1]\n      matrixRows[i]= array.concat(arguments[0][i]);\n    }\n    return jStat(matrixRows);\n\n  },\n\n  buildjxmatrix: function buildjxmatrix(jMat) {\n    //Builds from jStat Matrix\n    var pass = new Array(jMat.length)\n    for(var i=0;i<jMat.length;i++){\n      pass[i] = jMat[i];\n    }\n    return jStat.builddxmatrix(pass);\n\n  },\n\n  buildymatrix: function buildymatrix(array){\n    return jStat(array).transpose();\n  },\n\n  buildjymatrix: function buildjymatrix(jMat){\n    return jMat.transpose();\n  },\n\n  matrixmult: function matrixmult(A,B){\n    var i, j, k, result, sum;\n    if (A.cols() == B.rows()) {\n      if(B.rows()>1){\n        result = [];\n        for (i = 0; i < A.rows(); i++) {\n          result[i] = [];\n          for (j = 0; j < B.cols(); j++) {\n            sum = 0;\n            for (k = 0; k < A.cols(); k++) {\n              sum += A.toArray()[i][k] * B.toArray()[k][j];\n            }\n            result[i][j] = sum;\n          }\n        }\n        return jStat(result);\n      }\n      result = [];\n      for (i = 0; i < A.rows(); i++) {\n        result[i] = [];\n        for (j = 0; j < B.cols(); j++) {\n          sum = 0;\n          for (k = 0; k < A.cols(); k++) {\n            sum += A.toArray()[i][k] * B.toArray()[j];\n          }\n          result[i][j] = sum;\n        }\n      }\n      return jStat(result);\n    }\n  },\n\n  //regress and regresst to be fixed\n\n  regress: function regress(jMatX,jMatY){\n    //print(\"regressin!\");\n    //print(jMatX.toArray());\n    var innerinv = jStat.xtranspxinv(jMatX);\n    //print(innerinv);\n    var xtransp = jMatX.transpose();\n    var next = jStat.matrixmult(jStat(innerinv),xtransp);\n    return jStat.matrixmult(next,jMatY);\n\n  },\n\n  regresst: function regresst(jMatX,jMatY,sides){\n    var beta = jStat.regress(jMatX,jMatY);\n\n    var compile = {};\n    compile.anova = {};\n    var jMatYBar = jStat.jMatYBar(jMatX, beta);\n    compile.yBar = jMatYBar;\n    var yAverage = jMatY.mean();\n    compile.anova.residuals = jStat.residuals(jMatY, jMatYBar);\n\n    compile.anova.ssr = jStat.ssr(jMatYBar, yAverage);\n    compile.anova.msr = compile.anova.ssr / (jMatX[0].length - 1);\n\n    compile.anova.sse = jStat.sse(jMatY, jMatYBar);\n    compile.anova.mse =\n        compile.anova.sse / (jMatY.length - (jMatX[0].length - 1) - 1);\n\n    compile.anova.sst = jStat.sst(jMatY, yAverage);\n    compile.anova.mst = compile.anova.sst / (jMatY.length - 1);\n\n    compile.anova.r2 = 1 - (compile.anova.sse / compile.anova.sst);\n    if (compile.anova.r2 < 0) compile.anova.r2 = 0;\n\n    compile.anova.fratio = compile.anova.msr / compile.anova.mse;\n    compile.anova.pvalue =\n        jStat.anovaftest(compile.anova.fratio,\n                         jMatX[0].length - 1,\n                         jMatY.length - (jMatX[0].length - 1) - 1);\n\n    compile.anova.rmse = Math.sqrt(compile.anova.mse);\n\n    compile.anova.r2adj = 1 - (compile.anova.mse / compile.anova.mst);\n    if (compile.anova.r2adj < 0) compile.anova.r2adj = 0;\n\n    compile.stats = new Array(jMatX[0].length);\n    var covar = jStat.xtranspxinv(jMatX);\n    var sds, ts, ps;\n\n    for(var i=0; i<beta.length;i++){\n      sds=Math.sqrt(compile.anova.mse * Math.abs(covar[i][i]));\n      ts= Math.abs(beta[i] / sds);\n      ps= jStat.ttest(ts, jMatY.length - jMatX[0].length - 1, sides);\n\n      compile.stats[i]=[beta[i], sds, ts, ps];\n    }\n\n    compile.regress = beta;\n    return compile;\n  },\n\n  xtranspx: function xtranspx(jMatX){\n    return jStat.matrixmult(jMatX.transpose(),jMatX);\n  },\n\n\n  xtranspxinv: function xtranspxinv(jMatX){\n    var inner = jStat.matrixmult(jMatX.transpose(),jMatX);\n    var innerinv = jStat.inv(inner);\n    return innerinv;\n  },\n\n  jMatYBar: function jMatYBar(jMatX, beta) {\n    var yBar = jStat.matrixmult(jMatX, beta);\n    return new jStat(yBar);\n  },\n\n  residuals: function residuals(jMatY, jMatYBar) {\n    return jStat.matrixsubtract(jMatY, jMatYBar);\n  },\n\n  ssr: function ssr(jMatYBar, yAverage) {\n    var ssr = 0;\n    for(var i = 0; i < jMatYBar.length; i++) {\n      ssr += Math.pow(jMatYBar[i] - yAverage, 2);\n    }\n    return ssr;\n  },\n\n  sse: function sse(jMatY, jMatYBar) {\n    var sse = 0;\n    for(var i = 0; i < jMatY.length; i++) {\n      sse += Math.pow(jMatY[i] - jMatYBar[i], 2);\n    }\n    return sse;\n  },\n\n  sst: function sst(jMatY, yAverage) {\n    var sst = 0;\n    for(var i = 0; i < jMatY.length; i++) {\n      sst += Math.pow(jMatY[i] - yAverage, 2);\n    }\n    return sst;\n  },\n\n  matrixsubtract: function matrixsubtract(A,B){\n    var ans = new Array(A.length);\n    for(var i=0;i<A.length;i++){\n      ans[i] = new Array(A[i].length);\n      for(var j=0;j<A[i].length;j++){\n        ans[i][j]=A[i][j]-B[i][j];\n      }\n    }\n    return jStat(ans);\n  }\n});\n  // Make it compatible with previous version.\n  jStat.jStat = jStat;\n\n  return jStat;\n});\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative:\n                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                        '_'\n                    ),\n                accusative:\n                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                        '_'\n                    ),\n                genitive:\n                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                        '_'\n                    ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n              ? 'genitive'\n              : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone:\n                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s video.\n */\nvar NetworkQualityVideoStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityVideoStats, _super);\n    /**\n     * Construct a {@link NetworkQualityVideoStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityVideoStats(mediaLevels) {\n        return _super.call(this, mediaLevels) || this;\n    }\n    return NetworkQualityVideoStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityVideoStats;\n//# sourceMappingURL=networkqualityvideostats.js.map","import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nexport default basePick;\n","import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n","import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nexport default uniqueId;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component } from 'react';\nimport { getTemplate, getWidget, getUiOptions, isFixedItems, allowAdditionalItems, isCustomWidget, optionsList, TranslatableString, ITEMS_KEY, } from '@rjsf/utils';\nimport cloneDeep from 'lodash-es/cloneDeep.js';\nimport get from 'lodash-es/get.js';\nimport isObject from 'lodash-es/isObject.js';\nimport set from 'lodash-es/set.js';\nimport uniqueId from 'lodash-es/uniqueId.js';\n/** Used to generate a unique ID for an element in a row */\nfunction generateRowId() {\n    return uniqueId('rjsf-array-item-');\n}\n/** Converts the `formData` into `KeyedFormDataType` data, using the `generateRowId()` function to create the key\n *\n * @param formData - The data for the form\n * @returns - The `formData` converted into a `KeyedFormDataType` element\n */\nfunction generateKeyedFormData(formData) {\n    return !Array.isArray(formData)\n        ? []\n        : formData.map((item) => {\n            return {\n                key: generateRowId(),\n                item,\n            };\n        });\n}\n/** Converts `KeyedFormDataType` data into the inner `formData`\n *\n * @param keyedFormData - The `KeyedFormDataType` to be converted\n * @returns - The inner `formData` item(s) in the `keyedFormData`\n */\nfunction keyedToPlainFormData(keyedFormData) {\n    if (Array.isArray(keyedFormData)) {\n        return keyedFormData.map((keyedItem) => keyedItem.item);\n    }\n    return [];\n}\n/** The `ArrayField` component is used to render a field in the schema that is of type `array`. It supports both normal\n * and fixed array, allowing user to add and remove elements from the array data.\n */\nclass ArrayField extends Component {\n    /** Constructs an `ArrayField` from the `props`, generating the initial keyed data from the `formData`\n     *\n     * @param props - The `FieldProps` for this template\n     */\n    constructor(props) {\n        super(props);\n        const { formData = [] } = props;\n        const keyedFormData = generateKeyedFormData(formData);\n        this.state = {\n            keyedFormData,\n            updatedKeyedFormData: false,\n        };\n    }\n    /** React lifecycle method that is called when the props are about to change allowing the state to be updated. It\n     * regenerates the keyed form data and returns it\n     *\n     * @param nextProps - The next set of props data\n     * @param prevState - The previous set of state data\n     */\n    static getDerivedStateFromProps(nextProps, prevState) {\n        // Don't call getDerivedStateFromProps if keyed formdata was just updated.\n        if (prevState.updatedKeyedFormData) {\n            return {\n                updatedKeyedFormData: false,\n            };\n        }\n        const nextFormData = Array.isArray(nextProps.formData) ? nextProps.formData : [];\n        const previousKeyedFormData = prevState.keyedFormData || [];\n        const newKeyedFormData = nextFormData.length === previousKeyedFormData.length\n            ? previousKeyedFormData.map((previousKeyedFormDatum, index) => {\n                return {\n                    key: previousKeyedFormDatum.key,\n                    item: nextFormData[index],\n                };\n            })\n            : generateKeyedFormData(nextFormData);\n        return {\n            keyedFormData: newKeyedFormData,\n        };\n    }\n    /** Returns the appropriate title for an item by getting first the title from the schema.items, then falling back to\n     * the description from the schema.items, and finally the string \"Item\"\n     */\n    get itemTitle() {\n        const { schema, registry } = this.props;\n        const { translateString } = registry;\n        return get(schema, [ITEMS_KEY, 'title'], get(schema, [ITEMS_KEY, 'description'], translateString(TranslatableString.ArrayItemTitle)));\n    }\n    /** Determines whether the item described in the schema is always required, which is determined by whether any item\n     * may be null.\n     *\n     * @param itemSchema - The schema for the item\n     * @return - True if the item schema type does not contain the \"null\" type\n     */\n    isItemRequired(itemSchema) {\n        if (Array.isArray(itemSchema.type)) {\n            // While we don't yet support composite/nullable jsonschema types, it's\n            // future-proof to check for requirement against these.\n            return !itemSchema.type.includes('null');\n        }\n        // All non-null array item types are inherently required by design\n        return itemSchema.type !== 'null';\n    }\n    /** Determines whether more items can be added to the array. If the uiSchema indicates the array doesn't allow adding\n     * then false is returned. Otherwise, if the schema indicates that there are a maximum number of items and the\n     * `formData` matches that value, then false is returned, otherwise true is returned.\n     *\n     * @param formItems - The list of items in the form\n     * @returns - True if the item is addable otherwise false\n     */\n    canAddItem(formItems) {\n        const { schema, uiSchema, registry } = this.props;\n        let { addable } = getUiOptions(uiSchema, registry.globalUiOptions);\n        if (addable !== false) {\n            // if ui:options.addable was not explicitly set to false, we can add\n            // another item if we have not exceeded maxItems yet\n            if (schema.maxItems !== undefined) {\n                addable = formItems.length < schema.maxItems;\n            }\n            else {\n                addable = true;\n            }\n        }\n        return addable;\n    }\n    /** Returns the default form information for an item based on the schema for that item. Deals with the possibility\n     * that the schema is fixed and allows additional items.\n     */\n    _getNewFormDataRow = () => {\n        const { schema, registry } = this.props;\n        const { schemaUtils } = registry;\n        let itemSchema = schema.items;\n        if (isFixedItems(schema) && allowAdditionalItems(schema)) {\n            itemSchema = schema.additionalItems;\n        }\n        // Cast this as a T to work around schema utils being for T[] caused by the FieldProps<T[], S, F> call on the class\n        return schemaUtils.getDefaultFormState(itemSchema);\n    };\n    /** Callback handler for when the user clicks on the add or add at index buttons. Creates a new row of keyed form data\n     * either at the end of the list (when index is not specified) or inserted at the `index` when it is, adding it into\n     * the state, and then returning `onChange()` with the plain form data converted from the keyed data\n     *\n     * @param event - The event for the click\n     * @param [index] - The optional index at which to add the new data\n     */\n    _handleAddClick(event, index) {\n        if (event) {\n            event.preventDefault();\n        }\n        const { onChange, errorSchema } = this.props;\n        const { keyedFormData } = this.state;\n        // refs #195: revalidate to ensure properly reindexing errors\n        let newErrorSchema;\n        if (errorSchema) {\n            newErrorSchema = {};\n            for (const idx in errorSchema) {\n                const i = parseInt(idx);\n                if (index === undefined || i < index) {\n                    set(newErrorSchema, [i], errorSchema[idx]);\n                }\n                else if (i >= index) {\n                    set(newErrorSchema, [i + 1], errorSchema[idx]);\n                }\n            }\n        }\n        const newKeyedFormDataRow = {\n            key: generateRowId(),\n            item: this._getNewFormDataRow(),\n        };\n        const newKeyedFormData = [...keyedFormData];\n        if (index !== undefined) {\n            newKeyedFormData.splice(index, 0, newKeyedFormDataRow);\n        }\n        else {\n            newKeyedFormData.push(newKeyedFormDataRow);\n        }\n        this.setState({\n            keyedFormData: newKeyedFormData,\n            updatedKeyedFormData: true,\n        }, () => onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema));\n    }\n    /** Callback handler for when the user clicks on the add button. Creates a new row of keyed form data at the end of\n     * the list, adding it into the state, and then returning `onChange()` with the plain form data converted from the\n     * keyed data\n     *\n     * @param event - The event for the click\n     */\n    onAddClick = (event) => {\n        this._handleAddClick(event);\n    };\n    /** Callback handler for when the user clicks on the add button on an existing array element. Creates a new row of\n     * keyed form data inserted at the `index`, adding it into the state, and then returning `onChange()` with the plain\n     * form data converted from the keyed data\n     *\n     * @param index - The index at which the add button is clicked\n     */\n    onAddIndexClick = (index) => {\n        return (event) => {\n            this._handleAddClick(event, index);\n        };\n    };\n    /** Callback handler for when the user clicks on the copy button on an existing array element. Clones the row of\n     * keyed form data at the `index` into the next position in the state, and then returning `onChange()` with the plain\n     * form data converted from the keyed data\n     *\n     * @param index - The index at which the copy button is clicked\n     */\n    onCopyIndexClick = (index) => {\n        return (event) => {\n            if (event) {\n                event.preventDefault();\n            }\n            const { onChange, errorSchema } = this.props;\n            const { keyedFormData } = this.state;\n            // refs #195: revalidate to ensure properly reindexing errors\n            let newErrorSchema;\n            if (errorSchema) {\n                newErrorSchema = {};\n                for (const idx in errorSchema) {\n                    const i = parseInt(idx);\n                    if (i <= index) {\n                        set(newErrorSchema, [i], errorSchema[idx]);\n                    }\n                    else if (i > index) {\n                        set(newErrorSchema, [i + 1], errorSchema[idx]);\n                    }\n                }\n            }\n            const newKeyedFormDataRow = {\n                key: generateRowId(),\n                item: cloneDeep(keyedFormData[index].item),\n            };\n            const newKeyedFormData = [...keyedFormData];\n            if (index !== undefined) {\n                newKeyedFormData.splice(index + 1, 0, newKeyedFormDataRow);\n            }\n            else {\n                newKeyedFormData.push(newKeyedFormDataRow);\n            }\n            this.setState({\n                keyedFormData: newKeyedFormData,\n                updatedKeyedFormData: true,\n            }, () => onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema));\n        };\n    };\n    /** Callback handler for when the user clicks on the remove button on an existing array element. Removes the row of\n     * keyed form data at the `index` in the state, and then returning `onChange()` with the plain form data converted\n     * from the keyed data\n     *\n     * @param index - The index at which the remove button is clicked\n     */\n    onDropIndexClick = (index) => {\n        return (event) => {\n            if (event) {\n                event.preventDefault();\n            }\n            const { onChange, errorSchema } = this.props;\n            const { keyedFormData } = this.state;\n            // refs #195: revalidate to ensure properly reindexing errors\n            let newErrorSchema;\n            if (errorSchema) {\n                newErrorSchema = {};\n                for (const idx in errorSchema) {\n                    const i = parseInt(idx);\n                    if (i < index) {\n                        set(newErrorSchema, [i], errorSchema[idx]);\n                    }\n                    else if (i > index) {\n                        set(newErrorSchema, [i - 1], errorSchema[idx]);\n                    }\n                }\n            }\n            const newKeyedFormData = keyedFormData.filter((_, i) => i !== index);\n            this.setState({\n                keyedFormData: newKeyedFormData,\n                updatedKeyedFormData: true,\n            }, () => onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema));\n        };\n    };\n    /** Callback handler for when the user clicks on one of the move item buttons on an existing array element. Moves the\n     * row of keyed form data at the `index` to the `newIndex` in the state, and then returning `onChange()` with the\n     * plain form data converted from the keyed data\n     *\n     * @param index - The index of the item to move\n     * @param newIndex - The index to where the item is to be moved\n     */\n    onReorderClick = (index, newIndex) => {\n        return (event) => {\n            if (event) {\n                event.preventDefault();\n                event.currentTarget.blur();\n            }\n            const { onChange, errorSchema } = this.props;\n            let newErrorSchema;\n            if (errorSchema) {\n                newErrorSchema = {};\n                for (const idx in errorSchema) {\n                    const i = parseInt(idx);\n                    if (i == index) {\n                        set(newErrorSchema, [newIndex], errorSchema[index]);\n                    }\n                    else if (i == newIndex) {\n                        set(newErrorSchema, [index], errorSchema[newIndex]);\n                    }\n                    else {\n                        set(newErrorSchema, [idx], errorSchema[i]);\n                    }\n                }\n            }\n            const { keyedFormData } = this.state;\n            function reOrderArray() {\n                // Copy item\n                const _newKeyedFormData = keyedFormData.slice();\n                // Moves item from index to newIndex\n                _newKeyedFormData.splice(index, 1);\n                _newKeyedFormData.splice(newIndex, 0, keyedFormData[index]);\n                return _newKeyedFormData;\n            }\n            const newKeyedFormData = reOrderArray();\n            this.setState({\n                keyedFormData: newKeyedFormData,\n            }, () => onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema));\n        };\n    };\n    /** Callback handler used to deal with changing the value of the data in the array at the `index`. Calls the\n     * `onChange` callback with the updated form data\n     *\n     * @param index - The index of the item being changed\n     */\n    onChangeForIndex = (index) => {\n        return (value, newErrorSchema, id) => {\n            const { formData, onChange, errorSchema } = this.props;\n            const arrayData = Array.isArray(formData) ? formData : [];\n            const newFormData = arrayData.map((item, i) => {\n                // We need to treat undefined items as nulls to have validation.\n                // See https://github.com/tdegrunt/jsonschema/issues/206\n                const jsonValue = typeof value === 'undefined' ? null : value;\n                return index === i ? jsonValue : item;\n            });\n            onChange(newFormData, errorSchema &&\n                errorSchema && {\n                ...errorSchema,\n                [index]: newErrorSchema,\n            }, id);\n        };\n    };\n    /** Callback handler used to change the value for a checkbox */\n    onSelectChange = (value) => {\n        const { onChange, idSchema } = this.props;\n        onChange(value, undefined, idSchema && idSchema.$id);\n    };\n    /** Renders the `ArrayField` depending on the specific needs of the schema and uischema elements\n     */\n    render() {\n        const { schema, uiSchema, idSchema, registry } = this.props;\n        const { schemaUtils, translateString } = registry;\n        if (!(ITEMS_KEY in schema)) {\n            const uiOptions = getUiOptions(uiSchema);\n            const UnsupportedFieldTemplate = getTemplate('UnsupportedFieldTemplate', registry, uiOptions);\n            return (_jsx(UnsupportedFieldTemplate, { schema: schema, idSchema: idSchema, reason: translateString(TranslatableString.MissingItems), registry: registry }));\n        }\n        if (schemaUtils.isMultiSelect(schema)) {\n            // If array has enum or uniqueItems set to true, call renderMultiSelect() to render the default multiselect widget or a custom widget, if specified.\n            return this.renderMultiSelect();\n        }\n        if (isCustomWidget(uiSchema)) {\n            return this.renderCustomWidget();\n        }\n        if (isFixedItems(schema)) {\n            return this.renderFixedArray();\n        }\n        if (schemaUtils.isFilesArray(schema, uiSchema)) {\n            return this.renderFiles();\n        }\n        return this.renderNormalArray();\n    }\n    /** Renders a normal array without any limitations of length\n     */\n    renderNormalArray() {\n        const { schema, uiSchema = {}, errorSchema, idSchema, name, title, disabled = false, readonly = false, autofocus = false, required = false, registry, onBlur, onFocus, idPrefix, idSeparator = '_', rawErrors, } = this.props;\n        const { keyedFormData } = this.state;\n        const fieldTitle = schema.title || title || name;\n        const { schemaUtils, formContext } = registry;\n        const uiOptions = getUiOptions(uiSchema);\n        const _schemaItems = isObject(schema.items) ? schema.items : {};\n        const itemsSchema = schemaUtils.retrieveSchema(_schemaItems);\n        const formData = keyedToPlainFormData(this.state.keyedFormData);\n        const canAdd = this.canAddItem(formData);\n        const arrayProps = {\n            canAdd,\n            items: keyedFormData.map((keyedItem, index) => {\n                const { key, item } = keyedItem;\n                // While we are actually dealing with a single item of type T, the types require a T[], so cast\n                const itemCast = item;\n                const itemSchema = schemaUtils.retrieveSchema(_schemaItems, itemCast);\n                const itemErrorSchema = errorSchema ? errorSchema[index] : undefined;\n                const itemIdPrefix = idSchema.$id + idSeparator + index;\n                const itemIdSchema = schemaUtils.toIdSchema(itemSchema, itemIdPrefix, itemCast, idPrefix, idSeparator);\n                return this.renderArrayFieldItem({\n                    key,\n                    index,\n                    name: name && `${name}-${index}`,\n                    title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n                    canAdd,\n                    canMoveUp: index > 0,\n                    canMoveDown: index < formData.length - 1,\n                    itemSchema,\n                    itemIdSchema,\n                    itemErrorSchema,\n                    itemData: itemCast,\n                    itemUiSchema: uiSchema.items,\n                    autofocus: autofocus && index === 0,\n                    onBlur,\n                    onFocus,\n                    rawErrors,\n                    totalItems: keyedFormData.length,\n                });\n            }),\n            className: `field field-array field-array-of-${itemsSchema.type}`,\n            disabled,\n            idSchema,\n            uiSchema,\n            onAddClick: this.onAddClick,\n            readonly,\n            required,\n            schema,\n            title: fieldTitle,\n            formContext,\n            formData,\n            rawErrors,\n            registry,\n        };\n        const Template = getTemplate('ArrayFieldTemplate', registry, uiOptions);\n        return _jsx(Template, { ...arrayProps });\n    }\n    /** Renders an array using the custom widget provided by the user in the `uiSchema`\n     */\n    renderCustomWidget() {\n        const { schema, idSchema, uiSchema, disabled = false, readonly = false, autofocus = false, required = false, hideError, placeholder, onBlur, onFocus, formData: items = [], registry, rawErrors, name, } = this.props;\n        const { widgets, formContext, globalUiOptions, schemaUtils } = registry;\n        const { widget, title: uiTitle, ...options } = getUiOptions(uiSchema, globalUiOptions);\n        const Widget = getWidget(schema, widget, widgets);\n        const label = uiTitle ?? schema.title ?? name;\n        const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n        return (_jsx(Widget, { id: idSchema.$id, name: name, multiple: true, onChange: this.onSelectChange, onBlur: onBlur, onFocus: onFocus, options: options, schema: schema, uiSchema: uiSchema, registry: registry, value: items, disabled: disabled, readonly: readonly, hideError: hideError, required: required, label: label, hideLabel: !displayLabel, placeholder: placeholder, formContext: formContext, autofocus: autofocus, rawErrors: rawErrors }));\n    }\n    /** Renders an array as a set of checkboxes\n     */\n    renderMultiSelect() {\n        const { schema, idSchema, uiSchema, formData: items = [], disabled = false, readonly = false, autofocus = false, required = false, placeholder, onBlur, onFocus, registry, rawErrors, name, } = this.props;\n        const { widgets, schemaUtils, formContext, globalUiOptions } = registry;\n        const itemsSchema = schemaUtils.retrieveSchema(schema.items, items);\n        const enumOptions = optionsList(itemsSchema, uiSchema);\n        const { widget = 'select', title: uiTitle, ...options } = getUiOptions(uiSchema, globalUiOptions);\n        const Widget = getWidget(schema, widget, widgets);\n        const label = uiTitle ?? schema.title ?? name;\n        const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n        return (_jsx(Widget, { id: idSchema.$id, name: name, multiple: true, onChange: this.onSelectChange, onBlur: onBlur, onFocus: onFocus, options: { ...options, enumOptions }, schema: schema, uiSchema: uiSchema, registry: registry, value: items, disabled: disabled, readonly: readonly, required: required, label: label, hideLabel: !displayLabel, placeholder: placeholder, formContext: formContext, autofocus: autofocus, rawErrors: rawErrors }));\n    }\n    /** Renders an array of files using the `FileWidget`\n     */\n    renderFiles() {\n        const { schema, uiSchema, idSchema, name, disabled = false, readonly = false, autofocus = false, required = false, onBlur, onFocus, registry, formData: items = [], rawErrors, } = this.props;\n        const { widgets, formContext, globalUiOptions, schemaUtils } = registry;\n        const { widget = 'files', title: uiTitle, ...options } = getUiOptions(uiSchema, globalUiOptions);\n        const Widget = getWidget(schema, widget, widgets);\n        const label = uiTitle ?? schema.title ?? name;\n        const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n        return (_jsx(Widget, { options: options, id: idSchema.$id, name: name, multiple: true, onChange: this.onSelectChange, onBlur: onBlur, onFocus: onFocus, schema: schema, uiSchema: uiSchema, value: items, disabled: disabled, readonly: readonly, required: required, registry: registry, formContext: formContext, autofocus: autofocus, rawErrors: rawErrors, label: label, hideLabel: !displayLabel }));\n    }\n    /** Renders an array that has a maximum limit of items\n     */\n    renderFixedArray() {\n        const { schema, uiSchema = {}, formData = [], errorSchema, idPrefix, idSeparator = '_', idSchema, name, title, disabled = false, readonly = false, autofocus = false, required = false, registry, onBlur, onFocus, rawErrors, } = this.props;\n        const { keyedFormData } = this.state;\n        let { formData: items = [] } = this.props;\n        const fieldTitle = schema.title || title || name;\n        const uiOptions = getUiOptions(uiSchema);\n        const { schemaUtils, formContext } = registry;\n        const _schemaItems = isObject(schema.items) ? schema.items : [];\n        const itemSchemas = _schemaItems.map((item, index) => schemaUtils.retrieveSchema(item, formData[index]));\n        const additionalSchema = isObject(schema.additionalItems)\n            ? schemaUtils.retrieveSchema(schema.additionalItems, formData)\n            : null;\n        if (!items || items.length < itemSchemas.length) {\n            // to make sure at least all fixed items are generated\n            items = items || [];\n            items = items.concat(new Array(itemSchemas.length - items.length));\n        }\n        // These are the props passed into the render function\n        const canAdd = this.canAddItem(items) && !!additionalSchema;\n        const arrayProps = {\n            canAdd,\n            className: 'field field-array field-array-fixed-items',\n            disabled,\n            idSchema,\n            formData,\n            items: keyedFormData.map((keyedItem, index) => {\n                const { key, item } = keyedItem;\n                // While we are actually dealing with a single item of type T, the types require a T[], so cast\n                const itemCast = item;\n                const additional = index >= itemSchemas.length;\n                const itemSchema = (additional && isObject(schema.additionalItems)\n                    ? schemaUtils.retrieveSchema(schema.additionalItems, itemCast)\n                    : itemSchemas[index]) || {};\n                const itemIdPrefix = idSchema.$id + idSeparator + index;\n                const itemIdSchema = schemaUtils.toIdSchema(itemSchema, itemIdPrefix, itemCast, idPrefix, idSeparator);\n                const itemUiSchema = additional\n                    ? uiSchema.additionalItems || {}\n                    : Array.isArray(uiSchema.items)\n                        ? uiSchema.items[index]\n                        : uiSchema.items || {};\n                const itemErrorSchema = errorSchema ? errorSchema[index] : undefined;\n                return this.renderArrayFieldItem({\n                    key,\n                    index,\n                    name: name && `${name}-${index}`,\n                    title: fieldTitle ? `${fieldTitle}-${index + 1}` : undefined,\n                    canAdd,\n                    canRemove: additional,\n                    canMoveUp: index >= itemSchemas.length + 1,\n                    canMoveDown: additional && index < items.length - 1,\n                    itemSchema,\n                    itemData: itemCast,\n                    itemUiSchema,\n                    itemIdSchema,\n                    itemErrorSchema,\n                    autofocus: autofocus && index === 0,\n                    onBlur,\n                    onFocus,\n                    rawErrors,\n                    totalItems: keyedFormData.length,\n                });\n            }),\n            onAddClick: this.onAddClick,\n            readonly,\n            required,\n            registry,\n            schema,\n            uiSchema,\n            title: fieldTitle,\n            formContext,\n            errorSchema,\n            rawErrors,\n        };\n        const Template = getTemplate('ArrayFieldTemplate', registry, uiOptions);\n        return _jsx(Template, { ...arrayProps });\n    }\n    /** Renders the individual array item using a `SchemaField` along with the additional properties required to be send\n     * back to the `ArrayFieldItemTemplate`.\n     *\n     * @param props - The props for the individual array item to be rendered\n     */\n    renderArrayFieldItem(props) {\n        const { key, index, name, canAdd, canRemove = true, canMoveUp, canMoveDown, itemSchema, itemData, itemUiSchema, itemIdSchema, itemErrorSchema, autofocus, onBlur, onFocus, rawErrors, totalItems, title, } = props;\n        const { disabled, hideError, idPrefix, idSeparator, readonly, uiSchema, registry, formContext } = this.props;\n        const { fields: { ArraySchemaField, SchemaField }, globalUiOptions, } = registry;\n        const ItemSchemaField = ArraySchemaField || SchemaField;\n        const { orderable = true, removable = true, copyable = false } = getUiOptions(uiSchema, globalUiOptions);\n        const has = {\n            moveUp: orderable && canMoveUp,\n            moveDown: orderable && canMoveDown,\n            copy: copyable && canAdd,\n            remove: removable && canRemove,\n            toolbar: false,\n        };\n        has.toolbar = Object.keys(has).some((key) => has[key]);\n        return {\n            children: (_jsx(ItemSchemaField, { name: name, title: title, index: index, schema: itemSchema, uiSchema: itemUiSchema, formData: itemData, formContext: formContext, errorSchema: itemErrorSchema, idPrefix: idPrefix, idSeparator: idSeparator, idSchema: itemIdSchema, required: this.isItemRequired(itemSchema), onChange: this.onChangeForIndex(index), onBlur: onBlur, onFocus: onFocus, registry: registry, disabled: disabled, readonly: readonly, hideError: hideError, autofocus: autofocus, rawErrors: rawErrors })),\n            className: 'array-item',\n            disabled,\n            canAdd,\n            hasCopy: has.copy,\n            hasToolbar: has.toolbar,\n            hasMoveUp: has.moveUp,\n            hasMoveDown: has.moveDown,\n            hasRemove: has.remove,\n            index,\n            totalItems,\n            key,\n            onAddIndexClick: this.onAddIndexClick,\n            onCopyIndexClick: this.onCopyIndexClick,\n            onDropIndexClick: this.onDropIndexClick,\n            onReorderClick: this.onReorderClick,\n            readonly,\n            registry,\n            schema: itemSchema,\n            uiSchema: itemUiSchema,\n        };\n    }\n}\n/** `ArrayField` is `React.ComponentType<FieldProps<T[], S, F>>` (necessarily) but the `registry` requires things to be a\n * `Field` which is defined as `React.ComponentType<FieldProps<T, S, F>>`, so cast it to make `registry` happy.\n */\nexport default ArrayField;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getWidget, getUiOptions, optionsList, TranslatableString, } from '@rjsf/utils';\nimport isObject from 'lodash-es/isObject.js';\n/** The `BooleanField` component is used to render a field in the schema is boolean. It constructs `enumOptions` for the\n * two boolean values based on the various alternatives in the schema.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction BooleanField(props) {\n    const { schema, name, uiSchema, idSchema, formData, registry, required, disabled, readonly, hideError, autofocus, title, onChange, onFocus, onBlur, rawErrors, } = props;\n    const { title: schemaTitle } = schema;\n    const { widgets, formContext, translateString, globalUiOptions } = registry;\n    const { widget = 'checkbox', title: uiTitle, \n    // Unlike the other fields, don't use `getDisplayLabel()` since it always returns false for the boolean type\n    label: displayLabel = true, ...options } = getUiOptions(uiSchema, globalUiOptions);\n    const Widget = getWidget(schema, widget, widgets);\n    const yes = translateString(TranslatableString.YesLabel);\n    const no = translateString(TranslatableString.NoLabel);\n    let enumOptions;\n    const label = uiTitle ?? schemaTitle ?? title ?? name;\n    if (Array.isArray(schema.oneOf)) {\n        enumOptions = optionsList({\n            oneOf: schema.oneOf\n                .map((option) => {\n                if (isObject(option)) {\n                    return {\n                        ...option,\n                        title: option.title || (option.const === true ? yes : no),\n                    };\n                }\n                return undefined;\n            })\n                .filter((o) => o), // cast away the error that typescript can't grok is fixed\n        }, uiSchema);\n    }\n    else {\n        // We deprecated enumNames in v5. It's intentionally omitted from RSJFSchema type, so we need to cast here.\n        const schemaWithEnumNames = schema;\n        const enums = schema.enum ?? [true, false];\n        if (!schemaWithEnumNames.enumNames && enums.length === 2 && enums.every((v) => typeof v === 'boolean')) {\n            enumOptions = [\n                {\n                    value: enums[0],\n                    label: enums[0] ? yes : no,\n                },\n                {\n                    value: enums[1],\n                    label: enums[1] ? yes : no,\n                },\n            ];\n        }\n        else {\n            enumOptions = optionsList({\n                enum: enums,\n                // NOTE: enumNames is deprecated, but still supported for now.\n                enumNames: schemaWithEnumNames.enumNames,\n            }, uiSchema);\n        }\n    }\n    return (_jsx(Widget, { options: { ...options, enumOptions }, schema: schema, uiSchema: uiSchema, id: idSchema.$id, name: name, onChange: onChange, onFocus: onFocus, onBlur: onBlur, label: label, hideLabel: !displayLabel, value: formData, required: required, disabled: disabled, readonly: readonly, hideError: hideError, registry: registry, formContext: formContext, autofocus: autofocus, rawErrors: rawErrors }));\n}\nexport default BooleanField;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Component } from 'react';\nimport get from 'lodash-es/get.js';\nimport isEmpty from 'lodash-es/isEmpty.js';\nimport omit from 'lodash-es/omit.js';\nimport { ANY_OF_KEY, deepEquals, ERRORS_KEY, getDiscriminatorFieldFromSchema, getUiOptions, getWidget, mergeSchemas, ONE_OF_KEY, TranslatableString, } from '@rjsf/utils';\n/** The `AnyOfField` component is used to render a field in the schema that is an `anyOf`, `allOf` or `oneOf`. It tracks\n * the currently selected option and cleans up any irrelevant data in `formData`.\n *\n * @param props - The `FieldProps` for this template\n */\nclass AnyOfField extends Component {\n    /** Constructs an `AnyOfField` with the given `props` to initialize the initially selected option in state\n     *\n     * @param props - The `FieldProps` for this template\n     */\n    constructor(props) {\n        super(props);\n        const { formData, options, registry: { schemaUtils }, } = this.props;\n        // cache the retrieved options in state in case they have $refs to save doing it later\n        const retrievedOptions = options.map((opt) => schemaUtils.retrieveSchema(opt, formData));\n        this.state = {\n            retrievedOptions,\n            selectedOption: this.getMatchingOption(0, formData, retrievedOptions),\n        };\n    }\n    /** React lifecycle method that is called when the props and/or state for this component is updated. It recomputes the\n     * currently selected option based on the overall `formData`\n     *\n     * @param prevProps - The previous `FieldProps` for this template\n     * @param prevState - The previous `AnyOfFieldState` for this template\n     */\n    componentDidUpdate(prevProps, prevState) {\n        const { formData, options, idSchema } = this.props;\n        const { selectedOption } = this.state;\n        let newState = this.state;\n        if (!deepEquals(prevProps.options, options)) {\n            const { registry: { schemaUtils }, } = this.props;\n            // re-cache the retrieved options in state in case they have $refs to save doing it later\n            const retrievedOptions = options.map((opt) => schemaUtils.retrieveSchema(opt, formData));\n            newState = { selectedOption, retrievedOptions };\n        }\n        if (!deepEquals(formData, prevProps.formData) && idSchema.$id === prevProps.idSchema.$id) {\n            const { retrievedOptions } = newState;\n            const matchingOption = this.getMatchingOption(selectedOption, formData, retrievedOptions);\n            if (prevState && matchingOption !== selectedOption) {\n                newState = { selectedOption: matchingOption, retrievedOptions };\n            }\n        }\n        if (newState !== this.state) {\n            this.setState(newState);\n        }\n    }\n    /** Determines the best matching option for the given `formData` and `options`.\n     *\n     * @param formData - The new formData\n     * @param options - The list of options to choose from\n     * @return - The index of the `option` that best matches the `formData`\n     */\n    getMatchingOption(selectedOption, formData, options) {\n        const { schema, registry: { schemaUtils }, } = this.props;\n        const discriminator = getDiscriminatorFieldFromSchema(schema);\n        const option = schemaUtils.getClosestMatchingOption(formData, options, selectedOption, discriminator);\n        return option;\n    }\n    /** Callback handler to remember what the currently selected option is. In addition to that the `formData` is updated\n     * to remove properties that are not part of the newly selected option schema, and then the updated data is passed to\n     * the `onChange` handler.\n     *\n     * @param option - The new option value being selected\n     */\n    onOptionChange = (option) => {\n        const { selectedOption, retrievedOptions } = this.state;\n        const { formData, onChange, registry } = this.props;\n        const { schemaUtils } = registry;\n        const intOption = option !== undefined ? parseInt(option, 10) : -1;\n        if (intOption === selectedOption) {\n            return;\n        }\n        const newOption = intOption >= 0 ? retrievedOptions[intOption] : undefined;\n        const oldOption = selectedOption >= 0 ? retrievedOptions[selectedOption] : undefined;\n        let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);\n        if (newOption) {\n            // Call getDefaultFormState to make sure defaults are populated on change. Pass \"excludeObjectChildren\"\n            // so that only the root objects themselves are created without adding undefined children properties\n            newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren');\n        }\n        this.setState({ selectedOption: intOption }, () => {\n            onChange(newFormData, undefined, this.getFieldId());\n        });\n    };\n    getFieldId() {\n        const { idSchema, schema } = this.props;\n        return `${idSchema.$id}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`;\n    }\n    /** Renders the `AnyOfField` selector along with a `SchemaField` for the value of the `formData`\n     */\n    render() {\n        const { name, disabled = false, errorSchema = {}, formContext, onBlur, onFocus, readonly, registry, schema, uiSchema, } = this.props;\n        const { widgets, fields, translateString, globalUiOptions, schemaUtils } = registry;\n        const { SchemaField: _SchemaField } = fields;\n        const { selectedOption, retrievedOptions } = this.state;\n        const { widget = 'select', placeholder, autofocus, autocomplete, title = schema.title, ...uiOptions } = getUiOptions(uiSchema, globalUiOptions);\n        const Widget = getWidget({ type: 'number' }, widget, widgets);\n        const rawErrors = get(errorSchema, ERRORS_KEY, []);\n        const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);\n        const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n        const option = selectedOption >= 0 ? retrievedOptions[selectedOption] || null : null;\n        let optionSchema;\n        if (option) {\n            // merge top level required field\n            const { required } = schema;\n            // Merge in all the non-oneOf/anyOf properties and also skip the special ADDITIONAL_PROPERTY_FLAG property\n            optionSchema = required ? mergeSchemas({ required }, option) : option;\n        }\n        // First we will check to see if there is an anyOf/oneOf override for the UI schema\n        let optionsUiSchema = [];\n        if (ONE_OF_KEY in schema && uiSchema && ONE_OF_KEY in uiSchema) {\n            if (Array.isArray(uiSchema[ONE_OF_KEY])) {\n                optionsUiSchema = uiSchema[ONE_OF_KEY];\n            }\n            else {\n                console.warn(`uiSchema.oneOf is not an array for \"${title || name}\"`);\n            }\n        }\n        else if (ANY_OF_KEY in schema && uiSchema && ANY_OF_KEY in uiSchema) {\n            if (Array.isArray(uiSchema[ANY_OF_KEY])) {\n                optionsUiSchema = uiSchema[ANY_OF_KEY];\n            }\n            else {\n                console.warn(`uiSchema.anyOf is not an array for \"${title || name}\"`);\n            }\n        }\n        // Then we pick the one that matches the selected option index, if one exists otherwise default to the main uiSchema\n        let optionUiSchema = uiSchema;\n        if (selectedOption >= 0 && optionsUiSchema.length > selectedOption) {\n            optionUiSchema = optionsUiSchema[selectedOption];\n        }\n        const translateEnum = title\n            ? TranslatableString.TitleOptionPrefix\n            : TranslatableString.OptionPrefix;\n        const translateParams = title ? [title] : [];\n        const enumOptions = retrievedOptions.map((opt, index) => {\n            // Also see if there is an override title in the uiSchema for each option, otherwise use the title from the option\n            const { title: uiTitle = opt.title } = getUiOptions(optionsUiSchema[index]);\n            return {\n                label: uiTitle || translateString(translateEnum, translateParams.concat(String(index + 1))),\n                value: index,\n            };\n        });\n        return (_jsxs(\"div\", { className: 'panel panel-default panel-body', children: [_jsx(\"div\", { className: 'form-group', children: _jsx(Widget, { id: this.getFieldId(), name: `${name}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`, schema: { type: 'number', default: 0 }, onChange: this.onOptionChange, onBlur: onBlur, onFocus: onFocus, disabled: disabled || isEmpty(enumOptions), multiple: false, rawErrors: rawErrors, errorSchema: fieldErrorSchema, value: selectedOption >= 0 ? selectedOption : undefined, options: { enumOptions, ...uiOptions }, registry: registry, formContext: formContext, placeholder: placeholder, autocomplete: autocomplete, autofocus: autofocus, label: title ?? name, hideLabel: !displayLabel, readonly: readonly }) }), optionSchema && optionSchema.type !== 'null' && (_jsx(_SchemaField, { ...this.props, schema: optionSchema, uiSchema: optionUiSchema }))] }));\n    }\n}\nexport default AnyOfField;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useState, useCallback } from 'react';\nimport { asNumber } from '@rjsf/utils';\n// Matches a string that ends in a . character, optionally followed by a sequence of\n// digits followed by any number of 0 characters up until the end of the line.\n// Ensuring that there is at least one prefixed character is important so that\n// you don't incorrectly match against \"0\".\nconst trailingCharMatcherWithPrefix = /\\.([0-9]*0)*$/;\n// This is used for trimming the trailing 0 and . characters without affecting\n// the rest of the string. Its possible to use one RegEx with groups for this\n// functionality, but it is fairly complex compared to simply defining two\n// different matchers.\nconst trailingCharMatcher = /[0.]0*$/;\n/**\n * The NumberField class has some special handling for dealing with trailing\n * decimal points and/or zeroes. This logic is designed to allow trailing values\n * to be visible in the input element, but not be represented in the\n * corresponding form data.\n *\n * The algorithm is as follows:\n *\n * 1. When the input value changes the value is cached in the component state\n *\n * 2. The value is then normalized, removing trailing decimal points and zeros,\n *    then passed to the \"onChange\" callback\n *\n * 3. When the component is rendered, the formData value is checked against the\n *    value cached in the state. If it matches the cached value, the cached\n *    value is passed to the input instead of the formData value\n */\nfunction NumberField(props) {\n    const { registry, onChange, formData, value: initialValue } = props;\n    const [lastValue, setLastValue] = useState(initialValue);\n    const { StringField } = registry.fields;\n    let value = formData;\n    /** Handle the change from the `StringField` to properly convert to a number\n     *\n     * @param value - The current value for the change occurring\n     */\n    const handleChange = useCallback((value, errorSchema, id) => {\n        // Cache the original value in component state\n        setLastValue(value);\n        // Normalize decimals that don't start with a zero character in advance so\n        // that the rest of the normalization logic is simpler\n        if (`${value}`.charAt(0) === '.') {\n            value = `0${value}`;\n        }\n        // Check that the value is a string (this can happen if the widget used is a\n        // <select>, due to an enum declaration etc) then, if the value ends in a\n        // trailing decimal point or multiple zeroes, strip the trailing values\n        const processed = typeof value === 'string' && value.match(trailingCharMatcherWithPrefix)\n            ? asNumber(value.replace(trailingCharMatcher, ''))\n            : asNumber(value);\n        onChange(processed, errorSchema, id);\n    }, [onChange]);\n    if (typeof lastValue === 'string' && typeof value === 'number') {\n        // Construct a regular expression that checks for a string that consists\n        // of the formData value suffixed with zero or one '.' characters and zero\n        // or more '0' characters\n        const re = new RegExp(`^(${String(value).replace('.', '\\\\.')})?\\\\.?0*$`);\n        // If the cached \"lastValue\" is a match, use that instead of the formData\n        // value to prevent the input value from changing in the UI\n        if (lastValue.match(re)) {\n            value = lastValue;\n        }\n    }\n    return _jsx(StringField, { ...props, formData: value, onChange: handleChange });\n}\nexport default NumberField;\n","import*as e from\"react\";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},n.apply(this,arguments)}const r=[\"children\",\"options\"],t={blockQuote:\"0\",breakLine:\"1\",breakThematic:\"2\",codeBlock:\"3\",codeFenced:\"4\",codeInline:\"5\",footnote:\"6\",footnoteReference:\"7\",gfmTask:\"8\",heading:\"9\",headingSetext:\"10\",htmlBlock:\"11\",htmlComment:\"12\",htmlSelfClosing:\"13\",image:\"14\",link:\"15\",linkAngleBraceStyleDetector:\"16\",linkBareUrlDetector:\"17\",linkMailtoDetector:\"18\",newlineCoalescer:\"19\",orderedList:\"20\",paragraph:\"21\",ref:\"22\",refImage:\"23\",refLink:\"24\",table:\"25\",tableSeparator:\"26\",text:\"27\",textBolded:\"28\",textEmphasized:\"29\",textEscaped:\"30\",textMarked:\"31\",textStrikethroughed:\"32\",unorderedList:\"33\"},o=[\"allowFullScreen\",\"allowTransparency\",\"autoComplete\",\"autoFocus\",\"autoPlay\",\"cellPadding\",\"cellSpacing\",\"charSet\",\"classId\",\"colSpan\",\"contentEditable\",\"contextMenu\",\"crossOrigin\",\"encType\",\"formAction\",\"formEncType\",\"formMethod\",\"formNoValidate\",\"formTarget\",\"frameBorder\",\"hrefLang\",\"inputMode\",\"keyParams\",\"keyType\",\"marginHeight\",\"marginWidth\",\"maxLength\",\"mediaGroup\",\"minLength\",\"noValidate\",\"radioGroup\",\"readOnly\",\"rowSpan\",\"spellCheck\",\"srcDoc\",\"srcLang\",\"srcSet\",\"tabIndex\",\"useMap\"].reduce((e,n)=>(e[n.toLowerCase()]=n,e),{class:\"className\",for:\"htmlFor\"}),a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},c=[\"style\",\"script\",\"pre\"],i=[\"src\",\"href\",\"data\",\"formAction\",\"srcDoc\",\"action\"],u=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,l=/mailto:/i,s=/\\n{2,}$/,f=/^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/,_=/^ *> ?/gm,d=/^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/,p=/^ {2,}\\n/,y=/^(?:( *[-*_])){3,} *(?:\\n *)+\\n/,h=/^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/,g=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,m=/^(`+)((?:\\\\`|(?!\\1)`|[^`])+)\\1/,k=/^(?:\\n *)*\\n/,x=/\\r\\n?/g,v=/^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/,q=/^\\[\\^([^\\]]+)]/,$=/\\f/g,b=/^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/,S=/^\\s*?\\[(x|\\s)\\]/,z=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,E=/^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,A=/^([^\\n]+)\\n *(=|-){3,} *\\n/,R=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i,B=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,L=/^<!--[\\s\\S]*?(?:-->)/,O=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,j=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,C=/^\\{.*\\}$/,I=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,T=/^<([^ >]+@[^ >]+)>/,M=/^<([^ >]+:\\/[^ >]+)>/,w=/-([a-z])?/gi,D=/^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/,F=/^[^\\n]+(?:  \\n|\\n{2,})/,P=/^\\[([^\\]]*)\\]:\\s+<?([^\\s>]+)>?\\s*(\"([^\"]*)\")?/,Z=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,N=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,G=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,U=/\\t/g,V=/(^ *\\||\\| *$)/g,H=/^ *:-+: *$/,Q=/^ *:-+ *$/,W=/^ *-+: *$/,J=e=>`(?=[\\\\s\\\\S]+?\\\\1${e?\"\\\\1\":\"\"})`,K=\"((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\\\\\\\1|[\\\\s\\\\S])+?)\",X=RegExp(`^([*_])\\\\1${J(1)}${K}\\\\1\\\\1(?!\\\\1)`),Y=RegExp(`^([*_])${J(0)}${K}\\\\1(?!\\\\1)`),ee=RegExp(`^(==)${J(0)}${K}\\\\1`),ne=RegExp(`^(~~)${J(0)}${K}\\\\1`),re=/^(:[a-zA-Z0-9-_]+:)/,te=/^\\\\([^0-9A-Za-z\\s])/,oe=/\\\\([^0-9A-Za-z\\s])/g,ae=/^[\\s\\S](?:(?!  \\n|[0-9]\\.|http)[^=*_~\\-\\n:<`\\\\\\[!])*/,ce=/^\\n+/,ie=/^([ \\t]*)/,ue=/(?:^|\\n)( *)$/,le=\"(?:\\\\d+\\\\.)\",se=\"(?:[*+-])\";function fe(e){return\"( *)(\"+(1===e?le:se)+\") +\"}const _e=fe(1),de=fe(2);function pe(e){return RegExp(\"^\"+(1===e?_e:de))}const ye=pe(1),he=pe(2);function ge(e){return RegExp(\"^\"+(1===e?_e:de)+\"[^\\\\n]*(?:\\\\n(?!\\\\1\"+(1===e?le:se)+\" )[^\\\\n]*)*(\\\\n|$)\",\"gm\")}const me=ge(1),ke=ge(2);function xe(e){const n=1===e?le:se;return RegExp(\"^( *)(\"+n+\") [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1\"+n+\" (?!\"+n+\" ))\\\\n*|\\\\s*\\\\n*$)\")}const ve=xe(1),qe=xe(2);function $e(e,n){const r=1===n,t=r?ve:qe,o=r?me:ke,a=r?ye:he;return{t:e=>a.test(e),o:Ce(function(e,n){const r=ue.exec(n.prevCapture);return r&&(n.list||!n.inline&&!n.simple)?t.exec(e=r[1]+e):null}),i:1,u(e,n,t){const c=r?+e[2]:void 0,i=e[0].replace(s,\"\\n\").match(o);let u=!1;return{items:i.map(function(e,r){const o=a.exec(e)[0].length,c=RegExp(\"^ {1,\"+o+\"}\",\"gm\"),l=e.replace(c,\"\").replace(a,\"\"),s=r===i.length-1,f=-1!==l.indexOf(\"\\n\\n\")||s&&u;u=f;const _=t.inline,d=t.list;let p;t.list=!0,f?(t.inline=!1,p=ze(l)+\"\\n\\n\"):(t.inline=!0,p=ze(l));const y=n(p,t);return t.inline=_,t.list=d,y}),ordered:r,start:c}},l:(n,r,t)=>e(n.ordered?\"ol\":\"ul\",{key:t.key,start:\"20\"===n.type?n.start:void 0},n.items.map(function(n,o){return e(\"li\",{key:o},r(n,t))}))}}const be=RegExp(\"^\\\\[((?:\\\\[[^\\\\[\\\\]]*(?:\\\\[[^\\\\[\\\\]]*\\\\][^\\\\[\\\\]]*)*\\\\]|[^\\\\[\\\\]])*)\\\\]\\\\(\\\\s*<?((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),Se=/^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/;function ze(e){let n=e.length;for(;n>0&&e[n-1]<=\" \";)n--;return e.slice(0,n)}function Ee(e,n){return e.startsWith(n)}function Ae(e,n,r){if(Array.isArray(r)){for(let n=0;n<r.length;n++)if(Ee(e,r[n]))return!0;return!1}return r(e,n)}function Re(e){return e.replace(/[ÀÁÂÃÄÅàáâãäåæÆ]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function Be(e){return W.test(e)?\"right\":H.test(e)?\"center\":Q.test(e)?\"left\":null}function Le(e,n,r,t){const o=r.inTable;r.inTable=!0;let a=[[]],c=\"\";function i(){if(!c)return;const e=a[a.length-1];e.push.apply(e,n(c,r)),c=\"\"}return e.trim().split(/(`[^`]*`|\\\\\\||\\|)/).filter(Boolean).forEach((e,n,r)=>{\"|\"===e.trim()&&(i(),t)?0!==n&&n!==r.length-1&&a.push([]):c+=e}),i(),r.inTable=o,a}function Oe(e,n,r){r.inline=!0;const t=e[2]?e[2].replace(V,\"\").split(\"|\").map(Be):[],o=e[3]?function(e,n,r){return e.trim().split(\"\\n\").map(function(e){return Le(e,n,r,!0)})}(e[3],n,r):[],a=Le(e[1],n,r,!!o.length);return r.inline=!1,o.length?{align:t,cells:o,header:a,type:\"25\"}:{children:a,type:\"21\"}}function je(e,n){return null==e.align[n]?{}:{textAlign:e.align[n]}}function Ce(e){return e.inline=1,e}function Ie(e){return Ce(function(n,r){return r.inline?e.exec(n):null})}function Te(e){return Ce(function(n,r){return r.inline||r.simple?e.exec(n):null})}function Me(e){return function(n,r){return r.inline||r.simple?null:e.exec(n)}}function we(e){return Ce(function(n){return e.exec(n)})}const De=/(javascript|vbscript|data(?!:image)):/i;function Fe(e){try{const n=decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,\"\");if(De.test(n))return null}catch(e){return null}return e}function Pe(e){return e?e.replace(oe,\"$1\"):e}function Ze(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!0,r.simple=!0;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ne(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!1,r.simple=!0;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ge(e,n,r){const t=r.inline||!1;r.inline=!1;const o=e(n,r);return r.inline=t,o}const Ue=(e,n,r)=>({children:Ze(n,e[2],r)});function Ve(){return{}}function He(){return null}function Qe(...e){return e.filter(Boolean).join(\" \")}function We(e,n,r){let t=e;const o=n.split(\".\");for(;o.length&&(t=t[o[0]],void 0!==t);)o.shift();return t||r}function Je(r=\"\",t={}){t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?n({},a,t.namedCodesToUnicode):a;const s=t.slugify||Re,V=t.sanitizer||Fe,H=t.createElement||e.createElement,Q=[f,h,g,t.enforceAtxHeadings?E:z,A,D,ve,qe],W=[...Q,F,R,L,j];function J(e,r,...o){const a=We(t.overrides,e+\".props\",{});return H(function(e,n){const r=We(n,e);return r?\"function\"==typeof r||\"object\"==typeof r&&\"render\"in r?r:We(n,e+\".component\",e):e}(e,t.overrides),n({},r,a,{className:Qe(null==r?void 0:r.className,a.className)||void 0}),...o)}function K(e){e=e.replace(b,\"\");let n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===G.test(e));const r=_e(fe(n?e:ze(e).replace(ce,\"\")+\"\\n\\n\",{inline:n}));for(;\"string\"==typeof r[r.length-1]&&!r[r.length-1].trim();)r.pop();if(null===t.wrapper)return r;const o=t.wrapper||(n?\"span\":\"div\");let a;if(r.length>1||t.forceWrapper)a=r;else{if(1===r.length)return a=r[0],\"string\"==typeof a?J(\"span\",{key:\"outer\"},a):a;a=null}return H(o,{key:\"outer\"},a)}function oe(e,n){if(!n||!n.trim())return null;const r=n.match(u);return r?r.reduce(function(n,r){const t=r.indexOf(\"=\");if(-1!==t){const a=function(e){return-1!==e.indexOf(\"-\")&&null===e.match(O)&&(e=e.replace(w,function(e,n){return n.toUpperCase()})),e}(r.slice(0,t)).trim(),c=function(e){const n=e[0];return('\"'===n||\"'\"===n)&&e.length>=2&&e[e.length-1]===n?e.slice(1,-1):e}(r.slice(t+1).trim()),u=o[a]||a;if(\"ref\"===u)return n;const l=n[u]=function(e,n,r,t){return\"style\"===n?function(e){const n=[];let r=\"\",t=!1,o=!1,a=\"\";if(!e)return n;for(let c=0;c<e.length;c++){const i=e[c];if('\"'!==i&&\"'\"!==i||t||(o?i===a&&(o=!1,a=\"\"):(o=!0,a=i)),\"(\"===i&&r.endsWith(\"url\")?t=!0:\")\"===i&&t&&(t=!1),\";\"!==i||o||t)r+=i;else{const e=r.trim();if(e){const r=e.indexOf(\":\");if(r>0){const t=e.slice(0,r).trim(),o=e.slice(r+1).trim();n.push([t,o])}}r=\"\"}}const c=r.trim();if(c){const e=c.indexOf(\":\");if(e>0){const r=c.slice(0,e).trim(),t=c.slice(e+1).trim();n.push([r,t])}}return n}(r).reduce(function(n,[r,o]){return n[r.replace(/(-[a-z])/g,e=>e[1].toUpperCase())]=t(o,e,r),n},{}):-1!==i.indexOf(n)?t(Pe(r),e,n):(r.match(C)&&(r=Pe(r.slice(1,r.length-1))),\"true\"===r||\"false\"!==r&&r)}(e,a,c,V);\"string\"==typeof l&&(R.test(l)||j.test(l))&&(n[u]=K(l.trim()))}else\"style\"!==r&&(n[o[r]||r]=!0);return n},{}):null}const ue=[],le={},se={0:{t:[\">\"],o:Me(f),i:1,u(e,n,r){const[,t,o]=e[0].replace(_,\"\").match(d);return{alert:t,children:n(o,r)}},l(e,n,r){const t={key:r.key};return e.alert&&(t.className=\"markdown-alert-\"+s(e.alert.toLowerCase(),Re),e.children.unshift({attrs:{},children:[{type:\"27\",text:e.alert}],noInnerParse:!0,type:\"11\",tag:\"header\"})),J(\"blockquote\",t,n(e.children,r))}},1:{o:we(p),i:1,u:Ve,l:(e,n,r)=>J(\"br\",{key:r.key})},2:{t:e=>{const n=e[0];return\"-\"===n||\"*\"===n||\"_\"===n},o:Me(y),i:1,u:Ve,l:(e,n,r)=>J(\"hr\",{key:r.key})},3:{t:[\"    \"],o:Me(g),i:0,u:e=>({lang:void 0,text:Pe(ze(e[0].replace(/^ {4}/gm,\"\")))}),l:(e,r,t)=>J(\"pre\",{key:t.key},J(\"code\",n({},e.attrs,{className:e.lang?\"lang-\"+e.lang:\"\"}),e.text))},4:{t:[\"```\",\"~~~\"],o:Me(h),i:0,u:e=>({attrs:oe(\"code\",e[3]||\"\"),lang:e[2]||void 0,text:e[4],type:\"3\"})},5:{t:[\"`\"],o:Te(m),i:3,u:e=>({text:Pe(e[2])}),l:(e,n,r)=>J(\"code\",{key:r.key},e.text)},6:{t:[\"[^\"],o:Me(v),i:0,u:e=>(ue.push({footnote:e[2],identifier:e[1]}),{}),l:He},7:{t:[\"[^\"],o:Ie(q),i:1,u:e=>({target:\"#\"+s(e[1],Re),text:e[1]}),l:(e,n,r)=>J(\"a\",{key:r.key,href:V(e.target,\"a\",\"href\")},J(\"sup\",{key:r.key},e.text))},8:{t:[\"[ ]\",\"[x]\"],o:Ie(S),i:1,u:e=>({completed:\"x\"===e[1].toLowerCase()}),l:(e,n,r)=>J(\"input\",{checked:e.completed,key:r.key,readOnly:!0,type:\"checkbox\"})},9:{t:[\"#\"],o:Me(t.enforceAtxHeadings?E:z),i:1,u:(e,n,r)=>({children:Ze(n,e[2],r),id:s(e[2],Re),level:e[1].length}),l:(e,n,r)=>J(\"h\"+e.level,{id:e.id,key:r.key},n(e.children,r))},10:{o:Me(A),i:0,u:(e,n,r)=>({children:Ze(n,e[1],r),level:\"=\"===e[2]?1:2,type:\"9\"})},11:{t:[\"<\"],o:we(R),i:1,u(e,n,r){const[,t]=e[3].match(ie),o=RegExp(\"^\"+t,\"gm\"),a=e[3].replace(o,\"\"),i=(u=a,W.some(e=>e.test(u))?Ge:Ze);var u;const l=e[1].toLowerCase(),s=-1!==c.indexOf(l),f=(s?l:e[1]).trim(),_={attrs:oe(f,e[2]),noInnerParse:s,tag:f};if(r.inAnchor=r.inAnchor||\"a\"===l,s)_.text=e[3];else{const e=r.inHTML;r.inHTML=!0,_.children=i(n,a,r),r.inHTML=e}return r.inAnchor=!1,_},l:(e,r,t)=>J(e.tag,n({key:t.key},e.attrs),e.text||(e.children?r(e.children,t):\"\"))},13:{t:[\"<\"],o:we(j),i:1,u(e){const n=e[1].trim();return{attrs:oe(n,e[2]||\"\"),tag:n}},l:(e,r,t)=>J(e.tag,n({},e.attrs,{key:t.key}))},12:{t:[\"\\x3c!--\"],o:we(L),i:1,u:()=>({}),l:He},14:{t:[\"![\"],o:Te(Se),i:1,u:e=>({alt:Pe(e[1]),target:Pe(e[2]),title:Pe(e[3])}),l:(e,n,r)=>J(\"img\",{key:r.key,alt:e.alt||void 0,title:e.title||void 0,src:V(e.target,\"img\",\"src\")})},15:{t:[\"[\"],o:Ie(be),i:3,u:(e,n,r)=>({children:Ne(n,e[1],r),target:Pe(e[2]),title:Pe(e[3])}),l:(e,n,r)=>J(\"a\",{key:r.key,href:V(e.target,\"a\",\"href\"),title:e.title},n(e.children,r))},16:{t:[\"<\"],o:Ie(M),i:0,u:e=>({children:[{text:e[1],type:\"27\"}],target:e[1],type:\"15\"})},17:{t:(e,n)=>!n.inAnchor&&!t.disableAutoLink&&(Ee(e,\"http://\")||Ee(e,\"https://\")),o:Ie(I),i:0,u:e=>({children:[{text:e[1],type:\"27\"}],target:e[1],title:void 0,type:\"15\"})},18:{t:[\"<\"],o:Ie(T),i:0,u(e){let n=e[1],r=e[1];return l.test(r)||(r=\"mailto:\"+r),{children:[{text:n.replace(\"mailto:\",\"\"),type:\"27\"}],target:r,type:\"15\"}}},20:$e(J,1),33:$e(J,2),19:{o:Me(k),i:3,u:Ve,l:()=>\"\\n\"},21:{o:Ce(function(e,n){if(n.inline||n.simple||n.inHTML&&-1===e.indexOf(\"\\n\\n\")&&-1===n.prevCapture.indexOf(\"\\n\\n\"))return null;let r=\"\";e.split(\"\\n\").every(e=>(e+=\"\\n\",!Q.some(n=>n.test(e))&&(r+=e,!!e.trim())));const t=ze(r);return\"\"===t?null:[r,,t]}),i:3,u:Ue,l:(e,n,r)=>J(\"p\",{key:r.key},n(e.children,r))},22:{t:[\"[\"],o:Ie(P),i:0,u:e=>(le[e[1]]={target:e[2],title:e[4]},{}),l:He},23:{t:[\"![\"],o:Te(Z),i:0,u:e=>({alt:e[1]?Pe(e[1]):void 0,ref:e[2]}),l:(e,n,r)=>le[e.ref]?J(\"img\",{key:r.key,alt:e.alt,src:V(le[e.ref].target,\"img\",\"src\"),title:le[e.ref].title}):null},24:{t:e=>\"[\"===e[0]&&-1===e.indexOf(\"](\"),o:Ie(N),i:0,u:(e,n,r)=>({children:n(e[1],r),fallbackChildren:e[0],ref:e[2]}),l:(e,n,r)=>le[e.ref]?J(\"a\",{key:r.key,href:V(le[e.ref].target,\"a\",\"href\"),title:le[e.ref].title},n(e.children,r)):J(\"span\",{key:r.key},e.fallbackChildren)},25:{t:[\"|\"],o:Me(D),i:1,u:Oe,l(e,n,r){const t=e;return J(\"table\",{key:r.key},J(\"thead\",null,J(\"tr\",null,t.header.map(function(e,o){return J(\"th\",{key:o,style:je(t,o)},n(e,r))}))),J(\"tbody\",null,t.cells.map(function(e,o){return J(\"tr\",{key:o},e.map(function(e,o){return J(\"td\",{key:o,style:je(t,o)},n(e,r))}))})))}},27:{o:Ce(function(e,n){let r;return Ee(e,\":\")&&(r=re.exec(e)),r||ae.exec(e)}),i:4,u(e){const n=e[0];return{text:-1===n.indexOf(\"&\")?n:n.replace(B,(e,n)=>t.namedCodesToUnicode[n]||e)}},l:e=>e.text},28:{t:[\"**\",\"__\"],o:Te(X),i:2,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>J(\"strong\",{key:r.key},n(e.children,r))},29:{t:e=>{const n=e[0];return(\"*\"===n||\"_\"===n)&&e[1]!==n},o:Te(Y),i:3,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>J(\"em\",{key:r.key},n(e.children,r))},30:{t:[\"\\\\\"],o:Te(te),i:1,u:e=>({text:e[1],type:\"27\"})},31:{t:[\"==\"],o:Te(ee),i:3,u:Ue,l:(e,n,r)=>J(\"mark\",{key:r.key},n(e.children,r))},32:{t:[\"~~\"],o:Te(ne),i:3,u:Ue,l:(e,n,r)=>J(\"del\",{key:r.key},n(e.children,r))}};!0===t.disableParsingRawHTML&&(delete se[11],delete se[13]);const fe=function(e){var n=Object.keys(e);function r(t,o){var a=[];if(o.prevCapture=o.prevCapture||\"\",t.trim())for(;t;)for(var c=0;c<n.length;){var i=n[c],u=e[i];if(!u.t||Ae(t,o,u.t)){var l=u.o(t,o);if(l&&l[0]){t=t.substring(l[0].length);var s=u.u(l,r,o);o.prevCapture+=l[0],s.type||(s.type=i),a.push(s);break}c++}else c++}return o.prevCapture=\"\",a}return n.sort(function(n,r){return e[n].i-e[r].i||(n<r?-1:1)}),function(e,n){return r(function(e){return e.replace(x,\"\\n\").replace($,\"\").replace(U,\"    \")}(e),n)}}(se),_e=(de=function(e,n){return function(r,t,o){const a=e[r.type].l;return n?n(()=>a(r,t,o),r,t,o):a(r,t,o)}}(se,t.renderRule),function e(n,r={}){if(Array.isArray(n)){const t=r.key,o=[];let a=!1;for(let t=0;t<n.length;t++){r.key=t;const c=e(n[t],r),i=\"string\"==typeof c;i&&a?o[o.length-1]+=c:null!==c&&o.push(c),a=i}return r.key=t,o}return de(n,e,r)});var de;const pe=K(r);return ue.length?J(\"div\",null,pe,J(\"footer\",{key:\"footer\"},ue.map(function(e){return J(\"div\",{id:s(e.identifier,Re),key:e.identifier},e.identifier,_e(fe(e.footnote,{inline:!0})))}))):pe}export default n=>{let{children:t=\"\",options:o}=n,a=function(e,n){if(null==e)return{};var r,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)n.indexOf(r=a[t])>=0||(o[r]=e[r]);return o}(n,r);return e.cloneElement(Je(t,o),a)};export{t as RuleType,Je as compiler,Fe as sanitizer,Re as slugify};\n//# sourceMappingURL=index.modern.js.map\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Component } from 'react';\nimport { getTemplate, getUiOptions, orderProperties, TranslatableString, ADDITIONAL_PROPERTY_FLAG, PROPERTIES_KEY, REF_KEY, ANY_OF_KEY, ONE_OF_KEY, } from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash-es/get.js';\nimport has from 'lodash-es/has.js';\nimport isObject from 'lodash-es/isObject.js';\nimport set from 'lodash-es/set.js';\nimport unset from 'lodash-es/unset.js';\n/** The `ObjectField` component is used to render a field in the schema that is of type `object`. It tracks whether an\n * additional property key was modified and what it was modified to\n *\n * @param props - The `FieldProps` for this template\n */\nclass ObjectField extends Component {\n    /** Set up the initial state */\n    state = {\n        wasPropertyKeyModified: false,\n        additionalProperties: {},\n    };\n    /** Returns a flag indicating whether the `name` field is required in the object schema\n     *\n     * @param name - The name of the field to check for required-ness\n     * @returns - True if the field `name` is required, false otherwise\n     */\n    isRequired(name) {\n        const { schema } = this.props;\n        return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n    }\n    /** Returns the `onPropertyChange` handler for the `name` field. Handles the special case where a user is attempting\n     * to clear the data for a field added as an additional property. Calls the `onChange()` handler with the updated\n     * formData.\n     *\n     * @param name - The name of the property\n     * @param addedByAdditionalProperties - Flag indicating whether this property is an additional property\n     * @returns - The onPropertyChange callback for the `name` property\n     */\n    onPropertyChange = (name, addedByAdditionalProperties = false) => {\n        return (value, newErrorSchema, id) => {\n            const { formData, onChange, errorSchema } = this.props;\n            if (value === undefined && addedByAdditionalProperties) {\n                // Don't set value = undefined for fields added by\n                // additionalProperties. Doing so removes them from the\n                // formData, which causes them to completely disappear\n                // (including the input field for the property name). Unlike\n                // fields which are \"mandated\" by the schema, these fields can\n                // be set to undefined by clicking a \"delete field\" button, so\n                // set empty values to the empty string.\n                value = '';\n            }\n            const newFormData = { ...formData, [name]: value };\n            onChange(newFormData, errorSchema &&\n                errorSchema && {\n                ...errorSchema,\n                [name]: newErrorSchema,\n            }, id);\n        };\n    };\n    /** Returns a callback to handle the onDropPropertyClick event for the given `key` which removes the old `key` data\n     * and calls the `onChange` callback with it\n     *\n     * @param key - The key for which the drop callback is desired\n     * @returns - The drop property click callback\n     */\n    onDropPropertyClick = (key) => {\n        return (event) => {\n            event.preventDefault();\n            const { onChange, formData } = this.props;\n            const copiedFormData = { ...formData };\n            unset(copiedFormData, key);\n            onChange(copiedFormData);\n        };\n    };\n    /** Computes the next available key name from the `preferredKey`, indexing through the already existing keys until one\n     * that is already not assigned is found.\n     *\n     * @param preferredKey - The preferred name of a new key\n     * @param [formData] - The form data in which to check if the desired key already exists\n     * @returns - The name of the next available key from `preferredKey`\n     */\n    getAvailableKey = (preferredKey, formData) => {\n        const { uiSchema, registry } = this.props;\n        const { duplicateKeySuffixSeparator = '-' } = getUiOptions(uiSchema, registry.globalUiOptions);\n        let index = 0;\n        let newKey = preferredKey;\n        while (has(formData, newKey)) {\n            newKey = `${preferredKey}${duplicateKeySuffixSeparator}${++index}`;\n        }\n        return newKey;\n    };\n    /** Returns a callback function that deals with the rename of a key for an additional property for a schema. That\n     * callback will attempt to rename the key and move the existing data to that key, calling `onChange` when it does.\n     *\n     * @param oldValue - The old value of a field\n     * @returns - The key change callback function\n     */\n    onKeyChange = (oldValue) => {\n        return (value, newErrorSchema) => {\n            if (oldValue === value) {\n                return;\n            }\n            const { formData, onChange, errorSchema } = this.props;\n            value = this.getAvailableKey(value, formData);\n            const newFormData = {\n                ...formData,\n            };\n            const newKeys = { [oldValue]: value };\n            const keyValues = Object.keys(newFormData).map((key) => {\n                const newKey = newKeys[key] || key;\n                return { [newKey]: newFormData[key] };\n            });\n            const renamedObj = Object.assign({}, ...keyValues);\n            this.setState({ wasPropertyKeyModified: true });\n            onChange(renamedObj, errorSchema &&\n                errorSchema && {\n                ...errorSchema,\n                [value]: newErrorSchema,\n            });\n        };\n    };\n    /** Returns a default value to be used for a new additional schema property of the given `type`\n     *\n     * @param type - The type of the new additional schema property\n     */\n    getDefaultValue(type) {\n        const { registry: { translateString }, } = this.props;\n        switch (type) {\n            case 'array':\n                return [];\n            case 'boolean':\n                return false;\n            case 'null':\n                return null;\n            case 'number':\n                return 0;\n            case 'object':\n                return {};\n            case 'string':\n            default:\n                // We don't have a datatype for some reason (perhaps additionalProperties was true)\n                return translateString(TranslatableString.NewStringDefault);\n        }\n    }\n    /** Handles the adding of a new additional property on the given `schema`. Calls the `onChange` callback once the new\n     * default data for that field has been added to the formData.\n     *\n     * @param schema - The schema element to which the new property is being added\n     */\n    handleAddClick = (schema) => () => {\n        if (!schema.additionalProperties) {\n            return;\n        }\n        const { formData, onChange, registry } = this.props;\n        const newFormData = { ...formData };\n        let type = undefined;\n        let constValue = undefined;\n        let defaultValue = undefined;\n        if (isObject(schema.additionalProperties)) {\n            type = schema.additionalProperties.type;\n            constValue = schema.additionalProperties.const;\n            defaultValue = schema.additionalProperties.default;\n            let apSchema = schema.additionalProperties;\n            if (REF_KEY in apSchema) {\n                const { schemaUtils } = registry;\n                apSchema = schemaUtils.retrieveSchema({ $ref: apSchema[REF_KEY] }, formData);\n                type = apSchema.type;\n                constValue = apSchema.const;\n                defaultValue = apSchema.default;\n            }\n            if (!type && (ANY_OF_KEY in apSchema || ONE_OF_KEY in apSchema)) {\n                type = 'object';\n            }\n        }\n        const newKey = this.getAvailableKey('newKey', newFormData);\n        const newValue = constValue ?? defaultValue ?? this.getDefaultValue(type);\n        // Cast this to make the `set` work properly\n        set(newFormData, newKey, newValue);\n        onChange(newFormData);\n    };\n    /** Renders the `ObjectField` from the given props\n     */\n    render() {\n        const { schema: rawSchema, uiSchema = {}, formData, errorSchema, idSchema, name, required = false, disabled, readonly, hideError, idPrefix, idSeparator, onBlur, onFocus, registry, title, } = this.props;\n        const { fields, formContext, schemaUtils, translateString, globalUiOptions } = registry;\n        const { SchemaField } = fields;\n        const schema = schemaUtils.retrieveSchema(rawSchema, formData);\n        const uiOptions = getUiOptions(uiSchema, globalUiOptions);\n        const { properties: schemaProperties = {} } = schema;\n        const templateTitle = uiOptions.title ?? schema.title ?? title ?? name;\n        const description = uiOptions.description ?? schema.description;\n        let orderedProperties;\n        try {\n            const properties = Object.keys(schemaProperties);\n            orderedProperties = orderProperties(properties, uiOptions.order);\n        }\n        catch (err) {\n            return (_jsxs(\"div\", { children: [_jsx(\"p\", { className: 'config-error', style: { color: 'red' }, children: _jsx(Markdown, { options: { disableParsingRawHTML: true }, children: translateString(TranslatableString.InvalidObjectField, [name || 'root', err.message]) }) }), _jsx(\"pre\", { children: JSON.stringify(schema) })] }));\n        }\n        const Template = getTemplate('ObjectFieldTemplate', registry, uiOptions);\n        const templateProps = {\n            // getDisplayLabel() always returns false for object types, so just check the `uiOptions.label`\n            title: uiOptions.label === false ? '' : templateTitle,\n            description: uiOptions.label === false ? undefined : description,\n            properties: orderedProperties.map((name) => {\n                const addedByAdditionalProperties = has(schema, [PROPERTIES_KEY, name, ADDITIONAL_PROPERTY_FLAG]);\n                const fieldUiSchema = addedByAdditionalProperties ? uiSchema.additionalProperties : uiSchema[name];\n                const hidden = getUiOptions(fieldUiSchema).widget === 'hidden';\n                const fieldIdSchema = get(idSchema, [name], {});\n                return {\n                    content: (_jsx(SchemaField, { name: name, required: this.isRequired(name), schema: get(schema, [PROPERTIES_KEY, name], {}), uiSchema: fieldUiSchema, errorSchema: get(errorSchema, name), idSchema: fieldIdSchema, idPrefix: idPrefix, idSeparator: idSeparator, formData: get(formData, name), formContext: formContext, wasPropertyKeyModified: this.state.wasPropertyKeyModified, onKeyChange: this.onKeyChange(name), onChange: this.onPropertyChange(name, addedByAdditionalProperties), onBlur: onBlur, onFocus: onFocus, registry: registry, disabled: disabled, readonly: readonly, hideError: hideError, onDropPropertyClick: this.onDropPropertyClick }, name)),\n                    name,\n                    readonly,\n                    disabled,\n                    required,\n                    hidden,\n                };\n            }),\n            readonly,\n            disabled,\n            required,\n            idSchema,\n            uiSchema,\n            errorSchema,\n            schema,\n            formData,\n            formContext,\n            registry,\n        };\n        return _jsx(Template, { ...templateProps, onAddClick: this.handleAddClick });\n    }\n}\nexport default ObjectField;\n","import baseUnset from './_baseUnset.js';\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n  return object == null ? true : baseUnset(object, path);\n}\n\nexport default unset;\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, Component } from 'react';\nimport { ADDITIONAL_PROPERTY_FLAG, deepEquals, descriptionId, getSchemaType, getTemplate, getUiOptions, ID_KEY, mergeObjects, TranslatableString, UI_OPTIONS_KEY, } from '@rjsf/utils';\nimport isObject from 'lodash-es/isObject.js';\nimport omit from 'lodash-es/omit.js';\nimport Markdown from 'markdown-to-jsx';\n/** The map of component type to FieldName */\nconst COMPONENT_TYPES = {\n    array: 'ArrayField',\n    boolean: 'BooleanField',\n    integer: 'NumberField',\n    number: 'NumberField',\n    object: 'ObjectField',\n    string: 'StringField',\n    null: 'NullField',\n};\n/** Computes and returns which `Field` implementation to return in order to render the field represented by the\n * `schema`. The `uiOptions` are used to alter what potential `Field` implementation is actually returned. If no\n * appropriate `Field` implementation can be found then a wrapper around `UnsupportedFieldTemplate` is used.\n *\n * @param schema - The schema from which to obtain the type\n * @param uiOptions - The UI Options that may affect the component decision\n * @param idSchema - The id that is passed to the `UnsupportedFieldTemplate`\n * @param registry - The registry from which fields and templates are obtained\n * @returns - The `Field` component that is used to render the actual field data\n */\nfunction getFieldComponent(schema, uiOptions, idSchema, registry) {\n    const field = uiOptions.field;\n    const { fields, translateString } = registry;\n    if (typeof field === 'function') {\n        return field;\n    }\n    if (typeof field === 'string' && field in fields) {\n        return fields[field];\n    }\n    const schemaType = getSchemaType(schema);\n    const type = Array.isArray(schemaType) ? schemaType[0] : schemaType || '';\n    const schemaId = schema.$id;\n    let componentName = COMPONENT_TYPES[type];\n    if (schemaId && schemaId in fields) {\n        componentName = schemaId;\n    }\n    // If the type is not defined and the schema uses 'anyOf' or 'oneOf', don't\n    // render a field and let the MultiSchemaField component handle the form display\n    if (!componentName && (schema.anyOf || schema.oneOf)) {\n        return () => null;\n    }\n    return componentName in fields\n        ? fields[componentName]\n        : () => {\n            const UnsupportedFieldTemplate = getTemplate('UnsupportedFieldTemplate', registry, uiOptions);\n            return (_jsx(UnsupportedFieldTemplate, { schema: schema, idSchema: idSchema, reason: translateString(TranslatableString.UnknownFieldType, [String(schema.type)]), registry: registry }));\n        };\n}\n/** The `SchemaFieldRender` component is the work-horse of react-jsonschema-form, determining what kind of real field to\n * render based on the `schema`, `uiSchema` and all the other props. It also deals with rendering the `anyOf` and\n * `oneOf` fields.\n *\n * @param props - The `FieldProps` for this component\n */\nfunction SchemaFieldRender(props) {\n    const { schema: _schema, idSchema: _idSchema, uiSchema, formData, errorSchema, idPrefix, idSeparator, name, onChange, onKeyChange, onDropPropertyClick, required, registry, wasPropertyKeyModified = false, } = props;\n    const { formContext, schemaUtils, globalUiOptions } = registry;\n    const uiOptions = getUiOptions(uiSchema, globalUiOptions);\n    const FieldTemplate = getTemplate('FieldTemplate', registry, uiOptions);\n    const DescriptionFieldTemplate = getTemplate('DescriptionFieldTemplate', registry, uiOptions);\n    const FieldHelpTemplate = getTemplate('FieldHelpTemplate', registry, uiOptions);\n    const FieldErrorTemplate = getTemplate('FieldErrorTemplate', registry, uiOptions);\n    const schema = schemaUtils.retrieveSchema(_schema, formData);\n    const fieldId = _idSchema[ID_KEY];\n    const idSchema = mergeObjects(schemaUtils.toIdSchema(schema, fieldId, formData, idPrefix, idSeparator), _idSchema);\n    /** Intermediary `onChange` handler for field components that will inject the `id` of the current field into the\n     * `onChange` chain if it is not already being provided from a deeper level in the hierarchy\n     */\n    const handleFieldComponentChange = useCallback((formData, newErrorSchema, id) => {\n        const theId = id || fieldId;\n        return onChange(formData, newErrorSchema, theId);\n    }, [fieldId, onChange]);\n    const FieldComponent = getFieldComponent(schema, uiOptions, idSchema, registry);\n    const disabled = Boolean(uiOptions.disabled ?? props.disabled);\n    const readonly = Boolean(uiOptions.readonly ?? (props.readonly || props.schema.readOnly || schema.readOnly));\n    const uiSchemaHideError = uiOptions.hideError;\n    // Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children\n    const hideError = uiSchemaHideError === undefined ? props.hideError : Boolean(uiSchemaHideError);\n    const autofocus = Boolean(uiOptions.autofocus ?? props.autofocus);\n    if (Object.keys(schema).length === 0) {\n        return null;\n    }\n    const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n    const { __errors, ...fieldErrorSchema } = errorSchema || {};\n    // See #439: uiSchema: Don't pass consumed class names or style to child components\n    const fieldUiSchema = omit(uiSchema, ['ui:classNames', 'classNames', 'ui:style']);\n    if (UI_OPTIONS_KEY in fieldUiSchema) {\n        fieldUiSchema[UI_OPTIONS_KEY] = omit(fieldUiSchema[UI_OPTIONS_KEY], ['classNames', 'style']);\n    }\n    const field = (_jsx(FieldComponent, { ...props, onChange: handleFieldComponentChange, idSchema: idSchema, schema: schema, uiSchema: fieldUiSchema, disabled: disabled, readonly: readonly, hideError: hideError, autofocus: autofocus, errorSchema: fieldErrorSchema, formContext: formContext, rawErrors: __errors }));\n    const id = idSchema[ID_KEY];\n    // If this schema has a title defined, but the user has set a new key/label, retain their input.\n    let label;\n    if (wasPropertyKeyModified) {\n        label = name;\n    }\n    else {\n        label =\n            ADDITIONAL_PROPERTY_FLAG in schema\n                ? name\n                : uiOptions.title || props.schema.title || schema.title || props.title || name;\n    }\n    const description = uiOptions.description || props.schema.description || schema.description || '';\n    const richDescription = uiOptions.enableMarkdownInDescription ? (_jsx(Markdown, { options: { disableParsingRawHTML: true }, children: description })) : (description);\n    const help = uiOptions.help;\n    const hidden = uiOptions.widget === 'hidden';\n    const classNames = ['form-group', 'field', `field-${getSchemaType(schema)}`];\n    if (!hideError && __errors && __errors.length > 0) {\n        classNames.push('field-error has-error has-danger');\n    }\n    if (uiSchema?.classNames) {\n        if (process.env.NODE_ENV !== 'production') {\n            console.warn(\"'uiSchema.classNames' is deprecated and may be removed in a major release; Use 'ui:classNames' instead.\");\n        }\n        classNames.push(uiSchema.classNames);\n    }\n    if (uiOptions.classNames) {\n        classNames.push(uiOptions.classNames);\n    }\n    const helpComponent = (_jsx(FieldHelpTemplate, { help: help, idSchema: idSchema, schema: schema, uiSchema: uiSchema, hasErrors: !hideError && __errors && __errors.length > 0, registry: registry }));\n    /*\n     * AnyOf/OneOf errors handled by child schema\n     * unless it can be rendered as select control\n     */\n    const errorsComponent = hideError || ((schema.anyOf || schema.oneOf) && !schemaUtils.isSelect(schema)) ? undefined : (_jsx(FieldErrorTemplate, { errors: __errors, errorSchema: errorSchema, idSchema: idSchema, schema: schema, uiSchema: uiSchema, registry: registry }));\n    const fieldProps = {\n        description: (_jsx(DescriptionFieldTemplate, { id: descriptionId(id), description: richDescription, schema: schema, uiSchema: uiSchema, registry: registry })),\n        rawDescription: description,\n        help: helpComponent,\n        rawHelp: typeof help === 'string' ? help : undefined,\n        errors: errorsComponent,\n        rawErrors: hideError ? undefined : __errors,\n        id,\n        label,\n        hidden,\n        onChange,\n        onKeyChange,\n        onDropPropertyClick,\n        required,\n        disabled,\n        readonly,\n        hideError,\n        displayLabel,\n        classNames: classNames.join(' ').trim(),\n        style: uiOptions.style,\n        formContext,\n        formData,\n        schema,\n        uiSchema,\n        registry,\n    };\n    const _AnyOfField = registry.fields.AnyOfField;\n    const _OneOfField = registry.fields.OneOfField;\n    const isReplacingAnyOrOneOf = uiSchema?.['ui:field'] && uiSchema?.['ui:fieldReplacesAnyOrOneOf'] === true;\n    return (_jsx(FieldTemplate, { ...fieldProps, children: _jsxs(_Fragment, { children: [field, schema.anyOf && !isReplacingAnyOrOneOf && !schemaUtils.isSelect(schema) && (_jsx(_AnyOfField, { name: name, disabled: disabled, readonly: readonly, hideError: hideError, errorSchema: errorSchema, formData: formData, formContext: formContext, idPrefix: idPrefix, idSchema: idSchema, idSeparator: idSeparator, onBlur: props.onBlur, onChange: props.onChange, onFocus: props.onFocus, options: schema.anyOf.map((_schema) => schemaUtils.retrieveSchema(isObject(_schema) ? _schema : {}, formData)), registry: registry, required: required, schema: schema, uiSchema: uiSchema })), schema.oneOf && !isReplacingAnyOrOneOf && !schemaUtils.isSelect(schema) && (_jsx(_OneOfField, { name: name, disabled: disabled, readonly: readonly, hideError: hideError, errorSchema: errorSchema, formData: formData, formContext: formContext, idPrefix: idPrefix, idSchema: idSchema, idSeparator: idSeparator, onBlur: props.onBlur, onChange: props.onChange, onFocus: props.onFocus, options: schema.oneOf.map((_schema) => schemaUtils.retrieveSchema(isObject(_schema) ? _schema : {}, formData)), registry: registry, required: required, schema: schema, uiSchema: uiSchema }))] }) }));\n}\n/** The `SchemaField` component determines whether it is necessary to rerender the component based on any props changes\n * and if so, calls the `SchemaFieldRender` component with the props.\n */\nclass SchemaField extends Component {\n    shouldComponentUpdate(nextProps) {\n        return !deepEquals(this.props, nextProps);\n    }\n    render() {\n        return _jsx(SchemaFieldRender, { ...this.props });\n    }\n}\nexport default SchemaField;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getWidget, getUiOptions, optionsList, hasWidget, } from '@rjsf/utils';\n/** The `StringField` component is used to render a schema field that represents a string type\n *\n * @param props - The `FieldProps` for this template\n */\nfunction StringField(props) {\n    const { schema, name, uiSchema, idSchema, formData, required, disabled = false, readonly = false, autofocus = false, onChange, onBlur, onFocus, registry, rawErrors, hideError, } = props;\n    const { title, format } = schema;\n    const { widgets, formContext, schemaUtils, globalUiOptions } = registry;\n    const enumOptions = schemaUtils.isSelect(schema) ? optionsList(schema, uiSchema) : undefined;\n    let defaultWidget = enumOptions ? 'select' : 'text';\n    if (format && hasWidget(schema, format, widgets)) {\n        defaultWidget = format;\n    }\n    const { widget = defaultWidget, placeholder = '', title: uiTitle, ...options } = getUiOptions(uiSchema);\n    const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);\n    const label = uiTitle ?? title ?? name;\n    const Widget = getWidget(schema, widget, widgets);\n    return (_jsx(Widget, { options: { ...options, enumOptions }, schema: schema, uiSchema: uiSchema, id: idSchema.$id, name: name, label: label, hideLabel: !displayLabel, hideError: hideError, value: formData, onChange: onChange, onBlur: onBlur, onFocus: onFocus, required: required, disabled: disabled, readonly: readonly, formContext: formContext, autofocus: autofocus, registry: registry, placeholder: placeholder, rawErrors: rawErrors }));\n}\nexport default StringField;\n","import { useEffect } from 'react';\n/** The `NullField` component is used to render a field in the schema is null. It also ensures that the `formData` is\n * also set to null if it has no value.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction NullField(props) {\n    const { formData, onChange } = props;\n    useEffect(() => {\n        if (formData === undefined) {\n            onChange(null);\n        }\n    }, [formData, onChange]);\n    return null;\n}\nexport default NullField;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { descriptionId, getTemplate, getUiOptions, } from '@rjsf/utils';\n/** The `ArrayFieldDescriptionTemplate` component renders a `DescriptionFieldTemplate` with an `id` derived from\n * the `idSchema`.\n *\n * @param props - The `ArrayFieldDescriptionProps` for the component\n */\nexport default function ArrayFieldDescriptionTemplate(props) {\n    const { idSchema, description, registry, schema, uiSchema } = props;\n    const options = getUiOptions(uiSchema, registry.globalUiOptions);\n    const { label: displayLabel = true } = options;\n    if (!description || !displayLabel) {\n        return null;\n    }\n    const DescriptionFieldTemplate = getTemplate('DescriptionFieldTemplate', registry, options);\n    return (_jsx(DescriptionFieldTemplate, { id: descriptionId(idSchema), description: description, schema: schema, uiSchema: uiSchema, registry: registry }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/** The `ArrayFieldItemTemplate` component is the template used to render an items of an array.\n *\n * @param props - The `ArrayFieldTemplateItemType` props for the component\n */\nexport default function ArrayFieldItemTemplate(props) {\n    const { children, className, disabled, hasToolbar, hasMoveDown, hasMoveUp, hasRemove, hasCopy, index, onCopyIndexClick, onDropIndexClick, onReorderClick, readonly, registry, uiSchema, } = props;\n    const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;\n    const btnStyle = {\n        flex: 1,\n        paddingLeft: 6,\n        paddingRight: 6,\n        fontWeight: 'bold',\n    };\n    return (_jsxs(\"div\", { className: className, children: [_jsx(\"div\", { className: hasToolbar ? 'col-xs-9' : 'col-xs-12', children: children }), hasToolbar && (_jsx(\"div\", { className: 'col-xs-3 array-item-toolbox', children: _jsxs(\"div\", { className: 'btn-group', style: {\n                        display: 'flex',\n                        justifyContent: 'space-around',\n                    }, children: [(hasMoveUp || hasMoveDown) && (_jsx(MoveUpButton, { style: btnStyle, disabled: disabled || readonly || !hasMoveUp, onClick: onReorderClick(index, index - 1), uiSchema: uiSchema, registry: registry })), (hasMoveUp || hasMoveDown) && (_jsx(MoveDownButton, { style: btnStyle, disabled: disabled || readonly || !hasMoveDown, onClick: onReorderClick(index, index + 1), uiSchema: uiSchema, registry: registry })), hasCopy && (_jsx(CopyButton, { style: btnStyle, disabled: disabled || readonly, onClick: onCopyIndexClick(index), uiSchema: uiSchema, registry: registry })), hasRemove && (_jsx(RemoveButton, { style: btnStyle, disabled: disabled || readonly, onClick: onDropIndexClick(index), uiSchema: uiSchema, registry: registry }))] }) }))] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { getTemplate, getUiOptions, } from '@rjsf/utils';\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * @param props - The `ArrayFieldTemplateItemType` props for the component\n */\nexport default function ArrayFieldTemplate(props) {\n    const { canAdd, className, disabled, idSchema, uiSchema, items, onAddClick, readonly, registry, required, schema, title, } = props;\n    const uiOptions = getUiOptions(uiSchema);\n    const ArrayFieldDescriptionTemplate = getTemplate('ArrayFieldDescriptionTemplate', registry, uiOptions);\n    const ArrayFieldItemTemplate = getTemplate('ArrayFieldItemTemplate', registry, uiOptions);\n    const ArrayFieldTitleTemplate = getTemplate('ArrayFieldTitleTemplate', registry, uiOptions);\n    // Button templates are not overridden in the uiSchema\n    const { ButtonTemplates: { AddButton }, } = registry.templates;\n    return (_jsxs(\"fieldset\", { className: className, id: idSchema.$id, children: [_jsx(ArrayFieldTitleTemplate, { idSchema: idSchema, title: uiOptions.title || title, required: required, schema: schema, uiSchema: uiSchema, registry: registry }), _jsx(ArrayFieldDescriptionTemplate, { idSchema: idSchema, description: uiOptions.description || schema.description, schema: schema, uiSchema: uiSchema, registry: registry }), _jsx(\"div\", { className: 'row array-item-list', children: items &&\n                    items.map(({ key, ...itemProps }) => (_jsx(ArrayFieldItemTemplate, { ...itemProps }, key))) }), canAdd && (_jsx(AddButton, { className: 'array-item-add', onClick: onAddClick, disabled: disabled || readonly, uiSchema: uiSchema, registry: registry }))] }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate, getUiOptions, titleId, } from '@rjsf/utils';\n/** The `ArrayFieldTitleTemplate` component renders a `TitleFieldTemplate` with an `id` derived from\n * the `idSchema`.\n *\n * @param props - The `ArrayFieldTitleProps` for the component\n */\nexport default function ArrayFieldTitleTemplate(props) {\n    const { idSchema, title, schema, uiSchema, required, registry } = props;\n    const options = getUiOptions(uiSchema, registry.globalUiOptions);\n    const { label: displayLabel = true } = options;\n    if (!title || !displayLabel) {\n        return null;\n    }\n    const TitleFieldTemplate = getTemplate('TitleFieldTemplate', registry, options);\n    return (_jsx(TitleFieldTemplate, { id: titleId(idSchema), title: title, required: required, schema: schema, uiSchema: uiSchema, registry: registry }));\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds, examplesId, getInputProps, } from '@rjsf/utils';\n/** The `BaseInputTemplate` is the template to use to render the basic `<input>` component for the `core` theme.\n * It is used as the template for rendering many of the <input> based widgets that differ by `type` and callbacks only.\n * It can be customized/overridden for other themes or individual implementations as needed.\n *\n * @param props - The `WidgetProps` for this template\n */\nexport default function BaseInputTemplate(props) {\n    const { id, name, // remove this from ...rest\n    value, readonly, disabled, autofocus, onBlur, onFocus, onChange, onChangeOverride, options, schema, uiSchema, formContext, registry, rawErrors, type, hideLabel, // remove this from ...rest\n    hideError, // remove this from ...rest\n    ...rest } = props;\n    // Note: since React 15.2.0 we can't forward unknown element attributes, so we\n    // exclude the \"options\" and \"schema\" ones here.\n    if (!id) {\n        console.log('No id for', props);\n        throw new Error(`no id for props ${JSON.stringify(props)}`);\n    }\n    const inputProps = {\n        ...rest,\n        ...getInputProps(schema, type, options),\n    };\n    let inputValue;\n    if (inputProps.type === 'number' || inputProps.type === 'integer') {\n        inputValue = value || value === 0 ? value : '';\n    }\n    else {\n        inputValue = value == null ? '' : value;\n    }\n    const _onChange = useCallback(({ target: { value } }) => onChange(value === '' ? options.emptyValue : value), [onChange, options]);\n    const _onBlur = useCallback(({ target }) => onBlur(id, target && target.value), [onBlur, id]);\n    const _onFocus = useCallback(({ target }) => onFocus(id, target && target.value), [onFocus, id]);\n    return (_jsxs(_Fragment, { children: [_jsx(\"input\", { id: id, name: id, className: 'form-control', readOnly: readonly, disabled: disabled, autoFocus: autofocus, value: inputValue, ...inputProps, list: schema.examples ? examplesId(id) : undefined, onChange: onChangeOverride || _onChange, onBlur: _onBlur, onFocus: _onFocus, \"aria-describedby\": ariaDescribedByIds(id, !!schema.examples) }), Array.isArray(schema.examples) && (_jsx(\"datalist\", { id: examplesId(id), children: schema.examples\n                    .concat(schema.default && !schema.examples.includes(schema.default) ? [schema.default] : [])\n                    .map((example) => {\n                    return _jsx(\"option\", { value: example }, example);\n                }) }, `datalist_${id}`))] }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getSubmitButtonOptions } from '@rjsf/utils';\n/** The `SubmitButton` renders a button that represent the `Submit` action on a form\n */\nexport default function SubmitButton({ uiSchema }) {\n    const { submitText, norender, props: submitButtonProps = {} } = getSubmitButtonOptions(uiSchema);\n    if (norender) {\n        return null;\n    }\n    return (_jsx(\"div\", { children: _jsx(\"button\", { type: 'submit', ...submitButtonProps, className: `btn btn-info ${submitButtonProps.className || ''}`, children: submitText }) }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TranslatableString } from '@rjsf/utils';\nexport default function IconButton(props) {\n    const { iconType = 'default', icon, className, uiSchema, registry, ...otherProps } = props;\n    return (_jsx(\"button\", { type: 'button', className: `btn btn-${iconType} ${className}`, ...otherProps, children: _jsx(\"i\", { className: `glyphicon glyphicon-${icon}` }) }));\n}\nexport function CopyButton(props) {\n    const { registry: { translateString }, } = props;\n    return (_jsx(IconButton, { title: translateString(TranslatableString.CopyButton), className: 'array-item-copy', ...props, icon: 'copy' }));\n}\nexport function MoveDownButton(props) {\n    const { registry: { translateString }, } = props;\n    return (_jsx(IconButton, { title: translateString(TranslatableString.MoveDownButton), className: 'array-item-move-down', ...props, icon: 'arrow-down' }));\n}\nexport function MoveUpButton(props) {\n    const { registry: { translateString }, } = props;\n    return (_jsx(IconButton, { title: translateString(TranslatableString.MoveUpButton), className: 'array-item-move-up', ...props, icon: 'arrow-up' }));\n}\nexport function RemoveButton(props) {\n    const { registry: { translateString }, } = props;\n    return (_jsx(IconButton, { title: translateString(TranslatableString.RemoveButton), className: 'array-item-remove', ...props, iconType: 'danger', icon: 'remove' }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TranslatableString } from '@rjsf/utils';\nimport IconButton from './IconButton.js';\n/** The `AddButton` renders a button that represent the `Add` action on a form\n */\nexport default function AddButton({ className, onClick, disabled, registry, }) {\n    const { translateString } = registry;\n    return (_jsx(\"div\", { className: 'row', children: _jsx(\"p\", { className: `col-xs-3 col-xs-offset-9 text-right ${className}`, children: _jsx(IconButton, { iconType: 'info', icon: 'plus', className: 'btn-add col-xs-12', title: translateString(TranslatableString.AddButton), onClick: onClick, disabled: disabled, registry: registry }) }) }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n/** The `DescriptionField` is the template to use to render the description of a field\n *\n * @param props - The `DescriptionFieldProps` for this component\n */\nexport default function DescriptionField(props) {\n    const { id, description } = props;\n    if (!description) {\n        return null;\n    }\n    if (typeof description === 'string') {\n        return (_jsx(\"p\", { id: id, className: 'field-description', children: description }));\n    }\n    else {\n        return (_jsx(\"div\", { id: id, className: 'field-description', children: description }));\n    }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TranslatableString, } from '@rjsf/utils';\n/** The `ErrorList` component is the template that renders the all the errors associated with the fields in the `Form`\n *\n * @param props - The `ErrorListProps` for this component\n */\nexport default function ErrorList({ errors, registry, }) {\n    const { translateString } = registry;\n    return (_jsxs(\"div\", { className: 'panel panel-danger errors', children: [_jsx(\"div\", { className: 'panel-heading', children: _jsx(\"h3\", { className: 'panel-title', children: translateString(TranslatableString.ErrorsLabel) }) }), _jsx(\"ul\", { className: 'list-group', children: errors.map((error, i) => {\n                    return (_jsx(\"li\", { className: 'list-group-item text-danger', children: error.stack }, i));\n                }) })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst REQUIRED_FIELD_SYMBOL = '*';\n/** Renders a label for a field\n *\n * @param props - The `LabelProps` for this component\n */\nexport default function Label(props) {\n    const { label, required, id } = props;\n    if (!label) {\n        return null;\n    }\n    return (_jsxs(\"label\", { className: 'control-label', htmlFor: id, children: [label, required && _jsx(\"span\", { className: 'required', children: REQUIRED_FIELD_SYMBOL })] }));\n}\n","import FieldTemplate from './FieldTemplate.js';\nexport default FieldTemplate;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { getTemplate, getUiOptions, } from '@rjsf/utils';\nimport Label from './Label.js';\n/** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field\n * content, (label, description, children, errors and help) inside of a `WrapIfAdditional` component.\n *\n * @param props - The `FieldTemplateProps` for this component\n */\nexport default function FieldTemplate(props) {\n    const { id, label, children, errors, help, description, hidden, required, displayLabel, registry, uiSchema } = props;\n    const uiOptions = getUiOptions(uiSchema);\n    const WrapIfAdditionalTemplate = getTemplate('WrapIfAdditionalTemplate', registry, uiOptions);\n    if (hidden) {\n        return _jsx(\"div\", { className: 'hidden', children: children });\n    }\n    return (_jsxs(WrapIfAdditionalTemplate, { ...props, children: [displayLabel && _jsx(Label, { label: label, required: required, id: id }), displayLabel && description ? description : null, children, errors, help] }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { errorId } from '@rjsf/utils';\n/** The `FieldErrorTemplate` component renders the errors local to the particular field\n *\n * @param props - The `FieldErrorProps` for the errors being rendered\n */\nexport default function FieldErrorTemplate(props) {\n    const { errors = [], idSchema } = props;\n    if (errors.length === 0) {\n        return null;\n    }\n    const id = errorId(idSchema);\n    return (_jsx(\"div\", { children: _jsx(\"ul\", { id: id, className: 'error-detail bs-callout bs-callout-info', children: errors\n                .filter((elem) => !!elem)\n                .map((error, index) => {\n                return (_jsx(\"li\", { className: 'text-danger', children: error }, index));\n            }) }) }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { helpId } from '@rjsf/utils';\n/** The `FieldHelpTemplate` component renders any help desired for a field\n *\n * @param props - The `FieldHelpProps` to be rendered\n */\nexport default function FieldHelpTemplate(props) {\n    const { idSchema, help } = props;\n    if (!help) {\n        return null;\n    }\n    const id = helpId(idSchema);\n    if (typeof help === 'string') {\n        return (_jsx(\"p\", { id: id, className: 'help-block', children: help }));\n    }\n    return (_jsx(\"div\", { id: id, className: 'help-block', children: help }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { canExpand, descriptionId, getTemplate, getUiOptions, titleId, } from '@rjsf/utils';\n/** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the\n * title and description if available. If the object is expandable, then an `AddButton` is also rendered after all\n * the properties.\n *\n * @param props - The `ObjectFieldTemplateProps` for this component\n */\nexport default function ObjectFieldTemplate(props) {\n    const { description, disabled, formData, idSchema, onAddClick, properties, readonly, registry, required, schema, title, uiSchema, } = props;\n    const options = getUiOptions(uiSchema);\n    const TitleFieldTemplate = getTemplate('TitleFieldTemplate', registry, options);\n    const DescriptionFieldTemplate = getTemplate('DescriptionFieldTemplate', registry, options);\n    // Button templates are not overridden in the uiSchema\n    const { ButtonTemplates: { AddButton }, } = registry.templates;\n    return (_jsxs(\"fieldset\", { id: idSchema.$id, children: [title && (_jsx(TitleFieldTemplate, { id: titleId(idSchema), title: title, required: required, schema: schema, uiSchema: uiSchema, registry: registry })), description && (_jsx(DescriptionFieldTemplate, { id: descriptionId(idSchema), description: description, schema: schema, uiSchema: uiSchema, registry: registry })), properties.map((prop) => prop.content), canExpand(schema, uiSchema, formData) && (_jsx(AddButton, { className: 'object-property-expand', onClick: onAddClick(schema), disabled: disabled || readonly, uiSchema: uiSchema, registry: registry }))] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst REQUIRED_FIELD_SYMBOL = '*';\n/** The `TitleField` is the template to use to render the title of a field\n *\n * @param props - The `TitleFieldProps` for this component\n */\nexport default function TitleField(props) {\n    const { id, title, required } = props;\n    return (_jsxs(\"legend\", { id: id, children: [title, required && _jsx(\"span\", { className: 'required', children: REQUIRED_FIELD_SYMBOL })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TranslatableString } from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\n/** The `UnsupportedField` component is used to render a field in the schema is one that is not supported by\n * react-jsonschema-form.\n *\n * @param props - The `FieldProps` for this template\n */\nfunction UnsupportedField(props) {\n    const { schema, idSchema, reason, registry } = props;\n    const { translateString } = registry;\n    let translateEnum = TranslatableString.UnsupportedField;\n    const translateParams = [];\n    if (idSchema && idSchema.$id) {\n        translateEnum = TranslatableString.UnsupportedFieldWithId;\n        translateParams.push(idSchema.$id);\n    }\n    if (reason) {\n        translateEnum =\n            translateEnum === TranslatableString.UnsupportedField\n                ? TranslatableString.UnsupportedFieldWithReason\n                : TranslatableString.UnsupportedFieldWithIdAndReason;\n        translateParams.push(reason);\n    }\n    return (_jsxs(\"div\", { className: 'unsupported-field', children: [_jsx(\"p\", { children: _jsx(Markdown, { options: { disableParsingRawHTML: true }, children: translateString(translateEnum, translateParams) }) }), schema && _jsx(\"pre\", { children: JSON.stringify(schema, null, 2) })] }));\n}\nexport default UnsupportedField;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ADDITIONAL_PROPERTY_FLAG, TranslatableString, } from '@rjsf/utils';\nimport Label from './FieldTemplate/Label.js';\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function WrapIfAdditionalTemplate(props) {\n    const { id, classNames, style, disabled, label, onKeyChange, onDropPropertyClick, readonly, required, schema, children, uiSchema, registry, } = props;\n    const { templates, translateString } = registry;\n    // Button templates are not overridden in the uiSchema\n    const { RemoveButton } = templates.ButtonTemplates;\n    const keyLabel = translateString(TranslatableString.KeyLabel, [label]);\n    const additional = ADDITIONAL_PROPERTY_FLAG in schema;\n    if (!additional) {\n        return (_jsx(\"div\", { className: classNames, style: style, children: children }));\n    }\n    return (_jsx(\"div\", { className: classNames, style: style, children: _jsxs(\"div\", { className: 'row', children: [_jsx(\"div\", { className: 'col-xs-5 form-additional', children: _jsxs(\"div\", { className: 'form-group', children: [_jsx(Label, { label: keyLabel, required: required, id: `${id}-key` }), _jsx(\"input\", { className: 'form-control', type: 'text', id: `${id}-key`, onBlur: ({ target }) => onKeyChange(target && target.value), defaultValue: label })] }) }), _jsx(\"div\", { className: 'form-additional form-group col-xs-5', children: children }), _jsx(\"div\", { className: 'col-xs-2', children: _jsx(RemoveButton, { className: 'array-item-remove btn-block', style: { border: '0' }, disabled: disabled || readonly, onClick: onDropPropertyClick(label), uiSchema: uiSchema, registry: registry }) })] }) }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useReducer, useState } from 'react';\nimport { ariaDescribedByIds, dateRangeOptions, parseDateString, toDateString, TranslatableString, getDateElementProps, } from '@rjsf/utils';\nfunction readyForChange(state) {\n    return Object.values(state).every((value) => value !== -1);\n}\nfunction DateElement({ type, range, value, select, rootId, name, disabled, readonly, autofocus, registry, onBlur, onFocus, }) {\n    const id = rootId + '_' + type;\n    const { SelectWidget } = registry.widgets;\n    return (_jsx(SelectWidget, { schema: { type: 'integer' }, id: id, name: name, className: 'form-control', options: { enumOptions: dateRangeOptions(range[0], range[1]) }, placeholder: type, value: value, disabled: disabled, readonly: readonly, autofocus: autofocus, onChange: (value) => select(type, value), onBlur: onBlur, onFocus: onFocus, registry: registry, label: '', \"aria-describedby\": ariaDescribedByIds(rootId) }));\n}\n/** The `AltDateWidget` is an alternative widget for rendering date properties.\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateWidget({ time = false, disabled = false, readonly = false, autofocus = false, options, id, name, registry, onBlur, onFocus, onChange, value, }) {\n    const { translateString } = registry;\n    const [lastValue, setLastValue] = useState(value);\n    const [state, setState] = useReducer((state, action) => {\n        return { ...state, ...action };\n    }, parseDateString(value, time));\n    useEffect(() => {\n        const stateValue = toDateString(state, time);\n        if (readyForChange(state) && stateValue !== value) {\n            // The user changed the date to a new valid data via the comboboxes, so call onChange\n            onChange(stateValue);\n        }\n        else if (lastValue !== value) {\n            // We got a new value in the props\n            setLastValue(value);\n            setState(parseDateString(value, time));\n        }\n    }, [time, value, onChange, state, lastValue]);\n    const handleChange = useCallback((property, value) => {\n        setState({ [property]: value });\n    }, []);\n    const handleSetNow = useCallback((event) => {\n        event.preventDefault();\n        if (disabled || readonly) {\n            return;\n        }\n        const nextState = parseDateString(new Date().toJSON(), time);\n        onChange(toDateString(nextState, time));\n    }, [disabled, readonly, time]);\n    const handleClear = useCallback((event) => {\n        event.preventDefault();\n        if (disabled || readonly) {\n            return;\n        }\n        onChange(undefined);\n    }, [disabled, readonly, onChange]);\n    return (_jsxs(\"ul\", { className: 'list-inline', children: [getDateElementProps(state, time, options.yearsRange, options.format).map((elemProps, i) => (_jsx(\"li\", { className: 'list-inline-item', children: _jsx(DateElement, { rootId: id, name: name, select: handleChange, ...elemProps, disabled: disabled, readonly: readonly, registry: registry, onBlur: onBlur, onFocus: onFocus, autofocus: autofocus && i === 0 }) }, i))), (options.hideNowButton !== 'undefined' ? !options.hideNowButton : true) && (_jsx(\"li\", { className: 'list-inline-item', children: _jsx(\"a\", { href: '#', className: 'btn btn-info btn-now', onClick: handleSetNow, children: translateString(TranslatableString.NowLabel) }) })), (options.hideClearButton !== 'undefined' ? !options.hideClearButton : true) && (_jsx(\"li\", { className: 'list-inline-item', children: _jsx(\"a\", { href: '#', className: 'btn btn-warning btn-clear', onClick: handleClear, children: translateString(TranslatableString.ClearLabel) }) }))] }));\n}\nexport default AltDateWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n/** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.\n *  It uses the AltDateWidget for rendering, with the `time` prop set to true by default.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction AltDateTimeWidget({ time = true, ...props }) {\n    const { AltDateWidget } = props.registry.widgets;\n    return _jsx(AltDateWidget, { time: time, ...props });\n}\nexport default AltDateTimeWidget;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds, descriptionId, getTemplate, labelValue, schemaRequiresTrueValue, } from '@rjsf/utils';\n/** The `CheckBoxWidget` is a widget for rendering boolean properties.\n *  It is typically used to represent a boolean.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxWidget({ schema, uiSchema, options, id, value, disabled, readonly, label, hideLabel, autofocus = false, onBlur, onFocus, onChange, registry, }) {\n    const DescriptionFieldTemplate = getTemplate('DescriptionFieldTemplate', registry, options);\n    // Because an unchecked checkbox will cause html5 validation to fail, only add\n    // the \"required\" attribute if the field value must be \"true\", due to the\n    // \"const\" or \"enum\" keywords\n    const required = schemaRequiresTrueValue(schema);\n    const handleChange = useCallback((event) => onChange(event.target.checked), [onChange]);\n    const handleBlur = useCallback((event) => onBlur(id, event.target.checked), [onBlur, id]);\n    const handleFocus = useCallback((event) => onFocus(id, event.target.checked), [onFocus, id]);\n    const description = options.description ?? schema.description;\n    return (_jsxs(\"div\", { className: `checkbox ${disabled || readonly ? 'disabled' : ''}`, children: [!hideLabel && !!description && (_jsx(DescriptionFieldTemplate, { id: descriptionId(id), description: description, schema: schema, uiSchema: uiSchema, registry: registry })), _jsxs(\"label\", { children: [_jsx(\"input\", { type: 'checkbox', id: id, name: id, checked: typeof value === 'undefined' ? false : value, required: required, disabled: disabled || readonly, autoFocus: autofocus, onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, \"aria-describedby\": ariaDescribedByIds(id) }), labelValue(_jsx(\"span\", { children: label }), hideLabel)] })] }));\n}\nexport default CheckboxWidget;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds, enumOptionsDeselectValue, enumOptionsIsSelected, enumOptionsSelectValue, enumOptionsValueForIndex, optionId, } from '@rjsf/utils';\n/** The `CheckboxesWidget` is a widget for rendering checkbox groups.\n *  It is typically used to represent an array of enums.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction CheckboxesWidget({ id, disabled, options: { inline = false, enumOptions, enumDisabled, emptyValue }, value, autofocus = false, readonly, onChange, onBlur, onFocus, }) {\n    const checkboxesValues = Array.isArray(value) ? value : [value];\n    const handleBlur = useCallback(({ target }) => onBlur(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue)), [onBlur, id]);\n    const handleFocus = useCallback(({ target }) => onFocus(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue)), [onFocus, id]);\n    return (_jsx(\"div\", { className: 'checkboxes', id: id, children: Array.isArray(enumOptions) &&\n            enumOptions.map((option, index) => {\n                const checked = enumOptionsIsSelected(option.value, checkboxesValues);\n                const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n                const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n                const handleChange = (event) => {\n                    if (event.target.checked) {\n                        onChange(enumOptionsSelectValue(index, checkboxesValues, enumOptions));\n                    }\n                    else {\n                        onChange(enumOptionsDeselectValue(index, checkboxesValues, enumOptions));\n                    }\n                };\n                const checkbox = (_jsxs(\"span\", { children: [_jsx(\"input\", { type: 'checkbox', id: optionId(id, index), name: id, checked: checked, value: String(index), disabled: disabled || itemDisabled || readonly, autoFocus: autofocus && index === 0, onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, \"aria-describedby\": ariaDescribedByIds(id) }), _jsx(\"span\", { children: option.label })] }));\n                return inline ? (_jsx(\"label\", { className: `checkbox-inline ${disabledCls}`, children: checkbox }, index)) : (_jsx(\"div\", { className: `checkbox ${disabledCls}`, children: _jsx(\"label\", { children: checkbox }) }, index));\n            }) }));\n}\nexport default CheckboxesWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `ColorWidget` component uses the `BaseInputTemplate` changing the type to `color` and disables it when it is\n * either disabled or readonly.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function ColorWidget(props) {\n    const { disabled, readonly, options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { type: 'color', ...props, disabled: disabled || readonly });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { getTemplate } from '@rjsf/utils';\n/** The `DateWidget` component uses the `BaseInputTemplate` changing the type to `date` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateWidget(props) {\n    const { onChange, options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    const handleChange = useCallback((value) => onChange(value || undefined), [onChange]);\n    return _jsx(BaseInputTemplate, { type: 'date', ...props, onChange: handleChange });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate, localToUTC, utcToLocal, } from '@rjsf/utils';\n/** The `DateTimeWidget` component uses the `BaseInputTemplate` changing the type to `datetime-local` and transforms\n * the value to/from utc using the appropriate utility functions.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateTimeWidget(props) {\n    const { onChange, value, options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return (_jsx(BaseInputTemplate, { type: 'datetime-local', ...props, value: utcToLocal(value), onChange: (value) => onChange(localToUTC(value)) }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `EmailWidget` component uses the `BaseInputTemplate` changing the type to `email`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function EmailWidget(props) {\n    const { options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { type: 'email', ...props });\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useMemo } from 'react';\nimport { dataURItoBlob, getTemplate, TranslatableString, } from '@rjsf/utils';\nimport Markdown from 'markdown-to-jsx';\nfunction addNameToDataURL(dataURL, name) {\n    if (dataURL === null) {\n        return null;\n    }\n    return dataURL.replace(';base64', `;name=${encodeURIComponent(name)};base64`);\n}\nfunction processFile(file) {\n    const { name, size, type } = file;\n    return new Promise((resolve, reject) => {\n        const reader = new window.FileReader();\n        reader.onerror = reject;\n        reader.onload = (event) => {\n            if (typeof event.target?.result === 'string') {\n                resolve({\n                    dataURL: addNameToDataURL(event.target.result, name),\n                    name,\n                    size,\n                    type,\n                });\n            }\n            else {\n                resolve({\n                    dataURL: null,\n                    name,\n                    size,\n                    type,\n                });\n            }\n        };\n        reader.readAsDataURL(file);\n    });\n}\nfunction processFiles(files) {\n    return Promise.all(Array.from(files).map(processFile));\n}\nfunction FileInfoPreview({ fileInfo, registry, }) {\n    const { translateString } = registry;\n    const { dataURL, type, name } = fileInfo;\n    if (!dataURL) {\n        return null;\n    }\n    // If type is JPEG or PNG then show image preview.\n    // Originally, any type of image was supported, but this was changed into a whitelist\n    // since SVGs and animated GIFs are also images, which are generally considered a security risk.\n    if (['image/jpeg', 'image/png'].includes(type)) {\n        return _jsx(\"img\", { src: dataURL, style: { maxWidth: '100%' }, className: 'file-preview' });\n    }\n    // otherwise, let users download file\n    return (_jsxs(_Fragment, { children: [' ', _jsx(\"a\", { download: `preview-${name}`, href: dataURL, className: 'file-download', children: translateString(TranslatableString.PreviewLabel) })] }));\n}\nfunction FilesInfo({ filesInfo, registry, preview, onRemove, options, }) {\n    if (filesInfo.length === 0) {\n        return null;\n    }\n    const { translateString } = registry;\n    const { RemoveButton } = getTemplate('ButtonTemplates', registry, options);\n    return (_jsx(\"ul\", { className: 'file-info', children: filesInfo.map((fileInfo, key) => {\n            const { name, size, type } = fileInfo;\n            const handleRemove = () => onRemove(key);\n            return (_jsxs(\"li\", { children: [_jsx(Markdown, { children: translateString(TranslatableString.FilesInfo, [name, type, String(size)]) }), preview && _jsx(FileInfoPreview, { fileInfo: fileInfo, registry: registry }), _jsx(RemoveButton, { onClick: handleRemove, registry: registry })] }, key));\n        }) }));\n}\nfunction extractFileInfo(dataURLs) {\n    return dataURLs.reduce((acc, dataURL) => {\n        if (!dataURL) {\n            return acc;\n        }\n        try {\n            const { blob, name } = dataURItoBlob(dataURL);\n            return [\n                ...acc,\n                {\n                    dataURL,\n                    name: name,\n                    size: blob.size,\n                    type: blob.type,\n                },\n            ];\n        }\n        catch (e) {\n            // Invalid dataURI, so just ignore it.\n            return acc;\n        }\n    }, []);\n}\n/**\n *  The `FileWidget` is a widget for rendering file upload fields.\n *  It is typically used with a string property with data-url format.\n */\nfunction FileWidget(props) {\n    const { disabled, readonly, required, multiple, onChange, value, options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    const handleChange = useCallback((event) => {\n        if (!event.target.files) {\n            return;\n        }\n        // Due to variances in themes, dealing with multiple files for the array case now happens one file at a time.\n        // This is because we don't pass `multiple` into the `BaseInputTemplate` anymore. Instead, we deal with the single\n        // file in each event and concatenate them together ourselves\n        processFiles(event.target.files).then((filesInfoEvent) => {\n            const newValue = filesInfoEvent.map((fileInfo) => fileInfo.dataURL);\n            if (multiple) {\n                onChange(value.concat(newValue));\n            }\n            else {\n                onChange(newValue[0]);\n            }\n        });\n    }, [multiple, value, onChange]);\n    const filesInfo = useMemo(() => extractFileInfo(Array.isArray(value) ? value : [value]), [value]);\n    const rmFile = useCallback((index) => {\n        if (multiple) {\n            const newValue = value.filter((_, i) => i !== index);\n            onChange(newValue);\n        }\n        else {\n            onChange(undefined);\n        }\n    }, [multiple, value, onChange]);\n    return (_jsxs(\"div\", { children: [_jsx(BaseInputTemplate, { ...props, disabled: disabled || readonly, type: 'file', required: value ? false : required, onChangeOverride: handleChange, value: '', accept: options.accept ? String(options.accept) : undefined }), _jsx(FilesInfo, { filesInfo: filesInfo, onRemove: rmFile, registry: registry, preview: options.filePreview, options: options })] }));\n}\nexport default FileWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n/** The `HiddenWidget` is a widget for rendering a hidden input field.\n *  It is typically used by setting type to \"hidden\".\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction HiddenWidget({ id, value, }) {\n    return _jsx(\"input\", { type: 'hidden', id: id, name: id, value: typeof value === 'undefined' ? '' : value });\n}\nexport default HiddenWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `PasswordWidget` component uses the `BaseInputTemplate` changing the type to `password`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function PasswordWidget(props) {\n    const { options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { type: 'password', ...props });\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds, enumOptionsIsSelected, enumOptionsValueForIndex, optionId, } from '@rjsf/utils';\n/** The `RadioWidget` is a widget for rendering a radio group.\n *  It is typically used with a string property constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction RadioWidget({ options, value, required, disabled, readonly, autofocus = false, onBlur, onFocus, onChange, id, }) {\n    const { enumOptions, enumDisabled, inline, emptyValue } = options;\n    const handleBlur = useCallback(({ target }) => onBlur(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue)), [onBlur, id]);\n    const handleFocus = useCallback(({ target }) => onFocus(id, enumOptionsValueForIndex(target && target.value, enumOptions, emptyValue)), [onFocus, id]);\n    return (_jsx(\"div\", { className: 'field-radio-group', id: id, children: Array.isArray(enumOptions) &&\n            enumOptions.map((option, i) => {\n                const checked = enumOptionsIsSelected(option.value, value);\n                const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;\n                const disabledCls = disabled || itemDisabled || readonly ? 'disabled' : '';\n                const handleChange = () => onChange(option.value);\n                const radio = (_jsxs(\"span\", { children: [_jsx(\"input\", { type: 'radio', id: optionId(id, i), checked: checked, name: id, required: required, value: String(i), disabled: disabled || itemDisabled || readonly, autoFocus: autofocus && i === 0, onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, \"aria-describedby\": ariaDescribedByIds(id) }), _jsx(\"span\", { children: option.label })] }));\n                return inline ? (_jsx(\"label\", { className: `radio-inline ${disabledCls}`, children: radio }, i)) : (_jsx(\"div\", { className: `radio ${disabledCls}`, children: _jsx(\"label\", { children: radio }) }, i));\n            }) }));\n}\nexport default RadioWidget;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result\n * in a div, with the value along side it.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RangeWidget(props) {\n    const { value, registry: { templates: { BaseInputTemplate }, }, } = props;\n    return (_jsxs(\"div\", { className: 'field-range-wrapper', children: [_jsx(BaseInputTemplate, { type: 'range', ...props }), _jsx(\"span\", { className: 'range-view', children: value })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds, enumOptionsIndexForValue, enumOptionsValueForIndex, } from '@rjsf/utils';\nfunction getValue(event, multiple) {\n    if (multiple) {\n        return Array.from(event.target.options)\n            .slice()\n            .filter((o) => o.selected)\n            .map((o) => o.value);\n    }\n    return event.target.value;\n}\n/** The `SelectWidget` is a widget for rendering dropdowns.\n *  It is typically used with string properties constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction SelectWidget({ schema, id, options, value, required, disabled, readonly, multiple = false, autofocus = false, onChange, onBlur, onFocus, placeholder, }) {\n    const { enumOptions, enumDisabled, emptyValue: optEmptyVal } = options;\n    const emptyValue = multiple ? [] : '';\n    const handleFocus = useCallback((event) => {\n        const newValue = getValue(event, multiple);\n        return onFocus(id, enumOptionsValueForIndex(newValue, enumOptions, optEmptyVal));\n    }, [onFocus, id, schema, multiple, enumOptions, optEmptyVal]);\n    const handleBlur = useCallback((event) => {\n        const newValue = getValue(event, multiple);\n        return onBlur(id, enumOptionsValueForIndex(newValue, enumOptions, optEmptyVal));\n    }, [onBlur, id, schema, multiple, enumOptions, optEmptyVal]);\n    const handleChange = useCallback((event) => {\n        const newValue = getValue(event, multiple);\n        return onChange(enumOptionsValueForIndex(newValue, enumOptions, optEmptyVal));\n    }, [onChange, schema, multiple, enumOptions, optEmptyVal]);\n    const selectedIndexes = enumOptionsIndexForValue(value, enumOptions, multiple);\n    const showPlaceholderOption = !multiple && schema.default === undefined;\n    return (_jsxs(\"select\", { id: id, name: id, multiple: multiple, className: 'form-control', value: typeof selectedIndexes === 'undefined' ? emptyValue : selectedIndexes, required: required, disabled: disabled || readonly, autoFocus: autofocus, onBlur: handleBlur, onFocus: handleFocus, onChange: handleChange, \"aria-describedby\": ariaDescribedByIds(id), children: [showPlaceholderOption && _jsx(\"option\", { value: '', children: placeholder }), Array.isArray(enumOptions) &&\n                enumOptions.map(({ value, label }, i) => {\n                    const disabled = enumDisabled && enumDisabled.indexOf(value) !== -1;\n                    return (_jsx(\"option\", { value: String(i), disabled: disabled, children: label }, i));\n                })] }));\n}\nexport default SelectWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { ariaDescribedByIds } from '@rjsf/utils';\n/** The `TextareaWidget` is a widget for rendering input fields as textarea.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction TextareaWidget({ id, options = {}, placeholder, value, required, disabled, readonly, autofocus = false, onChange, onBlur, onFocus, }) {\n    const handleChange = useCallback(({ target: { value } }) => onChange(value === '' ? options.emptyValue : value), [onChange, options.emptyValue]);\n    const handleBlur = useCallback(({ target }) => onBlur(id, target && target.value), [onBlur, id]);\n    const handleFocus = useCallback(({ target }) => onFocus(id, target && target.value), [id, onFocus]);\n    return (_jsx(\"textarea\", { id: id, name: id, className: 'form-control', value: value ? value : '', placeholder: placeholder, required: required, disabled: disabled, readOnly: readonly, autoFocus: autofocus, rows: options.rows, onBlur: handleBlur, onFocus: handleFocus, onChange: handleChange, \"aria-describedby\": ariaDescribedByIds(id) }));\n}\nTextareaWidget.defaultProps = {\n    autofocus: false,\n    options: {},\n};\nexport default TextareaWidget;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `TextWidget` component uses the `BaseInputTemplate`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TextWidget(props) {\n    const { options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { ...props });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { getTemplate } from '@rjsf/utils';\n/** The `TimeWidget` component uses the `BaseInputTemplate` changing the type to `time` and transforms\n * the value to undefined when it is falsy during the `onChange` handling.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TimeWidget(props) {\n    const { onChange, options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    const handleChange = useCallback((value) => onChange(value ? `${value}:00` : undefined), [onChange]);\n    return _jsx(BaseInputTemplate, { type: 'time', ...props, onChange: handleChange });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `URLWidget` component uses the `BaseInputTemplate` changing the type to `url`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function URLWidget(props) {\n    const { options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { type: 'url', ...props });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getTemplate } from '@rjsf/utils';\n/** The `UpDownWidget` component uses the `BaseInputTemplate` changing the type to `number`.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function UpDownWidget(props) {\n    const { options, registry } = props;\n    const BaseInputTemplate = getTemplate('BaseInputTemplate', registry, options);\n    return _jsx(BaseInputTemplate, { type: 'number', ...props });\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nimport { createSchemaUtils, deepEquals, getChangedFields, getTemplate, getUiOptions, isObject, mergeObjects, NAME_KEY, RJSF_ADDITIONAL_PROPERTIES_FLAG, shouldRender, SUBMIT_BTN_OPTIONS_KEY, toErrorList, UI_GLOBAL_OPTIONS_KEY, UI_OPTIONS_KEY, validationDataMerge, createErrorHandler, unwrapErrorHandler, } from '@rjsf/utils';\nimport _forEach from 'lodash-es/forEach.js';\nimport _get from 'lodash-es/get.js';\nimport _isEmpty from 'lodash-es/isEmpty.js';\nimport _isNil from 'lodash-es/isNil.js';\nimport _pick from 'lodash-es/pick.js';\nimport _toPath from 'lodash-es/toPath.js';\nimport getDefaultRegistry from '../getDefaultRegistry.js';\n/** The `Form` component renders the outer form and all the fields defined in the `schema` */\nexport default class Form extends Component {\n    /** The ref used to hold the `form` element, this needs to be `any` because `tagName` or `_internalFormWrapper` can\n     * provide any possible type here\n     */\n    formElement;\n    /** Constructs the `Form` from the `props`. Will setup the initial state from the props. It will also call the\n     * `onChange` handler if the initially provided `formData` is modified to add missing default values as part of the\n     * state construction.\n     *\n     * @param props - The initial props for the `Form`\n     */\n    constructor(props) {\n        super(props);\n        if (!props.validator) {\n            throw new Error('A validator is required for Form functionality to work');\n        }\n        this.state = this.getStateFromProps(props, props.formData);\n        if (this.props.onChange && !deepEquals(this.state.formData, this.props.formData)) {\n            this.props.onChange(this.state);\n        }\n        this.formElement = createRef();\n    }\n    /**\n     * `getSnapshotBeforeUpdate` is a React lifecycle method that is invoked right before the most recently rendered\n     * output is committed to the DOM. It enables your component to capture current values (e.g., scroll position) before\n     * they are potentially changed.\n     *\n     * In this case, it checks if the props have changed since the last render. If they have, it computes the next state\n     * of the component using `getStateFromProps` method and returns it along with a `shouldUpdate` flag set to `true` IF\n     * the `nextState` and `prevState` are different, otherwise `false`. This ensures that we have the most up-to-date\n     * state ready to be applied in `componentDidUpdate`.\n     *\n     * If `formData` hasn't changed, it simply returns an object with `shouldUpdate` set to `false`, indicating that a\n     * state update is not necessary.\n     *\n     * @param prevProps - The previous set of props before the update.\n     * @param prevState - The previous state before the update.\n     * @returns Either an object containing the next state and a flag indicating that an update should occur, or an object\n     *        with a flag indicating that an update is not necessary.\n     */\n    getSnapshotBeforeUpdate(prevProps, prevState) {\n        if (!deepEquals(this.props, prevProps)) {\n            const formDataChangedFields = getChangedFields(this.props.formData, prevProps.formData);\n            const isSchemaChanged = !deepEquals(prevProps.schema, this.props.schema);\n            // When formData is not an object, getChangedFields returns an empty array.\n            // In this case, deepEquals is most needed to check again.\n            const isFormDataChanged = formDataChangedFields.length > 0 || !deepEquals(prevProps.formData, this.props.formData);\n            const nextState = this.getStateFromProps(this.props, this.props.formData, \n            // If the `schema` has changed, we need to update the retrieved schema.\n            // Or if the `formData` changes, for example in the case of a schema with dependencies that need to\n            //  match one of the subSchemas, the retrieved schema must be updated.\n            isSchemaChanged || isFormDataChanged ? undefined : this.state.retrievedSchema, isSchemaChanged, formDataChangedFields);\n            const shouldUpdate = !deepEquals(nextState, prevState);\n            return { nextState, shouldUpdate };\n        }\n        return { shouldUpdate: false };\n    }\n    /**\n     * `componentDidUpdate` is a React lifecycle method that is invoked immediately after updating occurs. This method is\n     * not called for the initial render.\n     *\n     * Here, it checks if an update is necessary based on the `shouldUpdate` flag received from `getSnapshotBeforeUpdate`.\n     * If an update is required, it applies the next state and, if needed, triggers the `onChange` handler to inform about\n     * changes.\n     *\n     * This method effectively replaces the deprecated `UNSAFE_componentWillReceiveProps`, providing a safer alternative\n     * to handle prop changes and state updates.\n     *\n     * @param _ - The previous set of props.\n     * @param prevState - The previous state of the component before the update.\n     * @param snapshot - The value returned from `getSnapshotBeforeUpdate`.\n     */\n    componentDidUpdate(_, prevState, snapshot) {\n        if (snapshot.shouldUpdate) {\n            const { nextState } = snapshot;\n            if (!deepEquals(nextState.formData, this.props.formData) &&\n                !deepEquals(nextState.formData, prevState.formData) &&\n                this.props.onChange) {\n                this.props.onChange(nextState);\n            }\n            this.setState(nextState);\n        }\n    }\n    /** Extracts the updated state from the given `props` and `inputFormData`. As part of this process, the\n     * `inputFormData` is first processed to add any missing required defaults. After that, the data is run through the\n     * validation process IF required by the `props`.\n     *\n     * @param props - The props passed to the `Form`\n     * @param inputFormData - The new or current data for the `Form`\n     * @param retrievedSchema - An expanded schema, if not provided, it will be retrieved from the `schema` and `formData`.\n     * @param isSchemaChanged - A flag indicating whether the schema has changed.\n     * @param formDataChangedFields - The changed fields of `formData`\n     * @returns - The new state for the `Form`\n     */\n    getStateFromProps(props, inputFormData, retrievedSchema, isSchemaChanged = false, formDataChangedFields = []) {\n        const state = this.state || {};\n        const schema = 'schema' in props ? props.schema : this.props.schema;\n        const uiSchema = ('uiSchema' in props ? props.uiSchema : this.props.uiSchema) || {};\n        const edit = typeof inputFormData !== 'undefined';\n        const liveValidate = 'liveValidate' in props ? props.liveValidate : this.props.liveValidate;\n        const mustValidate = edit && !props.noValidate && liveValidate;\n        const rootSchema = schema;\n        const experimental_defaultFormStateBehavior = 'experimental_defaultFormStateBehavior' in props\n            ? props.experimental_defaultFormStateBehavior\n            : this.props.experimental_defaultFormStateBehavior;\n        const experimental_customMergeAllOf = 'experimental_customMergeAllOf' in props\n            ? props.experimental_customMergeAllOf\n            : this.props.experimental_customMergeAllOf;\n        let schemaUtils = state.schemaUtils;\n        if (!schemaUtils ||\n            schemaUtils.doesSchemaUtilsDiffer(props.validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf)) {\n            schemaUtils = createSchemaUtils(props.validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf);\n        }\n        const formData = schemaUtils.getDefaultFormState(schema, inputFormData);\n        const _retrievedSchema = this.updateRetrievedSchema(retrievedSchema ?? schemaUtils.retrieveSchema(schema, formData));\n        const getCurrentErrors = () => {\n            // If the `props.noValidate` option is set or the schema has changed, we reset the error state.\n            if (props.noValidate || isSchemaChanged) {\n                return { errors: [], errorSchema: {} };\n            }\n            else if (!props.liveValidate) {\n                return {\n                    errors: state.schemaValidationErrors || [],\n                    errorSchema: state.schemaValidationErrorSchema || {},\n                };\n            }\n            return {\n                errors: state.errors || [],\n                errorSchema: state.errorSchema || {},\n            };\n        };\n        let errors;\n        let errorSchema;\n        let schemaValidationErrors = state.schemaValidationErrors;\n        let schemaValidationErrorSchema = state.schemaValidationErrorSchema;\n        if (mustValidate) {\n            const schemaValidation = this.validate(formData, schema, schemaUtils, _retrievedSchema);\n            errors = schemaValidation.errors;\n            // If retrievedSchema is undefined which means the schema or formData has changed, we do not merge state.\n            // Else in the case where it hasn't changed, we merge 'state.errorSchema' with 'schemaValidation.errorSchema.' This done to display the raised field error.\n            if (retrievedSchema === undefined) {\n                errorSchema = schemaValidation.errorSchema;\n            }\n            else {\n                errorSchema = mergeObjects(this.state?.errorSchema, schemaValidation.errorSchema, 'preventDuplicates');\n            }\n            schemaValidationErrors = errors;\n            schemaValidationErrorSchema = errorSchema;\n        }\n        else {\n            const currentErrors = getCurrentErrors();\n            errors = currentErrors.errors;\n            errorSchema = currentErrors.errorSchema;\n            if (formDataChangedFields.length > 0) {\n                const newErrorSchema = formDataChangedFields.reduce((acc, key) => {\n                    acc[key] = undefined;\n                    return acc;\n                }, {});\n                errorSchema = schemaValidationErrorSchema = mergeObjects(currentErrors.errorSchema, newErrorSchema, 'preventDuplicates');\n            }\n        }\n        if (props.extraErrors) {\n            const merged = validationDataMerge({ errorSchema, errors }, props.extraErrors);\n            errorSchema = merged.errorSchema;\n            errors = merged.errors;\n        }\n        const idSchema = schemaUtils.toIdSchema(_retrievedSchema, uiSchema['ui:rootFieldId'], formData, props.idPrefix, props.idSeparator);\n        const nextState = {\n            schemaUtils,\n            schema,\n            uiSchema,\n            idSchema,\n            formData,\n            edit,\n            errors,\n            errorSchema,\n            schemaValidationErrors,\n            schemaValidationErrorSchema,\n            retrievedSchema: _retrievedSchema,\n        };\n        return nextState;\n    }\n    /** React lifecycle method that is used to determine whether component should be updated.\n     *\n     * @param nextProps - The next version of the props\n     * @param nextState - The next version of the state\n     * @returns - True if the component should be updated, false otherwise\n     */\n    shouldComponentUpdate(nextProps, nextState) {\n        return shouldRender(this, nextProps, nextState);\n    }\n    /** Gets the previously raised customValidate errors.\n     *\n     * @returns the previous customValidate errors\n     */\n    getPreviousCustomValidateErrors() {\n        const { customValidate, uiSchema } = this.props;\n        const prevFormData = this.state.formData;\n        let customValidateErrors = {};\n        if (typeof customValidate === 'function') {\n            const errorHandler = customValidate(prevFormData, createErrorHandler(prevFormData), uiSchema);\n            const userErrorSchema = unwrapErrorHandler(errorHandler);\n            customValidateErrors = userErrorSchema;\n        }\n        return customValidateErrors;\n    }\n    /** Validates the `formData` against the `schema` using the `altSchemaUtils` (if provided otherwise it uses the\n     * `schemaUtils` in the state), returning the results.\n     *\n     * @param formData - The new form data to validate\n     * @param schema - The schema used to validate against\n     * @param altSchemaUtils - The alternate schemaUtils to use for validation\n     */\n    validate(formData, schema = this.props.schema, altSchemaUtils, retrievedSchema) {\n        const schemaUtils = altSchemaUtils ? altSchemaUtils : this.state.schemaUtils;\n        const { customValidate, transformErrors, uiSchema } = this.props;\n        const resolvedSchema = retrievedSchema ?? schemaUtils.retrieveSchema(schema, formData);\n        return schemaUtils\n            .getValidator()\n            .validateFormData(formData, resolvedSchema, customValidate, transformErrors, uiSchema);\n    }\n    /** Renders any errors contained in the `state` in using the `ErrorList`, if not disabled by `showErrorList`. */\n    renderErrors(registry) {\n        const { errors, errorSchema, schema, uiSchema } = this.state;\n        const { formContext } = this.props;\n        const options = getUiOptions(uiSchema);\n        const ErrorListTemplate = getTemplate('ErrorListTemplate', registry, options);\n        if (errors && errors.length) {\n            return (_jsx(ErrorListTemplate, { errors: errors, errorSchema: errorSchema || {}, schema: schema, uiSchema: uiSchema, formContext: formContext, registry: registry }));\n        }\n        return null;\n    }\n    /** Returns the `formData` with only the elements specified in the `fields` list\n     *\n     * @param formData - The data for the `Form`\n     * @param fields - The fields to keep while filtering\n     */\n    getUsedFormData = (formData, fields) => {\n        // For the case of a single input form\n        if (fields.length === 0 && typeof formData !== 'object') {\n            return formData;\n        }\n        // _pick has incorrect type definition, it works with string[][], because lodash/hasIn supports it\n        const data = _pick(formData, fields);\n        if (Array.isArray(formData)) {\n            return Object.keys(data).map((key) => data[key]);\n        }\n        return data;\n    };\n    /** Returns the list of field names from inspecting the `pathSchema` as well as using the `formData`\n     *\n     * @param pathSchema - The `PathSchema` object for the form\n     * @param [formData] - The form data to use while checking for empty objects/arrays\n     */\n    getFieldNames = (pathSchema, formData) => {\n        const getAllPaths = (_obj, acc = [], paths = [[]]) => {\n            Object.keys(_obj).forEach((key) => {\n                if (typeof _obj[key] === 'object') {\n                    const newPaths = paths.map((path) => [...path, key]);\n                    // If an object is marked with additionalProperties, all its keys are valid\n                    if (_obj[key][RJSF_ADDITIONAL_PROPERTIES_FLAG] && _obj[key][NAME_KEY] !== '') {\n                        acc.push(_obj[key][NAME_KEY]);\n                    }\n                    else {\n                        getAllPaths(_obj[key], acc, newPaths);\n                    }\n                }\n                else if (key === NAME_KEY && _obj[key] !== '') {\n                    paths.forEach((path) => {\n                        const formValue = _get(formData, path);\n                        // adds path to fieldNames if it points to a value\n                        // or an empty object/array\n                        if (typeof formValue !== 'object' ||\n                            _isEmpty(formValue) ||\n                            (Array.isArray(formValue) && formValue.every((val) => typeof val !== 'object'))) {\n                            acc.push(path);\n                        }\n                    });\n                }\n            });\n            return acc;\n        };\n        return getAllPaths(pathSchema);\n    };\n    /** Returns the `formData` after filtering to remove any extra data not in a form field\n     *\n     * @param formData - The data for the `Form`\n     * @returns The `formData` after omitting extra data\n     */\n    omitExtraData = (formData) => {\n        const { schema, schemaUtils } = this.state;\n        const retrievedSchema = schemaUtils.retrieveSchema(schema, formData);\n        const pathSchema = schemaUtils.toPathSchema(retrievedSchema, '', formData);\n        const fieldNames = this.getFieldNames(pathSchema, formData);\n        const newFormData = this.getUsedFormData(formData, fieldNames);\n        return newFormData;\n    };\n    // Filtering errors based on your retrieved schema to only show errors for properties in the selected branch.\n    filterErrorsBasedOnSchema(schemaErrors, resolvedSchema, formData) {\n        const { retrievedSchema, schemaUtils } = this.state;\n        const _retrievedSchema = resolvedSchema ?? retrievedSchema;\n        const pathSchema = schemaUtils.toPathSchema(_retrievedSchema, '', formData);\n        const fieldNames = this.getFieldNames(pathSchema, formData);\n        const filteredErrors = _pick(schemaErrors, fieldNames);\n        // If the root schema is of a primitive type, do not filter out the __errors\n        if (resolvedSchema?.type !== 'object' && resolvedSchema?.type !== 'array') {\n            filteredErrors.__errors = schemaErrors.__errors;\n        }\n        const prevCustomValidateErrors = this.getPreviousCustomValidateErrors();\n        // Filtering out the previous raised customValidate errors so that they are cleared when no longer valid.\n        const filterPreviousCustomErrors = (errors = [], prevCustomErrors) => {\n            if (errors.length === 0) {\n                return errors;\n            }\n            return errors.filter((error) => {\n                return !prevCustomErrors.includes(error);\n            });\n        };\n        // Removing undefined, null and empty errors.\n        const filterNilOrEmptyErrors = (errors, previousCustomValidateErrors = {}) => {\n            _forEach(errors, (errorAtKey, errorKey) => {\n                const prevCustomValidateErrorAtKey = previousCustomValidateErrors[errorKey];\n                if (_isNil(errorAtKey) || (Array.isArray(errorAtKey) && errorAtKey.length === 0)) {\n                    delete errors[errorKey];\n                }\n                else if (isObject(errorAtKey) &&\n                    isObject(prevCustomValidateErrorAtKey) &&\n                    Array.isArray(prevCustomValidateErrorAtKey?.__errors)) {\n                    // if previous customValidate error is an object and has __errors array, filter out the errors previous customValidate errors.\n                    errors[errorKey] = filterPreviousCustomErrors(errorAtKey.__errors, prevCustomValidateErrorAtKey.__errors);\n                }\n                else if (typeof errorAtKey === 'object' && !Array.isArray(errorAtKey.__errors)) {\n                    filterNilOrEmptyErrors(errorAtKey, previousCustomValidateErrors[errorKey]);\n                }\n            });\n            return errors;\n        };\n        return filterNilOrEmptyErrors(filteredErrors, prevCustomValidateErrors);\n    }\n    /** Function to handle changes made to a field in the `Form`. This handler receives an entirely new copy of the\n     * `formData` along with a new `ErrorSchema`. It will first update the `formData` with any missing default fields and\n     * then, if `omitExtraData` and `liveOmit` are turned on, the `formData` will be filtered to remove any extra data not\n     * in a form field. Then, the resulting formData will be validated if required. The state will be updated with the new\n     * updated (potentially filtered) `formData`, any errors that resulted from validation. Finally the `onChange`\n     * callback will be called if specified with the updated state.\n     *\n     * @param formData - The new form data from a change to a field\n     * @param newErrorSchema - The new `ErrorSchema` based on the field change\n     * @param id - The id of the field that caused the change\n     */\n    onChange = (formData, newErrorSchema, id) => {\n        const { extraErrors, omitExtraData, liveOmit, noValidate, liveValidate, onChange } = this.props;\n        const { schemaUtils, schema } = this.state;\n        let retrievedSchema = this.state.retrievedSchema;\n        if (isObject(formData) || Array.isArray(formData)) {\n            const newState = this.getStateFromProps(this.props, formData);\n            formData = newState.formData;\n            retrievedSchema = newState.retrievedSchema;\n        }\n        const mustValidate = !noValidate && liveValidate;\n        let state = { formData, schema };\n        let newFormData = formData;\n        if (omitExtraData === true && liveOmit === true) {\n            newFormData = this.omitExtraData(formData);\n            state = {\n                formData: newFormData,\n            };\n        }\n        if (mustValidate) {\n            const schemaValidation = this.validate(newFormData, schema, schemaUtils, retrievedSchema);\n            let errors = schemaValidation.errors;\n            let errorSchema = schemaValidation.errorSchema;\n            const schemaValidationErrors = errors;\n            const schemaValidationErrorSchema = errorSchema;\n            if (extraErrors) {\n                const merged = validationDataMerge(schemaValidation, extraErrors);\n                errorSchema = merged.errorSchema;\n                errors = merged.errors;\n            }\n            // Merging 'newErrorSchema' into 'errorSchema' to display the custom raised errors.\n            if (newErrorSchema) {\n                const filteredErrors = this.filterErrorsBasedOnSchema(newErrorSchema, retrievedSchema, newFormData);\n                errorSchema = mergeObjects(errorSchema, filteredErrors, 'preventDuplicates');\n            }\n            state = {\n                formData: newFormData,\n                errors,\n                errorSchema,\n                schemaValidationErrors,\n                schemaValidationErrorSchema,\n            };\n        }\n        else if (!noValidate && newErrorSchema) {\n            const errorSchema = extraErrors\n                ? mergeObjects(newErrorSchema, extraErrors, 'preventDuplicates')\n                : newErrorSchema;\n            state = {\n                formData: newFormData,\n                errorSchema: errorSchema,\n                errors: toErrorList(errorSchema),\n            };\n        }\n        this.setState(state, () => onChange && onChange({ ...this.state, ...state }, id));\n    };\n    /**\n     * If the retrievedSchema has changed the new retrievedSchema is returned.\n     * Otherwise, the old retrievedSchema is returned to persist reference.\n     * -  This ensures that AJV retrieves the schema from the cache when it has not changed,\n     *    avoiding the performance cost of recompiling the schema.\n     *\n     * @param retrievedSchema The new retrieved schema.\n     * @returns The new retrieved schema if it has changed, else the old retrieved schema.\n     */\n    updateRetrievedSchema(retrievedSchema) {\n        const isTheSame = deepEquals(retrievedSchema, this.state?.retrievedSchema);\n        return isTheSame ? this.state.retrievedSchema : retrievedSchema;\n    }\n    /**\n     * Callback function to handle reset form data.\n     * - Reset all fields with default values.\n     * - Reset validations and errors\n     *\n     */\n    reset = () => {\n        const { onChange } = this.props;\n        const newState = this.getStateFromProps(this.props, undefined);\n        const newFormData = newState.formData;\n        const state = {\n            formData: newFormData,\n            errorSchema: {},\n            errors: [],\n            schemaValidationErrors: [],\n            schemaValidationErrorSchema: {},\n        };\n        this.setState(state, () => onChange && onChange({ ...this.state, ...state }));\n    };\n    /** Callback function to handle when a field on the form is blurred. Calls the `onBlur` callback for the `Form` if it\n     * was provided.\n     *\n     * @param id - The unique `id` of the field that was blurred\n     * @param data - The data associated with the field that was blurred\n     */\n    onBlur = (id, data) => {\n        const { onBlur } = this.props;\n        if (onBlur) {\n            onBlur(id, data);\n        }\n    };\n    /** Callback function to handle when a field on the form is focused. Calls the `onFocus` callback for the `Form` if it\n     * was provided.\n     *\n     * @param id - The unique `id` of the field that was focused\n     * @param data - The data associated with the field that was focused\n     */\n    onFocus = (id, data) => {\n        const { onFocus } = this.props;\n        if (onFocus) {\n            onFocus(id, data);\n        }\n    };\n    /** Callback function to handle when the form is submitted. First, it prevents the default event behavior. Nothing\n     * happens if the target and currentTarget of the event are not the same. It will omit any extra data in the\n     * `formData` in the state if `omitExtraData` is true. It will validate the resulting `formData`, reporting errors\n     * via the `onError()` callback unless validation is disabled. Finally, it will add in any `extraErrors` and then call\n     * back the `onSubmit` callback if it was provided.\n     *\n     * @param event - The submit HTML form event\n     */\n    onSubmit = (event) => {\n        event.preventDefault();\n        if (event.target !== event.currentTarget) {\n            return;\n        }\n        event.persist();\n        const { omitExtraData, extraErrors, noValidate, onSubmit } = this.props;\n        let { formData: newFormData } = this.state;\n        if (omitExtraData === true) {\n            newFormData = this.omitExtraData(newFormData);\n        }\n        if (noValidate || this.validateFormWithFormData(newFormData)) {\n            // There are no errors generated through schema validation.\n            // Check for user provided errors and update state accordingly.\n            const errorSchema = extraErrors || {};\n            const errors = extraErrors ? toErrorList(extraErrors) : [];\n            this.setState({\n                formData: newFormData,\n                errors,\n                errorSchema,\n                schemaValidationErrors: [],\n                schemaValidationErrorSchema: {},\n            }, () => {\n                if (onSubmit) {\n                    onSubmit({ ...this.state, formData: newFormData, status: 'submitted' }, event);\n                }\n            });\n        }\n    };\n    /** Returns the registry for the form */\n    getRegistry() {\n        const { translateString: customTranslateString, uiSchema = {} } = this.props;\n        const { schemaUtils } = this.state;\n        const { fields, templates, widgets, formContext, translateString } = getDefaultRegistry();\n        return {\n            fields: { ...fields, ...this.props.fields },\n            templates: {\n                ...templates,\n                ...this.props.templates,\n                ButtonTemplates: {\n                    ...templates.ButtonTemplates,\n                    ...this.props.templates?.ButtonTemplates,\n                },\n            },\n            widgets: { ...widgets, ...this.props.widgets },\n            rootSchema: this.props.schema,\n            formContext: this.props.formContext || formContext,\n            schemaUtils,\n            translateString: customTranslateString || translateString,\n            globalUiOptions: uiSchema[UI_GLOBAL_OPTIONS_KEY],\n        };\n    }\n    /** Provides a function that can be used to programmatically submit the `Form` */\n    submit = () => {\n        if (this.formElement.current) {\n            const submitCustomEvent = new CustomEvent('submit', {\n                cancelable: true,\n            });\n            submitCustomEvent.preventDefault();\n            this.formElement.current.dispatchEvent(submitCustomEvent);\n            this.formElement.current.requestSubmit();\n        }\n    };\n    /** Attempts to focus on the field associated with the `error`. Uses the `property` field to compute path of the error\n     * field, then, using the `idPrefix` and `idSeparator` converts that path into an id. Then the input element with that\n     * id is attempted to be found using the `formElement` ref. If it is located, then it is focused.\n     *\n     * @param error - The error on which to focus\n     */\n    focusOnError(error) {\n        const { idPrefix = 'root', idSeparator = '_' } = this.props;\n        const { property } = error;\n        const path = _toPath(property);\n        if (path[0] === '') {\n            // Most of the time the `.foo` property results in the first element being empty, so replace it with the idPrefix\n            path[0] = idPrefix;\n        }\n        else {\n            // Otherwise insert the idPrefix into the first location using unshift\n            path.unshift(idPrefix);\n        }\n        const elementId = path.join(idSeparator);\n        let field = this.formElement.current.elements[elementId];\n        if (!field) {\n            // if not an exact match, try finding an input starting with the element id (like radio buttons or checkboxes)\n            field = this.formElement.current.querySelector(`input[id^=\"${elementId}\"`);\n        }\n        if (field && field.length) {\n            // If we got a list with length > 0\n            field = field[0];\n        }\n        if (field) {\n            field.focus();\n        }\n    }\n    /** Validates the form using the given `formData`. For use on form submission or on programmatic validation.\n     * If `onError` is provided, then it will be called with the list of errors.\n     *\n     * @param formData - The form data to validate\n     * @returns - True if the form is valid, false otherwise.\n     */\n    validateFormWithFormData = (formData) => {\n        const { extraErrors, extraErrorsBlockSubmit, focusOnFirstError, onError } = this.props;\n        const { errors: prevErrors } = this.state;\n        const schemaValidation = this.validate(formData);\n        let errors = schemaValidation.errors;\n        let errorSchema = schemaValidation.errorSchema;\n        const schemaValidationErrors = errors;\n        const schemaValidationErrorSchema = errorSchema;\n        const hasError = errors.length > 0 || (extraErrors && extraErrorsBlockSubmit);\n        if (hasError) {\n            if (extraErrors) {\n                const merged = validationDataMerge(schemaValidation, extraErrors);\n                errorSchema = merged.errorSchema;\n                errors = merged.errors;\n            }\n            if (focusOnFirstError) {\n                if (typeof focusOnFirstError === 'function') {\n                    focusOnFirstError(errors[0]);\n                }\n                else {\n                    this.focusOnError(errors[0]);\n                }\n            }\n            this.setState({\n                errors,\n                errorSchema,\n                schemaValidationErrors,\n                schemaValidationErrorSchema,\n            }, () => {\n                if (onError) {\n                    onError(errors);\n                }\n                else {\n                    console.error('Form validation failed', errors);\n                }\n            });\n        }\n        else if (prevErrors.length > 0) {\n            this.setState({\n                errors: [],\n                errorSchema: {},\n                schemaValidationErrors: [],\n                schemaValidationErrorSchema: {},\n            });\n        }\n        return !hasError;\n    };\n    /** Programmatically validate the form.  If `omitExtraData` is true, the `formData` will first be filtered to remove\n     * any extra data not in a form field. If `onError` is provided, then it will be called with the list of errors the\n     * same way as would happen on form submission.\n     *\n     * @returns - True if the form is valid, false otherwise.\n     */\n    validateForm() {\n        const { omitExtraData } = this.props;\n        let { formData: newFormData } = this.state;\n        if (omitExtraData === true) {\n            newFormData = this.omitExtraData(newFormData);\n        }\n        return this.validateFormWithFormData(newFormData);\n    }\n    /** Renders the `Form` fields inside the <form> | `tagName` or `_internalFormWrapper`, rendering any errors if\n     * needed along with the submit button or any children of the form.\n     */\n    render() {\n        const { children, id, idPrefix, idSeparator, className = '', tagName, name, method, target, action, autoComplete, enctype, acceptcharset, acceptCharset, noHtml5Validate = false, disabled, readonly, formContext, showErrorList = 'top', _internalFormWrapper, } = this.props;\n        const { schema, uiSchema, formData, errorSchema, idSchema } = this.state;\n        const registry = this.getRegistry();\n        const { SchemaField: _SchemaField } = registry.fields;\n        const { SubmitButton } = registry.templates.ButtonTemplates;\n        // The `semantic-ui` and `material-ui` themes have `_internalFormWrapper`s that take an `as` prop that is the\n        // PropTypes.elementType to use for the inner tag, so we'll need to pass `tagName` along if it is provided.\n        // NOTE, the `as` prop is native to `semantic-ui` and is emulated in the `material-ui` theme\n        const as = _internalFormWrapper ? tagName : undefined;\n        const FormTag = _internalFormWrapper || tagName || 'form';\n        let { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions = {} } = getUiOptions(uiSchema);\n        if (disabled) {\n            submitOptions = { ...submitOptions, props: { ...submitOptions.props, disabled: true } };\n        }\n        const submitUiSchema = { [UI_OPTIONS_KEY]: { [SUBMIT_BTN_OPTIONS_KEY]: submitOptions } };\n        return (_jsxs(FormTag, { className: className ? className : 'rjsf', id: id, name: name, method: method, target: target, action: action, autoComplete: autoComplete, encType: enctype, acceptCharset: acceptCharset || acceptcharset, noValidate: noHtml5Validate, onSubmit: this.onSubmit, as: as, ref: this.formElement, children: [showErrorList === 'top' && this.renderErrors(registry), _jsx(_SchemaField, { name: '', schema: schema, uiSchema: uiSchema, errorSchema: errorSchema, idSchema: idSchema, idPrefix: idPrefix, idSeparator: idSeparator, formContext: formContext, formData: formData, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, registry: registry, disabled: disabled, readonly: readonly }), children ? children : _jsx(SubmitButton, { uiSchema: submitUiSchema, registry: registry }), showErrorList === 'bottom' && this.renderErrors(registry)] }));\n    }\n}\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import { englishStringTranslator } from '@rjsf/utils';\nimport fields from './components/fields/index.js';\nimport templates from './components/templates/index.js';\nimport widgets from './components/widgets/index.js';\n/** The default registry consists of all the fields, templates and widgets provided in the core implementation,\n * plus an empty `rootSchema` and `formContext. We omit schemaUtils here because it cannot be defaulted without a\n * rootSchema and validator. It will be added into the computed registry later in the Form.\n */\nexport default function getDefaultRegistry() {\n    return {\n        fields: fields(),\n        templates: templates(),\n        widgets: widgets(),\n        rootSchema: {},\n        formContext: {},\n        translateString: englishStringTranslator,\n    };\n}\n","import ArrayField from './ArrayField.js';\nimport BooleanField from './BooleanField.js';\nimport MultiSchemaField from './MultiSchemaField.js';\nimport NumberField from './NumberField.js';\nimport ObjectField from './ObjectField.js';\nimport SchemaField from './SchemaField.js';\nimport StringField from './StringField.js';\nimport NullField from './NullField.js';\nfunction fields() {\n    return {\n        AnyOfField: MultiSchemaField,\n        ArrayField: ArrayField,\n        // ArrayField falls back to SchemaField if ArraySchemaField is not defined, which it isn't by default\n        BooleanField,\n        NumberField,\n        ObjectField,\n        OneOfField: MultiSchemaField,\n        SchemaField,\n        StringField,\n        NullField,\n    };\n}\nexport default fields;\n","import ArrayFieldDescriptionTemplate from './ArrayFieldDescriptionTemplate.js';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate.js';\nimport ArrayFieldTemplate from './ArrayFieldTemplate.js';\nimport ArrayFieldTitleTemplate from './ArrayFieldTitleTemplate.js';\nimport BaseInputTemplate from './BaseInputTemplate.js';\nimport ButtonTemplates from './ButtonTemplates/index.js';\nimport DescriptionField from './DescriptionField.js';\nimport ErrorList from './ErrorList.js';\nimport FieldTemplate from './FieldTemplate/index.js';\nimport FieldErrorTemplate from './FieldErrorTemplate.js';\nimport FieldHelpTemplate from './FieldHelpTemplate.js';\nimport ObjectFieldTemplate from './ObjectFieldTemplate.js';\nimport TitleField from './TitleField.js';\nimport UnsupportedField from './UnsupportedField.js';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate.js';\nfunction templates() {\n    return {\n        ArrayFieldDescriptionTemplate,\n        ArrayFieldItemTemplate,\n        ArrayFieldTemplate,\n        ArrayFieldTitleTemplate,\n        ButtonTemplates: ButtonTemplates(),\n        BaseInputTemplate,\n        DescriptionFieldTemplate: DescriptionField,\n        ErrorListTemplate: ErrorList,\n        FieldTemplate,\n        FieldErrorTemplate,\n        FieldHelpTemplate,\n        ObjectFieldTemplate,\n        TitleFieldTemplate: TitleField,\n        UnsupportedFieldTemplate: UnsupportedField,\n        WrapIfAdditionalTemplate,\n    };\n}\nexport default templates;\n","import SubmitButton from './SubmitButton.js';\nimport AddButton from './AddButton.js';\nimport { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from './IconButton.js';\nfunction buttonTemplates() {\n    return {\n        SubmitButton,\n        AddButton,\n        CopyButton,\n        MoveDownButton,\n        MoveUpButton,\n        RemoveButton,\n    };\n}\nexport default buttonTemplates;\n","import AltDateWidget from './AltDateWidget.js';\nimport AltDateTimeWidget from './AltDateTimeWidget.js';\nimport CheckboxWidget from './CheckboxWidget.js';\nimport CheckboxesWidget from './CheckboxesWidget.js';\nimport ColorWidget from './ColorWidget.js';\nimport DateWidget from './DateWidget.js';\nimport DateTimeWidget from './DateTimeWidget.js';\nimport EmailWidget from './EmailWidget.js';\nimport FileWidget from './FileWidget.js';\nimport HiddenWidget from './HiddenWidget.js';\nimport PasswordWidget from './PasswordWidget.js';\nimport RadioWidget from './RadioWidget.js';\nimport RangeWidget from './RangeWidget.js';\nimport SelectWidget from './SelectWidget.js';\nimport TextareaWidget from './TextareaWidget.js';\nimport TextWidget from './TextWidget.js';\nimport TimeWidget from './TimeWidget.js';\nimport URLWidget from './URLWidget.js';\nimport UpDownWidget from './UpDownWidget.js';\nfunction widgets() {\n    return {\n        AltDateWidget,\n        AltDateTimeWidget,\n        CheckboxWidget,\n        CheckboxesWidget,\n        ColorWidget,\n        DateWidget,\n        DateTimeWidget,\n        EmailWidget,\n        FileWidget,\n        HiddenWidget,\n        PasswordWidget,\n        RadioWidget,\n        RangeWidget,\n        SelectWidget,\n        TextWidget,\n        TextareaWidget,\n        TimeWidget,\n        UpDownWidget,\n        URLWidget,\n    };\n}\nexport default widgets;\n","import Form from './components/Form.js';\nimport withTheme from './withTheme.js';\nimport getDefaultRegistry from './getDefaultRegistry.js';\nexport { withTheme, getDefaultRegistry };\nexport default Form;\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link Track} implementation\n * @extends EventEmitter\n * @property {Track.Kind} kind\n * @property {string} name\n */\nvar TrackSignaling = /** @class */ (function (_super) {\n    __extends(TrackSignaling, _super);\n    /**\n     * Construct a {@link TrackSignaling}.\n     * @param {string} name\n     * @param {Track.Kind} kind\n     * @param {boolean} isEnabled\n     * @param {Track.Priority} priority\n     */\n    function TrackSignaling(name, kind, isEnabled, priority) {\n        var _this = _super.call(this) || this;\n        var sid = null;\n        Object.defineProperties(_this, {\n            _error: {\n                value: null,\n                writable: true\n            },\n            _isEnabled: {\n                value: isEnabled,\n                writable: true\n            },\n            _priority: {\n                value: priority,\n                writable: true\n            },\n            _trackTransceiver: {\n                value: null,\n                writable: true\n            },\n            _sid: {\n                get: function () {\n                    return sid;\n                },\n                set: function (_sid) {\n                    if (sid === null) {\n                        sid = _sid;\n                    }\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            },\n            name: {\n                enumerable: true,\n                value: name\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(TrackSignaling.prototype, \"error\", {\n        /**\n         * Non-null if publication or subscription failed.\n         * @property {?Error} error\n         */\n        get: function () {\n            return this._error;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"isEnabled\", {\n        /**\n         * Whether the {@link TrackSignaling} is enabled.\n         * @property {boolean}\n         */\n        get: function () {\n            return this._isEnabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"priority\", {\n        /**\n         * The {@link TrackSignaling}'s priority.\n         * @property {Track.Priority}\n         */\n        get: function () {\n            return this._priority;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"sid\", {\n        /**\n         * The {@link TrackSignaling}'s {@link Track.SID}.\n         * @property {Track.SID}\n         */\n        get: function () {\n            return this._sid;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"trackTransceiver\", {\n        /**\n         * The {@link TrackSignaling}'s {@link TrackTransceiver}.\n         * @property {TrackTransceiver}\n         */\n        get: function () {\n            return this._trackTransceiver;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Disable the {@link TrackSignaling} if it is not already disabled.\n     * @return {this}\n     */\n    TrackSignaling.prototype.disable = function () {\n        return this.enable(false);\n    };\n    /**\n     * Enable (or disable) the {@link TrackSignaling} if it is not already enabled\n     * (or disabled).\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    TrackSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        if (this.isEnabled !== enabled) {\n            this._isEnabled = enabled;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the {@link TrackTransceiver} on the {@link TrackSignaling}.\n     * @param {TrackTransceiver} trackTransceiver\n     * @returns {this}\n     */\n    TrackSignaling.prototype.setTrackTransceiver = function (trackTransceiver) {\n        trackTransceiver = trackTransceiver || null;\n        if (this.trackTransceiver !== trackTransceiver) {\n            this._trackTransceiver = trackTransceiver;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the SID on the {@link TrackSignaling} once.\n     * @param {string} sid\n     * @returns {this}\n     */\n    TrackSignaling.prototype.setSid = function (sid) {\n        if (this.sid === null) {\n            this._sid = sid;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return TrackSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link TrackSignaling} is updated\n * @event TrackSignaling#updated\n */\nmodule.exports = TrackSignaling;\n//# sourceMappingURL=track.js.map","'use strict';\nvar IceReport = require('./icereport');\n/**\n * @property {IceReport} lastReport\n * @property {?RTCStats} lastStats\n */\nvar IceReportFactory = /** @class */ (function () {\n    /**\n     * Construct an {@link IceReportFactory}.\n     */\n    function IceReportFactory() {\n        Object.defineProperties(this, {\n            lastReport: {\n                enumerable: true,\n                value: new IceReport(0, 0),\n                writable: true\n            },\n            lastStats: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Create an {@link IceReport}.\n     * @param {RTCStats} newerStats;\n     * @returns {IceReport}\n     */\n    IceReportFactory.prototype.next = function (newerStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        if (olderStats) {\n            var report = olderStats.id === newerStats.id\n                ? IceReport.of(olderStats, newerStats)\n                : new IceReport(0, 0);\n            this.lastReport = report;\n        }\n        return this.lastReport;\n    };\n    return IceReportFactory;\n}());\nmodule.exports = IceReportFactory;\n//# sourceMappingURL=icereportfactory.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=trackEventMethodDecorator;var _makeClassMemberDecorator=_interopRequireDefault(require(\"./makeClassMemberDecorator\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}function trackEventMethodDecorator(){var trackingData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return(0,_makeClassMemberDecorator[\"default\"])(function(decoratedFn){return function decorateClassMember(){var _this=this;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var trackEvent=function trackEvent(){if(_this.props&&_this.props.tracking&&typeof _this.props.tracking.trackEvent===\"function\"){for(var _len2=arguments.length,promiseArguments=new Array(_len2),_key2=0;_key2<_len2;_key2++){promiseArguments[_key2]=arguments[_key2]}var thisTrackingData=typeof trackingData===\"function\"?trackingData(_this.props,_this.state,args,promiseArguments):trackingData;if(thisTrackingData){_this.props.tracking.trackEvent(thisTrackingData)}}};var fn=Reflect.apply(decoratedFn,this,args);if(Promise&&Promise.resolve(fn)===fn){return fn.then(trackEvent.bind(this)).then(function(){return fn})[\"catch\"](function(error){trackEvent({},error);throw error})}trackEvent();return fn}})}\n//# sourceMappingURL=trackEventMethodDecorator.js.map","var SID_CHARS = '1234567890abcdef';\nvar SID_CHAR_LENGTH = 32;\n// copied from: https://code.hq.twilio.com/flex/monkey/blob/0fdce2b6c52d6be0b17a5cdb92f0c54f119b8ea8/src/client/lib/sid.ts#L39\n/**\n * Generates a random sid using given prefix.\n * @param {string} prefix\n * @returns string\n */\nfunction createSID(prefix) {\n    var result = '';\n    for (var i = 0; i < SID_CHAR_LENGTH; i++) {\n        result += SID_CHARS.charAt(Math.floor(Math.random() * SID_CHARS.length));\n    }\n    return \"\" + prefix + result;\n}\nexports.sessionSID = createSID('SS');\nexports.createSID = createSID;\n//# sourceMappingURL=sid.js.map","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n  } else {\n    that = isInstance ? this : create(AggregateErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $AggregateError, that.stack, 1);\n  if (arguments.length > 2) installErrorCause(that, arguments[2]);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n  AggregateError: $AggregateError\n});\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone:\n                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays:\n            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n                '_'\n            ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar style = {\n  width: '100%',\n  height: '100%',\n  left: 0,\n  top: 0,\n  margin: 0,\n  padding: 0,\n  position: 'absolute'\n};\n\nvar GoogleMapMap = function (_Component) {\n  _inherits(GoogleMapMap, _Component);\n\n  function GoogleMapMap() {\n    _classCallCheck(this, GoogleMapMap);\n\n    return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n  }\n\n  GoogleMapMap.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n    return false; // disable react on this div\n  };\n\n  GoogleMapMap.prototype.render = function render() {\n    var registerChild = this.props.registerChild;\n\n    return _react2.default.createElement('div', { ref: registerChild, style: style });\n  };\n\n  return GoogleMapMap;\n}(_react.Component);\n\nexports.default = GoogleMapMap;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar predicates_1 = require(\"../common/predicates\");\nvar common_1 = require(\"../common/common\");\n/** A `LocationConfig` mock that gets/sets all config from an in-memory object */\nvar MemoryLocationConfig = /** @class */ (function () {\n    function MemoryLocationConfig() {\n        var _this = this;\n        this.dispose = common_1.noop;\n        this._baseHref = '';\n        this._port = 80;\n        this._protocol = 'http';\n        this._host = 'localhost';\n        this._hashPrefix = '';\n        this.port = function () { return _this._port; };\n        this.protocol = function () { return _this._protocol; };\n        this.host = function () { return _this._host; };\n        this.baseHref = function () { return _this._baseHref; };\n        this.html5Mode = function () { return false; };\n        this.hashPrefix = function (newval) { return predicates_1.isDefined(newval) ? _this._hashPrefix = newval : _this._hashPrefix; };\n    }\n    return MemoryLocationConfig;\n}());\nexports.MemoryLocationConfig = MemoryLocationConfig;\n//# sourceMappingURL=memoryLocationConfig.js.map","import 'core-js/modules/es.object.to-string.js';\nimport 'core-js/modules/es.promise.js';\nimport 'core-js/modules/es.date.now.js';\nimport 'core-js/modules/es.date.to-string.js';\nimport 'core-js/modules/es.object.assign.js';\nimport { v4 } from 'uuid';\nimport 'core-js/modules/es.regexp.exec.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.map.js';\nimport 'core-js/modules/es.array.filter.js';\nimport 'core-js/modules/es.object.keys.js';\nimport 'core-js/modules/es.parse-int.js';\n\n// Loading script from CloudFront CDN\nvar MAIN_SCRIPT_DOMAIN = \"https://js.verygoodvault.com\";\n// Loading script from Fastly CDN\nvar BACKUP_SCRIPT_DOMAIN = \"https://js3.verygoodvault.com\";\nvar VGS_COLLECT_KEEPER = \"https://vgs-collect-keeper.apps.verygood.systems\";\nvar SESSION_ID = /*#__PURE__*/v4();\nvar DEFAULT_CONFIG = {\n  vaultId: '',\n  environment: 'sandbox',\n  version: 'canary'\n};\nvar ANALYTICS_EVENTS = {\n  // Script loaded from npm module\n  LOADED_FROM_PACKAGE: 'LoadedFromPackage',\n  // Script loaded\n  SCRIPT_LOAD: 'ScriptLoad',\n  // VGSCollect instance is undefined\n  INSTANCE_UNDEFINED: 'InstanceUndefined'\n};\nvar ERROR_MESSAGE = {\n  IS_REQUIRED: function IS_REQUIRED(value) {\n    return value + \" is required.\";\n  },\n  IS_UNDEFINED: function IS_UNDEFINED(value) {\n    return value + \" is undefined.\";\n  },\n  IS_INVALID: function IS_INVALID(value) {\n    return value + \" is invalid.\";\n  },\n  UNABLE_TO_FIND: function UNABLE_TO_FIND(value) {\n    return \"Unable to find \" + value;\n  },\n  SCRIPT_WAS_NOT_LOADED: 'VGS Collect.js script was not loaded.',\n  CHANGE_VERSION: 'Please explicitly set locked VGS Collect.js version before going live. Check out the changelog https://www.verygoodsecurity.com/docs/vgs-collect/js/changelog'\n};\n\nvar config = DEFAULT_CONFIG;\nvar setConfig = function setConfig(params) {\n  if (params) {\n    config = Object.assign({}, params);\n  }\n};\nvar getConfig = function getConfig() {\n  return config;\n};\n\nvar configSchema = {\n  vaultId: function vaultId(value) {\n    return typeof value === 'string' && /^tnt.{8}$/.test(value);\n  },\n  environment: function environment(value) {\n    return typeof value === 'string' && /^(sandbox|live)((-eu)-\\d{1})?$/.test(value);\n  },\n  version: function version(value) {\n    return value === 'canary' || typeof value === 'string' && /^\\d{1,2}\\.\\d{1,2}(\\.\\d{1,2})?$/.test(value) && !value.startsWith('1.');\n  }\n};\nvar isRequired = function isRequired(param) {\n  throw new Error(ERROR_MESSAGE.IS_REQUIRED(param));\n};\nvar validate = function validate(schema, obj) {\n  if (schema) {\n    var errors = Object.keys(schema).filter(function (key) {\n      return !schema[key](obj[key]);\n    }).map(function (key) {\n      return new Error(ERROR_MESSAGE.IS_INVALID(key));\n    });\n    if (errors.length) {\n      var error = errors[0];\n      throw error;\n    }\n  }\n};\nvar validateConfig = function validateConfig(config) {\n  validate(configSchema, config);\n};\n\nvar registerScriptLoading = function registerScriptLoading(params) {\n  validateConfig(params);\n  setConfig(params);\n  trackEvent({\n    type: ANALYTICS_EVENTS.LOADED_FROM_PACKAGE\n  });\n};\nvar trackEvent = function trackEvent(event) {\n  var _getConfig = getConfig(),\n    vaultId = _getConfig.vaultId,\n    environment = _getConfig.environment,\n    version = _getConfig.version;\n  var payload = '';\n  var data = {\n    env: environment,\n    tnt: vaultId,\n    userAgent: window.navigator.userAgent,\n    version: version,\n    timestamp: Date.now(),\n    vgsCollectSessionId: SESSION_ID\n  };\n  try {\n    payload = window.btoa(JSON.stringify(Object.assign({}, event, data)));\n  } catch (err) {\n    return;\n  }\n  fetch(VGS_COLLECT_KEEPER + \"/vgs\", {\n    method: 'POST',\n    body: payload\n  }).then(function () {\n    return true;\n  })[\"catch\"](function () {\n    return true;\n  });\n};\n\nvar appendElement = function appendElement(elem) {\n  var target = document.head || document.body;\n  if (!target) {\n    throw new Error(ERROR_MESSAGE.UNABLE_TO_FIND('document.head or document.body'));\n  }\n  target.appendChild(elem);\n  return elem;\n};\nvar appendLink = function appendLink(rel, href) {\n  var link = document.createElement('link');\n  link.rel = rel;\n  link.href = href;\n  appendElement(link);\n};\n\nvar parseVersionString = function parseVersionString(version) {\n  var parts = version.split('.');\n  var major = parseInt(parts[0]) || 0;\n  var minor = parseInt(parts[1]) || 0;\n  var patch = parseInt(parts[2]) || 0;\n  return {\n    major: major,\n    minor: minor,\n    patch: patch\n  };\n};\nvar isVersionGreater = function isVersionGreater(current, minimal) {\n  if (current === 'canary') return true;\n  var currentParsed = parseVersionString(current);\n  var minimalParsed = parseVersionString(minimal);\n  if (currentParsed.major !== minimalParsed.major) {\n    return currentParsed.major > minimalParsed.major;\n  }\n  if (currentParsed.minor !== minimalParsed.minor) {\n    return currentParsed.minor > minimalParsed.minor;\n  }\n  if (currentParsed.patch !== minimalParsed.patch) {\n    return currentParsed.patch > minimalParsed.patch;\n  }\n  return false;\n};\n\nvar scriptURL = MAIN_SCRIPT_DOMAIN;\nvar scriptExists = function scriptExists() {\n  try {\n    var scripts = document.querySelectorAll(\"script[src^=\\\"\" + scriptURL + \"/vgs-collect/\\\"]\");\n    return scripts.length > 0;\n  } catch (e) {\n    return false;\n  }\n};\nvar appendScript = function appendScript() {\n  var _getConfig = getConfig(),\n    vaultId = _getConfig.vaultId,\n    environment = _getConfig.environment,\n    version = _getConfig.version;\n  var script = document.createElement('script');\n  script.src = scriptURL + \"/vgs-collect/\" + version + \"/vgs-collect.js?sessionId=\" + SESSION_ID + \"&tenantId=\" + vaultId + \"&env=\" + environment;\n  appendElement(script);\n  return script;\n};\nvar loadScript = function loadScript(loadMainCDN) {\n  if (loadMainCDN === void 0) {\n    loadMainCDN = true;\n  }\n  var collectPromise = new Promise(function (resolve, reject) {\n    var _getConfig2 = getConfig(),\n      version = _getConfig2.version;\n    if (scriptExists() && window.VGSCollect) {\n      resolve(window.VGSCollect);\n    }\n    // Fastly fallback CDN is available starting Collect.js version 2.3.0\n    if (!loadMainCDN && isVersionGreater(version, '2.3.0')) {\n      scriptURL = BACKUP_SCRIPT_DOMAIN;\n    }\n    if (!window.VGSCollect) {\n      var script = appendScript();\n      if (script) {\n        script.onload = function () {\n          if (!window.VGSCollect) {\n            trackEvent({\n              type: ANALYTICS_EVENTS.INSTANCE_UNDEFINED,\n              status: 'OK',\n              mainCDN: loadMainCDN\n            });\n            reject(ERROR_MESSAGE.IS_UNDEFINED('VGS Collect'));\n          }\n          trackEvent({\n            type: ANALYTICS_EVENTS.SCRIPT_LOAD,\n            status: 'OK',\n            mainCDN: loadMainCDN\n          });\n          resolve(window.VGSCollect);\n        };\n        script.onerror = function () {\n          trackEvent({\n            type: ANALYTICS_EVENTS.SCRIPT_LOAD,\n            status: 'Failed',\n            mainCDN: loadMainCDN\n          });\n          if (loadMainCDN) {\n            // Load script from backup CDN\n            resolve(loadScript(false));\n          } else {\n            reject(ERROR_MESSAGE.SCRIPT_WAS_NOT_LOADED);\n          }\n        };\n      }\n    }\n  });\n  return collectPromise;\n};\n\nvar initCollect = function initCollect(vaultId, environment) {\n  window.VGSCollect.init = function (callback) {\n    if (callback === void 0) {\n      callback = function callback() {};\n    }\n    return window.VGSCollect.create(vaultId, environment, callback);\n  };\n};\n\nvar preFetch = function preFetch() {\n  appendLink('dns-prefetch', MAIN_SCRIPT_DOMAIN);\n  appendLink('dns-prefetch', BACKUP_SCRIPT_DOMAIN);\n};\n\nvar preConnect = function preConnect() {\n  appendLink('preconnect', MAIN_SCRIPT_DOMAIN);\n  appendLink('preconnect', BACKUP_SCRIPT_DOMAIN);\n};\n\n// side effects\nPromise.resolve().then(function () {\n  if (typeof window !== 'undefined' && !window.VGSCollect) {\n    // DNS lookup\n    preFetch();\n    // Establish connection to the server\n    preConnect();\n  }\n});\nvar loadVGSCollect = function loadVGSCollect(config) {\n  if (config === void 0) {\n    config = isRequired('config');\n  }\n  var _config = config,\n    _config$vaultId = _config.vaultId,\n    vaultId = _config$vaultId === void 0 ? isRequired('vaultId') : _config$vaultId,\n    _config$environment = _config.environment,\n    environment = _config$environment === void 0 ? DEFAULT_CONFIG.environment : _config$environment,\n    _config$version = _config.version,\n    version = _config$version === void 0 ? DEFAULT_CONFIG.version : _config$version;\n  if (version === 'canary') {\n    console.warn(ERROR_MESSAGE.CHANGE_VERSION);\n  }\n  registerScriptLoading({\n    vaultId: vaultId,\n    environment: environment,\n    version: version\n  });\n  return new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined') {\n      reject(ERROR_MESSAGE.IS_UNDEFINED('window'));\n      return;\n    }\n    if (window.VGSCollect) {\n      initCollect(vaultId, environment);\n      resolve(window.VGSCollect);\n    }\n    loadScript().then(function () {\n      initCollect(vaultId, environment);\n      resolve(window.VGSCollect);\n    })[\"catch\"](function (e) {\n      reject(e);\n      return;\n    });\n  });\n};\n\nexport { loadVGSCollect };\n//# sourceMappingURL=collect-js.esm.js.map\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays:\n            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n                '_'\n            ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","import React, { Component, createRef, PureComponent } from 'react';\nimport { createPortal, flushSync } from 'react-dom';\nimport { Calendar, } from '@fullcalendar/core';\nimport { CustomRenderingStore, } from '@fullcalendar/core/internal';\nconst reactMajorVersion = parseInt(String(React.version).split('.')[0]);\nconst syncRenderingByDefault = reactMajorVersion < 18;\nexport default class FullCalendar extends Component {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.isUpdating = false;\n        this.isUnmounting = false;\n        this.state = {\n            customRenderingMap: new Map()\n        };\n        this.requestResize = () => {\n            if (!this.isUnmounting) {\n                this.cancelResize();\n                this.resizeId = requestAnimationFrame(() => {\n                    this.doResize();\n                });\n            }\n        };\n    }\n    render() {\n        const customRenderingNodes = [];\n        for (const customRendering of this.state.customRenderingMap.values()) {\n            customRenderingNodes.push(React.createElement(CustomRenderingComponent, { key: customRendering.id, customRendering: customRendering }));\n        }\n        return (React.createElement(\"div\", { ref: this.elRef }, customRenderingNodes));\n    }\n    componentDidMount() {\n        // reset b/c react strict-mode calls componentWillUnmount/componentDidMount\n        this.isUnmounting = false;\n        const customRenderingStore = new CustomRenderingStore();\n        this.handleCustomRendering = customRenderingStore.handle.bind(customRenderingStore);\n        this.calendar = new Calendar(this.elRef.current, Object.assign(Object.assign({}, this.props), { handleCustomRendering: this.handleCustomRendering }));\n        this.calendar.render();\n        // attaching with .on() will cause this to fire AFTER internal preact rendering did flushSync\n        this.calendar.on('_beforeprint', () => {\n            flushSync(() => {\n                // our `customRenderingMap` state will be flushed at this point\n            });\n        });\n        let lastRequestTimestamp;\n        customRenderingStore.subscribe((customRenderingMap) => {\n            const requestTimestamp = Date.now();\n            const isMounting = !lastRequestTimestamp;\n            const runFunc = (\n            // don't call flushSync if React version already does sync rendering by default\n            // guards against fatal errors:\n            // https://github.com/fullcalendar/fullcalendar/issues/7448\n            syncRenderingByDefault ||\n                //\n                isMounting ||\n                this.isUpdating ||\n                this.isUnmounting ||\n                (requestTimestamp - lastRequestTimestamp) < 100 // rerendering frequently\n            ) ? runNow // either sync rendering (first-time or React 16/17) or async (React 18)\n                : flushSync; // guaranteed sync rendering\n            runFunc(() => {\n                this.setState({ customRenderingMap }, () => {\n                    lastRequestTimestamp = requestTimestamp;\n                    if (isMounting) {\n                        this.doResize();\n                    }\n                    else {\n                        this.requestResize();\n                    }\n                });\n            });\n        });\n    }\n    componentDidUpdate() {\n        this.isUpdating = true;\n        this.calendar.resetOptions(Object.assign(Object.assign({}, this.props), { handleCustomRendering: this.handleCustomRendering }));\n        this.isUpdating = false;\n    }\n    componentWillUnmount() {\n        this.isUnmounting = true;\n        this.cancelResize();\n        this.calendar.destroy();\n    }\n    doResize() {\n        this.calendar.updateSize();\n    }\n    cancelResize() {\n        if (this.resizeId !== undefined) {\n            cancelAnimationFrame(this.resizeId);\n            this.resizeId = undefined;\n        }\n    }\n    getApi() {\n        return this.calendar;\n    }\n}\nFullCalendar.act = runNow; // DEPRECATED. Not leveraged anymore\nclass CustomRenderingComponent extends PureComponent {\n    render() {\n        const { customRendering } = this.props;\n        const { generatorMeta } = customRendering;\n        const vnode = typeof generatorMeta === 'function' ?\n            generatorMeta(customRendering.renderProps) :\n            generatorMeta;\n        return createPortal(vnode, customRendering.containerEl);\n    }\n}\n// Util\n// -------------------------------------------------------------------------------------------------\nfunction runNow(f) {\n    f();\n}\n//# sourceMappingURL=index.js.map","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * {@link EncodingParametersImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements EncodingParameters\n * @emits EncodingParametersImpl#changed\n * @property {?number} maxAudioBitrate\n * @property {?number} maxVideoBitrate\n */\nvar EncodingParametersImpl = /** @class */ (function (_super) {\n    __extends(EncodingParametersImpl, _super);\n    /**\n     * Construct an {@link EncodingParametersImpl}.\n     * @param {EncodingParamters} encodingParameters - Initial {@link EncodingParameters}\n     * @param {Boolean} adaptiveSimulcast - true if adaptive simulcast was enabled by connect options.\n     */\n    function EncodingParametersImpl(encodingParameters, adaptiveSimulcast) {\n        var _this = _super.call(this) || this;\n        encodingParameters = Object.assign({\n            maxAudioBitrate: null,\n            maxVideoBitrate: null\n        }, encodingParameters);\n        Object.defineProperties(_this, {\n            maxAudioBitrate: {\n                value: encodingParameters.maxAudioBitrate,\n                writable: true\n            },\n            maxVideoBitrate: {\n                value: encodingParameters.maxVideoBitrate,\n                writable: true\n            },\n            adaptiveSimulcast: {\n                value: adaptiveSimulcast\n            }\n        });\n        return _this;\n    }\n    /**\n     * Returns the bitrate values in an {@link EncodingParameters}.\n     * @returns {EncodingParameters}\n     */\n    EncodingParametersImpl.prototype.toJSON = function () {\n        return {\n            maxAudioBitrate: this.maxAudioBitrate,\n            maxVideoBitrate: this.maxVideoBitrate\n        };\n    };\n    /**\n     * Update the bitrate values with those in the given {@link EncodingParameters}.\n     * @param {EncodingParameters} encodingParameters - The new {@link EncodingParameters}\n     * @fires EncodingParametersImpl#changed\n     */\n    EncodingParametersImpl.prototype.update = function (encodingParameters) {\n        var _this = this;\n        encodingParameters = Object.assign({\n            maxAudioBitrate: this.maxAudioBitrate,\n            maxVideoBitrate: this.maxVideoBitrate\n        }, encodingParameters);\n        var shouldEmitChanged = [\n            'maxAudioBitrate',\n            'maxVideoBitrate'\n        ].reduce(function (shouldEmitChanged, maxKindBitrate) {\n            if (_this[maxKindBitrate] !== encodingParameters[maxKindBitrate]) {\n                _this[maxKindBitrate] = encodingParameters[maxKindBitrate];\n                shouldEmitChanged = true;\n            }\n            return shouldEmitChanged;\n        }, false);\n        if (shouldEmitChanged) {\n            this.emit('changed');\n        }\n    };\n    return EncodingParametersImpl;\n}(EventEmitter));\n/**\n * At least one of the {@link EncodingParametersImpl}'s bitrate values changed.\n * @event EncodingParametersImpl#changed\n */\nmodule.exports = EncodingParametersImpl;\n//# sourceMappingURL=encodingparameters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTurnCredentials = void 0;\n/* eslint-disable camelcase */\nvar TwilioConnection = require('../twilioconnection.js');\nvar ICE_VERSION = require('../util/constants').ICE_VERSION;\nvar _a = require('../util/twilio-video-errors'), createTwilioError = _a.createTwilioError, SignalingConnectionError = _a.SignalingConnectionError;\nvar events_1 = require(\"events\");\nfunction getTurnCredentials(token, wsServer) {\n    return new Promise(function (resolve, reject) {\n        var eventObserver = new events_1.EventEmitter();\n        var connectionOptions = {\n            networkMonitor: null,\n            eventObserver: eventObserver,\n            helloBody: {\n                edge: 'roaming',\n                preflight: true,\n                token: token,\n                type: 'ice',\n                version: ICE_VERSION\n            },\n        };\n        var twilioConnection = new TwilioConnection(wsServer, connectionOptions);\n        var done = false;\n        twilioConnection.once('close', function () {\n            if (!done) {\n                done = true;\n                reject(new SignalingConnectionError());\n            }\n        });\n        twilioConnection.on('message', function (messageData) {\n            var code = messageData.code, message = messageData.message, ice_servers = messageData.ice_servers, type = messageData.type;\n            if ((type === 'iced' || type === 'error') && !done) {\n                done = true;\n                if (type === 'iced') {\n                    resolve(ice_servers);\n                }\n                else {\n                    reject(createTwilioError(code, message));\n                }\n                twilioConnection.close();\n            }\n        });\n    });\n}\nexports.getTurnCredentials = getTurnCredentials;\n//# sourceMappingURL=getturncredentials.js.map","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  var ref = useCommittedRef(fn);\n  return useCallback(function () {\n    return ref.current && ref.current.apply(ref, arguments);\n  }, [ref]);\n}","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n  // Test for strict equality first.\n  if (a === b) return true;\n\n  // Otherwise, if either of them == null they are not equal.\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return (\n      Array.isArray(b) &&\n      a.length === b.length &&\n      a.every(function(item, index) {\n        return valueEqual(item, b[index]);\n      })\n    );\n  }\n\n  if (typeof a === 'object' || typeof b === 'object') {\n    var aValue = valueOf(a);\n    var bValue = valueOf(b);\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    return Object.keys(Object.assign({}, a, b)).every(function(key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = toDate(dirtyDate);\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = formatters[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.find-last-index');\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","import React from 'react'; // TODO: check\n\nvar ToastContext = /*#__PURE__*/React.createContext({\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onClose: function onClose() {}\n});\nexport default ToastContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ToastContext from './ToastContext';\nvar defaultProps = {\n  closeLabel: 'Close',\n  closeButton: true\n};\nvar ToastHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'toast-header');\n  var context = useContext(ToastContext);\n  var handleClick = useEventCallback(function (e) {\n    if (context && context.onClose) {\n      context.onClose(e);\n    }\n  });\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classNames(bsPrefix, className)\n  }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n    label: closeLabel,\n    onClick: handleClick,\n    className: \"ml-2 mb-1\",\n    \"data-dismiss\": \"toast\"\n  }));\n});\nToastHeader.displayName = 'ToastHeader';\nToastHeader.defaultProps = defaultProps;\nexport default ToastHeader;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('toast-body');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useEffect, useMemo, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport Fade from './Fade';\nimport ToastHeader from './ToastHeader';\nimport ToastBody from './ToastBody';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport ToastContext from './ToastContext';\nvar Toast = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      _ref$transition = _ref.transition,\n      Transition = _ref$transition === void 0 ? Fade : _ref$transition,\n      _ref$show = _ref.show,\n      show = _ref$show === void 0 ? true : _ref$show,\n      _ref$animation = _ref.animation,\n      animation = _ref$animation === void 0 ? true : _ref$animation,\n      _ref$delay = _ref.delay,\n      delay = _ref$delay === void 0 ? 3000 : _ref$delay,\n      _ref$autohide = _ref.autohide,\n      autohide = _ref$autohide === void 0 ? false : _ref$autohide,\n      onClose = _ref.onClose,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"transition\", \"show\", \"animation\", \"delay\", \"autohide\", \"onClose\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'toast'); // We use refs for these, because we don't want to restart the autohide\n  // timer in case these values change.\n\n  var delayRef = useRef(delay);\n  var onCloseRef = useRef(onClose);\n  useEffect(function () {\n    delayRef.current = delay;\n    onCloseRef.current = onClose;\n  }, [delay, onClose]);\n  var autohideTimeout = useTimeout();\n  var autohideToast = !!(autohide && show);\n  var autohideFunc = useCallback(function () {\n    if (autohideToast) {\n      onCloseRef.current == null ? void 0 : onCloseRef.current();\n    }\n  }, [autohideToast]);\n  useEffect(function () {\n    // Only reset timer if show or autohide changes.\n    autohideTimeout.set(autohideFunc, delayRef.current);\n  }, [autohideTimeout, autohideFunc]);\n  var toastContext = useMemo(function () {\n    return {\n      onClose: onClose\n    };\n  }, [onClose]);\n  var hasAnimation = !!(Transition && animation);\n  var toast = /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classNames(bsPrefix, className, !hasAnimation && (show ? 'show' : 'hide')),\n    role: \"alert\",\n    \"aria-live\": \"assertive\",\n    \"aria-atomic\": \"true\"\n  }), children);\n  return /*#__PURE__*/React.createElement(ToastContext.Provider, {\n    value: toastContext\n  }, hasAnimation && Transition ? /*#__PURE__*/React.createElement(Transition, {\n    in: show,\n    unmountOnExit: true\n  }, toast) : toast);\n});\nToast.displayName = 'Toast';\nexport default Object.assign(Toast, {\n  Body: ToastBody,\n  Header: ToastHeader\n});","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n  at: function at(index) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : O[k];\n  }\n});\n\naddToUnscopables('at');\n","'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n  return _ref => {\n    let {\n      transform\n    } = _ref;\n    return { ...transform,\n      x: Math.ceil(transform.x / gridSize) * gridSize,\n      y: Math.ceil(transform.y / gridSize) * gridSize\n    };\n  };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n  let {\n    transform\n  } = _ref;\n  return { ...transform,\n    y: 0\n  };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n  const value = { ...transform\n  };\n\n  if (rect.top + transform.y <= boundingRect.top) {\n    value.y = boundingRect.top - rect.top;\n  } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n    value.y = boundingRect.top + boundingRect.height - rect.bottom;\n  }\n\n  if (rect.left + transform.x <= boundingRect.left) {\n    value.x = boundingRect.left - rect.left;\n  } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n    value.x = boundingRect.left + boundingRect.width - rect.right;\n  }\n\n  return value;\n}\n\nconst restrictToParentElement = _ref => {\n  let {\n    containerNodeRect,\n    draggingNodeRect,\n    transform\n  } = _ref;\n\n  if (!draggingNodeRect || !containerNodeRect) {\n    return transform;\n  }\n\n  return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n  let {\n    draggingNodeRect,\n    transform,\n    scrollableAncestorRects\n  } = _ref;\n  const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n  if (!draggingNodeRect || !firstScrollableAncestorRect) {\n    return transform;\n  }\n\n  return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n  let {\n    transform\n  } = _ref;\n  return { ...transform,\n    x: 0\n  };\n};\n\nconst restrictToWindowEdges = _ref => {\n  let {\n    transform,\n    draggingNodeRect,\n    windowRect\n  } = _ref;\n\n  if (!draggingNodeRect || !windowRect) {\n    return transform;\n  }\n\n  return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n  let {\n    activatorEvent,\n    draggingNodeRect,\n    transform\n  } = _ref;\n\n  if (draggingNodeRect && activatorEvent) {\n    const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n    if (!activatorCoordinates) {\n      return transform;\n    }\n\n    const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n    const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n    return { ...transform,\n      x: transform.x + offsetX - draggingNodeRect.width / 2,\n      y: transform.y + offsetY - draggingNodeRect.height / 2\n    };\n  }\n\n  return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","'use strict';\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.regexp.exec');\nrequire('../../modules/es.string.from-code-point');\nrequire('../../modules/es.string.raw');\nrequire('../../modules/es.string.code-point-at');\nrequire('../../modules/es.string.at-alternative');\nrequire('../../modules/es.string.ends-with');\nrequire('../../modules/es.string.includes');\nrequire('../../modules/es.string.is-well-formed');\nrequire('../../modules/es.string.match');\nrequire('../../modules/es.string.match-all');\nrequire('../../modules/es.string.pad-end');\nrequire('../../modules/es.string.pad-start');\nrequire('../../modules/es.string.repeat');\nrequire('../../modules/es.string.replace');\nrequire('../../modules/es.string.replace-all');\nrequire('../../modules/es.string.search');\nrequire('../../modules/es.string.split');\nrequire('../../modules/es.string.starts-with');\nrequire('../../modules/es.string.substr');\nrequire('../../modules/es.string.to-well-formed');\nrequire('../../modules/es.string.trim');\nrequire('../../modules/es.string.trim-start');\nrequire('../../modules/es.string.trim-end');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.string.anchor');\nrequire('../../modules/es.string.big');\nrequire('../../modules/es.string.blink');\nrequire('../../modules/es.string.bold');\nrequire('../../modules/es.string.fixed');\nrequire('../../modules/es.string.fontcolor');\nrequire('../../modules/es.string.fontsize');\nrequire('../../modules/es.string.italics');\nrequire('../../modules/es.string.link');\nrequire('../../modules/es.string.small');\nrequire('../../modules/es.string.strike');\nrequire('../../modules/es.string.sub');\nrequire('../../modules/es.string.sup');\nvar path = require('../../internals/path');\n\nmodule.exports = path.String;\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduceRight');\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","import { Theme, injectStyles } from '@fullcalendar/core/internal.js';\n\nclass BootstrapTheme extends Theme {\n}\nBootstrapTheme.prototype.classes = {\n    root: 'fc-theme-bootstrap',\n    table: 'table-bordered',\n    tableCellShaded: 'table-active',\n    buttonGroup: 'btn-group',\n    button: 'btn btn-primary',\n    buttonActive: 'active',\n    popover: 'popover',\n    popoverHeader: 'popover-header',\n    popoverContent: 'popover-body',\n};\nBootstrapTheme.prototype.baseIconClass = 'fa';\nBootstrapTheme.prototype.iconClasses = {\n    close: 'fa-times',\n    prev: 'fa-chevron-left',\n    next: 'fa-chevron-right',\n    prevYear: 'fa-angle-double-left',\n    nextYear: 'fa-angle-double-right',\n};\nBootstrapTheme.prototype.rtlIconClasses = {\n    prev: 'fa-chevron-right',\n    next: 'fa-chevron-left',\n    prevYear: 'fa-angle-double-right',\n    nextYear: 'fa-angle-double-left',\n};\nBootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; // TODO: make TS-friendly. move the option-processing into this plugin\nBootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';\nBootstrapTheme.prototype.iconOverridePrefix = 'fa-';\n\nvar css_248z = \".fc-theme-bootstrap a:not([href]){color:inherit}.fc-theme-bootstrap .fc-more-link:hover{text-decoration:none}\";\ninjectStyles(css_248z);\n\nexport { BootstrapTheme };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { BootstrapTheme } from './internal.js';\nimport '@fullcalendar/core/internal.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/bootstrap',\n    themeClasses: {\n        bootstrap: BootstrapTheme,\n    },\n});\n\nexport { index as default };\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n    var deferred = {};\n    deferred.promise = new Promise(function (resolve, reject) {\n        deferred.resolve = resolve;\n        deferred.reject = reject;\n    });\n    return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n    if (methodName in wrapper) {\n        // Skip any methods already set.\n        return;\n    }\n    else if (methodName.match(/^on[a-z]+$/)) {\n        // Skip EventHandlers (these are handled in the constructor).\n        return;\n    }\n    var isProperty = false;\n    try {\n        var propDesc = Object.getOwnPropertyDescriptor(source, methodName);\n        isProperty = propDesc && !!propDesc.get;\n    }\n    catch (error) {\n        // its okay to eat failure here.\n    }\n    // NOTE(mpatwardhan):skip properties. we are only interested in overriding\n    // functions. we do not even want to evaluate  `typeof source[methodName]` for properties\n    // because getter would get invoked, and they might have side effects.\n    // For example RTCPeerConnection.peerIdentity is a property that returns a promise.\n    // calling typeof RTCPeerConnection.peerIdentity, would leak a promise, and in case it rejects\n    // we see errors.\n    if (isProperty) {\n        return;\n    }\n    var type;\n    try {\n        type = typeof source[methodName];\n    }\n    catch (error) {\n        // NOTE(mroberts): Attempting to check the type of non-function members\n        // on the prototype throws an error for some types.\n    }\n    if (type !== 'function') {\n        // Skip non-function members.\n        return;\n    }\n    /* eslint no-loop-func:0 */\n    wrapper[methodName] = function () {\n        return this[target][methodName].apply(this[target], arguments);\n    };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n    for (var methodName in source) {\n        delegateMethod(source, wrapper, target, methodName);\n    }\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n    list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n    list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n    var difference = new Set();\n    list1.forEach(function (item) {\n        if (!list2.has(item)) {\n            difference.add(item);\n        }\n    });\n    return difference;\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} mapFn\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n    var listArray = list instanceof Map || list instanceof Set\n        ? Array.from(list.values())\n        : list;\n    return listArray.reduce(function (flattened, item) { return flattened.concat(mapFn(item)); }, []);\n}\n/**\n * Get the browser's user agent, if available.\n * @returns {?string}\n */\nfunction getUserAgent() {\n    return typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string'\n        ? navigator.userAgent\n        : null;\n}\n/**\n * Guess the browser.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?string} browser - \"chrome\", \"firefox\", \"safari\", or null\n */\nfunction guessBrowser(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    if (/Chrome|CriOS/.test(userAgent)) {\n        return 'chrome';\n    }\n    if (/Firefox|FxiOS/.test(userAgent)) {\n        return 'firefox';\n    }\n    if (/Safari|iPhone|iPad|iPod/.test(userAgent)) {\n        return 'safari';\n    }\n    return null;\n}\n/**\n * Guess the browser version.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?{major: number, minor: number}}\n */\nfunction guessBrowserVersion(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    var prefix = {\n        chrome: 'Chrome|CriOS',\n        firefox: 'Firefox|FxiOS',\n        safari: 'Version'\n    }[guessBrowser(userAgent)];\n    if (!prefix) {\n        return null;\n    }\n    var regex = new RegExp(\"(\" + prefix + \")/([^\\\\s]+)\");\n    var _a = __read(userAgent.match(regex) || [], 3), match = _a[2];\n    if (!match) {\n        return null;\n    }\n    var versions = match.split('.').map(Number);\n    return {\n        major: isNaN(versions[0]) ? null : versions[0],\n        minor: isNaN(versions[1]) ? null : versions[1]\n    };\n}\n/**\n * Check whether the current browser is iOS Chrome.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {boolean}\n */\nfunction isIOSChrome(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    return (/Mobi/.test(userAgent) && guessBrowser() === 'chrome' && /iPad|iPhone|iPod/.test(userAgent));\n}\n/**\n * Intercept an event that might otherwise be proxied on an EventTarget.\n * @param {EventTarget} target\n * @param {string} type\n * @returns {void}\n */\nfunction interceptEvent(target, type) {\n    var currentListener = null;\n    Object.defineProperty(target, 'on' + type, {\n        get: function () {\n            return currentListener;\n        },\n        set: function (newListener) {\n            if (currentListener) {\n                this.removeEventListener(type, currentListener);\n            }\n            if (typeof newListener === 'function') {\n                currentListener = newListener;\n                this.addEventListener(type, currentListener);\n            }\n            else {\n                currentListener = null;\n            }\n        }\n    });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function<Error>} onFailure\n * @returns {Promise<undefined>}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n    return onSuccess\n        ? promise.then(onSuccess, onFailure)\n        : promise;\n}\n/**\n * Make a unique ID.\n * @return {string}\n */\nfunction makeUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n    Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n        proxyProperty(source, wrapper, target, propertyName);\n    });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n    if (propertyName in wrapper) {\n        // Skip any properties already set.\n        return;\n    }\n    else if (propertyName.match(/^on[a-z]+$/)) {\n        Object.defineProperty(wrapper, propertyName, {\n            value: null,\n            writable: true\n        });\n        target.addEventListener(propertyName.slice(2), function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args)));\n        });\n        return;\n    }\n    Object.defineProperty(wrapper, propertyName, {\n        enumerable: true,\n        get: function () {\n            return target[propertyName];\n        }\n    });\n}\n/**\n * Check whether native WebRTC APIs are supported.\n * @returns {boolean}\n */\nfunction support() {\n    return typeof navigator === 'object'\n        && typeof navigator.mediaDevices === 'object'\n        && typeof navigator.mediaDevices.getUserMedia === 'function'\n        && typeof RTCPeerConnection === 'function';\n}\n/**\n * Create a Set of supported codecs for a certain kind of media.\n * @param {'audio'|'video'} kind\n * @returns {Promise<Set<AudioCodec|VideoCodec>>}\n */\nfunction createSupportedCodecsSet(kind) {\n    if (typeof RTCRtpSender !== 'undefined'\n        && typeof RTCRtpSender.getCapabilities === 'function') {\n        return Promise.resolve(new Set(RTCRtpSender\n            .getCapabilities(kind)\n            .codecs\n            .map(function (_a) {\n            var mimeType = _a.mimeType;\n            return mimeType.split('/')[1].toLowerCase();\n        })));\n    }\n    if (typeof RTCPeerConnection === 'undefined'\n        || typeof RTCPeerConnection.prototype === 'undefined'\n        || typeof RTCPeerConnection.prototype.addTransceiver !== 'function'\n        || typeof RTCPeerConnection.prototype.close !== 'function'\n        || typeof RTCPeerConnection.prototype.createOffer !== 'function') {\n        return Promise.resolve(new Set());\n    }\n    var pc = new RTCPeerConnection();\n    pc.addTransceiver(kind);\n    return pc.createOffer().then(function (_a) {\n        var sdp = _a.sdp;\n        pc.close();\n        return new Set((sdp.match(/^a=rtpmap:.+$/gm) || [])\n            .map(function (line) { return line.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase(); }));\n    }, function () {\n        pc.close();\n        return new Set();\n    });\n}\n// NOTE(mmalavalli): Cache the supported audio and video codecs here.\nvar supportedCodecs = new Map();\n/**\n * Check whether a given codec for a certain kind of media is supported.\n * @param {AudioCodec|VideoCodec} codec\n * @param {'audio'|'video'} kind\n * @returns {Promise<boolean>}\n */\nfunction isCodecSupported(codec, kind) {\n    var codecs = supportedCodecs.get(kind);\n    if (codecs) {\n        return Promise.resolve(codecs.has(codec.toLowerCase()));\n    }\n    return createSupportedCodecsSet(kind).then(function (codecs) {\n        supportedCodecs.set(kind, codecs);\n        return codecs.has(codec.toLowerCase());\n    });\n}\n/**\n * Clear cached supported codecs (unit tests only).\n */\nfunction clearCachedSupportedCodecs() {\n    supportedCodecs.clear();\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\nexports.clearCachedSupportedCodecs = clearCachedSupportedCodecs;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.difference = difference;\nexports.flatMap = flatMap;\nexports.guessBrowser = guessBrowser;\nexports.guessBrowserVersion = guessBrowserVersion;\nexports.isCodecSupported = isCodecSupported;\nexports.isIOSChrome = isIOSChrome;\nexports.interceptEvent = interceptEvent;\nexports.legacyPromise = legacyPromise;\nexports.makeUUID = makeUUID;\nexports.proxyProperties = proxyProperties;\nexports.support = support;\n//# sourceMappingURL=index.js.map","'use strict';\nvar parent = require('../../es/array');\n\nmodule.exports = parent;\n","/* eslint no-undefined:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface SenderSummary\n * @property {number} bitrate\n * @property {number} [rtt] - s (undefined in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} [rtt] - s (undefined in Chrome)\n */\nvar SenderReport = /** @class */ (function (_super) {\n    __extends(SenderReport, _super);\n    /**\n     * Construct a {@link SenderReport}.\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     * @param {number} [rtt] - s\n     */\n    function SenderReport(id, trackId, bitrate, rtt) {\n        var _this = _super.call(this, id, trackId, bitrate) || this;\n        Object.defineProperties(_this, {\n            rtt: {\n                enumerable: true,\n                value: rtt\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link SenderReport}.\n     * @param {string} trackId\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n     * @returns {SenderReport}\n     */\n    SenderReport.of = function (trackId, olderStats, newerStats, newerRemoteStats) {\n        if (olderStats.id !== newerStats.id) {\n            throw new Error('RTCStats IDs must match');\n        }\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n        var bitrate = secondsElapsed > 0\n            ? (deltaBytesSent / secondsElapsed) * 8\n            : 0;\n        var rtt = newerRemoteStats && typeof newerRemoteStats.roundTripTime === 'number'\n            ? newerRemoteStats.roundTripTime / 1000\n            : undefined;\n        return new SenderReport(olderStats.id, trackId, bitrate, rtt);\n    };\n    /**\n     * Summarize {@link SenderReport}s by summing and averaging their values.\n     * @param {Array<SenderReport>} reports\n     * @returns {SenderSummary}\n     */\n    SenderReport.summarize = function (reports) {\n        var bitrate = sum(reports.map(function (report) { return report.bitrate; }));\n        var rtt = average(reports.map(function (report) { return report.rtt; }));\n        return {\n            bitrate: bitrate,\n            rtt: rtt\n        };\n    };\n    return SenderReport;\n}(SenderOrReceiverReport));\nmodule.exports = SenderReport;\n//# sourceMappingURL=senderreport.js.map","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticAudio = void 0;\nfunction syntheticAudio() {\n    // NOTE(mpatwardhan): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var audioContextFactory = require('../webaudio/audiocontext');\n    var holder = {};\n    var audioContext = audioContextFactory.getOrCreate(holder);\n    var oscillator = audioContext.createOscillator();\n    var dst = oscillator.connect(audioContext.createMediaStreamDestination());\n    oscillator.start();\n    var track = dst.stream.getAudioTracks()[0];\n    var originalStop = track.stop;\n    track.stop = function () {\n        originalStop.call(track);\n        audioContextFactory.release(holder);\n    };\n    return track;\n}\nexports.syntheticAudio = syntheticAudio;\n//# sourceMappingURL=syntheticaudio.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module common */ /** for typedoc */\n__export(require(\"./common\"));\n__export(require(\"./coreservices\"));\n__export(require(\"./glob\"));\n__export(require(\"./hof\"));\n__export(require(\"./predicates\"));\n__export(require(\"./queue\"));\n__export(require(\"./strings\"));\n__export(require(\"./trace\"));\n//# sourceMappingURL=index.js.map","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var error = require('./utils/error');\nvar dateTime = require('./date-time');\nvar utils = require('./utils/common');\n\nfunction validDate(d) {\n  return d && d.getTime && !isNaN(d.getTime());\n}\n\nfunction ensureDate(d) {\n  return (d instanceof Date)?d:new Date(d);\n}\n\nexports.ACCRINT = function(issue, first, settlement, rate, par, frequency, basis) {\n  // Return error if either date is invalid\n  issue      = ensureDate(issue);\n  first      = ensureDate(first);\n  settlement = ensureDate(settlement);\n  if (!validDate(issue) || !validDate(first) || !validDate(settlement)) {\n    return error.value;\n  }\n\n  // Return error if either rate or par are lower than or equal to zero\n  if (rate <= 0 || par <= 0) {\n    return error.num;\n  }\n\n  // Return error if frequency is neither 1, 2, or 4\n  if ([1, 2, 4].indexOf(frequency) === -1) {\n    return error.num;\n  }\n\n  // Return error if basis is neither 0, 1, 2, 3, or 4\n  if ([0, 1, 2, 3, 4].indexOf(basis) === -1) {\n    return error.num;\n  }\n\n  // Return error if settlement is before or equal to issue\n  if (settlement <= issue) {\n    return error.num;\n  }\n\n  // Set default values\n  par   = par   || 0;\n  basis = basis || 0;\n\n  // Compute accrued interest\n  return par * rate * dateTime.YEARFRAC(issue, settlement, basis);\n};\n\n// TODO\nexports.ACCRINTM = function() {\n  throw new Error('ACCRINTM is not implemented');\n};\n\n// TODO\nexports.AMORDEGRC = function() {\n  throw new Error('AMORDEGRC is not implemented');\n};\n\n// TODO\nexports.AMORLINC = function() {\n  throw new Error('AMORLINC is not implemented');\n};\n\n// TODO\nexports.COUPDAYBS = function() {\n  throw new Error('COUPDAYBS is not implemented');\n};\n\n// TODO\nexports.COUPDAYS = function() {\n  throw new Error('COUPDAYS is not implemented');\n};\n\n// TODO\nexports.COUPDAYSNC = function() {\n  throw new Error('COUPDAYSNC is not implemented');\n};\n\n// TODO\nexports.COUPNCD = function() {\n  throw new Error('COUPNCD is not implemented');\n};\n\n// TODO\nexports.COUPNUM = function() {\n  throw new Error('COUPNUM is not implemented');\n};\n\n// TODO\nexports.COUPPCD = function() {\n  throw new Error('COUPPCD is not implemented');\n};\n\nexports.CUMIPMT = function(rate, periods, value, start, end, type) {\n  // Credits: algorithm inspired by Apache OpenOffice\n  // Credits: Hannes Stiebitzhofer for the translations of function and variable names\n  // Requires exports.FV() and exports.PMT() from exports.js [http://stoic.com/exports/]\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  value = utils.parseNumber(value);\n  if (utils.anyIsError(rate, periods, value)) {\n    return error.value;\n  }\n\n  // Return error if either rate, periods, or value are lower than or equal to zero\n  if (rate <= 0 || periods <= 0 || value <= 0) {\n    return error.num;\n  }\n\n  // Return error if start < 1, end < 1, or start > end\n  if (start < 1 || end < 1 || start > end) {\n    return error.num;\n  }\n\n  // Return error if type is neither 0 nor 1\n  if (type !== 0 && type !== 1) {\n    return error.num;\n  }\n\n  // Compute cumulative interest\n  var payment = exports.PMT(rate, periods, value, 0, type);\n  var interest = 0;\n\n  if (start === 1) {\n    if (type === 0) {\n      interest = -value;\n      start++;\n    }\n  }\n\n  for (var i = start; i <= end; i++) {\n    if (type === 1) {\n      interest += exports.FV(rate, i - 2, payment, value, 1) - payment;\n    } else {\n      interest += exports.FV(rate, i - 1, payment, value, 0);\n    }\n  }\n  interest *= rate;\n\n  // Return cumulative interest\n  return interest;\n};\n\nexports.CUMPRINC = function(rate, periods, value, start, end, type) {\n  // Credits: algorithm inspired by Apache OpenOffice\n  // Credits: Hannes Stiebitzhofer for the translations of function and variable names\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  value = utils.parseNumber(value);\n  if (utils.anyIsError(rate, periods, value)) {\n    return error.value;\n  }\n\n  // Return error if either rate, periods, or value are lower than or equal to zero\n  if (rate <= 0 || periods <= 0 || value <= 0) {\n    return error.num;\n  }\n\n  // Return error if start < 1, end < 1, or start > end\n  if (start < 1 || end < 1 || start > end) {\n    return error.num;\n  }\n\n  // Return error if type is neither 0 nor 1\n  if (type !== 0 && type !== 1) {\n    return error.num;\n  }\n\n  // Compute cumulative principal\n  var payment = exports.PMT(rate, periods, value, 0, type);\n  var principal = 0;\n  if (start === 1) {\n    if (type === 0) {\n      principal = payment + value * rate;\n    } else {\n      principal = payment;\n    }\n    start++;\n  }\n  for (var i = start; i <= end; i++) {\n    if (type > 0) {\n      principal += payment - (exports.FV(rate, i - 2, payment, value, 1) - payment) * rate;\n    } else {\n      principal += payment - exports.FV(rate, i - 1, payment, value, 0) * rate;\n    }\n  }\n\n  // Return cumulative principal\n  return principal;\n};\n\nexports.DB = function(cost, salvage, life, period, month) {\n  // Initialize month\n  month = (month === undefined) ? 12 : month;\n\n  cost = utils.parseNumber(cost);\n  salvage = utils.parseNumber(salvage);\n  life = utils.parseNumber(life);\n  period = utils.parseNumber(period);\n  month = utils.parseNumber(month);\n  if (utils.anyIsError(cost, salvage, life, period, month)) {\n    return error.value;\n  }\n\n  // Return error if any of the parameters is negative\n  if (cost < 0 || salvage < 0 || life < 0 || period < 0) {\n    return error.num;\n  }\n\n  // Return error if month is not an integer between 1 and 12\n  if ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(month) === -1) {\n    return error.num;\n  }\n\n  // Return error if period is greater than life\n  if (period > life) {\n    return error.num;\n  }\n\n  // Return 0 (zero) if salvage is greater than or equal to cost\n  if (salvage >= cost) {\n    return 0;\n  }\n\n  // Rate is rounded to three decimals places\n  var rate = (1 - Math.pow(salvage / cost, 1 / life)).toFixed(3);\n\n  // Compute initial depreciation\n  var initial = cost * rate * month / 12;\n\n  // Compute total depreciation\n  var total = initial;\n  var current = 0;\n  var ceiling = (period === life) ? life - 1 : period;\n  for (var i = 2; i <= ceiling; i++) {\n    current = (cost - total) * rate;\n    total += current;\n  }\n\n  // Depreciation for the first and last periods are special cases\n  if (period === 1) {\n    // First period\n    return initial;\n  } else if (period === life) {\n    // Last period\n    return (cost - total) * rate;\n  } else {\n    return current;\n  }\n};\n\nexports.DDB = function(cost, salvage, life, period, factor) {\n  // Initialize factor\n  factor = (factor === undefined) ? 2 : factor;\n\n  cost = utils.parseNumber(cost);\n  salvage = utils.parseNumber(salvage);\n  life = utils.parseNumber(life);\n  period = utils.parseNumber(period);\n  factor = utils.parseNumber(factor);\n  if (utils.anyIsError(cost, salvage, life, period, factor)) {\n    return error.value;\n  }\n\n  // Return error if any of the parameters is negative or if factor is null\n  if (cost < 0 || salvage < 0 || life < 0 || period < 0 || factor <= 0) {\n    return error.num;\n  }\n\n  // Return error if period is greater than life\n  if (period > life) {\n    return error.num;\n  }\n\n  // Return 0 (zero) if salvage is greater than or equal to cost\n  if (salvage >= cost) {\n    return 0;\n  }\n\n  // Compute depreciation\n  var total = 0;\n  var current = 0;\n  for (var i = 1; i <= period; i++) {\n    current = Math.min((cost - total) * (factor / life), (cost - salvage - total));\n    total += current;\n  }\n\n  // Return depreciation\n  return current;\n};\n\n// TODO\nexports.DISC = function() {\n  throw new Error('DISC is not implemented');\n};\n\nexports.DOLLARDE = function(dollar, fraction) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  dollar = utils.parseNumber(dollar);\n  fraction = utils.parseNumber(fraction);\n  if (utils.anyIsError(dollar, fraction)) {\n    return error.value;\n  }\n\n  // Return error if fraction is negative\n  if (fraction < 0) {\n    return error.num;\n  }\n\n  // Return error if fraction is greater than or equal to 0 and less than 1\n  if (fraction >= 0 && fraction < 1) {\n    return error.div0;\n  }\n\n  // Truncate fraction if it is not an integer\n  fraction = parseInt(fraction, 10);\n\n  // Compute integer part\n  var result = parseInt(dollar, 10);\n\n  // Add decimal part\n  result += (dollar % 1) * Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN10)) / fraction;\n\n  // Round result\n  var power = Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN2) + 1);\n  result = Math.round(result * power) / power;\n\n  // Return converted dollar price\n  return result;\n};\n\nexports.DOLLARFR = function(dollar, fraction) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  dollar = utils.parseNumber(dollar);\n  fraction = utils.parseNumber(fraction);\n  if (utils.anyIsError(dollar, fraction)) {\n    return error.value;\n  }\n\n  // Return error if fraction is negative\n  if (fraction < 0) {\n    return error.num;\n  }\n\n  // Return error if fraction is greater than or equal to 0 and less than 1\n  if (fraction >= 0 && fraction < 1) {\n    return error.div0;\n  }\n\n  // Truncate fraction if it is not an integer\n  fraction = parseInt(fraction, 10);\n\n  // Compute integer part\n  var result = parseInt(dollar, 10);\n\n  // Add decimal part\n  result += (dollar % 1) * Math.pow(10, -Math.ceil(Math.log(fraction) / Math.LN10)) * fraction;\n\n  // Return converted dollar price\n  return result;\n};\n\n// TODO\nexports.DURATION = function() {\n  throw new Error('DURATION is not implemented');\n};\n\nexports.EFFECT = function(rate, periods) {\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  if (utils.anyIsError(rate, periods)) {\n    return error.value;\n  }\n\n  // Return error if rate <=0 or periods < 1\n  if (rate <= 0 || periods < 1) {\n    return error.num;\n  }\n\n  // Truncate periods if it is not an integer\n  periods = parseInt(periods, 10);\n\n  // Return effective annual interest rate\n  return Math.pow(1 + rate / periods, periods) - 1;\n};\n\nexports.FV = function(rate, periods, payment, value, type) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  value = value || 0;\n  type = type || 0;\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  payment = utils.parseNumber(payment);\n  value = utils.parseNumber(value);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, periods, payment, value, type)) {\n    return error.value;\n  }\n\n  // Return future value\n  var result;\n  if (rate === 0) {\n    result = value + payment * periods;\n  } else {\n    var term = Math.pow(1 + rate, periods);\n    if (type === 1) {\n      result = value * term + payment * (1 + rate) * (term - 1) / rate;\n    } else {\n      result = value * term + payment * (term - 1) / rate;\n    }\n  }\n  return -result;\n};\n\nexports.FVSCHEDULE = function(principal, schedule) {\n  principal = utils.parseNumber(principal);\n  schedule = utils.parseNumberArray(utils.flatten(schedule));\n  if (utils.anyIsError(principal, schedule)) {\n    return error.value;\n  }\n\n  var n = schedule.length;\n  var future = principal;\n\n  // Apply all interests in schedule\n  for (var i = 0; i < n; i++) {\n    // Apply scheduled interest\n    future *= 1 + schedule[i];\n  }\n\n  // Return future value\n  return future;\n};\n\n// TODO\nexports.INTRATE = function() {\n  throw new Error('INTRATE is not implemented');\n};\n\nexports.IPMT = function(rate, period, periods, present, future, type) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  future = future || 0;\n  type = type || 0;\n\n  rate = utils.parseNumber(rate);\n  period = utils.parseNumber(period);\n  periods = utils.parseNumber(periods);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, period, periods, present, future, type)) {\n    return error.value;\n  }\n\n  // Compute payment\n  var payment = exports.PMT(rate, periods, present, future, type);\n\n  // Compute interest\n  var interest;\n  if (period === 1) {\n    if (type === 1) {\n      interest = 0;\n    } else {\n      interest = -present;\n    }\n  } else {\n    if (type === 1) {\n      interest = exports.FV(rate, period - 2, payment, present, 1) - payment;\n    } else {\n      interest = exports.FV(rate, period - 1, payment, present, 0);\n    }\n  }\n\n  // Return interest\n  return interest * rate;\n};\n\nexports.IRR = function(values, guess) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  guess = guess || 0;\n\n  values = utils.parseNumberArray(utils.flatten(values));\n  guess = utils.parseNumber(guess);\n  if (utils.anyIsError(values, guess)) {\n    return error.value;\n  }\n\n  // Calculates the resulting amount\n  var irrResult = function(values, dates, rate) {\n    var r = rate + 1;\n    var result = values[0];\n    for (var i = 1; i < values.length; i++) {\n      result += values[i] / Math.pow(r, (dates[i] - dates[0]) / 365);\n    }\n    return result;\n  };\n\n  // Calculates the first derivation\n  var irrResultDeriv = function(values, dates, rate) {\n    var r = rate + 1;\n    var result = 0;\n    for (var i = 1; i < values.length; i++) {\n      var frac = (dates[i] - dates[0]) / 365;\n      result -= frac * values[i] / Math.pow(r, frac + 1);\n    }\n    return result;\n  };\n\n  // Initialize dates and check that values contains at least one positive value and one negative value\n  var dates = [];\n  var positive = false;\n  var negative = false;\n  for (var i = 0; i < values.length; i++) {\n    dates[i] = (i === 0) ? 0 : dates[i - 1] + 365;\n    if (values[i] > 0) {\n      positive = true;\n    }\n    if (values[i] < 0) {\n      negative = true;\n    }\n  }\n\n  // Return error if values does not contain at least one positive value and one negative value\n  if (!positive || !negative) {\n    return error.num;\n  }\n\n  // Initialize guess and resultRate\n  guess = (guess === undefined) ? 0.1 : guess;\n  var resultRate = guess;\n\n  // Set maximum epsilon for end of iteration\n  var epsMax = 1e-10;\n\n  // Implement Newton's method\n  var newRate, epsRate, resultValue;\n  var contLoop = true;\n  do {\n    resultValue = irrResult(values, dates, resultRate);\n    newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n    epsRate = Math.abs(newRate - resultRate);\n    resultRate = newRate;\n    contLoop = (epsRate > epsMax) && (Math.abs(resultValue) > epsMax);\n  } while (contLoop);\n\n  // Return internal rate of return\n  return resultRate;\n};\n\nexports.ISPMT = function(rate, period, periods, value) {\n  rate = utils.parseNumber(rate);\n  period = utils.parseNumber(period);\n  periods = utils.parseNumber(periods);\n  value = utils.parseNumber(value);\n  if (utils.anyIsError(rate, period, periods, value)) {\n    return error.value;\n  }\n\n  // Return interest\n  return value * rate * (period / periods - 1);\n};\n\n// TODO\nexports.MDURATION = function() {\n  throw new Error('MDURATION is not implemented');\n};\n\nexports.MIRR = function(values, finance_rate, reinvest_rate) {\n  values = utils.parseNumberArray(utils.flatten(values));\n  finance_rate = utils.parseNumber(finance_rate);\n  reinvest_rate = utils.parseNumber(reinvest_rate);\n  if (utils.anyIsError(values, finance_rate, reinvest_rate)) {\n    return error.value;\n  }\n\n  // Initialize number of values\n  var n = values.length;\n\n  // Lookup payments (negative values) and incomes (positive values)\n  var payments = [];\n  var incomes = [];\n  for (var i = 0; i < n; i++) {\n    if (values[i] < 0) {\n      payments.push(values[i]);\n    } else {\n      incomes.push(values[i]);\n    }\n  }\n\n  // Return modified internal rate of return\n  var num = -exports.NPV(reinvest_rate, incomes) * Math.pow(1 + reinvest_rate, n - 1);\n  var den = exports.NPV(finance_rate, payments) * (1 + finance_rate);\n  return Math.pow(num / den, 1 / (n - 1)) - 1;\n};\n\nexports.NOMINAL = function(rate, periods) {\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  if (utils.anyIsError(rate, periods)) {\n    return error.value;\n  }\n\n  // Return error if rate <=0 or periods < 1\n  if (rate <= 0 || periods < 1) {\n    return error.num;\n  }\n\n  // Truncate periods if it is not an integer\n  periods = parseInt(periods, 10);\n\n  // Return nominal annual interest rate\n  return (Math.pow(rate + 1, 1 / periods) - 1) * periods;\n};\n\nexports.NPER = function(rate, payment, present, future, type) {\n  type = (type === undefined) ? 0 : type;\n  future = (future === undefined) ? 0 : future;\n\n  rate = utils.parseNumber(rate);\n  payment = utils.parseNumber(payment);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, payment, present, future, type)) {\n    return error.value;\n  }\n\n  // Return number of periods\n  var num = payment * (1 + rate * type) - future * rate;\n  var den = (present * rate + payment * (1 + rate * type));\n  return Math.log(num / den) / Math.log(1 + rate);\n};\n\nexports.NPV = function() {\n  var args = utils.parseNumberArray(utils.flatten(arguments));\n  if (args instanceof Error) {\n    return args;\n  }\n\n  // Lookup rate\n  var rate = args[0];\n\n  // Initialize net present value\n  var value = 0;\n\n  // Loop on all values\n  for (var j = 1; j < args.length; j++) {\n    value += args[j] / Math.pow(1 + rate, j);\n  }\n\n  // Return net present value\n  return value;\n};\n\n// TODO\nexports.ODDFPRICE = function() {\n  throw new Error('ODDFPRICE is not implemented');\n};\n\n// TODO\nexports.ODDFYIELD = function() {\n  throw new Error('ODDFYIELD is not implemented');\n};\n\n// TODO\nexports.ODDLPRICE = function() {\n  throw new Error('ODDLPRICE is not implemented');\n};\n\n// TODO\nexports.ODDLYIELD = function() {\n  throw new Error('ODDLYIELD is not implemented');\n};\n\nexports.PDURATION = function(rate, present, future) {\n  rate = utils.parseNumber(rate);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  if (utils.anyIsError(rate, present, future)) {\n    return error.value;\n  }\n\n  // Return error if rate <=0\n  if (rate <= 0) {\n    return error.num;\n  }\n\n  // Return number of periods\n  return (Math.log(future) - Math.log(present)) / Math.log(1 + rate);\n};\n\nexports.PMT = function(rate, periods, present, future, type) {\n  // Credits: algorithm inspired by Apache OpenOffice\n\n  future = future || 0;\n  type = type || 0;\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, periods, present, future, type)) {\n    return error.value;\n  }\n\n  // Return payment\n  var result;\n  if (rate === 0) {\n    result = (present + future) / periods;\n  } else {\n    var term = Math.pow(1 + rate, periods);\n    if (type === 1) {\n      result = (future * rate / (term - 1) + present * rate / (1 - 1 / term)) / (1 + rate);\n    } else {\n      result = future * rate / (term - 1) + present * rate / (1 - 1 / term);\n    }\n  }\n  return -result;\n};\n\nexports.PPMT = function(rate, period, periods, present, future, type) {\n  future = future || 0;\n  type = type || 0;\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, periods, present, future, type)) {\n    return error.value;\n  }\n\n  return exports.PMT(rate, periods, present, future, type) - exports.IPMT(rate, period, periods, present, future, type);\n};\n\n// TODO\nexports.PRICE = function() {\n  throw new Error('PRICE is not implemented');\n};\n\n// TODO\nexports.PRICEDISC = function() {\n  throw new Error('PRICEDISC is not implemented');\n};\n\n// TODO\nexports.PRICEMAT = function() {\n  throw new Error('PRICEMAT is not implemented');\n};\n\nexports.PV = function(rate, periods, payment, future, type) {\n  future = future || 0;\n  type = type || 0;\n\n  rate = utils.parseNumber(rate);\n  periods = utils.parseNumber(periods);\n  payment = utils.parseNumber(payment);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  if (utils.anyIsError(rate, periods, payment, future, type)) {\n    return error.value;\n  }\n\n  // Return present value\n  if (rate === 0) {\n    return -payment * periods - future;\n  } else {\n    return (((1 - Math.pow(1 + rate, periods)) / rate) * payment * (1 + rate * type) - future) / Math.pow(1 + rate, periods);\n  }\n};\n\nexports.RATE = function(periods, payment, present, future, type, guess) {\n  // Credits: rabugento\n\n  guess = (guess === undefined) ? 0.01 : guess;\n  future = (future === undefined) ? 0 : future;\n  type = (type === undefined) ? 0 : type;\n\n  periods = utils.parseNumber(periods);\n  payment = utils.parseNumber(payment);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  type = utils.parseNumber(type);\n  guess = utils.parseNumber(guess);\n  if (utils.anyIsError(periods, payment, present, future, type, guess)) {\n    return error.value;\n  }\n\n  // Set maximum epsilon for end of iteration\n  var epsMax = 1e-10;\n\n  // Set maximum number of iterations\n  var iterMax = 50;\n\n  // Implement Newton's method\n  var y, y0, y1, x0, x1 = 0,\n    f = 0,\n    i = 0;\n  var rate = guess;\n  if (Math.abs(rate) < epsMax) {\n    y = present * (1 + periods * rate) + payment * (1 + rate * type) * periods + future;\n  } else {\n    f = Math.exp(periods * Math.log(1 + rate));\n    y = present * f + payment * (1 / rate + type) * (f - 1) + future;\n  }\n  y0 = present + payment * periods + future;\n  y1 = present * f + payment * (1 / rate + type) * (f - 1) + future;\n  i = x0 = 0;\n  x1 = rate;\n  while ((Math.abs(y0 - y1) > epsMax) && (i < iterMax)) {\n    rate = (y1 * x0 - y0 * x1) / (y1 - y0);\n    x0 = x1;\n    x1 = rate;\n    if (Math.abs(rate) < epsMax) {\n      y = present * (1 + periods * rate) + payment * (1 + rate * type) * periods + future;\n    } else {\n      f = Math.exp(periods * Math.log(1 + rate));\n      y = present * f + payment * (1 / rate + type) * (f - 1) + future;\n    }\n    y0 = y1;\n    y1 = y;\n    ++i;\n  }\n  return rate;\n};\n\n// TODO\nexports.RECEIVED = function() {\n  throw new Error('RECEIVED is not implemented');\n};\n\nexports.RRI = function(periods, present, future) {\n  periods = utils.parseNumber(periods);\n  present = utils.parseNumber(present);\n  future = utils.parseNumber(future);\n  if (utils.anyIsError(periods, present, future)) {\n    return error.value;\n  }\n\n  // Return error if periods or present is equal to 0 (zero)\n  if (periods === 0 || present === 0) {\n    return error.num;\n  }\n\n  // Return equivalent interest rate\n  return Math.pow(future / present, 1 / periods) - 1;\n};\n\nexports.SLN = function(cost, salvage, life) {\n  cost = utils.parseNumber(cost);\n  salvage = utils.parseNumber(salvage);\n  life = utils.parseNumber(life);\n  if (utils.anyIsError(cost, salvage, life)) {\n    return error.value;\n  }\n\n  // Return error if life equal to 0 (zero)\n  if (life === 0) {\n    return error.num;\n  }\n\n  // Return straight-line depreciation\n  return (cost - salvage) / life;\n};\n\nexports.SYD = function(cost, salvage, life, period) {\n  // Return error if any of the parameters is not a number\n  cost = utils.parseNumber(cost);\n  salvage = utils.parseNumber(salvage);\n  life = utils.parseNumber(life);\n  period = utils.parseNumber(period);\n  if (utils.anyIsError(cost, salvage, life, period)) {\n    return error.value;\n  }\n\n  // Return error if life equal to 0 (zero)\n  if (life === 0) {\n    return error.num;\n  }\n\n  // Return error if period is lower than 1 or greater than life\n  if (period < 1 || period > life) {\n    return error.num;\n  }\n\n  // Truncate period if it is not an integer\n  period = parseInt(period, 10);\n\n  // Return straight-line depreciation\n  return ((cost - salvage) * (life - period + 1) * 2) / (life * (life + 1));\n};\n\nexports.TBILLEQ = function(settlement, maturity, discount) {\n  settlement = utils.parseDate(settlement);\n  maturity = utils.parseDate(maturity);\n  discount = utils.parseNumber(discount);\n  if (utils.anyIsError(settlement, maturity, discount)) {\n    return error.value;\n  }\n\n  // Return error if discount is lower than or equal to zero\n  if (discount <= 0) {\n    return error.num;\n  }\n\n  // Return error if settlement is greater than maturity\n  if (settlement > maturity) {\n    return error.num;\n  }\n\n  // Return error if maturity is more than one year after settlement\n  if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n    return error.num;\n  }\n\n  // Return bond-equivalent yield\n  return (365 * discount) / (360 - discount * dateTime.DAYS360(settlement, maturity, false));\n};\n\nexports.TBILLPRICE = function(settlement, maturity, discount) {\n  settlement = utils.parseDate(settlement);\n  maturity = utils.parseDate(maturity);\n  discount = utils.parseNumber(discount);\n  if (utils.anyIsError(settlement, maturity, discount)) {\n    return error.value;\n  }\n\n  // Return error if discount is lower than or equal to zero\n  if (discount <= 0) {\n    return error.num;\n  }\n\n  // Return error if settlement is greater than maturity\n  if (settlement > maturity) {\n    return error.num;\n  }\n\n  // Return error if maturity is more than one year after settlement\n  if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n    return error.num;\n  }\n\n  // Return bond-equivalent yield\n  return 100 * (1 - discount * dateTime.DAYS360(settlement, maturity, false) / 360);\n};\n\nexports.TBILLYIELD = function(settlement, maturity, price) {\n  settlement = utils.parseDate(settlement);\n  maturity = utils.parseDate(maturity);\n  price = utils.parseNumber(price);\n  if (utils.anyIsError(settlement, maturity, price)) {\n    return error.value;\n  }\n\n  // Return error if price is lower than or equal to zero\n  if (price <= 0) {\n    return error.num;\n  }\n\n  // Return error if settlement is greater than maturity\n  if (settlement > maturity) {\n    return error.num;\n  }\n\n  // Return error if maturity is more than one year after settlement\n  if (maturity - settlement > 365 * 24 * 60 * 60 * 1000) {\n    return error.num;\n  }\n\n  // Return bond-equivalent yield\n  return (100 - price) * 360 / (price * dateTime.DAYS360(settlement, maturity, false));\n};\n\n// TODO\nexports.VDB = function() {\n  throw new Error('VDB is not implemented');\n};\n\n// TODO needs better support for date\n// exports.XIRR = function(values, dates, guess) {\n//   // Credits: algorithm inspired by Apache OpenOffice\n//\n//   values = utils.parseNumberArray(utils.flatten(values));\n//   dates = utils.parseDateArray(utils.flatten(dates));\n//   guess = utils.parseNumber(guess);\n//\n//   if (utils.anyIsError(values, dates, guess)) {\n//     return error.value;\n//   }\n//\n//   // Calculates the resulting amount\n//   var irrResult = function(values, dates, rate) {\n//     var r = rate + 1;\n//     var result = values[0];\n//     for (var i = 1; i < values.length; i++) {\n//       result += values[i] / Math.pow(r, dateTime.DAYS(dates[i], dates[0]) / 365);\n//     }\n//     return result;\n//   };\n//\n//   // Calculates the first derivation\n//   var irrResultDeriv = function(values, dates, rate) {\n//     var r = rate + 1;\n//     var result = 0;\n//     for (var i = 1; i < values.length; i++) {\n//       var frac = dateTime.DAYS(dates[i], dates[0]) / 365;\n//       result -= frac * values[i] / Math.pow(r, frac + 1);\n//     }\n//     return result;\n//   };\n//\n//   // Check that values contains at least one positive value and one negative value\n//   var positive = false;\n//   var negative = false;\n//   for (var i = 0; i < values.length; i++) {\n//     if (values[i] > 0) {\n//       positive = true;\n//     }\n//     if (values[i] < 0) {\n//       negative = true;\n//     }\n//   }\n//\n//   // Return error if values does not contain at least one positive value and one negative value\n//   if (!positive || !negative) {\n//     return error.num;\n//   }\n//\n//   // Initialize guess and resultRate\n//   guess = guess || 0.1;\n//   var resultRate = guess;\n//\n//   // Set maximum epsilon for end of iteration\n//   var epsMax = 1e-10;\n//\n//   // Implement Newton's method\n//   var newRate, epsRate, resultValue;\n//   var contLoop = true;\n//   do {\n//     resultValue = irrResult(values, dates, resultRate);\n//     newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate);\n//     epsRate = Math.abs(newRate - resultRate);\n//     resultRate = newRate;\n//     contLoop = (epsRate > epsMax) && (Math.abs(resultValue) > epsMax);\n//   } while (contLoop);\n//\n//   // Return internal rate of return\n//   return resultRate;\n// };\n\nexports.XNPV = function(rate, values, dates) {\n  rate = utils.parseNumber(rate);\n  values = utils.parseNumberArray(utils.flatten(values));\n  dates = utils.parseDateArray(utils.flatten(dates));\n  if (utils.anyIsError(rate, values, dates)) {\n    return error.value;\n  }\n\n  var result = 0;\n  for (var i = 0; i < values.length; i++) {\n    result += values[i] / Math.pow(1 + rate, dateTime.DAYS(dates[i], dates[0]) / 365);\n  }\n  return result;\n};\n\n// TODO\nexports.YIELD = function() {\n  throw new Error('YIELD is not implemented');\n};\n\n// TODO\nexports.YIELDDISC = function() {\n  throw new Error('YIELDDISC is not implemented');\n};\n\n// TODO\nexports.YIELDMAT = function() {\n  throw new Error('YIELDMAT is not implemented');\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for a {@link VideoTrack}.\n * @extends RemoteTrackStats\n * @property {?VideoTrack#Dimensions} dimensions - Received video resolution\n * @property {?number} frameRate - Received video frame rate\n */\nvar RemoteVideoTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link VideoTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteVideoTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        var dimensions = null;\n        if (typeof statsReport.frameWidthReceived === 'number' &&\n            typeof statsReport.frameHeightReceived === 'number') {\n            dimensions = {};\n            Object.defineProperties(dimensions, {\n                width: {\n                    value: statsReport.frameWidthReceived,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightReceived,\n                    enumerable: true\n                }\n            });\n        }\n        Object.defineProperties(_this, {\n            dimensions: {\n                value: dimensions,\n                enumerable: true\n            },\n            frameRate: {\n                value: typeof statsReport.frameRateReceived === 'number'\n                    ? statsReport.frameRateReceived\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteVideoTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteVideoTrackStats;\n//# sourceMappingURL=remotevideotrackstats.js.map","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, method, argument, reject) {\n  try {\n    var returnMethod = getMethod(iterator, 'return');\n    if (returnMethod) {\n      return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {\n        method(argument);\n      }, function (error) {\n        reject(error);\n      });\n    }\n  } catch (error2) {\n    return reject(error2);\n  } method(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"RsfVisualizer\",[],e):\"object\"==typeof exports?exports.RsfVisualizer=e():t.RsfVisualizer=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,\"__esModule\",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=28)}([function(t,e,n){\"use strict\";function r(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(3),a=n(24),s=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}var e,n,s;return e=t,s=[{key:\"middleOffset\",value:function(e,n,r){var i=t.middlePoint(e,n);return t.pointOffset(e,n,i,r)}},{key:\"middlePoint\",value:function(t,e){var n=o.vec2.create();return o.vec2.divide(n,o.vec2.add(n,t,e),[2,2]),n}},{key:\"pointOffset\",value:function(t,e,n,r){var i=r/Math.sqrt(Math.pow(t[1]-e[1],2)+Math.pow(e[0]-t[0],2)),a=o.vec2.create();o.vec2.set(a,t[1]-e[1],e[0]-t[0]),o.vec2.scale(a,a,i);var s=o.vec2.create();return o.vec2.add(s,n,a),s}},{key:\"pointToVec2\",value:function(t){var e=o.vec2.create();return e[0]=t.x,e[1]=t.y,e}},{key:\"pointToNumArray\",value:function(t){var e=[];return e.push(t.x),e.push(t.y),e}},{key:\"vec2ToPoint\",value:function(t){return{x:t[0],y:t[1]}}},{key:\"hasExifData\",value:function(t){return t.FocalLengthIn35mmFilm>0&&t.FocalLength>0}},{key:\"lookupSensorSize\",value:function(t){var e=(t.FocalLengthIn35mmFilm||0)/(t.FocalLength||1),n=a.sensors.map(function(t){return Math.abs(e-t.CropFactor)}),i=Math.min.apply(Math,r(n)),o=n.indexOf(i);return{x:a.sensors[o].Width,y:a.sensors[o].Height}}}],(n=null)&&i(e.prototype,n),s&&i(e,s),t}();e.VisualizerMath=s},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(26),i=n(0);r.Group.prototype.vec2Position=function(){return i.VisualizerMath.pointToVec2(this.position())},e.default=r},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=n(1),a=n(22),s=n(10),u=n(3),h=n(0),c=n(21),l=n(19),f=n(17),d=n(15),g=n(4);!function(t){t[t.none=0]=\"none\",t[t.scaling=1]=\"scaling\",t[t.line=2]=\"line\",t[t.window=3]=\"window\",t[t.daylight=4]=\"daylight\",t[t.polygon=5]=\"polygon\"}(i=e.WindowScalerTool||(e.WindowScalerTool={}));var p=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.imageZoom=50,this.zoom=50,this.draggingBgImage=!1,this.all=[],this._imageScale=1,this._scale=1,this._minSize=.03125,this._maxSize=2,this._minRangeSize=1-this._minSize,this._maxRangeSize=this._maxSize-1,this._annotations=[],this.scaleDownAmount=1,this._tool=i.none,this._tapeTool=new c.TapeMeasurer(this),this._windowTool=new l.WindowOutliner(this),this._daylightTool=new f.DaylightOutliner(this),this._polygonTool=new d.PolygonTool(this),this._allTools=[this._tapeTool,this._windowTool,this._daylightTool,this._polygonTool]}var e,n,p;return e=t,(n=[{key:\"setTool\",value:function(t){if(this.removeOverlay(),this.clearSelection(),this._currentTool&&(this._currentTool.cleanup(),this._currentTool=null),t!==this._tool)switch(this._tool=t,t){case i.line:this._currentTool=this._tapeTool;break;case i.window:this._currentTool=this._windowTool;break;case i.daylight:this._currentTool=this._daylightTool;break;case i.polygon:this._currentTool=this._polygonTool;break;case i.scaling:this.addOverlay()}else this._tool=i.none}},{key:\"disable\",value:function(){}},{key:\"enable\",value:function(){}},{key:\"mouseDown\",value:function(t){this._currentTool&&this._currentTool.mouseDown(t,h.VisualizerMath.pointToNumArray(this.stage.getPointerPosition()))}},{key:\"mouseMove\",value:function(t){this._currentTool&&this._currentTool.mouseMove(t,h.VisualizerMath.pointToNumArray(this.stage.getPointerPosition()))}},{key:\"mouseUp\",value:function(t){this._currentTool&&!this.draggingBgImage&&this._currentTool.mouseUp(t,h.VisualizerMath.pointToNumArray(this.stage.getPointerPosition())),this.draggingBgImage||this._updateIntersections()}},{key:\"keyup\",value:function(t){var e=this;if(this._selected&&\"Delete\"===t.key)return this.all=this.all.filter(function(t){return t.guid!==e._selected.guid}),this._selected.destroy(),this._selected=null,void this.measureLayer.batchDraw();this._currentTool&&this._currentTool.keyup(t)}},{key:\"resized\",value:function(){}},{key:\"setup\",value:function(t){this.visualizer=t,this.stage=t.stage,this.layer=new o.default.Layer,this.measureLayer=new o.default.Layer,this.gridLayer=new o.default.Layer,this.stage.add(this.layer),this.stage.add(this.measureLayer),this.stage.add(this.gridLayer),this._tool=i.scaling,this.drawRuler()}},{key:\"save\",value:function(){var t={};t.scale=this._scale,t.imageScale=this._imageScale,t.imagePosition=h.VisualizerMath.vec2ToPoint(this.getImgPosition()),this.gridPosition?t.gridPosition=h.VisualizerMath.vec2ToPoint(this.gridPosition):t.gridPosition={x:0,y:0},t.measurements=[];var e=this.all.map(function(t){return t.toMeasurement()});return t.measurements=e.filter(function(t){return t}),t}},{key:\"resetZoom\",value:function(){this.setTool(i.none),this._imageScale=this.calculateInitialScale(this.img),this.imageZoom=this.calculateZoom(this._imageScale),this.setImageZoom(this.imageZoom),this.setZoom(50),this.img.position({x:0,y:0}),this.img.position(h.VisualizerMath.vec2ToPoint(u.vec2.add(u.vec2.create(),h.VisualizerMath.pointToVec2(this.img.position()),[this.img.getWidth()*this._imageScale/2,this.img.getHeight()*this._imageScale/2]))),this.resized(),this.visualizer.renderAll()}},{key:\"addImage\",value:function(t,e,n){var r,i=this,s=new Image;s.onload=function(){r=new o.default.Image({x:0,y:0,draggable:!0,image:s,width:s.naturalWidth,height:s.naturalHeight}),i.layer.add(r),i.img=r,i.img.moveToBottom(),n?(i._imageScale=n.imageScale,i.imageZoom=i.calculateZoom(i._imageScale),i._scale=i.calculateInitialScale(r,!0),i.zoom=i.calculateZoom(i._scale)):(i._imageScale=i.calculateInitialScale(r),i.imageZoom=i.calculateZoom(i._imageScale)),i.setImageZoom(i.imageZoom),i.setZoom(i.zoom),i.img.on(\"dragstart\",function(){return i.draggingBgImage=!0}),i.img.on(\"dragmove\",function(t){i.reposition()}),i.img.on(\"dragend\",function(){return i.draggingBgImage=!1}),i.img.on(\"click\",function(t){i.clearSelection()}),i.img.offset({x:r.width()/2,y:r.height()/2}),i.img.position(h.VisualizerMath.vec2ToPoint(u.vec2.add(u.vec2.create(),h.VisualizerMath.pointToVec2(i.img.position()),[i.img.getWidth()*i._imageScale/2,i.img.getHeight()*i._imageScale/2]))),i.img.draw();var t=i;a.getData(s,function(){t.exifData=a.getAllTags(this),t.focalLength=parseFloat(a.getTag(this,\"FocalLength\"))});try{i.load(n)}catch(t){console.error(\"Error Loading Data: \",t)}e&&e(i.img)},s.crossOrigin=\"Anonymous\",s.src=t}},{key:\"setImageZoom\",value:function(t){t<1&&(t=1),this.imageZoom=t,this._imageScale=this.calculateScale(t),this.clearMetadata(),this.img.scale({x:this._imageScale,y:this._imageScale}),this.img.offset({x:this.img.getWidth()/2,y:this.img.getHeight()/2}),this.reposition(),this.checkScale(),this._updateIntersections(),this.gridLayer.batchDraw(),this.measureLayer.batchDraw(),this.layer.batchDraw()}},{key:\"setZoom\",value:function(t){this.zoom=t,this._scale=this.calculateScale(t),this.checkScale(),this.layer.scale({x:this._scale,y:this._scale}),this.gridLayer.scale({x:this._scale,y:this._scale}),this.reposition(),this.gridLayer.batchDraw(),this.measureLayer.batchDraw(),this.layer.batchDraw()}},{key:\"loadAnnotations\",value:function(t){var e=this;this._originalAnnotations=t,this.checkScale(),t.forEach(function(t){var n={x:t.x,y:t.y},r=new s.TextCallout(t.text,n);r.guid=t.guid,r.scale({x:e.scaleDownAmount,y:e.scaleDownAmount}),e.measureLayer.add(r),r.moveToTop(),e._annotations.push(r)}),this.setImageZoom(this.imageZoom)}},{key:\"measureDistance\",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.measurePixelDistance(t,e,n)}},{key:\"measurePixelDistance\",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=u.vec2.dist(t,e);if(0===n)return r/5/this._scale;var i=this.scaledPlaneDistance-n,o=r/this._imageScale/this._scale/this.exifData.PixelXDimension;return this._sensorSize.x*o*i/this.focalLength*(1/25.4)}},{key:\"measureArea\",value:function(t){return 0===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0)?t/Math.pow(5/this._imageScale,2):0}},{key:\"shapeChanged\",value:function(t){this.onMeasurementChange&&this.onMeasurementChange(t.toMeasurement())}},{key:\"addShape\",value:function(t){this.all.push(t)}},{key:\"select\",value:function(t){var e=this;this._selected=t,this._selected&&this._selected.selected(!0),this.all.forEach(function(t){e._selected&&t.guid===e._selected.guid||t.selected(!1)}),this.measureLayer.batchDraw()}},{key:\"scalePointToImage\",value:function(t){var e=this.getImgPosition();return[(e[0]+t[0]*this._imageScale)*this._scale,(e[1]+t[1]*this._imageScale)*this._scale]}},{key:\"scalePointFromImage\",value:function(t){var e=this.getImgPosition();return[(t[0]/this._scale-e[0])/this._imageScale,(t[1]/this._scale-e[1])/this._imageScale]}},{key:\"scaleNodeToImage\",value:function(t){var e=this.getImgPosition();return new g.NodeRecord({x:(e[0]+t.x*this._imageScale)*this._scale,y:(e[1]+t.y*this._imageScale)*this._scale})}},{key:\"scaleNodeFromImage\",value:function(t){var e=this.getImgPosition();return new g.NodeRecord({x:(t.x/this._scale-e[0])/this._imageScale,y:(t.y/this._scale-e[1])/this._imageScale})}},{key:\"load\",value:function(t){var e=this;t&&(t.gridPosition&&(t.gridPosition.x>0||t.gridPosition.y>0)&&(this.gridPosition=h.VisualizerMath.pointToVec2(t.gridPosition)),t.measurements&&t.measurements.forEach(function(t){switch(t.class){case\"TapeDistance\":e.addShape(e._tapeTool.createFromMeasurement(t));break;case\"DaylightOutline\":e.addShape(e._daylightTool.createFromMeasurement(t));break;case\"WindowOutline\":e.addShape(e._windowTool.createFromMeasurement(t));break;case\"PolygonShape\":e.addShape(e._polygonTool.createFromMeasurement(t))}}),this.repositionGrid(),this.gridLayer.batchDraw(),this.measureLayer.batchDraw(),this.layer.batchDraw())}},{key:\"drawRuler\",value:function(){var t=this,e=[],n=new o.default.Circle({radius:9,x:0,y:0,fill:\"white\"});n.on(\"mouseenter\",function(){return t._changeCursorToMove()}),n.on(\"mouseleave\",function(){return t._changeCursorToDefault()});var r=new o.default.Circle({radius:7,x:0,y:0,fill:\"black\"});r.on(\"mouseenter\",function(){return t._changeCursorToMove()}),r.on(\"mouseleave\",function(){return t._changeCursorToDefault()}),e.push(n),e.push(r),e.push(new o.default.Line({points:[0,-401,360,-401],dash:[5,1,5],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[0,-400,360,-400],dash:[5,1,5],stroke:\"black\",strokeWidth:2})),e.push(new o.default.Line({points:[161,-400,161,0],dash:[5,1,5],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[160,-400,160,0],dash:[5,1,5],stroke:\"black\",strokeWidth:2})),e.push(new o.default.Line({points:[181,-400,181,0],dash:[5,1,5],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[180,-400,180,0],dash:[5,1,5],stroke:\"black\",strokeWidth:2})),e.push(new o.default.Line({points:[301,-400,301,0],dash:[5,1,5],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[300,-400,300,0],dash:[5,1,5],stroke:\"black\",strokeWidth:2})),e.push(new o.default.Line({points:[361,-400,361,0],dash:[5,1,5],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[360,-400,360,0],dash:[5,1,5],stroke:\"black\",strokeWidth:2})),e.push(new o.default.Circle({y:-170,x:13,radius:5,strokeWidth:1,stroke:\"black\",fill:\"rgb(0, 0, 0, 0)\"})),e.push(new o.default.Circle({y:-170,x:13,radius:6,strokeWidth:1,stroke:\"white\",fill:\"rgb(0, 0, 0, 0)\"})),e.push(new o.default.Circle({y:-170,x:147,radius:5,strokeWidth:1,stroke:\"black\",fill:\"rgb(0, 0, 0, 0)\"})),e.push(new o.default.Circle({y:-170,x:147,radius:6,strokeWidth:1,stroke:\"white\",fill:\"rgb(0, 0, 0, 0)\"})),e.push(new o.default.Circle({y:-170,x:167,radius:5,strokeWidth:1,stroke:\"black\",fill:\"rgb(0, 0, 0, 0)\"})),e.push(new o.default.Circle({y:-170,x:167,radius:6,strokeWidth:1,stroke:\"white\",fill:\"rgb(0, 0, 0, 0)\"}));for(var i=10;i<360;i+=10){var a=i%12==0?-10:-5;e.push(new o.default.Line({points:[i+1,a,i+1,0],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[i,a,i,0],stroke:\"black\",strokeWidth:2})),-10===a&&(e.push(new o.default.Text({text:(i/5).toString(),y:-24,x:i-7,fontSize:18,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),e.push(new o.default.Text({text:(i/5).toString(),y:-24,x:i-7,fontSize:18,fontFamily:\"Roboto\",stroke:\"black\"})))}e.push(new o.default.Line({points:[0,0,360,0],stroke:\"black\",strokeWidth:1}));for(var s=-10;s>-400;s-=10){var u=s%12==0?10:5;e.push(new o.default.Line({points:[0,s+1,u,s+1],stroke:\"white\",strokeWidth:2})),e.push(new o.default.Line({points:[0,s,u,s],stroke:\"black\",strokeWidth:2})),10===u&&(e.push(new o.default.Text({text:(-1*s/5).toString(),y:s-7,x:11,fontSize:18,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),e.push(new o.default.Text({text:(-1*s/5).toString(),y:s-7,x:11,fontSize:18,fontFamily:\"Roboto\",stroke:\"black\"})))}e.push(new o.default.Line({points:[0,0,0,-400],stroke:\"black\",strokeWidth:1})),this.grid=new o.default.Group({draggable:!0}),this.gridLayer.add(this.grid),e.forEach(function(e){t.grid.add(e),e.moveToTop()}),this.grid.moveToTop(),this.gridLayer.batchDraw();var h=this.grid.getClientRect();if(this.gridPosition){var c=this.scalePointToImage(this.gridPosition);this.grid.position({x:c[0],y:c[1]})}else this.grid.position({x:this.stage.getWidth()/2-h.width/2,y:this.stage.getHeight()/2+h.height/2});this.grid.on(\"dragstart\",function(){return t.grid.moveToTop()}),this.grid.on(\"dragend\",function(){t.grid.moveToTop(),t.gridPosition=t.scalePointFromImage(t.grid.vec2Position())})}},{key:\"calculateScale\",value:function(t){return 50===t?1:t<50?this._minRangeSize*(2*t/100):1+this._maxRangeSize*(2*(t-50)/100)}},{key:\"calculateZoom\",value:function(t){return t>this._maxSize?100:t<=this._minSize?0:1===t?50:t<1?Math.ceil(50*((t-this._minSize)/this._minRangeSize+this._minSize)):Math.ceil((t-1)/this._maxRangeSize*50+50)}},{key:\"addOverlay\",value:function(){this.grid||this.drawRuler()}},{key:\"removeOverlay\",value:function(){this.grid&&(this.grid.destroy(),this.grid=null,this.gridLayer.draw())}},{key:\"checkScale\",value:function(){this.scaleDownAmount=1,(this.img.getWidth()>1e3||this.img.getHeight()>800)&&(this.scaleDownAmount=1.1),(this.img.getWidth()<800||this.img.getHeight()<600)&&(this.scaleDownAmount=.9),(this.img.getWidth()<600||this.img.getHeight()<400)&&(this.scaleDownAmount=.8),this.scaleAll()}},{key:\"scaleAll\",value:function(){var t=this;this._annotations.forEach(function(e){e.scale({x:t.scaleDownAmount,y:t.scaleDownAmount})})}},{key:\"calculateInitialScale\",value:function(t){var e=1;arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&(e=this._imageScale);var n={x:this.stage.getWidth()/(t.getWidth()*e),y:this.stage.getHeight()/(t.getHeight()*e)};return n.y>n.x?n.x:n.y}},{key:\"reposition\",value:function(){this.repositionGrid(),this.repositionMeasurements(),this.repositionAnnotations()}},{key:\"repositionAnnotations\",value:function(){var t=this;this._annotations.forEach(function(e,n){var r=t.scalePointToImage(h.VisualizerMath.pointToNumArray(t._originalAnnotations[n]));e.position({x:r[0],y:r[1]})}),this.measureLayer.batchDraw()}},{key:\"repositionMeasurements\",value:function(){this.all.forEach(function(t){return t.imageMoved()})}},{key:\"repositionGrid\",value:function(){if(this.grid&&this.gridPosition){var t=this.getImgPosition(),e=this.gridPosition,n=[t[0]+e[0]*this._imageScale,t[1]+e[1]*this._imageScale];this.grid.position(h.VisualizerMath.vec2ToPoint(n)),this.grid.moveToTop(),this.gridLayer.batchDraw()}}},{key:\"getImgPosition\",value:function(){return u.vec2.subtract(u.vec2.create(),h.VisualizerMath.pointToVec2(this.img.position()),[this.img.width()*this._imageScale/2,this.img.height()*this._imageScale/2])}},{key:\"_changeCursorToMove\",value:function(){this.stage.container().style.cursor=\"move\"}},{key:\"_changeCursorToDefault\",value:function(){this.stage.container().style.cursor=\"default\"}},{key:\"clearMetadata\",value:function(){this._scaledPlaneDistance=null}},{key:\"clearSelection\",value:function(){this.all.forEach(function(t){t.selected(!1)}),this.measureLayer.batchDraw()}},{key:\"_updateIntersections\",value:function(){var t=this;this.onWindowIntersection&&this.all.forEach(function(e){e.kind!==i.window&&e.kind!==i.daylight||t._annotations.forEach(function(n){e.checkIntersection([n.x(),n.y()])&&t.onWindowIntersection(n.guid,e.measuredWidth,e.measuredHeight)})})}},{key:\"scale\",get:function(){return this._scale}},{key:\"sensorSize\",get:function(){return this._sensorSize=this._sensorSize||h.VisualizerMath.lookupSensorSize(this.exifData),this._sensorSize}},{key:\"scaledPlaneDistance\",get:function(){var t=400/this._imageScale/this.exifData.PixelYDimension,e=this.sensorSize.y*t;return this._scaledPlaneDistance=this._scaledPlaneDistance||2032*this.focalLength/e,this._scaledPlaneDistance}}])&&r(e.prototype,n),p&&r(e,p),t}();e.WindowScaler=p},function(t,e,n){\"use strict\";n.r(e);var r={};n.d(r,\"EPSILON\",function(){return d}),n.d(r,\"ARRAY_TYPE\",function(){return g}),n.d(r,\"RANDOM\",function(){return p}),n.d(r,\"setMatrixArrayType\",function(){return v}),n.d(r,\"toRadian\",function(){return m}),n.d(r,\"equals\",function(){return _});var i={};n.d(i,\"create\",function(){return b}),n.d(i,\"clone\",function(){return w}),n.d(i,\"copy\",function(){return S}),n.d(i,\"identity\",function(){return x}),n.d(i,\"fromValues\",function(){return M}),n.d(i,\"set\",function(){return P}),n.d(i,\"transpose\",function(){return T}),n.d(i,\"invert\",function(){return k}),n.d(i,\"adjoint\",function(){return C}),n.d(i,\"determinant\",function(){return K}),n.d(i,\"multiply\",function(){return A}),n.d(i,\"rotate\",function(){return D}),n.d(i,\"scale\",function(){return F}),n.d(i,\"fromRotation\",function(){return O}),n.d(i,\"fromScaling\",function(){return I}),n.d(i,\"str\",function(){return R}),n.d(i,\"frob\",function(){return L}),n.d(i,\"LDU\",function(){return z}),n.d(i,\"add\",function(){return E}),n.d(i,\"subtract\",function(){return G}),n.d(i,\"exactEquals\",function(){return N}),n.d(i,\"equals\",function(){return U}),n.d(i,\"multiplyScalar\",function(){return j}),n.d(i,\"multiplyScalarAndAdd\",function(){return H}),n.d(i,\"mul\",function(){return W}),n.d(i,\"sub\",function(){return B});var o={};n.d(o,\"create\",function(){return q}),n.d(o,\"clone\",function(){return V}),n.d(o,\"copy\",function(){return X}),n.d(o,\"identity\",function(){return Y}),n.d(o,\"fromValues\",function(){return Z}),n.d(o,\"set\",function(){return J}),n.d(o,\"invert\",function(){return Q}),n.d(o,\"determinant\",function(){return $}),n.d(o,\"multiply\",function(){return tt}),n.d(o,\"rotate\",function(){return et}),n.d(o,\"scale\",function(){return nt}),n.d(o,\"translate\",function(){return rt}),n.d(o,\"fromRotation\",function(){return it}),n.d(o,\"fromScaling\",function(){return ot}),n.d(o,\"fromTranslation\",function(){return at}),n.d(o,\"str\",function(){return st}),n.d(o,\"frob\",function(){return ut}),n.d(o,\"add\",function(){return ht}),n.d(o,\"subtract\",function(){return ct}),n.d(o,\"multiplyScalar\",function(){return lt}),n.d(o,\"multiplyScalarAndAdd\",function(){return ft}),n.d(o,\"exactEquals\",function(){return dt}),n.d(o,\"equals\",function(){return gt}),n.d(o,\"mul\",function(){return pt}),n.d(o,\"sub\",function(){return vt});var a={};n.d(a,\"create\",function(){return yt}),n.d(a,\"fromMat4\",function(){return mt}),n.d(a,\"clone\",function(){return _t}),n.d(a,\"copy\",function(){return bt}),n.d(a,\"fromValues\",function(){return wt}),n.d(a,\"set\",function(){return St}),n.d(a,\"identity\",function(){return xt}),n.d(a,\"transpose\",function(){return Mt}),n.d(a,\"invert\",function(){return Pt}),n.d(a,\"adjoint\",function(){return Tt}),n.d(a,\"determinant\",function(){return kt}),n.d(a,\"multiply\",function(){return Ct}),n.d(a,\"translate\",function(){return Kt}),n.d(a,\"rotate\",function(){return At}),n.d(a,\"scale\",function(){return Dt}),n.d(a,\"fromTranslation\",function(){return Ft}),n.d(a,\"fromRotation\",function(){return Ot}),n.d(a,\"fromScaling\",function(){return It}),n.d(a,\"fromMat2d\",function(){return Rt}),n.d(a,\"fromQuat\",function(){return Lt}),n.d(a,\"normalFromMat4\",function(){return zt}),n.d(a,\"projection\",function(){return Et}),n.d(a,\"str\",function(){return Gt}),n.d(a,\"frob\",function(){return Nt}),n.d(a,\"add\",function(){return Ut}),n.d(a,\"subtract\",function(){return jt}),n.d(a,\"multiplyScalar\",function(){return Ht}),n.d(a,\"multiplyScalarAndAdd\",function(){return Wt}),n.d(a,\"exactEquals\",function(){return Bt}),n.d(a,\"equals\",function(){return qt}),n.d(a,\"mul\",function(){return Vt}),n.d(a,\"sub\",function(){return Xt});var s={};n.d(s,\"create\",function(){return Yt}),n.d(s,\"clone\",function(){return Zt}),n.d(s,\"copy\",function(){return Jt}),n.d(s,\"fromValues\",function(){return Qt}),n.d(s,\"set\",function(){return $t}),n.d(s,\"identity\",function(){return te}),n.d(s,\"transpose\",function(){return ee}),n.d(s,\"invert\",function(){return ne}),n.d(s,\"adjoint\",function(){return re}),n.d(s,\"determinant\",function(){return ie}),n.d(s,\"multiply\",function(){return oe}),n.d(s,\"translate\",function(){return ae}),n.d(s,\"scale\",function(){return se}),n.d(s,\"rotate\",function(){return ue}),n.d(s,\"rotateX\",function(){return he}),n.d(s,\"rotateY\",function(){return ce}),n.d(s,\"rotateZ\",function(){return le}),n.d(s,\"fromTranslation\",function(){return fe}),n.d(s,\"fromScaling\",function(){return de}),n.d(s,\"fromRotation\",function(){return ge}),n.d(s,\"fromXRotation\",function(){return pe}),n.d(s,\"fromYRotation\",function(){return ve}),n.d(s,\"fromZRotation\",function(){return ye}),n.d(s,\"fromRotationTranslation\",function(){return me}),n.d(s,\"fromQuat2\",function(){return _e}),n.d(s,\"getTranslation\",function(){return be}),n.d(s,\"getScaling\",function(){return we}),n.d(s,\"getRotation\",function(){return Se}),n.d(s,\"fromRotationTranslationScale\",function(){return xe}),n.d(s,\"fromRotationTranslationScaleOrigin\",function(){return Me}),n.d(s,\"fromQuat\",function(){return Pe}),n.d(s,\"frustum\",function(){return Te}),n.d(s,\"perspective\",function(){return ke}),n.d(s,\"perspectiveFromFieldOfView\",function(){return Ce}),n.d(s,\"ortho\",function(){return Ke}),n.d(s,\"lookAt\",function(){return Ae}),n.d(s,\"targetTo\",function(){return De}),n.d(s,\"str\",function(){return Fe}),n.d(s,\"frob\",function(){return Oe}),n.d(s,\"add\",function(){return Ie}),n.d(s,\"subtract\",function(){return Re}),n.d(s,\"multiplyScalar\",function(){return Le}),n.d(s,\"multiplyScalarAndAdd\",function(){return ze}),n.d(s,\"exactEquals\",function(){return Ee}),n.d(s,\"equals\",function(){return Ge}),n.d(s,\"mul\",function(){return Ne}),n.d(s,\"sub\",function(){return Ue});var u={};n.d(u,\"create\",function(){return je}),n.d(u,\"clone\",function(){return He}),n.d(u,\"length\",function(){return We}),n.d(u,\"fromValues\",function(){return Be}),n.d(u,\"copy\",function(){return qe}),n.d(u,\"set\",function(){return Ve}),n.d(u,\"add\",function(){return Xe}),n.d(u,\"subtract\",function(){return Ye}),n.d(u,\"multiply\",function(){return Ze}),n.d(u,\"divide\",function(){return Je}),n.d(u,\"ceil\",function(){return Qe}),n.d(u,\"floor\",function(){return $e}),n.d(u,\"min\",function(){return tn}),n.d(u,\"max\",function(){return en}),n.d(u,\"round\",function(){return nn}),n.d(u,\"scale\",function(){return rn}),n.d(u,\"scaleAndAdd\",function(){return on}),n.d(u,\"distance\",function(){return an}),n.d(u,\"squaredDistance\",function(){return sn}),n.d(u,\"squaredLength\",function(){return un}),n.d(u,\"negate\",function(){return hn}),n.d(u,\"inverse\",function(){return cn}),n.d(u,\"normalize\",function(){return ln}),n.d(u,\"dot\",function(){return fn}),n.d(u,\"cross\",function(){return dn}),n.d(u,\"lerp\",function(){return gn}),n.d(u,\"hermite\",function(){return pn}),n.d(u,\"bezier\",function(){return vn}),n.d(u,\"random\",function(){return yn}),n.d(u,\"transformMat4\",function(){return mn}),n.d(u,\"transformMat3\",function(){return _n}),n.d(u,\"transformQuat\",function(){return bn}),n.d(u,\"rotateX\",function(){return wn}),n.d(u,\"rotateY\",function(){return Sn}),n.d(u,\"rotateZ\",function(){return xn}),n.d(u,\"angle\",function(){return Mn}),n.d(u,\"str\",function(){return Pn}),n.d(u,\"exactEquals\",function(){return Tn}),n.d(u,\"equals\",function(){return kn}),n.d(u,\"sub\",function(){return Cn}),n.d(u,\"mul\",function(){return Kn}),n.d(u,\"div\",function(){return An}),n.d(u,\"dist\",function(){return Dn}),n.d(u,\"sqrDist\",function(){return Fn}),n.d(u,\"len\",function(){return On}),n.d(u,\"sqrLen\",function(){return In}),n.d(u,\"forEach\",function(){return Rn});var h={};n.d(h,\"create\",function(){return Ln}),n.d(h,\"clone\",function(){return zn}),n.d(h,\"fromValues\",function(){return En}),n.d(h,\"copy\",function(){return Gn}),n.d(h,\"set\",function(){return Nn}),n.d(h,\"add\",function(){return Un}),n.d(h,\"subtract\",function(){return jn}),n.d(h,\"multiply\",function(){return Hn}),n.d(h,\"divide\",function(){return Wn}),n.d(h,\"ceil\",function(){return Bn}),n.d(h,\"floor\",function(){return qn}),n.d(h,\"min\",function(){return Vn}),n.d(h,\"max\",function(){return Xn}),n.d(h,\"round\",function(){return Yn}),n.d(h,\"scale\",function(){return Zn}),n.d(h,\"scaleAndAdd\",function(){return Jn}),n.d(h,\"distance\",function(){return Qn}),n.d(h,\"squaredDistance\",function(){return $n}),n.d(h,\"length\",function(){return tr}),n.d(h,\"squaredLength\",function(){return er}),n.d(h,\"negate\",function(){return nr}),n.d(h,\"inverse\",function(){return rr}),n.d(h,\"normalize\",function(){return ir}),n.d(h,\"dot\",function(){return or}),n.d(h,\"lerp\",function(){return ar}),n.d(h,\"random\",function(){return sr}),n.d(h,\"transformMat4\",function(){return ur}),n.d(h,\"transformQuat\",function(){return hr}),n.d(h,\"str\",function(){return cr}),n.d(h,\"exactEquals\",function(){return lr}),n.d(h,\"equals\",function(){return fr}),n.d(h,\"sub\",function(){return dr}),n.d(h,\"mul\",function(){return gr}),n.d(h,\"div\",function(){return pr}),n.d(h,\"dist\",function(){return vr}),n.d(h,\"sqrDist\",function(){return yr}),n.d(h,\"len\",function(){return mr}),n.d(h,\"sqrLen\",function(){return _r}),n.d(h,\"forEach\",function(){return br});var c={};n.d(c,\"create\",function(){return wr}),n.d(c,\"identity\",function(){return Sr}),n.d(c,\"setAxisAngle\",function(){return xr}),n.d(c,\"getAxisAngle\",function(){return Mr}),n.d(c,\"multiply\",function(){return Pr}),n.d(c,\"rotateX\",function(){return Tr}),n.d(c,\"rotateY\",function(){return kr}),n.d(c,\"rotateZ\",function(){return Cr}),n.d(c,\"calculateW\",function(){return Kr}),n.d(c,\"slerp\",function(){return Ar}),n.d(c,\"random\",function(){return Dr}),n.d(c,\"invert\",function(){return Fr}),n.d(c,\"conjugate\",function(){return Or}),n.d(c,\"fromMat3\",function(){return Ir}),n.d(c,\"fromEuler\",function(){return Rr}),n.d(c,\"str\",function(){return Lr}),n.d(c,\"clone\",function(){return zr}),n.d(c,\"fromValues\",function(){return Er}),n.d(c,\"copy\",function(){return Gr}),n.d(c,\"set\",function(){return Nr}),n.d(c,\"add\",function(){return Ur}),n.d(c,\"mul\",function(){return jr}),n.d(c,\"scale\",function(){return Hr}),n.d(c,\"dot\",function(){return Wr}),n.d(c,\"lerp\",function(){return Br}),n.d(c,\"length\",function(){return qr}),n.d(c,\"len\",function(){return Vr}),n.d(c,\"squaredLength\",function(){return Xr}),n.d(c,\"sqrLen\",function(){return Yr}),n.d(c,\"normalize\",function(){return Zr}),n.d(c,\"exactEquals\",function(){return Jr}),n.d(c,\"equals\",function(){return Qr}),n.d(c,\"rotationTo\",function(){return $r}),n.d(c,\"sqlerp\",function(){return ti}),n.d(c,\"setAxes\",function(){return ei});var l={};n.d(l,\"create\",function(){return ni}),n.d(l,\"clone\",function(){return ri}),n.d(l,\"fromValues\",function(){return ii}),n.d(l,\"fromRotationTranslationValues\",function(){return oi}),n.d(l,\"fromRotationTranslation\",function(){return ai}),n.d(l,\"fromTranslation\",function(){return si}),n.d(l,\"fromRotation\",function(){return ui}),n.d(l,\"fromMat4\",function(){return hi}),n.d(l,\"copy\",function(){return ci}),n.d(l,\"identity\",function(){return li}),n.d(l,\"set\",function(){return fi}),n.d(l,\"getReal\",function(){return di}),n.d(l,\"getDual\",function(){return gi}),n.d(l,\"setReal\",function(){return pi}),n.d(l,\"setDual\",function(){return vi}),n.d(l,\"getTranslation\",function(){return yi}),n.d(l,\"translate\",function(){return mi}),n.d(l,\"rotateX\",function(){return _i}),n.d(l,\"rotateY\",function(){return bi}),n.d(l,\"rotateZ\",function(){return wi}),n.d(l,\"rotateByQuatAppend\",function(){return Si}),n.d(l,\"rotateByQuatPrepend\",function(){return xi}),n.d(l,\"rotateAroundAxis\",function(){return Mi}),n.d(l,\"add\",function(){return Pi}),n.d(l,\"multiply\",function(){return Ti}),n.d(l,\"mul\",function(){return ki}),n.d(l,\"scale\",function(){return Ci}),n.d(l,\"dot\",function(){return Ki}),n.d(l,\"lerp\",function(){return Ai}),n.d(l,\"invert\",function(){return Di}),n.d(l,\"conjugate\",function(){return Fi}),n.d(l,\"length\",function(){return Oi}),n.d(l,\"len\",function(){return Ii}),n.d(l,\"squaredLength\",function(){return Ri}),n.d(l,\"sqrLen\",function(){return Li}),n.d(l,\"normalize\",function(){return zi}),n.d(l,\"str\",function(){return Ei}),n.d(l,\"exactEquals\",function(){return Gi}),n.d(l,\"equals\",function(){return Ni});var f={};n.d(f,\"create\",function(){return Ui}),n.d(f,\"clone\",function(){return ji}),n.d(f,\"fromValues\",function(){return Hi}),n.d(f,\"copy\",function(){return Wi}),n.d(f,\"set\",function(){return Bi}),n.d(f,\"add\",function(){return qi}),n.d(f,\"subtract\",function(){return Vi}),n.d(f,\"multiply\",function(){return Xi}),n.d(f,\"divide\",function(){return Yi}),n.d(f,\"ceil\",function(){return Zi}),n.d(f,\"floor\",function(){return Ji}),n.d(f,\"min\",function(){return Qi}),n.d(f,\"max\",function(){return $i}),n.d(f,\"round\",function(){return to}),n.d(f,\"scale\",function(){return eo}),n.d(f,\"scaleAndAdd\",function(){return no}),n.d(f,\"distance\",function(){return ro}),n.d(f,\"squaredDistance\",function(){return io}),n.d(f,\"length\",function(){return oo}),n.d(f,\"squaredLength\",function(){return ao}),n.d(f,\"negate\",function(){return so}),n.d(f,\"inverse\",function(){return uo}),n.d(f,\"normalize\",function(){return ho}),n.d(f,\"dot\",function(){return co}),n.d(f,\"cross\",function(){return lo}),n.d(f,\"lerp\",function(){return fo}),n.d(f,\"random\",function(){return go}),n.d(f,\"transformMat2\",function(){return po}),n.d(f,\"transformMat2d\",function(){return vo}),n.d(f,\"transformMat3\",function(){return yo}),n.d(f,\"transformMat4\",function(){return mo}),n.d(f,\"rotate\",function(){return _o}),n.d(f,\"angle\",function(){return bo}),n.d(f,\"str\",function(){return wo}),n.d(f,\"exactEquals\",function(){return So}),n.d(f,\"equals\",function(){return xo}),n.d(f,\"len\",function(){return Mo}),n.d(f,\"sub\",function(){return Po}),n.d(f,\"mul\",function(){return To}),n.d(f,\"div\",function(){return ko}),n.d(f,\"dist\",function(){return Co}),n.d(f,\"sqrDist\",function(){return Ko}),n.d(f,\"sqrLen\",function(){return Ao}),n.d(f,\"forEach\",function(){return Do});const d=1e-6;let g=\"undefined\"!=typeof Float32Array?Float32Array:Array;const p=Math.random;function v(t){g=t}const y=Math.PI/180;function m(t){return t*y}function _(t,e){return Math.abs(t-e)<=d*Math.max(1,Math.abs(t),Math.abs(e))}function b(){let t=new g(4);return g!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t}function w(t){let e=new g(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function S(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function x(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function M(t,e,n,r){let i=new g(4);return i[0]=t,i[1]=e,i[2]=n,i[3]=r,i}function P(t,e,n,r,i){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t}function T(t,e){if(t===e){let n=e[1];t[1]=e[2],t[2]=n}else t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3];return t}function k(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=n*o-i*r;return a?(a=1/a,t[0]=o*a,t[1]=-r*a,t[2]=-i*a,t[3]=n*a,t):null}function C(t,e){let n=e[0];return t[0]=e[3],t[1]=-e[1],t[2]=-e[2],t[3]=n,t}function K(t){return t[0]*t[3]-t[2]*t[1]}function A(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=n[0],u=n[1],h=n[2],c=n[3];return t[0]=r*s+o*u,t[1]=i*s+a*u,t[2]=r*h+o*c,t[3]=i*h+a*c,t}function D(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=Math.sin(n),u=Math.cos(n);return t[0]=r*u+o*s,t[1]=i*u+a*s,t[2]=r*-s+o*u,t[3]=i*-s+a*u,t}function F(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=n[0],u=n[1];return t[0]=r*s,t[1]=i*s,t[2]=o*u,t[3]=a*u,t}function O(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t}function I(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t}function R(t){return\"mat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"}function L(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))}function z(t,e,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,e,n]}function E(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t}function G(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t}function N(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function U(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=e[0],s=e[1],u=e[2],h=e[3];return Math.abs(n-a)<=d*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=d*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-u)<=d*Math.max(1,Math.abs(i),Math.abs(u))&&Math.abs(o-h)<=d*Math.max(1,Math.abs(o),Math.abs(h))}function j(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t}function H(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t}const W=A,B=G;function q(){let t=new g(6);return g!=Float32Array&&(t[1]=0,t[2]=0,t[4]=0,t[5]=0),t[0]=1,t[3]=1,t}function V(t){let e=new g(6);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function X(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Y(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Z(t,e,n,r,i,o){let a=new g(6);return a[0]=t,a[1]=e,a[2]=n,a[3]=r,a[4]=i,a[5]=o,a}function J(t,e,n,r,i,o,a){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=a,t}function Q(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=n*o-r*i;return u?(u=1/u,t[0]=o*u,t[1]=-r*u,t[2]=-i*u,t[3]=n*u,t[4]=(i*s-o*a)*u,t[5]=(r*a-n*s)*u,t):null}function $(t){return t[0]*t[3]-t[1]*t[2]}function tt(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=n[0],c=n[1],l=n[2],f=n[3],d=n[4],g=n[5];return t[0]=r*h+o*c,t[1]=i*h+a*c,t[2]=r*l+o*f,t[3]=i*l+a*f,t[4]=r*d+o*g+s,t[5]=i*d+a*g+u,t}function et(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=Math.sin(n),c=Math.cos(n);return t[0]=r*c+o*h,t[1]=i*c+a*h,t[2]=r*-h+o*c,t[3]=i*-h+a*c,t[4]=s,t[5]=u,t}function nt(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=n[0],c=n[1];return t[0]=r*h,t[1]=i*h,t[2]=o*c,t[3]=a*c,t[4]=s,t[5]=u,t}function rt(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=n[0],c=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=r*h+o*c+s,t[5]=i*h+a*c+u,t}function it(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t}function ot(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t[4]=0,t[5]=0,t}function at(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=e[0],t[5]=e[1],t}function st(t){return\"mat2d(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\")\"}function ut(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)}function ht(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t}function ct(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t}function lt(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t}function ft(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t}function dt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function gt(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],u=e[0],h=e[1],c=e[2],l=e[3],f=e[4],g=e[5];return Math.abs(n-u)<=d*Math.max(1,Math.abs(n),Math.abs(u))&&Math.abs(r-h)<=d*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(i-c)<=d*Math.max(1,Math.abs(i),Math.abs(c))&&Math.abs(o-l)<=d*Math.max(1,Math.abs(o),Math.abs(l))&&Math.abs(a-f)<=d*Math.max(1,Math.abs(a),Math.abs(f))&&Math.abs(s-g)<=d*Math.max(1,Math.abs(s),Math.abs(g))}const pt=tt,vt=ct;function yt(){let t=new g(9);return g!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function mt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function _t(t){let e=new g(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function wt(t,e,n,r,i,o,a,s,u){let h=new g(9);return h[0]=t,h[1]=e,h[2]=n,h[3]=r,h[4]=i,h[5]=o,h[6]=a,h[7]=s,h[8]=u,h}function St(t,e,n,r,i,o,a,s,u,h){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=a,t[6]=s,t[7]=u,t[8]=h,t}function xt(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function Mt(t,e){if(t===e){let n=e[1],r=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=n,t[5]=e[7],t[6]=r,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function Pt(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=e[6],h=e[7],c=e[8],l=c*a-s*h,f=-c*o+s*u,d=h*o-a*u,g=n*l+r*f+i*d;return g?(g=1/g,t[0]=l*g,t[1]=(-c*r+i*h)*g,t[2]=(s*r-i*a)*g,t[3]=f*g,t[4]=(c*n-i*u)*g,t[5]=(-s*n+i*o)*g,t[6]=d*g,t[7]=(-h*n+r*u)*g,t[8]=(a*n-r*o)*g,t):null}function Tt(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=e[6],h=e[7],c=e[8];return t[0]=a*c-s*h,t[1]=i*h-r*c,t[2]=r*s-i*a,t[3]=s*u-o*c,t[4]=n*c-i*u,t[5]=i*o-n*s,t[6]=o*h-a*u,t[7]=r*u-n*h,t[8]=n*a-r*o,t}function kt(t){let e=t[0],n=t[1],r=t[2],i=t[3],o=t[4],a=t[5],s=t[6],u=t[7],h=t[8];return e*(h*o-a*u)+n*(-h*i+a*s)+r*(u*i-o*s)}function Ct(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=e[8],f=n[0],d=n[1],g=n[2],p=n[3],v=n[4],y=n[5],m=n[6],_=n[7],b=n[8];return t[0]=f*r+d*a+g*h,t[1]=f*i+d*s+g*c,t[2]=f*o+d*u+g*l,t[3]=p*r+v*a+y*h,t[4]=p*i+v*s+y*c,t[5]=p*o+v*u+y*l,t[6]=m*r+_*a+b*h,t[7]=m*i+_*s+b*c,t[8]=m*o+_*u+b*l,t}function Kt(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=e[8],f=n[0],d=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=s,t[5]=u,t[6]=f*r+d*a+h,t[7]=f*i+d*s+c,t[8]=f*o+d*u+l,t}function At(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=e[8],f=Math.sin(n),d=Math.cos(n);return t[0]=d*r+f*a,t[1]=d*i+f*s,t[2]=d*o+f*u,t[3]=d*a-f*r,t[4]=d*s-f*i,t[5]=d*u-f*o,t[6]=h,t[7]=c,t[8]=l,t}function Dt(t,e,n){let r=n[0],i=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Ft(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t}function Ot(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function It(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function Rt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t}function Lt(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=n+n,s=r+r,u=i+i,h=n*a,c=r*a,l=r*s,f=i*a,d=i*s,g=i*u,p=o*a,v=o*s,y=o*u;return t[0]=1-l-g,t[3]=c-y,t[6]=f+v,t[1]=c+y,t[4]=1-h-g,t[7]=d-p,t[2]=f-v,t[5]=d+p,t[8]=1-h-l,t}function zt(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=e[6],h=e[7],c=e[8],l=e[9],f=e[10],d=e[11],g=e[12],p=e[13],v=e[14],y=e[15],m=n*s-r*a,_=n*u-i*a,b=n*h-o*a,w=r*u-i*s,S=r*h-o*s,x=i*h-o*u,M=c*p-l*g,P=c*v-f*g,T=c*y-d*g,k=l*v-f*p,C=l*y-d*p,K=f*y-d*v,A=m*K-_*C+b*k+w*T-S*P+x*M;return A?(A=1/A,t[0]=(s*K-u*C+h*k)*A,t[1]=(u*T-a*K-h*P)*A,t[2]=(a*C-s*T+h*M)*A,t[3]=(i*C-r*K-o*k)*A,t[4]=(n*K-i*T+o*P)*A,t[5]=(r*T-n*C-o*M)*A,t[6]=(p*x-v*S+y*w)*A,t[7]=(v*b-g*x-y*_)*A,t[8]=(g*S-p*b+y*m)*A,t):null}function Et(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}function Gt(t){return\"mat3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\")\"}function Nt(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))}function Ut(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t}function jt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t}function Ht(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t}function Wt(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t}function Bt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]}function qt(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],u=t[6],h=t[7],c=t[8],l=e[0],f=e[1],g=e[2],p=e[3],v=e[4],y=e[5],m=e[6],_=e[7],b=e[8];return Math.abs(n-l)<=d*Math.max(1,Math.abs(n),Math.abs(l))&&Math.abs(r-f)<=d*Math.max(1,Math.abs(r),Math.abs(f))&&Math.abs(i-g)<=d*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(o-p)<=d*Math.max(1,Math.abs(o),Math.abs(p))&&Math.abs(a-v)<=d*Math.max(1,Math.abs(a),Math.abs(v))&&Math.abs(s-y)<=d*Math.max(1,Math.abs(s),Math.abs(y))&&Math.abs(u-m)<=d*Math.max(1,Math.abs(u),Math.abs(m))&&Math.abs(h-_)<=d*Math.max(1,Math.abs(h),Math.abs(_))&&Math.abs(c-b)<=d*Math.max(1,Math.abs(c),Math.abs(b))}const Vt=Ct,Xt=jt;function Yt(){let t=new g(16);return g!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function Zt(t){let e=new g(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Jt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Qt(t,e,n,r,i,o,a,s,u,h,c,l,f,d,p,v){let y=new g(16);return y[0]=t,y[1]=e,y[2]=n,y[3]=r,y[4]=i,y[5]=o,y[6]=a,y[7]=s,y[8]=u,y[9]=h,y[10]=c,y[11]=l,y[12]=f,y[13]=d,y[14]=p,y[15]=v,y}function $t(t,e,n,r,i,o,a,s,u,h,c,l,f,d,g,p,v){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=a,t[6]=s,t[7]=u,t[8]=h,t[9]=c,t[10]=l,t[11]=f,t[12]=d,t[13]=g,t[14]=p,t[15]=v,t}function te(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ee(t,e){if(t===e){let n=e[1],r=e[2],i=e[3],o=e[6],a=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=o,t[11]=e[14],t[12]=i,t[13]=a,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function ne(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=e[6],h=e[7],c=e[8],l=e[9],f=e[10],d=e[11],g=e[12],p=e[13],v=e[14],y=e[15],m=n*s-r*a,_=n*u-i*a,b=n*h-o*a,w=r*u-i*s,S=r*h-o*s,x=i*h-o*u,M=c*p-l*g,P=c*v-f*g,T=c*y-d*g,k=l*v-f*p,C=l*y-d*p,K=f*y-d*v,A=m*K-_*C+b*k+w*T-S*P+x*M;return A?(A=1/A,t[0]=(s*K-u*C+h*k)*A,t[1]=(i*C-r*K-o*k)*A,t[2]=(p*x-v*S+y*w)*A,t[3]=(f*S-l*x-d*w)*A,t[4]=(u*T-a*K-h*P)*A,t[5]=(n*K-i*T+o*P)*A,t[6]=(v*b-g*x-y*_)*A,t[7]=(c*x-f*b+d*_)*A,t[8]=(a*C-s*T+h*M)*A,t[9]=(r*T-n*C-o*M)*A,t[10]=(g*S-p*b+y*m)*A,t[11]=(l*b-c*S-d*m)*A,t[12]=(s*P-a*k-u*M)*A,t[13]=(n*k-r*P+i*M)*A,t[14]=(p*_-g*w-v*m)*A,t[15]=(c*w-l*_+f*m)*A,t):null}function re(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],u=e[6],h=e[7],c=e[8],l=e[9],f=e[10],d=e[11],g=e[12],p=e[13],v=e[14],y=e[15];return t[0]=s*(f*y-d*v)-l*(u*y-h*v)+p*(u*d-h*f),t[1]=-(r*(f*y-d*v)-l*(i*y-o*v)+p*(i*d-o*f)),t[2]=r*(u*y-h*v)-s*(i*y-o*v)+p*(i*h-o*u),t[3]=-(r*(u*d-h*f)-s*(i*d-o*f)+l*(i*h-o*u)),t[4]=-(a*(f*y-d*v)-c*(u*y-h*v)+g*(u*d-h*f)),t[5]=n*(f*y-d*v)-c*(i*y-o*v)+g*(i*d-o*f),t[6]=-(n*(u*y-h*v)-a*(i*y-o*v)+g*(i*h-o*u)),t[7]=n*(u*d-h*f)-a*(i*d-o*f)+c*(i*h-o*u),t[8]=a*(l*y-d*p)-c*(s*y-h*p)+g*(s*d-h*l),t[9]=-(n*(l*y-d*p)-c*(r*y-o*p)+g*(r*d-o*l)),t[10]=n*(s*y-h*p)-a*(r*y-o*p)+g*(r*h-o*s),t[11]=-(n*(s*d-h*l)-a*(r*d-o*l)+c*(r*h-o*s)),t[12]=-(a*(l*v-f*p)-c*(s*v-u*p)+g*(s*f-u*l)),t[13]=n*(l*v-f*p)-c*(r*v-i*p)+g*(r*f-i*l),t[14]=-(n*(s*v-u*p)-a*(r*v-i*p)+g*(r*u-i*s)),t[15]=n*(s*f-u*l)-a*(r*f-i*l)+c*(r*u-i*s),t}function ie(t){let e=t[0],n=t[1],r=t[2],i=t[3],o=t[4],a=t[5],s=t[6],u=t[7],h=t[8],c=t[9],l=t[10],f=t[11],d=t[12],g=t[13],p=t[14],v=t[15];return(e*a-n*o)*(l*v-f*p)-(e*s-r*o)*(c*v-f*g)+(e*u-i*o)*(c*p-l*g)+(n*s-r*a)*(h*v-f*d)-(n*u-i*a)*(h*p-l*d)+(r*u-i*s)*(h*g-c*d)}function oe(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=e[8],f=e[9],d=e[10],g=e[11],p=e[12],v=e[13],y=e[14],m=e[15],_=n[0],b=n[1],w=n[2],S=n[3];return t[0]=_*r+b*s+w*l+S*p,t[1]=_*i+b*u+w*f+S*v,t[2]=_*o+b*h+w*d+S*y,t[3]=_*a+b*c+w*g+S*m,_=n[4],b=n[5],w=n[6],S=n[7],t[4]=_*r+b*s+w*l+S*p,t[5]=_*i+b*u+w*f+S*v,t[6]=_*o+b*h+w*d+S*y,t[7]=_*a+b*c+w*g+S*m,_=n[8],b=n[9],w=n[10],S=n[11],t[8]=_*r+b*s+w*l+S*p,t[9]=_*i+b*u+w*f+S*v,t[10]=_*o+b*h+w*d+S*y,t[11]=_*a+b*c+w*g+S*m,_=n[12],b=n[13],w=n[14],S=n[15],t[12]=_*r+b*s+w*l+S*p,t[13]=_*i+b*u+w*f+S*v,t[14]=_*o+b*h+w*d+S*y,t[15]=_*a+b*c+w*g+S*m,t}function ae(t,e,n){let r,i,o,a,s,u,h,c,l,f,d,g,p=n[0],v=n[1],y=n[2];return e===t?(t[12]=e[0]*p+e[4]*v+e[8]*y+e[12],t[13]=e[1]*p+e[5]*v+e[9]*y+e[13],t[14]=e[2]*p+e[6]*v+e[10]*y+e[14],t[15]=e[3]*p+e[7]*v+e[11]*y+e[15]):(r=e[0],i=e[1],o=e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=e[8],f=e[9],d=e[10],g=e[11],t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=s,t[5]=u,t[6]=h,t[7]=c,t[8]=l,t[9]=f,t[10]=d,t[11]=g,t[12]=r*p+s*v+l*y+e[12],t[13]=i*p+u*v+f*y+e[13],t[14]=o*p+h*v+d*y+e[14],t[15]=a*p+c*v+g*y+e[15]),t}function se(t,e,n){let r=n[0],i=n[1],o=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function ue(t,e,n,r){let i,o,a,s,u,h,c,l,f,g,p,v,y,m,_,b,w,S,x,M,P,T,k,C,K=r[0],A=r[1],D=r[2],F=Math.sqrt(K*K+A*A+D*D);return F<d?null:(K*=F=1/F,A*=F,D*=F,i=Math.sin(n),a=1-(o=Math.cos(n)),s=e[0],u=e[1],h=e[2],c=e[3],l=e[4],f=e[5],g=e[6],p=e[7],v=e[8],y=e[9],m=e[10],_=e[11],b=K*K*a+o,w=A*K*a+D*i,S=D*K*a-A*i,x=K*A*a-D*i,M=A*A*a+o,P=D*A*a+K*i,T=K*D*a+A*i,k=A*D*a-K*i,C=D*D*a+o,t[0]=s*b+l*w+v*S,t[1]=u*b+f*w+y*S,t[2]=h*b+g*w+m*S,t[3]=c*b+p*w+_*S,t[4]=s*x+l*M+v*P,t[5]=u*x+f*M+y*P,t[6]=h*x+g*M+m*P,t[7]=c*x+p*M+_*P,t[8]=s*T+l*k+v*C,t[9]=u*T+f*k+y*C,t[10]=h*T+g*k+m*C,t[11]=c*T+p*k+_*C,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function he(t,e,n){let r=Math.sin(n),i=Math.cos(n),o=e[4],a=e[5],s=e[6],u=e[7],h=e[8],c=e[9],l=e[10],f=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*i+h*r,t[5]=a*i+c*r,t[6]=s*i+l*r,t[7]=u*i+f*r,t[8]=h*i-o*r,t[9]=c*i-a*r,t[10]=l*i-s*r,t[11]=f*i-u*r,t}function ce(t,e,n){let r=Math.sin(n),i=Math.cos(n),o=e[0],a=e[1],s=e[2],u=e[3],h=e[8],c=e[9],l=e[10],f=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i-h*r,t[1]=a*i-c*r,t[2]=s*i-l*r,t[3]=u*i-f*r,t[8]=o*r+h*i,t[9]=a*r+c*i,t[10]=s*r+l*i,t[11]=u*r+f*i,t}function le(t,e,n){let r=Math.sin(n),i=Math.cos(n),o=e[0],a=e[1],s=e[2],u=e[3],h=e[4],c=e[5],l=e[6],f=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i+h*r,t[1]=a*i+c*r,t[2]=s*i+l*r,t[3]=u*i+f*r,t[4]=h*i-o*r,t[5]=c*i-a*r,t[6]=l*i-s*r,t[7]=f*i-u*r,t}function fe(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function de(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ge(t,e,n){let r,i,o,a=n[0],s=n[1],u=n[2],h=Math.sqrt(a*a+s*s+u*u);return h<d?null:(a*=h=1/h,s*=h,u*=h,r=Math.sin(e),o=1-(i=Math.cos(e)),t[0]=a*a*o+i,t[1]=s*a*o+u*r,t[2]=u*a*o-s*r,t[3]=0,t[4]=a*s*o-u*r,t[5]=s*s*o+i,t[6]=u*s*o+a*r,t[7]=0,t[8]=a*u*o+s*r,t[9]=s*u*o-a*r,t[10]=u*u*o+i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function pe(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ve(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ye(t,e){let n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function me(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=r+r,u=i+i,h=o+o,c=r*s,l=r*u,f=r*h,d=i*u,g=i*h,p=o*h,v=a*s,y=a*u,m=a*h;return t[0]=1-(d+p),t[1]=l+m,t[2]=f-y,t[3]=0,t[4]=l-m,t[5]=1-(c+p),t[6]=g+v,t[7]=0,t[8]=f+y,t[9]=g-v,t[10]=1-(c+d),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function _e(t,e){let n=new g(3),r=-e[0],i=-e[1],o=-e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=r*r+i*i+o*o+a*a;return l>0?(n[0]=2*(s*a+c*r+u*o-h*i)/l,n[1]=2*(u*a+c*i+h*r-s*o)/l,n[2]=2*(h*a+c*o+s*i-u*r)/l):(n[0]=2*(s*a+c*r+u*o-h*i),n[1]=2*(u*a+c*i+h*r-s*o),n[2]=2*(h*a+c*o+s*i-u*r)),me(t,e,n),t}function be(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function we(t,e){let n=e[0],r=e[1],i=e[2],o=e[4],a=e[5],s=e[6],u=e[8],h=e[9],c=e[10];return t[0]=Math.sqrt(n*n+r*r+i*i),t[1]=Math.sqrt(o*o+a*a+s*s),t[2]=Math.sqrt(u*u+h*h+c*c),t}function Se(t,e){let n=e[0]+e[5]+e[10],r=0;return n>0?(r=2*Math.sqrt(n+1),t[3]=.25*r,t[0]=(e[6]-e[9])/r,t[1]=(e[8]-e[2])/r,t[2]=(e[1]-e[4])/r):e[0]>e[5]&&e[0]>e[10]?(r=2*Math.sqrt(1+e[0]-e[5]-e[10]),t[3]=(e[6]-e[9])/r,t[0]=.25*r,t[1]=(e[1]+e[4])/r,t[2]=(e[8]+e[2])/r):e[5]>e[10]?(r=2*Math.sqrt(1+e[5]-e[0]-e[10]),t[3]=(e[8]-e[2])/r,t[0]=(e[1]+e[4])/r,t[1]=.25*r,t[2]=(e[6]+e[9])/r):(r=2*Math.sqrt(1+e[10]-e[0]-e[5]),t[3]=(e[1]-e[4])/r,t[0]=(e[8]+e[2])/r,t[1]=(e[6]+e[9])/r,t[2]=.25*r),t}function xe(t,e,n,r){let i=e[0],o=e[1],a=e[2],s=e[3],u=i+i,h=o+o,c=a+a,l=i*u,f=i*h,d=i*c,g=o*h,p=o*c,v=a*c,y=s*u,m=s*h,_=s*c,b=r[0],w=r[1],S=r[2];return t[0]=(1-(g+v))*b,t[1]=(f+_)*b,t[2]=(d-m)*b,t[3]=0,t[4]=(f-_)*w,t[5]=(1-(l+v))*w,t[6]=(p+y)*w,t[7]=0,t[8]=(d+m)*S,t[9]=(p-y)*S,t[10]=(1-(l+g))*S,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function Me(t,e,n,r,i){let o=e[0],a=e[1],s=e[2],u=e[3],h=o+o,c=a+a,l=s+s,f=o*h,d=o*c,g=o*l,p=a*c,v=a*l,y=s*l,m=u*h,_=u*c,b=u*l,w=r[0],S=r[1],x=r[2],M=i[0],P=i[1],T=i[2],k=(1-(p+y))*w,C=(d+b)*w,K=(g-_)*w,A=(d-b)*S,D=(1-(f+y))*S,F=(v+m)*S,O=(g+_)*x,I=(v-m)*x,R=(1-(f+p))*x;return t[0]=k,t[1]=C,t[2]=K,t[3]=0,t[4]=A,t[5]=D,t[6]=F,t[7]=0,t[8]=O,t[9]=I,t[10]=R,t[11]=0,t[12]=n[0]+M-(k*M+A*P+O*T),t[13]=n[1]+P-(C*M+D*P+I*T),t[14]=n[2]+T-(K*M+F*P+R*T),t[15]=1,t}function Pe(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=n+n,s=r+r,u=i+i,h=n*a,c=r*a,l=r*s,f=i*a,d=i*s,g=i*u,p=o*a,v=o*s,y=o*u;return t[0]=1-l-g,t[1]=c+y,t[2]=f-v,t[3]=0,t[4]=c-y,t[5]=1-h-g,t[6]=d+p,t[7]=0,t[8]=f+v,t[9]=d-p,t[10]=1-h-l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Te(t,e,n,r,i,o,a){let s=1/(n-e),u=1/(i-r),h=1/(o-a);return t[0]=2*o*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*o*u,t[6]=0,t[7]=0,t[8]=(n+e)*s,t[9]=(i+r)*u,t[10]=(a+o)*h,t[11]=-1,t[12]=0,t[13]=0,t[14]=a*o*2*h,t[15]=0,t}function ke(t,e,n,r,i){let o,a=1/Math.tan(e/2);return t[0]=a/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(o=1/(r-i),t[10]=(i+r)*o,t[14]=2*i*r*o):(t[10]=-1,t[14]=-2*r),t}function Ce(t,e,n,r){let i=Math.tan(e.upDegrees*Math.PI/180),o=Math.tan(e.downDegrees*Math.PI/180),a=Math.tan(e.leftDegrees*Math.PI/180),s=Math.tan(e.rightDegrees*Math.PI/180),u=2/(a+s),h=2/(i+o);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=h,t[6]=0,t[7]=0,t[8]=-(a-s)*u*.5,t[9]=(i-o)*h*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t}function Ke(t,e,n,r,i,o,a){let s=1/(e-n),u=1/(r-i),h=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*h,t[11]=0,t[12]=(e+n)*s,t[13]=(i+r)*u,t[14]=(a+o)*h,t[15]=1,t}function Ae(t,e,n,r){let i,o,a,s,u,h,c,l,f,g,p=e[0],v=e[1],y=e[2],m=r[0],_=r[1],b=r[2],w=n[0],S=n[1],x=n[2];return Math.abs(p-w)<d&&Math.abs(v-S)<d&&Math.abs(y-x)<d?te(t):(c=p-w,l=v-S,f=y-x,i=_*(f*=g=1/Math.sqrt(c*c+l*l+f*f))-b*(l*=g),o=b*(c*=g)-m*f,a=m*l-_*c,(g=Math.sqrt(i*i+o*o+a*a))?(i*=g=1/g,o*=g,a*=g):(i=0,o=0,a=0),s=l*a-f*o,u=f*i-c*a,h=c*o-l*i,(g=Math.sqrt(s*s+u*u+h*h))?(s*=g=1/g,u*=g,h*=g):(s=0,u=0,h=0),t[0]=i,t[1]=s,t[2]=c,t[3]=0,t[4]=o,t[5]=u,t[6]=l,t[7]=0,t[8]=a,t[9]=h,t[10]=f,t[11]=0,t[12]=-(i*p+o*v+a*y),t[13]=-(s*p+u*v+h*y),t[14]=-(c*p+l*v+f*y),t[15]=1,t)}function De(t,e,n,r){let i=e[0],o=e[1],a=e[2],s=r[0],u=r[1],h=r[2],c=i-n[0],l=o-n[1],f=a-n[2],d=c*c+l*l+f*f;d>0&&(c*=d=1/Math.sqrt(d),l*=d,f*=d);let g=u*f-h*l,p=h*c-s*f,v=s*l-u*c;return(d=g*g+p*p+v*v)>0&&(g*=d=1/Math.sqrt(d),p*=d,v*=d),t[0]=g,t[1]=p,t[2]=v,t[3]=0,t[4]=l*v-f*p,t[5]=f*g-c*v,t[6]=c*p-l*g,t[7]=0,t[8]=c,t[9]=l,t[10]=f,t[11]=0,t[12]=i,t[13]=o,t[14]=a,t[15]=1,t}function Fe(t){return\"mat4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\", \"+t[9]+\", \"+t[10]+\", \"+t[11]+\", \"+t[12]+\", \"+t[13]+\", \"+t[14]+\", \"+t[15]+\")\"}function Oe(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))}function Ie(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}function Re(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t[9]=e[9]-n[9],t[10]=e[10]-n[10],t[11]=e[11]-n[11],t[12]=e[12]-n[12],t[13]=e[13]-n[13],t[14]=e[14]-n[14],t[15]=e[15]-n[15],t}function Le(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12]*n,t[13]=e[13]*n,t[14]=e[14]*n,t[15]=e[15]*n,t}function ze(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t[9]=e[9]+n[9]*r,t[10]=e[10]+n[10]*r,t[11]=e[11]+n[11]*r,t[12]=e[12]+n[12]*r,t[13]=e[13]+n[13]*r,t[14]=e[14]+n[14]*r,t[15]=e[15]+n[15]*r,t}function Ee(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function Ge(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],u=t[6],h=t[7],c=t[8],l=t[9],f=t[10],g=t[11],p=t[12],v=t[13],y=t[14],m=t[15],_=e[0],b=e[1],w=e[2],S=e[3],x=e[4],M=e[5],P=e[6],T=e[7],k=e[8],C=e[9],K=e[10],A=e[11],D=e[12],F=e[13],O=e[14],I=e[15];return Math.abs(n-_)<=d*Math.max(1,Math.abs(n),Math.abs(_))&&Math.abs(r-b)<=d*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-w)<=d*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(o-S)<=d*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(a-x)<=d*Math.max(1,Math.abs(a),Math.abs(x))&&Math.abs(s-M)<=d*Math.max(1,Math.abs(s),Math.abs(M))&&Math.abs(u-P)<=d*Math.max(1,Math.abs(u),Math.abs(P))&&Math.abs(h-T)<=d*Math.max(1,Math.abs(h),Math.abs(T))&&Math.abs(c-k)<=d*Math.max(1,Math.abs(c),Math.abs(k))&&Math.abs(l-C)<=d*Math.max(1,Math.abs(l),Math.abs(C))&&Math.abs(f-K)<=d*Math.max(1,Math.abs(f),Math.abs(K))&&Math.abs(g-A)<=d*Math.max(1,Math.abs(g),Math.abs(A))&&Math.abs(p-D)<=d*Math.max(1,Math.abs(p),Math.abs(D))&&Math.abs(v-F)<=d*Math.max(1,Math.abs(v),Math.abs(F))&&Math.abs(y-O)<=d*Math.max(1,Math.abs(y),Math.abs(O))&&Math.abs(m-I)<=d*Math.max(1,Math.abs(m),Math.abs(I))}const Ne=oe,Ue=Re;function je(){let t=new g(3);return g!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function He(t){var e=new g(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function We(t){let e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}function Be(t,e,n){let r=new g(3);return r[0]=t,r[1]=e,r[2]=n,r}function qe(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Ve(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function Xe(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function Ye(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function Ze(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}function Je(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}function Qe(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function $e(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function tn(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}function en(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}function nn(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function rn(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function on(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t}function an(t,e){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+r*r+i*i)}function sn(t,e){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function un(t){let e=t[0],n=t[1],r=t[2];return e*e+n*n+r*r}function hn(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function cn(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function ln(t,e){let n=e[0],r=e[1],i=e[2],o=n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o),t}function fn(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function dn(t,e,n){let r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2];return t[0]=i*u-o*s,t[1]=o*a-r*u,t[2]=r*s-i*a,t}function gn(t,e,n,r){let i=e[0],o=e[1],a=e[2];return t[0]=i+r*(n[0]-i),t[1]=o+r*(n[1]-o),t[2]=a+r*(n[2]-a),t}function pn(t,e,n,r,i,o){let a=o*o,s=a*(2*o-3)+1,u=a*(o-2)+o,h=a*(o-1),c=a*(3-2*o);return t[0]=e[0]*s+n[0]*u+r[0]*h+i[0]*c,t[1]=e[1]*s+n[1]*u+r[1]*h+i[1]*c,t[2]=e[2]*s+n[2]*u+r[2]*h+i[2]*c,t}function vn(t,e,n,r,i,o){let a=1-o,s=a*a,u=o*o,h=s*a,c=3*o*s,l=3*u*a,f=u*o;return t[0]=e[0]*h+n[0]*c+r[0]*l+i[0]*f,t[1]=e[1]*h+n[1]*c+r[1]*l+i[1]*f,t[2]=e[2]*h+n[2]*c+r[2]*l+i[2]*f,t}function yn(t,e){e=e||1;let n=2*p()*Math.PI,r=2*p()-1,i=Math.sqrt(1-r*r)*e;return t[0]=Math.cos(n)*i,t[1]=Math.sin(n)*i,t[2]=r*e,t}function mn(t,e,n){let r=e[0],i=e[1],o=e[2],a=n[3]*r+n[7]*i+n[11]*o+n[15];return a=a||1,t[0]=(n[0]*r+n[4]*i+n[8]*o+n[12])/a,t[1]=(n[1]*r+n[5]*i+n[9]*o+n[13])/a,t[2]=(n[2]*r+n[6]*i+n[10]*o+n[14])/a,t}function _n(t,e,n){let r=e[0],i=e[1],o=e[2];return t[0]=r*n[0]+i*n[3]+o*n[6],t[1]=r*n[1]+i*n[4]+o*n[7],t[2]=r*n[2]+i*n[5]+o*n[8],t}function bn(t,e,n){let r=n[0],i=n[1],o=n[2],a=n[3],s=e[0],u=e[1],h=e[2],c=i*h-o*u,l=o*s-r*h,f=r*u-i*s,d=i*f-o*l,g=o*c-r*f,p=r*l-i*c,v=2*a;return c*=v,l*=v,f*=v,d*=2,g*=2,p*=2,t[0]=s+c+d,t[1]=u+l+g,t[2]=h+f+p,t}function wn(t,e,n,r){let i=[],o=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],o[0]=i[0],o[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),o[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),t[0]=o[0]+n[0],t[1]=o[1]+n[1],t[2]=o[2]+n[2],t}function Sn(t,e,n,r){let i=[],o=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],o[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),o[1]=i[1],o[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),t[0]=o[0]+n[0],t[1]=o[1]+n[1],t[2]=o[2]+n[2],t}function xn(t,e,n,r){let i=[],o=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],o[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),o[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),o[2]=i[2],t[0]=o[0]+n[0],t[1]=o[1]+n[1],t[2]=o[2]+n[2],t}function Mn(t,e){let n=Be(t[0],t[1],t[2]),r=Be(e[0],e[1],e[2]);ln(n,n),ln(r,r);let i=fn(n,r);return i>1?0:i<-1?Math.PI:Math.acos(i)}function Pn(t){return\"vec3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"}function Tn(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function kn(t,e){let n=t[0],r=t[1],i=t[2],o=e[0],a=e[1],s=e[2];return Math.abs(n-o)<=d*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-a)<=d*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(i-s)<=d*Math.max(1,Math.abs(i),Math.abs(s))}const Cn=Ye,Kn=Ze,An=Je,Dn=an,Fn=sn,On=We,In=un,Rn=function(){let t=je();return function(e,n,r,i,o,a){let s,u;for(n||(n=3),r||(r=0),u=i?Math.min(i*n+r,e.length):e.length,s=r;s<u;s+=n)t[0]=e[s],t[1]=e[s+1],t[2]=e[s+2],o(t,t,a),e[s]=t[0],e[s+1]=t[1],e[s+2]=t[2];return e}}();function Ln(){let t=new g(4);return g!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function zn(t){let e=new g(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function En(t,e,n,r){let i=new g(4);return i[0]=t,i[1]=e,i[2]=n,i[3]=r,i}function Gn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Nn(t,e,n,r,i){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t}function Un(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t}function jn(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t}function Hn(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t[3]=e[3]*n[3],t}function Wn(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t[3]=e[3]/n[3],t}function Bn(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function qn(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function Vn(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t[3]=Math.min(e[3],n[3]),t}function Xn(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t[3]=Math.max(e[3],n[3]),t}function Yn(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t[3]=Math.round(e[3]),t}function Zn(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t}function Jn(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t}function Qn(t,e){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2],o=e[3]-t[3];return Math.sqrt(n*n+r*r+i*i+o*o)}function $n(t,e){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2],o=e[3]-t[3];return n*n+r*r+i*i+o*o}function tr(t){let e=t[0],n=t[1],r=t[2],i=t[3];return Math.sqrt(e*e+n*n+r*r+i*i)}function er(t){let e=t[0],n=t[1],r=t[2],i=t[3];return e*e+n*n+r*r+i*i}function nr(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function rr(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function ir(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=n*n+r*r+i*i+o*o;return a>0&&(a=1/Math.sqrt(a),t[0]=n*a,t[1]=r*a,t[2]=i*a,t[3]=o*a),t}function or(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function ar(t,e,n,r){let i=e[0],o=e[1],a=e[2],s=e[3];return t[0]=i+r*(n[0]-i),t[1]=o+r*(n[1]-o),t[2]=a+r*(n[2]-a),t[3]=s+r*(n[3]-s),t}function sr(t,e){var n,r,i,o,a,s;e=e||1;do{a=(n=2*p()-1)*n+(r=2*p()-1)*r}while(a>=1);do{s=(i=2*p()-1)*i+(o=2*p()-1)*o}while(s>=1);var u=Math.sqrt((1-a)/s);return t[0]=e*n,t[1]=e*r,t[2]=e*i*u,t[3]=e*o*u,t}function ur(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3];return t[0]=n[0]*r+n[4]*i+n[8]*o+n[12]*a,t[1]=n[1]*r+n[5]*i+n[9]*o+n[13]*a,t[2]=n[2]*r+n[6]*i+n[10]*o+n[14]*a,t[3]=n[3]*r+n[7]*i+n[11]*o+n[15]*a,t}function hr(t,e,n){let r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2],h=n[3],c=h*r+s*o-u*i,l=h*i+u*r-a*o,f=h*o+a*i-s*r,d=-a*r-s*i-u*o;return t[0]=c*h+d*-a+l*-u-f*-s,t[1]=l*h+d*-s+f*-a-c*-u,t[2]=f*h+d*-u+c*-s-l*-a,t[3]=e[3],t}function cr(t){return\"vec4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"}function lr(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function fr(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=e[0],s=e[1],u=e[2],h=e[3];return Math.abs(n-a)<=d*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=d*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-u)<=d*Math.max(1,Math.abs(i),Math.abs(u))&&Math.abs(o-h)<=d*Math.max(1,Math.abs(o),Math.abs(h))}const dr=jn,gr=Hn,pr=Wn,vr=Qn,yr=$n,mr=tr,_r=er,br=function(){let t=Ln();return function(e,n,r,i,o,a){let s,u;for(n||(n=4),r||(r=0),u=i?Math.min(i*n+r,e.length):e.length,s=r;s<u;s+=n)t[0]=e[s],t[1]=e[s+1],t[2]=e[s+2],t[3]=e[s+3],o(t,t,a),e[s]=t[0],e[s+1]=t[1],e[s+2]=t[2],e[s+3]=t[3];return e}}();function wr(){let t=new g(4);return g!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function Sr(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function xr(t,e,n){n*=.5;let r=Math.sin(n);return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=Math.cos(n),t}function Mr(t,e){let n=2*Math.acos(e[3]),r=Math.sin(n/2);return r>d?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=1,t[1]=0,t[2]=0),n}function Pr(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=n[0],u=n[1],h=n[2],c=n[3];return t[0]=r*c+a*s+i*h-o*u,t[1]=i*c+a*u+o*s-r*h,t[2]=o*c+a*h+r*u-i*s,t[3]=a*c-r*s-i*u-o*h,t}function Tr(t,e,n){n*=.5;let r=e[0],i=e[1],o=e[2],a=e[3],s=Math.sin(n),u=Math.cos(n);return t[0]=r*u+a*s,t[1]=i*u+o*s,t[2]=o*u-i*s,t[3]=a*u-r*s,t}function kr(t,e,n){n*=.5;let r=e[0],i=e[1],o=e[2],a=e[3],s=Math.sin(n),u=Math.cos(n);return t[0]=r*u-o*s,t[1]=i*u+a*s,t[2]=o*u+r*s,t[3]=a*u-i*s,t}function Cr(t,e,n){n*=.5;let r=e[0],i=e[1],o=e[2],a=e[3],s=Math.sin(n),u=Math.cos(n);return t[0]=r*u+i*s,t[1]=i*u-r*s,t[2]=o*u+a*s,t[3]=a*u-o*s,t}function Kr(t,e){let n=e[0],r=e[1],i=e[2];return t[0]=n,t[1]=r,t[2]=i,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-i*i)),t}function Ar(t,e,n,r){let i,o,a,s,u,h=e[0],c=e[1],l=e[2],f=e[3],g=n[0],p=n[1],v=n[2],y=n[3];return(o=h*g+c*p+l*v+f*y)<0&&(o=-o,g=-g,p=-p,v=-v,y=-y),1-o>d?(i=Math.acos(o),a=Math.sin(i),s=Math.sin((1-r)*i)/a,u=Math.sin(r*i)/a):(s=1-r,u=r),t[0]=s*h+u*g,t[1]=s*c+u*p,t[2]=s*l+u*v,t[3]=s*f+u*y,t}function Dr(t){let e=p(),n=p(),r=p(),i=Math.sqrt(1-e),o=Math.sqrt(e);return t[0]=i*Math.sin(2*Math.PI*n),t[1]=i*Math.cos(2*Math.PI*n),t[2]=o*Math.sin(2*Math.PI*r),t[3]=o*Math.cos(2*Math.PI*r),t}function Fr(t,e){let n=e[0],r=e[1],i=e[2],o=e[3],a=n*n+r*r+i*i+o*o,s=a?1/a:0;return t[0]=-n*s,t[1]=-r*s,t[2]=-i*s,t[3]=o*s,t}function Or(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Ir(t,e){let n,r=e[0]+e[4]+e[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let r=0;e[4]>e[0]&&(r=1),e[8]>e[3*r+r]&&(r=2);let i=(r+1)%3,o=(r+2)%3;n=Math.sqrt(e[3*r+r]-e[3*i+i]-e[3*o+o]+1),t[r]=.5*n,n=.5/n,t[3]=(e[3*i+o]-e[3*o+i])*n,t[i]=(e[3*i+r]+e[3*r+i])*n,t[o]=(e[3*o+r]+e[3*r+o])*n}return t}function Rr(t,e,n,r){let i=.5*Math.PI/180;e*=i,n*=i,r*=i;let o=Math.sin(e),a=Math.cos(e),s=Math.sin(n),u=Math.cos(n),h=Math.sin(r),c=Math.cos(r);return t[0]=o*u*c-a*s*h,t[1]=a*s*c+o*u*h,t[2]=a*u*h-o*s*c,t[3]=a*u*c+o*s*h,t}function Lr(t){return\"quat(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"}const zr=zn,Er=En,Gr=Gn,Nr=Nn,Ur=Un,jr=Pr,Hr=Zn,Wr=or,Br=ar,qr=tr,Vr=qr,Xr=er,Yr=Xr,Zr=ir,Jr=lr,Qr=fr,$r=function(){let t=je(),e=Be(1,0,0),n=Be(0,1,0);return function(r,i,o){let a=fn(i,o);return a<-.999999?(dn(t,e,i),On(t)<1e-6&&dn(t,n,i),ln(t,t),xr(r,t,Math.PI),r):a>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(dn(t,i,o),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+a,Zr(r,r))}}(),ti=function(){let t=wr(),e=wr();return function(n,r,i,o,a,s){return Ar(t,r,a,s),Ar(e,i,o,s),Ar(n,t,e,2*s*(1-s)),n}}(),ei=function(){let t=yt();return function(e,n,r,i){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=i[0],t[4]=i[1],t[7]=i[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],Zr(e,Ir(e,t))}}();function ni(){let t=new g(8);return g!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t}function ri(t){let e=new g(8);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e}function ii(t,e,n,r,i,o,a,s){let u=new g(8);return u[0]=t,u[1]=e,u[2]=n,u[3]=r,u[4]=i,u[5]=o,u[6]=a,u[7]=s,u}function oi(t,e,n,r,i,o,a){let s=new g(8);s[0]=t,s[1]=e,s[2]=n,s[3]=r;let u=.5*i,h=.5*o,c=.5*a;return s[4]=u*r+h*n-c*e,s[5]=h*r+c*t-u*n,s[6]=c*r+u*e-h*t,s[7]=-u*t-h*e-c*n,s}function ai(t,e,n){let r=.5*n[0],i=.5*n[1],o=.5*n[2],a=e[0],s=e[1],u=e[2],h=e[3];return t[0]=a,t[1]=s,t[2]=u,t[3]=h,t[4]=r*h+i*u-o*s,t[5]=i*h+o*a-r*u,t[6]=o*h+r*s-i*a,t[7]=-r*a-i*s-o*u,t}function si(t,e){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=.5*e[0],t[5]=.5*e[1],t[6]=.5*e[2],t[7]=0,t}function ui(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function hi(t,e){let n=wr();Se(n,e);let r=new g(3);return be(r,e),ai(t,n,r),t}function ci(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function li(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function fi(t,e,n,r,i,o,a,s,u){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=a,t[6]=s,t[7]=u,t}const di=Gr;function gi(t,e){return t[0]=e[4],t[1]=e[5],t[2]=e[6],t[3]=e[7],t}const pi=Gr;function vi(t,e){return t[4]=e[0],t[5]=e[1],t[6]=e[2],t[7]=e[3],t}function yi(t,e){let n=e[4],r=e[5],i=e[6],o=e[7],a=-e[0],s=-e[1],u=-e[2],h=e[3];return t[0]=2*(n*h+o*a+r*u-i*s),t[1]=2*(r*h+o*s+i*a-n*u),t[2]=2*(i*h+o*u+n*s-r*a),t}function mi(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=.5*n[0],u=.5*n[1],h=.5*n[2],c=e[4],l=e[5],f=e[6],d=e[7];return t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=a*s+i*h-o*u+c,t[5]=a*u+o*s-r*h+l,t[6]=a*h+r*u-i*s+f,t[7]=-r*s-i*u-o*h+d,t}function _i(t,e,n){let r=-e[0],i=-e[1],o=-e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=s*a+c*r+u*o-h*i,f=u*a+c*i+h*r-s*o,d=h*a+c*o+s*i-u*r,g=c*a-s*r-u*i-h*o;return Tr(t,e,n),r=t[0],i=t[1],o=t[2],a=t[3],t[4]=l*a+g*r+f*o-d*i,t[5]=f*a+g*i+d*r-l*o,t[6]=d*a+g*o+l*i-f*r,t[7]=g*a-l*r-f*i-d*o,t}function bi(t,e,n){let r=-e[0],i=-e[1],o=-e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=s*a+c*r+u*o-h*i,f=u*a+c*i+h*r-s*o,d=h*a+c*o+s*i-u*r,g=c*a-s*r-u*i-h*o;return kr(t,e,n),r=t[0],i=t[1],o=t[2],a=t[3],t[4]=l*a+g*r+f*o-d*i,t[5]=f*a+g*i+d*r-l*o,t[6]=d*a+g*o+l*i-f*r,t[7]=g*a-l*r-f*i-d*o,t}function wi(t,e,n){let r=-e[0],i=-e[1],o=-e[2],a=e[3],s=e[4],u=e[5],h=e[6],c=e[7],l=s*a+c*r+u*o-h*i,f=u*a+c*i+h*r-s*o,d=h*a+c*o+s*i-u*r,g=c*a-s*r-u*i-h*o;return Cr(t,e,n),r=t[0],i=t[1],o=t[2],a=t[3],t[4]=l*a+g*r+f*o-d*i,t[5]=f*a+g*i+d*r-l*o,t[6]=d*a+g*o+l*i-f*r,t[7]=g*a-l*r-f*i-d*o,t}function Si(t,e,n){let r=n[0],i=n[1],o=n[2],a=n[3],s=e[0],u=e[1],h=e[2],c=e[3];return t[0]=s*a+c*r+u*o-h*i,t[1]=u*a+c*i+h*r-s*o,t[2]=h*a+c*o+s*i-u*r,t[3]=c*a-s*r-u*i-h*o,s=e[4],u=e[5],h=e[6],c=e[7],t[4]=s*a+c*r+u*o-h*i,t[5]=u*a+c*i+h*r-s*o,t[6]=h*a+c*o+s*i-u*r,t[7]=c*a-s*r-u*i-h*o,t}function xi(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=n[0],u=n[1],h=n[2],c=n[3];return t[0]=r*c+a*s+i*h-o*u,t[1]=i*c+a*u+o*s-r*h,t[2]=o*c+a*h+r*u-i*s,t[3]=a*c-r*s-i*u-o*h,s=n[4],u=n[5],h=n[6],c=n[7],t[4]=r*c+a*s+i*h-o*u,t[5]=i*c+a*u+o*s-r*h,t[6]=o*c+a*h+r*u-i*s,t[7]=a*c-r*s-i*u-o*h,t}function Mi(t,e,n,r){if(Math.abs(r)<d)return ci(t,e);let i=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);r*=.5;let o=Math.sin(r),a=o*n[0]/i,s=o*n[1]/i,u=o*n[2]/i,h=Math.cos(r),c=e[0],l=e[1],f=e[2],g=e[3];t[0]=c*h+g*a+l*u-f*s,t[1]=l*h+g*s+f*a-c*u,t[2]=f*h+g*u+c*s-l*a,t[3]=g*h-c*a-l*s-f*u;let p=e[4],v=e[5],y=e[6],m=e[7];return t[4]=p*h+m*a+v*u-y*s,t[5]=v*h+m*s+y*a-p*u,t[6]=y*h+m*u+p*s-v*a,t[7]=m*h-p*a-v*s-y*u,t}function Pi(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t}function Ti(t,e,n){let r=e[0],i=e[1],o=e[2],a=e[3],s=n[4],u=n[5],h=n[6],c=n[7],l=e[4],f=e[5],d=e[6],g=e[7],p=n[0],v=n[1],y=n[2],m=n[3];return t[0]=r*m+a*p+i*y-o*v,t[1]=i*m+a*v+o*p-r*y,t[2]=o*m+a*y+r*v-i*p,t[3]=a*m-r*p-i*v-o*y,t[4]=r*c+a*s+i*h-o*u+l*m+g*p+f*y-d*v,t[5]=i*c+a*u+o*s-r*h+f*m+g*v+d*p-l*y,t[6]=o*c+a*h+r*u-i*s+d*m+g*y+l*v-f*p,t[7]=a*c-r*s-i*u-o*h+g*m-l*p-f*v-d*y,t}const ki=Ti;function Ci(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t}const Ki=Wr;function Ai(t,e,n,r){let i=1-r;return Ki(e,n)<0&&(r=-r),t[0]=e[0]*i+n[0]*r,t[1]=e[1]*i+n[1]*r,t[2]=e[2]*i+n[2]*r,t[3]=e[3]*i+n[3]*r,t[4]=e[4]*i+n[4]*r,t[5]=e[5]*i+n[5]*r,t[6]=e[6]*i+n[6]*r,t[7]=e[7]*i+n[7]*r,t}function Di(t,e){let n=Ri(e);return t[0]=-e[0]/n,t[1]=-e[1]/n,t[2]=-e[2]/n,t[3]=e[3]/n,t[4]=-e[4]/n,t[5]=-e[5]/n,t[6]=-e[6]/n,t[7]=e[7]/n,t}function Fi(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=e[7],t}const Oi=qr,Ii=Oi,Ri=Xr,Li=Ri;function zi(t,e){let n=Ri(e);if(n>0){n=Math.sqrt(n);let r=e[0]/n,i=e[1]/n,o=e[2]/n,a=e[3]/n,s=e[4],u=e[5],h=e[6],c=e[7],l=r*s+i*u+o*h+a*c;t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=(s-r*l)/n,t[5]=(u-i*l)/n,t[6]=(h-o*l)/n,t[7]=(c-a*l)/n}return t}function Ei(t){return\"quat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\")\"}function Gi(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]}function Ni(t,e){let n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],u=t[6],h=t[7],c=e[0],l=e[1],f=e[2],g=e[3],p=e[4],v=e[5],y=e[6],m=e[7];return Math.abs(n-c)<=d*Math.max(1,Math.abs(n),Math.abs(c))&&Math.abs(r-l)<=d*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(i-f)<=d*Math.max(1,Math.abs(i),Math.abs(f))&&Math.abs(o-g)<=d*Math.max(1,Math.abs(o),Math.abs(g))&&Math.abs(a-p)<=d*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(s-v)<=d*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(u-y)<=d*Math.max(1,Math.abs(u),Math.abs(y))&&Math.abs(h-m)<=d*Math.max(1,Math.abs(h),Math.abs(m))}function Ui(){let t=new g(2);return g!=Float32Array&&(t[0]=0,t[1]=0),t}function ji(t){let e=new g(2);return e[0]=t[0],e[1]=t[1],e}function Hi(t,e){let n=new g(2);return n[0]=t,n[1]=e,n}function Wi(t,e){return t[0]=e[0],t[1]=e[1],t}function Bi(t,e,n){return t[0]=e,t[1]=n,t}function qi(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function Vi(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function Xi(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t}function Yi(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t}function Zi(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function Ji(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function Qi(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}function $i(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}function to(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t}function eo(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}function no(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t}function ro(t,e){var n=e[0]-t[0],r=e[1]-t[1];return Math.sqrt(n*n+r*r)}function io(t,e){var n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r}function oo(t){var e=t[0],n=t[1];return Math.sqrt(e*e+n*n)}function ao(t){var e=t[0],n=t[1];return e*e+n*n}function so(t,e){return t[0]=-e[0],t[1]=-e[1],t}function uo(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function ho(t,e){var n=e[0],r=e[1],i=n*n+r*r;return i>0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i),t}function co(t,e){return t[0]*e[0]+t[1]*e[1]}function lo(t,e,n){var r=e[0]*n[1]-e[1]*n[0];return t[0]=t[1]=0,t[2]=r,t}function fo(t,e,n,r){var i=e[0],o=e[1];return t[0]=i+r*(n[0]-i),t[1]=o+r*(n[1]-o),t}function go(t,e){e=e||1;var n=2*p()*Math.PI;return t[0]=Math.cos(n)*e,t[1]=Math.sin(n)*e,t}function po(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[2]*i,t[1]=n[1]*r+n[3]*i,t}function vo(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[2]*i+n[4],t[1]=n[1]*r+n[3]*i+n[5],t}function yo(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[3]*i+n[6],t[1]=n[1]*r+n[4]*i+n[7],t}function mo(t,e,n){let r=e[0],i=e[1];return t[0]=n[0]*r+n[4]*i+n[12],t[1]=n[1]*r+n[5]*i+n[13],t}function _o(t,e,n,r){let i=e[0]-n[0],o=e[1]-n[1],a=Math.sin(r),s=Math.cos(r);return t[0]=i*s-o*a+n[0],t[1]=i*a+o*s+n[1],t}function bo(t,e){let n=t[0],r=t[1],i=e[0],o=e[1],a=n*n+r*r;a>0&&(a=1/Math.sqrt(a));let s=i*i+o*o;s>0&&(s=1/Math.sqrt(s));let u=(n*i+r*o)*a*s;return u>1?0:u<-1?Math.PI:Math.acos(u)}function wo(t){return\"vec2(\"+t[0]+\", \"+t[1]+\")\"}function So(t,e){return t[0]===e[0]&&t[1]===e[1]}function xo(t,e){let n=t[0],r=t[1],i=e[0],o=e[1];return Math.abs(n-i)<=d*Math.max(1,Math.abs(n),Math.abs(i))&&Math.abs(r-o)<=d*Math.max(1,Math.abs(r),Math.abs(o))}const Mo=oo,Po=Vi,To=Xi,ko=Yi,Co=ro,Ko=io,Ao=ao,Do=function(){let t=Ui();return function(e,n,r,i,o,a){let s,u;for(n||(n=2),r||(r=0),u=i?Math.min(i*n+r,e.length):e.length,s=r;s<u;s+=n)t[0]=e[s],t[1]=e[s+1],o(t,t,a),e[s]=t[0],e[s+1]=t[1];return e}}();n.d(e,\"glMatrix\",function(){return r}),n.d(e,\"mat2\",function(){return i}),n.d(e,\"mat2d\",function(){return o}),n.d(e,\"mat3\",function(){return a}),n.d(e,\"mat4\",function(){return s}),n.d(e,\"quat\",function(){return c}),n.d(e,\"quat2\",function(){return l}),n.d(e,\"vec2\",function(){return f}),n.d(e,\"vec3\",function(){return u}),n.d(e,\"vec4\",function(){return h})},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function i(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(t,e){return!e||\"object\"!==o(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function h(t,e){return(h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var c=n(5),l={x:0,y:0,z:0},f=function(t){function e(t){return a(this,e),s(s(this,t?u(e).call(this,t):u(e).call(this)))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&h(t,e)}(e,c.Record(l)),e}();e.NodeRecord=f;var d=function(){function t(){a(this,t)}return i(t,null,[{key:\"Subtract\",value:function(t,e){return new f({x:t.x-e.x,y:t.y-e.y,z:t.z-e.z})}},{key:\"ToArray2\",value:function(t){return[t.x,t.y]}},{key:\"FromArray\",value:function(t){return t.length>2?new f({x:t[0],y:t[1],z:t[2]}):new f({x:t[0],y:t[1]})}},{key:\"ToString\",value:function(t){return\"Node(\".concat(t.x,\", \").concat(t.y,\", \").concat(t.z,\")\")}}]),t}();e.Node=d;var g=function(){function t(){a(this,t)}return i(t,null,[{key:\"Shift\",value:function(t){return{head:t.first(),tail:t.shift()}}}]),t}();e.NodeList=g},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"version\",function(){return yr}),n.d(e,\"Collection\",function(){return M}),n.d(e,\"Iterable\",function(){return _r}),n.d(e,\"Seq\",function(){return Z}),n.d(e,\"Map\",function(){return De}),n.d(e,\"OrderedMap\",function(){return vn}),n.d(e,\"List\",function(){return en}),n.d(e,\"Stack\",function(){return Sn}),n.d(e,\"Set\",function(){return On}),n.d(e,\"OrderedSet\",function(){return nr}),n.d(e,\"Record\",function(){return sr}),n.d(e,\"Range\",function(){return Nn}),n.d(e,\"Repeat\",function(){return gr}),n.d(e,\"is\",function(){return ft}),n.d(e,\"fromJS\",function(){return pr}),n.d(e,\"hash\",function(){return pt}),n.d(e,\"isImmutable\",function(){return F}),n.d(e,\"isCollection\",function(){return m}),n.d(e,\"isKeyed\",function(){return b}),n.d(e,\"isIndexed\",function(){return S}),n.d(e,\"isAssociative\",function(){return x}),n.d(e,\"isOrdered\",function(){return I}),n.d(e,\"isValueObject\",function(){return lt}),n.d(e,\"get\",function(){return ne}),n.d(e,\"getIn\",function(){return Un}),n.d(e,\"has\",function(){return ee}),n.d(e,\"hasIn\",function(){return Hn}),n.d(e,\"merge\",function(){return ye}),n.d(e,\"mergeDeep\",function(){return _e}),n.d(e,\"mergeWith\",function(){return me}),n.d(e,\"mergeDeepWith\",function(){return be}),n.d(e,\"remove\",function(){return ie}),n.d(e,\"removeIn\",function(){return he}),n.d(e,\"set\",function(){return oe}),n.d(e,\"setIn\",function(){return se}),n.d(e,\"update\",function(){return le}),n.d(e,\"updateIn\",function(){return ae});var r=5,i=1<<r,o=i-1,a={};function s(t){t&&(t.value=!0)}function u(){}function h(t){return void 0===t.size&&(t.size=t.__iterate(l)),t.size}function c(t,e){if(\"number\"!=typeof e){var n=e>>>0;if(\"\"+n!==e||4294967295===n)return NaN;e=n}return e<0?h(t)+e:e}function l(){return!0}function f(t,e,n){return(0===t&&!v(t)||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function d(t,e){return p(t,e,0)}function g(t,e){return p(t,e,e)}function p(t,e,n){return void 0===t?n:v(t)?e===1/0?e:0|Math.max(0,e+t):void 0===e||e===t?t:0|Math.min(e,t)}function v(t){return t<0||0===t&&1/t==-1/0}var y=\"@@__IMMUTABLE_ITERABLE__@@\";function m(t){return Boolean(t&&t[y])}var _=\"@@__IMMUTABLE_KEYED__@@\";function b(t){return Boolean(t&&t[_])}var w=\"@@__IMMUTABLE_INDEXED__@@\";function S(t){return Boolean(t&&t[w])}function x(t){return b(t)||S(t)}var M=function(t){return m(t)?t:Z(t)},P=function(t){function e(t){return b(t)?t:J(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(M),T=function(t){function e(t){return S(t)?t:Q(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(M),k=function(t){function e(t){return m(t)&&!x(t)?t:$(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(M);M.Keyed=P,M.Indexed=T,M.Set=k;var C=\"@@__IMMUTABLE_SEQ__@@\";function K(t){return Boolean(t&&t[C])}var A=\"@@__IMMUTABLE_RECORD__@@\";function D(t){return Boolean(t&&t[A])}function F(t){return m(t)||D(t)}var O=\"@@__IMMUTABLE_ORDERED__@@\";function I(t){return Boolean(t&&t[O])}var R=0,L=1,z=2,E=\"function\"==typeof Symbol&&Symbol.iterator,G=\"@@iterator\",N=E||G,U=function(t){this.next=t};function j(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function H(){return{value:void 0,done:!0}}function W(t){return!!V(t)}function B(t){return t&&\"function\"==typeof t.next}function q(t){var e=V(t);return e&&e.call(t)}function V(t){var e=t&&(E&&t[E]||t[G]);if(\"function\"==typeof e)return e}U.prototype.toString=function(){return\"[Iterator]\"},U.KEYS=R,U.VALUES=L,U.ENTRIES=z,U.prototype.inspect=U.prototype.toSource=function(){return this.toString()},U.prototype[N]=function(){return this};var X=Object.prototype.hasOwnProperty;function Y(t){return!(!Array.isArray(t)&&\"string\"!=typeof t)||t&&\"object\"==typeof t&&Number.isInteger(t.length)&&t.length>=0&&(0===t.length?1===Object.keys(t).length:t.hasOwnProperty(t.length-1))}var Z=function(t){function e(t){return null===t||void 0===t?it():F(t)?t.toSeq():function(t){var e=st(t);if(e)return e;if(\"object\"==typeof t)return new et(t);throw new TypeError(\"Expected Array or collection object of values, or keyed object: \"+t)}(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toSeq=function(){return this},e.prototype.toString=function(){return this.__toString(\"Seq {\",\"}\")},e.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},e.prototype.__iterate=function(t,e){var n=this._cache;if(n){for(var r=n.length,i=0;i!==r;){var o=n[e?r-++i:i++];if(!1===t(o[1],o[0],this))break}return i}return this.__iterateUncached(t,e)},e.prototype.__iterator=function(t,e){var n=this._cache;if(n){var r=n.length,i=0;return new U(function(){if(i===r)return{value:void 0,done:!0};var o=n[e?r-++i:i++];return j(t,o[0],o[1])})}return this.__iteratorUncached(t,e)},e}(M),J=function(t){function e(t){return null===t||void 0===t?it().toKeyedSeq():m(t)?b(t)?t.toSeq():t.fromEntrySeq():D(t)?t.toSeq():ot(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toKeyedSeq=function(){return this},e}(Z),Q=function(t){function e(t){return null===t||void 0===t?it():m(t)?b(t)?t.entrySeq():t.toIndexedSeq():D(t)?t.toSeq().entrySeq():at(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return e(arguments)},e.prototype.toIndexedSeq=function(){return this},e.prototype.toString=function(){return this.__toString(\"Seq [\",\"]\")},e}(Z),$=function(t){function e(t){return(m(t)&&!x(t)?t:Q(t)).toSetSeq()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return e(arguments)},e.prototype.toSetSeq=function(){return this},e}(Z);Z.isSeq=K,Z.Keyed=J,Z.Set=$,Z.Indexed=Q,Z.prototype[C]=!0;var tt=function(t){function e(t){this._array=t,this.size=t.length}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t,e){return this.has(t)?this._array[c(this,t)]:e},e.prototype.__iterate=function(t,e){for(var n=this._array,r=n.length,i=0;i!==r;){var o=e?r-++i:i++;if(!1===t(n[o],o,this))break}return i},e.prototype.__iterator=function(t,e){var n=this._array,r=n.length,i=0;return new U(function(){if(i===r)return{value:void 0,done:!0};var o=e?r-++i:i++;return j(t,o,n[o])})},e}(Q),et=function(t){function e(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},e.prototype.has=function(t){return X.call(this._object,t)},e.prototype.__iterate=function(t,e){for(var n=this._object,r=this._keys,i=r.length,o=0;o!==i;){var a=r[e?i-++o:o++];if(!1===t(n[a],a,this))break}return o},e.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length,o=0;return new U(function(){if(o===i)return{value:void 0,done:!0};var a=r[e?i-++o:o++];return j(t,a,n[a])})},e}(J);et.prototype[O]=!0;var nt,rt=function(t){function e(t){this._collection=t,this.size=t.length||t.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);var n=q(this._collection),r=0;if(B(n))for(var i;!(i=n.next()).done&&!1!==t(i.value,r++,this););return r},e.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=q(this._collection);if(!B(n))return new U(H);var r=0;return new U(function(){var e=n.next();return e.done?e:j(t,r++,e.value)})},e}(Q);function it(){return nt||(nt=new tt([]))}function ot(t){var e=Array.isArray(t)?new tt(t):W(t)?new rt(t):void 0;if(e)return e.fromEntrySeq();if(\"object\"==typeof t)return new et(t);throw new TypeError(\"Expected Array or collection object of [k, v] entries, or keyed object: \"+t)}function at(t){var e=st(t);if(e)return e;throw new TypeError(\"Expected Array or collection object of values: \"+t)}function st(t){return Y(t)?new tt(t):W(t)?new rt(t):void 0}var ut=\"@@__IMMUTABLE_MAP__@@\";function ht(t){return Boolean(t&&t[ut])}function ct(t){return ht(t)&&I(t)}function lt(t){return Boolean(t&&\"function\"==typeof t.equals&&\"function\"==typeof t.hashCode)}function ft(t,e){if(t===e||t!=t&&e!=e)return!0;if(!t||!e)return!1;if(\"function\"==typeof t.valueOf&&\"function\"==typeof e.valueOf){if((t=t.valueOf())===(e=e.valueOf())||t!=t&&e!=e)return!0;if(!t||!e)return!1}return!!(lt(t)&&lt(e)&&t.equals(e))}var dt=\"function\"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(t,e){var n=65535&(t|=0),r=65535&(e|=0);return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0};function gt(t){return t>>>1&1073741824|3221225471&t}function pt(t){if(!1===t||null===t||void 0===t)return 0;if(\"function\"==typeof t.valueOf&&(!1===(t=t.valueOf())||null===t||void 0===t))return 0;if(!0===t)return 1;var e=typeof t;if(\"number\"===e){if(t!=t||t===1/0)return 0;var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)n^=t/=4294967295;return gt(n)}if(\"string\"===e)return t.length>xt?function(t){var e=Tt[t];void 0===e&&(e=vt(t),Pt===Mt&&(Pt=0,Tt={}),Pt++,Tt[t]=e);return e}(t):vt(t);if(\"function\"==typeof t.hashCode)return gt(t.hashCode());if(\"object\"===e||\"function\"===e)return function(t){var e;if(bt&&void 0!==(e=_t.get(t)))return e;if(void 0!==(e=t[St]))return e;if(!mt){if(void 0!==(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[St]))return e;if(void 0!==(e=function(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}(t)))return e}e=++wt,1073741824&wt&&(wt=0);if(bt)_t.set(t,e);else{if(void 0!==yt&&!1===yt(t))throw new Error(\"Non-extensible objects are not allowed as keys.\");if(mt)Object.defineProperty(t,St,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[St]=e;else{if(void 0===t.nodeType)throw new Error(\"Unable to set a non-enumerable property on object.\");t[St]=e}}return e}(t);if(\"function\"==typeof t.toString)return vt(t.toString());throw new Error(\"Value type \"+e+\" cannot be hashed.\")}function vt(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return gt(e)}var yt=Object.isExtensible,mt=function(){try{return Object.defineProperty({},\"@\",{}),!0}catch(t){return!1}}();var _t,bt=\"function\"==typeof WeakMap;bt&&(_t=new WeakMap);var wt=0,St=\"__immutablehash__\";\"function\"==typeof Symbol&&(St=Symbol(St));var xt=16,Mt=255,Pt=0,Tt={},kt=function(t){function e(t,e){this._iter=t,this._useKeys=e,this.size=t.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t,e){return this._iter.get(t,e)},e.prototype.has=function(t){return this._iter.has(t)},e.prototype.valueSeq=function(){return this._iter.valueSeq()},e.prototype.reverse=function(){var t=this,e=Ot(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},e.prototype.map=function(t,e){var n=this,r=Ft(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},e.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e,r){return t(e,r,n)},e)},e.prototype.__iterator=function(t,e){return this._iter.__iterator(t,e)},e}(J);kt.prototype[O]=!0;var Ct=function(t){function e(t){this._iter=t,this.size=t.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.includes=function(t){return this._iter.includes(t)},e.prototype.__iterate=function(t,e){var n=this,r=0;return e&&h(this),this._iter.__iterate(function(i){return t(i,e?n.size-++r:r++,n)},e)},e.prototype.__iterator=function(t,e){var n=this,r=this._iter.__iterator(L,e),i=0;return e&&h(this),new U(function(){var o=r.next();return o.done?o:j(t,e?n.size-++i:i++,o.value,o)})},e}(Q),Kt=function(t){function e(t){this._iter=t,this.size=t.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.has=function(t){return this._iter.includes(t)},e.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},e.prototype.__iterator=function(t,e){var n=this._iter.__iterator(L,e);return new U(function(){var e=n.next();return e.done?e:j(t,e.value,e.value,e)})},e}($),At=function(t){function e(t){this._iter=t,this.size=t.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.entrySeq=function(){return this._iter.toSeq()},e.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){Ht(e);var r=m(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},e.prototype.__iterator=function(t,e){var n=this._iter.__iterator(L,e);return new U(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){Ht(r);var i=m(r);return j(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},e}(J);function Dt(t){var e=Bt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=qt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return!1!==e(n,t,r)},n)},e.__iteratorUncached=function(e,n){if(e===z){var r=t.__iterator(e,n);return new U(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===L?R:L,n)},e}function Ft(t,e,n){var r=Bt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,a);return o===a?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate(function(t,i,a){return!1!==r(e.call(n,t,i,a),i,o)},i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(z,i);return new U(function(){var i=o.next();if(i.done)return i;var a=i.value,s=a[0];return j(r,s,e.call(n,a[1],s,t),i)})},r}function Ot(t,e){var n=this,r=Bt(t);return r._iter=t,r.size=t.size,r.reverse=function(){return t},t.flip&&(r.flip=function(){var e=Dt(t);return e.reverse=function(){return t.flip()},e}),r.get=function(n,r){return t.get(e?n:-1-n,r)},r.has=function(n){return t.has(e?n:-1-n)},r.includes=function(e){return t.includes(e)},r.cacheResult=qt,r.__iterate=function(n,r){var i=this,o=0;return r&&h(t),t.__iterate(function(t,a){return n(t,e?a:r?i.size-++o:o++,i)},!r)},r.__iterator=function(r,i){var o=0;i&&h(t);var a=t.__iterator(z,!i);return new U(function(){var t=a.next();if(t.done)return t;var s=t.value;return j(r,e?s[0]:i?n.size-++o:o++,s[1],t)})},r}function It(t,e,n,r){var i=Bt(t);return r&&(i.has=function(r){var i=t.get(r,a);return i!==a&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,a);return o!==a&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var a=this,s=0;return t.__iterate(function(t,o,u){if(e.call(n,t,o,u))return s++,i(t,r?o:s-1,a)},o),s},i.__iteratorUncached=function(i,o){var a=t.__iterator(z,o),s=0;return new U(function(){for(;;){var o=a.next();if(o.done)return o;var u=o.value,h=u[0],c=u[1];if(e.call(n,c,h,t))return j(i,r?h:s++,c,o)}})},i}function Rt(t,e,n,r){var i=t.size;if(f(e,n,i))return t;var o=d(e,i),a=g(n,i);if(o!=o||a!=a)return Rt(t.toSeq().cacheResult(),e,n,r);var s,u=a-o;u==u&&(s=u<0?0:u);var h=Bt(t);return h.size=0===s?s:t.size&&s||void 0,!r&&K(t)&&s>=0&&(h.get=function(e,n){return(e=c(this,e))>=0&&e<s?t.get(e+o,n):n}),h.__iterateUncached=function(e,n){var i=this;if(0===s)return 0;if(n)return this.cacheResult().__iterate(e,n);var a=0,u=!0,h=0;return t.__iterate(function(t,n){if(!u||!(u=a++<o))return h++,!1!==e(t,r?n:h-1,i)&&h!==s}),h},h.__iteratorUncached=function(e,n){if(0!==s&&n)return this.cacheResult().__iterator(e,n);if(0===s)return new U(H);var i=t.__iterator(e,n),a=0,u=0;return new U(function(){for(;a++<o;)i.next();if(++u>s)return{value:void 0,done:!0};var t=i.next();return r||e===L||t.done?t:j(e,u-1,e===R?void 0:t.value[1],t)})},h}function Lt(t,e,n,r){var i=Bt(t);return i.__iterateUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,u=0;return t.__iterate(function(t,o,h){if(!s||!(s=e.call(n,t,o,h)))return u++,i(t,r?o:u-1,a)}),u},i.__iteratorUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterator(i,o);var s=t.__iterator(z,o),u=!0,h=0;return new U(function(){var t,o,c;do{if((t=s.next()).done)return r||i===L?t:j(i,h++,i===R?void 0:t.value[1],t);var l=t.value;o=l[0],c=l[1],u&&(u=e.call(n,c,o,a))}while(u);return i===z?t:j(i,o,c,t)})},i}function zt(t,e,n){var r=Bt(t);return r.__iterateUncached=function(i,o){if(o)return this.cacheResult().__iterate(i,o);var a=0,s=!1;return function t(u,h){u.__iterate(function(o,u){return(!e||h<e)&&m(o)?t(o,h+1):(a++,!1===i(o,n?u:a-1,r)&&(s=!0)),!s},o)}(t,0),a},r.__iteratorUncached=function(r,i){if(i)return this.cacheResult().__iterator(r,i);var o=t.__iterator(r,i),a=[],s=0;return new U(function(){for(;o;){var t=o.next();if(!1===t.done){var u=t.value;if(r===z&&(u=u[1]),e&&!(a.length<e)||!m(u))return n?t:j(r,s++,u,t);a.push(o),o=u.__iterator(r,i)}else o=a.pop()}return{value:void 0,done:!0}})},r}function Et(t,e,n){e||(e=Vt);var r=b(t),i=0,o=t.toSeq().map(function(e,r){return[r,e,i++,n?n(e,r,t):e]}).valueSeq().toArray();return o.sort(function(t,n){return e(t[3],n[3])||t[2]-n[2]}).forEach(r?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),r?J(o):S(t)?Q(o):$(o)}function Gt(t,e,n){if(e||(e=Vt),n){var r=t.toSeq().map(function(e,r){return[e,n(e,r,t)]}).reduce(function(t,n){return Nt(e,t[1],n[1])?n:t});return r&&r[0]}return t.reduce(function(t,n){return Nt(e,t,n)?n:t})}function Nt(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!=n)||r>0}function Ut(t,e,n,r){var i=Bt(t),o=new tt(n).map(function(t){return t.size});return i.size=r?o.max():o.min(),i.__iterate=function(t,e){for(var n,r=this.__iterator(L,e),i=0;!(n=r.next()).done&&!1!==t(n.value,i++,this););return i},i.__iteratorUncached=function(t,i){var o=n.map(function(t){return t=M(t),q(i?t.reverse():t)}),a=0,s=!1;return new U(function(){var n;return s||(n=o.map(function(t){return t.next()}),s=r?n.every(function(t){return t.done}):n.some(function(t){return t.done})),s?{value:void 0,done:!0}:j(t,a++,e.apply(null,n.map(function(t){return t.value})))})},i}function jt(t,e){return t===e?t:K(t)?e:t.constructor(e)}function Ht(t){if(t!==Object(t))throw new TypeError(\"Expected [K, V] tuple: \"+t)}function Wt(t){return b(t)?P:S(t)?T:k}function Bt(t){return Object.create((b(t)?J:S(t)?Q:$).prototype)}function qt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Z.prototype.cacheResult.call(this)}function Vt(t,e){return void 0===t&&void 0===e?0:void 0===t?1:void 0===e?-1:t>e?1:t<e?-1:0}function Xt(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function Yt(t,e){if(!t)throw new Error(e)}function Zt(t){Yt(t!==1/0,\"Cannot perform this action with an infinite size.\")}function Jt(t){if(Y(t)&&\"string\"!=typeof t)return t;if(I(t))return t.toArray();throw new TypeError(\"Invalid keyPath: expected Ordered Collection or Array: \"+t)}function Qt(t){return t&&(t.constructor&&\"Object\"===t.constructor.name||void 0===t.constructor)}function $t(t){return\"object\"==typeof t&&(F(t)||Array.isArray(t)||Qt(t))}function te(t){try{return\"string\"==typeof t?JSON.stringify(t):String(t)}catch(e){return JSON.stringify(t)}}function ee(t,e){return F(t)?t.has(e):$t(t)&&X.call(t,e)}function ne(t,e,n){return F(t)?t.get(e,n):ee(t,e)?\"function\"==typeof t.get?t.get(e):t[e]:n}function re(t){if(Array.isArray(t))return Xt(t);var e={};for(var n in t)X.call(t,n)&&(e[n]=t[n]);return e}function ie(t,e){if(!$t(t))throw new TypeError(\"Cannot update non-data-structure value: \"+t);if(F(t)){if(!t.remove)throw new TypeError(\"Cannot update immutable value without .remove() method: \"+t);return t.remove(e)}if(!X.call(t,e))return t;var n=re(t);return Array.isArray(n)?n.splice(e,1):delete n[e],n}function oe(t,e,n){if(!$t(t))throw new TypeError(\"Cannot update non-data-structure value: \"+t);if(F(t)){if(!t.set)throw new TypeError(\"Cannot update immutable value without .set() method: \"+t);return t.set(e,n)}if(X.call(t,e)&&n===t[e])return t;var r=re(t);return r[e]=n,r}function ae(t,e,n,r){r||(r=n,n=void 0);var i=function t(e,n,r,i,o,s){var u=n===a;if(i===r.length){var h=u?o:n,c=s(h);return c===h?n:c}if(!u&&!$t(n))throw new TypeError(\"Cannot update within non-data-structure value in path [\"+r.slice(0,i).map(te)+\"]: \"+n);var l=r[i];var f=u?a:ne(n,l,a);var d=t(f===a?e:F(f),f,r,i+1,o,s);return d===f?n:d===a?ie(n,l):oe(u?e?He():{}:n,l,d)}(F(t),t,Jt(e),0,n,r);return i===a?n:i}function se(t,e,n){return ae(t,e,a,function(){return n})}function ue(t,e){return se(this,t,e)}function he(t,e){return ae(t,e,function(){return a})}function ce(t){return he(this,t)}function le(t,e,n,r){return ae(t,[e],n,r)}function fe(t,e,n){return 1===arguments.length?t(this):le(this,t,e,n)}function de(t,e,n){return ae(this,t,e,n)}function ge(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return ve(this,t)}function pe(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(\"function\"!=typeof t)throw new TypeError(\"Invalid merger function: \"+t);return ve(this,e,t)}function ve(t,e,n){for(var r=[],i=0;i<e.length;i++){var o=P(e[i]);0!==o.size&&r.push(o)}return 0===r.length?t:0!==t.toSeq().size||t.__ownerID||1!==r.length?t.withMutations(function(t){for(var e=n?function(e,r){le(t,r,a,function(t){return t===a?e:n(t,e,r)})}:function(e,n){t.set(n,e)},i=0;i<r.length;i++)r[i].forEach(e)}):t.constructor(r[0])}function ye(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];return Se(t,e)}function me(t,e){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];return Se(e,n,t)}function _e(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];return we(t,e)}function be(t,e){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];return we(e,n,t)}function we(t,e,n){return Se(t,e,function(t){return function e(n,r,i){return $t(n)&&$t(r)?Se(n,[r],e):t?t(n,r,i):r}}(n))}function Se(t,e,n){if(!$t(t))throw new TypeError(\"Cannot merge into non-data-structure value: \"+t);if(F(t))return\"function\"==typeof n&&t.mergeWith?t.mergeWith.apply(t,[n].concat(e)):t.merge?t.merge.apply(t,e):t.concat.apply(t,e);for(var r=Array.isArray(t),i=t,o=r?T:P,a=r?function(e){i===t&&(i=re(i)),i.push(e)}:function(e,r){var o=X.call(i,r),a=o&&n?n(i[r],e,r):e;o&&a===i[r]||(i===t&&(i=re(i)),i[r]=a)},s=0;s<e.length;s++)o(e[s]).forEach(a);return i}function xe(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return we(this,t)}function Me(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];return we(this,e,t)}function Pe(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];return ae(this,t,He(),function(t){return Se(t,e)})}function Te(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];return ae(this,t,He(),function(t){return we(t,e)})}function ke(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this}function Ce(){return this.__ownerID?this:this.__ensureOwner(new u)}function Ke(){return this.__ensureOwner()}function Ae(){return this.__altered}Ct.prototype.cacheResult=kt.prototype.cacheResult=Kt.prototype.cacheResult=At.prototype.cacheResult=qt;var De=function(t){function e(e){return null===e||void 0===e?He():ht(e)&&!I(e)?e:He().withMutations(function(n){var r=t(e);Zt(r.size),r.forEach(function(t,e){return n.set(e,t)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return He().withMutations(function(e){for(var n=0;n<t.length;n+=2){if(n+1>=t.length)throw new Error(\"Missing value for key: \"+t[n]);e.set(t[n],t[n+1])}})},e.prototype.toString=function(){return this.__toString(\"Map {\",\"}\")},e.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},e.prototype.set=function(t,e){return We(this,t,e)},e.prototype.remove=function(t){return We(this,t,a)},e.prototype.deleteAll=function(t){var e=M(t);return 0===e.size?this:this.withMutations(function(t){e.forEach(function(e){return t.remove(e)})})},e.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):He()},e.prototype.sort=function(t){return vn(Et(this,t))},e.prototype.sortBy=function(t,e){return vn(Et(this,e,t))},e.prototype.map=function(t,e){return this.withMutations(function(n){n.forEach(function(r,i){n.set(i,t.call(e,r,i,n))})})},e.prototype.__iterator=function(t,e){return new Ge(this,t,e)},e.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},e.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?je(this.size,this._root,t,this.__hash):0===this.size?He():(this.__ownerID=t,this.__altered=!1,this)},e}(P);De.isMap=ht;var Fe=De.prototype;Fe[ut]=!0,Fe.delete=Fe.remove,Fe.removeAll=Fe.deleteAll,Fe.setIn=ue,Fe.removeIn=Fe.deleteIn=ce,Fe.update=fe,Fe.updateIn=de,Fe.merge=Fe.concat=ge,Fe.mergeWith=pe,Fe.mergeDeep=xe,Fe.mergeDeepWith=Me,Fe.mergeIn=Pe,Fe.mergeDeepIn=Te,Fe.withMutations=ke,Fe.wasAltered=Ae,Fe.asImmutable=Ke,Fe[\"@@transducer/init\"]=Fe.asMutable=Ce,Fe[\"@@transducer/step\"]=function(t,e){return t.set(e[0],e[1])},Fe[\"@@transducer/result\"]=function(t){return t.asImmutable()};var Oe=function(t,e){this.ownerID=t,this.entries=e};Oe.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,a=i.length;o<a;o++)if(ft(n,i[o][0]))return i[o][1];return r},Oe.prototype.update=function(t,e,n,r,i,o,h){for(var c=i===a,l=this.entries,f=0,d=l.length;f<d&&!ft(r,l[f][0]);f++);var g=f<d;if(g?l[f][1]===i:c)return this;if(s(h),(c||!g)&&s(o),!c||1!==l.length){if(!g&&!c&&l.length>=Ze)return function(t,e,n,r){t||(t=new u);for(var i=new ze(t,pt(n),[n,r]),o=0;o<e.length;o++){var a=e[o];i=i.update(t,0,void 0,a[0],a[1])}return i}(t,l,r,i);var p=t&&t===this.ownerID,v=p?l:Xt(l);return g?c?f===d-1?v.pop():v[f]=v.pop():v[f]=[r,i]:v.push([r,i]),p?(this.entries=v,this):new Oe(t,v)}};var Ie=function(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n};Ie.prototype.get=function(t,e,n,i){void 0===e&&(e=pt(n));var a=1<<((0===t?e:e>>>t)&o),s=this.bitmap;return 0==(s&a)?i:this.nodes[Xe(s&a-1)].get(t+r,e,n,i)},Ie.prototype.update=function(t,e,n,s,u,h,c){void 0===n&&(n=pt(s));var l=(0===e?n:n>>>e)&o,f=1<<l,d=this.bitmap,g=0!=(d&f);if(!g&&u===a)return this;var p=Xe(d&f-1),v=this.nodes,y=g?v[p]:void 0,m=Be(y,t,e+r,n,s,u,h,c);if(m===y)return this;if(!g&&m&&v.length>=Je)return function(t,e,n,r,o){for(var a=0,s=new Array(i),u=0;0!==n;u++,n>>>=1)s[u]=1&n?e[a++]:void 0;return s[r]=o,new Re(t,a+1,s)}(t,v,d,l,m);if(g&&!m&&2===v.length&&qe(v[1^p]))return v[1^p];if(g&&m&&1===v.length&&qe(m))return m;var _=t&&t===this.ownerID,b=g?m?d:d^f:d|f,w=g?m?Ye(v,p,m,_):function(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var i=new Array(r),o=0,a=0;a<r;a++)a===e&&(o=1),i[a]=t[a+o];return i}(v,p,_):function(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),a=0,s=0;s<i;s++)s===e?(o[s]=n,a=-1):o[s]=t[s+a];return o}(v,p,m,_);return _?(this.bitmap=b,this.nodes=w,this):new Ie(t,b,w)};var Re=function(t,e,n){this.ownerID=t,this.count=e,this.nodes=n};Re.prototype.get=function(t,e,n,i){void 0===e&&(e=pt(n));var a=(0===t?e:e>>>t)&o,s=this.nodes[a];return s?s.get(t+r,e,n,i):i},Re.prototype.update=function(t,e,n,i,s,u,h){void 0===n&&(n=pt(i));var c=(0===e?n:n>>>e)&o,l=s===a,f=this.nodes,d=f[c];if(l&&!d)return this;var g=Be(d,t,e+r,n,i,s,u,h);if(g===d)return this;var p=this.count;if(d){if(!g&&--p<Qe)return function(t,e,n,r){for(var i=0,o=0,a=new Array(n),s=0,u=1,h=e.length;s<h;s++,u<<=1){var c=e[s];void 0!==c&&s!==r&&(i|=u,a[o++]=c)}return new Ie(t,i,a)}(t,f,p,c)}else p++;var v=t&&t===this.ownerID,y=Ye(f,c,g,v);return v?(this.count=p,this.nodes=y,this):new Re(t,p,y)};var Le=function(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n};Le.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,a=i.length;o<a;o++)if(ft(n,i[o][0]))return i[o][1];return r},Le.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=pt(r));var h=i===a;if(n!==this.keyHash)return h?this:(s(u),s(o),Ve(this,t,e,n,[r,i]));for(var c=this.entries,l=0,f=c.length;l<f&&!ft(r,c[l][0]);l++);var d=l<f;if(d?c[l][1]===i:h)return this;if(s(u),(h||!d)&&s(o),h&&2===f)return new ze(t,this.keyHash,c[1^l]);var g=t&&t===this.ownerID,p=g?c:Xt(c);return d?h?l===f-1?p.pop():p[l]=p.pop():p[l]=[r,i]:p.push([r,i]),g?(this.entries=p,this):new Le(t,this.keyHash,p)};var ze=function(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n};ze.prototype.get=function(t,e,n,r){return ft(n,this.entry[0])?this.entry[1]:r},ze.prototype.update=function(t,e,n,r,i,o,u){var h=i===a,c=ft(r,this.entry[0]);return(c?i===this.entry[1]:h)?this:(s(u),h?void s(o):c?t&&t===this.ownerID?(this.entry[1]=i,this):new ze(t,this.keyHash,[r,i]):(s(o),Ve(this,t,e,pt(r),[r,i])))},Oe.prototype.iterate=Le.prototype.iterate=function(t,e){for(var n=this.entries,r=0,i=n.length-1;r<=i;r++)if(!1===t(n[e?i-r:r]))return!1},Ie.prototype.iterate=Re.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,i=n.length-1;r<=i;r++){var o=n[e?i-r:r];if(o&&!1===o.iterate(t,e))return!1}},ze.prototype.iterate=function(t,e){return t(this.entry)};var Ee,Ge=function(t){function e(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&Ue(t._root)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){for(var t=this._type,e=this._stack;e;){var n=e.node,r=e.index++,i=void 0;if(n.entry){if(0===r)return Ne(t,n.entry)}else if(n.entries){if(r<=(i=n.entries.length-1))return Ne(t,n.entries[this._reverse?i-r:r])}else if(r<=(i=n.nodes.length-1)){var o=n.nodes[this._reverse?i-r:r];if(o){if(o.entry)return Ne(t,o.entry);e=this._stack=Ue(o,e)}continue}e=this._stack=this._stack.__prev}return{value:void 0,done:!0}},e}(U);function Ne(t,e){return j(t,e[0],e[1])}function Ue(t,e){return{node:t,index:0,__prev:e}}function je(t,e,n,r){var i=Object.create(Fe);return i.size=t,i._root=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function He(){return Ee||(Ee=je(0))}function We(t,e,n){var r,i;if(t._root){var o={value:!1},s={value:!1};if(r=Be(t._root,t.__ownerID,0,void 0,e,n,o,s),!s.value)return t;i=t.size+(o.value?n===a?-1:1:0)}else{if(n===a)return t;i=1,r=new Oe(t.__ownerID,[[e,n]])}return t.__ownerID?(t.size=i,t._root=r,t.__hash=void 0,t.__altered=!0,t):r?je(i,r):He()}function Be(t,e,n,r,i,o,u,h){return t?t.update(e,n,r,i,o,u,h):o===a?t:(s(h),s(u),new ze(e,r,[i,o]))}function qe(t){return t.constructor===ze||t.constructor===Le}function Ve(t,e,n,i,a){if(t.keyHash===i)return new Le(e,i,[t.entry,a]);var s,u=(0===n?t.keyHash:t.keyHash>>>n)&o,h=(0===n?i:i>>>n)&o,c=u===h?[Ve(t,e,n+r,i,a)]:(s=new ze(e,i,a),u<h?[t,s]:[s,t]);return new Ie(e,1<<u|1<<h,c)}function Xe(t){return t=(t=(858993459&(t-=t>>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135,t+=t>>8,127&(t+=t>>16)}function Ye(t,e,n,r){var i=r?t:Xt(t);return i[e]=n,i}var Ze=i/4,Je=i/2,Qe=i/4,$e=\"@@__IMMUTABLE_LIST__@@\";function tn(t){return Boolean(t&&t[$e])}var en=function(t){function e(e){var n=hn();if(null===e||void 0===e)return n;if(tn(e))return e;var o=t(e),a=o.size;return 0===a?n:(Zt(a),a>0&&a<i?un(0,a,r,null,new rn(o.toArray())):n.withMutations(function(t){t.setSize(a),o.forEach(function(e,n){return t.set(n,e)})}))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.prototype.toString=function(){return this.__toString(\"List [\",\"]\")},e.prototype.get=function(t,e){if((t=c(this,t))>=0&&t<this.size){var n=fn(this,t+=this._origin);return n&&n.array[t&o]}return e},e.prototype.set=function(t,e){return function(t,e,n){if((e=c(t,e))!=e)return t;if(e>=t.size||e<0)return t.withMutations(function(t){e<0?dn(t,e).set(0,n):dn(t,0,e+1).set(e,n)});e+=t._origin;var r=t._tail,i=t._root,o={value:!1};e>=gn(t._capacity)?r=cn(r,t.__ownerID,0,e,n,o):i=cn(i,t.__ownerID,t._level,e,n,o);if(!o.value)return t;if(t.__ownerID)return t._root=i,t._tail=r,t.__hash=void 0,t.__altered=!0,t;return un(t._origin,t._capacity,t._level,i,r)}(this,t,e)},e.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},e.prototype.insert=function(t,e){return this.splice(t,0,e)},e.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=r,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):hn()},e.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations(function(n){dn(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])})},e.prototype.pop=function(){return dn(this,0,-1)},e.prototype.unshift=function(){var t=arguments;return this.withMutations(function(e){dn(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])})},e.prototype.shift=function(){return dn(this,1)},e.prototype.concat=function(){for(var e=arguments,n=[],r=0;r<arguments.length;r++){var i=e[r],o=t(\"string\"!=typeof i&&W(i)?i:[i]);0!==o.size&&n.push(o)}return 0===n.length?this:0!==this.size||this.__ownerID||1!==n.length?this.withMutations(function(t){n.forEach(function(e){return e.forEach(function(e){return t.push(e)})})}):this.constructor(n[0])},e.prototype.setSize=function(t){return dn(this,0,t)},e.prototype.map=function(t,e){var n=this;return this.withMutations(function(r){for(var i=0;i<n.size;i++)r.set(i,t.call(e,r.get(i),i,r))})},e.prototype.slice=function(t,e){var n=this.size;return f(t,e,n)?this:dn(this,d(t,n),g(e,n))},e.prototype.__iterator=function(t,e){var n=e?this.size:0,r=sn(this,e);return new U(function(){var i=r();return i===an?{value:void 0,done:!0}:j(t,e?--n:n++,i)})},e.prototype.__iterate=function(t,e){for(var n,r=e?this.size:0,i=sn(this,e);(n=i())!==an&&!1!==t(n,e?--r:r++,this););return r},e.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?un(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):0===this.size?hn():(this.__ownerID=t,this.__altered=!1,this)},e}(T);en.isList=tn;var nn=en.prototype;nn[$e]=!0,nn.delete=nn.remove,nn.merge=nn.concat,nn.setIn=ue,nn.deleteIn=nn.removeIn=ce,nn.update=fe,nn.updateIn=de,nn.mergeIn=Pe,nn.mergeDeepIn=Te,nn.withMutations=ke,nn.wasAltered=Ae,nn.asImmutable=Ke,nn[\"@@transducer/init\"]=nn.asMutable=Ce,nn[\"@@transducer/step\"]=function(t,e){return t.push(e)},nn[\"@@transducer/result\"]=function(t){return t.asImmutable()};var rn=function(t,e){this.array=t,this.ownerID=e};rn.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var i=n>>>e&o;if(i>=this.array.length)return new rn([],t);var a,s=0===i;if(e>0){var u=this.array[i];if((a=u&&u.removeBefore(t,e-r,n))===u&&s)return this}if(s&&!a)return this;var h=ln(this,t);if(!s)for(var c=0;c<i;c++)h.array[c]=void 0;return a&&(h.array[i]=a),h},rn.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var i,a=n-1>>>e&o;if(a>=this.array.length)return this;if(e>0){var s=this.array[a];if((i=s&&s.removeAfter(t,e-r,n))===s&&a===this.array.length-1)return this}var u=ln(this,t);return u.array.splice(a+1),i&&(u.array[a]=i),u};var on,an={};function sn(t,e){var n=t._origin,o=t._capacity,a=gn(o),s=t._tail;return u(t._root,t._level,0);function u(t,h,c){return 0===h?function(t,r){var u=r===a?s&&s.array:t&&t.array,h=r>n?0:n-r,c=o-r;c>i&&(c=i);return function(){if(h===c)return an;var t=e?--c:h++;return u&&u[t]}}(t,c):function(t,a,s){var h,c=t&&t.array,l=s>n?0:n-s>>a,f=1+(o-s>>a);f>i&&(f=i);return function(){for(;;){if(h){var t=h();if(t!==an)return t;h=null}if(l===f)return an;var n=e?--f:l++;h=u(c&&c[n],a-r,s+(n<<a))}}}(t,h,c)}}function un(t,e,n,r,i,o,a){var s=Object.create(nn);return s.size=e-t,s._origin=t,s._capacity=e,s._level=n,s._root=r,s._tail=i,s.__ownerID=o,s.__hash=a,s.__altered=!1,s}function hn(){return on||(on=un(0,0,r))}function cn(t,e,n,i,a,u){var h,c=i>>>n&o,l=t&&c<t.array.length;if(!l&&void 0===a)return t;if(n>0){var f=t&&t.array[c],d=cn(f,e,n-r,i,a,u);return d===f?t:((h=ln(t,e)).array[c]=d,h)}return l&&t.array[c]===a?t:(u&&s(u),h=ln(t,e),void 0===a&&c===h.array.length-1?h.array.pop():h.array[c]=a,h)}function ln(t,e){return e&&t&&e===t.ownerID?t:new rn(t?t.array.slice():[],e)}function fn(t,e){if(e>=gn(t._capacity))return t._tail;if(e<1<<t._level+r){for(var n=t._root,i=t._level;n&&i>0;)n=n.array[e>>>i&o],i-=r;return n}}function dn(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var i=t.__ownerID||new u,a=t._origin,s=t._capacity,h=a+e,c=void 0===n?s:n<0?s+n:a+n;if(h===a&&c===s)return t;if(h>=c)return t.clear();for(var l=t._level,f=t._root,d=0;h+d<0;)f=new rn(f&&f.array.length?[void 0,f]:[],i),d+=1<<(l+=r);d&&(h+=d,a+=d,c+=d,s+=d);for(var g=gn(s),p=gn(c);p>=1<<l+r;)f=new rn(f&&f.array.length?[f]:[],i),l+=r;var v=t._tail,y=p<g?fn(t,c-1):p>g?new rn([],i):v;if(v&&p>g&&h<s&&v.array.length){for(var m=f=ln(f,i),_=l;_>r;_-=r){var b=g>>>_&o;m=m.array[b]=ln(m.array[b],i)}m.array[g>>>r&o]=v}if(c<s&&(y=y&&y.removeAfter(i,0,c)),h>=p)h-=p,c-=p,l=r,f=null,y=y&&y.removeBefore(i,0,h);else if(h>a||p<g){for(d=0;f;){var w=h>>>l&o;if(w!==p>>>l&o)break;w&&(d+=(1<<l)*w),l-=r,f=f.array[w]}f&&h>a&&(f=f.removeBefore(i,l,h-d)),f&&p<g&&(f=f.removeAfter(i,l,p-d)),d&&(h-=d,c-=d)}return t.__ownerID?(t.size=c-h,t._origin=h,t._capacity=c,t._level=l,t._root=f,t._tail=y,t.__hash=void 0,t.__altered=!0,t):un(h,c,l,f,y)}function gn(t){return t<i?0:t-1>>>r<<r}var pn,vn=function(t){function e(t){return null===t||void 0===t?mn():ct(t)?t:mn().withMutations(function(e){var n=P(t);Zt(n.size),n.forEach(function(t,n){return e.set(n,t)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.prototype.toString=function(){return this.__toString(\"OrderedMap {\",\"}\")},e.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},e.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):mn()},e.prototype.set=function(t,e){return _n(this,t,e)},e.prototype.remove=function(t){return _n(this,t,a)},e.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},e.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},e.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},e.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?yn(e,n,t,this.__hash):0===this.size?mn():(this.__ownerID=t,this._map=e,this._list=n,this)},e}(De);function yn(t,e,n,r){var i=Object.create(vn.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=n,i.__hash=r,i}function mn(){return pn||(pn=yn(He(),hn()))}function _n(t,e,n){var r,o,s=t._map,u=t._list,h=s.get(e),c=void 0!==h;if(n===a){if(!c)return t;u.size>=i&&u.size>=2*s.size?(r=(o=u.filter(function(t,e){return void 0!==t&&h!==e})).toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=o.__ownerID=t.__ownerID)):(r=s.remove(e),o=h===u.size-1?u.pop():u.set(h,void 0))}else if(c){if(n===u.get(h)[1])return t;r=s,o=u.set(h,[e,n])}else r=s.set(e,u.size),o=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=o,t.__hash=void 0,t):yn(r,o)}vn.isOrderedMap=ct,vn.prototype[O]=!0,vn.prototype.delete=vn.prototype.remove;var bn=\"@@__IMMUTABLE_STACK__@@\";function wn(t){return Boolean(t&&t[bn])}var Sn=function(t){function e(t){return null===t||void 0===t?Tn():wn(t)?t:Tn().pushAll(t)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.prototype.toString=function(){return this.__toString(\"Stack [\",\"]\")},e.prototype.get=function(t,e){var n=this._head;for(t=c(this,t);n&&t--;)n=n.next;return n?n.value:e},e.prototype.peek=function(){return this._head&&this._head.value},e.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):Pn(e,n)},e.prototype.pushAll=function(e){if(0===(e=t(e)).size)return this;if(0===this.size&&wn(e))return e;Zt(e.size);var n=this.size,r=this._head;return e.__iterate(function(t){n++,r={value:t,next:r}},!0),this.__ownerID?(this.size=n,this._head=r,this.__hash=void 0,this.__altered=!0,this):Pn(n,r)},e.prototype.pop=function(){return this.slice(1)},e.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Tn()},e.prototype.slice=function(e,n){if(f(e,n,this.size))return this;var r=d(e,this.size);if(g(n,this.size)!==this.size)return t.prototype.slice.call(this,e,n);for(var i=this.size-r,o=this._head;r--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):Pn(i,o)},e.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Pn(this.size,this._head,t,this.__hash):0===this.size?Tn():(this.__ownerID=t,this.__altered=!1,this)},e.prototype.__iterate=function(t,e){var n=this;if(e)return new tt(this.toArray()).__iterate(function(e,r){return t(e,r,n)},e);for(var r=0,i=this._head;i&&!1!==t(i.value,r++,n);)i=i.next;return r},e.prototype.__iterator=function(t,e){if(e)return new tt(this.toArray()).__iterator(t,e);var n=0,r=this._head;return new U(function(){if(r){var e=r.value;return r=r.next,j(t,n++,e)}return{value:void 0,done:!0}})},e}(T);Sn.isStack=wn;var xn,Mn=Sn.prototype;function Pn(t,e,n,r){var i=Object.create(Mn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Tn(){return xn||(xn=Pn(0))}Mn[bn]=!0,Mn.shift=Mn.pop,Mn.unshift=Mn.push,Mn.unshiftAll=Mn.pushAll,Mn.withMutations=ke,Mn.wasAltered=Ae,Mn.asImmutable=Ke,Mn[\"@@transducer/init\"]=Mn.asMutable=Ce,Mn[\"@@transducer/step\"]=function(t,e){return t.unshift(e)},Mn[\"@@transducer/result\"]=function(t){return t.asImmutable()};var kn=\"@@__IMMUTABLE_SET__@@\";function Cn(t){return Boolean(t&&t[kn])}function Kn(t){return Cn(t)&&I(t)}function An(t,e){if(t===e)return!0;if(!m(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||b(t)!==b(e)||S(t)!==S(e)||I(t)!==I(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!x(t);if(I(t)){var r=t.entries();return e.every(function(t,e){var i=r.next().value;return i&&ft(i[1],t)&&(n||ft(i[0],e))})&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)\"function\"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var s=!0,u=e.__iterate(function(e,r){if(n?!t.has(e):i?!ft(e,t.get(r,a)):!ft(t.get(r,a),e))return s=!1,!1});return s&&t.size===u}function Dn(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Fn(t){if(!t||\"object\"!=typeof t)return t;if(!m(t)){if(!$t(t))return t;t=Z(t)}if(b(t)){var e={};return t.__iterate(function(t,n){e[n]=Fn(t)}),e}var n=[];return t.__iterate(function(t){n.push(Fn(t))}),n}var On=function(t){function e(e){return null===e||void 0===e?En():Cn(e)&&!I(e)?e:En().withMutations(function(n){var r=t(e);Zt(r.size),r.forEach(function(t){return n.add(t)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.fromKeys=function(t){return this(P(t).keySeq())},e.intersect=function(t){return(t=M(t).toArray()).length?Rn.intersect.apply(e(t.pop()),t):En()},e.union=function(t){return(t=M(t).toArray()).length?Rn.union.apply(e(t.pop()),t):En()},e.prototype.toString=function(){return this.__toString(\"Set {\",\"}\")},e.prototype.has=function(t){return this._map.has(t)},e.prototype.add=function(t){return Ln(this,this._map.set(t,t))},e.prototype.remove=function(t){return Ln(this,this._map.remove(t))},e.prototype.clear=function(){return Ln(this,this._map.clear())},e.prototype.map=function(t,e){var n=this;return Ln(this,this._map.map(function(e){return t(e,e,n)},e))},e.prototype.union=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return 0===(e=e.filter(function(t){return 0!==t.size})).length?this:0!==this.size||this.__ownerID||1!==e.length?this.withMutations(function(n){for(var r=0;r<e.length;r++)t(e[r]).forEach(function(t){return n.add(t)})}):this.constructor(e[0])},e.prototype.intersect=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(0===e.length)return this;e=e.map(function(e){return t(e)});var r=[];return this.forEach(function(t){e.every(function(e){return e.includes(t)})||r.push(t)}),this.withMutations(function(t){r.forEach(function(e){t.remove(e)})})},e.prototype.subtract=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(0===e.length)return this;e=e.map(function(e){return t(e)});var r=[];return this.forEach(function(t){e.some(function(e){return e.includes(t)})&&r.push(t)}),this.withMutations(function(t){r.forEach(function(e){t.remove(e)})})},e.prototype.sort=function(t){return nr(Et(this,t))},e.prototype.sortBy=function(t,e){return nr(Et(this,e,t))},e.prototype.wasAltered=function(){return this._map.wasAltered()},e.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate(function(e){return t(e,e,n)},e)},e.prototype.__iterator=function(t,e){return this._map.__iterator(t,e)},e.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):0===this.size?this.__empty():(this.__ownerID=t,this._map=e,this)},e}(k);On.isSet=Cn;var In,Rn=On.prototype;function Ln(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function zn(t,e){var n=Object.create(Rn);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function En(){return In||(In=zn(He()))}Rn[kn]=!0,Rn.delete=Rn.remove,Rn.merge=Rn.concat=Rn.union,Rn.withMutations=ke,Rn.asImmutable=Ke,Rn[\"@@transducer/init\"]=Rn.asMutable=Ce,Rn[\"@@transducer/step\"]=function(t,e){return t.add(e)},Rn[\"@@transducer/result\"]=function(t){return t.asImmutable()},Rn.__empty=En,Rn.__make=zn;var Gn,Nn=function(t){function e(t,n,r){if(!(this instanceof e))return new e(t,n,r);if(Yt(0!==r,\"Cannot step a Range by 0\"),t=t||0,void 0===n&&(n=1/0),r=void 0===r?1:Math.abs(r),n<t&&(r=-r),this._start=t,this._end=n,this._step=r,this.size=Math.max(0,Math.ceil((n-t)/r-1)+1),0===this.size){if(Gn)return Gn;Gn=this}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return 0===this.size?\"Range []\":\"Range [ \"+this._start+\"...\"+this._end+(1!==this._step?\" by \"+this._step:\"\")+\" ]\"},e.prototype.get=function(t,e){return this.has(t)?this._start+c(this,t)*this._step:e},e.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},e.prototype.slice=function(t,n){return f(t,n,this.size)?this:(t=d(t,this.size),(n=g(n,this.size))<=t?new e(0,0):new e(this.get(t,this._end),this.get(n,this._end),this._step))},e.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step==0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},e.prototype.lastIndexOf=function(t){return this.indexOf(t)},e.prototype.__iterate=function(t,e){for(var n=this.size,r=this._step,i=e?this._start+(n-1)*r:this._start,o=0;o!==n&&!1!==t(i,e?n-++o:o++,this);)i+=e?-r:r;return o},e.prototype.__iterator=function(t,e){var n=this.size,r=this._step,i=e?this._start+(n-1)*r:this._start,o=0;return new U(function(){if(o===n)return{value:void 0,done:!0};var a=i;return i+=e?-r:r,j(t,e?n-++o:o++,a)})},e.prototype.equals=function(t){return t instanceof e?this._start===t._start&&this._end===t._end&&this._step===t._step:An(this,t)},e}(Q);function Un(t,e,n){for(var r=Jt(e),i=0;i!==r.length;)if((t=ne(t,r[i++],a))===a)return n;return t}function jn(t,e){return Un(this,t,e)}function Hn(t,e){return Un(t,e,a)!==a}function Wn(){Zt(this.size);var t={};return this.__iterate(function(e,n){t[n]=e}),t}M.isIterable=m,M.isKeyed=b,M.isIndexed=S,M.isAssociative=x,M.isOrdered=I,M.Iterator=U,Dn(M,{toArray:function(){Zt(this.size);var t=new Array(this.size||0),e=b(this),n=0;return this.__iterate(function(r,i){t[n++]=e?[i,r]:r}),t},toIndexedSeq:function(){return new Ct(this)},toJS:function(){return Fn(this)},toKeyedSeq:function(){return new kt(this,!0)},toMap:function(){return De(this.toKeyedSeq())},toObject:Wn,toOrderedMap:function(){return vn(this.toKeyedSeq())},toOrderedSet:function(){return nr(b(this)?this.valueSeq():this)},toSet:function(){return On(b(this)?this.valueSeq():this)},toSetSeq:function(){return new Kt(this)},toSeq:function(){return S(this)?this.toIndexedSeq():b(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Sn(b(this)?this.valueSeq():this)},toList:function(){return en(b(this)?this.valueSeq():this)},toString:function(){return\"[Collection]\"},__toString:function(t,e){return 0===this.size?t+e:t+\" \"+this.toSeq().map(this.__toStringMapper).join(\", \")+\" \"+e},concat:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return jt(this,function(t,e){var n=b(t),r=[t].concat(e).map(function(t){return m(t)?n&&(t=P(t)):t=n?ot(t):at(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&b(i)||S(t)&&S(i))return i}var o=new tt(r);return n?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),(o=o.flatten(!0)).size=r.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),o}(this,t))},includes:function(t){return this.some(function(e){return ft(e,t)})},entries:function(){return this.__iterator(z)},every:function(t,e){Zt(this.size);var n=!0;return this.__iterate(function(r,i,o){if(!t.call(e,r,i,o))return n=!1,!1}),n},filter:function(t,e){return jt(this,It(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},forEach:function(t,e){return Zt(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){Zt(this.size),t=void 0!==t?\"\"+t:\",\";var e=\"\",n=!0;return this.__iterate(function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():\"\"}),e},keys:function(){return this.__iterator(R)},map:function(t,e){return jt(this,Ft(this,t,e))},reduce:function(t,e,n){return Xn(this,t,e,n,arguments.length<2,!1)},reduceRight:function(t,e,n){return Xn(this,t,e,n,arguments.length<2,!0)},reverse:function(){return jt(this,Ot(this,!0))},slice:function(t,e){return jt(this,Rt(this,t,e,!0))},some:function(t,e){return!this.every(Jn(t),e)},sort:function(t){return jt(this,Et(this,t))},values:function(){return this.__iterator(L)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(t,e){return h(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return function(t,e,n){var r=De().asMutable();return t.__iterate(function(i,o){r.update(e.call(n,i,o,t),0,function(t){return t+1})}),r.asImmutable()}(this,t,e)},equals:function(t){return An(this,t)},entrySeq:function(){var t=this;if(t._cache)return new tt(t._cache);var e=t.toSeq().map(Zn).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Jn(t),e)},findEntry:function(t,e,n){var r=n;return this.__iterate(function(n,i,o){if(t.call(e,n,i,o))return r=[i,n],!1}),r},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},findLastEntry:function(t,e,n){return this.toKeyedSeq().reverse().findEntry(t,e,n)},findLastKey:function(t,e){return this.toKeyedSeq().reverse().findKey(t,e)},first:function(t){return this.find(l,null,t)},flatMap:function(t,e){return jt(this,function(t,e,n){var r=Wt(t);return t.toSeq().map(function(i,o){return r(e.call(n,i,o,t))}).flatten(!0)}(this,t,e))},flatten:function(t){return jt(this,zt(this,t,!0))},fromEntrySeq:function(){return new At(this)},get:function(t,e){return this.find(function(e,n){return ft(n,t)},void 0,e)},getIn:jn,groupBy:function(t,e){return function(t,e,n){var r=b(t),i=(I(t)?vn():De()).asMutable();t.__iterate(function(o,a){i.update(e.call(n,o,a,t),function(t){return(t=t||[]).push(r?[a,o]:o),t})});var o=Wt(t);return i.map(function(e){return jt(t,o(e))}).asImmutable()}(this,t,e)},has:function(t){return this.get(t,a)!==a},hasIn:function(t){return Hn(this,t)},isSubset:function(t){return t=\"function\"==typeof t.includes?t:M(t),this.every(function(e){return t.includes(e)})},isSuperset:function(t){return(t=\"function\"==typeof t.isSubset?t:M(t)).isSubset(this)},keyOf:function(t){return this.findKey(function(e){return ft(e,t)})},keySeq:function(){return this.toSeq().map(Yn).toIndexedSeq()},last:function(t){return this.toSeq().reverse().first(t)},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return Gt(this,t)},maxBy:function(t,e){return Gt(this,e,t)},min:function(t){return Gt(this,t?Qn(t):tr)},minBy:function(t,e){return Gt(this,e?Qn(e):tr,t)},rest:function(){return this.slice(1)},skip:function(t){return 0===t?this:this.slice(Math.max(0,t))},skipLast:function(t){return 0===t?this:this.slice(0,-Math.max(0,t))},skipWhile:function(t,e){return jt(this,Lt(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Jn(t),e)},sortBy:function(t,e){return jt(this,Et(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return this.slice(-Math.max(0,t))},takeWhile:function(t,e){return jt(this,function(t,e,n){var r=Bt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var a=0;return t.__iterate(function(t,i,s){return e.call(n,t,i,s)&&++a&&r(t,i,o)}),a},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var a=t.__iterator(z,i),s=!0;return new U(function(){if(!s)return{value:void 0,done:!0};var t=a.next();if(t.done)return t;var i=t.value,u=i[0],h=i[1];return e.call(n,h,u,o)?r===z?t:j(r,u,h,t):(s=!1,{value:void 0,done:!0})})},r}(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Jn(t),e)},update:function(t){return t(this)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(t){if(t.size===1/0)return 0;var e=I(t),n=b(t),r=e?1:0;return function(t,e){return e=dt(e,3432918353),e=dt(e<<15|e>>>-15,461845907),e=dt(e<<13|e>>>-13,5),e=dt((e=(e+3864292196|0)^t)^e>>>16,2246822507),e=gt((e=dt(e^e>>>13,3266489909))^e>>>16)}(t.__iterate(n?e?function(t,e){r=31*r+er(pt(t),pt(e))|0}:function(t,e){r=r+er(pt(t),pt(e))|0}:e?function(t){r=31*r+pt(t)|0}:function(t){r=r+pt(t)|0}),r)}(this))}});var Bn=M.prototype;Bn[y]=!0,Bn[N]=Bn.values,Bn.toJSON=Bn.toArray,Bn.__toStringMapper=te,Bn.inspect=Bn.toSource=function(){return this.toString()},Bn.chain=Bn.flatMap,Bn.contains=Bn.includes,Dn(P,{flip:function(){return jt(this,Dt(this))},mapEntries:function(t,e){var n=this,r=0;return jt(this,this.toSeq().map(function(i,o){return t.call(e,[o,i],r++,n)}).fromEntrySeq())},mapKeys:function(t,e){var n=this;return jt(this,this.toSeq().flip().map(function(r,i){return t.call(e,r,i,n)}).flip())}});var qn=P.prototype;qn[_]=!0,qn[N]=Bn.entries,qn.toJSON=Wn,qn.__toStringMapper=function(t,e){return te(e)+\": \"+te(t)},Dn(T,{toKeyedSeq:function(){return new kt(this,!1)},filter:function(t,e){return jt(this,It(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.lastKeyOf(t);return void 0===e?-1:e},reverse:function(){return jt(this,Ot(this,!1))},slice:function(t,e){return jt(this,Rt(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(e||0,0),0===n||2===n&&!e)return this;t=d(t,t<0?this.count():this.size);var r=this.slice(0,t);return jt(this,1===n?r:r.concat(Xt(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.findLastEntry(t,e);return n?n[0]:-1},first:function(t){return this.get(0,t)},flatten:function(t){return jt(this,zt(this,t,!1))},get:function(t,e){return(t=c(this,t))<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return(t=c(this,t))>=0&&(void 0!==this.size?this.size===1/0||t<this.size:-1!==this.indexOf(t))},interpose:function(t){return jt(this,function(t,e){var n=Bt(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var i=this,o=0;return t.__iterate(function(t){return(!o||!1!==n(e,o++,i))&&!1!==n(t,o++,i)},r),o},n.__iteratorUncached=function(n,r){var i,o=t.__iterator(L,r),a=0;return new U(function(){return(!i||a%2)&&(i=o.next()).done?i:a%2?j(n,a++,e):j(n,a++,i.value,i)})},n}(this,t))},interleave:function(){var t=[this].concat(Xt(arguments)),e=Ut(this.toSeq(),Q.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),jt(this,n)},keySeq:function(){return Nn(0,this.size)},last:function(t){return this.get(-1,t)},skipWhile:function(t,e){return jt(this,Lt(this,t,e,!1))},zip:function(){return jt(this,Ut(this,$n,[this].concat(Xt(arguments))))},zipAll:function(){return jt(this,Ut(this,$n,[this].concat(Xt(arguments)),!0))},zipWith:function(t){var e=Xt(arguments);return e[0]=this,jt(this,Ut(this,t,e))}});var Vn=T.prototype;function Xn(t,e,n,r,i,o){return Zt(t.size),t.__iterate(function(t,o,a){i?(i=!1,n=t):n=e.call(r,n,t,o,a)},o),n}function Yn(t,e){return e}function Zn(t,e){return[e,t]}function Jn(t){return function(){return!t.apply(this,arguments)}}function Qn(t){return function(){return-t.apply(this,arguments)}}function $n(){return Xt(arguments)}function tr(t,e){return t<e?1:t>e?-1:0}function er(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}Vn[w]=!0,Vn[O]=!0,Dn(k,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),k.prototype.has=Bn.includes,k.prototype.contains=k.prototype.includes,Dn(J,P.prototype),Dn(Q,T.prototype),Dn($,k.prototype);var nr=function(t){function e(t){return null===t||void 0===t?ar():Kn(t)?t:ar().withMutations(function(e){var n=k(t);Zt(n.size),n.forEach(function(t){return e.add(t)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.fromKeys=function(t){return this(P(t).keySeq())},e.prototype.toString=function(){return this.__toString(\"OrderedSet {\",\"}\")},e}(On);nr.isOrderedSet=Kn;var rr,ir=nr.prototype;function or(t,e){var n=Object.create(ir);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ar(){return rr||(rr=or(mn()))}ir[O]=!0,ir.zip=Vn.zip,ir.zipWith=Vn.zipWith,ir.__empty=ar,ir.__make=or;var sr=function(t,e){var n,r=function(o){var a=this;if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var s=Object.keys(t),u=i._indices={};i._name=e,i._keys=s,i._defaultValues=t;for(var h=0;h<s.length;h++){var c=s[h];u[c]=h,i[c]?\"object\"==typeof console&&console.warn&&console.warn(\"Cannot define \"+cr(a)+' with property \"'+c+'\" since that property name is part of the Record API.'):fr(i,c)}}this.__ownerID=void 0,this._values=en().withMutations(function(t){t.setSize(a._keys.length),P(o).forEach(function(e,n){t.set(a._indices[n],e===a._defaultValues[n]?void 0:e)})})},i=r.prototype=Object.create(ur);return i.constructor=r,r};sr.prototype.toString=function(){for(var t,e=cr(this)+\" { \",n=this._keys,r=0,i=n.length;r!==i;r++)t=n[r],e+=(r?\", \":\"\")+t+\": \"+te(this.get(t));return e+\" }\"},sr.prototype.equals=function(t){return this===t||t&&this._keys===t._keys&&lr(this).equals(lr(t))},sr.prototype.hashCode=function(){return lr(this).hashCode()},sr.prototype.has=function(t){return this._indices.hasOwnProperty(t)},sr.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._indices[t],r=this._values.get(n);return void 0===r?this._defaultValues[t]:r},sr.prototype.set=function(t,e){if(this.has(t)){var n=this._values.set(this._indices[t],e===this._defaultValues[t]?void 0:e);if(n!==this._values&&!this.__ownerID)return hr(this,n)}return this},sr.prototype.remove=function(t){return this.set(t)},sr.prototype.clear=function(){var t=this._values.clear().setSize(this._keys.length);return this.__ownerID?this:hr(this,t)},sr.prototype.wasAltered=function(){return this._values.wasAltered()},sr.prototype.toSeq=function(){return lr(this)},sr.prototype.toJS=function(){return Fn(this)},sr.prototype.entries=function(){return this.__iterator(z)},sr.prototype.__iterator=function(t,e){return lr(this).__iterator(t,e)},sr.prototype.__iterate=function(t,e){return lr(this).__iterate(t,e)},sr.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._values.__ensureOwner(t);return t?hr(this,e,t):(this.__ownerID=t,this._values=e,this)},sr.isRecord=D,sr.getDescriptiveName=cr;var ur=sr.prototype;function hr(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._values=e,r.__ownerID=n,r}function cr(t){return t._name||t.constructor.name||\"Record\"}function lr(t){return ot(t._keys.map(function(e){return[e,t.get(e)]}))}function fr(t,e){try{Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){Yt(this.__ownerID,\"Cannot set on an immutable record.\"),this.set(e,t)}})}catch(t){}}ur[A]=!0,ur.delete=ur.remove,ur.deleteIn=ur.removeIn=ce,ur.getIn=jn,ur.hasIn=Bn.hasIn,ur.merge=ge,ur.mergeWith=pe,ur.mergeIn=Pe,ur.mergeDeep=xe,ur.mergeDeepWith=Me,ur.mergeDeepIn=Te,ur.setIn=ue,ur.update=fe,ur.updateIn=de,ur.withMutations=ke,ur.asMutable=Ce,ur.asImmutable=Ke,ur[N]=ur.entries,ur.toJSON=ur.toObject=Bn.toObject,ur.inspect=ur.toSource=function(){return this.toString()};var dr,gr=function(t){function e(t,n){if(!(this instanceof e))return new e(t,n);if(this._value=t,this.size=void 0===n?1/0:Math.max(0,n),0===this.size){if(dr)return dr;dr=this}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return 0===this.size?\"Repeat []\":\"Repeat [ \"+this._value+\" \"+this.size+\" times ]\"},e.prototype.get=function(t,e){return this.has(t)?this._value:e},e.prototype.includes=function(t){return ft(this._value,t)},e.prototype.slice=function(t,n){var r=this.size;return f(t,n,r)?this:new e(this._value,g(n,r)-d(t,r))},e.prototype.reverse=function(){return this},e.prototype.indexOf=function(t){return ft(this._value,t)?0:-1},e.prototype.lastIndexOf=function(t){return ft(this._value,t)?this.size:-1},e.prototype.__iterate=function(t,e){for(var n=this.size,r=0;r!==n&&!1!==t(this._value,e?n-++r:r++,this););return r},e.prototype.__iterator=function(t,e){var n=this,r=this.size,i=0;return new U(function(){return i===r?{value:void 0,done:!0}:j(t,e?r-++i:i++,n._value)})},e.prototype.equals=function(t){return t instanceof e?ft(this._value,t._value):An(t)},e}(Q);function pr(t,e){return function t(e,n,r,i,o,a){var s=Array.isArray(r)?Q:Qt(r)?J:null;if(s){if(~e.indexOf(r))throw new TypeError(\"Cannot convert circular structure to Immutable\");e.push(r),o&&\"\"!==i&&o.push(i);var u=n.call(a,i,s(r).map(function(i,a){return t(e,n,i,a,o,r)}),o&&o.slice());return e.pop(),o&&o.pop(),u}return r}([],e||vr,t,\"\",e&&e.length>2?[]:void 0,{\"\":t})}function vr(t,e){return b(e)?e.toMap():e.toList()}var yr=\"4.0.0-rc.10\",mr={version:yr,Collection:M,Iterable:M,Seq:Z,Map:De,OrderedMap:vn,List:en,Stack:Sn,Set:On,OrderedSet:nr,Record:sr,Range:Nn,Repeat:gr,is:ft,fromJS:pr,hash:pt,isImmutable:F,isCollection:m,isKeyed:b,isIndexed:S,isAssociative:x,isOrdered:I,isValueObject:lt,isSeq:K,isList:tn,isMap:ht,isOrderedMap:ct,isStack:wn,isSet:Cn,isOrderedSet:Kn,isRecord:D,get:ne,getIn:Un,has:ee,hasIn:Hn,merge:ye,mergeDeep:_e,mergeWith:me,mergeDeepWith:be,remove:ie,removeIn:he,set:oe,setIn:se,update:le,updateIn:ae},_r=M;e.default=mr},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.scaler=e}var e,n,i;return e=t,(n=[{key:\"measureDistance\",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.scaler.measureDistance(t,e,n)}},{key:\"scaleArea\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.scaler.measureArea(t,e)}},{key:\"changeCursorToMove\",value:function(){this.scaler.layer.getStage().container().style.cursor=\"move\"}},{key:\"changeCursorToDefault\",value:function(){this.scaler.layer.getStage().container().style.cursor=\"default\"}},{key:\"imageReferencedPoint\",value:function(t){return this.scaler.scalePointFromImage(t)}},{key:\"referencedPointToImage\",value:function(t){return this.scaler.scalePointToImage(t)}},{key:\"scaleNodeFromImage\",value:function(t){return this.scaler.scaleNodeFromImage(t)}},{key:\"scaleNodeToImage\",value:function(t){return this.scaler.scaleNodeToImage(t)}},{key:\"select\",value:function(t){this.scaler.select(t)}},{key:\"shapeChanged\",value:function(t){this.scaler.shapeChanged(t)}},{key:\"scale\",get:function(){return this.scaler.scale}}])&&r(e.prototype,n),i&&r(e,i),t}();e.BaseTool=i},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function a(t,e){return!e||\"object\"!==i(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var h=n(5),c=n(4),l=n(14),f=n(9),d={guid:\"\",complete:!1,centroid:new c.NodeRecord,area:0,metadata:{},nodes:h.List()},g=function(t){function e(t){return o(this,e),t||(t={guid:f.Guid.newGuid()}),t.guid||(t.guid=f.Guid.newGuid()),a(a(this,t?s(e).call(this,t):s(e).call(this)))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(e,h.Record(d)),e}();e.PolygonRecord=g;var p=function(){function t(){o(this,t)}var e,n,i;return e=t,i=[{key:\"ToString\",value:function(t){var e=\"Polygon(area: \".concat(t.area,\", complete: \").concat(t.complete,\", centroid \").concat(c.Node.ToString(t.centroid));return t.nodes.forEach(function(t){e+=\"\\n$    \".concat(c.Node.ToString(t))}),e}},{key:\"AddNode\",value:function(t,e){return t.updateIn([\"nodes\"],function(t){return t.push(e)})}},{key:\"UpdateNode\",value:function(t,e,n){return t.updateIn([\"nodes\"],function(t){return t.set(e,n)})}},{key:\"Finish\",value:function(t){return t.updateIn([\"nodes\"],function(t){return t.pop()}).set(\"complete\",!0)}},{key:\"Centroid\",value:function(t){var e=[t.nodes.map(function(t){return[t.x,t.y]}).toArray()],n=l.default(e,.5,!1);return t.set(\"centroid\",new c.NodeRecord({x:n[0],y:n[1]}))}},{key:\"Area\",value:function(t){var e=t.nodes.reduce(function(e,n,r){var i=(r+1)%t.nodes.size,o=t.nodes.get(i);return e+=n.x*o.y,e-=n.y*o.x},0);return e/=2,t.set(\"area\",e>0?e:-e)}}],(n=null)&&r(e.prototype,n),i&&r(e,i),t}();e.Polygon=p},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(9),c=function(t){var e,n,r;function c(t){var e;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,c),(e=i(this,o(c).call(this,t))).guid=h.Guid.newGuid(),e}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(c,u.default.Group),e=c,(n=[{key:\"distanceOffset\",get:function(){return this._distanceOffset},set:function(t){this._distanceOffset=t,this.imageMoved(),this.draw(),this.getStage().draw()}}])&&a(e.prototype,n),r&&a(e,r),c}();e.MeasurementBase=c},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}var e,n,i;return e=t,i=[{key:\"newGuid\",value:function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(t){var e=16*Math.random()|0;return(\"x\"===t?e:3&e|8).toString(16)})}}],(n=null)&&r(e.prototype,n),i&&r(e,i),t}();e.Guid=i},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(9),h=n(1),c=function(t){function e(t,n){var r;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(r=o(this,a(e).call(this,n)))._text=\"\",r.bgPadding=7,r._text=t,r.textObj=new h.default.Text({text:t,x:0,y:0,align:\"center\",fontSize:11,fontFamily:\"Roboto\"}),r.textObj.setAttrs({offsetX:r.textObj.width()/2,offsetY:r.textObj.height()/2}),r.bgObject=new h.default.Rect({x:0,y:0,strokeEnabled:!0,strokeWidth:.5,stroke:\"black\",width:r.textObj.width()+r.bgPadding,height:r.textObj.height()+r.bgPadding,fill:\"white\"}),r.textObj.setAttrs({x:r.bgObject.width()/2,y:r.bgObject.height()/2}),r.bgObject.fill(\"white\"),r.pointer=new h.default.Circle({x:0,y:0,radius:4,fill:\"#a9de94\",stroke:\"black\",strokeWidth:.5,shadowEnabled:!0,shadowBlur:8,shadowOpacity:.7}),r.add(r.bgObject),r.add(r.textObj),r.add(r.pointer),r.guid=u.Guid.newGuid(),r}var n,r,c;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,h.default.Group),n=e,(r=[{key:\"setText\",value:function(t){this._text=t,this.textObj.text(t),this.textObj.setAttrs({offsetX:this.textObj.width()/2,offsetY:this.textObj.height()/2}),this.bgObject.setAttrs({width:this.textObj.width()+this.bgPadding,height:this.textObj.height()+this.bgPadding}),this.textObj.setAttrs({x:this.bgObject.width()/2,y:this.bgObject.height()/2})}},{key:\"setBackground\",value:function(t){this.bgObject.fill(t)}},{key:\"text\",get:function(){return this._text}}])&&i(n.prototype,r),c&&i(n,c),e}();e.TextCallout=c},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(8),c=n(0),l=n(3),f=function(t){function e(t,n,r){var i;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(i=o(this,a(e).call(this,r))).measurer=t,i.start=n,i.dragging=!1,i._referencedPositions={start:[],end:[]},i._refPoints={topLeft:[0,0]},i.x(n[0]),i.y(n[1]),i._refPoints={topLeft:[0,0],topMid:[0,0],topRight:[0,0],rightMid:[0,0],bottomRight:[0,0],bottomMid:[0,0],bottomLeft:[0,0],leftMid:[0,0]},i}var n,r,f;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,h.MeasurementBase),n=e,(r=[{key:\"selected\",value:function(t){t&&!this._rightDragHandle?this.addDragHandles():!t&&this._rightDragHandle&&this.removeDragHandles()}},{key:\"updateRight\",value:function(t){var e=l.vec2.create();l.vec2.add(e,this.vec2Position(),this._refPoints.bottomRight),e[0]=t,this.updateEnd(Array.from(e),!0,!1)}},{key:\"updateBottom\",value:function(t){var e=l.vec2.create();l.vec2.add(e,this.vec2Position(),this._refPoints.bottomRight),e[1]=t,this.updateEnd(Array.from(e),!0,!1)}},{key:\"updateLeft\",value:function(t){var e=l.vec2.create();l.vec2.add(e,this.vec2Position(),this._refPoints.topLeft),e[0]=t,this.updateStart(Array.from(e),!0)}},{key:\"updateTop\",value:function(t){var e=l.vec2.create();l.vec2.add(e,this.vec2Position(),this._refPoints.topLeft),e[1]=t,this.updateStart(Array.from(e),!0)}},{key:\"updateEnd\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=l.vec2.create();l.vec2.sub(r,t,this.vec2Position());var i=this._refPoints.topLeft,o=r;this.start[0]>t[0]&&n&&(console.info(\"x diff\"),i[0]=r[0],o[0]=0),this.start[1]>t[1]&&n&&(console.info(\"y diff\"),i[1]=r[1],o[1]=0);var a=l.vec2.add(l.vec2.create(),i,[0,Math.abs(i[1]-o[1])]),s=l.vec2.add(l.vec2.create(),i,[Math.abs(i[0]-o[0]),0]);this._refPoints.topLeft=Array.from(i.slice()),this._refPoints.topMid=Array.from(c.VisualizerMath.middlePoint(i,s)),this._refPoints.topRight=Array.from(s.slice()),this._refPoints.rightMid=Array.from(c.VisualizerMath.middlePoint(s,o)),this._refPoints.bottomRight=Array.from(o.slice()),this._refPoints.bottomMid=Array.from(c.VisualizerMath.middlePoint(o,a)),this._refPoints.bottomLeft=Array.from(a.slice()),this._refPoints.leftMid=Array.from(c.VisualizerMath.middlePoint(i,a)),this.measuredHeight=Math.round(this.measurer.measureDistance(i,Array.from(a),this.distanceOffset)),this.updateUI(),this._rightDragHandle&&(this._rightDragHandle.x(this._refPoints.rightMid[0]),this._rightDragHandle.y(this._refPoints.rightMid[1])),this._bottomDragHandle&&(this._bottomDragHandle.x(this._refPoints.bottomMid[0]),this._bottomDragHandle.y(this._refPoints.bottomMid[1])),this._leftDragHandle&&(this._leftDragHandle.x(this._refPoints.leftMid[0]),this._leftDragHandle.y(this._refPoints.leftMid[1])),this._topDragHandle&&(this._topDragHandle.x(this._refPoints.topMid[0]),this._topDragHandle.y(this._refPoints.topMid[1])),e&&this.savePosition()}},{key:\"updateStart\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=l.vec2.create();l.vec2.sub(n,t,this.vec2Position());var r=Array.from(n),i=this._refPoints.bottomRight,o=l.vec2.add(l.vec2.create(),r,[0,Math.abs(r[1]-i[1])]),a=l.vec2.add(l.vec2.create(),r,[Math.abs(r[0]-i[0]),0]);this._refPoints.topLeft=Array.from(r.slice()),this._refPoints.topMid=Array.from(c.VisualizerMath.middlePoint(r,a)),this._refPoints.topRight=Array.from(a.slice()),this._refPoints.rightMid=Array.from(c.VisualizerMath.middlePoint(a,i)),this._refPoints.bottomRight=Array.from(i.slice()),this._refPoints.bottomMid=Array.from(c.VisualizerMath.middlePoint(i,o)),this._refPoints.bottomLeft=Array.from(o.slice()),this._refPoints.leftMid=Array.from(c.VisualizerMath.middlePoint(r,o)),this.measuredHeight=Math.round(this.measurer.measureDistance(r,Array.from(o),this.distanceOffset)),this.updateUI(),e&&this.savePosition()}},{key:\"imageMoved\",value:function(){var t=this.measurer.referencedPointToImage(this._referencedPositions.start);this.position(c.VisualizerMath.vec2ToPoint(t)),this._refPoints.topLeft=[0,0],this.updateEnd(this.measurer.referencedPointToImage(this._referencedPositions.end),!1,!1)}},{key:\"checkIntersection\",value:function(t){return this.getAllIntersections({x:t[0],y:t[1]}).length>0}},{key:\"_mouseEnter\",value:function(t){this.measurer.changeCursorToMove(),this.draggable(!0),this.draw()}},{key:\"_mouseLeave\",value:function(t){this.measurer.changeCursorToDefault(),this.draggable(!1),this.draw()}},{key:\"addDragHandles\",value:function(){var t=this;this._rightDragHandle||(this._rightDragHandle=new u.default.Rect({name:\"Right\",stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,dragBoundFunc:function(e){var n=t.refP(t._refPoints.topLeft)[0]+10;return{x:Math.max(n,e.x),y:t._rightDragHandle.getAbsolutePosition().y}},x:this._refPoints.rightMid[0],y:this._refPoints.rightMid[1],draggable:!0}),this._rightDragHandle.on(\"dragend\",function(){t.updateRight(t._rightDragHandle.getAbsolutePosition().x),t.getStage().batchDraw()}),this._bottomDragHandle=new u.default.Rect({name:\"Bottom\",stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,dragBoundFunc:function(e){var n=t.refP(t._refPoints.topLeft)[1]+10;return{x:t._bottomDragHandle.getAbsolutePosition().x,y:Math.max(n,e.y)}},x:this._refPoints.bottomMid[0],y:this._refPoints.bottomMid[1],draggable:!0}),this._bottomDragHandle.on(\"dragend\",function(){t.updateBottom(t._bottomDragHandle.getAbsolutePosition().y),t.getStage().batchDraw()}),this._leftDragHandle=new u.default.Rect({name:\"Left\",stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,dragBoundFunc:function(e){var n=t.refP(t._refPoints.bottomRight)[0]-10;return{x:Math.min(n,e.x),y:t._leftDragHandle.getAbsolutePosition().y}},x:this._refPoints.leftMid[0],y:this._refPoints.leftMid[1],draggable:!0}),this._leftDragHandle.on(\"dragend\",function(){t.updateLeft(t._leftDragHandle.getAbsolutePosition().x),t.getStage().batchDraw()}),this._topDragHandle=new u.default.Rect({name:\"Top\",stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,dragBoundFunc:function(e){var n=t.refP(t._refPoints.bottomRight)[1]-10;return{x:t._topDragHandle.getAbsolutePosition().x,y:Math.min(n,e.y)}},x:this._refPoints.topMid[0],y:this._refPoints.topMid[1],draggable:!0}),this._topDragHandle.on(\"dragend\",function(){t.updateTop(t._topDragHandle.getAbsolutePosition().y),t.getStage().batchDraw()}),this._dragHandles=[this._topDragHandle,this._rightDragHandle,this._bottomDragHandle,this._leftDragHandle],this._dragHandles.forEach(function(e){e.on(\"dragstart\",function(){return t.dragging=!0}),e.on(\"dragmove\",function(){\"Left\"===e.name()||\"Right\"===e.name()?t[\"update\".concat(e.name())](t[\"_\".concat(e.name().toLowerCase(),\"DragHandle\")].getAbsolutePosition().x):t[\"update\".concat(e.name())](t[\"_\".concat(e.name().toLowerCase(),\"DragHandle\")].getAbsolutePosition().y)}),e.on(\"dragend\",function(){return t.dragging=!1}),t.add(e),e.draw()}))}},{key:\"removeDragHandles\",value:function(){this._rightDragHandle&&(this._rightDragHandle.destroy(),this._rightDragHandle=null,this._bottomDragHandle.destroy(),this._bottomDragHandle=null,this._topDragHandle.destroy(),this._topDragHandle=null,this._leftDragHandle.destroy(),this._leftDragHandle=null)}},{key:\"refP\",value:function(t){return l.vec2.add(l.vec2.create(),this.vec2Position(),t)}},{key:\"savePosition\",value:function(){var t=l.vec2.create(),e=l.vec2.create(),n=this.vec2Position();l.vec2.add(t,n,this._refPoints.topLeft),l.vec2.add(e,n,this._refPoints.bottomRight),this._referencedPositions.start=this.measurer.imageReferencedPoint(t),this._referencedPositions.end=this.measurer.imageReferencedPoint(e)}}])&&i(n.prototype,r),f&&i(n,f),e}();e.SquareMeasurementBase=f},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(8),c=n(7),l=n(4),f=n(5),d=n(0),g=function(t){function e(t,n,i){var a,u,h;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),u=this,h=o(e).call(this,i),(a=!h||\"object\"!==r(h)&&\"function\"!=typeof h?s(u):h).polygon=t,a.measurer=n,a.edgeList=f.List(),a.dragHandleList=f.List(),a.areaLabels=f.List(),a.distanceLabels=f.List();var c=a.measurer.scaleNodeToImage(t.nodes.first());return a.x(c.x),a.y(c.y),a.setEdges(t),a.on(\"click\",function(){return a.measurer.select(s(s(a)))}),a.savePosition(),a}var n,g,p;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(e,h.MeasurementBase),n=e,(g=[{key:\"checkIntersection\",value:function(t){return!1}},{key:\"imageMoved\",value:function(){var t=this.measurer.referencedPointToImage(this.imageReferencedPosition);this.position(d.VisualizerMath.vec2ToPoint(t)),this.setEdges(this.polygon),this.addDragHandles()}},{key:\"selected\",value:function(t){t&&this.polygon.complete?this.addDragHandles():this.removeDragHandles()}},{key:\"toMeasurement\",value:function(){return{class:\"PolygonShape\",guid:this.polygon.guid,points:this.polygon.nodes.map(function(t){return t.toJSON()}).toArray(),meta:{measuredArea:this.measurer.scaleArea(this.polygon.area)/144}}}},{key:\"updateNode\",value:function(t,e){this.setEdges(c.Polygon.UpdateNode(this.polygon,e,t)),this.savePosition()}},{key:\"setEdges\",value:function(t){var e=this;this.polygon=t;var n=new l.NodeRecord(this.position()),r=this.polygon.nodes.map(function(t){return l.Node.Subtract(e.measurer.scaleNodeToImage(t),n)});if(t.complete){this.closeShape&&(this.closeShape.destroy(),this.closeShape=null),this.edgeList.count()>0&&(this.edgeList.forEach(function(t){return t.destroy()}),this.edgeList=f.List());var i=r.reduce(function(t,e){return t.push.apply(t,[e.x,e.y]),t},[]);this.completePolygon?(this.completePolygon.points(i),console.info(2)):(this.completePolygon=new u.default.Line({strokeWidth:2,points:i,stroke:\"black\",fill:\"rgb(192, 192, 192, 0.75)\",closed:!0,name:\"Polygon\"}),this.add(this.completePolygon),console.info(1)),this.areaLabels.size<=0&&(this.areaLabels=f.List([new u.default.Text({text:\"10\",x:0,y:0,fontSize:20,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2}),new u.default.Text({text:\"10\",x:0,y:0,fontSize:20,fontFamily:\"Roboto\",stroke:\"black\"})]),this.areaLabels.forEach(function(t){return e.add(t)})),this.distanceLabels.size<=0&&r.forEach(function(t,n){e.distanceLabels=e.distanceLabels.push(f.List([new u.default.Text({text:\"10\",x:0,y:0,fontSize:12,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2}),new u.default.Text({text:\"10\",x:0,y:0,fontSize:12,fontFamily:\"Roboto\",stroke:\"black\"})])),e.add(e.distanceLabels.get(n).get(0)),e.add(e.distanceLabels.get(n).get(1))});var o=this.measurer.scaleArea(this.polygon.area),a=l.Node.Subtract(this.measurer.scaleNodeToImage(this.polygon.centroid),n);a=l.Node.Subtract(a,new l.NodeRecord({x:this.areaLabels.get(0).width()/2,y:this.areaLabels.get(0).height()/2})),this.areaLabels.get(0).position(a),this.areaLabels.get(1).position(a),this.areaLabels.get(0).text((o/144).toFixed(1).toString()),this.areaLabels.get(1).text((o/144).toFixed(1).toString()),r.forEach(function(t,n,r){var i,o=r.get((n+1)%r.size),a=e.measurer.measureDistance(d.VisualizerMath.pointToNumArray(t),d.VisualizerMath.pointToNumArray(o));i=t.x>o.x?d.VisualizerMath.middleOffset(d.VisualizerMath.pointToNumArray(t),d.VisualizerMath.pointToNumArray(o),20):d.VisualizerMath.middleOffset(d.VisualizerMath.pointToNumArray(o),d.VisualizerMath.pointToNumArray(t),20),e.distanceLabels.get(n).get(0).text(a.toFixed(1).toString()),e.distanceLabels.get(n).get(1).text(a.toFixed(1).toString()),e.distanceLabels.get(n).get(0).position({x:i[0],y:i[1]}),e.distanceLabels.get(n).get(1).position({x:i[0],y:i[1]})})}else{for(var s=r.first(),h=r.shift(),c=0;h.size>0;){var g=l.NodeList.Shift(h),p=g.head,v=g.tail,y=p,m=void 0;this.edgeList.get(c)?(m=this.edgeList.get(c)).points([s.x,s.y,y.x,y.y]):(m=new u.default.Line({points:[s.x,s.y,y.x,y.y],strokeWidth:2,stroke:\"black\"}),this.add(m),this.edgeList=this.edgeList.push(m)),h=v,s=y,c++}this.closeShape||(this.closeShape=new u.default.Rect({stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,x:0,y:0,draggable:!1}),this.add(this.closeShape))}this.savePosition()}},{key:\"addDragHandles\",value:function(){var t=this;if(this.dragHandleList.size<=0){var e=new l.NodeRecord(this.position());this.polygon.nodes.map(function(n){return n=t.measurer.scaleNodeToImage(n),l.Node.Subtract(n,e)}).forEach(function(e,n){var r=new u.default.Rect({stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,x:e.x,y:e.y,draggable:!0});r.on(\"dragmove\",function(){t.updateNode(t.measurer.scaleNodeFromImage(new l.NodeRecord(r.getAbsolutePosition())),n),t.polygon=c.Polygon.Centroid(t.polygon),t.polygon=c.Polygon.Area(t.polygon)}),r.on(\"dragend\",function(){t.updateNode(t.measurer.scaleNodeFromImage(new l.NodeRecord(r.getAbsolutePosition())),n),t.polygon=c.Polygon.Centroid(t.polygon),t.polygon=c.Polygon.Area(t.polygon),t.measurer.shapeChanged(t),t.getStage().batchDraw()}),t.add(r),r.draw(),t.dragHandleList=t.dragHandleList.push(r)})}else{var n=new l.NodeRecord(this.position());this.polygon.nodes.map(function(e){return e=t.measurer.scaleNodeToImage(e),l.Node.Subtract(e,n)}).forEach(function(e,n){var r=t.dragHandleList.get(n);r.position(e),r.draw()})}}},{key:\"removeDragHandles\",value:function(){this.dragHandleList.size>0&&(this.dragHandleList.forEach(function(t){return t.destroy()}),this.dragHandleList=f.List())}},{key:\"savePosition\",value:function(){this.imageReferencedPosition=this.measurer.imageReferencedPoint(d.VisualizerMath.pointToNumArray(this.position()))}}])&&i(n.prototype,g),p&&i(n,p),e}();e.PolygonShape=g},function(t,e,n){\"use strict\";function r(t,e){if(!(this instanceof r))return new r(t,e);if(this.data=t||[],this.length=this.data.length,this.compare=e||i,this.length>0)for(var n=(this.length>>1)-1;n>=0;n--)this._down(n)}function i(t,e){return t<e?-1:t>e?1:0}t.exports=r,t.exports.default=r,r.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var e=this.data,n=this.compare,r=e[t];t>0;){var i=t-1>>1,o=e[i];if(n(r,o)>=0)break;e[t]=o,t=i}e[t]=r},_down:function(t){for(var e=this.data,n=this.compare,r=this.length>>1,i=e[t];t<r;){var o=1+(t<<1),a=o+1,s=e[o];if(a<this.length&&n(e[a],s)<0&&(o=a,s=e[a]),n(s,i)>=0)break;e[t]=s,t=o}e[t]=i}}},function(t,e,n){\"use strict\";var r=n(13);function i(t,e,n){var i,s,u,h;e=e||1;for(var c=0;c<t[0].length;c++){var l=t[0][c];(!c||l[0]<i)&&(i=l[0]),(!c||l[1]<s)&&(s=l[1]),(!c||l[0]>u)&&(u=l[0]),(!c||l[1]>h)&&(h=l[1])}var f=u-i,d=h-s,g=Math.min(f,d),p=g/2,v=new r(null,o);if(0===g)return[i,s];for(var y=i;y<u;y+=g)for(var m=s;m<h;m+=g)v.push(new a(y+p,m+p,p,t));var _=function(t){for(var e=0,n=0,r=0,i=t[0],o=0,s=i.length,u=s-1;o<s;u=o++){var h=i[o],c=i[u],l=h[0]*c[1]-c[0]*h[1];n+=(h[0]+c[0])*l,r+=(h[1]+c[1])*l,e+=3*l}return 0===e?new a(i[0][0],i[0][1],0,t):new a(n/e,r/e,0,t)}(t),b=new a(i+f/2,s+d/2,0,t);b.d>_.d&&(_=b);for(var w=v.length;v.length;){var S=v.pop();S.d>_.d&&(_=S,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*S.d)/1e4,w)),S.max-_.d<=e||(p=S.h/2,v.push(new a(S.x-p,S.y-p,p,t)),v.push(new a(S.x+p,S.y-p,p,t)),v.push(new a(S.x-p,S.y+p,p,t)),v.push(new a(S.x+p,S.y+p,p,t)),w+=4)}return n&&(console.log(\"num probes: \"+w),console.log(\"best distance: \"+_.d)),[_.x,_.y]}function o(t,e){return e.max-t.max}function a(t,e,n,r){this.x=t,this.y=e,this.h=n,this.d=function(t,e,n){for(var r=!1,i=1/0,o=0;o<n.length;o++)for(var a=n[o],u=0,h=a.length,c=h-1;u<h;c=u++){var l=a[u],f=a[c];l[1]>e!=f[1]>e&&t<(f[0]-l[0])*(e-l[1])/(f[1]-l[1])+l[0]&&(r=!r),i=Math.min(i,s(t,e,l,f))}return(r?1:-1)*Math.sqrt(i)}(t,e,r),this.max=this.d+this.h*Math.SQRT2}function s(t,e,n,r){var i=n[0],o=n[1],a=r[0]-i,s=r[1]-o;if(0!==a||0!==s){var u=((t-i)*a+(e-o)*s)/(a*a+s*s);u>1?(i=r[0],o=r[1]):u>0&&(i+=a*u,o+=s*u)}return(a=t-i)*a+(s=e-o)*s}t.exports=i,t.exports.default=i},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(5),h=n(6),c=n(2),l=n(7),f=n(12),d=n(4),g=n(0),p=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(n=o(this,a(e).call(this,t))).kind=c.WindowScalerTool.polygon,n}var n,r,p;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,h.BaseTool),n=e,(r=[{key:\"checkIntersection\",value:function(t){return!1}},{key:\"cleanup\",value:function(){}},{key:\"createFromMeasurement\",value:function(t){var e=l.Polygon.Area(l.Polygon.Centroid(new l.PolygonRecord({complete:!0,guid:t.guid,nodes:u.List(t.points.map(function(t){return new d.NodeRecord(t)}))}))),n=new f.PolygonShape(e,this,{});return this.scaler.addShape(n),this.scaler.measureLayer.add(n),n.moveToBottom(),n}},{key:\"keyup\",value:function(t){}},{key:\"mouseDown\",value:function(t,e){}},{key:\"mouseMove\",value:function(t,e){this._currentPolygon&&(this._currentPolygon=l.Polygon.UpdateNode(this._currentPolygon,this._currentPolygon.nodes.size-1,this.scaleNodeFromImage(new d.NodeRecord({x:e[0],y:e[1]}))),this._currentShape.setEdges(this._currentPolygon),this.scaler.measureLayer.draw())}},{key:\"mouseUp\",value:function(t,e){var n=new d.NodeRecord({x:e[0],y:e[1]});n=this.scaleNodeFromImage(n),this._currentPolygon&&this._currentShape.closeShape&&this._currentShape.closeShape.intersects(g.VisualizerMath.vec2ToPoint(e))?(this._currentPolygon=l.Polygon.Finish(this._currentPolygon),this._currentPolygon=l.Polygon.Centroid(this._currentPolygon),this._currentPolygon=l.Polygon.Area(this._currentPolygon),this._currentShape.setEdges(this._currentPolygon),this.shapeChanged(this._currentShape),this.select(this._currentShape),this._currentPolygon=null,this._currentShape=null):this._currentPolygon?(this._currentPolygon=l.Polygon.AddNode(this._currentPolygon,n),this._currentShape.setEdges(this._currentPolygon)):t.target&&\"Image\"===t.target.className&&(this._currentPolygon=new l.PolygonRecord({nodes:u.List([n,n])}),this._currentShape=new f.PolygonShape(this._currentPolygon,this,{}),this.scaler.addShape(this._currentShape),this.scaler.measureLayer.add(this._currentShape),this._currentShape.moveToBottom()),this.scaler.measureLayer.draw()}}])&&i(n.prototype,r),p&&i(n,p),e}();e.PolygonTool=p},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(0),c=n(3),l=n(11),f=n(2),d=function(t){function e(t,n,i){var a,h,c;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),h=this,c=o(e).call(this,t,n,i),(a=!c||\"object\"!==r(c)&&\"function\"!=typeof c?s(h):c).measurer=t,a.start=n,a.kind=f.WindowScalerTool.daylight,a._measuringWindow=[],a._measuringOutline=[],a._measuringText=[],a._measuringWindow.push(new u.default.Rect({width:0,height:0,y:0,x:0,stroke:\"black\",strokeWidth:2,fill:\"rgb(169, 222, 148, 0.5)\"})),a._measuringOutline.push(new u.default.Rect({width:0,height:0,y:0,x:0,stroke:\"white\",dash:[5,1,5],strokeWidth:3,fill:\"rgb(0, 0, 0, 0)\"})),a._measuringOutline.push(new u.default.Rect({width:0,height:0,y:0,x:0,stroke:\"black\",dash:[5,1,5],strokeWidth:2,fill:\"rgb(0, 0, 0, 0)\"})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"black\"})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"black\"})),a.add(a._measuringWindow[0]),a.add(a._measuringOutline[0]),a.add(a._measuringOutline[1]),a.add(a._measuringText[0]),a.add(a._measuringText[1]),a.add(a._measuringText[2]),a.add(a._measuringText[3]),a._measuringWindow.forEach(function(t){return t.moveToTop()}),a.on(\"mouseenter\",function(t){return a._mouseEnter(t)}),a.on(\"mouseleave\",function(t){return a._mouseLeave(t)}),a.on(\"dragend\",function(t){return a.savePosition()}),a.on(\"click\",function(){return a.measurer.select(s(s(a)))}),a}var n,d,g;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(e,l.SquareMeasurementBase),n=e,(d=[{key:\"updateUI\",value:function(){var t=this,e=12.5*this.measurer.scale,n=Math.abs(this._refPoints.topLeft[1]-this._refPoints.bottomRight[1]),r=Math.abs(this._refPoints.topLeft[0]-this._refPoints.bottomRight[0]),i=c.vec2.subtract(c.vec2.create(),this._refPoints.topLeft,[e,e]),o=c.vec2.add(c.vec2.create(),i,[r+2*e,0]),a=c.vec2.add(c.vec2.create(),i,[0,n+2*e]);c.vec2.add(c.vec2.create(),this._refPoints.bottomRight,[e,e]);this._measuringWindow.forEach(function(e){e.x(t._refPoints.topLeft[0]),e.y(t._refPoints.topLeft[1]),e.setAttrs({height:n,width:r})}),this._measuringOutline.forEach(function(i){i.x(t._refPoints.topLeft[0]-e),i.y(t._refPoints.topLeft[1]-e),i.setAttrs({height:n+2*e,width:r+2*e})}),this.measuredHeight=Math.round(this.measurer.measureDistance(Array.from(i),Array.from(a),this.distanceOffset));var s=h.VisualizerMath.pointOffset(i,a,this._refPoints.leftMid,25+e);this._measuringText[0].text(this.measuredHeight.toString()),this._measuringText[0].offset({x:this._measuringText[0].width()/2,y:this._measuringText[0].height()/2}),this._measuringText[0].setAttrs({y:s[1],x:s[0]}),this._measuringText[1].text(this.measuredHeight.toString()),this._measuringText[1].offset({x:this._measuringText[1].width()/2,y:this._measuringText[1].height()/2}),this._measuringText[1].setAttrs({y:s[1],x:s[0]}),this.measuredWidth=Math.round(this.measurer.measureDistance(Array.from(i),Array.from(o),this.distanceOffset));var u=h.VisualizerMath.pointOffset(i,o,this._refPoints.topMid,-25-e);this._measuringText[2].text(this.measuredWidth.toString()),this._measuringText[2].offset({x:this._measuringText[2].width()/2,y:this._measuringText[2].height()/2}),this._measuringText[2].setAttrs({y:u[1],x:u[0]}),this._measuringText[3].text(this.measuredWidth.toString()),this._measuringText[3].offset({x:this._measuringText[3].width()/2,y:this._measuringText[3].height()/2}),this._measuringText[3].setAttrs({y:u[1],x:u[0]})}},{key:\"toMeasurement\",value:function(){var t=c.vec2.create(),e=c.vec2.create();c.vec2.add(t,this.vec2Position(),this._refPoints.bottomRight),c.vec2.add(e,this.vec2Position(),this._refPoints.topLeft);var n=this.measurer.imageReferencedPoint(t),r=this.measurer.imageReferencedPoint(e);return{class:\"DaylightOutline\",points:[h.VisualizerMath.vec2ToPoint(n),h.VisualizerMath.vec2ToPoint(r)],meta:{measuredWidth:this.measuredWidth,measuredHeight:this.measuredHeight}}}}])&&i(n.prototype,d),g&&i(n,g),e}();e.DaylightOutline=d},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(0),h=n(2),c=n(16),l=n(6),f=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(n=o(this,a(e).call(this,t))).scaler=t,n.kind=h.WindowScalerTool.daylight,n}var n,r,f;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,l.BaseTool),n=e,(r=[{key:\"add\",value:function(t){var e=new c.DaylightOutline(this,t,{});return this.scaler.measureLayer.add(e),e}},{key:\"cleanup\",value:function(){this._currentDaylight&&this._currentDaylight.destroy(),this.scaler.measureLayer.batchDraw()}},{key:\"checkIntersection\",value:function(t){if(this._currentDaylight)return this._currentDaylight.getAllIntersections({x:t[0],y:t[1]}).length>0}},{key:\"mouseDown\",value:function(t,e){}},{key:\"mouseMove\",value:function(t,e){this._currentDaylight&&(this._currentDaylight.updateEnd(e),this._currentDaylight.draw(),this.scaler.measureLayer.batchDraw())}},{key:\"mouseUp\",value:function(t,e){this._currentDaylight?(this._currentDaylight.updateEnd(e),this.scaler.addShape(this._currentDaylight),this._currentDaylight=null):(t.target&&\"Image\"===t.target.className||\"Polygon\"===t.target.name())&&(this._currentDaylight=this.add(e)),this.scaler.measureLayer.batchDraw()}},{key:\"keyup\",value:function(t){}},{key:\"createFromMeasurement\",value:function(t){var e=this.add(this.referencedPointToImage(u.VisualizerMath.pointToNumArray(t.points[0])));return e.updateEnd(this.referencedPointToImage(u.VisualizerMath.pointToNumArray(t.points[1]))),e.draw(),e}},{key:\"currentOutline\",get:function(){return this._currentDaylight}}])&&i(n.prototype,r),f&&i(n,f),e}();e.DaylightOutliner=f},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(0),c=n(3),l=n(11),f=n(2),d=function(t){function e(t,n,i){var a,h,c;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),h=this,c=o(e).call(this,t,n,i),(a=!c||\"object\"!==r(c)&&\"function\"!=typeof c?s(h):c).kind=f.WindowScalerTool.window,a._measuringText=[],a._measuringWindow=new u.default.Rect({width:0,height:0,y:0,x:0,stroke:\"black\",strokeWidth:2,fill:\"rgb(79, 189, 244, 0.5)\"}),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"black\"})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),a._measuringText.push(new u.default.Text({text:\"0\",y:0,x:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"black\"})),a.add(a._measuringWindow),a.add(a._measuringText[0]),a.add(a._measuringText[1]),a.add(a._measuringText[2]),a.add(a._measuringText[3]),a.on(\"mouseenter\",function(t){return a._mouseEnter(t)}),a.on(\"mouseleave\",function(t){return a._mouseLeave(t)}),a.on(\"dragend\",function(t){return a.savePosition()}),a.on(\"click\",function(){return a.measurer.select(s(s(a)))}),a}var n,d,g;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(e,l.SquareMeasurementBase),n=e,(d=[{key:\"updateUI\",value:function(){this._measuringWindow.x(this._refPoints.topLeft[0]),this._measuringWindow.y(this._refPoints.topLeft[1]),this._measuringWindow.height(Math.abs(this._refPoints.topLeft[1]-this._refPoints.bottomRight[1])),this._measuringWindow.width(Math.abs(this._refPoints.topLeft[0]-this._refPoints.bottomRight[0]));var t=h.VisualizerMath.pointOffset(this._refPoints.topLeft,this._refPoints.bottomLeft,this._refPoints.leftMid,20);this._measuringText[0].text(this.measuredHeight.toString()),this._measuringText[0].offset({x:this._measuringText[0].width()/2,y:this._measuringText[0].height()/2}),this._measuringText[0].position({y:t[1],x:t[0]}),this._measuringText[1].text(this.measuredHeight.toString()),this._measuringText[1].offset({x:this._measuringText[1].width()/2,y:this._measuringText[1].height()/2}),this._measuringText[1].position({y:t[1],x:t[0]}),this.measuredWidth=Math.round(this.measurer.measureDistance(this._refPoints.topLeft,this._refPoints.topRight,this.distanceOffset));var e=h.VisualizerMath.pointOffset(this._refPoints.topLeft,this._refPoints.topRight,this._refPoints.topMid,-20);this._measuringText[2].text(this.measuredWidth.toString()),this._measuringText[2].offset({x:this._measuringText[2].width()/2,y:this._measuringText[2].height()/2}),this._measuringText[2].position({y:e[1],x:e[0]}),this._measuringText[3].text(this.measuredWidth.toString()),this._measuringText[3].offset({x:this._measuringText[3].width()/2,y:this._measuringText[3].height()/2}),this._measuringText[3].position({y:e[1],x:e[0]})}},{key:\"toMeasurement\",value:function(){var t=c.vec2.create(),e=c.vec2.create();c.vec2.add(t,this.vec2Position(),this._refPoints.bottomRight),c.vec2.add(e,this.vec2Position(),this._refPoints.topLeft);var n=this.measurer.imageReferencedPoint(t),r=this.measurer.imageReferencedPoint(e);return{class:\"WindowOutline\",points:[h.VisualizerMath.vec2ToPoint(n),h.VisualizerMath.vec2ToPoint(r)],meta:{measuredWidth:this.measuredWidth,measuredHeight:this.measuredHeight}}}}])&&i(n.prototype,d),g&&i(n,g),e}();e.WindowOutline=d},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(2),h=n(18),c=n(6),l=n(0),f=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(n=o(this,a(e).call(this,t))).kind=u.WindowScalerTool.window,n}var n,r,f;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,c.BaseTool),n=e,(r=[{key:\"add\",value:function(t){var e=new h.WindowOutline(this,t,{});return this.scaler.measureLayer.add(e),e}},{key:\"cleanup\",value:function(){this._currentOutline&&this._currentOutline.destroy(),this.scaler.measureLayer.batchDraw()}},{key:\"mouseDown\",value:function(t,e){}},{key:\"mouseMove\",value:function(t,e){this._currentOutline&&(this._currentOutline.updateEnd(e),this._currentOutline.draw(),this.scaler.measureLayer.batchDraw())}},{key:\"mouseUp\",value:function(t,e){this._currentOutline?(this._currentOutline.updateEnd(e),this.scaler.addShape(this._currentOutline),this.select(this._currentOutline),this._currentOutline=null):(t.target&&\"Image\"===t.target.className||\"Polygon\"===t.target.name())&&(this._currentOutline=this.add(e)),this.scaler.measureLayer.batchDraw()}},{key:\"keyup\",value:function(t){}},{key:\"createFromMeasurement\",value:function(t){var e=this.add(this.referencedPointToImage(l.VisualizerMath.pointToNumArray(t.points[0])));return e.updateEnd(this.referencedPointToImage(l.VisualizerMath.pointToNumArray(t.points[1]))),e.draw(),e}},{key:\"currentOutline\",get:function(){return this._currentOutline}}])&&i(n.prototype,r),f&&i(n,f),e}();e.WindowOutliner=f},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t,e){return(a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(1),h=n(3),c=n(0),l=n(8),f=n(2),d=function(t){function e(t,n,i,a){var h,c,l;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),c=this,l=o(e).call(this,a),(h=!l||\"object\"!==r(l)&&\"function\"!=typeof l?s(c):l).measurer=t,h.start=n,h.end=i,h.kind=f.WindowScalerTool.line,h._measuringText=[],h._referencedPositions={start:[],end:[]},h.x(n[0]),h.y(n[1]),h._measuringLine=new u.default.Line({points:[0,0,0,0],strokeWidth:2,stroke:\"red\"}),h._startCap=new u.default.Line({points:[0,0,0,0],strokeWidth:2,stroke:\"red\"}),h._endCap=new u.default.Line({points:[0,0,0,0],strokeWidth:2,stroke:\"red\"}),h._measuringText.push(new u.default.Text({text:\"0\",x:0,y:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"white\",strokeWidth:2})),h._measuringText.push(new u.default.Text({text:\"0\",x:0,y:0,fontSize:16,fontFamily:\"Roboto\",stroke:\"black\"})),h.add(h._measuringLine),h.add(h._startCap),h.add(h._endCap),h.add(h._measuringText[0]),h.add(h._measuringText[1]),h.on(\"mouseenter\",function(t){return h._mouseEnter(t)}),h.on(\"mouseleave\",function(t){return h._mouseLeave(t)}),h.on(\"dragend\",function(t){return h.savePosition()}),h.on(\"click\",function(){return h.measurer.select(s(s(h)))}),h}var n,d,g;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}(e,l.MeasurementBase),n=e,(d=[{key:\"updateStart\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=h.vec2.create();h.vec2.sub(n,t,c.VisualizerMath.pointToVec2(this.position()));var r=this._measuringLine.points();r[0]=n[0],r[1]=n[1],this._measuringLine.points(r);var i,o=r.slice(2,4);this.measuredLength=this.measurer.measureDistance([n[0],n[1]],o,this.distanceOffset),i=n[0]>o[0]?c.VisualizerMath.middleOffset(n,o,20):c.VisualizerMath.middleOffset(o,n,20);var a=c.VisualizerMath.pointOffset(n,o,n,5),s=c.VisualizerMath.pointOffset(n,o,n,-5),u=c.VisualizerMath.pointOffset(n,o,o,5),l=c.VisualizerMath.pointOffset(n,o,o,-5);this._startCap.points([a[0],a[1],s[0],s[1]]),this._endCap.points([u[0],u[1],l[0],l[1]]),this._measuringText[0].position({x:i[0],y:i[1]}),this._measuringText[0].text(this.measuredLength.toFixed(1).toString()),this._measuringText[1].position({x:i[0],y:i[1]}),this._measuringText[1].text(this.measuredLength.toFixed(1).toString()),this._startDragHandle&&this._startDragHandle.position({x:n[0],y:n[1]}),e&&this.savePosition(),this.draw()}},{key:\"updateEnd\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=h.vec2.create();h.vec2.sub(n,t,c.VisualizerMath.pointToVec2(this.position()));var r=this._measuringLine.points();r[2]=n[0],r[3]=n[1],this._measuringLine.points(r);var i,o=r.slice(0,2);this.measuredLength=this.measurer.measureDistance(o,[n[0],n[1]],this.distanceOffset),i=o[0]>t[0]?c.VisualizerMath.middleOffset(o,n,20):c.VisualizerMath.middleOffset(n,o,20);var a=c.VisualizerMath.pointOffset(o,n,o,5),s=c.VisualizerMath.pointOffset(o,n,o,-5),u=c.VisualizerMath.pointOffset(o,n,n,5),l=c.VisualizerMath.pointOffset(o,n,n,-5);this._startCap.points([a[0],a[1],s[0],s[1]]),this._endCap.points([u[0],u[1],l[0],l[1]]),this._measuringText[0].position({x:i[0],y:i[1]}),this._measuringText[0].text(this.measuredLength.toFixed(1).toString()),this._measuringText[1].position({x:i[0],y:i[1]}),this._measuringText[1].text(this.measuredLength.toFixed(1).toString()),this._endDragHandle&&this._endDragHandle.position({x:n[0],y:n[1]}),e&&this.savePosition(),this.draw()}},{key:\"imageMoved\",value:function(){this.selected(!1);var t=this.measurer.referencedPointToImage(this._referencedPositions.start);this.position(c.VisualizerMath.vec2ToPoint(t)),this.updateStart(t,!1),this.updateEnd(this.measurer.referencedPointToImage(this._referencedPositions.end),!1)}},{key:\"selected\",value:function(t){t&&!this._endDragHandle?this.addDragHandles():!t&&this._endDragHandle&&this.removeDragHandles()}},{key:\"toMeasurement\",value:function(){return{class:\"TapeDistance\",points:[c.VisualizerMath.vec2ToPoint(this.measurer.imageReferencedPoint(this.absoluteStart)),c.VisualizerMath.vec2ToPoint(this.measurer.imageReferencedPoint(this.absoluteEnd))],meta:{distanceOffset:this.distanceOffset,measuredDistance:this.measuredLength}}}},{key:\"checkIntersection\",value:function(t){return!1}},{key:\"addDragHandles\",value:function(){var t=this,e=this._measuringLine.points();this._startDragHandle=new u.default.Rect({stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,x:e[0],y:e[1],draggable:!0}),this._startDragHandle.on(\"dragmove\",function(){t.updateStart(c.VisualizerMath.pointToNumArray(t.getStage().getPointerPosition()))}),this._startDragHandle.on(\"dragend\",function(){t.updateStart(c.VisualizerMath.pointToNumArray(t.getStage().getPointerPosition())),t.getStage().batchDraw()}),this.add(this._startDragHandle),this._startDragHandle.draw(),this._endDragHandle=new u.default.Rect({stroke:\"black\",fill:\"lime\",offsetX:5,offsetY:5,width:10,height:10,x:e[2],y:e[3],draggable:!0}),this._endDragHandle.on(\"dragmove\",function(){t.updateEnd(c.VisualizerMath.pointToNumArray(t.getStage().getPointerPosition())),t.getStage().batchDraw()}),this._endDragHandle.on(\"dragend\",function(){t.updateEnd(c.VisualizerMath.pointToNumArray(t.getStage().getPointerPosition())),t.getStage().batchDraw()}),this.add(this._endDragHandle),this._endDragHandle.draw()}},{key:\"removeDragHandles\",value:function(){this._startDragHandle.destroy(),this._endDragHandle.destroy(),this._startDragHandle=null,this._endDragHandle=null}},{key:\"_mouseEnter\",value:function(t){this.measurer.changeCursorToMove(),t.target===this._startDragHandle||t.target===this._endDragHandle||this.draggable(!0),this.draw()}},{key:\"_mouseLeave\",value:function(t){this.measurer.changeCursorToDefault(),this.draggable(!1),this.draw()}},{key:\"savePosition\",value:function(){this._referencedPositions.start=this.measurer.imageReferencedPoint(this.absoluteStart),this._referencedPositions.end=this.measurer.imageReferencedPoint(this.absoluteEnd)}},{key:\"absoluteStart\",get:function(){var t=h.vec2.create();return h.vec2.add(t,c.VisualizerMath.pointToVec2(this.position()),this._measuringLine.points().slice(0,2)),Array.from(t)}},{key:\"absoluteEnd\",get:function(){var t=h.vec2.create();return h.vec2.add(t,c.VisualizerMath.pointToVec2(this.position()),this._measuringLine.points().slice(2,4)),Array.from(t)}}])&&i(n.prototype,d),g&&i(n,g),e}();e.TapeDistance=d},function(t,e,n){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):e}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=n(2),h=n(20),c=n(0),l=n(6),f=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),(n=o(this,a(e).call(this,t))).kind=u.WindowScalerTool.line,n}var n,r,f;return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,l.BaseTool),n=e,(r=[{key:\"add\",value:function(t){return this._currentTape=new h.TapeDistance(this,t,t,{}),this.scaler.measureLayer.add(this._currentTape),this._currentTape}},{key:\"update\",value:function(t){this._currentTape.updateEnd(t),this.scaler.measureLayer.draw()}},{key:\"cleanup\",value:function(){this._currentTape&&this._currentTape.destroy(),this.scaler.measureLayer.batchDraw()}},{key:\"checkIntersection\",value:function(t){return!1}},{key:\"mouseDown\",value:function(t,e){}},{key:\"mouseMove\",value:function(t,e){this._currentTape&&(this._currentTape.updateEnd(e),this.scaler.measureLayer.draw())}},{key:\"mouseUp\",value:function(t,e){this._currentTape?(this._currentTape.updateEnd(e),this.scaler.measureLayer.draw(),this.scaler.addShape(this._currentTape),this.select(this._currentTape),this._currentTape=null):t.target&&\"Image\"===t.target.className&&this.add(e)}},{key:\"keyup\",value:function(t){}},{key:\"load\",value:function(t){var e=this;t.forEach(function(t){e.add(e.scaler.scalePointToImage(t.start)).updateEnd(e.scaler.scalePointToImage(t.end))}),this._currentTape=null}},{key:\"createFromMeasurement\",value:function(t){var e=this.add(this.referencedPointToImage(c.VisualizerMath.pointToNumArray(t.points[0])));return e.updateEnd(this.referencedPointToImage(c.VisualizerMath.pointToNumArray(t.points[1]))),e.draw(),e}}])&&i(n.prototype,r),f&&i(n,f),e}();e.TapeMeasurer=f},function(t,e,n){var r;(function(){var n=!1,i=function(t){return t instanceof i?t:this instanceof i?void(this.EXIFwrapped=t):new i(t)};void 0!==t&&t.exports&&(e=t.exports=i),e.EXIF=i;var o=i.Tags={36864:\"ExifVersion\",40960:\"FlashpixVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",37121:\"ComponentsConfiguration\",37122:\"CompressedBitsPerPixel\",37500:\"MakerNote\",37510:\"UserComment\",40964:\"RelatedSoundFile\",36867:\"DateTimeOriginal\",36868:\"DateTimeDigitized\",37520:\"SubsecTime\",37521:\"SubsecTimeOriginal\",37522:\"SubsecTimeDigitized\",33434:\"ExposureTime\",33437:\"FNumber\",34850:\"ExposureProgram\",34852:\"SpectralSensitivity\",34855:\"ISOSpeedRatings\",34856:\"OECF\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37379:\"BrightnessValue\",37380:\"ExposureBias\",37381:\"MaxApertureValue\",37382:\"SubjectDistance\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",37396:\"SubjectArea\",37386:\"FocalLength\",41483:\"FlashEnergy\",41484:\"SpatialFrequencyResponse\",41486:\"FocalPlaneXResolution\",41487:\"FocalPlaneYResolution\",41488:\"FocalPlaneResolutionUnit\",41492:\"SubjectLocation\",41493:\"ExposureIndex\",41495:\"SensingMethod\",41728:\"FileSource\",41729:\"SceneType\",41730:\"CFAPattern\",41985:\"CustomRendered\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41988:\"DigitalZoomRation\",41989:\"FocalLengthIn35mmFilm\",41990:\"SceneCaptureType\",41991:\"GainControl\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\",41995:\"DeviceSettingDescription\",41996:\"SubjectDistanceRange\",40965:\"InteroperabilityIFDPointer\",42016:\"ImageUniqueID\"},a=i.TiffTags={256:\"ImageWidth\",257:\"ImageHeight\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\",40965:\"InteroperabilityIFDPointer\",258:\"BitsPerSample\",259:\"Compression\",262:\"PhotometricInterpretation\",274:\"Orientation\",277:\"SamplesPerPixel\",284:\"PlanarConfiguration\",530:\"YCbCrSubSampling\",531:\"YCbCrPositioning\",282:\"XResolution\",283:\"YResolution\",296:\"ResolutionUnit\",273:\"StripOffsets\",278:\"RowsPerStrip\",279:\"StripByteCounts\",513:\"JPEGInterchangeFormat\",514:\"JPEGInterchangeFormatLength\",301:\"TransferFunction\",318:\"WhitePoint\",319:\"PrimaryChromaticities\",529:\"YCbCrCoefficients\",532:\"ReferenceBlackWhite\",306:\"DateTime\",270:\"ImageDescription\",271:\"Make\",272:\"Model\",305:\"Software\",315:\"Artist\",33432:\"Copyright\"},s=i.GPSTags={0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\",5:\"GPSAltitudeRef\",6:\"GPSAltitude\",7:\"GPSTimeStamp\",8:\"GPSSatellites\",9:\"GPSStatus\",10:\"GPSMeasureMode\",11:\"GPSDOP\",12:\"GPSSpeedRef\",13:\"GPSSpeed\",14:\"GPSTrackRef\",15:\"GPSTrack\",16:\"GPSImgDirectionRef\",17:\"GPSImgDirection\",18:\"GPSMapDatum\",19:\"GPSDestLatitudeRef\",20:\"GPSDestLatitude\",21:\"GPSDestLongitudeRef\",22:\"GPSDestLongitude\",23:\"GPSDestBearingRef\",24:\"GPSDestBearing\",25:\"GPSDestDistanceRef\",26:\"GPSDestDistance\",27:\"GPSProcessingMethod\",28:\"GPSAreaInformation\",29:\"GPSDateStamp\",30:\"GPSDifferential\"},u=i.IFD1Tags={256:\"ImageWidth\",257:\"ImageHeight\",258:\"BitsPerSample\",259:\"Compression\",262:\"PhotometricInterpretation\",273:\"StripOffsets\",274:\"Orientation\",277:\"SamplesPerPixel\",278:\"RowsPerStrip\",279:\"StripByteCounts\",282:\"XResolution\",283:\"YResolution\",284:\"PlanarConfiguration\",296:\"ResolutionUnit\",513:\"JpegIFOffset\",514:\"JpegIFByteCount\",529:\"YCbCrCoefficients\",530:\"YCbCrSubSampling\",531:\"YCbCrPositioning\",532:\"ReferenceBlackWhite\"},h=i.StringValues={ExposureProgram:{0:\"Not defined\",1:\"Manual\",2:\"Normal program\",3:\"Aperture priority\",4:\"Shutter priority\",5:\"Creative program\",6:\"Action program\",7:\"Portrait mode\",8:\"Landscape mode\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{0:\"Unknown\",1:\"Daylight\",2:\"Fluorescent\",3:\"Tungsten (incandescent light)\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 - 5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire\",1:\"Flash fired\",5:\"Strobe return light not detected\",7:\"Strobe return light detected\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},SensingMethod:{1:\"Not defined\",2:\"One-chip color area sensor\",3:\"Two-chip color area sensor\",4:\"Three-chip color area sensor\",5:\"Color sequential area sensor\",7:\"Trilinear sensor\",8:\"Color sequential linear sensor\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},SceneType:{1:\"Directly photographed\"},CustomRendered:{0:\"Normal process\",1:\"Custom process\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},GainControl:{0:\"None\",1:\"Low gain up\",2:\"High gain up\",3:\"Low gain down\",4:\"High gain down\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},SubjectDistanceRange:{0:\"Unknown\",1:\"Macro\",2:\"Close view\",3:\"Distant view\"},FileSource:{3:\"DSC\"},Components:{0:\"\",1:\"Y\",2:\"Cb\",3:\"Cr\",4:\"R\",5:\"G\",6:\"B\"}};function c(t){return!!t.exifdata}function l(t,e){function r(r){var o=f(r);t.exifdata=o||{};var a=function(t){var e=new DataView(t);n&&console.log(\"Got file of length \"+t.byteLength);if(255!=e.getUint8(0)||216!=e.getUint8(1))return n&&console.log(\"Not a valid JPEG\"),!1;var r=2,i=t.byteLength,o=function(t,e){return 56===t.getUint8(e)&&66===t.getUint8(e+1)&&73===t.getUint8(e+2)&&77===t.getUint8(e+3)&&4===t.getUint8(e+4)&&4===t.getUint8(e+5)};for(;r<i;){if(o(e,r)){var a=e.getUint8(r+7);a%2!=0&&(a+=1),0===a&&(a=4);var s=r+8+a,u=e.getUint16(r+6+a);return g(t,s,u)}r++}}(r);if(t.iptcdata=a||{},i.isXmpEnabled){var s=function(t){if(!(\"DOMParser\"in self))return;var e=new DataView(t);n&&console.log(\"Got file of length \"+t.byteLength);if(255!=e.getUint8(0)||216!=e.getUint8(1))return n&&console.log(\"Not a valid JPEG\"),!1;var r=2,i=t.byteLength,o=new DOMParser;for(;r<i-4;){if(\"http\"==y(e,r,4)){var a=r-1,s=e.getUint16(r-2)-1,u=y(e,a,s),h=u.indexOf(\"xmpmeta>\")+8,c=(u=u.substring(u.indexOf(\"<x:xmpmeta\"),h)).indexOf(\"x:xmpmeta\")+10;u=u.slice(0,c)+'xmlns:Iptc4xmpCore=\"http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:tiff=\"http://ns.adobe.com/tiff/1.0/\" xmlns:plus=\"http://schemas.android.com/apk/lib/com.google.android.gms.plus\" xmlns:ext=\"http://www.gettyimages.com/xsltExtension/1.0\" xmlns:exif=\"http://ns.adobe.com/exif/1.0/\" xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" xmlns:stRef=\"http://ns.adobe.com/xap/1.0/sType/ResourceRef#\" xmlns:crs=\"http://ns.adobe.com/camera-raw-settings/1.0/\" xmlns:xapGImg=\"http://ns.adobe.com/xap/1.0/g/img/\" xmlns:Iptc4xmpExt=\"http://iptc.org/std/Iptc4xmpExt/2008-02-29/\" '+u.slice(c);var l=o.parseFromString(u,\"text/xml\");return b(l)}r++}}(r);t.xmpdata=s||{}}e&&e.call(t)}if(t.src)if(/^data\\:/i.test(t.src))r(function(t,e){e=e||t.match(/^data\\:([^\\;]+)\\;base64,/im)[1]||\"\",t=t.replace(/^data\\:([^\\;]+)\\;base64,/gim,\"\");for(var n=atob(t),r=n.length,i=new ArrayBuffer(r),o=new Uint8Array(i),a=0;a<r;a++)o[a]=n.charCodeAt(a);return i}(t.src));else if(/^blob\\:/i.test(t.src)){(a=new FileReader).onload=function(t){r(t.target.result)},function(t,e){var n=new XMLHttpRequest;n.open(\"GET\",t,!0),n.responseType=\"blob\",n.onload=function(t){200!=this.status&&0!==this.status||e(this.response)},n.send()}(t.src,function(t){a.readAsArrayBuffer(t)})}else{var o=new XMLHttpRequest;o.onload=function(){if(200!=this.status&&0!==this.status)throw\"Could not load image\";r(o.response),o=null},o.open(\"GET\",t.src,!0),o.responseType=\"arraybuffer\",o.send(null)}else if(self.FileReader&&(t instanceof self.Blob||t instanceof self.File)){var a;(a=new FileReader).onload=function(t){n&&console.log(\"Got file of length \"+t.target.result.byteLength),r(t.target.result)},a.readAsArrayBuffer(t)}}function f(t){var e=new DataView(t);if(n&&console.log(\"Got file of length \"+t.byteLength),255!=e.getUint8(0)||216!=e.getUint8(1))return n&&console.log(\"Not a valid JPEG\"),!1;for(var r,i=2,o=t.byteLength;i<o;){if(255!=e.getUint8(i))return n&&console.log(\"Not a valid marker at offset \"+i+\", found: \"+e.getUint8(i)),!1;if(r=e.getUint8(i+1),n&&console.log(r),225==r)return n&&console.log(\"Found 0xFFE1 marker\"),m(e,i+4,e.getUint16(i+2));i+=2+e.getUint16(i+2)}}var d={120:\"caption\",110:\"credit\",25:\"keywords\",55:\"dateCreated\",80:\"byline\",85:\"bylineTitle\",122:\"captionWriter\",105:\"headline\",116:\"copyright\",15:\"category\"};function g(t,e,n){for(var r,i,o,a,s=new DataView(t),u={},h=e;h<e+n;)28===s.getUint8(h)&&2===s.getUint8(h+1)&&(a=s.getUint8(h+2))in d&&((o=s.getInt16(h+3))+5,i=d[a],r=y(s,h+5,o),u.hasOwnProperty(i)?u[i]instanceof Array?u[i].push(r):u[i]=[u[i],r]:u[i]=r),h++;return u}function p(t,e,r,i,o){var a,s,u,h=t.getUint16(r,!o),c={};for(u=0;u<h;u++)a=r+12*u+2,!(s=i[t.getUint16(a,!o)])&&n&&console.log(\"Unknown tag: \"+t.getUint16(a,!o)),c[s]=v(t,a,e,r,o);return c}function v(t,e,n,r,i){var o,a,s,u,h,c,l=t.getUint16(e+2,!i),f=t.getUint32(e+4,!i),d=t.getUint32(e+8,!i)+n;switch(l){case 1:case 7:if(1==f)return t.getUint8(e+8,!i);for(o=f>4?d:e+8,a=[],u=0;u<f;u++)a[u]=t.getUint8(o+u);return a;case 2:return y(t,o=f>4?d:e+8,f-1);case 3:if(1==f)return t.getUint16(e+8,!i);for(o=f>2?d:e+8,a=[],u=0;u<f;u++)a[u]=t.getUint16(o+2*u,!i);return a;case 4:if(1==f)return t.getUint32(e+8,!i);for(a=[],u=0;u<f;u++)a[u]=t.getUint32(d+4*u,!i);return a;case 5:if(1==f)return h=t.getUint32(d,!i),c=t.getUint32(d+4,!i),(s=new Number(h/c)).numerator=h,s.denominator=c,s;for(a=[],u=0;u<f;u++)h=t.getUint32(d+8*u,!i),c=t.getUint32(d+4+8*u,!i),a[u]=new Number(h/c),a[u].numerator=h,a[u].denominator=c;return a;case 9:if(1==f)return t.getInt32(e+8,!i);for(a=[],u=0;u<f;u++)a[u]=t.getInt32(d+4*u,!i);return a;case 10:if(1==f)return t.getInt32(d,!i)/t.getInt32(d+4,!i);for(a=[],u=0;u<f;u++)a[u]=t.getInt32(d+8*u,!i)/t.getInt32(d+4+8*u,!i);return a}}function y(t,e,n){for(var r=\"\",i=e;i<e+n;i++)r+=String.fromCharCode(t.getUint8(i));return r}function m(t,e){if(\"Exif\"!=y(t,e,4))return n&&console.log(\"Not valid EXIF data! \"+y(t,e,4)),!1;var r,i,c,l,f,d=e+6;if(18761==t.getUint16(d))r=!1;else{if(19789!=t.getUint16(d))return n&&console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\"),!1;r=!0}if(42!=t.getUint16(d+2,!r))return n&&console.log(\"Not valid TIFF data! (no 0x002A)\"),!1;var g=t.getUint32(d+4,!r);if(g<8)return n&&console.log(\"Not valid TIFF data! (First offset less than 8)\",t.getUint32(d+4,!r)),!1;if((i=p(t,d,d+g,a,r)).ExifIFDPointer)for(c in l=p(t,d,d+i.ExifIFDPointer,o,r)){switch(c){case\"LightSource\":case\"Flash\":case\"MeteringMode\":case\"ExposureProgram\":case\"SensingMethod\":case\"SceneCaptureType\":case\"SceneType\":case\"CustomRendered\":case\"WhiteBalance\":case\"GainControl\":case\"Contrast\":case\"Saturation\":case\"Sharpness\":case\"SubjectDistanceRange\":case\"FileSource\":l[c]=h[c][l[c]];break;case\"ExifVersion\":case\"FlashpixVersion\":l[c]=String.fromCharCode(l[c][0],l[c][1],l[c][2],l[c][3]);break;case\"ComponentsConfiguration\":l[c]=h.Components[l[c][0]]+h.Components[l[c][1]]+h.Components[l[c][2]]+h.Components[l[c][3]]}i[c]=l[c]}if(i.GPSInfoIFDPointer)for(c in f=p(t,d,d+i.GPSInfoIFDPointer,s,r)){switch(c){case\"GPSVersionID\":f[c]=f[c][0]+\".\"+f[c][1]+\".\"+f[c][2]+\".\"+f[c][3]}i[c]=f[c]}return i.thumbnail=function(t,e,n,r){var i=function(t,e,n){var r=t.getUint16(e,!n);return t.getUint32(e+2+12*r,!n)}(t,e+n,r);if(!i)return{};if(i>t.byteLength)return{};var o=p(t,e,e+i,u,r);if(o.Compression)switch(o.Compression){case 6:if(o.JpegIFOffset&&o.JpegIFByteCount){var a=e+o.JpegIFOffset,s=o.JpegIFByteCount;o.blob=new Blob([new Uint8Array(t.buffer,a,s)],{type:\"image/jpeg\"})}break;case 1:console.log(\"Thumbnail image format is TIFF, which is not implemented.\");break;default:console.log(\"Unknown thumbnail image format '%s'\",o.Compression)}else 2==o.PhotometricInterpretation&&console.log(\"Thumbnail image format is RGB, which is not implemented.\");return o}(t,d,g,r),i}function _(t){var e={};if(1==t.nodeType){if(t.attributes.length>0){e[\"@attributes\"]={};for(var n=0;n<t.attributes.length;n++){var r=t.attributes.item(n);e[\"@attributes\"][r.nodeName]=r.nodeValue}}}else if(3==t.nodeType)return t.nodeValue;if(t.hasChildNodes())for(var i=0;i<t.childNodes.length;i++){var o=t.childNodes.item(i),a=o.nodeName;if(null==e[a])e[a]=_(o);else{if(null==e[a].push){var s=e[a];e[a]=[],e[a].push(s)}e[a].push(_(o))}}return e}function b(t){try{var e={};if(t.children.length>0)for(var n=0;n<t.children.length;n++){var r=t.children.item(n),i=r.attributes;for(var o in i){var a=i[o],s=a.nodeName,u=a.nodeValue;void 0!==s&&(e[s]=u)}var h=r.nodeName;if(void 0===e[h])e[h]=_(r);else{if(void 0===e[h].push){var c=e[h];e[h]=[],e[h].push(c)}e[h].push(_(r))}}else e=t.textContent;return e}catch(t){console.log(t.message)}}i.enableXmp=function(){i.isXmpEnabled=!0},i.disableXmp=function(){i.isXmpEnabled=!1},i.getData=function(t,e){return!((self.Image&&t instanceof self.Image||self.HTMLImageElement&&t instanceof self.HTMLImageElement)&&!t.complete)&&(c(t)?e&&e.call(t):l(t,e),!0)},i.getTag=function(t,e){if(c(t))return t.exifdata[e]},i.getIptcTag=function(t,e){if(c(t))return t.iptcdata[e]},i.getAllTags=function(t){if(!c(t))return{};var e,n=t.exifdata,r={};for(e in n)n.hasOwnProperty(e)&&(r[e]=n[e]);return r},i.getAllIptcTags=function(t){if(!c(t))return{};var e,n=t.iptcdata,r={};for(e in n)n.hasOwnProperty(e)&&(r[e]=n[e]);return r},i.pretty=function(t){if(!c(t))return\"\";var e,n=t.exifdata,r=\"\";for(e in n)n.hasOwnProperty(e)&&(\"object\"==typeof n[e]?n[e]instanceof Number?r+=e+\" : \"+n[e]+\" [\"+n[e].numerator+\"/\"+n[e].denominator+\"]\\r\\n\":r+=e+\" : [\"+n[e].length+\" values]\\r\\n\":r+=e+\" : \"+n[e]+\"\\r\\n\");return r},i.readFromBinaryFile=function(t){return f(t)},void 0===(r=function(){return i}.apply(e,[]))||(t.exports=r)}).call(this)},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(10),o=n(1),a=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.nameCallback=e,this.updateCallback=n,this.annotations=[],this._originalAnnotations=[],this.scaleDownAmount=1,this._enabled=!0}var e,n,a;return e=t,(n=[{key:\"setup\",value:function(t){this.visualizer=t,this.stage=t.stage,this.layer=new o.default.Layer,this.stage.add(this.layer)}},{key:\"disable\",value:function(){this._enabled=!1,this.annotations.forEach(function(t){t.draggable(!1)})}},{key:\"enable\",value:function(){this._enabled=!0,this.annotations.forEach(function(t){t.draggable(!0)})}},{key:\"mouseDown\",value:function(t){}},{key:\"mouseMove\",value:function(t){}},{key:\"mouseUp\",value:function(t){if(this._enabled&&(!t.target||\"Circle\"!==t.target.className&&\"Text\"!==t.target.className)){var e=this.stage.getPointerPosition(),n=new i.TextCallout(\"\",{x:e.x,y:e.y});this.nameCallback&&this.nameCallback(n);var r=this.visualizer.getScaledLocation(n);this._originalAnnotations.push({text:n.text,guid:n.guid,y:r.y,x:r.x}),this.addAnnotation(n)}}},{key:\"keyup\",value:function(t){}},{key:\"resized\",value:function(){var t=this;this.annotations.forEach(function(e,n){e.position({x:t._originalAnnotations[n].x*t.scalingFactor,y:t._originalAnnotations[n].y*t.scalingFactor})}),this.checkScale(),this.layer.batchDraw()}},{key:\"loadAnnotations\",value:function(t){var e=this;this._originalAnnotations=t,t.forEach(function(t){var n={x:t.x*e.scalingFactor,y:t.y*e.scalingFactor},r=new i.TextCallout(t.text,n);r.guid=t.guid,e.addAnnotation(r)}),this.layer.batchDraw()}},{key:\"addAnnotation\",value:function(t){var e=this;this.checkScale(),t.scaleX(this.scaleDownAmount||1),t.scaleY(this.scaleDownAmount||1),t.draggable(this._enabled),t.on(\"mouseenter\",function(){return e._changeCursorToMove()}),t.on(\"mouseleave\",function(){return e._changeCursorToDefault()}),this._listenToAnnotation(t),this.annotations.push(t),this.layer.add(t),this.layer.batchDraw()}},{key:\"removeAnnotation\",value:function(t){this.annotations.indexOf(t)>=0&&this.annotations.splice(this.annotations.indexOf(t),1),t.destroy(),this.layer.batchDraw()}},{key:\"highlightAnnotations\",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"lightskyblue\";this.clearHighlights(),t.forEach(function(t){var r=e.annotations.find(function(e){return t.guid===e.guid});r&&(r.setBackground(n),r.draw())})}},{key:\"clearHighlights\",value:function(){this.annotations.forEach(function(t){t.setBackground(\"white\"),t.draw()}),this.layer.batchDraw()}},{key:\"updateAnnotation\",value:function(t,e){var n=this.annotations.find(function(e){return t===e.guid});n&&(n.setText(e),n.draw())}},{key:\"scaleAll\",value:function(){var t=this;this.annotations.forEach(function(e){e.scaleX(t.scaleDownAmount||1),e.scaleY(t.scaleDownAmount||1)})}},{key:\"checkScale\",value:function(){this.scaleDownAmount=1,(this.visualizer.requestedSize.width>1e3||this.visualizer.requestedSize.height>800)&&(this.scaleDownAmount=1.1),(this.visualizer.requestedSize.width<800||this.visualizer.requestedSize.height<600)&&(this.scaleDownAmount=.9),(this.visualizer.requestedSize.width<600||this.visualizer.requestedSize.height<400)&&(this.scaleDownAmount=.8),this.scaleAll()}},{key:\"_listenToAnnotation\",value:function(t){var e=this;t.on(\"dragend\",function(n){e._fireUpdate(t)})}},{key:\"_fireUpdate\",value:function(t){this.updateCallback&&this.updateCallback(t)}},{key:\"_changeCursorToMove\",value:function(){this.stage.container().style.cursor=\"move\"}},{key:\"_changeCursorToDefault\",value:function(){this.stage.container().style.cursor=\"default\"}},{key:\"scalingFactor\",get:function(){return this.visualizer.scalingFactor}}])&&r(e.prototype,n),a&&r(e,a),t}();e.Annotator=a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sensors=[{SensorType:'1/3.2\" (Apple iPhone 5 smartphone 2012)',Diagonal:5.68,Width:4.54,Height:3.42,Area:15.5,TimesBigger:55,CropFactor:7.6},{SensorType:'1/3.0\" (Apple iPhone 8, 7, 6, 5S smartphone)',Diagonal:6,Width:4.8,Height:3.6,Area:17.3,TimesBigger:50,CropFactor:7.2},{SensorType:'1/2.6\" Type (Samsung Galaxy S9, Note9, S8, S7, S6, Note5)',Diagonal:6.86,Width:5.5,Height:4.1,Area:22.55,TimesBigger:38,CropFactor:6.3},{SensorType:'1/2.5\" Type',Diagonal:7.18,Width:5.76,Height:4.29,Area:24.7,TimesBigger:35,CropFactor:6},{SensorType:'1/2.3\" Type (Canon PowerShot SX280HS, Olympus Tough TG-2)',Diagonal:7.66,Width:6.17,Height:4.56,Area:28.07,TimesBigger:31,CropFactor:5.6},{SensorType:'1/1.7\" (Canon PowerShot S95, S100, S110, S120)',Diagonal:9.3,Width:7.44,Height:5.58,Area:41.51,TimesBigger:21,CropFactor:4.7},{SensorType:'1/1.7\" (Pentax Q7)',Diagonal:9.5,Width:7.6,Height:5.7,Area:43.3,TimesBigger:20,CropFactor:4.6},{SensorType:'2/3\" (Nokia Lumia 1020 smartphone with 41 MP camera; Fujifilm X-S1, X20, XF1)',Diagonal:11,Width:8.8,Height:6.6,Area:58.1,TimesBigger:15,CropFactor:3.9},{SensorType:\"Standard 16mm Film Frame\",Diagonal:12.7,Width:10.26,Height:7.49,Area:76.85,TimesBigger:11,CropFactor:3.4},{SensorType:\"1” Type (Sony RX100 & RX10, Nikon CX, Panasonic ZS100, ZS200, FZ1000)\",Diagonal:15.86,Width:13.2,Height:8.8,Area:116,TimesBigger:7.4,CropFactor:2.7},{SensorType:\"Micro Four Thirds, 4/3\",Diagonal:21.6,Width:17.3,Height:13,Area:225,TimesBigger:3.8,CropFactor:2},{SensorType:\"APS-C: Canon EF-S\",Diagonal:26.7,Width:22.2,Height:14.8,Area:329,TimesBigger:2.6,CropFactor:1.6},{SensorType:\"APS-C: Nikon DX, Sony NEX/Alpha DT, Pentax K\",Diagonal:28.4,Width:23.7,Height:15.6,Area:370,TimesBigger:2.3,CropFactor:1.52},{SensorType:\"35mm full-frame (Nikon FX, Sony Alpha/Alpha FE, Canon EF)\",Diagonal:43.3,Width:36,Height:24.3,Area:864,TimeBigger:1,CropFactor:1}]},function(t,e){var n;n=function(){return this}();try{n=n||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){(function(e){\n/*\n * Konva JavaScript Framework v2.2.1\n * http://konvajs.github.io/\n * Licensed under the MIT\n * Date: Fri Aug 10 2018\n *\n * Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)\n * Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)\n *\n * @license\n */\n!function(){\"use strict\";var n=Math.PI/180,r={version:\"2.2.1\",stages:[],idCounter:0,ids:{},names:{},shapes:{},listenClickTap:!1,inDblClickWindow:!1,isBrowser:\"undefined\"!=typeof window&&(\"[object Window]\"==={}.toString.call(window)||\"[object global]\"==={}.toString.call(window)),enableTrace:!1,traceArrMax:100,dblClickWindow:400,pixelRatio:void 0,dragDistance:3,angleDeg:!0,showWarnings:!0,Filters:{},isDragging:function(){var t=r.DD;return!!t&&t.isDragging},isDragReady:function(){var t=r.DD;return!!t&&!!t.node},_addId:function(t,e){void 0!==e&&(this.ids[e]=t)},_removeId:function(t){void 0!==t&&delete this.ids[t]},_addName:function(t,e){e&&(this.names[e]||(this.names[e]=[]),this.names[e].push(t))},_removeName:function(t,e){if(t){var n=this.names[t];if(n){for(var r=0;r<n.length;r++){n[r]._id===e&&n.splice(r,1)}0===n.length&&delete this.names[t]}}},getAngle:function(t){return this.angleDeg?t*n:t},_detectIE:function(t){var e=t.indexOf(\"msie \");if(e>0)return parseInt(t.substring(e+5,t.indexOf(\".\",e)),10);if(t.indexOf(\"trident/\")>0){var n=t.indexOf(\"rv:\");return parseInt(t.substring(n+3,t.indexOf(\".\",n)),10)}var r=t.indexOf(\"edge/\");return r>0&&parseInt(t.substring(r+5,t.indexOf(\".\",r)),10)},_parseUA:function(t){var e=t.toLowerCase(),n=/(chrome)[ /]([\\w.]+)/.exec(e)||/(webkit)[ /]([\\w.]+)/.exec(e)||/(opera)(?:.*version|)[ /]([\\w.]+)/.exec(e)||/(msie) ([\\w.]+)/.exec(e)||e.indexOf(\"compatible\")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(e)||[],i=!!t.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i),o=!!t.match(/IEMobile/i);return{browser:n[1]||\"\",version:n[2]||\"0\",isIE:r._detectIE(e),mobile:i,ieMobile:o}},UA:void 0},i=void 0!==e?e:\"undefined\"!=typeof window?window:\"undefined\"!=typeof WorkerGlobalScope?self:{};r.UA=r._parseUA(i.navigator&&i.navigator.userAgent||\"\"),i.Konva&&console.error(\"Konva instance is already exist in current eviroment. Please use only one instance.\"),i.Konva=r,r.global=i,r.window=i,r.document=i.document,t.exports=r}(),function(){\"use strict\";Konva.Collection=function(){var t=[].slice.call(arguments),e=t.length,n=0;for(this.length=e;n<e;n++)this[n]=t[n];return this},Konva.Collection.prototype=[],Konva.Collection.prototype.each=function(t){for(var e=0;e<this.length;e++)t(this[e],e)},Konva.Collection.prototype.toArray=function(){var t,e=[],n=this.length;for(t=0;t<n;t++)e.push(this[t]);return e},Konva.Collection.toCollection=function(t){var e,n=new Konva.Collection,r=t.length;for(e=0;e<r;e++)n.push(t[e]);return n},Konva.Collection._mapMethod=function(t){Konva.Collection.prototype[t]=function(){var e,n=this.length,r=[].slice.call(arguments);for(e=0;e<n;e++)this[e][t].apply(this[e],r);return this}},Konva.Collection.mapMethods=function(t){var e=t.prototype;for(var n in e)Konva.Collection._mapMethod(n)},Konva.Transform=function(t){this.m=t&&t.slice()||[1,0,0,1,0,0]},Konva.Transform.prototype={copy:function(){return new Konva.Transform(this.m)},point:function(t){var e=this.m;return{x:e[0]*t.x+e[2]*t.y+e[4],y:e[1]*t.x+e[3]*t.y+e[5]}},translate:function(t,e){return this.m[4]+=this.m[0]*t+this.m[2]*e,this.m[5]+=this.m[1]*t+this.m[3]*e,this},scale:function(t,e){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=e,this.m[3]*=e,this},rotate:function(t){var e=Math.cos(t),n=Math.sin(t),r=this.m[0]*e+this.m[2]*n,i=this.m[1]*e+this.m[3]*n,o=this.m[0]*-n+this.m[2]*e,a=this.m[1]*-n+this.m[3]*e;return this.m[0]=r,this.m[1]=i,this.m[2]=o,this.m[3]=a,this},getTranslation:function(){return{x:this.m[4],y:this.m[5]}},skew:function(t,e){var n=this.m[0]+this.m[2]*e,r=this.m[1]+this.m[3]*e,i=this.m[2]+this.m[0]*t,o=this.m[3]+this.m[1]*t;return this.m[0]=n,this.m[1]=r,this.m[2]=i,this.m[3]=o,this},multiply:function(t){var e=this.m[0]*t.m[0]+this.m[2]*t.m[1],n=this.m[1]*t.m[0]+this.m[3]*t.m[1],r=this.m[0]*t.m[2]+this.m[2]*t.m[3],i=this.m[1]*t.m[2]+this.m[3]*t.m[3],o=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],a=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=e,this.m[1]=n,this.m[2]=r,this.m[3]=i,this.m[4]=o,this.m[5]=a,this},invert:function(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),e=this.m[3]*t,n=-this.m[1]*t,r=-this.m[2]*t,i=this.m[0]*t,o=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),a=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=e,this.m[1]=n,this.m[2]=r,this.m[3]=i,this.m[4]=o,this.m[5]=a,this},getMatrix:function(){return this.m},setAbsolutePosition:function(t,e){var n=this.m[0],r=this.m[1],i=this.m[2],o=this.m[3],a=this.m[4],s=(n*(e-this.m[5])-r*(t-a))/(n*o-r*i),u=(t-a-i*s)/n;return this.translate(u,s)}};var t=Math.PI/180,e=180/Math.PI,n={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},r=/rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;Konva.Util={_isElement:function(t){return!(!t||1!=t.nodeType)},_isFunction:function(t){return!!(t&&t.constructor&&t.call&&t.apply)},_isObject:function(t){return!!t&&t.constructor===Object},_isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},_isNumber:function(t){return\"[object Number]\"===Object.prototype.toString.call(t)},_isString:function(t){return\"[object String]\"===Object.prototype.toString.call(t)},isObject:function(t){return t instanceof Object},isValidSelector:function(t){if(\"string\"!=typeof t)return!1;var e=t[0];return\"#\"===e||\".\"===e||e===e.toUpperCase()},_sign:function(t){return 0===t?0:t>0?1:-1},createCanvasElement:function(){var t=Konva.isBrowser?Konva.document.createElement(\"canvas\"):new Konva._nodeCanvas;try{t.style=t.style||{}}catch(t){}return t},_isInDocument:function(t){for(;t=t.parentNode;)if(t==Konva.document)return!0;return!1},_simplifyArray:function(t){var e,n,r=[],i=t.length,o=Konva.Util;for(e=0;e<i;e++)n=t[e],o._isNumber(n)?n=Math.round(1e3*n)/1e3:o._isString(n)||(n=n.toString()),r.push(n);return r},_getImage:function(t,e){var n,r;if(t)if(this._isElement(t))e(t);else if(this._isString(t))(n=new Konva.window.Image).onload=function(){e(n)},n.src=t;else if(t.data){(r=Konva.Util.createCanvasElement()).width=t.width,r.height=t.height,r.getContext(\"2d\").putImageData(t,0,0),this._getImage(r.toDataURL(),e)}else e(null);else e(null)},_getRGBAString:function(t){return[\"rgba(\",t.red||0,\",\",t.green||0,\",\",t.blue||0,\",\",t.alpha||1,\")\"].join(\"\")},_rgbToHex:function(t,e,n){return((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1)},_hexToRgb:function(t){t=t.replace(\"#\",\"\");var e=parseInt(t,16);return{r:e>>16&255,g:e>>8&255,b:255&e}},getRandomColor:function(){for(var t=(16777215*Math.random()<<0).toString(16);t.length<6;)t=\"0\"+t;return\"#\"+t},get:function(t,e){return void 0===t?e:t},getRGB:function(t){var e;return t in n?{r:(e=n[t])[0],g:e[1],b:e[2]}:\"#\"===t[0]?this._hexToRgb(t.substring(1)):\"rgb(\"===t.substr(0,4)?(e=r.exec(t.replace(/ /g,\"\")),{r:parseInt(e[1],10),g:parseInt(e[2],10),b:parseInt(e[3],10)}):{r:0,g:0,b:0}},colorToRGBA:function(t){return t=t||\"black\",Konva.Util._namedColorToRBA(t)||Konva.Util._hex3ColorToRGBA(t)||Konva.Util._hex6ColorToRGBA(t)||Konva.Util._rgbColorToRGBA(t)||Konva.Util._rgbaColorToRGBA(t)},_namedColorToRBA:function(t){var e=n[t.toLowerCase()];return e?{r:e[0],g:e[1],b:e[2],a:1}:null},_rgbColorToRGBA:function(t){if(0===t.indexOf(\"rgb(\")){var e=(t=t.match(/rgb\\(([^)]+)\\)/)[1]).split(/ *, */).map(Number);return{r:e[0],g:e[1],b:e[2],a:1}}},_rgbaColorToRGBA:function(t){if(0===t.indexOf(\"rgba(\")){var e=(t=t.match(/rgba\\(([^)]+)\\)/)[1]).split(/ *, */).map(Number);return{r:e[0],g:e[1],b:e[2],a:e[3]}}},_hex6ColorToRGBA:function(t){if(\"#\"===t[0]&&7===t.length)return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16),a:1}},_hex3ColorToRGBA:function(t){if(\"#\"===t[0]&&4===t.length)return{r:parseInt(t[1]+t[1],16),g:parseInt(t[2]+t[2],16),b:parseInt(t[3]+t[3],16),a:1}},_merge:function(t,e){var n=this._clone(e);for(var r in t)this._isObject(t[r])?n[r]=this._merge(t[r],n[r]):n[r]=t[r];return n},haveIntersection:function(t,e){return!(e.x>t.x+t.width||e.x+e.width<t.x||e.y>t.y+t.height||e.y+e.height<t.y)},cloneObject:function(t){var e={};for(var n in t)this._isObject(t[n])?e[n]=this.cloneObject(t[n]):this._isArray(t[n])?e[n]=this.cloneArray(t[n]):e[n]=t[n];return e},cloneArray:function(t){return t.slice(0)},_degToRad:function(e){return e*t},_radToDeg:function(t){return t*e},_capitalize:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},throw:function(t){throw new Error(\"Konva error: \"+t)},error:function(t){console.error(\"Konva error: \"+t)},warn:function(t){Konva.global.console&&console.warn&&Konva.showWarnings&&console.warn(\"Konva warning: \"+t)},extend:function(t,e){function n(){this.constructor=t}n.prototype=e.prototype;var r=t.prototype;for(var i in t.prototype=new n,r)r.hasOwnProperty(i)&&(t.prototype[i]=r[i]);t.__super__=e.prototype,t.super=e},addMethods:function(t,e){var n;for(n in e)t.prototype[n]=e[n]},_getControlPoints:function(t,e,n,r,i,o,a){var s=Math.sqrt(Math.pow(n-t,2)+Math.pow(r-e,2)),u=Math.sqrt(Math.pow(i-n,2)+Math.pow(o-r,2)),h=a*s/(s+u),c=a*u/(s+u);return[n-h*(i-t),r-h*(o-e),n+c*(i-t),r+c*(o-e)]},_expandPoints:function(t,e){var n,r,i=t.length,o=[];for(n=2;n<i-2;n+=2)r=Konva.Util._getControlPoints(t[n-2],t[n-1],t[n],t[n+1],t[n+2],t[n+3],e),o.push(r[0]),o.push(r[1]),o.push(t[n]),o.push(t[n+1]),o.push(r[2]),o.push(r[3]);return o},_removeLastLetter:function(t){return t.substring(0,t.length-1)},each:function(t,e){for(var n in t)e(n,t[n])},_inRange:function(t,e,n){return e<=t&&t<n},_getProjectionToSegment:function(t,e,n,r,i,o){var a,s,u,h=(t-n)*(t-n)+(e-r)*(e-r);if(0==h)a=t,s=e,u=(i-n)*(i-n)+(o-r)*(o-r);else{var c=((i-t)*(n-t)+(o-e)*(r-e))/h;c<0?(a=t,s=e,u=(t-i)*(t-i)+(e-o)*(e-o)):c>1?(a=n,s=r,u=(n-i)*(n-i)+(r-o)*(r-o)):u=((a=t+c*(n-t))-i)*(a-i)+((s=e+c*(r-e))-o)*(s-o)}return[a,s,u]},_getProjectionToLine:function(t,e,n){var r=Konva.Util.cloneObject(t),i=Number.MAX_VALUE;return e.forEach(function(o,a){if(n||a!==e.length-1){var s=e[(a+1)%e.length],u=Konva.Util._getProjectionToSegment(o.x,o.y,s.x,s.y,t.x,t.y),h=u[0],c=u[1],l=u[2];l<i&&(r.x=h,r.y=c,i=l)}}),r},_prepareArrayForTween:function(t,e,n){var r,i=[],o=[];if(t.length>e.length){var a=e;e=t,t=a}for(r=0;r<t.length;r+=2)i.push({x:t[r],y:t[r+1]});for(r=0;r<e.length;r+=2)o.push({x:e[r],y:e[r+1]});var s=[];return o.forEach(function(t){var e=Konva.Util._getProjectionToLine(t,i,n);s.push(e.x),s.push(e.y)}),s},_prepareToStringify:function(t){var e;for(var n in t.visitedByCircularReferenceRemoval=!0,t)if(t.hasOwnProperty(n)&&t[n]&&\"object\"==typeof t[n])if(e=Object.getOwnPropertyDescriptor(t,n),t[n].visitedByCircularReferenceRemoval||Konva.Util._isElement(t[n])){if(!e.configurable)return null;delete t[n]}else if(null===Konva.Util._prepareToStringify(t[n])){if(!e.configurable)return null;delete t[n]}return delete t.visitedByCircularReferenceRemoval,t}}}(),function(){\"use strict\";var t;Konva.Canvas=function(t){this.init(t)},Konva.Canvas.prototype={init:function(e){var n=(e||{}).pixelRatio||Konva.pixelRatio||function(){if(t)return t;var e=Konva.Util.createCanvasElement().getContext(\"2d\");return t=(Konva.window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)}();this.pixelRatio=n,this._canvas=Konva.Util.createCanvasElement(),this._canvas.style.padding=0,this._canvas.style.margin=0,this._canvas.style.border=0,this._canvas.style.background=\"transparent\",this._canvas.style.position=\"absolute\",this._canvas.style.top=0,this._canvas.style.left=0},getContext:function(){return this.context},getPixelRatio:function(){return this.pixelRatio},setPixelRatio:function(t){var e=this.pixelRatio;this.pixelRatio=t,this.setSize(this.getWidth()/e,this.getHeight()/e)},setWidth:function(t){this.width=this._canvas.width=t*this.pixelRatio,this._canvas.style.width=t+\"px\";var e=this.pixelRatio;this.getContext()._context.scale(e,e)},setHeight:function(t){this.height=this._canvas.height=t*this.pixelRatio,this._canvas.style.height=t+\"px\";var e=this.pixelRatio;this.getContext()._context.scale(e,e)},getWidth:function(){return this.width},getHeight:function(){return this.height},setSize:function(t,e){this.setWidth(t),this.setHeight(e)},toDataURL:function(t,e){try{return this._canvas.toDataURL(t,e)}catch(t){try{return this._canvas.toDataURL()}catch(t){return Konva.Util.warn(\"Unable to get data URL. \"+t.message),\"\"}}}},Konva.SceneCanvas=function(t){var e=t||{},n=e.width||0,r=e.height||0;Konva.Canvas.call(this,e),this.context=new Konva.SceneContext(this),this.setSize(n,r)},Konva.Util.extend(Konva.SceneCanvas,Konva.Canvas),Konva.HitCanvas=function(t){var e=t||{},n=e.width||0,r=e.height||0;Konva.Canvas.call(this,e),this.context=new Konva.HitContext(this),this.setSize(n,r),this.hitCanvas=!0},Konva.Util.extend(Konva.HitCanvas,Konva.Canvas)}(),function(){\"use strict\";var t=[\"arc\",\"arcTo\",\"beginPath\",\"bezierCurveTo\",\"clearRect\",\"clip\",\"closePath\",\"createLinearGradient\",\"createPattern\",\"createRadialGradient\",\"drawImage\",\"fill\",\"fillText\",\"getImageData\",\"createImageData\",\"lineTo\",\"moveTo\",\"putImageData\",\"quadraticCurveTo\",\"rect\",\"restore\",\"rotate\",\"save\",\"scale\",\"setLineDash\",\"setTransform\",\"stroke\",\"strokeText\",\"transform\",\"translate\"];Konva.Context=function(t){this.init(t)},Konva.Context.prototype={init:function(t){this.canvas=t,this._context=t._canvas.getContext(\"2d\"),Konva.enableTrace&&(this.traceArr=[],this._enableTrace())},fillShape:function(t){t.getFillEnabled()&&this._fill(t)},strokeShape:function(t){t.getStrokeEnabled()&&this._stroke(t)},fillStrokeShape:function(t){t.getFillEnabled()&&this._fill(t),t.getStrokeEnabled()&&this._stroke(t)},getTrace:function(t){var e,n,r,i,o=this.traceArr,a=o.length,s=\"\";for(e=0;e<a;e++)(r=(n=o[e]).method)?(i=n.args,s+=r,t?s+=\"()\":Konva.Util._isArray(i[0])?s+=\"([\"+i.join(\",\")+\"])\":s+=\"(\"+i.join(\",\")+\")\"):(s+=n.property,t||(s+=\"=\"+n.val)),s+=\";\";return s},clearTrace:function(){this.traceArr=[]},_trace:function(t){var e=this.traceArr;e.push(t),e.length>=Konva.traceArrMax&&e.shift()},reset:function(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)},getCanvas:function(){return this.canvas},clear:function(t){var e=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,e.getWidth()/e.pixelRatio,e.getHeight()/e.pixelRatio)},_applyLineCap:function(t){var e=t.getLineCap();e&&this.setAttr(\"lineCap\",e)},_applyOpacity:function(t){var e=t.getAbsoluteOpacity();1!==e&&this.setAttr(\"globalAlpha\",e)},_applyLineJoin:function(t){var e=t.getLineJoin();e&&this.setAttr(\"lineJoin\",e)},setAttr:function(t,e){this._context[t]=e},arc:function(){var t=arguments;this._context.arc(t[0],t[1],t[2],t[3],t[4],t[5])},beginPath:function(){this._context.beginPath()},bezierCurveTo:function(){var t=arguments;this._context.bezierCurveTo(t[0],t[1],t[2],t[3],t[4],t[5])},clearRect:function(){var t=arguments;this._context.clearRect(t[0],t[1],t[2],t[3])},clip:function(){this._context.clip()},closePath:function(){this._context.closePath()},createImageData:function(){var t=arguments;return 2===t.length?this._context.createImageData(t[0],t[1]):1===t.length?this._context.createImageData(t[0]):void 0},createLinearGradient:function(){var t=arguments;return this._context.createLinearGradient(t[0],t[1],t[2],t[3])},createPattern:function(){var t=arguments;return this._context.createPattern(t[0],t[1])},createRadialGradient:function(){var t=arguments;return this._context.createRadialGradient(t[0],t[1],t[2],t[3],t[4],t[5])},drawImage:function(){var t=arguments,e=this._context;3===t.length?e.drawImage(t[0],t[1],t[2]):5===t.length?e.drawImage(t[0],t[1],t[2],t[3],t[4]):9===t.length&&e.drawImage(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},isPointInPath:function(t,e){return this._context.isPointInPath(t,e)},fill:function(){this._context.fill()},fillRect:function(t,e,n,r){this._context.fillRect(t,e,n,r)},strokeRect:function(t,e,n,r){this._context.strokeRect(t,e,n,r)},fillText:function(){var t=arguments;this._context.fillText(t[0],t[1],t[2])},measureText:function(t){return this._context.measureText(t)},getImageData:function(){var t=arguments;return this._context.getImageData(t[0],t[1],t[2],t[3])},lineTo:function(){var t=arguments;this._context.lineTo(t[0],t[1])},moveTo:function(){var t=arguments;this._context.moveTo(t[0],t[1])},rect:function(){var t=arguments;this._context.rect(t[0],t[1],t[2],t[3])},putImageData:function(){var t=arguments;this._context.putImageData(t[0],t[1],t[2])},quadraticCurveTo:function(){var t=arguments;this._context.quadraticCurveTo(t[0],t[1],t[2],t[3])},restore:function(){this._context.restore()},rotate:function(){var t=arguments;this._context.rotate(t[0])},save:function(){this._context.save()},scale:function(){var t=arguments;this._context.scale(t[0],t[1])},setLineDash:function(){var t=arguments,e=this._context;this._context.setLineDash?e.setLineDash(t[0]):\"mozDash\"in e?e.mozDash=t[0]:\"webkitLineDash\"in e&&(e.webkitLineDash=t[0])},getLineDash:function(){return this._context.getLineDash()},setTransform:function(){var t=arguments;this._context.setTransform(t[0],t[1],t[2],t[3],t[4],t[5])},stroke:function(){this._context.stroke()},strokeText:function(){var t=arguments;this._context.strokeText(t[0],t[1],t[2])},transform:function(){var t=arguments;this._context.transform(t[0],t[1],t[2],t[3],t[4],t[5])},translate:function(){var t=arguments;this._context.translate(t[0],t[1])},_enableTrace:function(){var e,n,r=this,i=t.length,o=Konva.Util._simplifyArray,a=this.setAttr,s=function(t){var e,i=r[t];r[t]=function(){return n=o(Array.prototype.slice.call(arguments,0)),e=i.apply(r,arguments),r._trace({method:t,args:n}),e}};for(e=0;e<i;e++)s(t[e]);r.setAttr=function(){a.apply(r,arguments);var t=arguments[0],e=arguments[1];\"shadowOffsetX\"!==t&&\"shadowOffsetY\"!==t&&\"shadowBlur\"!==t||(e/=this.canvas.getPixelRatio()),r._trace({property:t,val:e})}}},[\"fillStyle\",\"strokeStyle\",\"shadowColor\",\"shadowBlur\",\"shadowOffsetX\",\"shadowOffsetY\",\"lineCap\",\"lineDashOffset\",\"lineJoin\",\"lineWidth\",\"miterLimit\",\"font\",\"textAlign\",\"textBaseline\",\"globalAlpha\",\"globalCompositeOperation\"].forEach(function(t){Object.defineProperty(Konva.Context.prototype,t,{get:function(){return this._context[t]},set:function(e){this._context[t]=e}})}),Konva.SceneContext=function(t){Konva.Context.call(this,t)},Konva.SceneContext.prototype={_fillColor:function(t){var e=t.fill();this.setAttr(\"fillStyle\",e),t._fillFunc(this)},_fillPattern:function(t){var e=t.getFillPatternX(),n=t.getFillPatternY(),r=t.getFillPatternScale(),i=Konva.getAngle(t.getFillPatternRotation()),o=t.getFillPatternOffset();(e||n)&&this.translate(e||0,n||0),i&&this.rotate(i),r&&this.scale(r.x,r.y),o&&this.translate(-1*o.x,-1*o.y),this.setAttr(\"fillStyle\",this.createPattern(t.getFillPatternImage(),t.getFillPatternRepeat()||\"repeat\")),this.fill()},_fillLinearGradient:function(t){var e=t.getFillLinearGradientStartPoint(),n=t.getFillLinearGradientEndPoint(),r=t.getFillLinearGradientColorStops(),i=this.createLinearGradient(e.x,e.y,n.x,n.y);if(r){for(var o=0;o<r.length;o+=2)i.addColorStop(r[o],r[o+1]);this.setAttr(\"fillStyle\",i),t._fillFunc(this)}},_fillRadialGradient:function(t){for(var e=t.getFillRadialGradientStartPoint(),n=t.getFillRadialGradientEndPoint(),r=t.getFillRadialGradientStartRadius(),i=t.getFillRadialGradientEndRadius(),o=t.getFillRadialGradientColorStops(),a=this.createRadialGradient(e.x,e.y,r,n.x,n.y,i),s=0;s<o.length;s+=2)a.addColorStop(o[s],o[s+1]);this.setAttr(\"fillStyle\",a),this.fill()},_fill:function(t){var e=t.fill(),n=t.getFillPriority();if(e&&\"color\"===n)this._fillColor(t);else{var r=t.getFillPatternImage();if(r&&\"pattern\"===n)this._fillPattern(t);else{var i=t.getFillLinearGradientColorStops();if(i&&\"linear-gradient\"===n)this._fillLinearGradient(t);else{var o=t.getFillRadialGradientColorStops();o&&\"radial-gradient\"===n?this._fillRadialGradient(t):e?this._fillColor(t):r?this._fillPattern(t):i?this._fillLinearGradient(t):o&&this._fillRadialGradient(t)}}}},_strokeLinearGradient:function(t){var e=t.getStrokeLinearGradientStartPoint(),n=t.getStrokeLinearGradientEndPoint(),r=t.getStrokeLinearGradientColorStops(),i=this.createLinearGradient(e.x,e.y,n.x,n.y);if(r){for(var o=0;o<r.length;o+=2)i.addColorStop(r[o],r[o+1]);this.setAttr(\"strokeStyle\",i)}},_stroke:function(t){var e=t.dash(),n=t.getStrokeScaleEnabled()||t instanceof Konva.Text;t.hasStroke()&&(n||(this.save(),this.setTransform(1,0,0,1,0,0)),this._applyLineCap(t),e&&t.dashEnabled()&&(this.setLineDash(e),this.setAttr(\"lineDashOffset\",t.dashOffset())),this.setAttr(\"lineWidth\",t.strokeWidth()),t.getShadowForStrokeEnabled()||this.setAttr(\"shadowColor\",\"rgba(0,0,0,0)\"),t.getStrokeLinearGradientColorStops()?this._strokeLinearGradient(t):this.setAttr(\"strokeStyle\",t.stroke()),t._strokeFunc(this),n||this.restore())},_applyShadow:function(t){var e=Konva.Util,n=e.get(t.getShadowRGBA(),\"black\"),r=e.get(t.getShadowBlur(),5),i=e.get(t.getShadowOffset(),{x:0,y:0}),o=t.getAbsoluteScale(),a=this.canvas.getPixelRatio(),s=o.x*a,u=o.y*a;this.setAttr(\"shadowColor\",n),this.setAttr(\"shadowBlur\",r*Math.min(Math.abs(s),Math.abs(u))),this.setAttr(\"shadowOffsetX\",i.x*s),this.setAttr(\"shadowOffsetY\",i.y*u)},_applyGlobalCompositeOperation:function(t){var e=t.getGlobalCompositeOperation();\"source-over\"!==e&&this.setAttr(\"globalCompositeOperation\",e)}},Konva.Util.extend(Konva.SceneContext,Konva.Context),Konva.HitContext=function(t){Konva.Context.call(this,t)},Konva.HitContext.prototype={_fill:function(t){this.save(),this.setAttr(\"fillStyle\",t.colorKey),t._fillFuncHit(this),this.restore()},_stroke:function(t){if(t.hasStroke()&&t.strokeHitEnabled()){var e=t.getStrokeScaleEnabled()||t instanceof Konva.Text;e||(this.save(),this.setTransform(1,0,0,1,0,0)),this._applyLineCap(t),this.setAttr(\"lineWidth\",t.strokeWidth()),this.setAttr(\"strokeStyle\",t.colorKey),t._strokeFuncHit(this),e||this.restore()}}},Konva.Util.extend(Konva.HitContext,Konva.Context)}(),function(){\"use strict\";Konva.Factory={addGetterSetter:function(t,e,n,r,i){this.addGetter(t,e,n),this.addSetter(t,e,r,i),this.addOverloadedGetterSetter(t,e)},addGetter:function(t,e,n){var r=\"get\"+Konva.Util._capitalize(e);t.prototype[r]=function(){var t=this.attrs[e];return void 0===t?n:t}},addSetter:function(t,e,n,r){var i=\"set\"+Konva.Util._capitalize(e);t.prototype[i]=function(t){return n&&(t=n.call(this,t)),this._setAttr(e,t),r&&r.call(this),this}},addComponentsGetterSetter:function(t,e,n,r,i){var o,a,s=n.length,u=Konva.Util._capitalize,h=\"get\"+u(e),c=\"set\"+u(e);t.prototype[h]=function(){var t={};for(o=0;o<s;o++)t[a=n[o]]=this.getAttr(e+u(a));return t},t.prototype[c]=function(t){var n,o=this.attrs[e];for(n in r&&(t=r.call(this,t)),t)t.hasOwnProperty(n)&&this._setAttr(e+u(n),t[n]);return this._fireChangeEvent(e,o,t),i&&i.call(this),this},this.addOverloadedGetterSetter(t,e)},addOverloadedGetterSetter:function(t,e){var n=Konva.Util._capitalize(e),r=\"set\"+n,i=\"get\"+n;t.prototype[e]=function(){return arguments.length?(this[r](arguments[0]),this):this[i]()}},addDeprecatedGetterSetter:function(t,e,n,r){Konva.Util.error(\"Adding deprecated \"+e);var i=\"get\"+Konva.Util._capitalize(e),o=e+\" property is deprecated and will be removed soon. Look at Konva change log for more information.\";t.prototype[i]=function(){Konva.Util.error(o);var t=this.attrs[e];return void 0===t?n:t},this.addSetter(t,e,r,function(){Konva.Util.error(o)}),this.addOverloadedGetterSetter(t,e)},backCompat:function(t,e){Konva.Util.each(e,function(e,n){var r=t.prototype[n],i=\"get\"+Konva.Util._capitalize(e),o=\"set\"+Konva.Util._capitalize(e);function a(){r.apply(this,arguments),Konva.Util.error('\"'+e+'\" method is deprecated and will be removed soon. Use \"\"'+n+'\" instead.')}t.prototype[e]=a,t.prototype[i]=a,t.prototype[o]=a})},afterSetFilter:function(){this._filterUpToDate=!1}},Konva.Validators={RGBComponent:function(t){return t>255?255:t<0?0:Math.round(t)},alphaComponent:function(t){return t>1?1:t<1e-4?1e-4:t}}}(),function(t){\"use strict\";var e=\"Shape\",n=[\"id\"],r=[\"xChange.konva\",\"yChange.konva\",\"scaleXChange.konva\",\"scaleYChange.konva\",\"skewXChange.konva\",\"skewYChange.konva\",\"rotationChange.konva\",\"offsetXChange.konva\",\"offsetYChange.konva\",\"transformsEnabledChange.konva\"].join(\" \"),i=[\"scaleXChange.konva\",\"scaleYChange.konva\"].join(\" \");t.Node=function(t){this._init(t)},t.Util.addMethods(t.Node,{_init:function(e){this._id=t.idCounter++,this.eventListeners={},this.attrs={},this._cache={},this._filterUpToDate=!1,this._isUnderCache=!1,this.setAttrs(e),this.on(r,function(){this._clearCache(\"transform\"),this._clearSelfAndDescendantCache(\"absoluteTransform\")}),this.on(i,function(){this._clearSelfAndDescendantCache(\"absoluteScale\")}),this.on(\"visibleChange.konva\",function(){this._clearSelfAndDescendantCache(\"visible\")}),this.on(\"listeningChange.konva\",function(){this._clearSelfAndDescendantCache(\"listening\")}),this.on(\"opacityChange.konva\",function(){this._clearSelfAndDescendantCache(\"absoluteOpacity\")})},_clearCache:function(t){t?delete this._cache[t]:this._cache={}},_getCache:function(t,e){return void 0===this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]},_clearSelfAndDescendantCache:function(t){this._clearCache(t),this.children&&this.getChildren().each(function(e){e._clearSelfAndDescendantCache(t)})},clearCache:function(){return delete this._cache.canvas,this._filterUpToDate=!1,this},cache:function(e){var n=e||{},r=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()}),i=n.width||r.width,o=n.height||r.height,a=n.pixelRatio,s=n.x||r.x,u=n.y||r.y,h=n.offset||0,c=n.drawBorder||!1;if(i&&o){i+=2*h,o+=2*h,s-=h,u-=h;var l=new t.SceneCanvas({pixelRatio:a,width:i,height:o}),f=new t.SceneCanvas({pixelRatio:a,width:i,height:o}),d=new t.HitCanvas({pixelRatio:1,width:i,height:o}),g=l.getContext(),p=d.getContext();return d.isCache=!0,this.clearCache(),g.save(),p.save(),g.translate(-s,-u),p.translate(-s,-u),this._isUnderCache=!0,this._clearSelfAndDescendantCache(\"absoluteOpacity\"),this._clearSelfAndDescendantCache(\"absoluteScale\"),this.drawScene(l,this,!0),this.drawHit(d,this,!0),this._isUnderCache=!1,g.restore(),p.restore(),c&&(g.save(),g.beginPath(),g.rect(0,0,i,o),g.closePath(),g.setAttr(\"strokeStyle\",\"red\"),g.setAttr(\"lineWidth\",5),g.stroke(),g.restore()),this._cache.canvas={scene:l,filter:f,hit:d,x:s,y:u},this}setTimeout(function(){t.Util.throw(\"Width or height of caching configuration equals 0. Caching is ignored.\")})},getClientRect:function(){throw new Error('abstract \"getClientRect\" method call')},_transformedRect:function(t,e){var n,r,i,o,a=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],s=this.getAbsoluteTransform(e);return a.forEach(function(t){var e=s.point(t);void 0===n&&(n=i=e.x,r=o=e.y),n=Math.min(n,e.x),r=Math.min(r,e.y),i=Math.max(i,e.x),o=Math.max(o,e.y)}),{x:n,y:r,width:i-n,height:o-r}},_drawCachedSceneCanvas:function(t){t.save(),t._applyOpacity(this),t._applyGlobalCompositeOperation(this),t.translate(this._cache.canvas.x,this._cache.canvas.y);var e=this._getCachedSceneCanvas(),n=e.pixelRatio;t.drawImage(e._canvas,0,0,e.width/n,e.height/n),t.restore()},_drawCachedHitCanvas:function(t){var e=this._cache.canvas.hit;t.save(),t.translate(this._cache.canvas.x,this._cache.canvas.y),t.drawImage(e._canvas,0,0),t.restore()},_getCachedSceneCanvas:function(){var e,n,r,i,o=this.filters(),a=this._cache.canvas,s=a.scene,u=a.filter,h=u.getContext();if(o){if(!this._filterUpToDate){var c=s.pixelRatio;try{for(e=o.length,h.clear(),h.drawImage(s._canvas,0,0,s.getWidth()/c,s.getHeight()/c),n=h.getImageData(0,0,u.getWidth(),u.getHeight()),r=0;r<e;r++)\"function\"==typeof(i=o[r])?(i.call(this,n),h.putImageData(n,0,0)):t.Util.error(\"Filter should be type of function, but got \"+typeof i+\" insted. Please check correct filters\")}catch(e){t.Util.error(\"Unable to apply filter. \"+e.message)}this._filterUpToDate=!0}return u}return s},on:function(t,e){if(3===arguments.length)return this._delegate.apply(this,arguments);var n,r,i,o,a=t.split(\" \"),s=a.length;for(n=0;n<s;n++)i=(r=a[n].split(\".\"))[0],o=r[1]||\"\",this.eventListeners[i]||(this.eventListeners[i]=[]),this.eventListeners[i].push({name:o,handler:e});return this},off:function(t,e){var n,r,i,o,a,s=(t||\"\").split(\" \"),u=s.length;if(!t)for(r in this.eventListeners)this._off(r);for(n=0;n<u;n++)if(o=(i=s[n].split(\".\"))[0],a=i[1],o)this.eventListeners[o]&&this._off(o,a,e);else for(r in this.eventListeners)this._off(r,a,e);return this},dispatchEvent:function(t){var e={target:this,type:t.type,evt:t};return this.fire(t.type,e),this},addEventListener:function(t,e){return this.on(t,function(t){e.call(this,t.evt)}),this},removeEventListener:function(t){return this.off(t),this},_delegate:function(e,n,r){var i=this;this.on(e,function(e){for(var o=e.target.findAncestors(n,!0,i),a=0;a<o.length;a++)(e=t.Util.cloneObject(e)).currentTarget=o[a],r.call(o[a],e)})},remove:function(){var t=this.getParent();return t&&t.children&&(t.children.splice(this.index,1),t._setChildrenIndices(),delete this.parent),this._clearSelfAndDescendantCache(\"stage\"),this._clearSelfAndDescendantCache(\"absoluteTransform\"),this._clearSelfAndDescendantCache(\"visible\"),this._clearSelfAndDescendantCache(\"listening\"),this._clearSelfAndDescendantCache(\"absoluteOpacity\"),this},destroy:function(){t._removeId(this.getId());for(var e=(this.getName()||\"\").split(/\\s/g),n=0;n<e.length;n++){var r=e[n];t._removeName(r,this._id)}return this.remove(),this},getAttr:function(e){var n=\"get\"+t.Util._capitalize(e);return t.Util._isFunction(this[n])?this[n]():this.attrs[e]},getAncestors:function(){for(var e=this.getParent(),n=new t.Collection;e;)n.push(e),e=e.getParent();return n},getAttrs:function(){return this.attrs||{}},setAttrs:function(e){var n,r;if(!e)return this;for(n in e)\"children\"!==n&&(r=\"set\"+t.Util._capitalize(n),t.Util._isFunction(this[r])?this[r](e[n]):this._setAttr(n,e[n]));return this},isListening:function(){return this._getCache(\"listening\",this._isListening)},_isListening:function(){var t=this.getListening(),e=this.getParent();return\"inherit\"===t?!e||e.isListening():t},isVisible:function(){return this._getCache(\"visible\",this._isVisible)},_isVisible:function(){var t=this.getVisible(),e=this.getParent();return\"inherit\"===t?!e||e.isVisible():t},shouldDrawHit:function(t){var e=this.getLayer();return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isListening()&&this.isVisible()},show:function(){return this.setVisible(!0),this},hide:function(){return this.setVisible(!1),this},getZIndex:function(){return this.index||0},getAbsoluteZIndex:function(){var t,n,r,i,o=this.getDepth(),a=this,s=0;return\"Stage\"!==a.nodeType&&function u(h){for(t=[],n=h.length,r=0;r<n;r++)i=h[r],s++,i.nodeType!==e&&(t=t.concat(i.getChildren().toArray())),i._id===a._id&&(r=n);t.length>0&&t[0].getDepth()<=o&&u(t)}(a.getStage().getChildren()),s},getDepth:function(){for(var t=0,e=this.parent;e;)t++,e=e.parent;return t},setPosition:function(t){return this.setX(t.x),this.setY(t.y),this},getPosition:function(){return{x:this.getX(),y:this.getY()}},getAbsolutePosition:function(e){var n=this.getAbsoluteTransform(e).getMatrix(),r=new t.Transform,i=this.offset();return r.m=n.slice(),r.translate(i.x,i.y),r.getTranslation()},setAbsolutePosition:function(t){var e,n=this._clearTransform();return this.attrs.x=n.x,this.attrs.y=n.y,delete n.x,delete n.y,(e=this.getAbsoluteTransform()).invert(),e.translate(t.x,t.y),t={x:this.attrs.x+e.getTranslation().x,y:this.attrs.y+e.getTranslation().y},this.setPosition({x:t.x,y:t.y}),this._setTransform(n),this},_setTransform:function(t){var e;for(e in t)this.attrs[e]=t[e];this._clearCache(\"transform\"),this._clearSelfAndDescendantCache(\"absoluteTransform\")},_clearTransform:function(){var t={x:this.getX(),y:this.getY(),rotation:this.getRotation(),scaleX:this.getScaleX(),scaleY:this.getScaleY(),offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),skewX:this.getSkewX(),skewY:this.getSkewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,this._clearCache(\"transform\"),this._clearSelfAndDescendantCache(\"absoluteTransform\"),t},move:function(t){var e=t.x,n=t.y,r=this.getX(),i=this.getY();return void 0!==e&&(r+=e),void 0!==n&&(i+=n),this.setPosition({x:r,y:i}),this},_eachAncestorReverse:function(t,e){var n,r,i=[],o=this.getParent();if(e&&e._id===this._id)t(this);else{for(i.unshift(this);o&&(!e||o._id!==e._id);)i.unshift(o),o=o.parent;for(n=i.length,r=0;r<n;r++)t(i[r])}},rotate:function(t){return this.setRotation(this.getRotation()+t),this},moveToTop:function(){if(!this.parent)return t.Util.warn(\"Node has no parent. moveToTop function is ignored.\"),!1;var e=this.index;return this.parent.children.splice(e,1),this.parent.children.push(this),this.parent._setChildrenIndices(),!0},moveUp:function(){if(!this.parent)return t.Util.warn(\"Node has no parent. moveUp function is ignored.\"),!1;var e=this.index;return e<this.parent.getChildren().length-1&&(this.parent.children.splice(e,1),this.parent.children.splice(e+1,0,this),this.parent._setChildrenIndices(),!0)},moveDown:function(){if(!this.parent)return t.Util.warn(\"Node has no parent. moveDown function is ignored.\"),!1;var e=this.index;return e>0&&(this.parent.children.splice(e,1),this.parent.children.splice(e-1,0,this),this.parent._setChildrenIndices(),!0)},moveToBottom:function(){if(!this.parent)return t.Util.warn(\"Node has no parent. moveToBottom function is ignored.\"),!1;var e=this.index;return e>0&&(this.parent.children.splice(e,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0)},setZIndex:function(e){if(!this.parent)return t.Util.warn(\"Node has no parent. zIndex parameter is ignored.\"),!1;var n=this.index;return this.parent.children.splice(n,1),this.parent.children.splice(e,0,this),this.parent._setChildrenIndices(),this},getAbsoluteOpacity:function(){return this._getCache(\"absoluteOpacity\",this._getAbsoluteOpacity)},_getAbsoluteOpacity:function(){var t=this.getOpacity(),e=this.getParent();return e&&!e._isUnderCache&&(t*=this.getParent().getAbsoluteOpacity()),t},moveTo:function(t){return this.getParent()!==t&&((this.__originalRemove||this.remove).call(this),t.add(this)),this},toObject:function(){var e,n,r,i,o={},a=this.getAttrs();for(e in o.attrs={},a)n=a[e],r=\"function\"==typeof this[e]&&this[e],delete a[e],i=r?r.call(this):null,a[e]=n,i!==n&&(o.attrs[e]=n);return o.className=this.getClassName(),t.Util._prepareToStringify(o)},toJSON:function(){return JSON.stringify(this.toObject())},getParent:function(){return this.parent},findAncestors:function(t,e,n){var r=[];e&&this._isMatch(t)&&r.push(this);for(var i=this.parent;i;){if(i===n)return r;i._isMatch(t)&&r.push(i),i=i.parent}return r},findAncestor:function(t,e,n){return this.findAncestors(t,e,n)[0]},_isMatch:function(e){if(!e)return!1;var n,r,i=e.replace(/ /g,\"\").split(\",\"),o=i.length;for(n=0;n<o;n++)if(r=i[n],t.Util.isValidSelector(r)||(t.Util.warn('Selector \"'+r+'\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".'),t.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".'),t.Util.warn(\"Konva is awesome, right?\")),\"#\"===r.charAt(0)){if(this.id()===r.slice(1))return!0}else if(\".\"===r.charAt(0)){if(this.hasName(r.slice(1)))return!0}else if(0!==this._get(r).length)return!0;return!1},getLayer:function(){var t=this.getParent();return t?t.getLayer():null},getStage:function(){return this._getCache(\"stage\",this._getStage)},_getStage:function(){var t=this.getParent();return t?t.getStage():void 0},fire:function(t,e,n){return(e=e||{}).target=e.target||this,n?this._fireAndBubble(t,e):this._fire(t,e),this},getAbsoluteTransform:function(t){return t?this._getAbsoluteTransform(t):this._getCache(\"absoluteTransform\",this._getAbsoluteTransform)},_getAbsoluteTransform:function(e){var n=new t.Transform;return this._eachAncestorReverse(function(t){var e=t.transformsEnabled();\"all\"===e?n.multiply(t.getTransform()):\"position\"===e&&n.translate(t.getX()-t.getOffsetX(),t.getY()-t.getOffsetY())},e),n},getAbsoluteScale:function(t){return t?this._getAbsoluteScale(t):this._getCache(\"absoluteScale\",this._getAbsoluteScale)},_getAbsoluteScale:function(t){for(var e=this;e;)e._isUnderCache&&(t=e),e=e.getParent();var n=1,r=1;return this._eachAncestorReverse(function(t){n*=t.scaleX(),r*=t.scaleY()},t),{x:n,y:r}},getTransform:function(){return this._getCache(\"transform\",this._getTransform)},_getTransform:function(){var e=new t.Transform,n=this.getX(),r=this.getY(),i=t.getAngle(this.getRotation()),o=this.getScaleX(),a=this.getScaleY(),s=this.getSkewX(),u=this.getSkewY(),h=this.getOffsetX(),c=this.getOffsetY();return 0===n&&0===r||e.translate(n,r),0!==i&&e.rotate(i),0===s&&0===u||e.skew(s,u),1===o&&1===a||e.scale(o,a),0===h&&0===c||e.translate(-1*h,-1*c),e},clone:function(e){var r,i,o,a,s,u=t.Util.cloneObject(this.attrs);for(var h in n){delete u[n[h]]}for(r in e)u[r]=e[r];var c=new this.constructor(u);for(r in this.eventListeners)for(o=(i=this.eventListeners[r]).length,a=0;a<o;a++)(s=i[a]).name.indexOf(\"konva\")<0&&(c.eventListeners[r]||(c.eventListeners[r]=[]),c.eventListeners[r].push(s));return c},_toKonvaCanvas:function(e){e=e||{};var n=this.getClientRect(),r=this.getStage(),i=e.x||n.x,o=e.y||n.y,a=e.pixelRatio||1,s=new t.SceneCanvas({width:e.width||n.width||(r?r.getWidth():0),height:e.height||n.height||(r?r.getHeight():0),pixelRatio:a}),u=s.getContext();return u.save(),(i||o)&&u.translate(-1*i,-1*o),this.drawScene(s),u.restore(),s},toCanvas:function(t){return this._toKonvaCanvas(t)._canvas},toDataURL:function(t){var e=(t=t||{}).mimeType||null,n=t.quality||null;return this._toKonvaCanvas(t).toDataURL(e,n)},toImage:function(e){if(!e||!e.callback)throw\"callback required for toImage method config argument\";t.Util._getImage(this.toDataURL(e),function(t){e.callback(t)})},setSize:function(t){return this.setWidth(t.width),this.setHeight(t.height),this},getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getWidth:function(){return this.attrs.width||0},getHeight:function(){return this.attrs.height||0},getClassName:function(){return this.className||this.nodeType},getType:function(){return this.nodeType},getDragDistance:function(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():t.dragDistance},_get:function(t){return this.className===t||this.nodeType===t?[this]:[]},_off:function(t,e,n){var r,i,o,a=this.eventListeners[t];for(r=0;r<a.length;r++)if(i=a[r].name,o=a[r].handler,!(\"konva\"===i&&\"konva\"!==e||e&&i!==e||n&&n!==o)){if(a.splice(r,1),0===a.length){delete this.eventListeners[t];break}r--}},_fireChangeEvent:function(t,e,n){this._fire(t+\"Change\",{oldVal:e,newVal:n})},setId:function(e){var n=this.getId();return t._removeId(n),t._addId(this,e),this._setAttr(\"id\",e),this},setName:function(e){var n,r,i=(this.getName()||\"\").split(/\\s/g),o=(e||\"\").split(/\\s/g);for(r=0;r<i.length;r++)n=i[r],-1===o.indexOf(n)&&n&&t._removeName(n,this._id);for(r=0;r<o.length;r++)n=o[r],-1===i.indexOf(n)&&n&&t._addName(this,n);return this._setAttr(\"name\",e),this},addName:function(t){if(!this.hasName(t)){var e=this.name(),n=e?e+\" \"+t:t;this.setName(n)}return this},hasName:function(t){return-1!==(this.name()||\"\").split(/\\s/g).indexOf(t)},removeName:function(t){var e=(this.name()||\"\").split(/\\s/g),n=e.indexOf(t);return-1!==n&&(e.splice(n,1),this.setName(e.join(\" \"))),this},setAttr:function(e,n){var r=this[\"set\"+t.Util._capitalize(e)];return t.Util._isFunction(r)?r.call(this,n):this._setAttr(e,n),this},_setAttr:function(e,n){var r;(r=this.attrs[e])===n&&!t.Util.isObject(n)||(void 0===n||null===n?delete this.attrs[e]:this.attrs[e]=n,this._fireChangeEvent(e,r,n))},_setComponentAttr:function(t,e,n){var r;void 0!==n&&((r=this.attrs[t])||(this.attrs[t]=this.getAttr(t)),this.attrs[t][e]=n,this._fireChangeEvent(t,r,n))},_fireAndBubble:function(t,n,r){var i=!0;if(n&&this.nodeType===e&&(n.target=this),\"mouseenter\"===t&&r&&(this._id===r._id||this.isAncestorOf&&this.isAncestorOf(r))?i=!1:\"mouseleave\"===t&&r&&(this._id===r._id||this.isAncestorOf&&this.isAncestorOf(r))&&(i=!1),i){this._fire(t,n);var o=(\"mouseenter\"===t||\"mouseleave\"===t)&&r&&r.isAncestorOf&&r.isAncestorOf(this)&&!r.isAncestorOf(this.parent);(n&&!n.cancelBubble||!n)&&this.parent&&this.parent.isListening()&&!o&&(r&&r.parent?this._fireAndBubble.call(this.parent,t,n,r.parent):this._fireAndBubble.call(this.parent,t,n))}},_fire:function(t,e){var n,r=this.eventListeners[t];if((e=e||{}).currentTarget=this,e.type=t,r)for(n=0;n<r.length;n++)r[n].handler.call(this,e)},draw:function(){return this.drawScene(),this.drawHit(),this}}),t.Node.create=function(e,n){return t.Util._isString(e)&&(e=JSON.parse(e)),this._createNode(e,n)},t.Node._createNode=function(e,n){var r,i,o,a=t.Node.prototype.getClassName.call(e),s=e.children;if(n&&(e.attrs.container=n),r=new t[a](e.attrs),s)for(i=s.length,o=0;o<i;o++)r.add(this._createNode(s[o]));return r},t.Factory.addOverloadedGetterSetter(t.Node,\"position\"),t.Factory.addGetterSetter(t.Node,\"x\",0),t.Factory.addGetterSetter(t.Node,\"y\",0),t.Factory.addGetterSetter(t.Node,\"globalCompositeOperation\",\"source-over\"),t.Factory.addGetterSetter(t.Node,\"opacity\",1),t.Factory.addGetter(t.Node,\"name\"),t.Factory.addOverloadedGetterSetter(t.Node,\"name\"),t.Factory.addGetter(t.Node,\"id\"),t.Factory.addOverloadedGetterSetter(t.Node,\"id\"),t.Factory.addGetterSetter(t.Node,\"rotation\",0),t.Factory.addComponentsGetterSetter(t.Node,\"scale\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Node,\"scaleX\",1),t.Factory.addGetterSetter(t.Node,\"scaleY\",1),t.Factory.addComponentsGetterSetter(t.Node,\"skew\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Node,\"skewX\",0),t.Factory.addGetterSetter(t.Node,\"skewY\",0),t.Factory.addComponentsGetterSetter(t.Node,\"offset\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Node,\"offsetX\",0),t.Factory.addGetterSetter(t.Node,\"offsetY\",0),t.Factory.addSetter(t.Node,\"dragDistance\"),t.Factory.addOverloadedGetterSetter(t.Node,\"dragDistance\"),t.Factory.addSetter(t.Node,\"width\",0),t.Factory.addOverloadedGetterSetter(t.Node,\"width\"),t.Factory.addSetter(t.Node,\"height\",0),t.Factory.addOverloadedGetterSetter(t.Node,\"height\"),t.Factory.addGetterSetter(t.Node,\"listening\",\"inherit\"),t.Factory.addGetterSetter(t.Node,\"preventDefault\",!0),t.Factory.addGetterSetter(t.Node,\"filters\",void 0,function(t){return this._filterUpToDate=!1,t}),t.Factory.addGetterSetter(t.Node,\"visible\",\"inherit\"),t.Factory.addGetterSetter(t.Node,\"transformsEnabled\",\"all\"),t.Factory.addOverloadedGetterSetter(t.Node,\"size\"),t.Factory.backCompat(t.Node,{rotateDeg:\"rotate\",setRotationDeg:\"setRotation\",getRotationDeg:\"getRotation\"}),t.Collection.mapMethods(t.Node)}(Konva),function(){\"use strict\";Konva.Filters.Grayscale=function(t){var e,n,r=t.data,i=r.length;for(e=0;e<i;e+=4)n=.34*r[e]+.5*r[e+1]+.16*r[e+2],r[e]=n,r[e+1]=n,r[e+2]=n}}(),function(t){\"use strict\";t.Filters.Brighten=function(t){var e,n=255*this.brightness(),r=t.data,i=r.length;for(e=0;e<i;e+=4)r[e]+=n,r[e+1]+=n,r[e+2]+=n},t.Factory.addGetterSetter(t.Node,\"brightness\",0,null,t.Factory.afterSetFilter)}(Konva),function(){\"use strict\";Konva.Filters.Invert=function(t){var e,n=t.data,r=n.length;for(e=0;e<r;e+=4)n[e]=255-n[e],n[e+1]=255-n[e+1],n[e+2]=255-n[e+2]}}(),function(t){\"use strict\";function e(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var n=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],r=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];t.Filters.Blur=function(t){var i=Math.round(this.blurRadius());i>0&&function(t,i){var o,a,s,u,h,c,l,f,d,g,p,v,y,m,_,b,w,S,x,M,P,T,k,C,K=t.data,A=t.width,D=t.height,F=i+i+1,O=A-1,I=D-1,R=i+1,L=R*(R+1)/2,z=new e,E=null,G=z,N=null,U=null,j=n[i],H=r[i];for(s=1;s<F;s++)G=G.next=new e,s===R&&(E=G);for(G.next=z,l=c=0,a=0;a<D;a++){for(b=w=S=x=f=d=g=p=0,v=R*(M=K[c]),y=R*(P=K[c+1]),m=R*(T=K[c+2]),_=R*(k=K[c+3]),f+=L*M,d+=L*P,g+=L*T,p+=L*k,G=z,s=0;s<R;s++)G.r=M,G.g=P,G.b=T,G.a=k,G=G.next;for(s=1;s<R;s++)u=c+((O<s?O:s)<<2),f+=(G.r=M=K[u])*(C=R-s),d+=(G.g=P=K[u+1])*C,g+=(G.b=T=K[u+2])*C,p+=(G.a=k=K[u+3])*C,b+=M,w+=P,S+=T,x+=k,G=G.next;for(N=z,U=E,o=0;o<A;o++)K[c+3]=k=p*j>>H,0!==k?(k=255/k,K[c]=(f*j>>H)*k,K[c+1]=(d*j>>H)*k,K[c+2]=(g*j>>H)*k):K[c]=K[c+1]=K[c+2]=0,f-=v,d-=y,g-=m,p-=_,v-=N.r,y-=N.g,m-=N.b,_-=N.a,u=l+((u=o+i+1)<O?u:O)<<2,f+=b+=N.r=K[u],d+=w+=N.g=K[u+1],g+=S+=N.b=K[u+2],p+=x+=N.a=K[u+3],N=N.next,v+=M=U.r,y+=P=U.g,m+=T=U.b,_+=k=U.a,b-=M,w-=P,S-=T,x-=k,U=U.next,c+=4;l+=A}for(o=0;o<A;o++){for(w=S=x=b=d=g=p=f=0,v=R*(M=K[c=o<<2]),y=R*(P=K[c+1]),m=R*(T=K[c+2]),_=R*(k=K[c+3]),f+=L*M,d+=L*P,g+=L*T,p+=L*k,G=z,s=0;s<R;s++)G.r=M,G.g=P,G.b=T,G.a=k,G=G.next;for(h=A,s=1;s<=i;s++)c=h+o<<2,f+=(G.r=M=K[c])*(C=R-s),d+=(G.g=P=K[c+1])*C,g+=(G.b=T=K[c+2])*C,p+=(G.a=k=K[c+3])*C,b+=M,w+=P,S+=T,x+=k,G=G.next,s<I&&(h+=A);for(c=o,N=z,U=E,a=0;a<D;a++)K[3+(u=c<<2)]=k=p*j>>H,k>0?(k=255/k,K[u]=(f*j>>H)*k,K[u+1]=(d*j>>H)*k,K[u+2]=(g*j>>H)*k):K[u]=K[u+1]=K[u+2]=0,f-=v,d-=y,g-=m,p-=_,v-=N.r,y-=N.g,m-=N.b,_-=N.a,u=o+((u=a+R)<I?u:I)*A<<2,f+=b+=N.r=K[u],d+=w+=N.g=K[u+1],g+=S+=N.b=K[u+2],p+=x+=N.a=K[u+3],N=N.next,v+=M=U.r,y+=P=U.g,m+=T=U.b,_+=k=U.a,b-=M,w-=P,S-=T,x-=k,U=U.next,c+=A}}(t,i)},t.Factory.addGetterSetter(t.Node,\"blurRadius\",0,null,t.Factory.afterSetFilter)}(Konva),function(){\"use strict\";function t(t,e,n){var r=4*(n*t.width+e),i=[];return i.push(t.data[r++],t.data[r++],t.data[r++],t.data[r++]),i}function e(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2))}Konva.Filters.Mask=function(n){var r=function(n,r){var i=t(n,0,0),o=t(n,n.width-1,0),a=t(n,0,n.height-1),s=t(n,n.width-1,n.height-1),u=r||10;if(e(i,o)<u&&e(o,s)<u&&e(s,a)<u&&e(a,i)<u){for(var h=function(t){for(var e=[0,0,0],n=0;n<t.length;n++)e[0]+=t[n][0],e[1]+=t[n][1],e[2]+=t[n][2];return e[0]/=t.length,e[1]/=t.length,e[2]/=t.length,e}([o,i,s,a]),c=[],l=0;l<n.width*n.height;l++){var f=e(h,[n.data[4*l],n.data[4*l+1],n.data[4*l+2]]);c[l]=f<u?0:255}return c}}(n,this.threshold());return r&&function(t,e){for(var n=0;n<t.width*t.height;n++)t.data[4*n+3]=e[n]}(n,r=function(t,e,n){for(var r=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),a=[],s=0;s<n;s++)for(var u=0;u<e;u++){for(var h=s*e+u,c=0,l=0;l<i;l++)for(var f=0;f<i;f++){var d=s+l-o,g=u+f-o;if(d>=0&&d<n&&g>=0&&g<e){var p=r[l*i+f];c+=t[d*e+g]*p}}a[h]=c}return a}(r=function(t,e,n){for(var r=[1,1,1,1,1,1,1,1,1],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),a=[],s=0;s<n;s++)for(var u=0;u<e;u++){for(var h=s*e+u,c=0,l=0;l<i;l++)for(var f=0;f<i;f++){var d=s+l-o,g=u+f-o;if(d>=0&&d<n&&g>=0&&g<e){var p=r[l*i+f];c+=t[d*e+g]*p}}a[h]=c>=1020?255:0}return a}(r=function(t,e,n){for(var r=[1,1,1,1,0,1,1,1,1],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),a=[],s=0;s<n;s++)for(var u=0;u<e;u++){for(var h=s*e+u,c=0,l=0;l<i;l++)for(var f=0;f<i;f++){var d=s+l-o,g=u+f-o;if(d>=0&&d<n&&g>=0&&g<e){var p=r[l*i+f];c+=t[d*e+g]*p}}a[h]=2040===c?255:0}return a}(r,n.width,n.height),n.width,n.height),n.width,n.height)),n},Konva.Factory.addGetterSetter(Konva.Node,\"threshold\",0,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.RGB=function(t){var e,n,r=t.data,i=r.length,o=this.red(),a=this.green(),s=this.blue();for(e=0;e<i;e+=4)n=(.34*r[e]+.5*r[e+1]+.16*r[e+2])/255,r[e]=n*o,r[e+1]=n*a,r[e+2]=n*s,r[e+3]=r[e+3]},Konva.Factory.addGetterSetter(Konva.Node,\"red\",0,function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)}),Konva.Factory.addGetterSetter(Konva.Node,\"green\",0,function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)}),Konva.Factory.addGetterSetter(Konva.Node,\"blue\",0,Konva.Validators.RGBComponent,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.RGBA=function(t){var e,n,r=t.data,i=r.length,o=this.red(),a=this.green(),s=this.blue(),u=this.alpha();for(e=0;e<i;e+=4)n=1-u,r[e]=o*u+r[e]*n,r[e+1]=a*u+r[e+1]*n,r[e+2]=s*u+r[e+2]*n},Konva.Factory.addGetterSetter(Konva.Node,\"red\",0,function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)}),Konva.Factory.addGetterSetter(Konva.Node,\"green\",0,function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)}),Konva.Factory.addGetterSetter(Konva.Node,\"blue\",0,Konva.Validators.RGBComponent,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"alpha\",1,function(t){return this._filterUpToDate=!1,t>1?1:t<0?0:t})}(),function(){\"use strict\";Konva.Filters.HSV=function(t){var e,n,r,i,o,a=t.data,s=a.length,u=Math.pow(2,this.value()),h=Math.pow(2,this.saturation()),c=Math.abs(this.hue()+360)%360,l=u*h*Math.cos(c*Math.PI/180),f=u*h*Math.sin(c*Math.PI/180),d=.299*u+.701*l+.167*f,g=.587*u-.587*l+.33*f,p=.114*u-.114*l-.497*f,v=.299*u-.299*l-.328*f,y=.587*u+.413*l+.035*f,m=.114*u-.114*l+.293*f,_=.299*u-.3*l+1.25*f,b=.587*u-.586*l-1.05*f,w=.114*u+.886*l-.2*f;for(e=0;e<s;e+=4)n=a[e+0],r=a[e+1],i=a[e+2],o=a[e+3],a[e+0]=d*n+g*r+p*i,a[e+1]=v*n+y*r+m*i,a[e+2]=_*n+b*r+w*i,a[e+3]=o},Konva.Factory.addGetterSetter(Konva.Node,\"hue\",0,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"saturation\",0,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"value\",0,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Factory.addGetterSetter(Konva.Node,\"hue\",0,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"saturation\",0,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"luminance\",0,null,Konva.Factory.afterSetFilter),Konva.Filters.HSL=function(t){var e,n,r,i,o,a=t.data,s=a.length,u=Math.pow(2,this.saturation()),h=Math.abs(this.hue()+360)%360,c=127*this.luminance(),l=1*u*Math.cos(h*Math.PI/180),f=1*u*Math.sin(h*Math.PI/180),d=.299+.701*l+.167*f,g=.587-.587*l+.33*f,p=.114-.114*l-.497*f,v=.299-.299*l-.328*f,y=.587+.413*l+.035*f,m=.114-.114*l+.293*f,_=.299-.3*l+1.25*f,b=.587-.586*l-1.05*f,w=.114+.886*l-.2*f;for(e=0;e<s;e+=4)n=a[e+0],r=a[e+1],i=a[e+2],o=a[e+3],a[e+0]=d*n+g*r+p*i+c,a[e+1]=v*n+y*r+m*i+c,a[e+2]=_*n+b*r+w*i+c,a[e+3]=o}}(),function(){\"use strict\";Konva.Filters.Emboss=function(t){var e=10*this.embossStrength(),n=255*this.embossWhiteLevel(),r=this.embossDirection(),i=this.embossBlend(),o=0,a=0,s=t.data,u=t.width,h=t.height,c=4*u,l=h;switch(r){case\"top-left\":o=-1,a=-1;break;case\"top\":o=-1,a=0;break;case\"top-right\":o=-1,a=1;break;case\"right\":o=0,a=1;break;case\"bottom-right\":o=1,a=1;break;case\"bottom\":o=1,a=0;break;case\"bottom-left\":o=1,a=-1;break;case\"left\":o=0,a=-1;break;default:Konva.Util.error(\"Unknown emboss direction: \"+r)}do{var f=(l-1)*c,d=o;l+d<1&&(d=0),l+d>h&&(d=0);var g=(l-1+d)*u*4,p=u;do{var v=f+4*(p-1),y=a;p+y<1&&(y=0),p+y>u&&(y=0);var m=g+4*(p-1+y),_=s[v]-s[m],b=s[v+1]-s[m+1],w=s[v+2]-s[m+2],S=_,x=S>0?S:-S;if((b>0?b:-b)>x&&(S=b),(w>0?w:-w)>x&&(S=w),S*=e,i){var M=s[v]+S,P=s[v+1]+S,T=s[v+2]+S;s[v]=M>255?255:M<0?0:M,s[v+1]=P>255?255:P<0?0:P,s[v+2]=T>255?255:T<0?0:T}else{var k=n-S;k<0?k=0:k>255&&(k=255),s[v]=s[v+1]=s[v+2]=k}}while(--p)}while(--l)},Konva.Factory.addGetterSetter(Konva.Node,\"embossStrength\",.5,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"embossWhiteLevel\",.5,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"embossDirection\",\"top-left\",null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"embossBlend\",!1,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";function t(t,e,n,r,i){var o=n-e,a=i-r;return 0===o?r+a/2:0===a?r:a*((t-e)/o)+r}Konva.Filters.Enhance=function(e){var n,r,i,o,a=e.data,s=a.length,u=a[0],h=u,c=a[1],l=c,f=a[2],d=f,g=this.enhance();if(0!==g){for(o=0;o<s;o+=4)(n=a[o+0])<u?u=n:n>h&&(h=n),(r=a[o+1])<c?c=r:r>l&&(l=r),(i=a[o+2])<f?f=i:i>d&&(d=i);var p,v,y,m,_,b,w,S,x;for(h===u&&(h=255,u=0),l===c&&(l=255,c=0),d===f&&(d=255,f=0),g>0?(v=h+g*(255-h),y=u-g*(u-0),_=l+g*(255-l),b=c-g*(c-0),S=d+g*(255-d),x=f-g*(f-0)):(v=h+g*(h-(p=.5*(h+u))),y=u+g*(u-p),_=l+g*(l-(m=.5*(l+c))),b=c+g*(c-m),S=d+g*(d-(w=.5*(d+f))),x=f+g*(f-w)),o=0;o<s;o+=4)a[o+0]=t(a[o+0],u,h,y,v),a[o+1]=t(a[o+1],c,l,b,_),a[o+2]=t(a[o+2],f,d,x,S)}},Konva.Factory.addGetterSetter(Konva.Node,\"enhance\",0,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.Posterize=function(t){var e,n=Math.round(254*this.levels())+1,r=t.data,i=r.length,o=255/n;for(e=0;e<i;e+=1)r[e]=Math.floor(r[e]/o)*o},Konva.Factory.addGetterSetter(Konva.Node,\"levels\",.5,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.Noise=function(t){var e,n=255*this.noise(),r=t.data,i=r.length,o=n/2;for(e=0;e<i;e+=4)r[e+0]+=o-2*o*Math.random(),r[e+1]+=o-2*o*Math.random(),r[e+2]+=o-2*o*Math.random()},Konva.Factory.addGetterSetter(Konva.Node,\"noise\",.2,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.Pixelate=function(t){var e,n,r,i,o,a,s,u,h,c,l,f,d,g,p=Math.ceil(this.pixelSize()),v=t.width,y=t.height,m=Math.ceil(v/p),_=Math.ceil(y/p);if(t=t.data,p<=0)Konva.Util.error(\"pixelSize value can not be <= 0\");else for(f=0;f<m;f+=1)for(d=0;d<_;d+=1){for(i=0,o=0,a=0,s=0,h=(u=f*p)+p,l=(c=d*p)+p,g=0,e=u;e<h;e+=1)if(!(e>=v))for(n=c;n<l;n+=1)n>=y||(i+=t[(r=4*(v*n+e))+0],o+=t[r+1],a+=t[r+2],s+=t[r+3],g+=1);for(i/=g,o/=g,a/=g,s/=g,e=u;e<h;e+=1)if(!(e>=v))for(n=c;n<l;n+=1)n>=y||(t[(r=4*(v*n+e))+0]=i,t[r+1]=o,t[r+2]=a,t[r+3]=s)}},Konva.Factory.addGetterSetter(Konva.Node,\"pixelSize\",8,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";Konva.Filters.Threshold=function(t){var e,n=255*this.threshold(),r=t.data,i=r.length;for(e=0;e<i;e+=1)r[e]=r[e]<n?0:255},Konva.Factory.addGetterSetter(Konva.Node,\"threshold\",.5,null,Konva.Factory.afterSetFilter)}(),function(){\"use strict\";\n/**\n   * Sepia Filter\n   * Based on: Pixastic Lib - Sepia filter - v0.1.0\n   * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/\n   * @function\n   * @name Sepia\n   * @memberof Konva.Filters\n   * @param {Object} imageData\n   * @author Jacob Seidelin <jseidelin@nihilogic.dk>\n   * @license MPL v1.1 [http://www.pixastic.com/lib/license.txt]\n   * @example\n   * node.cache();\n   * node.filters([Konva.Filters.Sepia]);\n   */Konva.Filters.Sepia=function(t){var e,n,r,i,o,a,s,u,h,c=t.data,l=t.width,f=t.height,d=4*l;do{e=(f-1)*d,n=l;do{s=.393*(i=c[r=e+4*(n-1)])+.769*(o=c[r+1])+.189*(a=c[r+2]),u=.349*i+.686*o+.168*a,h=.272*i+.534*o+.131*a,c[r]=s>255?255:s,c[r+1]=u>255?255:u,c[r+2]=h>255?255:h,c[r+3]=c[r+3]}while(--n)}while(--f)}}(),function(){\"use strict\";Konva.Filters.Solarize=function(t){var e=t.data,n=t.width,r=4*n,i=t.height;do{var o=(i-1)*r,a=n;do{var s=o+4*(a-1),u=e[s],h=e[s+1],c=e[s+2];u>127&&(u=255-u),h>127&&(h=255-h),c>127&&(c=255-c),e[s]=u,e[s+1]=h,e[s+2]=c}while(--a)}while(--i)}}(),function(){\"use strict\";Konva.Filters.Kaleidoscope=function(t){var e,n,r,i,o,a,s,u,h,c=t.width,l=t.height,f=Math.round(this.kaleidoscopePower()),d=Math.round(this.kaleidoscopeAngle()),g=Math.floor(c*(d%360)/360);if(!(f<1)){var p=Konva.Util.createCanvasElement();p.width=c,p.height=l;var v=p.getContext(\"2d\").getImageData(0,0,c,l);!function(t,e,n){var r,i,o,a,s=t.data,u=e.data,h=t.width,c=t.height,l=n.polarCenterX||h/2,f=n.polarCenterY||c/2,d=0,g=0,p=0,v=0,y=Math.sqrt(l*l+f*f);i=h-l,o=c-f,y=(a=Math.sqrt(i*i+o*o))>y?a:y;var m,_,b,w,S=c,x=h,M=360/x*Math.PI/180;for(_=0;_<x;_+=1)for(b=Math.sin(_*M),w=Math.cos(_*M),m=0;m<S;m+=1)i=Math.floor(l+y*m/S*w),d=s[0+(r=4*((o=Math.floor(f+y*m/S*b))*h+i))],g=s[r+1],p=s[r+2],v=s[r+3],u[0+(r=4*(_+m*h))]=d,u[r+1]=g,u[r+2]=p,u[r+3]=v}(t,v,{polarCenterX:c/2,polarCenterY:l/2});for(var y=c/Math.pow(2,f);y<=8;)y*=2,f-=1;var m=y=Math.ceil(y),_=0,b=m,w=1;for(g+y>c&&(_=m,b=0,w=-1),n=0;n<l;n+=1)for(e=_;e!==b;e+=w)u=4*(c*n+Math.round(e+g)%c),i=v.data[u+0],o=v.data[u+1],a=v.data[u+2],s=v.data[u+3],h=4*(c*n+e),v.data[h+0]=i,v.data[h+1]=o,v.data[h+2]=a,v.data[h+3]=s;for(n=0;n<l;n+=1)for(m=Math.floor(y),r=0;r<f;r+=1){for(e=0;e<m+1;e+=1)u=4*(c*n+e),i=v.data[u+0],o=v.data[u+1],a=v.data[u+2],s=v.data[u+3],h=4*(c*n+2*m-e-1),v.data[h+0]=i,v.data[h+1]=o,v.data[h+2]=a,v.data[h+3]=s;m*=2}!function(t,e,n){var r,i,o,a,s,u,h=t.data,c=e.data,l=t.width,f=t.height,d=n.polarCenterX||l/2,g=n.polarCenterY||f/2,p=0,v=0,y=0,m=0,_=Math.sqrt(d*d+g*g);i=l-d,o=f-g,_=(u=Math.sqrt(i*i+o*o))>_?u:_;var b,w,S,x=f,M=l,P=n.polarRotation||0;for(i=0;i<l;i+=1)for(o=0;o<f;o+=1)a=i-d,s=o-g,b=Math.sqrt(a*a+s*s)*x/_,w=(w=(180*Math.atan2(s,a)/Math.PI+360+P)%360)*M/360,S=Math.floor(w),p=h[0+(r=4*(Math.floor(b)*l+S))],v=h[r+1],y=h[r+2],m=h[r+3],c[0+(r=4*(o*l+i))]=p,c[r+1]=v,c[r+2]=y,c[r+3]=m}(v,t,{polarRotation:0})}},Konva.Factory.addGetterSetter(Konva.Node,\"kaleidoscopePower\",2,null,Konva.Factory.afterSetFilter),Konva.Factory.addGetterSetter(Konva.Node,\"kaleidoscopeAngle\",0,null,Konva.Factory.afterSetFilter)}(),function(t){\"use strict\";t.Filters.Contrast=function(t){var e,n=Math.pow((parseInt(this.contrast())+100)/100,2),r=t.data,i=r.length,o=150,a=150,s=150;for(e=0;e<i;e+=4)o=r[e],a=r[e+1],s=r[e+2],o/=255,o-=.5,o*=n,o+=.5,a/=255,a-=.5,a*=n,a+=.5,a*=255,s/=255,s-=.5,s*=n,s+=.5,s*=255,o=(o*=255)<0?0:o>255?255:o,a=a<0?0:a>255?255:a,s=s<0?0:s>255?255:s,r[e]=o,r[e+1]=a,r[e+2]=s},t.Factory.addGetterSetter(t.Node,\"contrast\",0,null,t.Factory.afterSetFilter)}(Konva),function(){\"use strict\";Konva.Container=function(t){this.__init(t)},Konva.Util.addMethods(Konva.Container,{__init:function(t){this.children=new Konva.Collection,Konva.Node.call(this,t)},getChildren:function(t){if(!t)return this.children;var e=new Konva.Collection;return this.children.each(function(n){t(n)&&e.push(n)}),e},hasChildren:function(){return this.getChildren().length>0},removeChildren:function(){for(var t,e=Konva.Collection.toCollection(this.children),n=0;n<e.length;n++)delete(t=e[n]).parent,t.index=0,t.remove();return e=null,this.children=new Konva.Collection,this},destroyChildren:function(){for(var t,e=Konva.Collection.toCollection(this.children),n=0;n<e.length;n++)delete(t=e[n]).parent,t.index=0,t.destroy();return e=null,this.children=new Konva.Collection,this},add:function(t){if(arguments.length>1){for(var e=0;e<arguments.length;e++)this.add(arguments[e]);return this}if(t.getParent())return t.moveTo(this),this;var n=this.children;return this._validateAdd(t),t.index=n.length,t.parent=this,n.push(t),this._fire(\"add\",{child:t}),Konva.DD&&t.isDragging()&&Konva.DD.anim.setLayers(t.getLayer()),this},destroy:function(){return this.hasChildren()&&this.destroyChildren(),Konva.Node.prototype.destroy.call(this),this},find:function(t){return this._generalFind(t,!1)},findOne:function(t){var e=this._generalFind(t,!0);return e.length>0?e[0]:void 0},_generalFind:function(t,e){var n=[];return\"string\"==typeof t?n=this._findByString(t,e):\"function\"==typeof t&&(n=this._findByFunction(t,e)),Konva.Collection.toCollection(n)},_findByString:function(t){var e,n,r,i,o,a,s,u=[],h=t.replace(/ /g,\"\").split(\",\"),c=h.length;for(e=0;e<c;e++)if(r=h[e],Konva.Util.isValidSelector(r)||(Konva.Util.warn('Selector \"'+r+'\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".'),Konva.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".'),Konva.Util.warn(\"Konva is awesome, right?\")),\"#\"===r.charAt(0))(o=this._getNodeById(r.slice(1)))&&u.push(o);else if(\".\"===r.charAt(0))i=this._getNodesByName(r.slice(1)),u=u.concat(i);else for(s=(a=this.getChildren()).length,n=0;n<s;n++)u=u.concat(a[n]._get(r));return u},_findByFunction:function(t,e){var n=[],r=function(i){if(!(e&&n.length>0)){var o=i.getChildren(),a=o.length;t(i)&&(n=n.concat(i));for(var s=0;s<a;s++)r(o[s])}};return r(this),n},_getNodeById:function(t){var e=Konva.ids[t];return void 0!==e&&this.isAncestorOf(e)?e:null},_getNodesByName:function(t){var e=Konva.names[t]||[];return this._getDescendants(e)},_get:function(t){for(var e=Konva.Node.prototype._get.call(this,t),n=this.getChildren(),r=n.length,i=0;i<r;i++)e=e.concat(n[i]._get(t));return e},toObject:function(){var t=Konva.Node.prototype.toObject.call(this);t.children=[];for(var e=this.getChildren(),n=e.length,r=0;r<n;r++){var i=e[r];t.children.push(i.toObject())}return t},_getDescendants:function(t){for(var e=[],n=t.length,r=0;r<n;r++){var i=t[r];this.isAncestorOf(i)&&e.push(i)}return e},isAncestorOf:function(t){for(var e=t.getParent();e;){if(e._id===this._id)return!0;e=e.getParent()}return!1},clone:function(t){var e=Konva.Node.prototype.clone.call(this,t);return this.getChildren().each(function(t){e.add(t.clone())}),e},getAllIntersections:function(t){var e=[];return this.find(\"Shape\").each(function(n){n.isVisible()&&n.intersects(t)&&e.push(n)}),e},_setChildrenIndices:function(){this.children.each(function(t,e){t.index=e})},drawScene:function(t,e,n){var r=this.getLayer(),i=t||r&&r.getCanvas(),o=i&&i.getContext(),a=this._cache.canvas,s=a&&a.scene;return(this.isVisible()||n)&&(!n&&s?(o.save(),r._applyTransform(this,o,e),this._drawCachedSceneCanvas(o),o.restore()):this._drawChildren(i,\"drawScene\",e,!1,n)),this},drawHit:function(t,e,n){var r=this.getLayer(),i=t||r&&r.hitCanvas,o=i&&i.getContext(),a=this._cache.canvas,s=a&&a.hit;return(this.shouldDrawHit(i)||n)&&(r&&r.clearHitCache(),!n&&s?(o.save(),r._applyTransform(this,o,e),this._drawCachedHitCanvas(o),o.restore()):this._drawChildren(i,\"drawHit\",e)),this},_drawChildren:function(t,e,n,r,i){var o,a,s=this.getLayer(),u=t&&t.getContext(),h=this.getClipWidth(),c=this.getClipHeight(),l=this.getClipFunc(),f=h&&c||l;if(f&&s){u.save();var d=this.getAbsoluteTransform(n),g=d.getMatrix();u.transform(g[0],g[1],g[2],g[3],g[4],g[5]),u.beginPath(),l?l.call(this,u,this):(o=this.getClipX(),a=this.getClipY(),u.rect(o,a,h,c)),u.clip(),g=d.copy().invert().getMatrix(),u.transform(g[0],g[1],g[2],g[3],g[4],g[5])}this.children.each(function(o){o[e](t,n,r,i)}),f&&u.restore()},shouldDrawHit:function(t){var e=this.getLayer(),n=Konva.DD&&Konva.isDragging()&&-1!==Konva.DD.anim.getLayers().indexOf(e);return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isVisible()&&!n},getClientRect:function(t){var e,n,r,i,o=(t=t||{}).skipTransform,a=t.relativeTo,s={x:1/0,y:1/0,width:0,height:0},u=this;this.children.each(function(t){if(t.getVisible()){var o=t.getClientRect({relativeTo:u});void 0===e?(e=o.x,n=o.y,r=o.x+o.width,i=o.y+o.height):(e=Math.min(e,o.x),n=Math.min(n,o.y),r=Math.max(r,o.x+o.width),i=Math.max(i,o.y+o.height))}});for(var h=this.find(\"Shape\"),c=!1,l=0;l<h.length;l++){if(h[l].getVisible()){c=!0;break}}return s=c?{x:e,y:n,width:r-e,height:i-n}:{x:0,y:0,width:0,height:0},o?s:this._transformedRect(s,a)}}),Konva.Util.extend(Konva.Container,Konva.Node),Konva.Container.prototype.get=Konva.Container.prototype.find,Konva.Factory.addComponentsGetterSetter(Konva.Container,\"clip\",[\"x\",\"y\",\"width\",\"height\"]),Konva.Factory.addGetterSetter(Konva.Container,\"clipX\"),Konva.Factory.addGetterSetter(Konva.Container,\"clipY\"),Konva.Factory.addGetterSetter(Konva.Container,\"clipWidth\"),Konva.Factory.addGetterSetter(Konva.Container,\"clipHeight\"),Konva.Factory.addGetterSetter(Konva.Container,\"clipFunc\"),Konva.Collection.mapMethods(Konva.Container)}(),function(t){\"use strict\";var e=\"hasShadow\",n=\"shadowRGBA\";function r(t){t.fill()}function i(t){t.stroke()}function o(t){t.fill()}function a(t){t.stroke()}function s(){this._clearCache(e)}function u(){this._clearCache(n)}t.Shape=function(t){this.__init(t)},t.Util.addMethods(t.Shape,{__init:function(e){this.nodeType=\"Shape\",this._fillFunc=r,this._strokeFunc=i,this._fillFuncHit=o,this._strokeFuncHit=a;for(var n,h=t.shapes;!(n=t.Util.getRandomColor())||n in h;);this.colorKey=n,h[n]=this,t.Node.call(this,e),this.on(\"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva\",s),this.on(\"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva\",u)},hasChildren:function(){return!1},getChildren:function(){return[]},getContext:function(){return this.getLayer().getContext()},getCanvas:function(){return this.getLayer().getCanvas()},hasShadow:function(){return this._getCache(e,this._hasShadow)},_hasShadow:function(){return this.getShadowEnabled()&&0!==this.getShadowOpacity()&&!!(this.getShadowColor()||this.getShadowBlur()||this.getShadowOffsetX()||this.getShadowOffsetY())},getShadowRGBA:function(){return this._getCache(n,this._getShadowRGBA)},_getShadowRGBA:function(){if(this.hasShadow()){var e=t.Util.colorToRGBA(this.shadowColor());return\"rgba(\"+e.r+\",\"+e.g+\",\"+e.b+\",\"+e.a*(this.getShadowOpacity()||1)+\")\"}},hasFill:function(){return!!(this.getFill()||this.getFillPatternImage()||this.getFillLinearGradientColorStops()||this.getFillRadialGradientColorStops())},hasStroke:function(){return this.strokeEnabled()&&!(!this.stroke()&&!this.getStrokeLinearGradientColorStops())},intersects:function(t){var e=this.getStage().bufferHitCanvas;return e.getContext().clear(),this.drawHit(e),e.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data[3]>0},destroy:function(){return t.Node.prototype.destroy.call(this),delete t.shapes[this.colorKey],this},_useBufferCanvas:function(t){return!t&&this.perfectDrawEnabled()&&1!==this.getAbsoluteOpacity()&&this.hasFill()&&this.hasStroke()&&this.getStage()||this.perfectDrawEnabled()&&this.hasShadow()&&1!==this.getAbsoluteOpacity()&&this.hasFill()&&this.hasStroke()&&this.getStage()},getSelfRect:function(){var t=this.getSize();return{x:this._centroid?Math.round(-t.width/2):0,y:this._centroid?Math.round(-t.height/2):0,width:t.width,height:t.height}},getClientRect:function(t){var e=(t=t||{}).skipTransform,n=t.relativeTo,r=this.getSelfRect(),i=this.hasStroke()&&this.strokeWidth()||0,o=r.width+i,a=r.height+i,s=this.hasShadow()?this.shadowOffsetX():0,u=this.hasShadow()?this.shadowOffsetY():0,h=o+Math.abs(s),c=a+Math.abs(u),l=this.hasShadow()&&this.shadowBlur()||0,f=h+2*l,d=c+2*l,g=0;Math.round(i/2)!==i/2&&(g=1);var p={width:f+g,height:d+g,x:-Math.round(i/2+l)+Math.min(s,0)+r.x,y:-Math.round(i/2+l)+Math.min(u,0)+r.y};return e?p:this._transformedRect(p,n)},drawScene:function(t,e,n,r){var i,o,a=this.getLayer(),s=t||a.getCanvas(),u=s.getContext(),h=this._cache.canvas,c=this.sceneFunc(),l=this.hasShadow(),f=this.hasStroke();if(!this.isVisible()&&!n)return this;if(h)return u.save(),a._applyTransform(this,u,e),this._drawCachedSceneCanvas(u),u.restore(),this;if(!c)return this;if(u.save(),this._useBufferCanvas(n)&&!r){if((o=(i=this.getStage().bufferCanvas).getContext()).clear(),o.save(),o._applyLineJoin(this),!n)if(a)a._applyTransform(this,o,e);else{var d=this.getAbsoluteTransform(e).getMatrix();u.transform(d[0],d[1],d[2],d[3],d[4],d[5])}c.call(this,o,this),o.restore();var g=i.pixelRatio;l&&!s.hitCanvas?(u.save(),u._applyShadow(this),u._applyOpacity(this),u._applyGlobalCompositeOperation(this),u.drawImage(i._canvas,0,0,i.width/g,i.height/g),u.restore()):(u._applyOpacity(this),u._applyGlobalCompositeOperation(this),u.drawImage(i._canvas,0,0,i.width/g,i.height/g))}else{if(u._applyLineJoin(this),!n)if(a)a._applyTransform(this,u,e);else{var p=this.getAbsoluteTransform(e).getMatrix();u.transform(p[0],p[1],p[2],p[3],p[4],p[5])}l&&f&&!s.hitCanvas?(u.save(),n||(u._applyOpacity(this),u._applyGlobalCompositeOperation(this)),u._applyShadow(this),c.call(this,u,this),u.restore(),this.hasFill()&&this.getShadowForStrokeEnabled()&&c.call(this,u,this)):l&&!s.hitCanvas?(u.save(),n||(u._applyOpacity(this),u._applyGlobalCompositeOperation(this)),u._applyShadow(this),c.call(this,u,this),u.restore()):(n||(u._applyOpacity(this),u._applyGlobalCompositeOperation(this)),c.call(this,u,this))}return u.restore(),this},drawHit:function(t,e,n){var r=this.getLayer(),i=t||r.hitCanvas,o=i.getContext(),a=this.hitFunc()||this.sceneFunc(),s=this._cache.canvas,u=s&&s.hit;if(!this.shouldDrawHit(i)&&!n)return this;if(r&&r.clearHitCache(),u)return o.save(),r._applyTransform(this,o,e),this._drawCachedHitCanvas(o),o.restore(),this;if(!a)return this;if(o.save(),o._applyLineJoin(this),!n)if(r)r._applyTransform(this,o,e);else{var h=this.getAbsoluteTransform(e).getMatrix();o.transform(h[0],h[1],h[2],h[3],h[4],h[5])}return a.call(this,o,this),o.restore(),this},drawHitFromCache:function(e){var n,r,i,o,a,s=e||0,u=this._cache.canvas,h=this._getCachedSceneCanvas(),c=u.hit,l=c.getContext(),f=c.getWidth(),d=c.getHeight();l.clear(),l.drawImage(h._canvas,0,0,f,d);try{for(i=(r=(n=l.getImageData(0,0,f,d)).data).length,o=t.Util._hexToRgb(this.colorKey),a=0;a<i;a+=4)r[a+3]>s?(r[a]=o.r,r[a+1]=o.g,r[a+2]=o.b,r[a+3]=255):r[a+3]=0;l.putImageData(n,0,0)}catch(e){t.Util.error(\"Unable to draw hit graph from cached scene canvas. \"+e.message)}return this}}),t.Util.extend(t.Shape,t.Node),t.Factory.addGetterSetter(t.Shape,\"stroke\"),t.Factory.addGetterSetter(t.Shape,\"strokeWidth\",2),t.Factory.addGetterSetter(t.Shape,\"strokeHitEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"perfectDrawEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"shadowForStrokeEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"lineJoin\"),t.Factory.addGetterSetter(t.Shape,\"lineCap\"),t.Factory.addGetterSetter(t.Shape,\"sceneFunc\"),t.Factory.addGetterSetter(t.Shape,\"hitFunc\"),t.Factory.addGetterSetter(t.Shape,\"dash\"),t.Factory.addGetterSetter(t.Shape,\"dashOffset\",0),t.Factory.addGetterSetter(t.Shape,\"shadowColor\"),t.Factory.addGetterSetter(t.Shape,\"shadowBlur\"),t.Factory.addGetterSetter(t.Shape,\"shadowOpacity\"),t.Factory.addComponentsGetterSetter(t.Shape,\"shadowOffset\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"shadowOffsetX\",0),t.Factory.addGetterSetter(t.Shape,\"shadowOffsetY\",0),t.Factory.addGetterSetter(t.Shape,\"fillPatternImage\"),t.Factory.addGetterSetter(t.Shape,\"fill\"),t.Factory.addGetterSetter(t.Shape,\"fillPatternX\",0),t.Factory.addGetterSetter(t.Shape,\"fillPatternY\",0),t.Factory.addGetterSetter(t.Shape,\"fillLinearGradientColorStops\"),t.Factory.addGetterSetter(t.Shape,\"strokeLinearGradientColorStops\"),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientStartRadius\",0),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientEndRadius\",0),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientColorStops\"),t.Factory.addGetterSetter(t.Shape,\"fillPatternRepeat\",\"repeat\"),t.Factory.addGetterSetter(t.Shape,\"fillEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"strokeEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"shadowEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"dashEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"strokeScaleEnabled\",!0),t.Factory.addGetterSetter(t.Shape,\"fillPriority\",\"color\"),t.Factory.addComponentsGetterSetter(t.Shape,\"fillPatternOffset\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillPatternOffsetX\",0),t.Factory.addGetterSetter(t.Shape,\"fillPatternOffsetY\",0),t.Factory.addComponentsGetterSetter(t.Shape,\"fillPatternScale\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillPatternScaleX\",1),t.Factory.addGetterSetter(t.Shape,\"fillPatternScaleY\",1),t.Factory.addComponentsGetterSetter(t.Shape,\"fillLinearGradientStartPoint\",[\"x\",\"y\"]),t.Factory.addComponentsGetterSetter(t.Shape,\"strokeLinearGradientStartPoint\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillLinearGradientStartPointX\",0),t.Factory.addGetterSetter(t.Shape,\"strokeLinearGradientStartPointX\",0),t.Factory.addGetterSetter(t.Shape,\"fillLinearGradientStartPointY\",0),t.Factory.addGetterSetter(t.Shape,\"strokeLinearGradientStartPointY\",0),t.Factory.addComponentsGetterSetter(t.Shape,\"fillLinearGradientEndPoint\",[\"x\",\"y\"]),t.Factory.addComponentsGetterSetter(t.Shape,\"strokeLinearGradientEndPoint\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillLinearGradientEndPointX\",0),t.Factory.addGetterSetter(t.Shape,\"strokeLinearGradientEndPointX\",0),t.Factory.addGetterSetter(t.Shape,\"fillLinearGradientEndPointY\",0),t.Factory.addGetterSetter(t.Shape,\"strokeLinearGradientEndPointY\",0),t.Factory.addComponentsGetterSetter(t.Shape,\"fillRadialGradientStartPoint\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientStartPointX\",0),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientStartPointY\",0),t.Factory.addComponentsGetterSetter(t.Shape,\"fillRadialGradientEndPoint\",[\"x\",\"y\"]),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientEndPointX\",0),t.Factory.addGetterSetter(t.Shape,\"fillRadialGradientEndPointY\",0),t.Factory.addGetterSetter(t.Shape,\"fillPatternRotation\",0),t.Factory.backCompat(t.Shape,{dashArray:\"dash\",getDashArray:\"getDash\",setDashArray:\"getDash\",drawFunc:\"sceneFunc\",getDrawFunc:\"getSceneFunc\",setDrawFunc:\"setSceneFunc\",drawHitFunc:\"hitFunc\",getDrawHitFunc:\"getHitFunc\",setDrawHitFunc:\"setHitFunc\"}),t.Collection.mapMethods(t.Shape)}(Konva),function(){\"use strict\";var t=\"_\",e=[\"mousedown\",\"mousemove\",\"mouseup\",\"mouseout\",\"touchstart\",\"touchmove\",\"touchend\",\"mouseover\",\"wheel\",\"contextmenu\"],n=e.length;function r(e,n){e.content.addEventListener(n,function(r){e[t+n](r)},!1)}Konva.Stage=function(t){this.___init(t)},Konva.Util.addMethods(Konva.Stage,{___init:function(t){this.nodeType=\"Stage\",Konva.Container.call(this,t),this._id=Konva.idCounter++,this._buildDOM(),this._bindContentEvents(),this._enableNestedTransforms=!1,Konva.stages.push(this)},_validateAdd:function(t){\"Layer\"!==t.getType()&&Konva.Util.throw(\"You may only add layers to the stage.\")},setContainer:function(t){if(\"string\"==typeof t){if(\".\"===t.charAt(0)){var e=t.slice(1);t=Konva.document.getElementsByClassName(e)[0]}else{var n;n=\"#\"!==t.charAt(0)?t:t.slice(1),t=Konva.document.getElementById(n)}if(!t)throw\"Can not find container in document with id \"+n}return this._setAttr(\"container\",t),this},shouldDrawHit:function(){return!0},draw:function(){return Konva.Node.prototype.draw.call(this),this},setHeight:function(t){return Konva.Node.prototype.setHeight.call(this,t),this._resizeDOM(),this},setWidth:function(t){return Konva.Node.prototype.setWidth.call(this,t),this._resizeDOM(),this},clear:function(){var t,e=this.children,n=e.length;for(t=0;t<n;t++)e[t].clear();return this},clone:function(t){return t||(t={}),t.container=Konva.document.createElement(\"div\"),Konva.Container.prototype.clone.call(this,t)},destroy:function(){var t=this.content;Konva.Container.prototype.destroy.call(this),t&&Konva.Util._isInDocument(t)&&this.getContainer().removeChild(t);var e=Konva.stages.indexOf(this);return e>-1&&Konva.stages.splice(e,1),this},getPointerPosition:function(){return this.pointerPos},getStage:function(){return this},getContent:function(){return this.content},toDataURL:function(t){var e=(t=t||{}).mimeType||null,n=t.quality||null,r=t.x||0,i=t.y||0,o=new Konva.SceneCanvas({width:t.width||this.getWidth(),height:t.height||this.getHeight(),pixelRatio:t.pixelRatio||1}),a=o.getContext()._context,s=this.children;(r||i)&&a.translate(-1*r,-1*i),s.each(function(t){if(t.isVisible()){var e=t.getCanvas().getWidth(),n=t.getCanvas().getHeight(),r=t.getCanvas().getPixelRatio();a.drawImage(t.getCanvas()._canvas,0,0,e/r,n/r)}});var u=o.toDataURL(e,n);return t.callback&&t.callback(u),u},toImage:function(t){var e=t.callback;t.callback=function(t){Konva.Util._getImage(t,function(t){e(t)})},this.toDataURL(t)},getIntersection:function(t,e){var n,r,i=this.getChildren();for(n=i.length-1;n>=0;n--)if(r=i[n].getIntersection(t,e))return r;return null},_resizeDOM:function(){if(this.content){var t,e,n=this.getWidth(),r=this.getHeight(),i=this.getChildren(),o=i.length;for(this.content.style.width=n+\"px\",this.content.style.height=r+\"px\",this.bufferCanvas.setSize(n,r),this.bufferHitCanvas.setSize(n,r),t=0;t<o;t++)(e=i[t]).setSize(n,r),e.draw()}},add:function(t){if(arguments.length>1){for(var e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return Konva.Container.prototype.add.call(this,t),t._setCanvasSize(this.width(),this.height()),t.draw(),Konva.isBrowser&&this.content.appendChild(t.canvas._canvas),this},getParent:function(){return null},getLayer:function(){return null},getLayers:function(){return this.getChildren()},_bindContentEvents:function(){if(Konva.isBrowser)for(var t=0;t<n;t++)r(this,e[t])},_mouseover:function(t){Konva.UA.mobile||(this._setPointerPosition(t),this._fire(\"contentMouseover\",{evt:t}))},_mouseout:function(t){if(!Konva.UA.mobile){this._setPointerPosition(t);var e=this.targetShape;e&&!Konva.isDragging()&&(e._fireAndBubble(\"mouseout\",{evt:t}),e._fireAndBubble(\"mouseleave\",{evt:t}),this.targetShape=null),this.pointerPos=void 0,this._fire(\"contentMouseout\",{evt:t})}},_mousemove:function(t){return Konva.UA.ieMobile?this._touchmove(t):void 0===t.movementX&&void 0===t.movementY||0!==t.movementY||0!==t.movementX?Konva.UA.mobile?null:(this._setPointerPosition(t),Konva.isDragging()||((e=this.getIntersection(this.getPointerPosition()))&&e.isListening()?Konva.isDragging()||this.targetShape&&this.targetShape._id===e._id?e._fireAndBubble(\"mousemove\",{evt:t}):(this.targetShape&&(this.targetShape._fireAndBubble(\"mouseout\",{evt:t},e),this.targetShape._fireAndBubble(\"mouseleave\",{evt:t},e)),e._fireAndBubble(\"mouseover\",{evt:t},this.targetShape),e._fireAndBubble(\"mouseenter\",{evt:t},this.targetShape),this.targetShape=e):(this.targetShape&&!Konva.isDragging()&&(this.targetShape._fireAndBubble(\"mouseout\",{evt:t}),this.targetShape._fireAndBubble(\"mouseleave\",{evt:t}),this.targetShape=null),this._fire(\"mousemove\",{evt:t,target:this,currentTarget:this})),this._fire(\"contentMousemove\",{evt:t})),void(t.cancelable&&t.preventDefault())):null;var e},_mousedown:function(t){if(Konva.UA.ieMobile)return this._touchstart(t);if(!Konva.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Konva.listenClickTap=!0,e&&e.isListening()?(this.clickStartShape=e,e._fireAndBubble(\"mousedown\",{evt:t})):this._fire(\"mousedown\",{evt:t,target:this,currentTarget:this}),this._fire(\"contentMousedown\",{evt:t})}},_mouseup:function(t){if(Konva.UA.ieMobile)return this._touchend(t);if(!Konva.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),n=this.clickStartShape,r=this.clickEndShape,i=!1,o=Konva.DD;Konva.inDblClickWindow?(i=!0,clearTimeout(this.dblTimeout)):o&&o.justDragged?o&&(o.justDragged=!1):(Konva.inDblClickWindow=!0,clearTimeout(this.dblTimeout)),this.dblTimeout=setTimeout(function(){Konva.inDblClickWindow=!1},Konva.dblClickWindow),e&&e.isListening()?(this.clickEndShape=e,e._fireAndBubble(\"mouseup\",{evt:t}),Konva.listenClickTap&&n&&n._id===e._id&&(e._fireAndBubble(\"click\",{evt:t}),i&&r&&r._id===e._id&&e._fireAndBubble(\"dblclick\",{evt:t}))):(this._fire(\"mouseup\",{evt:t,target:this,currentTarget:this}),this._fire(\"click\",{evt:t,target:this,currentTarget:this}),i&&this._fire(\"dblclick\",{evt:t,target:this,currentTarget:this})),this._fire(\"contentMouseup\",{evt:t}),Konva.listenClickTap&&(this._fire(\"contentClick\",{evt:t}),i&&this._fire(\"contentDblclick\",{evt:t})),Konva.listenClickTap=!1}t.cancelable&&t.preventDefault()},_contextmenu:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());e&&e.isListening()?e._fireAndBubble(\"contextmenu\",{evt:t}):this._fire(\"contextmenu\",{evt:t,target:this,currentTarget:this}),this._fire(\"contentContextmenu\",{evt:t})},_touchstart:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Konva.listenClickTap=!0,e&&e.isListening()?(this.tapStartShape=e,e._fireAndBubble(\"touchstart\",{evt:t}),e.isListening()&&e.preventDefault()&&t.cancelable&&t.preventDefault()):this._fire(\"touchstart\",{evt:t,target:this,currentTarget:this}),this._fire(\"contentTouchstart\",{evt:t})},_touchend:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),n=!1;Konva.inDblClickWindow?(n=!0,clearTimeout(this.dblTimeout)):(Konva.inDblClickWindow=!0,clearTimeout(this.dblTimeout)),this.dblTimeout=setTimeout(function(){Konva.inDblClickWindow=!1},Konva.dblClickWindow),e&&e.isListening()?(e._fireAndBubble(\"touchend\",{evt:t}),Konva.listenClickTap&&this.tapStartShape&&e._id===this.tapStartShape._id&&(e._fireAndBubble(\"tap\",{evt:t}),n&&e._fireAndBubble(\"dbltap\",{evt:t})),e.isListening()&&e.preventDefault()&&t.cancelable&&t.preventDefault()):(this._fire(\"touchend\",{evt:t,target:this,currentTarget:this}),this._fire(\"tap\",{evt:t,target:this,currentTarget:this}),n&&this._fire(\"dbltap\",{evt:t,target:this,currentTarget:this})),this._fire(\"contentTouchend\",{evt:t}),Konva.listenClickTap&&(this._fire(\"contentTap\",{evt:t}),n&&this._fire(\"contentDbltap\",{evt:t})),Konva.listenClickTap=!1},_touchmove:function(t){this._setPointerPosition(t);var e,n=Konva.DD;Konva.isDragging()||((e=this.getIntersection(this.getPointerPosition()))&&e.isListening()?(e._fireAndBubble(\"touchmove\",{evt:t}),e.isListening()&&e.preventDefault()&&t.cancelable&&t.preventDefault()):this._fire(\"touchmove\",{evt:t,target:this,currentTarget:this}),this._fire(\"contentTouchmove\",{evt:t})),n&&Konva.isDragging()&&Konva.DD.node.preventDefault()&&t.cancelable&&t.preventDefault()},_wheel:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());e&&e.isListening()?e._fireAndBubble(\"wheel\",{evt:t}):this._fire(\"wheel\",{evt:t,target:this,currentTarget:this}),this._fire(\"contentWheel\",{evt:t})},_setPointerPosition:function(t){var e=this._getContentPosition(),n=null,r=null;if(void 0!==(t=t||window.event).touches){if(t.touches.length>0){var i=t.touches[0];n=i.clientX-e.left,r=i.clientY-e.top}}else n=t.clientX-e.left,r=t.clientY-e.top;null!==n&&null!==r&&(this.pointerPos={x:n,y:r})},_getContentPosition:function(){var t=this.content.getBoundingClientRect?this.content.getBoundingClientRect():{top:0,left:0};return{top:t.top,left:t.left}},_buildDOM:function(){if(this.bufferCanvas=new Konva.SceneCanvas,this.bufferHitCanvas=new Konva.HitCanvas({pixelRatio:1}),Konva.isBrowser){var t=this.getContainer();if(!t)throw\"Stage has no container. A container is required.\";t.innerHTML=\"\",this.content=Konva.document.createElement(\"div\"),this.content.style.position=\"relative\",this.content.className=\"konvajs-content\",this.content.setAttribute(\"role\",\"presentation\"),t.appendChild(this.content),this._resizeDOM()}},_onContent:function(t,e){var n,r,i=t.split(\" \"),o=i.length;for(n=0;n<o;n++)r=i[n],this.content.addEventListener(r,e,!1)},cache:function(){Konva.Util.warn(\"Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.\")},clearCache:function(){}}),Konva.Util.extend(Konva.Stage,Konva.Container),Konva.Factory.addGetter(Konva.Stage,\"container\"),Konva.Factory.addOverloadedGetterSetter(Konva.Stage,\"container\")}(),function(t){\"use strict\";t.BaseLayer=function(t){this.___init(t)},t.Util.addMethods(t.BaseLayer,{___init:function(e){this.nodeType=\"Layer\",t.Container.call(this,e)},createPNGStream:function(){return this.canvas._canvas.createPNGStream()},getCanvas:function(){return this.canvas},getHitCanvas:function(){return this.hitCanvas},getContext:function(){return this.getCanvas().getContext()},clear:function(t){return this.getContext().clear(t),this},clearHitCache:function(){this._hitImageData=void 0},setZIndex:function(e){t.Node.prototype.setZIndex.call(this,e);var n=this.getStage();return n&&(n.content.removeChild(this.getCanvas()._canvas),e<n.getChildren().length-1?n.content.insertBefore(this.getCanvas()._canvas,n.getChildren()[e+1].getCanvas()._canvas):n.content.appendChild(this.getCanvas()._canvas)),this},moveToTop:function(){t.Node.prototype.moveToTop.call(this);var e=this.getStage();return e&&(e.content.removeChild(this.getCanvas()._canvas),e.content.appendChild(this.getCanvas()._canvas)),this},moveUp:function(){if(!t.Node.prototype.moveUp.call(this))return this;var e=this.getStage();return e?(e.content.removeChild(this.getCanvas()._canvas),this.index<e.getChildren().length-1?e.content.insertBefore(this.getCanvas()._canvas,e.getChildren()[this.index+1].getCanvas()._canvas):e.content.appendChild(this.getCanvas()._canvas),this):this},moveDown:function(){if(t.Node.prototype.moveDown.call(this)){var e=this.getStage();if(e){var n=e.getChildren();e.content.removeChild(this.getCanvas()._canvas),e.content.insertBefore(this.getCanvas()._canvas,n[this.index+1].getCanvas()._canvas)}}return this},moveToBottom:function(){if(t.Node.prototype.moveToBottom.call(this)){var e=this.getStage();if(e){var n=e.getChildren();e.content.removeChild(this.getCanvas()._canvas),e.content.insertBefore(this.getCanvas()._canvas,n[1].getCanvas()._canvas)}}return this},getLayer:function(){return this},remove:function(){var e=this.getCanvas()._canvas;return t.Node.prototype.remove.call(this),e&&e.parentNode&&t.Util._isInDocument(e)&&e.parentNode.removeChild(e),this},getStage:function(){return this.parent},setSize:function(t,e){return this.canvas.setSize(t,e),this},getWidth:function(){if(this.parent)return this.parent.getWidth()},setWidth:function(){t.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.')},getHeight:function(){if(this.parent)return this.parent.getHeight()},setHeight:function(){t.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.')},_applyTransform:function(t,e,n){var r=t.getAbsoluteTransform(n).getMatrix();e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}}),t.Util.extend(t.BaseLayer,t.Container),t.Factory.addGetterSetter(t.BaseLayer,\"clearBeforeDraw\",!0),t.Collection.mapMethods(t.BaseLayer)}(Konva),function(){\"use strict\";var t=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],e=t.length;Konva.Layer=function(t){this.____init(t)},Konva.Util.addMethods(Konva.Layer,{____init:function(t){this.nodeType=\"Layer\",this.canvas=new Konva.SceneCanvas,this.hitCanvas=new Konva.HitCanvas({pixelRatio:1}),Konva.BaseLayer.call(this,t)},_setCanvasSize:function(t,e){this.canvas.setSize(t,e),this.hitCanvas.setSize(t,e)},_validateAdd:function(t){var e=t.getType();\"Group\"!==e&&\"Shape\"!==e&&Konva.Util.throw(\"You may only add groups and shapes to a layer.\")},getIntersection:function(n,r){var i,o,a,s;if(!this.hitGraphEnabled()||!this.isVisible())return null;for(var u=1,h=!1;;){for(o=0;o<e;o++){if(a=t[o],(s=(i=this._getIntersection({x:n.x+a.x*u,y:n.y+a.y*u})).shape)&&r)return s.findAncestor(r,!0);if(s)return s;if(h=!!i.antialiased,!i.antialiased)break}if(!h)return null;u+=1}},_getImageData:function(t,e){var n=this.hitCanvas.width||1,r=this.hitCanvas.height||1,i=Math.round(e)*n+Math.round(t);return this._hitImageData||(this._hitImageData=this.hitCanvas.context.getImageData(0,0,n,r)),[this._hitImageData.data[4*i+0],this._hitImageData.data[4*i+1],this._hitImageData.data[4*i+2],this._hitImageData.data[4*i+3]]},_getIntersection:function(t){var e,n,r=this.hitCanvas.pixelRatio,i=this.hitCanvas.context.getImageData(Math.round(t.x*r),Math.round(t.y*r),1,1).data,o=i[3];return 255===o?(e=Konva.Util._rgbToHex(i[0],i[1],i[2]),(n=Konva.shapes[\"#\"+e])?{shape:n}:{antialiased:!0}):o>0?{antialiased:!0}:{}},drawScene:function(t,e){var n=this.getLayer(),r=t||n&&n.getCanvas();return this._fire(\"beforeDraw\",{node:this}),this.getClearBeforeDraw()&&r.getContext().clear(),Konva.Container.prototype.drawScene.call(this,r,e),this._fire(\"draw\",{node:this}),this},drawHit:function(t,e){var n=this.getLayer(),r=t||n&&n.hitCanvas;return n&&n.getClearBeforeDraw()&&n.getHitCanvas().getContext().clear(),Konva.Container.prototype.drawHit.call(this,r,e),this.imageData=null,this},clear:function(t){return Konva.BaseLayer.prototype.clear.call(this,t),this.getHitCanvas().getContext().clear(t),this.imageData=null,this},setVisible:function(t){return Konva.Node.prototype.setVisible.call(this,t),t?(this.getCanvas()._canvas.style.display=\"block\",this.hitCanvas._canvas.style.display=\"block\"):(this.getCanvas()._canvas.style.display=\"none\",this.hitCanvas._canvas.style.display=\"none\"),this},enableHitGraph:function(){return this.setHitGraphEnabled(!0),this},disableHitGraph:function(){return this.setHitGraphEnabled(!1),this},setSize:function(t,e){return Konva.BaseLayer.prototype.setSize.call(this,t,e),this.hitCanvas.setSize(t,e),this}}),Konva.Util.extend(Konva.Layer,Konva.BaseLayer),Konva.Factory.addGetterSetter(Konva.Layer,\"hitGraphEnabled\",!0),Konva.Collection.mapMethods(Konva.Layer)}(),function(){\"use strict\";Konva.FastLayer=function(t){this.____init(t)},Konva.Util.addMethods(Konva.FastLayer,{____init:function(t){this.nodeType=\"Layer\",this.canvas=new Konva.SceneCanvas,Konva.BaseLayer.call(this,t)},_validateAdd:function(t){\"Shape\"!==t.getType()&&Konva.Util.throw(\"You may only add shapes to a fast layer.\")},_setCanvasSize:function(t,e){this.canvas.setSize(t,e)},hitGraphEnabled:function(){return!1},getIntersection:function(){return null},drawScene:function(t){var e=this.getLayer(),n=t||e&&e.getCanvas();return this.getClearBeforeDraw()&&n.getContext().clear(),Konva.Container.prototype.drawScene.call(this,n),this},draw:function(){return this.drawScene(),this},setVisible:function(t){return Konva.Node.prototype.setVisible.call(this,t),this.getCanvas()._canvas.style.display=t?\"block\":\"none\",this}}),Konva.Util.extend(Konva.FastLayer,Konva.BaseLayer),Konva.Collection.mapMethods(Konva.FastLayer)}(),function(){\"use strict\";Konva.Group=function(t){this.___init(t)},Konva.Util.addMethods(Konva.Group,{___init:function(t){this.nodeType=\"Group\",Konva.Container.call(this,t)},_validateAdd:function(t){var e=t.getType();\"Group\"!==e&&\"Shape\"!==e&&Konva.Util.throw(\"You may only add groups and shapes to groups.\")}}),Konva.Util.extend(Konva.Group,Konva.Container),Konva.Collection.mapMethods(Konva.Group)}(),function(t){\"use strict\";var e=t.global.performance&&t.global.performance.now?function(){return t.global.performance.now()}:function(){return(new Date).getTime()};function n(t){setTimeout(t,1e3/60)}var r=t.global.requestAnimationFrame||t.global.webkitRequestAnimationFrame||t.global.mozRequestAnimationFrame||t.global.oRequestAnimationFrame||t.global.msRequestAnimationFrame||n;function i(){return r.apply(t.global,arguments)}t.Animation=function(n,r){var i=t.Animation;this.func=n,this.setLayers(r),this.id=i.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:e()}},t.Animation.prototype={setLayers:function(t){var e=[];return e=t?t.length>0?t:[t]:[],this.layers=e,this},getLayers:function(){return this.layers},addLayer:function(t){var e,n=this.layers,r=n.length;for(e=0;e<r;e++)if(n[e]._id===t._id)return!1;return this.layers.push(t),!0},isRunning:function(){var e,n=t.Animation.animations,r=n.length;for(e=0;e<r;e++)if(n[e].id===this.id)return!0;return!1},start:function(){var n=t.Animation;return this.stop(),this.frame.timeDiff=0,this.frame.lastTime=e(),n._addAnimation(this),this},stop:function(){return t.Animation._removeAnimation(this),this},_updateFrameObject:function(t){this.frame.timeDiff=t-this.frame.lastTime,this.frame.lastTime=t,this.frame.time+=this.frame.timeDiff,this.frame.frameRate=1e3/this.frame.timeDiff}},t.Animation.animations=[],t.Animation.animIdCounter=0,t.Animation.animRunning=!1,t.Animation._addAnimation=function(t){this.animations.push(t),this._handleAnimation()},t.Animation._removeAnimation=function(t){var e,n=t.id,r=this.animations,i=r.length;for(e=0;e<i;e++)if(r[e].id===n){this.animations.splice(e,1);break}},t.Animation._runFrames=function(){var t,n,r,i,o,a,s,u,h={},c=this.animations;for(i=0;i<c.length;i++)if(n=(t=c[i]).layers,r=t.func,t._updateFrameObject(e()),a=n.length,!r||!1!==r.call(t,t.frame))for(o=0;o<a;o++)void 0!==(s=n[o])._id&&(h[s._id]=s);for(u in h)h.hasOwnProperty(u)&&h[u].draw()},t.Animation._animationLoop=function(){var e=t.Animation;e.animations.length?(e._runFrames(),i(e._animationLoop)):e.animRunning=!1},t.Animation._handleAnimation=function(){this.animRunning||(this.animRunning=!0,i(this._animationLoop))},t.BaseLayer.prototype.batchDraw=function(){var e=this,n=t.Animation;return this.batchAnim||(this.batchAnim=new n(function(){e.batchAnim.stop()},this)),this.batchAnim.isRunning()||this.batchAnim.start(),this},t.Stage.prototype.batchDraw=function(){return this.getChildren().each(function(t){t.batchDraw()}),this}}(Konva),function(){\"use strict\";var t={node:1,duration:1,easing:1,onFinish:1,yoyo:1},e=0,n=[\"fill\",\"stroke\",\"shadowColor\"],r=function(t,e,n,r,i,o,a){this.prop=t,this.propFunc=e,this.begin=r,this._pos=r,this.duration=o,this._change=0,this.prevPos=0,this.yoyo=a,this._time=0,this._position=0,this._startTime=0,this._finish=0,this.func=n,this._change=i-this.begin,this.pause()};r.prototype={fire:function(t){var e=this[t];e&&e()},setTime:function(t){t>this.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():t<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())},getTime:function(){return this._time},setPosition:function(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t},getPosition:function(t){return void 0===t&&(t=this._time),this.func(t,this.begin,this._change,this.duration)},play:function(){this.state=2,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire(\"onPlay\")},reverse:function(){this.state=3,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire(\"onReverse\")},seek:function(t){this.pause(),this._time=t,this.update(),this.fire(\"onSeek\")},reset:function(){this.pause(),this._time=0,this.update(),this.fire(\"onReset\")},finish:function(){this.pause(),this._time=this.duration,this.update(),this.fire(\"onFinish\")},update:function(){this.setPosition(this.getPosition(this._time))},onEnterFrame:function(){var t=this.getTimer()-this._startTime;2===this.state?this.setTime(t):3===this.state&&this.setTime(this.duration-t)},pause:function(){this.state=1,this.fire(\"onPause\")},getTimer:function(){return(new Date).getTime()}},Konva.Tween=function(n){var i,o,a=this,s=n.node,u=s._id,h=n.easing||Konva.Easings.Linear,c=!!n.yoyo;i=void 0===n.duration?1:0===n.duration?.001:n.duration,this.node=s,this._id=e++;var l=s.getLayer()||(s instanceof Konva.Stage?s.getLayers():null);for(o in l||Konva.Util.error(\"Tween constructor have `node` that is not in a layer. Please add node into layer first.\"),this.anim=new Konva.Animation(function(){a.tween.onEnterFrame()},l),this.tween=new r(o,function(t){a._tweenFunc(t)},h,0,1,1e3*i,c),this._addListeners(),Konva.Tween.attrs[u]||(Konva.Tween.attrs[u]={}),Konva.Tween.attrs[u][this._id]||(Konva.Tween.attrs[u][this._id]={}),Konva.Tween.tweens[u]||(Konva.Tween.tweens[u]={}),n)void 0===t[o]&&this._addAttr(o,n[o]);this.reset(),this.onFinish=n.onFinish,this.onReset=n.onReset},Konva.Tween.attrs={},Konva.Tween.tweens={},Konva.Tween.prototype={_addAttr:function(t,e){var r,i,o,a,s,u,h,c=this.node,l=c._id;if((o=Konva.Tween.tweens[l][t])&&delete Konva.Tween.attrs[l][o][t],r=c.getAttr(t),Konva.Util._isArray(e))for(i=[],s=Math.max(e.length,r.length),\"points\"===t&&e.length!==r.length&&(e.length>r.length?(h=r,r=Konva.Util._prepareArrayForTween(r,e,c.closed())):(u=e,e=Konva.Util._prepareArrayForTween(e,r,c.closed()))),a=0;a<s;a++)i.push(e[a]-r[a]);else if(-1!==n.indexOf(t)){r=Konva.Util.colorToRGBA(r);var f=Konva.Util.colorToRGBA(e);i={r:f.r-r.r,g:f.g-r.g,b:f.b-r.b,a:f.a-r.a}}else i=e-r;Konva.Tween.attrs[l][this._id][t]={start:r,diff:i,end:e,trueEnd:u,trueStart:h},Konva.Tween.tweens[l][t]=this._id},_tweenFunc:function(t){var e,r,i,o,a,s,u,h,c=this.node,l=Konva.Tween.attrs[c._id][this._id];for(e in l){if(i=(r=l[e]).start,o=r.diff,h=r.end,Konva.Util._isArray(i))for(a=[],u=Math.max(i.length,h.length),s=0;s<u;s++)a.push((i[s]||0)+o[s]*t);else a=-1!==n.indexOf(e)?\"rgba(\"+Math.round(i.r+o.r*t)+\",\"+Math.round(i.g+o.g*t)+\",\"+Math.round(i.b+o.b*t)+\",\"+(i.a+o.a*t)+\")\":i+o*t;c.setAttr(e,a)}},_addListeners:function(){var t=this;this.tween.onPlay=function(){t.anim.start()},this.tween.onReverse=function(){t.anim.start()},this.tween.onPause=function(){t.anim.stop()},this.tween.onFinish=function(){var e=t.node,n=Konva.Tween.attrs[e._id][t._id];n.points&&n.points.trueEnd&&e.points(n.points.trueEnd),t.onFinish&&t.onFinish.call(t)},this.tween.onReset=function(){var e=t.node,n=Konva.Tween.attrs[e._id][t._id];n.points&&n.points.trueStart&&e.points(n.points.trueStart),t.onReset&&t.onReset()}},play:function(){return this.tween.play(),this},reverse:function(){return this.tween.reverse(),this},reset:function(){return this.tween.reset(),this},seek:function(t){return this.tween.seek(1e3*t),this},pause:function(){return this.tween.pause(),this},finish:function(){return this.tween.finish(),this},destroy:function(){var t,e=this.node._id,n=this._id,r=Konva.Tween.tweens[e];for(t in this.pause(),r)delete Konva.Tween.tweens[e][t];delete Konva.Tween.attrs[e][n]}},Konva.Node.prototype.to=function(t){var e=t.onFinish;t.node=this,t.onFinish=function(){this.destroy(),e&&e()},new Konva.Tween(t).play()},Konva.Easings={BackEaseIn:function(t,e,n,r){var i=1.70158;return n*(t/=r)*t*((i+1)*t-i)+e},BackEaseOut:function(t,e,n,r){var i=1.70158;return n*((t=t/r-1)*t*((i+1)*t+i)+1)+e},BackEaseInOut:function(t,e,n,r){var i=1.70158;return(t/=r/2)<1?n/2*(t*t*((1+(i*=1.525))*t-i))+e:n/2*((t-=2)*t*((1+(i*=1.525))*t+i)+2)+e},ElasticEaseIn:function(t,e,n,r,i,o){var a=0;return 0===t?e:1==(t/=r)?e+n:(o||(o=.3*r),!i||i<Math.abs(n)?(i=n,a=o/4):a=o/(2*Math.PI)*Math.asin(n/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)+e)},ElasticEaseOut:function(t,e,n,r,i,o){var a=0;return 0===t?e:1==(t/=r)?e+n:(o||(o=.3*r),!i||i<Math.abs(n)?(i=n,a=o/4):a=o/(2*Math.PI)*Math.asin(n/i),i*Math.pow(2,-10*t)*Math.sin((t*r-a)*(2*Math.PI)/o)+n+e)},ElasticEaseInOut:function(t,e,n,r,i,o){var a=0;return 0===t?e:2==(t/=r/2)?e+n:(o||(o=r*(.3*1.5)),!i||i<Math.abs(n)?(i=n,a=o/4):a=o/(2*Math.PI)*Math.asin(n/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*-.5+e:i*Math.pow(2,-10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*.5+n+e)},BounceEaseOut:function(t,e,n,r){return(t/=r)<1/2.75?n*(7.5625*t*t)+e:t<2/2.75?n*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?n*(7.5625*(t-=2.25/2.75)*t+.9375)+e:n*(7.5625*(t-=2.625/2.75)*t+.984375)+e},BounceEaseIn:function(t,e,n,r){return n-Konva.Easings.BounceEaseOut(r-t,0,n,r)+e},BounceEaseInOut:function(t,e,n,r){return t<r/2?.5*Konva.Easings.BounceEaseIn(2*t,0,n,r)+e:.5*Konva.Easings.BounceEaseOut(2*t-r,0,n,r)+.5*n+e},EaseIn:function(t,e,n,r){return n*(t/=r)*t+e},EaseOut:function(t,e,n,r){return-n*(t/=r)*(t-2)+e},EaseInOut:function(t,e,n,r){return(t/=r/2)<1?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e},StrongEaseIn:function(t,e,n,r){return n*(t/=r)*t*t*t*t+e},StrongEaseOut:function(t,e,n,r){return n*((t=t/r-1)*t*t*t*t+1)+e},StrongEaseInOut:function(t,e,n,r){return(t/=r/2)<1?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e},Linear:function(t,e,n,r){return n*t/r+e}}}(),function(){\"use strict\";Konva.DD={anim:new Konva.Animation(function(){var t=this.dirty;return this.dirty=!1,t}),isDragging:!1,justDragged:!1,offset:{x:0,y:0},node:null,_drag:function(t){var e=Konva.DD,n=e.node;if(n){if(!e.isDragging){var r=n.getStage().getPointerPosition();r||(n.getStage()._setPointerPosition(t),r=n.getStage().getPointerPosition());var i=n.dragDistance();if(Math.max(Math.abs(r.x-e.startPointerPos.x),Math.abs(r.y-e.startPointerPos.y))<i)return}n.getStage()._setPointerPosition(t),n._setDragPosition(t),e.isDragging||(e.isDragging=!0,n.fire(\"dragstart\",{type:\"dragstart\",target:n,evt:t},!0)),n.fire(\"dragmove\",{type:\"dragmove\",target:n,evt:t},!0)}},_endDragBefore:function(t){var e,n=Konva.DD,r=n.node;r&&(e=r.getLayer(),n.anim.stop(),n.isDragging&&(n.isDragging=!1,n.justDragged=!0,Konva.listenClickTap=!1,t&&(t.dragEndNode=r)),delete n.node,(r.getLayer()||e||r instanceof Konva.Stage)&&(e||r).draw())},_endDragAfter:function(t){var e=(t=t||{}).dragEndNode;t&&e&&e.fire(\"dragend\",{type:\"dragend\",target:e,evt:t},!0)}},Konva.Node.prototype.startDrag=function(){var t=Konva.DD,e=this.getStage(),n=this.getLayer(),r=e.getPointerPosition(),i=this.getAbsolutePosition();r&&(t.node&&t.node.stopDrag(),t.node=this,t.startPointerPos=r,t.offset.x=r.x-i.x,t.offset.y=r.y-i.y,t.anim.setLayers(n||this.getLayers()),t.anim.start(),this._setDragPosition())},Konva.Node.prototype._setDragPosition=function(t){var e=Konva.DD,n=this.getStage().getPointerPosition(),r=this.getDragBoundFunc();if(n){var i={x:n.x-e.offset.x,y:n.y-e.offset.y};void 0!==r&&(i=r.call(this,i,t)),this.setAbsolutePosition(i),this._lastPos&&this._lastPos.x===i.x&&this._lastPos.y===i.y||(e.anim.dirty=!0),this._lastPos=i}},Konva.Node.prototype.stopDrag=function(){var t=Konva.DD,e={};t._endDragBefore(e),t._endDragAfter(e)},Konva.Node.prototype.setDraggable=function(t){this._setAttr(\"draggable\",t),this._dragChange()};var t=Konva.Node.prototype.remove;Konva.Node.prototype.__originalRemove=t,Konva.Node.prototype.remove=function(){var e=Konva.DD;e.node&&e.node._id===this._id&&this.stopDrag(),t.call(this)},Konva.Node.prototype.isDragging=function(){var t=Konva.DD;return!(!t.node||t.node._id!==this._id||!t.isDragging)},Konva.Node.prototype._listenDrag=function(){var t=this;this._dragCleanup(),\"Stage\"===this.getClassName()?this.on(\"contentMousedown.konva contentTouchstart.konva\",function(e){Konva.DD.node||t.startDrag(e)}):this.on(\"mousedown.konva touchstart.konva\",function(e){1!==e.evt.button&&2!==e.evt.button&&(Konva.DD.node||t.startDrag(e))})},Konva.Node.prototype._dragChange=function(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage(),e=Konva.DD;t&&e.node&&e.node._id===this._id&&e.node.stopDrag()}},Konva.Node.prototype._dragCleanup=function(){\"Stage\"===this.getClassName()?(this.off(\"contentMousedown.konva\"),this.off(\"contentTouchstart.konva\")):(this.off(\"mousedown.konva\"),this.off(\"touchstart.konva\"))},Konva.Factory.addGetterSetter(Konva.Node,\"dragBoundFunc\"),Konva.Factory.addGetter(Konva.Node,\"draggable\",!1),Konva.Factory.addOverloadedGetterSetter(Konva.Node,\"draggable\"),Konva.isBrowser&&(window.addEventListener(\"mouseup\",Konva.DD._endDragBefore,!0),window.addEventListener(\"touchend\",Konva.DD._endDragBefore,!0),window.addEventListener(\"mousemove\",Konva.DD._drag),window.addEventListener(\"touchmove\",Konva.DD._drag),window.addEventListener(\"mouseup\",Konva.DD._endDragAfter,!1),window.addEventListener(\"touchend\",Konva.DD._endDragAfter,!1))}(),function(){\"use strict\";Konva.Rect=function(t){this.___init(t)},Konva.Rect.prototype={___init:function(t){Konva.Shape.call(this,t),this.className=\"Rect\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getCornerRadius(),n=this.getWidth(),r=this.getHeight();t.beginPath(),e?(e=Math.min(e,n/2,r/2),t.moveTo(e,0),t.lineTo(n-e,0),t.arc(n-e,e,e,3*Math.PI/2,0,!1),t.lineTo(n,r-e),t.arc(n-e,r-e,e,0,Math.PI/2,!1),t.lineTo(e,r),t.arc(e,r-e,e,Math.PI/2,Math.PI,!1),t.lineTo(0,e),t.arc(e,e,e,Math.PI,3*Math.PI/2,!1)):t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}},Konva.Util.extend(Konva.Rect,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Rect,\"cornerRadius\",0),Konva.Collection.mapMethods(Konva.Rect)}(),function(t){\"use strict\";var e=2*Math.PI-1e-4;t.Circle=function(t){this.___init(t)},t.Circle.prototype={_centroid:!0,___init:function(e){t.Shape.call(this,e),this.className=\"Circle\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getRadius(),0,e,!1),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(e){t.Node.prototype.setWidth.call(this,e),this.radius()!==e/2&&this.setRadius(e/2)},setHeight:function(e){t.Node.prototype.setHeight.call(this,e),this.radius()!==e/2&&this.setRadius(e/2)}},t.Util.extend(t.Circle,t.Shape),t.Factory.addGetterSetter(t.Circle,\"radius\",0),t.Factory.addOverloadedGetterSetter(t.Circle,\"radius\"),t.Collection.mapMethods(t.Circle)}(Konva),function(){\"use strict\";var t=2*Math.PI-1e-4;Konva.Ellipse=function(t){this.___init(t)},Konva.Ellipse.prototype={_centroid:!0,___init:function(t){Konva.Shape.call(this,t),this.className=\"Ellipse\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){var n=this.getRadiusX(),r=this.getRadiusY();e.beginPath(),e.save(),n!==r&&e.scale(1,r/n),e.arc(0,0,n,0,t,!1),e.restore(),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadiusX()},getHeight:function(){return 2*this.getRadiusY()},setWidth:function(t){Konva.Node.prototype.setWidth.call(this,t),this.setRadius({x:t/2})},setHeight:function(t){Konva.Node.prototype.setHeight.call(this,t),this.setRadius({y:t/2})}},Konva.Util.extend(Konva.Ellipse,Konva.Shape),Konva.Factory.addComponentsGetterSetter(Konva.Ellipse,\"radius\",[\"x\",\"y\"]),Konva.Factory.addGetterSetter(Konva.Ellipse,\"radiusX\",0),Konva.Factory.addGetterSetter(Konva.Ellipse,\"radiusY\",0),Konva.Collection.mapMethods(Konva.Ellipse)}(),function(){\"use strict\";var t=2*Math.PI-1e-4;Konva.Ring=function(t){this.___init(t)},Konva.Ring.prototype={_centroid:!0,___init:function(t){Konva.Shape.call(this,t),this.className=\"Ring\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){e.beginPath(),e.arc(0,0,this.getInnerRadius(),0,t,!1),e.moveTo(this.getOuterRadius(),0),e.arc(0,0,this.getOuterRadius(),t,0,!0),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(t){Konva.Node.prototype.setWidth.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setHeight:function(t){Konva.Node.prototype.setHeight.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setOuterRadius:function(t){this._setAttr(\"outerRadius\",t),this.setWidth(2*t),this.setHeight(2*t)}},Konva.Util.extend(Konva.Ring,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Ring,\"innerRadius\",0),Konva.Factory.addGetter(Konva.Ring,\"outerRadius\",0),Konva.Factory.addOverloadedGetterSetter(Konva.Ring,\"outerRadius\"),Konva.Collection.mapMethods(Konva.Ring)}(),function(){\"use strict\";Konva.Wedge=function(t){this.___init(t)},Konva.Wedge.prototype={_centroid:!0,___init:function(t){Konva.Shape.call(this,t),this.className=\"Wedge\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getRadius(),0,Konva.getAngle(this.getAngle()),this.getClockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(t){Konva.Node.prototype.setWidth.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setHeight:function(t){Konva.Node.prototype.setHeight.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)}},Konva.Util.extend(Konva.Wedge,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Wedge,\"radius\",0),Konva.Factory.addGetterSetter(Konva.Wedge,\"angle\",0),Konva.Factory.addGetterSetter(Konva.Wedge,\"clockwise\",!1),Konva.Factory.backCompat(Konva.Wedge,{angleDeg:\"angle\",getAngleDeg:\"getAngle\",setAngleDeg:\"setAngle\"}),Konva.Collection.mapMethods(Konva.Wedge)}(),function(t){\"use strict\";t.Arc=function(t){this.___init(t)},t.Arc.prototype={_centroid:!0,___init:function(e){t.Shape.call(this,e),this.className=\"Arc\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){var n=t.getAngle(this.angle()),r=this.clockwise();e.beginPath(),e.arc(0,0,this.getOuterRadius(),0,n,r),e.arc(0,0,this.getInnerRadius(),n,0,!r),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(e){t.Node.prototype.setWidth.call(this,e),this.getOuterRadius()!==e/2&&this.setOuterRadius(e/2)},setHeight:function(e){t.Node.prototype.setHeight.call(this,e),this.getOuterRadius()!==e/2&&this.setOuterRadius(e/2)}},t.Util.extend(t.Arc,t.Shape),t.Factory.addGetterSetter(t.Arc,\"innerRadius\",0),t.Factory.addGetterSetter(t.Arc,\"outerRadius\",0),t.Factory.addGetterSetter(t.Arc,\"angle\",0),t.Factory.addGetterSetter(t.Arc,\"clockwise\",!1),t.Collection.mapMethods(t.Arc)}(Konva),function(){\"use strict\";Konva.Image=function(t){this.___init(t)},Konva.Image.prototype={___init:function(t){Konva.Shape.call(this,t),this.className=\"Image\",this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()&&this.getStage()},_sceneFunc:function(t){var e,n,r,i=this.getWidth(),o=this.getHeight(),a=this.getImage();a&&(e=this.getCropWidth(),n=this.getCropHeight(),r=e&&n?[a,this.getCropX(),this.getCropY(),e,n,0,0,i,o]:[a,0,0,i,o]),(this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,i,o),t.closePath(),t.fillStrokeShape(this)),a&&t.drawImage.apply(t,r)},_hitFunc:function(t){var e=this.getWidth(),n=this.getHeight();t.beginPath(),t.rect(0,0,e,n),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){var t=this.getImage();return this.attrs.width||(t?t.width:0)},getHeight:function(){var t=this.getImage();return this.attrs.height||(t?t.height:0)}},Konva.Util.extend(Konva.Image,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Image,\"image\"),Konva.Factory.addComponentsGetterSetter(Konva.Image,\"crop\",[\"x\",\"y\",\"width\",\"height\"]),Konva.Factory.addGetterSetter(Konva.Image,\"cropX\",0),Konva.Factory.addGetterSetter(Konva.Image,\"cropY\",0),Konva.Factory.addGetterSetter(Konva.Image,\"cropWidth\",0),Konva.Factory.addGetterSetter(Konva.Image,\"cropHeight\",0),Konva.Collection.mapMethods(Konva.Image),Konva.Image.fromURL=function(t,e){var n=new Image;n.onload=function(){var t=new Konva.Image({image:n});e(t)},n.crossOrigin=\"Anonymous\",n.src=t}}(),function(){\"use strict\";var t,e=\"2d\",n=[\"fontFamily\",\"fontSize\",\"fontStyle\",\"fontVariant\",\"padding\",\"align\",\"lineHeight\",\"text\",\"width\",\"height\",\"wrap\",\"ellipsis\",\"letterSpacing\"],r=n.length;function i(){return t||(t=Konva.Util.createCanvasElement().getContext(e))}function o(t){t.fillText(this.partialText,0,0)}function a(t){t.strokeText(this.partialText,0,0)}Konva.Text=function(t){this.___init(t)},Konva.Text.prototype={___init:function(t){(t=t||{}).fillLinearGradientColorStops||t.fillRadialGradientColorStops||(t.fill=t.fill||\"black\"),Konva.Shape.call(this,t),this._fillFunc=o,this._strokeFunc=a,this.className=\"Text\";for(var e=0;e<r;e++)this.on(n[e]+\"Change.konva\",this._setTextData);this._setTextData(),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e,n=this.getPadding(),r=this.getTextHeight(),i=this.getLineHeight()*r,o=this.textArr,a=o.length,s=this.getAlign(),u=this.getWidth(),h=this.getLetterSpacing(),c=this.textDecoration(),l=this.fill(),f=this.fontSize();for(t.setAttr(\"font\",this._getContextFont()),t.setAttr(\"textBaseline\",\"middle\"),t.setAttr(\"textAlign\",\"left\"),n?(t.translate(n,0),t.translate(0,n+i/2)):t.translate(0,i/2),e=0;e<a;e++){var d,g,p,v=o[e],y=v.text,m=v.width,_=e!==a-1;if(t.save(),\"right\"===s?t.translate(u-m-2*n,0):\"center\"===s&&t.translate((u-m-2*n)/2,0),-1!==c.indexOf(\"underline\")&&(t.save(),t.beginPath(),t.moveTo(0,Math.round(i/2)),g=0===(d=y.split(\" \").length-1),p=\"justify\"===s&&_&&!g?u-2*n:m,t.lineTo(Math.round(p),Math.round(i/2)),t.lineWidth=f/15,t.strokeStyle=l,t.stroke(),t.restore()),-1!==c.indexOf(\"line-through\")&&(t.save(),t.beginPath(),t.moveTo(0,0),g=0===(d=y.split(\" \").length-1),p=\"justify\"===s&&_&&!g?u-2*n:m,t.lineTo(Math.round(p),0),t.lineWidth=f/15,t.strokeStyle=l,t.stroke(),t.restore()),0!==h||\"justify\"===s){d=y.split(\" \").length-1;for(var b=0;b<y.length;b++){var w=y[b];\" \"===w&&e!==a-1&&\"justify\"===s&&t.translate(Math.floor((u-2*n-m)/d),0),this.partialText=w,t.fillStrokeShape(this),t.translate(Math.round(this._getTextSize(w).width)+h,0)}}else this.partialText=y,t.fillStrokeShape(this);t.restore(),a>1&&t.translate(0,i)}},_hitFunc:function(t){var e=this.getWidth(),n=this.getHeight();t.beginPath(),t.rect(0,0,e,n),t.closePath(),t.fillStrokeShape(this)},setText:function(t){var e=Konva.Util._isString(t)?t:(t||\"\").toString();return this._setAttr(\"text\",e),this},getWidth:function(){return\"auto\"===this.attrs.width||void 0===this.attrs.width?this.getTextWidth()+2*this.getPadding():this.attrs.width},getHeight:function(){return\"auto\"===this.attrs.height||void 0===this.attrs.height?this.getTextHeight()*this.textArr.length*this.getLineHeight()+2*this.getPadding():this.attrs.height},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},_getTextSize:function(t){var e,n=i(),r=this.getFontSize();return n.save(),n.font=this._getContextFont(),e=n.measureText(t),n.restore(),{width:e.width,height:parseInt(r,10)}},_getContextFont:function(){return Konva.UA.isIE?this.getFontStyle()+\" \"+this.getFontSize()+\"px \"+this.getFontFamily():this.getFontStyle()+\" \"+this.getFontVariant()+\" \"+this.getFontSize()+\"px \"+this.getFontFamily()},_addTextLine:function(t){\"justify\"===this.align()&&(t=t.trim());var e=this._getTextWidth(t);return this.textArr.push({text:t,width:e})},_getTextWidth:function(t){var e=this.getLetterSpacing(),n=t.length;return i().measureText(t).width+(n?e*(n-1):0)},_setTextData:function(){var t=this.getText().split(\"\\n\"),e=+this.getFontSize(),n=0,r=this.getLineHeight()*e,o=this.attrs.width,a=this.attrs.height,s=\"auto\"!==o,u=\"auto\"!==a,h=this.getPadding(),c=o-2*h,l=a-2*h,f=0,d=this.getWrap(),g=\"none\"!==d,p=\"char\"!==d&&g,v=this.getEllipsis()&&!g;this.textArr=[],i().font=this._getContextFont();for(var y=0,m=t.length;y<m;++y){var _=t[y],b=v?this._getTextWidth(\"…\"):0,w=this._getTextWidth(_);if(s&&w>c)for(;_.length>0;){for(var S=0,x=_.length,M=\"\",P=0;S<x;){var T=S+x>>>1,k=_.slice(0,T+1),C=this._getTextWidth(k)+b;C<=c?(S=T+1,M=k+(v?\"…\":\"\"),P=C):x=T}if(!M)break;if(p){var K,A=_[M.length];(K=(\" \"===A||\"-\"===A)&&P<=c?M.length:Math.max(M.lastIndexOf(\" \"),M.lastIndexOf(\"-\"))+1)>0&&(S=K,M=M.slice(0,S),P=this._getTextWidth(M))}if(this._addTextLine(M),n=Math.max(n,P),f+=r,!g||u&&f+r>l)break;if((_=_.slice(S)).length>0&&(w=this._getTextWidth(_))<=c){this._addTextLine(_),f+=r,n=Math.max(n,w);break}}else this._addTextLine(_),f+=r,n=Math.max(n,w);if(u&&f+r>l)break}this.textHeight=e,this.textWidth=n}},Konva.Util.extend(Konva.Text,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Text,\"fontFamily\",\"Arial\"),Konva.Factory.addGetterSetter(Konva.Text,\"fontSize\",12),Konva.Factory.addGetterSetter(Konva.Text,\"fontStyle\",\"normal\"),Konva.Factory.addGetterSetter(Konva.Text,\"fontVariant\",\"normal\"),Konva.Factory.addGetterSetter(Konva.Text,\"padding\",0),Konva.Factory.addGetterSetter(Konva.Text,\"align\",\"left\"),Konva.Factory.addGetterSetter(Konva.Text,\"lineHeight\",1),Konva.Factory.addGetterSetter(Konva.Text,\"wrap\",\"word\"),Konva.Factory.addGetterSetter(Konva.Text,\"ellipsis\",!1),Konva.Factory.addGetterSetter(Konva.Text,\"letterSpacing\",0),Konva.Factory.addGetter(Konva.Text,\"text\",\"\"),Konva.Factory.addOverloadedGetterSetter(Konva.Text,\"text\"),Konva.Factory.addGetterSetter(Konva.Text,\"textDecoration\",\"\"),Konva.Collection.mapMethods(Konva.Text)}(),function(){\"use strict\";Konva.Line=function(t){this.___init(t)},Konva.Line.prototype={___init:function(t){Konva.Shape.call(this,t),this.className=\"Line\",this.on(\"pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva\",function(){this._clearCache(\"tensionPoints\")}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e,n,r,i=this.getPoints(),o=i.length,a=this.getTension(),s=this.getClosed(),u=this.getBezier();if(o){if(t.beginPath(),t.moveTo(i[0],i[1]),0!==a&&o>4){for(n=(e=this.getTensionPoints()).length,r=s?0:4,s||t.quadraticCurveTo(e[0],e[1],e[2],e[3]);r<n-2;)t.bezierCurveTo(e[r++],e[r++],e[r++],e[r++],e[r++],e[r++]);s||t.quadraticCurveTo(e[n-2],e[n-1],i[o-2],i[o-1])}else if(u)for(r=2;r<o;)t.bezierCurveTo(i[r++],i[r++],i[r++],i[r++],i[r++],i[r++]);else for(r=2;r<o;r+=2)t.lineTo(i[r],i[r+1]);s?(t.closePath(),t.fillStrokeShape(this)):t.strokeShape(this)}},getTensionPoints:function(){return this._getCache(\"tensionPoints\",this._getTensionPoints)},_getTensionPoints:function(){return this.getClosed()?this._getTensionPointsClosed():Konva.Util._expandPoints(this.getPoints(),this.getTension())},_getTensionPointsClosed:function(){var t=this.getPoints(),e=t.length,n=this.getTension(),r=Konva.Util,i=r._getControlPoints(t[e-2],t[e-1],t[0],t[1],t[2],t[3],n),o=r._getControlPoints(t[e-4],t[e-3],t[e-2],t[e-1],t[0],t[1],n),a=Konva.Util._expandPoints(t,n);return[i[2],i[3]].concat(a).concat([o[0],o[1],t[e-2],t[e-1],o[2],o[3],i[0],i[1],t[0],t[1]])},getWidth:function(){return this.getSelfRect().width},getHeight:function(){return this.getSelfRect().height},getSelfRect:function(){for(var t,e,n,r=(t=0!==this.getTension()?this._getTensionPoints():this.getPoints())[0],i=t[0],o=t[1],a=t[1],s=0;s<t.length/2;s++)e=t[2*s],n=t[2*s+1],r=Math.min(r,e),i=Math.max(i,e),o=Math.min(o,n),a=Math.max(a,n);return{x:Math.round(r),y:Math.round(o),width:Math.round(i-r),height:Math.round(a-o)}}},Konva.Util.extend(Konva.Line,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Line,\"closed\",!1),Konva.Factory.addGetterSetter(Konva.Line,\"bezier\",!1),Konva.Factory.addGetterSetter(Konva.Line,\"tension\",0),Konva.Factory.addGetterSetter(Konva.Line,\"points\",[]),Konva.Collection.mapMethods(Konva.Line)}(),function(){\"use strict\";Konva.Sprite=function(t){this.___init(t)},Konva.Sprite.prototype={___init:function(t){Konva.Shape.call(this,t),this.className=\"Sprite\",this._updated=!0;var e=this;this.anim=new Konva.Animation(function(){var t=e._updated;return e._updated=!1,t}),this.on(\"animationChange.konva\",function(){this.frameIndex(0)}),this.on(\"frameIndexChange.konva\",function(){this._updated=!0}),this.on(\"frameRateChange.konva\",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())}),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e=this.getAnimation(),n=this.frameIndex(),r=4*n,i=this.getAnimations()[e],o=this.frameOffsets(),a=i[r+0],s=i[r+1],u=i[r+2],h=i[r+3],c=this.getImage();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,u,h),t.closePath(),t.fillStrokeShape(this)),c)if(o){var l=o[e],f=2*n;t.drawImage(c,a,s,u,h,l[f+0],l[f+1],u,h)}else t.drawImage(c,a,s,u,h,0,0,u,h)},_hitFunc:function(t){var e=this.getAnimation(),n=this.frameIndex(),r=4*n,i=this.getAnimations()[e],o=this.frameOffsets(),a=i[r+2],s=i[r+3];if(t.beginPath(),o){var u=o[e],h=2*n;t.rect(u[h+0],u[h+1],a,s)}else t.rect(0,0,a,s);t.closePath(),t.fillShape(this)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_setInterval:function(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.getFrameRate())},start:function(){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()},stop:function(){this.anim.stop(),clearInterval(this.interval)},isRunning:function(){return this.anim.isRunning()},_updateIndex:function(){var t=this.frameIndex(),e=this.getAnimation();t<this.getAnimations()[e].length/4-1?this.frameIndex(t+1):this.frameIndex(0)}},Konva.Util.extend(Konva.Sprite,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Sprite,\"animation\"),Konva.Factory.addGetterSetter(Konva.Sprite,\"animations\"),Konva.Factory.addGetterSetter(Konva.Sprite,\"frameOffsets\"),Konva.Factory.addGetterSetter(Konva.Sprite,\"image\"),Konva.Factory.addGetterSetter(Konva.Sprite,\"frameIndex\",0),Konva.Factory.addGetterSetter(Konva.Sprite,\"frameRate\",17),Konva.Factory.backCompat(Konva.Sprite,{index:\"frameIndex\",getIndex:\"getFrameIndex\",setIndex:\"setFrameIndex\"}),Konva.Collection.mapMethods(Konva.Sprite)}(),function(){\"use strict\";Konva.Path=function(t){this.___init(t)},Konva.Path.prototype={___init:function(t){this.dataArray=[];var e=this;Konva.Shape.call(this,t),this.className=\"Path\",this.dataArray=Konva.Path.parsePathData(this.getData()),this.on(\"dataChange.konva\",function(){e.dataArray=Konva.Path.parsePathData(this.getData())}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.dataArray;t.beginPath();for(var n=0;n<e.length;n++){var r=e[n].command,i=e[n].points;switch(r){case\"L\":t.lineTo(i[0],i[1]);break;case\"M\":t.moveTo(i[0],i[1]);break;case\"C\":t.bezierCurveTo(i[0],i[1],i[2],i[3],i[4],i[5]);break;case\"Q\":t.quadraticCurveTo(i[0],i[1],i[2],i[3]);break;case\"A\":var o=i[0],a=i[1],s=i[2],u=i[3],h=i[4],c=i[5],l=i[6],f=i[7],d=s>u?s:u,g=s>u?1:s/u,p=s>u?u/s:1;t.translate(o,a),t.rotate(l),t.scale(g,p),t.arc(0,0,d,h,h+c,1-f),t.scale(1/g,1/p),t.rotate(-l),t.translate(-o,-a);break;case\"z\":t.closePath()}}t.fillStrokeShape(this)},getSelfRect:function(){var t=[];this.dataArray.forEach(function(e){t=t.concat(e.points)});for(var e,n,r=t[0],i=t[0],o=t[1],a=t[1],s=0;s<t.length/2;s++)e=t[2*s],n=t[2*s+1],r=Math.min(r,e),i=Math.max(i,e),o=Math.min(o,n),a=Math.max(a,n);return{x:Math.round(r),y:Math.round(o),width:Math.round(i-r),height:Math.round(a-o)}}},Konva.Util.extend(Konva.Path,Konva.Shape),Konva.Path.getLineLength=function(t,e,n,r){return Math.sqrt((n-t)*(n-t)+(r-e)*(r-e))},Konva.Path.getPointOnLine=function(t,e,n,r,i,o,a){void 0===o&&(o=e),void 0===a&&(a=n);var s=(i-n)/(r-e+1e-8),u=Math.sqrt(t*t/(1+s*s));r<e&&(u*=-1);var h,c=s*u;if(r===e)h={x:o,y:a+c};else if((a-n)/(o-e+1e-8)===s)h={x:o+u,y:a+c};else{var l,f,d=this.getLineLength(e,n,r,i);if(d<1e-8)return;var g=(o-e)*(r-e)+(a-n)*(i-n);l=e+(g/=d*d)*(r-e),f=n+g*(i-n);var p=this.getLineLength(o,a,l,f),v=Math.sqrt(t*t-p*p);u=Math.sqrt(v*v/(1+s*s)),r<e&&(u*=-1),h={x:l+u,y:f+(c=s*u)}}return h},Konva.Path.getPointOnCubicBezier=function(t,e,n,r,i,o,a,s,u){function h(t){return t*t*t}function c(t){return 3*t*t*(1-t)}function l(t){return 3*t*(1-t)*(1-t)}function f(t){return(1-t)*(1-t)*(1-t)}return{x:s*h(t)+o*c(t)+r*l(t)+e*f(t),y:u*h(t)+a*c(t)+i*l(t)+n*f(t)}},Konva.Path.getPointOnQuadraticBezier=function(t,e,n,r,i,o,a){function s(t){return t*t}function u(t){return 2*t*(1-t)}function h(t){return(1-t)*(1-t)}return{x:o*s(t)+r*u(t)+e*h(t),y:a*s(t)+i*u(t)+n*h(t)}},Konva.Path.getPointOnEllipticalArc=function(t,e,n,r,i,o){var a=Math.cos(o),s=Math.sin(o),u=n*Math.cos(i),h=r*Math.sin(i);return{x:t+(u*a-h*s),y:e+(u*s+h*a)}},Konva.Path.parsePathData=function(t){if(!t)return[];var e=t,n=[\"m\",\"M\",\"l\",\"L\",\"v\",\"V\",\"h\",\"H\",\"z\",\"Z\",\"c\",\"C\",\"q\",\"Q\",\"t\",\"T\",\"s\",\"S\",\"a\",\"A\"];e=e.replace(new RegExp(\" \",\"g\"),\",\");for(var r=0;r<n.length;r++)e=e.replace(new RegExp(n[r],\"g\"),\"|\"+n[r]);var i,o=e.split(\"|\"),a=[],s=[],u=0,h=0,c=/([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;for(r=1;r<o.length;r++){var l=o[r],f=l.charAt(0);for(l=l.slice(1),s.length=0;i=c.exec(l);)s.push(i[0]);for(var d=[],g=0,p=s.length;g<p;g++){var v=parseFloat(s[g]);isNaN(v)||d.push(v)}for(;d.length>0&&!isNaN(d[0]);){var y,m,_,b,w,S,x,M,P,T,k=null,C=[],K=u,A=h;switch(f){case\"l\":u+=d.shift(),h+=d.shift(),k=\"L\",C.push(u,h);break;case\"L\":u=d.shift(),h=d.shift(),C.push(u,h);break;case\"m\":var D=d.shift(),F=d.shift();if(u+=D,h+=F,k=\"M\",a.length>2&&\"z\"===a[a.length-1].command)for(var O=a.length-2;O>=0;O--)if(\"M\"===a[O].command){u=a[O].points[0]+D,h=a[O].points[1]+F;break}C.push(u,h),f=\"l\";break;case\"M\":u=d.shift(),h=d.shift(),k=\"M\",C.push(u,h),f=\"L\";break;case\"h\":u+=d.shift(),k=\"L\",C.push(u,h);break;case\"H\":u=d.shift(),k=\"L\",C.push(u,h);break;case\"v\":h+=d.shift(),k=\"L\",C.push(u,h);break;case\"V\":h=d.shift(),k=\"L\",C.push(u,h);break;case\"C\":C.push(d.shift(),d.shift(),d.shift(),d.shift()),u=d.shift(),h=d.shift(),C.push(u,h);break;case\"c\":C.push(u+d.shift(),h+d.shift(),u+d.shift(),h+d.shift()),u+=d.shift(),h+=d.shift(),k=\"C\",C.push(u,h);break;case\"S\":m=u,_=h,\"C\"===(y=a[a.length-1]).command&&(m=u+(u-y.points[2]),_=h+(h-y.points[3])),C.push(m,_,d.shift(),d.shift()),u=d.shift(),h=d.shift(),k=\"C\",C.push(u,h);break;case\"s\":m=u,_=h,\"C\"===(y=a[a.length-1]).command&&(m=u+(u-y.points[2]),_=h+(h-y.points[3])),C.push(m,_,u+d.shift(),h+d.shift()),u+=d.shift(),h+=d.shift(),k=\"C\",C.push(u,h);break;case\"Q\":C.push(d.shift(),d.shift()),u=d.shift(),h=d.shift(),C.push(u,h);break;case\"q\":C.push(u+d.shift(),h+d.shift()),u+=d.shift(),h+=d.shift(),k=\"Q\",C.push(u,h);break;case\"T\":m=u,_=h,\"Q\"===(y=a[a.length-1]).command&&(m=u+(u-y.points[0]),_=h+(h-y.points[1])),u=d.shift(),h=d.shift(),k=\"Q\",C.push(m,_,u,h);break;case\"t\":m=u,_=h,\"Q\"===(y=a[a.length-1]).command&&(m=u+(u-y.points[0]),_=h+(h-y.points[1])),u+=d.shift(),h+=d.shift(),k=\"Q\",C.push(m,_,u,h);break;case\"A\":b=d.shift(),w=d.shift(),S=d.shift(),x=d.shift(),M=d.shift(),P=u,T=h,u=d.shift(),h=d.shift(),k=\"A\",C=this.convertEndpointToCenterParameterization(P,T,u,h,x,M,b,w,S);break;case\"a\":b=d.shift(),w=d.shift(),S=d.shift(),x=d.shift(),M=d.shift(),P=u,T=h,u+=d.shift(),h+=d.shift(),k=\"A\",C=this.convertEndpointToCenterParameterization(P,T,u,h,x,M,b,w,S)}a.push({command:k||f,points:C,start:{x:K,y:A},pathLength:this.calcLength(K,A,k||f,C)})}\"z\"!==f&&\"Z\"!==f||a.push({command:\"z\",points:[],start:void 0,pathLength:0})}return a},Konva.Path.calcLength=function(t,e,n,r){var i,o,a,s,u=Konva.Path;switch(n){case\"L\":return u.getLineLength(t,e,r[0],r[1]);case\"C\":for(i=0,o=u.getPointOnCubicBezier(0,t,e,r[0],r[1],r[2],r[3],r[4],r[5]),s=.01;s<=1;s+=.01)a=u.getPointOnCubicBezier(s,t,e,r[0],r[1],r[2],r[3],r[4],r[5]),i+=u.getLineLength(o.x,o.y,a.x,a.y),o=a;return i;case\"Q\":for(i=0,o=u.getPointOnQuadraticBezier(0,t,e,r[0],r[1],r[2],r[3]),s=.01;s<=1;s+=.01)a=u.getPointOnQuadraticBezier(s,t,e,r[0],r[1],r[2],r[3]),i+=u.getLineLength(o.x,o.y,a.x,a.y),o=a;return i;case\"A\":i=0;var h=r[4],c=r[5],l=r[4]+c,f=Math.PI/180;if(Math.abs(h-l)<f&&(f=Math.abs(h-l)),o=u.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],h,0),c<0)for(s=h-f;s>l;s-=f)a=u.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],s,0),i+=u.getLineLength(o.x,o.y,a.x,a.y),o=a;else for(s=h+f;s<l;s+=f)a=u.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],s,0),i+=u.getLineLength(o.x,o.y,a.x,a.y),o=a;return a=u.getPointOnEllipticalArc(r[0],r[1],r[2],r[3],l,0),i+=u.getLineLength(o.x,o.y,a.x,a.y)}return 0},Konva.Path.convertEndpointToCenterParameterization=function(t,e,n,r,i,o,a,s,u){var h=u*(Math.PI/180),c=Math.cos(h)*(t-n)/2+Math.sin(h)*(e-r)/2,l=-1*Math.sin(h)*(t-n)/2+Math.cos(h)*(e-r)/2,f=c*c/(a*a)+l*l/(s*s);f>1&&(a*=Math.sqrt(f),s*=Math.sqrt(f));var d=Math.sqrt((a*a*(s*s)-a*a*(l*l)-s*s*(c*c))/(a*a*(l*l)+s*s*(c*c)));i===o&&(d*=-1),isNaN(d)&&(d=0);var g=d*a*l/s,p=d*-s*c/a,v=(t+n)/2+Math.cos(h)*g-Math.sin(h)*p,y=(e+r)/2+Math.sin(h)*g+Math.cos(h)*p,m=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},_=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(m(t)*m(e))},b=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(_(t,e))},w=b([1,0],[(c-g)/a,(l-p)/s]),S=[(c-g)/a,(l-p)/s],x=[(-1*c-g)/a,(-1*l-p)/s],M=b(S,x);return _(S,x)<=-1&&(M=Math.PI),_(S,x)>=1&&(M=0),0===o&&M>0&&(M-=2*Math.PI),1===o&&M<0&&(M+=2*Math.PI),[v,y,a,s,w,M,h,o]},Konva.Factory.addGetterSetter(Konva.Path,\"data\"),Konva.Collection.mapMethods(Konva.Path)}(),function(){\"use strict\";function t(t){t.fillText(this.partialText,0,0)}function e(t){t.strokeText(this.partialText,0,0)}Konva.TextPath=function(t){this.___init(t)},Konva.TextPath.prototype={___init:function(n){var r=this;this.dummyCanvas=Konva.Util.createCanvasElement(),this.dataArray=[],this.getKerning=n&&n.getKerning,Konva.Shape.call(this,n),this._fillFunc=t,this._strokeFunc=e,this._fillFuncHit=t,this._strokeFuncHit=e,this.className=\"TextPath\",this.dataArray=Konva.Path.parsePathData(this.attrs.data),this.on(\"dataChange.konva\",function(){r.dataArray=Konva.Path.parsePathData(this.attrs.data),r._setTextData()}),this.on(\"textChange.konva alignChange.konva letterSpacingChange.konva\",r._setTextData),r._setTextData(),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){t.setAttr(\"font\",this._getContextFont()),t.setAttr(\"textBaseline\",this.getTextBaseline()),t.setAttr(\"textAlign\",\"left\"),t.save();var e=this.textDecoration(),n=this.fill(),r=this.fontSize(),i=this.glyphInfo;\"underline\"===e&&t.beginPath();for(var o=0;o<i.length;o++){t.save();var a=i[o].p0;t.translate(a.x,a.y),t.rotate(i[o].rotation),this.partialText=i[o].text,t.fillStrokeShape(this),\"underline\"===e&&(0===o&&t.moveTo(0,r/2+1),t.lineTo(r,r/2+1)),t.restore()}\"underline\"===e&&(t.strokeStyle=n,t.lineWidth=r/20,t.stroke()),t.restore()},_hitFunc:function(t){t.beginPath();var e=this.glyphInfo;if(e.length>=1){var n=e[0].p0;t.moveTo(n.x,n.y)}for(var r=0;r<e.length;r++){var i=e[r].p1;t.lineTo(i.x,i.y)}t.setAttr(\"lineWidth\",this.getFontSize()),t.setAttr(\"strokeStyle\",this.colorKey),t.stroke()},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},setText:function(t){Konva.Text.prototype.setText.call(this,t)},_getTextSize:function(t){var e=this.dummyCanvas.getContext(\"2d\");e.save(),e.font=this._getContextFont();var n=e.measureText(t);return e.restore(),{width:n.width,height:parseInt(this.attrs.fontSize,10)}},_setTextData:function(){var t=this,e=this._getTextSize(this.attrs.text),n=this.getLetterSpacing(),r=this.align();this.textWidth=e.width,this.textHeight=e.height;var i=Math.max(this.textWidth+((this.attrs.text||\"\").length-1)*n,0);this.glyphInfo=[];for(var o=0,a=0;a<t.dataArray.length;a++)t.dataArray[a].pathLength>0&&(o+=t.dataArray[a].pathLength);var s=0;\"center\"===r&&(s=Math.max(0,o/2-i/2)),\"right\"===r&&(s=Math.max(0,o-i));for(var u,h,c,l=this.getText().split(\"\"),f=this.getText().split(\" \").length-1,d=-1,g=0,p=function(){g=0;for(var e=t.dataArray,n=d+1;n<e.length;n++){if(e[n].pathLength>0)return d=n,e[n];\"M\"===e[n].command&&(u={x:e[n].points[0],y:e[n].points[1]})}return{}},v=function(e){var a=t._getTextSize(e).width+n;\" \"===e&&\"justify\"===r&&(a+=(o-i)/f);var s=0,l=0;for(h=void 0;Math.abs(a-s)/a>.01&&l<25;){l++;for(var d=s;void 0===c;)(c=p())&&d+c.pathLength<a&&(d+=c.pathLength,c=void 0);if(c==={}||void 0===u)return;var v=!1;switch(c.command){case\"L\":Konva.Path.getLineLength(u.x,u.y,c.points[0],c.points[1])>a?h=Konva.Path.getPointOnLine(a,u.x,u.y,c.points[0],c.points[1],u.x,u.y):c=void 0;break;case\"A\":var y=c.points[4],m=c.points[5],_=c.points[4]+m;0===g?g=y+1e-8:a>s?g+=Math.PI/180*m/Math.abs(m):g-=Math.PI/360*m/Math.abs(m),(m<0&&g<_||m>=0&&g>_)&&(g=_,v=!0),h=Konva.Path.getPointOnEllipticalArc(c.points[0],c.points[1],c.points[2],c.points[3],g,c.points[6]);break;case\"C\":0===g?g=a>c.pathLength?1e-8:a/c.pathLength:a>s?g+=(a-s)/c.pathLength:g-=(s-a)/c.pathLength,g>1&&(g=1,v=!0),h=Konva.Path.getPointOnCubicBezier(g,c.start.x,c.start.y,c.points[0],c.points[1],c.points[2],c.points[3],c.points[4],c.points[5]);break;case\"Q\":0===g?g=a/c.pathLength:a>s?g+=(a-s)/c.pathLength:g-=(s-a)/c.pathLength,g>1&&(g=1,v=!0),h=Konva.Path.getPointOnQuadraticBezier(g,c.start.x,c.start.y,c.points[0],c.points[1],c.points[2],c.points[3])}void 0!==h&&(s=Konva.Path.getLineLength(u.x,u.y,h.x,h.y)),v&&(v=!1,c=void 0)}},y=t._getTextSize(\"C\").width+n,m=0;m<s/y&&(v(\"C\"),void 0!==u&&void 0!==h);m++)u=h;for(var _=0;_<l.length&&(v(l[_]),void 0!==u&&void 0!==h);_++){var b=Konva.Path.getLineLength(u.x,u.y,h.x,h.y),w=0;if(this.getKerning)try{w=this.getKerning(l[_-1],l[_])*this.fontSize()}catch(t){w=0}u.x+=w,h.x+=w,this.textWidth+=w;var S=Konva.Path.getPointOnLine(w+b/2,u.x,u.y,h.x,h.y),x=Math.atan2(h.y-u.y,h.x-u.x);this.glyphInfo.push({transposeX:S.x,transposeY:S.y,text:l[_],rotation:x,p0:u,p1:h}),u=h}},getSelfRect:function(){var t=[];this.glyphInfo.forEach(function(e){t.push(e.p0.x),t.push(e.p0.y),t.push(e.p1.x),t.push(e.p1.y)});for(var e,n,r=t[0],i=t[0],o=t[0],a=t[0],s=0;s<t.length/2;s++)e=t[2*s],n=t[2*s+1],r=Math.min(r,e),i=Math.max(i,e),o=Math.min(o,n),a=Math.max(a,n);var u=this.fontSize();return{x:Math.round(r)-u/2,y:Math.round(o)-u/2,width:Math.round(i-r)+u,height:Math.round(a-o)+u}}},Konva.TextPath.prototype._getContextFont=Konva.Text.prototype._getContextFont,Konva.Util.extend(Konva.TextPath,Konva.Shape),Konva.Factory.addGetterSetter(Konva.TextPath,\"data\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"fontFamily\",\"Arial\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"fontSize\",12),Konva.Factory.addGetterSetter(Konva.TextPath,\"fontStyle\",\"normal\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"align\",\"left\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"letterSpacing\",0),Konva.Factory.addGetterSetter(Konva.TextPath,\"textBaseline\",\"middle\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"fontVariant\",\"normal\"),Konva.Factory.addGetter(Konva.TextPath,\"text\",\"\"),Konva.Factory.addGetterSetter(Konva.TextPath,\"textDecoration\",null),Konva.Collection.mapMethods(Konva.TextPath)}(),function(){\"use strict\";Konva.RegularPolygon=function(t){this.___init(t)},Konva.RegularPolygon.prototype={_centroid:!0,___init:function(t){Konva.Shape.call(this,t),this.className=\"RegularPolygon\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e,n,r,i=this.attrs.sides,o=this.attrs.radius;for(t.beginPath(),t.moveTo(0,0-o),e=1;e<i;e++)n=o*Math.sin(2*e*Math.PI/i),r=-1*o*Math.cos(2*e*Math.PI/i),t.lineTo(n,r);t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(t){Konva.Node.prototype.setWidth.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setHeight:function(t){Konva.Node.prototype.setHeight.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)}},Konva.Util.extend(Konva.RegularPolygon,Konva.Shape),Konva.Factory.addGetterSetter(Konva.RegularPolygon,\"radius\",0),Konva.Factory.addGetterSetter(Konva.RegularPolygon,\"sides\",0),Konva.Collection.mapMethods(Konva.RegularPolygon)}(),function(){\"use strict\";Konva.Star=function(t){this.___init(t)},Konva.Star.prototype={_centroid:!0,___init:function(t){Konva.Shape.call(this,t),this.className=\"Star\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.innerRadius(),n=this.outerRadius(),r=this.numPoints();t.beginPath(),t.moveTo(0,0-n);for(var i=1;i<2*r;i++){var o=i%2==0?n:e,a=o*Math.sin(i*Math.PI/r),s=-1*o*Math.cos(i*Math.PI/r);t.lineTo(a,s)}t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(t){Konva.Node.prototype.setWidth.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setHeight:function(t){Konva.Node.prototype.setHeight.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)}},Konva.Util.extend(Konva.Star,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Star,\"numPoints\",5),Konva.Factory.addGetterSetter(Konva.Star,\"innerRadius\",0),Konva.Factory.addGetterSetter(Konva.Star,\"outerRadius\",0),Konva.Collection.mapMethods(Konva.Star)}(),function(){\"use strict\";var t=[\"fontFamily\",\"fontSize\",\"fontStyle\",\"padding\",\"lineHeight\",\"text\",\"width\"],e=t.length;Konva.Label=function(t){this.____init(t)},Konva.Label.prototype={____init:function(t){var e=this;Konva.Group.call(this,t),this.className=\"Label\",this.on(\"add.konva\",function(t){e._addListeners(t.child),e._sync()})},getText:function(){return this.find(\"Text\")[0]},getTag:function(){return this.find(\"Tag\")[0]},_addListeners:function(n){var r,i=this,o=function(){i._sync()};for(r=0;r<e;r++)n.on(t[r]+\"Change.konva\",o)},getWidth:function(){return this.getText().getWidth()},getHeight:function(){return this.getText().getHeight()},_sync:function(){var t,e,n,r,i,o,a,s=this.getText(),u=this.getTag();if(s&&u){switch(t=s.getWidth(),e=s.getHeight(),n=u.getPointerDirection(),r=u.getPointerWidth(),a=u.getPointerHeight(),i=0,o=0,n){case\"up\":i=t/2,o=-1*a;break;case\"right\":i=t+r,o=e/2;break;case\"down\":i=t/2,o=e+a;break;case\"left\":i=-1*r,o=e/2}u.setAttrs({x:-1*i,y:-1*o,width:t,height:e}),s.setAttrs({x:-1*i,y:-1*o})}}},Konva.Util.extend(Konva.Label,Konva.Group),Konva.Collection.mapMethods(Konva.Label),Konva.Tag=function(t){this.___init(t)},Konva.Tag.prototype={___init:function(t){Konva.Shape.call(this,t),this.className=\"Tag\",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getWidth(),n=this.getHeight(),r=this.getPointerDirection(),i=this.getPointerWidth(),o=this.getPointerHeight(),a=Math.min(this.getCornerRadius(),e/2,n/2);t.beginPath(),a?t.moveTo(a,0):t.moveTo(0,0),\"up\"===r&&(t.lineTo((e-i)/2,0),t.lineTo(e/2,-1*o),t.lineTo((e+i)/2,0)),a?(t.lineTo(e-a,0),t.arc(e-a,a,a,3*Math.PI/2,0,!1)):t.lineTo(e,0),\"right\"===r&&(t.lineTo(e,(n-o)/2),t.lineTo(e+i,n/2),t.lineTo(e,(n+o)/2)),a?(t.lineTo(e,n-a),t.arc(e-a,n-a,a,0,Math.PI/2,!1)):t.lineTo(e,n),\"down\"===r&&(t.lineTo((e+i)/2,n),t.lineTo(e/2,n+o),t.lineTo((e-i)/2,n)),a?(t.lineTo(a,n),t.arc(a,n-a,a,Math.PI/2,Math.PI,!1)):t.lineTo(0,n),\"left\"===r&&(t.lineTo(0,(n+o)/2),t.lineTo(-1*i,n/2),t.lineTo(0,(n-o)/2)),a&&(t.lineTo(0,a),t.arc(a,a,a,Math.PI,3*Math.PI/2,!1)),t.closePath(),t.fillStrokeShape(this)},getSelfRect:function(){var t=0,e=0,n=this.getPointerWidth(),r=this.getPointerHeight(),i=this.pointerDirection(),o=this.getWidth(),a=this.getHeight();return\"up\"===i?(e-=r,a+=r):\"down\"===i?a+=r:\"left\"===i?(t-=1.5*n,o+=n):\"right\"===i&&(o+=1.5*n),{x:t,y:e,width:o,height:a}}},Konva.Util.extend(Konva.Tag,Konva.Shape),Konva.Factory.addGetterSetter(Konva.Tag,\"pointerDirection\",\"none\"),Konva.Factory.addGetterSetter(Konva.Tag,\"pointerWidth\",0),Konva.Factory.addGetterSetter(Konva.Tag,\"pointerHeight\",0),Konva.Factory.addGetterSetter(Konva.Tag,\"cornerRadius\",0),Konva.Collection.mapMethods(Konva.Tag)}(),function(t){\"use strict\";t.Arrow=function(t){this.____init(t)},t.Arrow.prototype={____init:function(e){t.Line.call(this,e),this.className=\"Arrow\"},_sceneFunc:function(e){t.Line.prototype._sceneFunc.apply(this,arguments);var n=2*Math.PI,r=this.points(),i=r,o=0!==this.getTension()&&r.length>4;o&&(i=this.getTensionPoints());var a,s,u=r.length;o?(a=r[u-2]-i[u-2],s=r[u-1]-i[u-1]):(a=r[u-2]-r[u-4],s=r[u-1]-r[u-3]);var h=(Math.atan2(s,a)+n)%n,c=this.pointerLength(),l=this.pointerWidth();e.save(),e.beginPath(),e.translate(r[u-2],r[u-1]),e.rotate(h),e.moveTo(0,0),e.lineTo(-c,l/2),e.lineTo(-c,-l/2),e.closePath(),e.restore(),this.pointerAtBeginning()&&(e.save(),e.translate(r[0],r[1]),o?(a=i[0]-r[0],s=i[1]-r[1]):(a=r[2]-r[0],s=r[3]-r[1]),e.rotate((Math.atan2(-s,-a)+n)%n),e.moveTo(0,0),e.lineTo(-c,l/2),e.lineTo(-c,-l/2),e.closePath(),e.restore());var f=this.dashEnabled();f&&(this.attrs.dashEnabled=!1,e.setLineDash([])),e.fillStrokeShape(this),f&&(this.attrs.dashEnabled=!0)}},t.Util.extend(t.Arrow,t.Line),t.Factory.addGetterSetter(t.Arrow,\"pointerLength\",10),t.Factory.addGetterSetter(t.Arrow,\"pointerWidth\",10),t.Factory.addGetterSetter(t.Arrow,\"pointerAtBeginning\",!1),t.Collection.mapMethods(t.Arrow)}(Konva),function(t){\"use strict\";var e=[\"resizeEnabledChange\",\"rotateAnchorOffsetChange\",\"enabledAnchorsChange\",\"anchorSizeChange\",\"borderEnabledChange\",\"borderStrokeChange\",\"borderStrokeWidthChange\",\"anchorStrokeChange\",\"anchorStrokeWidthChange\",\"anchorFillChange\"].join(\" \"),n=[\"xChange.resizer\",\"yChange.resizer\",\"widthChange.resizer\",\"heightChange.resizer\",\"scaleXChange.resizer\",\"scaleYChange.resizer\",\"skewXChange.resizer\",\"skewYChange.resizer\",\"rotationChange.resizer\",\"offsetXChange.resizer\",\"offsetYChange.resizer\",\"transformsEnabledChange.resizer\"].join(\" \"),r=[\"widthChange.resizer\",\"heightChange.resizer\",\"scaleXChange.resizer\",\"scaleYChange.resizer\",\"skewXChange.resizer\",\"skewYChange.resizer\",\"rotationChange.resizer\",\"offsetXChange.resizer\",\"offsetYChange.resizer\"].join(\" \"),i={\"top-left\":-45,\"top-center\":0,\"top-right\":45,\"middle-right\":-90,\"middle-left\":90,\"bottom-left\":-135,\"bottom-center\":180,\"bottom-right\":135};t.Transformer=function(t){this.____init(t)};var o=[\"top-left\",\"top-center\",\"top-right\",\"middle-right\",\"middle-left\",\"bottom-left\",\"bottom-center\",\"bottom-right\"];t.Transformer.prototype={_centroid:!1,____init:function(n){t.Group.call(this,n),this.className=\"Transformer\",this._createElements(),this._handleMouseMove=this._handleMouseMove.bind(this),this._handleMouseUp=this._handleMouseUp.bind(this),this.update=this.update.bind(this),this.on(e,this.update),this.getNode()&&this.update()},attachTo:function(t){this.setNode(t)},setNode:function(t){return this._node&&this.detach(),this._node=t,this._resetTransformCache(),t.on(n,this._resetTransformCache.bind(this)),t.on(r,function(){this._transforming||this.update()}.bind(this)),!!this.findOne(\".top-left\")&&this.update(),this},getNode:function(){return this._node},detach:function(){this.getNode()&&(this.getNode().off(\".resizer\"),this._node=void 0),this._resetTransformCache()},_resetTransformCache:function(){this._clearCache(\"nodeRect\"),this._clearCache(\"transform\"),this._clearSelfAndDescendantCache(\"absoluteTransform\")},_getNodeRect:function(){return this._getCache(\"nodeRect\",this.__getNodeRect)},__getNodeRect:function(){var e=this.getNode();if(!e)return{x:-Number.MAX_SAFE_INTEGER,y:-Number.MAX_SAFE_INTEGER,width:0,height:0,rotation:0};var n=e.getClientRect({skipTransform:!0}),r=t.getAngle(e.rotation()),i=n.x*e.scaleX()-e.offsetX()*e.scaleX(),o=n.y*e.scaleY()-e.offsetY()*e.scaleY();return{x:e.x()+i*Math.cos(r)+o*Math.sin(-r),y:e.y()+o*Math.cos(r)+i*Math.sin(r),width:n.width*e.scaleX(),height:n.height*e.scaleY(),rotation:e.rotation()}},getX:function(){return this._getNodeRect().x},getY:function(){return this._getNodeRect().y},getRotation:function(){return this._getNodeRect().rotation},getWidth:function(){return this._getNodeRect().width},getHeight:function(){return this._getNodeRect().height},_createElements:function(){this._createBack(),o.forEach(function(t){this._createAnchor(t)}.bind(this)),this._createAnchor(\"rotater\")},_createAnchor:function(e){var n=new t.Rect({stroke:\"rgb(0, 161, 255)\",fill:\"white\",strokeWidth:1,name:e+\" _anchor\",dragDistance:0,draggable:!0}),r=this;n.on(\"mousedown touchstart\",function(t){r._handleMouseDown(t)}),n.on(\"dragstart\",function(t){t.cancelBubble=!0}),n.on(\"dragmove\",function(t){t.cancelBubble=!0}),n.on(\"dragend\",function(t){t.cancelBubble=!0}),n.on(\"mouseenter\",function(){var r=this.getLayer(),o=this.getParent(),a=t.getAngle(o.rotation()),s=o.getNode().getAbsoluteScale(),u=s.y*s.x<0,h=function(e,n,r){if(\"rotater\"===e)return\"crosshair\";n+=t.Util._degToRad(i[e]||0),r&&(n*=-1);var o=(t.Util._radToDeg(n)%360+360)%360;return t.Util._inRange(o,337.5,360)||t.Util._inRange(o,0,22.5)?\"ns-resize\":t.Util._inRange(o,22.5,67.5)?\"nesw-resize\":t.Util._inRange(o,67.5,112.5)?\"ew-resize\":t.Util._inRange(o,112.5,157.5)?\"nwse-resize\":t.Util._inRange(o,157.5,202.5)?\"ns-resize\":t.Util._inRange(o,202.5,247.5)?\"nesw-resize\":t.Util._inRange(o,247.5,292.5)?\"ew-resize\":t.Util._inRange(o,292.5,337.5)?\"nwse-resize\":(t.Util.error(\"Transformer has unknown angle for cursor detection: \"+o),\"pointer\")}(e,a,u);n.getStage().content.style.cursor=h,r.batchDraw()}),n.on(\"mouseout\",function(){var t=this.getLayer();t&&(n.getStage().content.style.cursor=\"\",t.batchDraw())}),this.add(n)},_createBack:function(){var e=new t.Shape({name:\"back\",width:0,height:0,listening:!1,sceneFunc:function(e){var n=this.getParent(),r=n.getPadding();e.beginPath(),e.rect(-r,-r,this.width()+2*r,this.height()+2*r),e.moveTo(this.width()/2,-r),n.rotateEnabled()&&e.lineTo(this.width()/2,-n.rotateAnchorOffset()*t.Util._sign(this.height())),e.fillStrokeShape(this)}});this.add(e)},_handleMouseDown:function(t){this.movingResizer=t.target.name().split(\" \")[0];var e=this._getNodeRect(),n=e.width,r=e.height,i=Math.sqrt(Math.pow(n,2)+Math.pow(r,2));this.sin=r/i,this.cos=n/i,window.addEventListener(\"mousemove\",this._handleMouseMove),window.addEventListener(\"touchmove\",this._handleMouseMove),window.addEventListener(\"mouseup\",this._handleMouseUp,!0),window.addEventListener(\"touchend\",this._handleMouseUp,!0),this._transforming=!0,this.fire(\"transformstart\"),this.getNode().fire(\"transformstart\")},_handleMouseMove:function(e){var n,r,i,o=this.findOne(\".\"+this.movingResizer),a=o.getStage().getContent().getBoundingClientRect(),s=a.left,u=a.top,h={x:(void 0!==e.clientX?e.clientX:e.touches[0].clientX)-s,y:(void 0!==e.clientX?e.clientY:e.touches[0].clientY)-u};o.setAbsolutePosition(h);var c=this.keepRatio()||e.shiftKey;if(\"top-left\"===this.movingResizer)c&&(n=(i=Math.sqrt(Math.pow(this.findOne(\".bottom-right\").x()-o.x(),2)+Math.pow(this.findOne(\".bottom-right\").y()-o.y(),2)))*this.cos,r=i*this.sin,this.findOne(\".top-left\").x(this.findOne(\".bottom-right\").x()-n),this.findOne(\".top-left\").y(this.findOne(\".bottom-right\").y()-r));else if(\"top-center\"===this.movingResizer)this.findOne(\".top-left\").y(o.y());else if(\"top-right\"===this.movingResizer){c&&(n=(i=Math.sqrt(Math.pow(this.findOne(\".bottom-left\").x()-o.x(),2)+Math.pow(this.findOne(\".bottom-left\").y()-o.y(),2)))*this.cos,r=i*this.sin,this.findOne(\".top-right\").x(n),this.findOne(\".top-right\").y(this.findOne(\".bottom-left\").y()-r));var l=o.position();this.findOne(\".top-left\").y(l.y),this.findOne(\".bottom-right\").x(l.x)}else if(\"middle-left\"===this.movingResizer)this.findOne(\".top-left\").x(o.x());else if(\"middle-right\"===this.movingResizer)this.findOne(\".bottom-right\").x(o.x());else if(\"bottom-left\"===this.movingResizer)c&&(n=(i=Math.sqrt(Math.pow(this.findOne(\".top-right\").x()-o.x(),2)+Math.pow(this.findOne(\".top-right\").y()-o.y(),2)))*this.cos,r=i*this.sin,this.findOne(\".bottom-left\").x(this.findOne(\".top-right\").x()-n),this.findOne(\".bottom-left\").y(r)),l=o.position(),this.findOne(\".top-left\").x(l.x),this.findOne(\".bottom-right\").y(l.y);else if(\"bottom-center\"===this.movingResizer)this.findOne(\".bottom-right\").y(o.y());else if(\"bottom-right\"===this.movingResizer)c&&(n=(i=Math.sqrt(Math.pow(this.findOne(\".bottom-right\").x(),2)+Math.pow(this.findOne(\".bottom-right\").y(),2)))*this.cos,r=i*this.sin,this.findOne(\".bottom-right\").x(n),this.findOne(\".bottom-right\").y(r));else if(\"rotater\"===this.movingResizer){var f=this.getPadding(),d=this._getNodeRect();n=o.x()-d.width/2,r=-o.y()+d.height/2;var g=Math.atan2(-r,n)+Math.PI/2;d.height<0&&(g-=Math.PI);for(var p=t.getAngle(this.rotation()),v=t.Util._radToDeg(p)+t.Util._radToDeg(g),y=t.getAngle(this.getNode().rotation()),m=t.Util._degToRad(v),_=this.rotationSnaps(),b=0;b<_.length;b++){var w=t.getAngle(_[b]);Math.abs(w-t.Util._degToRad(v))%(2*Math.PI)<.1&&(v=t.Util._radToDeg(w),m=t.Util._degToRad(v))}var S=f,x=f;this._fitNodeInto({rotation:t.angleDeg?v:t.Util._degToRad(v),x:d.x+(d.width/2+f)*(Math.cos(y)-Math.cos(m))+(d.height/2+f)*(Math.sin(-y)-Math.sin(-m))-(S*Math.cos(p)+x*Math.sin(-p)),y:d.y+(d.height/2+f)*(Math.cos(y)-Math.cos(m))+(d.width/2+f)*(Math.sin(y)-Math.sin(m))-(x*Math.cos(p)+S*Math.sin(p)),width:d.width+2*f,height:d.height+2*f})}else console.error(new Error(\"Wrong position argument of selection resizer: \",this.movingResizer));if(\"rotater\"!==this.movingResizer){var M=this.findOne(\".top-left\").getAbsolutePosition(this.getParent());n=M.x,r=M.y;var P=this.findOne(\".bottom-right\").x()-this.findOne(\".top-left\").x(),T=this.findOne(\".bottom-right\").y()-this.findOne(\".top-left\").y();this._fitNodeInto({x:n+this.offsetX(),y:r+this.offsetY(),width:P,height:T})}},_handleMouseUp:function(){this._removeEvents()},_removeEvents:function(){if(this._transforming){this._transforming=!1,window.removeEventListener(\"mousemove\",this._handleMouseMove),window.removeEventListener(\"touchmove\",this._handleMouseMove),window.removeEventListener(\"mouseup\",this._handleMouseUp,!0),window.removeEventListener(\"touchend\",this._handleMouseUp,!0),this.fire(\"transformend\");var t=this.getNode();t&&t.fire(\"transformend\")}},_fitNodeInto:function(e){var n=this.getBoundBoxFunc();if(n){var r=this._getNodeRect();e=n.call(this,r,e)}this._settings=!0;var i=this.getNode();void 0!==e.rotation&&this.getNode().rotation(e.rotation);var o=i.getClientRect({skipTransform:!0}),a=this.getPadding(),s=(e.width-2*a)/o.width,u=(e.height-2*a)/o.height,h=t.getAngle(i.getRotation()),c=o.x*s-a-i.offsetX()*s,l=o.y*u-a-i.offsetY()*u;this.getNode().setAttrs({scaleX:s,scaleY:u,x:e.x-(c*Math.cos(h)+l*Math.sin(-h)),y:e.y-(l*Math.cos(h)+c*Math.sin(h))}),this._settings=!1,this.fire(\"transform\"),this.getNode().fire(\"transform\"),this.update(),this.getLayer().batchDraw()},forceUpdate:function(){this._resetTransformCache(),this.update()},update:function(){var e=this._getNodeRect(),n=this.getNode(),r={x:1,y:1};n&&n.getParent()&&(r=n.getParent().getAbsoluteScale());var i={x:1/r.x,y:1/r.y},o=e.width,a=e.height,s=this.enabledAnchors(),u=this.resizeEnabled(),h=this.getPadding(),c=this.getAnchorSize();this.find(\"._anchor\").setAttrs({width:c,height:c,offsetX:c/2,offsetY:c/2,stroke:this.getAnchorStroke(),strokeWidth:this.getAnchorStrokeWidth(),fill:this.getAnchorFill()}),this.findOne(\".top-left\").setAttrs({x:-h,y:-h,scale:i,visible:u&&s.indexOf(\"top-left\")>=0}),this.findOne(\".top-center\").setAttrs({x:o/2,y:-h,scale:i,visible:u&&s.indexOf(\"top-center\")>=0}),this.findOne(\".top-right\").setAttrs({x:o+h,y:-h,scale:i,visible:u&&s.indexOf(\"top-right\")>=0}),this.findOne(\".middle-left\").setAttrs({x:-h,y:a/2,scale:i,visible:u&&s.indexOf(\"middle-left\")>=0}),this.findOne(\".middle-right\").setAttrs({x:o+h,y:a/2,scale:i,visible:u&&s.indexOf(\"middle-right\")>=0}),this.findOne(\".bottom-left\").setAttrs({x:-h,y:a+h,scale:i,visible:u&&s.indexOf(\"bottom-left\")>=0}),this.findOne(\".bottom-center\").setAttrs({x:o/2,y:a+h,scale:i,visible:u&&s.indexOf(\"bottom-center\")>=0}),this.findOne(\".bottom-right\").setAttrs({x:o+h,y:a+h,scale:i,visible:u&&s.indexOf(\"bottom-right\")>=0});var l=-this.rotateAnchorOffset()*Math.abs(i.y);this.findOne(\".rotater\").setAttrs({x:o/2,y:l*t.Util._sign(a),scale:i,visible:this.rotateEnabled()}),this.findOne(\".back\").setAttrs({width:o*r.x,height:a*r.y,scale:i,visible:this.borderEnabled(),stroke:this.getBorderStroke(),strokeWidth:this.getBorderStrokeWidth(),dash:this.getBorderDash()})},isTransforming:function(){return this._transforming},stopTransform:function(){if(this._transforming){this._removeEvents();var t=this.findOne(\".\"+this.movingResizer);t&&t.stopDrag()}},destroy:function(){t.Group.prototype.destroy.call(this),this.detach(),this._removeEvents()},toObject:function(){return t.Node.prototype.toObject.call(this)}},t.Util.extend(t.Transformer,t.Group),t.Factory.addGetterSetter(t.Transformer,\"enabledAnchors\",o,function(e){return e instanceof Array||t.Util.warn(\"enabledAnchors value should be an array\"),e instanceof Array&&e.forEach(function(e){-1===o.indexOf(e)&&t.Util.warn(\"Unknown resizer name: \"+e+\". Available names are: \"+o.join(\", \"))}),e||[]}),t.Factory.addGetterSetter(t.Transformer,\"resizeEnabled\",!0),t.Factory.addGetterSetter(t.Transformer,\"anchorSize\",10),t.Factory.addGetterSetter(t.Transformer,\"rotateEnabled\",!0),t.Factory.addGetterSetter(t.Transformer,\"rotationSnaps\",[]),t.Factory.addGetterSetter(t.Transformer,\"rotateAnchorOffset\",50),t.Factory.addGetterSetter(t.Transformer,\"borderEnabled\",!0),t.Factory.addGetterSetter(t.Transformer,\"anchorStroke\",\"rgb(0, 161, 255)\"),t.Factory.addGetterSetter(t.Transformer,\"anchorStrokeWidth\",1),t.Factory.addGetterSetter(t.Transformer,\"anchorFill\",\"white\"),t.Factory.addGetterSetter(t.Transformer,\"borderStroke\",\"rgb(0, 161, 255)\"),t.Factory.addGetterSetter(t.Transformer,\"borderStrokeWidth\",1),t.Factory.addGetterSetter(t.Transformer,\"borderDash\"),t.Factory.addGetterSetter(t.Transformer,\"keepRatio\",!0),t.Factory.addGetterSetter(t.Transformer,\"padding\",0),t.Factory.addOverloadedGetterSetter(t.Transformer,\"node\"),t.Factory.addGetterSetter(t.Transformer,\"boundBoxFunc\"),t.Factory.backCompat(t.Transformer,{lineEnabled:\"borderEnabled\",rotateHandlerOffset:\"rotateAnchorOffset\",enabledHandlers:\"enabledAnchors\"}),t.Collection.mapMethods(t.Transformer)}(Konva)}).call(this,n(25))},function(t,e,n){\"use strict\";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(1),o=n(3),a=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{width:500,height:300};!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.scale={x:1,y:1},this.requestedSize={width:0,height:0},this.setupCanvas(e,n)}var e,n,a;return e=t,(n=[{key:\"addBackgroundImage\",value:function(t,e){var n,r=this,o=new Image;o.onload=function(){n=new i.default.Image({x:0,y:0,image:o,width:o.naturalWidth,height:o.naturalHeight}),r.originalSize={x:n.getWidth(),y:n.getHeight()},r.baseLayer.add(n);var t={x:r.stage.getWidth()/n.getWidth(),y:r.stage.getHeight()/n.getHeight()};t.y>t.x?n.scale({x:t.x,y:t.x}):n.scale({x:t.y,y:t.y}),r.scale=t,r.bgImg=n,r.bgImg.draw(),e&&e(n)},o.crossOrigin=\"Anonymous\",o.src=t}},{key:\"toolMouseDown\",value:function(t){this.tool&&this.tool.mouseDown&&this.tool.mouseDown(t)}},{key:\"toolMouseUp\",value:function(t){this.tool&&this.tool.mouseUp&&this.tool.mouseUp(t)}},{key:\"toolMouseMove\",value:function(t){this.tool&&this.tool.mouseMove&&this.tool.mouseMove(t)}},{key:\"setTool\",value:function(t){this.tool=t,this.tool.setup(this)}},{key:\"setSize\",value:function(t,e){this.requestedSize={width:t,height:e},this.stage.setWidth(t),this.stage.setHeight(e),this.bgImg&&(this.scale={x:this.stage.getWidth()/this.bgImg.getWidth(),y:this.stage.getHeight()/this.bgImg.getHeight()},this.scale.y>this.scale.x?this.bgImg.scale({x:this.scale.x,y:this.scale.x}):this.bgImg.scale({x:this.scale.y,y:this.scale.y}),this.tool&&this.tool.resized(),this.baseLayer.batchDraw(),this.stage.batchDraw())}},{key:\"getScaledLocation\",value:function(t){var e=o.vec2.div(o.vec2.create(),[t.x(),t.y()],[this.scalingFactor,this.scalingFactor]);return{x:e[0],y:e[1]}}},{key:\"renderAll\",value:function(){this.stage.draw()}},{key:\"setupCanvas\",value:function(t,e){var n=this;this.stage=new i.default.Stage({container:t,width:e.width,height:e.height}),this.stage.on(\"mousedown touchstart\",function(t){n.toolMouseDown(t)}),this.stage.on(\"mouseup touchend\",function(t){n.toolMouseUp(t)}),this.stage.on(\"mousemove touchmove\",function(t){n.toolMouseMove(t)}),document.addEventListener(\"keyup\",function(t){n.tool&&n.tool.keyup(t)}),this.baseLayer=new i.default.Layer,this.stage.add(this.baseLayer)}},{key:\"scalingFactor\",get:function(){return this.scale.y>this.scale.x?this.scale.x:this.scale.y}}])&&r(e.prototype,n),a&&r(e,a),t}();e.Visualizer=a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(27);e.Visualizer=r.Visualizer;var i=n(23);e.Annotator=i.Annotator;var o=n(2);e.WindowScaler=o.WindowScaler,e.WindowScalerTool=o.WindowScalerTool;var a=n(10);e.TextCallout=a.TextCallout;var s=n(4);e.NodeRecord=s.NodeRecord,e.Node=s.Node,e.NodeList=s.NodeList;var u=n(7);e.PolygonRecord=u.PolygonRecord,e.Polygon=u.Polygon}])});","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort:\n            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar isEmpty = function isEmpty(val) {\n  // check for empty object {}, array []\n  if (val !== null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n    if (Object.keys(val).length === 0) {\n      return true;\n    }\n  } else if (val === null || val === undefined || val === '') {\n    // check for undefined, null and \"\"\n    return true;\n  }\n  return false;\n};\n\nexports.default = isEmpty;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n  var result = {};\n\n  if (!Array.isArray(modifiers)) {\n    return modifiers || result;\n  } // eslint-disable-next-line no-unused-expressions\n\n\n  modifiers == null ? void 0 : modifiers.forEach(function (m) {\n    result[m.name] = m;\n  });\n  return result;\n}\nexport function toModifierArray(map) {\n  if (map === void 0) {\n    map = {};\n  }\n\n  if (Array.isArray(map)) return map;\n  return Object.keys(map).map(function (k) {\n    map[k].name = k;\n    return map[k];\n  });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n  var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n  var enabled = _ref.enabled,\n      enableEvents = _ref.enableEvents,\n      placement = _ref.placement,\n      flip = _ref.flip,\n      offset = _ref.offset,\n      containerPadding = _ref.containerPadding,\n      arrowElement = _ref.arrowElement,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n  var modifiers = toModifierMap(popperConfig.modifiers);\n  return _extends({}, popperConfig, {\n    placement: placement,\n    enabled: enabled,\n    modifiers: toModifierArray(_extends({}, modifiers, {\n      eventListeners: {\n        enabled: enableEvents\n      },\n      preventOverflow: _extends({}, modifiers.preventOverflow, {\n        options: containerPadding ? _extends({\n          padding: containerPadding\n        }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n      }),\n      offset: {\n        options: _extends({\n          offset: offset\n        }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n      },\n      arrow: _extends({}, modifiers.arrow, {\n        enabled: !!arrowElement,\n        options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n          element: arrowElement\n        })\n      }),\n      flip: _extends({\n        enabled: !!flip\n      }, modifiers.flip)\n    }))\n  });\n}","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a remote {@link Track}.\n * @extends TrackStats\n * @property {?number} bytesReceived - Number of bytes received\n * @property {?number} packetsReceived - Number of packets received\n */\nvar RemoteTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteTrackStats, _super);\n    /*\n     * @param {string} trackId - {@link Track} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            bytesReceived: {\n                value: typeof statsReport.bytesReceived === 'number'\n                    ? statsReport.bytesReceived\n                    : null,\n                enumerable: true\n            },\n            packetsReceived: {\n                value: typeof statsReport.packetsReceived === 'number'\n                    ? statsReport.packetsReceived\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteTrackStats;\n}(TrackStats));\nmodule.exports = RemoteTrackStats;\n//# sourceMappingURL=remotetrackstats.js.map","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var handler = controlledValues[prop];\n      !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n      propTypes[prop] = readOnlyPropType(handler, displayName);\n    }\n  });\n  return propTypes;\n}\nexport function isProp(props, prop) {\n  return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n  var wasPropRef = useRef(propValue !== undefined);\n\n  var _useState = useState(defaultValue),\n      stateValue = _useState[0],\n      setState = _useState[1];\n\n  var isProp = propValue !== undefined;\n  var wasProp = wasPropRef.current;\n  wasPropRef.current = isProp;\n  /**\n   * If a prop switches from controlled to Uncontrolled\n   * reset its value to the defaultValue\n   */\n\n  if (!isProp && wasProp && stateValue !== defaultValue) {\n    setState(defaultValue);\n  }\n\n  return [isProp ? propValue : stateValue, useCallback(function (value) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (handler) handler.apply(void 0, [value].concat(args));\n    setState(value);\n  }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var _ref = result,\n        defaultValue = _ref[Utils.defaultKey(fieldName)],\n        propsValue = _ref[fieldName],\n        rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n\n    var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n        value = _useUncontrolledProp[0],\n        handler = _useUncontrolledProp[1];\n\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","'use strict';\nvar detectSilence = require('./detectsilence');\n/**\n * This function attempts to workaround WebKit Bug 180748. It does so by\n *\n *   1. Calling `getUserMedia`, and\n *   2. Checking to see if the resulting MediaStream is silent.\n *   3. If so, repeat Step 1; otherwise, return the MediaStream.\n *\n * The function only repeats up to `n` times, and it only waits `timeout`\n * milliseconds when detecting silence. Assuming `getUserMedia` is\n * instantaneous, in the best case, this function returns a Promise that\n * resolves immediately; in the worst case, this function returns a Promise that\n * resolves in `n` * `timeout` milliseconds.\n *\n * @param {Log} log\n * @param {function(MediaStreamConstraints): Promise<MediaStream>} getUserMedia\n * @param {MediaStreamConstraints} constraints\n * @param {number} [n=3]\n * @param {number} [timeout=250]\n * @returns Promise<MediaStream>\n */\nfunction workaround(log, getUserMedia, constraints, n, timeout) {\n    n = typeof n === 'number' ? n : 3;\n    var retry = 0;\n    // NOTE(mroberts): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var AudioContextFactory = require('./audiocontext');\n    var holder = {};\n    var audioContext = AudioContextFactory.getOrCreate(holder);\n    /**\n     * We can't use async/await yet, so I need to factor this out.\n     * @returns {Promise<MediaStream>}\n     */\n    function doWorkaround() {\n        return getUserMedia(constraints).then(function (stream) {\n            var isSilentPromise = constraints.audio\n                ? detectSilence(audioContext, stream, timeout).catch(function (err) {\n                    log.warn('Encountered an error while detecting silence', err);\n                    return true;\n                })\n                : Promise.resolve(false);\n            return isSilentPromise.then(function (isSilent) {\n                if (!isSilent) {\n                    log.info('Got a non-silent audio MediaStreamTrack; returning it.');\n                    return stream;\n                }\n                else if (n <= 0) {\n                    log.warn('Got a silent audio MediaStreamTrack. Normally we would try \\\nto get a new one, but we\\'ve run out of retries; returning it anyway.');\n                    return stream;\n                }\n                log.warn(\"Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #\" + ++retry + \".\");\n                stream.getTracks().forEach(function (track) { return track.stop(); });\n                n--;\n                return doWorkaround();\n            });\n        });\n    }\n    return doWorkaround().then(function (stream) {\n        AudioContextFactory.release(holder);\n        return stream;\n    }, function (error) {\n        AudioContextFactory.release(holder);\n        throw error;\n    });\n}\nmodule.exports = workaround;\n//# sourceMappingURL=workaround180748.js.map","'use strict';\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools =\n  typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n    ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n    : function () {\n        if (arguments.length === 0) return undefined;\n        if (typeof arguments[0] === 'object') return compose;\n        return compose.apply(null, arguments);\n      };\n\nexports.devToolsEnhancer =\n  typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__\n    ? window.__REDUX_DEVTOOLS_EXTENSION__\n    : function () {\n        return function (noop) {\n          return noop;\n        };\n      };\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var arrayMap = require('./_arrayMap'),\n    baseIndexOf = require('./_baseIndexOf'),\n    baseIndexOfWith = require('./_baseIndexOfWith'),\n    baseUnary = require('./_baseUnary'),\n    copyArray = require('./_copyArray');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAll(array, values, iteratee, comparator) {\n  var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n      index = -1,\n      length = values.length,\n      seen = array;\n\n  if (array === values) {\n    values = copyArray(values);\n  }\n  if (iteratee) {\n    seen = arrayMap(array, baseUnary(iteratee));\n  }\n  while (++index < length) {\n    var fromIndex = 0,\n        value = values[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n      if (seen !== array) {\n        splice.call(seen, fromIndex, 1);\n      }\n      splice.call(array, fromIndex, 1);\n    }\n  }\n  return array;\n}\n\nmodule.exports = basePullAll;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'én time',\n            hh: '%d timer',\n            d: 'én dag',\n            dd: '%d dager',\n            w: 'én uke',\n            ww: '%d uker',\n            M: 'én måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};","'use strict';\nvar defer = require('./').defer;\nvar states = {\n    high: new Set(['low']),\n    low: new Set(['high'])\n};\n/**\n * Construct a {@link Latch}.\n * @class\n * @classdesc A {@link Latch} has two states (\"high\" and \"low\") and methods for\n * transitioning between them ({@link Latch#raise} and {@link Latch#lower}).\n * @param {string} [initialState=\"low\"] - either \"high\" or \"low\"\n */\nvar Latch = /** @class */ (function () {\n    function Latch(initialState) {\n        if (initialState === void 0) { initialState = 'low'; }\n        var state = initialState;\n        Object.defineProperties(this, {\n            _state: {\n                set: function (_state) {\n                    var _this = this;\n                    if (state !== _state) {\n                        state = _state;\n                        var whenDeferreds = this._whenDeferreds.get(state);\n                        whenDeferreds.forEach(function (deferred) { return deferred.resolve(_this); });\n                        whenDeferreds.clear();\n                    }\n                },\n                get: function () {\n                    return state;\n                }\n            },\n            _whenDeferreds: {\n                value: new Map([\n                    ['high', new Set()],\n                    ['low', new Set()]\n                ])\n            }\n        });\n    }\n    Object.defineProperty(Latch.prototype, \"state\", {\n        get: function () {\n            return this._state;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Transition to \"low\".\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.lower = function () {\n        return this.transition('low');\n    };\n    /**\n     * Transition to \"high\".\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.raise = function () {\n        return this.transition('high');\n    };\n    /**\n     * Transition to a new state.\n     * @param {string} newState\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.transition = function (newState) {\n        if (!states[this.state].has(newState)) {\n            throw createUnreachableStateError(this.state, newState);\n        }\n        this._state = newState;\n        return this;\n    };\n    /**\n     * Return a Promise that resolves when the {@link Latch} transitions to\n     * the specified state.\n     * @param {string} state\n     * @returns {Promise<this>}\n     */\n    Latch.prototype.when = function (state) {\n        if (this.state === state) {\n            return Promise.resolve(this);\n        }\n        if (!states[this.state].has(state)) {\n            return Promise.reject(createUnreachableStateError(this.state, state));\n        }\n        var deferred = defer();\n        this._whenDeferreds.get(state).add(deferred);\n        return deferred.promise;\n    };\n    return Latch;\n}());\n/**\n   * Create an unreachable state Error.\n   * @param {string} from - state to be transitioned from\n   * @param {string} to - state to be transitioned to\n   * @return {Error}\n   */\nfunction createUnreachableStateError(from, to) {\n    return new Error(\"Cannot transition from \\\"\" + from + \"\\\" to \\\"\" + to + \"\\\"\");\n}\nmodule.exports = Latch;\n//# sourceMappingURL=latch.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link TrackPublication} represents a {@link Track} that\n * has been published to a {@link Room}.\n * @property {string} trackName - the published {@link Track}'s name\n * @property {Track.SID} trackSid - SID assigned to the published {@link Track}\n * @emits TrackPublication#trackDisabled\n * @emits TrackPublication#trackEnabled\n */\nvar TrackPublication = /** @class */ (function (_super) {\n    __extends(TrackPublication, _super);\n    /**\n     * Construct a {@link TrackPublication}.\n     * @param {string} trackName - the published {@link Track}'s name\n     * @param {Track.SID} trackSid - SID assigned to the {@link Track}\n     * @param {TrackPublicationOptions} options - {@link TrackPublication} options\n     */\n    function TrackPublication(trackName, trackSid, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            _log: {\n                value: options.log ? options.log.createLog('default', _this) : new Log('default', _this, logLevels, options.loggerName)\n            },\n            trackName: {\n                enumerable: true,\n                value: trackName\n            },\n            trackSid: {\n                enumerable: true,\n                value: trackSid\n            }\n        });\n        return _this;\n    }\n    TrackPublication.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    TrackPublication.prototype.toString = function () {\n        return \"[TrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return TrackPublication;\n}(EventEmitter));\n/**\n * The published {@link Track} was disabled.\n * @event TrackPublication#trackDisabled\n */\n/**\n * The published {@link Track} was enabled.\n * @event TrackPublication#trackEnabled\n */\n/**\n * A {@link LocalAudioTrackPublication} or a {@link RemoteAudioTrackPublication}.\n * @typedef {LocalAudioTrackPublication|RemoteAudioTrackPublication} AudioTrackPublication\n */\n/**\n * A {@link LocalDataTrackPublication} or a {@link RemoteDataTrackPublication}.\n * @typedef {LocalDataTrackPublication|RemoteDataTrackPublication} DataTrackPublication\n */\n/**\n * A {@link LocalVideoTrackPublication} or a {@link RemoteVideoTrackPublication}.\n * @typedef {LocalVideoTrackPublication|RemoteVideoTrackPublication} VideoTrackPublication\n */\n/**\n * {@link TrackPublication} options\n * @typedef {object} TrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = TrackPublication;\n//# sourceMappingURL=trackpublication.js.map","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar _a = require('./util'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion;\nvar getSdpFormat = require('./util/sdp').getSdpFormat;\nvar guess = guessBrowser();\nvar guessVersion = guessBrowserVersion();\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar chromeMajorVersion = isChrome ? guessVersion.major : null;\nvar CHROME_LEGACY_MAX_AUDIO_LEVEL = 32767;\n/**\n * Get the standardized {@link RTCPeerConnection} statistics.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.<StandardizedStatsResponse>}\n */\nfunction getStats(peerConnection, options) {\n    if (!(peerConnection && typeof peerConnection.getStats === 'function')) {\n        return Promise.reject(new Error('Given PeerConnection does not support getStats'));\n    }\n    return _getStats(peerConnection, options);\n}\n/**\n * getStats() implementation.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.<StandardizedStatsResponse>}\n */\nfunction _getStats(peerConnection, options) {\n    var localAudioTracks = getTracks(peerConnection, 'audio', 'local');\n    var localVideoTracks = getTracks(peerConnection, 'video', 'local');\n    var remoteAudioTracks = getTracks(peerConnection, 'audio');\n    var remoteVideoTracks = getTracks(peerConnection, 'video');\n    var statsResponse = {\n        activeIceCandidatePair: null,\n        localAudioTrackStats: [],\n        localVideoTrackStats: [],\n        remoteAudioTrackStats: [],\n        remoteVideoTrackStats: []\n    };\n    var trackStatsPromises = flatMap([\n        [localAudioTracks, 'localAudioTrackStats', false],\n        [localVideoTracks, 'localVideoTrackStats', false],\n        [remoteAudioTracks, 'remoteAudioTrackStats', true],\n        [remoteVideoTracks, 'remoteVideoTrackStats', true]\n    ], function (_a) {\n        var _b = __read(_a, 3), tracks = _b[0], statsArrayName = _b[1], isRemote = _b[2];\n        return tracks.map(function (track) {\n            return getTrackStats(peerConnection, track, Object.assign({ isRemote: isRemote }, options)).then(function (trackStatsArray) {\n                trackStatsArray.forEach(function (trackStats) {\n                    trackStats.trackId = track.id;\n                    statsResponse[statsArrayName].push(trackStats);\n                });\n            });\n        });\n    });\n    return Promise.all(trackStatsPromises).then(function () {\n        return getActiveIceCandidatePairStats(peerConnection, options);\n    }).then(function (activeIceCandidatePairStatsReport) {\n        statsResponse.activeIceCandidatePair = activeIceCandidatePairStatsReport;\n        return statsResponse;\n    });\n}\n/**\n * Generate the {@link StandardizedActiveIceCandidatePairStatsReport} for the\n * {@link RTCPeerConnection}.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options]\n * @returns {Promise<StandardizedActiveIceCandidatePairStatsReport>}\n */\nfunction getActiveIceCandidatePairStats(peerConnection, options) {\n    if (options === void 0) { options = {}; }\n    if (typeof options.testForChrome !== 'undefined' || isChrome\n        || typeof options.testForSafari !== 'undefined' || isSafari) {\n        return peerConnection.getStats().then(standardizeChromeOrSafariActiveIceCandidatePairStats);\n    }\n    if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n        return peerConnection.getStats().then(standardizeFirefoxActiveIceCandidatePairStats);\n    }\n    return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Chrome or Safari.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeChromeOrSafariActiveIceCandidatePairStats(stats) {\n    var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n        var nominated = _a.nominated, type = _a.type;\n        return type === 'candidate-pair' && nominated;\n    });\n    if (!activeCandidatePairStats) {\n        return null;\n    }\n    var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n    var standardizedCandidateStatsKeys = [\n        { key: 'candidateType', type: 'string' },\n        { key: 'ip', type: 'string' },\n        { key: 'port', type: 'number' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', type: 'string' },\n        { key: 'url', type: 'string' }\n    ];\n    var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n        { key: 'deleted', type: 'boolean' },\n        { key: 'relayProtocol', type: 'string' }\n    ]);\n    var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n        ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n            var key = _a.key, type = _a.type;\n            report[key] = typeof activeLocalCandidateStats[key] === type\n                ? activeLocalCandidateStats[key]\n                : key === 'deleted' ? false : null;\n            return report;\n        }, {})\n        : null;\n    var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n        ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n            var key = _a.key, type = _a.type;\n            report[key] = typeof activeRemoteCandidateStats[key] === type\n                ? activeRemoteCandidateStats[key]\n                : null;\n            return report;\n        }, {})\n        : null;\n    return [\n        { key: 'availableIncomingBitrate', type: 'number' },\n        { key: 'availableOutgoingBitrate', type: 'number' },\n        { key: 'bytesReceived', type: 'number' },\n        { key: 'bytesSent', type: 'number' },\n        { key: 'consentRequestsSent', type: 'number' },\n        { key: 'currentRoundTripTime', type: 'number' },\n        { key: 'lastPacketReceivedTimestamp', type: 'number' },\n        { key: 'lastPacketSentTimestamp', type: 'number' },\n        { key: 'nominated', type: 'boolean' },\n        { key: 'priority', type: 'number' },\n        { key: 'readable', type: 'boolean' },\n        { key: 'requestsReceived', type: 'number' },\n        { key: 'requestsSent', type: 'number' },\n        { key: 'responsesReceived', type: 'number' },\n        { key: 'responsesSent', type: 'number' },\n        { key: 'retransmissionsReceived', type: 'number' },\n        { key: 'retransmissionsSent', type: 'number' },\n        { key: 'state', type: 'string', fixup: function (state) { return state === 'inprogress' ? 'in-progress' : state; } },\n        { key: 'totalRoundTripTime', type: 'number' },\n        { key: 'transportId', type: 'string' },\n        { key: 'writable', type: 'boolean' }\n    ].reduce(function (report, _a) {\n        var key = _a.key, type = _a.type, fixup = _a.fixup;\n        report[key] = typeof activeCandidatePairStats[key] === type\n            ? (fixup ? fixup(activeCandidatePairStats[key]) : activeCandidatePairStats[key])\n            : null;\n        return report;\n    }, {\n        localCandidate: standatdizedLocalCandidateStatsReport,\n        remoteCandidate: standardizedRemoteCandidateStatsReport\n    });\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Firefox.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeFirefoxActiveIceCandidatePairStats(stats) {\n    var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n        var nominated = _a.nominated, type = _a.type;\n        return type === 'candidate-pair' && nominated;\n    });\n    if (!activeCandidatePairStats) {\n        return null;\n    }\n    var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n    var standardizedCandidateStatsKeys = [\n        { key: 'candidateType', type: 'string' },\n        { key: 'ip', ffKeys: ['address', 'ipAddress'], type: 'string' },\n        { key: 'port', ffKeys: ['portNumber'], type: 'number' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', ffKeys: ['transport'], type: 'string' },\n        { key: 'url', type: 'string' }\n    ];\n    var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n        { key: 'deleted', type: 'boolean' },\n        { key: 'relayProtocol', type: 'string' }\n    ]);\n    var candidateTypes = {\n        host: 'host',\n        peerreflexive: 'prflx',\n        relayed: 'relay',\n        serverreflexive: 'srflx'\n    };\n    var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n        ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n            var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n            var localStatKey = ffKeys && ffKeys.find(function (key) { return key in activeLocalCandidateStats; }) || key;\n            report[key] = typeof activeLocalCandidateStats[localStatKey] === type\n                ? localStatKey === 'candidateType'\n                    ? candidateTypes[activeLocalCandidateStats[localStatKey]] || activeLocalCandidateStats[localStatKey]\n                    : activeLocalCandidateStats[localStatKey]\n                : localStatKey === 'deleted' ? false : null;\n            return report;\n        }, {})\n        : null;\n    var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n        ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n            var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n            var remoteStatKey = ffKeys && ffKeys.find(function (key) { return key in activeRemoteCandidateStats; }) || key;\n            report[key] = typeof activeRemoteCandidateStats[remoteStatKey] === type\n                ? remoteStatKey === 'candidateType'\n                    ? candidateTypes[activeRemoteCandidateStats[remoteStatKey]] || activeRemoteCandidateStats[remoteStatKey]\n                    : activeRemoteCandidateStats[remoteStatKey]\n                : null;\n            return report;\n        }, {})\n        : null;\n    return [\n        { key: 'availableIncomingBitrate', type: 'number' },\n        { key: 'availableOutgoingBitrate', type: 'number' },\n        { key: 'bytesReceived', type: 'number' },\n        { key: 'bytesSent', type: 'number' },\n        { key: 'consentRequestsSent', type: 'number' },\n        { key: 'currentRoundTripTime', type: 'number' },\n        { key: 'lastPacketReceivedTimestamp', type: 'number' },\n        { key: 'lastPacketSentTimestamp', type: 'number' },\n        { key: 'nominated', type: 'boolean' },\n        { key: 'priority', type: 'number' },\n        { key: 'readable', type: 'boolean' },\n        { key: 'requestsReceived', type: 'number' },\n        { key: 'requestsSent', type: 'number' },\n        { key: 'responsesReceived', type: 'number' },\n        { key: 'responsesSent', type: 'number' },\n        { key: 'retransmissionsReceived', type: 'number' },\n        { key: 'retransmissionsSent', type: 'number' },\n        { key: 'state', type: 'string' },\n        { key: 'totalRoundTripTime', type: 'number' },\n        { key: 'transportId', type: 'string' },\n        { key: 'writable', type: 'boolean' }\n    ].reduce(function (report, _a) {\n        var key = _a.key, type = _a.type;\n        report[key] = typeof activeCandidatePairStats[key] === type\n            ? activeCandidatePairStats[key]\n            : null;\n        return report;\n    }, {\n        localCandidate: standatdizedLocalCandidateStatsReport,\n        remoteCandidate: standardizedRemoteCandidateStatsReport\n    });\n}\n/**\n * Get local/remote audio/video MediaStreamTracks.\n * @param {RTCPeerConnection} peerConnection - The RTCPeerConnection\n * @param {string} kind - 'audio' or 'video'\n * @param {string} [localOrRemote] - 'local' or 'remote'\n * @returns {Array<MediaStreamTrack>}\n */\nfunction getTracks(peerConnection, kind, localOrRemote) {\n    var getSendersOrReceivers = localOrRemote === 'local' ? 'getSenders' : 'getReceivers';\n    if (peerConnection[getSendersOrReceivers]) {\n        return peerConnection[getSendersOrReceivers]()\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        })\n            .filter(function (track) { return track && track.kind === kind; });\n    }\n    var getStreams = localOrRemote === 'local' ? 'getLocalStreams' : 'getRemoteStreams';\n    var getTracks = kind === 'audio' ? 'getAudioTracks' : 'getVideoTracks';\n    return flatMap(peerConnection[getStreams](), function (stream) { return stream[getTracks](); });\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} [options] - Used for testing\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction getTrackStats(peerConnection, track, options) {\n    if (options === void 0) { options = {}; }\n    if (typeof options.testForChrome !== 'undefined' || isChrome) {\n        return chromeOrSafariGetTrackStats(peerConnection, track, options);\n    }\n    if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n        return firefoxGetTrackStats(peerConnection, track, options);\n    }\n    if (typeof options.testForSafari !== 'undefined' || isSafari) {\n        if (typeof options.testForSafari !== 'undefined' || getSdpFormat() === 'unified') {\n            return chromeOrSafariGetTrackStats(peerConnection, track, options);\n        }\n        // NOTE(syerrapragada): getStats() is not supported on\n        // Safari versions where plan-b is the SDP format\n        // due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601\n        return Promise.reject(new Error([\n            'getStats() is not supported on this version of Safari',\n            'due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601'\n        ].join(' ')));\n    }\n    return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Chrome or Safari.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options - Used for testing\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction chromeOrSafariGetTrackStats(peerConnection, track, options) {\n    if (chromeMajorVersion && chromeMajorVersion < 67) {\n        return new Promise(function (resolve, reject) {\n            peerConnection.getStats(function (response) {\n                resolve([standardizeChromeLegacyStats(response, track)]);\n            }, null, reject);\n        });\n    }\n    return peerConnection.getStats(track).then(function (response) {\n        return standardizeChromeOrSafariStats(response, options);\n    });\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Firefox.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction firefoxGetTrackStats(peerConnection, track, options) {\n    return peerConnection.getStats(track).then(function (response) {\n        return [standardizeFirefoxStats(response, options)];\n    });\n}\n/**\n * Standardize the MediaStreamTrack's legacy statistics in Chrome.\n * @param {RTCStatsResponse} response\n * @param {MediaStreamTrack} track\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeChromeLegacyStats(response, track) {\n    var ssrcReport = response.result().find(function (report) {\n        return report.type === 'ssrc' && report.stat('googTrackId') === track.id;\n    });\n    var standardizedStats = {};\n    if (ssrcReport) {\n        standardizedStats.timestamp = Math.round(Number(ssrcReport.timestamp));\n        standardizedStats = ssrcReport.names().reduce(function (stats, name) {\n            switch (name) {\n                case 'googCodecName':\n                    stats.codecName = ssrcReport.stat(name);\n                    break;\n                case 'googRtt':\n                    stats.roundTripTime = Number(ssrcReport.stat(name));\n                    break;\n                case 'googJitterReceived':\n                    stats.jitter = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthInput':\n                    stats.frameWidthInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightInput':\n                    stats.frameHeightInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthSent':\n                    stats.frameWidthSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightSent':\n                    stats.frameHeightSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthReceived':\n                    stats.frameWidthReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightReceived':\n                    stats.frameHeightReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateInput':\n                    stats.frameRateInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateSent':\n                    stats.frameRateSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateReceived':\n                    stats.frameRateReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'ssrc':\n                    stats[name] = ssrcReport.stat(name);\n                    break;\n                case 'bytesReceived':\n                case 'bytesSent':\n                case 'packetsLost':\n                case 'packetsReceived':\n                case 'packetsSent':\n                case 'audioInputLevel':\n                case 'audioOutputLevel':\n                    stats[name] = Number(ssrcReport.stat(name));\n                    break;\n            }\n            return stats;\n        }, standardizedStats);\n    }\n    return standardizedStats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Chrome or Safari.\n * @param {RTCStatsResponse} response\n * @param {object} options - Used for testing\n * @returns {Array<StandardizedTrackStatsReport>}\n */\nfunction standardizeChromeOrSafariStats(response, _a) {\n    var _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n    if (simulateExceptionWhileStandardizingStats) {\n        throw new Error('Error while gathering stats');\n    }\n    var inbound = null;\n    // NOTE(mpatwardhan): We should expect more than one \"outbound-rtp\" stats for a\n    // VP8 simulcast MediaStreamTrack.\n    var outbound = [];\n    var remoteInbound = null;\n    var remoteOutbound = null;\n    var track = null;\n    var codec = null;\n    var localMedia = null;\n    response.forEach(function (stat) {\n        var type = stat.type;\n        switch (type) {\n            case 'inbound-rtp':\n                inbound = stat;\n                break;\n            case 'outbound-rtp':\n                outbound.push(stat);\n                break;\n            case 'media-source':\n                localMedia = stat;\n                break;\n            case 'track':\n                track = stat;\n                break;\n            case 'codec':\n                codec = stat;\n                break;\n            case 'remote-inbound-rtp':\n                remoteInbound = stat;\n                break;\n            case 'remote-outbound-rtp':\n                remoteOutbound = stat;\n                break;\n        }\n    });\n    var isRemote = track ? track.remoteSource : !localMedia;\n    var mainSources = isRemote ? [inbound] : outbound;\n    var stats = [];\n    var remoteSource = isRemote ? remoteOutbound : remoteInbound; // remote rtp stats\n    mainSources.forEach(function (source) {\n        var standardizedStats = {};\n        var statSources = [\n            source,\n            localMedia,\n            track,\n            codec,\n            remoteSource && remoteSource.ssrc === source.ssrc ? remoteSource : null, // remote rtp stats\n        ];\n        function getStatValue(name) {\n            var sourceFound = statSources.find(function (statSource) {\n                return statSource && typeof statSource[name] !== 'undefined';\n            }) || null;\n            return sourceFound ? sourceFound[name] : null;\n        }\n        var ssrc = getStatValue('ssrc');\n        if (typeof ssrc === 'number') {\n            standardizedStats.ssrc = String(ssrc);\n        }\n        var timestamp = getStatValue('timestamp');\n        standardizedStats.timestamp = Math.round(timestamp);\n        var mimeType = getStatValue('mimeType');\n        if (typeof mimeType === 'string') {\n            mimeType = mimeType.split('/');\n            standardizedStats.codecName = mimeType[mimeType.length - 1];\n        }\n        var roundTripTime = getStatValue('roundTripTime');\n        if (typeof roundTripTime === 'number') {\n            standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n        }\n        var jitter = getStatValue('jitter');\n        if (typeof jitter === 'number') {\n            standardizedStats.jitter = Math.round(jitter * 1000);\n        }\n        var frameWidth = getStatValue('frameWidth');\n        if (typeof frameWidth === 'number') {\n            if (isRemote) {\n                standardizedStats.frameWidthReceived = frameWidth;\n            }\n            else {\n                standardizedStats.frameWidthSent = frameWidth;\n                standardizedStats.frameWidthInput = track ? track.frameWidth : localMedia.width;\n            }\n        }\n        var frameHeight = getStatValue('frameHeight');\n        if (typeof frameHeight === 'number') {\n            if (isRemote) {\n                standardizedStats.frameHeightReceived = frameHeight;\n            }\n            else {\n                standardizedStats.frameHeightSent = frameHeight;\n                standardizedStats.frameHeightInput = track ? track.frameHeight : localMedia.height;\n            }\n        }\n        var framesPerSecond = getStatValue('framesPerSecond');\n        if (typeof framesPerSecond === 'number') {\n            standardizedStats[isRemote ? 'frameRateReceived' : 'frameRateSent'] = framesPerSecond;\n        }\n        var bytesReceived = getStatValue('bytesReceived');\n        if (typeof bytesReceived === 'number') {\n            standardizedStats.bytesReceived = bytesReceived;\n        }\n        var bytesSent = getStatValue('bytesSent');\n        if (typeof bytesSent === 'number') {\n            standardizedStats.bytesSent = bytesSent;\n        }\n        var packetsLost = getStatValue('packetsLost');\n        if (typeof packetsLost === 'number') {\n            standardizedStats.packetsLost = packetsLost;\n        }\n        var packetsReceived = getStatValue('packetsReceived');\n        if (typeof packetsReceived === 'number') {\n            standardizedStats.packetsReceived = packetsReceived;\n        }\n        var packetsSent = getStatValue('packetsSent');\n        if (typeof packetsSent === 'number') {\n            standardizedStats.packetsSent = packetsSent;\n        }\n        var audioLevel = getStatValue('audioLevel');\n        if (typeof audioLevel === 'number') {\n            audioLevel = Math.round(audioLevel * CHROME_LEGACY_MAX_AUDIO_LEVEL);\n            if (isRemote) {\n                standardizedStats.audioOutputLevel = audioLevel;\n            }\n            else {\n                standardizedStats.audioInputLevel = audioLevel;\n            }\n        }\n        var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n        if (typeof totalPacketSendDalay === 'number') {\n            standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n        }\n        var totalEncodeTime = getStatValue('totalEncodeTime');\n        if (typeof totalEncodeTime === 'number') {\n            standardizedStats.totalEncodeTime = totalEncodeTime;\n        }\n        var framesEncoded = getStatValue('framesEncoded');\n        if (typeof framesEncoded === 'number') {\n            standardizedStats.framesEncoded = framesEncoded;\n        }\n        var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n        if (typeof estimatedPlayoutTimestamp === 'number') {\n            standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n        }\n        var totalDecodeTime = getStatValue('totalDecodeTime');\n        if (typeof totalDecodeTime === 'number') {\n            standardizedStats.totalDecodeTime = totalDecodeTime;\n        }\n        var framesDecoded = getStatValue('framesDecoded');\n        if (typeof framesDecoded === 'number') {\n            standardizedStats.framesDecoded = framesDecoded;\n        }\n        var jitterBufferDelay = getStatValue('jitterBufferDelay');\n        if (typeof jitterBufferDelay === 'number') {\n            standardizedStats.jitterBufferDelay = jitterBufferDelay;\n        }\n        var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n        if (typeof jitterBufferEmittedCount === 'number') {\n            standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n        }\n        stats.push(standardizedStats);\n    });\n    return stats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Firefox.\n * @param {RTCStatsReport} response\n * @param {object} options - Used for testing\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeFirefoxStats(response, _a) {\n    if (response === void 0) { response = new Map(); }\n    var isRemote = _a.isRemote, _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n    if (simulateExceptionWhileStandardizingStats) {\n        throw new Error('Error while gathering stats');\n    }\n    // NOTE(mroberts): If getStats is called on a closed RTCPeerConnection,\n    // Firefox returns undefined instead of an RTCStatsReport. We workaround this\n    // here. See the following bug for more details:\n    //\n    //   https://bugzilla.mozilla.org/show_bug.cgi?id=1377225\n    //\n    var inbound = null;\n    var outbound = null;\n    // NOTE(mmalavalli): Starting from Firefox 63, RTC{Inbound, Outbound}RTPStreamStats.isRemote\n    // will be deprecated, followed by its removal in Firefox 66. Also, trying to\n    // access members of the remote RTC{Inbound, Outbound}RTPStreamStats without\n    // using RTCStatsReport.get(remoteId) will trigger console warnings. So, we\n    // no longer depend on \"isRemote\", and we call RTCStatsReport.get(remoteId)\n    // to access the remote RTC{Inbound, Outbound}RTPStreamStats.\n    //\n    // Source: https://blog.mozilla.org/webrtc/getstats-isremote-65/\n    //\n    response.forEach(function (stat) {\n        var isRemote = stat.isRemote, remoteId = stat.remoteId, type = stat.type;\n        if (isRemote) {\n            return;\n        }\n        switch (type) {\n            case 'inbound-rtp':\n                inbound = stat;\n                outbound = response.get(remoteId);\n                break;\n            case 'outbound-rtp':\n                outbound = stat;\n                inbound = response.get(remoteId);\n                break;\n        }\n    });\n    var first = isRemote ? inbound : outbound;\n    var second = isRemote ? outbound : inbound;\n    function getStatValue(name) {\n        if (first && typeof first[name] !== 'undefined') {\n            return first[name];\n        }\n        if (second && typeof second[name] !== 'undefined') {\n            return second[name];\n        }\n        return null;\n    }\n    var standardizedStats = {};\n    var timestamp = getStatValue('timestamp');\n    standardizedStats.timestamp = Math.round(timestamp);\n    var ssrc = getStatValue('ssrc');\n    if (typeof ssrc === 'number') {\n        standardizedStats.ssrc = String(ssrc);\n    }\n    var bytesSent = getStatValue('bytesSent');\n    if (typeof bytesSent === 'number') {\n        standardizedStats.bytesSent = bytesSent;\n    }\n    var packetsLost = getStatValue('packetsLost');\n    if (typeof packetsLost === 'number') {\n        standardizedStats.packetsLost = packetsLost;\n    }\n    var packetsSent = getStatValue('packetsSent');\n    if (typeof packetsSent === 'number') {\n        standardizedStats.packetsSent = packetsSent;\n    }\n    var roundTripTime = getStatValue('roundTripTime');\n    if (typeof roundTripTime === 'number') {\n        // roundTripTime is double - measured in seconds.\n        // https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats-roundtriptime\n        // cover it to milliseconds (and make it integer)\n        standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n    }\n    var jitter = getStatValue('jitter');\n    if (typeof jitter === 'number') {\n        standardizedStats.jitter = Math.round(jitter * 1000);\n    }\n    var frameRateSent = getStatValue('framerateMean');\n    if (typeof frameRateSent === 'number') {\n        standardizedStats.frameRateSent = Math.round(frameRateSent);\n    }\n    var bytesReceived = getStatValue('bytesReceived');\n    if (typeof bytesReceived === 'number') {\n        standardizedStats.bytesReceived = bytesReceived;\n    }\n    var packetsReceived = getStatValue('packetsReceived');\n    if (typeof packetsReceived === 'number') {\n        standardizedStats.packetsReceived = packetsReceived;\n    }\n    var frameRateReceived = getStatValue('framerateMean');\n    if (typeof frameRateReceived === 'number') {\n        standardizedStats.frameRateReceived = Math.round(frameRateReceived);\n    }\n    var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n    if (typeof totalPacketSendDalay === 'number') {\n        standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n    }\n    var totalEncodeTime = getStatValue('totalEncodeTime');\n    if (typeof totalEncodeTime === 'number') {\n        standardizedStats.totalEncodeTime = totalEncodeTime;\n    }\n    var framesEncoded = getStatValue('framesEncoded');\n    if (typeof framesEncoded === 'number') {\n        standardizedStats.framesEncoded = framesEncoded;\n    }\n    var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n    if (typeof estimatedPlayoutTimestamp === 'number') {\n        standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n    }\n    var totalDecodeTime = getStatValue('totalDecodeTime');\n    if (typeof totalDecodeTime === 'number') {\n        standardizedStats.totalDecodeTime = totalDecodeTime;\n    }\n    var framesDecoded = getStatValue('framesDecoded');\n    if (typeof framesDecoded === 'number') {\n        standardizedStats.framesDecoded = framesDecoded;\n    }\n    var jitterBufferDelay = getStatValue('jitterBufferDelay');\n    if (typeof jitterBufferDelay === 'number') {\n        standardizedStats.jitterBufferDelay = jitterBufferDelay;\n    }\n    var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n    if (typeof jitterBufferEmittedCount === 'number') {\n        standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n    }\n    return standardizedStats;\n}\n/**\n * Standardized RTCIceCandidate statistics.\n * @typedef {object} StandardizedIceCandidateStatsReport\n * @property {'host'|'prflx'|'relay'|'srflx'} candidateType\n * @property {string} ip\n * @property {number} port\n * @property {number} priority\n * @property {'tcp'|'udp'} protocol\n * @property {string} url\n */\n/**\n * Standardized local RTCIceCandidate statistics.\n * @typedef {StandardizedIceCandidateStatsReport} StandardizedLocalIceCandidateStatsReport\n * @property {boolean} [deleted=false]\n * @property {'tcp'|'tls'|'udp'} relayProtocol\n */\n/**\n * Standardized active RTCIceCandidate pair statistics.\n * @typedef {object} StandardizedActiveIceCandidatePairStatsReport\n * @property {number} availableIncomingBitrate\n * @property {number} availableOutgoingBitrate\n * @property {number} bytesReceived\n * @property {number} bytesSent\n * @property {number} consentRequestsSent\n * @property {number} currentRoundTripTime\n * @property {number} lastPacketReceivedTimestamp\n * @property {number} lastPacketSentTimestamp\n * @property {StandardizedLocalIceCandidateStatsReport} localCandidate\n * @property {boolean} nominated\n * @property {number} priority\n * @property {boolean} readable\n * @property {StandardizedIceCandidateStatsReport} remoteCandidate\n * @property {number} requestsReceived\n * @property {number} requestsSent\n * @property {number} responsesReceived\n * @property {number} responsesSent\n * @property {number} retransmissionsReceived\n * @property {number} retransmissionsSent\n * @property {'frozen'|'waiting'|'in-progress'|'failed'|'succeeded'} state\n * @property {number} totalRoundTripTime\n * @property {string} transportId\n * @property {boolean} writable\n */\n/**\n * Standardized {@link RTCPeerConnection} statistics.\n * @typedef {Object} StandardizedStatsResponse\n * @property {StandardizedActiveIceCandidatePairStatsReport} activeIceCandidatePair - Stats for active ICE candidate pair\n * @property Array<StandardizedTrackStatsReport> localAudioTrackStats - Stats for local audio MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> localVideoTrackStats - Stats for local video MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> remoteAudioTrackStats - Stats for remote audio MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> remoteVideoTrackStats - Stats for remote video MediaStreamTracks\n */\n/**\n * Standardized MediaStreamTrack statistics.\n * @typedef {Object} StandardizedTrackStatsReport\n * @property {string} trackId - MediaStreamTrack ID\n * @property {string} ssrc - SSRC of the MediaStreamTrack\n * @property {number} timestamp - The Unix timestamp in milliseconds\n * @property {string} [codecName] - Name of the codec used to encode the MediaStreamTrack's media\n * @property {number} [roundTripTime] - Round trip time in milliseconds\n * @property {number} [jitter] - Jitter in milliseconds\n * @property {number} [frameWidthInput] - Width in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameHeightInput] - Height in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameWidthSent] - Width in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameHeightSent] - Height in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameWidthReceived] - Width in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameHeightReceived] - Height in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameRateInput] - Captured frames per second of the local video MediaStreamTrack\n * @property {number} [frameRateSent] - Frames per second of the local video MediaStreamTrack's encoded video\n * @property {number} [frameRateReceived] - Frames per second of the remote video MediaStreamTrack's received video\n * @property {number} [bytesReceived] - Number of bytes of the remote MediaStreamTrack's media received\n * @property {number} [bytesSent] - Number of bytes of the local MediaStreamTrack's media sent\n * @property {number} [packetsLost] - Number of packets of the MediaStreamTrack's media lost\n * @property {number} [packetsReceived] - Number of packets of the remote MediaStreamTrack's media received\n * @property {number} [packetsSent] - Number of packets of the local MediaStreamTrack's media sent\n * @property {number} [totalPacketSendDelay] - The total number of seconds that the local MediaStreamTrack's packets\n *  have spent buffered locally before being sent over the network\n * @property {number} [totalEncodeTime] - The total number of seconds spent on encoding the local MediaStreamTrack's frames\n * @property {number} [framesEncoded] - The total number of frames of the local MediaStreamTrack that have been encoded sor far\n * @property {number} [estimatedPlayoutTimestamp] - The estimated playout time of the remote MediaStreamTrack\n * @property {number} [totalDecodeTime] - The total number of seconds spent on decoding the remote MediaStreamTrack's frames\n * @property {number} [framesDecoded] - The total number of frames of the remote MediaStreamTrack that have been decoded sor far\n * @property {number} [jitterBufferDelay] - The sum of the time, in seconds, each audio sample or a video frame of the remote\n *   MediaStreamTrack takes from the time the first packet is received by the jitter buffer to the time it exits the jitter buffer\n * @property {number} [jitterBufferEmittedCount] - The total number of audio samples or video frames that have come out of the jitter buffer\n * @property {AudioLevel} [audioInputLevel] - The {@link AudioLevel} of the local audio MediaStreamTrack\n * @property {AudioLevel} [audioOutputLevel] - The {@link AudioLevel} of the remote video MediaStreamTrack\n */\nmodule.exports = getStats;\n//# sourceMappingURL=getstats.js.map","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","'use strict';\nrequire('../../modules/es.number.constructor');\nrequire('../../modules/es.number.epsilon');\nrequire('../../modules/es.number.is-finite');\nrequire('../../modules/es.number.is-integer');\nrequire('../../modules/es.number.is-nan');\nrequire('../../modules/es.number.is-safe-integer');\nrequire('../../modules/es.number.max-safe-integer');\nrequire('../../modules/es.number.min-safe-integer');\nrequire('../../modules/es.number.parse-float');\nrequire('../../modules/es.number.parse-int');\nrequire('../../modules/es.number.to-exponential');\nrequire('../../modules/es.number.to-fixed');\nrequire('../../modules/es.number.to-precision');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n      if (result != null) {\n        error = result;\n      }\n    });\n\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  out += 'var ' + ($errs) + ' = errors;';\n  if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    var $key = 'key' + $lvl,\n      $idx = 'idx' + $lvl,\n      $i = 'i' + $lvl,\n      $invalidName = '\\' + ' + $key + ' + \\'',\n      $dataNxt = $it.dataLevel = it.dataLevel + 1,\n      $nextData = 'data' + $dataNxt,\n      $dataProperties = 'dataProperties' + $lvl,\n      $ownProperties = it.opts.ownProperties,\n      $currentBaseId = it.baseId;\n    if ($ownProperties) {\n      out += ' var ' + ($dataProperties) + ' = undefined; ';\n    }\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    out += ' var startErrs' + ($lvl) + ' = errors; ';\n    var $passData = $key;\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    if ($breakOnError) {\n      out += ' break; ';\n    }\n    out += ' } }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) !== INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = thisTimeValue(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? nativeDateToString(this) : INVALID_DATE;\n  });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module params\n */\n/** */\nvar common_1 = require(\"../common/common\");\n/** @internalapi */\nvar StateParams = /** @class */ (function () {\n    function StateParams(params) {\n        if (params === void 0) { params = {}; }\n        common_1.extend(this, params);\n    }\n    /**\n     * Merges a set of parameters with all parameters inherited between the common parents of the\n     * current state and a given destination state.\n     *\n     * @param {Object} newParams The set of parameters which will be composited with inherited params.\n     * @param {Object} $current Internal definition of object representing the current state.\n     * @param {Object} $to Internal definition of object representing state to transition to.\n     */\n    StateParams.prototype.$inherit = function (newParams, $current, $to) {\n        var parentParams;\n        var parents = common_1.ancestors($current, $to), inherited = {}, inheritList = [];\n        for (var i in parents) {\n            if (!parents[i] || !parents[i].params)\n                continue;\n            parentParams = Object.keys(parents[i].params);\n            if (!parentParams.length)\n                continue;\n            for (var j in parentParams) {\n                if (inheritList.indexOf(parentParams[j]) >= 0)\n                    continue;\n                inheritList.push(parentParams[j]);\n                inherited[parentParams[j]] = this[parentParams[j]];\n            }\n        }\n        return common_1.extend({}, inherited, newParams);\n    };\n    return StateParams;\n}());\nexports.StateParams = StateParams;\n//# sourceMappingURL=stateParams.js.map","'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  placement: 'right'\n};\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.popper,\n      _2 = _ref.show,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"popper\", \"show\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n\n  var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n      primaryPlacement = _ref2[0];\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    style: style,\n    role: \"tooltip\",\n    \"x-placement\": primaryPlacement,\n    className: classNames(className, bsPrefix, \"bs-tooltip-\" + primaryPlacement)\n  }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps)), /*#__PURE__*/React.createElement(\"div\", {\n    className: bsPrefix + \"-inner\"\n  }, children));\n});\nTooltip.defaultProps = defaultProps;\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;","/* nvd3 version 1.8.6 (https://github.com/novus/nvd3) 2017-08-23 */\n(function(){\n\n// set up main nv object\nvar nv = {};\n\n// the major global objects under the nv namespace\nnv.dev = false; //set false when in production\nnv.tooltip = nv.tooltip || {}; // For the tooltip system\nnv.utils = nv.utils || {}; // Utility subsystem\nnv.models = nv.models || {}; //stores all the possible models/components\nnv.charts = {}; //stores all the ready to use charts\nnv.logs = {}; //stores some statistics and potential error messages\nnv.dom = {}; //DOM manipulation functions\n\n// Node/CommonJS - require D3\nif (typeof(module) !== 'undefined' && typeof(exports) !== 'undefined' && typeof(d3) == 'undefined') {\n    d3 = require('d3');\n}\n\nnv.dispatch = d3.dispatch('render_start', 'render_end');\n\n// Function bind polyfill\n// Needed ONLY for phantomJS as it's missing until version 2.0 which is unreleased as of this comment\n// https://github.com/ariya/phantomjs/issues/10522\n// http://kangax.github.io/compat-table/es5/#Function.prototype.bind\n// phantomJS is used for running the test suite\nif (!Function.prototype.bind) {\n    Function.prototype.bind = function (oThis) {\n        if (typeof this !== \"function\") {\n            // closest thing possible to the ECMAScript 5 internal IsCallable function\n            throw new TypeError(\"Function.prototype.bind - what is trying to be bound is not callable\");\n        }\n\n        var aArgs = Array.prototype.slice.call(arguments, 1),\n            fToBind = this,\n            fNOP = function () {},\n            fBound = function () {\n                return fToBind.apply(this instanceof fNOP && oThis\n                        ? this\n                        : oThis,\n                    aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n        fNOP.prototype = this.prototype;\n        fBound.prototype = new fNOP();\n        return fBound;\n    };\n}\n\n//  Development render timers - disabled if dev = false\nif (nv.dev) {\n    nv.dispatch.on('render_start', function(e) {\n        nv.logs.startTime = +new Date();\n    });\n\n    nv.dispatch.on('render_end', function(e) {\n        nv.logs.endTime = +new Date();\n        nv.logs.totalTime = nv.logs.endTime - nv.logs.startTime;\n        nv.log('total', nv.logs.totalTime); // used for development, to keep track of graph generation times\n    });\n}\n\n// Logs all arguments, and returns the last so you can test things in place\n// Note: in IE8 console.log is an object not a function, and if modernizr is used\n// then calling Function.prototype.bind with with anything other than a function\n// causes a TypeError to be thrown.\nnv.log = function() {\n    if (nv.dev && window.console && console.log && console.log.apply)\n        console.log.apply(console, arguments);\n    else if (nv.dev && window.console && typeof console.log == \"function\" && Function.prototype.bind) {\n        var log = Function.prototype.bind.call(console.log, console);\n        log.apply(console, arguments);\n    }\n    return arguments[arguments.length - 1];\n};\n\n// print console warning, should be used by deprecated functions\nnv.deprecated = function(name, info) {\n    if (console && console.warn) {\n        console.warn('nvd3 warning: `' + name + '` has been deprecated. ', info || '');\n    }\n};\n\n// The nv.render function is used to queue up chart rendering\n// in non-blocking async functions.\n// When all queued charts are done rendering, nv.dispatch.render_end is invoked.\nnv.render = function render(step) {\n    // number of graphs to generate in each timeout loop\n    step = step || 1;\n\n    nv.render.active = true;\n    nv.dispatch.render_start();\n\n    var renderLoop = function() {\n        var chart, graph;\n\n        for (var i = 0; i < step && (graph = nv.render.queue[i]); i++) {\n            chart = graph.generate();\n            if (typeof graph.callback == typeof(Function)) graph.callback(chart);\n        }\n\n        nv.render.queue.splice(0, i);\n\n        if (nv.render.queue.length) {\n            setTimeout(renderLoop);\n        }\n        else {\n            nv.dispatch.render_end();\n            nv.render.active = false;\n        }\n    };\n\n    setTimeout(renderLoop);\n};\n\nnv.render.active = false;\nnv.render.queue = [];\n\n/*\nAdds a chart to the async rendering queue. This method can take arguments in two forms:\nnv.addGraph({\n    generate: <Function>\n    callback: <Function>\n})\n\nor\n\nnv.addGraph(<generate Function>, <callback Function>)\n\nThe generate function should contain code that creates the NVD3 model, sets options\non it, adds data to an SVG element, and invokes the chart model. The generate function\nshould return the chart model.  See examples/lineChart.html for a usage example.\n\nThe callback function is optional, and it is called when the generate function completes.\n*/\nnv.addGraph = function(obj) {\n    if (typeof arguments[0] === typeof(Function)) {\n        obj = {generate: arguments[0], callback: arguments[1]};\n    }\n\n    nv.render.queue.push(obj);\n\n    if (!nv.render.active) {\n        nv.render();\n    }\n};\n\n// Node/CommonJS exports\nif (typeof(module) !== 'undefined' && typeof(exports) !== 'undefined') {\n  module.exports = nv;\n}\n\nif (typeof(window) !== 'undefined') {\n  window.nv = nv;\n}\n/* Facade for queueing DOM write operations\r\n * with Fastdom (https://github.com/wilsonpage/fastdom)\r\n * if available.\r\n * This could easily be extended to support alternate\r\n * implementations in the future.\r\n */\r\nnv.dom.write = function(callback) {\r\n\tif (window.fastdom !== undefined) {\r\n\t\treturn fastdom.mutate(callback);\r\n\t}\r\n\treturn callback();\r\n};\r\n\r\n/* Facade for queueing DOM read operations\r\n * with Fastdom (https://github.com/wilsonpage/fastdom)\r\n * if available.\r\n * This could easily be extended to support alternate\r\n * implementations in the future.\r\n */\r\nnv.dom.read = function(callback) {\r\n\tif (window.fastdom !== undefined) {\r\n\t\treturn fastdom.measure(callback);\r\n\t}\r\n\treturn callback();\r\n};\r\n/* Utility class to handle creation of an interactive layer.\n This places a rectangle on top of the chart. When you mouse move over it, it sends a dispatch\n containing the X-coordinate. It can also render a vertical line where the mouse is located.\n\n dispatch.elementMousemove is the important event to latch onto.  It is fired whenever the mouse moves over\n the rectangle. The dispatch is given one object which contains the mouseX/Y location.\n It also has 'pointXValue', which is the conversion of mouseX to the x-axis scale.\n */\nnv.interactiveGuideline = function() {\n    \"use strict\";\n\n    var margin = { left: 0, top: 0 } //Pass the chart's top and left magins. Used to calculate the mouseX/Y.\n        ,   width = null\n        ,   height = null\n        ,   xScale = d3.scale.linear()\n        ,   dispatch = d3.dispatch('elementMousemove', 'elementMouseout', 'elementClick', 'elementDblclick', 'elementMouseDown', 'elementMouseUp')\n        ,   showGuideLine = true\n        ,   svgContainer = null // Must pass the chart's svg, we'll use its mousemove event.\n        ,   tooltip = nv.models.tooltip()\n        ,   isMSIE =  window.ActiveXObject// Checkt if IE by looking for activeX. (excludes IE11)\n    ;\n\n    tooltip\n        .duration(0)\n        .hideDelay(0)\n        .hidden(false);\n\n    function layer(selection) {\n        selection.each(function(data) {\n            var container = d3.select(this);\n            var availableWidth = (width || 960), availableHeight = (height || 400);\n            var wrap = container.selectAll(\"g.nv-wrap.nv-interactiveLineLayer\")\n                .data([data]);\n            var wrapEnter = wrap.enter()\n                .append(\"g\").attr(\"class\", \" nv-wrap nv-interactiveLineLayer\");\n            wrapEnter.append(\"g\").attr(\"class\",\"nv-interactiveGuideLine\");\n\n            if (!svgContainer) {\n                return;\n            }\n\n            function mouseHandler() {\n                var mouseX = d3.event.clientX - this.getBoundingClientRect().left;\n                var mouseY = d3.event.clientY - this.getBoundingClientRect().top;\n\n                var subtractMargin = true;\n                var mouseOutAnyReason = false;\n                if (isMSIE) {\n                    /*\n                     D3.js (or maybe SVG.getScreenCTM) has a nasty bug in Internet Explorer 10.\n                     d3.mouse() returns incorrect X,Y mouse coordinates when mouse moving\n                     over a rect in IE 10.\n                     However, d3.event.offsetX/Y also returns the mouse coordinates\n                     relative to the triggering <rect>. So we use offsetX/Y on IE.\n                     */\n                    mouseX = d3.event.offsetX;\n                    mouseY = d3.event.offsetY;\n\n                    /*\n                     On IE, if you attach a mouse event listener to the <svg> container,\n                     it will actually trigger it for all the child elements (like <path>, <circle>, etc).\n                     When this happens on IE, the offsetX/Y is set to where ever the child element\n                     is located.\n                     As a result, we do NOT need to subtract margins to figure out the mouse X/Y\n                     position under this scenario. Removing the line below *will* cause\n                     the interactive layer to not work right on IE.\n                     */\n                    if(d3.event.target.tagName !== \"svg\") {\n                        subtractMargin = false;\n                    }\n\n                    if (d3.event.target.className.baseVal.match(\"nv-legend\")) {\n                        mouseOutAnyReason = true;\n                    }\n\n                }\n\n                if(subtractMargin) {\n                    mouseX -= margin.left;\n                    mouseY -= margin.top;\n                }\n\n                /* If mouseX/Y is outside of the chart's bounds,\n                 trigger a mouseOut event.\n                 */\n                if (d3.event.type === 'mouseout'\n                    || mouseX < 0 || mouseY < 0\n                    || mouseX > availableWidth || mouseY > availableHeight\n                    || (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined)\n                    || mouseOutAnyReason\n                    ) {\n\n                    if (isMSIE) {\n                        if (d3.event.relatedTarget\n                            && d3.event.relatedTarget.ownerSVGElement === undefined\n                            && (d3.event.relatedTarget.className === undefined\n                                || d3.event.relatedTarget.className.match(tooltip.nvPointerEventsClass))) {\n\n                            return;\n                        }\n                    }\n                    dispatch.elementMouseout({\n                        mouseX: mouseX,\n                        mouseY: mouseY\n                    });\n                    layer.renderGuideLine(null); //hide the guideline\n                    tooltip.hidden(true);\n                    return;\n                } else {\n                    tooltip.hidden(false);\n                }\n\n\n                var scaleIsOrdinal = typeof xScale.rangeBands === 'function';\n                var pointXValue = undefined;\n\n                // Ordinal scale has no invert method\n                if (scaleIsOrdinal) {\n                    var elementIndex = d3.bisect(xScale.range(), mouseX) - 1;\n                    // Check if mouseX is in the range band\n                    if (xScale.range()[elementIndex] + xScale.rangeBand() >= mouseX) {\n                        pointXValue = xScale.domain()[d3.bisect(xScale.range(), mouseX) - 1];\n                    }\n                    else {\n                        dispatch.elementMouseout({\n                            mouseX: mouseX,\n                            mouseY: mouseY\n                        });\n                        layer.renderGuideLine(null); //hide the guideline\n                        tooltip.hidden(true);\n                        return;\n                    }\n                }\n                else {\n                    pointXValue = xScale.invert(mouseX);\n                }\n\n                dispatch.elementMousemove({\n                    mouseX: mouseX,\n                    mouseY: mouseY,\n                    pointXValue: pointXValue\n                });\n\n                //If user double clicks the layer, fire a elementDblclick\n                if (d3.event.type === \"dblclick\") {\n                    dispatch.elementDblclick({\n                        mouseX: mouseX,\n                        mouseY: mouseY,\n                        pointXValue: pointXValue\n                    });\n                }\n\n                // if user single clicks the layer, fire elementClick\n                if (d3.event.type === 'click') {\n                    dispatch.elementClick({\n                        mouseX: mouseX,\n                        mouseY: mouseY,\n                        pointXValue: pointXValue\n                    });\n                }\n\n                // if user presses mouse down the layer, fire elementMouseDown\n                if (d3.event.type === 'mousedown') {\n                \tdispatch.elementMouseDown({\n                \t\tmouseX: mouseX,\n                \t\tmouseY: mouseY,\n                \t\tpointXValue: pointXValue\n                \t});\n                }\n\n                // if user presses mouse down the layer, fire elementMouseUp\n                if (d3.event.type === 'mouseup') {\n                \tdispatch.elementMouseUp({\n                \t\tmouseX: mouseX,\n                \t\tmouseY: mouseY,\n                \t\tpointXValue: pointXValue\n                \t});\n                }\n            }\n\n            svgContainer\n                .on(\"touchmove\",mouseHandler)\n                .on(\"mousemove\",mouseHandler, true)\n                .on(\"mouseout\" ,mouseHandler,true)\n                .on(\"mousedown\" ,mouseHandler,true)\n                .on(\"mouseup\" ,mouseHandler,true)\n                .on(\"dblclick\" ,mouseHandler)\n                .on(\"click\", mouseHandler)\n            ;\n\n            layer.guideLine = null;\n            //Draws a vertical guideline at the given X postion.\n            layer.renderGuideLine = function(x) {\n                if (!showGuideLine) return;\n                if (layer.guideLine && layer.guideLine.attr(\"x1\") === x) return;\n                nv.dom.write(function() {\n                    var line = wrap.select(\".nv-interactiveGuideLine\")\n                        .selectAll(\"line\")\n                        .data((x != null) ? [nv.utils.NaNtoZero(x)] : [], String);\n                    line.enter()\n                        .append(\"line\")\n                        .attr(\"class\", \"nv-guideline\")\n                        .attr(\"x1\", function(d) { return d;})\n                        .attr(\"x2\", function(d) { return d;})\n                        .attr(\"y1\", availableHeight)\n                        .attr(\"y2\",0);\n                    line.exit().remove();\n                });\n            }\n        });\n    }\n\n    layer.dispatch = dispatch;\n    layer.tooltip = tooltip;\n\n    layer.margin = function(_) {\n        if (!arguments.length) return margin;\n        margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;\n        margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;\n        return layer;\n    };\n\n    layer.width = function(_) {\n        if (!arguments.length) return width;\n        width = _;\n        return layer;\n    };\n\n    layer.height = function(_) {\n        if (!arguments.length) return height;\n        height = _;\n        return layer;\n    };\n\n    layer.xScale = function(_) {\n        if (!arguments.length) return xScale;\n        xScale = _;\n        return layer;\n    };\n\n    layer.showGuideLine = function(_) {\n        if (!arguments.length) return showGuideLine;\n        showGuideLine = _;\n        return layer;\n    };\n\n    layer.svgContainer = function(_) {\n        if (!arguments.length) return svgContainer;\n        svgContainer = _;\n        return layer;\n    };\n\n    return layer;\n};\n\n/* Utility class that uses d3.bisect to find the index in a given array, where a search value can be inserted.\n This is different from normal bisectLeft; this function finds the nearest index to insert the search value.\n\n For instance, lets say your array is [1,2,3,5,10,30], and you search for 28.\n Normal d3.bisectLeft will return 4, because 28 is inserted after the number 10.  But interactiveBisect will return 5\n because 28 is closer to 30 than 10.\n\n Unit tests can be found in: interactiveBisectTest.html\n\n Has the following known issues:\n * Will not work if the data points move backwards (ie, 10,9,8,7, etc) or if the data points are in random order.\n * Won't work if there are duplicate x coordinate values.\n */\nnv.interactiveBisect = function (values, searchVal, xAccessor) {\n    \"use strict\";\n    if (! (values instanceof Array)) {\n        return null;\n    }\n    var _xAccessor;\n    if (typeof xAccessor !== 'function') {\n        _xAccessor = function(d) {\n            return d.x;\n        }\n    } else {\n        _xAccessor = xAccessor;\n    }\n    var _cmp = function(d, v) {\n        // Accessors are no longer passed the index of the element along with\n        // the element itself when invoked by d3.bisector.\n        //\n        // Starting at D3 v3.4.4, d3.bisector() started inspecting the\n        // function passed to determine if it should consider it an accessor\n        // or a comparator. This meant that accessors that take two arguments\n        // (expecting an index as the second parameter) are treated as\n        // comparators where the second argument is the search value against\n        // which the first argument is compared.\n        return _xAccessor(d) - v;\n    };\n\n    var bisect = d3.bisector(_cmp).left;\n    var index = d3.max([0, bisect(values,searchVal) - 1]);\n    var currentValue = _xAccessor(values[index]);\n\n    if (typeof currentValue === 'undefined') {\n        currentValue = index;\n    }\n\n    if (currentValue === searchVal) {\n        return index; //found exact match\n    }\n\n    var nextIndex = d3.min([index+1, values.length - 1]);\n    var nextValue = _xAccessor(values[nextIndex]);\n\n    if (typeof nextValue === 'undefined') {\n        nextValue = nextIndex;\n    }\n\n    if (Math.abs(nextValue - searchVal) >= Math.abs(currentValue - searchVal)) {\n        return index;\n    } else {\n        return nextIndex\n    }\n};\n\n/*\n Returns the index in the array \"values\" that is closest to searchVal.\n Only returns an index if searchVal is within some \"threshold\".\n Otherwise, returns null.\n */\nnv.nearestValueIndex = function (values, searchVal, threshold) {\n    \"use strict\";\n    var yDistMax = Infinity, indexToHighlight = null;\n    values.forEach(function(d,i) {\n        var delta = Math.abs(searchVal - d);\n        if ( d != null && delta <= yDistMax && delta < threshold) {\n            yDistMax = delta;\n            indexToHighlight = i;\n        }\n    });\n    return indexToHighlight;\n};\n\n/* Model which can be instantiated to handle tooltip rendering.\n Example usage:\n var tip = nv.models.tooltip().gravity('w').distance(23)\n .data(myDataObject);\n\n tip();    //just invoke the returned function to render tooltip.\n */\nnv.models.tooltip = function() {\n    \"use strict\";\n\n    /*\n    Tooltip data. If data is given in the proper format, a consistent tooltip is generated.\n    Example Format of data:\n    {\n        key: \"Date\",\n        value: \"August 2009\",\n        series: [\n            {key: \"Series 1\", value: \"Value 1\", color: \"#000\"},\n            {key: \"Series 2\", value: \"Value 2\", color: \"#00f\"}\n        ]\n    }\n    */\n    var id = \"nvtooltip-\" + Math.floor(Math.random() * 100000) // Generates a unique id when you create a new tooltip() object.\n        ,   data = null\n        ,   gravity = 'w'   // Can be 'n','s','e','w'. Determines how tooltip is positioned.\n        ,   distance = 25 // Distance to offset tooltip from the mouse location.\n        ,   snapDistance = 0   // Tolerance allowed before tooltip is moved from its current position (creates 'snapping' effect)\n        ,   classes = null  // Attaches additional CSS classes to the tooltip DIV that is created.\n        ,   hidden = true  // Start off hidden, toggle with hide/show functions below.\n        ,   hideDelay = 200  // Delay (in ms) before the tooltip hides after calling hide().\n        ,   tooltip = null // d3 select of the tooltip div.\n        ,   lastPosition = { left: null, top: null } // Last position the tooltip was in.\n        ,   enabled = true  // True -> tooltips are rendered. False -> don't render tooltips.\n        ,   duration = 100 // Tooltip movement duration, in ms.\n        ,   headerEnabled = true // If is to show the tooltip header.\n        ,   nvPointerEventsClass = \"nv-pointer-events-none\" // CSS class to specify whether element should not have mouse events.\n    ;\n\n    // Format function for the tooltip values column.\n    // d is value,\n    // i is series index\n    // p is point containing the value\n    var valueFormatter = function(d, i, p) {\n        return d;\n    };\n\n    // Format function for the tooltip header value.\n    var headerFormatter = function(d) {\n        return d;\n    };\n\n    var keyFormatter = function(d, i) {\n        return d;\n    };\n\n    // By default, the tooltip model renders a beautiful table inside a DIV, returned as HTML\n    // You can override this function if a custom tooltip is desired. For instance, you could directly manipulate\n    // the DOM by accessing elem and returning false.\n    var contentGenerator = function(d, elem) {\n        if (d === null) {\n            return '';\n        }\n\n        var table = d3.select(document.createElement(\"table\"));\n        if (headerEnabled) {\n            var theadEnter = table.selectAll(\"thead\")\n                .data([d])\n                .enter().append(\"thead\");\n\n            theadEnter.append(\"tr\")\n                .append(\"td\")\n                .attr(\"colspan\", 3)\n                .append(\"strong\")\n                .classed(\"x-value\", true)\n                .html(headerFormatter(d.value));\n        }\n\n        var tbodyEnter = table.selectAll(\"tbody\")\n            .data([d])\n            .enter().append(\"tbody\");\n\n        var trowEnter = tbodyEnter.selectAll(\"tr\")\n                .data(function(p) { return p.series})\n                .enter()\n                .append(\"tr\")\n                .classed(\"highlight\", function(p) { return p.highlight});\n\n        trowEnter.append(\"td\")\n            .classed(\"legend-color-guide\",true)\n            .append(\"div\")\n            .style(\"background-color\", function(p) { return p.color});\n\n        trowEnter.append(\"td\")\n            .classed(\"key\",true)\n            .classed(\"total\",function(p) { return !!p.total})\n            .html(function(p, i) { return keyFormatter(p.key, i)});\n\n        trowEnter.append(\"td\")\n            .classed(\"value\",true)\n            .html(function(p, i) { return valueFormatter(p.value, i, p) });\n\n        trowEnter.filter(function (p,i) { return p.percent !== undefined }).append(\"td\")\n            .classed(\"percent\", true)\n            .html(function(p, i) { return \"(\" + d3.format('%')(p.percent) + \")\" });\n\n        trowEnter.selectAll(\"td\").each(function(p) {\n            if (p.highlight) {\n                var opacityScale = d3.scale.linear().domain([0,1]).range([\"#fff\",p.color]);\n                var opacity = 0.6;\n                d3.select(this)\n                    .style(\"border-bottom-color\", opacityScale(opacity))\n                    .style(\"border-top-color\", opacityScale(opacity))\n                ;\n            }\n        });\n\n        var html = table.node().outerHTML;\n        if (d.footer !== undefined)\n            html += \"<div class='footer'>\" + d.footer + \"</div>\";\n        return html;\n\n    };\n\n    /*\n     Function that returns the position (relative to the viewport/document.body)\n     the tooltip should be placed in.\n     Should return: {\n        left: <leftPos>,\n        top: <topPos>\n     }\n     */\n    var position = function() {\n        var pos = {\n            left: d3.event !== null ? d3.event.clientX : 0,\n            top: d3.event !== null ? d3.event.clientY : 0\n        };\n\n        if(getComputedStyle(document.body).transform != 'none') {\n            // Take the offset into account, as now the tooltip is relative\n            // to document.body.\n            var client = document.body.getBoundingClientRect();\n            pos.left -= client.left;\n            pos.top -= client.top;\n        }\n\n        return pos;\n    };\n\n    var dataSeriesExists = function(d) {\n        if (d && d.series) {\n            if (nv.utils.isArray(d.series)) {\n                return true;\n            }\n            // if object, it's okay just convert to array of the object\n            if (nv.utils.isObject(d.series)) {\n                d.series = [d.series];\n                return true;\n            }\n        }\n        return false;\n    };\n\n    // Calculates the gravity offset of the tooltip. Parameter is position of tooltip\n    // relative to the viewport.\n    var calcGravityOffset = function(pos) {\n        var height = tooltip.node().offsetHeight,\n            width = tooltip.node().offsetWidth,\n            clientWidth = document.documentElement.clientWidth, // Don't want scrollbars.\n            clientHeight = document.documentElement.clientHeight, // Don't want scrollbars.\n            left, top, tmp;\n\n        // calculate position based on gravity\n        switch (gravity) {\n            case 'e':\n                left = - width - distance;\n                top = - (height / 2);\n                if(pos.left + left < 0) left = distance;\n                if((tmp = pos.top + top) < 0) top -= tmp;\n                if((tmp = pos.top + top + height) > clientHeight) top -= tmp - clientHeight;\n                break;\n            case 'w':\n                left = distance;\n                top = - (height / 2);\n                if (pos.left + left + width > clientWidth) left = - width - distance;\n                if ((tmp = pos.top + top) < 0) top -= tmp;\n                if ((tmp = pos.top + top + height) > clientHeight) top -= tmp - clientHeight;\n                break;\n            case 'n':\n                left = - (width / 2) - 5; // - 5 is an approximation of the mouse's height.\n                top = distance;\n                if (pos.top + top + height > clientHeight) top = - height - distance;\n                if ((tmp = pos.left + left) < 0) left -= tmp;\n                if ((tmp = pos.left + left + width) > clientWidth) left -= tmp - clientWidth;\n                break;\n            case 's':\n                left = - (width / 2);\n                top = - height - distance;\n                if (pos.top + top < 0) top = distance;\n                if ((tmp = pos.left + left) < 0) left -= tmp;\n                if ((tmp = pos.left + left + width) > clientWidth) left -= tmp - clientWidth;\n                break;\n            case 'center':\n                left = - (width / 2);\n                top = - (height / 2);\n                break;\n            default:\n                left = 0;\n                top = 0;\n                break;\n        }\n\n        return { 'left': left, 'top': top };\n    };\n\n    /*\n     Positions the tooltip in the correct place, as given by the position() function.\n     */\n    var positionTooltip = function() {\n        nv.dom.read(function() {\n            var pos = position(),\n                gravityOffset = calcGravityOffset(pos),\n                left = pos.left + gravityOffset.left,\n                top = pos.top + gravityOffset.top;\n\n            // delay hiding a bit to avoid flickering\n            if (hidden) {\n                tooltip\n                    .interrupt()\n                    .transition()\n                    .delay(hideDelay)\n                    .duration(0)\n                    .style('opacity', 0);\n            } else {\n                // using tooltip.style('transform') returns values un-usable for tween\n                var old_translate = 'translate(' + lastPosition.left + 'px, ' + lastPosition.top + 'px)';\n                var new_translate = 'translate(' + Math.round(left) + 'px, ' + Math.round(top) + 'px)';\n                var translateInterpolator = d3.interpolateString(old_translate, new_translate);\n                var is_hidden = tooltip.style('opacity') < 0.1;\n\n                tooltip\n                    .interrupt() // cancel running transitions\n                    .transition()\n                    .duration(is_hidden ? 0 : duration)\n                    // using tween since some versions of d3 can't auto-tween a translate on a div\n                    .styleTween('transform', function (d) {\n                        return translateInterpolator;\n                    }, 'important')\n                    // Safari has its own `-webkit-transform` and does not support `transform`\n                    .styleTween('-webkit-transform', function (d) {\n                        return translateInterpolator;\n                    })\n                    .style('-ms-transform', new_translate)\n                    .style('opacity', 1);\n            }\n\n            lastPosition.left = left;\n            lastPosition.top = top;\n        });\n    };\n\n    // Creates new tooltip container, or uses existing one on DOM.\n    function initTooltip() {\n        if (!tooltip || !tooltip.node()) {\n            // Create new tooltip div if it doesn't exist on DOM.\n\n            var data = [1];\n            tooltip = d3.select(document.body).select('#'+id).data(data);\n\n            tooltip.enter().append('div')\n                   .attr(\"class\", \"nvtooltip \" + (classes ? classes : \"xy-tooltip\"))\n                   .attr(\"id\", id)\n                   .style(\"top\", 0).style(\"left\", 0)\n                   .style('opacity', 0)\n                   .style('position', 'fixed')\n                   .selectAll(\"div, table, td, tr\").classed(nvPointerEventsClass, true)\n                   .classed(nvPointerEventsClass, true);\n\n            tooltip.exit().remove()\n        }\n    }\n\n    // Draw the tooltip onto the DOM.\n    function nvtooltip() {\n        if (!enabled) return;\n        if (!dataSeriesExists(data)) return;\n\n        nv.dom.write(function () {\n            initTooltip();\n            // Generate data and set it into tooltip.\n            // Bonus - If you override contentGenerator and return false, you can use something like\n            //         Angular, React or Knockout to bind the data for your tooltip directly to the DOM.\n            var newContent = contentGenerator(data, tooltip.node());\n            if (newContent) {\n                tooltip.node().innerHTML = newContent;\n            }\n\n            positionTooltip();\n        });\n\n        return nvtooltip;\n    }\n\n    nvtooltip.nvPointerEventsClass = nvPointerEventsClass;\n    nvtooltip.options = nv.utils.optionsFunc.bind(nvtooltip);\n\n    nvtooltip._options = Object.create({}, {\n        // simple read/write options\n        duration: {get: function(){return duration;}, set: function(_){duration=_;}},\n        gravity: {get: function(){return gravity;}, set: function(_){gravity=_;}},\n        distance: {get: function(){return distance;}, set: function(_){distance=_;}},\n        snapDistance: {get: function(){return snapDistance;}, set: function(_){snapDistance=_;}},\n        classes: {get: function(){return classes;}, set: function(_){classes=_;}},\n        enabled: {get: function(){return enabled;}, set: function(_){enabled=_;}},\n        hideDelay: {get: function(){return hideDelay;}, set: function(_){hideDelay=_;}},\n        contentGenerator: {get: function(){return contentGenerator;}, set: function(_){contentGenerator=_;}},\n        valueFormatter: {get: function(){return valueFormatter;}, set: function(_){valueFormatter=_;}},\n        headerFormatter: {get: function(){return headerFormatter;}, set: function(_){headerFormatter=_;}},\n        keyFormatter: {get: function(){return keyFormatter;}, set: function(_){keyFormatter=_;}},\n        headerEnabled: {get: function(){return headerEnabled;}, set: function(_){headerEnabled=_;}},\n        position: {get: function(){return position;}, set: function(_){position=_;}},\n\n        // Deprecated options\n        chartContainer: {get: function(){return document.body;}, set: function(_){\n            // deprecated after 1.8.3\n            nv.deprecated('chartContainer', 'feature removed after 1.8.3');\n        }},\n        fixedTop: {get: function(){return null;}, set: function(_){\n            // deprecated after 1.8.1\n            nv.deprecated('fixedTop', 'feature removed after 1.8.1');\n        }},\n        offset: {get: function(){return {left: 0, top: 0};}, set: function(_){\n            // deprecated after 1.8.1\n            nv.deprecated('offset', 'use chart.tooltip.distance() instead');\n        }},\n\n        // options with extra logic\n        hidden: {get: function(){return hidden;}, set: function(_){\n            if (hidden != _) {\n                hidden = !!_;\n                nvtooltip();\n            }\n        }},\n        data: {get: function(){return data;}, set: function(_){\n            // if showing a single data point, adjust data format with that\n            if (_.point) {\n                _.value = _.point.x;\n                _.series = _.series || {};\n                _.series.value = _.point.y;\n                _.series.color = _.point.color || _.series.color;\n            }\n            data = _;\n        }},\n\n        // read only properties\n        node: {get: function(){return tooltip.node();}, set: function(_){}},\n        id: {get: function(){return id;}, set: function(_){}}\n    });\n\n    nv.utils.initOptions(nvtooltip);\n    return nvtooltip;\n};\n\n\n/*\nGets the browser window size\n\nReturns object with height and width properties\n */\nnv.utils.windowSize = function() {\n    // Sane defaults\n    var size = {width: 640, height: 480};\n\n    // Most recent browsers use\n    if (window.innerWidth && window.innerHeight) {\n        size.width = window.innerWidth;\n        size.height = window.innerHeight;\n        return (size);\n    }\n\n    // IE can use depending on mode it is in\n    if (document.compatMode=='CSS1Compat' &&\n        document.documentElement &&\n        document.documentElement.offsetWidth ) {\n\n        size.width = document.documentElement.offsetWidth;\n        size.height = document.documentElement.offsetHeight;\n        return (size);\n    }\n\n    // Earlier IE uses Doc.body\n    if (document.body && document.body.offsetWidth) {\n        size.width = document.body.offsetWidth;\n        size.height = document.body.offsetHeight;\n        return (size);\n    }\n\n    return (size);\n};\n\n\n/* handle dumb browser quirks...  isinstance breaks if you use frames\ntypeof returns 'object' for null, NaN is a number, etc.\n */\nnv.utils.isArray = Array.isArray;\nnv.utils.isObject = function(a) {\n    return a !== null && typeof a === 'object';\n};\nnv.utils.isFunction = function(a) {\n    return typeof a === 'function';\n};\nnv.utils.isDate = function(a) {\n    return toString.call(a) === '[object Date]';\n};\nnv.utils.isNumber = function(a) {\n    return !isNaN(a) && typeof a === 'number';\n};\n\n\n/*\nBinds callback function to run when window is resized\n */\nnv.utils.windowResize = function(handler) {\n    if (window.addEventListener) {\n        window.addEventListener('resize', handler);\n    } else {\n        nv.log(\"ERROR: Failed to bind to window.resize with: \", handler);\n    }\n    // return object with clear function to remove the single added callback.\n    return {\n        callback: handler,\n        clear: function() {\n            window.removeEventListener('resize', handler);\n        }\n    }\n};\n\n\n/*\nBackwards compatible way to implement more d3-like coloring of graphs.\nCan take in nothing, an array, or a function/scale\nTo use a normal scale, get the range and pass that because we must be able\nto take two arguments and use the index to keep backward compatibility\n*/\nnv.utils.getColor = function(color) {\n    //if you pass in nothing, get default colors back\n    if (color === undefined) {\n        return nv.utils.defaultColor();\n\n    //if passed an array, turn it into a color scale\n    } else if(nv.utils.isArray(color)) {\n        var color_scale = d3.scale.ordinal().range(color);\n        return function(d, i) {\n            var key = i === undefined ? d : i;\n            return d.color || color_scale(key);\n        };\n\n    //if passed a function or scale, return it, or whatever it may be\n    //external libs, such as angularjs-nvd3-directives use this\n    } else {\n        //can't really help it if someone passes rubbish as color\n        return color;\n    }\n};\n\n\n/*\nDefault color chooser uses a color scale of 20 colors from D3\n https://github.com/mbostock/d3/wiki/Ordinal-Scales#categorical-colors\n */\nnv.utils.defaultColor = function() {\n    // get range of the scale so we'll turn it into our own function.\n    return nv.utils.getColor(d3.scale.category20().range());\n};\n\n\n/*\nReturns a color function that takes the result of 'getKey' for each series and\nlooks for a corresponding color from the dictionary\n*/\nnv.utils.customTheme = function(dictionary, getKey, defaultColors) {\n    // use default series.key if getKey is undefined\n    getKey = getKey || function(series) { return series.key };\n    defaultColors = defaultColors || d3.scale.category20().range();\n\n    // start at end of default color list and walk back to index 0\n    var defIndex = defaultColors.length;\n\n    return function(series, index) {\n        var key = getKey(series);\n        if (nv.utils.isFunction(dictionary[key])) {\n            return dictionary[key]();\n        } else if (dictionary[key] !== undefined) {\n            return dictionary[key];\n        } else {\n            // no match in dictionary, use a default color\n            if (!defIndex) {\n                // used all the default colors, start over\n                defIndex = defaultColors.length;\n            }\n            defIndex = defIndex - 1;\n            return defaultColors[defIndex];\n        }\n    };\n};\n\n\n/*\nFrom the PJAX example on d3js.org, while this is not really directly needed\nit's a very cool method for doing pjax, I may expand upon it a little bit,\nopen to suggestions on anything that may be useful\n*/\nnv.utils.pjax = function(links, content) {\n\n    var load = function(href) {\n        d3.html(href, function(fragment) {\n            var target = d3.select(content).node();\n            target.parentNode.replaceChild(\n                d3.select(fragment).select(content).node(),\n                target);\n            nv.utils.pjax(links, content);\n        });\n    };\n\n    d3.selectAll(links).on(\"click\", function() {\n        history.pushState(this.href, this.textContent, this.href);\n        load(this.href);\n        d3.event.preventDefault();\n    });\n\n    d3.select(window).on(\"popstate\", function() {\n        if (d3.event.state) {\n            load(d3.event.state);\n        }\n    });\n};\n\n\n/*\nFor when we want to approximate the width in pixels for an SVG:text element.\nMost common instance is when the element is in a display:none; container.\nForumla is : text.length * font-size * constant_factor\n*/\nnv.utils.calcApproxTextWidth = function (svgTextElem) {\n    if (nv.utils.isFunction(svgTextElem.style) && nv.utils.isFunction(svgTextElem.text)) {\n        var fontSize = parseInt(svgTextElem.style(\"font-size\").replace(\"px\",\"\"), 10);\n        var textLength = svgTextElem.text().length;\n        return nv.utils.NaNtoZero(textLength * fontSize * 0.5);\n    }\n    return 0;\n};\n\n\n/*\nNumbers that are undefined, null or NaN, convert them to zeros.\n*/\nnv.utils.NaNtoZero = function(n) {\n    if (!nv.utils.isNumber(n)\n        || isNaN(n)\n        || n === null\n        || n === Infinity\n        || n === -Infinity) {\n\n        return 0;\n    }\n    return n;\n};\n\n/*\nAdd a way to watch for d3 transition ends to d3\n*/\nd3.selection.prototype.watchTransition = function(renderWatch){\n    var args = [this].concat([].slice.call(arguments, 1));\n    return renderWatch.transition.apply(renderWatch, args);\n};\n\n\n/*\nHelper object to watch when d3 has rendered something\n*/\nnv.utils.renderWatch = function(dispatch, duration) {\n    if (!(this instanceof nv.utils.renderWatch)) {\n        return new nv.utils.renderWatch(dispatch, duration);\n    }\n\n    var _duration = duration !== undefined ? duration : 250;\n    var renderStack = [];\n    var self = this;\n\n    this.models = function(models) {\n        models = [].slice.call(arguments, 0);\n        models.forEach(function(model){\n            model.__rendered = false;\n            (function(m){\n                m.dispatch.on('renderEnd', function(arg){\n                    m.__rendered = true;\n                    self.renderEnd('model');\n                });\n            })(model);\n\n            if (renderStack.indexOf(model) < 0) {\n                renderStack.push(model);\n            }\n        });\n    return this;\n    };\n\n    this.reset = function(duration) {\n        if (duration !== undefined) {\n            _duration = duration;\n        }\n        renderStack = [];\n    };\n\n    this.transition = function(selection, args, duration) {\n        args = arguments.length > 1 ? [].slice.call(arguments, 1) : [];\n\n        if (args.length > 1) {\n            duration = args.pop();\n        } else {\n            duration = _duration !== undefined ? _duration : 250;\n        }\n        selection.__rendered = false;\n\n        if (renderStack.indexOf(selection) < 0) {\n            renderStack.push(selection);\n        }\n\n        if (duration === 0) {\n            selection.__rendered = true;\n            selection.delay = function() { return this; };\n            selection.duration = function() { return this; };\n            return selection;\n        } else {\n            if (selection.length === 0) {\n                selection.__rendered = true;\n            } else if (selection.every( function(d){ return !d.length; } )) {\n                selection.__rendered = true;\n            } else {\n                selection.__rendered = false;\n            }\n\n            var n = 0;\n            return selection\n                .transition()\n                .duration(duration)\n                .each(function(){ ++n; })\n                .each('end', function(d, i) {\n                    if (--n === 0) {\n                        selection.__rendered = true;\n                        self.renderEnd.apply(this, args);\n                    }\n                });\n        }\n    };\n\n    this.renderEnd = function() {\n        if (renderStack.every( function(d){ return d.__rendered; } )) {\n            renderStack.forEach( function(d){ d.__rendered = false; });\n            dispatch.renderEnd.apply(this, arguments);\n        }\n    }\n\n};\n\n\n/*\nTakes multiple objects and combines them into the first one (dst)\nexample:  nv.utils.deepExtend({a: 1}, {a: 2, b: 3}, {c: 4});\ngives:  {a: 2, b: 3, c: 4}\n*/\nnv.utils.deepExtend = function(dst){\n    var sources = arguments.length > 1 ? [].slice.call(arguments, 1) : [];\n    sources.forEach(function(source) {\n        for (var key in source) {\n            var isArray = nv.utils.isArray(dst[key]);\n            var isObject = nv.utils.isObject(dst[key]);\n            var srcObj = nv.utils.isObject(source[key]);\n\n            if (isObject && !isArray && srcObj) {\n                nv.utils.deepExtend(dst[key], source[key]);\n            } else {\n                dst[key] = source[key];\n            }\n        }\n    });\n};\n\n\n/*\nstate utility object, used to track d3 states in the models\n*/\nnv.utils.state = function(){\n    if (!(this instanceof nv.utils.state)) {\n        return new nv.utils.state();\n    }\n    var state = {};\n    var _self = this;\n    var _setState = function(){};\n    var _getState = function(){ return {}; };\n    var init = null;\n    var changed = null;\n\n    this.dispatch = d3.dispatch('change', 'set');\n\n    this.dispatch.on('set', function(state){\n        _setState(state, true);\n    });\n\n    this.getter = function(fn){\n        _getState = fn;\n        return this;\n    };\n\n    this.setter = function(fn, callback) {\n        if (!callback) {\n            callback = function(){};\n        }\n        _setState = function(state, update){\n            fn(state);\n            if (update) {\n                callback();\n            }\n        };\n        return this;\n    };\n\n    this.init = function(state){\n        init = init || {};\n        nv.utils.deepExtend(init, state);\n    };\n\n    var _set = function(){\n        var settings = _getState();\n\n        if (JSON.stringify(settings) === JSON.stringify(state)) {\n            return false;\n        }\n\n        for (var key in settings) {\n            if (state[key] === undefined) {\n                state[key] = {};\n            }\n            state[key] = settings[key];\n            changed = true;\n        }\n        return true;\n    };\n\n    this.update = function(){\n        if (init) {\n            _setState(init, false);\n            init = null;\n        }\n        if (_set.call(this)) {\n            this.dispatch.change(state);\n        }\n    };\n\n};\n\n\n/*\nSnippet of code you can insert into each nv.models.* to give you the ability to\ndo things like:\nchart.options({\n  showXAxis: true,\n  tooltips: true\n});\n\nTo enable in the chart:\nchart.options = nv.utils.optionsFunc.bind(chart);\n*/\nnv.utils.optionsFunc = function(args) {\n    if (args) {\n        d3.map(args).forEach((function(key,value) {\n            if (nv.utils.isFunction(this[key])) {\n                this[key](value);\n            }\n        }).bind(this));\n    }\n    return this;\n};\n\n\n/*\nnumTicks:  requested number of ticks\ndata:  the chart data\n\nreturns the number of ticks to actually use on X axis, based on chart data\nto avoid duplicate ticks with the same value\n*/\nnv.utils.calcTicksX = function(numTicks, data) {\n    // find max number of values from all data streams\n    var numValues = 1;\n    var i = 0;\n    for (i; i < data.length; i += 1) {\n        var stream_len = data[i] && data[i].values ? data[i].values.length : 0;\n        numValues = stream_len > numValues ? stream_len : numValues;\n    }\n    nv.log(\"Requested number of ticks: \", numTicks);\n    nv.log(\"Calculated max values to be: \", numValues);\n    // make sure we don't have more ticks than values to avoid duplicates\n    numTicks = numTicks > numValues ? numTicks = numValues - 1 : numTicks;\n    // make sure we have at least one tick\n    numTicks = numTicks < 1 ? 1 : numTicks;\n    // make sure it's an integer\n    numTicks = Math.floor(numTicks);\n    nv.log(\"Calculating tick count as: \", numTicks);\n    return numTicks;\n};\n\n\n/*\nreturns number of ticks to actually use on Y axis, based on chart data\n*/\nnv.utils.calcTicksY = function(numTicks, data) {\n    // currently uses the same logic but we can adjust here if needed later\n    return nv.utils.calcTicksX(numTicks, data);\n};\n\n\n/*\nAdd a particular option from an options object onto chart\nOptions exposed on a chart are a getter/setter function that returns chart\non set to mimic typical d3 option chaining, e.g. svg.option1('a').option2('b');\n\noption objects should be generated via Object.create() to provide\nthe option of manipulating data via get/set functions.\n*/\nnv.utils.initOption = function(chart, name) {\n    // if it's a call option, just call it directly, otherwise do get/set\n    if (chart._calls && chart._calls[name]) {\n        chart[name] = chart._calls[name];\n    } else {\n        chart[name] = function (_) {\n            if (!arguments.length) return chart._options[name];\n            chart._overrides[name] = true;\n            chart._options[name] = _;\n            return chart;\n        };\n        // calling the option as _option will ignore if set by option already\n        // so nvd3 can set options internally but the stop if set manually\n        chart['_' + name] = function(_) {\n            if (!arguments.length) return chart._options[name];\n            if (!chart._overrides[name]) {\n                chart._options[name] = _;\n            }\n            return chart;\n        }\n    }\n};\n\n\n/*\nAdd all options in an options object to the chart\n*/\nnv.utils.initOptions = function(chart) {\n    chart._overrides = chart._overrides || {};\n    var ops = Object.getOwnPropertyNames(chart._options || {});\n    var calls = Object.getOwnPropertyNames(chart._calls || {});\n    ops = ops.concat(calls);\n    for (var i in ops) {\n        nv.utils.initOption(chart, ops[i]);\n    }\n};\n\n\n/*\nInherit options from a D3 object\nd3.rebind makes calling the function on target actually call it on source\nAlso use _d3options so we can track what we inherit for documentation and chained inheritance\n*/\nnv.utils.inheritOptionsD3 = function(target, d3_source, oplist) {\n    target._d3options = oplist.concat(target._d3options || []);\n    // Find unique d3 options (string) and update d3options\n    target._d3options = (target._d3options || []).filter(function(item, i, ar){ return ar.indexOf(item) === i; });\n    oplist.unshift(d3_source);\n    oplist.unshift(target);\n    d3.rebind.apply(this, oplist);\n};\n\n\n/*\nRemove duplicates from an array\n*/\nnv.utils.arrayUnique = function(a) {\n    return a.sort().filter(function(item, pos) {\n        return !pos || item != a[pos - 1];\n    });\n};\n\n\n/*\nKeeps a list of custom symbols to draw from in addition to d3.svg.symbol\nNecessary since d3 doesn't let you extend its list -_-\nAdd new symbols by doing nv.utils.symbols.set('name', function(size){...});\n*/\nnv.utils.symbolMap = d3.map();\n\n\n/*\nReplaces d3.svg.symbol so that we can look both there and our own map\n */\nnv.utils.symbol = function() {\n    var type,\n        size = 64;\n    function symbol(d,i) {\n        var t = type.call(this,d,i);\n        var s = size.call(this,d,i);\n        if (d3.svg.symbolTypes.indexOf(t) !== -1) {\n            return d3.svg.symbol().type(t).size(s)();\n        } else {\n            return nv.utils.symbolMap.get(t)(s);\n        }\n    }\n    symbol.type = function(_) {\n        if (!arguments.length) return type;\n        type = d3.functor(_);\n        return symbol;\n    };\n    symbol.size = function(_) {\n        if (!arguments.length) return size;\n        size = d3.functor(_);\n        return symbol;\n    };\n    return symbol;\n};\n\n\n/*\nInherit option getter/setter functions from source to target\nd3.rebind makes calling the function on target actually call it on source\nAlso track via _inherited and _d3options so we can track what we inherit\nfor documentation generation purposes and chained inheritance\n*/\nnv.utils.inheritOptions = function(target, source) {\n    // inherit all the things\n    var ops = Object.getOwnPropertyNames(source._options || {});\n    var calls = Object.getOwnPropertyNames(source._calls || {});\n    var inherited = source._inherited || [];\n    var d3ops = source._d3options || [];\n    var args = ops.concat(calls).concat(inherited).concat(d3ops);\n    args.unshift(source);\n    args.unshift(target);\n    d3.rebind.apply(this, args);\n    // pass along the lists to keep track of them, don't allow duplicates\n    target._inherited = nv.utils.arrayUnique(ops.concat(calls).concat(inherited).concat(ops).concat(target._inherited || []));\n    target._d3options = nv.utils.arrayUnique(d3ops.concat(target._d3options || []));\n};\n\n\n/*\nRuns common initialize code on the svg before the chart builds\n*/\nnv.utils.initSVG = function(svg) {\n    svg.classed({'nvd3-svg':true});\n};\n\n\n/*\nSanitize and provide default for the container height.\n*/\nnv.utils.sanitizeHeight = function(height, container) {\n    return (height || parseInt(container.style('height'), 10) || 400);\n};\n\n\n/*\nSanitize and provide default for the container width.\n*/\nnv.utils.sanitizeWidth = function(width, container) {\n    return (width || parseInt(container.style('width'), 10) || 960);\n};\n\n\n/*\nCalculate the available height for a chart.\n*/\nnv.utils.availableHeight = function(height, container, margin) {\n    return Math.max(0,nv.utils.sanitizeHeight(height, container) - margin.top - margin.bottom);\n};\n\n/*\nCalculate the available width for a chart.\n*/\nnv.utils.availableWidth = function(width, container, margin) {\n    return Math.max(0,nv.utils.sanitizeWidth(width, container) - margin.left - margin.right);\n};\n\n/*\nClear any rendered chart components and display a chart's 'noData' message\n*/\nnv.utils.noData = function(chart, container) {\n    var opt = chart.options(),\n        margin = opt.margin(),\n        noData = opt.noData(),\n        data = (noData == null) ? [\"No Data Available.\"] : [noData],\n        height = nv.utils.availableHeight(null, container, margin),\n        width = nv.utils.availableWidth(null, container, margin),\n        x = margin.left + width/2,\n        y = margin.top + height/2;\n\n    //Remove any previously created chart components\n    container.selectAll('g').remove();\n\n    var noDataText = container.selectAll('.nv-noData').data(data);\n\n    noDataText.enter().append('text')\n        .attr('class', 'nvd3 nv-noData')\n        .attr('dy', '-.7em')\n        .style('text-anchor', 'middle');\n\n    noDataText\n        .attr('x', x)\n        .attr('y', y)\n        .text(function(t){ return t; });\n};\n\n/*\n Wrap long labels.\n */\nnv.utils.wrapTicks = function (text, width) {\n    text.each(function() {\n        var text = d3.select(this),\n            words = text.text().split(/\\s+/).reverse(),\n            word,\n            line = [],\n            lineNumber = 0,\n            lineHeight = 1.1,\n            y = text.attr(\"y\"),\n            dy = parseFloat(text.attr(\"dy\")),\n            tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n        while (word = words.pop()) {\n            line.push(word);\n            tspan.text(line.join(\" \"));\n            if (tspan.node().getComputedTextLength() > width) {\n                line.pop();\n                tspan.text(line.join(\" \"));\n                line = [word];\n                tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n            }\n        }\n    });\n};\n\n/*\nCheck equality of 2 array\n*/\nnv.utils.arrayEquals = function (array1, array2) {\n    if (array1 === array2)\n        return true;\n\n    if (!array1 || !array2)\n        return false;\n\n    // compare lengths - can save a lot of time\n    if (array1.length != array2.length)\n        return false;\n\n    for (var i = 0,\n        l = array1.length; i < l; i++) {\n        // Check if we have nested arrays\n        if (array1[i] instanceof Array && array2[i] instanceof Array) {\n            // recurse into the nested arrays\n            if (!nv.arrayEquals(array1[i], array2[i]))\n                return false;\n        } else if (array1[i] != array2[i]) {\n            // Warning - two different object instances will never be equal: {x:20} != {x:20}\n            return false;\n        }\n    }\n    return true;\n};\n\n/*\n Check if a point within an arc\n */\nnv.utils.pointIsInArc = function(pt, ptData, d3Arc) {\n    // Center of the arc is assumed to be 0,0\n    // (pt.x, pt.y) are assumed to be relative to the center\n    var r1 = d3Arc.innerRadius()(ptData), // Note: Using the innerRadius\n      r2 = d3Arc.outerRadius()(ptData),\n      theta1 = d3Arc.startAngle()(ptData),\n      theta2 = d3Arc.endAngle()(ptData);\n\n    var dist = pt.x * pt.x + pt.y * pt.y,\n      angle = Math.atan2(pt.x, -pt.y); // Note: different coordinate system.\n\n    angle = (angle < 0) ? (angle + Math.PI * 2) : angle;\n\n    return (r1 * r1 <= dist) && (dist <= r2 * r2) &&\n      (theta1 <= angle) && (angle <= theta2);\n};\n\nnv.models.axis = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var axis = d3.svg.axis();\n    var scale = d3.scale.linear();\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 75 //only used for tickLabel currently\n        , height = 60 //only used for tickLabel currently\n        , axisLabelText = null\n        , showMaxMin = true //TODO: showMaxMin should be disabled on all ordinal scaled axes\n        , rotateLabels = 0\n        , rotateYLabel = true\n        , staggerLabels = false\n        , isOrdinal = false\n        , ticks = null\n        , axisLabelDistance = 0\n        , fontSize = undefined\n        , duration = 250\n        , dispatch = d3.dispatch('renderEnd')\n        , tickFormatMaxMin\n        ;\n    axis\n        .scale(scale)\n        .orient('bottom')\n        .tickFormat(function(d) { return d })\n    ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var scale0;\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-axis').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-axis');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            if (ticks !== null)\n                axis.ticks(ticks);\n            else if (axis.orient() == 'top' || axis.orient() == 'bottom')\n                axis.ticks(Math.abs(scale.range()[1] - scale.range()[0]) / 100);\n\n            //TODO: consider calculating width/height based on whether or not label is added, for reference in charts using this component\n            g.watchTransition(renderWatch, 'axis').call(axis);\n\n            scale0 = scale0 || axis.scale();\n\n            var fmt = axis.tickFormat();\n            if (fmt == null) {\n                fmt = scale0.tickFormat();\n            }\n\n            var axisLabel = g.selectAll('text.nv-axislabel')\n                .data([axisLabelText || null]);\n            axisLabel.exit().remove();\n\n            //only skip when fontSize is undefined so it can be cleared with a null or blank string\n            if (fontSize !== undefined) {\n                g.selectAll('g').select(\"text\").style('font-size', fontSize);\n            }\n\n            var xLabelMargin;\n            var axisMaxMin;\n            var w;\n            switch (axis.orient()) {\n                case 'top':\n                    axisLabel.enter().append('text').attr('class', 'nv-axislabel');\n                  w = 0;\n                  if (scale.range().length === 1) {\n                    w = isOrdinal ? scale.range()[0] * 2 + scale.rangeBand() : 0;\n                  } else if (scale.range().length === 2) {\n                    w = isOrdinal ? scale.range()[0] + scale.range()[1] + scale.rangeBand() : scale.range()[1];\n                  } else if ( scale.range().length > 2){\n                    w = scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]);\n                  };\n                    axisLabel\n                        .attr('text-anchor', 'middle')\n                        .attr('y', 0)\n                        .attr('x', w/2);\n                    if (showMaxMin) {\n                        axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')\n                            .data(scale.domain());\n                        axisMaxMin.enter().append('g').attr('class',function(d,i){\n                                return ['nv-axisMaxMin','nv-axisMaxMin-x',(i == 0 ? 'nv-axisMin-x':'nv-axisMax-x')].join(' ')\n                        }).append('text');\n                        axisMaxMin.exit().remove();\n                        axisMaxMin\n                            .attr('transform', function(d,i) {\n                                return 'translate(' + nv.utils.NaNtoZero(scale(d)) + ',0)'\n                            })\n                            .select('text')\n                            .attr('dy', '-0.5em')\n                            .attr('y', -axis.tickPadding())\n                            .attr('text-anchor', 'middle')\n                            .text(function(d,i) {\n                                var formatter = tickFormatMaxMin || fmt;\n                                var v = formatter(d);\n                                return ('' + v).match('NaN') ? '' : v;\n                            });\n                        axisMaxMin.watchTransition(renderWatch, 'min-max top')\n                            .attr('transform', function(d,i) {\n                                return 'translate(' + nv.utils.NaNtoZero(scale.range()[i]) + ',0)'\n                            });\n                    }\n                    break;\n                case 'bottom':\n                    xLabelMargin = axisLabelDistance + 36;\n                    var maxTextWidth = 30;\n                    var textHeight = 0;\n                    var xTicks = g.selectAll('g').select(\"text\");\n                    var rotateLabelsRule = '';\n                    if (rotateLabels%360) {\n                        //Reset transform on ticks so textHeight can be calculated correctly\n                        xTicks.attr('transform', '');\n                        //Calculate the longest xTick width\n                        xTicks.each(function(d,i){\n                            var box = this.getBoundingClientRect();\n                            var width = box.width;\n                            textHeight = box.height;\n                            if(width > maxTextWidth) maxTextWidth = width;\n                        });\n                        rotateLabelsRule = 'rotate(' + rotateLabels + ' 0,' + (textHeight/2 + axis.tickPadding()) + ')';\n                        //Convert to radians before calculating sin. Add 30 to margin for healthy padding.\n                        var sin = Math.abs(Math.sin(rotateLabels*Math.PI/180));\n                        xLabelMargin = (sin ? sin*maxTextWidth : maxTextWidth)+30;\n                        //Rotate all xTicks\n                        xTicks\n                            .attr('transform', rotateLabelsRule)\n                            .style('text-anchor', rotateLabels%360 > 0 ? 'start' : 'end');\n                    } else {\n                        if (staggerLabels) {\n                            xTicks\n                                .attr('transform', function(d,i) {\n                                    return 'translate(0,' + (i % 2 == 0 ? '0' : '12') + ')'\n                                });\n                        } else {\n                            xTicks.attr('transform', \"translate(0,0)\");\n                        }\n                    }\n                    axisLabel.enter().append('text').attr('class', 'nv-axislabel');\n                    w = 0;\n                    if (scale.range().length === 1) {\n                        w = isOrdinal ? scale.range()[0] * 2 + scale.rangeBand() : 0;\n                    } else if (scale.range().length === 2) {\n                        w = isOrdinal ? scale.range()[0] + scale.range()[1] + scale.rangeBand() : scale.range()[1];\n                    } else if ( scale.range().length > 2){\n                        w = scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]);\n                    };\n                    axisLabel\n                        .attr('text-anchor', 'middle')\n                        .attr('y', xLabelMargin)\n                        .attr('x', w/2);\n                    if (showMaxMin) {\n                        //if (showMaxMin && !isOrdinal) {\n                        axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')\n                            //.data(scale.domain())\n                            .data([scale.domain()[0], scale.domain()[scale.domain().length - 1]]);\n                        axisMaxMin.enter().append('g').attr('class',function(d,i){\n                                return ['nv-axisMaxMin','nv-axisMaxMin-x',(i == 0 ? 'nv-axisMin-x':'nv-axisMax-x')].join(' ')\n                        }).append('text');\n                        axisMaxMin.exit().remove();\n                        axisMaxMin\n                            .attr('transform', function(d,i) {\n                                return 'translate(' + nv.utils.NaNtoZero((scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0))) + ',0)'\n                            })\n                            .select('text')\n                            .attr('dy', '.71em')\n                            .attr('y', axis.tickPadding())\n                            .attr('transform', rotateLabelsRule)\n                            .style('text-anchor', rotateLabels ? (rotateLabels%360 > 0 ? 'start' : 'end') : 'middle')\n                            .text(function(d,i) {\n                                var formatter = tickFormatMaxMin || fmt;\n                                var v = formatter(d);\n                                return ('' + v).match('NaN') ? '' : v;\n                            });\n                        axisMaxMin.watchTransition(renderWatch, 'min-max bottom')\n                            .attr('transform', function(d,i) {\n                                return 'translate(' + nv.utils.NaNtoZero((scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0))) + ',0)'\n                            });\n                    }\n\n                    break;\n                case 'right':\n                    axisLabel.enter().append('text').attr('class', 'nv-axislabel');\n                    axisLabel\n                        .style('text-anchor', rotateYLabel ? 'middle' : 'begin')\n                        .attr('transform', rotateYLabel ? 'rotate(90)' : '')\n                        .attr('y', rotateYLabel ? (-Math.max(margin.right, width) + 12 - (axisLabelDistance || 0)) : -10) //TODO: consider calculating this based on largest tick width... OR at least expose this on chart\n                        .attr('x', rotateYLabel ? (d3.max(scale.range()) / 2) : axis.tickPadding());\n                    if (showMaxMin) {\n                        axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')\n                            .data(scale.domain());\n                       \taxisMaxMin.enter().append('g').attr('class',function(d,i){\n                                return ['nv-axisMaxMin','nv-axisMaxMin-y',(i == 0 ? 'nv-axisMin-y':'nv-axisMax-y')].join(' ')\n                        }).append('text')\n                            .style('opacity', 0);\n                        axisMaxMin.exit().remove();\n                        axisMaxMin\n                            .attr('transform', function(d,i) {\n                                return 'translate(0,' + nv.utils.NaNtoZero(scale(d)) + ')'\n                            })\n                            .select('text')\n                            .attr('dy', '.32em')\n                            .attr('y', 0)\n                            .attr('x', axis.tickPadding())\n                            .style('text-anchor', 'start')\n                            .text(function(d, i) {\n                                var formatter = tickFormatMaxMin || fmt;\n                                var v = formatter(d);\n                                return ('' + v).match('NaN') ? '' : v;\n                            });\n                        axisMaxMin.watchTransition(renderWatch, 'min-max right')\n                            .attr('transform', function(d,i) {\n                                return 'translate(0,' + nv.utils.NaNtoZero(scale.range()[i]) + ')'\n                            })\n                            .select('text')\n                            .style('opacity', 1);\n                    }\n                    break;\n                case 'left':\n                    /*\n                     //For dynamically placing the label. Can be used with dynamically-sized chart axis margins\n                     var yTicks = g.selectAll('g').select(\"text\");\n                     yTicks.each(function(d,i){\n                     var labelPadding = this.getBoundingClientRect().width + axis.tickPadding() + 16;\n                     if(labelPadding > width) width = labelPadding;\n                     });\n                     */\n                    axisLabel.enter().append('text').attr('class', 'nv-axislabel');\n                    axisLabel\n                        .style('text-anchor', rotateYLabel ? 'middle' : 'end')\n                        .attr('transform', rotateYLabel ? 'rotate(-90)' : '')\n                        .attr('y', rotateYLabel ? (-Math.max(margin.left, width) + 25 - (axisLabelDistance || 0)) : -10)\n                        .attr('x', rotateYLabel ? (-d3.max(scale.range()) / 2) : -axis.tickPadding());\n                    if (showMaxMin) {\n                        axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')\n                            .data(scale.domain());\n                        axisMaxMin.enter().append('g').attr('class',function(d,i){\n                                return ['nv-axisMaxMin','nv-axisMaxMin-y',(i == 0 ? 'nv-axisMin-y':'nv-axisMax-y')].join(' ')\n                        }).append('text')\n                            .style('opacity', 0);\n                        axisMaxMin.exit().remove();\n                        axisMaxMin\n                            .attr('transform', function(d,i) {\n                                return 'translate(0,' + nv.utils.NaNtoZero(scale0(d)) + ')'\n                            })\n                            .select('text')\n                            .attr('dy', '.32em')\n                            .attr('y', 0)\n                            .attr('x', -axis.tickPadding())\n                            .attr('text-anchor', 'end')\n                            .text(function(d,i) {\n                                var formatter = tickFormatMaxMin || fmt;\n                                var v = formatter(d);\n                                return ('' + v).match('NaN') ? '' : v;\n                            });\n                        axisMaxMin.watchTransition(renderWatch, 'min-max right')\n                            .attr('transform', function(d,i) {\n                                return 'translate(0,' + nv.utils.NaNtoZero(scale.range()[i]) + ')'\n                            })\n                            .select('text')\n                            .style('opacity', 1);\n                    }\n                    break;\n            }\n            axisLabel.text(function(d) { return d });\n\n            if (showMaxMin && (axis.orient() === 'left' || axis.orient() === 'right')) {\n                //check if max and min overlap other values, if so, hide the values that overlap\n                g.selectAll('g') // the g's wrapping each tick\n                    .each(function(d,i) {\n                        d3.select(this).select('text').attr('opacity', 1);\n                        if (scale(d) < scale.range()[1] + 10 || scale(d) > scale.range()[0] - 10) { // 10 is assuming text height is 16... if d is 0, leave it!\n                            if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL\n                                d3.select(this).attr('opacity', 0);\n\n                            d3.select(this).select('text').attr('opacity', 0); // Don't remove the ZERO line!!\n                        }\n                    });\n\n                //if Max and Min = 0 only show min, Issue #281\n                if (scale.domain()[0] == scale.domain()[1] && scale.domain()[0] == 0) {\n                    wrap.selectAll('g.nv-axisMaxMin').style('opacity', function (d, i) {\n                        return !i ? 1 : 0\n                    });\n                }\n            }\n\n            if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {\n                var maxMinRange = [];\n                wrap.selectAll('g.nv-axisMaxMin')\n                    .each(function(d,i) {\n                        try {\n                            if (i) // i== 1, max position\n                                maxMinRange.push(scale(d) - this.getBoundingClientRect().width - 4);  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)\n                            else // i==0, min position\n                                maxMinRange.push(scale(d) + this.getBoundingClientRect().width + 4)\n                        }catch (err) {\n                            if (i) // i== 1, max position\n                                maxMinRange.push(scale(d) - 4);  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)\n                            else // i==0, min position\n                                maxMinRange.push(scale(d) + 4);\n                        }\n                    });\n                // the g's wrapping each tick\n                g.selectAll('g').each(function(d, i) {\n                    if (scale(d) < maxMinRange[0] || scale(d) > maxMinRange[1]) {\n                        if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL\n                            d3.select(this).remove();\n                        else\n                            d3.select(this).select('text').remove(); // Don't remove the ZERO line!!\n                    }\n                });\n            }\n\n            //Highlight zero tick line\n            g.selectAll('.tick')\n                .filter(function (d) {\n                    /*\n                    The filter needs to return only ticks at or near zero.\n                    Numbers like 0.00001 need to count as zero as well,\n                    and the arithmetic trick below solves that.\n                    */\n                    return !parseFloat(Math.round(d * 100000) / 1000000) && (d !== undefined)\n                })\n                .classed('zero', true);\n\n            //store old scales for use in transitions on update\n            scale0 = scale.copy();\n\n        });\n\n        renderWatch.renderEnd('axis immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.axis = axis;\n    chart.dispatch = dispatch;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        axisLabelDistance: {get: function(){return axisLabelDistance;}, set: function(_){axisLabelDistance=_;}},\n        staggerLabels:     {get: function(){return staggerLabels;}, set: function(_){staggerLabels=_;}},\n        rotateLabels:      {get: function(){return rotateLabels;}, set: function(_){rotateLabels=_;}},\n        rotateYLabel:      {get: function(){return rotateYLabel;}, set: function(_){rotateYLabel=_;}},\n        showMaxMin:        {get: function(){return showMaxMin;}, set: function(_){showMaxMin=_;}},\n        axisLabel:         {get: function(){return axisLabelText;}, set: function(_){axisLabelText=_;}},\n        height:            {get: function(){return height;}, set: function(_){height=_;}},\n        ticks:             {get: function(){return ticks;}, set: function(_){ticks=_;}},\n        width:             {get: function(){return width;}, set: function(_){width=_;}},\n        fontSize:          {get: function(){return fontSize;}, set: function(_){fontSize=_;}},\n        tickFormatMaxMin:  {get: function(){return tickFormatMaxMin;}, set: function(_){tickFormatMaxMin=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top !== undefined    ? _.top    : margin.top;\n            margin.right  = _.right !== undefined  ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left !== undefined   ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration=_;\n            renderWatch.reset(duration);\n        }},\n        scale: {get: function(){return scale;}, set: function(_){\n            scale = _;\n            axis.scale(scale);\n            isOrdinal = typeof scale.rangeBands === 'function';\n            nv.utils.inheritOptionsD3(chart, scale, ['domain', 'range', 'rangeBand', 'rangeBands']);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    nv.utils.inheritOptionsD3(chart, axis, ['orient', 'tickValues', 'tickSubdivide', 'tickSize', 'tickPadding', 'tickFormat']);\n    nv.utils.inheritOptionsD3(chart, scale, ['domain', 'range', 'rangeBand', 'rangeBands']);\n\n    return chart;\n};\nnv.models.boxPlot = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0},\n        width = 960,\n        height = 500,\n        id = Math.floor(Math.random() * 10000), // Create semi-unique ID in case user doesn't select one\n        xScale = d3.scale.ordinal(),\n        yScale = d3.scale.linear(),\n        getX  = function(d) { return d.label }, // Default data model selectors.\n        getQ1 = function(d) { return d.values.Q1 },\n        getQ2 = function(d) { return d.values.Q2 },\n        getQ3 = function(d) { return d.values.Q3 },\n        getWl = function(d) { return d.values.whisker_low },\n        getWh = function(d) { return d.values.whisker_high },\n        getColor = function(d) { return d.color },\n        getOlItems  = function(d) { return d.values.outliers },\n        getOlValue = function(d, i, j) { return d },\n        getOlLabel = function(d, i, j) { return d },\n        getOlColor = function(d, i, j) { return undefined },\n        color = nv.utils.defaultColor(),\n        container = null,\n        xDomain, xRange,\n        yDomain, yRange,\n        dispatch = d3.dispatch('elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd'),\n        duration = 250,\n        maxBoxWidth = null;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var xScale0, yScale0;\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup Scales\n            xScale.domain(xDomain || data.map(function(d,i) { return getX(d,i); }))\n                .rangeBands(xRange || [0, availableWidth], 0.1);\n\n            // if we know yDomain, no need to calculate\n            var yData = []\n            if (!yDomain) {\n                // (y-range is based on quartiles, whiskers and outliers)\n                var values = [], yMin, yMax;\n                data.forEach(function (d, i) {\n                    var q1 = getQ1(d), q3 = getQ3(d), wl = getWl(d), wh = getWh(d);\n                    var olItems = getOlItems(d);\n                    if (olItems) {\n                        olItems.forEach(function (e, i) {\n                            values.push(getOlValue(e, i, undefined));\n                        });\n                    }\n                    if (wl) { values.push(wl) }\n                    if (q1) { values.push(q1) }\n                    if (q3) { values.push(q3) }\n                    if (wh) { values.push(wh) }\n                });\n                yMin = d3.min(values);\n                yMax = d3.max(values);\n                yData = [ yMin, yMax ] ;\n            }\n\n            yScale.domain(yDomain || yData);\n            yScale.range(yRange || [availableHeight, 0]);\n\n            //store old scales if they exist\n            xScale0 = xScale0 || xScale;\n            yScale0 = yScale0 || yScale.copy().range([yScale(0),yScale(0)]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap');\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var boxplots = wrap.selectAll('.nv-boxplot').data(function(d) { return d });\n            var boxEnter = boxplots.enter().append('g').style('stroke-opacity', 1e-6).style('fill-opacity', 1e-6);\n            boxplots\n                .attr('class', 'nv-boxplot')\n                .attr('transform', function(d,i,j) { return 'translate(' + (xScale(getX(d,i)) + xScale.rangeBand() * 0.05) + ', 0)'; })\n                .classed('hover', function(d) { return d.hover });\n            boxplots\n                .watchTransition(renderWatch, 'nv-boxplot: boxplots')\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', 0.75)\n                .delay(function(d,i) { return i * duration / data.length })\n                .attr('transform', function(d,i) {\n                    return 'translate(' + (xScale(getX(d,i)) + xScale.rangeBand() * 0.05) + ', 0)';\n                });\n            boxplots.exit().remove();\n\n            // ----- add the SVG elements for each boxPlot -----\n\n            // conditionally append whisker lines\n            boxEnter.each(function(d,i) {\n                var box = d3.select(this);\n                [getWl, getWh].forEach(function (f) {\n                    if (f(d) !== undefined && f(d) !== null) {\n                        var key = (f === getWl) ? 'low' : 'high';\n                        box.append('line')\n                          .style('stroke', getColor(d) || color(d,i))\n                          .attr('class', 'nv-boxplot-whisker nv-boxplot-' + key);\n                        box.append('line')\n                          .style('stroke', getColor(d) || color(d,i))\n                          .attr('class', 'nv-boxplot-tick nv-boxplot-' + key);\n                    }\n                });\n            });\n\n            var box_width = function() { return (maxBoxWidth === null ? xScale.rangeBand() * 0.9 : Math.min(75, xScale.rangeBand() * 0.9)); };\n            var box_left  = function() { return xScale.rangeBand() * 0.45 - box_width()/2; };\n            var box_right = function() { return xScale.rangeBand() * 0.45 + box_width()/2; };\n\n            // update whisker lines and ticks\n            [getWl, getWh].forEach(function (f) {\n                var key = (f === getWl) ? 'low' : 'high';\n                var endpoint = (f === getWl) ? getQ1 : getQ3;\n                boxplots.select('line.nv-boxplot-whisker.nv-boxplot-' + key)\n                  .watchTransition(renderWatch, 'nv-boxplot: boxplots')\n                    .attr('x1', xScale.rangeBand() * 0.45 )\n                    .attr('y1', function(d,i) { return yScale(f(d)); })\n                    .attr('x2', xScale.rangeBand() * 0.45 )\n                    .attr('y2', function(d,i) { return yScale(endpoint(d)); });\n                boxplots.select('line.nv-boxplot-tick.nv-boxplot-' + key)\n                  .watchTransition(renderWatch, 'nv-boxplot: boxplots')\n                    .attr('x1', box_left )\n                    .attr('y1', function(d,i) { return yScale(f(d)); })\n                    .attr('x2', box_right )\n                    .attr('y2', function(d,i) { return yScale(f(d)); });\n            });\n\n            [getWl, getWh].forEach(function (f) {\n                var key = (f === getWl) ? 'low' : 'high';\n                boxEnter.selectAll('.nv-boxplot-' + key)\n                  .on('mouseover', function(d,i,j) {\n                      d3.select(this).classed('hover', true);\n                      dispatch.elementMouseover({\n                          series: { key: f(d), color: getColor(d) || color(d,j) },\n                          e: d3.event\n                      });\n                  })\n                  .on('mouseout', function(d,i,j) {\n                      d3.select(this).classed('hover', false);\n                      dispatch.elementMouseout({\n                          series: { key: f(d), color: getColor(d) || color(d,j) },\n                          e: d3.event\n                      });\n                  })\n                  .on('mousemove', function(d,i) {\n                      dispatch.elementMousemove({e: d3.event});\n                  });\n            });\n\n            // boxes\n            boxEnter.append('rect')\n                .attr('class', 'nv-boxplot-box')\n                // tooltip events\n                .on('mouseover', function(d,i) {\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        key: getX(d),\n                        value: getX(d),\n                        series: [\n                            { key: 'Q3', value: getQ3(d), color: getColor(d) || color(d,i) },\n                            { key: 'Q2', value: getQ2(d), color: getColor(d) || color(d,i) },\n                            { key: 'Q1', value: getQ1(d), color: getColor(d) || color(d,i) }\n                        ],\n                        data: d,\n                        index: i,\n                        e: d3.event\n                    });\n                })\n                .on('mouseout', function(d,i) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        key: getX(d),\n                        value: getX(d),\n                        series: [\n                            { key: 'Q3', value: getQ3(d), color: getColor(d) || color(d,i) },\n                            { key: 'Q2', value: getQ2(d), color: getColor(d) || color(d,i) },\n                            { key: 'Q1', value: getQ1(d), color: getColor(d) || color(d,i) }\n                        ],\n                        data: d,\n                        index: i,\n                        e: d3.event\n                    });\n                })\n                .on('mousemove', function(d,i) {\n                    dispatch.elementMousemove({e: d3.event});\n                });\n\n            // box transitions\n            boxplots.select('rect.nv-boxplot-box')\n              .watchTransition(renderWatch, 'nv-boxplot: boxes')\n                .attr('y', function(d,i) { return yScale(getQ3(d)); })\n                .attr('width', box_width)\n                .attr('x', box_left )\n                .attr('height', function(d,i) { return Math.abs(yScale(getQ3(d)) - yScale(getQ1(d))) || 1 })\n                .style('fill', function(d,i) { return getColor(d) || color(d,i) })\n                .style('stroke', function(d,i) { return getColor(d) || color(d,i) });\n\n            // median line\n            boxEnter.append('line').attr('class', 'nv-boxplot-median');\n\n            boxplots.select('line.nv-boxplot-median')\n              .watchTransition(renderWatch, 'nv-boxplot: boxplots line')\n                .attr('x1', box_left)\n                .attr('y1', function(d,i) { return yScale(getQ2(d)); })\n                .attr('x2', box_right)\n                .attr('y2', function(d,i) { return yScale(getQ2(d)); });\n\n            // outliers\n            var outliers = boxplots.selectAll('.nv-boxplot-outlier').data(function(d) {\n                return getOlItems(d) || [];\n            });\n            outliers.enter().append('circle')\n                .style('fill', function(d,i,j) { return getOlColor(d,i,j) || color(d,j) })\n                .style('stroke', function(d,i,j) { return getOlColor(d,i,j) || color(d,j) })\n                .style('z-index', 9000)\n                .on('mouseover', function(d,i,j) {\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        series: { key: getOlLabel(d,i,j), color: getOlColor(d,i,j) || color(d,j) },\n                        e: d3.event\n                    });\n                })\n                .on('mouseout', function(d,i,j) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        series: { key: getOlLabel(d,i,j), color: getOlColor(d,i,j) || color(d,j) },\n                        e: d3.event\n                    });\n                })\n                .on('mousemove', function(d,i) {\n                    dispatch.elementMousemove({e: d3.event});\n                });\n            outliers.attr('class', 'nv-boxplot-outlier');\n            outliers\n              .watchTransition(renderWatch, 'nv-boxplot: nv-boxplot-outlier')\n                .attr('cx', xScale.rangeBand() * 0.45)\n                .attr('cy', function(d,i,j) { return yScale(getOlValue(d,i,j)); })\n                .attr('r', '3');\n            outliers.exit().remove();\n\n            //store old scales for use in transitions on update\n            xScale0 = xScale.copy();\n            yScale0 = yScale.copy();\n        });\n\n        renderWatch.renderEnd('nv-boxplot immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:       {get: function(){return width;}, set: function(_){width=_;}},\n        height:      {get: function(){return height;}, set: function(_){height=_;}},\n        maxBoxWidth: {get: function(){return maxBoxWidth;}, set: function(_){maxBoxWidth=_;}},\n        x:           {get: function(){return getX;}, set: function(_){getX=_;}},\n        q1: {get: function(){return getQ1;}, set: function(_){getQ1=_;}},\n        q2: {get: function(){return getQ2;}, set: function(_){getQ2=_;}},\n        q3: {get: function(){return getQ3;}, set: function(_){getQ3=_;}},\n        wl: {get: function(){return getWl;}, set: function(_){getWl=_;}},\n        wh: {get: function(){return getWh;}, set: function(_){getWh=_;}},\n        itemColor:    {get: function(){return getColor;}, set: function(_){getColor=_;}},\n        outliers:     {get: function(){return getOlItems;}, set: function(_){getOlItems=_;}},\n        outlierValue: {get: function(){return getOlValue;}, set: function(_){getOlValue=_;}},\n        outlierLabel: {get: function(){return getOlLabel;}, set: function(_){getOlLabel=_;}},\n        outlierColor: {get: function(){return getOlColor;}, set: function(_){getOlColor=_;}},\n        xScale:  {get: function(){return xScale;}, set: function(_){xScale=_;}},\n        yScale:  {get: function(){return yScale;}, set: function(_){yScale=_;}},\n        xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:  {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:  {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        id:          {get: function(){return id;}, set: function(_){id=_;}},\n        // rectClass: {get: function(){return rectClass;}, set: function(_){rectClass=_;}},\n        y: {\n            get: function() {\n                console.warn('BoxPlot \\'y\\' chart option is deprecated. Please use model overrides instead.');\n                return {};\n            },\n            set: function(_) {\n                console.warn('BoxPlot \\'y\\' chart option is deprecated. Please use model overrides instead.');\n            }\n        },\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\nnv.models.boxPlotChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var boxplot = nv.models.boxPlot(),\n        xAxis = nv.models.axis(),\n        yAxis = nv.models.axis();\n\n    var margin = {top: 15, right: 10, bottom: 50, left: 60},\n        width = null,\n        height = null,\n        color = nv.utils.getColor(),\n        showXAxis = true,\n        showYAxis = true,\n        rightAlignYAxis = false,\n        staggerLabels = false,\n        tooltip = nv.models.tooltip(),\n        x, y,\n        noData = 'No Data Available.',\n        dispatch = d3.dispatch('beforeUpdate', 'renderEnd'),\n        duration = 250;\n\n    xAxis\n        .orient('bottom')\n        .showMaxMin(false)\n        .tickFormat(function(d) { return d })\n    ;\n    yAxis\n        .orient((rightAlignYAxis) ? 'right' : 'left')\n        .tickFormat(d3.format(',.1f'))\n    ;\n\n    tooltip.duration(0);\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(boxplot);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this), that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = (width  || parseInt(container.style('width')) || 960) - margin.left - margin.right;\n            var availableHeight = (height || parseInt(container.style('height')) || 400) - margin.top - margin.bottom;\n\n            chart.update = function() {\n                dispatch.beforeUpdate();\n                container.transition().duration(duration).call(chart);\n            };\n            chart.container = this;\n\n            // TODO still need to find a way to validate quartile data presence using boxPlot callbacks.\n            // Display No Data message if there's nothing to show. (quartiles required at minimum).\n            if (!data || !data.length) {\n                var noDataText = container.selectAll('.nv-noData').data([noData]);\n\n                noDataText.enter().append('text')\n                    .attr('class', 'nvd3 nv-noData')\n                    .attr('dy', '-.7em')\n                    .style('text-anchor', 'middle');\n\n                noDataText\n                    .attr('x', margin.left + availableWidth / 2)\n                    .attr('y', margin.top + availableHeight / 2)\n                    .text(function(d) { return d });\n\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = boxplot.xScale();\n            y = boxplot.yScale().clamp(true);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-boxPlotWithAxes').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-boxPlotWithAxes').append('g');\n            var defsEnter = gEnter.append('defs');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis')\n                .append('g').attr('class', 'nv-zeroLine')\n                .append('line');\n\n            gEnter.append('g').attr('class', 'nv-barsWrap');\n            g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            if (rightAlignYAxis) {\n                g.select('.nv-y.nv-axis')\n                    .attr('transform', 'translate(' + availableWidth + ',0)');\n            }\n\n            // Main Chart Component(s)\n            boxplot.width(availableWidth).height(availableHeight);\n\n            var barsWrap = g.select('.nv-barsWrap')\n                .datum(data.filter(function(d) { return !d.disabled }))\n\n            barsWrap.transition().call(boxplot);\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-x-label-clip-' + boxplot.id())\n                .append('rect');\n\n            g.select('#nv-x-label-clip-' + boxplot.id() + ' rect')\n                .attr('width', x.rangeBand() * (staggerLabels ? 2 : 1))\n                .attr('height', 16)\n                .attr('x', -x.rangeBand() / (staggerLabels ? 1 : 2 ));\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    .ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n\n                g.select('.nv-x.nv-axis').attr('transform', 'translate(0,' + y.range()[0] + ')');\n                g.select('.nv-x.nv-axis').call(xAxis);\n\n                var xTicks = g.select('.nv-x.nv-axis').selectAll('g');\n                if (staggerLabels) {\n                    xTicks\n                        .selectAll('text')\n                        .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 === 0 ? '5' : '17') + ')' })\n                }\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    .ticks( Math.floor(availableHeight/36) ) // can't use nv.utils.calcTicksY with Object data\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis').call(yAxis);\n            }\n\n            // Zero line\n            g.select('.nv-zeroLine line')\n                .attr('x1',0)\n                .attr('x2',availableWidth)\n                .attr('y1', y(0))\n                .attr('y2', y(0))\n            ;\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n        });\n\n        renderWatch.renderEnd('nv-boxplot chart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    boxplot.dispatch.on('elementMouseover.tooltip', function(evt) {\n        tooltip.data(evt).hidden(false);\n    });\n\n    boxplot.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.data(evt).hidden(true);\n    });\n\n    boxplot.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.boxplot = boxplot;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        staggerLabels: {get: function(){return staggerLabels;}, set: function(_){staggerLabels=_;}},\n        showXAxis: {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis: {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        tooltipContent:    {get: function(){return tooltip;}, set: function(_){tooltip=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            boxplot.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            boxplot.color(color);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( (_) ? 'right' : 'left');\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, boxplot);\n    nv.utils.initOptions(chart);\n\n    return chart;\n}\n\n// Chart design based on the recommendations of Stephen Few. Implementation\n// based on the work of Clint Ivy, Jamie Love, and Jason Davies.\n// http://projects.instantcognition.com/protovis/bulletchart/\n\nnv.models.bullet = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , orient = 'left' // TODO top & bottom\n        , reverse = false\n        , ranges = function(d) { return d.ranges }\n        , markers = function(d) { return d.markers ? d.markers : [] }\n        , markerLines = function(d) { return d.markerLines ? d.markerLines : [0] }\n        , measures = function(d) { return d.measures }\n        , rangeLabels = function(d) { return d.rangeLabels ? d.rangeLabels : [] }\n        , markerLabels = function(d) { return d.markerLabels ? d.markerLabels : []  }\n        , markerLineLabels = function(d) { return d.markerLineLabels ? d.markerLineLabels : []  }\n        , measureLabels = function(d) { return d.measureLabels ? d.measureLabels : []  }\n        , forceX = [0] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)\n        , width = 380\n        , height = 30\n        , container = null\n        , tickFormat = null\n        , color = nv.utils.getColor(['#1f77b4'])\n        , dispatch = d3.dispatch('elementMouseover', 'elementMouseout', 'elementMousemove')\n        , defaultRangeLabels = [\"Maximum\", \"Mean\", \"Minimum\"]\n        , legacyRangeClassNames = [\"Max\", \"Avg\", \"Min\"]\n        , duration = 1000\n        ;\n\n    function sortLabels(labels, values){\n        var lz = labels.slice();\n        labels.sort(function(a, b){\n            var iA = lz.indexOf(a);\n            var iB = lz.indexOf(b);\n            return d3.descending(values[iA], values[iB]);\n        });\n    };\n\n    function chart(selection) {\n        selection.each(function(d, i) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            var rangez = ranges.call(this, d, i).slice(),\n                markerz = markers.call(this, d, i).slice(),\n                markerLinez = markerLines.call(this, d, i).slice(),\n                measurez = measures.call(this, d, i).slice(),\n                rangeLabelz = rangeLabels.call(this, d, i).slice(),\n                markerLabelz = markerLabels.call(this, d, i).slice(),\n                markerLineLabelz = markerLineLabels.call(this, d, i).slice(),\n                measureLabelz = measureLabels.call(this, d, i).slice();\n\n            // Sort labels according to their sorted values\n            sortLabels(rangeLabelz, rangez);\n            sortLabels(markerLabelz, markerz);\n            sortLabels(markerLineLabelz, markerLinez);\n            sortLabels(measureLabelz, measurez);\n\n            // sort values descending\n            rangez.sort(d3.descending);\n            markerz.sort(d3.descending);\n            markerLinez.sort(d3.descending);\n            measurez.sort(d3.descending);\n\n            // Setup Scales\n            // Compute the new x-scale.\n            var x1 = d3.scale.linear()\n                .domain( d3.extent(d3.merge([forceX, rangez])) )\n                .range(reverse ? [availableWidth, 0] : [0, availableWidth]);\n\n            // Retrieve the old x-scale, if this is an update.\n            var x0 = this.__chart__ || d3.scale.linear()\n                .domain([0, Infinity])\n                .range(x1.range());\n\n            // Stash the new scale.\n            this.__chart__ = x1;\n\n            var rangeMin = d3.min(rangez), //rangez[2]\n                rangeMax = d3.max(rangez), //rangez[0]\n                rangeAvg = rangez[1];\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-bullet').data([d]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bullet');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            for(var i=0,il=rangez.length; i<il; i++){\n                var rangeClassNames = 'nv-range nv-range'+i;\n                if(i <= 2){\n                    rangeClassNames = rangeClassNames + ' nv-range'+legacyRangeClassNames[i];\n                }\n                gEnter.append('rect').attr('class', rangeClassNames);\n            }\n\n            gEnter.append('rect').attr('class', 'nv-measure');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)\n                w1 = function(d) { return Math.abs(x1(d) - x1(0)) };\n            var xp0 = function(d) { return d < 0 ? x0(d) : x0(0) },\n                xp1 = function(d) { return d < 0 ? x1(d) : x1(0) };\n\n            for(var i=0,il=rangez.length; i<il; i++){\n                var range = rangez[i];\n                g.select('rect.nv-range'+i)\n                    .datum(range)\n                    .attr('height', availableHeight)\n                    .transition()\n                    .duration(duration)\n                    .attr('width', w1(range))\n                    .attr('x', xp1(range))\n            }\n\n            g.select('rect.nv-measure')\n                .style('fill', color)\n                .attr('height', availableHeight / 3)\n                .attr('y', availableHeight / 3)\n                .on('mouseover', function() {\n                    dispatch.elementMouseover({\n                        value: measurez[0],\n                        label: measureLabelz[0] || 'Current',\n                        color: d3.select(this).style(\"fill\")\n                    })\n                })\n                .on('mousemove', function() {\n                    dispatch.elementMousemove({\n                        value: measurez[0],\n                        label: measureLabelz[0] || 'Current',\n                        color: d3.select(this).style(\"fill\")\n                    })\n                })\n                .on('mouseout', function() {\n                    dispatch.elementMouseout({\n                        value: measurez[0],\n                        label: measureLabelz[0] || 'Current',\n                        color: d3.select(this).style(\"fill\")\n                    })\n                })\n                .transition()\n                .duration(duration)\n                .attr('width', measurez < 0 ?\n                    x1(0) - x1(measurez[0])\n                    : x1(measurez[0]) - x1(0))\n                .attr('x', xp1(measurez));\n\n            var h3 =  availableHeight / 6;\n\n            var markerData = markerz.map( function(marker, index) {\n                return {value: marker, label: markerLabelz[index]}\n            });\n            gEnter\n              .selectAll(\"path.nv-markerTriangle\")\n              .data(markerData)\n              .enter()\n              .append('path')\n              .attr('class', 'nv-markerTriangle')\n              .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')\n              .on('mouseover', function(d) {\n                dispatch.elementMouseover({\n                  value: d.value,\n                  label: d.label || 'Previous',\n                  color: d3.select(this).style(\"fill\"),\n                  pos: [x1(d.value), availableHeight/2]\n                })\n\n              })\n              .on('mousemove', function(d) {\n                  dispatch.elementMousemove({\n                      value: d.value,\n                      label: d.label || 'Previous',\n                      color: d3.select(this).style(\"fill\")\n                  })\n              })\n              .on('mouseout', function(d, i) {\n                  dispatch.elementMouseout({\n                      value: d.value,\n                      label: d.label || 'Previous',\n                      color: d3.select(this).style(\"fill\")\n                  })\n              });\n\n            g.selectAll(\"path.nv-markerTriangle\")\n              .data(markerData)\n              .transition()\n              .duration(duration)\n              .attr('transform', function(d) { return 'translate(' + x1(d.value) + ',' + (availableHeight / 2) + ')' });\n\n            var markerLinesData = markerLinez.map( function(marker, index) {\n                return {value: marker, label: markerLineLabelz[index]}\n            });\n            gEnter\n              .selectAll(\"line.nv-markerLine\")\n              .data(markerLinesData)\n              .enter()\n              .append('line')\n              .attr('cursor', '')\n              .attr('class', 'nv-markerLine')\n              .attr('x1', function(d) { return x1(d.value) })\n              .attr('y1', '2')\n              .attr('x2', function(d) { return x1(d.value) })\n              .attr('y2', availableHeight - 2)\n              .on('mouseover', function(d) {\n                dispatch.elementMouseover({\n                  value: d.value,\n                  label: d.label || 'Previous',\n                  color: d3.select(this).style(\"fill\"),\n                  pos: [x1(d.value), availableHeight/2]\n                })\n\n              })\n              .on('mousemove', function(d) {\n                  dispatch.elementMousemove({\n                      value: d.value,\n                      label: d.label || 'Previous',\n                      color: d3.select(this).style(\"fill\")\n                  })\n              })\n              .on('mouseout', function(d, i) {\n                  dispatch.elementMouseout({\n                      value: d.value,\n                      label: d.label || 'Previous',\n                      color: d3.select(this).style(\"fill\")\n                  })\n              });\n\n            g.selectAll(\"line.nv-markerLine\")\n              .data(markerLinesData)\n              .transition()\n              .duration(duration)\n              .attr('x1', function(d) { return x1(d.value) })\n              .attr('x2', function(d) { return x1(d.value) });\n\n            wrap.selectAll('.nv-range')\n                .on('mouseover', function(d,i) {\n                    var label = rangeLabelz[i] || defaultRangeLabels[i];\n                    dispatch.elementMouseover({\n                        value: d,\n                        label: label,\n                        color: d3.select(this).style(\"fill\")\n                    })\n                })\n                .on('mousemove', function() {\n                    dispatch.elementMousemove({\n                        value: measurez[0],\n                        label: measureLabelz[0] || 'Previous',\n                        color: d3.select(this).style(\"fill\")\n                    })\n                })\n                .on('mouseout', function(d,i) {\n                    var label = rangeLabelz[i] || defaultRangeLabels[i];\n                    dispatch.elementMouseout({\n                        value: d,\n                        label: label,\n                        color: d3.select(this).style(\"fill\")\n                    })\n                });\n        });\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        ranges:      {get: function(){return ranges;}, set: function(_){ranges=_;}}, // ranges (bad, satisfactory, good)\n        markers:     {get: function(){return markers;}, set: function(_){markers=_;}}, // markers (previous, goal)\n        measures: {get: function(){return measures;}, set: function(_){measures=_;}}, // measures (actual, forecast)\n        forceX:      {get: function(){return forceX;}, set: function(_){forceX=_;}},\n        width:    {get: function(){return width;}, set: function(_){width=_;}},\n        height:    {get: function(){return height;}, set: function(_){height=_;}},\n        tickFormat:    {get: function(){return tickFormat;}, set: function(_){tickFormat=_;}},\n        duration:    {get: function(){return duration;}, set: function(_){duration=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        orient: {get: function(){return orient;}, set: function(_){ // left, right, top, bottom\n            orient = _;\n            reverse = orient == 'right' || orient == 'bottom';\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\n\n\n\n// Chart design based on the recommendations of Stephen Few. Implementation\n// based on the work of Clint Ivy, Jamie Love, and Jason Davies.\n// http://projects.instantcognition.com/protovis/bulletchart/\nnv.models.bulletChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var bullet = nv.models.bullet();\n    var tooltip = nv.models.tooltip();\n\n    var orient = 'left' // TODO top & bottom\n        , reverse = false\n        , margin = {top: 5, right: 40, bottom: 20, left: 120}\n        , ranges = function(d) { return d.ranges }\n        , markers = function(d) { return d.markers ? d.markers : [] }\n        , measures = function(d) { return d.measures }\n        , width = null\n        , height = 55\n        , tickFormat = null\n        , ticks = null\n        , noData = null\n        , dispatch = d3.dispatch()\n        ;\n\n    tooltip\n        .duration(0)\n        .headerEnabled(false);\n\n    function chart(selection) {\n        selection.each(function(d, i) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = height - margin.top - margin.bottom,\n                that = this;\n\n            chart.update = function() { chart(selection) };\n            chart.container = this;\n\n            // Display No Data message if there's nothing to show.\n            if (!d || !ranges.call(this, d, i)) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            var rangez = ranges.call(this, d, i).slice().sort(d3.descending),\n                markerz = markers.call(this, d, i).slice().sort(d3.descending),\n                measurez = measures.call(this, d, i).slice().sort(d3.descending);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-bulletChart').data([d]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bulletChart');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-bulletWrap');\n            gEnter.append('g').attr('class', 'nv-titles');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Compute the new x-scale.\n            var x1 = d3.scale.linear()\n                .domain([0, Math.max(rangez[0], (markerz[0] || 0), measurez[0])])  // TODO: need to allow forceX and forceY, and xDomain, yDomain\n                .range(reverse ? [availableWidth, 0] : [0, availableWidth]);\n\n            // Retrieve the old x-scale, if this is an update.\n            var x0 = this.__chart__ || d3.scale.linear()\n                .domain([0, Infinity])\n                .range(x1.range());\n\n            // Stash the new scale.\n            this.__chart__ = x1;\n\n            var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)\n                w1 = function(d) { return Math.abs(x1(d) - x1(0)) };\n\n            var title = gEnter.select('.nv-titles').append('g')\n                .attr('text-anchor', 'end')\n                .attr('transform', 'translate(-6,' + (height - margin.top - margin.bottom) / 2 + ')');\n            title.append('text')\n                .attr('class', 'nv-title')\n                .text(function(d) { return d.title; });\n\n            title.append('text')\n                .attr('class', 'nv-subtitle')\n                .attr('dy', '1em')\n                .text(function(d) { return d.subtitle; });\n\n            bullet\n                .width(availableWidth)\n                .height(availableHeight);\n\n            var bulletWrap = g.select('.nv-bulletWrap');\n            d3.transition(bulletWrap).call(bullet);\n\n            // Compute the tick format.\n            var format = tickFormat || x1.tickFormat( availableWidth / 100 );\n\n            // Update the tick groups.\n            var tick = g.selectAll('g.nv-tick')\n                .data(x1.ticks( ticks ? ticks : (availableWidth / 50) ), function(d) {\n                    return this.textContent || format(d);\n                });\n\n            // Initialize the ticks with the old scale, x0.\n            var tickEnter = tick.enter().append('g')\n                .attr('class', 'nv-tick')\n                .attr('transform', function(d) { return 'translate(' + x0(d) + ',0)' })\n                .style('opacity', 1e-6);\n\n            tickEnter.append('line')\n                .attr('y1', availableHeight)\n                .attr('y2', availableHeight * 7 / 6);\n\n            tickEnter.append('text')\n                .attr('text-anchor', 'middle')\n                .attr('dy', '1em')\n                .attr('y', availableHeight * 7 / 6)\n                .text(format);\n\n            // Transition the updating ticks to the new scale, x1.\n            var tickUpdate = d3.transition(tick)\n                .transition()\n                .duration(bullet.duration())\n                .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })\n                .style('opacity', 1);\n\n            tickUpdate.select('line')\n                .attr('y1', availableHeight)\n                .attr('y2', availableHeight * 7 / 6);\n\n            tickUpdate.select('text')\n                .attr('y', availableHeight * 7 / 6);\n\n            // Transition the exiting ticks to the new scale, x1.\n            d3.transition(tick.exit())\n                .transition()\n                .duration(bullet.duration())\n                .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })\n                .style('opacity', 1e-6)\n                .remove();\n        });\n\n        d3.timer.flush();\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    bullet.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt['series'] = {\n            key: evt.label,\n            value: evt.value,\n            color: evt.color\n        };\n        tooltip.data(evt).hidden(false);\n    });\n\n    bullet.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    bullet.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.bullet = bullet;\n    chart.dispatch = dispatch;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        ranges:      {get: function(){return ranges;}, set: function(_){ranges=_;}}, // ranges (bad, satisfactory, good)\n        markers:     {get: function(){return markers;}, set: function(_){markers=_;}}, // markers (previous, goal)\n        measures: {get: function(){return measures;}, set: function(_){measures=_;}}, // measures (actual, forecast)\n        width:    {get: function(){return width;}, set: function(_){width=_;}},\n        height:    {get: function(){return height;}, set: function(_){height=_;}},\n        tickFormat:    {get: function(){return tickFormat;}, set: function(_){tickFormat=_;}},\n        ticks:    {get: function(){return ticks;}, set: function(_){ticks=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        orient: {get: function(){return orient;}, set: function(_){ // left, right, top, bottom\n            orient = _;\n            reverse = orient == 'right' || orient == 'bottom';\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, bullet);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\n\n\nnv.models.candlestickBar = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = null\n        , height = null\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container\n        , x = d3.scale.linear()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , getOpen = function(d) { return d.open }\n        , getClose = function(d) { return d.close }\n        , getHigh = function(d) { return d.high }\n        , getLow = function(d) { return d.low }\n        , forceX = []\n        , forceY = []\n        , padData     = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart\n        , clipEdge = true\n        , color = nv.utils.defaultColor()\n        , interactive = false\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd', 'chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    function chart(selection) {\n        selection.each(function(data) {\n            container = d3.select(this);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            nv.utils.initSVG(container);\n\n            // Width of the candlestick bars.\n            var barWidth = (availableWidth / data[0].values.length) * .45;\n\n            // Setup Scales\n            x.domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ));\n\n            if (padData)\n                x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);\n            else\n                x.range(xRange || [5 + barWidth / 2, availableWidth - barWidth / 2 - 5]);\n\n            y.domain(yDomain || [\n                    d3.min(data[0].values.map(getLow).concat(forceY)),\n                    d3.max(data[0].values.map(getHigh).concat(forceY))\n                ]\n            ).range(yRange || [availableHeight, 0]);\n\n            // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point\n            if (x.domain()[0] === x.domain()[1])\n                x.domain()[0] ?\n                    x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])\n                    : x.domain([-1,1]);\n\n            if (y.domain()[0] === y.domain()[1])\n                y.domain()[0] ?\n                    y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])\n                    : y.domain([-1,1]);\n\n            // Setup containers and skeleton of chart\n            var wrap = d3.select(this).selectAll('g.nv-wrap.nv-candlestickBar').data([data[0].values]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-candlestickBar');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-ticks');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            container\n                .on('click', function(d,i) {\n                    dispatch.chartClick({\n                        data: d,\n                        index: i,\n                        pos: d3.event,\n                        id: id\n                    });\n                });\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-chart-clip-path-' + id)\n                .append('rect');\n\n            wrap.select('#nv-chart-clip-path-' + id + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');\n\n            var ticks = wrap.select('.nv-ticks').selectAll('.nv-tick')\n                .data(function(d) { return d });\n            ticks.exit().remove();\n\n            var tickGroups = ticks.enter().append('g');\n\n            // The colors are currently controlled by CSS.\n            ticks\n                .attr('class', function(d, i, j) { return (getOpen(d, i) > getClose(d, i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i});\n\n            var lines = tickGroups.append('line')\n                .attr('class', 'nv-candlestick-lines')\n                .attr('transform', function(d, i) { return 'translate(' + x(getX(d, i)) + ',0)'; })\n                .attr('x1', 0)\n                .attr('y1', function(d, i) { return y(getHigh(d, i)); })\n                .attr('x2', 0)\n                .attr('y2', function(d, i) { return y(getLow(d, i)); });\n\n            var rects = tickGroups.append('rect')\n                .attr('class', 'nv-candlestick-rects nv-bars')\n                .attr('transform', function(d, i) {\n                    return 'translate(' + (x(getX(d, i)) - barWidth/2) + ','\n                    + (y(getY(d, i)) - (getOpen(d, i) > getClose(d, i) ? (y(getClose(d, i)) - y(getOpen(d, i))) : 0))\n                    + ')';\n                })\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('width', barWidth)\n                .attr('height', function(d, i) {\n                    var open = getOpen(d, i);\n                    var close = getClose(d, i);\n                    return open > close ? y(close) - y(open) : y(open) - y(close);\n                });\n\n            ticks.select('.nv-candlestick-lines').transition()\n                .attr('transform', function(d, i) { return 'translate(' + x(getX(d, i)) + ',0)'; })\n                .attr('x1', 0)\n                .attr('y1', function(d, i) { return y(getHigh(d, i)); })\n                .attr('x2', 0)\n                .attr('y2', function(d, i) { return y(getLow(d, i)); });\n\n            ticks.select('.nv-candlestick-rects').transition()\n                .attr('transform', function(d, i) {\n                    return 'translate(' + (x(getX(d, i)) - barWidth/2) + ','\n                    + (y(getY(d, i)) - (getOpen(d, i) > getClose(d, i) ? (y(getClose(d, i)) - y(getOpen(d, i))) : 0))\n                    + ')';\n                })\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('width', barWidth)\n                .attr('height', function(d, i) {\n                    var open = getOpen(d, i);\n                    var close = getClose(d, i);\n                    return open > close ? y(close) - y(open) : y(open) - y(close);\n                });\n        });\n\n        return chart;\n    }\n\n\n    //Create methods to allow outside functions to highlight a specific bar.\n    chart.highlightPoint = function(pointIndex, isHoverOver) {\n        chart.clearHighlights();\n        container.select(\".nv-candlestickBar .nv-tick-0-\" + pointIndex)\n            .classed(\"hover\", isHoverOver)\n        ;\n    };\n\n    chart.clearHighlights = function() {\n        container.select(\".nv-candlestickBar .nv-tick.hover\")\n            .classed(\"hover\", false)\n        ;\n    };\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:    {get: function(){return width;}, set: function(_){width=_;}},\n        height:   {get: function(){return height;}, set: function(_){height=_;}},\n        xScale:   {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:   {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain:  {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain:  {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:   {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:   {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        forceX:   {get: function(){return forceX;}, set: function(_){forceX=_;}},\n        forceY:   {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        padData:  {get: function(){return padData;}, set: function(_){padData=_;}},\n        clipEdge: {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        id:       {get: function(){return id;}, set: function(_){id=_;}},\n        interactive: {get: function(){return interactive;}, set: function(_){interactive=_;}},\n\n        x:     {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:     {get: function(){return getY;}, set: function(_){getY=_;}},\n        open:  {get: function(){return getOpen();}, set: function(_){getOpen=_;}},\n        close: {get: function(){return getClose();}, set: function(_){getClose=_;}},\n        high:  {get: function(){return getHigh;}, set: function(_){getHigh=_;}},\n        low:   {get: function(){return getLow;}, set: function(_){getLow=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    != undefined ? _.top    : margin.top;\n            margin.right  = _.right  != undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom != undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   != undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\n\nnv.models.cumulativeLineChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var lines = nv.models.line()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , legend = nv.models.legend()\n        , controls = nv.models.legend()\n        , interactiveLayer = nv.interactiveGuideline()\n        , tooltip = nv.models.tooltip()\n        ;\n\n    var margin = {top: 30, right: 30, bottom: 50, left: 60}\n        , marginTop = null\n        , color = nv.utils.defaultColor()\n        , width = null\n        , height = null\n        , showLegend = true\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , showControls = true\n        , useInteractiveGuideline = false\n        , rescaleY = true\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , id = lines.id()\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , average = function(d) { return d.average }\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd')\n        , transitionDuration = 250\n        , duration = 250\n        , noErrorCheck = false  //if set to TRUE, will bypass an error check in the indexify function.\n        ;\n\n    state.index = 0;\n    state.rescaleY = rescaleY;\n\n    xAxis.orient('bottom').tickPadding(7);\n    yAxis.orient((rightAlignYAxis) ? 'right' : 'left');\n\n    tooltip.valueFormatter(function(d, i) {\n        return yAxis.tickFormat()(d, i);\n    }).headerFormatter(function(d, i) {\n        return xAxis.tickFormat()(d, i);\n    });\n\n    controls.updateState(false);\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var dx = d3.scale.linear()\n        , index = {i: 0, x: 0}\n        , renderWatch = nv.utils.renderWatch(dispatch, duration)\n        , currentYDomain\n        ;\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled }),\n                index: index.i,\n                rescaleY: rescaleY\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.index !== undefined)\n                index.i = state.index;\n            if (state.rescaleY !== undefined)\n                rescaleY = state.rescaleY;\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(lines);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n            container.classed('nv-chart-' + id, true);\n            var that = this;\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() {\n                if (duration === 0)\n                    container.call(chart);\n                else\n                    container.transition().duration(duration).call(chart)\n            };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disableddisabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            var indexDrag = d3.behavior.drag()\n                .on('dragstart', dragStart)\n                .on('drag', dragMove)\n                .on('dragend', dragEnd);\n\n\n            function dragStart(d,i) {\n                d3.select(chart.container)\n                    .style('cursor', 'ew-resize');\n            }\n\n            function dragMove(d,i) {\n                index.x = d3.event.x;\n                index.i = Math.round(dx.invert(index.x));\n                updateZero();\n            }\n\n            function dragEnd(d,i) {\n                d3.select(chart.container)\n                    .style('cursor', 'auto');\n\n                // update state and send stateChange with new index\n                state.index = index.i;\n                dispatch.stateChange(state);\n            }\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = lines.xScale();\n            y = lines.yScale();\n\n\n            dx.domain([0, data[0].values.length - 1]) //Assumes all series have same length\n                .range([0, availableWidth])\n                .clamp(true);\n\n            var data = indexify(index.i, data);\n\n            // initialize the starting yDomain for the not-rescale case after indexify (to have calculated point.display)\n            if (typeof(currentYDomain) === \"undefined\") {\n                currentYDomain = getCurrentYDomain(data);\n            }\n\n            if (!rescaleY) {\n                lines.yDomain(currentYDomain);\n                lines.clipEdge(true);\n            } else {\n                lines.yDomain(null);\n            }\n\n            // Setup containers and skeleton of chart\n            var interactivePointerEvents = (useInteractiveGuideline) ? \"none\" : \"all\";\n            var wrap = container.selectAll('g.nv-wrap.nv-cumulativeLine').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-cumulativeLine').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-interactive');\n            gEnter.append('g').attr('class', 'nv-x nv-axis').style(\"pointer-events\",\"none\");\n            gEnter.append('g').attr('class', 'nv-y nv-axis');\n            gEnter.append('g').attr('class', 'nv-background');\n            gEnter.append('g').attr('class', 'nv-linesWrap').style(\"pointer-events\",interactivePointerEvents);\n            gEnter.append('g').attr('class', 'nv-avgLinesWrap').style(\"pointer-events\",\"none\");\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n            gEnter.append('g').attr('class', 'nv-controlsWrap');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                legend.width(availableWidth);\n\n                g.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                }\n\n                g.select('.nv-legendWrap')\n                    .attr('transform', 'translate(0,' + (-margin.top) +')')\n            }\n\n            // Controls\n            if (!showControls) {\n                 g.select('.nv-controlsWrap').selectAll('*').remove();\n            } else {\n                var controlsData = [\n                    { key: 'Re-scale y-axis', disabled: !rescaleY }\n                ];\n\n                controls\n                    .width(140)\n                    .color(['#444', '#444', '#444'])\n                    .rightAlign(false)\n                    .margin({top: 5, right: 0, bottom: 5, left: 20})\n                ;\n\n                g.select('.nv-controlsWrap')\n                    .datum(controlsData)\n                    .attr('transform', 'translate(0,' + (-margin.top) +')')\n                    .call(controls);\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            // Show error if index point value is 0 (division by zero avoided)\n            var tempDisabled = data.filter(function(d) { return d.tempDisabled });\n\n            wrap.select('.tempDisabled').remove(); //clean-up and prevent duplicates\n            if (tempDisabled.length) {\n                wrap.append('text').attr('class', 'tempDisabled')\n                    .attr('x', availableWidth / 2)\n                    .attr('y', '-.71em')\n                    .style('text-anchor', 'end')\n                    .text(tempDisabled.map(function(d) { return d.key }).join(', ') + ' values cannot be calculated for this time period.');\n            }\n\n            //Set up interactive layer\n            if (useInteractiveGuideline) {\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left:margin.left,top:margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n\n            gEnter.select('.nv-background')\n                .append('rect');\n\n            g.select('.nv-background rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            lines\n                //.x(function(d) { return d.x })\n                .y(function(d) { return d.display.y })\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled && !data[i].tempDisabled; }));\n\n            var linesWrap = g.select('.nv-linesWrap')\n                .datum(data.filter(function(d) { return  !d.disabled && !d.tempDisabled }));\n\n            linesWrap.call(lines);\n\n            //Store a series index number in the data array.\n            data.forEach(function(d,i) {\n                d.seriesIndex = i;\n            });\n\n            var avgLineData = data.filter(function(d) {\n                return !d.disabled && !!average(d);\n            });\n\n            var avgLines = g.select(\".nv-avgLinesWrap\").selectAll(\"line\")\n                .data(avgLineData, function(d) { return d.key; });\n\n            var getAvgLineY = function(d) {\n                //If average lines go off the svg element, clamp them to the svg bounds.\n                var yVal = y(average(d));\n                if (yVal < 0) return 0;\n                if (yVal > availableHeight) return availableHeight;\n                return yVal;\n            };\n\n            avgLines.enter()\n                .append('line')\n                .style('stroke-width',2)\n                .style('stroke-dasharray','10,10')\n                .style('stroke',function (d,i) {\n                    return lines.color()(d,d.seriesIndex);\n                })\n                .attr('x1',0)\n                .attr('x2',availableWidth)\n                .attr('y1', getAvgLineY)\n                .attr('y2', getAvgLineY);\n\n            avgLines\n                .style('stroke-opacity',function(d){\n                    //If average lines go offscreen, make them transparent\n                    var yVal = y(average(d));\n                    if (yVal < 0 || yVal > availableHeight) return 0;\n                    return 1;\n                })\n                .attr('x1',0)\n                .attr('x2',availableWidth)\n                .attr('y1', getAvgLineY)\n                .attr('y2', getAvgLineY);\n\n            avgLines.exit().remove();\n\n            //Create index line\n            var indexLine = linesWrap.selectAll('.nv-indexLine')\n                .data([index]);\n            indexLine.enter().append('rect').attr('class', 'nv-indexLine')\n                .attr('width', 3)\n                .attr('x', -2)\n                .attr('fill', 'red')\n                .attr('fill-opacity', .5)\n                .style(\"pointer-events\",\"all\")\n                .call(indexDrag);\n\n            indexLine\n                .attr('transform', function(d) { return 'translate(' + dx(d.i) + ',0)' })\n                .attr('height', availableHeight);\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/70, data) )\n                    .tickSize(-availableHeight, 0);\n\n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')');\n                g.select('.nv-x.nv-axis')\n                    .call(xAxis);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis')\n                    .call(yAxis);\n            }\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            function updateZero() {\n                indexLine\n                    .data([index]);\n\n                //When dragging the index line, turn off line transitions.\n                // Then turn them back on when done dragging.\n                var oldDuration = chart.duration();\n                chart.duration(0);\n                chart.update();\n                chart.duration(oldDuration);\n            }\n\n            g.select('.nv-background rect')\n                .on('click', function() {\n                    index.x = d3.mouse(this)[0];\n                    index.i = Math.round(dx.invert(index.x));\n\n                    // update state and send stateChange with new index\n                    state.index = index.i;\n                    dispatch.stateChange(state);\n\n                    updateZero();\n                });\n\n            lines.dispatch.on('elementClick', function(e) {\n                index.i = e.pointIndex;\n                index.x = dx(index.i);\n\n                // update state and send stateChange with new index\n                state.index = index.i;\n                dispatch.stateChange(state);\n\n                updateZero();\n            });\n\n            controls.dispatch.on('legendClick', function(d,i) {\n                d.disabled = !d.disabled;\n                rescaleY = !d.disabled;\n                state.rescaleY = rescaleY;\n                if (!rescaleY) {\n                    currentYDomain = getCurrentYDomain(data); // rescale is turned off, so set the currentYDomain\n                }\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                lines.clearHighlights();\n                var singlePoint, pointIndex, pointXLocation, allData = [];\n\n                data\n                    .filter(function(series, i) {\n                        series.seriesIndex = i;\n                        return !(series.disabled || series.tempDisabled);\n                    })\n                    .forEach(function(series,i) {\n                        pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());\n                        lines.highlightPoint(i, pointIndex, true);\n                        var point = series.values[pointIndex];\n                        if (typeof point === 'undefined') return;\n                        if (typeof singlePoint === 'undefined') singlePoint = point;\n                        if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));\n                        allData.push({\n                            key: series.key,\n                            value: chart.y()(point, pointIndex),\n                            color: color(series,series.seriesIndex)\n                        });\n                    });\n\n                //Highlight the tooltip entry based on which point the mouse is closest to.\n                if (allData.length > 2) {\n                    var yValue = chart.yScale().invert(e.mouseY);\n                    var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);\n                    var threshold = 0.03 * domainExtent;\n                    var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value}),yValue,threshold);\n                    if (indexToHighlight !== null)\n                        allData[indexToHighlight].highlight = true;\n                }\n\n                var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex), pointIndex);\n                interactiveLayer.tooltip\n                    .valueFormatter(function(d,i) {\n                        return yAxis.tickFormat()(d);\n                    })\n                    .data(\n                    {\n                        value: xValue,\n                        series: allData\n                    }\n                )();\n\n                interactiveLayer.renderGuideLine(pointXLocation);\n            });\n\n            interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                lines.clearHighlights();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n\n                    state.disabled = e.disabled;\n                }\n\n                if (typeof e.index !== 'undefined') {\n                    index.i = e.index;\n                    index.x = dx(index.i);\n\n                    state.index = e.index;\n\n                    indexLine\n                        .data([index]);\n                }\n\n                if (typeof e.rescaleY !== 'undefined') {\n                    rescaleY = e.rescaleY;\n                }\n\n                chart.update();\n            });\n\n        });\n\n        renderWatch.renderEnd('cumulativeLineChart immediate');\n\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    lines.dispatch.on('elementMouseover.tooltip', function(evt) {\n        var point = {\n            x: chart.x()(evt.point),\n            y: chart.y()(evt.point),\n            color: evt.point.color\n        };\n        evt.point = point;\n        tooltip.data(evt).hidden(false);\n    });\n\n    lines.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true)\n    });\n\n    //============================================================\n    // Functions\n    //------------------------------------------------------------\n\n    var indexifyYGetter = null;\n    /* Normalize the data according to an index point. */\n    function indexify(idx, data) {\n        if (!indexifyYGetter) indexifyYGetter = lines.y();\n        return data.map(function(line, i) {\n            if (!line.values) {\n                return line;\n            }\n            var indexValue = line.values[idx];\n            if (indexValue == null) {\n                return line;\n            }\n            var v = indexifyYGetter(indexValue, idx);\n\n            // avoid divide by zero\n            if (Math.abs(v) < 0.00001 && !noErrorCheck) {\n                line.tempDisabled = true;\n                return line;\n            }\n\n            line.tempDisabled = false;\n\n            line.values = line.values.map(function(point, pointIndex) {\n                point.display = {'y': (indexifyYGetter(point, pointIndex) - v) / v };\n                return point;\n            });\n\n            return line;\n        })\n    }\n\n    function getCurrentYDomain(data) {\n        var seriesDomains = data\n            .filter(function(series) { return !(series.disabled || series.tempDisabled)})\n            .map(function(series,i) {\n                return d3.extent(series.values, function (d) { return d.display.y });\n            });\n\n        return [\n            d3.min(seriesDomains, function(d) { return d[0] }),\n            d3.max(seriesDomains, function(d) { return d[1] })\n        ];\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.lines = lines;\n    chart.legend = legend;\n    chart.controls = controls;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.interactiveLayer = interactiveLayer;\n    chart.state = state;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showControls:     {get: function(){return showControls;}, set: function(_){showControls=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        average: {get: function(){return average;}, set: function(_){average=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        showXAxis:    {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        noErrorCheck:    {get: function(){return noErrorCheck;}, set: function(_){noErrorCheck=_;}},\n\n        // options that require extra logic in the setter\n        rescaleY:     {get: function(){return rescaleY;}, set: function(_){\n            rescaleY = _;\n            chart.state.rescaleY = _; // also update state\n        }},\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n        }},\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = _;\n            if (_ === true) {\n                chart.interactive(false);\n                chart.useVoronoi(false);\n            }\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( (_) ? 'right' : 'left');\n        }},\n        duration:    {get: function(){return duration;}, set: function(_){\n            duration = _;\n            lines.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n            renderWatch.reset(duration);\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, lines);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n//TODO: consider deprecating by adding necessary features to multiBar model\nnv.models.discreteBar = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 960\n        , height = 500\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container\n        , x = d3.scale.ordinal()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove\n        , color = nv.utils.defaultColor()\n        , showValues = false\n        , valueFormat = d3.format(',.2f')\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')\n        , rectClass = 'discreteBar'\n        , duration = 250\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0;\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            //add series index to each data point for reference\n            data.forEach(function(series, i) {\n                series.values.forEach(function(point) {\n                    point.series = i;\n                });\n            });\n\n            // Setup Scales\n            // remap and flatten the data for use in calculating the scales' domains\n            var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate\n                data.map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d,i), y: getY(d,i), y0: d.y0 }\n                    })\n                });\n\n            x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))\n                .rangeBands(xRange || [0, availableWidth], .1);\n            y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y }).concat(forceY)));\n\n            // If showValues, pad the Y axis range to account for label height\n            if (showValues) y.range(yRange || [availableHeight - (y.domain()[0] < 0 ? 12 : 0), y.domain()[1] > 0 ? 12 : 0]);\n            else y.range(yRange || [availableHeight, 0]);\n\n            //store old scales if they exist\n            x0 = x0 || x;\n            y0 = y0 || y.copy().range([y(0),y(0)]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-discretebar').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discretebar');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-groups');\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            //TODO: by definition, the discrete bar should not have multiple groups, will modify/remove later\n            var groups = wrap.select('.nv-groups').selectAll('.nv-group')\n                .data(function(d) { return d }, function(d) { return d.key });\n            groups.enter().append('g')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6);\n            groups.exit()\n                .watchTransition(renderWatch, 'discreteBar: exit groups')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6)\n                .remove();\n            groups\n                .attr('class', function(d,i) { return 'nv-group nv-series-' + i })\n                .classed('hover', function(d) { return d.hover });\n            groups\n                .watchTransition(renderWatch, 'discreteBar: groups')\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', .75);\n\n            var bars = groups.selectAll('g.nv-bar')\n                .data(function(d) { return d.values });\n            bars.exit().remove();\n\n            var barsEnter = bars.enter().append('g')\n                .attr('transform', function(d,i,j) {\n                    return 'translate(' + (x(getX(d,i)) + x.rangeBand() * .05 ) + ', ' + y(0) + ')'\n                })\n                .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mouseout', function(d,i) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mousemove', function(d,i) {\n                    dispatch.elementMousemove({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('click', function(d,i) {\n                    var element = this;\n                    dispatch.elementClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\"),\n                        event: d3.event,\n                        element: element\n                    });\n                    d3.event.stopPropagation();\n                })\n                .on('dblclick', function(d,i) {\n                    dispatch.elementDblClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                    d3.event.stopPropagation();\n                });\n\n            barsEnter.append('rect')\n                .attr('height', 0)\n                .attr('width', x.rangeBand() * .9 / data.length )\n\n            if (showValues) {\n                barsEnter.append('text')\n                    .attr('text-anchor', 'middle')\n                ;\n\n                bars.select('text')\n                    .text(function(d,i) { return valueFormat(getY(d,i)) })\n                    .watchTransition(renderWatch, 'discreteBar: bars text')\n                    .attr('x', x.rangeBand() * .9 / 2)\n                    .attr('y', function(d,i) { return getY(d,i) < 0 ? y(getY(d,i)) - y(0) + 12 : -4 })\n\n                ;\n            } else {\n                bars.selectAll('text').remove();\n            }\n\n            bars\n                .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive' })\n                .style('fill', function(d,i) { return d.color || color(d,i) })\n                .style('stroke', function(d,i) { return d.color || color(d,i) })\n                .select('rect')\n                .attr('class', rectClass)\n                .watchTransition(renderWatch, 'discreteBar: bars rect')\n                .attr('width', x.rangeBand() * .9 / data.length);\n            bars.watchTransition(renderWatch, 'discreteBar: bars')\n                //.delay(function(d,i) { return i * 1200 / data[0].values.length })\n                .attr('transform', function(d,i) {\n                    var left = x(getX(d,i)) + x.rangeBand() * .05,\n                        top = getY(d,i) < 0 ?\n                            y(0) :\n                                y(0) - y(getY(d,i)) < 1 ?\n                            y(0) - 1 : //make 1 px positive bars show up above y=0\n                            y(getY(d,i));\n\n                    return 'translate(' + left + ', ' + top + ')'\n                })\n                .select('rect')\n                .attr('height', function(d,i) {\n                    return  Math.max(Math.abs(y(getY(d,i)) - y(0)), 1)\n                });\n\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n\n        });\n\n        renderWatch.renderEnd('discreteBar immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:   {get: function(){return width;}, set: function(_){width=_;}},\n        height:  {get: function(){return height;}, set: function(_){height=_;}},\n        forceY:  {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        showValues: {get: function(){return showValues;}, set: function(_){showValues=_;}},\n        x:       {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:       {get: function(){return getY;}, set: function(_){getY=_;}},\n        xScale:  {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:  {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:  {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:  {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        valueFormat:    {get: function(){return valueFormat;}, set: function(_){valueFormat=_;}},\n        id:          {get: function(){return id;}, set: function(_){id=_;}},\n        rectClass: {get: function(){return rectClass;}, set: function(_){rectClass=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.discreteBarChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var discretebar = nv.models.discreteBar()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n\t, legend = nv.models.legend()\n        , tooltip = nv.models.tooltip()\n        ;\n\n    var margin = {top: 15, right: 10, bottom: 50, left: 60}\n        , marginTop = null\n        , width = null\n        , height = null\n        , color = nv.utils.getColor()\n\t, showLegend = false\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , staggerLabels = false\n        , wrapLabels = false\n        , rotateLabels = 0\n        , x\n        , y\n        , noData = null\n        , dispatch = d3.dispatch('beforeUpdate','renderEnd')\n        , duration = 250\n        ;\n\n    xAxis\n        .orient('bottom')\n        .showMaxMin(false)\n        .tickFormat(function(d) { return d })\n    ;\n    yAxis\n        .orient((rightAlignYAxis) ? 'right' : 'left')\n        .tickFormat(d3.format(',.1f'))\n    ;\n\n    tooltip\n        .duration(0)\n        .headerEnabled(false)\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        })\n        .keyFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(discretebar);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() {\n                dispatch.beforeUpdate();\n                container.transition().duration(duration).call(chart);\n            };\n            chart.container = this;\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container);\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = discretebar.xScale();\n            y = discretebar.yScale().clamp(true);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-discreteBarWithAxes').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discreteBarWithAxes').append('g');\n            var defsEnter = gEnter.append('defs');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis')\n                .append('g').attr('class', 'nv-zeroLine')\n                .append('line');\n\n            gEnter.append('g').attr('class', 'nv-barsWrap');\n\t    gEnter.append('g').attr('class', 'nv-legendWrap');\n\n            g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                legend.width(availableWidth);\n\n                g.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                }\n\n                wrap.select('.nv-legendWrap')\n                    .attr('transform', 'translate(0,' + (-margin.top) +')')\n            }\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            // Main Chart Component(s)\n            discretebar\n                .width(availableWidth)\n                .height(availableHeight);\n\n            var barsWrap = g.select('.nv-barsWrap')\n                .datum(data.filter(function(d) { return !d.disabled }));\n\n            barsWrap.transition().call(discretebar);\n\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-x-label-clip-' + discretebar.id())\n                .append('rect');\n\n            g.select('#nv-x-label-clip-' + discretebar.id() + ' rect')\n                .attr('width', x.rangeBand() * (staggerLabels ? 2 : 1))\n                .attr('height', 16)\n                .attr('x', -x.rangeBand() / (staggerLabels ? 1 : 2 ));\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n\n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + (y.range()[0] + ((discretebar.showValues() && y.domain()[0] < 0) ? 16 : 0)) + ')');\n                g.select('.nv-x.nv-axis').call(xAxis);\n\n                var xTicks = g.select('.nv-x.nv-axis').selectAll('g');\n                if (staggerLabels) {\n                    xTicks\n                        .selectAll('text')\n                        .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '5' : '17') + ')' })\n                }\n\n                if (rotateLabels) {\n                    xTicks\n                        .selectAll('.tick text')\n                        .attr('transform', 'rotate(' + rotateLabels + ' 0,0)')\n                        .style('text-anchor', rotateLabels > 0 ? 'start' : 'end');\n                }\n\n                if (wrapLabels) {\n                    g.selectAll('.tick text')\n                        .call(nv.utils.wrapTicks, chart.xAxis.rangeBand())\n                }\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis').call(yAxis);\n            }\n\n            // Zero line\n            g.select(\".nv-zeroLine line\")\n                .attr(\"x1\",0)\n                .attr(\"x2\",(rightAlignYAxis) ? -availableWidth : availableWidth)\n                .attr(\"y1\", y(0))\n                .attr(\"y2\", y(0))\n            ;\n        });\n\n        renderWatch.renderEnd('discreteBar chart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    discretebar.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt['series'] = {\n            key: chart.x()(evt.data),\n            value: chart.y()(evt.data),\n            color: evt.color\n        };\n        tooltip.data(evt).hidden(false);\n    });\n\n    discretebar.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    discretebar.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.discretebar = discretebar;\n    chart.legend = legend;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n\tshowLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        staggerLabels: {get: function(){return staggerLabels;}, set: function(_){staggerLabels=_;}},\n        rotateLabels:  {get: function(){return rotateLabels;}, set: function(_){rotateLabels=_;}},\n        wrapLabels:  {get: function(){return wrapLabels;}, set: function(_){wrapLabels=!!_;}},\n        showXAxis: {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis: {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            discretebar.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            discretebar.color(color);\n\t    legend.color(color);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( (_) ? 'right' : 'left');\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, discretebar);\n    nv.utils.initOptions(chart);\n\n    return chart;\n}\n\nnv.models.distribution = function() {\n    \"use strict\";\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 400 //technically width or height depending on x or y....\n        , size = 8\n        , axis = 'x' // 'x' or 'y'... horizontal or vertical\n        , getData = function(d) { return d[axis] }  // defaults d.x or d.y\n        , color = nv.utils.defaultColor()\n        , scale = d3.scale.linear()\n        , domain\n        , duration = 250\n        , dispatch = d3.dispatch('renderEnd')\n        ;\n\n    //============================================================\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var scale0;\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    //============================================================\n\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableLength = width - (axis === 'x' ? margin.left + margin.right : margin.top + margin.bottom),\n                naxis = axis == 'x' ? 'y' : 'x',\n                container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            //------------------------------------------------------------\n            // Setup Scales\n\n            scale0 = scale0 || scale;\n\n            //------------------------------------------------------------\n\n\n            //------------------------------------------------------------\n            // Setup containers and skeleton of chart\n\n            var wrap = container.selectAll('g.nv-distribution').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-distribution');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n\n            //------------------------------------------------------------\n\n\n            var distWrap = g.selectAll('g.nv-dist')\n                .data(function(d) { return d }, function(d) { return d.key });\n\n            distWrap.enter().append('g');\n            distWrap\n                .attr('class', function(d,i) { return 'nv-dist nv-series-' + i })\n                .style('stroke', function(d,i) { return color(d, i) });\n\n            var dist = distWrap.selectAll('line.nv-dist' + axis)\n                .data(function(d) { return d.values })\n            dist.enter().append('line')\n                .attr(axis + '1', function(d,i) { return scale0(getData(d,i)) })\n                .attr(axis + '2', function(d,i) { return scale0(getData(d,i)) })\n            renderWatch.transition(distWrap.exit().selectAll('line.nv-dist' + axis), 'dist exit')\n                // .transition()\n                .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })\n                .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })\n                .style('stroke-opacity', 0)\n                .remove();\n            dist\n                .attr('class', function(d,i) { return 'nv-dist' + axis + ' nv-dist' + axis + '-' + i })\n                .attr(naxis + '1', 0)\n                .attr(naxis + '2', size);\n            renderWatch.transition(dist, 'dist')\n                // .transition()\n                .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })\n                .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })\n\n\n            scale0 = scale.copy();\n\n        });\n        renderWatch.renderEnd('distribution immediate');\n        return chart;\n    }\n\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n    chart.options = nv.utils.optionsFunc.bind(chart);\n    chart.dispatch = dispatch;\n\n    chart.margin = function(_) {\n        if (!arguments.length) return margin;\n        margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;\n        margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;\n        margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;\n        margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;\n        return chart;\n    };\n\n    chart.width = function(_) {\n        if (!arguments.length) return width;\n        width = _;\n        return chart;\n    };\n\n    chart.axis = function(_) {\n        if (!arguments.length) return axis;\n        axis = _;\n        return chart;\n    };\n\n    chart.size = function(_) {\n        if (!arguments.length) return size;\n        size = _;\n        return chart;\n    };\n\n    chart.getData = function(_) {\n        if (!arguments.length) return getData;\n        getData = d3.functor(_);\n        return chart;\n    };\n\n    chart.scale = function(_) {\n        if (!arguments.length) return scale;\n        scale = _;\n        return chart;\n    };\n\n    chart.color = function(_) {\n        if (!arguments.length) return color;\n        color = nv.utils.getColor(_);\n        return chart;\n    };\n\n    chart.duration = function(_) {\n        if (!arguments.length) return duration;\n        duration = _;\n        renderWatch.reset(duration);\n        return chart;\n    };\n    //============================================================\n\n\n    return chart;\n}\nnv.models.focus = function(content) {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var content = content || nv.models.line()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , brush = d3.svg.brush()\n        ;\n\n    var margin = {top: 10, right: 0, bottom: 30, left: 0}\n        , color = nv.utils.defaultColor()\n        , width = null\n        , height = 70\n        , showXAxis = true\n        , showYAxis = false\n        , rightAlignYAxis = false\n        , ticks = null\n        , x\n        , y\n        , brushExtent = null\n        , duration = 250\n        , dispatch = d3.dispatch('brush', 'onBrush', 'renderEnd')\n        , syncBrushing = true\n        ;\n\n    content.interactive(false);\n    content.pointActive(function(d) { return false; });\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(content);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = height - margin.top - margin.bottom;\n\n            chart.update = function() { \n                if( duration === 0 ) {\n                    container.call( chart );\n                } else {\n                    container.transition().duration(duration).call(chart);\n                }\n            };\n            chart.container = this;\n\n            // Setup Scales\n            x = content.xScale();\n            y = content.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-focus').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-focus').append('g');\n            var g = wrap.select('g');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            gEnter.append('g').attr('class', 'nv-background').append('rect');\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis');\n            gEnter.append('g').attr('class', 'nv-contentWrap');\n            gEnter.append('g').attr('class', 'nv-brushBackground');\n            gEnter.append('g').attr('class', 'nv-x nv-brush');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            g.select('.nv-background rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n                \n            content\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled; }));\n\n            var contentWrap = g.select('.nv-contentWrap')\n                .datum(data.filter(function(d) { return !d.disabled; }));\n\n            d3.transition(contentWrap).call(content);\n            \n            // Setup Brush\n            brush\n                .x(x)\n                .on('brush', function() {\n                    onBrush(syncBrushing);\n                });\n\n            brush.on('brushend', function () {\n                if (!syncBrushing) {\n                    dispatch.onBrush(brush.empty() ? x.domain() : brush.extent());\n                }\n            });\n\n            if (brushExtent) brush.extent(brushExtent);\n\n            var brushBG = g.select('.nv-brushBackground').selectAll('g')\n                .data([brushExtent || brush.extent()]);\n    \n            var brushBGenter = brushBG.enter()\n                .append('g');\n\n            brushBGenter.append('rect')\n                .attr('class', 'left')\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('height', availableHeight);\n\n            brushBGenter.append('rect')\n                .attr('class', 'right')\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('height', availableHeight);\n\n            var gBrush = g.select('.nv-x.nv-brush')\n                .call(brush);\n            gBrush.selectAll('rect')\n                .attr('height', availableHeight);\n            gBrush.selectAll('.resize').append('path').attr('d', resizePath);\n\n            onBrush(true);\n\n            g.select('.nv-background rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            if (showXAxis) {\n                xAxis.scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n  \n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')');\n                d3.transition(g.select('.nv-x.nv-axis'))\n                    .call(xAxis);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                d3.transition(g.select('.nv-y.nv-axis'))\n                    .call(yAxis);\n            }\n            \n            g.select('.nv-x.nv-axis')\n                .attr('transform', 'translate(0,' + y.range()[0] + ')');\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            //============================================================\n            // Functions\n            //------------------------------------------------------------\n    \n            // Taken from crossfilter (http://square.github.com/crossfilter/)\n            function resizePath(d) {\n                var e = +(d == 'e'),\n                    x = e ? 1 : -1,\n                    y = availableHeight / 3;\n                return 'M' + (0.5 * x) + ',' + y\n                    + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)\n                    + 'V' + (2 * y - 6)\n                    + 'A6,6 0 0 ' + e + ' ' + (0.5 * x) + ',' + (2 * y)\n                    + 'Z'\n                    + 'M' + (2.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8)\n                    + 'M' + (4.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8);\n            }\n    \n    \n            function updateBrushBG() {\n                if (!brush.empty()) brush.extent(brushExtent);\n                brushBG\n                    .data([brush.empty() ? x.domain() : brushExtent])\n                    .each(function(d,i) {\n                        var leftWidth = x(d[0]) - x.range()[0],\n                            rightWidth = availableWidth - x(d[1]);\n                        d3.select(this).select('.left')\n                            .attr('width',  leftWidth < 0 ? 0 : leftWidth);\n    \n                        d3.select(this).select('.right')\n                            .attr('x', x(d[1]))\n                            .attr('width', rightWidth < 0 ? 0 : rightWidth);\n                    });\n            }\n\n\n            function onBrush(shouldDispatch) {\n                brushExtent = brush.empty() ? null : brush.extent();\n                var extent = brush.empty() ? x.domain() : brush.extent();\n                dispatch.brush({extent: extent, brush: brush});\n                updateBrushBG();\n                if (shouldDispatch) {\n                    dispatch.onBrush(extent);\n                }\n            }\n        });\n\n        renderWatch.renderEnd('focus immediate');\n        return chart;\n    }\n\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.content = content;\n    chart.brush = brush;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showXAxis:      {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        brushExtent: {get: function(){return brushExtent;}, set: function(_){brushExtent=_;}},\n        syncBrushing: {get: function(){return syncBrushing;}, set: function(_){syncBrushing=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            content.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            content.color(color);\n        }},\n        interpolate: {get: function(){return content.interpolate();}, set: function(_){\n            content.interpolate(_);\n        }},\n        xTickFormat: {get: function(){return xAxis.tickFormat();}, set: function(_){\n            xAxis.tickFormat(_);\n        }},\n        yTickFormat: {get: function(){return yAxis.tickFormat();}, set: function(_){\n            yAxis.tickFormat(_);\n        }},\n        x: {get: function(){return content.x();}, set: function(_){\n            content.x(_);\n        }},\n        y: {get: function(){return content.y();}, set: function(_){\n            content.y(_);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( rightAlignYAxis ? 'right' : 'left');\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, content);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\nnv.models.forceDirectedGraph = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n    var margin = {top: 2, right: 0, bottom: 2, left: 0}\n        , width = 400\n        , height = 32\n        , container = null\n        , dispatch = d3.dispatch('renderEnd')\n        , color = nv.utils.getColor(['#000'])\n        , tooltip      = nv.models.tooltip()\n        , noData = null\n        // Force directed graph specific parameters [default values]\n        , linkStrength = 0.1\n        , friction = 0.9\n        , linkDist = 30\n        , charge = -120\n        , gravity = 0.1\n        , theta = 0.8\n        , alpha = 0.1\n        , radius = 5\n        // These functions allow to add extra attributes to ndes and links\n        ,nodeExtras = function(nodes) { /* Do nothing */ }\n        ,linkExtras = function(links) { /* Do nothing */ }\n        , getX=d3.functor(0.0)\n        , getY=d3.functor(0.0)\n        ;\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    function chart(selection) {\n        renderWatch.reset();\n\n        selection.each(function(data) {\n          container = d3.select(this);\n          nv.utils.initSVG(container);\n\n          var availableWidth = nv.utils.availableWidth(width, container, margin),\n              availableHeight = nv.utils.availableHeight(height, container, margin);\n\n          container\n                  .attr(\"width\", availableWidth)\n                  .attr(\"height\", availableHeight);\n\n          // Display No Data message if there's nothing to show.\n          if (!data || !data.links || !data.nodes) {\n              nv.utils.noData(chart, container)\n              return chart;\n          } else {\n              container.selectAll('.nv-noData').remove();\n          }\n          container.selectAll('*').remove();\n\n          // Collect names of all fields in the nodes\n          var nodeFieldSet = new Set();\n          data.nodes.forEach(function(node) {\n            var keys = Object.keys(node);\n            keys.forEach(function(key) {\n              nodeFieldSet.add(key);\n            });\n          });\n\n          var force = d3.layout.force()\n                .nodes(data.nodes)\n                .links(data.links)\n                .size([availableWidth, availableHeight])\n                .linkStrength(linkStrength)\n                .friction(friction)\n                .linkDistance(linkDist)\n                .charge(charge)\n                .gravity(gravity)\n                .theta(theta)\n                .alpha(alpha)\n                .start();\n\n          var link = container.selectAll(\".link\")\n                .data(data.links)\n                .enter().append(\"line\")\n                .attr(\"class\", \"nv-force-link\")\n                .style(\"stroke-width\", function(d) { return Math.sqrt(d.value); });\n\n          var node = container.selectAll(\".node\")\n                .data(data.nodes)\n                .enter()\n                .append(\"g\")\n                .attr(\"class\", \"nv-force-node\")\n                .call(force.drag);\n\n          node\n            .append(\"circle\")\n            .attr(\"r\", radius)\n            .style(\"fill\", function(d) { return color(d) } )\n            .on(\"mouseover\", function(evt) {\n              container.select('.nv-series-' + evt.seriesIndex + ' .nv-distx-' + evt.pointIndex)\n                  .attr('y1', evt.py);\n              container.select('.nv-series-' + evt.seriesIndex + ' .nv-disty-' + evt.pointIndex)\n                  .attr('x2', evt.px);\n\n              // Add 'series' object to\n              var nodeColor = color(evt);\n              evt.series = [];\n              nodeFieldSet.forEach(function(field) {\n                evt.series.push({\n                  color: nodeColor,\n                  key:   field,\n                  value: evt[field]\n                });\n              });\n              tooltip.data(evt).hidden(false);\n            })\n            .on(\"mouseout\",  function(d) {\n              tooltip.hidden(true);\n            });\n\n          tooltip.headerFormatter(function(d) {return \"Node\";});\n\n          // Apply extra attributes to nodes and links (if any)\n          linkExtras(link);\n          nodeExtras(node);\n\n          force.on(\"tick\", function() {\n              link.attr(\"x1\", function(d) { return d.source.x; })\n                  .attr(\"y1\", function(d) { return d.source.y; })\n                  .attr(\"x2\", function(d) { return d.target.x; })\n                  .attr(\"y2\", function(d) { return d.target.y; });\n\n              node.attr(\"transform\", function(d) {\n                return \"translate(\" + d.x + \", \" + d.y + \")\";\n              });\n            });\n        });\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:     {get: function(){return width;}, set: function(_){width=_;}},\n        height:    {get: function(){return height;}, set: function(_){height=_;}},\n\n        // Force directed graph specific parameters\n        linkStrength:{get: function(){return linkStrength;}, set: function(_){linkStrength=_;}},\n        friction:    {get: function(){return friction;}, set: function(_){friction=_;}},\n        linkDist:    {get: function(){return linkDist;}, set: function(_){linkDist=_;}},\n        charge:      {get: function(){return charge;}, set: function(_){charge=_;}},\n        gravity:     {get: function(){return gravity;}, set: function(_){gravity=_;}},\n        theta:       {get: function(){return theta;}, set: function(_){theta=_;}},\n        alpha:       {get: function(){return alpha;}, set: function(_){alpha=_;}},\n        radius:      {get: function(){return radius;}, set: function(_){radius=_;}},\n\n        //functor options\n        x: {get: function(){return getX;}, set: function(_){getX=d3.functor(_);}},\n        y: {get: function(){return getY;}, set: function(_){getY=d3.functor(_);}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        nodeExtras: {get: function(){return nodeExtras;}, set: function(_){\n            nodeExtras = _;\n        }},\n        linkExtras: {get: function(){return linkExtras;}, set: function(_){\n            linkExtras = _;\n        }}\n    });\n\n    chart.dispatch = dispatch;\n    chart.tooltip = tooltip;\n    nv.utils.initOptions(chart);\n    return chart;\n};\nnv.models.furiousLegend = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 5, right: 0, bottom: 5, left: 0}\n        , width = 400\n        , height = 20\n        , getKey = function(d) { return d.key }\n        , keyFormatter = function (d) { return d }\n        , color = nv.utils.getColor()\n        , maxKeyLength = 20 //default value for key lengths\n        , align = true\n        , padding = 28 //define how much space between legend items. - recommend 32 for furious version\n        , rightAlign = true\n        , updateState = true   //If true, legend will update data.disabled and trigger a 'stateChange' dispatch.\n        , radioButtonMode = false   //If true, clicking legend items will cause it to behave like a radio button. (only one can be selected at a time)\n        , expanded = false\n        , dispatch = d3.dispatch('legendClick', 'legendDblclick', 'legendMouseover', 'legendMouseout', 'stateChange')\n        , vers = 'classic' //Options are \"classic\" and \"furious\"\n        ;\n\n    function chart(selection) {\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-legend').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-legend').append('g');\n            var g = wrap.select('g');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var series = g.selectAll('.nv-series')\n                .data(function(d) {\n                    if(vers != 'furious') return d;\n\n                    return d.filter(function(n) {\n                        return expanded ? true : !n.disengaged;\n                    });\n                });\n            var seriesEnter = series.enter().append('g').attr('class', 'nv-series')\n\n            var seriesShape;\n\n            if(vers == 'classic') {\n                seriesEnter.append('circle')\n                    .style('stroke-width', 2)\n                    .attr('class','nv-legend-symbol')\n                    .attr('r', 5);\n\n                seriesShape = series.select('circle');\n            } else if (vers == 'furious') {\n                seriesEnter.append('rect')\n                    .style('stroke-width', 2)\n                    .attr('class','nv-legend-symbol')\n                    .attr('rx', 3)\n                    .attr('ry', 3);\n\n                seriesShape = series.select('rect');\n\n                seriesEnter.append('g')\n                    .attr('class', 'nv-check-box')\n                    .property('innerHTML','<path d=\"M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z\" class=\"nv-box\"></path><path d=\"M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511\" class=\"nv-check\"></path>')\n                    .attr('transform', 'translate(-10,-8)scale(0.5)');\n\n                var seriesCheckbox = series.select('.nv-check-box');\n\n                seriesCheckbox.each(function(d,i) {\n                    d3.select(this).selectAll('path')\n                        .attr('stroke', setTextColor(d,i));\n                });\n            }\n\n            seriesEnter.append('text')\n                .attr('text-anchor', 'start')\n                .attr('class','nv-legend-text')\n                .attr('dy', '.32em')\n                .attr('dx', '8');\n\n            var seriesText = series.select('text.nv-legend-text');\n\n            series\n                .on('mouseover', function(d,i) {\n                    dispatch.legendMouseover(d,i);  //TODO: Make consistent with other event objects\n                })\n                .on('mouseout', function(d,i) {\n                    dispatch.legendMouseout(d,i);\n                })\n                .on('click', function(d,i) {\n                    dispatch.legendClick(d,i);\n                    // make sure we re-get data in case it was modified\n                    var data = series.data();\n                    if (updateState) {\n                        if(vers =='classic') {\n                            if (radioButtonMode) {\n                                //Radio button mode: set every series to disabled,\n                                //  and enable the clicked series.\n                                data.forEach(function(series) { series.disabled = true});\n                                d.disabled = false;\n                            }\n                            else {\n                                d.disabled = !d.disabled;\n                                if (data.every(function(series) { return series.disabled})) {\n                                    //the default behavior of NVD3 legends is, if every single series\n                                    // is disabled, turn all series' back on.\n                                    data.forEach(function(series) { series.disabled = false});\n                                }\n                            }\n                        } else if(vers == 'furious') {\n                            if(expanded) {\n                                d.disengaged = !d.disengaged;\n                                d.userDisabled = d.userDisabled == undefined ? !!d.disabled : d.userDisabled;\n                                d.disabled = d.disengaged || d.userDisabled;\n                            } else if (!expanded) {\n                                d.disabled = !d.disabled;\n                                d.userDisabled = d.disabled;\n                                var engaged = data.filter(function(d) { return !d.disengaged; });\n                                if (engaged.every(function(series) { return series.userDisabled })) {\n                                    //the default behavior of NVD3 legends is, if every single series\n                                    // is disabled, turn all series' back on.\n                                    data.forEach(function(series) {\n                                        series.disabled = series.userDisabled = false;\n                                    });\n                                }\n                            }\n                        }\n                        dispatch.stateChange({\n                            disabled: data.map(function(d) { return !!d.disabled }),\n                            disengaged: data.map(function(d) { return !!d.disengaged })\n                        });\n\n                    }\n                })\n                .on('dblclick', function(d,i) {\n                    if(vers == 'furious' && expanded) return;\n                    dispatch.legendDblclick(d,i);\n                    if (updateState) {\n                        // make sure we re-get data in case it was modified\n                        var data = series.data();\n                        //the default behavior of NVD3 legends, when double clicking one,\n                        // is to set all other series' to false, and make the double clicked series enabled.\n                        data.forEach(function(series) {\n                            series.disabled = true;\n                            if(vers == 'furious') series.userDisabled = series.disabled;\n                        });\n                        d.disabled = false;\n                        if(vers == 'furious') d.userDisabled = d.disabled;\n                        dispatch.stateChange({\n                            disabled: data.map(function(d) { return !!d.disabled })\n                        });\n                    }\n                });\n\n            series.classed('nv-disabled', function(d) { return d.userDisabled });\n            series.exit().remove();\n\n            seriesText\n                .attr('fill', setTextColor)\n                .text(function (d) { return keyFormatter(getKey(d)) });\n\n            //TODO: implement fixed-width and max-width options (max-width is especially useful with the align option)\n            // NEW ALIGNING CODE, TODO: clean up\n\n            var versPadding;\n            switch(vers) {\n                case 'furious' :\n                    versPadding = 23;\n                    break;\n                case 'classic' :\n                    versPadding = 20;\n            }\n\n            if (align) {\n\n                var seriesWidths = [];\n                series.each(function(d,i) {\n                    var legendText;\n                    if (keyFormatter(getKey(d)) && keyFormatter(getKey(d)).length > maxKeyLength) {\n                        var trimmedKey = keyFormatter(getKey(d)).substring(0, maxKeyLength);\n                        legendText = d3.select(this).select('text').text(trimmedKey + \"...\");\n                        d3.select(this).append(\"svg:title\").text(keyFormatter(getKey(d)));\n                    } else {\n                        legendText = d3.select(this).select('text');\n                    }\n                    var nodeTextLength;\n                    try {\n                        nodeTextLength = legendText.node().getComputedTextLength();\n                        // If the legendText is display:none'd (nodeTextLength == 0), simulate an error so we approximate, instead\n                        if(nodeTextLength <= 0) throw Error();\n                    }\n                    catch(e) {\n                        nodeTextLength = nv.utils.calcApproxTextWidth(legendText);\n                    }\n\n                    seriesWidths.push(nodeTextLength + padding);\n                });\n\n                var seriesPerRow = 0;\n                var legendWidth = 0;\n                var columnWidths = [];\n\n                while ( legendWidth < availableWidth && seriesPerRow < seriesWidths.length) {\n                    columnWidths[seriesPerRow] = seriesWidths[seriesPerRow];\n                    legendWidth += seriesWidths[seriesPerRow++];\n                }\n                if (seriesPerRow === 0) seriesPerRow = 1; //minimum of one series per row\n\n                while ( legendWidth > availableWidth && seriesPerRow > 1 ) {\n                    columnWidths = [];\n                    seriesPerRow--;\n\n                    for (var k = 0; k < seriesWidths.length; k++) {\n                        if (seriesWidths[k] > (columnWidths[k % seriesPerRow] || 0) )\n                            columnWidths[k % seriesPerRow] = seriesWidths[k];\n                    }\n\n                    legendWidth = columnWidths.reduce(function(prev, cur, index, array) {\n                        return prev + cur;\n                    });\n                }\n\n                var xPositions = [];\n                for (var i = 0, curX = 0; i < seriesPerRow; i++) {\n                    xPositions[i] = curX;\n                    curX += columnWidths[i];\n                }\n\n                series\n                    .attr('transform', function(d, i) {\n                        return 'translate(' + xPositions[i % seriesPerRow] + ',' + (5 + Math.floor(i / seriesPerRow) * versPadding) + ')';\n                    });\n\n                //position legend as far right as possible within the total width\n                if (rightAlign) {\n                    g.attr('transform', 'translate(' + (width - margin.right - legendWidth) + ',' + margin.top + ')');\n                }\n                else {\n                    g.attr('transform', 'translate(0' + ',' + margin.top + ')');\n                }\n\n                height = margin.top + margin.bottom + (Math.ceil(seriesWidths.length / seriesPerRow) * versPadding);\n\n            } else {\n\n                var ypos = 5,\n                    newxpos = 5,\n                    maxwidth = 0,\n                    xpos;\n                series\n                    .attr('transform', function(d, i) {\n                        var length = d3.select(this).select('text').node().getComputedTextLength() + padding;\n                        xpos = newxpos;\n\n                        if (width < margin.left + margin.right + xpos + length) {\n                            newxpos = xpos = 5;\n                            ypos += versPadding;\n                        }\n\n                        newxpos += length;\n                        if (newxpos > maxwidth) maxwidth = newxpos;\n\n                        return 'translate(' + xpos + ',' + ypos + ')';\n                    });\n\n                //position legend as far right as possible within the total width\n                g.attr('transform', 'translate(' + (width - margin.right - maxwidth) + ',' + margin.top + ')');\n\n                height = margin.top + margin.bottom + ypos + 15;\n            }\n\n            if(vers == 'furious') {\n                // Size rectangles after text is placed\n                seriesShape\n                    .attr('width', function(d,i) {\n                        return seriesText[0][i].getComputedTextLength() + 27;\n                    })\n                    .attr('height', 18)\n                    .attr('y', -9)\n                    .attr('x', -15)\n            }\n\n            seriesShape\n                .style('fill', setBGColor)\n                .style('stroke', function(d,i) { return d.color || color(d, i) });\n        });\n\n        function setTextColor(d,i) {\n            if(vers != 'furious') return '#000';\n            if(expanded) {\n                return d.disengaged ? color(d,i) : '#fff';\n            } else if (!expanded) {\n                return !!d.disabled ? color(d,i) : '#fff';\n            }\n        }\n\n        function setBGColor(d,i) {\n            if(expanded && vers == 'furious') {\n                return d.disengaged ? '#fff' : color(d,i);\n            } else {\n                return !!d.disabled ? '#fff' : color(d,i);\n            }\n        }\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:          {get: function(){return width;}, set: function(_){width=_;}},\n        height:         {get: function(){return height;}, set: function(_){height=_;}},\n        key:            {get: function(){return getKey;}, set: function(_){getKey=_;}},\n        keyFormatter:   {get: function(){return keyFormatter;}, set: function(_){keyFormatter=_;}},\n        align:          {get: function(){return align;}, set: function(_){align=_;}},\n        rightAlign:     {get: function(){return rightAlign;}, set: function(_){rightAlign=_;}},\n        maxKeyLength:   {get: function(){return maxKeyLength;}, set: function(_){maxKeyLength=_;}},\n        padding:        {get: function(){return padding;}, set: function(_){padding=_;}},\n        updateState:    {get: function(){return updateState;}, set: function(_){updateState=_;}},\n        radioButtonMode:{get: function(){return radioButtonMode;}, set: function(_){radioButtonMode=_;}},\n        expanded:       {get: function(){return expanded;}, set: function(_){expanded=_;}},\n        vers:           {get: function(){return vers;}, set: function(_){vers=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n//TODO: consider deprecating and using multibar with single series for this\nnv.models.historicalBar = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = null\n        , height = null\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , x = d3.scale.linear()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , forceX = []\n        , forceY = [0]\n        , padData = false\n        , clipEdge = true\n        , color = nv.utils.defaultColor()\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')\n        , interactive = true\n        ;\n\n    var renderWatch = nv.utils.renderWatch(dispatch, 0);\n\n    function chart(selection) {\n        selection.each(function(data) {\n            renderWatch.reset();\n\n            container = d3.select(this);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            nv.utils.initSVG(container);\n\n            // Setup Scales\n            x.domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ));\n\n            if (padData)\n                x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);\n            else\n                x.range(xRange || [0, availableWidth]);\n\n            y.domain(yDomain || d3.extent(data[0].values.map(getY).concat(forceY) ))\n                .range(yRange || [availableHeight, 0]);\n\n            // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point\n            if (x.domain()[0] === x.domain()[1])\n                x.domain()[0] ?\n                    x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])\n                    : x.domain([-1,1]);\n\n            if (y.domain()[0] === y.domain()[1])\n                y.domain()[0] ?\n                    y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])\n                    : y.domain([-1,1]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-historicalBar-' + id).data([data[0].values]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBar-' + id);\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-bars');\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            container\n                .on('click', function(d,i) {\n                    dispatch.chartClick({\n                        data: d,\n                        index: i,\n                        pos: d3.event,\n                        id: id\n                    });\n                });\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-chart-clip-path-' + id)\n                .append('rect');\n\n            wrap.select('#nv-chart-clip-path-' + id + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            g.attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');\n\n            var bars = wrap.select('.nv-bars').selectAll('.nv-bar')\n                .data(function(d) { return d }, function(d,i) {return getX(d,i)});\n            bars.exit().remove();\n\n            bars.enter().append('rect')\n                .attr('x', 0 )\n                .attr('y', function(d,i) {  return nv.utils.NaNtoZero(y(Math.max(0, getY(d,i)))) })\n                .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.abs(y(getY(d,i)) - y(0))) })\n                .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; })\n                .on('mouseover', function(d,i) {\n                    if (!interactive) return;\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n\n                })\n                .on('mouseout', function(d,i) {\n                    if (!interactive) return;\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mousemove', function(d,i) {\n                    if (!interactive) return;\n                    dispatch.elementMousemove({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('click', function(d,i) {\n                    if (!interactive) return;\n                    var element = this;\n                    dispatch.elementClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\"),\n                        event: d3.event,\n                        element: element\n                    });\n                    d3.event.stopPropagation();\n                })\n                .on('dblclick', function(d,i) {\n                    if (!interactive) return;\n                    dispatch.elementDblClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                    d3.event.stopPropagation();\n                });\n\n            bars\n                .attr('fill', function(d,i) { return color(d, i); })\n                .attr('class', function(d,i,j) { return (getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive') + ' nv-bar-' + j + '-' + i })\n                .watchTransition(renderWatch, 'bars')\n                .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; })\n                //TODO: better width calculations that don't assume always uniform data spacing;w\n                .attr('width', (availableWidth / data[0].values.length) * .9 );\n\n            bars.watchTransition(renderWatch, 'bars')\n                .attr('y', function(d,i) {\n                    var rval = getY(d,i) < 0 ?\n                        y(0) :\n                            y(0) - y(getY(d,i)) < 1 ?\n                        y(0) - 1 :\n                        y(getY(d,i));\n                    return nv.utils.NaNtoZero(rval);\n                })\n                .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.max(Math.abs(y(getY(d,i)) - y(0)),1)) });\n\n        });\n\n        renderWatch.renderEnd('historicalBar immediate');\n        return chart;\n    }\n\n    //Create methods to allow outside functions to highlight a specific bar.\n    chart.highlightPoint = function(pointIndex, isHoverOver) {\n        container\n            .select(\".nv-bars .nv-bar-0-\" + pointIndex)\n            .classed(\"hover\", isHoverOver)\n        ;\n    };\n\n    chart.clearHighlights = function() {\n        container\n            .select(\".nv-bars .nv-bar.hover\")\n            .classed(\"hover\", false)\n        ;\n    };\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:   {get: function(){return width;}, set: function(_){width=_;}},\n        height:  {get: function(){return height;}, set: function(_){height=_;}},\n        forceX:  {get: function(){return forceX;}, set: function(_){forceX=_;}},\n        forceY:  {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        padData: {get: function(){return padData;}, set: function(_){padData=_;}},\n        x:       {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:       {get: function(){return getY;}, set: function(_){getY=_;}},\n        xScale:  {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:  {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:  {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:  {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        clipEdge:    {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        id:          {get: function(){return id;}, set: function(_){id=_;}},\n        interactive: {get: function(){return interactive;}, set: function(_){interactive=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.historicalBarChart = function(bar_model) {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var bars = bar_model || nv.models.historicalBar()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , legend = nv.models.legend()\n        , interactiveLayer = nv.interactiveGuideline()\n        , tooltip = nv.models.tooltip()\n        ;\n\n\n    var margin = {top: 30, right: 90, bottom: 50, left: 90}\n        , marginTop = null\n        , color = nv.utils.defaultColor()\n        , width = null\n        , height = null\n        , showLegend = false\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , useInteractiveGuideline = false\n        , x\n        , y\n        , state = {}\n        , defaultState = null\n        , noData = null\n        , dispatch = d3.dispatch('tooltipHide', 'stateChange', 'changeState', 'renderEnd')\n        , transitionDuration = 250\n        ;\n\n    xAxis.orient('bottom').tickPadding(7);\n    yAxis.orient( (rightAlignYAxis) ? 'right' : 'left');\n    tooltip\n        .duration(0)\n        .headerEnabled(false)\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch, 0);\n\n    function chart(selection) {\n        selection.each(function(data) {\n            renderWatch.reset();\n            renderWatch.models(bars);\n            if (showXAxis) renderWatch.models(xAxis);\n            if (showYAxis) renderWatch.models(yAxis);\n\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() { container.transition().duration(transitionDuration).call(chart) };\n            chart.container = this;\n\n            //set state.disabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display noData message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = bars.xScale();\n            y = bars.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-historicalBarChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBarChart').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis');\n            gEnter.append('g').attr('class', 'nv-barsWrap');\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n            gEnter.append('g').attr('class', 'nv-interactive');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                legend.width(availableWidth);\n\n                g.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                }\n\n                wrap.select('.nv-legendWrap')\n                    .attr('transform', 'translate(0,' + (-margin.top) +')')\n            }\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            //Set up interactive layer\n            if (useInteractiveGuideline) {\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left:margin.left, top:margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n            bars\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled }));\n\n            var barsWrap = g.select('.nv-barsWrap')\n                .datum(data.filter(function(d) { return !d.disabled }));\n            barsWrap.transition().call(bars);\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n\n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')');\n                g.select('.nv-x.nv-axis')\n                    .transition()\n                    .call(xAxis);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis')\n                    .transition()\n                    .call(yAxis);\n            }\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                bars.clearHighlights();\n\n                var singlePoint, pointIndex, pointXLocation, allData = [];\n                data\n                    .filter(function(series, i) {\n                        series.seriesIndex = i;\n                        return !series.disabled;\n                    })\n                    .forEach(function(series,i) {\n                        pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());\n                        bars.highlightPoint(pointIndex,true);\n                        var point = series.values[pointIndex];\n                        if (point === undefined) return;\n                        if (singlePoint === undefined) singlePoint = point;\n                        if (pointXLocation === undefined) pointXLocation = chart.xScale()(chart.x()(point,pointIndex));\n                        allData.push({\n                            key: series.key,\n                            value: chart.y()(point, pointIndex),\n                            color: color(series,series.seriesIndex),\n                            data: series.values[pointIndex]\n                        });\n                    });\n\n                var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex));\n                interactiveLayer.tooltip\n                    .valueFormatter(function(d,i) {\n                        return yAxis.tickFormat()(d);\n                    })\n                    .data({\n                        value: xValue,\n                        index: pointIndex,\n                        series: allData\n                    })();\n\n                interactiveLayer.renderGuideLine(pointXLocation);\n\n            });\n\n            interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                dispatch.tooltipHide();\n                bars.clearHighlights();\n            });\n\n            legend.dispatch.on('legendClick', function(d,i) {\n                d.disabled = !d.disabled;\n\n                if (!data.filter(function(d) { return !d.disabled }).length) {\n                    data.map(function(d) {\n                        d.disabled = false;\n                        wrap.selectAll('.nv-series').classed('disabled', false);\n                        return d;\n                    });\n                }\n\n                state.disabled = data.map(function(d) { return !!d.disabled });\n                dispatch.stateChange(state);\n\n                selection.transition().call(chart);\n            });\n\n            legend.dispatch.on('legendDblclick', function(d) {\n                //Double clicking should always enable current series, and disabled all others.\n                data.forEach(function(d) {\n                    d.disabled = true;\n                });\n                d.disabled = false;\n\n                state.disabled = data.map(function(d) { return !!d.disabled });\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n\n                    state.disabled = e.disabled;\n                }\n\n                chart.update();\n            });\n        });\n\n        renderWatch.renderEnd('historicalBarChart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    bars.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt['series'] = {\n            key: chart.x()(evt.data),\n            value: chart.y()(evt.data),\n            color: evt.color\n        };\n        tooltip.data(evt).hidden(false);\n    });\n\n    bars.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    bars.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.bars = bars;\n    chart.legend = legend;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.interactiveLayer = interactiveLayer;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        showXAxis: {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis: {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n            bars.color(color);\n        }},\n        duration:    {get: function(){return transitionDuration;}, set: function(_){\n            transitionDuration=_;\n            renderWatch.reset(transitionDuration);\n            yAxis.duration(transitionDuration);\n            xAxis.duration(transitionDuration);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( (_) ? 'right' : 'left');\n        }},\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = _;\n            if (_ === true) {\n                chart.interactive(false);\n            }\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, bars);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\n\n// ohlcChart is just a historical chart with ohlc bars and some tweaks\nnv.models.ohlcBarChart = function() {\n    var chart = nv.models.historicalBarChart(nv.models.ohlcBar());\n\n    // special default tooltip since we show multiple values per x\n    chart.useInteractiveGuideline(true);\n    chart.interactiveLayer.tooltip.contentGenerator(function(data) {\n        // we assume only one series exists for this chart\n        var d = data.series[0].data;\n        // match line colors as defined in nv.d3.css\n        var color = d.open < d.close ? \"2ca02c\" : \"d62728\";\n        return '' +\n            '<h3 style=\"color: #' + color + '\">' + data.value + '</h3>' +\n            '<table>' +\n            '<tr><td>open:</td><td>' + chart.yAxis.tickFormat()(d.open) + '</td></tr>' +\n            '<tr><td>close:</td><td>' + chart.yAxis.tickFormat()(d.close) + '</td></tr>' +\n            '<tr><td>high</td><td>' + chart.yAxis.tickFormat()(d.high) + '</td></tr>' +\n            '<tr><td>low:</td><td>' + chart.yAxis.tickFormat()(d.low) + '</td></tr>' +\n            '</table>';\n    });\n    return chart;\n};\n\n// candlestickChart is just a historical chart with candlestick bars and some tweaks\nnv.models.candlestickBarChart = function() {\n    var chart = nv.models.historicalBarChart(nv.models.candlestickBar());\n\n    // special default tooltip since we show multiple values per x\n    chart.useInteractiveGuideline(true);\n    chart.interactiveLayer.tooltip.contentGenerator(function(data) {\n        // we assume only one series exists for this chart\n        var d = data.series[0].data;\n        // match line colors as defined in nv.d3.css\n        var color = d.open < d.close ? \"2ca02c\" : \"d62728\";\n        return '' +\n            '<h3 style=\"color: #' + color + '\">' + data.value + '</h3>' +\n            '<table>' +\n            '<tr><td>open:</td><td>' + chart.yAxis.tickFormat()(d.open) + '</td></tr>' +\n            '<tr><td>close:</td><td>' + chart.yAxis.tickFormat()(d.close) + '</td></tr>' +\n            '<tr><td>high</td><td>' + chart.yAxis.tickFormat()(d.high) + '</td></tr>' +\n            '<tr><td>low:</td><td>' + chart.yAxis.tickFormat()(d.low) + '</td></tr>' +\n            '</table>';\n    });\n    return chart;\n};\nnv.models.legend = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 5, right: 0, bottom: 5, left: 0}\n        , width = 400\n        , height = 20\n        , getKey = function(d) { return d.key }\n        , keyFormatter = function (d) { return d }\n        , color = nv.utils.getColor()\n        , maxKeyLength = 20 //default value for key lengths\n        , align = true\n        , padding = 32 //define how much space between legend items. - recommend 32 for furious version\n        , rightAlign = true\n        , updateState = true   //If true, legend will update data.disabled and trigger a 'stateChange' dispatch.\n        , enableDoubleClick = true   //If true, legend will enable double click handling\n        , radioButtonMode = false   //If true, clicking legend items will cause it to behave like a radio button. (only one can be selected at a time)\n        , expanded = false\n        , dispatch = d3.dispatch('legendClick', 'legendDblclick', 'legendMouseover', 'legendMouseout', 'stateChange')\n        , vers = 'classic' //Options are \"classic\" and \"furious\"\n        ;\n\n    function chart(selection) {\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-legend').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-legend').append('g');\n            var g = wrap.select('g');\n\n            if (rightAlign)\n                wrap.attr('transform', 'translate(' + (- margin.right) + ',' + margin.top + ')');\n            else\n                wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var series = g.selectAll('.nv-series')\n                .data(function(d) {\n                    if(vers != 'furious') return d;\n\n                    return d.filter(function(n) {\n                        return expanded ? true : !n.disengaged;\n                    });\n                });\n\n            var seriesEnter = series.enter().append('g').attr('class', 'nv-series');\n            var seriesShape;\n\n            var versPadding;\n            switch(vers) {\n                case 'furious' :\n                    versPadding = 23;\n                    break;\n                case 'classic' :\n                    versPadding = 20;\n            }\n\n            if(vers == 'classic') {\n                seriesEnter.append('circle')\n                    .style('stroke-width', 2)\n                    .attr('class','nv-legend-symbol')\n                    .attr('r', 5);\n\n                seriesShape = series.select('.nv-legend-symbol');\n            } else if (vers == 'furious') {\n                seriesEnter.append('rect')\n                    .style('stroke-width', 2)\n                    .attr('class','nv-legend-symbol')\n                    .attr('rx', 3)\n                    .attr('ry', 3);\n                seriesShape = series.select('.nv-legend-symbol');\n\n                seriesEnter.append('g')\n                    .attr('class', 'nv-check-box')\n                    .property('innerHTML','<path d=\"M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z\" class=\"nv-box\"></path><path d=\"M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511\" class=\"nv-check\"></path>')\n                    .attr('transform', 'translate(-10,-8)scale(0.5)');\n\n                var seriesCheckbox = series.select('.nv-check-box');\n\n                seriesCheckbox.each(function(d,i) {\n                    d3.select(this).selectAll('path')\n                        .attr('stroke', setTextColor(d,i));\n                });\n            }\n\n            seriesEnter.append('text')\n                .attr('text-anchor', 'start')\n                .attr('class','nv-legend-text')\n                .attr('dy', '.32em')\n                .attr('dx', '8');\n\n            var seriesText = series.select('text.nv-legend-text');\n\n            series\n                .on('mouseover', function(d,i) {\n                    dispatch.legendMouseover(d,i);  //TODO: Make consistent with other event objects\n                })\n                .on('mouseout', function(d,i) {\n                    dispatch.legendMouseout(d,i);\n                })\n                .on('click', function(d,i) {\n                    dispatch.legendClick(d,i);\n                    // make sure we re-get data in case it was modified\n                    var data = series.data();\n                    if (updateState) {\n                        if(vers =='classic') {\n                            if (radioButtonMode) {\n                                //Radio button mode: set every series to disabled,\n                                //  and enable the clicked series.\n                                data.forEach(function(series) { series.disabled = true});\n                                d.disabled = false;\n                            }\n                            else {\n                                d.disabled = !d.disabled;\n                                if (data.every(function(series) { return series.disabled})) {\n                                    //the default behavior of NVD3 legends is, if every single series\n                                    // is disabled, turn all series' back on.\n                                    data.forEach(function(series) { series.disabled = false});\n                                }\n                            }\n                        } else if(vers == 'furious') {\n                            if(expanded) {\n                                d.disengaged = !d.disengaged;\n                                d.userDisabled = d.userDisabled == undefined ? !!d.disabled : d.userDisabled;\n                                d.disabled = d.disengaged || d.userDisabled;\n                            } else if (!expanded) {\n                                d.disabled = !d.disabled;\n                                d.userDisabled = d.disabled;\n                                var engaged = data.filter(function(d) { return !d.disengaged; });\n                                if (engaged.every(function(series) { return series.userDisabled })) {\n                                    //the default behavior of NVD3 legends is, if every single series\n                                    // is disabled, turn all series' back on.\n                                    data.forEach(function(series) {\n                                        series.disabled = series.userDisabled = false;\n                                    });\n                                }\n                            }\n                        }\n                        dispatch.stateChange({\n                            disabled: data.map(function(d) { return !!d.disabled }),\n                            disengaged: data.map(function(d) { return !!d.disengaged })\n                        });\n\n                    }\n                })\n                .on('dblclick', function(d,i) {\n                    if (enableDoubleClick) {\n                        if (vers == 'furious' && expanded) return;\n                        dispatch.legendDblclick(d, i);\n                        if (updateState) {\n                            // make sure we re-get data in case it was modified\n                            var data = series.data();\n                            //the default behavior of NVD3 legends, when double clicking one,\n                            // is to set all other series' to false, and make the double clicked series enabled.\n                            data.forEach(function (series) {\n                                series.disabled = true;\n                                if (vers == 'furious') series.userDisabled = series.disabled;\n                            });\n                            d.disabled = false;\n                            if (vers == 'furious') d.userDisabled = d.disabled;\n                            dispatch.stateChange({\n                                disabled: data.map(function (d) {\n                                    return !!d.disabled\n                                })\n                            });\n                        }\n                    }\n                });\n\n            series.classed('nv-disabled', function(d) { return d.userDisabled });\n            series.exit().remove();\n\n            seriesText\n                .attr('fill', setTextColor)\n                .text(function (d) { return keyFormatter(getKey(d)) });\n\n            //TODO: implement fixed-width and max-width options (max-width is especially useful with the align option)\n            // NEW ALIGNING CODE, TODO: clean up\n            var legendWidth = 0;\n            if (align) {\n\n                var seriesWidths = [];\n                series.each(function(d,i) {\n                    var legendText;\n                    if (keyFormatter(getKey(d)) && keyFormatter(getKey(d)).length > maxKeyLength) {\n                        var trimmedKey = keyFormatter(getKey(d)).substring(0, maxKeyLength);\n                        legendText = d3.select(this).select('text').text(trimmedKey + \"...\");\n                        d3.select(this).append(\"svg:title\").text(keyFormatter(getKey(d)));\n                    } else {\n                        legendText = d3.select(this).select('text');\n                    }\n                    var nodeTextLength;\n                    try {\n                        nodeTextLength = legendText.node().getComputedTextLength();\n                        // If the legendText is display:none'd (nodeTextLength == 0), simulate an error so we approximate, instead\n                        if(nodeTextLength <= 0) throw Error();\n                    }\n                    catch(e) {\n                        nodeTextLength = nv.utils.calcApproxTextWidth(legendText);\n                    }\n\n                    seriesWidths.push(nodeTextLength + padding);\n                });\n\n                var seriesPerRow = 0;\n                var columnWidths = [];\n                legendWidth = 0;\n\n                while ( legendWidth < availableWidth && seriesPerRow < seriesWidths.length) {\n                    columnWidths[seriesPerRow] = seriesWidths[seriesPerRow];\n                    legendWidth += seriesWidths[seriesPerRow++];\n                }\n                if (seriesPerRow === 0) seriesPerRow = 1; //minimum of one series per row\n\n                while ( legendWidth > availableWidth && seriesPerRow > 1 ) {\n                    columnWidths = [];\n                    seriesPerRow--;\n\n                    for (var k = 0; k < seriesWidths.length; k++) {\n                        if (seriesWidths[k] > (columnWidths[k % seriesPerRow] || 0) )\n                            columnWidths[k % seriesPerRow] = seriesWidths[k];\n                    }\n\n                    legendWidth = columnWidths.reduce(function(prev, cur, index, array) {\n                        return prev + cur;\n                    });\n                }\n\n                var xPositions = [];\n                for (var i = 0, curX = 0; i < seriesPerRow; i++) {\n                    xPositions[i] = curX;\n                    curX += columnWidths[i];\n                }\n\n                series\n                    .attr('transform', function(d, i) {\n                        return 'translate(' + xPositions[i % seriesPerRow] + ',' + (5 + Math.floor(i / seriesPerRow) * versPadding) + ')';\n                    });\n\n                //position legend as far right as possible within the total width\n                if (rightAlign) {\n                    g.attr('transform', 'translate(' + (width - margin.right - legendWidth) + ',' + margin.top + ')');\n                }\n                else {\n                    g.attr('transform', 'translate(0' + ',' + margin.top + ')');\n                }\n\n                height = margin.top + margin.bottom + (Math.ceil(seriesWidths.length / seriesPerRow) * versPadding);\n\n            } else {\n\n                var ypos = 5,\n                    newxpos = 5,\n                    maxwidth = 0,\n                    xpos;\n                series\n                    .attr('transform', function(d, i) {\n                        var length = d3.select(this).select('text').node().getComputedTextLength() + padding;\n                        xpos = newxpos;\n\n                        if (width < margin.left + margin.right + xpos + length) {\n                            newxpos = xpos = 5;\n                            ypos += versPadding;\n                        }\n\n                        newxpos += length;\n                        if (newxpos > maxwidth) maxwidth = newxpos;\n\n                        if(legendWidth < xpos + maxwidth) {\n                            legendWidth = xpos + maxwidth;\n                        }\n                        return 'translate(' + xpos + ',' + ypos + ')';\n                    });\n\n                //position legend as far right as possible within the total width\n                g.attr('transform', 'translate(' + (width - margin.right - maxwidth) + ',' + margin.top + ')');\n\n                height = margin.top + margin.bottom + ypos + 15;\n            }\n\n            if(vers == 'furious') {\n                // Size rectangles after text is placed\n                seriesShape\n                    .attr('width', function(d,i) {\n                        return seriesText[0][i].getComputedTextLength() + 27;\n                    })\n                    .attr('height', 18)\n                    .attr('y', -9)\n                    .attr('x', -15);\n\n                // The background for the expanded legend (UI)\n                gEnter.insert('rect',':first-child')\n                    .attr('class', 'nv-legend-bg')\n                    .attr('fill', '#eee')\n                    // .attr('stroke', '#444')\n                    .attr('opacity',0);\n\n                var seriesBG = g.select('.nv-legend-bg');\n\n                seriesBG\n                .transition().duration(300)\n                    .attr('x', -versPadding )\n                    .attr('width', legendWidth + versPadding - 12)\n                    .attr('height', height + 10)\n                    .attr('y', -margin.top - 10)\n                    .attr('opacity', expanded ? 1 : 0);\n\n\n            }\n\n            seriesShape\n                .style('fill', setBGColor)\n                .style('fill-opacity', setBGOpacity)\n                .style('stroke', setBGColor);\n        });\n\n        function setTextColor(d,i) {\n            if(vers != 'furious') return '#000';\n            if(expanded) {\n                return d.disengaged ? '#000' : '#fff';\n            } else if (!expanded) {\n                if(!d.color) d.color = color(d,i);\n                return !!d.disabled ? d.color : '#fff';\n            }\n        }\n\n        function setBGColor(d,i) {\n            if(expanded && vers == 'furious') {\n                return d.disengaged ? '#eee' : d.color || color(d,i);\n            } else {\n                return d.color || color(d,i);\n            }\n        }\n\n\n        function setBGOpacity(d,i) {\n            if(expanded && vers == 'furious') {\n                return 1;\n            } else {\n                return !!d.disabled ? 0 : 1;\n            }\n        }\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:          {get: function(){return width;}, set: function(_){width=_;}},\n        height:         {get: function(){return height;}, set: function(_){height=_;}},\n        key:            {get: function(){return getKey;}, set: function(_){getKey=_;}},\n        keyFormatter:   {get: function(){return keyFormatter;}, set: function(_){keyFormatter=_;}},\n        align:          {get: function(){return align;}, set: function(_){align=_;}},\n        maxKeyLength:   {get: function(){return maxKeyLength;}, set: function(_){maxKeyLength=_;}},\n        rightAlign:     {get: function(){return rightAlign;}, set: function(_){rightAlign=_;}},\n        padding:        {get: function(){return padding;}, set: function(_){padding=_;}},\n        updateState:    {get: function(){return updateState;}, set: function(_){updateState=_;}},\n        enableDoubleClick: {get: function(){return enableDoubleClick;}, set: function(_){enableDoubleClick=_;}},\n        radioButtonMode:{get: function(){return radioButtonMode;}, set: function(_){radioButtonMode=_;}},\n        expanded:       {get: function(){return expanded;}, set: function(_){expanded=_;}},\n        vers:           {get: function(){return vers;}, set: function(_){vers=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.line = function() {\n    \"use strict\";\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var  scatter = nv.models.scatter()\n        ;\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 960\n        , height = 500\n        , container = null\n        , strokeWidth = 1.5\n        , color = nv.utils.defaultColor() // a function that returns a color\n        , getX = function(d) { return d.x } // accessor to get the x value from a data point\n        , getY = function(d) { return d.y } // accessor to get the y value from a data point\n        , defined = function(d,i) { return !isNaN(getY(d,i)) && getY(d,i) !== null } // allows a line to be not continuous when it is not defined\n        , isArea = function(d) { return d.area } // decides if a line is an area or just a line\n        , clipEdge = false // if true, masks lines within x and y scale\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , interpolate = \"linear\" // controls the line interpolation\n        , duration = 250\n        , dispatch = d3.dispatch('elementClick', 'elementMouseover', 'elementMouseout', 'renderEnd')\n        ;\n\n    scatter\n        .pointSize(16) // default size\n        .pointDomain([16,256]) //set to speed up calculation, needs to be unset if there is a custom size accessor\n    ;\n\n    //============================================================\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0 //used to store previous scales\n        , renderWatch = nv.utils.renderWatch(dispatch, duration)\n        ;\n\n    //============================================================\n\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(scatter);\n        selection.each(function(data) {\n            container = d3.select(this);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n            nv.utils.initSVG(container);\n\n            // Setup Scales\n            x = scatter.xScale();\n            y = scatter.yScale();\n\n            x0 = x0 || x;\n            y0 = y0 || y;\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-line').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-line');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-groups');\n            gEnter.append('g').attr('class', 'nv-scatterWrap');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            scatter\n                .width(availableWidth)\n                .height(availableHeight);\n\n            var scatterWrap = wrap.select('.nv-scatterWrap');\n            scatterWrap.call(scatter);\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-edge-clip-' + scatter.id())\n                .append('rect');\n\n            wrap.select('#nv-edge-clip-' + scatter.id() + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', (availableHeight > 0) ? availableHeight : 0);\n\n            g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');\n            scatterWrap\n                .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');\n\n            var groups = wrap.select('.nv-groups').selectAll('.nv-group')\n                .data(function(d) { return d }, function(d) { return d.key });\n            groups.enter().append('g')\n                .style('stroke-opacity', 1e-6)\n                .style('stroke-width', function(d) { return d.strokeWidth || strokeWidth })\n                .style('fill-opacity', 1e-6);\n\n            groups.exit().remove();\n\n            groups\n                .attr('class', function(d,i) {\n                    return (d.classed || '') + ' nv-group nv-series-' + i;\n                })\n                .classed('hover', function(d) { return d.hover })\n                .style('fill', function(d,i){ return color(d, i) })\n                .style('stroke', function(d,i){ return color(d, i)});\n            groups.watchTransition(renderWatch, 'line: groups')\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', function(d) { return d.fillOpacity || .5});\n\n            var areaPaths = groups.selectAll('path.nv-area')\n                .data(function(d) { return isArea(d) ? [d] : [] }); // this is done differently than lines because I need to check if series is an area\n            areaPaths.enter().append('path')\n                .attr('class', 'nv-area')\n                .attr('d', function(d) {\n                    return d3.svg.area()\n                        .interpolate(interpolate)\n                        .defined(defined)\n                        .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })\n                        .y0(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })\n                        .y1(function(d,i) { return y0( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })\n                        //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this\n                        .apply(this, [d.values])\n                });\n            groups.exit().selectAll('path.nv-area')\n                .remove();\n\n            areaPaths.watchTransition(renderWatch, 'line: areaPaths')\n                .attr('d', function(d) {\n                    return d3.svg.area()\n                        .interpolate(interpolate)\n                        .defined(defined)\n                        .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })\n                        .y0(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })\n                        .y1(function(d,i) { return y( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })\n                        //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this\n                        .apply(this, [d.values])\n                });\n\n            var linePaths = groups.selectAll('path.nv-line')\n                .data(function(d) { return [d.values] });\n\n            linePaths.enter().append('path')\n                .attr('class', 'nv-line')\n                .attr('d',\n                    d3.svg.line()\n                    .interpolate(interpolate)\n                    .defined(defined)\n                    .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })\n                    .y(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })\n            );\n\n            linePaths.watchTransition(renderWatch, 'line: linePaths')\n                .attr('d',\n                    d3.svg.line()\n                    .interpolate(interpolate)\n                    .defined(defined)\n                    .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })\n                    .y(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })\n            );\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n        });\n        renderWatch.renderEnd('line immediate');\n        return chart;\n    }\n\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.scatter = scatter;\n    // Pass through events\n    scatter.dispatch.on('elementClick', function(){ dispatch.elementClick.apply(this, arguments); });\n    scatter.dispatch.on('elementMouseover', function(){ dispatch.elementMouseover.apply(this, arguments); });\n    scatter.dispatch.on('elementMouseout', function(){ dispatch.elementMouseout.apply(this, arguments); });\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        defined: {get: function(){return defined;}, set: function(_){defined=_;}},\n        interpolate:      {get: function(){return interpolate;}, set: function(_){interpolate=_;}},\n        clipEdge:    {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            scatter.duration(duration);\n        }},\n        isArea: {get: function(){return isArea;}, set: function(_){\n            isArea = d3.functor(_);\n        }},\n        x: {get: function(){return getX;}, set: function(_){\n            getX = _;\n            scatter.x(_);\n        }},\n        y: {get: function(){return getY;}, set: function(_){\n            getY = _;\n            scatter.y(_);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            scatter.color(color);\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, scatter);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\nnv.models.lineChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var lines = nv.models.line()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , legend = nv.models.legend()\n        , interactiveLayer = nv.interactiveGuideline()\n        , tooltip = nv.models.tooltip()\n        , focus = nv.models.focus(nv.models.line())\n        ;\n\n    var margin = {top: 30, right: 20, bottom: 50, left: 60}\n        , marginTop = null\n        , color = nv.utils.defaultColor()\n        , width = null\n        , height = null\n        , showLegend = true\n        , legendPosition = 'top'\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , useInteractiveGuideline = false\n        , x\n        , y\n        , focusEnable = false\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd')\n        , duration = 250\n        ;\n\n    // set options on sub-objects for this chart\n    xAxis.orient('bottom').tickPadding(7);\n    yAxis.orient(rightAlignYAxis ? 'right' : 'left');\n\n    lines.clipEdge(true).duration(0);\n\n    tooltip.valueFormatter(function(d, i) {\n        return yAxis.tickFormat()(d, i);\n    }).headerFormatter(function(d, i) {\n        return xAxis.tickFormat()(d, i);\n    });\n\n    interactiveLayer.tooltip.valueFormatter(function(d, i) {\n        return yAxis.tickFormat()(d, i);\n    }).headerFormatter(function(d, i) {\n        return xAxis.tickFormat()(d, i);\n    });\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled; })\n            };\n        };\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        };\n    };\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(lines);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n            chart.update = function() {\n                if( duration === 0 ) {\n                    container.call( chart );\n                } else {\n                    container.transition().duration(duration).call(chart);\n                }\n            };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disabled\n            state.disabled = data.map(function(d) { return !!d.disabled; });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display noData message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length; }).length) {\n                nv.utils.noData(chart, container);\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            /* Update `main' graph on brush update. */\n            focus.dispatch.on(\"onBrush\", function(extent) {\n                onBrush(extent);\n            });\n\n            // Setup Scales\n            x = lines.xScale();\n            y = lines.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-lineChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineChart').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n\n            var focusEnter = gEnter.append('g').attr('class', 'nv-focus');\n            focusEnter.append('g').attr('class', 'nv-background').append('rect');\n            focusEnter.append('g').attr('class', 'nv-x nv-axis');\n            focusEnter.append('g').attr('class', 'nv-y nv-axis');\n            focusEnter.append('g').attr('class', 'nv-linesWrap');\n            focusEnter.append('g').attr('class', 'nv-interactive');\n\n            var contextEnter = gEnter.append('g').attr('class', 'nv-focusWrap');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                legend.width(availableWidth);\n\n                g.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n\n                if (legendPosition === 'bottom') {\n                     margin.bottom = xAxis.height() + legend.height();\n                     availableHeight = nv.utils.availableHeight(height, container, margin);\n                     g.select('.nv-legendWrap')\n                         .attr('transform', 'translate(0,' + (availableHeight + xAxis.height())  +')');\n                } else if (legendPosition === 'top') {\n                    if (!marginTop && legend.height() !== margin.top) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n                    }\n\n                    wrap.select('.nv-legendWrap')\n                        .attr('transform', 'translate(0,' + (-margin.top) +')');\n                }\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            //Set up interactive layer\n            if (useInteractiveGuideline) {\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left:margin.left, top:margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n\n            g.select('.nv-focus .nv-background rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            lines\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled; }));\n\n            var linesWrap = g.select('.nv-linesWrap')\n                .datum(data.filter(function(d) { return !d.disabled; }));\n\n\n            // Setup Main (Focus) Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks(nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n            }\n\n            //============================================================\n            // Update Axes\n            //============================================================\n            function updateXAxis() {\n              if(showXAxis) {\n                g.select('.nv-focus .nv-x.nv-axis')\n                  .transition()\n                  .duration(duration)\n                  .call(xAxis)\n                ;\n              }\n            }\n\n            function updateYAxis() {\n              if(showYAxis) {\n                g.select('.nv-focus .nv-y.nv-axis')\n                  .transition()\n                  .duration(duration)\n                  .call(yAxis)\n                ;\n              }\n            }\n\n            g.select('.nv-focus .nv-x.nv-axis')\n                .attr('transform', 'translate(0,' + availableHeight + ')');\n\n            //============================================================\n            // Update Focus\n            //============================================================\n            if (!focusEnable && focus.brush.extent() === null) {\n                linesWrap.call(lines);\n                updateXAxis();\n                updateYAxis();\n            } else {\n                focus.width(availableWidth);\n                g.select('.nv-focusWrap')\n                    .style('display', focusEnable ? 'initial' : 'none')\n                    .attr('transform', 'translate(0,' + ( availableHeight + margin.bottom + focus.margin().top) + ')')\n                    .call(focus);\n                var extent = focus.brush.empty() ? focus.xDomain() : focus.brush.extent();\n                if (extent !== null) {\n                    onBrush(extent);\n                }\n            }\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                lines.clearHighlights();\n                var singlePoint, pointIndex, pointXLocation, allData = [];\n                data\n                    .filter(function(series, i) {\n                        series.seriesIndex = i;\n                        return !series.disabled && !series.disableTooltip;\n                    })\n                    .forEach(function(series,i) {\n                        var extent = focus.brush.extent() !== null ? (focus.brush.empty() ? focus.xScale().domain() : focus.brush.extent()) : x.domain();\n                        var currentValues = series.values.filter(function(d,i) {\n                            // Checks if the x point is between the extents, handling case where extent[0] is greater than extent[1]\n                            // (e.g. x domain is manually set to reverse the x-axis)\n                            if(extent[0] <= extent[1]) {\n                                return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];\n                            } else {\n                                return lines.x()(d,i) >= extent[1] && lines.x()(d,i) <= extent[0];\n                            }\n                        });\n\n                        pointIndex = nv.interactiveBisect(currentValues, e.pointXValue, lines.x());\n                        var point = currentValues[pointIndex];\n                        var pointYValue = chart.y()(point, pointIndex);\n                        if (pointYValue !== null) {\n                            lines.highlightPoint(i, pointIndex, true);\n                        }\n                        if (point === undefined) return;\n                        if (singlePoint === undefined) singlePoint = point;\n                        if (pointXLocation === undefined) pointXLocation = chart.xScale()(chart.x()(point,pointIndex));\n                        allData.push({\n                            key: series.key,\n                            value: pointYValue,\n                            color: color(series,series.seriesIndex),\n                            data: point\n                        });\n                    });\n                //Highlight the tooltip entry based on which point the mouse is closest to.\n                if (allData.length > 2) {\n                    var yValue = chart.yScale().invert(e.mouseY);\n                    var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);\n                    var threshold = 0.03 * domainExtent;\n                    var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value;}),yValue,threshold);\n                    if (indexToHighlight !== null)\n                        allData[indexToHighlight].highlight = true;\n                }\n\n                var defaultValueFormatter = function(d,i) {\n                    return d == null ? \"N/A\" : yAxis.tickFormat()(d);\n                };\n\n                interactiveLayer.tooltip\n                    .valueFormatter(interactiveLayer.tooltip.valueFormatter() || defaultValueFormatter)\n                    .data({\n                        value: chart.x()( singlePoint,pointIndex ),\n                        index: pointIndex,\n                        series: allData\n                    })();\n\n                interactiveLayer.renderGuideLine(pointXLocation);\n\n            });\n\n            interactiveLayer.dispatch.on('elementClick', function(e) {\n                var pointXLocation, allData = [];\n\n                data.filter(function(series, i) {\n                    series.seriesIndex = i;\n                    return !series.disabled;\n                }).forEach(function(series) {\n                    var pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());\n                    var point = series.values[pointIndex];\n                    if (typeof point === 'undefined') return;\n                    if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));\n                    var yPos = chart.yScale()(chart.y()(point,pointIndex));\n                    allData.push({\n                        point: point,\n                        pointIndex: pointIndex,\n                        pos: [pointXLocation, yPos],\n                        seriesIndex: series.seriesIndex,\n                        series: series\n                    });\n                });\n\n                lines.dispatch.elementClick(allData);\n            });\n\n            interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                lines.clearHighlights();\n            });\n\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined' && data.length === e.disabled.length) {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n\n                    state.disabled = e.disabled;\n                }\n                chart.update();\n            });\n\n            //============================================================\n            // Functions\n            //------------------------------------------------------------\n\n            // Taken from crossfilter (http://square.github.com/crossfilter/)\n            function resizePath(d) {\n                var e = +(d == 'e'),\n                    x = e ? 1 : -1,\n                    y = availableHeight / 3;\n                return 'M' + (0.5 * x) + ',' + y\n                    + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)\n                    + 'V' + (2 * y - 6)\n                    + 'A6,6 0 0 ' + e + ' ' + (0.5 * x) + ',' + (2 * y)\n                    + 'Z'\n                    + 'M' + (2.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8)\n                    + 'M' + (4.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8);\n            }\n\n            function onBrush(extent) {\n                // Update Main (Focus)\n                var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')\n                    .datum(\n                    data.filter(function(d) { return !d.disabled; })\n                        .map(function(d,i) {\n                            return {\n                                key: d.key,\n                                area: d.area,\n                                classed: d.classed,\n                                values: d.values.filter(function(d,i) {\n                                    return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];\n                                }),\n                                disableTooltip: d.disableTooltip\n                            };\n                        })\n                );\n                focusLinesWrap.transition().duration(duration).call(lines);\n\n                // Update Main (Focus) Axes\n                updateXAxis();\n                updateYAxis();\n            }\n        });\n\n        renderWatch.renderEnd('lineChart immediate');\n        return chart;\n    }\n\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    lines.dispatch.on('elementMouseover.tooltip', function(evt) {\n        if(!evt.series.disableTooltip){\n            tooltip.data(evt).hidden(false);\n        }\n    });\n\n    lines.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.lines = lines;\n    chart.legend = legend;\n    chart.focus = focus;\n    chart.xAxis = xAxis;\n    chart.x2Axis = focus.xAxis\n    chart.yAxis = yAxis;\n    chart.y2Axis = focus.yAxis\n    chart.interactiveLayer = interactiveLayer;\n    chart.tooltip = tooltip;\n    chart.state = state;\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},\n        showXAxis:      {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        // Focus options, mostly passed onto focus model.\n        focusEnable:    {get: function(){return focusEnable;}, set: function(_){focusEnable=_;}},\n        focusHeight:     {get: function(){return focus.height();}, set: function(_){focus.height(_);}},\n        focusShowAxisX:    {get: function(){return focus.showXAxis();}, set: function(_){focus.showXAxis(_);}},\n        focusShowAxisY:    {get: function(){return focus.showYAxis();}, set: function(_){focus.showYAxis(_);}},\n        brushExtent: {get: function(){return focus.brushExtent();}, set: function(_){focus.brushExtent(_);}},\n\n        // options that require extra logic in the setter\n        focusMargin: {get: function(){return focus.margin}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            focus.margin.right  = _.right  !== undefined ? _.right  : focus.margin.right;\n            focus.margin.bottom = _.bottom !== undefined ? _.bottom : focus.margin.bottom;\n            focus.margin.left   = _.left   !== undefined ? _.left   : focus.margin.left;\n        }},\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            lines.duration(duration);\n            focus.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n            lines.color(color);\n            focus.color(color);\n        }},\n        interpolate: {get: function(){return lines.interpolate();}, set: function(_){\n            lines.interpolate(_);\n            focus.interpolate(_);\n        }},\n        xTickFormat: {get: function(){return xAxis.tickFormat();}, set: function(_){\n            xAxis.tickFormat(_);\n            focus.xTickFormat(_);\n        }},\n        yTickFormat: {get: function(){return yAxis.tickFormat();}, set: function(_){\n            yAxis.tickFormat(_);\n            focus.yTickFormat(_);\n        }},\n        x: {get: function(){return lines.x();}, set: function(_){\n            lines.x(_);\n            focus.x(_);\n        }},\n        y: {get: function(){return lines.y();}, set: function(_){\n            lines.y(_);\n            focus.y(_);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( rightAlignYAxis ? 'right' : 'left');\n        }},\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = _;\n            if (useInteractiveGuideline) {\n                lines.interactive(false);\n                lines.useVoronoi(false);\n            }\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, lines);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.lineWithFocusChart = function() {\n  return nv.models.lineChart()\n    .margin({ bottom: 30 })\n    .focusEnable( true );\n};\nnv.models.linePlusBarChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var lines = nv.models.line()\n        , lines2 = nv.models.line()\n        , bars = nv.models.historicalBar()\n        , bars2 = nv.models.historicalBar()\n        , xAxis = nv.models.axis()\n        , x2Axis = nv.models.axis()\n        , y1Axis = nv.models.axis()\n        , y2Axis = nv.models.axis()\n        , y3Axis = nv.models.axis()\n        , y4Axis = nv.models.axis()\n        , legend = nv.models.legend()\n        , brush = d3.svg.brush()\n        , tooltip = nv.models.tooltip()\n        ;\n\n    var margin = {top: 30, right: 30, bottom: 30, left: 60}\n        , marginTop = null\n        , margin2 = {top: 0, right: 30, bottom: 20, left: 60}\n        , width = null\n        , height = null\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , color = nv.utils.defaultColor()\n        , showLegend = true\n        , focusEnable = true\n        , focusShowAxisY = false\n        , focusShowAxisX = true\n        , focusHeight = 50\n        , extent\n        , brushExtent = null\n        , x\n        , x2\n        , y1\n        , y2\n        , y3\n        , y4\n        , noData = null\n        , dispatch = d3.dispatch('brush', 'stateChange', 'changeState')\n        , transitionDuration = 0\n        , state = nv.utils.state()\n        , defaultState = null\n        , legendLeftAxisHint = ' (left axis)'\n        , legendRightAxisHint = ' (right axis)'\n        , switchYAxisOrder = false\n        ;\n\n    lines.clipEdge(true);\n    lines2.interactive(false);\n    // We don't want any points emitted for the focus chart's scatter graph.\n    lines2.pointActive(function(d) { return false });\n    xAxis.orient('bottom').tickPadding(5);\n    y1Axis.orient('left');\n    y2Axis.orient('right');\n    x2Axis.orient('bottom').tickPadding(5);\n    y3Axis.orient('left');\n    y4Axis.orient('right');\n\n    tooltip.headerEnabled(true).headerFormatter(function(d, i) {\n        return xAxis.tickFormat()(d, i);\n    });\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var getBarsAxis = function() {\n        return switchYAxisOrder\n            ? { main: y2Axis, focus: y4Axis }\n            : { main: y1Axis, focus: y3Axis }\n    }\n\n    var getLinesAxis = function() {\n        return switchYAxisOrder\n            ? { main: y1Axis, focus: y3Axis }\n            : { main: y2Axis, focus: y4Axis }\n    }\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled })\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    var allDisabled = function(data) {\n      return data.every(function(series) {\n        return series.disabled;\n      });\n    }\n\n    function chart(selection) {\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight1 = nv.utils.availableHeight(height, container, margin)\n                    - (focusEnable ? focusHeight : 0),\n                availableHeight2 = focusHeight - margin2.top - margin2.bottom;\n\n            chart.update = function() { container.transition().duration(transitionDuration).call(chart); };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disableddisabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            var dataBars = data.filter(function(d) { return !d.disabled && d.bar });\n            var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240\n\n            if (dataBars.length && !switchYAxisOrder) {\n                x = bars.xScale();\n            } else {\n                x = lines.xScale();\n            }\n\n            x2 = x2Axis.scale();\n\n            // select the scales and series based on the position of the yAxis\n            y1 = switchYAxisOrder ? lines.yScale() : bars.yScale();\n            y2 = switchYAxisOrder ? bars.yScale() : lines.yScale();\n            y3 = switchYAxisOrder ? lines2.yScale() : bars2.yScale();\n            y4 = switchYAxisOrder ? bars2.yScale() : lines2.yScale();\n\n            var series1 = data\n                .filter(function(d) { return !d.disabled && (switchYAxisOrder ? !d.bar : d.bar) })\n                .map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d,i), y: getY(d,i) }\n                    })\n                });\n\n            var series2 = data\n                .filter(function(d) { return !d.disabled && (switchYAxisOrder ? d.bar : !d.bar) })\n                .map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d,i), y: getY(d,i) }\n                    })\n                });\n\n            x.range([0, availableWidth]);\n\n            x2  .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))\n                .range([0, availableWidth]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-linePlusBar').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-linePlusBar').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n\n            // this is the main chart\n            var focusEnter = gEnter.append('g').attr('class', 'nv-focus');\n            focusEnter.append('g').attr('class', 'nv-x nv-axis');\n            focusEnter.append('g').attr('class', 'nv-y1 nv-axis');\n            focusEnter.append('g').attr('class', 'nv-y2 nv-axis');\n            focusEnter.append('g').attr('class', 'nv-barsWrap');\n            focusEnter.append('g').attr('class', 'nv-linesWrap');\n\n            // context chart is where you can focus in\n            var contextEnter = gEnter.append('g').attr('class', 'nv-context');\n            contextEnter.append('g').attr('class', 'nv-x nv-axis');\n            contextEnter.append('g').attr('class', 'nv-y1 nv-axis');\n            contextEnter.append('g').attr('class', 'nv-y2 nv-axis');\n            contextEnter.append('g').attr('class', 'nv-barsWrap');\n            contextEnter.append('g').attr('class', 'nv-linesWrap');\n            contextEnter.append('g').attr('class', 'nv-brushBackground');\n            contextEnter.append('g').attr('class', 'nv-x nv-brush');\n\n            //============================================================\n            // Legend\n            //------------------------------------------------------------\n\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                var legendWidth = legend.align() ? availableWidth / 2 : availableWidth;\n                var legendXPosition = legend.align() ? legendWidth : 0;\n\n                legend.width(legendWidth);\n\n                g.select('.nv-legendWrap')\n                    .datum(data.map(function(series) {\n                        series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;\n                        if(switchYAxisOrder) {\n                            series.key = series.originalKey + (series.bar ? legendRightAxisHint : legendLeftAxisHint);\n                        } else {\n                            series.key = series.originalKey + (series.bar ? legendLeftAxisHint : legendRightAxisHint);\n                        }\n                        return series;\n                    }))\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    // FIXME: shouldn't this be \"- (focusEnabled ? focusHeight : 0)\"?\n                    availableHeight1 = nv.utils.availableHeight(height, container, margin) - focusHeight;\n                }\n\n                g.select('.nv-legendWrap')\n                    .attr('transform', 'translate(' + legendXPosition + ',' + (-margin.top) +')');\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            //============================================================\n            // Context chart (focus chart) components\n            //------------------------------------------------------------\n\n            // hide or show the focus context chart\n            g.select('.nv-context').style('display', focusEnable ? 'initial' : 'none');\n\n            bars2\n                .width(availableWidth)\n                .height(availableHeight2)\n                .color(data.map(function (d, i) {\n                    return d.color || color(d, i);\n                }).filter(function (d, i) {\n                    return !data[i].disabled && data[i].bar\n                }));\n            lines2\n                .width(availableWidth)\n                .height(availableHeight2)\n                .color(data.map(function (d, i) {\n                    return d.color || color(d, i);\n                }).filter(function (d, i) {\n                    return !data[i].disabled && !data[i].bar\n                }));\n\n            var bars2Wrap = g.select('.nv-context .nv-barsWrap')\n                .datum(dataBars.length ? dataBars : [\n                    {values: []}\n                ]);\n            var lines2Wrap = g.select('.nv-context .nv-linesWrap')\n                .datum(allDisabled(dataLines) ?\n                       [{values: []}] :\n                       dataLines.filter(function(dataLine) {\n                         return !dataLine.disabled;\n                       }));\n\n            g.select('.nv-context')\n                .attr('transform', 'translate(0,' + ( availableHeight1 + margin.bottom + margin2.top) + ')');\n\n            bars2Wrap.transition().call(bars2);\n            lines2Wrap.transition().call(lines2);\n\n            // context (focus chart) axis controls\n            if (focusShowAxisX) {\n                x2Axis\n                    ._ticks( nv.utils.calcTicksX(availableWidth / 100, data))\n                    .tickSize(-availableHeight2, 0);\n                g.select('.nv-context .nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y3.range()[0] + ')');\n                g.select('.nv-context .nv-x.nv-axis').transition()\n                    .call(x2Axis);\n            }\n\n            if (focusShowAxisY) {\n                y3Axis\n                    .scale(y3)\n                    ._ticks( availableHeight2 / 36 )\n                    .tickSize( -availableWidth, 0);\n                y4Axis\n                    .scale(y4)\n                    ._ticks( availableHeight2 / 36 )\n                    .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none\n\n                g.select('.nv-context .nv-y3.nv-axis')\n                    .style('opacity', dataBars.length ? 1 : 0)\n                    .attr('transform', 'translate(0,' + x2.range()[0] + ')');\n                g.select('.nv-context .nv-y2.nv-axis')\n                    .style('opacity', dataLines.length ? 1 : 0)\n                    .attr('transform', 'translate(' + x2.range()[1] + ',0)');\n\n                g.select('.nv-context .nv-y1.nv-axis').transition()\n                    .call(y3Axis);\n                g.select('.nv-context .nv-y2.nv-axis').transition()\n                    .call(y4Axis);\n            }\n\n            // Setup Brush\n            brush.x(x2).on('brush', onBrush);\n\n            if (brushExtent) brush.extent(brushExtent);\n\n            var brushBG = g.select('.nv-brushBackground').selectAll('g')\n                .data([brushExtent || brush.extent()]);\n\n            var brushBGenter = brushBG.enter()\n                .append('g');\n\n            brushBGenter.append('rect')\n                .attr('class', 'left')\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('height', availableHeight2);\n\n            brushBGenter.append('rect')\n                .attr('class', 'right')\n                .attr('x', 0)\n                .attr('y', 0)\n                .attr('height', availableHeight2);\n\n            var gBrush = g.select('.nv-x.nv-brush')\n                .call(brush);\n            gBrush.selectAll('rect')\n                //.attr('y', -5)\n                .attr('height', availableHeight2);\n            gBrush.selectAll('.resize').append('path').attr('d', resizePath);\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n                    state.disabled = e.disabled;\n                }\n                chart.update();\n            });\n\n            //============================================================\n            // Functions\n            //------------------------------------------------------------\n\n            // Taken from crossfilter (http://square.github.com/crossfilter/)\n            function resizePath(d) {\n                var e = +(d == 'e'),\n                    x = e ? 1 : -1,\n                    y = availableHeight2 / 3;\n                return 'M' + (.5 * x) + ',' + y\n                    + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)\n                    + 'V' + (2 * y - 6)\n                    + 'A6,6 0 0 ' + e + ' ' + (.5 * x) + ',' + (2 * y)\n                    + 'Z'\n                    + 'M' + (2.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8)\n                    + 'M' + (4.5 * x) + ',' + (y + 8)\n                    + 'V' + (2 * y - 8);\n            }\n\n\n            function updateBrushBG() {\n                if (!brush.empty()) brush.extent(brushExtent);\n                brushBG\n                    .data([brush.empty() ? x2.domain() : brushExtent])\n                    .each(function(d,i) {\n                        var leftWidth = x2(d[0]) - x2.range()[0],\n                            rightWidth = x2.range()[1] - x2(d[1]);\n                        d3.select(this).select('.left')\n                            .attr('width',  leftWidth < 0 ? 0 : leftWidth);\n\n                        d3.select(this).select('.right')\n                            .attr('x', x2(d[1]))\n                            .attr('width', rightWidth < 0 ? 0 : rightWidth);\n                    });\n            }\n\n            function onBrush() {\n                brushExtent = brush.empty() ? null : brush.extent();\n                extent = brush.empty() ? x2.domain() : brush.extent();\n                dispatch.brush({extent: extent, brush: brush});\n                updateBrushBG();\n\n                // Prepare Main (Focus) Bars and Lines\n                bars\n                    .width(availableWidth)\n                    .height(availableHeight1)\n                    .color(data.map(function(d,i) {\n                        return d.color || color(d, i);\n                    }).filter(function(d,i) { return !data[i].disabled && data[i].bar }));\n\n                lines\n                    .width(availableWidth)\n                    .height(availableHeight1)\n                    .color(data.map(function(d,i) {\n                        return d.color || color(d, i);\n                    }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }));\n\n                var focusBarsWrap = g.select('.nv-focus .nv-barsWrap')\n                    .datum(!dataBars.length ? [{values:[]}] :\n                        dataBars\n                            .map(function(d,i) {\n                                return {\n                                    key: d.key,\n                                    values: d.values.filter(function(d,i) {\n                                        return bars.x()(d,i) >= extent[0] && bars.x()(d,i) <= extent[1];\n                                    })\n                                }\n                            })\n                );\n\n                var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')\n                    .datum(allDisabled(dataLines) ? [{values:[]}] :\n                           dataLines\n                           .filter(function(dataLine) { return !dataLine.disabled; })\n                           .map(function(d,i) {\n                                return {\n                                    area: d.area,\n                                    fillOpacity: d.fillOpacity,\n                                    strokeWidth: d.strokeWidth,\n                                    key: d.key,\n                                    values: d.values.filter(function(d,i) {\n                                        return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];\n                                    })\n                                }\n                            })\n                );\n\n                // Update Main (Focus) X Axis\n                if (dataBars.length && !switchYAxisOrder) {\n                    x = bars.xScale();\n                } else {\n                    x = lines.xScale();\n                }\n\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight1, 0);\n\n                xAxis.domain([Math.ceil(extent[0]), Math.floor(extent[1])]);\n\n                g.select('.nv-x.nv-axis').transition().duration(transitionDuration)\n                    .call(xAxis);\n\n                // Update Main (Focus) Bars and Lines\n                focusBarsWrap.transition().duration(transitionDuration).call(bars);\n                focusLinesWrap.transition().duration(transitionDuration).call(lines);\n\n                // Setup and Update Main (Focus) Y Axes\n                g.select('.nv-focus .nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y1.range()[0] + ')');\n\n                y1Axis\n                    .scale(y1)\n                    ._ticks( nv.utils.calcTicksY(availableHeight1/36, data) )\n                    .tickSize(-availableWidth, 0);\n                y2Axis\n                    .scale(y2)\n                    ._ticks( nv.utils.calcTicksY(availableHeight1/36, data) );\n\n                // Show the y2 rules only if y1 has none\n                if(!switchYAxisOrder) {\n                    y2Axis.tickSize(dataBars.length ? 0 : -availableWidth, 0);\n                } else {\n                    y2Axis.tickSize(dataLines.length ? 0 : -availableWidth, 0);\n                }\n\n                // Calculate opacity of the axis\n                var barsOpacity = dataBars.length ? 1 : 0;\n                var linesOpacity = dataLines.length && !allDisabled(dataLines) ? 1 : 0;\n\n                var y1Opacity = switchYAxisOrder ? linesOpacity : barsOpacity;\n                var y2Opacity = switchYAxisOrder ? barsOpacity : linesOpacity;\n\n                g.select('.nv-focus .nv-y1.nv-axis')\n                    .style('opacity', y1Opacity);\n                g.select('.nv-focus .nv-y2.nv-axis')\n                    .style('opacity', y2Opacity)\n                    .attr('transform', 'translate(' + x.range()[1] + ',0)');\n\n                g.select('.nv-focus .nv-y1.nv-axis').transition().duration(transitionDuration)\n                    .call(y1Axis);\n                g.select('.nv-focus .nv-y2.nv-axis').transition().duration(transitionDuration)\n                    .call(y2Axis);\n            }\n\n            onBrush();\n\n        });\n\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    lines.dispatch.on('elementMouseover.tooltip', function(evt) {\n        tooltip\n            .duration(100)\n            .valueFormatter(function(d, i) {\n                return getLinesAxis().main.tickFormat()(d, i);\n            })\n            .data(evt)\n            .hidden(false);\n    });\n\n    lines.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true)\n    });\n\n    bars.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt.value = chart.x()(evt.data);\n        evt['series'] = {\n            value: chart.y()(evt.data),\n            color: evt.color\n        };\n        tooltip\n            .duration(0)\n            .valueFormatter(function(d, i) {\n                return getBarsAxis().main.tickFormat()(d, i);\n            })\n            .data(evt)\n            .hidden(false);\n    });\n\n    bars.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    bars.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.legend = legend;\n    chart.lines = lines;\n    chart.lines2 = lines2;\n    chart.bars = bars;\n    chart.bars2 = bars2;\n    chart.xAxis = xAxis;\n    chart.x2Axis = x2Axis;\n    chart.y1Axis = y1Axis;\n    chart.y2Axis = y2Axis;\n    chart.y3Axis = y3Axis;\n    chart.y4Axis = y4Axis;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        brushExtent:    {get: function(){return brushExtent;}, set: function(_){brushExtent=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        focusEnable:    {get: function(){return focusEnable;}, set: function(_){focusEnable=_;}},\n        focusHeight:    {get: function(){return focusHeight;}, set: function(_){focusHeight=_;}},\n        focusShowAxisX:    {get: function(){return focusShowAxisX;}, set: function(_){focusShowAxisX=_;}},\n        focusShowAxisY:    {get: function(){return focusShowAxisY;}, set: function(_){focusShowAxisY=_;}},\n        legendLeftAxisHint:    {get: function(){return legendLeftAxisHint;}, set: function(_){legendLeftAxisHint=_;}},\n        legendRightAxisHint:    {get: function(){return legendRightAxisHint;}, set: function(_){legendRightAxisHint=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        focusMargin: {get: function(){return margin2;}, set: function(_){\n            margin2.top    = _.top    !== undefined ? _.top    : margin2.top;\n            margin2.right  = _.right  !== undefined ? _.right  : margin2.right;\n            margin2.bottom = _.bottom !== undefined ? _.bottom : margin2.bottom;\n            margin2.left   = _.left   !== undefined ? _.left   : margin2.left;\n        }},\n        duration: {get: function(){return transitionDuration;}, set: function(_){\n            transitionDuration = _;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n        }},\n        x: {get: function(){return getX;}, set: function(_){\n            getX = _;\n            lines.x(_);\n            lines2.x(_);\n            bars.x(_);\n            bars2.x(_);\n        }},\n        y: {get: function(){return getY;}, set: function(_){\n            getY = _;\n            lines.y(_);\n            lines2.y(_);\n            bars.y(_);\n            bars2.y(_);\n        }},\n        switchYAxisOrder:    {get: function(){return switchYAxisOrder;}, set: function(_){\n            // Switch the tick format for the yAxis\n            if(switchYAxisOrder !== _) {\n                var y1 = y1Axis;\n                y1Axis = y2Axis;\n                y2Axis = y1;\n\n                var y3 = y3Axis;\n                y3Axis = y4Axis;\n                y4Axis = y3;\n            }\n            switchYAxisOrder=_;\n\n            y1Axis.orient('left');\n            y2Axis.orient('right');\n            y3Axis.orient('left');\n            y4Axis.orient('right');\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, lines);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.multiBar = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 960\n        , height = 500\n        , x = d3.scale.ordinal()\n        , y = d3.scale.linear()\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove\n        , clipEdge = true\n        , stacked = false\n        , stackOffset = 'zero' // options include 'silhouette', 'wiggle', 'expand', 'zero', or a custom function\n        , color = nv.utils.defaultColor()\n        , hideable = false\n        , barColor = null // adding the ability to set the color for each rather than the whole group\n        , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled\n        , duration = 500\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , groupSpacing = 0.1\n        , fillOpacity = 0.75\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0 //used to store previous scales\n        , renderWatch = nv.utils.renderWatch(dispatch, duration)\n        ;\n\n    var last_datalength = 0;\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n            var nonStackableCount = 0;\n            // This function defines the requirements for render complete\n            var endFn = function(d, i) {\n                if (d.series === data.length - 1 && i === data[0].values.length - 1)\n                    return true;\n                return false;\n            };\n\n            if(hideable && data.length) hideable = [{\n                values: data[0].values.map(function(d) {\n                        return {\n                            x: d.x,\n                            y: 0,\n                            series: d.series,\n                            size: 0.01\n                        };}\n                )}];\n\n            if (stacked) {\n                var parsed = d3.layout.stack()\n                    .offset(stackOffset)\n                    .values(function(d){ return d.values })\n                    .y(getY)\n                (!data.length && hideable ? hideable : data);\n\n                parsed.forEach(function(series, i){\n                    // if series is non-stackable, use un-parsed data\n                    if (series.nonStackable) {\n                        data[i].nonStackableSeries = nonStackableCount++;\n                        parsed[i] = data[i];\n                    } else {\n                        // don't stack this seires on top of the nonStackable seriees\n                        if (i > 0 && parsed[i - 1].nonStackable){\n                            parsed[i].values.map(function(d,j){\n                                d.y0 -= parsed[i - 1].values[j].y;\n                                d.y1 = d.y0 + d.y;\n                            });\n                        }\n                    }\n                });\n                data = parsed;\n            }\n            //add series index and key to each data point for reference\n            data.forEach(function(series, i) {\n                series.values.forEach(function(point) {\n                    point.series = i;\n                    point.key = series.key;\n                });\n            });\n\n            // HACK for negative value stacking\n            if (stacked && data.length > 0) {\n                data[0].values.map(function(d,i) {\n                    var posBase = 0, negBase = 0;\n                    data.map(function(d, idx) {\n                        if (!data[idx].nonStackable) {\n                            var f = d.values[i]\n                            f.size = Math.abs(f.y);\n                            if (f.y<0)  {\n                                f.y1 = negBase;\n                                negBase = negBase - f.size;\n                            } else\n                            {\n                                f.y1 = f.size + posBase;\n                                posBase = posBase + f.size;\n                            }\n                        }\n\n                    });\n                });\n            }\n            // Setup Scales\n            // remap and flatten the data for use in calculating the scales' domains\n            var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate\n                data.map(function(d, idx) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1, idx:idx }\n                    })\n                });\n\n            x.domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))\n                .rangeBands(xRange || [0, availableWidth], groupSpacing);\n\n            y.domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) {\n                var domain = d.y;\n                // increase the domain range if this series is stackable\n                if (stacked && !data[d.idx].nonStackable) {\n                    if (d.y > 0){\n                        domain = d.y1\n                    } else {\n                        domain = d.y1 + d.y\n                    }\n                }\n                return domain;\n            }).concat(forceY)))\n            .range(yRange || [availableHeight, 0]);\n\n            // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point\n            if (x.domain()[0] === x.domain()[1])\n                x.domain()[0] ?\n                    x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])\n                    : x.domain([-1,1]);\n\n            if (y.domain()[0] === y.domain()[1])\n                y.domain()[0] ?\n                    y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])\n                    : y.domain([-1,1]);\n\n            x0 = x0 || x;\n            y0 = y0 || y;\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-multibar').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibar');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-groups');\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-edge-clip-' + id)\n                .append('rect');\n            wrap.select('#nv-edge-clip-' + id + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            g.attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');\n\n            var groups = wrap.select('.nv-groups').selectAll('.nv-group')\n                .data(function(d) { return d }, function(d,i) { return i });\n            groups.enter().append('g')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6);\n\n            var exitTransition = renderWatch\n                .transition(groups.exit().selectAll('rect.nv-bar'), 'multibarExit', Math.min(100, duration))\n                .attr('y', function(d, i, j) {\n                    var yVal = y0(0) || 0;\n                    if (stacked) {\n                        if (data[d.series] && !data[d.series].nonStackable) {\n                            yVal = y0(d.y0);\n                        }\n                    }\n                    return yVal;\n                })\n                .attr('height', 0)\n                .remove();\n            if (exitTransition.delay)\n                exitTransition.delay(function(d,i) {\n                    var delay = i * (duration / (last_datalength + 1)) - i;\n                    return delay;\n                });\n            groups\n                .attr('class', function(d,i) { return 'nv-group nv-series-' + i })\n                .classed('hover', function(d) { return d.hover })\n                .style('fill', function(d,i){ return color(d, i) })\n                .style('stroke', function(d,i){ return color(d, i) });\n            groups\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', fillOpacity);\n\n            var bars = groups.selectAll('rect.nv-bar')\n                .data(function(d) { return (hideable && !data.length) ? hideable.values : d.values });\n            bars.exit().remove();\n\n            var barsEnter = bars.enter().append('rect')\n                    .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})\n                    .attr('x', function(d,i,j) {\n                        return stacked && !data[j].nonStackable ? 0 : (j * x.rangeBand() / data.length )\n                    })\n                    .attr('y', function(d,i,j) { return y0(stacked && !data[j].nonStackable ? d.y0 : 0) || 0 })\n                    .attr('height', 0)\n                    .attr('width', function(d,i,j) { return x.rangeBand() / (stacked && !data[j].nonStackable ? 1 : data.length) })\n                    .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })\n                ;\n            bars\n                .style('fill', function(d,i,j){ return color(d, j, i);  })\n                .style('stroke', function(d,i,j){ return color(d, j, i); })\n                .on('mouseover', function(d,i,j) {\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        data: d,\n                        index: i,\n                        series: data[j],\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mouseout', function(d,i,j) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        data: d,\n                        index: i,\n                        series: data[j],\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mousemove', function(d,i,j) {\n                    dispatch.elementMousemove({\n                        data: d,\n                        index: i,\n                        series: data[j],\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('click', function(d,i,j) {\n                    var element = this;\n                    dispatch.elementClick({\n                        data: d,\n                        index: i,\n                        series: data[j],\n                        color: d3.select(this).style(\"fill\"),\n                        event: d3.event,\n                        element: element\n                    });\n                    d3.event.stopPropagation();\n                })\n                .on('dblclick', function(d,i,j) {\n                    dispatch.elementDblClick({\n                        data: d,\n                        index: i,\n                        series: data[j],\n                        color: d3.select(this).style(\"fill\")\n                    });\n                    d3.event.stopPropagation();\n                });\n            bars\n                .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})\n                .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })\n\n            if (barColor) {\n                if (!disabled) disabled = data.map(function() { return true });\n                bars\n                    .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })\n                    .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });\n            }\n\n            var barSelection =\n                bars.watchTransition(renderWatch, 'multibar', Math.min(250, duration))\n                    .delay(function(d,i) {\n                        return i * duration / data[0].values.length;\n                    });\n            if (stacked){\n                barSelection\n                    .attr('y', function(d,i,j) {\n                        var yVal = 0;\n                        // if stackable, stack it on top of the previous series\n                        if (!data[j].nonStackable) {\n                            yVal = y(d.y1);\n                        } else {\n                            if (getY(d,i) < 0){\n                                yVal = y(0);\n                            } else {\n                                if (y(0) - y(getY(d,i)) < -1){\n                                    yVal = y(0) - 1;\n                                } else {\n                                    yVal = y(getY(d, i)) || 0;\n                                }\n                            }\n                        }\n                        return yVal;\n                    })\n                    .attr('height', function(d,i,j) {\n                        if (!data[j].nonStackable) {\n                            return Math.max(Math.abs(y(d.y+d.y0) - y(d.y0)), 0);\n                        } else {\n                            return Math.max(Math.abs(y(getY(d,i)) - y(0)), 0) || 0;\n                        }\n                    })\n                    .attr('x', function(d,i,j) {\n                        var width = 0;\n                        if (data[j].nonStackable) {\n                            width = d.series * x.rangeBand() / data.length;\n                            if (data.length !== nonStackableCount){\n                                width = data[j].nonStackableSeries * x.rangeBand()/(nonStackableCount*2);\n                            }\n                        }\n                        return width;\n                    })\n                    .attr('width', function(d,i,j){\n                        if (!data[j].nonStackable) {\n                            return x.rangeBand();\n                        } else {\n                            // if all series are nonStacable, take the full width\n                            var width = (x.rangeBand() / nonStackableCount);\n                            // otherwise, nonStackable graph will be only taking the half-width\n                            // of the x rangeBand\n                            if (data.length !== nonStackableCount) {\n                                width = x.rangeBand()/(nonStackableCount*2);\n                            }\n                            return width;\n                        }\n                    });\n            }\n            else {\n                barSelection\n                    .attr('x', function(d,i) {\n                        return d.series * x.rangeBand() / data.length;\n                    })\n                    .attr('width', x.rangeBand() / data.length)\n                    .attr('y', function(d,i) {\n                        return getY(d,i) < 0 ?\n                            y(0) :\n                                y(0) - y(getY(d,i)) < 1 ?\n                            y(0) - 1 :\n                            y(getY(d,i)) || 0;\n                    })\n                    .attr('height', function(d,i) {\n                        return Math.max(Math.abs(y(getY(d,i)) - y(0)),1) || 0;\n                    });\n            }\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n\n            // keep track of the last data value length for transition calculations\n            if (data[0] && data[0].values) {\n                last_datalength = data[0].values.length;\n            }\n\n        });\n\n        renderWatch.renderEnd('multibar immediate');\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:   {get: function(){return width;}, set: function(_){width=_;}},\n        height:  {get: function(){return height;}, set: function(_){height=_;}},\n        x:       {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:       {get: function(){return getY;}, set: function(_){getY=_;}},\n        xScale:  {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:  {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:  {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:  {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        forceY:  {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        stacked: {get: function(){return stacked;}, set: function(_){stacked=_;}},\n        stackOffset: {get: function(){return stackOffset;}, set: function(_){stackOffset=_;}},\n        clipEdge:    {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        disabled:    {get: function(){return disabled;}, set: function(_){disabled=_;}},\n        id:          {get: function(){return id;}, set: function(_){id=_;}},\n        hideable:    {get: function(){return hideable;}, set: function(_){hideable=_;}},\n        groupSpacing:{get: function(){return groupSpacing;}, set: function(_){groupSpacing=_;}},\n        fillOpacity: {get: function(){return fillOpacity;}, set: function(_){fillOpacity=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        barColor:  {get: function(){return barColor;}, set: function(_){\n            barColor = _ ? nv.utils.getColor(_) : null;\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\nnv.models.multiBarChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var multibar = nv.models.multiBar()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , interactiveLayer = nv.interactiveGuideline()\n        , legend = nv.models.legend()\n        , controls = nv.models.legend()\n        , tooltip = nv.models.tooltip()\n        ;\n\n    var margin = {top: 30, right: 20, bottom: 50, left: 60}\n        , marginTop = null\n        , width = null\n        , height = null\n        , color = nv.utils.defaultColor()\n        , showControls = true\n        , controlLabels = {}\n        , showLegend = true\n        , legendPosition = null\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , reduceXTicks = true // if false a tick will show for every data point\n        , staggerLabels = false\n        , wrapLabels = false\n        , rotateLabels = 0\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd')\n        , controlWidth = function() { return showControls ? 180 : 0 }\n        , duration = 250\n        , useInteractiveGuideline = false\n        ;\n\n    state.stacked = false // DEPRECATED Maintained for backward compatibility\n\n    multibar.stacked(false);\n    xAxis\n        .orient('bottom')\n        .tickPadding(7)\n        .showMaxMin(false)\n        .tickFormat(function(d) { return d })\n    ;\n    yAxis\n        .orient((rightAlignYAxis) ? 'right' : 'left')\n        .tickFormat(d3.format(',.1f'))\n    ;\n\n    tooltip\n        .duration(0)\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    interactiveLayer.tooltip\n        .valueFormatter(function(d, i) {\n            return d == null ? \"N/A\" : yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    interactiveLayer.tooltip\n        .valueFormatter(function (d, i) {\n            return d == null ? \"N/A\" : yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function (d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    interactiveLayer.tooltip\n        .duration(0)\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    controls.updateState(false);\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n    var stacked = false;\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled }),\n                stacked: stacked\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.stacked !== undefined)\n                stacked = state.stacked;\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(multibar);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() {\n                if (duration === 0)\n                    container.call(chart);\n                else\n                    container.transition()\n                        .duration(duration)\n                        .call(chart);\n            };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disableddisabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display noData message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = multibar.xScale();\n            y = multibar.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-multiBarWithLegend').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarWithLegend').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis');\n            gEnter.append('g').attr('class', 'nv-barsWrap');\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n            gEnter.append('g').attr('class', 'nv-controlsWrap');\n            gEnter.append('g').attr('class', 'nv-interactive');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                if (legendPosition === 'bottom') {\n                    legend.width(availableWidth - margin.right);\n\n                     g.select('.nv-legendWrap')\n                         .datum(data)\n                         .call(legend);\n\n                     margin.bottom = xAxis.height() + legend.height();\n                     availableHeight = nv.utils.availableHeight(height, container, margin);\n                     g.select('.nv-legendWrap')\n                         .attr('transform', 'translate(0,' + (availableHeight + xAxis.height())  +')');\n                } else {\n                    legend.width(availableWidth - controlWidth());\n\n                    g.select('.nv-legendWrap')\n                        .datum(data)\n                        .call(legend);\n\n                    if (!marginTop && legend.height() !== margin.top) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin);\n                    }\n\n                    g.select('.nv-legendWrap')\n                        .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');\n                }\n            }\n\n            // Controls\n            if (!showControls) {\n                 g.select('.nv-controlsWrap').selectAll('*').remove();\n            } else {\n                var controlsData = [\n                    { key: controlLabels.grouped || 'Grouped', disabled: multibar.stacked() },\n                    { key: controlLabels.stacked || 'Stacked', disabled: !multibar.stacked() }\n                ];\n\n                controls.width(controlWidth()).color(['#444', '#444', '#444']);\n                g.select('.nv-controlsWrap')\n                    .datum(controlsData)\n                    .attr('transform', 'translate(0,' + (-margin.top) +')')\n                    .call(controls);\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            // Main Chart Component(s)\n            multibar\n                .disabled(data.map(function(series) { return series.disabled }))\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled }));\n\n\n            var barsWrap = g.select('.nv-barsWrap')\n                .datum(data.filter(function(d) { return !d.disabled }));\n\n            barsWrap.call(multibar);\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize(-availableHeight, 0);\n\n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')');\n                g.select('.nv-x.nv-axis')\n                    .call(xAxis);\n\n                var xTicks = g.select('.nv-x.nv-axis > g').selectAll('g');\n\n                xTicks\n                    .selectAll('line, text')\n                    .style('opacity', 1)\n\n                if (staggerLabels) {\n                    var getTranslate = function(x,y) {\n                        return \"translate(\" + x + \",\" + y + \")\";\n                    };\n\n                    var staggerUp = 5, staggerDown = 17;  //pixels to stagger by\n                    // Issue #140\n                    xTicks\n                        .selectAll(\"text\")\n                        .attr('transform', function(d,i,j) {\n                            return  getTranslate(0, (j % 2 == 0 ? staggerUp : staggerDown));\n                        });\n\n                    var totalInBetweenTicks = d3.selectAll(\".nv-x.nv-axis .nv-wrap g g text\")[0].length;\n                    g.selectAll(\".nv-x.nv-axis .nv-axisMaxMin text\")\n                        .attr(\"transform\", function(d,i) {\n                            return getTranslate(0, (i === 0 || totalInBetweenTicks % 2 !== 0) ? staggerDown : staggerUp);\n                        });\n                }\n\n                if (wrapLabels) {\n                    g.selectAll('.tick text')\n                        .call(nv.utils.wrapTicks, chart.xAxis.rangeBand())\n                }\n\n                if (reduceXTicks)\n                    xTicks\n                        .filter(function(d,i) {\n                            return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;\n                        })\n                        .selectAll('text, line')\n                        .style('opacity', 0);\n\n                if(rotateLabels)\n                    xTicks\n                        .selectAll('.tick text')\n                        .attr('transform', 'rotate(' + rotateLabels + ' 0,0)')\n                        .style('text-anchor', rotateLabels > 0 ? 'start' : 'end');\n\n                g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')\n                    .style('opacity', 1);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis')\n                    .call(yAxis);\n            }\n\n            //Set up interactive layer\n            if (useInteractiveGuideline) {\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left:margin.left, top:margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            controls.dispatch.on('legendClick', function(d,i) {\n                if (!d.disabled) return;\n                controlsData = controlsData.map(function(s) {\n                    s.disabled = true;\n                    return s;\n                });\n                d.disabled = false;\n\n                switch (d.key) {\n                    case 'Grouped':\n                    case controlLabels.grouped:\n                        multibar.stacked(false);\n                        break;\n                    case 'Stacked':\n                    case controlLabels.stacked:\n                        multibar.stacked(true);\n                        break;\n                }\n\n                state.stacked = multibar.stacked();\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n                    state.disabled = e.disabled;\n                }\n                if (typeof e.stacked !== 'undefined') {\n                    multibar.stacked(e.stacked);\n                    state.stacked = e.stacked;\n                    stacked = e.stacked;\n                }\n                chart.update();\n            });\n\n            if (useInteractiveGuideline) {\n                interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                    if (e.pointXValue == undefined) return;\n\n                    var singlePoint, pointIndex, pointXLocation, xValue, allData = [];\n                    data\n                        .filter(function(series, i) {\n                            series.seriesIndex = i;\n                            return !series.disabled;\n                        })\n                        .forEach(function(series,i) {\n                            pointIndex = x.domain().indexOf(e.pointXValue)\n\n                            var point = series.values[pointIndex];\n                            if (point === undefined) return;\n\n                            xValue = point.x;\n                            if (singlePoint === undefined) singlePoint = point;\n                            if (pointXLocation === undefined) pointXLocation = e.mouseX\n                            allData.push({\n                                key: series.key,\n                                value: chart.y()(point, pointIndex),\n                                color: color(series,series.seriesIndex),\n                                data: series.values[pointIndex]\n                            });\n                        });\n\n                    interactiveLayer.tooltip\n                        .data({\n                            value: xValue,\n                            index: pointIndex,\n                            series: allData\n                        })();\n\n                    interactiveLayer.renderGuideLine(pointXLocation);\n                });\n\n                interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                    interactiveLayer.tooltip.hidden(true);\n                });\n            }\n            else {\n                multibar.dispatch.on('elementMouseover.tooltip', function(evt) {\n                    evt.value = chart.x()(evt.data);\n                    evt['series'] = {\n                        key: evt.data.key,\n                        value: chart.y()(evt.data),\n                        color: evt.color\n                    };\n                    tooltip.data(evt).hidden(false);\n                });\n\n                multibar.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true);\n                });\n\n                multibar.dispatch.on('elementMousemove.tooltip', function(evt) {\n                    tooltip();\n                });\n            }\n        });\n\n        renderWatch.renderEnd('multibarchart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.multibar = multibar;\n    chart.legend = legend;\n    chart.controls = controls;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.state = state;\n    chart.tooltip = tooltip;\n    chart.interactiveLayer = interactiveLayer;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},\n        showControls: {get: function(){return showControls;}, set: function(_){showControls=_;}},\n        controlLabels: {get: function(){return controlLabels;}, set: function(_){controlLabels=_;}},\n        showXAxis:      {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        reduceXTicks:    {get: function(){return reduceXTicks;}, set: function(_){reduceXTicks=_;}},\n        rotateLabels:    {get: function(){return rotateLabels;}, set: function(_){rotateLabels=_;}},\n        staggerLabels:    {get: function(){return staggerLabels;}, set: function(_){staggerLabels=_;}},\n        wrapLabels:   {get: function(){return wrapLabels;}, set: function(_){wrapLabels=!!_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            multibar.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n            renderWatch.reset(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( rightAlignYAxis ? 'right' : 'left');\n        }},\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = _;\n        }},\n        barColor:  {get: function(){return multibar.barColor;}, set: function(_){\n            multibar.barColor(_);\n            legend.color(function(d,i) {return d3.rgb('#ccc').darker(i * 1.5).toString();})\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, multibar);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.multiBarHorizontal = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 960\n        , height = 500\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , x = d3.scale.ordinal()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , getYerr = function(d) { return d.yErr }\n        , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove\n        , color = nv.utils.defaultColor()\n        , barColor = null // adding the ability to set the color for each rather than the whole group\n        , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled\n        , stacked = false\n        , showValues = false\n        , showBarLabels = false\n        , valuePadding = 60\n        , groupSpacing = 0.1\n        , fillOpacity = 0.75\n        , valueFormat = d3.format(',.2f')\n        , delay = 1200\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , duration = 250\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0; //used to store previous scales\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            if (stacked)\n                data = d3.layout.stack()\n                    .offset('zero')\n                    .values(function(d){ return d.values })\n                    .y(getY)\n                (data);\n\n            //add series index and key to each data point for reference\n            data.forEach(function(series, i) {\n                series.values.forEach(function(point) {\n                    point.series = i;\n                    point.key = series.key;\n                });\n            });\n\n            // HACK for negative value stacking\n            if (stacked)\n                data[0].values.map(function(d,i) {\n                    var posBase = 0, negBase = 0;\n                    data.map(function(d) {\n                        var f = d.values[i]\n                        f.size = Math.abs(f.y);\n                        if (f.y<0)  {\n                            f.y1 = negBase - f.size;\n                            negBase = negBase - f.size;\n                        } else\n                        {\n                            f.y1 = posBase;\n                            posBase = posBase + f.size;\n                        }\n                    });\n                });\n\n            // Setup Scales\n            // remap and flatten the data for use in calculating the scales' domains\n            var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate\n                data.map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1 }\n                    })\n                });\n\n            x.domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))\n                .rangeBands(xRange || [0, availableHeight], groupSpacing);\n\n            y.domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return stacked ? (d.y > 0 ? d.y1 + d.y : d.y1 ) : d.y }).concat(forceY)))\n\n            if (showValues && !stacked)\n                y.range(yRange || [(y.domain()[0] < 0 ? valuePadding : 0), availableWidth - (y.domain()[1] > 0 ? valuePadding : 0) ]);\n            else\n                y.range(yRange || [0, availableWidth]);\n\n            x0 = x0 || x;\n            y0 = y0 || d3.scale.linear().domain(y.domain()).range([y(0),y(0)]);\n\n            // Setup containers and skeleton of chart\n            var wrap = d3.select(this).selectAll('g.nv-wrap.nv-multibarHorizontal').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibarHorizontal');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-groups');\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var groups = wrap.select('.nv-groups').selectAll('.nv-group')\n                .data(function(d) { return d }, function(d,i) { return i });\n            groups.enter().append('g')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6);\n            groups.exit().watchTransition(renderWatch, 'multibarhorizontal: exit groups')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6)\n                .remove();\n            groups\n                .attr('class', function(d,i) { return 'nv-group nv-series-' + i })\n                .classed('hover', function(d) { return d.hover })\n                .style('fill', function(d,i){ return color(d, i) })\n                .style('stroke', function(d,i){ return color(d, i) });\n            groups.watchTransition(renderWatch, 'multibarhorizontal: groups')\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', fillOpacity);\n\n            var bars = groups.selectAll('g.nv-bar')\n                .data(function(d) { return d.values });\n            bars.exit().remove();\n\n            var barsEnter = bars.enter().append('g')\n                .attr('transform', function(d,i,j) {\n                    return 'translate(' + y0(stacked ? d.y0 : 0) + ',' + (stacked ? 0 : (j * x.rangeBand() / data.length ) + x(getX(d,i))) + ')'\n                });\n\n            barsEnter.append('rect')\n                .attr('width', 0)\n                .attr('height', x.rangeBand() / (stacked ? 1 : data.length) )\n\n            bars\n                .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here\n                    d3.select(this).classed('hover', true);\n                    dispatch.elementMouseover({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mouseout', function(d,i) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.elementMouseout({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mouseout', function(d,i) {\n                    dispatch.elementMouseout({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('mousemove', function(d,i) {\n                    dispatch.elementMousemove({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                })\n                .on('click', function(d,i) {\n                    var element = this;\n                    dispatch.elementClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\"),\n                        event: d3.event,\n                        element: element\n                    });\n                    d3.event.stopPropagation();\n                })\n                .on('dblclick', function(d,i) {\n                    dispatch.elementDblClick({\n                        data: d,\n                        index: i,\n                        color: d3.select(this).style(\"fill\")\n                    });\n                    d3.event.stopPropagation();\n                });\n\n            if (getYerr(data[0],0)) {\n                barsEnter.append('polyline');\n\n                bars.select('polyline')\n                    .attr('fill', 'none')\n                    .attr('points', function(d,i) {\n                        var xerr = getYerr(d,i)\n                            , mid = 0.8 * x.rangeBand() / ((stacked ? 1 : data.length) * 2);\n                        xerr = xerr.length ? xerr : [-Math.abs(xerr), Math.abs(xerr)];\n                        xerr = xerr.map(function(e) { return y(e + ((getY(d,i) < 0) ? 0 : getY(d,i))) - y(0); });\n                        var a = [[xerr[0],-mid], [xerr[0],mid], [xerr[0],0], [xerr[1],0], [xerr[1],-mid], [xerr[1],mid]];\n                        return a.map(function (path) { return path.join(',') }).join(' ');\n                    })\n                    .attr('transform', function(d,i) {\n                        var mid = x.rangeBand() / ((stacked ? 1 : data.length) * 2);\n                        return 'translate(0, ' + mid + ')';\n                    });\n            }\n\n            barsEnter.append('text');\n\n            if (showValues && !stacked) {\n                bars.select('text')\n                    .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'end' : 'start' })\n                    .attr('y', x.rangeBand() / (data.length * 2))\n                    .attr('dy', '.32em')\n                    .text(function(d,i) {\n                        var t = valueFormat(getY(d,i))\n                            , yerr = getYerr(d,i);\n                        if (yerr === undefined)\n                            return t;\n                        if (!yerr.length)\n                            return t + '±' + valueFormat(Math.abs(yerr));\n                        return t + '+' + valueFormat(Math.abs(yerr[1])) + '-' + valueFormat(Math.abs(yerr[0]));\n                    });\n                bars.watchTransition(renderWatch, 'multibarhorizontal: bars')\n                    .select('text')\n                    .attr('x', function(d,i) { return getY(d,i) < 0 ? -4 : y(getY(d,i)) - y(0) + 4 })\n            } else {\n                bars.selectAll('text').text('');\n            }\n\n            if (showBarLabels && !stacked) {\n                barsEnter.append('text').classed('nv-bar-label',true);\n                bars.select('text.nv-bar-label')\n                    .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'start' : 'end' })\n                    .attr('y', x.rangeBand() / (data.length * 2))\n                    .attr('dy', '.32em')\n                    .text(function(d,i) { return getX(d,i) });\n                bars.watchTransition(renderWatch, 'multibarhorizontal: bars')\n                    .select('text.nv-bar-label')\n                    .attr('x', function(d,i) { return getY(d,i) < 0 ? y(0) - y(getY(d,i)) + 4 : -4 });\n            }\n            else {\n                bars.selectAll('text.nv-bar-label').text('');\n            }\n\n            bars\n                .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})\n\n            if (barColor) {\n                if (!disabled) disabled = data.map(function() { return true });\n                bars\n                    .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })\n                    .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });\n            }\n\n            if (stacked)\n                bars.watchTransition(renderWatch, 'multibarhorizontal: bars')\n                    .attr('transform', function(d,i) {\n                        return 'translate(' + y(d.y1) + ',' + x(getX(d,i)) + ')'\n                    })\n                    .select('rect')\n                    .attr('width', function(d,i) {\n                        return Math.abs(y(getY(d,i) + d.y0) - y(d.y0)) || 0\n                    })\n                    .attr('height', x.rangeBand() );\n            else\n                bars.watchTransition(renderWatch, 'multibarhorizontal: bars')\n                    .attr('transform', function(d,i) {\n                        //TODO: stacked must be all positive or all negative, not both?\n                        return 'translate(' +\n                            (getY(d,i) < 0 ? y(getY(d,i)) : y(0))\n                            + ',' +\n                            (d.series * x.rangeBand() / data.length\n                                +\n                                x(getX(d,i)) )\n                            + ')'\n                    })\n                    .select('rect')\n                    .attr('height', x.rangeBand() / data.length )\n                    .attr('width', function(d,i) {\n                        return Math.max(Math.abs(y(getY(d,i)) - y(0)),1) || 0\n                    });\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n\n        });\n\n        renderWatch.renderEnd('multibarHorizontal immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:   {get: function(){return width;}, set: function(_){width=_;}},\n        height:  {get: function(){return height;}, set: function(_){height=_;}},\n        x:       {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:       {get: function(){return getY;}, set: function(_){getY=_;}},\n        yErr:       {get: function(){return getYerr;}, set: function(_){getYerr=_;}},\n        xScale:  {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:  {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:  {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:  {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        forceY:  {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        stacked: {get: function(){return stacked;}, set: function(_){stacked=_;}},\n        showValues: {get: function(){return showValues;}, set: function(_){showValues=_;}},\n        // this shows the group name, seems pointless?\n        //showBarLabels:    {get: function(){return showBarLabels;}, set: function(_){showBarLabels=_;}},\n        disabled:     {get: function(){return disabled;}, set: function(_){disabled=_;}},\n        id:           {get: function(){return id;}, set: function(_){id=_;}},\n        valueFormat:  {get: function(){return valueFormat;}, set: function(_){valueFormat=_;}},\n        valuePadding: {get: function(){return valuePadding;}, set: function(_){valuePadding=_;}},\n        groupSpacing: {get: function(){return groupSpacing;}, set: function(_){groupSpacing=_;}},\n        fillOpacity:  {get: function(){return fillOpacity;}, set: function(_){fillOpacity=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        barColor:  {get: function(){return barColor;}, set: function(_){\n            barColor = _ ? nv.utils.getColor(_) : null;\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.multiBarHorizontalChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var multibar = nv.models.multiBarHorizontal()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , legend = nv.models.legend().height(30)\n        , controls = nv.models.legend().height(30)\n        , tooltip = nv.models.tooltip()\n        ;\n\n    var margin = {top: 30, right: 20, bottom: 50, left: 60}\n        , marginTop = null\n        , width = null\n        , height = null\n        , color = nv.utils.defaultColor()\n        , showControls = true\n        , controlsPosition = 'top'        \n        , controlLabels = {}\n        , showLegend = true\n        , legendPosition = 'top'\n        , showXAxis = true\n        , showYAxis = true\n        , stacked = false\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd')\n        , controlWidth = function() { return showControls ? 180 : 0 }\n        , duration = 250\n        ;\n\n    state.stacked = false; // DEPRECATED Maintained for backward compatibility\n\n    multibar.stacked(stacked);\n\n    xAxis\n        .orient('left')\n        .tickPadding(5)\n        .showMaxMin(false)\n        .tickFormat(function(d) { return d })\n    ;\n    yAxis\n        .orient('bottom')\n        .tickFormat(d3.format(',.1f'))\n    ;\n\n    tooltip\n        .duration(0)\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        })\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        });\n\n    controls.updateState(false);\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled }),\n                stacked: stacked\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.stacked !== undefined)\n                stacked = state.stacked;\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(multibar);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() { container.transition().duration(duration).call(chart) };\n            chart.container = this;\n\n            stacked = multibar.stacked();\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disableddisabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = multibar.xScale();\n            y = multibar.yScale().clamp(true);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-multiBarHorizontalChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarHorizontalChart').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis')\n                .append('g').attr('class', 'nv-zeroLine')\n                .append('line');\n            gEnter.append('g').attr('class', 'nv-barsWrap');\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n            gEnter.append('g').attr('class', 'nv-controlsWrap');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                legend.width(availableWidth - controlWidth());\n\n                g.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n                if (legendPosition === 'bottom') {\n                     margin.bottom = xAxis.height() + legend.height();\n                     availableHeight = nv.utils.availableHeight(height, container, margin);\n                     g.select('.nv-legendWrap')\n                         .attr('transform', 'translate(' + controlWidth() + ',' + (availableHeight + xAxis.height())  +')');\n                } else if (legendPosition === 'top') {\n\n                    if (!marginTop && legend.height() !== margin.top) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin);\n                    }\n\n                    g.select('.nv-legendWrap')\n                        .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');\n                }                    \n            }\n\n            // Controls\n            if (!showControls) {\n                 g.select('.nv-controlsWrap').selectAll('*').remove();\n            } else {\n                var controlsData = [\n                    { key: controlLabels.grouped || 'Grouped', disabled: multibar.stacked() },\n                    { key: controlLabels.stacked || 'Stacked', disabled: !multibar.stacked() }\n                ];\n\n                controls.width(controlWidth()).color(['#444', '#444', '#444']);\n\n                if (controlsPosition === 'bottom') {\n                     margin.bottom = xAxis.height() + legend.height();\n                     availableHeight = nv.utils.availableHeight(height, container, margin);\n                    g.select('.nv-controlsWrap')\n                        .datum(controlsData)\n                        .attr('transform', 'translate(0,' + (availableHeight + xAxis.height()) +')')\n                        .call(controls);  \n\n                } else if (controlsPosition === 'top') {\n                    g.select('.nv-controlsWrap')\n                        .datum(controlsData)\n                        .attr('transform', 'translate(0,' + (-margin.top) +')')\n                        .call(controls);                        \n                }\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Main Chart Component(s)\n            multibar\n                .disabled(data.map(function(series) { return series.disabled }))\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled }));\n\n            var barsWrap = g.select('.nv-barsWrap')\n                .datum(data.filter(function(d) { return !d.disabled }));\n\n            barsWrap.transition().call(multibar);\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/24, data) )\n                    .tickSize(-availableWidth, 0);\n\n                g.select('.nv-x.nv-axis').call(xAxis);\n\n                var xTicks = g.select('.nv-x.nv-axis').selectAll('g');\n\n                xTicks\n                    .selectAll('line, text');\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize( -availableHeight, 0);\n\n                g.select('.nv-y.nv-axis')\n                    .attr('transform', 'translate(0,' + availableHeight + ')');\n                g.select('.nv-y.nv-axis').call(yAxis);\n            }\n\n            // Zero line\n            g.select(\".nv-zeroLine line\")\n                .attr(\"x1\", y(0))\n                .attr(\"x2\", y(0))\n                .attr(\"y1\", 0)\n                .attr(\"y2\", -availableHeight)\n            ;\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            controls.dispatch.on('legendClick', function(d,i) {\n                if (!d.disabled) return;\n                controlsData = controlsData.map(function(s) {\n                    s.disabled = true;\n                    return s;\n                });\n                d.disabled = false;\n\n                switch (d.key) {\n                    case 'Grouped':\n                    case controlLabels.grouped:\n                        multibar.stacked(false);\n                        break;\n                    case 'Stacked':\n                    case controlLabels.stacked:\n                        multibar.stacked(true);\n                        break;\n                }\n\n                state.stacked = multibar.stacked();\n                dispatch.stateChange(state);\n                stacked = multibar.stacked();\n\n                chart.update();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n\n                    state.disabled = e.disabled;\n                }\n\n                if (typeof e.stacked !== 'undefined') {\n                    multibar.stacked(e.stacked);\n                    state.stacked = e.stacked;\n                    stacked = e.stacked;\n                }\n\n                chart.update();\n            });\n        });\n        renderWatch.renderEnd('multibar horizontal chart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    multibar.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt.value = chart.x()(evt.data);\n        evt['series'] = {\n            key: evt.data.key,\n            value: chart.y()(evt.data),\n            color: evt.color\n        };\n        tooltip.data(evt).hidden(false);\n    });\n\n    multibar.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    multibar.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.multibar = multibar;\n    chart.legend = legend;\n    chart.controls = controls;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.state = state;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},\n        controlsPosition: {get: function(){return controlsPosition;}, set: function(_){controlsPosition=_;}},\n        showControls: {get: function(){return showControls;}, set: function(_){showControls=_;}},\n        controlLabels: {get: function(){return controlLabels;}, set: function(_){controlLabels=_;}},\n        showXAxis:      {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            multibar.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n        }},\n        barColor:  {get: function(){return multibar.barColor;}, set: function(_){\n            multibar.barColor(_);\n            legend.color(function(d,i) {return d3.rgb('#ccc').darker(i * 1.5).toString();})\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, multibar);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\nnv.models.multiChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 30, right: 20, bottom: 50, left: 60},\n        marginTop = null,\n        color = nv.utils.defaultColor(),\n        width = null,\n        height = null,\n        showLegend = true,\n        noData = null,\n        yDomain1,\n        yDomain2,\n        getX = function(d) { return d.x },\n        getY = function(d) { return d.y},\n        interpolate = 'linear',\n        useVoronoi = true,\n        interactiveLayer = nv.interactiveGuideline(),\n        useInteractiveGuideline = false,\n        legendRightAxisHint = ' (right axis)',\n        duration = 250\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x = d3.scale.linear(),\n        yScale1 = d3.scale.linear(),\n        yScale2 = d3.scale.linear(),\n\n        lines1 = nv.models.line().yScale(yScale1).duration(duration),\n        lines2 = nv.models.line().yScale(yScale2).duration(duration),\n\n        scatters1 = nv.models.scatter().yScale(yScale1).duration(duration),\n        scatters2 = nv.models.scatter().yScale(yScale2).duration(duration),\n\n        bars1 = nv.models.multiBar().stacked(false).yScale(yScale1).duration(duration),\n        bars2 = nv.models.multiBar().stacked(false).yScale(yScale2).duration(duration),\n\n        stack1 = nv.models.stackedArea().yScale(yScale1).duration(duration),\n        stack2 = nv.models.stackedArea().yScale(yScale2).duration(duration),\n\n        xAxis = nv.models.axis().scale(x).orient('bottom').tickPadding(5).duration(duration),\n        yAxis1 = nv.models.axis().scale(yScale1).orient('left').duration(duration),\n        yAxis2 = nv.models.axis().scale(yScale2).orient('right').duration(duration),\n\n        legend = nv.models.legend().height(30),\n        tooltip = nv.models.tooltip(),\n        dispatch = d3.dispatch();\n\n    var charts = [lines1, lines2, scatters1, scatters2, bars1, bars2, stack1, stack2];\n\n    function chart(selection) {\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n\n            chart.update = function() { container.transition().call(chart); };\n            chart.container = this;\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            var dataLines1 = data.filter(function(d) {return d.type == 'line' && d.yAxis == 1});\n            var dataLines2 = data.filter(function(d) {return d.type == 'line' && d.yAxis == 2});\n            var dataScatters1 = data.filter(function(d) {return d.type == 'scatter' && d.yAxis == 1});\n            var dataScatters2 = data.filter(function(d) {return d.type == 'scatter' && d.yAxis == 2});\n            var dataBars1 =  data.filter(function(d) {return d.type == 'bar'  && d.yAxis == 1});\n            var dataBars2 =  data.filter(function(d) {return d.type == 'bar'  && d.yAxis == 2});\n            var dataStack1 = data.filter(function(d) {return d.type == 'area' && d.yAxis == 1});\n            var dataStack2 = data.filter(function(d) {return d.type == 'area' && d.yAxis == 2});\n\n            // Display noData message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container);\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            var series1 = data.filter(function(d) {return !d.disabled && d.yAxis == 1})\n                .map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d), y: getY(d) }\n                    })\n                });\n\n            var series2 = data.filter(function(d) {return !d.disabled && d.yAxis == 2})\n                .map(function(d) {\n                    return d.values.map(function(d,i) {\n                        return { x: getX(d), y: getY(d) }\n                    })\n                });\n\n            x   .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x }))\n                .range([0, availableWidth]);\n\n            var wrap = container.selectAll('g.wrap.multiChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 multiChart').append('g');\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y1 nv-axis');\n            gEnter.append('g').attr('class', 'nv-y2 nv-axis');\n            gEnter.append('g').attr('class', 'stack1Wrap');\n            gEnter.append('g').attr('class', 'stack2Wrap');\n            gEnter.append('g').attr('class', 'bars1Wrap');\n            gEnter.append('g').attr('class', 'bars2Wrap');\n            gEnter.append('g').attr('class', 'scatters1Wrap');\n            gEnter.append('g').attr('class', 'scatters2Wrap');\n            gEnter.append('g').attr('class', 'lines1Wrap');\n            gEnter.append('g').attr('class', 'lines2Wrap');\n            gEnter.append('g').attr('class', 'legendWrap');\n            gEnter.append('g').attr('class', 'nv-interactive');\n\n            var g = wrap.select('g');\n\n            var color_array = data.map(function(d,i) {\n                return data[i].color || color(d, i);\n            });\n\n            // Legend\n            if (!showLegend) {\n                g.select('.legendWrap').selectAll('*').remove();\n            } else {\n                var legendWidth = legend.align() ? availableWidth / 2 : availableWidth;\n                var legendXPosition = legend.align() ? legendWidth : 0;\n\n                legend.width(legendWidth);\n                legend.color(color_array);\n\n                g.select('.legendWrap')\n                    .datum(data.map(function(series) {\n                        series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;\n                        series.key = series.originalKey + (series.yAxis == 1 ? '' : legendRightAxisHint);\n                        return series;\n                    }))\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                }\n\n                g.select('.legendWrap')\n                    .attr('transform', 'translate(' + legendXPosition + ',' + (-margin.top) +')');\n            }\n\n            lines1\n                .width(availableWidth)\n                .height(availableHeight)\n                .interpolate(interpolate)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'line'}));\n            lines2\n                .width(availableWidth)\n                .height(availableHeight)\n                .interpolate(interpolate)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'line'}));\n            scatters1\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'scatter'}));\n            scatters2\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'scatter'}));\n            bars1\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'bar'}));\n            bars2\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'bar'}));\n            stack1\n                .width(availableWidth)\n                .height(availableHeight)\n                .interpolate(interpolate)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'area'}));\n            stack2\n                .width(availableWidth)\n                .height(availableHeight)\n                .interpolate(interpolate)\n                .color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'area'}));\n\n            g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            var lines1Wrap = g.select('.lines1Wrap')\n                .datum(dataLines1.filter(function(d){return !d.disabled}));\n            var scatters1Wrap = g.select('.scatters1Wrap')\n                .datum(dataScatters1.filter(function(d){return !d.disabled}));\n            var bars1Wrap = g.select('.bars1Wrap')\n                .datum(dataBars1.filter(function(d){return !d.disabled}));\n            var stack1Wrap = g.select('.stack1Wrap')\n                .datum(dataStack1.filter(function(d){return !d.disabled}));\n            var lines2Wrap = g.select('.lines2Wrap')\n                .datum(dataLines2.filter(function(d){return !d.disabled}));\n            var scatters2Wrap = g.select('.scatters2Wrap')\n                .datum(dataScatters2.filter(function(d){return !d.disabled}));\n            var bars2Wrap = g.select('.bars2Wrap')\n                .datum(dataBars2.filter(function(d){return !d.disabled}));\n            var stack2Wrap = g.select('.stack2Wrap')\n                .datum(dataStack2.filter(function(d){return !d.disabled}));\n\n            var extraValue1BarStacked = [];\n            if (bars1.stacked() && dataBars1.length) {\n                var extraValue1BarStacked = dataBars1.filter(function(d){return !d.disabled}).map(function(a){return a.values});\n                \n                if (extraValue1BarStacked.length > 0)\n                    extraValue1BarStacked = extraValue1BarStacked.reduce(function(a,b){\n                        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})\n                    });\n            }\n            if (dataBars1.length) {\n                extraValue1BarStacked.push({x:0, y:0});\n            }\n            \n            var extraValue2BarStacked = [];\n            if (bars2.stacked() && dataBars2.length) {\n                var extraValue2BarStacked = dataBars2.filter(function(d){return !d.disabled}).map(function(a){return a.values});\n                \n                if (extraValue2BarStacked.length > 0)\n                    extraValue2BarStacked = extraValue2BarStacked.reduce(function(a,b){\n                        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})\n                    });\n            }\n            if (dataBars2.length) {\n                extraValue2BarStacked.push({x:0, y:0});\n            }\n            \n            yScale1 .domain(yDomain1 || d3.extent(d3.merge(series1).concat(extraValue1BarStacked), function(d) { return d.y } ))\n                .range([0, availableHeight]);\n\n            yScale2 .domain(yDomain2 || d3.extent(d3.merge(series2).concat(extraValue2BarStacked), function(d) { return d.y } ))\n                .range([0, availableHeight]);\n\n            lines1.yDomain(yScale1.domain());\n            scatters1.yDomain(yScale1.domain());\n            bars1.yDomain(yScale1.domain());\n            stack1.yDomain(yScale1.domain());\n\n            lines2.yDomain(yScale2.domain());\n            scatters2.yDomain(yScale2.domain());\n            bars2.yDomain(yScale2.domain());\n            stack2.yDomain(yScale2.domain());\n\n            if(dataStack1.length){d3.transition(stack1Wrap).call(stack1);}\n            if(dataStack2.length){d3.transition(stack2Wrap).call(stack2);}\n\n            if(dataBars1.length){d3.transition(bars1Wrap).call(bars1);}\n            if(dataBars2.length){d3.transition(bars2Wrap).call(bars2);}\n\n            if(dataLines1.length){d3.transition(lines1Wrap).call(lines1);}\n            if(dataLines2.length){d3.transition(lines2Wrap).call(lines2);}\n\n            if(dataScatters1.length){d3.transition(scatters1Wrap).call(scatters1);}\n            if(dataScatters2.length){d3.transition(scatters2Wrap).call(scatters2);}\n\n            xAxis\n                ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                .tickSize(-availableHeight, 0);\n\n            g.select('.nv-x.nv-axis')\n                .attr('transform', 'translate(0,' + availableHeight + ')');\n            d3.transition(g.select('.nv-x.nv-axis'))\n                .call(xAxis);\n\n            yAxis1\n                ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                .tickSize( -availableWidth, 0);\n\n\n            d3.transition(g.select('.nv-y1.nv-axis'))\n                .call(yAxis1);\n\n            yAxis2\n                ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                .tickSize( -availableWidth, 0);\n\n            d3.transition(g.select('.nv-y2.nv-axis'))\n                .call(yAxis2);\n\n            g.select('.nv-y1.nv-axis')\n                .classed('nv-disabled', series1.length ? false : true)\n                .attr('transform', 'translate(' + x.range()[0] + ',0)');\n\n            g.select('.nv-y2.nv-axis')\n                .classed('nv-disabled', series2.length ? false : true)\n                .attr('transform', 'translate(' + x.range()[1] + ',0)');\n\n            legend.dispatch.on('stateChange', function(newState) {\n                chart.update();\n            });\n\n            if(useInteractiveGuideline){\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left:margin.left, top:margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n\n            //============================================================\n            // Event Handling/Dispatching\n            //------------------------------------------------------------\n\n            function mouseover_line(evt) {\n                var yaxis = evt.series.yAxis === 2 ? yAxis2 : yAxis1;\n                evt.value = evt.point.x;\n                evt.series = {\n                    value: evt.point.y,\n                    color: evt.point.color,\n                    key: evt.series.key\n                };\n                tooltip\n                    .duration(0)\n                    .headerFormatter(function(d, i) {\n                    \treturn xAxis.tickFormat()(d, i);\n                    })\n                    .valueFormatter(function(d, i) {\n                        return yaxis.tickFormat()(d, i);\n                    })\n                    .data(evt)\n                    .hidden(false);\n            }\n\n            function mouseover_scatter(evt) {\n                var yaxis = evt.series.yAxis === 2 ? yAxis2 : yAxis1;\n                evt.value = evt.point.x;\n                evt.series = {\n                    value: evt.point.y,\n                    color: evt.point.color,\n                    key: evt.series.key\n                };\n                tooltip\n                    .duration(100)\n                    .headerFormatter(function(d, i) {\n                    \treturn xAxis.tickFormat()(d, i);\n                    })\n                    .valueFormatter(function(d, i) {\n                        return yaxis.tickFormat()(d, i);\n                    })\n                    .data(evt)\n                    .hidden(false);\n            }\n\n            function mouseover_stack(evt) {\n                var yaxis = evt.series.yAxis === 2 ? yAxis2 : yAxis1;\n                evt.point['x'] = stack1.x()(evt.point);\n                evt.point['y'] = stack1.y()(evt.point);\n                tooltip\n                    .duration(0)\n                    .headerFormatter(function(d, i) {\n                    \treturn xAxis.tickFormat()(d, i);\n                    })\n                    .valueFormatter(function(d, i) {\n                        return yaxis.tickFormat()(d, i);\n                    })\n                    .data(evt)\n                    .hidden(false);\n            }\n\n            function mouseover_bar(evt) {\n                var yaxis = evt.series.yAxis === 2 ? yAxis2 : yAxis1;\n\n                evt.value = bars1.x()(evt.data);\n                evt['series'] = {\n                    value: bars1.y()(evt.data),\n                    color: evt.color,\n                    key: evt.data.key\n                };\n                tooltip\n                    .duration(0)\n                    .headerFormatter(function(d, i) {\n                    \treturn xAxis.tickFormat()(d, i);\n                    })\n                    .valueFormatter(function(d, i) {\n                        return yaxis.tickFormat()(d, i);\n                    })\n                    .data(evt)\n                    .hidden(false);\n            }\n\n\n\n            function clearHighlights() {\n              for(var i=0, il=charts.length; i < il; i++){\n                var chart = charts[i];\n                try {\n                  chart.clearHighlights();\n                } catch(e){}\n              }\n            }\n\n            function highlightPoint(serieIndex, pointIndex, b){\n              for(var i=0, il=charts.length; i < il; i++){\n                var chart = charts[i];\n                try {\n                  chart.highlightPoint(serieIndex, pointIndex, b);\n                } catch(e){}\n              }\n            }\n\n            if(useInteractiveGuideline){\n                interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                    clearHighlights();\n                    var singlePoint, pointIndex, pointXLocation, allData = [];\n                    data\n                    .filter(function(series, i) {\n                        series.seriesIndex = i;\n                        return !series.disabled;\n                    })\n                    .forEach(function(series,i) {\n                        var extent = x.domain();\n                        var currentValues = series.values.filter(function(d,i) {\n                            return chart.x()(d,i) >= extent[0] && chart.x()(d,i) <= extent[1];\n                        });\n\n                        pointIndex = nv.interactiveBisect(currentValues, e.pointXValue, chart.x());\n                        var point = currentValues[pointIndex];\n                        var pointYValue = chart.y()(point, pointIndex);\n                        if (pointYValue !== null) {\n                            highlightPoint(i, pointIndex, true);\n                        }\n                        if (point === undefined) return;\n                        if (singlePoint === undefined) singlePoint = point;\n                        if (pointXLocation === undefined) pointXLocation = x(chart.x()(point,pointIndex));\n                        allData.push({\n                            key: series.key,\n                            value: pointYValue,\n                            color: color(series,series.seriesIndex),\n                            data: point,\n                            yAxis: series.yAxis == 2 ? yAxis2 : yAxis1\n                        });\n                    });\n\n                    var defaultValueFormatter = function(d,i) {\n                        var yAxis = allData[i].yAxis;\n                        return d == null ? \"N/A\" : yAxis.tickFormat()(d);\n                    };\n\n                    interactiveLayer.tooltip\n                        .headerFormatter(function(d, i) {\n                            return xAxis.tickFormat()(d, i);\n                        })\n                        .valueFormatter(interactiveLayer.tooltip.valueFormatter() || defaultValueFormatter)\n                        .data({\n                            value: chart.x()( singlePoint,pointIndex ),\n                            index: pointIndex,\n                            series: allData\n                        })();\n\n                    interactiveLayer.renderGuideLine(pointXLocation);\n                });\n\n                interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                    clearHighlights();\n                });\n            } else {\n                lines1.dispatch.on('elementMouseover.tooltip', mouseover_line);\n                lines2.dispatch.on('elementMouseover.tooltip', mouseover_line);\n                lines1.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n                lines2.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n\n                scatters1.dispatch.on('elementMouseover.tooltip', mouseover_scatter);\n                scatters2.dispatch.on('elementMouseover.tooltip', mouseover_scatter);\n                scatters1.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n                scatters2.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n\n                stack1.dispatch.on('elementMouseover.tooltip', mouseover_stack);\n                stack2.dispatch.on('elementMouseover.tooltip', mouseover_stack);\n                stack1.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n                stack2.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true)\n                });\n\n                bars1.dispatch.on('elementMouseover.tooltip', mouseover_bar);\n                bars2.dispatch.on('elementMouseover.tooltip', mouseover_bar);\n\n                bars1.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true);\n                });\n                bars2.dispatch.on('elementMouseout.tooltip', function(evt) {\n                    tooltip.hidden(true);\n                });\n                bars1.dispatch.on('elementMousemove.tooltip', function(evt) {\n                    tooltip();\n                });\n                bars2.dispatch.on('elementMousemove.tooltip', function(evt) {\n                    tooltip();\n                });\n            }\n        });\n\n        return chart;\n    }\n\n    //============================================================\n    // Global getters and setters\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.legend = legend;\n    chart.lines1 = lines1;\n    chart.lines2 = lines2;\n    chart.scatters1 = scatters1;\n    chart.scatters2 = scatters2;\n    chart.bars1 = bars1;\n    chart.bars2 = bars2;\n    chart.stack1 = stack1;\n    chart.stack2 = stack2;\n    chart.xAxis = xAxis;\n    chart.yAxis1 = yAxis1;\n    chart.yAxis2 = yAxis2;\n    chart.tooltip = tooltip;\n    chart.interactiveLayer = interactiveLayer;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        yDomain1:      {get: function(){return yDomain1;}, set: function(_){yDomain1=_;}},\n        yDomain2:    {get: function(){return yDomain2;}, set: function(_){yDomain2=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        interpolate:    {get: function(){return interpolate;}, set: function(_){interpolate=_;}},\n        legendRightAxisHint:    {get: function(){return legendRightAxisHint;}, set: function(_){legendRightAxisHint=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        x: {get: function(){return getX;}, set: function(_){\n            getX = _;\n            lines1.x(_);\n            lines2.x(_);\n            scatters1.x(_);\n            scatters2.x(_);\n            bars1.x(_);\n            bars2.x(_);\n            stack1.x(_);\n            stack2.x(_);\n        }},\n        y: {get: function(){return getY;}, set: function(_){\n            getY = _;\n            lines1.y(_);\n            lines2.y(_);\n            scatters1.y(_);\n            scatters2.y(_);\n            stack1.y(_);\n            stack2.y(_);\n            bars1.y(_);\n            bars2.y(_);\n        }},\n        useVoronoi: {get: function(){return useVoronoi;}, set: function(_){\n            useVoronoi=_;\n            lines1.useVoronoi(_);\n            lines2.useVoronoi(_);\n            stack1.useVoronoi(_);\n            stack2.useVoronoi(_);\n        }},\n\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = _;\n            if (useInteractiveGuideline) {\n                lines1.interactive(false);\n                lines1.useVoronoi(false);\n                lines2.interactive(false);\n                lines2.useVoronoi(false);\n                stack1.interactive(false);\n                stack1.useVoronoi(false);\n                stack2.interactive(false);\n                stack2.useVoronoi(false);\n                scatters1.interactive(false);\n                scatters2.interactive(false);\n            }\n        }},\n\n        duration: {get: function(){return duration;}, set: function(_) {\n            duration = _;\n            [lines1, lines2, stack1, stack2, scatters1, scatters2, xAxis, yAxis1, yAxis2].forEach(function(model){\n              model.duration(duration);\n            });\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.ohlcBar = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = null\n        , height = null\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , x = d3.scale.linear()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , getOpen = function(d) { return d.open }\n        , getClose = function(d) { return d.close }\n        , getHigh = function(d) { return d.high }\n        , getLow = function(d) { return d.low }\n        , forceX = []\n        , forceY = []\n        , padData     = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart\n        , clipEdge = true\n        , color = nv.utils.defaultColor()\n        , interactive = false\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd', 'chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    function chart(selection) {\n        selection.each(function(data) {\n            container = d3.select(this);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            nv.utils.initSVG(container);\n\n            // ohlc bar width.\n            var w = (availableWidth / data[0].values.length) * .9;\n\n            // Setup Scales\n            x.domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ));\n\n            if (padData)\n                x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);\n            else\n                x.range(xRange || [5 + w/2, availableWidth - w/2 - 5]);\n\n            y.domain(yDomain || [\n                    d3.min(data[0].values.map(getLow).concat(forceY)),\n                    d3.max(data[0].values.map(getHigh).concat(forceY))\n                ]\n            ).range(yRange || [availableHeight, 0]);\n\n            // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point\n            if (x.domain()[0] === x.domain()[1])\n                x.domain()[0] ?\n                    x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])\n                    : x.domain([-1,1]);\n\n            if (y.domain()[0] === y.domain()[1])\n                y.domain()[0] ?\n                    y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])\n                    : y.domain([-1,1]);\n\n            // Setup containers and skeleton of chart\n            var wrap = d3.select(this).selectAll('g.nv-wrap.nv-ohlcBar').data([data[0].values]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-ohlcBar');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-ticks');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            container\n                .on('click', function(d,i) {\n                    dispatch.chartClick({\n                        data: d,\n                        index: i,\n                        pos: d3.event,\n                        id: id\n                    });\n                });\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-chart-clip-path-' + id)\n                .append('rect');\n\n            wrap.select('#nv-chart-clip-path-' + id + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');\n\n            var ticks = wrap.select('.nv-ticks').selectAll('.nv-tick')\n                .data(function(d) { return d });\n            ticks.exit().remove();\n\n            ticks.enter().append('path')\n                .attr('class', function(d,i,j) { return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i })\n                .attr('d', function(d,i) {\n                    return 'm0,0l0,'\n                        + (y(getOpen(d,i))\n                            - y(getHigh(d,i)))\n                        + 'l'\n                        + (-w/2)\n                        + ',0l'\n                        + (w/2)\n                        + ',0l0,'\n                        + (y(getLow(d,i)) - y(getOpen(d,i)))\n                        + 'l0,'\n                        + (y(getClose(d,i))\n                            - y(getLow(d,i)))\n                        + 'l'\n                        + (w/2)\n                        + ',0l'\n                        + (-w/2)\n                        + ',0z';\n                })\n                .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })\n                .attr('fill', function(d,i) { return color[0]; })\n                .attr('stroke', function(d,i) { return color[0]; })\n                .attr('x', 0 )\n                .attr('y', function(d,i) {  return y(Math.max(0, getY(d,i))) })\n                .attr('height', function(d,i) { return Math.abs(y(getY(d,i)) - y(0)) });\n\n            // the bar colors are controlled by CSS currently\n            ticks.attr('class', function(d,i,j) {\n                return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i;\n            });\n\n            d3.transition(ticks)\n                .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })\n                .attr('d', function(d,i) {\n                    var w = (availableWidth / data[0].values.length) * .9;\n                    return 'm0,0l0,'\n                        + (y(getOpen(d,i))\n                            - y(getHigh(d,i)))\n                        + 'l'\n                        + (-w/2)\n                        + ',0l'\n                        + (w/2)\n                        + ',0l0,'\n                        + (y(getLow(d,i))\n                            - y(getOpen(d,i)))\n                        + 'l0,'\n                        + (y(getClose(d,i))\n                            - y(getLow(d,i)))\n                        + 'l'\n                        + (w/2)\n                        + ',0l'\n                        + (-w/2)\n                        + ',0z';\n                });\n        });\n\n        return chart;\n    }\n\n\n    //Create methods to allow outside functions to highlight a specific bar.\n    chart.highlightPoint = function(pointIndex, isHoverOver) {\n        chart.clearHighlights();\n        container.select(\".nv-ohlcBar .nv-tick-0-\" + pointIndex)\n            .classed(\"hover\", isHoverOver)\n        ;\n    };\n\n    chart.clearHighlights = function() {\n        container.select(\".nv-ohlcBar .nv-tick.hover\")\n            .classed(\"hover\", false)\n        ;\n    };\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:    {get: function(){return width;}, set: function(_){width=_;}},\n        height:   {get: function(){return height;}, set: function(_){height=_;}},\n        xScale:   {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:   {get: function(){return y;}, set: function(_){y=_;}},\n        xDomain:  {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain:  {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:   {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:   {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        forceX:   {get: function(){return forceX;}, set: function(_){forceX=_;}},\n        forceY:   {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        padData:  {get: function(){return padData;}, set: function(_){padData=_;}},\n        clipEdge: {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        id:       {get: function(){return id;}, set: function(_){id=_;}},\n        interactive: {get: function(){return interactive;}, set: function(_){interactive=_;}},\n\n        x:     {get: function(){return getX;}, set: function(_){getX=_;}},\n        y:     {get: function(){return getY;}, set: function(_){getY=_;}},\n        open:  {get: function(){return getOpen();}, set: function(_){getOpen=_;}},\n        close: {get: function(){return getClose();}, set: function(_){getClose=_;}},\n        high:  {get: function(){return getHigh;}, set: function(_){getHigh=_;}},\n        low:   {get: function(){return getLow;}, set: function(_){getLow=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    != undefined ? _.top    : margin.top;\n            margin.right  = _.right  != undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom != undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   != undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\n// Code adapted from Jason Davies' \"Parallel Coordinates\"\n// http://bl.ocks.org/jasondavies/1341281\nnv.models.parallelCoordinates = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 30, right: 0, bottom: 10, left: 0}\n        , width = null\n        , height = null\n        , availableWidth = null\n        , availableHeight = null\n        , x = d3.scale.ordinal()\n        , y = {}\n        , undefinedValuesLabel = \"undefined values\"\n        , dimensionData = []\n        , enabledDimensions = []\n        , dimensionNames = []\n        , displayBrush = true\n        , color = nv.utils.defaultColor()\n        , filters = []\n        , active = []\n        , dragging = []\n        , axisWithUndefinedValues = []\n        , lineTension = 1\n        , foreground\n        , background\n        , dimensions\n        , line = d3.svg.line()\n        , axis = d3.svg.axis()\n        , dispatch = d3.dispatch('brushstart', 'brush', 'brushEnd', 'dimensionsOrder', \"stateChange\", 'elementClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd', 'activeChanged')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var container = d3.select(this);\n            availableWidth = nv.utils.availableWidth(width, container, margin);\n            availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            nv.utils.initSVG(container);\n\n           //Convert old data to new format (name, values)\n            if (data[0].values === undefined) {\n                var newData = [];\n                data.forEach(function (d) {\n                        var val = {};\n                        var key = Object.keys(d);\n                        key.forEach(function (k) { if (k !== \"name\") val[k] = d[k] });\n                        newData.push({ key: d.name, values: val });\n                });\n                data = newData;\n            }\n\n            var dataValues = data.map(function (d) {return d.values});\n            if (active.length === 0) {\n                active = data;\n            }; //set all active before first brush call\n            \n            dimensionNames = dimensionData.sort(function (a, b) { return a.currentPosition - b.currentPosition; }).map(function (d) { return d.key });\n            enabledDimensions = dimensionData.filter(function (d) { return !d.disabled; });\n            \n            // Setup Scales\n            x.rangePoints([0, availableWidth], 1).domain(enabledDimensions.map(function (d) { return d.key; }));\n\n            //Set as true if all values on an axis are missing.\n            // Extract the list of dimensions and create a scale for each.\n            var oldDomainMaxValue = {};\n            var displayMissingValuesline = false;\n            var currentTicks = [];\n            \n            dimensionNames.forEach(function(d) {\n                var extent = d3.extent(dataValues, function (p) { return +p[d]; });\n                var min = extent[0];\n                var max = extent[1];\n                var onlyUndefinedValues = false;\n                //If there is no values to display on an axis, set the extent to 0\n                if (isNaN(min) || isNaN(max)) {\n                    onlyUndefinedValues = true;\n                    min = 0;\n                    max = 0;\n                }\n                //Scale axis if there is only one value\n                if (min === max) {\n                    min = min - 1;\n                    max = max + 1;\n                }\n                var f = filters.filter(function (k) { return k.dimension == d; });\n                if (f.length !== 0) {\n                    //If there is only NaN values, keep the existing domain.\n                    if (onlyUndefinedValues) {\n                        min = y[d].domain()[0];\n                        max = y[d].domain()[1];\n                    }\n                        //If the brush extent is > max (< min), keep the extent value.\n                    else if (!f[0].hasOnlyNaN && displayBrush) {\n                        min = min > f[0].extent[0] ? f[0].extent[0] : min;\n                        max = max < f[0].extent[1] ? f[0].extent[1] : max;\n                    }\n                        //If there is NaN values brushed be sure the brush extent is on the domain.\n                    else if (f[0].hasNaN) {\n                        max = max < f[0].extent[1] ? f[0].extent[1] : max;\n                        oldDomainMaxValue[d] = y[d].domain()[1];\n                        displayMissingValuesline = true;\n                    }\n                }\n                //Use 90% of (availableHeight - 12) for the axis range, 12 reprensenting the space necessary to display \"undefined values\" text.\n                //The remaining 10% are used to display the missingValue line.\n                y[d] = d3.scale.linear()\n                    .domain([min, max])\n                    .range([(availableHeight - 12) * 0.9, 0]);\n\n                axisWithUndefinedValues = [];\n                y[d].brush = d3.svg.brush().y(y[d]).on('brushstart', brushstart).on('brush', brush).on('brushend', brushend);\n            });\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-parallelCoordinates').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-parallelCoordinates');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-parallelCoordinates background');\n            gEnter.append('g').attr('class', 'nv-parallelCoordinates foreground');\n            gEnter.append('g').attr('class', 'nv-parallelCoordinates missingValuesline');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            line.interpolate('cardinal').tension(lineTension);\n            axis.orient('left');\n            var axisDrag = d3.behavior.drag()\n                        .on('dragstart', dragStart)\n                        .on('drag', dragMove)\n                        .on('dragend', dragEnd);\n\n            //Add missing value line at the bottom of the chart\n            var missingValuesline, missingValueslineText;\n            var step = x.range()[1] - x.range()[0];\n            step = isNaN(step) ? x.range()[0] : step;\n            if (!isNaN(step)) {\n                var lineData = [0 + step / 2, availableHeight - 12, availableWidth - step / 2, availableHeight - 12];\n                missingValuesline = wrap.select('.missingValuesline').selectAll('line').data([lineData]);\n                missingValuesline.enter().append('line');\n                missingValuesline.exit().remove();\n                missingValuesline.attr(\"x1\", function(d) { return d[0]; })\n                        .attr(\"y1\", function(d) { return d[1]; })\n                        .attr(\"x2\", function(d) { return d[2]; })\n                        .attr(\"y2\", function(d) { return d[3]; });\n    \n                //Add the text \"undefined values\" under the missing value line\n                missingValueslineText = wrap.select('.missingValuesline').selectAll('text').data([undefinedValuesLabel]);\n                missingValueslineText.append('text').data([undefinedValuesLabel]);\n                missingValueslineText.enter().append('text');\n                missingValueslineText.exit().remove();\n                missingValueslineText.attr(\"y\", availableHeight)\n                        //To have the text right align with the missingValues line, substract 92 representing the text size.\n                        .attr(\"x\", availableWidth - 92 - step / 2)\n                        .text(function(d) { return d; });\n            }\n            // Add grey background lines for context.\n            background = wrap.select('.background').selectAll('path').data(data);\n            background.enter().append('path');\n            background.exit().remove();\n            background.attr('d', path);\n\n            // Add blue foreground lines for focus.\n            foreground = wrap.select('.foreground').selectAll('path').data(data);\n            foreground.enter().append('path')\n            foreground.exit().remove();\n            foreground.attr('d', path)\n                .style(\"stroke-width\", function (d, i) {\n                if (isNaN(d.strokeWidth)) { d.strokeWidth = 1;} return d.strokeWidth;})\n                .attr('stroke', function (d, i) { return d.color || color(d, i); });\n            foreground.on(\"mouseover\", function (d, i) {\n                d3.select(this).classed('hover', true).style(\"stroke-width\", d.strokeWidth + 2 + \"px\").style(\"stroke-opacity\", 1);\n                dispatch.elementMouseover({\n                    label: d.name,\n                    color: d.color || color(d, i),\n                    values: d.values,\n                    dimensions: enabledDimensions\n                });\n\n            });\n            foreground.on(\"mouseout\", function (d, i) {\n                d3.select(this).classed('hover', false).style(\"stroke-width\", d.strokeWidth + \"px\").style(\"stroke-opacity\", 0.7);\n                dispatch.elementMouseout({\n                    label: d.name,\n                    index: i\n                });\n            });\n            foreground.on('mousemove', function (d, i) {\n                dispatch.elementMousemove();\n            });\n            foreground.on('click', function (d) {\n                dispatch.elementClick({\n                    id: d.id\n                });\n            });\n            // Add a group element for each dimension.\n            dimensions = g.selectAll('.dimension').data(enabledDimensions);\n            var dimensionsEnter = dimensions.enter().append('g').attr('class', 'nv-parallelCoordinates dimension');\n\n            dimensions.attr('transform', function(d) { return 'translate(' + x(d.key) + ',0)'; });\n            dimensionsEnter.append('g').attr('class', 'nv-axis');\n\n            // Add an axis and title.\n            dimensionsEnter.append('text')\n                .attr('class', 'nv-label')\n                .style(\"cursor\", \"move\")\n                .attr('dy', '-1em')\n                .attr('text-anchor', 'middle')\n                .on(\"mouseover\", function(d, i) {\n                    dispatch.elementMouseover({\n                        label: d.tooltip || d.key,\n                        color: d.color \n                    });\n                })\n                .on(\"mouseout\", function(d, i) {\n                    dispatch.elementMouseout({\n                        label: d.tooltip\n                    });\n                })\n                .on('mousemove', function (d, i) {\n                    dispatch.elementMousemove();\n                })\n                .call(axisDrag);\n\n            dimensionsEnter.append('g').attr('class', 'nv-brushBackground');\n            dimensions.exit().remove();\n            dimensions.select('.nv-label').text(function (d) { return d.key });\n\n            // Add and store a brush for each axis.\n            restoreBrush(displayBrush);\n\n            var actives = dimensionNames.filter(function (p) { return !y[p].brush.empty(); }),\n                    extents = actives.map(function (p) { return y[p].brush.extent(); });\n            var formerActive = active.slice(0);\n\n            //Restore active values\n            active = [];\n            foreground.style(\"display\", function (d) {\n                var isActive = actives.every(function (p, i) {\n                    if ((isNaN(d.values[p]) || isNaN(parseFloat(d.values[p]))) && extents[i][0] == y[p].brush.y().domain()[0]) {\n                        return true;\n                    }\n                    return (extents[i][0] <= d.values[p] && d.values[p] <= extents[i][1]) && !isNaN(parseFloat(d.values[p]));\n                });\n                if (isActive)\n                    active.push(d);\n                return !isActive ? \"none\" : null;\n\n            });\n\n            if (filters.length > 0 || !nv.utils.arrayEquals(active, formerActive)) {\n               dispatch.activeChanged(active);\n            }\n\n            // Returns the path for a given data point.\n            function path(d) {\n                return line(enabledDimensions.map(function (p) {\n                    //If value if missing, put the value on the missing value line\n                    if (isNaN(d.values[p.key]) || isNaN(parseFloat(d.values[p.key])) || displayMissingValuesline) {\n                        var domain = y[p.key].domain();\n                        var range = y[p.key].range();\n                        var min = domain[0] - (domain[1] - domain[0]) / 9;\n\n                        //If it's not already the case, allow brush to select undefined values\n                        if (axisWithUndefinedValues.indexOf(p.key) < 0) {\n\n                            var newscale = d3.scale.linear().domain([min, domain[1]]).range([availableHeight - 12, range[1]]);\n                            y[p.key].brush.y(newscale);\n                            axisWithUndefinedValues.push(p.key);\n                        }\n                        if (isNaN(d.values[p.key]) || isNaN(parseFloat(d.values[p.key]))) {\n                            return [x(p.key), y[p.key](min)];\n                        }\n                    }\n\n                    //If parallelCoordinate contain missing values show the missing values line otherwise, hide it.\n                    if (missingValuesline !== undefined) {\n                        if (axisWithUndefinedValues.length > 0 || displayMissingValuesline) {\n                            missingValuesline.style(\"display\", \"inline\");\n                            missingValueslineText.style(\"display\", \"inline\");\n                        } else {\n                            missingValuesline.style(\"display\", \"none\");\n                            missingValueslineText.style(\"display\", \"none\");\n                        }\n                    }\n                    return [x(p.key), y[p.key](d.values[p.key])];\n                }));\n            }\n\n            function restoreBrush(visible) {\n                filters.forEach(function (f) {\n                    //If filter brushed NaN values, keep the brush on the bottom of the axis.\n                    var brushDomain = y[f.dimension].brush.y().domain();\n                    if (f.hasOnlyNaN) {\n                        f.extent[1] = (y[f.dimension].domain()[1] - brushDomain[0]) * (f.extent[1] - f.extent[0]) / (oldDomainMaxValue[f.dimension] - f.extent[0]) + brushDomain[0];\n                    }\n                    if (f.hasNaN) {\n                        f.extent[0] = brushDomain[0];\n                    }\n                    if (visible)\n                        y[f.dimension].brush.extent(f.extent);\n                });\n                \n                dimensions.select('.nv-brushBackground')\n                    .each(function (d) {\n                        d3.select(this).call(y[d.key].brush);\n\n                    })\n                    .selectAll('rect')\n                    .attr('x', -8)\n                    .attr('width', 16);\n                \n                updateTicks();\n            }\n            \n            // Handles a brush event, toggling the display of foreground lines.\n            function brushstart() {\n                //If brush aren't visible, show it before brushing again.\n                if (displayBrush === false) {\n                    displayBrush = true;\n                    restoreBrush(true);\n                }\n            }\n            \n            // Handles a brush event, toggling the display of foreground lines.\n            function brush() {\n                actives = dimensionNames.filter(function (p) { return !y[p].brush.empty(); });\n                extents = actives.map(function(p) { return y[p].brush.extent(); });\n\n                filters = []; //erase current filters\n                actives.forEach(function(d,i) {\n                    filters[i] = {\n                        dimension: d,\n                        extent: extents[i],\n                        hasNaN: false,\n                        hasOnlyNaN: false\n                    }\n                });\n\n                active = []; //erase current active list\n                foreground.style('display', function(d) {\n                    var isActive = actives.every(function(p, i) {\n                        if ((isNaN(d.values[p]) || isNaN(parseFloat(d.values[p]))) && extents[i][0] == y[p].brush.y().domain()[0]) return true;\n                        return (extents[i][0] <= d.values[p] && d.values[p] <= extents[i][1]) && !isNaN(parseFloat(d.values[p]));\n                    });\n                    if (isActive) active.push(d);\n                    return isActive ? null : 'none';\n                });\n                \n                updateTicks();\n                \n                dispatch.brush({\n                    filters: filters,\n                    active: active\n                });\n            }\n            function brushend() {\n                var hasActiveBrush = actives.length > 0 ? true : false;\n                filters.forEach(function (f) {\n                    if (f.extent[0] === y[f.dimension].brush.y().domain()[0] && axisWithUndefinedValues.indexOf(f.dimension) >= 0)\n                        f.hasNaN = true;\n                    if (f.extent[1] < y[f.dimension].domain()[0])\n                        f.hasOnlyNaN = true;\n                });\n                dispatch.brushEnd(active, hasActiveBrush);\n            }           \n            function updateTicks() {\n                dimensions.select('.nv-axis')\n                    .each(function (d, i) {\n                        var f = filters.filter(function (k) { return k.dimension == d.key; });\n                        currentTicks[d.key] = y[d.key].domain();\n                        \n                        //If brush are available, display brush extent\n                        if (f.length != 0 && displayBrush)\n                        {\n                            currentTicks[d.key] = [];\n                            if (f[0].extent[1] > y[d.key].domain()[0]) \n                                currentTicks[d.key] = [f[0].extent[1]];\n                            if (f[0].extent[0] >= y[d.key].domain()[0])\n                                currentTicks[d.key].push(f[0].extent[0]);    \n                        }\n                            \n                        d3.select(this).call(axis.scale(y[d.key]).tickFormat(d.format).tickValues(currentTicks[d.key]));\n                });\n            }\n            function dragStart(d) {\n                dragging[d.key] = this.parentNode.__origin__ = x(d.key);\n                background.attr(\"visibility\", \"hidden\");\n            }\n            function dragMove(d) {\n                dragging[d.key] = Math.min(availableWidth, Math.max(0, this.parentNode.__origin__ += d3.event.x));\n                foreground.attr(\"d\", path);\n                enabledDimensions.sort(function (a, b) { return dimensionPosition(a.key) - dimensionPosition(b.key); });\n                enabledDimensions.forEach(function (d, i) { return d.currentPosition = i; });\n                x.domain(enabledDimensions.map(function (d) { return d.key; }));\n                dimensions.attr(\"transform\", function(d) { return \"translate(\" + dimensionPosition(d.key) + \")\"; });\n            }\n            function dragEnd(d, i) {\n                delete this.parentNode.__origin__;\n                delete dragging[d.key];\n                d3.select(this.parentNode).attr(\"transform\", \"translate(\" + x(d.key) + \")\");\n                foreground\n                  .attr(\"d\", path);\n                background\n                  .attr(\"d\", path)\n                  .attr(\"visibility\", null);\n\n                dispatch.dimensionsOrder(enabledDimensions);\n            }\n            function dimensionPosition(d) {\n                var v = dragging[d];\n                return v == null ? x(d) : v;\n            }\n        });\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:         {get: function(){return width;},           set: function(_){width= _;}},\n        height:        {get: function(){return height;},          set: function(_){height= _;}},\n        dimensionData: { get: function () { return dimensionData; }, set: function (_) { dimensionData = _; } },\n        displayBrush: { get: function () { return displayBrush; }, set: function (_) { displayBrush = _; } },\n        filters: { get: function () { return filters; }, set: function (_) { filters = _; } },\n        active: { get: function () { return active; }, set: function (_) { active = _; } },\n        lineTension:   {get: function(){return lineTension;},     set: function(_){lineTension = _;}},\n        undefinedValuesLabel : {get: function(){return undefinedValuesLabel;}, set: function(_){undefinedValuesLabel=_;}},\n        \n        // deprecated options\n        dimensions: {get: function () { return dimensionData.map(function (d){return d.key}); }, set: function (_) {\n            // deprecated after 1.8.1\n            nv.deprecated('dimensions', 'use dimensionData instead');\n            if (dimensionData.length === 0) {\n                _.forEach(function (k) { dimensionData.push({ key: k }) })\n            } else {\n                _.forEach(function (k, i) { dimensionData[i].key= k })\n            }\n        }},\n        dimensionNames: {get: function () { return dimensionData.map(function (d){return d.key}); }, set: function (_) {\n            // deprecated after 1.8.1\n            nv.deprecated('dimensionNames', 'use dimensionData instead');\n            dimensionNames = [];\n            if (dimensionData.length === 0) {\n                _.forEach(function (k) { dimensionData.push({ key: k }) })\n            } else {\n                _.forEach(function (k, i) { dimensionData[i].key = k })\n            }\n \n        }},\n        dimensionFormats: {get: function () { return dimensionData.map(function (d) { return d.format }); }, set: function (_) {\n            // deprecated after 1.8.1\n            nv.deprecated('dimensionFormats', 'use dimensionData instead');\n            if (dimensionData.length === 0) {\n                _.forEach(function (f) { dimensionData.push({ format: f }) })\n            } else {\n                _.forEach(function (f, i) { dimensionData[i].format = f })\n            }\n\n        }},\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    =  _.top    !== undefined ? _.top    : margin.top;\n            margin.right  =  _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom =  _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   =  _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n    nv.utils.initOptions(chart);\n    return chart;\n};\nnv.models.parallelCoordinatesChart = function () {\n        \"use strict\";\n        //============================================================\n        // Public Variables with Default Settings\n        //------------------------------------------------------------\n\n        var parallelCoordinates = nv.models.parallelCoordinates()\n        var legend = nv.models.legend()\n        var tooltip = nv.models.tooltip();\n        var dimensionTooltip = nv.models.tooltip();\n\n        var margin = { top: 0, right: 0, bottom: 0, left: 0 }\n        , marginTop = null\n        , width = null\n        , height = null\n        , showLegend = true\n        , color = nv.utils.defaultColor()\n        , state = nv.utils.state()\n        , dimensionData = []\n        , displayBrush = true\n        , defaultState = null\n        , noData = null\n        , nanValue = \"undefined\"\n        , dispatch = d3.dispatch('dimensionsOrder', 'brushEnd', 'stateChange', 'changeState', 'renderEnd')\n        , controlWidth = function () { return showControls ? 180 : 0 }\n        ;\n\n\t    //============================================================\n\n\t\t//============================================================\n        // Private Variables\n        //------------------------------------------------------------\n\n        var renderWatch = nv.utils.renderWatch(dispatch);\n\n        var stateGetter = function(data) {\n            return function() {\n                return {\n                    active: data.map(function(d) { return !d.disabled })\n                };\n            }\n        };\n\n        var stateSetter = function(data) {\n            return function(state) {\n                if(state.active !== undefined) {\n                    data.forEach(function(series, i) {\n                        series.disabled = !state.active[i];\n                    });\n                }\n            }\n        };\n\n        tooltip.contentGenerator(function(data) {\n            var str = '<table><thead><tr><td class=\"legend-color-guide\"><div style=\"background-color:' + data.color + '\"></div></td><td><strong>' + data.key + '</strong></td></tr></thead>';\n            if(data.series.length !== 0)\n            {\n                str = str + '<tbody><tr><td height =\"10px\"></td></tr>';\n                data.series.forEach(function(d){\n                    str = str + '<tr><td class=\"legend-color-guide\"><div style=\"background-color:' + d.color + '\"></div></td><td class=\"key\">' + d.key + '</td><td class=\"value\">' + d.value + '</td></tr>';\n                });\n                str = str + '</tbody>';\n            }\n            str = str + '</table>';\n            return str;\n        });\n\n        //============================================================\n        // Chart function\n        //------------------------------------------------------------\n\n        function chart(selection) {\n            renderWatch.reset();\n            renderWatch.models(parallelCoordinates);\n\n            selection.each(function(data) {\n                var container = d3.select(this);\n                nv.utils.initSVG(container);\n\n                var that = this;\n\n                var availableWidth = nv.utils.availableWidth(width, container, margin),\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n\n                chart.update = function() { container.call(chart); };\n                chart.container = this;\n\n                state.setter(stateSetter(dimensionData), chart.update)\n                    .getter(stateGetter(dimensionData))\n                    .update();\n\n                //set state.disabled\n                state.disabled = dimensionData.map(function (d) { return !!d.disabled });\n\n                //Keep dimensions position in memory\n                dimensionData = dimensionData.map(function (d) {d.disabled = !!d.disabled; return d});\n                dimensionData.forEach(function (d, i) {\n                    d.originalPosition = isNaN(d.originalPosition) ? i : d.originalPosition;\n                    d.currentPosition = isNaN(d.currentPosition) ? i : d.currentPosition;\n                });\n\n               if (!defaultState) {\n                    var key;\n                    defaultState = {};\n                    for(key in state) {\n                        if(state[key] instanceof Array)\n                            defaultState[key] = state[key].slice(0);\n                        else\n                            defaultState[key] = state[key];\n                    }\n                }\n\n                // Display No Data message if there's nothing to show.\n                if(!data || !data.length) {\n                    nv.utils.noData(chart, container);\n                    return chart;\n                } else {\n                    container.selectAll('.nv-noData').remove();\n                }\n\n                //------------------------------------------------------------\n                // Setup containers and skeleton of chart\n\n                var wrap = container.selectAll('g.nv-wrap.nv-parallelCoordinatesChart').data([data]);\n                var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-parallelCoordinatesChart').append('g');\n\n                var g = wrap.select('g');\n\n                gEnter.append('g').attr('class', 'nv-parallelCoordinatesWrap');\n                gEnter.append('g').attr('class', 'nv-legendWrap');\n\n                g.select(\"rect\")\n                    .attr(\"width\", availableWidth)\n                    .attr(\"height\", (availableHeight > 0) ? availableHeight : 0);\n\n                // Legend\n                if (!showLegend) {\n                    g.select('.nv-legendWrap').selectAll('*').remove();\n                } else {\n                    legend.width(availableWidth)\n                        .color(function (d) { return \"rgb(188,190,192)\"; });\n\n                    g.select('.nv-legendWrap')\n                        .datum(dimensionData.sort(function (a, b) { return a.originalPosition - b.originalPosition; }))\n                        .call(legend);\n\n                    if (!marginTop && legend.height() !== margin.top) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin);\n                    }\n                    wrap.select('.nv-legendWrap')\n                       .attr('transform', 'translate( 0 ,' + (-margin.top) + ')');\n                }\n                wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n                // Main Chart Component(s)\n                parallelCoordinates\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .dimensionData(dimensionData)\n                    .displayBrush(displayBrush);\n\n\t\t        var parallelCoordinatesWrap = g.select('.nv-parallelCoordinatesWrap ')\n                  .datum(data);\n\n\t\t        parallelCoordinatesWrap.transition().call(parallelCoordinates);\n\n\t\t\t\t//============================================================\n                // Event Handling/Dispatching (in chart's scope)\n                //------------------------------------------------------------\n                //Display reset brush button\n\t\t        parallelCoordinates.dispatch.on('brushEnd', function (active, hasActiveBrush) {\n\t\t            if (hasActiveBrush) {\n\t\t                displayBrush = true;\n\t\t                dispatch.brushEnd(active);\n\t\t            } else {\n\n\t\t                displayBrush = false;\n\t\t            }\n\t\t        });\n\n\t\t        legend.dispatch.on('stateChange', function(newState) {\n\t\t            for(var key in newState) {\n\t\t                state[key] = newState[key];\n\t\t            }\n\t\t            dispatch.stateChange(state);\n\t\t            chart.update();\n\t\t        });\n\n                //Update dimensions order and display reset sorting button\n\t\t        parallelCoordinates.dispatch.on('dimensionsOrder', function (e) {\n\t\t            dimensionData.sort(function (a, b) { return a.currentPosition - b.currentPosition; });\n\t\t            var isSorted = false;\n\t\t            dimensionData.forEach(function (d, i) {\n\t\t                d.currentPosition = i;\n\t\t                if (d.currentPosition !== d.originalPosition)\n\t\t                    isSorted = true;\n\t\t            });\n\t\t            dispatch.dimensionsOrder(dimensionData, isSorted);\n\t\t        });\n\n\t\t\t\t// Update chart from a state object passed to event handler\n                dispatch.on('changeState', function (e) {\n\n                    if (typeof e.disabled !== 'undefined') {\n                        dimensionData.forEach(function (series, i) {\n                            series.disabled = e.disabled[i];\n                        });\n                        state.disabled = e.disabled;\n                    }\n                    chart.update();\n                });\n            });\n\n            renderWatch.renderEnd('parraleleCoordinateChart immediate');\n            return chart;\n        }\n\n\t\t//============================================================\n        // Event Handling/Dispatching (out of chart's scope)\n        //------------------------------------------------------------\n\n        parallelCoordinates.dispatch.on('elementMouseover.tooltip', function (evt) {\n            var tp = {\n                key: evt.label,\n                color: evt.color,\n                series: []\n             }\n            if(evt.values){\n                Object.keys(evt.values).forEach(function (d) {\n                    var dim = evt.dimensions.filter(function (dd) {return dd.key === d;})[0];\n                    if(dim){\n                        var v;\n                        if (isNaN(evt.values[d]) || isNaN(parseFloat(evt.values[d]))) {\n                            v = nanValue;\n                        } else {\n                            v = dim.format(evt.values[d]);\n                        }\n                        tp.series.push({ idx: dim.currentPosition, key: d, value: v, color: dim.color });\n                    }\n                });\n                tp.series.sort(function(a,b) {return a.idx - b.idx});\n             }\n            tooltip.data(tp).hidden(false);\n        });\n\n        parallelCoordinates.dispatch.on('elementMouseout.tooltip', function(evt) {\n            tooltip.hidden(true)\n        });\n\n        parallelCoordinates.dispatch.on('elementMousemove.tooltip', function () {\n            tooltip();\n        });\n\t\t //============================================================\n        // Expose Public Variables\n        //------------------------------------------------------------\n\n\t\t// expose chart's sub-components\n        chart.dispatch = dispatch;\n        chart.parallelCoordinates = parallelCoordinates;\n        chart.legend = legend;\n        chart.tooltip = tooltip;\n        chart.options = nv.utils.optionsFunc.bind(chart);\n\n        chart._options = Object.create({}, {\n            // simple options, just get/set the necessary values\n            width: { get: function () { return width; }, set: function (_) { width = _; } },\n            height: { get: function () { return height; }, set: function (_) { height = _; } },\n            showLegend: { get: function () { return showLegend; }, set: function (_) { showLegend = _; } },\n            defaultState: { get: function () { return defaultState; }, set: function (_) { defaultState = _; } },\n            dimensionData: { get: function () { return dimensionData; }, set: function (_) { dimensionData = _; } },\n            displayBrush: { get: function () { return displayBrush; }, set: function (_) { displayBrush = _; } },\n            noData: { get: function () { return noData; }, set: function (_) { noData = _; } },\n            nanValue: { get: function () { return nanValue; }, set: function (_) { nanValue = _; } },\n\n            // options that require extra logic in the setter\n            margin: {\n                get: function () { return margin; },\n                set: function (_) {\n                    if (_.top !== undefined) {\n                        margin.top = _.top;\n                        marginTop = _.top;\n                    }\n                    margin.right = _.right !== undefined ? _.right : margin.right;\n                    margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n                    margin.left = _.left !== undefined ? _.left : margin.left;\n                }\n            },\n            color: {get: function(){return color;}, set: function(_){\n                    color = nv.utils.getColor(_);\n                    legend.color(color);\n                    parallelCoordinates.color(color);\n                }}\n        });\n\n        nv.utils.inheritOptions(chart, parallelCoordinates);\n        nv.utils.initOptions(chart);\n\n        return chart;\n    };\nnv.models.pie = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 500\n        , height = 500\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , color = nv.utils.defaultColor()\n        , valueFormat = d3.format(',.2f')\n        , showLabels = true\n        , labelsOutside = false\n        , labelType = \"key\"\n        , labelThreshold = .02 //if slice percentage is under this, don't show label\n        , hideOverlapLabels = false //Hide labels that don't fit in slice\n        , donut = false\n        , title = false\n        , growOnHover = true\n        , titleOffset = 0\n        , labelSunbeamLayout = false\n        , startAngle = false\n        , padAngle = false\n        , endAngle = false\n        , cornerRadius = 0\n        , donutRatio = 0.5\n        , duration = 250\n        , arcsRadius = []\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')\n        ;\n\n    var arcs = [];\n    var arcsOver = [];\n\n    //============================================================\n    // chart function\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right\n                , availableHeight = height - margin.top - margin.bottom\n                , radius = Math.min(availableWidth, availableHeight) / 2\n                , arcsRadiusOuter = []\n                , arcsRadiusInner = []\n                ;\n\n            container = d3.select(this)\n            if (arcsRadius.length === 0) {\n                var outer = radius - radius / 10;\n                var inner = donutRatio * radius;\n                for (var i = 0; i < data[0].length; i++) {\n                    arcsRadiusOuter.push(outer);\n                    arcsRadiusInner.push(inner);\n                }\n            } else {\n                if(growOnHover){\n                    arcsRadiusOuter = arcsRadius.map(function (d) { return (d.outer - d.outer / 10) * radius; });\n                    arcsRadiusInner = arcsRadius.map(function (d) { return (d.inner - d.inner / 10) * radius; });\n                    donutRatio = d3.min(arcsRadius.map(function (d) { return (d.inner - d.inner / 10); }));\n                } else {\n                    arcsRadiusOuter = arcsRadius.map(function (d) { return d.outer * radius; });\n                    arcsRadiusInner = arcsRadius.map(function (d) { return d.inner * radius; });\n                    donutRatio = d3.min(arcsRadius.map(function (d) { return d.inner; }));\n                }\n            }\n            nv.utils.initSVG(container);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('.nv-wrap.nv-pie').data(data);\n            var wrapEnter = wrap.enter().append('g').attr('class','nvd3 nv-wrap nv-pie nv-chart-' + id);\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n            var g_pie = gEnter.append('g').attr('class', 'nv-pie');\n            gEnter.append('g').attr('class', 'nv-pieLabels');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n            g.select('.nv-pie').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');\n            g.select('.nv-pieLabels').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');\n\n            //\n            container.on('click', function(d,i) {\n                dispatch.chartClick({\n                    data: d,\n                    index: i,\n                    pos: d3.event,\n                    id: id\n                });\n            });\n\n            arcs = [];\n            arcsOver = [];\n            for (var i = 0; i < data[0].length; i++) {\n\n                var arc = d3.svg.arc().outerRadius(arcsRadiusOuter[i]);\n                var arcOver = d3.svg.arc().outerRadius(arcsRadiusOuter[i] + 5);\n\n                if (startAngle !== false) {\n                    arc.startAngle(startAngle);\n                    arcOver.startAngle(startAngle);\n                }\n                if (endAngle !== false) {\n                    arc.endAngle(endAngle);\n                    arcOver.endAngle(endAngle);\n                }\n                if (donut) {\n                    arc.innerRadius(arcsRadiusInner[i]);\n                    arcOver.innerRadius(arcsRadiusInner[i]);\n                }\n\n                if (arc.cornerRadius && cornerRadius) {\n                    arc.cornerRadius(cornerRadius);\n                    arcOver.cornerRadius(cornerRadius);\n                }\n\n                arcs.push(arc);\n                arcsOver.push(arcOver);\n            }\n\n            // Setup the Pie chart and choose the data element\n            var pie = d3.layout.pie()\n                .sort(null)\n                .value(function(d) { return d.disabled ? 0 : getY(d) });\n\n            // padAngle added in d3 3.5\n            if (pie.padAngle && padAngle) {\n                pie.padAngle(padAngle);\n            }\n\n            // if title is specified and donut, put it in the middle\n            if (donut && title) {\n                g_pie.append(\"text\").attr('class', 'nv-pie-title');\n\n                wrap.select('.nv-pie-title')\n                    .style(\"text-anchor\", \"middle\")\n                    .text(function (d) {\n                        return title;\n                    })\n                    .style(\"font-size\", (Math.min(availableWidth, availableHeight)) * donutRatio * 2 / (title.length + 2) + \"px\")\n                    .attr(\"dy\", \"0.35em\") // trick to vertically center text\n                    .attr('transform', function(d, i) {\n                        return 'translate(0, '+ titleOffset + ')';\n                    });\n            }\n\n            var slices = wrap.select('.nv-pie').selectAll('.nv-slice').data(pie);\n            var pieLabels = wrap.select('.nv-pieLabels').selectAll('.nv-label').data(pie);\n\n            slices.exit().remove();\n            pieLabels.exit().remove();\n\n            var ae = slices.enter().append('g');\n            ae.attr('class', 'nv-slice');\n            ae.on('mouseover', function(d, i) {\n                d3.select(this).classed('hover', true);\n                if (growOnHover) {\n                    d3.select(this).select(\"path\").transition()\n                        .duration(70)\n                        .attr(\"d\", arcsOver[i]);\n                }\n                dispatch.elementMouseover({\n                    data: d.data,\n                    index: i,\n                    color: d3.select(this).style(\"fill\"),\n                    percent: (d.endAngle - d.startAngle) / (2 * Math.PI)\n                });\n            });\n            ae.on('mouseout', function(d, i) {\n                d3.select(this).classed('hover', false);\n                if (growOnHover) {\n                    d3.select(this).select(\"path\").transition()\n                        .duration(50)\n                        .attr(\"d\", arcs[i]);\n                }\n                dispatch.elementMouseout({data: d.data, index: i});\n            });\n            ae.on('mousemove', function(d, i) {\n                dispatch.elementMousemove({data: d.data, index: i});\n            });\n            ae.on('click', function(d, i) {\n                var element = this;\n                dispatch.elementClick({\n                    data: d.data,\n                    index: i,\n                    color: d3.select(this).style(\"fill\"),\n                    event: d3.event,\n                    element: element\n                });\n            });\n            ae.on('dblclick', function(d, i) {\n                dispatch.elementDblClick({\n                    data: d.data,\n                    index: i,\n                    color: d3.select(this).style(\"fill\")\n                });\n            });\n\n            slices.attr('fill', function(d,i) { return color(d.data, i); });\n            slices.attr('stroke', function(d,i) { return color(d.data, i); });\n\n            var paths = ae.append('path').each(function(d) {\n                this._current = d;\n            });\n\n            slices.select('path')\n                .transition()\n                .duration(duration)\n                .attr('d', function (d, i) { return arcs[i](d); })\n                .attrTween('d', arcTween);\n\n            if (showLabels) {\n                // This does the normal label\n                var labelsArc = [];\n                for (var i = 0; i < data[0].length; i++) {\n                    labelsArc.push(arcs[i]);\n\n                    if (labelsOutside) {\n                        if (donut) {\n                            labelsArc[i] = d3.svg.arc().outerRadius(arcs[i].outerRadius());\n                            if (startAngle !== false) labelsArc[i].startAngle(startAngle);\n                            if (endAngle !== false) labelsArc[i].endAngle(endAngle);\n                        }\n                    } else if (!donut) {\n                            labelsArc[i].innerRadius(0);\n                    }\n                }\n\n                pieLabels.enter().append(\"g\").classed(\"nv-label\",true).each(function(d,i) {\n                    var group = d3.select(this);\n\n                    group.attr('transform', function (d, i) {\n                        if (labelSunbeamLayout) {\n                            d.outerRadius = arcsRadiusOuter[i] + 10; // Set Outer Coordinate\n                            d.innerRadius = arcsRadiusOuter[i] + 15; // Set Inner Coordinate\n                            var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);\n                            if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n                                rotateAngle -= 90;\n                            } else {\n                                rotateAngle += 90;\n                            }\n                            return 'translate(' + labelsArc[i].centroid(d) + ') rotate(' + rotateAngle + ')';\n                        } else {\n                            d.outerRadius = radius + 10; // Set Outer Coordinate\n                            d.innerRadius = radius + 15; // Set Inner Coordinate\n                            return 'translate(' + labelsArc[i].centroid(d) + ')'\n                        }\n                    });\n\n                    group.append('rect')\n                        .style('stroke', '#fff')\n                        .style('fill', '#fff')\n                        .attr(\"rx\", 3)\n                        .attr(\"ry\", 3);\n\n                    group.append('text')\n                        .style('text-anchor', labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle') //center the text on it's origin or begin/end if orthogonal aligned\n                        .style('fill', '#000')\n                });\n\n                var labelLocationHash = {};\n                var avgHeight = 14;\n                var avgWidth = 140;\n                var createHashKey = function(coordinates) {\n                    return Math.floor(coordinates[0]/avgWidth) * avgWidth + ',' + Math.floor(coordinates[1]/avgHeight) * avgHeight;\n                };\n                var getSlicePercentage = function(d) {\n                    return (d.endAngle - d.startAngle) / (2 * Math.PI);\n                };\n\n                pieLabels.watchTransition(renderWatch, 'pie labels').attr('transform', function (d, i) {\n                    if (labelSunbeamLayout) {\n                        d.outerRadius = arcsRadiusOuter[i] + 10; // Set Outer Coordinate\n                        d.innerRadius = arcsRadiusOuter[i] + 15; // Set Inner Coordinate\n                        var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);\n                        if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n                            rotateAngle -= 90;\n                        } else {\n                            rotateAngle += 90;\n                        }\n                        return 'translate(' + labelsArc[i].centroid(d) + ') rotate(' + rotateAngle + ')';\n                    } else {\n                        d.outerRadius = radius + 10; // Set Outer Coordinate\n                        d.innerRadius = radius + 15; // Set Inner Coordinate\n\n                        /*\n                        Overlapping pie labels are not good. What this attempts to do is, prevent overlapping.\n                        Each label location is hashed, and if a hash collision occurs, we assume an overlap.\n                        Adjust the label's y-position to remove the overlap.\n                        */\n                        var center = labelsArc[i].centroid(d);\n                        var percent = getSlicePercentage(d);\n                        if (d.value && percent >= labelThreshold) {\n                            var hashKey = createHashKey(center);\n                            if (labelLocationHash[hashKey]) {\n                                center[1] -= avgHeight;\n                            }\n                            labelLocationHash[createHashKey(center)] = true;\n                        }\n                        return 'translate(' + center + ')'\n                    }\n                });\n\n                pieLabels.select(\".nv-label text\")\n                    .style('text-anchor', function(d,i) {\n                        //center the text on it's origin or begin/end if orthogonal aligned\n                        return labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle';\n                    })\n                    .text(function(d, i) {\n                        var percent = getSlicePercentage(d);\n                        var label = '';\n                        if (!d.value || percent < labelThreshold) return '';\n\n                        if(typeof labelType === 'function') {\n                            label = labelType(d, i, {\n                                'key': getX(d.data),\n                                'value': getY(d.data),\n                                'percent': valueFormat(percent)\n                            });\n                        } else {\n                            switch (labelType) {\n                                case 'key':\n                                    label = getX(d.data);\n                                    break;\n                                case 'value':\n                                    label = valueFormat(getY(d.data));\n                                    break;\n                                case 'percent':\n                                    label = d3.format('%')(percent);\n                                    break;\n                            }\n                        }\n                        return label;\n                    })\n                ;\n\n                if (hideOverlapLabels) {\n                    pieLabels\n                        .each(function (d, i) {\n                            if (!this.getBBox) return;\n                            var bb = this.getBBox(),\n                            center = labelsArc[i].centroid(d);\n                            var topLeft = {\n                              x : center[0] + bb.x,\n                              y : center[1] + bb.y\n                            };\n\n                            var topRight = {\n                              x : topLeft.x + bb.width,\n                              y : topLeft.y\n                            };\n\n                            var bottomLeft = {\n                              x : topLeft.x,\n                              y : topLeft.y + bb.height\n                            };\n\n                            var bottomRight = {\n                              x : topLeft.x + bb.width,\n                              y : topLeft.y + bb.height\n                            };\n\n                            d.visible = nv.utils.pointIsInArc(topLeft, d, arc) &&\n                            nv.utils.pointIsInArc(topRight, d, arc) &&\n                            nv.utils.pointIsInArc(bottomLeft, d, arc) &&\n                            nv.utils.pointIsInArc(bottomRight, d, arc);\n                        })\n                        .style('display', function (d) {\n                            return d.visible ? null : 'none';\n                        })\n                    ;\n                }\n\n            }\n\n\n            // Computes the angle of an arc, converting from radians to degrees.\n            function angle(d) {\n                var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;\n                return a > 90 ? a - 180 : a;\n            }\n\n            function arcTween(a, idx) {\n                a.endAngle = isNaN(a.endAngle) ? 0 : a.endAngle;\n                a.startAngle = isNaN(a.startAngle) ? 0 : a.startAngle;\n                if (!donut) a.innerRadius = 0;\n                var i = d3.interpolate(this._current, a);\n                this._current = i(0);\n                return function (t) {\n                    return arcs[idx](i(t));\n                };\n            }\n        });\n\n        renderWatch.renderEnd('pie immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        arcsRadius: { get: function () { return arcsRadius; }, set: function (_) { arcsRadius = _; } },\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLabels: {get: function(){return showLabels;}, set: function(_){showLabels=_;}},\n        title:      {get: function(){return title;}, set: function(_){title=_;}},\n        titleOffset:    {get: function(){return titleOffset;}, set: function(_){titleOffset=_;}},\n        labelThreshold: {get: function(){return labelThreshold;}, set: function(_){labelThreshold=_;}},\n        hideOverlapLabels: {get: function(){return hideOverlapLabels;}, set: function(_){hideOverlapLabels=_;}},\n        valueFormat:    {get: function(){return valueFormat;}, set: function(_){valueFormat=_;}},\n        x:          {get: function(){return getX;}, set: function(_){getX=_;}},\n        id:         {get: function(){return id;}, set: function(_){id=_;}},\n        endAngle:   {get: function(){return endAngle;}, set: function(_){endAngle=_;}},\n        startAngle: {get: function(){return startAngle;}, set: function(_){startAngle=_;}},\n        padAngle:   {get: function(){return padAngle;}, set: function(_){padAngle=_;}},\n        cornerRadius: {get: function(){return cornerRadius;}, set: function(_){cornerRadius=_;}},\n        donutRatio:   {get: function(){return donutRatio;}, set: function(_){donutRatio=_;}},\n        labelsOutside: {get: function(){return labelsOutside;}, set: function(_){labelsOutside=_;}},\n        labelSunbeamLayout: {get: function(){return labelSunbeamLayout;}, set: function(_){labelSunbeamLayout=_;}},\n        donut:              {get: function(){return donut;}, set: function(_){donut=_;}},\n        growOnHover:        {get: function(){return growOnHover;}, set: function(_){growOnHover=_;}},\n\n        // depreciated after 1.7.1\n        pieLabelsOutside: {get: function(){return labelsOutside;}, set: function(_){\n            labelsOutside=_;\n            nv.deprecated('pieLabelsOutside', 'use labelsOutside instead');\n        }},\n        // depreciated after 1.7.1\n        donutLabelsOutside: {get: function(){return labelsOutside;}, set: function(_){\n            labelsOutside=_;\n            nv.deprecated('donutLabelsOutside', 'use labelsOutside instead');\n        }},\n        // deprecated after 1.7.1\n        labelFormat: {get: function(){ return valueFormat;}, set: function(_) {\n            valueFormat=_;\n            nv.deprecated('labelFormat','use valueFormat instead');\n        }},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;\n            margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;\n            margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;\n            margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }},\n        y: {get: function(){return getY;}, set: function(_){\n            getY=d3.functor(_);\n        }},\n        color: {get: function(){return color;}, set: function(_){\n            color=nv.utils.getColor(_);\n        }},\n        labelType:          {get: function(){return labelType;}, set: function(_){\n            labelType= _ || 'key';\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\nnv.models.pieChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var pie = nv.models.pie();\n    var legend = nv.models.legend();\n    var tooltip = nv.models.tooltip();\n\n    var margin = {top: 30, right: 20, bottom: 20, left: 20}\n        , marginTop = null\n        , width = null\n        , height = null\n        , showTooltipPercent = false\n        , showLegend = true\n        , legendPosition = \"top\"\n        , color = nv.utils.defaultColor()\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , duration = 250\n        , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd')\n        ;\n\n    tooltip\n        .duration(0)\n        .headerEnabled(false)\n        .valueFormatter(function(d, i) {\n            return pie.valueFormat()(d, i);\n        });\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled })\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.active !== undefined) {\n                data.forEach(function (series, i) {\n                    series.disabled = !state.active[i];\n                });\n            }\n        }\n    };\n\n    //============================================================\n    // Chart function\n    //------------------------------------------------------------\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(pie);\n\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            var that = this;\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() { container.transition().call(chart); };\n            chart.container = this;\n\n            state.setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            //set state.disabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length) {\n                nv.utils.noData(chart, container);\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-pieChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-pieChart').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-pieWrap');\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                if (legendPosition === \"top\") {\n                    legend.width( availableWidth ).key(pie.x());\n\n                    wrap.select('.nv-legendWrap')\n                        .datum(data)\n                        .call(legend);\n\n                    if (!marginTop && legend.height() !== margin.top) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin);\n                    }\n\n                    wrap.select('.nv-legendWrap')\n                        .attr('transform', 'translate(0,' + (-margin.top) +')');\n                } else if (legendPosition === \"right\") {\n                    var legendWidth = nv.models.legend().width();\n                    if (availableWidth / 2 < legendWidth) {\n                        legendWidth = (availableWidth / 2)\n                    }\n                    legend.height(availableHeight).key(pie.x());\n                    legend.width(legendWidth);\n                    availableWidth -= legend.width();\n\n                    wrap.select('.nv-legendWrap')\n                        .datum(data)\n                        .call(legend)\n                        .attr('transform', 'translate(' + (availableWidth) +',0)');\n                } else if (legendPosition === \"bottom\") {\n                    legend.width( availableWidth ).key(pie.x());\n                    wrap.select('.nv-legendWrap')\n                        .datum(data)\n                        .call(legend);\n\n                    margin.bottom = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                    wrap.select('.nv-legendWrap')\n                        .attr('transform', 'translate(0,' + availableHeight +')');\n                }\n            }\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Main Chart Component(s)\n            pie.width(availableWidth).height(availableHeight);\n            var pieWrap = g.select('.nv-pieWrap').datum([data]);\n            d3.transition(pieWrap).call(pie);\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState) {\n                    state[key] = newState[key];\n                }\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n                    state.disabled = e.disabled;\n                }\n                chart.update();\n            });\n        });\n\n        renderWatch.renderEnd('pieChart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    pie.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt['series'] = {\n            key: chart.x()(evt.data),\n            value: chart.y()(evt.data),\n            color: evt.color,\n            percent: evt.percent\n        };\n        if (!showTooltipPercent) {\n            delete evt.percent;\n            delete evt.series.percent;\n        }\n        tooltip.data(evt).hidden(false);\n    });\n\n    pie.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    pie.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.legend = legend;\n    chart.dispatch = dispatch;\n    chart.pie = pie;\n    chart.tooltip = tooltip;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    // use Object get/set functionality to map between vars and chart functions\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:              {get: function(){return width;},                set: function(_){width=_;}},\n        height:             {get: function(){return height;},               set: function(_){height=_;}},\n        noData:             {get: function(){return noData;},               set: function(_){noData=_;}},\n        showTooltipPercent: {get: function(){return showTooltipPercent;},   set: function(_){showTooltipPercent=_;}},\n        showLegend:         {get: function(){return showLegend;},           set: function(_){showLegend=_;}},\n        legendPosition:     {get: function(){return legendPosition;},       set: function(_){legendPosition=_;}},\n        defaultState:       {get: function(){return defaultState;},         set: function(_){defaultState=_;}},\n\n        // options that require extra logic in the setter\n        color: {get: function(){return color;}, set: function(_){\n            color = _;\n            legend.color(color);\n            pie.color(color);\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            pie.duration(duration);\n        }},\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }}\n    });\n    nv.utils.inheritOptions(chart, pie);\n    nv.utils.initOptions(chart);\n    return chart;\n};\nnv.models.sankey = function() {\n    'use strict';\n\n    // Sources:\n    // - https://bost.ocks.org/mike/sankey/\n    // - https://github.com/soxofaan/d3-plugin-captain-sankey\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var sankey = {},\n        nodeWidth = 24,\n        nodePadding = 8,\n        size = [1, 1],\n        nodes = [],\n        links = [],\n        sinksRight = true;\n\n    var layout = function(iterations) {\n        computeNodeLinks();\n        computeNodeValues();\n        computeNodeBreadths();\n        computeNodeDepths(iterations);\n    };\n\n    var relayout = function() {\n        computeLinkDepths();\n    };\n\n    // SVG path data generator, to be used as 'd' attribute on 'path' element selection.\n    var link = function() {\n        var curvature = .5;\n\n        function link(d) {\n\n            var x0 = d.source.x + d.source.dx,\n                x1 = d.target.x,\n                xi = d3.interpolateNumber(x0, x1),\n                x2 = xi(curvature),\n                x3 = xi(1 - curvature),\n                y0 = d.source.y + d.sy + d.dy / 2,\n                y1 = d.target.y + d.ty + d.dy / 2;\n            var linkPath = 'M' + x0 + ',' + y0\n                + 'C' + x2 + ',' + y0\n                + ' ' + x3 + ',' + y1\n                + ' ' + x1 + ',' + y1;\n            return linkPath;\n        }\n\n        link.curvature = function(_) {\n            if (!arguments.length) return curvature;\n            curvature = +_;\n            return link;\n        };\n\n        return link;\n    };\n\n    // Y-position of the middle of a node.\n    var center = function(node) {\n        return node.y + node.dy / 2;\n    };\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    // Populate the sourceLinks and targetLinks for each node.\n    // Also, if the source and target are not objects, assume they are indices.\n    function computeNodeLinks() {\n        nodes.forEach(function(node) {\n            // Links that have this node as source.\n            node.sourceLinks = [];\n            // Links that have this node as target.\n            node.targetLinks = [];\n        });\n        links.forEach(function(link) {\n            var source = link.source,\n                target = link.target;\n            if (typeof source === 'number') source = link.source = nodes[link.source];\n            if (typeof target === 'number') target = link.target = nodes[link.target];\n            source.sourceLinks.push(link);\n            target.targetLinks.push(link);\n        });\n    }\n\n    // Compute the value (size) of each node by summing the associated links.\n    function computeNodeValues() {\n        nodes.forEach(function(node) {\n            node.value = Math.max(\n                d3.sum(node.sourceLinks, value),\n                d3.sum(node.targetLinks, value)\n            );\n        });\n    }\n\n    // Iteratively assign the breadth (x-position) for each node.\n    // Nodes are assigned the maximum breadth of incoming neighbors plus one;\n    // nodes with no incoming links are assigned breadth zero, while\n    // nodes with no outgoing links are assigned the maximum breadth.\n    function computeNodeBreadths() {\n        //\n        var remainingNodes = nodes,\n            nextNodes,\n            x = 0;\n\n        // Work from left to right.\n        // Keep updating the breath (x-position) of nodes that are target of recently updated nodes.\n        //\n        while (remainingNodes.length && x < nodes.length) {\n            nextNodes = [];\n            remainingNodes.forEach(function(node) {\n                node.x = x;\n                node.dx = nodeWidth;\n                node.sourceLinks.forEach(function(link) {\n                    if (nextNodes.indexOf(link.target) < 0) {\n                        nextNodes.push(link.target);\n                    }\n                });\n            });\n            remainingNodes = nextNodes;\n            ++x;\n            //\n        }\n\n        // Optionally move pure sinks always to the right.\n        if (sinksRight) {\n            moveSinksRight(x);\n        }\n\n        scaleNodeBreadths((size[0] - nodeWidth) / (x - 1));\n    }\n\n    function moveSourcesRight() {\n        nodes.forEach(function(node) {\n            if (!node.targetLinks.length) {\n                node.x = d3.min(node.sourceLinks, function(d) { return d.target.x; }) - 1;\n            }\n        });\n    }\n\n    function moveSinksRight(x) {\n        nodes.forEach(function(node) {\n            if (!node.sourceLinks.length) {\n                node.x = x - 1;\n            }\n        });\n    }\n\n    function scaleNodeBreadths(kx) {\n        nodes.forEach(function(node) {\n            node.x *= kx;\n        });\n    }\n\n    // Compute the depth (y-position) for each node.\n    function computeNodeDepths(iterations) {\n        // Group nodes by breath.\n        var nodesByBreadth = d3.nest()\n            .key(function(d) { return d.x; })\n            .sortKeys(d3.ascending)\n            .entries(nodes)\n            .map(function(d) { return d.values; });\n\n        //\n        initializeNodeDepth();\n        resolveCollisions();\n        computeLinkDepths();\n        for (var alpha = 1; iterations > 0; --iterations) {\n            relaxRightToLeft(alpha *= .99);\n            resolveCollisions();\n            computeLinkDepths();\n            relaxLeftToRight(alpha);\n            resolveCollisions();\n            computeLinkDepths();\n        }\n\n        function initializeNodeDepth() {\n            // Calculate vertical scaling factor.\n            var ky = d3.min(nodesByBreadth, function(nodes) {\n                return (size[1] - (nodes.length - 1) * nodePadding) / d3.sum(nodes, value);\n            });\n\n            nodesByBreadth.forEach(function(nodes) {\n                nodes.forEach(function(node, i) {\n                    node.y = i;\n                    node.dy = node.value * ky;\n                });\n            });\n\n            links.forEach(function(link) {\n                link.dy = link.value * ky;\n            });\n        }\n\n        function relaxLeftToRight(alpha) {\n            nodesByBreadth.forEach(function(nodes, breadth) {\n                nodes.forEach(function(node) {\n                    if (node.targetLinks.length) {\n                        // Value-weighted average of the y-position of source node centers linked to this node.\n                        var y = d3.sum(node.targetLinks, weightedSource) / d3.sum(node.targetLinks, value);\n                        node.y += (y - center(node)) * alpha;\n                    }\n                });\n            });\n\n            function weightedSource(link) {\n                return (link.source.y + link.sy + link.dy / 2) * link.value;\n            }\n        }\n\n        function relaxRightToLeft(alpha) {\n            nodesByBreadth.slice().reverse().forEach(function(nodes) {\n                nodes.forEach(function(node) {\n                    if (node.sourceLinks.length) {\n                        // Value-weighted average of the y-positions of target nodes linked to this node.\n                        var y = d3.sum(node.sourceLinks, weightedTarget) / d3.sum(node.sourceLinks, value);\n                        node.y += (y - center(node)) * alpha;\n                    }\n                });\n            });\n\n            function weightedTarget(link) {\n                return (link.target.y + link.ty + link.dy / 2) * link.value;\n            }\n        }\n\n        function resolveCollisions() {\n            nodesByBreadth.forEach(function(nodes) {\n                var node,\n                    dy,\n                    y0 = 0,\n                    n = nodes.length,\n                    i;\n\n                // Push any overlapping nodes down.\n                nodes.sort(ascendingDepth);\n                for (i = 0; i < n; ++i) {\n                    node = nodes[i];\n                    dy = y0 - node.y;\n                    if (dy > 0) node.y += dy;\n                    y0 = node.y + node.dy + nodePadding;\n                }\n\n                // If the bottommost node goes outside the bounds, push it back up.\n                dy = y0 - nodePadding - size[1];\n                if (dy > 0) {\n                    y0 = node.y -= dy;\n\n                    // Push any overlapping nodes back up.\n                    for (i = n - 2; i >= 0; --i) {\n                        node = nodes[i];\n                        dy = node.y + node.dy + nodePadding - y0;\n                        if (dy > 0) node.y -= dy;\n                        y0 = node.y;\n                    }\n                }\n            });\n        }\n\n        function ascendingDepth(a, b) {\n            return a.y - b.y;\n        }\n    }\n\n    // Compute y-offset of the source endpoint (sy) and target endpoints (ty) of links,\n    // relative to the source/target node's y-position.\n    function computeLinkDepths() {\n        nodes.forEach(function(node) {\n            node.sourceLinks.sort(ascendingTargetDepth);\n            node.targetLinks.sort(ascendingSourceDepth);\n        });\n        nodes.forEach(function(node) {\n            var sy = 0, ty = 0;\n            node.sourceLinks.forEach(function(link) {\n                link.sy = sy;\n                sy += link.dy;\n            });\n            node.targetLinks.forEach(function(link) {\n                link.ty = ty;\n                ty += link.dy;\n            });\n        });\n\n        function ascendingSourceDepth(a, b) {\n            return a.source.y - b.source.y;\n        }\n\n        function ascendingTargetDepth(a, b) {\n            return a.target.y - b.target.y;\n        }\n    }\n\n    // Value property accessor.\n    function value(x) {\n        return x.value;\n    }\n\n    sankey.options = nv.utils.optionsFunc.bind(sankey);\n    sankey._options = Object.create({}, {\n        nodeWidth:    {get: function(){return nodeWidth;},   set: function(_){nodeWidth=+_;}},\n        nodePadding:  {get: function(){return nodePadding;}, set: function(_){nodePadding=_;}},\n        nodes:        {get: function(){return nodes;},       set: function(_){nodes=_;}},\n        links:        {get: function(){return links ;},      set: function(_){links=_;}},\n        size:         {get: function(){return size;},        set: function(_){size=_;}},\n        sinksRight:   {get: function(){return sinksRight;},  set: function(_){sinksRight=_;}},\n\n        layout:       {get: function(){layout(32);},         set: function(_){layout(_);}},\n        relayout:     {get: function(){relayout();},         set: function(_){}},\n        center:       {get: function(){return center();},    set: function(_){\n            if(typeof _ === 'function'){\n                center=_;\n            }\n        }},\n        link:         {get: function(){return link();},      set: function(_){\n            if(typeof _ === 'function'){\n                link=_;\n            }\n            return link();\n        }}\n    });\n\n    nv.utils.initOptions(sankey);\n\n    return sankey;\n};\nnv.models.sankeyChart = function() {\n    \"use strict\";\n\n    // Sources:\n    // - https://bost.ocks.org/mike/sankey/\n    // - https://github.com/soxofaan/d3-plugin-captain-sankey\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 5, right: 0, bottom: 5, left: 0}\n        , sankey = nv.models.sankey()\n        , width = 600\n        , height = 400\n        , nodeWidth = 36\n        , nodePadding =  40\n        , units = 'units'\n        , center = undefined\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var formatNumber = d3.format(',.0f');    // zero decimal places\n    var format = function(d) {\n        return formatNumber(d) + ' ' + units;\n    };\n    var color = d3.scale.category20();\n    var linkTitle = function(d){\n        return d.source.name + ' → ' + d.target.name + '\\n' + format(d.value);\n    };\n    var nodeFillColor = function(d){\n        return d.color = color(d.name.replace(/ .*/, ''));\n    };\n    var nodeStrokeColor = function(d){\n        return d3.rgb(d.color).darker(2);\n    };\n    var nodeTitle = function(d){\n        return d.name + '\\n' + format(d.value);\n    };\n\n    var showError = function(element, message) {\n        element.append('text')\n            .attr('x', 0)\n            .attr('y', 0)\n            .attr('class', 'nvd3-sankey-chart-error')\n            .attr('text-anchor', 'middle')\n            .text(message);\n    };\n\n    function chart(selection) {\n        selection.each(function(data) {\n\n            var testData = {\n                nodes:\n                    [\n                        {'node': 1, 'name': 'Test 1'},\n                        {'node': 2, 'name': 'Test 2'},\n                        {'node': 3, 'name': 'Test 3'},\n                        {'node': 4, 'name': 'Test 4'},\n                        {'node': 5, 'name': 'Test 5'},\n                        {'node': 6, 'name': 'Test 6'}\n                    ],\n                links:\n                    [\n                        {'source': 0, 'target': 1, 'value': 2295},\n                        {'source': 0, 'target': 5, 'value': 1199},\n                        {'source': 1, 'target': 2, 'value': 1119},\n                        {'source': 1, 'target': 5, 'value': 1176},\n                        {'source': 2, 'target': 3, 'value': 487},\n                        {'source': 2, 'target': 5, 'value': 632},\n                        {'source': 3, 'target': 4, 'value': 301},\n                        {'source': 3, 'target': 5, 'value': 186}\n                    ]\n            };\n\n            // Error handling\n            var isDataValid = false;\n            var dataAvailable = false;\n\n            // check if data is valid\n            if(\n                (typeof data['nodes'] === 'object' && data['nodes'].length) >= 0 &&\n                (typeof data['links'] === 'object' && data['links'].length) >= 0\n            ){\n                isDataValid = true;\n            }\n\n            // check if data is available\n            if(\n                data['nodes'] && data['nodes'].length > 0 &&\n                data['links'] && data['links'].length > 0\n            ) {\n                dataAvailable = true;\n            }\n\n            // show error\n            if(!isDataValid) {\n                console.error('NVD3 Sankey chart error:', 'invalid data format for', data);\n                console.info('Valid data format is: ', testData, JSON.stringify(testData));\n                showError(selection, 'Error loading chart, data is invalid');\n                return false;\n            }\n\n            // TODO use nv.utils.noData\n            if(!dataAvailable) {\n                showError(selection, 'No data available');\n                return false;\n            }\n\n            // No errors, continue\n\n            // append the svg canvas to the page\n            var svg = selection.append('svg')\n                .attr('width', width)\n                .attr('height', height)\n                .append('g')\n                .attr('class', 'nvd3 nv-wrap nv-sankeyChart');\n\n            // Set the sankey diagram properties\n            sankey\n                .nodeWidth(nodeWidth)\n                .nodePadding(nodePadding)\n                .size([width, height]);\n\n            var path = sankey.link();\n\n            sankey\n                .nodes(data.nodes)\n                .links(data.links)\n                .layout(32)\n                .center(center);\n\n            // add in the links\n            var link = svg.append('g').selectAll('.link')\n                .data(data.links)\n                .enter().append('path')\n                .attr('class', 'link')\n                .attr('d', path)\n                .style('stroke-width', function(d) { return Math.max(1, d.dy); })\n            .sort(function(a,b) { return b.dy - a.dy; });\n\n            // add the link titles\n            link.append('title')\n                .text(linkTitle);\n\n            // add in the nodes\n            var node = svg.append('g').selectAll('.node')\n                .data(data.nodes)\n                .enter().append('g')\n                .attr('class', 'node')\n                .attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; })\n                .call(\n                    d3.behavior\n                        .drag()\n                        .origin(function(d) { return d; })\n                        .on('dragstart', function() {\n                            this.parentNode.appendChild(this);\n                        })\n                        .on('drag', dragmove)\n                );\n\n            // add the rectangles for the nodes\n            node.append('rect')\n                .attr('height', function(d) { return d.dy; })\n                .attr('width', sankey.nodeWidth())\n                .style('fill', nodeFillColor)\n                .style('stroke', nodeStrokeColor)\n                .append('title')\n                .text(nodeTitle);\n\n            // add in the title for the nodes\n            node.append('text')\n                .attr('x', -6)\n                .attr('y', function(d) { return d.dy / 2; })\n                .attr('dy', '.35em')\n                .attr('text-anchor', 'end')\n                .attr('transform', null)\n                .text(function(d) { return d.name; })\n                .filter(function(d) { return d.x < width / 2; })\n                .attr('x', 6 + sankey.nodeWidth())\n                .attr('text-anchor', 'start');\n\n            // the function for moving the nodes\n            function dragmove(d) {\n                d3.select(this).attr('transform',\n                'translate(' + d.x + ',' + (\n                    d.y = Math.max(0, Math.min(height - d.dy, d3.event.y))\n                ) + ')');\n                sankey.relayout();\n                link.attr('d', path);\n            }\n        });\n\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        units:           {get: function(){return units;},       set: function(_){units=_;}},\n        width:           {get: function(){return width;},       set: function(_){width=_;}},\n        height:          {get: function(){return height;},      set: function(_){height=_;}},\n        format:          {get: function(){return format;},      set: function(_){format=_;}},\n        linkTitle:       {get: function(){return linkTitle;},   set: function(_){linkTitle=_;}},\n        nodeWidth:       {get: function(){return nodeWidth;},   set: function(_){nodeWidth=_;}},\n        nodePadding:     {get: function(){return nodePadding;}, set: function(_){nodePadding=_;}},\n        center:          {get: function(){return center},       set: function(_){center=_}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        nodeStyle: {get: function(){return {};}, set: function(_){\n            nodeFillColor   = _.fillColor   !== undefined ? _.fillColor   : nodeFillColor;\n            nodeStrokeColor = _.strokeColor !== undefined ? _.strokeColor : nodeStrokeColor;\n            nodeTitle       = _.title       !== undefined ? _.title       : nodeTitle;\n        }}\n\n    });\n\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.scatter = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin       = {top: 0, right: 0, bottom: 0, left: 0}\n        , width        = null\n        , height       = null\n        , color        = nv.utils.defaultColor() // chooses color\n        , pointBorderColor = null\n        , id           = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't select one\n        , container    = null\n        , x            = d3.scale.linear()\n        , y            = d3.scale.linear()\n        , z            = d3.scale.linear() //linear because d3.svg.shape.size is treated as area\n        , getX         = function(d) { return d.x } // accessor to get the x value\n        , getY         = function(d) { return d.y } // accessor to get the y value\n        , getSize      = function(d) { return d.size || 1} // accessor to get the point size\n        , getShape     = function(d) { return d.shape || 'circle' } // accessor to get point shape\n        , forceX       = [] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)\n        , forceY       = [] // List of numbers to Force into the Y scale\n        , forceSize    = [] // List of numbers to Force into the Size scale\n        , interactive  = true // If true, plots a voronoi overlay for advanced point intersection\n        , pointActive  = function(d) { return !d.notActive } // any points that return false will be filtered out\n        , padData      = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart\n        , padDataOuter = .1 //outerPadding to imitate ordinal scale outer padding\n        , clipEdge     = false // if true, masks points within x and y scale\n        , clipVoronoi  = true // if true, masks each point with a circle... can turn off to slightly increase performance\n        , showVoronoi  = false // display the voronoi areas\n        , clipRadius   = function() { return 25 } // function to get the radius for voronoi point clips\n        , xDomain      = null // Override x domain (skips the calculation from data)\n        , yDomain      = null // Override y domain\n        , xRange       = null // Override x range\n        , yRange       = null // Override y range\n        , sizeDomain   = null // Override point size domain\n        , sizeRange    = null\n        , singlePoint  = false\n        , dispatch     = d3.dispatch('elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout', 'renderEnd')\n        , useVoronoi   = true\n        , duration     = 250\n        , interactiveUpdateDelay = 300\n        , showLabels    = false\n        ;\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0, z0 // used to store previous scales\n        , xDom, yDom // used to store previous domains\n        , width0\n        , height0\n        , timeoutID\n        , needsUpdate = false // Flag for when the points are visually updating, but the interactive layer is behind, to disable tooltips\n        , renderWatch = nv.utils.renderWatch(dispatch, duration)\n        , _sizeRange_def = [16, 256]\n        , _cache = {}\n        ;\n\n    //============================================================\n    // Diff and Cache Utilities\n    //------------------------------------------------------------\n    // getDiffs is used to filter unchanged points from the update\n    // selection. It implicitly updates it's cache when called and\n    // therefor the diff is based upon the previous invocation NOT\n    // the previous update.\n    //\n    // getDiffs takes a point as its first argument followed by n\n    // key getter pairs (d, [key, get... key, get]) this approach\n    // was chosen for efficiency. (The filter will call it a LOT).\n    //\n    // It is important to call delCache on point exit to prevent a\n    // memory leak. It is also needed to prevent invalid caches if\n    // a new point uses the same series and point id key.\n    //\n    // Argument Performance Concerns:\n    // - Object property lists for key getter pairs would be very\n    // expensive (points * objects for the GC every update).\n    // - ES6 function names for implicit keys would be nice but\n    // they are not guaranteed to be unique.\n    // - function.toString to obtain implicit keys is possible\n    // but long object keys are not free (internal hash).\n    // - Explicit key without objects are the most efficient.\n\n    function getCache(d) {\n        var key, val;\n        key = d[0].series + ':' + d[1];\n        val = _cache[key] = _cache[key] || {};\n        return val;\n    }\n\n    function delCache(d) {\n        var key, val;\n        key = d[0].series + ':' + d[1];\n        delete _cache[key];\n    }\n\n    function getDiffs(d) {\n        var i, key, val,\n            cache = getCache(d),\n            diffs = false;\n        for (i = 1; i < arguments.length; i += 2) {\n            key = arguments[i];\n            val = arguments[i + 1](d[0], d[1]);\n            if (cache[key] !== val || !cache.hasOwnProperty(key)) {\n                cache[key] = val;\n                diffs = true;\n            }\n        }\n        return diffs;\n    }\n\n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            container = d3.select(this);\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            nv.utils.initSVG(container);\n\n            //add series index to each data point for reference\n            data.forEach(function(series, i) {\n                series.values.forEach(function(point) {\n                    point.series = i;\n                });\n            });\n\n            // Setup Scales\n            var logScale = (typeof(chart.yScale().base) === \"function\"); // Only log scale has a method \"base()\"\n            // remap and flatten the data for use in calculating the scales' domains\n            var seriesData = (xDomain && yDomain && sizeDomain) ? [] : // if we know xDomain and yDomain and sizeDomain, no need to calculate.... if Size is constant remember to set sizeDomain to speed up performance\n                d3.merge(\n                    data.map(function(d) {\n                        return d.values.map(function(d,i) {\n                            return { x: getX(d,i), y: getY(d,i), size: getSize(d,i) }\n                        })\n                    })\n                );\n\n            x   .domain(xDomain || d3.extent(seriesData.map(function(d) { return d.x; }).concat(forceX)))\n\n            if (padData && data[0])\n                x.range(xRange || [(availableWidth * padDataOuter +  availableWidth) / (2 *data[0].values.length), availableWidth - availableWidth * (1 + padDataOuter) / (2 * data[0].values.length)  ]);\n            //x.range([availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);\n            else\n                x.range(xRange || [0, availableWidth]);\n\n             if (logScale) {\n                    var min = d3.min(seriesData.map(function(d) { if (d.y !== 0) return d.y; }));\n                    y.clamp(true)\n                        .domain(yDomain || d3.extent(seriesData.map(function(d) {\n                            if (d.y !== 0) return d.y;\n                            else return min * 0.1;\n                        }).concat(forceY)))\n                        .range(yRange || [availableHeight, 0]);\n                } else {\n                        y.domain(yDomain || d3.extent(seriesData.map(function (d) { return d.y;}).concat(forceY)))\n                        .range(yRange || [availableHeight, 0]);\n                }\n\n            z   .domain(sizeDomain || d3.extent(seriesData.map(function(d) { return d.size }).concat(forceSize)))\n                .range(sizeRange || _sizeRange_def);\n\n            // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point\n            singlePoint = x.domain()[0] === x.domain()[1] || y.domain()[0] === y.domain()[1];\n\n            if (x.domain()[0] === x.domain()[1])\n                x.domain()[0] ?\n                    x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])\n                    : x.domain([-1,1]);\n\n            if (y.domain()[0] === y.domain()[1])\n                y.domain()[0] ?\n                    y.domain([y.domain()[0] - y.domain()[0] * 0.01, y.domain()[1] + y.domain()[1] * 0.01])\n                    : y.domain([-1,1]);\n\n            if ( isNaN(x.domain()[0])) {\n                x.domain([-1,1]);\n            }\n\n            if ( isNaN(y.domain()[0])) {\n                y.domain([-1,1]);\n            }\n\n            x0 = x0 || x;\n            y0 = y0 || y;\n            z0 = z0 || z;\n\n            var scaleDiff = x(1) !== x0(1) || y(1) !== y0(1) || z(1) !== z0(1);\n\n            width0 = width0 || width;\n            height0 = height0 || height;\n\n            var sizeDiff = width0 !== width || height0 !== height;\n\n            // Domain Diffs\n\n            xDom = xDom || [];\n            var domainDiff = xDom[0] !== x.domain()[0] || xDom[1] !== x.domain()[1];\n            xDom = x.domain();\n\n            yDom = yDom || [];\n            domainDiff = domainDiff || yDom[0] !== y.domain()[0] || yDom[1] !== y.domain()[1];\n            yDom = y.domain();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-scatter').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatter nv-chart-' + id);\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            wrap.classed('nv-single-point', singlePoint);\n            gEnter.append('g').attr('class', 'nv-groups');\n            gEnter.append('g').attr('class', 'nv-point-paths');\n            wrapEnter.append('g').attr('class', 'nv-point-clips');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-edge-clip-' + id)\n                .append('rect')\n                .attr('transform', 'translate( -10, -10)');\n\n            wrap.select('#nv-edge-clip-' + id + ' rect')\n                .attr('width', availableWidth + 20)\n                .attr('height', (availableHeight > 0) ? availableHeight + 20 : 0);\n\n            g.attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');\n\n            function updateInteractiveLayer() {\n                // Always clear needs-update flag regardless of whether or not\n                // we will actually do anything (avoids needless invocations).\n                needsUpdate = false;\n\n                if (!interactive) return false;\n\n                // inject series and point index for reference into voronoi\n                if (useVoronoi === true) {\n\n                    // nuke all voronoi paths on reload and recreate them\n                    wrap.select('.nv-point-paths').selectAll('path').remove();\n\n                    var vertices = d3.merge(data.map(function(group, groupIndex) {\n                            return group.values\n                                .map(function(point, pointIndex) {\n                                    // *Adding noise to make duplicates very unlikely\n                                    // *Injecting series and point index for reference\n                                    // *Adding a 'jitter' to the points, because there's an issue in d3.geom.voronoi.\n                                    var pX = getX(point,pointIndex);\n                                    var pY = getY(point,pointIndex);\n\n                                    return [nv.utils.NaNtoZero(x(pX)) + Math.random() * 1e-4,\n                                            nv.utils.NaNtoZero(y(pY)) + Math.random() * 1e-4,\n                                        groupIndex,\n                                        pointIndex, point];\n                                })\n                                .filter(function(pointArray, pointIndex) {\n                                    return pointActive(pointArray[4], pointIndex); // Issue #237.. move filter to after map, so pointIndex is correct!\n                                })\n                        })\n                    );\n\n                    if (vertices.length == 0) return false;  // No active points, we're done\n                    if (vertices.length < 3) {\n                        // Issue #283 - Adding 2 dummy points to the voronoi b/c voronoi requires min 3 points to work\n                        vertices.push([x.range()[0] - 20, y.range()[0] - 20, null, null]);\n                        vertices.push([x.range()[1] + 20, y.range()[1] + 20, null, null]);\n                        vertices.push([x.range()[0] - 20, y.range()[0] + 20, null, null]);\n                        vertices.push([x.range()[1] + 20, y.range()[1] - 20, null, null]);\n                    }\n\n                    // keep voronoi sections from going more than 10 outside of graph\n                    // to avoid overlap with other things like legend etc\n                    var bounds = d3.geom.polygon([\n                        [-10,-10],\n                        [-10,height + 10],\n                        [width + 10,height + 10],\n                        [width + 10,-10]\n                    ]);\n\n                    // delete duplicates from vertices - essential assumption for d3.geom.voronoi\n                    var epsilon = 1e-4; // Uses 1e-4 to determine equivalence.\n                    vertices = vertices.sort(function(a,b){return ((a[0] - b[0]) || (a[1] - b[1]))});\n                    for (var i = 0; i < vertices.length - 1; ) {\n                        if ((Math.abs(vertices[i][0] - vertices[i+1][0]) < epsilon) &&\n                        (Math.abs(vertices[i][1] - vertices[i+1][1]) < epsilon)) {\n                            vertices.splice(i+1, 1);\n                        } else {\n                            i++;\n                        }\n                    }\n\n                    var voronoi = d3.geom.voronoi(vertices).map(function(d, i) {\n                        return {\n                            'data': bounds.clip(d),\n                            'series': vertices[i][2],\n                            'point': vertices[i][3]\n                        }\n                    });\n\n                    var pointPaths = wrap.select('.nv-point-paths').selectAll('path').data(voronoi);\n                    var vPointPaths = pointPaths\n                        .enter().append(\"svg:path\")\n                        .attr(\"d\", function(d) {\n                            if (!d || !d.data || d.data.length === 0)\n                                return 'M 0 0';\n                            else\n                                return \"M\" + d.data.join(\",\") + \"Z\";\n                        })\n                        .attr(\"id\", function(d,i) {\n                            return \"nv-path-\"+i; })\n                        .attr(\"clip-path\", function(d,i) { return \"url(#nv-clip-\"+id+\"-\"+i+\")\"; })\n                        ;\n\n                    // good for debugging point hover issues\n                    if (showVoronoi) {\n                        vPointPaths.style(\"fill\", d3.rgb(230, 230, 230))\n                            .style('fill-opacity', 0.4)\n                            .style('stroke-opacity', 1)\n                            .style(\"stroke\", d3.rgb(200,200,200));\n                    }\n\n                    if (clipVoronoi) {\n                        // voronoi sections are already set to clip,\n                        // just create the circles with the IDs they expect\n                        wrap.select('.nv-point-clips').selectAll('*').remove(); // must do * since it has sub-dom\n                        var pointClips = wrap.select('.nv-point-clips').selectAll('clipPath').data(vertices);\n                        var vPointClips = pointClips\n                            .enter().append(\"svg:clipPath\")\n                            .attr(\"id\", function(d, i) { return \"nv-clip-\"+id+\"-\"+i;})\n                            .append(\"svg:circle\")\n                            .attr('cx', function(d) { return d[0]; })\n                            .attr('cy', function(d) { return d[1]; })\n                            .attr('r', clipRadius);\n                    }\n\n                    var mouseEventCallback = function(el, d, mDispatch) {\n                        if (needsUpdate) return 0;\n                        var series = data[d.series];\n                        if (series === undefined) return;\n                        var point  = series.values[d.point];\n                        point['color'] = color(series, d.series);\n\n                        // standardize attributes for tooltip.\n                        point['x'] = getX(point);\n                        point['y'] = getY(point);\n\n                        // can't just get box of event node since it's actually a voronoi polygon\n                        var box = container.node().getBoundingClientRect();\n                        var scrollTop  = window.pageYOffset || document.documentElement.scrollTop;\n                        var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n\n                        var pos = {\n                            left: x(getX(point, d.point)) + box.left + scrollLeft + margin.left + 10,\n                            top: y(getY(point, d.point)) + box.top + scrollTop + margin.top + 10\n                        };\n\n                        mDispatch({\n                            point: point,\n                            series: series,\n                            pos: pos,\n                            relativePos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],\n                            seriesIndex: d.series,\n                            pointIndex: d.point,\n                            event: d3.event,\n                            element: el\n                        });\n                    };\n\n                    pointPaths\n                        .on('click', function(d) {\n                            mouseEventCallback(this, d, dispatch.elementClick);\n                        })\n                        .on('dblclick', function(d) {\n                            mouseEventCallback(this, d, dispatch.elementDblClick);\n                        })\n                        .on('mouseover', function(d) {\n                            mouseEventCallback(this, d, dispatch.elementMouseover);\n                        })\n                        .on('mouseout', function(d, i) {\n                            mouseEventCallback(this, d, dispatch.elementMouseout);\n                        });\n\n                } else {\n                    // add event handlers to points instead voronoi paths\n                    wrap.select('.nv-groups').selectAll('.nv-group')\n                        .selectAll('.nv-point')\n                        //.data(dataWithPoints)\n                        //.style('pointer-events', 'auto') // recativate events, disabled by css\n                        .on('click', function(d,i) {\n                            //nv.log('test', d, i);\n                            if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point\n                            var series = data[d.series],\n                                point  = series.values[i];\n                            var element = this;\n                            dispatch.elementClick({\n                                point: point,\n                                series: series,\n                                pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top], //TODO: make this pos base on the page\n                                relativePos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],\n                                seriesIndex: d.series,\n                                pointIndex: i,\n                                event: d3.event,\n                                element: element\n                            });\n                        })\n                        .on('dblclick', function(d,i) {\n                            if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point\n                            var series = data[d.series],\n                                point  = series.values[i];\n\n                            dispatch.elementDblClick({\n                                point: point,\n                                series: series,\n                                pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],//TODO: make this pos base on the page\n                                relativePos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],\n                                seriesIndex: d.series,\n                                pointIndex: i\n                            });\n                        })\n                        .on('mouseover', function(d,i) {\n                            if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point\n                            var series = data[d.series],\n                                point  = series.values[i];\n\n                            dispatch.elementMouseover({\n                                point: point,\n                                series: series,\n                                pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],//TODO: make this pos base on the page\n                                relativePos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],\n                                seriesIndex: d.series,\n                                pointIndex: i,\n                                color: color(d, i)\n                            });\n                        })\n                        .on('mouseout', function(d,i) {\n                            if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point\n                            var series = data[d.series],\n                                point  = series.values[i];\n\n                            dispatch.elementMouseout({\n                                point: point,\n                                series: series,\n                                pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],//TODO: make this pos base on the page\n                                relativePos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],\n                                seriesIndex: d.series,\n                                pointIndex: i,\n                                color: color(d, i)\n                            });\n                        });\n                }\n            }\n\n            needsUpdate = true;\n            var groups = wrap.select('.nv-groups').selectAll('.nv-group')\n                .data(function(d) { return d }, function(d) { return d.key });\n            groups.enter().append('g')\n                .style('stroke-opacity', 1e-6)\n                .style('fill-opacity', 1e-6);\n            groups.exit()\n                .remove();\n            groups\n                .attr('class', function(d,i) {\n                    return (d.classed || '') + ' nv-group nv-series-' + i;\n                })\n                .classed('nv-noninteractive', !interactive)\n                .classed('hover', function(d) { return d.hover });\n            groups.watchTransition(renderWatch, 'scatter: groups')\n                .style('fill', function(d,i) { return color(d, i) })\n                .style('stroke', function(d,i) { return d.pointBorderColor || pointBorderColor || color(d, i) })\n                .style('stroke-opacity', 1)\n                .style('fill-opacity', .5);\n\n            // create the points, maintaining their IDs from the original data set\n            var points = groups.selectAll('path.nv-point')\n                .data(function(d) {\n                    return d.values.map(\n                        function (point, pointIndex) {\n                            return [point, pointIndex]\n                        }).filter(\n                            function(pointArray, pointIndex) {\n                                return pointActive(pointArray[0], pointIndex)\n                            })\n                    });\n            points.enter().append('path')\n                .attr('class', function (d) {\n                    return 'nv-point nv-point-' + d[1];\n                })\n                .style('fill', function (d) { return d.color })\n                .style('stroke', function (d) { return d.color })\n                .attr('transform', function(d) {\n                    return 'translate(' + nv.utils.NaNtoZero(x0(getX(d[0],d[1]))) + ',' + nv.utils.NaNtoZero(y0(getY(d[0],d[1]))) + ')'\n                })\n                .attr('d',\n                    nv.utils.symbol()\n                    .type(function(d) { return getShape(d[0]); })\n                    .size(function(d) { return z(getSize(d[0],d[1])) })\n            );\n            points.exit().each(delCache).remove();\n            groups.exit().selectAll('path.nv-point')\n                .watchTransition(renderWatch, 'scatter exit')\n                .attr('transform', function(d) {\n                    return 'translate(' + nv.utils.NaNtoZero(x(getX(d[0],d[1]))) + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')'\n                })\n                .remove();\n\n            //============================================================\n            // Point Update Optimisation Notes\n            //------------------------------------------------------------\n            // The following update selections are filtered with getDiffs\n            // (defined at the top of this file) this brings a performance\n            // benefit for charts with large data sets that accumulate a\n            // subset of changes or additions over time.\n            //\n            // Uneccesary and expensive DOM calls are avoided by culling\n            // unchanged points from the selection in exchange for the\n            // cheaper overhead of caching and diffing each point first.\n            //\n            // Due to the way D3 and NVD3 work, other global changes need\n            // to be considered in addition to local point properties.\n            // This is a potential source of bugs (if any of the global\n            // changes that possibly affect points are missed).\n\n            // Update Point Positions [x, y]\n            points.filter(function (d) {\n                // getDiffs must always be called to update cache\n                return getDiffs(d, 'x', getX, 'y', getY) ||\n                    scaleDiff || sizeDiff || domainDiff;\n            })\n            .watchTransition(renderWatch, 'scatter points')\n            .attr('transform', function (d) {\n                return 'translate(' +\n                    nv.utils.NaNtoZero(x(getX(d[0], d[1]))) + ',' +\n                    nv.utils.NaNtoZero(y(getY(d[0], d[1]))) + ')'\n            });\n\n            // Update Point Appearance [shape, size]\n            points.filter(function (d) {\n                // getDiffs must always be called to update cache\n                return getDiffs(d, 'shape', getShape, 'size', getSize) ||\n                    scaleDiff || sizeDiff || domainDiff;\n            })\n            .watchTransition(renderWatch, 'scatter points')\n            .attr('d', nv.utils.symbol()\n                .type(function (d) { return getShape(d[0]) })\n                .size(function (d) { return z(getSize(d[0], d[1])) })\n            );\n\n            // add label a label to scatter chart\n            if(showLabels)\n            {\n                var titles =  groups.selectAll('.nv-label')\n                    .data(function(d) {\n                        return d.values.map(\n                            function (point, pointIndex) {\n                                return [point, pointIndex]\n                            }).filter(\n                                function(pointArray, pointIndex) {\n                                    return pointActive(pointArray[0], pointIndex)\n                                })\n                        });\n\n                titles.enter().append('text')\n                    .style('fill', function (d,i) {\n                        return d.color })\n                    .style('stroke-opacity', 0)\n                    .style('fill-opacity', 1)\n                    .attr('transform', function(d) {\n                        var dx = nv.utils.NaNtoZero(x0(getX(d[0],d[1]))) + Math.sqrt(z(getSize(d[0],d[1]))/Math.PI) + 2;\n                        return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y0(getY(d[0],d[1]))) + ')';\n                    })\n                    .text(function(d,i){\n                        return d[0].label;});\n\n                titles.exit().remove();\n                groups.exit().selectAll('path.nv-label')\n                    .watchTransition(renderWatch, 'scatter exit')\n                    .attr('transform', function(d) {\n                        var dx = nv.utils.NaNtoZero(x(getX(d[0],d[1])))+ Math.sqrt(z(getSize(d[0],d[1]))/Math.PI)+2;\n                        return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')';\n                    })\n                    .remove();\n               titles.each(function(d) {\n                  d3.select(this)\n                    .classed('nv-label', true)\n                    .classed('nv-label-' + d[1], false)\n                    .classed('hover',false);\n                });\n                titles.watchTransition(renderWatch, 'scatter labels')\n                    .attr('transform', function(d) {\n                        var dx = nv.utils.NaNtoZero(x(getX(d[0],d[1])))+ Math.sqrt(z(getSize(d[0],d[1]))/Math.PI)+2;\n                        return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')'\n                    });\n            }\n\n            // Delay updating the invisible interactive layer for smoother animation\n            if( interactiveUpdateDelay )\n            {\n                clearTimeout(timeoutID); // stop repeat calls to updateInteractiveLayer\n                timeoutID = setTimeout(updateInteractiveLayer, interactiveUpdateDelay );\n            }\n            else\n            {\n                updateInteractiveLayer();\n            }\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n            z0 = z.copy();\n\n            width0 = width;\n            height0 = height;\n\n        });\n        renderWatch.renderEnd('scatter immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    // utility function calls provided by this chart\n    chart._calls = new function() {\n        this.clearHighlights = function () {\n            nv.dom.write(function() {\n                container.selectAll(\".nv-point.hover\").classed(\"hover\", false);\n            });\n            return null;\n        };\n        this.highlightPoint = function (seriesIndex, pointIndex, isHoverOver) {\n            nv.dom.write(function() {\n                container.select('.nv-groups')\n                  .selectAll(\".nv-series-\" + seriesIndex)\n                  .selectAll(\".nv-point-\" + pointIndex)\n                  .classed(\"hover\", isHoverOver);\n            });\n        };\n    };\n\n    // trigger calls from events too\n    dispatch.on('elementMouseover.point', function(d) {\n        if (interactive) chart._calls.highlightPoint(d.seriesIndex,d.pointIndex,true);\n    });\n\n    dispatch.on('elementMouseout.point', function(d) {\n        if (interactive) chart._calls.highlightPoint(d.seriesIndex,d.pointIndex,false);\n    });\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:        {get: function(){return width;}, set: function(_){width=_;}},\n        height:       {get: function(){return height;}, set: function(_){height=_;}},\n        xScale:       {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:       {get: function(){return y;}, set: function(_){y=_;}},\n        pointScale:   {get: function(){return z;}, set: function(_){z=_;}},\n        xDomain:      {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain:      {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        pointDomain:  {get: function(){return sizeDomain;}, set: function(_){sizeDomain=_;}},\n        xRange:       {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:       {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        pointRange:   {get: function(){return sizeRange;}, set: function(_){sizeRange=_;}},\n        forceX:       {get: function(){return forceX;}, set: function(_){forceX=_;}},\n        forceY:       {get: function(){return forceY;}, set: function(_){forceY=_;}},\n        forcePoint:   {get: function(){return forceSize;}, set: function(_){forceSize=_;}},\n        interactive:  {get: function(){return interactive;}, set: function(_){interactive=_;}},\n        pointActive:  {get: function(){return pointActive;}, set: function(_){pointActive=_;}},\n        padDataOuter: {get: function(){return padDataOuter;}, set: function(_){padDataOuter=_;}},\n        padData:      {get: function(){return padData;}, set: function(_){padData=_;}},\n        clipEdge:     {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        clipVoronoi:  {get: function(){return clipVoronoi;}, set: function(_){clipVoronoi=_;}},\n        clipRadius:   {get: function(){return clipRadius;}, set: function(_){clipRadius=_;}},\n        showVoronoi:   {get: function(){return showVoronoi;}, set: function(_){showVoronoi=_;}},\n        id:           {get: function(){return id;}, set: function(_){id=_;}},\n        interactiveUpdateDelay: {get:function(){return interactiveUpdateDelay;}, set: function(_){interactiveUpdateDelay=_;}},\n        showLabels: {get: function(){return showLabels;}, set: function(_){ showLabels = _;}},\n        pointBorderColor: {get: function(){return pointBorderColor;}, set: function(_){pointBorderColor=_;}},\n\n        // simple functor options\n        x:     {get: function(){return getX;}, set: function(_){getX = d3.functor(_);}},\n        y:     {get: function(){return getY;}, set: function(_){getY = d3.functor(_);}},\n        pointSize: {get: function(){return getSize;}, set: function(_){getSize = d3.functor(_);}},\n        pointShape: {get: function(){return getShape;}, set: function(_){getShape = d3.functor(_);}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n        }},\n        color: {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        useVoronoi: {get: function(){return useVoronoi;}, set: function(_){\n            useVoronoi = _;\n            if (useVoronoi === false) {\n                clipVoronoi = false;\n            }\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\n\nnv.models.scatterChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var scatter      = nv.models.scatter()\n        , xAxis        = nv.models.axis()\n        , yAxis        = nv.models.axis()\n        , legend       = nv.models.legend()\n        , distX        = nv.models.distribution()\n        , distY        = nv.models.distribution()\n        , tooltip      = nv.models.tooltip()\n        ;\n\n    var margin       = {top: 30, right: 20, bottom: 50, left: 75}\n        , marginTop = null\n        , width        = null\n        , height       = null\n        , container    = null\n        , color        = nv.utils.defaultColor()\n        , x            = scatter.xScale()\n        , y            = scatter.yScale()\n        , showDistX    = false\n        , showDistY    = false\n        , showLegend   = true\n        , showXAxis    = true\n        , showYAxis    = true\n        , rightAlignYAxis = false\n        , state = nv.utils.state()\n        , defaultState = null\n        , dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd')\n        , noData       = null\n        , duration = 250\n        , showLabels    = false\n        ;\n\n    scatter.xScale(x).yScale(y);\n    xAxis.orient('bottom').tickPadding(10);\n    yAxis\n        .orient((rightAlignYAxis) ? 'right' : 'left')\n        .tickPadding(10)\n    ;\n    distX.axis('x');\n    distY.axis('y');\n    tooltip\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        })\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        });\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var x0, y0\n        , renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled })\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(scatter);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n        if (showDistX) renderWatch.models(distX);\n        if (showDistY) renderWatch.models(distY);\n\n        selection.each(function(data) {\n            var that = this;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() {\n                if (duration === 0)\n                    container.call(chart);\n                else\n                    container.transition().duration(duration).call(chart);\n            };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disableddisabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display noData message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container);\n                renderWatch.renderEnd('scatter immediate');\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            // Setup Scales\n            x = scatter.xScale();\n            y = scatter.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id());\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            // background for pointer events\n            gEnter.append('rect').attr('class', 'nvd3 nv-background').style(\"pointer-events\",\"none\");\n\n            gEnter.append('g').attr('class', 'nv-x nv-axis');\n            gEnter.append('g').attr('class', 'nv-y nv-axis');\n            gEnter.append('g').attr('class', 'nv-scatterWrap');\n            gEnter.append('g').attr('class', 'nv-regressionLinesWrap');\n            gEnter.append('g').attr('class', 'nv-distWrap');\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                var legendWidth = availableWidth;\n                legend.width(legendWidth);\n\n                wrap.select('.nv-legendWrap')\n                    .datum(data)\n                    .call(legend);\n\n                if (!marginTop && legend.height() !== margin.top) {\n                    margin.top = legend.height();\n                    availableHeight = nv.utils.availableHeight(height, container, margin);\n                }\n\n                wrap.select('.nv-legendWrap')\n                    .attr('transform', 'translate(0' + ',' + (-margin.top) +')');\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Main Chart Component(s)\n            scatter\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    d.color = d.color || color(d, i);\n                    return d.color;\n                }).filter(function(d,i) { return !data[i].disabled }))\n                .showLabels(showLabels);\n\n            wrap.select('.nv-scatterWrap')\n                .datum(data.filter(function(d) { return !d.disabled }))\n                .call(scatter);\n\n\n            wrap.select('.nv-regressionLinesWrap')\n                .attr('clip-path', 'url(#nv-edge-clip-' + scatter.id() + ')');\n\n            var regWrap = wrap.select('.nv-regressionLinesWrap').selectAll('.nv-regLines')\n                .data(function (d) {\n                    return d;\n                });\n\n            regWrap.enter().append('g').attr('class', 'nv-regLines');\n\n            var regLine = regWrap.selectAll('.nv-regLine')\n                .data(function (d) {\n                    return [d]\n                });\n\n            regLine.enter()\n                .append('line').attr('class', 'nv-regLine')\n                .style('stroke-opacity', 0);\n\n            // don't add lines unless we have slope and intercept to use\n            regLine.filter(function(d) {\n                return d.intercept && d.slope;\n            })\n                .watchTransition(renderWatch, 'scatterPlusLineChart: regline')\n                .attr('x1', x.range()[0])\n                .attr('x2', x.range()[1])\n                .attr('y1', function (d, i) {\n                    return y(x.domain()[0] * d.slope + d.intercept)\n                })\n                .attr('y2', function (d, i) {\n                    return y(x.domain()[1] * d.slope + d.intercept)\n                })\n                .style('stroke', function (d, i, j) {\n                    return color(d, j)\n                })\n                .style('stroke-opacity', function (d, i) {\n                    return (d.disabled || typeof d.slope === 'undefined' || typeof d.intercept === 'undefined') ? 0 : 1\n                });\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis\n                    .scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize( -availableHeight , 0);\n\n                g.select('.nv-x.nv-axis')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')')\n                    .call(xAxis);\n            }\n\n            if (showYAxis) {\n                yAxis\n                    .scale(y)\n                    ._ticks( nv.utils.calcTicksY(availableHeight/36, data) )\n                    .tickSize( -availableWidth, 0);\n\n                g.select('.nv-y.nv-axis')\n                    .call(yAxis);\n            }\n\n            // Setup Distribution\n            if (showDistX) {\n                distX\n                    .getData(scatter.x())\n                    .scale(x)\n                    .width(availableWidth)\n                    .color(data.map(function(d,i) {\n                        return d.color || color(d, i);\n                    }).filter(function(d,i) { return !data[i].disabled }));\n                gEnter.select('.nv-distWrap').append('g')\n                    .attr('class', 'nv-distributionX');\n                g.select('.nv-distributionX')\n                    .attr('transform', 'translate(0,' + y.range()[0] + ')')\n                    .datum(data.filter(function(d) { return !d.disabled }))\n                    .call(distX);\n            }\n\n            if (showDistY) {\n                distY\n                    .getData(scatter.y())\n                    .scale(y)\n                    .width(availableHeight)\n                    .color(data.map(function(d,i) {\n                        return d.color || color(d, i);\n                    }).filter(function(d,i) { return !data[i].disabled }));\n                gEnter.select('.nv-distWrap').append('g')\n                    .attr('class', 'nv-distributionY');\n                g.select('.nv-distributionY')\n                    .attr('transform', 'translate(' + (rightAlignYAxis ? availableWidth : -distY.size() ) + ',0)')\n                    .datum(data.filter(function(d) { return !d.disabled }))\n                    .call(distY);\n            }\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n                if (typeof e.disabled !== 'undefined') {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n                    state.disabled = e.disabled;\n                }\n                chart.update();\n            });\n\n            // mouseover needs availableHeight so we just keep scatter mouse events inside the chart block\n            scatter.dispatch.on('elementMouseout.tooltip', function(evt) {\n                tooltip.hidden(true);\n                container.select('.nv-chart-' + scatter.id() + ' .nv-series-' + evt.seriesIndex + ' .nv-distx-' + evt.pointIndex)\n                    .attr('y1', 0);\n                container.select('.nv-chart-' + scatter.id() + ' .nv-series-' + evt.seriesIndex + ' .nv-disty-' + evt.pointIndex)\n                    .attr('x2', distY.size());\n            });\n\n            scatter.dispatch.on('elementMouseover.tooltip', function(evt) {\n                container.select('.nv-series-' + evt.seriesIndex + ' .nv-distx-' + evt.pointIndex)\n                    .attr('y1', evt.relativePos[1] - availableHeight);\n                container.select('.nv-series-' + evt.seriesIndex + ' .nv-disty-' + evt.pointIndex)\n                    .attr('x2', evt.relativePos[0] + distX.size());\n                tooltip.data(evt).hidden(false);\n            });\n\n            //store old scales for use in transitions on update\n            x0 = x.copy();\n            y0 = y.copy();\n\n        });\n\n        renderWatch.renderEnd('scatter with line immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.scatter = scatter;\n    chart.legend = legend;\n    chart.xAxis = xAxis;\n    chart.yAxis = yAxis;\n    chart.distX = distX;\n    chart.distY = distY;\n    chart.tooltip = tooltip;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        container:  {get: function(){return container;}, set: function(_){container=_;}},\n        showDistX:  {get: function(){return showDistX;}, set: function(_){showDistX=_;}},\n        showDistY:  {get: function(){return showDistY;}, set: function(_){showDistY=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        showXAxis:  {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:  {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:     {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:     {get: function(){return noData;}, set: function(_){noData=_;}},\n        duration:   {get: function(){return duration;}, set: function(_){duration=_;}},\n        showLabels: {get: function(){return showLabels;}, set: function(_){showLabels=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( (_) ? 'right' : 'left');\n        }},\n        color: {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n            distX.color(color);\n            distY.color(color);\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, scatter);\n    nv.utils.initOptions(chart);\n    return chart;\n};\n\nnv.models.sparkline = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 2, right: 0, bottom: 2, left: 0}\n        , width = 400\n        , height = 32\n        , container = null\n        , animate = true\n        , x = d3.scale.linear()\n        , y = d3.scale.linear()\n        , getX = function(d) { return d.x }\n        , getY = function(d) { return d.y }\n        , color = nv.utils.getColor(['#000'])\n        , xDomain\n        , yDomain\n        , xRange\n        , yRange\n        , showMinMaxPoints = true\n        , showCurrentPoint = true\n        , dispatch = d3.dispatch('renderEnd')\n        ;\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n    \n    function chart(selection) {\n        renderWatch.reset();\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup Scales\n            x   .domain(xDomain || d3.extent(data, getX ))\n                .range(xRange || [0, availableWidth]);\n\n            y   .domain(yDomain || d3.extent(data, getY ))\n                .range(yRange || [availableHeight, 0]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-sparkline').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparkline');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\n\n            var paths = wrap.selectAll('path')\n                .data(function(d) { return [d] });\n            paths.enter().append('path');\n            paths.exit().remove();\n            paths\n                .style('stroke', function(d,i) { return d.color || color(d, i) })\n                .attr('d', d3.svg.line()\n                    .x(function(d,i) { return x(getX(d,i)) })\n                    .y(function(d,i) { return y(getY(d,i)) })\n            );\n\n            // TODO: Add CURRENT data point (Need Min, Mac, Current / Most recent)\n            var points = wrap.selectAll('circle.nv-point')\n                .data(function(data) {\n                    var yValues = data.map(function(d, i) { return getY(d,i); });\n                    function pointIndex(index) {\n                        if (index != -1) {\n                            var result = data[index];\n                            result.pointIndex = index;\n                            return result;\n                        } else {\n                            return null;\n                        }\n                    }\n                    var maxPoint = pointIndex(yValues.lastIndexOf(y.domain()[1])),\n                        minPoint = pointIndex(yValues.indexOf(y.domain()[0])),\n                        currentPoint = pointIndex(yValues.length - 1);\n                    return [(showMinMaxPoints ? minPoint : null), (showMinMaxPoints ? maxPoint : null), (showCurrentPoint ? currentPoint : null)].filter(function (d) {return d != null;});\n                });\n            points.enter().append('circle');\n            points.exit().remove();\n            points\n                .attr('cx', function(d,i) { return x(getX(d,d.pointIndex)) })\n                .attr('cy', function(d,i) { return y(getY(d,d.pointIndex)) })\n                .attr('r', 2)\n                .attr('class', function(d,i) {\n                    return getX(d, d.pointIndex) == x.domain()[1] ? 'nv-point nv-currentValue' :\n                            getY(d, d.pointIndex) == y.domain()[0] ? 'nv-point nv-minValue' : 'nv-point nv-maxValue'\n                });\n        });\n        \n        renderWatch.renderEnd('sparkline immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:            {get: function(){return width;}, set: function(_){width=_;}},\n        height:           {get: function(){return height;}, set: function(_){height=_;}},\n        xDomain:          {get: function(){return xDomain;}, set: function(_){xDomain=_;}},\n        yDomain:          {get: function(){return yDomain;}, set: function(_){yDomain=_;}},\n        xRange:           {get: function(){return xRange;}, set: function(_){xRange=_;}},\n        yRange:           {get: function(){return yRange;}, set: function(_){yRange=_;}},\n        xScale:           {get: function(){return x;}, set: function(_){x=_;}},\n        yScale:           {get: function(){return y;}, set: function(_){y=_;}},\n        animate:          {get: function(){return animate;}, set: function(_){animate=_;}},\n        showMinMaxPoints: {get: function(){return showMinMaxPoints;}, set: function(_){showMinMaxPoints=_;}},\n        showCurrentPoint: {get: function(){return showCurrentPoint;}, set: function(_){showCurrentPoint=_;}},\n\n        //functor options\n        x: {get: function(){return getX;}, set: function(_){getX=d3.functor(_);}},\n        y: {get: function(){return getY;}, set: function(_){getY=d3.functor(_);}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }}\n    });\n\n    chart.dispatch = dispatch;\n    nv.utils.initOptions(chart);\n    return chart;\n};\n\nnv.models.sparklinePlus = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var sparkline = nv.models.sparkline();\n\n    var margin = {top: 15, right: 100, bottom: 10, left: 50}\n        , width = null\n        , height = null\n        , x\n        , y\n        , index = []\n        , paused = false\n        , xTickFormat = d3.format(',r')\n        , yTickFormat = d3.format(',.2f')\n        , showLastValue = true\n        , alignValue = true\n        , rightAlignValue = false\n        , noData = null\n        , dispatch = d3.dispatch('renderEnd')\n        ;\n        \n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(sparkline);\n        selection.each(function(data) {\n            var container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() { container.call(chart); };\n            chart.container = this;\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            var currentValue = sparkline.y()(data[data.length-1], data.length-1);\n\n            // Setup Scales\n            x = sparkline.xScale();\n            y = sparkline.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-sparklineplus').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparklineplus');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-sparklineWrap');\n            gEnter.append('g').attr('class', 'nv-valueWrap');\n            gEnter.append('g').attr('class', 'nv-hoverArea');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            // Main Chart Component(s)\n            var sparklineWrap = g.select('.nv-sparklineWrap');\n\n            sparkline.width(availableWidth).height(availableHeight);\n            sparklineWrap.call(sparkline);\n\n            if (showLastValue) {\n                var valueWrap = g.select('.nv-valueWrap');\n                var value = valueWrap.selectAll('.nv-currentValue')\n                    .data([currentValue]);\n\n                value.enter().append('text').attr('class', 'nv-currentValue')\n                    .attr('dx', rightAlignValue ? -8 : 8)\n                    .attr('dy', '.9em')\n                    .style('text-anchor', rightAlignValue ? 'end' : 'start');\n\n                value\n                    .attr('x', availableWidth + (rightAlignValue ? margin.right : 0))\n                    .attr('y', alignValue ? function (d) {\n                        return y(d)\n                    } : 0)\n                    .style('fill', sparkline.color()(data[data.length - 1], data.length - 1))\n                    .text(yTickFormat(currentValue));\n            }\n\n            gEnter.select('.nv-hoverArea').append('rect')\n                .on('mousemove', sparklineHover)\n                .on('click', function() { paused = !paused })\n                .on('mouseout', function() { index = []; updateValueLine(); });\n\n            g.select('.nv-hoverArea rect')\n                .attr('transform', function(d) { return 'translate(' + -margin.left + ',' + -margin.top + ')' })\n                .attr('width', availableWidth + margin.left + margin.right)\n                .attr('height', availableHeight + margin.top);\n\n            //index is currently global (within the chart), may or may not keep it that way\n            function updateValueLine() {\n                if (paused) return;\n\n                var hoverValue = g.selectAll('.nv-hoverValue').data(index);\n\n                var hoverEnter = hoverValue.enter()\n                    .append('g').attr('class', 'nv-hoverValue')\n                    .style('stroke-opacity', 0)\n                    .style('fill-opacity', 0);\n\n                hoverValue.exit()\n                    .transition().duration(250)\n                    .style('stroke-opacity', 0)\n                    .style('fill-opacity', 0)\n                    .remove();\n\n                hoverValue\n                    .attr('transform', function(d) { return 'translate(' + x(sparkline.x()(data[d],d)) + ',0)' })\n                    .transition().duration(250)\n                    .style('stroke-opacity', 1)\n                    .style('fill-opacity', 1);\n\n                if (!index.length) return;\n\n                hoverEnter.append('line')\n                    .attr('x1', 0)\n                    .attr('y1', -margin.top)\n                    .attr('x2', 0)\n                    .attr('y2', availableHeight);\n\n                hoverEnter.append('text').attr('class', 'nv-xValue')\n                    .attr('x', -6)\n                    .attr('y', -margin.top)\n                    .attr('text-anchor', 'end')\n                    .attr('dy', '.9em');\n\n                g.select('.nv-hoverValue .nv-xValue')\n                    .text(xTickFormat(sparkline.x()(data[index[0]], index[0])));\n\n                hoverEnter.append('text').attr('class', 'nv-yValue')\n                    .attr('x', 6)\n                    .attr('y', -margin.top)\n                    .attr('text-anchor', 'start')\n                    .attr('dy', '.9em');\n\n                g.select('.nv-hoverValue .nv-yValue')\n                    .text(yTickFormat(sparkline.y()(data[index[0]], index[0])));\n            }\n\n            function sparklineHover() {\n                if (paused) return;\n\n                var pos = d3.mouse(this)[0] - margin.left;\n\n                function getClosestIndex(data, x) {\n                    var distance = Math.abs(sparkline.x()(data[0], 0) - x);\n                    var closestIndex = 0;\n                    for (var i = 0; i < data.length; i++){\n                        if (Math.abs(sparkline.x()(data[i], i) - x) < distance) {\n                            distance = Math.abs(sparkline.x()(data[i], i) - x);\n                            closestIndex = i;\n                        }\n                    }\n                    return closestIndex;\n                }\n\n                index = [getClosestIndex(data, Math.round(x.invert(pos)))];\n                updateValueLine();\n            }\n\n        });\n        renderWatch.renderEnd('sparklinePlus immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.sparkline = sparkline;\n\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:           {get: function(){return width;}, set: function(_){width=_;}},\n        height:          {get: function(){return height;}, set: function(_){height=_;}},\n        xTickFormat:     {get: function(){return xTickFormat;}, set: function(_){xTickFormat=_;}},\n        yTickFormat:     {get: function(){return yTickFormat;}, set: function(_){yTickFormat=_;}},\n        showLastValue:   {get: function(){return showLastValue;}, set: function(_){showLastValue=_;}},\n        alignValue:      {get: function(){return alignValue;}, set: function(_){alignValue=_;}},\n        rightAlignValue: {get: function(){return rightAlignValue;}, set: function(_){rightAlignValue=_;}},\n        noData:          {get: function(){return noData;}, set: function(_){noData=_;}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, sparkline);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.stackedArea = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 960\n        , height = 500\n        , color = nv.utils.defaultColor() // a function that computes the color\n        , id = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't selet one\n        , container = null\n        , getX = function(d) { return d.x } // accessor to get the x value from a data point\n        , getY = function(d) { return d.y } // accessor to get the y value from a data point\n        , defined = function(d,i) { return !isNaN(getY(d,i)) && getY(d,i) !== null } // allows a line to be not continuous when it is not defined\n        , style = 'stack'\n        , offset = 'zero'\n        , order = 'default'\n        , interpolate = 'linear'  // controls the line interpolation\n        , clipEdge = false // if true, masks lines within x and y scale\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , scatter = nv.models.scatter()\n        , duration = 250\n        , dispatch =  d3.dispatch('areaClick', 'areaMouseover', 'areaMouseout','renderEnd', 'elementClick', 'elementMouseover', 'elementMouseout')\n        ;\n\n    scatter\n        .pointSize(2.2) // default size\n        .pointDomain([2.2, 2.2]) // all the same size by default\n    ;\n\n    /************************************\n     * offset:\n     *   'wiggle' (stream)\n     *   'zero' (stacked)\n     *   'expand' (normalize to 100%)\n     *   'silhouette' (simple centered)\n     *\n     * order:\n     *   'inside-out' (stream)\n     *   'default' (input order)\n     ************************************/\n\n    var renderWatch = nv.utils.renderWatch(dispatch, duration);\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(scatter);\n        selection.each(function(data) {\n            var availableWidth = width - margin.left - margin.right,\n                availableHeight = height - margin.top - margin.bottom;\n\n            container = d3.select(this);\n            nv.utils.initSVG(container);\n\n            // Setup Scales\n            x = scatter.xScale();\n            y = scatter.yScale();\n\n            var dataRaw = data;\n            // Injecting point index into each point because d3.layout.stack().out does not give index\n            data.forEach(function(aseries, i) {\n                aseries.seriesIndex = i;\n                aseries.values = aseries.values.map(function(d, j) {\n                    d.index = j;\n                    d.seriesIndex = i;\n                    return d;\n                });\n            });\n\n            var dataFiltered = data.filter(function(series) {\n                return !series.disabled;\n            });\n\n            data = d3.layout.stack()\n                .order(order)\n                .offset(offset)\n                .values(function(d) { return d.values })  //TODO: make values customizeable in EVERY model in this fashion\n                .x(getX)\n                .y(getY)\n                .out(function(d, y0, y) {\n                    d.display = {\n                        y: y,\n                        y0: y0\n                    };\n                })\n            (dataFiltered);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-stackedarea').data([data]);\n            var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedarea');\n            var defsEnter = wrapEnter.append('defs');\n            var gEnter = wrapEnter.append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-areaWrap');\n            gEnter.append('g').attr('class', 'nv-scatterWrap');\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n            \n            // If the user has not specified forceY, make sure 0 is included in the domain\n            // Otherwise, use user-specified values for forceY\n            if (scatter.forceY().length == 0) {\n                scatter.forceY().push(0);\n            }\n            \n            scatter\n                .width(availableWidth)\n                .height(availableHeight)\n                .x(getX)\n                .y(function(d) {\n                    if (d.display !== undefined) { return d.display.y + d.display.y0; }\n                })\n                .color(data.map(function(d,i) {\n                    d.color = d.color || color(d, d.seriesIndex);\n                    return d.color;\n                }));\n\n            var scatterWrap = g.select('.nv-scatterWrap')\n                .datum(data);\n\n            scatterWrap.call(scatter);\n\n            defsEnter.append('clipPath')\n                .attr('id', 'nv-edge-clip-' + id)\n                .append('rect');\n\n            wrap.select('#nv-edge-clip-' + id + ' rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            g.attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');\n\n            var area = d3.svg.area()\n                .defined(defined)\n                .x(function(d,i)  { return x(getX(d,i)) })\n                .y0(function(d) {\n                    return y(d.display.y0)\n                })\n                .y1(function(d) {\n                    return y(d.display.y + d.display.y0)\n                })\n                .interpolate(interpolate);\n\n            var zeroArea = d3.svg.area()\n                .defined(defined)\n                .x(function(d,i)  { return x(getX(d,i)) })\n                .y0(function(d) { return y(d.display.y0) })\n                .y1(function(d) { return y(d.display.y0) });\n\n            var path = g.select('.nv-areaWrap').selectAll('path.nv-area')\n                .data(function(d) { return d });\n\n            path.enter().append('path').attr('class', function(d,i) { return 'nv-area nv-area-' + i })\n                .attr('d', function(d,i){\n                    return zeroArea(d.values, d.seriesIndex);\n                })\n                .on('mouseover', function(d,i) {\n                    d3.select(this).classed('hover', true);\n                    dispatch.areaMouseover({\n                        point: d,\n                        series: d.key,\n                        pos: [d3.event.pageX, d3.event.pageY],\n                        seriesIndex: d.seriesIndex\n                    });\n                })\n                .on('mouseout', function(d,i) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.areaMouseout({\n                        point: d,\n                        series: d.key,\n                        pos: [d3.event.pageX, d3.event.pageY],\n                        seriesIndex: d.seriesIndex\n                    });\n                })\n                .on('click', function(d,i) {\n                    d3.select(this).classed('hover', false);\n                    dispatch.areaClick({\n                        point: d,\n                        series: d.key,\n                        pos: [d3.event.pageX, d3.event.pageY],\n                        seriesIndex: d.seriesIndex\n                    });\n                });\n\n            path.exit().remove();\n            path.style('fill', function(d,i){\n                    return d.color || color(d, d.seriesIndex)\n                })\n                .style('stroke', function(d,i){ return d.color || color(d, d.seriesIndex) });\n            path.watchTransition(renderWatch,'stackedArea path')\n                .attr('d', function(d,i) {\n                    return area(d.values,i)\n                });\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            scatter.dispatch.on('elementMouseover.area', function(e) {\n                g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', true);\n            });\n            scatter.dispatch.on('elementMouseout.area', function(e) {\n                g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', false);\n            });\n\n            //Special offset functions\n            chart.d3_stackedOffset_stackPercent = function(stackData) {\n                var n = stackData.length,    //How many series\n                    m = stackData[0].length,     //how many points per series\n                    i,\n                    j,\n                    o,\n                    y0 = [];\n\n                for (j = 0; j < m; ++j) { //Looping through all points\n                    for (i = 0, o = 0; i < dataRaw.length; i++) { //looping through all series\n                        o += getY(dataRaw[i].values[j]); //total y value of all series at a certian point in time.\n                    }\n\n                    if (o) for (i = 0; i < n; i++) { //(total y value of all series at point in time i) != 0\n                        stackData[i][j][1] /= o;\n                    } else { //(total y value of all series at point in time i) == 0\n                        for (i = 0; i < n; i++) {\n                            stackData[i][j][1] = 0;\n                        }\n                    }\n                }\n                for (j = 0; j < m; ++j) y0[j] = 0;\n                return y0;\n            };\n\n        });\n\n        renderWatch.renderEnd('stackedArea immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Global getters and setters\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.scatter = scatter;\n\n    scatter.dispatch.on('elementClick', function(){ dispatch.elementClick.apply(this, arguments); });\n    scatter.dispatch.on('elementMouseover', function(){ dispatch.elementMouseover.apply(this, arguments); });\n    scatter.dispatch.on('elementMouseout', function(){ dispatch.elementMouseout.apply(this, arguments); });\n\n    chart.interpolate = function(_) {\n        if (!arguments.length) return interpolate;\n        interpolate = _;\n        return chart;\n    };\n\n    chart.duration = function(_) {\n        if (!arguments.length) return duration;\n        duration = _;\n        renderWatch.reset(duration);\n        scatter.duration(duration);\n        return chart;\n    };\n\n    chart.dispatch = dispatch;\n    chart.scatter = scatter;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        defined: {get: function(){return defined;}, set: function(_){defined=_;}},\n        clipEdge: {get: function(){return clipEdge;}, set: function(_){clipEdge=_;}},\n        offset:      {get: function(){return offset;}, set: function(_){offset=_;}},\n        order:    {get: function(){return order;}, set: function(_){order=_;}},\n        interpolate:    {get: function(){return interpolate;}, set: function(_){interpolate=_;}},\n\n        // simple functor options\n        x:     {get: function(){return getX;}, set: function(_){getX = d3.functor(_);}},\n        y:     {get: function(){return getY;}, set: function(_){getY = d3.functor(_);}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n        }},\n        style: {get: function(){return style;}, set: function(_){\n            style = _;\n            switch (style) {\n                case 'stack':\n                    chart.offset('zero');\n                    chart.order('default');\n                    break;\n                case 'stream':\n                    chart.offset('wiggle');\n                    chart.order('inside-out');\n                    break;\n                case 'stream-center':\n                    chart.offset('silhouette');\n                    chart.order('inside-out');\n                    break;\n                case 'expand':\n                    chart.offset('expand');\n                    chart.order('default');\n                    break;\n                case 'stack_percent':\n                    chart.offset(chart.d3_stackedOffset_stackPercent);\n                    chart.order('default');\n                    break;\n            }\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            scatter.duration(duration);\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, scatter);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.stackedAreaChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var stacked = nv.models.stackedArea()\n        , xAxis = nv.models.axis()\n        , yAxis = nv.models.axis()\n        , legend = nv.models.legend()\n        , controls = nv.models.legend()\n        , interactiveLayer = nv.interactiveGuideline()\n        , tooltip = nv.models.tooltip()\n        , focus = nv.models.focus(nv.models.stackedArea())\n        ;\n\n    var margin = {top: 10, right: 25, bottom: 50, left: 60}\n        , marginTop = null\n        , width = null\n        , height = null\n        , color = nv.utils.defaultColor()\n        , showControls = true\n        , showLegend = true\n        , legendPosition = 'top'\n        , showXAxis = true\n        , showYAxis = true\n        , rightAlignYAxis = false\n        , focusEnable = false\n        , useInteractiveGuideline = false\n        , showTotalInTooltip = true\n        , totalLabel = 'TOTAL'\n        , x //can be accessed via chart.xScale()\n        , y //can be accessed via chart.yScale()\n        , state = nv.utils.state()\n        , defaultState = null\n        , noData = null\n        , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd')\n        , controlWidth = 250\n        , controlOptions = ['Stacked','Stream','Expanded']\n        , controlLabels = {}\n        , duration = 250\n        ;\n\n    state.style = stacked.style();\n    xAxis.orient('bottom').tickPadding(7);\n    yAxis.orient((rightAlignYAxis) ? 'right' : 'left');\n\n    tooltip\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        })\n        .valueFormatter(function(d, i) {\n            return yAxis.tickFormat()(d, i);\n        });\n\n    interactiveLayer.tooltip\n        .headerFormatter(function(d, i) {\n            return xAxis.tickFormat()(d, i);\n        })\n        .valueFormatter(function(d, i) {\n            return d == null ? \"N/A\" : yAxis.tickFormat()(d, i);\n        });\n\n    var oldYTickFormat = null,\n        oldValueFormatter = null;\n\n    controls.updateState(false);\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n    var style = stacked.style();\n\n    var stateGetter = function(data) {\n        return function(){\n            return {\n                active: data.map(function(d) { return !d.disabled }),\n                style: stacked.style()\n            };\n        }\n    };\n\n    var stateSetter = function(data) {\n        return function(state) {\n            if (state.style !== undefined)\n                style = state.style;\n            if (state.active !== undefined)\n                data.forEach(function(series,i) {\n                    series.disabled = !state.active[i];\n                });\n        }\n    };\n\n    var percentFormatter = d3.format('%');\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(stacked);\n        if (showXAxis) renderWatch.models(xAxis);\n        if (showYAxis) renderWatch.models(yAxis);\n\n        selection.each(function(data) {\n            var container = d3.select(this),\n                that = this;\n            nv.utils.initSVG(container);\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin),\n                availableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n\n            chart.update = function() { container.transition().duration(duration).call(chart); };\n            chart.container = this;\n\n            state\n                .setter(stateSetter(data), chart.update)\n                .getter(stateGetter(data))\n                .update();\n\n            // DEPRECATED set state.disabled\n            state.disabled = data.map(function(d) { return !!d.disabled });\n\n            if (!defaultState) {\n                var key;\n                defaultState = {};\n                for (key in state) {\n                    if (state[key] instanceof Array)\n                        defaultState[key] = state[key].slice(0);\n                    else\n                        defaultState[key] = state[key];\n                }\n            }\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {\n                nv.utils.noData(chart, container)\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n            // Setup Scales\n            x = stacked.xScale();\n            y = stacked.yScale();\n\n            // Setup containers and skeleton of chart\n            var wrap = container.selectAll('g.nv-wrap.nv-stackedAreaChart').data([data]);\n            var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedAreaChart').append('g');\n            var g = wrap.select('g');\n\n            gEnter.append('g').attr('class', 'nv-legendWrap');\n            gEnter.append('g').attr('class', 'nv-controlsWrap');\n\n            var focusEnter = gEnter.append('g').attr('class', 'nv-focus');\n            focusEnter.append('g').attr('class', 'nv-background').append('rect');\n            focusEnter.append('g').attr('class', 'nv-x nv-axis');\n            focusEnter.append('g').attr('class', 'nv-y nv-axis');\n            focusEnter.append('g').attr('class', 'nv-stackedWrap');\n            focusEnter.append('g').attr('class', 'nv-interactive');\n\n            // g.select(\"rect\").attr(\"width\",availableWidth).attr(\"height\",availableHeight);\n\n            var contextEnter = gEnter.append('g').attr('class', 'nv-focusWrap');\n\n            // Legend\n            if (!showLegend) {\n                g.select('.nv-legendWrap').selectAll('*').remove();\n            } else {\n                var legendWidth = (showControls && legendPosition === 'top') ? availableWidth - controlWidth : availableWidth;\n\n                legend.width(legendWidth);\n                g.select('.nv-legendWrap').datum(data).call(legend);\n\n                if (legendPosition === 'bottom') {\n                \t// constant from axis.js, plus some margin for better layout\n                \tvar xAxisHeight = (showXAxis ? 12 : 0) + 10;\n                   \tmargin.bottom = Math.max(legend.height() + xAxisHeight, margin.bottom);\n                   \tavailableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n                \tvar legendTop = availableHeight + xAxisHeight;\n                    g.select('.nv-legendWrap')\n                        .attr('transform', 'translate(0,' + legendTop +')');\n                } else if (legendPosition === 'top') {\n                    if (!marginTop && margin.top != legend.height()) {\n                        margin.top = legend.height();\n                        availableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n                    }\n\n                    g.select('.nv-legendWrap')\n                    \t.attr('transform', 'translate(' + (availableWidth-legendWidth) + ',' + (-margin.top) +')');\n                }\n            }\n\n            // Controls\n            if (!showControls) {\n                 g.select('.nv-controlsWrap').selectAll('*').remove();\n            } else {\n                var controlsData = [\n                    {\n                        key: controlLabels.stacked || 'Stacked',\n                        metaKey: 'Stacked',\n                        disabled: stacked.style() != 'stack',\n                        style: 'stack'\n                    },\n                    {\n                        key: controlLabels.stream || 'Stream',\n                        metaKey: 'Stream',\n                        disabled: stacked.style() != 'stream',\n                        style: 'stream'\n                    },\n                    {\n                        key: controlLabels.expanded || 'Expanded',\n                        metaKey: 'Expanded',\n                        disabled: stacked.style() != 'expand',\n                        style: 'expand'\n                    },\n                    {\n                        key: controlLabels.stack_percent || 'Stack %',\n                        metaKey: 'Stack_Percent',\n                        disabled: stacked.style() != 'stack_percent',\n                        style: 'stack_percent'\n                    }\n                ];\n\n                controlWidth = (controlOptions.length/3) * 260;\n                controlsData = controlsData.filter(function(d) {\n                    return controlOptions.indexOf(d.metaKey) !== -1;\n                });\n\n                controls\n                    .width( controlWidth )\n                    .color(['#444', '#444', '#444']);\n\n                g.select('.nv-controlsWrap')\n                    .datum(controlsData)\n                    .call(controls);\n\n                var requiredTop = Math.max(controls.height(), showLegend && (legendPosition === 'top') ? legend.height() : 0);\n\n                if ( margin.top != requiredTop ) {\n                    margin.top = requiredTop;\n                    availableHeight = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focus.height() : 0);\n                }\n\n                g.select('.nv-controlsWrap')\n                    .attr('transform', 'translate(0,' + (-margin.top) +')');\n            }\n\n            wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n            if (rightAlignYAxis) {\n                g.select(\".nv-y.nv-axis\")\n                    .attr(\"transform\", \"translate(\" + availableWidth + \",0)\");\n            }\n\n            //Set up interactive layer\n            if (useInteractiveGuideline) {\n                interactiveLayer\n                    .width(availableWidth)\n                    .height(availableHeight)\n                    .margin({left: margin.left, top: margin.top})\n                    .svgContainer(container)\n                    .xScale(x);\n                wrap.select(\".nv-interactive\").call(interactiveLayer);\n            }\n\n            g.select('.nv-focus .nv-background rect')\n                .attr('width', availableWidth)\n                .attr('height', availableHeight);\n\n            stacked\n                .width(availableWidth)\n                .height(availableHeight)\n                .color(data.map(function(d,i) {\n                    return d.color || color(d, i);\n                }).filter(function(d,i) { return !data[i].disabled; }));\n\n            var stackedWrap = g.select('.nv-focus .nv-stackedWrap')\n                .datum(data.filter(function(d) { return !d.disabled; }));\n\n            // Setup Axes\n            if (showXAxis) {\n                xAxis.scale(x)\n                    ._ticks( nv.utils.calcTicksX(availableWidth/100, data) )\n                    .tickSize( -availableHeight, 0);\n            }\n\n            if (showYAxis) {\n                var ticks;\n                if (stacked.offset() === 'wiggle') {\n                    ticks = 0;\n                }\n                else {\n                    ticks = nv.utils.calcTicksY(availableHeight/36, data);\n                }\n                yAxis.scale(y)\n                    ._ticks(ticks)\n                    .tickSize(-availableWidth, 0);\n            }\n\n            //============================================================\n            // Update Axes\n            //============================================================\n            function updateXAxis() {\n                if(showXAxis) {\n                    g.select('.nv-focus .nv-x.nv-axis')\n                        .attr('transform', 'translate(0,' + availableHeight + ')')\n                        .transition()\n                        .duration(duration)\n                        .call(xAxis)\n                        ;\n                }\n            }\n\n            function updateYAxis() {\n                if(showYAxis) {\n                    if (stacked.style() === 'expand' || stacked.style() === 'stack_percent') {\n                        var currentFormat = yAxis.tickFormat();\n\n                        if ( !oldYTickFormat || currentFormat !== percentFormatter )\n                            oldYTickFormat = currentFormat;\n\n                        //Forces the yAxis to use percentage in 'expand' mode.\n                        yAxis.tickFormat(percentFormatter);\n                    }\n                    else {\n                        if (oldYTickFormat) {\n                            yAxis.tickFormat(oldYTickFormat);\n                            oldYTickFormat = null;\n                        }\n                    }\n\n                    g.select('.nv-focus .nv-y.nv-axis')\n                    .transition().duration(0)\n                    .call(yAxis);\n                }\n            }\n\n            //============================================================\n            // Update Focus\n            //============================================================\n            if(!focusEnable) {\n                stackedWrap.transition().call(stacked);\n                updateXAxis();\n                updateYAxis();\n            } else {\n                focus.width(availableWidth);\n                g.select('.nv-focusWrap')\n                    .attr('transform', 'translate(0,' + ( availableHeight + margin.bottom + focus.margin().top) + ')')\n                    .datum(data.filter(function(d) { return !d.disabled; }))\n                    .call(focus);\n                var extent = focus.brush.empty() ? focus.xDomain() : focus.brush.extent();\n                if(extent !== null){\n                    onBrush(extent);\n                }\n            }\n\n            //============================================================\n            // Event Handling/Dispatching (in chart's scope)\n            //------------------------------------------------------------\n\n            stacked.dispatch.on('areaClick.toggle', function(e) {\n                if (data.filter(function(d) { return !d.disabled }).length === 1)\n                    data.forEach(function(d) {\n                        d.disabled = false;\n                    });\n                else\n                    data.forEach(function(d,i) {\n                        d.disabled = (i != e.seriesIndex);\n                    });\n\n                state.disabled = data.map(function(d) { return !!d.disabled });\n                dispatch.stateChange(state);\n\n                chart.update();\n            });\n\n            legend.dispatch.on('stateChange', function(newState) {\n                for (var key in newState)\n                    state[key] = newState[key];\n                dispatch.stateChange(state);\n                chart.update();\n            });\n\n            controls.dispatch.on('legendClick', function(d,i) {\n                if (!d.disabled) return;\n\n                controlsData = controlsData.map(function(s) {\n                    s.disabled = true;\n                    return s;\n                });\n                d.disabled = false;\n\n                stacked.style(d.style);\n\n\n                state.style = stacked.style();\n                dispatch.stateChange(state);\n\n                chart.update();\n            });\n\n            interactiveLayer.dispatch.on('elementMousemove', function(e) {\n                stacked.clearHighlights();\n                var singlePoint, pointIndex, pointXLocation, allData = [], valueSum = 0, allNullValues = true, atleastOnePoint = false;\n                data\n                    .filter(function(series, i) {\n                        series.seriesIndex = i;\n                        return !series.disabled;\n                    })\n                    .forEach(function(series,i) {\n                        pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());\n                        var point = series.values[pointIndex];\n                        var pointYValue = chart.y()(point, pointIndex);\n                        if (pointYValue != null && pointYValue > 0) {\n                            stacked.highlightPoint(i, pointIndex, true);\n                            atleastOnePoint = true;\n                        }\n                    \n                        // Draw at least one point if all values are zero.\n                        if (i === (data.length - 1) && !atleastOnePoint) {\n                            stacked.highlightPoint(i, pointIndex, true);\n                        }\n                        if (typeof point === 'undefined') return;\n                        if (typeof singlePoint === 'undefined') singlePoint = point;\n                        if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));\n\n                        //If we are in 'expand' mode, use the stacked percent value instead of raw value.\n                        var tooltipValue = (stacked.style() == 'expand') ? point.display.y : chart.y()(point,pointIndex);\n                        allData.push({\n                            key: series.key,\n                            value: tooltipValue,\n                            color: color(series,series.seriesIndex),\n                            point: point\n                        });\n\n                        if (showTotalInTooltip && stacked.style() != 'expand' && tooltipValue != null) {\n                          valueSum += tooltipValue;\n                          allNullValues = false;\n                        };\n                    });\n\n                allData.reverse();\n\n                //Highlight the tooltip entry based on which stack the mouse is closest to.\n                if (allData.length > 2) {\n                    var yValue = chart.yScale().invert(e.mouseY);\n                    var yDistMax = Infinity, indexToHighlight = null;\n                    allData.forEach(function(series,i) {\n\n                        //To handle situation where the stacked area chart is negative, we need to use absolute values\n                        //when checking if the mouse Y value is within the stack area.\n                        yValue = Math.abs(yValue);\n                        var stackedY0 = Math.abs(series.point.display.y0);\n                        var stackedY = Math.abs(series.point.display.y);\n                        if ( yValue >= stackedY0 && yValue <= (stackedY + stackedY0))\n                        {\n                            indexToHighlight = i;\n                            return;\n                        }\n                    });\n                    if (indexToHighlight != null)\n                        allData[indexToHighlight].highlight = true;\n                }\n\n                //If we are not in 'expand' mode, add a 'Total' row to the tooltip.\n                if (showTotalInTooltip && stacked.style() != 'expand' && allData.length >= 2 && !allNullValues) {\n                    allData.push({\n                        key: totalLabel,\n                        value: valueSum,\n                        total: true\n                    });\n                }\n\n                var xValue = chart.x()(singlePoint,pointIndex);\n\n                var valueFormatter = interactiveLayer.tooltip.valueFormatter();\n                // Keeps track of the tooltip valueFormatter if the chart changes to expanded view\n                if (stacked.style() === 'expand' || stacked.style() === 'stack_percent') {\n                    if ( !oldValueFormatter ) {\n                        oldValueFormatter = valueFormatter;\n                    }\n                    //Forces the tooltip to use percentage in 'expand' mode.\n                    valueFormatter = d3.format(\".1%\");\n                }\n                else {\n                    if (oldValueFormatter) {\n                        valueFormatter = oldValueFormatter;\n                        oldValueFormatter = null;\n                    }\n                }\n\n                interactiveLayer.tooltip\n                    .valueFormatter(valueFormatter)\n                    .data(\n                    {\n                        value: xValue,\n                        series: allData\n                    }\n                )();\n\n                interactiveLayer.renderGuideLine(pointXLocation);\n\n            });\n\n            interactiveLayer.dispatch.on(\"elementMouseout\",function(e) {\n                stacked.clearHighlights();\n            });\n\n            /* Update `main' graph on brush update. */\n            focus.dispatch.on(\"onBrush\", function(extent) {\n                onBrush(extent);\n            });\n\n            // Update chart from a state object passed to event handler\n            dispatch.on('changeState', function(e) {\n\n                if (typeof e.disabled !== 'undefined' && data.length === e.disabled.length) {\n                    data.forEach(function(series,i) {\n                        series.disabled = e.disabled[i];\n                    });\n\n                    state.disabled = e.disabled;\n                }\n\n                if (typeof e.style !== 'undefined') {\n                    stacked.style(e.style);\n                    style = e.style;\n                }\n\n                chart.update();\n            });\n\n            //============================================================\n            // Functions\n            //------------------------------------------------------------\n\n            function onBrush(extent) {\n                // Update Main (Focus)\n                var stackedWrap = g.select('.nv-focus .nv-stackedWrap')\n                    .datum(\n                    data.filter(function(d) { return !d.disabled; })\n                        .map(function(d,i) {\n                            return {\n                                key: d.key,\n                                area: d.area,\n                                classed: d.classed,\n                                values: d.values.filter(function(d,i) {\n                                    return stacked.x()(d,i) >= extent[0] && stacked.x()(d,i) <= extent[1];\n                                }),\n                                disableTooltip: d.disableTooltip\n                            };\n                        })\n                );\n                stackedWrap.transition().duration(duration).call(stacked);\n\n                // Update Main (Focus) Axes\n                updateXAxis();\n                updateYAxis();\n            }\n\n        });\n\n        renderWatch.renderEnd('stacked Area chart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    stacked.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt.point['x'] = stacked.x()(evt.point);\n        evt.point['y'] = stacked.y()(evt.point);\n        tooltip.data(evt).hidden(false);\n    });\n\n    stacked.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true)\n    });\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.stacked = stacked;\n    chart.legend = legend;\n    chart.controls = controls;\n    chart.xAxis = xAxis;\n    chart.x2Axis = focus.xAxis;\n    chart.yAxis = yAxis;\n    chart.y2Axis = focus.yAxis;\n    chart.interactiveLayer = interactiveLayer;\n    chart.tooltip = tooltip;\n    chart.focus = focus;\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},\n        legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},\n        showXAxis:      {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},\n        showYAxis:    {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},\n        defaultState:    {get: function(){return defaultState;}, set: function(_){defaultState=_;}},\n        noData:    {get: function(){return noData;}, set: function(_){noData=_;}},\n        showControls:    {get: function(){return showControls;}, set: function(_){showControls=_;}},\n        controlLabels:    {get: function(){return controlLabels;}, set: function(_){controlLabels=_;}},\n        controlOptions:    {get: function(){return controlOptions;}, set: function(_){controlOptions=_;}},\n        showTotalInTooltip:      {get: function(){return showTotalInTooltip;}, set: function(_){showTotalInTooltip=_;}},\n        totalLabel:      {get: function(){return totalLabel;}, set: function(_){totalLabel=_;}},\n        focusEnable:    {get: function(){return focusEnable;}, set: function(_){focusEnable=_;}},\n        focusHeight:     {get: function(){return focus.height();}, set: function(_){focus.height(_);}},\n        brushExtent: {get: function(){return focus.brushExtent();}, set: function(_){focus.brushExtent(_);}},\n\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            if (_.top !== undefined) {\n                margin.top = _.top;\n                marginTop = _.top;\n            }\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n        }},\n        focusMargin: {get: function(){return focus.margin}, set: function(_){\n            focus.margin.top    = _.top    !== undefined ? _.top    : focus.margin.top;\n            focus.margin.right  = _.right  !== undefined ? _.right  : focus.margin.right;\n            focus.margin.bottom = _.bottom !== undefined ? _.bottom : focus.margin.bottom;\n            focus.margin.left   = _.left   !== undefined ? _.left   : focus.margin.left;\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            stacked.duration(duration);\n            xAxis.duration(duration);\n            yAxis.duration(duration);\n        }},\n        color:  {get: function(){return color;}, set: function(_){\n            color = nv.utils.getColor(_);\n            legend.color(color);\n            stacked.color(color);\n            focus.color(color);\n        }},\n        x: {get: function(){return stacked.x();}, set: function(_){\n            stacked.x(_);\n            focus.x(_);\n        }},\n        y: {get: function(){return stacked.y();}, set: function(_){\n            stacked.y(_);\n            focus.y(_);\n        }},\n        rightAlignYAxis: {get: function(){return rightAlignYAxis;}, set: function(_){\n            rightAlignYAxis = _;\n            yAxis.orient( rightAlignYAxis ? 'right' : 'left');\n        }},\n        useInteractiveGuideline: {get: function(){return useInteractiveGuideline;}, set: function(_){\n            useInteractiveGuideline = !!_;\n            chart.interactive(!_);\n            chart.useVoronoi(!_);\n            stacked.scatter.interactive(!_);\n        }}\n    });\n\n    nv.utils.inheritOptions(chart, stacked);\n    nv.utils.initOptions(chart);\n\n    return chart;\n};\n\nnv.models.stackedAreaWithFocusChart = function() {\n  return nv.models.stackedAreaChart()\n    .margin({ bottom: 30 })\n    .focusEnable( true );\n};\n// based on http://bl.ocks.org/kerryrodden/477c1bfb081b783f80ad\nnv.models.sunburst = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var margin = {top: 0, right: 0, bottom: 0, left: 0}\n        , width = 600\n        , height = 600\n        , mode = \"count\"\n        , modes = {count: function(d) { return 1; }, value: function(d) { return d.value || d.size }, size: function(d) { return d.value || d.size }}\n        , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one\n        , container = null\n        , color = nv.utils.defaultColor()\n        , showLabels = false\n        , labelFormat = function(d){if(mode === 'count'){return d.name + ' #' + d.value}else{return d.name + ' ' + (d.value || d.size)}}\n        , labelThreshold = 0.02\n        , sort = function(d1, d2){return d1.name > d2.name;}\n        , key = function(d,i){\n            if (d.parent !== undefined) {\n                return d.name + '-' + d.parent.name + '-' + i;\n            } else {\n                return d.name;\n            }\n        }\n        , groupColorByParent = true\n        , duration = 500\n        , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMousemove', 'elementMouseover', 'elementMouseout', 'renderEnd');\n\n    //============================================================\n    // aux functions and setup\n    //------------------------------------------------------------\n\n    var x = d3.scale.linear().range([0, 2 * Math.PI]);\n    var y = d3.scale.sqrt();\n\n    var partition = d3.layout.partition().sort(sort);\n\n    var node, availableWidth, availableHeight, radius;\n    var prevPositions = {};\n\n    var arc = d3.svg.arc()\n        .startAngle(function(d) {return Math.max(0, Math.min(2 * Math.PI, x(d.x))) })\n        .endAngle(function(d) {return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))) })\n        .innerRadius(function(d) {return Math.max(0, y(d.y)) })\n        .outerRadius(function(d) {return Math.max(0, y(d.y + d.dy)) });\n\n    function rotationToAvoidUpsideDown(d) {\n        var centerAngle = computeCenterAngle(d);\n        if(centerAngle > 90){\n            return 180;\n        }\n        else {\n            return 0;\n        }\n    }\n\n    function computeCenterAngle(d) {\n        var startAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x)));\n        var endAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));\n        var centerAngle = (((startAngle + endAngle) / 2) * (180 / Math.PI)) - 90;\n        return centerAngle;\n    }\n\n    function computeNodePercentage(d) {\n        var startAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x)));\n        var endAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));\n        return (endAngle - startAngle) / (2 * Math.PI);\n    }\n\n    function labelThresholdMatched(d) {\n        var startAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x)));\n        var endAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));\n\n        var size = endAngle - startAngle;\n        return size > labelThreshold;\n    }\n\n    // When zooming: interpolate the scales.\n    function arcTweenZoom(e,i) {\n        var xd = d3.interpolate(x.domain(), [node.x, node.x + node.dx]),\n        yd = d3.interpolate(y.domain(), [node.y, 1]),\n        yr = d3.interpolate(y.range(), [node.y ? 20 : 0, radius]);\n\n        if (i === 0) {\n            return function() {return arc(e);}\n        }\n        else {\n            return function (t) {\n                x.domain(xd(t));\n                y.domain(yd(t)).range(yr(t));\n                return arc(e);\n            }\n        };\n    }\n\n    function arcTweenUpdate(d) {\n        var ipo = d3.interpolate({x: d.x0, dx: d.dx0, y: d.y0, dy: d.dy0}, d);\n\n        return function (t) {\n            var b = ipo(t);\n\n            d.x0 = b.x;\n            d.dx0 = b.dx;\n            d.y0 = b.y;\n            d.dy0 = b.dy;\n\n            return arc(b);\n        };\n    }\n\n    function updatePrevPosition(node) {\n        var k = key(node);\n        if(! prevPositions[k]) prevPositions[k] = {};\n        var pP = prevPositions[k];\n        pP.dx = node.dx;\n        pP.x = node.x;\n        pP.dy = node.dy;\n        pP.y = node.y;\n    }\n\n    function storeRetrievePrevPositions(nodes) {\n        nodes.forEach(function(n){\n            var k = key(n);\n            var pP = prevPositions[k];\n            //console.log(k,n,pP);\n            if( pP ){\n                n.dx0 = pP.dx;\n                n.x0 = pP.x;\n                n.dy0 = pP.dy;\n                n.y0 = pP.y;\n            }\n            else {\n                n.dx0 = n.dx;\n                n.x0 = n.x;\n                n.dy0 = n.dy;\n                n.y0 = n.y;\n            }\n            updatePrevPosition(n);\n        });\n    }\n\n    function zoomClick(d) {\n        var labels = container.selectAll('text')\n        var path = container.selectAll('path')\n\n        // fade out all text elements\n        labels.transition().attr(\"opacity\",0);\n\n        // to allow reference to the new center node\n        node = d;\n\n        path.transition()\n            .duration(duration)\n            .attrTween(\"d\", arcTweenZoom)\n            .each('end', function(e) {\n                // partially taken from here: http://bl.ocks.org/metmajer/5480307\n                // check if the animated element's data e lies within the visible angle span given in d\n                if(e.x >= d.x && e.x < (d.x + d.dx) ){\n                    if(e.depth >= d.depth){\n                        // get a selection of the associated text element\n                        var parentNode = d3.select(this.parentNode);\n                        var arcText = parentNode.select('text');\n\n                        // fade in the text element and recalculate positions\n                        arcText.transition().duration(duration)\n                        .text( function(e){return labelFormat(e) })\n                        .attr(\"opacity\", function(d){\n                            if(labelThresholdMatched(d)) {\n                                return 1;\n                            }\n                            else {\n                                return 0;\n                            }\n                        })\n                        .attr(\"transform\", function() {\n                            var width = this.getBBox().width;\n                            if(e.depth === 0)\n                            return \"translate(\" + (width / 2 * - 1) + \",0)\";\n                            else if(e.depth === d.depth){\n                                return \"translate(\" + (y(e.y) + 5) + \",0)\";\n                            }\n                            else {\n                                var centerAngle = computeCenterAngle(e);\n                                var rotation = rotationToAvoidUpsideDown(e);\n                                if (rotation === 0) {\n                                    return 'rotate('+ centerAngle +')translate(' + (y(e.y) + 5) + ',0)';\n                                }\n                                else {\n                                    return 'rotate('+ centerAngle +')translate(' + (y(e.y) + width + 5) + ',0)rotate(' + rotation + ')';\n                                }\n                            }\n                        });\n                    }\n                }\n            })\n    }\n\n    //============================================================\n    // chart function\n    //------------------------------------------------------------\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    function chart(selection) {\n        renderWatch.reset();\n\n        selection.each(function(data) {\n            container = d3.select(this);\n            availableWidth = nv.utils.availableWidth(width, container, margin);\n            availableHeight = nv.utils.availableHeight(height, container, margin);\n            radius = Math.min(availableWidth, availableHeight) / 2;\n\n            y.range([0, radius]);\n\n            // Setup containers and skeleton of chart\n            var wrap = container.select('g.nvd3.nv-wrap.nv-sunburst');\n            if( !wrap[0][0] ) {\n                wrap = container.append('g')\n                    .attr('class', 'nvd3 nv-wrap nv-sunburst nv-chart-' + id)\n                    .attr('transform', 'translate(' + ((availableWidth / 2) + margin.left + margin.right) + ',' + ((availableHeight / 2) + margin.top + margin.bottom) + ')');\n            } else {\n                wrap.attr('transform', 'translate(' + ((availableWidth / 2) + margin.left + margin.right) + ',' + ((availableHeight / 2) + margin.top + margin.bottom) + ')');\n            }\n\n            container.on('click', function (d, i) {\n                dispatch.chartClick({\n                    data: d,\n                    index: i,\n                    pos: d3.event,\n                    id: id\n                });\n            });\n\n            partition.value(modes[mode] || modes[\"count\"]);\n\n            //reverse the drawing order so that the labels of inner\n            //arcs are drawn on top of the outer arcs.\n            var nodes = partition.nodes(data[0]).reverse()\n\n            storeRetrievePrevPositions(nodes);\n            var cG = wrap.selectAll('.arc-container').data(nodes, key)\n\n            //handle new datapoints\n            var cGE = cG.enter()\n                .append(\"g\")\n                .attr(\"class\",'arc-container')\n\n            cGE.append(\"path\")\n                .attr(\"d\", arc)\n                .style(\"fill\", function (d) {\n                    if (d.color) {\n                        return d.color;\n                    }\n                    else if (groupColorByParent) {\n                        return color((d.children ? d : d.parent).name);\n                    }\n                    else {\n                        return color(d.name);\n                    }\n                })\n                .style(\"stroke\", \"#FFF\")\n                .on(\"click\", function(d,i){\n                    zoomClick(d);\n                    dispatch.elementClick({\n                        data: d,\n                        index: i\n                    })\n                })\n                .on('mouseover', function(d,i){\n                    d3.select(this).classed('hover', true).style('opacity', 0.8);\n                    dispatch.elementMouseover({\n                        data: d,\n                        color: d3.select(this).style(\"fill\"),\n                        percent: computeNodePercentage(d)\n                    });\n                })\n                .on('mouseout', function(d,i){\n                    d3.select(this).classed('hover', false).style('opacity', 1);\n                    dispatch.elementMouseout({\n                        data: d\n                    });\n                })\n                .on('mousemove', function(d,i){\n                    dispatch.elementMousemove({\n                        data: d\n                    });\n                });\n\n            ///Iterating via each and selecting based on the this\n            ///makes it work ... a cG.selectAll('path') doesn't.\n            ///Without iteration the data (in the element) didn't update.\n            cG.each(function(d){\n                d3.select(this).select('path')\n                    .transition()\n                    .duration(duration)\n                    .attrTween('d', arcTweenUpdate);\n            });\n\n            if(showLabels){\n                //remove labels first and add them back\n                cG.selectAll('text').remove();\n\n                //this way labels are on top of newly added arcs\n                cG.append('text')\n                    .text( function(e){ return labelFormat(e)})\n                    .transition()\n                    .duration(duration)\n                    .attr(\"opacity\", function(d){\n                        if(labelThresholdMatched(d)) {\n                            return 1;\n                        }\n                        else {\n                            return 0;\n                        }\n                    })\n                    .attr(\"transform\", function(d) {\n                        var width = this.getBBox().width;\n                        if(d.depth === 0){\n                            return \"rotate(0)translate(\" + (width / 2 * -1) + \",0)\";\n                        }\n                        else {\n                            var centerAngle = computeCenterAngle(d);\n                            var rotation = rotationToAvoidUpsideDown(d);\n                            if (rotation === 0) {\n                                return 'rotate('+ centerAngle +')translate(' + (y(d.y) + 5) + ',0)';\n                            }\n                            else {\n                                return 'rotate('+ centerAngle +')translate(' + (y(d.y) + width + 5) + ',0)rotate(' + rotation + ')';\n                            }\n                        }\n                    });\n            }\n\n            //zoom out to the center when the data is updated.\n            zoomClick(nodes[nodes.length - 1])\n\n\n            //remove unmatched elements ...\n            cG.exit()\n                .transition()\n                .duration(duration)\n                .attr('opacity',0)\n                .each('end',function(d){\n                    var k = key(d);\n                    prevPositions[k] = undefined;\n                })\n                .remove();\n        });\n\n\n        renderWatch.renderEnd('sunburst immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    chart.dispatch = dispatch;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        width:      {get: function(){return width;}, set: function(_){width=_;}},\n        height:     {get: function(){return height;}, set: function(_){height=_;}},\n        mode:       {get: function(){return mode;}, set: function(_){mode=_;}},\n        id:         {get: function(){return id;}, set: function(_){id=_;}},\n        duration:   {get: function(){return duration;}, set: function(_){duration=_;}},\n        groupColorByParent: {get: function(){return groupColorByParent;}, set: function(_){groupColorByParent=!!_;}},\n        showLabels: {get: function(){return showLabels;}, set: function(_){showLabels=!!_}},\n        labelFormat: {get: function(){return labelFormat;}, set: function(_){labelFormat=_}},\n        labelThreshold: {get: function(){return labelThreshold;}, set: function(_){labelThreshold=_}},\n        sort: {get: function(){return sort;}, set: function(_){sort=_}},\n        key: {get: function(){return key;}, set: function(_){key=_}},\n        // options that require extra logic in the setter\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    != undefined ? _.top    : margin.top;\n            margin.right  = _.right  != undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom != undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   != undefined ? _.left   : margin.left;\n        }},\n        color: {get: function(){return color;}, set: function(_){\n            color=nv.utils.getColor(_);\n        }}\n    });\n\n    nv.utils.initOptions(chart);\n    return chart;\n};\nnv.models.sunburstChart = function() {\n    \"use strict\";\n\n    //============================================================\n    // Public Variables with Default Settings\n    //------------------------------------------------------------\n\n    var sunburst = nv.models.sunburst();\n    var tooltip = nv.models.tooltip();\n\n    var margin = {top: 30, right: 20, bottom: 20, left: 20}\n        , width = null\n        , height = null\n        , color = nv.utils.defaultColor()\n        , showTooltipPercent = false\n        , id = Math.round(Math.random() * 100000)\n        , defaultState = null\n        , noData = null\n        , duration = 250\n        , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd');\n\n\n    //============================================================\n    // Private Variables\n    //------------------------------------------------------------\n\n    var renderWatch = nv.utils.renderWatch(dispatch);\n\n    tooltip\n        .duration(0)\n        .headerEnabled(false)\n        .valueFormatter(function(d){return d;});\n\n    //============================================================\n    // Chart function\n    //------------------------------------------------------------\n\n    function chart(selection) {\n        renderWatch.reset();\n        renderWatch.models(sunburst);\n\n        selection.each(function(data) {\n            var container = d3.select(this);\n\n            nv.utils.initSVG(container);\n\n            var availableWidth = nv.utils.availableWidth(width, container, margin);\n            var availableHeight = nv.utils.availableHeight(height, container, margin);\n\n            chart.update = function() {\n                if (duration === 0) {\n                    container.call(chart);\n                } else {\n                    container.transition().duration(duration).call(chart);\n                }\n            };\n            chart.container = container;\n\n            // Display No Data message if there's nothing to show.\n            if (!data || !data.length) {\n                nv.utils.noData(chart, container);\n                return chart;\n            } else {\n                container.selectAll('.nv-noData').remove();\n            }\n\n            sunburst.width(availableWidth).height(availableHeight).margin(margin);\n            container.call(sunburst);\n        });\n\n        renderWatch.renderEnd('sunburstChart immediate');\n        return chart;\n    }\n\n    //============================================================\n    // Event Handling/Dispatching (out of chart's scope)\n    //------------------------------------------------------------\n\n    sunburst.dispatch.on('elementMouseover.tooltip', function(evt) {\n        evt.series = {\n            key: evt.data.name,\n            value: (evt.data.value || evt.data.size),\n            color: evt.color,\n            percent: evt.percent\n        };\n        if (!showTooltipPercent) {\n            delete evt.percent;\n            delete evt.series.percent;\n        }\n        tooltip.data(evt).hidden(false);\n    });\n\n    sunburst.dispatch.on('elementMouseout.tooltip', function(evt) {\n        tooltip.hidden(true);\n    });\n\n    sunburst.dispatch.on('elementMousemove.tooltip', function(evt) {\n        tooltip();\n    });\n\n    //============================================================\n    // Expose Public Variables\n    //------------------------------------------------------------\n\n    // expose chart's sub-components\n    chart.dispatch = dispatch;\n    chart.sunburst = sunburst;\n    chart.tooltip = tooltip;\n    chart.options = nv.utils.optionsFunc.bind(chart);\n\n    // use Object get/set functionality to map between vars and chart functions\n    chart._options = Object.create({}, {\n        // simple options, just get/set the necessary values\n        noData:             {get: function(){return noData;},               set: function(_){noData=_;}},\n        defaultState:       {get: function(){return defaultState;},         set: function(_){defaultState=_;}},\n        showTooltipPercent: {get: function(){return showTooltipPercent;},   set: function(_){showTooltipPercent=_;}},\n\n        // options that require extra logic in the setter\n        color: {get: function(){return color;}, set: function(_){\n            color = _;\n            sunburst.color(color);\n        }},\n        duration: {get: function(){return duration;}, set: function(_){\n            duration = _;\n            renderWatch.reset(duration);\n            sunburst.duration(duration);\n        }},\n        margin: {get: function(){return margin;}, set: function(_){\n            margin.top    = _.top    !== undefined ? _.top    : margin.top;\n            margin.right  = _.right  !== undefined ? _.right  : margin.right;\n            margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;\n            margin.left   = _.left   !== undefined ? _.left   : margin.left;\n            sunburst.margin(margin);\n        }}\n    });\n    nv.utils.inheritOptions(chart, sunburst);\n    nv.utils.initOptions(chart);\n    return chart;\n\n};\n\nnv.version = \"1.8.6\";\n})();\n//# sourceMappingURL=nv.d3.js.map","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildBackgroundBlurStage = void 0;\nvar webglHelper_1 = require(\"../helpers/webglHelper\");\nfunction buildBackgroundBlurStage(gl, vertexShader, positionBuffer, texCoordBuffer, personMaskTexture, canvas) {\n    var blurPass = buildBlurPass(gl, vertexShader, positionBuffer, texCoordBuffer, personMaskTexture, canvas);\n    var blendPass = buildBlendPass(gl, positionBuffer, texCoordBuffer, canvas);\n    function render() {\n        blurPass.render();\n        blendPass.render();\n    }\n    function updateCoverage(coverage) {\n        blendPass.updateCoverage(coverage);\n    }\n    function cleanUp() {\n        blendPass.cleanUp();\n        blurPass.cleanUp();\n    }\n    return {\n        render: render,\n        updateCoverage: updateCoverage,\n        cleanUp: cleanUp,\n    };\n}\nexports.buildBackgroundBlurStage = buildBackgroundBlurStage;\nfunction buildBlurPass(gl, vertexShader, positionBuffer, texCoordBuffer, personMaskTexture, canvas) {\n    var fragmentShaderSource = (0, webglHelper_1.glsl)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform vec2 u_texelSize;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    const float offset[5] = float[](0.0, 1.0, 2.0, 3.0, 4.0);\\n    const float weight[5] = float[](0.2270270270, 0.1945945946, 0.1216216216,\\n      0.0540540541, 0.0162162162);\\n\\n    void main() {\\n      vec4 centerColor = texture(u_inputFrame, v_texCoord);\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n\\n      vec4 frameColor = centerColor * weight[0] * (1.0 - personMask);\\n\\n      for (int i = 1; i < 5; i++) {\\n        vec2 offset = vec2(offset[i]) * u_texelSize;\\n\\n        vec2 texCoord = v_texCoord + offset;\\n        frameColor += texture(u_inputFrame, texCoord) * weight[i] *\\n          (1.0 - texture(u_personMask, texCoord).a);\\n\\n        texCoord = v_texCoord - offset;\\n        frameColor += texture(u_inputFrame, texCoord) * weight[i] *\\n          (1.0 - texture(u_personMask, texCoord).a);\\n      }\\n      outColor = vec4(frameColor.rgb + (1.0 - frameColor.a) * centerColor.rgb, 1.0);\\n    }\\n  \"], [\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform vec2 u_texelSize;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    const float offset[5] = float[](0.0, 1.0, 2.0, 3.0, 4.0);\\n    const float weight[5] = float[](0.2270270270, 0.1945945946, 0.1216216216,\\n      0.0540540541, 0.0162162162);\\n\\n    void main() {\\n      vec4 centerColor = texture(u_inputFrame, v_texCoord);\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n\\n      vec4 frameColor = centerColor * weight[0] * (1.0 - personMask);\\n\\n      for (int i = 1; i < 5; i++) {\\n        vec2 offset = vec2(offset[i]) * u_texelSize;\\n\\n        vec2 texCoord = v_texCoord + offset;\\n        frameColor += texture(u_inputFrame, texCoord) * weight[i] *\\n          (1.0 - texture(u_personMask, texCoord).a);\\n\\n        texCoord = v_texCoord - offset;\\n        frameColor += texture(u_inputFrame, texCoord) * weight[i] *\\n          (1.0 - texture(u_personMask, texCoord).a);\\n      }\\n      outColor = vec4(frameColor.rgb + (1.0 - frameColor.a) * centerColor.rgb, 1.0);\\n    }\\n  \"])));\n    var scale = 0.5;\n    var outputWidth = canvas.width * scale;\n    var outputHeight = canvas.height * scale;\n    var texelWidth = 1 / outputWidth;\n    var texelHeight = 1 / outputHeight;\n    var fragmentShader = (0, webglHelper_1.compileShader)(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n    var program = (0, webglHelper_1.createPiplelineStageProgram)(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer);\n    var inputFrameLocation = gl.getUniformLocation(program, 'u_inputFrame');\n    var personMaskLocation = gl.getUniformLocation(program, 'u_personMask');\n    var texelSizeLocation = gl.getUniformLocation(program, 'u_texelSize');\n    var texture1 = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, outputWidth, outputHeight, gl.NEAREST, gl.LINEAR);\n    var texture2 = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, outputWidth, outputHeight, gl.NEAREST, gl.LINEAR);\n    var frameBuffer1 = gl.createFramebuffer();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer1);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture1, 0);\n    var frameBuffer2 = gl.createFramebuffer();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer2);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture2, 0);\n    gl.useProgram(program);\n    gl.uniform1i(personMaskLocation, 1);\n    function render() {\n        gl.viewport(0, 0, outputWidth, outputHeight);\n        gl.useProgram(program);\n        gl.uniform1i(inputFrameLocation, 0);\n        gl.activeTexture(gl.TEXTURE1);\n        gl.bindTexture(gl.TEXTURE_2D, personMaskTexture);\n        for (var i = 0; i < 8; i++) {\n            gl.uniform2f(texelSizeLocation, 0, texelHeight);\n            gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer1);\n            gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n            gl.activeTexture(gl.TEXTURE2);\n            gl.bindTexture(gl.TEXTURE_2D, texture1);\n            gl.uniform1i(inputFrameLocation, 2);\n            gl.uniform2f(texelSizeLocation, texelWidth, 0);\n            gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer2);\n            gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n            gl.bindTexture(gl.TEXTURE_2D, texture2);\n        }\n    }\n    function cleanUp() {\n        gl.deleteFramebuffer(frameBuffer2);\n        gl.deleteFramebuffer(frameBuffer1);\n        gl.deleteTexture(texture2);\n        gl.deleteTexture(texture1);\n        gl.deleteProgram(program);\n        gl.deleteShader(fragmentShader);\n    }\n    return {\n        render: render,\n        cleanUp: cleanUp,\n    };\n}\nfunction buildBlendPass(gl, positionBuffer, texCoordBuffer, canvas) {\n    var vertexShaderSource = (0, webglHelper_1.glsl)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"#version 300 es\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n\\n    void main() {\\n      // Flipping Y is required when rendering to canvas\\n      gl_Position = vec4(a_position * vec2(1.0, -1.0), 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n    }\\n  \"], [\"#version 300 es\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n\\n    void main() {\\n      // Flipping Y is required when rendering to canvas\\n      gl_Position = vec4(a_position * vec2(1.0, -1.0), 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n    }\\n  \"])));\n    var fragmentShaderSource = (0, webglHelper_1.glsl)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform sampler2D u_blurredInputFrame;\\n    uniform vec2 u_coverage;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    void main() {\\n      vec3 color = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 blurredColor = texture(u_blurredInputFrame, v_texCoord).rgb;\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n      personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);\\n      outColor = vec4(mix(blurredColor, color, personMask), 1.0);\\n    }\\n  \"], [\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_personMask;\\n    uniform sampler2D u_blurredInputFrame;\\n    uniform vec2 u_coverage;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    void main() {\\n      vec3 color = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 blurredColor = texture(u_blurredInputFrame, v_texCoord).rgb;\\n      float personMask = texture(u_personMask, v_texCoord).a;\\n      personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);\\n      outColor = vec4(mix(blurredColor, color, personMask), 1.0);\\n    }\\n  \"])));\n    var outputWidth = canvas.width, outputHeight = canvas.height;\n    var vertexShader = (0, webglHelper_1.compileShader)(gl, gl.VERTEX_SHADER, vertexShaderSource);\n    var fragmentShader = (0, webglHelper_1.compileShader)(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n    var program = (0, webglHelper_1.createPiplelineStageProgram)(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer);\n    var inputFrameLocation = gl.getUniformLocation(program, 'u_inputFrame');\n    var personMaskLocation = gl.getUniformLocation(program, 'u_personMask');\n    var blurredInputFrame = gl.getUniformLocation(program, 'u_blurredInputFrame');\n    var coverageLocation = gl.getUniformLocation(program, 'u_coverage');\n    gl.useProgram(program);\n    gl.uniform1i(inputFrameLocation, 0);\n    gl.uniform1i(personMaskLocation, 1);\n    gl.uniform1i(blurredInputFrame, 2);\n    gl.uniform2f(coverageLocation, 0, 1);\n    function render() {\n        gl.viewport(0, 0, outputWidth, outputHeight);\n        gl.useProgram(program);\n        gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n        gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n    }\n    function updateCoverage(coverage) {\n        gl.useProgram(program);\n        gl.uniform2f(coverageLocation, coverage[0], coverage[1]);\n    }\n    function cleanUp() {\n        gl.deleteProgram(program);\n        gl.deleteShader(fragmentShader);\n        gl.deleteShader(vertexShader);\n    }\n    return {\n        render: render,\n        updateCoverage: updateCoverage,\n        cleanUp: cleanUp,\n    };\n}\nvar templateObject_1, templateObject_2, templateObject_3;\n//# sourceMappingURL=backgroundBlurStage.js.map","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n  var ref = useRef(value);\n  useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nexport default useCommittedRef;","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalStateModule = require('../internals/internal-state');\nvar iteratorClose = require('../internals/iterator-close');\nvar getBuiltIn = require('../internals/get-built-in');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar Promise = getBuiltIn('Promise');\n\nvar ASYNC_FROM_SYNC_ITERATOR = 'AsyncFromSyncIterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);\n\nvar asyncFromSyncIteratorContinuation = function (result, resolve, reject, syncIterator, closeOnRejection) {\n  var done = result.done;\n  Promise.resolve(result.value).then(function (value) {\n    resolve(createIterResultObject(value, done));\n  }, function (error) {\n    if (!done && closeOnRejection) {\n      try {\n        iteratorClose(syncIterator, 'throw', error);\n      } catch (error2) {\n        error = error2;\n      }\n    }\n\n    reject(error);\n  });\n};\n\nvar AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {\n  iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;\n  setInternalState(this, iteratorRecord);\n};\n\nAsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {\n  next: function next() {\n    var state = getInternalState(this);\n    return new Promise(function (resolve, reject) {\n      var result = anObject(call(state.next, state.iterator));\n      asyncFromSyncIteratorContinuation(result, resolve, reject, state.iterator, true);\n    });\n  },\n  'return': function () {\n    var iterator = getInternalState(this).iterator;\n    return new Promise(function (resolve, reject) {\n      var $return = getMethod(iterator, 'return');\n      if ($return === undefined) return resolve(createIterResultObject(undefined, true));\n      var result = anObject(call($return, iterator));\n      asyncFromSyncIteratorContinuation(result, resolve, reject, iterator);\n    });\n  }\n});\n\nmodule.exports = AsyncFromSyncIterator;\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @providesModule shallowEqual\n * @typechecks\n * \n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    // Added the nonzero y check to make Flow happy, but it is redundant\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  }\n  // Step 6.a: NaN == NaN\n  // eslint-disable-next-line no-self-compare\n  return x !== x && y !== y;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqual;\n/* src: https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/shallowEqual.js */","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","'use strict';\n\nvar KEYWORDS = [\n  'multipleOf',\n  'maximum',\n  'exclusiveMaximum',\n  'minimum',\n  'exclusiveMinimum',\n  'maxLength',\n  'minLength',\n  'pattern',\n  'additionalItems',\n  'maxItems',\n  'minItems',\n  'uniqueItems',\n  'maxProperties',\n  'minProperties',\n  'required',\n  'additionalProperties',\n  'enum',\n  'format',\n  'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n  for (var i=0; i<keywordsJsonPointers.length; i++) {\n    metaSchema = JSON.parse(JSON.stringify(metaSchema));\n    var segments = keywordsJsonPointers[i].split('/');\n    var keywords = metaSchema;\n    var j;\n    for (j=1; j<segments.length; j++)\n      keywords = keywords[segments[j]];\n\n    for (j=0; j<KEYWORDS.length; j++) {\n      var key = KEYWORDS[j];\n      var schema = keywords[key];\n      if (schema) {\n        keywords[key] = {\n          anyOf: [\n            schema,\n            { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n    }\n  }\n\n  return metaSchema;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n// https://github.com/acdlite/recompose/blob/master/src/packages/recompose/utils/omit.js\nvar omit = function omit(obj, keys) {\n  var rest = _objectWithoutProperties(obj, []);\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (key in rest) {\n      delete rest[key];\n    }\n  }\n  return rest;\n};\n\nexports.default = omit;","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort:\n            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteParticipant = require('./remoteparticipant');\nvar StatsReport = require('./stats/statsreport');\nvar _a = require('./util'), flatMap = _a.flatMap, valueToJSON = _a.valueToJSON;\nvar nInstances = 0;\n/**\n * A {@link Room} represents communication between you and one or more\n * {@link RemoteParticipant}s sharing {@link AudioTrack}s and\n * {@link VideoTrack}s.\n * <br><br>\n * You can connect to a {@link Room} by calling {@link module:twilio-video.connect}.\n * @extends EventEmitter\n * @property {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n *   {@link Room}, if any\n * @property {boolean} isRecording - Whether or not the {@link Room} is being\n *   recorded\n * @property {LocalParticipant} localParticipant - Your {@link LocalParticipant}\n *   in the {@link Room}\n * @property {string} mediaRegion - String indicating geographical region\n *    where  media is processed for the {@link Room}.\n * @property {string} name - The {@link Room}'s name\n * @property {Map<Participant.SID, RemoteParticipant>} participants -\n *   The {@link RemoteParticipant}s participating in this {@link Room}\n * @property {Room.SID} sid - The {@link Room}'s SID\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @throws {SignalingConnectionDisconnectedError}\n * @emits Room#disconnected\n * @emits Room#participantConnected\n * @emits Room#participantDisconnected\n * @emits Room#participantReconnected\n * @emits Room#participantReconnecting\n * @emits Room#reconnected\n * @emits Room#reconnecting\n * @emits Room#recordingStarted\n * @emits Room#recordingStopped\n * @emits Room#trackDimensionsChanged\n * @emits Room#trackDisabled\n * @emits Room#trackEnabled\n * @emits Room#trackMessage\n * @emits Room#trackPublished\n * @emits Room#trackPublishPriorityChanged\n * @emits Room#trackStarted\n * @emits Room#trackSubscribed\n * @emits Room#trackSwitchedOff\n * @emits Room#trackSwitchedOn\n * @emits Room#trackUnpublished\n * @emits Room#trackUnsubscribed\n * @emits Room#trackWarning\n * @emits Room#trackWarningsCleared\n */\nvar Room = /** @class */ (function (_super) {\n    __extends(Room, _super);\n    /**\n     * Construct a {@link Room}.\n     * @param {RoomSignaling} signaling\n     * @param {?object} [options={}]\n     */\n    function Room(localParticipant, signaling, options) {\n        var _this = _super.call(this) || this;\n        var log = options.log.createLog('default', _this);\n        var participants = new Map();\n        /* istanbul ignore next */\n        Object.defineProperties(_this, {\n            _log: {\n                value: log\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl || 'disabled'\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode || 'disabled'\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _options: {\n                value: options\n            },\n            _participants: {\n                value: participants\n            },\n            _signaling: {\n                value: signaling\n            },\n            dominantSpeaker: {\n                enumerable: true,\n                get: function () {\n                    return this.participants.get(signaling.dominantSpeakerSid) || null;\n                }\n            },\n            isRecording: {\n                enumerable: true,\n                get: function () {\n                    return signaling.recording.isEnabled || false;\n                }\n            },\n            localParticipant: {\n                enumerable: true,\n                value: localParticipant\n            },\n            name: {\n                enumerable: true,\n                value: signaling.name\n            },\n            participants: {\n                enumerable: true,\n                value: participants\n            },\n            sid: {\n                enumerable: true,\n                value: signaling.sid\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return signaling.state;\n                }\n            },\n            mediaRegion: {\n                enumerable: true,\n                value: signaling.mediaRegion\n            }\n        });\n        handleLocalParticipantEvents(_this, localParticipant);\n        handleRecordingEvents(_this, signaling.recording);\n        handleSignalingEvents(_this, signaling);\n        verifyNoiseCancellation(_this);\n        log.info('Created a new Room:', _this.name);\n        log.debug('Initial RemoteParticipants:', Array.from(_this._participants.values()));\n        return _this;\n    }\n    Room.prototype.toString = function () {\n        return \"[Room #\" + this._instanceId + \": \" + this.sid + \"]\";\n    };\n    /**\n     * Disconnect from the {@link Room}.\n     * @returns {this}\n     */\n    Room.prototype.disconnect = function () {\n        this._log.info('Disconnecting');\n        this._signaling.disconnect();\n        return this;\n    };\n    /**\n     * Get the {@link Room}'s media statistics. This is not supported in Safari 12.0 or below\n     * due to this bug : https://bugs.webkit.org/show_bug.cgi?id=192601\n     *\n     * @returns {Promise.<Array<StatsReport>>}\n     */\n    Room.prototype.getStats = function () {\n        var _this = this;\n        return this._signaling.getStats().then(function (responses) {\n            return Array.from(responses).map(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], response = _b[1];\n                return new StatsReport(id, Object.assign({}, response, {\n                    localAudioTrackStats: rewriteLocalTrackIds(_this, response.localAudioTrackStats),\n                    localVideoTrackStats: rewriteLocalTrackIds(_this, response.localVideoTrackStats)\n                }));\n            });\n        });\n    };\n    /**\n     * Restart the muted local media {@link Track}s and play inadvertently paused HTMLMediaElements\n     * that are attached to local and remote media {@link Track}s. This method is useful mainly on\n     * mobile browsers (Safari and Chrome on iOS), where there is a possibility that the muted local\n     * media {@link Track}s are never unmuted and inadvertently paused HTMLMediaElements are never\n     * played again, especially after handling an incoming phone call.\n     * @returns {this}\n     */\n    Room.prototype.refreshInactiveMedia = function () {\n        var localTrackPublications = this.localParticipant.tracks;\n        var localMediaTracks = Array.from(localTrackPublications.values())\n            .filter(function (_a) {\n            var kind = _a.track.kind;\n            return kind !== 'data';\n        })\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        });\n        var remoteMediaTracks = flatMap(this.participants, function (participants) { return Array.from(participants.tracks.values()); })\n            .filter(function (_a) {\n            var track = _a.track;\n            return track && track.kind !== 'data';\n        })\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        });\n        var mediaTracks = localMediaTracks.concat(remoteMediaTracks);\n        var unmuteEvent = new Event('unmute');\n        localMediaTracks.forEach(function (_a) {\n            var isMuted = _a.isMuted, mediaStreamTrack = _a.mediaStreamTrack;\n            if (isMuted) {\n                mediaStreamTrack.dispatchEvent(unmuteEvent);\n            }\n        });\n        var pauseEvent = new Event('pause');\n        mediaTracks.forEach(function (_a) {\n            var attachments = _a._attachments, elShims = _a._elShims;\n            return attachments.forEach(function (el) {\n                var shim = elShims.get(el);\n                var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n                if (isInadvertentlyPaused) {\n                    el.dispatchEvent(pauseEvent);\n                }\n            });\n        });\n        return this;\n    };\n    Room.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    return Room;\n}(EventEmitter));\nfunction verifyNoiseCancellation(room) {\n    var allowedAudioProcessors = room.localParticipant._signaling.audioProcessors;\n    room.localParticipant.audioTracks.forEach(function (_a) {\n        var track = _a.track;\n        var noiseCancellation = track.noiseCancellation;\n        if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n            room._log.warn(noiseCancellation.vendor + \" is not supported in this room. disabling it permanently\");\n            noiseCancellation.disablePermanently();\n        }\n    });\n}\nfunction rewriteLocalTrackIds(room, trackStats) {\n    var localParticipantSignaling = room.localParticipant._signaling;\n    return trackStats.reduce(function (trackStats, trackStat) {\n        var publication = localParticipantSignaling.tracks.get(trackStat.trackId);\n        var trackSender = localParticipantSignaling.getSender(publication);\n        return trackSender\n            ? [Object.assign({}, trackStat, { trackId: trackSender.id })].concat(trackStats)\n            : trackStats;\n    }, []);\n}\n/**\n * A {@link Room.SID} is a 34-character string starting with \"RM\"\n * that uniquely identifies a {@link Room}.\n * @type string\n * @typedef Room.SID\n */\n/**\n * The Dominant Speaker in the {@link Room} changed. Either the Dominant Speaker\n * is a new {@link RemoteParticipant} or the Dominant Speaker has been reset and\n * is now null.\n * @param {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n *   {@link Room}, if any\n * @event Room#dominantSpeakerChanged\n */\n/**\n * Your {@link LocalParticipant} was disconnected from the {@link Room} and all\n * other {@link RemoteParticipant}s.\n * @param {Room} room - The {@link Room} your\n *   {@link LocalParticipant} was disconnected from\n * @param {?TwilioError} error - Present when the {@link LocalParticipant} got\n *   disconnected from the {@link Room} unexpectedly\n * @event Room#disconnected\n * @example\n * myRoom.on('disconnected', function(room, error) {\n *   if (error) {\n *     console.log('Unexpectedly disconnected:', error);\n *   }\n *   myRoom.localParticipant.tracks.forEach(function(track) {\n *     track.stop();\n *     track.detach();\n *   });\n * });\n */\n/**\n * A {@link RemoteParticipant} joined the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * publishes at least one {@link LocalTrack}.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who joined\n * @event Room#participantConnected\n * @example\n * myRoom.on('participantConnected', function(participant) {\n *   console.log(participant.identity + ' joined the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} left the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * unpublishes all its {@link LocalTrack}s.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who left\n * @event Room#participantDisconnected\n * @example\n * myRoom.on('participantDisconnected', function(participant) {\n *   console.log(participant.identity + ' left the Room');\n *   participant.tracks.forEach(function(track) {\n *     track.detach().forEach(function(mediaElement) {\n *       mediaElement.remove();\n *     });\n *   });\n * });\n */\n/**\n * A {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that has reconnected.\n * @event Room#participantReconnected\n * @example\n * myRoom.on('participantReconnected', participant => {\n *   console.log(participant.identity + ' reconnected to the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that is reconnecting.\n * @event Room#participantReconnecting\n * @example\n * myRoom.on('participantReconnecting', participant => {\n *   console.log(participant.identity + ' is reconnecting to the Room');\n * });\n */\n/**\n * Your application successfully reconnected to the {@link Room}. When this\n * event is emitted, the {@link Room} is in state \"connected\".\n * @event Room#reconnected\n * @example\n * myRoom.on('reconnected', () => {\n *   console.log('Reconnected!');\n * });\n */\n/**\n * Your application is reconnecting to the {@link Room}. This happens when there\n * is a disruption in your signaling connection and/or your media connection. When\n * this event is emitted, the {@link Room} is in state \"reconnecting\". If reconnecting\n * succeeds, the {@link Room} will emit a \"reconnected\" event.\n * @param {MediaConnectionError|SignalingConnectionDisconnectedError} error - A\n *   {@link MediaConnectionError} if your application is reconnecting due to a\n *   disruption in your media connection, or a {@link SignalingConnectionDisconnectedError}\n *   if your application is reconnecting due to a disruption in your signaling connection\n * @event Room#reconnecting\n * @example\n * myRoom.on('reconnecting', error => {\n *   if (error.code === 53001) {\n *     console.log('Reconnecting your signaling connection!', error.message);\n *   } else if (error.code === 53405) {\n *     console.log('Reconnecting your media connection!', error.message);\n *   }\n * });\n */\n/**\n * The {@link Room} is now being recorded\n * @event Room#recordingStarted\n */\n/**\n * The {@link Room} is no longer being recorded\n * @event Room#recordingStopped\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link VideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteVideoTrack}'s dimensions changed\n * @event Room#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents disabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   disabled the {@link RemoteTrack}\n * @event Room#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents enabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   enabled the {@link RemoteTrack}\n * @event Room#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}'s.\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n *   message was received\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteDataTrack} received the message\n * @event Room#trackMessage\n */\n/**\n * A {@link RemoteTrack} was published by a {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event Room#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the published {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   published the {@link RemoteTrack}\n * @example\n * function trackPublished(publication, participant) {\n *   console.log(`RemoteParticipant ${participant.sid} published Track ${publication.trackSid}`);\n * }\n *\n * // Handle RemoteTracks published after connecting to the Room.\n * room.on('trackPublished', trackPublished);\n *\n * room.on('participantConnected', participant => {\n *   // Handle RemoteTracks published while connecting to the Room.\n *   participant.trackPublications.forEach(publication => trackPublished(publication, participant));\n * });\n */\n/**\n * One of a {@link RemoteParticipant}'s {@link RemoteTrack}s in the {@link Room} started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} started\n * @event Room#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was subscribed\n * @event Room#trackSubscribed\n * @example\n * room.on('trackSubscribed', function(track, publication, participant) {\n *   var participantView = document.getElementById('participant-view-' + participant.identity);\n *   participantView.appendChild(track.attach());\n * });\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was switched off\n * @event Room#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was switched on\n * @event Room#trackSwitchedOn\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n *   be subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} could not be subscribed to\n * @event Room#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} changed priority\n * @event Room#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteTrack} was unpublished by a {@link RemoteParticipant} to the {@link Room}.\n * @event Room#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the unpublished {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   unpublished the {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was unsubscribed\n * @event Room#trackUnsubscribed\n * @example\n * room.on('trackUnsubscribed', function(track, publication, participant) {\n *   track.detach().forEach(function(mediaElement) {\n *     mediaElement.remove();\n *   });\n * });\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarning\n * @example\n * room.on('trackWarning', (name, publication, participant) => {\n *   if (name === 'recording-media-lost') {\n *     log(`LocalTrack ${publication.track.name} is not recording media.`,\n *       name, publication, participant);\n *\n *     // Wait a reasonable amount of time to clear the warning.\n *     const timer = setTimeout(() => {\n *       // If the warning is not cleared, you can manually\n *       // reconnect to the room, or show a dialog to the user\n *     }, 5000);\n *\n *     room.once('trackWarningsCleared', (publication, participant) => {\n *       log('LocalTrack warnings have cleared!',\n *         publication, participant);\n *       clearTimeout(timer);\n *     });\n *   }\n});\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarningsCleared\n */\nfunction connectParticipant(room, participantSignaling) {\n    var log = room._log, clientTrackSwitchOffControl = room._clientTrackSwitchOffControl, contentPreferencesMode = room._contentPreferencesMode;\n    var participant = new RemoteParticipant(participantSignaling, { log: log, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode });\n    log.info('A new RemoteParticipant connected:', participant);\n    room._participants.set(participant.sid, participant);\n    room.emit('participantConnected', participant);\n    // Reemit Track and RemoteParticipant events.\n    var eventListeners = [\n        ['reconnected', 'participantReconnected'],\n        ['reconnecting', 'participantReconnecting'],\n        'trackDimensionsChanged',\n        'trackDisabled',\n        'trackEnabled',\n        'trackMessage',\n        'trackPublished',\n        'trackPublishPriorityChanged',\n        'trackStarted',\n        'trackSubscribed',\n        'trackSubscriptionFailed',\n        'trackSwitchedOff',\n        'trackSwitchedOn',\n        'trackUnpublished',\n        'trackUnsubscribed'\n    ].map(function (eventOrPair) {\n        var _a = __read(Array.isArray(eventOrPair)\n            ? eventOrPair\n            : [eventOrPair, eventOrPair], 2), event = _a[0], participantEvent = _a[1];\n        function reemit() {\n            var args = [].slice.call(arguments);\n            args.unshift(participantEvent);\n            args.push(participant);\n            room.emit.apply(room, __spreadArray([], __read(args)));\n        }\n        participant.on(event, reemit);\n        return [event, reemit];\n    });\n    participant.once('disconnected', function participantDisconnected() {\n        var dominantSpeaker = room.dominantSpeaker;\n        log.info('RemoteParticipant disconnected:', participant);\n        room._participants.delete(participant.sid);\n        eventListeners.forEach(function (args) {\n            participant.removeListener(args[0], args[1]);\n        });\n        room.emit('participantDisconnected', participant);\n        if (participant === dominantSpeaker) {\n            room.emit('dominantSpeakerChanged', room.dominantSpeaker);\n        }\n    });\n}\nfunction handleLocalParticipantEvents(room, localParticipant) {\n    var events = ['trackWarning', 'trackWarningsCleared'].map(function (event) { return ({\n        eventName: event,\n        handler: function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return room.emit.apply(room, __spreadArray([event], __read(__spreadArray(__spreadArray([], __read(args)), [localParticipant]))));\n        },\n    }); });\n    events.forEach(function (_a) {\n        var eventName = _a.eventName, handler = _a.handler;\n        return localParticipant.on(eventName, handler);\n    });\n    room.once('disconnected', function () {\n        return events.forEach(function (_a) {\n            var eventName = _a.eventName, handler = _a.handler;\n            return localParticipant.removeListener(eventName, handler);\n        });\n    });\n}\nfunction handleRecordingEvents(room, recording) {\n    recording.on('updated', function updated() {\n        var started = recording.isEnabled;\n        room._log.info(\"Recording \" + (started ? 'started' : 'stopped'));\n        room.emit(\"recording\" + (started ? 'Started' : 'Stopped'));\n    });\n}\nfunction handleSignalingEvents(room, signaling) {\n    var log = room._log;\n    // Reemit RemoteParticipant events from the RoomSignaling.\n    log.debug('Creating a new RemoteParticipant for each ParticipantSignaling '\n        + 'in the RoomSignaling');\n    signaling.participants.forEach(connectParticipant.bind(null, room));\n    log.debug('Setting up RemoteParticipant creation for all subsequent '\n        + 'ParticipantSignalings that connect to the RoomSignaling');\n    signaling.on('participantConnected', connectParticipant.bind(null, room));\n    signaling.on('dominantSpeakerChanged', function () { return room.emit('dominantSpeakerChanged', room.dominantSpeaker); });\n    // Reemit state transition events from the RoomSignaling.\n    signaling.on('stateChanged', function stateChanged(state, error) {\n        log.info('Transitioned to state:', state);\n        switch (state) {\n            case 'disconnected':\n                room.participants.forEach(function (participant) {\n                    participant._unsubscribeTracks();\n                });\n                room.emit(state, room, error);\n                room.localParticipant.tracks.forEach(function (publication) {\n                    publication.unpublish();\n                });\n                signaling.removeListener('stateChanged', stateChanged);\n                break;\n            case 'reconnecting':\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return room.emit('reconnecting', error); }, 0);\n                break;\n            default:\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return room.emit('reconnected'); }, 0);\n        }\n    });\n}\nmodule.exports = Room;\n//# sourceMappingURL=room.js.map","'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar index_1 = require(\"../common/index\");\n// globally available injectables\nvar globals = {};\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar ARGUMENT_NAMES = /([^\\s,]+)/g;\n/**\n * A basic angular1-like injector api\n *\n * This object implements four methods similar to the\n * [angular 1 dependency injector](https://docs.angularjs.org/api/auto/service/$injector)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This object provides a naive implementation of a globally scoped dependency injection system.\n * It supports the following DI approaches:\n *\n * ### Function parameter names\n *\n * A function's `.toString()` is called, and the parameter names are parsed.\n * This only works when the parameter names aren't \"mangled\" by a minifier such as UglifyJS.\n *\n * ```js\n * function injectedFunction(FooService, BarService) {\n *   // FooService and BarService are injected\n * }\n * ```\n *\n * ### Function annotation\n *\n * A function may be annotated with an array of dependency names as the `$inject` property.\n *\n * ```js\n * injectedFunction.$inject = [ 'FooService', 'BarService' ];\n * function injectedFunction(fs, bs) {\n *   // FooService and BarService are injected as fs and bs parameters\n * }\n * ```\n *\n * ### Array notation\n *\n * An array provides the names of the dependencies to inject (as strings).\n * The function is the last element of the array.\n *\n * ```js\n * [ 'FooService', 'BarService', function (fs, bs) {\n *   // FooService and BarService are injected as fs and bs parameters\n * }]\n * ```\n *\n * @type {$InjectorLike}\n */\nexports.$injector = {\n    /** Gets an object from DI based on a string token */\n    get: function (name) { return globals[name]; },\n    /** Returns true if an object named `name` exists in global DI */\n    has: function (name) { return exports.$injector.get(name) != null; },\n    /**\n     * Injects a function\n     *\n     * @param fn the function to inject\n     * @param context the function's `this` binding\n     * @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`\n     */\n    invoke: function (fn, context, locals) {\n        var all = index_1.extend({}, globals, locals || {});\n        var params = exports.$injector.annotate(fn);\n        var ensureExist = index_1.assertPredicate(function (key) { return all.hasOwnProperty(key); }, function (key) { return \"DI can't find injectable: '\" + key + \"'\"; });\n        var args = params.filter(ensureExist).map(function (x) { return all[x]; });\n        if (index_1.isFunction(fn))\n            return fn.apply(context, args);\n        else\n            return fn.slice(-1)[0].apply(context, args);\n    },\n    /**\n     * Returns a function's dependencies\n     *\n     * Analyzes a function (or array) and returns an array of DI tokens that the function requires.\n     * @return an array of `string`s\n     */\n    annotate: function (fn) {\n        if (!index_1.isInjectable(fn))\n            throw new Error(\"Not an injectable function: \" + fn);\n        if (fn && fn.$inject)\n            return fn.$inject;\n        if (index_1.isArray(fn))\n            return fn.slice(0, -1);\n        var fnStr = fn.toString().replace(STRIP_COMMENTS, '');\n        var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n        return result || [];\n    },\n};\n//# sourceMappingURL=injector.js.map","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","(function() {\n    'use strict';\n    angular\n        .module('focus-if', [])\n        .directive('focusIf', focusIf);\n\n    focusIf.$inject = ['$timeout'];\n\n    function focusIf($timeout) {\n        function link($scope, $element, $attrs) {\n            var dom = $element[0];\n            if ($attrs.focusIf) {\n                $scope.$watch($attrs.focusIf, focus);\n            } else {\n                focus(true);\n            }\n            function focus(condition) {\n                if (condition) {\n                    $timeout(function() {\n                        dom.focus();\n                    }, $scope.$eval($attrs.focusDelay) || 0);\n                }\n            }\n        }\n        return {\n            restrict: 'A',\n            link: link\n        };\n    }\n})();\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isObject(searchValue) ? getMethod(searchValue, REPLACE) : undefined;\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var flags = toString(getRegExpFlags(rx));\n      var global = stringIndexOf(flags, 'g') !== -1;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = stringIndexOf(flags, 'u') !== -1;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n      as: as,\n      ref: ref,\n      className: classNames(classes, props.disabled && 'disabled')\n    }));\n  }\n\n  if (ref) {\n    props.ref = ref;\n  }\n\n  if (type) {\n    props.type = type;\n  } else if (!as) {\n    props.type = 'button';\n  }\n\n  var Component = as || 'button';\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    className: classes\n  }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar guessBrowser = require('../webrtc/util').guessBrowser;\nvar IceReportFactory = require('./icereportfactory');\nvar PeerConnectionReport = require('./peerconnectionreport');\nvar ReceiverReportFactory = require('./receiverreportfactory');\nvar SenderReportFactory = require('./senderreportfactory');\n/**\n * @typedef {string} TrackId\n */\n/**\n * @typedef {string} StatsId\n */\n/**\n * @interface SenderReportFactoriesByMediaType\n * @property {Map<StatsId, SenderReportFactory>} audio\n * @property {Map<StatsId, SenderReportFactory>} video\n */\n/**\n * @interface ReceiverReportFactoriesByMediaType\n * @property {Map<StatsId, ReceiverReportFactory>} audio\n * @property {Map<StatsId, ReceiverReportFactory>} video\n */\n/**\n * @interface SenderAndReceiverReportFactories\n * @property {Map<StatsId, SenderReportFactories>} send\n * @property {Map<StatsId, ReceiverReportFactories>} recv\n */\n/**\n * @interface {StatsIdsByMediaType}\n * @property {Set<StatsId>} audio\n * @property {Set<StatsId>} video\n */\n/**\n * @property {RTCPeerConnection} pc\n * @property {IceReportFactory} iceReportFactory\n * @property {SenderAndReceiverReportFactories} audio\n * @property {SenderAndReceiverReportFactories} video\n * @property {?PeerConnectionReport} lastReport\n */\nvar PeerConnectionReportFactory = /** @class */ (function () {\n    /**\n     * Construct a {@link PeerConnectionReportFactory}.\n     * @param {RTCPeerConnection} pc\n     */\n    function PeerConnectionReportFactory(pc) {\n        Object.defineProperties(this, {\n            pc: {\n                enumerable: true,\n                value: pc\n            },\n            ice: {\n                enumerable: true,\n                value: new IceReportFactory()\n            },\n            audio: {\n                enumerable: true,\n                value: {\n                    send: new Map(),\n                    recv: new Map()\n                }\n            },\n            video: {\n                enumerable: true,\n                value: {\n                    send: new Map(),\n                    recv: new Map()\n                }\n            },\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Create a {@link PeerConnectionReport}.\n     * @returns {Promise<PeerConnectionReport>}\n     */\n    PeerConnectionReportFactory.prototype.next = function () {\n        var _this = this;\n        var updatePromise = guessBrowser() === 'firefox'\n            ? updateFirefox(this)\n            : updateChrome(this);\n        return updatePromise.then(function () {\n            var audioSenderReportFactories = __spreadArray([], __read(_this.audio.send.values()));\n            var videoSenderReportFactories = __spreadArray([], __read(_this.video.send.values()));\n            var audioReceiverReportFactories = __spreadArray([], __read(_this.audio.recv.values()));\n            var videoReceiverReportFactories = __spreadArray([], __read(_this.video.recv.values()));\n            var report = new PeerConnectionReport(_this.ice.lastReport, {\n                send: audioSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n                recv: audioReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n            }, {\n                send: videoSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n                recv: videoReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n            });\n            _this.lastReport = report;\n            return report;\n        });\n    };\n    return PeerConnectionReportFactory;\n}());\n/**\n * Construct a Map from MediaStreamTrack Ids to RTCStatsReports.\n * @param {Array<RTCRtpSender>|Array<RTCRtpReceiver>} sendersOrReceivers - each\n *   RTCRtpSender should have a non-null track\n * @returns {Promise<Map<TrackId, RTCStats>>}\n */\nfunction getSenderOrReceiverReports(sendersOrReceivers) {\n    return Promise.all(sendersOrReceivers.map(function (senderOrReceiver) {\n        var trackId = senderOrReceiver.track.id;\n        return senderOrReceiver.getStats().then(function (report) {\n            var e_1, _a;\n            try {\n                // NOTE(mroberts): We have to rewrite Ids due to this bug:\n                //\n                //   https://bugzilla.mozilla.org/show_bug.cgi?id=1463430\n                //\n                for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var stats = _c.value;\n                    if (stats.type === 'inbound-rtp') {\n                        stats.id = trackId + \"-\" + stats.id;\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return [trackId, report];\n        });\n    })).then(function (pairs) { return new Map(pairs); });\n}\n/**\n * @param {SenderReportFactory.constructor} SenderReportFactory\n * @param {SenderReportFactoriesByMediaType} sendersByMediaType\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */ /**\n* @param {ReceiverReportFactory.constructor} ReceiverReportFactory\n* @param {ReceiverReportFactoriesByMediaType} receiversByMediaType\n* @param {RTCStatsReport} report\n* @param {RTCStats} stats\n* @param {TrackId} [trackId]\n* @returns {?ReceiverReportFactory}\n*/\nfunction getOrCreateSenderOrReceiverReportFactory(SenderOrReceiverReportFactory, sendersOrReceiversByMediaType, report, stats, trackId) {\n    var sendersOrReceivers = sendersOrReceiversByMediaType[stats.mediaType];\n    if (!trackId) {\n        var trackStats = report.get(stats.trackId);\n        if (trackStats) {\n            trackId = trackStats.trackIdentifier;\n        }\n    }\n    if (sendersOrReceivers && trackId) {\n        if (sendersOrReceivers.has(stats.id)) {\n            return sendersOrReceivers.get(stats.id);\n        }\n        var senderOrReceiverFactory = new SenderOrReceiverReportFactory(trackId, stats);\n        sendersOrReceivers.set(stats.id, senderOrReceiverFactory);\n    }\n    return null;\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {SenderReportFactoriesByMediaType}\n */\nfunction getSenderReportFactoriesByMediaType(factory) {\n    return { audio: factory.audio.send, video: factory.video.send };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {ReceiverReportFactoriesByMediaType}\n */\nfunction getReceiverReportFactoriesByMediaType(factory) {\n    return { audio: factory.audio.recv, video: factory.video.recv };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */\nfunction getOrCreateSenderReportFactory(factory, report, stats, trackId) {\n    return getOrCreateSenderOrReceiverReportFactory(SenderReportFactory, getSenderReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?ReceiverReportFactory}\n */\nfunction getOrCreateReceiverReportFactory(factory, report, stats, trackId) {\n    return getOrCreateSenderOrReceiverReportFactory(ReceiverReportFactory, getReceiverReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getSenderReportFactoryIdsByMediaType(factory) {\n    return {\n        audio: new Set(factory.audio.send.keys()),\n        video: new Set(factory.video.send.keys())\n    };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getReceiverReportFactoryIdsByMediaType(factory) {\n    return {\n        audio: new Set(factory.audio.recv.keys()),\n        video: new Set(factory.video.recv.keys())\n    };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} senderReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId) {\n    var e_2, _a;\n    try {\n        for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var stats = _c.value;\n            if (stats.type === 'outbound-rtp' && !stats.isRemote) {\n                if (guessBrowser() !== 'firefox' && !stats.trackId) {\n                    continue;\n                }\n                var senderReportFactoryIdsToDelete = senderReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n                if (senderReportFactoryIdsToDelete) {\n                    senderReportFactoryIdsToDelete.delete(stats.id);\n                }\n                var senderReportFactory = getOrCreateSenderReportFactory(factory, report, stats, trackId);\n                if (senderReportFactory) {\n                    var remoteInboundStats = report.get(stats.remoteId);\n                    senderReportFactory.next(trackId || senderReportFactory.trackId, stats, remoteInboundStats);\n                }\n            }\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} receiverReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId) {\n    var e_3, _a;\n    try {\n        for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var stats = _c.value;\n            if (stats.type === 'inbound-rtp' && !stats.isRemote) {\n                var receiverReportFactoryIdsToDelete = receiverReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n                if (receiverReportFactoryIdsToDelete) {\n                    receiverReportFactoryIdsToDelete.delete(stats.id);\n                }\n                var receiverReportFactory = getOrCreateReceiverReportFactory(factory, report, stats, trackId);\n                if (receiverReportFactory) {\n                    receiverReportFactory.next(trackId || receiverReportFactory.trackId, stats);\n                }\n            }\n        }\n    }\n    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_3) throw e_3.error; }\n    }\n}\n/**\n * @param {SenderReportFactoriesByMediaType|ReceiverReportFactoriesByMediaType} senderOrReceiverReportFactoriesByMediaType\n * @param {StatsIdsByMediaType} senderOrReceiverReportFactoryIdsByMediaType\n * @returns {void}\n */\nfunction deleteSenderOrReceiverReportFactories(senderOrReceiverReportFactoriesByMediaType, senderOrReceiverReportFactoryIdsByMediaType) {\n    var _loop_1 = function (mediaType) {\n        var senderOrReceiverReportFactories = senderOrReceiverReportFactoriesByMediaType[mediaType];\n        var senderOrReceiverReportFactoryIds = senderOrReceiverReportFactoryIdsByMediaType[mediaType];\n        senderOrReceiverReportFactoryIds.forEach(function (senderOrReceiverReportFactoryId) { return senderOrReceiverReportFactories.delete(senderOrReceiverReportFactoryId); });\n    };\n    for (var mediaType in senderOrReceiverReportFactoryIdsByMediaType) {\n        _loop_1(mediaType);\n    }\n}\n/**\n * @param {IceReportFactory} ice\n * @param {RTCStatsReport} report\n * @returns {void}\n */\nfunction updateIceReport(ice, report) {\n    var e_4, _a, e_5, _b;\n    var selectedCandidatePair;\n    try {\n        for (var _c = __values(report.values()), _d = _c.next(); !_d.done; _d = _c.next()) {\n            var stats = _d.value;\n            if (stats.type === 'transport') {\n                selectedCandidatePair = report.get(stats.selectedCandidatePairId);\n            }\n        }\n    }\n    catch (e_4_1) { e_4 = { error: e_4_1 }; }\n    finally {\n        try {\n            if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n        }\n        finally { if (e_4) throw e_4.error; }\n    }\n    if (selectedCandidatePair) {\n        ice.next(selectedCandidatePair);\n        return;\n    }\n    try {\n        for (var _e = __values(report.values()), _f = _e.next(); !_f.done; _f = _e.next()) {\n            var stats = _f.value;\n            if (stats.type === 'candidate-pair'\n                && stats.nominated\n                && ('selected' in stats ? stats.selected : true)) {\n                ice.next(stats);\n            }\n        }\n    }\n    catch (e_5_1) { e_5 = { error: e_5_1 }; }\n    finally {\n        try {\n            if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n        }\n        finally { if (e_5) throw e_5.error; }\n    }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise<PeerConnectionReport>}\n */\nfunction updateFirefox(factory) {\n    var senders = factory.pc.getTransceivers()\n        .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/send/) && transceiver.sender.track; })\n        .map(function (transceiver) { return transceiver.sender; });\n    var receivers = factory.pc.getTransceivers()\n        .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/recv/); })\n        .map(function (transceiver) { return transceiver.receiver; });\n    return Promise.all([\n        getSenderOrReceiverReports(senders),\n        getSenderOrReceiverReports(receivers),\n        factory.pc.getStats()\n    ]).then(function (_a) {\n        var _b = __read(_a, 3), senderReports = _b[0], receiverReports = _b[1], pcReport = _b[2];\n        var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n        var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n        senderReports.forEach(function (report, trackId) { return updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId); });\n        deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n        var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n        var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n        receiverReports.forEach(function (report, trackId) { return updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId); });\n        deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n        updateIceReport(factory.ice, pcReport);\n    });\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise<PeerConnectionReport>}\n */\nfunction updateChrome(factory) {\n    return factory.pc.getStats().then(function (report) {\n        var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n        var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n        updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType);\n        deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n        var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n        var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n        updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType);\n        deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n        updateIceReport(factory.ice, report);\n    });\n}\nmodule.exports = PeerConnectionReportFactory;\n//# sourceMappingURL=peerconnectionreportfactory.js.map","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n","// Unique ID creation requires a high quality random # generator.  In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API.  We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n  module.exports = function whatwgRNG() {\n    getRandomValues(rnds8);\n    return rnds8;\n  };\n} else {\n  // Math.random()-based (RNG)\n  //\n  // If all else fails, use Math.random().  It's fast, but is of unspecified\n  // quality.\n  var rnds = new Array(16);\n\n  module.exports = function mathRNG() {\n    for (var i = 0, r; i < 16; i++) {\n      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n    }\n\n    return rnds;\n  };\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt !== parseInt }, {\n  parseInt: parseInt\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar trace_1 = require(\"../common/trace\");\nvar strings_1 = require(\"../common/strings\");\nvar predicates_1 = require(\"../common/predicates\");\nvar predicates_2 = require(\"../common/predicates\");\n// TODO: explicitly make this user configurable\nexports.defaultResolvePolicy = {\n    when: 'LAZY',\n    async: 'WAIT',\n};\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nvar Resolvable = /** @class */ (function () {\n    function Resolvable(arg1, resolveFn, deps, policy, data) {\n        this.resolved = false;\n        this.promise = undefined;\n        if (arg1 instanceof Resolvable) {\n            common_1.extend(this, arg1);\n        }\n        else if (predicates_1.isFunction(resolveFn)) {\n            if (predicates_2.isNullOrUndefined(arg1))\n                throw new Error('new Resolvable(): token argument is required');\n            if (!predicates_1.isFunction(resolveFn))\n                throw new Error('new Resolvable(): resolveFn argument must be a function');\n            this.token = arg1;\n            this.policy = policy;\n            this.resolveFn = resolveFn;\n            this.deps = deps || [];\n            this.data = data;\n            this.resolved = data !== undefined;\n            this.promise = this.resolved ? coreservices_1.services.$q.when(this.data) : undefined;\n        }\n        else if (predicates_1.isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n            var literal = arg1;\n            return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n        }\n    }\n    Resolvable.prototype.getPolicy = function (state) {\n        var thisPolicy = this.policy || {};\n        var statePolicy = state && state.resolvePolicy || {};\n        return {\n            when: thisPolicy.when || statePolicy.when || exports.defaultResolvePolicy.when,\n            async: thisPolicy.async || statePolicy.async || exports.defaultResolvePolicy.async,\n        };\n    };\n    /**\n     * Asynchronously resolve this Resolvable's data\n     *\n     * Given a ResolveContext that this Resolvable is found in:\n     * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n     * and update the Resolvable's state\n     */\n    Resolvable.prototype.resolve = function (resolveContext, trans) {\n        var _this = this;\n        var $q = coreservices_1.services.$q;\n        // Gets all dependencies from ResolveContext and wait for them to be resolved\n        var getResolvableDependencies = function () {\n            return $q.all(resolveContext.getDependencies(_this).map(function (resolvable) {\n                return resolvable.get(resolveContext, trans);\n            }));\n        };\n        // Invokes the resolve function passing the resolved dependencies as arguments\n        var invokeResolveFn = function (resolvedDeps) {\n            return _this.resolveFn.apply(null, resolvedDeps);\n        };\n        /**\n         * For RXWAIT policy:\n         *\n         * Given an observable returned from a resolve function:\n         * - enables .cache() mode (this allows multicast subscribers)\n         * - then calls toPromise() (this triggers subscribe() and thus fetches)\n         * - Waits for the promise, then return the cached observable (not the first emitted value).\n         */\n        var waitForRx = function (observable$) {\n            var cached = observable$.cache(1);\n            return cached.take(1).toPromise().then(function () { return cached; });\n        };\n        // If the resolve policy is RXWAIT, wait for the observable to emit something. otherwise pass through.\n        var node = resolveContext.findNode(this);\n        var state = node && node.state;\n        var maybeWaitForRx = this.getPolicy(state).async === 'RXWAIT' ? waitForRx : common_1.identity;\n        // After the final value has been resolved, update the state of the Resolvable\n        var applyResolvedValue = function (resolvedValue) {\n            _this.data = resolvedValue;\n            _this.resolved = true;\n            _this.resolveFn = null;\n            trace_1.trace.traceResolvableResolved(_this, trans);\n            return _this.data;\n        };\n        // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n        return this.promise = $q.when()\n            .then(getResolvableDependencies)\n            .then(invokeResolveFn)\n            .then(maybeWaitForRx)\n            .then(applyResolvedValue);\n    };\n    /**\n     * Gets a promise for this Resolvable's data.\n     *\n     * Fetches the data and returns a promise.\n     * Returns the existing promise if it has already been fetched once.\n     */\n    Resolvable.prototype.get = function (resolveContext, trans) {\n        return this.promise || this.resolve(resolveContext, trans);\n    };\n    Resolvable.prototype.toString = function () {\n        return \"Resolvable(token: \" + strings_1.stringify(this.token) + \", requires: [\" + this.deps.map(strings_1.stringify) + \"])\";\n    };\n    Resolvable.prototype.clone = function () {\n        return new Resolvable(this);\n    };\n    Resolvable.fromData = function (token, data) {\n        return new Resolvable(token, function () { return data; }, null, null, data);\n    };\n    return Resolvable;\n}());\nexports.Resolvable = Resolvable;\n//# sourceMappingURL=resolvable.js.map","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar Participant = require('./participant');\n/**\n * A {@link RemoteParticipant} represents a remote {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map<Track.SID, RemoteAudioTrackPublication>} audioTracks -\n *    The {@link Participant}'s {@link RemoteAudioTrackPublication}s\n * @property {Map<Track.SID, RemoteDataTrackPublication>} dataTracks -\n *    The {@link Participant}'s {@link RemoteDataTrackPublication}s\n * @property {Map<Track.SID, RemoteTrackPublication>} tracks -\n *    The {@link Participant}'s {@link RemoteTrackPublication}s\n * @property {Map<Track.SID, RemoteVideoTrackPublication>} videoTracks -\n *    The {@link Participant}'s {@link RemoteVideoTrackPublication}s\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits RemoteParticipant#trackDimensionsChanged\n * @emits RemoteParticipant#trackDisabled\n * @emits RemoteParticipant#trackEnabled\n * @emits RemoteParticipant#trackMessage\n * @emits RemoteParticipant#trackPublished\n * @emits RemoteParticipant#trackPublishPriorityChanged\n * @emits RemoteParticipant#trackStarted\n * @emits RemoteParticipant#trackSubscribed\n * @emits RemoteParticipant#trackSubscriptionFailed\n * @emits RemoteParticipant#trackSwitchedOff\n * @emits RemoteParticipant#trackSwitchedOn\n * @emits RemoteParticipant#trackUnpublished\n * @emits RemoteParticipant#trackUnsubscribed\n */\nvar RemoteParticipant = /** @class */ (function (_super) {\n    __extends(RemoteParticipant, _super);\n    /**\n     * Construct a {@link RemoteParticipant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {object} [options]\n     */\n    function RemoteParticipant(signaling, options) {\n        var _this = _super.call(this, signaling, options) || this;\n        _this._handleTrackSignalingEvents();\n        _this.once('disconnected', _this._unsubscribeTracks.bind(_this));\n        return _this;\n    }\n    RemoteParticipant.prototype.toString = function () {\n        return \"[RemoteParticipant #\" + this._instanceId + (this.sid ? \": \" + this.sid : '') + \"]\";\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} remoteTrack\n     * @param {RemoteTrackPublication} publication\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    RemoteParticipant.prototype._addTrack = function (remoteTrack, publication, id) {\n        if (!_super.prototype._addTrack.call(this, remoteTrack, id)) {\n            return null;\n        }\n        publication._subscribed(remoteTrack);\n        this.emit('trackSubscribed', remoteTrack, publication);\n        return remoteTrack;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    RemoteParticipant.prototype._addTrackPublication = function (publication) {\n        var addedPublication = _super.prototype._addTrackPublication.call(this, publication);\n        if (!addedPublication) {\n            return null;\n        }\n        this.emit('trackPublished', addedPublication);\n        return addedPublication;\n    };\n    /**\n     * @private\n     */\n    RemoteParticipant.prototype._getTrackPublicationEvents = function () {\n        return __spreadArray(__spreadArray([], __read(_super.prototype._getTrackPublicationEvents.call(this))), [\n            ['subscriptionFailed', 'trackSubscriptionFailed'],\n            ['trackDisabled', 'trackDisabled'],\n            ['trackEnabled', 'trackEnabled'],\n            ['publishPriorityChanged', 'trackPublishPriorityChanged'],\n            ['trackSwitchedOff', 'trackSwitchedOff'],\n            ['trackSwitchedOn', 'trackSwitchedOn']\n        ]);\n    };\n    /**\n     * @private\n     */\n    RemoteParticipant.prototype._unsubscribeTracks = function () {\n        var _this = this;\n        this.tracks.forEach(function (publication) {\n            if (publication.isSubscribed) {\n                var track = publication.track;\n                publication._unsubscribe();\n                _this.emit('trackUnsubscribed', track, publication);\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} remoteTrack\n     * @param {RemoteTrackPublication} publication\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    RemoteParticipant.prototype._removeTrack = function (remoteTrack, publication, id) {\n        var unsubscribedTrack = this._tracks.get(id);\n        if (!unsubscribedTrack) {\n            return null;\n        }\n        _super.prototype._removeTrack.call(this, unsubscribedTrack, id);\n        publication._unsubscribe();\n        this.emit('trackUnsubscribed', unsubscribedTrack, publication);\n        return unsubscribedTrack;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    RemoteParticipant.prototype._removeTrackPublication = function (publication) {\n        this._signaling.clearTrackHint(publication.trackSid);\n        var removedPublication = _super.prototype._removeTrackPublication.call(this, publication);\n        if (!removedPublication) {\n            return null;\n        }\n        this.emit('trackUnpublished', removedPublication);\n        return removedPublication;\n    };\n    return RemoteParticipant;\n}(Participant));\n/**\n * The {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnected\n */\n/**\n * The {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnecting\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @event RemoteParticipant#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the disabled {@link RemoteTrack}\n * @event RemoteParticipant#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the enabled {@link RemoteTrack}\n * @event RemoteParticipant#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}s.\n * @event RemoteParticipant#trackMessage\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n *   message was received\n */\n/**\n * A {@link RemoteTrack} was published by the {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event RemoteParticipant#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the published {@link RemoteTrack}\n * @example\n * function trackPublished(publication) {\n *   console.log(`Track ${publication.trackSid} was published`);\n * }\n *\n * room.on('participantConnected', participant => {\n *   // Handle RemoteTracks published while connecting to the Room.\n *   participant.trackPublications.forEach(trackPublished);\n *\n *   // Handle RemoteTracks published after connecting to the Room.\n *   participant.on('trackPublished', trackPublished);\n * });\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteTrack}s started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @event RemoteParticipant#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed to\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @event RemoteParticipant#trackSubscribed\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n *   be subscribed to\n * @event RemoteParticipant#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrackPublication}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @event RemoteParticipant#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was switched off\n * @event RemoteParticipant#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was switched on\n * @event RemoteParticipant#trackSwitchedOn\n */\n/**\n * A {@link RemoteTrack} was unpublished by the {@link RemoteParticipant}.\n * @event RemoteParticipant#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the unpublished {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteParticipant#trackUnsubscribed\n */\nmodule.exports = RemoteParticipant;\n//# sourceMappingURL=remoteparticipant.js.map","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.from-async');\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar coreservices_1 = require(\"../common/coreservices\");\n/**\n * A [[TransitionHookFn]] that performs lazy loading\n *\n * When entering a state \"abc\" which has a `lazyLoad` function defined:\n * - Invoke the `lazyLoad` function (unless it is already in process)\n *   - Flag the hook function as \"in process\"\n *   - The function should return a promise (that resolves when lazy loading is complete)\n * - Wait for the promise to settle\n *   - If the promise resolves to a [[LazyLoadResult]], then register those states\n *   - Flag the hook function as \"not in process\"\n * - If the hook was successful\n *   - Remove the `lazyLoad` function from the state declaration\n * - If all the hooks were successful\n *   - Retry the transition (by returning a TargetState)\n *\n * ```\n * .state('abc', {\n *   component: 'fooComponent',\n *   lazyLoad: () => System.import('./fooComponent')\n *   });\n * ```\n *\n * See [[StateDeclaration.lazyLoad]]\n */\nvar lazyLoadHook = function (transition) {\n    var router = transition.router;\n    function retryTransition() {\n        if (transition.originalTransition().options().source !== 'url') {\n            // The original transition was not triggered via url sync\n            // The lazy state should be loaded now, so re-try the original transition\n            var orig = transition.targetState();\n            return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n        }\n        // The original transition was triggered via url sync\n        // Run the URL rules and find the best match\n        var $url = router.urlService;\n        var result = $url.match($url.parts());\n        var rule = result && result.rule;\n        // If the best match is a state, redirect the transition (instead\n        // of calling sync() which supersedes the current transition)\n        if (rule && rule.type === 'STATE') {\n            var state = rule.state;\n            var params = result.match;\n            return router.stateService.target(state, params, transition.options());\n        }\n        // No matching state found, so let .sync() choose the best non-state match/otherwise\n        router.urlService.sync();\n    }\n    var promises = transition.entering()\n        .filter(function (state) { return !!state.$$state().lazyLoad; })\n        .map(function (state) { return lazyLoadState(transition, state); });\n    return coreservices_1.services.$q.all(promises).then(retryTransition);\n};\nexports.registerLazyLoadHook = function (transitionService) {\n    return transitionService.onBefore({ entering: function (state) { return !!state.lazyLoad; } }, lazyLoadHook);\n};\n/**\n * Invokes a state's lazy load function\n *\n * @param transition a Transition context\n * @param state the state to lazy load\n * @returns A promise for the lazy load result\n */\nfunction lazyLoadState(transition, state) {\n    var lazyLoadFn = state.$$state().lazyLoad;\n    // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n    var promise = lazyLoadFn['_promise'];\n    if (!promise) {\n        var success = function (result) {\n            delete state.lazyLoad;\n            delete state.$$state().lazyLoad;\n            delete lazyLoadFn['_promise'];\n            return result;\n        };\n        var error = function (err) {\n            delete lazyLoadFn['_promise'];\n            return coreservices_1.services.$q.reject(err);\n        };\n        promise = lazyLoadFn['_promise'] =\n            coreservices_1.services.$q.when(lazyLoadFn(transition, state))\n                .then(updateStateRegistry)\n                .then(success, error);\n    }\n    /** Register any lazy loaded state definitions */\n    function updateStateRegistry(result) {\n        if (result && Array.isArray(result.states)) {\n            result.states.forEach(function (_state) { return transition.router.stateRegistry.register(_state); });\n        }\n        return result;\n    }\n    return promise;\n}\nexports.lazyLoadState = lazyLoadState;\n//# sourceMappingURL=lazyLoad.js.map","'use strict';\nmodule.exports = {};\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone:\n                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","'use strict';\n/**\n * Fraction lost network quality statistics.\n * @property {?number} fractionLost - packets lost\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for fraction lost\n */\nvar NetworkQualityFractionLostStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityFractionLostStats}.\n     * @param {FractionLostStats} fractionLostStats\n     */\n    function NetworkQualityFractionLostStats(_a) {\n        var _b = _a.fractionLost, fractionLost = _b === void 0 ? null : _b, _c = _a.level, level = _c === void 0 ? null : _c;\n        Object.defineProperties(this, {\n            fractionLost: {\n                value: fractionLost,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityFractionLostStats;\n}());\nmodule.exports = NetworkQualityFractionLostStats;\n//# sourceMappingURL=networkqualityfractionloststats.js.map","'use strict';\nvar ReceiverReport = require('./receiverreport');\nvar SenderReport = require('./senderreport');\n/**\n * @interface SenderAndReceiverReports\n * @property {Array<SenderReport>} send\n * @property {Array<ReceiverReport>} recv\n */\n/**\n * @interface SenderAndReceiverSummary\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n */\n/**\n * @interface PeerConnectionSummary\n * @property {IceReport} ice\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n * @property {SenderAndReceiverSummary} audio\n * @property {SenderAndReceiverSummary} video\n */\n/**\n * @property {IceReport} ice\n * @roperty {SenderAndReceiverReports} audio\n * @roperty {SenderAndReceiverReports} video\n */\nvar PeerConnectionReport = /** @class */ (function () {\n    /**\n     * Construct a {@link PeerConnectionReport}.\n     * @param {IceReport} ice\n     * @param {SenderAndReceiverReports} audio\n     * @param {SenderAndReceiverReports} video\n     */\n    function PeerConnectionReport(ice, audio, video) {\n        Object.defineProperties(this, {\n            ice: {\n                enumerable: true,\n                value: ice\n            },\n            audio: {\n                enumerable: true,\n                value: audio\n            },\n            video: {\n                enumerable: true,\n                value: video\n            }\n        });\n    }\n    /**\n     * Summarize the {@link PeerConnectionReport} by summarizing its\n     * {@link SenderReport}s and {@link ReceiverReport}s.\n     * @returns {PeerConnectionSummary}\n     */\n    PeerConnectionReport.prototype.summarize = function () {\n        var senderReports = this.audio.send.concat(this.video.send);\n        var send = SenderReport.summarize(senderReports);\n        var receiverReports = this.audio.recv.concat(this.video.recv);\n        var recv = ReceiverReport.summarize(receiverReports);\n        return {\n            ice: this.ice,\n            send: send,\n            recv: recv,\n            audio: {\n                send: SenderReport.summarize(this.audio.send),\n                recv: ReceiverReport.summarize(this.audio.recv)\n            },\n            video: {\n                send: SenderReport.summarize(this.video.send),\n                recv: ReceiverReport.summarize(this.video.recv)\n            }\n        };\n    };\n    return PeerConnectionReport;\n}());\nmodule.exports = PeerConnectionReport;\n//# sourceMappingURL=peerconnectionreport.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\nvar SenderReport = require('./senderreport');\n/**\n * @extends {SenderOrReceiverReportFactory}\n * @property {?SenderReport} lastReport\n */\nvar SenderReportFactory = /** @class */ (function (_super) {\n    __extends(SenderReportFactory, _super);\n    /**\n     * Construct a {@link SenderReportFactory}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function SenderReportFactory(trackId, initialStats) {\n        var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n        Object.defineProperties(_this, {\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * @param {TrackId} trackId\n     * @param {RTCStats} newerStats\n     * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n     * @returns {SenderReport}\n     */\n    SenderReportFactory.prototype.next = function (trackId, newerStats, newerRemoteStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        this.trackId = trackId;\n        var report = SenderReport.of(trackId, olderStats, newerStats, newerRemoteStats);\n        this.lastReport = report;\n        return report;\n    };\n    return SenderReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = SenderReportFactory;\n//# sourceMappingURL=senderreportfactory.js.map","'use strict';\nvar $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n","var matchesImpl;\nexport default function matches(node, selector) {\n  if (!matchesImpl) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n    matchesImpl = function matchesImpl(n, s) {\n      return nativeMatch.call(n, s);\n    };\n  }\n\n  return matchesImpl(node, selector);\n}","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: PropTypes.string,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Sets the initial show position of the Dropdown.\n   */\n  defaultShow: PropTypes.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```ts static\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: PropTypes.func\n};\n\n/**\n * @displayName Dropdown\n */\nfunction Dropdown(_ref) {\n  var drop = _ref.drop,\n      alignEnd = _ref.alignEnd,\n      defaultShow = _ref.defaultShow,\n      rawShow = _ref.show,\n      rawOnToggle = _ref.onToggle,\n      _ref$itemSelector = _ref.itemSelector,\n      itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n      focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n      children = _ref.children;\n  var forceUpdate = useForceUpdate();\n\n  var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n      show = _useUncontrolledProp[0],\n      onToggle = _useUncontrolledProp[1];\n\n  var _useCallbackRef = useCallbackRef(),\n      toggleElement = _useCallbackRef[0],\n      setToggle = _useCallbackRef[1]; // We use normal refs instead of useCallbackRef in order to populate the\n  // the value as quickly as possible, otherwise the effect to focus the element\n  // may run before the state value is set\n\n\n  var menuRef = useRef(null);\n  var menuElement = menuRef.current;\n  var setMenu = useCallback(function (ref) {\n    menuRef.current = ref; // ensure that a menu set triggers an update for consumers\n\n    forceUpdate();\n  }, [forceUpdate]);\n  var lastShow = usePrevious(show);\n  var lastSourceEvent = useRef(null);\n  var focusInDropdown = useRef(false);\n  var toggle = useCallback(function (event) {\n    onToggle(!show, event);\n  }, [onToggle, show]);\n  var context = useMemo(function () {\n    return {\n      toggle: toggle,\n      drop: drop,\n      show: show,\n      alignEnd: alignEnd,\n      menuElement: menuElement,\n      toggleElement: toggleElement,\n      setMenu: setMenu,\n      setToggle: setToggle\n    };\n  }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n  if (menuElement && lastShow && !show) {\n    focusInDropdown.current = menuElement.contains(document.activeElement);\n  }\n\n  var focusToggle = useEventCallback(function () {\n    if (toggleElement && toggleElement.focus) {\n      toggleElement.focus();\n    }\n  });\n  var maybeFocusFirst = useEventCallback(function () {\n    var type = lastSourceEvent.current;\n    var focusType = focusFirstItemOnShow;\n\n    if (focusType == null) {\n      focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n    }\n\n    if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var first = qsa(menuRef.current, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  });\n  useEffect(function () {\n    if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n      focusInDropdown.current = false;\n      focusToggle();\n    } // only `show` should be changing\n  }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n  useEffect(function () {\n    lastSourceEvent.current = null;\n  });\n\n  var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!menuRef.current) return null;\n    var items = qsa(menuRef.current, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    var key = event.key;\n    var target = event.target; // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n    // in inscrutability\n\n    var isInput = /input|textarea/i.test(target.tagName);\n\n    if (isInput && (key === ' ' || key !== 'Escape' && menuRef.current && menuRef.current.contains(target))) {\n      return;\n    }\n\n    lastSourceEvent.current = event.type;\n\n    switch (key) {\n      case 'ArrowUp':\n        {\n          var next = getNextFocusedChild(target, -1);\n          if (next && next.focus) next.focus();\n          event.preventDefault();\n          return;\n        }\n\n      case 'ArrowDown':\n        event.preventDefault();\n\n        if (!show) {\n          toggle(event);\n        } else {\n          var _next = getNextFocusedChild(target, 1);\n\n          if (_next && _next.focus) _next.focus();\n        }\n\n        return;\n\n      case 'Escape':\n      case 'Tab':\n        onToggle(false, event);\n        break;\n\n      default:\n    }\n  };\n\n  return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n    value: context\n  }, children({\n    props: {\n      onKeyDown: handleKeyDown\n    }\n  }));\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  as: SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = useContext(SelectableContext);\n  var navContext = useContext(NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey; // TODO: Restrict eventKey to string in v5?\n\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return (\n    /*#__PURE__*/\n    // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n    // @ts-ignore\n    React.createElement(Component, _extends({}, props, {\n      ref: ref,\n      href: href,\n      disabled: disabled,\n      className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n      onClick: handleClick\n    }), children)\n  );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar DropdownHeader = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nvar DropdownDivider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\nvar DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n  Component: 'span'\n});\nvar defaultProps = {\n  navbar: false\n};\nvar Dropdown = /*#__PURE__*/React.forwardRef(function (pProps, ref) {\n  var _useUncontrolled = useUncontrolled(pProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"]);\n\n  var onSelectCtx = useContext(SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document) source = 'rootClose';\n\n    if (onToggle) {\n      onToggle(nextShow, event, {\n        source: source\n      });\n    }\n  });\n  var handleSelect = useEventCallback(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleSelect\n  }, /*#__PURE__*/React.createElement(BaseDropdown, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n  }, function (_ref) {\n    var dropdownProps = _ref.props;\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, dropdownProps, {\n      ref: ref,\n      className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n    }));\n  }));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.ItemText = DropdownItemText;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","'use strict';\nvar defer = require('./').defer;\n/**\n * This is a pair of Deferreds that are set whenever local media is muted and\n * resolved whenever local media is unmuted/ended and restarted if necessary.\n */\nvar LocalMediaRestartDeferreds = /** @class */ (function () {\n    /**\n     * Constructor.\n     */\n    function LocalMediaRestartDeferreds() {\n        Object.defineProperties(this, {\n            _audio: {\n                value: defer(),\n                writable: true\n            },\n            _video: {\n                value: defer(),\n                writable: true\n            }\n        });\n        // Initially, resolve both the Deferreds.\n        this._audio.resolve();\n        this._video.resolve();\n    }\n    /**\n     * Resolve the Deferred for audio or video.\n     * @param {'audio'|'video'} kind\n     */\n    LocalMediaRestartDeferreds.prototype.resolveDeferred = function (kind) {\n        if (kind === 'audio') {\n            this._audio.resolve();\n        }\n        else {\n            this._video.resolve();\n        }\n    };\n    /**\n     * Start the Deferred for audio or video.\n     * @param {'audio' | 'video'} kind\n     */\n    LocalMediaRestartDeferreds.prototype.startDeferred = function (kind) {\n        if (kind === 'audio') {\n            this._audio = defer();\n        }\n        else {\n            this._video = defer();\n        }\n    };\n    /**\n     * Wait until the Deferred for audio or video is resolved.\n     * @param {'audio'|'video'} kind\n     * @returns {Promise<void>}\n     */\n    LocalMediaRestartDeferreds.prototype.whenResolved = function (kind) {\n        return kind === 'audio' ? this._audio.promise : this._video.promise;\n    };\n    return LocalMediaRestartDeferreds;\n}());\nmodule.exports = new LocalMediaRestartDeferreds();\n//# sourceMappingURL=localmediarestartdeferreds.js.map","'use strict';\nif (typeof RTCPeerConnection === 'function') {\n    var guessBrowser = require('../util').guessBrowser;\n    switch (guessBrowser()) {\n        case 'chrome':\n            module.exports = require('./chrome');\n            break;\n        case 'firefox':\n            module.exports = require('./firefox');\n            break;\n        case 'safari':\n            module.exports = require('./safari');\n            break;\n        default:\n            module.exports = RTCPeerConnection;\n            break;\n    }\n}\nelse {\n    module.exports = function RTCPeerConnection() {\n        throw new Error('RTCPeerConnection is not supported');\n    };\n}\n//# sourceMappingURL=index.js.map","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseIntersection;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: PropTypes.string,\n\n  /** Display feedback as a tooltip. */\n  tooltip: PropTypes.bool,\n  as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'valid' : _ref$type,\n      _ref$tooltip = _ref.tooltip,\n      tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\", \"tooltip\"]);\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\n  }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (nextState, reducerName, action) {\n  // eslint-disable-next-line no-undefined\n  if (nextState === undefined) {\n    throw new Error('Reducer \"' + reducerName + '\" returned undefined when handling \"' + action.type + '\" action. To ignore an action, you must explicitly return the previous state.');\n  }\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=validateNextState.js.map","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n  '$ref': require('./ref'),\n  allOf: require('./allOf'),\n  anyOf: require('./anyOf'),\n  '$comment': require('./comment'),\n  const: require('./const'),\n  contains: require('./contains'),\n  dependencies: require('./dependencies'),\n  'enum': require('./enum'),\n  format: require('./format'),\n  'if': require('./if'),\n  items: require('./items'),\n  maximum: require('./_limit'),\n  minimum: require('./_limit'),\n  maxItems: require('./_limitItems'),\n  minItems: require('./_limitItems'),\n  maxLength: require('./_limitLength'),\n  minLength: require('./_limitLength'),\n  maxProperties: require('./_limitProperties'),\n  minProperties: require('./_limitProperties'),\n  multipleOf: require('./multipleOf'),\n  not: require('./not'),\n  oneOf: require('./oneOf'),\n  pattern: require('./pattern'),\n  properties: require('./properties'),\n  propertyNames: require('./propertyNames'),\n  required: require('./required'),\n  uniqueItems: require('./uniqueItems'),\n  validate: require('./validate')\n};\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoiseCancellationAudioProcessor = void 0;\nvar dynamicImport = require('./util/dynamicimport');\nvar Log = require('./util/log');\nvar PLUGIN_CONFIG = {\n    krisp: {\n        supportedVersion: '1.0.0',\n        pluginFile: 'krispsdk.mjs'\n    },\n    rnnoise: {\n        supportedVersion: '0.6.0',\n        pluginFile: 'rnnoise_sdk.mjs'\n    }\n};\nvar ensureVersionSupported = function (_a) {\n    var supportedVersion = _a.supportedVersion, plugin = _a.plugin, log = _a.log;\n    if (!plugin.getVersion || !plugin.isSupported) {\n        throw new Error('Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?');\n    }\n    var pluginVersion = plugin.getVersion();\n    log.debug(\"Plugin Version = \" + pluginVersion);\n    var supportedVersions = supportedVersion.split('.').map(function (version) { return Number(version); });\n    var pluginVersions = pluginVersion.split('.').map(function (version) { return Number(version); });\n    if (supportedVersions.length !== 3 || pluginVersions.length !== 3) {\n        throw new Error(\"Unsupported Plugin version format: \" + supportedVersion + \", \" + pluginVersion);\n    }\n    if (supportedVersions[0] !== pluginVersions[0]) {\n        throw new Error(\"Major version mismatch: [Plugin version \" + pluginVersion + \"],  [Supported Version \" + supportedVersion + \"]\");\n    }\n    if (pluginVersions[1] < supportedVersions[1]) {\n        throw new Error(\"Minor version mismatch: [Plugin version \" + pluginVersion + \"] < [Supported Version \" + supportedVersion + \"]\");\n    }\n    var tempContext = new AudioContext();\n    var isSupported = plugin.isSupported(tempContext);\n    tempContext.close();\n    if (!isSupported) {\n        throw new Error('Noise Cancellation plugin is not supported on your browser');\n    }\n};\nvar audioProcessors = new Map();\nfunction createNoiseCancellationAudioProcessor(noiseCancellationOptions, log) {\n    return __awaiter(this, void 0, void 0, function () {\n        var audioProcessor, pluginConfig, supportedVersion, pluginFile, rootDir, sdkFilePath, dynamicModule, plugin_1, er_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    audioProcessor = audioProcessors.get(noiseCancellationOptions.vendor);\n                    if (!!audioProcessor) return [3 /*break*/, 6];\n                    pluginConfig = PLUGIN_CONFIG[noiseCancellationOptions.vendor];\n                    if (!pluginConfig) {\n                        throw new Error(\"Unsupported NoiseCancellationOptions.vendor: \" + noiseCancellationOptions.vendor);\n                    }\n                    supportedVersion = pluginConfig.supportedVersion, pluginFile = pluginConfig.pluginFile;\n                    rootDir = noiseCancellationOptions.sdkAssetsPath;\n                    sdkFilePath = rootDir + \"/\" + pluginFile;\n                    _a.label = 1;\n                case 1:\n                    _a.trys.push([1, 5, , 6]);\n                    log.debug('loading noise cancellation sdk: ', sdkFilePath);\n                    return [4 /*yield*/, dynamicImport(sdkFilePath)];\n                case 2:\n                    dynamicModule = _a.sent();\n                    log.debug('Loaded noise cancellation sdk:', dynamicModule);\n                    plugin_1 = dynamicModule.default;\n                    ensureVersionSupported({\n                        supportedVersion: supportedVersion,\n                        plugin: plugin_1,\n                        log: log\n                    });\n                    if (!!plugin_1.isInitialized()) return [3 /*break*/, 4];\n                    log.debug('initializing noise cancellation sdk: ', rootDir);\n                    return [4 /*yield*/, plugin_1.init({ rootDir: rootDir })];\n                case 3:\n                    _a.sent();\n                    log.debug('noise cancellation sdk initialized!');\n                    _a.label = 4;\n                case 4:\n                    audioProcessor = {\n                        vendor: noiseCancellationOptions.vendor,\n                        isInitialized: function () { return plugin_1.isInitialized(); },\n                        isConnected: function () { return plugin_1.isConnected(); },\n                        isEnabled: function () { return plugin_1.isEnabled(); },\n                        disconnect: function () { return plugin_1.disconnect(); },\n                        enable: function () { return plugin_1.enable(); },\n                        disable: function () { return plugin_1.disable(); },\n                        destroy: function () { return plugin_1.destroy(); },\n                        setLogging: function (enable) { return plugin_1.setLogging(enable); },\n                        connect: function (sourceTrack) {\n                            log.debug('connect: ', sourceTrack.id);\n                            if (plugin_1.isConnected()) {\n                                plugin_1.disconnect();\n                            }\n                            var mediaStream = plugin_1.connect(new MediaStream([sourceTrack]));\n                            if (!mediaStream) {\n                                throw new Error('Error connecting with noise cancellation sdk');\n                            }\n                            var cleanTrack = mediaStream.getAudioTracks()[0];\n                            if (!cleanTrack) {\n                                throw new Error('Error getting clean track from noise cancellation sdk');\n                            }\n                            plugin_1.enable();\n                            return cleanTrack;\n                        },\n                    };\n                    audioProcessors.set(noiseCancellationOptions.vendor, audioProcessor);\n                    return [3 /*break*/, 6];\n                case 5:\n                    er_1 = _a.sent();\n                    log.error(\"Error loading noise cancellation sdk:\" + sdkFilePath, er_1);\n                    throw er_1;\n                case 6: return [2 /*return*/, audioProcessor];\n            }\n        });\n    });\n}\nexports.createNoiseCancellationAudioProcessor = createNoiseCancellationAudioProcessor;\n//# sourceMappingURL=noisecancellationadapter.js.map","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","'use strict';\n\nvar compileSchema = require('./compile')\n  , resolve = require('./compile/resolve')\n  , Cache = require('./cache')\n  , SchemaObject = require('./compile/schema_obj')\n  , stableStringify = require('fast-json-stable-stringify')\n  , formats = require('./compile/formats')\n  , rules = require('./compile/rules')\n  , $dataMetaSchema = require('./data')\n  , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n  if (!(this instanceof Ajv)) return new Ajv(opts);\n  opts = this._opts = util.copy(opts) || {};\n  setLogger(this);\n  this._schemas = {};\n  this._refs = {};\n  this._fragments = {};\n  this._formats = formats(opts.format);\n  var schemaUriFormat = this._schemaUriFormat = this._formats['uri-reference'];\n  this._schemaUriFormatFunc = function (str) { return schemaUriFormat.test(str); };\n\n  this._cache = opts.cache || new Cache;\n  this._loadingSchemas = {};\n  this._compilations = [];\n  this.RULES = rules();\n  this._getId = chooseGetId(opts);\n\n  opts.loopRequired = opts.loopRequired || Infinity;\n  if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n  if (opts.serialize === undefined) opts.serialize = stableStringify;\n  this._metaOpts = getMetaSchemaOptions(this);\n\n  if (opts.formats) addInitialFormats(this);\n  addDraft6MetaSchema(this);\n  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n  addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this   Ajv\n * @param  {String|Object} schemaKeyRef key, ref or schema object\n * @param  {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n  var v;\n  if (typeof schemaKeyRef == 'string') {\n    v = this.getSchema(schemaKeyRef);\n    if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n  } else {\n    var schemaObj = this._addSchema(schemaKeyRef);\n    v = schemaObj.validate || this._compile(schemaObj);\n  }\n\n  var valid = v(data);\n  if (v.$async !== true) this.errors = v.errors;\n  return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n  var schemaObj = this._addSchema(schema, undefined, _meta);\n  return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this   Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n  if (Array.isArray(schema)){\n    for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n    return this;\n  }\n  var id = this._getId(schema);\n  if (id !== undefined && typeof id != 'string')\n    throw new Error('schema id must be string');\n  key = resolve.normalizeId(key || id);\n  checkUnique(this, key);\n  this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n  return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this   Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n  this.addSchema(schema, key, skipValidation, true);\n  return this;\n}\n\n\n/**\n * Validate schema\n * @this   Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n  var $schema = schema.$schema;\n  if ($schema !== undefined && typeof $schema != 'string')\n    throw new Error('$schema must be a string');\n  $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n  if (!$schema) {\n    this.logger.warn('meta-schema not available');\n    this.errors = null;\n    return true;\n  }\n  var currentUriFormat = this._formats.uri;\n  this._formats.uri = typeof currentUriFormat == 'function'\n                      ? this._schemaUriFormatFunc\n                      : this._schemaUriFormat;\n  var valid;\n  try { valid = this.validate($schema, schema); }\n  finally { this._formats.uri = currentUriFormat; }\n  if (!valid && throwOrLogError) {\n    var message = 'schema is invalid: ' + this.errorsText();\n    if (this._opts.validateSchema == 'log') this.logger.error(message);\n    else throw new Error(message);\n  }\n  return valid;\n}\n\n\nfunction defaultMeta(self) {\n  var meta = self._opts.meta;\n  self._opts.defaultMeta = typeof meta == 'object'\n                            ? self._getId(meta) || meta\n                            : self.getSchema(META_SCHEMA_ID)\n                              ? META_SCHEMA_ID\n                              : undefined;\n  return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this   Ajv\n * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n  var schemaObj = _getSchemaObj(this, keyRef);\n  switch (typeof schemaObj) {\n    case 'object': return schemaObj.validate || this._compile(schemaObj);\n    case 'string': return this.getSchema(schemaObj);\n    case 'undefined': return _getSchemaFragment(this, keyRef);\n  }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n  var res = resolve.schema.call(self, { schema: {} }, ref);\n  if (res) {\n    var schema = res.schema\n      , root = res.root\n      , baseId = res.baseId;\n    var v = compileSchema.call(self, schema, root, undefined, baseId);\n    self._fragments[ref] = new SchemaObject({\n      ref: ref,\n      fragment: true,\n      schema: schema,\n      root: root,\n      baseId: baseId,\n      validate: v\n    });\n    return v;\n  }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n  keyRef = resolve.normalizeId(keyRef);\n  return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this   Ajv\n * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n  if (schemaKeyRef instanceof RegExp) {\n    _removeAllSchemas(this, this._schemas, schemaKeyRef);\n    _removeAllSchemas(this, this._refs, schemaKeyRef);\n    return this;\n  }\n  switch (typeof schemaKeyRef) {\n    case 'undefined':\n      _removeAllSchemas(this, this._schemas);\n      _removeAllSchemas(this, this._refs);\n      this._cache.clear();\n      return this;\n    case 'string':\n      var schemaObj = _getSchemaObj(this, schemaKeyRef);\n      if (schemaObj) this._cache.del(schemaObj.cacheKey);\n      delete this._schemas[schemaKeyRef];\n      delete this._refs[schemaKeyRef];\n      return this;\n    case 'object':\n      var serialize = this._opts.serialize;\n      var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n      this._cache.del(cacheKey);\n      var id = this._getId(schemaKeyRef);\n      if (id) {\n        id = resolve.normalizeId(id);\n        delete this._schemas[id];\n        delete this._refs[id];\n      }\n  }\n  return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n  for (var keyRef in schemas) {\n    var schemaObj = schemas[keyRef];\n    if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n      self._cache.del(schemaObj.cacheKey);\n      delete schemas[keyRef];\n    }\n  }\n}\n\n\n/* @this   Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n  if (typeof schema != 'object' && typeof schema != 'boolean')\n    throw new Error('schema should be object or boolean');\n  var serialize = this._opts.serialize;\n  var cacheKey = serialize ? serialize(schema) : schema;\n  var cached = this._cache.get(cacheKey);\n  if (cached) return cached;\n\n  shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n  var id = resolve.normalizeId(this._getId(schema));\n  if (id && shouldAddSchema) checkUnique(this, id);\n\n  var willValidate = this._opts.validateSchema !== false && !skipValidation;\n  var recursiveMeta;\n  if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n    this.validateSchema(schema, true);\n\n  var localRefs = resolve.ids.call(this, schema);\n\n  var schemaObj = new SchemaObject({\n    id: id,\n    schema: schema,\n    localRefs: localRefs,\n    cacheKey: cacheKey,\n    meta: meta\n  });\n\n  if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n  this._cache.put(cacheKey, schemaObj);\n\n  if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n  return schemaObj;\n}\n\n\n/* @this   Ajv */\nfunction _compile(schemaObj, root) {\n  if (schemaObj.compiling) {\n    schemaObj.validate = callValidate;\n    callValidate.schema = schemaObj.schema;\n    callValidate.errors = null;\n    callValidate.root = root ? root : callValidate;\n    if (schemaObj.schema.$async === true)\n      callValidate.$async = true;\n    return callValidate;\n  }\n  schemaObj.compiling = true;\n\n  var currentOpts;\n  if (schemaObj.meta) {\n    currentOpts = this._opts;\n    this._opts = this._metaOpts;\n  }\n\n  var v;\n  try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n  catch(e) {\n    delete schemaObj.validate;\n    throw e;\n  }\n  finally {\n    schemaObj.compiling = false;\n    if (schemaObj.meta) this._opts = currentOpts;\n  }\n\n  schemaObj.validate = v;\n  schemaObj.refs = v.refs;\n  schemaObj.refVal = v.refVal;\n  schemaObj.root = v.root;\n  return v;\n\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var _validate = schemaObj.validate;\n    var result = _validate.apply(this, arguments);\n    callValidate.errors = _validate.errors;\n    return result;\n  }\n}\n\n\nfunction chooseGetId(opts) {\n  switch (opts.schemaId) {\n    case 'auto': return _get$IdOrId;\n    case 'id': return _getId;\n    default: return _get$Id;\n  }\n}\n\n/* @this   Ajv */\nfunction _getId(schema) {\n  if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n  return schema.id;\n}\n\n/* @this   Ajv */\nfunction _get$Id(schema) {\n  if (schema.id) this.logger.warn('schema id ignored', schema.id);\n  return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n  if (schema.$id && schema.id && schema.$id != schema.id)\n    throw new Error('schema $id is different from id');\n  return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this   Ajv\n * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param  {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n  errors = errors || this.errors;\n  if (!errors) return 'No errors';\n  options = options || {};\n  var separator = options.separator === undefined ? ', ' : options.separator;\n  var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n  var text = '';\n  for (var i=0; i<errors.length; i++) {\n    var e = errors[i];\n    if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n  }\n  return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this   Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n  if (typeof format == 'string') format = new RegExp(format);\n  this._formats[name] = format;\n  return this;\n}\n\n\nfunction addDraft6MetaSchema(self) {\n  var $dataSchema;\n  if (self._opts.$data) {\n    $dataSchema = require('./refs/data.json');\n    self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n  }\n  if (self._opts.meta === false) return;\n  var metaSchema = require('./refs/json-schema-draft-07.json');\n  if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n  self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n  self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n  var optsSchemas = self._opts.schemas;\n  if (!optsSchemas) return;\n  if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n  else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n  for (var name in self._opts.formats) {\n    var format = self._opts.formats[name];\n    self.addFormat(name, format);\n  }\n}\n\n\nfunction checkUnique(self, id) {\n  if (self._schemas[id] || self._refs[id])\n    throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n  var metaOpts = util.copy(self._opts);\n  for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n    delete metaOpts[META_IGNORE_OPTIONS[i]];\n  return metaOpts;\n}\n\n\nfunction setLogger(self) {\n  var logger = self._opts.logger;\n  if (logger === false) {\n    self.logger = {log: noop, warn: noop, error: noop};\n  } else {\n    if (logger === undefined) logger = console;\n    if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n      throw new Error('logger must implement log, warn and error methods');\n    self.logger = logger;\n  }\n}\n\n\nfunction noop() {}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n    value: true\n});\nexports.set = set;\nexports.get = get;\nexports.serialize = serialize;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _deepFreeze = require('deep-freeze');\n\nvar _deepFreeze2 = _interopRequireDefault(_deepFreeze);\n\nvar _serializeJavascript = require('serialize-javascript');\n\nvar _serializeJavascript2 = _interopRequireDefault(_serializeJavascript);\n\nvar configuration = null;\nvar setOptions = {};\nvar validOptions = ['freeze', 'assign'];\nvar persistentOptions = ['freeze'];\n\nfunction set(newConfiguration) {\n    var newOptions = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    if (configuration && setOptions.freeze !== false) {\n        throw new Error('react-global-configuration - Configuration is already set, the initial call should have \\'freeze\\' set to false to allow for this behaviour (e.g. in testing');\n    }\n\n    if (newOptions) {\n        for (var newOption in newOptions) {\n            //Check if is a valid option\n            if (validOptions.indexOf(newOption) !== -1) {\n                //Check value of option\n                var value = newOptions[newOption];\n                if (typeof value !== 'boolean') {\n                    throw new Error('react-global-configuration - Unexpected value type for ' + newOption + ' : ' + typeof value + ', boolean expected');\n                }\n\n                if (persistentOptions.indexOf(newOption) !== -1) {\n                    setOptions[newOption] = value;\n                }\n            } else {\n                throw new Error('react-global-configuration - Unrecognised option \\'' + newOption + '\\' passed to set');\n            }\n        }\n    }\n\n    if (newOptions.assign) {\n        configuration = (0, _objectAssign2['default'])(configuration, newConfiguration);\n    } else {\n        configuration = newConfiguration;\n    }\n\n    if (setOptions.freeze !== false && Object.freeze && Object.getOwnPropertyNames) {\n        configuration = (0, _deepFreeze2['default'])(configuration);\n    } else if (!Object.freeze || !Object.getOwnPropertyNames) {\n        sayWarning('react-global-configuration - Could not call freeze as native functions arent\\'t available');\n    }\n}\n\nfunction get(key, fallbackValue) {\n    if (!configuration) {\n        sayWarning('react-global-configuration - Configuration has not been set.');\n    }\n\n    if (fallbackValue === undefined) {\n        fallbackValue = null;\n    }\n\n    var value = fetchFromObject(configuration, key);\n\n    //Fix to return null values\n    if (value !== undefined) {\n        return value;\n    }\n\n    if (key !== undefined) {\n        value = fallbackValue;\n    } else {\n        sayWarning('react-global-configuration - There is no value with the key: ' + key);\n\n        value = configuration;\n    }\n\n    return value;\n}\n\nfunction serialize() {\n    return (0, _serializeJavascript2['default'])(configuration);\n}\n\n/* **************************** */\n/* Helpers\n/* **************************** */\n\nfunction fetchFromObject(_x2, _x3) {\n    var _again = true;\n\n    _function: while (_again) {\n        var obj = _x2,\n            key = _x3;\n        _again = false;\n\n        key = key !== undefined ? key : '';\n\n        if (typeof obj === 'undefined') {\n            return undefined;\n        }\n\n        var index = key.indexOf('.');\n\n        if (index > -1) {\n            _x2 = obj[key.substring(0, index)];\n            _x3 = key.substr(index + 1);\n            _again = true;\n            index = undefined;\n            continue _function;\n        }\n\n        return obj[key];\n    }\n}\n\nfunction sayWarning(text) {\n    if (process.env.NODE_ENV === 'development') {\n        void 0;\n    }\n}","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n  * x is a value between 0 and 1, indicating where in the animation you are.\n  */\nvar duScrollDefaultEasing = function (x) {\n  'use strict';\n\n  if(x < 0.5) {\n    return Math.pow(x*2, 2)/2;\n  }\n  return 1-Math.pow((1-x)*2, 2)/2;\n};\n\nvar duScroll = angular.module('duScroll', [\n  'duScroll.scrollspy',\n  'duScroll.smoothScroll',\n  'duScroll.scrollContainer',\n  'duScroll.spyContext',\n  'duScroll.scrollHelpers'\n])\n  //Default animation duration for smoothScroll directive\n  .value('duScrollDuration', 350)\n  //Scrollspy debounce interval, set to 0 to disable\n  .value('duScrollSpyWait', 100)\n  //Scrollspy forced refresh interval, use if your content changes or reflows without scrolling.\n  //0 to disable\n  .value('duScrollSpyRefreshInterval', 0)\n  //Wether or not multiple scrollspies can be active at once\n  .value('duScrollGreedy', false)\n  //Default offset for smoothScroll directive\n  .value('duScrollOffset', 0)\n  //Default easing function for scroll animation\n  .value('duScrollEasing', duScrollDefaultEasing)\n  //Which events on the container (such as body) should cancel scroll animations\n  .value('duScrollCancelOnEvents', 'scroll mousedown mousewheel touchmove keydown')\n  //Whether or not to activate the last scrollspy, when page/container bottom is reached\n  .value('duScrollBottomSpy', false)\n  //Active class name\n  .value('duScrollActiveClass', 'active');\n\nif (typeof module !== 'undefined' && module && module.exports) {\n  module.exports = duScroll;\n}\n\n\nangular.module('duScroll.scrollHelpers', ['duScroll.requestAnimation'])\n.run([\"$window\", \"$q\", \"cancelAnimation\", \"requestAnimation\", \"duScrollEasing\", \"duScrollDuration\", \"duScrollOffset\", \"duScrollCancelOnEvents\", function($window, $q, cancelAnimation, requestAnimation, duScrollEasing, duScrollDuration, duScrollOffset, duScrollCancelOnEvents) {\n  'use strict';\n\n  var proto = {};\n\n  var isDocument = function(el) {\n    return (typeof HTMLDocument !== 'undefined' && el instanceof HTMLDocument) || (el.nodeType && el.nodeType === el.DOCUMENT_NODE);\n  };\n\n  var isElement = function(el) {\n    return (typeof HTMLElement !== 'undefined' && el instanceof HTMLElement) || (el.nodeType && el.nodeType === el.ELEMENT_NODE);\n  };\n\n  var unwrap = function(el) {\n    return isElement(el) || isDocument(el) ? el : el[0];\n  };\n\n  proto.duScrollTo = function(left, top, duration, easing) {\n    var aliasFn;\n    if(angular.isElement(left)) {\n      aliasFn = this.duScrollToElement;\n    } else if(angular.isDefined(duration)) {\n      aliasFn = this.duScrollToAnimated;\n    }\n    if(aliasFn) {\n      return aliasFn.apply(this, arguments);\n    }\n    var el = unwrap(this);\n    if(isDocument(el)) {\n      return $window.scrollTo(left, top);\n    }\n    el.scrollLeft = left;\n    el.scrollTop = top;\n  };\n\n  var scrollAnimation, deferred;\n  proto.duScrollToAnimated = function(left, top, duration, easing) {\n    if(duration && !easing) {\n      easing = duScrollEasing;\n    }\n    var startLeft = this.duScrollLeft(),\n        startTop = this.duScrollTop(),\n        deltaLeft = Math.round(left - startLeft),\n        deltaTop = Math.round(top - startTop);\n\n    var startTime = null, progress = 0;\n    var el = this;\n\n    var cancelScrollAnimation = function($event) {\n      if (!$event || (progress && $event.which > 0)) {\n        if(duScrollCancelOnEvents) {\n          el.unbind(duScrollCancelOnEvents, cancelScrollAnimation);\n        }\n        cancelAnimation(scrollAnimation);\n        deferred.reject();\n        scrollAnimation = null;\n      }\n    };\n\n    if(scrollAnimation) {\n      cancelScrollAnimation();\n    }\n    deferred = $q.defer();\n\n    if(duration === 0 || (!deltaLeft && !deltaTop)) {\n      if(duration === 0) {\n        el.duScrollTo(left, top);\n      }\n      deferred.resolve();\n      return deferred.promise;\n    }\n\n    var animationStep = function(timestamp) {\n      if (startTime === null) {\n        startTime = timestamp;\n      }\n\n      progress = timestamp - startTime;\n      var percent = (progress >= duration ? 1 : easing(progress/duration));\n\n      el.scrollTo(\n        startLeft + Math.ceil(deltaLeft * percent),\n        startTop + Math.ceil(deltaTop * percent)\n      );\n      if(percent < 1) {\n        scrollAnimation = requestAnimation(animationStep);\n      } else {\n        if(duScrollCancelOnEvents) {\n          el.unbind(duScrollCancelOnEvents, cancelScrollAnimation);\n        }\n        scrollAnimation = null;\n        deferred.resolve();\n      }\n    };\n\n    //Fix random mobile safari bug when scrolling to top by hitting status bar\n    el.duScrollTo(startLeft, startTop);\n\n    if(duScrollCancelOnEvents) {\n      el.bind(duScrollCancelOnEvents, cancelScrollAnimation);\n    }\n\n    scrollAnimation = requestAnimation(animationStep);\n    return deferred.promise;\n  };\n\n  proto.duScrollToElement = function(target, offset, duration, easing) {\n    var el = unwrap(this);\n    if(!angular.isNumber(offset) || isNaN(offset)) {\n      offset = duScrollOffset;\n    }\n    var top = this.duScrollTop() + unwrap(target).getBoundingClientRect().top - offset;\n    if(isElement(el)) {\n      top -= el.getBoundingClientRect().top;\n    }\n    return this.duScrollTo(0, top, duration, easing);\n  };\n\n  proto.duScrollLeft = function(value, duration, easing) {\n    if(angular.isNumber(value)) {\n      return this.duScrollTo(value, this.duScrollTop(), duration, easing);\n    }\n    var el = unwrap(this);\n    if(isDocument(el)) {\n      return $window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft;\n    }\n    return el.scrollLeft;\n  };\n  proto.duScrollTop = function(value, duration, easing) {\n    if(angular.isNumber(value)) {\n      return this.duScrollTo(this.duScrollLeft(), value, duration, easing);\n    }\n    var el = unwrap(this);\n    if(isDocument(el)) {\n      return $window.scrollY || document.documentElement.scrollTop || document.body.scrollTop;\n    }\n    return el.scrollTop;\n  };\n\n  proto.duScrollToElementAnimated = function(target, offset, duration, easing) {\n    return this.duScrollToElement(target, offset, duration || duScrollDuration, easing);\n  };\n\n  proto.duScrollTopAnimated = function(top, duration, easing) {\n    return this.duScrollTop(top, duration || duScrollDuration, easing);\n  };\n\n  proto.duScrollLeftAnimated = function(left, duration, easing) {\n    return this.duScrollLeft(left, duration || duScrollDuration, easing);\n  };\n\n  angular.forEach(proto, function(fn, key) {\n    angular.element.prototype[key] = fn;\n\n    //Remove prefix if not already claimed by jQuery / ui.utils\n    var unprefixed = key.replace(/^duScroll/, 'scroll');\n    if(angular.isUndefined(angular.element.prototype[unprefixed])) {\n      angular.element.prototype[unprefixed] = fn;\n    }\n  });\n\n}]);\n\n\n//Adapted from https://gist.github.com/paulirish/1579671\nangular.module('duScroll.polyfill', [])\n.factory('polyfill', [\"$window\", function($window) {\n  'use strict';\n\n  var vendors = ['webkit', 'moz', 'o', 'ms'];\n\n  return function(fnName, fallback) {\n    if($window[fnName]) {\n      return $window[fnName];\n    }\n    var suffix = fnName.substr(0, 1).toUpperCase() + fnName.substr(1);\n    for(var key, i = 0; i < vendors.length; i++) {\n      key = vendors[i]+suffix;\n      if($window[key]) {\n        return $window[key];\n      }\n    }\n    return fallback;\n  };\n}]);\n\nangular.module('duScroll.requestAnimation', ['duScroll.polyfill'])\n.factory('requestAnimation', [\"polyfill\", \"$timeout\", function(polyfill, $timeout) {\n  'use strict';\n\n  var lastTime = 0;\n  var fallback = function(callback, element) {\n    var currTime = new Date().getTime();\n    var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n    var id = $timeout(function() { callback(currTime + timeToCall); },\n      timeToCall);\n    lastTime = currTime + timeToCall;\n    return id;\n  };\n\n  return polyfill('requestAnimationFrame', fallback);\n}])\n.factory('cancelAnimation', [\"polyfill\", \"$timeout\", function(polyfill, $timeout) {\n  'use strict';\n\n  var fallback = function(promise) {\n    $timeout.cancel(promise);\n  };\n\n  return polyfill('cancelAnimationFrame', fallback);\n}]);\n\n\nangular.module('duScroll.spyAPI', ['duScroll.scrollContainerAPI'])\n.factory('spyAPI', [\"$rootScope\", \"$timeout\", \"$interval\", \"$window\", \"$document\", \"scrollContainerAPI\", \"duScrollGreedy\", \"duScrollSpyWait\", \"duScrollSpyRefreshInterval\", \"duScrollBottomSpy\", \"duScrollActiveClass\", function($rootScope, $timeout, $interval, $window, $document, scrollContainerAPI, duScrollGreedy, duScrollSpyWait, duScrollSpyRefreshInterval, duScrollBottomSpy, duScrollActiveClass) {\n  'use strict';\n\n  var createScrollHandler = function(context) {\n    var timer = false, queued = false;\n    var handler = function() {\n      queued = false;\n      var container = context.container,\n          containerEl = container[0],\n          containerOffset = 0,\n          bottomReached;\n\n      if (typeof HTMLElement !== 'undefined' && containerEl instanceof HTMLElement || containerEl.nodeType && containerEl.nodeType === containerEl.ELEMENT_NODE) {\n        containerOffset = containerEl.getBoundingClientRect().top;\n        bottomReached = Math.round(containerEl.scrollTop + containerEl.clientHeight) >= containerEl.scrollHeight;\n      } else {\n        var documentScrollHeight = $document[0].body.scrollHeight || $document[0].documentElement.scrollHeight; // documentElement for IE11\n        bottomReached = Math.round($window.pageYOffset + $window.innerHeight) >= documentScrollHeight;\n      }\n      var compareProperty = (duScrollBottomSpy && bottomReached ? 'bottom' : 'top');\n\n      var i, currentlyActive, toBeActive, spies, spy, pos;\n      spies = context.spies;\n      currentlyActive = context.currentlyActive;\n      toBeActive = undefined;\n\n      for(i = 0; i < spies.length; i++) {\n        spy = spies[i];\n        pos = spy.getTargetPosition();\n        if (!pos || !spy.$element) continue;\n\n        if((duScrollBottomSpy && bottomReached) || (pos.top + spy.offset - containerOffset < 20 && (duScrollGreedy || pos.top*-1 + containerOffset) < pos.height)) {\n          //Find the one closest the viewport top or the page bottom if it's reached\n          if(!toBeActive || toBeActive[compareProperty] < pos[compareProperty]) {\n            toBeActive = {\n              spy: spy\n            };\n            toBeActive[compareProperty] = pos[compareProperty];\n          }\n        }\n      }\n\n      if(toBeActive) {\n        toBeActive = toBeActive.spy;\n      }\n      if(currentlyActive === toBeActive || (duScrollGreedy && !toBeActive)) return;\n      if(currentlyActive && currentlyActive.$element) {\n        currentlyActive.$element.removeClass(duScrollActiveClass);\n        $rootScope.$broadcast(\n          'duScrollspy:becameInactive',\n          currentlyActive.$element,\n          angular.element(currentlyActive.getTargetElement())\n        );\n      }\n      if(toBeActive) {\n        toBeActive.$element.addClass(duScrollActiveClass);\n        $rootScope.$broadcast(\n          'duScrollspy:becameActive',\n          toBeActive.$element,\n          angular.element(toBeActive.getTargetElement())\n        );\n      }\n      context.currentlyActive = toBeActive;\n    };\n\n    if(!duScrollSpyWait) {\n      return handler;\n    }\n\n    //Debounce for potential performance savings\n    return function() {\n      if(!timer) {\n        handler();\n        timer = $timeout(function() {\n          timer = false;\n          if(queued) {\n            handler();\n          }\n        }, duScrollSpyWait, false);\n      } else {\n        queued = true;\n      }\n    };\n  };\n\n  var contexts = {};\n\n  var createContext = function($scope) {\n    var id = $scope.$id;\n    var context = {\n      spies: []\n    };\n\n    context.handler = createScrollHandler(context);\n    contexts[id] = context;\n\n    $scope.$on('$destroy', function() {\n      destroyContext($scope);\n    });\n\n    return id;\n  };\n\n  var destroyContext = function($scope) {\n    var id = $scope.$id;\n    var context = contexts[id], container = context.container;\n    if(context.intervalPromise) {\n      $interval.cancel(context.intervalPromise);\n    }\n    if(container) {\n      container.off('scroll', context.handler);\n    }\n    delete contexts[id];\n  };\n\n  var defaultContextId = createContext($rootScope);\n\n  var getContextForScope = function(scope) {\n    if(contexts[scope.$id]) {\n      return contexts[scope.$id];\n    }\n    if(scope.$parent) {\n      return getContextForScope(scope.$parent);\n    }\n    return contexts[defaultContextId];\n  };\n\n  var getContextForSpy = function(spy) {\n    var context, contextId, scope = spy.$scope;\n    if(scope) {\n      return getContextForScope(scope);\n    }\n    //No scope, most likely destroyed\n    for(contextId in contexts) {\n      context = contexts[contextId];\n      if(context.spies.indexOf(spy) !== -1) {\n        return context;\n      }\n    }\n  };\n\n  var isElementInDocument = function(element) {\n    while (element.parentNode) {\n      element = element.parentNode;\n      if (element === document) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  var addSpy = function(spy) {\n    var context = getContextForSpy(spy);\n    if (!context) return;\n    context.spies.push(spy);\n    if (!context.container || !isElementInDocument(context.container)) {\n      if(context.container) {\n        context.container.off('scroll', context.handler);\n      }\n      context.container = scrollContainerAPI.getContainer(spy.$scope);\n      if (duScrollSpyRefreshInterval && !context.intervalPromise) {\n        context.intervalPromise = $interval(context.handler, duScrollSpyRefreshInterval, 0, false);\n      }\n      context.container.on('scroll', context.handler).triggerHandler('scroll');\n    }\n  };\n\n  var removeSpy = function(spy) {\n    var context = getContextForSpy(spy);\n    if(spy === context.currentlyActive) {\n      $rootScope.$broadcast('duScrollspy:becameInactive', context.currentlyActive.$element);\n      context.currentlyActive = null;\n    }\n    var i = context.spies.indexOf(spy);\n    if(i !== -1) {\n      context.spies.splice(i, 1);\n    }\n\t\tspy.$element = null;\n  };\n\n  return {\n    addSpy: addSpy,\n    removeSpy: removeSpy,\n    createContext: createContext,\n    destroyContext: destroyContext,\n    getContextForScope: getContextForScope\n  };\n}]);\n\n\nangular.module('duScroll.scrollContainerAPI', [])\n.factory('scrollContainerAPI', [\"$document\", function($document) {\n  'use strict';\n\n  var containers = {};\n\n  var setContainer = function(scope, element) {\n    var id = scope.$id;\n    containers[id] = element;\n    return id;\n  };\n\n  var getContainerId = function(scope) {\n    if(containers[scope.$id]) {\n      return scope.$id;\n    }\n    if(scope.$parent) {\n      return getContainerId(scope.$parent);\n    }\n    return;\n  };\n\n  var getContainer = function(scope) {\n    var id = getContainerId(scope);\n    return id ? containers[id] : $document;\n  };\n\n  var removeContainer = function(scope) {\n    var id = getContainerId(scope);\n    if(id) {\n      delete containers[id];\n    }\n  };\n\n  return {\n    getContainerId:   getContainerId,\n    getContainer:     getContainer,\n    setContainer:     setContainer,\n    removeContainer:  removeContainer\n  };\n}]);\n\n\nangular.module('duScroll.smoothScroll', ['duScroll.scrollHelpers', 'duScroll.scrollContainerAPI'])\n.directive('duSmoothScroll', [\"duScrollDuration\", \"duScrollOffset\", \"scrollContainerAPI\", function(duScrollDuration, duScrollOffset, scrollContainerAPI) {\n  'use strict';\n\n  return {\n    link : function($scope, $element, $attr) {\n      $element.on('click', function(e) {\n        if((!$attr.href || $attr.href.indexOf('#') === -1) && $attr.duSmoothScroll === '') return;\n\n        var id = $attr.href ? $attr.href.replace(/.*(?=#[^\\s]+$)/, '').substring(1) : $attr.duSmoothScroll;\n\n        var target = document.getElementById(id) || document.getElementsByName(id)[0];\n        if(!target || !target.getBoundingClientRect) return;\n\n        if (e.stopPropagation) e.stopPropagation();\n        if (e.preventDefault) e.preventDefault();\n\n        var offset    = $attr.offset ? parseInt($attr.offset, 10) : duScrollOffset;\n        var duration  = $attr.duration ? parseInt($attr.duration, 10) : duScrollDuration;\n        var container = scrollContainerAPI.getContainer($scope);\n\n        container.duScrollToElement(\n          angular.element(target),\n          isNaN(offset) ? 0 : offset,\n          isNaN(duration) ? 0 : duration\n        );\n      });\n    }\n  };\n}]);\n\n\nangular.module('duScroll.spyContext', ['duScroll.spyAPI'])\n.directive('duSpyContext', [\"spyAPI\", function(spyAPI) {\n  'use strict';\n\n  return {\n    restrict: 'A',\n    scope: true,\n    compile: function compile(tElement, tAttrs, transclude) {\n      return {\n        pre: function preLink($scope, iElement, iAttrs, controller) {\n          spyAPI.createContext($scope);\n        }\n      };\n    }\n  };\n}]);\n\n\nangular.module('duScroll.scrollContainer', ['duScroll.scrollContainerAPI'])\n.directive('duScrollContainer', [\"scrollContainerAPI\", function(scrollContainerAPI){\n  'use strict';\n\n  return {\n    restrict: 'A',\n    scope: true,\n    compile: function compile(tElement, tAttrs, transclude) {\n      return {\n        pre: function preLink($scope, iElement, iAttrs, controller) {\n          iAttrs.$observe('duScrollContainer', function(element) {\n            if(angular.isString(element)) {\n              element = document.getElementById(element);\n            }\n\n            element = (angular.isElement(element) ? angular.element(element) : iElement);\n            scrollContainerAPI.setContainer($scope, element);\n            $scope.$on('$destroy', function() {\n              scrollContainerAPI.removeContainer($scope);\n            });\n          });\n        }\n      };\n    }\n  };\n}]);\n\n\nangular.module('duScroll.scrollspy', ['duScroll.spyAPI'])\n.directive('duScrollspy', [\"spyAPI\", \"duScrollOffset\", \"$timeout\", \"$rootScope\", function(spyAPI, duScrollOffset, $timeout, $rootScope) {\n  'use strict';\n\n  var Spy = function(targetElementOrId, $scope, $element, offset) {\n    if(angular.isElement(targetElementOrId)) {\n      this.target = targetElementOrId;\n    } else if(angular.isString(targetElementOrId)) {\n      this.targetId = targetElementOrId;\n    }\n    this.$scope = $scope;\n    this.$element = $element;\n    this.offset = offset;\n  };\n\n  Spy.prototype.getTargetElement = function() {\n    if (!this.target && this.targetId) {\n      this.target = document.getElementById(this.targetId) || document.getElementsByName(this.targetId)[0];\n    }\n    return this.target;\n  };\n\n  Spy.prototype.getTargetPosition = function() {\n    var target = this.getTargetElement();\n    if(target) {\n      return target.getBoundingClientRect();\n    }\n  };\n\n  Spy.prototype.flushTargetCache = function() {\n    if(this.targetId) {\n      this.target = undefined;\n    }\n  };\n\n  return {\n    link: function ($scope, $element, $attr) {\n      var href = $attr.ngHref || $attr.href;\n      var targetId;\n\n      if (href && href.indexOf('#') !== -1) {\n        targetId = href.replace(/.*(?=#[^\\s]+$)/, '').substring(1);\n      } else if($attr.duScrollspy) {\n        targetId = $attr.duScrollspy;\n      } else if($attr.duSmoothScroll) {\n        targetId = $attr.duSmoothScroll;\n      }\n      if(!targetId) return;\n\n      // Run this in the next execution loop so that the scroll context has a chance\n      // to initialize\n      var timeoutPromise = $timeout(function() {\n        var spy = new Spy(targetId, $scope, $element, -($attr.offset ? parseInt($attr.offset, 10) : duScrollOffset));\n        spyAPI.addSpy(spy);\n\n        $scope.$on('$locationChangeSuccess', spy.flushTargetCache.bind(spy));\n        var deregisterOnStateChange = $rootScope.$on('$stateChangeSuccess', spy.flushTargetCache.bind(spy));\n        $scope.$on('$destroy', function() {\n          spyAPI.removeSpy(spy);\n          deregisterOnStateChange();\n        });\n      }, 0, false);\n      $scope.$on('$destroy', function() {$timeout.cancel(timeoutPromise);});\n    }\n  };\n}]);\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DefaultRecordingSignaling = require('./recording');\nvar StateMachine = require('../statemachine');\nvar DefaultTimeout = require('../util/timeout');\nvar buildLogLevels = require('../util').buildLogLevels;\nvar DEFAULT_LOG_LEVEL = require('../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../util/log');\nvar _a = require('../util/twilio-video-errors'), MediaConnectionError = _a.MediaConnectionError, MediaDTLSTransportFailedError = _a.MediaDTLSTransportFailedError, SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError;\nvar nInstances = 0;\n/*\nRoomSignaling States\n-----------------------\n\n    +-----------+     +--------------+\n    |           |     |              |\n    | connected |---->| disconnected |\n    |           |     |              |\n    +-----------+     +--------------+\n          |  ^               ^\n          |  |               |\n          |  |   +--------------+\n          |  +---|              |\n          |      | reconnecting |\n          +----->|              |\n                 +--------------+\n\n*/\nvar states = {\n    connected: [\n        'reconnecting',\n        'disconnected'\n    ],\n    reconnecting: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link Room} implementation\n * @extends StateMachine\n * @property {RTCPeerConnectionState} connectionState\n * @property {?Participant.SID} dominantSpeakerSid\n * @property {ParticipantSignaling} localParticipant\n * @property {RTCIceConnectionState} iceConnectionState\n * @property {string} name\n * @property {Map<string, RemoteParticipantSignaling>} participants\n * @property {RecordingSignaling} recording\n * @property {Room.SID} sid\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @property {string} signalingConnectionState - \"connected\",\n *   \"reconnecting\", or \"disconnected\"\n * @emits RoomSignaling#connectionStateChanged\n * @emits RoomSignaling#dominantSpeakerChanged\n * @emits RoomSignaling#iceConnectionStateChanged\n * @emits RoomSignaling#signalingConnectionStateChanged\n */\nvar RoomSignaling = /** @class */ (function (_super) {\n    __extends(RoomSignaling, _super);\n    /**\n     * Construct a {@link RoomSignaling}.\n     * @param {ParticipantSignaling} localParticipant\n     * @param {Room.SID} sid\n     * @param {string} name\n     * @param {object} options\n     */\n    function RoomSignaling(localParticipant, sid, name, options) {\n        var _this = this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL,\n            RecordingSignaling: DefaultRecordingSignaling,\n            Timeout: DefaultTimeout\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        _this = _super.call(this, 'connected', states) || this;\n        var RecordingSignaling = options.RecordingSignaling;\n        var sessionTimeout = new options.Timeout(function () {\n            _this._disconnect(_this._reconnectingError);\n        }, options.sessionTimeout, false);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            _log: {\n                value: options.log\n                    ? options.log.createLog('default', _this)\n                    : new Log('default', _this, logLevels, options.loggerName)\n            },\n            _mediaConnectionIsReconnecting: {\n                writable: true,\n                value: false\n            },\n            _options: {\n                value: options\n            },\n            _reconnectingError: {\n                value: null,\n                writable: true\n            },\n            _sessionTimeout: {\n                value: sessionTimeout\n            },\n            dominantSpeakerSid: {\n                enumerable: true,\n                value: null,\n                writable: true\n            },\n            localParticipant: {\n                enumerable: true,\n                value: localParticipant\n            },\n            name: {\n                enumerable: true,\n                value: name\n            },\n            participants: {\n                enumerable: true,\n                value: new Map()\n            },\n            recording: {\n                enumerable: true,\n                value: new RecordingSignaling()\n            },\n            sid: {\n                enumerable: true,\n                value: sid\n            }\n        });\n        _this.on('connectionStateChanged', function () {\n            if (_this.connectionState === 'failed'\n                && !['disconnected', 'failed'].includes(_this.iceConnectionState)) {\n                _this._disconnect(new MediaDTLSTransportFailedError());\n            }\n        });\n        _this.on('iceConnectionStateChanged', function () { return maybeUpdateState(_this); });\n        _this.on('signalingConnectionStateChanged', function () { return maybeUpdateState(_this); });\n        // NOTE(mmalavalli): In case \"iceConnectionState\" is already failed, update\n        // the RoomSignaling state. setTimeout() ensures that the state is updated\n        // after RoomV2's constructor is fully executed, thereby making \"signalingConnectionState\"\n        // available here.\n        setTimeout(function () { return maybeUpdateState(_this); });\n        return _this;\n    }\n    /**\n     * Disconnect, possibly with an Error.\n     * @private\n     * @param {Error} [error]\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype._disconnect = function (error) {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected', null, [error]);\n            return true;\n        }\n        return false;\n    };\n    RoomSignaling.prototype.toString = function () {\n        return \"[RoomSignaling #\" + this._instanceId + \": \" + (this.localParticipant ? this.localParticipant.sid : 'null') + \"]\";\n    };\n    /**\n     * Connect {@link RemoteParticipantSignaling} to the {@link RoomSignaling}.\n     * @param {RemoteParticipantSignaling} participant\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype.connectParticipant = function (participant) {\n        var self = this;\n        if (participant.state === 'disconnected') {\n            return false;\n        }\n        if (this.participants.has(participant.sid)) {\n            return false;\n        }\n        this.participants.set(participant.sid, participant);\n        participant.on('stateChanged', function stateChanged(state) {\n            if (state === 'disconnected') {\n                participant.removeListener('stateChanged', stateChanged);\n                self.participants.delete(participant.sid);\n                self.emit('participantDisconnected', participant);\n            }\n        });\n        this.emit('participantConnected', participant);\n        return true;\n    };\n    /**\n     * Disconnect.\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype.disconnect = function () {\n        return this._disconnect();\n    };\n    /**\n     * Set (or unset) the Dominant Speaker.\n     * @param {?Participant.SID} dominantSpeakerSid\n     * @returns {void}\n     */\n    RoomSignaling.prototype.setDominantSpeaker = function (dominantSpeakerSid) {\n        this.dominantSpeakerSid = dominantSpeakerSid;\n        this.emit('dominantSpeakerChanged');\n    };\n    return RoomSignaling;\n}(StateMachine));\n/**\n * @event RoomSignaling#event:connectionStateChanged\n */\n/**\n * @event RoomSignaling#event:dominantSpeakerChanged\n */\n/**\n * {@link RemoteParticipantSignaling} connected to the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantConnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * {@link RemoteParticipantSignaling} disconnected from the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantDisconnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * @event RoomSignaling#event:iceConnectionStateChanged\n */\n/**\n * @event RoomSignaling#event:signalingConnectionStateChanged\n */\n/**\n * Maybe update the {@link RoomSignaling} state.\n * @param {RoomSignaling} roomSignaling\n */\nfunction maybeUpdateState(roomSignaling) {\n    if (roomSignaling.state === 'disconnected' || roomSignaling.signalingConnectionState === 'disconnected') {\n        roomSignaling._sessionTimeout.clear();\n        return;\n    }\n    var newState;\n    if (roomSignaling.signalingConnectionState === 'reconnecting') {\n        newState = roomSignaling.signalingConnectionState;\n    }\n    else if (roomSignaling.iceConnectionState === 'failed') {\n        roomSignaling._mediaConnectionIsReconnecting = true;\n        newState = 'reconnecting';\n    }\n    else if (roomSignaling.iceConnectionState === 'new' || roomSignaling.iceConnectionState === 'checking') {\n        newState = roomSignaling._mediaConnectionIsReconnecting ? 'reconnecting' : 'connected';\n    }\n    else {\n        roomSignaling._mediaConnectionIsReconnecting = false;\n        roomSignaling._reconnectingError = null;\n        roomSignaling._sessionTimeout.clear();\n        newState = 'connected';\n    }\n    if (newState === roomSignaling.state) {\n        return;\n    }\n    if (newState === 'reconnecting') {\n        roomSignaling._reconnectingError = roomSignaling.signalingConnectionState === 'reconnecting'\n            ? new SignalingConnectionDisconnectedError()\n            : new MediaConnectionError();\n        roomSignaling._sessionTimeout.start();\n        roomSignaling.preempt(newState, null, [roomSignaling._reconnectingError]);\n    }\n    else {\n        roomSignaling.preempt(newState);\n    }\n}\nmodule.exports = RoomSignaling;\n//# sourceMappingURL=room.js.map","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are stricting equal to the last state value\n  var _useReducer = useReducer(function (state) {\n    return !state;\n  }, false),\n      dispatch = _useReducer[1];\n\n  return dispatch;\n}","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrack = require('./mediatrack');\n/**\n * An {@link AudioTrack} is a {@link Track} representing audio.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link AudioTrack} has\n *   started; if the {@link AudioTrack} started, there is enough audio data to\n *   begin playback\n * @property {boolean} isEnabled - Whether or not the {@link AudioTrack} is\n *   enabled; if the {@link AudioTrack} is not enabled, it is \"muted\"\n * @property {Track.Kind} kind - \"audio\"\n * @property {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed audio samples.\n * It is always null as audio processing is not currently supported.\n * @emits AudioTrack#disabled\n * @emits AudioTrack#enabled\n * @emits AudioTrack#started\n */\nvar AudioTrack = /** @class */ (function (_super) {\n    __extends(AudioTrack, _super);\n    /**\n     * Construct an {@link AudioTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function AudioTrack(mediaTrackTransceiver, options) {\n        return _super.call(this, mediaTrackTransceiver, options) || this;\n    }\n    /**\n     * Create an HTMLAudioElement and attach the {@link AudioTrack} to it.\n     *\n     * The HTMLAudioElement's <code>srcObject</code> will be set to a new\n     * MediaStream containing the {@link AudioTrack}'s MediaStreamTrack.\n     *\n     * @returns {HTMLAudioElement} audioElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * Video.createLocalAudioTrack().then(function(audioTrack) {\n     *   const audioElement = audioTrack.attach();\n     *   document.body.appendChild(audioElement);\n     * });\n    */ /**\n     * Attach the {@link AudioTrack} to an existing HTMLMediaElement. The\n     * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalAudioTrack().then(function(audioTrack) {\n     *   audioTrack.attach(videoElement);\n     * });\n    */ /**\n     * Attach the {@link AudioTrack} to an HTMLMediaElement selected by\n     * <code>document.querySelector</code>. The HTMLMediaElement could be an\n     * HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link AudioTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {string} selector - A query selector for the HTMLMediaElement to\n     *   attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * videoElement.id = 'my-video-element';\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalAudioTrack().then(function(track) {\n     *   track.attach('#my-video-element');\n     * });\n     */\n    AudioTrack.prototype.attach = function () {\n        return _super.prototype.attach.apply(this, arguments);\n    };\n    /**\n     * Detach the {@link AudioTrack} from all previously attached HTMLMediaElements.\n     * @returns {Array<HTMLMediaElement>} mediaElements\n     * @example\n     * const mediaElements = audioTrack.detach();\n     * mediaElements.forEach(mediaElement => mediaElement.remove());\n    */ /**\n     * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement.\n     * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n     *   which the {@link AudioTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const videoElement = document.getElementById('my-video-element');\n     * audioTrack.detach(videoElement).remove();\n    */ /**\n     * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement\n     *   specified by <code>document.querySelector</code>.\n     * @param {string} selector - The query selector of HTMLMediaElement to which\n     *    the {@link AudioTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * audioTrack.detach('#my-video-element').remove();\n     */\n    AudioTrack.prototype.detach = function () {\n        return _super.prototype.detach.apply(this, arguments);\n    };\n    return AudioTrack;\n}(MediaTrack));\n/**\n * The {@link AudioTrack} was disabled, i.e. \"muted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was disabled\n * @event AudioTrack#disabled\n */\n/**\n * The {@link AudioTrack} was enabled, i.e. \"unmuted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was enabled\n * @event AudioTrack#enabled\n */\n/**\n * The {@link AudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {AudioTrack} track - The {@link AudioTrack} that started\n * @event AudioTrack#started\n */\nmodule.exports = AudioTrack;\n//# sourceMappingURL=audiotrack.js.map","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'AccordionContext';\nexport default context;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useContext } from 'react';\nimport SelectableContext from './SelectableContext';\nimport AccordionContext from './AccordionContext';\nexport function useAccordionToggle(eventKey, onClick) {\n  var contextEventKey = useContext(AccordionContext);\n  var onSelect = useContext(SelectableContext);\n  return function (e) {\n    /*\n      Compare the event key in context with the given event key.\n      If they are the same, then collapse the component.\n    */\n    var eventKeyPassed = eventKey === contextEventKey ? null : eventKey;\n    if (onSelect) onSelect(eventKeyPassed, e);\n    if (onClick) onClick(e);\n  };\n}\nvar AccordionToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'button' : _ref$as,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"eventKey\", \"onClick\"]);\n\n  var accordionOnClick = useAccordionToggle(eventKey, onClick);\n\n  if (Component === 'button') {\n    props.type = 'button';\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    onClick: accordionOnClick\n  }, props), children);\n});\nexport default AccordionToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n  var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n  var value = elem[offset];\n  var margins = MARGINS[dimension];\n  return value + // @ts-ignore\n  parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n  parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onEntered = _ref.onEntered,\n      onExit = _ref.onExit,\n      onExiting = _ref.onExiting,\n      className = _ref.className,\n      children = _ref.children,\n      _ref$dimension = _ref.dimension,\n      dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n      _ref$getDimensionValu = _ref.getDimensionValue,\n      getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n      props = _objectWithoutPropertiesLoose(_ref, [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"]);\n\n  /* Compute dimension */\n  var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n  /* -- Expanding -- */\n\n  var handleEnter = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = '0';\n    }, onEnter);\n  }, [computedDimension, onEnter]);\n  var handleEntering = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n      elem.style[computedDimension] = elem[scroll] + \"px\";\n    }, onEntering);\n  }, [computedDimension, onEntering]);\n  var handleEntered = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = null;\n    }, onEntered);\n  }, [computedDimension, onEntered]);\n  /* -- Collapsing -- */\n\n  var handleExit = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n      triggerBrowserReflow(elem);\n    }, onExit);\n  }, [onExit, getDimensionValue, computedDimension]);\n  var handleExiting = useMemo(function () {\n    return createChainedFunction(function (elem) {\n      elem.style[computedDimension] = null;\n    }, onExiting);\n  }, [computedDimension, onExiting]);\n  return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n  , _extends({\n    ref: ref,\n    addEndListener: transitionEnd\n  }, props, {\n    \"aria-expanded\": props.role ? props.in : null,\n    onEnter: handleEnter,\n    onEntering: handleEntering,\n    onEntered: handleEntered,\n    onExit: handleExit,\n    onExiting: handleExiting\n  }), function (state, innerProps) {\n    return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n      className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n    }));\n  });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useContext } from 'react';\nimport Collapse from './Collapse';\nimport AccordionContext from './AccordionContext';\nimport SelectableContext from './SelectableContext';\nvar AccordionCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      eventKey = _ref.eventKey,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"eventKey\"]);\n\n  var contextEventKey = useContext(AccordionContext); // Empty SelectableContext is to prevent elements in the collapse\n  // from collapsing the accordion when clicked.\n\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(Collapse, _extends({\n    ref: ref,\n    in: contextEventKey === eventKey\n  }, props), /*#__PURE__*/React.createElement(\"div\", null, React.Children.only(children))));\n});\nAccordionCollapse.displayName = 'AccordionCollapse';\nexport default AccordionCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionToggle from './AccordionToggle';\nimport SelectableContext from './SelectableContext';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionContext from './AccordionContext';\nvar Accordion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _useUncontrolled = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  }),\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      activeKey = _useUncontrolled.activeKey,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      children = _useUncontrolled.children,\n      className = _useUncontrolled.className,\n      onSelect = _useUncontrolled.onSelect,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"activeKey\", \"bsPrefix\", \"children\", \"className\", \"onSelect\"]);\n\n  var finalClassName = classNames(className, useBootstrapPrefix(bsPrefix, 'accordion'));\n  return /*#__PURE__*/React.createElement(AccordionContext.Provider, {\n    value: activeKey || null\n  }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: onSelect || null\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, controlledProps, {\n    className: finalClassName\n  }), children)));\n});\nAccordion.displayName = 'Accordion';\nAccordion.Toggle = AccordionToggle;\nAccordion.Collapse = AccordionCollapse;\nexport default Accordion;","/*!\n * jQuery UI Touch Punch 0.2.3\n *\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n(function ($) {\n\n  // Detect touch support\n  $.support.touch = 'ontouchend' in document;\n\n  // Ignore browsers without touch support\n  if (!$.support.touch) {\n    return;\n  }\n\n  var mouseProto = $.ui.mouse.prototype,\n      _mouseInit = mouseProto._mouseInit,\n      _mouseDestroy = mouseProto._mouseDestroy,\n      touchHandled;\n\n  /**\n   * Simulate a mouse event based on a corresponding touch event\n   * @param {Object} event A touch event\n   * @param {String} simulatedType The corresponding mouse event\n   */\n  function simulateMouseEvent (event, simulatedType) {\n\n    // Ignore multi-touch events\n    if (event.originalEvent.touches.length > 1) {\n      return;\n    }\n\n    event.preventDefault();\n\n    var touch = event.originalEvent.changedTouches[0],\n        simulatedEvent = document.createEvent('MouseEvents');\n    \n    // Initialize the simulated mouse event using the touch event's coordinates\n    simulatedEvent.initMouseEvent(\n      simulatedType,    // type\n      true,             // bubbles                    \n      true,             // cancelable                 \n      window,           // view                       \n      1,                // detail                     \n      touch.screenX,    // screenX                    \n      touch.screenY,    // screenY                    \n      touch.clientX,    // clientX                    \n      touch.clientY,    // clientY                    \n      false,            // ctrlKey                    \n      false,            // altKey                     \n      false,            // shiftKey                   \n      false,            // metaKey                    \n      0,                // button                     \n      null              // relatedTarget              \n    );\n\n    // Dispatch the simulated event to the target element\n    event.target.dispatchEvent(simulatedEvent);\n  }\n\n  /**\n   * Handle the jQuery UI widget's touchstart events\n   * @param {Object} event The widget element's touchstart event\n   */\n  mouseProto._touchStart = function (event) {\n\n    var self = this;\n\n    // Ignore the event if another widget is already being handled\n    if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {\n      return;\n    }\n\n    // Set the flag to prevent other widgets from inheriting the touch event\n    touchHandled = true;\n\n    // Track movement to determine if interaction was a click\n    self._touchMoved = false;\n\n    // Simulate the mouseover event\n    simulateMouseEvent(event, 'mouseover');\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n\n    // Simulate the mousedown event\n    simulateMouseEvent(event, 'mousedown');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchmove events\n   * @param {Object} event The document's touchmove event\n   */\n  mouseProto._touchMove = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Interaction was not a click\n    this._touchMoved = true;\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchend events\n   * @param {Object} event The document's touchend event\n   */\n  mouseProto._touchEnd = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Simulate the mouseup event\n    simulateMouseEvent(event, 'mouseup');\n\n    // Simulate the mouseout event\n    simulateMouseEvent(event, 'mouseout');\n\n    // If the touch interaction did not move, it should trigger a click\n    if (!this._touchMoved) {\n\n      // Simulate the click event\n      simulateMouseEvent(event, 'click');\n    }\n\n    // Unset the flag to allow other widgets to inherit the touch event\n    touchHandled = false;\n  };\n\n  /**\n   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n   * This method extends the widget with bound touch event handlers that\n   * translate touch events to mouse events and pass them to the widget's\n   * original mouse event handling methods.\n   */\n  mouseProto._mouseInit = function () {\n    \n    var self = this;\n\n    // Delegate the touch handlers to the widget's element\n    self.element.bind({\n      touchstart: $.proxy(self, '_touchStart'),\n      touchmove: $.proxy(self, '_touchMove'),\n      touchend: $.proxy(self, '_touchEnd')\n    });\n\n    // Call the original $.ui.mouse init method\n    _mouseInit.call(self);\n  };\n\n  /**\n   * Remove the touch event handlers\n   */\n  mouseProto._mouseDestroy = function () {\n    \n    var self = this;\n\n    // Delegate the touch handlers to the widget's element\n    self.element.unbind({\n      touchstart: $.proxy(self, '_touchStart'),\n      touchmove: $.proxy(self, '_touchMove'),\n      touchend: $.proxy(self, '_touchEnd')\n    });\n\n    // Call the original $.ui.mouse destroy method\n    _mouseDestroy.call(self);\n  };\n\n})(jQuery);","'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar nativeMatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n  nativeMatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n  setInternalState(this, {\n    type: REGEXP_STRING_ITERATOR,\n    regexp: regexp,\n    string: string,\n    global: $global,\n    unicode: fullUnicode,\n    done: false\n  });\n}, REGEXP_STRING, function next() {\n  var state = getInternalState(this);\n  if (state.done) return createIterResultObject(undefined, true);\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) {\n    state.done = true;\n    return createIterResultObject(undefined, true);\n  }\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return createIterResultObject(match, false);\n  }\n  state.done = true;\n  return createIterResultObject(match, false);\n});\n\nvar $matchAll = function (string) {\n  var R = anObject(this);\n  var S = toString(string);\n  var C = speciesConstructor(R, RegExp);\n  var flags = toString(getRegExpFlags(R));\n  var matcher, $global, fullUnicode;\n  matcher = new C(C === RegExp ? R.source : R, flags);\n  $global = !!~stringIndexOf(flags, 'g');\n  fullUnicode = !!~stringIndexOf(flags, 'u');\n  matcher.lastIndex = toLength(R.lastIndex);\n  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n  matchAll: function matchAll(regexp) {\n    var O = requireObjectCoercible(this);\n    var flags, S, matcher, rx;\n    if (isObject(regexp)) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n        if (!~stringIndexOf(flags, 'g')) throw new $TypeError('`.matchAll` does not allow non-global regexes');\n      }\n      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n      matcher = getMethod(regexp, MATCH_ALL);\n      if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;\n      if (matcher) return call(matcher, regexp, O);\n    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n    S = toString(O);\n    rx = new RegExp(regexp, 'g');\n    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n  }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar guessBrowser = require('../../webrtc/util').guessBrowser;\nvar PeerConnectionV2 = require('./peerconnection');\nvar MediaTrackSender = require('../../media/track/sender');\nvar QueueingEventEmitter = require('../../queueingeventemitter');\nvar util = require('../../util');\nvar MediaConnectionError = require('../../util/twilio-video-errors').MediaConnectionError;\nvar isFirefox = guessBrowser() === 'firefox';\n/**\n * {@link PeerConnectionManager} manages multiple {@link PeerConnectionV2}s.\n * @extends QueueingEventEmitter\n * @emits PeerConnectionManager#candidates\n * @emits PeerConnectionManager#connectionStateChanged\n * @emits PeerConnectionManager#description\n * @emits PeerConnectionManager#iceConnectionStateChanged\n * @emits PeerConnectionManager#trackAdded\n */\nvar PeerConnectionManager = /** @class */ (function (_super) {\n    __extends(PeerConnectionManager, _super);\n    /**\n     * Construct {@link PeerConnectionManager}.\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} options\n     */\n    function PeerConnectionManager(encodingParameters, preferredCodecs, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            audioContextFactory: isFirefox\n                ? require('../../webaudio/audiocontext')\n                : null,\n            PeerConnectionV2: PeerConnectionV2\n        }, options);\n        var audioContext = options.audioContextFactory\n            ? options.audioContextFactory.getOrCreate(_this)\n            : null;\n        // NOTE(mroberts): If we're using an AudioContext, we don't need to specify\n        // `offerToReceiveAudio` in RTCOfferOptions.\n        var offerOptions = audioContext\n            ? { offerToReceiveVideo: true }\n            : { offerToReceiveAudio: true, offerToReceiveVideo: true };\n        Object.defineProperties(_this, {\n            _audioContextFactory: {\n                value: options.audioContextFactory\n            },\n            _closedPeerConnectionIds: {\n                value: new Set()\n            },\n            _configuration: {\n                writable: true,\n                value: null\n            },\n            _configurationDeferred: {\n                writable: true,\n                value: util.defer()\n            },\n            _connectionState: {\n                value: 'new',\n                writable: true\n            },\n            _dummyAudioTrackSender: {\n                value: audioContext\n                    ? new MediaTrackSender(createDummyAudioMediaStreamTrack(audioContext))\n                    : null\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _iceConnectionState: {\n                writable: true,\n                value: 'new'\n            },\n            _dataTrackSenders: {\n                writable: true,\n                value: new Set()\n            },\n            _lastConnectionState: {\n                value: 'new',\n                writable: true\n            },\n            _lastIceConnectionState: {\n                writable: true,\n                value: 'new'\n            },\n            _mediaTrackSenders: {\n                writable: true,\n                value: new Set()\n            },\n            _offerOptions: {\n                value: offerOptions\n            },\n            _peerConnections: {\n                value: new Map()\n            },\n            _preferredCodecs: {\n                value: preferredCodecs\n            },\n            _sessionTimeout: {\n                value: null,\n                writable: true\n            },\n            _PeerConnectionV2: {\n                value: options.PeerConnectionV2\n            }\n        });\n        return _this;\n    }\n    PeerConnectionManager.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n        this._peerConnections.forEach(function (pc) { return pc.setEffectiveAdaptiveSimulcast(effectiveAdaptiveSimulcast); });\n        this._preferredCodecs.video.forEach(function (cs) {\n            if ('adaptiveSimulcast' in cs) {\n                cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n            }\n        });\n    };\n    Object.defineProperty(PeerConnectionManager.prototype, \"connectionState\", {\n        /**\n         * A summarized RTCPeerConnectionState across all the\n         * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this._connectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionManager.prototype, \"iceConnectionState\", {\n        /**\n         * A summarized RTCIceConnectionState across all the\n         * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return this._iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Close the {@link PeerConnectionV2}s which are no longer relevant.\n     * @param {Array<object>} peerConnectionStates\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype._closeAbsentPeerConnections = function (peerConnectionStates) {\n        var peerConnectionIds = new Set(peerConnectionStates.map(function (peerConnectionState) { return peerConnectionState.id; }));\n        this._peerConnections.forEach(function (peerConnection) {\n            if (!peerConnectionIds.has(peerConnection.id)) {\n                peerConnection._close();\n            }\n        });\n        return this;\n    };\n    /**\n     * Get the {@link PeerConnectionManager}'s configuration.\n     * @private\n     * @returns {Promise<object>}\n     */\n    PeerConnectionManager.prototype._getConfiguration = function () {\n        return this._configurationDeferred.promise;\n    };\n    /**\n     * Get or create a {@link PeerConnectionV2}.\n     * @private\n     * @param {string} id\n     * @param {object} [configuration]\n     * @returns {PeerConnectionV2}\n     */\n    PeerConnectionManager.prototype._getOrCreate = function (id, configuration) {\n        var _this = this;\n        var self = this;\n        var peerConnection = this._peerConnections.get(id);\n        if (!peerConnection) {\n            var PeerConnectionV2_1 = this._PeerConnectionV2;\n            var options = Object.assign({\n                dummyAudioMediaStreamTrack: this._dummyAudioTrackSender\n                    ? this._dummyAudioTrackSender.track\n                    : null,\n                offerOptions: this._offerOptions\n            }, this._sessionTimeout ? {\n                sessionTimeout: this._sessionTimeout\n            } : {}, configuration);\n            try {\n                peerConnection = new PeerConnectionV2_1(id, this._encodingParameters, this._preferredCodecs, options);\n            }\n            catch (e) {\n                throw new MediaConnectionError();\n            }\n            this._peerConnections.set(peerConnection.id, peerConnection);\n            peerConnection.on('candidates', this.queue.bind(this, 'candidates'));\n            peerConnection.on('description', this.queue.bind(this, 'description'));\n            peerConnection.on('trackAdded', this.queue.bind(this, 'trackAdded'));\n            peerConnection.on('stateChanged', function stateChanged(state) {\n                if (state === 'closed') {\n                    peerConnection.removeListener('stateChanged', stateChanged);\n                    self._dataTrackSenders.forEach(function (sender) { return peerConnection.removeDataTrackSender(sender); });\n                    self._mediaTrackSenders.forEach(function (sender) { return peerConnection.removeMediaTrackSender(sender); });\n                    self._peerConnections.delete(peerConnection.id);\n                    self._closedPeerConnectionIds.add(peerConnection.id);\n                    updateConnectionState(self);\n                    updateIceConnectionState(self);\n                }\n            });\n            peerConnection.on('connectionStateChanged', function () { return updateConnectionState(_this); });\n            peerConnection.on('iceConnectionStateChanged', function () { return updateIceConnectionState(_this); });\n            this._dataTrackSenders.forEach(peerConnection.addDataTrackSender, peerConnection);\n            this._mediaTrackSenders.forEach(peerConnection.addMediaTrackSender, peerConnection);\n            updateIceConnectionState(this);\n        }\n        return peerConnection;\n    };\n    /**\n     * Close all the {@link PeerConnectionV2}s in this {@link PeerConnectionManager}.\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.close = function () {\n        this._peerConnections.forEach(function (peerConnection) {\n            peerConnection.close();\n        });\n        if (this._dummyAudioTrackSender) {\n            this._dummyAudioTrackSender.stop();\n        }\n        if (this._audioContextFactory) {\n            this._audioContextFactory.release(this);\n        }\n        updateIceConnectionState(this);\n        return this;\n    };\n    /**\n     * Create a new {@link PeerConnectionV2} on this {@link PeerConnectionManager}.\n     * Then, create a new offer with the newly-created {@link PeerConnectionV2}.\n     * @return {Promise<this>}\n     */\n    PeerConnectionManager.prototype.createAndOffer = function () {\n        var _this = this;\n        return this._getConfiguration().then(function (configuration) {\n            var id;\n            do {\n                id = util.makeUUID();\n            } while (_this._peerConnections.has(id));\n            return _this._getOrCreate(id, configuration);\n        }).then(function (peerConnection) {\n            return peerConnection.offer();\n        }).then(function () {\n            return _this;\n        });\n    };\n    /**\n     * Get the {@link DataTrackReceiver}s and {@link MediaTrackReceiver}s of all\n     * the {@link PeerConnectionV2}s.\n     * @returns {Array<DataTrackReceiver|MediaTrackReceiver>} trackReceivers\n     */\n    PeerConnectionManager.prototype.getTrackReceivers = function () {\n        return util.flatMap(this._peerConnections, function (peerConnection) { return peerConnection.getTrackReceivers(); });\n    };\n    /**\n     * Get the states of all {@link PeerConnectionV2}s.\n     * @returns {Array<object>}\n     */\n    PeerConnectionManager.prototype.getStates = function () {\n        var peerConnectionStates = [];\n        this._peerConnections.forEach(function (peerConnection) {\n            var peerConnectionState = peerConnection.getState();\n            if (peerConnectionState) {\n                peerConnectionStates.push(peerConnectionState);\n            }\n        });\n        return peerConnectionStates;\n    };\n    /**\n     * Set the {@link PeerConnectionManager}'s configuration.\n     * @param {object} configuration\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setConfiguration = function (configuration) {\n        if (this._configuration) {\n            this._configurationDeferred = util.defer();\n            this._peerConnections.forEach(function (peerConnection) {\n                peerConnection.setConfiguration(configuration);\n            });\n        }\n        this._configuration = configuration;\n        this._configurationDeferred.resolve(configuration);\n        return this;\n    };\n    /**\n     * Set the ICE reconnect timeout period for all {@link PeerConnectionV2}s.\n     * @param {number} period - Period in milliseconds.\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setIceReconnectTimeout = function (period) {\n        if (this._sessionTimeout === null) {\n            this._peerConnections.forEach(function (peerConnection) {\n                peerConnection.setIceReconnectTimeout(period);\n            });\n            this._sessionTimeout = period;\n        }\n        return this;\n    };\n    /**\n     * Set the {@link DataTrackSender}s and {@link MediaTrackSender}s on the\n     * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n     * @param {Array<DataTrackSender|MediaTrackSender>} trackSenders\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setTrackSenders = function (trackSenders) {\n        var dataTrackSenders = new Set(trackSenders.filter(function (trackSender) { return trackSender.kind === 'data'; }));\n        var mediaTrackSenders = new Set(trackSenders\n            .filter(function (trackSender) { return trackSender && (trackSender.kind === 'audio' || trackSender.kind === 'video'); }));\n        var changes = getTrackSenderChanges(this, dataTrackSenders, mediaTrackSenders);\n        this._dataTrackSenders = dataTrackSenders;\n        this._mediaTrackSenders = mediaTrackSenders;\n        applyTrackSenderChanges(this, changes);\n        return this;\n    };\n    /**\n     * Update the {@link PeerConnectionManager}.\n     * @param {Array<object>} peerConnectionStates\n     * @param {boolean} [synced=false]\n     * @returns {Promise<this>}\n     */\n    PeerConnectionManager.prototype.update = function (peerConnectionStates, synced) {\n        var _this = this;\n        if (synced === void 0) { synced = false; }\n        if (synced) {\n            this._closeAbsentPeerConnections(peerConnectionStates);\n        }\n        return this._getConfiguration().then(function (configuration) {\n            return Promise.all(peerConnectionStates.map(function (peerConnectionState) {\n                if (_this._closedPeerConnectionIds.has(peerConnectionState.id)) {\n                    return null;\n                }\n                var peerConnection = _this._getOrCreate(peerConnectionState.id, configuration);\n                return peerConnection.update(peerConnectionState);\n            }));\n        }).then(function () {\n            return _this;\n        });\n    };\n    /**\n     * Get the {@link PeerConnectionManager}'s media statistics.\n     * @returns {Promise.<Map<PeerConnectionV2#id, StandardizedStatsResponse>>}\n     */\n    PeerConnectionManager.prototype.getStats = function () {\n        var peerConnections = Array.from(this._peerConnections.values());\n        return Promise.all(peerConnections.map(function (peerConnection) { return peerConnection.getStats().then(function (response) { return [\n            peerConnection.id,\n            response\n        ]; }); })).then(function (responses) { return new Map(responses); });\n    };\n    return PeerConnectionManager;\n}(QueueingEventEmitter));\n/**\n * Create a dummy audio MediaStreamTrack with the given AudioContext.\n * @private\n * @param {AudioContext} audioContext\n * @return {MediaStreamTrack}\n */\nfunction createDummyAudioMediaStreamTrack(audioContext) {\n    var mediaStreamDestination = audioContext.createMediaStreamDestination();\n    return mediaStreamDestination.stream.getAudioTracks()[0];\n}\n/**\n * @event {PeerConnectionManager#candidates}\n * @param {object} candidates\n */\n/**\n * @event {PeerConnectionManager#connectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#description}\n * @param {object} description\n */\n/**\n * @event {PeerConnectionManager#iceConnectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#trackAdded}\n * @param {MediaStreamTrack|DataTrackReceiver} mediaStreamTrackOrDataTrackReceiver\n */\n/**\n * Apply {@link TrackSenderChanges}.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {TrackSenderChanges} changes\n * @returns {void}\n */\nfunction applyTrackSenderChanges(peerConnectionManager, changes) {\n    if (changes.data.add.size\n        || changes.data.remove.size\n        || changes.media.add.size\n        || changes.media.remove.size) {\n        peerConnectionManager._peerConnections.forEach(function (peerConnection) {\n            changes.data.remove.forEach(peerConnection.removeDataTrackSender, peerConnection);\n            changes.media.remove.forEach(peerConnection.removeMediaTrackSender, peerConnection);\n            changes.data.add.forEach(peerConnection.addDataTrackSender, peerConnection);\n            changes.media.add.forEach(peerConnection.addMediaTrackSender, peerConnection);\n            if (changes.media.add.size\n                || changes.media.remove.size\n                || (changes.data.add.size && !peerConnection.isApplicationSectionNegotiated)) {\n                peerConnection.offer();\n            }\n        });\n    }\n}\n/**\n * @interface DataTrackSenderChanges\n * @property {Set<DataTrackSender>} add\n * @property {Set<DataTrackSender>} remove\n */\n/**\n * Get the {@Link DataTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<DataTrackSender>} dataTrackSenders\n * @returns {DataTrackSenderChanges} changes\n */\nfunction getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders) {\n    var dataTrackSendersToAdd = util.difference(dataTrackSenders, peerConnectionManager._dataTrackSenders);\n    var dataTrackSendersToRemove = util.difference(peerConnectionManager._dataTrackSenders, dataTrackSenders);\n    return {\n        add: dataTrackSendersToAdd,\n        remove: dataTrackSendersToRemove\n    };\n}\n/**\n * @interface TrackSenderChanges\n * @property {DataTrackSenderChanges} data\n * @property {MediaTrackSenderChanges} media\n */\n/**\n * Get {@link DataTrackSender} and {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<DataTrackSender>} dataTrackSenders\n * @param {Array<MediaTrackSender>} mediaTrackSenders\n * @returns {TrackSenderChanges} changes\n */\nfunction getTrackSenderChanges(peerConnectionManager, dataTrackSenders, mediaTrackSenders) {\n    return {\n        data: getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders),\n        media: getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders)\n    };\n}\n/**\n * @interface MediaTrackSenderChanges\n * @property {Set<MediaTrackSender>} add\n * @property {Set<MediaTrackSender>} remove\n */\n/**\n * Get the {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<MediaTrackSender>} mediaTrackSenders\n * @returns {MediaTrackSenderChanges} changes\n */\nfunction getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders) {\n    var mediaTrackSendersToAdd = util.difference(mediaTrackSenders, peerConnectionManager._mediaTrackSenders);\n    var mediaTrackSendersToRemove = util.difference(peerConnectionManager._mediaTrackSenders, mediaTrackSenders);\n    return {\n        add: mediaTrackSendersToAdd,\n        remove: mediaTrackSendersToRemove\n    };\n}\n/**\n * This object maps RTCIceConnectionState and RTCPeerConnectionState values to a \"rank\".\n */\nvar toRank = {\n    new: 0,\n    checking: 1,\n    connecting: 2,\n    connected: 3,\n    completed: 4,\n    disconnected: -1,\n    failed: -2,\n    closed: -3\n};\n/**\n * This object maps \"rank\" back to RTCIceConnectionState or RTCPeerConnectionState values.\n */\nvar fromRank;\n/**\n * `Object.keys` is not supported in older browsers, so we can't just\n * synchronously call it in this module; we need to defer invoking it until we\n * know we're in a modern environment (i.e., anything that supports WebRTC).\n * @returns {object} fromRank\n */\nfunction createFromRank() {\n    return Object.keys(toRank).reduce(function (fromRank, state) {\n        var _a;\n        return Object.assign(fromRank, (_a = {}, _a[toRank[state]] = state, _a));\n    }, {});\n}\n/**\n * Summarize RTCIceConnectionStates or RTCPeerConnectionStates.\n * @param {Array<RTCIceConnectionState>|Array<RTCPeerConnectionState>} states\n * @returns {RTCIceConnectionState|RTCPeerConnectionState} summary\n */\nfunction summarizeIceOrPeerConnectionStates(states) {\n    if (!states.length) {\n        return 'new';\n    }\n    fromRank = fromRank || createFromRank();\n    return states.reduce(function (state1, state2) {\n        return fromRank[Math.max(toRank[state1], toRank[state2])];\n    });\n}\n/**\n * Update the {@link PeerConnectionManager}'s `iceConnectionState`, and emit an\n * \"iceConnectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateIceConnectionState(pcm) {\n    pcm._lastIceConnectionState = pcm.iceConnectionState;\n    pcm._iceConnectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values())).map(function (pcv2) { return pcv2.iceConnectionState; }));\n    if (pcm.iceConnectionState !== pcm._lastIceConnectionState) {\n        pcm.emit('iceConnectionStateChanged');\n    }\n}\n/**\n * Update the {@link PeerConnectionManager}'s `connectionState`, and emit a\n * \"connectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateConnectionState(pcm) {\n    pcm._lastConnectionState = pcm.connectionState;\n    pcm._connectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values())).map(function (pcv2) { return pcv2.connectionState; }));\n    if (pcm.connectionState !== pcm._lastConnectionState) {\n        pcm.emit('connectionStateChanged');\n    }\n}\nmodule.exports = PeerConnectionManager;\n//# sourceMappingURL=peerconnectionmanager.js.map","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","\"use strict\";\n/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar interface_1 = require(\"./interface\");\nvar transitionHook_1 = require(\"./transitionHook\");\n/**\n * This class returns applicable TransitionHooks for a specific Transition instance.\n *\n * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n * myTransition.onEnter(...).  The HookBuilder finds matching RegisteredHooks (where the match criteria is\n * determined by the type of hook)\n *\n * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n *\n * The HookBuilder constructor is given the $transitions service and a Transition instance.  Thus, a HookBuilder\n * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n * in the Transition class, so we must also provide the Transition's _treeChanges)\n *\n */\nvar HookBuilder = /** @class */ (function () {\n    function HookBuilder(transition) {\n        this.transition = transition;\n    }\n    HookBuilder.prototype.buildHooksForPhase = function (phase) {\n        var _this = this;\n        var $transitions = this.transition.router.transitionService;\n        return $transitions._pluginapi._getEvents(phase)\n            .map(function (type) { return _this.buildHooks(type); })\n            .reduce(common_1.unnestR, [])\n            .filter(common_1.identity);\n    };\n    /**\n     * Returns an array of newly built TransitionHook objects.\n     *\n     * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n     * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n     * - For each of the [[PathNode]]s, creates a TransitionHook\n     *\n     * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n     */\n    HookBuilder.prototype.buildHooks = function (hookType) {\n        var transition = this.transition;\n        var treeChanges = transition.treeChanges();\n        // Find all the matching registered hooks for a given hook type\n        var matchingHooks = this.getMatchingHooks(hookType, treeChanges);\n        if (!matchingHooks)\n            return [];\n        var baseHookOptions = {\n            transition: transition,\n            current: transition.options().current,\n        };\n        var makeTransitionHooks = function (hook) {\n            // Fetch the Nodes that caused this hook to match.\n            var matches = hook.matches(treeChanges);\n            // Select the PathNode[] that will be used as TransitionHook context objects\n            var matchingNodes = matches[hookType.criteriaMatchPath.name];\n            // Return an array of HookTuples\n            return matchingNodes.map(function (node) {\n                var _options = common_1.extend({\n                    bind: hook.bind,\n                    traceData: { hookType: hookType.name, context: node },\n                }, baseHookOptions);\n                var state = hookType.criteriaMatchPath.scope === interface_1.TransitionHookScope.STATE ? node.state.self : null;\n                var transitionHook = new transitionHook_1.TransitionHook(transition, state, hook, _options);\n                return { hook: hook, node: node, transitionHook: transitionHook };\n            });\n        };\n        return matchingHooks.map(makeTransitionHooks)\n            .reduce(common_1.unnestR, [])\n            .sort(tupleSort(hookType.reverseSort))\n            .map(function (tuple) { return tuple.transitionHook; });\n    };\n    /**\n     * Finds all RegisteredHooks from:\n     * - The Transition object instance hook registry\n     * - The TransitionService ($transitions) global hook registry\n     *\n     * which matched:\n     * - the eventType\n     * - the matchCriteria (to, from, exiting, retained, entering)\n     *\n     * @returns an array of matched [[RegisteredHook]]s\n     */\n    HookBuilder.prototype.getMatchingHooks = function (hookType, treeChanges) {\n        var isCreate = hookType.hookPhase === interface_1.TransitionHookPhase.CREATE;\n        // Instance and Global hook registries\n        var $transitions = this.transition.router.transitionService;\n        var registries = isCreate ? [$transitions] : [this.transition, $transitions];\n        return registries.map(function (reg) { return reg.getHooks(hookType.name); }) // Get named hooks from registries\n            .filter(common_1.assertPredicate(predicates_1.isArray, \"broken event named: \" + hookType.name)) // Sanity check\n            .reduce(common_1.unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n            .filter(function (hook) { return hook.matches(treeChanges); }); // Only those satisfying matchCriteria\n    };\n    return HookBuilder;\n}());\nexports.HookBuilder = HookBuilder;\n/**\n * A factory for a sort function for HookTuples.\n *\n * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n * the EventHook priority.\n *\n * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n * @returns a tuple sort function\n */\nfunction tupleSort(reverseDepthSort) {\n    if (reverseDepthSort === void 0) { reverseDepthSort = false; }\n    return function nodeDepthThenPriority(l, r) {\n        var factor = reverseDepthSort ? -1 : 1;\n        var depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n        return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n    };\n}\n//# sourceMappingURL=hookBuilder.js.map","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone:\n                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone:\n                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                    '_'\n                ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar baseLocationService_1 = require(\"./baseLocationService\");\n/** A `LocationServices` that gets/sets the current location from an in-memory object */\nvar MemoryLocationService = /** @class */ (function (_super) {\n    __extends(MemoryLocationService, _super);\n    function MemoryLocationService(router) {\n        return _super.call(this, router, true) || this;\n    }\n    MemoryLocationService.prototype._get = function () {\n        return this._url;\n    };\n    MemoryLocationService.prototype._set = function (state, title, url, replace) {\n        this._url = url;\n    };\n    return MemoryLocationService;\n}(baseLocationService_1.BaseLocationServices));\nexports.MemoryLocationService = MemoryLocationService;\n//# sourceMappingURL=memoryLocationService.js.map","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['fred', 30], ['barney', 40]]);\n * // => { 'fred': 30, 'barney': 40 }\n */\nfunction fromPairs(pairs) {\n  var index = -1,\n      length = pairs ? pairs.length : 0,\n      result = {};\n\n  while (++index < length) {\n    var pair = pairs[index];\n    result[pair[0]] = pair[1];\n  }\n  return result;\n}\n\nmodule.exports = fromPairs;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","import * as preact from 'preact';\nimport { Component, createElement, isValidElement, Fragment } from 'preact';\nimport { createPortal } from 'preact/compat';\n\nconst styleTexts = [];\nconst styleEls = new Map();\nfunction injectStyles(styleText) {\n    styleTexts.push(styleText);\n    styleEls.forEach((styleEl) => {\n        appendStylesTo(styleEl, styleText);\n    });\n}\nfunction ensureElHasStyles(el) {\n    if (el.isConnected && // sometimes true if SSR system simulates DOM\n        el.getRootNode // sometimes undefined if SSR system simulates DOM\n    ) {\n        registerStylesRoot(el.getRootNode());\n    }\n}\nfunction registerStylesRoot(rootNode) {\n    let styleEl = styleEls.get(rootNode);\n    if (!styleEl || !styleEl.isConnected) {\n        styleEl = rootNode.querySelector('style[data-fullcalendar]');\n        if (!styleEl) {\n            styleEl = document.createElement('style');\n            styleEl.setAttribute('data-fullcalendar', '');\n            const nonce = getNonceValue();\n            if (nonce) {\n                styleEl.nonce = nonce;\n            }\n            const parentEl = rootNode === document ? document.head : rootNode;\n            const insertBefore = rootNode === document\n                ? parentEl.querySelector('script,link[rel=stylesheet],link[as=style],style')\n                : parentEl.firstChild;\n            parentEl.insertBefore(styleEl, insertBefore);\n        }\n        styleEls.set(rootNode, styleEl);\n        hydrateStylesRoot(styleEl);\n    }\n}\nfunction hydrateStylesRoot(styleEl) {\n    for (const styleText of styleTexts) {\n        appendStylesTo(styleEl, styleText);\n    }\n}\nfunction appendStylesTo(styleEl, styleText) {\n    const { sheet } = styleEl;\n    const ruleCnt = sheet.cssRules.length;\n    styleText.split('}').forEach((styleStr, i) => {\n        styleStr = styleStr.trim();\n        if (styleStr) {\n            sheet.insertRule(styleStr + '}', ruleCnt + i);\n        }\n    });\n}\n// nonce\n// -------------------------------------------------------------------------------------------------\nlet queriedNonceValue;\nfunction getNonceValue() {\n    if (queriedNonceValue === undefined) {\n        queriedNonceValue = queryNonceValue();\n    }\n    return queriedNonceValue;\n}\n/*\nTODO: discourage meta tag and instead put nonce attribute on placeholder <style> tag\n*/\nfunction queryNonceValue() {\n    const metaWithNonce = document.querySelector('meta[name=\"csp-nonce\"]');\n    if (metaWithNonce && metaWithNonce.hasAttribute('content')) {\n        return metaWithNonce.getAttribute('content');\n    }\n    const elWithNonce = document.querySelector('script[nonce]');\n    if (elWithNonce) {\n        return elWithNonce.nonce || '';\n    }\n    return '';\n}\n// main\n// -------------------------------------------------------------------------------------------------\nif (typeof document !== 'undefined') {\n    registerStylesRoot(document);\n}\n\nvar css_248z = \":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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\\\") format(\\\"truetype\\\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\\\"\\\\e900\\\"}.fc-icon-chevron-right:before{content:\\\"\\\\e901\\\"}.fc-icon-chevrons-left:before{content:\\\"\\\\e902\\\"}.fc-icon-chevrons-right:before{content:\\\"\\\\e903\\\"}.fc-icon-minus-square:before{content:\\\"\\\\e904\\\"}.fc-icon-plus-square:before{content:\\\"\\\\e905\\\"}.fc-icon-x:before{content:\\\"\\\\e906\\\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\\\"\\\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\\\"\\\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\\\"\\\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}\";\ninjectStyles(css_248z);\n\nclass DelayedRunner {\n    constructor(drainedOption) {\n        this.drainedOption = drainedOption;\n        this.isRunning = false;\n        this.isDirty = false;\n        this.pauseDepths = {};\n        this.timeoutId = 0;\n    }\n    request(delay) {\n        this.isDirty = true;\n        if (!this.isPaused()) {\n            this.clearTimeout();\n            if (delay == null) {\n                this.tryDrain();\n            }\n            else {\n                this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n                this.tryDrain.bind(this), delay);\n            }\n        }\n    }\n    pause(scope = '') {\n        let { pauseDepths } = this;\n        pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n        this.clearTimeout();\n    }\n    resume(scope = '', force) {\n        let { pauseDepths } = this;\n        if (scope in pauseDepths) {\n            if (force) {\n                delete pauseDepths[scope];\n            }\n            else {\n                pauseDepths[scope] -= 1;\n                let depth = pauseDepths[scope];\n                if (depth <= 0) {\n                    delete pauseDepths[scope];\n                }\n            }\n            this.tryDrain();\n        }\n    }\n    isPaused() {\n        return Object.keys(this.pauseDepths).length;\n    }\n    tryDrain() {\n        if (!this.isRunning && !this.isPaused()) {\n            this.isRunning = true;\n            while (this.isDirty) {\n                this.isDirty = false;\n                this.drained(); // might set isDirty to true again\n            }\n            this.isRunning = false;\n        }\n    }\n    clear() {\n        this.clearTimeout();\n        this.isDirty = false;\n        this.pauseDepths = {};\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n            this.timeoutId = 0;\n        }\n    }\n    drained() {\n        if (this.drainedOption) {\n            this.drainedOption();\n        }\n    }\n}\n\nfunction removeElement(el) {\n    if (el.parentNode) {\n        el.parentNode.removeChild(el);\n    }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n    if (el.closest) {\n        return el.closest(selector);\n        // really bad fallback for IE\n        // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n    }\n    if (!document.documentElement.contains(el)) {\n        return null;\n    }\n    do {\n        if (elementMatches(el, selector)) {\n            return el;\n        }\n        el = (el.parentElement || el.parentNode);\n    } while (el !== null && el.nodeType === 1);\n    return null;\n}\nfunction elementMatches(el, selector) {\n    let method = el.matches || el.matchesSelector || el.msMatchesSelector;\n    return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n    let containers = container instanceof HTMLElement ? [container] : container;\n    let allMatches = [];\n    for (let i = 0; i < containers.length; i += 1) {\n        let matches = containers[i].querySelectorAll(selector);\n        for (let j = 0; j < matches.length; j += 1) {\n            allMatches.push(matches[j]);\n        }\n    }\n    return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n    let parents = parent instanceof HTMLElement ? [parent] : parent;\n    let allMatches = [];\n    for (let i = 0; i < parents.length; i += 1) {\n        let childNodes = parents[i].children; // only ever elements\n        for (let j = 0; j < childNodes.length; j += 1) {\n            let childNode = childNodes[j];\n            if (!selector || elementMatches(childNode, selector)) {\n                allMatches.push(childNode);\n            }\n        }\n    }\n    return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n    for (let propName in props) {\n        applyStyleProp(el, propName, props[propName]);\n    }\n}\nfunction applyStyleProp(el, name, val) {\n    if (val == null) {\n        el.style[name] = '';\n    }\n    else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n        el.style[name] = `${val}px`;\n    }\n    else {\n        el.style[name] = val;\n    }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n    var _a, _b;\n    return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Unique ID for DOM attribute\nlet guid$1 = 0;\nfunction getUniqueDomId() {\n    guid$1 += 1;\n    return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n    ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n    return (ev) => {\n        let matchedChild = elementClosest(ev.target, selector);\n        if (matchedChild) {\n            handler.call(matchedChild, ev, matchedChild);\n        }\n    };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n    let attachedHandler = buildDelegationHandler(selector, handler);\n    container.addEventListener(eventType, attachedHandler);\n    return () => {\n        container.removeEventListener(eventType, attachedHandler);\n    };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n    let currentMatchedChild;\n    return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n        if (matchedChild !== currentMatchedChild) {\n            currentMatchedChild = matchedChild;\n            onMouseEnter(mouseOverEv, matchedChild);\n            let realOnMouseLeave = (mouseLeaveEv) => {\n                currentMatchedChild = null;\n                onMouseLeave(mouseLeaveEv, matchedChild);\n                matchedChild.removeEventListener('mouseleave', realOnMouseLeave);\n            };\n            // listen to the next mouseleave, and then unattach\n            matchedChild.addEventListener('mouseleave', realOnMouseLeave);\n        }\n    });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nconst transitionEventNames = [\n    'webkitTransitionEnd',\n    'otransitionend',\n    'oTransitionEnd',\n    'msTransitionEnd',\n    'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n    let realCallback = (ev) => {\n        callback(ev);\n        transitionEventNames.forEach((eventName) => {\n            el.removeEventListener(eventName, realCallback);\n        });\n    };\n    transitionEventNames.forEach((eventName) => {\n        el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n    });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n    return Object.assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n    return {\n        tabIndex: 0,\n        onKeyDown(ev) {\n            if (ev.key === 'Enter' || ev.key === ' ') {\n                handler(ev);\n                ev.preventDefault(); // if space, don't scroll down page\n            }\n        },\n    };\n}\n\nlet guidNumber = 0;\nfunction guid() {\n    guidNumber += 1;\n    return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n    document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n    document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n    el.style.userSelect = 'none';\n    el.style.webkitUserSelect = 'none';\n    el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n    el.style.userSelect = '';\n    el.style.webkitUserSelect = '';\n    el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n    el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n    el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n    let specs = [];\n    let tokens = [];\n    let i;\n    let token;\n    if (typeof input === 'string') {\n        tokens = input.split(/\\s*,\\s*/);\n    }\n    else if (typeof input === 'function') {\n        tokens = [input];\n    }\n    else if (Array.isArray(input)) {\n        tokens = input;\n    }\n    for (i = 0; i < tokens.length; i += 1) {\n        token = tokens[i];\n        if (typeof token === 'string') {\n            specs.push(token.charAt(0) === '-' ?\n                { field: token.substring(1), order: -1 } :\n                { field: token, order: 1 });\n        }\n        else if (typeof token === 'function') {\n            specs.push({ func: token });\n        }\n    }\n    return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n    let i;\n    let cmp;\n    for (i = 0; i < fieldSpecs.length; i += 1) {\n        cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n        if (cmp) {\n            return cmp;\n        }\n    }\n    return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n    if (fieldSpec.func) {\n        return fieldSpec.func(obj0, obj1);\n    }\n    return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n        * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n    if (!a && !b) {\n        return 0;\n    }\n    if (b == null) {\n        return -1;\n    }\n    if (a == null) {\n        return 1;\n    }\n    if (typeof a === 'string' || typeof b === 'string') {\n        return String(a).localeCompare(String(b));\n    }\n    return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n    let s = String(val);\n    return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n    if (typeof formatter === 'function') {\n        return formatter(...args);\n    }\n    if (typeof formatter === 'string') { // non-blank string\n        return args.reduce((str, arg, index) => (str.replace('$' + index, arg || '')), formatter);\n    }\n    return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n    return a - b;\n}\nfunction isInt(n) {\n    return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n    let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n    let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n    if (!allWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n    }\n    if (!contentWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-cushion className');\n    }\n    return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n        contentWidthEl.getBoundingClientRect().width;\n}\n\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n    if (typeof input === 'string') {\n        return parseString(input);\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseObject(input);\n    }\n    if (typeof input === 'number') {\n        return parseObject({ [unit || 'milliseconds']: input });\n    }\n    return null;\n}\nfunction parseString(s) {\n    let m = PARSE_RE.exec(s);\n    if (m) {\n        let sign = m[1] ? -1 : 1;\n        return {\n            years: 0,\n            months: 0,\n            days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n            milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n                (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n                (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n                (m[6] ? parseInt(m[6], 10) : 0) // ms\n            ),\n        };\n    }\n    return null;\n}\nfunction parseObject(obj) {\n    let duration = {\n        years: obj.years || obj.year || 0,\n        months: obj.months || obj.month || 0,\n        days: obj.days || obj.day || 0,\n        milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n            (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n            (obj.seconds || obj.second || 0) * 1000 + // seconds\n            (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n    };\n    let weeks = obj.weeks || obj.week;\n    if (weeks) {\n        duration.days += weeks * 7;\n        duration.specifiedWeeks = true;\n    }\n    return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n    return d0.years === d1.years &&\n        d0.months === d1.months &&\n        d0.days === d1.days &&\n        d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n    if (!dur.years && !dur.months && !dur.milliseconds) {\n        return dur.days;\n    }\n    return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n    return {\n        years: d0.years + d1.years,\n        months: d0.months + d1.months,\n        days: d0.days + d1.days,\n        milliseconds: d0.milliseconds + d1.milliseconds,\n    };\n}\nfunction subtractDurations(d1, d0) {\n    return {\n        years: d1.years - d0.years,\n        months: d1.months - d0.months,\n        days: d1.days - d0.days,\n        milliseconds: d1.milliseconds - d0.milliseconds,\n    };\n}\nfunction multiplyDuration(d, n) {\n    return {\n        years: d.years * n,\n        months: d.months * n,\n        days: d.days * n,\n        milliseconds: d.milliseconds * n,\n    };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n    return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n    return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n    return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n    return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n    return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n    return dur.years * (365 * 864e5) +\n        dur.months * (30 * 864e5) +\n        dur.days * 864e5 +\n        dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n    let res = null;\n    for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n        let unit = INTERNAL_UNITS[i];\n        if (denominator[unit]) {\n            let localRes = numerator[unit] / denominator[unit];\n            if (!isInt(localRes) || (res !== null && res !== localRes)) {\n                return null;\n            }\n            res = localRes;\n        }\n        else if (numerator[unit]) {\n            // needs to divide by something but can't!\n            return null;\n        }\n    }\n    return res;\n}\nfunction greatestDurationDenominator(dur) {\n    let ms = dur.milliseconds;\n    if (ms) {\n        if (ms % 1000 !== 0) {\n            return { unit: 'millisecond', value: ms };\n        }\n        if (ms % (1000 * 60) !== 0) {\n            return { unit: 'second', value: ms / 1000 };\n        }\n        if (ms % (1000 * 60 * 60) !== 0) {\n            return { unit: 'minute', value: ms / (1000 * 60) };\n        }\n        if (ms) {\n            return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n        }\n    }\n    if (dur.days) {\n        if (dur.specifiedWeeks && dur.days % 7 === 0) {\n            return { unit: 'week', value: dur.days / 7 };\n        }\n        return { unit: 'day', value: dur.days };\n    }\n    if (dur.months) {\n        return { unit: 'month', value: dur.months };\n    }\n    if (dur.years) {\n        return { unit: 'year', value: dur.years };\n    }\n    return { unit: 'millisecond', value: 0 };\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n    let removeCnt = 0;\n    let i = 0;\n    while (i < array.length) {\n        if (array[i] === exactVal) {\n            array.splice(i, 1);\n            removeCnt += 1;\n        }\n        else {\n            i += 1;\n        }\n    }\n    return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n    if (a0 === a1) {\n        return true;\n    }\n    let len = a0.length;\n    let i;\n    if (len !== a1.length) { // not array? or not same length?\n        return false;\n    }\n    for (i = 0; i < len; i += 1) {\n        if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nconst DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n * 7;\n    return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n;\n    return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n    let a = dateToUtcArray(m);\n    a[6] += n;\n    return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n    return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n    let m0day = startOfDay(m0);\n    let m1day = startOfDay(m1);\n    return {\n        years: 0,\n        months: 0,\n        days: Math.round(diffDays(m0day, m1day)),\n        milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n    };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n    let d = diffWholeDays(m0, m1);\n    if (d !== null && d % 7 === 0) {\n        return d / 7;\n    }\n    return null;\n}\nfunction diffWholeDays(m0, m1) {\n    if (timeAsMs(m0) === timeAsMs(m1)) {\n        return Math.round(diffDays(m0, m1));\n    }\n    return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n    ]);\n}\nfunction startOfHour(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n    ]);\n}\nfunction startOfMinute(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n    ]);\n}\nfunction startOfSecond(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n        m.getUTCSeconds(),\n    ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n    let y = marker.getUTCFullYear();\n    let w = weekOfGivenYear(marker, y, dow, doy);\n    if (w < 1) {\n        return weekOfGivenYear(marker, y - 1, dow, doy);\n    }\n    let nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n    if (nextW >= 1) {\n        return Math.min(w, nextW);\n    }\n    return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n    let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n    let dayStart = startOfDay(marker);\n    let days = Math.round(diffDays(firstWeekStart, dayStart));\n    return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n    // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    let fwd = 7 + dow - doy;\n    // first-week day local weekday -- which local weekday is fwd\n    let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n    return [\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds(),\n    ];\n}\nfunction arrayToLocalDate(a) {\n    return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n    a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n    return [\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate(),\n        date.getUTCHours(),\n        date.getUTCMinutes(),\n        date.getUTCSeconds(),\n        date.getUTCMilliseconds(),\n    ];\n}\nfunction arrayToUtcDate(a) {\n    // according to web standards (and Safari), a month index is required.\n    // massage if only given a year.\n    if (a.length === 1) {\n        a = a.concat([0]);\n    }\n    return new Date(Date.UTC(...a));\n}\n// Other Utils\nfunction isValidDate(m) {\n    return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n    return m.getUTCHours() * 1000 * 60 * 60 +\n        m.getUTCMinutes() * 1000 * 60 +\n        m.getUTCSeconds() * 1000 +\n        m.getUTCMilliseconds();\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime = false) {\n    let s = marker.toISOString();\n    s = s.replace('.000', '');\n    if (stripZeroTime) {\n        s = s.replace('T00:00:00Z', '');\n    }\n    if (s.length > 10) { // time part wasn't stripped, can add timezone info\n        if (timeZoneOffset == null) {\n            s = s.replace('Z', '');\n        }\n        else if (timeZoneOffset !== 0) {\n            s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n        }\n        // otherwise, its UTC-0 and we want to keep the Z\n    }\n    return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n    return marker.toISOString().replace(/T.*$/, '');\n}\nfunction formatIsoMonthStr(marker) {\n    return marker.toISOString().match(/^\\d{4}-\\d{2}/)[0];\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n    return padStart(marker.getUTCHours(), 2) + ':' +\n        padStart(marker.getUTCMinutes(), 2) + ':' +\n        padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso = false) {\n    let sign = minutes < 0 ? '-' : '+';\n    let abs = Math.abs(minutes);\n    let hours = Math.floor(abs / 60);\n    let mins = Math.round(abs % 60);\n    if (doIso) {\n        return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`;\n    }\n    return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n    let currentArgs;\n    let currentRes;\n    return function (...newArgs) {\n        if (!currentArgs) {\n            currentRes = workerFunc.apply(this, newArgs);\n        }\n        else if (!isArraysEqual(currentArgs, newArgs)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.apply(this, newArgs);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArgs = newArgs;\n        return currentRes;\n    };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n    let currentArg;\n    let currentRes;\n    return (newArg) => {\n        if (!currentArg) {\n            currentRes = workerFunc.call(this, newArg);\n        }\n        else if (!isPropsEqual(currentArg, newArg)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.call(this, newArg);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArg = newArg;\n        return currentRes;\n    };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n    let currentArgSets = [];\n    let currentResults = [];\n    return (newArgSets) => {\n        let currentLen = currentArgSets.length;\n        let newLen = newArgSets.length;\n        let i = 0;\n        for (; i < currentLen; i += 1) {\n            if (!newArgSets[i]) { // one of the old sets no longer exists\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n            }\n            else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n                let res = workerFunc.apply(this, newArgSets[i]);\n                if (!resEquality || !resEquality(res, currentResults[i])) {\n                    currentResults[i] = res;\n                }\n            }\n        }\n        for (; i < newLen; i += 1) {\n            currentResults[i] = workerFunc.apply(this, newArgSets[i]);\n        }\n        currentArgSets = newArgSets;\n        currentResults.splice(newLen); // remove excess\n        return currentResults;\n    };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n    let currentArgHash = {};\n    let currentResHash = {};\n    return (newArgHash) => {\n        let newResHash = {};\n        for (let key in newArgHash) {\n            if (!currentResHash[key]) {\n                newResHash[key] = workerFunc.apply(this, newArgHash[key]);\n            }\n            else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResHash[key]);\n                }\n                let res = workerFunc.apply(this, newArgHash[key]);\n                newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n                    ? currentResHash[key]\n                    : res;\n            }\n            else {\n                newResHash[key] = currentResHash[key];\n            }\n        }\n        currentArgHash = newArgHash;\n        currentResHash = newResHash;\n        return newResHash;\n    };\n}\n\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n    week: 3,\n    separator: 9,\n    omitZeroMinute: 9,\n    meridiem: 9,\n    omitCommas: 9,\n};\nconst STANDARD_DATE_PROP_SEVERITIES = {\n    timeZoneName: 7,\n    era: 6,\n    year: 5,\n    month: 4,\n    day: 2,\n    weekday: 2,\n    hour: 1,\n    minute: 1,\n    second: 1,\n};\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nconst COMMA_RE = /,/g; // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g;\nconst LTR_RE = /\\u200e/g; // control character\nconst UTC_RE = /UTC|GMT/;\nclass NativeFormatter {\n    constructor(formatSettings) {\n        let standardDateProps = {};\n        let extendedSettings = {};\n        let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)\n        for (let name in formatSettings) {\n            if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n                extendedSettings[name] = formatSettings[name];\n                const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];\n                if (severity < 9) {\n                    smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n            else {\n                standardDateProps[name] = formatSettings[name];\n                if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n                    smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n        }\n        this.standardDateProps = standardDateProps;\n        this.extendedSettings = extendedSettings;\n        this.smallestUnitNum = smallestUnitNum;\n        this.buildFormattingFunc = memoize(buildFormattingFunc);\n    }\n    format(date, context) {\n        return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        let { standardDateProps, extendedSettings } = this;\n        let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n        if (!diffSeverity) {\n            return this.format(start, context);\n        }\n        let biggestUnitForPartial = diffSeverity;\n        if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n            (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n            (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n            (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n            biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n        }\n        let full0 = this.format(start, context);\n        let full1 = this.format(end, context);\n        if (full0 === full1) {\n            return full0;\n        }\n        let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n        let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n        let partial0 = partialFormattingFunc(start);\n        let partial1 = partialFormattingFunc(end);\n        let insertion = findCommonInsertion(full0, partial0, full1, partial1);\n        let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n        if (insertion) {\n            return insertion.before + partial0 + separator + partial1 + insertion.after;\n        }\n        return full0 + separator + full1;\n    }\n    getSmallestUnit() {\n        switch (this.smallestUnitNum) {\n            case 7:\n            case 6:\n            case 5:\n                return 'year';\n            case 4:\n                return 'month';\n            case 3:\n                return 'week';\n            case 2:\n                return 'day';\n            default:\n                return 'time'; // really?\n        }\n    }\n}\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n    let standardDatePropCnt = Object.keys(standardDateProps).length;\n    if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n        return (date) => (formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (standardDatePropCnt === 0 && extendedSettings.week) {\n        return (date) => (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week));\n    }\n    return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n    standardDateProps = Object.assign({}, standardDateProps); // copy\n    extendedSettings = Object.assign({}, extendedSettings); // copy\n    sanitizeSettings(standardDateProps, extendedSettings);\n    standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n    let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n    let zeroFormat; // needed?\n    if (extendedSettings.omitZeroMinute) {\n        let zeroProps = Object.assign({}, standardDateProps);\n        delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n        zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n    }\n    return (date) => {\n        let { marker } = date;\n        let format;\n        if (zeroFormat && !marker.getUTCMinutes()) {\n            format = zeroFormat;\n        }\n        else {\n            format = normalFormat;\n        }\n        let s = format.format(marker);\n        return postProcess(s, date, standardDateProps, extendedSettings, context);\n    };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n    // deal with a browser inconsistency where formatting the timezone\n    // requires that the hour/minute be present.\n    if (standardDateProps.timeZoneName) {\n        if (!standardDateProps.hour) {\n            standardDateProps.hour = '2-digit';\n        }\n        if (!standardDateProps.minute) {\n            standardDateProps.minute = '2-digit';\n        }\n    }\n    // only support short timezone names\n    if (standardDateProps.timeZoneName === 'long') {\n        standardDateProps.timeZoneName = 'short';\n    }\n    // if requesting to display seconds, MUST display minutes\n    if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n        delete extendedSettings.omitZeroMinute;\n    }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n    s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n    if (standardDateProps.timeZoneName === 'short') {\n        s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n            'UTC' : // important to normalize for IE, which does \"GMT\"\n            formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (extendedSettings.omitCommas) {\n        s = s.replace(COMMA_RE, '').trim();\n    }\n    if (extendedSettings.omitZeroMinute) {\n        s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n    }\n    // ^ do anything that might create adjacent spaces before this point,\n    // because MERIDIEM_RE likes to eat up loading spaces\n    if (extendedSettings.meridiem === false) {\n        s = s.replace(MERIDIEM_RE, '').trim();\n    }\n    else if (extendedSettings.meridiem === 'narrow') { // a/p\n        s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase());\n    }\n    else if (extendedSettings.meridiem === 'short') { // am/pm\n        s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`);\n    }\n    else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n        s = s.replace(MERIDIEM_RE, (m0) => m0.toLocaleLowerCase());\n    }\n    s = s.replace(MULTI_SPACE_RE, ' ');\n    s = s.trim();\n    return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n    let replaced = false;\n    s = s.replace(UTC_RE, () => {\n        replaced = true;\n        return tzoStr;\n    });\n    // IE11 doesn't include UTC/GMT in the original string, so append to end\n    if (!replaced) {\n        s += ` ${tzoStr}`;\n    }\n    return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n    let parts = [];\n    if (display === 'long') {\n        parts.push(weekTextLong);\n    }\n    else if (display === 'short' || display === 'narrow') {\n        parts.push(weekText);\n    }\n    if (display === 'long' || display === 'short') {\n        parts.push(' ');\n    }\n    parts.push(locale.simpleNumberFormat.format(num));\n    if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n        parts.reverse();\n    }\n    return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n    if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n        return 5;\n    }\n    if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n        return 4;\n    }\n    if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n        return 2;\n    }\n    if (timeAsMs(d0) !== timeAsMs(d1)) {\n        return 1;\n    }\n    return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n    let partialOptions = {};\n    for (let name in options) {\n        if (!(name in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n            STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit) {\n            partialOptions[name] = options[name];\n        }\n    }\n    return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n    let i0 = 0;\n    while (i0 < full0.length) {\n        let found0 = full0.indexOf(partial0, i0);\n        if (found0 === -1) {\n            break;\n        }\n        let before0 = full0.substr(0, found0);\n        i0 = found0 + partial0.length;\n        let after0 = full0.substr(i0);\n        let i1 = 0;\n        while (i1 < full1.length) {\n            let found1 = full1.indexOf(partial1, i1);\n            if (found1 === -1) {\n                break;\n            }\n            let before1 = full1.substr(0, found1);\n            i1 = found1 + partial1.length;\n            let after1 = full1.substr(i1);\n            if (before0 === before1 && after0 === after1) {\n                return {\n                    before: before0,\n                    after: after0,\n                };\n            }\n        }\n    }\n    return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n    let a = calendarSystem.markerToArray(dateInfo.marker);\n    return {\n        marker: dateInfo.marker,\n        timeZoneOffset: dateInfo.timeZoneOffset,\n        array: a,\n        year: a[0],\n        month: a[1],\n        day: a[2],\n        hour: a[3],\n        minute: a[4],\n        second: a[5],\n        millisecond: a[6],\n    };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n    let startInfo = expandZonedMarker(start, context.calendarSystem);\n    let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n    return {\n        date: startInfo,\n        start: startInfo,\n        end: endInfo,\n        timeZone: context.timeZone,\n        localeCodes: context.locale.codes,\n        defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n    };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nclass CmdFormatter {\n    constructor(cmdStr) {\n        this.cmdStr = cmdStr;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nclass FuncFormatter {\n    constructor(func) {\n        this.func = func;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nfunction createFormatter(input) {\n    if (typeof input === 'object' && input) { // non-null object\n        return new NativeFormatter(input);\n    }\n    if (typeof input === 'string') {\n        return new CmdFormatter(input);\n    }\n    if (typeof input === 'function') {\n        return new FuncFormatter(input);\n    }\n    return null;\n}\n\n// base options\n// ------------\nconst BASE_OPTION_REFINERS = {\n    navLinkDayClick: identity,\n    navLinkWeekClick: identity,\n    duration: createDuration,\n    bootstrapFontAwesome: identity,\n    buttonIcons: identity,\n    customButtons: identity,\n    defaultAllDayEventDuration: createDuration,\n    defaultTimedEventDuration: createDuration,\n    nextDayThreshold: createDuration,\n    scrollTime: createDuration,\n    scrollTimeReset: Boolean,\n    slotMinTime: createDuration,\n    slotMaxTime: createDuration,\n    dayPopoverFormat: createFormatter,\n    slotDuration: createDuration,\n    snapDuration: createDuration,\n    headerToolbar: identity,\n    footerToolbar: identity,\n    defaultRangeSeparator: String,\n    titleRangeSeparator: String,\n    forceEventDuration: Boolean,\n    dayHeaders: Boolean,\n    dayHeaderFormat: createFormatter,\n    dayHeaderClassNames: identity,\n    dayHeaderContent: identity,\n    dayHeaderDidMount: identity,\n    dayHeaderWillUnmount: identity,\n    dayCellClassNames: identity,\n    dayCellContent: identity,\n    dayCellDidMount: identity,\n    dayCellWillUnmount: identity,\n    initialView: String,\n    aspectRatio: Number,\n    weekends: Boolean,\n    weekNumberCalculation: identity,\n    weekNumbers: Boolean,\n    weekNumberClassNames: identity,\n    weekNumberContent: identity,\n    weekNumberDidMount: identity,\n    weekNumberWillUnmount: identity,\n    editable: Boolean,\n    viewClassNames: identity,\n    viewDidMount: identity,\n    viewWillUnmount: identity,\n    nowIndicator: Boolean,\n    nowIndicatorSnap: identity,\n    nowIndicatorClassNames: identity,\n    nowIndicatorContent: identity,\n    nowIndicatorDidMount: identity,\n    nowIndicatorWillUnmount: identity,\n    showNonCurrentDates: Boolean,\n    lazyFetching: Boolean,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n    timeZone: String,\n    locales: identity,\n    locale: identity,\n    themeSystem: String,\n    dragRevertDuration: Number,\n    dragScroll: Boolean,\n    allDayMaintainDuration: Boolean,\n    unselectAuto: Boolean,\n    dropAccept: identity,\n    eventOrder: parseFieldSpecs,\n    eventOrderStrict: Boolean,\n    handleWindowResize: Boolean,\n    windowResizeDelay: Number,\n    longPressDelay: Number,\n    eventDragMinDistance: Number,\n    expandRows: Boolean,\n    height: identity,\n    contentHeight: identity,\n    direction: String,\n    weekNumberFormat: createFormatter,\n    eventResizableFromStart: Boolean,\n    displayEventTime: Boolean,\n    displayEventEnd: Boolean,\n    weekText: String,\n    weekTextLong: String,\n    progressiveEventRendering: Boolean,\n    businessHours: identity,\n    initialDate: identity,\n    now: identity,\n    eventDataTransform: identity,\n    stickyHeaderDates: identity,\n    stickyFooterScrollbar: identity,\n    viewHeight: identity,\n    defaultAllDay: Boolean,\n    eventSourceFailure: identity,\n    eventSourceSuccess: identity,\n    eventDisplay: String,\n    eventStartEditable: Boolean,\n    eventDurationEditable: Boolean,\n    eventOverlap: identity,\n    eventConstraint: identity,\n    eventAllow: identity,\n    eventBackgroundColor: String,\n    eventBorderColor: String,\n    eventTextColor: String,\n    eventColor: String,\n    eventClassNames: identity,\n    eventContent: identity,\n    eventDidMount: identity,\n    eventWillUnmount: identity,\n    selectConstraint: identity,\n    selectOverlap: identity,\n    selectAllow: identity,\n    droppable: Boolean,\n    unselectCancel: String,\n    slotLabelFormat: identity,\n    slotLaneClassNames: identity,\n    slotLaneContent: identity,\n    slotLaneDidMount: identity,\n    slotLaneWillUnmount: identity,\n    slotLabelClassNames: identity,\n    slotLabelContent: identity,\n    slotLabelDidMount: identity,\n    slotLabelWillUnmount: identity,\n    dayMaxEvents: identity,\n    dayMaxEventRows: identity,\n    dayMinWidth: Number,\n    slotLabelInterval: createDuration,\n    allDayText: String,\n    allDayClassNames: identity,\n    allDayContent: identity,\n    allDayDidMount: identity,\n    allDayWillUnmount: identity,\n    slotMinWidth: Number,\n    navLinks: Boolean,\n    eventTimeFormat: createFormatter,\n    rerenderDelay: Number,\n    moreLinkText: identity,\n    moreLinkHint: identity,\n    selectMinDistance: Number,\n    selectable: Boolean,\n    selectLongPressDelay: Number,\n    eventLongPressDelay: Number,\n    selectMirror: Boolean,\n    eventMaxStack: Number,\n    eventMinHeight: Number,\n    eventMinWidth: Number,\n    eventShortHeight: Number,\n    slotEventOverlap: Boolean,\n    plugins: identity,\n    firstDay: Number,\n    dayCount: Number,\n    dateAlignment: String,\n    dateIncrement: createDuration,\n    hiddenDays: identity,\n    fixedWeekCount: Boolean,\n    validRange: identity,\n    visibleRange: identity,\n    titleFormat: identity,\n    eventInteractive: Boolean,\n    // only used by list-view, but languages define the value, so we need it in base options\n    noEventsText: String,\n    viewHint: identity,\n    navLinkHint: identity,\n    closeHint: String,\n    timeHint: String,\n    eventHint: String,\n    moreLinkClick: identity,\n    moreLinkClassNames: identity,\n    moreLinkContent: identity,\n    moreLinkDidMount: identity,\n    moreLinkWillUnmount: identity,\n    monthStartFormat: createFormatter,\n    // for connectors\n    // (can't be part of plugin system b/c must be provided at runtime)\n    handleCustomRendering: identity,\n    customRenderingMetaMap: identity,\n    customRenderingReplaces: Boolean,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nconst BASE_OPTION_DEFAULTS = {\n    eventDisplay: 'auto',\n    defaultRangeSeparator: ' - ',\n    titleRangeSeparator: ' \\u2013 ',\n    defaultTimedEventDuration: '01:00:00',\n    defaultAllDayEventDuration: { day: 1 },\n    forceEventDuration: false,\n    nextDayThreshold: '00:00:00',\n    dayHeaders: true,\n    initialView: '',\n    aspectRatio: 1.35,\n    headerToolbar: {\n        start: 'title',\n        center: '',\n        end: 'today prev,next',\n    },\n    weekends: true,\n    weekNumbers: false,\n    weekNumberCalculation: 'local',\n    editable: false,\n    nowIndicator: false,\n    scrollTime: '06:00:00',\n    scrollTimeReset: true,\n    slotMinTime: '00:00:00',\n    slotMaxTime: '24:00:00',\n    showNonCurrentDates: true,\n    lazyFetching: true,\n    startParam: 'start',\n    endParam: 'end',\n    timeZoneParam: 'timeZone',\n    timeZone: 'local',\n    locales: [],\n    locale: '',\n    themeSystem: 'standard',\n    dragRevertDuration: 500,\n    dragScroll: true,\n    allDayMaintainDuration: false,\n    unselectAuto: true,\n    dropAccept: '*',\n    eventOrder: 'start,-duration,allDay,title',\n    dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n    handleWindowResize: true,\n    windowResizeDelay: 100,\n    longPressDelay: 1000,\n    eventDragMinDistance: 5,\n    expandRows: false,\n    navLinks: false,\n    selectable: false,\n    eventMinHeight: 15,\n    eventMinWidth: 30,\n    eventShortHeight: 30,\n    monthStartFormat: { month: 'long', day: 'numeric' },\n    nowIndicatorSnap: 'auto',\n};\n// calendar listeners\n// ------------------\nconst CALENDAR_LISTENER_REFINERS = {\n    datesSet: identity,\n    eventsSet: identity,\n    eventAdd: identity,\n    eventChange: identity,\n    eventRemove: identity,\n    windowResize: identity,\n    eventClick: identity,\n    eventMouseEnter: identity,\n    eventMouseLeave: identity,\n    select: identity,\n    unselect: identity,\n    loading: identity,\n    // internal\n    _unmount: identity,\n    _beforeprint: identity,\n    _afterprint: identity,\n    _noEventDrop: identity,\n    _noEventResize: identity,\n    _resize: identity,\n    _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nconst CALENDAR_OPTION_REFINERS = {\n    buttonText: identity,\n    buttonHints: identity,\n    views: identity,\n    plugins: identity,\n    initialEvents: identity,\n    events: identity,\n    eventSources: identity,\n};\nconst COMPLEX_OPTION_COMPARATORS = {\n    headerToolbar: isMaybeObjectsEqual,\n    footerToolbar: isMaybeObjectsEqual,\n    buttonText: isMaybeObjectsEqual,\n    buttonHints: isMaybeObjectsEqual,\n    buttonIcons: isMaybeObjectsEqual,\n    dateIncrement: isMaybeObjectsEqual,\n    plugins: isMaybeArraysEqual,\n    events: isMaybeArraysEqual,\n    eventSources: isMaybeArraysEqual,\n    ['resources']: isMaybeArraysEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n    if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n        return isPropsEqual(a, b);\n    }\n    return a === b;\n}\nfunction isMaybeArraysEqual(a, b) {\n    if (Array.isArray(a) && Array.isArray(b)) {\n        return isArraysEqual(a, b);\n    }\n    return a === b;\n}\n// view-specific options\n// ---------------------\nconst VIEW_OPTION_REFINERS = {\n    type: String,\n    component: identity,\n    buttonText: String,\n    buttonTextKey: String,\n    dateProfileGeneratorClass: identity,\n    usesMinMaxTime: Boolean,\n    classNames: identity,\n    content: identity,\n    didMount: identity,\n    willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n    return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n    let refined = {};\n    let extra = {};\n    for (let propName in refiners) {\n        if (propName in input) {\n            refined[propName] = refiners[propName](input[propName]);\n        }\n    }\n    for (let propName in input) {\n        if (!(propName in refiners)) {\n            extra[propName] = input[propName];\n        }\n    }\n    return { refined, extra };\n}\nfunction identity(raw) {\n    return raw;\n}\n\nconst { hasOwnProperty } = Object.prototype;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n    let dest = {};\n    if (complexPropsMap) {\n        for (let name in complexPropsMap) {\n            if (complexPropsMap[name] === isMaybeObjectsEqual) { // implies that it's object-mergeable\n                let complexObjs = [];\n                // collect the trailing object values, stopping when a non-object is discovered\n                for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n                    let val = propObjs[i][name];\n                    if (typeof val === 'object' && val) { // non-null object\n                        complexObjs.unshift(val);\n                    }\n                    else if (val !== undefined) {\n                        dest[name] = val; // if there were no objects, this value will be used\n                        break;\n                    }\n                }\n                // if the trailing values were objects, use the merged value\n                if (complexObjs.length) {\n                    dest[name] = mergeProps(complexObjs);\n                }\n            }\n        }\n    }\n    // copy values into the destination, going from last to first\n    for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n        let props = propObjs[i];\n        for (let name in props) {\n            if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n                dest[name] = props[name];\n            }\n        }\n    }\n    return dest;\n}\nfunction filterHash(hash, func) {\n    let filtered = {};\n    for (let key in hash) {\n        if (func(hash[key], key)) {\n            filtered[key] = hash[key];\n        }\n    }\n    return filtered;\n}\nfunction mapHash(hash, func) {\n    let newHash = {};\n    for (let key in hash) {\n        newHash[key] = func(hash[key], key);\n    }\n    return newHash;\n}\nfunction arrayToHash(a) {\n    let hash = {};\n    for (let item of a) {\n        hash[item] = true;\n    }\n    return hash;\n}\n// TODO: reassess browser support\n// https://caniuse.com/?search=object.values\nfunction hashValuesToArray(obj) {\n    let a = [];\n    for (let key in obj) {\n        a.push(obj[key]);\n    }\n    return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n    if (obj0 === obj1) {\n        return true;\n    }\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                return false;\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nconst HANDLER_RE = /^on[A-Z]/;\nfunction isNonHandlerPropsEqual(obj0, obj1) {\n    const keys = getUnequalProps(obj0, obj1);\n    for (let key of keys) {\n        if (!HANDLER_RE.test(key)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n    let keys = [];\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                keys.push(key);\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                keys.push(key);\n            }\n        }\n    }\n    return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs = {}) {\n    if (oldProps === newProps) {\n        return true;\n    }\n    // if (debug) {\n    //   for (let key in newProps) {\n    //     if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {\n    //       // equal\n    //     } else {\n    //       if (debug) {\n    //         console.log('prop difference', key, oldProps[key], newProps[key])\n    //       }\n    //     }\n    //   }\n    //   // check for props that were omitted in the new\n    //   for (let key in oldProps) {\n    //     if (!(key in newProps)) {\n    //       if (debug) {\n    //         console.log('prop absent', key)\n    //       }\n    //     }\n    //   }\n    // }\n    for (let key in newProps) {\n        if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n        else {\n            return false;\n        }\n    }\n    // check for props that were omitted in the new\n    for (let key in oldProps) {\n        if (!(key in newProps)) {\n            return false;\n        }\n    }\n    return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n    if (val0 === val1 || comparator === true) {\n        return true;\n    }\n    if (comparator) {\n        return comparator(val0, val1);\n    }\n    return false;\n}\nfunction collectFromHash(hash, startIndex = 0, endIndex, step = 1) {\n    let res = [];\n    if (endIndex == null) {\n        endIndex = Object.keys(hash).length;\n    }\n    for (let i = startIndex; i < endIndex; i += step) {\n        let val = hash[i];\n        if (val !== undefined) { // will disregard undefined for sparse arrays\n            res.push(val);\n        }\n    }\n    return res;\n}\n\nlet calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n    calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n    return new calendarSystemClassMap[name]();\n}\nclass GregorianCalendarSystem {\n    getMarkerYear(d) {\n        return d.getUTCFullYear();\n    }\n    getMarkerMonth(d) {\n        return d.getUTCMonth();\n    }\n    getMarkerDay(d) {\n        return d.getUTCDate();\n    }\n    arrayToMarker(arr) {\n        return arrayToUtcDate(arr);\n    }\n    markerToArray(marker) {\n        return dateToUtcArray(marker);\n    }\n}\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n    let m = ISO_RE.exec(str);\n    if (m) {\n        let marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(`0.${m[12]}`) * 1000 : 0));\n        if (isValidDate(marker)) {\n            let timeZoneOffset = null;\n            if (m[13]) {\n                timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n                    Number(m[18] || 0));\n            }\n            return {\n                marker,\n                isTimeUnspecified: !m[6],\n                timeZoneOffset,\n            };\n        }\n    }\n    return null;\n}\n\nclass DateEnv {\n    constructor(settings) {\n        let timeZone = this.timeZone = settings.timeZone;\n        let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n        if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n            this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n        }\n        this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n        this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n        this.locale = settings.locale;\n        this.weekDow = settings.locale.week.dow;\n        this.weekDoy = settings.locale.week.doy;\n        if (settings.weekNumberCalculation === 'ISO') {\n            this.weekDow = 1;\n            this.weekDoy = 4;\n        }\n        if (typeof settings.firstDay === 'number') {\n            this.weekDow = settings.firstDay;\n        }\n        if (typeof settings.weekNumberCalculation === 'function') {\n            this.weekNumberFunc = settings.weekNumberCalculation;\n        }\n        this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n        this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n        this.cmdFormatter = settings.cmdFormatter;\n        this.defaultSeparator = settings.defaultSeparator;\n    }\n    // Creating / Parsing\n    createMarker(input) {\n        let meta = this.createMarkerMeta(input);\n        if (meta === null) {\n            return null;\n        }\n        return meta.marker;\n    }\n    createNowMarker() {\n        if (this.canComputeOffset) {\n            return this.timestampToMarker(new Date().valueOf());\n        }\n        // if we can't compute the current date val for a timezone,\n        // better to give the current local date vals than UTC\n        return arrayToUtcDate(dateToLocalArray(new Date()));\n    }\n    createMarkerMeta(input) {\n        if (typeof input === 'string') {\n            return this.parse(input);\n        }\n        let marker = null;\n        if (typeof input === 'number') {\n            marker = this.timestampToMarker(input);\n        }\n        else if (input instanceof Date) {\n            input = input.valueOf();\n            if (!isNaN(input)) {\n                marker = this.timestampToMarker(input);\n            }\n        }\n        else if (Array.isArray(input)) {\n            marker = arrayToUtcDate(input);\n        }\n        if (marker === null || !isValidDate(marker)) {\n            return null;\n        }\n        return { marker, isTimeUnspecified: false, forcedTzo: null };\n    }\n    parse(s) {\n        let parts = parse(s);\n        if (parts === null) {\n            return null;\n        }\n        let { marker } = parts;\n        let forcedTzo = null;\n        if (parts.timeZoneOffset !== null) {\n            if (this.canComputeOffset) {\n                marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n            }\n            else {\n                forcedTzo = parts.timeZoneOffset;\n            }\n        }\n        return { marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo };\n    }\n    // Accessors\n    getYear(marker) {\n        return this.calendarSystem.getMarkerYear(marker);\n    }\n    getMonth(marker) {\n        return this.calendarSystem.getMarkerMonth(marker);\n    }\n    getDay(marker) {\n        return this.calendarSystem.getMarkerDay(marker);\n    }\n    // Adding / Subtracting\n    add(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += dur.years;\n        a[1] += dur.months;\n        a[2] += dur.days;\n        a[6] += dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    subtract(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] -= dur.years;\n        a[1] -= dur.months;\n        a[2] -= dur.days;\n        a[6] -= dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addYears(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addMonths(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[1] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    // Diffing Whole Units\n    diffWholeYears(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n            calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n            return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n        }\n        return null;\n    }\n    diffWholeMonths(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n            return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n                (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n        }\n        return null;\n    }\n    // Range / Duration\n    greatestWholeUnit(m0, m1) {\n        let n = this.diffWholeYears(m0, m1);\n        if (n !== null) {\n            return { unit: 'year', value: n };\n        }\n        n = this.diffWholeMonths(m0, m1);\n        if (n !== null) {\n            return { unit: 'month', value: n };\n        }\n        n = diffWholeWeeks(m0, m1);\n        if (n !== null) {\n            return { unit: 'week', value: n };\n        }\n        n = diffWholeDays(m0, m1);\n        if (n !== null) {\n            return { unit: 'day', value: n };\n        }\n        n = diffHours(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'hour', value: n };\n        }\n        n = diffMinutes(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'minute', value: n };\n        }\n        n = diffSeconds(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'second', value: n };\n        }\n        return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n    }\n    countDurationsBetween(m0, m1, d) {\n        // TODO: can use greatestWholeUnit\n        let diff;\n        if (d.years) {\n            diff = this.diffWholeYears(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughYears(d);\n            }\n        }\n        if (d.months) {\n            diff = this.diffWholeMonths(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughMonths(d);\n            }\n        }\n        if (d.days) {\n            diff = diffWholeDays(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughDays(d);\n            }\n        }\n        return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n    }\n    // Start-Of\n    // these DON'T return zoned-dates. only UTC start-of dates\n    startOf(m, unit) {\n        if (unit === 'year') {\n            return this.startOfYear(m);\n        }\n        if (unit === 'month') {\n            return this.startOfMonth(m);\n        }\n        if (unit === 'week') {\n            return this.startOfWeek(m);\n        }\n        if (unit === 'day') {\n            return startOfDay(m);\n        }\n        if (unit === 'hour') {\n            return startOfHour(m);\n        }\n        if (unit === 'minute') {\n            return startOfMinute(m);\n        }\n        if (unit === 'second') {\n            return startOfSecond(m);\n        }\n        return null;\n    }\n    startOfYear(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n        ]);\n    }\n    startOfMonth(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n        ]);\n    }\n    startOfWeek(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n            m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n        ]);\n    }\n    // Week Number\n    computeWeekNumber(marker) {\n        if (this.weekNumberFunc) {\n            return this.weekNumberFunc(this.toDate(marker));\n        }\n        return weekOfYear(marker, this.weekDow, this.weekDoy);\n    }\n    // TODO: choke on timeZoneName: long\n    format(marker, formatter, dateOptions = {}) {\n        return formatter.format({\n            marker,\n            timeZoneOffset: dateOptions.forcedTzo != null ?\n                dateOptions.forcedTzo :\n                this.offsetForMarker(marker),\n        }, this);\n    }\n    formatRange(start, end, formatter, dateOptions = {}) {\n        if (dateOptions.isEndExclusive) {\n            end = addMs(end, -1);\n        }\n        return formatter.formatRange({\n            marker: start,\n            timeZoneOffset: dateOptions.forcedStartTzo != null ?\n                dateOptions.forcedStartTzo :\n                this.offsetForMarker(start),\n        }, {\n            marker: end,\n            timeZoneOffset: dateOptions.forcedEndTzo != null ?\n                dateOptions.forcedEndTzo :\n                this.offsetForMarker(end),\n        }, this, dateOptions.defaultSeparator);\n    }\n    /*\n    DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n    might as well use buildIsoString or some other util directly\n    */\n    formatIso(marker, extraOptions = {}) {\n        let timeZoneOffset = null;\n        if (!extraOptions.omitTimeZoneOffset) {\n            if (extraOptions.forcedTzo != null) {\n                timeZoneOffset = extraOptions.forcedTzo;\n            }\n            else {\n                timeZoneOffset = this.offsetForMarker(marker);\n            }\n        }\n        return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n    }\n    // TimeZone\n    timestampToMarker(ms) {\n        if (this.timeZone === 'local') {\n            return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n        }\n        if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n            return new Date(ms);\n        }\n        return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n    }\n    offsetForMarker(m) {\n        if (this.timeZone === 'local') {\n            return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n        }\n        if (this.timeZone === 'UTC') {\n            return 0;\n        }\n        if (this.namedTimeZoneImpl) {\n            return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n        }\n        return null;\n    }\n    // Conversion\n    toDate(m, forcedTzo) {\n        if (this.timeZone === 'local') {\n            return arrayToLocalDate(dateToUtcArray(m));\n        }\n        if (this.timeZone === 'UTC') {\n            return new Date(m.valueOf()); // make sure it's a copy\n        }\n        if (!this.namedTimeZoneImpl) {\n            return new Date(m.valueOf() - (forcedTzo || 0));\n        }\n        return new Date(m.valueOf() -\n            this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n    }\n}\n\nclass Theme {\n    constructor(calendarOptions) {\n        if (this.iconOverrideOption) {\n            this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n        }\n    }\n    setIconOverride(iconOverrideHash) {\n        let iconClassesCopy;\n        let buttonName;\n        if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n            iconClassesCopy = Object.assign({}, this.iconClasses);\n            for (buttonName in iconOverrideHash) {\n                iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n            }\n            this.iconClasses = iconClassesCopy;\n        }\n        else if (iconOverrideHash === false) {\n            this.iconClasses = {};\n        }\n    }\n    applyIconOverridePrefix(className) {\n        let prefix = this.iconOverridePrefix;\n        if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n            className = prefix + className;\n        }\n        return className;\n    }\n    getClass(key) {\n        return this.classes[key] || '';\n    }\n    getIconClass(buttonName, isRtl) {\n        let className;\n        if (isRtl && this.rtlIconClasses) {\n            className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n        }\n        else {\n            className = this.iconClasses[buttonName];\n        }\n        if (className) {\n            return `${this.baseIconClass} ${className}`;\n        }\n        return '';\n    }\n    getCustomButtonIconClass(customButtonProps) {\n        let className;\n        if (this.iconOverrideCustomButtonOption) {\n            className = customButtonProps[this.iconOverrideCustomButtonOption];\n            if (className) {\n                return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`;\n            }\n        }\n        return '';\n    }\n}\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\n/*\nNOTE: this can be a public API, especially createElement for hooks.\nSee examples/typescript-scheduler/src/index.ts\n*/\nfunction flushSync(runBeforeFlush) {\n    runBeforeFlush();\n    let oldDebounceRendering = preact.options.debounceRendering; // orig\n    let callbackQ = [];\n    function execCallbackSync(callback) {\n        callbackQ.push(callback);\n    }\n    preact.options.debounceRendering = execCallbackSync;\n    preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n    while (callbackQ.length) {\n        callbackQ.shift()();\n    }\n    preact.options.debounceRendering = oldDebounceRendering;\n}\nclass FakeComponent extends preact.Component {\n    render() { return preact.createElement('div', {}); }\n    componentDidMount() { this.setState({}); }\n}\n// TODO: use preact/compat instead?\nfunction createContext(defaultValue) {\n    let ContextType = preact.createContext(defaultValue);\n    let origProvider = ContextType.Provider;\n    ContextType.Provider = function () {\n        let isNew = !this.getChildContext;\n        let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        if (isNew) {\n            let subs = [];\n            this.shouldComponentUpdate = (_props) => {\n                if (this.props.value !== _props.value) {\n                    subs.forEach((c) => {\n                        c.context = _props.value;\n                        c.forceUpdate();\n                    });\n                }\n            };\n            this.sub = (c) => {\n                subs.push(c);\n                let old = c.componentWillUnmount;\n                c.componentWillUnmount = () => {\n                    subs.splice(subs.indexOf(c), 1);\n                    old && old.call(c);\n                };\n            };\n        }\n        return children;\n    };\n    return ContextType;\n}\n\nclass ScrollResponder {\n    constructor(execFunc, emitter, scrollTime, scrollTimeReset) {\n        this.execFunc = execFunc;\n        this.emitter = emitter;\n        this.scrollTime = scrollTime;\n        this.scrollTimeReset = scrollTimeReset;\n        this.handleScrollRequest = (request) => {\n            this.queuedRequest = Object.assign({}, this.queuedRequest || {}, request);\n            this.drain();\n        };\n        emitter.on('_scrollRequest', this.handleScrollRequest);\n        this.fireInitialScroll();\n    }\n    detach() {\n        this.emitter.off('_scrollRequest', this.handleScrollRequest);\n    }\n    update(isDatesNew) {\n        if (isDatesNew && this.scrollTimeReset) {\n            this.fireInitialScroll(); // will drain\n        }\n        else {\n            this.drain();\n        }\n    }\n    fireInitialScroll() {\n        this.handleScrollRequest({\n            time: this.scrollTime,\n        });\n    }\n    drain() {\n        if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n            this.queuedRequest = null;\n        }\n    }\n}\n\nconst ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n    return {\n        dateEnv,\n        nowManager,\n        options: viewOptions,\n        pluginHooks,\n        emitter,\n        dispatch,\n        getCurrentData,\n        calendarApi,\n        viewSpec,\n        viewApi,\n        dateProfileGenerator,\n        theme,\n        isRtl: viewOptions.direction === 'rtl',\n        addResizeHandler(handler) {\n            emitter.on('_resize', handler);\n        },\n        removeResizeHandler(handler) {\n            emitter.off('_resize', handler);\n        },\n        createScrollResponder(execFunc) {\n            return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n        },\n        registerInteractiveComponent,\n        unregisterInteractiveComponent,\n    };\n}\n\n/* eslint max-classes-per-file: off */\nclass PureComponent extends Component {\n    // debug: boolean\n    shouldComponentUpdate(nextProps, nextState) {\n        const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||\n            !compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);\n        // if (this.debug && shouldUpdate) {\n        //   console.log('shouldUpdate!')\n        // }\n        return shouldUpdate;\n    }\n    // HACK for freakin' React StrictMode\n    safeSetState(newState) {\n        if (!compareObjs(this.state, Object.assign(Object.assign({}, this.state), newState), this.stateEquality)) {\n            this.setState(newState);\n        }\n    }\n}\nPureComponent.addPropsEquality = addPropsEquality;\nPureComponent.addStateEquality = addStateEquality;\nPureComponent.contextType = ViewContextType;\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nclass BaseComponent extends PureComponent {\n}\nBaseComponent.contextType = ViewContextType;\nfunction addPropsEquality(propEquality) {\n    let hash = Object.create(this.prototype.propEquality);\n    Object.assign(hash, propEquality);\n    this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n    let hash = Object.create(this.prototype.stateEquality);\n    Object.assign(hash, stateEquality);\n    this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n    if (typeof ref === 'function') {\n        ref(current);\n    }\n    else if (ref) {\n        // see https://github.com/facebook/react/issues/13029\n        ref.current = current;\n    }\n}\n\nclass ContentInjector extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.id = guid();\n        this.queuedDomNodes = [];\n        this.currentDomNodes = [];\n        this.handleEl = (el) => {\n            const { options } = this.context;\n            const { generatorName } = this.props;\n            if (!options.customRenderingReplaces || !hasCustomRenderingHandler(generatorName, options)) {\n                this.updateElRef(el);\n            }\n        };\n        this.updateElRef = (el) => {\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { customGenerator, defaultGenerator, renderProps } = props;\n        const attrs = buildElAttrs(props, [], this.handleEl);\n        let useDefault = false;\n        let innerContent;\n        let queuedDomNodes = [];\n        let currentGeneratorMeta;\n        if (customGenerator != null) {\n            const customGeneratorRes = typeof customGenerator === 'function' ?\n                customGenerator(renderProps, createElement) :\n                customGenerator;\n            if (customGeneratorRes === true) {\n                useDefault = true;\n            }\n            else {\n                const isObject = customGeneratorRes && typeof customGeneratorRes === 'object'; // non-null\n                if (isObject && ('html' in customGeneratorRes)) {\n                    attrs.dangerouslySetInnerHTML = { __html: customGeneratorRes.html };\n                }\n                else if (isObject && ('domNodes' in customGeneratorRes)) {\n                    queuedDomNodes = Array.prototype.slice.call(customGeneratorRes.domNodes);\n                }\n                else if (isObject\n                    ? isValidElement(customGeneratorRes) // vdom node\n                    : typeof customGeneratorRes !== 'function' // primitive value (like string or number)\n                ) {\n                    // use in vdom\n                    innerContent = customGeneratorRes;\n                }\n                else {\n                    // an exotic object for handleCustomRendering\n                    currentGeneratorMeta = customGeneratorRes;\n                }\n            }\n        }\n        else {\n            useDefault = !hasCustomRenderingHandler(props.generatorName, options);\n        }\n        if (useDefault && defaultGenerator) {\n            innerContent = defaultGenerator(renderProps);\n        }\n        this.queuedDomNodes = queuedDomNodes;\n        this.currentGeneratorMeta = currentGeneratorMeta;\n        return createElement(props.elTag, attrs, innerContent);\n    }\n    componentDidMount() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentDidUpdate() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentWillUnmount() {\n        this.triggerCustomRendering(false); // TODO: different API for removal?\n    }\n    triggerCustomRendering(isActive) {\n        var _a;\n        const { props, context } = this;\n        const { handleCustomRendering, customRenderingMetaMap } = context.options;\n        if (handleCustomRendering) {\n            const generatorMeta = (_a = this.currentGeneratorMeta) !== null && _a !== void 0 ? _a : customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];\n            if (generatorMeta) {\n                handleCustomRendering(Object.assign(Object.assign({ id: this.id, isActive, containerEl: this.base, reportNewContainerEl: this.updateElRef, // front-end framework tells us about new container els\n                    generatorMeta }, props), { elClasses: (props.elClasses || []).filter(isTruthy) }));\n            }\n        }\n    }\n    applyQueueudDomNodes() {\n        const { queuedDomNodes, currentDomNodes } = this;\n        const el = this.base;\n        if (!isArraysEqual(queuedDomNodes, currentDomNodes)) {\n            currentDomNodes.forEach(removeElement);\n            for (let newNode of queuedDomNodes) {\n                el.appendChild(newNode);\n            }\n            this.currentDomNodes = queuedDomNodes;\n        }\n    }\n}\nContentInjector.addPropsEquality({\n    elClasses: isArraysEqual,\n    elStyle: isPropsEqual,\n    elAttrs: isNonHandlerPropsEqual,\n    renderProps: isPropsEqual,\n});\n// Util\n/*\nDoes UI-framework provide custom way of rendering that does not use Preact VDOM\nAND does the calendar's options define custom rendering?\nAKA. Should we NOT render the default content?\n*/\nfunction hasCustomRenderingHandler(generatorName, options) {\n    var _a;\n    return Boolean(options.handleCustomRendering &&\n        generatorName &&\n        ((_a = options.customRenderingMetaMap) === null || _a === void 0 ? void 0 : _a[generatorName]));\n}\nfunction buildElAttrs(props, extraClassNames, elRef) {\n    const attrs = Object.assign(Object.assign({}, props.elAttrs), { ref: elRef });\n    if (props.elClasses || extraClassNames) {\n        attrs.className = (props.elClasses || [])\n            .concat(extraClassNames || [])\n            .concat(attrs.className || [])\n            .filter(Boolean)\n            .join(' ');\n    }\n    if (props.elStyle) {\n        attrs.style = props.elStyle;\n    }\n    return attrs;\n}\nfunction isTruthy(val) {\n    return Boolean(val);\n}\n\nconst RenderId = createContext(0);\n\nclass ContentContainer extends Component {\n    constructor() {\n        super(...arguments);\n        this.InnerContent = InnerContentInjector.bind(undefined, this);\n        this.handleEl = (el) => {\n            this.el = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n                if (el && this.didMountMisfire) {\n                    this.componentDidMount();\n                }\n            }\n        };\n    }\n    render() {\n        const { props } = this;\n        const generatedClassNames = generateClassNames(props.classNameGenerator, props.renderProps);\n        if (props.children) {\n            const elAttrs = buildElAttrs(props, generatedClassNames, this.handleEl);\n            const children = props.children(this.InnerContent, props.renderProps, elAttrs);\n            if (props.elTag) {\n                return createElement(props.elTag, elAttrs, children);\n            }\n            else {\n                return children;\n            }\n        }\n        else {\n            return createElement((ContentInjector), Object.assign(Object.assign({}, props), { elRef: this.handleEl, elTag: props.elTag || 'div', elClasses: (props.elClasses || []).concat(generatedClassNames), renderId: this.context }));\n        }\n    }\n    componentDidMount() {\n        var _a, _b;\n        if (this.el) {\n            (_b = (_a = this.props).didMount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n        }\n        else {\n            this.didMountMisfire = true;\n        }\n    }\n    componentWillUnmount() {\n        var _a, _b;\n        (_b = (_a = this.props).willUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n    }\n}\nContentContainer.contextType = RenderId;\nfunction InnerContentInjector(containerComponent, props) {\n    const parentProps = containerComponent.props;\n    return createElement((ContentInjector), Object.assign({ renderProps: parentProps.renderProps, generatorName: parentProps.generatorName, customGenerator: parentProps.customGenerator, defaultGenerator: parentProps.defaultGenerator, renderId: containerComponent.context }, props));\n}\n// Utils\nfunction generateClassNames(classNameGenerator, renderProps) {\n    const classNames = typeof classNameGenerator === 'function' ?\n        classNameGenerator(renderProps) :\n        classNameGenerator || [];\n    return typeof classNames === 'string' ? [classNames] : classNames;\n}\n\nclass ViewContainer extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = { view: context.viewApi };\n        return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [\n                ...buildViewClassNames(props.viewSpec),\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));\n    }\n}\nfunction buildViewClassNames(viewSpec) {\n    return [\n        `fc-${viewSpec.type}-view`,\n        'fc-view',\n    ];\n}\n\nfunction parseRange(input, dateEnv) {\n    let start = null;\n    let end = null;\n    if (input.start) {\n        start = dateEnv.createMarker(input.start);\n    }\n    if (input.end) {\n        end = dateEnv.createMarker(input.end);\n    }\n    if (!start && !end) {\n        return null;\n    }\n    if (start && end && end < start) {\n        return null;\n    }\n    return { start, end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n    let invertedRanges = [];\n    let { start } = constraintRange; // the end of the previous range. the start of the new range\n    let i;\n    let dateRange;\n    // ranges need to be in order. required for our date-walking algorithm\n    ranges.sort(compareRanges);\n    for (i = 0; i < ranges.length; i += 1) {\n        dateRange = ranges[i];\n        // add the span of time before the event (if there is any)\n        if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n            invertedRanges.push({ start, end: dateRange.start });\n        }\n        if (dateRange.end > start) {\n            start = dateRange.end;\n        }\n    }\n    // add the span of time after the last event (if there is any)\n    if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n        invertedRanges.push({ start, end: constraintRange.end });\n    }\n    return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n    return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n    let { start, end } = range0;\n    let newRange = null;\n    if (range1.start !== null) {\n        if (start === null) {\n            start = range1.start;\n        }\n        else {\n            start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n        }\n    }\n    if (range1.end != null) {\n        if (end === null) {\n            end = range1.end;\n        }\n        else {\n            end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n        }\n    }\n    if (start === null || end === null || start < end) {\n        newRange = { start, end };\n    }\n    return newRange;\n}\nfunction rangesEqual(range0, range1) {\n    return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n        (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n    return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n        (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n    return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n        (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n    return (range.start === null || date >= range.start) &&\n        (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n    if (range.start != null && date < range.start) {\n        return range.start;\n    }\n    if (range.end != null && date >= range.end) {\n        return new Date(range.end.valueOf() - 1);\n    }\n    return date;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n    let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n    let start = startOfDay(timedRange.start);\n    let end = addDays(start, dayCnt);\n    return { start, end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold = createDuration(0)) {\n    let startDay = null;\n    let endDay = null;\n    if (timedRange.end) {\n        endDay = startOfDay(timedRange.end);\n        let endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n        // If the end time is actually inclusively part of the next day and is equal to or\n        // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n        // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n        if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n            endDay = addDays(endDay, 1);\n        }\n    }\n    if (timedRange.start) {\n        startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n        // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n        if (endDay && endDay <= startDay) {\n            endDay = addDays(startDay, 1);\n        }\n    }\n    return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n    let visibleRange = computeVisibleDayRange(range);\n    return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n    if (largeUnit === 'year') {\n        return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n    }\n    if (largeUnit === 'month') {\n        return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n    }\n    return diffDayAndTime(date0, date1); // returns a duration\n}\n\nclass DateProfileGenerator {\n    constructor(props) {\n        this.props = props;\n        this.initHiddenDays();\n    }\n    /* Date Range Computation\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n    buildPrev(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(prevDate, -1, forceToValid);\n    }\n    // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n    buildNext(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(nextDate, 1, forceToValid);\n    }\n    // Builds a structure holding dates/ranges for rendering around the given date.\n    // Optional direction param indicates whether the date is being incremented/decremented\n    // from its previous value. decremented = -1, incremented = 1 (default).\n    build(currentDate, direction, forceToValid = true) {\n        let { props } = this;\n        let validRange;\n        let currentInfo;\n        let isRangeAllDay;\n        let renderRange;\n        let activeRange;\n        let isValid;\n        validRange = this.buildValidRange();\n        validRange = this.trimHiddenDays(validRange);\n        if (forceToValid) {\n            currentDate = constrainMarkerToRange(currentDate, validRange);\n        }\n        currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n        isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n        renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n        renderRange = this.trimHiddenDays(renderRange);\n        activeRange = renderRange;\n        if (!props.showNonCurrentDates) {\n            activeRange = intersectRanges(activeRange, currentInfo.range);\n        }\n        activeRange = this.adjustActiveRange(activeRange);\n        activeRange = intersectRanges(activeRange, validRange); // might return null\n        // it's invalid if the originally requested date is not contained,\n        // or if the range is completely outside of the valid range.\n        isValid = rangesIntersect(currentInfo.range, validRange);\n        // HACK: constrain to render-range so `currentDate` is more useful to view rendering\n        if (!rangeContainsMarker(renderRange, currentDate)) {\n            currentDate = renderRange.start;\n        }\n        return {\n            currentDate,\n            // constraint for where prev/next operations can go and where events can be dragged/resized to.\n            // an object with optional start and end properties.\n            validRange,\n            // range the view is formally responsible for.\n            // for example, a month view might have 1st-31st, excluding padded dates\n            currentRange: currentInfo.range,\n            // name of largest unit being displayed, like \"month\" or \"week\"\n            currentRangeUnit: currentInfo.unit,\n            isRangeAllDay,\n            // dates that display events and accept drag-n-drop\n            // will be `null` if no dates accept events\n            activeRange,\n            // date range with a rendered skeleton\n            // includes not-active days that need some sort of DOM\n            renderRange,\n            // Duration object that denotes the first visible time of any given day\n            slotMinTime: props.slotMinTime,\n            // Duration object that denotes the exclusive visible end time of any given day\n            slotMaxTime: props.slotMaxTime,\n            isValid,\n            // how far the current date will move for a prev/next operation\n            dateIncrement: this.buildDateIncrement(currentInfo.duration),\n            // pass a fallback (might be null) ^\n        };\n    }\n    // Builds an object with optional start/end properties.\n    // Indicates the minimum/maximum dates to display.\n    // not responsible for trimming hidden days.\n    buildValidRange() {\n        let input = this.props.validRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))\n            : input;\n        return this.refineRange(simpleInput) ||\n            { start: null, end: null }; // completely open-ended\n    }\n    // Builds a structure with info about the \"current\" range, the range that is\n    // highlighted as being the current month for example.\n    // See build() for a description of `direction`.\n    // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n    buildCurrentRangeInfo(date, direction) {\n        let { props } = this;\n        let duration = null;\n        let unit = null;\n        let range = null;\n        let dayCount;\n        if (props.duration) {\n            duration = props.duration;\n            unit = props.durationUnit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        else if ((dayCount = this.props.dayCount)) {\n            unit = 'day';\n            range = this.buildRangeFromDayCount(date, direction, dayCount);\n        }\n        else if ((range = this.buildCustomVisibleRange(date))) {\n            unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n        }\n        else {\n            duration = this.getFallbackDuration();\n            unit = greatestDurationDenominator(duration).unit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        return { duration, unit, range };\n    }\n    getFallbackDuration() {\n        return createDuration({ day: 1 });\n    }\n    // Returns a new activeRange to have time values (un-ambiguate)\n    // slotMinTime or slotMaxTime causes the range to expand.\n    adjustActiveRange(range) {\n        let { dateEnv, usesMinMaxTime, slotMinTime, slotMaxTime } = this.props;\n        let { start, end } = range;\n        if (usesMinMaxTime) {\n            // expand active range if slotMinTime is negative (why not when positive?)\n            if (asRoughDays(slotMinTime) < 0) {\n                start = startOfDay(start); // necessary?\n                start = dateEnv.add(start, slotMinTime);\n            }\n            // expand active range if slotMaxTime is beyond one day (why not when negative?)\n            if (asRoughDays(slotMaxTime) > 1) {\n                end = startOfDay(end); // necessary?\n                end = addDays(end, -1);\n                end = dateEnv.add(end, slotMaxTime);\n            }\n        }\n        return { start, end };\n    }\n    // Builds the \"current\" range when it is specified as an explicit duration.\n    // `unit` is the already-computed greatestDurationDenominator unit of duration.\n    buildRangeFromDuration(date, direction, duration, unit) {\n        let { dateEnv, dateAlignment } = this.props;\n        let start;\n        let end;\n        let res;\n        // compute what the alignment should be\n        if (!dateAlignment) {\n            let { dateIncrement } = this.props;\n            if (dateIncrement) {\n                // use the smaller of the two units\n                if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n                    dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n                }\n                else {\n                    dateAlignment = unit;\n                }\n            }\n            else {\n                dateAlignment = unit;\n            }\n        }\n        // if the view displays a single day or smaller\n        if (asRoughDays(duration) <= 1) {\n            if (this.isHiddenDay(start)) {\n                start = this.skipHiddenDays(start, direction);\n                start = startOfDay(start);\n            }\n        }\n        function computeRes() {\n            start = dateEnv.startOf(date, dateAlignment);\n            end = dateEnv.add(start, duration);\n            res = { start, end };\n        }\n        computeRes();\n        // if range is completely enveloped by hidden days, go past the hidden days\n        if (!this.trimHiddenDays(res)) {\n            date = this.skipHiddenDays(date, direction);\n            computeRes();\n        }\n        return res;\n    }\n    // Builds the \"current\" range when a dayCount is specified.\n    buildRangeFromDayCount(date, direction, dayCount) {\n        let { dateEnv, dateAlignment } = this.props;\n        let runningCount = 0;\n        let start = date;\n        let end;\n        if (dateAlignment) {\n            start = dateEnv.startOf(start, dateAlignment);\n        }\n        start = startOfDay(start);\n        start = this.skipHiddenDays(start, direction);\n        end = start;\n        do {\n            end = addDays(end, 1);\n            if (!this.isHiddenDay(end)) {\n                runningCount += 1;\n            }\n        } while (runningCount < dayCount);\n        return { start, end };\n    }\n    // Builds a normalized range object for the \"visible\" range,\n    // which is a way to define the currentRange and activeRange at the same time.\n    buildCustomVisibleRange(date) {\n        let { props } = this;\n        let input = props.visibleRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n            : input;\n        let range = this.refineRange(simpleInput);\n        if (range && (range.start == null || range.end == null)) {\n            return null;\n        }\n        return range;\n    }\n    // Computes the range that will represent the element/cells for *rendering*,\n    // but which may have voided days/times.\n    // not responsible for trimming hidden days.\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        return currentRange;\n    }\n    // Compute the duration value that should be added/substracted to the current date\n    // when a prev/next operation happens.\n    buildDateIncrement(fallback) {\n        let { dateIncrement } = this.props;\n        let customAlignment;\n        if (dateIncrement) {\n            return dateIncrement;\n        }\n        if ((customAlignment = this.props.dateAlignment)) {\n            return createDuration(1, customAlignment);\n        }\n        if (fallback) {\n            return fallback;\n        }\n        return createDuration({ days: 1 });\n    }\n    refineRange(rangeInput) {\n        if (rangeInput) {\n            let range = parseRange(rangeInput, this.props.dateEnv);\n            if (range) {\n                range = computeVisibleDayRange(range);\n            }\n            return range;\n        }\n        return null;\n    }\n    /* Hidden Days\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Initializes internal variables related to calculating hidden days-of-week\n    initHiddenDays() {\n        let hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n        let isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n        let dayCnt = 0;\n        let i;\n        if (this.props.weekends === false) {\n            hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n        }\n        for (i = 0; i < 7; i += 1) {\n            if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n                dayCnt += 1;\n            }\n        }\n        if (!dayCnt) {\n            throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n        }\n        this.isHiddenDayHash = isHiddenDayHash;\n    }\n    // Remove days from the beginning and end of the range that are computed as hidden.\n    // If the whole range is trimmed off, returns null\n    trimHiddenDays(range) {\n        let { start, end } = range;\n        if (start) {\n            start = this.skipHiddenDays(start);\n        }\n        if (end) {\n            end = this.skipHiddenDays(end, -1, true);\n        }\n        if (start == null || end == null || start < end) {\n            return { start, end };\n        }\n        return null;\n    }\n    // Is the current day hidden?\n    // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n    isHiddenDay(day) {\n        if (day instanceof Date) {\n            day = day.getUTCDay();\n        }\n        return this.isHiddenDayHash[day];\n    }\n    // Incrementing the current day until it is no longer a hidden day, returning a copy.\n    // DOES NOT CONSIDER validRange!\n    // If the initial value of `date` is not a hidden day, don't do anything.\n    // Pass `isExclusive` as `true` if you are dealing with an end date.\n    // `inc` defaults to `1` (increment one day forward each time)\n    skipHiddenDays(date, inc = 1, isExclusive = false) {\n        while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n            date = addDays(date, inc);\n        }\n        return date;\n    }\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n    return {\n        instanceId: guid(),\n        defId,\n        range,\n        forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n        forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n    };\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n    for (let i = 0; i < recurringTypes.length; i += 1) {\n        let parsed = recurringTypes[i].parse(refined, dateEnv);\n        if (parsed) {\n            let { allDay } = refined;\n            if (allDay == null) {\n                allDay = defaultAllDay;\n                if (allDay == null) {\n                    allDay = parsed.allDayGuess;\n                    if (allDay == null) {\n                        allDay = false;\n                    }\n                }\n            }\n            return {\n                allDay,\n                duration: parsed.duration,\n                typeData: parsed.typeData,\n                typeId: i,\n            };\n        }\n    }\n    return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n    let { dateEnv, pluginHooks, options } = context;\n    let { defs, instances } = eventStore;\n    // remove existing recurring instances\n    // TODO: bad. always expand events as a second step\n    instances = filterHash(instances, (instance) => !defs[instance.defId].recurringDef);\n    for (let defId in defs) {\n        let def = defs[defId];\n        if (def.recurringDef) {\n            let { duration } = def.recurringDef;\n            if (!duration) {\n                duration = def.allDay ?\n                    options.defaultAllDayEventDuration :\n                    options.defaultTimedEventDuration;\n            }\n            let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n            for (let start of starts) {\n                let instance = createEventInstance(defId, {\n                    start,\n                    end: dateEnv.add(start, duration),\n                });\n                instances[instance.instanceId] = instance;\n            }\n        }\n    }\n    return { defs, instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n    let typeDef = recurringTypes[eventDef.recurringDef.typeId];\n    let markers = typeDef.expand(eventDef.recurringDef.typeData, {\n        start: dateEnv.subtract(framingRange.start, duration),\n        end: framingRange.end,\n    }, dateEnv);\n    // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n    if (eventDef.allDay) {\n        markers = markers.map(startOfDay);\n    }\n    return markers;\n}\n\nconst EVENT_NON_DATE_REFINERS = {\n    id: String,\n    groupId: String,\n    title: String,\n    url: String,\n    interactive: Boolean,\n};\nconst EVENT_DATE_REFINERS = {\n    start: identity,\n    end: identity,\n    date: identity,\n    allDay: Boolean,\n};\nconst EVENT_REFINERS = Object.assign(Object.assign(Object.assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners = buildEventRefiners(context), defIdMap, instanceIdMap) {\n    let { refined, extra } = refineEventDef(raw, context, refiners);\n    let defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n    let recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n    if (recurringRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context, defIdMap);\n        def.recurringDef = {\n            typeId: recurringRes.typeId,\n            typeData: recurringRes.typeData,\n            duration: recurringRes.duration,\n        };\n        return { def, instance: null };\n    }\n    let singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n    if (singleRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context, defIdMap);\n        let instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n        if (instanceIdMap && def.publicId && instanceIdMap[def.publicId]) {\n            instance.instanceId = instanceIdMap[def.publicId];\n        }\n        return { def, instance };\n    }\n    return null;\n}\nfunction refineEventDef(raw, context, refiners = buildEventRefiners(context)) {\n    return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context, defIdMap) {\n    let def = {\n        title: refined.title || '',\n        groupId: refined.groupId || '',\n        publicId: refined.id || '',\n        url: refined.url || '',\n        recurringDef: null,\n        defId: ((defIdMap && refined.id) ? defIdMap[refined.id] : '') || guid(),\n        sourceId,\n        allDay,\n        hasEnd,\n        interactive: refined.interactive,\n        ui: createEventUi(refined, context),\n        extendedProps: Object.assign(Object.assign({}, (refined.extendedProps || {})), extra),\n    };\n    for (let memberAdder of context.pluginHooks.eventDefMemberAdders) {\n        Object.assign(def, memberAdder(refined));\n    }\n    // help out EventImpl from having user modify props\n    Object.freeze(def.ui.classNames);\n    Object.freeze(def.extendedProps);\n    return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n    let { allDay } = refined;\n    let startMeta;\n    let startMarker = null;\n    let hasEnd = false;\n    let endMeta;\n    let endMarker = null;\n    let startInput = refined.start != null ? refined.start : refined.date;\n    startMeta = context.dateEnv.createMarkerMeta(startInput);\n    if (startMeta) {\n        startMarker = startMeta.marker;\n    }\n    else if (!allowOpenRange) {\n        return null;\n    }\n    if (refined.end != null) {\n        endMeta = context.dateEnv.createMarkerMeta(refined.end);\n    }\n    if (allDay == null) {\n        if (defaultAllDay != null) {\n            allDay = defaultAllDay;\n        }\n        else {\n            // fall back to the date props LAST\n            allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n                (!endMeta || endMeta.isTimeUnspecified);\n        }\n    }\n    if (allDay && startMarker) {\n        startMarker = startOfDay(startMarker);\n    }\n    if (endMeta) {\n        endMarker = endMeta.marker;\n        if (allDay) {\n            endMarker = startOfDay(endMarker);\n        }\n        if (startMarker && endMarker <= startMarker) {\n            endMarker = null;\n        }\n    }\n    if (endMarker) {\n        hasEnd = true;\n    }\n    else if (!allowOpenRange) {\n        hasEnd = context.options.forceEventDuration || false;\n        endMarker = context.dateEnv.add(startMarker, allDay ?\n            context.options.defaultAllDayEventDuration :\n            context.options.defaultTimedEventDuration);\n    }\n    return {\n        allDay,\n        hasEnd,\n        range: { start: startMarker, end: endMarker },\n        forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n        forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n    };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n    let res = null;\n    if (eventSource) {\n        res = eventSource.defaultAllDay;\n    }\n    if (res == null) {\n        res = context.options.defaultAllDay;\n    }\n    return res;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange, defIdMap, instanceIdMap) {\n    let eventStore = createEmptyEventStore();\n    let eventRefiners = buildEventRefiners(context);\n    for (let rawEvent of rawEvents) {\n        let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners, defIdMap, instanceIdMap);\n        if (tuple) {\n            eventTupleToStore(tuple, eventStore);\n        }\n    }\n    return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore = createEmptyEventStore()) {\n    eventStore.defs[tuple.def.defId] = tuple.def;\n    if (tuple.instance) {\n        eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n    }\n    return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n    let instance = eventStore.instances[instanceId];\n    if (instance) {\n        let def = eventStore.defs[instance.defId];\n        // get events/instances with same group\n        let newStore = filterEventStoreDefs(eventStore, (lookDef) => isEventDefsGrouped(def, lookDef));\n        // add the original\n        // TODO: wish we could use eventTupleToStore or something like it\n        newStore.defs[def.defId] = def;\n        newStore.instances[instance.instanceId] = instance;\n        return newStore;\n    }\n    return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n    return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n    return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n    return {\n        defs: Object.assign(Object.assign({}, store0.defs), store1.defs),\n        instances: Object.assign(Object.assign({}, store0.instances), store1.instances),\n    };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n    let defs = filterHash(eventStore.defs, filterFunc);\n    let instances = filterHash(eventStore.instances, (instance) => (defs[instance.defId] // still exists?\n    ));\n    return { defs, instances };\n}\nfunction excludeSubEventStore(master, sub) {\n    let { defs, instances } = master;\n    let filteredDefs = {};\n    let filteredInstances = {};\n    for (let defId in defs) {\n        if (!sub.defs[defId]) { // not explicitly excluded\n            filteredDefs[defId] = defs[defId];\n        }\n    }\n    for (let instanceId in instances) {\n        if (!sub.instances[instanceId] && // not explicitly excluded\n            filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n        ) {\n            filteredInstances[instanceId] = instances[instanceId];\n        }\n    }\n    return {\n        defs: filteredDefs,\n        instances: filteredInstances,\n    };\n}\n\nfunction normalizeConstraint(input, context) {\n    if (Array.isArray(input)) {\n        return parseEvents(input, null, context, true); // allowOpenRange=true\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseEvents([input], null, context, true); // allowOpenRange=true\n    }\n    if (input != null) {\n        return String(input);\n    }\n    return null;\n}\n\nfunction parseClassNames(raw) {\n    if (Array.isArray(raw)) {\n        return raw;\n    }\n    if (typeof raw === 'string') {\n        return raw.split(/\\s+/);\n    }\n    return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nconst EVENT_UI_REFINERS = {\n    display: String,\n    editable: Boolean,\n    startEditable: Boolean,\n    durationEditable: Boolean,\n    constraint: identity,\n    overlap: identity,\n    allow: identity,\n    className: parseClassNames,\n    classNames: parseClassNames,\n    color: String,\n    backgroundColor: String,\n    borderColor: String,\n    textColor: String,\n};\nconst EMPTY_EVENT_UI = {\n    display: null,\n    startEditable: null,\n    durationEditable: null,\n    constraints: [],\n    overlap: null,\n    allows: [],\n    backgroundColor: '',\n    borderColor: '',\n    textColor: '',\n    classNames: [],\n};\nfunction createEventUi(refined, context) {\n    let constraint = normalizeConstraint(refined.constraint, context);\n    return {\n        display: refined.display || null,\n        startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n        durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n        constraints: constraint != null ? [constraint] : [],\n        overlap: refined.overlap != null ? refined.overlap : null,\n        allows: refined.allow != null ? [refined.allow] : [],\n        backgroundColor: refined.backgroundColor || refined.color || '',\n        borderColor: refined.borderColor || refined.color || '',\n        textColor: refined.textColor || '',\n        classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n    };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n    return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n    return {\n        display: item1.display != null ? item1.display : item0.display,\n        startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n        durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n        constraints: item0.constraints.concat(item1.constraints),\n        overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n        allows: item0.allows.concat(item1.allows),\n        backgroundColor: item1.backgroundColor || item0.backgroundColor,\n        borderColor: item1.borderColor || item0.borderColor,\n        textColor: item1.textColor || item0.textColor,\n        classNames: item0.classNames.concat(item1.classNames),\n    };\n}\n\nconst EVENT_SOURCE_REFINERS = {\n    id: String,\n    defaultAllDay: Boolean,\n    url: String,\n    format: String,\n    events: identity,\n    eventDataTransform: identity,\n    // for any network-related sources\n    success: identity,\n    failure: identity,\n};\nfunction parseEventSource(raw, context, refiners = buildEventSourceRefiners(context)) {\n    let rawObj;\n    if (typeof raw === 'string') {\n        rawObj = { url: raw };\n    }\n    else if (typeof raw === 'function' || Array.isArray(raw)) {\n        rawObj = { events: raw };\n    }\n    else if (typeof raw === 'object' && raw) { // not null\n        rawObj = raw;\n    }\n    if (rawObj) {\n        let { refined, extra } = refineProps(rawObj, refiners);\n        let metaRes = buildEventSourceMeta(refined, context);\n        if (metaRes) {\n            return {\n                _raw: raw,\n                isFetching: false,\n                latestFetchId: '',\n                fetchRange: null,\n                defaultAllDay: refined.defaultAllDay,\n                eventDataTransform: refined.eventDataTransform,\n                success: refined.success,\n                failure: refined.failure,\n                publicId: refined.id || '',\n                sourceId: guid(),\n                sourceDefId: metaRes.sourceDefId,\n                meta: metaRes.meta,\n                ui: createEventUi(refined, context),\n                extendedProps: extra,\n            };\n        }\n    }\n    return null;\n}\nfunction buildEventSourceRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n        let def = defs[i];\n        let meta = def.parseMeta(raw);\n        if (meta) {\n            return { sourceDefId: i, meta };\n        }\n    }\n    return null;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n    switch (action.type) {\n        case 'RECEIVE_EVENTS': // raw\n            return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n        case 'RESET_RAW_EVENTS':\n            return resetRawEvents(eventStore, eventSources[action.sourceId], action.rawEvents, dateProfile.activeRange, context);\n        case 'ADD_EVENTS': // already parsed, but not expanded\n            return addEvent(eventStore, action.eventStore, // new ones\n            dateProfile ? dateProfile.activeRange : null, context);\n        case 'RESET_EVENTS':\n            return action.eventStore;\n        case 'MERGE_EVENTS': // already parsed and expanded\n            return mergeEventStores(eventStore, action.eventStore);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return expandRecurring(eventStore, dateProfile.activeRange, context);\n            }\n            return eventStore;\n        case 'REMOVE_EVENTS':\n            return excludeSubEventStore(eventStore, action.eventStore);\n        case 'REMOVE_EVENT_SOURCE':\n            return excludeEventsBySourceId(eventStore, action.sourceId);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return filterEventStoreDefs(eventStore, (eventDef) => (!eventDef.sourceId // only keep events with no source id\n            ));\n        case 'REMOVE_ALL_EVENTS':\n            return createEmptyEventStore();\n        default:\n            return eventStore;\n    }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n    ) {\n        let subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n        if (fetchRange) {\n            subset = expandRecurring(subset, fetchRange, context);\n        }\n        return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n    }\n    return eventStore;\n}\nfunction resetRawEvents(existingEventStore, eventSource, rawEvents, activeRange, context) {\n    const { defIdMap, instanceIdMap } = buildPublicIdMaps(existingEventStore);\n    let newEventStore = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context, false, defIdMap, instanceIdMap);\n    return expandRecurring(newEventStore, activeRange, context);\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n    let calEachTransform = context.options.eventDataTransform;\n    let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n    if (sourceEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n    }\n    if (calEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n    }\n    return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n    let refinedEvents;\n    if (!func) {\n        refinedEvents = rawEvents;\n    }\n    else {\n        refinedEvents = [];\n        for (let rawEvent of rawEvents) {\n            let refinedEvent = func(rawEvent);\n            if (refinedEvent) {\n                refinedEvents.push(refinedEvent);\n            }\n            else if (refinedEvent == null) {\n                refinedEvents.push(rawEvent);\n            } // if a different falsy value, do nothing\n        }\n    }\n    return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n    if (expandRange) {\n        subset = expandRecurring(subset, expandRange, context);\n    }\n    return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n    let { defs } = eventStore;\n    let instances = mapHash(eventStore.instances, (instance) => {\n        let def = defs[instance.defId];\n        if (def.allDay) {\n            return instance; // isn't dependent on timezone\n        }\n        return Object.assign(Object.assign({}, instance), { range: {\n                start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n                end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n            }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n    });\n    return { defs, instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n    return filterEventStoreDefs(eventStore, (eventDef) => eventDef.sourceId !== sourceId);\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n    return {\n        defs: eventStore.defs,\n        instances: filterHash(eventStore.instances, (instance) => !removals[instance.instanceId]),\n    };\n}\nfunction buildPublicIdMaps(eventStore) {\n    const { defs, instances } = eventStore;\n    const defIdMap = {};\n    const instanceIdMap = {};\n    for (let defId in defs) {\n        const def = defs[defId];\n        const { publicId } = def;\n        if (publicId) {\n            defIdMap[publicId] = defId;\n        }\n    }\n    for (let instanceId in instances) {\n        const instance = instances[instanceId];\n        const def = defs[instance.defId];\n        const { publicId } = def;\n        if (publicId) {\n            instanceIdMap[publicId] = instanceId;\n        }\n    }\n    return { defIdMap, instanceIdMap };\n}\n\nclass Emitter {\n    constructor() {\n        this.handlers = {};\n        this.thisContext = null;\n    }\n    setThisContext(thisContext) {\n        this.thisContext = thisContext;\n    }\n    setOptions(options) {\n        this.options = options;\n    }\n    on(type, handler) {\n        addToHash(this.handlers, type, handler);\n    }\n    off(type, handler) {\n        removeFromHash(this.handlers, type, handler);\n    }\n    trigger(type, ...args) {\n        let attachedHandlers = this.handlers[type] || [];\n        let optionHandler = this.options && this.options[type];\n        let handlers = [].concat(optionHandler || [], attachedHandlers);\n        for (let handler of handlers) {\n            handler.apply(this.thisContext, args);\n        }\n    }\n    hasHandlers(type) {\n        return Boolean((this.handlers[type] && this.handlers[type].length) ||\n            (this.options && this.options[type]));\n    }\n}\nfunction addToHash(hash, type, handler) {\n    (hash[type] || (hash[type] = []))\n        .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n    if (handler) {\n        if (hash[type]) {\n            hash[type] = hash[type].filter((func) => func !== handler);\n        }\n    }\n    else {\n        delete hash[type]; // remove all handler funcs for this type\n    }\n}\n\nconst DEF_DEFAULTS = {\n    startTime: '09:00',\n    endTime: '17:00',\n    daysOfWeek: [1, 2, 3, 4, 5],\n    display: 'inverse-background',\n    classNames: 'fc-non-business',\n    groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n    return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n    let rawDefs;\n    if (input === true) {\n        rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n    }\n    else if (Array.isArray(input)) {\n        // if specifying an array, every sub-definition NEEDS a day-of-week\n        rawDefs = input.filter((rawDef) => rawDef.daysOfWeek);\n    }\n    else if (typeof input === 'object' && input) { // non-null object\n        rawDefs = [input];\n    }\n    else { // is probably false\n        rawDefs = [];\n    }\n    rawDefs = rawDefs.map((rawDef) => (Object.assign(Object.assign({}, DEF_DEFAULTS), rawDef)));\n    return rawDefs;\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n    context.emitter.trigger('select', Object.assign(Object.assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n    context.emitter.trigger('unselect', {\n        jsEvent: pev ? pev.origEvent : null,\n        view: context.viewApi || context.calendarApi.view,\n    });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n    let props = {};\n    for (let transform of context.pluginHooks.dateSpanTransforms) {\n        Object.assign(props, transform(dateSpan, context));\n    }\n    Object.assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n    return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n    let { dateEnv, options } = context;\n    let end = marker;\n    if (allDay) {\n        end = startOfDay(end);\n        end = dateEnv.add(end, options.defaultAllDayEventDuration);\n    }\n    else {\n        end = dateEnv.add(end, options.defaultTimedEventDuration);\n    }\n    return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n    let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n    let dest = createEmptyEventStore();\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = dest.defs[instance.defId]; // important to grab the newly modified def\n        dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n    }\n    return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n    let standardProps = mutation.standardProps || {};\n    // if hasEnd has not been specified, guess a good value based on deltas.\n    // if duration will change, there's no way the default duration will persist,\n    // and thus, we need to mark the event as having a real end\n    if (standardProps.hasEnd == null &&\n        eventConfig.durationEditable &&\n        (mutation.startDelta || mutation.endDelta)) {\n        standardProps.hasEnd = true; // TODO: is this mutation okay?\n    }\n    let copy = Object.assign(Object.assign(Object.assign({}, eventDef), standardProps), { ui: Object.assign(Object.assign({}, eventDef.ui), standardProps.ui) });\n    if (mutation.extendedProps) {\n        copy.extendedProps = Object.assign(Object.assign({}, copy.extendedProps), mutation.extendedProps);\n    }\n    for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n        applier(copy, mutation, context);\n    }\n    if (!copy.hasEnd && context.options.forceEventDuration) {\n        copy.hasEnd = true;\n    }\n    return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n    let { dateEnv } = context;\n    let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n    let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n    let copy = Object.assign({}, eventInstance);\n    if (forceAllDay) {\n        copy.range = computeAlignedDayRange(copy.range);\n    }\n    if (mutation.datesDelta && eventConfig.startEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.datesDelta),\n            end: dateEnv.add(copy.range.end, mutation.datesDelta),\n        };\n    }\n    if (mutation.startDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.startDelta),\n            end: copy.range.end,\n        };\n    }\n    if (mutation.endDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: copy.range.start,\n            end: dateEnv.add(copy.range.end, mutation.endDelta),\n        };\n    }\n    if (clearEnd) {\n        copy.range = {\n            start: copy.range.start,\n            end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n        };\n    }\n    // in case event was all-day but the supplied deltas were not\n    // better util for this?\n    if (eventDef.allDay) {\n        copy.range = {\n            start: startOfDay(copy.range.start),\n            end: startOfDay(copy.range.end),\n        };\n    }\n    // handle invalid durations\n    if (copy.range.end < copy.range.start) {\n        copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n    }\n    return copy;\n}\n\nclass EventSourceImpl {\n    constructor(context, internalEventSource) {\n        this.context = context;\n        this.internalEventSource = internalEventSource;\n    }\n    remove() {\n        this.context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: this.internalEventSource.sourceId,\n        });\n    }\n    refetch() {\n        this.context.dispatch({\n            type: 'FETCH_EVENT_SOURCES',\n            sourceIds: [this.internalEventSource.sourceId],\n            isRefetch: true,\n        });\n    }\n    get id() {\n        return this.internalEventSource.publicId;\n    }\n    get url() {\n        return this.internalEventSource.meta.url;\n    }\n    get format() {\n        return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n    }\n}\n\nclass EventImpl {\n    // instance will be null if expressing a recurring event that has no current instances,\n    // OR if trying to validate an incoming external event that has no dates assigned\n    constructor(context, def, instance) {\n        this._context = context;\n        this._def = def;\n        this._instance = instance || null;\n    }\n    /*\n    TODO: make event struct more responsible for this\n    */\n    setProp(name, val) {\n        if (name in EVENT_DATE_REFINERS) {\n            console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n            // TODO: make proper aliasing system?\n        }\n        else if (name === 'id') {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { publicId: val }, // hardcoded internal name\n            });\n        }\n        else if (name in EVENT_NON_DATE_REFINERS) {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { [name]: val },\n            });\n        }\n        else if (name in EVENT_UI_REFINERS) {\n            let ui = EVENT_UI_REFINERS[name](val);\n            if (name === 'color') {\n                ui = { backgroundColor: val, borderColor: val };\n            }\n            else if (name === 'editable') {\n                ui = { startEditable: val, durationEditable: val };\n            }\n            else {\n                ui = { [name]: val };\n            }\n            this.mutate({\n                standardProps: { ui },\n            });\n        }\n        else {\n            console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`);\n        }\n    }\n    setExtendedProp(name, val) {\n        this.mutate({\n            extendedProps: { [name]: val },\n        });\n    }\n    setStart(startInput, options = {}) {\n        let { dateEnv } = this._context;\n        let start = dateEnv.createMarker(startInput);\n        if (start && this._instance) { // TODO: warning if parsed bad\n            let instanceRange = this._instance.range;\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n            if (options.maintainDuration) {\n                this.mutate({ datesDelta: startDelta });\n            }\n            else {\n                this.mutate({ startDelta });\n            }\n        }\n    }\n    setEnd(endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let end;\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) {\n                return; // TODO: warning if parsed bad\n            }\n        }\n        if (this._instance) {\n            if (end) {\n                let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n                this.mutate({ endDelta });\n            }\n            else {\n                this.mutate({ standardProps: { hasEnd: false } });\n            }\n        }\n    }\n    setDates(startInput, endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let standardProps = { allDay: options.allDay };\n        let start = dateEnv.createMarker(startInput);\n        let end;\n        if (!start) {\n            return; // TODO: warning if parsed bad\n        }\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) { // TODO: warning if parsed bad\n                return;\n            }\n        }\n        if (this._instance) {\n            let instanceRange = this._instance.range;\n            // when computing the diff for an event being converted to all-day,\n            // compute diff off of the all-day values the way event-mutation does.\n            if (options.allDay === true) {\n                instanceRange = computeAlignedDayRange(instanceRange);\n            }\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n            if (end) {\n                let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n                if (durationsEqual(startDelta, endDelta)) {\n                    this.mutate({ datesDelta: startDelta, standardProps });\n                }\n                else {\n                    this.mutate({ startDelta, endDelta, standardProps });\n                }\n            }\n            else { // means \"clear the end\"\n                standardProps.hasEnd = false;\n                this.mutate({ datesDelta: startDelta, standardProps });\n            }\n        }\n    }\n    moveStart(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ startDelta: delta });\n        }\n    }\n    moveEnd(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ endDelta: delta });\n        }\n    }\n    moveDates(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ datesDelta: delta });\n        }\n    }\n    setAllDay(allDay, options = {}) {\n        let standardProps = { allDay };\n        let { maintainDuration } = options;\n        if (maintainDuration == null) {\n            maintainDuration = this._context.options.allDayMaintainDuration;\n        }\n        if (this._def.allDay !== allDay) {\n            standardProps.hasEnd = maintainDuration;\n        }\n        this.mutate({ standardProps });\n    }\n    formatRange(formatInput) {\n        let { dateEnv } = this._context;\n        let instance = this._instance;\n        let formatter = createFormatter(formatInput);\n        if (this._def.hasEnd) {\n            return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n                forcedStartTzo: instance.forcedStartTzo,\n                forcedEndTzo: instance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(instance.range.start, formatter, {\n            forcedTzo: instance.forcedStartTzo,\n        });\n    }\n    mutate(mutation) {\n        let instance = this._instance;\n        if (instance) {\n            let def = this._def;\n            let context = this._context;\n            let { eventStore } = context.getCurrentData();\n            let relevantEvents = getRelevantEvents(eventStore, instance.instanceId);\n            let eventConfigBase = {\n                '': {\n                    display: '',\n                    startEditable: true,\n                    durationEditable: true,\n                    constraints: [],\n                    overlap: null,\n                    allows: [],\n                    backgroundColor: '',\n                    borderColor: '',\n                    textColor: '',\n                    classNames: [],\n                },\n            };\n            relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context);\n            let oldEvent = new EventImpl(context, def, instance); // snapshot\n            this._def = relevantEvents.defs[def.defId];\n            this._instance = relevantEvents.instances[instance.instanceId];\n            context.dispatch({\n                type: 'MERGE_EVENTS',\n                eventStore: relevantEvents,\n            });\n            context.emitter.trigger('eventChange', {\n                oldEvent,\n                event: this,\n                relatedEvents: buildEventApis(relevantEvents, context, instance),\n                revert() {\n                    context.dispatch({\n                        type: 'RESET_EVENTS',\n                        eventStore, // the ORIGINAL store\n                    });\n                },\n            });\n        }\n    }\n    remove() {\n        let context = this._context;\n        let asStore = eventApiToStore(this);\n        context.dispatch({\n            type: 'REMOVE_EVENTS',\n            eventStore: asStore,\n        });\n        context.emitter.trigger('eventRemove', {\n            event: this,\n            relatedEvents: [],\n            revert() {\n                context.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: asStore,\n                });\n            },\n        });\n    }\n    get source() {\n        let { sourceId } = this._def;\n        if (sourceId) {\n            return new EventSourceImpl(this._context, this._context.getCurrentData().eventSources[sourceId]);\n        }\n        return null;\n    }\n    get start() {\n        return this._instance ?\n            this._context.dateEnv.toDate(this._instance.range.start) :\n            null;\n    }\n    get end() {\n        return (this._instance && this._def.hasEnd) ?\n            this._context.dateEnv.toDate(this._instance.range.end) :\n            null;\n    }\n    get startStr() {\n        let instance = this._instance;\n        if (instance) {\n            return this._context.dateEnv.formatIso(instance.range.start, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedStartTzo,\n            });\n        }\n        return '';\n    }\n    get endStr() {\n        let instance = this._instance;\n        if (instance && this._def.hasEnd) {\n            return this._context.dateEnv.formatIso(instance.range.end, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedEndTzo,\n            });\n        }\n        return '';\n    }\n    // computable props that all access the def\n    // TODO: find a TypeScript-compatible way to do this at scale\n    get id() { return this._def.publicId; }\n    get groupId() { return this._def.groupId; }\n    get allDay() { return this._def.allDay; }\n    get title() { return this._def.title; }\n    get url() { return this._def.url; }\n    get display() { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n    get startEditable() { return this._def.ui.startEditable; }\n    get durationEditable() { return this._def.ui.durationEditable; }\n    get constraint() { return this._def.ui.constraints[0] || null; }\n    get overlap() { return this._def.ui.overlap; }\n    get allow() { return this._def.ui.allows[0] || null; }\n    get backgroundColor() { return this._def.ui.backgroundColor; }\n    get borderColor() { return this._def.ui.borderColor; }\n    get textColor() { return this._def.ui.textColor; }\n    // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n    get classNames() { return this._def.ui.classNames; }\n    get extendedProps() { return this._def.extendedProps; }\n    toPlainObject(settings = {}) {\n        let def = this._def;\n        let { ui } = def;\n        let { startStr, endStr } = this;\n        let res = {\n            allDay: def.allDay,\n        };\n        if (def.title) {\n            res.title = def.title;\n        }\n        if (startStr) {\n            res.start = startStr;\n        }\n        if (endStr) {\n            res.end = endStr;\n        }\n        if (def.publicId) {\n            res.id = def.publicId;\n        }\n        if (def.groupId) {\n            res.groupId = def.groupId;\n        }\n        if (def.url) {\n            res.url = def.url;\n        }\n        if (ui.display && ui.display !== 'auto') {\n            res.display = ui.display;\n        }\n        // TODO: what about recurring-event properties???\n        // TODO: include startEditable/durationEditable/constraint/overlap/allow\n        if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n            res.color = ui.backgroundColor;\n        }\n        else {\n            if (ui.backgroundColor) {\n                res.backgroundColor = ui.backgroundColor;\n            }\n            if (ui.borderColor) {\n                res.borderColor = ui.borderColor;\n            }\n        }\n        if (ui.textColor) {\n            res.textColor = ui.textColor;\n        }\n        if (ui.classNames.length) {\n            res.classNames = ui.classNames;\n        }\n        if (Object.keys(def.extendedProps).length) {\n            if (settings.collapseExtendedProps) {\n                Object.assign(res, def.extendedProps);\n            }\n            else {\n                res.extendedProps = def.extendedProps;\n            }\n        }\n        return res;\n    }\n    toJSON() {\n        return this.toPlainObject();\n    }\n}\nfunction eventApiToStore(eventApi) {\n    let def = eventApi._def;\n    let instance = eventApi._instance;\n    return {\n        defs: { [def.defId]: def },\n        instances: instance\n            ? { [instance.instanceId]: instance }\n            : {},\n    };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n    let { defs, instances } = eventStore;\n    let eventApis = [];\n    let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n    for (let id in instances) {\n        let instance = instances[id];\n        let def = defs[instance.defId];\n        if (instance.instanceId !== excludeInstanceId) {\n            eventApis.push(new EventImpl(context, def, instance));\n        }\n    }\n    return eventApis;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n    let inverseBgByGroupId = {};\n    let inverseBgByDefId = {};\n    let defByGroupId = {};\n    let bgRanges = [];\n    let fgRanges = [];\n    let eventUis = compileEventUis(eventStore.defs, eventUiBases);\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        let ui = eventUis[def.defId];\n        if (ui.display === 'inverse-background') {\n            if (def.groupId) {\n                inverseBgByGroupId[def.groupId] = [];\n                if (!defByGroupId[def.groupId]) {\n                    defByGroupId[def.groupId] = def;\n                }\n            }\n            else {\n                inverseBgByDefId[defId] = [];\n            }\n        }\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = eventStore.defs[instance.defId];\n        let ui = eventUis[def.defId];\n        let origRange = instance.range;\n        let normalRange = (!def.allDay && nextDayThreshold) ?\n            computeVisibleDayRange(origRange, nextDayThreshold) :\n            origRange;\n        let slicedRange = intersectRanges(normalRange, framingRange);\n        if (slicedRange) {\n            if (ui.display === 'inverse-background') {\n                if (def.groupId) {\n                    inverseBgByGroupId[def.groupId].push(slicedRange);\n                }\n                else {\n                    inverseBgByDefId[instance.defId].push(slicedRange);\n                }\n            }\n            else if (ui.display !== 'none') {\n                (ui.display === 'background' ? bgRanges : fgRanges).push({\n                    def,\n                    ui,\n                    instance,\n                    range: slicedRange,\n                    isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n                    isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n                });\n            }\n        }\n    }\n    for (let groupId in inverseBgByGroupId) { // BY GROUP\n        let ranges = inverseBgByGroupId[groupId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            let def = defByGroupId[groupId];\n            let ui = eventUis[def.defId];\n            bgRanges.push({\n                def,\n                ui,\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    for (let defId in inverseBgByDefId) {\n        let ranges = inverseBgByDefId[defId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            bgRanges.push({\n                def: eventStore.defs[defId],\n                ui: eventUis[defId],\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n    return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n    el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n    return el.fcSeg ||\n        el.parentNode.fcSeg || // for the harness\n        null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n    return mapHash(eventDefs, (eventDef) => compileEventUi(eventDef, eventUiBases));\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n    let uis = [];\n    if (eventUiBases['']) {\n        uis.push(eventUiBases['']);\n    }\n    if (eventUiBases[eventDef.defId]) {\n        uis.push(eventUiBases[eventDef.defId]);\n    }\n    uis.push(eventDef.ui);\n    return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n    let objs = segs.map(buildSegCompareObj);\n    objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs));\n    return objs.map((c) => c._seg);\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n    let { eventRange } = seg;\n    let eventDef = eventRange.def;\n    let range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n    let start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n    let end = range.end ? range.end.valueOf() : 0; // \"\n    return Object.assign(Object.assign(Object.assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start,\n        end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n    let { pluginHooks } = context;\n    let transformers = pluginHooks.isDraggableTransformers;\n    let { def, ui } = seg.eventRange;\n    let val = ui.startEditable;\n    for (let transformer of transformers) {\n        val = transformer(val, def, ui, context);\n    }\n    return val;\n}\nfunction computeSegStartResizable(seg, context) {\n    return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n    return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n    let { dateEnv, options } = context;\n    let { displayEventTime, displayEventEnd } = options;\n    let eventDef = seg.eventRange.def;\n    let eventInstance = seg.eventRange.instance;\n    if (displayEventTime == null) {\n        displayEventTime = defaultDisplayEventTime !== false;\n    }\n    if (displayEventEnd == null) {\n        displayEventEnd = defaultDisplayEventEnd !== false;\n    }\n    let wholeEventStart = eventInstance.range.start;\n    let wholeEventEnd = eventInstance.range.end;\n    let segStart = startOverride || seg.start || seg.eventRange.range.start;\n    let segEnd = endOverride || seg.end || seg.eventRange.range.end;\n    let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n    let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n    if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n        segStart = isStartDay ? wholeEventStart : segStart;\n        segEnd = isEndDay ? wholeEventEnd : segEnd;\n        if (displayEventEnd && eventDef.hasEnd) {\n            return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n                forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n                forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(segStart, timeFormat, {\n            forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n        });\n    }\n    return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n    let segRange = seg.eventRange.range;\n    return {\n        isPast: segRange.end <= (nowDate || todayRange.start),\n        isFuture: segRange.start >= (nowDate || todayRange.end),\n        isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n    };\n}\nfunction getEventClassNames(props) {\n    let classNames = ['fc-event'];\n    if (props.isMirror) {\n        classNames.push('fc-event-mirror');\n    }\n    if (props.isDraggable) {\n        classNames.push('fc-event-draggable');\n    }\n    if (props.isStartResizable || props.isEndResizable) {\n        classNames.push('fc-event-resizable');\n    }\n    if (props.isDragging) {\n        classNames.push('fc-event-dragging');\n    }\n    if (props.isResizing) {\n        classNames.push('fc-event-resizing');\n    }\n    if (props.isSelected) {\n        classNames.push('fc-event-selected');\n    }\n    if (props.isStart) {\n        classNames.push('fc-event-start');\n    }\n    if (props.isEnd) {\n        classNames.push('fc-event-end');\n    }\n    if (props.isPast) {\n        classNames.push('fc-event-past');\n    }\n    if (props.isToday) {\n        classNames.push('fc-event-today');\n    }\n    if (props.isFuture) {\n        classNames.push('fc-event-future');\n    }\n    return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n    return eventRange.instance\n        ? eventRange.instance.instanceId\n        : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`;\n    // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n    let { def, instance } = seg.eventRange;\n    let { url } = def;\n    if (url) {\n        return { href: url };\n    }\n    let { emitter, options } = context;\n    let { eventInteractive } = options;\n    if (eventInteractive == null) {\n        eventInteractive = def.interactive;\n        if (eventInteractive == null) {\n            eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n        }\n    }\n    // mock what happens in EventClicking\n    if (eventInteractive) {\n        // only attach keyboard-related handlers because click handler is already done in EventClicking\n        return createAriaKeyboardAttrs((ev) => {\n            emitter.trigger('eventClick', {\n                el: ev.target,\n                event: new EventImpl(context, def, instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        });\n    }\n    return {};\n}\n\nconst STANDARD_PROPS = {\n    start: identity,\n    end: identity,\n    allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n    let span = parseOpenDateSpan(raw, dateEnv);\n    let { range } = span;\n    if (!range.start) {\n        return null;\n    }\n    if (!range.end) {\n        if (defaultDuration == null) {\n            return null;\n        }\n        range.end = dateEnv.add(range.start, defaultDuration);\n    }\n    return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n    let { refined: standardProps, extra } = refineProps(raw, STANDARD_PROPS);\n    let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n    let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n    let { allDay } = standardProps;\n    if (allDay == null) {\n        allDay = (startMeta && startMeta.isTimeUnspecified) &&\n            (!endMeta || endMeta.isTimeUnspecified);\n    }\n    return Object.assign({ range: {\n            start: startMeta ? startMeta.marker : null,\n            end: endMeta ? endMeta.marker : null,\n        }, allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n    return rangesEqual(span0.range, span1.range) &&\n        span0.allDay === span1.allDay &&\n        isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n    for (let propName in span1) {\n        if (propName !== 'range' && propName !== 'allDay') {\n            if (span0[propName] !== span1[propName]) {\n                return false;\n            }\n        }\n    }\n    // are there any props that span0 has that span1 DOESN'T have?\n    // both have range/allDay, so no need to special-case.\n    for (let propName in span0) {\n        if (!(propName in span1)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n    return Object.assign(Object.assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n    return Object.assign(Object.assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n    return {\n        start: dateEnv.toDate(range.start),\n        end: dateEnv.toDate(range.end),\n        startStr: dateEnv.formatIso(range.start, { omitTime }),\n        endStr: dateEnv.formatIso(range.end, { omitTime }),\n    };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n    let res = refineEventDef({ editable: false }, context);\n    let def = parseEventDef(res.refined, res.extra, '', // sourceId\n    dateSpan.allDay, true, // hasEnd\n    context);\n    return {\n        def,\n        ui: compileEventUi(def, eventUiBases),\n        instance: createEventInstance(def.defId, dateSpan.range),\n        range: dateSpan.range,\n        isStart: true,\n        isEnd: true,\n    };\n}\n\n/*\ngiven a function that resolves a result asynchronously.\nthe function can either call passed-in success and failure callbacks,\nor it can return a promise.\nif you need to pass additional params to func, bind them first.\n*/\nfunction unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {\n    // guard against success/failure callbacks being called more than once\n    // and guard against a promise AND callback being used together.\n    let isResolved = false;\n    let wrappedSuccess = function (res) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedSuccessCallback(res);\n        }\n    };\n    let wrappedFailure = function (error) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedFailureCallback(error);\n        }\n    };\n    let res = func(wrappedSuccess, wrappedFailure);\n    if (res && typeof res.then === 'function') {\n        res.then(wrappedSuccess, wrappedFailure);\n    }\n}\n\nclass JsonRequestError extends Error {\n    constructor(message, response) {\n        super(message);\n        this.response = response;\n    }\n}\nfunction requestJson(method, url, params) {\n    method = method.toUpperCase();\n    const fetchOptions = {\n        method,\n    };\n    if (method === 'GET') {\n        url += (url.indexOf('?') === -1 ? '?' : '&') +\n            new URLSearchParams(params);\n    }\n    else {\n        fetchOptions.body = new URLSearchParams(params);\n        fetchOptions.headers = {\n            'Content-Type': 'application/x-www-form-urlencoded',\n        };\n    }\n    return fetch(url, fetchOptions).then((fetchRes) => {\n        if (fetchRes.ok) {\n            return fetchRes.json().then((parsedResponse) => {\n                return [parsedResponse, fetchRes];\n            }, () => {\n                throw new JsonRequestError('Failure parsing JSON', fetchRes);\n            });\n        }\n        else {\n            throw new JsonRequestError('Request failed', fetchRes);\n        }\n    });\n}\n\nlet canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n    if (canVGrowWithinCell == null) {\n        canVGrowWithinCell = computeCanVGrowWithinCell();\n    }\n    return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n    // for SSR, because this function is call immediately at top-level\n    // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n    if (typeof document === 'undefined') {\n        return true;\n    }\n    let el = document.createElement('div');\n    el.style.position = 'absolute';\n    el.style.top = '0px';\n    el.style.left = '0px';\n    el.innerHTML = '<table><tr><td><div></div></td></tr></table>';\n    el.querySelector('table').style.height = '100px';\n    el.querySelector('div').style.height = '100%';\n    document.body.appendChild(el);\n    let div = el.querySelector('div');\n    let possible = div.offsetHeight > 0;\n    document.body.removeChild(el);\n    return possible;\n}\n\nclass CalendarRoot extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            forPrint: false,\n        };\n        this.handleBeforePrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: true });\n            });\n        };\n        this.handleAfterPrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: false });\n            });\n        };\n    }\n    render() {\n        let { props } = this;\n        let { options } = props;\n        let { forPrint } = this.state;\n        let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n        let height = (!isHeightAuto && options.height != null) ? options.height : '';\n        let classNames = [\n            'fc',\n            forPrint ? 'fc-media-print' : 'fc-media-screen',\n            `fc-direction-${options.direction}`,\n            props.theme.getClass('root'),\n        ];\n        if (!getCanVGrowWithinCell()) {\n            classNames.push('fc-liquid-hack');\n        }\n        return props.children(classNames, height, isHeightAuto, forPrint);\n    }\n    componentDidMount() {\n        let { emitter } = this.props;\n        emitter.on('_beforeprint', this.handleBeforePrint);\n        emitter.on('_afterprint', this.handleAfterPrint);\n    }\n    componentWillUnmount() {\n        let { emitter } = this.props;\n        emitter.off('_beforeprint', this.handleBeforePrint);\n        emitter.off('_afterprint', this.handleAfterPrint);\n    }\n}\n\nclass Interaction {\n    constructor(settings) {\n        this.component = settings.component;\n        this.isHitComboAllowed = settings.isHitComboAllowed || null;\n    }\n    destroy() {\n    }\n}\nfunction parseInteractionSettings(component, input) {\n    return {\n        component,\n        el: input.el,\n        useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n        isHitComboAllowed: input.isHitComboAllowed || null,\n    };\n}\nfunction interactionSettingsToStore(settings) {\n    return {\n        [settings.component.uid]: settings,\n    };\n}\n// global state\nconst interactionSettingsStore = {};\n\nclass NowTimer extends Component {\n    constructor(props, context) {\n        super(props, context);\n        this.handleRefresh = () => {\n            let timing = this.computeTiming();\n            if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {\n                this.setState(timing.state);\n            }\n            this.clearTimeout();\n            this.setTimeout(timing.waitMs);\n        };\n        this.handleVisibilityChange = () => {\n            if (!document.hidden) {\n                this.handleRefresh();\n            }\n        };\n        this.state = this.computeTiming().state;\n    }\n    render() {\n        let { props, state } = this;\n        return props.children(state.nowDate, state.todayRange);\n    }\n    componentDidMount() {\n        this.setTimeout();\n        this.context.nowManager.addResetListener(this.handleRefresh);\n        // fired tab becomes visible after being hidden\n        document.addEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.unit !== this.props.unit) {\n            this.clearTimeout();\n            this.setTimeout();\n        }\n    }\n    componentWillUnmount() {\n        this.clearTimeout();\n        this.context.nowManager.removeResetListener(this.handleRefresh);\n        document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    computeTiming() {\n        let { props, context } = this;\n        let unroundedNow = context.nowManager.getDateMarker();\n        let { nowIndicatorSnap } = context.options;\n        if (nowIndicatorSnap === 'auto') {\n            nowIndicatorSnap =\n                // large unit?\n                /year|month|week|day/.test(props.unit) ||\n                    // if slotDuration 30 mins for example, would NOT appear to snap (legacy behavior)\n                    (props.unitValue || 1) === 1;\n        }\n        let nowDate;\n        let waitMs;\n        if (nowIndicatorSnap) {\n            nowDate = context.dateEnv.startOf(unroundedNow, props.unit); // aka currentUnitStart\n            let nextUnitStart = context.dateEnv.add(nowDate, createDuration(1, props.unit));\n            waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n        }\n        else {\n            nowDate = unroundedNow;\n            waitMs = 1000 * 60; // 1 minute\n        }\n        // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n        // ensure no longer than a day\n        waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n        return {\n            state: { nowDate, todayRange: buildDayRange(nowDate) },\n            waitMs,\n        };\n    }\n    setTimeout(waitMs = this.computeTiming().waitMs) {\n        // NOTE: timeout could take longer than expected if tab sleeps,\n        // which is why we listen to 'visibilitychange'\n        this.timeoutId = setTimeout(() => {\n            // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more\n            // This is why use use same waitMs from computeTiming, so we don't skip an interval while\n            // .setState() is executing\n            const timing = this.computeTiming();\n            this.setState(timing.state, () => {\n                this.setTimeout(timing.waitMs);\n            });\n        }, waitMs);\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n        }\n    }\n}\nNowTimer.contextType = ViewContextType;\nfunction buildDayRange(date) {\n    let start = startOfDay(date);\n    let end = addDays(start, 1);\n    return { start, end };\n}\n\nclass CalendarImpl {\n    getCurrentData() {\n        return this.currentDataManager.getCurrentData();\n    }\n    dispatch(action) {\n        this.currentDataManager.dispatch(action);\n    }\n    get view() { return this.getCurrentData().viewApi; }\n    batchRendering(callback) {\n        callback();\n    }\n    updateSize() {\n        this.trigger('_resize', true);\n    }\n    // Options\n    // -----------------------------------------------------------------------------------------------------------------\n    setOption(name, val) {\n        this.dispatch({\n            type: 'SET_OPTION',\n            optionName: name,\n            rawOptionValue: val,\n        });\n    }\n    getOption(name) {\n        return this.currentDataManager.currentCalendarOptionsInput[name];\n    }\n    getAvailableLocaleCodes() {\n        return Object.keys(this.getCurrentData().availableRawLocales);\n    }\n    // Trigger\n    // -----------------------------------------------------------------------------------------------------------------\n    on(handlerName, handler) {\n        let { currentDataManager } = this;\n        if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n            currentDataManager.emitter.on(handlerName, handler);\n        }\n        else {\n            console.warn(`Unknown listener name '${handlerName}'`);\n        }\n    }\n    off(handlerName, handler) {\n        this.currentDataManager.emitter.off(handlerName, handler);\n    }\n    // not meant for public use\n    trigger(handlerName, ...args) {\n        this.currentDataManager.emitter.trigger(handlerName, ...args);\n    }\n    // View\n    // -----------------------------------------------------------------------------------------------------------------\n    changeView(viewType, dateOrRange) {\n        this.batchRendering(() => {\n            this.unselect();\n            if (dateOrRange) {\n                if (dateOrRange.start && dateOrRange.end) { // a range\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                    });\n                    this.dispatch({\n                        type: 'SET_OPTION',\n                        optionName: 'visibleRange',\n                        rawOptionValue: dateOrRange,\n                    });\n                }\n                else {\n                    let { dateEnv } = this.getCurrentData();\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                        dateMarker: dateEnv.createMarker(dateOrRange),\n                    });\n                }\n            }\n            else {\n                this.dispatch({\n                    type: 'CHANGE_VIEW_TYPE',\n                    viewType,\n                });\n            }\n        });\n    }\n    // Forces navigation to a view for the given date.\n    // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n    // needs to change\n    zoomTo(dateMarker, viewType) {\n        let state = this.getCurrentData();\n        let spec;\n        viewType = viewType || 'day'; // day is default zoom\n        spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n        this.unselect();\n        if (spec) {\n            this.dispatch({\n                type: 'CHANGE_VIEW_TYPE',\n                viewType: spec.type,\n                dateMarker,\n            });\n        }\n        else {\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker,\n            });\n        }\n    }\n    // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n    // Preference is given to views that have corresponding buttons.\n    getUnitViewSpec(unit) {\n        let { viewSpecs, toolbarConfig } = this.getCurrentData();\n        let viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n        let i;\n        let spec;\n        for (let viewType in viewSpecs) {\n            viewTypes.push(viewType);\n        }\n        for (i = 0; i < viewTypes.length; i += 1) {\n            spec = viewSpecs[viewTypes[i]];\n            if (spec) {\n                if (spec.singleUnit === unit) {\n                    return spec;\n                }\n            }\n        }\n        return null;\n    }\n    // Current Date\n    // -----------------------------------------------------------------------------------------------------------------\n    prev() {\n        this.unselect();\n        this.dispatch({ type: 'PREV' });\n    }\n    next() {\n        this.unselect();\n        this.dispatch({ type: 'NEXT' });\n    }\n    prevYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n        });\n    }\n    nextYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n        });\n    }\n    today() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.nowManager.getDateMarker(),\n        });\n    }\n    gotoDate(zonedDateInput) {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.createMarker(zonedDateInput),\n        });\n    }\n    incrementDate(deltaInput) {\n        let state = this.getCurrentData();\n        let delta = createDuration(deltaInput);\n        if (delta) { // else, warn about invalid input?\n            this.unselect();\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker: state.dateEnv.add(state.currentDate, delta),\n            });\n        }\n    }\n    getDate() {\n        let state = this.getCurrentData();\n        return state.dateEnv.toDate(state.currentDate);\n    }\n    // Date Formatting Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    formatDate(d, formatter) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n    }\n    // `settings` is for formatter AND isEndExclusive\n    formatRange(d0, d1, settings) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n    }\n    formatIso(d, omitTime) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime });\n    }\n    // Date Selection / Event Selection / DayClick\n    // -----------------------------------------------------------------------------------------------------------------\n    select(dateOrObj, endDate) {\n        let selectionInput;\n        if (endDate == null) {\n            if (dateOrObj.start != null) {\n                selectionInput = dateOrObj;\n            }\n            else {\n                selectionInput = {\n                    start: dateOrObj,\n                    end: null,\n                };\n            }\n        }\n        else {\n            selectionInput = {\n                start: dateOrObj,\n                end: endDate,\n            };\n        }\n        let state = this.getCurrentData();\n        let selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n        if (selection) { // throw parse error otherwise?\n            this.dispatch({ type: 'SELECT_DATES', selection });\n            triggerDateSelect(selection, null, state);\n        }\n    }\n    unselect(pev) {\n        let state = this.getCurrentData();\n        if (state.dateSelection) {\n            this.dispatch({ type: 'UNSELECT_DATES' });\n            triggerDateUnselect(pev, state);\n        }\n    }\n    // Public Events API\n    // -----------------------------------------------------------------------------------------------------------------\n    addEvent(eventInput, sourceInput) {\n        if (eventInput instanceof EventImpl) {\n            let def = eventInput._def;\n            let instance = eventInput._instance;\n            let currentData = this.getCurrentData();\n            // not already present? don't want to add an old snapshot\n            if (!currentData.eventStore.defs[def.defId]) {\n                this.dispatch({\n                    type: 'ADD_EVENTS',\n                    eventStore: eventTupleToStore({ def, instance }), // TODO: better util for two args?\n                });\n                this.triggerEventAdd(eventInput);\n            }\n            return eventInput;\n        }\n        let state = this.getCurrentData();\n        let eventSource;\n        if (sourceInput instanceof EventSourceImpl) {\n            eventSource = sourceInput.internalEventSource;\n        }\n        else if (typeof sourceInput === 'boolean') {\n            if (sourceInput) { // true. part of the first event source\n                [eventSource] = hashValuesToArray(state.eventSources);\n            }\n        }\n        else if (sourceInput != null) { // an ID. accepts a number too\n            let sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n            if (!sourceApi) {\n                console.warn(`Could not find an event source with ID \"${sourceInput}\"`); // TODO: test\n                return null;\n            }\n            eventSource = sourceApi.internalEventSource;\n        }\n        let tuple = parseEvent(eventInput, eventSource, state, false);\n        if (tuple) {\n            let newEventApi = new EventImpl(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n            this.dispatch({\n                type: 'ADD_EVENTS',\n                eventStore: eventTupleToStore(tuple),\n            });\n            this.triggerEventAdd(newEventApi);\n            return newEventApi;\n        }\n        return null;\n    }\n    triggerEventAdd(eventApi) {\n        let { emitter } = this.getCurrentData();\n        emitter.trigger('eventAdd', {\n            event: eventApi,\n            relatedEvents: [],\n            revert: () => {\n                this.dispatch({\n                    type: 'REMOVE_EVENTS',\n                    eventStore: eventApiToStore(eventApi),\n                });\n            },\n        });\n    }\n    // TODO: optimize\n    getEventById(id) {\n        let state = this.getCurrentData();\n        let { defs, instances } = state.eventStore;\n        id = String(id);\n        for (let defId in defs) {\n            let def = defs[defId];\n            if (def.publicId === id) {\n                if (def.recurringDef) {\n                    return new EventImpl(state, def, null);\n                }\n                for (let instanceId in instances) {\n                    let instance = instances[instanceId];\n                    if (instance.defId === def.defId) {\n                        return new EventImpl(state, def, instance);\n                    }\n                }\n            }\n        }\n        return null;\n    }\n    getEvents() {\n        let currentData = this.getCurrentData();\n        return buildEventApis(currentData.eventStore, currentData);\n    }\n    removeAllEvents() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n    }\n    // Public Event Sources API\n    // -----------------------------------------------------------------------------------------------------------------\n    getEventSources() {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        let sourceApis = [];\n        for (let internalId in sourceHash) {\n            sourceApis.push(new EventSourceImpl(state, sourceHash[internalId]));\n        }\n        return sourceApis;\n    }\n    getEventSourceById(id) {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        id = String(id);\n        for (let sourceId in sourceHash) {\n            if (sourceHash[sourceId].publicId === id) {\n                return new EventSourceImpl(state, sourceHash[sourceId]);\n            }\n        }\n        return null;\n    }\n    addEventSource(sourceInput) {\n        let state = this.getCurrentData();\n        if (sourceInput instanceof EventSourceImpl) {\n            // not already present? don't want to add an old snapshot\n            if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n                this.dispatch({\n                    type: 'ADD_EVENT_SOURCES',\n                    sources: [sourceInput.internalEventSource],\n                });\n            }\n            return sourceInput;\n        }\n        let eventSource = parseEventSource(sourceInput, state);\n        if (eventSource) { // TODO: error otherwise?\n            this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n            return new EventSourceImpl(state, eventSource);\n        }\n        return null;\n    }\n    removeAllEventSources() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n    }\n    refetchEvents() {\n        this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n    }\n    // Scroll\n    // -----------------------------------------------------------------------------------------------------------------\n    scrollToTime(timeInput) {\n        let time = createDuration(timeInput);\n        if (time) {\n            this.trigger('_scrollRequest', { time });\n        }\n    }\n}\n\nfunction pointInsideRect(point, rect) {\n    return point.left >= rect.left &&\n        point.left < rect.right &&\n        point.top >= rect.top &&\n        point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n    let res = {\n        left: Math.max(rect1.left, rect2.left),\n        right: Math.min(rect1.right, rect2.right),\n        top: Math.max(rect1.top, rect2.top),\n        bottom: Math.min(rect1.bottom, rect2.bottom),\n    };\n    if (res.left < res.right && res.top < res.bottom) {\n        return res;\n    }\n    return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n    return {\n        left: rect.left + deltaX,\n        right: rect.right + deltaX,\n        top: rect.top + deltaY,\n        bottom: rect.bottom + deltaY,\n    };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n    return {\n        left: Math.min(Math.max(point.left, rect.left), rect.right),\n        top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n    };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n    return {\n        left: (rect.left + rect.right) / 2,\n        top: (rect.top + rect.bottom) / 2,\n    };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n    return {\n        left: point1.left - point2.left,\n        top: point1.top - point2.top,\n    };\n}\n\nconst EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nclass Splitter {\n    constructor() {\n        this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n        this.splitDateSelection = memoize(this._splitDateSpan);\n        this.splitEventStore = memoize(this._splitEventStore);\n        this.splitIndividualUi = memoize(this._splitIndividualUi);\n        this.splitEventDrag = memoize(this._splitInteraction);\n        this.splitEventResize = memoize(this._splitInteraction);\n        this.eventUiBuilders = {}; // TODO: typescript protection\n    }\n    splitProps(props) {\n        let keyInfos = this.getKeyInfo(props);\n        let defKeys = this.getKeysForEventDefs(props.eventStore);\n        let dateSelections = this.splitDateSelection(props.dateSelection);\n        let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n        let eventStores = this.splitEventStore(props.eventStore, defKeys);\n        let eventDrags = this.splitEventDrag(props.eventDrag);\n        let eventResizes = this.splitEventResize(props.eventResize);\n        let splitProps = {};\n        this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey));\n        for (let key in keyInfos) {\n            let keyInfo = keyInfos[key];\n            let eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n            let buildEventUi = this.eventUiBuilders[key];\n            splitProps[key] = {\n                businessHours: keyInfo.businessHours || props.businessHours,\n                dateSelection: dateSelections[key] || null,\n                eventStore,\n                eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n                eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n                eventDrag: eventDrags[key] || null,\n                eventResize: eventResizes[key] || null,\n            };\n        }\n        return splitProps;\n    }\n    _splitDateSpan(dateSpan) {\n        let dateSpans = {};\n        if (dateSpan) {\n            let keys = this.getKeysForDateSpan(dateSpan);\n            for (let key of keys) {\n                dateSpans[key] = dateSpan;\n            }\n        }\n        return dateSpans;\n    }\n    _getKeysForEventDefs(eventStore) {\n        return mapHash(eventStore.defs, (eventDef) => this.getKeysForEventDef(eventDef));\n    }\n    _splitEventStore(eventStore, defKeys) {\n        let { defs, instances } = eventStore;\n        let splitStores = {};\n        for (let defId in defs) {\n            for (let key of defKeys[defId]) {\n                if (!splitStores[key]) {\n                    splitStores[key] = createEmptyEventStore();\n                }\n                splitStores[key].defs[defId] = defs[defId];\n            }\n        }\n        for (let instanceId in instances) {\n            let instance = instances[instanceId];\n            for (let key of defKeys[instance.defId]) {\n                if (splitStores[key]) { // must have already been created\n                    splitStores[key].instances[instanceId] = instance;\n                }\n            }\n        }\n        return splitStores;\n    }\n    _splitIndividualUi(eventUiBases, defKeys) {\n        let splitHashes = {};\n        for (let defId in eventUiBases) {\n            if (defId) { // not the '' key\n                for (let key of defKeys[defId]) {\n                    if (!splitHashes[key]) {\n                        splitHashes[key] = {};\n                    }\n                    splitHashes[key][defId] = eventUiBases[defId];\n                }\n            }\n        }\n        return splitHashes;\n    }\n    _splitInteraction(interaction) {\n        let splitStates = {};\n        if (interaction) {\n            let affectedStores = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n            // can't rely on defKeys because event data is mutated\n            let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n            let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n            let populate = (key) => {\n                if (!splitStates[key]) {\n                    splitStates[key] = {\n                        affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n                        mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n                        isEvent: interaction.isEvent,\n                    };\n                }\n            };\n            for (let key in affectedStores) {\n                populate(key);\n            }\n            for (let key in mutatedStores) {\n                populate(key);\n            }\n        }\n        return splitStates;\n    }\n}\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n    let baseParts = [];\n    if (allUi) {\n        baseParts.push(allUi);\n    }\n    if (eventUiForKey) {\n        baseParts.push(eventUiForKey);\n    }\n    let stuff = {\n        '': combineEventUis(baseParts),\n    };\n    if (individualUi) {\n        Object.assign(stuff, individualUi);\n    }\n    return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n    return {\n        dow: date.getUTCDay(),\n        isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),\n        isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n        isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n        isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n        isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n    };\n}\nfunction getDayClassNames(meta, theme) {\n    let classNames = [\n        'fc-day',\n        `fc-day-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-day-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-day-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-day-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-day-future');\n        }\n        if (meta.isOther) {\n            classNames.push('fc-day-other');\n        }\n    }\n    return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n    let classNames = [\n        'fc-slot',\n        `fc-slot-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-slot-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-slot-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-slot-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-slot-future');\n        }\n    }\n    return classNames;\n}\n\nconst DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nconst WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType = 'day', isTabbable = true) {\n    const { dateEnv, options, calendarApi } = context;\n    let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n    if (options.navLinks) {\n        let zonedDate = dateEnv.toDate(dateMarker);\n        const handleInteraction = (ev) => {\n            let customAction = viewType === 'day' ? options.navLinkDayClick :\n                viewType === 'week' ? options.navLinkWeekClick : null;\n            if (typeof customAction === 'function') {\n                customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n            }\n            else {\n                if (typeof customAction === 'string') {\n                    viewType = customAction;\n                }\n                calendarApi.zoomTo(dateMarker, viewType);\n            }\n        };\n        return Object.assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n            ? createAriaClickAttrs(handleInteraction)\n            : { onClick: handleInteraction }));\n    }\n    return { 'aria-label': dateStr };\n}\n\nlet _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n    if (_isRtlScrollbarOnLeft === null) {\n        _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n    }\n    return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n    let outerEl = document.createElement('div');\n    applyStyle(outerEl, {\n        position: 'absolute',\n        top: -1000,\n        left: 0,\n        border: 0,\n        padding: 0,\n        overflow: 'scroll',\n        direction: 'rtl',\n    });\n    outerEl.innerHTML = '<div></div>';\n    document.body.appendChild(outerEl);\n    let innerEl = outerEl.firstChild;\n    let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n    removeElement(outerEl);\n    return res;\n}\n\nlet _scrollbarWidths;\nfunction getScrollbarWidths() {\n    if (!_scrollbarWidths) {\n        _scrollbarWidths = computeScrollbarWidths();\n    }\n    return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n    let el = document.createElement('div');\n    el.style.overflow = 'scroll';\n    el.style.position = 'absolute';\n    el.style.top = '-9999px';\n    el.style.left = '-9999px';\n    document.body.appendChild(el);\n    let res = computeScrollbarWidthsForEl(el);\n    document.body.removeChild(el);\n    return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n    return {\n        x: el.offsetHeight - el.clientHeight,\n        y: el.offsetWidth - el.clientWidth,\n    };\n}\n\nfunction computeEdges(el, getPadding = false) {\n    let computedStyle = window.getComputedStyle(el);\n    let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n    let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n    let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n    let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n    let badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n    let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n    let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n    let res = {\n        borderLeft,\n        borderRight,\n        borderTop,\n        borderBottom,\n        scrollbarBottom,\n        scrollbarLeft: 0,\n        scrollbarRight: 0,\n    };\n    if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n        res.scrollbarLeft = scrollbarLeftRight;\n    }\n    else {\n        res.scrollbarRight = scrollbarLeftRight;\n    }\n    if (getPadding) {\n        res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n        res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n        res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n        res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n    }\n    return res;\n}\nfunction computeInnerRect(el, goWithinPadding = false, doFromWindowViewport) {\n    let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n    let edges = computeEdges(el, goWithinPadding);\n    let res = {\n        left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n        right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n        top: outerRect.top + edges.borderTop,\n        bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n    };\n    if (goWithinPadding) {\n        res.left += edges.paddingLeft;\n        res.right -= edges.paddingRight;\n        res.top += edges.paddingTop;\n        res.bottom -= edges.paddingBottom;\n    }\n    return res;\n}\nfunction computeRect(el) {\n    let rect = el.getBoundingClientRect();\n    return {\n        left: rect.left + window.scrollX,\n        top: rect.top + window.scrollY,\n        right: rect.right + window.scrollX,\n        bottom: rect.bottom + window.scrollY,\n    };\n}\nfunction computeClippedClientRect(el) {\n    let clippingParents = getClippingParents(el);\n    let rect = el.getBoundingClientRect();\n    for (let clippingParent of clippingParents) {\n        let intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n        if (intersection) {\n            rect = intersection;\n        }\n        else {\n            return null;\n        }\n    }\n    return rect;\n}\n// does not return window\nfunction getClippingParents(el) {\n    let parents = [];\n    while (el instanceof HTMLElement) { // will stop when gets to document or null\n        let computedStyle = window.getComputedStyle(el);\n        if (computedStyle.position === 'fixed') {\n            break;\n        }\n        if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n            parents.push(el);\n        }\n        el = el.parentNode;\n    }\n    return parents;\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nclass PositionCache {\n    constructor(originEl, els, isHorizontal, isVertical) {\n        this.els = els;\n        let originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n        if (isHorizontal) {\n            this.buildElHorizontals(originClientRect.left);\n        }\n        if (isVertical) {\n            this.buildElVerticals(originClientRect.top);\n        }\n    }\n    // Populates the left/right internal coordinate arrays\n    buildElHorizontals(originClientLeft) {\n        let lefts = [];\n        let rights = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            lefts.push(rect.left - originClientLeft);\n            rights.push(rect.right - originClientLeft);\n        }\n        this.lefts = lefts;\n        this.rights = rights;\n    }\n    // Populates the top/bottom internal coordinate arrays\n    buildElVerticals(originClientTop) {\n        let tops = [];\n        let bottoms = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            tops.push(rect.top - originClientTop);\n            bottoms.push(rect.bottom - originClientTop);\n        }\n        this.tops = tops;\n        this.bottoms = bottoms;\n    }\n    // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n    // If no intersection is made, returns undefined.\n    leftToIndex(leftPosition) {\n        let { lefts, rights } = this;\n        let len = lefts.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n    // If no intersection is made, returns undefined.\n    topToIndex(topPosition) {\n        let { tops, bottoms } = this;\n        let len = tops.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Gets the width of the element at the given index\n    getWidth(leftIndex) {\n        return this.rights[leftIndex] - this.lefts[leftIndex];\n    }\n    // Gets the height of the element at the given index\n    getHeight(topIndex) {\n        return this.bottoms[topIndex] - this.tops[topIndex];\n    }\n    similarTo(otherCache) {\n        return similarNumArrays(this.tops || [], otherCache.tops || []) &&\n            similarNumArrays(this.bottoms || [], otherCache.bottoms || []) &&\n            similarNumArrays(this.lefts || [], otherCache.lefts || []) &&\n            similarNumArrays(this.rights || [], otherCache.rights || []);\n    }\n}\nfunction similarNumArrays(a, b) {\n    const len = a.length;\n    if (len !== b.length) {\n        return false;\n    }\n    for (let i = 0; i < len; i++) {\n        if (Math.round(a[i]) !== Math.round(b[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nclass ScrollController {\n    getMaxScrollTop() {\n        return this.getScrollHeight() - this.getClientHeight();\n    }\n    getMaxScrollLeft() {\n        return this.getScrollWidth() - this.getClientWidth();\n    }\n    canScrollVertically() {\n        return this.getMaxScrollTop() > 0;\n    }\n    canScrollHorizontally() {\n        return this.getMaxScrollLeft() > 0;\n    }\n    canScrollUp() {\n        return this.getScrollTop() > 0;\n    }\n    canScrollDown() {\n        return this.getScrollTop() < this.getMaxScrollTop();\n    }\n    canScrollLeft() {\n        return this.getScrollLeft() > 0;\n    }\n    canScrollRight() {\n        return this.getScrollLeft() < this.getMaxScrollLeft();\n    }\n}\nclass ElementScrollController extends ScrollController {\n    constructor(el) {\n        super();\n        this.el = el;\n    }\n    getScrollTop() {\n        return this.el.scrollTop;\n    }\n    getScrollLeft() {\n        return this.el.scrollLeft;\n    }\n    setScrollTop(top) {\n        this.el.scrollTop = top;\n    }\n    setScrollLeft(left) {\n        this.el.scrollLeft = left;\n    }\n    getScrollWidth() {\n        return this.el.scrollWidth;\n    }\n    getScrollHeight() {\n        return this.el.scrollHeight;\n    }\n    getClientHeight() {\n        return this.el.clientHeight;\n    }\n    getClientWidth() {\n        return this.el.clientWidth;\n    }\n}\nclass WindowScrollController extends ScrollController {\n    getScrollTop() {\n        return window.scrollY;\n    }\n    getScrollLeft() {\n        return window.scrollX;\n    }\n    setScrollTop(n) {\n        window.scroll(window.scrollX, n);\n    }\n    setScrollLeft(n) {\n        window.scroll(n, window.scrollY);\n    }\n    getScrollWidth() {\n        return document.documentElement.scrollWidth;\n    }\n    getScrollHeight() {\n        return document.documentElement.scrollHeight;\n    }\n    getClientHeight() {\n        return document.documentElement.clientHeight;\n    }\n    getClientWidth() {\n        return document.documentElement.clientWidth;\n    }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nclass DateComponent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.uid = guid();\n    }\n    // Hit System\n    // -----------------------------------------------------------------------------------------------------------------\n    prepareHits() {\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        return null; // this should be abstract\n    }\n    // Pointer Interaction Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    isValidSegDownEl(el) {\n        return !this.props.eventDrag && // HACK\n            !this.props.eventResize && // HACK\n            !elementClosest(el, '.fc-event-mirror');\n    }\n    isValidDateDownEl(el) {\n        return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n            !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n            !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n            !elementClosest(el, '.fc-popover'); // hack\n    }\n}\n\nclass NamedTimeZoneImpl {\n    constructor(timeZoneName) {\n        this.timeZoneName = timeZoneName;\n    }\n}\n\nclass SegHierarchy {\n    constructor(getEntryThickness = (entry) => {\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return entry.thickness || 1;\n    }) {\n        this.getEntryThickness = getEntryThickness;\n        // settings\n        this.strictOrder = false;\n        this.allowReslicing = false;\n        this.maxCoord = -1; // -1 means no max\n        this.maxStackCnt = -1; // -1 means no max\n        this.levelCoords = []; // ordered\n        this.entriesByLevel = []; // parallel with levelCoords\n        this.stackCnts = {}; // TODO: use better technique!?\n    }\n    addSegs(inputs) {\n        let hiddenEntries = [];\n        for (let input of inputs) {\n            this.insertEntry(input, hiddenEntries);\n        }\n        return hiddenEntries;\n    }\n    insertEntry(entry, hiddenEntries) {\n        let insertion = this.findInsertion(entry);\n        if (this.isInsertionValid(insertion, entry)) {\n            this.insertEntryAt(entry, insertion);\n        }\n        else {\n            this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n        }\n    }\n    isInsertionValid(insertion, entry) {\n        return (this.maxCoord === -1 || insertion.levelCoord + this.getEntryThickness(entry) <= this.maxCoord) &&\n            (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        if (this.allowReslicing && insertion.touchingEntry) {\n            const hiddenEntry = Object.assign(Object.assign({}, entry), { span: intersectSpans(entry.span, insertion.touchingEntry.span) });\n            hiddenEntries.push(hiddenEntry);\n            this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n        }\n        else {\n            hiddenEntries.push(entry);\n        }\n    }\n    /*\n    Does NOT add what hit the `barrier` into hiddenEntries. Should already be done.\n    */\n    splitEntry(entry, barrier, hiddenEntries) {\n        let entrySpan = entry.span;\n        let barrierSpan = barrier.span;\n        if (entrySpan.start < barrierSpan.start) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: entrySpan.start, end: barrierSpan.start },\n            }, hiddenEntries);\n        }\n        if (entrySpan.end > barrierSpan.end) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: barrierSpan.end, end: entrySpan.end },\n            }, hiddenEntries);\n        }\n    }\n    insertEntryAt(entry, insertion) {\n        let { entriesByLevel, levelCoords } = this;\n        if (insertion.lateral === -1) {\n            // create a new level\n            insertAt(levelCoords, insertion.level, insertion.levelCoord);\n            insertAt(entriesByLevel, insertion.level, [entry]);\n        }\n        else {\n            // insert into existing level\n            insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n        }\n        this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n    }\n    /*\n    does not care about limits\n    */\n    findInsertion(newEntry) {\n        let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this;\n        let levelCnt = levelCoords.length;\n        let candidateCoord = 0;\n        let touchingLevel = -1;\n        let touchingLateral = -1;\n        let touchingEntry = null;\n        let stackCnt = 0;\n        for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n            const trackingCoord = levelCoords[trackingLevel];\n            // if the current level is past the placed entry, we have found a good empty space and can stop.\n            // if strictOrder, keep finding more lateral intersections.\n            if (!strictOrder && trackingCoord >= candidateCoord + this.getEntryThickness(newEntry)) {\n                break;\n            }\n            let trackingEntries = entriesByLevel[trackingLevel];\n            let trackingEntry;\n            let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n            let lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n            while ( // loop through entries that horizontally intersect\n            (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n                trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n            ) {\n                let trackingEntryBottom = trackingCoord + this.getEntryThickness(trackingEntry);\n                // intersects into the top of the candidate?\n                if (trackingEntryBottom > candidateCoord) {\n                    candidateCoord = trackingEntryBottom;\n                    touchingEntry = trackingEntry;\n                    touchingLevel = trackingLevel;\n                    touchingLateral = lateralIndex;\n                }\n                // butts up against top of candidate? (will happen if just intersected as well)\n                if (trackingEntryBottom === candidateCoord) {\n                    // accumulate the highest possible stackCnt of the trackingEntries that butt up\n                    stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n                }\n                lateralIndex += 1;\n            }\n        }\n        // the destination level will be after touchingEntry's level. find it\n        let destLevel = 0;\n        if (touchingEntry) {\n            destLevel = touchingLevel + 1;\n            while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n                destLevel += 1;\n            }\n        }\n        // if adding to an existing level, find where to insert\n        let destLateral = -1;\n        if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n            destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n        }\n        return {\n            touchingLevel,\n            touchingLateral,\n            touchingEntry,\n            stackCnt,\n            levelCoord: candidateCoord,\n            level: destLevel,\n            lateral: destLateral,\n        };\n    }\n    // sorted by levelCoord (lowest to highest)\n    toRects() {\n        let { entriesByLevel, levelCoords } = this;\n        let levelCnt = entriesByLevel.length;\n        let rects = [];\n        for (let level = 0; level < levelCnt; level += 1) {\n            let entries = entriesByLevel[level];\n            let levelCoord = levelCoords[level];\n            for (let entry of entries) {\n                rects.push(Object.assign(Object.assign({}, entry), { thickness: this.getEntryThickness(entry), levelCoord }));\n            }\n        }\n        return rects;\n    }\n}\nfunction getEntrySpanEnd(entry) {\n    return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n    return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n    let merges = [];\n    for (let entry of entries) {\n        let filteredMerges = [];\n        let hungryMerge = {\n            span: entry.span,\n            entries: [entry],\n        };\n        for (let merge of merges) {\n            if (intersectSpans(merge.span, hungryMerge.span)) {\n                hungryMerge = {\n                    entries: merge.entries.concat(hungryMerge.entries),\n                    span: joinSpans(merge.span, hungryMerge.span),\n                };\n            }\n            else {\n                filteredMerges.push(merge);\n            }\n        }\n        filteredMerges.push(hungryMerge);\n        merges = filteredMerges;\n    }\n    return merges;\n}\nfunction joinSpans(span0, span1) {\n    return {\n        start: Math.min(span0.start, span1.start),\n        end: Math.max(span0.end, span1.end),\n    };\n}\nfunction intersectSpans(span0, span1) {\n    let start = Math.max(span0.start, span1.start);\n    let end = Math.min(span0.end, span1.end);\n    if (start < end) {\n        return { start, end };\n    }\n    return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n    arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n    let startIndex = 0;\n    let endIndex = a.length; // exclusive\n    if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n        return [0, 0];\n    }\n    if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n        return [endIndex, 0];\n    }\n    while (startIndex < endIndex) {\n        let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n        let middleVal = getItemVal(a[middleIndex]);\n        if (searchVal < middleVal) {\n            endIndex = middleIndex;\n        }\n        else if (searchVal > middleVal) {\n            startIndex = middleIndex + 1;\n        }\n        else { // equal!\n            return [middleIndex, 1];\n        }\n    }\n    return [startIndex, 0];\n}\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nclass ElementDragging {\n    constructor(el, selector) {\n        this.emitter = new Emitter();\n    }\n    destroy() {\n    }\n    setMirrorIsVisible(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setMirrorNeedsRevert(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setAutoScrollEnabled(bool) {\n        // optional\n    }\n}\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nconst config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nconst DRAG_META_REFINERS = {\n    startTime: createDuration,\n    duration: createDuration,\n    create: Boolean,\n    sourceId: String,\n};\nfunction parseDragMeta(raw) {\n    let { refined, extra } = refineProps(raw, DRAG_META_REFINERS);\n    return {\n        startTime: refined.startTime || null,\n        duration: refined.duration || null,\n        create: refined.create != null ? refined.create : true,\n        sourceId: refined.sourceId,\n        leftoverProps: extra,\n    };\n}\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n    // if more than one week row, or if there are a lot of columns with not much space,\n    // put just the day numbers will be in each cell\n    if (!datesRepDistinctDays || dayCnt > 10) {\n        return createFormatter({ weekday: 'short' }); // \"Sat\"\n    }\n    if (dayCnt > 1) {\n        return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n    }\n    return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nconst CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(renderProps) {\n    return renderProps.text;\n}\n\n// BAD name for this class now. used in the Header\nclass TableDateCell extends BaseComponent {\n    render() {\n        let { dateEnv, options, theme, viewApi } = this.context;\n        let { props } = this;\n        let { date, dateProfile } = props;\n        let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n        let classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        // if colCnt is 1, we are already in a day-view and don't need a navlink\n        let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n            ? buildNavLinkAttrs(this.context, date)\n            : {};\n        let publicDate = dateEnv.toDate(date);\n        // workaround for Luxon (and maybe moment) returning prior-days when start-of-day\n        // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633\n        if (dateEnv.namedTimeZoneImpl) {\n            publicDate = addMs(publicDate, 3600000); // add an hour\n        }\n        let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(InnerContainer, { elTag: \"a\", elAttrs: navLinkAttrs, elClasses: [\n                'fc-col-header-cell-cushion',\n                props.isSticky && 'fc-sticky',\n            ] }))))));\n    }\n}\n\nconst WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nclass TableDowCell extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { dateEnv, theme, viewApi, options } = this.context;\n        let date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n        let dateMeta = {\n            dow: props.dow,\n            isDisabled: false,\n            isFuture: false,\n            isPast: false,\n            isToday: false,\n            isOther: false,\n        };\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        let renderProps = Object.assign(Object.assign(Object.assign(Object.assign({ // TODO: make this public?\n            date }, dateMeta), { view: viewApi }), props.extraRenderProps), { text });\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                CLASS_NAME,\n                ...getDayClassNames(dateMeta, theme),\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n            createElement(InnerContent, { elTag: \"a\", elClasses: [\n                    'fc-col-header-cell-cushion',\n                    props.isSticky && 'fc-sticky',\n                ], elAttrs: {\n                    'aria-label': dateEnv.format(date, WEEKDAY_FORMAT),\n                } })))));\n    }\n}\n\nclass DayHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n    }\n    render() {\n        let { context } = this;\n        let { dates, dateProfile, datesRepDistinctDays, renderIntro } = this.props;\n        let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(\"tr\", { role: \"row\" },\n            renderIntro && renderIntro('day'),\n            dates.map((date) => (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))))))));\n    }\n}\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n    return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nclass DaySeriesModel {\n    constructor(range, dateProfileGenerator) {\n        let date = range.start;\n        let { end } = range;\n        let indices = [];\n        let dates = [];\n        let dayIndex = -1;\n        while (date < end) { // loop each day from start to end\n            if (dateProfileGenerator.isHiddenDay(date)) {\n                indices.push(dayIndex + 0.5); // mark that it's between indices\n            }\n            else {\n                dayIndex += 1;\n                indices.push(dayIndex);\n                dates.push(date);\n            }\n            date = addDays(date, 1);\n        }\n        this.dates = dates;\n        this.indices = indices;\n        this.cnt = dates.length;\n    }\n    sliceRange(range) {\n        let firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n        let lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n        let clippedFirstIndex = Math.max(0, firstIndex);\n        let clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n        // deal with in-between indices\n        clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n        clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n        if (clippedFirstIndex <= clippedLastIndex) {\n            return {\n                firstIndex: clippedFirstIndex,\n                lastIndex: clippedLastIndex,\n                isStart: firstIndex === clippedFirstIndex,\n                isEnd: lastIndex === clippedLastIndex,\n            };\n        }\n        return null;\n    }\n    // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n    // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n    // If before the first offset, returns a negative number.\n    // If after the last offset, returns an offset past the last cell offset.\n    // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n    getDateDayIndex(date) {\n        let { indices } = this;\n        let dayOffset = Math.floor(diffDays(this.dates[0], date));\n        if (dayOffset < 0) {\n            return indices[0] - 1;\n        }\n        if (dayOffset >= indices.length) {\n            return indices[indices.length - 1] + 1;\n        }\n        return indices[dayOffset];\n    }\n}\n\nclass DayTableModel {\n    constructor(daySeries, breakOnWeeks) {\n        let { dates } = daySeries;\n        let daysPerRow;\n        let firstDay;\n        let rowCnt;\n        if (breakOnWeeks) {\n            // count columns until the day-of-week repeats\n            firstDay = dates[0].getUTCDay();\n            for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n                if (dates[daysPerRow].getUTCDay() === firstDay) {\n                    break;\n                }\n            }\n            rowCnt = Math.ceil(dates.length / daysPerRow);\n        }\n        else {\n            rowCnt = 1;\n            daysPerRow = dates.length;\n        }\n        this.rowCnt = rowCnt;\n        this.colCnt = daysPerRow;\n        this.daySeries = daySeries;\n        this.cells = this.buildCells();\n        this.headerDates = this.buildHeaderDates();\n    }\n    buildCells() {\n        let rows = [];\n        for (let row = 0; row < this.rowCnt; row += 1) {\n            let cells = [];\n            for (let col = 0; col < this.colCnt; col += 1) {\n                cells.push(this.buildCell(row, col));\n            }\n            rows.push(cells);\n        }\n        return rows;\n    }\n    buildCell(row, col) {\n        let date = this.daySeries.dates[row * this.colCnt + col];\n        return {\n            key: date.toISOString(),\n            date,\n        };\n    }\n    buildHeaderDates() {\n        let dates = [];\n        for (let col = 0; col < this.colCnt; col += 1) {\n            dates.push(this.cells[0][col].date);\n        }\n        return dates;\n    }\n    sliceRange(range) {\n        let { colCnt } = this;\n        let seriesSeg = this.daySeries.sliceRange(range);\n        let segs = [];\n        if (seriesSeg) {\n            let { firstIndex, lastIndex } = seriesSeg;\n            let index = firstIndex;\n            while (index <= lastIndex) {\n                let row = Math.floor(index / colCnt);\n                let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n                segs.push({\n                    row,\n                    firstCol: index % colCnt,\n                    lastCol: (nextIndex - 1) % colCnt,\n                    isStart: seriesSeg.isStart && index === firstIndex,\n                    isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n                });\n                index = nextIndex;\n            }\n        }\n        return segs;\n    }\n}\n\nclass Slicer {\n    constructor() {\n        this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n        this.sliceDateSelection = memoize(this._sliceDateSpan);\n        this.sliceEventStore = memoize(this._sliceEventStore);\n        this.sliceEventDrag = memoize(this._sliceInteraction);\n        this.sliceEventResize = memoize(this._sliceInteraction);\n        this.forceDayIfListItem = false; // hack\n    }\n    sliceProps(props, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        let { eventUiBases } = props;\n        let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs);\n        return {\n            dateSelectionSegs: this.sliceDateSelection(props.dateSelection, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs),\n            businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n            fgEventSegs: eventSegs.fg,\n            bgEventSegs: eventSegs.bg,\n            eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventSelection: props.eventSelection,\n        }; // TODO: give interactionSegs?\n    }\n    sliceNowDate(// does not memoize\n    date, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        return this._sliceDateSpan({ range: { start: date, end: addMs(date, 1) }, allDay: false }, // add 1 ms, protect against null range\n        dateProfile, nextDayThreshold, {}, context, ...extraArgs);\n    }\n    _sliceBusinessHours(businessHours, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        if (!businessHours) {\n            return [];\n        }\n        return this._sliceEventStore(expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), {}, dateProfile, nextDayThreshold, ...extraArgs).bg;\n    }\n    _sliceEventStore(eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (eventStore) {\n            let rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n            return {\n                bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n                fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            };\n        }\n        return { bg: [], fg: [] };\n    }\n    _sliceInteraction(interaction, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (!interaction) {\n            return null;\n        }\n        let rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n        return {\n            segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            affectedInstances: interaction.affectedEvents.instances,\n            isEvent: interaction.isEvent,\n        };\n    }\n    _sliceDateSpan(dateSpan, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs) {\n        if (!dateSpan) {\n            return [];\n        }\n        let activeRange = computeActiveRange(dateProfile, Boolean(nextDayThreshold));\n        let activeDateSpanRange = intersectRanges(dateSpan.range, activeRange);\n        if (activeDateSpanRange) {\n            dateSpan = Object.assign(Object.assign({}, dateSpan), { range: activeDateSpanRange });\n            let eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n            let segs = this.sliceRange(dateSpan.range, ...extraArgs);\n            for (let seg of segs) {\n                seg.eventRange = eventRange;\n            }\n            return segs;\n        }\n        return [];\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRanges(eventRanges, extraArgs) {\n        let segs = [];\n        for (let eventRange of eventRanges) {\n            segs.push(...this.sliceEventRange(eventRange, extraArgs));\n        }\n        return segs;\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRange(eventRange, extraArgs) {\n        let dateRange = eventRange.range;\n        // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n        if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n            dateRange = {\n                start: dateRange.start,\n                end: addDays(dateRange.start, 1),\n            };\n        }\n        let segs = this.sliceRange(dateRange, ...extraArgs);\n        for (let seg of segs) {\n            seg.eventRange = eventRange;\n            seg.isStart = eventRange.isStart && seg.isStart;\n            seg.isEnd = eventRange.isEnd && seg.isEnd;\n        }\n        return segs;\n    }\n}\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n    let range = dateProfile.activeRange;\n    if (isComponentAllDay) {\n        return range;\n    }\n    return {\n        start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n        end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n    };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n    let { instances } = interaction.mutatedEvents;\n    for (let instanceId in instances) {\n        if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n            return false;\n        }\n    }\n    return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n    if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n        return false;\n    }\n    return isNewPropsValid({ dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n    let calendarState = context.getCurrentData();\n    let props = Object.assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n    return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta = {}, filterConfig) {\n    if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let currentState = context.getCurrentData();\n    let interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n    let subjectEventStore = interaction.mutatedEvents;\n    let subjectDefs = subjectEventStore.defs;\n    let subjectInstances = subjectEventStore.instances;\n    let subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n        state.eventUiBases :\n        { '': currentState.selectionConfig });\n    if (filterConfig) {\n        subjectConfigs = mapHash(subjectConfigs, filterConfig);\n    }\n    // exclude the subject events. TODO: exclude defs too?\n    let otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n    let otherDefs = otherEventStore.defs;\n    let otherInstances = otherEventStore.instances;\n    let otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n    for (let subjectInstanceId in subjectInstances) {\n        let subjectInstance = subjectInstances[subjectInstanceId];\n        let subjectRange = subjectInstance.range;\n        let subjectConfig = subjectConfigs[subjectInstance.defId];\n        let subjectDef = subjectDefs[subjectInstance.defId];\n        // constraint\n        if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n            return false;\n        }\n        // overlap\n        let { eventOverlap } = context.options;\n        let eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n        for (let otherInstanceId in otherInstances) {\n            let otherInstance = otherInstances[otherInstanceId];\n            // intersect! evaluate\n            if (rangesIntersect(subjectRange, otherInstance.range)) {\n                let otherOverlap = otherConfigs[otherInstance.defId].overlap;\n                // consider the other event's overlap. only do this if the subject event is a \"real\" event\n                if (otherOverlap === false && interaction.isEvent) {\n                    return false;\n                }\n                if (subjectConfig.overlap === false) {\n                    return false;\n                }\n                if (eventOverlapFunc && !eventOverlapFunc(new EventImpl(context, otherDefs[otherInstance.defId], otherInstance), // still event\n                new EventImpl(context, subjectDef, subjectInstance))) {\n                    return false;\n                }\n            }\n        }\n        // allow (a function)\n        let calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n        for (let subjectAllow of subjectConfig.allows) {\n            let subjectDateSpan = Object.assign(Object.assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n            let origDef = calendarEventStore.defs[subjectDef.defId];\n            let origInstance = calendarEventStore.instances[subjectInstanceId];\n            let eventApi;\n            if (origDef) { // was previously in the calendar\n                eventApi = new EventImpl(context, origDef, origInstance);\n            }\n            else { // was an external event\n                eventApi = new EventImpl(context, subjectDef); // no instance, because had no dates\n            }\n            if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let relevantEventStore = state.eventStore;\n    let relevantDefs = relevantEventStore.defs;\n    let relevantInstances = relevantEventStore.instances;\n    let selection = state.dateSelection;\n    let selectionRange = selection.range;\n    let { selectionConfig } = context.getCurrentData();\n    if (filterConfig) {\n        selectionConfig = filterConfig(selectionConfig);\n    }\n    // constraint\n    if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n        return false;\n    }\n    // overlap\n    let { selectOverlap } = context.options;\n    let selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n    for (let relevantInstanceId in relevantInstances) {\n        let relevantInstance = relevantInstances[relevantInstanceId];\n        // intersect! evaluate\n        if (rangesIntersect(selectionRange, relevantInstance.range)) {\n            if (selectionConfig.overlap === false) {\n                return false;\n            }\n            if (selectOverlapFunc && !selectOverlapFunc(new EventImpl(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n                return false;\n            }\n        }\n    }\n    // allow (a function)\n    for (let selectionAllow of selectionConfig.allows) {\n        let fullDateSpan = Object.assign(Object.assign({}, dateSpanMeta), selection);\n        if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n            return false;\n        }\n    }\n    return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n    for (let constraint of constraints) {\n        if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n    if (constraint === 'businessHours') {\n        return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n    }\n    if (typeof constraint === 'string') { // an group ID\n        return eventStoreToRanges(filterEventStoreDefs(otherEventStore, (eventDef) => eventDef.groupId === constraint));\n    }\n    if (typeof constraint === 'object' && constraint) { // non-null object\n        return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n    }\n    return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n    let { instances } = eventStore;\n    let ranges = [];\n    for (let instanceId in instances) {\n        ranges.push(instances[instanceId].range);\n    }\n    return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n    for (let outerRange of outerRanges) {\n        if (rangeContainsRange(outerRange, innerRange)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nclass Scroller extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { props } = this;\n        let { liquid, liquidIsAbsolute } = props;\n        let isAbsolute = liquid && liquidIsAbsolute;\n        let className = ['fc-scroller'];\n        if (liquid) {\n            if (liquidIsAbsolute) {\n                className.push('fc-scroller-liquid-absolute');\n            }\n            else {\n                className.push('fc-scroller-liquid');\n            }\n        }\n        return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n                overflowX: props.overflowX,\n                overflowY: props.overflowY,\n                left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n                right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n                bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n                marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n                marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n                marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n                maxHeight: props.maxHeight || '',\n            } }, props.children));\n    }\n    needsXScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return false;\n        }\n        // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().width > realClientWidth) {\n                return true;\n            }\n        }\n        return false;\n    }\n    needsYScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return false;\n        }\n        // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().height > realClientHeight) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getXScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return 0;\n        }\n        return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n    getYScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return 0;\n        }\n        return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n}\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nclass RefMap {\n    constructor(masterCallback) {\n        this.masterCallback = masterCallback;\n        this.currentMap = {};\n        this.depths = {};\n        this.callbackMap = {};\n        this.handleValue = (val, key) => {\n            let { depths, currentMap } = this;\n            let removed = false;\n            let added = false;\n            if (val !== null) {\n                // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n                removed = (key in currentMap);\n                currentMap[key] = val;\n                depths[key] = (depths[key] || 0) + 1;\n                added = true;\n            }\n            else {\n                depths[key] -= 1;\n                if (!depths[key]) {\n                    delete currentMap[key];\n                    delete this.callbackMap[key];\n                    removed = true;\n                }\n            }\n            if (this.masterCallback) {\n                if (removed) {\n                    this.masterCallback(null, String(key));\n                }\n                if (added) {\n                    this.masterCallback(val, String(key));\n                }\n            }\n        };\n    }\n    createRef(key) {\n        let refCallback = this.callbackMap[key];\n        if (!refCallback) {\n            refCallback = this.callbackMap[key] = (val) => {\n                this.handleValue(val, String(key));\n            };\n        }\n        return refCallback;\n    }\n    // TODO: check callers that don't care about order. should use getAll instead\n    // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n    // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n    collect(startIndex, endIndex, step) {\n        return collectFromHash(this.currentMap, startIndex, endIndex, step);\n    }\n    getAll() {\n        return hashValuesToArray(this.currentMap);\n    }\n}\n\nfunction computeShrinkWidth(chunkEls) {\n    let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n    let largestWidth = 0;\n    for (let shrinkCell of shrinkCells) {\n        largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n    }\n    return Math.ceil(largestWidth); // <table> elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n    return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n    return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n        getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n    let { expandRows } = arg;\n    let content = typeof chunkConfig.content === 'function' ?\n        chunkConfig.content(arg) :\n        createElement('table', {\n            role: 'presentation',\n            className: [\n                chunkConfig.tableClassName,\n                sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n            ].join(' '),\n            style: {\n                minWidth: arg.tableMinWidth,\n                width: arg.clientWidth,\n                height: expandRows ? arg.clientHeight : '', // css `height` on a <table> serves as a min-height\n            },\n        }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n            role: 'presentation',\n        }, typeof chunkConfig.rowContent === 'function'\n            ? chunkConfig.rowContent(arg)\n            : chunkConfig.rowContent));\n    return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n    return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n    let colNodes = [];\n    /*\n    for ColProps with spans, it would have been great to make a single <col span=\"\">\n    HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n    SOLUTION: making individual <col> elements makes Chrome behave.\n    */\n    for (let colProps of cols) {\n        let span = colProps.span || 1;\n        for (let i = 0; i < span; i += 1) {\n            colNodes.push(createElement(\"col\", { style: {\n                    width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n                    minWidth: colProps.minWidth || '',\n                } }));\n        }\n    }\n    return createElement('colgroup', {}, ...colNodes);\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n    /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n    4 accounts for 2 2-pixel borders. TODO: better solution? */\n    return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n    for (let col of cols) {\n        if (col.width === 'shrink') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n    let classNames = [\n        'fc-scrollgrid',\n        context.theme.getClass('table'),\n    ];\n    if (liquid) {\n        classNames.push('fc-scrollgrid-liquid');\n    }\n    return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n    let classNames = [\n        'fc-scrollgrid-section',\n        `fc-scrollgrid-section-${sectionConfig.type}`,\n        sectionConfig.className, // used?\n    ];\n    if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n        classNames.push('fc-scrollgrid-section-liquid');\n    }\n    if (sectionConfig.isSticky) {\n        classNames.push('fc-scrollgrid-section-sticky');\n    }\n    return classNames;\n}\nfunction renderScrollShim(arg) {\n    return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n            width: arg.clientWidth,\n            minWidth: arg.tableMinWidth,\n        } }));\n}\nfunction getStickyHeaderDates(options) {\n    let { stickyHeaderDates } = options;\n    if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n        stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n    let { stickyFooterScrollbar } = options;\n    if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n        stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyFooterScrollbar;\n}\n\nclass SimpleScrollGrid extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.processCols = memoize((a) => a, isColPropsEqual); // so we get same `cols` props every time\n        // yucky to memoize VNodes, but much more efficient for consumers\n        this.renderMicroColGroup = memoize(renderMicroColGroup);\n        this.scrollerRefs = new RefMap();\n        this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n        this.state = {\n            shrinkWidth: null,\n            forceYScrollbars: false,\n            scrollerClientWidths: {},\n            scrollerClientHeights: {},\n        };\n        // TODO: can do a really simple print-view. dont need to join rows\n        this.handleSizing = () => {\n            this.safeSetState(Object.assign({ shrinkWidth: this.computeShrinkWidth() }, this.computeScrollerDims()));\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let sectionConfigs = props.sections || [];\n        let cols = this.processCols(props.cols);\n        let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n        let classNames = getScrollGridClassNames(props.liquid, context);\n        if (props.collapsibleWidth) {\n            classNames.push('fc-scrollgrid-collapsible');\n        }\n        // TODO: make DRY\n        let configCnt = sectionConfigs.length;\n        let configI = 0;\n        let currentConfig;\n        let headSectionNodes = [];\n        let bodySectionNodes = [];\n        let footSectionNodes = [];\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n            headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n            bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n            footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        // firefox bug: when setting height on table and there is a thead or tfoot,\n        // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n        // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n        // if so, use a simpler dom structure, jam everything into a lone tbody.\n        let isBuggy = !getCanVGrowWithinCell();\n        const roleAttrs = { role: 'rowgroup' };\n        return createElement('table', {\n            role: 'grid',\n            className: classNames.join(' '),\n            style: { height: props.height },\n        }, Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n    }\n    renderSection(sectionConfig, microColGroupNode, isHeader) {\n        if ('outerContent' in sectionConfig) {\n            return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n        }\n        return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n    }\n    renderChunkTd(sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n        if ('outerContent' in chunkConfig) {\n            return chunkConfig.outerContent;\n        }\n        let { props } = this;\n        let { forceYScrollbars, scrollerClientWidths, scrollerClientHeights } = this.state;\n        let needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n        let isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n        // for `!props.liquid` - is WHOLE scrollgrid natural height?\n        // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n        let overflowY = !props.liquid ? 'visible' :\n            forceYScrollbars ? 'scroll' :\n                !needsYScrolling ? 'hidden' :\n                    'auto';\n        let sectionKey = sectionConfig.key;\n        let content = renderChunkContent(sectionConfig, chunkConfig, {\n            tableColGroupNode: microColGroupNode,\n            tableMinWidth: '',\n            clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n            clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n            expandRows: sectionConfig.expandRows,\n            syncRowHeights: false,\n            rowSyncHeights: [],\n            reportRowHeightChange: () => { },\n        }, isHeader);\n        return createElement(isHeader ? 'th' : 'td', {\n            ref: chunkConfig.elRef,\n            role: 'presentation',\n        }, createElement(\"div\", { className: `fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}` },\n            createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n                : true }, content)));\n    }\n    _handleScrollerEl(scrollerEl, key) {\n        let section = getSectionByKey(this.props.sections, key);\n        if (section) {\n            setRef(section.chunk.scrollerElRef, scrollerEl);\n        }\n    }\n    componentDidMount() {\n        this.handleSizing();\n        this.context.addResizeHandler(this.handleSizing);\n    }\n    componentDidUpdate() {\n        // TODO: need better solution when state contains non-sizing things\n        this.handleSizing();\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n    }\n    computeShrinkWidth() {\n        return hasShrinkWidth(this.props.cols)\n            ? computeShrinkWidth(this.scrollerElRefs.getAll())\n            : 0;\n    }\n    computeScrollerDims() {\n        let scrollbarWidth = getScrollbarWidths();\n        let { scrollerRefs, scrollerElRefs } = this;\n        let forceYScrollbars = false;\n        let scrollerClientWidths = {};\n        let scrollerClientHeights = {};\n        for (let sectionKey in scrollerRefs.currentMap) {\n            let scroller = scrollerRefs.currentMap[sectionKey];\n            if (scroller && scroller.needsYScrolling()) {\n                forceYScrollbars = true;\n                break;\n            }\n        }\n        for (let section of this.props.sections) {\n            let sectionKey = section.key;\n            let scrollerEl = scrollerElRefs.currentMap[sectionKey];\n            if (scrollerEl) {\n                let harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n                scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n                    ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n                    : 0));\n                scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n            }\n        }\n        return { forceYScrollbars, scrollerClientWidths, scrollerClientHeights };\n    }\n}\nSimpleScrollGrid.addStateEquality({\n    scrollerClientWidths: isPropsEqual,\n    scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n    for (let section of sections) {\n        if (section.key === key) {\n            return section;\n        }\n    }\n    return null;\n}\n\nclass EventContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        // memo\n        this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n            if (el) {\n                setElSeg(el, this.props.seg);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { seg } = props;\n        const { eventRange } = seg;\n        const { ui } = eventRange;\n        const renderProps = {\n            event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),\n            view: context.viewApi,\n            timeText: props.timeText,\n            textColor: ui.textColor,\n            backgroundColor: ui.backgroundColor,\n            borderColor: ui.borderColor,\n            isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n            isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n            isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n            isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n            isStart: Boolean(seg.isStart),\n            isEnd: Boolean(seg.isEnd),\n            isPast: Boolean(props.isPast),\n            isFuture: Boolean(props.isFuture),\n            isToday: Boolean(props.isToday),\n            isSelected: Boolean(props.isSelected),\n            isDragging: Boolean(props.isDragging),\n            isResizing: Boolean(props.isResizing),\n        };\n        return (createElement(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [\n                ...getEventClassNames(renderProps),\n                ...seg.eventRange.ui.classNames,\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, generatorName: \"eventContent\", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));\n    }\n    componentDidUpdate(prevProps) {\n        if (this.el && this.props.seg !== prevProps.seg) {\n            setElSeg(this.el, this.props.seg);\n        }\n    }\n}\n\n// should not be a purecomponent\nclass StandardEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let { ui } = seg.eventRange;\n        let timeFormat = options.eventTimeFormat || props.defaultTimeFormat;\n        let timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props /* includes elRef */, { elTag: \"a\", elStyle: {\n                borderColor: ui.borderColor,\n                backgroundColor: ui.backgroundColor,\n            }, elAttrs: getSegAnchorAttrs(seg, context), defaultGenerator: renderInnerContent$1, timeText: timeText }), (InnerContent, eventContentArg) => (createElement(Fragment, null,\n            createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-event-main'], elStyle: { color: eventContentArg.textColor } }),\n            Boolean(eventContentArg.isStartResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" })),\n            Boolean(eventContentArg.isEndResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))))));\n    }\n}\nStandardEvent.addPropsEquality({\n    seg: isPropsEqual,\n});\nfunction renderInnerContent$1(innerProps) {\n    return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n        innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title-container\" },\n            createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nconst NowIndicatorContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { options } = context;\n    let renderProps = {\n        isAxis: props.isAxis,\n        date: context.dateEnv.toDate(props.date),\n        view: context.viewApi,\n    };\n    return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: \"nowIndicatorContent\", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n}));\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nclass DayCellContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n    }\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = this.refineRenderProps({\n            date: props.date,\n            dateProfile: props.dateProfile,\n            todayRange: props.todayRange,\n            isMonthStart: props.isMonthStart || false,\n            showDayNumber: props.showDayNumber,\n            extraRenderProps: props.extraRenderProps,\n            viewApi: context.viewApi,\n            dateEnv: context.dateEnv,\n            monthStartFormat: options.monthStartFormat,\n        });\n        return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [\n                ...getDayClassNames(renderProps, context.theme),\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, generatorName: \"dayCellContent\", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator: \n            // don't use custom classNames if disabled\n            renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));\n    }\n}\nfunction hasCustomDayCellContent(options) {\n    return Boolean(options.dayCellContent || hasCustomRenderingHandler('dayCellContent', options));\n}\nfunction refineRenderProps(raw) {\n    let { date, dateEnv, dateProfile, isMonthStart } = raw;\n    let dayMeta = getDateMeta(date, raw.todayRange, null, dateProfile);\n    let dayNumberText = raw.showDayNumber ? (dateEnv.format(date, isMonthStart ? raw.monthStartFormat : DAY_NUM_FORMAT)) : '';\n    return Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { isMonthStart,\n        dayNumberText }), raw.extraRenderProps);\n}\n\nclass BgEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { seg } = props;\n        return (createElement(EventContainer, { elTag: \"div\", elClasses: ['fc-bg-event'], elStyle: { backgroundColor: seg.eventRange.ui.backgroundColor }, defaultGenerator: renderInnerContent, seg: seg, timeText: \"\", isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, disableDragging: true, disableResizing: true }));\n    }\n}\nfunction renderInnerContent(props) {\n    let { title } = props.event;\n    return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\nfunction renderFill(fillType) {\n    return (createElement(\"div\", { className: `fc-${fillType}` }));\n}\n\nconst WeekNumberContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { dateEnv, options } = context;\n    let { date } = props;\n    let format = options.weekNumberFormat || props.defaultFormat;\n    let num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n    let text = dateEnv.format(date, format);\n    let renderProps = { num, text, date };\n    return (createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?\n    , { elRef: props.elRef, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: \"weekNumberContent\", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n}));\nfunction renderInner(innerProps) {\n    return innerProps.text;\n}\n\nconst PADDING_FROM_VIEWPORT = 10;\nclass Popover extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            titleId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            this.rootEl = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n        // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n        this.handleDocumentMouseDown = (ev) => {\n            // only hide the popover if the click happened outside the popover\n            const target = getEventTargetViaRoot(ev);\n            if (!this.rootEl.contains(target)) {\n                this.handleCloseClick();\n            }\n        };\n        this.handleDocumentKeyDown = (ev) => {\n            if (ev.key === 'Escape') {\n                this.handleCloseClick();\n            }\n        };\n        this.handleCloseClick = () => {\n            let { onClose } = this.props;\n            if (onClose) {\n                onClose();\n            }\n        };\n    }\n    render() {\n        let { theme, options } = this.context;\n        let { props, state } = this;\n        let classNames = [\n            'fc-popover',\n            theme.getClass('popover'),\n        ].concat(props.extraClassNames || []);\n        return createPortal(createElement(\"div\", Object.assign({}, props.extraAttrs, { id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId, ref: this.handleRootEl }),\n            createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n                createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n                createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n            createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n    }\n    componentDidMount() {\n        document.addEventListener('mousedown', this.handleDocumentMouseDown);\n        document.addEventListener('keydown', this.handleDocumentKeyDown);\n        this.updateSize();\n    }\n    componentWillUnmount() {\n        document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n        document.removeEventListener('keydown', this.handleDocumentKeyDown);\n    }\n    updateSize() {\n        let { isRtl } = this.context;\n        let { alignmentEl, alignGridTop } = this.props;\n        let { rootEl } = this;\n        let alignmentRect = computeClippedClientRect(alignmentEl);\n        if (alignmentRect) {\n            let popoverDims = rootEl.getBoundingClientRect();\n            // position relative to viewport\n            let popoverTop = alignGridTop\n                ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n                : alignmentRect.top;\n            let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n            // constrain\n            popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n            popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n            popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n            let origin = rootEl.offsetParent.getBoundingClientRect();\n            applyStyle(rootEl, {\n                top: popoverTop - origin.top,\n                left: popoverLeft - origin.left,\n            });\n        }\n    }\n}\n\nclass MorePopover extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.handleRootEl = (rootEl) => {\n            this.rootEl = rootEl;\n            if (rootEl) {\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    useEventCenter: false,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n    }\n    render() {\n        let { options, dateEnv } = this.context;\n        let { props } = this;\n        let { startDate, todayRange, dateProfile } = props;\n        let title = dateEnv.format(startDate, options.dayPopoverFormat);\n        return (createElement(DayCellContainer, { elRef: this.handleRootEl, date: startDate, dateProfile: dateProfile, todayRange: todayRange }, (InnerContent, renderProps, elAttrs) => (createElement(Popover, { elRef: elAttrs.ref, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(elAttrs.className || []), extraAttrs: elAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-more-popover-misc'] })),\n            props.children))));\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        let { rootEl, props } = this;\n        if (positionLeft >= 0 && positionLeft < elWidth &&\n            positionTop >= 0 && positionTop < elHeight) {\n            return {\n                dateProfile: props.dateProfile,\n                dateSpan: Object.assign({ allDay: !props.forceTimed, range: {\n                        start: props.startDate,\n                        end: props.endDate,\n                    } }, props.extraDateSpan),\n                dayEl: rootEl,\n                rect: {\n                    left: 0,\n                    top: 0,\n                    right: elWidth,\n                    bottom: elHeight,\n                },\n                layer: 1, // important when comparing with hits from other components\n            };\n        }\n        return null;\n    }\n}\n\nclass MoreLinkContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            isPopoverOpen: false,\n            popoverId: getUniqueDomId(),\n        };\n        this.handleLinkEl = (linkEl) => {\n            this.linkEl = linkEl;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, linkEl);\n            }\n        };\n        this.handleClick = (ev) => {\n            let { props, context } = this;\n            let { moreLinkClick } = context.options;\n            let date = computeRange(props).start;\n            function buildPublicSeg(seg) {\n                let { def, instance, range } = seg.eventRange;\n                return {\n                    event: new EventImpl(context, def, instance),\n                    start: context.dateEnv.toDate(range.start),\n                    end: context.dateEnv.toDate(range.end),\n                    isStart: seg.isStart,\n                    isEnd: seg.isEnd,\n                };\n            }\n            if (typeof moreLinkClick === 'function') {\n                moreLinkClick = moreLinkClick({\n                    date,\n                    allDay: Boolean(props.allDayDate),\n                    allSegs: props.allSegs.map(buildPublicSeg),\n                    hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n            }\n            if (!moreLinkClick || moreLinkClick === 'popover') {\n                this.setState({ isPopoverOpen: true });\n            }\n            else if (typeof moreLinkClick === 'string') { // a view name\n                context.calendarApi.zoomTo(date, moreLinkClick);\n            }\n        };\n        this.handlePopoverClose = () => {\n            this.setState({ isPopoverOpen: false });\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(ViewContextType.Consumer, null, (context) => {\n            let { viewApi, options, calendarApi } = context;\n            let { moreLinkText } = options;\n            let { moreCnt } = props;\n            let range = computeRange(props);\n            let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n                ? moreLinkText.call(calendarApi, moreCnt)\n                : `+${moreCnt} ${moreLinkText}`;\n            let hint = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n            let renderProps = {\n                num: moreCnt,\n                shortText: `+${moreCnt}`,\n                text,\n                view: viewApi,\n            };\n            return (createElement(Fragment, null,\n                Boolean(props.moreCnt) && (createElement(ContentContainer, { elTag: props.elTag || 'a', elRef: this.handleLinkEl, elClasses: [\n                        ...(props.elClasses || []),\n                        'fc-more-link',\n                    ], elStyle: props.elStyle, elAttrs: Object.assign(Object.assign(Object.assign({}, props.elAttrs), createAriaClickAttrs(this.handleClick)), { title: hint, 'aria-expanded': state.isPopoverOpen, 'aria-controls': state.isPopoverOpen ? state.popoverId : '' }), renderProps: renderProps, generatorName: \"moreLinkContent\", customGenerator: options.moreLinkContent, defaultGenerator: props.defaultGenerator || renderMoreLinkInner, classNameGenerator: options.moreLinkClassNames, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, props.children)),\n                state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: this.parentEl, alignmentEl: props.alignmentElRef ?\n                        props.alignmentElRef.current :\n                        this.linkEl, alignGridTop: props.alignGridTop, forceTimed: props.forceTimed, onClose: this.handlePopoverClose }, props.popoverContent()))));\n        }));\n    }\n    componentDidMount() {\n        this.updateParentEl();\n    }\n    componentDidUpdate() {\n        this.updateParentEl();\n    }\n    updateParentEl() {\n        if (this.linkEl) {\n            this.parentEl = elementClosest(this.linkEl, '.fc-view-harness');\n        }\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.text;\n}\nfunction computeRange(props) {\n    if (props.allDayDate) {\n        return {\n            start: props.allDayDate,\n            end: addDays(props.allDayDate, 1),\n        };\n    }\n    let { hiddenSegs } = props;\n    return {\n        start: computeEarliestSegStart(hiddenSegs),\n        end: computeLatestSegEnd(hiddenSegs),\n    };\n}\nfunction computeEarliestSegStart(segs) {\n    return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n    return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n    return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n    return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\nclass Store {\n    constructor() {\n        this.handlers = [];\n    }\n    set(value) {\n        this.currentValue = value;\n        for (let handler of this.handlers) {\n            handler(value);\n        }\n    }\n    subscribe(handler) {\n        this.handlers.push(handler);\n        if (this.currentValue !== undefined) {\n            handler(this.currentValue);\n        }\n    }\n}\n\n/*\nSubscribers will get a LIST of CustomRenderings\n*/\nclass CustomRenderingStore extends Store {\n    constructor() {\n        super(...arguments);\n        this.map = new Map();\n    }\n    // for consistent order\n    handle(customRendering) {\n        const { map } = this;\n        let updated = false;\n        if (customRendering.isActive) {\n            map.set(customRendering.id, customRendering);\n            updated = true;\n        }\n        else if (map.has(customRendering.id)) {\n            map.delete(customRendering.id);\n            updated = true;\n        }\n        if (updated) {\n            this.set(map);\n        }\n    }\n}\n\nexport { listenBySelector as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, rangeContainsMarker as G, createEmptyEventStore as H, reduceEventStore as I, rezoneEventStoreDates as J, mergeRawOptions as K, BASE_OPTION_REFINERS as L, CALENDAR_LISTENER_REFINERS as M, CALENDAR_OPTION_REFINERS as N, COMPLEX_OPTION_COMPARATORS as O, VIEW_OPTION_REFINERS as P, DateEnv as Q, DateProfileGenerator as R, createEventUi as S, Theme as T, parseBusinessHours as U, ViewContextType as V, setRef as W, Interaction as X, getElSeg as Y, elementClosest as Z, EventImpl as _, mapHash as a, preventDefault as a$, listenToHoverBySelector as a0, PureComponent as a1, buildViewContext as a2, getUniqueDomId as a3, parseInteractionSettings as a4, interactionSettingsStore as a5, NowTimer as a6, CalendarImpl as a7, flushSync as a8, CalendarRoot as a9, memoizeArraylike as aA, memoizeHashlike as aB, intersectRects as aC, pointInsideRect as aD, constrainPoint as aE, getRectCenter as aF, diffPoints as aG, translateRect as aH, compareObjs as aI, collectFromHash as aJ, findElements as aK, findDirectChildren as aL, removeElement as aM, applyStyle as aN, elementMatches as aO, getEventTargetViaRoot as aP, parseClassNames as aQ, getCanVGrowWithinCell as aR, mergeEventStores as aS, getRelevantEvents as aT, eventTupleToStore as aU, combineEventUis as aV, Splitter as aW, getDayClassNames as aX, getDateMeta as aY, getSlotClassNames as aZ, buildNavLinkAttrs as a_, RenderId as aa, ensureElHasStyles as ab, applyStyleProp as ac, sliceEventStore as ad, JsonRequestError as ae, createContext as af, refineProps as ag, createEventInstance as ah, parseEventDef as ai, refineEventDef as aj, padStart as ak, isInt as al, parseFieldSpecs as am, compareByFieldSpecs as an, flexibleCompare as ao, preventSelection as ap, allowSelection as aq, preventContextMenu as ar, allowContextMenu as as, compareNumbers as at, enableCursor as au, disableCursor as av, computeVisibleDayRange as aw, isMultiDayRange as ax, diffDates as ay, removeExact as az, buildViewClassNames as b, renderMicroColGroup as b$, whenTransitionDone as b0, computeInnerRect as b1, computeEdges as b2, getClippingParents as b3, computeRect as b4, rangesEqual as b5, rangesIntersect as b6, rangeContainsRange as b7, PositionCache as b8, ScrollController as b9, getEntrySpanEnd as bA, binarySearch as bB, groupIntersectingEntries as bC, intersectSpans as bD, interactionSettingsToStore as bE, ElementDragging as bF, config as bG, parseDragMeta as bH, DayHeader as bI, computeFallbackHeaderFormat as bJ, TableDateCell as bK, TableDowCell as bL, DaySeriesModel as bM, hasBgRendering as bN, buildSegTimeText as bO, sortEventSegs as bP, getSegMeta as bQ, buildEventRangeKey as bR, getSegAnchorAttrs as bS, DayTableModel as bT, Slicer as bU, applyMutationToEventStore as bV, isPropsValid as bW, isInteractionValid as bX, isDateSelectionValid as bY, SimpleScrollGrid as bZ, hasShrinkWidth as b_, ElementScrollController as ba, WindowScrollController as bb, DateComponent as bc, isDateSpansEqual as bd, addMs as be, addWeeks as bf, diffWeeks as bg, diffWholeWeeks as bh, diffDayAndTime as bi, diffDays as bj, isValidDate as bk, asCleanDays as bl, multiplyDuration as bm, addDurations as bn, asRoughMinutes as bo, asRoughSeconds as bp, asRoughMs as bq, wholeDivideDurations as br, formatIsoTimeString as bs, formatDayString as bt, buildIsoString as bu, formatIsoMonthStr as bv, NamedTimeZoneImpl as bw, parse as bx, SegHierarchy as by, buildEntryKey as bz, greatestDurationDenominator as c, getScrollGridClassNames as c0, getSectionClassNames as c1, getSectionHasLiquidHeight as c2, getAllowYScrolling as c3, renderChunkContent as c4, computeShrinkWidth as c5, sanitizeShrinkWidth as c6, isColPropsEqual as c7, renderScrollShim as c8, getStickyFooterScrollbar as c9, getStickyHeaderDates as ca, Scroller as cb, getScrollbarWidths as cc, RefMap as cd, getIsRtlScrollbarOnLeft as ce, ScrollResponder as cf, StandardEvent as cg, NowIndicatorContainer as ch, DayCellContainer as ci, hasCustomDayCellContent as cj, EventContainer as ck, renderFill as cl, BgEvent as cm, WeekNumberContainer as cn, MoreLinkContainer as co, computeEarliestSegStart as cp, ViewContainer as cq, triggerDateSelect as cr, getDefaultEventEnd as cs, injectStyles as ct, buildElAttrs as cu, CustomRenderingStore as cv, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Processor = void 0;\n/**\n * @private\n * The [[Processor]] is an abstract class for building your own custom processors.\n */\nvar Processor = /** @class */ (function () {\n    function Processor() {\n    }\n    return Processor;\n}());\nexports.Processor = Processor;\n//# sourceMappingURL=Processor.js.map","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e[\"leaflet-simple-map-screenshoter\"]=e[\"leaflet-simple-map-screenshoter\"]||{})}(this,function(e){\"use strict\";var t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function n(e,t){return e(t={exports:{}},t.exports),t.exports}var o=n(function(e,n){!function(t){const n={escape:function(e){return e.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\")},parseExtension:o,mimeType:function(e){return e=o(e).toLowerCase(),function(){var e=\"application/font-woff\",t=\"image/jpeg\";return{woff:e,woff2:e,ttf:\"application/font-truetype\",eot:\"application/vnd.ms-fontobject\",png:\"image/png\",jpg:t,jpeg:t,gif:\"image/gif\",tiff:\"image/tiff\",svg:\"image/svg+xml\"}}()[e]||\"\"},dataAsUrl:function(e,t){return`data:${t};base64,`+e},isDataUrl:function(e){return-1!==e.search(/^(data:)/)},canvasToBlob:function(e){return e.toBlob?new Promise(function(t){e.toBlob(t)}):(t=e,new Promise(function(e){const n=d(t.toDataURL().split(\",\")[1]);var o=n.length;const r=new Uint8Array(o);for(let e=0;e<o;e++)r[e]=n.charCodeAt(e);e(new Blob([r],{type:\"image/png\"}))}));var t},resolveUrl:function(e,t){const n=document.implementation.createHTMLDocument(),o=n.createElement(\"base\"),r=(n.head.appendChild(o),n.createElement(\"a\"));return n.body.appendChild(r),o.href=t,r.href=e,r.href},getAndEncode:function(e){let t=h.impl.urlCache.find(function(t){return t.url===e});return t||(t={url:e,promise:null},h.impl.urlCache.push(t)),null===t.promise&&(h.impl.options.cacheBust&&(e+=(/\\?/.test(e)?\"&\":\"?\")+(new Date).getTime()),t.promise=new Promise(function(t){const n=h.impl.options.httpTimeout,o=new XMLHttpRequest;let r;var i;function a(e){console.error(e),t(\"\")}o.onreadystatechange=function(){if(4===o.readyState)if(200!==o.status)r?t(r):a(`cannot fetch resource: ${e}, status: `+o.status);else{const e=new FileReader;e.onloadend=function(){var n=e.result.split(/,/)[1];t(n)},e.readAsDataURL(o.response)}},o.ontimeout=function(){r?t(r):a(`timeout of ${n}ms occured while fetching resource: `+e)},o.responseType=\"blob\",o.timeout=n,h.impl.options.useCredentials&&(o.withCredentials=!0),o.open(\"GET\",e,!0),o.send(),h.impl.options.imagePlaceholder&&(i=h.impl.options.imagePlaceholder.split(/,/))&&i[1]&&(r=i[1])})),t.promise},uid:function(){let e=0;return function(){return\"u\"+(\"0000\"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)+e++}}(),delay:function(e){return function(t){return new Promise(function(n){setTimeout(function(){n(t)},e)})}},asArray:function(e){const t=[],n=e.length;for(let o=0;o<n;o++)t.push(e[o]);return t},escapeXhtml:function(e){return e.replace(/%/g,\"%25\").replace(/#/g,\"%23\").replace(/\\n/g,\"%0A\")},makeImage:function(e){return\"data:,\"!==e?new Promise(function(t,n){const o=new Image;h.impl.options.useCredentials&&(o.crossOrigin=\"use-credentials\"),o.onload=function(){t(o)},o.onerror=n,o.src=e}):Promise.resolve()},width:function(e){var t=r(e,\"border-left-width\"),n=r(e,\"border-right-width\");return e.scrollWidth+t+n},height:function(e){var t=r(e,\"border-top-width\"),n=r(e,\"border-bottom-width\");return e.scrollHeight+t+n}};function o(e){return(e=/\\.([^\\.\\/]*?)(\\?|$)/g.exec(e))?e[1]:\"\"}function r(e,t){const n=f(e).getPropertyValue(t);return parseFloat(n.replace(\"px\",\"\"))}const i=function(){const e=/url\\(['\"]?([^'\"]+?)['\"]?\\)/g;return{inlineAll:function(e,n,i){return t(e)?Promise.resolve(e).then(o).then(function(t){let o=Promise.resolve(e);return t.forEach(function(e){o=o.then(function(t){return r(t,e,n,i)})}),o}):Promise.resolve(e)},shouldProcess:t,impl:{readUrls:o,inline:r}};function t(t){return-1!==t.search(e)}function o(t){const o=[];for(var r;null!==(r=e.exec(t));)o.push(r[1]);return o.filter(function(e){return!n.isDataUrl(e)})}function r(e,t,o,r){return Promise.resolve(t).then(function(e){return o?n.resolveUrl(e,o):e}).then(r||n.getAndEncode).then(function(e){return n.dataAsUrl(e,n.mimeType(t))}).then(function(o){return e.replace((r=t,new RegExp(`(url\\\\(['\"]?)(${n.escape(r)})(['\"]?\\\\))`,\"g\")),`$1${o}$3`);var r})}}(),a={resolveAll:function(){return s().then(function(e){return Promise.all(e.map(function(e){return e.resolve()}))}).then(function(e){return e.join(\"\\n\")})},impl:{readAll:s}};function s(){return Promise.resolve(n.asArray(document.styleSheets)).then(function(e){const t=[];return e.forEach(function(e){if(Object.getPrototypeOf(e).hasOwnProperty(\"cssRules\"))try{n.asArray(e.cssRules||[]).forEach(t.push.bind(t))}catch(t){console.log(\"Error while reading CSS rules from \"+e.href,t.toString())}}),t}).then(function(e){return e.filter(function(e){return e.type===CSSRule.FONT_FACE_RULE}).filter(function(e){return i.shouldProcess(e.style.getPropertyValue(\"src\"))})}).then(function(t){return t.map(e)});function e(e){return{resolve:function(){var t=(e.parentStyleSheet||{}).href;return i.inlineAll(e.cssText,t)},src:function(){return e.style.getPropertyValue(\"src\")}}}}const c={inlineAll:function e(t){return t instanceof Element?function(e){const t=e.style.getPropertyValue(\"background\");return t?i.inlineAll(t).then(function(n){e.style.setProperty(\"background\",n,t)}).then(function(){return e}):Promise.resolve(e)}(t).then(function(){return t instanceof HTMLImageElement?l(t).inline():Promise.all(n.asArray(t.childNodes).map(function(t){return e(t)}))}):Promise.resolve(t)},impl:{newImage:l}};function l(e){return{inline:function(t){return n.isDataUrl(e.src)?Promise.resolve():Promise.resolve(e.src).then(t||n.getAndEncode).then(function(t){return n.dataAsUrl(t,n.mimeType(e.src))}).then(function(t){return new Promise(function(n){e.onload=n,e.onerror=n,e.src=t})})}}}const u={imagePlaceholder:void 0,cacheBust:!1,useCredentials:!1,httpTimeout:3e4},h={toSvg:p,toPng:function(e,t){return(t=t||{}).raster=!0,m(e,t).then(function(e){return e.toDataURL()})},toJpeg:function(e,t){return(t=t||{}).raster=!0,m(e,t).then(function(e){return e.toDataURL(\"image/jpeg\",t.quality||1)})},toBlob:function(e,t){return(t=t||{}).raster=!0,m(e,t).then(n.canvasToBlob)},toPixelData:function(e,t){return(t=t||{}).raster=!0,m(e,t).then(function(t){return t.getContext(\"2d\").getImageData(0,0,n.width(e),n.height(e)).data})},toCanvas:function(e,t){return(t=t||{}).raster=!0,m(e,t||{})},impl:{fontFaces:a,images:c,util:n,inliner:i,urlCache:[],options:{}}},f=(e.exports=h,t.getComputedStyle||window.getComputedStyle),d=t.atob||window.atob;function p(e,t){var o=t=t||{};return void 0===o.imagePlaceholder?h.impl.options.imagePlaceholder=u.imagePlaceholder:h.impl.options.imagePlaceholder=o.imagePlaceholder,void 0===o.cacheBust?h.impl.options.cacheBust=u.cacheBust:h.impl.options.cacheBust=o.cacheBust,void 0===o.useCredentials?h.impl.options.useCredentials=u.useCredentials:h.impl.options.useCredentials=o.useCredentials,Promise.resolve(e).then(function(e){return function e(t,o,r,i,a=null){return r||!o||o(t)?Promise.resolve(t).then(function(e){return e instanceof HTMLCanvasElement?n.makeImage(e.toDataURL()):\"IFRAME\"===e.nodeName?html2canvas(e.contentDocument.body).then(e=>e.toDataURL()).then(n.makeImage):e.cloneNode(!1)}).then(function(r){return function(t,r){const a=t.childNodes;return 0===a.length?Promise.resolve(r):function(n,r){const a=f(t);let s=Promise.resolve();return r.forEach(function(t){s=s.then(function(){return e(t,o,!1,i,a)}).then(function(e){e&&n.appendChild(e)})}),s}(r,n.asArray(a)).then(function(){return r})}(t,r)}).then(function(e){return function(e,t,o){return t instanceof Element?Promise.resolve().then(function(){!function(e,t){const i=f(e);i.cssText?(t.style.cssText=i.cssText,function(e,t){t.font=e.font,t.fontFamily=e.fontFamily,t.fontFeatureSettings=e.fontFeatureSettings,t.fontKerning=e.fontKerning,t.fontSize=e.fontSize,t.fontStretch=e.fontStretch,t.fontStyle=e.fontStyle,t.fontVariant=e.fontVariant,t.fontVariantCaps=e.fontVariantCaps,t.fontVariantEastAsian=e.fontVariantEastAsian,t.fontVariantLigatures=e.fontVariantLigatures,t.fontVariantNumeric=e.fontVariantNumeric,t.fontVariationSettings=e.fontVariationSettings,t.fontWeight=e.fontWeight}(i,t.style)):(o?function(e,t,n,o){const r=n.style,i=e.style;for(var a of t){var s=t.getPropertyValue(a),c=i.getPropertyValue(a),l=(i.setProperty(a,o?\"initial\":\"unset\"),t.getPropertyValue(a));l!==s?r.setProperty(a,s):r.removeProperty(a),i.setProperty(a,c)}}(e,i,t,r):function(e,t,o){const r=function(e){if(v[e])return v[e];y||((y=document.createElement(\"iframe\")).style.visibility=\"hidden\",y.style.position=\"fixed\",document.body.appendChild(y),y.contentWindow.document.write('<!DOCTYPE html><meta charset=\"UTF-8\"><title>sandbox</title><body>'));const t=document.createElement(e),o=(y.contentWindow.document.body.appendChild(t),t.textContent=\".\",y.contentWindow.getComputedStyle(t)),r={};return n.asArray(o).forEach(function(e){r[e]=\"width\"===e||\"height\"===e?\"auto\":o.getPropertyValue(e)}),y.contentWindow.document.body.removeChild(t),v[e]=r}(o.tagName),i=o.style;n.asArray(e).forEach(function(n){var o=e.getPropertyValue(n);(o!==r[n]||t&&o!==t.getPropertyValue(n))&&i.setProperty(n,o,e.getPropertyPriority(n))})}(i,a,t),r&&([\"inset-block\",\"inset-block-start\",\"inset-block-end\"].forEach(e=>t.style.removeProperty(e)),[\"left\",\"right\",\"top\",\"bottom\"].forEach(e=>{t.style.getPropertyValue(e)&&t.style.setProperty(e,\"0px\")})))}(e,t)}).then(function(){[\":before\",\":after\"].forEach(function(o){!function(o){const r=f(e,o),i=r.getPropertyValue(\"content\");if(\"\"!==i&&\"none\"!==i){const e=n.uid(),i=t.getAttribute(\"class\"),a=(i&&t.setAttribute(\"class\",i+\" \"+e),document.createElement(\"style\"));a.appendChild(function(){const t=`.${e}:`+o,i=(r.cssText?function(){return`${r.cssText} content: ${r.getPropertyValue(\"content\")};`}:function(){return n.asArray(r).map(function(e){return e+\": \"+r.getPropertyValue(e)+(r.getPropertyPriority(e)?\" !important\":\"\")}).join(\"; \")+\";\"})();return document.createTextNode(t+`{${i}}`)}()),t.appendChild(a)}}(o)})}).then(function(){e instanceof HTMLTextAreaElement&&(t.innerHTML=e.value),e instanceof HTMLInputElement&&t.setAttribute(\"value\",e.value)}).then(function(){t instanceof SVGElement&&(t.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),t instanceof SVGRectElement&&[\"width\",\"height\"].forEach(function(e){const n=t.getAttribute(e);n&&t.style.setProperty(e,n)}))}).then(function(){return t}):t}(t,e,i)}):Promise.resolve()}(e,t.filter,!0,!t.raster)}).then(g).then(w).then(function(e){t.bgcolor&&(e.style.backgroundColor=t.bgcolor),t.width&&(e.style.width=t.width+\"px\"),t.height&&(e.style.height=t.height+\"px\"),t.style&&Object.keys(t.style).forEach(function(n){e.style[n]=t.style[n]});let n=null;return\"function\"==typeof t.onclone&&(n=t.onclone(e)),Promise.resolve(n).then(function(){return e})}).then(function(o){return o=o,r=t.width||n.width(e),i=t.height||n.height(e),Promise.resolve(o).then(function(e){return e.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),(new XMLSerializer).serializeToString(e)}).then(n.escapeXhtml).then(function(e){return`<foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">${e}</foreignObject>`}).then(function(e){return`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${r}\" height=\"${i}\">${e}</svg>`}).then(function(e){return\"data:image/svg+xml;charset=utf-8,\"+e});var r,i}).then(function(e){return h.impl.urlCache=[],e})}function m(e,t){return p(e,t).then(n.makeImage).then(n.delay(0)).then(function(o){var r=\"number\"!=typeof t.scale?1:t.scale;const i=function(e,o){const r=document.createElement(\"canvas\");if(r.width=(t.width||n.width(e))*o,r.height=(t.height||n.height(e))*o,t.bgcolor){const e=r.getContext(\"2d\");e.fillStyle=t.bgcolor,e.fillRect(0,0,r.width,r.height)}return r}(e,r),a=i.getContext(\"2d\");return a.mozImageSmoothingEnabled=!1,a.msImageSmoothingEnabled=!1,a.imageSmoothingEnabled=!1,o&&(a.scale(r,r),a.drawImage(o,0,0)),y&&(document.body.removeChild(y),y=null,M&&clearTimeout(M),M=setTimeout(()=>{M=null,v={}},2e4)),i})}function g(e){return a.resolveAll().then(function(t){const n=document.createElement(\"style\");return e.appendChild(n),n.appendChild(document.createTextNode(t)),e})}function w(e){return c.inlineAll(e).then(function(){return e})}let M=null,y=null,v={}}(t)}),r=n(function(e,n){(function(){function n(e,t,n){var o=new XMLHttpRequest;o.open(\"GET\",e),o.responseType=\"blob\",o.onload=function(){a(o.response,t,n)},o.onerror=function(){console.error(\"could not download file\")},o.send()}function o(e){var t=new XMLHttpRequest;t.open(\"HEAD\",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function r(e){try{e.dispatchEvent(new MouseEvent(\"click\"))}catch(n){var t=document.createEvent(\"MouseEvents\");t.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof t&&t.global===t?t:void 0,a=i.saveAs||(\"object\"!=typeof window||window!==i?function(){}:\"download\"in HTMLAnchorElement.prototype?function(e,t,a){var s=i.URL||i.webkitURL,c=document.createElement(\"a\");t=t||e.name||\"download\",c.download=t,c.rel=\"noopener\",\"string\"==typeof e?(c.href=e,c.origin===location.origin?r(c):o(c.href)?n(e,t,a):r(c,c.target=\"_blank\")):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){r(c)},0))}:\"msSaveOrOpenBlob\"in navigator?function(e,t,i){if(t=t||e.name||\"download\",\"string\"!=typeof e)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:\"object\"!=typeof t&&(console.warn(\"Deprecated: Expected third argument to be a object\"),t={autoBom:!t}),t.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(e.type)?new Blob([\"\\ufeff\",e],{type:e.type}):e}(e,i),t);else if(o(e))n(e,t,i);else{var a=document.createElement(\"a\");a.href=e,a.target=\"_blank\",setTimeout(function(){r(a)})}}:function(e,t,o,r){if((r=r||open(\"\",\"_blank\"))&&(r.document.title=r.document.body.innerText=\"downloading...\"),\"string\"==typeof e)return n(e,t,o);var a=\"application/octet-stream\"===e.type,s=/constructor/i.test(i.HTMLElement)||i.safari,c=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((c||a&&s)&&\"object\"==typeof FileReader){var l=new FileReader;l.onloadend=function(){var e=l.result;e=c?e:e.replace(/^data:[^;]*;/,\"data:attachment/file;\"),r?r.location.href=e:location=e,r=null},l.readAsDataURL(e)}else{var u=i.URL||i.webkitURL,h=u.createObjectURL(e);r?r.location=h:location.href=h,r=null,setTimeout(function(){u.revokeObjectURL(h)},4e4)}});i.saveAs=a.saveAs=a,e.exports=a})()}),i=L.Control.extend({options:{cropImageByInnerWH:!0,hidden:!1,domtoimageOptions:{},position:\"topleft\",screenName:\"screen\",iconUrl:\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDMyIDMyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAzMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxnIGlkPSJjYW1lcmEiPjxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMTYsOS41MDFjLTQuNDE5LDAtOCwzLjU4MS04LDhjMCw0LjQxOCwzLjU4MSw4LDgsOGM0LjQxOCwwLDgtMy41ODIsOC04UzIwLjQxOCw5LjUwMSwxNiw5LjUwMXogTTIwLjU1NSwyMS40MDZjLTIuMTU2LDIuNTE2LTUuOTQzLDIuODA3LTguNDU5LDAuNjVjLTIuNTE3LTIuMTU2LTIuODA3LTUuOTQ0LTAuNjUtOC40NTljMi4xNTUtMi41MTcsNS45NDMtMi44MDcsOC40NTktMC42NUMyMi40MiwxNS4xMDIsMjIuNzExLDE4Ljg5MSwyMC41NTUsMjEuNDA2eiIvPjxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMTYsMTMuNTAxYy0yLjIwOSwwLTMuOTk5LDEuNzkxLTQsMy45OTl2MC4wMDJjMCwwLjI3NSwwLjIyNCwwLjUsMC41LDAuNXMwLjUtMC4yMjUsMC41LTAuNVYxNy41YzAuMDAxLTEuNjU2LDEuMzQzLTIuOTk5LDMtMi45OTljMC4yNzYsMCwwLjUtMC4yMjQsMC41LTAuNVMxNi4yNzYsMTMuNTAxLDE2LDEzLjUwMXoiLz48cGF0aCBzdHlsZT0iZmlsbDojMDEwMDAyOyIgZD0iTTI5LjQ5Miw4LjU0MmwtNC4zMzQtMC43MjNsLTEuMzczLTMuNDM0QzIzLjMyNiwzLjI0LDIyLjIzMiwyLjUsMjEsMi41SDExYy0xLjIzMiwwLTIuMzI2LDAuNzQtMi43ODYsMS44ODZMNi44NDIsNy44MTlMMi41MDksOC41NDJDMS4wNTUsOC43ODMsMCwxMC4wMjcsMCwxMS41djE1YzAsMS42NTQsMS4zNDYsMywzLDNoMjZjMS42NTQsMCwzLTEuMzQ2LDMtM3YtMTVDMzIsMTAuMDI3LDMwLjk0NSw4Ljc4MywyOS40OTIsOC41NDJ6IE0zMCwyNi41YzAsMC41NTMtMC40NDcsMS0xLDFIM2MtMC41NTMsMC0xLTAuNDQ3LTEtMXYtMTVjMC0wLjQ4OSwwLjM1NC0wLjkwNiwwLjgzNi0wLjk4Nkw4LjI4LDkuNjA3bDEuNzkxLTQuNDc4QzEwLjIyNCw0Ljc1LDEwLjU5MSw0LjUsMTEsNC41aDEwYzAuNDA4LDAsMC43NzUsMC4yNDksMC45MjgsMC42MjlsMS43OTEsNC40NzhsNS40NDUsMC45MDdDMjkuNjQ2LDEwLjU5NCwzMCwxMS4wMTEsMzAsMTEuNVYyNi41eiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+\",hideElementsWithSelectors:[\".leaflet-control-container\"],onCropBorderSize:2,caption:null,captionFontSize:15,captionFont:\"Arial\",captionColor:\"black\",captionBgColor:\"white\",captionOffset:5,mimeType:\"image/png\",debugMode:!1,preventDownload:!1,onPixelDataFail:function(e){var t=e.node,n=e.error;return console.warn(\"Map node is very big \"+t.scrollWidth+\"x\"+t.scrollHeight),console.warn(\"Add function: SimpleMapScreenshoter({\\n              onPixelDataFail: function({ node, plugin, error, mapPane, domtoimageOptions }) {\\n                 // Solutions:\\n                 // decrease size of map\\n                 // or decrease zoom level\\n                 // or remove elements with big distanses\\n                 // and after that return image in Promise - plugin._getPixelDataOfNormalMap\\n                 return plugin._getPixelDataOfNormalMap(domtoimageOptions)\\n              }\\n            })\"),Promise.reject(n)}},onAdd:function(){return this._container=L.DomUtil.create(\"div\",\"leaflet-control-simpleMapScreenshoter\"),this._link=null,this._screenState={status:1,promise:null},!1===this.options.hidden&&this._addScreenBtn(),this._onUserStartInteractWithMap=this._onUserStartInteractWithMap.bind(this),this._onUserEndInteractWithMap=this._onUserEndInteractWithMap.bind(this),this._map.on(\"zoomstart\",this._onUserStartInteractWithMap),this._map.on(\"move\",this._onUserStartInteractWithMap),this._map.on(\"zoomend\",this._onUserEndInteractWithMap),this._map.on(\"moveend\",this._onUserEndInteractWithMap),this._container},takeScreen:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"blob\",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o={};for(var r in this.options)n.hasOwnProperty(r)?o[r]=n[r]:o[r]=this.options[r];return 2===this._screenState.status?this._screenState.promise:(this._map.fire(\"simpleMapScreenshoter.takeScreen\"),this._screenState.status=2,this._setElementsVisible(!1),this._screenState.promise=this._waitEndOfInteractions().then(function(){return e._getPixelData(o)}).then(function(t){return e._setElementsVisible(!0),e._toCanvas(t,o)}).then(function(n){return\"image\"===t?e._canvasToImage(n,o):\"canvas\"===t?n:e._canvasToBlob(n,o)}).then(function(t){return e._screenState.status=1,e._map.fire(\"simpleMapScreenshoter.done\"),t}).catch(function(t){return e._setElementsVisible(!0),e._screenState.status=1,e._map.fire(\"simpleMapScreenshoter.error\",{e:t}),Promise.reject(t)}),this._screenState.promise)},_setElementsVisible:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.hideElementsWithSelectors.forEach(function(n){var o=e._map._container.querySelectorAll(n),r=!0,i=!1,a=void 0;try{for(var s,c=o[Symbol.iterator]();!(r=(s=c.next()).done);r=!0){s.value.style.opacity=!1===t?0:1}}catch(e){i=!0,a=e}finally{try{!r&&c.return&&c.return()}finally{if(i)throw a}}})},_canvasToImage:function(e,t){var n=t.mimeType,o=e.toDataURL(n);return-1===o.indexOf(\"base64\")?Promise.reject(new Error(\"Base64 image generation error\")):Promise.resolve(o)},_canvasToBlob:function(e,t){var n=t.mimeType;return new Promise(function(t,o){e.toBlob(function(e){t(e)},n)})},_toCanvas:function(e,t){var n=t.captionOffset,o=t.caption,r=t.captionFontSize,i=t.captionFont,a=t.captionColor,s=t.captionBgColor,c=this._node,l=c.screenHeight,u=c.screenWidth,h=document.createElement(\"canvas\");h.width=u,h.height=l;for(var f=h.getContext(\"2d\"),d=f.createImageData(u,l),p=0;p<e.length;++p)d.data[p]=e[p];f.putImageData(d,0,0),d=null;var m=document.createElement(\"canvas\"),g=m.getContext(\"2d\"),w=0,M=0,y=l,v=u;if(!0===this.options.cropImageByInnerWH){for(var L=[],b=0,P=0;P<l;++P){b=0;for(var x=0;x<u;++x)0===e[4*P*u+4*x+4]&&b++;b===u&&L.push(P)}var S=this._getMinAndMaxOnValuesBreak(L);w=S.min;for(var C=u,T=S.max,j=[],D=0,E=M;E<C;++E){D=0;for(var N=0;N<l;++N)0===e[4*N*u+4*E+4]&&D++;D===l&&j.push(E)}var I=this._getMinAndMaxOnValuesBreak(j);M=I.min,C=I.max,(0===M&&0===C||null===C)&&(C=u),(0===w&&0===T||null===T)&&(T=l),!0===this.options.debugMode&&(console.log(\"emptyYLine\",L),console.log(\"minMaxY\",S),console.log(\"emptyXLine\",j),console.log(\"minMaxX\",I),console.log(\"debugX\",{}),console.log(\"debugY\",{})),0===w&&T===l&&0===M&&C===u||(w+=this.options.onCropBorderSize,T-=this.options.onCropBorderSize,M+=this.options.onCropBorderSize,C-=this.options.onCropBorderSize),y=T-w,v=C-M,m.width=v,m.height=y}else m.width=v,m.height=y;var A=null;return o&&(A=\"function\"==typeof o?o.call(this):o),null!==A&&(m.height=m.height+(n+r+n),g.beginPath(),g.rect(0,0,m.width,m.height),g.fillStyle=s,g.fill(),g.save()),g.drawImage(h,M,w,v,y,0,0,v,y),null!==A&&(g.font=r+\"px \"+i,g.fillStyle=a,g.fillText(A,n,y+n+r)),Promise.resolve(m)},_getMinAndMaxOnValuesBreak:function(e){for(var t=0,n=0,o=!1,r=1;r<e.length;r++){if(e[r]-1!==e[r-1]){n=e[r],o=!0;break}t=e[r]}return!1===o&&e[0]>1?(t=0,n=e[0]):!1===o&&(t=e[e.length-1]||0,n=null),{min:t,max:n}},_getPixelData:function(e){var t=this,n=e.domtoimageOptions,o=void 0===n?{}:n;return this._getPixelDataOfNormalMap(o).catch(function(e){return console.warn(\"May be map size very big on that zoom level, we have error:\",e.toString()),console.warn(\"You can manually hide map elements with large distances between them for fix that warn\"),t._getPixelDataOfBigMap(o)})},_getPixelDataOfNormalMap:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this._map.getContainer();return this._node={node:t,screenHeight:t.scrollHeight,screenWidth:t.scrollWidth},o.toPixelData(t,e)},_getPixelDataOfBigMap:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this._map.getContainer(),r=this._map.getPane(\"mapPane\");r.style.width=2*n.clientWidth+\"px\",r.style.height=2*n.clientHeight+\"px\",r.style.overflow=\"hidden\";var i=function(){r.style.width=\"initial\",r.style.height=\"initial\",r.style.overflow=\"initial\"};return this._node={node:n,screenHeight:n.scrollHeight,screenWidth:n.scrollWidth},o.toPixelData(n,t).then(function(e){return i(),e}).catch(function(o){return i(),n.scrollHeight>=4e3||n.scrollWidth>=4e3?e.options.onPixelDataFail({plugin:e,node:n,mapPane:r,error:o,domtoimageOptions:t}):Promise.reject(o)})},_addScreenBtn:function(){this._link=L.DomUtil.create(\"a\",\"leaflet-control-simpleMapScreenshoter-btn\",this._container),this._addCss(),L.DomEvent.addListener(this._link,\"click\",this._onScreenBtn,this),L.DomEvent.disableClickPropagation(this._link)},_addCss:function(){var e=\"\\n    .leaflet-control-simpleMapScreenshoter{\\n       border: 2px solid rgba(0,0,0,0.2);\\n       background-clip: padding-box;\\n    }\\n    .leaflet-control-simpleMapScreenshoter a{\\n       background-color: #fff;\\n       border-bottom: 1px solid #ccc;\\n       width: 30px;\\n       height: 30px;\\n       line-height: 30px;\\n       display: block;\\n       text-align: center;\\n       text-decoration: none;\\n       color: black;\\n       overflow: hidden;\\n       border-radius: 2px;\\n       background-image: url('\"+this.options.iconUrl+\"');\\n       background-position: 46% 41%;\\n       background-repeat: no-repeat;\\n       background-size: 63%;\\n    }\\n    .leaflet-control-simpleMapScreenshoter a:hover{\\n       cursor: pointer;\\n    }\\n    \",t=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.appendChild(document.createTextNode(e)),t.appendChild(n)},_onScreenBtn:function(){var e=this;this._map.fire(\"simpleMapScreenshoter.click\"),this.options.preventDownload||this.takeScreen().then(function(t){var n=\"function\"==typeof e.options.screenName?e.options.screenName.call(e):e.options.screenName;r.saveAs(t,n+\".png\")}).catch(function(t){e._map.fire(\"simpleMapScreenshoter.error\",{e:t})})},_onUserStartInteractWithMap:function(){this._interaction=!0},_onUserEndInteractWithMap:function(){this._interaction=!1},_waitEndOfInteractions:function(){var e=this;return new Promise(function(t){var n=setInterval(function(){e._interaction||(t(),clearInterval(n))},100)})}}),a=(L.Control.SimpleMapScreenshoter=i,L.simpleMapScreenshoter=function(e){return new L.Control.SimpleMapScreenshoter(e)},i);e.default=a,e.SimpleMapScreenshoter=i,Object.defineProperty(e,\"__esModule\",{value:!0})});\n//# sourceMappingURL=leaflet-simple-map-screenshoter.js.map\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackTransceiver = require('../../transceiver');\n/**\n * A {@link MediaTrackTransceiver} represents either one or more local\n * RTCRtpSenders, or a single RTCRtpReceiver.\n * @extends TrackTransceiver\n * @property {MediaStreamTrack} track\n */\nvar MediaTrackTransceiver = /** @class */ (function (_super) {\n    __extends(MediaTrackTransceiver, _super);\n    /**\n     * Construct a {@link MediaTrackTransceiver}.\n     * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n     * @param {MediaStreamTrack} mediaStreamTrack\n     */\n    function MediaTrackTransceiver(id, mediaStreamTrack) {\n        var _this = _super.call(this, id, mediaStreamTrack.kind) || this;\n        Object.defineProperties(_this, {\n            _track: {\n                value: mediaStreamTrack,\n                writable: true\n            },\n            enabled: {\n                enumerable: true,\n                get: function () {\n                    return this._track.enabled;\n                }\n            },\n            readyState: {\n                enumerable: true,\n                get: function () {\n                    return this._track.readyState;\n                }\n            },\n            track: {\n                enumerable: true,\n                get: function () {\n                    return this._track;\n                }\n            }\n        });\n        return _this;\n    }\n    MediaTrackTransceiver.prototype.stop = function () {\n        this.track.stop();\n        _super.prototype.stop.call(this);\n    };\n    return MediaTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = MediaTrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $noEmptySchema = $schema.every(function($sch) {\n    return it.util.schemaHasRules($sch, it.RULES.all);\n  });\n  if ($noEmptySchema) {\n    var $currentBaseId = $it.baseId;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match some schema in anyOf\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n    out = it.util.cleanUpCode(out);\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      // @ts-ignore\n      acc.apply(this, args); // @ts-ignore\n\n      f.apply(this, args);\n    };\n  }, null);\n}\n\nexport default createChainedFunction;","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _google_map = require('./google_map');\n\nvar _google_map2 = _interopRequireDefault(_google_map);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _google_map2.default;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n  var _ref;\n\n  if (typeof document === 'undefined') return null;\n  if (ref == null) return ownerDocument().body;\n  if (typeof ref === 'function') ref = ref();\n  if (ref && 'current' in ref) ref = ref.current;\n  if ((_ref = ref) == null ? void 0 : _ref.nodeType) return ref || null;\n  return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n  var _useState = useState(function () {\n    return resolveContainerRef(ref);\n  }),\n      resolvedRef = _useState[0],\n      setRef = _useState[1];\n\n  if (!resolvedRef) {\n    var earlyRef = resolveContainerRef(ref);\n    if (earlyRef) setRef(earlyRef);\n  }\n\n  useEffect(function () {\n    if (onResolved && resolvedRef) {\n      onResolved(resolvedRef);\n    }\n  }, [onResolved, resolvedRef]);\n  useEffect(function () {\n    var nextRef = resolveContainerRef(ref);\n\n    if (nextRef !== resolvedRef) {\n      setRef(nextRef);\n    }\n  }, [ref, resolvedRef]);\n  return resolvedRef;\n}","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n                '_'\n            ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n  var length = 0\n    , len = str.length\n    , pos = 0\n    , value;\n  while (pos < len) {\n    length++;\n    value = str.charCodeAt(pos++);\n    if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos);\n      if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n    }\n  }\n  return length;\n};\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @property {?Track.SID} loudestParticipantSid\n * @emits DominantSpeakerSignaling#updated\n */\nvar DominantSpeakerSignaling = /** @class */ (function (_super) {\n    __extends(DominantSpeakerSignaling, _super);\n    /**\n     * Construct an {@link DominantSpeakerSignaling}.\n     */\n    function DominantSpeakerSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'active_speaker', options) || this;\n        Object.defineProperties(_this, {\n            _loudestParticipantSid: {\n                value: null,\n                writable: true\n            },\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                switch (message.type) {\n                    case 'active_speaker':\n                        _this._setLoudestParticipantSid(message.participant);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    Object.defineProperty(DominantSpeakerSignaling.prototype, \"loudestParticipantSid\", {\n        /**\n         * Get the loudest {@link Track.SID}, if known.\n         * @returns {?Track.SID}\n         */\n        get: function () {\n            return this._loudestParticipantSid;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @private\n     * @param {Track.SID} loudestParticipantSid\n     * @returns {void}\n     */\n    DominantSpeakerSignaling.prototype._setLoudestParticipantSid = function (loudestParticipantSid) {\n        if (this.loudestParticipantSid === loudestParticipantSid) {\n            return;\n        }\n        this._loudestParticipantSid = loudestParticipantSid;\n        this.emit('updated');\n    };\n    return DominantSpeakerSignaling;\n}(MediaSignaling));\n/**\n * @event DominantSpeakerSignaling#updated\n */\nmodule.exports = DominantSpeakerSignaling;\n//# sourceMappingURL=dominantspeakersignaling.js.map","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n","'use strict';\nvar Filter = /** @class */ (function () {\n    function Filter(options) {\n        options = Object.assign({\n            getKey: function defaultGetKey(a) { return a; },\n            getValue: function defaultGetValue(a) { return a; },\n            isLessThanOrEqualTo: function defaultIsLessThanOrEqualTo(a, b) { return a <= b; }\n        }, options);\n        Object.defineProperties(this, {\n            _getKey: {\n                value: options.getKey\n            },\n            _getValue: {\n                value: options.getValue\n            },\n            _isLessThanOrEqualTo: {\n                value: options.isLessThanOrEqualTo\n            },\n            _map: {\n                value: new Map()\n            }\n        });\n    }\n    Filter.prototype.toMap = function () {\n        return new Map(this._map);\n    };\n    Filter.prototype.updateAndFilter = function (entries) {\n        return entries.filter(this.update, this);\n    };\n    Filter.prototype.update = function (entry) {\n        var key = this._getKey(entry);\n        var value = this._getValue(entry);\n        if (this._map.has(key) &&\n            this._isLessThanOrEqualTo(value, this._map.get(key))) {\n            return false;\n        }\n        this._map.set(key, value);\n        return true;\n    };\n    return Filter;\n}());\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","var mathTrig = require('./math-trig');\nvar statistical = require('./statistical');\nvar engineering = require('./engineering');\nvar dateTime = require('./date-time');\n\nfunction set(fn, root) {\n  if (root) {\n    for (var i in root) {\n      fn[i] = root[i];\n    }\n  }\n\n  return fn;\n}\n\nexports.BETADIST = statistical.BETA.DIST;\nexports.BETAINV = statistical.BETA.INV;\nexports.BINOMDIST = statistical.BINOM.DIST;\nexports.CEILING = exports.ISOCEILING = set(mathTrig.CEILING.MATH, mathTrig.CEILING);\nexports.CEILINGMATH = mathTrig.CEILING.MATH;\nexports.CEILINGPRECISE = mathTrig.CEILING.PRECISE;\nexports.CHIDIST = statistical.CHISQ.DIST;\nexports.CHIDISTRT = statistical.CHISQ.DIST.RT;\nexports.CHIINV = statistical.CHISQ.INV;\nexports.CHIINVRT = statistical.CHISQ.INV.RT;\nexports.CHITEST = statistical.CHISQ.TEST;\nexports.CONFIDENCE = set(statistical.CONFIDENCE.NORM, statistical.CONFIDENCE);\nexports.COVAR = statistical.COVARIANCE.P;\nexports.COVARIANCEP = statistical.COVARIANCE.P;\nexports.COVARIANCES = statistical.COVARIANCE.S;\nexports.CRITBINOM = statistical.BINOM.INV;\nexports.EXPONDIST = statistical.EXPON.DIST;\nexports.ERFCPRECISE = engineering.ERFC.PRECISE;\nexports.ERFPRECISE = engineering.ERF.PRECISE;\nexports.FDIST = statistical.F.DIST;\nexports.FDISTRT = statistical.F.DIST.RT;\nexports.FINVRT = statistical.F.INV.RT;\nexports.FINV = statistical.F.INV;\nexports.FLOOR = set(mathTrig.FLOOR.MATH, mathTrig.FLOOR);\nexports.FLOORMATH = mathTrig.FLOOR.MATH;\nexports.FLOORPRECISE = mathTrig.FLOOR.PRECISE;\nexports.FTEST = statistical.F.TEST;\nexports.GAMMADIST = statistical.GAMMA.DIST;\nexports.GAMMAINV = statistical.GAMMA.INV;\nexports.GAMMALNPRECISE = statistical.GAMMALN.PRECISE;\nexports.HYPGEOMDIST = statistical.HYPGEOM.DIST;\nexports.LOGINV = statistical.LOGNORM.INV;\nexports.LOGNORMINV = statistical.LOGNORM.INV;\nexports.LOGNORMDIST = statistical.LOGNORM.DIST;\nexports.MODE = set(statistical.MODE.SNGL, statistical.MODE);\nexports.MODEMULT = statistical.MODE.MULT;\nexports.MODESNGL = statistical.MODE.SNGL;\nexports.NEGBINOMDIST = statistical.NEGBINOM.DIST;\nexports.NETWORKDAYSINTL = dateTime.NETWORKDAYS.INTL;\nexports.NORMDIST = statistical.NORM.DIST;\nexports.NORMINV = statistical.NORM.INV;\nexports.NORMSDIST = statistical.NORM.S.DIST;\nexports.NORMSINV = statistical.NORM.S.INV;\nexports.PERCENTILE = set(statistical.PERCENTILE.EXC, statistical.PERCENTILE);\nexports.PERCENTILEEXC = statistical.PERCENTILE.EXC;\nexports.PERCENTILEINC = statistical.PERCENTILE.INC;\nexports.PERCENTRANK = set(statistical.PERCENTRANK.INC, statistical.PERCENTRANK);\nexports.PERCENTRANKEXC = statistical.PERCENTRANK.EXC;\nexports.PERCENTRANKINC = statistical.PERCENTRANK.INC;\nexports.POISSON = set(statistical.POISSON.DIST, statistical.POISSON);\nexports.POISSONDIST = statistical.POISSON.DIST;\nexports.QUARTILE = set(statistical.QUARTILE.INC, statistical.QUARTILE);\nexports.QUARTILEEXC = statistical.QUARTILE.EXC;\nexports.QUARTILEINC = statistical.QUARTILE.INC;\nexports.RANK = set(statistical.RANK.EQ, statistical.RANK);\nexports.RANKAVG = statistical.RANK.AVG;\nexports.RANKEQ = statistical.RANK.EQ;\nexports.SKEWP = statistical.SKEW.P;\nexports.STDEV = set(statistical.STDEV.S, statistical.STDEV);\nexports.STDEVP = statistical.STDEV.P;\nexports.STDEVS = statistical.STDEV.S;\nexports.TDIST = statistical.T.DIST;\nexports.TDISTRT = statistical.T.DIST.RT;\nexports.TINV = statistical.T.INV;\nexports.TTEST = statistical.T.TEST;\nexports.VAR = set(statistical.VAR.S, statistical.VAR);\nexports.VARP = statistical.VAR.P;\nexports.VARS = statistical.VAR.S;\nexports.WEIBULL = set(statistical.WEIBULL.DIST, statistical.WEIBULL);\nexports.WEIBULLDIST = statistical.WEIBULL.DIST;\nexports.WORKDAYINTL = dateTime.WORKDAY.INTL;\nexports.ZTEST = statistical.Z.TEST;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    var list = [];\n    var i = 0;\n    for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _propTypes=_interopRequireDefault(require(\"prop-types\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var _default=_propTypes[\"default\"].shape({trackEvent:_propTypes[\"default\"].func,getTrackingData:_propTypes[\"default\"].func});exports[\"default\"]=_default;\n//# sourceMappingURL=TrackingPropType.js.map","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nfunction mixinRemoteMediaTrack(AudioOrVideoTrack) {\n    /**\n     * A {@link RemoteMediaTrack} represents a {@link MediaTrack} published to a\n     * {@link Room} by a {@link RemoteParticipant}.\n     * @property {boolean} isEnabled - Whether the {@link RemoteMediaTrack} is enabled\n     * @property {boolean} isSwitchedOff - Whether the {@link RemoteMediaTrack} is switched off\n     * @property {Track.SID} sid - The SID assigned to the {@link RemoteMediaTrack}\n     * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteMediaTrack}\n     * @emits RemoteMediaTrack#disabled\n     * @emits RemoteMediaTrack#enabled\n     * @emits RemoteMediaTrack#switchedOff\n     * @emits RemoteMediaTrack#switchedOn\n     */\n    return /** @class */ (function (_super) {\n        __extends(RemoteMediaTrack, _super);\n        /**\n         * Construct a {@link RemoteMediaTrack}.\n         * @param {Track.SID} sid\n         * @param {MediaTrackReceiver} mediaTrackReceiver\n         * @param {boolean} isEnabled\n          @param {boolean} isSwitchedOff\n         * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n         *  {@link Track.Priority} of the {@link RemoteMediaTrack}\n         * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n         * @param {{log: Log, name: ?string}} options\n         */\n        function RemoteMediaTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n            var _this = this;\n            options = Object.assign({\n                // NOTE(mpatwardhan): WebKit bug: 212780 sometimes causes the audio/video elements to stay paused when safari\n                // regains foreground. To workaround it, when safari gains foreground - we will play any elements that were\n                // playing before safari lost foreground.\n                workaroundWebKitBug212780: isIOS()\n                    && typeof document === 'object'\n                    && typeof document.addEventListener === 'function'\n                    && typeof document.visibilityState === 'string'\n            }, options);\n            _this = _super.call(this, mediaTrackReceiver, options) || this;\n            Object.defineProperties(_this, {\n                _isEnabled: {\n                    value: isEnabled,\n                    writable: true\n                },\n                _isSwitchedOff: {\n                    value: isSwitchedOff,\n                    writable: true\n                },\n                _priority: {\n                    value: null,\n                    writable: true\n                },\n                _setPriority: {\n                    value: setPriority\n                },\n                _setRenderHint: {\n                    value: function (renderHint) {\n                        _this._log.debug('updating render hint:', renderHint);\n                        setRenderHint(renderHint);\n                    }\n                },\n                isEnabled: {\n                    enumerable: true,\n                    get: function () {\n                        return this._isEnabled;\n                    }\n                },\n                isSwitchedOff: {\n                    enumerable: true,\n                    get: function () {\n                        return this._isSwitchedOff;\n                    }\n                },\n                priority: {\n                    enumerable: true,\n                    get: function () {\n                        return this._priority;\n                    }\n                },\n                sid: {\n                    enumerable: true,\n                    value: sid\n                },\n                _workaroundWebKitBug212780: {\n                    value: options.workaroundWebKitBug212780\n                },\n                _workaroundWebKitBug212780Cleanup: {\n                    value: null,\n                    writable: true\n                }\n            });\n            return _this;\n        }\n        /**\n         * Update the subscribe {@link Track.Priority} of the {@link RemoteMediaTrack}.\n         * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n         *   If <code>null</code>, then the subscribe {@link Track.Priority} is cleared, which\n         *   means the {@link Track.Priority} set by the publisher is now the effective priority.\n         * @returns {this}\n         * @throws {RangeError}\n         */\n        RemoteMediaTrack.prototype.setPriority = function (priority) {\n            var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)));\n            if (!priorityValues.includes(priority)) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_VALUE('priority', priorityValues);\n            }\n            if (this._priority !== priority) {\n                this._priority = priority;\n                this._setPriority(priority);\n            }\n            return this;\n        };\n        /**\n         * @private\n         * @param {boolean} isEnabled\n         */\n        RemoteMediaTrack.prototype._setEnabled = function (isEnabled) {\n            if (this._isEnabled !== isEnabled) {\n                this._isEnabled = isEnabled;\n                this.emit(this._isEnabled ? 'enabled' : 'disabled', this);\n            }\n        };\n        /**\n         * @private\n         * @param {boolean} isSwitchedOff\n         */\n        RemoteMediaTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n            if (this._isSwitchedOff !== isSwitchedOff) {\n                this._isSwitchedOff = isSwitchedOff;\n                this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n            }\n        };\n        RemoteMediaTrack.prototype.attach = function (el) {\n            var result = _super.prototype.attach.call(this, el);\n            if (this.mediaStreamTrack.enabled !== true) {\n                // NOTE(mpatwardhan): we disable mediaStreamTrack when there\n                // are no attachments to it (see notes below). Now that there\n                // are attachments re-enable the track.\n                this.mediaStreamTrack.enabled = true;\n                if (this.processedTrack) {\n                    this.processedTrack.enabled = true;\n                }\n                // NOTE(csantos): since remote tracks disables/enables the mediaStreamTrack,\n                // captureFrames stops along with it. We need to start it again after re-enabling.\n                // See attach/detach methods in this class and in VideoTrack class.\n                if (this.processor) {\n                    this._captureFrames();\n                }\n            }\n            if (this._workaroundWebKitBug212780) {\n                this._workaroundWebKitBug212780Cleanup = this._workaroundWebKitBug212780Cleanup\n                    || playIfPausedWhileInBackground(this);\n            }\n            return result;\n        };\n        RemoteMediaTrack.prototype.detach = function (el) {\n            var result = _super.prototype.detach.call(this, el);\n            if (this._attachments.size === 0) {\n                // NOTE(mpatwardhan): chrome continues playing webrtc audio\n                // track even after audio element is removed from the DOM.\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=749928\n                // to workaround: here disable the track when\n                // there are no elements attached to it.\n                this.mediaStreamTrack.enabled = false;\n                if (this.processedTrack) {\n                    this.processedTrack.enabled = false;\n                }\n                if (this._workaroundWebKitBug212780Cleanup) {\n                    // unhook visibility change\n                    this._workaroundWebKitBug212780Cleanup();\n                    this._workaroundWebKitBug212780Cleanup = null;\n                }\n            }\n            return result;\n        };\n        return RemoteMediaTrack;\n    }(AudioOrVideoTrack));\n}\nfunction playIfPausedWhileInBackground(remoteMediaTrack) {\n    var log = remoteMediaTrack._log, kind = remoteMediaTrack.kind;\n    function onVisibilityChanged(isVisible) {\n        if (!isVisible) {\n            return;\n        }\n        remoteMediaTrack._attachments.forEach(function (el) {\n            var shim = remoteMediaTrack._elShims.get(el);\n            var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n            if (isInadvertentlyPaused) {\n                log.info(\"Playing inadvertently paused <\" + kind + \"> element\");\n                log.debug('Element:', el);\n                log.debug('RemoteMediaTrack:', remoteMediaTrack);\n                el.play().then(function () {\n                    log.info(\"Successfully played inadvertently paused <\" + kind + \"> element\");\n                    log.debug('Element:', el);\n                    log.debug('RemoteMediaTrack:', remoteMediaTrack);\n                }).catch(function (err) {\n                    log.warn(\"Error while playing inadvertently paused <\" + kind + \"> element:\", { err: err, el: el, remoteMediaTrack: remoteMediaTrack });\n                });\n            }\n        });\n    }\n    // NOTE(mpatwardhan): listen for document visibility callback on phase 2.\n    // this ensures that any LocalMediaTrack's restart (which listen on phase 1) gets executed\n    // first. This order is important because we `play` tracks in the callback, and\n    // play can fail on safari if audio is not being captured.\n    documentVisibilityMonitor.onVisibilityChange(2, onVisibilityChanged);\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(2, onVisibilityChanged);\n    };\n}\n/**\n * A {@link RemoteMediaTrack} was disabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   disabled\n * @event RemoteMediaTrack#disabled\n */\n/**\n * A {@link RemoteMediaTrack} was enabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   enabled\n * @event RemoteMediaTrack#enabled\n */\n/**\n * A {@link RemoteMediaTrack} was switched off.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   switched off\n * @event RemoteMediaTrack#switchedOff\n */\n/**\n * A {@link RemoteMediaTrack} was switched on.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   switched on\n * @event RemoteMediaTrack#switchedOn\n */\n/**\n * A {@link ClientRenderHint} object specifies track dimensions and /enabled disable state.\n * This state will be used by the server(SFU) to determine bandwidth allocation for the track,\n * and turn it on or off as needed.\n * @typedef {object} ClientRenderHint\n * @property {boolean} [enabled] - track is enabled or disabled. defaults to disabled.\n * @property {VideoTrack.Dimensions} [renderDimensions] - Optional parameter to specify the desired\n *   render dimensions of {@link RemoteVideoTrack}s. This property must be specified if enabled=true\n */\nmodule.exports = mixinRemoteMediaTrack;\n//# sourceMappingURL=remotemediatrack.js.map","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\n\n/* eslint-disable react/require-render-return, react/no-unused-prop-types */\nvar Tab = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Tab, _React$Component);\n\n  function Tab() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tab.prototype;\n\n  _proto.render = function render() {\n    throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n    return null;\n  };\n\n  return Tab;\n}(React.Component);\n\nTab.Container = TabContainer;\nTab.Content = TabContent;\nTab.Pane = TabPane;\nexport default Tab;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module params\n */\n/** */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar hof_1 = require(\"../common/hof\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar paramType_1 = require(\"./paramType\");\n/**\n * A registry for parameter types.\n *\n * This registry manages the built-in (and custom) parameter types.\n *\n * The built-in parameter types are:\n *\n * - [[string]]\n * - [[path]]\n * - [[query]]\n * - [[hash]]\n * - [[int]]\n * - [[bool]]\n * - [[date]]\n * - [[json]]\n * - [[any]]\n */\nvar ParamTypes = /** @class */ (function () {\n    /** @internalapi */\n    function ParamTypes() {\n        /** @hidden */\n        this.enqueue = true;\n        /** @hidden */\n        this.typeQueue = [];\n        /** @internalapi */\n        this.defaultTypes = common_1.pick(ParamTypes.prototype, ['hash', 'string', 'query', 'path', 'int', 'bool', 'date', 'json', 'any']);\n        // Register default types. Store them in the prototype of this.types.\n        var makeType = function (definition, name) {\n            return new paramType_1.ParamType(common_1.extend({ name: name }, definition));\n        };\n        this.types = common_1.inherit(common_1.map(this.defaultTypes, makeType), {});\n    }\n    /** @internalapi */\n    ParamTypes.prototype.dispose = function () {\n        this.types = {};\n    };\n    /**\n     * Registers a parameter type\n     *\n     * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n     */\n    ParamTypes.prototype.type = function (name, definition, definitionFn) {\n        if (!predicates_1.isDefined(definition))\n            return this.types[name];\n        if (this.types.hasOwnProperty(name))\n            throw new Error(\"A type named '\" + name + \"' has already been defined.\");\n        this.types[name] = new paramType_1.ParamType(common_1.extend({ name: name }, definition));\n        if (definitionFn) {\n            this.typeQueue.push({ name: name, def: definitionFn });\n            if (!this.enqueue)\n                this._flushTypeQueue();\n        }\n        return this;\n    };\n    /** @internalapi */\n    ParamTypes.prototype._flushTypeQueue = function () {\n        while (this.typeQueue.length) {\n            var type = this.typeQueue.shift();\n            if (type.pattern)\n                throw new Error(\"You cannot override a type's .pattern at runtime.\");\n            common_1.extend(this.types[type.name], coreservices_1.services.$injector.invoke(type.def));\n        }\n    };\n    return ParamTypes;\n}());\nexports.ParamTypes = ParamTypes;\n/** @hidden */\nfunction initDefaultTypes() {\n    var makeDefaultType = function (def) {\n        var valToString = function (val) {\n            return val != null ? val.toString() : val;\n        };\n        var defaultTypeBase = {\n            encode: valToString,\n            decode: valToString,\n            is: hof_1.is(String),\n            pattern: /.*/,\n            // tslint:disable-next-line:triple-equals\n            equals: function (a, b) { return a == b; },\n        };\n        return common_1.extend({}, defaultTypeBase, def);\n    };\n    // Default Parameter Type Definitions\n    common_1.extend(ParamTypes.prototype, {\n        string: makeDefaultType({}),\n        path: makeDefaultType({\n            pattern: /[^/]*/,\n        }),\n        query: makeDefaultType({}),\n        hash: makeDefaultType({\n            inherit: false,\n        }),\n        int: makeDefaultType({\n            decode: function (val) { return parseInt(val, 10); },\n            is: function (val) {\n                return !predicates_1.isNullOrUndefined(val) && this.decode(val.toString()) === val;\n            },\n            pattern: /-?\\d+/,\n        }),\n        bool: makeDefaultType({\n            encode: function (val) { return val && 1 || 0; },\n            decode: function (val) { return parseInt(val, 10) !== 0; },\n            is: hof_1.is(Boolean),\n            pattern: /0|1/,\n        }),\n        date: makeDefaultType({\n            encode: function (val) {\n                return !this.is(val) ? undefined : [\n                    val.getFullYear(),\n                    ('0' + (val.getMonth() + 1)).slice(-2),\n                    ('0' + val.getDate()).slice(-2),\n                ].join('-');\n            },\n            decode: function (val) {\n                if (this.is(val))\n                    return val;\n                var match = this.capture.exec(val);\n                return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n            },\n            is: function (val) { return val instanceof Date && !isNaN(val.valueOf()); },\n            equals: function (l, r) {\n                return ['getFullYear', 'getMonth', 'getDate']\n                    .reduce(function (acc, fn) { return acc && l[fn]() === r[fn](); }, true);\n            },\n            pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n            capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n        }),\n        json: makeDefaultType({\n            encode: common_1.toJson,\n            decode: common_1.fromJson,\n            is: hof_1.is(Object),\n            equals: common_1.equals,\n            pattern: /[^/]*/,\n        }),\n        // does not encode/decode\n        any: makeDefaultType({\n            encode: common_1.identity,\n            decode: common_1.identity,\n            is: function () { return true; },\n            equals: common_1.equals,\n        }),\n    });\n}\ninitDefaultTypes();\n//# sourceMappingURL=paramTypes.js.map","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isConstructor = require('../internals/is-constructor');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  // eslint-disable-next-line es/no-array-of -- safe\n  return !($Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n  of: function of(/* ...args */) {\n    var index = 0;\n    var argumentsLength = arguments.length;\n    var result = new (isConstructor(this) ? this : $Array)(argumentsLength);\n    while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n    result.length = argumentsLength;\n    return result;\n  }\n});\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'waQ'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'nem'\n                    : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'wen'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'ben'\n                    : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort:\n            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.1.valueOf);\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n                '_'\n            ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays:\n            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n                '_'\n            ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar slice = require('../internals/array-slice');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar aCallable = require('../internals/a-callable');\nvar perform = require('../internals/perform');\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n  Promise['try'](function (argument) {\n    ACCEPT_ARGUMENTS = argument === 8;\n  }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n  'try': function (callbackfn /* , ...args */) {\n    var args = arguments.length > 1 ? slice(arguments, 1) : [];\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(function () {\n      return apply(aCallable(callbackfn), undefined, args);\n    });\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  delay = +delay, time = time == null ? now() : +time;\n  t.restart(function tick(elapsed) {\n    elapsed += total;\n    t.restart(tick, total += delay, time);\n    callback(elapsed);\n  }, delay, time);\n  return t;\n}\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","'use strict';\nvar parent = require('../../stable/string');\n\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.string.is-well-formed');\nrequire('../../modules/esnext.string.to-well-formed');\n\nmodule.exports = parent;\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone:\n                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                    '_'\n                ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","/**\r\n * KMEANS clustering\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * KMEANS class constructor\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} k - number of clusters\r\n * @param {function} distance - distance function\r\n * @returns {KMEANS}\r\n */\r\n function KMEANS(dataset, k, distance) {\r\n  this.k = 3; // number of clusters\r\n  this.dataset = []; // set of feature vectors\r\n  this.assignments = []; // set of associated clusters for each feature vector\r\n  this.centroids = []; // vectors for our clusters\r\n\r\n  this.init(dataset, k, distance);\r\n}\r\n\r\n/**\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.init = function(dataset, k, distance) {\r\n  this.assignments = [];\r\n  this.centroids = [];\r\n\r\n  if (typeof dataset !== 'undefined') {\r\n    this.dataset = dataset;\r\n  }\r\n\r\n  if (typeof k !== 'undefined') {\r\n    this.k = k;\r\n  }\r\n\r\n  if (typeof distance !== 'undefined') {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.run = function(dataset, k) {\r\n  this.init(dataset, k);\r\n\r\n  var len = this.dataset.length;\r\n\r\n  // initialize centroids\r\n  for (var i = 0; i < this.k; i++) {\r\n    this.centroids[i] = this.randomCentroid();\r\n\t}\r\n\r\n  var change = true;\r\n  while(change) {\r\n\r\n    // assign feature vectors to clusters\r\n    change = this.assign();\r\n\r\n    // adjust location of centroids\r\n    for (var centroidId = 0; centroidId < this.k; centroidId++) {\r\n      var mean = new Array(maxDim);\r\n      var count = 0;\r\n\r\n      // init mean vector\r\n      for (var dim = 0; dim < maxDim; dim++) {\r\n        mean[dim] = 0;\r\n      }\r\n\r\n      for (var j = 0; j < len; j++) {\r\n        var maxDim = this.dataset[j].length;\r\n\r\n        // if current cluster id is assigned to point\r\n        if (centroidId === this.assignments[j]) {\r\n          for (var dim = 0; dim < maxDim; dim++) {\r\n            mean[dim] += this.dataset[j][dim];\r\n          }\r\n          count++;\r\n        }\r\n      }\r\n\r\n      if (count > 0) {\r\n        // if cluster contain points, adjust centroid position\r\n        for (var dim = 0; dim < maxDim; dim++) {\r\n          mean[dim] /= count;\r\n        }\r\n        this.centroids[centroidId] = mean;\r\n      } else {\r\n        // if cluster is empty, generate new random centroid\r\n        this.centroids[centroidId] = this.randomCentroid();\r\n        change = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.getClusters();\r\n};\r\n\r\n/**\r\n * Generate random centroid\r\n *\r\n * @returns {Array}\r\n */\r\nKMEANS.prototype.randomCentroid = function() {\r\n  var maxId = this.dataset.length -1;\r\n  var centroid;\r\n  var id;\r\n\r\n  do {\r\n    id = Math.round(Math.random() * maxId);\r\n    centroid = this.dataset[id];\r\n  } while (this.centroids.indexOf(centroid) >= 0);\r\n\r\n  return centroid;\r\n}\r\n\r\n/**\r\n * Assign points to clusters\r\n *\r\n * @returns {boolean}\r\n */\r\nKMEANS.prototype.assign = function() {\r\n  var change = false;\r\n  var len = this.dataset.length;\r\n  var closestCentroid;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    closestCentroid = this.argmin(this.dataset[i], this.centroids, this.distance);\r\n\r\n    if (closestCentroid != this.assignments[i]) {\r\n      this.assignments[i] = closestCentroid;\r\n      change = true;\r\n    }\r\n  }\r\n\r\n  return change;\r\n}\r\n\r\n/**\r\n * Extract information about clusters\r\n *\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.getClusters = function() {\r\n  var clusters = new Array(this.k);\r\n  var centroidId;\r\n\r\n  for (var pointId = 0; pointId < this.assignments.length; pointId++) {\r\n    centroidId = this.assignments[pointId];\r\n\r\n    // init empty cluster\r\n    if (typeof clusters[centroidId] === 'undefined') {\r\n      clusters[centroidId] = [];\r\n    }\r\n\r\n    clusters[centroidId].push(pointId);\r\n  }\r\n\r\n  return clusters;\r\n};\r\n\r\n// utils\r\n\r\n/**\r\n * @params {Array} point\r\n * @params {Array.<Array>} set\r\n * @params {Function} f\r\n * @returns {number}\r\n */\r\nKMEANS.prototype.argmin = function(point, set, f) {\r\n  var min = Number.MAX_VALUE;\r\n  var arg = 0;\r\n  var len = set.length;\r\n  var d;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    d = f(point, set[i]);\r\n    if (d < min) {\r\n      min = d;\r\n      arg = i;\r\n    }\r\n  }\r\n\r\n  return arg;\r\n};\r\n\r\n/**\r\n * Euclidean distance\r\n *\r\n * @params {number} p\r\n * @params {number} q\r\n * @returns {number}\r\n */\r\nKMEANS.prototype.distance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    var diff = p[i] - q[i];\r\n    sum += diff * diff;\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = KMEANS;\r\n}\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module hooks */ /** */\nvar predicates_1 = require(\"../common/predicates\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar targetState_1 = require(\"../state/targetState\");\n/**\n * A [[TransitionHookFn]] that redirects to a different state or params\n *\n * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n *\n * See [[StateDeclaration.redirectTo]]\n */\nvar redirectToHook = function (trans) {\n    var redirect = trans.to().redirectTo;\n    if (!redirect)\n        return;\n    var $state = trans.router.stateService;\n    function handleResult(result) {\n        if (!result)\n            return;\n        if (result instanceof targetState_1.TargetState)\n            return result;\n        if (predicates_1.isString(result))\n            return $state.target(result, trans.params(), trans.options());\n        if (result['state'] || result['params'])\n            return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n    }\n    if (predicates_1.isFunction(redirect)) {\n        return coreservices_1.services.$q.when(redirect(trans)).then(handleResult);\n    }\n    return handleResult(redirect);\n};\nexports.registerRedirectToHook = function (transitionService) {\n    return transitionService.onStart({ to: function (state) { return !!state.redirectTo; } }, redirectToHook);\n};\n//# sourceMappingURL=redirectTo.js.map","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TwilioTFLite = void 0;\nvar loadedScripts = new Set();\nvar model;\n/**\n * @private\n */\nvar TwilioTFLite = /** @class */ (function () {\n    function TwilioTFLite() {\n        this._inputBuffer = null;\n        this._isSimdEnabled = null;\n        this._tflite = null;\n    }\n    Object.defineProperty(TwilioTFLite.prototype, \"isSimdEnabled\", {\n        get: function () {\n            return this._isSimdEnabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    TwilioTFLite.prototype.initialize = function (assetsPath, modelName, moduleLoaderName, moduleSimdLoaderName) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, modelResponse, _b, tflite, modelBufferOffset;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (this._tflite) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, Promise.all([\n                                this._loadWasmModule(assetsPath, moduleLoaderName, moduleSimdLoaderName),\n                                fetch(\"\".concat(assetsPath).concat(modelName)),\n                            ])];\n                    case 1:\n                        _a = _c.sent(), modelResponse = _a[1];\n                        _b = model;\n                        if (_b) return [3 /*break*/, 3];\n                        return [4 /*yield*/, modelResponse.arrayBuffer()];\n                    case 2:\n                        _b = (_c.sent());\n                        _c.label = 3;\n                    case 3:\n                        model = _b;\n                        tflite = this._tflite;\n                        modelBufferOffset = tflite._getModelBufferMemoryOffset();\n                        tflite.HEAPU8.set(new Uint8Array(model), modelBufferOffset);\n                        tflite._loadModel(model.byteLength);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    TwilioTFLite.prototype.loadInputBuffer = function (inputBuffer) {\n        var tflite = this._tflite;\n        var height = tflite._getInputHeight();\n        var width = tflite._getInputWidth();\n        var pixels = width * height;\n        var tfliteInputMemoryOffset = tflite._getInputMemoryOffset() / 4;\n        for (var i = 0; i < pixels; i++) {\n            var curTFLiteOffset = tfliteInputMemoryOffset + i * 3;\n            var curImageBufferOffset = i * 4;\n            tflite.HEAPF32[curTFLiteOffset] = inputBuffer[curImageBufferOffset] / 255;\n            tflite.HEAPF32[curTFLiteOffset + 1] = inputBuffer[curImageBufferOffset + 1] / 255;\n            tflite.HEAPF32[curTFLiteOffset + 2] = inputBuffer[curImageBufferOffset + 2] / 255;\n        }\n        this._inputBuffer = inputBuffer;\n    };\n    TwilioTFLite.prototype.runInference = function () {\n        var tflite = this._tflite;\n        var height = tflite._getInputHeight();\n        var width = tflite._getInputWidth();\n        var pixels = width * height;\n        var tfliteOutputMemoryOffset = tflite._getOutputMemoryOffset() / 4;\n        tflite._runInference();\n        var inputBuffer = this._inputBuffer || new Uint8ClampedArray(pixels * 4);\n        for (var i = 0; i < pixels; i++) {\n            inputBuffer[i * 4 + 3] = Math.round(tflite.HEAPF32[tfliteOutputMemoryOffset + i] * 255);\n        }\n        return inputBuffer;\n    };\n    TwilioTFLite.prototype._loadScript = function (path) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (loadedScripts.has(path)) {\n                    return [2 /*return*/];\n                }\n                return [2 /*return*/, new Promise(function (resolve, reject) {\n                        var script = document.createElement('script');\n                        script.onload = function () {\n                            loadedScripts.add(path);\n                            resolve();\n                        };\n                        script.onerror = function () {\n                            reject();\n                        };\n                        document.head.append(script);\n                        script.src = path;\n                    })];\n            });\n        });\n    };\n    TwilioTFLite.prototype._loadWasmModule = function (assetsPath, moduleLoaderName, moduleSimdLoaderName) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, _b, _c;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        _d.trys.push([0, 3, , 6]);\n                        return [4 /*yield*/, this._loadScript(\"\".concat(assetsPath).concat(moduleSimdLoaderName))];\n                    case 1:\n                        _d.sent();\n                        _a = this;\n                        return [4 /*yield*/, createTwilioTFLiteSIMDModule()];\n                    case 2:\n                        _a._tflite = _d.sent();\n                        this._isSimdEnabled = true;\n                        return [3 /*break*/, 6];\n                    case 3:\n                        _b = _d.sent();\n                        return [4 /*yield*/, this._loadScript(\"\".concat(assetsPath).concat(moduleLoaderName))];\n                    case 4:\n                        _d.sent();\n                        _c = this;\n                        return [4 /*yield*/, createTwilioTFLiteModule()];\n                    case 5:\n                        _c._tflite = _d.sent();\n                        this._isSimdEnabled = false;\n                        return [3 /*break*/, 6];\n                    case 6: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return TwilioTFLite;\n}());\nexports.TwilioTFLite = TwilioTFLite;\n//# sourceMappingURL=TwilioTFLite.js.map","var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","\"use strict\";\n/** @module hooks */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans) {\n    if (!trans.valid()) {\n        throw new Error(trans.error());\n    }\n}\nexports.registerInvalidTransitionHook = function (transitionService) {\n    return transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n};\n//# sourceMappingURL=invalidTransition.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s audio.\n */\nvar NetworkQualityAudioStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityAudioStats, _super);\n    /**\n     * Construct a {@link NetworkQualityAudioStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityAudioStats(mediaLevels) {\n        return _super.call(this, mediaLevels) || this;\n    }\n    return NetworkQualityAudioStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityAudioStats;\n//# sourceMappingURL=networkqualityaudiostats.js.map","'use strict';\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events');\nvar nInstances = 0;\nvar MediaSignaling = /** @class */ (function (_super) {\n    __extends(MediaSignaling, _super);\n    /**\n     * Construct a {@link MediaSignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceive\n     * @param {string} channel\n     */\n    function MediaSignaling(getReceiver, channel, options) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            channel: {\n                value: channel,\n            },\n            _log: {\n                value: options.log.createLog('default', _this)\n            },\n            _getReceiver: {\n                value: getReceiver\n            },\n            _receiverPromise: {\n                value: null,\n                writable: true,\n            },\n            _transport: {\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(MediaSignaling.prototype, \"isSetup\", {\n        get: function () {\n            return !!this._receiverPromise;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    MediaSignaling.prototype.toString = function () {\n        return \"[MediaSignaling #\" + this._instanceId + \":\" + this.channel + \"]\";\n    };\n    MediaSignaling.prototype.setup = function (id) {\n        var _this = this;\n        this._teardown();\n        this._log.info('setting up msp transport for id:', id);\n        var receiverPromise = this._getReceiver(id).then(function (receiver) {\n            if (receiver.kind !== 'data') {\n                _this._log.error('Expected a DataTrackReceiver');\n            }\n            if (_this._receiverPromise !== receiverPromise) {\n                return;\n            }\n            try {\n                _this._transport = receiver.toDataTransport();\n                _this.emit('ready', _this._transport);\n            }\n            catch (ex) {\n                _this._log.error(\"Failed to toDataTransport: \" + ex.message);\n            }\n            receiver.once('close', function () { return _this._teardown(); });\n        });\n        this._receiverPromise = receiverPromise;\n    };\n    MediaSignaling.prototype._teardown = function () {\n        if (this._transport) {\n            this._log.info('Tearing down');\n            this._transport = null;\n            this._receiverPromise = null;\n            this.emit('teardown');\n        }\n    };\n    return MediaSignaling;\n}(EventEmitter));\nmodule.exports = MediaSignaling;\n//# sourceMappingURL=mediasignaling.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar transitionHook_1 = require(\"./transitionHook\");\n/**\n * This class defines a type of hook, such as `onBefore` or `onEnter`.\n * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n *\n * @interalapi\n */\nvar TransitionEventType = /** @class */ (function () {\n    /* tslint:disable:no-inferrable-types */\n    function TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n        if (reverseSort === void 0) { reverseSort = false; }\n        if (getResultHandler === void 0) { getResultHandler = transitionHook_1.TransitionHook.HANDLE_RESULT; }\n        if (getErrorHandler === void 0) { getErrorHandler = transitionHook_1.TransitionHook.REJECT_ERROR; }\n        if (synchronous === void 0) { synchronous = false; }\n        this.name = name;\n        this.hookPhase = hookPhase;\n        this.hookOrder = hookOrder;\n        this.criteriaMatchPath = criteriaMatchPath;\n        this.reverseSort = reverseSort;\n        this.getResultHandler = getResultHandler;\n        this.getErrorHandler = getErrorHandler;\n        this.synchronous = synchronous;\n    }\n    return TransitionEventType;\n}());\nexports.TransitionEventType = TransitionEventType;\n//# sourceMappingURL=transitionEventType.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/**\n * A {@link Timeout} represents a resettable and clearable timeout.\n */\nvar Timeout = /** @class */ (function () {\n    /**\n     * Construct a {@link Timeout}.\n     * @param {function} fn - Function to call\n     * @param {number} delay - Delay in milliseconds\n     * @param {boolean} [autoStart=true] - If true, then start the {@link Timeout}.\n     */\n    function Timeout(fn, delay, autoStart) {\n        if (autoStart === void 0) { autoStart = true; }\n        Object.defineProperties(this, {\n            _delay: {\n                value: delay,\n                writable: true\n            },\n            _fn: {\n                value: fn\n            },\n            _timeout: {\n                value: null,\n                writable: true\n            }\n        });\n        if (autoStart) {\n            this.start();\n        }\n    }\n    Object.defineProperty(Timeout.prototype, \"delay\", {\n        /**\n         * The {@link Timeout} delay in milliseconds.\n         * @property {number}\n         */\n        get: function () {\n            return this._delay;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Timeout.prototype, \"isSet\", {\n        /**\n         * Whether the {@link Timeout} is set.\n         * @property {boolean}\n         */\n        get: function () {\n            return !!this._timeout;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Update the {@link Timeout} delay.\n     * @param {number} delay\n     * @returns {void}\n     */\n    Timeout.prototype.setDelay = function (delay) {\n        this._delay = delay;\n    };\n    /**\n     * Start the {@link Timeout}, if not already started.\n     * @returns {void}\n     */\n    Timeout.prototype.start = function () {\n        var _this = this;\n        if (!this.isSet) {\n            this._timeout = setTimeout(function () {\n                var fn = _this._fn;\n                _this.clear();\n                fn();\n            }, this._delay);\n        }\n    };\n    /**\n     * Clear the {@link Timeout}.\n     * @returns {void}\n     */\n    Timeout.prototype.clear = function () {\n        clearTimeout(this._timeout);\n        this._timeout = null;\n    };\n    /**\n     * Reset the {@link Timeout}.\n     * @returns {void}\n     */\n    Timeout.prototype.reset = function () {\n        this.clear();\n        this.start();\n    };\n    return Timeout;\n}());\nmodule.exports = Timeout;\n//# sourceMappingURL=timeout.js.map","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort:\n            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays:\n            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n                '_'\n            ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _immutable = require(\"immutable\");\n\nvar _getIn = _interopRequireDefault(require(\"../plain/getIn\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* Code from github.com/erikras/redux-form by Erik Rasmussen */\nvar getIn = function getIn(state, path) {\n  return _immutable.Iterable.isIterable(state) ? state.getIn(path) : (0, _getIn[\"default\"])(state, path);\n};\n\nvar _default = getIn;\nexports[\"default\"] = _default;","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react'), require('prop-types')) :\n\ttypeof define === 'function' && define.amd ? define(['react', 'prop-types'], factory) :\n\t(global.reactCurrencyFormatter = factory(global.React,global.PropTypes));\n}(this, (function (react,PropTypes) { 'use strict';\n\nreact = react && react.hasOwnProperty('default') ? react['default'] : react;\nPropTypes = PropTypes && PropTypes.hasOwnProperty('default') ? PropTypes['default'] : PropTypes;\n\nvar locales = {\n  af: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: ','\n  },\n  af_NA: {\n    h: 'af'\n  },\n  af_ZA: {\n    h: 'af'\n  },\n  agq: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: ','\n  },\n  agq_CM: {\n    h: 'agq'\n  },\n  ak: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ak_GH: {\n    h: 'ak'\n  },\n  am: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  am_ET: {\n    h: 'am'\n  },\n  ar: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ar_001: {\n    h: 'ar'\n  },\n  ar_AE: {\n    h: 'ar'\n  },\n  ar_BH: {\n    h: 'ar'\n  },\n  ar_DJ: {\n    h: 'ar'\n  },\n  ar_DZ: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_EG: {\n    h: 'ar'\n  },\n  ar_EH: {\n    h: 'ar'\n  },\n  ar_ER: {\n    h: 'ar'\n  },\n  ar_IL: {\n    h: 'ar'\n  },\n  ar_IQ: {\n    h: 'ar'\n  },\n  ar_JO: {\n    h: 'ar'\n  },\n  ar_KM: {\n    h: 'ar'\n  },\n  ar_KW: {\n    h: 'ar'\n  },\n  ar_LB: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_LY: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_MA: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_MR: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_OM: {\n    h: 'ar'\n  },\n  ar_PS: {\n    h: 'ar'\n  },\n  ar_QA: {\n    h: 'ar'\n  },\n  ar_SA: {\n    h: 'ar'\n  },\n  ar_SD: {\n    h: 'ar'\n  },\n  ar_SO: {\n    h: 'ar'\n  },\n  ar_SS: {\n    h: 'ar'\n  },\n  ar_SY: {\n    h: 'ar'\n  },\n  ar_TD: {\n    h: 'ar'\n  },\n  ar_TN: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ar_YE: {\n    h: 'ar'\n  },\n  as: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  as_IN: {\n    h: 'as'\n  },\n  asa: {\n    p: '#,##0.00 !',\n    g: ',',\n    d: '.'\n  },\n  asa_TZ: {\n    h: 'asa'\n  },\n  ast: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  ast_ES: {\n    h: 'ast'\n  },\n  az: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  az_Cyrl: {\n    h: 'az'\n  },\n  az_Cyrl_AZ: {\n    h: 'az'\n  },\n  az_Latn: {\n    h: 'az'\n  },\n  az_Latn_AZ: {\n    h: 'az'\n  },\n  bas: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  bas_CM: {\n    h: 'bas'\n  },\n  be: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  be_BY: {\n    h: 'be'\n  },\n  bem: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  bem_ZM: {\n    h: 'bem'\n  },\n  bez: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  bez_TZ: {\n    h: 'bez'\n  },\n  bg: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  bg_BG: {\n    h: 'bg'\n  },\n  bm: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  bm_ML: {\n    h: 'bm'\n  },\n  bn: {\n    p: '#,##,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  bn_BD: {\n    h: 'bn'\n  },\n  bn_IN: {\n    h: 'bn'\n  },\n  bo: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  bo_CN: {\n    h: 'bo'\n  },\n  bo_IN: {\n    h: 'bo'\n  },\n  br: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  br_FR: {\n    h: 'br'\n  },\n  brx: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  brx_IN: {\n    h: 'brx'\n  },\n  bs: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  bs_Cyrl: {\n    h: 'bs'\n  },\n  bs_Cyrl_BA: {\n    h: 'bs'\n  },\n  bs_Latn: {\n    h: 'bs'\n  },\n  bs_Latn_BA: {\n    h: 'bs'\n  },\n  ca: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  ca_AD: {\n    h: 'ca'\n  },\n  ca_ES: {\n    h: 'ca'\n  },\n  ca_ES_VALENCIA: {\n    h: 'ca'\n  },\n  ca_FR: {\n    h: 'ca'\n  },\n  ca_IT: {\n    h: 'ca'\n  },\n  ce: {\n    p: '#,##0.00 !',\n    g: ',',\n    d: '.'\n  },\n  ce_RU: {\n    h: 'ce'\n  },\n  cgg: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  cgg_UG: {\n    h: 'cgg'\n  },\n  chr: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  chr_US: {\n    h: 'chr'\n  },\n  ckb: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ckb_IQ: {\n    h: 'ckb'\n  },\n  ckb_IR: {\n    h: 'ckb'\n  },\n  cs: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  cs_CZ: {\n    h: 'cs'\n  },\n  cu: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  cu_RU: {\n    h: 'cu'\n  },\n  cy: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  cy_GB: {\n    h: 'cy'\n  },\n  da: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  da_DK: {\n    h: 'da'\n  },\n  da_GL: {\n    h: 'da'\n  },\n  dav: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  dav_KE: {\n    h: 'dav'\n  },\n  de: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  de_AT: {\n    p: '! #,##0.00',\n    g: ' ',\n    d: ','\n  },\n  de_BE: {\n    h: 'de'\n  },\n  de_CH: {\n    p: '! #,##0.00;!-#,##0.00',\n    g: '\\'',\n    d: '.'\n  },\n  de_DE: {\n    h: 'de'\n  },\n  de_LI: {\n    p: '! #,##0.00',\n    g: '\\'',\n    d: '.'\n  },\n  de_LU: {\n    h: 'de'\n  },\n  dje: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: '.'\n  },\n  dje_NE: {\n    h: 'dje'\n  },\n  dsb: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  dsb_DE: {\n    h: 'dsb'\n  },\n  dua: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  dua_CM: {\n    h: 'dua'\n  },\n  dyo: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  dyo_SN: {\n    h: 'dyo'\n  },\n  dz: {\n    p: '!#,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  dz_BT: {\n    h: 'dz'\n  },\n  ebu: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ebu_KE: {\n    h: 'ebu'\n  },\n  ee: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ee_GH: {\n    h: 'ee'\n  },\n  ee_TG: {\n    h: 'ee'\n  },\n  el: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  el_CY: {\n    h: 'el'\n  },\n  el_GR: {\n    h: 'el'\n  },\n  en: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  en_001: {\n    h: 'en'\n  },\n  en_150: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  en_AG: {\n    h: 'en'\n  },\n  en_AI: {\n    h: 'en'\n  },\n  en_AS: {\n    h: 'en'\n  },\n  en_AT: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  en_AU: {\n    h: 'en'\n  },\n  en_BB: {\n    h: 'en'\n  },\n  en_BE: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  en_BI: {\n    h: 'en'\n  },\n  en_BM: {\n    h: 'en'\n  },\n  en_BS: {\n    h: 'en'\n  },\n  en_BW: {\n    h: 'en'\n  },\n  en_BZ: {\n    h: 'en'\n  },\n  en_CA: {\n    h: 'en'\n  },\n  en_CC: {\n    h: 'en'\n  },\n  en_CH: {\n    p: '! #,##0.00;!-#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  en_CK: {\n    h: 'en'\n  },\n  en_CM: {\n    h: 'en'\n  },\n  en_CX: {\n    h: 'en'\n  },\n  en_CY: {\n    h: 'en'\n  },\n  en_DE: {\n    h: 'en'\n  },\n  en_DG: {\n    h: 'en'\n  },\n  en_DK: {\n    h: 'en'\n  },\n  en_DM: {\n    h: 'en'\n  },\n  en_ER: {\n    h: 'en'\n  },\n  en_FI: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: '.'\n  },\n  en_FJ: {\n    h: 'en'\n  },\n  en_FK: {\n    h: 'en'\n  },\n  en_FM: {\n    h: 'en'\n  },\n  en_GB: {\n    h: 'en'\n  },\n  en_GD: {\n    h: 'en'\n  },\n  en_GG: {\n    h: 'en'\n  },\n  en_GH: {\n    h: 'en'\n  },\n  en_GI: {\n    h: 'en'\n  },\n  en_GM: {\n    h: 'en'\n  },\n  en_GU: {\n    h: 'en'\n  },\n  en_GY: {\n    h: 'en'\n  },\n  en_HK: {\n    h: 'en'\n  },\n  en_IE: {\n    h: 'en'\n  },\n  en_IL: {\n    h: 'en'\n  },\n  en_IM: {\n    h: 'en'\n  },\n  en_IN: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  en_IO: {\n    h: 'en'\n  },\n  en_JE: {\n    h: 'en'\n  },\n  en_JM: {\n    h: 'en'\n  },\n  en_KE: {\n    h: 'en'\n  },\n  en_KI: {\n    h: 'en'\n  },\n  en_KN: {\n    h: 'en'\n  },\n  en_KY: {\n    h: 'en'\n  },\n  en_LC: {\n    h: 'en'\n  },\n  en_LR: {\n    h: 'en'\n  },\n  en_LS: {\n    h: 'en'\n  },\n  en_MG: {\n    h: 'en'\n  },\n  en_MH: {\n    h: 'en'\n  },\n  en_MO: {\n    h: 'en'\n  },\n  en_MP: {\n    h: 'en'\n  },\n  en_MS: {\n    h: 'en'\n  },\n  en_MT: {\n    h: 'en'\n  },\n  en_MU: {\n    h: 'en'\n  },\n  en_MW: {\n    h: 'en'\n  },\n  en_MY: {\n    h: 'en'\n  },\n  en_NA: {\n    h: 'en'\n  },\n  en_NF: {\n    h: 'en'\n  },\n  en_NG: {\n    h: 'en'\n  },\n  en_NL: {\n    p: '! #,##0.00;! -#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  en_NR: {\n    h: 'en'\n  },\n  en_NU: {\n    h: 'en'\n  },\n  en_NZ: {\n    h: 'en'\n  },\n  en_PG: {\n    h: 'en'\n  },\n  en_PH: {\n    h: 'en'\n  },\n  en_PK: {\n    h: 'en'\n  },\n  en_PN: {\n    h: 'en'\n  },\n  en_PR: {\n    h: 'en'\n  },\n  en_PW: {\n    h: 'en'\n  },\n  en_RW: {\n    h: 'en'\n  },\n  en_SB: {\n    h: 'en'\n  },\n  en_SC: {\n    h: 'en'\n  },\n  en_SD: {\n    h: 'en'\n  },\n  en_SE: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: '.'\n  },\n  en_SG: {\n    h: 'en'\n  },\n  en_SH: {\n    h: 'en'\n  },\n  en_SI: {\n    h: 'en'\n  },\n  en_SL: {\n    h: 'en'\n  },\n  en_SS: {\n    h: 'en'\n  },\n  en_SX: {\n    h: 'en'\n  },\n  en_SZ: {\n    h: 'en'\n  },\n  en_TC: {\n    h: 'en'\n  },\n  en_TK: {\n    h: 'en'\n  },\n  en_TO: {\n    h: 'en'\n  },\n  en_TT: {\n    h: 'en'\n  },\n  en_TV: {\n    h: 'en'\n  },\n  en_TZ: {\n    h: 'en'\n  },\n  en_UG: {\n    h: 'en'\n  },\n  en_UM: {\n    h: 'en'\n  },\n  en_US: {\n    h: 'en'\n  },\n  en_US_POSIX: {\n    p: '! #0.00',\n    g: ',',\n    d: '.'\n  },\n  en_VC: {\n    h: 'en'\n  },\n  en_VG: {\n    h: 'en'\n  },\n  en_VI: {\n    h: 'en'\n  },\n  en_VU: {\n    h: 'en'\n  },\n  en_WS: {\n    h: 'en'\n  },\n  en_ZA: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: ','\n  },\n  en_ZM: {\n    h: 'en'\n  },\n  en_ZW: {\n    h: 'en'\n  },\n  eo: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: ','\n  },\n  eo_001: {\n    h: 'eo'\n  },\n  es: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  es_419: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  es_AR: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_BO: {\n    h: 'es'\n  },\n  es_BR: {\n    h: 'es'\n  },\n  es_CL: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_CO: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_CR: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  es_CU: {\n    h: 'es'\n  },\n  es_DO: {\n    h: 'es'\n  },\n  es_EA: {\n    h: 'es'\n  },\n  es_EC: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_ES: {\n    h: 'es'\n  },\n  es_GQ: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_GT: {\n    h: 'es'\n  },\n  es_HN: {\n    h: 'es'\n  },\n  es_IC: {\n    h: 'es'\n  },\n  es_MX: {\n    h: 'es'\n  },\n  es_NI: {\n    h: 'es'\n  },\n  es_PA: {\n    h: 'es'\n  },\n  es_PE: {\n    h: 'es'\n  },\n  es_PH: {\n    h: 'es'\n  },\n  es_PR: {\n    h: 'es'\n  },\n  es_PY: {\n    p: '! #,##0.00;! -#,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_SV: {\n    h: 'es'\n  },\n  es_US: {\n    h: 'es'\n  },\n  es_UY: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  es_VE: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  et: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  et_EE: {\n    h: 'et'\n  },\n  eu: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  eu_ES: {\n    h: 'eu'\n  },\n  ewo: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ewo_CM: {\n    h: 'ewo'\n  },\n  fa: {\n    p: '‎!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  fa_AF: {\n    h: 'fa'\n  },\n  fa_IR: {\n    h: 'fa'\n  },\n  ff: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ff_CM: {\n    h: 'ff'\n  },\n  ff_GN: {\n    h: 'ff'\n  },\n  ff_MR: {\n    h: 'ff'\n  },\n  ff_SN: {\n    h: 'ff'\n  },\n  fi: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  fi_FI: {\n    h: 'fi'\n  },\n  fil: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  fil_PH: {\n    h: 'fil'\n  },\n  fo: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  fo_DK: {\n    h: 'fo'\n  },\n  fo_FO: {\n    h: 'fo'\n  },\n  fr: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  fr_BE: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  fr_BF: {\n    h: 'fr'\n  },\n  fr_BI: {\n    h: 'fr'\n  },\n  fr_BJ: {\n    h: 'fr'\n  },\n  fr_BL: {\n    h: 'fr'\n  },\n  fr_CA: {\n    h: 'fr'\n  },\n  fr_CD: {\n    h: 'fr'\n  },\n  fr_CF: {\n    h: 'fr'\n  },\n  fr_CG: {\n    h: 'fr'\n  },\n  fr_CH: {\n    p: '! #,##0.00;!-#,##0.00',\n    g: ' ',\n    d: '.'\n  },\n  fr_CI: {\n    h: 'fr'\n  },\n  fr_CM: {\n    h: 'fr'\n  },\n  fr_DJ: {\n    h: 'fr'\n  },\n  fr_DZ: {\n    h: 'fr'\n  },\n  fr_FR: {\n    h: 'fr'\n  },\n  fr_GA: {\n    h: 'fr'\n  },\n  fr_GF: {\n    h: 'fr'\n  },\n  fr_GN: {\n    h: 'fr'\n  },\n  fr_GP: {\n    h: 'fr'\n  },\n  fr_GQ: {\n    h: 'fr'\n  },\n  fr_HT: {\n    h: 'fr'\n  },\n  fr_KM: {\n    h: 'fr'\n  },\n  fr_LU: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  fr_MA: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  fr_MC: {\n    h: 'fr'\n  },\n  fr_MF: {\n    h: 'fr'\n  },\n  fr_MG: {\n    h: 'fr'\n  },\n  fr_ML: {\n    h: 'fr'\n  },\n  fr_MQ: {\n    h: 'fr'\n  },\n  fr_MR: {\n    h: 'fr'\n  },\n  fr_MU: {\n    h: 'fr'\n  },\n  fr_NC: {\n    h: 'fr'\n  },\n  fr_NE: {\n    h: 'fr'\n  },\n  fr_PF: {\n    h: 'fr'\n  },\n  fr_PM: {\n    h: 'fr'\n  },\n  fr_RE: {\n    h: 'fr'\n  },\n  fr_RW: {\n    h: 'fr'\n  },\n  fr_SC: {\n    h: 'fr'\n  },\n  fr_SN: {\n    h: 'fr'\n  },\n  fr_SY: {\n    h: 'fr'\n  },\n  fr_TD: {\n    h: 'fr'\n  },\n  fr_TG: {\n    h: 'fr'\n  },\n  fr_TN: {\n    h: 'fr'\n  },\n  fr_VU: {\n    h: 'fr'\n  },\n  fr_WF: {\n    h: 'fr'\n  },\n  fr_YT: {\n    h: 'fr'\n  },\n  fur: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  fur_IT: {\n    h: 'fur'\n  },\n  fy: {\n    p: '! #,##0.00;! #,##0.00-',\n    g: '.',\n    d: ','\n  },\n  fy_NL: {\n    h: 'fy'\n  },\n  ga: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ga_IE: {\n    h: 'ga'\n  },\n  gd: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  gd_GB: {\n    h: 'gd'\n  },\n  gl: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  gl_ES: {\n    h: 'gl'\n  },\n  gsw: {\n    p: '#,##0.00 !',\n    g: '’',\n    d: '.'\n  },\n  gsw_CH: {\n    h: 'gsw'\n  },\n  gsw_FR: {\n    h: 'gsw'\n  },\n  gsw_LI: {\n    h: 'gsw'\n  },\n  gu: {\n    p: '!#,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  gu_IN: {\n    h: 'gu'\n  },\n  guz: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  guz_KE: {\n    h: 'guz'\n  },\n  gv: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  gv_IM: {\n    h: 'gv'\n  },\n  ha: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ha_GH: {\n    h: 'ha'\n  },\n  ha_NE: {\n    h: 'ha'\n  },\n  ha_NG: {\n    h: 'ha'\n  },\n  haw: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  haw_US: {\n    h: 'haw'\n  },\n  he: {\n    p: '#,##0.00 !',\n    g: ',',\n    d: '.'\n  },\n  he_IL: {\n    h: 'he'\n  },\n  hi: {\n    p: '!#,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  hi_IN: {\n    h: 'hi'\n  },\n  hr: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  hr_BA: {\n    h: 'hr'\n  },\n  hr_HR: {\n    h: 'hr'\n  },\n  hsb: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  hsb_DE: {\n    h: 'hsb'\n  },\n  hu: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  hu_HU: {\n    h: 'hu'\n  },\n  hy: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  hy_AM: {\n    h: 'hy'\n  },\n  id: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  id_ID: {\n    h: 'id'\n  },\n  ig: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ig_NG: {\n    h: 'ig'\n  },\n  ii: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ii_CN: {\n    h: 'ii'\n  },\n  is: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  is_IS: {\n    h: 'is'\n  },\n  it: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  it_CH: {\n    p: '! #,##0.00;!-#,##0.00',\n    g: '\\'',\n    d: '.'\n  },\n  it_IT: {\n    h: 'it'\n  },\n  it_SM: {\n    h: 'it'\n  },\n  ja: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ja_JP: {\n    h: 'ja'\n  },\n  jgo: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  jgo_CM: {\n    h: 'jgo'\n  },\n  jmc: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  jmc_TZ: {\n    h: 'jmc'\n  },\n  ka: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ka_GE: {\n    h: 'ka'\n  },\n  kab: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: ','\n  },\n  kab_DZ: {\n    h: 'kab'\n  },\n  kam: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kam_KE: {\n    h: 'kam'\n  },\n  kde: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kde_TZ: {\n    h: 'kde'\n  },\n  kea: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  kea_CV: {\n    h: 'kea'\n  },\n  khq: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: '.'\n  },\n  khq_ML: {\n    h: 'khq'\n  },\n  ki: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ki_KE: {\n    h: 'ki'\n  },\n  kk: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  kk_KZ: {\n    h: 'kk'\n  },\n  kkj: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  kkj_CM: {\n    h: 'kkj'\n  },\n  kl: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  kl_GL: {\n    h: 'kl'\n  },\n  kln: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kln_KE: {\n    h: 'kln'\n  },\n  km: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  km_KH: {\n    h: 'km'\n  },\n  kn: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kn_IN: {\n    h: 'kn'\n  },\n  ko: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ko_KP: {\n    h: 'ko'\n  },\n  ko_KR: {\n    h: 'ko'\n  },\n  kok: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kok_IN: {\n    h: 'kok'\n  },\n  ks: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ks_IN: {\n    h: 'ks'\n  },\n  ksb: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  ksb_TZ: {\n    h: 'ksb'\n  },\n  ksf: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ksf_CM: {\n    h: 'ksf'\n  },\n  ksh: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ksh_DE: {\n    h: 'ksh'\n  },\n  kw: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  kw_GB: {\n    h: 'kw'\n  },\n  ky: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ky_KG: {\n    h: 'ky'\n  },\n  lag: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  lag_TZ: {\n    h: 'lag'\n  },\n  lb: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  lb_LU: {\n    h: 'lb'\n  },\n  lg: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  lg_UG: {\n    h: 'lg'\n  },\n  lkt: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  lkt_US: {\n    h: 'lkt'\n  },\n  ln: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  ln_AO: {\n    h: 'ln'\n  },\n  ln_CD: {\n    h: 'ln'\n  },\n  ln_CF: {\n    h: 'ln'\n  },\n  ln_CG: {\n    h: 'ln'\n  },\n  lo: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  lo_LA: {\n    h: 'lo'\n  },\n  lrc: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  lrc_IQ: {\n    h: 'lrc'\n  },\n  lrc_IR: {\n    h: 'lrc'\n  },\n  lt: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  lt_LT: {\n    h: 'lt'\n  },\n  lu: {\n    p: '#,##0.00!',\n    g: '.',\n    d: ','\n  },\n  lu_CD: {\n    h: 'lu'\n  },\n  luo: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  luo_KE: {\n    h: 'luo'\n  },\n  luy: {\n    p: '!#,##0.00;!- #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  luy_KE: {\n    h: 'luy'\n  },\n  lv: {\n    p: '#0.00 !',\n    g: ' ',\n    d: ','\n  },\n  lv_LV: {\n    h: 'lv'\n  },\n  mas: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mas_KE: {\n    h: 'mas'\n  },\n  mas_TZ: {\n    h: 'mas'\n  },\n  mer: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mer_KE: {\n    h: 'mer'\n  },\n  mfe: {\n    p: '!#,##0.00',\n    g: ' ',\n    d: '.'\n  },\n  mfe_MU: {\n    h: 'mfe'\n  },\n  mg: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mg_MG: {\n    h: 'mg'\n  },\n  mgh: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  mgh_MZ: {\n    h: 'mgh'\n  },\n  mgo: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mgo_CM: {\n    h: 'mgo'\n  },\n  mk: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  mk_MK: {\n    h: 'mk'\n  },\n  ml: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ml_IN: {\n    h: 'ml'\n  },\n  mn: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mn_MN: {\n    h: 'mn'\n  },\n  mr: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mr_IN: {\n    h: 'mr'\n  },\n  ms: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ms_BN: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  ms_MY: {\n    h: 'ms'\n  },\n  ms_SG: {\n    h: 'ms'\n  },\n  mt: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mt_MT: {\n    h: 'mt'\n  },\n  mua: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  mua_CM: {\n    h: 'mua'\n  },\n  my: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  my_MM: {\n    h: 'my'\n  },\n  mzn: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  mzn_IR: {\n    h: 'mzn'\n  },\n  naq: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  naq_NA: {\n    h: 'naq'\n  },\n  nb: {\n    p: '! #,##0.00',\n    g: ' ',\n    d: ','\n  },\n  nb_NO: {\n    h: 'nb'\n  },\n  nb_SJ: {\n    h: 'nb'\n  },\n  nd: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  nd_ZW: {\n    h: 'nd'\n  },\n  ne: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ne_IN: {\n    h: 'ne'\n  },\n  ne_NP: {\n    h: 'ne'\n  },\n  nl: {\n    p: '! #,##0.00;! -#,##0.00',\n    g: '.',\n    d: ','\n  },\n  nl_AW: {\n    h: 'nl'\n  },\n  nl_BE: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  nl_BQ: {\n    h: 'nl'\n  },\n  nl_CW: {\n    h: 'nl'\n  },\n  nl_NL: {\n    h: 'nl'\n  },\n  nl_SR: {\n    h: 'nl'\n  },\n  nl_SX: {\n    h: 'nl'\n  },\n  nmg: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  nmg_CM: {\n    h: 'nmg'\n  },\n  nn: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  nn_NO: {\n    h: 'nn'\n  },\n  nnh: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  nnh_CM: {\n    h: 'nnh'\n  },\n  nus: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  nus_SS: {\n    h: 'nus'\n  },\n  nyn: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  nyn_UG: {\n    h: 'nyn'\n  },\n  om: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  om_ET: {\n    h: 'om'\n  },\n  om_KE: {\n    h: 'om'\n  },\n  or: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  or_IN: {\n    h: 'or'\n  },\n  os: {\n    p: '! #,##0.00',\n    g: ' ',\n    d: ','\n  },\n  os_GE: {\n    h: 'os'\n  },\n  os_RU: {\n    h: 'os'\n  },\n  pa: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  pa_Arab: {\n    h: 'pa'\n  },\n  pa_Arab_PK: {\n    h: 'pa'\n  },\n  pa_Guru: {\n    h: 'pa'\n  },\n  pa_Guru_IN: {\n    h: 'pa'\n  },\n  pl: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  pl_PL: {\n    h: 'pl'\n  },\n  prg: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  prg_001: {\n    h: 'prg'\n  },\n  ps: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  ps_AF: {\n    h: 'ps'\n  },\n  pt: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  pt_AO: {\n    h: 'pt'\n  },\n  pt_BR: {\n    h: 'pt'\n  },\n  pt_CH: {\n    h: 'pt'\n  },\n  pt_CV: {\n    h: 'pt'\n  },\n  pt_GQ: {\n    h: 'pt'\n  },\n  pt_GW: {\n    h: 'pt'\n  },\n  pt_LU: {\n    h: 'pt'\n  },\n  pt_MO: {\n    h: 'pt'\n  },\n  pt_MZ: {\n    h: 'pt'\n  },\n  pt_PT: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  pt_ST: {\n    h: 'pt'\n  },\n  pt_TL: {\n    h: 'pt'\n  },\n  qu: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  qu_BO: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  qu_EC: {\n    h: 'qu'\n  },\n  qu_PE: {\n    h: 'qu'\n  },\n  rm: {\n    p: '#,##0.00 !',\n    g: '’',\n    d: '.'\n  },\n  rm_CH: {\n    h: 'rm'\n  },\n  rn: {\n    p: '#,##0.00!',\n    g: '.',\n    d: ','\n  },\n  rn_BI: {\n    h: 'rn'\n  },\n  ro: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  ro_MD: {\n    h: 'ro'\n  },\n  ro_RO: {\n    h: 'ro'\n  },\n  rof: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  rof_TZ: {\n    h: 'rof'\n  },\n  root: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ru: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  ru_BY: {\n    h: 'ru'\n  },\n  ru_KG: {\n    h: 'ru'\n  },\n  ru_KZ: {\n    h: 'ru'\n  },\n  ru_MD: {\n    h: 'ru'\n  },\n  ru_RU: {\n    h: 'ru'\n  },\n  ru_UA: {\n    h: 'ru'\n  },\n  rw: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  rw_RW: {\n    h: 'rw'\n  },\n  rwk: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  rwk_TZ: {\n    h: 'rwk'\n  },\n  sah: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  sah_RU: {\n    h: 'sah'\n  },\n  saq: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  saq_KE: {\n    h: 'saq'\n  },\n  sbp: {\n    p: '#,##0.00!',\n    g: ',',\n    d: '.'\n  },\n  sbp_TZ: {\n    h: 'sbp'\n  },\n  se: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  se_FI: {\n    h: 'se'\n  },\n  se_NO: {\n    h: 'se'\n  },\n  se_SE: {\n    h: 'se'\n  },\n  seh: {\n    p: '#,##0.00!',\n    g: '.',\n    d: ','\n  },\n  seh_MZ: {\n    h: 'seh'\n  },\n  ses: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: '.'\n  },\n  ses_ML: {\n    h: 'ses'\n  },\n  sg: {\n    p: '!#,##0.00;!-#,##0.00',\n    g: '.',\n    d: ','\n  },\n  sg_CF: {\n    h: 'sg'\n  },\n  shi: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: ','\n  },\n  shi_Latn: {\n    h: 'shi'\n  },\n  shi_Latn_MA: {\n    h: 'shi'\n  },\n  shi_Tfng: {\n    h: 'shi'\n  },\n  shi_Tfng_MA: {\n    h: 'shi'\n  },\n  si: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  si_LK: {\n    h: 'si'\n  },\n  sk: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  sk_SK: {\n    h: 'sk'\n  },\n  sl: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  sl_SI: {\n    h: 'sl'\n  },\n  smn: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  smn_FI: {\n    h: 'smn'\n  },\n  sn: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  sn_ZW: {\n    h: 'sn'\n  },\n  so: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  so_DJ: {\n    h: 'so'\n  },\n  so_ET: {\n    h: 'so'\n  },\n  so_KE: {\n    h: 'so'\n  },\n  so_SO: {\n    h: 'so'\n  },\n  sq: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  sq_AL: {\n    h: 'sq'\n  },\n  sq_MK: {\n    h: 'sq'\n  },\n  sq_XK: {\n    h: 'sq'\n  },\n  sr: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  sr_Cyrl: {\n    h: 'sr'\n  },\n  sr_Cyrl_BA: {\n    h: 'sr'\n  },\n  sr_Cyrl_ME: {\n    h: 'sr'\n  },\n  sr_Cyrl_RS: {\n    h: 'sr'\n  },\n  sr_Cyrl_XK: {\n    h: 'sr'\n  },\n  sr_Latn: {\n    h: 'sr'\n  },\n  sr_Latn_BA: {\n    h: 'sr'\n  },\n  sr_Latn_ME: {\n    h: 'sr'\n  },\n  sr_Latn_RS: {\n    h: 'sr'\n  },\n  sr_Latn_XK: {\n    h: 'sr'\n  },\n  sv: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  sv_AX: {\n    h: 'sv'\n  },\n  sv_FI: {\n    h: 'sv'\n  },\n  sv_SE: {\n    h: 'sv'\n  },\n  sw: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  sw_CD: {\n    p: '!#,##0.00',\n    g: '.',\n    d: ','\n  },\n  sw_KE: {\n    h: 'sw'\n  },\n  sw_TZ: {\n    h: 'sw'\n  },\n  sw_UG: {\n    h: 'sw'\n  },\n  ta: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ta_IN: {\n    h: 'ta'\n  },\n  ta_LK: {\n    h: 'ta'\n  },\n  ta_MY: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ta_SG: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  te: {\n    p: '!#,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  te_IN: {\n    h: 'te'\n  },\n  teo: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  teo_KE: {\n    h: 'teo'\n  },\n  teo_UG: {\n    h: 'teo'\n  },\n  th: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  th_TH: {\n    h: 'th'\n  },\n  ti: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ti_ER: {\n    h: 'ti'\n  },\n  ti_ET: {\n    h: 'ti'\n  },\n  tk: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  tk_TM: {\n    h: 'tk'\n  },\n  to: {\n    p: '! #,##0.00',\n    g: ',',\n    d: '.'\n  },\n  to_TO: {\n    h: 'to'\n  },\n  tr: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  tr_CY: {\n    h: 'tr'\n  },\n  tr_TR: {\n    h: 'tr'\n  },\n  twq: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: '.'\n  },\n  twq_NE: {\n    h: 'twq'\n  },\n  tzm: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  tzm_MA: {\n    h: 'tzm'\n  },\n  ug: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ug_CN: {\n    h: 'ug'\n  },\n  uk: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  uk_UA: {\n    h: 'uk'\n  },\n  ur: {\n    p: '! #,##,##0.00',\n    g: ',',\n    d: '.'\n  },\n  ur_IN: {\n    h: 'ur'\n  },\n  ur_PK: {\n    h: 'ur'\n  },\n  uz: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  uz_Arab: {\n    p: '#,##0.00 !',\n    g: '.',\n    d: ','\n  },\n  uz_Arab_AF: {\n    h: 'uz'\n  },\n  uz_Cyrl: {\n    p: '! #,##0.00',\n    g: ' ',\n    d: ','\n  },\n  uz_Cyrl_UZ: {\n    h: 'uz'\n  },\n  uz_Latn: {\n    h: 'uz'\n  },\n  uz_Latn_UZ: {\n    h: 'uz'\n  },\n  vai: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  vai_Latn: {\n    h: 'vai'\n  },\n  vai_Latn_LR: {\n    h: 'vai'\n  },\n  vai_Vaii: {\n    h: 'vai'\n  },\n  vai_Vaii_LR: {\n    h: 'vai'\n  },\n  vi: {\n    p: '! #,##0.00',\n    g: '.',\n    d: ','\n  },\n  vi_VN: {\n    h: 'vi'\n  },\n  vo: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  vo_001: {\n    h: 'vo'\n  },\n  vun: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  vun_TZ: {\n    h: 'vun'\n  },\n  wae: {\n    p: '!#,##0.00',\n    g: '’',\n    d: ','\n  },\n  wae_CH: {\n    h: 'wae'\n  },\n  xog: {\n    p: '#,##0.00 !',\n    g: ',',\n    d: '.'\n  },\n  xog_UG: {\n    h: 'xog'\n  },\n  yav: {\n    p: '#,##0.00 !',\n    g: ' ',\n    d: ','\n  },\n  yav_CM: {\n    h: 'yav'\n  },\n  yi: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  yi_001: {\n    h: 'yi'\n  },\n  yo: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  yo_BJ: {\n    h: 'yo'\n  },\n  yo_NG: {\n    h: 'yo'\n  },\n  yue: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  yue_HK: {\n    h: 'yue'\n  },\n  zgh: {\n    p: '#,##0.00!',\n    g: ' ',\n    d: ','\n  },\n  zgh_MA: {\n    h: 'zgh'\n  },\n  zh: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  zh_Hans: {\n    h: 'zh'\n  },\n  zh_Hans_CN: {\n    h: 'zh'\n  },\n  zh_Hans_HK: {\n    h: 'zh'\n  },\n  zh_Hans_MO: {\n    h: 'zh'\n  },\n  zh_Hans_SG: {\n    h: 'zh'\n  },\n  zh_Hant: {\n    h: 'zh'\n  },\n  zh_Hant_HK: {\n    h: 'zh'\n  },\n  zh_Hant_MO: {\n    h: 'zh'\n  },\n  zh_Hant_TW: {\n    h: 'zh'\n  },\n  zu: {\n    p: '!#,##0.00',\n    g: ',',\n    d: '.'\n  },\n  zu_ZA: {\n    h: 'zu'\n  }\n};\n\nvar defaultLocales = {\n  AED: 'ar_AE',\n  AFN: 'fa_AF',\n  ALL: 'sq',\n  AMD: 'hy',\n  ANG: 'nl',\n  AOA: 'pt_AO',\n  ARS: 'es_AR',\n  AUD: 'en',\n  AWG: 'nl_AW',\n  AZN: 'az',\n  BAM: 'bs',\n  BBD: 'en_BB',\n  BDT: 'bn_BD',\n  BGN: 'bg',\n  BHD: 'ar_BH',\n  BIF: 'fr_BI',\n  BMD: 'en_BM',\n  BND: 'ms_BN',\n  BOB: 'es_BO',\n  BRL: 'pt_BR',\n  BSD: 'en_BS',\n  BTN: 'dz',\n  BWP: 'en_BW',\n  BYR: 'be',\n  BZD: 'en_BZ',\n  CAD: 'en_CA',\n  CDF: 'fr_CD',\n  CHF: 'de_CH',\n  CLP: 'es_CL',\n  CNY: 'zh_Hans_CN',\n  COP: 'es_CO',\n  CRC: 'es_CR',\n  CUP: 'es_CU',\n  CVE: 'pt_CV',\n  CZK: 'cs',\n  DJF: 'fr_DJ',\n  DKK: 'da_DK',\n  DOP: 'es_DO',\n  DZD: 'ar_DZ',\n  EGP: 'ar_EG',\n  ERN: 'ti_ER',\n  ETB: 'am',\n  EUR: 'de',\n  FJD: 'en_FJ',\n  FKP: 'en_FK',\n  GBP: 'en',\n  GEL: 'ka',\n  GHS: 'en_GH',\n  GIP: 'en_GI',\n  GMD: 'en_GM',\n  GNF: 'fr_GN',\n  GTQ: 'es_GT',\n  GYD: 'en_GY',\n  HKD: 'zh_Hans_HK',\n  HNL: 'es_HN',\n  HRK: 'hr_HR',\n  HTG: 'en',\n  HUF: 'hu_HU',\n  IDR: 'id',\n  ILS: 'he',\n  INR: 'en_IN',\n  IQD: 'ar_IQ',\n  IRR: 'fa_IR',\n  ISK: 'is',\n  JMD: 'en_JM',\n  JOD: 'ar_JO',\n  JPY: 'ja',\n  KES: 'en_KE',\n  KGS: 'ky',\n  KHR: 'km',\n  KMF: 'ar',\n  KPW: 'ko_KP',\n  KRW: 'ko_KR',\n  KWD: 'ar_KW',\n  KYD: 'en_KY',\n  KZT: 'kk',\n  LAK: 'lo',\n  LBP: 'ar_LB',\n  LKR: 'si',\n  LRD: 'en_LR',\n  LSL: 'en_LS',\n  LYD: 'ar_LY',\n  MAD: 'ar',\n  MDL: 'ro',\n  MGA: 'fr_MG',\n  MKD: 'mk',\n  MMK: 'my',\n  MNT: 'mn',\n  MOP: 'zh',\n  MRO: 'ar_MR',\n  MUR: 'en_MU',\n  MVR: 'en',\n  MWK: 'en',\n  MXN: 'es_MX',\n  MYR: 'ms_MY',\n  MZN: 'pt_MZ',\n  NAD: 'en_NA',\n  NGN: 'en_NG',\n  NIO: 'es_NI',\n  NOK: 'nb_NO',\n  NPR: 'ne',\n  NZD: 'en_NZ',\n  OMR: 'ar_OM',\n  PAB: 'es_PA',\n  PEN: 'es_PE',\n  PGK: 'en_PG',\n  PHP: 'fil',\n  PKR: 'ur_PK',\n  PLN: 'pl',\n  PYG: 'es_PY',\n  QAR: 'ar_QA',\n  RON: 'ro',\n  RSD: 'sr',\n  RUB: 'ru',\n  RWF: 'rw',\n  SAR: 'ar_SA',\n  SBD: 'en_SB',\n  SCR: 'en_SC',\n  SDG: 'ar_SD',\n  SEK: 'sv_SE',\n  SGD: 'en_SG',\n  SHP: 'en_SH',\n  SLL: 'en_SL',\n  SOS: 'so_SO',\n  SRD: 'nl_SR',\n  SSP: 'en',\n  STD: 'pt_ST',\n  SYP: 'ar_SY',\n  SZL: 'en_SZ',\n  THB: 'th',\n  TJS: 'en',\n  TMT: 'tk',\n  TND: 'ar_TN',\n  TOP: 'to',\n  TRY: 'tr_TR',\n  TTD: 'en_TT',\n  TWD: 'zh_Hant_TW',\n  TZS: 'sw_TZ',\n  UAH: 'uk',\n  UGX: 'en_UG',\n  USD: 'en_US',\n  UYU: 'es_UY',\n  UZS: 'uz',\n  VEF: 'es_VE',\n  VND: 'vi',\n  VUV: 'en_BI',\n  WST: 'en_AS',\n  XAF: 'fr',\n  XCD: 'en',\n  XOF: 'fr',\n  XPF: 'fr_PF',\n  YER: 'ar_YE',\n  ZAR: 'zu',\n  ZMW: 'en_ZM',\n  ZWL: 'en_ZW'\n};\n\nvar symbols = {\n  'AED': 'د.إ',\n  'AFN': '؋',\n  'ALL': 'L',\n  'AMD': 'AMD',\n  'ANG': 'ƒ',\n  'AOA': 'Kz',\n  'ARS': '$',\n  'AUD': '$',\n  'AWG': 'ƒ',\n  'AZN': '₼',\n  'BAM': 'KM',\n  'BBD': '$',\n  'BDT': '৳',\n  'BGN': 'лв',\n  'BHD': '.د.ب',\n  'BIF': 'FBu',\n  'BMD': '$',\n  'BND': '$',\n  'BOB': 'Bs.',\n  'BRL': 'R$',\n  'BSD': '$',\n  'BTC': '฿',\n  'BTN': 'Nu.',\n  'BWP': 'P',\n  'BYR': 'p.',\n  'BZD': 'BZ$',\n  'CAD': '$',\n  'CDF': 'FC',\n  'CHF': 'Fr.',\n  'CLP': '$',\n  'CNY': '¥',\n  'COP': '$',\n  'CRC': '₡',\n  'CUC': '$',\n  'CUP': '₱',\n  'CVE': '$',\n  'CZK': 'Kč',\n  'DJF': 'Fdj',\n  'DKK': 'kr',\n  'DOP': 'RD$',\n  'DZD': 'دج',\n  'EEK': 'kr',\n  'EGP': '£',\n  'ERN': 'Nfk',\n  'ETB': 'Br',\n  'ETH': 'Ξ',\n  'EUR': '€',\n  'FJD': '$',\n  'FKP': '£',\n  'GBP': '£',\n  'GEL': '₾',\n  'GGP': '£',\n  'GHC': '₵',\n  'GHS': 'GH₵',\n  'GIP': '£',\n  'GMD': 'D',\n  'GNF': 'FG',\n  'GTQ': 'Q',\n  'GYD': '$',\n  'HKD': '$',\n  'HNL': 'L',\n  'HRK': 'kn',\n  'HTG': 'G',\n  'HUF': 'Ft',\n  'IDR': 'Rp',\n  'ILS': '₪',\n  'IMP': '£',\n  'INR': '₹',\n  'IQD': 'ع.د',\n  'IRR': '﷼',\n  'ISK': 'kr',\n  'JEP': '£',\n  'JMD': 'J$',\n  'JOD': 'JD',\n  'JPY': '¥',\n  'KES': 'KSh',\n  'KGS': 'лв',\n  'KHR': '៛',\n  'KMF': 'CF',\n  'KPW': '₩',\n  'KRW': '₩',\n  'KWD': 'KD',\n  'KYD': '$',\n  'KZT': '₸',\n  'LAK': '₭',\n  'LBP': '£',\n  'LKR': '₨',\n  'LRD': '$',\n  'LSL': 'M',\n  'LTC': 'Ł',\n  'LTL': 'Lt',\n  'LVL': 'Ls',\n  'LYD': 'LD',\n  'MAD': 'MAD',\n  'MDL': 'lei',\n  'MGA': 'Ar',\n  'MKD': 'ден',\n  'MMK': 'K',\n  'MNT': '₮',\n  'MOP': 'MOP$',\n  'MUR': '₨',\n  'MVR': 'Rf',\n  'MWK': 'MK',\n  'MXN': '$',\n  'MYR': 'RM',\n  'MZN': 'MT',\n  'NAD': '$',\n  'NGN': '₦',\n  'NIO': 'C$',\n  'NOK': 'kr',\n  'NPR': '₨',\n  'NZD': '$',\n  'OMR': '﷼',\n  'PAB': 'B/.',\n  'PEN': 'S/.',\n  'PGK': 'K',\n  'PHP': '₱',\n  'PKR': '₨',\n  'PLN': 'zł',\n  'PYG': 'Gs',\n  'QAR': '﷼',\n  'RMB': '￥',\n  'RON': 'lei',\n  'RSD': 'Дин.',\n  'RUB': '₽',\n  'RWF': 'R₣',\n  'SAR': '﷼',\n  'SBD': '$',\n  'SCR': '₨',\n  'SDG': 'ج.س.',\n  'SEK': 'kr',\n  'SGD': '$',\n  'SHP': '£',\n  'SLL': 'Le',\n  'SOS': 'S',\n  'SRD': '$',\n  'SSP': '£',\n  'STD': 'Db',\n  'SVC': '$',\n  'SYP': '£',\n  'SZL': 'E',\n  'THB': '฿',\n  'TJS': 'SM',\n  'TMT': 'T',\n  'TND': 'د.ت',\n  'TOP': 'T$',\n  'TRL': '₤',\n  'TRY': '₺',\n  'TTD': 'TT$',\n  'TVD': '$',\n  'TWD': 'NT$',\n  'TZS': 'TSh',\n  'UAH': '₴',\n  'UGX': 'USh',\n  'USD': '$',\n  'UYU': '$U',\n  'UZS': 'лв',\n  'VEF': 'Bs',\n  'VND': '₫',\n  'VUV': 'VT',\n  'WST': 'WS$',\n  'XAF': 'FCFA',\n  'XBT': 'Ƀ',\n  'XCD': '$',\n  'XOF': 'CFA',\n  'XPF': '₣',\n  'YER': '﷼',\n  'ZAR': 'R',\n  'ZWD': 'Z$'\n};\n\nvar ReactCurrencyFormatter = function ReactCurrencyFormatter(props) {\n  var getFormatter = function getFormatter(options) {\n    var locale = void 0,\n        currency = void 0,\n        symbol = void 0,\n        pattern = void 0,\n        decimal = void 0,\n        group = void 0;\n\n    // Helper Functions\n    var isUndefined = function isUndefined(o) {\n      return typeof o === 'undefined';\n    };\n\n    var toFixed = function toFixed(n, precision) {\n      return (+(Math.round(+(n + 'e' + precision)) + 'e' + -precision)).toFixed(precision);\n    };\n\n    // Perform checks on inputs and set up defaults as needed (defaults to en, USD)\n    if (isUndefined(options)) {\n      options = {};\n    }\n\n    currency = isUndefined(options.currency) ? 'USD' : options.currency.toUpperCase();\n    locale = isUndefined(options.locale) ? locales[defaultLocales[currency]] : locales[options.locale];\n\n    if (!isUndefined(locale.h)) locale = locales[locale.h]; // Locale inheritance\n\n    symbol = isUndefined(options.symbol) ? symbols[currency] : options.symbol;\n\n    if (isUndefined(symbol)) symbol = currency; // In case we don't have the symbol, just use the ccy code\n\n    pattern = isUndefined(options.pattern) ? locale.p : options.pattern;\n    decimal = isUndefined(options.decimal) ? locale.d : options.decimal;\n    group = isUndefined(options.group) ? locale.g : options.group;\n\n    //console.log(locale);\n\n    // encodePattern Function - returns a few simple characteristics of the pattern provided\n    var encodePattern = function encodePattern(pattern) {\n      var decimalPlaces = 0;\n      var frontPadding = '';\n      var backPadding = '';\n      var groupLengths = [];\n\n      //console.log(pattern);\n\n      var patternStarted = false;\n      var decimalsStarted = false;\n      var patternEnded = false;\n\n      var currentGroupLength = 0;\n      var zeroLength = 0;\n\n      for (var i = 0; i < pattern.length; ++i) {\n        var c = pattern[i];\n\n        if (!patternStarted && ['#', '0', ',', '.'].indexOf(c) > -1) {\n          patternStarted = true;\n        }\n\n        if (!patternStarted) {\n          frontPadding += c;\n        }\n\n        switch (c) {\n          case '#':\n            ++currentGroupLength;\n            break;\n\n          case '0':\n            if (decimalsStarted) {\n              ++decimalPlaces;\n            } else {\n              ++currentGroupLength;++zeroLength;\n            }\n            break;\n\n          case ',':\n            groupLengths.push(currentGroupLength);\n            currentGroupLength = 0;\n            break;\n\n          case '.':\n            groupLengths.push(currentGroupLength);\n            decimalsStarted = true;\n            break;\n        }\n\n        if (patternStarted && !(['#', '0', ',', '.'].indexOf(c) > -1)) {\n          patternEnded = true;\n\n          if (!decimalsStarted) {\n            groupLengths.push(currentGroupLength);\n          }\n        }\n\n        if (patternEnded) {\n          backPadding += c;\n        }\n      }\n\n      var encodedPattern = {\n        decimalPlaces: decimalPlaces,\n        frontPadding: frontPadding,\n        backPadding: backPadding,\n        groupLengths: groupLengths,\n        zeroLength: zeroLength\n      };\n\n      return encodedPattern;\n    };\n\n    // Zero Padding helper function\n    var pad = function pad(n, width) {\n      n = n + '';\n      return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;\n    };\n\n    // Format function\n    var format = function format(n, f) {\n      var formattedNumber = toFixed(Math.abs(n), f.decimalPlaces);\n\n      var splitNumber = formattedNumber.split(\".\");\n\n      // i.e. we actually have some sort of grouping in the values\n      if (f.groupLengths.length > 1) {\n        var segment = \"\";\n        var cursor = splitNumber[0].length;\n        var groupIndex = f.groupLengths.length - 1;\n\n        while (cursor > 0) {\n          if (groupIndex <= 0) {\n            groupIndex = 1;\n          } // Always reset to the first group length if the number is big\n\n          var currentGroupLength = f.groupLengths[groupIndex];\n\n          var start = cursor - currentGroupLength;\n\n          segment = splitNumber[0].substring(start, cursor) + f.group + segment;\n\n          cursor -= currentGroupLength;\n\n          --groupIndex;\n        }\n\n        segment = segment.substring(0, segment.length - 1);\n        //console.log(segment);\n      }\n\n      if (segment.length < f.zeroLength) {\n        segment = pad(segment, f.zeroLength);\n      }\n\n      var formattedNumber = f.frontPadding + segment + (isUndefined(splitNumber[1]) ? '' : f.decimal + splitNumber[1]) + f.backPadding;\n\n      return formattedNumber.replace('!', symbol);\n    };\n\n    // Use encode function to work out pattern\n    var patternArray = pattern.split(\";\");\n    var positiveFormat = encodePattern(patternArray[0]);\n\n    positiveFormat.symbol = symbol;\n    positiveFormat.decimal = decimal;\n    positiveFormat.group = group;\n\n    var negativeFormat = isUndefined(patternArray[1]) ? encodePattern(\"-\" + patternArray[0]) : encodePattern(patternArray[1]);\n\n    negativeFormat.symbol = symbol;\n    negativeFormat.decimal = decimal;\n    negativeFormat.group = group;\n\n    var zero = isUndefined(patternArray[2]) ? format(0, positiveFormat) : patternArray[2];\n\n    if (!isUndefined(patternArray[2])) {\n      zeroFormat = patternArray[2];\n    }\n\n    return function (n) {\n      var formattedNumber = void 0;\n      n = Number(n);\n      if (n > 0) {\n        formattedNumber = format(n, positiveFormat);\n      } else if (n == 0) {\n        formattedNumber = zero.replace('!', symbol);\n      } else {\n        formattedNumber = format(n, negativeFormat);\n      }\n      return formattedNumber;\n    };\n  };\n\n  var format = function format(number, options) {\n    var formatterFunction = getFormatter(options);\n\n    return formatterFunction(number);\n  };\n\n  var quantity = props.quantity,\n      currency = props.currency,\n      symbol = props.symbol,\n      locale = props.locale,\n      decimal = props.decimal,\n      group = props.group,\n      pattern = props.pattern;\n\n\n  return format(props.quantity, {\n    currency: currency,\n    symbol: symbol,\n    locale: locale,\n    decimal: decimal,\n    group: group,\n    pattern: pattern\n  });\n};\n\nReactCurrencyFormatter.defaultProps = {\n  currency: 'USD'\n};\n\nReactCurrencyFormatter.propTypes = {\n  quantity: PropTypes.number.isRequired,\n  currency: PropTypes.string,\n  symbol: PropTypes.string,\n  locale: PropTypes.string,\n  decimal: PropTypes.string,\n  group: PropTypes.string,\n  pattern: PropTypes.string\n};\n\nreturn ReactCurrencyFormatter;\n\n})));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = globalThis.parseFloat;\nvar Symbol = globalThis.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;\n} : $parseFloat;\n","const cloneDeep = require('lodash/cloneDeep')\nconst compare = require('json-schema-compare')\nconst computeLcm = require('compute-lcm')\nconst defaultsDeep = require('lodash/defaultsDeep')\nconst flatten = require('lodash/flatten')\nconst flattenDeep = require('lodash/flattenDeep')\nconst intersection = require('lodash/intersection')\nconst intersectionWith = require('lodash/intersectionWith')\nconst isEqual = require('lodash/isEqual')\nconst isPlainObject = require('lodash/isPlainObject')\nconst pullAll = require('lodash/pullAll')\nconst sortBy = require('lodash/sortBy')\nconst uniq = require('lodash/uniq')\nconst uniqWith = require('lodash/uniqWith')\n\nconst propertiesResolver = require('./complex-resolvers/properties')\nconst itemsResolver = require('./complex-resolvers/items')\n\nconst contains = (arr, val) => arr.indexOf(val) !== -1\nconst isSchema = (val) => isPlainObject(val) || val === true || val === false\nconst isFalse = (val) => val === false\nconst isTrue = (val) => val === true\nconst schemaResolver = (compacted, key, mergeSchemas) => mergeSchemas(compacted)\nconst stringArray = (values) => sortBy(uniq(flattenDeep(values)))\nconst notUndefined = (val) => val !== undefined\nconst allUniqueKeys = (arr) => uniq(flattenDeep(arr.map(keys)))\n\n// resolvers\nconst first = compacted => compacted[0]\nconst required = compacted => stringArray(compacted)\nconst maximumValue = compacted => Math.max.apply(Math, compacted)\nconst minimumValue = compacted => Math.min.apply(Math, compacted)\nconst uniqueItems = compacted => compacted.some(isTrue)\nconst examples = compacted => uniqWith(flatten(compacted), isEqual)\n\nfunction compareProp(key) {\n  return function(a, b) {\n    return compare({\n      [key]: a\n    }, { [key]: b })\n  }\n}\n\nfunction getAllOf(schema) {\n  let { allOf = [], ...copy } = schema\n  copy = isPlainObject(schema) ? copy : schema // if schema is boolean\n  return [copy, ...allOf.map(getAllOf)]\n}\n\nfunction getValues(schemas, key) {\n  return schemas.map(schema => schema && schema[key])\n}\n\nfunction tryMergeSchemaGroups(schemaGroups, mergeSchemas) {\n  return schemaGroups.map(function(schemas, index) {\n    try {\n      return mergeSchemas(schemas, index)\n    } catch (e) {\n      return undefined\n    }\n  }).filter(notUndefined)\n}\n\nfunction keys(obj) {\n  if (isPlainObject(obj) || Array.isArray(obj)) {\n    return Object.keys(obj)\n  } else {\n    return []\n  }\n}\n\nfunction getAnyOfCombinations(arrOfArrays, combinations) {\n  combinations = combinations || []\n  if (!arrOfArrays.length) {\n    return combinations\n  }\n\n  const values = arrOfArrays.slice(0).shift()\n  const rest = arrOfArrays.slice(1)\n  if (combinations.length) {\n    return getAnyOfCombinations(rest, flatten(combinations.map(combination => values.map(item => ([item].concat(combination))))))\n  }\n  return getAnyOfCombinations(rest, values.map(item => (item)))\n}\n\nfunction throwIncompatible(values, paths) {\n  let asJSON\n  try {\n    asJSON = values.map(function(val) {\n      return JSON.stringify(val, null, 2)\n    }).join('\\n')\n  } catch (variable) {\n    asJSON = values.join(', ')\n  }\n  throw new Error('Could not resolve values for path:\"' + paths.join('.') + '\". They are probably incompatible. Values: \\n' + asJSON)\n}\n\nfunction callGroupResolver(complexKeywords, resolverName, schemas, mergeSchemas, options, parents) {\n  if (complexKeywords.length) {\n    const resolverConfig = options.complexResolvers[resolverName]\n    if (!resolverConfig || !resolverConfig.resolver) {\n      throw new Error('No resolver found for ' + resolverName)\n    }\n\n    // extract all keywords from all the schemas that have one or more\n    // then remove all undefined ones and not unique\n    const extractedKeywordsOnly = schemas.map(schema => complexKeywords.reduce((all, key) => {\n      if (schema[key] !== undefined) all[key] = schema[key]\n      return all\n    }, {}))\n    const unique = uniqWith(extractedKeywordsOnly, compare)\n\n    // create mergers that automatically add the path of the keyword for use in the complex resolver\n    const mergers = resolverConfig.keywords.reduce((all, key) => ({\n      ...all,\n      [key]: (schemas, extraKey = []) => mergeSchemas(schemas, null, parents.concat(key, extraKey))\n    }), {})\n\n    const result = resolverConfig.resolver(unique, parents.concat(resolverName), mergers, options)\n\n    if (!isPlainObject(result)) {\n      throwIncompatible(unique, parents.concat(resolverName))\n    }\n\n    return result\n  }\n}\n\nfunction createRequiredMetaArray(arr) {\n  return { required: arr }\n}\n\nconst schemaGroupProps = ['properties', 'patternProperties', 'definitions', 'dependencies']\nconst schemaArrays = ['anyOf', 'oneOf']\nconst schemaProps = [\n  'additionalProperties',\n  'additionalItems',\n  'contains',\n  'propertyNames',\n  'not',\n  'items'\n]\n\nconst defaultResolvers = {\n  type(compacted) {\n    if (compacted.some(Array.isArray)) {\n      const normalized = compacted.map(function(val) {\n        return Array.isArray(val)\n          ? val\n          : [val]\n      })\n      const common = intersection.apply(null, normalized)\n\n      if (common.length === 1) {\n        return common[0]\n      } else if (common.length > 1) {\n        return uniq(common)\n      }\n    }\n  },\n  dependencies(compacted, paths, mergeSchemas) {\n    const allChildren = allUniqueKeys(compacted)\n\n    return allChildren.reduce(function(all, childKey) {\n      const childSchemas = getValues(compacted, childKey)\n      let innerCompacted = uniqWith(childSchemas.filter(notUndefined), isEqual)\n\n      // to support dependencies\n      const innerArrays = innerCompacted.filter(Array.isArray)\n\n      if (innerArrays.length) {\n        if (innerArrays.length === innerCompacted.length) {\n          all[childKey] = stringArray(innerCompacted)\n        } else {\n          const innerSchemas = innerCompacted.filter(isSchema)\n          const arrayMetaScheams = innerArrays.map(createRequiredMetaArray)\n          all[childKey] = mergeSchemas(innerSchemas.concat(arrayMetaScheams), childKey)\n        }\n        return all\n      }\n\n      innerCompacted = uniqWith(innerCompacted, compare)\n\n      all[childKey] = mergeSchemas(innerCompacted, childKey)\n      return all\n    }, {})\n  },\n  oneOf(compacted, paths, mergeSchemas) {\n    const combinations = getAnyOfCombinations(cloneDeep(compacted))\n    const result = tryMergeSchemaGroups(combinations, mergeSchemas)\n    const unique = uniqWith(result, compare)\n\n    if (unique.length) {\n      return unique\n    }\n  },\n  not(compacted) {\n    return { anyOf: compacted }\n  },\n  pattern(compacted) {\n    return compacted.map(r => '(?=' + r + ')').join('')\n  },\n  multipleOf(compacted) {\n    let integers = compacted.slice(0)\n    let factor = 1\n    while (integers.some(n => !Number.isInteger(n))) {\n      integers = integers.map(n => n * 10)\n      factor = factor * 10\n    }\n    return computeLcm(integers) / factor\n  },\n  enum(compacted) {\n    const enums = intersectionWith.apply(null, compacted.concat(isEqual))\n    if (enums.length) {\n      return sortBy(enums)\n    }\n  }\n}\n\ndefaultResolvers.$id = first\ndefaultResolvers.$ref = first\ndefaultResolvers.$schema = first\ndefaultResolvers.additionalItems = schemaResolver\ndefaultResolvers.additionalProperties = schemaResolver\ndefaultResolvers.anyOf = defaultResolvers.oneOf\ndefaultResolvers.contains = schemaResolver\ndefaultResolvers.default = first\ndefaultResolvers.definitions = defaultResolvers.dependencies\ndefaultResolvers.description = first\ndefaultResolvers.examples = examples\ndefaultResolvers.exclusiveMaximum = minimumValue\ndefaultResolvers.exclusiveMinimum = maximumValue\ndefaultResolvers.items = itemsResolver\ndefaultResolvers.maximum = minimumValue\ndefaultResolvers.maxItems = minimumValue\ndefaultResolvers.maxLength = minimumValue\ndefaultResolvers.maxProperties = minimumValue\ndefaultResolvers.minimum = maximumValue\ndefaultResolvers.minItems = maximumValue\ndefaultResolvers.minLength = maximumValue\ndefaultResolvers.minProperties = maximumValue\ndefaultResolvers.properties = propertiesResolver\ndefaultResolvers.propertyNames = schemaResolver\ndefaultResolvers.required = required\ndefaultResolvers.title = first\ndefaultResolvers.uniqueItems = uniqueItems\n\nconst defaultComplexResolvers = {\n  properties: propertiesResolver,\n  items: itemsResolver\n}\n\nfunction merger(rootSchema, options, totalSchemas) {\n  totalSchemas = totalSchemas || []\n  options = defaultsDeep(options, {\n    ignoreAdditionalProperties: false,\n    resolvers: defaultResolvers,\n    complexResolvers: defaultComplexResolvers,\n    deep: true\n  })\n\n  const complexResolvers = Object.entries(options.complexResolvers)\n\n  function mergeSchemas(schemas, base, parents) {\n    schemas = cloneDeep(schemas.filter(notUndefined))\n    parents = parents || []\n    const merged = isPlainObject(base)\n      ? base\n      : {}\n\n    // return undefined, an empty schema\n    if (!schemas.length) {\n      return\n    }\n\n    if (schemas.some(isFalse)) {\n      return false\n    }\n\n    if (schemas.every(isTrue)) {\n      return true\n    }\n\n    // there are no false and we don't need the true ones as they accept everything\n    schemas = schemas.filter(isPlainObject)\n\n    const allKeys = allUniqueKeys(schemas)\n    if (options.deep && contains(allKeys, 'allOf')) {\n      return merger({\n        allOf: schemas\n      }, options, totalSchemas)\n    }\n\n    const complexKeysArr = complexResolvers.map(([mainKeyWord, resolverConf]) =>\n      allKeys.filter(k => resolverConf.keywords.includes(k)))\n\n    // remove all complex keys before simple resolvers\n    complexKeysArr.forEach(keys => pullAll(allKeys, keys))\n\n    // call all simple resolvers for relevant keywords\n    allKeys.forEach(function(key) {\n      const values = getValues(schemas, key)\n      const compacted = uniqWith(values.filter(notUndefined), compareProp(key))\n\n      // arrayprops like anyOf and oneOf must be merged first, as they contains schemas\n      // allOf is treated differently alltogether\n      if (compacted.length === 1 && contains(schemaArrays, key)) {\n        merged[key] = compacted[0].map(schema => mergeSchemas([schema], schema))\n        // prop groups must always be resolved\n      } else if (compacted.length === 1 && !contains(schemaGroupProps, key) && !contains(schemaProps, key)) {\n        merged[key] = compacted[0]\n      } else {\n        const resolver = options.resolvers[key] || options.resolvers.defaultResolver\n        if (!resolver) throw new Error('No resolver found for key ' + key + '. You can provide a resolver for this keyword in the options, or provide a default resolver.')\n\n        const merger = (schemas, extraKey = []) => mergeSchemas(schemas, null, parents.concat(key, extraKey))\n        merged[key] = resolver(compacted, parents.concat(key), merger, options)\n\n        if (merged[key] === undefined) {\n          throwIncompatible(compacted, parents.concat(key))\n        } else if (merged[key] === undefined) {\n          delete merged[key]\n        }\n      }\n    })\n\n    return complexResolvers.reduce((all, [resolverKeyword, config], index) => ({\n      ...all,\n      ...callGroupResolver(complexKeysArr[index], resolverKeyword, schemas, mergeSchemas, options, parents)\n    }), merged)\n  }\n\n  const allSchemas = flattenDeep(getAllOf(rootSchema))\n  const merged = mergeSchemas(allSchemas)\n\n  return merged\n}\n\nmerger.options = {\n  resolvers: defaultResolvers\n}\n\nmodule.exports = merger\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar QueueingEventEmitter = require('./queueingeventemitter');\n/**\n * A {@link TrackTransceiver} represents either one or more local RTCRtpSenders\n * or RTCDataChannels, or a single RTCRtpReceiver or remote RTCDataChannel.\n * @extends QueueingEventEmitter\n * @property {Track.ID} id\n * @property {Track.kind} kind\n */\nvar TrackTransceiver = /** @class */ (function (_super) {\n    __extends(TrackTransceiver, _super);\n    /**\n     * Construct a {@link TrackTransceiver}.\n     * @param {Track.ID} id\n     * @param {Track.kind} kind\n     */\n    function TrackTransceiver(id, kind) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            id: {\n                enumerable: true,\n                value: id\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            }\n        });\n        return _this;\n    }\n    /**\n     * Stop the {@link TrackTransceiver}.\n     * #emits TrackTransceiver#stopped\n     * @returns {void}\n     */\n    TrackTransceiver.prototype.stop = function () {\n        this.emit('stopped');\n    };\n    return TrackTransceiver;\n}(QueueingEventEmitter));\n/**\n * The {@link TrackTransceiver} was stopped.\n * @event TrackTransceiver#stopped\n */\nmodule.exports = TrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nmodule.exports = {\n    LocalAudioTrack: require('./localaudiotrack'),\n    LocalVideoTrack: require('./localvideotrack'),\n    LocalDataTrack: require('./localdatatrack')\n};\n//# sourceMappingURL=index.js.map","\"use strict\";function _typeof(obj){\"@babel/helpers - typeof\";return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&\"function\"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj},_typeof(obj)}Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=useTracking;var _react=_interopRequireWildcard(require(\"react\"));var _ReactTrackingContext=_interopRequireDefault(require(\"./ReactTrackingContext\"));var _useTrackingImpl=_interopRequireDefault(require(\"./useTrackingImpl\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!==\"function\")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!==\"object\"&&typeof obj!==\"function\"){return{\"default\":obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!==\"default\"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj[\"default\"]=obj;if(cache){cache.set(obj,newObj)}return newObj}function useTracking(trackingData,options){var contextValue=(0,_useTrackingImpl[\"default\"])(trackingData,options);var Track=(0,_react.useCallback)(function(_ref){var children=_ref.children;return _react[\"default\"].createElement(_ReactTrackingContext[\"default\"].Provider,{value:contextValue},children)},[contextValue]);(0,_react.useDebugValue)(contextValue.tracking.getTrackingData,function(getTrackingData){return getTrackingData()});return(0,_react.useMemo)(function(){return{Track:Track,getTrackingData:contextValue.tracking.getTrackingData,trackEvent:contextValue.tracking.dispatch}},[contextValue,Track])}\n//# sourceMappingURL=useTracking.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n  return /*#__PURE__*/React.forwardRef(function (p, ref) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classNames(p.className, className)\n    }));\n  });\n});","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module state */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar strings_1 = require(\"../common/strings\");\nvar hof_1 = require(\"../common/hof\");\nvar resolvable_1 = require(\"../resolve/resolvable\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar parseUrl = function (url) {\n    if (!predicates_1.isString(url))\n        return false;\n    var root = url.charAt(0) === '^';\n    return { val: root ? url.substring(1) : url, root: root };\n};\nfunction nameBuilder(state) {\n    return state.name;\n}\nfunction selfBuilder(state) {\n    state.self.$$state = function () { return state; };\n    return state.self;\n}\nfunction dataBuilder(state) {\n    if (state.parent && state.parent.data) {\n        state.data = state.self.data = common_1.inherit(state.parent.data, state.data);\n    }\n    return state.data;\n}\nvar getUrlBuilder = function ($urlMatcherFactoryProvider, root) {\n    return function urlBuilder(state) {\n        var stateDec = state;\n        // For future states, i.e., states whose name ends with `.**`,\n        // match anything that starts with the url prefix\n        if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n            stateDec.url += '{remainder:any}'; // match any path (.*)\n        }\n        var parsed = parseUrl(stateDec.url), parent = state.parent;\n        var url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, {\n            params: state.params || {},\n            paramMap: function (paramConfig, isSearch) {\n                if (stateDec.reloadOnSearch === false && isSearch)\n                    paramConfig = common_1.extend(paramConfig || {}, { dynamic: true });\n                return paramConfig;\n            },\n        });\n        if (!url)\n            return null;\n        if (!$urlMatcherFactoryProvider.isMatcher(url))\n            throw new Error(\"Invalid url '\" + url + \"' in state '\" + state + \"'\");\n        return (parsed && parsed.root) ? url : ((parent && parent.navigable) || root()).url.append(url);\n    };\n};\nvar getNavigableBuilder = function (isRoot) {\n    return function navigableBuilder(state) {\n        return !isRoot(state) && state.url ? state : (state.parent ? state.parent.navigable : null);\n    };\n};\nvar getParamsBuilder = function (paramFactory) {\n    return function paramsBuilder(state) {\n        var makeConfigParam = function (config, id) { return paramFactory.fromConfig(id, null, config); };\n        var urlParams = (state.url && state.url.parameters({ inherit: false })) || [];\n        var nonUrlParams = common_1.values(common_1.mapObj(common_1.omit(state.params || {}, urlParams.map(hof_1.prop('id'))), makeConfigParam));\n        return urlParams.concat(nonUrlParams).map(function (p) { return [p.id, p]; }).reduce(common_1.applyPairs, {});\n    };\n};\nfunction pathBuilder(state) {\n    return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n}\nfunction includesBuilder(state) {\n    var includes = state.parent ? common_1.extend({}, state.parent.includes) : {};\n    includes[state.name] = true;\n    return includes;\n}\n/**\n * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * validates the `resolve` property and converts it to a [[Resolvable]] array.\n *\n * resolve: input value can be:\n *\n * {\n *   // analyzed but not injected\n *   myFooResolve: function() { return \"myFooData\"; },\n *\n *   // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n *   myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n *\n *   // Array split; \"DependencyName\" dep as string\n *   myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n *\n *   // Array split; DependencyType dep as token (compared using ===)\n *   myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n *\n *   // val.$inject used as deps\n *   // where:\n *   //     corgeResolve.$inject = [\"DependencyName\"];\n *   //     function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n *   // then \"DependencyName\" dep as string\n *   myCorgeResolve: corgeResolve,\n *\n *  // inject service by name\n *  // When a string is found, desugar creating a resolve that injects the named service\n *   myGraultResolve: \"SomeService\"\n * }\n *\n * or:\n *\n * [\n *   new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n *   new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n *   { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n * ]\n */\nfunction resolvablesBuilder(state) {\n    /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n    var objects2Tuples = function (resolveObj, resolvePolicies) {\n        return Object.keys(resolveObj || {}).map(function (token) { return ({ token: token, val: resolveObj[token], deps: undefined, policy: resolvePolicies[token] }); });\n    };\n    /** fetch DI annotations from a function or ng1-style array */\n    var annotate = function (fn) {\n        var $injector = coreservices_1.services.$injector;\n        // ng1 doesn't have an $injector until runtime.\n        // If the $injector doesn't exist, use \"deferred\" literal as a\n        // marker indicating they should be annotated when runtime starts\n        return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n    };\n    /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n    var isResolveLiteral = function (obj) { return !!(obj.token && obj.resolveFn); };\n    /** true if the object looks like a provide literal, or a ng2 Provider */\n    var isLikeNg2Provider = function (obj) { return !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass)); };\n    /** true if the object looks like a tuple from obj2Tuples */\n    var isTupleFromObj = function (obj) { return !!(obj && obj.val && (predicates_1.isString(obj.val) || predicates_1.isArray(obj.val) || predicates_1.isFunction(obj.val))); };\n    /** extracts the token from a Provider or provide literal */\n    var getToken = function (p) { return p.provide || p.token; };\n    /** Given a literal resolve or provider object, returns a Resolvable */\n    var literal2Resolvable = hof_1.pattern([\n        [hof_1.prop('resolveFn'), function (p) { return new resolvable_1.Resolvable(getToken(p), p.resolveFn, p.deps, p.policy); }],\n        [hof_1.prop('useFactory'), function (p) { return new resolvable_1.Resolvable(getToken(p), p.useFactory, (p.deps || p.dependencies), p.policy); }],\n        [hof_1.prop('useClass'), function (p) { return new resolvable_1.Resolvable(getToken(p), function () { return new p.useClass(); }, [], p.policy); }],\n        [hof_1.prop('useValue'), function (p) { return new resolvable_1.Resolvable(getToken(p), function () { return p.useValue; }, [], p.policy, p.useValue); }],\n        [hof_1.prop('useExisting'), function (p) { return new resolvable_1.Resolvable(getToken(p), common_1.identity, [p.useExisting], p.policy); }],\n    ]);\n    var tuple2Resolvable = hof_1.pattern([\n        [hof_1.pipe(hof_1.prop('val'), predicates_1.isString), function (tuple) { return new resolvable_1.Resolvable(tuple.token, common_1.identity, [tuple.val], tuple.policy); }],\n        [hof_1.pipe(hof_1.prop('val'), predicates_1.isArray), function (tuple) { return new resolvable_1.Resolvable(tuple.token, common_1.tail(tuple.val), tuple.val.slice(0, -1), tuple.policy); }],\n        [hof_1.pipe(hof_1.prop('val'), predicates_1.isFunction), function (tuple) { return new resolvable_1.Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy); }],\n    ]);\n    var item2Resolvable = hof_1.pattern([\n        [hof_1.is(resolvable_1.Resolvable), function (r) { return r; }],\n        [isResolveLiteral, literal2Resolvable],\n        [isLikeNg2Provider, literal2Resolvable],\n        [isTupleFromObj, tuple2Resolvable],\n        [hof_1.val(true), function (obj) { throw new Error('Invalid resolve value: ' + strings_1.stringify(obj)); }],\n    ]);\n    // If resolveBlock is already an array, use it as-is.\n    // Otherwise, assume it's an object and convert to an Array of tuples\n    var decl = state.resolve;\n    var items = predicates_1.isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n    return items.map(item2Resolvable);\n}\nexports.resolvablesBuilder = resolvablesBuilder;\n/**\n * @internalapi A internal global service\n *\n * StateBuilder is a factory for the internal [[StateObject]] objects.\n *\n * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n * conforms to the [[StateDeclaration]] interface.  This factory takes that object and builds the corresponding\n * [[StateObject]] object, which has an API and is used internally.\n *\n * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n * using the [[builder]] method.\n */\nvar StateBuilder = /** @class */ (function () {\n    function StateBuilder(matcher, urlMatcherFactory) {\n        this.matcher = matcher;\n        var self = this;\n        var root = function () { return matcher.find(''); };\n        var isRoot = function (state) { return state.name === ''; };\n        function parentBuilder(state) {\n            if (isRoot(state))\n                return null;\n            return matcher.find(self.parentName(state)) || root();\n        }\n        this.builders = {\n            name: [nameBuilder],\n            self: [selfBuilder],\n            parent: [parentBuilder],\n            data: [dataBuilder],\n            // Build a URLMatcher if necessary, either via a relative or absolute URL\n            url: [getUrlBuilder(urlMatcherFactory, root)],\n            // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n            navigable: [getNavigableBuilder(isRoot)],\n            params: [getParamsBuilder(urlMatcherFactory.paramFactory)],\n            // Each framework-specific ui-router implementation should define its own `views` builder\n            // e.g., src/ng1/statebuilders/views.ts\n            views: [],\n            // Keep a full path from the root down to this state as this is needed for state activation.\n            path: [pathBuilder],\n            // Speed up $state.includes() as it's used a lot\n            includes: [includesBuilder],\n            resolvables: [resolvablesBuilder],\n        };\n    }\n    /**\n     * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n     * More than one BuilderFunction can be registered for a given property.\n     *\n     * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n     *\n     * @param name The name of the State property being registered for.\n     * @param fn The BuilderFunction which will be used to build the State property\n     * @returns a function which deregisters the BuilderFunction\n     */\n    StateBuilder.prototype.builder = function (name, fn) {\n        var builders = this.builders;\n        var array = builders[name] || [];\n        // Backwards compat: if only one builder exists, return it, else return whole arary.\n        if (predicates_1.isString(name) && !predicates_1.isDefined(fn))\n            return array.length > 1 ? array : array[0];\n        if (!predicates_1.isString(name) || !predicates_1.isFunction(fn))\n            return;\n        builders[name] = array;\n        builders[name].push(fn);\n        return function () { return builders[name].splice(builders[name].indexOf(fn, 1)) && null; };\n    };\n    /**\n     * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n     * properties and API built.\n     *\n     * @param state an uninitialized State object\n     * @returns the built State object\n     */\n    StateBuilder.prototype.build = function (state) {\n        var _a = this, matcher = _a.matcher, builders = _a.builders;\n        var parent = this.parentName(state);\n        if (parent && !matcher.find(parent, undefined, false)) {\n            return null;\n        }\n        for (var key in builders) {\n            if (!builders.hasOwnProperty(key))\n                continue;\n            var chain = builders[key].reduce(function (parentFn, step) { return function (_state) { return step(_state, parentFn); }; }, common_1.noop);\n            state[key] = chain(state);\n        }\n        return state;\n    };\n    StateBuilder.prototype.parentName = function (state) {\n        // name = 'foo.bar.baz.**'\n        var name = state.name || '';\n        // segments = ['foo', 'bar', 'baz', '.**']\n        var segments = name.split('.');\n        // segments = ['foo', 'bar', 'baz']\n        var lastSegment = segments.pop();\n        // segments = ['foo', 'bar'] (ignore .** segment for future states)\n        if (lastSegment === '**')\n            segments.pop();\n        if (segments.length) {\n            if (state.parent) {\n                throw new Error(\"States that specify the 'parent:' property should not have a '.' in their name (\" + name + \")\");\n            }\n            // 'foo.bar'\n            return segments.join('.');\n        }\n        if (!state.parent)\n            return '';\n        return predicates_1.isString(state.parent) ? state.parent : state.parent.name;\n    };\n    StateBuilder.prototype.name = function (state) {\n        var name = state.name;\n        if (name.indexOf('.') !== -1 || !state.parent)\n            return name;\n        var parentName = predicates_1.isString(state.parent) ? state.parent : state.parent.name;\n        return parentName ? parentName + '.' + name : name;\n    };\n    return StateBuilder;\n}());\nexports.StateBuilder = StateBuilder;\n//# sourceMappingURL=stateBuilder.js.map","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalVideoTrackClass = require('../localvideotrack');\nfunction LocalVideoTrack(mediaStreamTrack, options) {\n    var track = new LocalVideoTrackClass(mediaStreamTrack, options);\n    Object.setPrototypeOf(track, LocalVideoTrack.prototype);\n    return track;\n}\ninherits(LocalVideoTrack, LocalVideoTrackClass);\nmodule.exports = LocalVideoTrack;\n//# sourceMappingURL=localvideotrack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TransitionHookPhase;\n(function (TransitionHookPhase) {\n    TransitionHookPhase[TransitionHookPhase[\"CREATE\"] = 0] = \"CREATE\";\n    TransitionHookPhase[TransitionHookPhase[\"BEFORE\"] = 1] = \"BEFORE\";\n    TransitionHookPhase[TransitionHookPhase[\"RUN\"] = 2] = \"RUN\";\n    TransitionHookPhase[TransitionHookPhase[\"SUCCESS\"] = 3] = \"SUCCESS\";\n    TransitionHookPhase[TransitionHookPhase[\"ERROR\"] = 4] = \"ERROR\";\n})(TransitionHookPhase = exports.TransitionHookPhase || (exports.TransitionHookPhase = {}));\nvar TransitionHookScope;\n(function (TransitionHookScope) {\n    TransitionHookScope[TransitionHookScope[\"TRANSITION\"] = 0] = \"TRANSITION\";\n    TransitionHookScope[TransitionHookScope[\"STATE\"] = 1] = \"STATE\";\n})(TransitionHookScope = exports.TransitionHookScope || (exports.TransitionHookScope = {}));\n//# sourceMappingURL=interface.js.map","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteParticipantSignaling = require('../remoteparticipant');\nvar RemoteTrackPublicationV2 = require('./remotetrackpublication');\n/**\n * @extends RemoteParticipantSignaling\n * @property {?number} revision\n */\nvar RemoteParticipantV2 = /** @class */ (function (_super) {\n    __extends(RemoteParticipantV2, _super);\n    /**\n     * Construct a {@link RemoteParticipantV2}.\n     * @param {object} participantState\n     * @param {function(Track.SID): boolean} getInitialTrackSwitchOffState\n     * @param {function(Track.SID, Track.Priority): boolean} setPriority\n     * @param {function(Track.SID, ClientRenderHint): Promise<void>} setRenderHint\n     * @param {function(Track.SID): void} clearTrackHint\n     * @param {object} [options]\n     */\n    function RemoteParticipantV2(participantState, getInitialTrackSwitchOffState, setPriority, setRenderHint, clearTrackHint, options) {\n        var _this = _super.call(this, participantState.sid, participantState.identity) || this;\n        options = Object.assign({\n            RemoteTrackPublicationV2: RemoteTrackPublicationV2\n        }, options);\n        Object.defineProperties(_this, {\n            _revision: {\n                writable: true,\n                value: null\n            },\n            _RemoteTrackPublicationV2: {\n                value: options.RemoteTrackPublicationV2\n            },\n            _getInitialTrackSwitchOffState: {\n                value: getInitialTrackSwitchOffState\n            },\n            updateSubscriberTrackPriority: {\n                value: function (trackSid, priority) { return setPriority(trackSid, priority); }\n            },\n            updateTrackRenderHint: {\n                value: function (trackSid, renderHint) { return setRenderHint(trackSid, renderHint); }\n            },\n            clearTrackHint: {\n                value: function (trackSid) { return clearTrackHint(trackSid); }\n            },\n            revision: {\n                enumerable: true,\n                get: function () {\n                    return this._revision;\n                }\n            }\n        });\n        return _this.update(participantState);\n    }\n    /**\n     * @private\n     */\n    RemoteParticipantV2.prototype._getOrCreateTrack = function (trackState) {\n        var RemoteTrackPublicationV2 = this._RemoteTrackPublicationV2;\n        var track = this.tracks.get(trackState.sid);\n        if (!track) {\n            var isSwitchedOff = this._getInitialTrackSwitchOffState(trackState.sid);\n            track = new RemoteTrackPublicationV2(trackState, isSwitchedOff);\n            this.addTrack(track);\n        }\n        return track;\n    };\n    /**\n     * Update the {@link RemoteParticipantV2} with the new state.\n     * @param {object} participantState\n     * @returns {this}\n     */\n    RemoteParticipantV2.prototype.update = function (participantState) {\n        var _this = this;\n        if (this.revision !== null && participantState.revision <= this.revision) {\n            return this;\n        }\n        this._revision = participantState.revision;\n        var tracksToKeep = new Set();\n        participantState.tracks.forEach(function (trackState) {\n            var track = _this._getOrCreateTrack(trackState);\n            track.update(trackState);\n            tracksToKeep.add(track);\n        });\n        this.tracks.forEach(function (track) {\n            if (!tracksToKeep.has(track)) {\n                _this.removeTrack(track);\n            }\n        });\n        switch (participantState.state) {\n            case 'disconnected':\n                this.disconnect();\n                break;\n            case 'reconnecting':\n                this.reconnecting();\n                break;\n            case 'connected':\n                this.connect(this.sid, this.identity);\n                break;\n        }\n        return this;\n    };\n    return RemoteParticipantV2;\n}(RemoteParticipantSignaling));\nmodule.exports = RemoteParticipantV2;\n//# sourceMappingURL=remoteparticipant.js.map","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/* eslint new-cap:0 */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar defaultGetLogger = require('../vendor/loglevel').getLogger;\nvar constants = require('./constants');\nvar DEFAULT_LOG_LEVEL = constants.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = constants.DEFAULT_LOGGER_NAME;\nvar E = require('./constants').typeErrors;\nvar deprecationWarningsByComponentConstructor;\nfunction getDeprecationWarnings(componentConstructor) {\n    deprecationWarningsByComponentConstructor = deprecationWarningsByComponentConstructor || new Map();\n    if (deprecationWarningsByComponentConstructor.has(componentConstructor)) {\n        return deprecationWarningsByComponentConstructor.get(componentConstructor);\n    }\n    var deprecationWarnings = new Set();\n    deprecationWarningsByComponentConstructor.set(componentConstructor, deprecationWarnings);\n    return deprecationWarnings;\n}\n/**\n * Selectively outputs messages to console based on specified minimum module\n * specific log levels.\n *\n * NOTE: The values in the logLevels object passed to the constructor is changed\n *       by subsequent calls to {@link Log#setLevels}.\n */\nvar Log = /** @class */ (function () {\n    /**\n     * Construct a new {@link Log} object.\n     * @param {String} moduleName - Name of the logging module (webrtc/media/signaling)\n     * @param {object} component - Component owning this instance of {@link Log}\n     * @param {LogLevels} logLevels - Logging levels. See {@link LogLevels}\n     * @param {String} loggerName - Name of the logger instance. Used when calling getLogger from loglevel module\n     * @param {Function} [getLogger] - optional method used internally.\n     */\n    function Log(moduleName, component, logLevels, loggerName, getLogger) {\n        if (typeof moduleName !== 'string') {\n            throw E.INVALID_TYPE('moduleName', 'string');\n        }\n        if (!component) {\n            throw E.REQUIRED_ARGUMENT('component');\n        }\n        if (typeof logLevels !== 'object') {\n            logLevels = {};\n        }\n        getLogger = getLogger || defaultGetLogger;\n        validateLogLevels(logLevels);\n        /* istanbul ignore next */\n        Object.defineProperties(this, {\n            _component: {\n                value: component\n            },\n            _logLevels: {\n                value: logLevels\n            },\n            _warnings: {\n                value: new Set()\n            },\n            _loggerName: {\n                get: function get() {\n                    var name = loggerName && typeof loggerName === 'string' ? loggerName : DEFAULT_LOGGER_NAME;\n                    if (!this._logLevelsEqual) {\n                        name = name + \"-\" + moduleName;\n                    }\n                    return name;\n                }\n            },\n            _logger: {\n                get: function get() {\n                    var logger = getLogger(this._loggerName);\n                    var level = this._logLevels[moduleName] || DEFAULT_LOG_LEVEL;\n                    // There is no 'off' in the logger module. It uses 'silent' instead\n                    level = level === 'off' ? 'silent' : level;\n                    logger.setDefaultLevel(level);\n                    return logger;\n                }\n            },\n            _logLevelsEqual: {\n                get: function get() {\n                    // True if all levels are the same\n                    return (new Set(Object.values(this._logLevels)).size) === 1;\n                }\n            },\n            logLevel: {\n                get: function get() {\n                    return Log.getLevelByName(logLevels[moduleName] || DEFAULT_LOG_LEVEL);\n                }\n            },\n            name: { get: component.toString.bind(component) }\n        });\n    }\n    /**\n     * Get the log level (number) by its name (string)\n     * @param {String} name - Name of the log level\n     * @returns {Number} Requested log level\n     * @throws {TwilioError} INVALID_LOG_LEVEL (32056)\n     * @public\n     */\n    Log.getLevelByName = function (name) {\n        if (!isNaN(name)) {\n            return parseInt(name, 10);\n        }\n        name = name.toUpperCase();\n        validateLogLevel(name);\n        return Log[name];\n    };\n    /**\n     * Create a child {@link Log} instance with this._logLevels\n     * @param moduleName - Name of the logging module\n     * @param component - Component owning this instance of {@link Log}\n     * @returns {Log} this\n     */\n    Log.prototype.createLog = function (moduleName, component) {\n        var name = this._loggerName;\n        // Grab the original logger name\n        if (!this._logLevelsEqual) {\n            name = name.substring(0, name.lastIndexOf('-'));\n        }\n        return new Log(moduleName, component, this._logLevels, name);\n    };\n    /**\n     * Set new log levels.\n     * This changes the levels for all its ancestors,\n     * siblings, and children and descendants instances of {@link Log}.\n     * @param {LogLevels} levels - New log levels\n     * @throws {TwilioError} INVALID_ARGUMENT\n     * @returns {Log} this\n     */\n    Log.prototype.setLevels = function (levels) {\n        validateLogLevels(levels);\n        Object.assign(this._logLevels, levels);\n        return this;\n    };\n    /**\n     * Log a message using the logger method appropriate for the specified logLevel\n     * @param {Number} logLevel - Log level of the message being logged\n     * @param {Array} messages - Message(s) to log\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.log = function (logLevel, messages) {\n        var name = Log._levels[logLevel];\n        // eslint-disable-next-line no-use-before-define\n        if (!name) {\n            throw E.INVALID_VALUE('logLevel', LOG_LEVEL_VALUES);\n        }\n        name = name.toLowerCase();\n        var prefix = [new Date().toISOString(), name, this.name];\n        (this._logger[name] || function noop() { }).apply(void 0, __spreadArray([], __read(prefix.concat(messages))));\n        return this;\n    };\n    /**\n     * Log a debug message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.debug = function () {\n        return this.log(Log.DEBUG, [].slice.call(arguments));\n    };\n    /**\n     * Log a deprecation warning. Deprecation warnings are logged as warnings and\n     * they are only ever logged once.\n     * @param {String} deprecationWarning - The deprecation warning\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.deprecated = function (deprecationWarning) {\n        var deprecationWarnings = getDeprecationWarnings(this._component.constructor);\n        if (deprecationWarnings.has(deprecationWarning)) {\n            return this;\n        }\n        deprecationWarnings.add(deprecationWarning);\n        return this.warn(deprecationWarning);\n    };\n    /**\n     * Log an info message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.info = function () {\n        return this.log(Log.INFO, [].slice.call(arguments));\n    };\n    /**\n     * Log a warn message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.warn = function () {\n        return this.log(Log.WARN, [].slice.call(arguments));\n    };\n    /**\n     * Log a warning once.\n     * @param {String} warning\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.warnOnce = function (warning) {\n        if (this._warnings.has(warning)) {\n            return this;\n        }\n        this._warnings.add(warning);\n        return this.warn(warning);\n    };\n    /**\n     * Log an error message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.error = function () {\n        return this.log(Log.ERROR, [].slice.call(arguments));\n    };\n    /**\n     * Log an error message and throw an exception\n     * @param {TwilioError} error - Error to throw\n     * @param {String} customMessage - Custom message for the error\n     * @public\n     */\n    Log.prototype.throw = function (error, customMessage) {\n        if (error.clone) {\n            error = error.clone(customMessage);\n        }\n        this.log(Log.ERROR, error);\n        throw error;\n    };\n    return Log;\n}());\n// Singleton Constants\n/* eslint key-spacing:0 */\n/* istanbul ignore next */\nObject.defineProperties(Log, {\n    DEBUG: { value: 0 },\n    INFO: { value: 1 },\n    WARN: { value: 2 },\n    ERROR: { value: 3 },\n    OFF: { value: 4 },\n    _levels: {\n        value: [\n            'DEBUG',\n            'INFO',\n            'WARN',\n            'ERROR',\n            'OFF',\n        ]\n    }\n});\nvar LOG_LEVELS_SET = {};\nvar LOG_LEVEL_VALUES = [];\nvar LOG_LEVEL_NAMES = Log._levels.map(function (level, i) {\n    LOG_LEVELS_SET[level] = true;\n    LOG_LEVEL_VALUES.push(i);\n    return level;\n});\nfunction validateLogLevel(level) {\n    if (!(level in LOG_LEVELS_SET)) {\n        throw E.INVALID_VALUE('level', LOG_LEVEL_NAMES);\n    }\n}\nfunction validateLogLevels(levels) {\n    Object.keys(levels).forEach(function (moduleName) {\n        validateLogLevel(levels[moduleName].toUpperCase());\n    });\n}\nmodule.exports = Log;\n//# sourceMappingURL=log.js.map","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @internalapi */\nexports.resolvePolicies = {\n    when: {\n        LAZY: 'LAZY',\n        EAGER: 'EAGER',\n    },\n    async: {\n        WAIT: 'WAIT',\n        NOWAIT: 'NOWAIT',\n        RXWAIT: 'RXWAIT',\n    },\n};\n//# sourceMappingURL=interface.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar key = {\n  fullscreenEnabled: 0,\n  fullscreenElement: 1,\n  requestFullscreen: 2,\n  exitFullscreen: 3,\n  fullscreenchange: 4,\n  fullscreenerror: 5\n};\n\nvar webkit = ['webkitFullscreenEnabled', 'webkitFullscreenElement', 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitfullscreenchange', 'webkitfullscreenerror'];\n\nvar moz = ['mozFullScreenEnabled', 'mozFullScreenElement', 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozfullscreenchange', 'mozfullscreenerror'];\n\nvar ms = ['msFullscreenEnabled', 'msFullscreenElement', 'msRequestFullscreen', 'msExitFullscreen', 'MSFullscreenChange', 'MSFullscreenError'];\n\n// so it doesn't throw if no window or document\nvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\nvar vendor = 'fullscreenEnabled' in document && Object.keys(key) || webkit[0] in document && webkit || moz[0] in document && moz || ms[0] in document && ms || [];\n\nexports.default = {\n  requestFullscreen: function requestFullscreen(element) {\n    return element[vendor[key.requestFullscreen]]();\n  },\n  requestFullscreenFunction: function requestFullscreenFunction(element) {\n    return element[vendor[key.requestFullscreen]];\n  },\n  get exitFullscreen() {\n    return document[vendor[key.exitFullscreen]].bind(document);\n  },\n  addEventListener: function addEventListener(type, handler, options) {\n    return document.addEventListener(vendor[key[type]], handler, options);\n  },\n  removeEventListener: function removeEventListener(type, handler, options) {\n    return document.removeEventListener(vendor[key[type]], handler, options);\n  },\n  get fullscreenEnabled() {\n    return Boolean(document[vendor[key.fullscreenEnabled]]);\n  },\n  set fullscreenEnabled(val) {},\n  get fullscreenElement() {\n    return document[vendor[key.fullscreenElement]];\n  },\n  set fullscreenElement(val) {},\n  get onfullscreenchange() {\n    return document[('on' + vendor[key.fullscreenchange]).toLowerCase()];\n  },\n  set onfullscreenchange(handler) {\n    return document[('on' + vendor[key.fullscreenchange]).toLowerCase()] = handler;\n  },\n  get onfullscreenerror() {\n    return document[('on' + vendor[key.fullscreenerror]).toLowerCase()];\n  },\n  set onfullscreenerror(handler) {\n    return document[('on' + vendor[key.fullscreenerror]).toLowerCase()] = handler;\n  }\n};","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n  var index = 0;\n  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n  blink: function blink() {\n    return createHTML(this, 'blink', '', '');\n  }\n});\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mosToScore = exports.calculateMOS = void 0;\nvar r0 = 94.768; // Constant used in computing \"rFactor\".\n// copied from https://code.hq.twilio.com/client/sdk-frd/blob/master/voice/voice-mos-calculation.md\nfunction calculateMOS(rtt, jitter, fractionLost) {\n    // Compute the effective latency.\n    var effectiveLatency = rtt + (jitter * 2) + 10;\n    // Compute the initial \"rFactor\" from effective latency.\n    var rFactor = 0;\n    switch (true) {\n        case effectiveLatency < 160:\n            rFactor = r0 - (effectiveLatency / 40);\n            break;\n        case effectiveLatency < 1000:\n            rFactor = r0 - ((effectiveLatency - 120) / 10);\n            break;\n    }\n    // Adjust \"rFactor\" with the fraction of packets lost.\n    switch (true) {\n        case fractionLost <= (rFactor / 2.5):\n            rFactor = Math.max(rFactor - fractionLost * 2.5, 6.52);\n            break;\n        default:\n            rFactor = 0;\n            break;\n    }\n    // Compute MOS from \"rFactor\".\n    var mos = 1 +\n        (0.035 * rFactor) +\n        (0.000007 * rFactor) *\n            (rFactor - 60) *\n            (100 - rFactor);\n    return mos;\n}\nexports.calculateMOS = calculateMOS;\nfunction mosToScore(mosValue) {\n    var score = 0;\n    if (!mosValue) {\n        score = 0;\n    }\n    else if (mosValue > 4.2) {\n        score = 5;\n    }\n    else if (mosValue > 4.0) {\n        score = 4;\n    }\n    else if (mosValue > 3.6) {\n        score = 3;\n    }\n    else if (mosValue > 3) {\n        score = 2;\n    }\n    else {\n        score = 1;\n    }\n    return score;\n}\nexports.mosToScore = mosToScore;\n//# sourceMappingURL=mos.js.map","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      var F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var normalCompletion = true,\n    didErr = false,\n    err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}","export default function assign(target, object) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n  for (var property in object) {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      ;\n      target[property] = object[property];\n    }\n  }\n  return target;\n}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n  function Setter() {\n    _classCallCheck(this, Setter);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", 0);\n  }\n  _createClass(Setter, [{\n    key: \"validate\",\n    value: function validate(_utcDate, _options) {\n      return true;\n    }\n  }]);\n  return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n  _inherits(ValueSetter, _Setter);\n  var _super = _createSuper(ValueSetter);\n  function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n    var _this;\n    _classCallCheck(this, ValueSetter);\n    _this = _super.call(this);\n    _this.value = value;\n    _this.validateValue = validateValue;\n    _this.setValue = setValue;\n    _this.priority = priority;\n    if (subPriority) {\n      _this.subPriority = subPriority;\n    }\n    return _this;\n  }\n  _createClass(ValueSetter, [{\n    key: \"validate\",\n    value: function validate(utcDate, options) {\n      return this.validateValue(utcDate, this.value, options);\n    }\n  }, {\n    key: \"set\",\n    value: function set(utcDate, flags, options) {\n      return this.setValue(utcDate, flags, this.value, options);\n    }\n  }]);\n  return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n  _inherits(DateToSystemTimezoneSetter, _Setter2);\n  var _super2 = _createSuper(DateToSystemTimezoneSetter);\n  function DateToSystemTimezoneSetter() {\n    var _this2;\n    _classCallCheck(this, DateToSystemTimezoneSetter);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n    _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n    return _this2;\n  }\n  _createClass(DateToSystemTimezoneSetter, [{\n    key: \"set\",\n    value: function set(date, flags) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      var convertedDate = new Date(0);\n      convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n      convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n      return convertedDate;\n    }\n  }]);\n  return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n  function Parser() {\n    _classCallCheck(this, Parser);\n    _defineProperty(this, \"incompatibleTokens\", void 0);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", void 0);\n  }\n  _createClass(Parser, [{\n    key: \"run\",\n    value: function run(dateString, token, match, options) {\n      var result = this.parse(dateString, token, match, options);\n      if (!result) {\n        return null;\n      }\n      return {\n        setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n        rest: result.rest\n      };\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_utcDate, _value, _options) {\n      return true;\n    }\n  }]);\n  return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n  _inherits(EraParser, _Parser);\n  var _super = _createSuper(EraParser);\n  function EraParser() {\n    var _this;\n    _classCallCheck(this, EraParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n    return _this;\n  }\n  _createClass(EraParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n        // A, B\n        case 'GGGGG':\n          return match.era(dateString, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n        case 'GGGG':\n        default:\n          return match.era(dateString, {\n            width: 'wide'\n          }) || match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return EraParser;\n}(Parser);","export var numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest\n  };\n}\nexport function parseNumericPattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: dateString.slice(1)\n    };\n  }\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n  }\n}\nexport function parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n  }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case 'morning':\n      return 4;\n    case 'evening':\n      return 17;\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n  return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n// | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n// | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n// | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(YearParser, _Parser);\n  var _super = _createSuper(YearParser);\n  function YearParser() {\n    var _this;\n    _classCallCheck(this, YearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(YearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n      switch (token) {\n        case 'y':\n          return mapValue(parseNDigits(4, dateString), valueCallback);\n        case 'yo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      var currentYear = date.getUTCFullYear();\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekYearParser, _Parser);\n  var _super = _createSuper(LocalWeekYearParser);\n  function LocalWeekYearParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n      switch (token) {\n        case 'Y':\n          return mapValue(parseNDigits(4, dateString), valueCallback);\n        case 'Yo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    }\n  }]);\n  return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekYearParser, _Parser);\n  var _super = _createSuper(ISOWeekYearParser);\n  function ISOWeekYearParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    }\n  }]);\n  return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ExtendedYearParser, _Parser);\n  var _super = _createSuper(ExtendedYearParser);\n  function ExtendedYearParser() {\n    var _this;\n    _classCallCheck(this, ExtendedYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ExtendedYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(QuarterParser, _Parser);\n  var _super = _createSuper(QuarterParser);\n  function QuarterParser() {\n    var _this;\n    _classCallCheck(this, QuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(QuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'Qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'QQQ':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'QQQQQ':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'QQQQ':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneQuarterParser, _Parser);\n  var _super = _createSuper(StandAloneQuarterParser);\n  function StandAloneQuarterParser() {\n    var _this;\n    _classCallCheck(this, StandAloneQuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneQuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'qqq':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'qqqqq':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'qqqq':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MonthParser, _Parser);\n  var _super = _createSuper(MonthParser);\n  function MonthParser() {\n    var _this;\n    _classCallCheck(this, MonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n    return _this;\n  }\n  _createClass(MonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'MM':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Mo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'MMM':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n        case 'MMMMM':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n        case 'MMMM':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneMonthParser, _Parser);\n  var _super = _createSuper(StandAloneMonthParser);\n  function StandAloneMonthParser() {\n    var _this;\n    _classCallCheck(this, StandAloneMonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneMonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'LL':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Lo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'LLL':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n        case 'LLLLL':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n        case 'LLLL':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekParser, _Parser);\n  var _super = _createSuper(LocalWeekParser);\n  function LocalWeekParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'wo':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    }\n  }]);\n  return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekParser, _Parser);\n  var _super = _createSuper(ISOWeekParser);\n  function ISOWeekParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'Io':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value));\n    }\n  }]);\n  return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DateParser, _Parser);\n  var _super = _createSuper(DateParser);\n  function DateParser() {\n    var _this;\n    _classCallCheck(this, DateParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DateParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, dateString);\n        case 'do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayOfYearParser, _Parser);\n  var _super = _createSuper(DayOfYearParser);\n  function DayOfYearParser() {\n    var _this;\n    _classCallCheck(this, DayOfYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayOfYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n        case 'Do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(2, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayParser, _Parser);\n  var _super = _createSuper(DayParser);\n  function DayParser() {\n    var _this;\n    _classCallCheck(this, DayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'EEEEE':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'EEEEEE':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'EEEE':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalDayParser, _Parser);\n  var _super = _createSuper(LocalDayParser);\n  function LocalDayParser() {\n    var _this;\n    _classCallCheck(this, LocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'eo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'eee':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'eeeee':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'eeeeee':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'eeee':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneLocalDayParser, _Parser);\n  var _super = _createSuper(StandAloneLocalDayParser);\n  function StandAloneLocalDayParser() {\n    var _this;\n    _classCallCheck(this, StandAloneLocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneLocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'co':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'ccc':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n        case 'ccccc':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n        case 'cccccc':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n        case 'cccc':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISODayParser, _Parser);\n  var _super = _createSuper(ISODayParser);\n  function ISODayParser() {\n    var _this;\n    _classCallCheck(this, ISODayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISODayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        if (value === 0) {\n          return 7;\n        }\n        return value;\n      };\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, dateString);\n        // 2nd\n        case 'io':\n          return match.ordinalNumber(dateString, {\n            unit: 'day'\n          });\n        // Tue\n        case 'iii':\n          return mapValue(match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // T\n        case 'iiiii':\n          return mapValue(match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tu\n        case 'iiiiii':\n          return mapValue(match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tuesday\n        case 'iiii':\n        default:\n          return mapValue(match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 7;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date = setUTCISODay(date, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n  requiredArgs(2, arguments);\n  var day = toInteger(dirtyDay);\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMParser, _Parser);\n  var _super = _createSuper(AMPMParser);\n  function AMPMParser() {\n    var _this;\n    _classCallCheck(this, AMPMParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaaa':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaa':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMMidnightParser, _Parser);\n  var _super = _createSuper(AMPMMidnightParser);\n  function AMPMMidnightParser() {\n    var _this;\n    _classCallCheck(this, AMPMMidnightParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMMidnightParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbbb':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbb':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayPeriodParser, _Parser);\n  var _super = _createSuper(DayPeriodParser);\n  function DayPeriodParser() {\n    var _this;\n    _classCallCheck(this, DayPeriodParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayPeriodParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBBB':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBB':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1to12Parser, _Parser);\n  var _super = _createSuper(Hour1to12Parser);\n  function Hour1to12Parser() {\n    var _this;\n    _classCallCheck(this, Hour1to12Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1to12Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, dateString);\n        case 'ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 12;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0to23Parser, _Parser);\n  var _super = _createSuper(Hour0to23Parser);\n  function Hour0to23Parser() {\n    var _this;\n    _classCallCheck(this, Hour0to23Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0to23Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, dateString);\n        case 'Ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 23;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0To11Parser, _Parser);\n  var _super = _createSuper(Hour0To11Parser);\n  function Hour0To11Parser() {\n    var _this;\n    _classCallCheck(this, Hour0To11Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0To11Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, dateString);\n        case 'Ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1To24Parser, _Parser);\n  var _super = _createSuper(Hour1To24Parser);\n  function Hour1To24Parser() {\n    var _this;\n    _classCallCheck(this, Hour1To24Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1To24Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, dateString);\n        case 'ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 24;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MinuteParser, _Parser);\n  var _super = _createSuper(MinuteParser);\n  function MinuteParser() {\n    var _this;\n    _classCallCheck(this, MinuteParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(MinuteParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, dateString);\n        case 'mo':\n          return match.ordinalNumber(dateString, {\n            unit: 'minute'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    }\n  }]);\n  return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(SecondParser, _Parser);\n  var _super = _createSuper(SecondParser);\n  function SecondParser() {\n    var _this;\n    _classCallCheck(this, SecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(SecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, dateString);\n        case 'so':\n          return match.ordinalNumber(dateString, {\n            unit: 'second'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    }\n  }]);\n  return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(FractionOfSecondParser, _Parser);\n  var _super = _createSuper(FractionOfSecondParser);\n  function FractionOfSecondParser() {\n    var _this;\n    _classCallCheck(this, FractionOfSecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(FractionOfSecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      var valueCallback = function valueCallback(value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n      return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMilliseconds(value);\n      return date;\n    }\n  }]);\n  return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneWithZParser, _Parser);\n  var _super = _createSuper(ISOTimezoneWithZParser);\n  function ISOTimezoneWithZParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneWithZParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n    return _this;\n  }\n  _createClass(ISOTimezoneWithZParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneParser, _Parser);\n  var _super = _createSuper(ISOTimezoneParser);\n  function ISOTimezoneParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n    return _this;\n  }\n  _createClass(ISOTimezoneParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampSecondsParser, _Parser);\n  var _super = _createSuper(TimestampSecondsParser);\n  function TimestampSecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampSecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampSecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampMillisecondsParser, _Parser);\n  var _super = _createSuper(TimestampMillisecondsParser);\n  function TimestampMillisecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampMillisecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampMillisecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nexport var parsers = {\n  G: new EraParser(),\n  y: new YearParser(),\n  Y: new LocalWeekYearParser(),\n  R: new ISOWeekYearParser(),\n  u: new ExtendedYearParser(),\n  Q: new QuarterParser(),\n  q: new StandAloneQuarterParser(),\n  M: new MonthParser(),\n  L: new StandAloneMonthParser(),\n  w: new LocalWeekParser(),\n  I: new ISOWeekParser(),\n  d: new DateParser(),\n  D: new DayOfYearParser(),\n  E: new DayParser(),\n  e: new LocalDayParser(),\n  c: new StandAloneLocalDayParser(),\n  i: new ISODayParser(),\n  a: new AMPMParser(),\n  b: new AMPMMidnightParser(),\n  B: new DayPeriodParser(),\n  h: new Hour1to12Parser(),\n  H: new Hour0to23Parser(),\n  K: new Hour0To11Parser(),\n  k: new Hour1To24Parser(),\n  m: new MinuteParser(),\n  s: new SecondParser(),\n  S: new FractionOfSecondParser(),\n  X: new ISOTimezoneWithZParser(),\n  x: new ISOTimezoneParser(),\n  t: new TimestampSecondsParser(),\n  T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  var setters = [new DateToSystemTimezoneSetter()];\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter in longFormatters) {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n  var _iterator = _createForOfIteratorHelper(tokens),\n    _step;\n  try {\n    var _loop = function _loop() {\n      var token = _step.value;\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      var firstCharacter = token[0];\n      var parser = parsers[firstCharacter];\n      if (parser) {\n        var incompatibleTokens = parser.incompatibleTokens;\n        if (Array.isArray(incompatibleTokens)) {\n          var incompatibleToken = usedTokens.find(function (usedToken) {\n            return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n          });\n          if (incompatibleToken) {\n            throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n          }\n        } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n        }\n        usedTokens.push({\n          token: firstCharacter,\n          fullToken: token\n        });\n        var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n        if (!parseResult) {\n          return {\n            v: new Date(NaN)\n          };\n        }\n        setters.push(parseResult.setter);\n        dateString = parseResult.rest;\n      } else {\n        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n          throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n        }\n\n        // Replace two single quote characters with one single quote character\n        if (token === \"''\") {\n          token = \"'\";\n        } else if (firstCharacter === \"'\") {\n          token = cleanEscapedString(token);\n        }\n\n        // Cut token from string, or, if string doesn't match the token, return Invalid Date\n        if (dateString.indexOf(token) === 0) {\n          dateString = dateString.slice(token.length);\n        } else {\n          return {\n            v: new Date(NaN)\n          };\n        }\n      }\n    };\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var _ret = _loop();\n      if (_typeof(_ret) === \"object\") return _ret.v;\n    }\n\n    // Check if the remaining input contains something other than whitespace\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).sort(function (a, b) {\n      return b.subPriority - a.subPriority;\n    });\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyReferenceDate);\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n  var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var setter = _step2.value;\n      if (!setter.validate(utcDate, subFnOptions)) {\n        return new Date(NaN);\n      }\n      var result = setter.set(utcDate, flags, subFnOptions);\n      // Result is tuple (date, flags)\n      if (Array.isArray(result)) {\n        utcDate = result[0];\n        assign(flags, result[1]);\n        // Result is date\n      } else {\n        utcDate = result;\n      }\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  return utcDate;\n}\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key            | Description                        |\n * |----------------|------------------------------------|\n * | years          | Amount of years to be added        |\n * | months         | Amount of months to be added       |\n * | weeks          | Amount of weeks to be added        |\n * | days           | Amount of days to be added         |\n * | hours          | Amount of hours to be added        |\n * | minutes        | Amount of minutes to be added      |\n * | seconds        | Amount of seconds to be added      |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n *   years: 2,\n *   months: 9,\n *   weeks: 1,\n *   days: 7,\n *   hours: 5,\n *   minutes: 9,\n *   seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n  requiredArgs(2, arguments);\n  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n  var years = duration.years ? toInteger(duration.years) : 0;\n  var months = duration.months ? toInteger(duration.months) : 0;\n  var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n  var days = duration.days ? toInteger(duration.days) : 0;\n  var hours = duration.hours ? toInteger(duration.hours) : 0;\n  var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n  var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n  // Add years and months\n  var date = toDate(dirtyDate);\n  var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n  // Add weeks and days\n  var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n  // Add days, hours, minutes and seconds\n  var minutesToAdd = minutes + hours * 60;\n  var secondsToAdd = seconds + minutesToAdd * 60;\n  var msToAdd = secondsToAdd * 1000;\n  var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n  return finalDate;\n}","import { Map, Record, List } from 'immutable';\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport InputNumber from 'rc-input-number';\nimport Select$1 from 'react-select';\nimport { formatISO, parse, format, add } from 'date-fns';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\n\nvar defaultFormContext = {\n    errors: Map(),\n    rootPath: [],\n    updateFormReducer: null,\n    validationSubscriptions: Map(),\n    addValidate: function () { },\n    removeValidate: function () { },\n};\nvar FormContext = React.createContext(defaultFormContext);\n\nvar useValidate = function (validate, name) {\n    var _a = useContext(FormContext), addValidate = _a.addValidate, removeValidate = _a.removeValidate;\n    useEffect(function () {\n        if (validate)\n            addValidate(name, validate);\n        return function () {\n            if (validate)\n                removeValidate(name);\n        };\n    }, []);\n};\n\nvar Select = function (_a) {\n    var label = _a.label, name = _a.name, id = _a.id, disabled = _a.disabled, className = _a.className, validate = _a.validate, readOnly = _a.readOnly, children = _a.children, formControlProps = _a.formControlProps, formGroupProps = _a.formGroupProps, formLabelProps = _a.formLabelProps, feedbackProps = _a.feedbackProps;\n    var dispatch = useDispatch();\n    var _b = useContext(FormContext), rootPath = _b.rootPath, updateFormReducer = _b.updateFormReducer, errors = _b.errors;\n    var value = useSelector(function (state) { return state.getIn(rootPath.concat(name.split(\".\"))); });\n    var nameId = id || name;\n    useValidate(validate, name);\n    var handleInput = function (event) {\n        var _a = event.target, value = _a.value, name = _a.name;\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: value }));\n    };\n    return (React.createElement(Form.Group, __assign({ className: className }, formGroupProps),\n        React.createElement(Form.Label, __assign({ htmlFor: nameId }, formLabelProps), label),\n        React.createElement(Form.Control, __assign({ as: \"select\", name: name, id: nameId, onChange: handleInput, value: value || \"\", \"aria-label\": label, isInvalid: !!errors.get(name), disabled: disabled, readOnly: readOnly }, formControlProps), children),\n        React.createElement(Form.Control.Feedback, __assign({ type: \"invalid\" }, feedbackProps), errors.get(name))));\n};\n\nvar Check = function (_a) {\n    var label = _a.label, name = _a.name, id = _a.id, type = _a.type, disabled = _a.disabled, inline = _a.inline, validate = _a.validate, formGroupProps = _a.formGroupProps, formCheckProps = _a.formCheckProps, feedbackProps = _a.feedbackProps;\n    var dispatch = useDispatch();\n    var _b = useContext(FormContext), rootPath = _b.rootPath, updateFormReducer = _b.updateFormReducer, errors = _b.errors;\n    var checked = useSelector(function (state) { return state.getIn(rootPath.concat(name.split(\".\"))); });\n    useValidate(validate, name);\n    var handleInput = function (event) {\n        var _a = event.target, checked = _a.checked, name = _a.name;\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: checked }));\n    };\n    return (React.createElement(Form.Group, __assign({}, formGroupProps),\n        React.createElement(Form.Check, __assign({ label: label, name: name, checked: checked || false, onChange: handleInput, id: id || name, type: type || \"checkbox\", disabled: disabled, inline: inline, isInvalid: !!errors.get(name) }, formCheckProps)),\n        errors.get(name) ? (React.createElement(\"div\", __assign({ className: \"text-danger\" }, feedbackProps),\n            React.createElement(\"small\", null, errors.get(name)))) : null));\n};\n\nvar FormControl = function (_a) {\n    var label = _a.label, name = _a.name, as = _a.as, id = _a.id, disabled = _a.disabled, validate = _a.validate, readOnly = _a.readOnly, autoFocus = _a.autoFocus, formGroupProps = _a.formGroupProps, formLabelProps = _a.formLabelProps, formControlProps = _a.formControlProps, numberInputProps = _a.numberInputProps, feedbackProps = _a.feedbackProps;\n    var dispatch = useDispatch();\n    var _b = useContext(FormContext), rootPath = _b.rootPath, updateFormReducer = _b.updateFormReducer, errors = _b.errors;\n    var value = useSelector(function (state) { return state.getIn(rootPath.concat(name.split(\".\"))); });\n    var nameId = id || name;\n    useValidate(validate, name);\n    var handleInput = function (event) {\n        var _a = event.target, value = _a.value, name = _a.name;\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: value }));\n    };\n    var handleNumberInput = function (value) {\n        if (value === \"\" || value === null) {\n            handleInput({ target: { value: null, name: name } });\n        }\n        else if (typeof value === \"number\") {\n            handleInput({ target: { value: value, name: name } });\n        }\n    };\n    return (React.createElement(Form.Group, __assign({}, formGroupProps),\n        React.createElement(Form.Label, __assign({ htmlFor: nameId }, formLabelProps), label),\n        (formControlProps === null || formControlProps === void 0 ? void 0 : formControlProps.type) === \"number\" ? (React.createElement(InputNumber, __assign({ inputMode: \"numeric\", name: name, id: nameId, onChange: handleNumberInput, value: value, \"aria-label\": label, className: errors.get(name) ? \"is-invalid\" : \"\", disabled: disabled, readOnly: readOnly, autoFocus: autoFocus }, numberInputProps))) : (React.createElement(Form.Control, __assign({ as: as || \"input\", name: name, id: nameId, onChange: handleInput, value: value || \"\", \"aria-label\": label, isInvalid: !!errors.get(name), disabled: disabled, readOnly: readOnly, autoFocus: autoFocus }, formControlProps))),\n        React.createElement(Form.Control.Feedback, __assign({ type: \"invalid\" }, feedbackProps), errors.get(name))));\n};\n\nvar fromJSON = function (json) {\n    var record = __assign({}, json);\n    return new ReactSelectRecord(record);\n};\nvar defaultReactSelectProps = {\n    id: -1,\n    name: \"\",\n};\nvar ReactSelectRecord = /** @class */ (function (_super) {\n    __extends(ReactSelectRecord, _super);\n    function ReactSelectRecord() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return ReactSelectRecord;\n}(Record(defaultReactSelectProps)));\n\nvar ReactSelect = function (_a) {\n    var label = _a.label, name = _a.name, options = _a.options, id = _a.id, validate = _a.validate, isMulti = _a.isMulti, onChange = _a.onChange, onInputChange = _a.onInputChange, isLoading = _a.isLoading, closeMenuOnSelect = _a.closeMenuOnSelect, formGroupProps = _a.formGroupProps, formLabelProps = _a.formLabelProps, selectProps = _a.selectProps, feedbackProps = _a.feedbackProps;\n    var dispatch = useDispatch();\n    var _b = useContext(FormContext), rootPath = _b.rootPath, updateFormReducer = _b.updateFormReducer, errors = _b.errors;\n    useValidate(validate, name);\n    var selected = useSelector(function (state) {\n        return state.getIn(rootPath.concat(name.split(\".\")));\n    });\n    var reactSelectOptions = options.map(function (option) { return fromJSON(option.toJS()); });\n    var handleInput = function (items) {\n        var iRecords = Array.isArray(items) ? items : [items];\n        var records = List(iRecords.map(function (iRecord) { return fromJSON(iRecord); }));\n        var value = isMulti ? records : records.first();\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: value }));\n        if (onChange)\n            onChange(value);\n    };\n    return (React.createElement(Form.Group, __assign({}, formGroupProps, { \"data-testid\": \"my-select-component\" }),\n        React.createElement(Form.Label, __assign({ htmlFor: id || name }, formLabelProps), label),\n        React.createElement(Select$1, __assign({ id: id || name, name: name, value: selected === null || selected === void 0 ? void 0 : selected.toJS(), options: (reactSelectOptions === null || reactSelectOptions === void 0 ? void 0 : reactSelectOptions.toJS()) || [], isMulti: !!isMulti, closeMenuOnSelect: !!closeMenuOnSelect, onChange: handleInput, styles: { control: function (styles) { return (__assign(__assign({}, styles), { borderColor: errors.get(name) ? \"red\" : styles.borderColor })); } }, getOptionLabel: function (x) { var _a; return (_a = x.name) === null || _a === void 0 ? void 0 : _a.toString(); }, getOptionValue: function (x) { var _a; return (_a = x.id) === null || _a === void 0 ? void 0 : _a.toString(); }, onInputChange: onInputChange, isLoading: !!isLoading }, selectProps)),\n        errors.get(name) ? (React.createElement(\"div\", __assign({ className: \"text-danger\" }, feedbackProps),\n            React.createElement(\"small\", null, errors.get(name)))) : null));\n};\n\nvar RsfForm = function (_a) {\n    var rootPath = _a.rootPath, updateFormReducer = _a.updateFormReducer, onSubmit = _a.onSubmit, children = _a.children, validate = _a.validate, formProps = _a.formProps;\n    var validationSubscriptions = useRef(Map());\n    var errorsRef = useRef(Map());\n    var _b = useState(null), validateArgs = _b[0], setValidateArgs = _b[1];\n    var _c = useState(false), mount = _c[0], setMount = _c[1];\n    var _d = useState(0), setForceUpdate = _d[1];\n    var rootRecord = useSelector(function (state) { return state.getIn(rootPath); });\n    var updateForm = function (args) {\n        setValidateArgs(args);\n        return updateFormReducer(args);\n    };\n    var runValidation = function (args, isSubmitting) {\n        if (isSubmitting === void 0) { isSubmitting = false; }\n        var newErrors = errorsRef.current;\n        if (validate) {\n            var validationErrors = validate(args);\n            validationErrors.forEach(function (_a) {\n                var name = _a.name, error = _a.error;\n                newErrors = error ? newErrors.set(name, error) : newErrors.delete(name);\n            });\n        }\n        if (validationSubscriptions.current.size > 0) {\n            validationSubscriptions.current.forEach(function (validate, name) {\n                if (validate.length === 2 || name === args.name || isSubmitting || args.name === undefined) {\n                    var error = undefined;\n                    error = validate(rootRecord === null || rootRecord === void 0 ? void 0 : rootRecord.getIn(name.split(\".\")), rootRecord);\n                    newErrors = error ? newErrors.set(name, error) : newErrors.delete(name);\n                }\n            });\n        }\n        if (validate || validationSubscriptions.current.size > 0)\n            errorsRef.current = newErrors;\n        setForceUpdate(function (prevState) { return prevState + 1; });\n        return newErrors;\n    };\n    // handles form submission\n    var handleSubmit = function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        var newErrors = runValidation({ rootPath: rootPath }, true);\n        if (Object.keys(newErrors.toJS()).length > 0) {\n            return;\n        }\n        onSubmit(event);\n    };\n    var addValidate = function (name, validate) {\n        validationSubscriptions.current = validationSubscriptions.current.set(name, validate);\n    };\n    var removeValidate = function (name) {\n        errorsRef.current = errorsRef.current.delete(name);\n        validationSubscriptions.current = validationSubscriptions.current.delete(name);\n    };\n    useEffect(function () {\n        if (!mount) {\n            setMount(true);\n        }\n        else {\n            runValidation(validateArgs || { rootPath: rootPath });\n            setValidateArgs(null);\n        }\n    }, [rootRecord]);\n    useEffect(function () {\n        errorsRef.current = Map();\n        setForceUpdate(function (prevState) { return prevState + 1; });\n    }, [JSON.stringify(rootPath)]);\n    return (React.createElement(FormContext.Provider, { value: {\n            errors: errorsRef.current,\n            rootPath: rootPath,\n            updateFormReducer: updateForm,\n            validationSubscriptions: validationSubscriptions.current,\n            addValidate: addValidate,\n            removeValidate: removeValidate,\n        } },\n        React.createElement(Form, __assign({ onSubmit: handleSubmit }, formProps), children)));\n};\nvar RsfForm$1 = Object.assign(RsfForm, {\n    Check: Check,\n    FormControl: FormControl,\n    ReactSelect: ReactSelect,\n    Select: Select,\n});\n\nvar FormControlDate = function (_a) {\n    var label = _a.label, name = _a.name, id = _a.id, disabled = _a.disabled, validate = _a.validate, readOnly = _a.readOnly, autoFocus = _a.autoFocus, formGroupProps = _a.formGroupProps, formLabelProps = _a.formLabelProps, formControlProps = _a.formControlProps, feedbackProps = _a.feedbackProps, _b = _a.min, min = _b === void 0 ? null : _b, _c = _a.max, max = _c === void 0 ? null : _c;\n    var dispatch = useDispatch();\n    var _d = useContext(FormContext), rootPath = _d.rootPath, updateFormReducer = _d.updateFormReducer, errors = _d.errors;\n    var nameId = id || name;\n    var date = useSelector(function (state) { return state.getIn(rootPath.concat(name.split(\".\"))); });\n    var formattedDate = date ? formatISO(date.getTime(), { representation: \"date\" }) : \"\";\n    var dateValidate = function (date) {\n        var dateBeforeMin = date && min && new Date(min).setHours(0, 0, 0) > date.getTime();\n        if (dateBeforeMin) {\n            return \"Minimum allowed date: '\".concat(new Date(min).toLocaleDateString(), \"'\");\n        }\n        var dateAfterMax = date && max && new Date(max).setHours(23, 59, 59) < date.getTime();\n        if (dateAfterMax) {\n            return \"Maximum allowed date: '\".concat(new Date(max).toLocaleDateString(), \"'\");\n        }\n        if (validate) {\n            return validate(date);\n        }\n    };\n    var handleInput = function (event) {\n        var _a = event.target, selectedDate = _a.value, name = _a.name;\n        var parsedDate = parse(selectedDate, \"yyyy-MM-dd\", new Date());\n        var isDateValid = parsedDate.toString() !== \"Invalid Date\";\n        if (!isDateValid) {\n            return;\n        }\n        if (date) {\n            parsedDate.setHours(date.getHours());\n            parsedDate.setMinutes(date.getMinutes());\n        }\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: parsedDate }));\n    };\n    useValidate(min || max ? dateValidate : validate, name);\n    return (React.createElement(Form.Group, __assign({}, formGroupProps),\n        React.createElement(Form.Label, __assign({ htmlFor: nameId }, formLabelProps), label),\n        React.createElement(Form.Control, __assign({ type: \"date\", name: name, id: nameId, onChange: handleInput, value: formattedDate, \"aria-label\": label, isInvalid: !!errors.get(name), disabled: disabled, readOnly: readOnly, autoFocus: autoFocus, min: min, max: max }, formControlProps)),\n        React.createElement(Form.Control.Feedback, __assign({ type: \"invalid\" }, feedbackProps), errors.get(name))));\n};\n\nvar FormControlTime = function (_a) {\n    var label = _a.label, name = _a.name, id = _a.id, disabled = _a.disabled, validate = _a.validate, readOnly = _a.readOnly, autoFocus = _a.autoFocus, formGroupProps = _a.formGroupProps, formLabelProps = _a.formLabelProps, formControlProps = _a.formControlProps, feedbackProps = _a.feedbackProps;\n    var dispatch = useDispatch();\n    var _b = useContext(FormContext), rootPath = _b.rootPath, updateFormReducer = _b.updateFormReducer, errors = _b.errors;\n    var value = useSelector(function (state) { return state.getIn(rootPath.concat(name.split(\".\"))); });\n    var formattedValue = value ? format(value, \"h:mm a\") : \"\";\n    var nameId = id || name;\n    useValidate(validate, name);\n    var handleInput = function (event) {\n        var _a = event.target, newValue = _a.value, name = _a.name;\n        var selectedDate = parse(newValue, \"h:mm a\", new Date());\n        var prevDate = value || new Date();\n        var newDate = new Date(prevDate.getFullYear() || 0, prevDate.getMonth() || 0, prevDate.getDate() || 0, selectedDate.getHours(), selectedDate.getMinutes());\n        dispatch(updateFormReducer({ rootPath: rootPath, name: name, value: newDate }));\n    };\n    function getTimeOptions() {\n        var startTime = parse(\"00:00\", \"HH:mm\", new Date());\n        var endTime = parse(\"23:59\", \"HH:mm\", new Date());\n        var timeStops = [];\n        while (startTime <= endTime) {\n            timeStops.push(format(startTime, \"h:mm a\"));\n            startTime = add(startTime, { minutes: 15 });\n        }\n        return timeStops;\n    }\n    var timeOptions = getTimeOptions();\n    return (React.createElement(Form.Group, __assign({}, formGroupProps),\n        React.createElement(Form.Label, __assign({ htmlFor: nameId }, formLabelProps), label),\n        React.createElement(Form.Control, __assign({ as: \"select\", name: name, id: nameId, onChange: handleInput, value: formattedValue, \"aria-label\": label, isInvalid: !!errors.get(name), disabled: disabled, readOnly: readOnly, autoFocus: autoFocus }, formControlProps),\n            React.createElement(\"option\", { value: \"\", hidden: true }),\n            timeOptions.map(function (dateStr) { return (React.createElement(\"option\", { key: dateStr, value: dateStr }, dateStr)); })),\n        React.createElement(Form.Control.Feedback, __assign({ type: \"invalid\" }, feedbackProps), errors.get(name))));\n};\n\nexport { Check, FormContext, FormControl, FormControlDate, FormControlTime, ReactSelect, ReactSelectRecord, RsfForm$1 as RsfForm, Select, fromJSON };\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId,\n    $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all);\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($nonEmptySchema) {\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    out += ' if (' + ($nextValid) + ') break; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n  } else {\n    out += ' if (' + ($data) + '.length == 0) {';\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should contain a valid item\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } else { ';\n  if ($nonEmptySchema) {\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n  }\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport divWithClassName from './divWithClassName';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport SafeAnchor from './SafeAnchor';\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nvar AlertHeading = createWithBsPrefix('alert-heading', {\n  Component: DivStyledAsH4\n});\nvar AlertLink = createWithBsPrefix('alert-link', {\n  Component: SafeAnchor\n});\nvar defaultProps = {\n  show: true,\n  transition: Fade,\n  closeLabel: 'Close alert'\n};\nvar Alert = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n  var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n    show: 'onClose'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      show = _useUncontrolled.show,\n      closeLabel = _useUncontrolled.closeLabel,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      variant = _useUncontrolled.variant,\n      onClose = _useUncontrolled.onClose,\n      dismissible = _useUncontrolled.dismissible,\n      transition = _useUncontrolled.transition,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n  var handleClose = useEventCallback(function (e) {\n    if (onClose) {\n      onClose(false, e);\n    }\n  });\n  var Transition = transition === true ? Fade : transition;\n  var alert = /*#__PURE__*/React.createElement(\"div\", _extends({\n    role: \"alert\"\n  }, !Transition ? props : undefined, {\n    ref: ref,\n    className: classNames(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\")\n  }), dismissible && /*#__PURE__*/React.createElement(CloseButton, {\n    onClick: handleClose,\n    label: closeLabel\n  }), children);\n  if (!Transition) return show ? alert : null;\n  return /*#__PURE__*/React.createElement(Transition, _extends({\n    unmountOnExit: true\n  }, props, {\n    ref: undefined,\n    in: show\n  }), alert);\n});\nAlert.displayName = 'Alert';\nAlert.defaultProps = defaultProps;\nAlert.Link = AlertLink;\nAlert.Heading = AlertHeading;\nexport default Alert;","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  pill: false\n};\nvar Badge = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      pill = _ref.pill,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'span' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"pill\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'badge');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, prefix, pill && prefix + \"-pill\", variant && prefix + \"-\" + variant)\n  }));\n});\nBadge.displayName = 'Badge';\nBadge.defaultProps = defaultProps;\nexport default Badge;","require('./angular-messages');\nmodule.exports = 'ngMessages';\n","\r\nif (typeof module !== 'undefined' && module.exports) {\r\n    module.exports = {\r\n      DBSCAN: require('./DBSCAN.js'),\r\n      KMEANS: require('./KMEANS.js'),\r\n      OPTICS: require('./OPTICS.js'),\r\n      PriorityQueue: require('./PriorityQueue.js')\r\n    };\r\n}\r\n","'use strict';\n/**\n * Latency network quality statistics.\n * @property {?number} jitter - media jitter in seconds\n * @property {?number} rtt - round trip time in seconds\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for latency\n */\nvar NetworkQualityLatencyStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityLatencyStats}.\n     * @param {LatencyStats} latencyStats\n     */\n    function NetworkQualityLatencyStats(_a) {\n        var _b = _a.jitter, jitter = _b === void 0 ? null : _b, _c = _a.rtt, rtt = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            jitter: {\n                value: jitter,\n                enumerable: true\n            },\n            rtt: {\n                value: rtt,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityLatencyStats;\n}());\nmodule.exports = NetworkQualityLatencyStats;\n//# sourceMappingURL=networkqualitylatencystats.js.map","var error = require('./utils/error');\n\n// TODO\nexports.CELL = function() {\n  throw new Error('CELL is not implemented');\n};\n\nexports.ERROR = {};\nexports.ERROR.TYPE = function(error_val) {\n  switch (error_val) {\n    case error.nil: return 1;\n    case error.div0: return 2;\n    case error.value: return 3;\n    case error.ref: return 4;\n    case error.name: return 5;\n    case error.num: return 6;\n    case error.na: return 7;\n    case error.data: return 8;\n  }\n  return error.na;\n};\n\n// TODO\nexports.INFO = function() {\n  throw new Error('INFO is not implemented');\n};\n\nexports.ISBLANK = function(value) {\n  return value === null;\n};\n\nexports.ISBINARY = function (number) {\n  return (/^[01]{1,10}$/).test(number);\n};\n\nexports.ISERR = function(value) {\n  return ([error.value, error.ref, error.div0, error.num, error.name, error.nil]).indexOf(value) >= 0 ||\n    (typeof value === 'number' && (isNaN(value) || !isFinite(value)));\n};\n\nexports.ISERROR = function(value) {\n  return exports.ISERR(value) || value === error.na;\n};\n\nexports.ISEVEN = function(number) {\n  return (Math.floor(Math.abs(number)) & 1) ? false : true;\n};\n\n// TODO\nexports.ISFORMULA = function() {\n  throw new Error('ISFORMULA is not implemented');\n};\n\nexports.ISLOGICAL = function(value) {\n  return value === true || value === false;\n};\n\nexports.ISNA = function(value) {\n  return value === error.na;\n};\n\nexports.ISNONTEXT = function(value) {\n  return typeof(value) !== 'string';\n};\n\nexports.ISNUMBER = function(value) {\n  return typeof(value) === 'number' && !isNaN(value) && isFinite(value);\n};\n\nexports.ISODD = function(number) {\n  return (Math.floor(Math.abs(number)) & 1) ? true : false;\n};\n\n// TODO\nexports.ISREF = function() {\n  throw new Error('ISREF is not implemented');\n};\n\nexports.ISTEXT = function(value) {\n  return typeof(value) === 'string';\n};\n\nexports.N = function(value) {\n  if (this.ISNUMBER(value)) {\n    return value;\n  }\n  if (value instanceof Date) {\n    return value.getTime();\n  }\n  if (value === true) {\n    return 1;\n  }\n  if (value === false) {\n    return 0;\n  }\n  if (this.ISERROR(value)) {\n    return value;\n  }\n  return 0;\n};\n\nexports.NA = function() {\n  return error.na;\n};\n\n\n// TODO\nexports.SHEET = function() {\n  throw new Error('SHEET is not implemented');\n};\n\n// TODO\nexports.SHEETS = function() {\n  throw new Error('SHEETS is not implemented');\n};\n\nexports.TYPE = function(value) {\n  if (this.ISNUMBER(value)) {\n    return 1;\n  }\n  if (this.ISTEXT(value)) {\n    return 2;\n  }\n  if (this.ISLOGICAL(value)) {\n    return 4;\n  }\n  if (this.ISERROR(value)) {\n    return 16;\n  }\n  if (Array.isArray(value)) {\n    return 64;\n  }\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n  var prefixes = _ref.prefixes,\n      children = _ref.children;\n  var copiedPrefixes = useMemo(function () {\n    return _extends({}, prefixes);\n  }, [prefixes]);\n  return /*#__PURE__*/React.createElement(Provider, {\n    value: copiedPrefixes\n  }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n    var props = _extends({}, _ref2);\n\n    props[forwardRefAs] = ref;\n    var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      bsPrefix: bsPrefix\n    }));\n  });\n  Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n  return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n// https://github.com/tc39/proposal-async-iterator-helpers\n// https://github.com/tc39/proposal-array-from-async\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\n\nvar createMethod = function (TYPE) {\n  var IS_TO_ARRAY = TYPE === 0;\n  var IS_FOR_EACH = TYPE === 1;\n  var IS_EVERY = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  return function (object, fn, target) {\n    anObject(object);\n    var MAPPING = fn !== undefined;\n    if (MAPPING || !IS_TO_ARRAY) aCallable(fn);\n    var record = getIteratorDirect(object);\n    var Promise = getBuiltIn('Promise');\n    var iterator = record.iterator;\n    var next = record.next;\n    var counter = 0;\n\n    return new Promise(function (resolve, reject) {\n      var ifAbruptCloseAsyncIterator = function (error) {\n        closeAsyncIteration(iterator, reject, error, reject);\n      };\n\n      var loop = function () {\n        try {\n          if (MAPPING) try {\n            doesNotExceedSafeInteger(counter);\n          } catch (error5) { ifAbruptCloseAsyncIterator(error5); }\n          Promise.resolve(anObject(call(next, iterator))).then(function (step) {\n            try {\n              if (anObject(step).done) {\n                if (IS_TO_ARRAY) {\n                  target.length = counter;\n                  resolve(target);\n                } else resolve(IS_SOME ? false : IS_EVERY || undefined);\n              } else {\n                var value = step.value;\n                try {\n                  if (MAPPING) {\n                    var result = fn(value, counter);\n\n                    var handler = function ($result) {\n                      if (IS_FOR_EACH) {\n                        loop();\n                      } else if (IS_EVERY) {\n                        $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);\n                      } else if (IS_TO_ARRAY) {\n                        try {\n                          target[counter++] = $result;\n                          loop();\n                        } catch (error4) { ifAbruptCloseAsyncIterator(error4); }\n                      } else {\n                        $result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop();\n                      }\n                    };\n\n                    if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n                    else handler(result);\n                  } else {\n                    target[counter++] = value;\n                    loop();\n                  }\n                } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n              }\n            } catch (error2) { reject(error2); }\n          }, reject);\n        } catch (error) { reject(error); }\n      };\n\n      loop();\n    });\n  };\n};\n\nmodule.exports = {\n  // `AsyncIterator.prototype.toArray` / `Array.fromAsync` methods\n  toArray: createMethod(0),\n  // `AsyncIterator.prototype.forEach` method\n  forEach: createMethod(1),\n  // `AsyncIterator.prototype.every` method\n  every: createMethod(2),\n  // `AsyncIterator.prototype.some` method\n  some: createMethod(3),\n  // `AsyncIterator.prototype.find` method\n  find: createMethod(4)\n};\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n  if (isArray(value)) {\n    return arrayMap(value, toKey);\n  }\n  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","/**!\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * FileAPI Flash shim for old browsers not supporting FormData\n * @author  Danial  <danial.farid@gmail.com>\n * @version 12.2.13\n */\n\n(function () {\n  /** @namespace FileAPI.noContentTimeout */\n\n  function patchXHR(fnName, newFn) {\n    window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\n  }\n\n  function redefineProp(xhr, prop, fn) {\n    try {\n      Object.defineProperty(xhr, prop, {get: fn});\n    } catch (e) {/*ignore*/\n    }\n  }\n\n  if (!window.FileAPI) {\n    window.FileAPI = {};\n  }\n\n  if (!window.XMLHttpRequest) {\n    throw 'AJAX is not supported. XMLHttpRequest is not defined.';\n  }\n\n  FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\n  if (FileAPI.shouldLoad) {\n    var initializeUploadListener = function (xhr) {\n      if (!xhr.__listeners) {\n        if (!xhr.upload) xhr.upload = {};\n        xhr.__listeners = [];\n        var origAddEventListener = xhr.upload.addEventListener;\n        xhr.upload.addEventListener = function (t, fn) {\n          xhr.__listeners[t] = fn;\n          if (origAddEventListener) origAddEventListener.apply(this, arguments);\n        };\n      }\n    };\n\n    patchXHR('open', function (orig) {\n      return function (m, url, b) {\n        initializeUploadListener(this);\n        this.__url = url;\n        try {\n          orig.apply(this, [m, url, b]);\n        } catch (e) {\n          if (e.message.indexOf('Access is denied') > -1) {\n            this.__origError = e;\n            orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\n          }\n        }\n      };\n    });\n\n    patchXHR('getResponseHeader', function (orig) {\n      return function (h) {\n        return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\n      };\n    });\n\n    patchXHR('getAllResponseHeaders', function (orig) {\n      return function () {\n        return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\n      };\n    });\n\n    patchXHR('abort', function (orig) {\n      return function () {\n        return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\n      };\n    });\n\n    patchXHR('setRequestHeader', function (orig) {\n      return function (header, value) {\n        if (header === '__setXHR_') {\n          initializeUploadListener(this);\n          var val = value(this);\n          // fix for angular < 1.2.0\n          if (val instanceof Function) {\n            val(this);\n          }\n        } else {\n          this.__requestHeaders = this.__requestHeaders || {};\n          this.__requestHeaders[header] = value;\n          orig.apply(this, arguments);\n        }\n      };\n    });\n\n    patchXHR('send', function (orig) {\n      return function () {\n        var xhr = this;\n        if (arguments[0] && arguments[0].__isFileAPIShim) {\n          var formData = arguments[0];\n          var config = {\n            url: xhr.__url,\n            jsonp: false, //removes the callback form param\n            cache: true, //removes the ?fileapiXXX in the url\n            complete: function (err, fileApiXHR) {\n              if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\n                // this error seems to be fine the file is being uploaded properly.\n                err = null;\n              }\n              xhr.__completed = true;\n              if (!err && xhr.__listeners.load)\n                xhr.__listeners.load({\n                  type: 'load',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (!err && xhr.__listeners.loadend)\n                xhr.__listeners.loadend({\n                  type: 'loadend',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (err === 'abort' && xhr.__listeners.abort)\n                xhr.__listeners.abort({\n                  type: 'abort',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\n                return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\n              });\n              if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\n                return fileApiXHR.statusText;\n              });\n              redefineProp(xhr, 'readyState', function () {\n                return 4;\n              });\n              if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\n                return fileApiXHR.response;\n              });\n              var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\n              redefineProp(xhr, 'responseText', function () {\n                return resp;\n              });\n              redefineProp(xhr, 'response', function () {\n                return resp;\n              });\n              if (err) redefineProp(xhr, 'err', function () {\n                return err;\n              });\n              xhr.__fileApiXHR = fileApiXHR;\n              if (xhr.onreadystatechange) xhr.onreadystatechange();\n              if (xhr.onload) xhr.onload();\n            },\n            progress: function (e) {\n              e.target = xhr;\n              if (xhr.__listeners.progress) xhr.__listeners.progress(e);\n              xhr.__total = e.total;\n              xhr.__loaded = e.loaded;\n              if (e.total === e.loaded) {\n                // fix flash issue that doesn't call complete if there is no response text from the server\n                var _this = this;\n                setTimeout(function () {\n                  if (!xhr.__completed) {\n                    xhr.getAllResponseHeaders = function () {\n                    };\n                    _this.complete(null, {status: 204, statusText: 'No Content'});\n                  }\n                }, FileAPI.noContentTimeout || 10000);\n              }\n            },\n            headers: xhr.__requestHeaders\n          };\n          config.data = {};\n          config.files = {};\n          for (var i = 0; i < formData.data.length; i++) {\n            var item = formData.data[i];\n            if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\n              config.files[item.key] = item.val;\n            } else {\n              config.data[item.key] = item.val;\n            }\n          }\n\n          setTimeout(function () {\n            if (!FileAPI.hasFlash) {\n              throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n            }\n            xhr.__fileApiXHR = FileAPI.upload(config);\n          }, 1);\n        } else {\n          if (this.__origError) {\n            throw this.__origError;\n          }\n          orig.apply(xhr, arguments);\n        }\n      };\n    });\n    window.XMLHttpRequest.__isFileAPIShim = true;\n    window.FormData = FormData = function () {\n      return {\n        append: function (key, val, name) {\n          if (val.__isFileAPIBlobShim) {\n            val = val.data[0];\n          }\n          this.data.push({\n            key: key,\n            val: val,\n            name: name\n          });\n        },\n        data: [],\n        __isFileAPIShim: true\n      };\n    };\n\n    window.Blob = Blob = function (b) {\n      return {\n        data: b,\n        __isFileAPIBlobShim: true\n      };\n    };\n  }\n\n})();\n\n(function () {\n  /** @namespace FileAPI.forceLoad */\n  /** @namespace window.FileAPI.jsUrl */\n  /** @namespace window.FileAPI.jsPath */\n\n  function isInputTypeFile(elem) {\n    return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\n  }\n\n  function hasFlash() {\n    try {\n      var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n      if (fo) return true;\n    } catch (e) {\n      if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\n    }\n    return false;\n  }\n\n  function getOffset(obj) {\n    var left = 0, top = 0;\n\n    if (window.jQuery) {\n      return jQuery(obj).offset();\n    }\n\n    if (obj.offsetParent) {\n      do {\n        left += (obj.offsetLeft - obj.scrollLeft);\n        top += (obj.offsetTop - obj.scrollTop);\n        obj = obj.offsetParent;\n      } while (obj);\n    }\n    return {\n      left: left,\n      top: top\n    };\n  }\n\n  if (FileAPI.shouldLoad) {\n    FileAPI.hasFlash = hasFlash();\n\n    //load FileAPI\n    if (FileAPI.forceLoad) {\n      FileAPI.html5 = false;\n    }\n\n    if (!FileAPI.upload) {\n      var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\n      if (window.FileAPI.jsUrl) {\n        jsUrl = window.FileAPI.jsUrl;\n      } else if (window.FileAPI.jsPath) {\n        basePath = window.FileAPI.jsPath;\n      } else {\n        for (i = 0; i < allScripts.length; i++) {\n          src = allScripts[i].src;\n          index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\n          if (index > -1) {\n            basePath = src.substring(0, index + 1);\n            break;\n          }\n        }\n      }\n\n      if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\n      script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\n      document.getElementsByTagName('head')[0].appendChild(script);\n    }\n\n    FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\n      if (!hasFlash()) {\n        throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n      }\n      var fixInputStyle = function () {\n        var label = fileElem.parent();\n        if (elem.attr('disabled')) {\n          if (label) label.removeClass('js-fileapi-wrapper');\n        } else {\n          if (!fileElem.attr('__ngf_flash_')) {\n            fileElem.unbind('change');\n            fileElem.unbind('click');\n            fileElem.bind('change', function (evt) {\n              fileApiChangeFn.apply(this, [evt]);\n              changeFn.apply(this, [evt]);\n            });\n            fileElem.attr('__ngf_flash_', 'true');\n          }\n          label.addClass('js-fileapi-wrapper');\n          if (!isInputTypeFile(elem)) {\n            label.css('position', 'absolute')\n              .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\n              .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n              .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\n              .css('overflow', 'hidden').css('z-index', '900000')\n              .css('visibility', 'visible');\n            fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n              .css('position', 'absolute').css('top', '0px').css('left', '0px');\n          }\n        }\n      };\n\n      elem.bind('mouseenter', fixInputStyle);\n\n      var fileApiChangeFn = function (evt) {\n        var files = FileAPI.getFiles(evt);\n        //just a double check for #233\n        for (var i = 0; i < files.length; i++) {\n          if (files[i].size === undefined) files[i].size = 0;\n          if (files[i].name === undefined) files[i].name = 'file';\n          if (files[i].type === undefined) files[i].type = 'undefined';\n        }\n        if (!evt.target) {\n          evt.target = {};\n        }\n        evt.target.files = files;\n        // if evt.target.files is not writable use helper field\n        if (evt.target.files !== files) {\n          evt.__files_ = files;\n        }\n        (evt.__files_ || evt.target.files).item = function (i) {\n          return (evt.__files_ || evt.target.files)[i] || null;\n        };\n      };\n    };\n\n    FileAPI.disableFileInput = function (elem, disable) {\n      if (disable) {\n        elem.removeClass('js-fileapi-wrapper');\n      } else {\n        elem.addClass('js-fileapi-wrapper');\n      }\n    };\n  }\n})();\n\nif (!window.FileReader) {\n  window.FileReader = function () {\n    var _this = this, loadStarted = false;\n    this.listeners = {};\n    this.addEventListener = function (type, fn) {\n      _this.listeners[type] = _this.listeners[type] || [];\n      _this.listeners[type].push(fn);\n    };\n    this.removeEventListener = function (type, fn) {\n      if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\n    };\n    this.dispatchEvent = function (evt) {\n      var list = _this.listeners[evt.type];\n      if (list) {\n        for (var i = 0; i < list.length; i++) {\n          list[i].call(_this, evt);\n        }\n      }\n    };\n    this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\n\n    var constructEvent = function (type, evt) {\n      var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\n      if (evt.result != null) e.target.result = evt.result;\n      return e;\n    };\n    var listener = function (evt) {\n      if (!loadStarted) {\n        loadStarted = true;\n        if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\n      }\n      var e;\n      if (evt.type === 'load') {\n        if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\n        e = constructEvent('load', evt);\n        if (_this.onload) _this.onload(e);\n        _this.dispatchEvent(e);\n      } else if (evt.type === 'progress') {\n        e = constructEvent('progress', evt);\n        if (_this.onprogress) _this.onprogress(e);\n        _this.dispatchEvent(e);\n      } else {\n        e = constructEvent('error', evt);\n        if (_this.onerror) _this.onerror(e);\n        _this.dispatchEvent(e);\n      }\n    };\n    this.readAsDataURL = function (file) {\n      FileAPI.readAsDataURL(file, listener);\n    };\n    this.readAsText = function (file) {\n      FileAPI.readAsText(file, listener);\n    };\n  };\n}\n\n/**!\n * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * @author  Danial  <danial.farid@gmail.com>\n * @version 12.2.13\n */\n\nif (window.XMLHttpRequest && !(window.FileAPI && FileAPI.shouldLoad)) {\n  window.XMLHttpRequest.prototype.setRequestHeader = (function (orig) {\n    return function (header, value) {\n      if (header === '__setXHR_') {\n        var val = value(this);\n        // fix for angular < 1.2.0\n        if (val instanceof Function) {\n          val(this);\n        }\n      } else {\n        orig.apply(this, arguments);\n      }\n    };\n  })(window.XMLHttpRequest.prototype.setRequestHeader);\n}\n\nvar ngFileUpload = angular.module('ngFileUpload', []);\n\nngFileUpload.version = '12.2.13';\n\nngFileUpload.service('UploadBase', ['$http', '$q', '$timeout', function ($http, $q, $timeout) {\n  var upload = this;\n  upload.promisesCount = 0;\n\n  this.isResumeSupported = function () {\n    return window.Blob && window.Blob.prototype.slice;\n  };\n\n  var resumeSupported = this.isResumeSupported();\n\n  function sendHttp(config) {\n    config.method = config.method || 'POST';\n    config.headers = config.headers || {};\n\n    var deferred = config._deferred = config._deferred || $q.defer();\n    var promise = deferred.promise;\n\n    function notifyProgress(e) {\n      if (deferred.notify) {\n        deferred.notify(e);\n      }\n      if (promise.progressFunc) {\n        $timeout(function () {\n          promise.progressFunc(e);\n        });\n      }\n    }\n\n    function getNotifyEvent(n) {\n      if (config._start != null && resumeSupported) {\n        return {\n          loaded: n.loaded + config._start,\n          total: (config._file && config._file.size) || n.total,\n          type: n.type, config: config,\n          lengthComputable: true, target: n.target\n        };\n      } else {\n        return n;\n      }\n    }\n\n    if (!config.disableProgress) {\n      config.headers.__setXHR_ = function () {\n        return function (xhr) {\n          if (!xhr || !xhr.upload || !xhr.upload.addEventListener) return;\n          config.__XHR = xhr;\n          if (config.xhrFn) config.xhrFn(xhr);\n          xhr.upload.addEventListener('progress', function (e) {\n            e.config = config;\n            notifyProgress(getNotifyEvent(e));\n          }, false);\n          //fix for firefox not firing upload progress end, also IE8-9\n          xhr.upload.addEventListener('load', function (e) {\n            if (e.lengthComputable) {\n              e.config = config;\n              notifyProgress(getNotifyEvent(e));\n            }\n          }, false);\n        };\n      };\n    }\n\n    function uploadWithAngular() {\n      $http(config).then(function (r) {\n          if (resumeSupported && config._chunkSize && !config._finished && config._file) {\n            var fileSize = config._file && config._file.size || 0;\n            notifyProgress({\n                loaded: Math.min(config._end, fileSize),\n                total: fileSize,\n                config: config,\n                type: 'progress'\n              }\n            );\n            upload.upload(config, true);\n          } else {\n            if (config._finished) delete config._finished;\n            deferred.resolve(r);\n          }\n        }, function (e) {\n          deferred.reject(e);\n        }, function (n) {\n          deferred.notify(n);\n        }\n      );\n    }\n\n    if (!resumeSupported) {\n      uploadWithAngular();\n    } else if (config._chunkSize && config._end && !config._finished) {\n      config._start = config._end;\n      config._end += config._chunkSize;\n      uploadWithAngular();\n    } else if (config.resumeSizeUrl) {\n      $http.get(config.resumeSizeUrl).then(function (resp) {\n        if (config.resumeSizeResponseReader) {\n          config._start = config.resumeSizeResponseReader(resp.data);\n        } else {\n          config._start = parseInt((resp.data.size == null ? resp.data : resp.data.size).toString());\n        }\n        if (config._chunkSize) {\n          config._end = config._start + config._chunkSize;\n        }\n        uploadWithAngular();\n      }, function (e) {\n        throw e;\n      });\n    } else if (config.resumeSize) {\n      config.resumeSize().then(function (size) {\n        config._start = size;\n        if (config._chunkSize) {\n          config._end = config._start + config._chunkSize;\n        }\n        uploadWithAngular();\n      }, function (e) {\n        throw e;\n      });\n    } else {\n      if (config._chunkSize) {\n        config._start = 0;\n        config._end = config._start + config._chunkSize;\n      }\n      uploadWithAngular();\n    }\n\n\n    promise.success = function (fn) {\n      promise.then(function (response) {\n        fn(response.data, response.status, response.headers, config);\n      });\n      return promise;\n    };\n\n    promise.error = function (fn) {\n      promise.then(null, function (response) {\n        fn(response.data, response.status, response.headers, config);\n      });\n      return promise;\n    };\n\n    promise.progress = function (fn) {\n      promise.progressFunc = fn;\n      promise.then(null, null, function (n) {\n        fn(n);\n      });\n      return promise;\n    };\n    promise.abort = promise.pause = function () {\n      if (config.__XHR) {\n        $timeout(function () {\n          config.__XHR.abort();\n        });\n      }\n      return promise;\n    };\n    promise.xhr = function (fn) {\n      config.xhrFn = (function (origXhrFn) {\n        return function () {\n          if (origXhrFn) origXhrFn.apply(promise, arguments);\n          fn.apply(promise, arguments);\n        };\n      })(config.xhrFn);\n      return promise;\n    };\n\n    upload.promisesCount++;\n    if (promise['finally'] && promise['finally'] instanceof Function) {\n      promise['finally'](function () {\n        upload.promisesCount--;\n      });\n    }\n    return promise;\n  }\n\n  this.isUploadInProgress = function () {\n    return upload.promisesCount > 0;\n  };\n\n  this.rename = function (file, name) {\n    file.ngfName = name;\n    return file;\n  };\n\n  this.jsonBlob = function (val) {\n    if (val != null && !angular.isString(val)) {\n      val = JSON.stringify(val);\n    }\n    var blob = new window.Blob([val], {type: 'application/json'});\n    blob._ngfBlob = true;\n    return blob;\n  };\n\n  this.json = function (val) {\n    return angular.toJson(val);\n  };\n\n  function copy(obj) {\n    var clone = {};\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        clone[key] = obj[key];\n      }\n    }\n    return clone;\n  }\n\n  this.isFile = function (file) {\n    return file != null && (file instanceof window.Blob || (file.flashId && file.name && file.size));\n  };\n\n  this.upload = function (config, internal) {\n    function toResumeFile(file, formData) {\n      if (file._ngfBlob) return file;\n      config._file = config._file || file;\n      if (config._start != null && resumeSupported) {\n        if (config._end && config._end >= file.size) {\n          config._finished = true;\n          config._end = file.size;\n        }\n        var slice = file.slice(config._start, config._end || file.size);\n        slice.name = file.name;\n        slice.ngfName = file.ngfName;\n        if (config._chunkSize) {\n          formData.append('_chunkSize', config._chunkSize);\n          formData.append('_currentChunkSize', config._end - config._start);\n          formData.append('_chunkNumber', Math.floor(config._start / config._chunkSize));\n          formData.append('_totalSize', config._file.size);\n        }\n        return slice;\n      }\n      return file;\n    }\n\n    function addFieldToFormData(formData, val, key) {\n      if (val !== undefined) {\n        if (angular.isDate(val)) {\n          val = val.toISOString();\n        }\n        if (angular.isString(val)) {\n          formData.append(key, val);\n        } else if (upload.isFile(val)) {\n          var file = toResumeFile(val, formData);\n          var split = key.split(',');\n          if (split[1]) {\n            file.ngfName = split[1].replace(/^\\s+|\\s+$/g, '');\n            key = split[0];\n          }\n          config._fileKey = config._fileKey || key;\n          formData.append(key, file, file.ngfName || file.name);\n        } else {\n          if (angular.isObject(val)) {\n            if (val.$$ngfCircularDetection) throw 'ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: ' + key;\n\n            val.$$ngfCircularDetection = true;\n            try {\n              for (var k in val) {\n                if (val.hasOwnProperty(k) && k !== '$$ngfCircularDetection') {\n                  var objectKey = config.objectKey == null ? '[i]' : config.objectKey;\n                  if (val.length && parseInt(k) > -1) {\n                    objectKey = config.arrayKey == null ? objectKey : config.arrayKey;\n                  }\n                  addFieldToFormData(formData, val[k], key + objectKey.replace(/[ik]/g, k));\n                }\n              }\n            } finally {\n              delete val.$$ngfCircularDetection;\n            }\n          } else {\n            formData.append(key, val);\n          }\n        }\n      }\n    }\n\n    function digestConfig() {\n      config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n      config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n      config.headers = config.headers || {};\n      config.headers['Content-Type'] = undefined;\n      config.transformRequest = config.transformRequest ?\n        (angular.isArray(config.transformRequest) ?\n          config.transformRequest : [config.transformRequest]) : [];\n      config.transformRequest.push(function (data) {\n        var formData = new window.FormData(), key;\n        data = data || config.fields || {};\n        if (config.file) {\n          data.file = config.file;\n        }\n        for (key in data) {\n          if (data.hasOwnProperty(key)) {\n            var val = data[key];\n            if (config.formDataAppender) {\n              config.formDataAppender(formData, key, val);\n            } else {\n              addFieldToFormData(formData, val, key);\n            }\n          }\n        }\n\n        return formData;\n      });\n    }\n\n    if (!internal) config = copy(config);\n    if (!config._isDigested) {\n      config._isDigested = true;\n      digestConfig();\n    }\n\n    return sendHttp(config);\n  };\n\n  this.http = function (config) {\n    config = copy(config);\n    config.transformRequest = config.transformRequest || function (data) {\n        if ((window.ArrayBuffer && data instanceof window.ArrayBuffer) || data instanceof window.Blob) {\n          return data;\n        }\n        return $http.defaults.transformRequest[0].apply(this, arguments);\n      };\n    config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n    config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n    return sendHttp(config);\n  };\n\n  this.translateScalars = function (str) {\n    if (angular.isString(str)) {\n      if (str.search(/kb/i) === str.length - 2) {\n        return parseFloat(str.substring(0, str.length - 2) * 1024);\n      } else if (str.search(/mb/i) === str.length - 2) {\n        return parseFloat(str.substring(0, str.length - 2) * 1048576);\n      } else if (str.search(/gb/i) === str.length - 2) {\n        return parseFloat(str.substring(0, str.length - 2) * 1073741824);\n      } else if (str.search(/b/i) === str.length - 1) {\n        return parseFloat(str.substring(0, str.length - 1));\n      } else if (str.search(/s/i) === str.length - 1) {\n        return parseFloat(str.substring(0, str.length - 1));\n      } else if (str.search(/m/i) === str.length - 1) {\n        return parseFloat(str.substring(0, str.length - 1) * 60);\n      } else if (str.search(/h/i) === str.length - 1) {\n        return parseFloat(str.substring(0, str.length - 1) * 3600);\n      }\n    }\n    return str;\n  };\n\n  this.urlToBlob = function(url) {\n    var defer = $q.defer();\n    $http({url: url, method: 'get', responseType: 'arraybuffer'}).then(function (resp) {\n      var arrayBufferView = new Uint8Array(resp.data);\n      var type = resp.headers('content-type') || 'image/WebP';\n      var blob = new window.Blob([arrayBufferView], {type: type});\n      var matches = url.match(/.*\\/(.+?)(\\?.*)?$/);\n      if (matches.length > 1) {\n        blob.name = matches[1];\n      }\n      defer.resolve(blob);\n    }, function (e) {\n      defer.reject(e);\n    });\n    return defer.promise;\n  };\n\n  this.setDefaults = function (defaults) {\n    this.defaults = defaults || {};\n  };\n\n  this.defaults = {};\n  this.version = ngFileUpload.version;\n}\n\n]);\n\nngFileUpload.service('Upload', ['$parse', '$timeout', '$compile', '$q', 'UploadExif', function ($parse, $timeout, $compile, $q, UploadExif) {\n  var upload = UploadExif;\n  upload.getAttrWithDefaults = function (attr, name) {\n    if (attr[name] != null) return attr[name];\n    var def = upload.defaults[name];\n    return (def == null ? def : (angular.isString(def) ? def : JSON.stringify(def)));\n  };\n\n  upload.attrGetter = function (name, attr, scope, params) {\n    var attrVal = this.getAttrWithDefaults(attr, name);\n    if (scope) {\n      try {\n        if (params) {\n          return $parse(attrVal)(scope, params);\n        } else {\n          return $parse(attrVal)(scope);\n        }\n      } catch (e) {\n        // hangle string value without single qoute\n        if (name.search(/min|max|pattern/i)) {\n          return attrVal;\n        } else {\n          throw e;\n        }\n      }\n    } else {\n      return attrVal;\n    }\n  };\n\n  upload.shouldUpdateOn = function (type, attr, scope) {\n    var modelOptions = upload.attrGetter('ngfModelOptions', attr, scope);\n    if (modelOptions && modelOptions.updateOn) {\n      return modelOptions.updateOn.split(' ').indexOf(type) > -1;\n    }\n    return true;\n  };\n\n  upload.emptyPromise = function () {\n    var d = $q.defer();\n    var args = arguments;\n    $timeout(function () {\n      d.resolve.apply(d, args);\n    });\n    return d.promise;\n  };\n\n  upload.rejectPromise = function () {\n    var d = $q.defer();\n    var args = arguments;\n    $timeout(function () {\n      d.reject.apply(d, args);\n    });\n    return d.promise;\n  };\n\n  upload.happyPromise = function (promise, data) {\n    var d = $q.defer();\n    promise.then(function (result) {\n      d.resolve(result);\n    }, function (error) {\n      $timeout(function () {\n        throw error;\n      });\n      d.resolve(data);\n    });\n    return d.promise;\n  };\n\n  function applyExifRotations(files, attr, scope) {\n    var promises = [upload.emptyPromise()];\n    angular.forEach(files, function (f, i) {\n      if (f.type.indexOf('image/jpeg') === 0 && upload.attrGetter('ngfFixOrientation', attr, scope, {$file: f})) {\n        promises.push(upload.happyPromise(upload.applyExifRotation(f), f).then(function (fixedFile) {\n          files.splice(i, 1, fixedFile);\n        }));\n      }\n    });\n    return $q.all(promises);\n  }\n\n  function resizeFile(files, attr, scope, ngModel) {\n    var resizeVal = upload.attrGetter('ngfResize', attr, scope);\n    if (!resizeVal || !upload.isResizeSupported() || !files.length) return upload.emptyPromise();\n    if (resizeVal instanceof Function) {\n      var defer = $q.defer();\n      return resizeVal(files).then(function (p) {\n        resizeWithParams(p, files, attr, scope, ngModel).then(function (r) {\n          defer.resolve(r);\n        }, function (e) {\n          defer.reject(e);\n        });\n      }, function (e) {\n        defer.reject(e);\n      });\n    } else {\n      return resizeWithParams(resizeVal, files, attr, scope, ngModel);\n    }\n  }\n\n  function resizeWithParams(params, files, attr, scope, ngModel) {\n    var promises = [upload.emptyPromise()];\n\n    function handleFile(f, i) {\n      if (f.type.indexOf('image') === 0) {\n        if (params.pattern && !upload.validatePattern(f, params.pattern)) return;\n        params.resizeIf = function (width, height) {\n          return upload.attrGetter('ngfResizeIf', attr, scope,\n            {$width: width, $height: height, $file: f});\n        };\n        var promise = upload.resize(f, params);\n        promises.push(promise);\n        promise.then(function (resizedFile) {\n          files.splice(i, 1, resizedFile);\n        }, function (e) {\n          f.$error = 'resize';\n          (f.$errorMessages = (f.$errorMessages || {})).resize = true;\n          f.$errorParam = (e ? (e.message ? e.message : e) + ': ' : '') + (f && f.name);\n          ngModel.$ngfValidations.push({name: 'resize', valid: false});\n          upload.applyModelValidation(ngModel, files);\n        });\n      }\n    }\n\n    for (var i = 0; i < files.length; i++) {\n      handleFile(files[i], i);\n    }\n    return $q.all(promises);\n  }\n\n  upload.updateModel = function (ngModel, attr, scope, fileChange, files, evt, noDelay) {\n    function update(files, invalidFiles, newFiles, dupFiles, isSingleModel) {\n      attr.$$ngfPrevValidFiles = files;\n      attr.$$ngfPrevInvalidFiles = invalidFiles;\n      var file = files && files.length ? files[0] : null;\n      var invalidFile = invalidFiles && invalidFiles.length ? invalidFiles[0] : null;\n\n      if (ngModel) {\n        upload.applyModelValidation(ngModel, files);\n        ngModel.$setViewValue(isSingleModel ? file : files);\n      }\n\n      if (fileChange) {\n        $parse(fileChange)(scope, {\n          $files: files,\n          $file: file,\n          $newFiles: newFiles,\n          $duplicateFiles: dupFiles,\n          $invalidFiles: invalidFiles,\n          $invalidFile: invalidFile,\n          $event: evt\n        });\n      }\n\n      var invalidModel = upload.attrGetter('ngfModelInvalid', attr);\n      if (invalidModel) {\n        $timeout(function () {\n          $parse(invalidModel).assign(scope, isSingleModel ? invalidFile : invalidFiles);\n        });\n      }\n      $timeout(function () {\n        // scope apply changes\n      });\n    }\n\n    var allNewFiles, dupFiles = [], prevValidFiles, prevInvalidFiles,\n      invalids = [], valids = [];\n\n    function removeDuplicates() {\n      function equals(f1, f2) {\n        return f1.name === f2.name && (f1.$ngfOrigSize || f1.size) === (f2.$ngfOrigSize || f2.size) &&\n          f1.type === f2.type;\n      }\n\n      function isInPrevFiles(f) {\n        var j;\n        for (j = 0; j < prevValidFiles.length; j++) {\n          if (equals(f, prevValidFiles[j])) {\n            return true;\n          }\n        }\n        for (j = 0; j < prevInvalidFiles.length; j++) {\n          if (equals(f, prevInvalidFiles[j])) {\n            return true;\n          }\n        }\n        return false;\n      }\n\n      if (files) {\n        allNewFiles = [];\n        dupFiles = [];\n        for (var i = 0; i < files.length; i++) {\n          if (isInPrevFiles(files[i])) {\n            dupFiles.push(files[i]);\n          } else {\n            allNewFiles.push(files[i]);\n          }\n        }\n      }\n    }\n\n    function toArray(v) {\n      return angular.isArray(v) ? v : [v];\n    }\n\n    function resizeAndUpdate() {\n      function updateModel() {\n        $timeout(function () {\n          update(keep ? prevValidFiles.concat(valids) : valids,\n            keep ? prevInvalidFiles.concat(invalids) : invalids,\n            files, dupFiles, isSingleModel);\n        }, options && options.debounce ? options.debounce.change || options.debounce : 0);\n      }\n\n      var resizingFiles = validateAfterResize ? allNewFiles : valids;\n      resizeFile(resizingFiles, attr, scope, ngModel).then(function () {\n        if (validateAfterResize) {\n          upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n            .then(function (validationResult) {\n              valids = validationResult.validsFiles;\n              invalids = validationResult.invalidsFiles;\n              updateModel();\n            });\n        } else {\n          updateModel();\n        }\n      }, function () {\n        for (var i = 0; i < resizingFiles.length; i++) {\n          var f = resizingFiles[i];\n          if (f.$error === 'resize') {\n            var index = valids.indexOf(f);\n            if (index > -1) {\n              valids.splice(index, 1);\n              invalids.push(f);\n            }\n            updateModel();\n          }\n        }\n      });\n    }\n\n    prevValidFiles = attr.$$ngfPrevValidFiles || [];\n    prevInvalidFiles = attr.$$ngfPrevInvalidFiles || [];\n    if (ngModel && ngModel.$modelValue) {\n      prevValidFiles = toArray(ngModel.$modelValue);\n    }\n\n    var keep = upload.attrGetter('ngfKeep', attr, scope);\n    allNewFiles = (files || []).slice(0);\n    if (keep === 'distinct' || upload.attrGetter('ngfKeepDistinct', attr, scope) === true) {\n      removeDuplicates(attr, scope);\n    }\n\n    var isSingleModel = !keep && !upload.attrGetter('ngfMultiple', attr, scope) && !upload.attrGetter('multiple', attr);\n\n    if (keep && !allNewFiles.length) return;\n\n    upload.attrGetter('ngfBeforeModelChange', attr, scope, {\n      $files: files,\n      $file: files && files.length ? files[0] : null,\n      $newFiles: allNewFiles,\n      $duplicateFiles: dupFiles,\n      $event: evt\n    });\n\n    var validateAfterResize = upload.attrGetter('ngfValidateAfterResize', attr, scope);\n\n    var options = upload.attrGetter('ngfModelOptions', attr, scope);\n    upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n      .then(function (validationResult) {\n      if (noDelay) {\n        update(allNewFiles, [], files, dupFiles, isSingleModel);\n      } else {\n        if ((!options || !options.allowInvalid) && !validateAfterResize) {\n          valids = validationResult.validFiles;\n          invalids = validationResult.invalidFiles;\n        } else {\n          valids = allNewFiles;\n        }\n        if (upload.attrGetter('ngfFixOrientation', attr, scope) && upload.isExifSupported()) {\n          applyExifRotations(valids, attr, scope).then(function () {\n            resizeAndUpdate();\n          });\n        } else {\n          resizeAndUpdate();\n        }\n      }\n    });\n  };\n\n  return upload;\n}]);\n\nngFileUpload.directive('ngfSelect', ['$parse', '$timeout', '$compile', 'Upload', function ($parse, $timeout, $compile, Upload) {\n  var generatedElems = [];\n\n  function isDelayedClickSupported(ua) {\n    // fix for android native browser < 4.4 and safari windows\n    var m = ua.match(/Android[^\\d]*(\\d+)\\.(\\d+)/);\n    if (m && m.length > 2) {\n      var v = Upload.defaults.androidFixMinorVersion || 4;\n      return parseInt(m[1]) < 4 || (parseInt(m[1]) === v && parseInt(m[2]) < v);\n    }\n\n    // safari on windows\n    return ua.indexOf('Chrome') === -1 && /.*Windows.*Safari.*/.test(ua);\n  }\n\n  function linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, upload) {\n    /** @namespace attr.ngfSelect */\n    /** @namespace attr.ngfChange */\n    /** @namespace attr.ngModel */\n    /** @namespace attr.ngfModelOptions */\n    /** @namespace attr.ngfMultiple */\n    /** @namespace attr.ngfCapture */\n    /** @namespace attr.ngfValidate */\n    /** @namespace attr.ngfKeep */\n    var attrGetter = function (name, scope) {\n      return upload.attrGetter(name, attr, scope);\n    };\n\n    function isInputTypeFile() {\n      return elem[0].tagName.toLowerCase() === 'input' && attr.type && attr.type.toLowerCase() === 'file';\n    }\n\n    function fileChangeAttr() {\n      return attrGetter('ngfChange') || attrGetter('ngfSelect');\n    }\n\n    function changeFn(evt) {\n      if (upload.shouldUpdateOn('change', attr, scope)) {\n        var fileList = evt.__files_ || (evt.target && evt.target.files), files = [];\n        /* Handle duplicate call in  IE11 */\n        if (!fileList) return;\n        for (var i = 0; i < fileList.length; i++) {\n          files.push(fileList[i]);\n        }\n        upload.updateModel(ngModel, attr, scope, fileChangeAttr(),\n          files.length ? files : null, evt);\n      }\n    }\n\n    upload.registerModelChangeValidator(ngModel, attr, scope);\n\n    var unwatches = [];\n    if (attrGetter('ngfMultiple')) {\n      unwatches.push(scope.$watch(attrGetter('ngfMultiple'), function () {\n        fileElem.attr('multiple', attrGetter('ngfMultiple', scope));\n      }));\n    }\n    if (attrGetter('ngfCapture')) {\n      unwatches.push(scope.$watch(attrGetter('ngfCapture'), function () {\n        fileElem.attr('capture', attrGetter('ngfCapture', scope));\n      }));\n    }\n    if (attrGetter('ngfAccept')) {\n      unwatches.push(scope.$watch(attrGetter('ngfAccept'), function () {\n        fileElem.attr('accept', attrGetter('ngfAccept', scope));\n      }));\n    }\n    unwatches.push(attr.$observe('accept', function () {\n      fileElem.attr('accept', attrGetter('accept'));\n    }));\n    function bindAttrToFileInput(fileElem, label) {\n      function updateId(val) {\n        fileElem.attr('id', 'ngf-' + val);\n        label.attr('id', 'ngf-label-' + val);\n      }\n\n      for (var i = 0; i < elem[0].attributes.length; i++) {\n        var attribute = elem[0].attributes[i];\n        if (attribute.name !== 'type' && attribute.name !== 'class' && attribute.name !== 'style') {\n          if (attribute.name === 'id') {\n            updateId(attribute.value);\n            unwatches.push(attr.$observe('id', updateId));\n          } else {\n            fileElem.attr(attribute.name, (!attribute.value && (attribute.name === 'required' ||\n            attribute.name === 'multiple')) ? attribute.name : attribute.value);\n          }\n        }\n      }\n    }\n\n    function createFileInput() {\n      if (isInputTypeFile()) {\n        return elem;\n      }\n\n      var fileElem = angular.element('<input type=\"file\">');\n\n      var label = angular.element('<label>upload</label>');\n      label.css('visibility', 'hidden').css('position', 'absolute').css('overflow', 'hidden')\n        .css('width', '0px').css('height', '0px').css('border', 'none')\n        .css('margin', '0px').css('padding', '0px').attr('tabindex', '-1');\n      bindAttrToFileInput(fileElem, label);\n\n      generatedElems.push({el: elem, ref: label});\n\n      document.body.appendChild(label.append(fileElem)[0]);\n\n      return fileElem;\n    }\n\n    function clickHandler(evt) {\n      if (elem.attr('disabled')) return false;\n      if (attrGetter('ngfSelectDisabled', scope)) return;\n\n      var r = detectSwipe(evt);\n      // prevent the click if it is a swipe\n      if (r != null) return r;\n\n      resetModel(evt);\n\n      // fix for md when the element is removed from the DOM and added back #460\n      try {\n        if (!isInputTypeFile() && !document.body.contains(fileElem[0])) {\n          generatedElems.push({el: elem, ref: fileElem.parent()});\n          document.body.appendChild(fileElem.parent()[0]);\n          fileElem.bind('change', changeFn);\n        }\n      } catch (e) {/*ignore*/\n      }\n\n      if (isDelayedClickSupported(navigator.userAgent)) {\n        setTimeout(function () {\n          fileElem[0].click();\n        }, 0);\n      } else {\n        fileElem[0].click();\n      }\n\n      return false;\n    }\n\n\n    var initialTouchStartY = 0;\n    var initialTouchStartX = 0;\n\n    function detectSwipe(evt) {\n      var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\n      if (touches) {\n        if (evt.type === 'touchstart') {\n          initialTouchStartX = touches[0].clientX;\n          initialTouchStartY = touches[0].clientY;\n          return true; // don't block event default\n        } else {\n          // prevent scroll from triggering event\n          if (evt.type === 'touchend') {\n            var currentX = touches[0].clientX;\n            var currentY = touches[0].clientY;\n            if ((Math.abs(currentX - initialTouchStartX) > 20) ||\n              (Math.abs(currentY - initialTouchStartY) > 20)) {\n              evt.stopPropagation();\n              evt.preventDefault();\n              return false;\n            }\n          }\n          return true;\n        }\n      }\n    }\n\n    var fileElem = elem;\n\n    function resetModel(evt) {\n      if (upload.shouldUpdateOn('click', attr, scope) && fileElem.val()) {\n        fileElem.val(null);\n        upload.updateModel(ngModel, attr, scope, fileChangeAttr(), null, evt, true);\n      }\n    }\n\n    if (!isInputTypeFile()) {\n      fileElem = createFileInput();\n    }\n    fileElem.bind('change', changeFn);\n\n    if (!isInputTypeFile()) {\n      elem.bind('click touchstart touchend', clickHandler);\n    } else {\n      elem.bind('click', resetModel);\n    }\n\n    function ie10SameFileSelectFix(evt) {\n      if (fileElem && !fileElem.attr('__ngf_ie10_Fix_')) {\n        if (!fileElem[0].parentNode) {\n          fileElem = null;\n          return;\n        }\n        evt.preventDefault();\n        evt.stopPropagation();\n        fileElem.unbind('click');\n        var clone = fileElem.clone();\n        fileElem.replaceWith(clone);\n        fileElem = clone;\n        fileElem.attr('__ngf_ie10_Fix_', 'true');\n        fileElem.bind('change', changeFn);\n        fileElem.bind('click', ie10SameFileSelectFix);\n        fileElem[0].click();\n        return false;\n      } else {\n        fileElem.removeAttr('__ngf_ie10_Fix_');\n      }\n    }\n\n    if (navigator.appVersion.indexOf('MSIE 10') !== -1) {\n      fileElem.bind('click', ie10SameFileSelectFix);\n    }\n\n    if (ngModel) ngModel.$formatters.push(function (val) {\n      if (val == null || val.length === 0) {\n        if (fileElem.val()) {\n          fileElem.val(null);\n        }\n      }\n      return val;\n    });\n\n    scope.$on('$destroy', function () {\n      if (!isInputTypeFile()) fileElem.parent().remove();\n      angular.forEach(unwatches, function (unwatch) {\n        unwatch();\n      });\n    });\n\n    $timeout(function () {\n      for (var i = 0; i < generatedElems.length; i++) {\n        var g = generatedElems[i];\n        if (!document.body.contains(g.el[0])) {\n          generatedElems.splice(i, 1);\n          g.ref.remove();\n        }\n      }\n    });\n\n    if (window.FileAPI && window.FileAPI.ngfFixIE) {\n      window.FileAPI.ngfFixIE(elem, fileElem, changeFn);\n    }\n  }\n\n  return {\n    restrict: 'AEC',\n    require: '?ngModel',\n    link: function (scope, elem, attr, ngModel) {\n      linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, Upload);\n    }\n  };\n}]);\n\n(function () {\n\n  ngFileUpload.service('UploadDataUrl', ['UploadBase', '$timeout', '$q', function (UploadBase, $timeout, $q) {\n    var upload = UploadBase;\n    upload.base64DataUrl = function (file) {\n      if (angular.isArray(file)) {\n        var d = $q.defer(), count = 0;\n        angular.forEach(file, function (f) {\n          upload.dataUrl(f, true)['finally'](function () {\n            count++;\n            if (count === file.length) {\n              var urls = [];\n              angular.forEach(file, function (ff) {\n                urls.push(ff.$ngfDataUrl);\n              });\n              d.resolve(urls, file);\n            }\n          });\n        });\n        return d.promise;\n      } else {\n        return upload.dataUrl(file, true);\n      }\n    };\n    upload.dataUrl = function (file, disallowObjectUrl) {\n      if (!file) return upload.emptyPromise(file, file);\n      if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\n        return upload.emptyPromise(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl, file);\n      }\n      var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\n      if (p) return p;\n\n      var deferred = $q.defer();\n      $timeout(function () {\n        if (window.FileReader && file &&\n          (!window.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\n          (!window.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\n          //prefer URL.createObjectURL for handling refrences to files of all sizes\n          //since it doesn´t build a large string in memory\n          var URL = window.URL || window.webkitURL;\n          if (URL && URL.createObjectURL && !disallowObjectUrl) {\n            var url;\n            try {\n              url = URL.createObjectURL(file);\n            } catch (e) {\n              $timeout(function () {\n                file.$ngfBlobUrl = '';\n                deferred.reject();\n              });\n              return;\n            }\n            $timeout(function () {\n              file.$ngfBlobUrl = url;\n              if (url) {\n                deferred.resolve(url, file);\n                upload.blobUrls = upload.blobUrls || [];\n                upload.blobUrlsTotalSize = upload.blobUrlsTotalSize || 0;\n                upload.blobUrls.push({url: url, size: file.size});\n                upload.blobUrlsTotalSize += file.size || 0;\n                var maxMemory = upload.defaults.blobUrlsMaxMemory || 268435456;\n                var maxLength = upload.defaults.blobUrlsMaxQueueSize || 200;\n                while ((upload.blobUrlsTotalSize > maxMemory || upload.blobUrls.length > maxLength) && upload.blobUrls.length > 1) {\n                  var obj = upload.blobUrls.splice(0, 1)[0];\n                  URL.revokeObjectURL(obj.url);\n                  upload.blobUrlsTotalSize -= obj.size;\n                }\n              }\n            });\n          } else {\n            var fileReader = new FileReader();\n            fileReader.onload = function (e) {\n              $timeout(function () {\n                file.$ngfDataUrl = e.target.result;\n                deferred.resolve(e.target.result, file);\n                $timeout(function () {\n                  delete file.$ngfDataUrl;\n                }, 1000);\n              });\n            };\n            fileReader.onerror = function () {\n              $timeout(function () {\n                file.$ngfDataUrl = '';\n                deferred.reject();\n              });\n            };\n            fileReader.readAsDataURL(file);\n          }\n        } else {\n          $timeout(function () {\n            file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\n            deferred.reject();\n          });\n        }\n      });\n\n      if (disallowObjectUrl) {\n        p = file.$$ngfDataUrlPromise = deferred.promise;\n      } else {\n        p = file.$$ngfBlobUrlPromise = deferred.promise;\n      }\n      p['finally'](function () {\n        delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\n      });\n      return p;\n    };\n    return upload;\n  }]);\n\n  function getTagType(el) {\n    if (el.tagName.toLowerCase() === 'img') return 'image';\n    if (el.tagName.toLowerCase() === 'audio') return 'audio';\n    if (el.tagName.toLowerCase() === 'video') return 'video';\n    return /./;\n  }\n\n  function linkFileDirective(Upload, $timeout, scope, elem, attr, directiveName, resizeParams, isBackground) {\n    function constructDataUrl(file) {\n      var disallowObjectUrl = Upload.attrGetter('ngfNoObjectUrl', attr, scope);\n      Upload.dataUrl(file, disallowObjectUrl)['finally'](function () {\n        $timeout(function () {\n          var src = (disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl;\n          if (isBackground) {\n            elem.css('background-image', 'url(\\'' + (src || '') + '\\')');\n          } else {\n            elem.attr('src', src);\n          }\n          if (src) {\n            elem.removeClass('ng-hide');\n          } else {\n            elem.addClass('ng-hide');\n          }\n        });\n      });\n    }\n\n    $timeout(function () {\n      var unwatch = scope.$watch(attr[directiveName], function (file) {\n        var size = resizeParams;\n        if (directiveName === 'ngfThumbnail') {\n          if (!size) {\n            size = {\n              width: elem[0].naturalWidth || elem[0].clientWidth,\n              height: elem[0].naturalHeight || elem[0].clientHeight\n            };\n          }\n          if (size.width === 0 && window.getComputedStyle) {\n            var style = getComputedStyle(elem[0]);\n            if (style.width && style.width.indexOf('px') > -1 && style.height && style.height.indexOf('px') > -1) {\n              size = {\n                width: parseInt(style.width.slice(0, -2)),\n                height: parseInt(style.height.slice(0, -2))\n              };\n            }\n          }\n        }\n\n        if (angular.isString(file)) {\n          elem.removeClass('ng-hide');\n          if (isBackground) {\n            return elem.css('background-image', 'url(\\'' + file + '\\')');\n          } else {\n            return elem.attr('src', file);\n          }\n        }\n        if (file && file.type && file.type.search(getTagType(elem[0])) === 0 &&\n          (!isBackground || file.type.indexOf('image') === 0)) {\n          if (size && Upload.isResizeSupported()) {\n            size.resizeIf = function (width, height) {\n              return Upload.attrGetter('ngfResizeIf', attr, scope,\n                {$width: width, $height: height, $file: file});\n            };\n            Upload.resize(file, size).then(\n              function (f) {\n                constructDataUrl(f);\n              }, function (e) {\n                throw e;\n              }\n            );\n          } else {\n            constructDataUrl(file);\n          }\n        } else {\n          elem.addClass('ng-hide');\n        }\n      });\n\n      scope.$on('$destroy', function () {\n        unwatch();\n      });\n    });\n  }\n\n\n  /** @namespace attr.ngfSrc */\n  /** @namespace attr.ngfNoObjectUrl */\n  ngFileUpload.directive('ngfSrc', ['Upload', '$timeout', function (Upload, $timeout) {\n    return {\n      restrict: 'AE',\n      link: function (scope, elem, attr) {\n        linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfSrc',\n          Upload.attrGetter('ngfResize', attr, scope), false);\n      }\n    };\n  }]);\n\n  /** @namespace attr.ngfBackground */\n  /** @namespace attr.ngfNoObjectUrl */\n  ngFileUpload.directive('ngfBackground', ['Upload', '$timeout', function (Upload, $timeout) {\n    return {\n      restrict: 'AE',\n      link: function (scope, elem, attr) {\n        linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfBackground',\n          Upload.attrGetter('ngfResize', attr, scope), true);\n      }\n    };\n  }]);\n\n  /** @namespace attr.ngfThumbnail */\n  /** @namespace attr.ngfAsBackground */\n  /** @namespace attr.ngfSize */\n  /** @namespace attr.ngfNoObjectUrl */\n  ngFileUpload.directive('ngfThumbnail', ['Upload', '$timeout', function (Upload, $timeout) {\n    return {\n      restrict: 'AE',\n      link: function (scope, elem, attr) {\n        var size = Upload.attrGetter('ngfSize', attr, scope);\n        linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfThumbnail', size,\n          Upload.attrGetter('ngfAsBackground', attr, scope));\n      }\n    };\n  }]);\n\n  ngFileUpload.config(['$compileProvider', function ($compileProvider) {\n    if ($compileProvider.imgSrcSanitizationWhitelist) $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n    if ($compileProvider.aHrefSanitizationWhitelist) $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n  }]);\n\n  ngFileUpload.filter('ngfDataUrl', ['UploadDataUrl', '$sce', function (UploadDataUrl, $sce) {\n    return function (file, disallowObjectUrl, trustedUrl) {\n      if (angular.isString(file)) {\n        return $sce.trustAsResourceUrl(file);\n      }\n      var src = file && ((disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl);\n      if (file && !src) {\n        if (!file.$ngfDataUrlFilterInProgress && angular.isObject(file)) {\n          file.$ngfDataUrlFilterInProgress = true;\n          UploadDataUrl.dataUrl(file, disallowObjectUrl);\n        }\n        return '';\n      }\n      if (file) delete file.$ngfDataUrlFilterInProgress;\n      return (file && src ? (trustedUrl ? $sce.trustAsResourceUrl(src) : src) : file) || '';\n    };\n  }]);\n\n})();\n\nngFileUpload.service('UploadValidate', ['UploadDataUrl', '$q', '$timeout', function (UploadDataUrl, $q, $timeout) {\n  var upload = UploadDataUrl;\n\n  function globStringToRegex(str) {\n    var regexp = '', excludes = [];\n    if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') {\n      regexp = str.substring(1, str.length - 1);\n    } else {\n      var split = str.split(',');\n      if (split.length > 1) {\n        for (var i = 0; i < split.length; i++) {\n          var r = globStringToRegex(split[i]);\n          if (r.regexp) {\n            regexp += '(' + r.regexp + ')';\n            if (i < split.length - 1) {\n              regexp += '|';\n            }\n          } else {\n            excludes = excludes.concat(r.excludes);\n          }\n        }\n      } else {\n        if (str.indexOf('!') === 0) {\n          excludes.push('^((?!' + globStringToRegex(str.substring(1)).regexp + ').)*$');\n        } else {\n          if (str.indexOf('.') === 0) {\n            str = '*' + str;\n          }\n          regexp = '^' + str.replace(new RegExp('[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\-]', 'g'), '\\\\$&') + '$';\n          regexp = regexp.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n        }\n      }\n    }\n    return {regexp: regexp, excludes: excludes};\n  }\n\n  upload.validatePattern = function (file, val) {\n    if (!val) {\n      return true;\n    }\n    var pattern = globStringToRegex(val), valid = true;\n    if (pattern.regexp && pattern.regexp.length) {\n      var regexp = new RegExp(pattern.regexp, 'i');\n      valid = (file.type != null && regexp.test(file.type)) ||\n        (file.name != null && regexp.test(file.name));\n    }\n    var len = pattern.excludes.length;\n    while (len--) {\n      var exclude = new RegExp(pattern.excludes[len], 'i');\n      valid = valid && (file.type == null || exclude.test(file.type)) &&\n        (file.name == null || exclude.test(file.name));\n    }\n    return valid;\n  };\n\n  upload.ratioToFloat = function (val) {\n    var r = val.toString(), xIndex = r.search(/[x:]/i);\n    if (xIndex > -1) {\n      r = parseFloat(r.substring(0, xIndex)) / parseFloat(r.substring(xIndex + 1));\n    } else {\n      r = parseFloat(r);\n    }\n    return r;\n  };\n\n  upload.registerModelChangeValidator = function (ngModel, attr, scope) {\n    if (ngModel) {\n      ngModel.$formatters.push(function (files) {\n        if (ngModel.$dirty) {\n          var filesArray = files;\n          if (files && !angular.isArray(files)) {\n            filesArray = [files];\n          }\n          upload.validate(filesArray, 0, ngModel, attr, scope).then(function () {\n            upload.applyModelValidation(ngModel, filesArray);\n          });\n        }\n        return files;\n      });\n    }\n  };\n\n  function markModelAsDirty(ngModel, files) {\n    if (files != null && !ngModel.$dirty) {\n      if (ngModel.$setDirty) {\n        ngModel.$setDirty();\n      } else {\n        ngModel.$dirty = true;\n      }\n    }\n  }\n\n  upload.applyModelValidation = function (ngModel, files) {\n    markModelAsDirty(ngModel, files);\n    angular.forEach(ngModel.$ngfValidations, function (validation) {\n      ngModel.$setValidity(validation.name, validation.valid);\n    });\n  };\n\n  upload.getValidationAttr = function (attr, scope, name, validationName, file) {\n    var dName = 'ngf' + name[0].toUpperCase() + name.substr(1);\n    var val = upload.attrGetter(dName, attr, scope, {$file: file});\n    if (val == null) {\n      val = upload.attrGetter('ngfValidate', attr, scope, {$file: file});\n      if (val) {\n        var split = (validationName || name).split('.');\n        val = val[split[0]];\n        if (split.length > 1) {\n          val = val && val[split[1]];\n        }\n      }\n    }\n    return val;\n  };\n\n  upload.validate = function (files, prevLength, ngModel, attr, scope) {\n    ngModel = ngModel || {};\n    ngModel.$ngfValidations = ngModel.$ngfValidations || [];\n\n    angular.forEach(ngModel.$ngfValidations, function (v) {\n      v.valid = true;\n    });\n\n    var attrGetter = function (name, params) {\n      return upload.attrGetter(name, attr, scope, params);\n    };\n\n    var ignoredErrors = (upload.attrGetter('ngfIgnoreInvalid', attr, scope) || '').split(' ');\n    var runAllValidation = upload.attrGetter('ngfRunAllValidations', attr, scope);\n\n    if (files == null || files.length === 0) {\n      return upload.emptyPromise({'validFiles': files, 'invalidFiles': []});\n    }\n\n    files = files.length === undefined ? [files] : files.slice(0);\n    var invalidFiles = [];\n\n    function validateSync(name, validationName, fn) {\n      if (files) {\n        var i = files.length, valid = null;\n        while (i--) {\n          var file = files[i];\n          if (file) {\n            var val = upload.getValidationAttr(attr, scope, name, validationName, file);\n            if (val != null) {\n              if (!fn(file, val, i)) {\n                if (ignoredErrors.indexOf(name) === -1) {\n                  file.$error = name;\n                  (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n                  file.$errorParam = val;\n                  if (invalidFiles.indexOf(file) === -1) {\n                    invalidFiles.push(file);\n                  }\n                  if (!runAllValidation) {\n                    files.splice(i, 1);\n                  }\n                  valid = false;\n                } else {\n                  files.splice(i, 1);\n                }\n              }\n            }\n          }\n        }\n        if (valid !== null) {\n          ngModel.$ngfValidations.push({name: name, valid: valid});\n        }\n      }\n    }\n\n    validateSync('pattern', null, upload.validatePattern);\n    validateSync('minSize', 'size.min', function (file, val) {\n      return file.size + 0.1 >= upload.translateScalars(val);\n    });\n    validateSync('maxSize', 'size.max', function (file, val) {\n      return file.size - 0.1 <= upload.translateScalars(val);\n    });\n    var totalSize = 0;\n    validateSync('maxTotalSize', null, function (file, val) {\n      totalSize += file.size;\n      if (totalSize > upload.translateScalars(val)) {\n        files.splice(0, files.length);\n        return false;\n      }\n      return true;\n    });\n\n    validateSync('validateFn', null, function (file, r) {\n      return r === true || r === null || r === '';\n    });\n\n    if (!files.length) {\n      return upload.emptyPromise({'validFiles': [], 'invalidFiles': invalidFiles});\n    }\n\n    function validateAsync(name, validationName, type, asyncFn, fn) {\n      function resolveResult(defer, file, val) {\n        function resolveInternal(fn) {\n          if (fn()) {\n            if (ignoredErrors.indexOf(name) === -1) {\n              file.$error = name;\n              (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n              file.$errorParam = val;\n              if (invalidFiles.indexOf(file) === -1) {\n                invalidFiles.push(file);\n              }\n              if (!runAllValidation) {\n                var i = files.indexOf(file);\n                if (i > -1) files.splice(i, 1);\n              }\n              defer.resolve(false);\n            } else {\n              var j = files.indexOf(file);\n              if (j > -1) files.splice(j, 1);\n              defer.resolve(true);\n            }\n          } else {\n            defer.resolve(true);\n          }\n        }\n\n        if (val != null) {\n          asyncFn(file, val).then(function (d) {\n            resolveInternal(function () {\n              return !fn(d, val);\n            });\n          }, function () {\n            resolveInternal(function () {\n              return attrGetter('ngfValidateForce', {$file: file});\n            });\n          });\n        } else {\n          defer.resolve(true);\n        }\n      }\n\n      var promises = [upload.emptyPromise(true)];\n      if (files) {\n        files = files.length === undefined ? [files] : files;\n        angular.forEach(files, function (file) {\n          var defer = $q.defer();\n          promises.push(defer.promise);\n          if (type && (file.type == null || file.type.search(type) !== 0)) {\n            defer.resolve(true);\n            return;\n          }\n          if (name === 'dimensions' && upload.attrGetter('ngfDimensions', attr) != null) {\n            upload.imageDimensions(file).then(function (d) {\n              resolveResult(defer, file,\n                attrGetter('ngfDimensions', {$file: file, $width: d.width, $height: d.height}));\n            }, function () {\n              defer.resolve(false);\n            });\n          } else if (name === 'duration' && upload.attrGetter('ngfDuration', attr) != null) {\n            upload.mediaDuration(file).then(function (d) {\n              resolveResult(defer, file,\n                attrGetter('ngfDuration', {$file: file, $duration: d}));\n            }, function () {\n              defer.resolve(false);\n            });\n          } else {\n            resolveResult(defer, file,\n              upload.getValidationAttr(attr, scope, name, validationName, file));\n          }\n        });\n      }\n      var deffer = $q.defer();\n      $q.all(promises).then(function (values) {\n        var isValid = true;\n        for (var i = 0; i < values.length; i++) {\n          if (!values[i]) {\n            isValid = false;\n            break;\n          }\n        }\n        ngModel.$ngfValidations.push({name: name, valid: isValid});\n        deffer.resolve(isValid);\n      });\n      return deffer.promise;\n    }\n\n    var deffer = $q.defer();\n    var promises = [];\n\n    promises.push(validateAsync('maxHeight', 'height.max', /image/,\n      this.imageDimensions, function (d, val) {\n        return d.height <= val;\n      }));\n    promises.push(validateAsync('minHeight', 'height.min', /image/,\n      this.imageDimensions, function (d, val) {\n        return d.height >= val;\n      }));\n    promises.push(validateAsync('maxWidth', 'width.max', /image/,\n      this.imageDimensions, function (d, val) {\n        return d.width <= val;\n      }));\n    promises.push(validateAsync('minWidth', 'width.min', /image/,\n      this.imageDimensions, function (d, val) {\n        return d.width >= val;\n      }));\n    promises.push(validateAsync('dimensions', null, /image/,\n      function (file, val) {\n        return upload.emptyPromise(val);\n      }, function (r) {\n        return r;\n      }));\n    promises.push(validateAsync('ratio', null, /image/,\n      this.imageDimensions, function (d, val) {\n        var split = val.toString().split(','), valid = false;\n        for (var i = 0; i < split.length; i++) {\n          if (Math.abs((d.width / d.height) - upload.ratioToFloat(split[i])) < 0.01) {\n            valid = true;\n          }\n        }\n        return valid;\n      }));\n    promises.push(validateAsync('maxRatio', 'ratio.max', /image/,\n      this.imageDimensions, function (d, val) {\n        return (d.width / d.height) - upload.ratioToFloat(val) < 0.0001;\n      }));\n    promises.push(validateAsync('minRatio', 'ratio.min', /image/,\n      this.imageDimensions, function (d, val) {\n        return (d.width / d.height) - upload.ratioToFloat(val) > -0.0001;\n      }));\n    promises.push(validateAsync('maxDuration', 'duration.max', /audio|video/,\n      this.mediaDuration, function (d, val) {\n        return d <= upload.translateScalars(val);\n      }));\n    promises.push(validateAsync('minDuration', 'duration.min', /audio|video/,\n      this.mediaDuration, function (d, val) {\n        return d >= upload.translateScalars(val);\n      }));\n    promises.push(validateAsync('duration', null, /audio|video/,\n      function (file, val) {\n        return upload.emptyPromise(val);\n      }, function (r) {\n        return r;\n      }));\n\n    promises.push(validateAsync('validateAsyncFn', null, null,\n      function (file, val) {\n        return val;\n      }, function (r) {\n        return r === true || r === null || r === '';\n      }));\n\n    $q.all(promises).then(function () {\n\n      if (runAllValidation) {\n        for (var i = 0; i < files.length; i++) {\n          var file = files[i];\n          if (file.$error) {\n            files.splice(i--, 1);\n          }\n        }\n      }\n\n      runAllValidation = false;\n      validateSync('maxFiles', null, function (file, val, i) {\n        return prevLength + i < val;\n      });\n\n      deffer.resolve({'validFiles': files, 'invalidFiles': invalidFiles});\n    });\n    return deffer.promise;\n  };\n\n  upload.imageDimensions = function (file) {\n    if (file.$ngfWidth && file.$ngfHeight) {\n      var d = $q.defer();\n      $timeout(function () {\n        d.resolve({width: file.$ngfWidth, height: file.$ngfHeight});\n      });\n      return d.promise;\n    }\n    if (file.$ngfDimensionPromise) return file.$ngfDimensionPromise;\n\n    var deferred = $q.defer();\n    $timeout(function () {\n      if (file.type.indexOf('image') !== 0) {\n        deferred.reject('not image');\n        return;\n      }\n      upload.dataUrl(file).then(function (dataUrl) {\n        var img = angular.element('<img>').attr('src', dataUrl)\n          .css('visibility', 'hidden').css('position', 'fixed')\n          .css('max-width', 'none !important').css('max-height', 'none !important');\n\n        function success() {\n          var width = img[0].naturalWidth || img[0].clientWidth;\n          var height = img[0].naturalHeight || img[0].clientHeight;\n          img.remove();\n          file.$ngfWidth = width;\n          file.$ngfHeight = height;\n          deferred.resolve({width: width, height: height});\n        }\n\n        function error() {\n          img.remove();\n          deferred.reject('load error');\n        }\n\n        img.on('load', success);\n        img.on('error', error);\n\n        var secondsCounter = 0;\n        function checkLoadErrorInCaseOfNoCallback() {\n          $timeout(function () {\n            if (img[0].parentNode) {\n              if (img[0].clientWidth) {\n                success();\n              } else if (secondsCounter++ > 10) {\n                error();\n              } else {\n                checkLoadErrorInCaseOfNoCallback();\n              }\n            }\n          }, 1000);\n        }\n\n        checkLoadErrorInCaseOfNoCallback();\n\n        angular.element(document.getElementsByTagName('body')[0]).append(img);\n      }, function () {\n        deferred.reject('load error');\n      });\n    });\n\n    file.$ngfDimensionPromise = deferred.promise;\n    file.$ngfDimensionPromise['finally'](function () {\n      delete file.$ngfDimensionPromise;\n    });\n    return file.$ngfDimensionPromise;\n  };\n\n  upload.mediaDuration = function (file) {\n    if (file.$ngfDuration) {\n      var d = $q.defer();\n      $timeout(function () {\n        d.resolve(file.$ngfDuration);\n      });\n      return d.promise;\n    }\n    if (file.$ngfDurationPromise) return file.$ngfDurationPromise;\n\n    var deferred = $q.defer();\n    $timeout(function () {\n      if (file.type.indexOf('audio') !== 0 && file.type.indexOf('video') !== 0) {\n        deferred.reject('not media');\n        return;\n      }\n      upload.dataUrl(file).then(function (dataUrl) {\n        var el = angular.element(file.type.indexOf('audio') === 0 ? '<audio>' : '<video>')\n          .attr('src', dataUrl).css('visibility', 'none').css('position', 'fixed');\n\n        function success() {\n          var duration = el[0].duration;\n          file.$ngfDuration = duration;\n          el.remove();\n          deferred.resolve(duration);\n        }\n\n        function error() {\n          el.remove();\n          deferred.reject('load error');\n        }\n\n        el.on('loadedmetadata', success);\n        el.on('error', error);\n        var count = 0;\n\n        function checkLoadError() {\n          $timeout(function () {\n            if (el[0].parentNode) {\n              if (el[0].duration) {\n                success();\n              } else if (count > 10) {\n                error();\n              } else {\n                checkLoadError();\n              }\n            }\n          }, 1000);\n        }\n\n        checkLoadError();\n\n        angular.element(document.body).append(el);\n      }, function () {\n        deferred.reject('load error');\n      });\n    });\n\n    file.$ngfDurationPromise = deferred.promise;\n    file.$ngfDurationPromise['finally'](function () {\n      delete file.$ngfDurationPromise;\n    });\n    return file.$ngfDurationPromise;\n  };\n  return upload;\n}\n]);\n\nngFileUpload.service('UploadResize', ['UploadValidate', '$q', function (UploadValidate, $q) {\n  var upload = UploadValidate;\n\n  /**\n   * Conserve aspect ratio of the original region. Useful when shrinking/enlarging\n   * images to fit into a certain area.\n   * Source:  http://stackoverflow.com/a/14731922\n   *\n   * @param {Number} srcWidth Source area width\n   * @param {Number} srcHeight Source area height\n   * @param {Number} maxWidth Nestable area maximum available width\n   * @param {Number} maxHeight Nestable area maximum available height\n   * @return {Object} { width, height }\n   */\n  var calculateAspectRatioFit = function (srcWidth, srcHeight, maxWidth, maxHeight, centerCrop) {\n    var ratio = centerCrop ? Math.max(maxWidth / srcWidth, maxHeight / srcHeight) :\n      Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n    return {\n      width: srcWidth * ratio, height: srcHeight * ratio,\n      marginX: srcWidth * ratio - maxWidth, marginY: srcHeight * ratio - maxHeight\n    };\n  };\n\n  // Extracted from https://github.com/romelgomez/angular-firebase-image-upload/blob/master/app/scripts/fileUpload.js#L89\n  var resize = function (imagen, width, height, quality, type, ratio, centerCrop, resizeIf) {\n    var deferred = $q.defer();\n    var canvasElement = document.createElement('canvas');\n    var imageElement = document.createElement('img');\n    imageElement.setAttribute('style', 'visibility:hidden;position:fixed;z-index:-100000');\n    document.body.appendChild(imageElement);\n\n    imageElement.onload = function () {\n      var imgWidth = imageElement.width, imgHeight = imageElement.height;\n      imageElement.parentNode.removeChild(imageElement);\n      if (resizeIf != null && resizeIf(imgWidth, imgHeight) === false) {\n        deferred.reject('resizeIf');\n        return;\n      }\n      try {\n        if (ratio) {\n          var ratioFloat = upload.ratioToFloat(ratio);\n          var imgRatio = imgWidth / imgHeight;\n          if (imgRatio < ratioFloat) {\n            width = imgWidth;\n            height = width / ratioFloat;\n          } else {\n            height = imgHeight;\n            width = height * ratioFloat;\n          }\n        }\n        if (!width) {\n          width = imgWidth;\n        }\n        if (!height) {\n          height = imgHeight;\n        }\n        var dimensions = calculateAspectRatioFit(imgWidth, imgHeight, width, height, centerCrop);\n        canvasElement.width = Math.min(dimensions.width, width);\n        canvasElement.height = Math.min(dimensions.height, height);\n        var context = canvasElement.getContext('2d');\n        context.drawImage(imageElement,\n          Math.min(0, -dimensions.marginX / 2), Math.min(0, -dimensions.marginY / 2),\n          dimensions.width, dimensions.height);\n        deferred.resolve(canvasElement.toDataURL(type || 'image/WebP', quality || 0.934));\n      } catch (e) {\n        deferred.reject(e);\n      }\n    };\n    imageElement.onerror = function () {\n      imageElement.parentNode.removeChild(imageElement);\n      deferred.reject();\n    };\n    imageElement.src = imagen;\n    return deferred.promise;\n  };\n\n  upload.dataUrltoBlob = function (dataurl, name, origSize) {\n    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],\n      bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\n    while (n--) {\n      u8arr[n] = bstr.charCodeAt(n);\n    }\n    var blob = new window.Blob([u8arr], {type: mime});\n    blob.name = name;\n    blob.$ngfOrigSize = origSize;\n    return blob;\n  };\n\n  upload.isResizeSupported = function () {\n    var elem = document.createElement('canvas');\n    return window.atob && elem.getContext && elem.getContext('2d') && window.Blob;\n  };\n\n  if (upload.isResizeSupported()) {\n    // add name getter to the blob constructor prototype\n    Object.defineProperty(window.Blob.prototype, 'name', {\n      get: function () {\n        return this.$ngfName;\n      },\n      set: function (v) {\n        this.$ngfName = v;\n      },\n      configurable: true\n    });\n  }\n\n  upload.resize = function (file, options) {\n    if (file.type.indexOf('image') !== 0) return upload.emptyPromise(file);\n\n    var deferred = $q.defer();\n    upload.dataUrl(file, true).then(function (url) {\n      resize(url, options.width, options.height, options.quality, options.type || file.type,\n        options.ratio, options.centerCrop, options.resizeIf)\n        .then(function (dataUrl) {\n          if (file.type === 'image/jpeg' && options.restoreExif !== false) {\n            try {\n              dataUrl = upload.restoreExif(url, dataUrl);\n            } catch (e) {\n              setTimeout(function () {throw e;}, 1);\n            }\n          }\n          try {\n            var blob = upload.dataUrltoBlob(dataUrl, file.name, file.size);\n            deferred.resolve(blob);\n          } catch (e) {\n            deferred.reject(e);\n          }\n        }, function (r) {\n          if (r === 'resizeIf') {\n            deferred.resolve(file);\n          }\n          deferred.reject(r);\n        });\n    }, function (e) {\n      deferred.reject(e);\n    });\n    return deferred.promise;\n  };\n\n  return upload;\n}]);\n\n(function () {\n  ngFileUpload.directive('ngfDrop', ['$parse', '$timeout', '$window', 'Upload', '$http', '$q',\n    function ($parse, $timeout, $window, Upload, $http, $q) {\n      return {\n        restrict: 'AEC',\n        require: '?ngModel',\n        link: function (scope, elem, attr, ngModel) {\n          linkDrop(scope, elem, attr, ngModel, $parse, $timeout, $window, Upload, $http, $q);\n        }\n      };\n    }]);\n\n  ngFileUpload.directive('ngfNoFileDrop', function () {\n    return function (scope, elem) {\n      if (dropAvailable()) elem.css('display', 'none');\n    };\n  });\n\n  ngFileUpload.directive('ngfDropAvailable', ['$parse', '$timeout', 'Upload', function ($parse, $timeout, Upload) {\n    return function (scope, elem, attr) {\n      if (dropAvailable()) {\n        var model = $parse(Upload.attrGetter('ngfDropAvailable', attr));\n        $timeout(function () {\n          model(scope);\n          if (model.assign) {\n            model.assign(scope, true);\n          }\n        });\n      }\n    };\n  }]);\n\n  function linkDrop(scope, elem, attr, ngModel, $parse, $timeout, $window, upload, $http, $q) {\n    var available = dropAvailable();\n\n    var attrGetter = function (name, scope, params) {\n      return upload.attrGetter(name, attr, scope, params);\n    };\n\n    if (attrGetter('dropAvailable')) {\n      $timeout(function () {\n        if (scope[attrGetter('dropAvailable')]) {\n          scope[attrGetter('dropAvailable')].value = available;\n        } else {\n          scope[attrGetter('dropAvailable')] = available;\n        }\n      });\n    }\n    if (!available) {\n      if (attrGetter('ngfHideOnDropNotAvailable', scope) === true) {\n        elem.css('display', 'none');\n      }\n      return;\n    }\n\n    function isDisabled() {\n      return elem.attr('disabled') || attrGetter('ngfDropDisabled', scope);\n    }\n\n    if (attrGetter('ngfSelect') == null) {\n      upload.registerModelChangeValidator(ngModel, attr, scope);\n    }\n\n    var leaveTimeout = null;\n    var stopPropagation = $parse(attrGetter('ngfStopPropagation'));\n    var dragOverDelay = 1;\n    var actualDragOverClass;\n\n    elem[0].addEventListener('dragover', function (evt) {\n      if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;\n      evt.preventDefault();\n      if (stopPropagation(scope)) evt.stopPropagation();\n      // handling dragover events from the Chrome download bar\n      if (navigator.userAgent.indexOf('Chrome') > -1) {\n        var b = evt.dataTransfer.effectAllowed;\n        evt.dataTransfer.dropEffect = ('move' === b || 'linkMove' === b) ? 'move' : 'copy';\n      }\n      $timeout.cancel(leaveTimeout);\n      if (!actualDragOverClass) {\n        actualDragOverClass = 'C';\n        calculateDragOverClass(scope, attr, evt, function (clazz) {\n          actualDragOverClass = clazz;\n          elem.addClass(actualDragOverClass);\n          attrGetter('ngfDrag', scope, {$isDragging: true, $class: actualDragOverClass, $event: evt});\n        });\n      }\n    }, false);\n    elem[0].addEventListener('dragenter', function (evt) {\n      if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;\n      evt.preventDefault();\n      if (stopPropagation(scope)) evt.stopPropagation();\n    }, false);\n    elem[0].addEventListener('dragleave', function (evt) {\n      if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;\n      evt.preventDefault();\n      if (stopPropagation(scope)) evt.stopPropagation();\n      leaveTimeout = $timeout(function () {\n        if (actualDragOverClass) elem.removeClass(actualDragOverClass);\n        actualDragOverClass = null;\n        attrGetter('ngfDrag', scope, {$isDragging: false, $event: evt});\n      }, dragOverDelay || 100);\n    }, false);\n    elem[0].addEventListener('drop', function (evt) {\n      if (isDisabled() || !upload.shouldUpdateOn('drop', attr, scope)) return;\n      evt.preventDefault();\n      if (stopPropagation(scope)) evt.stopPropagation();\n      if (actualDragOverClass) elem.removeClass(actualDragOverClass);\n      actualDragOverClass = null;\n      extractFilesAndUpdateModel(evt.dataTransfer, evt, 'dropUrl');\n    }, false);\n    elem[0].addEventListener('paste', function (evt) {\n      if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 &&\n        attrGetter('ngfEnableFirefoxPaste', scope)) {\n        evt.preventDefault();\n      }\n      if (isDisabled() || !upload.shouldUpdateOn('paste', attr, scope)) return;\n      extractFilesAndUpdateModel(evt.clipboardData || evt.originalEvent.clipboardData, evt, 'pasteUrl');\n    }, false);\n\n    if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 &&\n      attrGetter('ngfEnableFirefoxPaste', scope)) {\n      elem.attr('contenteditable', true);\n      elem.on('keypress', function (e) {\n        if (!e.metaKey && !e.ctrlKey) {\n          e.preventDefault();\n        }\n      });\n    }\n\n    function extractFilesAndUpdateModel(source, evt, updateOnType) {\n      if (!source) return;\n      // html needs to be calculated on the same process otherwise the data will be wiped\n      // after promise resolve or setTimeout.\n      var html;\n      try {\n        html = source && source.getData && source.getData('text/html');\n      } catch (e) {/* Fix IE11 that throw error calling getData */\n      }\n      extractFiles(source.items, source.files, attrGetter('ngfAllowDir', scope) !== false,\n        attrGetter('multiple') || attrGetter('ngfMultiple', scope)).then(function (files) {\n        if (files.length) {\n          updateModel(files, evt);\n        } else {\n          extractFilesFromHtml(updateOnType, html).then(function (files) {\n            updateModel(files, evt);\n          });\n        }\n      });\n    }\n\n    function updateModel(files, evt) {\n      upload.updateModel(ngModel, attr, scope, attrGetter('ngfChange') || attrGetter('ngfDrop'), files, evt);\n    }\n\n    function extractFilesFromHtml(updateOn, html) {\n      if (!upload.shouldUpdateOn(updateOn, attr, scope) || typeof html !== 'string') return upload.rejectPromise([]);\n      var urls = [];\n      html.replace(/<(img src|img [^>]* src) *=\\\"([^\\\"]*)\\\"/gi, function (m, n, src) {\n        urls.push(src);\n      });\n      var promises = [], files = [];\n      if (urls.length) {\n        angular.forEach(urls, function (url) {\n          promises.push(upload.urlToBlob(url).then(function (blob) {\n            files.push(blob);\n          }));\n        });\n        var defer = $q.defer();\n        $q.all(promises).then(function () {\n          defer.resolve(files);\n        }, function (e) {\n          defer.reject(e);\n        });\n        return defer.promise;\n      }\n      return upload.emptyPromise();\n    }\n\n    function calculateDragOverClass(scope, attr, evt, callback) {\n      var obj = attrGetter('ngfDragOverClass', scope, {$event: evt}), dClass = 'dragover';\n      if (angular.isString(obj)) {\n        dClass = obj;\n      } else if (obj) {\n        if (obj.delay) dragOverDelay = obj.delay;\n        if (obj.accept || obj.reject) {\n          var items = evt.dataTransfer.items;\n          if (items == null || !items.length) {\n            dClass = obj.accept;\n          } else {\n            var pattern = obj.pattern || attrGetter('ngfPattern', scope, {$event: evt});\n            var len = items.length;\n            while (len--) {\n              if (!upload.validatePattern(items[len], pattern)) {\n                dClass = obj.reject;\n                break;\n              } else {\n                dClass = obj.accept;\n              }\n            }\n          }\n        }\n      }\n      callback(dClass);\n    }\n\n    function extractFiles(items, fileList, allowDir, multiple) {\n      var maxFiles = upload.getValidationAttr(attr, scope, 'maxFiles');\n      if (maxFiles == null) {\n        maxFiles = Number.MAX_VALUE;\n      }\n      var maxTotalSize = upload.getValidationAttr(attr, scope, 'maxTotalSize');\n      if (maxTotalSize == null) {\n        maxTotalSize = Number.MAX_VALUE;\n      }\n      var includeDir = attrGetter('ngfIncludeDir', scope);\n      var files = [], totalSize = 0;\n\n      function traverseFileTree(entry, path) {\n        var defer = $q.defer();\n        if (entry != null) {\n          if (entry.isDirectory) {\n            var promises = [upload.emptyPromise()];\n            if (includeDir) {\n              var file = {type: 'directory'};\n              file.name = file.path = (path || '') + entry.name;\n              files.push(file);\n            }\n            var dirReader = entry.createReader();\n            var entries = [];\n            var readEntries = function () {\n              dirReader.readEntries(function (results) {\n                try {\n                  if (!results.length) {\n                    angular.forEach(entries.slice(0), function (e) {\n                      if (files.length <= maxFiles && totalSize <= maxTotalSize) {\n                        promises.push(traverseFileTree(e, (path ? path : '') + entry.name + '/'));\n                      }\n                    });\n                    $q.all(promises).then(function () {\n                      defer.resolve();\n                    }, function (e) {\n                      defer.reject(e);\n                    });\n                  } else {\n                    entries = entries.concat(Array.prototype.slice.call(results || [], 0));\n                    readEntries();\n                  }\n                } catch (e) {\n                  defer.reject(e);\n                }\n              }, function (e) {\n                defer.reject(e);\n              });\n            };\n            readEntries();\n          } else {\n            entry.file(function (file) {\n              try {\n                file.path = (path ? path : '') + file.name;\n                if (includeDir) {\n                  file = upload.rename(file, file.path);\n                }\n                files.push(file);\n                totalSize += file.size;\n                defer.resolve();\n              } catch (e) {\n                defer.reject(e);\n              }\n            }, function (e) {\n              defer.reject(e);\n            });\n          }\n        }\n        return defer.promise;\n      }\n\n      var promises = [upload.emptyPromise()];\n\n      if (items && items.length > 0 && $window.location.protocol !== 'file:') {\n        for (var i = 0; i < items.length; i++) {\n          if (items[i].webkitGetAsEntry && items[i].webkitGetAsEntry() && items[i].webkitGetAsEntry().isDirectory) {\n            var entry = items[i].webkitGetAsEntry();\n            if (entry.isDirectory && !allowDir) {\n              continue;\n            }\n            if (entry != null) {\n              promises.push(traverseFileTree(entry));\n            }\n          } else {\n            var f = items[i].getAsFile();\n            if (f != null) {\n              files.push(f);\n              totalSize += f.size;\n            }\n          }\n          if (files.length > maxFiles || totalSize > maxTotalSize ||\n            (!multiple && files.length > 0)) break;\n        }\n      } else {\n        if (fileList != null) {\n          for (var j = 0; j < fileList.length; j++) {\n            var file = fileList.item(j);\n            if (file.type || file.size > 0) {\n              files.push(file);\n              totalSize += file.size;\n            }\n            if (files.length > maxFiles || totalSize > maxTotalSize ||\n              (!multiple && files.length > 0)) break;\n          }\n        }\n      }\n\n      var defer = $q.defer();\n      $q.all(promises).then(function () {\n        if (!multiple && !includeDir && files.length) {\n          var i = 0;\n          while (files[i] && files[i].type === 'directory') i++;\n          defer.resolve([files[i]]);\n        } else {\n          defer.resolve(files);\n        }\n      }, function (e) {\n        defer.reject(e);\n      });\n\n      return defer.promise;\n    }\n  }\n\n  function dropAvailable() {\n    var div = document.createElement('div');\n    return ('draggable' in div) && ('ondrop' in div) && !/Edge\\/12./i.test(navigator.userAgent);\n  }\n\n})();\n\n// customized version of https://github.com/exif-js/exif-js\nngFileUpload.service('UploadExif', ['UploadResize', '$q', function (UploadResize, $q) {\n  var upload = UploadResize;\n\n  upload.isExifSupported = function () {\n    return window.FileReader && new FileReader().readAsArrayBuffer && upload.isResizeSupported();\n  };\n\n  function applyTransform(ctx, orientation, width, height) {\n    switch (orientation) {\n      case 2:\n        return ctx.transform(-1, 0, 0, 1, width, 0);\n      case 3:\n        return ctx.transform(-1, 0, 0, -1, width, height);\n      case 4:\n        return ctx.transform(1, 0, 0, -1, 0, height);\n      case 5:\n        return ctx.transform(0, 1, 1, 0, 0, 0);\n      case 6:\n        return ctx.transform(0, 1, -1, 0, height, 0);\n      case 7:\n        return ctx.transform(0, -1, -1, 0, height, width);\n      case 8:\n        return ctx.transform(0, -1, 1, 0, 0, width);\n    }\n  }\n\n  upload.readOrientation = function (file) {\n    var defer = $q.defer();\n    var reader = new FileReader();\n    var slicedFile = file.slice ? file.slice(0, 64 * 1024) : file;\n    reader.readAsArrayBuffer(slicedFile);\n    reader.onerror = function (e) {\n      return defer.reject(e);\n    };\n    reader.onload = function (e) {\n      var result = {orientation: 1};\n      var view = new DataView(this.result);\n      if (view.getUint16(0, false) !== 0xFFD8) return defer.resolve(result);\n\n      var length = view.byteLength,\n        offset = 2;\n      while (offset < length) {\n        var marker = view.getUint16(offset, false);\n        offset += 2;\n        if (marker === 0xFFE1) {\n          if (view.getUint32(offset += 2, false) !== 0x45786966) return defer.resolve(result);\n\n          var little = view.getUint16(offset += 6, false) === 0x4949;\n          offset += view.getUint32(offset + 4, little);\n          var tags = view.getUint16(offset, little);\n          offset += 2;\n          for (var i = 0; i < tags; i++)\n            if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n              var orientation = view.getUint16(offset + (i * 12) + 8, little);\n              if (orientation >= 2 && orientation <= 8) {\n                view.setUint16(offset + (i * 12) + 8, 1, little);\n                result.fixedArrayBuffer = e.target.result;\n              }\n              result.orientation = orientation;\n              return defer.resolve(result);\n            }\n        } else if ((marker & 0xFF00) !== 0xFF00) break;\n        else offset += view.getUint16(offset, false);\n      }\n      return defer.resolve(result);\n    };\n    return defer.promise;\n  };\n\n  function arrayBufferToBase64(buffer) {\n    var binary = '';\n    var bytes = new Uint8Array(buffer);\n    var len = bytes.byteLength;\n    for (var i = 0; i < len; i++) {\n      binary += String.fromCharCode(bytes[i]);\n    }\n    return window.btoa(binary);\n  }\n\n  upload.applyExifRotation = function (file) {\n    if (file.type.indexOf('image/jpeg') !== 0) {\n      return upload.emptyPromise(file);\n    }\n\n    var deferred = $q.defer();\n    upload.readOrientation(file).then(function (result) {\n      if (result.orientation < 2 || result.orientation > 8) {\n        return deferred.resolve(file);\n      }\n      upload.dataUrl(file, true).then(function (url) {\n        var canvas = document.createElement('canvas');\n        var img = document.createElement('img');\n\n        img.onload = function () {\n          try {\n            canvas.width = result.orientation > 4 ? img.height : img.width;\n            canvas.height = result.orientation > 4 ? img.width : img.height;\n            var ctx = canvas.getContext('2d');\n            applyTransform(ctx, result.orientation, img.width, img.height);\n            ctx.drawImage(img, 0, 0);\n            var dataUrl = canvas.toDataURL(file.type || 'image/WebP', 0.934);\n            dataUrl = upload.restoreExif(arrayBufferToBase64(result.fixedArrayBuffer), dataUrl);\n            var blob = upload.dataUrltoBlob(dataUrl, file.name);\n            deferred.resolve(blob);\n          } catch (e) {\n            return deferred.reject(e);\n          }\n        };\n        img.onerror = function () {\n          deferred.reject();\n        };\n        img.src = url;\n      }, function (e) {\n        deferred.reject(e);\n      });\n    }, function (e) {\n      deferred.reject(e);\n    });\n    return deferred.promise;\n  };\n\n  upload.restoreExif = function (orig, resized) {\n    var ExifRestorer = {};\n\n    ExifRestorer.KEY_STR = 'ABCDEFGHIJKLMNOP' +\n      'QRSTUVWXYZabcdef' +\n      'ghijklmnopqrstuv' +\n      'wxyz0123456789+/' +\n      '=';\n\n    ExifRestorer.encode64 = function (input) {\n      var output = '',\n        chr1, chr2, chr3 = '',\n        enc1, enc2, enc3, enc4 = '',\n        i = 0;\n\n      do {\n        chr1 = input[i++];\n        chr2 = input[i++];\n        chr3 = input[i++];\n\n        enc1 = chr1 >> 2;\n        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n        enc4 = chr3 & 63;\n\n        if (isNaN(chr2)) {\n          enc3 = enc4 = 64;\n        } else if (isNaN(chr3)) {\n          enc4 = 64;\n        }\n\n        output = output +\n          this.KEY_STR.charAt(enc1) +\n          this.KEY_STR.charAt(enc2) +\n          this.KEY_STR.charAt(enc3) +\n          this.KEY_STR.charAt(enc4);\n        chr1 = chr2 = chr3 = '';\n        enc1 = enc2 = enc3 = enc4 = '';\n      } while (i < input.length);\n\n      return output;\n    };\n\n    ExifRestorer.restore = function (origFileBase64, resizedFileBase64) {\n      if (origFileBase64.match('data:image/jpeg;base64,')) {\n        origFileBase64 = origFileBase64.replace('data:image/jpeg;base64,', '');\n      }\n\n      var rawImage = this.decode64(origFileBase64);\n      var segments = this.slice2Segments(rawImage);\n\n      var image = this.exifManipulation(resizedFileBase64, segments);\n\n      return 'data:image/jpeg;base64,' + this.encode64(image);\n    };\n\n\n    ExifRestorer.exifManipulation = function (resizedFileBase64, segments) {\n      var exifArray = this.getExifArray(segments),\n        newImageArray = this.insertExif(resizedFileBase64, exifArray);\n      return new Uint8Array(newImageArray);\n    };\n\n\n    ExifRestorer.getExifArray = function (segments) {\n      var seg;\n      for (var x = 0; x < segments.length; x++) {\n        seg = segments[x];\n        if (seg[0] === 255 & seg[1] === 225) //(ff e1)\n        {\n          return seg;\n        }\n      }\n      return [];\n    };\n\n\n    ExifRestorer.insertExif = function (resizedFileBase64, exifArray) {\n      var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', ''),\n        buf = this.decode64(imageData),\n        separatePoint = buf.indexOf(255, 3),\n        mae = buf.slice(0, separatePoint),\n        ato = buf.slice(separatePoint),\n        array = mae;\n\n      array = array.concat(exifArray);\n      array = array.concat(ato);\n      return array;\n    };\n\n\n    ExifRestorer.slice2Segments = function (rawImageArray) {\n      var head = 0,\n        segments = [];\n\n      while (1) {\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n          break;\n        }\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n          head += 2;\n        }\n        else {\n          var length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3],\n            endPoint = head + length + 2,\n            seg = rawImageArray.slice(head, endPoint);\n          segments.push(seg);\n          head = endPoint;\n        }\n        if (head > rawImageArray.length) {\n          break;\n        }\n      }\n\n      return segments;\n    };\n\n\n    ExifRestorer.decode64 = function (input) {\n      var chr1, chr2, chr3 = '',\n        enc1, enc2, enc3, enc4 = '',\n        i = 0,\n        buf = [];\n\n      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n      var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n      if (base64test.exec(input)) {\n        console.log('There were invalid base64 characters in the input text.\\n' +\n          'Valid base64 characters are A-Z, a-z, 0-9, ' + ', ' / ',and \"=\"\\n' +\n          'Expect errors in decoding.');\n      }\n      input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n      do {\n        enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n\n        chr1 = (enc1 << 2) | (enc2 >> 4);\n        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n        chr3 = ((enc3 & 3) << 6) | enc4;\n\n        buf.push(chr1);\n\n        if (enc3 !== 64) {\n          buf.push(chr2);\n        }\n        if (enc4 !== 64) {\n          buf.push(chr3);\n        }\n\n        chr1 = chr2 = chr3 = '';\n        enc1 = enc2 = enc3 = enc4 = '';\n\n      } while (i < input.length);\n\n      return buf;\n    };\n\n    return ExifRestorer.restore(orig, resized);  //<= EXIF\n  };\n\n  return upload;\n}]);\n\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.regexp.escape.js');\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nexport default baseSet;\n","import css from './css';\nimport listen from './listen';\n\nfunction parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction triggerTransitionEnd(element) {\n  var evt = document.createEvent('HTMLEvents');\n  evt.initEvent('transitionend', true, true);\n  element.dispatchEvent(evt);\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerTransitionEnd(element);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration, padding);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/ecma262/#sec-array.prototype.toreversed\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nclass CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nclass PCancelable {\n\tstatic fn(userFn) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFn(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n\nmodule.exports = PCancelable;\nmodule.exports.CancelError = CancelError;\n","(function () {\n\t'use strict';\n\n\t/**\n\t * GoogleMutant by Iván Sánchez Ortega <ivan@sanchezortega.es> https://ivan.sanchezortega.es\n\t * Source and issue tracking: https://gitlab.com/IvanSanchez/Leaflet.GridLayer.GoogleMutant/\n\t *\n\t * Based on techniques from https://github.com/shramov/leaflet-plugins\n\t * and https://avinmathew.com/leaflet-and-google-maps/ , but relying on MutationObserver.\n\t *\n\t * \"THE BEER-WARE LICENSE\":\n\t * <ivan@sanchezortega.es> wrote this file. As long as you retain this notice you\n\t * can do whatever you want with this stuff. If we meet some day, and you think\n\t * this stuff is worth it, you can buy me a beer in return.\n\t *\n\t * Uses MIT-licensed code from https://github.com/rsms/js-lru/\n\t */\n\n\t// This implementation of LRUMap is a copy of https://github.com/rsms/js-lru/ ,\n\t// trivially adapted for ES6 exports.\n\n\t/*\n\tThe MIT License\n\n\tCopyright (c) 2010-2020 Rasmus Andersson <https://rsms.me/>\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE.\n\t*/\n\n\t/**\n\t * A doubly linked list-based Least Recently Used (LRU) cache. Will keep most\n\t * recently used items while discarding least recently used items when its limit\n\t * is reached.\n\t *\n\t * Licensed under MIT. Copyright (c) 2010 Rasmus Andersson <http://hunch.se/>\n\t * See README.md for details.\n\t *\n\t * Illustration of the design:\n\t *\n\t *       entry             entry             entry             entry\n\t *       ______            ______            ______            ______\n\t *      | head |.newer => |      |.newer => |      |.newer => | tail |\n\t *      |  A   |          |  B   |          |  C   |          |  D   |\n\t *      |______| <= older.|______| <= older.|______| <= older.|______|\n\t *\n\t *  removed  <--  <--  <--  <--  <--  <--  <--  <--  <--  <--  <--  added\n\t */\n\n\tvar NEWER = Symbol(\"newer\");\n\tvar OLDER = Symbol(\"older\");\n\n\tvar LRUMap = function LRUMap(limit, entries) {\n\t\tif (typeof limit !== \"number\") {\n\t\t\t// called as (entries)\n\t\t\tentries = limit;\n\t\t\tlimit = 0;\n\t\t}\n\n\t\tthis.size = 0;\n\t\tthis.limit = limit;\n\t\tthis.oldest = this.newest = undefined;\n\t\tthis._keymap = new Map();\n\n\t\tif (entries) {\n\t\t\tthis.assign(entries);\n\t\t\tif (limit < 1) {\n\t\t\t\tthis.limit = this.size;\n\t\t\t}\n\t\t}\n\t};\n\n\tLRUMap.prototype._markEntryAsUsed = function _markEntryAsUsed (entry) {\n\t\tif (entry === this.newest) {\n\t\t\t// Already the most recenlty used entry, so no need to update the list\n\t\t\treturn;\n\t\t}\n\t\t// HEAD--------------TAIL\n\t\t//   <.older   .newer>\n\t\t//  <--- add direction --\n\t\t//   A  B  C  <D>  E\n\t\tif (entry[NEWER]) {\n\t\t\tif (entry === this.oldest) {\n\t\t\t\tthis.oldest = entry[NEWER];\n\t\t\t}\n\t\t\tentry[NEWER][OLDER] = entry[OLDER]; // C <-- E.\n\t\t}\n\t\tif (entry[OLDER]) {\n\t\t\tentry[OLDER][NEWER] = entry[NEWER]; // C. --> E\n\t\t}\n\t\tentry[NEWER] = undefined; // D --x\n\t\tentry[OLDER] = this.newest; // D. --> E\n\t\tif (this.newest) {\n\t\t\tthis.newest[NEWER] = entry; // E. <-- D\n\t\t}\n\t\tthis.newest = entry;\n\t};\n\n\tLRUMap.prototype.assign = function assign (entries) {\n\t\tvar entry,\n\t\t\tlimit = this.limit || Number.MAX_VALUE;\n\t\tthis._keymap.clear();\n\t\tvar it = entries[Symbol.iterator]();\n\t\tfor (var itv = it.next(); !itv.done; itv = it.next()) {\n\t\t\tvar e = new Entry(itv.value[0], itv.value[1]);\n\t\t\tthis._keymap.set(e.key, e);\n\t\t\tif (!entry) {\n\t\t\t\tthis.oldest = e;\n\t\t\t} else {\n\t\t\t\tentry[NEWER] = e;\n\t\t\t\te[OLDER] = entry;\n\t\t\t}\n\t\t\tentry = e;\n\t\t\tif (limit-- == 0) {\n\t\t\t\tthrow new Error(\"overflow\");\n\t\t\t}\n\t\t}\n\t\tthis.newest = entry;\n\t\tthis.size = this._keymap.size;\n\t};\n\n\tLRUMap.prototype.get = function get (key) {\n\t\t// First, find our cache entry\n\t\tvar entry = this._keymap.get(key);\n\t\tif (!entry) { return; } // Not cached. Sorry.\n\t\t// As <key> was found in the cache, register it as being requested recently\n\t\tthis._markEntryAsUsed(entry);\n\t\treturn entry.value;\n\t};\n\n\tLRUMap.prototype.set = function set (key, value) {\n\t\tvar entry = this._keymap.get(key);\n\n\t\tif (entry) {\n\t\t\t// update existing\n\t\t\tentry.value = value;\n\t\t\tthis._markEntryAsUsed(entry);\n\t\t\treturn this;\n\t\t}\n\n\t\t// new entry\n\t\tthis._keymap.set(key, (entry = new Entry(key, value)));\n\n\t\tif (this.newest) {\n\t\t\t// link previous tail to the new tail (entry)\n\t\t\tthis.newest[NEWER] = entry;\n\t\t\tentry[OLDER] = this.newest;\n\t\t} else {\n\t\t\t// we're first in -- yay\n\t\t\tthis.oldest = entry;\n\t\t}\n\n\t\t// add new entry to the end of the linked list -- it's now the freshest entry.\n\t\tthis.newest = entry;\n\t\t++this.size;\n\t\tif (this.size > this.limit) {\n\t\t\t// we hit the limit -- remove the head\n\t\t\tthis.shift();\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tLRUMap.prototype.shift = function shift () {\n\t\t// todo: handle special case when limit == 1\n\t\tvar entry = this.oldest;\n\t\tif (entry) {\n\t\t\tif (this.oldest[NEWER]) {\n\t\t\t\t// advance the list\n\t\t\t\tthis.oldest = this.oldest[NEWER];\n\t\t\t\tthis.oldest[OLDER] = undefined;\n\t\t\t} else {\n\t\t\t\t// the cache is exhausted\n\t\t\t\tthis.oldest = undefined;\n\t\t\t\tthis.newest = undefined;\n\t\t\t}\n\t\t\t// Remove last strong reference to <entry> and remove links from the purged\n\t\t\t// entry being returned:\n\t\t\tentry[NEWER] = entry[OLDER] = undefined;\n\t\t\tthis._keymap.delete(entry.key);\n\t\t\t--this.size;\n\t\t\treturn [entry.key, entry.value];\n\t\t}\n\t};\n\n\t// -------------------------------------------------------------------------------------\n\t// Following code (until end of class definition) is optional and can be removed without\n\t// breaking the core functionality.\n\n\tLRUMap.prototype.find = function find (key) {\n\t\tvar e = this._keymap.get(key);\n\t\treturn e ? e.value : undefined;\n\t};\n\n\tLRUMap.prototype.has = function has (key) {\n\t\treturn this._keymap.has(key);\n\t};\n\n\tLRUMap.prototype.delete = function delete$1 (key) {\n\t\tvar entry = this._keymap.get(key);\n\t\tif (!entry) { return; }\n\t\tthis._keymap.delete(entry.key);\n\t\tif (entry[NEWER] && entry[OLDER]) {\n\t\t\t// relink the older entry with the newer entry\n\t\t\tentry[OLDER][NEWER] = entry[NEWER];\n\t\t\tentry[NEWER][OLDER] = entry[OLDER];\n\t\t} else if (entry[NEWER]) {\n\t\t\t// remove the link to us\n\t\t\tentry[NEWER][OLDER] = undefined;\n\t\t\t// link the newer entry to head\n\t\t\tthis.oldest = entry[NEWER];\n\t\t} else if (entry[OLDER]) {\n\t\t\t// remove the link to us\n\t\t\tentry[OLDER][NEWER] = undefined;\n\t\t\t// link the newer entry to head\n\t\t\tthis.newest = entry[OLDER];\n\t\t} else {\n\t\t\t// if(entry[OLDER] === undefined && entry.newer === undefined) {\n\t\t\tthis.oldest = this.newest = undefined;\n\t\t}\n\n\t\tthis.size--;\n\t\treturn entry.value;\n\t};\n\n\tLRUMap.prototype.clear = function clear () {\n\t\t// Not clearing links should be safe, as we don't expose live links to user\n\t\tthis.oldest = this.newest = undefined;\n\t\tthis.size = 0;\n\t\tthis._keymap.clear();\n\t};\n\n\tLRUMap.prototype.keys = function keys () {\n\t\treturn new KeyIterator(this.oldest);\n\t};\n\n\tLRUMap.prototype.values = function values () {\n\t\treturn new ValueIterator(this.oldest);\n\t};\n\n\tLRUMap.prototype.entries = function entries () {\n\t\treturn this;\n\t};\n\n\tLRUMap.prototype[Symbol.iterator] = function () {\n\t\treturn new EntryIterator(this.oldest);\n\t};\n\n\tLRUMap.prototype.forEach = function forEach (fun, thisObj) {\n\t\tif (typeof thisObj !== \"object\") {\n\t\t\tthisObj = this;\n\t\t}\n\t\tvar entry = this.oldest;\n\t\twhile (entry) {\n\t\t\tfun.call(thisObj, entry.value, entry.key, this);\n\t\t\tentry = entry[NEWER];\n\t\t}\n\t};\n\n\t/** Returns a JSON (array) representation */\n\tLRUMap.prototype.toJSON = function toJSON () {\n\t\tvar s = new Array(this.size),\n\t\t\ti = 0,\n\t\t\tentry = this.oldest;\n\t\twhile (entry) {\n\t\t\ts[i++] = { key: entry.key, value: entry.value };\n\t\t\tentry = entry[NEWER];\n\t\t}\n\t\treturn s;\n\t};\n\n\t/** Returns a String representation */\n\tLRUMap.prototype.toString = function toString () {\n\t\tvar s = \"\",\n\t\t\tentry = this.oldest;\n\t\twhile (entry) {\n\t\t\ts += String(entry.key) + \":\" + entry.value;\n\t\t\tentry = entry[NEWER];\n\t\t\tif (entry) {\n\t\t\t\ts += \" < \";\n\t\t\t}\n\t\t}\n\t\treturn s;\n\t};\n\n\tfunction Entry(key, value) {\n\t\tthis.key = key;\n\t\tthis.value = value;\n\t\tthis[NEWER] = undefined;\n\t\tthis[OLDER] = undefined;\n\t}\n\n\tfunction EntryIterator(oldestEntry) {\n\t\tthis.entry = oldestEntry;\n\t}\n\tEntryIterator.prototype[Symbol.iterator] = function () {\n\t\treturn this;\n\t};\n\tEntryIterator.prototype.next = function () {\n\t\tvar ent = this.entry;\n\t\tif (ent) {\n\t\t\tthis.entry = ent[NEWER];\n\t\t\treturn { done: false, value: [ent.key, ent.value] };\n\t\t} else {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\t};\n\n\tfunction KeyIterator(oldestEntry) {\n\t\tthis.entry = oldestEntry;\n\t}\n\tKeyIterator.prototype[Symbol.iterator] = function () {\n\t\treturn this;\n\t};\n\tKeyIterator.prototype.next = function () {\n\t\tvar ent = this.entry;\n\t\tif (ent) {\n\t\t\tthis.entry = ent[NEWER];\n\t\t\treturn { done: false, value: ent.key };\n\t\t} else {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\t};\n\n\tfunction ValueIterator(oldestEntry) {\n\t\tthis.entry = oldestEntry;\n\t}\n\tValueIterator.prototype[Symbol.iterator] = function () {\n\t\treturn this;\n\t};\n\tValueIterator.prototype.next = function () {\n\t\tvar ent = this.entry;\n\t\tif (ent) {\n\t\t\tthis.entry = ent[NEWER];\n\t\t\treturn { done: false, value: ent.value };\n\t\t} else {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\t};\n\n\t// GoogleMutant by Iván Sánchez Ortega <ivan@sanchezortega.es>\n\n\tfunction waitForAPI(callback, context) {\n\t\tvar checkCounter = 0,\n\t\t\tintervalId = null;\n\n\t\tintervalId = setInterval(function () {\n\t\t\tif (checkCounter >= 20) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t\tthrow new Error(\"window.google not found after 10 seconds\");\n\t\t\t}\n\t\t\tif (!!window.google && !!window.google.maps && !!window.google.maps.Map) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t\tcallback.call(context);\n\t\t\t}\n\t\t\t++checkCounter;\n\t\t}, 500);\n\t}\n\n\t// 🍂class GridLayer.GoogleMutant\n\t// 🍂extends GridLayer\n\tL.GridLayer.GoogleMutant = L.GridLayer.extend({\n\t\toptions: {\n\t\t\tmaxZoom: 21, // can be 23, but ugly if more than maxNativeZoom\n\t\t\t// 🍂option type: String = 'roadmap'\n\t\t\t// Google's map type. Valid values are 'roadmap', 'satellite', 'terrain' or 'hybrid'.\n\t\t\ttype: \"roadmap\",\n\t\t\tmaxNativeZoom: 21,\n\t\t},\n\n\t\tinitialize: function (options) {\n\t\t\tL.GridLayer.prototype.initialize.call(this, options);\n\n\t\t\t// Couple data structures indexed by tile key\n\t\t\tthis._tileCallbacks = {}; // Callbacks for promises for tiles that are expected\n\t\t\tthis._lru = new LRUMap(100); // Tile LRU cache\n\n\t\t\tthis._imagesPerTile = this.options.type === \"hybrid\" ? 2 : 1;\n\n\t\t\tthis._boundOnMutatedImage = this._onMutatedImage.bind(this);\n\t\t},\n\n\t\tonAdd: function (map) {\n\t\t\tvar this$1 = this;\n\n\t\t\tL.GridLayer.prototype.onAdd.call(this, map);\n\t\t\tthis._initMutantContainer();\n\n\t\t\t// Attribution and logo nodes are not mutated a second time if the\n\t\t\t// mutant is removed and re-added to the map, hence they are\n\t\t\t// not cleaned up on layer removal, so they can be added here.\n\t\t\tif (this._logoContainer) {\n\t\t\t\tmap._controlCorners.bottomleft.appendChild(this._logoContainer);\n\t\t\t}\n\t\t\tif (this._attributionContainer) {\n\t\t\t\tmap._controlCorners.bottomright.appendChild(this._attributionContainer);\n\t\t\t}\n\n\t\t\twaitForAPI(function () {\n\t\t\t\tif (!this$1._map) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis$1._initMutant();\n\n\t\t\t\t//handle layer being added to a map for which there are no Google tiles at the given zoom\n\t\t\t\tgoogle.maps.event.addListenerOnce(this$1._mutant, \"idle\", function () {\n\t\t\t\t\tif (!this$1._map) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis$1._checkZoomLevels();\n\t\t\t\t\tthis$1._mutantIsReady = true;\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tonRemove: function (map) {\n\t\t\tL.GridLayer.prototype.onRemove.call(this, map);\n\t\t\tthis._observer.disconnect();\n\t\t\tmap._container.removeChild(this._mutantContainer);\n\t\t\tif (this._logoContainer) {\n\t\t\t\tL.DomUtil.remove(this._logoContainer);\n\t\t\t}\n\t\t\tif (this._attributionContainer) {\n\t\t\t\tL.DomUtil.remove(this._attributionContainer);\n\t\t\t}\n\t\t\tif (this._mutant) {\n\t\t\t\tgoogle.maps.event.clearListeners(this._mutant, \"idle\");\n\t\t\t}\n\t\t},\n\n\t\t// 🍂method addGoogleLayer(name: String, options?: Object): this\n\t\t// Adds layer with the given name and options to the google Map instance.\n\t\t// `name`: one of the google maps API layers, with it's constructor available in `google.maps` object.\n\t\t// currently following values supported: 'TrafficLayer', 'TransitLayer', 'BicyclingLayer'.\n\t\t// `options`: see https://developers.google.com/maps/documentation/javascript/reference/map\n\t\taddGoogleLayer: function (googleLayerName, options) {\n\t\t\tvar this$1 = this;\n\n\t\t\tif (!this._subLayers) { this._subLayers = {}; }\n\t\t\tthis.whenReady(function () {\n\t\t\t\tvar Constructor = google.maps[googleLayerName];\n\t\t\t\tvar googleLayer = new Constructor(options);\n\t\t\t\tgoogleLayer.setMap(this$1._mutant);\n\t\t\t\tthis$1._subLayers[googleLayerName] = googleLayer;\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\n\t\t// 🍂method removeGoogleLayer(name: String): this\n\t\t// Removes layer with the given name from the google Map instance.\n\t\tremoveGoogleLayer: function (googleLayerName) {\n\t\t\tvar this$1 = this;\n\n\t\t\tthis.whenReady(function () {\n\t\t\t\tvar googleLayer = this$1._subLayers && this$1._subLayers[googleLayerName];\n\t\t\t\tif (googleLayer) {\n\t\t\t\t\tgoogleLayer.setMap(null);\n\t\t\t\t\tdelete this$1._subLayers[googleLayerName];\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\n\t\t_initMutantContainer: function () {\n\t\t\tif (!this._mutantContainer) {\n\t\t\t\tthis._mutantContainer = L.DomUtil.create(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t\"leaflet-google-mutant leaflet-top leaflet-left\"\n\t\t\t\t);\n\t\t\t\tthis._mutantContainer.id = \"_MutantContainer_\" + L.Util.stamp(this._mutantContainer);\n\t\t\t\tthis._mutantContainer.style.pointerEvents = \"none\";\n\t\t\t\tthis._mutantContainer.style.visibility = \"hidden\";\n\n\t\t\t\tL.DomEvent.off(this._mutantContainer);\n\t\t\t}\n\t\t\tthis._map.getContainer().appendChild(this._mutantContainer);\n\n\t\t\tthis.setOpacity(this.options.opacity);\n\t\t\tvar style = this._mutantContainer.style;\n\t\t\tif (this._map.options.zoomSnap < 1) {\n\t\t\t\t// Fractional zoom needs a bigger mutant container in order to load more (smaller) tiles\n\t\t\t\tstyle.width = \"180%\";\n\t\t\t\tstyle.height = \"180%\";\n\t\t\t} else {\n\t\t\t\tstyle.width = \"100%\";\n\t\t\t\tstyle.height = \"100%\";\n\t\t\t}\n\t\t\tstyle.zIndex = -1;\n\n\t\t\tthis._attachObserver(this._mutantContainer);\n\t\t},\n\n\t\t_initMutant: function () {\n\t\t\tif (this._mutant) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar map = new google.maps.Map(this._mutantContainer, {\n\t\t\t\tcenter: { lat: 0, lng: 0 },\n\t\t\t\tzoom: 0,\n\t\t\t\ttilt: 0,\n\t\t\t\tmapTypeId: this.options.type,\n\t\t\t\tdisableDefaultUI: true,\n\t\t\t\tkeyboardShortcuts: false,\n\t\t\t\tdraggable: false,\n\t\t\t\tdisableDoubleClickZoom: true,\n\t\t\t\tscrollwheel: false,\n\t\t\t\tstyles: this.options.styles || [],\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t});\n\n\t\t\tthis._mutant = map;\n\n\t\t\tthis._update();\n\n\t\t\t// 🍂event spawned\n\t\t\t// Fired when the mutant has been created.\n\t\t\tthis.fire(\"spawned\", { mapObject: map });\n\n\t\t\tthis._waitControls();\n\t\t\tthis.once('controls_ready', this._setupAttribution);\n\t\t},\n\n\t\t_attachObserver: function _attachObserver(node) {\n\t\t\tif (!this._observer) { this._observer = new MutationObserver(this._onMutations.bind(this)); }\n\n\t\t\t// pass in the target node, as well as the observer options\n\t\t\tthis._observer.observe(node, { childList: true, subtree: true });\n\n\t\t\t// if we are reusing an old _mutantContainer, we must manually detect\n\t\t\t// all existing tiles in it\n\t\t\tArray.prototype.forEach.call(node.querySelectorAll(\"img\"), this._boundOnMutatedImage);\n\t\t},\n\n\t\t_waitControls: function () {\n\t\t\tvar this$1 = this;\n\n\t\t\tvar id = setInterval(function () {\n\t\t\t\tvar layoutManager = this$1._mutant.__gm.layoutManager;\n\t\t\t\tif (!layoutManager) { return; }\n\t\t\t\tclearInterval(id);\n\t\t\t\tvar positions;\n\t\t\t\t// iterate through obfuscated key names to find positions set (atm: layoutManager.o)\n\t\t\t\tObject.keys(layoutManager).forEach(function(key) {\n\t\t\t\t\tvar el = layoutManager[key];\n\t\t\t\t\tif (el.get) {\n\t\t\t\t\t\tif (el.get(1) instanceof Node) {\n\t\t\t\t\t\t\tpositions = el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// 🍂event controls_ready\n\t\t\t\t// Fired when controls positions get available (passed in `positions` property).\n\t\t\t\tthis$1.fire(\"controls_ready\", { positions: positions });\n\t\t\t}, 50);\n\t\t},\n\n\t\t_setupAttribution: function (ev) {\n\t\t\tif (!this._map) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// https://developers.google.com/maps/documentation/javascript/reference/control#ControlPosition\n\t\t\tvar pos = google.maps.ControlPosition;\n\t\t\tvar ctr = this._attributionContainer = ev.positions.get(pos.BOTTOM_RIGHT);\n\t\t\tL.DomUtil.addClass(ctr, \"leaflet-control leaflet-control-attribution\");\n\t\t\tL.DomEvent.disableClickPropagation(ctr);\n\t\t\tctr.style.height = \"14px\";\n\t\t\tthis._map._controlCorners.bottomright.appendChild(ctr);\n\n\t\t\tthis._logoContainer = ev.positions.get(pos.BOTTOM_LEFT);\n\t\t\tthis._logoContainer.style.pointerEvents = \"auto\";\n\t\t\tthis._map._controlCorners.bottomleft.appendChild(this._logoContainer);\n\t\t},\n\n\t\t_onMutations: function _onMutations(mutations) {\n\t\t\tfor (var i = 0; i < mutations.length; ++i) {\n\t\t\t\tvar mutation = mutations[i];\n\t\t\t\tfor (var j = 0; j < mutation.addedNodes.length; ++j) {\n\t\t\t\t\tvar node = mutation.addedNodes[j];\n\n\t\t\t\t\tif (node instanceof HTMLImageElement) {\n\t\t\t\t\t\tthis._onMutatedImage(node);\n\t\t\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\t\t\tnode.querySelectorAll(\"img\"),\n\t\t\t\t\t\t\tthis._boundOnMutatedImage\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\t\t// Only images which 'src' attrib match this will be considered for moving around.\n\t\t// Looks like some kind of string-based protobuf, maybe??\n\t\t// Only the roads (and terrain, and vector-based stuff) match this pattern\n\t\t_roadRegexp: /!1i(\\d+)!2i(\\d+)!3i(\\d+|VinaFnapurmBegrtn)!/,\n\n\t\t// On the other hand, raster imagery matches this other pattern\n\t\t_satRegexp: /x=(\\d+)&y=(\\d+)&z=(\\d+|VinaFnapurmBegrtn)/,\n\n\t\t_onMutatedImage: function _onMutatedImage(imgNode) {\n\t\t\tvar coords;\n\t\t\tvar match = imgNode.src.match(this._roadRegexp);\n\t\t\tvar sublayer = 0;\n\n\t\t\tif (match) {\n\t\t\t\tcoords = {\n\t\t\t\t\tz: match[1],\n\t\t\t\t\tx: match[2],\n\t\t\t\t\ty: match[3],\n\t\t\t\t};\n\t\t\t\tif (this._imagesPerTile > 1) {\n\t\t\t\t\timgNode.style.zIndex = 1;\n\t\t\t\t\tsublayer = 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmatch = imgNode.src.match(this._satRegexp);\n\t\t\t\tif (match) {\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\tx: match[1],\n\t\t\t\t\t\ty: match[2],\n\t\t\t\t\t\tz: match[3],\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t// imgNode.style.zIndex = 0;\n\t\t\t\tsublayer = 0;\n\t\t\t}\n\n\t\t\tif (coords) {\n\t\t\t\tvar tileKey = this._tileCoordsToKey(coords);\n\t\t\t\timgNode.style.position = \"absolute\";\n\n\t\t\t\tvar key = tileKey + \"/\" + sublayer;\n\t\t\t\t// Cache img so it can also be used in subsequent tile requests\n\t\t\t\tthis._lru.set(key, imgNode);\n\n\t\t\t\tif (key in this._tileCallbacks && this._tileCallbacks[key]) {\n\t\t\t\t\t// Use the tile for *all* pending callbacks. They'll be cloned anyway.\n\t\t\t\t\tthis._tileCallbacks[key].forEach(function (callback) { return callback(imgNode); });\n\t\t\t\t\tdelete this._tileCallbacks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcreateTile: function (coords, done) {\n\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\ttileContainer = L.DomUtil.create(\"div\");\n\n\t\t\ttileContainer.style.textAlign = \"left\";\n\t\t\ttileContainer.dataset.pending = this._imagesPerTile;\n\t\t\tdone = done.bind(this, null, tileContainer);\n\n\t\t\tfor (var i = 0; i < this._imagesPerTile; ++i) {\n\t\t\t\tvar key2 = key + \"/\" + i,\n\t\t\t\t\timgNode = this._lru.get(key2);\n\t\t\t\tif (imgNode) {\n\t\t\t\t\ttileContainer.appendChild(this._clone(imgNode));\n\t\t\t\t\t--tileContainer.dataset.pending;\n\t\t\t\t} else {\n\t\t\t\t\tthis._tileCallbacks[key2] = this._tileCallbacks[key2] || [];\n\t\t\t\t\tthis._tileCallbacks[key2].push(\n\t\t\t\t\t\tfunction (c /*, k2*/) {\n\t\t\t\t\t\t\treturn function (imgNode) {\n\t\t\t\t\t\t\t\tc.appendChild(this._clone(imgNode));\n\t\t\t\t\t\t\t\t--c.dataset.pending;\n\t\t\t\t\t\t\t\tif (!parseInt(c.dataset.pending)) {\n\t\t\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}.bind(this);\n\t\t\t\t\t\t}.bind(this)(tileContainer /*, key2*/)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!parseInt(tileContainer.dataset.pending)) {\n\t\t\t\tL.Util.requestAnimFrame(done);\n\t\t\t}\n\t\t\treturn tileContainer;\n\t\t},\n\n\t\t_clone: function (imgNode) {\n\t\t\tvar clonedImgNode = imgNode.cloneNode(true);\n\t\t\tclonedImgNode.style.visibility = \"visible\";\n\t\t\treturn clonedImgNode;\n\t\t},\n\n\t\t_checkZoomLevels: function () {\n\t\t\t//setting the zoom level on the Google map may result in a different zoom level than the one requested\n\t\t\t//(it won't go beyond the level for which they have data).\n\t\t\tvar zoomLevel = this._map.getZoom(),\n\t\t\t\tgMapZoomLevel = this._mutant.getZoom();\n\n\t\t\tif (!zoomLevel || !gMapZoomLevel) { return; }\n\n\t\t\tif (\n\t\t\t\tgMapZoomLevel !== zoomLevel || //zoom levels are out of sync, Google doesn't have data\n\t\t\t\tgMapZoomLevel > this.options.maxNativeZoom\n\t\t\t) {\n\t\t\t\t//at current location, Google does have data (contrary to maxNativeZoom)\n\t\t\t\t//Update maxNativeZoom\n\t\t\t\tthis._setMaxNativeZoom(gMapZoomLevel);\n\t\t\t}\n\t\t},\n\n\t\t_setMaxNativeZoom: function (zoomLevel) {\n\t\t\tif (zoomLevel !== this.options.maxNativeZoom) {\n\t\t\t\tthis.options.maxNativeZoom = zoomLevel;\n\t\t\t\tthis._resetView();\n\t\t\t}\n\t\t},\n\n\t\t_update: function (center) {\n\t\t\t// zoom level check needs to happen before super's implementation (tile addition/creation)\n\t\t\t// otherwise tiles may be missed if maxNativeZoom is not yet correctly determined\n\t\t\tif (this._mutant) {\n\t\t\t\tcenter = center || this._map.getCenter();\n\t\t\t\tvar _center = new google.maps.LatLng(center.lat, center.lng),\n\t\t\t\t\tzoom = Math.round(this._map.getZoom()),\n\t\t\t\t\tmutantZoom = this._mutant.getZoom();\n\n\t\t\t\tthis._mutant.setCenter(_center);\n\n\t\t\t\t//ignore fractional zoom levels\n\t\t\t\tif (zoom !== mutantZoom) {\n\t\t\t\t\tthis._mutant.setZoom(zoom);\n\n\t\t\t\t\tif (this._mutantIsReady) { this._checkZoomLevels(); }\n\t\t\t\t\t//else zoom level check will be done later by 'idle' handler\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tL.GridLayer.prototype._update.call(this, center);\n\t\t},\n\n\t\t// @method whenReady(fn: Function, context?: Object): this\n\t\t// Runs the given function `fn` when the mutant gets initialized, or immediately\n\t\t// if it's already initialized, optionally passing a function context.\n\t\twhenReady: function (callback, context) {\n\t\t\tif (this._mutant) {\n\t\t\t\tcallback.call(context || this, { target: this });\n\t\t\t} else {\n\t\t\t\tthis.on(\"spawned\", callback, context);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t});\n\n\t// 🍂factory gridLayer.googleMutant(options)\n\t// Returns a new `GridLayer.GoogleMutant` given its options\n\tL.gridLayer.googleMutant = function (options) {\n\t\treturn new L.GridLayer.GoogleMutant(options);\n\t};\n\n}());\n//# sourceMappingURL=Leaflet.GoogleMutant.js.map\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","/* ng-infinite-scroll - v1.3.0 - 2016-06-30 */\nangular.module('infinite-scroll', []).value('THROTTLE_MILLISECONDS', null).directive('infiniteScroll', [\n  '$rootScope', '$window', '$interval', 'THROTTLE_MILLISECONDS', function($rootScope, $window, $interval, THROTTLE_MILLISECONDS) {\n    return {\n      scope: {\n        infiniteScroll: '&',\n        infiniteScrollContainer: '=',\n        infiniteScrollDistance: '=',\n        infiniteScrollDisabled: '=',\n        infiniteScrollUseDocumentBottom: '=',\n        infiniteScrollListenForEvent: '@'\n      },\n      link: function(scope, elem, attrs) {\n        var changeContainer, checkInterval, checkWhenEnabled, container, handleInfiniteScrollContainer, handleInfiniteScrollDisabled, handleInfiniteScrollDistance, handleInfiniteScrollUseDocumentBottom, handler, height, immediateCheck, offsetTop, pageYOffset, scrollDistance, scrollEnabled, throttle, unregisterEventListener, useDocumentBottom, windowElement;\n        windowElement = angular.element($window);\n        scrollDistance = null;\n        scrollEnabled = null;\n        checkWhenEnabled = null;\n        container = null;\n        immediateCheck = true;\n        useDocumentBottom = false;\n        unregisterEventListener = null;\n        checkInterval = false;\n        height = function(elem) {\n          elem = elem[0] || elem;\n          if (isNaN(elem.offsetHeight)) {\n            return elem.document.documentElement.clientHeight;\n          } else {\n            return elem.offsetHeight;\n          }\n        };\n        offsetTop = function(elem) {\n          if (!elem[0].getBoundingClientRect || elem.css('none')) {\n            return;\n          }\n          return elem[0].getBoundingClientRect().top + pageYOffset(elem);\n        };\n        pageYOffset = function(elem) {\n          elem = elem[0] || elem;\n          if (isNaN(window.pageYOffset)) {\n            return elem.document.documentElement.scrollTop;\n          } else {\n            return elem.ownerDocument.defaultView.pageYOffset;\n          }\n        };\n        handler = function() {\n          var containerBottom, containerTopOffset, elementBottom, remaining, shouldScroll;\n          if (container === windowElement) {\n            containerBottom = height(container) + pageYOffset(container[0].document.documentElement);\n            elementBottom = offsetTop(elem) + height(elem);\n          } else {\n            containerBottom = height(container);\n            containerTopOffset = 0;\n            if (offsetTop(container) !== void 0) {\n              containerTopOffset = offsetTop(container);\n            }\n            elementBottom = offsetTop(elem) - containerTopOffset + height(elem);\n          }\n          if (useDocumentBottom) {\n            elementBottom = height((elem[0].ownerDocument || elem[0].document).documentElement);\n          }\n          remaining = elementBottom - containerBottom;\n          shouldScroll = remaining <= height(container) * scrollDistance + 1;\n          if (shouldScroll) {\n            checkWhenEnabled = true;\n            if (scrollEnabled) {\n              if (scope.$$phase || $rootScope.$$phase) {\n                return scope.infiniteScroll();\n              } else {\n                return scope.$apply(scope.infiniteScroll);\n              }\n            }\n          } else {\n            if (checkInterval) {\n              $interval.cancel(checkInterval);\n            }\n            return checkWhenEnabled = false;\n          }\n        };\n        throttle = function(func, wait) {\n          var later, previous, timeout;\n          timeout = null;\n          previous = 0;\n          later = function() {\n            previous = new Date().getTime();\n            $interval.cancel(timeout);\n            timeout = null;\n            return func.call();\n          };\n          return function() {\n            var now, remaining;\n            now = new Date().getTime();\n            remaining = wait - (now - previous);\n            if (remaining <= 0) {\n              $interval.cancel(timeout);\n              timeout = null;\n              previous = now;\n              return func.call();\n            } else {\n              if (!timeout) {\n                return timeout = $interval(later, remaining, 1);\n              }\n            }\n          };\n        };\n        if (THROTTLE_MILLISECONDS != null) {\n          handler = throttle(handler, THROTTLE_MILLISECONDS);\n        }\n        scope.$on('$destroy', function() {\n          container.unbind('scroll', handler);\n          if (unregisterEventListener != null) {\n            unregisterEventListener();\n            unregisterEventListener = null;\n          }\n          if (checkInterval) {\n            return $interval.cancel(checkInterval);\n          }\n        });\n        handleInfiniteScrollDistance = function(v) {\n          return scrollDistance = parseFloat(v) || 0;\n        };\n        scope.$watch('infiniteScrollDistance', handleInfiniteScrollDistance);\n        handleInfiniteScrollDistance(scope.infiniteScrollDistance);\n        handleInfiniteScrollDisabled = function(v) {\n          scrollEnabled = !v;\n          if (scrollEnabled && checkWhenEnabled) {\n            checkWhenEnabled = false;\n            return handler();\n          }\n        };\n        scope.$watch('infiniteScrollDisabled', handleInfiniteScrollDisabled);\n        handleInfiniteScrollDisabled(scope.infiniteScrollDisabled);\n        handleInfiniteScrollUseDocumentBottom = function(v) {\n          return useDocumentBottom = v;\n        };\n        scope.$watch('infiniteScrollUseDocumentBottom', handleInfiniteScrollUseDocumentBottom);\n        handleInfiniteScrollUseDocumentBottom(scope.infiniteScrollUseDocumentBottom);\n        changeContainer = function(newContainer) {\n          if (container != null) {\n            container.unbind('scroll', handler);\n          }\n          container = newContainer;\n          if (newContainer != null) {\n            return container.bind('scroll', handler);\n          }\n        };\n        changeContainer(windowElement);\n        if (scope.infiniteScrollListenForEvent) {\n          unregisterEventListener = $rootScope.$on(scope.infiniteScrollListenForEvent, handler);\n        }\n        handleInfiniteScrollContainer = function(newContainer) {\n          if ((newContainer == null) || newContainer.length === 0) {\n            return;\n          }\n          if (newContainer.nodeType && newContainer.nodeType === 1) {\n            newContainer = angular.element(newContainer);\n          } else if (typeof newContainer.append === 'function') {\n            newContainer = angular.element(newContainer[newContainer.length - 1]);\n          } else if (typeof newContainer === 'string') {\n            newContainer = angular.element(document.querySelector(newContainer));\n          }\n          if (newContainer != null) {\n            return changeContainer(newContainer);\n          } else {\n            throw new Error(\"invalid infinite-scroll-container attribute.\");\n          }\n        };\n        scope.$watch('infiniteScrollContainer', handleInfiniteScrollContainer);\n        handleInfiniteScrollContainer(scope.infiniteScrollContainer || []);\n        if (attrs.infiniteScrollParent != null) {\n          changeContainer(angular.element(elem.parent()));\n        }\n        if (attrs.infiniteScrollImmediateCheck != null) {\n          immediateCheck = scope.$eval(attrs.infiniteScrollImmediateCheck);\n        }\n        return checkInterval = $interval((function() {\n          if (immediateCheck) {\n            handler();\n          }\n          return $interval.cancel(checkInterval);\n        }));\n      }\n    };\n  }\n]);\n\nif (typeof module !== \"undefined\" && typeof exports !== \"undefined\" && module.exports === exports) {\n  module.exports = 'infinite-scroll';\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n *   if (isGreeting(objValue) && isGreeting(othValue)) {\n *     return true;\n *   }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  var result = customizer ? customizer(value, other) : undefined;\n  return result === undefined ? baseIsEqual(value, other, customizer) : !!result;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = isEqualWith;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n  label: PropTypes.string.isRequired,\n  onClick: PropTypes.func\n};\nvar defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n  return /*#__PURE__*/React.createElement(\"button\", _extends({\n    ref: ref,\n    type: \"button\",\n    className: classNames('close', className),\n    onClick: onClick\n  }, props), /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, Emitter, elementClosest, applyStyle, whenTransitionDone, removeElement, ScrollController, ElementScrollController, computeInnerRect, WindowScrollController, ElementDragging, preventSelection, preventContextMenu, allowSelection, allowContextMenu, computeRect, getClippingParents, pointInsideRect, constrainPoint, intersectRects, getRectCenter, diffPoints, mapHash, rangeContainsRange, isDateSpansEqual, Interaction, interactionSettingsToStore, isDateSelectionValid, enableCursor, disableCursor, triggerDateSelect, compareNumbers, getElSeg, getRelevantEvents, EventImpl, createEmptyEventStore, applyMutationToEventStore, isInteractionValid, buildEventApis, interactionSettingsStore, startOfDay, diffDates, createDuration, getEventTargetViaRoot, identity, eventTupleToStore, parseDragMeta, elementMatches, refineEventDef, parseEventDef, getDefaultEventEnd, createEventInstance, BASE_OPTION_DEFAULTS } from '@fullcalendar/core/internal.js';\n\nconfig.touchMouseIgnoreWait = 500;\nlet ignoreMouseDepth = 0;\nlet listenerCnt = 0;\nlet isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nclass PointerDragging {\n    constructor(containerEl) {\n        this.subjectEl = null;\n        // options that can be directly assigned by caller\n        this.selector = ''; // will cause subjectEl in all emitted events to be this element\n        this.handleSelector = '';\n        this.shouldIgnoreMove = false;\n        this.shouldWatchScroll = true; // for simulating pointermove on scroll\n        // internal states\n        this.isDragging = false;\n        this.isTouchDragging = false;\n        this.wasTouchScroll = false;\n        // Mouse\n        // ----------------------------------------------------------------------------------------------------\n        this.handleMouseDown = (ev) => {\n            if (!this.shouldIgnoreMouse() &&\n                isPrimaryMouseButton(ev) &&\n                this.tryStart(ev)) {\n                let pev = this.createEventFromMouse(ev, true);\n                this.emitter.trigger('pointerdown', pev);\n                this.initScrollWatch(pev);\n                if (!this.shouldIgnoreMove) {\n                    document.addEventListener('mousemove', this.handleMouseMove);\n                }\n                document.addEventListener('mouseup', this.handleMouseUp);\n            }\n        };\n        this.handleMouseMove = (ev) => {\n            let pev = this.createEventFromMouse(ev);\n            this.recordCoords(pev);\n            this.emitter.trigger('pointermove', pev);\n        };\n        this.handleMouseUp = (ev) => {\n            document.removeEventListener('mousemove', this.handleMouseMove);\n            document.removeEventListener('mouseup', this.handleMouseUp);\n            this.emitter.trigger('pointerup', this.createEventFromMouse(ev));\n            this.cleanup(); // call last so that pointerup has access to props\n        };\n        // Touch\n        // ----------------------------------------------------------------------------------------------------\n        this.handleTouchStart = (ev) => {\n            if (this.tryStart(ev)) {\n                this.isTouchDragging = true;\n                let pev = this.createEventFromTouch(ev, true);\n                this.emitter.trigger('pointerdown', pev);\n                this.initScrollWatch(pev);\n                // unlike mouse, need to attach to target, not document\n                // https://stackoverflow.com/a/45760014\n                let targetEl = ev.target;\n                if (!this.shouldIgnoreMove) {\n                    targetEl.addEventListener('touchmove', this.handleTouchMove);\n                }\n                targetEl.addEventListener('touchend', this.handleTouchEnd);\n                targetEl.addEventListener('touchcancel', this.handleTouchEnd); // treat it as a touch end\n                // attach a handler to get called when ANY scroll action happens on the page.\n                // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n                // http://stackoverflow.com/a/32954565/96342\n                window.addEventListener('scroll', this.handleTouchScroll, true);\n            }\n        };\n        this.handleTouchMove = (ev) => {\n            let pev = this.createEventFromTouch(ev);\n            this.recordCoords(pev);\n            this.emitter.trigger('pointermove', pev);\n        };\n        this.handleTouchEnd = (ev) => {\n            if (this.isDragging) { // done to guard against touchend followed by touchcancel\n                let targetEl = ev.target;\n                targetEl.removeEventListener('touchmove', this.handleTouchMove);\n                targetEl.removeEventListener('touchend', this.handleTouchEnd);\n                targetEl.removeEventListener('touchcancel', this.handleTouchEnd);\n                window.removeEventListener('scroll', this.handleTouchScroll, true); // useCaptured=true\n                this.emitter.trigger('pointerup', this.createEventFromTouch(ev));\n                this.cleanup(); // call last so that pointerup has access to props\n                this.isTouchDragging = false;\n                startIgnoringMouse();\n            }\n        };\n        this.handleTouchScroll = () => {\n            this.wasTouchScroll = true;\n        };\n        this.handleScroll = (ev) => {\n            if (!this.shouldIgnoreMove) {\n                let pageX = (window.scrollX - this.prevScrollX) + this.prevPageX;\n                let pageY = (window.scrollY - this.prevScrollY) + this.prevPageY;\n                this.emitter.trigger('pointermove', {\n                    origEvent: ev,\n                    isTouch: this.isTouchDragging,\n                    subjectEl: this.subjectEl,\n                    pageX,\n                    pageY,\n                    deltaX: pageX - this.origPageX,\n                    deltaY: pageY - this.origPageY,\n                });\n            }\n        };\n        this.containerEl = containerEl;\n        this.emitter = new Emitter();\n        containerEl.addEventListener('mousedown', this.handleMouseDown);\n        containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerCreated();\n    }\n    destroy() {\n        this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n        this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerDestroyed();\n    }\n    tryStart(ev) {\n        let subjectEl = this.querySubjectEl(ev);\n        let downEl = ev.target;\n        if (subjectEl &&\n            (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n            this.subjectEl = subjectEl;\n            this.isDragging = true; // do this first so cancelTouchScroll will work\n            this.wasTouchScroll = false;\n            return true;\n        }\n        return false;\n    }\n    cleanup() {\n        isWindowTouchMoveCancelled = false;\n        this.isDragging = false;\n        this.subjectEl = null;\n        // keep wasTouchScroll around for later access\n        this.destroyScrollWatch();\n    }\n    querySubjectEl(ev) {\n        if (this.selector) {\n            return elementClosest(ev.target, this.selector);\n        }\n        return this.containerEl;\n    }\n    shouldIgnoreMouse() {\n        return ignoreMouseDepth || this.isTouchDragging;\n    }\n    // can be called by user of this class, to cancel touch-based scrolling for the current drag\n    cancelTouchScroll() {\n        if (this.isDragging) {\n            isWindowTouchMoveCancelled = true;\n        }\n    }\n    // Scrolling that simulates pointermoves\n    // ----------------------------------------------------------------------------------------------------\n    initScrollWatch(ev) {\n        if (this.shouldWatchScroll) {\n            this.recordCoords(ev);\n            window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n        }\n    }\n    recordCoords(ev) {\n        if (this.shouldWatchScroll) {\n            this.prevPageX = ev.pageX;\n            this.prevPageY = ev.pageY;\n            this.prevScrollX = window.scrollX;\n            this.prevScrollY = window.scrollY;\n        }\n    }\n    destroyScrollWatch() {\n        if (this.shouldWatchScroll) {\n            window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n        }\n    }\n    // Event Normalization\n    // ----------------------------------------------------------------------------------------------------\n    createEventFromMouse(ev, isFirst) {\n        let deltaX = 0;\n        let deltaY = 0;\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = ev.pageX;\n            this.origPageY = ev.pageY;\n        }\n        else {\n            deltaX = ev.pageX - this.origPageX;\n            deltaY = ev.pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: false,\n            subjectEl: this.subjectEl,\n            pageX: ev.pageX,\n            pageY: ev.pageY,\n            deltaX,\n            deltaY,\n        };\n    }\n    createEventFromTouch(ev, isFirst) {\n        let touches = ev.touches;\n        let pageX;\n        let pageY;\n        let deltaX = 0;\n        let deltaY = 0;\n        // if touch coords available, prefer,\n        // because FF would give bad ev.pageX ev.pageY\n        if (touches && touches.length) {\n            pageX = touches[0].pageX;\n            pageY = touches[0].pageY;\n        }\n        else {\n            pageX = ev.pageX;\n            pageY = ev.pageY;\n        }\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = pageX;\n            this.origPageY = pageY;\n        }\n        else {\n            deltaX = pageX - this.origPageX;\n            deltaY = pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: true,\n            subjectEl: this.subjectEl,\n            pageX,\n            pageY,\n            deltaX,\n            deltaY,\n        };\n    }\n}\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n    return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n    ignoreMouseDepth += 1;\n    setTimeout(() => {\n        ignoreMouseDepth -= 1;\n    }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n    listenerCnt += 1;\n    if (listenerCnt === 1) {\n        window.addEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction listenerDestroyed() {\n    listenerCnt -= 1;\n    if (!listenerCnt) {\n        window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction onWindowTouchMove(ev) {\n    if (isWindowTouchMoveCancelled) {\n        ev.preventDefault();\n    }\n}\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nclass ElementMirror {\n    constructor() {\n        this.isVisible = false; // must be explicitly enabled\n        this.sourceEl = null;\n        this.mirrorEl = null;\n        this.sourceElRect = null; // screen coords relative to viewport\n        // options that can be set directly by caller\n        this.parentNode = document.body; // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n        this.zIndex = 9999;\n        this.revertDuration = 0;\n    }\n    start(sourceEl, pageX, pageY) {\n        this.sourceEl = sourceEl;\n        this.sourceElRect = this.sourceEl.getBoundingClientRect();\n        this.origScreenX = pageX - window.scrollX;\n        this.origScreenY = pageY - window.scrollY;\n        this.deltaX = 0;\n        this.deltaY = 0;\n        this.updateElPosition();\n    }\n    handleMove(pageX, pageY) {\n        this.deltaX = (pageX - window.scrollX) - this.origScreenX;\n        this.deltaY = (pageY - window.scrollY) - this.origScreenY;\n        this.updateElPosition();\n    }\n    // can be called before start\n    setIsVisible(bool) {\n        if (bool) {\n            if (!this.isVisible) {\n                if (this.mirrorEl) {\n                    this.mirrorEl.style.display = '';\n                }\n                this.isVisible = bool; // needs to happen before updateElPosition\n                this.updateElPosition(); // because was not updating the position while invisible\n            }\n        }\n        else if (this.isVisible) {\n            if (this.mirrorEl) {\n                this.mirrorEl.style.display = 'none';\n            }\n            this.isVisible = bool;\n        }\n    }\n    // always async\n    stop(needsRevertAnimation, callback) {\n        let done = () => {\n            this.cleanup();\n            callback();\n        };\n        if (needsRevertAnimation &&\n            this.mirrorEl &&\n            this.isVisible &&\n            this.revertDuration && // if 0, transition won't work\n            (this.deltaX || this.deltaY) // if same coords, transition won't work\n        ) {\n            this.doRevertAnimation(done, this.revertDuration);\n        }\n        else {\n            setTimeout(done, 0);\n        }\n    }\n    doRevertAnimation(callback, revertDuration) {\n        let mirrorEl = this.mirrorEl;\n        let finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n        mirrorEl.style.transition =\n            'top ' + revertDuration + 'ms,' +\n                'left ' + revertDuration + 'ms';\n        applyStyle(mirrorEl, {\n            left: finalSourceElRect.left,\n            top: finalSourceElRect.top,\n        });\n        whenTransitionDone(mirrorEl, () => {\n            mirrorEl.style.transition = '';\n            callback();\n        });\n    }\n    cleanup() {\n        if (this.mirrorEl) {\n            removeElement(this.mirrorEl);\n            this.mirrorEl = null;\n        }\n        this.sourceEl = null;\n    }\n    updateElPosition() {\n        if (this.sourceEl && this.isVisible) {\n            applyStyle(this.getMirrorEl(), {\n                left: this.sourceElRect.left + this.deltaX,\n                top: this.sourceElRect.top + this.deltaY,\n            });\n        }\n    }\n    getMirrorEl() {\n        let sourceElRect = this.sourceElRect;\n        let mirrorEl = this.mirrorEl;\n        if (!mirrorEl) {\n            mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n            // we don't want long taps or any mouse interaction causing selection/menus.\n            // would use preventSelection(), but that prevents selectstart, causing problems.\n            mirrorEl.style.userSelect = 'none';\n            mirrorEl.style.webkitUserSelect = 'none';\n            mirrorEl.style.pointerEvents = 'none';\n            mirrorEl.classList.add('fc-event-dragging');\n            applyStyle(mirrorEl, {\n                position: 'fixed',\n                zIndex: this.zIndex,\n                visibility: '',\n                boxSizing: 'border-box',\n                width: sourceElRect.right - sourceElRect.left,\n                height: sourceElRect.bottom - sourceElRect.top,\n                right: 'auto',\n                bottom: 'auto',\n                margin: 0,\n            });\n            this.parentNode.appendChild(mirrorEl);\n        }\n        return mirrorEl;\n    }\n}\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nclass ScrollGeomCache extends ScrollController {\n    constructor(scrollController, doesListening) {\n        super();\n        this.handleScroll = () => {\n            this.scrollTop = this.scrollController.getScrollTop();\n            this.scrollLeft = this.scrollController.getScrollLeft();\n            this.handleScrollChange();\n        };\n        this.scrollController = scrollController;\n        this.doesListening = doesListening;\n        this.scrollTop = this.origScrollTop = scrollController.getScrollTop();\n        this.scrollLeft = this.origScrollLeft = scrollController.getScrollLeft();\n        this.scrollWidth = scrollController.getScrollWidth();\n        this.scrollHeight = scrollController.getScrollHeight();\n        this.clientWidth = scrollController.getClientWidth();\n        this.clientHeight = scrollController.getClientHeight();\n        this.clientRect = this.computeClientRect(); // do last in case it needs cached values\n        if (this.doesListening) {\n            this.getEventTarget().addEventListener('scroll', this.handleScroll);\n        }\n    }\n    destroy() {\n        if (this.doesListening) {\n            this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n        }\n    }\n    getScrollTop() {\n        return this.scrollTop;\n    }\n    getScrollLeft() {\n        return this.scrollLeft;\n    }\n    setScrollTop(top) {\n        this.scrollController.setScrollTop(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n            this.handleScrollChange();\n        }\n    }\n    setScrollLeft(top) {\n        this.scrollController.setScrollLeft(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n            this.handleScrollChange();\n        }\n    }\n    getClientWidth() {\n        return this.clientWidth;\n    }\n    getClientHeight() {\n        return this.clientHeight;\n    }\n    getScrollWidth() {\n        return this.scrollWidth;\n    }\n    getScrollHeight() {\n        return this.scrollHeight;\n    }\n    handleScrollChange() {\n    }\n}\n\nclass ElementScrollGeomCache extends ScrollGeomCache {\n    constructor(el, doesListening) {\n        super(new ElementScrollController(el), doesListening);\n    }\n    getEventTarget() {\n        return this.scrollController.el;\n    }\n    computeClientRect() {\n        return computeInnerRect(this.scrollController.el);\n    }\n}\n\nclass WindowScrollGeomCache extends ScrollGeomCache {\n    constructor(doesListening) {\n        super(new WindowScrollController(), doesListening);\n    }\n    getEventTarget() {\n        return window;\n    }\n    computeClientRect() {\n        return {\n            left: this.scrollLeft,\n            right: this.scrollLeft + this.clientWidth,\n            top: this.scrollTop,\n            bottom: this.scrollTop + this.clientHeight,\n        };\n    }\n    // the window is the only scroll object that changes it's rectangle relative\n    // to the document's topleft as it scrolls\n    handleScrollChange() {\n        this.clientRect = this.computeClientRect();\n    }\n}\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nconst getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nclass AutoScroller {\n    constructor() {\n        // options that can be set by caller\n        this.isEnabled = true;\n        this.scrollQuery = [window, '.fc-scroller'];\n        this.edgeThreshold = 50; // pixels\n        this.maxVelocity = 300; // pixels per second\n        // internal state\n        this.pointerScreenX = null;\n        this.pointerScreenY = null;\n        this.isAnimating = false;\n        this.scrollCaches = null;\n        // protect against the initial pointerdown being too close to an edge and starting the scroll\n        this.everMovedUp = false;\n        this.everMovedDown = false;\n        this.everMovedLeft = false;\n        this.everMovedRight = false;\n        this.animate = () => {\n            if (this.isAnimating) { // wasn't cancelled between animation calls\n                let edge = this.computeBestEdge(this.pointerScreenX + window.scrollX, this.pointerScreenY + window.scrollY);\n                if (edge) {\n                    let now = getTime();\n                    this.handleSide(edge, (now - this.msSinceRequest) / 1000);\n                    this.requestAnimation(now);\n                }\n                else {\n                    this.isAnimating = false; // will stop animation\n                }\n            }\n        };\n    }\n    start(pageX, pageY, scrollStartEl) {\n        if (this.isEnabled) {\n            this.scrollCaches = this.buildCaches(scrollStartEl);\n            this.pointerScreenX = null;\n            this.pointerScreenY = null;\n            this.everMovedUp = false;\n            this.everMovedDown = false;\n            this.everMovedLeft = false;\n            this.everMovedRight = false;\n            this.handleMove(pageX, pageY);\n        }\n    }\n    handleMove(pageX, pageY) {\n        if (this.isEnabled) {\n            let pointerScreenX = pageX - window.scrollX;\n            let pointerScreenY = pageY - window.scrollY;\n            let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n            let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n            if (yDelta < 0) {\n                this.everMovedUp = true;\n            }\n            else if (yDelta > 0) {\n                this.everMovedDown = true;\n            }\n            if (xDelta < 0) {\n                this.everMovedLeft = true;\n            }\n            else if (xDelta > 0) {\n                this.everMovedRight = true;\n            }\n            this.pointerScreenX = pointerScreenX;\n            this.pointerScreenY = pointerScreenY;\n            if (!this.isAnimating) {\n                this.isAnimating = true;\n                this.requestAnimation(getTime());\n            }\n        }\n    }\n    stop() {\n        if (this.isEnabled) {\n            this.isAnimating = false; // will stop animation\n            for (let scrollCache of this.scrollCaches) {\n                scrollCache.destroy();\n            }\n            this.scrollCaches = null;\n        }\n    }\n    requestAnimation(now) {\n        this.msSinceRequest = now;\n        requestAnimationFrame(this.animate);\n    }\n    handleSide(edge, seconds) {\n        let { scrollCache } = edge;\n        let { edgeThreshold } = this;\n        let invDistance = edgeThreshold - edge.distance;\n        let velocity = // the closer to the edge, the faster we scroll\n         ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic\n            this.maxVelocity * seconds;\n        let sign = 1;\n        switch (edge.name) {\n            case 'left':\n                sign = -1;\n            // falls through\n            case 'right':\n                scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n                break;\n            case 'top':\n                sign = -1;\n            // falls through\n            case 'bottom':\n                scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n                break;\n        }\n    }\n    // left/top are relative to document topleft\n    computeBestEdge(left, top) {\n        let { edgeThreshold } = this;\n        let bestSide = null;\n        let scrollCaches = this.scrollCaches || [];\n        for (let scrollCache of scrollCaches) {\n            let rect = scrollCache.clientRect;\n            let leftDist = left - rect.left;\n            let rightDist = rect.right - left;\n            let topDist = top - rect.top;\n            let bottomDist = rect.bottom - top;\n            // completely within the rect?\n            if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n                if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n                    (!bestSide || bestSide.distance > topDist)) {\n                    bestSide = { scrollCache, name: 'top', distance: topDist };\n                }\n                if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n                    (!bestSide || bestSide.distance > bottomDist)) {\n                    bestSide = { scrollCache, name: 'bottom', distance: bottomDist };\n                }\n                /*\n                TODO: fix broken RTL scrolling. canScrollLeft always returning false\n                https://github.com/fullcalendar/fullcalendar/issues/4837\n                */\n                if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n                    (!bestSide || bestSide.distance > leftDist)) {\n                    bestSide = { scrollCache, name: 'left', distance: leftDist };\n                }\n                if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n                    (!bestSide || bestSide.distance > rightDist)) {\n                    bestSide = { scrollCache, name: 'right', distance: rightDist };\n                }\n            }\n        }\n        return bestSide;\n    }\n    buildCaches(scrollStartEl) {\n        return this.queryScrollEls(scrollStartEl).map((el) => {\n            if (el === window) {\n                return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n            }\n            return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n        });\n    }\n    queryScrollEls(scrollStartEl) {\n        let els = [];\n        for (let query of this.scrollQuery) {\n            if (typeof query === 'object') {\n                els.push(query);\n            }\n            else {\n                /*\n                TODO: in the future, always have auto-scroll happen on element where current Hit came from\n                Ticket: https://github.com/fullcalendar/fullcalendar/issues/4593\n                */\n                els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));\n            }\n        }\n        return els;\n    }\n}\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nclass FeaturefulElementDragging extends ElementDragging {\n    constructor(containerEl, selector) {\n        super(containerEl);\n        this.containerEl = containerEl;\n        // options that can be directly set by caller\n        // the caller can also set the PointerDragging's options as well\n        this.delay = null;\n        this.minDistance = 0;\n        this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n        this.mirrorNeedsRevert = false;\n        this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n        this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n        this.isDelayEnded = false;\n        this.isDistanceSurpassed = false;\n        this.delayTimeoutId = null;\n        this.onPointerDown = (ev) => {\n            if (!this.isDragging) { // so new drag doesn't happen while revert animation is going\n                this.isInteracting = true;\n                this.isDelayEnded = false;\n                this.isDistanceSurpassed = false;\n                preventSelection(document.body);\n                preventContextMenu(document.body);\n                // prevent links from being visited if there's an eventual drag.\n                // also prevents selection in older browsers (maybe?).\n                // not necessary for touch, besides, browser would complain about passiveness.\n                if (!ev.isTouch) {\n                    ev.origEvent.preventDefault();\n                }\n                this.emitter.trigger('pointerdown', ev);\n                if (this.isInteracting && // not destroyed via pointerdown handler\n                    !this.pointer.shouldIgnoreMove) {\n                    // actions related to initiating dragstart+dragmove+dragend...\n                    this.mirror.setIsVisible(false); // reset. caller must set-visible\n                    this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n                    this.startDelay(ev);\n                    if (!this.minDistance) {\n                        this.handleDistanceSurpassed(ev);\n                    }\n                }\n            }\n        };\n        this.onPointerMove = (ev) => {\n            if (this.isInteracting) {\n                this.emitter.trigger('pointermove', ev);\n                if (!this.isDistanceSurpassed) {\n                    let minDistance = this.minDistance;\n                    let distanceSq; // current distance from the origin, squared\n                    let { deltaX, deltaY } = ev;\n                    distanceSq = deltaX * deltaX + deltaY * deltaY;\n                    if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n                        this.handleDistanceSurpassed(ev);\n                    }\n                }\n                if (this.isDragging) {\n                    // a real pointer move? (not one simulated by scrolling)\n                    if (ev.origEvent.type !== 'scroll') {\n                        this.mirror.handleMove(ev.pageX, ev.pageY);\n                        this.autoScroller.handleMove(ev.pageX, ev.pageY);\n                    }\n                    this.emitter.trigger('dragmove', ev);\n                }\n            }\n        };\n        this.onPointerUp = (ev) => {\n            if (this.isInteracting) {\n                this.isInteracting = false;\n                allowSelection(document.body);\n                allowContextMenu(document.body);\n                this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n                if (this.isDragging) {\n                    this.autoScroller.stop();\n                    this.tryStopDrag(ev); // which will stop the mirror\n                }\n                if (this.delayTimeoutId) {\n                    clearTimeout(this.delayTimeoutId);\n                    this.delayTimeoutId = null;\n                }\n            }\n        };\n        let pointer = this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', this.onPointerDown);\n        pointer.emitter.on('pointermove', this.onPointerMove);\n        pointer.emitter.on('pointerup', this.onPointerUp);\n        if (selector) {\n            pointer.selector = selector;\n        }\n        this.mirror = new ElementMirror();\n        this.autoScroller = new AutoScroller();\n    }\n    destroy() {\n        this.pointer.destroy();\n        // HACK: simulate a pointer-up to end the current drag\n        // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n        this.onPointerUp({});\n    }\n    startDelay(ev) {\n        if (typeof this.delay === 'number') {\n            this.delayTimeoutId = setTimeout(() => {\n                this.delayTimeoutId = null;\n                this.handleDelayEnd(ev);\n            }, this.delay); // not assignable to number!\n        }\n        else {\n            this.handleDelayEnd(ev);\n        }\n    }\n    handleDelayEnd(ev) {\n        this.isDelayEnded = true;\n        this.tryStartDrag(ev);\n    }\n    handleDistanceSurpassed(ev) {\n        this.isDistanceSurpassed = true;\n        this.tryStartDrag(ev);\n    }\n    tryStartDrag(ev) {\n        if (this.isDelayEnded && this.isDistanceSurpassed) {\n            if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n                this.isDragging = true;\n                this.mirrorNeedsRevert = false;\n                this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl);\n                this.emitter.trigger('dragstart', ev);\n                if (this.touchScrollAllowed === false) {\n                    this.pointer.cancelTouchScroll();\n                }\n            }\n        }\n    }\n    tryStopDrag(ev) {\n        // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n        // that come from the document to fire beforehand. much more convenient this way.\n        this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev));\n    }\n    stopDrag(ev) {\n        this.isDragging = false;\n        this.emitter.trigger('dragend', ev);\n    }\n    // fill in the implementations...\n    setIgnoreMove(bool) {\n        this.pointer.shouldIgnoreMove = bool;\n    }\n    setMirrorIsVisible(bool) {\n        this.mirror.setIsVisible(bool);\n    }\n    setMirrorNeedsRevert(bool) {\n        this.mirrorNeedsRevert = bool;\n    }\n    setAutoScrollEnabled(bool) {\n        this.autoScroller.isEnabled = bool;\n    }\n}\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nclass OffsetTracker {\n    constructor(el) {\n        this.el = el;\n        this.origRect = computeRect(el);\n        // will work fine for divs that have overflow:hidden\n        this.scrollCaches = getClippingParents(el).map((scrollEl) => new ElementScrollGeomCache(scrollEl, true));\n    }\n    destroy() {\n        for (let scrollCache of this.scrollCaches) {\n            scrollCache.destroy();\n        }\n    }\n    computeLeft() {\n        let left = this.origRect.left;\n        for (let scrollCache of this.scrollCaches) {\n            left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n        }\n        return left;\n    }\n    computeTop() {\n        let top = this.origRect.top;\n        for (let scrollCache of this.scrollCaches) {\n            top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n        }\n        return top;\n    }\n    isWithinClipping(pageX, pageY) {\n        let point = { left: pageX, top: pageY };\n        for (let scrollCache of this.scrollCaches) {\n            if (!isIgnoredClipping(scrollCache.getEventTarget()) &&\n                !pointInsideRect(point, scrollCache.clientRect)) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n    let tagName = node.tagName;\n    return tagName === 'HTML' || tagName === 'BODY';\n}\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nclass HitDragging {\n    constructor(dragging, droppableStore) {\n        // options that can be set by caller\n        this.useSubjectCenter = false;\n        this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n        this.disablePointCheck = false;\n        this.initialHit = null;\n        this.movingHit = null;\n        this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n        this.handlePointerDown = (ev) => {\n            let { dragging } = this;\n            this.initialHit = null;\n            this.movingHit = null;\n            this.finalHit = null;\n            this.prepareHits();\n            this.processFirstCoord(ev);\n            if (this.initialHit || !this.requireInitial) {\n                dragging.setIgnoreMove(false);\n                // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n                this.emitter.trigger('pointerdown', ev);\n            }\n            else {\n                dragging.setIgnoreMove(true);\n            }\n        };\n        this.handleDragStart = (ev) => {\n            this.emitter.trigger('dragstart', ev);\n            this.handleMove(ev, true); // force = fire even if initially null\n        };\n        this.handleDragMove = (ev) => {\n            this.emitter.trigger('dragmove', ev);\n            this.handleMove(ev);\n        };\n        this.handlePointerUp = (ev) => {\n            this.releaseHits();\n            this.emitter.trigger('pointerup', ev);\n        };\n        this.handleDragEnd = (ev) => {\n            if (this.movingHit) {\n                this.emitter.trigger('hitupdate', null, true, ev);\n            }\n            this.finalHit = this.movingHit;\n            this.movingHit = null;\n            this.emitter.trigger('dragend', ev);\n        };\n        this.droppableStore = droppableStore;\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        dragging.emitter.on('dragmove', this.handleDragMove);\n        dragging.emitter.on('pointerup', this.handlePointerUp);\n        dragging.emitter.on('dragend', this.handleDragEnd);\n        this.dragging = dragging;\n        this.emitter = new Emitter();\n    }\n    // sets initialHit\n    // sets coordAdjust\n    processFirstCoord(ev) {\n        let origPoint = { left: ev.pageX, top: ev.pageY };\n        let adjustedPoint = origPoint;\n        let subjectEl = ev.subjectEl;\n        let subjectRect;\n        if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot\n            subjectRect = computeRect(subjectEl);\n            adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n        }\n        let initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n        if (initialHit) {\n            if (this.useSubjectCenter && subjectRect) {\n                let slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n                if (slicedSubjectRect) {\n                    adjustedPoint = getRectCenter(slicedSubjectRect);\n                }\n            }\n            this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n        }\n        else {\n            this.coordAdjust = { left: 0, top: 0 };\n        }\n    }\n    handleMove(ev, forceHandle) {\n        let hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n        if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n            this.movingHit = hit;\n            this.emitter.trigger('hitupdate', hit, false, ev);\n        }\n    }\n    prepareHits() {\n        this.offsetTrackers = mapHash(this.droppableStore, (interactionSettings) => {\n            interactionSettings.component.prepareHits();\n            return new OffsetTracker(interactionSettings.el);\n        });\n    }\n    releaseHits() {\n        let { offsetTrackers } = this;\n        for (let id in offsetTrackers) {\n            offsetTrackers[id].destroy();\n        }\n        this.offsetTrackers = {};\n    }\n    queryHitForOffset(offsetLeft, offsetTop) {\n        let { droppableStore, offsetTrackers } = this;\n        let bestHit = null;\n        for (let id in droppableStore) {\n            let component = droppableStore[id].component;\n            let offsetTracker = offsetTrackers[id];\n            if (offsetTracker && // wasn't destroyed mid-drag\n                offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n                let originLeft = offsetTracker.computeLeft();\n                let originTop = offsetTracker.computeTop();\n                let positionLeft = offsetLeft - originLeft;\n                let positionTop = offsetTop - originTop;\n                let { origRect } = offsetTracker;\n                let width = origRect.right - origRect.left;\n                let height = origRect.bottom - origRect.top;\n                if (\n                // must be within the element's bounds\n                positionLeft >= 0 && positionLeft < width &&\n                    positionTop >= 0 && positionTop < height) {\n                    let hit = component.queryHit(positionLeft, positionTop, width, height);\n                    if (hit && (\n                    // make sure the hit is within activeRange, meaning it's not a dead cell\n                    rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)) &&\n                        // Ensure the component we are querying for the hit is accessibly my the pointer\n                        // Prevents obscured calendars (ex: under a modal dialog) from accepting hit\n                        // https://github.com/fullcalendar/fullcalendar/issues/5026\n                        (this.disablePointCheck ||\n                            offsetTracker.el.contains(offsetTracker.el.getRootNode().elementFromPoint(\n                            // add-back origins to get coordinate relative to top-left of window viewport\n                            positionLeft + originLeft - window.scrollX, positionTop + originTop - window.scrollY))) &&\n                        (!bestHit || hit.layer > bestHit.layer)) {\n                        hit.componentId = id;\n                        hit.context = component.context;\n                        // TODO: better way to re-orient rectangle\n                        hit.rect.left += originLeft;\n                        hit.rect.right += originLeft;\n                        hit.rect.top += originTop;\n                        hit.rect.bottom += originTop;\n                        bestHit = hit;\n                    }\n                }\n            }\n        }\n        return bestHit;\n    }\n}\nfunction isHitsEqual(hit0, hit1) {\n    if (!hit0 && !hit1) {\n        return true;\n    }\n    if (Boolean(hit0) !== Boolean(hit1)) {\n        return false;\n    }\n    return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\n\nfunction buildDatePointApiWithContext(dateSpan, context) {\n    let props = {};\n    for (let transform of context.pluginHooks.datePointTransforms) {\n        Object.assign(props, transform(dateSpan, context));\n    }\n    Object.assign(props, buildDatePointApi(dateSpan, context.dateEnv));\n    return props;\n}\nfunction buildDatePointApi(span, dateEnv) {\n    return {\n        date: dateEnv.toDate(span.range.start),\n        dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n        allDay: span.allDay,\n    };\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nclass DateClicking extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.handlePointerDown = (pev) => {\n            let { dragging } = this;\n            let downEl = pev.origEvent.target;\n            // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n            dragging.setIgnoreMove(!this.component.isValidDateDownEl(downEl));\n        };\n        // won't even fire if moving was ignored\n        this.handleDragEnd = (ev) => {\n            let { component } = this;\n            let { pointer } = this.dragging;\n            if (!pointer.wasTouchScroll) {\n                let { initialHit, finalHit } = this.hitDragging;\n                if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n                    let { context } = component;\n                    let arg = Object.assign(Object.assign({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), { dayEl: initialHit.dayEl, jsEvent: ev.origEvent, view: context.viewApi || context.calendarApi.view });\n                    context.emitter.trigger('dateClick', arg);\n                }\n            }\n        };\n        // we DO want to watch pointer moves because otherwise finalHit won't get populated\n        this.dragging = new FeaturefulElementDragging(settings.el);\n        this.dragging.autoScroller.isEnabled = false;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nclass DateSelecting extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.dragSelection = null;\n        this.handlePointerDown = (ev) => {\n            let { component, dragging } = this;\n            let { options } = component.context;\n            let canSelect = options.selectable &&\n                component.isValidDateDownEl(ev.origEvent.target);\n            // don't bother to watch expensive moves if component won't do selection\n            dragging.setIgnoreMove(!canSelect);\n            // if touch, require user to hold down\n            dragging.delay = ev.isTouch ? getComponentTouchDelay$1(component) : null;\n        };\n        this.handleDragStart = (ev) => {\n            this.component.context.calendarApi.unselect(ev); // unselect previous selections\n        };\n        this.handleHitUpdate = (hit, isFinal) => {\n            let { context } = this.component;\n            let dragSelection = null;\n            let isInvalid = false;\n            if (hit) {\n                let initialHit = this.hitDragging.initialHit;\n                let disallowed = hit.componentId === initialHit.componentId\n                    && this.isHitComboAllowed\n                    && !this.isHitComboAllowed(initialHit, hit);\n                if (!disallowed) {\n                    dragSelection = joinHitsIntoSelection(initialHit, hit, context.pluginHooks.dateSelectionTransformers);\n                }\n                if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n                    isInvalid = true;\n                    dragSelection = null;\n                }\n            }\n            if (dragSelection) {\n                context.dispatch({ type: 'SELECT_DATES', selection: dragSelection });\n            }\n            else if (!isFinal) { // only unselect if moved away while dragging\n                context.dispatch({ type: 'UNSELECT_DATES' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n            }\n        };\n        this.handlePointerUp = (pev) => {\n            if (this.dragSelection) {\n                // selection is already rendered, so just need to report selection\n                triggerDateSelect(this.dragSelection, pev, this.component.context);\n                this.dragSelection = null;\n            }\n        };\n        let { component } = settings;\n        let { options } = component.context;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.touchScrollAllowed = false;\n        dragging.minDistance = options.selectMinDistance || 0;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', this.handlePointerUp);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\nfunction getComponentTouchDelay$1(component) {\n    let { options } = component.context;\n    let delay = options.selectLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n    let dateSpan0 = hit0.dateSpan;\n    let dateSpan1 = hit1.dateSpan;\n    let ms = [\n        dateSpan0.range.start,\n        dateSpan0.range.end,\n        dateSpan1.range.start,\n        dateSpan1.range.end,\n    ];\n    ms.sort(compareNumbers);\n    let props = {};\n    for (let transformer of dateSelectionTransformers) {\n        let res = transformer(hit0, hit1);\n        if (res === false) {\n            return null;\n        }\n        if (res) {\n            Object.assign(props, res);\n        }\n    }\n    props.range = { start: ms[0], end: ms[3] };\n    props.allDay = dateSpan0.allDay;\n    return props;\n}\n\nclass EventDragging extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // internal state\n        this.subjectEl = null;\n        this.subjectSeg = null; // the seg being selected/dragged\n        this.isDragging = false;\n        this.eventRange = null;\n        this.relevantEvents = null; // the events being dragged\n        this.receivingContext = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n        this.handlePointerDown = (ev) => {\n            let origTarget = ev.origEvent.target;\n            let { component, dragging } = this;\n            let { mirror } = dragging;\n            let { options } = component.context;\n            let initialContext = component.context;\n            this.subjectEl = ev.subjectEl;\n            let subjectSeg = this.subjectSeg = getElSeg(ev.subjectEl);\n            let eventRange = this.eventRange = subjectSeg.eventRange;\n            let eventInstanceId = eventRange.instance.instanceId;\n            this.relevantEvents = getRelevantEvents(initialContext.getCurrentData().eventStore, eventInstanceId);\n            dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n            dragging.delay =\n                // only do a touch delay if touch and this event hasn't been selected yet\n                (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n                    getComponentTouchDelay(component) :\n                    null;\n            if (options.fixedMirrorParent) {\n                mirror.parentNode = options.fixedMirrorParent;\n            }\n            else {\n                mirror.parentNode = elementClosest(origTarget, '.fc');\n            }\n            mirror.revertDuration = options.dragRevertDuration;\n            let isValid = component.isValidSegDownEl(origTarget) &&\n                !elementClosest(origTarget, '.fc-event-resizer'); // NOT on a resizer\n            dragging.setIgnoreMove(!isValid);\n            // disable dragging for elements that are resizable (ie, selectable)\n            // but are not draggable\n            this.isDragging = isValid &&\n                ev.subjectEl.classList.contains('fc-event-draggable');\n        };\n        this.handleDragStart = (ev) => {\n            let initialContext = this.component.context;\n            let eventRange = this.eventRange;\n            let eventInstanceId = eventRange.instance.instanceId;\n            if (ev.isTouch) {\n                // need to select a different event?\n                if (eventInstanceId !== this.component.props.eventSelection) {\n                    initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId });\n                }\n            }\n            else {\n                // if now using mouse, but was previous touch interaction, clear selected event\n                initialContext.dispatch({ type: 'UNSELECT_EVENT' });\n            }\n            if (this.isDragging) {\n                initialContext.calendarApi.unselect(ev); // unselect *date* selection\n                initialContext.emitter.trigger('eventDragStart', {\n                    el: this.subjectEl,\n                    event: new EventImpl(initialContext, eventRange.def, eventRange.instance),\n                    jsEvent: ev.origEvent,\n                    view: initialContext.viewApi,\n                });\n            }\n        };\n        this.handleHitUpdate = (hit, isFinal) => {\n            if (!this.isDragging) {\n                return;\n            }\n            let relevantEvents = this.relevantEvents;\n            let initialHit = this.hitDragging.initialHit;\n            let initialContext = this.component.context;\n            // states based on new hit\n            let receivingContext = null;\n            let mutation = null;\n            let mutatedRelevantEvents = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n            };\n            if (hit) {\n                receivingContext = hit.context;\n                let receivingOptions = receivingContext.options;\n                if (initialContext === receivingContext ||\n                    (receivingOptions.editable && receivingOptions.droppable)) {\n                    mutation = computeEventMutation(initialHit, hit, this.eventRange.instance.range.start, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);\n                    if (mutation) {\n                        mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);\n                        interaction.mutatedEvents = mutatedRelevantEvents;\n                        if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n                            isInvalid = true;\n                            mutation = null;\n                            mutatedRelevantEvents = null;\n                            interaction.mutatedEvents = createEmptyEventStore();\n                        }\n                    }\n                }\n                else {\n                    receivingContext = null;\n                }\n            }\n            this.displayDrag(receivingContext, interaction);\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (initialContext === receivingContext && // TODO: write test for this\n                    isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                this.dragging.setMirrorNeedsRevert(!mutation);\n                // render the mirror if no already-rendered mirror\n                // TODO: wish we could somehow wait for dispatch to guarantee render\n                this.dragging.setMirrorIsVisible(!hit || !this.subjectEl.getRootNode().querySelector('.fc-event-mirror'));\n                // assign states based on new hit\n                this.receivingContext = receivingContext;\n                this.validMutation = mutation;\n                this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        this.handlePointerUp = () => {\n            if (!this.isDragging) {\n                this.cleanup(); // because handleDragEnd won't fire\n            }\n        };\n        this.handleDragEnd = (ev) => {\n            if (this.isDragging) {\n                let initialContext = this.component.context;\n                let initialView = initialContext.viewApi;\n                let { receivingContext, validMutation } = this;\n                let eventDef = this.eventRange.def;\n                let eventInstance = this.eventRange.instance;\n                let eventApi = new EventImpl(initialContext, eventDef, eventInstance);\n                let relevantEvents = this.relevantEvents;\n                let mutatedRelevantEvents = this.mutatedRelevantEvents;\n                let { finalHit } = this.hitDragging;\n                this.clearDrag(); // must happen after revert animation\n                initialContext.emitter.trigger('eventDragStop', {\n                    el: this.subjectEl,\n                    event: eventApi,\n                    jsEvent: ev.origEvent,\n                    view: initialView,\n                });\n                if (validMutation) {\n                    // dropped within same calendar\n                    if (receivingContext === initialContext) {\n                        let updatedEventApi = new EventImpl(initialContext, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n                        initialContext.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: mutatedRelevantEvents,\n                        });\n                        let eventChangeArg = {\n                            oldEvent: eventApi,\n                            event: updatedEventApi,\n                            relatedEvents: buildEventApis(mutatedRelevantEvents, initialContext, eventInstance),\n                            revert() {\n                                initialContext.dispatch({\n                                    type: 'MERGE_EVENTS',\n                                    eventStore: relevantEvents, // the pre-change data\n                                });\n                            },\n                        };\n                        let transformed = {};\n                        for (let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers) {\n                            Object.assign(transformed, transformer(validMutation, initialContext));\n                        }\n                        initialContext.emitter.trigger('eventDrop', Object.assign(Object.assign(Object.assign({}, eventChangeArg), transformed), { el: ev.subjectEl, delta: validMutation.datesDelta, jsEvent: ev.origEvent, view: initialView }));\n                        initialContext.emitter.trigger('eventChange', eventChangeArg);\n                        // dropped in different calendar\n                    }\n                    else if (receivingContext) {\n                        let eventRemoveArg = {\n                            event: eventApi,\n                            relatedEvents: buildEventApis(relevantEvents, initialContext, eventInstance),\n                            revert() {\n                                initialContext.dispatch({\n                                    type: 'MERGE_EVENTS',\n                                    eventStore: relevantEvents,\n                                });\n                            },\n                        };\n                        initialContext.emitter.trigger('eventLeave', Object.assign(Object.assign({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView }));\n                        initialContext.dispatch({\n                            type: 'REMOVE_EVENTS',\n                            eventStore: relevantEvents,\n                        });\n                        initialContext.emitter.trigger('eventRemove', eventRemoveArg);\n                        let addedEventDef = mutatedRelevantEvents.defs[eventDef.defId];\n                        let addedEventInstance = mutatedRelevantEvents.instances[eventInstance.instanceId];\n                        let addedEventApi = new EventImpl(receivingContext, addedEventDef, addedEventInstance);\n                        receivingContext.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: mutatedRelevantEvents,\n                        });\n                        let eventAddArg = {\n                            event: addedEventApi,\n                            relatedEvents: buildEventApis(mutatedRelevantEvents, receivingContext, addedEventInstance),\n                            revert() {\n                                receivingContext.dispatch({\n                                    type: 'REMOVE_EVENTS',\n                                    eventStore: mutatedRelevantEvents,\n                                });\n                            },\n                        };\n                        receivingContext.emitter.trigger('eventAdd', eventAddArg);\n                        if (ev.isTouch) {\n                            receivingContext.dispatch({\n                                type: 'SELECT_EVENT',\n                                eventInstanceId: eventInstance.instanceId,\n                            });\n                        }\n                        receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.context.viewApi }));\n                        receivingContext.emitter.trigger('eventReceive', Object.assign(Object.assign({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.context.viewApi }));\n                    }\n                }\n                else {\n                    initialContext.emitter.trigger('_noEventDrop');\n                }\n            }\n            this.cleanup();\n        };\n        let { component } = this;\n        let { options } = component.context;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.pointer.selector = EventDragging.SELECTOR;\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsStore);\n        hitDragging.useSubjectCenter = settings.useEventCenter;\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', this.handlePointerUp);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n    // render a drag state on the next receivingCalendar\n    displayDrag(nextContext, state) {\n        let initialContext = this.component.context;\n        let prevContext = this.receivingContext;\n        // does the previous calendar need to be cleared?\n        if (prevContext && prevContext !== nextContext) {\n            // does the initial calendar need to be cleared?\n            // if so, don't clear all the way. we still need to to hide the affectedEvents\n            if (prevContext === initialContext) {\n                prevContext.dispatch({\n                    type: 'SET_EVENT_DRAG',\n                    state: {\n                        affectedEvents: state.affectedEvents,\n                        mutatedEvents: createEmptyEventStore(),\n                        isEvent: true,\n                    },\n                });\n                // completely clear the old calendar if it wasn't the initial\n            }\n            else {\n                prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n            }\n        }\n        if (nextContext) {\n            nextContext.dispatch({ type: 'SET_EVENT_DRAG', state });\n        }\n    }\n    clearDrag() {\n        let initialCalendar = this.component.context;\n        let { receivingContext } = this;\n        if (receivingContext) {\n            receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        // the initial calendar might have an dummy drag state from displayDrag\n        if (initialCalendar !== receivingContext) {\n            initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    }\n    cleanup() {\n        this.subjectSeg = null;\n        this.isDragging = false;\n        this.eventRange = null;\n        this.relevantEvents = null;\n        this.receivingContext = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n    }\n}\n// TODO: test this in IE11\n// QUESTION: why do we need it on the resizable???\nEventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable';\nfunction computeEventMutation(hit0, hit1, eventInstanceStart, massagers) {\n    let dateSpan0 = hit0.dateSpan;\n    let dateSpan1 = hit1.dateSpan;\n    let date0 = dateSpan0.range.start;\n    let date1 = dateSpan1.range.start;\n    let standardProps = {};\n    if (dateSpan0.allDay !== dateSpan1.allDay) {\n        standardProps.allDay = dateSpan1.allDay;\n        standardProps.hasEnd = hit1.context.options.allDayMaintainDuration;\n        if (dateSpan1.allDay) {\n            // means date1 is already start-of-day,\n            // but date0 needs to be converted\n            date0 = startOfDay(eventInstanceStart);\n        }\n        else {\n            // Moving from allDate->timed\n            // Doesn't matter where on the event the drag began, mutate the event's start-date to date1\n            date0 = eventInstanceStart;\n        }\n    }\n    let delta = diffDates(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ?\n        hit0.largeUnit :\n        null);\n    if (delta.milliseconds) { // has hours/minutes/seconds\n        standardProps.allDay = false;\n    }\n    let mutation = {\n        datesDelta: delta,\n        standardProps,\n    };\n    for (let massager of massagers) {\n        massager(mutation, hit0, hit1);\n    }\n    return mutation;\n}\nfunction getComponentTouchDelay(component) {\n    let { options } = component.context;\n    let delay = options.eventLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\n\nclass EventResizing extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // internal state\n        this.draggingSegEl = null;\n        this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n        this.eventRange = null;\n        this.relevantEvents = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n        this.handlePointerDown = (ev) => {\n            let { component } = this;\n            let segEl = this.querySegEl(ev);\n            let seg = getElSeg(segEl);\n            let eventRange = this.eventRange = seg.eventRange;\n            this.dragging.minDistance = component.context.options.eventDragMinDistance;\n            // if touch, need to be working with a selected event\n            this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(ev.origEvent.target) ||\n                (ev.isTouch && this.component.props.eventSelection !== eventRange.instance.instanceId));\n        };\n        this.handleDragStart = (ev) => {\n            let { context } = this.component;\n            let eventRange = this.eventRange;\n            this.relevantEvents = getRelevantEvents(context.getCurrentData().eventStore, this.eventRange.instance.instanceId);\n            let segEl = this.querySegEl(ev);\n            this.draggingSegEl = segEl;\n            this.draggingSeg = getElSeg(segEl);\n            context.calendarApi.unselect();\n            context.emitter.trigger('eventResizeStart', {\n                el: segEl,\n                event: new EventImpl(context, eventRange.def, eventRange.instance),\n                jsEvent: ev.origEvent,\n                view: context.viewApi,\n            });\n        };\n        this.handleHitUpdate = (hit, isFinal, ev) => {\n            let { context } = this.component;\n            let relevantEvents = this.relevantEvents;\n            let initialHit = this.hitDragging.initialHit;\n            let eventInstance = this.eventRange.instance;\n            let mutation = null;\n            let mutatedRelevantEvents = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n            };\n            if (hit) {\n                let disallowed = hit.componentId === initialHit.componentId\n                    && this.isHitComboAllowed\n                    && !this.isHitComboAllowed(initialHit, hit);\n                if (!disallowed) {\n                    mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range);\n                }\n            }\n            if (mutation) {\n                mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context);\n                interaction.mutatedEvents = mutatedRelevantEvents;\n                if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n                    isInvalid = true;\n                    mutation = null;\n                    mutatedRelevantEvents = null;\n                    interaction.mutatedEvents = null;\n                }\n            }\n            if (mutatedRelevantEvents) {\n                context.dispatch({\n                    type: 'SET_EVENT_RESIZE',\n                    state: interaction,\n                });\n            }\n            else {\n                context.dispatch({ type: 'UNSET_EVENT_RESIZE' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (mutation && isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                this.validMutation = mutation;\n                this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        this.handleDragEnd = (ev) => {\n            let { context } = this.component;\n            let eventDef = this.eventRange.def;\n            let eventInstance = this.eventRange.instance;\n            let eventApi = new EventImpl(context, eventDef, eventInstance);\n            let relevantEvents = this.relevantEvents;\n            let mutatedRelevantEvents = this.mutatedRelevantEvents;\n            context.emitter.trigger('eventResizeStop', {\n                el: this.draggingSegEl,\n                event: eventApi,\n                jsEvent: ev.origEvent,\n                view: context.viewApi,\n            });\n            if (this.validMutation) {\n                let updatedEventApi = new EventImpl(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n                context.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: mutatedRelevantEvents,\n                });\n                let eventChangeArg = {\n                    oldEvent: eventApi,\n                    event: updatedEventApi,\n                    relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n                    revert() {\n                        context.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: relevantEvents, // the pre-change events\n                        });\n                    },\n                };\n                context.emitter.trigger('eventResize', Object.assign(Object.assign({}, eventChangeArg), { el: this.draggingSegEl, startDelta: this.validMutation.startDelta || createDuration(0), endDelta: this.validMutation.endDelta || createDuration(0), jsEvent: ev.origEvent, view: context.viewApi }));\n                context.emitter.trigger('eventChange', eventChangeArg);\n            }\n            else {\n                context.emitter.trigger('_noEventResize');\n            }\n            // reset all internal state\n            this.draggingSeg = null;\n            this.relevantEvents = null;\n            this.validMutation = null;\n            // okay to keep eventInstance around. useful to set it in handlePointerDown\n        };\n        let { component } = settings;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.pointer.selector = '.fc-event-resizer';\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n    querySegEl(ev) {\n        return elementClosest(ev.subjectEl, '.fc-event');\n    }\n}\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange) {\n    let dateEnv = hit0.context.dateEnv;\n    let date0 = hit0.dateSpan.range.start;\n    let date1 = hit1.dateSpan.range.start;\n    let delta = diffDates(date0, date1, dateEnv, hit0.largeUnit);\n    if (isFromStart) {\n        if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n            return { startDelta: delta };\n        }\n    }\n    else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n        return { endDelta: delta };\n    }\n    return null;\n}\n\nclass UnselectAuto {\n    constructor(context) {\n        this.context = context;\n        this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n        this.matchesCancel = false;\n        this.matchesEvent = false;\n        this.onSelect = (selectInfo) => {\n            if (selectInfo.jsEvent) {\n                this.isRecentPointerDateSelect = true;\n            }\n        };\n        this.onDocumentPointerDown = (pev) => {\n            let unselectCancel = this.context.options.unselectCancel;\n            let downEl = getEventTargetViaRoot(pev.origEvent);\n            this.matchesCancel = !!elementClosest(downEl, unselectCancel);\n            this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR); // interaction started on an event?\n        };\n        this.onDocumentPointerUp = (pev) => {\n            let { context } = this;\n            let { documentPointer } = this;\n            let calendarState = context.getCurrentData();\n            // touch-scrolling should never unfocus any type of selection\n            if (!documentPointer.wasTouchScroll) {\n                if (calendarState.dateSelection && // an existing date selection?\n                    !this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n                ) {\n                    let unselectAuto = context.options.unselectAuto;\n                    if (unselectAuto && (!unselectAuto || !this.matchesCancel)) {\n                        context.calendarApi.unselect(pev);\n                    }\n                }\n                if (calendarState.eventSelection && // an existing event selected?\n                    !this.matchesEvent // interaction DIDN'T start on an event\n                ) {\n                    context.dispatch({ type: 'UNSELECT_EVENT' });\n                }\n            }\n            this.isRecentPointerDateSelect = false;\n        };\n        let documentPointer = this.documentPointer = new PointerDragging(document);\n        documentPointer.shouldIgnoreMove = true;\n        documentPointer.shouldWatchScroll = false;\n        documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);\n        documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n        /*\n        TODO: better way to know about whether there was a selection with the pointer\n        */\n        context.emitter.on('select', this.onSelect);\n    }\n    destroy() {\n        this.context.emitter.off('select', this.onSelect);\n        this.documentPointer.destroy();\n    }\n}\n\nconst OPTION_REFINERS = {\n    fixedMirrorParent: identity,\n};\nconst LISTENER_REFINERS = {\n    dateClick: identity,\n    eventDragStart: identity,\n    eventDragStop: identity,\n    eventDrop: identity,\n    eventResizeStart: identity,\n    eventResizeStop: identity,\n    eventResize: identity,\n    drop: identity,\n    eventReceive: identity,\n    eventLeave: identity,\n};\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nclass ExternalElementDragging {\n    constructor(dragging, suppliedDragMeta) {\n        this.receivingContext = null;\n        this.droppableEvent = null; // will exist for all drags, even if create:false\n        this.suppliedDragMeta = null;\n        this.dragMeta = null;\n        this.handleDragStart = (ev) => {\n            this.dragMeta = this.buildDragMeta(ev.subjectEl);\n        };\n        this.handleHitUpdate = (hit, isFinal, ev) => {\n            let { dragging } = this.hitDragging;\n            let receivingContext = null;\n            let droppableEvent = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: createEmptyEventStore(),\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: this.dragMeta.create,\n            };\n            if (hit) {\n                receivingContext = hit.context;\n                if (this.canDropElOnCalendar(ev.subjectEl, receivingContext)) {\n                    droppableEvent = computeEventForDateSpan(hit.dateSpan, this.dragMeta, receivingContext);\n                    interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n                    isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext);\n                    if (isInvalid) {\n                        interaction.mutatedEvents = createEmptyEventStore();\n                        droppableEvent = null;\n                    }\n                }\n            }\n            this.displayDrag(receivingContext, interaction);\n            // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n            // TODO: wish we could somehow wait for dispatch to guarantee render\n            dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'));\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                dragging.setMirrorNeedsRevert(!droppableEvent);\n                this.receivingContext = receivingContext;\n                this.droppableEvent = droppableEvent;\n            }\n        };\n        this.handleDragEnd = (pev) => {\n            let { receivingContext, droppableEvent } = this;\n            this.clearDrag();\n            if (receivingContext && droppableEvent) {\n                let finalHit = this.hitDragging.finalHit;\n                let finalView = finalHit.context.viewApi;\n                let dragMeta = this.dragMeta;\n                receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }));\n                if (dragMeta.create) {\n                    let addingEvents = eventTupleToStore(droppableEvent);\n                    receivingContext.dispatch({\n                        type: 'MERGE_EVENTS',\n                        eventStore: addingEvents,\n                    });\n                    if (pev.isTouch) {\n                        receivingContext.dispatch({\n                            type: 'SELECT_EVENT',\n                            eventInstanceId: droppableEvent.instance.instanceId,\n                        });\n                    }\n                    // signal that an external event landed\n                    receivingContext.emitter.trigger('eventReceive', {\n                        event: new EventImpl(receivingContext, droppableEvent.def, droppableEvent.instance),\n                        relatedEvents: [],\n                        revert() {\n                            receivingContext.dispatch({\n                                type: 'REMOVE_EVENTS',\n                                eventStore: addingEvents,\n                            });\n                        },\n                        draggedEl: pev.subjectEl,\n                        view: finalView,\n                    });\n                }\n            }\n            this.receivingContext = null;\n            this.droppableEvent = null;\n        };\n        let hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n        hitDragging.requireInitial = false; // will start outside of a component\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n        this.suppliedDragMeta = suppliedDragMeta;\n    }\n    buildDragMeta(subjectEl) {\n        if (typeof this.suppliedDragMeta === 'object') {\n            return parseDragMeta(this.suppliedDragMeta);\n        }\n        if (typeof this.suppliedDragMeta === 'function') {\n            return parseDragMeta(this.suppliedDragMeta(subjectEl));\n        }\n        return getDragMetaFromEl(subjectEl);\n    }\n    displayDrag(nextContext, state) {\n        let prevContext = this.receivingContext;\n        if (prevContext && prevContext !== nextContext) {\n            prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        if (nextContext) {\n            nextContext.dispatch({ type: 'SET_EVENT_DRAG', state });\n        }\n    }\n    clearDrag() {\n        if (this.receivingContext) {\n            this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    }\n    canDropElOnCalendar(el, receivingContext) {\n        let dropAccept = receivingContext.options.dropAccept;\n        if (typeof dropAccept === 'function') {\n            return dropAccept.call(receivingContext.calendarApi, el);\n        }\n        if (typeof dropAccept === 'string' && dropAccept) {\n            return Boolean(elementMatches(el, dropAccept));\n        }\n        return true;\n    }\n}\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, context) {\n    let defProps = Object.assign({}, dragMeta.leftoverProps);\n    for (let transform of context.pluginHooks.externalDefTransforms) {\n        Object.assign(defProps, transform(dateSpan, dragMeta));\n    }\n    let { refined, extra } = refineEventDef(defProps, context);\n    let def = parseEventDef(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd\n    context);\n    let start = dateSpan.range.start;\n    // only rely on time info if drop zone is all-day,\n    // otherwise, we already know the time\n    if (dateSpan.allDay && dragMeta.startTime) {\n        start = context.dateEnv.add(start, dragMeta.startTime);\n    }\n    let end = dragMeta.duration ?\n        context.dateEnv.add(start, dragMeta.duration) :\n        getDefaultEventEnd(dateSpan.allDay, start, context);\n    let instance = createEventInstance(def.defId, { start, end });\n    return { def, instance };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n    let str = getEmbeddedElData(el, 'event');\n    let obj = str ?\n        JSON.parse(str) :\n        { create: false }; // if no embedded data, assume no event creation\n    return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n    let prefix = config.dataAttrPrefix;\n    let prefixedName = (prefix ? prefix + '-' : '') + name;\n    return el.getAttribute('data-' + prefixedName) || '';\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nclass ExternalDraggable {\n    constructor(el, settings = {}) {\n        this.handlePointerDown = (ev) => {\n            let { dragging } = this;\n            let { minDistance, longPressDelay } = this.settings;\n            dragging.minDistance =\n                minDistance != null ?\n                    minDistance :\n                    (ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance);\n            dragging.delay =\n                ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n                    (longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay) :\n                    0;\n        };\n        this.handleDragStart = (ev) => {\n            if (ev.isTouch &&\n                this.dragging.delay &&\n                ev.subjectEl.classList.contains('fc-event')) {\n                this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');\n            }\n        };\n        this.settings = settings;\n        let dragging = this.dragging = new FeaturefulElementDragging(el);\n        dragging.touchScrollAllowed = false;\n        if (settings.itemSelector != null) {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        if (settings.appendTo != null) {\n            dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n        }\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nclass InferredElementDragging extends ElementDragging {\n    constructor(containerEl) {\n        super(containerEl);\n        this.shouldIgnoreMove = false;\n        this.mirrorSelector = '';\n        this.currentMirrorEl = null;\n        this.handlePointerDown = (ev) => {\n            this.emitter.trigger('pointerdown', ev);\n            if (!this.shouldIgnoreMove) {\n                // fire dragstart right away. does not support delay or min-distance\n                this.emitter.trigger('dragstart', ev);\n            }\n        };\n        this.handlePointerMove = (ev) => {\n            if (!this.shouldIgnoreMove) {\n                this.emitter.trigger('dragmove', ev);\n            }\n        };\n        this.handlePointerUp = (ev) => {\n            this.emitter.trigger('pointerup', ev);\n            if (!this.shouldIgnoreMove) {\n                // fire dragend right away. does not support a revert animation\n                this.emitter.trigger('dragend', ev);\n            }\n        };\n        let pointer = this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', this.handlePointerDown);\n        pointer.emitter.on('pointermove', this.handlePointerMove);\n        pointer.emitter.on('pointerup', this.handlePointerUp);\n    }\n    destroy() {\n        this.pointer.destroy();\n    }\n    setIgnoreMove(bool) {\n        this.shouldIgnoreMove = bool;\n    }\n    setMirrorIsVisible(bool) {\n        if (bool) {\n            // restore a previously hidden element.\n            // use the reference in case the selector class has already been removed.\n            if (this.currentMirrorEl) {\n                this.currentMirrorEl.style.visibility = '';\n                this.currentMirrorEl = null;\n            }\n        }\n        else {\n            let mirrorEl = this.mirrorSelector\n                // TODO: somehow query FullCalendars WITHIN shadow-roots\n                ? document.querySelector(this.mirrorSelector)\n                : null;\n            if (mirrorEl) {\n                this.currentMirrorEl = mirrorEl;\n                mirrorEl.style.visibility = 'hidden';\n            }\n        }\n    }\n}\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nclass ThirdPartyDraggable {\n    constructor(containerOrSettings, settings) {\n        let containerEl = document;\n        if (\n        // wish we could just test instanceof EventTarget, but doesn't work in IE11\n        containerOrSettings === document ||\n            containerOrSettings instanceof Element) {\n            containerEl = containerOrSettings;\n            settings = settings || {};\n        }\n        else {\n            settings = (containerOrSettings || {});\n        }\n        let dragging = this.dragging = new InferredElementDragging(containerEl);\n        if (typeof settings.itemSelector === 'string') {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        else if (containerEl === document) {\n            dragging.pointer.selector = '[data-event]';\n        }\n        if (typeof settings.mirrorSelector === 'string') {\n            dragging.mirrorSelector = settings.mirrorSelector;\n        }\n        let externalDragging = new ExternalElementDragging(dragging, settings.eventData);\n        // The hit-detection system requires that the dnd-mirror-element be pointer-events:none,\n        // but this can't be guaranteed for third-party draggables, so disable\n        externalDragging.hitDragging.disablePointCheck = true;\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\nvar index = createPlugin({\n    name: '@fullcalendar/interaction',\n    componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n    calendarInteractions: [UnselectAuto],\n    elementDraggingImpl: FeaturefulElementDragging,\n    optionRefiners: OPTION_REFINERS,\n    listenerRefiners: LISTENER_REFINERS,\n});\n\nexport { ExternalDraggable as Draggable, ThirdPartyDraggable, index as default };\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n","// js/phoenix/utils.js\nvar closure = (value) => {\n  if (typeof value === \"function\") {\n    return value;\n  } else {\n    let closure2 = function() {\n      return value;\n    };\n    return closure2;\n  }\n};\n\n// js/phoenix/constants.js\nvar globalSelf = typeof self !== \"undefined\" ? self : null;\nvar phxWindow = typeof window !== \"undefined\" ? window : null;\nvar global = globalSelf || phxWindow || globalThis;\nvar DEFAULT_VSN = \"2.0.0\";\nvar SOCKET_STATES = { connecting: 0, open: 1, closing: 2, closed: 3 };\nvar DEFAULT_TIMEOUT = 1e4;\nvar WS_CLOSE_NORMAL = 1e3;\nvar CHANNEL_STATES = {\n  closed: \"closed\",\n  errored: \"errored\",\n  joined: \"joined\",\n  joining: \"joining\",\n  leaving: \"leaving\"\n};\nvar CHANNEL_EVENTS = {\n  close: \"phx_close\",\n  error: \"phx_error\",\n  join: \"phx_join\",\n  reply: \"phx_reply\",\n  leave: \"phx_leave\"\n};\nvar TRANSPORTS = {\n  longpoll: \"longpoll\",\n  websocket: \"websocket\"\n};\nvar XHR_STATES = {\n  complete: 4\n};\nvar AUTH_TOKEN_PREFIX = \"base64url.bearer.phx.\";\n\n// js/phoenix/push.js\nvar Push = class {\n  constructor(channel, event, payload, timeout) {\n    this.channel = channel;\n    this.event = event;\n    this.payload = payload || function() {\n      return {};\n    };\n    this.receivedResp = null;\n    this.timeout = timeout;\n    this.timeoutTimer = null;\n    this.recHooks = [];\n    this.sent = false;\n  }\n  /**\n   *\n   * @param {number} timeout\n   */\n  resend(timeout) {\n    this.timeout = timeout;\n    this.reset();\n    this.send();\n  }\n  /**\n   *\n   */\n  send() {\n    if (this.hasReceived(\"timeout\")) {\n      return;\n    }\n    this.startTimeout();\n    this.sent = true;\n    this.channel.socket.push({\n      topic: this.channel.topic,\n      event: this.event,\n      payload: this.payload(),\n      ref: this.ref,\n      join_ref: this.channel.joinRef()\n    });\n  }\n  /**\n   *\n   * @param {*} status\n   * @param {*} callback\n   */\n  receive(status, callback) {\n    if (this.hasReceived(status)) {\n      callback(this.receivedResp.response);\n    }\n    this.recHooks.push({ status, callback });\n    return this;\n  }\n  /**\n   * @private\n   */\n  reset() {\n    this.cancelRefEvent();\n    this.ref = null;\n    this.refEvent = null;\n    this.receivedResp = null;\n    this.sent = false;\n  }\n  /**\n   * @private\n   */\n  matchReceive({ status, response, _ref }) {\n    this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n  }\n  /**\n   * @private\n   */\n  cancelRefEvent() {\n    if (!this.refEvent) {\n      return;\n    }\n    this.channel.off(this.refEvent);\n  }\n  /**\n   * @private\n   */\n  cancelTimeout() {\n    clearTimeout(this.timeoutTimer);\n    this.timeoutTimer = null;\n  }\n  /**\n   * @private\n   */\n  startTimeout() {\n    if (this.timeoutTimer) {\n      this.cancelTimeout();\n    }\n    this.ref = this.channel.socket.makeRef();\n    this.refEvent = this.channel.replyEventName(this.ref);\n    this.channel.on(this.refEvent, (payload) => {\n      this.cancelRefEvent();\n      this.cancelTimeout();\n      this.receivedResp = payload;\n      this.matchReceive(payload);\n    });\n    this.timeoutTimer = setTimeout(() => {\n      this.trigger(\"timeout\", {});\n    }, this.timeout);\n  }\n  /**\n   * @private\n   */\n  hasReceived(status) {\n    return this.receivedResp && this.receivedResp.status === status;\n  }\n  /**\n   * @private\n   */\n  trigger(status, response) {\n    this.channel.trigger(this.refEvent, { status, response });\n  }\n};\n\n// js/phoenix/timer.js\nvar Timer = class {\n  constructor(callback, timerCalc) {\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n    this.timer = null;\n    this.tries = 0;\n  }\n  reset() {\n    this.tries = 0;\n    clearTimeout(this.timer);\n  }\n  /**\n   * Cancels any previous scheduleTimeout and schedules callback\n   */\n  scheduleTimeout() {\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      this.tries = this.tries + 1;\n      this.callback();\n    }, this.timerCalc(this.tries + 1));\n  }\n};\n\n// js/phoenix/channel.js\nvar Channel = class {\n  constructor(topic, params, socket) {\n    this.state = CHANNEL_STATES.closed;\n    this.topic = topic;\n    this.params = closure(params || {});\n    this.socket = socket;\n    this.bindings = [];\n    this.bindingRef = 0;\n    this.timeout = this.socket.timeout;\n    this.joinedOnce = false;\n    this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n    this.pushBuffer = [];\n    this.stateChangeRefs = [];\n    this.rejoinTimer = new Timer(() => {\n      if (this.socket.isConnected()) {\n        this.rejoin();\n      }\n    }, this.socket.rejoinAfterMs);\n    this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()));\n    this.stateChangeRefs.push(\n      this.socket.onOpen(() => {\n        this.rejoinTimer.reset();\n        if (this.isErrored()) {\n          this.rejoin();\n        }\n      })\n    );\n    this.joinPush.receive(\"ok\", () => {\n      this.state = CHANNEL_STATES.joined;\n      this.rejoinTimer.reset();\n      this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n      this.pushBuffer = [];\n    });\n    this.joinPush.receive(\"error\", () => {\n      this.state = CHANNEL_STATES.errored;\n      if (this.socket.isConnected()) {\n        this.rejoinTimer.scheduleTimeout();\n      }\n    });\n    this.onClose(() => {\n      this.rejoinTimer.reset();\n      if (this.socket.hasLogger())\n        this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`);\n      this.state = CHANNEL_STATES.closed;\n      this.socket.remove(this);\n    });\n    this.onError((reason) => {\n      if (this.socket.hasLogger())\n        this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      if (this.isJoining()) {\n        this.joinPush.reset();\n      }\n      this.state = CHANNEL_STATES.errored;\n      if (this.socket.isConnected()) {\n        this.rejoinTimer.scheduleTimeout();\n      }\n    });\n    this.joinPush.receive(\"timeout\", () => {\n      if (this.socket.hasLogger())\n        this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout);\n      let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout);\n      leavePush.send();\n      this.state = CHANNEL_STATES.errored;\n      this.joinPush.reset();\n      if (this.socket.isConnected()) {\n        this.rejoinTimer.scheduleTimeout();\n      }\n    });\n    this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n      this.trigger(this.replyEventName(ref), payload);\n    });\n  }\n  /**\n   * Join the channel\n   * @param {integer} timeout\n   * @returns {Push}\n   */\n  join(timeout = this.timeout) {\n    if (this.joinedOnce) {\n      throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\");\n    } else {\n      this.timeout = timeout;\n      this.joinedOnce = true;\n      this.rejoin();\n      return this.joinPush;\n    }\n  }\n  /**\n   * Hook into channel close\n   * @param {Function} callback\n   */\n  onClose(callback) {\n    this.on(CHANNEL_EVENTS.close, callback);\n  }\n  /**\n   * Hook into channel errors\n   * @param {Function} callback\n   */\n  onError(callback) {\n    return this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));\n  }\n  /**\n   * Subscribes on channel events\n   *\n   * Subscription returns a ref counter, which can be used later to\n   * unsubscribe the exact event listener\n   *\n   * @example\n   * const ref1 = channel.on(\"event\", do_stuff)\n   * const ref2 = channel.on(\"event\", do_other_stuff)\n   * channel.off(\"event\", ref1)\n   * // Since unsubscription, do_stuff won't fire,\n   * // while do_other_stuff will keep firing on the \"event\"\n   *\n   * @param {string} event\n   * @param {Function} callback\n   * @returns {integer} ref\n   */\n  on(event, callback) {\n    let ref = this.bindingRef++;\n    this.bindings.push({ event, ref, callback });\n    return ref;\n  }\n  /**\n   * Unsubscribes off of channel events\n   *\n   * Use the ref returned from a channel.on() to unsubscribe one\n   * handler, or pass nothing for the ref to unsubscribe all\n   * handlers for the given event.\n   *\n   * @example\n   * // Unsubscribe the do_stuff handler\n   * const ref1 = channel.on(\"event\", do_stuff)\n   * channel.off(\"event\", ref1)\n   *\n   * // Unsubscribe all handlers from event\n   * channel.off(\"event\")\n   *\n   * @param {string} event\n   * @param {integer} ref\n   */\n  off(event, ref) {\n    this.bindings = this.bindings.filter((bind) => {\n      return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref));\n    });\n  }\n  /**\n   * @private\n   */\n  canPush() {\n    return this.socket.isConnected() && this.isJoined();\n  }\n  /**\n   * Sends a message `event` to phoenix with the payload `payload`.\n   * Phoenix receives this in the `handle_in(event, payload, socket)`\n   * function. if phoenix replies or it times out (default 10000ms),\n   * then optionally the reply can be received.\n   *\n   * @example\n   * channel.push(\"event\")\n   *   .receive(\"ok\", payload => console.log(\"phoenix replied:\", payload))\n   *   .receive(\"error\", err => console.log(\"phoenix errored\", err))\n   *   .receive(\"timeout\", () => console.log(\"timed out pushing\"))\n   * @param {string} event\n   * @param {Object} payload\n   * @param {number} [timeout]\n   * @returns {Push}\n   */\n  push(event, payload, timeout = this.timeout) {\n    payload = payload || {};\n    if (!this.joinedOnce) {\n      throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`);\n    }\n    let pushEvent = new Push(this, event, function() {\n      return payload;\n    }, timeout);\n    if (this.canPush()) {\n      pushEvent.send();\n    } else {\n      pushEvent.startTimeout();\n      this.pushBuffer.push(pushEvent);\n    }\n    return pushEvent;\n  }\n  /** Leaves the channel\n   *\n   * Unsubscribes from server events, and\n   * instructs channel to terminate on server\n   *\n   * Triggers onClose() hooks\n   *\n   * To receive leave acknowledgements, use the `receive`\n   * hook to bind to the server ack, ie:\n   *\n   * @example\n   * channel.leave().receive(\"ok\", () => alert(\"left!\") )\n   *\n   * @param {integer} timeout\n   * @returns {Push}\n   */\n  leave(timeout = this.timeout) {\n    this.rejoinTimer.reset();\n    this.joinPush.cancelTimeout();\n    this.state = CHANNEL_STATES.leaving;\n    let onClose = () => {\n      if (this.socket.hasLogger())\n        this.socket.log(\"channel\", `leave ${this.topic}`);\n      this.trigger(CHANNEL_EVENTS.close, \"leave\");\n    };\n    let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout);\n    leavePush.receive(\"ok\", () => onClose()).receive(\"timeout\", () => onClose());\n    leavePush.send();\n    if (!this.canPush()) {\n      leavePush.trigger(\"ok\", {});\n    }\n    return leavePush;\n  }\n  /**\n   * Overridable message hook\n   *\n   * Receives all events for specialized message handling\n   * before dispatching to the channel callbacks.\n   *\n   * Must return the payload, modified or unmodified\n   * @param {string} event\n   * @param {Object} payload\n   * @param {integer} ref\n   * @returns {Object}\n   */\n  onMessage(_event, payload, _ref) {\n    return payload;\n  }\n  /**\n   * @private\n   */\n  isMember(topic, event, payload, joinRef) {\n    if (this.topic !== topic) {\n      return false;\n    }\n    if (joinRef && joinRef !== this.joinRef()) {\n      if (this.socket.hasLogger())\n        this.socket.log(\"channel\", \"dropping outdated message\", { topic, event, payload, joinRef });\n      return false;\n    } else {\n      return true;\n    }\n  }\n  /**\n   * @private\n   */\n  joinRef() {\n    return this.joinPush.ref;\n  }\n  /**\n   * @private\n   */\n  rejoin(timeout = this.timeout) {\n    if (this.isLeaving()) {\n      return;\n    }\n    this.socket.leaveOpenTopic(this.topic);\n    this.state = CHANNEL_STATES.joining;\n    this.joinPush.resend(timeout);\n  }\n  /**\n   * @private\n   */\n  trigger(event, payload, ref, joinRef) {\n    let handledPayload = this.onMessage(event, payload, ref, joinRef);\n    if (payload && !handledPayload) {\n      throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\");\n    }\n    let eventBindings = this.bindings.filter((bind) => bind.event === event);\n    for (let i = 0; i < eventBindings.length; i++) {\n      let bind = eventBindings[i];\n      bind.callback(handledPayload, ref, joinRef || this.joinRef());\n    }\n  }\n  /**\n   * @private\n   */\n  replyEventName(ref) {\n    return `chan_reply_${ref}`;\n  }\n  /**\n   * @private\n   */\n  isClosed() {\n    return this.state === CHANNEL_STATES.closed;\n  }\n  /**\n   * @private\n   */\n  isErrored() {\n    return this.state === CHANNEL_STATES.errored;\n  }\n  /**\n   * @private\n   */\n  isJoined() {\n    return this.state === CHANNEL_STATES.joined;\n  }\n  /**\n   * @private\n   */\n  isJoining() {\n    return this.state === CHANNEL_STATES.joining;\n  }\n  /**\n   * @private\n   */\n  isLeaving() {\n    return this.state === CHANNEL_STATES.leaving;\n  }\n};\n\n// js/phoenix/ajax.js\nvar Ajax = class {\n  static request(method, endPoint, headers, body, timeout, ontimeout, callback) {\n    if (global.XDomainRequest) {\n      let req = new global.XDomainRequest();\n      return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback);\n    } else if (global.XMLHttpRequest) {\n      let req = new global.XMLHttpRequest();\n      return this.xhrRequest(req, method, endPoint, headers, body, timeout, ontimeout, callback);\n    } else if (global.fetch && global.AbortController) {\n      return this.fetchRequest(method, endPoint, headers, body, timeout, ontimeout, callback);\n    } else {\n      throw new Error(\"No suitable XMLHttpRequest implementation found\");\n    }\n  }\n  static fetchRequest(method, endPoint, headers, body, timeout, ontimeout, callback) {\n    let options = {\n      method,\n      headers,\n      body\n    };\n    let controller = null;\n    if (timeout) {\n      controller = new AbortController();\n      const _timeoutId = setTimeout(() => controller.abort(), timeout);\n      options.signal = controller.signal;\n    }\n    global.fetch(endPoint, options).then((response) => response.text()).then((data) => this.parseJSON(data)).then((data) => callback && callback(data)).catch((err) => {\n      if (err.name === \"AbortError\" && ontimeout) {\n        ontimeout();\n      } else {\n        callback && callback(null);\n      }\n    });\n    return controller;\n  }\n  static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback) {\n    req.timeout = timeout;\n    req.open(method, endPoint);\n    req.onload = () => {\n      let response = this.parseJSON(req.responseText);\n      callback && callback(response);\n    };\n    if (ontimeout) {\n      req.ontimeout = ontimeout;\n    }\n    req.onprogress = () => {\n    };\n    req.send(body);\n    return req;\n  }\n  static xhrRequest(req, method, endPoint, headers, body, timeout, ontimeout, callback) {\n    req.open(method, endPoint, true);\n    req.timeout = timeout;\n    for (let [key, value] of Object.entries(headers)) {\n      req.setRequestHeader(key, value);\n    }\n    req.onerror = () => callback && callback(null);\n    req.onreadystatechange = () => {\n      if (req.readyState === XHR_STATES.complete && callback) {\n        let response = this.parseJSON(req.responseText);\n        callback(response);\n      }\n    };\n    if (ontimeout) {\n      req.ontimeout = ontimeout;\n    }\n    req.send(body);\n    return req;\n  }\n  static parseJSON(resp) {\n    if (!resp || resp === \"\") {\n      return null;\n    }\n    try {\n      return JSON.parse(resp);\n    } catch {\n      console && console.log(\"failed to parse JSON response\", resp);\n      return null;\n    }\n  }\n  static serialize(obj, parentKey) {\n    let queryStr = [];\n    for (var key in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n        continue;\n      }\n      let paramKey = parentKey ? `${parentKey}[${key}]` : key;\n      let paramVal = obj[key];\n      if (typeof paramVal === \"object\") {\n        queryStr.push(this.serialize(paramVal, paramKey));\n      } else {\n        queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal));\n      }\n    }\n    return queryStr.join(\"&\");\n  }\n  static appendParams(url, params) {\n    if (Object.keys(params).length === 0) {\n      return url;\n    }\n    let prefix = url.match(/\\?/) ? \"&\" : \"?\";\n    return `${url}${prefix}${this.serialize(params)}`;\n  }\n};\n\n// js/phoenix/longpoll.js\nvar arrayBufferToBase64 = (buffer) => {\n  let binary = \"\";\n  let bytes = new Uint8Array(buffer);\n  let len = bytes.byteLength;\n  for (let i = 0; i < len; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return btoa(binary);\n};\nvar LongPoll = class {\n  constructor(endPoint, protocols) {\n    if (protocols && protocols.length === 2 && protocols[1].startsWith(AUTH_TOKEN_PREFIX)) {\n      this.authToken = atob(protocols[1].slice(AUTH_TOKEN_PREFIX.length));\n    }\n    this.endPoint = null;\n    this.token = null;\n    this.skipHeartbeat = true;\n    this.reqs = /* @__PURE__ */ new Set();\n    this.awaitingBatchAck = false;\n    this.currentBatch = null;\n    this.currentBatchTimer = null;\n    this.batchBuffer = [];\n    this.onopen = function() {\n    };\n    this.onerror = function() {\n    };\n    this.onmessage = function() {\n    };\n    this.onclose = function() {\n    };\n    this.pollEndpoint = this.normalizeEndpoint(endPoint);\n    this.readyState = SOCKET_STATES.connecting;\n    setTimeout(() => this.poll(), 0);\n  }\n  normalizeEndpoint(endPoint) {\n    return endPoint.replace(\"ws://\", \"http://\").replace(\"wss://\", \"https://\").replace(new RegExp(\"(.*)/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll);\n  }\n  endpointURL() {\n    return Ajax.appendParams(this.pollEndpoint, { token: this.token });\n  }\n  closeAndRetry(code, reason, wasClean) {\n    this.close(code, reason, wasClean);\n    this.readyState = SOCKET_STATES.connecting;\n  }\n  ontimeout() {\n    this.onerror(\"timeout\");\n    this.closeAndRetry(1005, \"timeout\", false);\n  }\n  isActive() {\n    return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting;\n  }\n  poll() {\n    const headers = { \"Accept\": \"application/json\" };\n    if (this.authToken) {\n      headers[\"X-Phoenix-AuthToken\"] = this.authToken;\n    }\n    this.ajax(\"GET\", headers, null, () => this.ontimeout(), (resp) => {\n      if (resp) {\n        var { status, token, messages } = resp;\n        if (status === 410 && this.token !== null) {\n          this.onerror(410);\n          this.closeAndRetry(3410, \"session_gone\", false);\n          return;\n        }\n        this.token = token;\n      } else {\n        status = 0;\n      }\n      switch (status) {\n        case 200:\n          messages.forEach((msg) => {\n            setTimeout(() => this.onmessage({ data: msg }), 0);\n          });\n          this.poll();\n          break;\n        case 204:\n          this.poll();\n          break;\n        case 410:\n          this.readyState = SOCKET_STATES.open;\n          this.onopen({});\n          this.poll();\n          break;\n        case 403:\n          this.onerror(403);\n          this.close(1008, \"forbidden\", false);\n          break;\n        case 0:\n        case 500:\n          this.onerror(500);\n          this.closeAndRetry(1011, \"internal server error\", 500);\n          break;\n        default:\n          throw new Error(`unhandled poll status ${status}`);\n      }\n    });\n  }\n  // we collect all pushes within the current event loop by\n  // setTimeout 0, which optimizes back-to-back procedural\n  // pushes against an empty buffer\n  send(body) {\n    if (typeof body !== \"string\") {\n      body = arrayBufferToBase64(body);\n    }\n    if (this.currentBatch) {\n      this.currentBatch.push(body);\n    } else if (this.awaitingBatchAck) {\n      this.batchBuffer.push(body);\n    } else {\n      this.currentBatch = [body];\n      this.currentBatchTimer = setTimeout(() => {\n        this.batchSend(this.currentBatch);\n        this.currentBatch = null;\n      }, 0);\n    }\n  }\n  batchSend(messages) {\n    this.awaitingBatchAck = true;\n    this.ajax(\"POST\", { \"Content-Type\": \"application/x-ndjson\" }, messages.join(\"\\n\"), () => this.onerror(\"timeout\"), (resp) => {\n      this.awaitingBatchAck = false;\n      if (!resp || resp.status !== 200) {\n        this.onerror(resp && resp.status);\n        this.closeAndRetry(1011, \"internal server error\", false);\n      } else if (this.batchBuffer.length > 0) {\n        this.batchSend(this.batchBuffer);\n        this.batchBuffer = [];\n      }\n    });\n  }\n  close(code, reason, wasClean) {\n    for (let req of this.reqs) {\n      req.abort();\n    }\n    this.readyState = SOCKET_STATES.closed;\n    let opts = Object.assign({ code: 1e3, reason: void 0, wasClean: true }, { code, reason, wasClean });\n    this.batchBuffer = [];\n    clearTimeout(this.currentBatchTimer);\n    this.currentBatchTimer = null;\n    if (typeof CloseEvent !== \"undefined\") {\n      this.onclose(new CloseEvent(\"close\", opts));\n    } else {\n      this.onclose(opts);\n    }\n  }\n  ajax(method, headers, body, onCallerTimeout, callback) {\n    let req;\n    let ontimeout = () => {\n      this.reqs.delete(req);\n      onCallerTimeout();\n    };\n    req = Ajax.request(method, this.endpointURL(), headers, body, this.timeout, ontimeout, (resp) => {\n      this.reqs.delete(req);\n      if (this.isActive()) {\n        callback(resp);\n      }\n    });\n    this.reqs.add(req);\n  }\n};\n\n// js/phoenix/presence.js\nvar Presence = class {\n  constructor(channel, opts = {}) {\n    let events = opts.events || { state: \"presence_state\", diff: \"presence_diff\" };\n    this.state = {};\n    this.pendingDiffs = [];\n    this.channel = channel;\n    this.joinRef = null;\n    this.caller = {\n      onJoin: function() {\n      },\n      onLeave: function() {\n      },\n      onSync: function() {\n      }\n    };\n    this.channel.on(events.state, (newState) => {\n      let { onJoin, onLeave, onSync } = this.caller;\n      this.joinRef = this.channel.joinRef();\n      this.state = Presence.syncState(this.state, newState, onJoin, onLeave);\n      this.pendingDiffs.forEach((diff) => {\n        this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n      });\n      this.pendingDiffs = [];\n      onSync();\n    });\n    this.channel.on(events.diff, (diff) => {\n      let { onJoin, onLeave, onSync } = this.caller;\n      if (this.inPendingSyncState()) {\n        this.pendingDiffs.push(diff);\n      } else {\n        this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n        onSync();\n      }\n    });\n  }\n  onJoin(callback) {\n    this.caller.onJoin = callback;\n  }\n  onLeave(callback) {\n    this.caller.onLeave = callback;\n  }\n  onSync(callback) {\n    this.caller.onSync = callback;\n  }\n  list(by) {\n    return Presence.list(this.state, by);\n  }\n  inPendingSyncState() {\n    return !this.joinRef || this.joinRef !== this.channel.joinRef();\n  }\n  // lower-level public static API\n  /**\n   * Used to sync the list of presences on the server\n   * with the client's state. An optional `onJoin` and `onLeave` callback can\n   * be provided to react to changes in the client's local presences across\n   * disconnects and reconnects with the server.\n   *\n   * @returns {Presence}\n   */\n  static syncState(currentState, newState, onJoin, onLeave) {\n    let state = this.clone(currentState);\n    let joins = {};\n    let leaves = {};\n    this.map(state, (key, presence) => {\n      if (!newState[key]) {\n        leaves[key] = presence;\n      }\n    });\n    this.map(newState, (key, newPresence) => {\n      let currentPresence = state[key];\n      if (currentPresence) {\n        let newRefs = newPresence.metas.map((m) => m.phx_ref);\n        let curRefs = currentPresence.metas.map((m) => m.phx_ref);\n        let joinedMetas = newPresence.metas.filter((m) => curRefs.indexOf(m.phx_ref) < 0);\n        let leftMetas = currentPresence.metas.filter((m) => newRefs.indexOf(m.phx_ref) < 0);\n        if (joinedMetas.length > 0) {\n          joins[key] = newPresence;\n          joins[key].metas = joinedMetas;\n        }\n        if (leftMetas.length > 0) {\n          leaves[key] = this.clone(currentPresence);\n          leaves[key].metas = leftMetas;\n        }\n      } else {\n        joins[key] = newPresence;\n      }\n    });\n    return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n  }\n  /**\n   *\n   * Used to sync a diff of presence join and leave\n   * events from the server, as they happen. Like `syncState`, `syncDiff`\n   * accepts optional `onJoin` and `onLeave` callbacks to react to a user\n   * joining or leaving from a device.\n   *\n   * @returns {Presence}\n   */\n  static syncDiff(state, diff, onJoin, onLeave) {\n    let { joins, leaves } = this.clone(diff);\n    if (!onJoin) {\n      onJoin = function() {\n      };\n    }\n    if (!onLeave) {\n      onLeave = function() {\n      };\n    }\n    this.map(joins, (key, newPresence) => {\n      let currentPresence = state[key];\n      state[key] = this.clone(newPresence);\n      if (currentPresence) {\n        let joinedRefs = state[key].metas.map((m) => m.phx_ref);\n        let curMetas = currentPresence.metas.filter((m) => joinedRefs.indexOf(m.phx_ref) < 0);\n        state[key].metas.unshift(...curMetas);\n      }\n      onJoin(key, currentPresence, newPresence);\n    });\n    this.map(leaves, (key, leftPresence) => {\n      let currentPresence = state[key];\n      if (!currentPresence) {\n        return;\n      }\n      let refsToRemove = leftPresence.metas.map((m) => m.phx_ref);\n      currentPresence.metas = currentPresence.metas.filter((p) => {\n        return refsToRemove.indexOf(p.phx_ref) < 0;\n      });\n      onLeave(key, currentPresence, leftPresence);\n      if (currentPresence.metas.length === 0) {\n        delete state[key];\n      }\n    });\n    return state;\n  }\n  /**\n   * Returns the array of presences, with selected metadata.\n   *\n   * @param {Object} presences\n   * @param {Function} chooser\n   *\n   * @returns {Presence}\n   */\n  static list(presences, chooser) {\n    if (!chooser) {\n      chooser = function(key, pres) {\n        return pres;\n      };\n    }\n    return this.map(presences, (key, presence) => {\n      return chooser(key, presence);\n    });\n  }\n  // private\n  static map(obj, func) {\n    return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n  }\n  static clone(obj) {\n    return JSON.parse(JSON.stringify(obj));\n  }\n};\n\n// js/phoenix/serializer.js\nvar serializer_default = {\n  HEADER_LENGTH: 1,\n  META_LENGTH: 4,\n  KINDS: { push: 0, reply: 1, broadcast: 2 },\n  encode(msg, callback) {\n    if (msg.payload.constructor === ArrayBuffer) {\n      return callback(this.binaryEncode(msg));\n    } else {\n      let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n      return callback(JSON.stringify(payload));\n    }\n  },\n  decode(rawPayload, callback) {\n    if (rawPayload.constructor === ArrayBuffer) {\n      return callback(this.binaryDecode(rawPayload));\n    } else {\n      let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload);\n      return callback({ join_ref, ref, topic, event, payload });\n    }\n  },\n  // private\n  binaryEncode(message) {\n    let { join_ref, ref, event, topic, payload } = message;\n    let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length;\n    let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n    let view = new DataView(header);\n    let offset = 0;\n    view.setUint8(offset++, this.KINDS.push);\n    view.setUint8(offset++, join_ref.length);\n    view.setUint8(offset++, ref.length);\n    view.setUint8(offset++, topic.length);\n    view.setUint8(offset++, event.length);\n    Array.from(join_ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(event, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    var combined = new Uint8Array(header.byteLength + payload.byteLength);\n    combined.set(new Uint8Array(header), 0);\n    combined.set(new Uint8Array(payload), header.byteLength);\n    return combined.buffer;\n  },\n  binaryDecode(buffer) {\n    let view = new DataView(buffer);\n    let kind = view.getUint8(0);\n    let decoder = new TextDecoder();\n    switch (kind) {\n      case this.KINDS.push:\n        return this.decodePush(buffer, view, decoder);\n      case this.KINDS.reply:\n        return this.decodeReply(buffer, view, decoder);\n      case this.KINDS.broadcast:\n        return this.decodeBroadcast(buffer, view, decoder);\n    }\n  },\n  decodePush(buffer, view, decoder) {\n    let joinRefSize = view.getUint8(1);\n    let topicSize = view.getUint8(2);\n    let eventSize = view.getUint8(3);\n    let offset = this.HEADER_LENGTH + this.META_LENGTH - 1;\n    let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n    offset = offset + joinRefSize;\n    let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n    offset = offset + eventSize;\n    let data = buffer.slice(offset, buffer.byteLength);\n    return { join_ref: joinRef, ref: null, topic, event, payload: data };\n  },\n  decodeReply(buffer, view, decoder) {\n    let joinRefSize = view.getUint8(1);\n    let refSize = view.getUint8(2);\n    let topicSize = view.getUint8(3);\n    let eventSize = view.getUint8(4);\n    let offset = this.HEADER_LENGTH + this.META_LENGTH;\n    let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n    offset = offset + joinRefSize;\n    let ref = decoder.decode(buffer.slice(offset, offset + refSize));\n    offset = offset + refSize;\n    let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n    offset = offset + eventSize;\n    let data = buffer.slice(offset, buffer.byteLength);\n    let payload = { status: event, response: data };\n    return { join_ref: joinRef, ref, topic, event: CHANNEL_EVENTS.reply, payload };\n  },\n  decodeBroadcast(buffer, view, decoder) {\n    let topicSize = view.getUint8(1);\n    let eventSize = view.getUint8(2);\n    let offset = this.HEADER_LENGTH + 2;\n    let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n    offset = offset + eventSize;\n    let data = buffer.slice(offset, buffer.byteLength);\n    return { join_ref: null, ref: null, topic, event, payload: data };\n  }\n};\n\n// js/phoenix/socket.js\nvar Socket = class {\n  constructor(endPoint, opts = {}) {\n    this.stateChangeCallbacks = { open: [], close: [], error: [], message: [] };\n    this.channels = [];\n    this.sendBuffer = [];\n    this.ref = 0;\n    this.fallbackRef = null;\n    this.timeout = opts.timeout || DEFAULT_TIMEOUT;\n    this.transport = opts.transport || global.WebSocket || LongPoll;\n    this.primaryPassedHealthCheck = false;\n    this.longPollFallbackMs = opts.longPollFallbackMs;\n    this.fallbackTimer = null;\n    this.sessionStore = opts.sessionStorage || global && global.sessionStorage;\n    this.establishedConnections = 0;\n    this.defaultEncoder = serializer_default.encode.bind(serializer_default);\n    this.defaultDecoder = serializer_default.decode.bind(serializer_default);\n    this.closeWasClean = false;\n    this.disconnecting = false;\n    this.binaryType = opts.binaryType || \"arraybuffer\";\n    this.connectClock = 1;\n    this.pageHidden = false;\n    if (this.transport !== LongPoll) {\n      this.encode = opts.encode || this.defaultEncoder;\n      this.decode = opts.decode || this.defaultDecoder;\n    } else {\n      this.encode = this.defaultEncoder;\n      this.decode = this.defaultDecoder;\n    }\n    let awaitingConnectionOnPageShow = null;\n    if (phxWindow && phxWindow.addEventListener) {\n      phxWindow.addEventListener(\"pagehide\", (_e) => {\n        if (this.conn) {\n          this.disconnect();\n          awaitingConnectionOnPageShow = this.connectClock;\n        }\n      });\n      phxWindow.addEventListener(\"pageshow\", (_e) => {\n        if (awaitingConnectionOnPageShow === this.connectClock) {\n          awaitingConnectionOnPageShow = null;\n          this.connect();\n        }\n      });\n      phxWindow.addEventListener(\"visibilitychange\", () => {\n        if (document.visibilityState === \"hidden\") {\n          this.pageHidden = true;\n        } else {\n          this.pageHidden = false;\n          if (!this.isConnected()) {\n            this.teardown(() => this.connect());\n          }\n        }\n      });\n    }\n    this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 3e4;\n    this.rejoinAfterMs = (tries) => {\n      if (opts.rejoinAfterMs) {\n        return opts.rejoinAfterMs(tries);\n      } else {\n        return [1e3, 2e3, 5e3][tries - 1] || 1e4;\n      }\n    };\n    this.reconnectAfterMs = (tries) => {\n      if (opts.reconnectAfterMs) {\n        return opts.reconnectAfterMs(tries);\n      } else {\n        return [10, 50, 100, 150, 200, 250, 500, 1e3, 2e3][tries - 1] || 5e3;\n      }\n    };\n    this.logger = opts.logger || null;\n    if (!this.logger && opts.debug) {\n      this.logger = (kind, msg, data) => {\n        console.log(`${kind}: ${msg}`, data);\n      };\n    }\n    this.longpollerTimeout = opts.longpollerTimeout || 2e4;\n    this.params = closure(opts.params || {});\n    this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n    this.vsn = opts.vsn || DEFAULT_VSN;\n    this.heartbeatTimeoutTimer = null;\n    this.heartbeatTimer = null;\n    this.pendingHeartbeatRef = null;\n    this.reconnectTimer = new Timer(() => {\n      if (this.pageHidden) {\n        this.log(\"Not reconnecting as page is hidden!\");\n        this.teardown();\n        return;\n      }\n      this.teardown(() => this.connect());\n    }, this.reconnectAfterMs);\n    this.authToken = opts.authToken;\n  }\n  /**\n   * Returns the LongPoll transport reference\n   */\n  getLongPollTransport() {\n    return LongPoll;\n  }\n  /**\n   * Disconnects and replaces the active transport\n   *\n   * @param {Function} newTransport - The new transport class to instantiate\n   *\n   */\n  replaceTransport(newTransport) {\n    this.connectClock++;\n    this.closeWasClean = true;\n    clearTimeout(this.fallbackTimer);\n    this.reconnectTimer.reset();\n    if (this.conn) {\n      this.conn.close();\n      this.conn = null;\n    }\n    this.transport = newTransport;\n  }\n  /**\n   * Returns the socket protocol\n   *\n   * @returns {string}\n   */\n  protocol() {\n    return location.protocol.match(/^https/) ? \"wss\" : \"ws\";\n  }\n  /**\n   * The fully qualified socket url\n   *\n   * @returns {string}\n   */\n  endPointURL() {\n    let uri = Ajax.appendParams(\n      Ajax.appendParams(this.endPoint, this.params()),\n      { vsn: this.vsn }\n    );\n    if (uri.charAt(0) !== \"/\") {\n      return uri;\n    }\n    if (uri.charAt(1) === \"/\") {\n      return `${this.protocol()}:${uri}`;\n    }\n    return `${this.protocol()}://${location.host}${uri}`;\n  }\n  /**\n   * Disconnects the socket\n   *\n   * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.\n   *\n   * @param {Function} callback - Optional callback which is called after socket is disconnected.\n   * @param {integer} code - A status code for disconnection (Optional).\n   * @param {string} reason - A textual description of the reason to disconnect. (Optional)\n   */\n  disconnect(callback, code, reason) {\n    this.connectClock++;\n    this.disconnecting = true;\n    this.closeWasClean = true;\n    clearTimeout(this.fallbackTimer);\n    this.reconnectTimer.reset();\n    this.teardown(() => {\n      this.disconnecting = false;\n      callback && callback();\n    }, code, reason);\n  }\n  /**\n   *\n   * @param {Object} params - The params to send when connecting, for example `{user_id: userToken}`\n   *\n   * Passing params to connect is deprecated; pass them in the Socket constructor instead:\n   * `new Socket(\"/socket\", {params: {user_id: userToken}})`.\n   */\n  connect(params) {\n    if (params) {\n      console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\");\n      this.params = closure(params);\n    }\n    if (this.conn && !this.disconnecting) {\n      return;\n    }\n    if (this.longPollFallbackMs && this.transport !== LongPoll) {\n      this.connectWithFallback(LongPoll, this.longPollFallbackMs);\n    } else {\n      this.transportConnect();\n    }\n  }\n  /**\n   * Logs the message. Override `this.logger` for specialized logging. noops by default\n   * @param {string} kind\n   * @param {string} msg\n   * @param {Object} data\n   */\n  log(kind, msg, data) {\n    this.logger && this.logger(kind, msg, data);\n  }\n  /**\n   * Returns true if a logger has been set on this socket.\n   */\n  hasLogger() {\n    return this.logger !== null;\n  }\n  /**\n   * Registers callbacks for connection open events\n   *\n   * @example socket.onOpen(function(){ console.info(\"the socket was opened\") })\n   *\n   * @param {Function} callback\n   */\n  onOpen(callback) {\n    let ref = this.makeRef();\n    this.stateChangeCallbacks.open.push([ref, callback]);\n    return ref;\n  }\n  /**\n   * Registers callbacks for connection close events\n   * @param {Function} callback\n   */\n  onClose(callback) {\n    let ref = this.makeRef();\n    this.stateChangeCallbacks.close.push([ref, callback]);\n    return ref;\n  }\n  /**\n   * Registers callbacks for connection error events\n   *\n   * @example socket.onError(function(error){ alert(\"An error occurred\") })\n   *\n   * @param {Function} callback\n   */\n  onError(callback) {\n    let ref = this.makeRef();\n    this.stateChangeCallbacks.error.push([ref, callback]);\n    return ref;\n  }\n  /**\n   * Registers callbacks for connection message events\n   * @param {Function} callback\n   */\n  onMessage(callback) {\n    let ref = this.makeRef();\n    this.stateChangeCallbacks.message.push([ref, callback]);\n    return ref;\n  }\n  /**\n   * Pings the server and invokes the callback with the RTT in milliseconds\n   * @param {Function} callback\n   *\n   * Returns true if the ping was pushed or false if unable to be pushed.\n   */\n  ping(callback) {\n    if (!this.isConnected()) {\n      return false;\n    }\n    let ref = this.makeRef();\n    let startTime = Date.now();\n    this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref });\n    let onMsgRef = this.onMessage((msg) => {\n      if (msg.ref === ref) {\n        this.off([onMsgRef]);\n        callback(Date.now() - startTime);\n      }\n    });\n    return true;\n  }\n  /**\n   * @private\n   */\n  transportConnect() {\n    this.connectClock++;\n    this.closeWasClean = false;\n    let protocols = void 0;\n    if (this.authToken) {\n      protocols = [\"phoenix\", `${AUTH_TOKEN_PREFIX}${btoa(this.authToken).replace(/=/g, \"\")}`];\n    }\n    this.conn = new this.transport(this.endPointURL(), protocols);\n    this.conn.binaryType = this.binaryType;\n    this.conn.timeout = this.longpollerTimeout;\n    this.conn.onopen = () => this.onConnOpen();\n    this.conn.onerror = (error) => this.onConnError(error);\n    this.conn.onmessage = (event) => this.onConnMessage(event);\n    this.conn.onclose = (event) => this.onConnClose(event);\n  }\n  getSession(key) {\n    return this.sessionStore && this.sessionStore.getItem(key);\n  }\n  storeSession(key, val) {\n    this.sessionStore && this.sessionStore.setItem(key, val);\n  }\n  connectWithFallback(fallbackTransport, fallbackThreshold = 2500) {\n    clearTimeout(this.fallbackTimer);\n    let established = false;\n    let primaryTransport = true;\n    let openRef, errorRef;\n    let fallback = (reason) => {\n      this.log(\"transport\", `falling back to ${fallbackTransport.name}...`, reason);\n      this.off([openRef, errorRef]);\n      primaryTransport = false;\n      this.replaceTransport(fallbackTransport);\n      this.transportConnect();\n    };\n    if (this.getSession(`phx:fallback:${fallbackTransport.name}`)) {\n      return fallback(\"memorized\");\n    }\n    this.fallbackTimer = setTimeout(fallback, fallbackThreshold);\n    errorRef = this.onError((reason) => {\n      this.log(\"transport\", \"error\", reason);\n      if (primaryTransport && !established) {\n        clearTimeout(this.fallbackTimer);\n        fallback(reason);\n      }\n    });\n    if (this.fallbackRef) {\n      this.off([this.fallbackRef]);\n    }\n    this.fallbackRef = this.onOpen(() => {\n      established = true;\n      if (!primaryTransport) {\n        if (!this.primaryPassedHealthCheck) {\n          this.storeSession(`phx:fallback:${fallbackTransport.name}`, \"true\");\n        }\n        return this.log(\"transport\", `established ${fallbackTransport.name} fallback`);\n      }\n      clearTimeout(this.fallbackTimer);\n      this.fallbackTimer = setTimeout(fallback, fallbackThreshold);\n      this.ping((rtt) => {\n        this.log(\"transport\", \"connected to primary after\", rtt);\n        this.primaryPassedHealthCheck = true;\n        clearTimeout(this.fallbackTimer);\n      });\n    });\n    this.transportConnect();\n  }\n  clearHeartbeats() {\n    clearTimeout(this.heartbeatTimer);\n    clearTimeout(this.heartbeatTimeoutTimer);\n  }\n  onConnOpen() {\n    if (this.hasLogger())\n      this.log(\"transport\", `${this.transport.name} connected to ${this.endPointURL()}`);\n    this.closeWasClean = false;\n    this.disconnecting = false;\n    this.establishedConnections++;\n    this.flushSendBuffer();\n    this.reconnectTimer.reset();\n    this.resetHeartbeat();\n    this.stateChangeCallbacks.open.forEach(([, callback]) => callback());\n  }\n  /**\n   * @private\n   */\n  heartbeatTimeout() {\n    if (this.pendingHeartbeatRef) {\n      this.pendingHeartbeatRef = null;\n      if (this.hasLogger()) {\n        this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n      }\n      this.triggerChanError();\n      this.closeWasClean = false;\n      this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\");\n    }\n  }\n  resetHeartbeat() {\n    if (this.conn && this.conn.skipHeartbeat) {\n      return;\n    }\n    this.pendingHeartbeatRef = null;\n    this.clearHeartbeats();\n    this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n  }\n  teardown(callback, code, reason) {\n    if (!this.conn) {\n      return callback && callback();\n    }\n    let connectClock = this.connectClock;\n    this.waitForBufferDone(() => {\n      if (connectClock !== this.connectClock) {\n        return;\n      }\n      if (this.conn) {\n        if (code) {\n          this.conn.close(code, reason || \"\");\n        } else {\n          this.conn.close();\n        }\n      }\n      this.waitForSocketClosed(() => {\n        if (connectClock !== this.connectClock) {\n          return;\n        }\n        if (this.conn) {\n          this.conn.onopen = function() {\n          };\n          this.conn.onerror = function() {\n          };\n          this.conn.onmessage = function() {\n          };\n          this.conn.onclose = function() {\n          };\n          this.conn = null;\n        }\n        callback && callback();\n      });\n    });\n  }\n  waitForBufferDone(callback, tries = 1) {\n    if (tries === 5 || !this.conn || !this.conn.bufferedAmount) {\n      callback();\n      return;\n    }\n    setTimeout(() => {\n      this.waitForBufferDone(callback, tries + 1);\n    }, 150 * tries);\n  }\n  waitForSocketClosed(callback, tries = 1) {\n    if (tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed) {\n      callback();\n      return;\n    }\n    setTimeout(() => {\n      this.waitForSocketClosed(callback, tries + 1);\n    }, 150 * tries);\n  }\n  onConnClose(event) {\n    if (this.conn)\n      this.conn.onclose = () => {\n      };\n    let closeCode = event && event.code;\n    if (this.hasLogger())\n      this.log(\"transport\", \"close\", event);\n    this.triggerChanError();\n    this.clearHeartbeats();\n    if (!this.closeWasClean && closeCode !== 1e3) {\n      this.reconnectTimer.scheduleTimeout();\n    }\n    this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event));\n  }\n  /**\n   * @private\n   */\n  onConnError(error) {\n    if (this.hasLogger())\n      this.log(\"transport\", error);\n    let transportBefore = this.transport;\n    let establishedBefore = this.establishedConnections;\n    this.stateChangeCallbacks.error.forEach(([, callback]) => {\n      callback(error, transportBefore, establishedBefore);\n    });\n    if (transportBefore === this.transport || establishedBefore > 0) {\n      this.triggerChanError();\n    }\n  }\n  /**\n   * @private\n   */\n  triggerChanError() {\n    this.channels.forEach((channel) => {\n      if (!(channel.isErrored() || channel.isLeaving() || channel.isClosed())) {\n        channel.trigger(CHANNEL_EVENTS.error);\n      }\n    });\n  }\n  /**\n   * @returns {string}\n   */\n  connectionState() {\n    switch (this.conn && this.conn.readyState) {\n      case SOCKET_STATES.connecting:\n        return \"connecting\";\n      case SOCKET_STATES.open:\n        return \"open\";\n      case SOCKET_STATES.closing:\n        return \"closing\";\n      default:\n        return \"closed\";\n    }\n  }\n  /**\n   * @returns {boolean}\n   */\n  isConnected() {\n    return this.connectionState() === \"open\";\n  }\n  /**\n   * @private\n   *\n   * @param {Channel}\n   */\n  remove(channel) {\n    this.off(channel.stateChangeRefs);\n    this.channels = this.channels.filter((c) => c !== channel);\n  }\n  /**\n   * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.\n   *\n   * @param {refs} - list of refs returned by calls to\n   *                 `onOpen`, `onClose`, `onError,` and `onMessage`\n   */\n  off(refs) {\n    for (let key in this.stateChangeCallbacks) {\n      this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n        return refs.indexOf(ref) === -1;\n      });\n    }\n  }\n  /**\n   * Initiates a new channel for the given topic\n   *\n   * @param {string} topic\n   * @param {Object} chanParams - Parameters for the channel\n   * @returns {Channel}\n   */\n  channel(topic, chanParams = {}) {\n    let chan = new Channel(topic, chanParams, this);\n    this.channels.push(chan);\n    return chan;\n  }\n  /**\n   * @param {Object} data\n   */\n  push(data) {\n    if (this.hasLogger()) {\n      let { topic, event, payload, ref, join_ref } = data;\n      this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload);\n    }\n    if (this.isConnected()) {\n      this.encode(data, (result) => this.conn.send(result));\n    } else {\n      this.sendBuffer.push(() => this.encode(data, (result) => this.conn.send(result)));\n    }\n  }\n  /**\n   * Return the next message ref, accounting for overflows\n   * @returns {string}\n   */\n  makeRef() {\n    let newRef = this.ref + 1;\n    if (newRef === this.ref) {\n      this.ref = 0;\n    } else {\n      this.ref = newRef;\n    }\n    return this.ref.toString();\n  }\n  sendHeartbeat() {\n    if (this.pendingHeartbeatRef && !this.isConnected()) {\n      return;\n    }\n    this.pendingHeartbeatRef = this.makeRef();\n    this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef });\n    this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs);\n  }\n  flushSendBuffer() {\n    if (this.isConnected() && this.sendBuffer.length > 0) {\n      this.sendBuffer.forEach((callback) => callback());\n      this.sendBuffer = [];\n    }\n  }\n  onConnMessage(rawMessage) {\n    this.decode(rawMessage.data, (msg) => {\n      let { topic, event, payload, ref, join_ref } = msg;\n      if (ref && ref === this.pendingHeartbeatRef) {\n        this.clearHeartbeats();\n        this.pendingHeartbeatRef = null;\n        this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n      }\n      if (this.hasLogger())\n        this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n      for (let i = 0; i < this.channels.length; i++) {\n        const channel = this.channels[i];\n        if (!channel.isMember(topic, event, payload, join_ref)) {\n          continue;\n        }\n        channel.trigger(event, payload, ref, join_ref);\n      }\n      for (let i = 0; i < this.stateChangeCallbacks.message.length; i++) {\n        let [, callback] = this.stateChangeCallbacks.message[i];\n        callback(msg);\n      }\n    });\n  }\n  leaveOpenTopic(topic) {\n    let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));\n    if (dupChannel) {\n      if (this.hasLogger())\n        this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n      dupChannel.leave();\n    }\n  }\n};\nexport {\n  Channel,\n  LongPoll,\n  Presence,\n  serializer_default as Serializer,\n  Socket\n};\n//# sourceMappingURL=phoenix.mjs.map\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","'use strict';\nrequire('../../modules/es.function.bind');\nrequire('../../modules/es.function.name');\nrequire('../../modules/es.function.has-instance');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Function;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * A React component for the font-awesome icon library.\n *\n * @param {String} [ariaLabel] An extra accessibility label to put on the icon\n * @param {Boolean} [border=false] Whether or not to show a border radius\n * @param {String} [className] An extra set of CSS classes to add to the component\n * @param {Object} [cssModule] Option to pass FontAwesome CSS as a module\n * @param {Boolean} [fixedWidth=false] Make buttons fixed width\n * @param {String} [flip=false] Flip the icon's orientation.\n * @param {Boolean} [inverse=false] Inverse the icon's color\n * @param {String} [name] Name of the icon to use\n * @param {Boolean} [pulse=false] Rotate icon with 8 steps, rather than smoothly\n * @param {Number} [rotate] The degress to rotate the icon by\n * @param {String} [size] The icon scaling size\n * @param {Boolean} [spin=false] Spin the icon\n * @param {String} [stack] Stack an icon on top of another. Arguments specify z-index such as '1x' See documentation for example http://fontawesome.io/examples/#stacked\n * @param {String} [tag=span] The HTML tag to use as a string, eg 'i' or 'em'\n * @module FontAwesome\n * @type {ReactClass}\n */\nvar FontAwesome = function (_React$Component) {\n  _inherits(FontAwesome, _React$Component);\n\n  function FontAwesome() {\n    _classCallCheck(this, FontAwesome);\n\n    var _this = _possibleConstructorReturn(this, (FontAwesome.__proto__ || Object.getPrototypeOf(FontAwesome)).call(this));\n\n    _this.displayName = 'FontAwesome';\n    return _this;\n  }\n\n  _createClass(FontAwesome, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          border = _props.border,\n          cssModule = _props.cssModule,\n          className = _props.className,\n          fixedWidth = _props.fixedWidth,\n          flip = _props.flip,\n          inverse = _props.inverse,\n          name = _props.name,\n          pulse = _props.pulse,\n          rotate = _props.rotate,\n          size = _props.size,\n          spin = _props.spin,\n          stack = _props.stack,\n          _props$tag = _props.tag,\n          tag = _props$tag === undefined ? 'span' : _props$tag,\n          ariaLabel = _props.ariaLabel,\n          props = _objectWithoutProperties(_props, ['border', 'cssModule', 'className', 'fixedWidth', 'flip', 'inverse', 'name', 'pulse', 'rotate', 'size', 'spin', 'stack', 'tag', 'ariaLabel']);\n\n      var ariaProps = ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': true };\n      var classNames = [];\n\n      if (cssModule) {\n        classNames.push(cssModule['fa']);\n        classNames.push(cssModule['fa-' + name]);\n        size && classNames.push(cssModule['fa-' + size]);\n        spin && classNames.push(cssModule['fa-spin']);\n        pulse && classNames.push(cssModule['fa-pulse']);\n        border && classNames.push(cssModule['fa-border']);\n        fixedWidth && classNames.push(cssModule['fa-fw']);\n        inverse && classNames.push(cssModule['fa-inverse']);\n        flip && classNames.push(cssModule['fa-flip-' + flip]);\n        rotate && classNames.push(cssModule['fa-rotate-' + rotate]);\n        stack && classNames.push(cssModule['fa-stack-' + stack]);\n      } else {\n        classNames.push('fa');\n        classNames.push('fa-' + name);\n        size && classNames.push('fa-' + size);\n        spin && classNames.push('fa-spin');\n        pulse && classNames.push('fa-pulse');\n        border && classNames.push('fa-border');\n        fixedWidth && classNames.push('fa-fw');\n        inverse && classNames.push('fa-inverse');\n        flip && classNames.push('fa-flip-' + flip);\n        rotate && classNames.push('fa-rotate-' + rotate);\n        stack && classNames.push('fa-stack-' + stack);\n      }\n\n      // Add any custom class names at the end.\n      className && classNames.push(className);\n      return _react2.default.createElement(tag, _extends({}, props, ariaProps, {\n        className: classNames.join(' ')\n      }));\n    }\n  }]);\n\n  return FontAwesome;\n}(_react2.default.Component);\n\nFontAwesome.propTypes = {\n  ariaLabel: _propTypes2.default.string,\n  border: _propTypes2.default.bool,\n  className: _propTypes2.default.string,\n  cssModule: _propTypes2.default.object,\n  fixedWidth: _propTypes2.default.bool,\n  flip: _propTypes2.default.oneOf(['horizontal', 'vertical']),\n  inverse: _propTypes2.default.bool,\n  name: _propTypes2.default.string.isRequired,\n  pulse: _propTypes2.default.bool,\n  rotate: _propTypes2.default.oneOf([90, 180, 270]),\n  size: _propTypes2.default.oneOf(['lg', '2x', '3x', '4x', '5x']),\n  spin: _propTypes2.default.bool,\n  stack: _propTypes2.default.oneOf(['1x', '2x']),\n  tag: _propTypes2.default.string\n};\n\nexports.default = FontAwesome;\nmodule.exports = exports.default;","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalDataTrackClass = require('../localdatatrack');\nfunction LocalDataTrack(options) {\n    var track = new LocalDataTrackClass(options);\n    Object.setPrototypeOf(track, LocalDataTrack.prototype);\n    return track;\n}\ninherits(LocalDataTrack, LocalDataTrackClass);\nmodule.exports = LocalDataTrack;\n//# sourceMappingURL=localdatatrack.js.map","'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar parent = require('../../stable/regexp');\nrequire('../../modules/esnext.regexp.escape');\n\nmodule.exports = parent;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n  return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/*\n jQuery UI Sortable plugin wrapper\n\n @param [ui-sortable] {object} Options to pass to $.fn.sortable() merged onto ui.config\n */\nangular.module('ui.sortable', [])\n  .value('uiSortableConfig',{\n    // the default for jquery-ui sortable is \"> *\", we need to restrict this to\n    // ng-repeat items\n    // if the user uses\n    items: '> [ng-repeat],> [data-ng-repeat],> [x-ng-repeat]'\n  })\n  .directive('uiSortable', [\n    'uiSortableConfig', '$timeout', '$log',\n    function(uiSortableConfig, $timeout, $log) {\n      return {\n        require: '?ngModel',\n        scope: {\n          ngModel: '=',\n          uiSortable: '='\n        },\n        link: function(scope, element, attrs, ngModel) {\n          var savedNodes;\n\n          function combineCallbacks(first, second){\n            var firstIsFunc = typeof first === 'function';\n            var secondIsFunc = typeof second === 'function';\n            if(firstIsFunc && secondIsFunc) {\n              return function() {\n                first.apply(this, arguments);\n                second.apply(this, arguments);\n              };\n            } else if (secondIsFunc) {\n              return second;\n            }\n            return first;\n          }\n\n          function getSortableWidgetInstance(element) {\n            // this is a fix to support jquery-ui prior to v1.11.x\n            // otherwise we should be using `element.sortable('instance')`\n            var data = element.data('ui-sortable');\n            if (data && typeof data === 'object' && data.widgetFullName === 'ui-sortable') {\n              return data;\n            }\n            return null;\n          }\n\n          function patchSortableOption(key, value) {\n            if (callbacks[key]) {\n              if( key === 'stop' ){\n                // call apply after stop\n                value = combineCallbacks(\n                  value, function() { scope.$apply(); });\n\n                value = combineCallbacks(value, afterStop);\n              }\n              // wrap the callback\n              value = combineCallbacks(callbacks[key], value);\n            } else if (wrappers[key]) {\n              value = wrappers[key](value);\n            }\n\n            // patch the options that need to have values set\n            if (!value && (key === 'items' || key === 'ui-model-items')) {\n              value = uiSortableConfig.items;\n            }\n\n            return value;\n          }\n\n          function patchUISortableOptions(newVal, oldVal, sortableWidgetInstance) {\n            function addDummyOptionKey(value, key) {\n              if (!(key in opts)) {\n                // add the key in the opts object so that\n                // the patch function detects and handles it\n                opts[key] = null;\n              }\n            }\n            // for this directive to work we have to attach some callbacks\n            angular.forEach(callbacks, addDummyOptionKey);\n\n            // only initialize it in case we have to\n            // update some options of the sortable\n            var optsDiff = null;\n\n            if (oldVal) {\n              // reset deleted options to default\n              var defaultOptions;\n              angular.forEach(oldVal, function(oldValue, key) {\n                if (!newVal || !(key in newVal)) {\n                  if (key in directiveOpts) {\n                    if (key === 'ui-floating') {\n                      opts[key] = 'auto';\n                    } else {\n                      opts[key] = patchSortableOption(key, undefined);\n                    }\n                    return;\n                  }\n\n                  if (!defaultOptions) {\n                    defaultOptions = angular.element.ui.sortable().options;\n                  }\n                  var defaultValue = defaultOptions[key];\n                  defaultValue = patchSortableOption(key, defaultValue);\n\n                  if (!optsDiff) {\n                    optsDiff = {};\n                  }\n                  optsDiff[key] = defaultValue;\n                  opts[key] = defaultValue;\n                }\n              });\n            }\n\n            // update changed options\n            angular.forEach(newVal, function(value, key) {\n              // if it's a custom option of the directive,\n              // handle it approprietly\n              if (key in directiveOpts) {\n                if (key === 'ui-floating' && (value === false || value === true) && sortableWidgetInstance) {\n                  sortableWidgetInstance.floating = value;\n                }\n\n                opts[key] = patchSortableOption(key, value);\n                return;\n              }\n\n              value = patchSortableOption(key, value);\n\n              if (!optsDiff) {\n                optsDiff = {};\n              }\n              optsDiff[key] = value;\n              opts[key] = value;\n            });\n\n            return optsDiff;\n          }\n\n          function getPlaceholderElement (element) {\n            var placeholder = element.sortable('option','placeholder');\n\n            // placeholder.element will be a function if the placeholder, has\n            // been created (placeholder will be an object).  If it hasn't\n            // been created, either placeholder will be false if no\n            // placeholder class was given or placeholder.element will be\n            // undefined if a class was given (placeholder will be a string)\n            if (placeholder && placeholder.element && typeof placeholder.element === 'function') {\n              var result = placeholder.element();\n              // workaround for jquery ui 1.9.x,\n              // not returning jquery collection\n              result = angular.element(result);\n              return result;\n            }\n            return null;\n          }\n\n          function getPlaceholderExcludesludes (element, placeholder) {\n            // exact match with the placeholder's class attribute to handle\n            // the case that multiple connected sortables exist and\n            // the placeholder option equals the class of sortable items\n            var notCssSelector = opts['ui-model-items'].replace(/[^,]*>/g, '');\n            var excludes = element.find('[class=\"' + placeholder.attr('class') + '\"]:not(' + notCssSelector + ')');\n            return excludes;\n          }\n\n          function hasSortingHelper (element, ui) {\n            var helperOption = element.sortable('option','helper');\n            return helperOption === 'clone' || (typeof helperOption === 'function' && ui.item.sortable.isCustomHelperUsed());\n          }\n\n          function getSortingHelper (element, ui, savedNodes) {\n            var result = null;\n            if (hasSortingHelper(element, ui) &&\n                element.sortable( 'option', 'appendTo' ) === 'parent') {\n              // The .ui-sortable-helper element (that's the default class name)\n              // is placed last.\n              result = savedNodes.last();\n            }\n            return result;\n          }\n\n          // thanks jquery-ui\n          function isFloating (item) {\n            return (/left|right/).test(item.css('float')) || (/inline|table-cell/).test(item.css('display'));\n          }\n\n          function getElementContext(elementScopes, element) {\n            for (var i = 0; i < elementScopes.length; i++) {\n              var c = elementScopes[i];\n              if (c.element[0] === element[0]) {\n                return c;\n              }\n            }\n          }\n\n          function afterStop(e, ui) {\n            ui.item.sortable._destroy();\n          }\n\n          // return the index of ui.item among the items\n          // we can't just do ui.item.index() because there it might have siblings\n          // which are not items\n          function getItemIndex(item) {\n            return item.parent()\n              .find(opts['ui-model-items'])\n              .index(item);\n          }\n\n          var opts = {};\n\n          // directive specific options\n          var directiveOpts = {\n            'ui-floating': undefined,\n            'ui-model-items': uiSortableConfig.items\n          };\n\n          var callbacks = {\n            receive: null,\n            remove: null,\n            start: null,\n            stop: null,\n            update: null\n          };\n\n          var wrappers = {\n            helper: null\n          };\n\n          angular.extend(opts, directiveOpts, uiSortableConfig, scope.uiSortable);\n\n          if (!angular.element.fn || !angular.element.fn.jquery) {\n            $log.error('ui.sortable: jQuery should be included before AngularJS!');\n            return;\n          }\n\n          function wireUp () {\n            // When we add or remove elements, we need the sortable to 'refresh'\n            // so it can find the new/removed elements.\n            scope.$watchCollection('ngModel', function() {\n              // Timeout to let ng-repeat modify the DOM\n              $timeout(function() {\n                // ensure that the jquery-ui-sortable widget instance\n                // is still bound to the directive's element\n                if (!!getSortableWidgetInstance(element)) {\n                  element.sortable('refresh');\n                }\n              }, 0, false);\n            });\n\n            callbacks.start = function(e, ui) {\n              if (opts['ui-floating'] === 'auto') {\n                // since the drag has started, the element will be\n                // absolutely positioned, so we check its siblings\n                var siblings = ui.item.siblings();\n                var sortableWidgetInstance = getSortableWidgetInstance(angular.element(e.target));\n                sortableWidgetInstance.floating = isFloating(siblings);\n              }\n\n              // Save the starting position of dragged item\n              var index = getItemIndex(ui.item);\n              ui.item.sortable = {\n                model: ngModel.$modelValue[index],\n                index: index,\n                source: element,\n                sourceList: ui.item.parent(),\n                sourceModel: ngModel.$modelValue,\n                cancel: function () {\n                  ui.item.sortable._isCanceled = true;\n                },\n                isCanceled: function () {\n                  return ui.item.sortable._isCanceled;\n                },\n                isCustomHelperUsed: function () {\n                  return !!ui.item.sortable._isCustomHelperUsed;\n                },\n                _isCanceled: false,\n                _isCustomHelperUsed: ui.item.sortable._isCustomHelperUsed,\n                _destroy: function () {\n                  angular.forEach(ui.item.sortable, function(value, key) {\n                    ui.item.sortable[key] = undefined;\n                  });\n                },\n                _connectedSortables: [],\n                _getElementContext: function (element) {\n                  return getElementContext(this._connectedSortables, element);\n                }\n              };\n            };\n\n            callbacks.activate = function(e, ui) {\n              var isSourceContext = ui.item.sortable.source === element;\n              var savedNodesOrigin = isSourceContext ?\n                                     ui.item.sortable.sourceList :\n                                     element;\n              var elementContext = {\n                element: element,\n                scope: scope,\n                isSourceContext: isSourceContext,\n                savedNodesOrigin: savedNodesOrigin\n              };\n              // save the directive's scope so that it is accessible from ui.item.sortable\n              ui.item.sortable._connectedSortables.push(elementContext);\n\n              // We need to make a copy of the current element's contents so\n              // we can restore it after sortable has messed it up.\n              // This is inside activate (instead of start) in order to save\n              // both lists when dragging between connected lists.\n              savedNodes = savedNodesOrigin.contents();\n\n              // If this list has a placeholder (the connected lists won't),\n              // don't inlcude it in saved nodes.\n              var placeholder = getPlaceholderElement(element);\n              if (placeholder && placeholder.length) {\n                var excludes = getPlaceholderExcludesludes(element, placeholder);\n                savedNodes = savedNodes.not(excludes);\n              }\n            };\n\n            callbacks.update = function(e, ui) {\n              // Save current drop position but only if this is not a second\n              // update that happens when moving between lists because then\n              // the value will be overwritten with the old value\n              if(!ui.item.sortable.received) {\n                ui.item.sortable.dropindex = getItemIndex(ui.item);\n                var droptarget = ui.item.closest('[ui-sortable], [data-ui-sortable], [x-ui-sortable]');\n                ui.item.sortable.droptarget = droptarget;\n                ui.item.sortable.droptargetList = ui.item.parent();\n\n                var droptargetContext = ui.item.sortable._getElementContext(droptarget);\n                ui.item.sortable.droptargetModel = droptargetContext.scope.ngModel;\n\n                // Cancel the sort (let ng-repeat do the sort for us)\n                // Don't cancel if this is the received list because it has\n                // already been canceled in the other list, and trying to cancel\n                // here will mess up the DOM.\n                element.sortable('cancel');\n              }\n\n              // Put the nodes back exactly the way they started (this is very\n              // important because ng-repeat uses comment elements to delineate\n              // the start and stop of repeat sections and sortable doesn't\n              // respect their order (even if we cancel, the order of the\n              // comments are still messed up).\n              var sortingHelper = !ui.item.sortable.received && getSortingHelper(element, ui, savedNodes);\n              if (sortingHelper && sortingHelper.length) {\n                // Restore all the savedNodes except from the sorting helper element.\n                // That way it will be garbage collected.\n                savedNodes = savedNodes.not(sortingHelper);\n              }\n              var elementContext = ui.item.sortable._getElementContext(element);\n              savedNodes.appendTo(elementContext.savedNodesOrigin);\n\n              // If this is the target connected list then\n              // it's safe to clear the restored nodes since:\n              // update is currently running and\n              // stop is not called for the target list.\n              if(ui.item.sortable.received) {\n                savedNodes = null;\n              }\n\n              // If received is true (an item was dropped in from another list)\n              // then we add the new item to this list otherwise wait until the\n              // stop event where we will know if it was a sort or item was\n              // moved here from another list\n              if(ui.item.sortable.received && !ui.item.sortable.isCanceled()) {\n                scope.$apply(function () {\n                  ngModel.$modelValue.splice(ui.item.sortable.dropindex, 0,\n                                             ui.item.sortable.moved);\n                });\n              }\n            };\n\n            callbacks.stop = function(e, ui) {\n              // If the received flag hasn't be set on the item, this is a\n              // normal sort, if dropindex is set, the item was moved, so move\n              // the items in the list.\n              var wasMoved = ('dropindex' in ui.item.sortable) &&\n                              !ui.item.sortable.isCanceled();\n\n              if (wasMoved && !ui.item.sortable.received) {\n\n                scope.$apply(function () {\n                  ngModel.$modelValue.splice(\n                    ui.item.sortable.dropindex, 0,\n                    ngModel.$modelValue.splice(ui.item.sortable.index, 1)[0]);\n                });\n              } else if (!wasMoved &&\n                         !angular.equals(element.contents().toArray(), savedNodes.toArray())) {\n                // if the item was not moved\n                // and the DOM element order has changed,\n                // then restore the elements\n                // so that the ngRepeat's comment are correct.\n\n                var sortingHelper = getSortingHelper(element, ui, savedNodes);\n                if (sortingHelper && sortingHelper.length) {\n                  // Restore all the savedNodes except from the sorting helper element.\n                  // That way it will be garbage collected.\n                  savedNodes = savedNodes.not(sortingHelper);\n                }\n                var elementContext = ui.item.sortable._getElementContext(element);\n                savedNodes.appendTo(elementContext.savedNodesOrigin);\n              }\n\n              // It's now safe to clear the savedNodes\n              // since stop is the last callback.\n              savedNodes = null;\n            };\n\n            callbacks.receive = function(e, ui) {\n              // An item was dropped here from another list, set a flag on the\n              // item.\n              ui.item.sortable.received = true;\n            };\n\n            callbacks.remove = function(e, ui) {\n              // Workaround for a problem observed in nested connected lists.\n              // There should be an 'update' event before 'remove' when moving\n              // elements. If the event did not fire, cancel sorting.\n              if (!('dropindex' in ui.item.sortable)) {\n                element.sortable('cancel');\n                ui.item.sortable.cancel();\n              }\n\n              // Remove the item from this list's model and copy data into item,\n              // so the next list can retrive it\n              if (!ui.item.sortable.isCanceled()) {\n                scope.$apply(function () {\n                  ui.item.sortable.moved = ngModel.$modelValue.splice(\n                    ui.item.sortable.index, 1)[0];\n                });\n              }\n            };\n\n            wrappers.helper = function (inner) {\n              if (inner && typeof inner === 'function') {\n                return function (e, item) {\n                  var oldItemSortable = item.sortable;\n                  var index = getItemIndex(item);\n                  item.sortable = {\n                    model: ngModel.$modelValue[index],\n                    index: index,\n                    source: element,\n                    sourceList: item.parent(),\n                    sourceModel: ngModel.$modelValue,\n                    _restore: function () {\n                      angular.forEach(item.sortable, function(value, key) {\n                        item.sortable[key] = undefined;\n                      });\n\n                      item.sortable = oldItemSortable;\n                    }\n                  };\n\n                  var innerResult = inner.apply(this, arguments);\n                  item.sortable._restore();\n                  item.sortable._isCustomHelperUsed = item !== innerResult;\n                  return innerResult;\n                };\n              }\n              return inner;\n            };\n\n            scope.$watchCollection('uiSortable', function(newVal, oldVal) {\n              // ensure that the jquery-ui-sortable widget instance\n              // is still bound to the directive's element\n              var sortableWidgetInstance = getSortableWidgetInstance(element);\n              if (!!sortableWidgetInstance) {\n                var optsDiff = patchUISortableOptions(newVal, oldVal, sortableWidgetInstance);\n\n                if (optsDiff) {\n                  element.sortable('option', optsDiff);\n                }\n              }\n            }, true);\n\n            patchUISortableOptions(opts);\n          }\n\n          function init () {\n            if (ngModel) {\n              wireUp();\n            } else {\n              $log.info('ui.sortable: ngModel not provided!', element);\n            }\n\n            // Create sortable\n            element.sortable(opts);\n          }\n\n          function initIfEnabled () {\n            if (scope.uiSortable && scope.uiSortable.disabled) {\n              return false;\n            }\n\n            init();\n\n            // Stop Watcher\n            initIfEnabled.cancelWatcher();\n            initIfEnabled.cancelWatcher = angular.noop;\n\n            return true;\n          }\n\n          initIfEnabled.cancelWatcher = angular.noop;\n\n          if (!initIfEnabled()) {\n            initIfEnabled.cancelWatcher = scope.$watch('uiSortable.disabled', initIfEnabled);\n          }\n        }\n      };\n    }\n  ]);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'a' : _ref$as,\n      disabled = _ref.disabled,\n      onKeyDown = _ref.onKeyDown,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"disabled\", \"onKeyDown\"]);\n\n  var handleClick = function handleClick(event) {\n    var href = props.href,\n        onClick = props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n\n  if (isTrivialHref(props.href)) {\n    props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n    // otherwise, the cursor incorrectly styled (except with role='button')\n\n    props.href = props.href || '#';\n  }\n\n  if (disabled) {\n    props.tabIndex = -1;\n    props['aria-disabled'] = true;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    onClick: handleClick,\n    onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n  }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","var arrayEach = require('./_arrayEach'),\n    baseEach = require('./_baseEach'),\n    castFunction = require('./_castFunction'),\n    isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","var categories = [\n  require('./lib/compatibility'),\n  require('./lib/database'),\n  require('./lib/engineering'),\n  require('./lib/logical'),\n  require('./lib/math-trig'),\n  require('./lib/text'),\n  require('./lib/date-time'),\n  require('./lib/financial'),\n  require('./lib/information'),\n  require('./lib/lookup-reference'),\n  require('./lib/statistical'),\n  require('./lib/miscellaneous')\n];\n\nfor (var c in categories) {\n  var category = categories[c];\n  for (var f in category) {\n    exports[f] = exports[f] || category[f];\n  }\n}\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/ecma262/#sec-array.prototype.with\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = raf;\nfunction raf(callback) {\n  if (window.requestAnimationFrame) {\n    return window.requestAnimationFrame(callback);\n  }\n\n  var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n\n  return nativeRaf ? nativeRaf(callback) : window.setTimeout(callback, 1e3 / 60);\n}","'use strict';\nvar WebRTC = {};\nObject.defineProperties(WebRTC, {\n    getStats: {\n        enumerable: true,\n        value: require('./getstats')\n    },\n    getUserMedia: {\n        enumerable: true,\n        value: require('./getusermedia')\n    },\n    MediaStream: {\n        enumerable: true,\n        value: require('./mediastream')\n    },\n    MediaStreamTrack: {\n        enumerable: true,\n        value: require('./mediastreamtrack')\n    },\n    RTCIceCandidate: {\n        enumerable: true,\n        value: require('./rtcicecandidate')\n    },\n    RTCPeerConnection: {\n        enumerable: true,\n        value: require('./rtcpeerconnection')\n    },\n    RTCSessionDescription: {\n        enumerable: true,\n        value: require('./rtcsessiondescription')\n    }\n});\nmodule.exports = WebRTC;\n//# sourceMappingURL=index.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a {@link LocalTrack}.\n * @extends TrackStats\n * @property {?number} bytesSent - Number of bytes sent\n * @property {?number} packetsSent - Number of packets sent\n * @property {?number} roundTripTime - Round trip time in milliseconds\n */\nvar LocalTrackStats = /** @class */ (function (_super) {\n    __extends(LocalTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            bytesSent: {\n                value: typeof statsReport.bytesSent === 'number'\n                    ? statsReport.bytesSent\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            },\n            packetsSent: {\n                value: typeof statsReport.packetsSent === 'number'\n                    ? statsReport.packetsSent\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            },\n            roundTripTime: {\n                value: typeof statsReport.roundTripTime === 'number'\n                    ? statsReport.roundTripTime\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalTrackStats;\n}(TrackStats));\nmodule.exports = LocalTrackStats;\n//# sourceMappingURL=localtrackstats.js.map","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * # Transition subsystem\n *\n * This module contains APIs related to a Transition.\n *\n * See:\n * - [[TransitionService]]\n * - [[Transition]]\n * - [[HookFn]], [[TransitionHookFn]], [[TransitionStateHookFn]], [[HookMatchCriteria]], [[HookResult]]\n *\n * @coreapi\n * @preferred\n * @module transition\n */ /** for typedoc */\n__export(require(\"./interface\"));\n__export(require(\"./hookBuilder\"));\n__export(require(\"./hookRegistry\"));\n__export(require(\"./rejectFactory\"));\n__export(require(\"./transition\"));\n__export(require(\"./transitionHook\"));\n__export(require(\"./transitionEventType\"));\n__export(require(\"./transitionService\"));\n//# sourceMappingURL=index.js.map","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return number !== number;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var error = require('./utils/error');\nvar stats = require('./statistical');\nvar maths = require('./math-trig');\nvar utils = require('./utils/common');\nvar evalExpression = require('./utils/criteria-eval');\n\nfunction compact(array) {\n  var result = [];\n\n  utils.arrayEach(array, function(value) {\n    if (value) {\n      result.push(value);\n    }\n  });\n\n  return result;\n}\n\nexports.FINDFIELD = function(database, title) {\n  var index = null;\n\n  utils.arrayEach(database, function(value, i) {\n    if (value[0] === title) {\n      index = i;\n      return false;\n    }\n  });\n\n  // Return error if the input field title is incorrect\n  if (index == null) {\n    return error.value;\n  }\n\n  return index;\n};\n\nfunction findResultIndex(database, criterias) {\n  var matches = {};\n  for (var i = 1; i < database[0].length; ++i) {\n    matches[i] = true;\n  }\n  var maxCriteriaLength = criterias[0].length;\n  for (i = 1; i < criterias.length; ++i) {\n    if (criterias[i].length > maxCriteriaLength) {\n      maxCriteriaLength = criterias[i].length;\n    }\n  }\n\n  for (var k = 1; k < database.length; ++k) {\n    for (var l = 1; l < database[k].length; ++l) {\n      var currentCriteriaResult = false;\n      var hasMatchingCriteria   = false;\n      for (var j = 0; j < criterias.length; ++j) {\n        var criteria = criterias[j];\n        if (criteria.length < maxCriteriaLength) {\n          continue;\n        }\n\n        var criteriaField = criteria[0];\n        if (database[k][0] !== criteriaField) {\n          continue;\n        }\n        hasMatchingCriteria = true;\n        for (var p = 1; p < criteria.length; ++p) {\n          if (!currentCriteriaResult) {\n            var isWildcard = criteria[p] === void 0 || criteria[p] === '*';\n\n            if (isWildcard) {\n              currentCriteriaResult = true;\n            } else {\n              var tokenizedCriteria = evalExpression.parse(criteria[p] + '');\n              var tokens = [evalExpression.createToken(database[k][l], evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n              currentCriteriaResult = evalExpression.compute(tokens);\n            }\n          }\n        }\n      }\n      if (hasMatchingCriteria) {\n        matches[l] = matches[l] && currentCriteriaResult;\n      }\n    }\n  }\n\n  var result = [];\n  for (var n = 0; n < database[0].length; ++n) {\n    if (matches[n]) {\n      result.push(n - 1);\n    }\n  }\n\n  return result;\n}\n\n// Database functions\nexports.DAVERAGE = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n  var sum = 0;\n\n  utils.arrayEach(resultIndexes, function(value) {\n    sum += targetFields[value];\n  });\n\n  return resultIndexes.length === 0 ? error.div0 : sum / resultIndexes.length;\n};\n\nexports.DCOUNT = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n\n  return stats.COUNT(targetValues);\n};\n\nexports.DCOUNTA = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n\n  return stats.COUNTA(targetValues);\n};\n\nexports.DGET = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  // Return error if no record meets the criteria\n  if (resultIndexes.length === 0) {\n    return error.value;\n  }\n  // Returns the #NUM! error value because more than one record meets the\n  // criteria\n  if (resultIndexes.length > 1) {\n    return error.num;\n  }\n\n  return targetFields[resultIndexes[0]];\n};\n\nexports.DMAX = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var maxValue = targetFields[resultIndexes[0]];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    if (maxValue < targetFields[value]) {\n      maxValue = targetFields[value];\n    }\n  });\n\n  return maxValue;\n};\n\nexports.DMIN = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var minValue = targetFields[resultIndexes[0]];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    if (minValue > targetFields[value]) {\n      minValue = targetFields[value];\n    }\n  });\n\n  return minValue;\n};\n\nexports.DPRODUCT = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n  targetValues = compact(targetValues);\n\n  var result = 1;\n\n  utils.arrayEach(targetValues, function(value) {\n    result *= value;\n  });\n\n  return result;\n};\n\nexports.DSTDEV = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n  targetValues = compact(targetValues);\n\n  return stats.STDEV.S(targetValues);\n};\n\nexports.DSTDEVP = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n  targetValues = compact(targetValues);\n\n  return stats.STDEV.P(targetValues);\n};\n\nexports.DSUM = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n\n  return maths.SUM(targetValues);\n};\n\nexports.DVAR = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n\n  return stats.VAR.S(targetValues);\n};\n\nexports.DVARP = function(database, field, criteria) {\n  // Return error if field is not a number and not a string\n  if (isNaN(field) && (typeof field !== \"string\")) {\n    return error.value;\n  }\n  var resultIndexes = findResultIndex(database, criteria);\n  var targetFields = [];\n\n  if (typeof field === \"string\") {\n    var index = exports.FINDFIELD(database, field);\n    targetFields = utils.rest(database[index]);\n  } else {\n    targetFields = utils.rest(database[field]);\n  }\n  var targetValues = [];\n\n  utils.arrayEach(resultIndexes, function(value) {\n    targetValues.push(targetFields[value]);\n  });\n\n  return stats.VAR.P(targetValues);\n};\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = useMemo(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module view\n */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar predicates_1 = require(\"../common/predicates\");\nvar trace_1 = require(\"../common/trace\");\n/**\n * The View service\n *\n * This service pairs existing `ui-view` components (which live in the DOM)\n * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n *\n * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n *   The views from exited states are deactivated via [[deactivateViewConfig]].\n *   (See: the [[registerActivateViews]] Transition Hook)\n *\n * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n *\n * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n * are configured with the matching [[ViewConfig]](s)\n *\n */\nvar ViewService = /** @class */ (function () {\n    function ViewService() {\n        var _this = this;\n        this._uiViews = [];\n        this._viewConfigs = [];\n        this._viewConfigFactories = {};\n        this._listeners = [];\n        this._pluginapi = {\n            _rootViewContext: this._rootViewContext.bind(this),\n            _viewConfigFactory: this._viewConfigFactory.bind(this),\n            _registeredUIViews: function () { return _this._uiViews; },\n            _activeViewConfigs: function () { return _this._viewConfigs; },\n            _onSync: function (listener) {\n                _this._listeners.push(listener);\n                return function () { return common_1.removeFrom(_this._listeners, listener); };\n            },\n        };\n    }\n    /**\n     * Normalizes a view's name from a state.views configuration block.\n     *\n     * This should be used by a framework implementation to calculate the values for\n     * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n     *\n     * @param context the context object (state declaration) that the view belongs to\n     * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n     *\n     * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n     */\n    ViewService.normalizeUIViewTarget = function (context, rawViewName) {\n        if (rawViewName === void 0) { rawViewName = ''; }\n        // TODO: Validate incoming view name with a regexp to allow:\n        // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n        // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n        var viewAtContext = rawViewName.split('@');\n        var uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n        var uiViewContextAnchor = predicates_1.isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n        // Handle relative view-name sugar syntax.\n        // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n        var relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n        if (relativeViewNameSugar) {\n            // Clobbers existing contextAnchor (rawViewName validation will fix this)\n            uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n            uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n        }\n        if (uiViewName.charAt(0) === '!') {\n            uiViewName = uiViewName.substr(1);\n            uiViewContextAnchor = ''; // target absolutely from root\n        }\n        // handle parent relative targeting \"^.^.^\"\n        var relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n        if (relativeMatch.exec(uiViewContextAnchor)) {\n            var anchorState = uiViewContextAnchor.split('.')\n                .reduce((function (anchor, x) { return anchor.parent; }), context);\n            uiViewContextAnchor = anchorState.name;\n        }\n        else if (uiViewContextAnchor === '.') {\n            uiViewContextAnchor = context.name;\n        }\n        return { uiViewName: uiViewName, uiViewContextAnchor: uiViewContextAnchor };\n    };\n    ViewService.prototype._rootViewContext = function (context) {\n        return this._rootContext = context || this._rootContext;\n    };\n    ViewService.prototype._viewConfigFactory = function (viewType, factory) {\n        this._viewConfigFactories[viewType] = factory;\n    };\n    ViewService.prototype.createViewConfig = function (path, decl) {\n        var cfgFactory = this._viewConfigFactories[decl.$type];\n        if (!cfgFactory)\n            throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n        var cfgs = cfgFactory(path, decl);\n        return predicates_1.isArray(cfgs) ? cfgs : [cfgs];\n    };\n    /**\n     * Deactivates a ViewConfig.\n     *\n     * This function deactivates a `ViewConfig`.\n     * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n     *\n     * @param viewConfig The ViewConfig view to deregister.\n     */\n    ViewService.prototype.deactivateViewConfig = function (viewConfig) {\n        trace_1.trace.traceViewServiceEvent('<- Removing', viewConfig);\n        common_1.removeFrom(this._viewConfigs, viewConfig);\n    };\n    ViewService.prototype.activateViewConfig = function (viewConfig) {\n        trace_1.trace.traceViewServiceEvent('-> Registering', viewConfig);\n        this._viewConfigs.push(viewConfig);\n    };\n    ViewService.prototype.sync = function () {\n        var _this = this;\n        var uiViewsByFqn = this._uiViews.map(function (uiv) { return [uiv.fqn, uiv]; }).reduce(common_1.applyPairs, {});\n        // Return a weighted depth value for a uiView.\n        // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n        // plus the depth of the state that is populating the uiView\n        function uiViewDepth(uiView) {\n            var stateDepth = function (context) {\n                return context && context.parent ? stateDepth(context.parent) + 1 : 1;\n            };\n            return (uiView.fqn.split('.').length * 10000) + stateDepth(uiView.creationContext);\n        }\n        // Return the ViewConfig's context's depth in the context tree.\n        function viewConfigDepth(config) {\n            var context = config.viewDecl.$context, count = 0;\n            while (++count && context.parent)\n                context = context.parent;\n            return count;\n        }\n        // Given a depth function, returns a compare function which can return either ascending or descending order\n        var depthCompare = hof_1.curry(function (depthFn, posNeg, left, right) { return posNeg * (depthFn(left) - depthFn(right)); });\n        var matchingConfigPair = function (uiView) {\n            var matchingConfigs = _this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n            if (matchingConfigs.length > 1) {\n                // This is OK.  Child states can target a ui-view that the parent state also targets (the child wins)\n                // Sort by depth and return the match from the deepest child\n                // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n                matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n            }\n            return { uiView: uiView, viewConfig: matchingConfigs[0] };\n        };\n        var configureUIView = function (tuple) {\n            // If a parent ui-view is reconfigured, it could destroy child ui-views.\n            // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n            if (_this._uiViews.indexOf(tuple.uiView) !== -1)\n                tuple.uiView.configUpdated(tuple.viewConfig);\n        };\n        // Sort views by FQN and state depth. Process uiviews nearest the root first.\n        var uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n        var matchedViewConfigs = uiViewTuples.map(function (tuple) { return tuple.viewConfig; });\n        var unmatchedConfigTuples = this._viewConfigs\n            .filter(function (config) { return !common_1.inArray(matchedViewConfigs, config); })\n            .map(function (viewConfig) { return ({ uiView: undefined, viewConfig: viewConfig }); });\n        uiViewTuples.forEach(configureUIView);\n        var allTuples = uiViewTuples.concat(unmatchedConfigTuples);\n        this._listeners.forEach(function (cb) { return cb(allTuples); });\n        trace_1.trace.traceViewSync(allTuples);\n    };\n    /**\n     * Registers a `ui-view` component\n     *\n     * When a `ui-view` component is created, it uses this method to register itself.\n     * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n     *\n     * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n     * and what the view's state context is.\n     *\n     * Note: There is no corresponding `deregisterUIView`.\n     *       A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n     *\n     * @param uiView The metadata for a UIView\n     * @return a de-registration function used when the view is destroyed.\n     */\n    ViewService.prototype.registerUIView = function (uiView) {\n        trace_1.trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n        var uiViews = this._uiViews;\n        var fqnAndTypeMatches = function (uiv) { return uiv.fqn === uiView.fqn && uiv.$type === uiView.$type; };\n        if (uiViews.filter(fqnAndTypeMatches).length)\n            trace_1.trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n        uiViews.push(uiView);\n        this.sync();\n        return function () {\n            var idx = uiViews.indexOf(uiView);\n            if (idx === -1) {\n                trace_1.trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n                return;\n            }\n            trace_1.trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n            common_1.removeFrom(uiViews)(uiView);\n        };\n    };\n    /**\n     * Returns the list of views currently available on the page, by fully-qualified name.\n     *\n     * @return {Array} Returns an array of fully-qualified view names.\n     */\n    ViewService.prototype.available = function () {\n        return this._uiViews.map(hof_1.prop('fqn'));\n    };\n    /**\n     * Returns the list of views on the page containing loaded content.\n     *\n     * @return {Array} Returns an array of fully-qualified view names.\n     */\n    ViewService.prototype.active = function () {\n        return this._uiViews.filter(hof_1.prop('$config')).map(hof_1.prop('name'));\n    };\n    /**\n     * Given a ui-view and a ViewConfig, determines if they \"match\".\n     *\n     * A ui-view has a fully qualified name (fqn) and a context object.  The fqn is built from its overall location in\n     * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n     *\n     * A ViewConfig has a target ui-view name and a context anchor.  The ui-view name can be a simple name, or\n     * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n     *\n     * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n     *\n     * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n     * - the ui-view's name matches the ViewConfig's target name\n     * - the ui-view's context matches the ViewConfig's anchor\n     *\n     * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n     * - There exists a parent ui-view where:\n     *    - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n     *    - the parent ui-view's context matches the ViewConfig's anchor\n     * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n     *\n     * Example:\n     *\n     * DOM:\n     * <ui-view>                        <!-- created in the root context (name: \"\") -->\n     *   <ui-view name=\"foo\">                <!-- created in the context named: \"A\"      -->\n     *     <ui-view>                    <!-- created in the context named: \"A.B\"    -->\n     *       <ui-view name=\"bar\">            <!-- created in the context named: \"A.B.C\"  -->\n     *       </ui-view>\n     *     </ui-view>\n     *   </ui-view>\n     * </ui-view>\n     *\n     * uiViews: [\n     *  { fqn: \"$default\",                  creationContext: { name: \"\" } },\n     *  { fqn: \"$default.foo\",              creationContext: { name: \"A\" } },\n     *  { fqn: \"$default.foo.$default\",     creationContext: { name: \"A.B\" } }\n     *  { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n     * ]\n     *\n     * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n     *\n     * - ViewConfig1: { uiViewName: \"bar\",                       uiViewContextAnchor: \"A.B.C\" }\n     * - ViewConfig2: { uiViewName: \"$default.bar\",              uiViewContextAnchor: \"A.B\" }\n     * - ViewConfig3: { uiViewName: \"foo.$default.bar\",          uiViewContextAnchor: \"A\" }\n     * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n     *\n     * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n     * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n     * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n     *    - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n     *    - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n     * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n     *   the tail of the ui-view's fqn \"default.bar\"\n     *\n     * @internalapi\n     */\n    ViewService.matches = function (uiViewsByFqn, uiView) { return function (viewConfig) {\n        // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n        if (uiView.$type !== viewConfig.viewDecl.$type)\n            return false;\n        // Split names apart from both viewConfig and uiView into segments\n        var vc = viewConfig.viewDecl;\n        var vcSegments = vc.$uiViewName.split('.');\n        var uivSegments = uiView.fqn.split('.');\n        // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n        // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n        if (!common_1.equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n            return false;\n        // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n        // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n        var negOffset = (1 - vcSegments.length) || undefined;\n        var fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n        var uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n        return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n    }; };\n    return ViewService;\n}());\nexports.ViewService = ViewService;\n//# sourceMappingURL=view.js.map","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays:\n            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n                '_'\n            ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                          ? ':a'\n                          : b === 2\n                            ? ':a'\n                            : b === 3\n                              ? ':e'\n                              : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n  var i = buf && offset || 0;\n  var b = buf || [];\n\n  options = options || {};\n  var node = options.node || _nodeId;\n  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n  // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n  if (node == null || clockseq == null) {\n    var seedBytes = rng();\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [\n        seedBytes[0] | 0x01,\n        seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n      ];\n    }\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  }\n\n  // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n  var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n  // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n  // Time since last uuid creation (in msecs)\n  var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n  // Per 4.2.1.2, Bump clockseq on clock regression\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  }\n\n  // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  }\n\n  // Per 4.2.1.2 Throw error if too many uuids are requested\n  if (nsecs >= 10000) {\n    throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq;\n\n  // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n  msecs += 12219292800000;\n\n  // `time_low`\n  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff;\n\n  // `time_mid`\n  var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff;\n\n  // `time_high_and_version`\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n  b[i++] = tmh >>> 16 & 0xff;\n\n  // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n  b[i++] = clockseq >>> 8 | 0x80;\n\n  // `clock_seq_low`\n  b[i++] = clockseq & 0xff;\n\n  // `node`\n  for (var n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","/**!\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * FileAPI Flash shim for old browsers not supporting FormData\n * @author  Danial  <danial.farid@gmail.com>\n * @version 12.2.13\n */\n\n(function () {\n  /** @namespace FileAPI.noContentTimeout */\n\n  function patchXHR(fnName, newFn) {\n    window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\n  }\n\n  function redefineProp(xhr, prop, fn) {\n    try {\n      Object.defineProperty(xhr, prop, {get: fn});\n    } catch (e) {/*ignore*/\n    }\n  }\n\n  if (!window.FileAPI) {\n    window.FileAPI = {};\n  }\n\n  if (!window.XMLHttpRequest) {\n    throw 'AJAX is not supported. XMLHttpRequest is not defined.';\n  }\n\n  FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\n  if (FileAPI.shouldLoad) {\n    var initializeUploadListener = function (xhr) {\n      if (!xhr.__listeners) {\n        if (!xhr.upload) xhr.upload = {};\n        xhr.__listeners = [];\n        var origAddEventListener = xhr.upload.addEventListener;\n        xhr.upload.addEventListener = function (t, fn) {\n          xhr.__listeners[t] = fn;\n          if (origAddEventListener) origAddEventListener.apply(this, arguments);\n        };\n      }\n    };\n\n    patchXHR('open', function (orig) {\n      return function (m, url, b) {\n        initializeUploadListener(this);\n        this.__url = url;\n        try {\n          orig.apply(this, [m, url, b]);\n        } catch (e) {\n          if (e.message.indexOf('Access is denied') > -1) {\n            this.__origError = e;\n            orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\n          }\n        }\n      };\n    });\n\n    patchXHR('getResponseHeader', function (orig) {\n      return function (h) {\n        return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\n      };\n    });\n\n    patchXHR('getAllResponseHeaders', function (orig) {\n      return function () {\n        return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\n      };\n    });\n\n    patchXHR('abort', function (orig) {\n      return function () {\n        return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\n      };\n    });\n\n    patchXHR('setRequestHeader', function (orig) {\n      return function (header, value) {\n        if (header === '__setXHR_') {\n          initializeUploadListener(this);\n          var val = value(this);\n          // fix for angular < 1.2.0\n          if (val instanceof Function) {\n            val(this);\n          }\n        } else {\n          this.__requestHeaders = this.__requestHeaders || {};\n          this.__requestHeaders[header] = value;\n          orig.apply(this, arguments);\n        }\n      };\n    });\n\n    patchXHR('send', function (orig) {\n      return function () {\n        var xhr = this;\n        if (arguments[0] && arguments[0].__isFileAPIShim) {\n          var formData = arguments[0];\n          var config = {\n            url: xhr.__url,\n            jsonp: false, //removes the callback form param\n            cache: true, //removes the ?fileapiXXX in the url\n            complete: function (err, fileApiXHR) {\n              if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\n                // this error seems to be fine the file is being uploaded properly.\n                err = null;\n              }\n              xhr.__completed = true;\n              if (!err && xhr.__listeners.load)\n                xhr.__listeners.load({\n                  type: 'load',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (!err && xhr.__listeners.loadend)\n                xhr.__listeners.loadend({\n                  type: 'loadend',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (err === 'abort' && xhr.__listeners.abort)\n                xhr.__listeners.abort({\n                  type: 'abort',\n                  loaded: xhr.__loaded,\n                  total: xhr.__total,\n                  target: xhr,\n                  lengthComputable: true\n                });\n              if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\n                return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\n              });\n              if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\n                return fileApiXHR.statusText;\n              });\n              redefineProp(xhr, 'readyState', function () {\n                return 4;\n              });\n              if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\n                return fileApiXHR.response;\n              });\n              var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\n              redefineProp(xhr, 'responseText', function () {\n                return resp;\n              });\n              redefineProp(xhr, 'response', function () {\n                return resp;\n              });\n              if (err) redefineProp(xhr, 'err', function () {\n                return err;\n              });\n              xhr.__fileApiXHR = fileApiXHR;\n              if (xhr.onreadystatechange) xhr.onreadystatechange();\n              if (xhr.onload) xhr.onload();\n            },\n            progress: function (e) {\n              e.target = xhr;\n              if (xhr.__listeners.progress) xhr.__listeners.progress(e);\n              xhr.__total = e.total;\n              xhr.__loaded = e.loaded;\n              if (e.total === e.loaded) {\n                // fix flash issue that doesn't call complete if there is no response text from the server\n                var _this = this;\n                setTimeout(function () {\n                  if (!xhr.__completed) {\n                    xhr.getAllResponseHeaders = function () {\n                    };\n                    _this.complete(null, {status: 204, statusText: 'No Content'});\n                  }\n                }, FileAPI.noContentTimeout || 10000);\n              }\n            },\n            headers: xhr.__requestHeaders\n          };\n          config.data = {};\n          config.files = {};\n          for (var i = 0; i < formData.data.length; i++) {\n            var item = formData.data[i];\n            if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\n              config.files[item.key] = item.val;\n            } else {\n              config.data[item.key] = item.val;\n            }\n          }\n\n          setTimeout(function () {\n            if (!FileAPI.hasFlash) {\n              throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n            }\n            xhr.__fileApiXHR = FileAPI.upload(config);\n          }, 1);\n        } else {\n          if (this.__origError) {\n            throw this.__origError;\n          }\n          orig.apply(xhr, arguments);\n        }\n      };\n    });\n    window.XMLHttpRequest.__isFileAPIShim = true;\n    window.FormData = FormData = function () {\n      return {\n        append: function (key, val, name) {\n          if (val.__isFileAPIBlobShim) {\n            val = val.data[0];\n          }\n          this.data.push({\n            key: key,\n            val: val,\n            name: name\n          });\n        },\n        data: [],\n        __isFileAPIShim: true\n      };\n    };\n\n    window.Blob = Blob = function (b) {\n      return {\n        data: b,\n        __isFileAPIBlobShim: true\n      };\n    };\n  }\n\n})();\n\n(function () {\n  /** @namespace FileAPI.forceLoad */\n  /** @namespace window.FileAPI.jsUrl */\n  /** @namespace window.FileAPI.jsPath */\n\n  function isInputTypeFile(elem) {\n    return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\n  }\n\n  function hasFlash() {\n    try {\n      var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n      if (fo) return true;\n    } catch (e) {\n      if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\n    }\n    return false;\n  }\n\n  function getOffset(obj) {\n    var left = 0, top = 0;\n\n    if (window.jQuery) {\n      return jQuery(obj).offset();\n    }\n\n    if (obj.offsetParent) {\n      do {\n        left += (obj.offsetLeft - obj.scrollLeft);\n        top += (obj.offsetTop - obj.scrollTop);\n        obj = obj.offsetParent;\n      } while (obj);\n    }\n    return {\n      left: left,\n      top: top\n    };\n  }\n\n  if (FileAPI.shouldLoad) {\n    FileAPI.hasFlash = hasFlash();\n\n    //load FileAPI\n    if (FileAPI.forceLoad) {\n      FileAPI.html5 = false;\n    }\n\n    if (!FileAPI.upload) {\n      var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\n      if (window.FileAPI.jsUrl) {\n        jsUrl = window.FileAPI.jsUrl;\n      } else if (window.FileAPI.jsPath) {\n        basePath = window.FileAPI.jsPath;\n      } else {\n        for (i = 0; i < allScripts.length; i++) {\n          src = allScripts[i].src;\n          index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\n          if (index > -1) {\n            basePath = src.substring(0, index + 1);\n            break;\n          }\n        }\n      }\n\n      if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\n      script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\n      document.getElementsByTagName('head')[0].appendChild(script);\n    }\n\n    FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\n      if (!hasFlash()) {\n        throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n      }\n      var fixInputStyle = function () {\n        var label = fileElem.parent();\n        if (elem.attr('disabled')) {\n          if (label) label.removeClass('js-fileapi-wrapper');\n        } else {\n          if (!fileElem.attr('__ngf_flash_')) {\n            fileElem.unbind('change');\n            fileElem.unbind('click');\n            fileElem.bind('change', function (evt) {\n              fileApiChangeFn.apply(this, [evt]);\n              changeFn.apply(this, [evt]);\n            });\n            fileElem.attr('__ngf_flash_', 'true');\n          }\n          label.addClass('js-fileapi-wrapper');\n          if (!isInputTypeFile(elem)) {\n            label.css('position', 'absolute')\n              .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\n              .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n              .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\n              .css('overflow', 'hidden').css('z-index', '900000')\n              .css('visibility', 'visible');\n            fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n              .css('position', 'absolute').css('top', '0px').css('left', '0px');\n          }\n        }\n      };\n\n      elem.bind('mouseenter', fixInputStyle);\n\n      var fileApiChangeFn = function (evt) {\n        var files = FileAPI.getFiles(evt);\n        //just a double check for #233\n        for (var i = 0; i < files.length; i++) {\n          if (files[i].size === undefined) files[i].size = 0;\n          if (files[i].name === undefined) files[i].name = 'file';\n          if (files[i].type === undefined) files[i].type = 'undefined';\n        }\n        if (!evt.target) {\n          evt.target = {};\n        }\n        evt.target.files = files;\n        // if evt.target.files is not writable use helper field\n        if (evt.target.files !== files) {\n          evt.__files_ = files;\n        }\n        (evt.__files_ || evt.target.files).item = function (i) {\n          return (evt.__files_ || evt.target.files)[i] || null;\n        };\n      };\n    };\n\n    FileAPI.disableFileInput = function (elem, disable) {\n      if (disable) {\n        elem.removeClass('js-fileapi-wrapper');\n      } else {\n        elem.addClass('js-fileapi-wrapper');\n      }\n    };\n  }\n})();\n\nif (!window.FileReader) {\n  window.FileReader = function () {\n    var _this = this, loadStarted = false;\n    this.listeners = {};\n    this.addEventListener = function (type, fn) {\n      _this.listeners[type] = _this.listeners[type] || [];\n      _this.listeners[type].push(fn);\n    };\n    this.removeEventListener = function (type, fn) {\n      if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\n    };\n    this.dispatchEvent = function (evt) {\n      var list = _this.listeners[evt.type];\n      if (list) {\n        for (var i = 0; i < list.length; i++) {\n          list[i].call(_this, evt);\n        }\n      }\n    };\n    this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\n\n    var constructEvent = function (type, evt) {\n      var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\n      if (evt.result != null) e.target.result = evt.result;\n      return e;\n    };\n    var listener = function (evt) {\n      if (!loadStarted) {\n        loadStarted = true;\n        if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\n      }\n      var e;\n      if (evt.type === 'load') {\n        if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\n        e = constructEvent('load', evt);\n        if (_this.onload) _this.onload(e);\n        _this.dispatchEvent(e);\n      } else if (evt.type === 'progress') {\n        e = constructEvent('progress', evt);\n        if (_this.onprogress) _this.onprogress(e);\n        _this.dispatchEvent(e);\n      } else {\n        e = constructEvent('error', evt);\n        if (_this.onerror) _this.onerror(e);\n        _this.dispatchEvent(e);\n      }\n    };\n    this.readAsDataURL = function (file) {\n      FileAPI.readAsDataURL(file, listener);\n    };\n    this.readAsText = function (file) {\n      FileAPI.readAsText(file, listener);\n    };\n  };\n}\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $key = 'key' + $lvl,\n    $idx = 'idx' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $dataProperties = 'dataProperties' + $lvl;\n  var $schemaKeys = Object.keys($schema || {}),\n    $pProperties = it.schema.patternProperties || {},\n    $pPropertyKeys = Object.keys($pProperties),\n    $aProperties = it.schema.additionalProperties,\n    $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n    $noAdditional = $aProperties === false,\n    $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n    $removeAdditional = it.opts.removeAdditional,\n    $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n    $ownProperties = it.opts.ownProperties,\n    $currentBaseId = it.baseId;\n  var $required = it.schema.required;\n  if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);\n  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n  if ($ownProperties) {\n    out += ' var ' + ($dataProperties) + ' = undefined;';\n  }\n  if ($checkAdditional) {\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    if ($someProperties) {\n      out += ' var isAdditional' + ($lvl) + ' = !(false ';\n      if ($schemaKeys.length) {\n        if ($schemaKeys.length > 8) {\n          out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n        } else {\n          var arr1 = $schemaKeys;\n          if (arr1) {\n            var $propertyKey, i1 = -1,\n              l1 = arr1.length - 1;\n            while (i1 < l1) {\n              $propertyKey = arr1[i1 += 1];\n              out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n            }\n          }\n        }\n      }\n      if ($pPropertyKeys.length) {\n        var arr2 = $pPropertyKeys;\n        if (arr2) {\n          var $pProperty, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $pProperty = arr2[$i += 1];\n            out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n          }\n        }\n      }\n      out += ' ); if (isAdditional' + ($lvl) + ') { ';\n    }\n    if ($removeAdditional == 'all') {\n      out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n    } else {\n      var $currentErrorPath = it.errorPath;\n      var $additionalProperty = '\\' + ' + $key + ' + \\'';\n      if (it.opts._errorDataPathProperty) {\n        it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n      }\n      if ($noAdditional) {\n        if ($removeAdditional) {\n          out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n        } else {\n          out += ' ' + ($nextValid) + ' = false; ';\n          var $currErrSchemaPath = $errSchemaPath;\n          $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          var $$outStack = $$outStack || [];\n          $$outStack.push(out);\n          out = ''; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is an invalid additional property';\n              } else {\n                out += 'should NOT have additional properties';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          var __err = out;\n          out = $$outStack.pop();\n          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n            if (it.async) {\n              out += ' throw new ValidationError([' + (__err) + ']); ';\n            } else {\n              out += ' validate.errors = [' + (__err) + ']; return false; ';\n            }\n          } else {\n            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n          }\n          $errSchemaPath = $currErrSchemaPath;\n          if ($breakOnError) {\n            out += ' break; ';\n          }\n        }\n      } else if ($additionalIsSchema) {\n        if ($removeAdditional == 'failing') {\n          out += ' var ' + ($errs) + ' = errors;  ';\n          var $wasComposite = it.compositeRule;\n          it.compositeRule = $it.compositeRule = true;\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';\n          it.compositeRule = $it.compositeRule = $wasComposite;\n        } else {\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n        }\n      }\n      it.errorPath = $currentErrorPath;\n    }\n    if ($someProperties) {\n      out += ' } ';\n    }\n    out += ' }  ';\n    if ($breakOnError) {\n      out += ' if (' + ($nextValid) + ') { ';\n      $closingBraces += '}';\n    }\n  }\n  var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n  if ($schemaKeys.length) {\n    var arr3 = $schemaKeys;\n    if (arr3) {\n      var $propertyKey, i3 = -1,\n        l3 = arr3.length - 1;\n      while (i3 < l3) {\n        $propertyKey = arr3[i3 += 1];\n        var $sch = $schema[$propertyKey];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          var $prop = it.util.getProperty($propertyKey),\n            $passData = $data + $prop,\n            $hasDefault = $useDefaults && $sch.default !== undefined;\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + $prop;\n          $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n          $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n          $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            $code = it.util.varReplace($code, $nextData, $passData);\n            var $useData = $passData;\n          } else {\n            var $useData = $nextData;\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n          }\n          if ($hasDefault) {\n            out += ' ' + ($code) + ' ';\n          } else {\n            if ($requiredHash && $requiredHash[$propertyKey]) {\n              out += ' if ( ' + ($useData) + ' === undefined ';\n              if ($ownProperties) {\n                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n              }\n              out += ') { ' + ($nextValid) + ' = false; ';\n              var $currentErrorPath = it.errorPath,\n                $currErrSchemaPath = $errSchemaPath,\n                $missingProperty = it.util.escapeQuotes($propertyKey);\n              if (it.opts._errorDataPathProperty) {\n                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n              }\n              $errSchemaPath = it.errSchemaPath + '/required';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'';\n                  if (it.opts._errorDataPathProperty) {\n                    out += 'is a required property';\n                  } else {\n                    out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              $errSchemaPath = $currErrSchemaPath;\n              it.errorPath = $currentErrorPath;\n              out += ' } else { ';\n            } else {\n              if ($breakOnError) {\n                out += ' if ( ' + ($useData) + ' === undefined ';\n                if ($ownProperties) {\n                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ') { ' + ($nextValid) + ' = true; } else { ';\n              } else {\n                out += ' if (' + ($useData) + ' !== undefined ';\n                if ($ownProperties) {\n                  out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ' ) { ';\n              }\n            }\n            out += ' ' + ($code) + ' } ';\n          }\n        }\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($pPropertyKeys.length) {\n    var arr4 = $pPropertyKeys;\n    if (arr4) {\n      var $pProperty, i4 = -1,\n        l4 = arr4.length - 1;\n      while (i4 < l4) {\n        $pProperty = arr4[i4 += 1];\n        var $sch = $pProperties[$pProperty];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          $it.schema = $sch;\n          $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n          $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n          if ($ownProperties) {\n            out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n          } else {\n            out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n          }\n          out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n          out += ' } ';\n          if ($breakOnError) {\n            out += ' else ' + ($nextValid) + ' = true; ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _actions = require(\"./actions\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Adds query to location.\n * Utilises the search prop of location to construct query.\n */\nvar injectQuery = function injectQuery(location) {\n  if (location && location.query) {\n    // Don't inject query if it already exists in history\n    return location;\n  }\n\n  var searchQuery = location && location.search;\n\n  if (typeof searchQuery !== 'string' || searchQuery.length === 0) {\n    return _objectSpread({}, location, {\n      query: {}\n    });\n  } // Ignore the `?` part of the search string e.g. ?username=codejockie\n\n\n  var search = searchQuery.substring(1); // Split the query string on `&` e.g. ?username=codejockie&name=Kennedy\n\n  var queries = search.split('&'); // Contruct query\n\n  var query = queries.reduce(function (acc, currentQuery) {\n    // Split on `=`, to get key and value\n    var _currentQuery$split = currentQuery.split('='),\n        _currentQuery$split2 = _slicedToArray(_currentQuery$split, 2),\n        queryKey = _currentQuery$split2[0],\n        queryValue = _currentQuery$split2[1];\n\n    return _objectSpread({}, acc, _defineProperty({}, queryKey, queryValue));\n  }, {});\n  return _objectSpread({}, location, {\n    query: query\n  });\n};\n\nvar createConnectRouter = function createConnectRouter(structure) {\n  var fromJS = structure.fromJS,\n      merge = structure.merge;\n\n  var createRouterReducer = function createRouterReducer(history) {\n    var initialRouterState = fromJS({\n      location: injectQuery(history.location),\n      action: history.action\n    });\n    /*\n    * This reducer will update the state with the most recent location history\n    * has transitioned to.\n    */\n\n    return function () {\n      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialRouterState;\n\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          type = _ref.type,\n          payload = _ref.payload;\n\n      if (type === _actions.LOCATION_CHANGE) {\n        var location = payload.location,\n            action = payload.action,\n            isFirstRendering = payload.isFirstRendering; // Don't update the state ref for the first rendering\n        // to prevent the double-rendering issue on initilization\n\n        return isFirstRendering ? state : merge(state, {\n          location: fromJS(injectQuery(location)),\n          action: action\n        });\n      }\n\n      return state;\n    };\n  };\n\n  return createRouterReducer;\n};\n\nvar _default = createConnectRouter;\nexports[\"default\"] = _default;","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone:\n                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                    '_'\n                ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(\n                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n                    function ($0, $1, $2) {\n                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                    }\n                );\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","function areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (newInputs[i] !== lastInputs[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort:\n            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n                '_'\n            ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./param\"));\n__export(require(\"./paramTypes\"));\n__export(require(\"./stateParams\"));\n__export(require(\"./paramType\"));\n//# sourceMappingURL=index.js.map","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $schemaDeps = {},\n    $propertyDeps = {},\n    $ownProperties = it.opts.ownProperties;\n  for ($property in $schema) {\n    var $sch = $schema[$property];\n    var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n    $deps[$property] = $sch;\n  }\n  out += 'var ' + ($errs) + ' = errors;';\n  var $currentErrorPath = it.errorPath;\n  out += 'var missing' + ($lvl) + ';';\n  for (var $property in $propertyDeps) {\n    $deps = $propertyDeps[$property];\n    if ($deps.length) {\n      out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      if ($breakOnError) {\n        out += ' && ( ';\n        var arr1 = $deps;\n        if (arr1) {\n          var $propertyKey, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $propertyKey = arr1[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ')) {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should have ';\n            if ($deps.length == 1) {\n              out += 'property ' + (it.util.escapeQuotes($deps[0]));\n            } else {\n              out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n            }\n            out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      } else {\n        out += ' ) { ';\n        var arr2 = $deps;\n        if (arr2) {\n          var $propertyKey, i2 = -1,\n            l2 = arr2.length - 1;\n          while (i2 < l2) {\n            $propertyKey = arr2[i2 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'should have ';\n                if ($deps.length == 1) {\n                  out += 'property ' + (it.util.escapeQuotes($deps[0]));\n                } else {\n                  out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n                }\n                out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n      out += ' }   ';\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n  }\n  it.errorPath = $currentErrorPath;\n  var $currentBaseId = $it.baseId;\n  for (var $property in $schemaDeps) {\n    var $sch = $schemaDeps[$property];\n    if (it.util.schemaHasRules($sch, it.RULES.all)) {\n      out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      out += ') { ';\n      $it.schema = $sch;\n      $it.schemaPath = $schemaPath + it.util.getProperty($property);\n      $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport TabContext from './TabContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Fade from './Fade';\n\nfunction useTabContext(props) {\n  var context = useContext(TabContext);\n  if (!context) return props;\n\n  var activeKey = context.activeKey,\n      getControlledId = context.getControlledId,\n      getControllerId = context.getControllerId,\n      rest = _objectWithoutPropertiesLoose(context, [\"activeKey\", \"getControlledId\", \"getControllerId\"]);\n\n  var shouldTransition = props.transition !== false && rest.transition !== false;\n  var key = makeEventKey(props.eventKey);\n  return _extends({}, props, {\n    active: props.active == null && key != null ? makeEventKey(activeKey) === key : props.active,\n    id: getControlledId(props.eventKey),\n    'aria-labelledby': getControllerId(props.eventKey),\n    transition: shouldTransition && (props.transition || rest.transition || Fade),\n    mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,\n    unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit\n  });\n}\n\nvar TabPane = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _useTabContext = useTabContext(props),\n      bsPrefix = _useTabContext.bsPrefix,\n      className = _useTabContext.className,\n      active = _useTabContext.active,\n      onEnter = _useTabContext.onEnter,\n      onEntering = _useTabContext.onEntering,\n      onEntered = _useTabContext.onEntered,\n      onExit = _useTabContext.onExit,\n      onExiting = _useTabContext.onExiting,\n      onExited = _useTabContext.onExited,\n      mountOnEnter = _useTabContext.mountOnEnter,\n      unmountOnExit = _useTabContext.unmountOnExit,\n      Transition = _useTabContext.transition,\n      _useTabContext$as = _useTabContext.as,\n      Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,\n      _ = _useTabContext.eventKey,\n      rest = _objectWithoutPropertiesLoose(_useTabContext, [\"bsPrefix\", \"className\", \"active\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"transition\", \"as\", \"eventKey\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n  if (!active && !Transition && unmountOnExit) return null;\n  var pane = /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    role: \"tabpanel\",\n    \"aria-hidden\": !active,\n    className: classNames(className, prefix, {\n      active: active\n    })\n  }));\n  if (Transition) pane = /*#__PURE__*/React.createElement(Transition, {\n    in: active,\n    onEnter: onEnter,\n    onEntering: onEntering,\n    onEntered: onEntered,\n    onExit: onExit,\n    onExiting: onExiting,\n    onExited: onExited,\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: unmountOnExit\n  }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't\n  // conflict with the top level one.\n\n  return /*#__PURE__*/React.createElement(TabContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: null\n  }, pane));\n});\nTabPane.displayName = 'TabPane';\nexport default TabPane;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `String.prototype.isWellFormed` method\n// https://tc39.es/ecma262/#sec-string.prototype.iswellformed\n$({ target: 'String', proto: true }, {\n  isWellFormed: function isWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    var length = S.length;\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) continue;\n      // unpaired surrogate\n      if (charCode >= 0xDC00 || ++i >= length || (charCodeAt(S, i) & 0xFC00) !== 0xDC00) return false;\n    } return true;\n  }\n});\n","/*! formdata-polyfill. MIT License. Jimmy W?rting <https://jimmy.warting.se/opensource> */\n;(function(){var h;function l(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var m=\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};\nfunction n(a){a=[\"object\"==typeof globalThis&&globalThis,a,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error(\"Cannot find global object\");}var q=n(this);function r(a,b){if(b)a:{var c=q;a=a.split(\".\");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&m(c,a,{configurable:!0,writable:!0,value:b})}}\nr(\"Symbol\",function(a){function b(f){if(this instanceof b)throw new TypeError(\"Symbol is not a constructor\");return new c(d+(f||\"\")+\"_\"+e++,f)}function c(f,g){this.A=f;m(this,\"description\",{configurable:!0,writable:!0,value:g})}if(a)return a;c.prototype.toString=function(){return this.A};var d=\"jscomp_symbol_\"+(1E9*Math.random()>>>0)+\"_\",e=0;return b});\nr(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;c<b.length;c++){var d=q[b[c]];\"function\"===typeof d&&\"function\"!=typeof d.prototype[a]&&m(d.prototype,a,{configurable:!0,writable:!0,value:function(){return u(l(this))}})}return a});function u(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}\nfunction v(a){var b=\"undefined\"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:l(a)}}var w;if(\"function\"==typeof Object.setPrototypeOf)w=Object.setPrototypeOf;else{var y;a:{var z={a:!0},A={};try{A.__proto__=z;y=A.a;break a}catch(a){}y=!1}w=y?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+\" is not extensible\");return a}:null}var B=w;function C(){this.m=!1;this.j=null;this.v=void 0;this.h=1;this.u=this.C=0;this.l=null}\nfunction D(a){if(a.m)throw new TypeError(\"Generator is already running\");a.m=!0}C.prototype.o=function(a){this.v=a};C.prototype.s=function(a){this.l={D:a,F:!0};this.h=this.C||this.u};C.prototype.return=function(a){this.l={return:a};this.h=this.u};function E(a,b){a.h=3;return{value:b}}function F(a){this.g=new C;this.G=a}F.prototype.o=function(a){D(this.g);if(this.g.j)return G(this,this.g.j.next,a,this.g.o);this.g.o(a);return H(this)};\nfunction I(a,b){D(a.g);var c=a.g.j;if(c)return G(a,\"return\"in c?c[\"return\"]:function(d){return{value:d,done:!0}},b,a.g.return);a.g.return(b);return H(a)}F.prototype.s=function(a){D(this.g);if(this.g.j)return G(this,this.g.j[\"throw\"],a,this.g.o);this.g.s(a);return H(this)};\nfunction G(a,b,c,d){try{var e=b.call(a.g.j,c);if(!(e instanceof Object))throw new TypeError(\"Iterator result \"+e+\" is not an object\");if(!e.done)return a.g.m=!1,e;var f=e.value}catch(g){return a.g.j=null,a.g.s(g),H(a)}a.g.j=null;d.call(a.g,f);return H(a)}function H(a){for(;a.g.h;)try{var b=a.G(a.g);if(b)return a.g.m=!1,{value:b.value,done:!1}}catch(c){a.g.v=void 0,a.g.s(c)}a.g.m=!1;if(a.g.l){b=a.g.l;a.g.l=null;if(b.F)throw b.D;return{value:b.return,done:!0}}return{value:void 0,done:!0}}\nfunction J(a){this.next=function(b){return a.o(b)};this.throw=function(b){return a.s(b)};this.return=function(b){return I(a,b)};this[Symbol.iterator]=function(){return this}}function K(a,b){b=new J(new F(b));B&&a.prototype&&B(b,a.prototype);return b}function L(a,b){a instanceof String&&(a+=\"\");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e}\nr(\"Array.prototype.entries\",function(a){return a?a:function(){return L(this,function(b,c){return[b,c]})}});\nif(\"undefined\"!==typeof Blob&&(\"undefined\"===typeof FormData||!FormData.prototype.keys)){var M=function(a,b){for(var c=0;c<a.length;c++)b(a[c])},N=function(a){return a.replace(/\\r?\\n|\\r/g,\"\\r\\n\")},O=function(a,b,c){if(b instanceof Blob){c=void 0!==c?String(c+\"\"):\"string\"===typeof b.name?b.name:\"blob\";if(b.name!==c||\"[object Blob]\"===Object.prototype.toString.call(b))b=new File([b],c);return[String(a),b]}return[String(a),String(b)]},P=function(a,b){if(a.length<b)throw new TypeError(b+\" argument required, but only \"+\na.length+\" present.\");},Q=\"object\"===typeof globalThis?globalThis:\"object\"===typeof window?window:\"object\"===typeof self?self:this,R=Q.FormData,S=Q.XMLHttpRequest&&Q.XMLHttpRequest.prototype.send,T=Q.Request&&Q.fetch,U=Q.navigator&&Q.navigator.sendBeacon,V=Q.Element&&Q.Element.prototype,W=Q.Symbol&&Symbol.toStringTag;W&&(Blob.prototype[W]||(Blob.prototype[W]=\"Blob\"),\"File\"in Q&&!File.prototype[W]&&(File.prototype[W]=\"File\"));try{new File([],\"\")}catch(a){Q.File=function(b,c,d){b=new Blob(b,d||{});\nObject.defineProperties(b,{name:{value:c},lastModified:{value:+(d&&void 0!==d.lastModified?new Date(d.lastModified):new Date)},toString:{value:function(){return\"[object File]\"}}});W&&Object.defineProperty(b,W,{value:\"File\"});return b}}var escape=function(a){return a.replace(/\\n/g,\"%0A\").replace(/\\r/g,\"%0D\").replace(/\"/g,\"%22\")},X=function(a){this.i=[];var b=this;a&&M(a.elements,function(c){if(c.name&&!c.disabled&&\"submit\"!==c.type&&\"button\"!==c.type&&!c.matches(\"form fieldset[disabled] *\"))if(\"file\"===\nc.type){var d=c.files&&c.files.length?c.files:[new File([],\"\",{type:\"application/octet-stream\"})];M(d,function(e){b.append(c.name,e)})}else\"select-multiple\"===c.type||\"select-one\"===c.type?M(c.options,function(e){!e.disabled&&e.selected&&b.append(c.name,e.value)}):\"checkbox\"===c.type||\"radio\"===c.type?c.checked&&b.append(c.name,c.value):(d=\"textarea\"===c.type?N(c.value):c.value,b.append(c.name,d))})};h=X.prototype;h.append=function(a,b,c){P(arguments,2);this.i.push(O(a,b,c))};h.delete=function(a){P(arguments,\n1);var b=[];a=String(a);M(this.i,function(c){c[0]!==a&&b.push(c)});this.i=b};h.entries=function b(){var c,d=this;return K(b,function(e){1==e.h&&(c=0);if(3!=e.h)return c<d.i.length?e=E(e,d.i[c]):(e.h=0,e=void 0),e;c++;e.h=2})};h.forEach=function(b,c){P(arguments,1);for(var d=v(this),e=d.next();!e.done;e=d.next()){var f=v(e.value);e=f.next().value;f=f.next().value;b.call(c,f,e,this)}};h.get=function(b){P(arguments,1);var c=this.i;b=String(b);for(var d=0;d<c.length;d++)if(c[d][0]===b)return c[d][1];\nreturn null};h.getAll=function(b){P(arguments,1);var c=[];b=String(b);M(this.i,function(d){d[0]===b&&c.push(d[1])});return c};h.has=function(b){P(arguments,1);b=String(b);for(var c=0;c<this.i.length;c++)if(this.i[c][0]===b)return!0;return!1};h.keys=function c(){var d=this,e,f,g,k,p;return K(c,function(t){1==t.h&&(e=v(d),f=e.next());if(3!=t.h){if(f.done){t.h=0;return}g=f.value;k=v(g);p=k.next().value;return E(t,p)}f=e.next();t.h=2})};h.set=function(c,d,e){P(arguments,2);c=String(c);var f=[],g=O(c,\nd,e),k=!0;M(this.i,function(p){p[0]===c?k&&(k=!f.push(g)):f.push(p)});k&&f.push(g);this.i=f};h.values=function d(){var e=this,f,g,k,p,t;return K(d,function(x){1==x.h&&(f=v(e),g=f.next());if(3!=x.h){if(g.done){x.h=0;return}k=g.value;p=v(k);p.next();t=p.next().value;return E(x,t)}g=f.next();x.h=2})};X.prototype._asNative=function(){for(var d=new R,e=v(this),f=e.next();!f.done;f=e.next()){var g=v(f.value);f=g.next().value;g=g.next().value;d.append(f,g)}return d};X.prototype._blob=function(){var d=\"----formdata-polyfill-\"+\nMath.random(),e=[],f=\"--\"+d+'\\r\\nContent-Disposition: form-data; name=\"';this.forEach(function(g,k){return\"string\"==typeof g?e.push(f+escape(N(k))+('\"\\r\\n\\r\\n'+N(g)+\"\\r\\n\")):e.push(f+escape(N(k))+('\"; filename=\"'+escape(g.name)+'\"\\r\\nContent-Type: '+(g.type||\"application/octet-stream\")+\"\\r\\n\\r\\n\"),g,\"\\r\\n\")});e.push(\"--\"+d+\"--\");return new Blob(e,{type:\"multipart/form-data; boundary=\"+d})};X.prototype[Symbol.iterator]=function(){return this.entries()};X.prototype.toString=function(){return\"[object FormData]\"};\nV&&!V.matches&&(V.matches=V.matchesSelector||V.mozMatchesSelector||V.msMatchesSelector||V.oMatchesSelector||V.webkitMatchesSelector||function(d){d=(this.document||this.ownerDocument).querySelectorAll(d);for(var e=d.length;0<=--e&&d.item(e)!==this;);return-1<e});W&&(X.prototype[W]=\"FormData\");if(S){var Y=Q.XMLHttpRequest.prototype.setRequestHeader;Q.XMLHttpRequest.prototype.setRequestHeader=function(d,e){Y.call(this,d,e);\"content-type\"===d.toLowerCase()&&(this.B=!0)};Q.XMLHttpRequest.prototype.send=\nfunction(d){d instanceof X?(d=d._blob(),this.B||this.setRequestHeader(\"Content-Type\",d.type),S.call(this,d)):S.call(this,d)}}T&&(Q.fetch=function(d,e){e&&e.body&&e.body instanceof X&&(e.body=e.body._blob());return T.call(this,d,e)});U&&(Q.navigator.sendBeacon=function(d,e){e instanceof X&&(e=e._asNative());return U.call(this,d,e)});Q.FormData=X};})();\n","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar TrackPublication = require('./trackpublication');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link LocalTrackPublication} is a {@link LocalTrack} that has been\n * published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isTrackEnabled - whether the published {@link LocalTrack}\n *   is enabled\n * @property {Track.Kind} kind - kind of the published {@link LocalTrack}\n * @property {Track.Priority} priority - the publish priority of the {@link LocalTrack}\n * @property {LocalTrack} track - the {@link LocalTrack}\n * @emits LocalTrackPublication#warning\n * @emits LocalTrackPublication#warningsCleared\n */\nvar LocalTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalTrackPublication, _super);\n    /**\n     * Construct a {@link LocalTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalTrack} track - The {@link LocalTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *   that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication}\n     *   options\n     */\n    function LocalTrackPublication(signaling, track, unpublish, options) {\n        var _this = _super.call(this, track.name, signaling.sid, options) || this;\n        Object.defineProperties(_this, {\n            _reemitSignalingEvent: {\n                value: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return _this.emit.apply(_this, __spreadArray([args && args.length ? 'warning' : 'warningsCleared'], __read(args)));\n                }\n            },\n            _reemitTrackEvent: {\n                value: function () { return _this.emit(_this.isTrackEnabled\n                    ? 'trackEnabled'\n                    : 'trackDisabled'); }\n            },\n            _signaling: {\n                value: signaling\n            },\n            _unpublish: {\n                value: unpublish\n            },\n            isTrackEnabled: {\n                enumerable: true,\n                get: function () {\n                    return this.track.kind === 'data' ? true : this.track.isEnabled;\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: track.kind\n            },\n            priority: {\n                enumerable: true,\n                get: function () {\n                    return signaling.updatedPriority;\n                }\n            },\n            track: {\n                enumerable: true,\n                value: track\n            }\n        });\n        ['disabled', 'enabled'].forEach(function (name) {\n            return track.on(name, _this._reemitTrackEvent);\n        });\n        ['warning', 'warningsCleared'].forEach(function (name) {\n            return signaling.on(name, _this._reemitSignalingEvent);\n        });\n        return _this;\n    }\n    LocalTrackPublication.prototype.toString = function () {\n        return \"[LocalTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    /**\n     * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n     * @param {Track.Priority} priority - the new {@link Track.priority}\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    LocalTrackPublication.prototype.setPriority = function (priority) {\n        var priorityValues = Object.values(trackPriority);\n        if (!priorityValues.includes(priority)) {\n            throw E.INVALID_VALUE('priority', priorityValues);\n        }\n        this._signaling.setPriority(priority);\n        return this;\n    };\n    /**\n     * Unpublish a {@link LocalTrackPublication}. This means that the media\n     * from this {@link LocalTrackPublication} is no longer available to the\n     * {@link Room}'s {@link RemoteParticipant}s.\n     * @returns {this}\n     */\n    LocalTrackPublication.prototype.unpublish = function () {\n        var _this = this;\n        ['disabled', 'enabled'].forEach(function (name) {\n            return _this.track.removeListener(name, _this._reemitTrackEvent);\n        });\n        ['warning', 'warningsCleared'].forEach(function (name) {\n            return _this._signaling.removeListener(name, _this._reemitSignalingEvent);\n        });\n        this._unpublish(this);\n        return this;\n    };\n    return LocalTrackPublication;\n}(TrackPublication));\n/**\n * The published {@link LocalTrack} encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @event LocalTrackPublication#warning\n * @param {string} name - The warning that was raised.\n */\n/**\n * The published {@link LocalTrack} cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @event LocalTrackPublication#warningsCleared\n */\nmodule.exports = LocalTrackPublication;\n//# sourceMappingURL=localtrackpublication.js.map","var arraySome = require('./_arraySome'),\n    baseIteratee = require('./_baseIteratee'),\n    baseSome = require('./_baseSome'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar _a = require('./util/constants'), DEFAULT_LOG_LEVEL = _a.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _a.DEFAULT_LOGGER_NAME;\n/**\n * Request a {@link LocalAudioTrack} or {@link LocalVideoTrack}.\n * @param {Track.Kind} kind - \"audio\" or \"video\"\n * @param {CreateLocalTrackOptions} [options]\n * @returns {Promise<LocalAudioTrack|LocalVideoTrack>}\n * @private\n */\nfunction createLocalTrack(kind, options) {\n    options = Object.assign({\n        loggerName: DEFAULT_LOGGER_NAME,\n        logLevel: DEFAULT_LOG_LEVEL,\n    }, options);\n    var createOptions = {};\n    createOptions.loggerName = options.loggerName;\n    createOptions.logLevel = options.logLevel;\n    delete options.loggerName;\n    delete options.logLevel;\n    var createLocalTracks = options.createLocalTracks;\n    delete options.createLocalTracks;\n    createOptions[kind] = Object.keys(options).length > 0 ? options : true;\n    return createLocalTracks(createOptions).then(function (localTracks) { return localTracks[0]; });\n}\n/**\n * Request a {@link LocalAudioTrack}.\n * @alias module:twilio-video.createLocalAudioTrack\n * @param {CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [options] - Options for requesting a {@link LocalAudioTrack}\n * @returns {Promise<LocalAudioTrack>}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just video\n * Video.connect('my-token', {\n *   name: 'my-cool-room',\n *   video: true\n * }).then(function(room) {\n *   // Add audio after connecting to the Room\n *   Video.createLocalAudioTrack().then(function(localTrack) {\n *     room.localParticipant.publishTrack(localTrack);\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the LocalAudioTrack with a custom name\n * // and krisp noise cancellation\n * Video.createLocalAudioTrack({\n *   name: 'microphone',\n *   noiseCancellationOptions: {\n *      vendor: 'krisp',\n *      sdkAssetsPath: '/twilio-krisp-audio-plugin/1.0.0/dist'\n *   }\n * });\n */\nfunction createLocalAudioTrack(options) {\n    return createLocalTrack('audio', options);\n}\n/**\n * Request a {@link LocalVideoTrack}. Note that on mobile browsers,\n * the camera can be reserved by only one {@link LocalVideoTrack} at any given\n * time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalVideoTrack\n * @param {CreateLocalTrackOptions} [options] - Options for requesting a {@link LocalVideoTrack}\n * @returns {Promise<LocalVideoTrack>}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just audio\n * Video.connect('my-token', {\n *   name: 'my-cool-room',\n *   audio: true\n * }).then(function(room) {\n *   // Add video after connecting to the Room\n *   Video.createLocalVideoTrack().then(function(localTrack) {\n *     room.localParticipant.publishTrack(localTrack);\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the default LocalVideoTrack with a custom name\n * Video.createLocalVideoTrack({ name: 'camera' }).then(function(localTrack) {\n *   console.log(localTrack.name); // 'camera'\n * });\n */\nfunction createLocalVideoTrack(options) {\n    return createLocalTrack('video', options);\n}\n/**\n * {@link NoiseCancellationVendor} specifies the 3rd party plugin to use for noise cancellation.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar NoiseCancellationVendor = {\n    /**\n     * This plugin can be found by requesting access with this form {@link https://forms.gle/eeFyoGJj1mgMrxN88}\n     */\n    krisp: 'krisp',\n};\n/**\n * You can use 3rd party noise cancellation plugin when creating {@link LocalAudioTrack}\n * By specifying these options. This is a beta feature.\n * @typedef {object} NoiseCancellationOptions\n * @property {NoiseCancellationVendor} vendor - Specifies the vendor library to use\n *   You need to obtain and host the library files on your web server.\n * @property {string} sdkAssetsPath - Specifies path where vendor library files are\n *   hosted on your web server.\n */\n/**\n * Create {@link LocalAudioTrack} options.\n * @typedef {CreateLocalTrackOptions} CreateLocalAudioTrackOptions\n * @property {boolean} [workaroundWebKitBug180748=false] - setting this\n *   attempts to workaround WebKit Bug 180748, where, in Safari, getUserMedia may return a silent audio\n *   MediaStreamTrack.\n * @property {DefaultDeviceCaptureMode} [defaultDeviceCaptureMode=\"auto\"] - This optional property only applies if the\n *   {@link LocalAudioTrack} is capturing from the default audio input device connected to a desktop or laptop. When the\n *   property is set to \"auto\", the LocalAudioTrack restarts whenever the default audio input device changes, in order to\n *   capture audio from the new default audio input device. For example, when a bluetooth audio headset is connected to a\n *   Macbook, the LocalAudioTrack will start capturing audio from the headset microphone. When the headset is disconnected,\n *   the LocalAudioTrack will start capturing audio from the Macbook microphone. When the property is set to \"manual\", the\n *   LocalAudioTrack continues to capture from the same audio input device even after the default audio input device changes.\n *   When the property is not specified, it defaults to \"auto\".\n * @property {NoiseCancellationOptions} [noiseCancellationOptions] - This optional property enables using 3rd party plugins\n *   for noise cancellation.\n */\n/**\n * Create {@link LocalTrack} options. Apart from the properties listed here, you can\n * also specify any of the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n * properties.\n * @typedef {MediaTrackConstraints} CreateLocalTrackOptions\n * @property {LogLevel|LogLevels} [logLevel='warn'] - <code>(deprecated: use [Video.Logger](module-twilio-video.html) instead.\n *   See [examples](module-twilio-video.html#.connect) for details)</code>\n *   Set the default log verbosity\n *   of logging. Passing a {@link LogLevel} string will use the same\n *   level for all components. Pass a {@link LogLevels} to set specific log\n *   levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n *   See [examples](module-twilio-video.html#.connect) for details.\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n *   it is set to the {@link LocalTrack}'s ID.\n */\nmodule.exports = {\n    audio: createLocalAudioTrack,\n    video: createLocalVideoTrack\n};\n//# sourceMappingURL=createlocaltrack.js.map","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module params\n */\n/** */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\n/**\n * An internal class which implements [[ParamTypeDefinition]].\n *\n * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n * When a param type definition is registered, an instance of this class is created internally.\n *\n * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n *\n * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n *\n * #### Example:\n * ```js\n * var paramTypeDef = {\n *   decode: function(val) { return parseInt(val, 10); },\n *   encode: function(val) { return val && val.toString(); },\n *   equals: function(a, b) { return this.is(a) && a === b; },\n *   is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n *   pattern: /\\d+/\n * }\n *\n * var paramType = new ParamType(paramTypeDef);\n * ```\n * @internalapi\n */\nvar ParamType = /** @class */ (function () {\n    /**\n     * @param def  A configuration object which contains the custom type definition.  The object's\n     *        properties will override the default methods and/or pattern in `ParamType`'s public interface.\n     * @returns a new ParamType object\n     */\n    function ParamType(def) {\n        /** @inheritdoc */\n        this.pattern = /.*/;\n        /** @inheritdoc */\n        this.inherit = true;\n        common_1.extend(this, def);\n    }\n    // consider these four methods to be \"abstract methods\" that should be overridden\n    /** @inheritdoc */\n    ParamType.prototype.is = function (val, key) { return true; };\n    /** @inheritdoc */\n    ParamType.prototype.encode = function (val, key) { return val; };\n    /** @inheritdoc */\n    ParamType.prototype.decode = function (val, key) { return val; };\n    /** @inheritdoc */\n    ParamType.prototype.equals = function (a, b) { return a == b; }; // tslint:disable-line:triple-equals\n    ParamType.prototype.$subPattern = function () {\n        var sub = this.pattern.toString();\n        return sub.substr(1, sub.length - 2);\n    };\n    ParamType.prototype.toString = function () {\n        return \"{ParamType:\" + this.name + \"}\";\n    };\n    /** Given an encoded string, or a decoded object, returns a decoded object */\n    ParamType.prototype.$normalize = function (val) {\n        return this.is(val) ? val : this.decode(val);\n    };\n    /**\n     * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n     * e.g.:\n     * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n     * - url: \"/path?queryParam=1&queryParam=2\n     * - $stateParams.queryParam will be [1, 2]\n     * if `mode` is \"auto\", then\n     * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n     * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n     */\n    ParamType.prototype.$asArray = function (mode, isSearch) {\n        if (!mode)\n            return this;\n        if (mode === 'auto' && !isSearch)\n            throw new Error(\"'auto' array mode is for query parameters only\");\n        return new ArrayType(this, mode);\n    };\n    return ParamType;\n}());\nexports.ParamType = ParamType;\n/**\n * Wraps up a `ParamType` object to handle array values.\n * @internalapi\n */\nfunction ArrayType(type, mode) {\n    var _this = this;\n    // Wrap non-array value as array\n    function arrayWrap(val) {\n        return predicates_1.isArray(val) ? val : (predicates_1.isDefined(val) ? [val] : []);\n    }\n    // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n    function arrayUnwrap(val) {\n        switch (val.length) {\n            case 0: return undefined;\n            case 1: return mode === 'auto' ? val[0] : val;\n            default: return val;\n        }\n    }\n    // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n    function arrayHandler(callback, allTruthyMode) {\n        return function handleArray(val) {\n            if (predicates_1.isArray(val) && val.length === 0)\n                return val;\n            var arr = arrayWrap(val);\n            var result = common_1.map(arr, callback);\n            return (allTruthyMode === true) ? common_1.filter(result, function (x) { return !x; }).length === 0 : arrayUnwrap(result);\n        };\n    }\n    // Wraps type (.equals) functions to operate on each value of an array\n    function arrayEqualsHandler(callback) {\n        return function handleArray(val1, val2) {\n            var left = arrayWrap(val1), right = arrayWrap(val2);\n            if (left.length !== right.length)\n                return false;\n            for (var i = 0; i < left.length; i++) {\n                if (!callback(left[i], right[i]))\n                    return false;\n            }\n            return true;\n        };\n    }\n    ['encode', 'decode', 'equals', '$normalize'].forEach(function (name) {\n        var paramTypeFn = type[name].bind(type);\n        var wrapperFn = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n        _this[name] = wrapperFn(paramTypeFn);\n    });\n    common_1.extend(this, {\n        dynamic: type.dynamic,\n        name: type.name,\n        pattern: type.pattern,\n        inherit: type.inherit,\n        is: arrayHandler(type.is.bind(type), true),\n        $arrayMode: mode,\n    });\n}\n//# sourceMappingURL=paramType.js.map","'use strict';\nvar _a = require('../webrtc/util'), guessBrowser = _a.guessBrowser, isWebRTCSupported = _a.support;\nvar getSdpFormat = require('../webrtc/util/sdp').getSdpFormat;\nvar _b = require('./browserdetection'), isAndroid = _b.isAndroid, isMobile = _b.isMobile, isNonChromiumEdge = _b.isNonChromiumEdge, rebrandedChromeBrowser = _b.rebrandedChromeBrowser, mobileWebKitBrowser = _b.mobileWebKitBrowser;\nvar SUPPORTED_CHROME_BASED_BROWSERS = [\n    'crios',\n    'edg',\n    'edge',\n    'electron',\n    'headlesschrome'\n];\nvar SUPPORTED_ANDROID_BROWSERS = [\n    'chrome',\n    'firefox'\n];\nvar SUPPORTED_IOS_BROWSERS = [\n    'chrome',\n    'safari'\n];\n// Currently none. Add 'brave', 'edg', and 'edge' here once we start supporting them\nvar SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS = [];\n/**\n * Check if the current browser is officially supported by twilio-video.js.\n * @returns {boolean}\n */\nfunction isSupported() {\n    var browser = guessBrowser();\n    // NOTE (csantos): Return right away if there is no browser detected\n    // to prevent unnecessary checks which could lead to errors\n    if (!browser) {\n        return false;\n    }\n    var rebrandedChrome = rebrandedChromeBrowser(browser);\n    var mobileWebKit = mobileWebKitBrowser(browser);\n    var supportedMobileBrowsers = isAndroid() ?\n        SUPPORTED_ANDROID_BROWSERS : SUPPORTED_IOS_BROWSERS;\n    return !!browser\n        && isWebRTCSupported()\n        && getSdpFormat() === 'unified'\n        && (!rebrandedChrome || SUPPORTED_CHROME_BASED_BROWSERS.includes(rebrandedChrome))\n        && !isNonChromiumEdge(browser)\n        && (!mobileWebKit || SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS.includes(mobileWebKit))\n        && (!isMobile() || supportedMobileBrowsers.includes(browser));\n}\nmodule.exports = isSupported;\n//# sourceMappingURL=support.js.map","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VirtualBackgroundProcessor = void 0;\nvar BackgroundProcessor_1 = require(\"./BackgroundProcessor\");\nvar types_1 = require(\"../../types\");\n/**\n * The VirtualBackgroundProcessor, when added to a VideoTrack,\n * replaces the background in each video frame with a given image,\n * and leaves the foreground (person(s)) untouched. Each instance of\n * VirtualBackgroundProcessor should be added to only one VideoTrack\n * at a time to prevent overlapping of image data from multiple VideoTracks.\n *\n * @example\n *\n * ```ts\n * import { createLocalVideoTrack } from 'twilio-video';\n * import { Pipeline, VirtualBackgroundProcessor } from '@twilio/video-processors';\n * import { simd } from 'wasm-feature-detect';\n *\n * let virtualBackground: VirtualBackgroundProcessor;\n * const img = new Image();\n *\n * img.onload = async () => {\n *   const isWasmSimdSupported = await simd();\n *\n *   virtualBackground = new VirtualBackgroundProcessor({\n *     assetsPath: 'https://my-server-path/assets',\n *     backgroundImage: img,\n *\n *     // Enable debounce only if the browser does not support\n *     // WASM SIMD in order to retain an acceptable frame rate.\n *     debounce: !isWasmSimdSupported,\n *\n *     pipeline: Pipeline.WebGL2,\n *   });\n *   await virtualBackground.loadModel();\n *\n *   const track = await createLocalVideoTrack({\n *     // Increasing the capture resolution decreases the output FPS\n *     // especially on browsers that do not support SIMD\n *     // such as desktop Safari and iOS browsers, or on Chrome\n *     // with capture resolutions above 640x480 for webgl2.\n *     width: 640,\n *     height: 480,\n *\n *     // Any frame rate above 24 fps on desktop browsers increase CPU\n *     // usage without noticeable increase in quality.\n *     frameRate: 24\n *   });\n *   track.addProcessor(virtualBackground, {\n *     inputFrameBufferType: 'video',\n *     outputFrameBufferContextType: 'webgl2',\n *   });\n * };\n *\n * img.src = '/background.jpg';\n * ```\n */\nvar VirtualBackgroundProcessor = /** @class */ (function (_super) {\n    __extends(VirtualBackgroundProcessor, _super);\n    /**\n     * Construct a VirtualBackgroundProcessor. Default values will be used for\n     * any missing optional properties in [[VirtualBackgroundProcessorOptions]],\n     * and invalid properties will be ignored.\n     */\n    function VirtualBackgroundProcessor(options) {\n        var _this = _super.call(this, options) || this;\n        // tslint:disable-next-line no-unused-variable\n        _this._name = 'VirtualBackgroundProcessor';\n        _this.backgroundImage = options.backgroundImage;\n        _this.fitType = options.fitType;\n        return _this;\n    }\n    Object.defineProperty(VirtualBackgroundProcessor.prototype, \"backgroundImage\", {\n        /**\n         * The HTMLImageElement representing the current background image.\n         */\n        get: function () {\n            return this._backgroundImage;\n        },\n        /**\n         * Set an HTMLImageElement as the new background image.\n         * An error will be raised if the image hasn't been fully loaded yet. Additionally, the image must follow\n         * [security guidelines](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image)\n         * when loading the image from a different origin. Failing to do so will result to an empty output frame.\n         */\n        set: function (image) {\n            var _a;\n            if (!image || !image.complete || !image.naturalHeight) {\n                throw new Error('Invalid image. Make sure that the image is an HTMLImageElement and has been successfully loaded');\n            }\n            this._backgroundImage = image;\n            // Triggers recreation of the pipeline in the next processFrame call\n            (_a = this._webgl2Pipeline) === null || _a === void 0 ? void 0 : _a.cleanUp();\n            this._webgl2Pipeline = null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(VirtualBackgroundProcessor.prototype, \"fitType\", {\n        /**\n         * The current [[ImageFit]] for positioning of the background image in the viewport.\n         */\n        get: function () {\n            return this._fitType;\n        },\n        /**\n         * Set a new [[ImageFit]] to be used for positioning the background image in the viewport.\n         */\n        set: function (fitType) {\n            var validTypes = Object.keys(types_1.ImageFit);\n            if (!validTypes.includes(fitType)) {\n                console.warn(\"Valid fitType not found. Using '\".concat(types_1.ImageFit.Fill, \"' as default.\"));\n                fitType = types_1.ImageFit.Fill;\n            }\n            this._fitType = fitType;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    VirtualBackgroundProcessor.prototype._getWebGL2PipelineType = function () {\n        return types_1.WebGL2PipelineType.Image;\n    };\n    VirtualBackgroundProcessor.prototype._setBackground = function () {\n        if (!this._outputContext || !this._outputCanvas) {\n            return;\n        }\n        var img = this._backgroundImage;\n        var imageWidth = img.naturalWidth;\n        var imageHeight = img.naturalHeight;\n        var canvasWidth = this._outputCanvas.width;\n        var canvasHeight = this._outputCanvas.height;\n        var ctx = this._outputContext;\n        if (this._fitType === types_1.ImageFit.Fill) {\n            ctx.drawImage(img, 0, 0, imageWidth, imageHeight, 0, 0, canvasWidth, canvasHeight);\n        }\n        else if (this._fitType === types_1.ImageFit.None) {\n            ctx.drawImage(img, 0, 0, imageWidth, imageHeight);\n        }\n        else if (this._fitType === types_1.ImageFit.Contain) {\n            var _a = this._getFitPosition(imageWidth, imageHeight, canvasWidth, canvasHeight, types_1.ImageFit.Contain), x = _a.x, y = _a.y, w = _a.w, h = _a.h;\n            ctx.drawImage(img, 0, 0, imageWidth, imageHeight, x, y, w, h);\n        }\n        else if (this._fitType === types_1.ImageFit.Cover) {\n            var _b = this._getFitPosition(imageWidth, imageHeight, canvasWidth, canvasHeight, types_1.ImageFit.Cover), x = _b.x, y = _b.y, w = _b.w, h = _b.h;\n            ctx.drawImage(img, 0, 0, imageWidth, imageHeight, x, y, w, h);\n        }\n    };\n    VirtualBackgroundProcessor.prototype._getFitPosition = function (contentWidth, contentHeight, viewportWidth, viewportHeight, type) {\n        // Calculate new content width to fit viewport width\n        var factor = viewportWidth / contentWidth;\n        var newContentWidth = viewportWidth;\n        var newContentHeight = factor * contentHeight;\n        // Scale down the resulting height and width more\n        // to fit viewport height if the content still exceeds it\n        if ((type === types_1.ImageFit.Contain && newContentHeight > viewportHeight)\n            || (type === types_1.ImageFit.Cover && viewportHeight > newContentHeight)) {\n            factor = viewportHeight / newContentHeight;\n            newContentWidth = factor * newContentWidth;\n            newContentHeight = viewportHeight;\n        }\n        // Calculate the destination top left corner to center the content\n        var x = (viewportWidth - newContentWidth) / 2;\n        var y = (viewportHeight - newContentHeight) / 2;\n        return {\n            x: x,\n            y: y,\n            w: newContentWidth,\n            h: newContentHeight,\n        };\n    };\n    return VirtualBackgroundProcessor;\n}(BackgroundProcessor_1.BackgroundProcessor));\nexports.VirtualBackgroundProcessor = VirtualBackgroundProcessor;\n//# sourceMappingURL=VirtualBackgroundProcessor.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  fluid: false\n};\nvar Container = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      fluid = _ref.fluid,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"fluid\", \"as\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'container');\n  var suffix = typeof fluid === 'string' ? \"-\" + fluid : '-fluid';\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, fluid ? \"\" + prefix + suffix : prefix)\n  }));\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","var error = require('./utils/error');\nvar jStat = require('jstat');\nvar text = require('./text');\nvar utils = require('./utils/common');\nvar bessel = require('bessel');\n\nfunction isValidBinaryNumber(number) {\n  return (/^[01]{1,10}$/).test(number);\n}\n\nexports.BESSELI = function(x, n) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(x, n)) {\n    return error.value;\n  }\n\n  return bessel.besseli(x, n);\n};\n\nexports.BESSELJ = function(x, n) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(x, n)) {\n    return error.value;\n  }\n\n  return bessel.besselj(x, n);\n};\n\nexports.BESSELK = function(x, n) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(x, n)) {\n    return error.value;\n  }\n\n  return bessel.besselk(x, n);\n};\n\nexports.BESSELY = function(x, n) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(x, n)) {\n    return error.value;\n  }\n\n  return bessel.bessely(x, n);\n};\n\nexports.BIN2DEC = function(number) {\n  // Return error if number is not binary or contains more than 10 characters (10 digits)\n  if (!isValidBinaryNumber(number)) {\n    return error.num;\n  }\n\n  // Convert binary number to decimal\n  var result = parseInt(number, 2);\n\n  // Handle negative numbers\n  var stringified = number.toString();\n  if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n    return parseInt(stringified.substring(1), 2) - 512;\n  } else {\n    return result;\n  }\n};\n\n\nexports.BIN2HEX = function(number, places) {\n  // Return error if number is not binary or contains more than 10 characters (10 digits)\n  if (!isValidBinaryNumber(number)) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character hexadecimal number if number is negative\n  var stringified = number.toString();\n  if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n    return (1099511627264 + parseInt(stringified.substring(1), 2)).toString(16);\n  }\n\n  // Convert binary number to hexadecimal\n  var result = parseInt(number, 2).toString(16);\n\n  // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n  if (places === undefined) {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.BIN2OCT = function(number, places) {\n  // Return error if number is not binary or contains more than 10 characters (10 digits)\n  if (!isValidBinaryNumber(number)) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character octal number if number is negative\n  var stringified = number.toString();\n  if (stringified.length === 10 && stringified.substring(0, 1) === '1') {\n    return (1073741312 + parseInt(stringified.substring(1), 2)).toString(8);\n  }\n\n  // Convert binary number to octal\n  var result = parseInt(number, 2).toString(8);\n\n  // Return octal number using the minimum number of characters necessary if places is undefined\n  if (places === undefined) {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.BITAND = function(number1, number2) {\n  // Return error if either number is a non-numeric value\n  number1 = utils.parseNumber(number1);\n  number2 = utils.parseNumber(number2);\n  if (utils.anyIsError(number1, number2)) {\n    return error.value;\n  }\n\n  // Return error if either number is less than 0\n  if (number1 < 0 || number2 < 0) {\n    return error.num;\n  }\n\n  // Return error if either number is a non-integer\n  if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n    return error.num;\n  }\n\n  // Return error if either number is greater than (2^48)-1\n  if (number1 > 281474976710655 || number2 > 281474976710655) {\n    return error.num;\n  }\n\n  // Return bitwise AND of two numbers\n  return number1 & number2;\n};\n\nexports.BITLSHIFT = function(number, shift) {\n  number = utils.parseNumber(number);\n  shift = utils.parseNumber(shift);\n  if (utils.anyIsError(number, shift)) {\n    return error.value;\n  }\n\n  // Return error if number is less than 0\n  if (number < 0) {\n    return error.num;\n  }\n\n  // Return error if number is a non-integer\n  if (Math.floor(number) !== number) {\n    return error.num;\n  }\n\n  // Return error if number is greater than (2^48)-1\n  if (number > 281474976710655) {\n    return error.num;\n  }\n\n  // Return error if the absolute value of shift is greater than 53\n  if (Math.abs(shift) > 53) {\n    return error.num;\n  }\n\n  // Return number shifted by shift bits to the left or to the right if shift is negative\n  return (shift >= 0) ? number << shift : number >> -shift;\n};\n\nexports.BITOR = function(number1, number2) {\n  number1 = utils.parseNumber(number1);\n  number2 = utils.parseNumber(number2);\n  if (utils.anyIsError(number1, number2)) {\n    return error.value;\n  }\n\n  // Return error if either number is less than 0\n  if (number1 < 0 || number2 < 0) {\n    return error.num;\n  }\n\n  // Return error if either number is a non-integer\n  if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n    return error.num;\n  }\n\n  // Return error if either number is greater than (2^48)-1\n  if (number1 > 281474976710655 || number2 > 281474976710655) {\n    return error.num;\n  }\n\n  // Return bitwise OR of two numbers\n  return number1 | number2;\n};\n\nexports.BITRSHIFT = function(number, shift) {\n  number = utils.parseNumber(number);\n  shift = utils.parseNumber(shift);\n  if (utils.anyIsError(number, shift)) {\n    return error.value;\n  }\n\n  // Return error if number is less than 0\n  if (number < 0) {\n    return error.num;\n  }\n\n  // Return error if number is a non-integer\n  if (Math.floor(number) !== number) {\n    return error.num;\n  }\n\n  // Return error if number is greater than (2^48)-1\n  if (number > 281474976710655) {\n    return error.num;\n  }\n\n  // Return error if the absolute value of shift is greater than 53\n  if (Math.abs(shift) > 53) {\n    return error.num;\n  }\n\n  // Return number shifted by shift bits to the right or to the left if shift is negative\n  return (shift >= 0) ? number >> shift : number << -shift;\n};\n\nexports.BITXOR = function(number1, number2) {\n  number1 = utils.parseNumber(number1);\n  number2 = utils.parseNumber(number2);\n  if (utils.anyIsError(number1, number2)) {\n    return error.value;\n  }\n\n  // Return error if either number is less than 0\n  if (number1 < 0 || number2 < 0) {\n    return error.num;\n  }\n\n  // Return error if either number is a non-integer\n  if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\n    return error.num;\n  }\n\n  // Return error if either number is greater than (2^48)-1\n  if (number1 > 281474976710655 || number2 > 281474976710655) {\n    return error.num;\n  }\n\n  // Return bitwise XOR of two numbers\n  return number1 ^ number2;\n};\n\nexports.COMPLEX = function(real, imaginary, suffix) {\n  real = utils.parseNumber(real);\n  imaginary = utils.parseNumber(imaginary);\n  if (utils.anyIsError(real, imaginary)) {\n    return real;\n  }\n\n  // Set suffix\n  suffix = (suffix === undefined) ? 'i' : suffix;\n\n  // Return error if suffix is neither \"i\" nor \"j\"\n  if (suffix !== 'i' && suffix !== 'j') {\n    return error.value;\n  }\n\n  // Return complex number\n  if (real === 0 && imaginary === 0) {\n    return 0;\n  } else if (real === 0) {\n    return (imaginary === 1) ? suffix : imaginary.toString() + suffix;\n  } else if (imaginary === 0) {\n    return real.toString();\n  } else {\n    var sign = (imaginary > 0) ? '+' : '';\n    return real.toString() + sign + ((imaginary === 1) ? suffix : imaginary.toString() + suffix);\n  }\n};\n\nexports.CONVERT = function(number, from_unit, to_unit) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n\n  // List of units supported by CONVERT and units defined by the International System of Units\n  // [Name, Symbol, Alternate symbols, Quantity, ISU, CONVERT, Conversion ratio]\n  var units = [\n    [\"a.u. of action\", \"?\", null, \"action\", false, false, 1.05457168181818e-34],\n    [\"a.u. of charge\", \"e\", null, \"electric_charge\", false, false, 1.60217653141414e-19],\n    [\"a.u. of energy\", \"Eh\", null, \"energy\", false, false, 4.35974417757576e-18],\n    [\"a.u. of length\", \"a?\", null, \"length\", false, false, 5.29177210818182e-11],\n    [\"a.u. of mass\", \"m?\", null, \"mass\", false, false, 9.10938261616162e-31],\n    [\"a.u. of time\", \"?/Eh\", null, \"time\", false, false, 2.41888432650516e-17],\n    [\"admiralty knot\", \"admkn\", null, \"speed\", false, true, 0.514773333],\n    [\"ampere\", \"A\", null, \"electric_current\", true, false, 1],\n    [\"ampere per meter\", \"A/m\", null, \"magnetic_field_intensity\", true, false, 1],\n    [\"ångström\", \"Å\", [\"ang\"], \"length\", false, true, 1e-10],\n    [\"are\", \"ar\", null, \"area\", false, true, 100],\n    [\"astronomical unit\", \"ua\", null, \"length\", false, false, 1.49597870691667e-11],\n    [\"bar\", \"bar\", null, \"pressure\", false, false, 100000],\n    [\"barn\", \"b\", null, \"area\", false, false, 1e-28],\n    [\"becquerel\", \"Bq\", null, \"radioactivity\", true, false, 1],\n    [\"bit\", \"bit\", [\"b\"], \"information\", false, true, 1],\n    [\"btu\", \"BTU\", [\"btu\"], \"energy\", false, true, 1055.05585262],\n    [\"byte\", \"byte\", null, \"information\", false, true, 8],\n    [\"candela\", \"cd\", null, \"luminous_intensity\", true, false, 1],\n    [\"candela per square metre\", \"cd/m?\", null, \"luminance\", true, false, 1],\n    [\"coulomb\", \"C\", null, \"electric_charge\", true, false, 1],\n    [\"cubic ångström\", \"ang3\", [\"ang^3\"], \"volume\", false, true, 1e-30],\n    [\"cubic foot\", \"ft3\", [\"ft^3\"], \"volume\", false, true, 0.028316846592],\n    [\"cubic inch\", \"in3\", [\"in^3\"], \"volume\", false, true, 0.000016387064],\n    [\"cubic light-year\", \"ly3\", [\"ly^3\"], \"volume\", false, true, 8.46786664623715e-47],\n    [\"cubic metre\", \"m?\", null, \"volume\", true, true, 1],\n    [\"cubic mile\", \"mi3\", [\"mi^3\"], \"volume\", false, true, 4168181825.44058],\n    [\"cubic nautical mile\", \"Nmi3\", [\"Nmi^3\"], \"volume\", false, true, 6352182208],\n    [\"cubic Pica\", \"Pica3\", [\"Picapt3\", \"Pica^3\", \"Picapt^3\"], \"volume\", false, true, 7.58660370370369e-8],\n    [\"cubic yard\", \"yd3\", [\"yd^3\"], \"volume\", false, true, 0.764554857984],\n    [\"cup\", \"cup\", null, \"volume\", false, true, 0.0002365882365],\n    [\"dalton\", \"Da\", [\"u\"], \"mass\", false, false, 1.66053886282828e-27],\n    [\"day\", \"d\", [\"day\"], \"time\", false, true, 86400],\n    [\"degree\", \"°\", null, \"angle\", false, false, 0.0174532925199433],\n    [\"degrees Rankine\", \"Rank\", null, \"temperature\", false, true, 0.555555555555556],\n    [\"dyne\", \"dyn\", [\"dy\"], \"force\", false, true, 0.00001],\n    [\"electronvolt\", \"eV\", [\"ev\"], \"energy\", false, true, 1.60217656514141],\n    [\"ell\", \"ell\", null, \"length\", false, true, 1.143],\n    [\"erg\", \"erg\", [\"e\"], \"energy\", false, true, 1e-7],\n    [\"farad\", \"F\", null, \"electric_capacitance\", true, false, 1],\n    [\"fluid ounce\", \"oz\", null, \"volume\", false, true, 0.0000295735295625],\n    [\"foot\", \"ft\", null, \"length\", false, true, 0.3048],\n    [\"foot-pound\", \"flb\", null, \"energy\", false, true, 1.3558179483314],\n    [\"gal\", \"Gal\", null, \"acceleration\", false, false, 0.01],\n    [\"gallon\", \"gal\", null, \"volume\", false, true, 0.003785411784],\n    [\"gauss\", \"G\", [\"ga\"], \"magnetic_flux_density\", false, true, 1],\n    [\"grain\", \"grain\", null, \"mass\", false, true, 0.0000647989],\n    [\"gram\", \"g\", null, \"mass\", false, true, 0.001],\n    [\"gray\", \"Gy\", null, \"absorbed_dose\", true, false, 1],\n    [\"gross registered ton\", \"GRT\", [\"regton\"], \"volume\", false, true, 2.8316846592],\n    [\"hectare\", \"ha\", null, \"area\", false, true, 10000],\n    [\"henry\", \"H\", null, \"inductance\", true, false, 1],\n    [\"hertz\", \"Hz\", null, \"frequency\", true, false, 1],\n    [\"horsepower\", \"HP\", [\"h\"], \"power\", false, true, 745.69987158227],\n    [\"horsepower-hour\", \"HPh\", [\"hh\", \"hph\"], \"energy\", false, true, 2684519.538],\n    [\"hour\", \"h\", [\"hr\"], \"time\", false, true, 3600],\n    [\"imperial gallon (U.K.)\", \"uk_gal\", null, \"volume\", false, true, 0.00454609],\n    [\"imperial hundredweight\", \"lcwt\", [\"uk_cwt\", \"hweight\"], \"mass\", false, true, 50.802345],\n    [\"imperial quart (U.K)\", \"uk_qt\", null, \"volume\", false, true, 0.0011365225],\n    [\"imperial ton\", \"brton\", [\"uk_ton\", \"LTON\"], \"mass\", false, true, 1016.046909],\n    [\"inch\", \"in\", null, \"length\", false, true, 0.0254],\n    [\"international acre\", \"uk_acre\", null, \"area\", false, true, 4046.8564224],\n    [\"IT calorie\", \"cal\", null, \"energy\", false, true, 4.1868],\n    [\"joule\", \"J\", null, \"energy\", true, true, 1],\n    [\"katal\", \"kat\", null, \"catalytic_activity\", true, false, 1],\n    [\"kelvin\", \"K\", [\"kel\"], \"temperature\", true, true, 1],\n    [\"kilogram\", \"kg\", null, \"mass\", true, true, 1],\n    [\"knot\", \"kn\", null, \"speed\", false, true, 0.514444444444444],\n    [\"light-year\", \"ly\", null, \"length\", false, true, 9460730472580800],\n    [\"litre\", \"L\", [\"l\", \"lt\"], \"volume\", false, true, 0.001],\n    [\"lumen\", \"lm\", null, \"luminous_flux\", true, false, 1],\n    [\"lux\", \"lx\", null, \"illuminance\", true, false, 1],\n    [\"maxwell\", \"Mx\", null, \"magnetic_flux\", false, false, 1e-18],\n    [\"measurement ton\", \"MTON\", null, \"volume\", false, true, 1.13267386368],\n    [\"meter per hour\", \"m/h\", [\"m/hr\"], \"speed\", false, true, 0.00027777777777778],\n    [\"meter per second\", \"m/s\", [\"m/sec\"], \"speed\", true, true, 1],\n    [\"meter per second squared\", \"m?s??\", null, \"acceleration\", true, false, 1],\n    [\"parsec\", \"pc\", [\"parsec\"], \"length\", false, true, 30856775814671900],\n    [\"meter squared per second\", \"m?/s\", null, \"kinematic_viscosity\", true, false, 1],\n    [\"metre\", \"m\", null, \"length\", true, true, 1],\n    [\"miles per hour\", \"mph\", null, \"speed\", false, true, 0.44704],\n    [\"millimetre of mercury\", \"mmHg\", null, \"pressure\", false, false, 133.322],\n    [\"minute\", \"?\", null, \"angle\", false, false, 0.000290888208665722],\n    [\"minute\", \"min\", [\"mn\"], \"time\", false, true, 60],\n    [\"modern teaspoon\", \"tspm\", null, \"volume\", false, true, 0.000005],\n    [\"mole\", \"mol\", null, \"amount_of_substance\", true, false, 1],\n    [\"morgen\", \"Morgen\", null, \"area\", false, true, 2500],\n    [\"n.u. of action\", \"?\", null, \"action\", false, false, 1.05457168181818e-34],\n    [\"n.u. of mass\", \"m?\", null, \"mass\", false, false, 9.10938261616162e-31],\n    [\"n.u. of speed\", \"c?\", null, \"speed\", false, false, 299792458],\n    [\"n.u. of time\", \"?/(me?c??)\", null, \"time\", false, false, 1.28808866778687e-21],\n    [\"nautical mile\", \"M\", [\"Nmi\"], \"length\", false, true, 1852],\n    [\"newton\", \"N\", null, \"force\", true, true, 1],\n    [\"œrsted\", \"Oe \", null, \"magnetic_field_intensity\", false, false, 79.5774715459477],\n    [\"ohm\", \"Ω\", null, \"electric_resistance\", true, false, 1],\n    [\"ounce mass\", \"ozm\", null, \"mass\", false, true, 0.028349523125],\n    [\"pascal\", \"Pa\", null, \"pressure\", true, false, 1],\n    [\"pascal second\", \"Pa?s\", null, \"dynamic_viscosity\", true, false, 1],\n    [\"pferdestärke\", \"PS\", null, \"power\", false, true, 735.49875],\n    [\"phot\", \"ph\", null, \"illuminance\", false, false, 0.0001],\n    [\"pica (1/6 inch)\", \"pica\", null, \"length\", false, true, 0.00035277777777778],\n    [\"pica (1/72 inch)\", \"Pica\", [\"Picapt\"], \"length\", false, true, 0.00423333333333333],\n    [\"poise\", \"P\", null, \"dynamic_viscosity\", false, false, 0.1],\n    [\"pond\", \"pond\", null, \"force\", false, true, 0.00980665],\n    [\"pound force\", \"lbf\", null, \"force\", false, true, 4.4482216152605],\n    [\"pound mass\", \"lbm\", null, \"mass\", false, true, 0.45359237],\n    [\"quart\", \"qt\", null, \"volume\", false, true, 0.000946352946],\n    [\"radian\", \"rad\", null, \"angle\", true, false, 1],\n    [\"second\", \"?\", null, \"angle\", false, false, 0.00000484813681109536],\n    [\"second\", \"s\", [\"sec\"], \"time\", true, true, 1],\n    [\"short hundredweight\", \"cwt\", [\"shweight\"], \"mass\", false, true, 45.359237],\n    [\"siemens\", \"S\", null, \"electrical_conductance\", true, false, 1],\n    [\"sievert\", \"Sv\", null, \"equivalent_dose\", true, false, 1],\n    [\"slug\", \"sg\", null, \"mass\", false, true, 14.59390294],\n    [\"square ångström\", \"ang2\", [\"ang^2\"], \"area\", false, true, 1e-20],\n    [\"square foot\", \"ft2\", [\"ft^2\"], \"area\", false, true, 0.09290304],\n    [\"square inch\", \"in2\", [\"in^2\"], \"area\", false, true, 0.00064516],\n    [\"square light-year\", \"ly2\", [\"ly^2\"], \"area\", false, true, 8.95054210748189e+31],\n    [\"square meter\", \"m?\", null, \"area\", true, true, 1],\n    [\"square mile\", \"mi2\", [\"mi^2\"], \"area\", false, true, 2589988.110336],\n    [\"square nautical mile\", \"Nmi2\", [\"Nmi^2\"], \"area\", false, true, 3429904],\n    [\"square Pica\", \"Pica2\", [\"Picapt2\", \"Pica^2\", \"Picapt^2\"], \"area\", false, true, 0.00001792111111111],\n    [\"square yard\", \"yd2\", [\"yd^2\"], \"area\", false, true, 0.83612736],\n    [\"statute mile\", \"mi\", null, \"length\", false, true, 1609.344],\n    [\"steradian\", \"sr\", null, \"solid_angle\", true, false, 1],\n    [\"stilb\", \"sb\", null, \"luminance\", false, false, 0.0001],\n    [\"stokes\", \"St\", null, \"kinematic_viscosity\", false, false, 0.0001],\n    [\"stone\", \"stone\", null, \"mass\", false, true, 6.35029318],\n    [\"tablespoon\", \"tbs\", null, \"volume\", false, true, 0.0000147868],\n    [\"teaspoon\", \"tsp\", null, \"volume\", false, true, 0.00000492892],\n    [\"tesla\", \"T\", null, \"magnetic_flux_density\", true, true, 1],\n    [\"thermodynamic calorie\", \"c\", null, \"energy\", false, true, 4.184],\n    [\"ton\", \"ton\", null, \"mass\", false, true, 907.18474],\n    [\"tonne\", \"t\", null, \"mass\", false, false, 1000],\n    [\"U.K. pint\", \"uk_pt\", null, \"volume\", false, true, 0.00056826125],\n    [\"U.S. bushel\", \"bushel\", null, \"volume\", false, true, 0.03523907],\n    [\"U.S. oil barrel\", \"barrel\", null, \"volume\", false, true, 0.158987295],\n    [\"U.S. pint\", \"pt\", [\"us_pt\"], \"volume\", false, true, 0.000473176473],\n    [\"U.S. survey mile\", \"survey_mi\", null, \"length\", false, true, 1609.347219],\n    [\"U.S. survey/statute acre\", \"us_acre\", null, \"area\", false, true, 4046.87261],\n    [\"volt\", \"V\", null, \"voltage\", true, false, 1],\n    [\"watt\", \"W\", null, \"power\", true, true, 1],\n    [\"watt-hour\", \"Wh\", [\"wh\"], \"energy\", false, true, 3600],\n    [\"weber\", \"Wb\", null, \"magnetic_flux\", true, false, 1],\n    [\"yard\", \"yd\", null, \"length\", false, true, 0.9144],\n    [\"year\", \"yr\", null, \"time\", false, true, 31557600]\n  ];\n\n  // Binary prefixes\n  // [Name, Prefix power of 2 value, Previx value, Abbreviation, Derived from]\n  var binary_prefixes = {\n    Yi: [\"yobi\", 80, 1208925819614629174706176, \"Yi\", \"yotta\"],\n    Zi: [\"zebi\", 70, 1180591620717411303424, \"Zi\", \"zetta\"],\n    Ei: [\"exbi\", 60, 1152921504606846976, \"Ei\", \"exa\"],\n    Pi: [\"pebi\", 50, 1125899906842624, \"Pi\", \"peta\"],\n    Ti: [\"tebi\", 40, 1099511627776, \"Ti\", \"tera\"],\n    Gi: [\"gibi\", 30, 1073741824, \"Gi\", \"giga\"],\n    Mi: [\"mebi\", 20, 1048576, \"Mi\", \"mega\"],\n    ki: [\"kibi\", 10, 1024, \"ki\", \"kilo\"]\n  };\n\n  // Unit prefixes\n  // [Name, Multiplier, Abbreviation]\n  var unit_prefixes = {\n    Y: [\"yotta\", 1e+24, \"Y\"],\n    Z: [\"zetta\", 1e+21, \"Z\"],\n    E: [\"exa\", 1e+18, \"E\"],\n    P: [\"peta\", 1e+15, \"P\"],\n    T: [\"tera\", 1e+12, \"T\"],\n    G: [\"giga\", 1e+09, \"G\"],\n    M: [\"mega\", 1e+06, \"M\"],\n    k: [\"kilo\", 1e+03, \"k\"],\n    h: [\"hecto\", 1e+02, \"h\"],\n    e: [\"dekao\", 1e+01, \"e\"],\n    d: [\"deci\", 1e-01, \"d\"],\n    c: [\"centi\", 1e-02, \"c\"],\n    m: [\"milli\", 1e-03, \"m\"],\n    u: [\"micro\", 1e-06, \"u\"],\n    n: [\"nano\", 1e-09, \"n\"],\n    p: [\"pico\", 1e-12, \"p\"],\n    f: [\"femto\", 1e-15, \"f\"],\n    a: [\"atto\", 1e-18, \"a\"],\n    z: [\"zepto\", 1e-21, \"z\"],\n    y: [\"yocto\", 1e-24, \"y\"]\n  };\n\n  // Initialize units and multipliers\n  var from = null;\n  var to = null;\n  var base_from_unit = from_unit;\n  var base_to_unit = to_unit;\n  var from_multiplier = 1;\n  var to_multiplier = 1;\n  var alt;\n\n  // Lookup from and to units\n  for (var i = 0; i < units.length; i++) {\n    alt = (units[i][2] === null) ? [] : units[i][2];\n    if (units[i][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n      from = units[i];\n    }\n    if (units[i][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n      to = units[i];\n    }\n  }\n\n  // Lookup from prefix\n  if (from === null) {\n    var from_binary_prefix = binary_prefixes[from_unit.substring(0, 2)];\n    var from_unit_prefix = unit_prefixes[from_unit.substring(0, 1)];\n\n    // Handle dekao unit prefix (only unit prefix with two characters)\n    if (from_unit.substring(0, 2) === 'da') {\n      from_unit_prefix = [\"dekao\", 1e+01, \"da\"];\n    }\n\n    // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n    if (from_binary_prefix) {\n      from_multiplier = from_binary_prefix[2];\n      base_from_unit = from_unit.substring(2);\n    } else if (from_unit_prefix) {\n      from_multiplier = from_unit_prefix[1];\n      base_from_unit = from_unit.substring(from_unit_prefix[2].length);\n    }\n\n    // Lookup from unit\n    for (var j = 0; j < units.length; j++) {\n      alt = (units[j][2] === null) ? [] : units[j][2];\n      if (units[j][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {\n        from = units[j];\n      }\n    }\n  }\n\n  // Lookup to prefix\n  if (to === null) {\n    var to_binary_prefix = binary_prefixes[to_unit.substring(0, 2)];\n    var to_unit_prefix = unit_prefixes[to_unit.substring(0, 1)];\n\n    // Handle dekao unit prefix (only unit prefix with two characters)\n    if (to_unit.substring(0, 2) === 'da') {\n      to_unit_prefix = [\"dekao\", 1e+01, \"da\"];\n    }\n\n    // Handle binary prefixes first (so that 'Yi' is processed before 'Y')\n    if (to_binary_prefix) {\n      to_multiplier = to_binary_prefix[2];\n      base_to_unit = to_unit.substring(2);\n    } else if (to_unit_prefix) {\n      to_multiplier = to_unit_prefix[1];\n      base_to_unit = to_unit.substring(to_unit_prefix[2].length);\n    }\n\n    // Lookup to unit\n    for (var k = 0; k < units.length; k++) {\n      alt = (units[k][2] === null) ? [] : units[k][2];\n      if (units[k][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {\n        to = units[k];\n      }\n    }\n  }\n\n  // Return error if a unit does not exist\n  if (from === null || to === null) {\n    return error.na;\n  }\n\n  // Return error if units represent different quantities\n  if (from[3] !== to[3]) {\n    return error.na;\n  }\n\n  // Return converted number\n  return number * from[6] * from_multiplier / (to[6] * to_multiplier);\n};\n\nexports.DEC2BIN = function(number, places) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n\n  // Return error if number is not decimal, is lower than -512, or is greater than 511\n  if (!/^-?[0-9]{1,3}$/.test(number) || number < -512 || number > 511) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character binary number if number is negative\n  if (number < 0) {\n    return '1' + text.REPT('0', 9 - (512 + number).toString(2).length) + (512 + number).toString(2);\n  }\n\n  // Convert decimal number to binary\n  var result = parseInt(number, 10).toString(2);\n\n  // Return binary number using the minimum number of characters necessary if places is undefined\n  if (typeof places === 'undefined') {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.DEC2HEX = function(number, places) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n\n  // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n  if (!/^-?[0-9]{1,12}$/.test(number) || number < -549755813888 || number > 549755813887) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character hexadecimal number if number is negative\n  if (number < 0) {\n    return (1099511627776 + number).toString(16);\n  }\n\n  // Convert decimal number to hexadecimal\n  var result = parseInt(number, 10).toString(16);\n\n  // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n  if (typeof places === 'undefined') {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.DEC2OCT = function(number, places) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n\n  // Return error if number is not decimal, is lower than -549755813888, or is greater than 549755813887\n  if (!/^-?[0-9]{1,9}$/.test(number) || number < -536870912 || number > 536870911) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character octal number if number is negative\n  if (number < 0) {\n    return (1073741824 + number).toString(8);\n  }\n\n  // Convert decimal number to octal\n  var result = parseInt(number, 10).toString(8);\n\n  // Return octal number using the minimum number of characters necessary if places is undefined\n  if (typeof places === 'undefined') {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.DELTA = function(number1, number2) {\n  // Set number2 to zero if undefined\n  number2 = (number2 === undefined) ? 0 : number2;\n  number1 = utils.parseNumber(number1);\n  number2 = utils.parseNumber(number2);\n  if (utils.anyIsError(number1, number2)) {\n    return error.value;\n  }\n\n  // Return delta\n  return (number1 === number2) ? 1 : 0;\n};\n\n// TODO: why is upper_bound not used ? The excel documentation has no examples with upper_bound\nexports.ERF = function(lower_bound, upper_bound) {\n  // Set number2 to zero if undefined\n  upper_bound = (upper_bound === undefined) ? 0 : upper_bound;\n\n  lower_bound = utils.parseNumber(lower_bound);\n  upper_bound = utils.parseNumber(upper_bound);\n  if (utils.anyIsError(lower_bound, upper_bound)) {\n    return error.value;\n  }\n\n  return jStat.erf(lower_bound);\n};\n\n// TODO\nexports.ERF.PRECISE = function() {\n  throw new Error('ERF.PRECISE is not implemented');\n};\n\nexports.ERFC = function(x) {\n  // Return error if x is not a number\n  if (isNaN(x)) {\n    return error.value;\n  }\n\n  return jStat.erfc(x);\n};\n\n// TODO\nexports.ERFC.PRECISE = function() {\n  throw new Error('ERFC.PRECISE is not implemented');\n};\n\nexports.GESTEP = function(number, step) {\n  step = step || 0;\n  number = utils.parseNumber(number);\n  if (utils.anyIsError(step, number)) {\n    return number;\n  }\n\n  // Return delta\n  return (number >= step) ? 1 : 0;\n};\n\nexports.HEX2BIN = function(number, places) {\n  // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n  if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Check if number is negative\n  var negative = (number.length === 10 && number.substring(0, 1).toLowerCase() === 'f') ? true : false;\n\n  // Convert hexadecimal number to decimal\n  var decimal = (negative) ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);\n\n  // Return error if number is lower than -512 or greater than 511\n  if (decimal < -512 || decimal > 511) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character binary number if number is negative\n  if (negative) {\n    return '1' + text.REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2);\n  }\n\n  // Convert decimal number to binary\n  var result = decimal.toString(2);\n\n  // Return binary number using the minimum number of characters necessary if places is undefined\n  if (places === undefined) {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.HEX2DEC = function(number) {\n  // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n  if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Convert hexadecimal number to decimal\n  var decimal = parseInt(number, 16);\n\n  // Return decimal number\n  return (decimal >= 549755813888) ? decimal - 1099511627776 : decimal;\n};\n\nexports.HEX2OCT = function(number, places) {\n  // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n  if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Convert hexadecimal number to decimal\n  var decimal = parseInt(number, 16);\n\n  // Return error if number is positive and greater than 0x1fffffff (536870911)\n  if (decimal > 536870911 && decimal < 1098974756864) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character octal number if number is negative\n  if (decimal >= 1098974756864) {\n    return (decimal - 1098437885952).toString(8);\n  }\n\n  // Convert decimal number to octal\n  var result = decimal.toString(8);\n\n  // Return octal number using the minimum number of characters necessary if places is undefined\n  if (places === undefined) {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.IMABS = function(inumber) {\n  // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  // Return error if either coefficient is not a number\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return absolute value of complex number\n  return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n};\n\nexports.IMAGINARY = function(inumber) {\n  if (inumber === undefined || inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Return 0 if inumber is equal to 0\n  if (inumber === 0 || inumber === '0') {\n    return 0;\n  }\n\n  // Handle special cases\n  if (['i', 'j'].indexOf(inumber) >= 0) {\n    return 1;\n  }\n\n  // Normalize imaginary coefficient\n  inumber = inumber.replace('+i', '+1i').replace('-i', '-1i').replace('+j', '+1j').replace('-j', '-1j');\n\n  // Lookup sign\n  var plus = inumber.indexOf('+');\n  var minus = inumber.indexOf('-');\n  if (plus === 0) {\n    plus = inumber.indexOf('+', 1);\n  }\n\n  if (minus === 0) {\n    minus = inumber.indexOf('-', 1);\n  }\n\n  // Lookup imaginary unit\n  var last = inumber.substring(inumber.length - 1, inumber.length);\n  var unit = (last === 'i' || last === 'j');\n\n  if (plus >= 0 || minus >= 0) {\n    // Return error if imaginary unit is neither i nor j\n    if (!unit) {\n      return error.num;\n    }\n\n    // Return imaginary coefficient of complex number\n    if (plus >= 0) {\n      return (isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))) ?\n        error.num :\n        Number(inumber.substring(plus + 1, inumber.length - 1));\n    } else {\n      return (isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))) ?\n        error.num :\n        -Number(inumber.substring(minus + 1, inumber.length - 1));\n    }\n  } else {\n    if (unit) {\n      return (isNaN(inumber.substring(0, inumber.length - 1))) ? error.num : inumber.substring(0, inumber.length - 1);\n    } else {\n      return (isNaN(inumber)) ? error.num : 0;\n    }\n  }\n};\n\nexports.IMARGUMENT = function(inumber) {\n  // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  // Return error if either coefficient is not a number\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return error if inumber is equal to zero\n  if (x === 0 && y === 0) {\n    return error.div0;\n  }\n\n  // Return PI/2 if x is equal to zero and y is positive\n  if (x === 0 && y > 0) {\n    return Math.PI / 2;\n  }\n\n  // Return -PI/2 if x is equal to zero and y is negative\n  if (x === 0 && y < 0) {\n    return -Math.PI / 2;\n  }\n\n  // Return zero if x is negative and y is equal to zero\n  if (y === 0 && x > 0) {\n    return 0;\n  }\n\n  // Return zero if x is negative and y is equal to zero\n  if (y === 0 && x < 0) {\n    return -Math.PI;\n  }\n\n  // Return argument of complex number\n  if (x > 0) {\n    return Math.atan(y / x);\n  } else if (x < 0 && y >= 0) {\n    return Math.atan(y / x) + Math.PI;\n  } else {\n    return Math.atan(y / x) - Math.PI;\n  }\n};\n\nexports.IMCONJUGATE = function(inumber) {\n  // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return conjugate of complex number\n  return (y !== 0) ? exports.COMPLEX(x, -y, unit) : inumber;\n};\n\nexports.IMCOS = function(inumber) {\n  // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return cosine of complex number\n  return exports.COMPLEX(Math.cos(x) * (Math.exp(y) + Math.exp(-y)) / 2, -Math.sin(x) * (Math.exp(y) - Math.exp(-y)) / 2, unit);\n};\n\nexports.IMCOSH = function(inumber) {\n  // Lookup real and imaginary coefficients using exports.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return hyperbolic cosine of complex number\n  return exports.COMPLEX(Math.cos(y) * (Math.exp(x) + Math.exp(-x)) / 2, Math.sin(y) * (Math.exp(x) - Math.exp(-x)) / 2, unit);\n};\n\nexports.IMCOT = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return cotangent of complex number\n  return exports.IMDIV(exports.IMCOS(inumber), exports.IMSIN(inumber));\n};\n\nexports.IMDIV = function(inumber1, inumber2) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var a = exports.IMREAL(inumber1);\n  var b = exports.IMAGINARY(inumber1);\n  var c = exports.IMREAL(inumber2);\n  var d = exports.IMAGINARY(inumber2);\n\n  if (utils.anyIsError(a, b, c, d)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit1 = inumber1.substring(inumber1.length - 1);\n  var unit2 = inumber2.substring(inumber2.length - 1);\n  var unit = 'i';\n  if (unit1 === 'j') {\n    unit = 'j';\n  } else if (unit2 === 'j') {\n    unit = 'j';\n  }\n\n  // Return error if inumber2 is null\n  if (c === 0 && d === 0) {\n    return error.num;\n  }\n\n  // Return exponential of complex number\n  var den = c * c + d * d;\n  return exports.COMPLEX((a * c + b * d) / den, (b * c - a * d) / den, unit);\n};\n\nexports.IMEXP = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return exponential of complex number\n  var e = Math.exp(x);\n  return exports.COMPLEX(e * Math.cos(y), e * Math.sin(y), unit);\n};\n\nexports.IMLN = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return exponential of complex number\n  return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)), Math.atan(y / x), unit);\n};\n\nexports.IMLOG10 = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return exponential of complex number\n  return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(10), Math.atan(y / x) / Math.log(10), unit);\n};\n\nexports.IMLOG2 = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return exponential of complex number\n  return exports.COMPLEX(Math.log(Math.sqrt(x * x + y * y)) / Math.log(2), Math.atan(y / x) / Math.log(2), unit);\n};\n\nexports.IMPOWER = function(inumber, number) {\n  number = utils.parseNumber(number);\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n  if (utils.anyIsError(number, x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Calculate power of modulus\n  var p = Math.pow(exports.IMABS(inumber), number);\n\n  // Calculate argument\n  var t = exports.IMARGUMENT(inumber);\n\n  // Return exponential of complex number\n  return exports.COMPLEX(p * Math.cos(number * t), p * Math.sin(number * t), unit);\n};\n\nexports.IMPRODUCT = function() {\n  // Initialize result\n  var result = arguments[0];\n\n  if (!arguments.length) {\n    return error.value;\n  }\n\n  // Loop on all numbers\n  for (var i = 1; i < arguments.length; i++) {\n    // Lookup coefficients of two complex numbers\n    var a = exports.IMREAL(result);\n    var b = exports.IMAGINARY(result);\n    var c = exports.IMREAL(arguments[i]);\n    var d = exports.IMAGINARY(arguments[i]);\n\n    if (utils.anyIsError(a, b, c, d)) {\n      return error.value;\n    }\n\n    // Complute product of two complex numbers\n    result = exports.COMPLEX(a * c - b * d, a * d + b * c);\n  }\n\n  // Return product of complex numbers\n  return result;\n};\n\nexports.IMREAL = function(inumber) {\n  if (inumber === undefined || inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Return 0 if inumber is equal to 0\n  if (inumber === 0 || inumber === '0') {\n    return 0;\n  }\n\n  // Handle special cases\n  if (['i', '+i', '1i', '+1i', '-i', '-1i', 'j', '+j', '1j', '+1j', '-j', '-1j'].indexOf(inumber) >= 0) {\n    return 0;\n  }\n\n  // Lookup sign\n  var plus = inumber.indexOf('+');\n  var minus = inumber.indexOf('-');\n  if (plus === 0) {\n    plus = inumber.indexOf('+', 1);\n  }\n  if (minus === 0) {\n    minus = inumber.indexOf('-', 1);\n  }\n\n  // Lookup imaginary unit\n  var last = inumber.substring(inumber.length - 1, inumber.length);\n  var unit = (last === 'i' || last === 'j');\n\n  if (plus >= 0 || minus >= 0) {\n    // Return error if imaginary unit is neither i nor j\n    if (!unit) {\n      return error.num;\n    }\n\n    // Return real coefficient of complex number\n    if (plus >= 0) {\n      return (isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1))) ?\n        error.num :\n        Number(inumber.substring(0, plus));\n    } else {\n      return (isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1))) ?\n        error.num :\n        Number(inumber.substring(0, minus));\n    }\n  } else {\n    if (unit) {\n      return (isNaN(inumber.substring(0, inumber.length - 1))) ? error.num : 0;\n    } else {\n      return (isNaN(inumber)) ? error.num : inumber;\n    }\n  }\n};\n\nexports.IMSEC = function(inumber) {\n  // Return error if inumber is a logical value\n  if (inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return secant of complex number\n  return exports.IMDIV('1', exports.IMCOS(inumber));\n};\n\nexports.IMSECH = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return hyperbolic secant of complex number\n  return exports.IMDIV('1', exports.IMCOSH(inumber));\n};\n\nexports.IMSIN = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return sine of complex number\n  return exports.COMPLEX(Math.sin(x) * (Math.exp(y) + Math.exp(-y)) / 2, Math.cos(x) * (Math.exp(y) - Math.exp(-y)) / 2, unit);\n};\n\nexports.IMSINH = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Return hyperbolic sine of complex number\n  return exports.COMPLEX(Math.cos(y) * (Math.exp(x) - Math.exp(-x)) / 2, Math.sin(y) * (Math.exp(x) + Math.exp(-x)) / 2, unit);\n};\n\nexports.IMSQRT = function(inumber) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit = inumber.substring(inumber.length - 1);\n  unit = (unit === 'i' || unit === 'j') ? unit : 'i';\n\n  // Calculate power of modulus\n  var s = Math.sqrt(exports.IMABS(inumber));\n\n  // Calculate argument\n  var t = exports.IMARGUMENT(inumber);\n\n  // Return exponential of complex number\n  return exports.COMPLEX(s * Math.cos(t / 2), s * Math.sin(t / 2), unit);\n};\n\nexports.IMCSC = function (inumber) {\n  // Return error if inumber is a logical value\n  if (inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  // Return error if either coefficient is not a number\n  if (utils.anyIsError(x, y)) {\n    return error.num;\n  }\n\n  // Return cosecant of complex number\n  return exports.IMDIV('1', exports.IMSIN(inumber));\n};\n\nexports.IMCSCH = function (inumber) {\n  // Return error if inumber is a logical value\n  if (inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  // Return error if either coefficient is not a number\n  if (utils.anyIsError(x, y)) {\n    return error.num;\n  }\n\n  // Return hyperbolic cosecant of complex number\n  return exports.IMDIV('1', exports.IMSINH(inumber));\n};\n\nexports.IMSUB = function(inumber1, inumber2) {\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var a = this.IMREAL(inumber1);\n  var b = this.IMAGINARY(inumber1);\n  var c = this.IMREAL(inumber2);\n  var d = this.IMAGINARY(inumber2);\n\n  if (utils.anyIsError(a, b, c, d)) {\n    return error.value;\n  }\n\n  // Lookup imaginary unit\n  var unit1 = inumber1.substring(inumber1.length - 1);\n  var unit2 = inumber2.substring(inumber2.length - 1);\n  var unit = 'i';\n  if (unit1 === 'j') {\n    unit = 'j';\n  } else if (unit2 === 'j') {\n    unit = 'j';\n  }\n\n  // Return _ of two complex numbers\n  return this.COMPLEX(a - c, b - d, unit);\n};\n\nexports.IMSUM = function() {\n  if (!arguments.length) {\n    return error.value;\n  }\n  var args = utils.flatten(arguments);\n\n  // Initialize result\n  var result = args[0];\n\n  // Loop on all numbers\n  for (var i = 1; i < args.length; i++) {\n    // Lookup coefficients of two complex numbers\n    var a = this.IMREAL(result);\n    var b = this.IMAGINARY(result);\n    var c = this.IMREAL(args[i]);\n    var d = this.IMAGINARY(args[i]);\n\n    if (utils.anyIsError(a, b, c, d)) {\n      return error.value;\n    }\n\n    // Complute product of two complex numbers\n    result = this.COMPLEX(a + c, b + d);\n  }\n\n  // Return sum of complex numbers\n  return result;\n};\n\nexports.IMTAN = function(inumber) {\n  // Return error if inumber is a logical value\n  if (inumber === true || inumber === false) {\n    return error.value;\n  }\n\n  // Lookup real and imaginary coefficients using Formula.js [http://formulajs.org]\n  var x = exports.IMREAL(inumber);\n  var y = exports.IMAGINARY(inumber);\n\n  if (utils.anyIsError(x, y)) {\n    return error.value;\n  }\n\n  // Return tangent of complex number\n  return this.IMDIV(this.IMSIN(inumber), this.IMCOS(inumber));\n};\n\nexports.OCT2BIN = function(number, places) {\n  // Return error if number is not hexadecimal or contains more than ten characters (10 digits)\n  if (!/^[0-7]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Check if number is negative\n  var negative = (number.length === 10 && number.substring(0, 1) === '7') ? true : false;\n\n  // Convert octal number to decimal\n  var decimal = (negative) ? parseInt(number, 8) - 1073741824 : parseInt(number, 8);\n\n  // Return error if number is lower than -512 or greater than 511\n  if (decimal < -512 || decimal > 511) {\n    return error.num;\n  }\n\n  // Ignore places and return a 10-character binary number if number is negative\n  if (negative) {\n    return '1' + text.REPT('0', 9 - (512 + decimal).toString(2).length) + (512 + decimal).toString(2);\n  }\n\n  // Convert decimal number to binary\n  var result = decimal.toString(2);\n\n  // Return binary number using the minimum number of characters necessary if places is undefined\n  if (typeof places === 'undefined') {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n\nexports.OCT2DEC = function(number) {\n  // Return error if number is not octal or contains more than ten characters (10 digits)\n  if (!/^[0-7]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Convert octal number to decimal\n  var decimal = parseInt(number, 8);\n\n  // Return decimal number\n  return (decimal >= 536870912) ? decimal - 1073741824 : decimal;\n};\n\nexports.OCT2HEX = function(number, places) {\n  // Return error if number is not octal or contains more than ten characters (10 digits)\n  if (!/^[0-7]{1,10}$/.test(number)) {\n    return error.num;\n  }\n\n  // Convert octal number to decimal\n  var decimal = parseInt(number, 8);\n\n  // Ignore places and return a 10-character octal number if number is negative\n  if (decimal >= 536870912) {\n    return 'ff' + (decimal + 3221225472).toString(16);\n  }\n\n  // Convert decimal number to hexadecimal\n  var result = decimal.toString(16);\n\n  // Return hexadecimal number using the minimum number of characters necessary if places is undefined\n  if (places === undefined) {\n    return result;\n  } else {\n    // Return error if places is nonnumeric\n    if (isNaN(places)) {\n      return error.value;\n    }\n\n    // Return error if places is negative\n    if (places < 0) {\n      return error.num;\n    }\n\n    // Truncate places in case it is not an integer\n    places = Math.floor(places);\n\n    // Pad return value with leading 0s (zeros) if necessary (using Underscore.string)\n    return (places >= result.length) ? text.REPT('0', places - result.length) + result : error.num;\n  }\n};\n","'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n  display: 'none'\n};\nfunction HiddenText(_ref) {\n  let {\n    id,\n    value\n  } = _ref;\n  return React.createElement(\"div\", {\n    id: id,\n    style: hiddenStyles\n  }, value);\n}\n\nfunction LiveRegion(_ref) {\n  let {\n    id,\n    announcement,\n    ariaLiveType = \"assertive\"\n  } = _ref;\n  // Hide element visually but keep it readable by screen readers\n  const visuallyHidden = {\n    position: 'fixed',\n    top: 0,\n    left: 0,\n    width: 1,\n    height: 1,\n    margin: -1,\n    border: 0,\n    padding: 0,\n    overflow: 'hidden',\n    clip: 'rect(0 0 0 0)',\n    clipPath: 'inset(100%)',\n    whiteSpace: 'nowrap'\n  };\n  return React.createElement(\"div\", {\n    id: id,\n    style: visuallyHidden,\n    role: \"status\",\n    \"aria-live\": ariaLiveType,\n    \"aria-atomic\": true\n  }, announcement);\n}\n\nfunction useAnnouncement() {\n  const [announcement, setAnnouncement] = useState('');\n  const announce = useCallback(value => {\n    if (value != null) {\n      setAnnouncement(value);\n    }\n  }, []);\n  return {\n    announce,\n    announcement\n  };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, memo, useReducer, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n  const registerListener = useContext(DndMonitorContext);\n  useEffect(() => {\n    if (!registerListener) {\n      throw new Error('useDndMonitor must be used within a children of <DndContext>');\n    }\n\n    const unsubscribe = registerListener(listener);\n    return unsubscribe;\n  }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n  const [listeners] = useState(() => new Set());\n  const registerListener = useCallback(listener => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  }, [listeners]);\n  const dispatch = useCallback(_ref => {\n    let {\n      type,\n      event\n    } = _ref;\n    listeners.forEach(listener => {\n      var _listener$type;\n\n      return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n    });\n  }, [listeners]);\n  return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n  draggable: \"\\n    To pick up a draggable item, press the space bar.\\n    While dragging, use the arrow keys to move the item.\\n    Press space again to drop the item in its new position, or press escape to cancel.\\n  \"\n};\nconst defaultAnnouncements = {\n  onDragStart(_ref) {\n    let {\n      active\n    } = _ref;\n    return \"Picked up draggable item \" + active.id + \".\";\n  },\n\n  onDragOver(_ref2) {\n    let {\n      active,\n      over\n    } = _ref2;\n\n    if (over) {\n      return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n    }\n\n    return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n  },\n\n  onDragEnd(_ref3) {\n    let {\n      active,\n      over\n    } = _ref3;\n\n    if (over) {\n      return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n    }\n\n    return \"Draggable item \" + active.id + \" was dropped.\";\n  },\n\n  onDragCancel(_ref4) {\n    let {\n      active\n    } = _ref4;\n    return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n  }\n\n};\n\nfunction Accessibility(_ref) {\n  let {\n    announcements = defaultAnnouncements,\n    container,\n    hiddenTextDescribedById,\n    screenReaderInstructions = defaultScreenReaderInstructions\n  } = _ref;\n  const {\n    announce,\n    announcement\n  } = useAnnouncement();\n  const liveRegionId = useUniqueId(\"DndLiveRegion\");\n  const [mounted, setMounted] = useState(false);\n  useEffect(() => {\n    setMounted(true);\n  }, []);\n  useDndMonitor(useMemo(() => ({\n    onDragStart(_ref2) {\n      let {\n        active\n      } = _ref2;\n      announce(announcements.onDragStart({\n        active\n      }));\n    },\n\n    onDragMove(_ref3) {\n      let {\n        active,\n        over\n      } = _ref3;\n\n      if (announcements.onDragMove) {\n        announce(announcements.onDragMove({\n          active,\n          over\n        }));\n      }\n    },\n\n    onDragOver(_ref4) {\n      let {\n        active,\n        over\n      } = _ref4;\n      announce(announcements.onDragOver({\n        active,\n        over\n      }));\n    },\n\n    onDragEnd(_ref5) {\n      let {\n        active,\n        over\n      } = _ref5;\n      announce(announcements.onDragEnd({\n        active,\n        over\n      }));\n    },\n\n    onDragCancel(_ref6) {\n      let {\n        active,\n        over\n      } = _ref6;\n      announce(announcements.onDragCancel({\n        active,\n        over\n      }));\n    }\n\n  }), [announce, announcements]));\n\n  if (!mounted) {\n    return null;\n  }\n\n  const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n    id: hiddenTextDescribedById,\n    value: screenReaderInstructions.draggable\n  }), React.createElement(LiveRegion, {\n    id: liveRegionId,\n    announcement: announcement\n  }));\n  return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n  Action[\"DragStart\"] = \"dragStart\";\n  Action[\"DragMove\"] = \"dragMove\";\n  Action[\"DragEnd\"] = \"dragEnd\";\n  Action[\"DragCancel\"] = \"dragCancel\";\n  Action[\"DragOver\"] = \"dragOver\";\n  Action[\"RegisterDroppable\"] = \"registerDroppable\";\n  Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n  Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n  return useMemo(() => ({\n    sensor,\n    options: options != null ? options : {}\n  }), // eslint-disable-next-line react-hooks/exhaustive-deps\n  [sensor, options]);\n}\n\nfunction useSensors() {\n  for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n    sensors[_key] = arguments[_key];\n  }\n\n  return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n  [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n  x: 0,\n  y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n  return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n  const eventCoordinates = getEventCoordinates(event);\n\n  if (!eventCoordinates) {\n    return '0 0';\n  }\n\n  const transformOrigin = {\n    x: (eventCoordinates.x - rect.left) / rect.width * 100,\n    y: (eventCoordinates.y - rect.top) / rect.height * 100\n  };\n  return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n  let {\n    data: {\n      value: a\n    }\n  } = _ref;\n  let {\n    data: {\n      value: b\n    }\n  } = _ref2;\n  return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n  let {\n    data: {\n      value: a\n    }\n  } = _ref3;\n  let {\n    data: {\n      value: b\n    }\n  } = _ref4;\n  return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n  let {\n    left,\n    top,\n    height,\n    width\n  } = _ref5;\n  return [{\n    x: left,\n    y: top\n  }, {\n    x: left + width,\n    y: top\n  }, {\n    x: left,\n    y: top + height\n  }, {\n    x: left + width,\n    y: top + height\n  }];\n}\nfunction getFirstCollision(collisions, property) {\n  if (!collisions || collisions.length === 0) {\n    return null;\n  }\n\n  const [firstCollision] = collisions;\n  return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n  if (left === void 0) {\n    left = rect.left;\n  }\n\n  if (top === void 0) {\n    top = rect.top;\n  }\n\n  return {\n    x: left + rect.width * 0.5,\n    y: top + rect.height * 0.5\n  };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n  let {\n    collisionRect,\n    droppableRects,\n    droppableContainers\n  } = _ref;\n  const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n  const collisions = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {\n      id\n    } = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect) {\n      const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n      collisions.push({\n        id,\n        data: {\n          droppableContainer,\n          value: distBetween\n        }\n      });\n    }\n  }\n\n  return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n  let {\n    collisionRect,\n    droppableRects,\n    droppableContainers\n  } = _ref;\n  const corners = cornersOfRectangle(collisionRect);\n  const collisions = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {\n      id\n    } = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect) {\n      const rectCorners = cornersOfRectangle(rect);\n      const distances = corners.reduce((accumulator, corner, index) => {\n        return accumulator + distanceBetween(rectCorners[index], corner);\n      }, 0);\n      const effectiveDistance = Number((distances / 4).toFixed(4));\n      collisions.push({\n        id,\n        data: {\n          droppableContainer,\n          value: effectiveDistance\n        }\n      });\n    }\n  }\n\n  return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n  const top = Math.max(target.top, entry.top);\n  const left = Math.max(target.left, entry.left);\n  const right = Math.min(target.left + target.width, entry.left + entry.width);\n  const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n  const width = right - left;\n  const height = bottom - top;\n\n  if (left < right && top < bottom) {\n    const targetArea = target.width * target.height;\n    const entryArea = entry.width * entry.height;\n    const intersectionArea = width * height;\n    const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n    return Number(intersectionRatio.toFixed(4));\n  } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n  return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n  let {\n    collisionRect,\n    droppableRects,\n    droppableContainers\n  } = _ref;\n  const collisions = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {\n      id\n    } = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect) {\n      const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n      if (intersectionRatio > 0) {\n        collisions.push({\n          id,\n          data: {\n            droppableContainer,\n            value: intersectionRatio\n          }\n        });\n      }\n    }\n  }\n\n  return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n  const {\n    top,\n    left,\n    bottom,\n    right\n  } = rect;\n  return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n  let {\n    droppableContainers,\n    droppableRects,\n    pointerCoordinates\n  } = _ref;\n\n  if (!pointerCoordinates) {\n    return [];\n  }\n\n  const collisions = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {\n      id\n    } = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n      /* There may be more than a single rectangle intersecting\r\n       * with the pointer coordinates. In order to sort the\r\n       * colliding rectangles, we measure the distance between\r\n       * the pointer and the corners of the intersecting rectangle\r\n       */\n      const corners = cornersOfRectangle(rect);\n      const distances = corners.reduce((accumulator, corner) => {\n        return accumulator + distanceBetween(pointerCoordinates, corner);\n      }, 0);\n      const effectiveDistance = Number((distances / 4).toFixed(4));\n      collisions.push({\n        id,\n        data: {\n          droppableContainer,\n          value: effectiveDistance\n        }\n      });\n    }\n  }\n\n  return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n  return { ...transform,\n    scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n    scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n  };\n}\n\nfunction getRectDelta(rect1, rect2) {\n  return rect1 && rect2 ? {\n    x: rect1.left - rect2.left,\n    y: rect1.top - rect2.top\n  } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n  return function adjustClientRect(rect) {\n    for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      adjustments[_key - 1] = arguments[_key];\n    }\n\n    return adjustments.reduce((acc, adjustment) => ({ ...acc,\n      top: acc.top + modifier * adjustment.y,\n      bottom: acc.bottom + modifier * adjustment.y,\n      left: acc.left + modifier * adjustment.x,\n      right: acc.right + modifier * adjustment.x\n    }), { ...rect\n    });\n  };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n  if (transform.startsWith('matrix3d(')) {\n    const transformArray = transform.slice(9, -1).split(/, /);\n    return {\n      x: +transformArray[12],\n      y: +transformArray[13],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[5]\n    };\n  } else if (transform.startsWith('matrix(')) {\n    const transformArray = transform.slice(7, -1).split(/, /);\n    return {\n      x: +transformArray[4],\n      y: +transformArray[5],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[3]\n    };\n  }\n\n  return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n  const parsedTransform = parseTransform(transform);\n\n  if (!parsedTransform) {\n    return rect;\n  }\n\n  const {\n    scaleX,\n    scaleY,\n    x: translateX,\n    y: translateY\n  } = parsedTransform;\n  const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n  const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n  const w = scaleX ? rect.width / scaleX : rect.width;\n  const h = scaleY ? rect.height / scaleY : rect.height;\n  return {\n    width: w,\n    height: h,\n    top: y,\n    right: x + w,\n    bottom: y + h,\n    left: x\n  };\n}\n\nconst defaultOptions = {\n  ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n  if (options === void 0) {\n    options = defaultOptions;\n  }\n\n  let rect = element.getBoundingClientRect();\n\n  if (options.ignoreTransform) {\n    const {\n      transform,\n      transformOrigin\n    } = getWindow(element).getComputedStyle(element);\n\n    if (transform) {\n      rect = inverseTransform(rect, transform, transformOrigin);\n    }\n  }\n\n  const {\n    top,\n    left,\n    width,\n    height,\n    bottom,\n    right\n  } = rect;\n  return {\n    top,\n    left,\n    width,\n    height,\n    bottom,\n    right\n  };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n  return getClientRect(element, {\n    ignoreTransform: true\n  });\n}\n\nfunction getWindowClientRect(element) {\n  const width = element.innerWidth;\n  const height = element.innerHeight;\n  return {\n    top: 0,\n    left: 0,\n    right: width,\n    bottom: height,\n    width,\n    height\n  };\n}\n\nfunction isFixed(node, computedStyle) {\n  if (computedStyle === void 0) {\n    computedStyle = getWindow(node).getComputedStyle(node);\n  }\n\n  return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n  if (computedStyle === void 0) {\n    computedStyle = getWindow(element).getComputedStyle(element);\n  }\n\n  const overflowRegex = /(auto|scroll|overlay)/;\n  const properties = ['overflow', 'overflowX', 'overflowY'];\n  return properties.some(property => {\n    const value = computedStyle[property];\n    return typeof value === 'string' ? overflowRegex.test(value) : false;\n  });\n}\n\nfunction getScrollableAncestors(element, limit) {\n  const scrollParents = [];\n\n  function findScrollableAncestors(node) {\n    if (limit != null && scrollParents.length >= limit) {\n      return scrollParents;\n    }\n\n    if (!node) {\n      return scrollParents;\n    }\n\n    if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n      scrollParents.push(node.scrollingElement);\n      return scrollParents;\n    }\n\n    if (!isHTMLElement(node) || isSVGElement(node)) {\n      return scrollParents;\n    }\n\n    if (scrollParents.includes(node)) {\n      return scrollParents;\n    }\n\n    const computedStyle = getWindow(element).getComputedStyle(node);\n\n    if (node !== element) {\n      if (isScrollable(node, computedStyle)) {\n        scrollParents.push(node);\n      }\n    }\n\n    if (isFixed(node, computedStyle)) {\n      return scrollParents;\n    }\n\n    return findScrollableAncestors(node.parentNode);\n  }\n\n  if (!element) {\n    return scrollParents;\n  }\n\n  return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n  const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n  return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n  if (!canUseDOM || !element) {\n    return null;\n  }\n\n  if (isWindow(element)) {\n    return element;\n  }\n\n  if (!isNode(element)) {\n    return null;\n  }\n\n  if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n    return window;\n  }\n\n  if (isHTMLElement(element)) {\n    return element;\n  }\n\n  return null;\n}\n\nfunction getScrollXCoordinate(element) {\n  if (isWindow(element)) {\n    return element.scrollX;\n  }\n\n  return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n  if (isWindow(element)) {\n    return element.scrollY;\n  }\n\n  return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n  return {\n    x: getScrollXCoordinate(element),\n    y: getScrollYCoordinate(element)\n  };\n}\n\nvar Direction;\n\n(function (Direction) {\n  Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n  Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n  if (!canUseDOM || !element) {\n    return false;\n  }\n\n  return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n  const minScroll = {\n    x: 0,\n    y: 0\n  };\n  const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n    height: window.innerHeight,\n    width: window.innerWidth\n  } : {\n    height: scrollingContainer.clientHeight,\n    width: scrollingContainer.clientWidth\n  };\n  const maxScroll = {\n    x: scrollingContainer.scrollWidth - dimensions.width,\n    y: scrollingContainer.scrollHeight - dimensions.height\n  };\n  const isTop = scrollingContainer.scrollTop <= minScroll.y;\n  const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n  const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n  const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n  return {\n    isTop,\n    isLeft,\n    isBottom,\n    isRight,\n    maxScroll,\n    minScroll\n  };\n}\n\nconst defaultThreshold = {\n  x: 0.2,\n  y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n  let {\n    top,\n    left,\n    right,\n    bottom\n  } = _ref;\n\n  if (acceleration === void 0) {\n    acceleration = 10;\n  }\n\n  if (thresholdPercentage === void 0) {\n    thresholdPercentage = defaultThreshold;\n  }\n\n  const {\n    isTop,\n    isBottom,\n    isLeft,\n    isRight\n  } = getScrollPosition(scrollContainer);\n  const direction = {\n    x: 0,\n    y: 0\n  };\n  const speed = {\n    x: 0,\n    y: 0\n  };\n  const threshold = {\n    height: scrollContainerRect.height * thresholdPercentage.y,\n    width: scrollContainerRect.width * thresholdPercentage.x\n  };\n\n  if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n    // Scroll Up\n    direction.y = Direction.Backward;\n    speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n  } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n    // Scroll Down\n    direction.y = Direction.Forward;\n    speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n  }\n\n  if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n    // Scroll Right\n    direction.x = Direction.Forward;\n    speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n  } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n    // Scroll Left\n    direction.x = Direction.Backward;\n    speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n  }\n\n  return {\n    direction,\n    speed\n  };\n}\n\nfunction getScrollElementRect(element) {\n  if (element === document.scrollingElement) {\n    const {\n      innerWidth,\n      innerHeight\n    } = window;\n    return {\n      top: 0,\n      left: 0,\n      right: innerWidth,\n      bottom: innerHeight,\n      width: innerWidth,\n      height: innerHeight\n    };\n  }\n\n  const {\n    top,\n    left,\n    right,\n    bottom\n  } = element.getBoundingClientRect();\n  return {\n    top,\n    left,\n    right,\n    bottom,\n    width: element.clientWidth,\n    height: element.clientHeight\n  };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n  return scrollableAncestors.reduce((acc, node) => {\n    return add(acc, getScrollCoordinates(node));\n  }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n  return scrollableAncestors.reduce((acc, node) => {\n    return acc + getScrollXCoordinate(node);\n  }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n  return scrollableAncestors.reduce((acc, node) => {\n    return acc + getScrollYCoordinate(node);\n  }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n  if (measure === void 0) {\n    measure = getClientRect;\n  }\n\n  if (!element) {\n    return;\n  }\n\n  const {\n    top,\n    left,\n    bottom,\n    right\n  } = measure(element);\n  const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n  if (!firstScrollableAncestor) {\n    return;\n  }\n\n  if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n    element.scrollIntoView({\n      block: 'center',\n      inline: 'center'\n    });\n  }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n  constructor(rect, element) {\n    this.rect = void 0;\n    this.width = void 0;\n    this.height = void 0;\n    this.top = void 0;\n    this.bottom = void 0;\n    this.right = void 0;\n    this.left = void 0;\n    const scrollableAncestors = getScrollableAncestors(element);\n    const scrollOffsets = getScrollOffsets(scrollableAncestors);\n    this.rect = { ...rect\n    };\n    this.width = rect.width;\n    this.height = rect.height;\n\n    for (const [axis, keys, getScrollOffset] of properties) {\n      for (const key of keys) {\n        Object.defineProperty(this, key, {\n          get: () => {\n            const currentOffsets = getScrollOffset(scrollableAncestors);\n            const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n            return this.rect[key] + scrollOffsetsDeltla;\n          },\n          enumerable: true\n        });\n      }\n    }\n\n    Object.defineProperty(this, 'rect', {\n      enumerable: false\n    });\n  }\n\n}\n\nclass Listeners {\n  constructor(target) {\n    this.target = void 0;\n    this.listeners = [];\n\n    this.removeAll = () => {\n      this.listeners.forEach(listener => {\n        var _this$target;\n\n        return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n      });\n    };\n\n    this.target = target;\n  }\n\n  add(eventName, handler, options) {\n    var _this$target2;\n\n    (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n    this.listeners.push([eventName, handler, options]);\n  }\n\n}\n\nfunction getEventListenerTarget(target) {\n  // If the `event.target` element is removed from the document events will still be targeted\n  // at it, and hence won't always bubble up to the window or document anymore.\n  // If there is any risk of an element being removed while it is being dragged,\n  // the best practice is to attach the event listeners directly to the target.\n  // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n  const {\n    EventTarget\n  } = getWindow(target);\n  return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n  const dx = Math.abs(delta.x);\n  const dy = Math.abs(delta.y);\n\n  if (typeof measurement === 'number') {\n    return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n  }\n\n  if ('x' in measurement && 'y' in measurement) {\n    return dx > measurement.x && dy > measurement.y;\n  }\n\n  if ('x' in measurement) {\n    return dx > measurement.x;\n  }\n\n  if ('y' in measurement) {\n    return dy > measurement.y;\n  }\n\n  return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n  EventName[\"Click\"] = \"click\";\n  EventName[\"DragStart\"] = \"dragstart\";\n  EventName[\"Keydown\"] = \"keydown\";\n  EventName[\"ContextMenu\"] = \"contextmenu\";\n  EventName[\"Resize\"] = \"resize\";\n  EventName[\"SelectionChange\"] = \"selectionchange\";\n  EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n  event.preventDefault();\n}\nfunction stopPropagation(event) {\n  event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n  KeyboardCode[\"Space\"] = \"Space\";\n  KeyboardCode[\"Down\"] = \"ArrowDown\";\n  KeyboardCode[\"Right\"] = \"ArrowRight\";\n  KeyboardCode[\"Left\"] = \"ArrowLeft\";\n  KeyboardCode[\"Up\"] = \"ArrowUp\";\n  KeyboardCode[\"Esc\"] = \"Escape\";\n  KeyboardCode[\"Enter\"] = \"Enter\";\n  KeyboardCode[\"Tab\"] = \"Tab\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n  start: [KeyboardCode.Space, KeyboardCode.Enter],\n  cancel: [KeyboardCode.Esc],\n  end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n  let {\n    currentCoordinates\n  } = _ref;\n\n  switch (event.code) {\n    case KeyboardCode.Right:\n      return { ...currentCoordinates,\n        x: currentCoordinates.x + 25\n      };\n\n    case KeyboardCode.Left:\n      return { ...currentCoordinates,\n        x: currentCoordinates.x - 25\n      };\n\n    case KeyboardCode.Down:\n      return { ...currentCoordinates,\n        y: currentCoordinates.y + 25\n      };\n\n    case KeyboardCode.Up:\n      return { ...currentCoordinates,\n        y: currentCoordinates.y - 25\n      };\n  }\n\n  return undefined;\n};\n\nclass KeyboardSensor {\n  constructor(props) {\n    this.props = void 0;\n    this.autoScrollEnabled = false;\n    this.referenceCoordinates = void 0;\n    this.listeners = void 0;\n    this.windowListeners = void 0;\n    this.props = props;\n    const {\n      event: {\n        target\n      }\n    } = props;\n    this.props = props;\n    this.listeners = new Listeners(getOwnerDocument(target));\n    this.windowListeners = new Listeners(getWindow(target));\n    this.handleKeyDown = this.handleKeyDown.bind(this);\n    this.handleCancel = this.handleCancel.bind(this);\n    this.attach();\n  }\n\n  attach() {\n    this.handleStart();\n    this.windowListeners.add(EventName.Resize, this.handleCancel);\n    this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n    setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n  }\n\n  handleStart() {\n    const {\n      activeNode,\n      onStart\n    } = this.props;\n    const node = activeNode.node.current;\n\n    if (node) {\n      scrollIntoViewIfNeeded(node);\n    }\n\n    onStart(defaultCoordinates);\n  }\n\n  handleKeyDown(event) {\n    if (isKeyboardEvent(event)) {\n      const {\n        active,\n        context,\n        options\n      } = this.props;\n      const {\n        keyboardCodes = defaultKeyboardCodes,\n        coordinateGetter = defaultKeyboardCoordinateGetter,\n        scrollBehavior = 'smooth'\n      } = options;\n      const {\n        code\n      } = event;\n\n      if (keyboardCodes.end.includes(code)) {\n        this.handleEnd(event);\n        return;\n      }\n\n      if (keyboardCodes.cancel.includes(code)) {\n        this.handleCancel(event);\n        return;\n      }\n\n      const {\n        collisionRect\n      } = context.current;\n      const currentCoordinates = collisionRect ? {\n        x: collisionRect.left,\n        y: collisionRect.top\n      } : defaultCoordinates;\n\n      if (!this.referenceCoordinates) {\n        this.referenceCoordinates = currentCoordinates;\n      }\n\n      const newCoordinates = coordinateGetter(event, {\n        active,\n        context: context.current,\n        currentCoordinates\n      });\n\n      if (newCoordinates) {\n        const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n        const scrollDelta = {\n          x: 0,\n          y: 0\n        };\n        const {\n          scrollableAncestors\n        } = context.current;\n\n        for (const scrollContainer of scrollableAncestors) {\n          const direction = event.code;\n          const {\n            isTop,\n            isRight,\n            isLeft,\n            isBottom,\n            maxScroll,\n            minScroll\n          } = getScrollPosition(scrollContainer);\n          const scrollElementRect = getScrollElementRect(scrollContainer);\n          const clampedCoordinates = {\n            x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n            y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n          };\n          const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n          const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n          if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n            const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n            const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n            if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n              // We don't need to update coordinates, the scroll adjustment alone will trigger\n              // logic to auto-detect the new container we are over\n              scrollContainer.scrollTo({\n                left: newScrollCoordinates,\n                behavior: scrollBehavior\n              });\n              return;\n            }\n\n            if (canScrollToNewCoordinates) {\n              scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n            } else {\n              scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n            }\n\n            if (scrollDelta.x) {\n              scrollContainer.scrollBy({\n                left: -scrollDelta.x,\n                behavior: scrollBehavior\n              });\n            }\n\n            break;\n          } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n            const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n            const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n            if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n              // We don't need to update coordinates, the scroll adjustment alone will trigger\n              // logic to auto-detect the new container we are over\n              scrollContainer.scrollTo({\n                top: newScrollCoordinates,\n                behavior: scrollBehavior\n              });\n              return;\n            }\n\n            if (canScrollToNewCoordinates) {\n              scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n            } else {\n              scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n            }\n\n            if (scrollDelta.y) {\n              scrollContainer.scrollBy({\n                top: -scrollDelta.y,\n                behavior: scrollBehavior\n              });\n            }\n\n            break;\n          }\n        }\n\n        this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n      }\n    }\n  }\n\n  handleMove(event, coordinates) {\n    const {\n      onMove\n    } = this.props;\n    event.preventDefault();\n    onMove(coordinates);\n  }\n\n  handleEnd(event) {\n    const {\n      onEnd\n    } = this.props;\n    event.preventDefault();\n    this.detach();\n    onEnd();\n  }\n\n  handleCancel(event) {\n    const {\n      onCancel\n    } = this.props;\n    event.preventDefault();\n    this.detach();\n    onCancel();\n  }\n\n  detach() {\n    this.listeners.removeAll();\n    this.windowListeners.removeAll();\n  }\n\n}\nKeyboardSensor.activators = [{\n  eventName: 'onKeyDown',\n  handler: (event, _ref, _ref2) => {\n    let {\n      keyboardCodes = defaultKeyboardCodes,\n      onActivation\n    } = _ref;\n    let {\n      active\n    } = _ref2;\n    const {\n      code\n    } = event.nativeEvent;\n\n    if (keyboardCodes.start.includes(code)) {\n      const activator = active.activatorNode.current;\n\n      if (activator && event.target !== activator) {\n        return false;\n      }\n\n      event.preventDefault();\n      onActivation == null ? void 0 : onActivation({\n        event: event.nativeEvent\n      });\n      return true;\n    }\n\n    return false;\n  }\n}];\n\nfunction isDistanceConstraint(constraint) {\n  return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n  return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n  constructor(props, events, listenerTarget) {\n    var _getEventCoordinates;\n\n    if (listenerTarget === void 0) {\n      listenerTarget = getEventListenerTarget(props.event.target);\n    }\n\n    this.props = void 0;\n    this.events = void 0;\n    this.autoScrollEnabled = true;\n    this.document = void 0;\n    this.activated = false;\n    this.initialCoordinates = void 0;\n    this.timeoutId = null;\n    this.listeners = void 0;\n    this.documentListeners = void 0;\n    this.windowListeners = void 0;\n    this.props = props;\n    this.events = events;\n    const {\n      event\n    } = props;\n    const {\n      target\n    } = event;\n    this.props = props;\n    this.events = events;\n    this.document = getOwnerDocument(target);\n    this.documentListeners = new Listeners(this.document);\n    this.listeners = new Listeners(listenerTarget);\n    this.windowListeners = new Listeners(getWindow(target));\n    this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n    this.handleStart = this.handleStart.bind(this);\n    this.handleMove = this.handleMove.bind(this);\n    this.handleEnd = this.handleEnd.bind(this);\n    this.handleCancel = this.handleCancel.bind(this);\n    this.handleKeydown = this.handleKeydown.bind(this);\n    this.removeTextSelection = this.removeTextSelection.bind(this);\n    this.attach();\n  }\n\n  attach() {\n    const {\n      events,\n      props: {\n        options: {\n          activationConstraint,\n          bypassActivationConstraint\n        }\n      }\n    } = this;\n    this.listeners.add(events.move.name, this.handleMove, {\n      passive: false\n    });\n    this.listeners.add(events.end.name, this.handleEnd);\n\n    if (events.cancel) {\n      this.listeners.add(events.cancel.name, this.handleCancel);\n    }\n\n    this.windowListeners.add(EventName.Resize, this.handleCancel);\n    this.windowListeners.add(EventName.DragStart, preventDefault);\n    this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n    this.windowListeners.add(EventName.ContextMenu, preventDefault);\n    this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n    if (activationConstraint) {\n      if (bypassActivationConstraint != null && bypassActivationConstraint({\n        event: this.props.event,\n        activeNode: this.props.activeNode,\n        options: this.props.options\n      })) {\n        return this.handleStart();\n      }\n\n      if (isDelayConstraint(activationConstraint)) {\n        this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n        this.handlePending(activationConstraint);\n        return;\n      }\n\n      if (isDistanceConstraint(activationConstraint)) {\n        this.handlePending(activationConstraint);\n        return;\n      }\n    }\n\n    this.handleStart();\n  }\n\n  detach() {\n    this.listeners.removeAll();\n    this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n    // This is necessary because we listen for `click` and `selection` events on the document\n\n    setTimeout(this.documentListeners.removeAll, 50);\n\n    if (this.timeoutId !== null) {\n      clearTimeout(this.timeoutId);\n      this.timeoutId = null;\n    }\n  }\n\n  handlePending(constraint, offset) {\n    const {\n      active,\n      onPending\n    } = this.props;\n    onPending(active, constraint, this.initialCoordinates, offset);\n  }\n\n  handleStart() {\n    const {\n      initialCoordinates\n    } = this;\n    const {\n      onStart\n    } = this.props;\n\n    if (initialCoordinates) {\n      this.activated = true; // Stop propagation of click events once activation constraints are met\n\n      this.documentListeners.add(EventName.Click, stopPropagation, {\n        capture: true\n      }); // Remove any text selection from the document\n\n      this.removeTextSelection(); // Prevent further text selection while dragging\n\n      this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n      onStart(initialCoordinates);\n    }\n  }\n\n  handleMove(event) {\n    var _getEventCoordinates2;\n\n    const {\n      activated,\n      initialCoordinates,\n      props\n    } = this;\n    const {\n      onMove,\n      options: {\n        activationConstraint\n      }\n    } = props;\n\n    if (!initialCoordinates) {\n      return;\n    }\n\n    const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n    const delta = subtract(initialCoordinates, coordinates); // Constraint validation\n\n    if (!activated && activationConstraint) {\n      if (isDistanceConstraint(activationConstraint)) {\n        if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n          return this.handleCancel();\n        }\n\n        if (hasExceededDistance(delta, activationConstraint.distance)) {\n          return this.handleStart();\n        }\n      }\n\n      if (isDelayConstraint(activationConstraint)) {\n        if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n          return this.handleCancel();\n        }\n      }\n\n      this.handlePending(activationConstraint, delta);\n      return;\n    }\n\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    onMove(coordinates);\n  }\n\n  handleEnd() {\n    const {\n      onAbort,\n      onEnd\n    } = this.props;\n    this.detach();\n\n    if (!this.activated) {\n      onAbort(this.props.active);\n    }\n\n    onEnd();\n  }\n\n  handleCancel() {\n    const {\n      onAbort,\n      onCancel\n    } = this.props;\n    this.detach();\n\n    if (!this.activated) {\n      onAbort(this.props.active);\n    }\n\n    onCancel();\n  }\n\n  handleKeydown(event) {\n    if (event.code === KeyboardCode.Esc) {\n      this.handleCancel();\n    }\n  }\n\n  removeTextSelection() {\n    var _this$document$getSel;\n\n    (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n  }\n\n}\n\nconst events = {\n  cancel: {\n    name: 'pointercancel'\n  },\n  move: {\n    name: 'pointermove'\n  },\n  end: {\n    name: 'pointerup'\n  }\n};\nclass PointerSensor extends AbstractPointerSensor {\n  constructor(props) {\n    const {\n      event\n    } = props; // Pointer events stop firing if the target is unmounted while dragging\n    // Therefore we attach listeners to the owner document instead\n\n    const listenerTarget = getOwnerDocument(event.target);\n    super(props, events, listenerTarget);\n  }\n\n}\nPointerSensor.activators = [{\n  eventName: 'onPointerDown',\n  handler: (_ref, _ref2) => {\n    let {\n      nativeEvent: event\n    } = _ref;\n    let {\n      onActivation\n    } = _ref2;\n\n    if (!event.isPrimary || event.button !== 0) {\n      return false;\n    }\n\n    onActivation == null ? void 0 : onActivation({\n      event\n    });\n    return true;\n  }\n}];\n\nconst events$1 = {\n  move: {\n    name: 'mousemove'\n  },\n  end: {\n    name: 'mouseup'\n  }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n  MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n  constructor(props) {\n    super(props, events$1, getOwnerDocument(props.event.target));\n  }\n\n}\nMouseSensor.activators = [{\n  eventName: 'onMouseDown',\n  handler: (_ref, _ref2) => {\n    let {\n      nativeEvent: event\n    } = _ref;\n    let {\n      onActivation\n    } = _ref2;\n\n    if (event.button === MouseButton.RightClick) {\n      return false;\n    }\n\n    onActivation == null ? void 0 : onActivation({\n      event\n    });\n    return true;\n  }\n}];\n\nconst events$2 = {\n  cancel: {\n    name: 'touchcancel'\n  },\n  move: {\n    name: 'touchmove'\n  },\n  end: {\n    name: 'touchend'\n  }\n};\nclass TouchSensor extends AbstractPointerSensor {\n  constructor(props) {\n    super(props, events$2);\n  }\n\n  static setup() {\n    // Adding a non-capture and non-passive `touchmove` listener in order\n    // to force `event.preventDefault()` calls to work in dynamically added\n    // touchmove event handlers. This is required for iOS Safari.\n    window.addEventListener(events$2.move.name, noop, {\n      capture: false,\n      passive: false\n    });\n    return function teardown() {\n      window.removeEventListener(events$2.move.name, noop);\n    }; // We create a new handler because the teardown function of another sensor\n    // could remove our event listener if we use a referentially equal listener.\n\n    function noop() {}\n  }\n\n}\nTouchSensor.activators = [{\n  eventName: 'onTouchStart',\n  handler: (_ref, _ref2) => {\n    let {\n      nativeEvent: event\n    } = _ref;\n    let {\n      onActivation\n    } = _ref2;\n    const {\n      touches\n    } = event;\n\n    if (touches.length > 1) {\n      return false;\n    }\n\n    onActivation == null ? void 0 : onActivation({\n      event\n    });\n    return true;\n  }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n  AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n  AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n  TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n  TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n  let {\n    acceleration,\n    activator = AutoScrollActivator.Pointer,\n    canScroll,\n    draggingRect,\n    enabled,\n    interval = 5,\n    order = TraversalOrder.TreeOrder,\n    pointerCoordinates,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    delta,\n    threshold\n  } = _ref;\n  const scrollIntent = useScrollIntent({\n    delta,\n    disabled: !enabled\n  });\n  const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n  const scrollSpeed = useRef({\n    x: 0,\n    y: 0\n  });\n  const scrollDirection = useRef({\n    x: 0,\n    y: 0\n  });\n  const rect = useMemo(() => {\n    switch (activator) {\n      case AutoScrollActivator.Pointer:\n        return pointerCoordinates ? {\n          top: pointerCoordinates.y,\n          bottom: pointerCoordinates.y,\n          left: pointerCoordinates.x,\n          right: pointerCoordinates.x\n        } : null;\n\n      case AutoScrollActivator.DraggableRect:\n        return draggingRect;\n    }\n  }, [activator, draggingRect, pointerCoordinates]);\n  const scrollContainerRef = useRef(null);\n  const autoScroll = useCallback(() => {\n    const scrollContainer = scrollContainerRef.current;\n\n    if (!scrollContainer) {\n      return;\n    }\n\n    const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n    const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n    scrollContainer.scrollBy(scrollLeft, scrollTop);\n  }, []);\n  const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n  useEffect(() => {\n    if (!enabled || !scrollableAncestors.length || !rect) {\n      clearAutoScrollInterval();\n      return;\n    }\n\n    for (const scrollContainer of sortedScrollableAncestors) {\n      if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n        continue;\n      }\n\n      const index = scrollableAncestors.indexOf(scrollContainer);\n      const scrollContainerRect = scrollableAncestorRects[index];\n\n      if (!scrollContainerRect) {\n        continue;\n      }\n\n      const {\n        direction,\n        speed\n      } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n      for (const axis of ['x', 'y']) {\n        if (!scrollIntent[axis][direction[axis]]) {\n          speed[axis] = 0;\n          direction[axis] = 0;\n        }\n      }\n\n      if (speed.x > 0 || speed.y > 0) {\n        clearAutoScrollInterval();\n        scrollContainerRef.current = scrollContainer;\n        setAutoScrollInterval(autoScroll, interval);\n        scrollSpeed.current = speed;\n        scrollDirection.current = direction;\n        return;\n      }\n    }\n\n    scrollSpeed.current = {\n      x: 0,\n      y: 0\n    };\n    scrollDirection.current = {\n      x: 0,\n      y: 0\n    };\n    clearAutoScrollInterval();\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n  JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n  JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n  JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n  x: {\n    [Direction.Backward]: false,\n    [Direction.Forward]: false\n  },\n  y: {\n    [Direction.Backward]: false,\n    [Direction.Forward]: false\n  }\n};\n\nfunction useScrollIntent(_ref2) {\n  let {\n    delta,\n    disabled\n  } = _ref2;\n  const previousDelta = usePrevious(delta);\n  return useLazyMemo(previousIntent => {\n    if (disabled || !previousDelta || !previousIntent) {\n      // Reset scroll intent tracking when auto-scrolling is disabled\n      return defaultScrollIntent;\n    }\n\n    const direction = {\n      x: Math.sign(delta.x - previousDelta.x),\n      y: Math.sign(delta.y - previousDelta.y)\n    }; // Keep track of the user intent to scroll in each direction for both axis\n\n    return {\n      x: {\n        [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n        [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n      },\n      y: {\n        [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n        [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n      }\n    };\n  }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n  const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n  const node = draggableNode ? draggableNode.node.current : null;\n  return useLazyMemo(cachedNode => {\n    var _ref;\n\n    if (id == null) {\n      return null;\n    } // In some cases, the draggable node can unmount while dragging\n    // This is the case for virtualized lists. In those situations,\n    // we fall back to the last known value for that node.\n\n\n    return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n  }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n  return useMemo(() => sensors.reduce((accumulator, sensor) => {\n    const {\n      sensor: Sensor\n    } = sensor;\n    const sensorActivators = Sensor.activators.map(activator => ({\n      eventName: activator.eventName,\n      handler: getSyntheticHandler(activator.handler, sensor)\n    }));\n    return [...accumulator, ...sensorActivators];\n  }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n  MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n  MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n  MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n  MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n  let {\n    dragging,\n    dependencies,\n    config\n  } = _ref;\n  const [queue, setQueue] = useState(null);\n  const {\n    frequency,\n    measure,\n    strategy\n  } = config;\n  const containersRef = useRef(containers);\n  const disabled = isDisabled();\n  const disabledRef = useLatestValue(disabled);\n  const measureDroppableContainers = useCallback(function (ids) {\n    if (ids === void 0) {\n      ids = [];\n    }\n\n    if (disabledRef.current) {\n      return;\n    }\n\n    setQueue(value => {\n      if (value === null) {\n        return ids;\n      }\n\n      return value.concat(ids.filter(id => !value.includes(id)));\n    });\n  }, [disabledRef]);\n  const timeoutId = useRef(null);\n  const droppableRects = useLazyMemo(previousValue => {\n    if (disabled && !dragging) {\n      return defaultValue;\n    }\n\n    if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || queue != null) {\n      const map = new Map();\n\n      for (let container of containers) {\n        if (!container) {\n          continue;\n        }\n\n        if (queue && queue.length > 0 && !queue.includes(container.id) && container.rect.current) {\n          // This container does not need to be re-measured\n          map.set(container.id, container.rect.current);\n          continue;\n        }\n\n        const node = container.node.current;\n        const rect = node ? new Rect(measure(node), node) : null;\n        container.rect.current = rect;\n\n        if (rect) {\n          map.set(container.id, rect);\n        }\n      }\n\n      return map;\n    }\n\n    return previousValue;\n  }, [containers, queue, dragging, disabled, measure]);\n  useEffect(() => {\n    containersRef.current = containers;\n  }, [containers]);\n  useEffect(() => {\n    if (disabled) {\n      return;\n    }\n\n    measureDroppableContainers();\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [dragging, disabled]);\n  useEffect(() => {\n    if (queue && queue.length > 0) {\n      setQueue(null);\n    }\n  }, //eslint-disable-next-line react-hooks/exhaustive-deps\n  [JSON.stringify(queue)]);\n  useEffect(() => {\n    if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n      return;\n    }\n\n    timeoutId.current = setTimeout(() => {\n      measureDroppableContainers();\n      timeoutId.current = null;\n    }, frequency);\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [frequency, disabled, measureDroppableContainers, ...dependencies]);\n  return {\n    droppableRects,\n    measureDroppableContainers,\n    measuringScheduled: queue != null\n  };\n\n  function isDisabled() {\n    switch (strategy) {\n      case MeasuringStrategy.Always:\n        return false;\n\n      case MeasuringStrategy.BeforeDragging:\n        return dragging;\n\n      default:\n        return !dragging;\n    }\n  }\n}\n\nfunction useInitialValue(value, computeFn) {\n  return useLazyMemo(previousValue => {\n    if (!value) {\n      return null;\n    }\n\n    if (previousValue) {\n      return previousValue;\n    }\n\n    return typeof computeFn === 'function' ? computeFn(value) : value;\n  }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n  return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n  let {\n    callback,\n    disabled\n  } = _ref;\n  const handleMutations = useEvent(callback);\n  const mutationObserver = useMemo(() => {\n    if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n      return undefined;\n    }\n\n    const {\n      MutationObserver\n    } = window;\n    return new MutationObserver(handleMutations);\n  }, [handleMutations, disabled]);\n  useEffect(() => {\n    return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n  }, [mutationObserver]);\n  return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n  let {\n    callback,\n    disabled\n  } = _ref;\n  const handleResize = useEvent(callback);\n  const resizeObserver = useMemo(() => {\n    if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n      return undefined;\n    }\n\n    const {\n      ResizeObserver\n    } = window;\n    return new ResizeObserver(handleResize);\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [disabled]);\n  useEffect(() => {\n    return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n  }, [resizeObserver]);\n  return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n  return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n  if (measure === void 0) {\n    measure = defaultMeasure;\n  }\n\n  const [rect, setRect] = useState(null);\n\n  function measureRect() {\n    setRect(currentRect => {\n      if (!element) {\n        return null;\n      }\n\n      if (element.isConnected === false) {\n        var _ref;\n\n        // Fall back to last rect we measured if the element is\n        // no longer connected to the DOM.\n        return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n      }\n\n      const newRect = measure(element);\n\n      if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n        return currentRect;\n      }\n\n      return newRect;\n    });\n  }\n\n  const mutationObserver = useMutationObserver({\n    callback(records) {\n      if (!element) {\n        return;\n      }\n\n      for (const record of records) {\n        const {\n          type,\n          target\n        } = record;\n\n        if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n          measureRect();\n          break;\n        }\n      }\n    }\n\n  });\n  const resizeObserver = useResizeObserver({\n    callback: measureRect\n  });\n  useIsomorphicLayoutEffect(() => {\n    measureRect();\n\n    if (element) {\n      resizeObserver == null ? void 0 : resizeObserver.observe(element);\n      mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n        childList: true,\n        subtree: true\n      });\n    } else {\n      resizeObserver == null ? void 0 : resizeObserver.disconnect();\n      mutationObserver == null ? void 0 : mutationObserver.disconnect();\n    }\n  }, [element]);\n  return rect;\n}\n\nfunction useRectDelta(rect) {\n  const initialRect = useInitialValue(rect);\n  return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n  const previousNode = useRef(node);\n  const ancestors = useLazyMemo(previousValue => {\n    if (!node) {\n      return defaultValue$1;\n    }\n\n    if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n      return previousValue;\n    }\n\n    return getScrollableAncestors(node);\n  }, [node]);\n  useEffect(() => {\n    previousNode.current = node;\n  }, [node]);\n  return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n  const [scrollCoordinates, setScrollCoordinates] = useState(null);\n  const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n  const handleScroll = useCallback(event => {\n    const scrollingElement = getScrollableElement(event.target);\n\n    if (!scrollingElement) {\n      return;\n    }\n\n    setScrollCoordinates(scrollCoordinates => {\n      if (!scrollCoordinates) {\n        return null;\n      }\n\n      scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n      return new Map(scrollCoordinates);\n    });\n  }, []);\n  useEffect(() => {\n    const previousElements = prevElements.current;\n\n    if (elements !== previousElements) {\n      cleanup(previousElements);\n      const entries = elements.map(element => {\n        const scrollableElement = getScrollableElement(element);\n\n        if (scrollableElement) {\n          scrollableElement.addEventListener('scroll', handleScroll, {\n            passive: true\n          });\n          return [scrollableElement, getScrollCoordinates(scrollableElement)];\n        }\n\n        return null;\n      }).filter(entry => entry != null);\n      setScrollCoordinates(entries.length ? new Map(entries) : null);\n      prevElements.current = elements;\n    }\n\n    return () => {\n      cleanup(elements);\n      cleanup(previousElements);\n    };\n\n    function cleanup(elements) {\n      elements.forEach(element => {\n        const scrollableElement = getScrollableElement(element);\n        scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n      });\n    }\n  }, [handleScroll, elements]);\n  return useMemo(() => {\n    if (elements.length) {\n      return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n    }\n\n    return defaultCoordinates;\n  }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n  if (dependencies === void 0) {\n    dependencies = [];\n  }\n\n  const initialScrollOffsets = useRef(null);\n  useEffect(() => {\n    initialScrollOffsets.current = null;\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  dependencies);\n  useEffect(() => {\n    const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n    if (hasScrollOffsets && !initialScrollOffsets.current) {\n      initialScrollOffsets.current = scrollOffsets;\n    }\n\n    if (!hasScrollOffsets && initialScrollOffsets.current) {\n      initialScrollOffsets.current = null;\n    }\n  }, [scrollOffsets]);\n  return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n  useEffect(() => {\n    if (!canUseDOM) {\n      return;\n    }\n\n    const teardownFns = sensors.map(_ref => {\n      let {\n        sensor\n      } = _ref;\n      return sensor.setup == null ? void 0 : sensor.setup();\n    });\n    return () => {\n      for (const teardown of teardownFns) {\n        teardown == null ? void 0 : teardown();\n      }\n    };\n  }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  sensors.map(_ref2 => {\n    let {\n      sensor\n    } = _ref2;\n    return sensor;\n  }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n  return useMemo(() => {\n    return listeners.reduce((acc, _ref) => {\n      let {\n        eventName,\n        handler\n      } = _ref;\n\n      acc[eventName] = event => {\n        handler(event, id);\n      };\n\n      return acc;\n    }, {});\n  }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n  return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n  if (measure === void 0) {\n    measure = getClientRect;\n  }\n\n  const [firstElement] = elements;\n  const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n  const [rects, setRects] = useState(defaultValue$2);\n\n  function measureRects() {\n    setRects(() => {\n      if (!elements.length) {\n        return defaultValue$2;\n      }\n\n      return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n    });\n  }\n\n  const resizeObserver = useResizeObserver({\n    callback: measureRects\n  });\n  useIsomorphicLayoutEffect(() => {\n    resizeObserver == null ? void 0 : resizeObserver.disconnect();\n    measureRects();\n    elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n  }, [elements]);\n  return rects;\n}\n\nfunction getMeasurableNode(node) {\n  if (!node) {\n    return null;\n  }\n\n  if (node.children.length > 1) {\n    return node;\n  }\n\n  const firstChild = node.children[0];\n  return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n  let {\n    measure\n  } = _ref;\n  const [rect, setRect] = useState(null);\n  const handleResize = useCallback(entries => {\n    for (const {\n      target\n    } of entries) {\n      if (isHTMLElement(target)) {\n        setRect(rect => {\n          const newRect = measure(target);\n          return rect ? { ...rect,\n            width: newRect.width,\n            height: newRect.height\n          } : newRect;\n        });\n        break;\n      }\n    }\n  }, [measure]);\n  const resizeObserver = useResizeObserver({\n    callback: handleResize\n  });\n  const handleNodeChange = useCallback(element => {\n    const node = getMeasurableNode(element);\n    resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n    if (node) {\n      resizeObserver == null ? void 0 : resizeObserver.observe(node);\n    }\n\n    setRect(node ? measure(node) : null);\n  }, [measure, resizeObserver]);\n  const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n  return useMemo(() => ({\n    nodeRef,\n    rect,\n    setRef\n  }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n  sensor: PointerSensor,\n  options: {}\n}, {\n  sensor: KeyboardSensor,\n  options: {}\n}];\nconst defaultData = {\n  current: {}\n};\nconst defaultMeasuringConfiguration = {\n  draggable: {\n    measure: getTransformAgnosticClientRect\n  },\n  droppable: {\n    measure: getTransformAgnosticClientRect,\n    strategy: MeasuringStrategy.WhileDragging,\n    frequency: MeasuringFrequency.Optimized\n  },\n  dragOverlay: {\n    measure: getClientRect\n  }\n};\n\nclass DroppableContainersMap extends Map {\n  get(id) {\n    var _super$get;\n\n    return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n  }\n\n  toArray() {\n    return Array.from(this.values());\n  }\n\n  getEnabled() {\n    return this.toArray().filter(_ref => {\n      let {\n        disabled\n      } = _ref;\n      return !disabled;\n    });\n  }\n\n  getNodeFor(id) {\n    var _this$get$node$curren, _this$get;\n\n    return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n  }\n\n}\n\nconst defaultPublicContext = {\n  activatorEvent: null,\n  active: null,\n  activeNode: null,\n  activeNodeRect: null,\n  collisions: null,\n  containerNodeRect: null,\n  draggableNodes: /*#__PURE__*/new Map(),\n  droppableRects: /*#__PURE__*/new Map(),\n  droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n  over: null,\n  dragOverlay: {\n    nodeRef: {\n      current: null\n    },\n    rect: null,\n    setRef: noop\n  },\n  scrollableAncestors: [],\n  scrollableAncestorRects: [],\n  measuringConfiguration: defaultMeasuringConfiguration,\n  measureDroppableContainers: noop,\n  windowRect: null,\n  measuringScheduled: false\n};\nconst defaultInternalContext = {\n  activatorEvent: null,\n  activators: [],\n  active: null,\n  activeNodeRect: null,\n  ariaDescribedById: {\n    draggable: ''\n  },\n  dispatch: noop,\n  draggableNodes: /*#__PURE__*/new Map(),\n  over: null,\n  measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n  return {\n    draggable: {\n      active: null,\n      initialCoordinates: {\n        x: 0,\n        y: 0\n      },\n      nodes: new Map(),\n      translate: {\n        x: 0,\n        y: 0\n      }\n    },\n    droppable: {\n      containers: new DroppableContainersMap()\n    }\n  };\n}\nfunction reducer(state, action) {\n  switch (action.type) {\n    case Action.DragStart:\n      return { ...state,\n        draggable: { ...state.draggable,\n          initialCoordinates: action.initialCoordinates,\n          active: action.active\n        }\n      };\n\n    case Action.DragMove:\n      if (state.draggable.active == null) {\n        return state;\n      }\n\n      return { ...state,\n        draggable: { ...state.draggable,\n          translate: {\n            x: action.coordinates.x - state.draggable.initialCoordinates.x,\n            y: action.coordinates.y - state.draggable.initialCoordinates.y\n          }\n        }\n      };\n\n    case Action.DragEnd:\n    case Action.DragCancel:\n      return { ...state,\n        draggable: { ...state.draggable,\n          active: null,\n          initialCoordinates: {\n            x: 0,\n            y: 0\n          },\n          translate: {\n            x: 0,\n            y: 0\n          }\n        }\n      };\n\n    case Action.RegisterDroppable:\n      {\n        const {\n          element\n        } = action;\n        const {\n          id\n        } = element;\n        const containers = new DroppableContainersMap(state.droppable.containers);\n        containers.set(id, element);\n        return { ...state,\n          droppable: { ...state.droppable,\n            containers\n          }\n        };\n      }\n\n    case Action.SetDroppableDisabled:\n      {\n        const {\n          id,\n          key,\n          disabled\n        } = action;\n        const element = state.droppable.containers.get(id);\n\n        if (!element || key !== element.key) {\n          return state;\n        }\n\n        const containers = new DroppableContainersMap(state.droppable.containers);\n        containers.set(id, { ...element,\n          disabled\n        });\n        return { ...state,\n          droppable: { ...state.droppable,\n            containers\n          }\n        };\n      }\n\n    case Action.UnregisterDroppable:\n      {\n        const {\n          id,\n          key\n        } = action;\n        const element = state.droppable.containers.get(id);\n\n        if (!element || key !== element.key) {\n          return state;\n        }\n\n        const containers = new DroppableContainersMap(state.droppable.containers);\n        containers.delete(id);\n        return { ...state,\n          droppable: { ...state.droppable,\n            containers\n          }\n        };\n      }\n\n    default:\n      {\n        return state;\n      }\n  }\n}\n\nfunction RestoreFocus(_ref) {\n  let {\n    disabled\n  } = _ref;\n  const {\n    active,\n    activatorEvent,\n    draggableNodes\n  } = useContext(InternalContext);\n  const previousActivatorEvent = usePrevious(activatorEvent);\n  const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n  useEffect(() => {\n    if (disabled) {\n      return;\n    }\n\n    if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n      if (!isKeyboardEvent(previousActivatorEvent)) {\n        return;\n      }\n\n      if (document.activeElement === previousActivatorEvent.target) {\n        // No need to restore focus\n        return;\n      }\n\n      const draggableNode = draggableNodes.get(previousActiveId);\n\n      if (!draggableNode) {\n        return;\n      }\n\n      const {\n        activatorNode,\n        node\n      } = draggableNode;\n\n      if (!activatorNode.current && !node.current) {\n        return;\n      }\n\n      requestAnimationFrame(() => {\n        for (const element of [activatorNode.current, node.current]) {\n          if (!element) {\n            continue;\n          }\n\n          const focusableNode = findFirstFocusableNode(element);\n\n          if (focusableNode) {\n            focusableNode.focus();\n            break;\n          }\n        }\n      });\n    }\n  }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n  return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n  let {\n    transform,\n    ...args\n  } = _ref;\n  return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n    return modifier({\n      transform: accumulator,\n      ...args\n    });\n  }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n  return useMemo(() => ({\n    draggable: { ...defaultMeasuringConfiguration.draggable,\n      ...(config == null ? void 0 : config.draggable)\n    },\n    droppable: { ...defaultMeasuringConfiguration.droppable,\n      ...(config == null ? void 0 : config.droppable)\n    },\n    dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n      ...(config == null ? void 0 : config.dragOverlay)\n    }\n  }), // eslint-disable-next-line react-hooks/exhaustive-deps\n  [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n  let {\n    activeNode,\n    measure,\n    initialRect,\n    config = true\n  } = _ref;\n  const initialized = useRef(false);\n  const {\n    x,\n    y\n  } = typeof config === 'boolean' ? {\n    x: config,\n    y: config\n  } : config;\n  useIsomorphicLayoutEffect(() => {\n    const disabled = !x && !y;\n\n    if (disabled || !activeNode) {\n      initialized.current = false;\n      return;\n    }\n\n    if (initialized.current || !initialRect) {\n      // Return early if layout shift scroll compensation was already attempted\n      // or if there is no initialRect to compare to.\n      return;\n    } // Get the most up to date node ref for the active draggable\n\n\n    const node = activeNode == null ? void 0 : activeNode.node.current;\n\n    if (!node || node.isConnected === false) {\n      // Return early if there is no attached node ref or if the node is\n      // disconnected from the document.\n      return;\n    }\n\n    const rect = measure(node);\n    const rectDelta = getRectDelta(rect, initialRect);\n\n    if (!x) {\n      rectDelta.x = 0;\n    }\n\n    if (!y) {\n      rectDelta.y = 0;\n    } // Only perform layout shift scroll compensation once\n\n\n    initialized.current = true;\n\n    if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n      const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n      if (firstScrollableAncestor) {\n        firstScrollableAncestor.scrollBy({\n          top: rectDelta.y,\n          left: rectDelta.x\n        });\n      }\n    }\n  }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n  scaleX: 1,\n  scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n  Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n  Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n  Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n  var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n  let {\n    id,\n    accessibility,\n    autoScroll = true,\n    children,\n    sensors = defaultSensors,\n    collisionDetection = rectIntersection,\n    measuring,\n    modifiers,\n    ...props\n  } = _ref;\n  const store = useReducer(reducer, undefined, getInitialState);\n  const [state, dispatch] = store;\n  const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n  const [status, setStatus] = useState(Status.Uninitialized);\n  const isInitialized = status === Status.Initialized;\n  const {\n    draggable: {\n      active: activeId,\n      nodes: draggableNodes,\n      translate\n    },\n    droppable: {\n      containers: droppableContainers\n    }\n  } = state;\n  const node = activeId != null ? draggableNodes.get(activeId) : null;\n  const activeRects = useRef({\n    initial: null,\n    translated: null\n  });\n  const active = useMemo(() => {\n    var _node$data;\n\n    return activeId != null ? {\n      id: activeId,\n      // It's possible for the active node to unmount while dragging\n      data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n      rect: activeRects\n    } : null;\n  }, [activeId, node]);\n  const activeRef = useRef(null);\n  const [activeSensor, setActiveSensor] = useState(null);\n  const [activatorEvent, setActivatorEvent] = useState(null);\n  const latestProps = useLatestValue(props, Object.values(props));\n  const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n  const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n  const measuringConfiguration = useMeasuringConfiguration(measuring);\n  const {\n    droppableRects,\n    measureDroppableContainers,\n    measuringScheduled\n  } = useDroppableMeasuring(enabledDroppableContainers, {\n    dragging: isInitialized,\n    dependencies: [translate.x, translate.y],\n    config: measuringConfiguration.droppable\n  });\n  const activeNode = useCachedNode(draggableNodes, activeId);\n  const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n  const autoScrollOptions = getAutoScrollerOptions();\n  const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n  useLayoutShiftScrollCompensation({\n    activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n    config: autoScrollOptions.layoutShiftCompensation,\n    initialRect: initialActiveNodeRect,\n    measure: measuringConfiguration.draggable.measure\n  });\n  const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n  const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n  const sensorContext = useRef({\n    activatorEvent: null,\n    active: null,\n    activeNode,\n    collisionRect: null,\n    collisions: null,\n    droppableRects,\n    draggableNodes,\n    draggingNode: null,\n    draggingNodeRect: null,\n    droppableContainers,\n    over: null,\n    scrollableAncestors: [],\n    scrollAdjustedTranslate: null\n  });\n  const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n  const dragOverlay = useDragOverlayMeasuring({\n    measure: measuringConfiguration.dragOverlay.measure\n  }); // Use the rect of the drag overlay if it is mounted\n\n  const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n  const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n  const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n  // is only relevant when there is no drag overlay\n\n  const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n  const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n  const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n  const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n  const modifiedTranslate = applyModifiers(modifiers, {\n    transform: {\n      x: translate.x - nodeRectDelta.x,\n      y: translate.y - nodeRectDelta.y,\n      scaleX: 1,\n      scaleY: 1\n    },\n    activatorEvent,\n    active,\n    activeNodeRect,\n    containerNodeRect,\n    draggingNodeRect,\n    over: sensorContext.current.over,\n    overlayNodeRect: dragOverlay.rect,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    windowRect\n  });\n  const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n  const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n  const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n  const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n  const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n  const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n  const collisions = active && collisionRect ? collisionDetection({\n    active,\n    collisionRect,\n    droppableRects,\n    droppableContainers: enabledDroppableContainers,\n    pointerCoordinates\n  }) : null;\n  const overId = getFirstCollision(collisions, 'id');\n  const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n  // window scroll delta\n\n  const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n  const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n  const activeSensorRef = useRef(null);\n  const instantiateSensor = useCallback((event, _ref2) => {\n    let {\n      sensor: Sensor,\n      options\n    } = _ref2;\n\n    if (activeRef.current == null) {\n      return;\n    }\n\n    const activeNode = draggableNodes.get(activeRef.current);\n\n    if (!activeNode) {\n      return;\n    }\n\n    const activatorEvent = event.nativeEvent;\n    const sensorInstance = new Sensor({\n      active: activeRef.current,\n      activeNode,\n      event: activatorEvent,\n      options,\n      // Sensors need to be instantiated with refs for arguments that change over time\n      // otherwise they are frozen in time with the stale arguments\n      context: sensorContext,\n\n      onAbort(id) {\n        const draggableNode = draggableNodes.get(id);\n\n        if (!draggableNode) {\n          return;\n        }\n\n        const {\n          onDragAbort\n        } = latestProps.current;\n        const event = {\n          id\n        };\n        onDragAbort == null ? void 0 : onDragAbort(event);\n        dispatchMonitorEvent({\n          type: 'onDragAbort',\n          event\n        });\n      },\n\n      onPending(id, constraint, initialCoordinates, offset) {\n        const draggableNode = draggableNodes.get(id);\n\n        if (!draggableNode) {\n          return;\n        }\n\n        const {\n          onDragPending\n        } = latestProps.current;\n        const event = {\n          id,\n          constraint,\n          initialCoordinates,\n          offset\n        };\n        onDragPending == null ? void 0 : onDragPending(event);\n        dispatchMonitorEvent({\n          type: 'onDragPending',\n          event\n        });\n      },\n\n      onStart(initialCoordinates) {\n        const id = activeRef.current;\n\n        if (id == null) {\n          return;\n        }\n\n        const draggableNode = draggableNodes.get(id);\n\n        if (!draggableNode) {\n          return;\n        }\n\n        const {\n          onDragStart\n        } = latestProps.current;\n        const event = {\n          activatorEvent,\n          active: {\n            id,\n            data: draggableNode.data,\n            rect: activeRects\n          }\n        };\n        unstable_batchedUpdates(() => {\n          onDragStart == null ? void 0 : onDragStart(event);\n          setStatus(Status.Initializing);\n          dispatch({\n            type: Action.DragStart,\n            initialCoordinates,\n            active: id\n          });\n          dispatchMonitorEvent({\n            type: 'onDragStart',\n            event\n          });\n          setActiveSensor(activeSensorRef.current);\n          setActivatorEvent(activatorEvent);\n        });\n      },\n\n      onMove(coordinates) {\n        dispatch({\n          type: Action.DragMove,\n          coordinates\n        });\n      },\n\n      onEnd: createHandler(Action.DragEnd),\n      onCancel: createHandler(Action.DragCancel)\n    });\n    activeSensorRef.current = sensorInstance;\n\n    function createHandler(type) {\n      return async function handler() {\n        const {\n          active,\n          collisions,\n          over,\n          scrollAdjustedTranslate\n        } = sensorContext.current;\n        let event = null;\n\n        if (active && scrollAdjustedTranslate) {\n          const {\n            cancelDrop\n          } = latestProps.current;\n          event = {\n            activatorEvent,\n            active: active,\n            collisions,\n            delta: scrollAdjustedTranslate,\n            over\n          };\n\n          if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n            const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n            if (shouldCancel) {\n              type = Action.DragCancel;\n            }\n          }\n        }\n\n        activeRef.current = null;\n        unstable_batchedUpdates(() => {\n          dispatch({\n            type\n          });\n          setStatus(Status.Uninitialized);\n          setOver(null);\n          setActiveSensor(null);\n          setActivatorEvent(null);\n          activeSensorRef.current = null;\n          const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n          if (event) {\n            const handler = latestProps.current[eventName];\n            handler == null ? void 0 : handler(event);\n            dispatchMonitorEvent({\n              type: eventName,\n              event\n            });\n          }\n        });\n      };\n    }\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [draggableNodes]);\n  const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n    return (event, active) => {\n      const nativeEvent = event.nativeEvent;\n      const activeDraggableNode = draggableNodes.get(active);\n\n      if ( // Another sensor is already instantiating\n      activeRef.current !== null || // No active draggable\n      !activeDraggableNode || // Event has already been captured\n      nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n        return;\n      }\n\n      const activationContext = {\n        active: activeDraggableNode\n      };\n      const shouldActivate = handler(event, sensor.options, activationContext);\n\n      if (shouldActivate === true) {\n        nativeEvent.dndKit = {\n          capturedBy: sensor.sensor\n        };\n        activeRef.current = active;\n        instantiateSensor(event, sensor);\n      }\n    };\n  }, [draggableNodes, instantiateSensor]);\n  const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n  useSensorSetup(sensors);\n  useIsomorphicLayoutEffect(() => {\n    if (activeNodeRect && status === Status.Initializing) {\n      setStatus(Status.Initialized);\n    }\n  }, [activeNodeRect, status]);\n  useEffect(() => {\n    const {\n      onDragMove\n    } = latestProps.current;\n    const {\n      active,\n      activatorEvent,\n      collisions,\n      over\n    } = sensorContext.current;\n\n    if (!active || !activatorEvent) {\n      return;\n    }\n\n    const event = {\n      active,\n      activatorEvent,\n      collisions,\n      delta: {\n        x: scrollAdjustedTranslate.x,\n        y: scrollAdjustedTranslate.y\n      },\n      over\n    };\n    unstable_batchedUpdates(() => {\n      onDragMove == null ? void 0 : onDragMove(event);\n      dispatchMonitorEvent({\n        type: 'onDragMove',\n        event\n      });\n    });\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n  useEffect(() => {\n    const {\n      active,\n      activatorEvent,\n      collisions,\n      droppableContainers,\n      scrollAdjustedTranslate\n    } = sensorContext.current;\n\n    if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n      return;\n    }\n\n    const {\n      onDragOver\n    } = latestProps.current;\n    const overContainer = droppableContainers.get(overId);\n    const over = overContainer && overContainer.rect.current ? {\n      id: overContainer.id,\n      rect: overContainer.rect.current,\n      data: overContainer.data,\n      disabled: overContainer.disabled\n    } : null;\n    const event = {\n      active,\n      activatorEvent,\n      collisions,\n      delta: {\n        x: scrollAdjustedTranslate.x,\n        y: scrollAdjustedTranslate.y\n      },\n      over\n    };\n    unstable_batchedUpdates(() => {\n      setOver(over);\n      onDragOver == null ? void 0 : onDragOver(event);\n      dispatchMonitorEvent({\n        type: 'onDragOver',\n        event\n      });\n    });\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [overId]);\n  useIsomorphicLayoutEffect(() => {\n    sensorContext.current = {\n      activatorEvent,\n      active,\n      activeNode,\n      collisionRect,\n      collisions,\n      droppableRects,\n      draggableNodes,\n      draggingNode,\n      draggingNodeRect,\n      droppableContainers,\n      over,\n      scrollableAncestors,\n      scrollAdjustedTranslate\n    };\n    activeRects.current = {\n      initial: draggingNodeRect,\n      translated: collisionRect\n    };\n  }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n  useAutoScroller({ ...autoScrollOptions,\n    delta: translate,\n    draggingRect: collisionRect,\n    pointerCoordinates,\n    scrollableAncestors,\n    scrollableAncestorRects\n  });\n  const publicContext = useMemo(() => {\n    const context = {\n      active,\n      activeNode,\n      activeNodeRect,\n      activatorEvent,\n      collisions,\n      containerNodeRect,\n      dragOverlay,\n      draggableNodes,\n      droppableContainers,\n      droppableRects,\n      over,\n      measureDroppableContainers,\n      scrollableAncestors,\n      scrollableAncestorRects,\n      measuringConfiguration,\n      measuringScheduled,\n      windowRect\n    };\n    return context;\n  }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n  const internalContext = useMemo(() => {\n    const context = {\n      activatorEvent,\n      activators,\n      active,\n      activeNodeRect,\n      ariaDescribedById: {\n        draggable: draggableDescribedById\n      },\n      dispatch,\n      draggableNodes,\n      over,\n      measureDroppableContainers\n    };\n    return context;\n  }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n  return React.createElement(DndMonitorContext.Provider, {\n    value: registerMonitorListener\n  }, React.createElement(InternalContext.Provider, {\n    value: internalContext\n  }, React.createElement(PublicContext.Provider, {\n    value: publicContext\n  }, React.createElement(ActiveDraggableContext.Provider, {\n    value: transform\n  }, children)), React.createElement(RestoreFocus, {\n    disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n  })), React.createElement(Accessibility, { ...accessibility,\n    hiddenTextDescribedById: draggableDescribedById\n  }));\n\n  function getAutoScrollerOptions() {\n    const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n    const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n    const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n    if (typeof autoScroll === 'object') {\n      return { ...autoScroll,\n        enabled\n      };\n    }\n\n    return {\n      enabled\n    };\n  }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Draggable';\nfunction useDraggable(_ref) {\n  let {\n    id,\n    data,\n    disabled = false,\n    attributes\n  } = _ref;\n  const key = useUniqueId(ID_PREFIX);\n  const {\n    activators,\n    activatorEvent,\n    active,\n    activeNodeRect,\n    ariaDescribedById,\n    draggableNodes,\n    over\n  } = useContext(InternalContext);\n  const {\n    role = defaultRole,\n    roleDescription = 'draggable',\n    tabIndex = 0\n  } = attributes != null ? attributes : {};\n  const isDragging = (active == null ? void 0 : active.id) === id;\n  const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n  const [node, setNodeRef] = useNodeRef();\n  const [activatorNode, setActivatorNodeRef] = useNodeRef();\n  const listeners = useSyntheticListeners(activators, id);\n  const dataRef = useLatestValue(data);\n  useIsomorphicLayoutEffect(() => {\n    draggableNodes.set(id, {\n      id,\n      key,\n      node,\n      activatorNode,\n      data: dataRef\n    });\n    return () => {\n      const node = draggableNodes.get(id);\n\n      if (node && node.key === key) {\n        draggableNodes.delete(id);\n      }\n    };\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [draggableNodes, id]);\n  const memoizedAttributes = useMemo(() => ({\n    role,\n    tabIndex,\n    'aria-disabled': disabled,\n    'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n    'aria-roledescription': roleDescription,\n    'aria-describedby': ariaDescribedById.draggable\n  }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n  return {\n    active,\n    activatorEvent,\n    activeNodeRect,\n    attributes: memoizedAttributes,\n    isDragging,\n    listeners: disabled ? undefined : listeners,\n    node,\n    over,\n    setNodeRef,\n    setActivatorNodeRef,\n    transform\n  };\n}\n\nfunction useDndContext() {\n  return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n  timeout: 25\n};\nfunction useDroppable(_ref) {\n  let {\n    data,\n    disabled = false,\n    id,\n    resizeObserverConfig\n  } = _ref;\n  const key = useUniqueId(ID_PREFIX$1);\n  const {\n    active,\n    dispatch,\n    over,\n    measureDroppableContainers\n  } = useContext(InternalContext);\n  const previous = useRef({\n    disabled\n  });\n  const resizeObserverConnected = useRef(false);\n  const rect = useRef(null);\n  const callbackId = useRef(null);\n  const {\n    disabled: resizeObserverDisabled,\n    updateMeasurementsFor,\n    timeout: resizeObserverTimeout\n  } = { ...defaultResizeObserverConfig,\n    ...resizeObserverConfig\n  };\n  const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n  const handleResize = useCallback(() => {\n    if (!resizeObserverConnected.current) {\n      // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n      // assuming the element is rendered and displayed.\n      resizeObserverConnected.current = true;\n      return;\n    }\n\n    if (callbackId.current != null) {\n      clearTimeout(callbackId.current);\n    }\n\n    callbackId.current = setTimeout(() => {\n      measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n      callbackId.current = null;\n    }, resizeObserverTimeout);\n  }, //eslint-disable-next-line react-hooks/exhaustive-deps\n  [resizeObserverTimeout]);\n  const resizeObserver = useResizeObserver({\n    callback: handleResize,\n    disabled: resizeObserverDisabled || !active\n  });\n  const handleNodeChange = useCallback((newElement, previousElement) => {\n    if (!resizeObserver) {\n      return;\n    }\n\n    if (previousElement) {\n      resizeObserver.unobserve(previousElement);\n      resizeObserverConnected.current = false;\n    }\n\n    if (newElement) {\n      resizeObserver.observe(newElement);\n    }\n  }, [resizeObserver]);\n  const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n  const dataRef = useLatestValue(data);\n  useEffect(() => {\n    if (!resizeObserver || !nodeRef.current) {\n      return;\n    }\n\n    resizeObserver.disconnect();\n    resizeObserverConnected.current = false;\n    resizeObserver.observe(nodeRef.current);\n  }, [nodeRef, resizeObserver]);\n  useEffect(() => {\n    dispatch({\n      type: Action.RegisterDroppable,\n      element: {\n        id,\n        key,\n        disabled,\n        node: nodeRef,\n        rect,\n        data: dataRef\n      }\n    });\n    return () => dispatch({\n      type: Action.UnregisterDroppable,\n      key,\n      id\n    });\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [id]);\n  useEffect(() => {\n    if (disabled !== previous.current.disabled) {\n      dispatch({\n        type: Action.SetDroppableDisabled,\n        id,\n        key,\n        disabled\n      });\n      previous.current.disabled = disabled;\n    }\n  }, [id, key, disabled, dispatch]);\n  return {\n    active,\n    rect,\n    isOver: (over == null ? void 0 : over.id) === id,\n    node: nodeRef,\n    over,\n    setNodeRef\n  };\n}\n\nfunction AnimationManager(_ref) {\n  let {\n    animation,\n    children\n  } = _ref;\n  const [clonedChildren, setClonedChildren] = useState(null);\n  const [element, setElement] = useState(null);\n  const previousChildren = usePrevious(children);\n\n  if (!children && !clonedChildren && previousChildren) {\n    setClonedChildren(previousChildren);\n  }\n\n  useIsomorphicLayoutEffect(() => {\n    if (!element) {\n      return;\n    }\n\n    const key = clonedChildren == null ? void 0 : clonedChildren.key;\n    const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n    if (key == null || id == null) {\n      setClonedChildren(null);\n      return;\n    }\n\n    Promise.resolve(animation(id, element)).then(() => {\n      setClonedChildren(null);\n    });\n  }, [animation, clonedChildren, element]);\n  return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n    ref: setElement\n  }) : null);\n}\n\nconst defaultTransform = {\n  x: 0,\n  y: 0,\n  scaleX: 1,\n  scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n  let {\n    children\n  } = _ref;\n  return React.createElement(InternalContext.Provider, {\n    value: defaultInternalContext\n  }, React.createElement(ActiveDraggableContext.Provider, {\n    value: defaultTransform\n  }, children));\n}\n\nconst baseStyles = {\n  position: 'fixed',\n  touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n  const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n  return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n  let {\n    as,\n    activatorEvent,\n    adjustScale,\n    children,\n    className,\n    rect,\n    style,\n    transform,\n    transition = defaultTransition\n  } = _ref;\n\n  if (!rect) {\n    return null;\n  }\n\n  const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n    scaleX: 1,\n    scaleY: 1\n  };\n  const styles = { ...baseStyles,\n    width: rect.width,\n    height: rect.height,\n    top: rect.top,\n    left: rect.left,\n    transform: CSS.Transform.toString(scaleAdjustedTransform),\n    transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n    transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n    ...style\n  };\n  return React.createElement(as, {\n    className,\n    style: styles,\n    ref\n  }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n  let {\n    active,\n    dragOverlay\n  } = _ref;\n  const originalStyles = {};\n  const {\n    styles,\n    className\n  } = options;\n\n  if (styles != null && styles.active) {\n    for (const [key, value] of Object.entries(styles.active)) {\n      if (value === undefined) {\n        continue;\n      }\n\n      originalStyles[key] = active.node.style.getPropertyValue(key);\n      active.node.style.setProperty(key, value);\n    }\n  }\n\n  if (styles != null && styles.dragOverlay) {\n    for (const [key, value] of Object.entries(styles.dragOverlay)) {\n      if (value === undefined) {\n        continue;\n      }\n\n      dragOverlay.node.style.setProperty(key, value);\n    }\n  }\n\n  if (className != null && className.active) {\n    active.node.classList.add(className.active);\n  }\n\n  if (className != null && className.dragOverlay) {\n    dragOverlay.node.classList.add(className.dragOverlay);\n  }\n\n  return function cleanup() {\n    for (const [key, value] of Object.entries(originalStyles)) {\n      active.node.style.setProperty(key, value);\n    }\n\n    if (className != null && className.active) {\n      active.node.classList.remove(className.active);\n    }\n  };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n  let {\n    transform: {\n      initial,\n      final\n    }\n  } = _ref2;\n  return [{\n    transform: CSS.Transform.toString(initial)\n  }, {\n    transform: CSS.Transform.toString(final)\n  }];\n};\n\nconst defaultDropAnimationConfiguration = {\n  duration: 250,\n  easing: 'ease',\n  keyframes: defaultKeyframeResolver,\n  sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n    styles: {\n      active: {\n        opacity: '0'\n      }\n    }\n  })\n};\nfunction useDropAnimation(_ref3) {\n  let {\n    config,\n    draggableNodes,\n    droppableContainers,\n    measuringConfiguration\n  } = _ref3;\n  return useEvent((id, node) => {\n    if (config === null) {\n      return;\n    }\n\n    const activeDraggable = draggableNodes.get(id);\n\n    if (!activeDraggable) {\n      return;\n    }\n\n    const activeNode = activeDraggable.node.current;\n\n    if (!activeNode) {\n      return;\n    }\n\n    const measurableNode = getMeasurableNode(node);\n\n    if (!measurableNode) {\n      return;\n    }\n\n    const {\n      transform\n    } = getWindow(node).getComputedStyle(node);\n    const parsedTransform = parseTransform(transform);\n\n    if (!parsedTransform) {\n      return;\n    }\n\n    const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n    scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n    return animation({\n      active: {\n        id,\n        data: activeDraggable.data,\n        node: activeNode,\n        rect: measuringConfiguration.draggable.measure(activeNode)\n      },\n      draggableNodes,\n      dragOverlay: {\n        node,\n        rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n      },\n      droppableContainers,\n      measuringConfiguration,\n      transform: parsedTransform\n    });\n  });\n}\n\nfunction createDefaultDropAnimation(options) {\n  const {\n    duration,\n    easing,\n    sideEffects,\n    keyframes\n  } = { ...defaultDropAnimationConfiguration,\n    ...options\n  };\n  return _ref4 => {\n    let {\n      active,\n      dragOverlay,\n      transform,\n      ...rest\n    } = _ref4;\n\n    if (!duration) {\n      // Do not animate if animation duration is zero.\n      return;\n    }\n\n    const delta = {\n      x: dragOverlay.rect.left - active.rect.left,\n      y: dragOverlay.rect.top - active.rect.top\n    };\n    const scale = {\n      scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n      scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n    };\n    const finalTransform = {\n      x: transform.x - delta.x,\n      y: transform.y - delta.y,\n      ...scale\n    };\n    const animationKeyframes = keyframes({ ...rest,\n      active,\n      dragOverlay,\n      transform: {\n        initial: transform,\n        final: finalTransform\n      }\n    });\n    const [firstKeyframe] = animationKeyframes;\n    const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n    if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n      // The start and end keyframes are the same, infer that there is no animation needed.\n      return;\n    }\n\n    const cleanup = sideEffects == null ? void 0 : sideEffects({\n      active,\n      dragOverlay,\n      ...rest\n    });\n    const animation = dragOverlay.node.animate(animationKeyframes, {\n      duration,\n      easing,\n      fill: 'forwards'\n    });\n    return new Promise(resolve => {\n      animation.onfinish = () => {\n        cleanup == null ? void 0 : cleanup();\n        resolve();\n      };\n    });\n  };\n}\n\nlet key = 0;\nfunction useKey(id) {\n  return useMemo(() => {\n    if (id == null) {\n      return;\n    }\n\n    key++;\n    return key;\n  }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n  let {\n    adjustScale = false,\n    children,\n    dropAnimation: dropAnimationConfig,\n    style,\n    transition,\n    modifiers,\n    wrapperElement = 'div',\n    className,\n    zIndex = 999\n  } = _ref;\n  const {\n    activatorEvent,\n    active,\n    activeNodeRect,\n    containerNodeRect,\n    draggableNodes,\n    droppableContainers,\n    dragOverlay,\n    over,\n    measuringConfiguration,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    windowRect\n  } = useDndContext();\n  const transform = useContext(ActiveDraggableContext);\n  const key = useKey(active == null ? void 0 : active.id);\n  const modifiedTransform = applyModifiers(modifiers, {\n    activatorEvent,\n    active,\n    activeNodeRect,\n    containerNodeRect,\n    draggingNodeRect: dragOverlay.rect,\n    over,\n    overlayNodeRect: dragOverlay.rect,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    transform,\n    windowRect\n  });\n  const initialRect = useInitialValue(activeNodeRect);\n  const dropAnimation = useDropAnimation({\n    config: dropAnimationConfig,\n    draggableNodes,\n    droppableContainers,\n    measuringConfiguration\n  }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n  // otherwise collisions can be computed against a mispositioned drag overlay\n\n  const ref = initialRect ? dragOverlay.setRef : undefined;\n  return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n    animation: dropAnimation\n  }, active && key ? React.createElement(PositionedOverlay, {\n    key: key,\n    id: active.id,\n    ref: ref,\n    as: wrapperElement,\n    activatorEvent: activatorEvent,\n    adjustScale: adjustScale,\n    className: className,\n    transition: transition,\n    rect: initialRect,\n    style: {\n      zIndex,\n      ...style\n    },\n    transform: modifiedTransform\n  }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultKeyboardCoordinateGetter, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","'use strict';\nvar defer = require('./').defer;\n/**\n * An {@link AsyncVar} is an \"asynchronous variable\" which may or may not\n * contain a value of some type T. You can put a value into the {@link AsyncVar}\n * with {@link AsyncVar#put}. Callers can take a value out of the\n * {@link AsyncVar} by queueing up with {@link AsyncVar#take}. N calls to\n * {@link AsyncVar#take} require N calls to {@link AsyncVar#put} to resolve, and\n * they resolve in order.\n */\nvar AsyncVar = /** @class */ (function () {\n    /**\n     * Construct an {@link AsyncVar}.\n     */\n    function AsyncVar() {\n        Object.defineProperties(this, {\n            _deferreds: {\n                value: []\n            },\n            _hasValue: {\n                value: false,\n                writable: true\n            },\n            _value: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Put a value into the {@link AsyncVar}.\n     * @param {T} value\n     * @returns {this}\n     */\n    AsyncVar.prototype.put = function (value) {\n        this._hasValue = true;\n        this._value = value;\n        var deferred = this._deferreds.shift();\n        if (deferred) {\n            deferred.resolve(value);\n        }\n        return this;\n    };\n    /**\n     * Take the value out of the {@link AsyncVar}.\n     * @returns {Promise<T>}\n     */\n    AsyncVar.prototype.take = function () {\n        var _this = this;\n        if (this._hasValue && !this._deferreds.length) {\n            this._hasValue = false;\n            return Promise.resolve(this._value);\n        }\n        var deferred = defer();\n        this._deferreds.push(deferred);\n        return deferred.promise.then(function (value) {\n            _this._hasValue = false;\n            return value;\n        });\n    };\n    return AsyncVar;\n}());\nmodule.exports = AsyncVar;\n//# sourceMappingURL=asyncvar.js.map","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key     | Description                        |\n * |---------|------------------------------------|\n * | years   | Amount of years to be subtracted   |\n * | months  | Amount of months to be subtracted  |\n * | weeks   | Amount of weeks to be subtracted   |\n * | days    | Amount of days to be subtracted    |\n * | hours   | Amount of hours to be subtracted   |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n *   years: 2,\n *   months: 9,\n *   weeks: 1,\n *   days: 7,\n *   hours: 5,\n *   minutes: 9,\n *   seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n  requiredArgs(2, arguments);\n  if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n  var years = duration.years ? toInteger(duration.years) : 0;\n  var months = duration.months ? toInteger(duration.months) : 0;\n  var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n  var days = duration.days ? toInteger(duration.days) : 0;\n  var hours = duration.hours ? toInteger(duration.hours) : 0;\n  var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n  var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n  // Subtract years and months\n  var dateWithoutMonths = subMonths(date, months + years * 12);\n\n  // Subtract weeks and days\n  var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n  // Subtract hours, minutes and seconds\n  var minutestoSub = minutes + hours * 60;\n  var secondstoSub = seconds + minutestoSub * 60;\n  var mstoSub = secondstoSub * 1000;\n  var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n  return finalDate;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addDays(dirtyDate, -amount);\n}","import React, { useMemo, useRef, useEffect, useState, useContext } from 'react';\nimport { useDndContext, getClientRect, useDroppable, useDraggable, closestCorners, getFirstCollision, getScrollableAncestors, KeyboardCode } from '@dnd-kit/core';\nimport { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, isKeyboardEvent, subtract } from '@dnd-kit/utilities';\n\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\nfunction arrayMove(array, from, to) {\n  const newArray = array.slice();\n  newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n  return newArray;\n}\n\n/**\r\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\r\n */\nfunction arraySwap(array, from, to) {\n  const newArray = array.slice();\n  newArray[from] = array[to];\n  newArray[to] = array[from];\n  return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n  return items.reduce((accumulator, id, index) => {\n    const rect = rects.get(id);\n\n    if (rect) {\n      accumulator[index] = rect;\n    }\n\n    return accumulator;\n  }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n  return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction normalizeDisabled(disabled) {\n  if (typeof disabled === 'boolean') {\n    return {\n      draggable: disabled,\n      droppable: disabled\n    };\n  }\n\n  return disabled;\n}\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n  scaleX: 1,\n  scaleY: 1\n};\nconst horizontalListSortingStrategy = _ref => {\n  var _rects$activeIndex;\n\n  let {\n    rects,\n    activeNodeRect: fallbackActiveRect,\n    activeIndex,\n    overIndex,\n    index\n  } = _ref;\n  const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n  if (!activeNodeRect) {\n    return null;\n  }\n\n  const itemGap = getItemGap(rects, index, activeIndex);\n\n  if (index === activeIndex) {\n    const newIndexRect = rects[overIndex];\n\n    if (!newIndexRect) {\n      return null;\n    }\n\n    return {\n      x: activeIndex < overIndex ? newIndexRect.left + newIndexRect.width - (activeNodeRect.left + activeNodeRect.width) : newIndexRect.left - activeNodeRect.left,\n      y: 0,\n      ...defaultScale\n    };\n  }\n\n  if (index > activeIndex && index <= overIndex) {\n    return {\n      x: -activeNodeRect.width - itemGap,\n      y: 0,\n      ...defaultScale\n    };\n  }\n\n  if (index < activeIndex && index >= overIndex) {\n    return {\n      x: activeNodeRect.width + itemGap,\n      y: 0,\n      ...defaultScale\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0,\n    ...defaultScale\n  };\n};\n\nfunction getItemGap(rects, index, activeIndex) {\n  const currentRect = rects[index];\n  const previousRect = rects[index - 1];\n  const nextRect = rects[index + 1];\n\n  if (!currentRect || !previousRect && !nextRect) {\n    return 0;\n  }\n\n  if (activeIndex < index) {\n    return previousRect ? currentRect.left - (previousRect.left + previousRect.width) : nextRect.left - (currentRect.left + currentRect.width);\n  }\n\n  return nextRect ? nextRect.left - (currentRect.left + currentRect.width) : currentRect.left - (previousRect.left + previousRect.width);\n}\n\nconst rectSortingStrategy = _ref => {\n  let {\n    rects,\n    activeIndex,\n    overIndex,\n    index\n  } = _ref;\n  const newRects = arrayMove(rects, overIndex, activeIndex);\n  const oldRect = rects[index];\n  const newRect = newRects[index];\n\n  if (!newRect || !oldRect) {\n    return null;\n  }\n\n  return {\n    x: newRect.left - oldRect.left,\n    y: newRect.top - oldRect.top,\n    scaleX: newRect.width / oldRect.width,\n    scaleY: newRect.height / oldRect.height\n  };\n};\n\nconst rectSwappingStrategy = _ref => {\n  let {\n    activeIndex,\n    index,\n    rects,\n    overIndex\n  } = _ref;\n  let oldRect;\n  let newRect;\n\n  if (index === activeIndex) {\n    oldRect = rects[index];\n    newRect = rects[overIndex];\n  }\n\n  if (index === overIndex) {\n    oldRect = rects[index];\n    newRect = rects[activeIndex];\n  }\n\n  if (!newRect || !oldRect) {\n    return null;\n  }\n\n  return {\n    x: newRect.left - oldRect.left,\n    y: newRect.top - oldRect.top,\n    scaleX: newRect.width / oldRect.width,\n    scaleY: newRect.height / oldRect.height\n  };\n};\n\n// To-do: We should be calculating scale transformation\nconst defaultScale$1 = {\n  scaleX: 1,\n  scaleY: 1\n};\nconst verticalListSortingStrategy = _ref => {\n  var _rects$activeIndex;\n\n  let {\n    activeIndex,\n    activeNodeRect: fallbackActiveRect,\n    index,\n    rects,\n    overIndex\n  } = _ref;\n  const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n  if (!activeNodeRect) {\n    return null;\n  }\n\n  if (index === activeIndex) {\n    const overIndexRect = rects[overIndex];\n\n    if (!overIndexRect) {\n      return null;\n    }\n\n    return {\n      x: 0,\n      y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n      ...defaultScale$1\n    };\n  }\n\n  const itemGap = getItemGap$1(rects, index, activeIndex);\n\n  if (index > activeIndex && index <= overIndex) {\n    return {\n      x: 0,\n      y: -activeNodeRect.height - itemGap,\n      ...defaultScale$1\n    };\n  }\n\n  if (index < activeIndex && index >= overIndex) {\n    return {\n      x: 0,\n      y: activeNodeRect.height + itemGap,\n      ...defaultScale$1\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0,\n    ...defaultScale$1\n  };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n  const currentRect = clientRects[index];\n  const previousRect = clientRects[index - 1];\n  const nextRect = clientRects[index + 1];\n\n  if (!currentRect) {\n    return 0;\n  }\n\n  if (activeIndex < index) {\n    return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n  }\n\n  return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React.createContext({\n  activeIndex: -1,\n  containerId: ID_PREFIX,\n  disableTransforms: false,\n  items: [],\n  overIndex: -1,\n  useDragOverlay: false,\n  sortedRects: [],\n  strategy: rectSortingStrategy,\n  disabled: {\n    draggable: false,\n    droppable: false\n  }\n});\nfunction SortableContext(_ref) {\n  let {\n    children,\n    id,\n    items: userDefinedItems,\n    strategy = rectSortingStrategy,\n    disabled: disabledProp = false\n  } = _ref;\n  const {\n    active,\n    dragOverlay,\n    droppableRects,\n    over,\n    measureDroppableContainers\n  } = useDndContext();\n  const containerId = useUniqueId(ID_PREFIX, id);\n  const useDragOverlay = Boolean(dragOverlay.rect !== null);\n  const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n  const isDragging = active != null;\n  const activeIndex = active ? items.indexOf(active.id) : -1;\n  const overIndex = over ? items.indexOf(over.id) : -1;\n  const previousItemsRef = useRef(items);\n  const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n  const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n  const disabled = normalizeDisabled(disabledProp);\n  useIsomorphicLayoutEffect(() => {\n    if (itemsHaveChanged && isDragging) {\n      measureDroppableContainers(items);\n    }\n  }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n  useEffect(() => {\n    previousItemsRef.current = items;\n  }, [items]);\n  const contextValue = useMemo(() => ({\n    activeIndex,\n    containerId,\n    disabled,\n    disableTransforms,\n    items,\n    overIndex,\n    useDragOverlay,\n    sortedRects: getSortedRects(items, droppableRects),\n    strategy\n  }), // eslint-disable-next-line react-hooks/exhaustive-deps\n  [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n  return React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n  let {\n    id,\n    items,\n    activeIndex,\n    overIndex\n  } = _ref;\n  return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\nconst defaultAnimateLayoutChanges = _ref2 => {\n  let {\n    containerId,\n    isSorting,\n    wasDragging,\n    index,\n    items,\n    newIndex,\n    previousItems,\n    previousContainerId,\n    transition\n  } = _ref2;\n\n  if (!transition || !wasDragging) {\n    return false;\n  }\n\n  if (previousItems !== items && index === newIndex) {\n    return false;\n  }\n\n  if (isSorting) {\n    return true;\n  }\n\n  return newIndex !== index && containerId === previousContainerId;\n};\nconst defaultTransition = {\n  duration: 200,\n  easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n  property: transitionProperty,\n  duration: 0,\n  easing: 'linear'\n});\nconst defaultAttributes = {\n  roleDescription: 'sortable'\n};\n\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n  let {\n    disabled,\n    index,\n    node,\n    rect\n  } = _ref;\n  const [derivedTransform, setDerivedtransform] = useState(null);\n  const previousIndex = useRef(index);\n  useIsomorphicLayoutEffect(() => {\n    if (!disabled && index !== previousIndex.current && node.current) {\n      const initial = rect.current;\n\n      if (initial) {\n        const current = getClientRect(node.current, {\n          ignoreTransform: true\n        });\n        const delta = {\n          x: initial.left - current.left,\n          y: initial.top - current.top,\n          scaleX: initial.width / current.width,\n          scaleY: initial.height / current.height\n        };\n\n        if (delta.x || delta.y) {\n          setDerivedtransform(delta);\n        }\n      }\n    }\n\n    if (index !== previousIndex.current) {\n      previousIndex.current = index;\n    }\n  }, [disabled, index, node, rect]);\n  useEffect(() => {\n    if (derivedTransform) {\n      setDerivedtransform(null);\n    }\n  }, [derivedTransform]);\n  return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n  let {\n    animateLayoutChanges = defaultAnimateLayoutChanges,\n    attributes: userDefinedAttributes,\n    disabled: localDisabled,\n    data: customData,\n    getNewIndex = defaultNewIndexGetter,\n    id,\n    strategy: localStrategy,\n    resizeObserverConfig,\n    transition = defaultTransition\n  } = _ref;\n  const {\n    items,\n    containerId,\n    activeIndex,\n    disabled: globalDisabled,\n    disableTransforms,\n    sortedRects,\n    overIndex,\n    useDragOverlay,\n    strategy: globalStrategy\n  } = useContext(Context);\n  const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n  const index = items.indexOf(id);\n  const data = useMemo(() => ({\n    sortable: {\n      containerId,\n      index,\n      items\n    },\n    ...customData\n  }), [containerId, customData, index, items]);\n  const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n  const {\n    rect,\n    node,\n    isOver,\n    setNodeRef: setDroppableNodeRef\n  } = useDroppable({\n    id,\n    data,\n    disabled: disabled.droppable,\n    resizeObserverConfig: {\n      updateMeasurementsFor: itemsAfterCurrentSortable,\n      ...resizeObserverConfig\n    }\n  });\n  const {\n    active,\n    activatorEvent,\n    activeNodeRect,\n    attributes,\n    setNodeRef: setDraggableNodeRef,\n    listeners,\n    isDragging,\n    over,\n    setActivatorNodeRef,\n    transform\n  } = useDraggable({\n    id,\n    data,\n    attributes: { ...defaultAttributes,\n      ...userDefinedAttributes\n    },\n    disabled: disabled.draggable\n  });\n  const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n  const isSorting = Boolean(active);\n  const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n  const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n  const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n  const strategy = localStrategy != null ? localStrategy : globalStrategy;\n  const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n    rects: sortedRects,\n    activeNodeRect,\n    activeIndex,\n    overIndex,\n    index\n  }) : null;\n  const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n    id,\n    items,\n    activeIndex,\n    overIndex\n  }) : index;\n  const activeId = active == null ? void 0 : active.id;\n  const previous = useRef({\n    activeId,\n    items,\n    newIndex,\n    containerId\n  });\n  const itemsHaveChanged = items !== previous.current.items;\n  const shouldAnimateLayoutChanges = animateLayoutChanges({\n    active,\n    containerId,\n    isDragging,\n    isSorting,\n    id,\n    index,\n    items,\n    newIndex: previous.current.newIndex,\n    previousItems: previous.current.items,\n    previousContainerId: previous.current.containerId,\n    transition,\n    wasDragging: previous.current.activeId != null\n  });\n  const derivedTransform = useDerivedTransform({\n    disabled: !shouldAnimateLayoutChanges,\n    index,\n    node,\n    rect\n  });\n  useEffect(() => {\n    if (isSorting && previous.current.newIndex !== newIndex) {\n      previous.current.newIndex = newIndex;\n    }\n\n    if (containerId !== previous.current.containerId) {\n      previous.current.containerId = containerId;\n    }\n\n    if (items !== previous.current.items) {\n      previous.current.items = items;\n    }\n  }, [isSorting, newIndex, containerId, items]);\n  useEffect(() => {\n    if (activeId === previous.current.activeId) {\n      return;\n    }\n\n    if (activeId && !previous.current.activeId) {\n      previous.current.activeId = activeId;\n      return;\n    }\n\n    const timeoutId = setTimeout(() => {\n      previous.current.activeId = activeId;\n    }, 50);\n    return () => clearTimeout(timeoutId);\n  }, [activeId]);\n  return {\n    active,\n    activeIndex,\n    attributes,\n    data,\n    rect,\n    index,\n    newIndex,\n    items,\n    isOver,\n    isSorting,\n    isDragging,\n    listeners,\n    node,\n    overIndex,\n    over,\n    setNodeRef,\n    setActivatorNodeRef,\n    setDroppableNodeRef,\n    setDraggableNodeRef,\n    transform: derivedTransform != null ? derivedTransform : finalTransform,\n    transition: getTransition()\n  };\n\n  function getTransition() {\n    if ( // Temporarily disable transitions for a single frame to set up derived transforms\n    derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n    itemsHaveChanged && previous.current.newIndex === index) {\n      return disabledTransition;\n    }\n\n    if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n      return undefined;\n    }\n\n    if (isSorting || shouldAnimateLayoutChanges) {\n      return CSS.Transition.toString({ ...transition,\n        property: transitionProperty\n      });\n    }\n\n    return undefined;\n  }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n  var _localDisabled$dragga, _localDisabled$droppa;\n\n  if (typeof localDisabled === 'boolean') {\n    return {\n      draggable: localDisabled,\n      // Backwards compatibility\n      droppable: false\n    };\n  }\n\n  return {\n    draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n    droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n  };\n}\n\nfunction hasSortableData(entry) {\n  if (!entry) {\n    return false;\n  }\n\n  const data = entry.data.current;\n\n  if (data && 'sortable' in data && typeof data.sortable === 'object' && 'containerId' in data.sortable && 'items' in data.sortable && 'index' in data.sortable) {\n    return true;\n  }\n\n  return false;\n}\n\nconst directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nconst sortableKeyboardCoordinates = (event, _ref) => {\n  let {\n    context: {\n      active,\n      collisionRect,\n      droppableRects,\n      droppableContainers,\n      over,\n      scrollableAncestors\n    }\n  } = _ref;\n\n  if (directions.includes(event.code)) {\n    event.preventDefault();\n\n    if (!active || !collisionRect) {\n      return;\n    }\n\n    const filteredContainers = [];\n    droppableContainers.getEnabled().forEach(entry => {\n      if (!entry || entry != null && entry.disabled) {\n        return;\n      }\n\n      const rect = droppableRects.get(entry.id);\n\n      if (!rect) {\n        return;\n      }\n\n      switch (event.code) {\n        case KeyboardCode.Down:\n          if (collisionRect.top < rect.top) {\n            filteredContainers.push(entry);\n          }\n\n          break;\n\n        case KeyboardCode.Up:\n          if (collisionRect.top > rect.top) {\n            filteredContainers.push(entry);\n          }\n\n          break;\n\n        case KeyboardCode.Left:\n          if (collisionRect.left > rect.left) {\n            filteredContainers.push(entry);\n          }\n\n          break;\n\n        case KeyboardCode.Right:\n          if (collisionRect.left < rect.left) {\n            filteredContainers.push(entry);\n          }\n\n          break;\n      }\n    });\n    const collisions = closestCorners({\n      active,\n      collisionRect: collisionRect,\n      droppableRects,\n      droppableContainers: filteredContainers,\n      pointerCoordinates: null\n    });\n    let closestId = getFirstCollision(collisions, 'id');\n\n    if (closestId === (over == null ? void 0 : over.id) && collisions.length > 1) {\n      closestId = collisions[1].id;\n    }\n\n    if (closestId != null) {\n      const activeDroppable = droppableContainers.get(active.id);\n      const newDroppable = droppableContainers.get(closestId);\n      const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n      const newNode = newDroppable == null ? void 0 : newDroppable.node.current;\n\n      if (newNode && newRect && activeDroppable && newDroppable) {\n        const newScrollAncestors = getScrollableAncestors(newNode);\n        const hasDifferentScrollAncestors = newScrollAncestors.some((element, index) => scrollableAncestors[index] !== element);\n        const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n        const isAfterActive = isAfter(activeDroppable, newDroppable);\n        const offset = hasDifferentScrollAncestors || !hasSameContainer ? {\n          x: 0,\n          y: 0\n        } : {\n          x: isAfterActive ? collisionRect.width - newRect.width : 0,\n          y: isAfterActive ? collisionRect.height - newRect.height : 0\n        };\n        const rectCoordinates = {\n          x: newRect.left,\n          y: newRect.top\n        };\n        const newCoordinates = offset.x && offset.y ? rectCoordinates : subtract(rectCoordinates, offset);\n        return newCoordinates;\n      }\n    }\n  }\n\n  return undefined;\n};\n\nfunction isSameContainer(a, b) {\n  if (!hasSortableData(a) || !hasSortableData(b)) {\n    return false;\n  }\n\n  return a.data.current.sortable.containerId === b.data.current.sortable.containerId;\n}\n\nfunction isAfter(a, b) {\n  if (!hasSortableData(a) || !hasSortableData(b)) {\n    return false;\n  }\n\n  if (!isSameContainer(a, b)) {\n    return false;\n  }\n\n  return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nexport { SortableContext, arrayMove, arraySwap, defaultAnimateLayoutChanges, defaultNewIndexGetter, hasSortableData, horizontalListSortingStrategy, rectSortingStrategy, rectSwappingStrategy, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy };\n//# sourceMappingURL=sortable.esm.js.map\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","import { useState, useRef, useEffect } from 'react';\n\nfunction areInputsEqual(newInputs, lastInputs) {\n  if (newInputs.length !== lastInputs.length) {\n    return false;\n  }\n\n  for (var i = 0; i < newInputs.length; i++) {\n    if (newInputs[i] !== lastInputs[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n  var initial = useState(function () {\n    return {\n      inputs: inputs,\n      result: getResult()\n    };\n  })[0];\n  var committed = useRef(initial);\n  var isInputMatch = Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n  var cache = isInputMatch ? committed.current : {\n    inputs: inputs,\n    result: getResult()\n  };\n  useEffect(function () {\n    committed.current = cache;\n  }, [cache]);\n  return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n  return useMemoOne(function () {\n    return callback;\n  }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\nexport { useCallback, useCallbackOne, useMemo, useMemoOne };\n","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n  var top = _ref.top,\n      right = _ref.right,\n      bottom = _ref.bottom,\n      left = _ref.left;\n  var width = right - left;\n  var height = bottom - top;\n  var rect = {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left,\n    width: width,\n    height: height,\n    x: left,\n    y: top,\n    center: {\n      x: (right + left) / 2,\n      y: (bottom + top) / 2\n    }\n  };\n  return rect;\n};\nvar expand = function expand(target, expandBy) {\n  return {\n    top: target.top - expandBy.top,\n    left: target.left - expandBy.left,\n    bottom: target.bottom + expandBy.bottom,\n    right: target.right + expandBy.right\n  };\n};\nvar shrink = function shrink(target, shrinkBy) {\n  return {\n    top: target.top + shrinkBy.top,\n    left: target.left + shrinkBy.left,\n    bottom: target.bottom - shrinkBy.bottom,\n    right: target.right - shrinkBy.right\n  };\n};\n\nvar shift = function shift(target, shiftBy) {\n  return {\n    top: target.top + shiftBy.y,\n    left: target.left + shiftBy.x,\n    bottom: target.bottom + shiftBy.y,\n    right: target.right + shiftBy.x\n  };\n};\n\nvar noSpacing = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar createBox = function createBox(_ref2) {\n  var borderBox = _ref2.borderBox,\n      _ref2$margin = _ref2.margin,\n      margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n      _ref2$border = _ref2.border,\n      border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n      _ref2$padding = _ref2.padding,\n      padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n  var marginBox = getRect(expand(borderBox, margin));\n  var paddingBox = getRect(shrink(borderBox, border));\n  var contentBox = getRect(shrink(paddingBox, padding));\n  return {\n    marginBox: marginBox,\n    borderBox: getRect(borderBox),\n    paddingBox: paddingBox,\n    contentBox: contentBox,\n    margin: margin,\n    border: border,\n    padding: padding\n  };\n};\n\nvar parse = function parse(raw) {\n  var value = raw.slice(0, -2);\n  var suffix = raw.slice(-2);\n\n  if (suffix !== 'px') {\n    return 0;\n  }\n\n  var result = Number(value);\n  !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n  return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n};\n\nvar offset = function offset(original, change) {\n  var borderBox = original.borderBox,\n      border = original.border,\n      margin = original.margin,\n      padding = original.padding;\n  var shifted = shift(borderBox, change);\n  return createBox({\n    borderBox: shifted,\n    border: border,\n    margin: margin,\n    padding: padding\n  });\n};\nvar withScroll = function withScroll(original, scroll) {\n  if (scroll === void 0) {\n    scroll = getWindowScroll();\n  }\n\n  return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n  var margin = {\n    top: parse(styles.marginTop),\n    right: parse(styles.marginRight),\n    bottom: parse(styles.marginBottom),\n    left: parse(styles.marginLeft)\n  };\n  var padding = {\n    top: parse(styles.paddingTop),\n    right: parse(styles.paddingRight),\n    bottom: parse(styles.paddingBottom),\n    left: parse(styles.paddingLeft)\n  };\n  var border = {\n    top: parse(styles.borderTopWidth),\n    right: parse(styles.borderRightWidth),\n    bottom: parse(styles.borderBottomWidth),\n    left: parse(styles.borderLeftWidth)\n  };\n  return createBox({\n    borderBox: borderBox,\n    margin: margin,\n    padding: padding,\n    border: border\n  });\n};\nvar getBox = function getBox(el) {\n  var borderBox = el.getBoundingClientRect();\n  var styles = window.getComputedStyle(el);\n  return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\n","var rafSchd = function rafSchd(fn) {\n  var lastArgs = [];\n  var frameId = null;\n\n  var wrapperFn = function wrapperFn() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    lastArgs = args;\n\n    if (frameId) {\n      return;\n    }\n\n    frameId = requestAnimationFrame(function () {\n      frameId = null;\n      fn.apply(void 0, lastArgs);\n    });\n  };\n\n  wrapperFn.cancel = function () {\n    if (!frameId) {\n      return;\n    }\n\n    cancelAnimationFrame(frameId);\n    frameId = null;\n  };\n\n  return wrapperFn;\n};\n\nexport default rafSchd;\n","import React, { useLayoutEffect, useEffect, useRef, useState, useContext } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { createStore as createStore$1, applyMiddleware, compose, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { useMemo, useCallback } from 'use-memo-one';\nimport { getRect, expand, offset, withScroll, getBox, createBox, calculateBox } from 'css-box-model';\nimport memoizeOne from 'memoize-one';\nimport rafSchd from 'raf-schd';\nimport ReactDOM from 'react-dom';\n\nvar isProduction = process.env.NODE_ENV === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n  return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n  return clean(\"\\n  %creact-beautiful-dnd\\n\\n  %c\" + clean(message) + \"\\n\\n  %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n  return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n  var _console;\n\n  if (isProduction) {\n    return;\n  }\n\n  if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n    return;\n  }\n\n  (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n  return _extends({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n  var unbindings = bindings.map(function (binding) {\n    var options = getOptions(sharedOptions, binding.options);\n    el.addEventListener(binding.eventName, binding.fn, options);\n    return function unbind() {\n      el.removeEventListener(binding.eventName, binding.fn, options);\n    };\n  });\n  return function unbindAll() {\n    unbindings.forEach(function (unbind) {\n      unbind();\n    });\n  };\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n  this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n  return this.message;\n};\n\nfunction invariant(condition, message) {\n  if (condition) {\n    return;\n  }\n\n  if (isProduction$1) {\n    throw new RbdInvariant(prefix);\n  } else {\n    throw new RbdInvariant(prefix + \": \" + (message || ''));\n  }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n  _inheritsLoose(ErrorBoundary, _React$Component);\n\n  function ErrorBoundary() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.callbacks = null;\n    _this.unbind = noop;\n\n    _this.onWindowError = function (event) {\n      var callbacks = _this.getCallbacks();\n\n      if (callbacks.isDragging()) {\n        callbacks.tryAbort();\n        process.env.NODE_ENV !== \"production\" ? warning(\"\\n        An error was caught by our window 'error' event listener while a drag was occurring.\\n        The active drag has been aborted.\\n      \") : void 0;\n      }\n\n      var err = event.error;\n\n      if (err instanceof RbdInvariant) {\n        event.preventDefault();\n\n        if (process.env.NODE_ENV !== 'production') {\n          error(err.message);\n        }\n      }\n    };\n\n    _this.getCallbacks = function () {\n      if (!_this.callbacks) {\n        throw new Error('Unable to find AppCallbacks in <ErrorBoundary/>');\n      }\n\n      return _this.callbacks;\n    };\n\n    _this.setCallbacks = function (callbacks) {\n      _this.callbacks = callbacks;\n    };\n\n    return _this;\n  }\n\n  var _proto = ErrorBoundary.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.unbind = bindEvents(window, [{\n      eventName: 'error',\n      fn: this.onWindowError\n    }]);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.unbind();\n  };\n\n  _proto.componentDidCatch = function componentDidCatch(err) {\n    if (err instanceof RbdInvariant) {\n      if (process.env.NODE_ENV !== 'production') {\n        error(err.message);\n      }\n\n      this.setState({});\n      return;\n    }\n\n    throw err;\n  };\n\n  _proto.render = function render() {\n    return this.props.children(this.setCallbacks);\n  };\n\n  return ErrorBoundary;\n}(React.Component);\n\nvar dragHandleUsageInstructions = \"\\n  Press space bar to start a drag.\\n  When dragging you can use the arrow keys to move the item around and escape to cancel.\\n  Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n  return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n  return \"\\n  You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n  var isInHomeList = source.droppableId === destination.droppableId;\n  var startPosition = position(source.index);\n  var endPosition = position(destination.index);\n\n  if (isInHomeList) {\n    return \"\\n      You have moved the item from position \" + startPosition + \"\\n      to position \" + endPosition + \"\\n    \";\n  }\n\n  return \"\\n    You have moved the item from position \" + startPosition + \"\\n    in list \" + source.droppableId + \"\\n    to list \" + destination.droppableId + \"\\n    in position \" + endPosition + \"\\n  \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n  var inHomeList = source.droppableId === combine.droppableId;\n\n  if (inHomeList) {\n    return \"\\n      The item \" + id + \"\\n      has been combined with \" + combine.draggableId;\n  }\n\n  return \"\\n      The item \" + id + \"\\n      in list \" + source.droppableId + \"\\n      has been combined with \" + combine.draggableId + \"\\n      in list \" + combine.droppableId + \"\\n    \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n  var location = update.destination;\n\n  if (location) {\n    return withLocation(update.source, location);\n  }\n\n  var combine = update.combine;\n\n  if (combine) {\n    return withCombine(update.draggableId, update.source, combine);\n  }\n\n  return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n  return \"\\n  The item has returned to its starting position\\n  of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n  if (result.reason === 'CANCEL') {\n    return \"\\n      Movement cancelled.\\n      \" + returnedToStart(result.source) + \"\\n    \";\n  }\n\n  var location = result.destination;\n  var combine = result.combine;\n\n  if (location) {\n    return \"\\n      You have dropped the item.\\n      \" + withLocation(result.source, location) + \"\\n    \";\n  }\n\n  if (combine) {\n    return \"\\n      You have dropped the item.\\n      \" + withCombine(result.draggableId, result.source, combine) + \"\\n    \";\n  }\n\n  return \"\\n    The item has been dropped while not over a drop area.\\n    \" + returnedToStart(result.source) + \"\\n  \";\n};\n\nvar preset = {\n  dragHandleUsageInstructions: dragHandleUsageInstructions,\n  onDragStart: onDragStart,\n  onDragUpdate: onDragUpdate,\n  onDragEnd: onDragEnd\n};\n\nvar origin = {\n  x: 0,\n  y: 0\n};\nvar add = function add(point1, point2) {\n  return {\n    x: point1.x + point2.x,\n    y: point1.y + point2.y\n  };\n};\nvar subtract = function subtract(point1, point2) {\n  return {\n    x: point1.x - point2.x,\n    y: point1.y - point2.y\n  };\n};\nvar isEqual = function isEqual(point1, point2) {\n  return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n  return {\n    x: point.x !== 0 ? -point.x : 0,\n    y: point.y !== 0 ? -point.y : 0\n  };\n};\nvar patch = function patch(line, value, otherValue) {\n  var _ref;\n\n  if (otherValue === void 0) {\n    otherValue = 0;\n  }\n\n  return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n  return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n  return Math.min.apply(Math, points.map(function (point) {\n    return distance(target, point);\n  }));\n};\nvar apply = function apply(fn) {\n  return function (point) {\n    return {\n      x: fn(point.x),\n      y: fn(point.y)\n    };\n  };\n};\n\nvar executeClip = (function (frame, subject) {\n  var result = getRect({\n    top: Math.max(subject.top, frame.top),\n    right: Math.min(subject.right, frame.right),\n    bottom: Math.min(subject.bottom, frame.bottom),\n    left: Math.max(subject.left, frame.left)\n  });\n\n  if (result.width <= 0 || result.height <= 0) {\n    return null;\n  }\n\n  return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n  return {\n    top: spacing.top + point.y,\n    left: spacing.left + point.x,\n    bottom: spacing.bottom + point.y,\n    right: spacing.right + point.x\n  };\n};\nvar getCorners = function getCorners(spacing) {\n  return [{\n    x: spacing.left,\n    y: spacing.top\n  }, {\n    x: spacing.right,\n    y: spacing.top\n  }, {\n    x: spacing.left,\n    y: spacing.bottom\n  }, {\n    x: spacing.right,\n    y: spacing.bottom\n  }];\n};\nvar noSpacing = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n  if (!frame) {\n    return target;\n  }\n\n  return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n  if (withPlaceholder && withPlaceholder.increasedBy) {\n    var _extends2;\n\n    return _extends({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n  }\n\n  return target;\n};\n\nvar clip = function clip(target, frame) {\n  if (frame && frame.shouldClipSubject) {\n    return executeClip(frame.pageMarginBox, target);\n  }\n\n  return getRect(target);\n};\n\nvar getSubject = (function (_ref) {\n  var page = _ref.page,\n      withPlaceholder = _ref.withPlaceholder,\n      axis = _ref.axis,\n      frame = _ref.frame;\n  var scrolled = scroll(page.marginBox, frame);\n  var increased = increase(scrolled, axis, withPlaceholder);\n  var clipped = clip(increased, frame);\n  return {\n    page: page,\n    withPlaceholder: withPlaceholder,\n    active: clipped\n  };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n  !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var scrollable = droppable.frame;\n  var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n  var scrollDisplacement = negate(scrollDiff);\n\n  var frame = _extends({}, scrollable, {\n    scroll: {\n      initial: scrollable.scroll.initial,\n      current: newScroll,\n      diff: {\n        value: scrollDiff,\n        displacement: scrollDisplacement\n      },\n      max: scrollable.scroll.max\n    }\n  });\n\n  var subject = getSubject({\n    page: droppable.subject.page,\n    withPlaceholder: droppable.subject.withPlaceholder,\n    axis: droppable.axis,\n    frame: frame\n  });\n\n  var result = _extends({}, droppable, {\n    frame: frame,\n    subject: subject\n  });\n\n  return result;\n});\n\nfunction isInteger(value) {\n  if (Number.isInteger) {\n    return Number.isInteger(value);\n  }\n\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n  if (Object.values) {\n    return Object.values(map);\n  }\n\n  return Object.keys(map).map(function (key) {\n    return map[key];\n  });\n}\nfunction findIndex(list, predicate) {\n  if (list.findIndex) {\n    return list.findIndex(predicate);\n  }\n\n  for (var i = 0; i < list.length; i++) {\n    if (predicate(list[i])) {\n      return i;\n    }\n  }\n\n  return -1;\n}\nfunction find(list, predicate) {\n  if (list.find) {\n    return list.find(predicate);\n  }\n\n  var index = findIndex(list, predicate);\n\n  if (index !== -1) {\n    return list[index];\n  }\n\n  return undefined;\n}\nfunction toArray(list) {\n  return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = memoizeOne(function (droppables) {\n  return droppables.reduce(function (previous, current) {\n    previous[current.descriptor.id] = current;\n    return previous;\n  }, {});\n});\nvar toDraggableMap = memoizeOne(function (draggables) {\n  return draggables.reduce(function (previous, current) {\n    previous[current.descriptor.id] = current;\n    return previous;\n  }, {});\n});\nvar toDroppableList = memoizeOne(function (droppables) {\n  return values(droppables);\n});\nvar toDraggableList = memoizeOne(function (draggables) {\n  return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = memoizeOne(function (droppableId, draggables) {\n  var result = toDraggableList(draggables).filter(function (draggable) {\n    return droppableId === draggable.descriptor.droppableId;\n  }).sort(function (a, b) {\n    return a.descriptor.index - b.descriptor.index;\n  });\n  return result;\n});\n\nfunction tryGetDestination(impact) {\n  if (impact.at && impact.at.type === 'REORDER') {\n    return impact.at.destination;\n  }\n\n  return null;\n}\nfunction tryGetCombine(impact) {\n  if (impact.at && impact.at.type === 'COMBINE') {\n    return impact.at.combine;\n  }\n\n  return null;\n}\n\nvar removeDraggableFromList = memoizeOne(function (remove, list) {\n  return list.filter(function (item) {\n    return item.descriptor.id !== remove.descriptor.id;\n  });\n});\n\nvar moveToNextCombine = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      draggable = _ref.draggable,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      previousImpact = _ref.previousImpact;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var location = tryGetDestination(previousImpact);\n\n  if (!location) {\n    return null;\n  }\n\n  function getImpact(target) {\n    var at = {\n      type: 'COMBINE',\n      combine: {\n        draggableId: target,\n        droppableId: destination.descriptor.id\n      }\n    };\n    return _extends({}, previousImpact, {\n      at: at\n    });\n  }\n\n  var all = previousImpact.displaced.all;\n  var closestId = all.length ? all[0] : null;\n\n  if (isMovingForward) {\n    return closestId ? getImpact(closestId) : null;\n  }\n\n  var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n  if (!closestId) {\n    if (!withoutDraggable.length) {\n      return null;\n    }\n\n    var last = withoutDraggable[withoutDraggable.length - 1];\n    return getImpact(last.descriptor.id);\n  }\n\n  var indexOfClosest = findIndex(withoutDraggable, function (d) {\n    return d.descriptor.id === closestId;\n  });\n  !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant(false) : void 0;\n  var proposedIndex = indexOfClosest - 1;\n\n  if (proposedIndex < 0) {\n    return null;\n  }\n\n  var before = withoutDraggable[proposedIndex];\n  return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n  return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n  point: origin,\n  value: 0\n};\nvar emptyGroups = {\n  invisible: {},\n  visible: {},\n  all: []\n};\nvar noImpact = {\n  displaced: emptyGroups,\n  displacedBy: noDisplacedBy,\n  at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n  return function (value) {\n    return lowerBound <= value && value <= upperBound;\n  };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function (subject) {\n    var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n    if (isContained) {\n      return true;\n    }\n\n    var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n    var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n    var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n    if (isPartiallyContained) {\n      return true;\n    }\n\n    var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n    var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n    var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n    if (isTargetBiggerThanFrame) {\n      return true;\n    }\n\n    var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n    return isTargetBiggerOnOneAxis;\n  };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function (subject) {\n    var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n    return isContained;\n  };\n});\n\nvar vertical = {\n  direction: 'vertical',\n  line: 'y',\n  crossAxisLine: 'x',\n  start: 'top',\n  end: 'bottom',\n  size: 'height',\n  crossAxisStart: 'left',\n  crossAxisEnd: 'right',\n  crossAxisSize: 'width'\n};\nvar horizontal = {\n  direction: 'horizontal',\n  line: 'x',\n  crossAxisLine: 'y',\n  start: 'left',\n  end: 'right',\n  size: 'width',\n  crossAxisStart: 'top',\n  crossAxisEnd: 'bottom',\n  crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n  return function (frame) {\n    var isWithinVertical = isWithin(frame.top, frame.bottom);\n    var isWithinHorizontal = isWithin(frame.left, frame.right);\n    return function (subject) {\n      if (axis === vertical) {\n        return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n      }\n\n      return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n    };\n  };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n  var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n  return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n  if (!destination.subject.active) {\n    return false;\n  }\n\n  return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n  return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n  var toBeDisplaced = _ref.target,\n      destination = _ref.destination,\n      viewport = _ref.viewport,\n      withDroppableDisplacement = _ref.withDroppableDisplacement,\n      isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n  var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n  return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n  }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n  }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n  }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n  if (typeof forceShouldAnimate === 'boolean') {\n    return forceShouldAnimate;\n  }\n\n  if (!last) {\n    return true;\n  }\n\n  var invisible = last.invisible,\n      visible = last.visible;\n\n  if (invisible[id]) {\n    return false;\n  }\n\n  var previous = visible[id];\n  return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n  var marginBox = draggable.page.marginBox;\n  var expandBy = {\n    top: displacedBy.point.y,\n    right: 0,\n    bottom: 0,\n    left: displacedBy.point.x\n  };\n  return getRect(expand(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n  var afterDragging = _ref.afterDragging,\n      destination = _ref.destination,\n      displacedBy = _ref.displacedBy,\n      viewport = _ref.viewport,\n      forceShouldAnimate = _ref.forceShouldAnimate,\n      last = _ref.last;\n  return afterDragging.reduce(function process(groups, draggable) {\n    var target = getTarget(draggable, displacedBy);\n    var id = draggable.descriptor.id;\n    groups.all.push(id);\n    var isVisible = isPartiallyVisible({\n      target: target,\n      destination: destination,\n      viewport: viewport,\n      withDroppableDisplacement: true\n    });\n\n    if (!isVisible) {\n      groups.invisible[draggable.descriptor.id] = true;\n      return groups;\n    }\n\n    var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n    var displacement = {\n      draggableId: id,\n      shouldAnimate: shouldAnimate\n    };\n    groups.visible[id] = displacement;\n    return groups;\n  }, {\n    all: [],\n    visible: {},\n    invisible: {}\n  });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n  if (!draggables.length) {\n    return 0;\n  }\n\n  var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n  return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n  var insideDestination = _ref.insideDestination,\n      inHomeList = _ref.inHomeList,\n      displacedBy = _ref.displacedBy,\n      destination = _ref.destination;\n  var newIndex = getIndexOfLastItem(insideDestination, {\n    inHomeList: inHomeList\n  });\n  return {\n    displaced: emptyGroups,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: {\n        droppableId: destination.descriptor.id,\n        index: newIndex\n      }\n    }\n  };\n}\n\nfunction calculateReorderImpact(_ref2) {\n  var draggable = _ref2.draggable,\n      insideDestination = _ref2.insideDestination,\n      destination = _ref2.destination,\n      viewport = _ref2.viewport,\n      displacedBy = _ref2.displacedBy,\n      last = _ref2.last,\n      index = _ref2.index,\n      forceShouldAnimate = _ref2.forceShouldAnimate;\n  var inHomeList = isHomeOf(draggable, destination);\n\n  if (index == null) {\n    return goAtEnd({\n      insideDestination: insideDestination,\n      inHomeList: inHomeList,\n      displacedBy: displacedBy,\n      destination: destination\n    });\n  }\n\n  var match = find(insideDestination, function (item) {\n    return item.descriptor.index === index;\n  });\n\n  if (!match) {\n    return goAtEnd({\n      insideDestination: insideDestination,\n      inHomeList: inHomeList,\n      displacedBy: displacedBy,\n      destination: destination\n    });\n  }\n\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var sliceFrom = insideDestination.indexOf(match);\n  var impacted = withoutDragging.slice(sliceFrom);\n  var displaced = getDisplacementGroups({\n    afterDragging: impacted,\n    destination: destination,\n    displacedBy: displacedBy,\n    last: last,\n    viewport: viewport.frame,\n    forceShouldAnimate: forceShouldAnimate\n  });\n  return {\n    displaced: displaced,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: {\n        droppableId: destination.descriptor.id,\n        index: index\n      }\n    }\n  };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n  return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      combine = _ref.combine,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var combineId = combine.draggableId;\n  var combineWith = draggables[combineId];\n  var combineWithIndex = combineWith.descriptor.index;\n  var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n  if (didCombineWithStartAfterCritical) {\n    if (isMovingForward) {\n      return combineWithIndex;\n    }\n\n    return combineWithIndex - 1;\n  }\n\n  if (isMovingForward) {\n    return combineWithIndex + 1;\n  }\n\n  return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      isInHomeList = _ref.isInHomeList,\n      insideDestination = _ref.insideDestination,\n      location = _ref.location;\n\n  if (!insideDestination.length) {\n    return null;\n  }\n\n  var currentIndex = location.index;\n  var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n  var firstIndex = insideDestination[0].descriptor.index;\n  var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n  var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n  if (proposedIndex < firstIndex) {\n    return null;\n  }\n\n  if (proposedIndex > upperBound) {\n    return null;\n  }\n\n  return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      isInHomeList = _ref.isInHomeList,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var wasAt = previousImpact.at;\n  !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant(false) : void 0;\n\n  if (wasAt.type === 'REORDER') {\n    var _newIndex = fromReorder({\n      isMovingForward: isMovingForward,\n      isInHomeList: isInHomeList,\n      location: wasAt.destination,\n      insideDestination: insideDestination\n    });\n\n    if (_newIndex == null) {\n      return null;\n    }\n\n    return calculateReorderImpact({\n      draggable: draggable,\n      insideDestination: insideDestination,\n      destination: destination,\n      viewport: viewport,\n      last: previousImpact.displaced,\n      displacedBy: previousImpact.displacedBy,\n      index: _newIndex\n    });\n  }\n\n  var newIndex = fromCombine({\n    isMovingForward: isMovingForward,\n    destination: destination,\n    displaced: previousImpact.displaced,\n    draggables: draggables,\n    combine: wasAt.combine,\n    afterCritical: afterCritical\n  });\n\n  if (newIndex == null) {\n    return null;\n  }\n\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    last: previousImpact.displaced,\n    displacedBy: previousImpact.displacedBy,\n    index: newIndex\n  });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n  var displaced = _ref.displaced,\n      afterCritical = _ref.afterCritical,\n      combineWith = _ref.combineWith,\n      displacedBy = _ref.displacedBy;\n  var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n  if (didStartAfterCritical(combineWith, afterCritical)) {\n    return isDisplaced ? origin : negate(displacedBy.point);\n  }\n\n  return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n  var afterCritical = _ref.afterCritical,\n      impact = _ref.impact,\n      draggables = _ref.draggables;\n  var combine = tryGetCombine(impact);\n  !combine ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var combineWith = combine.draggableId;\n  var center = draggables[combineWith].page.borderBox.center;\n  var displaceBy = getCombinedItemDisplacement({\n    displaced: impact.displaced,\n    afterCritical: afterCritical,\n    combineWith: combineWith,\n    displacedBy: impact.displacedBy\n  });\n  return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n  return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n  return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n  return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n  var axis = _ref.axis,\n      moveRelativeTo = _ref.moveRelativeTo,\n      isMoving = _ref.isMoving;\n  return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n  var axis = _ref2.axis,\n      moveRelativeTo = _ref2.moveRelativeTo,\n      isMoving = _ref2.isMoving;\n  return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n  var axis = _ref3.axis,\n      moveInto = _ref3.moveInto,\n      isMoving = _ref3.isMoving;\n  return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      droppable = _ref.droppable,\n      afterCritical = _ref.afterCritical;\n  var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n  var draggablePage = draggable.page;\n  var axis = droppable.axis;\n\n  if (!insideDestination.length) {\n    return goIntoStart({\n      axis: axis,\n      moveInto: droppable.page,\n      isMoving: draggablePage\n    });\n  }\n\n  var displaced = impact.displaced,\n      displacedBy = impact.displacedBy;\n  var closestAfter = displaced.all[0];\n\n  if (closestAfter) {\n    var closest = draggables[closestAfter];\n\n    if (didStartAfterCritical(closestAfter, afterCritical)) {\n      return goBefore({\n        axis: axis,\n        moveRelativeTo: closest.page,\n        isMoving: draggablePage\n      });\n    }\n\n    var withDisplacement = offset(closest.page, displacedBy.point);\n    return goBefore({\n      axis: axis,\n      moveRelativeTo: withDisplacement,\n      isMoving: draggablePage\n    });\n  }\n\n  var last = insideDestination[insideDestination.length - 1];\n\n  if (last.descriptor.id === draggable.descriptor.id) {\n    return draggablePage.borderBox.center;\n  }\n\n  if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n    var page = offset(last.page, negate(afterCritical.displacedBy.point));\n    return goAfter({\n      axis: axis,\n      moveRelativeTo: page,\n      isMoving: draggablePage\n    });\n  }\n\n  return goAfter({\n    axis: axis,\n    moveRelativeTo: last.page,\n    isMoving: draggablePage\n  });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return point;\n  }\n\n  return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      droppable = _ref.droppable,\n      draggables = _ref.draggables,\n      afterCritical = _ref.afterCritical;\n  var original = draggable.page.borderBox.center;\n  var at = impact.at;\n\n  if (!droppable) {\n    return original;\n  }\n\n  if (!at) {\n    return original;\n  }\n\n  if (at.type === 'REORDER') {\n    return whenReordering({\n      impact: impact,\n      draggable: draggable,\n      draggables: draggables,\n      droppable: droppable,\n      afterCritical: afterCritical\n    });\n  }\n\n  return whenCombining({\n    impact: impact,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n  var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n  var droppable = args.droppable;\n  var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n  return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n  var diff = subtract(newScroll, viewport.scroll.initial);\n  var displacement = negate(diff);\n  var frame = getRect({\n    top: newScroll.y,\n    bottom: newScroll.y + viewport.frame.height,\n    left: newScroll.x,\n    right: newScroll.x + viewport.frame.width\n  });\n  var updated = {\n    frame: frame,\n    scroll: {\n      initial: viewport.scroll.initial,\n      max: viewport.scroll.max,\n      current: newScroll,\n      diff: {\n        value: diff,\n        displacement: displacement\n      }\n    }\n  };\n  return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n  return ids.map(function (id) {\n    return draggables[id];\n  });\n}\n\nfunction tryGetVisible(id, groups) {\n  for (var i = 0; i < groups.length; i++) {\n    var displacement = groups[i].visible[id];\n\n    if (displacement) {\n      return displacement;\n    }\n  }\n\n  return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n  var impact = _ref.impact,\n      viewport = _ref.viewport,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      maxScrollChange = _ref.maxScrollChange;\n  var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n  var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n  var last = impact.displaced;\n  var withViewportScroll = getDisplacementGroups({\n    afterDragging: getDraggables(last.all, draggables),\n    destination: destination,\n    displacedBy: impact.displacedBy,\n    viewport: scrolledViewport.frame,\n    last: last,\n    forceShouldAnimate: false\n  });\n  var withDroppableScroll = getDisplacementGroups({\n    afterDragging: getDraggables(last.all, draggables),\n    destination: scrolledDroppable,\n    displacedBy: impact.displacedBy,\n    viewport: viewport.frame,\n    last: last,\n    forceShouldAnimate: false\n  });\n  var invisible = {};\n  var visible = {};\n  var groups = [last, withViewportScroll, withDroppableScroll];\n  last.all.forEach(function (id) {\n    var displacement = tryGetVisible(id, groups);\n\n    if (displacement) {\n      visible[id] = displacement;\n      return;\n    }\n\n    invisible[id] = true;\n  });\n\n  var newImpact = _extends({}, impact, {\n    displaced: {\n      all: last.all,\n      invisible: invisible,\n      visible: visible\n    }\n  });\n\n  return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n  return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n  var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      draggable = _ref.draggable,\n      viewport = _ref.viewport;\n  var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n  var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n  return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n  var draggable = _ref.draggable,\n      destination = _ref.destination,\n      newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n      viewport = _ref.viewport,\n      withDroppableDisplacement = _ref.withDroppableDisplacement,\n      _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n      onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n  var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n  var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n  var args = {\n    target: shifted,\n    destination: destination,\n    withDroppableDisplacement: withDroppableDisplacement,\n    viewport: viewport\n  };\n  return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      draggable = _ref.draggable,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      previousClientSelection = _ref.previousClientSelection,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isEnabled) {\n    return null;\n  }\n\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var isInHomeList = isHomeOf(draggable, destination);\n  var impact = moveToNextCombine({\n    isMovingForward: isMovingForward,\n    draggable: draggable,\n    destination: destination,\n    insideDestination: insideDestination,\n    previousImpact: previousImpact\n  }) || moveToNextIndex({\n    isMovingForward: isMovingForward,\n    isInHomeList: isInHomeList,\n    draggable: draggable,\n    draggables: draggables,\n    destination: destination,\n    insideDestination: insideDestination,\n    previousImpact: previousImpact,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n\n  if (!impact) {\n    return null;\n  }\n\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n  var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n    draggable: draggable,\n    destination: destination,\n    newPageBorderBoxCenter: pageBorderBoxCenter,\n    viewport: viewport.frame,\n    withDroppableDisplacement: false,\n    onlyOnMainAxis: true\n  });\n\n  if (isVisibleInNewLocation) {\n    var clientSelection = getClientFromPageBorderBoxCenter({\n      pageBorderBoxCenter: pageBorderBoxCenter,\n      draggable: draggable,\n      viewport: viewport\n    });\n    return {\n      clientSelection: clientSelection,\n      impact: impact,\n      scrollJumpRequest: null\n    };\n  }\n\n  var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n  var cautious = speculativelyIncrease({\n    impact: impact,\n    viewport: viewport,\n    destination: destination,\n    draggables: draggables,\n    maxScrollChange: distance\n  });\n  return {\n    clientSelection: previousClientSelection,\n    impact: cautious,\n    scrollJumpRequest: distance\n  };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n  var rect = droppable.subject.active;\n  !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant(false) : void 0;\n  return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      source = _ref.source,\n      droppables = _ref.droppables,\n      viewport = _ref.viewport;\n  var active = source.subject.active;\n\n  if (!active) {\n    return null;\n  }\n\n  var axis = source.axis;\n  var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n  var candidates = toDroppableList(droppables).filter(function (droppable) {\n    return droppable !== source;\n  }).filter(function (droppable) {\n    return droppable.isEnabled;\n  }).filter(function (droppable) {\n    return Boolean(droppable.subject.active);\n  }).filter(function (droppable) {\n    return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n  }).filter(function (droppable) {\n    var activeOfTarget = getKnownActive(droppable);\n\n    if (isMovingForward) {\n      return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n    }\n\n    return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n  }).filter(function (droppable) {\n    var activeOfTarget = getKnownActive(droppable);\n    var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n    return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n  }).sort(function (a, b) {\n    var first = getKnownActive(a)[axis.crossAxisStart];\n    var second = getKnownActive(b)[axis.crossAxisStart];\n\n    if (isMovingForward) {\n      return first - second;\n    }\n\n    return second - first;\n  }).filter(function (droppable, index, array) {\n    return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n  });\n\n  if (!candidates.length) {\n    return null;\n  }\n\n  if (candidates.length === 1) {\n    return candidates[0];\n  }\n\n  var contains = candidates.filter(function (droppable) {\n    var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n    return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n  });\n\n  if (contains.length === 1) {\n    return contains[0];\n  }\n\n  if (contains.length > 1) {\n    return contains.sort(function (a, b) {\n      return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n    })[0];\n  }\n\n  return candidates.sort(function (a, b) {\n    var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n    var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n    if (first !== second) {\n      return first - second;\n    }\n\n    return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n  })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n  var original = draggable.page.borderBox.center;\n  return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n  var original = draggable.page.borderBox;\n  return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n  var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      viewport = _ref.viewport,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      afterCritical = _ref.afterCritical;\n  var sorted = insideDestination.filter(function (draggable) {\n    return isTotallyVisible({\n      target: getCurrentPageBorderBox(draggable, afterCritical),\n      destination: destination,\n      viewport: viewport.frame,\n      withDroppableDisplacement: true\n    });\n  }).sort(function (a, b) {\n    var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n    var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n    if (distanceToA < distanceToB) {\n      return -1;\n    }\n\n    if (distanceToB < distanceToA) {\n      return 1;\n    }\n\n    return a.descriptor.index - b.descriptor.index;\n  });\n  return sorted[0] || null;\n});\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n  var displacement = displaceBy[axis.line];\n  return {\n    value: displacement,\n    point: patch(axis.line, displacement)\n  };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n  var axis = droppable.axis;\n\n  if (droppable.descriptor.mode === 'virtual') {\n    return patch(axis.line, placeholderSize[axis.line]);\n  }\n\n  var availableSpace = droppable.subject.page.contentBox[axis.size];\n  var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n  var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n    return sum + dimension.client.marginBox[axis.size];\n  }, 0);\n  var requiredSpace = spaceUsed + placeholderSize[axis.line];\n  var needsToGrowBy = requiredSpace - availableSpace;\n\n  if (needsToGrowBy <= 0) {\n    return null;\n  }\n\n  return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n  return _extends({}, frame, {\n    scroll: _extends({}, frame.scroll, {\n      max: max\n    })\n  });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n  var frame = droppable.frame;\n  !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant(false) : void 0;\n  !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant(false) : void 0;\n  var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n  var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n  var added = {\n    placeholderSize: placeholderSize,\n    increasedBy: requiredGrowth,\n    oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n  };\n\n  if (!frame) {\n    var _subject = getSubject({\n      page: droppable.subject.page,\n      withPlaceholder: added,\n      axis: droppable.axis,\n      frame: droppable.frame\n    });\n\n    return _extends({}, droppable, {\n      subject: _subject\n    });\n  }\n\n  var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n  var newFrame = withMaxScroll(frame, maxScroll);\n  var subject = getSubject({\n    page: droppable.subject.page,\n    withPlaceholder: added,\n    axis: droppable.axis,\n    frame: newFrame\n  });\n  return _extends({}, droppable, {\n    subject: subject,\n    frame: newFrame\n  });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n  var added = droppable.subject.withPlaceholder;\n  !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant(false) : void 0;\n  var frame = droppable.frame;\n\n  if (!frame) {\n    var _subject2 = getSubject({\n      page: droppable.subject.page,\n      axis: droppable.axis,\n      frame: null,\n      withPlaceholder: null\n    });\n\n    return _extends({}, droppable, {\n      subject: _subject2\n    });\n  }\n\n  var oldMaxScroll = added.oldFrameMaxScroll;\n  !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant(false) : void 0;\n  var newFrame = withMaxScroll(frame, oldMaxScroll);\n  var subject = getSubject({\n    page: droppable.subject.page,\n    axis: droppable.axis,\n    frame: newFrame,\n    withPlaceholder: null\n  });\n  return _extends({}, droppable, {\n    subject: subject,\n    frame: newFrame\n  });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n  var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      moveRelativeTo = _ref.moveRelativeTo,\n      insideDestination = _ref.insideDestination,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n\n  if (!moveRelativeTo) {\n    if (insideDestination.length) {\n      return null;\n    }\n\n    var proposed = {\n      displaced: emptyGroups,\n      displacedBy: noDisplacedBy,\n      at: {\n        type: 'REORDER',\n        destination: {\n          droppableId: destination.descriptor.id,\n          index: 0\n        }\n      }\n    };\n    var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n      impact: proposed,\n      draggable: draggable,\n      droppable: destination,\n      draggables: draggables,\n      afterCritical: afterCritical\n    });\n    var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n    var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n      draggable: draggable,\n      destination: withPlaceholder,\n      newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n      viewport: viewport.frame,\n      withDroppableDisplacement: false,\n      onlyOnMainAxis: true\n    });\n    return isVisibleInNewLocation ? proposed : null;\n  }\n\n  var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n  var proposedIndex = function () {\n    var relativeTo = moveRelativeTo.descriptor.index;\n\n    if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n      return relativeTo;\n    }\n\n    if (isGoingBeforeTarget) {\n      return relativeTo;\n    }\n\n    return relativeTo + 1;\n  }();\n\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    displacedBy: displacedBy,\n    last: emptyGroups,\n    index: proposedIndex\n  });\n});\n\nvar moveCrossAxis = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      draggable = _ref.draggable,\n      isOver = _ref.isOver,\n      draggables = _ref.draggables,\n      droppables = _ref.droppables,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var destination = getBestCrossAxisDroppable({\n    isMovingForward: isMovingForward,\n    pageBorderBoxCenter: previousPageBorderBoxCenter,\n    source: isOver,\n    droppables: droppables,\n    viewport: viewport\n  });\n\n  if (!destination) {\n    return null;\n  }\n\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var moveRelativeTo = getClosestDraggable({\n    pageBorderBoxCenter: previousPageBorderBoxCenter,\n    viewport: viewport,\n    destination: destination,\n    insideDestination: insideDestination,\n    afterCritical: afterCritical\n  });\n  var impact = moveToNewDroppable({\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    destination: destination,\n    draggable: draggable,\n    draggables: draggables,\n    moveRelativeTo: moveRelativeTo,\n    insideDestination: insideDestination,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n\n  if (!impact) {\n    return null;\n  }\n\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n  var clientSelection = getClientFromPageBorderBoxCenter({\n    pageBorderBoxCenter: pageBorderBoxCenter,\n    draggable: draggable,\n    viewport: viewport\n  });\n  return {\n    clientSelection: clientSelection,\n    impact: impact,\n    scrollJumpRequest: null\n  };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n  var at = impact.at;\n\n  if (!at) {\n    return null;\n  }\n\n  if (at.type === 'REORDER') {\n    return at.destination.droppableId;\n  }\n\n  return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n  var id = whatIsDraggedOver(impact);\n  return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n  var state = _ref.state,\n      type = _ref.type;\n  var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n  var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n  var home = state.dimensions.droppables[state.critical.droppable.id];\n  var isOver = isActuallyOver || home;\n  var direction = isOver.axis.direction;\n  var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n  if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n    return null;\n  }\n\n  var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n  var draggable = state.dimensions.draggables[state.critical.draggable.id];\n  var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n  var _state$dimensions = state.dimensions,\n      draggables = _state$dimensions.draggables,\n      droppables = _state$dimensions.droppables;\n  return isMovingOnMainAxis ? moveToNextPlace({\n    isMovingForward: isMovingForward,\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    draggable: draggable,\n    destination: isOver,\n    draggables: draggables,\n    viewport: state.viewport,\n    previousClientSelection: state.current.client.selection,\n    previousImpact: state.impact,\n    afterCritical: state.afterCritical\n  }) : moveCrossAxis({\n    isMovingForward: isMovingForward,\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    draggable: draggable,\n    isOver: isOver,\n    draggables: draggables,\n    droppables: droppables,\n    viewport: state.viewport,\n    afterCritical: state.afterCritical\n  });\n});\n\nfunction isMovementAllowed(state) {\n  return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function run(point) {\n    return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n  };\n}\n\nfunction getHasOverlap(first, second) {\n  return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n  var pageBorderBox = _ref.pageBorderBox,\n      draggable = _ref.draggable,\n      candidates = _ref.candidates;\n  var startCenter = draggable.page.borderBox.center;\n  var sorted = candidates.map(function (candidate) {\n    var axis = candidate.axis;\n    var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n    return {\n      id: candidate.descriptor.id,\n      distance: distance(startCenter, target)\n    };\n  }).sort(function (a, b) {\n    return b.distance - a.distance;\n  });\n  return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n  var pageBorderBox = _ref2.pageBorderBox,\n      draggable = _ref2.draggable,\n      droppables = _ref2.droppables;\n  var candidates = toDroppableList(droppables).filter(function (item) {\n    if (!item.isEnabled) {\n      return false;\n    }\n\n    var active = item.subject.active;\n\n    if (!active) {\n      return false;\n    }\n\n    if (!getHasOverlap(pageBorderBox, active)) {\n      return false;\n    }\n\n    if (isPositionInFrame(active)(pageBorderBox.center)) {\n      return true;\n    }\n\n    var axis = item.axis;\n    var childCenter = active.center[axis.crossAxisLine];\n    var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n    var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n    var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n    var isStartContained = isContained(crossAxisStart);\n    var isEndContained = isContained(crossAxisEnd);\n\n    if (!isStartContained && !isEndContained) {\n      return true;\n    }\n\n    if (isStartContained) {\n      return crossAxisStart < childCenter;\n    }\n\n    return crossAxisEnd > childCenter;\n  });\n\n  if (!candidates.length) {\n    return null;\n  }\n\n  if (candidates.length === 1) {\n    return candidates[0].descriptor.id;\n  }\n\n  return getFurthestAway({\n    pageBorderBox: pageBorderBox,\n    draggable: draggable,\n    candidates: candidates\n  });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n  return getRect(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return area;\n  }\n\n  return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n  var displaced = _ref.displaced,\n      id = _ref.id;\n  return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n  var draggable = _ref.draggable,\n      closest = _ref.closest,\n      inHomeList = _ref.inHomeList;\n\n  if (!closest) {\n    return null;\n  }\n\n  if (!inHomeList) {\n    return closest.descriptor.index;\n  }\n\n  if (closest.descriptor.index > draggable.descriptor.index) {\n    return closest.descriptor.index - 1;\n  }\n\n  return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n  var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n      draggable = _ref2.draggable,\n      destination = _ref2.destination,\n      insideDestination = _ref2.insideDestination,\n      last = _ref2.last,\n      viewport = _ref2.viewport,\n      afterCritical = _ref2.afterCritical;\n  var axis = destination.axis;\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  var displacement = displacedBy.value;\n  var targetStart = targetRect[axis.start];\n  var targetEnd = targetRect[axis.end];\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var closest = find(withoutDragging, function (child) {\n    var id = child.descriptor.id;\n    var childCenter = child.page.borderBox.center[axis.line];\n    var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n    var isDisplaced = getIsDisplaced({\n      displaced: last,\n      id: id\n    });\n\n    if (didStartAfterCritical$1) {\n      if (isDisplaced) {\n        return targetEnd <= childCenter;\n      }\n\n      return targetStart < childCenter - displacement;\n    }\n\n    if (isDisplaced) {\n      return targetEnd <= childCenter + displacement;\n    }\n\n    return targetStart < childCenter;\n  });\n  var newIndex = atIndex({\n    draggable: draggable,\n    closest: closest,\n    inHomeList: isHomeOf(draggable, destination)\n  });\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    last: last,\n    displacedBy: displacedBy,\n    index: newIndex\n  });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n  var draggable = _ref.draggable,\n      targetRect = _ref.pageBorderBoxWithDroppableScroll,\n      previousImpact = _ref.previousImpact,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var axis = destination.axis;\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  var displacement = displacedBy.value;\n  var targetStart = targetRect[axis.start];\n  var targetEnd = targetRect[axis.end];\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var combineWith = find(withoutDragging, function (child) {\n    var id = child.descriptor.id;\n    var childRect = child.page.borderBox;\n    var childSize = childRect[axis.size];\n    var threshold = childSize / combineThresholdDivisor;\n    var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n    var isDisplaced = getIsDisplaced({\n      displaced: previousImpact.displaced,\n      id: id\n    });\n\n    if (didStartAfterCritical$1) {\n      if (isDisplaced) {\n        return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n      }\n\n      return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n    }\n\n    if (isDisplaced) {\n      return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n    }\n\n    return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n  });\n\n  if (!combineWith) {\n    return null;\n  }\n\n  var impact = {\n    displacedBy: displacedBy,\n    displaced: previousImpact.displaced,\n    at: {\n      type: 'COMBINE',\n      combine: {\n        draggableId: combineWith.descriptor.id,\n        droppableId: destination.descriptor.id\n      }\n    }\n  };\n  return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n  var pageOffset = _ref.pageOffset,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      droppables = _ref.droppables,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n  var destinationId = getDroppableOver$1({\n    pageBorderBox: pageBorderBox,\n    draggable: draggable,\n    droppables: droppables\n  });\n\n  if (!destinationId) {\n    return noImpact;\n  }\n\n  var destination = droppables[destinationId];\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n  return getCombineImpact({\n    pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n    draggable: draggable,\n    previousImpact: previousImpact,\n    destination: destination,\n    insideDestination: insideDestination,\n    afterCritical: afterCritical\n  }) || getReorderImpact({\n    pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n    draggable: draggable,\n    destination: destination,\n    insideDestination: insideDestination,\n    last: previousImpact.displaced,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n  var _extends2;\n\n  return _extends({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n  var previousImpact = _ref.previousImpact,\n      impact = _ref.impact,\n      droppables = _ref.droppables;\n  var last = whatIsDraggedOver(previousImpact);\n  var now = whatIsDraggedOver(impact);\n\n  if (!last) {\n    return droppables;\n  }\n\n  if (last === now) {\n    return droppables;\n  }\n\n  var lastDroppable = droppables[last];\n\n  if (!lastDroppable.subject.withPlaceholder) {\n    return droppables;\n  }\n\n  var updated = removePlaceholder(lastDroppable);\n  return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n  var draggable = _ref2.draggable,\n      draggables = _ref2.draggables,\n      droppables = _ref2.droppables,\n      previousImpact = _ref2.previousImpact,\n      impact = _ref2.impact;\n  var cleaned = clearUnusedPlaceholder({\n    previousImpact: previousImpact,\n    impact: impact,\n    droppables: droppables\n  });\n  var isOver = whatIsDraggedOver(impact);\n\n  if (!isOver) {\n    return cleaned;\n  }\n\n  var droppable = droppables[isOver];\n\n  if (isHomeOf(draggable, droppable)) {\n    return cleaned;\n  }\n\n  if (droppable.subject.withPlaceholder) {\n    return cleaned;\n  }\n\n  var patched = addPlaceholder(droppable, draggable, draggables);\n  return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n  var state = _ref.state,\n      forcedClientSelection = _ref.clientSelection,\n      forcedDimensions = _ref.dimensions,\n      forcedViewport = _ref.viewport,\n      forcedImpact = _ref.impact,\n      scrollJumpRequest = _ref.scrollJumpRequest;\n  var viewport = forcedViewport || state.viewport;\n  var dimensions = forcedDimensions || state.dimensions;\n  var clientSelection = forcedClientSelection || state.current.client.selection;\n  var offset = subtract(clientSelection, state.initial.client.selection);\n  var client = {\n    offset: offset,\n    selection: clientSelection,\n    borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n  };\n  var page = {\n    selection: add(client.selection, viewport.scroll.current),\n    borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n    offset: add(client.offset, viewport.scroll.diff.value)\n  };\n  var current = {\n    client: client,\n    page: page\n  };\n\n  if (state.phase === 'COLLECTING') {\n    return _extends({\n      phase: 'COLLECTING'\n    }, state, {\n      dimensions: dimensions,\n      viewport: viewport,\n      current: current\n    });\n  }\n\n  var draggable = dimensions.draggables[state.critical.draggable.id];\n  var newImpact = forcedImpact || getDragImpact({\n    pageOffset: page.offset,\n    draggable: draggable,\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables,\n    previousImpact: state.impact,\n    viewport: viewport,\n    afterCritical: state.afterCritical\n  });\n  var withUpdatedPlaceholders = recomputePlaceholders({\n    draggable: draggable,\n    impact: newImpact,\n    previousImpact: state.impact,\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables\n  });\n\n  var result = _extends({}, state, {\n    current: current,\n    dimensions: {\n      draggables: dimensions.draggables,\n      droppables: withUpdatedPlaceholders\n    },\n    impact: newImpact,\n    viewport: viewport,\n    scrollJumpRequest: scrollJumpRequest || null,\n    forceShouldAnimate: scrollJumpRequest ? false : null\n  });\n\n  return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n  return ids.map(function (id) {\n    return draggables[id];\n  });\n}\n\nvar recompute = (function (_ref) {\n  var impact = _ref.impact,\n      viewport = _ref.viewport,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      forceShouldAnimate = _ref.forceShouldAnimate;\n  var last = impact.displaced;\n  var afterDragging = getDraggables$1(last.all, draggables);\n  var displaced = getDisplacementGroups({\n    afterDragging: afterDragging,\n    destination: destination,\n    displacedBy: impact.displacedBy,\n    viewport: viewport.frame,\n    forceShouldAnimate: forceShouldAnimate,\n    last: last\n  });\n  return _extends({}, impact, {\n    displaced: displaced\n  });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      droppable = _ref.droppable,\n      draggables = _ref.draggables,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    draggables: draggables,\n    droppable: droppable,\n    afterCritical: afterCritical\n  });\n  return getClientFromPageBorderBoxCenter({\n    pageBorderBoxCenter: pageBorderBoxCenter,\n    draggable: draggable,\n    viewport: viewport\n  });\n});\n\nvar refreshSnap = (function (_ref) {\n  var state = _ref.state,\n      forcedDimensions = _ref.dimensions,\n      forcedViewport = _ref.viewport;\n  !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var needsVisibilityCheck = state.impact;\n  var viewport = forcedViewport || state.viewport;\n  var dimensions = forcedDimensions || state.dimensions;\n  var draggables = dimensions.draggables,\n      droppables = dimensions.droppables;\n  var draggable = draggables[state.critical.draggable.id];\n  var isOver = whatIsDraggedOver(needsVisibilityCheck);\n  !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant(false) : void 0;\n  var destination = droppables[isOver];\n  var impact = recompute({\n    impact: needsVisibilityCheck,\n    viewport: viewport,\n    destination: destination,\n    draggables: draggables\n  });\n  var clientSelection = getClientBorderBoxCenter({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    viewport: viewport,\n    afterCritical: state.afterCritical\n  });\n  return update({\n    impact: impact,\n    clientSelection: clientSelection,\n    state: state,\n    dimensions: dimensions,\n    viewport: viewport\n  });\n});\n\nvar getHomeLocation = (function (descriptor) {\n  return {\n    index: descriptor.index,\n    droppableId: descriptor.droppableId\n  };\n});\n\nvar getLiftEffect = (function (_ref) {\n  var draggable = _ref.draggable,\n      home = _ref.home,\n      draggables = _ref.draggables,\n      viewport = _ref.viewport;\n  var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n  var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n  var rawIndex = insideHome.indexOf(draggable);\n  !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant(false) : void 0;\n  var afterDragging = insideHome.slice(rawIndex + 1);\n  var effected = afterDragging.reduce(function (previous, item) {\n    previous[item.descriptor.id] = true;\n    return previous;\n  }, {});\n  var afterCritical = {\n    inVirtualList: home.descriptor.mode === 'virtual',\n    displacedBy: displacedBy,\n    effected: effected\n  };\n  var displaced = getDisplacementGroups({\n    afterDragging: afterDragging,\n    destination: home,\n    displacedBy: displacedBy,\n    last: null,\n    viewport: viewport.frame,\n    forceShouldAnimate: false\n  });\n  var impact = {\n    displaced: displaced,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: getHomeLocation(draggable.descriptor)\n    }\n  };\n  return {\n    impact: impact,\n    afterCritical: afterCritical\n  };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n  return {\n    draggables: dimensions.draggables,\n    droppables: patchDroppableMap(dimensions.droppables, updated)\n  };\n});\n\nvar start = function start(key) {\n  if (process.env.NODE_ENV !== 'production') {\n    {\n      return;\n    }\n  }\n};\nvar finish = function finish(key) {\n  if (process.env.NODE_ENV !== 'production') {\n    {\n      return;\n    }\n  }\n};\n\nvar offsetDraggable = (function (_ref) {\n  var draggable = _ref.draggable,\n      offset$1 = _ref.offset,\n      initialWindowScroll = _ref.initialWindowScroll;\n  var client = offset(draggable.client, offset$1);\n  var page = withScroll(client, initialWindowScroll);\n\n  var moved = _extends({}, draggable, {\n    placeholder: _extends({}, draggable.placeholder, {\n      client: client\n    }),\n    client: client,\n    page: page\n  });\n\n  return moved;\n});\n\nvar getFrame = (function (droppable) {\n  var frame = droppable.frame;\n  !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant(false) : void 0;\n  return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n  var additions = _ref.additions,\n      updatedDroppables = _ref.updatedDroppables,\n      viewport = _ref.viewport;\n  var windowScrollChange = viewport.scroll.diff.value;\n  return additions.map(function (draggable) {\n    var droppableId = draggable.descriptor.droppableId;\n    var modified = updatedDroppables[droppableId];\n    var frame = getFrame(modified);\n    var droppableScrollChange = frame.scroll.diff.value;\n    var totalChange = add(windowScrollChange, droppableScrollChange);\n    var moved = offsetDraggable({\n      draggable: draggable,\n      offset: totalChange,\n      initialWindowScroll: viewport.scroll.initial\n    });\n    return moved;\n  });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n  var state = _ref.state,\n      published = _ref.published;\n  start();\n  var withScrollChange = published.modified.map(function (update) {\n    var existing = state.dimensions.droppables[update.droppableId];\n    var scrolled = scrollDroppable(existing, update.scroll);\n    return scrolled;\n  });\n\n  var droppables = _extends({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n  var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n    additions: published.additions,\n    updatedDroppables: droppables,\n    viewport: state.viewport\n  }));\n\n  var draggables = _extends({}, state.dimensions.draggables, {}, updatedAdditions);\n\n  published.removals.forEach(function (id) {\n    delete draggables[id];\n  });\n  var dimensions = {\n    droppables: droppables,\n    draggables: draggables\n  };\n  var wasOverId = whatIsDraggedOver(state.impact);\n  var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n  var draggable = dimensions.draggables[state.critical.draggable.id];\n  var home = dimensions.droppables[state.critical.droppable.id];\n\n  var _getLiftEffect = getLiftEffect({\n    draggable: draggable,\n    home: home,\n    draggables: draggables,\n    viewport: state.viewport\n  }),\n      onLiftImpact = _getLiftEffect.impact,\n      afterCritical = _getLiftEffect.afterCritical;\n\n  var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n  var impact = getDragImpact({\n    pageOffset: state.current.page.offset,\n    draggable: dimensions.draggables[state.critical.draggable.id],\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables,\n    previousImpact: previousImpact,\n    viewport: state.viewport,\n    afterCritical: afterCritical\n  });\n  finish();\n\n  var draggingState = _extends({\n    phase: 'DRAGGING'\n  }, state, {\n    phase: 'DRAGGING',\n    impact: impact,\n    onLiftImpact: onLiftImpact,\n    dimensions: dimensions,\n    afterCritical: afterCritical,\n    forceShouldAnimate: false\n  });\n\n  if (state.phase === 'COLLECTING') {\n    return draggingState;\n  }\n\n  var dropPending = _extends({\n    phase: 'DROP_PENDING'\n  }, draggingState, {\n    phase: 'DROP_PENDING',\n    reason: state.reason,\n    isWaiting: false\n  });\n\n  return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n  return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n  var dimensions = patchDimensionMap(state.dimensions, updated);\n\n  if (!isSnapping(state) || isEnabledChanging) {\n    return update({\n      state: state,\n      dimensions: dimensions\n    });\n  }\n\n  return refreshSnap({\n    state: state,\n    dimensions: dimensions\n  });\n};\n\nfunction removeScrollJumpRequest(state) {\n  if (state.isDragging && state.movementMode === 'SNAP') {\n    return _extends({\n      phase: 'DRAGGING'\n    }, state, {\n      scrollJumpRequest: null\n    });\n  }\n\n  return state;\n}\n\nvar idle = {\n  phase: 'IDLE',\n  completed: null,\n  shouldFlush: false\n};\nvar reducer = (function (state, action) {\n  if (state === void 0) {\n    state = idle;\n  }\n\n  if (action.type === 'FLUSH') {\n    return _extends({}, idle, {\n      shouldFlush: true\n    });\n  }\n\n  if (action.type === 'INITIAL_PUBLISH') {\n    !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant(false) : void 0;\n    var _action$payload = action.payload,\n        critical = _action$payload.critical,\n        clientSelection = _action$payload.clientSelection,\n        viewport = _action$payload.viewport,\n        dimensions = _action$payload.dimensions,\n        movementMode = _action$payload.movementMode;\n    var draggable = dimensions.draggables[critical.draggable.id];\n    var home = dimensions.droppables[critical.droppable.id];\n    var client = {\n      selection: clientSelection,\n      borderBoxCenter: draggable.client.borderBox.center,\n      offset: origin\n    };\n    var initial = {\n      client: client,\n      page: {\n        selection: add(client.selection, viewport.scroll.initial),\n        borderBoxCenter: add(client.selection, viewport.scroll.initial),\n        offset: add(client.selection, viewport.scroll.diff.value)\n      }\n    };\n    var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n      return !item.isFixedOnPage;\n    });\n\n    var _getLiftEffect = getLiftEffect({\n      draggable: draggable,\n      home: home,\n      draggables: dimensions.draggables,\n      viewport: viewport\n    }),\n        impact = _getLiftEffect.impact,\n        afterCritical = _getLiftEffect.afterCritical;\n\n    var result = {\n      phase: 'DRAGGING',\n      isDragging: true,\n      critical: critical,\n      movementMode: movementMode,\n      dimensions: dimensions,\n      initial: initial,\n      current: initial,\n      isWindowScrollAllowed: isWindowScrollAllowed,\n      impact: impact,\n      afterCritical: afterCritical,\n      onLiftImpact: impact,\n      viewport: viewport,\n      scrollJumpRequest: null,\n      forceShouldAnimate: null\n    };\n    return result;\n  }\n\n  if (action.type === 'COLLECTION_STARTING') {\n    if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant(false) : void 0;\n\n    var _result = _extends({\n      phase: 'COLLECTING'\n    }, state, {\n      phase: 'COLLECTING'\n    });\n\n    return _result;\n  }\n\n  if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n    !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant(false) : void 0;\n    return publishWhileDraggingInVirtual({\n      state: state,\n      published: action.payload\n    });\n  }\n\n  if (action.type === 'MOVE') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n    var _clientSelection = action.payload.client;\n\n    if (isEqual(_clientSelection, state.current.client.selection)) {\n      return state;\n    }\n\n    return update({\n      state: state,\n      clientSelection: _clientSelection,\n      impact: isSnapping(state) ? state.impact : null\n    });\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n    if (state.phase === 'DROP_PENDING') {\n      return removeScrollJumpRequest(state);\n    }\n\n    if (state.phase === 'COLLECTING') {\n      return removeScrollJumpRequest(state);\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload2 = action.payload,\n        id = _action$payload2.id,\n        newScroll = _action$payload2.newScroll;\n    var target = state.dimensions.droppables[id];\n\n    if (!target) {\n      return state;\n    }\n\n    var scrolled = scrollDroppable(target, newScroll);\n    return postDroppableChange(state, scrolled, false);\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload3 = action.payload,\n        _id = _action$payload3.id,\n        isEnabled = _action$payload3.isEnabled;\n    var _target = state.dimensions.droppables[_id];\n    !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant(false) : void 0;\n    !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n      but it is already \" + String(_target.isEnabled)) : invariant(false) : void 0;\n\n    var updated = _extends({}, _target, {\n      isEnabled: isEnabled\n    });\n\n    return postDroppableChange(state, updated, true);\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload4 = action.payload,\n        _id2 = _action$payload4.id,\n        isCombineEnabled = _action$payload4.isCombineEnabled;\n    var _target2 = state.dimensions.droppables[_id2];\n    !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant(false) : void 0;\n    !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n      but it is already \" + String(_target2.isCombineEnabled)) : invariant(false) : void 0;\n\n    var _updated = _extends({}, _target2, {\n      isCombineEnabled: isCombineEnabled\n    });\n\n    return postDroppableChange(state, _updated, true);\n  }\n\n  if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n    if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant(false) : void 0;\n    !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant(false) : void 0;\n    var _newScroll = action.payload.newScroll;\n\n    if (isEqual(state.viewport.scroll.current, _newScroll)) {\n      return removeScrollJumpRequest(state);\n    }\n\n    var _viewport = scrollViewport(state.viewport, _newScroll);\n\n    if (isSnapping(state)) {\n      return refreshSnap({\n        state: state,\n        viewport: _viewport\n      });\n    }\n\n    return update({\n      state: state,\n      viewport: _viewport\n    });\n  }\n\n  if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n    if (!isMovementAllowed(state)) {\n      return state;\n    }\n\n    var maxScroll = action.payload.maxScroll;\n\n    if (isEqual(maxScroll, state.viewport.scroll.max)) {\n      return state;\n    }\n\n    var withMaxScroll = _extends({}, state.viewport, {\n      scroll: _extends({}, state.viewport.scroll, {\n        max: maxScroll\n      })\n    });\n\n    return _extends({\n      phase: 'DRAGGING'\n    }, state, {\n      viewport: withMaxScroll\n    });\n  }\n\n  if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n    if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant(false) : void 0;\n\n    var _result2 = moveInDirection({\n      state: state,\n      type: action.type\n    });\n\n    if (!_result2) {\n      return state;\n    }\n\n    return update({\n      state: state,\n      impact: _result2.impact,\n      clientSelection: _result2.clientSelection,\n      scrollJumpRequest: _result2.scrollJumpRequest\n    });\n  }\n\n  if (action.type === 'DROP_PENDING') {\n    var reason = action.payload.reason;\n    !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant(false) : void 0;\n\n    var newState = _extends({\n      phase: 'DROP_PENDING'\n    }, state, {\n      phase: 'DROP_PENDING',\n      isWaiting: true,\n      reason: reason\n    });\n\n    return newState;\n  }\n\n  if (action.type === 'DROP_ANIMATE') {\n    var _action$payload5 = action.payload,\n        completed = _action$payload5.completed,\n        dropDuration = _action$payload5.dropDuration,\n        newHomeClientOffset = _action$payload5.newHomeClientOffset;\n    !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant(false) : void 0;\n    var _result3 = {\n      phase: 'DROP_ANIMATING',\n      completed: completed,\n      dropDuration: dropDuration,\n      newHomeClientOffset: newHomeClientOffset,\n      dimensions: state.dimensions\n    };\n    return _result3;\n  }\n\n  if (action.type === 'DROP_COMPLETE') {\n    var _completed = action.payload.completed;\n    return {\n      phase: 'IDLE',\n      completed: _completed,\n      shouldFlush: false\n    };\n  }\n\n  return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n  return {\n    type: 'BEFORE_INITIAL_CAPTURE',\n    payload: args\n  };\n};\nvar lift = function lift(args) {\n  return {\n    type: 'LIFT',\n    payload: args\n  };\n};\nvar initialPublish = function initialPublish(args) {\n  return {\n    type: 'INITIAL_PUBLISH',\n    payload: args\n  };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n  return {\n    type: 'PUBLISH_WHILE_DRAGGING',\n    payload: args\n  };\n};\nvar collectionStarting = function collectionStarting() {\n  return {\n    type: 'COLLECTION_STARTING',\n    payload: null\n  };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_SCROLL',\n    payload: args\n  };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_IS_ENABLED',\n    payload: args\n  };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n    payload: args\n  };\n};\nvar move = function move(args) {\n  return {\n    type: 'MOVE',\n    payload: args\n  };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n  return {\n    type: 'MOVE_BY_WINDOW_SCROLL',\n    payload: args\n  };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n  return {\n    type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n    payload: args\n  };\n};\nvar moveUp = function moveUp() {\n  return {\n    type: 'MOVE_UP',\n    payload: null\n  };\n};\nvar moveDown = function moveDown() {\n  return {\n    type: 'MOVE_DOWN',\n    payload: null\n  };\n};\nvar moveRight = function moveRight() {\n  return {\n    type: 'MOVE_RIGHT',\n    payload: null\n  };\n};\nvar moveLeft = function moveLeft() {\n  return {\n    type: 'MOVE_LEFT',\n    payload: null\n  };\n};\nvar flush = function flush() {\n  return {\n    type: 'FLUSH',\n    payload: null\n  };\n};\nvar animateDrop = function animateDrop(args) {\n  return {\n    type: 'DROP_ANIMATE',\n    payload: args\n  };\n};\nvar completeDrop = function completeDrop(args) {\n  return {\n    type: 'DROP_COMPLETE',\n    payload: args\n  };\n};\nvar drop = function drop(args) {\n  return {\n    type: 'DROP',\n    payload: args\n  };\n};\nvar dropPending = function dropPending(args) {\n  return {\n    type: 'DROP_PENDING',\n    payload: args\n  };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n  return {\n    type: 'DROP_ANIMATION_FINISHED',\n    payload: null\n  };\n};\n\nfunction checkIndexes(insideDestination) {\n  if (insideDestination.length <= 1) {\n    return;\n  }\n\n  var indexes = insideDestination.map(function (d) {\n    return d.descriptor.index;\n  });\n  var errors = {};\n\n  for (var i = 1; i < indexes.length; i++) {\n    var current = indexes[i];\n    var previous = indexes[i - 1];\n\n    if (current !== previous + 1) {\n      errors[current] = true;\n    }\n  }\n\n  if (!Object.keys(errors).length) {\n    return;\n  }\n\n  var formatted = indexes.map(function (index) {\n    var hasError = Boolean(errors[index]);\n    return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n  }).join(', ');\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    Detected non-consecutive <Draggable /> indexes.\\n\\n    (This can cause unexpected bugs)\\n\\n    \" + formatted + \"\\n  \") : void 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n  if (process.env.NODE_ENV !== 'production') {\n    var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n    checkIndexes(insideDestination);\n  }\n}\n\nvar lift$1 = (function (marshal) {\n  return function (_ref) {\n    var getState = _ref.getState,\n        dispatch = _ref.dispatch;\n    return function (next) {\n      return function (action) {\n        if (action.type !== 'LIFT') {\n          next(action);\n          return;\n        }\n\n        var _action$payload = action.payload,\n            id = _action$payload.id,\n            clientSelection = _action$payload.clientSelection,\n            movementMode = _action$payload.movementMode;\n        var initial = getState();\n\n        if (initial.phase === 'DROP_ANIMATING') {\n          dispatch(completeDrop({\n            completed: initial.completed\n          }));\n        }\n\n        !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant(false) : void 0;\n        dispatch(flush());\n        dispatch(beforeInitialCapture({\n          draggableId: id,\n          movementMode: movementMode\n        }));\n        var scrollOptions = {\n          shouldPublishImmediately: movementMode === 'SNAP'\n        };\n        var request = {\n          draggableId: id,\n          scrollOptions: scrollOptions\n        };\n\n        var _marshal$startPublish = marshal.startPublishing(request),\n            critical = _marshal$startPublish.critical,\n            dimensions = _marshal$startPublish.dimensions,\n            viewport = _marshal$startPublish.viewport;\n\n        validateDimensions(critical, dimensions);\n        dispatch(initialPublish({\n          critical: critical,\n          dimensions: dimensions,\n          clientSelection: clientSelection,\n          movementMode: movementMode,\n          viewport: viewport\n        }));\n      };\n    };\n  };\n});\n\nvar style = (function (marshal) {\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'INITIAL_PUBLISH') {\n          marshal.dragging();\n        }\n\n        if (action.type === 'DROP_ANIMATE') {\n          marshal.dropping(action.payload.completed.result.reason);\n        }\n\n        if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n          marshal.resting();\n        }\n\n        next(action);\n      };\n    };\n  };\n});\n\nvar curves = {\n  outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n  drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n  opacity: {\n    drop: 0,\n    combining: 0.7\n  },\n  scale: {\n    drop: 0.75\n  }\n};\nvar timings = {\n  outOfTheWay: 0.2,\n  minDropTime: 0.33,\n  maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n  fluid: \"opacity \" + outOfTheWayTiming,\n  snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n  drop: function drop(duration) {\n    var timing = duration + \"s \" + curves.drop;\n    return \"transform \" + timing + \", opacity \" + timing;\n  },\n  outOfTheWay: \"transform \" + outOfTheWayTiming,\n  placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n  return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n  moveTo: moveTo,\n  drop: function drop(offset, isCombining) {\n    var translate = moveTo(offset);\n\n    if (!translate) {\n      return null;\n    }\n\n    if (!isCombining) {\n      return translate;\n    }\n\n    return translate + \" scale(\" + combine.scale.drop + \")\";\n  }\n};\n\nvar minDropTime = timings.minDropTime,\n    maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n  var current = _ref.current,\n      destination = _ref.destination,\n      reason = _ref.reason;\n  var distance$1 = distance(current, destination);\n\n  if (distance$1 <= 0) {\n    return minDropTime;\n  }\n\n  if (distance$1 >= maxDropTimeAtDistance) {\n    return maxDropTime;\n  }\n\n  var percentage = distance$1 / maxDropTimeAtDistance;\n  var duration = minDropTime + dropTimeRange * percentage;\n  var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n  return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      dimensions = _ref.dimensions,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var draggables = dimensions.draggables,\n      droppables = dimensions.droppables;\n  var droppableId = whatIsDraggedOver(impact);\n  var destination = droppableId ? droppables[droppableId] : null;\n  var home = droppables[draggable.descriptor.droppableId];\n  var newClientCenter = getClientBorderBoxCenter({\n    impact: impact,\n    draggable: draggable,\n    draggables: draggables,\n    afterCritical: afterCritical,\n    droppable: destination || home,\n    viewport: viewport\n  });\n  var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n  return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n  var draggables = _ref.draggables,\n      reason = _ref.reason,\n      lastImpact = _ref.lastImpact,\n      home = _ref.home,\n      viewport = _ref.viewport,\n      onLiftImpact = _ref.onLiftImpact;\n\n  if (!lastImpact.at || reason !== 'DROP') {\n    var recomputedHomeImpact = recompute({\n      draggables: draggables,\n      impact: onLiftImpact,\n      destination: home,\n      viewport: viewport,\n      forceShouldAnimate: true\n    });\n    return {\n      impact: recomputedHomeImpact,\n      didDropInsideDroppable: false\n    };\n  }\n\n  if (lastImpact.at.type === 'REORDER') {\n    return {\n      impact: lastImpact,\n      didDropInsideDroppable: true\n    };\n  }\n\n  var withoutMovement = _extends({}, lastImpact, {\n    displaced: emptyGroups\n  });\n\n  return {\n    impact: withoutMovement,\n    didDropInsideDroppable: true\n  };\n});\n\nvar drop$1 = (function (_ref) {\n  var getState = _ref.getState,\n      dispatch = _ref.dispatch;\n  return function (next) {\n    return function (action) {\n      if (action.type !== 'DROP') {\n        next(action);\n        return;\n      }\n\n      var state = getState();\n      var reason = action.payload.reason;\n\n      if (state.phase === 'COLLECTING') {\n        dispatch(dropPending({\n          reason: reason\n        }));\n        return;\n      }\n\n      if (state.phase === 'IDLE') {\n        return;\n      }\n\n      var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n      !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant(false) : void 0;\n      !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant(false) : void 0;\n      var critical = state.critical;\n      var dimensions = state.dimensions;\n      var draggable = dimensions.draggables[state.critical.draggable.id];\n\n      var _getDropImpact = getDropImpact({\n        reason: reason,\n        lastImpact: state.impact,\n        afterCritical: state.afterCritical,\n        onLiftImpact: state.onLiftImpact,\n        home: state.dimensions.droppables[state.critical.droppable.id],\n        viewport: state.viewport,\n        draggables: state.dimensions.draggables\n      }),\n          impact = _getDropImpact.impact,\n          didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n      var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n      var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n      var source = {\n        index: critical.draggable.index,\n        droppableId: critical.droppable.id\n      };\n      var result = {\n        draggableId: draggable.descriptor.id,\n        type: draggable.descriptor.type,\n        source: source,\n        reason: reason,\n        mode: state.movementMode,\n        destination: destination,\n        combine: combine\n      };\n      var newHomeClientOffset = getNewHomeClientOffset({\n        impact: impact,\n        draggable: draggable,\n        dimensions: dimensions,\n        viewport: state.viewport,\n        afterCritical: state.afterCritical\n      });\n      var completed = {\n        critical: state.critical,\n        afterCritical: state.afterCritical,\n        result: result,\n        impact: impact\n      };\n      var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n      if (!isAnimationRequired) {\n        dispatch(completeDrop({\n          completed: completed\n        }));\n        return;\n      }\n\n      var dropDuration = getDropDuration({\n        current: state.current.client.offset,\n        destination: newHomeClientOffset,\n        reason: reason\n      });\n      var args = {\n        newHomeClientOffset: newHomeClientOffset,\n        dropDuration: dropDuration,\n        completed: completed\n      };\n      dispatch(animateDrop(args));\n    };\n  };\n});\n\nvar getWindowScroll = (function () {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n});\n\nfunction getWindowScrollBinding(update) {\n  return {\n    eventName: 'scroll',\n    options: {\n      passive: true,\n      capture: false\n    },\n    fn: function fn(event) {\n      if (event.target !== window && event.target !== window.document) {\n        return;\n      }\n\n      update();\n    }\n  };\n}\n\nfunction getScrollListener(_ref) {\n  var onWindowScroll = _ref.onWindowScroll;\n\n  function updateScroll() {\n    onWindowScroll(getWindowScroll());\n  }\n\n  var scheduled = rafSchd(updateScroll);\n  var binding = getWindowScrollBinding(scheduled);\n  var unbind = noop;\n\n  function isActive() {\n    return unbind !== noop;\n  }\n\n  function start() {\n    !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant(false) : void 0;\n    unbind = bindEvents(window, [binding]);\n  }\n\n  function stop() {\n    !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant(false) : void 0;\n    scheduled.cancel();\n    unbind();\n    unbind = noop;\n  }\n\n  return {\n    start: start,\n    stop: stop,\n    isActive: isActive\n  };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n  return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n  var listener = getScrollListener({\n    onWindowScroll: function onWindowScroll(newScroll) {\n      store.dispatch(moveByWindowScroll({\n        newScroll: newScroll\n      }));\n    }\n  });\n  return function (next) {\n    return function (action) {\n      if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n        listener.start();\n      }\n\n      if (listener.isActive() && shouldEnd(action)) {\n        listener.stop();\n      }\n\n      next(action);\n    };\n  };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n  var wasCalled = false;\n  var isExpired = false;\n  var timeoutId = setTimeout(function () {\n    isExpired = true;\n  });\n\n  var result = function result(message) {\n    if (wasCalled) {\n      process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n      return;\n    }\n\n    if (isExpired) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Announcements cannot be made asynchronously.\\n        Default message has already been announced.\\n      \") : void 0;\n      return;\n    }\n\n    wasCalled = true;\n    announce(message);\n    clearTimeout(timeoutId);\n  };\n\n  result.wasCalled = function () {\n    return wasCalled;\n  };\n\n  return result;\n});\n\nvar getAsyncMarshal = (function () {\n  var entries = [];\n\n  var execute = function execute(timerId) {\n    var index = findIndex(entries, function (item) {\n      return item.timerId === timerId;\n    });\n    !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant(false) : void 0;\n\n    var _entries$splice = entries.splice(index, 1),\n        entry = _entries$splice[0];\n\n    entry.callback();\n  };\n\n  var add = function add(fn) {\n    var timerId = setTimeout(function () {\n      return execute(timerId);\n    });\n    var entry = {\n      timerId: timerId,\n      callback: fn\n    };\n    entries.push(entry);\n  };\n\n  var flush = function flush() {\n    if (!entries.length) {\n      return;\n    }\n\n    var shallow = [].concat(entries);\n    entries.length = 0;\n    shallow.forEach(function (entry) {\n      clearTimeout(entry.timerId);\n      entry.callback();\n    });\n  };\n\n  return {\n    add: add,\n    flush: flush\n  };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n  if (first == null && second == null) {\n    return true;\n  }\n\n  if (first == null || second == null) {\n    return false;\n  }\n\n  return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n  if (first == null && second == null) {\n    return true;\n  }\n\n  if (first == null || second == null) {\n    return false;\n  }\n\n  return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n  if (first === second) {\n    return true;\n  }\n\n  var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n  var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n  return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n  start();\n  fn();\n  finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n  return {\n    draggableId: critical.draggable.id,\n    type: critical.droppable.type,\n    source: {\n      droppableId: critical.droppable.id,\n      index: critical.draggable.index\n    },\n    mode: mode\n  };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n  if (!responder) {\n    announce(getDefaultMessage(data));\n    return;\n  }\n\n  var willExpire = getExpiringAnnounce(announce);\n  var provided = {\n    announce: willExpire\n  };\n  responder(data, provided);\n\n  if (!willExpire.wasCalled()) {\n    announce(getDefaultMessage(data));\n  }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n  var asyncMarshal = getAsyncMarshal();\n  var dragging = null;\n\n  var beforeCapture = function beforeCapture(draggableId, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant(false) : void 0;\n    withTimings('onBeforeCapture', function () {\n      var fn = getResponders().onBeforeCapture;\n\n      if (fn) {\n        var before = {\n          draggableId: draggableId,\n          mode: mode\n        };\n        fn(before);\n      }\n    });\n  };\n\n  var beforeStart = function beforeStart(critical, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n    withTimings('onBeforeDragStart', function () {\n      var fn = getResponders().onBeforeDragStart;\n\n      if (fn) {\n        fn(getDragStart(critical, mode));\n      }\n    });\n  };\n\n  var start = function start(critical, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n    var data = getDragStart(critical, mode);\n    dragging = {\n      mode: mode,\n      lastCritical: critical,\n      lastLocation: data.source,\n      lastCombine: null\n    };\n    asyncMarshal.add(function () {\n      withTimings('onDragStart', function () {\n        return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n      });\n    });\n  };\n\n  var update = function update(critical, impact) {\n    var location = tryGetDestination(impact);\n    var combine = tryGetCombine(impact);\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant(false) : void 0;\n    var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n    if (hasCriticalChanged) {\n      dragging.lastCritical = critical;\n    }\n\n    var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n    if (hasLocationChanged) {\n      dragging.lastLocation = location;\n    }\n\n    var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n    if (hasGroupingChanged) {\n      dragging.lastCombine = combine;\n    }\n\n    if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n      return;\n    }\n\n    var data = _extends({}, getDragStart(critical, dragging.mode), {\n      combine: combine,\n      destination: location\n    });\n\n    asyncMarshal.add(function () {\n      withTimings('onDragUpdate', function () {\n        return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n      });\n    });\n  };\n\n  var flush = function flush() {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant(false) : void 0;\n    asyncMarshal.flush();\n  };\n\n  var drop = function drop(result) {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant(false) : void 0;\n    dragging = null;\n    withTimings('onDragEnd', function () {\n      return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n    });\n  };\n\n  var abort = function abort() {\n    if (!dragging) {\n      return;\n    }\n\n    var result = _extends({}, getDragStart(dragging.lastCritical, dragging.mode), {\n      combine: null,\n      destination: null,\n      reason: 'CANCEL'\n    });\n\n    drop(result);\n  };\n\n  return {\n    beforeCapture: beforeCapture,\n    beforeStart: beforeStart,\n    start: start,\n    update: update,\n    flush: flush,\n    drop: drop,\n    abort: abort\n  };\n});\n\nvar responders = (function (getResponders, announce) {\n  var publisher = getPublisher(getResponders, announce);\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n          publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n          return;\n        }\n\n        if (action.type === 'INITIAL_PUBLISH') {\n          var critical = action.payload.critical;\n          publisher.beforeStart(critical, action.payload.movementMode);\n          next(action);\n          publisher.start(critical, action.payload.movementMode);\n          return;\n        }\n\n        if (action.type === 'DROP_COMPLETE') {\n          var result = action.payload.completed.result;\n          publisher.flush();\n          next(action);\n          publisher.drop(result);\n          return;\n        }\n\n        next(action);\n\n        if (action.type === 'FLUSH') {\n          publisher.abort();\n          return;\n        }\n\n        var state = store.getState();\n\n        if (state.phase === 'DRAGGING') {\n          publisher.update(state.critical, state.impact);\n        }\n      };\n    };\n  };\n});\n\nvar dropAnimationFinish = (function (store) {\n  return function (next) {\n    return function (action) {\n      if (action.type !== 'DROP_ANIMATION_FINISHED') {\n        next(action);\n        return;\n      }\n\n      var state = store.getState();\n      !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant(false) : void 0;\n      store.dispatch(completeDrop({\n        completed: state.completed\n      }));\n    };\n  };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n  var unbind = null;\n  var frameId = null;\n\n  function clear() {\n    if (frameId) {\n      cancelAnimationFrame(frameId);\n      frameId = null;\n    }\n\n    if (unbind) {\n      unbind();\n      unbind = null;\n    }\n  }\n\n  return function (next) {\n    return function (action) {\n      if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n        clear();\n      }\n\n      next(action);\n\n      if (action.type !== 'DROP_ANIMATE') {\n        return;\n      }\n\n      var binding = {\n        eventName: 'scroll',\n        options: {\n          capture: true,\n          passive: false,\n          once: true\n        },\n        fn: function flushDropAnimation() {\n          var state = store.getState();\n\n          if (state.phase === 'DROP_ANIMATING') {\n            store.dispatch(dropAnimationFinished());\n          }\n        }\n      };\n      frameId = requestAnimationFrame(function () {\n        frameId = null;\n        unbind = bindEvents(window, [binding]);\n      });\n    };\n  };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n          marshal.stopPublishing();\n        }\n\n        next(action);\n      };\n    };\n  };\n});\n\nvar focus = (function (marshal) {\n  var isWatching = false;\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'INITIAL_PUBLISH') {\n          isWatching = true;\n          marshal.tryRecordFocus(action.payload.critical.draggable.id);\n          next(action);\n          marshal.tryRestoreFocusRecorded();\n          return;\n        }\n\n        next(action);\n\n        if (!isWatching) {\n          return;\n        }\n\n        if (action.type === 'FLUSH') {\n          isWatching = false;\n          marshal.tryRestoreFocusRecorded();\n          return;\n        }\n\n        if (action.type === 'DROP_COMPLETE') {\n          isWatching = false;\n          var result = action.payload.completed.result;\n\n          if (result.combine) {\n            marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n          }\n\n          marshal.tryRestoreFocusRecorded();\n        }\n      };\n    };\n  };\n});\n\nvar shouldStop = function shouldStop(action) {\n  return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        if (shouldStop(action)) {\n          autoScroller.stop();\n          next(action);\n          return;\n        }\n\n        if (action.type === 'INITIAL_PUBLISH') {\n          next(action);\n          var state = store.getState();\n          !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant(false) : void 0;\n          autoScroller.start(state);\n          return;\n        }\n\n        next(action);\n        autoScroller.scroll(store.getState());\n      };\n    };\n  };\n});\n\nvar pendingDrop = (function (store) {\n  return function (next) {\n    return function (action) {\n      next(action);\n\n      if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n        return;\n      }\n\n      var postActionState = store.getState();\n\n      if (postActionState.phase !== 'DROP_PENDING') {\n        return;\n      }\n\n      if (postActionState.isWaiting) {\n        return;\n      }\n\n      store.dispatch(drop({\n        reason: postActionState.reason\n      }));\n    };\n  };\n});\n\nvar composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : compose;\nvar createStore = (function (_ref) {\n  var dimensionMarshal = _ref.dimensionMarshal,\n      focusMarshal = _ref.focusMarshal,\n      styleMarshal = _ref.styleMarshal,\n      getResponders = _ref.getResponders,\n      announce = _ref.announce,\n      autoScroller = _ref.autoScroller;\n  return createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n  return {\n    additions: {},\n    removals: {},\n    modified: {}\n  };\n};\nfunction createPublisher(_ref) {\n  var registry = _ref.registry,\n      callbacks = _ref.callbacks;\n  var staging = clean$1();\n  var frameId = null;\n\n  var collect = function collect() {\n    if (frameId) {\n      return;\n    }\n\n    callbacks.collectionStarting();\n    frameId = requestAnimationFrame(function () {\n      frameId = null;\n      start();\n      var _staging = staging,\n          additions = _staging.additions,\n          removals = _staging.removals,\n          modified = _staging.modified;\n      var added = Object.keys(additions).map(function (id) {\n        return registry.draggable.getById(id).getDimension(origin);\n      }).sort(function (a, b) {\n        return a.descriptor.index - b.descriptor.index;\n      });\n      var updated = Object.keys(modified).map(function (id) {\n        var entry = registry.droppable.getById(id);\n        var scroll = entry.callbacks.getScrollWhileDragging();\n        return {\n          droppableId: id,\n          scroll: scroll\n        };\n      });\n      var result = {\n        additions: added,\n        removals: Object.keys(removals),\n        modified: updated\n      };\n      staging = clean$1();\n      finish();\n      callbacks.publish(result);\n    });\n  };\n\n  var add = function add(entry) {\n    var id = entry.descriptor.id;\n    staging.additions[id] = entry;\n    staging.modified[entry.descriptor.droppableId] = true;\n\n    if (staging.removals[id]) {\n      delete staging.removals[id];\n    }\n\n    collect();\n  };\n\n  var remove = function remove(entry) {\n    var descriptor = entry.descriptor;\n    staging.removals[descriptor.id] = true;\n    staging.modified[descriptor.droppableId] = true;\n\n    if (staging.additions[descriptor.id]) {\n      delete staging.additions[descriptor.id];\n    }\n\n    collect();\n  };\n\n  var stop = function stop() {\n    if (!frameId) {\n      return;\n    }\n\n    cancelAnimationFrame(frameId);\n    frameId = null;\n    staging = clean$1();\n  };\n\n  return {\n    add: add,\n    remove: remove,\n    stop: stop\n  };\n}\n\nvar getMaxScroll = (function (_ref) {\n  var scrollHeight = _ref.scrollHeight,\n      scrollWidth = _ref.scrollWidth,\n      height = _ref.height,\n      width = _ref.width;\n  var maxScroll = subtract({\n    x: scrollWidth,\n    y: scrollHeight\n  }, {\n    x: width,\n    y: height\n  });\n  var adjustedMaxScroll = {\n    x: Math.max(0, maxScroll.x),\n    y: Math.max(0, maxScroll.y)\n  };\n  return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n  var doc = document.documentElement;\n  !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant(false) : void 0;\n  return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n  var doc = getDocumentElement();\n  var maxScroll = getMaxScroll({\n    scrollHeight: doc.scrollHeight,\n    scrollWidth: doc.scrollWidth,\n    width: doc.clientWidth,\n    height: doc.clientHeight\n  });\n  return maxScroll;\n});\n\nvar getViewport = (function () {\n  var scroll = getWindowScroll();\n  var maxScroll = getMaxWindowScroll();\n  var top = scroll.y;\n  var left = scroll.x;\n  var doc = getDocumentElement();\n  var width = doc.clientWidth;\n  var height = doc.clientHeight;\n  var right = left + width;\n  var bottom = top + height;\n  var frame = getRect({\n    top: top,\n    left: left,\n    right: right,\n    bottom: bottom\n  });\n  var viewport = {\n    frame: frame,\n    scroll: {\n      initial: scroll,\n      current: scroll,\n      max: maxScroll,\n      diff: {\n        value: origin,\n        displacement: origin\n      }\n    }\n  };\n  return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n  var critical = _ref.critical,\n      scrollOptions = _ref.scrollOptions,\n      registry = _ref.registry;\n  start();\n  var viewport = getViewport();\n  var windowScroll = viewport.scroll.current;\n  var home = critical.droppable;\n  var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n    return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n  });\n  var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n    return entry.getDimension(windowScroll);\n  });\n  var dimensions = {\n    draggables: toDraggableMap(draggables),\n    droppables: toDroppableMap(droppables)\n  };\n  finish();\n  var result = {\n    dimensions: dimensions,\n    critical: critical,\n    viewport: viewport\n  };\n  return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n  if (entry.descriptor.id === dragging.id) {\n    return false;\n  }\n\n  if (entry.descriptor.type !== dragging.type) {\n    return false;\n  }\n\n  var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n  if (home.descriptor.mode !== 'virtual') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n      while a drag is occurring. This is only supported for virtual lists.\\n\\n      See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n    \") : void 0;\n    return false;\n  }\n\n  return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n  var collection = null;\n  var publisher = createPublisher({\n    callbacks: {\n      publish: callbacks.publishWhileDragging,\n      collectionStarting: callbacks.collectionStarting\n    },\n    registry: registry\n  });\n\n  var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n\n    if (!collection) {\n      return;\n    }\n\n    callbacks.updateDroppableIsEnabled({\n      id: id,\n      isEnabled: isEnabled\n    });\n  };\n\n  var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n    if (!collection) {\n      return;\n    }\n\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n    callbacks.updateDroppableIsCombineEnabled({\n      id: id,\n      isCombineEnabled: isCombineEnabled\n    });\n  };\n\n  var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n    if (!collection) {\n      return;\n    }\n\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n    callbacks.updateDroppableScroll({\n      id: id,\n      newScroll: newScroll\n    });\n  };\n\n  var scrollDroppable = function scrollDroppable(id, change) {\n    if (!collection) {\n      return;\n    }\n\n    registry.droppable.getById(id).callbacks.scroll(change);\n  };\n\n  var stopPublishing = function stopPublishing() {\n    if (!collection) {\n      return;\n    }\n\n    publisher.stop();\n    var home = collection.critical.droppable;\n    registry.droppable.getAllByType(home.type).forEach(function (entry) {\n      return entry.callbacks.dragStopped();\n    });\n    collection.unsubscribe();\n    collection = null;\n  };\n\n  var subscriber = function subscriber(event) {\n    !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant(false) : void 0;\n    var dragging = collection.critical.draggable;\n\n    if (event.type === 'ADDITION') {\n      if (shouldPublishUpdate(registry, dragging, event.value)) {\n        publisher.add(event.value);\n      }\n    }\n\n    if (event.type === 'REMOVAL') {\n      if (shouldPublishUpdate(registry, dragging, event.value)) {\n        publisher.remove(event.value);\n      }\n    }\n  };\n\n  var startPublishing = function startPublishing(request) {\n    !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant(false) : void 0;\n    var entry = registry.draggable.getById(request.draggableId);\n    var home = registry.droppable.getById(entry.descriptor.droppableId);\n    var critical = {\n      draggable: entry.descriptor,\n      droppable: home.descriptor\n    };\n    var unsubscribe = registry.subscribe(subscriber);\n    collection = {\n      critical: critical,\n      unsubscribe: unsubscribe\n    };\n    return getInitialPublish({\n      critical: critical,\n      registry: registry,\n      scrollOptions: request.scrollOptions\n    });\n  };\n\n  var marshal = {\n    updateDroppableIsEnabled: updateDroppableIsEnabled,\n    updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n    scrollDroppable: scrollDroppable,\n    updateDroppableScroll: updateDroppableScroll,\n    startPublishing: startPublishing,\n    stopPublishing: stopPublishing\n  };\n  return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n  if (state.phase === 'IDLE') {\n    return true;\n  }\n\n  if (state.phase !== 'DROP_ANIMATING') {\n    return false;\n  }\n\n  if (state.completed.result.draggableId === id) {\n    return false;\n  }\n\n  return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n  window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = memoizeOne(function (droppables) {\n  return toDroppableList(droppables).filter(function (droppable) {\n    if (!droppable.isEnabled) {\n      return false;\n    }\n\n    if (!droppable.frame) {\n      return false;\n    }\n\n    return true;\n  });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n  var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n    !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant(false) : void 0;\n    return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n  });\n  return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n  var center = _ref.center,\n      destination = _ref.destination,\n      droppables = _ref.droppables;\n\n  if (destination) {\n    var _dimension = droppables[destination];\n\n    if (!_dimension.frame) {\n      return null;\n    }\n\n    return _dimension;\n  }\n\n  var dimension = getScrollableDroppableOver(center, droppables);\n  return dimension;\n});\n\nvar config = {\n  startFromPercentage: 0.25,\n  maxScrollAtPercentage: 0.05,\n  maxPixelScroll: 28,\n  ease: function ease(percentage) {\n    return Math.pow(percentage, 2);\n  },\n  durationDampening: {\n    stopDampeningAt: 1200,\n    accelerateAt: 360\n  }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n  var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n  var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n  var thresholds = {\n    startScrollingFrom: startScrollingFrom,\n    maxScrollValueAt: maxScrollValueAt\n  };\n  return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n  var startOfRange = _ref.startOfRange,\n      endOfRange = _ref.endOfRange,\n      current = _ref.current;\n  var range = endOfRange - startOfRange;\n\n  if (range === 0) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Detected distance range of 0 in the fluid auto scroller\\n      This is unexpected and would cause a divide by 0 issue.\\n      Not allowing an auto scroll\\n    \") : void 0;\n    return 0;\n  }\n\n  var currentInRange = current - startOfRange;\n  var percentage = currentInRange / range;\n  return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n  if (distanceToEdge > thresholds.startScrollingFrom) {\n    return 0;\n  }\n\n  if (distanceToEdge <= thresholds.maxScrollValueAt) {\n    return config.maxPixelScroll;\n  }\n\n  if (distanceToEdge === thresholds.startScrollingFrom) {\n    return minScroll;\n  }\n\n  var percentageFromMaxScrollValueAt = getPercentage({\n    startOfRange: thresholds.maxScrollValueAt,\n    endOfRange: thresholds.startScrollingFrom,\n    current: distanceToEdge\n  });\n  var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n  var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n  return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n  var startOfRange = dragStartTime;\n  var endOfRange = stopAt;\n  var now = Date.now();\n  var runTime = now - startOfRange;\n\n  if (runTime >= stopAt) {\n    return proposedScroll;\n  }\n\n  if (runTime < accelerateAt) {\n    return minScroll;\n  }\n\n  var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n    startOfRange: accelerateAt,\n    endOfRange: endOfRange,\n    current: runTime\n  });\n  var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n  return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n  var distanceToEdge = _ref.distanceToEdge,\n      thresholds = _ref.thresholds,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n  if (scroll === 0) {\n    return 0;\n  }\n\n  if (!shouldUseTimeDampening) {\n    return scroll;\n  }\n\n  return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n  var container = _ref.container,\n      distanceToEdges = _ref.distanceToEdges,\n      dragStartTime = _ref.dragStartTime,\n      axis = _ref.axis,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var thresholds = getDistanceThresholds(container, axis);\n  var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n  if (isCloserToEnd) {\n    return getValue({\n      distanceToEdge: distanceToEdges[axis.end],\n      thresholds: thresholds,\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n  }\n\n  return -1 * getValue({\n    distanceToEdge: distanceToEdges[axis.start],\n    thresholds: thresholds,\n    dragStartTime: dragStartTime,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n  var container = _ref.container,\n      subject = _ref.subject,\n      proposedScroll = _ref.proposedScroll;\n  var isTooBigVertically = subject.height > container.height;\n  var isTooBigHorizontally = subject.width > container.width;\n\n  if (!isTooBigHorizontally && !isTooBigVertically) {\n    return proposedScroll;\n  }\n\n  if (isTooBigHorizontally && isTooBigVertically) {\n    return null;\n  }\n\n  return {\n    x: isTooBigHorizontally ? 0 : proposedScroll.x,\n    y: isTooBigVertically ? 0 : proposedScroll.y\n  };\n});\n\nvar clean$2 = apply(function (value) {\n  return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n  var dragStartTime = _ref.dragStartTime,\n      container = _ref.container,\n      subject = _ref.subject,\n      center = _ref.center,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var distanceToEdges = {\n    top: center.y - container.top,\n    right: container.right - center.x,\n    bottom: container.bottom - center.y,\n    left: center.x - container.left\n  };\n  var y = getScrollOnAxis({\n    container: container,\n    distanceToEdges: distanceToEdges,\n    dragStartTime: dragStartTime,\n    axis: vertical,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  var x = getScrollOnAxis({\n    container: container,\n    distanceToEdges: distanceToEdges,\n    dragStartTime: dragStartTime,\n    axis: horizontal,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  var required = clean$2({\n    x: x,\n    y: y\n  });\n\n  if (isEqual(required, origin)) {\n    return null;\n  }\n\n  var limited = adjustForSizeLimits({\n    container: container,\n    subject: subject,\n    proposedScroll: required\n  });\n\n  if (!limited) {\n    return null;\n  }\n\n  return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n  if (value === 0) {\n    return 0;\n  }\n\n  return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n  var getRemainder = function getRemainder(target, max) {\n    if (target < 0) {\n      return target;\n    }\n\n    if (target > max) {\n      return target - max;\n    }\n\n    return 0;\n  };\n\n  return function (_ref) {\n    var current = _ref.current,\n        max = _ref.max,\n        change = _ref.change;\n    var targetScroll = add(current, change);\n    var overlap = {\n      x: getRemainder(targetScroll.x, max.x),\n      y: getRemainder(targetScroll.y, max.y)\n    };\n\n    if (isEqual(overlap, origin)) {\n      return null;\n    }\n\n    return overlap;\n  };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n  var rawMax = _ref2.max,\n      current = _ref2.current,\n      change = _ref2.change;\n  var max = {\n    x: Math.max(current.x, rawMax.x),\n    y: Math.max(current.y, rawMax.y)\n  };\n  var smallestChange = smallestSigned(change);\n  var overlap = getOverlap({\n    max: max,\n    current: current,\n    change: smallestChange\n  });\n\n  if (!overlap) {\n    return true;\n  }\n\n  if (smallestChange.x !== 0 && overlap.x === 0) {\n    return true;\n  }\n\n  if (smallestChange.y !== 0 && overlap.y === 0) {\n    return true;\n  }\n\n  return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n  return canPartiallyScroll({\n    current: viewport.scroll.current,\n    max: viewport.scroll.max,\n    change: change\n  });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n  if (!canScrollWindow(viewport, change)) {\n    return null;\n  }\n\n  var max = viewport.scroll.max;\n  var current = viewport.scroll.current;\n  return getOverlap({\n    current: current,\n    max: max,\n    change: change\n  });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return false;\n  }\n\n  return canPartiallyScroll({\n    current: frame.scroll.current,\n    max: frame.scroll.max,\n    change: change\n  });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return null;\n  }\n\n  if (!canScrollDroppable(droppable, change)) {\n    return null;\n  }\n\n  return getOverlap({\n    current: frame.scroll.current,\n    max: frame.scroll.max,\n    change: change\n  });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n  var viewport = _ref.viewport,\n      subject = _ref.subject,\n      center = _ref.center,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var scroll = getScroll({\n    dragStartTime: dragStartTime,\n    container: viewport.frame,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n  var droppable = _ref.droppable,\n      subject = _ref.subject,\n      center = _ref.center,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return null;\n  }\n\n  var scroll = getScroll({\n    dragStartTime: dragStartTime,\n    container: frame.pageMarginBox,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n  var state = _ref.state,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n      scrollWindow = _ref.scrollWindow,\n      scrollDroppable = _ref.scrollDroppable;\n  var center = state.current.page.borderBoxCenter;\n  var draggable = state.dimensions.draggables[state.critical.draggable.id];\n  var subject = draggable.page.marginBox;\n\n  if (state.isWindowScrollAllowed) {\n    var viewport = state.viewport;\n\n    var _change = getWindowScrollChange({\n      dragStartTime: dragStartTime,\n      viewport: viewport,\n      subject: subject,\n      center: center,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n\n    if (_change) {\n      scrollWindow(_change);\n      return;\n    }\n  }\n\n  var droppable = getBestScrollableDroppable({\n    center: center,\n    destination: whatIsDraggedOver(state.impact),\n    droppables: state.dimensions.droppables\n  });\n\n  if (!droppable) {\n    return;\n  }\n\n  var change = getDroppableScrollChange({\n    dragStartTime: dragStartTime,\n    droppable: droppable,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n\n  if (change) {\n    scrollDroppable(droppable.descriptor.id, change);\n  }\n});\n\nvar createFluidScroller = (function (_ref) {\n  var scrollWindow = _ref.scrollWindow,\n      scrollDroppable = _ref.scrollDroppable;\n  var scheduleWindowScroll = rafSchd(scrollWindow);\n  var scheduleDroppableScroll = rafSchd(scrollDroppable);\n  var dragging = null;\n\n  var tryScroll = function tryScroll(state) {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant(false) : void 0;\n    var _dragging = dragging,\n        shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n        dragStartTime = _dragging.dragStartTime;\n    scroll$1({\n      state: state,\n      scrollWindow: scheduleWindowScroll,\n      scrollDroppable: scheduleDroppableScroll,\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n  };\n\n  var start$1 = function start$1(state) {\n    start();\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant(false) : void 0;\n    var dragStartTime = Date.now();\n    var wasScrollNeeded = false;\n\n    var fakeScrollCallback = function fakeScrollCallback() {\n      wasScrollNeeded = true;\n    };\n\n    scroll$1({\n      state: state,\n      dragStartTime: 0,\n      shouldUseTimeDampening: false,\n      scrollWindow: fakeScrollCallback,\n      scrollDroppable: fakeScrollCallback\n    });\n    dragging = {\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: wasScrollNeeded\n    };\n    finish();\n\n    if (wasScrollNeeded) {\n      tryScroll(state);\n    }\n  };\n\n  var stop = function stop() {\n    if (!dragging) {\n      return;\n    }\n\n    scheduleWindowScroll.cancel();\n    scheduleDroppableScroll.cancel();\n    dragging = null;\n  };\n\n  return {\n    start: start$1,\n    stop: stop,\n    scroll: tryScroll\n  };\n});\n\nvar createJumpScroller = (function (_ref) {\n  var move = _ref.move,\n      scrollDroppable = _ref.scrollDroppable,\n      scrollWindow = _ref.scrollWindow;\n\n  var moveByOffset = function moveByOffset(state, offset) {\n    var client = add(state.current.client.selection, offset);\n    move({\n      client: client\n    });\n  };\n\n  var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n    if (!canScrollDroppable(droppable, change)) {\n      return change;\n    }\n\n    var overlap = getDroppableOverlap(droppable, change);\n\n    if (!overlap) {\n      scrollDroppable(droppable.descriptor.id, change);\n      return null;\n    }\n\n    var whatTheDroppableCanScroll = subtract(change, overlap);\n    scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n    var remainder = subtract(change, whatTheDroppableCanScroll);\n    return remainder;\n  };\n\n  var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n    if (!isWindowScrollAllowed) {\n      return change;\n    }\n\n    if (!canScrollWindow(viewport, change)) {\n      return change;\n    }\n\n    var overlap = getWindowOverlap(viewport, change);\n\n    if (!overlap) {\n      scrollWindow(change);\n      return null;\n    }\n\n    var whatTheWindowCanScroll = subtract(change, overlap);\n    scrollWindow(whatTheWindowCanScroll);\n    var remainder = subtract(change, whatTheWindowCanScroll);\n    return remainder;\n  };\n\n  var jumpScroller = function jumpScroller(state) {\n    var request = state.scrollJumpRequest;\n\n    if (!request) {\n      return;\n    }\n\n    var destination = whatIsDraggedOver(state.impact);\n    !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant(false) : void 0;\n    var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n    if (!droppableRemainder) {\n      return;\n    }\n\n    var viewport = state.viewport;\n    var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n    if (!windowRemainder) {\n      return;\n    }\n\n    moveByOffset(state, windowRemainder);\n  };\n\n  return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n  var scrollDroppable = _ref.scrollDroppable,\n      scrollWindow = _ref.scrollWindow,\n      move = _ref.move;\n  var fluidScroller = createFluidScroller({\n    scrollWindow: scrollWindow,\n    scrollDroppable: scrollDroppable\n  });\n  var jumpScroll = createJumpScroller({\n    move: move,\n    scrollWindow: scrollWindow,\n    scrollDroppable: scrollDroppable\n  });\n\n  var scroll = function scroll(state) {\n    if (state.phase !== 'DRAGGING') {\n      return;\n    }\n\n    if (state.movementMode === 'FLUID') {\n      fluidScroller.scroll(state);\n      return;\n    }\n\n    if (!state.scrollJumpRequest) {\n      return;\n    }\n\n    jumpScroll(state);\n  };\n\n  var scroller = {\n    scroll: scroll,\n    start: fluidScroller.start,\n    stop: fluidScroller.stop\n  };\n  return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n  var base = prefix$1 + \"-drag-handle\";\n  return {\n    base: base,\n    draggableId: base + \"-draggable-id\",\n    contextId: base + \"-context-id\"\n  };\n}();\nvar draggable = function () {\n  var base = prefix$1 + \"-draggable\";\n  return {\n    base: base,\n    contextId: base + \"-context-id\",\n    id: base + \"-id\"\n  };\n}();\nvar droppable = function () {\n  var base = prefix$1 + \"-droppable\";\n  return {\n    base: base,\n    contextId: base + \"-context-id\",\n    id: base + \"-id\"\n  };\n}();\nvar scrollContainer = {\n  contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n  return function (attribute) {\n    return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n  };\n};\n\nvar getStyles = function getStyles(rules, property) {\n  return rules.map(function (rule) {\n    var value = rule.styles[property];\n\n    if (!value) {\n      return '';\n    }\n\n    return rule.selector + \" { \" + value + \" }\";\n  }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n  var getSelector = makeGetSelector(contextId);\n\n  var dragHandle$1 = function () {\n    var grabCursor = \"\\n      cursor: -webkit-grab;\\n      cursor: grab;\\n    \";\n    return {\n      selector: getSelector(dragHandle.contextId),\n      styles: {\n        always: \"\\n          -webkit-touch-callout: none;\\n          -webkit-tap-highlight-color: rgba(0,0,0,0);\\n          touch-action: manipulation;\\n        \",\n        resting: grabCursor,\n        dragging: noPointerEvents,\n        dropAnimating: grabCursor\n      }\n    };\n  }();\n\n  var draggable$1 = function () {\n    var transition = \"\\n      transition: \" + transitions.outOfTheWay + \";\\n    \";\n    return {\n      selector: getSelector(draggable.contextId),\n      styles: {\n        dragging: transition,\n        dropAnimating: transition,\n        userCancel: transition\n      }\n    };\n  }();\n\n  var droppable$1 = {\n    selector: getSelector(droppable.contextId),\n    styles: {\n      always: \"overflow-anchor: none;\"\n    }\n  };\n  var body = {\n    selector: 'body',\n    styles: {\n      dragging: \"\\n        cursor: grabbing;\\n        cursor: -webkit-grabbing;\\n        user-select: none;\\n        -webkit-user-select: none;\\n        -moz-user-select: none;\\n        -ms-user-select: none;\\n        overflow-anchor: none;\\n      \"\n    }\n  };\n  var rules = [draggable$1, dragHandle$1, droppable$1, body];\n  return {\n    always: getStyles(rules, 'always'),\n    resting: getStyles(rules, 'resting'),\n    dragging: getStyles(rules, 'dragging'),\n    dropAnimating: getStyles(rules, 'dropAnimating'),\n    userCancel: getStyles(rules, 'userCancel')\n  };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar getHead = function getHead() {\n  var head = document.querySelector('head');\n  !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant(false) : void 0;\n  return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n  var el = document.createElement('style');\n\n  if (nonce) {\n    el.setAttribute('nonce', nonce);\n  }\n\n  el.type = 'text/css';\n  return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n  var styles = useMemo(function () {\n    return getStyles$1(contextId);\n  }, [contextId]);\n  var alwaysRef = useRef(null);\n  var dynamicRef = useRef(null);\n  var setDynamicStyle = useCallback(memoizeOne(function (proposed) {\n    var el = dynamicRef.current;\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n    el.textContent = proposed;\n  }), []);\n  var setAlwaysStyle = useCallback(function (proposed) {\n    var el = alwaysRef.current;\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n    el.textContent = proposed;\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant(false) : void 0;\n    var always = createStyleEl(nonce);\n    var dynamic = createStyleEl(nonce);\n    alwaysRef.current = always;\n    dynamicRef.current = dynamic;\n    always.setAttribute(prefix$1 + \"-always\", contextId);\n    dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n    getHead().appendChild(always);\n    getHead().appendChild(dynamic);\n    setAlwaysStyle(styles.always);\n    setDynamicStyle(styles.resting);\n    return function () {\n      var remove = function remove(ref) {\n        var current = ref.current;\n        !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant(false) : void 0;\n        getHead().removeChild(current);\n        ref.current = null;\n      };\n\n      remove(alwaysRef);\n      remove(dynamicRef);\n    };\n  }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n  var dragging = useCallback(function () {\n    return setDynamicStyle(styles.dragging);\n  }, [setDynamicStyle, styles.dragging]);\n  var dropping = useCallback(function (reason) {\n    if (reason === 'DROP') {\n      setDynamicStyle(styles.dropAnimating);\n      return;\n    }\n\n    setDynamicStyle(styles.userCancel);\n  }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n  var resting = useCallback(function () {\n    if (!dynamicRef.current) {\n      return;\n    }\n\n    setDynamicStyle(styles.resting);\n  }, [setDynamicStyle, styles.resting]);\n  var marshal = useMemo(function () {\n    return {\n      dragging: dragging,\n      dropping: dropping,\n      resting: resting\n    };\n  }, [dragging, dropping, resting]);\n  return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n  return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n  return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n  var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n  var possible = toArray(document.querySelectorAll(selector));\n\n  if (!possible.length) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : void 0;\n    return null;\n  }\n\n  var handle = find(possible, function (el) {\n    return el.getAttribute(dragHandle.draggableId) === draggableId;\n  });\n\n  if (!handle) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : void 0;\n    return null;\n  }\n\n  if (!isHtmlElement(handle)) {\n    process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n    return null;\n  }\n\n  return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n  var entriesRef = useRef({});\n  var recordRef = useRef(null);\n  var restoreFocusFrameRef = useRef(null);\n  var isMountedRef = useRef(false);\n  var register = useCallback(function register(id, focus) {\n    var entry = {\n      id: id,\n      focus: focus\n    };\n    entriesRef.current[id] = entry;\n    return function unregister() {\n      var entries = entriesRef.current;\n      var current = entries[id];\n\n      if (current !== entry) {\n        delete entries[id];\n      }\n    };\n  }, []);\n  var tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n    var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n    if (handle && handle !== document.activeElement) {\n      handle.focus();\n    }\n  }, [contextId]);\n  var tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n    if (recordRef.current === previous) {\n      recordRef.current = redirectTo;\n    }\n  }, []);\n  var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n    if (restoreFocusFrameRef.current) {\n      return;\n    }\n\n    if (!isMountedRef.current) {\n      return;\n    }\n\n    restoreFocusFrameRef.current = requestAnimationFrame(function () {\n      restoreFocusFrameRef.current = null;\n      var record = recordRef.current;\n\n      if (record) {\n        tryGiveFocus(record);\n      }\n    });\n  }, [tryGiveFocus]);\n  var tryRecordFocus = useCallback(function tryRecordFocus(id) {\n    recordRef.current = null;\n    var focused = document.activeElement;\n\n    if (!focused) {\n      return;\n    }\n\n    if (focused.getAttribute(dragHandle.draggableId) !== id) {\n      return;\n    }\n\n    recordRef.current = id;\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    isMountedRef.current = true;\n    return function clearFrameOnUnmount() {\n      isMountedRef.current = false;\n      var frameId = restoreFocusFrameRef.current;\n\n      if (frameId) {\n        cancelAnimationFrame(frameId);\n      }\n    };\n  }, []);\n  var marshal = useMemo(function () {\n    return {\n      register: register,\n      tryRecordFocus: tryRecordFocus,\n      tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n      tryShiftRecord: tryShiftRecord\n    };\n  }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n  return marshal;\n}\n\nfunction createRegistry() {\n  var entries = {\n    draggables: {},\n    droppables: {}\n  };\n  var subscribers = [];\n\n  function subscribe(cb) {\n    subscribers.push(cb);\n    return function unsubscribe() {\n      var index = subscribers.indexOf(cb);\n\n      if (index === -1) {\n        return;\n      }\n\n      subscribers.splice(index, 1);\n    };\n  }\n\n  function notify(event) {\n    if (subscribers.length) {\n      subscribers.forEach(function (cb) {\n        return cb(event);\n      });\n    }\n  }\n\n  function findDraggableById(id) {\n    return entries.draggables[id] || null;\n  }\n\n  function getDraggableById(id) {\n    var entry = findDraggableById(id);\n    !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n    return entry;\n  }\n\n  var draggableAPI = {\n    register: function register(entry) {\n      entries.draggables[entry.descriptor.id] = entry;\n      notify({\n        type: 'ADDITION',\n        value: entry\n      });\n    },\n    update: function update(entry, last) {\n      var current = entries.draggables[last.descriptor.id];\n\n      if (!current) {\n        return;\n      }\n\n      if (current.uniqueId !== entry.uniqueId) {\n        return;\n      }\n\n      delete entries.draggables[last.descriptor.id];\n      entries.draggables[entry.descriptor.id] = entry;\n    },\n    unregister: function unregister(entry) {\n      var draggableId = entry.descriptor.id;\n      var current = findDraggableById(draggableId);\n\n      if (!current) {\n        return;\n      }\n\n      if (entry.uniqueId !== current.uniqueId) {\n        return;\n      }\n\n      delete entries.draggables[draggableId];\n      notify({\n        type: 'REMOVAL',\n        value: entry\n      });\n    },\n    getById: getDraggableById,\n    findById: findDraggableById,\n    exists: function exists(id) {\n      return Boolean(findDraggableById(id));\n    },\n    getAllByType: function getAllByType(type) {\n      return values(entries.draggables).filter(function (entry) {\n        return entry.descriptor.type === type;\n      });\n    }\n  };\n\n  function findDroppableById(id) {\n    return entries.droppables[id] || null;\n  }\n\n  function getDroppableById(id) {\n    var entry = findDroppableById(id);\n    !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n    return entry;\n  }\n\n  var droppableAPI = {\n    register: function register(entry) {\n      entries.droppables[entry.descriptor.id] = entry;\n    },\n    unregister: function unregister(entry) {\n      var current = findDroppableById(entry.descriptor.id);\n\n      if (!current) {\n        return;\n      }\n\n      if (entry.uniqueId !== current.uniqueId) {\n        return;\n      }\n\n      delete entries.droppables[entry.descriptor.id];\n    },\n    getById: getDroppableById,\n    findById: findDroppableById,\n    exists: function exists(id) {\n      return Boolean(findDroppableById(id));\n    },\n    getAllByType: function getAllByType(type) {\n      return values(entries.droppables).filter(function (entry) {\n        return entry.descriptor.type === type;\n      });\n    }\n  };\n\n  function clean() {\n    entries.draggables = {};\n    entries.droppables = {};\n    subscribers.length = 0;\n  }\n\n  return {\n    draggable: draggableAPI,\n    droppable: droppableAPI,\n    subscribe: subscribe,\n    clean: clean\n  };\n}\n\nfunction useRegistry() {\n  var registry = useMemo(createRegistry, []);\n  useEffect(function () {\n    return function unmount() {\n      requestAnimationFrame(registry.clean);\n    };\n  }, [registry]);\n  return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = (function () {\n  var body = document.body;\n  !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant(false) : void 0;\n  return body;\n});\n\nvar visuallyHidden = {\n  position: 'absolute',\n  width: '1px',\n  height: '1px',\n  margin: '-1px',\n  border: '0',\n  padding: '0',\n  overflow: 'hidden',\n  clip: 'rect(0 0 0 0)',\n  'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n  return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n  var id = useMemo(function () {\n    return getId(contextId);\n  }, [contextId]);\n  var ref = useRef(null);\n  useEffect(function setup() {\n    var el = document.createElement('div');\n    ref.current = el;\n    el.id = id;\n    el.setAttribute('aria-live', 'assertive');\n    el.setAttribute('aria-atomic', 'true');\n\n    _extends(el.style, visuallyHidden);\n\n    getBodyElement().appendChild(el);\n    return function cleanup() {\n      setTimeout(function remove() {\n        var body = getBodyElement();\n\n        if (body.contains(el)) {\n          body.removeChild(el);\n        }\n\n        if (el === ref.current) {\n          ref.current = null;\n        }\n      });\n    };\n  }, [id]);\n  var announce = useCallback(function (message) {\n    var el = ref.current;\n\n    if (el) {\n      el.textContent = message;\n      return;\n    }\n\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      A screen reader message was trying to be announced but it was unable to do so.\\n      This can occur if you unmount your <DragDropContext /> in your onDragEnd.\\n      Consider calling provided.announce() before the unmount so that the instruction will\\n      not be lost for users relying on a screen reader.\\n\\n      Message not passed to screen reader:\\n\\n      \\\"\" + message + \"\\\"\\n    \") : void 0;\n  }, []);\n  return announce;\n}\n\nvar count = 0;\nvar defaults = {\n  separator: '::'\n};\nfunction reset() {\n  count = 0;\n}\nfunction useUniqueId(prefix, options) {\n  if (options === void 0) {\n    options = defaults;\n  }\n\n  return useMemo(function () {\n    return \"\" + prefix + options.separator + count++;\n  }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n  var contextId = _ref.contextId,\n      uniqueId = _ref.uniqueId;\n  return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n  var contextId = _ref2.contextId,\n      text = _ref2.text;\n  var uniqueId = useUniqueId('hidden-text', {\n    separator: '-'\n  });\n  var id = useMemo(function () {\n    return getElementId({\n      contextId: contextId,\n      uniqueId: uniqueId\n    });\n  }, [uniqueId, contextId]);\n  useEffect(function mount() {\n    var el = document.createElement('div');\n    el.id = id;\n    el.textContent = text;\n    el.style.display = 'none';\n    getBodyElement().appendChild(el);\n    return function unmount() {\n      var body = getBodyElement();\n\n      if (body.contains(el)) {\n        body.removeChild(el);\n      }\n    };\n  }, [id, text]);\n  return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5\",\n\t\"react-dom\": \"^16.8.5\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n  var result = semver.exec(value);\n  !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant(false) : void 0;\n  var major = Number(result[1]);\n  var minor = Number(result[2]);\n  var patch = Number(result[3]);\n  return {\n    major: major,\n    minor: minor,\n    patch: patch,\n    raw: value\n  };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n  if (actual.major > expected.major) {\n    return true;\n  }\n\n  if (actual.major < expected.major) {\n    return false;\n  }\n\n  if (actual.minor > expected.minor) {\n    return true;\n  }\n\n  if (actual.minor < expected.minor) {\n    return false;\n  }\n\n  return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n  var peerDep = getVersion(peerDepValue);\n  var actual = getVersion(actualValue);\n\n  if (isSatisfied(peerDep, actual)) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    React version: [\" + actual.raw + \"]\\n    does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n    This can result in run time bugs, and even fatal crashes\\n  \") : void 0;\n});\n\nvar suffix = \"\\n  We expect a html5 doctype: <!doctype html>\\n  This is to ensure consistent browser layout and measurement\\n\\n  More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n  var doctype = doc.doctype;\n\n  if (!doctype) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      No <!doctype html> found.\\n\\n      \" + suffix + \"\\n    \") : void 0;\n    return;\n  }\n\n  if (doctype.name.toLowerCase() !== 'html') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Unexpected <!doctype> found: (\" + doctype.name + \")\\n\\n      \" + suffix + \"\\n    \") : void 0;\n  }\n\n  if (doctype.publicId !== '') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Unexpected <!doctype> publicId found: (\" + doctype.publicId + \")\\n      A html5 doctype does not have a publicId\\n\\n      \" + suffix + \"\\n    \") : void 0;\n  }\n});\n\nfunction useDev(useHook) {\n  if (process.env.NODE_ENV !== 'production') {\n    useHook();\n  }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n  useDev(function () {\n    useEffect(function () {\n      try {\n        fn();\n      } catch (e) {\n        error(\"\\n          A setup problem was encountered.\\n\\n          > \" + e.message + \"\\n        \");\n      }\n    }, inputs);\n  });\n}\n\nfunction useStartupValidation() {\n  useDevSetupWarning(function () {\n    checkReactVersion(peerDependencies.react, React.version);\n    checkDoctype(document);\n  }, []);\n}\n\nfunction usePrevious(current) {\n  var ref = useRef(current);\n  useEffect(function () {\n    ref.current = current;\n  });\n  return ref;\n}\n\nfunction create() {\n  var lock = null;\n\n  function isClaimed() {\n    return Boolean(lock);\n  }\n\n  function isActive(value) {\n    return value === lock;\n  }\n\n  function claim(abandon) {\n    !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant(false) : void 0;\n    var newLock = {\n      abandon: abandon\n    };\n    lock = newLock;\n    return newLock;\n  }\n\n  function release() {\n    !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant(false) : void 0;\n    lock = null;\n  }\n\n  function tryAbandon() {\n    if (lock) {\n      lock.abandon();\n      release();\n    }\n  }\n\n  return {\n    isClaimed: isClaimed,\n    isActive: isActive,\n    claim: claim,\n    release: release,\n    tryAbandon: tryAbandon\n  };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n  if (preventedKeys[event.keyCode]) {\n    event.preventDefault();\n  }\n});\n\nvar supportedEventName = function () {\n  var base = 'visibilitychange';\n\n  if (typeof document === 'undefined') {\n    return base;\n  }\n\n  var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n  var supported = find(candidates, function (eventName) {\n    return \"on\" + eventName in document;\n  });\n  return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n  return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n  type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n  var cancel = _ref.cancel,\n      completed = _ref.completed,\n      getPhase = _ref.getPhase,\n      setPhase = _ref.setPhase;\n  return [{\n    eventName: 'mousemove',\n    fn: function fn(event) {\n      var button = event.button,\n          clientX = event.clientX,\n          clientY = event.clientY;\n\n      if (button !== primaryButton) {\n        return;\n      }\n\n      var point = {\n        x: clientX,\n        y: clientY\n      };\n      var phase = getPhase();\n\n      if (phase.type === 'DRAGGING') {\n        event.preventDefault();\n        phase.actions.move(point);\n        return;\n      }\n\n      !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant(false) : void 0;\n      var pending = phase.point;\n\n      if (!isSloppyClickThresholdExceeded(pending, point)) {\n        return;\n      }\n\n      event.preventDefault();\n      var actions = phase.actions.fluidLift(point);\n      setPhase({\n        type: 'DRAGGING',\n        actions: actions\n      });\n    }\n  }, {\n    eventName: 'mouseup',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      phase.actions.drop({\n        shouldBlockNextClick: true\n      });\n      completed();\n    }\n  }, {\n    eventName: 'mousedown',\n    fn: function fn(event) {\n      if (getPhase().type === 'DRAGGING') {\n        event.preventDefault();\n      }\n\n      cancel();\n    }\n  }, {\n    eventName: 'keydown',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type === 'PENDING') {\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === escape) {\n        event.preventDefault();\n        cancel();\n        return;\n      }\n\n      preventStandardKeyEvents(event);\n    }\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'scroll',\n    options: {\n      passive: true,\n      capture: false\n    },\n    fn: function fn() {\n      if (getPhase().type === 'PENDING') {\n        cancel();\n      }\n    }\n  }, {\n    eventName: 'webkitmouseforcedown',\n    fn: function fn(event) {\n      var phase = getPhase();\n      !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant(false) : void 0;\n\n      if (phase.actions.shouldRespectForcePress()) {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useMouseSensor(api) {\n  var phaseRef = useRef(idle$1);\n  var unbindEventsRef = useRef(noop);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'mousedown',\n      fn: function onMouseDown(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        if (event.button !== primaryButton) {\n          return;\n        }\n\n        if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var actions = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!actions) {\n          return;\n        }\n\n        event.preventDefault();\n        var point = {\n          x: event.clientX,\n          y: event.clientY\n        };\n        unbindEventsRef.current();\n        startPendingDrag(actions, point);\n      }\n    };\n  }, [api]);\n  var preventForcePressBinding = useMemo(function () {\n    return {\n      eventName: 'webkitmouseforcewillbegin',\n      fn: function fn(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        var id = api.findClosestDraggableId(event);\n\n        if (!id) {\n          return;\n        }\n\n        var options = api.findOptionsForDraggable(id);\n\n        if (!options) {\n          return;\n        }\n\n        if (options.shouldRespectForcePress) {\n          return;\n        }\n\n        if (!api.canGetLock(id)) {\n          return;\n        }\n\n        event.preventDefault();\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function listenForCapture() {\n    var options = {\n      passive: false,\n      capture: true\n    };\n    unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n  }, [preventForcePressBinding, startCaptureBinding]);\n  var stop = useCallback(function () {\n    var current = phaseRef.current;\n\n    if (current.type === 'IDLE') {\n      return;\n    }\n\n    phaseRef.current = idle$1;\n    unbindEventsRef.current();\n    listenForCapture();\n  }, [listenForCapture]);\n  var cancel = useCallback(function () {\n    var phase = phaseRef.current;\n    stop();\n\n    if (phase.type === 'DRAGGING') {\n      phase.actions.cancel({\n        shouldBlockNextClick: true\n      });\n    }\n\n    if (phase.type === 'PENDING') {\n      phase.actions.abort();\n    }\n  }, [stop]);\n  var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    var bindings = getCaptureBindings({\n      cancel: cancel,\n      completed: stop,\n      getPhase: function getPhase() {\n        return phaseRef.current;\n      },\n      setPhase: function setPhase(phase) {\n        phaseRef.current = phase;\n      }\n    });\n    unbindEventsRef.current = bindEvents(window, bindings, options);\n  }, [cancel, stop]);\n  var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n    !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n    phaseRef.current = {\n      type: 'PENDING',\n      point: point,\n      actions: actions\n    };\n    bindCapturingEvents();\n  }, [bindCapturingEvents]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n    };\n  }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n  function cancel() {\n    stop();\n    actions.cancel();\n  }\n\n  function drop() {\n    stop();\n    actions.drop();\n  }\n\n  return [{\n    eventName: 'keydown',\n    fn: function fn(event) {\n      if (event.keyCode === escape) {\n        event.preventDefault();\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === space) {\n        event.preventDefault();\n        drop();\n        return;\n      }\n\n      if (event.keyCode === arrowDown) {\n        event.preventDefault();\n        actions.moveDown();\n        return;\n      }\n\n      if (event.keyCode === arrowUp) {\n        event.preventDefault();\n        actions.moveUp();\n        return;\n      }\n\n      if (event.keyCode === arrowRight) {\n        event.preventDefault();\n        actions.moveRight();\n        return;\n      }\n\n      if (event.keyCode === arrowLeft) {\n        event.preventDefault();\n        actions.moveLeft();\n        return;\n      }\n\n      if (scrollJumpKeys[event.keyCode]) {\n        event.preventDefault();\n        return;\n      }\n\n      preventStandardKeyEvents(event);\n    }\n  }, {\n    eventName: 'mousedown',\n    fn: cancel\n  }, {\n    eventName: 'mouseup',\n    fn: cancel\n  }, {\n    eventName: 'click',\n    fn: cancel\n  }, {\n    eventName: 'touchstart',\n    fn: cancel\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'wheel',\n    fn: cancel,\n    options: {\n      passive: true\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useKeyboardSensor(api) {\n  var unbindEventsRef = useRef(noop$1);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'keydown',\n      fn: function onKeyDown(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        if (event.keyCode !== space) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var preDrag = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!preDrag) {\n          return;\n        }\n\n        event.preventDefault();\n        var isCapturing = true;\n        var actions = preDrag.snapLift();\n        unbindEventsRef.current();\n\n        function stop() {\n          !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant(false) : void 0;\n          isCapturing = false;\n          unbindEventsRef.current();\n          listenForCapture();\n        }\n\n        unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n          capture: true,\n          passive: false\n        });\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function tryStartCapture() {\n    var options = {\n      passive: false,\n      capture: true\n    };\n    unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n  }, [startCaptureBinding]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n    };\n  }, [listenForCapture]);\n}\n\nvar idle$2 = {\n  type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n  var cancel = _ref.cancel,\n      getPhase = _ref.getPhase;\n  return [{\n    eventName: 'orientationchange',\n    fn: cancel\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'contextmenu',\n    fn: function fn(event) {\n      event.preventDefault();\n    }\n  }, {\n    eventName: 'keydown',\n    fn: function fn(event) {\n      if (getPhase().type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === escape) {\n        event.preventDefault();\n      }\n\n      cancel();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction getHandleBindings(_ref2) {\n  var cancel = _ref2.cancel,\n      completed = _ref2.completed,\n      getPhase = _ref2.getPhase;\n  return [{\n    eventName: 'touchmove',\n    options: {\n      capture: false\n    },\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      phase.hasMoved = true;\n      var _event$touches$ = event.touches[0],\n          clientX = _event$touches$.clientX,\n          clientY = _event$touches$.clientY;\n      var point = {\n        x: clientX,\n        y: clientY\n      };\n      event.preventDefault();\n      phase.actions.move(point);\n    }\n  }, {\n    eventName: 'touchend',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      phase.actions.drop({\n        shouldBlockNextClick: true\n      });\n      completed();\n    }\n  }, {\n    eventName: 'touchcancel',\n    fn: function fn(event) {\n      if (getPhase().type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      cancel();\n    }\n  }, {\n    eventName: 'touchforcechange',\n    fn: function fn(event) {\n      var phase = getPhase();\n      !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n      var touch = event.touches[0];\n\n      if (!touch) {\n        return;\n      }\n\n      var isForcePress = touch.force >= forcePressThreshold;\n\n      if (!isForcePress) {\n        return;\n      }\n\n      var shouldRespect = phase.actions.shouldRespectForcePress();\n\n      if (phase.type === 'PENDING') {\n        if (shouldRespect) {\n          cancel();\n        }\n\n        return;\n      }\n\n      if (shouldRespect) {\n        if (phase.hasMoved) {\n          event.preventDefault();\n          return;\n        }\n\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useMouseSensor$1(api) {\n  var phaseRef = useRef(idle$2);\n  var unbindEventsRef = useRef(noop);\n  var getPhase = useCallback(function getPhase() {\n    return phaseRef.current;\n  }, []);\n  var setPhase = useCallback(function setPhase(phase) {\n    phaseRef.current = phase;\n  }, []);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'touchstart',\n      fn: function onTouchStart(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var actions = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!actions) {\n          return;\n        }\n\n        var touch = event.touches[0];\n        var clientX = touch.clientX,\n            clientY = touch.clientY;\n        var point = {\n          x: clientX,\n          y: clientY\n        };\n        unbindEventsRef.current();\n        startPendingDrag(actions, point);\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function listenForCapture() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n  }, [startCaptureBinding]);\n  var stop = useCallback(function () {\n    var current = phaseRef.current;\n\n    if (current.type === 'IDLE') {\n      return;\n    }\n\n    if (current.type === 'PENDING') {\n      clearTimeout(current.longPressTimerId);\n    }\n\n    setPhase(idle$2);\n    unbindEventsRef.current();\n    listenForCapture();\n  }, [listenForCapture, setPhase]);\n  var cancel = useCallback(function () {\n    var phase = phaseRef.current;\n    stop();\n\n    if (phase.type === 'DRAGGING') {\n      phase.actions.cancel({\n        shouldBlockNextClick: true\n      });\n    }\n\n    if (phase.type === 'PENDING') {\n      phase.actions.abort();\n    }\n  }, [stop]);\n  var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    var args = {\n      cancel: cancel,\n      completed: stop,\n      getPhase: getPhase\n    };\n    var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n    var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n    unbindEventsRef.current = function unbindAll() {\n      unbindTarget();\n      unbindWindow();\n    };\n  }, [cancel, getPhase, stop]);\n  var startDragging = useCallback(function startDragging() {\n    var phase = getPhase();\n    !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant(false) : void 0;\n    var actions = phase.actions.fluidLift(phase.point);\n    setPhase({\n      type: 'DRAGGING',\n      actions: actions,\n      hasMoved: false\n    });\n  }, [getPhase, setPhase]);\n  var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n    !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n    var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n    setPhase({\n      type: 'PENDING',\n      point: point,\n      actions: actions,\n      longPressTimerId: longPressTimerId\n    });\n    bindCapturingEvents();\n  }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n      var phase = getPhase();\n\n      if (phase.type === 'PENDING') {\n        clearTimeout(phase.longPressTimerId);\n        setPhase(idle$2);\n      }\n    };\n  }, [getPhase, listenForCapture, setPhase]);\n  useIsomorphicLayoutEffect(function webkitHack() {\n    var unbind = bindEvents(window, [{\n      eventName: 'touchmove',\n      fn: function fn() {},\n      options: {\n        capture: false,\n        passive: false\n      }\n    }]);\n    return unbind;\n  }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n  useDev(function () {\n    var previousRef = usePrevious(sensorHooks);\n    useDevSetupWarning(function () {\n      !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n    });\n  });\n}\n\nvar interactiveTagNames = {\n  input: true,\n  button: true,\n  textarea: true,\n  select: true,\n  option: true,\n  optgroup: true,\n  video: true,\n  audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n  if (current == null) {\n    return false;\n  }\n\n  var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n  if (hasAnInteractiveTag) {\n    return true;\n  }\n\n  var attribute = current.getAttribute('contenteditable');\n\n  if (attribute === 'true' || attribute === '') {\n    return true;\n  }\n\n  if (current === parent) {\n    return false;\n  }\n\n  return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n  var target = event.target;\n\n  if (!isHtmlElement(target)) {\n    return false;\n  }\n\n  return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n  return getRect(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n  return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n  var base = 'matches';\n\n  if (typeof document === 'undefined') {\n    return base;\n  }\n\n  var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n  var value = find(candidates, function (name) {\n    return name in Element.prototype;\n  });\n  return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n  if (el == null) {\n    return null;\n  }\n\n  if (el[supportedMatchesName](selector)) {\n    return el;\n  }\n\n  return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n  if (el.closest) {\n    return el.closest(selector);\n  }\n\n  return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n  return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n  var target = event.target;\n\n  if (!isElement(target)) {\n    process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n    return null;\n  }\n\n  var selector = getSelector(contextId);\n  var handle = closest$1(target, selector);\n\n  if (!handle) {\n    return null;\n  }\n\n  if (!isHtmlElement(handle)) {\n    process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n    return null;\n  }\n\n  return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n  var handle = findClosestDragHandleFromEvent(contextId, event);\n\n  if (!handle) {\n    return null;\n  }\n\n  return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n  var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n  var possible = toArray(document.querySelectorAll(selector));\n  var draggable$1 = find(possible, function (el) {\n    return el.getAttribute(draggable.id) === draggableId;\n  });\n\n  if (!draggable$1) {\n    return null;\n  }\n\n  if (!isHtmlElement(draggable$1)) {\n    process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n    return null;\n  }\n\n  return draggable$1;\n}\n\nfunction preventDefault(event) {\n  event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n  var expected = _ref.expected,\n      phase = _ref.phase,\n      isLockActive = _ref.isLockActive,\n      shouldWarn = _ref.shouldWarn;\n\n  if (!isLockActive()) {\n    if (shouldWarn) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Cannot perform action.\\n        The sensor no longer has an action lock.\\n\\n        Tips:\\n\\n        - Throw away your action handlers when forceStop() is called\\n        - Check actions.isActive() if you really need to\\n      \") : void 0;\n    }\n\n    return false;\n  }\n\n  if (expected !== phase) {\n    if (shouldWarn) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Cannot perform action.\\n        The actions you used belong to an outdated phase\\n\\n        Current phase: \" + expected + \"\\n        You called an action from outdated phase: \" + phase + \"\\n\\n        Tips:\\n\\n        - Do not use preDragActions actions after calling preDragActions.lift()\\n      \") : void 0;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction canStart(_ref2) {\n  var lockAPI = _ref2.lockAPI,\n      store = _ref2.store,\n      registry = _ref2.registry,\n      draggableId = _ref2.draggableId;\n\n  if (lockAPI.isClaimed()) {\n    return false;\n  }\n\n  var entry = registry.draggable.findById(draggableId);\n\n  if (!entry) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable with id: \" + draggableId) : void 0;\n    return false;\n  }\n\n  if (!entry.options.isEnabled) {\n    return false;\n  }\n\n  if (!canStartDrag(store.getState(), draggableId)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction tryStart(_ref3) {\n  var lockAPI = _ref3.lockAPI,\n      contextId = _ref3.contextId,\n      store = _ref3.store,\n      registry = _ref3.registry,\n      draggableId = _ref3.draggableId,\n      forceSensorStop = _ref3.forceSensorStop,\n      sourceEvent = _ref3.sourceEvent;\n  var shouldStart = canStart({\n    lockAPI: lockAPI,\n    store: store,\n    registry: registry,\n    draggableId: draggableId\n  });\n\n  if (!shouldStart) {\n    return null;\n  }\n\n  var entry = registry.draggable.getById(draggableId);\n  var el = findDraggable(contextId, entry.descriptor.id);\n\n  if (!el) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n    return null;\n  }\n\n  if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n    return null;\n  }\n\n  var lock = lockAPI.claim(forceSensorStop || noop);\n  var phase = 'PRE_DRAG';\n\n  function getShouldRespectForcePress() {\n    return entry.options.shouldRespectForcePress;\n  }\n\n  function isLockActive() {\n    return lockAPI.isActive(lock);\n  }\n\n  function tryDispatch(expected, getAction) {\n    if (_isActive({\n      expected: expected,\n      phase: phase,\n      isLockActive: isLockActive,\n      shouldWarn: true\n    })) {\n      store.dispatch(getAction());\n    }\n  }\n\n  var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n  function lift$1(args) {\n    function completed() {\n      lockAPI.release();\n      phase = 'COMPLETED';\n    }\n\n    if (phase !== 'PRE_DRAG') {\n      completed();\n      !(phase === 'PRE_DRAG') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant(false) : void 0;\n    }\n\n    store.dispatch(lift(args.liftActionArgs));\n    phase = 'DRAGGING';\n\n    function finish(reason, options) {\n      if (options === void 0) {\n        options = {\n          shouldBlockNextClick: false\n        };\n      }\n\n      args.cleanup();\n\n      if (options.shouldBlockNextClick) {\n        var unbind = bindEvents(window, [{\n          eventName: 'click',\n          fn: preventDefault,\n          options: {\n            once: true,\n            passive: false,\n            capture: true\n          }\n        }]);\n        setTimeout(unbind);\n      }\n\n      completed();\n      store.dispatch(drop({\n        reason: reason\n      }));\n    }\n\n    return _extends({\n      isActive: function isActive() {\n        return _isActive({\n          expected: 'DRAGGING',\n          phase: phase,\n          isLockActive: isLockActive,\n          shouldWarn: false\n        });\n      },\n      shouldRespectForcePress: getShouldRespectForcePress,\n      drop: function drop(options) {\n        return finish('DROP', options);\n      },\n      cancel: function cancel(options) {\n        return finish('CANCEL', options);\n      }\n    }, args.actions);\n  }\n\n  function fluidLift(clientSelection) {\n    var move$1 = rafSchd(function (client) {\n      tryDispatchWhenDragging(function () {\n        return move({\n          client: client\n        });\n      });\n    });\n    var api = lift$1({\n      liftActionArgs: {\n        id: draggableId,\n        clientSelection: clientSelection,\n        movementMode: 'FLUID'\n      },\n      cleanup: function cleanup() {\n        return move$1.cancel();\n      },\n      actions: {\n        move: move$1\n      }\n    });\n    return _extends({}, api, {\n      move: move$1\n    });\n  }\n\n  function snapLift() {\n    var actions = {\n      moveUp: function moveUp$1() {\n        return tryDispatchWhenDragging(moveUp);\n      },\n      moveRight: function moveRight$1() {\n        return tryDispatchWhenDragging(moveRight);\n      },\n      moveDown: function moveDown$1() {\n        return tryDispatchWhenDragging(moveDown);\n      },\n      moveLeft: function moveLeft$1() {\n        return tryDispatchWhenDragging(moveLeft);\n      }\n    };\n    return lift$1({\n      liftActionArgs: {\n        id: draggableId,\n        clientSelection: getBorderBoxCenterPosition(el),\n        movementMode: 'SNAP'\n      },\n      cleanup: noop,\n      actions: actions\n    });\n  }\n\n  function abortPreDrag() {\n    var shouldRelease = _isActive({\n      expected: 'PRE_DRAG',\n      phase: phase,\n      isLockActive: isLockActive,\n      shouldWarn: true\n    });\n\n    if (shouldRelease) {\n      lockAPI.release();\n    }\n  }\n\n  var preDrag = {\n    isActive: function isActive() {\n      return _isActive({\n        expected: 'PRE_DRAG',\n        phase: phase,\n        isLockActive: isLockActive,\n        shouldWarn: false\n      });\n    },\n    shouldRespectForcePress: getShouldRespectForcePress,\n    fluidLift: fluidLift,\n    snapLift: snapLift,\n    abort: abortPreDrag\n  };\n  return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useMouseSensor$1];\nfunction useSensorMarshal(_ref4) {\n  var contextId = _ref4.contextId,\n      store = _ref4.store,\n      registry = _ref4.registry,\n      customSensors = _ref4.customSensors,\n      enableDefaultSensors = _ref4.enableDefaultSensors;\n  var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n  var lockAPI = useState(function () {\n    return create();\n  })[0];\n  var tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n    if (previous.isDragging && !current.isDragging) {\n      lockAPI.tryAbandon();\n    }\n  }, [lockAPI]);\n  useIsomorphicLayoutEffect(function listenToStore() {\n    var previous = store.getState();\n    var unsubscribe = store.subscribe(function () {\n      var current = store.getState();\n      tryAbandonLock(previous, current);\n      previous = current;\n    });\n    return unsubscribe;\n  }, [lockAPI, store, tryAbandonLock]);\n  useIsomorphicLayoutEffect(function () {\n    return lockAPI.tryAbandon;\n  }, [lockAPI.tryAbandon]);\n  var canGetLock = useCallback(function (draggableId) {\n    return canStart({\n      lockAPI: lockAPI,\n      registry: registry,\n      store: store,\n      draggableId: draggableId\n    });\n  }, [lockAPI, registry, store]);\n  var tryGetLock = useCallback(function (draggableId, forceStop, options) {\n    return tryStart({\n      lockAPI: lockAPI,\n      registry: registry,\n      contextId: contextId,\n      store: store,\n      draggableId: draggableId,\n      forceSensorStop: forceStop,\n      sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n    });\n  }, [contextId, lockAPI, registry, store]);\n  var findClosestDraggableId = useCallback(function (event) {\n    return tryGetClosestDraggableIdFromEvent(contextId, event);\n  }, [contextId]);\n  var findOptionsForDraggable = useCallback(function (id) {\n    var entry = registry.draggable.findById(id);\n    return entry ? entry.options : null;\n  }, [registry.draggable]);\n  var tryReleaseLock = useCallback(function tryReleaseLock() {\n    if (!lockAPI.isClaimed()) {\n      return;\n    }\n\n    lockAPI.tryAbandon();\n\n    if (store.getState().phase !== 'IDLE') {\n      store.dispatch(flush());\n    }\n  }, [lockAPI, store]);\n  var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n  var api = useMemo(function () {\n    return {\n      canGetLock: canGetLock,\n      tryGetLock: tryGetLock,\n      findClosestDraggableId: findClosestDraggableId,\n      findOptionsForDraggable: findOptionsForDraggable,\n      tryReleaseLock: tryReleaseLock,\n      isLockClaimed: isLockClaimed\n    };\n  }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n  useValidateSensorHooks(useSensors);\n\n  for (var i = 0; i < useSensors.length; i++) {\n    useSensors[i](api);\n  }\n}\n\nvar createResponders = function createResponders(props) {\n  return {\n    onBeforeCapture: props.onBeforeCapture,\n    onBeforeDragStart: props.onBeforeDragStart,\n    onDragStart: props.onDragStart,\n    onDragEnd: props.onDragEnd,\n    onDragUpdate: props.onDragUpdate\n  };\n};\n\nfunction getStore(lazyRef) {\n  !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant(false) : void 0;\n  return lazyRef.current;\n}\n\nfunction App(props) {\n  var contextId = props.contextId,\n      setCallbacks = props.setCallbacks,\n      sensors = props.sensors,\n      nonce = props.nonce,\n      dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n  var lazyStoreRef = useRef(null);\n  useStartupValidation();\n  var lastPropsRef = usePrevious(props);\n  var getResponders = useCallback(function () {\n    return createResponders(lastPropsRef.current);\n  }, [lastPropsRef]);\n  var announce = useAnnouncer(contextId);\n  var dragHandleUsageInstructionsId = useHiddenTextElement({\n    contextId: contextId,\n    text: dragHandleUsageInstructions\n  });\n  var styleMarshal = useStyleMarshal(contextId, nonce);\n  var lazyDispatch = useCallback(function (action) {\n    getStore(lazyStoreRef).dispatch(action);\n  }, []);\n  var marshalCallbacks = useMemo(function () {\n    return bindActionCreators({\n      publishWhileDragging: publishWhileDragging,\n      updateDroppableScroll: updateDroppableScroll,\n      updateDroppableIsEnabled: updateDroppableIsEnabled,\n      updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n      collectionStarting: collectionStarting\n    }, lazyDispatch);\n  }, [lazyDispatch]);\n  var registry = useRegistry();\n  var dimensionMarshal = useMemo(function () {\n    return createDimensionMarshal(registry, marshalCallbacks);\n  }, [registry, marshalCallbacks]);\n  var autoScroller = useMemo(function () {\n    return createAutoScroller(_extends({\n      scrollWindow: scrollWindow,\n      scrollDroppable: dimensionMarshal.scrollDroppable\n    }, bindActionCreators({\n      move: move\n    }, lazyDispatch)));\n  }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n  var focusMarshal = useFocusMarshal(contextId);\n  var store = useMemo(function () {\n    return createStore({\n      announce: announce,\n      autoScroller: autoScroller,\n      dimensionMarshal: dimensionMarshal,\n      focusMarshal: focusMarshal,\n      getResponders: getResponders,\n      styleMarshal: styleMarshal\n    });\n  }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n      process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n    }\n  }\n\n  lazyStoreRef.current = store;\n  var tryResetStore = useCallback(function () {\n    var current = getStore(lazyStoreRef);\n    var state = current.getState();\n\n    if (state.phase !== 'IDLE') {\n      current.dispatch(flush());\n    }\n  }, []);\n  var isDragging = useCallback(function () {\n    var state = getStore(lazyStoreRef).getState();\n    return state.isDragging || state.phase === 'DROP_ANIMATING';\n  }, []);\n  var appCallbacks = useMemo(function () {\n    return {\n      isDragging: isDragging,\n      tryAbort: tryResetStore\n    };\n  }, [isDragging, tryResetStore]);\n  setCallbacks(appCallbacks);\n  var getCanLift = useCallback(function (id) {\n    return canStartDrag(getStore(lazyStoreRef).getState(), id);\n  }, []);\n  var getIsMovementAllowed = useCallback(function () {\n    return isMovementAllowed(getStore(lazyStoreRef).getState());\n  }, []);\n  var appContext = useMemo(function () {\n    return {\n      marshal: dimensionMarshal,\n      focus: focusMarshal,\n      contextId: contextId,\n      canLift: getCanLift,\n      isMovementAllowed: getIsMovementAllowed,\n      dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n      registry: registry\n    };\n  }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n  useSensorMarshal({\n    contextId: contextId,\n    store: store,\n    registry: registry,\n    customSensors: sensors,\n    enableDefaultSensors: props.enableDefaultSensors !== false\n  });\n  useEffect(function () {\n    return tryResetStore;\n  }, [tryResetStore]);\n  return React.createElement(AppContext.Provider, {\n    value: appContext\n  }, React.createElement(Provider, {\n    context: StoreContext,\n    store: store\n  }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n  count$1 = 0;\n}\nfunction useInstanceCount() {\n  return useMemo(function () {\n    return \"\" + count$1++;\n  }, []);\n}\n\nfunction resetServerContext() {\n  reset$1();\n  reset();\n}\nfunction DragDropContext(props) {\n  var contextId = useInstanceCount();\n  var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n  return React.createElement(ErrorBoundary, null, function (setCallbacks) {\n    return React.createElement(App, {\n      nonce: props.nonce,\n      contextId: contextId,\n      setCallbacks: setCallbacks,\n      dragHandleUsageInstructions: dragHandleUsageInstructions,\n      enableDefaultSensors: props.enableDefaultSensors,\n      sensors: props.sensors,\n      onBeforeCapture: props.onBeforeCapture,\n      onBeforeDragStart: props.onBeforeDragStart,\n      onDragStart: props.onDragStart,\n      onDragUpdate: props.onDragUpdate,\n      onDragEnd: props.onDragEnd\n    }, props.children);\n  });\n}\n\nvar isEqual$1 = function isEqual(base) {\n  return function (value) {\n    return base === value;\n  };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n  return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n  return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n  var style = window.getComputedStyle(el);\n  var overflow = {\n    overflowX: style.overflowX,\n    overflowY: style.overflowY\n  };\n  return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n  if (process.env.NODE_ENV === 'production') {\n    return false;\n  }\n\n  var body = getBodyElement();\n  var html = document.documentElement;\n  !html ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n  if (!isElementScrollable(body)) {\n    return false;\n  }\n\n  var htmlStyle = window.getComputedStyle(html);\n  var htmlOverflow = {\n    overflowX: htmlStyle.overflowX,\n    overflowY: htmlStyle.overflowY\n  };\n\n  if (isBoth(htmlOverflow, isVisible$1)) {\n    return false;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    We have detected that your <body> element might be a scroll container.\\n    We have found no reliable way of detecting whether the <body> element is a scroll container.\\n    Under most circumstances a <body> scroll bar will be on the <html> element (document.documentElement)\\n\\n    Because we cannot determine if the <body> is a scroll container, and generally it is not one,\\n    we will be treating the <body> as *not* a scroll container\\n\\n    More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n  \") : void 0;\n  return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n  if (el == null) {\n    return null;\n  }\n\n  if (el === document.body) {\n    return isBodyScrollable() ? el : null;\n  }\n\n  if (el === document.documentElement) {\n    return null;\n  }\n\n  if (!isElementScrollable(el)) {\n    return getClosestScrollable(el.parentElement);\n  }\n\n  return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n  if (!scrollable) {\n    return;\n  }\n\n  var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n  if (!anotherScrollParent) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    Droppable: unsupported nested scroll container detected.\\n    A Droppable can only have one scroll parent (which can be itself)\\n    Nested scroll containers are currently not supported.\\n\\n    We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n  \") : void 0;\n});\n\nvar getScroll$1 = (function (el) {\n  return {\n    x: el.scrollLeft,\n    y: el.scrollTop\n  };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n  if (!el) {\n    return false;\n  }\n\n  var style = window.getComputedStyle(el);\n\n  if (style.position === 'fixed') {\n    return true;\n  }\n\n  return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n  var closestScrollable = getClosestScrollable(start);\n  var isFixedOnPage = getIsFixed(start);\n  return {\n    closestScrollable: closestScrollable,\n    isFixedOnPage: isFixedOnPage\n  };\n});\n\nvar getDroppableDimension = (function (_ref) {\n  var descriptor = _ref.descriptor,\n      isEnabled = _ref.isEnabled,\n      isCombineEnabled = _ref.isCombineEnabled,\n      isFixedOnPage = _ref.isFixedOnPage,\n      direction = _ref.direction,\n      client = _ref.client,\n      page = _ref.page,\n      closest = _ref.closest;\n\n  var frame = function () {\n    if (!closest) {\n      return null;\n    }\n\n    var scrollSize = closest.scrollSize,\n        frameClient = closest.client;\n    var maxScroll = getMaxScroll({\n      scrollHeight: scrollSize.scrollHeight,\n      scrollWidth: scrollSize.scrollWidth,\n      height: frameClient.paddingBox.height,\n      width: frameClient.paddingBox.width\n    });\n    return {\n      pageMarginBox: closest.page.marginBox,\n      frameClient: frameClient,\n      scrollSize: scrollSize,\n      shouldClipSubject: closest.shouldClipSubject,\n      scroll: {\n        initial: closest.scroll,\n        current: closest.scroll,\n        max: maxScroll,\n        diff: {\n          value: origin,\n          displacement: origin\n        }\n      }\n    };\n  }();\n\n  var axis = direction === 'vertical' ? vertical : horizontal;\n  var subject = getSubject({\n    page: page,\n    withPlaceholder: null,\n    axis: axis,\n    frame: frame\n  });\n  var dimension = {\n    descriptor: descriptor,\n    isCombineEnabled: isCombineEnabled,\n    isFixedOnPage: isFixedOnPage,\n    axis: axis,\n    isEnabled: isEnabled,\n    client: client,\n    page: page,\n    frame: frame,\n    subject: subject\n  };\n  return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n  var base = getBox(targetRef);\n\n  if (!closestScrollable) {\n    return base;\n  }\n\n  if (targetRef !== closestScrollable) {\n    return base;\n  }\n\n  var top = base.paddingBox.top - closestScrollable.scrollTop;\n  var left = base.paddingBox.left - closestScrollable.scrollLeft;\n  var bottom = top + closestScrollable.scrollHeight;\n  var right = left + closestScrollable.scrollWidth;\n  var paddingBox = {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left\n  };\n  var borderBox = expand(paddingBox, base.border);\n  var client = createBox({\n    borderBox: borderBox,\n    margin: base.margin,\n    border: base.border,\n    padding: base.padding\n  });\n  return client;\n};\n\nvar getDimension = (function (_ref) {\n  var ref = _ref.ref,\n      descriptor = _ref.descriptor,\n      env = _ref.env,\n      windowScroll = _ref.windowScroll,\n      direction = _ref.direction,\n      isDropDisabled = _ref.isDropDisabled,\n      isCombineEnabled = _ref.isCombineEnabled,\n      shouldClipSubject = _ref.shouldClipSubject;\n  var closestScrollable = env.closestScrollable;\n  var client = getClient(ref, closestScrollable);\n  var page = withScroll(client, windowScroll);\n\n  var closest = function () {\n    if (!closestScrollable) {\n      return null;\n    }\n\n    var frameClient = getBox(closestScrollable);\n    var scrollSize = {\n      scrollHeight: closestScrollable.scrollHeight,\n      scrollWidth: closestScrollable.scrollWidth\n    };\n    return {\n      client: frameClient,\n      page: withScroll(frameClient, windowScroll),\n      scroll: getScroll$1(closestScrollable),\n      scrollSize: scrollSize,\n      shouldClipSubject: shouldClipSubject\n    };\n  }();\n\n  var dimension = getDroppableDimension({\n    descriptor: descriptor,\n    isEnabled: !isDropDisabled,\n    isCombineEnabled: isCombineEnabled,\n    isFixedOnPage: env.isFixedOnPage,\n    direction: direction,\n    client: client,\n    page: page,\n    closest: closest\n  });\n  return dimension;\n});\n\nvar immediate = {\n  passive: false\n};\nvar delayed = {\n  passive: true\n};\nvar getListenerOptions = (function (options) {\n  return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n  var result = useContext(Context);\n  !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant(false) : void 0;\n  return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n  return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n  var whileDraggingRef = useRef(null);\n  var appContext = useRequiredContext(AppContext);\n  var uniqueId = useUniqueId('droppable');\n  var registry = appContext.registry,\n      marshal = appContext.marshal;\n  var previousRef = usePrevious(args);\n  var descriptor = useMemo(function () {\n    return {\n      id: args.droppableId,\n      type: args.type,\n      mode: args.mode\n    };\n  }, [args.droppableId, args.mode, args.type]);\n  var publishedDescriptorRef = useRef(descriptor);\n  var memoizedUpdateScroll = useMemo(function () {\n    return memoizeOne(function (x, y) {\n      !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant(false) : void 0;\n      var scroll = {\n        x: x,\n        y: y\n      };\n      marshal.updateDroppableScroll(descriptor.id, scroll);\n    });\n  }, [descriptor.id, marshal]);\n  var getClosestScroll = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n\n    if (!dragging || !dragging.env.closestScrollable) {\n      return origin;\n    }\n\n    return getScroll$1(dragging.env.closestScrollable);\n  }, []);\n  var updateScroll = useCallback(function () {\n    var scroll = getClosestScroll();\n    memoizedUpdateScroll(scroll.x, scroll.y);\n  }, [getClosestScroll, memoizedUpdateScroll]);\n  var scheduleScrollUpdate = useMemo(function () {\n    return rafSchd(updateScroll);\n  }, [updateScroll]);\n  var onClosestScroll = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant(false) : void 0;\n    var options = dragging.scrollOptions;\n\n    if (options.shouldPublishImmediately) {\n      updateScroll();\n      return;\n    }\n\n    scheduleScrollUpdate();\n  }, [scheduleScrollUpdate, updateScroll]);\n  var getDimensionAndWatchScroll = useCallback(function (windowScroll, options) {\n    !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant(false) : void 0;\n    var previous = previousRef.current;\n    var ref = previous.getDroppableRef();\n    !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant(false) : void 0;\n    var env = getEnv(ref);\n    var dragging = {\n      ref: ref,\n      descriptor: descriptor,\n      env: env,\n      scrollOptions: options\n    };\n    whileDraggingRef.current = dragging;\n    var dimension = getDimension({\n      ref: ref,\n      descriptor: descriptor,\n      env: env,\n      windowScroll: windowScroll,\n      direction: previous.direction,\n      isDropDisabled: previous.isDropDisabled,\n      isCombineEnabled: previous.isCombineEnabled,\n      shouldClipSubject: !previous.ignoreContainerClipping\n    });\n    var scrollable = env.closestScrollable;\n\n    if (scrollable) {\n      scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n      scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n      if (process.env.NODE_ENV !== 'production') {\n        checkForNestedScrollContainers(scrollable);\n      }\n    }\n\n    return dimension;\n  }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n  var getScrollWhileDragging = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant(false) : void 0;\n    return getScroll$1(closest);\n  }, []);\n  var dragStopped = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant(false) : void 0;\n    var closest = getClosestScrollableFromDrag(dragging);\n    whileDraggingRef.current = null;\n\n    if (!closest) {\n      return;\n    }\n\n    scheduleScrollUpdate.cancel();\n    closest.removeAttribute(scrollContainer.contextId);\n    closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n  }, [onClosestScroll, scheduleScrollUpdate]);\n  var scroll = useCallback(function (change) {\n    var dragging = whileDraggingRef.current;\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant(false) : void 0;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant(false) : void 0;\n    closest.scrollTop += change.y;\n    closest.scrollLeft += change.x;\n  }, []);\n  var callbacks = useMemo(function () {\n    return {\n      getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n      getScrollWhileDragging: getScrollWhileDragging,\n      dragStopped: dragStopped,\n      scroll: scroll\n    };\n  }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n  var entry = useMemo(function () {\n    return {\n      uniqueId: uniqueId,\n      descriptor: descriptor,\n      callbacks: callbacks\n    };\n  }, [callbacks, descriptor, uniqueId]);\n  useIsomorphicLayoutEffect(function () {\n    publishedDescriptorRef.current = entry.descriptor;\n    registry.droppable.register(entry);\n    return function () {\n      if (whileDraggingRef.current) {\n        process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n        dragStopped();\n      }\n\n      registry.droppable.unregister(entry);\n    };\n  }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n  useIsomorphicLayoutEffect(function () {\n    if (!whileDraggingRef.current) {\n      return;\n    }\n\n    marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n  }, [args.isDropDisabled, marshal]);\n  useIsomorphicLayoutEffect(function () {\n    if (!whileDraggingRef.current) {\n      return;\n    }\n\n    marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n  }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n  width: 0,\n  height: 0,\n  margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n  var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n      placeholder = _ref.placeholder,\n      animate = _ref.animate;\n\n  if (isAnimatingOpenOnMount) {\n    return empty;\n  }\n\n  if (animate === 'close') {\n    return empty;\n  }\n\n  return {\n    height: placeholder.client.borderBox.height,\n    width: placeholder.client.borderBox.width,\n    margin: placeholder.client.margin\n  };\n};\n\nvar getStyle = function getStyle(_ref2) {\n  var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n      placeholder = _ref2.placeholder,\n      animate = _ref2.animate;\n  var size = getSize({\n    isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n    placeholder: placeholder,\n    animate: animate\n  });\n  return {\n    display: placeholder.display,\n    boxSizing: 'border-box',\n    width: size.width,\n    height: size.height,\n    marginTop: size.margin.top,\n    marginRight: size.margin.right,\n    marginBottom: size.margin.bottom,\n    marginLeft: size.margin.left,\n    flexShrink: '0',\n    flexGrow: '0',\n    pointerEvents: 'none',\n    transition: animate !== 'none' ? transitions.placeholder : null\n  };\n};\n\nfunction Placeholder(props) {\n  var animateOpenTimerRef = useRef(null);\n  var tryClearAnimateOpenTimer = useCallback(function () {\n    if (!animateOpenTimerRef.current) {\n      return;\n    }\n\n    clearTimeout(animateOpenTimerRef.current);\n    animateOpenTimerRef.current = null;\n  }, []);\n  var animate = props.animate,\n      onTransitionEnd = props.onTransitionEnd,\n      onClose = props.onClose,\n      contextId = props.contextId;\n\n  var _useState = useState(props.animate === 'open'),\n      isAnimatingOpenOnMount = _useState[0],\n      setIsAnimatingOpenOnMount = _useState[1];\n\n  useEffect(function () {\n    if (!isAnimatingOpenOnMount) {\n      return noop$2;\n    }\n\n    if (animate !== 'open') {\n      tryClearAnimateOpenTimer();\n      setIsAnimatingOpenOnMount(false);\n      return noop$2;\n    }\n\n    if (animateOpenTimerRef.current) {\n      return noop$2;\n    }\n\n    animateOpenTimerRef.current = setTimeout(function () {\n      animateOpenTimerRef.current = null;\n      setIsAnimatingOpenOnMount(false);\n    });\n    return tryClearAnimateOpenTimer;\n  }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n  var onSizeChangeEnd = useCallback(function (event) {\n    if (event.propertyName !== 'height') {\n      return;\n    }\n\n    onTransitionEnd();\n\n    if (animate === 'close') {\n      onClose();\n    }\n  }, [animate, onClose, onTransitionEnd]);\n  var style = getStyle({\n    isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n    animate: props.animate,\n    placeholder: props.placeholder\n  });\n  return React.createElement(props.placeholder.tagName, {\n    style: style,\n    'data-rbd-placeholder-context-id': contextId,\n    onTransitionEnd: onSizeChangeEnd,\n    ref: props.innerRef\n  });\n}\n\nvar Placeholder$1 = React.memo(Placeholder);\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n  !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n    provided.innerRef has not been provided with a HTMLElement.\\n\\n    You can find a guide on using the innerRef callback functions at:\\n    https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n  \") : invariant(false) : void 0;\n}\n\nfunction isBoolean(value) {\n  return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n  checks.forEach(function (check) {\n    return check(args);\n  });\n}\n\nvar shared = [function required(_ref) {\n  var props = _ref.props;\n  !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant(false) : void 0;\n  !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant(false) : void 0;\n}, function _boolean(_ref2) {\n  var props = _ref2.props;\n  !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant(false) : void 0;\n  !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant(false) : void 0;\n  !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant(false) : void 0;\n}, function ref(_ref3) {\n  var getDroppableRef = _ref3.getDroppableRef;\n  checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n  var props = _ref4.props,\n      getPlaceholderRef = _ref4.getPlaceholderRef;\n\n  if (!props.placeholder) {\n    return;\n  }\n\n  var ref = getPlaceholderRef();\n\n  if (ref) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n      DroppableProvided > placeholder could not be found.\\n\\n      Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n      More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n    \") : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n  var props = _ref5.props;\n  !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant(false) : void 0;\n}, function hasNoPlaceholder(_ref6) {\n  var getPlaceholderRef = _ref6.getPlaceholderRef;\n  !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant(false) : void 0;\n}];\nfunction useValidation(args) {\n  useDevSetupWarning(function () {\n    runChecks(args, shared);\n\n    if (args.props.mode === 'standard') {\n      runChecks(args, standard);\n    }\n\n    if (args.props.mode === 'virtual') {\n      runChecks(args, virtual);\n    }\n  });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n  _inheritsLoose(AnimateInOut, _React$PureComponent);\n\n  function AnimateInOut() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n    _this.state = {\n      isVisible: Boolean(_this.props.on),\n      data: _this.props.on,\n      animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n    };\n\n    _this.onClose = function () {\n      if (_this.state.animate !== 'close') {\n        return;\n      }\n\n      _this.setState({\n        isVisible: false\n      });\n    };\n\n    return _this;\n  }\n\n  AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n    if (!props.shouldAnimate) {\n      return {\n        isVisible: Boolean(props.on),\n        data: props.on,\n        animate: 'none'\n      };\n    }\n\n    if (props.on) {\n      return {\n        isVisible: true,\n        data: props.on,\n        animate: 'open'\n      };\n    }\n\n    if (state.isVisible) {\n      return {\n        isVisible: true,\n        data: state.data,\n        animate: 'close'\n      };\n    }\n\n    return {\n      isVisible: false,\n      animate: 'close',\n      data: null\n    };\n  };\n\n  var _proto = AnimateInOut.prototype;\n\n  _proto.render = function render() {\n    if (!this.state.isVisible) {\n      return null;\n    }\n\n    var provided = {\n      onClose: this.onClose,\n      data: this.state.data,\n      animate: this.state.animate\n    };\n    return this.props.children(provided);\n  };\n\n  return AnimateInOut;\n}(React.PureComponent);\n\nvar zIndexOptions = {\n  dragging: 5000,\n  dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n  if (dropping) {\n    return transitions.drop(dropping.duration);\n  }\n\n  if (shouldAnimateDragMovement) {\n    return transitions.snap;\n  }\n\n  return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n  if (!isCombining) {\n    return null;\n  }\n\n  return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n  if (dragging.forceShouldAnimate != null) {\n    return dragging.forceShouldAnimate;\n  }\n\n  return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n  var dimension = dragging.dimension;\n  var box = dimension.client;\n  var offset = dragging.offset,\n      combineWith = dragging.combineWith,\n      dropping = dragging.dropping;\n  var isCombining = Boolean(combineWith);\n  var shouldAnimate = getShouldDraggingAnimate(dragging);\n  var isDropAnimating = Boolean(dropping);\n  var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n  var style = {\n    position: 'fixed',\n    top: box.marginBox.top,\n    left: box.marginBox.left,\n    boxSizing: 'border-box',\n    width: box.borderBox.width,\n    height: box.borderBox.height,\n    transition: getDraggingTransition(shouldAnimate, dropping),\n    transform: transform,\n    opacity: getDraggingOpacity(isCombining, isDropAnimating),\n    zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n    pointerEvents: 'none'\n  };\n  return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n  return {\n    transform: transforms.moveTo(secondary.offset),\n    transition: secondary.shouldAnimateDisplacement ? null : 'none'\n  };\n}\n\nfunction getStyle$1(mapped) {\n  return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n  if (windowScroll === void 0) {\n    windowScroll = origin;\n  }\n\n  var computedStyles = window.getComputedStyle(el);\n  var borderBox = el.getBoundingClientRect();\n  var client = calculateBox(borderBox, computedStyles);\n  var page = withScroll(client, windowScroll);\n  var placeholder = {\n    client: client,\n    tagName: el.tagName.toLowerCase(),\n    display: computedStyles.display\n  };\n  var displaceBy = {\n    x: client.marginBox.width,\n    y: client.marginBox.height\n  };\n  var dimension = {\n    descriptor: descriptor,\n    placeholder: placeholder,\n    displaceBy: displaceBy,\n    client: client,\n    page: page\n  };\n  return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n  var uniqueId = useUniqueId('draggable');\n  var descriptor = args.descriptor,\n      registry = args.registry,\n      getDraggableRef = args.getDraggableRef,\n      canDragInteractiveElements = args.canDragInteractiveElements,\n      shouldRespectForcePress = args.shouldRespectForcePress,\n      isEnabled = args.isEnabled;\n  var options = useMemo(function () {\n    return {\n      canDragInteractiveElements: canDragInteractiveElements,\n      shouldRespectForcePress: shouldRespectForcePress,\n      isEnabled: isEnabled\n    };\n  }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n  var getDimension = useCallback(function (windowScroll) {\n    var el = getDraggableRef();\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant(false) : void 0;\n    return getDimension$1(descriptor, el, windowScroll);\n  }, [descriptor, getDraggableRef]);\n  var entry = useMemo(function () {\n    return {\n      uniqueId: uniqueId,\n      descriptor: descriptor,\n      options: options,\n      getDimension: getDimension\n    };\n  }, [descriptor, getDimension, options, uniqueId]);\n  var publishedRef = useRef(entry);\n  var isFirstPublishRef = useRef(true);\n  useIsomorphicLayoutEffect(function () {\n    registry.draggable.register(publishedRef.current);\n    return function () {\n      return registry.draggable.unregister(publishedRef.current);\n    };\n  }, [registry.draggable]);\n  useIsomorphicLayoutEffect(function () {\n    if (isFirstPublishRef.current) {\n      isFirstPublishRef.current = false;\n      return;\n    }\n\n    var last = publishedRef.current;\n    publishedRef.current = entry;\n    registry.draggable.update(entry, last);\n  }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n  useDevSetupWarning(function () {\n    function prefix(id) {\n      return \"Draggable[id: \" + id + \"]: \";\n    }\n\n    var id = props.draggableId;\n    !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n    !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n      Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n    !isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n\n    if (props.mapped.type === 'DRAGGING') {\n      return;\n    }\n\n    checkIsValidInnerRef(getRef());\n\n    if (props.isEnabled) {\n      !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n    }\n  });\n}\nfunction useClonePropValidation(isClone) {\n  useDev(function () {\n    var initialRef = useRef(isClone);\n    useDevSetupWarning(function () {\n      !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n    }, [isClone]);\n  });\n}\n\nfunction preventHtml5Dnd(event) {\n  event.preventDefault();\n}\n\nfunction Draggable(props) {\n  var ref = useRef(null);\n  var setRef = useCallback(function (el) {\n    ref.current = el;\n  }, []);\n  var getRef = useCallback(function () {\n    return ref.current;\n  }, []);\n\n  var _useRequiredContext = useRequiredContext(AppContext),\n      contextId = _useRequiredContext.contextId,\n      dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n      registry = _useRequiredContext.registry;\n\n  var _useRequiredContext2 = useRequiredContext(DroppableContext),\n      type = _useRequiredContext2.type,\n      droppableId = _useRequiredContext2.droppableId;\n\n  var descriptor = useMemo(function () {\n    return {\n      id: props.draggableId,\n      index: props.index,\n      type: type,\n      droppableId: droppableId\n    };\n  }, [props.draggableId, props.index, type, droppableId]);\n  var children = props.children,\n      draggableId = props.draggableId,\n      isEnabled = props.isEnabled,\n      shouldRespectForcePress = props.shouldRespectForcePress,\n      canDragInteractiveElements = props.canDragInteractiveElements,\n      isClone = props.isClone,\n      mapped = props.mapped,\n      dropAnimationFinishedAction = props.dropAnimationFinished;\n  useValidation$1(props, contextId, getRef);\n  useClonePropValidation(isClone);\n\n  if (!isClone) {\n    var forPublisher = useMemo(function () {\n      return {\n        descriptor: descriptor,\n        registry: registry,\n        getDraggableRef: getRef,\n        canDragInteractiveElements: canDragInteractiveElements,\n        shouldRespectForcePress: shouldRespectForcePress,\n        isEnabled: isEnabled\n      };\n    }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n    useDraggablePublisher(forPublisher);\n  }\n\n  var dragHandleProps = useMemo(function () {\n    return isEnabled ? {\n      tabIndex: 0,\n      role: 'button',\n      'aria-describedby': dragHandleUsageInstructionsId,\n      'data-rbd-drag-handle-draggable-id': draggableId,\n      'data-rbd-drag-handle-context-id': contextId,\n      draggable: false,\n      onDragStart: preventHtml5Dnd\n    } : null;\n  }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n  var onMoveEnd = useCallback(function (event) {\n    if (mapped.type !== 'DRAGGING') {\n      return;\n    }\n\n    if (!mapped.dropping) {\n      return;\n    }\n\n    if (event.propertyName !== 'transform') {\n      return;\n    }\n\n    dropAnimationFinishedAction();\n  }, [dropAnimationFinishedAction, mapped]);\n  var provided = useMemo(function () {\n    var style = getStyle$1(mapped);\n    var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n    var result = {\n      innerRef: setRef,\n      draggableProps: {\n        'data-rbd-draggable-context-id': contextId,\n        'data-rbd-draggable-id': draggableId,\n        style: style,\n        onTransitionEnd: onTransitionEnd\n      },\n      dragHandleProps: dragHandleProps\n    };\n    return result;\n  }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n  var rubric = useMemo(function () {\n    return {\n      draggableId: descriptor.id,\n      type: descriptor.type,\n      source: {\n        index: descriptor.index,\n        droppableId: descriptor.droppableId\n      }\n    };\n  }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n  return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n  return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n  var combine = result.combine,\n      destination = result.destination;\n\n  if (destination) {\n    return destination.droppableId;\n  }\n\n  if (combine) {\n    return combine.droppableId;\n  }\n\n  return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n  return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n  return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n  var memoizedOffset = memoizeOne(function (x, y) {\n    return {\n      x: x,\n      y: y\n    };\n  });\n  var getMemoizedSnapshot = memoizeOne(function (mode, isClone, draggingOver, combineWith, dropping) {\n    return {\n      isDragging: true,\n      isClone: isClone,\n      isDropAnimating: Boolean(dropping),\n      dropAnimation: dropping,\n      mode: mode,\n      draggingOver: draggingOver,\n      combineWith: combineWith,\n      combineTargetFor: null\n    };\n  });\n  var getMemoizedProps = memoizeOne(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n    return {\n      mapped: {\n        type: 'DRAGGING',\n        dropping: null,\n        draggingOver: draggingOver,\n        combineWith: combineWith,\n        mode: mode,\n        offset: offset,\n        dimension: dimension,\n        forceShouldAnimate: forceShouldAnimate,\n        snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n      }\n    };\n  });\n\n  var selector = function selector(state, ownProps) {\n    if (state.isDragging) {\n      if (state.critical.draggable.id !== ownProps.draggableId) {\n        return null;\n      }\n\n      var offset = state.current.client.offset;\n      var dimension = state.dimensions.draggables[ownProps.draggableId];\n      var draggingOver = whatIsDraggedOver(state.impact);\n      var combineWith = getCombineWithFromImpact(state.impact);\n      var forceShouldAnimate = state.forceShouldAnimate;\n      return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (completed.result.draggableId !== ownProps.draggableId) {\n        return null;\n      }\n\n      var isClone = ownProps.isClone;\n      var _dimension = state.dimensions.draggables[ownProps.draggableId];\n      var result = completed.result;\n      var mode = result.mode;\n\n      var _draggingOver = whatIsDraggedOverFromResult(result);\n\n      var _combineWith = getCombineWithFromResult(result);\n\n      var duration = state.dropDuration;\n      var dropping = {\n        duration: duration,\n        curve: curves.drop,\n        moveTo: state.newHomeClientOffset,\n        opacity: _combineWith ? combine.opacity.drop : null,\n        scale: _combineWith ? combine.scale.drop : null\n      };\n      return {\n        mapped: {\n          type: 'DRAGGING',\n          offset: state.newHomeClientOffset,\n          dimension: _dimension,\n          dropping: dropping,\n          draggingOver: _draggingOver,\n          combineWith: _combineWith,\n          mode: mode,\n          forceShouldAnimate: null,\n          snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n        }\n      };\n    }\n\n    return null;\n  };\n\n  return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n  return {\n    isDragging: false,\n    isDropAnimating: false,\n    isClone: false,\n    dropAnimation: null,\n    mode: null,\n    draggingOver: null,\n    combineTargetFor: combineTargetFor,\n    combineWith: null\n  };\n}\n\nvar atRest = {\n  mapped: {\n    type: 'SECONDARY',\n    offset: origin,\n    combineTargetFor: null,\n    shouldAnimateDisplacement: true,\n    snapshot: getSecondarySnapshot(null)\n  }\n};\n\nfunction getSecondarySelector() {\n  var memoizedOffset = memoizeOne(function (x, y) {\n    return {\n      x: x,\n      y: y\n    };\n  });\n  var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n  var getMemoizedProps = memoizeOne(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n    if (combineTargetFor === void 0) {\n      combineTargetFor = null;\n    }\n\n    return {\n      mapped: {\n        type: 'SECONDARY',\n        offset: offset,\n        combineTargetFor: combineTargetFor,\n        shouldAnimateDisplacement: shouldAnimateDisplacement,\n        snapshot: getMemoizedSnapshot(combineTargetFor)\n      }\n    };\n  });\n\n  var getFallback = function getFallback(combineTargetFor) {\n    return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n  };\n\n  var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n    var visualDisplacement = impact.displaced.visible[ownId];\n    var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n    var combine = tryGetCombine(impact);\n    var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n    if (!visualDisplacement) {\n      if (!isAfterCriticalInVirtualList) {\n        return getFallback(combineTargetFor);\n      }\n\n      if (impact.displaced.invisible[ownId]) {\n        return null;\n      }\n\n      var change = negate(afterCritical.displacedBy.point);\n\n      var _offset = memoizedOffset(change.x, change.y);\n\n      return getMemoizedProps(_offset, combineTargetFor, true);\n    }\n\n    if (isAfterCriticalInVirtualList) {\n      return getFallback(combineTargetFor);\n    }\n\n    var displaceBy = impact.displacedBy.point;\n    var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n    return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n  };\n\n  var selector = function selector(state, ownProps) {\n    if (state.isDragging) {\n      if (state.critical.draggable.id === ownProps.draggableId) {\n        return null;\n      }\n\n      return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (completed.result.draggableId === ownProps.draggableId) {\n        return null;\n      }\n\n      return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n    }\n\n    return null;\n  };\n\n  return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n  var draggingSelector = getDraggableSelector();\n  var secondarySelector = getSecondarySelector();\n\n  var selector = function selector(state, ownProps) {\n    return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n  };\n\n  return selector;\n};\nvar mapDispatchToProps = {\n  dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = connect(makeMapStateToProps, mapDispatchToProps, null, {\n  context: StoreContext,\n  pure: true,\n  areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n  var droppableContext = useRequiredContext(DroppableContext);\n  var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n  if (isUsingCloneFor === props.draggableId && !props.isClone) {\n    return null;\n  }\n\n  return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n  var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n  var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n  var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n  return React.createElement(PrivateDraggable, _extends({}, props, {\n    isClone: false,\n    isEnabled: isEnabled,\n    canDragInteractiveElements: canDragInteractiveElements,\n    shouldRespectForcePress: shouldRespectForcePress\n  }));\n}\n\nfunction Droppable(props) {\n  var appContext = useContext(AppContext);\n  !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant(false) : void 0;\n  var contextId = appContext.contextId,\n      isMovementAllowed = appContext.isMovementAllowed;\n  var droppableRef = useRef(null);\n  var placeholderRef = useRef(null);\n  var children = props.children,\n      droppableId = props.droppableId,\n      type = props.type,\n      mode = props.mode,\n      direction = props.direction,\n      ignoreContainerClipping = props.ignoreContainerClipping,\n      isDropDisabled = props.isDropDisabled,\n      isCombineEnabled = props.isCombineEnabled,\n      snapshot = props.snapshot,\n      useClone = props.useClone,\n      updateViewportMaxScroll = props.updateViewportMaxScroll,\n      getContainerForClone = props.getContainerForClone;\n  var getDroppableRef = useCallback(function () {\n    return droppableRef.current;\n  }, []);\n  var setDroppableRef = useCallback(function (value) {\n    droppableRef.current = value;\n  }, []);\n  var getPlaceholderRef = useCallback(function () {\n    return placeholderRef.current;\n  }, []);\n  var setPlaceholderRef = useCallback(function (value) {\n    placeholderRef.current = value;\n  }, []);\n  useValidation({\n    props: props,\n    getDroppableRef: getDroppableRef,\n    getPlaceholderRef: getPlaceholderRef\n  });\n  var onPlaceholderTransitionEnd = useCallback(function () {\n    if (isMovementAllowed()) {\n      updateViewportMaxScroll({\n        maxScroll: getMaxWindowScroll()\n      });\n    }\n  }, [isMovementAllowed, updateViewportMaxScroll]);\n  useDroppablePublisher({\n    droppableId: droppableId,\n    type: type,\n    mode: mode,\n    direction: direction,\n    isDropDisabled: isDropDisabled,\n    isCombineEnabled: isCombineEnabled,\n    ignoreContainerClipping: ignoreContainerClipping,\n    getDroppableRef: getDroppableRef\n  });\n  var placeholder = React.createElement(AnimateInOut, {\n    on: props.placeholder,\n    shouldAnimate: props.shouldAnimatePlaceholder\n  }, function (_ref) {\n    var onClose = _ref.onClose,\n        data = _ref.data,\n        animate = _ref.animate;\n    return React.createElement(Placeholder$1, {\n      placeholder: data,\n      onClose: onClose,\n      innerRef: setPlaceholderRef,\n      animate: animate,\n      contextId: contextId,\n      onTransitionEnd: onPlaceholderTransitionEnd\n    });\n  });\n  var provided = useMemo(function () {\n    return {\n      innerRef: setDroppableRef,\n      placeholder: placeholder,\n      droppableProps: {\n        'data-rbd-droppable-id': droppableId,\n        'data-rbd-droppable-context-id': contextId\n      }\n    };\n  }, [contextId, droppableId, placeholder, setDroppableRef]);\n  var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n  var droppableContext = useMemo(function () {\n    return {\n      droppableId: droppableId,\n      type: type,\n      isUsingCloneFor: isUsingCloneFor\n    };\n  }, [droppableId, isUsingCloneFor, type]);\n\n  function getClone() {\n    if (!useClone) {\n      return null;\n    }\n\n    var dragging = useClone.dragging,\n        render = useClone.render;\n    var node = React.createElement(PrivateDraggable, {\n      draggableId: dragging.draggableId,\n      index: dragging.source.index,\n      isClone: true,\n      isEnabled: true,\n      shouldRespectForcePress: false,\n      canDragInteractiveElements: true\n    }, function (draggableProvided, draggableSnapshot) {\n      return render(draggableProvided, draggableSnapshot, dragging);\n    });\n    return ReactDOM.createPortal(node, getContainerForClone());\n  }\n\n  return React.createElement(DroppableContext.Provider, {\n    value: droppableContext\n  }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n  return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n  return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n  var idleWithAnimation = {\n    placeholder: null,\n    shouldAnimatePlaceholder: true,\n    snapshot: {\n      isDraggingOver: false,\n      draggingOverWith: null,\n      draggingFromThisWith: null,\n      isUsingPlaceholder: false\n    },\n    useClone: null\n  };\n\n  var idleWithoutAnimation = _extends({}, idleWithAnimation, {\n    shouldAnimatePlaceholder: false\n  });\n\n  var getDraggableRubric = memoizeOne(function (descriptor) {\n    return {\n      draggableId: descriptor.id,\n      type: descriptor.type,\n      source: {\n        index: descriptor.index,\n        droppableId: descriptor.droppableId\n      }\n    };\n  });\n  var getMapProps = memoizeOne(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n    var draggableId = dragging.descriptor.id;\n    var isHome = dragging.descriptor.droppableId === id;\n\n    if (isHome) {\n      var useClone = renderClone ? {\n        render: renderClone,\n        dragging: getDraggableRubric(dragging.descriptor)\n      } : null;\n      var _snapshot = {\n        isDraggingOver: isDraggingOverForConsumer,\n        draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n        draggingFromThisWith: draggableId,\n        isUsingPlaceholder: true\n      };\n      return {\n        placeholder: dragging.placeholder,\n        shouldAnimatePlaceholder: false,\n        snapshot: _snapshot,\n        useClone: useClone\n      };\n    }\n\n    if (!isEnabled) {\n      return idleWithoutAnimation;\n    }\n\n    if (!isDraggingOverForImpact) {\n      return idleWithAnimation;\n    }\n\n    var snapshot = {\n      isDraggingOver: isDraggingOverForConsumer,\n      draggingOverWith: draggableId,\n      draggingFromThisWith: null,\n      isUsingPlaceholder: true\n    };\n    return {\n      placeholder: dragging.placeholder,\n      shouldAnimatePlaceholder: true,\n      snapshot: snapshot,\n      useClone: null\n    };\n  });\n\n  var selector = function selector(state, ownProps) {\n    var id = ownProps.droppableId;\n    var type = ownProps.type;\n    var isEnabled = !ownProps.isDropDisabled;\n    var renderClone = ownProps.renderClone;\n\n    if (state.isDragging) {\n      var critical = state.critical;\n\n      if (!isMatchingType(type, critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var dragging = getDraggable(critical, state.dimensions);\n      var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n      return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (!isMatchingType(type, completed.critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var _dragging = getDraggable(completed.critical, state.dimensions);\n\n      return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n    }\n\n    if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n      var _completed = state.completed;\n\n      if (!isMatchingType(type, _completed.critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var wasOver = whatIsDraggedOver(_completed.impact) === id;\n      var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n      var isHome = _completed.critical.droppable.id === id;\n\n      if (wasOver) {\n        return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n      }\n\n      if (isHome) {\n        return idleWithAnimation;\n      }\n\n      return idleWithoutAnimation;\n    }\n\n    return idleWithoutAnimation;\n  };\n\n  return selector;\n};\nvar mapDispatchToProps$1 = {\n  updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n  !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant(false) : void 0;\n  return document.body;\n}\n\nvar defaultProps = {\n  mode: 'standard',\n  type: 'DEFAULT',\n  direction: 'vertical',\n  isDropDisabled: false,\n  isCombineEnabled: false,\n  ignoreContainerClipping: false,\n  renderClone: null,\n  getContainerForClone: getBody\n};\nvar ConnectedDroppable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n  context: StoreContext,\n  pure: true,\n  areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, resetServerContext };\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.with-resolvers');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n  return !ref || typeof ref === 'function' ? ref : function (value) {\n    ref.current = value;\n  };\n};\n\nexport function mergeRefs(refA, refB) {\n  var a = toFnRef(refA);\n  var b = toFnRef(refB);\n  return function (value) {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n  return useMemo(function () {\n    return mergeRefs(refA, refB);\n  }, [refA, refB]);\n}\n\nexport default useMergedRefs;","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var index = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone:\n                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex:\n            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex:\n            /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"Hone\",[],e):\"object\"==typeof exports?exports.Hone=e():t.Hone=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=4)}([function(t,e,n){\"use strict\";function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(t,e){var n=e.split(\" \");n.filter(function(t){return t.length}).forEach(function(e){t.classList?t.classList.add(e):\"[object SVGAnimatedString]\"===t.className.toString()?t.className.baseVal+=(t.className.baseVal.length?\" \":\"\")+e:t.className+=(t.className.length?\" \":\"\")+e})}function r(t,e){var n=e.split(\" \");n.filter(function(t){return t.length}).forEach(function(e){t.classList?t.classList.remove(e):\"[object SVGAnimatedString]\"===t.className.toString()?t.className.baseVal=t.className.baseVal.toString().replace(new RegExp(\"(^|s)\"+e.split(\" \").join(\"|\")+\"(s|$)\",\"gi\"),\" \"):t.className=t.className.toString().replace(new RegExp(\"(^|s)\"+e.split(\" \").join(\"|\")+\"(s|$)\",\"gi\"),\" \")})}function a(t){return t=parseFloat(t),isFinite(t)?t:0}function l(t){var e=t.getBoundingClientRect();return{width:Math.round(\"number\"==typeof e.width?e.width:elem.offsetWidth),height:Math.round(\"number\"==typeof e.height?e.height:elem.offsetHeight),top:Math.round(e.top+(window.pageYOffset||document.documentElement.scrollTop)),left:Math.round(e.left+(window.pageXOffset||document.documentElement.scrollLeft)),viewportWidth:Math.max(document.documentElement.clientWidth,window.innerWidth||0),viewportHeight:Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}function f(t){var e=t.getBoundingClientRect(),n=l(t),o={top:0,left:0},i=document.documentElement,s=i.getBoundingClientRect(),r=window.getComputedStyle(i);return o.top=s.top+i.clientTop,o.left=s.left+i.clientLeft,o.top+=window.pageYOffset,o.left+=window.pageXOffset,o.top+=a(r.paddingTop),o.left+=a(r.paddingLeft),Object.assign(n,{top:Math.round(e.top-o.top),left:Math.round(e.left-o.left)})}function u(t){var e=document.createElement(\"div\");return e.innerHTML=t.trim(),e.firstChild}function c(t){var e=t.split(\" \").filter(function(t){return t.length}).map(function(t){return parseInt(t,10)});switch(e.length){case 0:return{top:0,right:0,bottom:0,left:0};case 1:return{top:e[0],right:e[0],bottom:e[0],left:e[0]};case 2:return{top:e[0],right:e[1],bottom:e[0],left:e[1]};case 3:return{top:e[0],right:e[1],bottom:e[2],left:e[1]};case 4:return{top:e[0],right:e[1],bottom:e[2],left:e[3]};default:throw new Error(\"Invalid padding for hone scope: \"+t)}}function p(t){function e(t,n){return null===t.parentNode?n:e(t.parentNode,n.concat([t]))}function n(t,e){return getComputedStyle(t,null).getPropertyValue(e)}function i(t){return n(t,\"overflow\")+n(t,\"overflow-y\")+n(t,\"overflow-x\")}function s(t){return r.test(i(t))}var r=/(auto|scroll)/;if(!(t instanceof HTMLElement||t instanceof SVGElement))return[];var a=e(t.parentNode,[]),l=a.filter(function(t){return s(t)});return[window].concat(o(l))}Object.defineProperty(e,\"__esModule\",{value:!0}),e.addClass=s,e.removeClass=r,e.parseStyle=a,e.offset=l,e.viewportOffset=f,e.createElement=u,e.parsePadding=c,e.scrollParents=p;e.Enum=function t(e){var n=this;i(this,t),e.forEach(function(t){n[t.toUpperCase()]=t})},e.transformKey=function(){if(\"undefined\"==typeof document)return\"\";for(var t=document.createElement(\"div\"),e=[\"transform\",\"WebkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"],n=0;n<e.length;++n){var o=e[n];if(void 0!==t.style[o])return o}}()},function(t,e,n){\"use strict\";function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),s=function(){function t(e,n){o(this,t),this.element=n,this.options=e}return i(t,[{key:\"show\",value:function(){this.element.style.display=\"block\"}},{key:\"hide\",value:function(){this.element.style.display=\"none\"}},{key:\"setOptions\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.removeEventListeners(),this.options=Object.assign(this.options||{},t),this.addEventListeners()}},{key:\"addEventListeners\",value:function(){if(this.options&&this.options.events)for(var t in this.options.events)Object.prototype.hasOwnProperty.call(this.options.events,t)&&this.element.addEventListener(t,this.options.events[t])}},{key:\"removeEventListeners\",value:function(){if(this.options&&this.options.events)for(var t in this.options.events)Object.prototype.hasOwnProperty.call(this.options.events,t)&&this.element.removeEventListener(t,this.options.events[t])}},{key:\"destroy\",value:function(){this.removeEventListeners(),this.element=null}}]),t}();e.default=s,t.exports=e.default},function(t,e,n){\"use strict\";function o(t){return t&&t.__esModule?t:{default:t}}function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function r(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function a(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),f=n(1),u=o(f),c=n(0),p=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};s(this,e);var n=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,(0,c.createElement)('\\n        <div>\\n            <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" fill=\"none\" style=\"position: absolute\">\\n                <path d=\"M100 0\\n                         Q 0 0 0 100\\n                         L0 0\\n                         Z\" />\\n            </svg>\\n        </div>')));return(0,c.addClass)(n.element.querySelector(\"path\"),\"hone-scope \"+n.options.classPrefix+\" \"+n.options.classPrefix+\"-component \"+n.options.classPrefix+\"-corner \"+n.options.classPrefix+\"-corner-\"+t.name),n.hide(),n}return a(e,t),l(e,[{key:\"position\",value:function(t){var n=this.options.borderRadius||0,o=this.options.borderRadius||0,s=void 0,r=void 0,a=void 0;switch(this.options.position){case e.position.TOP_LEFT:s=t.left,r=t.top,a=\"0deg\";break;case e.position.TOP_RIGHT:s=t.left+t.width-o,r=t.top,a=\"90deg\";break;case e.position.BOTTOM_RIGHT:s=t.left+t.width-o,r=t.top+t.height-n,a=\"180deg\";break;case e.position.BOTTOM_LEFT:s=t.left,r=t.top+t.height-n,a=\"-90deg\";break;default:throw new Error(\"Invalid position: \"+this.options.position)}Object.assign(this.element.style,i({position:this.options.fixed?\"fixed\":\"absolute\",left:s+\"px\",top:r+\"px\",height:n+\"px\",width:o+\"px\"},c.transformKey,\"rotate(\"+a+\")\")),this.show()}}]),e}(u.default);e.default=p,p.position=new c.Enum([\"TOP_LEFT\",\"TOP_RIGHT\",\"BOTTOM_RIGHT\",\"BOTTOM_LEFT\"]),t.exports=e.default},function(t,e,n){\"use strict\";function o(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),l=n(1),f=o(l),u=n(0),c=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e);var n=s(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,document.createElement(\"div\")));return(0,u.addClass)(n.element,\"hone-scope \"+n.options.classPrefix+\" \"+n.options.classPrefix+\"-component \"+n.options.classPrefix+\"-component-\"+t.name),n.hide(),n}return r(e,t),a(e,[{key:\"position\",value:function(t){var n=(0,u.offset)(document.body),o=void 0,i=void 0,s=void 0,r=void 0;switch(this.options.position){case e.position.TOP:o=\"0\",i=\"0\",s=t.top+\"px\",r=\"100%\";break;case e.position.RIGHT:o=t.left+t.width+\"px\",i=t.top+\"px\",s=t.height+\"px\",r=Math.min(n.left+n.width-t.left-t.width,t.viewportWidth-t.left-t.width)+\"px\";break;case e.position.BOTTOM:o=\"0\",i=t.top+t.height+\"px\",s=Math.max(n.top+n.height-t.top-t.height,t.viewportHeight-t.top-t.height)+\"px\",r=\"100%\";break;case e.position.LEFT:o=\"0\",i=t.top+\"px\",s=t.height+\"px\",r=t.left+\"px\";break;default:throw new Error(\"Invalid position: \"+this.options.position)}Object.assign(this.element.style,{position:this.options.fixed?\"fixed\":\"absolute\",left:o,top:i,height:s,width:r}),this.show()}}]),e}(f.default);e.default=c,c.position=new u.Enum([\"TOP\",\"RIGHT\",\"BOTTOM\",\"LEFT\"]),t.exports=e.default},function(t,e,n){\"use strict\";function o(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(){if(this.status===v.status.DESTROYED)throw new Error(\"Hone scope has been destroyed.\")}function r(){var t=this;window.addEventListener(\"resize\",this.eventListener),this.scrollParents.forEach(function(e){e.addEventListener(\"scroll\",t.eventListener)})}function a(){var t=this;window.removeEventListener(\"resize\",this.eventListener),this.scrollParents.forEach(function(e){e.removeEventListener(\"scroll\",t.eventListener)})}Object.defineProperty(e,\"__esModule\",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),f=n(3),u=o(f),c=n(2),p=o(c),h=n(0),d={classPrefix:\"hone\",fixed:!1,borderRadius:0,enabled:!0,padding:\"0\",fullScreen:!1},v=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this,t),n instanceof Element?this.target=n:(o=n,o.enabled=!1),this.element=document.createElement(\"div\"),this.status=t.status.HIDDEN,this.setOptions(Object.assign({},d,o)),this.createComponents(this.options),document.body.appendChild(this.element),this.eventListener=function(){return e.status===t.status.VISIBLE&&e.position()},this.scrollParents=(0,h.scrollParents)(this.target),r.call(this),this.options.enabled&&this.show()}return l(t,[{key:\"createComponents\",value:function(t){var e=this;this.components=[new u.default(Object.assign({name:\"top\",position:u.default.position.TOP},t)),new u.default(Object.assign({name:\"right\",position:u.default.position.RIGHT},t)),new u.default(Object.assign({name:\"bottom\",position:u.default.position.BOTTOM},t)),new u.default(Object.assign({name:\"left\",position:u.default.position.LEFT},t)),new p.default(Object.assign({name:\"top-left\",position:p.default.position.TOP_LEFT},t)),new p.default(Object.assign({name:\"top-right\",position:p.default.position.TOP_RIGHT},t)),new p.default(Object.assign({name:\"bottom-right\",position:p.default.position.BOTTOM_RIGHT},t)),new p.default(Object.assign({name:\"bottom-left\",position:p.default.position.BOTTOM_LEFT},t))],this.components.forEach(function(t){return e.element.appendChild(t.element)})}},{key:\"getOffset\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.target;return this.options.fixed?(0,h.viewportOffset)(t):(0,h.offset)(t)}},{key:\"position\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.target;s.call(this);var e=this.options.parsedPadding,n=this.getOffset(t);this.options.fullScreen?Object.assign(n,{top:0,left:0,width:0,height:0}):(n.top-=e.top,n.left-=e.left,n.width+=e.left+e.right,n.height+=e.top+e.bottom),this.lastOffset&&n.top===this.lastOffset.top&&n.left===this.lastOffset.left&&n.width===this.lastOffset.width&&n.height===this.lastOffset.height&&n.viewportWidth===this.lastOffset.viewportWidth&&n.videoHeight===this.lastOffset.videoHeight||(this.components.forEach(function(t){return t.position(n)}),this.lastOffset=n,t!==this.target&&(a.call(this),this.target=t,this.scrollParents=(0,h.scrollParents)(this.target),r.call(this)))}},{key:\"show\",value:function(){s.call(this),this.element.style.display=\"block\",this.status=t.status.VISIBLE}},{key:\"hide\",value:function(){s.call(this),this.element.style.display=\"none\",this.status=t.status.HIDDEN}},{key:\"setOptions\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};s.call(this),this.options=Object.assign(this.options||{},e),this.options.parsedPadding=(0,h.parsePadding)(this.options.padding),this.components&&this.components.forEach(function(e){return e.setOptions(t.options)})}},{key:\"destroy\",value:function(){var e=this;s.call(this),this.components.forEach(function(t){return t.destroy()}),this.scrollParents.forEach(function(t){t.removeEventListener(\"scroll\",e.eventListener)}),window.removeEventListener(\"resize\",this.eventListener),document.body.removeChild(this.element),this.element=null,this.status=t.status.DESTROYED}}]),t}();e.default=v,v.status=new h.Enum([\"HIDDEN\",\"VISIBLE\",\"DESTROYED\"]),t.exports=e.default}])});","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface ReceiverSummary\n * @property {number} bitrate\n * @property {number} fractionLost - 0–1\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} deltaPacketsLost\n * @property {number} deltaPacketsReceived\n * @property {number} [fractionLost] - 0–1 (undefined in Firefox)\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n * @property {number} phonyPacketsLost - 0–1\n */\nvar ReceiverReport = /** @class */ (function (_super) {\n    __extends(ReceiverReport, _super);\n    /**\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     * @param {number} deltaPacketsLost\n     * @param {number} deltaPacketsReceived\n     * @param {number} [fractionLost] - 0–1 (undefined in Firefox)\n     * @param {number} [jitter] - s (undefined for video tracks in Chrome)\n     */\n    function ReceiverReport(id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter) {\n        var _this = _super.call(this, id, trackId, bitrate) || this;\n        var phonyFractionLost = deltaPacketsReceived > 0\n            ? deltaPacketsLost / deltaPacketsReceived\n            : 0;\n        Object.defineProperties(_this, {\n            deltaPacketsLost: {\n                enumerable: true,\n                value: deltaPacketsLost\n            },\n            deltaPacketsReceived: {\n                enumerable: true,\n                value: deltaPacketsReceived\n            },\n            fractionLost: {\n                enumerable: true,\n                value: fractionLost\n            },\n            jitter: {\n                enumerable: true,\n                value: jitter\n            },\n            phonyFractionLost: {\n                enumerable: true,\n                value: phonyFractionLost\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link ReceiverReport}.\n     * @param {string} trackId\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @returns {ReceiverReport}\n     */\n    ReceiverReport.of = function (trackId, olderStats, newerStats) {\n        if (olderStats.id !== newerStats.id) {\n            throw new Error('RTCStats IDs must match');\n        }\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n        var bitrate = secondsElapsed > 0\n            ? (deltaBytesReceived / secondsElapsed) * 8\n            : 0;\n        var deltaPacketsLost = Math.max(newerStats.packetsLost - olderStats.packetsLost, 0);\n        var deltaPacketsReceived = newerStats.packetsReceived - olderStats.packetsReceived;\n        var fractionLost = newerStats.fractionLost, jitter = newerStats.jitter;\n        return new ReceiverReport(olderStats.id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter);\n    };\n    /**\n     * Summarize {@link ReceiverReport}s by summing and averaging their values.\n     * @param {Array<ReceiverReport>} reports\n     * @returns {ReceiverSummary}\n     */\n    ReceiverReport.summarize = function (reports) {\n        var summaries = reports.map(function (report) { return report.summarize(); });\n        var bitrate = sum(summaries.map(function (summary) { return summary.bitrate; }));\n        var fractionLost = average(summaries.map(function (summary) { return summary.fractionLost; }));\n        var jitter = average(summaries.map(function (summary) { return summary.jitter; }));\n        return {\n            bitrate: bitrate,\n            fractionLost: fractionLost,\n            jitter: jitter\n        };\n    };\n    /**\n     * Summarize the {@link ReceiveReport}.\n     * @returns {ReceiverSummary}\n     */\n    ReceiverReport.prototype.summarize = function () {\n        return {\n            bitrate: this.bitrate,\n            fractionLost: typeof this.fractionLost === 'number' ? this.fractionLost : this.phonyFractionLost,\n            jitter: this.jitter\n        };\n    };\n    return ReceiverReport;\n}(SenderOrReceiverReport));\nmodule.exports = ReceiverReport;\n//# sourceMappingURL=receiverreport.js.map","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n  var Constructor = globalThis[CONSTRUCTOR];\n  var Prototype = Constructor && Constructor.prototype;\n  return Prototype && Prototype[METHOD];\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  // eslint-disable-next-line es/no-array-prototype-foreach -- safe\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _reactRouter = require(\"react-router\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar createSelectors = function createSelectors(structure) {\n  var getIn = structure.getIn,\n      toJS = structure.toJS;\n\n  var isRouter = function isRouter(value) {\n    return value != null && _typeof(value) === 'object' && getIn(value, ['location']) && getIn(value, ['action']);\n  };\n\n  var getRouter = function getRouter(state) {\n    var router = toJS(getIn(state, ['router']));\n\n    if (!isRouter(router)) {\n      throw 'Could not find router reducer in state tree, it must be mounted under \"router\"';\n    }\n\n    return router;\n  };\n\n  var getLocation = function getLocation(state) {\n    return toJS(getIn(getRouter(state), ['location']));\n  };\n\n  var getAction = function getAction(state) {\n    return toJS(getIn(getRouter(state), ['action']));\n  };\n\n  var getSearch = function getSearch(state) {\n    return toJS(getIn(getRouter(state), ['location', 'search']));\n  };\n\n  var getHash = function getHash(state) {\n    return toJS(getIn(getRouter(state), ['location', 'hash']));\n  }; // It only makes sense to recalculate the `matchPath` whenever the pathname\n  // of the location changes. That's why `createMatchSelector` memoizes\n  // the latest result based on the location's pathname.\n\n\n  var createMatchSelector = function createMatchSelector(path) {\n    var lastPathname = null;\n    var lastMatch = null;\n    return function (state) {\n      var _ref = getLocation(state) || {},\n          pathname = _ref.pathname;\n\n      if (pathname === lastPathname) {\n        return lastMatch;\n      }\n\n      lastPathname = pathname;\n      var match = (0, _reactRouter.matchPath)(pathname, path);\n\n      if (!match || !lastMatch || match.url !== lastMatch.url // When URL matched for nested routes, URL is the same but isExact is not.\n      || match.isExact !== lastMatch.isExact) {\n        lastMatch = match;\n      }\n\n      return lastMatch;\n    };\n  };\n\n  return {\n    getLocation: getLocation,\n    getAction: getAction,\n    getRouter: getRouter,\n    getSearch: getSearch,\n    getHash: getHash,\n    createMatchSelector: createMatchSelector\n  };\n};\n\nvar _default = createSelectors;\nexports[\"default\"] = _default;","\nexport default class TinyQueue {\n    constructor(data = [], compare = defaultCompare) {\n        this.data = data;\n        this.length = this.data.length;\n        this.compare = compare;\n\n        if (this.length > 0) {\n            for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n        }\n    }\n\n    push(item) {\n        this.data.push(item);\n        this.length++;\n        this._up(this.length - 1);\n    }\n\n    pop() {\n        if (this.length === 0) return undefined;\n\n        const top = this.data[0];\n        const bottom = this.data.pop();\n        this.length--;\n\n        if (this.length > 0) {\n            this.data[0] = bottom;\n            this._down(0);\n        }\n\n        return top;\n    }\n\n    peek() {\n        return this.data[0];\n    }\n\n    _up(pos) {\n        const {data, compare} = this;\n        const item = data[pos];\n\n        while (pos > 0) {\n            const parent = (pos - 1) >> 1;\n            const current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    }\n\n    _down(pos) {\n        const {data, compare} = this;\n        const halfLength = this.length >> 1;\n        const item = data[pos];\n\n        while (pos < halfLength) {\n            let left = (pos << 1) + 1;\n            let best = data[left];\n            const right = left + 1;\n\n            if (right < this.length && compare(data[right], best) < 0) {\n                left = right;\n                best = data[right];\n            }\n            if (compare(best, item) >= 0) break;\n\n            data[pos] = best;\n            pos = left;\n        }\n\n        data[pos] = item;\n    }\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\n__export(require(\"./vanilla/index\"));\n//# sourceMappingURL=vanilla.js.map","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, -amount);\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timer = void 0;\nvar Timer = /** @class */ (function () {\n    function Timer() {\n        // eslint-disable-next-line no-undefined\n        this._end = undefined;\n        this.start();\n    }\n    Timer.prototype.start = function () {\n        this._start = Date.now();\n        return this;\n    };\n    Timer.prototype.stop = function () {\n        this._end = Date.now();\n        return this;\n    };\n    Timer.prototype.getTimeMeasurement = function () {\n        return {\n            start: this._start,\n            end: this._end,\n            // eslint-disable-next-line no-undefined\n            duration: this._end === undefined ? undefined : this._end - this._start\n        };\n    };\n    return Timer;\n}());\nexports.Timer = Timer;\n//# sourceMappingURL=timer.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useBootstrapPrefix } from './ThemeProvider';\nexport var propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: PropTypes.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: PropTypes.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: PropTypes.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: PropTypes.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: PropTypes.bool\n};\nvar defaultProps = {\n  fluid: false,\n  rounded: false,\n  roundedCircle: false,\n  thumbnail: false\n};\nvar Image = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      fluid = _ref.fluid,\n      rounded = _ref.rounded,\n      roundedCircle = _ref.roundedCircle,\n      thumbnail = _ref.thumbnail,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'img');\n  var classes = classNames(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n  return /*#__PURE__*/React.createElement(\"img\", _extends({\n    // eslint-disable-line jsx-a11y/alt-text\n    ref: ref\n  }, props, {\n    className: classNames(className, classes)\n  }));\n});\nImage.displayName = 'Image';\nImage.defaultProps = defaultProps;\nexport default Image;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n    var result = [Infinity, Infinity, -Infinity, -Infinity];\n    meta_1.coordEach(geojson, function (coord) {\n        if (result[0] > coord[0]) {\n            result[0] = coord[0];\n        }\n        if (result[1] > coord[1]) {\n            result[1] = coord[1];\n        }\n        if (result[2] < coord[0]) {\n            result[2] = coord[0];\n        }\n        if (result[3] < coord[1]) {\n            result[3] = coord[1];\n        }\n    });\n    return result;\n}\nbbox[\"default\"] = bbox;\nexports.default = bbox;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildWebGL2Pipeline = void 0;\nvar segmentationHelper_1 = require(\"../helpers/segmentationHelper\");\nvar webglHelper_1 = require(\"../helpers/webglHelper\");\nvar backgroundBlurStage_1 = require(\"./backgroundBlurStage\");\nvar backgroundImageStage_1 = require(\"./backgroundImageStage\");\nvar fastBilateralFilterStage_1 = require(\"./fastBilateralFilterStage\");\nvar loadSegmentationStage_1 = require(\"./loadSegmentationStage\");\nfunction buildWebGL2Pipeline(sourcePlayback, backgroundImage, backgroundConfig, segmentationConfig, canvas, benchmark, debounce) {\n    var shouldUpscaleCurrentMask = true;\n    var vertexShaderSource = (0, webglHelper_1.glsl)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"#version 300 es\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n\\n    void main() {\\n      gl_Position = vec4(a_position, 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n    }\\n  \"], [\"#version 300 es\\n\\n    in vec2 a_position;\\n    in vec2 a_texCoord;\\n\\n    out vec2 v_texCoord;\\n\\n    void main() {\\n      gl_Position = vec4(a_position, 0.0, 1.0);\\n      v_texCoord = a_texCoord;\\n    }\\n  \"])));\n    var outputWidth = canvas.width, outputHeight = canvas.height;\n    var _a = segmentationHelper_1.inputResolutions[segmentationConfig.inputResolution], segmentationWidth = _a[0], segmentationHeight = _a[1];\n    var gl = canvas.getContext('webgl2');\n    var vertexShader = (0, webglHelper_1.compileShader)(gl, gl.VERTEX_SHADER, vertexShaderSource);\n    var vertexArray = gl.createVertexArray();\n    gl.bindVertexArray(vertexArray);\n    var positionBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0]), gl.STATIC_DRAW);\n    var texCoordBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]), gl.STATIC_DRAW);\n    // We don't use texStorage2D here because texImage2D seems faster\n    // to upload video texture than texSubImage2D even though the latter\n    // is supposed to be the recommended way:\n    // https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#use_texstorage_to_create_textures\n    var inputFrameTexture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, inputFrameTexture);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n    // TODO Rename segmentation and person mask to be more specific\n    var segmentationTexture = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, segmentationWidth, segmentationHeight);\n    var personMaskTexture = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, outputWidth, outputHeight);\n    var loadSegmentationStage = (0, loadSegmentationStage_1.buildLoadSegmentationStage)(gl, vertexShader, positionBuffer, texCoordBuffer, segmentationConfig, segmentationTexture);\n    var fastBilateralFilterStage = (0, fastBilateralFilterStage_1.buildFastBilateralFilterStage)(gl, vertexShader, positionBuffer, texCoordBuffer, segmentationTexture, segmentationConfig, personMaskTexture, canvas);\n    var backgroundStage = backgroundConfig.type === 'blur'\n        ? (0, backgroundBlurStage_1.buildBackgroundBlurStage)(gl, vertexShader, positionBuffer, texCoordBuffer, personMaskTexture, canvas)\n        : (0, backgroundImageStage_1.buildBackgroundImageStage)(gl, positionBuffer, texCoordBuffer, personMaskTexture, backgroundImage, canvas);\n    function sampleInputFrame() {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                gl.clearColor(0, 0, 0, 0);\n                gl.clear(gl.COLOR_BUFFER_BIT);\n                gl.activeTexture(gl.TEXTURE0);\n                gl.bindTexture(gl.TEXTURE_2D, inputFrameTexture);\n                // texImage2D seems faster than texSubImage2D to upload\n                // video texture\n                gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, sourcePlayback.htmlElement);\n                gl.bindVertexArray(vertexArray);\n                return [2 /*return*/];\n            });\n        });\n    }\n    function render(segmentationData) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                benchmark.start('imageCompositionDelay');\n                if (shouldUpscaleCurrentMask) {\n                    loadSegmentationStage.render(segmentationData);\n                }\n                fastBilateralFilterStage.render();\n                backgroundStage.render();\n                if (debounce) {\n                    shouldUpscaleCurrentMask = !shouldUpscaleCurrentMask;\n                }\n                benchmark.end('imageCompositionDelay');\n                return [2 /*return*/];\n            });\n        });\n    }\n    function updatePostProcessingConfig(postProcessingConfig) {\n        var blendMode = postProcessingConfig.blendMode, coverage = postProcessingConfig.coverage, lightWrapping = postProcessingConfig.lightWrapping, _a = postProcessingConfig.jointBilateralFilter, jointBilateralFilter = _a === void 0 ? {} : _a;\n        var sigmaColor = jointBilateralFilter.sigmaColor, sigmaSpace = jointBilateralFilter.sigmaSpace;\n        if (typeof sigmaColor === 'number') {\n            fastBilateralFilterStage.updateSigmaColor(sigmaColor);\n        }\n        if (typeof sigmaSpace === 'number') {\n            fastBilateralFilterStage.updateSigmaSpace(sigmaSpace);\n        }\n        if (Array.isArray(coverage)) {\n            if (backgroundConfig.type === 'blur' || backgroundConfig.type === 'image') {\n                backgroundStage.updateCoverage(coverage);\n            }\n        }\n        if (backgroundConfig.type === 'image') {\n            var backgroundImageStage = backgroundStage;\n            if (typeof lightWrapping === 'number') {\n                backgroundImageStage.updateLightWrapping(lightWrapping);\n            }\n            if (typeof blendMode === 'string') {\n                backgroundImageStage.updateBlendMode(blendMode);\n            }\n        }\n        else if (backgroundConfig.type !== 'blur') {\n            // TODO Handle no background in a separate pipeline path\n            var backgroundImageStage = backgroundStage;\n            backgroundImageStage.updateCoverage([0, 0.9999]);\n            backgroundImageStage.updateLightWrapping(0);\n        }\n    }\n    function cleanUp() {\n        backgroundStage.cleanUp();\n        fastBilateralFilterStage.cleanUp();\n        loadSegmentationStage.cleanUp();\n        gl.deleteTexture(personMaskTexture);\n        gl.deleteTexture(segmentationTexture);\n        gl.deleteTexture(inputFrameTexture);\n        gl.deleteBuffer(texCoordBuffer);\n        gl.deleteBuffer(positionBuffer);\n        gl.deleteVertexArray(vertexArray);\n        gl.deleteShader(vertexShader);\n    }\n    return { render: render, sampleInputFrame: sampleInputFrame, updatePostProcessingConfig: updatePostProcessingConfig, cleanUp: cleanUp };\n}\nexports.buildWebGL2Pipeline = buildWebGL2Pipeline;\nvar templateObject_1;\n//# sourceMappingURL=webgl2Pipeline.js.map","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 'm':\n                return withoutSuffix\n                    ? 'jedna minuta'\n                    : isFuture\n                      ? 'jednu minutu'\n                      : 'jedne minute';\n        }\n    }\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jedan sat';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: processRelativeTime,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteAudioTrack = require('./media/track/remoteaudiotrack');\nvar RemoteAudioTrackPublication = require('./media/track/remoteaudiotrackpublication');\nvar RemoteDataTrack = require('./media/track/remotedatatrack');\nvar RemoteDataTrackPublication = require('./media/track/remotedatatrackpublication');\nvar RemoteVideoTrack = require('./media/track/remotevideotrack');\nvar RemoteVideoTrackPublication = require('./media/track/remotevideotrackpublication');\nvar util = require('./util');\nvar nInstances = 0;\n/**\n * {@link NetworkQualityLevel} is a value from 0–5, inclusive, representing the\n * quality of a network connection.\n * @typedef {number} NetworkQualityLevel\n */\n/**\n * @extends EventEmitter\n * @property {Map<Track.SID, AudioTrackPublication>} audioTracks -\n *    The {@link Participant}'s {@link AudioTrackPublication}s\n * @property {Map<Track.SID, DataTrackPublication>} dataTracks -\n *    The {@link Participant}'s {@link DataTrackPublication}s.\n * @property {Participant.Identity} identity - The identity of the {@link Participant}\n * @property {?NetworkQualityLevel} networkQualityLevel - The\n *    {@link Participant}'s current {@link NetworkQualityLevel}, if any\n * @property {?NetworkQualityStats} networkQualityStats - The\n *    {@link Participant}'s current {@link NetworkQualityStats}, if any\n * @property {Participant.SID} sid - The {@link Participant}'s SID\n * @property {string} state - \"connected\", \"disconnected\" or \"reconnecting\"\n * @property {Map<Track.SID, TrackPublication>} tracks -\n *    The {@link Participant}'s {@link TrackPublication}s\n * @property {Map<Track.SID, VideoTrackPublication>} videoTracks -\n *    The {@link Participant}'s {@link VideoTrackPublication}s\n * @emits Participant#disconnected\n * @emits Participant#networkQualityLevelChanged\n * @emits Participant#reconnected\n * @emits Participant#reconnecting\n * @emits Participant#trackDimensionsChanged\n * @emits Participant#trackStarted\n */\nvar Participant = /** @class */ (function (_super) {\n    __extends(Participant, _super);\n    /**\n     * Construct a {@link Participant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {object} [options]\n     */\n    function Participant(signaling, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            RemoteAudioTrack: RemoteAudioTrack,\n            RemoteAudioTrackPublication: RemoteAudioTrackPublication,\n            RemoteDataTrack: RemoteDataTrack,\n            RemoteDataTrackPublication: RemoteDataTrackPublication,\n            RemoteVideoTrack: RemoteVideoTrack,\n            RemoteVideoTrackPublication: RemoteVideoTrackPublication,\n            tracks: []\n        }, options);\n        var indexed = indexTracksById(options.tracks);\n        var log = options.log.createLog('default', _this);\n        var audioTracks = new Map(indexed.audioTracks);\n        var dataTracks = new Map(indexed.dataTracks);\n        var tracks = new Map(indexed.tracks);\n        var videoTracks = new Map(indexed.videoTracks);\n        Object.defineProperties(_this, {\n            _RemoteAudioTrack: {\n                value: options.RemoteAudioTrack\n            },\n            _RemoteAudioTrackPublication: {\n                value: options.RemoteAudioTrackPublication\n            },\n            _RemoteDataTrack: {\n                value: options.RemoteDataTrack\n            },\n            _RemoteDataTrackPublication: {\n                value: options.RemoteDataTrackPublication\n            },\n            _RemoteVideoTrack: {\n                value: options.RemoteVideoTrack\n            },\n            _RemoteVideoTrackPublication: {\n                value: options.RemoteVideoTrackPublication\n            },\n            _audioTracks: {\n                value: audioTracks\n            },\n            _dataTracks: {\n                value: dataTracks\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl,\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode,\n            },\n            _log: {\n                value: log\n            },\n            _signaling: {\n                value: signaling\n            },\n            _tracks: {\n                value: tracks\n            },\n            _trackEventReemitters: {\n                value: new Map()\n            },\n            _trackPublicationEventReemitters: {\n                value: new Map()\n            },\n            _trackSignalingUpdatedEventCallbacks: {\n                value: new Map()\n            },\n            _videoTracks: {\n                value: videoTracks\n            },\n            audioTracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            dataTracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            identity: {\n                enumerable: true,\n                get: function () {\n                    return signaling.identity;\n                }\n            },\n            networkQualityLevel: {\n                enumerable: true,\n                get: function () {\n                    return signaling.networkQualityLevel;\n                }\n            },\n            networkQualityStats: {\n                enumerable: true,\n                get: function () {\n                    return signaling.networkQualityStats;\n                }\n            },\n            sid: {\n                enumerable: true,\n                get: function () {\n                    return signaling.sid;\n                }\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return signaling.state;\n                }\n            },\n            tracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            videoTracks: {\n                enumerable: true,\n                value: new Map()\n            }\n        });\n        _this._tracks.forEach(reemitTrackEvents.bind(null, _this));\n        signaling.on('networkQualityLevelChanged', function () {\n            return _this.emit('networkQualityLevelChanged', _this.networkQualityLevel, _this.networkQualityStats &&\n                (_this.networkQualityStats.audio || _this.networkQualityStats.video)\n                ? _this.networkQualityStats\n                : null);\n        });\n        reemitSignalingStateChangedEvents(_this, signaling);\n        log.info(\"Created a new Participant\" + (_this.identity ? \": \" + _this.identity : ''));\n        return _this;\n    }\n    /**\n     * Get the {@link RemoteTrack} events to re-emit.\n     * @private\n     * @returns {Array<Array<string>>} events\n     */\n    Participant.prototype._getTrackEvents = function () {\n        return [\n            ['dimensionsChanged', 'trackDimensionsChanged'],\n            ['message', 'trackMessage'],\n            ['started', 'trackStarted']\n        ];\n    };\n    /**\n     * @private\n     */\n    Participant.prototype._getTrackPublicationEvents = function () {\n        return [];\n    };\n    Participant.prototype.toString = function () {\n        return \"[Participant #\" + this._instanceId + \": \" + this.sid + \"]\";\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    Participant.prototype._addTrack = function (track, id) {\n        var log = this._log;\n        if (this._tracks.has(id)) {\n            return null;\n        }\n        this._tracks.set(id, track);\n        var tracksByKind = {\n            audio: this._audioTracks,\n            video: this._videoTracks,\n            data: this._dataTracks\n        }[track.kind];\n        tracksByKind.set(id, track);\n        reemitTrackEvents(this, track, id);\n        log.info(\"Added a new \" + util.trackClass(track) + \":\", id);\n        log.debug(util.trackClass(track) + \":\", track);\n        return track;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    Participant.prototype._addTrackPublication = function (publication) {\n        var log = this._log;\n        if (this.tracks.has(publication.trackSid)) {\n            return null;\n        }\n        this.tracks.set(publication.trackSid, publication);\n        var trackPublicationsByKind = {\n            audio: this.audioTracks,\n            data: this.dataTracks,\n            video: this.videoTracks\n        }[publication.kind];\n        trackPublicationsByKind.set(publication.trackSid, publication);\n        reemitTrackPublicationEvents(this, publication);\n        log.info(\"Added a new \" + util.trackPublicationClass(publication) + \":\", publication.trackSid);\n        log.debug(util.trackPublicationClass(publication) + \":\", publication);\n        return publication;\n    };\n    /**\n     * @private\n     */\n    Participant.prototype._handleTrackSignalingEvents = function () {\n        var _a = this, log = _a._log, clientTrackSwitchOffControl = _a._clientTrackSwitchOffControl, contentPreferencesMode = _a._contentPreferencesMode;\n        var self = this;\n        if (this.state === 'disconnected') {\n            return;\n        }\n        var RemoteAudioTrack = this._RemoteAudioTrack;\n        var RemoteAudioTrackPublication = this._RemoteAudioTrackPublication;\n        var RemoteVideoTrack = this._RemoteVideoTrack;\n        var RemoteVideoTrackPublication = this._RemoteVideoTrackPublication;\n        var RemoteDataTrack = this._RemoteDataTrack;\n        var RemoteDataTrackPublication = this._RemoteDataTrackPublication;\n        var participantSignaling = this._signaling;\n        function trackSignalingAdded(signaling) {\n            var RemoteTrackPublication = {\n                audio: RemoteAudioTrackPublication,\n                data: RemoteDataTrackPublication,\n                video: RemoteVideoTrackPublication\n            }[signaling.kind];\n            var publication = new RemoteTrackPublication(signaling, { log: log });\n            self._addTrackPublication(publication);\n            var isSubscribed = signaling.isSubscribed;\n            if (isSubscribed) {\n                trackSignalingSubscribed(signaling);\n            }\n            self._trackSignalingUpdatedEventCallbacks.set(signaling.sid, function () {\n                if (isSubscribed !== signaling.isSubscribed) {\n                    isSubscribed = signaling.isSubscribed;\n                    if (isSubscribed) {\n                        trackSignalingSubscribed(signaling);\n                        return;\n                    }\n                    trackSignalingUnsubscribed(signaling);\n                }\n            });\n            signaling.on('updated', self._trackSignalingUpdatedEventCallbacks.get(signaling.sid));\n        }\n        function trackSignalingRemoved(signaling) {\n            if (signaling.isSubscribed) {\n                signaling.setTrackTransceiver(null);\n            }\n            var updated = self._trackSignalingUpdatedEventCallbacks.get(signaling.sid);\n            if (updated) {\n                signaling.removeListener('updated', updated);\n                self._trackSignalingUpdatedEventCallbacks.delete(signaling.sid);\n            }\n            var publication = self.tracks.get(signaling.sid);\n            if (publication) {\n                self._removeTrackPublication(publication);\n            }\n        }\n        function trackSignalingSubscribed(signaling) {\n            var isEnabled = signaling.isEnabled, name = signaling.name, kind = signaling.kind, sid = signaling.sid, trackTransceiver = signaling.trackTransceiver, isSwitchedOff = signaling.isSwitchedOff;\n            var RemoteTrack = {\n                audio: RemoteAudioTrack,\n                video: RemoteVideoTrack,\n                data: RemoteDataTrack\n            }[kind];\n            var publication = self.tracks.get(sid);\n            // NOTE(mroberts): It should never be the case that the TrackSignaling and\n            // MediaStreamTrack or DataTrackReceiver kinds disagree; however, just in\n            // case, we handle it here.\n            if (!RemoteTrack || kind !== trackTransceiver.kind) {\n                return;\n            }\n            var options = { log: log, name: name, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode };\n            var setPriority = function (newPriority) { return participantSignaling.updateSubscriberTrackPriority(sid, newPriority); };\n            var setRenderHint = function (renderHint) {\n                if (signaling.isSubscribed) {\n                    participantSignaling.updateTrackRenderHint(sid, renderHint);\n                }\n            };\n            var track = kind === 'data'\n                ? new RemoteTrack(sid, trackTransceiver, options)\n                : new RemoteTrack(sid, trackTransceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options);\n            self._addTrack(track, publication, trackTransceiver.id);\n        }\n        function trackSignalingUnsubscribed(signaling) {\n            var _a = __read(Array.from(self._tracks.entries()).find(function (_a) {\n                var _b = __read(_a, 2), track = _b[1];\n                return track.sid === signaling.sid;\n            }), 2), id = _a[0], track = _a[1];\n            var publication = self.tracks.get(signaling.sid);\n            if (track) {\n                self._removeTrack(track, publication, id);\n            }\n        }\n        participantSignaling.on('trackAdded', trackSignalingAdded);\n        participantSignaling.on('trackRemoved', trackSignalingRemoved);\n        participantSignaling.tracks.forEach(trackSignalingAdded);\n        participantSignaling.on('stateChanged', function stateChanged(state) {\n            if (state === 'disconnected') {\n                log.debug('Removing event listeners');\n                participantSignaling.removeListener('stateChanged', stateChanged);\n                participantSignaling.removeListener('trackAdded', trackSignalingAdded);\n                participantSignaling.removeListener('trackRemoved', trackSignalingRemoved);\n            }\n            else if (state === 'connected') {\n                // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n                // successful signaling reconnection, and not a first-time establishment\n                // of the signaling connection.\n                log.info('reconnected');\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return self.emit('reconnected'); }, 0);\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    Participant.prototype._removeTrack = function (track, id) {\n        if (!this._tracks.has(id)) {\n            return null;\n        }\n        this._tracks.delete(id);\n        var tracksByKind = {\n            audio: this._audioTracks,\n            video: this._videoTracks,\n            data: this._dataTracks\n        }[track.kind];\n        tracksByKind.delete(id);\n        var reemitters = this._trackEventReemitters.get(id) || new Map();\n        reemitters.forEach(function (reemitter, event) {\n            track.removeListener(event, reemitter);\n        });\n        var log = this._log;\n        log.info(\"Removed a \" + util.trackClass(track) + \":\", id);\n        log.debug(util.trackClass(track) + \":\", track);\n        return track;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    Participant.prototype._removeTrackPublication = function (publication) {\n        publication = this.tracks.get(publication.trackSid);\n        if (!publication) {\n            return null;\n        }\n        this.tracks.delete(publication.trackSid);\n        var trackPublicationsByKind = {\n            audio: this.audioTracks,\n            data: this.dataTracks,\n            video: this.videoTracks\n        }[publication.kind];\n        trackPublicationsByKind.delete(publication.trackSid);\n        var reemitters = this._trackPublicationEventReemitters.get(publication.trackSid) || new Map();\n        reemitters.forEach(function (reemitter, event) {\n            publication.removeListener(event, reemitter);\n        });\n        var log = this._log;\n        log.info(\"Removed a \" + util.trackPublicationClass(publication) + \":\", publication.trackSid);\n        log.debug(util.trackPublicationClass(publication) + \":\", publication);\n        return publication;\n    };\n    Participant.prototype.toJSON = function () {\n        return util.valueToJSON(this);\n    };\n    return Participant;\n}(EventEmitter));\n/**\n * A {@link Participant.SID} is a 34-character string starting with \"PA\"\n * that uniquely identifies a {@link Participant}.\n * @type string\n * @typedef Participant.SID\n */\n/**\n * A {@link Participant.Identity} is a string that identifies a\n * {@link Participant}. You can think of it like a name.\n * @typedef {string} Participant.Identity\n */\n/**\n * The {@link Participant} has disconnected.\n * @param {Participant} participant - The {@link Participant} that disconnected.\n * @event Participant#disconnected\n */\n/**\n * The {@link Participant}'s {@link NetworkQualityLevel} changed.\n * @param {NetworkQualityLevel} networkQualityLevel - The new\n *   {@link NetworkQualityLevel}\n * @param {?NetworkQualityStats} networkQualityStats - The {@link NetworkQualityStats}\n *   based on which {@link NetworkQualityLevel} is calculated, if any\n * @event Participant#networkQualityLevelChanged\n */\n/**\n * The {@link Participant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnected\n */\n/**\n * The {@link Participant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnecting\n */\n/**\n * One of the {@link Participant}'s {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event Participant#trackDimensionsChanged\n */\n/**\n * One of the {@link Participant}'s {@link Track}s started.\n * @param {Track} track - The {@link Track} that started\n * @event Participant#trackStarted\n */\n/**\n * Indexed {@link Track}s by {@link Track.ID}.\n * @typedef {object} IndexedTracks\n * @property {Array<{0: Track.ID, 1: AudioTrack}>} audioTracks - Indexed\n *   {@link AudioTrack}s\n * @property {Array<{0: Track.ID, 1: DataTrack}>} dataTracks - Indexed\n *   {@link DataTrack}s\n * @property {Array<{0: Track.ID, 1: Track}>} tracks - Indexed {@link Track}s\n * @property {Array<{0: Track.ID, 1: VideoTrack}>} videoTracks - Indexed\n *   {@link VideoTrack}s\n * @private\n */\n/**\n * Index tracks by {@link Track.ID}.\n * @param {Array<Track>} tracks\n * @returns {IndexedTracks}\n * @private\n */\nfunction indexTracksById(tracks) {\n    var indexedTracks = tracks.map(function (track) { return [track.id, track]; });\n    var indexedAudioTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'audio'; });\n    var indexedVideoTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'video'; });\n    var indexedDataTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'data'; });\n    return {\n        audioTracks: indexedAudioTracks,\n        dataTracks: indexedDataTracks,\n        tracks: indexedTracks,\n        videoTracks: indexedVideoTracks\n    };\n}\n/**\n * Re-emit {@link ParticipantSignaling} 'stateChanged' events.\n * @param {Participant} participant\n * @param {ParticipantSignaling} signaling\n * @private\n */\nfunction reemitSignalingStateChangedEvents(participant, signaling) {\n    var log = participant._log;\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    // Reemit state transition events from the ParticipantSignaling.\n    signaling.on('stateChanged', function stateChanged(state) {\n        log.debug('Transitioned to state:', state);\n        participant.emit(state, participant);\n        if (state === 'disconnected') {\n            log.debug('Removing Track event reemitters');\n            signaling.removeListener('stateChanged', stateChanged);\n            participant._tracks.forEach(function (track) {\n                var reemitters = participant._trackEventReemitters.get(track.id);\n                if (track && reemitters) {\n                    reemitters.forEach(function (reemitter, event) {\n                        track.removeListener(event, reemitter);\n                    });\n                }\n            });\n            // eslint-disable-next-line no-warning-comments\n            // TODO(joma): Removing this introduced unit test failures in the RemoteParticipant.\n            // Investigate further before removing.\n            signaling.tracks.forEach(function (trackSignaling) {\n                var track = participant._tracks.get(trackSignaling.id);\n                var reemitters = participant._trackEventReemitters.get(trackSignaling.id);\n                if (track && reemitters) {\n                    reemitters.forEach(function (reemitter, event) {\n                        track.removeListener(event, reemitter);\n                    });\n                }\n            });\n            participant._trackEventReemitters.clear();\n            participant.tracks.forEach(function (publication) {\n                participant._trackPublicationEventReemitters.get(publication.trackSid)\n                    .forEach(function (reemitter, event) {\n                    publication.removeListener(event, reemitter);\n                });\n            });\n            participant._trackPublicationEventReemitters.clear();\n        }\n    });\n}\n/**\n * Re-emit {@link Track} events.\n * @param {Participant} participant\n * @param {Track} track\n * @param {Track.ID} id\n * @private\n */\nfunction reemitTrackEvents(participant, track, id) {\n    var trackEventReemitters = new Map();\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    participant._getTrackEvents().forEach(function (eventPair) {\n        var trackEvent = eventPair[0];\n        var participantEvent = eventPair[1];\n        trackEventReemitters.set(trackEvent, function () {\n            var args = [participantEvent].concat([].slice.call(arguments));\n            return participant.emit.apply(participant, __spreadArray([], __read(args)));\n        });\n        track.on(trackEvent, trackEventReemitters.get(trackEvent));\n    });\n    participant._trackEventReemitters.set(id, trackEventReemitters);\n}\n/**\n * Re-emit {@link TrackPublication} events.\n * @private\n * @param {Participant} participant\n * @param {TrackPublication} publication\n */\nfunction reemitTrackPublicationEvents(participant, publication) {\n    var publicationEventReemitters = new Map();\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    participant._getTrackPublicationEvents().forEach(function (_a) {\n        var _b = __read(_a, 2), publicationEvent = _b[0], participantEvent = _b[1];\n        publicationEventReemitters.set(publicationEvent, function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            participant.emit.apply(participant, __spreadArray(__spreadArray([participantEvent], __read(args)), [publication]));\n        });\n        publication.on(publicationEvent, publicationEventReemitters.get(publicationEvent));\n    });\n    participant._trackPublicationEventReemitters.set(publication.trackSid, publicationEventReemitters);\n}\nmodule.exports = Participant;\n//# sourceMappingURL=participant.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar defaultProps = {\n  noGutters: false\n};\nvar Row = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      noGutters = _ref.noGutters,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"noGutters\", \"as\"]);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n  var sizePrefix = decoratedBsPrefix + \"-cols\";\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var cols;\n\n    if (propValue != null && typeof propValue === 'object') {\n      cols = propValue.cols;\n    } else {\n      cols = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (cols != null) classes.push(\"\" + sizePrefix + infix + \"-\" + cols);\n  });\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames.apply(void 0, [className, decoratedBsPrefix, noGutters && 'no-gutters'].concat(classes))\n  }));\n});\nRow.displayName = 'Row';\nRow.defaultProps = defaultProps;\nexport default Row;","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.is-well-formed');\n","\"use strict\";\n\nexports.__esModule = true;\nexports.wrap = wrap;\n/* eslint-disable import/prefer-default-export */\n\nfunction wrap(n, min, max) {\n  var d = max - min;\n  return n === max ? n : ((n - min) % d + d) % d + min;\n}","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","'use strict';\nvar detectSilence = require('../webaudio/detectsilence');\nvar N_ATTEMPTS = 3;\nvar ATTEMPT_DURATION_MS = 250;\n/**\n * Detect whether the audio stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLAudioElement} el\n * @returns {Promise<boolean>} true if silent, false if not.\n */\nfunction detectSilentAudio(el) {\n    // NOTE(mmalavalli): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var AudioContextFactory = require('../webaudio/audiocontext');\n    var holder = {};\n    var audioContext = AudioContextFactory.getOrCreate(holder);\n    var attemptsLeft = N_ATTEMPTS;\n    function doCheckSilence() {\n        attemptsLeft--;\n        return detectSilence(audioContext, el.srcObject, ATTEMPT_DURATION_MS).then(function (isSilent) {\n            if (!isSilent) {\n                return false;\n            }\n            if (attemptsLeft > 0) {\n                return doCheckSilence();\n            }\n            return true;\n        }).catch(function () {\n            // NOTE(mmalavalli): If an error is thrown while detect silence, the audio\n            // stream is assumed to be silent.\n            return true;\n        });\n    }\n    // Resolve the returned Promise with true if 3 consecutive attempts\n    // to detect silent audio are successful.\n    return doCheckSilence().finally(function () {\n        AudioContextFactory.release(holder);\n    });\n}\nmodule.exports = detectSilentAudio;\n//# sourceMappingURL=detectsilentaudio.js.map","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalAudioTrack}.\n * @extends LocalTrackStats\n * @property {?AudioLevel} audioLevel - Input {@link AudioLevel}\n * @property {?number} jitter - Audio jitter in milliseconds\n */\nvar LocalAudioTrackStats = /** @class */ (function (_super) {\n    __extends(LocalAudioTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalAudioTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalAudioTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n        Object.defineProperties(_this, {\n            audioLevel: {\n                value: typeof statsReport.audioInputLevel === 'number'\n                    ? statsReport.audioInputLevel\n                    : null,\n                enumerable: true\n            },\n            jitter: {\n                value: typeof statsReport.jitter === 'number'\n                    ? statsReport.jitter\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalAudioTrackStats;\n}(LocalTrackStats));\n/**\n * The maximum absolute amplitude of a set of audio samples in the\n * range of 0 to 32767 inclusive.\n * @typedef {number} AudioLevel\n */\nmodule.exports = LocalAudioTrackStats;\n//# sourceMappingURL=localaudiotrackstats.js.map","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","'use strict';\nrequire('../../modules/es.array.from');\nrequire('../../modules/es.array.is-array');\nrequire('../../modules/es.array.of');\nrequire('../../modules/es.array.at');\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.array.copy-within');\nrequire('../../modules/es.array.every');\nrequire('../../modules/es.array.fill');\nrequire('../../modules/es.array.filter');\nrequire('../../modules/es.array.find');\nrequire('../../modules/es.array.find-index');\nrequire('../../modules/es.array.find-last');\nrequire('../../modules/es.array.find-last-index');\nrequire('../../modules/es.array.flat');\nrequire('../../modules/es.array.flat-map');\nrequire('../../modules/es.array.for-each');\nrequire('../../modules/es.array.includes');\nrequire('../../modules/es.array.index-of');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.array.from-async');\nrequire('../../modules/es.array.join');\nrequire('../../modules/es.array.last-index-of');\nrequire('../../modules/es.array.map');\nrequire('../../modules/es.array.push');\nrequire('../../modules/es.array.reduce');\nrequire('../../modules/es.array.reduce-right');\nrequire('../../modules/es.array.reverse');\nrequire('../../modules/es.array.slice');\nrequire('../../modules/es.array.some');\nrequire('../../modules/es.array.sort');\nrequire('../../modules/es.array.species');\nrequire('../../modules/es.array.splice');\nrequire('../../modules/es.array.to-reversed');\nrequire('../../modules/es.array.to-sorted');\nrequire('../../modules/es.array.to-spliced');\nrequire('../../modules/es.array.unscopables.flat');\nrequire('../../modules/es.array.unscopables.flat-map');\nrequire('../../modules/es.array.unshift');\nrequire('../../modules/es.array.with');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.promise');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array;\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            d: ['jedan dan', 'jednog dana'],\n            dd: ['dan', 'dana', 'dana'],\n            M: ['jedan mesec', 'jednog meseca'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            y: ['jednu godinu', 'jedne godine'],\n            yy: ['godinu', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'jedna godina';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'godinu') {\n                return number + ' godina';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: translator.translate,\n            dd: translator.translate,\n            M: translator.translate,\n            MM: translator.translate,\n            y: translator.translate,\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","(function() {\n/* global StripeCheckout */\n'use strict';\n\nvar MODULE_NAME = 'stripe.checkout';\nvar STRIPE_CHECKOUT_URL = 'https://checkout.stripe.com/checkout.js';\n\nvar OPTIONS = {\n  address:         ['data-address', 'boolean'],\n  alipay:          ['data-alipay', 'boolean-or-auto'],\n  alipayReusable:  ['data-alipay-reusable', 'boolean'],\n  allowRememberMe: ['data-allow-remember-me', 'boolean'],\n  amount:          ['data-amount', 'number'],\n  billingAddress:  ['data-billing-address', 'boolean'],\n  bitcoin:         ['data-bitcoin', 'boolean'],\n  currency:        ['data-currency', 'string'],\n  description:     ['data-description', 'string'],\n  email:           ['data-email', 'string'],\n  image:           ['data-image', 'string'],\n  key:             ['data-key', 'string'],\n  label:           ['data-label', 'string'],\n  locale:          ['data-locale', 'string'],\n  name:            ['data-name', 'string'],\n  color:           ['data-color', 'string'],\n  panelLabel:      ['data-panel-label', 'string'],\n  shippingAddress: ['data-shipping-address', 'boolean'],\n  zipCode:         ['data-zip-code', 'boolean']\n};\n\n\nvar angular;\n\nif (typeof module !== 'undefined' && typeof module.exports === 'object') {\n  angular = require('angular');\n  module.exports = MODULE_NAME;\n} else {\n  angular = window.angular;\n}\n\nvar extend = angular.extend;\n\nangular.module(MODULE_NAME,[])\n  .directive('stripeCheckout',StripeCheckoutDirective)\n  .provider('StripeCheckout',StripeCheckoutProvider);\n\n\nStripeCheckoutDirective.$inject = ['$parse', 'StripeCheckout'];\n\nfunction StripeCheckoutDirective($parse, StripeCheckout) {\n  return { link: link };\n\n  function link(scope, el, attrs) {\n    var handler;\n\n    StripeCheckout.load()\n      .then(function() {\n        handler = StripeCheckout.configure(getOptions(el));\n      });\n\n    el.on('click',function() {\n      if (handler)\n        handler.open(getOptions(el)).then(function(result) {\n          var callback = $parse(attrs.stripeCheckout)(scope);\n          if (typeof callback === 'function')\n            callback.apply(null,result);\n        });\n    });\n  }\n}\n\n\nfunction StripeCheckoutProvider() {\n  var defaults = {};\n\n  this.defaults = function(options) {\n    extend(defaults,options);\n  };\n\n\n  this.load = function(StripeCheckout) {\n    return StripeCheckout.load();\n  };\n\n  this.load.$inject = ['StripeCheckout'];\n\n\n  this.$get = function($document, $q) {\n    return new StripeCheckoutService($document,$q,defaults);\n  };\n\n  this.$get.$inject = ['$document', '$q'];\n}\n\n\nfunction StripeCheckoutService($document, $q, providerDefaults) {\n  var defaults = {};\n  var promise;\n\n  this.configure = function(options) {\n    return new StripeHandlerWrapper($q,extend({},\n      providerDefaults,\n      defaults,\n      options\n    ));\n  };\n\n  this.load = function() {\n    if (!promise)\n      promise = loadLibrary($document,$q);\n\n    return promise;\n  };\n\n  this.defaults = function(options) {\n    extend(defaults,options);\n  };\n}\n\n\nfunction StripeHandlerWrapper($q, options) {\n  var deferred, success;\n\n  var handler = StripeCheckout.configure(extend({},options,{\n    token: function(token, args) {\n      if (options.token) options.token(token,args);\n\n      success = true;\n      deferred.resolve([token, args]);\n    },\n\n    closed: function() {\n      if (options.closed) options.closed();\n      if (!success) deferred.reject();\n    }\n  }));\n\n  this.open = function(openOptions) {\n    deferred = $q.defer();\n    success = false;\n\n    handler.open(openOptions);\n\n    return deferred.promise;\n  };\n\n  this.close = function() {\n    success = false;\n\n    handler.close();\n\n    if (options.closed) options.closed();\n    if (deferred) deferred.reject();\n  };\n}\n\n\nfunction getOptions(el) {\n  var opt, def, val, options = {};\n\n  for (opt in OPTIONS) {\n    if (!OPTIONS.hasOwnProperty(opt))\n      continue;\n\n    def = OPTIONS[opt];\n    val = parseValue(el.attr(def[0]),def[1]);\n\n    if (val != null)\n      options[opt] = val;\n  }\n\n  return options;\n}\n\nfunction loadLibrary($document, $q) {\n  var deferred = $q.defer();\n\n  var doc = $document[0];\n  var script = doc.createElement('script');\n  script.src = STRIPE_CHECKOUT_URL;\n\n  script.onload = function () {\n    deferred.resolve();\n  };\n\n  script.onreadystatechange = function () {\n    var rs = this.readyState;\n    if (rs === 'loaded' || rs === 'complete')\n      deferred.resolve();\n  };\n\n  script.onerror = function () {\n    deferred.reject(new Error('Unable to load checkout.js'));\n  };\n\n  var container = doc.getElementsByTagName('head')[0];\n  container.appendChild(script);\n\n  return deferred.promise;\n}\n\nfunction parseValue(value, type) {\n  if (type === 'boolean') {\n    return value && value !== 'false';\n  } else if (type === 'number') {\n    return value && Number(value);\n  } else if (type === 'boolean-or-auto') {\n    if (value === 'auto')\n      return value;\n    else\n      return parseValue(value,'boolean');\n  } else {\n    return value;\n  }\n}\n\n})();\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n              ? forms(key)[1]\n              : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone:\n                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                    '_'\n                ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone:\n                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                    '_'\n                ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","'use strict';\n\nvar util = require('./util');\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d:\\d\\d)?$/i;\nvar HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;\nvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n  mode = mode == 'full' ? 'full' : 'fast';\n  return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)?$/i,\n  'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i,\n  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n  uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n  'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  // email (sources from jsen validator):\n  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n  email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n  hostname: HOSTNAME,\n  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: UUID,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n  date: date,\n  time: time,\n  'date-time': date_time,\n  uri: uri,\n  'uri-reference': URIREF,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n  hostname: hostname,\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  uuid: UUID,\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  var matches = str.match(DATE);\n  if (!matches) return false;\n\n  var year = +matches[1];\n  var month = +matches[2];\n  var day = +matches[3];\n\n  return month >= 1 && month <= 12 && day >= 1 &&\n          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n  var matches = str.match(TIME);\n  if (!matches) return false;\n\n  var hour = matches[1];\n  var minute = matches[2];\n  var second = matches[3];\n  var timeZone = matches[5];\n  return ((hour <= 23 && minute <= 59 && second <= 59) ||\n          (hour == 23 && minute == 59 && second == 60)) &&\n         (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  var dateTime = str.split(DATE_TIME_SEPARATOR);\n  return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nfunction hostname(str) {\n  // https://tools.ietf.org/html/rfc1034#section-3.5\n  // https://tools.ietf.org/html/rfc1123#section-2\n  return str.length <= 255 && HOSTNAME.test(str);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n  return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n  if (Z_ANCHOR.test(str)) return false;\n  try {\n    new RegExp(str);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $group = require('../internals/array-group');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.group` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Array', proto: true }, {\n  group: function group(callbackfn /* , thisArg */) {\n    var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n    return $group(this, callbackfn, thisArg);\n  }\n});\n\naddToUnscopables('group');\n","var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n","var error = require('./utils/error');\nvar utils = require('./utils/common');\nvar information = require('./information');\n\nexports.AND = function() {\n  var args = utils.flatten(arguments);\n  var result = true;\n  for (var i = 0; i < args.length; i++) {\n    if (!args[i]) {\n      result = false;\n    }\n  }\n  return result;\n};\n\nexports.CHOOSE = function() {\n  if (arguments.length < 2) {\n    return error.na;\n  }\n\n  var index = arguments[0];\n  if (index < 1 || index > 254) {\n    return error.value;\n  }\n\n  if (arguments.length < index + 1) {\n    return error.value;\n  }\n\n  return arguments[index];\n};\n\nexports.FALSE = function() {\n  return false;\n};\n\nexports.IF = function(test, then_value, otherwise_value) {\n  return test ? then_value : otherwise_value;\n};\n\nexports.IFERROR = function(value, valueIfError) {\n  if (information.ISERROR(value)) {\n    return valueIfError;\n  }\n  return value;\n};\n\nexports.IFNA = function(value, value_if_na) {\n  return value === error.na ? value_if_na : value;\n};\n\nexports.NOT = function(logical) {\n  return !logical;\n};\n\nexports.OR = function() {\n  var args = utils.flatten(arguments);\n  var result = false;\n  for (var i = 0; i < args.length; i++) {\n    if (args[i]) {\n      result = true;\n    }\n  }\n  return result;\n};\n\nexports.TRUE = function() {\n  return true;\n};\n\nexports.XOR = function() {\n  var args = utils.flatten(arguments);\n  var result = 0;\n  for (var i = 0; i < args.length; i++) {\n    if (args[i]) {\n      result++;\n    }\n  }\n  return (Math.floor(Math.abs(result)) & 1) ? true : false;\n};\n\nexports.SWITCH = function () {\n  var result;\n\n  if (arguments.length > 0)  {\n    var targetValue = arguments[0];\n    var argc = arguments.length - 1;\n    var switchCount = Math.floor(argc / 2);\n    var switchSatisfied = false;\n    var hasDefaultClause = argc % 2 !== 0;\n    var defaultClause = argc % 2 === 0 ? null : arguments[arguments.length - 1];\n\n    if (switchCount) {\n      for (var index = 0; index < switchCount; index++) {\n        if (targetValue === arguments[index * 2 + 1]) {\n          result = arguments[index * 2 + 2];\n          switchSatisfied = true;\n          break;\n        }\n      }\n    }\n\n    if (!switchSatisfied) {\n      result = hasDefaultClause ? defaultClause : error.na;\n    }\n  } else {\n    result = error.value;\n  }\n\n  return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n *\n * @hidden\n */\nfunction makeEnterExitRetainHook(hookName) {\n    return function (transition, state) {\n        var _state = state.$$state();\n        var hookFn = _state[hookName];\n        return hookFn(transition, state);\n    };\n}\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nvar onExitHook = makeEnterExitRetainHook('onExit');\nexports.registerOnExitHook = function (transitionService) {\n    return transitionService.onExit({ exiting: function (state) { return !!state.onExit; } }, onExitHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nvar onRetainHook = makeEnterExitRetainHook('onRetain');\nexports.registerOnRetainHook = function (transitionService) {\n    return transitionService.onRetain({ retained: function (state) { return !!state.onRetain; } }, onRetainHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nvar onEnterHook = makeEnterExitRetainHook('onEnter');\nexports.registerOnEnterHook = function (transitionService) {\n    return transitionService.onEnter({ entering: function (state) { return !!state.onEnter; } }, onEnterHook);\n};\n//# sourceMappingURL=onEnterExitRetain.js.map","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.URI = global.URI || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction merge() {\n    for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n        sets[_key] = arguments[_key];\n    }\n\n    if (sets.length > 1) {\n        sets[0] = sets[0].slice(0, -1);\n        var xl = sets.length - 1;\n        for (var x = 1; x < xl; ++x) {\n            sets[x] = sets[x].slice(1, -1);\n        }\n        sets[xl] = sets[xl].slice(1);\n        return sets.join('');\n    } else {\n        return sets[0];\n    }\n}\nfunction subexp(str) {\n    return \"(?:\" + str + \")\";\n}\nfunction typeOf(o) {\n    return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n}\nfunction toUpperCase(str) {\n    return str.toUpperCase();\n}\nfunction toArray(obj) {\n    return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n}\nfunction assign(target, source) {\n    var obj = target;\n    if (source) {\n        for (var key in source) {\n            obj[key] = source[key];\n        }\n    }\n    return obj;\n}\n\nfunction buildExps(isIRI) {\n    var ALPHA$$ = \"[A-Za-z]\",\n        CR$ = \"[\\\\x0D]\",\n        DIGIT$$ = \"[0-9]\",\n        DQUOTE$$ = \"[\\\\x22]\",\n        HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n        //case-insensitive\n    LF$$ = \"[\\\\x0A]\",\n        SP$$ = \"[\\\\x20]\",\n        PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n        //expanded\n    GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n        SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n        RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n        UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n        //subset, excludes bidi control characters\n    IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n        //subset\n    UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n        SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n        USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n        DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n        DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n        //relaxed parsing rules\n    IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n        H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n        LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n        IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n        //                           6( h16 \":\" ) ls32\n    IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n        //                      \"::\" 5( h16 \":\" ) ls32\n    IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n        //[               h16 ] \"::\" 4( h16 \":\" ) ls32\n    IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n        //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n    IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n        //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n    IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n        //[ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\n    IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n        //[ *4( h16 \":\" ) h16 ] \"::\"              ls32\n    IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n        //[ *5( h16 \":\" ) h16 ] \"::\"              h16\n    IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n        //[ *6( h16 \":\" ) h16 ] \"::\"\n    IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n        ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),\n        //RFC 6874\n    IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),\n        //RFC 6874\n    IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),\n        //RFC 6874, with relaxed parsing rules\n    IPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n        IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n        //RFC 6874\n    REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n        HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n        PORT$ = subexp(DIGIT$$ + \"*\"),\n        AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n        PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n        SEGMENT$ = subexp(PCHAR$ + \"*\"),\n        SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n        SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n        PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n        PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),\n        //simplified\n    PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),\n        //simplified\n    PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),\n        //simplified\n    PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n        PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n        QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n        FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n        HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n        URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n        RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n        RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n        URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n        ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n        GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n        RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n        ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n        SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n        AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\n    return {\n        NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n        NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n        NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n        NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n        NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n        NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n        NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n        ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n        UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n        OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n        PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n        IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n        IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n    };\n}\nvar URI_PROTOCOL = buildExps(false);\n\nvar IRI_PROTOCOL = buildExps(true);\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\n/** Highest positive signed 32-bit float value */\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nvar regexPunycode = /^xn--/;\nvar regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nvar regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nvar errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error$1(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tvar result = [];\n\tvar length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tvar parts = string.split('@');\n\tvar result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tvar labels = string.split('.');\n\tvar encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t// Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nvar ucs2encode = function ucs2encode(array) {\n\treturn String.fromCodePoint.apply(String, toConsumableArray(array));\n};\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nvar basicToDigit = function basicToDigit(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nvar digitToBasic = function digitToBasic(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nvar adapt = function adapt(delta, numPoints, firstTime) {\n\tvar k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nvar decode = function decode(input) {\n\t// Don't use UCS-2.\n\tvar output = [];\n\tvar inputLength = input.length;\n\tvar i = 0;\n\tvar n = initialN;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tvar basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (var j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror$1('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tvar oldi = i;\n\t\tfor (var w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror$1('invalid-input');\n\t\t\t}\n\n\t\t\tvar digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\t\t}\n\n\t\tvar out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\t}\n\n\treturn String.fromCodePoint.apply(String, output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nvar encode = function encode(input) {\n\tvar output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tvar inputLength = input.length;\n\n\t// Initialize the state.\n\tvar n = initialN;\n\tvar delta = 0;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points.\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar _currentValue2 = _step.value;\n\n\t\t\tif (_currentValue2 < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(_currentValue2));\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar basicLength = output.length;\n\tvar handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tvar m = maxInt;\n\t\tvar _iteratorNormalCompletion2 = true;\n\t\tvar _didIteratorError2 = false;\n\t\tvar _iteratorError2 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\tvar currentValue = _step2.value;\n\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow.\n\t\t} catch (err) {\n\t\t\t_didIteratorError2 = true;\n\t\t\t_iteratorError2 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t_iterator2.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tvar _iteratorNormalCompletion3 = true;\n\t\tvar _didIteratorError3 = false;\n\t\tvar _iteratorError3 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\tvar _currentValue = _step3.value;\n\n\t\t\t\tif (_currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\t\t\t\tif (_currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\t\tvar q = delta;\n\t\t\t\t\tfor (var k = base;; /* no condition */k += base) {\n\t\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar qMinusT = q - t;\n\t\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError3 = true;\n\t\t\t_iteratorError3 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t_iterator3.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nvar toUnicode = function toUnicode(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nvar toASCII = function toASCII(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nvar punycode = {\n\t/**\n  * A string representing the current Punycode.js version number.\n  * @memberOf punycode\n  * @type String\n  */\n\t'version': '2.1.0',\n\t/**\n  * An object of methods to convert from JavaScript's internal character\n  * representation (UCS-2) to Unicode code points, and back.\n  * @see <https://mathiasbynens.be/notes/javascript-encoding>\n  * @memberOf punycode\n  * @type Object\n  */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\n/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice, this list of\n *       conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above copyright notice, this list\n *       of conditions and the following disclaimer in the documentation and/or other materials\n *       provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\nvar SCHEMES = {};\nfunction pctEncChar(chr) {\n    var c = chr.charCodeAt(0);\n    var e = void 0;\n    if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n    return e;\n}\nfunction pctDecChars(str) {\n    var newStr = \"\";\n    var i = 0;\n    var il = str.length;\n    while (i < il) {\n        var c = parseInt(str.substr(i + 1, 2), 16);\n        if (c < 128) {\n            newStr += String.fromCharCode(c);\n            i += 3;\n        } else if (c >= 194 && c < 224) {\n            if (il - i >= 6) {\n                var c2 = parseInt(str.substr(i + 4, 2), 16);\n                newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n            } else {\n                newStr += str.substr(i, 6);\n            }\n            i += 6;\n        } else if (c >= 224) {\n            if (il - i >= 9) {\n                var _c = parseInt(str.substr(i + 4, 2), 16);\n                var c3 = parseInt(str.substr(i + 7, 2), 16);\n                newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n            } else {\n                newStr += str.substr(i, 9);\n            }\n            i += 9;\n        } else {\n            newStr += str.substr(i, 3);\n            i += 3;\n        }\n    }\n    return newStr;\n}\nfunction _normalizeComponentEncoding(components, protocol) {\n    function decodeUnreserved(str) {\n        var decStr = pctDecChars(str);\n        return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n    }\n    if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n    if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n    if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n    if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n    if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n    if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n    return components;\n}\n\nfunction _stripLeadingZeros(str) {\n    return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\nfunction _normalizeIPv4(host, protocol) {\n    var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n    var _matches = slicedToArray(matches, 2),\n        address = _matches[1];\n\n    if (address) {\n        return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n    } else {\n        return host;\n    }\n}\nfunction _normalizeIPv6(host, protocol) {\n    var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n    var _matches2 = slicedToArray(matches, 3),\n        address = _matches2[1],\n        zone = _matches2[2];\n\n    if (address) {\n        var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n            _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n            last = _address$toLowerCase$2[0],\n            first = _address$toLowerCase$2[1];\n\n        var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n        var lastFields = last.split(\":\").map(_stripLeadingZeros);\n        var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n        var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n        var lastFieldsStart = lastFields.length - fieldCount;\n        var fields = Array(fieldCount);\n        for (var x = 0; x < fieldCount; ++x) {\n            fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n        }\n        if (isLastFieldIPv4Address) {\n            fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n        }\n        var allZeroFields = fields.reduce(function (acc, field, index) {\n            if (!field || field === \"0\") {\n                var lastLongest = acc[acc.length - 1];\n                if (lastLongest && lastLongest.index + lastLongest.length === index) {\n                    lastLongest.length++;\n                } else {\n                    acc.push({ index: index, length: 1 });\n                }\n            }\n            return acc;\n        }, []);\n        var longestZeroFields = allZeroFields.sort(function (a, b) {\n            return b.length - a.length;\n        })[0];\n        var newHost = void 0;\n        if (longestZeroFields && longestZeroFields.length > 1) {\n            var newFirst = fields.slice(0, longestZeroFields.index);\n            var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n            newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n        } else {\n            newHost = fields.join(\":\");\n        }\n        if (zone) {\n            newHost += \"%\" + zone;\n        }\n        return newHost;\n    } else {\n        return host;\n    }\n}\nvar URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nvar NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\nfunction parse(uriString) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    var components = {};\n    var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n    if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n    var matches = uriString.match(URI_PARSE);\n    if (matches) {\n        if (NO_MATCH_IS_UNDEFINED) {\n            //store each component\n            components.scheme = matches[1];\n            components.userinfo = matches[3];\n            components.host = matches[4];\n            components.port = parseInt(matches[5], 10);\n            components.path = matches[6] || \"\";\n            components.query = matches[7];\n            components.fragment = matches[8];\n            //fix port number\n            if (isNaN(components.port)) {\n                components.port = matches[5];\n            }\n        } else {\n            //IE FIX for improper RegExp matching\n            //store each component\n            components.scheme = matches[1] || undefined;\n            components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n            components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n            components.port = parseInt(matches[5], 10);\n            components.path = matches[6] || \"\";\n            components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n            components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined;\n            //fix port number\n            if (isNaN(components.port)) {\n                components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n            }\n        }\n        if (components.host) {\n            //normalize IP hosts\n            components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n        }\n        //determine reference type\n        if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n            components.reference = \"same-document\";\n        } else if (components.scheme === undefined) {\n            components.reference = \"relative\";\n        } else if (components.fragment === undefined) {\n            components.reference = \"absolute\";\n        } else {\n            components.reference = \"uri\";\n        }\n        //check for reference errors\n        if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n            components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n        }\n        //find scheme handler\n        var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n        //check if scheme can't handle IRIs\n        if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n            //if host component is a domain name\n            if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n                //convert Unicode IDN -> ASCII IDN\n                try {\n                    components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n                } catch (e) {\n                    components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n                }\n            }\n            //convert IRI -> URI\n            _normalizeComponentEncoding(components, URI_PROTOCOL);\n        } else {\n            //normalize encodings\n            _normalizeComponentEncoding(components, protocol);\n        }\n        //perform scheme specific parsing\n        if (schemeHandler && schemeHandler.parse) {\n            schemeHandler.parse(components, options);\n        }\n    } else {\n        components.error = components.error || \"URI can not be parsed.\";\n    }\n    return components;\n}\n\nfunction _recomposeAuthority(components, options) {\n    var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n    var uriTokens = [];\n    if (components.userinfo !== undefined) {\n        uriTokens.push(components.userinfo);\n        uriTokens.push(\"@\");\n    }\n    if (components.host !== undefined) {\n        //normalize IP hosts, add brackets and escape zone separator for IPv6\n        uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n            return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n        }));\n    }\n    if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n        uriTokens.push(\":\");\n        uriTokens.push(String(components.port));\n    }\n    return uriTokens.length ? uriTokens.join(\"\") : undefined;\n}\n\nvar RDS1 = /^\\.\\.?\\//;\nvar RDS2 = /^\\/\\.(\\/|$)/;\nvar RDS3 = /^\\/\\.\\.(\\/|$)/;\nvar RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\nfunction removeDotSegments(input) {\n    var output = [];\n    while (input.length) {\n        if (input.match(RDS1)) {\n            input = input.replace(RDS1, \"\");\n        } else if (input.match(RDS2)) {\n            input = input.replace(RDS2, \"/\");\n        } else if (input.match(RDS3)) {\n            input = input.replace(RDS3, \"/\");\n            output.pop();\n        } else if (input === \".\" || input === \"..\") {\n            input = \"\";\n        } else {\n            var im = input.match(RDS5);\n            if (im) {\n                var s = im[0];\n                input = input.slice(s.length);\n                output.push(s);\n            } else {\n                throw new Error(\"Unexpected dot segment condition\");\n            }\n        }\n    }\n    return output.join(\"\");\n}\n\nfunction serialize(components) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n    var uriTokens = [];\n    //find scheme handler\n    var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n    //perform scheme specific serialization\n    if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n    if (components.host) {\n        //if host component is an IPv6 address\n        if (protocol.IPV6ADDRESS.test(components.host)) {}\n        //TODO: normalize IPv6 address as per RFC 5952\n\n        //if host component is a domain name\n        else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n                //convert IDN via punycode\n                try {\n                    components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n                } catch (e) {\n                    components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n                }\n            }\n    }\n    //normalize encoding\n    _normalizeComponentEncoding(components, protocol);\n    if (options.reference !== \"suffix\" && components.scheme) {\n        uriTokens.push(components.scheme);\n        uriTokens.push(\":\");\n    }\n    var authority = _recomposeAuthority(components, options);\n    if (authority !== undefined) {\n        if (options.reference !== \"suffix\") {\n            uriTokens.push(\"//\");\n        }\n        uriTokens.push(authority);\n        if (components.path && components.path.charAt(0) !== \"/\") {\n            uriTokens.push(\"/\");\n        }\n    }\n    if (components.path !== undefined) {\n        var s = components.path;\n        if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n            s = removeDotSegments(s);\n        }\n        if (authority === undefined) {\n            s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n        }\n        uriTokens.push(s);\n    }\n    if (components.query !== undefined) {\n        uriTokens.push(\"?\");\n        uriTokens.push(components.query);\n    }\n    if (components.fragment !== undefined) {\n        uriTokens.push(\"#\");\n        uriTokens.push(components.fragment);\n    }\n    return uriTokens.join(\"\"); //merge tokens into a string\n}\n\nfunction resolveComponents(base, relative) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var skipNormalization = arguments[3];\n\n    var target = {};\n    if (!skipNormalization) {\n        base = parse(serialize(base, options), options); //normalize base components\n        relative = parse(serialize(relative, options), options); //normalize relative components\n    }\n    options = options || {};\n    if (!options.tolerant && relative.scheme) {\n        target.scheme = relative.scheme;\n        //target.authority = relative.authority;\n        target.userinfo = relative.userinfo;\n        target.host = relative.host;\n        target.port = relative.port;\n        target.path = removeDotSegments(relative.path || \"\");\n        target.query = relative.query;\n    } else {\n        if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n            //target.authority = relative.authority;\n            target.userinfo = relative.userinfo;\n            target.host = relative.host;\n            target.port = relative.port;\n            target.path = removeDotSegments(relative.path || \"\");\n            target.query = relative.query;\n        } else {\n            if (!relative.path) {\n                target.path = base.path;\n                if (relative.query !== undefined) {\n                    target.query = relative.query;\n                } else {\n                    target.query = base.query;\n                }\n            } else {\n                if (relative.path.charAt(0) === \"/\") {\n                    target.path = removeDotSegments(relative.path);\n                } else {\n                    if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n                        target.path = \"/\" + relative.path;\n                    } else if (!base.path) {\n                        target.path = relative.path;\n                    } else {\n                        target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n                    }\n                    target.path = removeDotSegments(target.path);\n                }\n                target.query = relative.query;\n            }\n            //target.authority = base.authority;\n            target.userinfo = base.userinfo;\n            target.host = base.host;\n            target.port = base.port;\n        }\n        target.scheme = base.scheme;\n    }\n    target.fragment = relative.fragment;\n    return target;\n}\n\nfunction resolve(baseURI, relativeURI, options) {\n    var schemelessOptions = assign({ scheme: 'null' }, options);\n    return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n}\n\nfunction normalize(uri, options) {\n    if (typeof uri === \"string\") {\n        uri = serialize(parse(uri, options), options);\n    } else if (typeOf(uri) === \"object\") {\n        uri = parse(serialize(uri, options), options);\n    }\n    return uri;\n}\n\nfunction equal(uriA, uriB, options) {\n    if (typeof uriA === \"string\") {\n        uriA = serialize(parse(uriA, options), options);\n    } else if (typeOf(uriA) === \"object\") {\n        uriA = serialize(uriA, options);\n    }\n    if (typeof uriB === \"string\") {\n        uriB = serialize(parse(uriB, options), options);\n    } else if (typeOf(uriB) === \"object\") {\n        uriB = serialize(uriB, options);\n    }\n    return uriA === uriB;\n}\n\nfunction escapeComponent(str, options) {\n    return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n}\n\nfunction unescapeComponent(str, options) {\n    return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n}\n\nvar handler = {\n    scheme: \"http\",\n    domainHost: true,\n    parse: function parse(components, options) {\n        //report missing host\n        if (!components.host) {\n            components.error = components.error || \"HTTP URIs must have a host.\";\n        }\n        return components;\n    },\n    serialize: function serialize(components, options) {\n        var secure = String(components.scheme).toLowerCase() === \"https\";\n        //normalize the default port\n        if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n            components.port = undefined;\n        }\n        //normalize the empty path\n        if (!components.path) {\n            components.path = \"/\";\n        }\n        //NOTE: We do not parse query strings for HTTP URIs\n        //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n        //and not the HTTP spec.\n        return components;\n    }\n};\n\nvar handler$1 = {\n    scheme: \"https\",\n    domainHost: handler.domainHost,\n    parse: handler.parse,\n    serialize: handler.serialize\n};\n\nfunction isSecure(wsComponents) {\n    return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n//RFC 6455\nvar handler$2 = {\n    scheme: \"ws\",\n    domainHost: true,\n    parse: function parse(components, options) {\n        var wsComponents = components;\n        //indicate if the secure flag is set\n        wsComponents.secure = isSecure(wsComponents);\n        //construct resouce name\n        wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n        wsComponents.path = undefined;\n        wsComponents.query = undefined;\n        return wsComponents;\n    },\n    serialize: function serialize(wsComponents, options) {\n        //normalize the default port\n        if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n            wsComponents.port = undefined;\n        }\n        //ensure scheme matches secure flag\n        if (typeof wsComponents.secure === 'boolean') {\n            wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n            wsComponents.secure = undefined;\n        }\n        //reconstruct path from resource name\n        if (wsComponents.resourceName) {\n            var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n                _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n                path = _wsComponents$resourc2[0],\n                query = _wsComponents$resourc2[1];\n\n            wsComponents.path = path && path !== '/' ? path : undefined;\n            wsComponents.query = query;\n            wsComponents.resourceName = undefined;\n        }\n        //forbid fragment component\n        wsComponents.fragment = undefined;\n        return wsComponents;\n    }\n};\n\nvar handler$3 = {\n    scheme: \"wss\",\n    domainHost: handler$2.domainHost,\n    parse: handler$2.parse,\n    serialize: handler$2.serialize\n};\n\nvar O = {};\nvar isIRI = true;\n//RFC 3986\nvar UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nvar HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nvar PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\";  //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$);  //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$));  //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nvar ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nvar QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nvar VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nvar SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nvar UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nvar PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nvar NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nvar NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nvar NOT_HFVALUE = NOT_HFNAME;\nfunction decodeUnreserved(str) {\n    var decStr = pctDecChars(str);\n    return !decStr.match(UNRESERVED) ? str : decStr;\n}\nvar handler$4 = {\n    scheme: \"mailto\",\n    parse: function parse$$1(components, options) {\n        var mailtoComponents = components;\n        var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n        mailtoComponents.path = undefined;\n        if (mailtoComponents.query) {\n            var unknownHeaders = false;\n            var headers = {};\n            var hfields = mailtoComponents.query.split(\"&\");\n            for (var x = 0, xl = hfields.length; x < xl; ++x) {\n                var hfield = hfields[x].split(\"=\");\n                switch (hfield[0]) {\n                    case \"to\":\n                        var toAddrs = hfield[1].split(\",\");\n                        for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n                            to.push(toAddrs[_x]);\n                        }\n                        break;\n                    case \"subject\":\n                        mailtoComponents.subject = unescapeComponent(hfield[1], options);\n                        break;\n                    case \"body\":\n                        mailtoComponents.body = unescapeComponent(hfield[1], options);\n                        break;\n                    default:\n                        unknownHeaders = true;\n                        headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n                        break;\n                }\n            }\n            if (unknownHeaders) mailtoComponents.headers = headers;\n        }\n        mailtoComponents.query = undefined;\n        for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n            var addr = to[_x2].split(\"@\");\n            addr[0] = unescapeComponent(addr[0]);\n            if (!options.unicodeSupport) {\n                //convert Unicode IDN -> ASCII IDN\n                try {\n                    addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n                } catch (e) {\n                    mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n                }\n            } else {\n                addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n            }\n            to[_x2] = addr.join(\"@\");\n        }\n        return mailtoComponents;\n    },\n    serialize: function serialize$$1(mailtoComponents, options) {\n        var components = mailtoComponents;\n        var to = toArray(mailtoComponents.to);\n        if (to) {\n            for (var x = 0, xl = to.length; x < xl; ++x) {\n                var toAddr = String(to[x]);\n                var atIdx = toAddr.lastIndexOf(\"@\");\n                var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n                var domain = toAddr.slice(atIdx + 1);\n                //convert IDN via punycode\n                try {\n                    domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n                } catch (e) {\n                    components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n                }\n                to[x] = localPart + \"@\" + domain;\n            }\n            components.path = to.join(\",\");\n        }\n        var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n        if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n        if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n        var fields = [];\n        for (var name in headers) {\n            if (headers[name] !== O[name]) {\n                fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n            }\n        }\n        if (fields.length) {\n            components.query = fields.join(\"&\");\n        }\n        return components;\n    }\n};\n\nvar URN_PARSE = /^([^\\:]+)\\:(.*)/;\n//RFC 2141\nvar handler$5 = {\n    scheme: \"urn\",\n    parse: function parse$$1(components, options) {\n        var matches = components.path && components.path.match(URN_PARSE);\n        var urnComponents = components;\n        if (matches) {\n            var scheme = options.scheme || urnComponents.scheme || \"urn\";\n            var nid = matches[1].toLowerCase();\n            var nss = matches[2];\n            var urnScheme = scheme + \":\" + (options.nid || nid);\n            var schemeHandler = SCHEMES[urnScheme];\n            urnComponents.nid = nid;\n            urnComponents.nss = nss;\n            urnComponents.path = undefined;\n            if (schemeHandler) {\n                urnComponents = schemeHandler.parse(urnComponents, options);\n            }\n        } else {\n            urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n        }\n        return urnComponents;\n    },\n    serialize: function serialize$$1(urnComponents, options) {\n        var scheme = options.scheme || urnComponents.scheme || \"urn\";\n        var nid = urnComponents.nid;\n        var urnScheme = scheme + \":\" + (options.nid || nid);\n        var schemeHandler = SCHEMES[urnScheme];\n        if (schemeHandler) {\n            urnComponents = schemeHandler.serialize(urnComponents, options);\n        }\n        var uriComponents = urnComponents;\n        var nss = urnComponents.nss;\n        uriComponents.path = (nid || options.nid) + \":\" + nss;\n        return uriComponents;\n    }\n};\n\nvar UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n//RFC 4122\nvar handler$6 = {\n    scheme: \"urn:uuid\",\n    parse: function parse(urnComponents, options) {\n        var uuidComponents = urnComponents;\n        uuidComponents.uuid = uuidComponents.nss;\n        uuidComponents.nss = undefined;\n        if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n            uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n        }\n        return uuidComponents;\n    },\n    serialize: function serialize(uuidComponents, options) {\n        var urnComponents = uuidComponents;\n        //normalize UUID\n        urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n        return urnComponents;\n    }\n};\n\nSCHEMES[handler.scheme] = handler;\nSCHEMES[handler$1.scheme] = handler$1;\nSCHEMES[handler$2.scheme] = handler$2;\nSCHEMES[handler$3.scheme] = handler$3;\nSCHEMES[handler$4.scheme] = handler$4;\nSCHEMES[handler$5.scheme] = handler$5;\nSCHEMES[handler$6.scheme] = handler$6;\n\nexports.SCHEMES = SCHEMES;\nexports.pctEncChar = pctEncChar;\nexports.pctDecChars = pctDecChars;\nexports.parse = parse;\nexports.removeDotSegments = removeDotSegments;\nexports.serialize = serialize;\nexports.resolveComponents = resolveComponents;\nexports.resolve = resolve;\nexports.normalize = normalize;\nexports.equal = equal;\nexports.escapeComponent = escapeComponent;\nexports.unescapeComponent = unescapeComponent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=uri.all.js.map\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): This should be described as implementing some\n// InsightsPublisher interface.\n'use strict';\n/**\n * Null Insights publisher.\n */\nvar InsightsPublisher = /** @class */ (function () {\n    function InsightsPublisher() {\n        Object.defineProperties(this, {\n            _connected: {\n                writable: true,\n                value: true\n            }\n        });\n    }\n    /**\n     * Connect\n     * @returns {void}\n     */\n    InsightsPublisher.prototype.connect = function () {\n    };\n    /**\n     * Disconnect.\n     * @returns {boolean}\n     */\n    InsightsPublisher.prototype.disconnect = function () {\n        if (this._connected) {\n            this._connected = false;\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Publish.\n     * @returns {boolean}\n     */\n    InsightsPublisher.prototype.publish = function () {\n        return this._connected;\n    };\n    return InsightsPublisher;\n}());\nmodule.exports = InsightsPublisher;\n//# sourceMappingURL=null.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = 'label';\nfunction reforwardRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    } else if (ref) {\n        ref.current = value;\n    }\n}\nfunction setOptions(chart, nextOptions) {\n    chart.options = {\n        ...nextOptions\n    };\n}\nfunction setLabels(currentData, nextLabels) {\n    currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets) {\n    let datasetIdKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultDatasetIdKey;\n    const addedDatasets = [];\n    currentData.datasets = nextDatasets.map((nextDataset)=>{\n        // given the new set, find it's current match\n        const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n        );\n        // There is no original to update, so simply add new one\n        if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n            return {\n                ...nextDataset\n            };\n        }\n        addedDatasets.push(currentDataset);\n        Object.assign(currentDataset, nextDataset);\n        return currentDataset;\n    });\n}\nfunction cloneData(data) {\n    let datasetIdKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultDatasetIdKey;\n    const nextData = {\n        labels: [],\n        datasets: []\n    };\n    setLabels(nextData, data.labels);\n    setDatasets(nextData, data.datasets, datasetIdKey);\n    return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n    return chart.getElementsAtEventForMode(event.nativeEvent, 'dataset', {\n        intersect: true\n    }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n    return chart.getElementsAtEventForMode(event.nativeEvent, 'nearest', {\n        intersect: true\n    }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n    return chart.getElementsAtEventForMode(event.nativeEvent, 'index', {\n        intersect: true\n    }, false);\n}\n\nfunction ChartComponent(param, ref) {\n    let { height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , updateMode , ...props } = param;\n    const canvasRef = useRef(null);\n    const chartRef = useRef();\n    const renderChart = ()=>{\n        if (!canvasRef.current) return;\n        chartRef.current = new Chart$1(canvasRef.current, {\n            type,\n            data: cloneData(data, datasetIdKey),\n            options,\n            plugins\n        });\n        reforwardRef(ref, chartRef.current);\n    };\n    const destroyChart = ()=>{\n        reforwardRef(ref, null);\n        if (chartRef.current) {\n            chartRef.current.destroy();\n            chartRef.current = null;\n        }\n    };\n    useEffect(()=>{\n        if (!redraw && chartRef.current && options) {\n            setOptions(chartRef.current, options);\n        }\n    }, [\n        redraw,\n        options\n    ]);\n    useEffect(()=>{\n        if (!redraw && chartRef.current) {\n            setLabels(chartRef.current.config.data, data.labels);\n        }\n    }, [\n        redraw,\n        data.labels\n    ]);\n    useEffect(()=>{\n        if (!redraw && chartRef.current && data.datasets) {\n            setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n        }\n    }, [\n        redraw,\n        data.datasets\n    ]);\n    useEffect(()=>{\n        if (!chartRef.current) return;\n        if (redraw) {\n            destroyChart();\n            setTimeout(renderChart);\n        } else {\n            chartRef.current.update(updateMode);\n        }\n    }, [\n        redraw,\n        options,\n        data.labels,\n        data.datasets,\n        updateMode\n    ]);\n    useEffect(()=>{\n        renderChart();\n        return ()=>destroyChart()\n        ;\n    }, []);\n    return(/*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n        ref: canvasRef,\n        role: \"img\",\n        height: height,\n        width: width\n    }, props), fallbackContent));\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n    Chart$1.register(registerables);\n    return(/*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({}, props, {\n            ref: ref,\n            type: type\n        }))\n    ));\n}\nconst Line = /* #__PURE__ */ createTypedChart('line', LineController);\nconst Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\nconst Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart('doughnut', DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart('polarArea', PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart('bubble', BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart('scatter', ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.js.map\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","'use strict';\n/**\n * Statistics for a {@link Track}.\n * @property {Track.ID} trackId - The {@link Track} ID\n * @property {Track.SID} trackSid - The {@link Track}'s SID when published in\n *  in a {@link Room}\n * @property {number} timestamp - A Unix timestamp in milliseconds indicating\n *   when the {@link TrackStats} were gathered\n * @property {string} ssrc - The {@link Track}'s SSRC when transmitted over the\n *   RTCPeerConnection\n * @property {?number} packetsLost - The number of packets lost\n * @property {?string} codec - The name of the codec used to encode the\n *   {@link Track}'s media\n */\nvar TrackStats = /** @class */ (function () {\n    /**\n     * @param {string} trackId - {@link Track} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function TrackStats(trackId, statsReport) {\n        if (typeof trackId !== 'string') {\n            throw new Error('Track id must be a string');\n        }\n        Object.defineProperties(this, {\n            trackId: {\n                value: trackId,\n                enumerable: true\n            },\n            trackSid: {\n                value: statsReport.trackSid,\n                enumerable: true\n            },\n            timestamp: {\n                value: statsReport.timestamp,\n                enumerable: true\n            },\n            ssrc: {\n                value: statsReport.ssrc,\n                enumerable: true\n            },\n            packetsLost: {\n                value: typeof statsReport.packetsLost === 'number'\n                    ? statsReport.packetsLost\n                    : null,\n                enumerable: true\n            },\n            codec: {\n                value: typeof statsReport.codecName === 'string'\n                    ? statsReport.codecName\n                    : null,\n                enumerable: true\n            }\n        });\n    }\n    return TrackStats;\n}());\nmodule.exports = TrackStats;\n//# sourceMappingURL=trackstats.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.try.js');\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nvar IdxStatus;\n(function (IdxStatus) {\n    IdxStatus[\"SUCCESS\"] = \"SUCCESS\";\n    IdxStatus[\"PENDING\"] = \"PENDING\";\n    IdxStatus[\"FAILURE\"] = \"FAILURE\";\n    IdxStatus[\"TERMINAL\"] = \"TERMINAL\";\n    IdxStatus[\"CANCELED\"] = \"CANCELED\";\n})(IdxStatus || (IdxStatus = {}));\nvar AuthenticatorKey;\n(function (AuthenticatorKey) {\n    AuthenticatorKey[\"OKTA_PASSWORD\"] = \"okta_password\";\n    AuthenticatorKey[\"OKTA_EMAIL\"] = \"okta_email\";\n    AuthenticatorKey[\"PHONE_NUMBER\"] = \"phone_number\";\n    AuthenticatorKey[\"GOOGLE_AUTHENTICATOR\"] = \"google_otp\";\n    AuthenticatorKey[\"SECURITY_QUESTION\"] = \"security_question\";\n    AuthenticatorKey[\"OKTA_VERIFY\"] = \"okta_verify\";\n    AuthenticatorKey[\"WEBAUTHN\"] = \"webauthn\";\n})(AuthenticatorKey || (AuthenticatorKey = {}));\nvar IdxFeature;\n(function (IdxFeature) {\n    IdxFeature[\"PASSWORD_RECOVERY\"] = \"recover-password\";\n    IdxFeature[\"REGISTRATION\"] = \"enroll-profile\";\n    IdxFeature[\"SOCIAL_IDP\"] = \"redirect-idp\";\n    IdxFeature[\"ACCOUNT_UNLOCK\"] = \"unlock-account\";\n})(IdxFeature || (IdxFeature = {}));\nfunction isAuthenticator(obj) {\n    return obj && (obj.key || obj.id);\n}\n\nexport { AuthenticatorKey, IdxFeature, IdxStatus, isAuthenticator };\n//# sourceMappingURL=api.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction getNativeConsole() {\n    if (typeof window !== 'undefined') {\n        return window.console;\n    }\n    else if (typeof console !== 'undefined') {\n        return console;\n    }\n    else {\n        return undefined;\n    }\n}\nfunction getConsole() {\n    var nativeConsole = getNativeConsole();\n    if (nativeConsole && nativeConsole.log) {\n        return nativeConsole;\n    }\n    return {\n        log: function () { },\n        warn: function () { },\n        group: function () { },\n        groupEnd: function () { }\n    };\n}\nfunction warn(text) {\n    getConsole().warn('[okta-auth-sdk] WARN: ' + text);\n}\nfunction deprecate(text) {\n    getConsole().warn('[okta-auth-sdk] DEPRECATION: ' + text);\n}\nfunction deprecateWrap(text, fn) {\n    return function () {\n        deprecate(text);\n        return fn.apply(null, arguments);\n    };\n}\n\nexport { deprecate, deprecateWrap, getConsole, getNativeConsole, warn };\n//# sourceMappingURL=console.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction bind(fn, ctx) {\n    var additionalArgs = Array.prototype.slice.call(arguments, 2);\n    return function () {\n        var args = Array.prototype.slice.call(arguments);\n        args = additionalArgs.concat(args);\n        return fn.apply(ctx, args);\n    };\n}\nfunction extend() {\n    var obj1 = arguments[0];\n    var objArray = [].slice.call(arguments, 1);\n    objArray.forEach(function (obj) {\n        for (var prop in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined) {\n                obj1[prop] = obj[prop];\n            }\n        }\n    });\n    return obj1;\n}\nfunction removeNils(obj) {\n    var cleaned = {};\n    for (var prop in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n            var value = obj[prop];\n            if (value !== null && value !== undefined) {\n                cleaned[prop] = value;\n            }\n        }\n    }\n    return cleaned;\n}\nfunction clone(obj) {\n    if (obj) {\n        var str = JSON.stringify(obj);\n        if (str) {\n            return JSON.parse(str);\n        }\n    }\n    return obj;\n}\nfunction omit(obj, ...props) {\n    var newobj = {};\n    for (var p in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, p) && props.indexOf(p) == -1) {\n            newobj[p] = obj[p];\n        }\n    }\n    return clone(newobj);\n}\nfunction find(collection, searchParams) {\n    var c = collection.length;\n    while (c--) {\n        var item = collection[c];\n        var found = true;\n        for (var prop in searchParams) {\n            if (!Object.prototype.hasOwnProperty.call(searchParams, prop)) {\n                continue;\n            }\n            if (item[prop] !== searchParams[prop]) {\n                found = false;\n                break;\n            }\n        }\n        if (found) {\n            return item;\n        }\n    }\n}\nfunction getLink(obj, linkName, altName) {\n    if (!obj || !obj._links) {\n        return;\n    }\n    var link = clone(obj._links[linkName]);\n    if (link && link.name && altName) {\n        if (link.name === altName) {\n            return link;\n        }\n    }\n    else {\n        return link;\n    }\n}\n\nexport { bind, clone, extend, find, getLink, omit, removeNils };\n//# sourceMappingURL=object.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nclass CustomError extends Error {\n    constructor(message) {\n        super(message);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\n\nexport { CustomError as default };\n//# sourceMappingURL=CustomError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction isString(obj) {\n    return Object.prototype.toString.call(obj) === '[object String]';\n}\nfunction isObject(obj) {\n    return Object.prototype.toString.call(obj) === '[object Object]';\n}\nfunction isNumber(obj) {\n    return Object.prototype.toString.call(obj) === '[object Number]';\n}\nfunction isFunction(fn) {\n    return !!fn && {}.toString.call(fn) === '[object Function]';\n}\nfunction isPromise(obj) {\n    return obj && obj.finally && (typeof obj.finally === 'function');\n}\n\nexport { isFunction, isNumber, isObject, isPromise, isString };\n//# sourceMappingURL=types.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError.js';\nimport { isFunction } from '../util/types.js';\n\nclass WWWAuthError extends CustomError {\n    constructor(scheme, parameters, resp) {\n        var _a;\n        super((_a = parameters.error) !== null && _a !== void 0 ? _a : WWWAuthError.UNKNOWN_ERROR);\n        this.name = 'WWWAuthError';\n        this.resp = null;\n        this.scheme = scheme;\n        this.parameters = parameters;\n        if (resp) {\n            this.resp = resp;\n        }\n    }\n    get error() { return this.parameters.error; }\n    get errorCode() { return this.error; }\n    get error_description() { return this.parameters.error_description; }\n    get errorDescription() { return this.error_description; }\n    get errorSummary() { return this.errorDescription; }\n    get realm() { return this.parameters.realm; }\n    static parseHeader(header) {\n        var _a;\n        if (!header) {\n            return null;\n        }\n        const regex = /(?:,|, )?([a-zA-Z0-9!#$%&'*+\\-.^_`|~]+)=(?:\"([a-zA-Z0-9!#$%&'*+\\-.,^_`|~ /:]+)\"|([a-zA-Z0-9!#$%&'*+\\-.^_`|~/:]+))/g;\n        const firstSpace = header.indexOf(' ');\n        const scheme = header.slice(0, firstSpace);\n        const remaining = header.slice(firstSpace + 1);\n        const params = {};\n        let match;\n        while ((match = regex.exec(remaining)) !== null) {\n            params[match[1]] = ((_a = match[2]) !== null && _a !== void 0 ? _a : match[3]);\n        }\n        return new WWWAuthError(scheme, params);\n    }\n    static getWWWAuthenticateHeader(headers = {}) {\n        var _a;\n        if (isFunction(headers === null || headers === void 0 ? void 0 : headers.get)) {\n            return headers.get('WWW-Authenticate');\n        }\n        return (_a = headers['www-authenticate']) !== null && _a !== void 0 ? _a : headers['WWW-Authenticate'];\n    }\n}\nWWWAuthError.UNKNOWN_ERROR = 'UNKNOWN_WWW_AUTH_ERROR';\n\nexport { WWWAuthError as default };\n//# sourceMappingURL=WWWAuthError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction isoToUTCString(str) {\n    var parts = str.match(/\\d+/g), isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]), isoDate = new Date(isoTime);\n    return isoDate.toUTCString();\n}\nfunction genRandomString(length) {\n    var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n    var random = '';\n    for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n        random += randomCharset[Math.floor(Math.random() * cl)];\n    }\n    return random;\n}\nfunction delay(ms) {\n    return new Promise(function (resolve) {\n        setTimeout(resolve, ms);\n    });\n}\nfunction split2(str, delim) {\n    const parts = str.split(delim);\n    return [\n        parts[0],\n        parts.splice(1, parts.length).join(delim),\n    ];\n}\n\nexport { delay, genRandomString, isoToUTCString, split2 };\n//# sourceMappingURL=misc.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction isAbsoluteUrl(url) {\n    return /^[a-z][a-z0-9+.-]*:/i.test(url);\n}\nfunction toAbsoluteUrl(url = '', baseUrl) {\n    if (isAbsoluteUrl(url)) {\n        return url;\n    }\n    baseUrl = removeTrailingSlash(baseUrl);\n    return url[0] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n}\nfunction toRelativeUrl(url = '', baseUrl) {\n    if (isAbsoluteUrl(url)) {\n        url = url.substring(baseUrl.length);\n    }\n    return url[0] === '/' ? url : `/${url}`;\n}\nfunction toQueryString(obj) {\n    var str = [];\n    if (obj !== null) {\n        for (var key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key) &&\n                obj[key] !== undefined &&\n                obj[key] !== null) {\n                str.push(key + '=' + encodeURIComponent(obj[key]));\n            }\n        }\n    }\n    if (str.length) {\n        return '?' + str.join('&');\n    }\n    else {\n        return '';\n    }\n}\nfunction removeTrailingSlash(path) {\n    if (!path) {\n        return;\n    }\n    var trimmed = path.replace(/^\\s+|\\s+$/gm, '');\n    trimmed = trimmed.replace(/\\/+$/, '');\n    return trimmed;\n}\n\nexport { isAbsoluteUrl, removeTrailingSlash, toAbsoluteUrl, toQueryString, toRelativeUrl };\n//# sourceMappingURL=url.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError.js';\n\nclass AuthSdkError extends CustomError {\n    constructor(msg, xhr) {\n        super(msg);\n        this.name = 'AuthSdkError';\n        this.errorCode = 'INTERNAL';\n        this.errorSummary = msg;\n        this.errorLink = 'INTERNAL';\n        this.errorId = 'INTERNAL';\n        this.errorCauses = [];\n        if (xhr) {\n            this.xhr = xhr;\n        }\n    }\n}\n\nexport { AuthSdkError as default };\n//# sourceMappingURL=AuthSdkError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { genRandomString } from '../../util/misc.js';\nimport { removeTrailingSlash } from '../../util/url.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\n\nfunction generateState() {\n    return genRandomString(64);\n}\nfunction generateNonce() {\n    return genRandomString(64);\n}\nfunction getIssuer(sdk, options = {}) {\n    const issuer = removeTrailingSlash(options.issuer) || sdk.options.issuer;\n    return issuer;\n}\nfunction getOAuthBaseUrl(sdk, options = {}) {\n    const issuer = getIssuer(sdk, options);\n    const baseUrl = issuer.indexOf('/oauth2') > 0 ? issuer : issuer + '/oauth2';\n    return baseUrl;\n}\nfunction getOAuthDomain(sdk, options = {}) {\n    const issuer = getIssuer(sdk, options);\n    const domain = issuer.split('/oauth2')[0];\n    return domain;\n}\nfunction getOAuthUrls(sdk, options) {\n    if (arguments.length > 2) {\n        throw new AuthSdkError('As of version 3.0, \"getOAuthUrls\" takes only a single set of options');\n    }\n    options = options || {};\n    var authorizeUrl = removeTrailingSlash(options.authorizeUrl) || sdk.options.authorizeUrl;\n    var issuer = getIssuer(sdk, options);\n    var userinfoUrl = removeTrailingSlash(options.userinfoUrl) || sdk.options.userinfoUrl;\n    var tokenUrl = removeTrailingSlash(options.tokenUrl) || sdk.options.tokenUrl;\n    var logoutUrl = removeTrailingSlash(options.logoutUrl) || sdk.options.logoutUrl;\n    var revokeUrl = removeTrailingSlash(options.revokeUrl) || sdk.options.revokeUrl;\n    var baseUrl = getOAuthBaseUrl(sdk, options);\n    authorizeUrl = authorizeUrl || baseUrl + '/v1/authorize';\n    userinfoUrl = userinfoUrl || baseUrl + '/v1/userinfo';\n    tokenUrl = tokenUrl || baseUrl + '/v1/token';\n    revokeUrl = revokeUrl || baseUrl + '/v1/revoke';\n    logoutUrl = logoutUrl || baseUrl + '/v1/logout';\n    return {\n        issuer: issuer,\n        authorizeUrl: authorizeUrl,\n        userinfoUrl: userinfoUrl,\n        tokenUrl: tokenUrl,\n        revokeUrl: revokeUrl,\n        logoutUrl: logoutUrl\n    };\n}\n\nexport { generateNonce, generateState, getOAuthBaseUrl, getOAuthDomain, getOAuthUrls };\n//# sourceMappingURL=oauth.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getOAuthUrls } from './oauth.js';\n\nfunction createOAuthMeta(sdk, tokenParams) {\n    const issuer = sdk.options.issuer;\n    const urls = getOAuthUrls(sdk, tokenParams);\n    const oauthMeta = {\n        issuer,\n        urls,\n        clientId: tokenParams.clientId,\n        redirectUri: tokenParams.redirectUri,\n        responseType: tokenParams.responseType,\n        responseMode: tokenParams.responseMode,\n        scopes: tokenParams.scopes,\n        state: tokenParams.state,\n        nonce: tokenParams.nonce,\n        ignoreSignature: tokenParams.ignoreSignature,\n        acrValues: tokenParams.acrValues,\n        extraParams: tokenParams.extraParams\n    };\n    if (tokenParams.pkce === false) {\n        return oauthMeta;\n    }\n    const pkceMeta = Object.assign(Object.assign({}, oauthMeta), { codeVerifier: tokenParams.codeVerifier, codeChallengeMethod: tokenParams.codeChallengeMethod, codeChallenge: tokenParams.codeChallenge });\n    return pkceMeta;\n}\n\nexport { createOAuthMeta };\n//# sourceMappingURL=oauthMeta.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nconst DEFAULT_POLLING_DELAY = 500;\nconst IOS_MAX_RETRY_COUNT = 3;\nconst DEFAULT_MAX_CLOCK_SKEW = 300;\nconst DEFAULT_CACHE_DURATION = 86400;\nconst TOKEN_STORAGE_NAME = 'okta-token-storage';\nconst CACHE_STORAGE_NAME = 'okta-cache-storage';\nconst PKCE_STORAGE_NAME = 'okta-pkce-storage';\nconst TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nconst SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';\nconst ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';\nconst IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nconst ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nconst ID_TOKEN_STORAGE_KEY = 'idToken';\nconst REFRESH_TOKEN_STORAGE_KEY = 'refreshToken';\nconst REFERRER_PATH_STORAGE_KEY = 'referrerPath';\nconst MIN_VERIFIER_LENGTH = 43;\nconst MAX_VERIFIER_LENGTH = 128;\nconst DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\nconst IDX_API_VERSION = '1.0.0';\n\nexport { ACCESS_TOKEN_STORAGE_KEY, CACHE_STORAGE_NAME, DEFAULT_CACHE_DURATION, DEFAULT_CODE_CHALLENGE_METHOD, DEFAULT_MAX_CLOCK_SKEW, DEFAULT_POLLING_DELAY, IDX_API_VERSION, IDX_RESPONSE_STORAGE_NAME, ID_TOKEN_STORAGE_KEY, IOS_MAX_RETRY_COUNT, MAX_VERIFIER_LENGTH, MIN_VERIFIER_LENGTH, ORIGINAL_URI_STORAGE_NAME, PKCE_STORAGE_NAME, REFERRER_PATH_STORAGE_KEY, REFRESH_TOKEN_STORAGE_KEY, SHARED_TRANSACTION_STORAGE_NAME, STATE_TOKEN_KEY_NAME, TOKEN_STORAGE_NAME, TRANSACTION_STORAGE_NAME };\n//# sourceMappingURL=constants.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError.js';\n\nclass AuthApiError extends CustomError {\n    constructor(err, xhr, meta) {\n        const message = err.errorSummary;\n        super(message);\n        this.name = 'AuthApiError';\n        this.errorSummary = err.errorSummary;\n        this.errorCode = err.errorCode;\n        this.errorLink = err.errorLink;\n        this.errorId = err.errorId;\n        this.errorCauses = err.errorCauses;\n        if (xhr) {\n            this.xhr = xhr;\n        }\n        if (meta) {\n            this.meta = meta;\n        }\n    }\n}\n\nexport { AuthApiError as default };\n//# sourceMappingURL=AuthApiError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError.js';\n\nclass OAuthError extends CustomError {\n    constructor(errorCode, summary, resp) {\n        super(summary);\n        this.resp = null;\n        this.name = 'OAuthError';\n        this.errorCode = errorCode;\n        this.errorSummary = summary;\n        this.error = errorCode;\n        this.error_description = summary;\n        if (resp) {\n            this.resp = resp;\n        }\n    }\n}\n\nexport { OAuthError as default };\n//# sourceMappingURL=OAuthError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst a = function (str) { return atob(str); };\nconst b = function (str) { return btoa(str); };\nconst c = typeof crypto === 'undefined' ? null : crypto;\n\nexport { a as atob, b as btoa, c as webcrypto };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport './errors/WWWAuthError.js';\nimport { webcrypto as c } from './crypto/browser.js';\n\nconst isWindowsPhone = /windows phone|iemobile|wpdesktop/i;\nfunction isBrowser() {\n    return typeof document !== 'undefined' && typeof window !== 'undefined';\n}\nfunction isIE11OrLess() {\n    if (!isBrowser()) {\n        return false;\n    }\n    const documentMode = document.documentMode;\n    return !!documentMode && documentMode <= 11;\n}\nfunction getUserAgent() {\n    return navigator.userAgent;\n}\nfunction isFingerprintSupported() {\n    const agent = getUserAgent();\n    return agent && !isWindowsPhone.test(agent);\n}\nfunction isPopupPostMessageSupported() {\n    if (!isBrowser()) {\n        return false;\n    }\n    const documentMode = document.documentMode;\n    var isIE8or9 = documentMode && documentMode < 10;\n    if (typeof window.postMessage !== 'undefined' && !isIE8or9) {\n        return true;\n    }\n    return false;\n}\nfunction isWebCryptoSubtleSupported() {\n    return typeof c !== 'undefined'\n        && c !== null\n        && typeof c.subtle !== 'undefined'\n        && typeof Uint8Array !== 'undefined';\n}\nfunction isTokenVerifySupported() {\n    return isWebCryptoSubtleSupported();\n}\nfunction hasTextEncoder() {\n    return typeof TextEncoder !== 'undefined';\n}\nfunction isPKCESupported() {\n    return isTokenVerifySupported() && hasTextEncoder();\n}\nfunction isHTTPS() {\n    if (!isBrowser()) {\n        return false;\n    }\n    return window.location.protocol === 'https:';\n}\nfunction isLocalhost() {\n    return isBrowser() && window.location.hostname === 'localhost';\n}\nfunction isDPoPSupported() {\n    return !isIE11OrLess() &&\n        typeof window.indexedDB !== 'undefined' &&\n        hasTextEncoder() &&\n        isWebCryptoSubtleSupported();\n}\nfunction isIOS() {\n    return isBrowser() && typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined' &&\n        (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\n}\n\nexport { getUserAgent, hasTextEncoder, isBrowser, isDPoPSupported, isFingerprintSupported, isHTTPS, isIE11OrLess, isIOS, isLocalhost, isPKCESupported, isPopupPostMessageSupported, isTokenVerifySupported };\n//# sourceMappingURL=features.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { removeNils, clone } from '../util/object.js';\nimport { isString } from '../util/types.js';\nimport { isAbsoluteUrl } from '../util/url.js';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION, IOS_MAX_RETRY_COUNT } from '../constants.js';\nimport AuthApiError from '../errors/AuthApiError.js';\nimport OAuthError from '../errors/OAuthError.js';\nimport WWWAuthError from '../errors/WWWAuthError.js';\nimport { isBrowser } from '../features.js';\n\nlet dateDocumentBecameVisible = 0;\nlet trackDateDocumentBecameVisible;\nif (isBrowser()) {\n    dateDocumentBecameVisible = Date.now();\n    trackDateDocumentBecameVisible = () => {\n        if (!document.hidden) {\n            dateDocumentBecameVisible = Date.now();\n        }\n    };\n    document.addEventListener('visibilitychange', trackDateDocumentBecameVisible);\n}\nconst formatError = (sdk, error) => {\n    var _a;\n    if (error instanceof Error) {\n        return new AuthApiError({\n            errorSummary: error.message,\n        });\n    }\n    let resp = error;\n    let err;\n    let serverErr = {};\n    if (resp.responseText && isString(resp.responseText)) {\n        try {\n            serverErr = JSON.parse(resp.responseText);\n        }\n        catch (e) {\n            serverErr = {\n                errorSummary: 'Unknown error'\n            };\n        }\n    }\n    if (resp.status >= 500) {\n        serverErr.errorSummary = 'Unknown error';\n    }\n    if (sdk.options.transformErrorXHR) {\n        resp = sdk.options.transformErrorXHR(clone(resp));\n    }\n    const wwwAuthHeader = (_a = WWWAuthError.getWWWAuthenticateHeader(resp === null || resp === void 0 ? void 0 : resp.headers)) !== null && _a !== void 0 ? _a : '';\n    if (serverErr.error && serverErr.error_description) {\n        err = new OAuthError(serverErr.error, serverErr.error_description, resp);\n    }\n    else {\n        err = new AuthApiError(serverErr, resp, { wwwAuthHeader });\n    }\n    if (wwwAuthHeader && (resp === null || resp === void 0 ? void 0 : resp.status) >= 400 && (resp === null || resp === void 0 ? void 0 : resp.status) < 500) {\n        const wwwAuthErr = WWWAuthError.parseHeader(wwwAuthHeader);\n        if (resp.status === 403 && (wwwAuthErr === null || wwwAuthErr === void 0 ? void 0 : wwwAuthErr.error) === 'insufficient_authentication_context') {\n            const { max_age, acr_values } = wwwAuthErr.parameters;\n            err = new AuthApiError({\n                errorSummary: wwwAuthErr.error,\n                errorCauses: [{ errorSummary: wwwAuthErr.errorDescription }]\n            }, resp, Object.assign({\n                max_age: +max_age }, (acr_values && { acr_values })));\n        }\n        else if ((wwwAuthErr === null || wwwAuthErr === void 0 ? void 0 : wwwAuthErr.scheme) === 'DPoP') {\n            err = wwwAuthErr;\n        }\n    }\n    return err;\n};\nfunction httpRequest(sdk, options) {\n    var _a;\n    options = options || {};\n    if (sdk.options.httpRequestInterceptors) {\n        for (const interceptor of sdk.options.httpRequestInterceptors) {\n            interceptor(options);\n        }\n    }\n    var url = options.url, method = options.method, args = options.args, saveAuthnState = options.saveAuthnState, accessToken = options.accessToken, withCredentials = options.withCredentials === true,\n    storageUtil = sdk.options.storageUtil, storage = storageUtil.storage, httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies), pollingIntent = options.pollingIntent, pollDelay = (_a = sdk.options.pollDelay) !== null && _a !== void 0 ? _a : 0;\n    if (options.cacheResponse) {\n        var cacheContents = httpCache.getStorage();\n        var cachedResponse = cacheContents[url];\n        if (cachedResponse && Date.now() / 1000 < cachedResponse.expiresAt) {\n            return Promise.resolve(cachedResponse.response);\n        }\n    }\n    var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n    var headers = Object.assign({ 'Accept': 'application/json', 'Content-Type': 'application/json' }, oktaUserAgentHeader);\n    Object.assign(headers, sdk.options.headers, options.headers);\n    headers = removeNils(headers);\n    if (accessToken && isString(accessToken)) {\n        headers['Authorization'] = 'Bearer ' + accessToken;\n    }\n    var ajaxOptions = {\n        headers,\n        data: args || undefined,\n        withCredentials\n    };\n    var err, res, promise;\n    if (pollingIntent && isBrowser() && pollDelay > 0) {\n        let waitForVisibleAndAwakenDocument;\n        let waitForAwakenDocument;\n        let recursiveFetch;\n        let retryCount = 0;\n        waitForAwakenDocument = () => {\n            const timeSinceDocumentIsVisible = Date.now() - dateDocumentBecameVisible;\n            if (timeSinceDocumentIsVisible < pollDelay) {\n                return new Promise((resolve) => setTimeout(() => {\n                    if (!document.hidden) {\n                        resolve();\n                    }\n                    else {\n                        resolve(waitForVisibleAndAwakenDocument());\n                    }\n                }, pollDelay - timeSinceDocumentIsVisible));\n            }\n            else {\n                return Promise.resolve();\n            }\n        };\n        waitForVisibleAndAwakenDocument = () => {\n            if (document.hidden) {\n                let pageVisibilityHandler;\n                return new Promise((resolve) => {\n                    pageVisibilityHandler = () => {\n                        if (!document.hidden) {\n                            document.removeEventListener('visibilitychange', pageVisibilityHandler);\n                            resolve(waitForAwakenDocument());\n                        }\n                    };\n                    document.addEventListener('visibilitychange', pageVisibilityHandler);\n                });\n            }\n            else {\n                return waitForAwakenDocument();\n            }\n        };\n        const retryableFetch = () => {\n            return sdk.options.httpRequestClient(method, url, ajaxOptions).catch((err) => {\n                const isNetworkError = (err === null || err === void 0 ? void 0 : err.message) === 'Load failed';\n                if (isNetworkError && retryCount < IOS_MAX_RETRY_COUNT) {\n                    retryCount++;\n                    return recursiveFetch();\n                }\n                throw err;\n            });\n        };\n        recursiveFetch = () => {\n            return waitForVisibleAndAwakenDocument().then(retryableFetch);\n        };\n        promise = recursiveFetch();\n    }\n    else {\n        promise = sdk.options.httpRequestClient(method, url, ajaxOptions);\n    }\n    return promise\n        .then(function (resp) {\n        res = resp.responseText;\n        if (res && isString(res)) {\n            res = JSON.parse(res);\n            if (res && typeof res === 'object' && !res.headers) {\n                if (Array.isArray(res)) {\n                    res.forEach(item => {\n                        item.headers = resp.headers;\n                    });\n                }\n                else {\n                    res.headers = resp.headers;\n                }\n            }\n        }\n        if (saveAuthnState) {\n            if (!res.stateToken) {\n                storage.delete(STATE_TOKEN_KEY_NAME);\n            }\n        }\n        if (res && res.stateToken && res.expiresAt) {\n            storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies);\n        }\n        if (res && options.cacheResponse) {\n            httpCache.updateStorage(url, {\n                expiresAt: Math.floor(Date.now() / 1000) + DEFAULT_CACHE_DURATION,\n                response: res\n            });\n        }\n        return res;\n    })\n        .catch(function (resp) {\n        err = formatError(sdk, resp);\n        if (err.errorCode === 'E0000011') {\n            storage.delete(STATE_TOKEN_KEY_NAME);\n        }\n        throw err;\n    });\n}\nfunction get(sdk, url, options) {\n    url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n    var getOptions = {\n        url: url,\n        method: 'GET'\n    };\n    Object.assign(getOptions, options);\n    return httpRequest(sdk, getOptions);\n}\nfunction post(sdk, url, args, options) {\n    url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n    var postOptions = {\n        url: url,\n        method: 'POST',\n        args: args,\n        saveAuthnState: true\n    };\n    Object.assign(postOptions, options);\n    return httpRequest(sdk, postOptions);\n}\n\nexport { get, httpRequest, post };\n//# sourceMappingURL=request.js.map\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nvar TokenKind;\n(function (TokenKind) {\n    TokenKind[\"ACCESS\"] = \"accessToken\";\n    TokenKind[\"ID\"] = \"idToken\";\n    TokenKind[\"REFRESH\"] = \"refreshToken\";\n})(TokenKind || (TokenKind = {}));\nfunction isToken(obj) {\n    if (obj &&\n        (obj.accessToken || obj.idToken || obj.refreshToken) &&\n        Array.isArray(obj.scopes)) {\n        return true;\n    }\n    return false;\n}\nfunction isAccessToken(obj) {\n    return obj && obj.accessToken;\n}\nfunction isIDToken(obj) {\n    return obj && obj.idToken;\n}\nfunction isRefreshToken(obj) {\n    return obj && obj.refreshToken;\n}\n\nexport { TokenKind, isAccessToken, isIDToken, isRefreshToken, isToken };\n//# sourceMappingURL=Token.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nexport { __rest };\n//# sourceMappingURL=_tslib.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { warn } from '../util/console.js';\nimport { removeNils } from '../util/object.js';\nimport '../errors/WWWAuthError.js';\nimport { createOAuthMeta } from '../oidc/util/oauthMeta.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport '../_virtual/_tslib.js';\n\nasync function createTransactionMeta(authClient, options = {}) {\n    const tokenParams = await authClient.token.prepareTokenParams(options);\n    const pkceMeta = createOAuthMeta(authClient, tokenParams);\n    let { flow = 'default', withCredentials = true, activationToken = undefined, recoveryToken = undefined, maxAge = undefined, acrValues = undefined, } = Object.assign(Object.assign({}, authClient.options), options);\n    const meta = Object.assign(Object.assign({}, pkceMeta), { flow,\n        withCredentials,\n        activationToken,\n        recoveryToken,\n        maxAge,\n        acrValues });\n    return meta;\n}\nfunction hasSavedInteractionHandle(authClient, options) {\n    const savedMeta = getSavedTransactionMeta(authClient, options);\n    if (savedMeta === null || savedMeta === void 0 ? void 0 : savedMeta.interactionHandle) {\n        return true;\n    }\n    return false;\n}\nfunction getSavedTransactionMeta(authClient, options) {\n    options = removeNils(options);\n    options = Object.assign(Object.assign({}, authClient.options), options);\n    let savedMeta;\n    try {\n        savedMeta = authClient.transactionManager.load(options);\n    }\n    catch (e) {\n    }\n    if (!savedMeta) {\n        return;\n    }\n    if (isTransactionMetaValid(savedMeta, options)) {\n        return savedMeta;\n    }\n    warn('Saved transaction meta does not match the current configuration. ' +\n        'This may indicate that two apps are sharing a storage key.');\n}\nasync function getTransactionMeta(authClient, options) {\n    options = removeNils(options);\n    options = Object.assign(Object.assign({}, authClient.options), options);\n    const validExistingMeta = getSavedTransactionMeta(authClient, options);\n    if (validExistingMeta) {\n        return validExistingMeta;\n    }\n    return createTransactionMeta(authClient, options);\n}\nfunction saveTransactionMeta(authClient, meta) {\n    authClient.transactionManager.save(meta, { muteWarning: true });\n}\nfunction clearTransactionMeta(authClient) {\n    authClient.transactionManager.clear();\n}\nfunction isTransactionMetaValid(meta, options = {}) {\n    const keys = [\n        'issuer',\n        'clientId',\n        'redirectUri',\n        'state',\n        'codeChallenge',\n        'codeChallengeMethod',\n        'activationToken',\n        'recoveryToken'\n    ];\n    if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n        return false;\n    }\n    const { flow } = options;\n    if (isTransactionMetaValidForFlow(meta, flow) === false) {\n        return false;\n    }\n    return true;\n}\nfunction isTransactionMetaValidForFlow(meta, flow) {\n    const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n    if (shouldValidateFlow) {\n        if (flow !== meta.flow) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction isTransactionMetaValidForOptions(meta, options, keys) {\n    const mismatch = keys.some(key => {\n        const value = options[key];\n        if (value && value !== meta[key]) {\n            return true;\n        }\n    });\n    return !mismatch;\n}\n\nexport { clearTransactionMeta, createTransactionMeta, getSavedTransactionMeta, getTransactionMeta, hasSavedInteractionHandle, isTransactionMetaValid, isTransactionMetaValidForFlow, isTransactionMetaValidForOptions, saveTransactionMeta };\n//# sourceMappingURL=transactionMeta.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getSavedTransactionMeta, createTransactionMeta, saveTransactionMeta } from './transactionMeta.js';\nimport { removeNils } from '../util/object.js';\nimport '../errors/WWWAuthError.js';\nimport { getOAuthBaseUrl } from '../oidc/util/oauth.js';\nimport { httpRequest } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport '../_virtual/_tslib.js';\n\nfunction getResponse(meta) {\n    return {\n        meta,\n        interactionHandle: meta.interactionHandle,\n        state: meta.state\n    };\n}\nasync function interact(authClient, options = {}) {\n    options = removeNils(options);\n    let meta = getSavedTransactionMeta(authClient, options);\n    if (meta === null || meta === void 0 ? void 0 : meta.interactionHandle) {\n        return getResponse(meta);\n    }\n    meta = await createTransactionMeta(authClient, Object.assign(Object.assign({}, meta), options));\n    const baseUrl = getOAuthBaseUrl(authClient);\n    let { clientId, redirectUri, state, scopes, withCredentials, codeChallenge, codeChallengeMethod, activationToken, recoveryToken, maxAge, acrValues, nonce } = meta;\n    const clientSecret = options.clientSecret || authClient.options.clientSecret;\n    withCredentials = withCredentials !== null && withCredentials !== void 0 ? withCredentials : true;\n    const url = `${baseUrl}/v1/interact`;\n    const params = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ client_id: clientId, scope: scopes.join(' '), redirect_uri: redirectUri, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod, state }, (activationToken && { activation_token: activationToken })), (recoveryToken && { recovery_token: recoveryToken })), (clientSecret && { client_secret: clientSecret })), (maxAge && { max_age: maxAge })), (acrValues && { acr_values: acrValues })), (nonce && { nonce }));\n    const headers = {\n        'Content-Type': 'application/x-www-form-urlencoded',\n    };\n    const resp = await httpRequest(authClient, {\n        method: 'POST',\n        url,\n        headers,\n        withCredentials,\n        args: params\n    });\n    const interactionHandle = resp.interaction_handle;\n    const newMeta = Object.assign(Object.assign({}, meta), { interactionHandle,\n        withCredentials,\n        state,\n        scopes,\n        recoveryToken,\n        activationToken });\n    saveTransactionMeta(authClient, newMeta);\n    return getResponse(newMeta);\n}\n\nexport { interact };\n//# sourceMappingURL=interact.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst isFieldMutable = function isFieldMutable(field) {\n    return (field.mutable !== false);\n};\nconst divideSingleActionParamsByMutability = function divideSingleActionParamsByMutability(action) {\n    var _a, _b;\n    const defaultParamsForAction = {};\n    const neededParamsForAction = [];\n    const immutableParamsForAction = {};\n    if (!action.value) {\n        neededParamsForAction.push(action);\n        return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n    }\n    for (let field of action.value) {\n        if (isFieldMutable(field)) {\n            neededParamsForAction.push(field);\n            if ((_a = field.value) !== null && _a !== void 0 ? _a : false) {\n                defaultParamsForAction[field.name] = field.value;\n            }\n        }\n        else {\n            immutableParamsForAction[field.name] = (_b = field.value) !== null && _b !== void 0 ? _b : '';\n        }\n    }\n    return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n};\nconst divideActionParamsByMutability = function divideActionParamsByMutability(actionList) {\n    actionList = Array.isArray(actionList) ? actionList : [actionList];\n    const neededParams = [];\n    const defaultParams = {};\n    const immutableParams = {};\n    for (let action of actionList) {\n        const { defaultParamsForAction, neededParamsForAction, immutableParamsForAction } = divideSingleActionParamsByMutability(action);\n        neededParams.push(neededParamsForAction);\n        defaultParams[action.name] = defaultParamsForAction;\n        immutableParams[action.name] = immutableParamsForAction;\n    }\n    return { defaultParams, neededParams, immutableParams };\n};\n\nexport { divideActionParamsByMutability };\n//# sourceMappingURL=actionParser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from '../../../errors/AuthApiError.js';\nimport '../../../errors/WWWAuthError.js';\nimport { httpRequest } from '../../../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { divideActionParamsByMutability } from './actionParser.js';\n\nconst generateDirectFetch = function generateDirectFetch(authClient, { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {}, toPersist = {} }) {\n    const target = actionDefinition.href;\n    return async function (params = {}) {\n        var _a, _b;\n        const headers = {\n            'Content-Type': 'application/json',\n            'Accept': actionDefinition.accepts || 'application/ion+json',\n        };\n        const body = JSON.stringify(Object.assign(Object.assign(Object.assign({}, defaultParamsForAction), params), immutableParamsForAction));\n        try {\n            const options = {\n                url: target,\n                method: actionDefinition.method,\n                headers,\n                args: body,\n                withCredentials: (_a = toPersist === null || toPersist === void 0 ? void 0 : toPersist.withCredentials) !== null && _a !== void 0 ? _a : true\n            };\n            const isPolling = actionDefinition.name === 'poll' || ((_b = actionDefinition.name) === null || _b === void 0 ? void 0 : _b.endsWith('-poll'));\n            if (isPolling) {\n                options.pollingIntent = true;\n            }\n            const response = await httpRequest(authClient, options);\n            return authClient.idx.makeIdxResponse(Object.assign({}, response), toPersist, true);\n        }\n        catch (err) {\n            if (!(err instanceof AuthApiError) || !(err === null || err === void 0 ? void 0 : err.xhr)) {\n                throw err;\n            }\n            const response = err.xhr;\n            const payload = response.responseJSON || JSON.parse(response.responseText);\n            const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n            const idxResponse = authClient.idx.makeIdxResponse(Object.assign({}, payload), toPersist, false);\n            if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n                idxResponse.stepUp = true;\n            }\n            return idxResponse;\n        }\n    };\n};\nconst generateIdxAction = function generateIdxAction(authClient, actionDefinition, toPersist) {\n    const generator = generateDirectFetch;\n    const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability(actionDefinition);\n    const action = generator(authClient, {\n        actionDefinition,\n        defaultParamsForAction: defaultParams[actionDefinition.name],\n        immutableParamsForAction: immutableParams[actionDefinition.name],\n        toPersist\n    });\n    action.neededParams = neededParams;\n    return action;\n};\n\nexport { generateIdxAction as default };\n//# sourceMappingURL=generateIdxAction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst jsonpathRegex = /\\$?(?<step>\\w+)|(?:\\[(?<index>\\d+)\\])/g;\nfunction jsonpath({ path, json }) {\n    var _a, _b, _c;\n    const steps = [];\n    let match;\n    while ((match = jsonpathRegex.exec(path)) !== null) {\n        const step = (_b = (_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.step) !== null && _b !== void 0 ? _b : (_c = match === null || match === void 0 ? void 0 : match.groups) === null || _c === void 0 ? void 0 : _c.index;\n        if (step) {\n            steps.push(step);\n        }\n    }\n    if (steps.length < 1) {\n        return undefined;\n    }\n    const lastStep = steps.pop();\n    let curr = json;\n    for (const step of steps) {\n        if (Object.prototype.hasOwnProperty.call(curr, step)) {\n            if (typeof curr[step] !== 'object') {\n                return undefined;\n            }\n            curr = curr[step];\n        }\n    }\n    return curr[lastStep];\n}\n\nexport { jsonpath };\n//# sourceMappingURL=jsonpath.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../../../_virtual/_tslib.js';\nimport { generateRemediationFunctions } from './remediationParser.js';\nimport generateIdxAction from './generateIdxAction.js';\nimport { jsonpath } from '../../../util/jsonpath.js';\nimport AuthSdkError from '../../../errors/AuthSdkError.js';\nimport '../../../errors/WWWAuthError.js';\n\nconst SKIP_FIELDS = {\n    'remediation': true,\n    'context': true,\n};\nconst parseNonRemediations = function parseNonRemediations(authClient, idxResponse, toPersist = {}) {\n    const actions = {};\n    const context = {};\n    Object.keys(idxResponse)\n        .filter(field => !SKIP_FIELDS[field])\n        .forEach(field => {\n        const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n        if (!fieldIsObject) {\n            context[field] = idxResponse[field];\n            return;\n        }\n        if (idxResponse[field].rel) {\n            actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n            return;\n        }\n        const _a = idxResponse[field], { value: fieldValue, type } = _a, info = __rest(_a, [\"value\", \"type\"]);\n        context[field] = Object.assign({ type }, info);\n        if (type !== 'object') {\n            context[field].value = fieldValue;\n            return;\n        }\n        context[field].value = {};\n        Object.entries(fieldValue)\n            .forEach(([subField, value]) => {\n            if (value.rel) {\n                actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n            }\n            else {\n                context[field].value[subField] = value;\n            }\n        });\n    });\n    return { context, actions };\n};\nconst expandRelatesTo = (idxResponse, value) => {\n    Object.keys(value).forEach(k => {\n        if (k === 'relatesTo') {\n            const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n            if (typeof query === 'string') {\n                const result = jsonpath({ path: query, json: idxResponse });\n                if (result) {\n                    value[k] = result;\n                    return;\n                }\n                else {\n                    throw new AuthSdkError(`Cannot resolve relatesTo: ${query}`);\n                }\n            }\n        }\n        if (Array.isArray(value[k])) {\n            value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n        }\n    });\n};\nconst convertRemediationAction = (authClient, remediation, toPersist) => {\n    if (remediation.rel) {\n        const remediationActions = generateRemediationFunctions(authClient, [remediation], toPersist);\n        const actionFn = remediationActions[remediation.name];\n        return Object.assign(Object.assign({}, remediation), { action: actionFn });\n    }\n    return remediation;\n};\nconst parseIdxResponse = function parseIdxResponse(authClient, idxResponse, toPersist = {}) {\n    var _a;\n    const remediationData = ((_a = idxResponse.remediation) === null || _a === void 0 ? void 0 : _a.value) || [];\n    remediationData.forEach(remediation => {\n        var _a;\n        if (remediation.name === 'launch-authenticator' &&\n            ((_a = remediation === null || remediation === void 0 ? void 0 : remediation.relatesTo) === null || _a === void 0 ? void 0 : _a[0]) === 'authenticatorChallenge' &&\n            !(idxResponse === null || idxResponse === void 0 ? void 0 : idxResponse.authenticatorChallenge)) {\n            delete remediation.relatesTo;\n            return;\n        }\n        return expandRelatesTo(idxResponse, remediation);\n    });\n    const remediations = remediationData.map(remediation => convertRemediationAction(authClient, remediation, toPersist));\n    const { context, actions } = parseNonRemediations(authClient, idxResponse, toPersist);\n    return {\n        remediations,\n        context,\n        actions,\n    };\n};\n\nexport { parseIdxResponse, parseNonRemediations };\n//# sourceMappingURL=idxResponseParser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport generateIdxAction from './generateIdxAction.js';\n\nconst generateRemediationFunctions = function generateRemediationFunctions(authClient, remediationValue, toPersist = {}) {\n    return remediationValue.reduce((obj, remediation) => (Object.assign(Object.assign({}, obj), { [remediation.name]: generateIdxAction(authClient, remediation, toPersist) })), {});\n};\n\nexport { generateRemediationFunctions };\n//# sourceMappingURL=remediationParser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { makeIdxState } from './makeIdxState.js';\n\nvar v1 = {\n    makeIdxState,\n};\n\nexport { v1 as default };\n//# sourceMappingURL=parsers.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { parseIdxResponse } from './idxResponseParser.js';\n\nfunction makeIdxState(authClient, idxResponse, toPersist, requestDidSucceed) {\n    var _a, _b, _c;\n    const rawIdxResponse = idxResponse;\n    const { remediations, context, actions } = parseIdxResponse(authClient, idxResponse, toPersist);\n    const neededToProceed = [...remediations];\n    const proceed = async function (remediationChoice, paramsFromUser = {}) {\n        const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n        if (!remediationChoiceObject) {\n            return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n        }\n        const actionFn = remediationChoiceObject.action;\n        if (typeof actionFn !== 'function') {\n            return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n        }\n        return remediationChoiceObject.action(paramsFromUser);\n    };\n    const findCode = item => item.name === 'interaction_code';\n    const interactionCode = (_c = (_b = (_a = rawIdxResponse.successWithInteractionCode) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.find(findCode)) === null || _c === void 0 ? void 0 : _c.value;\n    return {\n        proceed,\n        neededToProceed,\n        actions,\n        context,\n        rawIdxState: rawIdxResponse,\n        interactionCode,\n        toPersist,\n        requestDidSucceed,\n    };\n}\n\nexport { makeIdxState };\n//# sourceMappingURL=makeIdxState.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IDX_API_VERSION } from '../../constants.js';\nimport v1 from './v1/parsers.js';\n\nconst parsersForVersion = function parsersForVersion(version) {\n    switch (version) {\n        case '1.0.0':\n            return v1;\n        case undefined:\n        case null:\n            throw new Error('Api version is required');\n        default:\n            throw new Error(`Unknown api version: ${version}.  Use an exact semver version.`);\n    }\n};\nfunction validateVersionConfig(version) {\n    if (!version) {\n        throw new Error('version is required');\n    }\n    const cleanVersion = (version !== null && version !== void 0 ? version : '').replace(/[^0-9a-zA-Z._-]/, '');\n    if (cleanVersion !== version || !version) {\n        throw new Error('invalid version supplied - version is required and uses semver syntax');\n    }\n    parsersForVersion(version);\n}\nfunction makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed) {\n    var _a;\n    const version = (_a = rawIdxResponse === null || rawIdxResponse === void 0 ? void 0 : rawIdxResponse.version) !== null && _a !== void 0 ? _a : IDX_API_VERSION;\n    validateVersionConfig(version);\n    const { makeIdxState } = parsersForVersion(version);\n    return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n\nexport { makeIdxState, parsersForVersion, validateVersionConfig };\n//# sourceMappingURL=index.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction isRawIdxResponse(obj) {\n    return obj && obj.version;\n}\n\nexport { isRawIdxResponse };\n//# sourceMappingURL=idx-js.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from './AuthApiError.js';\nexport { default as AuthApiError } from './AuthApiError.js';\nimport OAuthError from './OAuthError.js';\nexport { default as OAuthError } from './OAuthError.js';\nimport WWWAuthError from './WWWAuthError.js';\nexport { default as WWWAuthError } from './WWWAuthError.js';\n\nfunction isAuthApiError(obj) {\n    return (obj instanceof AuthApiError);\n}\nfunction isOAuthError(obj) {\n    return (obj instanceof OAuthError);\n}\nfunction isWWWAuthError(obj) {\n    return (obj instanceof WWWAuthError);\n}\n\nexport { isAuthApiError, isOAuthError, isWWWAuthError };\n//# sourceMappingURL=index.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { validateVersionConfig, makeIdxState } from './idxState/index.js';\nimport { isRawIdxResponse } from './types/idx-js.js';\nimport { isAuthApiError } from '../errors/index.js';\nimport { getOAuthDomain } from '../oidc/util/oauth.js';\nimport { IDX_API_VERSION } from '../constants.js';\nimport { httpRequest } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport '../_virtual/_tslib.js';\n\nasync function introspect(authClient, options = {}) {\n    var _a;\n    let rawIdxResponse;\n    let requestDidSucceed;\n    const savedIdxResponse = authClient.transactionManager.loadIdxResponse(options);\n    if (savedIdxResponse) {\n        rawIdxResponse = savedIdxResponse.rawIdxResponse;\n        requestDidSucceed = savedIdxResponse.requestDidSucceed;\n    }\n    if (!rawIdxResponse) {\n        const version = options.version || IDX_API_VERSION;\n        const domain = getOAuthDomain(authClient);\n        const { interactionHandle, stateHandle } = options;\n        const withCredentials = (_a = options.withCredentials) !== null && _a !== void 0 ? _a : true;\n        try {\n            requestDidSucceed = true;\n            validateVersionConfig(version);\n            const url = `${domain}/idp/idx/introspect`;\n            const body = stateHandle ? { stateToken: stateHandle } : { interactionHandle };\n            const headers = {\n                'Content-Type': `application/ion+json; okta-version=${version}`,\n                Accept: `application/ion+json; okta-version=${version}`,\n            };\n            rawIdxResponse = await httpRequest(authClient, {\n                method: 'POST',\n                url,\n                headers,\n                withCredentials,\n                args: body\n            });\n        }\n        catch (err) {\n            if (isAuthApiError(err) && err.xhr && isRawIdxResponse(err.xhr.responseJSON)) {\n                rawIdxResponse = err.xhr.responseJSON;\n                requestDidSucceed = false;\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n    const { withCredentials } = options;\n    return makeIdxState(authClient, rawIdxResponse, { withCredentials }, requestDidSucceed);\n}\n\nexport { introspect };\n//# sourceMappingURL=introspect.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction getAllValues(idxRemediation) {\n    var _a;\n    return (_a = idxRemediation.value) === null || _a === void 0 ? void 0 : _a.map(r => r.name);\n}\nfunction getRequiredValues(idxRemediation) {\n    var _a;\n    return (_a = idxRemediation.value) === null || _a === void 0 ? void 0 : _a.reduce((required, cur) => {\n        if (cur.required) {\n            required.push(cur.name);\n        }\n        return required;\n    }, []);\n}\nfunction titleCase(str) {\n    return str.charAt(0).toUpperCase() + str.substring(1);\n}\nfunction getAuthenticatorFromRemediation(remediation) {\n    return remediation.value.find(({ name }) => name === 'authenticator');\n}\n\nexport { getAllValues, getAuthenticatorFromRemediation, getRequiredValues, titleCase };\n//# sourceMappingURL=util.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isAuthenticator } from '../types/api.js';\n\nfunction formatAuthenticator(incoming) {\n    let authenticator;\n    if (isAuthenticator(incoming)) {\n        authenticator = incoming;\n    }\n    else if (typeof incoming === 'string') {\n        authenticator = {\n            key: incoming\n        };\n    }\n    else {\n        throw new Error('Invalid format for authenticator');\n    }\n    return authenticator;\n}\nfunction compareAuthenticators(auth1, auth2) {\n    if (!auth1 || !auth2) {\n        return false;\n    }\n    if (auth1.id && auth2.id) {\n        return (auth1.id === auth2.id);\n    }\n    if (auth1.key && auth2.key) {\n        return (auth1.key === auth2.key);\n    }\n    return false;\n}\nfunction findMatchedOption(authenticators, options) {\n    let option;\n    for (let authenticator of authenticators) {\n        option = options\n            .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n        if (option) {\n            break;\n        }\n    }\n    return option;\n}\n\nexport { compareAuthenticators, findMatchedOption, formatAuthenticator };\n//# sourceMappingURL=util.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getRequiredValues, getAllValues, titleCase, getAuthenticatorFromRemediation } from '../util.js';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util.js';\n\nclass Remediator {\n    constructor(remediation, values = {}, options = {}) {\n        this.values = Object.assign({}, values);\n        this.options = Object.assign({}, options);\n        this.formatAuthenticators();\n        this.remediation = remediation;\n    }\n    formatAuthenticators() {\n        this.values.authenticators = (this.values.authenticators || []);\n        this.values.authenticators = this.values.authenticators.map(authenticator => {\n            return formatAuthenticator(authenticator);\n        });\n        if (this.values.authenticator) {\n            const authenticator = formatAuthenticator(this.values.authenticator);\n            const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n                return compareAuthenticators(authenticator, existing);\n            });\n            if (!hasAuthenticatorInList) {\n                this.values.authenticators.push(authenticator);\n            }\n        }\n        this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n            if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n                acc.push(authenticator);\n            }\n            return acc;\n        }, this.values.authenticatorsData || []);\n    }\n    getName() {\n        return this.remediation.name;\n    }\n    canRemediate(context) {\n        const required = getRequiredValues(this.remediation);\n        const needed = required.find((key) => !this.hasData(key));\n        if (needed) {\n            return false;\n        }\n        return true;\n    }\n    getData(key) {\n        if (!key) {\n            let allValues = getAllValues(this.remediation);\n            let res = allValues.reduce((data, key) => {\n                data[key] = this.getData(key);\n                return data;\n            }, {});\n            return res;\n        }\n        if (typeof this[`map${titleCase(key)}`] === 'function') {\n            const val = this[`map${titleCase(key)}`](this.remediation.value.find(({ name }) => name === key));\n            if (val) {\n                return val;\n            }\n        }\n        if (this.map && this.map[key]) {\n            const entry = this.map[key];\n            for (let i = 0; i < entry.length; i++) {\n                let val = this.values[entry[i]];\n                if (val) {\n                    return val;\n                }\n            }\n        }\n        return this.values[key];\n    }\n    hasData(key\n    ) {\n        return !!this.getData(key);\n    }\n    getNextStep(_authClient, _context) {\n        const name = this.getName();\n        const inputs = this.getInputs();\n        const authenticator = this.getAuthenticator();\n        const type = authenticator === null || authenticator === void 0 ? void 0 : authenticator.type;\n        return Object.assign(Object.assign({ name,\n            inputs }, (type && { type })), (authenticator && { authenticator }));\n    }\n    getInputs() {\n        const inputs = [];\n        const inputsFromRemediation = this.remediation.value || [];\n        inputsFromRemediation.forEach(inputFromRemediation => {\n            let input;\n            let { name, type, visible, messages } = inputFromRemediation;\n            if (visible === false) {\n                return;\n            }\n            if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n                input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n            }\n            else if (type !== 'object') {\n                let alias;\n                const aliases = (this.map ? this.map[name] : null) || [];\n                if (aliases.length === 1) {\n                    alias = aliases[0];\n                }\n                else {\n                    alias = aliases.find(name => Object.keys(this.values).includes(name));\n                }\n                if (alias) {\n                    input = Object.assign(Object.assign({}, inputFromRemediation), { name: alias });\n                }\n            }\n            if (!input) {\n                input = inputFromRemediation;\n            }\n            if (Array.isArray(input)) {\n                input.forEach(i => inputs.push(i));\n            }\n            else {\n                if (messages) {\n                    input.messages = messages;\n                }\n                inputs.push(input);\n            }\n        });\n        return inputs;\n    }\n    static getMessages(remediation) {\n        var _a, _b;\n        if (!remediation.value) {\n            return;\n        }\n        return (_b = (_a = remediation.value[0]) === null || _a === void 0 ? void 0 : _a.form) === null || _b === void 0 ? void 0 : _b.value.reduce((messages, field) => {\n            if (field.messages) {\n                messages = [...messages, ...field.messages.value];\n            }\n            return messages;\n        }, []);\n    }\n    getValuesAfterProceed() {\n        const inputsFromRemediation = this.remediation.value || [];\n        const inputsFromRemediator = this.getInputs();\n        const inputs = [\n            ...inputsFromRemediation,\n            ...inputsFromRemediator\n        ];\n        for (const input of inputs) {\n            delete this.values[input.name];\n        }\n        return this.values;\n    }\n    getAuthenticator() {\n        var _a, _b;\n        const relatesTo = (_a = this.remediation.relatesTo) === null || _a === void 0 ? void 0 : _a.value;\n        if (!relatesTo) {\n            return;\n        }\n        const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n        if (!authenticatorFromRemediation) {\n            return relatesTo;\n        }\n        const id = authenticatorFromRemediation.form.value\n            .find(({ name }) => name === 'id').value;\n        const enrollmentId = (_b = authenticatorFromRemediation.form.value\n            .find(({ name }) => name === 'enrollmentId')) === null || _b === void 0 ? void 0 : _b.value;\n        return Object.assign(Object.assign({}, relatesTo), { id,\n            enrollmentId });\n    }\n}\n\nexport { Remediator };\n//# sourceMappingURL=Remediator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../../../errors/WWWAuthError.js';\n\nfunction unwrapFormValue(remediation) {\n    if (Array.isArray(remediation)) {\n        return remediation\n            .map(item => {\n            if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {\n                return item;\n            }\n            return unwrapFormValue(item);\n        });\n    }\n    const res = {};\n    for (const [key, value] of Object.entries(remediation)) {\n        if (value === null || typeof value === 'undefined') {\n            continue;\n        }\n        if (typeof value === 'object') {\n            const formKeys = Object.keys(value);\n            if (['value', 'form'].includes(key)\n                && formKeys.length === 1\n                && ['value', 'form'].includes(formKeys[0])) {\n                const unwrappedForm = unwrapFormValue(value);\n                Object.entries(unwrappedForm).forEach(([key, value]) => {\n                    res[key] = value;\n                });\n            }\n            else {\n                res[key] = unwrapFormValue(value);\n            }\n        }\n        else {\n            res[key] = value;\n        }\n    }\n    return res;\n}\n\nexport { unwrapFormValue };\n//# sourceMappingURL=util.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../../../_virtual/_tslib.js';\nimport { Remediator } from '../Base/Remediator.js';\nimport { unwrapFormValue } from './util.js';\n\nclass GenericRemediator extends Remediator {\n    canRemediate() {\n        if (typeof this.remediation.action !== 'function') {\n            return false;\n        }\n        if (this.remediation.name === 'poll' || this.remediation.name.endsWith('-poll')) {\n            return true;\n        }\n        if (this.options.step) {\n            return true;\n        }\n        return false;\n    }\n    getData() {\n        const data = this.getInputs().reduce((acc, { name }) => {\n            acc[name] = this.values[name];\n            return acc;\n        }, {});\n        return data;\n    }\n    getNextStep(authClient, _context) {\n        const name = this.getName();\n        const inputs = this.getInputs();\n        const _a = this.remediation, {\n        href, method, rel, accepts, produces,\n        value,\n        action } = _a, rest = __rest(_a, [\"href\", \"method\", \"rel\", \"accepts\", \"produces\", \"value\", \"action\"]);\n        if (action) {\n            return Object.assign(Object.assign(Object.assign({}, rest), (!!inputs.length && { inputs })), { action: async (params) => {\n                    return authClient.idx.proceed(Object.assign({ step: name }, params));\n                } });\n        }\n        return Object.assign({}, this.remediation);\n    }\n    getInputs() {\n        return (this.remediation.value || [])\n            .filter(({ name }) => name !== 'stateHandle')\n            .map(unwrapFormValue)\n            .map(input => {\n            input.type = input.type || 'string';\n            return input;\n        });\n    }\n}\n\nexport { GenericRemediator };\n//# sourceMappingURL=GenericRemediator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../_virtual/_tslib.js';\nimport { warn } from '../util/console.js';\nimport { split2 } from '../util/misc.js';\nimport { GenericRemediator } from './remediators/GenericRemediator/GenericRemediator.js';\nimport { IdxFeature } from './types/api.js';\n\nconst ctx = {\n    remediators: {},\n    getFlowSpecification: function (_oktaAuth, _flow = 'default') {\n        return {\n            remediators: {}\n        };\n    }\n};\nfunction setRemediatorsCtx(newCtx) {\n    Object.assign(ctx, newCtx);\n}\nfunction getFlowSpecification(oktaAuth, flow = 'default') {\n    return ctx.getFlowSpecification(oktaAuth, flow);\n}\nfunction isTerminalResponse(idxResponse) {\n    const { neededToProceed, interactionCode } = idxResponse;\n    return !neededToProceed.length && !interactionCode;\n}\nfunction canSkipFn(idxResponse) {\n    return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\nfunction canResendFn(idxResponse) {\n    return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\nfunction getMessagesFromIdxRemediationValue(value) {\n    if (!value || !Array.isArray(value)) {\n        return;\n    }\n    return value.reduce((messages, value) => {\n        if (value.messages) {\n            messages = [...messages, ...value.messages.value];\n        }\n        if (value.form) {\n            const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n            messages = [...messages, ...messagesFromForm];\n        }\n        if (value.options) {\n            let optionValues = [];\n            value.options.forEach(option => {\n                if (!option.value || typeof option.value === 'string') {\n                    return;\n                }\n                optionValues = [...optionValues, option.value];\n            });\n            const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n            messages = [...messages, ...messagesFromOptions];\n        }\n        return messages;\n    }, []);\n}\nfunction getMessagesFromResponse(idxResponse, options) {\n    var _a;\n    let messages = [];\n    const { rawIdxState, neededToProceed } = idxResponse;\n    const globalMessages = (_a = rawIdxState.messages) === null || _a === void 0 ? void 0 : _a.value.map(message => message);\n    if (globalMessages) {\n        messages = [...messages, ...globalMessages];\n    }\n    if (!options.useGenericRemediator) {\n        for (let remediation of neededToProceed) {\n            const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n            if (fieldMessages) {\n                messages = [...messages, ...fieldMessages];\n            }\n        }\n    }\n    const seen = {};\n    messages = messages.reduce((filtered, message) => {\n        var _a;\n        const key = (_a = message.i18n) === null || _a === void 0 ? void 0 : _a.key;\n        if (key && seen[key] && message.message === seen[key].message) {\n            return filtered;\n        }\n        seen[key] = message;\n        filtered = [...filtered, message];\n        return filtered;\n    }, []);\n    return messages;\n}\nfunction getEnabledFeatures(idxResponse) {\n    const res = [];\n    const { actions, neededToProceed } = idxResponse;\n    if (actions['currentAuthenticator-recover']) {\n        res.push(IdxFeature.PASSWORD_RECOVERY);\n    }\n    if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n        res.push(IdxFeature.REGISTRATION);\n    }\n    if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n        res.push(IdxFeature.SOCIAL_IDP);\n    }\n    if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n        res.push(IdxFeature.ACCOUNT_UNLOCK);\n    }\n    return res;\n}\nfunction getAvailableSteps(authClient, idxResponse, useGenericRemediator) {\n    var _a;\n    const res = [];\n    const remediatorMap = Object.values(ctx.remediators)\n        .reduce((map, remediatorClass) => {\n        if (remediatorClass.remediationName) {\n            map[remediatorClass.remediationName] = remediatorClass;\n        }\n        return map;\n    }, {});\n    for (let remediation of idxResponse.neededToProceed) {\n        const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n        if (T) {\n            const remediator = new T(remediation);\n            res.push(remediator.getNextStep(authClient, idxResponse.context));\n        }\n    }\n    for (const [name] of Object.entries((idxResponse.actions || {}))) {\n        let stepObj = {\n            name,\n            action: async (params) => {\n                return authClient.idx.proceed({\n                    actions: [{ name, params }]\n                });\n            }\n        };\n        if (name.startsWith('currentAuthenticator')) {\n            const [part1, part2] = split2(name, '-');\n            const actionObj = idxResponse.rawIdxState[part1].value[part2];\n            const rest = __rest(actionObj, [\"href\", \"method\", \"rel\", \"accepts\", \"produces\"]);\n            const value = (_a = actionObj.value) === null || _a === void 0 ? void 0 : _a.filter(item => item.name !== 'stateHandle');\n            stepObj = Object.assign(Object.assign(Object.assign({}, rest), (value && { value })), stepObj);\n        }\n        res.push(stepObj);\n    }\n    return res;\n}\nfunction filterValuesForRemediation(idxResponse, remediationName, values) {\n    const remediations = idxResponse.neededToProceed || [];\n    const remediation = remediations.find(r => r.name === remediationName);\n    if (!remediation) {\n        warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n        return values;\n    }\n    const valuesForRemediation = remediation.value.reduce((res, entry) => {\n        const { name, value } = entry;\n        if (name === 'stateHandle') {\n            res[name] = value;\n        }\n        else {\n            res[name] = values[name];\n        }\n        return res;\n    }, {});\n    return valuesForRemediation;\n}\nfunction getRemediatorClass(remediation, options) {\n    const { useGenericRemediator, remediators } = options;\n    if (!remediation) {\n        return undefined;\n    }\n    if (useGenericRemediator) {\n        return GenericRemediator;\n    }\n    return remediators[remediation.name];\n}\nfunction getRemediator(idxResponse, values, options) {\n    const remediators = options.remediators;\n    const useGenericRemediator = options.useGenericRemediator;\n    const { neededToProceed: idxRemediations, context } = idxResponse;\n    let remediator;\n    if (options.step) {\n        const remediation = idxRemediations.find(({ name }) => name === options.step);\n        if (remediation) {\n            const T = getRemediatorClass(remediation, options);\n            return T ? new T(remediation, values, options) : undefined;\n        }\n        else {\n            warn(`step \"${options.step}\" did not match any remediations`);\n            return;\n        }\n    }\n    const remediatorCandidates = [];\n    if (useGenericRemediator) {\n        remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n    }\n    else {\n        for (let remediation of idxRemediations) {\n            const isRemeditionInFlow = Object.keys(remediators).includes(remediation.name);\n            if (!isRemeditionInFlow) {\n                continue;\n            }\n            const T = getRemediatorClass(remediation, options);\n            remediator = new T(remediation, values, options);\n            if (remediator.canRemediate(context)) {\n                return remediator;\n            }\n            remediatorCandidates.push(remediator);\n        }\n    }\n    return remediatorCandidates[0];\n}\nfunction getNextStep(authClient, remediator, idxResponse) {\n    const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n    const canSkip = canSkipFn(idxResponse);\n    const canResend = canResendFn(idxResponse);\n    return Object.assign(Object.assign(Object.assign({}, nextStep), (canSkip && { canSkip })), (canResend && { canResend }));\n}\nfunction handleFailedResponse(authClient, idxResponse, options = {}) {\n    const terminal = isTerminalResponse(idxResponse);\n    const messages = getMessagesFromResponse(idxResponse, options);\n    if (terminal) {\n        return { idxResponse, terminal, messages };\n    }\n    else {\n        const remediator = getRemediator(idxResponse, {}, options);\n        const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n        return Object.assign({ idxResponse,\n            messages }, (nextStep && { nextStep }));\n    }\n}\n\nexport { canResendFn, canSkipFn, filterValuesForRemediation, getAvailableSteps, getEnabledFeatures, getFlowSpecification, getMessagesFromIdxRemediationValue, getMessagesFromResponse, getNextStep, getRemediator, handleFailedResponse, isTerminalResponse, setRemediatorsCtx };\n//# sourceMappingURL=util.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getRemediator, handleFailedResponse, isTerminalResponse, filterValuesForRemediation, getNextStep } from './util.js';\n\nfunction getActionFromValues(values, idxResponse) {\n    return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\nfunction removeActionFromValues(values) {\n    return Object.assign(Object.assign({}, values), { resend: undefined });\n}\nfunction removeActionFromOptions(options, actionName) {\n    let actions = options.actions || [];\n    actions = actions.filter(entry => {\n        if (typeof entry === 'string') {\n            return entry !== actionName;\n        }\n        return entry.name !== actionName;\n    });\n    return Object.assign(Object.assign({}, options), { actions });\n}\nasync function remediate(authClient, idxResponse, values, options) {\n    let { neededToProceed, interactionCode } = idxResponse;\n    const { flow } = options;\n    if (interactionCode) {\n        return { idxResponse };\n    }\n    const remediator = getRemediator(idxResponse, values, options);\n    const actionFromValues = getActionFromValues(values, idxResponse);\n    const actionFromOptions = options.actions || [];\n    const actions = [\n        ...actionFromOptions,\n        ...(actionFromValues && [actionFromValues] || []),\n    ];\n    if (actions) {\n        for (let action of actions) {\n            let params = {};\n            if (typeof action !== 'string') {\n                params = action.params || {};\n                action = action.name;\n            }\n            let valuesWithoutExecutedAction = removeActionFromValues(values);\n            let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n            if (typeof idxResponse.actions[action] === 'function') {\n                idxResponse = await idxResponse.actions[action](params);\n                if (idxResponse.requestDidSucceed === false) {\n                    return handleFailedResponse(authClient, idxResponse, options);\n                }\n                if (action === 'cancel') {\n                    return { idxResponse, canceled: true };\n                }\n                return remediate(authClient, idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction);\n            }\n            const remediationAction = neededToProceed.find(({ name }) => name === action);\n            if (remediationAction) {\n                idxResponse = await idxResponse.proceed(action, params);\n                if (idxResponse.requestDidSucceed === false) {\n                    return handleFailedResponse(authClient, idxResponse, options);\n                }\n                return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction);\n            }\n        }\n    }\n    const terminal = isTerminalResponse(idxResponse);\n    if (terminal) {\n        return { idxResponse, terminal };\n    }\n    if (!remediator) {\n        if (options.step) {\n            values = filterValuesForRemediation(idxResponse, options.step, values);\n            idxResponse = await idxResponse.proceed(options.step, values);\n            if (idxResponse.requestDidSucceed === false) {\n                return handleFailedResponse(authClient, idxResponse, options);\n            }\n            return { idxResponse };\n        }\n        if (flow === 'default') {\n            return { idxResponse };\n        }\n        throw new AuthSdkError(`\n      No remediation can match current flow, check policy settings in your org.\n      Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n    `);\n    }\n    if (!remediator.canRemediate()) {\n        const nextStep = getNextStep(authClient, remediator, idxResponse);\n        return {\n            idxResponse,\n            nextStep,\n        };\n    }\n    const name = remediator.getName();\n    const data = remediator.getData();\n    idxResponse = await idxResponse.proceed(name, data);\n    if (idxResponse.requestDidSucceed === false) {\n        return handleFailedResponse(authClient, idxResponse, options);\n    }\n    values = remediator.getValuesAfterProceed();\n    options = Object.assign(Object.assign({}, options), { step: undefined });\n    if (options.useGenericRemediator && !idxResponse.interactionCode && !isTerminalResponse(idxResponse)) {\n        const gr = getRemediator(idxResponse, values, options);\n        const nextStep = getNextStep(authClient, gr, idxResponse);\n        return {\n            idxResponse,\n            nextStep,\n        };\n    }\n    return remediate(authClient, idxResponse, values, options);\n}\n\nexport { remediate };\n//# sourceMappingURL=remediate.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { interact } from './interact.js';\nimport { introspect } from './introspect.js';\nimport { remediate } from './remediate.js';\nimport { IdxStatus } from './types/api.js';\nimport { saveTransactionMeta, getSavedTransactionMeta } from './transactionMeta.js';\nimport { getFlowSpecification, getEnabledFeatures, getAvailableSteps, getMessagesFromResponse, isTerminalResponse } from './util.js';\n\nfunction initializeValues(options) {\n    const knownOptions = [\n        'flow',\n        'remediators',\n        'actions',\n        'withCredentials',\n        'step',\n        'useGenericRemediator',\n        'exchangeCodeForTokens',\n    ];\n    const values = Object.assign({}, options);\n    knownOptions.forEach(option => {\n        delete values[option];\n    });\n    return values;\n}\nfunction initializeData(authClient, data) {\n    var _a, _b, _c, _d;\n    let { options } = data;\n    options = Object.assign(Object.assign({}, authClient.options.idx), options);\n    let { flow, withCredentials, remediators, actions, } = options;\n    const status = IdxStatus.PENDING;\n    flow = flow || ((_b = (_a = authClient.idx).getFlow) === null || _b === void 0 ? void 0 : _b.call(_a)) || 'default';\n    if (flow) {\n        (_d = (_c = authClient.idx).setFlow) === null || _d === void 0 ? void 0 : _d.call(_c, flow);\n        const flowSpec = getFlowSpecification(authClient, flow);\n        withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n        remediators = remediators || flowSpec.remediators;\n        actions = actions || flowSpec.actions;\n    }\n    return Object.assign(Object.assign({}, data), { options: Object.assign(Object.assign({}, options), { flow,\n            withCredentials,\n            remediators,\n            actions }), status });\n}\nasync function getDataFromIntrospect(authClient, data) {\n    const { options } = data;\n    const { stateHandle, withCredentials, version, state, scopes, recoveryToken, activationToken, maxAge, acrValues, nonce, useGenericRemediator, } = options;\n    let idxResponse;\n    let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken });\n    if (stateHandle) {\n        idxResponse = await introspect(authClient, { withCredentials, version, stateHandle, useGenericRemediator });\n    }\n    else {\n        let interactionHandle = meta === null || meta === void 0 ? void 0 : meta.interactionHandle;\n        if (!interactionHandle) {\n            authClient.transactionManager.clear();\n            const interactResponse = await interact(authClient, {\n                withCredentials,\n                state,\n                scopes,\n                activationToken,\n                recoveryToken,\n                maxAge,\n                acrValues,\n                nonce,\n            });\n            interactionHandle = interactResponse.interactionHandle;\n            meta = interactResponse.meta;\n        }\n        idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle, useGenericRemediator });\n    }\n    return Object.assign(Object.assign({}, data), { idxResponse, meta });\n}\nasync function getDataFromRemediate(authClient, data) {\n    let { idxResponse, options, values } = data;\n    const { autoRemediate, remediators, actions, flow, step, useGenericRemediator, } = options;\n    const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n    if (!shouldRemediate) {\n        return data;\n    }\n    values = Object.assign(Object.assign({}, values), { stateHandle: idxResponse.rawIdxState.stateHandle });\n    const { idxResponse: idxResponseFromRemediation, nextStep, canceled, } = await remediate(authClient, idxResponse, values, {\n        remediators,\n        actions,\n        flow,\n        step,\n        useGenericRemediator,\n    });\n    idxResponse = idxResponseFromRemediation;\n    return Object.assign(Object.assign({}, data), { idxResponse, nextStep, canceled });\n}\nasync function getTokens(authClient, data) {\n    let { meta, idxResponse } = data;\n    const { interactionCode } = idxResponse;\n    const { clientId, codeVerifier, ignoreSignature, redirectUri, urls, scopes, } = meta;\n    const tokenResponse = await authClient.token.exchangeCodeForTokens({\n        interactionCode,\n        clientId,\n        codeVerifier,\n        ignoreSignature,\n        redirectUri,\n        scopes\n    }, urls);\n    return tokenResponse.tokens;\n}\nasync function finalizeData(authClient, data) {\n    let { options, idxResponse, canceled, status, } = data;\n    const { exchangeCodeForTokens } = options;\n    let shouldSaveResponse = false;\n    let shouldClearTransaction = false;\n    let clearSharedStorage = true;\n    let interactionCode;\n    let tokens;\n    let enabledFeatures;\n    let availableSteps;\n    let messages;\n    let terminal;\n    if (idxResponse) {\n        shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n        enabledFeatures = getEnabledFeatures(idxResponse);\n        availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n        messages = getMessagesFromResponse(idxResponse, options);\n        terminal = isTerminalResponse(idxResponse);\n    }\n    if (terminal) {\n        status = IdxStatus.TERMINAL;\n        const hasActions = Object.keys(idxResponse.actions).length > 0;\n        const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n        const isTerminalSuccess = !hasActions && !hasErrors && idxResponse.requestDidSucceed === true;\n        if (isTerminalSuccess) {\n            shouldClearTransaction = true;\n        }\n        else {\n            shouldSaveResponse = !!hasActions;\n        }\n        clearSharedStorage = false;\n    }\n    else if (canceled) {\n        status = IdxStatus.CANCELED;\n        shouldClearTransaction = true;\n    }\n    else if (idxResponse === null || idxResponse === void 0 ? void 0 : idxResponse.interactionCode) {\n        interactionCode = idxResponse.interactionCode;\n        if (exchangeCodeForTokens === false) {\n            status = IdxStatus.SUCCESS;\n            shouldClearTransaction = false;\n        }\n        else {\n            tokens = await getTokens(authClient, data);\n            status = IdxStatus.SUCCESS;\n            shouldClearTransaction = true;\n        }\n    }\n    return Object.assign(Object.assign({}, data), { status,\n        interactionCode,\n        tokens,\n        shouldSaveResponse,\n        shouldClearTransaction,\n        clearSharedStorage,\n        enabledFeatures,\n        availableSteps,\n        messages,\n        terminal });\n}\nasync function run(authClient, options = {}) {\n    var _a;\n    let data = {\n        options,\n        values: initializeValues(options)\n    };\n    data = initializeData(authClient, data);\n    data = await getDataFromIntrospect(authClient, data);\n    data = await getDataFromRemediate(authClient, data);\n    data = await finalizeData(authClient, data);\n    const { idxResponse, meta, shouldSaveResponse, shouldClearTransaction, clearSharedStorage, status, enabledFeatures, availableSteps, tokens, nextStep, messages, error, interactionCode } = data;\n    if (shouldClearTransaction) {\n        authClient.transactionManager.clear({ clearSharedStorage });\n    }\n    else {\n        saveTransactionMeta(authClient, Object.assign({}, meta));\n        if (shouldSaveResponse) {\n            const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse;\n            authClient.transactionManager.saveIdxResponse({\n                rawIdxResponse,\n                requestDidSucceed,\n                stateHandle: (_a = idxResponse.context) === null || _a === void 0 ? void 0 : _a.stateHandle,\n                interactionHandle: meta === null || meta === void 0 ? void 0 : meta.interactionHandle\n            });\n        }\n    }\n    const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ status: status }, (meta && { meta })), (enabledFeatures && { enabledFeatures })), (availableSteps && { availableSteps })), (tokens && { tokens })), (nextStep && { nextStep })), (messages && messages.length && { messages })), (error && { error })), (stepUp && { stepUp })), { interactionCode,\n        actions: actions, context: context, neededToProceed: neededToProceed, proceed: proceed, rawIdxState: rawIdxState, requestDidSucceed });\n}\n\nexport { run };\n//# sourceMappingURL=run.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticatorKey } from './types/api.js';\nimport { run } from './run.js';\n\nasync function authenticate(authClient, options = {}) {\n    if (options.password && !options.authenticator) {\n        options.authenticator = AuthenticatorKey.OKTA_PASSWORD;\n    }\n    return run(authClient, Object.assign(Object.assign({}, options), { flow: 'authenticate' }));\n}\n\nexport { authenticate };\n//# sourceMappingURL=authenticate.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nclass Authenticator {\n    constructor(authenticator) {\n        this.meta = authenticator;\n    }\n}\n\nexport { Authenticator };\n//# sourceMappingURL=Authenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass VerificationCodeAuthenticator extends Authenticator {\n    canVerify(values) {\n        return !!(values.credentials || values.verificationCode || values.otp);\n    }\n    mapCredentials(values) {\n        const { credentials, verificationCode, otp } = values;\n        if (!credentials && !verificationCode && !otp) {\n            return;\n        }\n        return credentials || { passcode: verificationCode || otp };\n    }\n    getInputs(idxRemediationValue) {\n        var _a;\n        return Object.assign(Object.assign({}, (_a = idxRemediationValue.form) === null || _a === void 0 ? void 0 : _a.value[0]), { name: 'verificationCode', type: 'string', required: idxRemediationValue.required });\n    }\n}\n\nexport { VerificationCodeAuthenticator };\n//# sourceMappingURL=VerificationCodeAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator.js';\n\nclass OktaVerifyTotp extends VerificationCodeAuthenticator {\n    mapCredentials(values) {\n        const { verificationCode } = values;\n        if (!verificationCode) {\n            return;\n        }\n        return { totp: verificationCode };\n    }\n}\n\nexport { OktaVerifyTotp };\n//# sourceMappingURL=OktaVerifyTotp.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass OktaPassword extends Authenticator {\n    canVerify(values) {\n        return !!(values.credentials || values.password || values.passcode);\n    }\n    mapCredentials(values) {\n        const { credentials, password, passcode, revokeSessions } = values;\n        if (!credentials && !password && !passcode) {\n            return;\n        }\n        return credentials || {\n            passcode: passcode || password,\n            revokeSessions,\n        };\n    }\n    getInputs(idxRemediationValue) {\n        var _a, _b;\n        const inputs = [Object.assign(Object.assign({}, (_a = idxRemediationValue.form) === null || _a === void 0 ? void 0 : _a.value[0]), { name: 'password', type: 'string', required: idxRemediationValue.required })];\n        const revokeSessions = (_b = idxRemediationValue.form) === null || _b === void 0 ? void 0 : _b.value.find(input => input.name === 'revokeSessions');\n        if (revokeSessions) {\n            inputs.push({\n                name: 'revokeSessions',\n                type: 'boolean',\n                label: 'Sign me out of all other devices',\n                required: false,\n            });\n        }\n        return inputs;\n    }\n}\n\nexport { OktaPassword };\n//# sourceMappingURL=OktaPassword.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass SecurityQuestionEnrollment extends Authenticator {\n    canVerify(values) {\n        const { credentials } = values;\n        if (credentials && credentials.questionKey && credentials.answer) {\n            return true;\n        }\n        const { questionKey, question, answer } = values;\n        return !!(questionKey && answer) || !!(question && answer);\n    }\n    mapCredentials(values) {\n        const { questionKey, question, answer } = values;\n        if (!answer || (!questionKey && !question)) {\n            return;\n        }\n        return {\n            questionKey: question ? 'custom' : questionKey,\n            question,\n            answer\n        };\n    }\n    getInputs() {\n        return [\n            { name: 'questionKey', type: 'string', required: true },\n            { name: 'question', type: 'string', label: 'Create a security question' },\n            { name: 'answer', type: 'string', label: 'Answer', required: true },\n        ];\n    }\n}\n\nexport { SecurityQuestionEnrollment };\n//# sourceMappingURL=SecurityQuestionEnrollment.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass SecurityQuestionVerification extends Authenticator {\n    canVerify(values) {\n        const { credentials } = values;\n        if (credentials && credentials.answer) {\n            return true;\n        }\n        const { answer } = values;\n        return !!answer;\n    }\n    mapCredentials(values) {\n        const { answer } = values;\n        if (!answer) {\n            return;\n        }\n        return {\n            questionKey: this.meta.contextualData.enrolledQuestion.questionKey,\n            answer\n        };\n    }\n    getInputs() {\n        return [\n            { name: 'answer', type: 'string', label: 'Answer', required: true }\n        ];\n    }\n}\n\nexport { SecurityQuestionVerification };\n//# sourceMappingURL=SecurityQuestionVerification.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass WebauthnEnrollment extends Authenticator {\n    canVerify(values) {\n        const { credentials } = values;\n        const obj = credentials || values;\n        const { clientData, attestation } = obj;\n        return !!(clientData && attestation);\n    }\n    mapCredentials(values) {\n        const { credentials, clientData, attestation } = values;\n        if (!credentials && !clientData && !attestation) {\n            return;\n        }\n        return credentials || ({\n            clientData,\n            attestation\n        });\n    }\n    getInputs() {\n        return [\n            { name: 'clientData', type: 'string', required: true, visible: false, label: 'Client Data' },\n            { name: 'attestation', type: 'string', required: true, visible: false, label: 'Attestation' },\n        ];\n    }\n}\n\nexport { WebauthnEnrollment };\n//# sourceMappingURL=WebauthnEnrollment.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Authenticator } from './Authenticator.js';\n\nclass WebauthnVerification extends Authenticator {\n    canVerify(values) {\n        const { credentials } = values;\n        const obj = credentials || values;\n        const { clientData, authenticatorData, signatureData } = obj;\n        return !!(clientData && authenticatorData && signatureData);\n    }\n    mapCredentials(values) {\n        const { credentials, authenticatorData, clientData, signatureData } = values;\n        if (!credentials && !authenticatorData && !clientData && !signatureData) {\n            return;\n        }\n        return credentials || ({\n            authenticatorData,\n            clientData,\n            signatureData\n        });\n    }\n    getInputs() {\n        return [\n            { name: 'authenticatorData', type: 'string', label: 'Authenticator Data', required: true, visible: false },\n            { name: 'clientData', type: 'string', label: 'Client Data', required: true, visible: false },\n            { name: 'signatureData', type: 'string', label: 'Signature Data', required: true, visible: false },\n        ];\n    }\n}\n\nexport { WebauthnVerification };\n//# sourceMappingURL=WebauthnVerification.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Remediator.js';\nimport { getAuthenticator } from '../../authenticator/getAuthenticator.js';\n\nclass VerifyAuthenticator extends Remediator {\n    constructor(remediation, values = {}) {\n        super(remediation, values);\n        this.authenticator = getAuthenticator(remediation);\n    }\n    getNextStep(authClient, context) {\n        var _a;\n        const nextStep = super.getNextStep(authClient, context);\n        const authenticatorEnrollments = (_a = context === null || context === void 0 ? void 0 : context.authenticatorEnrollments) === null || _a === void 0 ? void 0 : _a.value;\n        return Object.assign(Object.assign({}, nextStep), { authenticatorEnrollments });\n    }\n    canRemediate() {\n        return this.authenticator.canVerify(this.values);\n    }\n    mapCredentials() {\n        return this.authenticator.mapCredentials(this.values);\n    }\n    getInputCredentials(input) {\n        return this.authenticator.getInputs(input);\n    }\n    getValuesAfterProceed() {\n        this.values = super.getValuesAfterProceed();\n        let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n        return trimmedValues.reduce((values, valueKey) => (Object.assign(Object.assign({}, values), { [valueKey]: this.values[valueKey] })), {});\n    }\n}\n\nexport { VerifyAuthenticator };\n//# sourceMappingURL=VerifyAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaVerifyTotp } from './OktaVerifyTotp.js';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator.js';\nimport { OktaPassword } from './OktaPassword.js';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment.js';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification.js';\nimport { WebauthnEnrollment } from './WebauthnEnrollment.js';\nimport { WebauthnVerification } from './WebauthnVerification.js';\nimport { AuthenticatorKey } from '../types/api.js';\n\nfunction getAuthenticator(remediation) {\n    var _a, _b;\n    const relatesTo = remediation.relatesTo;\n    const value = (relatesTo === null || relatesTo === void 0 ? void 0 : relatesTo.value) || {};\n    switch (value.key) {\n        case AuthenticatorKey.OKTA_PASSWORD:\n            return new OktaPassword(value);\n        case AuthenticatorKey.SECURITY_QUESTION:\n            if ((_a = value.contextualData) === null || _a === void 0 ? void 0 : _a.enrolledQuestion) {\n                return new SecurityQuestionVerification(value);\n            }\n            else {\n                return new SecurityQuestionEnrollment(value);\n            }\n        case AuthenticatorKey.OKTA_VERIFY:\n            return new OktaVerifyTotp(value);\n        case AuthenticatorKey.WEBAUTHN:\n            if ((_b = value.contextualData) === null || _b === void 0 ? void 0 : _b.challengeData) {\n                return new WebauthnVerification(value);\n            }\n            else {\n                return new WebauthnEnrollment(value);\n            }\n        default:\n            return new VerificationCodeAuthenticator(value);\n    }\n}\n\nexport { getAuthenticator };\n//# sourceMappingURL=getAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerifyAuthenticator } from './Base/VerifyAuthenticator.js';\n\nclass EnrollAuthenticator extends VerifyAuthenticator {\n}\nEnrollAuthenticator.remediationName = 'enroll-authenticator';\n\nexport { EnrollAuthenticator };\n//# sourceMappingURL=EnrollAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass EnrollPoll extends Remediator {\n    canRemediate() {\n        return !!this.values.startPolling || this.options.step === 'enroll-poll';\n    }\n    getNextStep(authClient, context) {\n        const common = super.getNextStep(authClient, context);\n        let authenticator = this.getAuthenticator();\n        if (!authenticator && (context === null || context === void 0 ? void 0 : context.currentAuthenticator)) {\n            authenticator = context.currentAuthenticator.value;\n        }\n        return Object.assign(Object.assign({}, common), { authenticator, poll: {\n                required: true,\n                refresh: this.remediation.refresh\n            } });\n    }\n    getValuesAfterProceed() {\n        let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n        return trimmedValues.reduce((values, valueKey) => (Object.assign(Object.assign({}, values), { [valueKey]: this.values[valueKey] })), {});\n    }\n}\nEnrollPoll.remediationName = 'enroll-poll';\n\nexport { EnrollPoll };\n//# sourceMappingURL=EnrollPoll.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass SelectEnrollmentChannel extends Remediator {\n    canRemediate() {\n        if (this.values.channel) {\n            return true;\n        }\n        if (this.values.authenticator) {\n            const { id, channel } = this.values.authenticator;\n            if (!!id && !!channel) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getNextStep(authClient, context) {\n        const common = super.getNextStep(authClient, context);\n        const authenticator = context.currentAuthenticator.value;\n        return Object.assign(Object.assign({}, common), { authenticator });\n    }\n    getData() {\n        var _a;\n        const remediationValue = this.remediation.value[0].value;\n        return {\n            authenticator: {\n                id: remediationValue.form.value[0].value,\n                channel: ((_a = this.values.authenticator) === null || _a === void 0 ? void 0 : _a.channel) || this.values.channel,\n            },\n            stateHandle: this.values.stateHandle,\n        };\n    }\n    getValuesAfterProceed() {\n        this.values = super.getValuesAfterProceed();\n        delete this.values.authenticators;\n        const filterKey = this.values.channel ? 'channel' : 'authenticator';\n        let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n        return trimmedValues.reduce((values, valueKey) => (Object.assign(Object.assign({}, values), { [valueKey]: this.values[valueKey] })), {});\n    }\n}\nSelectEnrollmentChannel.remediationName = 'select-enrollment-channel';\n\nexport { SelectEnrollmentChannel };\n//# sourceMappingURL=SelectEnrollmentChannel.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass EnrollmentChannelData extends Remediator {\n    getInputEmail() {\n        return [\n            { name: 'email', type: 'string', required: true, label: 'Email' },\n        ];\n    }\n    getInputPhoneNumber() {\n        return [\n            { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n        ];\n    }\n    canRemediate() {\n        return Boolean(this.values.email || this.values.phoneNumber);\n    }\n    getNextStep(authClient, context) {\n        const common = super.getNextStep(authClient, context);\n        const authenticator = context.currentAuthenticator.value;\n        return Object.assign(Object.assign({}, common), { authenticator });\n    }\n    getData() {\n        return {\n            stateHandle: this.values.stateHandle,\n            email: this.values.email,\n            phoneNumber: this.values.phoneNumber\n        };\n    }\n    getValuesAfterProceed() {\n        let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n        return trimmedValues.reduce((values, valueKey) => (Object.assign(Object.assign({}, values), { [valueKey]: this.values[valueKey] })), {});\n    }\n}\nEnrollmentChannelData.remediationName = 'enrollment-channel-data';\n\nexport { EnrollmentChannelData };\n//# sourceMappingURL=EnrollmentChannelData.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerifyAuthenticator } from './Base/VerifyAuthenticator.js';\n\nclass ChallengeAuthenticator extends VerifyAuthenticator {\n}\nChallengeAuthenticator.remediationName = 'challenge-authenticator';\n\nexport { ChallengeAuthenticator };\n//# sourceMappingURL=ChallengeAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { EnrollPoll } from './EnrollPoll.js';\n\nclass ChallengePoll extends EnrollPoll {\n    canRemediate() {\n        return !!this.values.startPolling || this.options.step === 'challenge-poll';\n    }\n}\nChallengePoll.remediationName = 'challenge-poll';\n\nexport { ChallengePoll };\n//# sourceMappingURL=ChallengePoll.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerifyAuthenticator } from './Base/VerifyAuthenticator.js';\n\nclass ResetAuthenticator extends VerifyAuthenticator {\n}\nResetAuthenticator.remediationName = 'reset-authenticator';\n\nexport { ResetAuthenticator };\n//# sourceMappingURL=ResetAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\nimport { OktaPassword } from '../authenticator/OktaPassword.js';\nimport '../types/api.js';\n\nclass EnrollProfile extends Remediator {\n    constructor(remediation, values = {}, options = {}) {\n        super(remediation, values, options);\n        this.authenticator = null;\n        const credentials = this.getCredentialsFromRemediation();\n        if (credentials) {\n            this.authenticator = this.authenticator = new OktaPassword({});\n        }\n    }\n    canRemediate() {\n        if (this.authenticator && !this.authenticator.canVerify(this.values)) {\n            return false;\n        }\n        const userProfileFromValues = this.getData().userProfile;\n        if (!userProfileFromValues) {\n            return false;\n        }\n        const userProfileFromRemediation = this.remediation.value.find(({ name }) => name === 'userProfile');\n        return userProfileFromRemediation.form.value.reduce((canRemediate, curr) => {\n            if (curr.required) {\n                canRemediate = canRemediate && !!userProfileFromValues[curr.name];\n            }\n            return canRemediate;\n        }, true);\n    }\n    getCredentialsFromRemediation() {\n        return this.remediation.value.find(({ name }) => name === 'credentials');\n    }\n    mapUserProfile({ form: { value: profileAttributes } }) {\n        const attributeNames = profileAttributes.map(({ name }) => name);\n        const data = attributeNames.reduce((attributeValues, attributeName) => (this.values[attributeName] ? Object.assign(Object.assign({}, attributeValues), { [attributeName]: this.values[attributeName] }) : attributeValues), {});\n        if (Object.keys(data).length === 0) {\n            return;\n        }\n        return data;\n    }\n    mapCredentials() {\n        const val = this.authenticator && this.authenticator.mapCredentials(this.values);\n        if (!val) {\n            return;\n        }\n        return val;\n    }\n    getInputUserProfile(input) {\n        return [...input.form.value];\n    }\n    getInputCredentials(input) {\n        return [...input.form.value];\n    }\n    getErrorMessages(errorRemediation) {\n        return errorRemediation.value[0].form.value.reduce((errors, field) => {\n            if (field.messages) {\n                errors.push(field.messages.value[0].message);\n            }\n            return errors;\n        }, []);\n    }\n}\nEnrollProfile.remediationName = 'enroll-profile';\n\nexport { EnrollProfile };\n//# sourceMappingURL=EnrollProfile.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass Identify extends Remediator {\n    constructor() {\n        super(...arguments);\n        this.map = {\n            'identifier': ['username']\n        };\n    }\n    canRemediate() {\n        const { identifier } = this.getData();\n        return !!identifier;\n    }\n    mapCredentials() {\n        const { credentials, password } = this.values;\n        if (!credentials && !password) {\n            return;\n        }\n        return credentials || { passcode: password };\n    }\n    getInputCredentials(input) {\n        return Object.assign(Object.assign({}, input.form.value[0]), { name: 'password', required: input.required });\n    }\n}\nIdentify.remediationName = 'identify';\n\nexport { Identify };\n//# sourceMappingURL=Identify.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass ReEnrollAuthenticator extends Remediator {\n    mapCredentials() {\n        const { newPassword } = this.values;\n        if (!newPassword) {\n            return;\n        }\n        return {\n            passcode: newPassword,\n        };\n    }\n    getInputCredentials(input) {\n        const challengeType = this.getAuthenticator().type;\n        const name = challengeType === 'password' ? 'newPassword' : 'verificationCode';\n        return Object.assign(Object.assign({}, input.form.value[0]), { name });\n    }\n}\nReEnrollAuthenticator.remediationName = 'reenroll-authenticator';\n\nexport { ReEnrollAuthenticator };\n//# sourceMappingURL=ReEnrollAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ReEnrollAuthenticator } from './ReEnrollAuthenticator.js';\n\nclass ReEnrollAuthenticatorWarning extends ReEnrollAuthenticator {\n}\nReEnrollAuthenticatorWarning.remediationName = 'reenroll-authenticator-warning';\n\nexport { ReEnrollAuthenticatorWarning };\n//# sourceMappingURL=ReEnrollAuthenticatorWarning.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass RedirectIdp extends Remediator {\n    canRemediate() {\n        return false;\n    }\n    getNextStep() {\n        const { name, type, idp, href } = this.remediation;\n        return {\n            name,\n            type,\n            idp,\n            href\n        };\n    }\n}\nRedirectIdp.remediationName = 'redirect-idp';\n\nexport { RedirectIdp };\n//# sourceMappingURL=RedirectIdp.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Remediator.js';\nimport { getAuthenticatorFromRemediation } from '../util.js';\nimport { isAuthenticator } from '../../types/api.js';\nimport { findMatchedOption, compareAuthenticators } from '../../authenticator/util.js';\n\nclass SelectAuthenticator extends Remediator {\n    findMatchedOption(authenticators, options) {\n        let option;\n        for (let authenticator of authenticators) {\n            option = options\n                .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n            if (option) {\n                break;\n            }\n        }\n        return option;\n    }\n    canRemediate(context) {\n        var _a, _b;\n        const { authenticators, authenticator } = this.values;\n        const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n        const { options } = authenticatorFromRemediation;\n        if (!authenticators || !authenticators.length) {\n            return false;\n        }\n        if (isAuthenticator(authenticator) && authenticator.id) {\n            return true;\n        }\n        const matchedOption = this.findMatchedOption(authenticators, options);\n        if (matchedOption) {\n            const isCurrentAuthenticator = (context === null || context === void 0 ? void 0 : context.currentAuthenticator)\n                && (context === null || context === void 0 ? void 0 : context.currentAuthenticator.value.id) === ((_a = matchedOption.relatesTo) === null || _a === void 0 ? void 0 : _a.id);\n            const isCurrentAuthenticatorEnrollment = (context === null || context === void 0 ? void 0 : context.currentAuthenticatorEnrollment)\n                && (context === null || context === void 0 ? void 0 : context.currentAuthenticatorEnrollment.value.id) === ((_b = matchedOption.relatesTo) === null || _b === void 0 ? void 0 : _b.id);\n            return !isCurrentAuthenticator && !isCurrentAuthenticatorEnrollment;\n        }\n        return false;\n    }\n    mapAuthenticator(remediationValue) {\n        const { authenticators, authenticator } = this.values;\n        if (isAuthenticator(authenticator) && authenticator.id) {\n            this.selectedAuthenticator = authenticator;\n            return authenticator;\n        }\n        const { options } = remediationValue;\n        const selectedOption = findMatchedOption(authenticators, options);\n        this.selectedAuthenticator = selectedOption.relatesTo;\n        this.selectedOption = selectedOption;\n        return {\n            id: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value.form.value.find(({ name }) => name === 'id').value\n        };\n    }\n    getInputAuthenticator(remediation) {\n        const options = remediation.options.map(({ label, relatesTo }) => {\n            return {\n                label,\n                value: relatesTo.key\n            };\n        });\n        return { name: 'authenticator', type: 'string', options };\n    }\n    getValuesAfterProceed() {\n        this.values = super.getValuesAfterProceed();\n        const authenticators = this.values.authenticators\n            .filter(authenticator => {\n            return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n        });\n        return Object.assign(Object.assign({}, this.values), { authenticators });\n    }\n}\n\nexport { SelectAuthenticator };\n//# sourceMappingURL=SelectAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { SelectAuthenticator } from './Base/SelectAuthenticator.js';\nimport { getAuthenticatorFromRemediation } from './util.js';\nimport { AuthenticatorKey } from '../types/api.js';\n\nclass SelectAuthenticatorAuthenticate extends SelectAuthenticator {\n    constructor(remediation, values = {}, options = {}) {\n        var _a;\n        super(remediation, values, options);\n        const isRecoveryFlow = this.options.flow === 'recoverPassword';\n        const hasPasswordInOptions = (_a = getAuthenticatorFromRemediation(remediation)\n            .options) === null || _a === void 0 ? void 0 : _a.some(({ relatesTo }) => (relatesTo === null || relatesTo === void 0 ? void 0 : relatesTo.key) === AuthenticatorKey.OKTA_PASSWORD);\n        if (hasPasswordInOptions && (isRecoveryFlow || this.values.password)) {\n            this.values.authenticators = [\n                ...this.values.authenticators || [],\n                { key: AuthenticatorKey.OKTA_PASSWORD }\n            ];\n        }\n    }\n}\nSelectAuthenticatorAuthenticate.remediationName = 'select-authenticator-authenticate';\n\nexport { SelectAuthenticatorAuthenticate };\n//# sourceMappingURL=SelectAuthenticatorAuthenticate.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { SelectAuthenticator } from './Base/SelectAuthenticator.js';\n\nclass SelectAuthenticatorEnroll extends SelectAuthenticator {\n}\nSelectAuthenticatorEnroll.remediationName = 'select-authenticator-enroll';\n\nexport { SelectAuthenticatorEnroll };\n//# sourceMappingURL=SelectAuthenticatorEnroll.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { SelectAuthenticator } from './Base/SelectAuthenticator.js';\n\nclass SelectAuthenticatorUnlockAccount extends SelectAuthenticator {\n    constructor() {\n        super(...arguments);\n        this.map = {\n            identifier: ['username']\n        };\n    }\n    canRemediate() {\n        const identifier = this.getData('identifier');\n        return !!identifier && super.canRemediate();\n    }\n    mapAuthenticator(remediationValue) {\n        var _a, _b, _c;\n        const authenticatorMap = super.mapAuthenticator(remediationValue);\n        const methodTypeOption = (_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.value.form.value.find(({ name }) => name === 'methodType');\n        const methodTypeValue = this.values.methodType ||\n            (methodTypeOption === null || methodTypeOption === void 0 ? void 0 : methodTypeOption.value) || ((_c = (_b = methodTypeOption === null || methodTypeOption === void 0 ? void 0 : methodTypeOption.options) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.value);\n        if (methodTypeValue) {\n            return Object.assign(Object.assign({}, authenticatorMap), { methodType: methodTypeValue });\n        }\n        return authenticatorMap;\n    }\n    getInputUsername() {\n        return { name: 'username', type: 'string' };\n    }\n}\nSelectAuthenticatorUnlockAccount.remediationName = 'select-authenticator-unlock-account';\n\nexport { SelectAuthenticatorUnlockAccount };\n//# sourceMappingURL=SelectAuthenticatorUnlockAccount.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass SelectEnrollProfile extends Remediator {\n    canRemediate() {\n        return true;\n    }\n}\nSelectEnrollProfile.remediationName = 'select-enroll-profile';\n\nexport { SelectEnrollProfile };\n//# sourceMappingURL=SelectEnrollProfile.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Remediator.js';\nimport { isAuthenticator } from '../../types/api.js';\nimport { compareAuthenticators } from '../../authenticator/util.js';\n\nclass AuthenticatorData extends Remediator {\n    constructor(remediation, values = {}) {\n        super(remediation, values);\n        this.authenticator = this.getAuthenticator();\n        this.formatAuthenticatorData();\n    }\n    formatAuthenticatorData() {\n        const authenticatorData = this.getAuthenticatorData();\n        if (authenticatorData) {\n            this.values.authenticatorsData = this.values.authenticatorsData.map(data => {\n                if (compareAuthenticators(this.authenticator, data)) {\n                    return this.mapAuthenticatorDataFromValues(data);\n                }\n                return data;\n            });\n        }\n        else {\n            const data = this.mapAuthenticatorDataFromValues();\n            if (data) {\n                this.values.authenticatorsData.push(data);\n            }\n        }\n    }\n    getAuthenticatorData() {\n        return this.values.authenticatorsData\n            .find((data) => compareAuthenticators(this.authenticator, data));\n    }\n    canRemediate() {\n        return this.values.authenticatorsData\n            .some(data => compareAuthenticators(this.authenticator, data));\n    }\n    mapAuthenticatorDataFromValues(authenticatorData) {\n        let { methodType, authenticator } = this.values;\n        if (!methodType && isAuthenticator(authenticator)) {\n            methodType = authenticator === null || authenticator === void 0 ? void 0 : authenticator.methodType;\n        }\n        const { id, enrollmentId } = this.authenticator;\n        const data = Object.assign(Object.assign({ id,\n            enrollmentId }, (authenticatorData && authenticatorData)), (methodType && { methodType }));\n        return data.methodType ? data : null;\n    }\n    getAuthenticatorFromRemediation() {\n        const authenticator = this.remediation.value\n            .find(({ name }) => name === 'authenticator');\n        return authenticator;\n    }\n    getValuesAfterProceed() {\n        this.values = super.getValuesAfterProceed();\n        const authenticatorsData = this.values.authenticatorsData\n            .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n        return Object.assign(Object.assign({}, this.values), { authenticatorsData });\n    }\n}\n\nexport { AuthenticatorData };\n//# sourceMappingURL=AuthenticatorData.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticatorData } from './Base/AuthenticatorData.js';\n\nclass AuthenticatorVerificationData extends AuthenticatorData {\n    mapAuthenticator() {\n        return this.getAuthenticatorData();\n    }\n    getInputAuthenticator() {\n        const authenticator = this.getAuthenticatorFromRemediation();\n        const methodType = authenticator.form.value.find(({ name }) => name === 'methodType');\n        if (methodType && methodType.options) {\n            return {\n                name: 'methodType',\n                type: 'string',\n                required: true,\n                options: methodType.options\n            };\n        }\n        const inputs = [...authenticator.form.value];\n        return inputs;\n    }\n    getValuesAfterProceed() {\n        this.values = super.getValuesAfterProceed();\n        let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n        return trimmedValues.reduce((values, valueKey) => (Object.assign(Object.assign({}, values), { [valueKey]: this.values[valueKey] })), {});\n    }\n}\nAuthenticatorVerificationData.remediationName = 'authenticator-verification-data';\n\nexport { AuthenticatorVerificationData };\n//# sourceMappingURL=AuthenticatorVerificationData.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticatorData } from './Base/AuthenticatorData.js';\nimport { getAuthenticatorFromRemediation } from './util.js';\n\nclass AuthenticatorEnrollmentData extends AuthenticatorData {\n    mapAuthenticator() {\n        const authenticatorData = this.getAuthenticatorData();\n        const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n        return {\n            id: authenticatorFromRemediation.form.value\n                .find(({ name }) => name === 'id').value,\n            methodType: authenticatorData.methodType,\n            phoneNumber: authenticatorData.phoneNumber,\n        };\n    }\n    getInputAuthenticator(remediation) {\n        return [\n            { name: 'methodType', type: 'string' },\n            { name: 'phoneNumber', label: 'Phone Number', type: 'string' }\n        ].map(item => {\n            const value = remediation.form.value.find(val => val.name === item.name);\n            return Object.assign(Object.assign({}, value), item);\n        });\n    }\n    mapAuthenticatorDataFromValues(data) {\n        data = super.mapAuthenticatorDataFromValues(data);\n        const { phoneNumber } = this.values;\n        if (!data && !phoneNumber) {\n            return;\n        }\n        return Object.assign(Object.assign({}, (data && data)), (phoneNumber && { phoneNumber }));\n    }\n}\nAuthenticatorEnrollmentData.remediationName = 'authenticator-enrollment-data';\n\nexport { AuthenticatorEnrollmentData };\n//# sourceMappingURL=AuthenticatorEnrollmentData.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator } from './Base/Remediator.js';\n\nclass Skip extends Remediator {\n    canRemediate() {\n        return !!this.values.skip || this.options.step === 'skip';\n    }\n}\nSkip.remediationName = 'skip';\n\nexport { Skip };\n//# sourceMappingURL=Skip.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../types/api.js';\nimport { EnrollAuthenticator } from '../remediators/EnrollAuthenticator.js';\nimport { EnrollPoll } from '../remediators/EnrollPoll.js';\nimport { SelectEnrollmentChannel } from '../remediators/SelectEnrollmentChannel.js';\nimport { EnrollmentChannelData } from '../remediators/EnrollmentChannelData.js';\nimport { ChallengeAuthenticator } from '../remediators/ChallengeAuthenticator.js';\nimport { ChallengePoll } from '../remediators/ChallengePoll.js';\nimport '../remediators/ResetAuthenticator.js';\nimport '../remediators/EnrollProfile.js';\nimport { Identify } from '../remediators/Identify.js';\nimport { ReEnrollAuthenticator } from '../remediators/ReEnrollAuthenticator.js';\nimport { ReEnrollAuthenticatorWarning } from '../remediators/ReEnrollAuthenticatorWarning.js';\nimport { RedirectIdp } from '../remediators/RedirectIdp.js';\nimport { SelectAuthenticatorAuthenticate } from '../remediators/SelectAuthenticatorAuthenticate.js';\nimport { SelectAuthenticatorEnroll } from '../remediators/SelectAuthenticatorEnroll.js';\nimport '../remediators/SelectAuthenticatorUnlockAccount.js';\nimport '../remediators/SelectEnrollProfile.js';\nimport { AuthenticatorVerificationData } from '../remediators/AuthenticatorVerificationData.js';\nimport { AuthenticatorEnrollmentData } from '../remediators/AuthenticatorEnrollmentData.js';\nimport { Skip } from '../remediators/Skip.js';\nimport '../../_virtual/_tslib.js';\nimport '../../errors/WWWAuthError.js';\n\nconst AuthenticationFlow = {\n    'identify': Identify,\n    'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n    'select-authenticator-enroll': SelectAuthenticatorEnroll,\n    'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n    'authenticator-verification-data': AuthenticatorVerificationData,\n    'enroll-authenticator': EnrollAuthenticator,\n    'challenge-authenticator': ChallengeAuthenticator,\n    'challenge-poll': ChallengePoll,\n    'reenroll-authenticator': ReEnrollAuthenticator,\n    'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n    'enroll-poll': EnrollPoll,\n    'select-enrollment-channel': SelectEnrollmentChannel,\n    'enrollment-channel-data': EnrollmentChannelData,\n    'redirect-idp': RedirectIdp,\n    'skip': Skip,\n};\n\nexport { AuthenticationFlow };\n//# sourceMappingURL=AuthenticationFlow.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../types/api.js';\nimport '../remediators/EnrollAuthenticator.js';\nimport { EnrollPoll } from '../remediators/EnrollPoll.js';\nimport '../remediators/SelectEnrollmentChannel.js';\nimport '../remediators/EnrollmentChannelData.js';\nimport { ChallengeAuthenticator } from '../remediators/ChallengeAuthenticator.js';\nimport '../remediators/ChallengePoll.js';\nimport { ResetAuthenticator } from '../remediators/ResetAuthenticator.js';\nimport '../remediators/EnrollProfile.js';\nimport { Identify } from '../remediators/Identify.js';\nimport { ReEnrollAuthenticator } from '../remediators/ReEnrollAuthenticator.js';\nimport { ReEnrollAuthenticatorWarning } from '../remediators/ReEnrollAuthenticatorWarning.js';\nimport '../remediators/RedirectIdp.js';\nimport { SelectAuthenticatorAuthenticate } from '../remediators/SelectAuthenticatorAuthenticate.js';\nimport { SelectAuthenticatorEnroll } from '../remediators/SelectAuthenticatorEnroll.js';\nimport '../remediators/SelectAuthenticatorUnlockAccount.js';\nimport '../remediators/SelectEnrollProfile.js';\nimport { AuthenticatorVerificationData } from '../remediators/AuthenticatorVerificationData.js';\nimport { AuthenticatorEnrollmentData } from '../remediators/AuthenticatorEnrollmentData.js';\nimport '../remediators/Skip.js';\nimport '../../_virtual/_tslib.js';\nimport '../../errors/WWWAuthError.js';\n\nconst PasswordRecoveryFlow = {\n    'identify': Identify,\n    'identify-recovery': Identify,\n    'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n    'select-authenticator-enroll': SelectAuthenticatorEnroll,\n    'challenge-authenticator': ChallengeAuthenticator,\n    'authenticator-verification-data': AuthenticatorVerificationData,\n    'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n    'reset-authenticator': ResetAuthenticator,\n    'reenroll-authenticator': ReEnrollAuthenticator,\n    'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n    'enroll-poll': EnrollPoll,\n};\n\nexport { PasswordRecoveryFlow };\n//# sourceMappingURL=PasswordRecoveryFlow.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../types/api.js';\nimport { EnrollAuthenticator } from '../remediators/EnrollAuthenticator.js';\nimport { EnrollPoll } from '../remediators/EnrollPoll.js';\nimport { SelectEnrollmentChannel } from '../remediators/SelectEnrollmentChannel.js';\nimport { EnrollmentChannelData } from '../remediators/EnrollmentChannelData.js';\nimport '../remediators/ChallengeAuthenticator.js';\nimport '../remediators/ChallengePoll.js';\nimport '../remediators/ResetAuthenticator.js';\nimport { EnrollProfile } from '../remediators/EnrollProfile.js';\nimport '../remediators/Identify.js';\nimport '../remediators/ReEnrollAuthenticator.js';\nimport '../remediators/ReEnrollAuthenticatorWarning.js';\nimport '../remediators/RedirectIdp.js';\nimport '../remediators/SelectAuthenticatorAuthenticate.js';\nimport { SelectAuthenticatorEnroll } from '../remediators/SelectAuthenticatorEnroll.js';\nimport '../remediators/SelectAuthenticatorUnlockAccount.js';\nimport { SelectEnrollProfile } from '../remediators/SelectEnrollProfile.js';\nimport '../remediators/AuthenticatorVerificationData.js';\nimport { AuthenticatorEnrollmentData } from '../remediators/AuthenticatorEnrollmentData.js';\nimport { Skip } from '../remediators/Skip.js';\nimport '../../_virtual/_tslib.js';\nimport '../../errors/WWWAuthError.js';\n\nconst RegistrationFlow = {\n    'select-enroll-profile': SelectEnrollProfile,\n    'enroll-profile': EnrollProfile,\n    'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n    'select-authenticator-enroll': SelectAuthenticatorEnroll,\n    'enroll-poll': EnrollPoll,\n    'select-enrollment-channel': SelectEnrollmentChannel,\n    'enrollment-channel-data': EnrollmentChannelData,\n    'enroll-authenticator': EnrollAuthenticator,\n    'skip': Skip,\n};\n\nexport { RegistrationFlow };\n//# sourceMappingURL=RegistrationFlow.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../types/api.js';\nimport '../remediators/EnrollAuthenticator.js';\nimport '../remediators/EnrollPoll.js';\nimport '../remediators/SelectEnrollmentChannel.js';\nimport '../remediators/EnrollmentChannelData.js';\nimport { ChallengeAuthenticator } from '../remediators/ChallengeAuthenticator.js';\nimport { ChallengePoll } from '../remediators/ChallengePoll.js';\nimport '../remediators/ResetAuthenticator.js';\nimport '../remediators/EnrollProfile.js';\nimport { Identify } from '../remediators/Identify.js';\nimport '../remediators/ReEnrollAuthenticator.js';\nimport { ReEnrollAuthenticatorWarning } from '../remediators/ReEnrollAuthenticatorWarning.js';\nimport '../remediators/RedirectIdp.js';\nimport { SelectAuthenticatorAuthenticate } from '../remediators/SelectAuthenticatorAuthenticate.js';\nimport '../remediators/SelectAuthenticatorEnroll.js';\nimport { SelectAuthenticatorUnlockAccount } from '../remediators/SelectAuthenticatorUnlockAccount.js';\nimport '../remediators/SelectEnrollProfile.js';\nimport { AuthenticatorVerificationData } from '../remediators/AuthenticatorVerificationData.js';\nimport '../remediators/AuthenticatorEnrollmentData.js';\nimport '../remediators/Skip.js';\nimport '../../_virtual/_tslib.js';\nimport '../../errors/WWWAuthError.js';\n\nconst AccountUnlockFlow = {\n    'identify': Identify,\n    'select-authenticator-unlock-account': SelectAuthenticatorUnlockAccount,\n    'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n    'challenge-authenticator': ChallengeAuthenticator,\n    'challenge-poll': ChallengePoll,\n    'authenticator-verification-data': AuthenticatorVerificationData,\n    'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n};\n\nexport { AccountUnlockFlow };\n//# sourceMappingURL=AccountUnlockFlow.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticationFlow } from './AuthenticationFlow.js';\nimport { PasswordRecoveryFlow } from './PasswordRecoveryFlow.js';\nimport { RegistrationFlow } from './RegistrationFlow.js';\nimport { AccountUnlockFlow } from './AccountUnlockFlow.js';\n\nfunction getFlowSpecification(oktaAuth, flow = 'default') {\n    let remediators, actions, withCredentials = true;\n    switch (flow) {\n        case 'register':\n        case 'signup':\n        case 'enrollProfile':\n            remediators = RegistrationFlow;\n            withCredentials = false;\n            break;\n        case 'recoverPassword':\n        case 'resetPassword':\n            remediators = PasswordRecoveryFlow;\n            actions = [\n                'currentAuthenticator-recover',\n                'currentAuthenticatorEnrollment-recover'\n            ];\n            withCredentials = false;\n            break;\n        case 'unlockAccount':\n            remediators = AccountUnlockFlow;\n            withCredentials = false;\n            actions = [\n                'unlock-account'\n            ];\n            break;\n        case 'authenticate':\n        case 'login':\n        case 'signin':\n            remediators = AuthenticationFlow;\n            break;\n        default:\n            remediators = AuthenticationFlow;\n            break;\n    }\n    return { flow, remediators, actions, withCredentials };\n}\n\nexport { getFlowSpecification };\n//# sourceMappingURL=FlowSpecification.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\nimport './types/api.js';\nimport './remediators/EnrollAuthenticator.js';\nimport './remediators/EnrollPoll.js';\nimport './remediators/SelectEnrollmentChannel.js';\nimport './remediators/EnrollmentChannelData.js';\nimport './remediators/ChallengeAuthenticator.js';\nimport './remediators/ChallengePoll.js';\nimport './remediators/ResetAuthenticator.js';\nimport './remediators/EnrollProfile.js';\nimport './remediators/Identify.js';\nimport './remediators/ReEnrollAuthenticator.js';\nimport './remediators/ReEnrollAuthenticatorWarning.js';\nimport './remediators/RedirectIdp.js';\nimport './remediators/SelectAuthenticatorAuthenticate.js';\nimport './remediators/SelectAuthenticatorEnroll.js';\nimport './remediators/SelectAuthenticatorUnlockAccount.js';\nimport './remediators/SelectEnrollProfile.js';\nimport './remediators/AuthenticatorVerificationData.js';\nimport './remediators/AuthenticatorEnrollmentData.js';\nimport './remediators/Skip.js';\nimport '../_virtual/_tslib.js';\nimport '../errors/WWWAuthError.js';\nimport { getFlowSpecification } from './flow/FlowSpecification.js';\n\nasync function cancel(authClient, options) {\n    const meta = authClient.transactionManager.load();\n    const flowSpec = getFlowSpecification(authClient, meta.flow);\n    return run(authClient, Object.assign(Object.assign(Object.assign({}, options), flowSpec), { actions: ['cancel'] }));\n}\n\nexport { cancel };\n//# sourceMappingURL=cancel.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction urlParamsToObject(hashOrSearch) {\n    var plus2space = /\\+/g;\n    var paramSplit = /([^&=]+)=?([^&]*)/g;\n    var fragment = hashOrSearch || '';\n    if (fragment.charAt(0) === '#' && fragment.charAt(1) === '/') {\n        fragment = fragment.substring(2);\n    }\n    if (fragment.charAt(0) === '#' || fragment.charAt(0) === '?') {\n        fragment = fragment.substring(1);\n    }\n    var obj = {};\n    var param;\n    while (true) {\n        param = paramSplit.exec(fragment);\n        if (!param) {\n            break;\n        }\n        var key = param[1];\n        var value = param[2];\n        if (key === 'id_token' || key === 'access_token' || key === 'code') {\n            obj[key] = value;\n        }\n        else {\n            obj[key] = decodeURIComponent(value.replace(plus2space, ' '));\n        }\n    }\n    return obj;\n}\n\nexport { urlParamsToObject };\n//# sourceMappingURL=urlParams.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from '../errors/CustomError.js';\nimport { urlParamsToObject } from '../oidc/util/urlParams.js';\n\nclass EmailVerifyCallbackError extends CustomError {\n    constructor(state, otp) {\n        super(`Enter the OTP code in the originating client: ${otp}`);\n        this.name = 'EmailVerifyCallbackError';\n        this.state = state;\n        this.otp = otp;\n    }\n}\nfunction isEmailVerifyCallbackError(error) {\n    return (error.name === 'EmailVerifyCallbackError');\n}\nfunction isEmailVerifyCallback(urlPath) {\n    return /(otp=)/i.test(urlPath) && /(state=)/i.test(urlPath);\n}\nfunction parseEmailVerifyCallback(urlPath) {\n    return urlParamsToObject(urlPath);\n}\nasync function handleEmailVerifyCallback(authClient, search) {\n    if (isEmailVerifyCallback(search)) {\n        const { state, otp } = parseEmailVerifyCallback(search);\n        if (authClient.idx.canProceed({ state })) {\n            return await authClient.idx.proceed({ state, otp });\n        }\n        else {\n            throw new EmailVerifyCallbackError(state, otp);\n        }\n    }\n}\n\nexport { EmailVerifyCallbackError, handleEmailVerifyCallback, isEmailVerifyCallback, isEmailVerifyCallbackError, parseEmailVerifyCallback };\n//# sourceMappingURL=emailVerify.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\nimport { getSavedTransactionMeta } from './transactionMeta.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\n\nfunction canProceed(authClient, options = {}) {\n    const meta = getSavedTransactionMeta(authClient, options);\n    return !!(meta || options.stateHandle);\n}\nasync function proceed(authClient, options = {}) {\n    if (!canProceed(authClient, options)) {\n        throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n    }\n    let { flow, state } = options;\n    if (!flow) {\n        const meta = getSavedTransactionMeta(authClient, { state });\n        flow = meta === null || meta === void 0 ? void 0 : meta.flow;\n    }\n    return run(authClient, Object.assign(Object.assign({}, options), { flow }));\n}\n\nexport { canProceed, proceed };\n//# sourceMappingURL=proceed.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed.js';\nimport { getSavedTransactionMeta } from './transactionMeta.js';\nimport { warn } from '../util/console.js';\n\nasync function poll(authClient, options = {}) {\n    var _a;\n    const { withCredentials, exchangeCodeForTokens } = options;\n    let transaction = await proceed(authClient, {\n        startPolling: true,\n        withCredentials,\n        exchangeCodeForTokens\n    });\n    const meta = getSavedTransactionMeta(authClient);\n    let availablePollingRemeditaions = (_a = meta === null || meta === void 0 ? void 0 : meta.remediations) === null || _a === void 0 ? void 0 : _a.find(remediation => remediation.includes('poll'));\n    if (!(availablePollingRemeditaions === null || availablePollingRemeditaions === void 0 ? void 0 : availablePollingRemeditaions.length)) {\n        warn('No polling remediations available at the current IDX flow stage');\n    }\n    if (Number.isInteger(options.refresh)) {\n        return new Promise(function (resolve, reject) {\n            setTimeout(async function () {\n                var _a, _b;\n                try {\n                    const refresh = (_b = (_a = transaction.nextStep) === null || _a === void 0 ? void 0 : _a.poll) === null || _b === void 0 ? void 0 : _b.refresh;\n                    if (refresh) {\n                        resolve(poll(authClient, {\n                            refresh\n                        }));\n                    }\n                    else {\n                        resolve(transaction);\n                    }\n                }\n                catch (err) {\n                    reject(err);\n                }\n            }, options.refresh);\n        });\n    }\n    return transaction;\n}\n\nexport { poll };\n//# sourceMappingURL=poll.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\n\nasync function startTransaction(authClient, options = {}) {\n    authClient.transactionManager.clear();\n    return run(authClient, Object.assign({ exchangeCodeForTokens: false }, options));\n}\n\nexport { startTransaction };\n//# sourceMappingURL=startTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\nimport { hasSavedInteractionHandle } from './transactionMeta.js';\nimport { startTransaction } from './startTransaction.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { IdxFeature } from './types/api.js';\n\nasync function register(authClient, options = {}) {\n    if (!hasSavedInteractionHandle(authClient)) {\n        const { enabledFeatures } = await startTransaction(authClient, Object.assign(Object.assign({}, options), { flow: 'register', autoRemediate: false }));\n        if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n            throw new AuthSdkError('Registration is not supported based on your current org configuration.');\n        }\n    }\n    return run(authClient, Object.assign(Object.assign({}, options), { flow: 'register' }));\n}\n\nexport { register };\n//# sourceMappingURL=register.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\nimport './types/api.js';\nimport './remediators/EnrollAuthenticator.js';\nimport './remediators/EnrollPoll.js';\nimport './remediators/SelectEnrollmentChannel.js';\nimport './remediators/EnrollmentChannelData.js';\nimport './remediators/ChallengeAuthenticator.js';\nimport './remediators/ChallengePoll.js';\nimport './remediators/ResetAuthenticator.js';\nimport './remediators/EnrollProfile.js';\nimport './remediators/Identify.js';\nimport './remediators/ReEnrollAuthenticator.js';\nimport './remediators/ReEnrollAuthenticatorWarning.js';\nimport './remediators/RedirectIdp.js';\nimport './remediators/SelectAuthenticatorAuthenticate.js';\nimport './remediators/SelectAuthenticatorEnroll.js';\nimport './remediators/SelectAuthenticatorUnlockAccount.js';\nimport './remediators/SelectEnrollProfile.js';\nimport './remediators/AuthenticatorVerificationData.js';\nimport './remediators/AuthenticatorEnrollmentData.js';\nimport './remediators/Skip.js';\nimport '../_virtual/_tslib.js';\nimport '../errors/WWWAuthError.js';\nimport { getFlowSpecification } from './flow/FlowSpecification.js';\n\nasync function recoverPassword(authClient, options = {}) {\n    const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n    return run(authClient, Object.assign(Object.assign({}, options), flowSpec));\n}\n\nexport { recoverPassword };\n//# sourceMappingURL=recoverPassword.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport OAuthError from '../errors/OAuthError.js';\nimport '../errors/WWWAuthError.js';\n\nasync function handleInteractionCodeRedirect(authClient, url) {\n    const meta = authClient.transactionManager.load();\n    if (!meta) {\n        throw new AuthSdkError('No transaction data was found in storage');\n    }\n    const { codeVerifier, state: savedState } = meta;\n    const { searchParams\n     } = new URL(url);\n    const state = searchParams.get('state');\n    const interactionCode = searchParams.get('interaction_code');\n    const error = searchParams.get('error');\n    if (error) {\n        throw new OAuthError(error, searchParams.get('error_description'));\n    }\n    if (state !== savedState) {\n        throw new AuthSdkError('State in redirect uri does not match with transaction state');\n    }\n    if (!interactionCode) {\n        throw new AuthSdkError('Unable to parse interaction_code from the url');\n    }\n    const { tokens } = await authClient.token.exchangeCodeForTokens({ interactionCode, codeVerifier });\n    authClient.tokenManager.setTokens(tokens);\n}\n\nexport { handleInteractionCodeRedirect };\n//# sourceMappingURL=handleInteractionCodeRedirect.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { run } from './run.js';\nimport { hasSavedInteractionHandle } from './transactionMeta.js';\nimport { startTransaction } from './startTransaction.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { IdxFeature } from './types/api.js';\n\nasync function unlockAccount(authClient, options = {}) {\n    options.flow = 'unlockAccount';\n    if (!hasSavedInteractionHandle(authClient)) {\n        const { enabledFeatures } = await startTransaction(authClient, Object.assign(Object.assign({}, options), { autoRemediate: false }));\n        if (enabledFeatures && !enabledFeatures.includes(IdxFeature.ACCOUNT_UNLOCK)) {\n            throw new AuthSdkError('Self Service Account Unlock is not supported based on your current org configuration.');\n        }\n    }\n    return run(authClient, Object.assign({}, options));\n}\n\nexport { unlockAccount };\n//# sourceMappingURL=unlockAccount.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isOAuthError } from '../../errors/index.js';\n\nfunction isInteractionRequiredError(error) {\n    if (error.name !== 'OAuthError') {\n        return false;\n    }\n    const oauthError = error;\n    return (oauthError.errorCode === 'interaction_required');\n}\nfunction isAuthorizationCodeError(sdk, error) {\n    if (error.name !== 'AuthApiError') {\n        return false;\n    }\n    const authApiError = error;\n    const errorResponse = authApiError.xhr;\n    const responseJSON = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.responseJSON;\n    return sdk.options.pkce && ((responseJSON === null || responseJSON === void 0 ? void 0 : responseJSON.error) === 'invalid_grant');\n}\nfunction isRefreshTokenInvalidError(error) {\n    return isOAuthError(error) &&\n        error.errorCode === 'invalid_grant' &&\n        error.errorSummary === 'The refresh token is invalid or expired.';\n}\n\nexport { isAuthorizationCodeError, isInteractionRequiredError, isRefreshTokenInvalidError };\n//# sourceMappingURL=errors.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction hasTokensInHash(hash) {\n    return /((id|access)_token=)/i.test(hash);\n}\nfunction hasAuthorizationCode(hashOrSearch) {\n    return /(code=)/i.test(hashOrSearch);\n}\nfunction hasInteractionCode(hashOrSearch) {\n    return /(interaction_code=)/i.test(hashOrSearch);\n}\nfunction hasErrorInUrl(hashOrSearch) {\n    return /(error=)/i.test(hashOrSearch) || /(error_description)/i.test(hashOrSearch);\n}\nfunction isRedirectUri(uri, sdk) {\n    var authParams = sdk.options;\n    if (!uri || !authParams.redirectUri) {\n        return false;\n    }\n    return uri.indexOf(authParams.redirectUri) === 0;\n}\nfunction isCodeFlow(options) {\n    return options.pkce || options.responseType === 'code' || options.responseMode === 'query';\n}\nfunction hasResponseType(responseType, options) {\n    let hasResponseType = false;\n    if (Array.isArray(options.responseType) && options.responseType.length) {\n        hasResponseType = options.responseType.indexOf(responseType) >= 0;\n    }\n    else {\n        hasResponseType = options.responseType === responseType;\n    }\n    return hasResponseType;\n}\nfunction getHashOrSearch(options) {\n    var codeFlow = isCodeFlow(options);\n    var useQuery = codeFlow && options.responseMode !== 'fragment';\n    return useQuery ? window.location.search : window.location.hash;\n}\nfunction isLoginRedirect(sdk) {\n    if (!isRedirectUri(window.location.href, sdk)) {\n        return false;\n    }\n    var codeFlow = isCodeFlow(sdk.options);\n    var hashOrSearch = getHashOrSearch(sdk.options);\n    if (hasErrorInUrl(hashOrSearch)) {\n        return true;\n    }\n    if (codeFlow) {\n        var hasCode = hasAuthorizationCode(hashOrSearch) || hasInteractionCode(hashOrSearch);\n        return hasCode;\n    }\n    return hasTokensInHash(window.location.hash);\n}\nfunction isInteractionRequired(sdk, hashOrSearch) {\n    if (!hashOrSearch) {\n        if (!isLoginRedirect(sdk)) {\n            return false;\n        }\n        hashOrSearch = getHashOrSearch(sdk.options);\n    }\n    return /(error=interaction_required)/i.test(hashOrSearch);\n}\n\nexport { getHashOrSearch, hasAuthorizationCode, hasErrorInUrl, hasInteractionCode, hasResponseType, hasTokensInHash, isCodeFlow, isInteractionRequired, isLoginRedirect, isRedirectUri };\n//# sourceMappingURL=loginRedirect.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isBrowser } from '../features.js';\n\nclass OktaUserAgent {\n    constructor() {\n        this.environments = [`okta-auth-js/${\"7.14.0\"}`];\n        this.maybeAddNodeEnvironment();\n    }\n    addEnvironment(env) {\n        this.environments.push(env);\n    }\n    getHttpHeader() {\n        return { 'X-Okta-User-Agent-Extended': this.environments.join(' ') };\n    }\n    getVersion() {\n        return \"7.14.0\";\n    }\n    maybeAddNodeEnvironment() {\n        if (isBrowser() || !process || !process.versions) {\n            return;\n        }\n        const { node: version } = process.versions;\n        this.environments.push(`nodejs/${version}`);\n    }\n}\n\nexport { OktaUserAgent };\n//# sourceMappingURL=OktaUserAgent.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction setRequestHeader(authClient, headerName, headerValue) {\n    authClient.options.headers = authClient.options.headers || {};\n    authClient.options.headers[headerName] = headerValue;\n}\n\nexport { setRequestHeader };\n//# sourceMappingURL=headers.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { btoa as b, atob as a } from './browser.js';\n\nfunction stringToBase64Url(str) {\n    var b64 = b(str);\n    return base64ToBase64Url(b64);\n}\nfunction base64ToBase64Url(b64) {\n    return b64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nfunction base64UrlToBase64(b64u) {\n    return b64u.replace(/-/g, '+').replace(/_/g, '/');\n}\nfunction base64UrlToString(b64u) {\n    var b64 = base64UrlToBase64(b64u);\n    switch (b64.length % 4) {\n        case 0:\n            break;\n        case 2:\n            b64 += '==';\n            break;\n        case 3:\n            b64 += '=';\n            break;\n        default:\n            throw new AuthSdkError('Not a valid Base64Url');\n    }\n    var utf8 = a(b64);\n    try {\n        return decodeURIComponent(escape(utf8));\n    }\n    catch (e) {\n        return utf8;\n    }\n}\nfunction stringToBuffer(str) {\n    var buffer = new Uint8Array(str.length);\n    for (var i = 0; i < str.length; i++) {\n        buffer[i] = str.charCodeAt(i);\n    }\n    return buffer;\n}\nfunction base64UrlDecode(str) {\n    return a(base64UrlToBase64(str));\n}\nfunction base64UrlToBuffer(b64u) {\n    return Uint8Array.from(base64UrlDecode(b64u), (c) => c.charCodeAt(0));\n}\nfunction bufferToBase64Url(bin) {\n    return b(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n}\n\nexport { base64ToBase64Url, base64UrlDecode, base64UrlToBase64, base64UrlToBuffer, base64UrlToString, bufferToBase64Url, stringToBase64Url, stringToBuffer };\n//# sourceMappingURL=base64.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { stringToBase64Url } from './base64.js';\nimport { webcrypto as c } from './browser.js';\n\nfunction getOidcHash(str) {\n    var buffer = new TextEncoder().encode(str);\n    return c.subtle.digest('SHA-256', buffer).then(function (arrayBuffer) {\n        var intBuffer = new Uint8Array(arrayBuffer);\n        var firstHalf = intBuffer.slice(0, 16);\n        var hash = String.fromCharCode.apply(null, firstHalf);\n        var b64u = stringToBase64Url(hash);\n        return b64u;\n    });\n}\n\nexport { getOidcHash };\n//# sourceMappingURL=oidcHash.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone } from '../util/object.js';\nimport { stringToBuffer, base64UrlDecode } from './base64.js';\nimport { webcrypto as c } from './browser.js';\n\nfunction verifyToken(idToken, key) {\n    key = clone(key);\n    var format = 'jwk';\n    var algo = {\n        name: 'RSASSA-PKCS1-v1_5',\n        hash: { name: 'SHA-256' }\n    };\n    var extractable = true;\n    var usages = ['verify'];\n    delete key.use;\n    return c.subtle.importKey(format, key, algo, extractable, usages)\n        .then(function (cryptoKey) {\n        var jwt = idToken.split('.');\n        var payload = stringToBuffer(jwt[0] + '.' + jwt[1]);\n        var b64Signature = base64UrlDecode(jwt[2]);\n        var signature = stringToBuffer(b64Signature);\n        return c.subtle.verify(algo, cryptoKey, signature, payload);\n    });\n}\n\nexport { verifyToken };\n//# sourceMappingURL=verifyToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isPromise } from './types.js';\nimport { warn } from './console.js';\n\nclass PromiseQueue {\n    constructor(options = { quiet: false }) {\n        this.queue = [];\n        this.running = false;\n        this.options = options;\n    }\n    push(method, thisObject, ...args) {\n        return new Promise((resolve, reject) => {\n            if (this.queue.length > 0) {\n                if (this.options.quiet !== false) {\n                    warn('Async method is being called but another async method is already running. ' +\n                        'The new method will be delayed until the previous method completes.');\n                }\n            }\n            this.queue.push({\n                method,\n                thisObject,\n                args,\n                resolve,\n                reject\n            });\n            this.run();\n        });\n    }\n    run() {\n        if (this.running) {\n            return;\n        }\n        if (this.queue.length === 0) {\n            return;\n        }\n        this.running = true;\n        var queueItem = this.queue.shift();\n        var res = queueItem.method.apply(queueItem.thisObject, queueItem.args);\n        if (isPromise(res)) {\n            res.then(queueItem.resolve, queueItem.reject).finally(() => {\n                this.running = false;\n                this.run();\n            });\n        }\n        else {\n            queueItem.resolve(res);\n            this.running = false;\n            this.run();\n        }\n    }\n}\n\nexport { PromiseQueue };\n//# sourceMappingURL=PromiseQueue.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { stringToBase64Url } from '../../crypto/base64.js';\nimport { webcrypto as c } from '../../crypto/browser.js';\nimport { DEFAULT_CODE_CHALLENGE_METHOD, MIN_VERIFIER_LENGTH, MAX_VERIFIER_LENGTH } from '../../constants.js';\n\nfunction dec2hex(dec) {\n    return ('0' + dec.toString(16)).substr(-2);\n}\nfunction getRandomString(length) {\n    var a = new Uint8Array(Math.ceil(length / 2));\n    c.getRandomValues(a);\n    var str = Array.from(a, dec2hex).join('');\n    return str.slice(0, length);\n}\nfunction generateVerifier(prefix) {\n    var verifier = prefix || '';\n    if (verifier.length < MIN_VERIFIER_LENGTH) {\n        verifier = verifier + getRandomString(MIN_VERIFIER_LENGTH - verifier.length);\n    }\n    return encodeURIComponent(verifier).slice(0, MAX_VERIFIER_LENGTH);\n}\nfunction computeChallenge(str) {\n    var buffer = new TextEncoder().encode(str);\n    return c.subtle.digest('SHA-256', buffer).then(function (arrayBuffer) {\n        var hash = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));\n        var b64u = stringToBase64Url(hash);\n        return b64u;\n    });\n}\nvar PKCE = {\n    DEFAULT_CODE_CHALLENGE_METHOD,\n    generateVerifier,\n    computeChallenge\n};\n\nexport { PKCE as default };\n//# sourceMappingURL=pkce.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { base64UrlToString } from '../crypto/base64.js';\n\nfunction decodeToken(token) {\n    var jwt = token.split('.');\n    var decodedToken;\n    try {\n        decodedToken = {\n            header: JSON.parse(base64UrlToString(jwt[0])),\n            payload: JSON.parse(base64UrlToString(jwt[1])),\n            signature: jwt[2]\n        };\n    }\n    catch (e) {\n        throw new AuthSdkError('Malformed token');\n    }\n    return decodedToken;\n}\n\nexport { decodeToken };\n//# sourceMappingURL=decodeToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { generateState, generateNonce } from './oauth.js';\nimport { isBrowser } from '../../features.js';\nimport { removeNils } from '../../util/object.js';\n\nfunction getDefaultTokenParams(sdk) {\n    const { pkce, clientId, redirectUri, responseType, responseMode, scopes, acrValues, maxAge, state, ignoreSignature, dpop } = sdk.options;\n    const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n    return removeNils({\n        pkce,\n        clientId,\n        redirectUri: redirectUri || defaultRedirectUri,\n        responseType: responseType || ['token', 'id_token'],\n        responseMode,\n        state: state || generateState(),\n        nonce: generateNonce(),\n        scopes: scopes || ['openid', 'email'],\n        acrValues,\n        maxAge,\n        ignoreSignature,\n        dpop,\n    });\n}\n\nexport { getDefaultTokenParams };\n//# sourceMappingURL=defaultTokenParams.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { stringToBase64Url, stringToBuffer, base64ToBase64Url, bufferToBase64Url } from '../crypto/base64.js';\nimport { webcrypto as c, btoa as b } from '../crypto/browser.js';\nimport { isOAuthError, isWWWAuthError } from '../errors/index.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\n\nconst INDEXEDDB_NAME = 'OktaAuthJs';\nconst DB_KEY = 'DPoPKeys';\nfunction isDPoPNonceError(obj) {\n    return ((isOAuthError(obj) || isWWWAuthError(obj)) &&\n        obj.errorCode === 'use_dpop_nonce');\n}\nasync function createJwt(header, claims, signingKey) {\n    const head = stringToBase64Url(JSON.stringify(header));\n    const body = stringToBase64Url(JSON.stringify(claims));\n    const signature = await c.subtle.sign({ name: signingKey.algorithm.name }, signingKey, stringToBuffer(`${head}.${body}`));\n    return `${head}.${body}.${base64ToBase64Url(bufferToBase64Url(signature))}`;\n}\nfunction cryptoRandomValue(byteLen = 32) {\n    return [...c.getRandomValues(new Uint8Array(byteLen))].map(v => v.toString(16)).join('');\n}\nasync function generateKeyPair() {\n    const algorithm = {\n        name: 'RSASSA-PKCS1-v1_5',\n        hash: 'SHA-256',\n        modulusLength: 2048,\n        publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n    };\n    return c.subtle.generateKey(algorithm, false, ['sign', 'verify']);\n}\nasync function hashAccessToken(accessToken) {\n    const buffer = new TextEncoder().encode(accessToken);\n    const hash = await c.subtle.digest('SHA-256', buffer);\n    return b(String.fromCharCode.apply(null, new Uint8Array(hash)))\n        .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nfunction keyStore() {\n    return new Promise((resolve, reject) => {\n        try {\n            const indexedDB = window.indexedDB;\n            const req = indexedDB.open(INDEXEDDB_NAME, 1);\n            req.onerror = function () {\n                reject(req.error);\n            };\n            req.onupgradeneeded = function () {\n                const db = req.result;\n                db.createObjectStore(DB_KEY);\n            };\n            req.onsuccess = function () {\n                const db = req.result;\n                const tx = db.transaction(DB_KEY, 'readwrite');\n                tx.onerror = function () {\n                    reject(tx.error);\n                };\n                const store = tx.objectStore(DB_KEY);\n                resolve(store);\n                tx.oncomplete = function () {\n                    db.close();\n                };\n            };\n        }\n        catch (err) {\n            reject(err);\n        }\n    });\n}\nasync function invokeStoreMethod(method, ...args) {\n    const store = await keyStore();\n    return new Promise((resolve, reject) => {\n        const req = store[method](...args);\n        req.onsuccess = function () {\n            resolve(req);\n        };\n        req.onerror = function () {\n            reject(req.error);\n        };\n    });\n}\nasync function storeKeyPair(pairId, keyPair) {\n    await invokeStoreMethod('add', keyPair, pairId);\n    return keyPair;\n}\nasync function findKeyPair(pairId) {\n    if (pairId) {\n        const req = await invokeStoreMethod('get', pairId);\n        if (req.result) {\n            return req.result;\n        }\n    }\n    throw new AuthSdkError(`Unable to locate dpop key pair required for refresh${pairId ? ` (${pairId})` : ''}`);\n}\nasync function clearDPoPKeyPair(pairId) {\n    await invokeStoreMethod('delete', pairId);\n}\nasync function clearAllDPoPKeyPairs() {\n    await invokeStoreMethod('clear');\n}\nasync function createDPoPKeyPair() {\n    const keyPairId = cryptoRandomValue(4);\n    const keyPair = await generateKeyPair();\n    await storeKeyPair(keyPairId, keyPair);\n    return { keyPair, keyPairId };\n}\nasync function clearDPoPKeyPairAfterRevoke(revokedToken, tokens) {\n    var _a;\n    let shouldClear = false;\n    const { accessToken, refreshToken } = tokens;\n    if (revokedToken === 'access' && accessToken && accessToken.tokenType === 'DPoP' && !refreshToken) {\n        shouldClear = true;\n    }\n    if (revokedToken === 'refresh' && refreshToken && !accessToken) {\n        shouldClear = true;\n    }\n    const pairId = (_a = accessToken === null || accessToken === void 0 ? void 0 : accessToken.dpopPairId) !== null && _a !== void 0 ? _a : refreshToken === null || refreshToken === void 0 ? void 0 : refreshToken.dpopPairId;\n    if (shouldClear && pairId) {\n        await clearDPoPKeyPair(pairId);\n    }\n}\nasync function generateDPoPProof({ keyPair, url, method, nonce, accessToken }) {\n    const { kty, crv, e, n, x, y } = await c.subtle.exportKey('jwk', keyPair.publicKey);\n    const header = {\n        alg: 'RS256',\n        typ: 'dpop+jwt',\n        jwk: { kty, crv, e, n, x, y }\n    };\n    const claims = {\n        htm: method,\n        htu: url,\n        iat: Math.floor(Date.now() / 1000),\n        jti: cryptoRandomValue(),\n    };\n    if (nonce) {\n        claims.nonce = nonce;\n    }\n    if (accessToken) {\n        claims.ath = await hashAccessToken(accessToken);\n    }\n    return createJwt(header, claims, keyPair.privateKey);\n}\nasync function generateDPoPForTokenRequest({ keyPair, url, method, nonce }) {\n    const params = { keyPair, url, method };\n    if (nonce) {\n        params.nonce = nonce;\n    }\n    return generateDPoPProof(params);\n}\n\nexport { clearAllDPoPKeyPairs, clearDPoPKeyPair, clearDPoPKeyPairAfterRevoke, createDPoPKeyPair, createJwt, cryptoRandomValue, findKeyPair, generateDPoPForTokenRequest, generateDPoPProof, generateKeyPair, isDPoPNonceError };\n//# sourceMappingURL=dpop.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from '../../errors/AuthApiError.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { removeNils } from '../../util/object.js';\nimport { toQueryString } from '../../util/url.js';\nimport { httpRequest } from '../../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { generateDPoPForTokenRequest, isDPoPNonceError } from '../dpop.js';\n\nfunction validateOptions(options) {\n    if (!options.clientId) {\n        throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n    }\n    if (!options.redirectUri) {\n        throw new AuthSdkError('The redirectUri passed to /authorize must also be passed to /token');\n    }\n    if (!options.authorizationCode && !options.interactionCode) {\n        throw new AuthSdkError('An authorization code (returned from /authorize) must be passed to /token');\n    }\n    if (!options.codeVerifier) {\n        throw new AuthSdkError('The \"codeVerifier\" (generated and saved by your app) must be passed to /token');\n    }\n}\nfunction getPostData(sdk, options) {\n    var params = removeNils({\n        'client_id': options.clientId,\n        'redirect_uri': options.redirectUri,\n        'grant_type': options.interactionCode ? 'interaction_code' : 'authorization_code',\n        'code_verifier': options.codeVerifier\n    });\n    if (options.interactionCode) {\n        params['interaction_code'] = options.interactionCode;\n    }\n    else if (options.authorizationCode) {\n        params.code = options.authorizationCode;\n    }\n    const { clientSecret } = sdk.options;\n    if (clientSecret) {\n        params['client_secret'] = clientSecret;\n    }\n    return toQueryString(params).slice(1);\n}\nasync function makeTokenRequest(sdk, { url, data, nonce, dpopKeyPair }) {\n    var _a, _b;\n    const method = 'POST';\n    const headers = {\n        'Content-Type': 'application/x-www-form-urlencoded',\n    };\n    if (sdk.options.dpop) {\n        if (!dpopKeyPair) {\n            throw new AuthSdkError('DPoP is configured but no key pair was provided');\n        }\n        const proof = await generateDPoPForTokenRequest({ url, method, nonce, keyPair: dpopKeyPair });\n        headers.DPoP = proof;\n    }\n    try {\n        const resp = await httpRequest(sdk, {\n            url,\n            method,\n            args: data,\n            headers\n        });\n        return resp;\n    }\n    catch (err) {\n        if (isDPoPNonceError(err) && !nonce) {\n            const dpopNonce = (_a = err.resp) === null || _a === void 0 ? void 0 : _a.headers['dpop-nonce'];\n            if (!dpopNonce) {\n                throw new AuthApiError({ errorSummary: 'No `dpop-nonce` header found when required' }, (_b = err.resp) !== null && _b !== void 0 ? _b : undefined\n                );\n            }\n            return makeTokenRequest(sdk, { url, data, dpopKeyPair, nonce: dpopNonce });\n        }\n        throw err;\n    }\n}\nasync function postToTokenEndpoint(sdk, options, urls) {\n    validateOptions(options);\n    var data = getPostData(sdk, options);\n    const params = {\n        url: urls.tokenUrl,\n        data,\n        dpopKeyPair: options === null || options === void 0 ? void 0 : options.dpopKeyPair\n    };\n    return makeTokenRequest(sdk, params);\n}\nasync function postRefreshToken(sdk, options, refreshToken) {\n    const data = Object.entries({\n        client_id: options.clientId,\n        grant_type: 'refresh_token',\n        scope: refreshToken.scopes.join(' '),\n        refresh_token: refreshToken.refreshToken,\n    }).map(function ([name, value]) {\n        return name + '=' + encodeURIComponent(value);\n    }).join('&');\n    let url = refreshToken.tokenUrl;\n    if (options.extraParams && Object.keys(options.extraParams).length >= 1) {\n        url += toQueryString(options.extraParams);\n    }\n    const params = {\n        url,\n        data,\n        dpopKeyPair: options === null || options === void 0 ? void 0 : options.dpopKeyPair\n    };\n    return makeTokenRequest(sdk, params);\n}\n\nexport { postRefreshToken, postToTokenEndpoint };\n//# sourceMappingURL=token.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { find } from '../../util/object.js';\nimport { get } from '../../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\n\nfunction getWellKnown(sdk, issuer) {\n    var authServerUri = (issuer || sdk.options.issuer);\n    return get(sdk, authServerUri + '/.well-known/openid-configuration', {\n        cacheResponse: true\n    });\n}\nfunction getKey(sdk, issuer, kid) {\n    var httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n    return getWellKnown(sdk, issuer)\n        .then(function (wellKnown) {\n        var jwksUri = wellKnown['jwks_uri'];\n        var cacheContents = httpCache.getStorage();\n        var cachedResponse = cacheContents[jwksUri];\n        if (cachedResponse && Date.now() / 1000 < cachedResponse.expiresAt) {\n            var cachedKey = find(cachedResponse.response.keys, {\n                kid: kid\n            });\n            if (cachedKey) {\n                return cachedKey;\n            }\n        }\n        httpCache.clearStorage(jwksUri);\n        return get(sdk, jwksUri, {\n            cacheResponse: true\n        })\n            .then(function (res) {\n            var key = find(res.keys, {\n                kid: kid\n            });\n            if (key) {\n                return key;\n            }\n            throw new AuthSdkError('The key id, ' + kid + ', was not found in the server\\'s keys');\n        });\n    });\n}\n\nexport { getKey, getWellKnown };\n//# sourceMappingURL=well-known.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getWellKnown, getKey } from './endpoints/well-known.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getOidcHash } from '../crypto/oidcHash.js';\nimport { verifyToken as verifyToken$1 } from '../crypto/verifyToken.js';\nimport { validateClaims } from './util/validateClaims.js';\nimport './types/Token.js';\nimport { decodeToken } from './decodeToken.js';\n\nasync function verifyToken(sdk, token, validationParams) {\n    if (!token || !token.idToken) {\n        throw new AuthSdkError('Only idTokens may be verified');\n    }\n    const jwt = decodeToken(token.idToken);\n    const configuredIssuer = (validationParams === null || validationParams === void 0 ? void 0 : validationParams.issuer) || sdk.options.issuer;\n    const { issuer } = await getWellKnown(sdk, configuredIssuer);\n    const validationOptions = Object.assign({\n        clientId: sdk.options.clientId,\n        ignoreSignature: sdk.options.ignoreSignature\n    }, validationParams, {\n        issuer\n    });\n    validateClaims(sdk, jwt.payload, validationOptions);\n    if (validationOptions.ignoreSignature == true || !sdk.features.isTokenVerifySupported()) {\n        return token;\n    }\n    const key = await getKey(sdk, token.issuer, jwt.header.kid);\n    const valid = await verifyToken$1(token.idToken, key);\n    if (!valid) {\n        throw new AuthSdkError('The token signature is not valid');\n    }\n    if (validationParams && validationParams.accessToken && token.claims.at_hash) {\n        const hash = await getOidcHash(validationParams.accessToken);\n        if (hash !== token.claims.at_hash) {\n            throw new AuthSdkError('Token hash verification failed');\n        }\n    }\n    return token;\n}\n\nexport { verifyToken };\n//# sourceMappingURL=verifyToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../../errors/AuthSdkError.js';\n\nfunction validateClaims(sdk, claims, validationParams) {\n    const aud = validationParams.clientId;\n    const iss = validationParams.issuer;\n    const nonce = validationParams.nonce;\n    const acr = validationParams.acrValues;\n    if (!claims || !iss || !aud) {\n        throw new AuthSdkError('The jwt, iss, and aud arguments are all required');\n    }\n    if (nonce && claims.nonce !== nonce) {\n        throw new AuthSdkError('OAuth flow response nonce doesn\\'t match request nonce');\n    }\n    const now = Math.floor(Date.now() / 1000);\n    if (claims.iss !== iss) {\n        throw new AuthSdkError('The issuer [' + claims.iss + '] ' +\n            'does not match [' + iss + ']');\n    }\n    if ((Array.isArray(claims.aud) && claims.aud.indexOf(aud) < 0) ||\n        (!Array.isArray(claims.aud) && claims.aud !== aud)) {\n        throw new AuthSdkError('The audience [' + claims.aud + '] ' +\n            'does not match [' + aud + ']');\n    }\n    if (acr && claims.acr !== acr) {\n        throw new AuthSdkError('The acr [' + claims.acr + '] ' +\n            'does not match acr_values [' + acr + ']');\n    }\n    if (claims.iat > claims.exp) {\n        throw new AuthSdkError('The JWT expired before it was issued');\n    }\n    if (!sdk.options.ignoreLifetime) {\n        if ((now - sdk.options.maxClockSkew) > claims.exp) {\n            throw new AuthSdkError('The JWT expired and is no longer valid');\n        }\n        if (claims.iat > (now + sdk.options.maxClockSkew)) {\n            throw new AuthSdkError('The JWT was issued in the future');\n        }\n    }\n}\n\nexport { validateClaims };\n//# sourceMappingURL=validateClaims.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone } from '../util/object.js';\nimport { getOAuthUrls } from './util/oauth.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport OAuthError from '../errors/OAuthError.js';\nimport '../errors/WWWAuthError.js';\nimport { verifyToken } from './verifyToken.js';\nimport { getDefaultTokenParams } from './util/defaultTokenParams.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport './types/Token.js';\n\nfunction validateResponse(res, oauthParams) {\n    if (res['error'] && res['error_description']) {\n        throw new OAuthError(res['error'], res['error_description']);\n    }\n    if (res.state !== oauthParams.state) {\n        throw new AuthSdkError('OAuth flow response state doesn\\'t match request state');\n    }\n}\nasync function handleOAuthResponse(sdk, tokenParams, res, urls) {\n    var _a, _b;\n    const pkce = sdk.options.pkce !== false;\n    if (pkce && (res.code || res.interaction_code)) {\n        return sdk.token.exchangeCodeForTokens(Object.assign({}, tokenParams, {\n            authorizationCode: res.code,\n            interactionCode: res.interaction_code\n        }), urls);\n    }\n    tokenParams = tokenParams || getDefaultTokenParams(sdk);\n    urls = urls || getOAuthUrls(sdk, tokenParams);\n    let responseType = tokenParams.responseType || [];\n    if (!Array.isArray(responseType) && responseType !== 'none') {\n        responseType = [responseType];\n    }\n    let scopes;\n    if (res.scope) {\n        scopes = res.scope.split(' ');\n    }\n    else {\n        scopes = clone(tokenParams.scopes);\n    }\n    const clientId = tokenParams.clientId || sdk.options.clientId;\n    validateResponse(res, tokenParams);\n    if (tokenParams.dpop) {\n        const { allowBearerTokens } = (_b = (_a = sdk.options) === null || _a === void 0 ? void 0 : _a.dpopOptions) !== null && _b !== void 0 ? _b : { allowBearerTokens: false };\n        if (!allowBearerTokens && res.token_type !== 'DPoP') {\n            throw new AuthSdkError('Unable to parse OAuth flow response: DPoP was configured but \"token_type\" was not DPoP');\n        }\n    }\n    const tokenDict = {};\n    const expiresIn = res.expires_in;\n    const tokenType = res.token_type;\n    const accessToken = res.access_token;\n    const idToken = res.id_token;\n    const refreshToken = res.refresh_token;\n    const now = Math.floor(Date.now() / 1000);\n    if (accessToken) {\n        const accessJwt = sdk.token.decode(accessToken);\n        tokenDict.accessToken = {\n            accessToken: accessToken,\n            claims: accessJwt.payload,\n            expiresAt: Number(expiresIn) + now,\n            tokenType: tokenType,\n            scopes: scopes,\n            authorizeUrl: urls.authorizeUrl,\n            userinfoUrl: urls.userinfoUrl\n        };\n        if (tokenParams.dpopPairId) {\n            tokenDict.accessToken.dpopPairId = tokenParams.dpopPairId;\n        }\n        if (tokenParams.extraParams) {\n            tokenDict.accessToken.extraParams = tokenParams.extraParams;\n        }\n    }\n    if (refreshToken) {\n        tokenDict.refreshToken = {\n            refreshToken: refreshToken,\n            expiresAt: Number(expiresIn) + now,\n            scopes: scopes,\n            tokenUrl: urls.tokenUrl,\n            authorizeUrl: urls.authorizeUrl,\n            issuer: urls.issuer,\n        };\n        if (tokenParams.dpopPairId) {\n            tokenDict.refreshToken.dpopPairId = tokenParams.dpopPairId;\n        }\n        if (tokenParams.extraParams) {\n            tokenDict.refreshToken.extraParams = tokenParams.extraParams;\n        }\n    }\n    if (idToken) {\n        const idJwt = sdk.token.decode(idToken);\n        const idTokenObj = {\n            idToken: idToken,\n            claims: idJwt.payload,\n            expiresAt: idJwt.payload.exp - idJwt.payload.iat + now,\n            scopes: scopes,\n            authorizeUrl: urls.authorizeUrl,\n            issuer: urls.issuer,\n            clientId: clientId\n        };\n        if (tokenParams.extraParams) {\n            idTokenObj.extraParams = tokenParams.extraParams;\n        }\n        const validationParams = {\n            clientId: clientId,\n            issuer: urls.issuer,\n            nonce: tokenParams.nonce,\n            accessToken: accessToken,\n            acrValues: tokenParams.acrValues\n        };\n        if (tokenParams.ignoreSignature !== undefined) {\n            validationParams.ignoreSignature = tokenParams.ignoreSignature;\n        }\n        await verifyToken(sdk, idTokenObj, validationParams);\n        tokenDict.idToken = idTokenObj;\n    }\n    if (responseType.indexOf('token') !== -1 && !tokenDict.accessToken) {\n        throw new AuthSdkError('Unable to parse OAuth flow response: response type \"token\" was requested but \"access_token\" was not returned.');\n    }\n    if (responseType.indexOf('id_token') !== -1 && !tokenDict.idToken) {\n        throw new AuthSdkError('Unable to parse OAuth flow response: response type \"id_token\" was requested but \"id_token\" was not returned.');\n    }\n    return {\n        tokens: tokenDict,\n        state: res.state,\n        code: res.code,\n        responseType\n    };\n}\n\nexport { handleOAuthResponse };\n//# sourceMappingURL=handleOAuthResponse.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../errors/WWWAuthError.js';\nimport { getDefaultTokenParams } from './util/defaultTokenParams.js';\nimport { getOAuthUrls } from './util/oauth.js';\nimport { clone } from '../util/object.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport './types/Token.js';\nimport { postToTokenEndpoint } from './endpoints/token.js';\nimport { handleOAuthResponse } from './handleOAuthResponse.js';\nimport { findKeyPair, createDPoPKeyPair } from './dpop.js';\n\nasync function exchangeCodeForTokens(sdk, tokenParams, urls) {\n    urls = urls || getOAuthUrls(sdk, tokenParams);\n    tokenParams = Object.assign({}, getDefaultTokenParams(sdk), clone(tokenParams));\n    const { authorizationCode, interactionCode, codeVerifier, clientId, redirectUri, scopes, ignoreSignature, state, acrValues, dpop, dpopPairId, extraParams } = tokenParams;\n    const getTokenOptions = {\n        clientId,\n        redirectUri,\n        authorizationCode,\n        interactionCode,\n        codeVerifier,\n        dpop,\n    };\n    const responseType = ['token'];\n    if (scopes.indexOf('openid') !== -1) {\n        responseType.push('id_token');\n    }\n    const handleResponseOptions = {\n        clientId,\n        redirectUri,\n        scopes,\n        responseType,\n        ignoreSignature,\n        acrValues,\n        extraParams\n    };\n    try {\n        if (dpop) {\n            if (dpopPairId) {\n                const keyPair = await findKeyPair(dpopPairId);\n                getTokenOptions.dpopKeyPair = keyPair;\n                handleResponseOptions.dpop = dpop;\n                handleResponseOptions.dpopPairId = dpopPairId;\n            }\n            else {\n                const { keyPair, keyPairId } = await createDPoPKeyPair();\n                getTokenOptions.dpopKeyPair = keyPair;\n                handleResponseOptions.dpop = dpop;\n                handleResponseOptions.dpopPairId = keyPairId;\n            }\n        }\n        const oauthResponse = await postToTokenEndpoint(sdk, getTokenOptions, urls);\n        const tokenResponse = await handleOAuthResponse(sdk, handleResponseOptions, oauthResponse, urls);\n        tokenResponse.code = authorizationCode;\n        tokenResponse.state = state;\n        return tokenResponse;\n    }\n    finally {\n        sdk.transactionManager.clear();\n    }\n}\n\nexport { exchangeCodeForTokens };\n//# sourceMappingURL=exchangeCodeForTokens.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\n\nconst DEFAULT_TIMEOUT = 120000;\nfunction addListener(eventTarget, name, fn) {\n    if (eventTarget.addEventListener) {\n        eventTarget.addEventListener(name, fn);\n    }\n    else {\n        eventTarget.attachEvent('on' + name, fn);\n    }\n}\nfunction removeListener(eventTarget, name, fn) {\n    if (eventTarget.removeEventListener) {\n        eventTarget.removeEventListener(name, fn);\n    }\n    else {\n        eventTarget.detachEvent('on' + name, fn);\n    }\n}\nfunction loadFrame(src) {\n    var iframe = document.createElement('iframe');\n    iframe.style.display = 'none';\n    iframe.src = src;\n    return document.body.appendChild(iframe);\n}\nfunction loadPopup(src, options) {\n    var title = options.popupTitle || 'External Identity Provider User Authentication';\n    var appearance = 'toolbar=no, scrollbars=yes, resizable=yes, ' +\n        'top=100, left=500, width=600, height=600';\n    return window.open(src, title, appearance);\n}\nfunction addPostMessageListener(sdk, timeout, state) {\n    var responseHandler;\n    var timeoutId;\n    var msgReceivedOrTimeout = new Promise(function (resolve, reject) {\n        responseHandler = function responseHandler(e) {\n            if (!e.data || e.data.state !== state) {\n                return;\n            }\n            if (e.origin !== sdk.getIssuerOrigin()) {\n                return reject(new AuthSdkError('The request does not match client configuration'));\n            }\n            resolve(e.data);\n        };\n        addListener(window, 'message', responseHandler);\n        timeoutId = setTimeout(function () {\n            reject(new AuthSdkError('OAuth flow timed out'));\n        }, timeout || DEFAULT_TIMEOUT);\n    });\n    return msgReceivedOrTimeout\n        .finally(function () {\n        clearTimeout(timeoutId);\n        removeListener(window, 'message', responseHandler);\n    });\n}\nfunction addIDPPopupLisenter(sdk, timeout, channel, state) {\n    let timeoutId;\n    const promise = new Promise((resolve, reject) => {\n        channel.onmessage = (event) => {\n            if (!event.isTrusted || !event.data) {\n                return;\n            }\n            if (typeof event.data === 'object' && state === event.data.state) {\n                return resolve(Object.assign({}, event.data));\n            }\n            reject(new AuthSdkError('Unable to complete auth code exchange'));\n        };\n        timeoutId = setTimeout(function () {\n            reject(new AuthSdkError('OAuth flow timed out'));\n        }, timeout || DEFAULT_TIMEOUT);\n    });\n    return promise\n        .finally(() => {\n        clearTimeout(timeoutId);\n        channel.close();\n    });\n}\n\nexport { addIDPPopupLisenter, addListener, addPostMessageListener, loadFrame, loadPopup, removeListener };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getWellKnown } from '../endpoints/well-known.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { getDefaultTokenParams } from './defaultTokenParams.js';\nimport { DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants.js';\nimport PKCE from './pkce.js';\n\nfunction assertPKCESupport(sdk) {\n    if (!sdk.features.isPKCESupported()) {\n        var errorMessage = 'PKCE requires a modern browser with encryption support running in a secure context.';\n        if (!sdk.features.isHTTPS()) {\n            errorMessage += '\\nThe current page is not being served with HTTPS protocol. PKCE requires secure HTTPS protocol.';\n        }\n        if (!sdk.features.hasTextEncoder()) {\n            errorMessage += '\\n\"TextEncoder\" is not defined. To use PKCE, you may need to include a polyfill/shim for this browser.';\n        }\n        throw new AuthSdkError(errorMessage);\n    }\n}\nasync function validateCodeChallengeMethod(sdk, codeChallengeMethod) {\n    codeChallengeMethod = codeChallengeMethod || sdk.options.codeChallengeMethod || DEFAULT_CODE_CHALLENGE_METHOD;\n    const wellKnownResponse = await getWellKnown(sdk);\n    var methods = wellKnownResponse['code_challenge_methods_supported'] || [];\n    if (methods.indexOf(codeChallengeMethod) === -1) {\n        throw new AuthSdkError('Invalid code_challenge_method');\n    }\n    return codeChallengeMethod;\n}\nasync function preparePKCE(sdk, tokenParams) {\n    let { codeVerifier, codeChallenge, codeChallengeMethod } = tokenParams;\n    codeChallenge = codeChallenge || sdk.options.codeChallenge;\n    if (!codeChallenge) {\n        assertPKCESupport(sdk);\n        codeVerifier = codeVerifier || PKCE.generateVerifier();\n        codeChallenge = await PKCE.computeChallenge(codeVerifier);\n    }\n    codeChallengeMethod = await validateCodeChallengeMethod(sdk, codeChallengeMethod);\n    tokenParams = Object.assign(Object.assign({}, tokenParams), { responseType: 'code',\n        codeVerifier,\n        codeChallenge,\n        codeChallengeMethod });\n    return tokenParams;\n}\nasync function prepareTokenParams(sdk, tokenParams = {}) {\n    const defaults = getDefaultTokenParams(sdk);\n    tokenParams = Object.assign(Object.assign({}, defaults), tokenParams);\n    if (tokenParams.dpop && !sdk.features.isDPoPSupported()) {\n        throw new AuthSdkError('DPoP has been configured, but is not supported by browser');\n    }\n    if (tokenParams.pkce === false) {\n        return tokenParams;\n    }\n    return preparePKCE(sdk, tokenParams);\n}\n\nexport { assertPKCESupport, preparePKCE, prepareTokenParams, validateCodeChallengeMethod };\n//# sourceMappingURL=prepareTokenParams.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { removeNils } from '../../util/object.js';\nimport { isString } from '../../util/types.js';\nimport { toQueryString } from '../../util/url.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\n\nfunction convertTokenParamsToOAuthParams(tokenParams) {\n    if (!tokenParams.clientId) {\n        throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n    }\n    if (isString(tokenParams.responseType) && tokenParams.responseType.indexOf(' ') !== -1) {\n        throw new AuthSdkError('Multiple OAuth responseTypes must be defined as an array');\n    }\n    var oauthParams = {\n        'client_id': tokenParams.clientId,\n        'code_challenge': tokenParams.codeChallenge,\n        'code_challenge_method': tokenParams.codeChallengeMethod,\n        'display': tokenParams.display,\n        'idp': tokenParams.idp,\n        'idp_scope': tokenParams.idpScope,\n        'login_hint': tokenParams.loginHint,\n        'max_age': tokenParams.maxAge,\n        'nonce': tokenParams.nonce,\n        'prompt': tokenParams.prompt,\n        'redirect_uri': tokenParams.redirectUri,\n        'response_mode': tokenParams.responseMode,\n        'response_type': tokenParams.responseType,\n        'sessionToken': tokenParams.sessionToken,\n        'state': tokenParams.state,\n        'acr_values': tokenParams.acrValues,\n        'enroll_amr_values': tokenParams.enrollAmrValues,\n    };\n    oauthParams = removeNils(oauthParams);\n    ['idp_scope', 'response_type', 'enroll_amr_values'].forEach(function (mayBeArray) {\n        if (Array.isArray(oauthParams[mayBeArray])) {\n            oauthParams[mayBeArray] = oauthParams[mayBeArray].join(' ');\n        }\n    });\n    if (tokenParams.responseType.indexOf('id_token') !== -1 &&\n        tokenParams.scopes.indexOf('openid') === -1) {\n        throw new AuthSdkError('openid scope must be specified in the scopes argument when requesting an id_token');\n    }\n    else if (tokenParams.scopes) {\n        oauthParams.scope = tokenParams.scopes.join(' ');\n    }\n    return oauthParams;\n}\nfunction buildAuthorizeParams(tokenParams) {\n    var oauthQueryParams = convertTokenParamsToOAuthParams(tokenParams);\n    return toQueryString(Object.assign(Object.assign({}, oauthQueryParams), (tokenParams.extraParams && Object.assign({}, tokenParams.extraParams))));\n}\n\nexport { buildAuthorizeParams, convertTokenParamsToOAuthParams };\n//# sourceMappingURL=authorize.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { addIDPPopupLisenter, addPostMessageListener, loadFrame } from './util/browser.js';\nimport { getOAuthUrls } from './util/oauth.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { prepareTokenParams } from './util/prepareTokenParams.js';\nimport './types/Token.js';\nimport { buildAuthorizeParams } from './endpoints/authorize.js';\nimport { handleOAuthResponse } from './handleOAuthResponse.js';\n\nfunction getToken(sdk, options) {\n    if (arguments.length > 2) {\n        return Promise.reject(new AuthSdkError('As of version 3.0, \"getToken\" takes only a single set of options'));\n    }\n    options = options || {};\n    const popupWindow = options.popupWindow;\n    options.popupWindow = undefined;\n    return prepareTokenParams(sdk, options)\n        .then(function (tokenParams) {\n        var sessionTokenOverrides = {\n            prompt: 'none',\n            responseMode: 'okta_post_message',\n            display: null\n        };\n        var idpOverrides = {\n            display: 'popup'\n        };\n        if (options.sessionToken) {\n            Object.assign(tokenParams, sessionTokenOverrides);\n        }\n        else if (options.idp) {\n            Object.assign(tokenParams, idpOverrides);\n        }\n        var requestUrl, endpoint, urls;\n        urls = getOAuthUrls(sdk, tokenParams);\n        endpoint = options.codeVerifier ? urls.tokenUrl : urls.authorizeUrl;\n        requestUrl = endpoint + buildAuthorizeParams(tokenParams);\n        var flowType = 'IMPLICIT';\n        if (tokenParams.sessionToken || tokenParams.display === null) {\n            flowType = 'IFRAME';\n        }\n        else if (tokenParams.display === 'popup') {\n            flowType = options.idpPopup ? 'IDP_POPUP' : 'POPUP';\n        }\n        else {\n            flowType = 'IMPLICIT';\n        }\n        switch (flowType) {\n            case 'IFRAME':\n                var iframePromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n                var iframeEl = loadFrame(requestUrl);\n                return iframePromise\n                    .then(function (res) {\n                    return handleOAuthResponse(sdk, tokenParams, res, urls);\n                })\n                    .finally(function () {\n                    var _a;\n                    if (document.body.contains(iframeEl)) {\n                        (_a = iframeEl.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(iframeEl);\n                    }\n                });\n            case 'POPUP':\n                var oauthPromise;\n                if (tokenParams.responseMode === 'okta_post_message') {\n                    if (!sdk.features.isPopupPostMessageSupported()) {\n                        throw new AuthSdkError('This browser doesn\\'t have full postMessage support');\n                    }\n                    oauthPromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n                }\n                if (popupWindow) {\n                    popupWindow.location.assign(requestUrl);\n                }\n                var popupPromise = new Promise(function (resolve, reject) {\n                    var closePoller = setInterval(function () {\n                        if (!popupWindow || popupWindow.closed) {\n                            clearInterval(closePoller);\n                            reject(new AuthSdkError('Unable to parse OAuth flow response'));\n                        }\n                    }, 100);\n                    oauthPromise\n                        .then(function (res) {\n                        clearInterval(closePoller);\n                        resolve(res);\n                    })\n                        .catch(function (err) {\n                        clearInterval(closePoller);\n                        reject(err);\n                    });\n                });\n                return popupPromise\n                    .then(function (res) {\n                    return handleOAuthResponse(sdk, tokenParams, res, urls);\n                })\n                    .finally(function () {\n                    if (popupWindow && !popupWindow.closed) {\n                        popupWindow.close();\n                    }\n                });\n            case 'IDP_POPUP':\n                var idpPromise = addIDPPopupLisenter(sdk, options.timeout, options.channel, tokenParams.state);\n                if (popupWindow) {\n                    popupWindow.location.assign(requestUrl);\n                }\n                else {\n                    throw new AuthSdkError('Unable to open popup window');\n                }\n                return idpPromise\n                    .then(function (res) {\n                    return handleOAuthResponse(sdk, tokenParams, res, urls);\n                });\n            default:\n                throw new AuthSdkError('The full page redirect flow is not supported');\n        }\n    });\n}\n\nexport { getToken };\n//# sourceMappingURL=getToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { clone } from '../util/object.js';\nimport { getToken } from './getToken.js';\n\nfunction getWithoutPrompt(sdk, options) {\n    if (arguments.length > 2) {\n        return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithoutPrompt\" takes only a single set of options'));\n    }\n    options = clone(options) || {};\n    Object.assign(options, {\n        prompt: 'none',\n        responseMode: 'okta_post_message',\n        display: null\n    });\n    return getToken(sdk, options);\n}\n\nexport { getWithoutPrompt };\n//# sourceMappingURL=getWithoutPrompt.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../_virtual/_tslib.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { clone } from '../util/object.js';\nimport { getToken } from './getToken.js';\nimport { loadPopup } from './util/browser.js';\nimport { generateState } from './util/oauth.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport './types/Token.js';\n\nfunction getWithPopup(sdk, options) {\n    if (arguments.length > 2) {\n        return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithPopup\" takes only a single set of options'));\n    }\n    const { initialPath } = options, params = __rest(options, [\"initialPath\"]);\n    const popupWindow = loadPopup(initialPath !== null && initialPath !== void 0 ? initialPath : '/', params);\n    options = clone(params) || {};\n    Object.assign(params, {\n        display: 'popup',\n        responseMode: 'okta_post_message',\n        popupWindow\n    });\n    return getToken(sdk, params);\n}\nfunction getWithIDPPopup(sdk, options) {\n    try {\n        if (!BroadcastChannel) {\n            throw new AuthSdkError('Modern browser with `BroadcastChannel` support is required to use this method');\n        }\n        if (!options.redirectUri) {\n            throw new AuthSdkError('`redirectUri` is a required param for `getWithIDPPopup`');\n        }\n        if (!options.state) {\n            options.state = generateState();\n        }\n        const popupWindow = loadPopup('/', options);\n        const channel = new BroadcastChannel(`popup-callback:${options.state}`);\n        options = clone(options) || {};\n        Object.assign(options, {\n            display: 'popup',\n            responseMode: 'query',\n            popupWindow,\n            idpPopup: true,\n            channel,\n        });\n        let cancelPromise;\n        const promise = new Promise((resolve, reject) => {\n            cancelPromise = reject;\n            return getToken(sdk, options)\n                .then((res) => resolve(res))\n                .catch(err => reject(err));\n        });\n        const cancel = () => {\n            channel.close();\n            cancelPromise(new AuthSdkError('Popup flow canceled'));\n        };\n        return {\n            promise,\n            cancel\n        };\n    }\n    catch (err) {\n        return {\n            promise: Promise.reject(err),\n            cancel: () => { }\n        };\n    }\n}\n\nexport { getWithIDPPopup, getWithPopup };\n//# sourceMappingURL=getWithPopup.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { clone } from '../util/object.js';\nimport { createOAuthMeta } from './util/oauthMeta.js';\nimport { prepareTokenParams } from './util/prepareTokenParams.js';\nimport './types/Token.js';\nimport { buildAuthorizeParams } from './endpoints/authorize.js';\n\nasync function getWithRedirect(sdk, options) {\n    if (arguments.length > 2) {\n        return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithRedirect\" takes only a single set of options'));\n    }\n    options = clone(options) || {};\n    const tokenParams = await prepareTokenParams(sdk, options);\n    const meta = createOAuthMeta(sdk, tokenParams);\n    const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(tokenParams);\n    sdk.transactionManager.save(meta);\n    if (sdk.options.setLocation) {\n        sdk.options.setLocation(requestUrl);\n    }\n    else {\n        window.location.assign(requestUrl);\n    }\n}\n\nexport { getWithRedirect };\n//# sourceMappingURL=getWithRedirect.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { isString } from '../util/types.js';\nimport { isInteractionRequiredError } from './util/errors.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { urlParamsToObject } from './util/urlParams.js';\nimport './types/Token.js';\nimport { handleOAuthResponse } from './handleOAuthResponse.js';\n\nfunction removeHash(sdk) {\n    var nativeHistory = sdk.token.parseFromUrl._getHistory();\n    var nativeDoc = sdk.token.parseFromUrl._getDocument();\n    var nativeLoc = sdk.token.parseFromUrl._getLocation();\n    if (nativeHistory && nativeHistory.replaceState) {\n        nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.search);\n    }\n    else {\n        nativeLoc.hash = '';\n    }\n}\nfunction removeSearch(sdk) {\n    var nativeHistory = sdk.token.parseFromUrl._getHistory();\n    var nativeDoc = sdk.token.parseFromUrl._getDocument();\n    var nativeLoc = sdk.token.parseFromUrl._getLocation();\n    if (nativeHistory && nativeHistory.replaceState) {\n        nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.hash);\n    }\n    else {\n        nativeLoc.search = '';\n    }\n}\nfunction getResponseMode(sdk) {\n    var defaultResponseMode = sdk.options.pkce ? 'query' : 'fragment';\n    var responseMode = sdk.options.responseMode || defaultResponseMode;\n    return responseMode;\n}\nfunction parseOAuthResponseFromUrl(sdk, options) {\n    options = options || {};\n    if (isString(options)) {\n        options = { url: options };\n    }\n    else {\n        options = options;\n    }\n    var url = options.url;\n    var responseMode = options.responseMode || getResponseMode(sdk);\n    var nativeLoc = sdk.token.parseFromUrl._getLocation();\n    var paramStr;\n    if (responseMode === 'query') {\n        paramStr = url ? url.substring(url.indexOf('?')) : nativeLoc.search;\n    }\n    else {\n        paramStr = url ? url.substring(url.indexOf('#')) : nativeLoc.hash;\n    }\n    if (!paramStr) {\n        throw new AuthSdkError('Unable to parse a token from the url');\n    }\n    return urlParamsToObject(paramStr);\n}\nfunction cleanOAuthResponseFromUrl(sdk, options) {\n    const responseMode = options.responseMode || getResponseMode(sdk);\n    responseMode === 'query' ? removeSearch(sdk) : removeHash(sdk);\n}\nasync function parseFromUrl(sdk, options) {\n    options = options || {};\n    if (isString(options)) {\n        options = { url: options };\n    }\n    else {\n        options = options;\n    }\n    const res = parseOAuthResponseFromUrl(sdk, options);\n    const state = res.state;\n    const oauthParams = sdk.transactionManager.load({\n        state\n    });\n    if (!oauthParams) {\n        if (sdk.options.pkce) {\n            throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', undefined);\n        }\n        throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n    }\n    const urls = oauthParams.urls;\n    delete oauthParams.urls;\n    if (!options.url) {\n        cleanOAuthResponseFromUrl(sdk, options);\n    }\n    return handleOAuthResponse(sdk, oauthParams, res, urls)\n        .catch(err => {\n        if (!isInteractionRequiredError(err)) {\n            sdk.transactionManager.clear({\n                state\n            });\n        }\n        throw err;\n    })\n        .then(res => {\n        sdk.transactionManager.clear({\n            state\n        });\n        return res;\n    });\n}\n\nexport { cleanOAuthResponseFromUrl, getResponseMode, parseFromUrl, parseOAuthResponseFromUrl };\n//# sourceMappingURL=parseFromUrl.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getOAuthUrls } from './util/oauth.js';\nimport { isSameRefreshToken } from './util/refreshToken.js';\nimport { handleOAuthResponse } from './handleOAuthResponse.js';\nimport { postRefreshToken } from './endpoints/token.js';\nimport { findKeyPair } from './dpop.js';\nimport { isRefreshTokenInvalidError } from './util/errors.js';\n\nasync function renewTokensWithRefresh(sdk, tokenParams, refreshTokenObject) {\n    const { clientId, dpop } = sdk.options;\n    if (!clientId) {\n        throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to renew tokens');\n    }\n    try {\n        const renewTokenParams = Object.assign({}, tokenParams, { clientId });\n        if (refreshTokenObject.extraParams) {\n            renewTokenParams.extraParams = refreshTokenObject.extraParams;\n        }\n        const endpointParams = Object.assign({}, renewTokenParams);\n        if (dpop) {\n            const keyPair = await findKeyPair(refreshTokenObject === null || refreshTokenObject === void 0 ? void 0 : refreshTokenObject.dpopPairId);\n            endpointParams.dpopKeyPair = keyPair;\n            renewTokenParams.dpop = dpop;\n            renewTokenParams.dpopPairId = refreshTokenObject.dpopPairId;\n        }\n        const tokenResponse = await postRefreshToken(sdk, endpointParams, refreshTokenObject);\n        const urls = getOAuthUrls(sdk, tokenParams);\n        const { tokens } = await handleOAuthResponse(sdk, renewTokenParams, tokenResponse, urls);\n        const { refreshToken } = tokens;\n        if (refreshToken && !isSameRefreshToken(refreshToken, refreshTokenObject)) {\n            sdk.tokenManager.updateRefreshToken(refreshToken);\n        }\n        return tokens;\n    }\n    catch (err) {\n        if (isRefreshTokenInvalidError(err)) {\n            sdk.tokenManager.removeRefreshToken();\n        }\n        throw err;\n    }\n}\n\nexport { renewTokensWithRefresh };\n//# sourceMappingURL=renewTokensWithRefresh.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isAuthApiError } from '../../errors/index.js';\n\nfunction isSameRefreshToken(a, b) {\n    return (a.refreshToken === b.refreshToken);\n}\nfunction isRefreshTokenError(err) {\n    if (!isAuthApiError(err)) {\n        return false;\n    }\n    if (!err.xhr || !err.xhr.responseJSON) {\n        return false;\n    }\n    const { responseJSON } = err.xhr;\n    if (responseJSON.error === 'invalid_grant') {\n        return true;\n    }\n    return false;\n}\n\nexport { isRefreshTokenError, isSameRefreshToken };\n//# sourceMappingURL=refreshToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { isIDToken, isAccessToken } from './types/Token.js';\nimport { getWithoutPrompt } from './getWithoutPrompt.js';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh.js';\n\nfunction throwInvalidTokenError() {\n    throw new AuthSdkError('Renew must be passed a token with an array of scopes and an accessToken or idToken');\n}\nfunction getSingleToken(originalToken, tokens) {\n    if (isIDToken(originalToken)) {\n        return tokens.idToken;\n    }\n    if (isAccessToken(originalToken)) {\n        return tokens.accessToken;\n    }\n    throwInvalidTokenError();\n}\nasync function renewToken(sdk, token) {\n    if (!isIDToken(token) && !isAccessToken(token)) {\n        throwInvalidTokenError();\n    }\n    let tokens = sdk.tokenManager.getTokensSync();\n    if (tokens.refreshToken) {\n        tokens = await renewTokensWithRefresh(sdk, {\n            scopes: token.scopes,\n        }, tokens.refreshToken);\n        return getSingleToken(token, tokens);\n    }\n    var responseType;\n    if (sdk.options.pkce) {\n        responseType = 'code';\n    }\n    else if (isAccessToken(token)) {\n        responseType = 'token';\n    }\n    else {\n        responseType = 'id_token';\n    }\n    const { scopes, authorizeUrl, userinfoUrl, issuer, dpopPairId, extraParams } = token;\n    return getWithoutPrompt(sdk, {\n        responseType,\n        scopes,\n        authorizeUrl,\n        userinfoUrl,\n        issuer,\n        dpopPairId,\n        extraParams\n    })\n        .then(function (res) {\n        return getSingleToken(token, res.tokens);\n    });\n}\n\nexport { renewToken };\n//# sourceMappingURL=renewToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getWithoutPrompt } from './getWithoutPrompt.js';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh.js';\nimport { getDefaultTokenParams } from './util/defaultTokenParams.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport './types/Token.js';\n\nasync function renewTokens(sdk, options) {\n    var _a;\n    const tokens = (_a = options === null || options === void 0 ? void 0 : options.tokens) !== null && _a !== void 0 ? _a : sdk.tokenManager.getTokensSync();\n    if (tokens.refreshToken) {\n        return renewTokensWithRefresh(sdk, options || {}, tokens.refreshToken);\n    }\n    if (!tokens.accessToken && !tokens.idToken) {\n        throw new AuthSdkError('renewTokens() was called but there is no existing token');\n    }\n    const accessToken = tokens.accessToken || {};\n    const idToken = tokens.idToken || {};\n    const scopes = accessToken.scopes || idToken.scopes;\n    if (!scopes) {\n        throw new AuthSdkError('renewTokens: invalid tokens: could not read scopes');\n    }\n    const authorizeUrl = accessToken.authorizeUrl || idToken.authorizeUrl;\n    if (!authorizeUrl) {\n        throw new AuthSdkError('renewTokens: invalid tokens: could not read authorizeUrl');\n    }\n    const userinfoUrl = accessToken.userinfoUrl || sdk.options.userinfoUrl;\n    const issuer = idToken.issuer || sdk.options.issuer;\n    const dpopPairId = accessToken === null || accessToken === void 0 ? void 0 : accessToken.dpopPairId;\n    const extraParams = (accessToken === null || accessToken === void 0 ? void 0 : accessToken.extraParams) || (idToken === null || idToken === void 0 ? void 0 : idToken.extraParams);\n    options = Object.assign({\n        scopes,\n        authorizeUrl,\n        userinfoUrl,\n        issuer,\n        dpopPairId,\n        extraParams\n    }, options);\n    if (sdk.options.pkce) {\n        options.responseType = 'code';\n    }\n    else {\n        const { responseType } = getDefaultTokenParams(sdk);\n        options.responseType = responseType;\n    }\n    return getWithoutPrompt(sdk, options)\n        .then(res => res.tokens);\n}\n\nexport { renewTokens };\n//# sourceMappingURL=renewTokens.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { btoa as b } from '../crypto/browser.js';\nimport { toQueryString } from '../util/url.js';\nimport { post } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { getOAuthUrls } from './util/oauth.js';\n\nasync function revokeToken(sdk, token) {\n    let accessToken = '';\n    let refreshToken = '';\n    if (token) {\n        accessToken = token.accessToken;\n        refreshToken = token.refreshToken;\n    }\n    if (!accessToken && !refreshToken) {\n        throw new AuthSdkError('A valid access or refresh token object is required');\n    }\n    var clientId = sdk.options.clientId;\n    var clientSecret = sdk.options.clientSecret;\n    if (!clientId) {\n        throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to revoke a token');\n    }\n    var revokeUrl = getOAuthUrls(sdk).revokeUrl;\n    var args = toQueryString({\n        token_type_hint: refreshToken ? 'refresh_token' : 'access_token',\n        token: refreshToken || accessToken,\n    }).slice(1);\n    var creds = clientSecret ? b(`${clientId}:${clientSecret}`) : b(clientId);\n    return post(sdk, revokeUrl, args, {\n        headers: {\n            'Content-Type': 'application/x-www-form-urlencoded',\n            'Authorization': 'Basic ' + creds\n        }\n    });\n}\n\nexport { revokeToken };\n//# sourceMappingURL=revokeToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getWellKnown } from './endpoints/well-known.js';\nimport { btoa as b } from '../crypto/browser.js';\nimport { toQueryString } from '../util/url.js';\nimport { post } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { TokenKind } from './types/Token.js';\n\nconst hintMap = {\n    accessToken: 'access_token',\n    idToken: 'id_token',\n    refreshToken: 'refresh_token'\n};\nasync function oidcIntrospect(sdk, kind, token) {\n    var _a;\n    let issuer;\n    let clientId = sdk.options.clientId;\n    let clientSecret = sdk.options.clientSecret;\n    if (!token) {\n        token = sdk.tokenManager.getTokens()[kind];\n    }\n    if (!token) {\n        throw new AuthSdkError(`unable to find ${kind} in storage or fn params`);\n    }\n    if (kind !== TokenKind.ACCESS) {\n        issuer = token === null || token === void 0 ? void 0 : token.issuer;\n    }\n    else {\n        issuer = (_a = token === null || token === void 0 ? void 0 : token.claims) === null || _a === void 0 ? void 0 : _a.iss;\n    }\n    issuer = issuer || sdk.options.issuer;\n    if (!clientId) {\n        throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to introspect a token');\n    }\n    if (!issuer) {\n        throw new AuthSdkError('Unable to find issuer');\n    }\n    const { introspection_endpoint: introspectUrl } = await getWellKnown(sdk, issuer);\n    const authHeader = clientSecret ? b(`${clientId}:${clientSecret}`) : b(clientId);\n    const args = toQueryString({\n        token_type_hint: hintMap[kind],\n        token: token[kind]\n    }).slice(1);\n    return post(sdk, introspectUrl, args, {\n        headers: {\n            'Content-Type': 'application/x-www-form-urlencoded',\n            'Authorization': 'Basic ' + authHeader\n        }\n    });\n}\n\nexport { oidcIntrospect };\n//# sourceMappingURL=introspect.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone } from '../util/object.js';\nimport '../errors/WWWAuthError.js';\nimport { createEnrollAuthenticatorMeta } from './util/enrollAuthenticatorMeta.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { prepareEnrollAuthenticatorParams } from './util/prepareEnrollAuthenticatorParams.js';\nimport './types/Token.js';\nimport { buildAuthorizeParams } from './endpoints/authorize.js';\n\nfunction enrollAuthenticator(sdk, options) {\n    options = clone(options) || {};\n    const params = prepareEnrollAuthenticatorParams(sdk, options);\n    const meta = createEnrollAuthenticatorMeta(sdk, params);\n    const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(params);\n    sdk.transactionManager.save(meta);\n    if (sdk.options.setLocation) {\n        sdk.options.setLocation(requestUrl);\n    }\n    else {\n        window.location.assign(requestUrl);\n    }\n}\n\nexport { enrollAuthenticator };\n//# sourceMappingURL=enrollAuthenticator.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { getDefaultEnrollAuthenticatorParams } from './defaultEnrollAuthenticatorParams.js';\n\nfunction prepareParams(params) {\n    params = Object.assign(Object.assign({}, params), {\n        responseType: 'none', prompt: 'enroll_authenticator', maxAge: 0 });\n    if (!params.enrollAmrValues) {\n        throw new AuthSdkError('enroll_amr_values must be specified');\n    }\n    if (!params.acrValues) {\n        throw new AuthSdkError('acr_values must be specified');\n    }\n    delete params.scopes;\n    delete params.nonce;\n    return params;\n}\nfunction prepareEnrollAuthenticatorParams(sdk, options) {\n    return prepareParams(Object.assign(Object.assign({}, getDefaultEnrollAuthenticatorParams(sdk)), options));\n}\n\nexport { prepareEnrollAuthenticatorParams };\n//# sourceMappingURL=prepareEnrollAuthenticatorParams.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { generateState } from './oauth.js';\nimport { isBrowser } from '../../features.js';\nimport { removeNils } from '../../util/object.js';\n\nfunction getDefaultEnrollAuthenticatorParams(sdk) {\n    const { clientId, redirectUri, responseMode, state, } = sdk.options;\n    const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n    return removeNils({\n        clientId,\n        redirectUri: redirectUri || defaultRedirectUri,\n        responseMode,\n        state: state || generateState(),\n        responseType: 'none',\n        prompt: 'enroll_authenticator',\n    });\n}\n\nexport { getDefaultEnrollAuthenticatorParams };\n//# sourceMappingURL=defaultEnrollAuthenticatorParams.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { getOAuthUrls } from './oauth.js';\n\nfunction createEnrollAuthenticatorMeta(sdk, params) {\n    const issuer = sdk.options.issuer;\n    const urls = getOAuthUrls(sdk, params);\n    const oauthMeta = {\n        issuer,\n        urls,\n        clientId: params.clientId,\n        redirectUri: params.redirectUri,\n        responseType: params.responseType,\n        responseMode: params.responseMode,\n        state: params.state,\n        acrValues: params.acrValues,\n        enrollAmrValues: params.enrollAmrValues,\n    };\n    return oauthMeta;\n}\n\nexport { createEnrollAuthenticatorMeta };\n//# sourceMappingURL=enrollAuthenticatorMeta.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { PromiseQueue } from '../../util/PromiseQueue.js';\nimport { decodeToken } from '../decodeToken.js';\nimport { exchangeCodeForTokens } from '../exchangeCodeForTokens.js';\nimport { getUserInfo } from '../getUserInfo.js';\nimport { getWithoutPrompt } from '../getWithoutPrompt.js';\nimport { getWithPopup, getWithIDPPopup } from '../getWithPopup.js';\nimport { getWithRedirect } from '../getWithRedirect.js';\nimport { parseFromUrl } from '../parseFromUrl.js';\nimport { renewToken } from '../renewToken.js';\nimport { renewTokens } from '../renewTokens.js';\nimport { renewTokensWithRefresh } from '../renewTokensWithRefresh.js';\nimport { revokeToken } from '../revokeToken.js';\nimport { oidcIntrospect } from '../introspect.js';\nimport '../../errors/WWWAuthError.js';\nimport { isLoginRedirect } from '../util/loginRedirect.js';\nimport { prepareTokenParams } from '../util/prepareTokenParams.js';\nimport '../types/Token.js';\nimport { verifyToken } from '../verifyToken.js';\nimport { enrollAuthenticator } from '../enrollAuthenticator.js';\n\nfunction createTokenAPI(sdk, queue) {\n    const useQueue = (method) => {\n        return PromiseQueue.prototype.push.bind(queue, method, null);\n    };\n    const getWithRedirectFn = useQueue(getWithRedirect.bind(null, sdk));\n    const parseFromUrlFn = useQueue(parseFromUrl.bind(null, sdk));\n    const parseFromUrlApi = Object.assign(parseFromUrlFn, {\n        _getHistory: function () {\n            return window.history;\n        },\n        _getLocation: function () {\n            return window.location;\n        },\n        _getDocument: function () {\n            return window.document;\n        }\n    });\n    const token = {\n        prepareTokenParams: prepareTokenParams.bind(null, sdk),\n        exchangeCodeForTokens: exchangeCodeForTokens.bind(null, sdk),\n        getWithoutPrompt: getWithoutPrompt.bind(null, sdk),\n        getWithPopup: getWithPopup.bind(null, sdk),\n        getWithIDPPopup: getWithIDPPopup.bind(null, sdk),\n        getWithRedirect: getWithRedirectFn,\n        parseFromUrl: parseFromUrlApi,\n        decode: decodeToken,\n        revoke: revokeToken.bind(null, sdk),\n        renew: renewToken.bind(null, sdk),\n        renewTokensWithRefresh: renewTokensWithRefresh.bind(null, sdk),\n        renewTokens: renewTokens.bind(null, sdk),\n        getUserInfo: (accessTokenObject, idTokenObject) => {\n            return getUserInfo(sdk, accessTokenObject, idTokenObject);\n        },\n        verify: verifyToken.bind(null, sdk),\n        isLoginRedirect: isLoginRedirect.bind(null, sdk),\n        introspect: oidcIntrospect.bind(null, sdk),\n    };\n    const toWrap = [\n        'getWithoutPrompt',\n        'getWithPopup',\n        'revoke',\n        'renew',\n        'renewTokensWithRefresh',\n        'renewTokens'\n    ];\n    toWrap.forEach(key => {\n        token[key] = useQueue(token[key]);\n    });\n    return token;\n}\nfunction createEndpoints(sdk) {\n    return {\n        authorize: {\n            enrollAuthenticator: enrollAuthenticator.bind(null, sdk),\n        }\n    };\n}\n\nexport { createEndpoints, createTokenAPI };\n//# sourceMappingURL=api.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from '../errors/AuthApiError.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport OAuthError from '../errors/OAuthError.js';\nimport WWWAuthError from '../errors/WWWAuthError.js';\nimport { httpRequest } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { isAccessToken, isIDToken } from './types/Token.js';\n\nasync function getUserInfo(sdk, accessTokenObject, idTokenObject) {\n    if (!accessTokenObject) {\n        accessTokenObject = (await sdk.tokenManager.getTokens()).accessToken;\n    }\n    if (!idTokenObject) {\n        idTokenObject = (await sdk.tokenManager.getTokens()).idToken;\n    }\n    if (!accessTokenObject || !isAccessToken(accessTokenObject)) {\n        return Promise.reject(new AuthSdkError('getUserInfo requires an access token object'));\n    }\n    if (!idTokenObject || !isIDToken(idTokenObject)) {\n        return Promise.reject(new AuthSdkError('getUserInfo requires an ID token object'));\n    }\n    const options = {\n        url: accessTokenObject.userinfoUrl,\n        method: 'GET',\n        accessToken: accessTokenObject.accessToken\n    };\n    if (sdk.options.dpop) {\n        const headers = await sdk.getDPoPAuthorizationHeaders(Object.assign(Object.assign({}, options), { accessToken: accessTokenObject }));\n        options.headers = headers;\n        delete options.accessToken;\n    }\n    return httpRequest(sdk, options)\n        .then(userInfo => {\n        if (userInfo.sub === idTokenObject.claims.sub) {\n            return userInfo;\n        }\n        return Promise.reject(new AuthSdkError('getUserInfo request was rejected due to token mismatch'));\n    })\n        .catch(function (err) {\n        var _a;\n        if (err instanceof WWWAuthError && !sdk.options.dpop) {\n            const { error, errorDescription } = err;\n            throw new OAuthError(error, errorDescription);\n        }\n        if (!sdk.options.dpop) {\n            let e = err;\n            if (err instanceof AuthApiError && ((_a = err === null || err === void 0 ? void 0 : err.meta) === null || _a === void 0 ? void 0 : _a.wwwAuthHeader)) {\n                e = WWWAuthError.parseHeader(err.meta.wwwAuthHeader);\n            }\n            if (e instanceof WWWAuthError) {\n                const { error, errorDescription } = e;\n                throw new OAuthError(error, errorDescription);\n            }\n        }\n        throw err;\n    });\n}\n\nexport { getUserInfo };\n//# sourceMappingURL=getUserInfo.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { isIDToken, isAccessToken, isRefreshToken } from '../types/Token.js';\n\nfunction validateToken(token, type) {\n    if (!isIDToken(token) && !isAccessToken(token) && !isRefreshToken(token)) {\n        throw new AuthSdkError('Token must be an Object with scopes, expiresAt, and one of: an idToken, accessToken, or refreshToken property');\n    }\n    if (type === 'accessToken' && !isAccessToken(token)) {\n        throw new AuthSdkError('invalid accessToken');\n    }\n    if (type === 'idToken' && !isIDToken(token)) {\n        throw new AuthSdkError('invalid idToken');\n    }\n    if (type === 'refreshToken' && !isRefreshToken(token)) {\n        throw new AuthSdkError('invalid refreshToken');\n    }\n}\n\nexport { validateToken };\n//# sourceMappingURL=validateToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nclass SdkClock {\n    constructor(localOffset) {\n        this.localOffset = parseInt(localOffset || 0);\n    }\n    static create( ) {\n        var localOffset = 0;\n        return new SdkClock(localOffset);\n    }\n    now() {\n        var now = (Date.now() + this.localOffset) / 1000;\n        return now;\n    }\n}\n\nexport { SdkClock as default };\n//# sourceMappingURL=clock.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst EVENT_EXPIRED = 'expired';\nconst EVENT_RENEWED = 'renewed';\nconst EVENT_ADDED = 'added';\nconst EVENT_REMOVED = 'removed';\nconst EVENT_ERROR = 'error';\nconst EVENT_SET_STORAGE = 'set_storage';\n\nexport { EVENT_ADDED, EVENT_ERROR, EVENT_EXPIRED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE };\n//# sourceMappingURL=TokenManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { removeNils, clone } from '../util/object.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { isLocalhost, isIE11OrLess } from '../features.js';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { validateToken } from './util/validateToken.js';\nimport SdkClock from '../clock.js';\nimport { isRefreshToken, isAccessToken, isIDToken } from './types/Token.js';\nimport { EVENT_EXPIRED, EVENT_RENEWED, EVENT_ADDED, EVENT_REMOVED, EVENT_ERROR, EVENT_SET_STORAGE } from './types/TokenManager.js';\n\nconst DEFAULT_OPTIONS = {\n    autoRenew: true,\n    autoRemove: true,\n    syncStorage: true,\n    clearPendingRemoveTokens: true,\n    storage: undefined,\n    expireEarlySeconds: 30,\n    storageKey: TOKEN_STORAGE_NAME\n};\nfunction defaultState() {\n    return {\n        expireTimeouts: {},\n        renewPromise: null\n    };\n}\nclass TokenManager {\n    constructor(sdk, options = {}) {\n        this.sdk = sdk;\n        this.emitter = sdk.emitter;\n        if (!this.emitter) {\n            throw new AuthSdkError('Emitter should be initialized before TokenManager');\n        }\n        options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n        if (!isLocalhost()) {\n            options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n        }\n        this.options = options;\n        const storageOptions = removeNils({\n            storageKey: options.storageKey,\n            secure: options.secure,\n        });\n        if (typeof options.storage === 'object') {\n            storageOptions.storageProvider = options.storage;\n        }\n        else if (options.storage) {\n            storageOptions.storageType = options.storage;\n        }\n        this.storage = sdk.storageManager.getTokenStorage(Object.assign(Object.assign({}, storageOptions), { useSeparateCookies: true }));\n        this.clock = SdkClock.create( );\n        this.state = defaultState();\n    }\n    on(event, handler, context) {\n        if (context) {\n            this.emitter.on(event, handler, context);\n        }\n        else {\n            this.emitter.on(event, handler);\n        }\n    }\n    off(event, handler) {\n        if (handler) {\n            this.emitter.off(event, handler);\n        }\n        else {\n            this.emitter.off(event);\n        }\n    }\n    start() {\n        if (this.options.clearPendingRemoveTokens) {\n            this.clearPendingRemoveTokens();\n        }\n        this.setExpireEventTimeoutAll();\n        this.state.started = true;\n    }\n    stop() {\n        this.clearExpireEventTimeoutAll();\n        this.state.started = false;\n    }\n    isStarted() {\n        return !!this.state.started;\n    }\n    getOptions() {\n        return clone(this.options);\n    }\n    getExpireTime(token) {\n        const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n        var expireTime = token.expiresAt - expireEarlySeconds;\n        return expireTime;\n    }\n    hasExpired(token) {\n        var expireTime = this.getExpireTime(token);\n        return expireTime <= this.clock.now();\n    }\n    emitExpired(key, token) {\n        this.emitter.emit(EVENT_EXPIRED, key, token);\n    }\n    emitRenewed(key, freshToken, oldToken) {\n        this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n    }\n    emitAdded(key, token) {\n        this.emitter.emit(EVENT_ADDED, key, token);\n    }\n    emitRemoved(key, token) {\n        this.emitter.emit(EVENT_REMOVED, key, token);\n    }\n    emitError(error) {\n        this.emitter.emit(EVENT_ERROR, error);\n    }\n    clearExpireEventTimeout(key) {\n        clearTimeout(this.state.expireTimeouts[key]);\n        delete this.state.expireTimeouts[key];\n        this.state.renewPromise = null;\n    }\n    clearExpireEventTimeoutAll() {\n        var expireTimeouts = this.state.expireTimeouts;\n        for (var key in expireTimeouts) {\n            if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n                continue;\n            }\n            this.clearExpireEventTimeout(key);\n        }\n    }\n    setExpireEventTimeout(key, token) {\n        if (isRefreshToken(token)) {\n            return;\n        }\n        var expireTime = this.getExpireTime(token);\n        var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n        this.clearExpireEventTimeout(key);\n        var expireEventTimeout = setTimeout(() => {\n            this.emitExpired(key, token);\n        }, expireEventWait);\n        this.state.expireTimeouts[key] = expireEventTimeout;\n    }\n    setExpireEventTimeoutAll() {\n        var tokenStorage = this.storage.getStorage();\n        for (var key in tokenStorage) {\n            if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n                continue;\n            }\n            var token = tokenStorage[key];\n            this.setExpireEventTimeout(key, token);\n        }\n    }\n    resetExpireEventTimeoutAll() {\n        this.clearExpireEventTimeoutAll();\n        this.setExpireEventTimeoutAll();\n    }\n    add(key, token) {\n        var tokenStorage = this.storage.getStorage();\n        validateToken(token);\n        tokenStorage[key] = token;\n        this.storage.setStorage(tokenStorage);\n        this.emitSetStorageEvent();\n        this.emitAdded(key, token);\n        this.setExpireEventTimeout(key, token);\n    }\n    getSync(key) {\n        var tokenStorage = this.storage.getStorage();\n        return tokenStorage[key];\n    }\n    async get(key) {\n        return this.getSync(key);\n    }\n    getTokensSync() {\n        const tokens = {};\n        const tokenStorage = this.storage.getStorage();\n        Object.keys(tokenStorage).forEach(key => {\n            const token = tokenStorage[key];\n            if (isAccessToken(token)) {\n                tokens.accessToken = token;\n            }\n            else if (isIDToken(token)) {\n                tokens.idToken = token;\n            }\n            else if (isRefreshToken(token)) {\n                tokens.refreshToken = token;\n            }\n        });\n        return tokens;\n    }\n    async getTokens() {\n        return this.getTokensSync();\n    }\n    getStorageKeyByType(type) {\n        const tokenStorage = this.storage.getStorage();\n        const key = Object.keys(tokenStorage).filter(key => {\n            const token = tokenStorage[key];\n            return (isAccessToken(token) && type === 'accessToken')\n                || (isIDToken(token) && type === 'idToken')\n                || (isRefreshToken(token) && type === 'refreshToken');\n        })[0];\n        return key;\n    }\n    getTokenType(token) {\n        if (isAccessToken(token)) {\n            return 'accessToken';\n        }\n        if (isIDToken(token)) {\n            return 'idToken';\n        }\n        if (isRefreshToken(token)) {\n            return 'refreshToken';\n        }\n        throw new AuthSdkError('Unknown token type');\n    }\n    emitSetStorageEvent() {\n        if (isIE11OrLess()) {\n            const storage = this.storage.getStorage();\n            this.emitter.emit(EVENT_SET_STORAGE, storage);\n        }\n    }\n    getStorage() {\n        return this.storage;\n    }\n    setTokens(tokens,\n    accessTokenCb, idTokenCb, refreshTokenCb) {\n        const handleTokenCallback = (key, token) => {\n            const type = this.getTokenType(token);\n            if (type === 'accessToken') {\n                accessTokenCb && accessTokenCb(key, token);\n            }\n            else if (type === 'idToken') {\n                idTokenCb && idTokenCb(key, token);\n            }\n            else if (type === 'refreshToken') {\n                refreshTokenCb && refreshTokenCb(key, token);\n            }\n        };\n        const handleAdded = (key, token) => {\n            this.emitAdded(key, token);\n            this.setExpireEventTimeout(key, token);\n            handleTokenCallback(key, token);\n        };\n        const handleRenewed = (key, token, oldToken) => {\n            this.emitRenewed(key, token, oldToken);\n            this.clearExpireEventTimeout(key);\n            this.setExpireEventTimeout(key, token);\n            handleTokenCallback(key, token);\n        };\n        const handleRemoved = (key, token) => {\n            this.clearExpireEventTimeout(key);\n            this.emitRemoved(key, token);\n            handleTokenCallback(key, token);\n        };\n        const types = ['idToken', 'accessToken', 'refreshToken'];\n        const existingTokens = this.getTokensSync();\n        types.forEach((type) => {\n            const token = tokens[type];\n            if (token) {\n                validateToken(token, type);\n            }\n        });\n        const storage = types.reduce((storage, type) => {\n            const token = tokens[type];\n            if (token) {\n                const storageKey = this.getStorageKeyByType(type) || type;\n                storage[storageKey] = token;\n            }\n            return storage;\n        }, {});\n        this.storage.setStorage(storage);\n        this.emitSetStorageEvent();\n        types.forEach(type => {\n            const newToken = tokens[type];\n            const existingToken = existingTokens[type];\n            const storageKey = this.getStorageKeyByType(type) || type;\n            if (newToken && existingToken) {\n                handleRemoved(storageKey, existingToken);\n                handleAdded(storageKey, newToken);\n                handleRenewed(storageKey, newToken, existingToken);\n            }\n            else if (newToken) {\n                handleAdded(storageKey, newToken);\n            }\n            else if (existingToken) {\n                handleRemoved(storageKey, existingToken);\n            }\n        });\n    }\n    remove(key) {\n        this.clearExpireEventTimeout(key);\n        var tokenStorage = this.storage.getStorage();\n        var removedToken = tokenStorage[key];\n        delete tokenStorage[key];\n        this.storage.setStorage(tokenStorage);\n        this.emitSetStorageEvent();\n        this.emitRemoved(key, removedToken);\n    }\n    async renewToken(token) {\n        var _a;\n        return (_a = this.sdk.token) === null || _a === void 0 ? void 0 : _a.renew(token);\n    }\n    validateToken(token) {\n        return validateToken(token);\n    }\n    renew(key) {\n        if (this.state.renewPromise) {\n            return this.state.renewPromise;\n        }\n        try {\n            var token = this.getSync(key);\n            let shouldRenew = token !== undefined;\n            if (!token && key === 'accessToken') {\n                const refreshKey = this.getStorageKeyByType('refreshToken');\n                const refreshToken = this.getSync(refreshKey);\n                shouldRenew = refreshToken !== undefined;\n            }\n            if (!shouldRenew) {\n                throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n            }\n        }\n        catch (err) {\n            this.emitError(err);\n            return Promise.reject(err);\n        }\n        this.clearExpireEventTimeout(key);\n        const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n            .then(tokens => {\n            this.setTokens(tokens);\n            if (!token && key === 'accessToken') {\n                const accessToken = tokens['accessToken'];\n                this.emitRenewed(key, accessToken, null);\n                return accessToken;\n            }\n            const tokenType = this.getTokenType(token);\n            return tokens[tokenType];\n        })\n            .catch(err => {\n            this.remove(key);\n            err.tokenKey = key;\n            this.emitError(err);\n            throw err;\n        })\n            .finally(() => {\n            this.state.renewPromise = null;\n        });\n        return renewPromise;\n    }\n    clear() {\n        const tokens = this.getTokensSync();\n        this.clearExpireEventTimeoutAll();\n        this.storage.clearStorage();\n        this.emitSetStorageEvent();\n        Object.keys(tokens).forEach(key => {\n            this.emitRemoved(key, tokens[key]);\n        });\n    }\n    clearPendingRemoveTokens() {\n        const tokenStorage = this.storage.getStorage();\n        const removedTokens = {};\n        Object.keys(tokenStorage).forEach(key => {\n            if (tokenStorage[key].pendingRemove) {\n                removedTokens[key] = tokenStorage[key];\n                delete tokenStorage[key];\n            }\n        });\n        this.storage.setStorage(tokenStorage);\n        this.emitSetStorageEvent();\n        Object.keys(removedTokens).forEach(key => {\n            this.clearExpireEventTimeout(key);\n            this.emitRemoved(key, removedTokens[key]);\n        });\n    }\n    updateRefreshToken(token) {\n        const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n        var tokenStorage = this.storage.getStorage();\n        validateToken(token);\n        tokenStorage[key] = token;\n        this.storage.setStorage(tokenStorage);\n        this.emitSetStorageEvent();\n    }\n    removeRefreshToken() {\n        const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n        this.remove(key);\n    }\n    addPendingRemoveFlags() {\n        const tokens = this.getTokensSync();\n        Object.keys(tokens).forEach(key => {\n            tokens[key].pendingRemove = true;\n        });\n        this.setTokens(tokens);\n    }\n}\n\nexport { TokenManager };\n//# sourceMappingURL=TokenManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Cookies from 'js-cookie';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport { warn } from '../util/console.js';\nimport { isIE11OrLess } from '../features.js';\n\nvar storageUtil = {\n    browserHasLocalStorage: function () {\n        try {\n            var storage = this.getLocalStorage();\n            return this.testStorage(storage);\n        }\n        catch (e) {\n            return false;\n        }\n    },\n    browserHasSessionStorage: function () {\n        try {\n            var storage = this.getSessionStorage();\n            return this.testStorage(storage);\n        }\n        catch (e) {\n            return false;\n        }\n    },\n    testStorageType: function (storageType) {\n        var supported = false;\n        switch (storageType) {\n            case 'sessionStorage':\n                supported = this.browserHasSessionStorage();\n                break;\n            case 'localStorage':\n                supported = this.browserHasLocalStorage();\n                break;\n            case 'cookie':\n            case 'memory':\n                supported = true;\n                break;\n            default:\n                supported = false;\n                break;\n        }\n        return supported;\n    },\n    getStorageByType: function (storageType, options) {\n        let storageProvider;\n        switch (storageType) {\n            case 'sessionStorage':\n                storageProvider = this.getSessionStorage();\n                break;\n            case 'localStorage':\n                storageProvider = this.getLocalStorage();\n                break;\n            case 'cookie':\n                storageProvider = this.getCookieStorage(options);\n                break;\n            case 'memory':\n                storageProvider = this.getInMemoryStorage();\n                break;\n            default:\n                throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n        }\n        return storageProvider;\n    },\n    findStorageType: function (types) {\n        let curType;\n        let nextType;\n        types = types.slice();\n        curType = types.shift();\n        nextType = types.length ? types[0] : null;\n        if (!nextType) {\n            return curType;\n        }\n        if (this.testStorageType(curType)) {\n            return curType;\n        }\n        warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n        return this.findStorageType(types);\n    },\n    getLocalStorage: function () {\n        if (isIE11OrLess() && !window.onstorage) {\n            window.onstorage = function () { };\n        }\n        return localStorage;\n    },\n    getSessionStorage: function () {\n        return sessionStorage;\n    },\n    getCookieStorage: function (options) {\n        const secure = options.secure;\n        const sameSite = options.sameSite;\n        const sessionCookie = options.sessionCookie;\n        if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n            throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n        }\n        const storage = {\n            getItem: this.storage.get,\n            setItem: (key, value, expiresAt = '2200-01-01T00:00:00.000Z') => {\n                expiresAt = (sessionCookie ? null : expiresAt);\n                this.storage.set(key, value, expiresAt, {\n                    secure: secure,\n                    sameSite: sameSite,\n                });\n            },\n            removeItem: (key) => {\n                this.storage.delete(key);\n            },\n        };\n        if (!options.useSeparateCookies) {\n            return storage;\n        }\n        return {\n            getItem: function (key) {\n                var data = storage.getItem();\n                var value = {};\n                Object.keys(data).forEach(k => {\n                    if (k.indexOf(key) === 0) {\n                        value[k.replace(`${key}_`, '')] = JSON.parse(data[k]);\n                    }\n                });\n                return JSON.stringify(value);\n            },\n            setItem: function (key, value) {\n                var existingValues = JSON.parse(this.getItem(key));\n                value = JSON.parse(value);\n                Object.keys(value).forEach(k => {\n                    var storageKey = key + '_' + k;\n                    var valueToStore = JSON.stringify(value[k]);\n                    storage.setItem(storageKey, valueToStore);\n                    delete existingValues[k];\n                });\n                Object.keys(existingValues).forEach(k => {\n                    storage.removeItem(key + '_' + k);\n                });\n            },\n            removeItem: function (key) {\n                var existingValues = JSON.parse(this.getItem(key));\n                Object.keys(existingValues).forEach(k => {\n                    storage.removeItem(key + '_' + k);\n                });\n            },\n        };\n    },\n    inMemoryStore: {},\n    getInMemoryStorage: function () {\n        return {\n            getItem: (key) => {\n                return this.inMemoryStore[key];\n            },\n            setItem: (key, value) => {\n                this.inMemoryStore[key] = value;\n            },\n        };\n    },\n    testStorage: function (storage) {\n        var key = 'okta-test-storage';\n        try {\n            storage.setItem(key, key);\n            storage.removeItem(key);\n            return true;\n        }\n        catch (e) {\n            return false;\n        }\n    },\n    storage: {\n        set: function (name, value, expiresAt, options) {\n            const { sameSite, secure } = options;\n            if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n                throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n            }\n            var cookieOptions = {\n                path: options.path || '/',\n                secure,\n                sameSite\n            };\n            if (!!(Date.parse(expiresAt))) {\n                cookieOptions.expires = new Date(expiresAt);\n            }\n            Cookies.set(name, value, cookieOptions);\n            return this.get(name);\n        },\n        get: function (name) {\n            if (!arguments.length) {\n                return Cookies.get();\n            }\n            return Cookies.get(name);\n        },\n        delete: function (name) {\n            return Cookies.remove(name, { path: '/' });\n        }\n    }\n};\n\nexport { storageUtil as default };\n//# sourceMappingURL=browserStorage.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport PCancelable from 'p-cancelable';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { getConsole } from '../util/console.js';\nimport { PromiseQueue } from '../util/PromiseQueue.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport { EVENT_ADDED, EVENT_REMOVED } from '../oidc/types/TokenManager.js';\nimport '../_virtual/_tslib.js';\n\nconst INITIAL_AUTH_STATE = null;\nconst DEFAULT_PENDING = {\n    updateAuthStatePromise: null,\n    canceledTimes: 0\n};\nconst EVENT_AUTH_STATE_CHANGE = 'authStateChange';\nconst MAX_PROMISE_CANCEL_TIMES = 10;\nconst isSameAuthState = (prevState, state) => {\n    if (!prevState) {\n        return false;\n    }\n    return prevState.isAuthenticated === state.isAuthenticated\n        && JSON.stringify(prevState.idToken) === JSON.stringify(state.idToken)\n        && JSON.stringify(prevState.accessToken) === JSON.stringify(state.accessToken)\n        && prevState.error === state.error;\n};\nclass AuthStateManager {\n    constructor(sdk) {\n        if (!sdk.emitter) {\n            throw new AuthSdkError('Emitter should be initialized before AuthStateManager');\n        }\n        this._sdk = sdk;\n        this._pending = Object.assign({}, DEFAULT_PENDING);\n        this._authState = INITIAL_AUTH_STATE;\n        this._logOptions = {};\n        this._prevAuthState = null;\n        this._transformQueue = new PromiseQueue({\n            quiet: true\n        });\n        sdk.tokenManager.on(EVENT_ADDED, (key, token) => {\n            this._setLogOptions({ event: EVENT_ADDED, key, token });\n            this.updateAuthState();\n        });\n        sdk.tokenManager.on(EVENT_REMOVED, (key, token) => {\n            this._setLogOptions({ event: EVENT_REMOVED, key, token });\n            this.updateAuthState();\n        });\n    }\n    _setLogOptions(options) {\n        this._logOptions = options;\n    }\n    getAuthState() {\n        return this._authState;\n    }\n    getPreviousAuthState() {\n        return this._prevAuthState;\n    }\n    async updateAuthState() {\n        const { transformAuthState, devMode } = this._sdk.options;\n        const log = (status) => {\n            const { event, key, token } = this._logOptions;\n            getConsole().group(`OKTA-AUTH-JS:updateAuthState: Event:${event} Status:${status}`);\n            getConsole().log(key, token);\n            getConsole().log('Current authState', this._authState);\n            getConsole().groupEnd();\n            this._logOptions = {};\n        };\n        const emitAuthStateChange = (authState) => {\n            if (isSameAuthState(this._authState, authState)) {\n                devMode && log('unchanged');\n                return;\n            }\n            this._prevAuthState = this._authState;\n            this._authState = authState;\n            this._sdk.emitter.emit(EVENT_AUTH_STATE_CHANGE, Object.assign({}, authState));\n            devMode && log('emitted');\n        };\n        const finalPromise = (origPromise) => {\n            return this._pending.updateAuthStatePromise.then(() => {\n                const curPromise = this._pending.updateAuthStatePromise;\n                if (curPromise && curPromise !== origPromise) {\n                    return finalPromise(curPromise);\n                }\n                return this.getAuthState();\n            });\n        };\n        if (this._pending.updateAuthStatePromise) {\n            if (this._pending.canceledTimes >= MAX_PROMISE_CANCEL_TIMES) {\n                devMode && log('terminated');\n                return finalPromise(this._pending.updateAuthStatePromise);\n            }\n            else {\n                this._pending.updateAuthStatePromise.cancel();\n            }\n        }\n        const cancelablePromise = new PCancelable((resolve, _, onCancel) => {\n            onCancel.shouldReject = false;\n            onCancel(() => {\n                this._pending.updateAuthStatePromise = null;\n                this._pending.canceledTimes = this._pending.canceledTimes + 1;\n                devMode && log('canceled');\n            });\n            const emitAndResolve = (authState) => {\n                if (cancelablePromise.isCanceled) {\n                    resolve();\n                    return;\n                }\n                emitAuthStateChange(authState);\n                resolve();\n                this._pending = Object.assign({}, DEFAULT_PENDING);\n            };\n            this._sdk.isAuthenticated()\n                .then(() => {\n                if (cancelablePromise.isCanceled) {\n                    resolve();\n                    return;\n                }\n                const { accessToken, idToken, refreshToken } = this._sdk.tokenManager.getTokensSync();\n                const authState = {\n                    accessToken,\n                    idToken,\n                    refreshToken,\n                    isAuthenticated: !!(accessToken && idToken)\n                };\n                const promise = transformAuthState\n                    ? this._transformQueue.push(transformAuthState, null, this._sdk, authState)\n                    : Promise.resolve(authState);\n                promise\n                    .then(authState => emitAndResolve(authState))\n                    .catch(error => emitAndResolve({\n                    accessToken,\n                    idToken,\n                    refreshToken,\n                    isAuthenticated: false,\n                    error\n                }));\n            });\n        });\n        this._pending.updateAuthStatePromise = cancelablePromise;\n        return finalPromise(cancelablePromise);\n    }\n    subscribe(handler) {\n        this._sdk.emitter.on(EVENT_AUTH_STATE_CHANGE, handler);\n    }\n    unsubscribe(handler) {\n        this._sdk.emitter.off(EVENT_AUTH_STATE_CHANGE, handler);\n    }\n}\n\nexport { AuthStateManager, INITIAL_AUTH_STATE };\n//# sourceMappingURL=AuthStateManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { isRefreshToken } from '../oidc/types/Token.js';\nimport { EVENT_EXPIRED } from '../oidc/types/TokenManager.js';\nimport { isBrowser } from '../features.js';\n\nclass AutoRenewService {\n    constructor(tokenManager, options = {}) {\n        this.started = false;\n        this.tokenManager = tokenManager;\n        this.options = options;\n        this.renewTimeQueue = [];\n        this.onTokenExpiredHandler = this.onTokenExpiredHandler.bind(this);\n    }\n    shouldThrottleRenew() {\n        let res = false;\n        this.renewTimeQueue.push(Date.now());\n        if (this.renewTimeQueue.length >= 10) {\n            const firstTime = this.renewTimeQueue.shift();\n            const lastTime = this.renewTimeQueue[this.renewTimeQueue.length - 1];\n            res = (lastTime - firstTime) < 30 * 1000;\n        }\n        return res;\n    }\n    requiresLeadership() {\n        return !!this.options.syncStorage && isBrowser();\n    }\n    processExpiredTokens() {\n        const tokenStorage = this.tokenManager.getStorage();\n        const tokens = tokenStorage.getStorage();\n        Object.keys(tokens).forEach(key => {\n            const token = tokens[key];\n            if (!isRefreshToken(token) && this.tokenManager.hasExpired(token)) {\n                this.onTokenExpiredHandler(key);\n            }\n        });\n    }\n    onTokenExpiredHandler(key) {\n        if (this.options.autoRenew) {\n            if (this.shouldThrottleRenew()) {\n                const error = new AuthSdkError('Too many token renew requests');\n                this.tokenManager.emitError(error);\n            }\n            else {\n                this.tokenManager.renew(key).catch(() => { });\n            }\n        }\n        else if (this.options.autoRemove) {\n            this.tokenManager.remove(key);\n        }\n    }\n    canStart() {\n        return (!!this.options.autoRenew || !!this.options.autoRemove) && !this.started;\n    }\n    async start() {\n        if (this.canStart()) {\n            this.tokenManager.on(EVENT_EXPIRED, this.onTokenExpiredHandler);\n            if (this.tokenManager.isStarted()) {\n                this.processExpiredTokens();\n            }\n            this.started = true;\n        }\n    }\n    async stop() {\n        if (this.started) {\n            this.tokenManager.off(EVENT_EXPIRED, this.onTokenExpiredHandler);\n            this.renewTimeQueue = [];\n            this.started = false;\n        }\n    }\n    isStarted() {\n        return this.started;\n    }\n}\n\nexport { AutoRenewService };\n//# sourceMappingURL=AutoRenewService.js.map\n","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n  return obj && typeof obj.then === 'function';\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n  if (!time) time = 0;\n  return new Promise(function (res) {\n    return setTimeout(function () {\n      return res(resolveWith);\n    }, time);\n  });\n}\nexport function randomInt(min, max) {\n  return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * https://stackoverflow.com/a/8084248\n */\nexport function randomToken() {\n  return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\nexport function microSeconds() {\n  var ms = new Date().getTime();\n  if (ms === lastMs) {\n    additional++;\n    return ms * 1000 + additional;\n  } else {\n    lastMs = ms;\n    additional = 0;\n    return ms * 1000;\n  }\n}\n\n/**\n * Check if WebLock API is supported.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport function supportsWebLockAPI() {\n  if (typeof navigator !== 'undefined' && typeof navigator.locks !== 'undefined' && typeof navigator.locks.request === 'function') {\n    return true;\n  } else {\n    return false;\n  }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n  var state = {\n    messagesCallback: null,\n    bc: new BroadcastChannel(channelName),\n    subFns: [] // subscriberFunctions\n  };\n\n  state.bc.onmessage = function (msg) {\n    if (state.messagesCallback) {\n      state.messagesCallback(msg.data);\n    }\n  };\n  return state;\n}\nexport function close(channelState) {\n  channelState.bc.close();\n  channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n  try {\n    channelState.bc.postMessage(messageJson, false);\n    return PROMISE_RESOLVED_VOID;\n  } catch (err) {\n    return Promise.reject(err);\n  }\n}\nexport function onMessage(channelState, fn) {\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  if ((typeof window !== 'undefined' || typeof self !== 'undefined') && typeof BroadcastChannel === 'function') {\n    if (BroadcastChannel._pubkey) {\n      throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n    }\n    return true;\n  } else {\n    return false;\n  }\n}\nexport function averageResponseTime() {\n  return 150;\n}\nexport var NativeMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nvar ObliviousSet = /** @class */ (function () {\n    function ObliviousSet(ttl) {\n        this.ttl = ttl;\n        this.map = new Map();\n        /**\n         * Creating calls to setTimeout() is expensive,\n         * so we only do that if there is not timeout already open.\n         */\n        this._to = false;\n    }\n    ObliviousSet.prototype.has = function (value) {\n        return this.map.has(value);\n    };\n    ObliviousSet.prototype.add = function (value) {\n        var _this = this;\n        this.map.set(value, now());\n        /**\n         * When a new value is added,\n         * start the cleanup at the next tick\n         * to not block the cpu for more important stuff\n         * that might happen.\n         */\n        if (!this._to) {\n            this._to = true;\n            setTimeout(function () {\n                _this._to = false;\n                removeTooOldValues(_this);\n            }, 0);\n        }\n    };\n    ObliviousSet.prototype.clear = function () {\n        this.map.clear();\n    };\n    return ObliviousSet;\n}());\nexport { ObliviousSet };\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(obliviousSet) {\n    var olderThen = now() - obliviousSet.ttl;\n    var iterator = obliviousSet.map[Symbol.iterator]();\n    /**\n     * Because we can assume the new values are added at the bottom,\n     * we start from the top and stop as soon as we reach a non-too-old value.\n     */\n    while (true) {\n        var next = iterator.next().value;\n        if (!next) {\n            return; // no more elements\n        }\n        var value = next[0];\n        var time = next[1];\n        if (time < olderThen) {\n            obliviousSet.map.delete(value);\n        }\n        else {\n            // We reached a value that is not old enough\n            return;\n        }\n    }\n}\nexport function now() {\n    return new Date().getTime();\n}\n//# sourceMappingURL=index.js.map","export function fillOptionsWithDefaults() {\n  var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var options = JSON.parse(JSON.stringify(originalOptions));\n\n  // main\n  if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true;\n\n  // indexed-db\n  if (!options.idb) options.idb = {};\n  //  after this time the messages get deleted\n  if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n  if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150;\n  //  handles abrupt db onclose events.\n  if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose;\n\n  // localstorage\n  if (!options.localstorage) options.localstorage = {};\n  if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60;\n\n  // custom methods\n  if (originalOptions.methods) options.methods = originalOptions.methods;\n\n  // node\n  if (!options.node) options.node = {};\n  if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n  /**\n   * On linux use 'ulimit -Hn' to get the limit of open files.\n   * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n   */\n  if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n  if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n  return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport var TRANSACTION_SETTINGS = {\n  durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n  if (typeof indexedDB !== 'undefined') return indexedDB;\n  if (typeof window !== 'undefined') {\n    if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n    if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n    if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n  }\n  return false;\n}\n\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport function commitIndexedDBTransaction(tx) {\n  if (tx.commit) {\n    tx.commit();\n  }\n}\nexport function createDatabase(channelName) {\n  var IndexedDB = getIdb();\n\n  // create table\n  var dbName = DB_PREFIX + channelName;\n\n  /**\n   * All IndexedDB databases are opened without version\n   * because it is a bit faster, especially on firefox\n   * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n   */\n  var openRequest = IndexedDB.open(dbName);\n  openRequest.onupgradeneeded = function (ev) {\n    var db = ev.target.result;\n    db.createObjectStore(OBJECT_STORE_ID, {\n      keyPath: 'id',\n      autoIncrement: true\n    });\n  };\n  return new Promise(function (res, rej) {\n    openRequest.onerror = function (ev) {\n      return rej(ev);\n    };\n    openRequest.onsuccess = function () {\n      res(openRequest.result);\n    };\n  });\n}\n\n/**\n * writes the new message to the database\n * so other readers can find it\n */\nexport function writeMessage(db, readerUuid, messageJson) {\n  var time = new Date().getTime();\n  var writeObject = {\n    uuid: readerUuid,\n    time: time,\n    data: messageJson\n  };\n  var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n  return new Promise(function (res, rej) {\n    tx.oncomplete = function () {\n      return res();\n    };\n    tx.onerror = function (ev) {\n      return rej(ev);\n    };\n    var objectStore = tx.objectStore(OBJECT_STORE_ID);\n    objectStore.add(writeObject);\n    commitIndexedDBTransaction(tx);\n  });\n}\nexport function getAllMessages(db) {\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  return new Promise(function (res) {\n    objectStore.openCursor().onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        ret.push(cursor.value);\n        //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n        cursor[\"continue\"]();\n      } else {\n        commitIndexedDBTransaction(tx);\n        res(ret);\n      }\n    };\n  });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n\n  /**\n   * Optimization shortcut,\n   * if getAll() can be used, do not use a cursor.\n   * @link https://rxdb.info/slow-indexeddb.html\n   */\n  if (objectStore.getAll) {\n    var getAllRequest = objectStore.getAll(keyRangeValue);\n    return new Promise(function (res, rej) {\n      getAllRequest.onerror = function (err) {\n        return rej(err);\n      };\n      getAllRequest.onsuccess = function (e) {\n        res(e.target.result);\n      };\n    });\n  }\n  function openCursor() {\n    // Occasionally Safari will fail on IDBKeyRange.bound, this\n    // catches that error, having it open the cursor to the first\n    // item. When it gets data it will advance to the desired key.\n    try {\n      keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n      return objectStore.openCursor(keyRangeValue);\n    } catch (e) {\n      return objectStore.openCursor();\n    }\n  }\n  return new Promise(function (res, rej) {\n    var openCursorRequest = openCursor();\n    openCursorRequest.onerror = function (err) {\n      return rej(err);\n    };\n    openCursorRequest.onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        if (cursor.value.id < lastCursorId + 1) {\n          cursor[\"continue\"](lastCursorId + 1);\n        } else {\n          ret.push(cursor.value);\n          cursor[\"continue\"]();\n        }\n      } else {\n        commitIndexedDBTransaction(tx);\n        res(ret);\n      }\n    };\n  });\n}\nexport function removeMessagesById(channelState, ids) {\n  if (channelState.closed) {\n    return Promise.resolve([]);\n  }\n  var tx = channelState.db.transaction(OBJECT_STORE_ID, 'readwrite', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  return Promise.all(ids.map(function (id) {\n    var deleteRequest = objectStore[\"delete\"](id);\n    return new Promise(function (res) {\n      deleteRequest.onsuccess = function () {\n        return res();\n      };\n    });\n  }));\n}\nexport function getOldMessages(db, ttl) {\n  var olderThen = new Date().getTime() - ttl;\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  return new Promise(function (res) {\n    objectStore.openCursor().onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        var msgObk = cursor.value;\n        if (msgObk.time < olderThen) {\n          ret.push(msgObk);\n          //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n          cursor[\"continue\"]();\n        } else {\n          // no more old messages,\n          commitIndexedDBTransaction(tx);\n          res(ret);\n        }\n      } else {\n        res(ret);\n      }\n    };\n  });\n}\nexport function cleanOldMessages(channelState) {\n  return getOldMessages(channelState.db, channelState.options.idb.ttl).then(function (tooOld) {\n    return removeMessagesById(channelState, tooOld.map(function (msg) {\n      return msg.id;\n    }));\n  });\n}\nexport function create(channelName, options) {\n  options = fillOptionsWithDefaults(options);\n  return createDatabase(channelName).then(function (db) {\n    var state = {\n      closed: false,\n      lastCursorId: 0,\n      channelName: channelName,\n      options: options,\n      uuid: randomToken(),\n      /**\n       * emittedMessagesIds\n       * contains all messages that have been emitted before\n       * @type {ObliviousSet}\n       */\n      eMIs: new ObliviousSet(options.idb.ttl * 2),\n      // ensures we do not read messages in parallel\n      writeBlockPromise: PROMISE_RESOLVED_VOID,\n      messagesCallback: null,\n      readQueuePromises: [],\n      db: db\n    };\n\n    /**\n     * Handle abrupt closes that do not originate from db.close().\n     * This could happen, for example, if the underlying storage is\n     * removed or if the user clears the database in the browser's\n     * history preferences.\n     */\n    db.onclose = function () {\n      state.closed = true;\n      if (options.idb.onclose) options.idb.onclose();\n    };\n\n    /**\n     * if service-workers are used,\n     * we have no 'storage'-event if they post a message,\n     * therefore we also have to set an interval\n     */\n    _readLoop(state);\n    return state;\n  });\n}\nfunction _readLoop(state) {\n  if (state.closed) return;\n  readNewMessages(state).then(function () {\n    return sleep(state.options.idb.fallbackInterval);\n  }).then(function () {\n    return _readLoop(state);\n  });\n}\nfunction _filterMessage(msgObj, state) {\n  if (msgObj.uuid === state.uuid) return false; // send by own\n  if (state.eMIs.has(msgObj.id)) return false; // already emitted\n  if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n  return true;\n}\n\n/**\n * reads all new messages from the database and emits them\n */\nfunction readNewMessages(state) {\n  // channel already closed\n  if (state.closed) return PROMISE_RESOLVED_VOID;\n\n  // if no one is listening, we do not need to scan for new messages\n  if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n  return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n    var useMessages = newerMessages\n    /**\n     * there is a bug in iOS where the msgObj can be undefined sometimes\n     * so we filter them out\n     * @link https://github.com/pubkey/broadcast-channel/issues/19\n     */.filter(function (msgObj) {\n      return !!msgObj;\n    }).map(function (msgObj) {\n      if (msgObj.id > state.lastCursorId) {\n        state.lastCursorId = msgObj.id;\n      }\n      return msgObj;\n    }).filter(function (msgObj) {\n      return _filterMessage(msgObj, state);\n    }).sort(function (msgObjA, msgObjB) {\n      return msgObjA.time - msgObjB.time;\n    }); // sort by time\n    useMessages.forEach(function (msgObj) {\n      if (state.messagesCallback) {\n        state.eMIs.add(msgObj.id);\n        state.messagesCallback(msgObj.data);\n      }\n    });\n    return PROMISE_RESOLVED_VOID;\n  });\n}\nexport function close(channelState) {\n  channelState.closed = true;\n  channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n  channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n    return writeMessage(channelState.db, channelState.uuid, messageJson);\n  }).then(function () {\n    if (randomInt(0, 10) === 0) {\n      /* await (do not await) */\n      cleanOldMessages(channelState);\n    }\n  });\n  return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n  channelState.messagesCallbackTime = time;\n  channelState.messagesCallback = fn;\n  readNewMessages(channelState);\n}\nexport function canBeUsed() {\n  return !!getIdb();\n}\nexport function averageResponseTime(options) {\n  return options.idb.fallbackInterval * 2;\n}\nexport var IndexedDBMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside webworkers because they have no access to localstorage\n * This is basically implemented to support IE9 or your grandmother's toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\n\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\nexport function getLocalStorage() {\n  var localStorage;\n  if (typeof window === 'undefined') return null;\n  try {\n    localStorage = window.localStorage;\n    localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n  } catch (e) {\n    // New versions of Firefox throw a Security exception\n    // if cookies are disabled. See\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n  }\n  return localStorage;\n}\nexport function storageKey(channelName) {\n  return KEY_PREFIX + channelName;\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage(channelState, messageJson) {\n  return new Promise(function (res) {\n    sleep().then(function () {\n      var key = storageKey(channelState.channelName);\n      var writeObj = {\n        token: randomToken(),\n        time: new Date().getTime(),\n        data: messageJson,\n        uuid: channelState.uuid\n      };\n      var value = JSON.stringify(writeObj);\n      getLocalStorage().setItem(key, value);\n\n      /**\n       * StorageEvent does not fire the 'storage' event\n       * in the window that changes the state of the local storage.\n       * So we fire it manually\n       */\n      var ev = document.createEvent('Event');\n      ev.initEvent('storage', true, true);\n      ev.key = key;\n      ev.newValue = value;\n      window.dispatchEvent(ev);\n      res();\n    });\n  });\n}\nexport function addStorageEventListener(channelName, fn) {\n  var key = storageKey(channelName);\n  var listener = function listener(ev) {\n    if (ev.key === key) {\n      fn(JSON.parse(ev.newValue));\n    }\n  };\n  window.addEventListener('storage', listener);\n  return listener;\n}\nexport function removeStorageEventListener(listener) {\n  window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n  options = fillOptionsWithDefaults(options);\n  if (!canBeUsed()) {\n    throw new Error('BroadcastChannel: localstorage cannot be used');\n  }\n  var uuid = randomToken();\n\n  /**\n   * eMIs\n   * contains all messages that have been emitted before\n   * @type {ObliviousSet}\n   */\n  var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n  var state = {\n    channelName: channelName,\n    uuid: uuid,\n    eMIs: eMIs // emittedMessagesIds\n  };\n\n  state.listener = addStorageEventListener(channelName, function (msgObj) {\n    if (!state.messagesCallback) return; // no listener\n    if (msgObj.uuid === uuid) return; // own message\n    if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n    if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n    eMIs.add(msgObj.token);\n    state.messagesCallback(msgObj.data);\n  });\n  return state;\n}\nexport function close(channelState) {\n  removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n  channelState.messagesCallbackTime = time;\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  var ls = getLocalStorage();\n  if (!ls) return false;\n  try {\n    var key = '__broadcastchannel_check';\n    ls.setItem(key, 'works');\n    ls.removeItem(key);\n  } catch (e) {\n    // Safari 10 in private mode will not allow write access to local\n    // storage and fail with a QuotaExceededError. See\n    // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n    return false;\n  }\n  return true;\n}\nexport function averageResponseTime() {\n  var defaultTime = 120;\n  var userAgent = navigator.userAgent.toLowerCase();\n  if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n    // safari is much slower so this time is higher\n    return defaultTime * 2;\n  }\n  return defaultTime;\n}\nexport var LocalstorageMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n  var state = {\n    name: channelName,\n    messagesCallback: null\n  };\n  SIMULATE_CHANNELS.add(state);\n  return state;\n}\nexport function close(channelState) {\n  SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n  return new Promise(function (res) {\n    return setTimeout(function () {\n      var channelArray = Array.from(SIMULATE_CHANNELS);\n      channelArray.filter(function (channel) {\n        return channel.name === channelState.name;\n      }).filter(function (channel) {\n        return channel !== channelState;\n      }).filter(function (channel) {\n        return !!channel.messagesCallback;\n      }).forEach(function (channel) {\n        return channel.messagesCallback(messageJson);\n      });\n      res();\n    }, 5);\n  });\n}\nexport function onMessage(channelState, fn) {\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  return true;\n}\nexport function averageResponseTime() {\n  return 5;\n}\nexport var SimulateMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","import { NativeMethod } from './methods/native.js';\nimport { IndexedDBMethod } from './methods/indexed-db.js';\nimport { LocalstorageMethod } from './methods/localstorage.js';\nimport { SimulateMethod } from './methods/simulate.js';\n// the line below will be removed from es5/browser builds\n\n// order is important\nvar METHODS = [NativeMethod,\n// fastest\nIndexedDBMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n  var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean);\n\n  // the line below will be removed from es5/browser builds\n\n  // directly chosen\n  if (options.type) {\n    if (options.type === 'simulate') {\n      // only use simulate-method if directly chosen\n      return SimulateMethod;\n    }\n    var ret = chooseMethods.find(function (m) {\n      return m.type === options.type;\n    });\n    if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n  }\n\n  /**\n   * if no webworker support is needed,\n   * remove idb from the list so that localstorage will be chosen\n   */\n  if (!options.webWorkerSupport) {\n    chooseMethods = chooseMethods.filter(function (m) {\n      return m.type !== 'idb';\n    });\n  }\n  var useMethod = chooseMethods.find(function (method) {\n    return method.canBeUsed();\n  });\n  if (!useMethod) {\n    throw new Error(\"No usable method found in \" + JSON.stringify(METHODS.map(function (m) {\n      return m.type;\n    })));\n  } else {\n    return useMethod;\n  }\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n  // identifier of the channel to debug stuff\n  this.id = lastId++;\n  OPEN_BROADCAST_CHANNELS.add(this);\n  this.name = name;\n  if (ENFORCED_OPTIONS) {\n    options = ENFORCED_OPTIONS;\n  }\n  this.options = fillOptionsWithDefaults(options);\n  this.method = chooseMethod(this.options);\n\n  // isListening\n  this._iL = false;\n\n  /**\n   * _onMessageListener\n   * setting onmessage twice,\n   * will overwrite the first listener\n   */\n  this._onML = null;\n\n  /**\n   * _addEventListeners\n   */\n  this._addEL = {\n    message: [],\n    internal: []\n  };\n\n  /**\n   * Unsent message promises\n   * where the sending is still in progress\n   * @type {Set<Promise>}\n   */\n  this._uMP = new Set();\n\n  /**\n   * _beforeClose\n   * array of promises that will be awaited\n   * before the channel is closed\n   */\n  this._befC = [];\n\n  /**\n   * _preparePromise\n   */\n  this._prepP = null;\n  _prepareChannel(this);\n};\n\n// STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\nBroadcastChannel._pubkey = true;\n\n/**\n * clears the tmp-folder if is node\n * @return {Promise<boolean>} true if has run, false if not node\n */\nexport function clearNodeFolder(options) {\n  options = fillOptionsWithDefaults(options);\n  var method = chooseMethod(options);\n  if (method.type === 'node') {\n    return method.clearNodeFolder().then(function () {\n      return true;\n    });\n  } else {\n    return PROMISE_RESOLVED_FALSE;\n  }\n}\n\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n  ENFORCED_OPTIONS = options;\n}\n\n// PROTOTYPE\nBroadcastChannel.prototype = {\n  postMessage: function postMessage(msg) {\n    if (this.closed) {\n      throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n      /**\n       * In the past when this error appeared, it was really hard to debug.\n       * So now we log the msg together with the error so it at least\n       * gives some clue about where in your application this happens.\n       */\n      JSON.stringify(msg));\n    }\n    return _post(this, 'message', msg);\n  },\n  postInternal: function postInternal(msg) {\n    return _post(this, 'internal', msg);\n  },\n  set onmessage(fn) {\n    var time = this.method.microSeconds();\n    var listenObj = {\n      time: time,\n      fn: fn\n    };\n    _removeListenerObject(this, 'message', this._onML);\n    if (fn && typeof fn === 'function') {\n      this._onML = listenObj;\n      _addListenerObject(this, 'message', listenObj);\n    } else {\n      this._onML = null;\n    }\n  },\n  addEventListener: function addEventListener(type, fn) {\n    var time = this.method.microSeconds();\n    var listenObj = {\n      time: time,\n      fn: fn\n    };\n    _addListenerObject(this, type, listenObj);\n  },\n  removeEventListener: function removeEventListener(type, fn) {\n    var obj = this._addEL[type].find(function (obj) {\n      return obj.fn === fn;\n    });\n    _removeListenerObject(this, type, obj);\n  },\n  close: function close() {\n    var _this = this;\n    if (this.closed) {\n      return;\n    }\n    OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n    this.closed = true;\n    var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n    this._onML = null;\n    this._addEL.message = [];\n    return awaitPrepare\n    // wait until all current sending are processed\n    .then(function () {\n      return Promise.all(Array.from(_this._uMP));\n    })\n    // run before-close hooks\n    .then(function () {\n      return Promise.all(_this._befC.map(function (fn) {\n        return fn();\n      }));\n    })\n    // close the channel\n    .then(function () {\n      return _this.method.close(_this._state);\n    });\n  },\n  get type() {\n    return this.method.type;\n  },\n  get isClosed() {\n    return this.closed;\n  }\n};\n\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\nfunction _post(broadcastChannel, type, msg) {\n  var time = broadcastChannel.method.microSeconds();\n  var msgObj = {\n    time: time,\n    type: type,\n    data: msg\n  };\n  var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n  return awaitPrepare.then(function () {\n    var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n\n    // add/remove to unsent messages list\n    broadcastChannel._uMP.add(sendPromise);\n    sendPromise[\"catch\"]().then(function () {\n      return broadcastChannel._uMP[\"delete\"](sendPromise);\n    });\n    return sendPromise;\n  });\n}\nfunction _prepareChannel(channel) {\n  var maybePromise = channel.method.create(channel.name, channel.options);\n  if (isPromise(maybePromise)) {\n    channel._prepP = maybePromise;\n    maybePromise.then(function (s) {\n      // used in tests to simulate slow runtime\n      /*if (channel.options.prepareDelay) {\n           await new Promise(res => setTimeout(res, this.options.prepareDelay));\n      }*/\n      channel._state = s;\n    });\n  } else {\n    channel._state = maybePromise;\n  }\n}\nfunction _hasMessageListeners(channel) {\n  if (channel._addEL.message.length > 0) return true;\n  if (channel._addEL.internal.length > 0) return true;\n  return false;\n}\nfunction _addListenerObject(channel, type, obj) {\n  channel._addEL[type].push(obj);\n  _startListening(channel);\n}\nfunction _removeListenerObject(channel, type, obj) {\n  channel._addEL[type] = channel._addEL[type].filter(function (o) {\n    return o !== obj;\n  });\n  _stopListening(channel);\n}\nfunction _startListening(channel) {\n  if (!channel._iL && _hasMessageListeners(channel)) {\n    // someone is listening, start subscribing\n\n    var listenerFn = function listenerFn(msgObj) {\n      channel._addEL[msgObj.type].forEach(function (listenerObject) {\n        /**\n         * Getting the current time in JavaScript has no good precision.\n         * So instead of only listening to events that happened 'after' the listener\n         * was added, we also listen to events that happened 100ms before it.\n         * This ensures that when another process, like a WebWorker, sends events\n         * we do not miss them out because their timestamp is a bit off compared to the main process.\n         * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n         * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n         */\n        var hundredMsInMicro = 100 * 1000;\n        var minMessageTime = listenerObject.time - hundredMsInMicro;\n        if (msgObj.time >= minMessageTime) {\n          listenerObject.fn(msgObj.data);\n        }\n      });\n    };\n    var time = channel.method.microSeconds();\n    if (channel._prepP) {\n      channel._prepP.then(function () {\n        channel._iL = true;\n        channel.method.onMessage(channel._state, listenerFn, time);\n      });\n    } else {\n      channel._iL = true;\n      channel.method.onMessage(channel._state, listenerFn, time);\n    }\n  }\n}\nfunction _stopListening(channel) {\n  if (channel._iL && !_hasMessageListeners(channel)) {\n    // no one is listening, stop subscribing\n    channel._iL = false;\n    var time = channel.method.microSeconds();\n    channel.method.onMessage(channel._state, null, time);\n  }\n}","import { addBrowser } from './browser.js';\nimport { addNode } from './node.js';\n\n/**\n * Use the code directly to prevent import problems\n * with the detect-node package.\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\nvar isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar USE_METHOD = isNode ? addNode : addBrowser;\nvar LISTENERS = new Set();\nvar startedListening = false;\nfunction startListening() {\n  if (startedListening) {\n    return;\n  }\n  startedListening = true;\n  USE_METHOD(runAll);\n}\nexport function add(fn) {\n  startListening();\n  if (typeof fn !== 'function') {\n    throw new Error('Listener is no function');\n  }\n  LISTENERS.add(fn);\n  var addReturn = {\n    remove: function remove() {\n      return LISTENERS[\"delete\"](fn);\n    },\n    run: function run() {\n      LISTENERS[\"delete\"](fn);\n      return fn();\n    }\n  };\n  return addReturn;\n}\nexport function runAll() {\n  var promises = [];\n  LISTENERS.forEach(function (fn) {\n    promises.push(fn());\n    LISTENERS[\"delete\"](fn);\n  });\n  return Promise.all(promises);\n}\nexport function removeAll() {\n  LISTENERS.clear();\n}\nexport function getSize() {\n  return LISTENERS.size;\n}","export function addNode(fn) {\n  process.on('exit', function () {\n    return fn();\n  });\n\n  /**\n   * on the following events,\n   * the process will not end if there are\n   * event-handlers attached,\n   * therefore we have to call process.exit()\n   */\n  process.on('beforeExit', function () {\n    return fn().then(function () {\n      return process.exit();\n    });\n  });\n  // catches ctrl+c event\n  process.on('SIGINT', function () {\n    return fn().then(function () {\n      return process.exit();\n    });\n  });\n  // catches uncaught exceptions\n  process.on('uncaughtException', function (err) {\n    return fn().then(function () {\n      console.trace(err);\n      process.exit(101);\n    });\n  });\n}","/* global WorkerGlobalScope */\n\nexport function addBrowser(fn) {\n  if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {\n    /**\n     * Because killing a worker does directly stop the excution\n     * of the code, our only chance is to overwrite the close function\n     * which could work some times.\n     * @link https://stackoverflow.com/q/72903255/3443137\n     */\n    var oldClose = self.close.bind(self);\n    self.close = function () {\n      fn();\n      return oldClose();\n    };\n  } else {\n    /**\n     * if we are on react-native, there is no window.addEventListener\n     * @link https://github.com/pubkey/unload/issues/6\n     */\n    if (typeof window.addEventListener !== 'function') {\n      return;\n    }\n\n    /**\n     * for normal browser-windows, we use the beforeunload-event\n     */\n    window.addEventListener('beforeunload', function () {\n      fn();\n    }, true);\n\n    /**\n     * for iframes, we have to use the unload-event\n     * @link https://stackoverflow.com/q/47533670/3443137\n     */\n    window.addEventListener('unload', function () {\n      fn();\n    }, true);\n  }\n\n  /**\n   * TODO add fallback for safari-mobile\n   * @link https://stackoverflow.com/a/26193516/3443137\n   */\n}","import { add as unloadAdd } from 'unload';\n\n/**\n * sends and internal message over the broadcast-channel\n */\nexport function sendLeaderMessage(leaderElector, action) {\n  var msgJson = {\n    context: 'leader',\n    action: action,\n    token: leaderElector.token\n  };\n  return leaderElector.broadcastChannel.postInternal(msgJson);\n}\nexport function beLeader(leaderElector) {\n  leaderElector.isLeader = true;\n  leaderElector._hasLeader = true;\n  var unloadFn = unloadAdd(function () {\n    return leaderElector.die();\n  });\n  leaderElector._unl.push(unloadFn);\n  var isLeaderListener = function isLeaderListener(msg) {\n    if (msg.context === 'leader' && msg.action === 'apply') {\n      sendLeaderMessage(leaderElector, 'tell');\n    }\n    if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n      /**\n       * another instance is also leader!\n       * This can happen on rare events\n       * like when the CPU is at 100% for long time\n       * or the tabs are open very long and the browser throttles them.\n       * @link https://github.com/pubkey/broadcast-channel/issues/414\n       * @link https://github.com/pubkey/broadcast-channel/issues/385\n       */\n      leaderElector._dpLC = true;\n      leaderElector._dpL(); // message the lib user so the app can handle the problem\n      sendLeaderMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n    }\n  };\n\n  leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n  leaderElector._lstns.push(isLeaderListener);\n  return sendLeaderMessage(leaderElector, 'tell');\n}","import { randomToken } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\n\n/**\n * A faster version of the leader elector that uses the WebLock API\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport var LeaderElectionWebLock = function LeaderElectionWebLock(broadcastChannel, options) {\n  var _this = this;\n  this.broadcastChannel = broadcastChannel;\n  broadcastChannel._befC.push(function () {\n    return _this.die();\n  });\n  this._options = options;\n  this.isLeader = false;\n  this.isDead = false;\n  this.token = randomToken();\n  this._lstns = [];\n  this._unl = [];\n  this._dpL = function () {}; // onduplicate listener\n  this._dpLC = false; // true when onduplicate called\n\n  this._wKMC = {}; // stuff for cleanup\n\n  // lock name\n  this.lN = 'pubkey-bc||' + broadcastChannel.method.type + '||' + broadcastChannel.name;\n};\nLeaderElectionWebLock.prototype = {\n  hasLeader: function hasLeader() {\n    var _this2 = this;\n    return navigator.locks.query().then(function (locks) {\n      var relevantLocks = locks.held ? locks.held.filter(function (lock) {\n        return lock.name === _this2.lN;\n      }) : [];\n      if (relevantLocks && relevantLocks.length > 0) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n  awaitLeadership: function awaitLeadership() {\n    var _this3 = this;\n    if (!this._wLMP) {\n      this._wKMC.c = new AbortController();\n      var returnPromise = new Promise(function (res, rej) {\n        _this3._wKMC.res = res;\n        _this3._wKMC.rej = rej;\n      });\n      this._wLMP = new Promise(function (res) {\n        navigator.locks.request(_this3.lN, {\n          signal: _this3._wKMC.c.signal\n        }, function () {\n          // if the lock resolved, we can drop the abort controller\n          _this3._wKMC.c = undefined;\n          beLeader(_this3);\n          res();\n          return returnPromise;\n        })[\"catch\"](function () {});\n      });\n    }\n    return this._wLMP;\n  },\n  set onduplicate(_fn) {\n    // Do nothing because there are no duplicates in the WebLock version\n  },\n  die: function die() {\n    var _this4 = this;\n    this._lstns.forEach(function (listener) {\n      return _this4.broadcastChannel.removeEventListener('internal', listener);\n    });\n    this._lstns = [];\n    this._unl.forEach(function (uFn) {\n      return uFn.remove();\n    });\n    this._unl = [];\n    if (this.isLeader) {\n      this.isLeader = false;\n    }\n    this.isDead = true;\n    if (this._wKMC.res) {\n      this._wKMC.res();\n    }\n    if (this._wKMC.c) {\n      this._wKMC.c.abort('LeaderElectionWebLock.die() called');\n    }\n    return sendLeaderMessage(this, 'death');\n  }\n};","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE, supportsWebLockAPI } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\nimport { LeaderElectionWebLock } from './leader-election-web-lock.js';\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n  var _this = this;\n  this.broadcastChannel = broadcastChannel;\n  this._options = options;\n  this.isLeader = false;\n  this._hasLeader = false;\n  this.isDead = false;\n  this.token = randomToken();\n\n  /**\n   * Apply Queue,\n   * used to ensure we do not run applyOnce()\n   * in parallel.\n   */\n  this._aplQ = PROMISE_RESOLVED_VOID;\n  // amount of unfinished applyOnce() calls\n  this._aplQC = 0;\n\n  // things to clean up\n  this._unl = []; // _unloads\n  this._lstns = []; // _listeners\n  this._dpL = function () {}; // onduplicate listener\n  this._dpLC = false; // true when onduplicate called\n\n  /**\n   * Even when the own instance is not applying,\n   * we still listen to messages to ensure the hasLeader flag\n   * is set correctly.\n   */\n  var hasLeaderListener = function hasLeaderListener(msg) {\n    if (msg.context === 'leader') {\n      if (msg.action === 'death') {\n        _this._hasLeader = false;\n      }\n      if (msg.action === 'tell') {\n        _this._hasLeader = true;\n      }\n    }\n  };\n  this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n  this._lstns.push(hasLeaderListener);\n};\nLeaderElection.prototype = {\n  hasLeader: function hasLeader() {\n    return Promise.resolve(this._hasLeader);\n  },\n  /**\n   * Returns true if the instance is leader,\n   * false if not.\n   * @async\n   */\n  applyOnce: function applyOnce(\n  // true if the applyOnce() call came from the fallbackInterval cycle\n  isFromFallbackInterval) {\n    var _this2 = this;\n    if (this.isLeader) {\n      return sleep(0, true);\n    }\n    if (this.isDead) {\n      return sleep(0, false);\n    }\n\n    /**\n     * Already applying more than once,\n     * -> wait for the apply queue to be finished.\n     */\n    if (this._aplQC > 1) {\n      return this._aplQ;\n    }\n\n    /**\n     * Add a new apply-run\n     */\n    var applyRun = function applyRun() {\n      /**\n       * Optimization shortcuts.\n       * Directly return if a previous run\n       * has already elected a leader.\n       */\n      if (_this2.isLeader) {\n        return PROMISE_RESOLVED_TRUE;\n      }\n      var stopCriteria = false;\n      var stopCriteriaPromiseResolve;\n      /**\n       * Resolves when a stop criteria is reached.\n       * Uses as a performance shortcut so we do not\n       * have to await the responseTime when it is already clear\n       * that the election failed.\n       */\n      var stopCriteriaPromise = new Promise(function (res) {\n        stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n          stopCriteria = true;\n          res();\n        };\n      });\n      var handleMessage = function handleMessage(msg) {\n        if (msg.context === 'leader' && msg.token != _this2.token) {\n          if (msg.action === 'apply') {\n            // other is applying\n            if (msg.token > _this2.token) {\n              /**\n               * other has higher token\n               * -> stop applying and let other become leader.\n               */\n              stopCriteriaPromiseResolve();\n            }\n          }\n          if (msg.action === 'tell') {\n            // other is already leader\n            stopCriteriaPromiseResolve();\n            _this2._hasLeader = true;\n          }\n        }\n      };\n      _this2.broadcastChannel.addEventListener('internal', handleMessage);\n\n      /**\n       * If the applyOnce() call came from the fallbackInterval,\n       * we can assume that the election runs in the background and\n       * not critical process is waiting for it.\n       * When this is true, we give the other instances\n       * more time to answer to messages in the election cycle.\n       * This makes it less likely to elect duplicate leaders.\n       * But also it takes longer which is not a problem because we anyway\n       * run in the background.\n       */\n      var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n      return sendLeaderMessage(_this2, 'apply') // send out that this one is applying\n      .then(function () {\n        return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n          return Promise.reject(new Error());\n        })]);\n      })\n      // send again in case another instance was just created\n      .then(function () {\n        return sendLeaderMessage(_this2, 'apply');\n      })\n      // let others time to respond\n      .then(function () {\n        return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n          return Promise.reject(new Error());\n        })]);\n      })[\"catch\"](function () {}).then(function () {\n        _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n        if (!stopCriteria) {\n          // no stop criteria -> own is leader\n          return beLeader(_this2).then(function () {\n            return true;\n          });\n        } else {\n          // other is leader\n          return false;\n        }\n      });\n    };\n    this._aplQC = this._aplQC + 1;\n    this._aplQ = this._aplQ.then(function () {\n      return applyRun();\n    }).then(function () {\n      _this2._aplQC = _this2._aplQC - 1;\n    });\n    return this._aplQ.then(function () {\n      return _this2.isLeader;\n    });\n  },\n  awaitLeadership: function awaitLeadership() {\n    if ( /* _awaitLeadershipPromise */\n    !this._aLP) {\n      this._aLP = _awaitLeadershipOnce(this);\n    }\n    return this._aLP;\n  },\n  set onduplicate(fn) {\n    this._dpL = fn;\n  },\n  die: function die() {\n    var _this3 = this;\n    this._lstns.forEach(function (listener) {\n      return _this3.broadcastChannel.removeEventListener('internal', listener);\n    });\n    this._lstns = [];\n    this._unl.forEach(function (uFn) {\n      return uFn.remove();\n    });\n    this._unl = [];\n    if (this.isLeader) {\n      this._hasLeader = false;\n      this.isLeader = false;\n    }\n    this.isDead = true;\n    return sendLeaderMessage(this, 'death');\n  }\n};\n\n/**\n * @param leaderElector {LeaderElector}\n */\nfunction _awaitLeadershipOnce(leaderElector) {\n  if (leaderElector.isLeader) {\n    return PROMISE_RESOLVED_VOID;\n  }\n  return new Promise(function (res) {\n    var resolved = false;\n    function finish() {\n      if (resolved) {\n        return;\n      }\n      resolved = true;\n      leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n      res(true);\n    }\n\n    // try once now\n    leaderElector.applyOnce().then(function () {\n      if (leaderElector.isLeader) {\n        finish();\n      }\n    });\n\n    /**\n     * Try on fallbackInterval\n     * @recursive\n     */\n    var tryOnFallBack = function tryOnFallBack() {\n      return sleep(leaderElector._options.fallbackInterval).then(function () {\n        if (leaderElector.isDead || resolved) {\n          return;\n        }\n        if (leaderElector.isLeader) {\n          finish();\n        } else {\n          return leaderElector.applyOnce(true).then(function () {\n            if (leaderElector.isLeader) {\n              finish();\n            } else {\n              tryOnFallBack();\n            }\n          });\n        }\n      });\n    };\n    tryOnFallBack();\n\n    // try when other leader dies\n    var whenDeathListener = function whenDeathListener(msg) {\n      if (msg.context === 'leader' && msg.action === 'death') {\n        leaderElector._hasLeader = false;\n        leaderElector.applyOnce().then(function () {\n          if (leaderElector.isLeader) {\n            finish();\n          }\n        });\n      }\n    };\n    leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n    leaderElector._lstns.push(whenDeathListener);\n  });\n}\nfunction fillOptionsWithDefaults(options, channel) {\n  if (!options) options = {};\n  options = JSON.parse(JSON.stringify(options));\n  if (!options.fallbackInterval) {\n    options.fallbackInterval = 3000;\n  }\n  if (!options.responseTime) {\n    options.responseTime = channel.method.averageResponseTime(channel.options);\n  }\n  return options;\n}\nexport function createLeaderElection(channel, options) {\n  if (channel._leaderElector) {\n    throw new Error('BroadcastChannel already has a leader-elector');\n  }\n  options = fillOptionsWithDefaults(options, channel);\n  var elector = supportsWebLockAPI() ? new LeaderElectionWebLock(channel, options) : new LeaderElection(channel, options);\n  channel._befC.push(function () {\n    return elector.die();\n  });\n  channel._leaderElector = elector;\n  return elector;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { BroadcastChannel } from 'broadcast-channel';\nimport { isBrowser } from '../features.js';\nimport '../oidc/types/Token.js';\nimport { EVENT_ADDED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE } from '../oidc/types/TokenManager.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\n\nclass SyncStorageService {\n    constructor(tokenManager, options = {}) {\n        this.started = false;\n        this.enablePostMessage = true;\n        this.tokenManager = tokenManager;\n        this.options = options;\n        this.onTokenAddedHandler = this.onTokenAddedHandler.bind(this);\n        this.onTokenRemovedHandler = this.onTokenRemovedHandler.bind(this);\n        this.onTokenRenewedHandler = this.onTokenRenewedHandler.bind(this);\n        this.onSetStorageHandler = this.onSetStorageHandler.bind(this);\n        this.onSyncMessageHandler = this.onSyncMessageHandler.bind(this);\n    }\n    requiresLeadership() {\n        return false;\n    }\n    isStarted() {\n        return this.started;\n    }\n    canStart() {\n        return !!this.options.syncStorage && isBrowser() && !this.started;\n    }\n    async start() {\n        if (!this.canStart()) {\n            return;\n        }\n        const { syncChannelName } = this.options;\n        try {\n            this.channel = new BroadcastChannel(syncChannelName);\n        }\n        catch (err) {\n            throw new AuthSdkError('SyncStorageService is not supported in current browser.');\n        }\n        this.tokenManager.on(EVENT_ADDED, this.onTokenAddedHandler);\n        this.tokenManager.on(EVENT_REMOVED, this.onTokenRemovedHandler);\n        this.tokenManager.on(EVENT_RENEWED, this.onTokenRenewedHandler);\n        this.tokenManager.on(EVENT_SET_STORAGE, this.onSetStorageHandler);\n        this.channel.addEventListener('message', this.onSyncMessageHandler);\n        this.started = true;\n    }\n    async stop() {\n        var _a, _b;\n        if (this.started) {\n            this.tokenManager.off(EVENT_ADDED, this.onTokenAddedHandler);\n            this.tokenManager.off(EVENT_REMOVED, this.onTokenRemovedHandler);\n            this.tokenManager.off(EVENT_RENEWED, this.onTokenRenewedHandler);\n            this.tokenManager.off(EVENT_SET_STORAGE, this.onSetStorageHandler);\n            (_a = this.channel) === null || _a === void 0 ? void 0 : _a.removeEventListener('message', this.onSyncMessageHandler);\n            await ((_b = this.channel) === null || _b === void 0 ? void 0 : _b.close());\n            this.channel = undefined;\n            this.started = false;\n        }\n    }\n    onTokenAddedHandler(key, token) {\n        var _a;\n        if (!this.enablePostMessage) {\n            return;\n        }\n        (_a = this.channel) === null || _a === void 0 ? void 0 : _a.postMessage({\n            type: EVENT_ADDED,\n            key,\n            token\n        });\n    }\n    onTokenRemovedHandler(key, token) {\n        var _a;\n        if (!this.enablePostMessage) {\n            return;\n        }\n        (_a = this.channel) === null || _a === void 0 ? void 0 : _a.postMessage({\n            type: EVENT_REMOVED,\n            key,\n            token\n        });\n    }\n    onTokenRenewedHandler(key, token, oldToken) {\n        var _a;\n        if (!this.enablePostMessage) {\n            return;\n        }\n        (_a = this.channel) === null || _a === void 0 ? void 0 : _a.postMessage({\n            type: EVENT_RENEWED,\n            key,\n            token,\n            oldToken\n        });\n    }\n    onSetStorageHandler(storage) {\n        var _a;\n        (_a = this.channel) === null || _a === void 0 ? void 0 : _a.postMessage({\n            type: EVENT_SET_STORAGE,\n            storage\n        });\n    }\n    onSyncMessageHandler(msg) {\n        this.enablePostMessage = false;\n        switch (msg.type) {\n            case EVENT_SET_STORAGE:\n                this.tokenManager.getStorage().setStorage(msg.storage);\n                break;\n            case EVENT_ADDED:\n                this.tokenManager.emitAdded(msg.key, msg.token);\n                this.tokenManager.setExpireEventTimeout(msg.key, msg.token);\n                break;\n            case EVENT_REMOVED:\n                this.tokenManager.clearExpireEventTimeout(msg.key);\n                this.tokenManager.emitRemoved(msg.key, msg.token);\n                break;\n            case EVENT_RENEWED:\n                this.tokenManager.emitRenewed(msg.key, msg.token, msg.oldToken);\n                break;\n        }\n        this.enablePostMessage = true;\n    }\n}\n\nexport { SyncStorageService };\n//# sourceMappingURL=SyncStorageService.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { BroadcastChannel, createLeaderElection } from 'broadcast-channel';\nimport { isBrowser } from '../features.js';\n\nclass LeaderElectionService {\n    constructor(options = {}) {\n        this.started = false;\n        this.options = options;\n        this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n        this.onLeader = this.onLeader.bind(this);\n    }\n    onLeaderDuplicate() {\n    }\n    async onLeader() {\n        var _a, _b;\n        await ((_b = (_a = this.options).onLeader) === null || _b === void 0 ? void 0 : _b.call(_a));\n    }\n    isLeader() {\n        var _a;\n        return !!((_a = this.elector) === null || _a === void 0 ? void 0 : _a.isLeader);\n    }\n    hasLeader() {\n        var _a;\n        return !!((_a = this.elector) === null || _a === void 0 ? void 0 : _a.hasLeader);\n    }\n    async start() {\n        if (this.canStart()) {\n            const { electionChannelName } = this.options;\n            this.channel = new BroadcastChannel(electionChannelName);\n            this.elector = createLeaderElection(this.channel);\n            this.elector.onduplicate = this.onLeaderDuplicate;\n            this.elector.awaitLeadership().then(this.onLeader);\n            this.started = true;\n        }\n    }\n    async stop() {\n        if (this.started) {\n            if (this.elector) {\n                await this.elector.die();\n                this.elector = undefined;\n            }\n            if (this.channel) {\n                this.channel.postInternal = () => Promise.resolve();\n                await this.channel.close();\n                this.channel = undefined;\n            }\n            this.started = false;\n        }\n    }\n    requiresLeadership() {\n        return false;\n    }\n    isStarted() {\n        return this.started;\n    }\n    canStart() {\n        return isBrowser() && !this.started;\n    }\n}\n\nexport { LeaderElectionService };\n//# sourceMappingURL=LeaderElectionService.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isBrowser } from '../features.js';\n\nconst getNow = () => Math.floor(Date.now() / 1000);\nclass RenewOnTabActivationService {\n    constructor(tokenManager, options = {}) {\n        this.started = false;\n        this.lastHidden = -1;\n        this.tokenManager = tokenManager;\n        this.options = options;\n        this.onPageVisbilityChange = this._onPageVisbilityChange.bind(this);\n    }\n    _onPageVisbilityChange() {\n        if (document.hidden) {\n            this.lastHidden = getNow();\n        }\n        else if (this.lastHidden > 0 && (getNow() - this.lastHidden >= this.options.tabInactivityDuration)) {\n            const { accessToken, idToken } = this.tokenManager.getTokensSync();\n            if (!!accessToken && this.tokenManager.hasExpired(accessToken)) {\n                const key = this.tokenManager.getStorageKeyByType('accessToken');\n                this.tokenManager.renew(key).catch(() => { });\n            }\n            else if (!!idToken && this.tokenManager.hasExpired(idToken)) {\n                const key = this.tokenManager.getStorageKeyByType('idToken');\n                this.tokenManager.renew(key).catch(() => { });\n            }\n        }\n    }\n    async start() {\n        if (this.canStart() && !!document) {\n            document.addEventListener('visibilitychange', this.onPageVisbilityChange);\n            this.started = true;\n        }\n    }\n    async stop() {\n        if (document) {\n            document.removeEventListener('visibilitychange', this.onPageVisbilityChange);\n            this.started = false;\n        }\n    }\n    canStart() {\n        return isBrowser() &&\n            !!this.options.autoRenew &&\n            !!this.options.renewOnTabActivation &&\n            !this.started;\n    }\n    requiresLeadership() {\n        return false;\n    }\n    isStarted() {\n        return this.started;\n    }\n}\n\nexport { RenewOnTabActivationService };\n//# sourceMappingURL=RenewOnTabActivationService.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AutoRenewService } from '../../services/AutoRenewService.js';\nimport { SyncStorageService } from '../../services/SyncStorageService.js';\nimport { LeaderElectionService } from '../../services/LeaderElectionService.js';\nimport { RenewOnTabActivationService } from '../../services/RenewOnTabActivationService.js';\nimport { removeNils } from '../../util/object.js';\n\nconst AUTO_RENEW = 'autoRenew';\nconst SYNC_STORAGE = 'syncStorage';\nconst LEADER_ELECTION = 'leaderElection';\nconst RENEW_ON_TAB_ACTIVATION = 'renewOnTabActivation';\nclass ServiceManager {\n    constructor(sdk, options = {}) {\n        this.sdk = sdk;\n        this.onLeader = this.onLeader.bind(this);\n        const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n        options.electionChannelName = options.electionChannelName || options.broadcastChannelName;\n        this.options = Object.assign({}, ServiceManager.defaultOptions, { autoRenew, autoRemove, syncStorage }, {\n            electionChannelName: `${sdk.options.clientId}-election`,\n            syncChannelName: `${sdk.options.clientId}-sync`,\n        }, removeNils(options));\n        this.started = false;\n        this.services = new Map();\n        ServiceManager.knownServices.forEach(name => {\n            const svc = this.createService(name);\n            if (svc) {\n                this.services.set(name, svc);\n            }\n        });\n    }\n    async onLeader() {\n        if (this.started) {\n            await this.startServices();\n        }\n    }\n    isLeader() {\n        var _a;\n        return (_a = this.getService(LEADER_ELECTION)) === null || _a === void 0 ? void 0 : _a.isLeader();\n    }\n    isLeaderRequired() {\n        return [...this.services.values()].some(srv => srv.canStart() && srv.requiresLeadership());\n    }\n    async start() {\n        if (this.started) {\n            return;\n        }\n        await this.startServices();\n        this.started = true;\n    }\n    async stop() {\n        await this.stopServices();\n        this.started = false;\n    }\n    getService(name) {\n        return this.services.get(name);\n    }\n    async startServices() {\n        for (const [name, srv] of this.services.entries()) {\n            if (this.canStartService(name, srv)) {\n                await srv.start();\n            }\n        }\n    }\n    async stopServices() {\n        for (const srv of this.services.values()) {\n            await srv.stop();\n        }\n    }\n    canStartService(name, srv) {\n        let canStart = srv.canStart() && !srv.isStarted();\n        if (name === LEADER_ELECTION) {\n            canStart && (canStart = this.isLeaderRequired());\n        }\n        else if (srv.requiresLeadership()) {\n            canStart && (canStart = this.isLeader());\n        }\n        return canStart;\n    }\n    createService(name) {\n        const tokenManager = this.sdk.tokenManager;\n        let service;\n        switch (name) {\n            case LEADER_ELECTION:\n                service = new LeaderElectionService(Object.assign(Object.assign({}, this.options), { onLeader: this.onLeader }));\n                break;\n            case AUTO_RENEW:\n                service = new AutoRenewService(tokenManager, Object.assign({}, this.options));\n                break;\n            case SYNC_STORAGE:\n                service = new SyncStorageService(tokenManager, Object.assign({}, this.options));\n                break;\n            case RENEW_ON_TAB_ACTIVATION:\n                service = new RenewOnTabActivationService(tokenManager, Object.assign({}, this.options));\n                break;\n            default:\n                throw new Error(`Unknown service ${name}`);\n        }\n        return service;\n    }\n}\nServiceManager.knownServices = [AUTO_RENEW, SYNC_STORAGE, LEADER_ELECTION, RENEW_ON_TAB_ACTIVATION];\nServiceManager.defaultOptions = {\n    autoRenew: true,\n    autoRemove: true,\n    syncStorage: true,\n    renewOnTabActivation: true,\n    tabInactivityDuration: 1800,\n};\n\nexport { ServiceManager };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { omit, getLink } from '../util/object.js';\nimport { toQueryString } from '../util/url.js';\nimport '../errors/WWWAuthError.js';\nimport { get, post, httpRequest } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\n\nfunction sessionExists(sdk) {\n    return sdk.session.get()\n        .then(function (res) {\n        if (res.status === 'ACTIVE') {\n            return true;\n        }\n        return false;\n    })\n        .catch(function () {\n        return false;\n    });\n}\nfunction getSession(sdk) {\n    return get(sdk, '/api/v1/sessions/me', { withCredentials: true })\n        .then(function (session) {\n        var res = omit(session, '_links');\n        res.refresh = function () {\n            return post(sdk, getLink(session, 'refresh').href, {}, { withCredentials: true });\n        };\n        res.user = function () {\n            return get(sdk, getLink(session, 'user').href, { withCredentials: true });\n        };\n        return res;\n    })\n        .catch(function () {\n        return { status: 'INACTIVE' };\n    });\n}\nfunction closeSession(sdk) {\n    return httpRequest(sdk, {\n        url: sdk.getIssuerOrigin() + '/api/v1/sessions/me',\n        method: 'DELETE',\n        withCredentials: true\n    });\n}\nfunction refreshSession(sdk) {\n    return post(sdk, '/api/v1/sessions/me/lifecycle/refresh', {}, { withCredentials: true });\n}\nfunction setCookieAndRedirect(sdk, sessionToken, redirectUrl) {\n    redirectUrl = redirectUrl || window.location.href;\n    window.location.assign(sdk.getIssuerOrigin() + '/login/sessionCookieRedirect' +\n        toQueryString({\n            checkAccountSetupComplete: true,\n            token: sessionToken,\n            redirectUrl: redirectUrl\n        }));\n}\n\nexport { closeSession, getSession, refreshSession, sessionExists, setCookieAndRedirect };\n//# sourceMappingURL=api.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createOktaAuthBase } from '../base/factory.js';\nimport { mixinStorage } from '../storage/mixin.js';\nimport { mixinHttp } from '../http/mixin.js';\nimport { mixinOAuth } from '../oidc/mixin/index.js';\nimport { mixinCore } from './mixin.js';\nimport { mixinSession } from '../session/mixin.js';\n\nfunction createOktaAuthCore(StorageManagerConstructor, OptionsConstructor, TransactionManagerConstructor) {\n    const Base = createOktaAuthBase(OptionsConstructor);\n    const WithStorage = mixinStorage(Base, StorageManagerConstructor);\n    const WithHttp = mixinHttp(WithStorage);\n    const WithSession = mixinSession(WithHttp);\n    const WithOAuth = mixinOAuth(WithSession, TransactionManagerConstructor);\n    const Core = mixinCore(WithOAuth);\n    return Core;\n}\n\nexport { createOktaAuthCore };\n//# sourceMappingURL=factory.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { removeNils } from '../util/object.js';\nimport * as features from '../features.js';\nimport * as constants from '../constants.js';\nimport Emitter from 'tiny-emitter';\n\nfunction createOktaAuthBase(OptionsConstructor) {\n    class OktaAuthBase {\n        constructor(...args) {\n            const options = new OptionsConstructor(args.length ? args[0] || {} : {});\n            this.options = removeNils(options);\n            this.emitter = new Emitter();\n            this.features = features;\n        }\n    }\n    OktaAuthBase.features = features;\n    OktaAuthBase.constants = constants;\n    OktaAuthBase.features = OktaAuthBase.prototype.features = features;\n    Object.assign(OktaAuthBase, {\n        constants\n    });\n    return OktaAuthBase;\n}\n\nexport { createOktaAuthBase };\n//# sourceMappingURL=factory.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction mixinStorage(Base, StorageManager) {\n    return class OktaAuthStorage extends Base {\n        constructor(...args) {\n            super(...args);\n            const { storageManager, cookies, storageUtil } = this.options;\n            this.storageManager = new StorageManager(storageManager, cookies, storageUtil);\n        }\n        clearStorage() {\n        }\n    };\n}\n\nexport { mixinStorage };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaUserAgent } from './OktaUserAgent.js';\nimport { setRequestHeader } from './headers.js';\nimport { toQueryString } from '../util/url.js';\nimport { get } from './request.js';\n\nfunction mixinHttp(Base) {\n    return class OktaAuthHttp extends Base {\n        constructor(...args) {\n            super(...args);\n            this._oktaUserAgent = new OktaUserAgent();\n            this.http = {\n                setRequestHeader: setRequestHeader.bind(null, this)\n            };\n        }\n        setHeaders(headers) {\n            this.options.headers = Object.assign({}, this.options.headers, headers);\n        }\n        getIssuerOrigin() {\n            return this.options.issuer.split('/oauth2/')[0];\n        }\n        webfinger(opts) {\n            var url = '/.well-known/webfinger' + toQueryString(opts);\n            var options = {\n                headers: {\n                    'Accept': 'application/jrd+json'\n                }\n            };\n            return get(this, url, options);\n        }\n    };\n}\n\nexport { mixinHttp };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { parseOAuthResponseFromUrl } from '../oidc/parseFromUrl.js';\nimport { AuthStateManager } from './AuthStateManager.js';\nimport { ServiceManager } from './ServiceManager/browser.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\n\nfunction mixinCore(Base) {\n    return class OktaAuthCore extends Base {\n        constructor(...args) {\n            super(...args);\n            this.authStateManager = new AuthStateManager(this);\n            this.serviceManager = new ServiceManager(this, this.options.services);\n        }\n        async start() {\n            await this.serviceManager.start();\n            this.tokenManager.start();\n            if (!this.token.isLoginRedirect()) {\n                await this.authStateManager.updateAuthState();\n            }\n        }\n        async stop() {\n            this.tokenManager.stop();\n            await this.serviceManager.stop();\n        }\n        async handleRedirect(originalUri) {\n            await this.handleLoginRedirect(undefined, originalUri);\n        }\n        async handleLoginRedirect(tokens, originalUri) {\n            let state = this.options.state;\n            if (tokens) {\n                this.tokenManager.setTokens(tokens);\n                originalUri = originalUri || this.getOriginalUri(this.options.state);\n            }\n            else if (this.isLoginRedirect()) {\n                try {\n                    const oAuthResponse = await parseOAuthResponseFromUrl(this, {});\n                    state = oAuthResponse.state;\n                    originalUri = originalUri || this.getOriginalUri(state);\n                    await this.storeTokensFromRedirect();\n                }\n                catch (e) {\n                    await this.authStateManager.updateAuthState();\n                    throw e;\n                }\n            }\n            else {\n                return;\n            }\n            await this.authStateManager.updateAuthState();\n            this.removeOriginalUri(state);\n            const { restoreOriginalUri } = this.options;\n            if (restoreOriginalUri) {\n                await restoreOriginalUri(this, originalUri);\n            }\n            else if (originalUri) {\n                window.location.replace(originalUri);\n            }\n        }\n        handleIDPPopupRedirect(url = window.location.href) {\n            const res = parseOAuthResponseFromUrl(this, { responseMode: 'query', url });\n            if (res.state) {\n                const channel = new BroadcastChannel(`popup-callback:${res.state}`);\n                channel.postMessage(res);\n                channel.close();\n            }\n            else {\n                throw new AuthSdkError('Unable to parse auth code params');\n            }\n        }\n    };\n}\n\nexport { mixinCore };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../../_virtual/_tslib.js';\nimport * as index from '../../crypto/index.js';\nimport { httpRequest } from '../../http/request.js';\nimport { PromiseQueue } from '../../util/PromiseQueue.js';\nimport { isFunction } from '../../util/types.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport 'cross-fetch';\nimport PKCE from '../util/pkce.js';\nimport { createTokenAPI, createEndpoints } from '../factory/api.js';\nimport { TokenManager } from '../TokenManager.js';\nimport WWWAuthError from '../../errors/WWWAuthError.js';\nimport { getOAuthUrls } from '../util/oauth.js';\nimport { isLoginRedirect, hasResponseType } from '../util/loginRedirect.js';\nimport '../types/Token.js';\nimport { clearDPoPKeyPairAfterRevoke, clearDPoPKeyPair, findKeyPair, generateDPoPProof, clearAllDPoPKeyPairs, isDPoPNonceError } from '../dpop.js';\nimport { provideOriginalUri } from './browser.js';\n\nfunction mixinOAuth(Base, TransactionManagerConstructor) {\n    var _a;\n    const WithOriginalUri = provideOriginalUri(Base);\n    return _a = class OktaAuthOAuth extends WithOriginalUri {\n            constructor(...args) {\n                super(...args);\n                this.transactionManager = new TransactionManagerConstructor(Object.assign({\n                    storageManager: this.storageManager,\n                }, this.options.transactionManager));\n                this.pkce = {\n                    DEFAULT_CODE_CHALLENGE_METHOD: PKCE.DEFAULT_CODE_CHALLENGE_METHOD,\n                    generateVerifier: PKCE.generateVerifier,\n                    computeChallenge: PKCE.computeChallenge\n                };\n                this._pending = { handleLogin: false };\n                this._tokenQueue = new PromiseQueue();\n                this.token = createTokenAPI(this, this._tokenQueue);\n                this.tokenManager = new TokenManager(this, this.options.tokenManager);\n                this.endpoints = createEndpoints(this);\n            }\n            clearStorage() {\n                super.clearStorage();\n                this.tokenManager.clear();\n            }\n            async isAuthenticated(options = {}) {\n                const { autoRenew, autoRemove } = this.tokenManager.getOptions();\n                const shouldRenew = options.onExpiredToken ? options.onExpiredToken === 'renew' : autoRenew;\n                const shouldRemove = options.onExpiredToken ? options.onExpiredToken === 'remove' : autoRemove;\n                let { accessToken } = this.tokenManager.getTokensSync();\n                if (accessToken && this.tokenManager.hasExpired(accessToken)) {\n                    accessToken = undefined;\n                    if (shouldRenew) {\n                        try {\n                            accessToken = await this.tokenManager.renew('accessToken');\n                        }\n                        catch (_a) {\n                        }\n                    }\n                    else if (shouldRemove) {\n                        this.tokenManager.remove('accessToken');\n                    }\n                }\n                let { idToken } = this.tokenManager.getTokensSync();\n                if (idToken && this.tokenManager.hasExpired(idToken)) {\n                    idToken = undefined;\n                    if (shouldRenew) {\n                        try {\n                            idToken = await this.tokenManager.renew('idToken');\n                        }\n                        catch (_b) {\n                        }\n                    }\n                    else if (shouldRemove) {\n                        this.tokenManager.remove('idToken');\n                    }\n                }\n                return !!(accessToken && idToken);\n            }\n            async signInWithRedirect(opts = {}) {\n                const { originalUri } = opts, additionalParams = __rest(opts, [\"originalUri\"]);\n                if (this._pending.handleLogin) {\n                    return;\n                }\n                this._pending.handleLogin = true;\n                try {\n                    if (originalUri) {\n                        this.setOriginalUri(originalUri);\n                    }\n                    const params = Object.assign({\n                        scopes: this.options.scopes || ['openid', 'email', 'profile']\n                    }, additionalParams);\n                    await this.token.getWithRedirect(params);\n                }\n                finally {\n                    this._pending.handleLogin = false;\n                }\n            }\n            async getUser() {\n                const { idToken, accessToken } = this.tokenManager.getTokensSync();\n                return this.token.getUserInfo(accessToken, idToken);\n            }\n            getIdToken() {\n                const { idToken } = this.tokenManager.getTokensSync();\n                return idToken ? idToken.idToken : undefined;\n            }\n            getAccessToken() {\n                const { accessToken } = this.tokenManager.getTokensSync();\n                return accessToken ? accessToken.accessToken : undefined;\n            }\n            getRefreshToken() {\n                const { refreshToken } = this.tokenManager.getTokensSync();\n                return refreshToken ? refreshToken.refreshToken : undefined;\n            }\n            async getOrRenewAccessToken() {\n                var _a;\n                const { accessToken } = this.tokenManager.getTokensSync();\n                if (accessToken && !this.tokenManager.hasExpired(accessToken)) {\n                    return accessToken.accessToken;\n                }\n                try {\n                    const key = this.tokenManager.getStorageKeyByType('accessToken');\n                    const token = await this.tokenManager.renew(key !== null && key !== void 0 ? key : 'accessToken');\n                    return (_a = token === null || token === void 0 ? void 0 : token.accessToken) !== null && _a !== void 0 ? _a : null;\n                }\n                catch (err) {\n                    this.emitter.emit('error', err);\n                    return null;\n                }\n            }\n            async storeTokensFromRedirect() {\n                const { tokens, responseType } = await this.token.parseFromUrl();\n                if (responseType !== 'none') {\n                    this.tokenManager.setTokens(tokens);\n                }\n            }\n            isLoginRedirect() {\n                return isLoginRedirect(this);\n            }\n            isPKCE() {\n                return !!this.options.pkce;\n            }\n            hasResponseType(responseType) {\n                return hasResponseType(responseType, this.options);\n            }\n            isAuthorizationCodeFlow() {\n                return this.hasResponseType('code');\n            }\n            async invokeApiMethod(options) {\n                if (!options.accessToken) {\n                    const accessToken = (await this.tokenManager.getTokens()).accessToken;\n                    options.accessToken = accessToken === null || accessToken === void 0 ? void 0 : accessToken.accessToken;\n                }\n                return httpRequest(this, options);\n            }\n            async revokeAccessToken(accessToken) {\n                if (!accessToken) {\n                    const tokens = await this.tokenManager.getTokens();\n                    accessToken = tokens.accessToken;\n                    const accessTokenKey = this.tokenManager.getStorageKeyByType('accessToken');\n                    this.tokenManager.remove(accessTokenKey);\n                    if (this.options.dpop) {\n                        await clearDPoPKeyPairAfterRevoke('access', tokens);\n                    }\n                }\n                if (!accessToken) {\n                    return Promise.resolve(null);\n                }\n                return this.token.revoke(accessToken);\n            }\n            async revokeRefreshToken(refreshToken) {\n                if (!refreshToken) {\n                    const tokens = await this.tokenManager.getTokens();\n                    refreshToken = tokens.refreshToken;\n                    const refreshTokenKey = this.tokenManager.getStorageKeyByType('refreshToken');\n                    this.tokenManager.remove(refreshTokenKey);\n                    if (this.options.dpop) {\n                        await clearDPoPKeyPairAfterRevoke('refresh', tokens);\n                    }\n                }\n                if (!refreshToken) {\n                    return Promise.resolve(null);\n                }\n                return this.token.revoke(refreshToken);\n            }\n            getSignOutRedirectUrl(options = {}) {\n                let { idToken, postLogoutRedirectUri, state, } = options;\n                if (!idToken) {\n                    idToken = this.tokenManager.getTokensSync().idToken;\n                }\n                if (!idToken) {\n                    return '';\n                }\n                if (postLogoutRedirectUri === undefined) {\n                    postLogoutRedirectUri = this.options.postLogoutRedirectUri;\n                }\n                const logoutUrl = getOAuthUrls(this).logoutUrl;\n                const idTokenHint = idToken.idToken;\n                let logoutUri = logoutUrl + '?id_token_hint=' + encodeURIComponent(idTokenHint);\n                if (postLogoutRedirectUri) {\n                    logoutUri += '&post_logout_redirect_uri=' + encodeURIComponent(postLogoutRedirectUri);\n                }\n                if (state) {\n                    logoutUri += '&state=' + encodeURIComponent(state);\n                }\n                return logoutUri;\n            }\n            async signOut(options) {\n                var _a;\n                options = Object.assign({}, options);\n                const defaultUri = window.location.origin;\n                const currentUri = window.location.href;\n                const postLogoutRedirectUri = options.postLogoutRedirectUri === null ? null :\n                    (options.postLogoutRedirectUri\n                        || this.options.postLogoutRedirectUri\n                        || defaultUri);\n                const state = options === null || options === void 0 ? void 0 : options.state;\n                let accessToken = options.accessToken;\n                let refreshToken = options.refreshToken;\n                const revokeAccessToken = options.revokeAccessToken !== false;\n                const revokeRefreshToken = options.revokeRefreshToken !== false;\n                if (revokeRefreshToken && typeof refreshToken === 'undefined') {\n                    refreshToken = this.tokenManager.getTokensSync().refreshToken;\n                }\n                if (revokeAccessToken && typeof accessToken === 'undefined') {\n                    accessToken = this.tokenManager.getTokensSync().accessToken;\n                }\n                if (!options.idToken) {\n                    options.idToken = this.tokenManager.getTokensSync().idToken;\n                }\n                if (revokeRefreshToken && refreshToken) {\n                    await this.revokeRefreshToken(refreshToken);\n                }\n                if (revokeAccessToken && accessToken) {\n                    await this.revokeAccessToken(accessToken);\n                }\n                const dpopPairId = (_a = accessToken === null || accessToken === void 0 ? void 0 : accessToken.dpopPairId) !== null && _a !== void 0 ? _a : refreshToken === null || refreshToken === void 0 ? void 0 : refreshToken.dpopPairId;\n                if (this.options.dpop && dpopPairId) {\n                    await clearDPoPKeyPair(dpopPairId);\n                }\n                const logoutUri = this.getSignOutRedirectUrl(Object.assign(Object.assign({}, options), { postLogoutRedirectUri }));\n                if (!logoutUri) {\n                    const sessionClosed = await this.closeSession();\n                    const redirectUri = new URL(postLogoutRedirectUri || defaultUri);\n                    if (state) {\n                        redirectUri.searchParams.append('state', state);\n                    }\n                    if (postLogoutRedirectUri === currentUri) {\n                        window.location.href = redirectUri.href;\n                    }\n                    else {\n                        window.location.assign(redirectUri.href);\n                    }\n                    return sessionClosed;\n                }\n                else {\n                    if (options.clearTokensBeforeRedirect) {\n                        this.tokenManager.clear();\n                    }\n                    else {\n                        this.tokenManager.addPendingRemoveFlags();\n                    }\n                    window.location.assign(logoutUri);\n                    return true;\n                }\n            }\n            async getDPoPAuthorizationHeaders(params) {\n                if (!this.options.dpop) {\n                    throw new AuthSdkError('DPoP is not configured for this client instance');\n                }\n                let { accessToken } = params;\n                if (!accessToken) {\n                    accessToken = (this.tokenManager.getTokensSync()).accessToken;\n                }\n                if (!accessToken) {\n                    throw new AuthSdkError('AccessToken is required to generate a DPoP Proof');\n                }\n                const keyPair = await findKeyPair(accessToken === null || accessToken === void 0 ? void 0 : accessToken.dpopPairId);\n                const proof = await generateDPoPProof(Object.assign(Object.assign({}, params), { keyPair, accessToken: accessToken.accessToken }));\n                return {\n                    Authorization: `DPoP ${accessToken.accessToken}`,\n                    Dpop: proof\n                };\n            }\n            async clearDPoPStorage(clearAll = false) {\n                var _a, _b;\n                if (clearAll) {\n                    return clearAllDPoPKeyPairs();\n                }\n                const tokens = await this.tokenManager.getTokens();\n                const keyPair = ((_a = tokens.accessToken) === null || _a === void 0 ? void 0 : _a.dpopPairId) || ((_b = tokens.refreshToken) === null || _b === void 0 ? void 0 : _b.dpopPairId);\n                if (keyPair) {\n                    await clearDPoPKeyPair(keyPair);\n                }\n            }\n            parseUseDPoPNonceError(headers) {\n                var _a;\n                const wwwAuth = WWWAuthError.getWWWAuthenticateHeader(headers);\n                const wwwErr = WWWAuthError.parseHeader(wwwAuth !== null && wwwAuth !== void 0 ? wwwAuth : '');\n                if (isDPoPNonceError(wwwErr)) {\n                    let nonce = null;\n                    if (isFunction(headers === null || headers === void 0 ? void 0 : headers.get)) {\n                        nonce = headers.get('DPoP-Nonce');\n                    }\n                    nonce = (_a = nonce !== null && nonce !== void 0 ? nonce : headers['dpop-nonce']) !== null && _a !== void 0 ? _a : headers['DPoP-Nonce'];\n                    return nonce;\n                }\n                return null;\n            }\n        },\n        _a.crypto = index,\n        _a;\n}\n\nexport { mixinOAuth };\n//# sourceMappingURL=index.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { REFERRER_PATH_STORAGE_KEY } from '../../constants.js';\nimport storageUtil from '../../browser/browserStorage.js';\n\nfunction provideOriginalUri(BaseClass) {\n    return class WithOriginalUri extends BaseClass {\n        setOriginalUri(originalUri, state) {\n            const sessionStorage = storageUtil.getSessionStorage();\n            sessionStorage.setItem(REFERRER_PATH_STORAGE_KEY, originalUri);\n            state = state || this.options.state;\n            if (state) {\n                const sharedStorage = this.storageManager.getOriginalUriStorage();\n                sharedStorage.setItem(state, originalUri);\n            }\n        }\n        getOriginalUri(state) {\n            state = state || this.options.state;\n            if (state) {\n                const sharedStorage = this.storageManager.getOriginalUriStorage();\n                const originalUri = sharedStorage.getItem(state);\n                if (originalUri) {\n                    return originalUri;\n                }\n            }\n            const storage = storageUtil.getSessionStorage();\n            return storage ? storage.getItem(REFERRER_PATH_STORAGE_KEY) || undefined : undefined;\n        }\n        removeOriginalUri(state) {\n            const storage = storageUtil.getSessionStorage();\n            storage.removeItem(REFERRER_PATH_STORAGE_KEY);\n            state = state || this.options.state;\n            if (state) {\n                const sharedStorage = this.storageManager.getOriginalUriStorage();\n                sharedStorage.removeItem && sharedStorage.removeItem(state);\n            }\n        }\n    };\n}\n\nexport { provideOriginalUri };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createSessionApi } from './factory.js';\n\nfunction mixinSession(Base) {\n    return class OktaAuthSession extends Base {\n        constructor(...args) {\n            super(...args);\n            this.session = createSessionApi(this);\n        }\n        closeSession() {\n            return this.session.close()\n                .then(async () => {\n                this.clearStorage();\n                return true;\n            })\n                .catch(function (e) {\n                if (e.name === 'AuthApiError' && e.errorCode === 'E0000007') {\n                    return false;\n                }\n                throw e;\n            });\n        }\n    };\n}\n\nexport { mixinSession };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { closeSession, sessionExists, getSession, refreshSession, setCookieAndRedirect } from './api.js';\n\nfunction createSessionApi(sdk) {\n    const session = {\n        close: closeSession.bind(null, sdk),\n        exists: sessionExists.bind(null, sdk),\n        get: getSession.bind(null, sdk),\n        refresh: refreshSession.bind(null, sdk),\n        setCookieAndRedirect: setCookieAndRedirect.bind(null, sdk)\n    };\n    return session;\n}\n\nexport { createSessionApi };\n//# sourceMappingURL=factory.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { isFingerprintSupported } from '../features.js';\nimport { addListener, removeListener } from '../oidc/util/browser.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport '../_virtual/_tslib.js';\n\nconst isMessageFromCorrectSource = (iframe, event) => event.source === iframe.contentWindow;\nfunction fingerprint(sdk, options) {\n    var _a;\n    if (!isFingerprintSupported()) {\n        return Promise.reject(new AuthSdkError('Fingerprinting is not supported on this device'));\n    }\n    const container = (_a = options === null || options === void 0 ? void 0 : options.container) !== null && _a !== void 0 ? _a : document.body;\n    let timeout;\n    let iframe;\n    let listener;\n    const promise = new Promise(function (resolve, reject) {\n        iframe = document.createElement('iframe');\n        iframe.style.display = 'none';\n        listener = function listener(e) {\n            var _a;\n            if (!isMessageFromCorrectSource(iframe, e)) {\n                return;\n            }\n            if (!e || !e.data || e.origin !== sdk.getIssuerOrigin()) {\n                return;\n            }\n            let msg;\n            try {\n                msg = JSON.parse(e.data);\n            }\n            catch (err) {\n                return;\n            }\n            if (!msg) {\n                return;\n            }\n            if (msg.type === 'FingerprintAvailable') {\n                return resolve(msg.fingerprint);\n            }\n            else if (msg.type === 'FingerprintServiceReady') {\n                (_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(JSON.stringify({\n                    type: 'GetFingerprint'\n                }), e.origin);\n            }\n            else {\n                return reject(new AuthSdkError('No data'));\n            }\n        };\n        addListener(window, 'message', listener);\n        iframe.src = sdk.getIssuerOrigin() + '/auth/services/devicefingerprint';\n        container.appendChild(iframe);\n        timeout = setTimeout(function () {\n            reject(new AuthSdkError('Fingerprinting timed out'));\n        }, (options === null || options === void 0 ? void 0 : options.timeout) || 15000);\n    });\n    return promise.finally(function () {\n        var _a;\n        clearTimeout(timeout);\n        removeListener(window, 'message', listener);\n        if (container.contains(iframe)) {\n            (_a = iframe.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(iframe);\n        }\n    });\n}\n\nexport { fingerprint as default };\n//# sourceMappingURL=fingerprint.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64.js';\n\nconst getEnrolledCredentials = (authenticatorEnrollments = []) => {\n    const credentials = [];\n    authenticatorEnrollments.forEach((enrollement) => {\n        if (enrollement.key === 'webauthn') {\n            credentials.push({\n                type: 'public-key',\n                id: base64UrlToBuffer(enrollement.credentialId),\n            });\n        }\n    });\n    return credentials;\n};\nconst buildCredentialCreationOptions = (activationData, authenticatorEnrollments) => {\n    return {\n        publicKey: {\n            rp: activationData.rp,\n            user: {\n                id: base64UrlToBuffer(activationData.user.id),\n                name: activationData.user.name,\n                displayName: activationData.user.displayName\n            },\n            challenge: base64UrlToBuffer(activationData.challenge),\n            pubKeyCredParams: activationData.pubKeyCredParams,\n            attestation: activationData.attestation,\n            authenticatorSelection: activationData.authenticatorSelection,\n            excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n        }\n    };\n};\nconst buildCredentialRequestOptions = (challengeData, authenticatorEnrollments) => {\n    return {\n        publicKey: Object.assign({ challenge: base64UrlToBuffer(challengeData.challenge), userVerification: challengeData.userVerification, allowCredentials: getEnrolledCredentials(authenticatorEnrollments) }, (challengeData.rpId && { rpId: challengeData.rpId }))\n    };\n};\nconst getAttestation = (credential) => {\n    const response = credential.response;\n    const id = credential.id;\n    const clientData = bufferToBase64Url(response.clientDataJSON);\n    const attestation = bufferToBase64Url(response.attestationObject);\n    return {\n        id,\n        clientData,\n        attestation\n    };\n};\nconst getAssertion = (credential) => {\n    const response = credential.response;\n    const id = credential.id;\n    const clientData = bufferToBase64Url(response.clientDataJSON);\n    const authenticatorData = bufferToBase64Url(response.authenticatorData);\n    const signatureData = bufferToBase64Url(response.signature);\n    return {\n        id,\n        clientData,\n        authenticatorData,\n        signatureData\n    };\n};\n\nexport { buildCredentialCreationOptions, buildCredentialRequestOptions, getAssertion, getAttestation };\n//# sourceMappingURL=webauthn.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { warn } from '../../util/console.js';\nimport storageUtil from '../../browser/browserStorage.js';\n\nfunction getStorage() {\n    const storageUtil$1 = Object.assign({}, storageUtil, {\n        inMemoryStore: {}\n    });\n    return storageUtil$1;\n}\nconst STORAGE_MANAGER_OPTIONS = {\n    token: {\n        storageTypes: [\n            'localStorage',\n            'sessionStorage',\n            'cookie'\n        ]\n    },\n    cache: {\n        storageTypes: [\n            'localStorage',\n            'sessionStorage',\n            'cookie'\n        ]\n    },\n    transaction: {\n        storageTypes: [\n            'sessionStorage',\n            'localStorage',\n            'cookie'\n        ]\n    },\n    'shared-transaction': {\n        storageTypes: [\n            'localStorage'\n        ]\n    },\n    'original-uri': {\n        storageTypes: [\n            'localStorage'\n        ]\n    }\n};\nfunction getCookieSettings(args = {}, isHTTPS) {\n    var cookieSettings = args.cookies || {};\n    if (typeof cookieSettings.secure === 'undefined') {\n        cookieSettings.secure = isHTTPS;\n    }\n    if (typeof cookieSettings.sameSite === 'undefined') {\n        cookieSettings.sameSite = cookieSettings.secure ? 'none' : 'lax';\n    }\n    if (cookieSettings.secure && !isHTTPS) {\n        warn('The current page is not being served with the HTTPS protocol.\\n' +\n            'For security reasons, we strongly recommend using HTTPS.\\n' +\n            'If you cannot use HTTPS, set \"cookies.secure\" option to false.');\n        cookieSettings.secure = false;\n    }\n    if (cookieSettings.sameSite === 'none' && !cookieSettings.secure) {\n        cookieSettings.sameSite = 'lax';\n    }\n    return cookieSettings;\n}\n\nexport { STORAGE_MANAGER_OPTIONS, getCookieSettings, getStorage };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport crossFetch from 'cross-fetch';\n\nconst appJsonContentTypeRegex = /application\\/\\w*\\+?json/;\nfunction readData(response) {\n    if (response.headers.get('Content-Type') &&\n        response.headers.get('Content-Type').toLowerCase().indexOf('application/json') >= 0) {\n        return response.json()\n            .catch(e => {\n            return {\n                error: e,\n                errorSummary: 'Could not parse server response'\n            };\n        });\n    }\n    else {\n        return response.text();\n    }\n}\nfunction formatResult(status, data, response) {\n    const isObject = typeof data === 'object';\n    const headers = {};\n    for (const pair of response.headers.entries()) {\n        headers[pair[0]] = pair[1];\n    }\n    const result = {\n        responseText: isObject ? JSON.stringify(data) : data,\n        status: status,\n        headers\n    };\n    if (isObject) {\n        result.responseType = 'json';\n        result.responseJSON = data;\n    }\n    return result;\n}\nfunction fetchRequest(method, url, args) {\n    var body = args.data;\n    var headers = args.headers || {};\n    var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n    if (body && typeof body !== 'string') {\n        if (appJsonContentTypeRegex.test(contentType)) {\n            body = JSON.stringify(body);\n        }\n        else if (contentType === 'application/x-www-form-urlencoded') {\n            body = Object.entries(body)\n                .map(([param, value]) => `${param}=${encodeURIComponent(value)}`)\n                .join('&');\n        }\n    }\n    var fetch = window.fetch || crossFetch;\n    var fetchPromise = fetch(url, {\n        method: method,\n        headers: args.headers,\n        body: body,\n        credentials: args.withCredentials ? 'include' : 'omit'\n    });\n    if (!fetchPromise.finally) {\n        fetchPromise = Promise.resolve(fetchPromise);\n    }\n    return fetchPromise.then(function (response) {\n        var error = !response.ok;\n        var status = response.status;\n        return readData(response)\n            .then(data => {\n            return formatResult(status, data, response);\n        })\n            .then(result => {\n            var _a;\n            if (error || ((_a = result.responseJSON) === null || _a === void 0 ? void 0 : _a.error)) {\n                throw result;\n            }\n            return result;\n        });\n    });\n}\n\nexport { fetchRequest as default };\n//# sourceMappingURL=fetchRequest.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { DEFAULT_MAX_CLOCK_SKEW } from '../../constants.js';\nimport { removeTrailingSlash, toAbsoluteUrl } from '../../util/url.js';\nimport { isBrowser } from '../../features.js';\nimport { createHttpOptionsConstructor } from '../../http/options.js';\nimport { enableSharedStorage } from './browser.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\n\nfunction assertValidConfig(args) {\n    args = args || {};\n    var scopes = args.scopes;\n    if (scopes && !Array.isArray(scopes)) {\n        throw new AuthSdkError('scopes must be a array of strings. ' +\n            'Required usage: new OktaAuth({scopes: [\"openid\", \"email\"]})');\n    }\n    var issuer = args.issuer;\n    if (!issuer) {\n        throw new AuthSdkError('No issuer passed to constructor. ' +\n            'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n    }\n    var isUrlRegex = new RegExp('^http?s?://.+');\n    if (!isUrlRegex.test(issuer)) {\n        throw new AuthSdkError('Issuer must be a valid URL. ' +\n            'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n    }\n    if (issuer.indexOf('-admin.okta') !== -1) {\n        throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n            'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n    }\n}\nfunction createOAuthOptionsConstructor() {\n    const HttpOptionsConstructor = createHttpOptionsConstructor();\n    return class OAuthOptionsConstructor extends HttpOptionsConstructor {\n        constructor(options) {\n            super(options);\n            assertValidConfig(options);\n            this.issuer = removeTrailingSlash(options.issuer);\n            this.tokenUrl = removeTrailingSlash(options.tokenUrl);\n            this.authorizeUrl = removeTrailingSlash(options.authorizeUrl);\n            this.userinfoUrl = removeTrailingSlash(options.userinfoUrl);\n            this.revokeUrl = removeTrailingSlash(options.revokeUrl);\n            this.logoutUrl = removeTrailingSlash(options.logoutUrl);\n            this.pkce = options.pkce === false ? false : true;\n            this.clientId = options.clientId;\n            this.redirectUri = options.redirectUri;\n            if (isBrowser()) {\n                this.redirectUri = toAbsoluteUrl(options.redirectUri, window.location.origin);\n            }\n            this.responseType = options.responseType;\n            this.responseMode = options.responseMode;\n            this.state = options.state;\n            this.scopes = options.scopes;\n            this.ignoreSignature = !!options.ignoreSignature;\n            this.codeChallenge = options.codeChallenge;\n            this.codeChallengeMethod = options.codeChallengeMethod;\n            this.acrValues = options.acrValues;\n            this.maxAge = options.maxAge;\n            this.dpop = options.dpop === true;\n            this.dpopOptions = Object.assign({ allowBearerTokens: false }, options.dpopOptions);\n            this.tokenManager = options.tokenManager;\n            this.postLogoutRedirectUri = options.postLogoutRedirectUri;\n            this.restoreOriginalUri = options.restoreOriginalUri;\n            this.transactionManager = Object.assign({ enableSharedStorage }, options.transactionManager);\n            this.clientSecret = options.clientSecret;\n            this.setLocation = options.setLocation;\n            this.ignoreLifetime = !!options.ignoreLifetime;\n            if (!options.maxClockSkew && options.maxClockSkew !== 0) {\n                this.maxClockSkew = DEFAULT_MAX_CLOCK_SKEW;\n            }\n            else {\n                this.maxClockSkew = options.maxClockSkew;\n            }\n        }\n    };\n}\n\nexport { createOAuthOptionsConstructor };\n//# sourceMappingURL=OAuthOptionsConstructor.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createStorageOptionsConstructor } from '../storage/options/StorageOptionsConstructor.js';\nimport '../errors/WWWAuthError.js';\nimport fetchRequest from '../fetch/fetchRequest.js';\n\nfunction createHttpOptionsConstructor() {\n    const StorageOptionsConstructor = createStorageOptionsConstructor();\n    return class HttpOptionsConstructor extends StorageOptionsConstructor {\n        constructor(args) {\n            super(args);\n            this.issuer = args.issuer;\n            this.transformErrorXHR = args.transformErrorXHR;\n            this.headers = args.headers;\n            this.httpRequestClient = args.httpRequestClient || fetchRequest;\n            this.httpRequestInterceptors = args.httpRequestInterceptors;\n            this.pollDelay = args.pollDelay;\n        }\n    };\n}\n\nexport { createHttpOptionsConstructor };\n//# sourceMappingURL=options.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { isHTTPS } from '../../features.js';\nimport 'tiny-emitter';\nimport { createBaseOptionsConstructor } from '../../base/options.js';\nimport { getCookieSettings, getStorage, STORAGE_MANAGER_OPTIONS } from './browser.js';\n\nfunction createStorageOptionsConstructor() {\n    const BaseOptionsConstructor = createBaseOptionsConstructor();\n    return class StorageOptionsConstructor extends BaseOptionsConstructor {\n        constructor(args) {\n            super(args);\n            this.cookies = getCookieSettings(args, isHTTPS());\n            this.storageUtil = args.storageUtil || getStorage();\n            this.storageManager = Object.assign(Object.assign({}, STORAGE_MANAGER_OPTIONS), args.storageManager);\n        }\n    };\n}\n\nexport { createStorageOptionsConstructor };\n//# sourceMappingURL=StorageOptionsConstructor.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction createBaseOptionsConstructor() {\n    return class BaseOptionsConstructor {\n        constructor(args) {\n            this.devMode = !!args.devMode;\n        }\n    };\n}\n\nexport { createBaseOptionsConstructor };\n//# sourceMappingURL=options.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst enableSharedStorage = true;\n\nexport { enableSharedStorage };\n//# sourceMappingURL=browser.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\n\nclass SavedObject {\n    constructor(storage, storageName) {\n        if (!storage) {\n            throw new AuthSdkError('\"storage\" is required');\n        }\n        if (typeof storageName !== 'string' || !storageName.length) {\n            throw new AuthSdkError('\"storageName\" is required');\n        }\n        this.storageName = storageName;\n        this.storageProvider = storage;\n    }\n    getItem(key) {\n        return this.getStorage()[key];\n    }\n    setItem(key, value) {\n        return this.updateStorage(key, value);\n    }\n    removeItem(key) {\n        return this.clearStorage(key);\n    }\n    getStorage() {\n        var storageString = this.storageProvider.getItem(this.storageName);\n        storageString = storageString || '{}';\n        try {\n            return JSON.parse(storageString);\n        }\n        catch (e) {\n            throw new AuthSdkError('Unable to parse storage string: ' + this.storageName);\n        }\n    }\n    setStorage(obj) {\n        try {\n            var storageString = obj ? JSON.stringify(obj) : '{}';\n            this.storageProvider.setItem(this.storageName, storageString);\n        }\n        catch (e) {\n            throw new AuthSdkError('Unable to set storage: ' + this.storageName);\n        }\n    }\n    clearStorage(key) {\n        if (!key) {\n            if (this.storageProvider.removeItem) {\n                this.storageProvider.removeItem(this.storageName);\n            }\n            else {\n                this.setStorage();\n            }\n            return;\n        }\n        var obj = this.getStorage();\n        delete obj[key];\n        this.setStorage(obj);\n    }\n    updateStorage(key, value) {\n        var obj = this.getStorage();\n        obj[key] = value;\n        this.setStorage(obj);\n    }\n}\n\nexport { SavedObject };\n//# sourceMappingURL=SavedObject.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { TOKEN_STORAGE_NAME, CACHE_STORAGE_NAME } from '../constants.js';\nimport { SavedObject } from './SavedObject.js';\nimport { isBrowser } from '../features.js';\nimport { warn } from '../util/console.js';\n\nfunction logServerSideMemoryStorageWarning(options) {\n    if (!isBrowser() && !options.storageProvider && !options.storageKey) {\n        warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n    }\n}\nclass BaseStorageManager {\n    constructor(storageManagerOptions, cookieOptions, storageUtil) {\n        this.storageManagerOptions = storageManagerOptions;\n        this.cookieOptions = cookieOptions;\n        this.storageUtil = storageUtil;\n    }\n    getOptionsForSection(sectionName, overrideOptions) {\n        return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n    }\n    getStorage(options) {\n        options = Object.assign({}, this.cookieOptions, options);\n        if (options.storageProvider) {\n            return options.storageProvider;\n        }\n        let { storageType, storageTypes } = options;\n        if (storageType === 'sessionStorage') {\n            options.sessionCookie = true;\n        }\n        if (storageType && storageTypes) {\n            const idx = storageTypes.indexOf(storageType);\n            if (idx >= 0) {\n                storageTypes = storageTypes.slice(idx);\n                storageType = undefined;\n            }\n        }\n        if (!storageType) {\n            storageType = this.storageUtil.findStorageType(storageTypes);\n        }\n        return this.storageUtil.getStorageByType(storageType, options);\n    }\n    getTokenStorage(options) {\n        options = this.getOptionsForSection('token', options);\n        logServerSideMemoryStorageWarning(options);\n        const storage = this.getStorage(options);\n        const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n        return new SavedObject(storage, storageKey);\n    }\n    getHttpCache(options) {\n        options = this.getOptionsForSection('cache', options);\n        const storage = this.getStorage(options);\n        const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n        return new SavedObject(storage, storageKey);\n    }\n}\n\nexport { BaseStorageManager, logServerSideMemoryStorageWarning };\n//# sourceMappingURL=BaseStorageManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction isObjectWithProperties(obj) {\n    if (!obj || typeof obj !== 'object' || Object.values(obj).length === 0) {\n        return false;\n    }\n    return true;\n}\nfunction isOAuthTransactionMeta(obj) {\n    if (!isObjectWithProperties(obj)) {\n        return false;\n    }\n    return !!obj.redirectUri || !!obj.responseType;\n}\nfunction isPKCETransactionMeta(obj) {\n    if (!isOAuthTransactionMeta(obj)) {\n        return false;\n    }\n    return !!obj.codeVerifier;\n}\nfunction isIdxTransactionMeta(obj) {\n    if (!isPKCETransactionMeta(obj)) {\n        return false;\n    }\n    return !!obj.interactionHandle;\n}\nfunction isCustomAuthTransactionMeta(obj) {\n    if (!isObjectWithProperties(obj)) {\n        return false;\n    }\n    const isAllStringValues = Object.values(obj).find((value) => (typeof value !== 'string')) === undefined;\n    return isAllStringValues;\n}\nfunction isTransactionMeta(obj) {\n    if (isOAuthTransactionMeta(obj) || isCustomAuthTransactionMeta(obj)) {\n        return true;\n    }\n    return false;\n}\n\nexport { isCustomAuthTransactionMeta, isIdxTransactionMeta, isOAuthTransactionMeta, isPKCETransactionMeta, isTransactionMeta };\n//# sourceMappingURL=Transaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../../_virtual/_tslib.js';\n\nclass BaseTransaction {\n    constructor(oktaAuth, options) {\n        const { res } = options;\n        const { headers } = res, rest = __rest(res, [\"headers\"]);\n        if (headers) {\n            this.headers = headers;\n        }\n        Object.keys(rest).forEach(key => {\n            if (key === '_links') {\n                return;\n            }\n            this[key] = rest[key];\n        });\n    }\n}\n\nexport { BaseTransaction as default };\n//# sourceMappingURL=Base.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport BaseTransaction from './transactions/Base.js';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { httpRequest } from '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\n\nasync function sendRequest(oktaAuth, options, TransactionClass = BaseTransaction) {\n    const { accessToken: accessTokenObj } = oktaAuth.tokenManager.getTokensSync();\n    const atToken = options.accessToken || accessTokenObj;\n    const issuer = oktaAuth.getIssuerOrigin();\n    const { url, method, payload } = options;\n    const requestUrl = url.startsWith(issuer) ? url : `${issuer}${url}`;\n    if (!atToken) {\n        throw new AuthSdkError('AccessToken is required to request MyAccount API endpoints.');\n    }\n    let accessToken = atToken;\n    const httpOptions = Object.assign({ headers: { 'Accept': '*/*;okta-version=1.0.0' }, url: requestUrl, method }, (payload && { args: payload }));\n    if (oktaAuth.options.dpop) {\n        if (typeof accessToken === 'string') {\n            throw new AuthSdkError('AccessToken object must be provided when using dpop');\n        }\n        const { Authorization, Dpop } = await oktaAuth.getDPoPAuthorizationHeaders({\n            method,\n            url: requestUrl,\n            accessToken\n        });\n        httpOptions.headers.Authorization = Authorization;\n        httpOptions.headers.Dpop = Dpop;\n    }\n    else {\n        accessToken = typeof accessToken === 'string' ? accessToken : accessToken.accessToken;\n        httpOptions.accessToken = accessToken;\n    }\n    const res = await httpRequest(oktaAuth, httpOptions);\n    let ret;\n    if (Array.isArray(res)) {\n        ret = res.map(item => new TransactionClass(oktaAuth, {\n            res: item,\n            accessToken\n        }));\n    }\n    else {\n        ret = new TransactionClass(oktaAuth, {\n            res,\n            accessToken\n        });\n    }\n    return ret;\n}\nfunction generateRequestFnFromLinks({ oktaAuth, accessToken, methodName, links, }, TransactionClass = BaseTransaction) {\n    for (const method of ['GET', 'POST', 'PUT', 'DELETE']) {\n        if (method.toLowerCase() === methodName) {\n            const link = links.self;\n            return (async (payload) => sendRequest(oktaAuth, {\n                accessToken,\n                url: link.href,\n                method,\n                payload,\n            }, TransactionClass));\n        }\n    }\n    const link = links[methodName];\n    if (!link) {\n        throw new AuthSdkError(`No link is found with methodName: ${methodName}`);\n    }\n    return (async (payload) => sendRequest(oktaAuth, {\n        accessToken,\n        url: link.href,\n        method: link.hints.allow[0],\n        payload,\n    }, TransactionClass));\n}\n\nexport { generateRequestFnFromLinks, sendRequest };\n//# sourceMappingURL=request.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport BaseTransaction from './Base.js';\n\nclass ProfileTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { createdAt, modifiedAt, profile } = options.res;\n        this.createdAt = createdAt;\n        this.modifiedAt = modifiedAt;\n        this.profile = profile;\n    }\n}\n\nexport { ProfileTransaction as default };\n//# sourceMappingURL=ProfileTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport BaseTransaction from './Base.js';\n\nclass ProfileSchemaTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        this.properties = options.res.properties;\n    }\n}\n\nexport { ProfileSchemaTransaction as default };\n//# sourceMappingURL=ProfileSchemaTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nvar EmailRole;\n(function (EmailRole) {\n    EmailRole[\"PRIMARY\"] = \"PRIMARY\";\n    EmailRole[\"SECONDARY\"] = \"SECONDARY\";\n})(EmailRole || (EmailRole = {}));\nvar Status;\n(function (Status) {\n    Status[\"VERIFIED\"] = \"VERIFIED\";\n    Status[\"UNVERIFIED\"] = \"UNVERIFIED\";\n})(Status || (Status = {}));\nvar PasswordStatus;\n(function (PasswordStatus) {\n    PasswordStatus[\"NOT_ENROLLED\"] = \"NOT_ENROLLED\";\n    PasswordStatus[\"ACTIVE\"] = \"ACTIVE\";\n})(PasswordStatus || (PasswordStatus = {}));\n\nexport { EmailRole, PasswordStatus, Status };\n//# sourceMappingURL=types.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { sendRequest } from './request.js';\nimport ProfileTransaction from './transactions/ProfileTransaction.js';\nimport ProfileSchemaTransaction from './transactions/ProfileSchemaTransaction.js';\nimport '../_virtual/_tslib.js';\nimport './types.js';\n\nconst getProfile = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/profile',\n        method: 'GET',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken,\n    }, ProfileTransaction);\n    return transaction;\n};\nconst updateProfile = async (oktaAuth, options) => {\n    const { payload, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/profile',\n        method: 'PUT',\n        payload,\n        accessToken,\n    }, ProfileTransaction);\n    return transaction;\n};\nconst getProfileSchema = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/profile/schema',\n        method: 'GET',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken,\n    }, ProfileSchemaTransaction);\n    return transaction;\n};\n\nexport { getProfile, getProfileSchema, updateProfile };\n//# sourceMappingURL=profileApi.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport BaseTransaction from './Base.js';\n\nclass EmailStatusTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { res } = options;\n        const { id, profile, expiresAt, status } = res;\n        this.id = id;\n        this.expiresAt = expiresAt;\n        this.profile = profile;\n        this.status = status;\n    }\n}\n\nexport { EmailStatusTransaction as default };\n//# sourceMappingURL=EmailStatusTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport EmailStatusTransaction from './EmailStatusTransaction.js';\nimport BaseTransaction from './Base.js';\nimport { generateRequestFnFromLinks } from '../request.js';\n\nclass EmailChallengeTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { accessToken, res } = options;\n        const { id, expiresAt, profile, status, _links } = res;\n        this.id = id;\n        this.expiresAt = expiresAt;\n        this.profile = profile;\n        this.status = status;\n        this.poll = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'poll',\n                links: _links,\n            }, EmailStatusTransaction);\n            return await fn();\n        };\n        this.verify = async (payload) => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'verify',\n                links: _links,\n            }, EmailChallengeTransaction);\n            return await fn(payload);\n        };\n    }\n}\n\nexport { EmailChallengeTransaction as default };\n//# sourceMappingURL=EmailChallengeTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport EmailChallengeTransaction from './EmailChallengeTransaction.js';\nimport EmailStatusTransaction from './EmailStatusTransaction.js';\nimport BaseTransaction from './Base.js';\nimport { generateRequestFnFromLinks } from '../request.js';\n\nclass EmailTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { accessToken, res } = options;\n        const { id, profile, roles, status, _links } = res;\n        this.id = id;\n        this.profile = profile;\n        this.roles = roles;\n        this.status = status;\n        this.get = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'get',\n                links: _links,\n            }, EmailTransaction);\n            return await fn();\n        };\n        this.delete = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'delete',\n                links: _links\n            });\n            return await fn();\n        };\n        this.challenge = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'challenge',\n                links: _links,\n            }, EmailChallengeTransaction);\n            return await fn();\n        };\n        if (_links.poll) {\n            this.poll = async () => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'poll',\n                    links: _links,\n                }, EmailStatusTransaction);\n                return await fn();\n            };\n        }\n        if (_links.verify) {\n            this.verify = async (payload) => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'verify',\n                    links: _links,\n                });\n                return await fn(payload);\n            };\n        }\n    }\n}\n\nexport { EmailTransaction as default };\n//# sourceMappingURL=EmailTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { sendRequest } from './request.js';\nimport '../_virtual/_tslib.js';\nimport EmailTransaction from './transactions/EmailTransaction.js';\nimport EmailChallengeTransaction from './transactions/EmailChallengeTransaction.js';\nimport './types.js';\n\nconst getEmails = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/emails',\n        method: 'GET',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken\n    }, EmailTransaction);\n    return transaction;\n};\nconst getEmail = async (oktaAuth, options) => {\n    const { id, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/emails/${id}`,\n        method: 'GET',\n        accessToken,\n    }, EmailTransaction);\n    return transaction;\n};\nconst addEmail = async (oktaAuth, options) => {\n    const { accessToken, payload } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/emails',\n        method: 'POST',\n        payload,\n        accessToken,\n    }, EmailTransaction);\n    return transaction;\n};\nconst deleteEmail = async (oktaAuth, options) => {\n    const { id, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/emails/${id}`,\n        method: 'DELETE',\n        accessToken\n    });\n    return transaction;\n};\nconst sendEmailChallenge = async (oktaAuth, options) => {\n    const { id, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/emails/${id}/challenge`,\n        method: 'POST',\n        accessToken,\n    }, EmailChallengeTransaction);\n    return transaction;\n};\nconst getEmailChallenge = async (oktaAuth, options) => {\n    const { emailId, challengeId, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n        method: 'POST',\n        accessToken,\n    }, EmailChallengeTransaction);\n    return transaction;\n};\nconst verifyEmailChallenge = async (oktaAuth, options) => {\n    const { emailId, challengeId, payload, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n        method: 'POST',\n        payload,\n        accessToken\n    });\n    return transaction;\n};\n\nexport { addEmail, deleteEmail, getEmail, getEmailChallenge, getEmails, sendEmailChallenge, verifyEmailChallenge };\n//# sourceMappingURL=emailApi.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport BaseTransaction from './Base.js';\nimport { generateRequestFnFromLinks } from '../request.js';\n\nclass PhoneTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { res, accessToken } = options;\n        const { id, profile, status, _links } = res;\n        this.id = id;\n        this.profile = profile;\n        this.status = status;\n        this.get = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'get',\n                links: _links,\n            }, PhoneTransaction);\n            return await fn();\n        };\n        this.delete = async () => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'delete',\n                links: _links\n            });\n            return await fn();\n        };\n        this.challenge = async (payload) => {\n            const fn = generateRequestFnFromLinks({\n                oktaAuth,\n                accessToken,\n                methodName: 'challenge',\n                links: _links\n            });\n            return await fn(payload);\n        };\n        if (_links.verify) {\n            this.verify = async (payload) => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'verify',\n                    links: _links\n                });\n                return await fn(payload);\n            };\n        }\n    }\n}\n\nexport { PhoneTransaction as default };\n//# sourceMappingURL=PhoneTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { sendRequest } from './request.js';\nimport '../_virtual/_tslib.js';\nimport PhoneTransaction from './transactions/PhoneTransaction.js';\nimport './types.js';\n\nconst getPhones = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/phones',\n        method: 'GET',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken,\n    }, PhoneTransaction);\n    return transaction;\n};\nconst getPhone = async (oktaAuth, options) => {\n    const { accessToken, id } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/phones/${id}`,\n        method: 'GET',\n        accessToken,\n    }, PhoneTransaction);\n    return transaction;\n};\nconst addPhone = async (oktaAuth, options) => {\n    const { accessToken, payload } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/phones',\n        method: 'POST',\n        payload,\n        accessToken,\n    }, PhoneTransaction);\n    return transaction;\n};\nconst deletePhone = async (oktaAuth, options) => {\n    const { id, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/phones/${id}`,\n        method: 'DELETE',\n        accessToken,\n    });\n    return transaction;\n};\nconst sendPhoneChallenge = async (oktaAuth, options) => {\n    const { accessToken, id, payload } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/phones/${id}/challenge`,\n        method: 'POST',\n        payload,\n        accessToken\n    });\n    return transaction;\n};\nconst verifyPhoneChallenge = async (oktaAuth, options) => {\n    const { id, payload, accessToken } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/phones/${id}/verify`,\n        method: 'POST',\n        payload,\n        accessToken\n    });\n    return transaction;\n};\n\nexport { addPhone, deletePhone, getPhone, getPhones, sendPhoneChallenge, verifyPhoneChallenge };\n//# sourceMappingURL=phoneApi.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { PasswordStatus } from '../types.js';\nimport BaseTransaction from './Base.js';\nimport { generateRequestFnFromLinks } from '../request.js';\n\nclass PasswordTransaction extends BaseTransaction {\n    constructor(oktaAuth, options) {\n        super(oktaAuth, options);\n        const { res, accessToken } = options;\n        const { id, status, created, lastUpdated, _links } = res;\n        this.id = id;\n        this.status = status;\n        this.created = created;\n        this.lastUpdated = lastUpdated;\n        if (this.status == PasswordStatus.NOT_ENROLLED) {\n            this.enroll = async (payload) => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'enroll',\n                    links: _links,\n                }, PasswordTransaction);\n                return await fn(payload);\n            };\n        }\n        else {\n            this.get = async () => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'get',\n                    links: _links,\n                }, PasswordTransaction);\n                return await fn();\n            };\n            this.update = async (payload) => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'put',\n                    links: _links,\n                }, PasswordTransaction);\n                return await fn(payload);\n            };\n            this.delete = async () => {\n                const fn = generateRequestFnFromLinks({\n                    oktaAuth,\n                    accessToken,\n                    methodName: 'delete',\n                    links: _links\n                });\n                return await fn();\n            };\n        }\n    }\n}\n\nexport { PasswordTransaction as default };\n//# sourceMappingURL=PasswordTransaction.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { sendRequest } from './request.js';\nimport '../_virtual/_tslib.js';\nimport PasswordTransaction from './transactions/PasswordTransaction.js';\n\nconst getPassword = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/password`,\n        method: 'GET',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken,\n    }, PasswordTransaction);\n    return transaction;\n};\nconst enrollPassword = async (oktaAuth, options) => {\n    const { accessToken, payload } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/password',\n        method: 'POST',\n        payload,\n        accessToken,\n    }, PasswordTransaction);\n    return transaction;\n};\nconst updatePassword = async (oktaAuth, options) => {\n    const { accessToken, payload } = options;\n    const transaction = await sendRequest(oktaAuth, {\n        url: '/idp/myaccount/password',\n        method: 'PUT',\n        payload,\n        accessToken,\n    }, PasswordTransaction);\n    return transaction;\n};\nconst deletePassword = async (oktaAuth, options) => {\n    const transaction = await sendRequest(oktaAuth, {\n        url: `/idp/myaccount/password`,\n        method: 'DELETE',\n        accessToken: options === null || options === void 0 ? void 0 : options.accessToken,\n    });\n    return transaction;\n};\n\nexport { deletePassword, enrollPassword, getPassword, updatePassword };\n//# sourceMappingURL=passwordApi.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction addStateToken(res, options) {\n    var builtArgs = {};\n    Object.assign(builtArgs, options);\n    if (!builtArgs.stateToken && res.stateToken) {\n        builtArgs.stateToken = res.stateToken;\n    }\n    return builtArgs;\n}\nfunction getStateToken(res) {\n    return addStateToken(res);\n}\n\nexport { addStateToken, getStateToken };\n//# sourceMappingURL=stateToken.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport '../errors/WWWAuthError.js';\nimport { post } from '../http/request.js';\nimport { STATE_TOKEN_KEY_NAME } from '../constants.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { addStateToken } from './util/stateToken.js';\n\nfunction transactionStatus(sdk, args) {\n    args = addStateToken(sdk, args);\n    return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn', args, { withCredentials: true });\n}\nfunction resumeTransaction(sdk, tx, args) {\n    if (!args || !args.stateToken) {\n        var stateToken = getSavedStateToken(sdk);\n        if (stateToken) {\n            args = {\n                stateToken: stateToken\n            };\n        }\n        else {\n            return Promise.reject(new AuthSdkError('No transaction to resume'));\n        }\n    }\n    return transactionStatus(sdk, args)\n        .then(function (res) {\n        return tx.createTransaction(res);\n    });\n}\nfunction introspectAuthn(sdk, tx, args) {\n    if (!args || !args.stateToken) {\n        var stateToken = getSavedStateToken(sdk);\n        if (stateToken) {\n            args = {\n                stateToken: stateToken\n            };\n        }\n        else {\n            return Promise.reject(new AuthSdkError('No transaction to evaluate'));\n        }\n    }\n    return transactionStep(sdk, args)\n        .then(function (res) {\n        return tx.createTransaction(res);\n    });\n}\nfunction transactionStep(sdk, args) {\n    args = addStateToken(sdk, args);\n    return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn/introspect', args, { withCredentials: true });\n}\nfunction transactionExists(sdk) {\n    return !!getSavedStateToken(sdk);\n}\nfunction postToTransaction(sdk, tx, url, args, options) {\n    options = Object.assign({ withCredentials: true }, options);\n    return post(sdk, url, args, options)\n        .then(function (res) {\n        return tx.createTransaction(res);\n    });\n}\nfunction getSavedStateToken(sdk) {\n    const storage = sdk.options.storageUtil.storage;\n    return storage.get(STATE_TOKEN_KEY_NAME);\n}\n\nexport { getSavedStateToken, introspectAuthn, postToTransaction, resumeTransaction, transactionExists, transactionStatus, transactionStep };\n//# sourceMappingURL=api.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { find, omit } from '../../util/object.js';\nimport { toQueryString } from '../../util/url.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { get } from '../../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { postToTransaction } from '../api.js';\nimport { addStateToken } from './stateToken.js';\n\nfunction link2fn(sdk, tx, res, obj, link, ref) {\n    if (Array.isArray(link)) {\n        return function (name, opts) {\n            if (!name) {\n                throw new AuthSdkError('Must provide a link name');\n            }\n            var lk = find(link, { name: name });\n            if (!lk) {\n                throw new AuthSdkError('No link found for that name');\n            }\n            return link2fn(sdk, tx, res, obj, lk, ref)(opts);\n        };\n    }\n    else if (link.hints &&\n        link.hints.allow &&\n        link.hints.allow.length === 1) {\n        var method = link.hints.allow[0];\n        switch (method) {\n            case 'GET':\n                return function () {\n                    return get(sdk, link.href, { withCredentials: true });\n                };\n            case 'POST':\n                return function (opts) {\n                    if (ref && ref.isPolling) {\n                        ref.isPolling = false;\n                    }\n                    var data = addStateToken(res, opts);\n                    if (res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL') {\n                        Object.assign(data, {\n                            factorType: obj.factorType,\n                            provider: obj.provider\n                        });\n                    }\n                    var params = {};\n                    var autoPush = data.autoPush;\n                    if (autoPush !== undefined) {\n                        if (typeof autoPush === 'function') {\n                            try {\n                                params.autoPush = !!autoPush();\n                            }\n                            catch (e) {\n                                return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n                            }\n                        }\n                        else if (autoPush !== null) {\n                            params.autoPush = !!autoPush;\n                        }\n                        data = omit(data, 'autoPush');\n                    }\n                    var rememberDevice = data.rememberDevice;\n                    if (rememberDevice !== undefined) {\n                        if (typeof rememberDevice === 'function') {\n                            try {\n                                params.rememberDevice = !!rememberDevice();\n                            }\n                            catch (e) {\n                                return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n                            }\n                        }\n                        else if (rememberDevice !== null) {\n                            params.rememberDevice = !!rememberDevice;\n                        }\n                        data = omit(data, 'rememberDevice');\n                    }\n                    else if (data.profile &&\n                        data.profile.updatePhone !== undefined) {\n                        if (data.profile.updatePhone) {\n                            params.updatePhone = true;\n                        }\n                        data.profile = omit(data.profile, 'updatePhone');\n                    }\n                    var href = link.href + toQueryString(params);\n                    return postToTransaction(sdk, tx, href, data);\n                };\n        }\n    }\n}\n\nexport { link2fn };\n//# sourceMappingURL=link2fn.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError.js';\n\nclass AuthPollStopError extends CustomError {\n    constructor() {\n        const message = 'The poll was stopped by the sdk';\n        super(message);\n    }\n}\n\nexport { AuthPollStopError as default };\n//# sourceMappingURL=AuthPollStopError.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthPollStopError from '../../errors/AuthPollStopError.js';\nimport AuthSdkError from '../../errors/AuthSdkError.js';\nimport '../../errors/WWWAuthError.js';\nimport { delay } from '../../util/misc.js';\nimport { getLink } from '../../util/object.js';\nimport { isNumber, isObject } from '../../util/types.js';\nimport { toQueryString } from '../../util/url.js';\nimport { post } from '../../http/request.js';\nimport { DEFAULT_POLLING_DELAY } from '../../constants.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport { getStateToken } from './stateToken.js';\n\nfunction getPollFn(sdk, res, ref) {\n    return function (options) {\n        var delay$1;\n        var rememberDevice;\n        var autoPush;\n        var transactionCallBack;\n        if (isNumber(options)) {\n            delay$1 = options;\n        }\n        else if (isObject(options)) {\n            options = options;\n            delay$1 = options.delay;\n            rememberDevice = options.rememberDevice;\n            autoPush = options.autoPush;\n            transactionCallBack = options.transactionCallBack;\n        }\n        if (!delay$1 && delay$1 !== 0) {\n            delay$1 = DEFAULT_POLLING_DELAY;\n        }\n        var pollLink = getLink(res, 'next', 'poll');\n        function pollFn() {\n            var opts = {};\n            if (typeof autoPush === 'function') {\n                try {\n                    opts.autoPush = !!autoPush();\n                }\n                catch (e) {\n                    return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n                }\n            }\n            else if (autoPush !== undefined && autoPush !== null) {\n                opts.autoPush = !!autoPush;\n            }\n            if (typeof rememberDevice === 'function') {\n                try {\n                    opts.rememberDevice = !!rememberDevice();\n                }\n                catch (e) {\n                    return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n                }\n            }\n            else if (rememberDevice !== undefined && rememberDevice !== null) {\n                opts.rememberDevice = !!rememberDevice;\n            }\n            var href = pollLink.href + toQueryString(opts);\n            return post(sdk, href, getStateToken(res), {\n                saveAuthnState: false,\n                withCredentials: true,\n                pollingIntent: true,\n            });\n        }\n        ref.isPolling = true;\n        var retryCount = 0;\n        var recursivePoll = function () {\n            if (!ref.isPolling) {\n                return Promise.reject(new AuthPollStopError());\n            }\n            return pollFn()\n                .then(function (pollRes) {\n                retryCount = 0;\n                if (pollRes.factorResult && pollRes.factorResult === 'WAITING') {\n                    if (!ref.isPolling) {\n                        throw new AuthPollStopError();\n                    }\n                    if (typeof transactionCallBack === 'function') {\n                        transactionCallBack(pollRes);\n                    }\n                    return delay(delay$1).then(recursivePoll);\n                }\n                else {\n                    ref.isPolling = false;\n                    return sdk.tx.createTransaction(pollRes);\n                }\n            })\n                .catch(function (err) {\n                if (err.xhr &&\n                    (err.xhr.status === 0 || err.xhr.status === 429) &&\n                    retryCount <= 4) {\n                    var delayLength = Math.pow(2, retryCount) * 1000;\n                    retryCount++;\n                    return delay(delayLength)\n                        .then(recursivePoll);\n                }\n                throw err;\n            });\n        };\n        return recursivePoll()\n            .catch(function (err) {\n            ref.isPolling = false;\n            throw err;\n        });\n    };\n}\n\nexport { getPollFn };\n//# sourceMappingURL=poll.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone, omit } from '../../util/object.js';\nimport { isObject } from '../../util/types.js';\nimport { links2fns } from './links2fns.js';\n\nfunction flattenEmbedded(sdk, tx, res, obj, ref) {\n    obj = obj || res;\n    obj = clone(obj);\n    if (Array.isArray(obj)) {\n        var objArr = [];\n        for (var o = 0, ol = obj.length; o < ol; o++) {\n            objArr.push(flattenEmbedded(sdk, tx, res, obj[o], ref));\n        }\n        return objArr;\n    }\n    var embedded = obj._embedded || {};\n    for (var key in embedded) {\n        if (!Object.prototype.hasOwnProperty.call(embedded, key)) {\n            continue;\n        }\n        if (isObject(embedded[key]) || Array.isArray(embedded[key])) {\n            embedded[key] = flattenEmbedded(sdk, tx, res, embedded[key], ref);\n        }\n    }\n    var fns = links2fns(sdk, tx, res, obj, ref);\n    Object.assign(embedded, fns);\n    obj = omit(obj, '_embedded', '_links');\n    Object.assign(obj, embedded);\n    return obj;\n}\n\nexport { flattenEmbedded };\n//# sourceMappingURL=flattenEmbedded.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { link2fn } from './link2fn.js';\nimport { getPollFn } from './poll.js';\n\nfunction links2fns(sdk, tx, res, obj, ref) {\n    var fns = {};\n    for (var linkName in obj._links) {\n        if (!Object.prototype.hasOwnProperty.call(obj._links, linkName)) {\n            continue;\n        }\n        var link = obj._links[linkName];\n        if (linkName === 'next') {\n            linkName = link.name;\n        }\n        if (link.type) {\n            fns[linkName] = link;\n            continue;\n        }\n        switch (linkName) {\n            case 'poll':\n                fns.poll = getPollFn(sdk, res, ref);\n                break;\n            default:\n                var fn = link2fn(sdk, tx, res, obj, link, ref);\n                if (fn) {\n                    fns[linkName] = fn;\n                }\n        }\n    }\n    return fns;\n}\n\nexport { links2fns };\n//# sourceMappingURL=links2fns.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { flattenEmbedded } from './util/flattenEmbedded.js';\n\nclass AuthnTransactionImpl {\n    constructor(sdk, tx, res = null) {\n        this.data = undefined;\n        this.status = undefined;\n        if (res) {\n            this.data = res;\n            Object.assign(this, flattenEmbedded(sdk, tx, res, res, {}));\n            delete this.stateToken;\n            if (res.status === 'RECOVERY_CHALLENGE' && !res._links) {\n                this.cancel = function () {\n                    return Promise.resolve(tx.createTransaction());\n                };\n            }\n        }\n    }\n}\n\nexport { AuthnTransactionImpl };\n//# sourceMappingURL=AuthnTransactionImpl.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { transactionStatus, resumeTransaction, transactionExists, introspectAuthn, postToTransaction } from './api.js';\nimport { AuthnTransactionImpl } from './AuthnTransactionImpl.js';\n\nfunction createAuthnTransactionAPI(sdk) {\n    const tx = {\n        status: transactionStatus.bind(null, sdk),\n        resume(args) {\n            return resumeTransaction(sdk, tx, args);\n        },\n        exists: transactionExists.bind(null, sdk),\n        introspect(args) {\n            return introspectAuthn(sdk, tx, args);\n        },\n        createTransaction: (res) => {\n            return new AuthnTransactionImpl(sdk, tx, res);\n        },\n        postToTransaction: (url, args, options) => {\n            return postToTransaction(sdk, tx, url, args, options);\n        }\n    };\n    return tx;\n}\n\nexport { createAuthnTransactionAPI };\n//# sourceMappingURL=factory.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport { authenticate } from '../../idx/authenticate.js';\nexport { cancel } from '../../idx/cancel.js';\nexport { handleEmailVerifyCallback, isEmailVerifyCallback, isEmailVerifyCallbackError, parseEmailVerifyCallback } from '../../idx/emailVerify.js';\nexport { interact } from '../../idx/interact.js';\nexport { introspect } from '../../idx/introspect.js';\nexport { poll } from '../../idx/poll.js';\nexport { canProceed, proceed } from '../../idx/proceed.js';\nexport { register } from '../../idx/register.js';\nexport { recoverPassword } from '../../idx/recoverPassword.js';\nexport { handleInteractionCodeRedirect } from '../../idx/handleInteractionCodeRedirect.js';\nexport { startTransaction } from '../../idx/startTransaction.js';\nexport { unlockAccount } from '../../idx/unlockAccount.js';\nexport { clearTransactionMeta, createTransactionMeta, getSavedTransactionMeta, getTransactionMeta, hasSavedInteractionHandle, isTransactionMetaValid, isTransactionMetaValidForFlow, isTransactionMetaValidForOptions, saveTransactionMeta } from '../../idx/transactionMeta.js';\nexport { createIdxAPI } from '../../idx/factory/api.js';\nimport { createOktaAuthIdx } from '../../idx/factory/OktaAuthIdx.js';\nexport { createOktaAuthIdx } from '../../idx/factory/OktaAuthIdx.js';\nexport { createMinimalOktaAuthIdx } from '../../idx/factory/MinimalOktaAuthIdx.js';\nexport { mixinIdx } from '../../idx/mixin.js';\nimport { createIdxOptionsConstructor } from '../../idx/options.js';\nexport { createIdxOptionsConstructor } from '../../idx/options.js';\nimport { createIdxStorageManager } from '../../idx/storage.js';\nexport { createIdxStorageManager } from '../../idx/storage.js';\nexport { AuthenticatorKey, IdxFeature, IdxStatus, isAuthenticator } from '../../idx/types/api.js';\nimport { createIdxTransactionManager } from '../../idx/IdxTransactionManager.js';\nexport { createIdxTransactionManager } from '../../idx/IdxTransactionManager.js';\nexport { getProfile, getProfileSchema, updateProfile } from '../../myaccount/profileApi.js';\nexport { addEmail, deleteEmail, getEmail, getEmailChallenge, getEmails, sendEmailChallenge, verifyEmailChallenge } from '../../myaccount/emailApi.js';\nexport { addPhone, deletePhone, getPhone, getPhones, sendPhoneChallenge, verifyPhoneChallenge } from '../../myaccount/phoneApi.js';\nexport { deletePassword, enrollPassword, getPassword, updatePassword } from '../../myaccount/passwordApi.js';\nexport { createOktaAuthMyAccount } from '../../myaccount/factory.js';\nimport { mixinMyAccount } from '../../myaccount/mixin.js';\nexport { mixinMyAccount } from '../../myaccount/mixin.js';\nexport { EmailRole, PasswordStatus, Status } from '../../myaccount/types.js';\nexport { createAuthnTransactionAPI } from '../../authn/factory.js';\nimport { mixinAuthn } from '../../authn/mixin.js';\nexport { mixinAuthn } from '../../authn/mixin.js';\nimport * as index from '../../crypto/index.js';\nexport { index as crypto };\nexport { createOktaAuthBase } from '../../base/factory.js';\nexport { createBaseOptionsConstructor } from '../../base/options.js';\nexport { ACCESS_TOKEN_STORAGE_KEY, CACHE_STORAGE_NAME, DEFAULT_CACHE_DURATION, DEFAULT_CODE_CHALLENGE_METHOD, DEFAULT_MAX_CLOCK_SKEW, DEFAULT_POLLING_DELAY, IDX_API_VERSION, IDX_RESPONSE_STORAGE_NAME, ID_TOKEN_STORAGE_KEY, IOS_MAX_RETRY_COUNT, MAX_VERIFIER_LENGTH, MIN_VERIFIER_LENGTH, ORIGINAL_URI_STORAGE_NAME, PKCE_STORAGE_NAME, REFERRER_PATH_STORAGE_KEY, REFRESH_TOKEN_STORAGE_KEY, SHARED_TRANSACTION_STORAGE_NAME, STATE_TOKEN_KEY_NAME, TOKEN_STORAGE_NAME, TRANSACTION_STORAGE_NAME } from '../../constants.js';\nexport { AuthStateManager, INITIAL_AUTH_STATE } from '../../core/AuthStateManager.js';\nexport { createCoreOptionsConstructor } from '../../core/options.js';\nexport { createOktaAuthCore } from '../../core/factory.js';\nexport { mixinCore } from '../../core/mixin.js';\nexport { createCoreStorageManager } from '../../core/storage.js';\nexport { ServiceManager } from '../../core/ServiceManager/browser.js';\nexport { isAuthApiError, isOAuthError, isWWWAuthError } from '../../errors/index.js';\nexport { setRequestHeader } from '../../http/headers.js';\nexport { OktaUserAgent } from '../../http/OktaUserAgent.js';\nexport { get, httpRequest, post } from '../../http/request.js';\nexport { mixinHttp } from '../../http/mixin.js';\nexport { createHttpOptionsConstructor } from '../../http/options.js';\nexport { createEndpoints, createTokenAPI } from '../../oidc/factory/api.js';\nexport { createOktaAuthOAuth } from '../../oidc/factory/OktaAuthOAuth.js';\nexport { mixinOAuth } from '../../oidc/mixin/index.js';\nexport { createOAuthStorageManager } from '../../oidc/storage.js';\nexport { buildAuthorizeParams, convertTokenParamsToOAuthParams } from '../../oidc/endpoints/authorize.js';\nexport { postRefreshToken, postToTokenEndpoint } from '../../oidc/endpoints/token.js';\nexport { getKey, getWellKnown } from '../../oidc/endpoints/well-known.js';\nexport { createOAuthOptionsConstructor } from '../../oidc/options/OAuthOptionsConstructor.js';\nexport { TokenKind, isAccessToken, isIDToken, isRefreshToken, isToken } from '../../oidc/types/Token.js';\nexport { EVENT_ADDED, EVENT_ERROR, EVENT_EXPIRED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE } from '../../oidc/types/TokenManager.js';\nexport { isCustomAuthTransactionMeta, isIdxTransactionMeta, isOAuthTransactionMeta, isPKCETransactionMeta, isTransactionMeta } from '../../oidc/types/Transaction.js';\nexport { TokenManager } from '../../oidc/TokenManager.js';\nexport { createTransactionManager } from '../../oidc/TransactionManager.js';\nexport { addIDPPopupLisenter, addListener, addPostMessageListener, loadFrame, loadPopup, removeListener } from '../../oidc/util/browser.js';\nexport { getDefaultTokenParams } from '../../oidc/util/defaultTokenParams.js';\nexport { getDefaultEnrollAuthenticatorParams } from '../../oidc/util/defaultEnrollAuthenticatorParams.js';\nexport { isAuthorizationCodeError, isInteractionRequiredError, isRefreshTokenInvalidError } from '../../oidc/util/errors.js';\nexport { getHashOrSearch, hasAuthorizationCode, hasErrorInUrl, hasInteractionCode, hasResponseType, hasTokensInHash, isCodeFlow, isInteractionRequired, isLoginRedirect, isRedirectUri } from '../../oidc/util/loginRedirect.js';\nexport { generateNonce, generateState, getOAuthBaseUrl, getOAuthDomain, getOAuthUrls } from '../../oidc/util/oauth.js';\nexport { createOAuthMeta } from '../../oidc/util/oauthMeta.js';\nexport { createEnrollAuthenticatorMeta } from '../../oidc/util/enrollAuthenticatorMeta.js';\nexport { default as pkce } from '../../oidc/util/pkce.js';\nexport { assertPKCESupport, preparePKCE, prepareTokenParams, validateCodeChallengeMethod } from '../../oidc/util/prepareTokenParams.js';\nexport { prepareEnrollAuthenticatorParams } from '../../oidc/util/prepareEnrollAuthenticatorParams.js';\nexport { isRefreshTokenError, isSameRefreshToken } from '../../oidc/util/refreshToken.js';\nexport { urlParamsToObject } from '../../oidc/util/urlParams.js';\nexport { validateClaims } from '../../oidc/util/validateClaims.js';\nexport { validateToken } from '../../oidc/util/validateToken.js';\nexport { decodeToken } from '../../oidc/decodeToken.js';\nexport { revokeToken } from '../../oidc/revokeToken.js';\nexport { renewToken } from '../../oidc/renewToken.js';\nexport { renewTokensWithRefresh } from '../../oidc/renewTokensWithRefresh.js';\nexport { renewTokens } from '../../oidc/renewTokens.js';\nexport { verifyToken } from '../../oidc/verifyToken.js';\nexport { getUserInfo } from '../../oidc/getUserInfo.js';\nexport { handleOAuthResponse } from '../../oidc/handleOAuthResponse.js';\nexport { exchangeCodeForTokens } from '../../oidc/exchangeCodeForTokens.js';\nexport { getToken } from '../../oidc/getToken.js';\nexport { getWithoutPrompt } from '../../oidc/getWithoutPrompt.js';\nexport { getWithIDPPopup, getWithPopup } from '../../oidc/getWithPopup.js';\nexport { getWithRedirect } from '../../oidc/getWithRedirect.js';\nexport { parseFromUrl } from '../../oidc/parseFromUrl.js';\nexport { oidcIntrospect } from '../../oidc/introspect.js';\nexport { closeSession, getSession, refreshSession, sessionExists, setCookieAndRedirect } from '../../session/api.js';\nexport { createSessionApi } from '../../session/factory.js';\nexport { mixinSession } from '../../session/mixin.js';\nexport { createStorageOptionsConstructor } from '../../storage/options/StorageOptionsConstructor.js';\nexport { BaseStorageManager, logServerSideMemoryStorageWarning } from '../../storage/BaseStorageManager.js';\nexport { mixinStorage } from '../../storage/mixin.js';\nexport { SavedObject } from '../../storage/SavedObject.js';\nexport { deprecate, deprecateWrap, getConsole, getNativeConsole, warn } from '../../util/console.js';\nexport { delay, genRandomString, isoToUTCString, split2 } from '../../util/misc.js';\nexport { bind, clone, extend, find, getLink, omit, removeNils } from '../../util/object.js';\nexport { PromiseQueue } from '../../util/PromiseQueue.js';\nexport { isFunction, isNumber, isObject, isPromise, isString } from '../../util/types.js';\nexport { isAbsoluteUrl, removeTrailingSlash, toAbsoluteUrl, toQueryString, toRelativeUrl } from '../../util/url.js';\nexport { default as AuthApiError } from '../../errors/AuthApiError.js';\nexport { default as AuthPollStopError } from '../../errors/AuthPollStopError.js';\nexport { default as AuthSdkError } from '../../errors/AuthSdkError.js';\nexport { default as OAuthError } from '../../errors/OAuthError.js';\nexport { default as WWWAuthError } from '../../errors/WWWAuthError.js';\n\nconst OptionsConstructor = createIdxOptionsConstructor();\nconst StorageManager = createIdxStorageManager();\nconst TransactionManager = createIdxTransactionManager();\nconst WithIdx = createOktaAuthIdx(StorageManager, OptionsConstructor, TransactionManager);\nconst WithMyAccount = mixinMyAccount(WithIdx);\nconst WithAuthn = mixinAuthn(WithMyAccount);\nclass OktaAuth extends WithAuthn {\n    constructor(options) {\n        super(options);\n    }\n}\n\nexport { OktaAuth, OktaAuth as default };\n//# sourceMappingURL=default.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createCoreOptionsConstructor } from '../core/options.js';\n\nfunction createIdxOptionsConstructor() {\n    const CoreOptionsConstructor = createCoreOptionsConstructor();\n    return class IdxOptionsConstructor extends CoreOptionsConstructor {\n        constructor(options) {\n            super(options);\n            this.flow = options.flow;\n            this.activationToken = options.activationToken;\n            this.recoveryToken = options.recoveryToken;\n            this.idx = options.idx;\n        }\n    };\n}\n\nexport { createIdxOptionsConstructor };\n//# sourceMappingURL=options.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../errors/WWWAuthError.js';\nimport '../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../oidc/types/Token.js';\nimport '../_virtual/_tslib.js';\nimport { createOAuthOptionsConstructor } from '../oidc/options/OAuthOptionsConstructor.js';\n\nfunction createCoreOptionsConstructor() {\n    const OAuthOptionsConstructor = createOAuthOptionsConstructor();\n    return class CoreOptionsConstructor extends OAuthOptionsConstructor {\n        constructor(options) {\n            super(options);\n            this.services = options.services;\n            this.transformAuthState = options.transformAuthState;\n        }\n    };\n}\n\nexport { createCoreOptionsConstructor };\n//# sourceMappingURL=options.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { warn } from '../util/console.js';\nimport { isBrowser } from '../features.js';\nimport { IDX_RESPONSE_STORAGE_NAME } from '../constants.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport AuthSdkError from '../errors/AuthSdkError.js';\nimport { SavedObject } from '../storage/SavedObject.js';\nimport { createCoreStorageManager } from '../core/storage.js';\n\nfunction createIdxStorageManager() {\n    const CoreStorageManager = createCoreStorageManager();\n    return class IdxStorageManager extends CoreStorageManager {\n        constructor(storageManagerOptions, cookieOptions, storageUtil) {\n            super(storageManagerOptions, cookieOptions, storageUtil);\n        }\n        getIdxResponseStorage(options) {\n            let storage;\n            if (isBrowser()) {\n                try {\n                    storage = this.storageUtil.getStorageByType('memory', options);\n                }\n                catch (e) {\n                    warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n                }\n            }\n            else {\n                const transactionStorage = this.getTransactionStorage(options);\n                if (transactionStorage) {\n                    storage = {\n                        getItem: (key) => {\n                            const transaction = transactionStorage.getStorage();\n                            if (transaction && transaction[key]) {\n                                return transaction[key];\n                            }\n                            return null;\n                        },\n                        setItem: (key, val) => {\n                            const transaction = transactionStorage.getStorage();\n                            if (!transaction) {\n                                throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n                            }\n                            transaction[key] = val;\n                            transactionStorage.setStorage(transaction);\n                        },\n                        removeItem: (key) => {\n                            const transaction = transactionStorage.getStorage();\n                            if (!transaction) {\n                                return;\n                            }\n                            delete transaction[key];\n                            transactionStorage.setStorage(transaction);\n                        }\n                    };\n                }\n            }\n            if (!storage) {\n                return null;\n            }\n            return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n        }\n    };\n}\n\nexport { createIdxStorageManager };\n//# sourceMappingURL=storage.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { BaseStorageManager, logServerSideMemoryStorageWarning } from '../storage/BaseStorageManager.js';\nimport '../errors/WWWAuthError.js';\nimport { TRANSACTION_STORAGE_NAME, SHARED_TRANSACTION_STORAGE_NAME, ORIGINAL_URI_STORAGE_NAME } from '../constants.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport { SavedObject } from '../storage/SavedObject.js';\n\nfunction createOAuthStorageManager() {\n    return class OAuthStorageManager extends BaseStorageManager {\n        constructor(storageManagerOptions, cookieOptions, storageUtil) {\n            super(storageManagerOptions, cookieOptions, storageUtil);\n        }\n        getTransactionStorage(options) {\n            options = this.getOptionsForSection('transaction', options);\n            logServerSideMemoryStorageWarning(options);\n            const storage = this.getStorage(options);\n            const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n            return new SavedObject(storage, storageKey);\n        }\n        getSharedTansactionStorage(options) {\n            options = this.getOptionsForSection('shared-transaction', options);\n            logServerSideMemoryStorageWarning(options);\n            const storage = this.getStorage(options);\n            const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n            return new SavedObject(storage, storageKey);\n        }\n        getOriginalUriStorage(options) {\n            options = this.getOptionsForSection('original-uri', options);\n            logServerSideMemoryStorageWarning(options);\n            const storage = this.getStorage(options);\n            const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n            return new SavedObject(storage, storageKey);\n        }\n    };\n}\n\nexport { createOAuthStorageManager };\n//# sourceMappingURL=storage.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createOktaAuthCore } from '../../core/factory.js';\nimport { mixinIdx } from '../mixin.js';\n\nfunction createOktaAuthIdx(StorageManagerConstructor, OptionsConstructor, TransactionManagerConstructor) {\n    const Core = createOktaAuthCore(StorageManagerConstructor, OptionsConstructor, TransactionManagerConstructor);\n    const WithIdx = mixinIdx(Core);\n    return WithIdx;\n}\n\nexport { createOktaAuthIdx };\n//# sourceMappingURL=OktaAuthIdx.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createIdxAPI } from './factory/api.js';\nimport fingerprint from '../browser/fingerprint.js';\nimport * as webauthn from './webauthn.js';\n\nfunction mixinIdx(Base) {\n    var _a;\n    return _a = class OktaAuthIdx extends Base {\n            constructor(...args) {\n                super(...args);\n                this.idx = createIdxAPI(this);\n                this.fingerprint = fingerprint.bind(null, this);\n            }\n        },\n        _a.webauthn = webauthn,\n        _a;\n}\n\nexport { mixinIdx };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../../errors/WWWAuthError.js';\nimport { isInteractionRequiredError } from '../../oidc/util/errors.js';\nimport { isInteractionRequired } from '../../oidc/util/loginRedirect.js';\nimport '../../http/request.js';\nimport 'tiny-emitter';\nimport 'js-cookie';\nimport 'cross-fetch';\nimport '../../oidc/types/Token.js';\nimport '../../_virtual/_tslib.js';\nimport { authenticate } from '../authenticate.js';\nimport { cancel } from '../cancel.js';\nimport { handleEmailVerifyCallback, isEmailVerifyCallback, parseEmailVerifyCallback, isEmailVerifyCallbackError } from '../emailVerify.js';\nimport { handleInteractionCodeRedirect } from '../handleInteractionCodeRedirect.js';\nimport { makeIdxState } from '../idxState/index.js';\nimport { interact } from '../interact.js';\nimport { introspect } from '../introspect.js';\nimport { poll } from '../poll.js';\nimport { proceed, canProceed } from '../proceed.js';\nimport { recoverPassword } from '../recoverPassword.js';\nimport { register } from '../register.js';\nimport { startTransaction } from '../startTransaction.js';\nimport { getSavedTransactionMeta, createTransactionMeta, getTransactionMeta, saveTransactionMeta, clearTransactionMeta, isTransactionMetaValid } from '../transactionMeta.js';\nimport { unlockAccount } from '../unlockAccount.js';\nimport * as index from '../remediators/index.js';\nimport { getFlowSpecification } from '../flow/FlowSpecification.js';\nimport { setRemediatorsCtx } from '../util.js';\n\nfunction createIdxAPI(sdk) {\n    setRemediatorsCtx({\n        remediators: index,\n        getFlowSpecification,\n    });\n    const boundStartTransaction = startTransaction.bind(null, sdk);\n    const idx = {\n        interact: interact.bind(null, sdk),\n        introspect: introspect.bind(null, sdk),\n        makeIdxResponse: makeIdxState.bind(null, sdk),\n        authenticate: authenticate.bind(null, sdk),\n        register: register.bind(null, sdk),\n        start: boundStartTransaction,\n        startTransaction: boundStartTransaction,\n        poll: poll.bind(null, sdk),\n        proceed: proceed.bind(null, sdk),\n        cancel: cancel.bind(null, sdk),\n        recoverPassword: recoverPassword.bind(null, sdk),\n        handleInteractionCodeRedirect: handleInteractionCodeRedirect.bind(null, sdk),\n        isInteractionRequired: isInteractionRequired.bind(null, sdk),\n        isInteractionRequiredError,\n        handleEmailVerifyCallback: handleEmailVerifyCallback.bind(null, sdk),\n        isEmailVerifyCallback,\n        parseEmailVerifyCallback,\n        isEmailVerifyCallbackError,\n        getSavedTransactionMeta: getSavedTransactionMeta.bind(null, sdk),\n        createTransactionMeta: createTransactionMeta.bind(null, sdk),\n        getTransactionMeta: getTransactionMeta.bind(null, sdk),\n        saveTransactionMeta: saveTransactionMeta.bind(null, sdk),\n        clearTransactionMeta: clearTransactionMeta.bind(null, sdk),\n        isTransactionMetaValid,\n        setFlow: (flow) => {\n            sdk.options.flow = flow;\n        },\n        getFlow: () => {\n            return sdk.options.flow;\n        },\n        canProceed: canProceed.bind(null, sdk),\n        unlockAccount: unlockAccount.bind(null, sdk),\n    };\n    return idx;\n}\n\nexport { createIdxAPI };\n//# sourceMappingURL=api.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createTransactionManager } from '../oidc/TransactionManager.js';\nimport { isRawIdxResponse } from './types/idx-js.js';\n\nfunction createIdxTransactionManager() {\n    const TransactionManager = createTransactionManager();\n    return class IdxTransactionManager extends TransactionManager {\n        constructor(options) {\n            super(options);\n        }\n        clear(options = {}) {\n            super.clear(options);\n            if (options.clearIdxResponse !== false) {\n                this.clearIdxResponse();\n            }\n        }\n        saveIdxResponse(data) {\n            if (!this.saveLastResponse) {\n                return;\n            }\n            const storage = this.storageManager.getIdxResponseStorage();\n            if (!storage) {\n                return;\n            }\n            storage.setStorage(data);\n        }\n        loadIdxResponse(options) {\n            if (!this.saveLastResponse) {\n                return null;\n            }\n            const storage = this.storageManager.getIdxResponseStorage();\n            if (!storage) {\n                return null;\n            }\n            const storedValue = storage.getStorage();\n            if (!storedValue || !isRawIdxResponse(storedValue.rawIdxResponse)) {\n                return null;\n            }\n            if (options) {\n                const { stateHandle, interactionHandle } = options;\n                if (!options.useGenericRemediator && stateHandle && storedValue.stateHandle !== stateHandle) {\n                    return null;\n                }\n                if (interactionHandle && storedValue.interactionHandle !== interactionHandle) {\n                    return null;\n                }\n            }\n            return storedValue;\n        }\n        clearIdxResponse() {\n            if (!this.saveLastResponse) {\n                return;\n            }\n            const storage = this.storageManager.getIdxResponseStorage();\n            storage === null || storage === void 0 ? void 0 : storage.clearStorage();\n        }\n    };\n}\n\nexport { createIdxTransactionManager };\n//# sourceMappingURL=IdxTransactionManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport './types/Token.js';\nimport { isTransactionMeta } from './types/Transaction.js';\nimport { warn } from '../util/console.js';\nimport { clearTransactionFromSharedStorage, saveTransactionToSharedStorage, pruneSharedStorage, loadTransactionFromSharedStorage } from './util/sharedStorage.js';\n\nfunction createTransactionManager() {\n    return class TransactionManager {\n        constructor(options) {\n            this.storageManager = options.storageManager;\n            this.enableSharedStorage = options.enableSharedStorage === false ? false : true;\n            this.saveLastResponse = options.saveLastResponse === false ? false : true;\n            this.options = options;\n        }\n        clear(options = {}) {\n            const transactionStorage = this.storageManager.getTransactionStorage();\n            const meta = transactionStorage.getStorage();\n            transactionStorage.clearStorage();\n            if (this.enableSharedStorage && options.clearSharedStorage !== false) {\n                const state = options.state || (meta === null || meta === void 0 ? void 0 : meta.state);\n                if (state) {\n                    clearTransactionFromSharedStorage(this.storageManager, state);\n                }\n            }\n        }\n        save(meta, options = {}) {\n            let storage = this.storageManager.getTransactionStorage();\n            const obj = storage.getStorage();\n            if (isTransactionMeta(obj) && !options.muteWarning) {\n                warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n            }\n            storage.setStorage(meta);\n            if (this.enableSharedStorage && meta.state) {\n                saveTransactionToSharedStorage(this.storageManager, meta.state, meta);\n            }\n        }\n        exists(options = {}) {\n            try {\n                const meta = this.load(options);\n                return !!meta;\n            }\n            catch (_a) {\n                return false;\n            }\n        }\n        load(options = {}) {\n            let meta;\n            if (this.enableSharedStorage && options.state) {\n                pruneSharedStorage(this.storageManager);\n                meta = loadTransactionFromSharedStorage(this.storageManager, options.state);\n                if (isTransactionMeta(meta)) {\n                    return meta;\n                }\n            }\n            let storage = this.storageManager.getTransactionStorage();\n            meta = storage.getStorage();\n            if (isTransactionMeta(meta)) {\n                return meta;\n            }\n            return null;\n        }\n    };\n}\n\nexport { createTransactionManager };\n//# sourceMappingURL=TransactionManager.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport '../types/Token.js';\nimport { isTransactionMeta } from '../types/Transaction.js';\n\nconst MAX_ENTRY_LIFETIME = 30 * 60 * 1000;\nfunction pruneSharedStorage(storageManager) {\n    const sharedStorage = storageManager.getSharedTansactionStorage();\n    const entries = sharedStorage.getStorage();\n    Object.keys(entries).forEach(state => {\n        const entry = entries[state];\n        const age = Date.now() - entry.dateCreated;\n        if (age > MAX_ENTRY_LIFETIME) {\n            delete entries[state];\n        }\n    });\n    sharedStorage.setStorage(entries);\n}\nfunction saveTransactionToSharedStorage(storageManager, state, meta) {\n    const sharedStorage = storageManager.getSharedTansactionStorage();\n    const entries = sharedStorage.getStorage();\n    entries[state] = {\n        dateCreated: Date.now(),\n        transaction: meta\n    };\n    sharedStorage.setStorage(entries);\n}\nfunction loadTransactionFromSharedStorage(storageManager, state) {\n    const sharedStorage = storageManager.getSharedTansactionStorage();\n    const entries = sharedStorage.getStorage();\n    const entry = entries[state];\n    if (entry && entry.transaction && isTransactionMeta(entry.transaction)) {\n        return entry.transaction;\n    }\n    return null;\n}\nfunction clearTransactionFromSharedStorage(storageManager, state) {\n    const sharedStorage = storageManager.getSharedTansactionStorage();\n    const entries = sharedStorage.getStorage();\n    delete entries[state];\n    sharedStorage.setStorage(entries);\n}\n\nexport { clearTransactionFromSharedStorage, loadTransactionFromSharedStorage, pruneSharedStorage, saveTransactionToSharedStorage };\n//# sourceMappingURL=sharedStorage.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as api from './api.js';\n\nfunction mixinMyAccount(Base) {\n    return class OktaAuthMyAccount extends Base {\n        constructor(...args) {\n            super(...args);\n            this.myaccount = Object.entries(api)\n                .filter(([name]) => name !== 'default')\n                .reduce((acc, [name, fn]) => {\n                acc[name] = fn.bind(null, this);\n                return acc;\n            }, {});\n        }\n    };\n}\n\nexport { mixinMyAccount };\n//# sourceMappingURL=mixin.js.map\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { __rest } from '../_virtual/_tslib.js';\nimport { clone } from '../util/object.js';\nimport fingerprint from '../browser/fingerprint.js';\nimport { createAuthnTransactionAPI } from './factory.js';\n\nfunction mixinAuthn(Base) {\n    return class OktaAuthTx extends Base {\n        constructor(...args) {\n            super(...args);\n            this.authn = this.tx = createAuthnTransactionAPI(this);\n            this.fingerprint = fingerprint.bind(null, this);\n        }\n        async signIn(opts) {\n            opts = clone(opts || {});\n            const _postToTransaction = (options) => {\n                delete opts.sendFingerprint;\n                return this.tx.postToTransaction('/api/v1/authn', opts, options);\n            };\n            if (!opts.sendFingerprint) {\n                return _postToTransaction();\n            }\n            return this.fingerprint()\n                .then(function (fingerprint) {\n                return _postToTransaction({\n                    headers: {\n                        'X-Device-Fingerprint': fingerprint\n                    }\n                });\n            });\n        }\n        async signInWithCredentials(opts) {\n            return this.signIn(opts);\n        }\n        forgotPassword(opts) {\n            return this.tx.postToTransaction('/api/v1/authn/recovery/password', opts);\n        }\n        unlockAccount(opts) {\n            return this.tx.postToTransaction('/api/v1/authn/recovery/unlock', opts);\n        }\n        verifyRecoveryToken(opts) {\n            const { multiOptionalFactorEnroll } = opts, args = __rest(opts, [\"multiOptionalFactorEnroll\"]);\n            if (multiOptionalFactorEnroll) {\n                args.options = { multiOptionalFactorEnroll };\n            }\n            return this.tx.postToTransaction('/api/v1/authn/recovery/token', args);\n        }\n    };\n}\n\nexport { mixinAuthn };\n//# sourceMappingURL=mixin.js.map\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","'use strict';\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n      var $required = [];\n      var arr1 = $schema;\n      if (arr1) {\n        var $property, i1 = -1,\n          l1 = arr1.length - 1;\n        while (i1 < l1) {\n          $property = arr1[i1 += 1];\n          var $propertySch = it.schema.properties[$property];\n          if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {\n            $required[$required.length] = $property;\n          }\n        }\n      }\n    } else {\n      var $required = $schema;\n    }\n  }\n  if ($isData || $required.length) {\n    var $currentErrorPath = it.errorPath,\n      $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n      $ownProperties = it.opts.ownProperties;\n    if ($breakOnError) {\n      out += ' var missing' + ($lvl) + '; ';\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        out += ' var ' + ($valid) + ' = true; ';\n        if ($isData) {\n          out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n        if ($ownProperties) {\n          out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += '; if (!' + ($valid) + ') break; } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n        out += '  if (!' + ($valid) + ') {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      } else {\n        out += ' if ( ';\n        var arr2 = $required;\n        if (arr2) {\n          var $propertyKey, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $propertyKey = arr2[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ') {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      }\n    } else {\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        if ($isData) {\n          out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is a required property';\n              } else {\n                out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n        if ($ownProperties) {\n          out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += ') {  var err =   '; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n      } else {\n        var arr3 = $required;\n        if (arr3) {\n          var $propertyKey, i3 = -1,\n            l3 = arr3.length - 1;\n          while (i3 < l3) {\n            $propertyKey = arr3[i3 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'';\n                if (it.opts._errorDataPathProperty) {\n                  out += 'is a required property';\n                } else {\n                  out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                }\n                out += '\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n    }\n    it.errorPath = $currentErrorPath;\n  } else if ($breakOnError) {\n    out += ' if (true) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxLength' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  if (it.opts.unicode === false) {\n    out += ' ' + ($data) + '.length ';\n  } else {\n    out += ' ucs2length(' + ($data) + ') ';\n  }\n  out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT be ';\n      if ($keyword == 'maxLength') {\n        out += 'longer';\n      } else {\n        out += 'shorter';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' characters\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","(() => {\n  var e = {\n      2705: (e, t, r) => {\n        var o = r(5639).Symbol;\n        e.exports = o;\n      },\n      6874: e => {\n        e.exports = function(e, t, r) {\n          switch (r.length) {\n            case 0:\n              return e.call(t);\n            case 1:\n              return e.call(t, r[0]);\n            case 2:\n              return e.call(t, r[0], r[1]);\n            case 3:\n              return e.call(t, r[0], r[1], r[2]);\n          }\n          return e.apply(t, r);\n        };\n      },\n      4636: (e, t, r) => {\n        var o = r(2545),\n          s = r(5694),\n          n = r(1469),\n          a = r(4144),\n          i = r(5776),\n          l = r(6719),\n          u = Object.prototype.hasOwnProperty;\n        e.exports = function(e, t) {\n          var r = n(e),\n            c = !r && s(e),\n            p = !r && !c && a(e),\n            h = !r && !c && !p && l(e),\n            m = r || c || p || h,\n            d = m ? o(e.length, String) : [],\n            f = d.length;\n          for (var y in e)\n            (!t && !u.call(e, y)) ||\n              (m &&\n                ('length' == y ||\n                  (p && ('offset' == y || 'parent' == y)) ||\n                  (h && ('buffer' == y || 'byteLength' == y || 'byteOffset' == y)) ||\n                  i(y, f))) ||\n              d.push(y);\n          return d;\n        };\n      },\n      9932: e => {\n        e.exports = function(e, t) {\n          for (var r = -1, o = null == e ? 0 : e.length, s = Array(o); ++r < o; )\n            s[r] = t(e[r], r, e);\n          return s;\n        };\n      },\n      4865: (e, t, r) => {\n        var o = r(9465),\n          s = r(7813),\n          n = Object.prototype.hasOwnProperty;\n        e.exports = function(e, t, r) {\n          var a = e[t];\n          (n.call(e, t) && s(a, r) && (void 0 !== r || t in e)) || o(e, t, r);\n        };\n      },\n      9465: (e, t, r) => {\n        var o = r(8777);\n        e.exports = function(e, t, r) {\n          '__proto__' == t && o\n            ? o(e, t, { configurable: !0, enumerable: !0, value: r, writable: !0 })\n            : (e[t] = r);\n        };\n      },\n      4239: (e, t, r) => {\n        var o = r(2705),\n          s = r(9607),\n          n = r(2333),\n          a = o ? o.toStringTag : void 0;\n        e.exports = function(e) {\n          return null == e\n            ? void 0 === e ? '[object Undefined]' : '[object Null]'\n            : a && a in Object(e) ? s(e) : n(e);\n        };\n      },\n      9454: (e, t, r) => {\n        var o = r(4239),\n          s = r(7005);\n        e.exports = function(e) {\n          return s(e) && '[object Arguments]' == o(e);\n        };\n      },\n      8458: (e, t, r) => {\n        var o = r(3560),\n          s = r(5346),\n          n = r(3218),\n          a = r(346),\n          i = /^\\[object .+?Constructor\\]$/,\n          l = Function.prototype,\n          u = Object.prototype,\n          c = l.toString,\n          p = u.hasOwnProperty,\n          h = RegExp(\n            '^' +\n              c\n                .call(p)\n                .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n                .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') +\n              '$'\n          );\n        e.exports = function(e) {\n          return !(!n(e) || s(e)) && (o(e) ? h : i).test(a(e));\n        };\n      },\n      8749: (e, t, r) => {\n        var o = r(4239),\n          s = r(1780),\n          n = r(7005),\n          a = {};\n        (a['[object Float32Array]'] = a['[object Float64Array]'] = a['[object Int8Array]'] = a[\n          '[object Int16Array]'\n        ] = a['[object Int32Array]'] = a['[object Uint8Array]'] = a[\n          '[object Uint8ClampedArray]'\n        ] = a['[object Uint16Array]'] = a['[object Uint32Array]'] = !0),\n          (a['[object Arguments]'] = a['[object Array]'] = a['[object ArrayBuffer]'] = a[\n            '[object Boolean]'\n          ] = a['[object DataView]'] = a['[object Date]'] = a['[object Error]'] = a[\n            '[object Function]'\n          ] = a['[object Map]'] = a['[object Number]'] = a['[object Object]'] = a[\n            '[object RegExp]'\n          ] = a['[object Set]'] = a['[object String]'] = a['[object WeakMap]'] = !1),\n          (e.exports = function(e) {\n            return n(e) && s(e.length) && !!a[o(e)];\n          });\n      },\n      280: (e, t, r) => {\n        var o = r(5726),\n          s = r(6916),\n          n = Object.prototype.hasOwnProperty;\n        e.exports = function(e) {\n          if (!o(e)) return s(e);\n          var t = [];\n          for (var r in Object(e)) n.call(e, r) && 'constructor' != r && t.push(r);\n          return t;\n        };\n      },\n      313: (e, t, r) => {\n        var o = r(3218),\n          s = r(5726),\n          n = r(3498),\n          a = Object.prototype.hasOwnProperty;\n        e.exports = function(e) {\n          if (!o(e)) return n(e);\n          var t = s(e),\n            r = [];\n          for (var i in e) ('constructor' != i || (!t && a.call(e, i))) && r.push(i);\n          return r;\n        };\n      },\n      8674: e => {\n        e.exports = function(e) {\n          return function(t) {\n            return null == e ? void 0 : e[t];\n          };\n        };\n      },\n      5976: (e, t, r) => {\n        var o = r(6557),\n          s = r(5357),\n          n = r(61);\n        e.exports = function(e, t) {\n          return n(s(e, t, o), e + '');\n        };\n      },\n      6560: (e, t, r) => {\n        var o = r(5703),\n          s = r(8777),\n          n = r(6557),\n          a = s\n            ? function(e, t) {\n                return s(e, 'toString', {\n                  configurable: !0,\n                  enumerable: !1,\n                  value: o(t),\n                  writable: !0\n                });\n              }\n            : n;\n        e.exports = a;\n      },\n      2545: e => {\n        e.exports = function(e, t) {\n          for (var r = -1, o = Array(e); ++r < e; ) o[r] = t(r);\n          return o;\n        };\n      },\n      531: (e, t, r) => {\n        var o = r(2705),\n          s = r(9932),\n          n = r(1469),\n          a = r(3448),\n          i = o ? o.prototype : void 0,\n          l = i ? i.toString : void 0;\n        e.exports = function e(t) {\n          if ('string' == typeof t) return t;\n          if (n(t)) return s(t, e) + '';\n          if (a(t)) return l ? l.call(t) : '';\n          var r = t + '';\n          return '0' == r && 1 / t == -Infinity ? '-0' : r;\n        };\n      },\n      7518: e => {\n        e.exports = function(e) {\n          return function(t) {\n            return e(t);\n          };\n        };\n      },\n      7415: (e, t, r) => {\n        var o = r(9932);\n        e.exports = function(e, t) {\n          return o(t, function(t) {\n            return e[t];\n          });\n        };\n      },\n      8363: (e, t, r) => {\n        var o = r(4865),\n          s = r(9465);\n        e.exports = function(e, t, r, n) {\n          var a = !r;\n          r || (r = {});\n          for (var i = -1, l = t.length; ++i < l; ) {\n            var u = t[i],\n              c = n ? n(r[u], e[u], u, r, e) : void 0;\n            void 0 === c && (c = e[u]), a ? s(r, u, c) : o(r, u, c);\n          }\n          return r;\n        };\n      },\n      4429: (e, t, r) => {\n        var o = r(5639)['__core-js_shared__'];\n        e.exports = o;\n      },\n      1463: (e, t, r) => {\n        var o = r(5976),\n          s = r(6612);\n        e.exports = function(e) {\n          return o(function(t, r) {\n            var o = -1,\n              n = r.length,\n              a = n > 1 ? r[n - 1] : void 0,\n              i = n > 2 ? r[2] : void 0;\n            for (\n              a = e.length > 3 && 'function' == typeof a ? (n--, a) : void 0,\n                i && s(r[0], r[1], i) && ((a = n < 3 ? void 0 : a), (n = 1)),\n                t = Object(t);\n              ++o < n;\n\n            ) {\n              var l = r[o];\n              l && e(t, l, o, a);\n            }\n            return t;\n          });\n        };\n      },\n      4626: (e, t, r) => {\n        var o = r(7813),\n          s = Object.prototype,\n          n = s.hasOwnProperty;\n        e.exports = function(e, t, r, a) {\n          return void 0 === e || (o(e, s[r]) && !n.call(a, r)) ? t : e;\n        };\n      },\n      8777: (e, t, r) => {\n        var o = r(852),\n          s = (function() {\n            try {\n              var e = o(Object, 'defineProperty');\n              return e({}, '', {}), e;\n            } catch (e) {}\n          })();\n        e.exports = s;\n      },\n      9464: (e, t, r) => {\n        var o = r(8674)({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' });\n        e.exports = o;\n      },\n      1994: e => {\n        var t = {\n          '\\\\': '\\\\',\n          \"'\": \"'\",\n          '\\n': 'n',\n          '\\r': 'r',\n          '\\u2028': 'u2028',\n          '\\u2029': 'u2029'\n        };\n        e.exports = function(e) {\n          return '\\\\' + t[e];\n        };\n      },\n      1957: (e, t, r) => {\n        var o = 'object' == typeof r.g && r.g && r.g.Object === Object && r.g;\n        e.exports = o;\n      },\n      852: (e, t, r) => {\n        var o = r(8458),\n          s = r(7801);\n        e.exports = function(e, t) {\n          var r = s(e, t);\n          return o(r) ? r : void 0;\n        };\n      },\n      5924: (e, t, r) => {\n        var o = r(5569)(Object.getPrototypeOf, Object);\n        e.exports = o;\n      },\n      9607: (e, t, r) => {\n        var o = r(2705),\n          s = Object.prototype,\n          n = s.hasOwnProperty,\n          a = s.toString,\n          i = o ? o.toStringTag : void 0;\n        e.exports = function(e) {\n          var t = n.call(e, i),\n            r = e[i];\n          try {\n            e[i] = void 0;\n            var o = !0;\n          } catch (e) {}\n          var s = a.call(e);\n          return o && (t ? (e[i] = r) : delete e[i]), s;\n        };\n      },\n      7801: e => {\n        e.exports = function(e, t) {\n          return null == e ? void 0 : e[t];\n        };\n      },\n      5776: e => {\n        var t = /^(?:0|[1-9]\\d*)$/;\n        e.exports = function(e, r) {\n          var o = typeof e;\n          return (\n            !!(r = null == r ? 9007199254740991 : r) &&\n            ('number' == o || ('symbol' != o && t.test(e))) &&\n            e > -1 &&\n            e % 1 == 0 &&\n            e < r\n          );\n        };\n      },\n      6612: (e, t, r) => {\n        var o = r(7813),\n          s = r(8612),\n          n = r(5776),\n          a = r(3218);\n        e.exports = function(e, t, r) {\n          if (!a(r)) return !1;\n          var i = typeof t;\n          return !!('number' == i ? s(r) && n(t, r.length) : 'string' == i && t in r) && o(r[t], e);\n        };\n      },\n      5346: (e, t, r) => {\n        var o,\n          s = r(4429),\n          n = (o = /[^.]+$/.exec((s && s.keys && s.keys.IE_PROTO) || ''))\n            ? 'Symbol(src)_1.' + o\n            : '';\n        e.exports = function(e) {\n          return !!n && n in e;\n        };\n      },\n      5726: e => {\n        var t = Object.prototype;\n        e.exports = function(e) {\n          var r = e && e.constructor;\n          return e === (('function' == typeof r && r.prototype) || t);\n        };\n      },\n      6916: (e, t, r) => {\n        var o = r(5569)(Object.keys, Object);\n        e.exports = o;\n      },\n      3498: e => {\n        e.exports = function(e) {\n          var t = [];\n          if (null != e) for (var r in Object(e)) t.push(r);\n          return t;\n        };\n      },\n      1167: (e, t, r) => {\n        e = r.nmd(e);\n        var o = r(1957),\n          s = t && !t.nodeType && t,\n          n = s && e && !e.nodeType && e,\n          a = n && n.exports === s && o.process,\n          i = (function() {\n            try {\n              return a && a.binding && a.binding('util');\n            } catch (e) {}\n          })();\n        e.exports = i;\n      },\n      2333: e => {\n        var t = Object.prototype.toString;\n        e.exports = function(e) {\n          return t.call(e);\n        };\n      },\n      5569: e => {\n        e.exports = function(e, t) {\n          return function(r) {\n            return e(t(r));\n          };\n        };\n      },\n      5357: (e, t, r) => {\n        var o = r(6874),\n          s = Math.max;\n        e.exports = function(e, t, r) {\n          return (\n            (t = s(void 0 === t ? e.length - 1 : t, 0)),\n            function() {\n              for (var n = arguments, a = -1, i = s(n.length - t, 0), l = Array(i); ++a < i; )\n                l[a] = n[t + a];\n              a = -1;\n              for (var u = Array(t + 1); ++a < t; ) u[a] = n[a];\n              return (u[t] = r(l)), o(e, this, u);\n            }\n          );\n        };\n      },\n      9865: e => {\n        e.exports = /<%-([\\s\\S]+?)%>/g;\n      },\n      6051: e => {\n        e.exports = /<%([\\s\\S]+?)%>/g;\n      },\n      5712: e => {\n        e.exports = /<%=([\\s\\S]+?)%>/g;\n      },\n      5639: (e, t, r) => {\n        var o = r(1957),\n          s = 'object' == typeof self && self && self.Object === Object && self,\n          n = o || s || Function('return this')();\n        e.exports = n;\n      },\n      61: (e, t, r) => {\n        var o = r(6560),\n          s = r(1275)(o);\n        e.exports = s;\n      },\n      1275: e => {\n        var t = Date.now;\n        e.exports = function(e) {\n          var r = 0,\n            o = 0;\n          return function() {\n            var s = t(),\n              n = 16 - (s - o);\n            if (((o = s), n > 0)) {\n              if (++r >= 800) return arguments[0];\n            } else r = 0;\n            return e.apply(void 0, arguments);\n          };\n        };\n      },\n      346: e => {\n        var t = Function.prototype.toString;\n        e.exports = function(e) {\n          if (null != e) {\n            try {\n              return t.call(e);\n            } catch (e) {}\n            try {\n              return e + '';\n            } catch (e) {}\n          }\n          return '';\n        };\n      },\n      9018: (e, t, r) => {\n        var o = r(8363),\n          s = r(1463),\n          n = r(1704),\n          a = s(function(e, t, r, s) {\n            o(t, n(t), e, s);\n          });\n        e.exports = a;\n      },\n      9591: (e, t, r) => {\n        var o = r(6874),\n          s = r(5976),\n          n = r(4647),\n          a = s(function(e, t) {\n            try {\n              return o(e, void 0, t);\n            } catch (e) {\n              return n(e) ? e : new Error(e);\n            }\n          });\n        e.exports = a;\n      },\n      5703: e => {\n        e.exports = function(e) {\n          return function() {\n            return e;\n          };\n        };\n      },\n      7813: e => {\n        e.exports = function(e, t) {\n          return e === t || (e != e && t != t);\n        };\n      },\n      7187: (e, t, r) => {\n        var o = r(9464),\n          s = r(9833),\n          n = /[&<>\"']/g,\n          a = RegExp(n.source);\n        e.exports = function(e) {\n          return (e = s(e)) && a.test(e) ? e.replace(n, o) : e;\n        };\n      },\n      6557: e => {\n        e.exports = function(e) {\n          return e;\n        };\n      },\n      5694: (e, t, r) => {\n        var o = r(9454),\n          s = r(7005),\n          n = Object.prototype,\n          a = n.hasOwnProperty,\n          i = n.propertyIsEnumerable,\n          l = o(\n            (function() {\n              return arguments;\n            })()\n          )\n            ? o\n            : function(e) {\n                return s(e) && a.call(e, 'callee') && !i.call(e, 'callee');\n              };\n        e.exports = l;\n      },\n      1469: e => {\n        var t = Array.isArray;\n        e.exports = t;\n      },\n      8612: (e, t, r) => {\n        var o = r(3560),\n          s = r(1780);\n        e.exports = function(e) {\n          return null != e && s(e.length) && !o(e);\n        };\n      },\n      4144: (e, t, r) => {\n        e = r.nmd(e);\n        var o = r(5639),\n          s = r(5062),\n          n = t && !t.nodeType && t,\n          a = n && e && !e.nodeType && e,\n          i = a && a.exports === n ? o.Buffer : void 0,\n          l = (i ? i.isBuffer : void 0) || s;\n        e.exports = l;\n      },\n      4647: (e, t, r) => {\n        var o = r(4239),\n          s = r(7005),\n          n = r(8630);\n        e.exports = function(e) {\n          if (!s(e)) return !1;\n          var t = o(e);\n          return (\n            '[object Error]' == t ||\n            '[object DOMException]' == t ||\n            ('string' == typeof e.message && 'string' == typeof e.name && !n(e))\n          );\n        };\n      },\n      3560: (e, t, r) => {\n        var o = r(4239),\n          s = r(3218);\n        e.exports = function(e) {\n          if (!s(e)) return !1;\n          var t = o(e);\n          return (\n            '[object Function]' == t ||\n            '[object GeneratorFunction]' == t ||\n            '[object AsyncFunction]' == t ||\n            '[object Proxy]' == t\n          );\n        };\n      },\n      1780: e => {\n        e.exports = function(e) {\n          return 'number' == typeof e && e > -1 && e % 1 == 0 && e <= 9007199254740991;\n        };\n      },\n      3218: e => {\n        e.exports = function(e) {\n          var t = typeof e;\n          return null != e && ('object' == t || 'function' == t);\n        };\n      },\n      7005: e => {\n        e.exports = function(e) {\n          return null != e && 'object' == typeof e;\n        };\n      },\n      8630: (e, t, r) => {\n        var o = r(4239),\n          s = r(5924),\n          n = r(7005),\n          a = Function.prototype,\n          i = Object.prototype,\n          l = a.toString,\n          u = i.hasOwnProperty,\n          c = l.call(Object);\n        e.exports = function(e) {\n          if (!n(e) || '[object Object]' != o(e)) return !1;\n          var t = s(e);\n          if (null === t) return !0;\n          var r = u.call(t, 'constructor') && t.constructor;\n          return 'function' == typeof r && r instanceof r && l.call(r) == c;\n        };\n      },\n      3448: (e, t, r) => {\n        var o = r(4239),\n          s = r(7005);\n        e.exports = function(e) {\n          return 'symbol' == typeof e || (s(e) && '[object Symbol]' == o(e));\n        };\n      },\n      6719: (e, t, r) => {\n        var o = r(8749),\n          s = r(7518),\n          n = r(1167),\n          a = n && n.isTypedArray,\n          i = a ? s(a) : o;\n        e.exports = i;\n      },\n      3674: (e, t, r) => {\n        var o = r(4636),\n          s = r(280),\n          n = r(8612);\n        e.exports = function(e) {\n          return n(e) ? o(e) : s(e);\n        };\n      },\n      1704: (e, t, r) => {\n        var o = r(4636),\n          s = r(313),\n          n = r(8612);\n        e.exports = function(e) {\n          return n(e) ? o(e, !0) : s(e);\n        };\n      },\n      5062: e => {\n        e.exports = function() {\n          return !1;\n        };\n      },\n      1106: (e, t, r) => {\n        var o = r(9018),\n          s = r(9591),\n          n = r(7415),\n          a = r(4626),\n          i = r(1994),\n          l = r(4647),\n          u = r(6612),\n          c = r(3674),\n          p = r(5712),\n          h = r(5835),\n          m = r(9833),\n          d = /\\b__p \\+= '';/g,\n          f = /\\b(__p \\+=) '' \\+/g,\n          y = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,\n          _ = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,\n          g = /($^)/,\n          v = /['\\n\\r\\u2028\\u2029\\\\]/g;\n        e.exports = function(e, t, r) {\n          var b = h.imports._.templateSettings || h;\n          r && u(e, t, r) && (t = void 0), (e = m(e)), (t = o({}, t, b, a));\n          var M,\n            x,\n            L = o({}, t.imports, b.imports, a),\n            j = c(L),\n            k = n(L, j),\n            C = 0,\n            P = t.interpolate || g,\n            S = \"__p += '\",\n            D = RegExp(\n              (t.escape || g).source +\n                '|' +\n                P.source +\n                '|' +\n                (P === p ? _ : g).source +\n                '|' +\n                (t.evaluate || g).source +\n                '|$',\n              'g'\n            ),\n            T = 'sourceURL' in t ? '//# sourceURL=' + t.sourceURL + '\\n' : '';\n          e.replace(D, function(t, r, o, s, n, a) {\n            return (\n              o || (o = s),\n              (S += e.slice(C, a).replace(v, i)),\n              r && ((M = !0), (S += \"' +\\n__e(\" + r + \") +\\n'\")),\n              n && ((x = !0), (S += \"';\\n\" + n + \";\\n__p += '\")),\n              o && (S += \"' +\\n((__t = (\" + o + \")) == null ? '' : __t) +\\n'\"),\n              (C = a + t.length),\n              t\n            );\n          }),\n            (S += \"';\\n\");\n          var O = t.variable;\n          O || (S = 'with (obj) {\\n' + S + '\\n}\\n'),\n            (S = (x ? S.replace(d, '') : S).replace(f, '$1').replace(y, '$1;')),\n            (S =\n              'function(' +\n              (O || 'obj') +\n              ') {\\n' +\n              (O ? '' : 'obj || (obj = {});\\n') +\n              \"var __t, __p = ''\" +\n              (M ? ', __e = _.escape' : '') +\n              (x\n                ? \", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\"\n                : ';\\n') +\n              S +\n              'return __p\\n}');\n          var w = s(function() {\n            return Function(j, T + 'return ' + S).apply(void 0, k);\n          });\n          if (((w.source = S), l(w))) throw w;\n          return w;\n        };\n      },\n      5835: (e, t, r) => {\n        var o = r(7187),\n          s = {\n            escape: r(9865),\n            evaluate: r(6051),\n            interpolate: r(5712),\n            variable: '',\n            imports: { _: { escape: o } }\n          };\n        e.exports = s;\n      },\n      9833: (e, t, r) => {\n        var o = r(531);\n        e.exports = function(e) {\n          return null == e ? '' : o(e);\n        };\n      }\n    },\n    t = {};\n  function r(o) {\n    var s = t[o];\n    if (void 0 !== s) return s.exports;\n    var n = (t[o] = { id: o, loaded: !1, exports: {} });\n    return e[o](n, n.exports, r), (n.loaded = !0), n.exports;\n  }\n  (r.n = e => {\n    var t = e && e.__esModule ? () => e.default : () => e;\n    return r.d(t, { a: t }), t;\n  }),\n    (r.d = (e, t) => {\n      for (var o in t)\n        r.o(t, o) && !r.o(e, o) && Object.defineProperty(e, o, { enumerable: !0, get: t[o] });\n    }),\n    (r.g = (function() {\n      if ('object' == typeof globalThis) return globalThis;\n      try {\n        return this || new Function('return this')();\n      } catch (e) {\n        if ('object' == typeof window) return window;\n      }\n    })()),\n    (r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),\n    (r.nmd = e => ((e.paths = []), e.children || (e.children = []), e)),\n    (() => {\n      'use strict';\n      var e = r(1106),\n        t = r.n(e);\n      const o = {\n        acres: { factor: 24711e-8, display: 'acres', decimals: 2 },\n        feet: { factor: 3.2808, display: 'feet', decimals: 0 },\n        kilometers: { factor: 0.001, display: 'kilometers', decimals: 2 },\n        hectares: { factor: 1e-4, display: 'hectares', decimals: 2 },\n        meters: { factor: 1, display: 'meters', decimals: 0 },\n        miles: { factor: 3.2808 / 5280, display: 'miles', decimals: 2 },\n        sqfeet: { factor: 10.7639, display: 'sqfeet', decimals: 0 },\n        sqmeters: { factor: 1, display: 'sqmeters', decimals: 0 },\n        sqmiles: { factor: 3.86102e-7, display: 'sqmiles', decimals: 2 }\n      };\n      var s = 6371008.8,\n        n = {\n          centimeters: 637100880,\n          centimetres: 637100880,\n          degrees: 57.22891354143274,\n          feet: 20902260.511392,\n          inches: 39.37 * s,\n          kilometers: 6371.0088,\n          kilometres: 6371.0088,\n          meters: s,\n          metres: s,\n          miles: 3958.761333810546,\n          millimeters: 6371008800,\n          millimetres: 6371008800,\n          nauticalmiles: s / 1852,\n          radians: 1,\n          yards: 6967335.223679999\n        };\n      function a(e, t, r) {\n        void 0 === r && (r = {});\n        var o = { type: 'Feature' };\n        return (\n          (0 === r.id || r.id) && (o.id = r.id),\n          r.bbox && (o.bbox = r.bbox),\n          (o.properties = t || {}),\n          (o.geometry = e),\n          o\n        );\n      }\n      function i(e, t, r) {\n        if ((void 0 === r && (r = {}), e.length < 2))\n          throw new Error('coordinates must be an array of two or more positions');\n        return a({ type: 'LineString', coordinates: e }, t, r);\n      }\n      function l(e, t) {\n        void 0 === t && (t = 'kilometers');\n        var r = n[t];\n        if (!r) throw new Error(t + ' units is invalid');\n        return e * r;\n      }\n      function u(e) {\n        return (e % 360) * Math.PI / 180;\n      }\n      function c(e) {\n        if (!e) throw new Error('coord is required');\n        if (!Array.isArray(e)) {\n          if ('Feature' === e.type && null !== e.geometry && 'Point' === e.geometry.type)\n            return e.geometry.coordinates;\n          if ('Point' === e.type) return e.coordinates;\n        }\n        if (Array.isArray(e) && e.length >= 2 && !Array.isArray(e[0]) && !Array.isArray(e[1]))\n          return e;\n        throw new Error('coord must be GeoJSON Point or an Array of numbers');\n      }\n      const p = function(e, t, r) {\n        void 0 === r && (r = {});\n        var o = c(e),\n          s = c(t),\n          n = u(s[1] - o[1]),\n          a = u(s[0] - o[0]),\n          i = u(o[1]),\n          p = u(s[1]),\n          h =\n            Math.pow(Math.sin(n / 2), 2) + Math.pow(Math.sin(a / 2), 2) * Math.cos(i) * Math.cos(p);\n        return l(2 * Math.atan2(Math.sqrt(h), Math.sqrt(1 - h)), r.units);\n      };\n      function h(e, t, r) {\n        if (null !== e)\n          for (\n            var o,\n              s,\n              n,\n              a,\n              i,\n              l,\n              u,\n              c,\n              p = 0,\n              m = 0,\n              d = e.type,\n              f = 'FeatureCollection' === d,\n              y = 'Feature' === d,\n              _ = f ? e.features.length : 1,\n              g = 0;\n            g < _;\n            g++\n          ) {\n            i = (c =\n              !!(u = f ? e.features[g].geometry : y ? e.geometry : e) &&\n              'GeometryCollection' === u.type)\n              ? u.geometries.length\n              : 1;\n            for (var v = 0; v < i; v++) {\n              var b = 0,\n                M = 0;\n              if (null !== (a = c ? u.geometries[v] : u)) {\n                l = a.coordinates;\n                var x = a.type;\n                switch (((p = !r || ('Polygon' !== x && 'MultiPolygon' !== x) ? 0 : 1), x)) {\n                  case null:\n                    break;\n                  case 'Point':\n                    if (!1 === t(l, m, g, b, M)) return !1;\n                    m++, b++;\n                    break;\n                  case 'LineString':\n                  case 'MultiPoint':\n                    for (o = 0; o < l.length; o++) {\n                      if (!1 === t(l[o], m, g, b, M)) return !1;\n                      m++, 'MultiPoint' === x && b++;\n                    }\n                    'LineString' === x && b++;\n                    break;\n                  case 'Polygon':\n                  case 'MultiLineString':\n                    for (o = 0; o < l.length; o++) {\n                      for (s = 0; s < l[o].length - p; s++) {\n                        if (!1 === t(l[o][s], m, g, b, M)) return !1;\n                        m++;\n                      }\n                      'MultiLineString' === x && b++, 'Polygon' === x && M++;\n                    }\n                    'Polygon' === x && b++;\n                    break;\n                  case 'MultiPolygon':\n                    for (o = 0; o < l.length; o++) {\n                      for (M = 0, s = 0; s < l[o].length; s++) {\n                        for (n = 0; n < l[o][s].length - p; n++) {\n                          if (!1 === t(l[o][s][n], m, g, b, M)) return !1;\n                          m++;\n                        }\n                        M++;\n                      }\n                      b++;\n                    }\n                    break;\n                  case 'GeometryCollection':\n                    for (o = 0; o < a.geometries.length; o++)\n                      if (!1 === h(a.geometries[o], t, r)) return !1;\n                    break;\n                  default:\n                    throw new Error('Unknown Geometry Type');\n                }\n              }\n            }\n          }\n      }\n      function m(e, t) {\n        var r,\n          o,\n          s,\n          n,\n          a,\n          i,\n          l,\n          u,\n          c,\n          p,\n          h = 0,\n          m = 'FeatureCollection' === e.type,\n          d = 'Feature' === e.type,\n          f = m ? e.features.length : 1;\n        for (r = 0; r < f; r++) {\n          for (\n            i = m ? e.features[r].geometry : d ? e.geometry : e,\n              u = m ? e.features[r].properties : d ? e.properties : {},\n              c = m ? e.features[r].bbox : d ? e.bbox : void 0,\n              p = m ? e.features[r].id : d ? e.id : void 0,\n              a = (l = !!i && 'GeometryCollection' === i.type) ? i.geometries.length : 1,\n              s = 0;\n            s < a;\n            s++\n          )\n            if (null !== (n = l ? i.geometries[s] : i))\n              switch (n.type) {\n                case 'Point':\n                case 'LineString':\n                case 'MultiPoint':\n                case 'Polygon':\n                case 'MultiLineString':\n                case 'MultiPolygon':\n                  if (!1 === t(n, h, u, c, p)) return !1;\n                  break;\n                case 'GeometryCollection':\n                  for (o = 0; o < n.geometries.length; o++)\n                    if (!1 === t(n.geometries[o], h, u, c, p)) return !1;\n                  break;\n                default:\n                  throw new Error('Unknown Geometry Type');\n              }\n            else if (!1 === t(null, h, u, c, p)) return !1;\n          h++;\n        }\n      }\n      function d(e, t) {\n        m(e, function(e, r, o, s, n) {\n          var i,\n            l = null === e ? null : e.type;\n          switch (l) {\n            case null:\n            case 'Point':\n            case 'LineString':\n            case 'Polygon':\n              return !1 !== t(a(e, o, { bbox: s, id: n }), r, 0) && void 0;\n          }\n          switch (l) {\n            case 'MultiPoint':\n              i = 'Point';\n              break;\n            case 'MultiLineString':\n              i = 'LineString';\n              break;\n            case 'MultiPolygon':\n              i = 'Polygon';\n          }\n          for (var u = 0; u < e.coordinates.length; u++) {\n            var c = e.coordinates[u];\n            if (!1 === t(a({ type: i, coordinates: c }, o), r, u)) return !1;\n          }\n        });\n      }\n      function f(e, t, r) {\n        var o = r,\n          s = !1;\n        return (\n          (function(e, t) {\n            d(e, function(e, r, o) {\n              var s = 0;\n              if (e.geometry) {\n                var n = e.geometry.type;\n                if ('Point' !== n && 'MultiPoint' !== n) {\n                  var a,\n                    l = 0,\n                    u = 0,\n                    c = 0;\n                  return (\n                    !1 !==\n                      h(e, function(n, p, h, m, d) {\n                        if (void 0 === a || r > l || m > u || d > c)\n                          return (a = n), (l = r), (u = m), (c = d), void (s = 0);\n                        var f = i([a, n], e.properties);\n                        if (!1 === t(f, r, o, d, s)) return !1;\n                        s++, (a = n);\n                      }) && void 0\n                  );\n                }\n              }\n            });\n          })(e, function(e, n, a, i, l) {\n            (o = !1 === s && void 0 === r ? e : t(o, e, n, a, i, l)), (s = !0);\n          }),\n          o\n        );\n      }\n      var y = 6378137;\n      function _(e) {\n        return (function(e, t, r) {\n          var o = r;\n          return (\n            m(e, function(e, s, n, a, i) {\n              o = 0 === s && void 0 === r ? e : t(o, e, s, n, a, i);\n            }),\n            o\n          );\n        })(\n          e,\n          function(e, t) {\n            return (\n              e +\n              (function(e) {\n                var t,\n                  r = 0;\n                switch (e.type) {\n                  case 'Polygon':\n                    return g(e.coordinates);\n                  case 'MultiPolygon':\n                    for (t = 0; t < e.coordinates.length; t++) r += g(e.coordinates[t]);\n                    return r;\n                  case 'Point':\n                  case 'MultiPoint':\n                  case 'LineString':\n                  case 'MultiLineString':\n                    return 0;\n                }\n                return 0;\n              })(t)\n            );\n          },\n          0\n        );\n      }\n      function g(e) {\n        var t = 0;\n        if (e && e.length > 0) {\n          t += Math.abs(v(e[0]));\n          for (var r = 1; r < e.length; r++) t -= Math.abs(v(e[r]));\n        }\n        return t;\n      }\n      function v(e) {\n        var t,\n          r,\n          o,\n          s,\n          n,\n          a,\n          i = 0,\n          l = e.length;\n        if (l > 2) {\n          for (a = 0; a < l; a++)\n            a === l - 2\n              ? ((o = l - 2), (s = l - 1), (n = 0))\n              : a === l - 1 ? ((o = l - 1), (s = 0), (n = 1)) : ((o = a), (s = a + 1), (n = a + 2)),\n              (t = e[o]),\n              (r = e[s]),\n              (i += (b(e[n][0]) - b(t[0])) * Math.sin(b(r[1])));\n          i = i * y * y / 2;\n        }\n        return i;\n      }\n      function b(e) {\n        return e * Math.PI / 180;\n      }\n      function M(e) {\n        return e < 10 ? '0' + e.toString() : e.toString();\n      }\n      function x(e, t, r) {\n        const o = Math.abs(e),\n          s = Math.floor(o),\n          n = Math.floor(60 * (o - s)),\n          a = Math.round(3600 * (o - s - n / 60) * 100) / 100,\n          i = o === e ? t : r;\n        return M(s) + '&deg; ' + M(n) + \"' \" + M(a) + '\" ' + i;\n      }\n      function j(e) {\n        const t = e[e.length - 1],\n          r = e.map(e => [e.lat, e.lng]),\n          o = L.polyline(r),\n          s = L.polygon(r),\n          n =\n            1e3 *\n            ((a = o.toGeoJSON()),\n            void 0 === (i = { units: 'kilometers' }) && (i = {}),\n            f(\n              a,\n              function(e, t) {\n                var r = t.geometry.coordinates;\n                return e + p(r[0], r[1], i);\n              },\n              0\n            ));\n        var a, i;\n        const l = _(s.toGeoJSON());\n        return {\n          lastCoord: {\n            dd: { x: t.lng, y: t.lat },\n            dms: { x: x(t.lng, 'E', 'W'), y: x(t.lat, 'N', 'S') }\n          },\n          length: n,\n          area: l\n        };\n      }\n      function k(e, t) {\n        return t || (t = document), t.querySelector(e);\n      }\n      function C(e) {\n        if (e) return e.setAttribute('style', 'display:none;'), e;\n      }\n      function P(e) {\n        if (e) return e.removeAttribute('style'), e;\n      }\n      const S = { activeColor: '#ABE67E', completedColor: '#C8F2BE' };\n      class D {\n        constructor(e) {\n          this._options = L.extend({}, S, this._options, e);\n        }\n        getSymbol(e) {\n          return {\n            measureDrag: {\n              clickable: !1,\n              radius: 4,\n              color: this._options.activeColor,\n              weight: 2,\n              opacity: 0.7,\n              fillColor: this._options.activeColor,\n              fillOpacity: 0.5,\n              className: 'layer-measuredrag'\n            },\n            measureArea: {\n              clickable: !1,\n              stroke: !1,\n              fillColor: this._options.activeColor,\n              fillOpacity: 0.2,\n              className: 'layer-measurearea'\n            },\n            measureBoundary: {\n              clickable: !1,\n              color: this._options.activeColor,\n              weight: 2,\n              opacity: 0.9,\n              fill: !1,\n              className: 'layer-measureboundary'\n            },\n            measureVertex: {\n              clickable: !1,\n              radius: 4,\n              color: this._options.activeColor,\n              weight: 2,\n              opacity: 1,\n              fillColor: this._options.activeColor,\n              fillOpacity: 0.7,\n              className: 'layer-measurevertex'\n            },\n            measureVertexActive: {\n              clickable: !1,\n              radius: 4,\n              color: this._options.activeColor,\n              weight: 2,\n              opacity: 1,\n              fillColor: this._options.activeColor,\n              fillOpacity: 1,\n              className: 'layer-measurevertex active'\n            },\n            resultArea: {\n              clickable: !0,\n              color: this._options.completedColor,\n              weight: 2,\n              opacity: 0.9,\n              fillColor: this._options.completedColor,\n              fillOpacity: 0.2,\n              className: 'layer-measure-resultarea'\n            },\n            resultLine: {\n              clickable: !0,\n              color: this._options.completedColor,\n              weight: 3,\n              opacity: 0.9,\n              fill: !1,\n              className: 'layer-measure-resultline'\n            },\n            resultPoint: {\n              clickable: !0,\n              radius: 4,\n              color: this._options.completedColor,\n              weight: 2,\n              opacity: 1,\n              fillColor: this._options.completedColor,\n              fillOpacity: 0.7,\n              className: 'layer-measure-resultpoint'\n            }\n          }[e];\n        }\n      }\n      function T(e, t = 2, r = '.', o = ',') {\n        const s = e < 0 ? '-' : '',\n          n = Math.abs(+e || 0),\n          a = parseInt(n.toFixed(t), 10) + '',\n          i = a.length > 3 ? a.length % 3 : 0;\n        return [\n          s,\n          i ? a.substr(0, i) + o : '',\n          a.substr(i).replace(/(\\d{3})(?=\\d)/g, '$1' + o),\n          t\n            ? `${r}${Math.abs(n - a)\n                .toFixed(t)\n                .slice(2)}`\n            : ''\n        ].join('');\n      }\n      const O = { imports: { numberFormat: T }, interpolate: /{{([\\s\\S]+?)}}/g },\n        w = t()(\n          '<a class=\"{{ model.className }}-toggle js-toggle\" href=\"#\" title=\"Measure distances and areas\">Measure</a>\\n<div class=\"{{ model.className }}-interaction js-interaction\">\\n  <div class=\"js-startprompt startprompt\">\\n    <h3>Measure distances and areas</h3>\\n    <ul class=\"tasks\">\\n      <a href=\"#\" class=\"js-label-type toggle-label\">Toggle Labels</a>\\n    </ul>\\n    <ul class=\"tasks\">\\n      <a href=\"#\" class=\"js-start start\">Create a new measurement</a>\\n    </ul>\\n  </div>\\n  <div class=\"js-measuringprompt\">\\n    <h3>Measure distances and areas</h3>\\n    <p class=\"js-starthelp\">Start creating a measurement by adding points to the map</p>\\n    <div class=\"js-results results\"></div>\\n    <ul class=\"js-measuretasks tasks\">\\n      <li><a href=\"#\" class=\"js-cancel cancel\">Cancel</a></li>\\n      <li><a href=\"#\" class=\"js-finish finish\">Finish measurement</a></li>\\n    </ul>\\n  </div>\\n</div>\\n',\n          O\n        ),\n        A = t()(\n          '<div class=\"group\">\\n  <p class=\"lastpoint heading\">Last point</p>\\n  <p>{{ model.lastCoord.dms.y }} <span class=\"coorddivider\">/</span> {{ model.lastCoord.dms.x }}</p>\\n  <p>{{ numberFormat(model.lastCoord.dd.y, 6) }} <span class=\"coorddivider\">/</span> {{ numberFormat(model.lastCoord.dd.x, 6) }}</p>\\n</div>\\n<% if (model.pointCount > 1) { %>\\n<div class=\"group\">\\n  <p><span class=\"heading\">Path distance</span> {{ model.lengthDisplay }}</p>\\n</div>\\n<% } %>\\n<% if (model.pointCount > 2) { %>\\n<div class=\"group\">\\n  <p><span class=\"heading\">Area</span> {{ model.areaDisplay }}</p>\\n</div>\\n<% } %>\\n',\n          O\n        ),\n        E = t()(\n          '<h3>Point location</h3>\\n<label for=\"labelName\">Name:</label>\\n<input class=\"js-label-name\" type=\"text\" id=\"labelName\">\\n<p>{{ model.lastCoord.dms.y }} <span class=\"coorddivider\">/</span> {{ model.lastCoord.dms.x }}</p>\\n<p>{{ numberFormat(model.lastCoord.dd.y, 6) }} <span class=\"coorddivider\">/</span> {{ numberFormat(model.lastCoord.dd.x, 6) }}</p>\\n<ul class=\"tasks\">\\n  <li><a href=\"#\" class=\"js-zoomto zoomto\">Center on this location</a></li>\\n  <li><a href=\"#\" class=\"js-deletemarkup deletemarkup\">Delete</a></li>\\n</ul>\\n',\n          O\n        ),\n        $ = t()(\n          '<h3>Linear measurement</h3>\\n<label for=\"labelName\">Name:</label>\\n<input class=\"js-label-name\" type=\"text\" id=\"labelName\">\\n<p>{{ model.lengthDisplay }}</p>\\n<ul class=\"tasks\">\\n  <li><a href=\"#\" class=\"js-zoomto zoomto\">Center on this line</a></li>\\n  <li><a href=\"#\" class=\"js-deletemarkup deletemarkup\">Delete</a></li>\\n</ul>\\n',\n          O\n        ),\n        N = t()(\n          '<h3>Area Measurement</h3>\\n<label for=\"labelName\">Name:</label>\\n<input class=\"js-label-name\" type=\"text\" id=\"labelName\">\\n<p>{{ model.areaDisplay }}</p>\\n<p>{{ model.lengthDisplay }} Perimeter</p>\\n<ul class=\"tasks\">\\n  <li><a href=\"#\" class=\"js-zoomto zoomto\">Center on this area</a></li>\\n  <li><a href=\"#\" class=\"js-deletemarkup deletemarkup\">Delete</a></li>\\n</ul>\\n',\n          O\n        );\n      (L.Control.Measure = L.Control.extend({\n        _className: 'leaflet-control-measure',\n        options: {\n          data: [],\n          units: {},\n          labels: !0,\n          position: 'topright',\n          primaryLengthUnit: 'feet',\n          primaryAreaUnit: 'acres',\n          activeColor: '#ABE67E',\n          completedColor: '#C8F2BE',\n          captureZIndex: 1e4,\n          popupOptions: { className: 'leaflet-measure-resultpopup', autoPanPadding: [10, 10] }\n        },\n        initialize: function(e) {\n          L.setOptions(this, e);\n          const { activeColor: t, completedColor: r } = this.options;\n          (this._symbols = new D({ activeColor: t, completedColor: r })),\n            (this.options.units = L.extend({}, o, this.options.units)),\n            (this._id = 1),\n            e.data ? (this._import_data = e.data) : (this._import_data = this.options.data),\n            !1 === e.labels && (this.options.labels = e.labels);\n        },\n        onAdd: function(e) {\n          if (\n            ((this._map = e),\n            this._initLayout(),\n            e.on('click', this._collapse, this),\n            (this._layer = L.layerGroup().addTo(e)),\n            this._import_data.length > 0)\n          ) {\n            this._resultsModel = null;\n            for (let e = 0; e < this._import_data.length; e++)\n              (this._latlngs = this._import_data[e].points),\n                this._import_data[e].properties\n                  ? (this._objProperties = this._import_data[e].properties)\n                  : (this._objProperties = { name: '' }),\n                this._handleMeasureDoubleClick();\n            e.closePopup();\n          } else\n            (this._latlngs = []), (this._objProperties = { name: '' }), (this._resultsModel = null);\n          return this._container;\n        },\n        onRemove: function(e) {\n          e.off('click', this._collapse, this), e.removeLayer(this._layer);\n        },\n        _initLayout: function() {\n          const e = this._className,\n            t = (this._container = L.DomUtil.create('div', `${e} leaflet-bar`));\n          (t.innerHTML = w({ model: { className: e } })),\n            t.setAttribute('aria-haspopup', !0),\n            L.DomEvent.disableClickPropagation(t),\n            L.DomEvent.disableScrollPropagation(t);\n          const r = (this.$toggle = k('.js-toggle', t));\n          this.$interaction = k('.js-interaction', t);\n          const o = k('.js-start', t),\n            s = k('.js-cancel', t),\n            n = k('.js-finish', t);\n          if (\n            ((this.$startPrompt = k('.js-startprompt', t)),\n            (this.$measuringPrompt = k('.js-measuringprompt', t)),\n            (this.$startHelp = k('.js-starthelp', t)),\n            (this.$results = k('.js-results', t)),\n            (this.$measureTasks = k('.js-measuretasks', t)),\n            this._collapse(),\n            this._updateMeasureNotStarted(),\n            (this._labelType = 0),\n            L.Browser.android ||\n              (L.DomEvent.on(t, 'mouseenter', this._expand, this),\n              L.DomEvent.on(t, 'mouseleave', this._collapse, this)),\n            L.DomEvent.on(r, 'click', L.DomEvent.stop),\n            L.Browser.touch\n              ? L.DomEvent.on(r, 'click', this._expand, this)\n              : L.DomEvent.on(r, 'focus', this._expand, this),\n            L.DomEvent.on(o, 'click', L.DomEvent.stop),\n            L.DomEvent.on(o, 'click', this._startMeasure, this),\n            L.DomEvent.on(s, 'click', L.DomEvent.stop),\n            L.DomEvent.on(s, 'click', this._clearMeasure, this),\n            L.DomEvent.on(n, 'click', L.DomEvent.stop),\n            L.DomEvent.on(n, 'click', this._handleMeasureDoubleClick, this),\n            this.options.labels)\n          ) {\n            const e = k('.js-label-type', t);\n            L.DomEvent.on(e, 'click', L.DomEvent.stop),\n              L.DomEvent.on(e, 'click', this._toggleLabelType, this);\n          } else C(k('.js-label-type', t));\n        },\n        cancelMeasure: function() {\n          this._clearMeasure();\n        },\n        startMeasure: function() {\n          this._startMeasure();\n        },\n        finishMeasure: function() {\n          this._handleMeasureDoubleClick();\n        },\n        changeLabelType: function(e) {\n          (this._labelType = e),\n            this._labelType > 2 && (this._labelType = 0),\n            this._handleLabelType();\n        },\n        _toggleLabelType: function() {\n          (this._labelType += 1),\n            this._labelType > 2 && (this._labelType = 0),\n            this._handleLabelType();\n        },\n        _expand: function() {\n          C(this.$toggle), P(this.$interaction);\n        },\n        _collapse: function() {\n          this._locked || (C(this.$interaction), P(this.$toggle));\n        },\n        _updateMeasureNotStarted: function() {\n          C(this.$startHelp),\n            C(this.$results),\n            C(this.$measureTasks),\n            C(this.$measuringPrompt),\n            P(this.$startPrompt);\n        },\n        _updateMeasureStartedNoPoints: function() {\n          C(this.$results),\n            P(this.$startHelp),\n            P(this.$measureTasks),\n            C(this.$startPrompt),\n            P(this.$measuringPrompt);\n        },\n        _updateMeasureStartedWithPoints: function() {\n          C(this.$startHelp),\n            P(this.$results),\n            P(this.$measureTasks),\n            C(this.$startPrompt),\n            P(this.$measuringPrompt);\n        },\n        _startMeasure: function() {\n          (this._locked = !0),\n            (this._measureVertexes = L.featureGroup().addTo(this._layer)),\n            (this._captureMarker = L.marker(this._map.getCenter(), {\n              clickable: !0,\n              zIndexOffset: this.options.captureZIndex,\n              opacity: 0,\n              autoPanOnFocus: !1\n            }).addTo(this._layer)),\n            this._setCaptureMarkerIcon(),\n            this._captureMarker\n              .on('mouseout', this._handleMapMouseOut, this)\n              .on('dblclick', this._handleMeasureDoubleClick, this)\n              .on('click', this._handleMeasureClick, this),\n            this._map\n              .on('mousemove', this._handleMeasureMove, this)\n              .on('mouseout', this._handleMapMouseOut, this)\n              .on('move', this._centerCaptureMarker, this)\n              .on('resize', this._setCaptureMarkerIcon, this),\n            L.DomEvent.on(this._container, 'mouseenter', this._handleMapMouseOut, this),\n            this._updateMeasureStartedNoPoints(),\n            this._map.fire('measurestart', null, !1);\n        },\n        _finishMeasure: function() {\n          const e = L.extend({}, this._resultsModel, { points: this._latlngs });\n          this._clearMeasure(), this._map.fire('measurefinish', e, !1);\n        },\n        _clearMeasure: function() {\n          (this._locked = !1),\n            L.DomEvent.off(this._container, 'mouseover', this._handleMapMouseOut, this),\n            (this._latlngs = []),\n            (this._resultsModel = null),\n            this._measureVertexes &&\n              (this._measureVertexes.clearLayers(), this._layer.removeLayer(this._measureVertexes)),\n            this._measureDrag && this._layer.removeLayer(this._measureDrag),\n            this._measureArea && this._layer.removeLayer(this._measureArea),\n            this._measureBoundary && this._layer.removeLayer(this._measureBoundary),\n            (this._measureDrag = null),\n            (this._measureArea = null),\n            (this._measureBoundary = null),\n            this._captureMarker &&\n              (this._captureMarker\n                .off('mouseout', this._handleMapMouseOut, this)\n                .off('dblclick', this._handleMeasureDoubleClick, this)\n                .off('click', this._handleMeasureClick, this),\n              this._layer.removeLayer(this._captureMarker)),\n            this._map\n              .off('mousemove', this._handleMeasureMove, this)\n              .off('mouseout', this._handleMapMouseOut, this)\n              .off('move', this._centerCaptureMarker, this)\n              .off('resize', this._setCaptureMarkerIcon, this),\n            (this._measureVertexes = null),\n            this._updateMeasureNotStarted(),\n            this._collapse();\n        },\n        _centerCaptureMarker: function() {\n          this._captureMarker.setLatLng(this._map.getCenter());\n        },\n        _setCaptureMarkerIcon: function() {\n          this._captureMarker.setIcon(L.divIcon({ iconSize: this._map.getSize().multiplyBy(2) }));\n        },\n        _getMeasurementDisplayStrings: function(e) {\n          const t = this.options.units;\n          return {\n            lengthDisplay: r(\n              e.length,\n              this.options.primaryLengthUnit,\n              this.options.secondaryLengthUnit,\n              this.options.decPoint,\n              this.options.thousandsSep\n            ),\n            areaDisplay: r(\n              e.area,\n              this.options.primaryAreaUnit,\n              this.options.secondaryAreaUnit,\n              this.options.decPoint,\n              this.options.thousandsSep\n            )\n          };\n          function r(e, r, s, n, a) {\n            if (r && t[r]) {\n              let i = o(e, t[r], n, a);\n              if (s && t[s]) {\n                i = `${i} (${o(e, t[s], n, a)})`;\n              }\n              return i;\n            }\n            return o(e, null, n, a);\n          }\n          function o(e, t, r, o) {\n            const s = L.extend({ factor: 1, decimals: 0 }, t);\n            return [\n              T(e * s.factor, s.decimals, r || '.', o || ','),\n              {\n                acres: 'Acres',\n                feet: 'Feet',\n                kilometers: 'Kilometers',\n                hectares: 'Hectares',\n                meters: 'Meters',\n                miles: 'Miles',\n                sqfeet: 'Sq Feet',\n                sqmeters: 'Sq Meters',\n                sqmiles: 'Sq Miles'\n              }[s.display] || s.display\n            ].join(' ');\n          }\n        },\n        _updateResults: function() {\n          const e = j(this._latlngs),\n            t = (this._resultsModel = L.extend({}, e, this._getMeasurementDisplayStrings(e), {\n              pointCount: this._latlngs.length\n            }));\n          this.$results.innerHTML = A({ model: t });\n        },\n        _handleMeasureMove: function(e) {\n          this._measureDrag\n            ? this._measureDrag.setLatLng(e.latlng)\n            : (this._measureDrag = L.circleMarker(\n                e.latlng,\n                this._symbols.getSymbol('measureDrag')\n              ).addTo(this._layer)),\n            this._measureDrag.bringToFront();\n        },\n        _handleMeasureDoubleClick: function() {\n          const e = this._latlngs;\n          let t, r;\n          if ((this._measureVertexes || this._clearMeasure(), !e.length)) return;\n          e.length > 2 && e.push(e[0]);\n          const o = j(e);\n          1 === e.length\n            ? ((this._objProperties.id = this._objProperties.id\n                ? this._objProperties.id\n                : `point${this._id}`),\n              (t = L.circleMarker(e[0], this._symbols.getSymbol('resultPoint'))),\n              (r = E({ model: o })))\n            : 2 === e.length\n              ? ((this._objProperties.id = this._objProperties.id\n                  ? this._objProperties.id\n                  : `line${this._id}`),\n                (t = L.polyline(e, this._symbols.getSymbol('resultLine'))),\n                (r = $({ model: L.extend({}, o, this._getMeasurementDisplayStrings(o)) })))\n              : ((this._objProperties.id = this._objProperties.id\n                  ? this._objProperties.id\n                  : `polygon${this._id}`),\n                (t = L.polygon(e, this._symbols.getSymbol('resultArea'))),\n                (r = N({ model: L.extend({}, o, this._getMeasurementDisplayStrings(o)) })));\n          const s = this._objProperties.name;\n          (t.feature = { type: 'Feature', properties: this._objProperties }),\n            (this._objProperties = { name: '' }),\n            (this._id = this._id + 1);\n          const n = L.DomUtil.create('div', '');\n          n.innerHTML = r;\n          const a = k('.js-zoomto', n);\n          a &&\n            (L.DomEvent.on(a, 'click', L.DomEvent.stop),\n            L.DomEvent.on(\n              a,\n              'click',\n              function() {\n                t.getBounds\n                  ? this._map.fitBounds(t.getBounds(), { padding: [20, 20], maxZoom: 17 })\n                  : t.getLatLng && (console.log('panTo'), this._map.panTo(t.getLatLng()));\n              },\n              this\n            ));\n          const i = k('.js-deletemarkup', n);\n          i &&\n            (L.DomEvent.on(i, 'click', L.DomEvent.stop),\n            L.DomEvent.on(\n              i,\n              'click',\n              function() {\n                this._layer.removeLayer(t);\n              },\n              this\n            )),\n            t.addTo(this._layer),\n            t.bindPopup(n, this.options.popupOptions),\n            this.options.labels &&\n              s.length > 0 &&\n              t.bindTooltip(s, { direction: 'top', permanent: !0 }),\n            t.getBounds\n              ? t.openPopup(t.getBounds().getCenter())\n              : t.getLatLng && t.openPopup(t.getLatLng());\n          const l = t._popup._content.children.namedItem('labelName');\n          t._popup._content.children.namedItem('labelName').value = s;\n          const u = this;\n          t.on('popupclose', function() {\n            ((u.options.labels && 0 === u._labelType) ||\n              'layer-measure-resultpoint' === t.options.className) &&\n              (!t.getTooltip() &&\n                l.value.length > 0 &&\n                t.bindTooltip(s, { direction: 'top', permanent: !0 }),\n              l.value.length > 0\n                ? (t.setTooltipContent(l.value), (t.feature.properties.name = l.value))\n                : t.unbindTooltip());\n          }),\n            this._measureVertexes && (this._updateResults(), this._finishMeasure());\n        },\n        _handleMeasureClick: function(e) {\n          const t = this._map.mouseEventToLatLng(e.originalEvent),\n            r = this._latlngs[this._latlngs.length - 1],\n            o = this._symbols.getSymbol('measureVertex');\n          (r && t.equals(r)) ||\n            (this._latlngs.push(t),\n            this._addMeasureArea(this._latlngs),\n            this._addMeasureBoundary(this._latlngs),\n            this._measureVertexes.eachLayer(function(e) {\n              e.setStyle(o), e._path && e._path.setAttribute('class', o.className);\n            }),\n            this._addNewVertex(t),\n            this._measureBoundary && this._measureBoundary.bringToFront(),\n            this._measureVertexes.bringToFront()),\n            this._updateResults(),\n            this._updateMeasureStartedWithPoints();\n        },\n        _handleMapMouseOut: function() {\n          this._measureDrag &&\n            (this._layer.removeLayer(this._measureDrag), (this._measureDrag = null));\n        },\n        _handleLabelType: function() {\n          const e = this;\n          this._map.eachLayer(function(t) {\n            'function' == typeof t.toGeoJSON &&\n              t.options.className &&\n              0 === t.options.className.indexOf('layer-measure') &&\n              t.setTooltipContent(e._handleLeafletLatLngs(t));\n          });\n        },\n        _handleLeafletLatLngs: function(e) {\n          const t = e._popup._content.children.namedItem('labelName').value;\n          switch (e.options.className) {\n            case 'layer-measure-resultarea':\n              switch (this._labelType) {\n                case 0:\n                  t.length > 0 ? e.setTooltipContent(t) : e.unbindTooltip();\n                  break;\n                case 1:\n                  e.getTooltip() || e.bindTooltip('', { direction: 'top', permanent: !0 }),\n                    e.setTooltipContent(\n                      this._getMeasurementDisplayStrings(j(e._latlngs[0])).lengthDisplay\n                    );\n                  break;\n                case 2:\n                  e.setTooltipContent(\n                    this._getMeasurementDisplayStrings(j(e._latlngs[0])).areaDisplay\n                  );\n              }\n              break;\n            case 'layer-measure-resultline':\n              if (0 !== this._labelType) {\n                e.getTooltip() || e.bindTooltip('', { direction: 'top', permanent: !0 }),\n                  e.setTooltipContent(\n                    this._getMeasurementDisplayStrings(j(e._latlngs)).lengthDisplay\n                  );\n                break;\n              }\n              t.length > 0 ? e.setTooltipContent(t) : e.unbindTooltip();\n              break;\n            case 'layer-measure-resultpoint':\n              t.length > 0 ? e.setTooltipContent(t) : e.unbindTooltip();\n          }\n        },\n        _addNewVertex: function(e) {\n          L.circleMarker(e, this._symbols.getSymbol('measureVertexActive')).addTo(\n            this._measureVertexes\n          );\n        },\n        _addMeasureArea: function(e) {\n          e.length < 3\n            ? this._measureArea &&\n              (this._layer.removeLayer(this._measureArea), (this._measureArea = null))\n            : this._measureArea\n              ? this._measureArea.setLatLngs(e)\n              : (this._measureArea = L.polygon(e, this._symbols.getSymbol('measureArea')).addTo(\n                  this._layer\n                ));\n        },\n        _addMeasureBoundary: function(e) {\n          e.length < 2\n            ? this._measureBoundary &&\n              (this._layer.removeLayer(this._measureBoundary), (this._measureBoundary = null))\n            : this._measureBoundary\n              ? this._measureBoundary.setLatLngs(e)\n              : (this._measureBoundary = L.polyline(\n                  e,\n                  this._symbols.getSymbol('measureBoundary')\n                ).addTo(this._layer));\n        }\n      })),\n        L.Map.mergeOptions({ measureControl: !1 }),\n        L.Map.addInitHook(function() {\n          this.options.measureControl &&\n            (this.measureControl = new L.Control.Measure().addTo(this));\n        }),\n        (L.control.measure = function(e) {\n          return new L.Control.Measure(e);\n        });\n    })();\n})();\n","'use strict';\n/**\n * Calculates the moving average delta for the given pair ofsamples. A sample (S)\n * consists of a numerator (Sn) and a denominator (Sd).The moving average delta is\n * calculated as follows:\n *\n * MovingAvgDelta = (Sn[1] - Sn[0]) / (Sd[1] - Sd[0])\n */\nvar MovingAverageDelta = /** @class */ (function () {\n    /**\n     * Constructor.\n     */\n    function MovingAverageDelta() {\n        Object.defineProperties(this, {\n            _samples: {\n                value: [\n                    { denominator: 0, numerator: 0 },\n                    { denominator: 0, numerator: 0 }\n                ],\n            }\n        });\n    }\n    /**\n     * Get the moving average delta.\n     * @returns {number}\n     */\n    MovingAverageDelta.prototype.get = function () {\n        var samples = this._samples;\n        var denominatorDelta = (samples[1].denominator - samples[0].denominator) || Infinity;\n        var numeratorDelta = samples[1].numerator - samples[0].numerator;\n        return numeratorDelta / denominatorDelta;\n    };\n    /**\n     * Put a sample and get rid of the older sample to maintain sample size of 2.\n     * @param numerator\n     * @param denominator\n     */\n    MovingAverageDelta.prototype.putSample = function (numerator, denominator) {\n        var samples = this._samples;\n        samples.shift();\n        samples.push({ denominator: denominator, numerator: numerator });\n    };\n    return MovingAverageDelta;\n}());\nmodule.exports = MovingAverageDelta;\n//# sourceMappingURL=movingaveragedelta.js.map","require('angular');\nrequire('./angular-scroll');\n\nmodule.exports = 'duScroll';\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n                '_'\n            ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"LOCATION_CHANGE\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.LOCATION_CHANGE;\n  }\n});\nObject.defineProperty(exports, \"CALL_HISTORY_METHOD\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.CALL_HISTORY_METHOD;\n  }\n});\nObject.defineProperty(exports, \"onLocationChanged\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.onLocationChanged;\n  }\n});\nObject.defineProperty(exports, \"push\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.push;\n  }\n});\nObject.defineProperty(exports, \"replace\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.replace;\n  }\n});\nObject.defineProperty(exports, \"go\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.go;\n  }\n});\nObject.defineProperty(exports, \"goBack\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.goBack;\n  }\n});\nObject.defineProperty(exports, \"goForward\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.goForward;\n  }\n});\nObject.defineProperty(exports, \"routerActions\", {\n  enumerable: true,\n  get: function get() {\n    return _actions.routerActions;\n  }\n});\nObject.defineProperty(exports, \"routerMiddleware\", {\n  enumerable: true,\n  get: function get() {\n    return _middleware[\"default\"];\n  }\n});\nexports.createMatchSelector = exports.getSearch = exports.getRouter = exports.getHash = exports.getAction = exports.getLocation = exports.connectRouter = exports.ConnectedRouter = void 0;\n\nvar _ConnectedRouter = _interopRequireDefault(require(\"./ConnectedRouter\"));\n\nvar _reducer = _interopRequireDefault(require(\"./reducer\"));\n\nvar _selectors = _interopRequireDefault(require(\"./selectors\"));\n\nvar _immutable = _interopRequireDefault(require(\"./structure/immutable\"));\n\nvar _actions = require(\"./actions\");\n\nvar _middleware = _interopRequireDefault(require(\"./middleware\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar ConnectedRouter = /*#__PURE__*/(0, _ConnectedRouter[\"default\"])(_immutable[\"default\"]);\nexports.ConnectedRouter = ConnectedRouter;\nvar connectRouter = /*#__PURE__*/(0, _reducer[\"default\"])(_immutable[\"default\"]);\nexports.connectRouter = connectRouter;\n\nvar _createSelectors = /*#__PURE__*/(0, _selectors[\"default\"])(_immutable[\"default\"]),\n    getLocation = _createSelectors.getLocation,\n    getAction = _createSelectors.getAction,\n    getHash = _createSelectors.getHash,\n    getRouter = _createSelectors.getRouter,\n    getSearch = _createSelectors.getSearch,\n    createMatchSelector = _createSelectors.createMatchSelector;\n\nexports.createMatchSelector = createMatchSelector;\nexports.getSearch = getSearch;\nexports.getRouter = getRouter;\nexports.getHash = getHash;\nexports.getAction = getAction;\nexports.getLocation = getLocation;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (action) {\n  return action && action.type === '@@redux/INIT' ? 'initialState argument passed to createStore' : 'previous state received by the reducer';\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=getStateName.js.map","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { CALL_HISTORY_METHOD } from './actions';\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\n\nvar routerMiddleware = function routerMiddleware(history) {\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        // eslint-disable-line no-unused-vars\n        if (action.type !== CALL_HISTORY_METHOD) {\n          return next(action);\n        }\n\n        var _action$payload = action.payload,\n            method = _action$payload.method,\n            args = _action$payload.args;\n        history[method].apply(history, _toConsumableArray(args));\n      };\n    };\n  };\n};\n\nexport default routerMiddleware;","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n  sub: function sub() {\n    return createHTML(this, 'sub', '', '');\n  }\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","require('./focusIf');\nmodule.exports = 'focus-if';\n","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\n\nexport default function useMounted() {\n  var mounted = useRef(true);\n  var isMounted = useRef(function () {\n    return mounted.current;\n  });\n  useEffect(function () {\n    return function () {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.createErrors = false;\n    var $allErrorsOption;\n    if ($it.opts.allErrors) {\n      $allErrorsOption = $it.opts.allErrors;\n      $it.opts.allErrors = false;\n    }\n    out += ' ' + (it.validate($it)) + ' ';\n    $it.createErrors = true;\n    if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (' + ($nextValid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    out += '  var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if ($breakOnError) {\n      out += ' if (false) { ';\n    }\n  }\n  return out;\n}\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar makeBuiltIn = require('../internals/make-built-in');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {\n    if (!isCallable(this) || !isObject(O)) return false;\n    var P = this.prototype;\n    return isObject(P) ? isPrototypeOf(P, O) : O instanceof this;\n  }, HAS_INSTANCE) });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-findindex -- testing\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrack = require('./mediatrack');\nvar VideoProcessorEventObserver = require('./videoprocessoreventobserver');\nvar DEFAULT_FRAME_RATE = require('../../util/constants').DEFAULT_FRAME_RATE;\n/**\n * A {@link VideoTrack} is a {@link Track} representing video.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link VideoTrack} has\n *   started; if the {@link VideoTrack} started, there is enough video data to\n *   begin playback\n * @property {boolean} isEnabled - Whether or not the {@link VideoTrack} is\n *   enabled; if the {@link VideoTrack} is not enabled, it is \"paused\"\n * @property {VideoTrack.Dimensions} dimensions - The {@link VideoTrack}'s\n *   {@link VideoTrack.Dimensions}\n * @property {Track.Kind} kind - \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - A video MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed video frames.\n * It is null if no VideoProcessor has been added.\n * @property {?VideoProcessor} processor - A {@link VideoProcessor} that is currently\n *   processing video frames. It is null if video frames are not being processed.\n * @emits VideoTrack#dimensionsChanged\n * @emits VideoTrack#disabled\n * @emits VideoTrack#enabled\n * @emits VideoTrack#started\n */\nvar VideoTrack = /** @class */ (function (_super) {\n    __extends(VideoTrack, _super);\n    /**\n     * Construct a {@link VideoTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function VideoTrack(mediaTrackTransceiver, options) {\n        var _this = _super.call(this, mediaTrackTransceiver, options) || this;\n        Object.defineProperties(_this, {\n            _captureTimeoutId: {\n                value: null,\n                writable: true\n            },\n            _isCapturing: {\n                value: false,\n                writable: true\n            },\n            _inputFrame: {\n                value: null,\n                writable: true\n            },\n            _outputFrame: {\n                value: null,\n                writable: true\n            },\n            _processorEventObserver: {\n                value: null,\n                writable: true,\n            },\n            _processorOptions: {\n                value: {},\n                writable: true,\n            },\n            _unmuteHandler: {\n                value: null,\n                writable: true\n            },\n            dimensions: {\n                enumerable: true,\n                value: {\n                    width: null,\n                    height: null\n                }\n            },\n            processor: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        _this._processorEventObserver = new (options.VideoProcessorEventObserver || VideoProcessorEventObserver)(_this._log);\n        return _this;\n    }\n    /**\n     * @private\n     */\n    VideoTrack.prototype._checkIfCanCaptureFrames = function (isPublishing) {\n        if (isPublishing === void 0) { isPublishing = false; }\n        var canCaptureFrames = true;\n        var message = '';\n        var _a = this.mediaStreamTrack, enabled = _a.enabled, readyState = _a.readyState;\n        if (!enabled) {\n            canCaptureFrames = false;\n            message = 'MediaStreamTrack is disabled';\n        }\n        if (readyState === 'ended') {\n            canCaptureFrames = false;\n            message = 'MediaStreamTrack is ended';\n        }\n        if (!this.processor) {\n            canCaptureFrames = false;\n            message = 'VideoProcessor not detected.';\n        }\n        if (!this._attachments.size && !isPublishing) {\n            canCaptureFrames = false;\n            message = 'VideoTrack is not publishing and there is no attached element.';\n        }\n        if (message) {\n            this._log.debug(message);\n        }\n        return { canCaptureFrames: canCaptureFrames, message: message };\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._captureFrames = function () {\n        var _this = this;\n        if (this._isCapturing) {\n            this._log.debug('Ignoring captureFrames call. Capture is already in progress');\n            return;\n        }\n        if (!this._checkIfCanCaptureFrames().canCaptureFrames) {\n            this._isCapturing = false;\n            this._log.debug('Cannot capture frames. Ignoring captureFrames call.');\n            return;\n        }\n        this._isCapturing = true;\n        this._processorEventObserver.emit('start');\n        this._log.debug('Start capturing frames');\n        var startTime = Date.now();\n        var processFramePeriodMs;\n        this._dummyEl.play().then(function () {\n            var captureFrame = function (cb) {\n                clearTimeout(_this._captureTimeoutId);\n                var _a = _this.mediaStreamTrack.getSettings().frameRate, frameRate = _a === void 0 ? DEFAULT_FRAME_RATE : _a;\n                var capturePeriodMs = Math.floor(1000 / frameRate);\n                var delay = capturePeriodMs - processFramePeriodMs;\n                if (delay < 0 || typeof processFramePeriodMs !== 'number') {\n                    delay = 0;\n                }\n                _this._captureTimeoutId = setTimeout(cb, delay);\n            };\n            var process = function () {\n                var checkResult = _this._checkIfCanCaptureFrames();\n                if (!checkResult.canCaptureFrames) {\n                    _this._isCapturing = false;\n                    _this._processorEventObserver.emit('stop', checkResult.message);\n                    _this._log.debug('Cannot capture frames. Stopping capturing frames.');\n                    return;\n                }\n                startTime = Date.now();\n                var _a = _this.mediaStreamTrack.getSettings(), _b = _a.width, width = _b === void 0 ? 0 : _b, _c = _a.height, height = _c === void 0 ? 0 : _c;\n                // Setting the canvas' dimension triggers a redraw.\n                // Only set it if it has changed.\n                if (_this._outputFrame && _this._outputFrame.width !== width) {\n                    _this._outputFrame.width = width;\n                    _this._outputFrame.height = height;\n                }\n                if (_this._inputFrame) {\n                    if (_this._inputFrame.width !== width) {\n                        _this._inputFrame.width = width;\n                        _this._inputFrame.height = height;\n                    }\n                    _this._inputFrame.getContext('2d').drawImage(_this._dummyEl, 0, 0, width, height);\n                }\n                var result = null;\n                try {\n                    var input = _this._processorOptions.inputFrameBufferType === 'video' ? _this._dummyEl : _this._inputFrame;\n                    result = _this.processor.processFrame(input, _this._outputFrame);\n                }\n                catch (ex) {\n                    _this._log.debug('Exception detected after calling processFrame.', ex);\n                }\n                ((result instanceof Promise) ? result : Promise.resolve(result))\n                    .then(function () {\n                    if (_this._outputFrame) {\n                        if (typeof _this.processedTrack.requestFrame === 'function') {\n                            _this.processedTrack.requestFrame();\n                        }\n                        _this._processorEventObserver.emit('stats');\n                    }\n                })\n                    .finally(function () {\n                    processFramePeriodMs = Date.now() - startTime;\n                    captureFrame(process);\n                });\n            };\n            captureFrame(process);\n        }).catch(function (error) { return _this._log.error('Video element cannot be played', { error: error, track: _this }); });\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._initialize = function () {\n        var _this = this;\n        _super.prototype._initialize.call(this);\n        if (this._dummyEl) {\n            this._dummyEl.onloadedmetadata = function () {\n                if (dimensionsChanged(_this, _this._dummyEl)) {\n                    _this.dimensions.width = _this._dummyEl.videoWidth;\n                    _this.dimensions.height = _this._dummyEl.videoHeight;\n                }\n            };\n            this._dummyEl.onresize = function () {\n                if (dimensionsChanged(_this, _this._dummyEl)) {\n                    _this.dimensions.width = _this._dummyEl.videoWidth;\n                    _this.dimensions.height = _this._dummyEl.videoHeight;\n                    if (_this.isStarted) {\n                        _this._log.debug('Dimensions changed:', _this.dimensions);\n                        _this.emit(VideoTrack.DIMENSIONS_CHANGED, _this);\n                    }\n                }\n            };\n        }\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._restartProcessor = function () {\n        var processor = this.processor;\n        if (processor) {\n            var processorOptions = Object.assign({}, this._processorOptions);\n            this.removeProcessor(processor);\n            this.addProcessor(processor, processorOptions);\n        }\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._start = function (dummyEl) {\n        this.dimensions.width = dummyEl.videoWidth;\n        this.dimensions.height = dummyEl.videoHeight;\n        this._log.debug('Dimensions:', this.dimensions);\n        this.emit(VideoTrack.DIMENSIONS_CHANGED, this);\n        return _super.prototype._start.call(this, dummyEl);\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   videoTrack.addProcessor(new GrayScaleProcessor(100));\n     * });\n     */\n    VideoTrack.prototype.addProcessor = function (processor, options) {\n        var _this = this;\n        if (!processor || typeof processor.processFrame !== 'function') {\n            throw new Error('Received an invalid VideoProcessor from addProcessor.');\n        }\n        if (this.processor) {\n            throw new Error('A VideoProcessor has already been added.');\n        }\n        if (!this._dummyEl) {\n            throw new Error('VideoTrack has not been initialized.');\n        }\n        this._log.debug('Adding VideoProcessor to the VideoTrack', processor);\n        if (!this._unmuteHandler) {\n            this._unmuteHandler = function () {\n                _this._log.debug('mediaStreamTrack unmuted');\n                // NOTE(csantos): On certain scenarios where mediaStreamTrack is coming from muted to unmuted state,\n                // the processedTrack doesn't unmutes automatically although enabled is already set to true.\n                // This is a terminal state for the processedTrack and should be restarted. (VIDEO-4176)\n                if (_this.processedTrack.muted) {\n                    _this._log.debug('mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor.');\n                    _this._restartProcessor();\n                }\n            };\n            this.mediaStreamTrack.addEventListener('unmute', this._unmuteHandler);\n        }\n        this._processorOptions = options || {};\n        var _a = this._processorOptions, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n        if (typeof OffscreenCanvas === 'undefined' && inputFrameBufferType === 'offscreencanvas') {\n            throw new Error('OffscreenCanvas is not supported by this browser.');\n        }\n        if (inputFrameBufferType && inputFrameBufferType !== 'video' && inputFrameBufferType !== 'canvas' && inputFrameBufferType !== 'offscreencanvas') {\n            throw new Error(\"Invalid inputFrameBufferType of \" + inputFrameBufferType);\n        }\n        if (!inputFrameBufferType) {\n            inputFrameBufferType = typeof OffscreenCanvas === 'undefined' ? 'canvas' : 'offscreencanvas';\n        }\n        var _b = this.mediaStreamTrack.getSettings(), _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d, _e = _b.frameRate, frameRate = _e === void 0 ? DEFAULT_FRAME_RATE : _e;\n        if (inputFrameBufferType === 'offscreencanvas') {\n            this._inputFrame = new OffscreenCanvas(width, height);\n        }\n        if (inputFrameBufferType === 'canvas') {\n            this._inputFrame = document.createElement('canvas');\n        }\n        if (this._inputFrame) {\n            this._inputFrame.width = width;\n            this._inputFrame.height = height;\n        }\n        this._outputFrame = document.createElement('canvas');\n        this._outputFrame.width = width;\n        this._outputFrame.height = height;\n        // NOTE(csantos): Initialize the rendering context for future renders. This also ensures\n        // that the correct type is used and on Firefox, it throws an exception if you try to capture\n        // frames prior calling getContext https://bugzilla.mozilla.org/show_bug.cgi?id=1572422\n        outputFrameBufferContextType = outputFrameBufferContextType || '2d';\n        var ctx = this._outputFrame.getContext(outputFrameBufferContextType);\n        if (!ctx) {\n            throw new Error(\"Cannot get outputFrameBufferContextType: \" + outputFrameBufferContextType + \".\");\n        }\n        // NOTE(csantos): Zero FPS means we can control when to render the next frame by calling requestFrame.\n        // Some browsers such as Firefox doesn't support requestFrame so we will use default, which is an undefined value.\n        // This means, the browser will use the highest FPS available.\n        var targetFps = typeof CanvasCaptureMediaStreamTrack !== 'undefined' && CanvasCaptureMediaStreamTrack.prototype &&\n            // eslint-disable-next-line\n            typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame === 'function' ? 0 : undefined;\n        this.processedTrack = this._outputFrame.captureStream(targetFps).getTracks()[0];\n        this.processedTrack.enabled = this.mediaStreamTrack.enabled;\n        this.processor = processor;\n        this._processorEventObserver.emit('add', {\n            processor: processor,\n            captureHeight: height,\n            captureWidth: width,\n            inputFrameRate: frameRate,\n            isRemoteVideoTrack: this.toString().includes('RemoteVideoTrack'),\n            inputFrameBufferType: inputFrameBufferType,\n            outputFrameBufferContextType: outputFrameBufferContextType\n        });\n        this._updateElementsMediaStreamTrack();\n        this._captureFrames();\n        return this;\n    };\n    /**\n     * Create an HTMLVideoElement and attach the {@link VideoTrack} to it.\n     *\n     * The HTMLVideoElement's <code>srcObject</code> will be set to a new\n     * MediaStream containing the {@link VideoTrack}'s MediaStreamTrack.\n     *\n     * @returns {HTMLVideoElement} videoElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   const videoElement = videoTrack.attach();\n     *   document.body.appendChild(videoElement);\n     * });\n    */ /**\n     * Attach the {@link VideoTrack} to an existing HTMLMediaElement. The\n     * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   videoTrack.attach(videoElement);\n     * });\n    */ /**\n     * Attach the {@link VideoTrack} to an HTMLMediaElement selected by\n     * <code>document.querySelector</code>. The HTMLMediaElement could be an\n     * HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link VideoTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {string} selector - A query selector for the HTMLMediaElement to\n     *   attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * videoElement.id = 'my-video-element';\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalVideoTrack().then(function(track) {\n     *   track.attach('#my-video-element');\n     * });\n     */\n    VideoTrack.prototype.attach = function () {\n        var result = _super.prototype.attach.apply(this, arguments);\n        if (this.processor) {\n            this._captureFrames();\n        }\n        return result;\n    };\n    /**\n     * Detach the {@link VideoTrack} from all previously attached HTMLMediaElements.\n     * @returns {Array<HTMLMediaElement>} mediaElements\n     * @example\n     * const mediaElements = videoTrack.detach();\n     * mediaElements.forEach(mediaElement => mediaElement.remove());\n    */ /**\n     * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement.\n     * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n     *   which the {@link VideoTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const videoElement = document.getElementById('my-video-element');\n     * videoTrack.detach(videoElement).remove();\n    */ /**\n     * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement\n     *   specified by <code>document.querySelector</code>.\n     * @param {string} selector - The query selector of HTMLMediaElement to which\n     *    the {@link VideoTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * videoTrack.detach('#my-video-element').remove();\n     */\n    VideoTrack.prototype.detach = function () {\n        return _super.prototype.detach.apply(this, arguments);\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   const grayScaleProcessor = new GrayScaleProcessor(100);\n     *   videoTrack.addProcessor(grayScaleProcessor);\n     *   document.getElementById('remove-button').onclick = () => videoTrack.removeProcessor(grayScaleProcessor);\n     * });\n     */\n    VideoTrack.prototype.removeProcessor = function (processor) {\n        if (!processor) {\n            throw new Error('Received an invalid VideoProcessor from removeProcessor.');\n        }\n        if (!this.processor) {\n            throw new Error('No existing VideoProcessor detected.');\n        }\n        if (processor !== this.processor) {\n            throw new Error('The provided VideoProcessor is different than the existing one.');\n        }\n        this._processorEventObserver.emit('remove');\n        this._log.debug('Removing VideoProcessor from the VideoTrack', processor);\n        clearTimeout(this._captureTimeoutId);\n        this.mediaStreamTrack.removeEventListener('unmute', this._unmuteHandler);\n        this._processorOptions = {};\n        this._unmuteHandler = null;\n        this._isCapturing = false;\n        this.processor = null;\n        this.processedTrack = null;\n        this._inputFrame = null;\n        this._outputFrame = null;\n        this._updateElementsMediaStreamTrack();\n        return this;\n    };\n    return VideoTrack;\n}(MediaTrack));\nVideoTrack.DIMENSIONS_CHANGED = 'dimensionsChanged';\nfunction dimensionsChanged(track, elem) {\n    return track.dimensions.width !== elem.videoWidth\n        || track.dimensions.height !== elem.videoHeight;\n}\n/**\n * A {@link VideoTrack}'s width and height.\n * @typedef {object} VideoTrack.Dimensions\n * @property {?number} width - The {@link VideoTrack}'s width or null if the\n *   {@link VideoTrack} has not yet started\n * @property {?number} height - The {@link VideoTrack}'s height or null if the\n *   {@link VideoTrack} has not yet started\n */\n/**\n * A {@link VideoProcessor}, when added via {@link VideoTrack#addProcessor},\n * is used to process incoming video frames before\n * sending to the encoder or renderer.\n * @typedef {object} VideoProcessor\n * @property {function} processFrame - A callback to receive input and output frame buffers for processing.\n * The input frame buffer contains the original video frame which can be used for additional processing\n * such as applying filters to it. The output frame buffer is used to receive the processed video frame\n * before sending to the encoder or renderer.\n *\n * Any exception raised (either synchronously or asynchronously) in `processFrame` will result in the frame being dropped.\n * This callback has the following signature:<br/><br/>\n * <code>processFrame(</code><br/>\n * &nbsp;&nbsp;<code>inputFrameBuffer: OffscreenCanvas | HTMLCanvasElement | HTMLVideoElement,</code><br/>\n * &nbsp;&nbsp;<code>outputFrameBuffer: HTMLCanvasElement</code><br/>\n * <code>): Promise&lt;void&gt; | void;</code>\n *\n * @example\n * class GrayScaleProcessor {\n *   constructor(percentage) {\n *     this.percentage = percentage;\n *   }\n *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n *     const context = outputFrameBuffer.getContext('2d');\n *     context.filter = `grayscale(${this.percentage}%)`;\n *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n *   }\n * }\n */\n/**\n * Possible options to provide to {@link LocalVideoTrack#addProcessor} and {@link RemoteVideoTrack#addProcessor}.\n * @typedef {object} AddProcessorOptions\n * @property {string} [inputFrameBufferType=\"offscreencanvas\"] - This option allows you to specify what kind of input you want to receive in your\n * Video Processor. The default is `offscreencanvas` and will fallback to a regular `canvas` if the browser does not support it.\n * Possible values include the following.\n * <br/>\n * <br/>\n * `offscreencanvas` - Your Video Processor will receive an [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)\n * which is good for canvas-related processing that can be rendered off screen.\n * <br/>\n * <br/>\n * `canvas` - Your Video Processor will receive an [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement).\n * This is recommended on browsers that doesn't support `OffscreenCanvas`, or if you need to render the frame on the screen.\n * <br/>\n * <br/>\n * `video` - Your Video Processor will receive an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement).\n * Use this option if you are processing the frame using WebGL or if you only need to [draw](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage)\n * the frame directly to your output canvas.\n * @property {string} [outputFrameBufferContextType=\"2d\"] - The SDK needs the [context type](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext)\n * that your Video Processor uses in order to properly generate the processed track. For example, if your Video Processor uses WebGL2 (`canvas.getContext('webgl2')`),\n * you should set `outputFrameBufferContextType` to `webgl2`. Or if you're using Canvas 2D processing (`canvas.getContext('2d')`),\n * you should set `outputFrameBufferContextType` to `2d`.\n */\n/**\n * The {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event VideoTrack#dimensionsChanged\n */\n/**\n * The {@link VideoTrack} was disabled, i.e. \"paused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was disabled\n * @event VideoTrack#disabled\n */\n/**\n * The {@link VideoTrack} was enabled, i.e. \"unpaused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was enabled\n * @event VideoTrack#enabled\n */\n/**\n * The {@link VideoTrack} started. This means there is enough video data to\n * begin playback.\n * @param {VideoTrack} track - The {@link VideoTrack} that started\n * @event VideoTrack#started\n */\nmodule.exports = VideoTrack;\n//# sourceMappingURL=videotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublicationSignaling = require('../remotetrackpublication');\n/**\n * @extends RemoteTrackPublicationSignaling\n */\nvar RemoteTrackPublicationV2 = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublicationV2, _super);\n    /**\n     * Construct a {@link RemoteTrackPublicationV2}.\n     * @param {RemoteTrackPublicationV2#Representation} track\n     * @param {boolean} isSwitchedOff\n     *\n     */\n    function RemoteTrackPublicationV2(track, isSwitchedOff) {\n        return _super.call(this, track.sid, track.name, track.kind, track.enabled, track.priority, isSwitchedOff) || this;\n    }\n    /**\n     * Compare the {@link RemoteTrackPublicationV2} to a\n     * {@link RemoteTrackPublicationV2#Representation} of itself and perform any\n     * updates necessary.\n     * @param {RemoteTrackPublicationV2#Representation} track\n     * @returns {this}\n     * @fires TrackSignaling#updated\n     */\n    RemoteTrackPublicationV2.prototype.update = function (track) {\n        this.enable(track.enabled);\n        this.setPriority(track.priority);\n        return this;\n    };\n    return RemoteTrackPublicationV2;\n}(RemoteTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RemoteTrackPublicationV2}.\n * @typedef {LocalTrackPublicationV2#Representation} RemoteTrackPublicationV2#Representation\n * @property {boolean} subscribed\n */\nmodule.exports = RemoteTrackPublicationV2;\n//# sourceMappingURL=remotetrackpublication.js.map","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","'use strict';\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Benchmark = void 0;\n/**\n * @private\n */\nvar Benchmark = /** @class */ (function () {\n    function Benchmark() {\n        this._timingCache = new Map();\n        this._timings = new Map();\n    }\n    Benchmark.prototype.end = function (name) {\n        var timing = this._timings.get(name);\n        if (!timing) {\n            return;\n        }\n        timing.end = Date.now();\n        timing.delay = timing.end - timing.start;\n        this._save(name, __assign({}, timing));\n    };\n    Benchmark.prototype.getAverageDelay = function (name) {\n        var timingCache = this._timingCache.get(name);\n        if (!timingCache || !timingCache.length) {\n            return;\n        }\n        return timingCache.map(function (timing) { return timing.delay; })\n            .reduce(function (total, value) { return total += value; }, 0) / timingCache.length;\n    };\n    Benchmark.prototype.getNames = function () {\n        return Array.from(this._timingCache.keys());\n    };\n    Benchmark.prototype.getRate = function (name) {\n        var timingCache = this._timingCache.get(name);\n        if (!timingCache || timingCache.length < 2) {\n            return;\n        }\n        var totalDelay = timingCache[timingCache.length - 1].end - timingCache[0].start;\n        return (timingCache.length / totalDelay) * 1000;\n    };\n    Benchmark.prototype.start = function (name) {\n        var timing = this._timings.get(name);\n        if (!timing) {\n            timing = {};\n            this._timings.set(name, timing);\n        }\n        timing.start = Date.now();\n        delete timing.end;\n        delete timing.delay;\n    };\n    Benchmark.prototype._save = function (name, timing) {\n        var timingCache = this._timingCache.get(name);\n        if (!timingCache) {\n            timingCache = [];\n            this._timingCache.set(name, timingCache);\n        }\n        timingCache.push(timing);\n        if (timingCache.length > Benchmark.cacheSize) {\n            timingCache.splice(0, timingCache.length - Benchmark.cacheSize);\n        }\n    };\n    // NOTE (csantos): How many timing information to save per benchmark.\n    // This is about the amount of timing info generated on a 24fps input.\n    // Enough samples to calculate fps\n    Benchmark.cacheSize = 41;\n    return Benchmark;\n}());\nexports.Benchmark = Benchmark;\n//# sourceMappingURL=Benchmark.js.map","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n\n        var t = arr[k];\n        var i = left;\n        var j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n","import React, { useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport TabContext from './TabContext';\nimport SelectableContext from './SelectableContext';\n\nvar TabContainer = function TabContainer(props) {\n  var _useUncontrolled = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  }),\n      id = _useUncontrolled.id,\n      generateCustomChildId = _useUncontrolled.generateChildId,\n      onSelect = _useUncontrolled.onSelect,\n      activeKey = _useUncontrolled.activeKey,\n      transition = _useUncontrolled.transition,\n      mountOnEnter = _useUncontrolled.mountOnEnter,\n      unmountOnExit = _useUncontrolled.unmountOnExit,\n      children = _useUncontrolled.children;\n\n  var generateChildId = useMemo(function () {\n    return generateCustomChildId || function (key, type) {\n      return id ? id + \"-\" + type + \"-\" + key : null;\n    };\n  }, [id, generateCustomChildId]);\n  var tabContext = useMemo(function () {\n    return {\n      onSelect: onSelect,\n      activeKey: activeKey,\n      transition: transition,\n      mountOnEnter: mountOnEnter || false,\n      unmountOnExit: unmountOnExit || false,\n      getControlledId: function getControlledId(key) {\n        return generateChildId(key, 'tabpane');\n      },\n      getControllerId: function getControllerId(key) {\n        return generateChildId(key, 'tab');\n      }\n    };\n  }, [onSelect, activeKey, transition, mountOnEnter, unmountOnExit, generateChildId]);\n  return /*#__PURE__*/React.createElement(TabContext.Provider, {\n    value: tabContext\n  }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: onSelect || null\n  }, children));\n};\n\nexport default TabContainer;","'use strict';\n/**\n * @param {Array<number|undefined>} xs\n * @returns {number}\n */\nfunction sum(xs) {\n    return xs.reduce(function (y, x) { return typeof x === 'number' ? x + y : y; }, 0);\n}\nmodule.exports = sum;\n//# sourceMappingURL=sum.js.map","'use strict';\nvar _a = require('../../util/constants'), ICE_ACTIVITY_CHECK_PERIOD_MS = _a.ICE_ACTIVITY_CHECK_PERIOD_MS, ICE_INACTIVITY_THRESHOLD_MS = _a.ICE_INACTIVITY_THRESHOLD_MS;\n/**\n * Monitors a {@link RTCPeerConnection}'s stats and notifies\n * caller when inactivity is detected.\n */\nvar IceConnectionMonitor = /** @class */ (function () {\n    /**\n     * Construct an {@link IceConnectionMonitor}.\n     * @param {RTCPeerConnection} peerConnection\n     * @param {object} [options]\n     */\n    function IceConnectionMonitor(peerConnection, options) {\n        options = Object.assign({\n            activityCheckPeriodMs: ICE_ACTIVITY_CHECK_PERIOD_MS,\n            inactivityThresholdMs: ICE_INACTIVITY_THRESHOLD_MS,\n        }, options);\n        Object.defineProperties(this, {\n            _activityCheckPeriodMs: {\n                value: options.activityCheckPeriodMs\n            },\n            _inactivityThresholdMs: {\n                value: options.inactivityThresholdMs\n            },\n            _lastActivity: {\n                value: null,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _timer: {\n                value: null,\n                writable: true,\n            },\n            _onIceConnectionStateChanged: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    IceConnectionMonitor.prototype._getActivePairStat = function (stats) {\n        var statsArray = Array.from(stats.values());\n        var activePairStats = statsArray.find(function (stat) { return stat.type === 'candidate-pair' && stat.nominated; });\n        // NOTE(mpatwardhan): sometimes (JSDK-2667) after getting disconnected while switching network\n        // we may not find active pair. Treat this as 0 bytesReceived so that we count it towards inactivity.\n        return activePairStats || {\n            bytesReceived: 0,\n            timestamp: Math.round((new Date()).getTime())\n        };\n    };\n    /**\n     * Get ICE connection stats, and extract received and send bytes.\n     * @returns Promise<?RTCIceCandidatePairStats>\n     */\n    IceConnectionMonitor.prototype._getIceConnectionStats = function () {\n        var _this = this;\n        return this._peerConnection.getStats().then(function (stats) { return _this._getActivePairStat(stats); }).catch(function () {\n            return null;\n        });\n    };\n    /**\n     * schedules/un-schedules inactivity callback.\n     */\n    IceConnectionMonitor.prototype._scheduleInactivityCallback = function (callback) {\n        var _this = this;\n        if (callback && this._onIceConnectionStateChanged === null) {\n            // schedule callback\n            this._onIceConnectionStateChanged = function () {\n                if (_this._peerConnection.iceConnectionState === 'disconnected') {\n                    // eslint-disable-next-line callback-return\n                    callback();\n                }\n            };\n            this._peerConnection.addEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n        }\n        else if (!callback && this._onIceConnectionStateChanged) {\n            // unschedule callback\n            this._peerConnection.removeEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n            this._onIceConnectionStateChanged = null;\n        }\n    };\n    /**\n     * Start monitoring the ICE connection.\n     * Monitors bytes received on active ice connection pair,\n     * invokes onIceConnectionInactive when inactivity is detected.\n     * @param {function} onIceConnectionInactive\n     */\n    IceConnectionMonitor.prototype.start = function (onIceConnectionInactive) {\n        var _this = this;\n        this.stop();\n        this._timer = setInterval(function () {\n            _this._getIceConnectionStats().then(function (iceStats) {\n                if (!iceStats) {\n                    return;\n                }\n                // NOTE(mpatwardhan): We look at bytesReceived on active candidate pair as an indication of active ice connection.\n                // As per spec (https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-bytesreceived) this value\n                // includes RTCP traffic and is +ve even when there are no tracks subscribed to.\n                if (!_this._lastActivity || _this._lastActivity.bytesReceived !== iceStats.bytesReceived) {\n                    _this._lastActivity = iceStats;\n                    // detected activity, cancel scheduled callback if any.\n                    _this._scheduleInactivityCallback(null);\n                }\n                if (iceStats.timestamp - _this._lastActivity.timestamp >= _this._inactivityThresholdMs) {\n                    // detected inactivity.\n                    if (_this._peerConnection.iceConnectionState === 'disconnected') {\n                        onIceConnectionInactive();\n                    }\n                    else if (_this._onIceConnectionStateChanged === null) {\n                        _this._scheduleInactivityCallback(onIceConnectionInactive);\n                    }\n                }\n            });\n        }, this._activityCheckPeriodMs);\n    };\n    /**\n     * Stop monitoring the ICE connection state.\n     * @returns {void}\n     */\n    IceConnectionMonitor.prototype.stop = function () {\n        this._scheduleInactivityCallback(null);\n        if (this._timer !== null) {\n            clearInterval(this._timer);\n            this._timer = null;\n            this._lastActivity = null;\n        }\n    };\n    return IceConnectionMonitor;\n}());\nmodule.exports = IceConnectionMonitor;\n//# sourceMappingURL=iceconnectionmonitor.js.map","/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n  return { value: false };\n}\n\nfunction SetRef(ref) {\n  if (ref) {\n    ref.value = true;\n  }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n  if (iter.size === undefined) {\n    iter.size = iter.__iterate(returnTrue);\n  }\n  return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n  // This implements \"is array index\" which the ECMAString spec defines as:\n  //\n  //     A String property name P is an array index if and only if\n  //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n  //     to 2^32−1.\n  //\n  // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n  if (typeof index !== 'number') {\n    var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n    if ('' + uint32Index !== index || uint32Index === 4294967295) {\n      return NaN;\n    }\n    index = uint32Index;\n  }\n  return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n  return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n  return (\n    ((begin === 0 && !isNeg(begin)) ||\n      (size !== undefined && begin <= -size)) &&\n    (end === undefined || (size !== undefined && end >= size))\n  );\n}\n\nfunction resolveBegin(begin, size) {\n  return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n  return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n  // Sanitize indices using this shorthand for ToInt32(argument)\n  // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n  return index === undefined\n    ? defaultIndex\n    : isNeg(index)\n    ? size === Infinity\n      ? size\n      : Math.max(0, size + index) | 0\n    : size === undefined || size === index\n    ? index\n    : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n  // Account for -0 which is negative, but not less than 0.\n  return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n  return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n  return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n  return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n  return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n  return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n  function KeyedCollection(value) {\n    return isKeyed(value) ? value : KeyedSeq(value);\n  }\n\n  if ( Collection ) KeyedCollection.__proto__ = Collection;\n  KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n  KeyedCollection.prototype.constructor = KeyedCollection;\n\n  return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n  function IndexedCollection(value) {\n    return isIndexed(value) ? value : IndexedSeq(value);\n  }\n\n  if ( Collection ) IndexedCollection.__proto__ = Collection;\n  IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n  IndexedCollection.prototype.constructor = IndexedCollection;\n\n  return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n  function SetCollection(value) {\n    return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n  }\n\n  if ( Collection ) SetCollection.__proto__ = Collection;\n  SetCollection.prototype = Object.create( Collection && Collection.prototype );\n  SetCollection.prototype.constructor = SetCollection;\n\n  return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n  return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n  return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n  return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n  return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n  this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n  return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n  return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n  return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n  var value = type === 0 ? k : type === 1 ? v : [k, v];\n  iteratorResult\n    ? (iteratorResult.value = value)\n    : (iteratorResult = {\n        value: value,\n        done: false,\n      });\n  return iteratorResult;\n}\n\nfunction iteratorDone() {\n  return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n  if (Array.isArray(maybeIterable)) {\n    // IE11 trick as it does not support `Symbol.iterator`\n    return true;\n  }\n\n  return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n  return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n  var iteratorFn = getIteratorFn(iterable);\n  return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n  var iteratorFn =\n    iterable &&\n    ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n      iterable[FAUX_ITERATOR_SYMBOL]);\n  if (typeof iteratorFn === 'function') {\n    return iteratorFn;\n  }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n  var iteratorFn = getIteratorFn(maybeIterable);\n  return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n  var iteratorFn = getIteratorFn(maybeIterable);\n  return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n  if (Array.isArray(value) || typeof value === 'string') {\n    return true;\n  }\n\n  return (\n    value &&\n    typeof value === 'object' &&\n    Number.isInteger(value.length) &&\n    value.length >= 0 &&\n    (value.length === 0\n      ? // Only {length: 0} is considered Array-like.\n        Object.keys(value).length === 1\n      : // An object is only Array-like if it has a property where the last value\n        // in the array-like may be found (which could be undefined).\n        value.hasOwnProperty(value.length - 1))\n  );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n  function Seq(value) {\n    return value === undefined || value === null\n      ? emptySequence()\n      : isImmutable(value)\n      ? value.toSeq()\n      : seqFromValue(value);\n  }\n\n  if ( Collection ) Seq.__proto__ = Collection;\n  Seq.prototype = Object.create( Collection && Collection.prototype );\n  Seq.prototype.constructor = Seq;\n\n  Seq.prototype.toSeq = function toSeq () {\n    return this;\n  };\n\n  Seq.prototype.toString = function toString () {\n    return this.__toString('Seq {', '}');\n  };\n\n  Seq.prototype.cacheResult = function cacheResult () {\n    if (!this._cache && this.__iterateUncached) {\n      this._cache = this.entrySeq().toArray();\n      this.size = this._cache.length;\n    }\n    return this;\n  };\n\n  // abstract __iterateUncached(fn, reverse)\n\n  Seq.prototype.__iterate = function __iterate (fn, reverse) {\n    var cache = this._cache;\n    if (cache) {\n      var size = cache.length;\n      var i = 0;\n      while (i !== size) {\n        var entry = cache[reverse ? size - ++i : i++];\n        if (fn(entry[1], entry[0], this) === false) {\n          break;\n        }\n      }\n      return i;\n    }\n    return this.__iterateUncached(fn, reverse);\n  };\n\n  // abstract __iteratorUncached(type, reverse)\n\n  Seq.prototype.__iterator = function __iterator (type, reverse) {\n    var cache = this._cache;\n    if (cache) {\n      var size = cache.length;\n      var i = 0;\n      return new Iterator(function () {\n        if (i === size) {\n          return iteratorDone();\n        }\n        var entry = cache[reverse ? size - ++i : i++];\n        return iteratorValue(type, entry[0], entry[1]);\n      });\n    }\n    return this.__iteratorUncached(type, reverse);\n  };\n\n  return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n  function KeyedSeq(value) {\n    return value === undefined || value === null\n      ? emptySequence().toKeyedSeq()\n      : isCollection(value)\n      ? isKeyed(value)\n        ? value.toSeq()\n        : value.fromEntrySeq()\n      : isRecord(value)\n      ? value.toSeq()\n      : keyedSeqFromValue(value);\n  }\n\n  if ( Seq ) KeyedSeq.__proto__ = Seq;\n  KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n  KeyedSeq.prototype.constructor = KeyedSeq;\n\n  KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n    return this;\n  };\n\n  return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n  function IndexedSeq(value) {\n    return value === undefined || value === null\n      ? emptySequence()\n      : isCollection(value)\n      ? isKeyed(value)\n        ? value.entrySeq()\n        : value.toIndexedSeq()\n      : isRecord(value)\n      ? value.toSeq().entrySeq()\n      : indexedSeqFromValue(value);\n  }\n\n  if ( Seq ) IndexedSeq.__proto__ = Seq;\n  IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n  IndexedSeq.prototype.constructor = IndexedSeq;\n\n  IndexedSeq.of = function of (/*...values*/) {\n    return IndexedSeq(arguments);\n  };\n\n  IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n    return this;\n  };\n\n  IndexedSeq.prototype.toString = function toString () {\n    return this.__toString('Seq [', ']');\n  };\n\n  return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n  function SetSeq(value) {\n    return (\n      isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n    ).toSetSeq();\n  }\n\n  if ( Seq ) SetSeq.__proto__ = Seq;\n  SetSeq.prototype = Object.create( Seq && Seq.prototype );\n  SetSeq.prototype.constructor = SetSeq;\n\n  SetSeq.of = function of (/*...values*/) {\n    return SetSeq(arguments);\n  };\n\n  SetSeq.prototype.toSetSeq = function toSetSeq () {\n    return this;\n  };\n\n  return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n  function ArraySeq(array) {\n    this._array = array;\n    this.size = array.length;\n  }\n\n  if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n  ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  ArraySeq.prototype.constructor = ArraySeq;\n\n  ArraySeq.prototype.get = function get (index, notSetValue) {\n    return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n  };\n\n  ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n    var array = this._array;\n    var size = array.length;\n    var i = 0;\n    while (i !== size) {\n      var ii = reverse ? size - ++i : i++;\n      if (fn(array[ii], ii, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n    var array = this._array;\n    var size = array.length;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var ii = reverse ? size - ++i : i++;\n      return iteratorValue(type, ii, array[ii]);\n    });\n  };\n\n  return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n  function ObjectSeq(object) {\n    var keys = Object.keys(object).concat(\n      Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n    );\n    this._object = object;\n    this._keys = keys;\n    this.size = keys.length;\n  }\n\n  if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n  ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  ObjectSeq.prototype.constructor = ObjectSeq;\n\n  ObjectSeq.prototype.get = function get (key, notSetValue) {\n    if (notSetValue !== undefined && !this.has(key)) {\n      return notSetValue;\n    }\n    return this._object[key];\n  };\n\n  ObjectSeq.prototype.has = function has (key) {\n    return hasOwnProperty.call(this._object, key);\n  };\n\n  ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n    var object = this._object;\n    var keys = this._keys;\n    var size = keys.length;\n    var i = 0;\n    while (i !== size) {\n      var key = keys[reverse ? size - ++i : i++];\n      if (fn(object[key], key, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n    var object = this._object;\n    var keys = this._keys;\n    var size = keys.length;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var key = keys[reverse ? size - ++i : i++];\n      return iteratorValue(type, key, object[key]);\n    });\n  };\n\n  return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n  function CollectionSeq(collection) {\n    this._collection = collection;\n    this.size = collection.length || collection.size;\n  }\n\n  if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n  CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  CollectionSeq.prototype.constructor = CollectionSeq;\n\n  CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var collection = this._collection;\n    var iterator = getIterator(collection);\n    var iterations = 0;\n    if (isIterator(iterator)) {\n      var step;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n    }\n    return iterations;\n  };\n\n  CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var collection = this._collection;\n    var iterator = getIterator(collection);\n    if (!isIterator(iterator)) {\n      return new Iterator(iteratorDone);\n    }\n    var iterations = 0;\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done ? step : iteratorValue(type, iterations++, step.value);\n    });\n  };\n\n  return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n  return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return seq.fromEntrySeq();\n  }\n  if (typeof value === 'object') {\n    return new ObjectSeq(value);\n  }\n  throw new TypeError(\n    'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n      value\n  );\n}\n\nfunction indexedSeqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return seq;\n  }\n  throw new TypeError(\n    'Expected Array or collection object of values: ' + value\n  );\n}\n\nfunction seqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return isEntriesIterable(value)\n      ? seq.fromEntrySeq()\n      : isKeysIterable(value)\n      ? seq.toSetSeq()\n      : seq;\n  }\n  if (typeof value === 'object') {\n    return new ObjectSeq(value);\n  }\n  throw new TypeError(\n    'Expected Array or collection object of values, or keyed object: ' + value\n  );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n  return isArrayLike(value)\n    ? new ArraySeq(value)\n    : hasIterator(value)\n    ? new CollectionSeq(value)\n    : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n  return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n  return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n  return Boolean(\n    maybeValue &&\n      typeof maybeValue.equals === 'function' &&\n      typeof maybeValue.hashCode === 'function'\n  );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n *     var date2 = new Date(1234567890000);\n *     date1.valueOf(); // 1234567890000\n *     assert( date1 !== date2 );\n *     assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n *     assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n *     if (a.equals(b)) {\n *       assert( a.hashCode() === b.hashCode() );\n *     }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n  if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n    return true;\n  }\n  if (!valueA || !valueB) {\n    return false;\n  }\n  if (\n    typeof valueA.valueOf === 'function' &&\n    typeof valueB.valueOf === 'function'\n  ) {\n    valueA = valueA.valueOf();\n    valueB = valueB.valueOf();\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n      return true;\n    }\n    if (!valueA || !valueB) {\n      return false;\n    }\n  }\n  return !!(\n    isValueObject(valueA) &&\n    isValueObject(valueB) &&\n    valueA.equals(valueB)\n  );\n}\n\nvar imul =\n  typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n    ? Math.imul\n    : function imul(a, b) {\n        a |= 0; // int\n        b |= 0; // int\n        var c = a & 0xffff;\n        var d = b & 0xffff;\n        // Shift by 0 fixes the sign on the high part.\n        return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n      };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n  return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n  if (o == null) {\n    return hashNullish(o);\n  }\n\n  if (typeof o.hashCode === 'function') {\n    // Drop any high bits from accidentally long hash codes.\n    return smi(o.hashCode(o));\n  }\n\n  var v = valueOf(o);\n\n  if (v == null) {\n    return hashNullish(v);\n  }\n\n  switch (typeof v) {\n    case 'boolean':\n      // The hash values for built-in constants are a 1 value for each 5-byte\n      // shift region expect for the first, which encodes the value. This\n      // reduces the odds of a hash collision for these common values.\n      return v ? 0x42108421 : 0x42108420;\n    case 'number':\n      return hashNumber(v);\n    case 'string':\n      return v.length > STRING_HASH_CACHE_MIN_STRLEN\n        ? cachedHashString(v)\n        : hashString(v);\n    case 'object':\n    case 'function':\n      return hashJSObj(v);\n    case 'symbol':\n      return hashSymbol(v);\n    default:\n      if (typeof v.toString === 'function') {\n        return hashString(v.toString());\n      }\n      throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n  }\n}\n\nfunction hashNullish(nullish) {\n  return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n  if (n !== n || n === Infinity) {\n    return 0;\n  }\n  var hash = n | 0;\n  if (hash !== n) {\n    hash ^= n * 0xffffffff;\n  }\n  while (n > 0xffffffff) {\n    n /= 0xffffffff;\n    hash ^= n;\n  }\n  return smi(hash);\n}\n\nfunction cachedHashString(string) {\n  var hashed = stringHashCache[string];\n  if (hashed === undefined) {\n    hashed = hashString(string);\n    if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n      STRING_HASH_CACHE_SIZE = 0;\n      stringHashCache = {};\n    }\n    STRING_HASH_CACHE_SIZE++;\n    stringHashCache[string] = hashed;\n  }\n  return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n  // This is the hash from JVM\n  // The hash code for a string is computed as\n  // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n  // where s[i] is the ith character of the string and n is the length of\n  // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n  // (exclusive) by dropping high bits.\n  var hashed = 0;\n  for (var ii = 0; ii < string.length; ii++) {\n    hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n  }\n  return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n  var hashed = symbolMap[sym];\n  if (hashed !== undefined) {\n    return hashed;\n  }\n\n  hashed = nextHash();\n\n  symbolMap[sym] = hashed;\n\n  return hashed;\n}\n\nfunction hashJSObj(obj) {\n  var hashed;\n  if (usingWeakMap) {\n    hashed = weakMap.get(obj);\n    if (hashed !== undefined) {\n      return hashed;\n    }\n  }\n\n  hashed = obj[UID_HASH_KEY];\n  if (hashed !== undefined) {\n    return hashed;\n  }\n\n  if (!canDefineProperty) {\n    hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n    if (hashed !== undefined) {\n      return hashed;\n    }\n\n    hashed = getIENodeHash(obj);\n    if (hashed !== undefined) {\n      return hashed;\n    }\n  }\n\n  hashed = nextHash();\n\n  if (usingWeakMap) {\n    weakMap.set(obj, hashed);\n  } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n    throw new Error('Non-extensible objects are not allowed as keys.');\n  } else if (canDefineProperty) {\n    Object.defineProperty(obj, UID_HASH_KEY, {\n      enumerable: false,\n      configurable: false,\n      writable: false,\n      value: hashed,\n    });\n  } else if (\n    obj.propertyIsEnumerable !== undefined &&\n    obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n  ) {\n    // Since we can't define a non-enumerable property on the object\n    // we'll hijack one of the less-used non-enumerable properties to\n    // save our hash on it. Since this is a function it will not show up in\n    // `JSON.stringify` which is what we want.\n    obj.propertyIsEnumerable = function () {\n      return this.constructor.prototype.propertyIsEnumerable.apply(\n        this,\n        arguments\n      );\n    };\n    obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n  } else if (obj.nodeType !== undefined) {\n    // At this point we couldn't get the IE `uniqueID` to use as a hash\n    // and we couldn't use a non-enumerable property to exploit the\n    // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n    // itself.\n    obj[UID_HASH_KEY] = hashed;\n  } else {\n    throw new Error('Unable to set a non-enumerable property on object.');\n  }\n\n  return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n  try {\n    Object.defineProperty({}, '@', {});\n    return true;\n  } catch (e) {\n    return false;\n  }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n  if (node && node.nodeType > 0) {\n    switch (node.nodeType) {\n      case 1: // Element\n        return node.uniqueID;\n      case 9: // Document\n        return node.documentElement && node.documentElement.uniqueID;\n    }\n  }\n}\n\nfunction valueOf(obj) {\n  return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n    ? obj.valueOf(obj)\n    : obj;\n}\n\nfunction nextHash() {\n  var nextHash = ++_objHashUID;\n  if (_objHashUID & 0x40000000) {\n    _objHashUID = 0;\n  }\n  return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n  weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n  UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n  function ToKeyedSequence(indexed, useKeys) {\n    this._iter = indexed;\n    this._useKeys = useKeys;\n    this.size = indexed.size;\n  }\n\n  if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n  ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n  ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n    return this._iter.get(key, notSetValue);\n  };\n\n  ToKeyedSequence.prototype.has = function has (key) {\n    return this._iter.has(key);\n  };\n\n  ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n    return this._iter.valueSeq();\n  };\n\n  ToKeyedSequence.prototype.reverse = function reverse () {\n    var this$1$1 = this;\n\n    var reversedSequence = reverseFactory(this, true);\n    if (!this._useKeys) {\n      reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n    }\n    return reversedSequence;\n  };\n\n  ToKeyedSequence.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    var mappedSequence = mapFactory(this, mapper, context);\n    if (!this._useKeys) {\n      mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n    }\n    return mappedSequence;\n  };\n\n  ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n  };\n\n  ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n    return this._iter.__iterator(type, reverse);\n  };\n\n  return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n  function ToIndexedSequence(iter) {\n    this._iter = iter;\n    this.size = iter.size;\n  }\n\n  if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n  ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n  ToIndexedSequence.prototype.includes = function includes (value) {\n    return this._iter.includes(value);\n  };\n\n  ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    var i = 0;\n    reverse && ensureSize(this);\n    return this._iter.__iterate(\n      function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n      reverse\n    );\n  };\n\n  ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var this$1$1 = this;\n\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    var i = 0;\n    reverse && ensureSize(this);\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done\n        ? step\n        : iteratorValue(\n            type,\n            reverse ? this$1$1.size - ++i : i++,\n            step.value,\n            step\n          );\n    });\n  };\n\n  return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n  function ToSetSequence(iter) {\n    this._iter = iter;\n    this.size = iter.size;\n  }\n\n  if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n  ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n  ToSetSequence.prototype.constructor = ToSetSequence;\n\n  ToSetSequence.prototype.has = function has (key) {\n    return this._iter.includes(key);\n  };\n\n  ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n  };\n\n  ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done\n        ? step\n        : iteratorValue(type, step.value, step.value, step);\n    });\n  };\n\n  return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n  function FromEntriesSequence(entries) {\n    this._iter = entries;\n    this.size = entries.size;\n  }\n\n  if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n  FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n  FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n    return this._iter.toSeq();\n  };\n\n  FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (entry) {\n      // Check if entry exists first so array access doesn't throw for holes\n      // in the parent iteration.\n      if (entry) {\n        validateEntry(entry);\n        var indexedCollection = isCollection(entry);\n        return fn(\n          indexedCollection ? entry.get(1) : entry[1],\n          indexedCollection ? entry.get(0) : entry[0],\n          this$1$1\n        );\n      }\n    }, reverse);\n  };\n\n  FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    return new Iterator(function () {\n      while (true) {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedCollection = isCollection(entry);\n          return iteratorValue(\n            type,\n            indexedCollection ? entry.get(0) : entry[0],\n            indexedCollection ? entry.get(1) : entry[1],\n            step\n          );\n        }\n      }\n    });\n  };\n\n  return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\nfunction flipFactory(collection) {\n  var flipSequence = makeSequence(collection);\n  flipSequence._iter = collection;\n  flipSequence.size = collection.size;\n  flipSequence.flip = function () { return collection; };\n  flipSequence.reverse = function () {\n    var reversedSequence = collection.reverse.apply(this); // super.reverse()\n    reversedSequence.flip = function () { return collection.reverse(); };\n    return reversedSequence;\n  };\n  flipSequence.has = function (key) { return collection.includes(key); };\n  flipSequence.includes = function (key) { return collection.has(key); };\n  flipSequence.cacheResult = cacheResultThrough;\n  flipSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n  };\n  flipSequence.__iteratorUncached = function (type, reverse) {\n    if (type === ITERATE_ENTRIES) {\n      var iterator = collection.__iterator(type, reverse);\n      return new Iterator(function () {\n        var step = iterator.next();\n        if (!step.done) {\n          var k = step.value[0];\n          step.value[0] = step.value[1];\n          step.value[1] = k;\n        }\n        return step;\n      });\n    }\n    return collection.__iterator(\n      type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n      reverse\n    );\n  };\n  return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n  var mappedSequence = makeSequence(collection);\n  mappedSequence.size = collection.size;\n  mappedSequence.has = function (key) { return collection.has(key); };\n  mappedSequence.get = function (key, notSetValue) {\n    var v = collection.get(key, NOT_SET);\n    return v === NOT_SET\n      ? notSetValue\n      : mapper.call(context, v, key, collection);\n  };\n  mappedSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    return collection.__iterate(\n      function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n      reverse\n    );\n  };\n  mappedSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      var key = entry[0];\n      return iteratorValue(\n        type,\n        key,\n        mapper.call(context, entry[1], key, collection),\n        step\n      );\n    });\n  };\n  return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n  var this$1$1 = this;\n\n  var reversedSequence = makeSequence(collection);\n  reversedSequence._iter = collection;\n  reversedSequence.size = collection.size;\n  reversedSequence.reverse = function () { return collection; };\n  if (collection.flip) {\n    reversedSequence.flip = function () {\n      var flipSequence = flipFactory(collection);\n      flipSequence.reverse = function () { return collection.flip(); };\n      return flipSequence;\n    };\n  }\n  reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n  reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n  reversedSequence.includes = function (value) { return collection.includes(value); };\n  reversedSequence.cacheResult = cacheResultThrough;\n  reversedSequence.__iterate = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var i = 0;\n    reverse && ensureSize(collection);\n    return collection.__iterate(\n      function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n      !reverse\n    );\n  };\n  reversedSequence.__iterator = function (type, reverse) {\n    var i = 0;\n    reverse && ensureSize(collection);\n    var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      return iteratorValue(\n        type,\n        useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n        entry[1],\n        step\n      );\n    });\n  };\n  return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n  var filterSequence = makeSequence(collection);\n  if (useKeys) {\n    filterSequence.has = function (key) {\n      var v = collection.get(key, NOT_SET);\n      return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n    };\n    filterSequence.get = function (key, notSetValue) {\n      var v = collection.get(key, NOT_SET);\n      return v !== NOT_SET && predicate.call(context, v, key, collection)\n        ? v\n        : notSetValue;\n    };\n  }\n  filterSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    collection.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        iterations++;\n        return fn(v, useKeys ? k : iterations - 1, this$1$1);\n      }\n    }, reverse);\n    return iterations;\n  };\n  filterSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var iterations = 0;\n    return new Iterator(function () {\n      while (true) {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        var value = entry[1];\n        if (predicate.call(context, value, key, collection)) {\n          return iteratorValue(type, useKeys ? key : iterations++, value, step);\n        }\n      }\n    });\n  };\n  return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n  var groups = Map().asMutable();\n  collection.__iterate(function (v, k) {\n    groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n  });\n  return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n  var isKeyedIter = isKeyed(collection);\n  var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n  collection.__iterate(function (v, k) {\n    groups.update(\n      grouper.call(context, v, k, collection),\n      function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n    );\n  });\n  var coerce = collectionClass(collection);\n  return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n  var isKeyedIter = isKeyed(collection);\n  var groups = [[], []];\n  collection.__iterate(function (v, k) {\n    groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n      isKeyedIter ? [k, v] : v\n    );\n  });\n  var coerce = collectionClass(collection);\n  return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n  var originalSize = collection.size;\n\n  if (wholeSlice(begin, end, originalSize)) {\n    return collection;\n  }\n\n  var resolvedBegin = resolveBegin(begin, originalSize);\n  var resolvedEnd = resolveEnd(end, originalSize);\n\n  // begin or end will be NaN if they were provided as negative numbers and\n  // this collection's size is unknown. In that case, cache first so there is\n  // a known size and these do not resolve to NaN.\n  if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n    return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n  }\n\n  // Note: resolvedEnd is undefined when the original sequence's length is\n  // unknown and this slice did not supply an end and should contain all\n  // elements after resolvedBegin.\n  // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n  var resolvedSize = resolvedEnd - resolvedBegin;\n  var sliceSize;\n  if (resolvedSize === resolvedSize) {\n    sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n  }\n\n  var sliceSeq = makeSequence(collection);\n\n  // If collection.size is undefined, the size of the realized sliceSeq is\n  // unknown at this point unless the number of items to slice is 0\n  sliceSeq.size =\n    sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n  if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n    sliceSeq.get = function (index, notSetValue) {\n      index = wrapIndex(this, index);\n      return index >= 0 && index < sliceSize\n        ? collection.get(index + resolvedBegin, notSetValue)\n        : notSetValue;\n    };\n  }\n\n  sliceSeq.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (sliceSize === 0) {\n      return 0;\n    }\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var skipped = 0;\n    var isSkipping = true;\n    var iterations = 0;\n    collection.__iterate(function (v, k) {\n      if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n        iterations++;\n        return (\n          fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n          iterations !== sliceSize\n        );\n      }\n    });\n    return iterations;\n  };\n\n  sliceSeq.__iteratorUncached = function (type, reverse) {\n    if (sliceSize !== 0 && reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    // Don't bother instantiating parent iterator if taking 0.\n    if (sliceSize === 0) {\n      return new Iterator(iteratorDone);\n    }\n    var iterator = collection.__iterator(type, reverse);\n    var skipped = 0;\n    var iterations = 0;\n    return new Iterator(function () {\n      while (skipped++ < resolvedBegin) {\n        iterator.next();\n      }\n      if (++iterations > sliceSize) {\n        return iteratorDone();\n      }\n      var step = iterator.next();\n      if (useKeys || type === ITERATE_VALUES || step.done) {\n        return step;\n      }\n      if (type === ITERATE_KEYS) {\n        return iteratorValue(type, iterations - 1, undefined, step);\n      }\n      return iteratorValue(type, iterations - 1, step.value[1], step);\n    });\n  };\n\n  return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n  var takeSequence = makeSequence(collection);\n  takeSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var iterations = 0;\n    collection.__iterate(\n      function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n    );\n    return iterations;\n  };\n  takeSequence.__iteratorUncached = function (type, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var iterating = true;\n    return new Iterator(function () {\n      if (!iterating) {\n        return iteratorDone();\n      }\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      var k = entry[0];\n      var v = entry[1];\n      if (!predicate.call(context, v, k, this$1$1)) {\n        iterating = false;\n        return iteratorDone();\n      }\n      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n    });\n  };\n  return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n  var skipSequence = makeSequence(collection);\n  skipSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var isSkipping = true;\n    var iterations = 0;\n    collection.__iterate(function (v, k, c) {\n      if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n        iterations++;\n        return fn(v, useKeys ? k : iterations - 1, this$1$1);\n      }\n    });\n    return iterations;\n  };\n  skipSequence.__iteratorUncached = function (type, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var skipping = true;\n    var iterations = 0;\n    return new Iterator(function () {\n      var step;\n      var k;\n      var v;\n      do {\n        step = iterator.next();\n        if (step.done) {\n          if (useKeys || type === ITERATE_VALUES) {\n            return step;\n          }\n          if (type === ITERATE_KEYS) {\n            return iteratorValue(type, iterations++, undefined, step);\n          }\n          return iteratorValue(type, iterations++, step.value[1], step);\n        }\n        var entry = step.value;\n        k = entry[0];\n        v = entry[1];\n        skipping && (skipping = predicate.call(context, v, k, this$1$1));\n      } while (skipping);\n      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n    });\n  };\n  return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n  var isKeyedCollection = isKeyed(collection);\n  var iters = [collection]\n    .concat(values)\n    .map(function (v) {\n      if (!isCollection(v)) {\n        v = isKeyedCollection\n          ? keyedSeqFromValue(v)\n          : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedCollection) {\n        v = KeyedCollection(v);\n      }\n      return v;\n    })\n    .filter(function (v) { return v.size !== 0; });\n\n  if (iters.length === 0) {\n    return collection;\n  }\n\n  if (iters.length === 1) {\n    var singleton = iters[0];\n    if (\n      singleton === collection ||\n      (isKeyedCollection && isKeyed(singleton)) ||\n      (isIndexed(collection) && isIndexed(singleton))\n    ) {\n      return singleton;\n    }\n  }\n\n  var concatSeq = new ArraySeq(iters);\n  if (isKeyedCollection) {\n    concatSeq = concatSeq.toKeyedSeq();\n  } else if (!isIndexed(collection)) {\n    concatSeq = concatSeq.toSetSeq();\n  }\n  concatSeq = concatSeq.flatten(true);\n  concatSeq.size = iters.reduce(function (sum, seq) {\n    if (sum !== undefined) {\n      var size = seq.size;\n      if (size !== undefined) {\n        return sum + size;\n      }\n    }\n  }, 0);\n  return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n  var flatSequence = makeSequence(collection);\n  flatSequence.__iterateUncached = function (fn, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var iterations = 0;\n    var stopped = false;\n    function flatDeep(iter, currentDepth) {\n      iter.__iterate(function (v, k) {\n        if ((!depth || currentDepth < depth) && isCollection(v)) {\n          flatDeep(v, currentDepth + 1);\n        } else {\n          iterations++;\n          if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n            stopped = true;\n          }\n        }\n        return !stopped;\n      }, reverse);\n    }\n    flatDeep(collection, 0);\n    return iterations;\n  };\n  flatSequence.__iteratorUncached = function (type, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(type, reverse);\n    var stack = [];\n    var iterations = 0;\n    return new Iterator(function () {\n      while (iterator) {\n        var step = iterator.next();\n        if (step.done !== false) {\n          iterator = stack.pop();\n          continue;\n        }\n        var v = step.value;\n        if (type === ITERATE_ENTRIES) {\n          v = v[1];\n        }\n        if ((!depth || stack.length < depth) && isCollection(v)) {\n          stack.push(iterator);\n          iterator = v.__iterator(type, reverse);\n        } else {\n          return useKeys ? step : iteratorValue(type, iterations++, v, step);\n        }\n      }\n      return iteratorDone();\n    });\n  };\n  return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n  var coerce = collectionClass(collection);\n  return collection\n    .toSeq()\n    .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n    .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n  var interposedSequence = makeSequence(collection);\n  interposedSequence.size = collection.size && collection.size * 2 - 1;\n  interposedSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    collection.__iterate(\n      function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n        fn(v, iterations++, this$1$1) !== false; },\n      reverse\n    );\n    return iterations;\n  };\n  interposedSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n    var iterations = 0;\n    var step;\n    return new Iterator(function () {\n      if (!step || iterations % 2) {\n        step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n      }\n      return iterations % 2\n        ? iteratorValue(type, iterations++, separator)\n        : iteratorValue(type, iterations++, step.value, step);\n    });\n  };\n  return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n  if (!comparator) {\n    comparator = defaultComparator;\n  }\n  var isKeyedCollection = isKeyed(collection);\n  var index = 0;\n  var entries = collection\n    .toSeq()\n    .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n    .valueSeq()\n    .toArray();\n  entries\n    .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n    .forEach(\n      isKeyedCollection\n        ? function (v, i) {\n            entries[i].length = 2;\n          }\n        : function (v, i) {\n            entries[i] = v[1];\n          }\n    );\n  return isKeyedCollection\n    ? KeyedSeq(entries)\n    : isIndexed(collection)\n    ? IndexedSeq(entries)\n    : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n  if (!comparator) {\n    comparator = defaultComparator;\n  }\n  if (mapper) {\n    var entry = collection\n      .toSeq()\n      .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n      .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n    return entry && entry[0];\n  }\n  return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n  var comp = comparator(b, a);\n  // b is considered the new max if the comparator declares them equal, but\n  // they are not equal and b is in fact a nullish value.\n  return (\n    (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n    comp > 0\n  );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n  var zipSequence = makeSequence(keyIter);\n  var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n  zipSequence.size = zipAll ? sizes.max() : sizes.min();\n  // Note: this a generic base implementation of __iterate in terms of\n  // __iterator which may be more generically useful in the future.\n  zipSequence.__iterate = function (fn, reverse) {\n    /* generic:\n    var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n    var step;\n    var iterations = 0;\n    while (!(step = iterator.next()).done) {\n      iterations++;\n      if (fn(step.value[1], step.value[0], this) === false) {\n        break;\n      }\n    }\n    return iterations;\n    */\n    // indexed:\n    var iterator = this.__iterator(ITERATE_VALUES, reverse);\n    var step;\n    var iterations = 0;\n    while (!(step = iterator.next()).done) {\n      if (fn(step.value, iterations++, this) === false) {\n        break;\n      }\n    }\n    return iterations;\n  };\n  zipSequence.__iteratorUncached = function (type, reverse) {\n    var iterators = iters.map(\n      function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n    );\n    var iterations = 0;\n    var isDone = false;\n    return new Iterator(function () {\n      var steps;\n      if (!isDone) {\n        steps = iterators.map(function (i) { return i.next(); });\n        isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n      }\n      if (isDone) {\n        return iteratorDone();\n      }\n      return iteratorValue(\n        type,\n        iterations++,\n        zipper.apply(\n          null,\n          steps.map(function (s) { return s.value; })\n        )\n      );\n    });\n  };\n  return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n  return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n  if (entry !== Object(entry)) {\n    throw new TypeError('Expected [K, V] tuple: ' + entry);\n  }\n}\n\nfunction collectionClass(collection) {\n  return isKeyed(collection)\n    ? KeyedCollection\n    : isIndexed(collection)\n    ? IndexedCollection\n    : SetCollection;\n}\n\nfunction makeSequence(collection) {\n  return Object.create(\n    (isKeyed(collection)\n      ? KeyedSeq\n      : isIndexed(collection)\n      ? IndexedSeq\n      : SetSeq\n    ).prototype\n  );\n}\n\nfunction cacheResultThrough() {\n  if (this._iter.cacheResult) {\n    this._iter.cacheResult();\n    this.size = this._iter.size;\n    return this;\n  }\n  return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n  if (a === undefined && b === undefined) {\n    return 0;\n  }\n\n  if (a === undefined) {\n    return 1;\n  }\n\n  if (b === undefined) {\n    return -1;\n  }\n\n  return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n  offset = offset || 0;\n  var len = Math.max(0, arr.length - offset);\n  var newArr = new Array(len);\n  for (var ii = 0; ii < len; ii++) {\n    newArr[ii] = arr[ii + offset];\n  }\n  return newArr;\n}\n\nfunction invariant(condition, error) {\n  if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n  invariant(\n    size !== Infinity,\n    'Cannot perform this action with an infinite size.'\n  );\n}\n\nfunction coerceKeyPath(keyPath) {\n  if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n    return keyPath;\n  }\n  if (isOrdered(keyPath)) {\n    return keyPath.toArray();\n  }\n  throw new TypeError(\n    'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n  );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n  // The base prototype's toString deals with Argument objects and native namespaces like Math\n  if (\n    !value ||\n    typeof value !== 'object' ||\n    toString.call(value) !== '[object Object]'\n  ) {\n    return false;\n  }\n\n  var proto = Object.getPrototypeOf(value);\n  if (proto === null) {\n    return true;\n  }\n\n  // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n  var parentProto = proto;\n  var nextProto = Object.getPrototypeOf(proto);\n  while (nextProto !== null) {\n    parentProto = nextProto;\n    nextProto = Object.getPrototypeOf(parentProto);\n  }\n  return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n  return (\n    typeof value === 'object' &&\n    (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n  );\n}\n\nfunction quoteString(value) {\n  try {\n    return typeof value === 'string' ? JSON.stringify(value) : String(value);\n  } catch (_ignoreError) {\n    return JSON.stringify(value);\n  }\n}\n\nfunction has(collection, key) {\n  return isImmutable(collection)\n    ? collection.has(key)\n    : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n  return isImmutable(collection)\n    ? collection.get(key, notSetValue)\n    : !has(collection, key)\n    ? notSetValue\n    : typeof collection.get === 'function'\n    ? collection.get(key)\n    : collection[key];\n}\n\nfunction shallowCopy(from) {\n  if (Array.isArray(from)) {\n    return arrCopy(from);\n  }\n  var to = {};\n  for (var key in from) {\n    if (hasOwnProperty.call(from, key)) {\n      to[key] = from[key];\n    }\n  }\n  return to;\n}\n\nfunction remove(collection, key) {\n  if (!isDataStructure(collection)) {\n    throw new TypeError(\n      'Cannot update non-data-structure value: ' + collection\n    );\n  }\n  if (isImmutable(collection)) {\n    if (!collection.remove) {\n      throw new TypeError(\n        'Cannot update immutable value without .remove() method: ' + collection\n      );\n    }\n    return collection.remove(key);\n  }\n  if (!hasOwnProperty.call(collection, key)) {\n    return collection;\n  }\n  var collectionCopy = shallowCopy(collection);\n  if (Array.isArray(collectionCopy)) {\n    collectionCopy.splice(key, 1);\n  } else {\n    delete collectionCopy[key];\n  }\n  return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n  if (!isDataStructure(collection)) {\n    throw new TypeError(\n      'Cannot update non-data-structure value: ' + collection\n    );\n  }\n  if (isImmutable(collection)) {\n    if (!collection.set) {\n      throw new TypeError(\n        'Cannot update immutable value without .set() method: ' + collection\n      );\n    }\n    return collection.set(key, value);\n  }\n  if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n    return collection;\n  }\n  var collectionCopy = shallowCopy(collection);\n  collectionCopy[key] = value;\n  return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n  if (!updater) {\n    updater = notSetValue;\n    notSetValue = undefined;\n  }\n  var updatedValue = updateInDeeply(\n    isImmutable(collection),\n    collection,\n    coerceKeyPath(keyPath),\n    0,\n    notSetValue,\n    updater\n  );\n  return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n  inImmutable,\n  existing,\n  keyPath,\n  i,\n  notSetValue,\n  updater\n) {\n  var wasNotSet = existing === NOT_SET;\n  if (i === keyPath.length) {\n    var existingValue = wasNotSet ? notSetValue : existing;\n    var newValue = updater(existingValue);\n    return newValue === existingValue ? existing : newValue;\n  }\n  if (!wasNotSet && !isDataStructure(existing)) {\n    throw new TypeError(\n      'Cannot update within non-data-structure value in path [' +\n        keyPath.slice(0, i).map(quoteString) +\n        ']: ' +\n        existing\n    );\n  }\n  var key = keyPath[i];\n  var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n  var nextUpdated = updateInDeeply(\n    nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n    nextExisting,\n    keyPath,\n    i + 1,\n    notSetValue,\n    updater\n  );\n  return nextUpdated === nextExisting\n    ? existing\n    : nextUpdated === NOT_SET\n    ? remove(existing, key)\n    : set(\n        wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n        key,\n        nextUpdated\n      );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n  return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n  return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n  return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n  return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n  return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n  return arguments.length === 1\n    ? key(this)\n    : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n  return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n  var iters = [], len = arguments.length;\n  while ( len-- ) iters[ len ] = arguments[ len ];\n\n  return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  if (typeof merger !== 'function') {\n    throw new TypeError('Invalid merger function: ' + merger);\n  }\n  return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n  var iters = [];\n  for (var ii = 0; ii < collections.length; ii++) {\n    var collection$1 = KeyedCollection(collections[ii]);\n    if (collection$1.size !== 0) {\n      iters.push(collection$1);\n    }\n  }\n  if (iters.length === 0) {\n    return collection;\n  }\n  if (\n    collection.toSeq().size === 0 &&\n    !collection.__ownerID &&\n    iters.length === 1\n  ) {\n    return collection.constructor(iters[0]);\n  }\n  return collection.withMutations(function (collection) {\n    var mergeIntoCollection = merger\n      ? function (value, key) {\n          update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n          );\n        }\n      : function (value, key) {\n          collection.set(key, value);\n        };\n    for (var ii = 0; ii < iters.length; ii++) {\n      iters[ii].forEach(mergeIntoCollection);\n    }\n  });\n}\n\nfunction merge(collection) {\n  var sources = [], len = arguments.length - 1;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n  return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n  var sources = [], len = arguments.length - 2;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n  return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n  var sources = [], len = arguments.length - 1;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n  return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n  var sources = [], len = arguments.length - 2;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n  return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n  return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n  if (!isDataStructure(collection)) {\n    throw new TypeError(\n      'Cannot merge into non-data-structure value: ' + collection\n    );\n  }\n  if (isImmutable(collection)) {\n    return typeof merger === 'function' && collection.mergeWith\n      ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n      : collection.merge\n      ? collection.merge.apply(collection, sources)\n      : collection.concat.apply(collection, sources);\n  }\n  var isArray = Array.isArray(collection);\n  var merged = collection;\n  var Collection = isArray ? IndexedCollection : KeyedCollection;\n  var mergeItem = isArray\n    ? function (value) {\n        // Copy on write\n        if (merged === collection) {\n          merged = shallowCopy(merged);\n        }\n        merged.push(value);\n      }\n    : function (value, key) {\n        var hasVal = hasOwnProperty.call(merged, key);\n        var nextVal =\n          hasVal && merger ? merger(merged[key], value, key) : value;\n        if (!hasVal || nextVal !== merged[key]) {\n          // Copy on write\n          if (merged === collection) {\n            merged = shallowCopy(merged);\n          }\n          merged[key] = nextVal;\n        }\n      };\n  for (var i = 0; i < sources.length; i++) {\n    Collection(sources[i]).forEach(mergeItem);\n  }\n  return merged;\n}\n\nfunction deepMergerWith(merger) {\n  function deepMerger(oldValue, newValue, key) {\n    return isDataStructure(oldValue) &&\n      isDataStructure(newValue) &&\n      areMergeable(oldValue, newValue)\n      ? mergeWithSources(oldValue, [newValue], deepMerger)\n      : merger\n      ? merger(oldValue, newValue, key)\n      : newValue;\n  }\n  return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n  var oldSeq = Seq(oldDataStructure);\n  var newSeq = Seq(newDataStructure);\n  // This logic assumes that a sequence can only fall into one of the three\n  // categories mentioned above (since there's no `isSetLike()` method).\n  return (\n    isIndexed(oldSeq) === isIndexed(newSeq) &&\n    isKeyed(oldSeq) === isKeyed(newSeq)\n  );\n}\n\nfunction mergeDeep() {\n  var iters = [], len = arguments.length;\n  while ( len-- ) iters[ len ] = arguments[ len ];\n\n  return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n  );\n}\n\nfunction withMutations(fn) {\n  var mutable = this.asMutable();\n  fn(mutable);\n  return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n  return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n  return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n  return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n  function Map(value) {\n    return value === undefined || value === null\n      ? emptyMap()\n      : isMap(value) && !isOrdered(value)\n      ? value\n      : emptyMap().withMutations(function (map) {\n          var iter = KeyedCollection(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function (v, k) { return map.set(k, v); });\n        });\n  }\n\n  if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n  Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n  Map.prototype.constructor = Map;\n\n  Map.of = function of () {\n    var keyValues = [], len = arguments.length;\n    while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n    return emptyMap().withMutations(function (map) {\n      for (var i = 0; i < keyValues.length; i += 2) {\n        if (i + 1 >= keyValues.length) {\n          throw new Error('Missing value for key: ' + keyValues[i]);\n        }\n        map.set(keyValues[i], keyValues[i + 1]);\n      }\n    });\n  };\n\n  Map.prototype.toString = function toString () {\n    return this.__toString('Map {', '}');\n  };\n\n  // @pragma Access\n\n  Map.prototype.get = function get (k, notSetValue) {\n    return this._root\n      ? this._root.get(0, undefined, k, notSetValue)\n      : notSetValue;\n  };\n\n  // @pragma Modification\n\n  Map.prototype.set = function set (k, v) {\n    return updateMap(this, k, v);\n  };\n\n  Map.prototype.remove = function remove (k) {\n    return updateMap(this, k, NOT_SET);\n  };\n\n  Map.prototype.deleteAll = function deleteAll (keys) {\n    var collection = Collection(keys);\n\n    if (collection.size === 0) {\n      return this;\n    }\n\n    return this.withMutations(function (map) {\n      collection.forEach(function (key) { return map.remove(key); });\n    });\n  };\n\n  Map.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._root = null;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyMap();\n  };\n\n  // @pragma Composition\n\n  Map.prototype.sort = function sort (comparator) {\n    // Late binding\n    return OrderedMap(sortFactory(this, comparator));\n  };\n\n  Map.prototype.sortBy = function sortBy (mapper, comparator) {\n    // Late binding\n    return OrderedMap(sortFactory(this, comparator, mapper));\n  };\n\n  Map.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    return this.withMutations(function (map) {\n      map.forEach(function (value, key) {\n        map.set(key, mapper.call(context, value, key, this$1$1));\n      });\n    });\n  };\n\n  // @pragma Mutability\n\n  Map.prototype.__iterator = function __iterator (type, reverse) {\n    return new MapIterator(this, type, reverse);\n  };\n\n  Map.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    this._root &&\n      this._root.iterate(function (entry) {\n        iterations++;\n        return fn(entry[1], entry[0], this$1$1);\n      }, reverse);\n    return iterations;\n  };\n\n  Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyMap();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeMap(this.size, this._root, ownerID, this.__hash);\n  };\n\n  return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n  return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n  this.ownerID = ownerID;\n  this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  var entries = this.entries;\n  for (var ii = 0, len = entries.length; ii < len; ii++) {\n    if (is(key, entries[ii][0])) {\n      return entries[ii][1];\n    }\n  }\n  return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  var removed = value === NOT_SET;\n\n  var entries = this.entries;\n  var idx = 0;\n  var len = entries.length;\n  for (; idx < len; idx++) {\n    if (is(key, entries[idx][0])) {\n      break;\n    }\n  }\n  var exists = idx < len;\n\n  if (exists ? entries[idx][1] === value : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n  (removed || !exists) && SetRef(didChangeSize);\n\n  if (removed && entries.length === 1) {\n    return; // undefined\n  }\n\n  if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n    return createNodes(ownerID, entries, key, value);\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newEntries = isEditable ? entries : arrCopy(entries);\n\n  if (exists) {\n    if (removed) {\n      idx === len - 1\n        ? newEntries.pop()\n        : (newEntries[idx] = newEntries.pop());\n    } else {\n      newEntries[idx] = [key, value];\n    }\n  } else {\n    newEntries.push([key, value]);\n  }\n\n  if (isEditable) {\n    this.entries = newEntries;\n    return this;\n  }\n\n  return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n  this.ownerID = ownerID;\n  this.bitmap = bitmap;\n  this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n  var bitmap = this.bitmap;\n  return (bitmap & bit) === 0\n    ? notSetValue\n    : this.nodes[popCount(bitmap & (bit - 1))].get(\n        shift + SHIFT,\n        keyHash,\n        key,\n        notSetValue\n      );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var bit = 1 << keyHashFrag;\n  var bitmap = this.bitmap;\n  var exists = (bitmap & bit) !== 0;\n\n  if (!exists && value === NOT_SET) {\n    return this;\n  }\n\n  var idx = popCount(bitmap & (bit - 1));\n  var nodes = this.nodes;\n  var node = exists ? nodes[idx] : undefined;\n  var newNode = updateNode(\n    node,\n    ownerID,\n    shift + SHIFT,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n\n  if (newNode === node) {\n    return this;\n  }\n\n  if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n    return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n  }\n\n  if (\n    exists &&\n    !newNode &&\n    nodes.length === 2 &&\n    isLeafNode(nodes[idx ^ 1])\n  ) {\n    return nodes[idx ^ 1];\n  }\n\n  if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n    return newNode;\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n  var newNodes = exists\n    ? newNode\n      ? setAt(nodes, idx, newNode, isEditable)\n      : spliceOut(nodes, idx, isEditable)\n    : spliceIn(nodes, idx, newNode, isEditable);\n\n  if (isEditable) {\n    this.bitmap = newBitmap;\n    this.nodes = newNodes;\n    return this;\n  }\n\n  return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n  this.ownerID = ownerID;\n  this.count = count;\n  this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var node = this.nodes[idx];\n  return node\n    ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n    : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var removed = value === NOT_SET;\n  var nodes = this.nodes;\n  var node = nodes[idx];\n\n  if (removed && !node) {\n    return this;\n  }\n\n  var newNode = updateNode(\n    node,\n    ownerID,\n    shift + SHIFT,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n  if (newNode === node) {\n    return this;\n  }\n\n  var newCount = this.count;\n  if (!node) {\n    newCount++;\n  } else if (!newNode) {\n    newCount--;\n    if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n      return packNodes(ownerID, nodes, newCount, idx);\n    }\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n  if (isEditable) {\n    this.count = newCount;\n    this.nodes = newNodes;\n    return this;\n  }\n\n  return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n  this.ownerID = ownerID;\n  this.keyHash = keyHash;\n  this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  var entries = this.entries;\n  for (var ii = 0, len = entries.length; ii < len; ii++) {\n    if (is(key, entries[ii][0])) {\n      return entries[ii][1];\n    }\n  }\n  return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n\n  var removed = value === NOT_SET;\n\n  if (keyHash !== this.keyHash) {\n    if (removed) {\n      return this;\n    }\n    SetRef(didAlter);\n    SetRef(didChangeSize);\n    return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n  }\n\n  var entries = this.entries;\n  var idx = 0;\n  var len = entries.length;\n  for (; idx < len; idx++) {\n    if (is(key, entries[idx][0])) {\n      break;\n    }\n  }\n  var exists = idx < len;\n\n  if (exists ? entries[idx][1] === value : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n  (removed || !exists) && SetRef(didChangeSize);\n\n  if (removed && len === 2) {\n    return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newEntries = isEditable ? entries : arrCopy(entries);\n\n  if (exists) {\n    if (removed) {\n      idx === len - 1\n        ? newEntries.pop()\n        : (newEntries[idx] = newEntries.pop());\n    } else {\n      newEntries[idx] = [key, value];\n    }\n  } else {\n    newEntries.push([key, value]);\n  }\n\n  if (isEditable) {\n    this.entries = newEntries;\n    return this;\n  }\n\n  return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n  this.ownerID = ownerID;\n  this.keyHash = keyHash;\n  this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  var removed = value === NOT_SET;\n  var keyMatch = is(key, this.entry[0]);\n  if (keyMatch ? value === this.entry[1] : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n\n  if (removed) {\n    SetRef(didChangeSize);\n    return; // undefined\n  }\n\n  if (keyMatch) {\n    if (ownerID && ownerID === this.ownerID) {\n      this.entry[1] = value;\n      return this;\n    }\n    return new ValueNode(ownerID, this.keyHash, [key, value]);\n  }\n\n  SetRef(didChangeSize);\n  return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n  function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n  function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n  return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n  function MapIterator(map, type, reverse) {\n    this._type = type;\n    this._reverse = reverse;\n    this._stack = map._root && mapIteratorFrame(map._root);\n  }\n\n  if ( Iterator ) MapIterator.__proto__ = Iterator;\n  MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n  MapIterator.prototype.constructor = MapIterator;\n\n  MapIterator.prototype.next = function next () {\n    var type = this._type;\n    var stack = this._stack;\n    while (stack) {\n      var node = stack.node;\n      var index = stack.index++;\n      var maxIndex = (void 0);\n      if (node.entry) {\n        if (index === 0) {\n          return mapIteratorValue(type, node.entry);\n        }\n      } else if (node.entries) {\n        maxIndex = node.entries.length - 1;\n        if (index <= maxIndex) {\n          return mapIteratorValue(\n            type,\n            node.entries[this._reverse ? maxIndex - index : index]\n          );\n        }\n      } else {\n        maxIndex = node.nodes.length - 1;\n        if (index <= maxIndex) {\n          var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n          if (subNode) {\n            if (subNode.entry) {\n              return mapIteratorValue(type, subNode.entry);\n            }\n            stack = this._stack = mapIteratorFrame(subNode, stack);\n          }\n          continue;\n        }\n      }\n      stack = this._stack = this._stack.__prev;\n    }\n    return iteratorDone();\n  };\n\n  return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n  return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n  return {\n    node: node,\n    index: 0,\n    __prev: prev,\n  };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n  var map = Object.create(MapPrototype);\n  map.size = size;\n  map._root = root;\n  map.__ownerID = ownerID;\n  map.__hash = hash;\n  map.__altered = false;\n  return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n  return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n  var newRoot;\n  var newSize;\n  if (!map._root) {\n    if (v === NOT_SET) {\n      return map;\n    }\n    newSize = 1;\n    newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n  } else {\n    var didChangeSize = MakeRef();\n    var didAlter = MakeRef();\n    newRoot = updateNode(\n      map._root,\n      map.__ownerID,\n      0,\n      undefined,\n      k,\n      v,\n      didChangeSize,\n      didAlter\n    );\n    if (!didAlter.value) {\n      return map;\n    }\n    newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n  }\n  if (map.__ownerID) {\n    map.size = newSize;\n    map._root = newRoot;\n    map.__hash = undefined;\n    map.__altered = true;\n    return map;\n  }\n  return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n  node,\n  ownerID,\n  shift,\n  keyHash,\n  key,\n  value,\n  didChangeSize,\n  didAlter\n) {\n  if (!node) {\n    if (value === NOT_SET) {\n      return node;\n    }\n    SetRef(didAlter);\n    SetRef(didChangeSize);\n    return new ValueNode(ownerID, keyHash, [key, value]);\n  }\n  return node.update(\n    ownerID,\n    shift,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n}\n\nfunction isLeafNode(node) {\n  return (\n    node.constructor === ValueNode || node.constructor === HashCollisionNode\n  );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n  if (node.keyHash === keyHash) {\n    return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n  }\n\n  var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n  var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n  var newNode;\n  var nodes =\n    idx1 === idx2\n      ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n      : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n        idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n  return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n  if (!ownerID) {\n    ownerID = new OwnerID();\n  }\n  var node = new ValueNode(ownerID, hash(key), [key, value]);\n  for (var ii = 0; ii < entries.length; ii++) {\n    var entry = entries[ii];\n    node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n  }\n  return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n  var bitmap = 0;\n  var packedII = 0;\n  var packedNodes = new Array(count);\n  for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n    var node = nodes[ii];\n    if (node !== undefined && ii !== excluding) {\n      bitmap |= bit;\n      packedNodes[packedII++] = node;\n    }\n  }\n  return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n  var count = 0;\n  var expandedNodes = new Array(SIZE);\n  for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n    expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n  }\n  expandedNodes[including] = node;\n  return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n  x -= (x >> 1) & 0x55555555;\n  x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n  x = (x + (x >> 4)) & 0x0f0f0f0f;\n  x += x >> 8;\n  x += x >> 16;\n  return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n  var newArray = canEdit ? array : arrCopy(array);\n  newArray[idx] = val;\n  return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n  var newLen = array.length + 1;\n  if (canEdit && idx + 1 === newLen) {\n    array[idx] = val;\n    return array;\n  }\n  var newArray = new Array(newLen);\n  var after = 0;\n  for (var ii = 0; ii < newLen; ii++) {\n    if (ii === idx) {\n      newArray[ii] = val;\n      after = -1;\n    } else {\n      newArray[ii] = array[ii + after];\n    }\n  }\n  return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n  var newLen = array.length - 1;\n  if (canEdit && idx === newLen) {\n    array.pop();\n    return array;\n  }\n  var newArray = new Array(newLen);\n  var after = 0;\n  for (var ii = 0; ii < newLen; ii++) {\n    if (ii === idx) {\n      after = 1;\n    }\n    newArray[ii] = array[ii + after];\n  }\n  return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n  return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n  function List(value) {\n    var empty = emptyList();\n    if (value === undefined || value === null) {\n      return empty;\n    }\n    if (isList(value)) {\n      return value;\n    }\n    var iter = IndexedCollection(value);\n    var size = iter.size;\n    if (size === 0) {\n      return empty;\n    }\n    assertNotInfinite(size);\n    if (size > 0 && size < SIZE) {\n      return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n    }\n    return empty.withMutations(function (list) {\n      list.setSize(size);\n      iter.forEach(function (v, i) { return list.set(i, v); });\n    });\n  }\n\n  if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n  List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n  List.prototype.constructor = List;\n\n  List.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  List.prototype.toString = function toString () {\n    return this.__toString('List [', ']');\n  };\n\n  // @pragma Access\n\n  List.prototype.get = function get (index, notSetValue) {\n    index = wrapIndex(this, index);\n    if (index >= 0 && index < this.size) {\n      index += this._origin;\n      var node = listNodeFor(this, index);\n      return node && node.array[index & MASK];\n    }\n    return notSetValue;\n  };\n\n  // @pragma Modification\n\n  List.prototype.set = function set (index, value) {\n    return updateList(this, index, value);\n  };\n\n  List.prototype.remove = function remove (index) {\n    return !this.has(index)\n      ? this\n      : index === 0\n      ? this.shift()\n      : index === this.size - 1\n      ? this.pop()\n      : this.splice(index, 1);\n  };\n\n  List.prototype.insert = function insert (index, value) {\n    return this.splice(index, 0, value);\n  };\n\n  List.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = this._origin = this._capacity = 0;\n      this._level = SHIFT;\n      this._root = this._tail = this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyList();\n  };\n\n  List.prototype.push = function push (/*...values*/) {\n    var values = arguments;\n    var oldSize = this.size;\n    return this.withMutations(function (list) {\n      setListBounds(list, 0, oldSize + values.length);\n      for (var ii = 0; ii < values.length; ii++) {\n        list.set(oldSize + ii, values[ii]);\n      }\n    });\n  };\n\n  List.prototype.pop = function pop () {\n    return setListBounds(this, 0, -1);\n  };\n\n  List.prototype.unshift = function unshift (/*...values*/) {\n    var values = arguments;\n    return this.withMutations(function (list) {\n      setListBounds(list, -values.length);\n      for (var ii = 0; ii < values.length; ii++) {\n        list.set(ii, values[ii]);\n      }\n    });\n  };\n\n  List.prototype.shift = function shift () {\n    return setListBounds(this, 1);\n  };\n\n  // @pragma Composition\n\n  List.prototype.concat = function concat (/*...collections*/) {\n    var arguments$1 = arguments;\n\n    var seqs = [];\n    for (var i = 0; i < arguments.length; i++) {\n      var argument = arguments$1[i];\n      var seq = IndexedCollection(\n        typeof argument !== 'string' && hasIterator(argument)\n          ? argument\n          : [argument]\n      );\n      if (seq.size !== 0) {\n        seqs.push(seq);\n      }\n    }\n    if (seqs.length === 0) {\n      return this;\n    }\n    if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n      return this.constructor(seqs[0]);\n    }\n    return this.withMutations(function (list) {\n      seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n    });\n  };\n\n  List.prototype.setSize = function setSize (size) {\n    return setListBounds(this, 0, size);\n  };\n\n  List.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    return this.withMutations(function (list) {\n      for (var i = 0; i < this$1$1.size; i++) {\n        list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n      }\n    });\n  };\n\n  // @pragma Iteration\n\n  List.prototype.slice = function slice (begin, end) {\n    var size = this.size;\n    if (wholeSlice(begin, end, size)) {\n      return this;\n    }\n    return setListBounds(\n      this,\n      resolveBegin(begin, size),\n      resolveEnd(end, size)\n    );\n  };\n\n  List.prototype.__iterator = function __iterator (type, reverse) {\n    var index = reverse ? this.size : 0;\n    var values = iterateList(this, reverse);\n    return new Iterator(function () {\n      var value = values();\n      return value === DONE\n        ? iteratorDone()\n        : iteratorValue(type, reverse ? --index : index++, value);\n    });\n  };\n\n  List.prototype.__iterate = function __iterate (fn, reverse) {\n    var index = reverse ? this.size : 0;\n    var values = iterateList(this, reverse);\n    var value;\n    while ((value = values()) !== DONE) {\n      if (fn(value, reverse ? --index : index++, this) === false) {\n        break;\n      }\n    }\n    return index;\n  };\n\n  List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyList();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeList(\n      this._origin,\n      this._capacity,\n      this._level,\n      this._root,\n      this._tail,\n      ownerID,\n      this.__hash\n    );\n  };\n\n  return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n  return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n  this.array = array;\n  this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n  if (index === level ? 1 << level : this.array.length === 0) {\n    return this;\n  }\n  var originIndex = (index >>> level) & MASK;\n  if (originIndex >= this.array.length) {\n    return new VNode([], ownerID);\n  }\n  var removingFirst = originIndex === 0;\n  var newChild;\n  if (level > 0) {\n    var oldChild = this.array[originIndex];\n    newChild =\n      oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n    if (newChild === oldChild && removingFirst) {\n      return this;\n    }\n  }\n  if (removingFirst && !newChild) {\n    return this;\n  }\n  var editable = editableVNode(this, ownerID);\n  if (!removingFirst) {\n    for (var ii = 0; ii < originIndex; ii++) {\n      editable.array[ii] = undefined;\n    }\n  }\n  if (newChild) {\n    editable.array[originIndex] = newChild;\n  }\n  return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n  if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n    return this;\n  }\n  var sizeIndex = ((index - 1) >>> level) & MASK;\n  if (sizeIndex >= this.array.length) {\n    return this;\n  }\n\n  var newChild;\n  if (level > 0) {\n    var oldChild = this.array[sizeIndex];\n    newChild =\n      oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n    if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n      return this;\n    }\n  }\n\n  var editable = editableVNode(this, ownerID);\n  editable.array.splice(sizeIndex + 1);\n  if (newChild) {\n    editable.array[sizeIndex] = newChild;\n  }\n  return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n  var left = list._origin;\n  var right = list._capacity;\n  var tailPos = getTailOffset(right);\n  var tail = list._tail;\n\n  return iterateNodeOrLeaf(list._root, list._level, 0);\n\n  function iterateNodeOrLeaf(node, level, offset) {\n    return level === 0\n      ? iterateLeaf(node, offset)\n      : iterateNode(node, level, offset);\n  }\n\n  function iterateLeaf(node, offset) {\n    var array = offset === tailPos ? tail && tail.array : node && node.array;\n    var from = offset > left ? 0 : left - offset;\n    var to = right - offset;\n    if (to > SIZE) {\n      to = SIZE;\n    }\n    return function () {\n      if (from === to) {\n        return DONE;\n      }\n      var idx = reverse ? --to : from++;\n      return array && array[idx];\n    };\n  }\n\n  function iterateNode(node, level, offset) {\n    var values;\n    var array = node && node.array;\n    var from = offset > left ? 0 : (left - offset) >> level;\n    var to = ((right - offset) >> level) + 1;\n    if (to > SIZE) {\n      to = SIZE;\n    }\n    return function () {\n      while (true) {\n        if (values) {\n          var value = values();\n          if (value !== DONE) {\n            return value;\n          }\n          values = null;\n        }\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        values = iterateNodeOrLeaf(\n          array && array[idx],\n          level - SHIFT,\n          offset + (idx << level)\n        );\n      }\n    };\n  }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n  var list = Object.create(ListPrototype);\n  list.size = capacity - origin;\n  list._origin = origin;\n  list._capacity = capacity;\n  list._level = level;\n  list._root = root;\n  list._tail = tail;\n  list.__ownerID = ownerID;\n  list.__hash = hash;\n  list.__altered = false;\n  return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n  return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n  index = wrapIndex(list, index);\n\n  if (index !== index) {\n    return list;\n  }\n\n  if (index >= list.size || index < 0) {\n    return list.withMutations(function (list) {\n      index < 0\n        ? setListBounds(list, index).set(0, value)\n        : setListBounds(list, 0, index + 1).set(index, value);\n    });\n  }\n\n  index += list._origin;\n\n  var newTail = list._tail;\n  var newRoot = list._root;\n  var didAlter = MakeRef();\n  if (index >= getTailOffset(list._capacity)) {\n    newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n  } else {\n    newRoot = updateVNode(\n      newRoot,\n      list.__ownerID,\n      list._level,\n      index,\n      value,\n      didAlter\n    );\n  }\n\n  if (!didAlter.value) {\n    return list;\n  }\n\n  if (list.__ownerID) {\n    list._root = newRoot;\n    list._tail = newTail;\n    list.__hash = undefined;\n    list.__altered = true;\n    return list;\n  }\n  return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n  var idx = (index >>> level) & MASK;\n  var nodeHas = node && idx < node.array.length;\n  if (!nodeHas && value === undefined) {\n    return node;\n  }\n\n  var newNode;\n\n  if (level > 0) {\n    var lowerNode = node && node.array[idx];\n    var newLowerNode = updateVNode(\n      lowerNode,\n      ownerID,\n      level - SHIFT,\n      index,\n      value,\n      didAlter\n    );\n    if (newLowerNode === lowerNode) {\n      return node;\n    }\n    newNode = editableVNode(node, ownerID);\n    newNode.array[idx] = newLowerNode;\n    return newNode;\n  }\n\n  if (nodeHas && node.array[idx] === value) {\n    return node;\n  }\n\n  if (didAlter) {\n    SetRef(didAlter);\n  }\n\n  newNode = editableVNode(node, ownerID);\n  if (value === undefined && idx === newNode.array.length - 1) {\n    newNode.array.pop();\n  } else {\n    newNode.array[idx] = value;\n  }\n  return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n  if (ownerID && node && ownerID === node.ownerID) {\n    return node;\n  }\n  return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n  if (rawIndex >= getTailOffset(list._capacity)) {\n    return list._tail;\n  }\n  if (rawIndex < 1 << (list._level + SHIFT)) {\n    var node = list._root;\n    var level = list._level;\n    while (node && level > 0) {\n      node = node.array[(rawIndex >>> level) & MASK];\n      level -= SHIFT;\n    }\n    return node;\n  }\n}\n\nfunction setListBounds(list, begin, end) {\n  // Sanitize begin & end using this shorthand for ToInt32(argument)\n  // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n  if (begin !== undefined) {\n    begin |= 0;\n  }\n  if (end !== undefined) {\n    end |= 0;\n  }\n  var owner = list.__ownerID || new OwnerID();\n  var oldOrigin = list._origin;\n  var oldCapacity = list._capacity;\n  var newOrigin = oldOrigin + begin;\n  var newCapacity =\n    end === undefined\n      ? oldCapacity\n      : end < 0\n      ? oldCapacity + end\n      : oldOrigin + end;\n  if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n    return list;\n  }\n\n  // If it's going to end after it starts, it's empty.\n  if (newOrigin >= newCapacity) {\n    return list.clear();\n  }\n\n  var newLevel = list._level;\n  var newRoot = list._root;\n\n  // New origin might need creating a higher root.\n  var offsetShift = 0;\n  while (newOrigin + offsetShift < 0) {\n    newRoot = new VNode(\n      newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n      owner\n    );\n    newLevel += SHIFT;\n    offsetShift += 1 << newLevel;\n  }\n  if (offsetShift) {\n    newOrigin += offsetShift;\n    oldOrigin += offsetShift;\n    newCapacity += offsetShift;\n    oldCapacity += offsetShift;\n  }\n\n  var oldTailOffset = getTailOffset(oldCapacity);\n  var newTailOffset = getTailOffset(newCapacity);\n\n  // New size might need creating a higher root.\n  while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n    newRoot = new VNode(\n      newRoot && newRoot.array.length ? [newRoot] : [],\n      owner\n    );\n    newLevel += SHIFT;\n  }\n\n  // Locate or create the new tail.\n  var oldTail = list._tail;\n  var newTail =\n    newTailOffset < oldTailOffset\n      ? listNodeFor(list, newCapacity - 1)\n      : newTailOffset > oldTailOffset\n      ? new VNode([], owner)\n      : oldTail;\n\n  // Merge Tail into tree.\n  if (\n    oldTail &&\n    newTailOffset > oldTailOffset &&\n    newOrigin < oldCapacity &&\n    oldTail.array.length\n  ) {\n    newRoot = editableVNode(newRoot, owner);\n    var node = newRoot;\n    for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n      var idx = (oldTailOffset >>> level) & MASK;\n      node = node.array[idx] = editableVNode(node.array[idx], owner);\n    }\n    node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n  }\n\n  // If the size has been reduced, there's a chance the tail needs to be trimmed.\n  if (newCapacity < oldCapacity) {\n    newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n  }\n\n  // If the new origin is within the tail, then we do not need a root.\n  if (newOrigin >= newTailOffset) {\n    newOrigin -= newTailOffset;\n    newCapacity -= newTailOffset;\n    newLevel = SHIFT;\n    newRoot = null;\n    newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n  } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n    offsetShift = 0;\n\n    // Identify the new top root node of the subtree of the old root.\n    while (newRoot) {\n      var beginIndex = (newOrigin >>> newLevel) & MASK;\n      if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n        break;\n      }\n      if (beginIndex) {\n        offsetShift += (1 << newLevel) * beginIndex;\n      }\n      newLevel -= SHIFT;\n      newRoot = newRoot.array[beginIndex];\n    }\n\n    // Trim the new sides of the new root.\n    if (newRoot && newOrigin > oldOrigin) {\n      newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n    }\n    if (newRoot && newTailOffset < oldTailOffset) {\n      newRoot = newRoot.removeAfter(\n        owner,\n        newLevel,\n        newTailOffset - offsetShift\n      );\n    }\n    if (offsetShift) {\n      newOrigin -= offsetShift;\n      newCapacity -= offsetShift;\n    }\n  }\n\n  if (list.__ownerID) {\n    list.size = newCapacity - newOrigin;\n    list._origin = newOrigin;\n    list._capacity = newCapacity;\n    list._level = newLevel;\n    list._root = newRoot;\n    list._tail = newTail;\n    list.__hash = undefined;\n    list.__altered = true;\n    return list;\n  }\n  return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n  return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n  function OrderedMap(value) {\n    return value === undefined || value === null\n      ? emptyOrderedMap()\n      : isOrderedMap(value)\n      ? value\n      : emptyOrderedMap().withMutations(function (map) {\n          var iter = KeyedCollection(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function (v, k) { return map.set(k, v); });\n        });\n  }\n\n  if ( Map ) OrderedMap.__proto__ = Map;\n  OrderedMap.prototype = Object.create( Map && Map.prototype );\n  OrderedMap.prototype.constructor = OrderedMap;\n\n  OrderedMap.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  OrderedMap.prototype.toString = function toString () {\n    return this.__toString('OrderedMap {', '}');\n  };\n\n  // @pragma Access\n\n  OrderedMap.prototype.get = function get (k, notSetValue) {\n    var index = this._map.get(k);\n    return index !== undefined ? this._list.get(index)[1] : notSetValue;\n  };\n\n  // @pragma Modification\n\n  OrderedMap.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._map.clear();\n      this._list.clear();\n      this.__altered = true;\n      return this;\n    }\n    return emptyOrderedMap();\n  };\n\n  OrderedMap.prototype.set = function set (k, v) {\n    return updateOrderedMap(this, k, v);\n  };\n\n  OrderedMap.prototype.remove = function remove (k) {\n    return updateOrderedMap(this, k, NOT_SET);\n  };\n\n  OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._list.__iterate(\n      function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n      reverse\n    );\n  };\n\n  OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n    return this._list.fromEntrySeq().__iterator(type, reverse);\n  };\n\n  OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    var newMap = this._map.__ensureOwner(ownerID);\n    var newList = this._list.__ensureOwner(ownerID);\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyOrderedMap();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      this._map = newMap;\n      this._list = newList;\n      return this;\n    }\n    return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n  };\n\n  return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n  var omap = Object.create(OrderedMap.prototype);\n  omap.size = map ? map.size : 0;\n  omap._map = map;\n  omap._list = list;\n  omap.__ownerID = ownerID;\n  omap.__hash = hash;\n  omap.__altered = false;\n  return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n  return (\n    EMPTY_ORDERED_MAP ||\n    (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n  );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n  var map = omap._map;\n  var list = omap._list;\n  var i = map.get(k);\n  var has = i !== undefined;\n  var newMap;\n  var newList;\n  if (v === NOT_SET) {\n    // removed\n    if (!has) {\n      return omap;\n    }\n    if (list.size >= SIZE && list.size >= map.size * 2) {\n      newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n      newMap = newList\n        .toKeyedSeq()\n        .map(function (entry) { return entry[0]; })\n        .flip()\n        .toMap();\n      if (omap.__ownerID) {\n        newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n      }\n    } else {\n      newMap = map.remove(k);\n      newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n    }\n  } else if (has) {\n    if (v === list.get(i)[1]) {\n      return omap;\n    }\n    newMap = map;\n    newList = list.set(i, [k, v]);\n  } else {\n    newMap = map.set(k, list.size);\n    newList = list.set(list.size, [k, v]);\n  }\n  if (omap.__ownerID) {\n    omap.size = newMap.size;\n    omap._map = newMap;\n    omap._list = newList;\n    omap.__hash = undefined;\n    omap.__altered = true;\n    return omap;\n  }\n  return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n  return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n  function Stack(value) {\n    return value === undefined || value === null\n      ? emptyStack()\n      : isStack(value)\n      ? value\n      : emptyStack().pushAll(value);\n  }\n\n  if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n  Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n  Stack.prototype.constructor = Stack;\n\n  Stack.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  Stack.prototype.toString = function toString () {\n    return this.__toString('Stack [', ']');\n  };\n\n  // @pragma Access\n\n  Stack.prototype.get = function get (index, notSetValue) {\n    var head = this._head;\n    index = wrapIndex(this, index);\n    while (head && index--) {\n      head = head.next;\n    }\n    return head ? head.value : notSetValue;\n  };\n\n  Stack.prototype.peek = function peek () {\n    return this._head && this._head.value;\n  };\n\n  // @pragma Modification\n\n  Stack.prototype.push = function push (/*...values*/) {\n    var arguments$1 = arguments;\n\n    if (arguments.length === 0) {\n      return this;\n    }\n    var newSize = this.size + arguments.length;\n    var head = this._head;\n    for (var ii = arguments.length - 1; ii >= 0; ii--) {\n      head = {\n        value: arguments$1[ii],\n        next: head,\n      };\n    }\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  Stack.prototype.pushAll = function pushAll (iter) {\n    iter = IndexedCollection(iter);\n    if (iter.size === 0) {\n      return this;\n    }\n    if (this.size === 0 && isStack(iter)) {\n      return iter;\n    }\n    assertNotInfinite(iter.size);\n    var newSize = this.size;\n    var head = this._head;\n    iter.__iterate(function (value) {\n      newSize++;\n      head = {\n        value: value,\n        next: head,\n      };\n    }, /* reverse */ true);\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  Stack.prototype.pop = function pop () {\n    return this.slice(1);\n  };\n\n  Stack.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._head = undefined;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyStack();\n  };\n\n  Stack.prototype.slice = function slice (begin, end) {\n    if (wholeSlice(begin, end, this.size)) {\n      return this;\n    }\n    var resolvedBegin = resolveBegin(begin, this.size);\n    var resolvedEnd = resolveEnd(end, this.size);\n    if (resolvedEnd !== this.size) {\n      // super.slice(begin, end);\n      return IndexedCollection.prototype.slice.call(this, begin, end);\n    }\n    var newSize = this.size - resolvedBegin;\n    var head = this._head;\n    while (resolvedBegin--) {\n      head = head.next;\n    }\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  // @pragma Mutability\n\n  Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyStack();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeStack(this.size, this._head, ownerID, this.__hash);\n  };\n\n  // @pragma Iteration\n\n  Stack.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return new ArraySeq(this.toArray()).__iterate(\n        function (v, k) { return fn(v, k, this$1$1); },\n        reverse\n      );\n    }\n    var iterations = 0;\n    var node = this._head;\n    while (node) {\n      if (fn(node.value, iterations++, this) === false) {\n        break;\n      }\n      node = node.next;\n    }\n    return iterations;\n  };\n\n  Stack.prototype.__iterator = function __iterator (type, reverse) {\n    if (reverse) {\n      return new ArraySeq(this.toArray()).__iterator(type, reverse);\n    }\n    var iterations = 0;\n    var node = this._head;\n    return new Iterator(function () {\n      if (node) {\n        var value = node.value;\n        node = node.next;\n        return iteratorValue(type, iterations++, value);\n      }\n      return iteratorDone();\n    });\n  };\n\n  return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n  return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n  var map = Object.create(StackPrototype);\n  map.size = size;\n  map._head = head;\n  map.__ownerID = ownerID;\n  map.__hash = hash;\n  map.__altered = false;\n  return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n  return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n  return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n  return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (\n    !isCollection(b) ||\n    (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n    (a.__hash !== undefined &&\n      b.__hash !== undefined &&\n      a.__hash !== b.__hash) ||\n    isKeyed(a) !== isKeyed(b) ||\n    isIndexed(a) !== isIndexed(b) ||\n    isOrdered(a) !== isOrdered(b)\n  ) {\n    return false;\n  }\n\n  if (a.size === 0 && b.size === 0) {\n    return true;\n  }\n\n  var notAssociative = !isAssociative(a);\n\n  if (isOrdered(a)) {\n    var entries = a.entries();\n    return (\n      b.every(function (v, k) {\n        var entry = entries.next().value;\n        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n      }) && entries.next().done\n    );\n  }\n\n  var flipped = false;\n\n  if (a.size === undefined) {\n    if (b.size === undefined) {\n      if (typeof a.cacheResult === 'function') {\n        a.cacheResult();\n      }\n    } else {\n      flipped = true;\n      var _ = a;\n      a = b;\n      b = _;\n    }\n  }\n\n  var allEqual = true;\n  var bSize = b.__iterate(function (v, k) {\n    if (\n      notAssociative\n        ? !a.has(v)\n        : flipped\n        ? !is(v, a.get(k, NOT_SET))\n        : !is(a.get(k, NOT_SET), v)\n    ) {\n      allEqual = false;\n      return false;\n    }\n  });\n\n  return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n  var keyCopier = function (key) {\n    ctor.prototype[key] = methods[key];\n  };\n  Object.keys(methods).forEach(keyCopier);\n  Object.getOwnPropertySymbols &&\n    Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n  return ctor;\n}\n\nfunction toJS(value) {\n  if (!value || typeof value !== 'object') {\n    return value;\n  }\n  if (!isCollection(value)) {\n    if (!isDataStructure(value)) {\n      return value;\n    }\n    value = Seq(value);\n  }\n  if (isKeyed(value)) {\n    var result$1 = {};\n    value.__iterate(function (v, k) {\n      result$1[k] = toJS(v);\n    });\n    return result$1;\n  }\n  var result = [];\n  value.__iterate(function (v) {\n    result.push(toJS(v));\n  });\n  return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n  function Set(value) {\n    return value === undefined || value === null\n      ? emptySet()\n      : isSet(value) && !isOrdered(value)\n      ? value\n      : emptySet().withMutations(function (set) {\n          var iter = SetCollection(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function (v) { return set.add(v); });\n        });\n  }\n\n  if ( SetCollection ) Set.__proto__ = SetCollection;\n  Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n  Set.prototype.constructor = Set;\n\n  Set.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  Set.fromKeys = function fromKeys (value) {\n    return this(KeyedCollection(value).keySeq());\n  };\n\n  Set.intersect = function intersect (sets) {\n    sets = Collection(sets).toArray();\n    return sets.length\n      ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n      : emptySet();\n  };\n\n  Set.union = function union (sets) {\n    sets = Collection(sets).toArray();\n    return sets.length\n      ? SetPrototype.union.apply(Set(sets.pop()), sets)\n      : emptySet();\n  };\n\n  Set.prototype.toString = function toString () {\n    return this.__toString('Set {', '}');\n  };\n\n  // @pragma Access\n\n  Set.prototype.has = function has (value) {\n    return this._map.has(value);\n  };\n\n  // @pragma Modification\n\n  Set.prototype.add = function add (value) {\n    return updateSet(this, this._map.set(value, value));\n  };\n\n  Set.prototype.remove = function remove (value) {\n    return updateSet(this, this._map.remove(value));\n  };\n\n  Set.prototype.clear = function clear () {\n    return updateSet(this, this._map.clear());\n  };\n\n  // @pragma Composition\n\n  Set.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    // keep track if the set is altered by the map function\n    var didChanges = false;\n\n    var newMap = updateSet(\n      this,\n      this._map.mapEntries(function (ref) {\n        var v = ref[1];\n\n        var mapped = mapper.call(context, v, v, this$1$1);\n\n        if (mapped !== v) {\n          didChanges = true;\n        }\n\n        return [mapped, mapped];\n      }, context)\n    );\n\n    return didChanges ? newMap : this;\n  };\n\n  Set.prototype.union = function union () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    iters = iters.filter(function (x) { return x.size !== 0; });\n    if (iters.length === 0) {\n      return this;\n    }\n    if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n      return this.constructor(iters[0]);\n    }\n    return this.withMutations(function (set) {\n      for (var ii = 0; ii < iters.length; ii++) {\n        if (typeof iters[ii] === 'string') {\n          set.add(iters[ii]);\n        } else {\n          SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n        }\n      }\n    });\n  };\n\n  Set.prototype.intersect = function intersect () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    if (iters.length === 0) {\n      return this;\n    }\n    iters = iters.map(function (iter) { return SetCollection(iter); });\n    var toRemove = [];\n    this.forEach(function (value) {\n      if (!iters.every(function (iter) { return iter.includes(value); })) {\n        toRemove.push(value);\n      }\n    });\n    return this.withMutations(function (set) {\n      toRemove.forEach(function (value) {\n        set.remove(value);\n      });\n    });\n  };\n\n  Set.prototype.subtract = function subtract () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    if (iters.length === 0) {\n      return this;\n    }\n    iters = iters.map(function (iter) { return SetCollection(iter); });\n    var toRemove = [];\n    this.forEach(function (value) {\n      if (iters.some(function (iter) { return iter.includes(value); })) {\n        toRemove.push(value);\n      }\n    });\n    return this.withMutations(function (set) {\n      toRemove.forEach(function (value) {\n        set.remove(value);\n      });\n    });\n  };\n\n  Set.prototype.sort = function sort (comparator) {\n    // Late binding\n    return OrderedSet(sortFactory(this, comparator));\n  };\n\n  Set.prototype.sortBy = function sortBy (mapper, comparator) {\n    // Late binding\n    return OrderedSet(sortFactory(this, comparator, mapper));\n  };\n\n  Set.prototype.wasAltered = function wasAltered () {\n    return this._map.wasAltered();\n  };\n\n  Set.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n  };\n\n  Set.prototype.__iterator = function __iterator (type, reverse) {\n    return this._map.__iterator(type, reverse);\n  };\n\n  Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    var newMap = this._map.__ensureOwner(ownerID);\n    if (!ownerID) {\n      if (this.size === 0) {\n        return this.__empty();\n      }\n      this.__ownerID = ownerID;\n      this._map = newMap;\n      return this;\n    }\n    return this.__make(newMap, ownerID);\n  };\n\n  return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n  return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n  if (set.__ownerID) {\n    set.size = newMap.size;\n    set._map = newMap;\n    return set;\n  }\n  return newMap === set._map\n    ? set\n    : newMap.size === 0\n    ? set.__empty()\n    : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n  var set = Object.create(SetPrototype);\n  set.size = map ? map.size : 0;\n  set._map = map;\n  set.__ownerID = ownerID;\n  return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n  return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n  function Range(start, end, step) {\n    if (!(this instanceof Range)) {\n      return new Range(start, end, step);\n    }\n    invariant(step !== 0, 'Cannot step a Range by 0');\n    start = start || 0;\n    if (end === undefined) {\n      end = Infinity;\n    }\n    step = step === undefined ? 1 : Math.abs(step);\n    if (end < start) {\n      step = -step;\n    }\n    this._start = start;\n    this._end = end;\n    this._step = step;\n    this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n    if (this.size === 0) {\n      if (EMPTY_RANGE) {\n        return EMPTY_RANGE;\n      }\n      EMPTY_RANGE = this;\n    }\n  }\n\n  if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n  Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  Range.prototype.constructor = Range;\n\n  Range.prototype.toString = function toString () {\n    if (this.size === 0) {\n      return 'Range []';\n    }\n    return (\n      'Range [ ' +\n      this._start +\n      '...' +\n      this._end +\n      (this._step !== 1 ? ' by ' + this._step : '') +\n      ' ]'\n    );\n  };\n\n  Range.prototype.get = function get (index, notSetValue) {\n    return this.has(index)\n      ? this._start + wrapIndex(this, index) * this._step\n      : notSetValue;\n  };\n\n  Range.prototype.includes = function includes (searchValue) {\n    var possibleIndex = (searchValue - this._start) / this._step;\n    return (\n      possibleIndex >= 0 &&\n      possibleIndex < this.size &&\n      possibleIndex === Math.floor(possibleIndex)\n    );\n  };\n\n  Range.prototype.slice = function slice (begin, end) {\n    if (wholeSlice(begin, end, this.size)) {\n      return this;\n    }\n    begin = resolveBegin(begin, this.size);\n    end = resolveEnd(end, this.size);\n    if (end <= begin) {\n      return new Range(0, 0);\n    }\n    return new Range(\n      this.get(begin, this._end),\n      this.get(end, this._end),\n      this._step\n    );\n  };\n\n  Range.prototype.indexOf = function indexOf (searchValue) {\n    var offsetValue = searchValue - this._start;\n    if (offsetValue % this._step === 0) {\n      var index = offsetValue / this._step;\n      if (index >= 0 && index < this.size) {\n        return index;\n      }\n    }\n    return -1;\n  };\n\n  Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n    return this.indexOf(searchValue);\n  };\n\n  Range.prototype.__iterate = function __iterate (fn, reverse) {\n    var size = this.size;\n    var step = this._step;\n    var value = reverse ? this._start + (size - 1) * step : this._start;\n    var i = 0;\n    while (i !== size) {\n      if (fn(value, reverse ? size - ++i : i++, this) === false) {\n        break;\n      }\n      value += reverse ? -step : step;\n    }\n    return i;\n  };\n\n  Range.prototype.__iterator = function __iterator (type, reverse) {\n    var size = this.size;\n    var step = this._step;\n    var value = reverse ? this._start + (size - 1) * step : this._start;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var v = value;\n      value += reverse ? -step : step;\n      return iteratorValue(type, reverse ? size - ++i : i++, v);\n    });\n  };\n\n  Range.prototype.equals = function equals (other) {\n    return other instanceof Range\n      ? this._start === other._start &&\n          this._end === other._end &&\n          this._step === other._step\n      : deepEqual(this, other);\n  };\n\n  return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n  var keyPath = coerceKeyPath(searchKeyPath);\n  var i = 0;\n  while (i !== keyPath.length) {\n    collection = get(collection, keyPath[i++], NOT_SET);\n    if (collection === NOT_SET) {\n      return notSetValue;\n    }\n  }\n  return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n  return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n  return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n  return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n  assertNotInfinite(this.size);\n  var object = {};\n  this.__iterate(function (v, k) {\n    object[k] = v;\n  });\n  return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n  // ### Conversion to other types\n\n  toArray: function toArray() {\n    assertNotInfinite(this.size);\n    var array = new Array(this.size || 0);\n    var useTuples = isKeyed(this);\n    var i = 0;\n    this.__iterate(function (v, k) {\n      // Keyed collections produce an array of tuples.\n      array[i++] = useTuples ? [k, v] : v;\n    });\n    return array;\n  },\n\n  toIndexedSeq: function toIndexedSeq() {\n    return new ToIndexedSequence(this);\n  },\n\n  toJS: function toJS$1() {\n    return toJS(this);\n  },\n\n  toKeyedSeq: function toKeyedSeq() {\n    return new ToKeyedSequence(this, true);\n  },\n\n  toMap: function toMap() {\n    // Use Late Binding here to solve the circular dependency.\n    return Map(this.toKeyedSeq());\n  },\n\n  toObject: toObject,\n\n  toOrderedMap: function toOrderedMap() {\n    // Use Late Binding here to solve the circular dependency.\n    return OrderedMap(this.toKeyedSeq());\n  },\n\n  toOrderedSet: function toOrderedSet() {\n    // Use Late Binding here to solve the circular dependency.\n    return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toSet: function toSet() {\n    // Use Late Binding here to solve the circular dependency.\n    return Set(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toSetSeq: function toSetSeq() {\n    return new ToSetSequence(this);\n  },\n\n  toSeq: function toSeq() {\n    return isIndexed(this)\n      ? this.toIndexedSeq()\n      : isKeyed(this)\n      ? this.toKeyedSeq()\n      : this.toSetSeq();\n  },\n\n  toStack: function toStack() {\n    // Use Late Binding here to solve the circular dependency.\n    return Stack(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toList: function toList() {\n    // Use Late Binding here to solve the circular dependency.\n    return List(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  // ### Common JavaScript methods and properties\n\n  toString: function toString() {\n    return '[Collection]';\n  },\n\n  __toString: function __toString(head, tail) {\n    if (this.size === 0) {\n      return head + tail;\n    }\n    return (\n      head +\n      ' ' +\n      this.toSeq().map(this.__toStringMapper).join(', ') +\n      ' ' +\n      tail\n    );\n  },\n\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  concat: function concat() {\n    var values = [], len = arguments.length;\n    while ( len-- ) values[ len ] = arguments[ len ];\n\n    return reify(this, concatFactory(this, values));\n  },\n\n  includes: function includes(searchValue) {\n    return this.some(function (value) { return is(value, searchValue); });\n  },\n\n  entries: function entries() {\n    return this.__iterator(ITERATE_ENTRIES);\n  },\n\n  every: function every(predicate, context) {\n    assertNotInfinite(this.size);\n    var returnValue = true;\n    this.__iterate(function (v, k, c) {\n      if (!predicate.call(context, v, k, c)) {\n        returnValue = false;\n        return false;\n      }\n    });\n    return returnValue;\n  },\n\n  filter: function filter(predicate, context) {\n    return reify(this, filterFactory(this, predicate, context, true));\n  },\n\n  partition: function partition(predicate, context) {\n    return partitionFactory(this, predicate, context);\n  },\n\n  find: function find(predicate, context, notSetValue) {\n    var entry = this.findEntry(predicate, context);\n    return entry ? entry[1] : notSetValue;\n  },\n\n  forEach: function forEach(sideEffect, context) {\n    assertNotInfinite(this.size);\n    return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n  },\n\n  join: function join(separator) {\n    assertNotInfinite(this.size);\n    separator = separator !== undefined ? '' + separator : ',';\n    var joined = '';\n    var isFirst = true;\n    this.__iterate(function (v) {\n      isFirst ? (isFirst = false) : (joined += separator);\n      joined += v !== null && v !== undefined ? v.toString() : '';\n    });\n    return joined;\n  },\n\n  keys: function keys() {\n    return this.__iterator(ITERATE_KEYS);\n  },\n\n  map: function map(mapper, context) {\n    return reify(this, mapFactory(this, mapper, context));\n  },\n\n  reduce: function reduce$1(reducer, initialReduction, context) {\n    return reduce(\n      this,\n      reducer,\n      initialReduction,\n      context,\n      arguments.length < 2,\n      false\n    );\n  },\n\n  reduceRight: function reduceRight(reducer, initialReduction, context) {\n    return reduce(\n      this,\n      reducer,\n      initialReduction,\n      context,\n      arguments.length < 2,\n      true\n    );\n  },\n\n  reverse: function reverse() {\n    return reify(this, reverseFactory(this, true));\n  },\n\n  slice: function slice(begin, end) {\n    return reify(this, sliceFactory(this, begin, end, true));\n  },\n\n  some: function some(predicate, context) {\n    assertNotInfinite(this.size);\n    var returnValue = false;\n    this.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        returnValue = true;\n        return false;\n      }\n    });\n    return returnValue;\n  },\n\n  sort: function sort(comparator) {\n    return reify(this, sortFactory(this, comparator));\n  },\n\n  values: function values() {\n    return this.__iterator(ITERATE_VALUES);\n  },\n\n  // ### More sequential methods\n\n  butLast: function butLast() {\n    return this.slice(0, -1);\n  },\n\n  isEmpty: function isEmpty() {\n    return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n  },\n\n  count: function count(predicate, context) {\n    return ensureSize(\n      predicate ? this.toSeq().filter(predicate, context) : this\n    );\n  },\n\n  countBy: function countBy(grouper, context) {\n    return countByFactory(this, grouper, context);\n  },\n\n  equals: function equals(other) {\n    return deepEqual(this, other);\n  },\n\n  entrySeq: function entrySeq() {\n    var collection = this;\n    if (collection._cache) {\n      // We cache as an entries array, so we can just return the cache!\n      return new ArraySeq(collection._cache);\n    }\n    var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n    entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n    return entriesSequence;\n  },\n\n  filterNot: function filterNot(predicate, context) {\n    return this.filter(not(predicate), context);\n  },\n\n  findEntry: function findEntry(predicate, context, notSetValue) {\n    var found = notSetValue;\n    this.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        found = [k, v];\n        return false;\n      }\n    });\n    return found;\n  },\n\n  findKey: function findKey(predicate, context) {\n    var entry = this.findEntry(predicate, context);\n    return entry && entry[0];\n  },\n\n  findLast: function findLast(predicate, context, notSetValue) {\n    return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n  },\n\n  findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n    return this.toKeyedSeq()\n      .reverse()\n      .findEntry(predicate, context, notSetValue);\n  },\n\n  findLastKey: function findLastKey(predicate, context) {\n    return this.toKeyedSeq().reverse().findKey(predicate, context);\n  },\n\n  first: function first(notSetValue) {\n    return this.find(returnTrue, null, notSetValue);\n  },\n\n  flatMap: function flatMap(mapper, context) {\n    return reify(this, flatMapFactory(this, mapper, context));\n  },\n\n  flatten: function flatten(depth) {\n    return reify(this, flattenFactory(this, depth, true));\n  },\n\n  fromEntrySeq: function fromEntrySeq() {\n    return new FromEntriesSequence(this);\n  },\n\n  get: function get(searchKey, notSetValue) {\n    return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n  },\n\n  getIn: getIn,\n\n  groupBy: function groupBy(grouper, context) {\n    return groupByFactory(this, grouper, context);\n  },\n\n  has: function has(searchKey) {\n    return this.get(searchKey, NOT_SET) !== NOT_SET;\n  },\n\n  hasIn: hasIn,\n\n  isSubset: function isSubset(iter) {\n    iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n    return this.every(function (value) { return iter.includes(value); });\n  },\n\n  isSuperset: function isSuperset(iter) {\n    iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n    return iter.isSubset(this);\n  },\n\n  keyOf: function keyOf(searchValue) {\n    return this.findKey(function (value) { return is(value, searchValue); });\n  },\n\n  keySeq: function keySeq() {\n    return this.toSeq().map(keyMapper).toIndexedSeq();\n  },\n\n  last: function last(notSetValue) {\n    return this.toSeq().reverse().first(notSetValue);\n  },\n\n  lastKeyOf: function lastKeyOf(searchValue) {\n    return this.toKeyedSeq().reverse().keyOf(searchValue);\n  },\n\n  max: function max(comparator) {\n    return maxFactory(this, comparator);\n  },\n\n  maxBy: function maxBy(mapper, comparator) {\n    return maxFactory(this, comparator, mapper);\n  },\n\n  min: function min(comparator) {\n    return maxFactory(\n      this,\n      comparator ? neg(comparator) : defaultNegComparator\n    );\n  },\n\n  minBy: function minBy(mapper, comparator) {\n    return maxFactory(\n      this,\n      comparator ? neg(comparator) : defaultNegComparator,\n      mapper\n    );\n  },\n\n  rest: function rest() {\n    return this.slice(1);\n  },\n\n  skip: function skip(amount) {\n    return amount === 0 ? this : this.slice(Math.max(0, amount));\n  },\n\n  skipLast: function skipLast(amount) {\n    return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n  },\n\n  skipWhile: function skipWhile(predicate, context) {\n    return reify(this, skipWhileFactory(this, predicate, context, true));\n  },\n\n  skipUntil: function skipUntil(predicate, context) {\n    return this.skipWhile(not(predicate), context);\n  },\n\n  sortBy: function sortBy(mapper, comparator) {\n    return reify(this, sortFactory(this, comparator, mapper));\n  },\n\n  take: function take(amount) {\n    return this.slice(0, Math.max(0, amount));\n  },\n\n  takeLast: function takeLast(amount) {\n    return this.slice(-Math.max(0, amount));\n  },\n\n  takeWhile: function takeWhile(predicate, context) {\n    return reify(this, takeWhileFactory(this, predicate, context));\n  },\n\n  takeUntil: function takeUntil(predicate, context) {\n    return this.takeWhile(not(predicate), context);\n  },\n\n  update: function update(fn) {\n    return fn(this);\n  },\n\n  valueSeq: function valueSeq() {\n    return this.toIndexedSeq();\n  },\n\n  // ### Hashable Object\n\n  hashCode: function hashCode() {\n    return this.__hash || (this.__hash = hashCollection(this));\n  },\n\n  // ### Internal\n\n  // abstract __iterate(fn, reverse)\n\n  // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n  return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n  // ### More sequential methods\n\n  flip: function flip() {\n    return reify(this, flipFactory(this));\n  },\n\n  mapEntries: function mapEntries(mapper, context) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    return reify(\n      this,\n      this.toSeq()\n        .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n        .fromEntrySeq()\n    );\n  },\n\n  mapKeys: function mapKeys(mapper, context) {\n    var this$1$1 = this;\n\n    return reify(\n      this,\n      this.toSeq()\n        .flip()\n        .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n        .flip()\n    );\n  },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n  // ### Conversion to other types\n\n  toKeyedSeq: function toKeyedSeq() {\n    return new ToKeyedSequence(this, false);\n  },\n\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  filter: function filter(predicate, context) {\n    return reify(this, filterFactory(this, predicate, context, false));\n  },\n\n  findIndex: function findIndex(predicate, context) {\n    var entry = this.findEntry(predicate, context);\n    return entry ? entry[0] : -1;\n  },\n\n  indexOf: function indexOf(searchValue) {\n    var key = this.keyOf(searchValue);\n    return key === undefined ? -1 : key;\n  },\n\n  lastIndexOf: function lastIndexOf(searchValue) {\n    var key = this.lastKeyOf(searchValue);\n    return key === undefined ? -1 : key;\n  },\n\n  reverse: function reverse() {\n    return reify(this, reverseFactory(this, false));\n  },\n\n  slice: function slice(begin, end) {\n    return reify(this, sliceFactory(this, begin, end, false));\n  },\n\n  splice: function splice(index, removeNum /*, ...values*/) {\n    var numArgs = arguments.length;\n    removeNum = Math.max(removeNum || 0, 0);\n    if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n      return this;\n    }\n    // If index is negative, it should resolve relative to the size of the\n    // collection. However size may be expensive to compute if not cached, so\n    // only call count() if the number is in fact negative.\n    index = resolveBegin(index, index < 0 ? this.count() : this.size);\n    var spliced = this.slice(0, index);\n    return reify(\n      this,\n      numArgs === 1\n        ? spliced\n        : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n    );\n  },\n\n  // ### More collection methods\n\n  findLastIndex: function findLastIndex(predicate, context) {\n    var entry = this.findLastEntry(predicate, context);\n    return entry ? entry[0] : -1;\n  },\n\n  first: function first(notSetValue) {\n    return this.get(0, notSetValue);\n  },\n\n  flatten: function flatten(depth) {\n    return reify(this, flattenFactory(this, depth, false));\n  },\n\n  get: function get(index, notSetValue) {\n    index = wrapIndex(this, index);\n    return index < 0 ||\n      this.size === Infinity ||\n      (this.size !== undefined && index > this.size)\n      ? notSetValue\n      : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n  },\n\n  has: function has(index) {\n    index = wrapIndex(this, index);\n    return (\n      index >= 0 &&\n      (this.size !== undefined\n        ? this.size === Infinity || index < this.size\n        : this.indexOf(index) !== -1)\n    );\n  },\n\n  interpose: function interpose(separator) {\n    return reify(this, interposeFactory(this, separator));\n  },\n\n  interleave: function interleave(/*...collections*/) {\n    var collections = [this].concat(arrCopy(arguments));\n    var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n    var interleaved = zipped.flatten(true);\n    if (zipped.size) {\n      interleaved.size = zipped.size * collections.length;\n    }\n    return reify(this, interleaved);\n  },\n\n  keySeq: function keySeq() {\n    return Range(0, this.size);\n  },\n\n  last: function last(notSetValue) {\n    return this.get(-1, notSetValue);\n  },\n\n  skipWhile: function skipWhile(predicate, context) {\n    return reify(this, skipWhileFactory(this, predicate, context, false));\n  },\n\n  zip: function zip(/*, ...collections */) {\n    var collections = [this].concat(arrCopy(arguments));\n    return reify(this, zipWithFactory(this, defaultZipper, collections));\n  },\n\n  zipAll: function zipAll(/*, ...collections */) {\n    var collections = [this].concat(arrCopy(arguments));\n    return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n  },\n\n  zipWith: function zipWith(zipper /*, ...collections */) {\n    var collections = arrCopy(arguments);\n    collections[0] = this;\n    return reify(this, zipWithFactory(this, zipper, collections));\n  },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  get: function get(value, notSetValue) {\n    return this.has(value) ? value : notSetValue;\n  },\n\n  includes: function includes(value) {\n    return this.has(value);\n  },\n\n  // ### More sequential methods\n\n  keySeq: function keySeq() {\n    return this.valueSeq();\n  },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n  assertNotInfinite(collection.size);\n  collection.__iterate(function (v, k, c) {\n    if (useFirst) {\n      useFirst = false;\n      reduction = v;\n    } else {\n      reduction = reducer.call(context, reduction, v, k, c);\n    }\n  }, reverse);\n  return reduction;\n}\n\nfunction keyMapper(v, k) {\n  return k;\n}\n\nfunction entryMapper(v, k) {\n  return [k, v];\n}\n\nfunction not(predicate) {\n  return function () {\n    return !predicate.apply(this, arguments);\n  };\n}\n\nfunction neg(predicate) {\n  return function () {\n    return -predicate.apply(this, arguments);\n  };\n}\n\nfunction defaultZipper() {\n  return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n  return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n  if (collection.size === Infinity) {\n    return 0;\n  }\n  var ordered = isOrdered(collection);\n  var keyed = isKeyed(collection);\n  var h = ordered ? 1 : 0;\n  var size = collection.__iterate(\n    keyed\n      ? ordered\n        ? function (v, k) {\n            h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n          }\n        : function (v, k) {\n            h = (h + hashMerge(hash(v), hash(k))) | 0;\n          }\n      : ordered\n      ? function (v) {\n          h = (31 * h + hash(v)) | 0;\n        }\n      : function (v) {\n          h = (h + hash(v)) | 0;\n        }\n  );\n  return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n  h = imul(h, 0xcc9e2d51);\n  h = imul((h << 15) | (h >>> -15), 0x1b873593);\n  h = imul((h << 13) | (h >>> -13), 5);\n  h = ((h + 0xe6546b64) | 0) ^ size;\n  h = imul(h ^ (h >>> 16), 0x85ebca6b);\n  h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n  h = smi(h ^ (h >>> 16));\n  return h;\n}\n\nfunction hashMerge(a, b) {\n  return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n  function OrderedSet(value) {\n    return value === undefined || value === null\n      ? emptyOrderedSet()\n      : isOrderedSet(value)\n      ? value\n      : emptyOrderedSet().withMutations(function (set) {\n          var iter = SetCollection(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function (v) { return set.add(v); });\n        });\n  }\n\n  if ( Set ) OrderedSet.__proto__ = Set;\n  OrderedSet.prototype = Object.create( Set && Set.prototype );\n  OrderedSet.prototype.constructor = OrderedSet;\n\n  OrderedSet.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  OrderedSet.fromKeys = function fromKeys (value) {\n    return this(KeyedCollection(value).keySeq());\n  };\n\n  OrderedSet.prototype.toString = function toString () {\n    return this.__toString('OrderedSet {', '}');\n  };\n\n  return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n  var set = Object.create(OrderedSetPrototype);\n  set.size = map ? map.size : 0;\n  set._map = map;\n  set.__ownerID = ownerID;\n  return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n  return (\n    EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n  );\n}\n\nvar PairSorting = {\n  LeftThenRight: -1,\n  RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n  if (isRecord(defaultValues)) {\n    throw new Error(\n      'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n    );\n  }\n\n  if (isImmutable(defaultValues)) {\n    throw new Error(\n      'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n    );\n  }\n\n  if (defaultValues === null || typeof defaultValues !== 'object') {\n    throw new Error(\n      'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n    );\n  }\n}\n\nvar Record = function Record(defaultValues, name) {\n  var hasInitialized;\n\n  throwOnInvalidDefaultValues(defaultValues);\n\n  var RecordType = function Record(values) {\n    var this$1$1 = this;\n\n    if (values instanceof RecordType) {\n      return values;\n    }\n    if (!(this instanceof RecordType)) {\n      return new RecordType(values);\n    }\n    if (!hasInitialized) {\n      hasInitialized = true;\n      var keys = Object.keys(defaultValues);\n      var indices = (RecordTypePrototype._indices = {});\n      // Deprecated: left to attempt not to break any external code which\n      // relies on a ._name property existing on record instances.\n      // Use Record.getDescriptiveName() instead\n      RecordTypePrototype._name = name;\n      RecordTypePrototype._keys = keys;\n      RecordTypePrototype._defaultValues = defaultValues;\n      for (var i = 0; i < keys.length; i++) {\n        var propName = keys[i];\n        indices[propName] = i;\n        if (RecordTypePrototype[propName]) {\n          /* eslint-disable no-console */\n          typeof console === 'object' &&\n            console.warn &&\n            console.warn(\n              'Cannot define ' +\n                recordName(this) +\n                ' with property \"' +\n                propName +\n                '\" since that property name is part of the Record API.'\n            );\n          /* eslint-enable no-console */\n        } else {\n          setProp(RecordTypePrototype, propName);\n        }\n      }\n    }\n    this.__ownerID = undefined;\n    this._values = List().withMutations(function (l) {\n      l.setSize(this$1$1._keys.length);\n      KeyedCollection(values).forEach(function (v, k) {\n        l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n      });\n    });\n    return this;\n  };\n\n  var RecordTypePrototype = (RecordType.prototype =\n    Object.create(RecordPrototype));\n  RecordTypePrototype.constructor = RecordType;\n\n  if (name) {\n    RecordType.displayName = name;\n  }\n\n  return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n  var str = recordName(this) + ' { ';\n  var keys = this._keys;\n  var k;\n  for (var i = 0, l = keys.length; i !== l; i++) {\n    k = keys[i];\n    str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n  }\n  return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n  return (\n    this === other ||\n    (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n  );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n  return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n  return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n  if (!this.has(k)) {\n    return notSetValue;\n  }\n  var index = this._indices[k];\n  var value = this._values.get(index);\n  return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n  if (this.has(k)) {\n    var newValues = this._values.set(\n      this._indices[k],\n      v === this._defaultValues[k] ? undefined : v\n    );\n    if (newValues !== this._values && !this.__ownerID) {\n      return makeRecord(this, newValues);\n    }\n  }\n  return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n  return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n  var newValues = this._values.clear().setSize(this._keys.length);\n\n  return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n  return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n  return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n  return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n  return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n  return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n  return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n  if (ownerID === this.__ownerID) {\n    return this;\n  }\n  var newValues = this._values.__ensureOwner(ownerID);\n  if (!ownerID) {\n    this.__ownerID = ownerID;\n    this._values = newValues;\n    return this;\n  }\n  return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n  CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n  return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n  var record = Object.create(Object.getPrototypeOf(likeRecord));\n  record._values = values;\n  record.__ownerID = ownerID;\n  return record;\n}\n\nfunction recordName(record) {\n  return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n  return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n  try {\n    Object.defineProperty(prototype, name, {\n      get: function () {\n        return this.get(name);\n      },\n      set: function (value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      },\n    });\n  } catch (error) {\n    // Object.defineProperty failed. Probably IE8.\n  }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n  function Repeat(value, times) {\n    if (!(this instanceof Repeat)) {\n      return new Repeat(value, times);\n    }\n    this._value = value;\n    this.size = times === undefined ? Infinity : Math.max(0, times);\n    if (this.size === 0) {\n      if (EMPTY_REPEAT) {\n        return EMPTY_REPEAT;\n      }\n      EMPTY_REPEAT = this;\n    }\n  }\n\n  if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n  Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  Repeat.prototype.constructor = Repeat;\n\n  Repeat.prototype.toString = function toString () {\n    if (this.size === 0) {\n      return 'Repeat []';\n    }\n    return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n  };\n\n  Repeat.prototype.get = function get (index, notSetValue) {\n    return this.has(index) ? this._value : notSetValue;\n  };\n\n  Repeat.prototype.includes = function includes (searchValue) {\n    return is(this._value, searchValue);\n  };\n\n  Repeat.prototype.slice = function slice (begin, end) {\n    var size = this.size;\n    return wholeSlice(begin, end, size)\n      ? this\n      : new Repeat(\n          this._value,\n          resolveEnd(end, size) - resolveBegin(begin, size)\n        );\n  };\n\n  Repeat.prototype.reverse = function reverse () {\n    return this;\n  };\n\n  Repeat.prototype.indexOf = function indexOf (searchValue) {\n    if (is(this._value, searchValue)) {\n      return 0;\n    }\n    return -1;\n  };\n\n  Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n    if (is(this._value, searchValue)) {\n      return this.size;\n    }\n    return -1;\n  };\n\n  Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n    var size = this.size;\n    var i = 0;\n    while (i !== size) {\n      if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  Repeat.prototype.__iterator = function __iterator (type, reverse) {\n    var this$1$1 = this;\n\n    var size = this.size;\n    var i = 0;\n    return new Iterator(function () { return i === size\n        ? iteratorDone()\n        : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n    );\n  };\n\n  Repeat.prototype.equals = function equals (other) {\n    return other instanceof Repeat\n      ? is(this._value, other._value)\n      : deepEqual(other);\n  };\n\n  return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n  return fromJSWith(\n    [],\n    converter || defaultConverter,\n    value,\n    '',\n    converter && converter.length > 2 ? [] : undefined,\n    { '': value }\n  );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n  if (\n    typeof value !== 'string' &&\n    !isImmutable(value) &&\n    (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n  ) {\n    if (~stack.indexOf(value)) {\n      throw new TypeError('Cannot convert circular structure to Immutable');\n    }\n    stack.push(value);\n    keyPath && key !== '' && keyPath.push(key);\n    var converted = converter.call(\n      parentValue,\n      key,\n      Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n      ),\n      keyPath && keyPath.slice()\n    );\n    stack.pop();\n    keyPath && keyPath.pop();\n    return converted;\n  }\n  return value;\n}\n\nfunction defaultConverter(k, v) {\n  // Effectively the opposite of \"Collection.toSeq()\"\n  return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.4\";\n\nvar Immutable = {\n  version: version,\n\n  Collection: Collection,\n  // Note: Iterable is deprecated\n  Iterable: Collection,\n\n  Seq: Seq,\n  Map: Map,\n  OrderedMap: OrderedMap,\n  List: List,\n  Stack: Stack,\n  Set: Set,\n  OrderedSet: OrderedSet,\n  PairSorting: PairSorting,\n\n  Record: Record,\n  Range: Range,\n  Repeat: Repeat,\n\n  is: is,\n  fromJS: fromJS,\n  hash: hash,\n\n  isImmutable: isImmutable,\n  isCollection: isCollection,\n  isKeyed: isKeyed,\n  isIndexed: isIndexed,\n  isAssociative: isAssociative,\n  isOrdered: isOrdered,\n  isValueObject: isValueObject,\n  isPlainObject: isPlainObject,\n  isSeq: isSeq,\n  isList: isList,\n  isMap: isMap,\n  isOrderedMap: isOrderedMap,\n  isStack: isStack,\n  isSet: isSet,\n  isOrderedSet: isOrderedSet,\n  isRecord: isRecord,\n\n  get: get,\n  getIn: getIn$1,\n  has: has,\n  hasIn: hasIn$1,\n  merge: merge,\n  mergeDeep: mergeDeep$1,\n  mergeWith: mergeWith,\n  mergeDeepWith: mergeDeepWith$1,\n  remove: remove,\n  removeIn: removeIn,\n  set: set,\n  setIn: setIn$1,\n  update: update$1,\n  updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module common */\nvar common_1 = require(\"./common\");\nvar Queue = /** @class */ (function () {\n    function Queue(_items, _limit) {\n        if (_items === void 0) { _items = []; }\n        if (_limit === void 0) { _limit = null; }\n        this._items = _items;\n        this._limit = _limit;\n        this._evictListeners = [];\n        this.onEvict = common_1.pushTo(this._evictListeners);\n    }\n    Queue.prototype.enqueue = function (item) {\n        var items = this._items;\n        items.push(item);\n        if (this._limit && items.length > this._limit)\n            this.evict();\n        return item;\n    };\n    Queue.prototype.evict = function () {\n        var item = this._items.shift();\n        this._evictListeners.forEach(function (fn) { return fn(item); });\n        return item;\n    };\n    Queue.prototype.dequeue = function () {\n        if (this.size())\n            return this._items.splice(0, 1)[0];\n    };\n    Queue.prototype.clear = function () {\n        var current = this._items;\n        this._items = [];\n        return current;\n    };\n    Queue.prototype.size = function () {\n        return this._items.length;\n    };\n    Queue.prototype.remove = function (item) {\n        var idx = this._items.indexOf(item);\n        return idx > -1 && this._items.splice(idx, 1)[0];\n    };\n    Queue.prototype.peekTail = function () {\n        return this._items[this._items.length - 1];\n    };\n    Queue.prototype.peekHead = function () {\n        if (this.size())\n            return this._items[0];\n    };\n    return Queue;\n}());\nexports.Queue = Queue;\n//# sourceMappingURL=queue.js.map","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e(t.jsts={})}(this,function(t){\"use strict\";function e(){}function n(t){this.message=t||\"\"}function i(t){this.message=t||\"\"}function r(t){this.message=t||\"\"}function o(){}function s(t){return null===t?Mt:t.color}function a(t){return null===t?null:t.parent}function u(t,e){null!==t&&(t.color=e)}function l(t){return null===t?null:t.left}function c(t){return null===t?null:t.right}function p(){this.root_=null,this.size_=0}function h(){}function f(){this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}function g(){}function d(t){this.message=t||\"\"}function y(){this.array_=[]}\"fill\"in Array.prototype||Object.defineProperty(Array.prototype,\"fill\",{configurable:!0,value:function(t){if(void 0===this||null===this)throw new TypeError(this+\" is not an object\");var e=Object(this),n=Math.max(Math.min(e.length,9007199254740991),0)||0,i=1 in arguments?parseInt(Number(arguments[1]),10)||0:0;i=i<0?Math.max(n+i,0):Math.min(i,n);var r=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:n;for(r=r<0?Math.max(n+arguments[2],0):Math.min(r,n);i<r;)e[i]=t,++i;return e},writable:!0}),Number.isFinite=Number.isFinite||function(t){return\"number\"==typeof t&&isFinite(t)},Number.isInteger=Number.isInteger||function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t},Number.parseFloat=Number.parseFloat||parseFloat,Number.isNaN=Number.isNaN||function(t){return t!=t},Math.trunc=Math.trunc||function(t){return t<0?Math.ceil(t):Math.floor(t)};var _=function(){};_.prototype.interfaces_=function(){return[]},_.prototype.getClass=function(){return _},_.prototype.equalsWithTolerance=function(t,e,n){return Math.abs(t-e)<=n};var m=function(t){function e(e){t.call(this,e),this.name=\"IllegalArgumentException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),v=function(){},I={MAX_VALUE:{configurable:!0}};v.isNaN=function(t){return Number.isNaN(t)},v.doubleToLongBits=function(t){return t},v.longBitsToDouble=function(t){return t},v.isInfinite=function(t){return!Number.isFinite(t)},I.MAX_VALUE.get=function(){return Number.MAX_VALUE},Object.defineProperties(v,I);var E=function(){},x=function(){},N=function(){},C=function t(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)this.x=0,this.y=0,this.z=t.NULL_ORDINATE;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.z=e.z}else 2===arguments.length?(this.x=arguments[0],this.y=arguments[1],this.z=t.NULL_ORDINATE):3===arguments.length&&(this.x=arguments[0],this.y=arguments[1],this.z=arguments[2])},S={DimensionalComparator:{configurable:!0},serialVersionUID:{configurable:!0},NULL_ORDINATE:{configurable:!0},X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0}};C.prototype.setOrdinate=function(t,e){switch(t){case C.X:this.x=e;break;case C.Y:this.y=e;break;case C.Z:this.z=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}},C.prototype.equals2D=function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!_.equalsWithTolerance(this.x,e.x,n)&&!!_.equalsWithTolerance(this.y,e.y,n)}},C.prototype.getOrdinate=function(t){switch(t){case C.X:return this.x;case C.Y:return this.y;case C.Z:return this.z}throw new m(\"Invalid ordinate index: \"+t)},C.prototype.equals3D=function(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||v.isNaN(this.z))&&v.isNaN(t.z)},C.prototype.equals=function(t){return t instanceof C&&this.equals2D(t)},C.prototype.equalInZ=function(t,e){return _.equalsWithTolerance(this.z,t.z,e)},C.prototype.compareTo=function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0},C.prototype.clone=function(){},C.prototype.copy=function(){return new C(this)},C.prototype.toString=function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.z+\")\"},C.prototype.distance3D=function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return Math.sqrt(e*e+n*n+i*i)},C.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},C.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this.x),t=37*t+C.hashCode(this.y)},C.prototype.setCoordinate=function(t){this.x=t.x,this.y=t.y,this.z=t.z},C.prototype.interfaces_=function(){return[E,x,e]},C.prototype.getClass=function(){return C},C.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=v.doubleToLongBits(t);return Math.trunc((e^e)>>>32)}},S.DimensionalComparator.get=function(){return L},S.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},S.NULL_ORDINATE.get=function(){return v.NaN},S.X.get=function(){return 0},S.Y.get=function(){return 1},S.Z.get=function(){return 2},Object.defineProperties(C,S);var L=function(t){if(this._dimensionsToTest=2,0===arguments.length);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=e}};L.prototype.compare=function(t,e){var n=t,i=e,r=L.compare(n.x,i.x);if(0!==r)return r;var o=L.compare(n.y,i.y);if(0!==o)return o;if(this._dimensionsToTest<=2)return 0;return L.compare(n.z,i.z)},L.prototype.interfaces_=function(){return[N]},L.prototype.getClass=function(){return L},L.compare=function(t,e){return t<e?-1:t>e?1:v.isNaN(t)?v.isNaN(e)?0:-1:v.isNaN(e)?1:0};var b=function(){};b.prototype.create=function(){},b.prototype.interfaces_=function(){return[]},b.prototype.getClass=function(){return b};var w=function(){},O={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};w.prototype.interfaces_=function(){return[]},w.prototype.getClass=function(){return w},w.toLocationSymbol=function(t){switch(t){case w.EXTERIOR:return\"e\";case w.BOUNDARY:return\"b\";case w.INTERIOR:return\"i\";case w.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)},O.INTERIOR.get=function(){return 0},O.BOUNDARY.get=function(){return 1},O.EXTERIOR.get=function(){return 2},O.NONE.get=function(){return-1},Object.defineProperties(w,O);var T=function(t,e){return t.interfaces_&&t.interfaces_().indexOf(e)>-1},R=function(){},P={LOG_10:{configurable:!0}};R.prototype.interfaces_=function(){return[]},R.prototype.getClass=function(){return R},R.log10=function(t){var e=Math.log(t);return v.isInfinite(e)?e:v.isNaN(e)?e:e/R.LOG_10},R.min=function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r},R.clamp=function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],o=arguments[2];return i<r?r:i>o?o:i}},R.wrap=function(t,e){return t<0?e- -t%e:t%e},R.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=r;return o>u&&(u=o),s>u&&(u=s),a>u&&(u=a),u}},R.average=function(t,e){return(t+e)/2},P.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(R,P);var D=function(t){this.str=t};D.prototype.append=function(t){this.str+=t},D.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},D.prototype.toString=function(t){return this.str};var M=function(t){this.value=t};M.prototype.intValue=function(){return this.value},M.prototype.compareTo=function(t){return this.value<t?-1:this.value>t?1:0},M.isNaN=function(t){return Number.isNaN(t)};var A=function(){};A.isWhitespace=function(t){return t<=32&&t>=0||127===t},A.toUpperCase=function(t){return t.toUpperCase()};var F=function t(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];t.call(this,t.parse(i))}}else if(2===arguments.length){var r=arguments[0],o=arguments[1];this.init(r,o)}},G={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};F.prototype.le=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<=t._lo},F.prototype.extractSignificantDigits=function(t,e){var n=this.abs(),i=F.magnitude(n._hi),r=F.TEN.pow(i);(n=n.divide(r)).gt(F.TEN)?(n=n.divide(F.TEN),i+=1):n.lt(F.ONE)&&(n=n.multiply(F.TEN),i-=1);for(var o=i+1,s=new D,a=F.MAX_PRINT_DIGITS-1,u=0;u<=a;u++){t&&u===o&&s.append(\".\");var l=Math.trunc(n._hi);if(l<0)break;var c=!1,p=0;l>9?(c=!0,p=\"9\"):p=\"0\"+l,s.append(p),n=n.subtract(F.valueOf(l)).multiply(F.TEN),c&&n.selfAdd(F.TEN);var h=!0,f=F.magnitude(n._hi);if(f<0&&Math.abs(f)>=a-u&&(h=!1),!h)break}return e[0]=i,s.toString()},F.prototype.sqr=function(){return this.multiply(this)},F.prototype.doubleValue=function(){return this._hi+this._lo},F.prototype.subtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},F.prototype.equals=function(){if(1===arguments.length){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}},F.prototype.isZero=function(){return 0===this._hi&&0===this._lo},F.prototype.selfSubtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},F.prototype.getSpecialNumberString=function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null},F.prototype.min=function(t){return this.le(t)?this:t},F.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null,c=null,p=null;return u=this._hi/n,l=F.SPLIT*u,r=l-u,p=F.SPLIT*n,r=l-r,o=u-r,s=p-n,c=u*n,s=p-s,a=n-s,p=r*s-c+r*a+o*s+o*a,l=(this._hi-c-p+this._lo-u*i)/n,p=u+l,this._hi=p,this._lo=u-p+l,this}},F.prototype.dump=function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"},F.prototype.divide=function(){if(arguments[0]instanceof F){var t=arguments[0],e=null,n=null,i=null,r=null,o=null,s=null,a=null,u=null;n=(o=this._hi/t._hi)-(e=(s=F.SPLIT*o)-(e=s-o)),u=e*(i=(u=F.SPLIT*t._hi)-(i=u-t._hi))-(a=o*t._hi)+e*(r=t._hi-i)+n*i+n*r,s=(this._hi-a-u+this._lo-o*t._lo)/t._hi;return new F(u=o+s,o-u+s)}if(\"number\"==typeof arguments[0]){var l=arguments[0];return v.isNaN(l)?F.createNaN():F.copy(this).selfDivide(l,0)}},F.prototype.ge=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>=t._lo},F.prototype.pow=function(t){if(0===t)return F.valueOf(1);var e=new F(this),n=F.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2==1&&n.selfMultiply(e),(i/=2)>0&&(e=e.sqr());else n=e;return t<0?n.reciprocal():n},F.prototype.ceil=function(){if(this.isNaN())return F.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new F(t,e)},F.prototype.compareTo=function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0},F.prototype.rint=function(){if(this.isNaN())return this;return this.add(.5).floor()},F.prototype.setValue=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},F.prototype.max=function(t){return this.ge(t)?this:t},F.prototype.sqrt=function(){if(this.isZero())return F.valueOf(0);if(this.isNegative())return F.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,n=F.valueOf(e),i=this.subtract(n.sqr())._hi*(.5*t);return n.add(i)},F.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0],n=null,i=null,r=null,o=null,s=null,a=null;return r=this._hi+e,s=r-this._hi,o=r-s,o=e-s+(this._hi-o),a=o+this._lo,n=r+a,i=a+(r-n),this._hi=n+i,this._lo=i+(n-this._hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],c=null,p=null,h=null,f=null,g=null,d=null,y=null;f=this._hi+u,p=this._lo+l,g=f-(d=f-this._hi),h=p-(y=p-this._lo);var _=(c=f+(d=(g=u-d+(this._hi-g))+p))+(d=(h=l-y+(this._lo-h))+(d+(f-c))),m=d+(c-_);return this._hi=_,this._lo=m,this}},F.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null;r=(u=F.SPLIT*this._hi)-this._hi,l=F.SPLIT*n,r=u-r,o=this._hi-r,s=l-n;var c=(u=this._hi*n)+(l=r*(s=l-s)-u+r*(a=n-s)+o*s+o*a+(this._hi*i+this._lo*n)),p=l+(r=u-c);return this._hi=c,this._lo=p,this}},F.prototype.selfSqr=function(){return this.selfMultiply(this)},F.prototype.floor=function(){if(this.isNaN())return F.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new F(t,e)},F.prototype.negate=function(){return this.isNaN()?this:new F(-this._hi,-this._lo)},F.prototype.clone=function(){},F.prototype.multiply=function(){if(arguments[0]instanceof F){var t=arguments[0];return t.isNaN()?F.createNaN():F.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return v.isNaN(e)?F.createNaN():F.copy(this).selfMultiply(e,0)}},F.prototype.isNaN=function(){return v.isNaN(this._hi)},F.prototype.intValue=function(){return Math.trunc(this._hi)},F.prototype.toString=function(){var t=F.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()},F.prototype.toStandardNotation=function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),i=e[0]+1,r=n;if(\".\"===n.charAt(0))r=\"0\"+n;else if(i<0)r=\"0.\"+F.stringOfChar(\"0\",-i)+n;else if(-1===n.indexOf(\".\")){var o=i-n.length;r=n+F.stringOfChar(\"0\",o)+\".0\"}return this.isNegative()?\"-\"+r:r},F.prototype.reciprocal=function(){var t=null,e=null,n=null,i=null,r=null,o=null,s=null,a=null;e=(r=1/this._hi)-(t=(o=F.SPLIT*r)-(t=o-r)),n=(a=F.SPLIT*this._hi)-this._hi;var u=r+(o=(1-(s=r*this._hi)-(a=t*(n=a-n)-s+t*(i=this._hi-n)+e*n+e*i)-r*this._lo)/this._hi);return new F(u,r-u+o)},F.prototype.toSciNotation=function(){if(this.isZero())return F.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),i=F.SCI_NOT_EXPONENT_CHAR+e[0];if(\"0\"===n.charAt(0))throw new Error(\"Found leading zero: \"+n);var r=\"\";n.length>1&&(r=n.substring(1));var o=n.charAt(0)+\".\"+r;return this.isNegative()?\"-\"+o+i:o+i},F.prototype.abs=function(){return this.isNaN()?F.NaN:this.isNegative()?this.negate():new F(this)},F.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},F.prototype.lt=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<t._lo},F.prototype.add=function(){if(arguments[0]instanceof F){var t=arguments[0];return F.copy(this).selfAdd(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return F.copy(this).selfAdd(e)}},F.prototype.init=function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof F){var e=arguments[0];this._hi=e._hi,this._lo=e._lo}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._hi=n,this._lo=i}},F.prototype.gt=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>t._lo},F.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},F.prototype.trunc=function(){return this.isNaN()?F.NaN:this.isPositive()?this.floor():this.ceil()},F.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},F.prototype.interfaces_=function(){return[e,E,x]},F.prototype.getClass=function(){return F},F.sqr=function(t){return F.valueOf(t).selfMultiply(t)},F.valueOf=function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return F.parse(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return new F(e)}},F.sqrt=function(t){return F.valueOf(t).sqrt()},F.parse=function(t){for(var e=0,n=t.length;A.isWhitespace(t.charAt(e));)e++;var i=!1;if(e<n){var r=t.charAt(e);\"-\"!==r&&\"+\"!==r||(e++,\"-\"===r&&(i=!0))}for(var o=new F,s=0,a=0,u=0;!(e>=n);){var l=t.charAt(e);if(e++,A.isDigit(l)){var c=l-\"0\";o.selfMultiply(F.TEN),o.selfAdd(c),s++}else{if(\".\"!==l){if(\"e\"===l||\"E\"===l){var p=t.substring(e);try{u=M.parseInt(p)}catch(e){throw e instanceof Error?new Error(\"Invalid exponent \"+p+\" in string \"+t):e}break}throw new Error(\"Unexpected character '\"+l+\"' at position \"+e+\" in string \"+t)}a=s}}var h=o,f=s-a-u;if(0===f)h=o;else if(f>0){var g=F.TEN.pow(f);h=o.divide(g)}else if(f<0){var d=F.TEN.pow(-f);h=o.multiply(d)}return i?h.negate():h},F.createNaN=function(){return new F(v.NaN,v.NaN)},F.copy=function(t){return new F(t)},F.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i},F.stringOfChar=function(t,e){for(var n=new D,i=0;i<e;i++)n.append(t);return n.toString()},G.PI.get=function(){return new F(3.141592653589793,1.2246467991473532e-16)},G.TWO_PI.get=function(){return new F(6.283185307179586,2.4492935982947064e-16)},G.PI_2.get=function(){return new F(1.5707963267948966,6.123233995736766e-17)},G.E.get=function(){return new F(2.718281828459045,1.4456468917292502e-16)},G.NaN.get=function(){return new F(v.NaN,v.NaN)},G.EPS.get=function(){return 1.23259516440783e-32},G.SPLIT.get=function(){return 134217729},G.MAX_PRINT_DIGITS.get=function(){return 32},G.TEN.get=function(){return F.valueOf(10)},G.ONE.get=function(){return F.valueOf(1)},G.SCI_NOT_EXPONENT_CHAR.get=function(){return\"E\"},G.SCI_NOT_ZERO.get=function(){return\"0.0E0\"},Object.defineProperties(F,G);var q=function(){},B={DP_SAFE_EPSILON:{configurable:!0}};q.prototype.interfaces_=function(){return[]},q.prototype.getClass=function(){return q},q.orientationIndex=function(t,e,n){var i=q.orientationIndexFilter(t,e,n);if(i<=1)return i;var r=F.valueOf(e.x).selfAdd(-t.x),o=F.valueOf(e.y).selfAdd(-t.y),s=F.valueOf(n.x).selfAdd(-e.x),a=F.valueOf(n.y).selfAdd(-e.y);return r.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum()},q.signOfDet2x2=function(t,e,n,i){return t.multiply(i).selfSubtract(e.multiply(n)).signum()},q.intersection=function(t,e,n,i){var r=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(e.x).selfSubtract(t.x)),o=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(e.y).selfSubtract(t.y)),s=r.subtract(o),a=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),u=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),l=a.subtract(u).selfDivide(s).doubleValue(),c=F.valueOf(t.x).selfAdd(F.valueOf(e.x).selfSubtract(t.x).selfMultiply(l)).doubleValue(),p=F.valueOf(e.x).selfSubtract(t.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),h=F.valueOf(e.y).selfSubtract(t.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),f=p.subtract(h).selfDivide(s).doubleValue(),g=F.valueOf(n.y).selfAdd(F.valueOf(i.y).selfSubtract(n.y).selfMultiply(f)).doubleValue();return new C(c,g)},q.orientationIndexFilter=function(t,e,n){var i=null,r=(t.x-n.x)*(e.y-n.y),o=(t.y-n.y)*(e.x-n.x),s=r-o;if(r>0){if(o<=0)return q.signum(s);i=r+o}else{if(!(r<0))return q.signum(s);if(o>=0)return q.signum(s);i=-r-o}var a=q.DP_SAFE_EPSILON*i;return s>=a||-s>=a?q.signum(s):2},q.signum=function(t){return t>0?1:t<0?-1:0},B.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(q,B);var V=function(){},U={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};U.X.get=function(){return 0},U.Y.get=function(){return 1},U.Z.get=function(){return 2},U.M.get=function(){return 3},V.prototype.setOrdinate=function(t,e,n){},V.prototype.size=function(){},V.prototype.getOrdinate=function(t,e){},V.prototype.getCoordinate=function(){},V.prototype.getCoordinateCopy=function(t){},V.prototype.getDimension=function(){},V.prototype.getX=function(t){},V.prototype.clone=function(){},V.prototype.expandEnvelope=function(t){},V.prototype.copy=function(){},V.prototype.getY=function(t){},V.prototype.toCoordinateArray=function(){},V.prototype.interfaces_=function(){return[x]},V.prototype.getClass=function(){return V},Object.defineProperties(V,U);var z=function(){},X=function(t){function e(){t.call(this,\"Projective point not representable on the Cartesian plane.\")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(z),Y=function(){};Y.arraycopy=function(t,e,n,i,r){for(var o=0,s=e;s<e+r;s++)n[i+o]=t[s],o++},Y.getProperty=function(t){return{\"line.separator\":\"\\n\"}[t]};var k=function t(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof t&&arguments[1]instanceof t){var r=arguments[0],o=arguments[1];this.x=r.y*o.w-o.y*r.w,this.y=o.x*r.w-r.x*o.w,this.w=r.x*o.y-o.x*r.y}else if(arguments[0]instanceof C&&arguments[1]instanceof C){var s=arguments[0],a=arguments[1];this.x=s.y-a.y,this.y=a.x-s.x,this.w=s.x*a.y-a.x*s.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2];this.x=u,this.y=l,this.w=c}else if(4===arguments.length){var p=arguments[0],h=arguments[1],f=arguments[2],g=arguments[3],d=p.y-h.y,y=h.x-p.x,_=p.x*h.y-h.x*p.y,m=f.y-g.y,v=g.x-f.x,I=f.x*g.y-g.x*f.y;this.x=y*I-v*_,this.y=m*_-d*I,this.w=d*v-m*y}};k.prototype.getY=function(){var t=this.y/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getX=function(){var t=this.x/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getCoordinate=function(){var t=new C;return t.x=this.getX(),t.y=this.getY(),t},k.prototype.interfaces_=function(){return[]},k.prototype.getClass=function(){return k},k.intersection=function(t,e,n,i){var r=t.y-e.y,o=e.x-t.x,s=t.x*e.y-e.x*t.y,a=n.y-i.y,u=i.x-n.x,l=n.x*i.y-i.x*n.y,c=r*u-a*o,p=(o*l-u*s)/c,h=(a*s-r*l)/c;if(v.isNaN(p)||v.isInfinite(p)||v.isNaN(h)||v.isInfinite(h))throw new X;return new C(p,h)};var j=function t(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof C){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];this.init(o,s,a,u)}},H={serialVersionUID:{configurable:!0}};j.prototype.getArea=function(){return this.getWidth()*this.getHeight()},j.prototype.equals=function(t){if(!(t instanceof j))return!1;var e=t;return this.isNull()?e.isNull():this._maxx===e.getMaxX()&&this._maxy===e.getMaxY()&&this._minx===e.getMinX()&&this._miny===e.getMinY()},j.prototype.intersection=function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new j;var e=this._minx>t._minx?this._minx:t._minx,n=this._miny>t._miny?this._miny:t._miny,i=this._maxx<t._maxx?this._maxx:t._maxx,r=this._maxy<t._maxy?this._maxy:t._maxy;return new j(e,i,n,r)},j.prototype.isNull=function(){return this._maxx<this._minx},j.prototype.getMaxX=function(){return this._maxx},j.prototype.covers=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof j){var e=arguments[0];return!this.isNull()&&!e.isNull()&&(e.getMinX()>=this._minx&&e.getMaxX()<=this._maxx&&e.getMinY()>=this._miny&&e.getMaxY()<=this._maxy)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&(n>=this._minx&&n<=this._maxx&&i>=this._miny&&i<=this._maxy)}},j.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof C){var e=arguments[0];return this.intersects(e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&!(n>this._maxx||n<this._minx||i>this._maxy||i<this._miny)}},j.prototype.getMinY=function(){return this._miny},j.prototype.getMinX=function(){return this._minx},j.prototype.expandToInclude=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];if(e.isNull())return null;this.isNull()?(this._minx=e.getMinX(),this._maxx=e.getMaxX(),this._miny=e.getMinY(),this._maxy=e.getMaxY()):(e._minx<this._minx&&(this._minx=e._minx),e._maxx>this._maxx&&(this._maxx=e._maxx),e._miny<this._miny&&(this._miny=e._miny),e._maxy>this._maxy&&(this._maxy=e._maxy))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.isNull()?(this._minx=n,this._maxx=n,this._miny=i,this._maxy=i):(n<this._minx&&(this._minx=n),n>this._maxx&&(this._maxx=n),i<this._miny&&(this._miny=i),i>this._maxy&&(this._maxy=i))}},j.prototype.minExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e},j.prototype.getWidth=function(){return this.isNull()?0:this._maxx-this._minx},j.prototype.compareTo=function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0},j.prototype.translate=function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},j.prototype.toString=function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"},j.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},j.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},j.prototype.maxExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},j.prototype.expandBy=function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},j.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof C){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.covers(n,i)}},j.prototype.centre=function(){return this.isNull()?null:new C((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},j.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];this._minx=e._minx,this._maxx=e._maxx,this._miny=e._miny,this._maxy=e._maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.init(n.x,i.x,n.y,i.y)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];r<o?(this._minx=r,this._maxx=o):(this._minx=o,this._maxx=r),s<a?(this._miny=s,this._maxy=a):(this._miny=a,this._maxy=s)}},j.prototype.getMaxY=function(){return this._maxy},j.prototype.distance=function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},j.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this._minx),t=37*t+C.hashCode(this._maxx),t=37*t+C.hashCode(this._miny),t=37*t+C.hashCode(this._maxy)},j.prototype.interfaces_=function(){return[E,e]},j.prototype.getClass=function(){return j},j.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(i.x,r.x),c=Math.max(i.x,r.x);return!(l>u)&&(!(c<a)&&(a=Math.min(o.y,s.y),u=Math.max(o.y,s.y),l=Math.min(i.y,r.y),c=Math.max(i.y,r.y),!(l>u)&&!(c<a)))}},H.serialVersionUID.get=function(){return 0x51845cd552189800},Object.defineProperties(j,H);var W={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,emptyTypeStr:/^\\s*(\\w+)\\s*EMPTY\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/},K=function(t){this.geometryFactory=t||new _e};K.prototype.read=function(t){var e,n,i;t=t.replace(/[\\n\\r]/g,\" \");var r=W.typeStr.exec(t);if(-1!==t.search(\"EMPTY\")&&((r=W.emptyTypeStr.exec(t))[2]=void 0),r&&(n=r[1].toLowerCase(),i=r[2],Q[n]&&(e=Q[n].apply(this,[i]))),void 0===e)throw new Error(\"Could not parse WKT \"+t);return e},K.prototype.write=function(t){return this.extractGeometry(t)},K.prototype.extractGeometry=function(t){var e=t.getGeometryType().toLowerCase();if(!J[e])return null;var n=e.toUpperCase();return t.isEmpty()?n+\" EMPTY\":n+\"(\"+J[e].apply(this,[t])+\")\"};var J={coordinate:function(t){return t.x+\" \"+t.y},point:function(t){return J.coordinate.call(this,t._coordinates._coordinates[0])},multipoint:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.point.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},linestring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},linearring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},multilinestring:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},polygon:function(t){var e=[];e.push(\"(\"+J.linestring.apply(this,[t._shell])+\")\");for(var n=0,i=t._holes.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._holes[n]])+\")\");return e.join(\",\")},multipolygon:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.polygon.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},geometrycollection:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(this.extractGeometry(t._geometries[n]));return e.join(\",\")}},Q={point:function(t){if(void 0===t)return this.geometryFactory.createPoint();var e=t.trim().split(W.spaces);return this.geometryFactory.createPoint(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])))},multipoint:function(t){if(void 0===t)return this.geometryFactory.createMultiPoint();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.point.apply(this,[e]));return this.geometryFactory.createMultiPoint(i)},linestring:function(t){if(void 0===t)return this.geometryFactory.createLineString();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLineString(i)},linearring:function(t){if(void 0===t)return this.geometryFactory.createLinearRing();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLinearRing(i)},multilinestring:function(t){if(void 0===t)return this.geometryFactory.createMultiLineString();for(var e,n=t.trim().split(W.parenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.linestring.apply(this,[e]));return this.geometryFactory.createMultiLineString(i)},polygon:function(t){if(void 0===t)return this.geometryFactory.createPolygon();for(var e,n,i,r,o=t.trim().split(W.parenComma),s=[],a=0,u=o.length;a<u;++a)e=o[a].replace(W.trimParens,\"$1\"),n=Q.linestring.apply(this,[e]),i=this.geometryFactory.createLinearRing(n._points),0===a?r=i:s.push(i);return this.geometryFactory.createPolygon(r,s)},multipolygon:function(t){if(void 0===t)return this.geometryFactory.createMultiPolygon();for(var e,n=t.trim().split(W.doubleParenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.polygon.apply(this,[e]));return this.geometryFactory.createMultiPolygon(i)},geometrycollection:function(t){if(void 0===t)return this.geometryFactory.createGeometryCollection();for(var e=(t=t.replace(/,\\s*([A-Za-z])/g,\"|$1\")).trim().split(\"|\"),n=[],i=0,r=e.length;i<r;++i)n.push(this.read(e[i]));return this.geometryFactory.createGeometryCollection(n)}},Z=function(t){this.parser=new K(t)};Z.prototype.write=function(t){return this.parser.write(t)},Z.toLineString=function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"};var $=function(t){function e(e){t.call(this,e),this.name=\"RuntimeException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),tt=function(t){function e(){if(t.call(this),0===arguments.length)t.call(this);else if(1===arguments.length){var e=arguments[0];t.call(this,e)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}($),et=function(){};et.prototype.interfaces_=function(){return[]},et.prototype.getClass=function(){return et},et.shouldNeverReachHere=function(){if(0===arguments.length)et.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new tt(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}},et.isTrue=function(){var t,e;if(1===arguments.length)t=arguments[0],et.isTrue(t,null);else if(2===arguments.length&&(t=arguments[0],e=arguments[1],!t))throw null===e?new tt:new tt(e)},et.equals=function(){var t,e,n;if(2===arguments.length)t=arguments[0],e=arguments[1],et.equals(t,e,null);else if(3===arguments.length&&(t=arguments[0],e=arguments[1],n=arguments[2],!e.equals(t)))throw new tt(\"Expected \"+t+\" but encountered \"+e+(null!==n?\": \"+n:\"\"))};var nt=function(){this._result=null,this._inputLines=Array(2).fill().map(function(){return Array(2)}),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new C,this._intPt[1]=new C,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0},it={DONT_INTERSECT:{configurable:!0},DO_INTERSECT:{configurable:!0},COLLINEAR:{configurable:!0},NO_INTERSECTION:{configurable:!0},POINT_INTERSECTION:{configurable:!0},COLLINEAR_INTERSECTION:{configurable:!0}};nt.prototype.getIndexAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]},nt.prototype.getTopologySummary=function(){var t=new D;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()},nt.prototype.computeIntersection=function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)},nt.prototype.getIntersectionNum=function(){return this._result},nt.prototype.computeIntLineIndex=function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map(function(){return Array(2)}),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}},nt.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},nt.prototype.setPrecisionModel=function(t){this._precisionModel=t},nt.prototype.isInteriorIntersection=function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}},nt.prototype.getIntersection=function(t){return this._intPt[t]},nt.prototype.isEndPoint=function(){return this.hasIntersection()&&!this._isProper},nt.prototype.hasIntersection=function(){return this._result!==nt.NO_INTERSECTION},nt.prototype.getEdgeDistance=function(t,e){return nt.computeEdgeDistance(this._intPt[e],this._inputLines[t][0],this._inputLines[t][1])},nt.prototype.isCollinear=function(){return this._result===nt.COLLINEAR_INTERSECTION},nt.prototype.toString=function(){return Z.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Z.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()},nt.prototype.getEndpoint=function(t,e){return this._inputLines[t][e]},nt.prototype.isIntersection=function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1},nt.prototype.getIntersectionAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]},nt.prototype.interfaces_=function(){return[]},nt.prototype.getClass=function(){return nt},nt.computeEdgeDistance=function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),o=-1;if(t.equals(e))o=0;else if(t.equals(n))o=i>r?i:r;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=i>r?s:a)||t.equals(e)||(o=Math.max(s,a))}return et.isTrue(!(0===o&&!t.equals(e)),\"Bad distance calculation\"),o},nt.nonRobustComputeEdgeDistance=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,o=Math.sqrt(i*i+r*r);return et.isTrue(!(0===o&&!t.equals(e)),\"Invalid distance calculation\"),o},it.DONT_INTERSECT.get=function(){return 0},it.DO_INTERSECT.get=function(){return 1},it.COLLINEAR.get=function(){return 2},it.NO_INTERSECTION.get=function(){return 0},it.POINT_INTERSECTION.get=function(){return 1},it.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(nt,it);var rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isInSegmentEnvelopes=function(t){var e=new j(this._inputLines[0][0],this._inputLines[0][1]),n=new j(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)},e.prototype.computeIntersection=function(){if(3!==arguments.length)return t.prototype.computeIntersection.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2];if(this._isProper=!1,j.intersects(n,i,e)&&0===at.orientationIndex(n,i,e)&&0===at.orientationIndex(i,n,e))return this._isProper=!0,(e.equals(n)||e.equals(i))&&(this._isProper=!1),this._result=t.POINT_INTERSECTION,null;this._result=t.NO_INTERSECTION},e.prototype.normalizeToMinimum=function(t,e,n,i,r){r.x=this.smallestInAbsValue(t.x,e.x,n.x,i.x),r.y=this.smallestInAbsValue(t.y,e.y,n.y,i.y),t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.safeHCoordinateIntersection=function(t,n,i,r){var o=null;try{o=k.intersection(t,n,i,r)}catch(s){if(!(s instanceof X))throw s;o=e.nearestEndpoint(t,n,i,r)}return o},e.prototype.intersection=function(t,n,i,r){var o=this.intersectionWithNormalization(t,n,i,r);return this.isInSegmentEnvelopes(o)||(o=new C(e.nearestEndpoint(t,n,i,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(o),o},e.prototype.smallestInAbsValue=function(t,e,n,i){var r=t,o=Math.abs(r);return Math.abs(e)<o&&(r=e,o=Math.abs(e)),Math.abs(n)<o&&(r=n,o=Math.abs(n)),Math.abs(i)<o&&(r=i),r},e.prototype.checkDD=function(t,e,n,i,r){var o=q.intersection(t,e,n,i),s=this.isInSegmentEnvelopes(o);Y.out.println(\"DD in env = \"+s+\"  --------------------- \"+o),r.distance(o)>1e-4&&Y.out.println(\"Distance = \"+r.distance(o))},e.prototype.intersectionWithNormalization=function(t,e,n,i){var r=new C(t),o=new C(e),s=new C(n),a=new C(i),u=new C;this.normalizeToEnvCentre(r,o,s,a,u);var l=this.safeHCoordinateIntersection(r,o,s,a);return l.x+=u.x,l.y+=u.y,l},e.prototype.computeCollinearIntersection=function(e,n,i,r){var o=j.intersects(e,n,i),s=j.intersects(e,n,r),a=j.intersects(i,r,e),u=j.intersects(i,r,n);return o&&s?(this._intPt[0]=i,this._intPt[1]=r,t.COLLINEAR_INTERSECTION):a&&u?(this._intPt[0]=e,this._intPt[1]=n,t.COLLINEAR_INTERSECTION):o&&a?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||s||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):o&&u?(this._intPt[0]=i,this._intPt[1]=n,!i.equals(n)||s||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&u?(this._intPt[0]=r,this._intPt[1]=n,!r.equals(n)||o||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):t.NO_INTERSECTION},e.prototype.normalizeToEnvCentre=function(t,e,n,i,r){var o=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.x<i.x?n.x:i.x,c=n.y<i.y?n.y:i.y,p=n.x>i.x?n.x:i.x,h=n.y>i.y?n.y:i.y,f=((o>l?o:l)+(a<p?a:p))/2,g=((s>c?s:c)+(u<h?u:h))/2;r.x=f,r.y=g,t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.computeIntersect=function(e,n,i,r){if(this._isProper=!1,!j.intersects(e,n,i,r))return t.NO_INTERSECTION;var o=at.orientationIndex(e,n,i),s=at.orientationIndex(e,n,r);if(o>0&&s>0||o<0&&s<0)return t.NO_INTERSECTION;var a=at.orientationIndex(i,r,e),u=at.orientationIndex(i,r,n);if(a>0&&u>0||a<0&&u<0)return t.NO_INTERSECTION;return 0===o&&0===s&&0===a&&0===u?this.computeCollinearIntersection(e,n,i,r):(0===o||0===s||0===a||0===u?(this._isProper=!1,e.equals2D(i)||e.equals2D(r)?this._intPt[0]=e:n.equals2D(i)||n.equals2D(r)?this._intPt[0]=n:0===o?this._intPt[0]=new C(i):0===s?this._intPt[0]=new C(r):0===a?this._intPt[0]=new C(e):0===u&&(this._intPt[0]=new C(n))):(this._isProper=!0,this._intPt[0]=this.intersection(e,n,i,r)),t.POINT_INTERSECTION)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.nearestEndpoint=function(t,e,n,i){var r=t,o=at.distancePointLine(t,n,i),s=at.distancePointLine(e,n,i);return s<o&&(o=s,r=e),(s=at.distancePointLine(n,t,e))<o&&(o=s,r=n),(s=at.distancePointLine(i,t,e))<o&&(o=s,r=i),r},e}(nt),ot=function(){};ot.prototype.interfaces_=function(){return[]},ot.prototype.getClass=function(){return ot},ot.orientationIndex=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=n.x-e.x,s=n.y-e.y;return ot.signOfDet2x2(i,r,o,s)},ot.signOfDet2x2=function(t,e,n,i){var r=null,o=null,s=null;if(r=1,0===t||0===i)return 0===e||0===n?0:e>0?n>0?-r:r:n>0?r:-r;if(0===e||0===n)return i>0?t>0?r:-r:t>0?-r:r;if(e>0?i>0?e<=i||(r=-r,o=t,t=n,n=o,o=e,e=i,i=o):e<=-i?(r=-r,n=-n,i=-i):(o=t,t=-n,n=o,o=e,e=-i,i=o):i>0?-e<=i?(r=-r,t=-t,e=-e):(o=-t,t=n,n=o,o=-e,e=i,i=o):e>=i?(t=-t,e=-e,n=-n,i=-i):(r=-r,o=-t,t=-n,n=o,o=-e,e=-i,i=o),t>0){if(!(n>0))return r;if(!(t<=n))return r}else{if(n>0)return-r;if(!(t>=n))return-r;r=-r,t=-t,n=-n}for(;;){if(s=Math.floor(n/t),n-=s*t,(i-=s*e)<0)return-r;if(i>e)return r;if(t>n+n){if(e<i+i)return r}else{if(e>i+i)return-r;n=t-n,i=e-i,r=-r}if(0===i)return 0===n?0:-r;if(0===n)return r;if(s=Math.floor(t/n),t-=s*n,(e-=s*i)<0)return r;if(e>i)return-r;if(n>t+t){if(i<e+e)return-r}else{if(i>e+e)return r;t=n-t,e=i-e,r=-r}if(0===e)return 0===t?0:r;if(0===t)return-r}};var st=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t};st.prototype.countSegment=function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=t.x-this._p.x,o=t.y-this._p.y,s=e.x-this._p.x,a=e.y-this._p.y,u=ot.signOfDet2x2(r,o,s,a);if(0===u)return this._isPointOnSegment=!0,null;a<o&&(u=-u),u>0&&this._crossingCount++}},st.prototype.isPointInPolygon=function(){return this.getLocation()!==w.EXTERIOR},st.prototype.getLocation=function(){return this._isPointOnSegment?w.BOUNDARY:this._crossingCount%2==1?w.INTERIOR:w.EXTERIOR},st.prototype.isOnSegment=function(){return this._isPointOnSegment},st.prototype.interfaces_=function(){return[]},st.prototype.getClass=function(){return st},st.locatePointInRing=function(){if(arguments[0]instanceof C&&T(arguments[1],V)){for(var t=arguments[0],e=arguments[1],n=new st(t),i=new C,r=new C,o=1;o<e.size();o++)if(e.getCoordinate(o,i),e.getCoordinate(o-1,r),n.countSegment(i,r),n.isOnSegment())return n.getLocation();return n.getLocation()}if(arguments[0]instanceof C&&arguments[1]instanceof Array){for(var s=arguments[0],a=arguments[1],u=new st(s),l=1;l<a.length;l++){var c=a[l],p=a[l-1];if(u.countSegment(c,p),u.isOnSegment())return u.getLocation()}return u.getLocation()}};var at=function(){},ut={CLOCKWISE:{configurable:!0},RIGHT:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},LEFT:{configurable:!0},COLLINEAR:{configurable:!0},STRAIGHT:{configurable:!0}};at.prototype.interfaces_=function(){return[]},at.prototype.getClass=function(){return at},at.orientationIndex=function(t,e,n){return q.orientationIndex(t,e,n)},at.signedArea=function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,o=t[i+1].y;e+=r*(t[i-1].y-o)}return e/2}if(T(arguments[0],V)){var s=arguments[0],a=s.size();if(a<3)return 0;var u=new C,l=new C,c=new C;s.getCoordinate(0,l),s.getCoordinate(1,c);var p=l.x;c.x-=p;for(var h=0,f=1;f<a-1;f++)u.y=l.y,l.x=c.x,l.y=c.y,s.getCoordinate(f+1,c),c.x-=p,h+=l.x*(u.y-c.y);return h/2}},at.distanceLineLine=function(t,e,n,i){if(t.equals(e))return at.distancePointLine(t,n,i);if(n.equals(i))return at.distancePointLine(i,t,e);var r=!1;if(j.intersects(t,e,n,i)){var o=(e.x-t.x)*(i.y-n.y)-(e.y-t.y)*(i.x-n.x);if(0===o)r=!0;else{var s=(t.y-n.y)*(i.x-n.x)-(t.x-n.x)*(i.y-n.y),a=((t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y))/o,u=s/o;(u<0||u>1||a<0||a>1)&&(r=!0)}}else r=!0;return r?R.min(at.distancePointLine(t,n,i),at.distancePointLine(e,n,i),at.distancePointLine(n,t,e),at.distancePointLine(i,t,e)):0},at.isPointInRing=function(t,e){return at.locatePointInRing(t,e)!==w.EXTERIOR},at.computeLength=function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new C;t.getCoordinate(0,i);for(var r=i.x,o=i.y,s=1;s<e;s++){t.getCoordinate(s,i);var a=i.x,u=i.y,l=a-r,c=u-o;n+=Math.sqrt(l*l+c*c),r=a,o=u}return n},at.isCCW=function(t){var e=t.length-1;if(e<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var n=t[0],i=0,r=1;r<=e;r++){var o=t[r];o.y>n.y&&(n=o,i=r)}var s=i;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==i);var a=i;do{a=(a+1)%e}while(t[a].equals2D(n)&&a!==i);var u=t[s],l=t[a];if(u.equals2D(n)||l.equals2D(n)||u.equals2D(l))return!1;var c=at.computeOrientation(u,n,l),p=!1;return p=0===c?u.x>l.x:c>0,p},at.locatePointInRing=function(t,e){return st.locatePointInRing(t,e)},at.distancePointLinePerpendicular=function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)},at.computeOrientation=function(t,e,n){return at.orientationIndex(t,e,n)},at.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new m(\"Line array must contain at least one vertex\");for(var n=t.distance(e[0]),i=0;i<e.length-1;i++){var r=at.distancePointLine(t,e[i],e[i+1]);r<n&&(n=r)}return n}if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];if(s.x===a.x&&s.y===a.y)return o.distance(s);var u=(a.x-s.x)*(a.x-s.x)+(a.y-s.y)*(a.y-s.y),l=((o.x-s.x)*(a.x-s.x)+(o.y-s.y)*(a.y-s.y))/u;if(l<=0)return o.distance(s);if(l>=1)return o.distance(a);var c=((s.y-o.y)*(a.x-s.x)-(s.x-o.x)*(a.y-s.y))/u;return Math.abs(c)*Math.sqrt(u)}},at.isOnLine=function(t,e){for(var n=new rt,i=1;i<e.length;i++){var r=e[i-1],o=e[i];if(n.computeIntersection(t,r,o),n.hasIntersection())return!0}return!1},ut.CLOCKWISE.get=function(){return-1},ut.RIGHT.get=function(){return at.CLOCKWISE},ut.COUNTERCLOCKWISE.get=function(){return 1},ut.LEFT.get=function(){return at.COUNTERCLOCKWISE},ut.COLLINEAR.get=function(){return 0},ut.STRAIGHT.get=function(){return at.COLLINEAR},Object.defineProperties(at,ut);var lt=function(){};lt.prototype.filter=function(t){},lt.prototype.interfaces_=function(){return[]},lt.prototype.getClass=function(){return lt};var ct=function(){var t=arguments[0];this._envelope=null,this._factory=null,this._SRID=null,this._userData=null,this._factory=t,this._SRID=t.getSRID()},pt={serialVersionUID:{configurable:!0},SORTINDEX_POINT:{configurable:!0},SORTINDEX_MULTIPOINT:{configurable:!0},SORTINDEX_LINESTRING:{configurable:!0},SORTINDEX_LINEARRING:{configurable:!0},SORTINDEX_MULTILINESTRING:{configurable:!0},SORTINDEX_POLYGON:{configurable:!0},SORTINDEX_MULTIPOLYGON:{configurable:!0},SORTINDEX_GEOMETRYCOLLECTION:{configurable:!0},geometryChangedFilter:{configurable:!0}};ct.prototype.isGeometryCollection=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION},ct.prototype.getFactory=function(){return this._factory},ct.prototype.getGeometryN=function(t){return this},ct.prototype.getArea=function(){return 0},ct.prototype.isRectangle=function(){return!1},ct.prototype.equals=function(){if(arguments[0]instanceof ct){var t=arguments[0];return null!==t&&this.equalsTopo(t)}if(arguments[0]instanceof Object){var e=arguments[0];if(!(e instanceof ct))return!1;var n=e;return this.equalsExact(n)}},ct.prototype.equalsExact=function(t){return this===t||this.equalsExact(t,0)},ct.prototype.geometryChanged=function(){this.apply(ct.geometryChangedFilter)},ct.prototype.geometryChangedAction=function(){this._envelope=null},ct.prototype.equalsNorm=function(t){return null!==t&&this.norm().equalsExact(t.norm())},ct.prototype.getLength=function(){return 0},ct.prototype.getNumGeometries=function(){return 1},ct.prototype.compareTo=function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getSortIndex()!==e.getSortIndex()?this.getSortIndex()-e.getSortIndex():this.isEmpty()&&e.isEmpty()?0:this.isEmpty()?-1:e.isEmpty()?1:this.compareToSameClass(t)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.getSortIndex()!==n.getSortIndex()?this.getSortIndex()-n.getSortIndex():this.isEmpty()&&n.isEmpty()?0:this.isEmpty()?-1:n.isEmpty()?1:this.compareToSameClass(n,i)}},ct.prototype.getUserData=function(){return this._userData},ct.prototype.getSRID=function(){return this._SRID},ct.prototype.getEnvelope=function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())},ct.prototype.checkNotGeometryCollection=function(t){if(t.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")},ct.prototype.equal=function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n},ct.prototype.norm=function(){var t=this.copy();return t.normalize(),t},ct.prototype.getPrecisionModel=function(){return this._factory.getPrecisionModel()},ct.prototype.getEnvelopeInternal=function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new j(this._envelope)},ct.prototype.setSRID=function(t){this._SRID=t},ct.prototype.setUserData=function(t){this._userData=t},ct.prototype.compare=function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),o=i.next(),s=r.compareTo(o);if(0!==s)return s}return n.hasNext()?1:i.hasNext()?-1:0},ct.prototype.hashCode=function(){return this.getEnvelopeInternal().hashCode()},ct.prototype.isGeometryCollectionOrDerived=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION||this.getSortIndex()===ct.SORTINDEX_MULTIPOINT||this.getSortIndex()===ct.SORTINDEX_MULTILINESTRING||this.getSortIndex()===ct.SORTINDEX_MULTIPOLYGON},ct.prototype.interfaces_=function(){return[x,E,e]},ct.prototype.getClass=function(){return ct},ct.hasNonEmptyElements=function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1},ct.hasNullElements=function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1},pt.serialVersionUID.get=function(){return 0x799ea46522854c00},pt.SORTINDEX_POINT.get=function(){return 0},pt.SORTINDEX_MULTIPOINT.get=function(){return 1},pt.SORTINDEX_LINESTRING.get=function(){return 2},pt.SORTINDEX_LINEARRING.get=function(){return 3},pt.SORTINDEX_MULTILINESTRING.get=function(){return 4},pt.SORTINDEX_POLYGON.get=function(){return 5},pt.SORTINDEX_MULTIPOLYGON.get=function(){return 6},pt.SORTINDEX_GEOMETRYCOLLECTION.get=function(){return 7},pt.geometryChangedFilter.get=function(){return ht},Object.defineProperties(ct,pt);var ht=function(){};ht.interfaces_=function(){return[lt]},ht.filter=function(t){t.geometryChangedAction()};var ft=function(){};ft.prototype.filter=function(t){},ft.prototype.interfaces_=function(){return[]},ft.prototype.getClass=function(){return ft};var gt=function(){},dt={Mod2BoundaryNodeRule:{configurable:!0},EndPointBoundaryNodeRule:{configurable:!0},MultiValentEndPointBoundaryNodeRule:{configurable:!0},MonoValentEndPointBoundaryNodeRule:{configurable:!0},MOD2_BOUNDARY_RULE:{configurable:!0},ENDPOINT_BOUNDARY_RULE:{configurable:!0},MULTIVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},MONOVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},OGC_SFS_BOUNDARY_RULE:{configurable:!0}};gt.prototype.isInBoundary=function(t){},gt.prototype.interfaces_=function(){return[]},gt.prototype.getClass=function(){return gt},dt.Mod2BoundaryNodeRule.get=function(){return yt},dt.EndPointBoundaryNodeRule.get=function(){return _t},dt.MultiValentEndPointBoundaryNodeRule.get=function(){return mt},dt.MonoValentEndPointBoundaryNodeRule.get=function(){return vt},dt.MOD2_BOUNDARY_RULE.get=function(){return new yt},dt.ENDPOINT_BOUNDARY_RULE.get=function(){return new _t},dt.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new mt},dt.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new vt},dt.OGC_SFS_BOUNDARY_RULE.get=function(){return gt.MOD2_BOUNDARY_RULE},Object.defineProperties(gt,dt);var yt=function(){};yt.prototype.isInBoundary=function(t){return t%2==1},yt.prototype.interfaces_=function(){return[gt]},yt.prototype.getClass=function(){return yt};var _t=function(){};_t.prototype.isInBoundary=function(t){return t>0},_t.prototype.interfaces_=function(){return[gt]},_t.prototype.getClass=function(){return _t};var mt=function(){};mt.prototype.isInBoundary=function(t){return t>1},mt.prototype.interfaces_=function(){return[gt]},mt.prototype.getClass=function(){return mt};var vt=function(){};vt.prototype.isInBoundary=function(t){return 1===t},vt.prototype.interfaces_=function(){return[gt]},vt.prototype.getClass=function(){return vt};var It=function(){};It.prototype.add=function(){},It.prototype.addAll=function(){},It.prototype.isEmpty=function(){},It.prototype.iterator=function(){},It.prototype.size=function(){},It.prototype.toArray=function(){},It.prototype.remove=function(){},(n.prototype=new Error).name=\"IndexOutOfBoundsException\";var Et=function(){};Et.prototype.hasNext=function(){},Et.prototype.next=function(){},Et.prototype.remove=function(){};var xt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(){},e.prototype.set=function(){},e.prototype.isEmpty=function(){},e}(It);(i.prototype=new Error).name=\"NoSuchElementException\";var Nt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.ensureCapacity=function(){},e.prototype.interfaces_=function(){return[t,It]},e.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],arguments[1]),!0},e.prototype.clear=function(){this.array_=[]},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},e.prototype.iterator=function(){return new Ct(this)},e.prototype.get=function(t){if(t<0||t>=this.size())throw new n;return this.array_[t]},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.size=function(){return this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.remove=function(t){for(var e=!1,n=0,i=this.array_.length;n<i;n++)if(this.array_[n]===t){this.array_.splice(n,1),e=!0;break}return e},e}(xt),Ct=function(t){function e(e){t.call(this),this.arrayList_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.arrayList_.size())throw new i;return this.arrayList_.get(this.position_++)},e.prototype.hasNext=function(){return this.position_<this.arrayList_.size()},e.prototype.set=function(t){return this.arrayList_.set(this.position_-1,t)},e.prototype.remove=function(){this.arrayList_.remove(this.arrayList_.get(this.position_))},e}(Et),St=function(t){function e(){if(t.call(this),0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.ensureCapacity(e.length),this.add(e,!0)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.ensureCapacity(n.length),this.add(n,i)}}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={coordArrayType:{configurable:!0}};return n.coordArrayType.get=function(){return new Array(0).fill(null)},e.prototype.getCoordinate=function(t){return this.get(t)},e.prototype.addAll=function(){if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=!1,r=e.iterator();r.hasNext();)this.add(r.next(),n),i=!0;return i}return t.prototype.addAll.apply(this,arguments)},e.prototype.clone=function(){for(var e=t.prototype.clone.call(this),n=0;n<this.size();n++)e.add(n,this.get(n).copy());return e},e.prototype.toCoordinateArray=function(){return this.toArray(e.coordArrayType)},e.prototype.add=function(){if(1===arguments.length){var e=arguments[0];t.prototype.add.call(this,e)}else if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];return this.add(n,i,!0),!0}if(arguments[0]instanceof C&&\"boolean\"==typeof arguments[1]){var r=arguments[0];if(!arguments[1]&&this.size()>=1){if(this.get(this.size()-1).equals2D(r))return null}t.prototype.add.call(this,r)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1];return this.add(o,s),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var a=arguments[0],u=arguments[1];if(arguments[2])for(var l=0;l<a.length;l++)this.add(a[l],u);else for(var c=a.length-1;c>=0;c--)this.add(a[c],u);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1];if(!arguments[2]){var f=this.size();if(f>0){if(p>0){if(this.get(p-1).equals2D(h))return null}if(p<f){if(this.get(p).equals2D(h))return null}}}t.prototype.add.call(this,p,h)}}else if(4===arguments.length){var g=arguments[0],d=arguments[1],y=arguments[2],_=arguments[3],m=1;y>_&&(m=-1);for(var v=y;v!==_;v+=m)this.add(g[v],d);return!0}},e.prototype.closeRing=function(){this.size()>0&&this.add(new C(this.get(0)),!1)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},Object.defineProperties(e,n),e}(Nt),Lt=function(){},bt={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};bt.ForwardComparator.get=function(){return wt},bt.BidirectionalComparator.get=function(){return Ot},bt.coordArrayType.get=function(){return new Array(0).fill(null)},Lt.prototype.interfaces_=function(){return[]},Lt.prototype.getClass=function(){return Lt},Lt.isRing=function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])},Lt.ptNotInList=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(Lt.indexOf(i,e)<0)return i}return null},Lt.scroll=function(t,e){var n=Lt.indexOf(e,t);if(n<0)return null;var i=new Array(t.length).fill(null);Y.arraycopy(t,n,i,0,t.length-n),Y.arraycopy(t,0,i,t.length-n,n),Y.arraycopy(i,0,t,0,t.length)},Lt.equals=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var s=0;s<i.length;s++)if(0!==o.compare(i[s],r[s]))return!1;return!0}},Lt.intersection=function(t,e){for(var n=new St,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()},Lt.hasRepeatedPoints=function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1},Lt.removeRepeatedPoints=function(t){if(!Lt.hasRepeatedPoints(t))return t;return new St(t,!1).toCoordinateArray()},Lt.reverse=function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}},Lt.removeNull=function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,o=0;o<t.length;o++)null!==t[o]&&(i[r++]=t[o]);return i},Lt.copyDeep=function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=new C(t[n]);return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=arguments[4],u=0;u<a;u++)o[s+u]=new C(i[r+u])},Lt.isEqualReversed=function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0},Lt.envelope=function(t){for(var e=new j,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e},Lt.toCoordinateArray=function(t){return t.toArray(Lt.coordArrayType)},Lt.atLeastNCoordinatesOrNothing=function(t,e){return e.length>=t?e:[]},Lt.indexOf=function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1},Lt.increasingDirection=function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1},Lt.compare=function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0},Lt.minCoordinate=function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e},Lt.extract=function(t,e,n){e=R.clamp(e,0,t.length);var i=(n=R.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var o=0,s=e;s<=n;s++)r[o++]=t[s];return r},Object.defineProperties(Lt,bt);var wt=function(){};wt.prototype.compare=function(t,e){return Lt.compare(t,e)},wt.prototype.interfaces_=function(){return[N]},wt.prototype.getClass=function(){return wt};var Ot=function(){};Ot.prototype.compare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=Lt.compare(n,i);return Lt.isEqualReversed(n,i)?0:r},Ot.prototype.OLDcompare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=Lt.increasingDirection(n),o=Lt.increasingDirection(i),s=r>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u<n.length;u++){var l=n[s].compareTo(i[a]);if(0!==l)return l;s+=r,a+=o}return 0},Ot.prototype.interfaces_=function(){return[N]},Ot.prototype.getClass=function(){return Ot};var Tt=function(){};Tt.prototype.get=function(){},Tt.prototype.put=function(){},Tt.prototype.size=function(){},Tt.prototype.values=function(){},Tt.prototype.entrySet=function(){};var Rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Tt);(r.prototype=new Error).name=\"OperationNotSupported\",(o.prototype=new It).contains=function(){};var Pt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(this.array_[e]===t)return!0}return!1},e.prototype.add=function(t){return!this.contains(t)&&(this.array_.push(t),!0)},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.remove=function(t){throw new Error},e.prototype.size=function(){return this.array_.length},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.iterator=function(){return new Dt(this)},e}(o),Dt=function(t){function e(e){t.call(this),this.hashSet_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.hashSet_.size())throw new i;return this.hashSet_.array_[this.position_++]},e.prototype.hasNext=function(){return this.position_<this.hashSet_.size()},e.prototype.remove=function(){throw new r},e}(Et),Mt=0;(p.prototype=new Rt).get=function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null},p.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var o=r.value;return r.value=e,o}r=r.right}}while(null!==r);var s={key:t,left:null,right:null,value:e,parent:n,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null},p.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)if(a(t)===l(a(a(t)))){var e=c(a(a(t)));1===s(e)?(u(a(t),Mt),u(e,Mt),u(a(a(t)),1),t=a(a(t))):(t===c(a(t))&&(t=a(t),this.rotateLeft(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateRight(a(a(t))))}else{var n=l(a(a(t)));1===s(n)?(u(a(t),Mt),u(n,Mt),u(a(a(t)),1),t=a(a(t))):(t===l(a(t))&&(t=a(t),this.rotateRight(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateLeft(a(a(t))))}this.root_.color=Mt},p.prototype.values=function(){var t=new Nt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=p.successor(e));)t.add(e.value);return t},p.prototype.entrySet=function(){var t=new Pt,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=p.successor(e));)t.add(e);return t},p.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},p.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},p.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},p.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var n=t.parent,i=t;null!==n&&i===n.right;)i=n,n=n.parent;return n},p.prototype.size=function(){return this.size_};var At=function(){};At.prototype.interfaces_=function(){return[]},At.prototype.getClass=function(){return At},h.prototype=new o,(f.prototype=new h).contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(0===this.array_[e].compareTo(t))return!0}return!1},f.prototype.add=function(t){if(this.contains(t))return!1;for(var e=0,n=this.array_.length;e<n;e++){if(1===this.array_[e].compareTo(t))return this.array_.splice(e,0,t),!0}return this.array_.push(t),!0},f.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},f.prototype.remove=function(t){throw new r},f.prototype.size=function(){return this.array_.length},f.prototype.isEmpty=function(){return 0===this.array_.length},f.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},f.prototype.iterator=function(){return new Ft(this)};var Ft=function(t){this.treeSet_=t,this.position_=0};Ft.prototype.next=function(){if(this.position_===this.treeSet_.size())throw new i;return this.treeSet_.array_[this.position_++]},Ft.prototype.hasNext=function(){return this.position_<this.treeSet_.size()},Ft.prototype.remove=function(){throw new r};var Gt=function(){};Gt.sort=function(){var t,e,n,i,r=arguments[0];if(1===arguments.length)i=function(t,e){return t.compareTo(e)},r.sort(i);else if(2===arguments.length)n=arguments[1],i=function(t,e){return n.compare(t,e)},r.sort(i);else if(3===arguments.length){(e=r.slice(arguments[1],arguments[2])).sort();var o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length));for(r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])}else if(4===arguments.length)for(e=r.slice(arguments[1],arguments[2]),n=arguments[3],i=function(t,e){return n.compare(t,e)},e.sort(i),o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length)),r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])},Gt.asList=function(t){for(var e=new Nt,n=0,i=t.length;n<i;n++)e.add(t[n]);return e};var qt=function(){},Bt={P:{configurable:!0},L:{configurable:!0},A:{configurable:!0},FALSE:{configurable:!0},TRUE:{configurable:!0},DONTCARE:{configurable:!0},SYM_FALSE:{configurable:!0},SYM_TRUE:{configurable:!0},SYM_DONTCARE:{configurable:!0},SYM_P:{configurable:!0},SYM_L:{configurable:!0},SYM_A:{configurable:!0}};Bt.P.get=function(){return 0},Bt.L.get=function(){return 1},Bt.A.get=function(){return 2},Bt.FALSE.get=function(){return-1},Bt.TRUE.get=function(){return-2},Bt.DONTCARE.get=function(){return-3},Bt.SYM_FALSE.get=function(){return\"F\"},Bt.SYM_TRUE.get=function(){return\"T\"},Bt.SYM_DONTCARE.get=function(){return\"*\"},Bt.SYM_P.get=function(){return\"0\"},Bt.SYM_L.get=function(){return\"1\"},Bt.SYM_A.get=function(){return\"2\"},qt.prototype.interfaces_=function(){return[]},qt.prototype.getClass=function(){return qt},qt.toDimensionSymbol=function(t){switch(t){case qt.FALSE:return qt.SYM_FALSE;case qt.TRUE:return qt.SYM_TRUE;case qt.DONTCARE:return qt.SYM_DONTCARE;case qt.P:return qt.SYM_P;case qt.L:return qt.SYM_L;case qt.A:return qt.SYM_A}throw new m(\"Unknown dimension value: \"+t)},qt.toDimensionValue=function(t){switch(A.toUpperCase(t)){case qt.SYM_FALSE:return qt.FALSE;case qt.SYM_TRUE:return qt.TRUE;case qt.SYM_DONTCARE:return qt.DONTCARE;case qt.SYM_P:return qt.P;case qt.SYM_L:return qt.L;case qt.SYM_A:return qt.A}throw new m(\"Unknown dimension symbol: \"+t)},Object.defineProperties(qt,Bt);var Vt=function(){};Vt.prototype.filter=function(t){},Vt.prototype.interfaces_=function(){return[]},Vt.prototype.getClass=function(){return Vt};var Ut=function(){};Ut.prototype.filter=function(t,e){},Ut.prototype.isDone=function(){},Ut.prototype.isGeometryChanged=function(){},Ut.prototype.interfaces_=function(){return[]},Ut.prototype.getClass=function(){return Ut};var zt=function(t){function e(e,n){if(t.call(this,n),this._geometries=e||[],t.hasNullElements(this._geometries))throw new m(\"geometries must not contain null elements\")}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){for(var t=new j,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t},e.prototype.getGeometryN=function(t){return this._geometries[t]},e.prototype.getSortIndex=function(){return t.SORTINDEX_GEOMETRYCOLLECTION},e.prototype.getCoordinates=function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t},e.prototype.getArea=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._geometries.length!==i._geometries.length)return!1;for(var r=0;r<this._geometries.length;r++)if(!this._geometries[r].equalsExact(i._geometries[r],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();Gt.sort(this._geometries)},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()},e.prototype.getBoundaryDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t},e.prototype.getDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t},e.prototype.getLength=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t},e.prototype.getNumGeometries=function(){return this._geometries.length},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createGeometryCollection(e)},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=new f(Gt.asList(this._geometries)),n=new f(Gt.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=i,s=this.getNumGeometries(),a=o.getNumGeometries(),u=0;u<s&&u<a;){var l=this.getGeometryN(u),c=o.getGeometryN(u),p=l.compareToSameClass(c,r);if(0!==p)return p;u++}return u<s?1:u<a?-1:0}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){var r=arguments[0];r.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(r)}else if(T(arguments[0],lt)){var s=arguments[0];s.filter(this);for(var a=0;a<this._geometries.length;a++)this._geometries[a].apply(s)}},e.prototype.getBoundary=function(){return this.checkNotGeometryCollection(this),et.shouldNeverReachHere(),null},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._geometries=new Array(this._geometries.length).fill(null);for(var n=0;n<this._geometries.length;n++)e._geometries[n]=this._geometries[n].clone();return e},e.prototype.getGeometryType=function(){return\"GeometryCollection\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.isEmpty=function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x4f07bcb1f857d800},Object.defineProperties(e,n),e}(ct),Xt=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTILINESTRING},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0},e.prototype.getDimension=function(){return 1},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[t-1-n]=this._geometries[n].reverse();return this.getFactory().createMultiLineString(e)},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.getGeometryType=function(){return\"MultiLineString\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x7155d2ab4afa8000},Object.defineProperties(e,n),e}(zt),Yt=function(){if(this._geom=null,this._geomFact=null,this._bnRule=null,this._endpointMap=null,1===arguments.length){var t=arguments[0],e=gt.MOD2_BOUNDARY_RULE;this._geom=t,this._geomFact=t.getFactory(),this._bnRule=e}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._geom=n,this._geomFact=n.getFactory(),this._bnRule=i}};Yt.prototype.boundaryMultiLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();var e=this.computeBoundaryCoordinates(t);return 1===e.length?this._geomFact.createPoint(e[0]):this._geomFact.createMultiPointFromCoords(e)},Yt.prototype.getBoundary=function(){return this._geom instanceof Kt?this.boundaryLineString(this._geom):this._geom instanceof Xt?this.boundaryMultiLineString(this._geom):this._geom.getBoundary()},Yt.prototype.boundaryLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();if(t.isClosed()){return this._bnRule.isInBoundary(2)?t.getStartPoint():this._geomFact.createMultiPoint()}return this._geomFact.createMultiPoint([t.getStartPoint(),t.getEndPoint()])},Yt.prototype.getEmptyMultiPoint=function(){return this._geomFact.createMultiPoint()},Yt.prototype.computeBoundaryCoordinates=function(t){var e=new Nt;this._endpointMap=new p;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);0!==i.getNumPoints()&&(this.addEndpoint(i.getCoordinateN(0)),this.addEndpoint(i.getCoordinateN(i.getNumPoints()-1)))}for(var r=this._endpointMap.entrySet().iterator();r.hasNext();){var o=r.next(),s=o.getValue().count;this._bnRule.isInBoundary(s)&&e.add(o.getKey())}return Lt.toCoordinateArray(e)},Yt.prototype.addEndpoint=function(t){var e=this._endpointMap.get(t);null===e&&(e=new kt,this._endpointMap.put(t,e)),e.count++},Yt.prototype.interfaces_=function(){return[]},Yt.prototype.getClass=function(){return Yt},Yt.getBoundary=function(){if(1===arguments.length){var t=arguments[0];return new Yt(t).getBoundary()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Yt(e,n).getBoundary()}};var kt=function(){this.count=null};kt.prototype.interfaces_=function(){return[]},kt.prototype.getClass=function(){return kt};var jt=function(){},Ht={NEWLINE:{configurable:!0},SIMPLE_ORDINATE_FORMAT:{configurable:!0}};jt.prototype.interfaces_=function(){return[]},jt.prototype.getClass=function(){return jt},jt.chars=function(t,e){for(var n=new Array(e).fill(null),i=0;i<e;i++)n[i]=t;return String(n)},jt.getStackTrace=function(){if(1===arguments.length){var t=arguments[0],e=new function(){},n=new function(){}(e);return t.printStackTrace(n),e.toString()}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=\"\",s=new function(){}(new function(){}(jt.getStackTrace(i))),a=0;a<r;a++)try{o+=s.readLine()+jt.NEWLINE}catch(t){if(!(t instanceof g))throw t;et.shouldNeverReachHere()}return o}},jt.split=function(t,e){for(var n=e.length,i=new Nt,r=\"\"+t,o=r.indexOf(e);o>=0;){var s=r.substring(0,o);i.add(s),o=(r=r.substring(o+n)).indexOf(e)}r.length>0&&i.add(r);for(var a=new Array(i.size()).fill(null),u=0;u<a.length;u++)a[u]=i.get(u);return a},jt.toString=function(){if(1===arguments.length){var t=arguments[0];return jt.SIMPLE_ORDINATE_FORMAT.format(t)}},jt.spaces=function(t){return jt.chars(\" \",t)},Ht.NEWLINE.get=function(){return Y.getProperty(\"line.separator\")},Ht.SIMPLE_ORDINATE_FORMAT.get=function(){return new function(){}(\"0.#\")},Object.defineProperties(jt,Ht);var Wt=function(){};Wt.prototype.interfaces_=function(){return[]},Wt.prototype.getClass=function(){return Wt},Wt.copyCoord=function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),o=0;o<r;o++)n.setOrdinate(i,o,t.getOrdinate(e,o))},Wt.isRing=function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,V.X)===t.getOrdinate(e-1,V.X)&&t.getOrdinate(0,V.Y)===t.getOrdinate(e-1,V.Y))},Wt.isEqual=function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var o=0;o<i;o++){var s=t.getOrdinate(r,o),a=e.getOrdinate(r,o);if(t.getOrdinate(r,o)!==e.getOrdinate(r,o)&&(!v.isNaN(s)||!v.isNaN(a)))return!1}return!0},Wt.extend=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();if(Wt.copy(e,0,i,0,r),r>0)for(var o=r;o<n;o++)Wt.copy(e,r-1,i,o,1);return i},Wt.reverse=function(t){for(var e=t.size()-1,n=Math.trunc(e/2),i=0;i<=n;i++)Wt.swap(t,i,e-i)},Wt.swap=function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}},Wt.copy=function(t,e,n,i,r){for(var o=0;o<r;o++)Wt.copyCoord(t,e+o,n,i+o)},Wt.toString=function(){if(1===arguments.length){var t=arguments[0],e=t.size();if(0===e)return\"()\";var n=t.getDimension(),i=new D;i.append(\"(\");for(var r=0;r<e;r++){r>0&&i.append(\" \");for(var o=0;o<n;o++)o>0&&i.append(\",\"),i.append(jt.toString(t.getOrdinate(r,o)))}return i.append(\")\"),i.toString()}},Wt.ensureValidRing=function(t,e){var n=e.size();if(0===n)return e;if(n<=3)return Wt.createClosedRing(t,e,4);return e.getOrdinate(0,V.X)===e.getOrdinate(n-1,V.X)&&e.getOrdinate(0,V.Y)===e.getOrdinate(n-1,V.Y)?e:Wt.createClosedRing(t,e,n+1)},Wt.createClosedRing=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();Wt.copy(e,0,i,0,r);for(var o=r;o<n;o++)Wt.copy(e,0,i,o,1);return i};var Kt=function(t){function e(e,n){t.call(this,n),this._points=null,this.init(e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this.isEmpty()?new j:this._points.expandEnvelope(new j)},e.prototype.isRing=function(){return this.isClosed()&&this.isSimple()},e.prototype.getSortIndex=function(){return t.SORTINDEX_LINESTRING},e.prototype.getCoordinates=function(){return this._points.toCoordinateArray()},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._points.size()!==i._points.size())return!1;for(var r=0;r<this._points.size();r++)if(!this.equal(this._points.getCoordinate(r),i._points.getCoordinate(r),n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e)))return this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0&&Wt.reverse(this._points),null}},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},e.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},e.prototype.getDimension=function(){return 1},e.prototype.getLength=function(){return at.computeLength(this._points)},e.prototype.getNumPoints=function(){return this._points.size()},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLineString(t)},e.prototype.compareToSameClass=function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e<this._points.size()&&n<t._points.size();){var i=this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));if(0!==i)return i;e++,n++}return e<this._points.size()?1:n<t._points.size()?-1:0}if(2===arguments.length){var r=arguments[0];return arguments[1].compare(this._points,r._points)}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.isEquivalentClass=function(t){return t instanceof e},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._points=this._points.clone(),e},e.prototype.getCoordinateN=function(t){return this._points.getCoordinate(t)},e.prototype.getGeometryType=function(){return\"LineString\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._points},e.prototype.isEmpty=function(){return 0===this._points.size()},e.prototype.init=function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t},e.prototype.isCoordinate=function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1},e.prototype.getStartPoint=function(){return this.isEmpty()?null:this.getPointN(0)},e.prototype.getPointN=function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x2b2b51ba435c8e00},Object.defineProperties(e,n),e}(ct),Jt=function(){};Jt.prototype.interfaces_=function(){return[]},Jt.prototype.getClass=function(){return Jt};var Qt=function(t){function e(e,n){t.call(this,n),this._coordinates=e||null,this.init(this._coordinates)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){if(this.isEmpty())return new j;var t=new j;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t},e.prototype.getSortIndex=function(){return t.SORTINDEX_POINT},e.prototype.getCoordinates=function(){return this.isEmpty()?[]:[this.getCoordinate()]},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&(!(!this.isEmpty()||!e.isEmpty())||this.isEmpty()===e.isEmpty()&&this.equal(e.getCoordinate(),this.getCoordinate(),n))}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){},e.prototype.getCoordinate=function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getNumPoints=function(){return this.isEmpty()?0:1},e.prototype.reverse=function(){return this.copy()},e.prototype.getX=function(){if(null===this.getCoordinate())throw new Error(\"getX called on empty Point\");return this.getCoordinate().x},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0];return this.getCoordinate().compareTo(t.getCoordinate())}if(2===arguments.length){var e=arguments[0];return arguments[1].compare(this._coordinates,e._coordinates)}},e.prototype.apply=function(){if(T(arguments[0],ft)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(T(arguments[0],Ut)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._coordinates=this._coordinates.clone(),e},e.prototype.getGeometryType=function(){return\"Point\"},e.prototype.copy=function(){return new e(this._coordinates.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._coordinates},e.prototype.getY=function(){if(null===this.getCoordinate())throw new Error(\"getY called on empty Point\");return this.getCoordinate().y},e.prototype.isEmpty=function(){return 0===this._coordinates.size()},e.prototype.init=function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),et.isTrue(t.size()<=1),this._coordinates=t},e.prototype.isSimple=function(){return!0},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x44077bad161cbc00},Object.defineProperties(e,n),e}(ct),Zt=function(){};Zt.prototype.interfaces_=function(){return[]},Zt.prototype.getClass=function(){return Zt};var $t=function(t){function e(e,n,i){if(t.call(this,i),this._shell=null,this._holes=null,null===e&&(e=this.getFactory().createLinearRing()),null===n&&(n=[]),t.hasNullElements(n))throw new m(\"holes must not contain null elements\");if(e.isEmpty()&&t.hasNonEmptyElements(n))throw new m(\"shell is empty but holes are not\");this._shell=e,this._holes=n}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this._shell.getEnvelopeInternal()},e.prototype.getSortIndex=function(){return t.SORTINDEX_POLYGON},e.prototype.getCoordinates=function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var o=this._holes[r].getCoordinates(),s=0;s<o.length;s++)t[++e]=o[s];return t},e.prototype.getArea=function(){var t=0;t+=Math.abs(at.signedArea(this._shell.getCoordinateSequence()));for(var e=0;e<this._holes.length;e++)t-=Math.abs(at.signedArea(this._holes[e].getCoordinateSequence()));return t},e.prototype.isRectangle=function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var o=t.getX(0),s=t.getY(0),a=1;a<=4;a++){var u=t.getX(a),l=t.getY(a);if(u!==o===(l!==s))return!1;o=u,s=l}return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e,r=this._shell,o=i._shell;if(!r.equalsExact(o,n))return!1;if(this._holes.length!==i._holes.length)return!1;for(var s=0;s<this._holes.length;s++)if(!this._holes[s].equalsExact(i._holes[s],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){if(0===arguments.length){this.normalize(this._shell,!0);for(var t=0;t<this._holes.length;t++)this.normalize(this._holes[t],!1);Gt.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=new Array(e.getCoordinates().length-1).fill(null);Y.arraycopy(e.getCoordinates(),0,i,0,i.length);var r=Lt.minCoordinate(e.getCoordinates());Lt.scroll(i,r),Y.arraycopy(i,0,e.getCoordinates(),0,i.length),e.getCoordinates()[i.length]=i[0],at.isCCW(e.getCoordinates())===n&&Lt.reverse(e.getCoordinates())}},e.prototype.getCoordinate=function(){return this._shell.getCoordinate()},e.prototype.getNumInteriorRing=function(){return this._holes.length},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.getLength=function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t},e.prototype.reverse=function(){var t=this.copy();t._shell=this._shell.copy().reverse(),t._holes=new Array(this._holes.length).fill(null);for(var e=0;e<this._holes.length;e++)t._holes[e]=this._holes[e].copy().reverse();return t},e.prototype.convexHull=function(){return this.getExteriorRing().convexHull()},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[0],r=arguments[1],o=i,s=this._shell,a=o._shell,u=s.compareToSameClass(a,r);if(0!==u)return u;for(var l=this.getNumInteriorRing(),c=o.getNumInteriorRing(),p=0;p<l&&p<c;){var h=this.getInteriorRingN(p),f=o.getInteriorRingN(p),g=h.compareToSameClass(f,r);if(0!==g)return g;p++}return p<l?1:p<c?-1:0}},e.prototype.apply=function(t){if(T(t,ft)){this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(T(t,Ut)){if(this._shell.apply(t),!t.isDone())for(var n=0;n<this._holes.length&&(this._holes[n].apply(t),!t.isDone());n++);t.isGeometryChanged()&&this.geometryChanged()}else if(T(t,Vt))t.filter(this);else if(T(t,lt)){t.filter(this),this._shell.apply(t);for(var i=0;i<this._holes.length;i++)this._holes[i].apply(t)}},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._shell=this._shell.clone(),e._holes=new Array(this._holes.length).fill(null);for(var n=0;n<this._holes.length;n++)e._holes[n]=this._holes[n].clone();return e},e.prototype.getGeometryType=function(){return\"Polygon\"},e.prototype.copy=function(){for(var t=this._shell.copy(),n=new Array(this._holes.length).fill(null),i=0;i<n.length;i++)n[i]=this._holes[i].copy();return new e(t,n,this._factory)},e.prototype.getExteriorRing=function(){return this._shell},e.prototype.isEmpty=function(){return this._shell.isEmpty()},e.prototype.getInteriorRingN=function(t){return this._holes[t]},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x307ffefd8dc97200},Object.defineProperties(e,n),e}(ct),te=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOINT},e.prototype.isValid=function(){return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getCoordinate=function(){if(1===arguments.length){var e=arguments[0];return this._geometries[e].getCoordinate()}return t.prototype.getCoordinate.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.getGeometryType=function(){return\"MultiPoint\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x6fb1ed4162e0fc00},Object.defineProperties(e,n),e}(zt),ee=function(t){function e(e,n){e instanceof C&&n instanceof _e&&(e=n.getCoordinateSequenceFactory().create(e)),t.call(this,e,n),this.validateConstruction()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={MINIMUM_VALID_SIZE:{configurable:!0},serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_LINEARRING},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.isClosed=function(){return!!this.isEmpty()||t.prototype.isClosed.call(this)},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLinearRing(t)},e.prototype.validateConstruction=function(){if(!this.isEmpty()&&!t.prototype.isClosed.call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<e.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")},e.prototype.getGeometryType=function(){return\"LinearRing\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.MINIMUM_VALID_SIZE.get=function(){return 4},n.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(e,n),e}(Kt),ne=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOLYGON},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createMultiPolygon(e)},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new Nt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))},e.prototype.getGeometryType=function(){return\"MultiPolygon\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x7a5aa1369171980},Object.defineProperties(e,n),e}(zt),ie=function(t){this._factory=t||null,this._isUserDataCopied=!1},re={NoOpGeometryOperation:{configurable:!0},CoordinateOperation:{configurable:!0},CoordinateSequenceOperation:{configurable:!0}};ie.prototype.setCopyUserData=function(t){this._isUserDataCopied=t},ie.prototype.edit=function(t,e){if(null===t)return null;var n=this.editInternal(t,e);return this._isUserDataCopied&&n.setUserData(t.getUserData()),n},ie.prototype.editInternal=function(t,e){return null===this._factory&&(this._factory=t.getFactory()),t instanceof zt?this.editGeometryCollection(t,e):t instanceof $t?this.editPolygon(t,e):t instanceof Qt?e.edit(t,this._factory):t instanceof Kt?e.edit(t,this._factory):(et.shouldNeverReachHere(\"Unsupported Geometry class: \"+t.getClass().getName()),null)},ie.prototype.editGeometryCollection=function(t,e){for(var n=e.edit(t,this._factory),i=new Nt,r=0;r<n.getNumGeometries();r++){var o=this.edit(n.getGeometryN(r),e);null===o||o.isEmpty()||i.add(o)}return n.getClass()===te?this._factory.createMultiPoint(i.toArray([])):n.getClass()===Xt?this._factory.createMultiLineString(i.toArray([])):n.getClass()===ne?this._factory.createMultiPolygon(i.toArray([])):this._factory.createGeometryCollection(i.toArray([]))},ie.prototype.editPolygon=function(t,e){var n=e.edit(t,this._factory);if(null===n&&(n=this._factory.createPolygon(null)),n.isEmpty())return n;var i=this.edit(n.getExteriorRing(),e);if(null===i||i.isEmpty())return this._factory.createPolygon();for(var r=new Nt,o=0;o<n.getNumInteriorRing();o++){var s=this.edit(n.getInteriorRingN(o),e);null===s||s.isEmpty()||r.add(s)}return this._factory.createPolygon(i,r.toArray([]))},ie.prototype.interfaces_=function(){return[]},ie.prototype.getClass=function(){return ie},ie.GeometryEditorOperation=function(){},re.NoOpGeometryOperation.get=function(){return oe},re.CoordinateOperation.get=function(){return se},re.CoordinateSequenceOperation.get=function(){return ae},Object.defineProperties(ie,re);var oe=function(){};oe.prototype.edit=function(t,e){return t},oe.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},oe.prototype.getClass=function(){return oe};var se=function(){};se.prototype.edit=function(t,e){var n=this.editCoordinates(t.getCoordinates(),t);return null===n?t:t instanceof ee?e.createLinearRing(n):t instanceof Kt?e.createLineString(n):t instanceof Qt?n.length>0?e.createPoint(n[0]):e.createPoint():t},se.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},se.prototype.getClass=function(){return se};var ae=function(){};ae.prototype.edit=function(t,e){return t instanceof ee?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof Kt?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Qt?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},ae.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},ae.prototype.getClass=function(){return ae};var ue=function(){if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var t=arguments[0];this._coordinates=new Array(t).fill(null);for(var e=0;e<t;e++)this._coordinates[e]=new C}else if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this._coordinates=new Array(0).fill(null),null;this._dimension=n.getDimension(),this._coordinates=new Array(n.size()).fill(null);for(var i=0;i<this._coordinates.length;i++)this._coordinates[i]=n.getCoordinateCopy(i)}}else if(2===arguments.length)if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var r=arguments[0],o=arguments[1];this._coordinates=r,this._dimension=o,null===r&&(this._coordinates=new Array(0).fill(null))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var s=arguments[0],a=arguments[1];this._coordinates=new Array(s).fill(null),this._dimension=a;for(var u=0;u<s;u++)this._coordinates[u]=new C}},le={serialVersionUID:{configurable:!0}};ue.prototype.setOrdinate=function(t,e,n){switch(e){case V.X:this._coordinates[t].x=n;break;case V.Y:this._coordinates[t].y=n;break;case V.Z:this._coordinates[t].z=n;break;default:throw new m(\"invalid ordinateIndex\")}},ue.prototype.size=function(){return this._coordinates.length},ue.prototype.getOrdinate=function(t,e){switch(e){case V.X:return this._coordinates[t].x;case V.Y:return this._coordinates[t].y;case V.Z:return this._coordinates[t].z}return v.NaN},ue.prototype.getCoordinate=function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.x=this._coordinates[e].x,n.y=this._coordinates[e].y,n.z=this._coordinates[e].z}},ue.prototype.getCoordinateCopy=function(t){return new C(this._coordinates[t])},ue.prototype.getDimension=function(){return this._dimension},ue.prototype.getX=function(t){return this._coordinates[t].x},ue.prototype.clone=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].clone();return new ue(t,this._dimension)},ue.prototype.expandEnvelope=function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t},ue.prototype.copy=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].copy();return new ue(t,this._dimension)},ue.prototype.toString=function(){if(this._coordinates.length>0){var t=new D(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"},ue.prototype.getY=function(t){return this._coordinates[t].y},ue.prototype.toCoordinateArray=function(){return this._coordinates},ue.prototype.interfaces_=function(){return[V,e]},ue.prototype.getClass=function(){return ue},le.serialVersionUID.get=function(){return-0xcb44a778db18e00},Object.defineProperties(ue,le);var ce=function(){},pe={serialVersionUID:{configurable:!0},instanceObject:{configurable:!0}};ce.prototype.readResolve=function(){return ce.instance()},ce.prototype.create=function(){if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new ue(t)}if(T(arguments[0],V)){var e=arguments[0];return new ue(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return i>3&&(i=3),i<2?new ue(n):new ue(n,i)}},ce.prototype.interfaces_=function(){return[b,e]},ce.prototype.getClass=function(){return ce},ce.instance=function(){return ce.instanceObject},pe.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},pe.instanceObject.get=function(){return new ce},Object.defineProperties(ce,pe);var he=function(t){function e(){t.call(this),this.map_=new Map}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return this.map_.get(t)||null},e.prototype.put=function(t,e){return this.map_.set(t,e),e},e.prototype.values=function(){for(var t=new Nt,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},e.prototype.entrySet=function(){var t=new Pt;return this.map_.entries().forEach(function(e){return t.add(e)}),t},e.prototype.size=function(){return this.map_.size()},e}(Tt),fe=function t(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof de){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}},ge={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};fe.prototype.equals=function(t){if(!(t instanceof fe))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale},fe.prototype.compareTo=function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return new M(n).compareTo(new M(i))},fe.prototype.getScale=function(){return this._scale},fe.prototype.isFloating=function(){return this._modelType===fe.FLOATING||this._modelType===fe.FLOATING_SINGLE},fe.prototype.getType=function(){return this._modelType},fe.prototype.toString=function(){var t=\"UNKNOWN\";return this._modelType===fe.FLOATING?t=\"Floating\":this._modelType===fe.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===fe.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t},fe.prototype.makePrecise=function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(v.isNaN(t))return t;if(this._modelType===fe.FLOATING_SINGLE){return t}return this._modelType===fe.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof C){var e=arguments[0];if(this._modelType===fe.FLOATING)return null;e.x=this.makePrecise(e.x),e.y=this.makePrecise(e.y)}},fe.prototype.getMaximumSignificantDigits=function(){var t=16;return this._modelType===fe.FLOATING?t=16:this._modelType===fe.FLOATING_SINGLE?t=6:this._modelType===fe.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},fe.prototype.setScale=function(t){this._scale=Math.abs(t)},fe.prototype.interfaces_=function(){return[e,E]},fe.prototype.getClass=function(){return fe},fe.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},ge.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},ge.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(fe,ge);var de=function t(e){this._name=e||null,t.nameToTypeMap.put(e,this)},ye={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};de.prototype.readResolve=function(){return de.nameToTypeMap.get(this._name)},de.prototype.toString=function(){return this._name},de.prototype.interfaces_=function(){return[e]},de.prototype.getClass=function(){return de},ye.serialVersionUID.get=function(){return-552860263173159e4},ye.nameToTypeMap.get=function(){return new he},Object.defineProperties(de,ye),fe.Type=de,fe.FIXED=new de(\"FIXED\"),fe.FLOATING=new de(\"FLOATING\"),fe.FLOATING_SINGLE=new de(\"FLOATING SINGLE\");var _e=function t(){this._precisionModel=new fe,this._SRID=0,this._coordinateSequenceFactory=t.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?T(arguments[0],b)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof fe&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},me={serialVersionUID:{configurable:!0}};_e.prototype.toGeometry=function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new C(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new C(t.getMinX(),t.getMinY()),new C(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new C(t.getMinX(),t.getMinY()),new C(t.getMinX(),t.getMaxY()),new C(t.getMaxX(),t.getMaxY()),new C(t.getMaxX(),t.getMinY()),new C(t.getMinX(),t.getMinY())]),null)},_e.prototype.createLineString=function(t){return t?t instanceof Array?new Kt(this.getCoordinateSequenceFactory().create(t),this):T(t,V)?new Kt(t,this):void 0:new Kt(this.getCoordinateSequenceFactory().create([]),this)},_e.prototype.createMultiLineString=function(){if(0===arguments.length)return new Xt(null,this);if(1===arguments.length){var t=arguments[0];return new Xt(t,this)}},_e.prototype.buildGeometry=function(t){for(var e=null,n=!1,i=!1,r=t.iterator();r.hasNext();){var o=r.next(),s=o.getClass();null===e&&(e=s),s!==e&&(n=!0),o.isGeometryCollectionOrDerived()&&(i=!0)}if(null===e)return this.createGeometryCollection();if(n||i)return this.createGeometryCollection(_e.toGeometryArray(t));var a=t.iterator().next();if(t.size()>1){if(a instanceof $t)return this.createMultiPolygon(_e.toPolygonArray(t));if(a instanceof Kt)return this.createMultiLineString(_e.toLineStringArray(t));if(a instanceof Qt)return this.createMultiPoint(_e.toPointArray(t));et.shouldNeverReachHere(\"Unhandled class: \"+a.getClass().getName())}return a},_e.prototype.createMultiPointFromCoords=function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},_e.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(T(arguments[0],V)){var e=arguments[0];return new Qt(e,this)}}},_e.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},_e.prototype.createPolygon=function(){if(0===arguments.length)return new $t(null,null,this);if(1===arguments.length){if(T(arguments[0],V)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof ee){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new $t(i,r,this)}},_e.prototype.getSRID=function(){return this._SRID},_e.prototype.createGeometryCollection=function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){var t=arguments[0];return new zt(t,this)}},_e.prototype.createGeometry=function(t){return new ie(this).edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})},_e.prototype.getPrecisionModel=function(){return this._precisionModel},_e.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(T(arguments[0],V)){var e=arguments[0];return new ee(e,this)}}},_e.prototype.createMultiPolygon=function(){if(0===arguments.length)return new ne(null,this);if(1===arguments.length){var t=arguments[0];return new ne(t,this)}},_e.prototype.createMultiPoint=function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new te(t,this)}if(arguments[0]instanceof Array){var e=arguments[0];return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(n.size()).fill(null),r=0;r<n.size();r++){var o=this.getCoordinateSequenceFactory().create(1,n.getDimension());Wt.copy(n,r,o,0,1),i[r]=this.createPoint(o)}return this.createMultiPoint(i)}}},_e.prototype.interfaces_=function(){return[e]},_e.prototype.getClass=function(){return _e},_e.toMultiPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toGeometryArray=function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.getDefaultCoordinateSequenceFactory=function(){return ce.instance()},_e.toMultiLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toMultiPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLinearRingArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.createPointFromInternalCoord=function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)},me.serialVersionUID.get=function(){return-0x5ea75f2051eeb400},Object.defineProperties(_e,me);var ve=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],Ie=function(t){this.geometryFactory=t||new _e};Ie.prototype.read=function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!Ee[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==ve.indexOf(n)?Ee[n].apply(this,[e.coordinates]):\"GeometryCollection\"===n?Ee[n].apply(this,[e.geometries]):Ee[n].apply(this,[e])},Ie.prototype.write=function(t){var e=t.getGeometryType();if(!xe[e])throw new Error(\"Geometry is not supported\");return xe[e].apply(this,[t])};var Ee={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!Ee[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=Ee.bbox.apply(this,[t.bbox])),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.apply(this,[t.bbox])),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(new C(i[0],i[1]))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new C(t[0],t[1]),new C(t[2],t[1]),new C(t[2],t[3]),new C(t[0],t[3]),new C(t[0],t[1])])},Point:function(t){var e=new C(t[0],t[1]);return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.Point.apply(this,[t[n]]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=Ee.coordinates.apply(this,[t]);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.LineString.apply(this,[t[n]]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=Ee.coordinates.apply(this,[t[0]]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var o=t[r],s=Ee.coordinates.apply(this,[o]),a=this.geometryFactory.createLinearRing(s);i.push(a)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(Ee.Polygon.apply(this,[i]))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},xe={coordinate:function(t){return[t.x,t.y]},Point:function(t){return{type:\"Point\",coordinates:xe.coordinate.apply(this,[t.getCoordinate()])}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Point.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(xe.coordinate.apply(this,[r]))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.LineString.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=xe.LineString.apply(this,[t._shell]);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],o=xe.LineString.apply(this,[r]);e.push(o.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Polygon.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(xe[r].apply(this,[i]))}return{type:\"GeometryCollection\",geometries:e}}},Ne=function(t){this.geometryFactory=t||new _e,this.precisionModel=this.geometryFactory.getPrecisionModel(),this.parser=new Ie(this.geometryFactory)};Ne.prototype.read=function(t){var e=this.parser.read(t);return this.precisionModel.getType()===fe.FIXED&&this.reducePrecision(e),e},Ne.prototype.reducePrecision=function(t){var e,n;if(t.coordinate)this.precisionModel.makePrecise(t.coordinate);else if(t.points)for(e=0,n=t.points.length;e<n;e++)this.precisionModel.makePrecise(t.points[e]);else if(t.geometries)for(e=0,n=t.geometries.length;e<n;e++)this.reducePrecision(t.geometries[e])};var Ce=function(){this.parser=new Ie(this.geometryFactory)};Ce.prototype.write=function(t){return this.parser.write(t)};var Se=function(){},Le={ON:{configurable:!0},LEFT:{configurable:!0},RIGHT:{configurable:!0}};Se.prototype.interfaces_=function(){return[]},Se.prototype.getClass=function(){return Se},Se.opposite=function(t){return t===Se.LEFT?Se.RIGHT:t===Se.RIGHT?Se.LEFT:t},Le.ON.get=function(){return 0},Le.LEFT.get=function(){return 1},Le.RIGHT.get=function(){return 2},Object.defineProperties(Se,Le),(d.prototype=new Error).name=\"EmptyStackException\",(y.prototype=new xt).add=function(t){return this.array_.push(t),!0},y.prototype.get=function(t){if(t<0||t>=this.size())throw new Error;return this.array_[t]},y.prototype.push=function(t){return this.array_.push(t),t},y.prototype.pop=function(t){if(0===this.array_.length)throw new d;return this.array_.pop()},y.prototype.peek=function(){if(0===this.array_.length)throw new d;return this.array_[this.array_.length-1]},y.prototype.empty=function(){return 0===this.array_.length},y.prototype.isEmpty=function(){return this.empty()},y.prototype.search=function(t){return this.array_.indexOf(t)},y.prototype.size=function(){return this.array_.length},y.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t};var be=function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null};be.prototype.getCoordinate=function(){return this._minCoord},be.prototype.getRightmostSide=function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n},be.prototype.findRightmostEdgeAtVertex=function(){var t=this._minDe.getEdge().getCoordinates();et.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=at.computeOrientation(this._minCoord,n,e),r=!1;e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===at.COUNTERCLOCKWISE?r=!0:e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===at.CLOCKWISE&&(r=!0),r&&(this._minIndex=this._minIndex-1)},be.prototype.getRightmostSideOfSegment=function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=Se.LEFT;return n[e].y<n[e+1].y&&(i=Se.RIGHT),i},be.prototype.getEdge=function(){return this._orientedDe},be.prototype.checkForRightmostCoordinate=function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])},be.prototype.findRightmostEdgeAtNode=function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},be.prototype.findEdge=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}et.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe;this.getRightmostSide(this._minDe,this._minIndex)===Se.LEFT&&(this._orientedDe=this._minDe.getSym())},be.prototype.interfaces_=function(){return[]},be.prototype.getClass=function(){return be};var we=function(t){function e(n,i){t.call(this,e.msgWithCoord(n,i)),this.pt=i?new C(i):null,this.name=\"TopologyException\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCoordinate=function(){return this.pt},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.msgWithCoord=function(t,e){return e?t:t+\" [ \"+e+\" ]\"},e}($),Oe=function(){this.array_=[]};Oe.prototype.addLast=function(t){this.array_.push(t)},Oe.prototype.removeFirst=function(){return this.array_.shift()},Oe.prototype.isEmpty=function(){return 0===this.array_.length};var Te=function(){this._finder=null,this._dirEdgeList=new Nt,this._nodes=new Nt,this._rightMostCoord=null,this._env=null,this._finder=new be};Te.prototype.clearVisitedEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}},Te.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},Te.prototype.computeNodeDepth=function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new we(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var o=r.next();o.setVisited(!0),this.copySymDepths(o)}},Te.prototype.computeDepth=function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.setEdgeDepths(Se.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},Te.prototype.create=function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},Te.prototype.findResultEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(Se.RIGHT)>=1&&e.getDepth(Se.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},Te.prototype.computeDepths=function(t){var e=new Pt,n=new Oe,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var o=r.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}},Te.prototype.compareTo=function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0},Te.prototype.getEnvelope=function(){if(null===this._env){for(var t=new j,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env},Te.prototype.addReachable=function(t){var e=new y;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}},Te.prototype.copySymDepths=function(t){var e=t.getSym();e.setDepth(Se.LEFT,t.getDepth(Se.RIGHT)),e.setDepth(Se.RIGHT,t.getDepth(Se.LEFT))},Te.prototype.add=function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}},Te.prototype.getNodes=function(){return this._nodes},Te.prototype.getDirectedEdges=function(){return this._dirEdgeList},Te.prototype.interfaces_=function(){return[E]},Te.prototype.getClass=function(){return Te};var Re=function t(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];this.init(e.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[Se.ON]=n}else if(arguments[0]instanceof t){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.init(3),this.location[Se.ON]=o,this.location[Se.LEFT]=s,this.location[Se.RIGHT]=a}};Re.prototype.setAllLocations=function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t},Re.prototype.isNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==w.NONE)return!1;return!0},Re.prototype.setAllLocationsIfNull=function(t){for(var e=0;e<this.location.length;e++)this.location[e]===w.NONE&&(this.location[e]=t)},Re.prototype.isLine=function(){return 1===this.location.length},Re.prototype.merge=function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[Se.ON]=this.location[Se.ON],e[Se.LEFT]=w.NONE,e[Se.RIGHT]=w.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===w.NONE&&n<t.location.length&&(this.location[n]=t.location[n])},Re.prototype.getLocations=function(){return this.location},Re.prototype.flip=function(){if(this.location.length<=1)return null;var t=this.location[Se.LEFT];this.location[Se.LEFT]=this.location[Se.RIGHT],this.location[Se.RIGHT]=t},Re.prototype.toString=function(){var t=new D;return this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.LEFT])),t.append(w.toLocationSymbol(this.location[Se.ON])),this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.RIGHT])),t.toString()},Re.prototype.setLocations=function(t,e,n){this.location[Se.ON]=t,this.location[Se.LEFT]=e,this.location[Se.RIGHT]=n},Re.prototype.get=function(t){return t<this.location.length?this.location[t]:w.NONE},Re.prototype.isArea=function(){return this.location.length>1},Re.prototype.isAnyNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===w.NONE)return!0;return!1},Re.prototype.setLocation=function(){if(1===arguments.length){var t=arguments[0];this.setLocation(Se.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}},Re.prototype.init=function(t){this.location=new Array(t).fill(null),this.setAllLocations(w.NONE)},Re.prototype.isEqualOnSide=function(t,e){return this.location[e]===t.location[e]},Re.prototype.allPositionsEqual=function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0},Re.prototype.interfaces_=function(){return[]},Re.prototype.getClass=function(){return Re};var Pe=function t(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var e=arguments[0];this.elt[0]=new Re(e),this.elt[1]=new Re(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.elt[0]=new Re(n.elt[0]),this.elt[1]=new Re(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Re(w.NONE),this.elt[1]=new Re(w.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.elt[0]=new Re(o,s,a),this.elt[1]=new Re(o,s,a)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2],p=arguments[3];this.elt[0]=new Re(w.NONE,w.NONE,w.NONE),this.elt[1]=new Re(w.NONE,w.NONE,w.NONE),this.elt[u].setLocations(l,c,p)}};Pe.prototype.getGeometryCount=function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t},Pe.prototype.setAllLocations=function(t,e){this.elt[t].setAllLocations(e)},Pe.prototype.isNull=function(t){return this.elt[t].isNull()},Pe.prototype.setAllLocationsIfNull=function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}},Pe.prototype.isLine=function(t){return this.elt[t].isLine()},Pe.prototype.merge=function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Re(t.elt[e]):this.elt[e].merge(t.elt[e])},Pe.prototype.flip=function(){this.elt[0].flip(),this.elt[1].flip()},Pe.prototype.getLocation=function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get(Se.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}},Pe.prototype.toString=function(){var t=new D;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()},Pe.prototype.isArea=function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}},Pe.prototype.isAnyNull=function(t){return this.elt[t].isAnyNull()},Pe.prototype.setLocation=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation(Se.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}},Pe.prototype.isEqualOnSide=function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)},Pe.prototype.allPositionsEqual=function(t,e){return this.elt[t].allPositionsEqual(e)},Pe.prototype.toLine=function(t){this.elt[t].isArea()&&(this.elt[t]=new Re(this.elt[t].location[0]))},Pe.prototype.interfaces_=function(){return[]},Pe.prototype.getClass=function(){return Pe},Pe.toLineLabel=function(t){for(var e=new Pe(w.NONE),n=0;n<2;n++)e.setLocation(n,t.getLocation(n));return e};var De=function(){this._startDe=null,this._maxNodeDegree=-1,this._edges=new Nt,this._pts=new Nt,this._label=new Pe(w.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new Nt,this._geometryFactory=null;var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()};De.prototype.computeRing=function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=at.isCCW(this._ring.getCoordinates())},De.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},De.prototype.computePoints=function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new we(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new we(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();et.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)},De.prototype.getLinearRing=function(){return this._ring},De.prototype.getCoordinate=function(t){return this._pts.get(t)},De.prototype.computeMaxNodeDegree=function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2},De.prototype.addPoints=function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var o=r;o<i.length;o++)this._pts.add(i[o])}else{var s=i.length-2;n&&(s=i.length-1);for(var a=s;a>=0;a--)this._pts.add(i[a])}},De.prototype.isHole=function(){return this._isHole},De.prototype.setInResult=function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)},De.prototype.containsPoint=function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!at.isPointInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0},De.prototype.addHole=function(t){this._holes.add(t)},De.prototype.isShell=function(){return null===this._shell},De.prototype.getLabel=function(){return this._label},De.prototype.getEdges=function(){return this._edges},De.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},De.prototype.getShell=function(){return this._shell},De.prototype.mergeLabel=function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,Se.RIGHT);if(i===w.NONE)return null;if(this._label.getLocation(n)===w.NONE)return this._label.setLocation(n,i),null}},De.prototype.setShell=function(t){this._shell=t,null!==t&&t.addHole(this)},De.prototype.toPolygon=function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)},De.prototype.interfaces_=function(){return[]},De.prototype.getClass=function(){return De};var Me=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setEdgeRing=function(t,e){t.setMinEdgeRing(e)},e.prototype.getNext=function(t){return t.getNextMin()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Ae=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildMinimalRings=function(){var t=new Nt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Me(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t},e.prototype.setEdgeRing=function(t,e){t.setEdgeRing(e)},e.prototype.linkDirectedEdgesForMinimalEdgeRings=function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)},e.prototype.getNext=function(t){return t.getNext()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Fe=function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}};Fe.prototype.setVisited=function(t){this._isVisited=t},Fe.prototype.setInResult=function(t){this._isInResult=t},Fe.prototype.isCovered=function(){return this._isCovered},Fe.prototype.isCoveredSet=function(){return this._isCoveredSet},Fe.prototype.setLabel=function(t){this._label=t},Fe.prototype.getLabel=function(){return this._label},Fe.prototype.setCovered=function(t){this._isCovered=t,this._isCoveredSet=!0},Fe.prototype.updateIM=function(t){et.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)},Fe.prototype.isInResult=function(){return this._isInResult},Fe.prototype.isVisited=function(){return this._isVisited},Fe.prototype.interfaces_=function(){return[]},Fe.prototype.getClass=function(){return Fe};var Ge=function(t){function e(){t.call(this),this._coord=null,this._edges=null;var e=arguments[0],n=arguments[1];this._coord=e,this._edges=n,this._label=new Pe(0,w.NONE)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isIncidentEdgeInResult=function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1},e.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},e.prototype.getCoordinate=function(){return this._coord},e.prototype.print=function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)},e.prototype.computeIM=function(t){},e.prototype.computeMergedLocation=function(t,e){var n=w.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==w.BOUNDARY&&(n=i)}return n},e.prototype.setLabel=function(){if(2!==arguments.length)return t.prototype.setLabel.apply(this,arguments);var e=arguments[0],n=arguments[1];null===this._label?this._label=new Pe(e,n):this._label.setLocation(e,n)},e.prototype.getEdges=function(){return this._edges},e.prototype.mergeLabel=function(){if(arguments[0]instanceof e){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var n=arguments[0],i=0;i<2;i++){var r=this.computeMergedLocation(n,i);this._label.getLocation(i)===w.NONE&&this._label.setLocation(i,r)}},e.prototype.add=function(t){this._edges.insert(t),t.setNode(this)},e.prototype.setLabelBoundary=function(t){if(null===this._label)return null;var e=w.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case w.BOUNDARY:n=w.INTERIOR;break;case w.INTERIOR:default:n=w.BOUNDARY}this._label.setLocation(t,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Fe),qe=function(){this.nodeMap=new p,this.nodeFact=null;var t=arguments[0];this.nodeFact=t};qe.prototype.find=function(t){return this.nodeMap.get(t)},qe.prototype.addNode=function(){if(arguments[0]instanceof C){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ge){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}},qe.prototype.print=function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}},qe.prototype.iterator=function(){return this.nodeMap.values().iterator()},qe.prototype.values=function(){return this.nodeMap.values()},qe.prototype.getBoundaryNodes=function(t){for(var e=new Nt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===w.BOUNDARY&&e.add(i)}return e},qe.prototype.add=function(t){var e=t.getCoordinate();this.addNode(e).add(t)},qe.prototype.interfaces_=function(){return[]},qe.prototype.getClass=function(){return qe};var Be=function(){},Ve={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};Be.prototype.interfaces_=function(){return[]},Be.prototype.getClass=function(){return Be},Be.isNorthern=function(t){return t===Be.NE||t===Be.NW},Be.isOpposite=function(t,e){if(t===e)return!1;return 2===(t-e+4)%4},Be.commonHalfPlane=function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n},Be.isInHalfPlane=function(t,e){return e===Be.SE?t===Be.SE||t===Be.SW:t===e||t===e+1},Be.quadrant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+e+\" )\");return t>=0?e>=0?Be.NE:Be.SE:e>=0?Be.NW:Be.SW}if(arguments[0]instanceof C&&arguments[1]instanceof C){var n=arguments[0],i=arguments[1];if(i.x===n.x&&i.y===n.y)throw new m(\"Cannot compute the quadrant for two identical points \"+n);return i.x>=n.x?i.y>=n.y?Be.NE:Be.SE:i.y>=n.y?Be.NW:Be.SW}},Ve.NE.get=function(){return 0},Ve.NW.get=function(){return 1},Ve.SW.get=function(){return 2},Ve.SE.get=function(){return 3},Object.defineProperties(Be,Ve);var Ue=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];this._edge=e,this.init(n,i),this._label=null}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this._edge=r,this.init(o,s),this._label=a}};Ue.prototype.compareDirection=function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:at.computeOrientation(t._p0,t._p1,this._p1)},Ue.prototype.getDy=function(){return this._dy},Ue.prototype.getCoordinate=function(){return this._p0},Ue.prototype.setNode=function(t){this._node=t},Ue.prototype.print=function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\"  \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\"   \"+this._label)},Ue.prototype.compareTo=function(t){var e=t;return this.compareDirection(e)},Ue.prototype.getDirectedCoordinate=function(){return this._p1},Ue.prototype.getDx=function(){return this._dx},Ue.prototype.getLabel=function(){return this._label},Ue.prototype.getEdge=function(){return this._edge},Ue.prototype.getQuadrant=function(){return this._quadrant},Ue.prototype.getNode=function(){return this._node},Ue.prototype.toString=function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\"  \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\"   \"+this._label},Ue.prototype.computeLabel=function(t){},Ue.prototype.init=function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=Be.quadrant(this._dx,this._dy),et.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")},Ue.prototype.interfaces_=function(){return[E]},Ue.prototype.getClass=function(){return Ue};var ze=function(t){function e(){var e=arguments[0],n=arguments[1];if(t.call(this,e),this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999],this._isForward=n,n)this.init(e.getCoordinate(0),e.getCoordinate(1));else{var i=e.getNumPoints()-1;this.init(e.getCoordinate(i),e.getCoordinate(i-1))}this.computeDirectedLabel()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getNextMin=function(){return this._nextMin},e.prototype.getDepth=function(t){return this._depth[t]},e.prototype.setVisited=function(t){this._isVisited=t},e.prototype.computeDirectedLabel=function(){this._label=new Pe(this._edge.getLabel()),this._isForward||this._label.flip()},e.prototype.getNext=function(){return this._next},e.prototype.setDepth=function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new we(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e},e.prototype.isInteriorAreaEdge=function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,Se.LEFT)===w.INTERIOR&&this._label.getLocation(e,Se.RIGHT)===w.INTERIOR||(t=!1);return t},e.prototype.setNextMin=function(t){this._nextMin=t},e.prototype.print=function(e){t.prototype.print.call(this,e),e.print(\" \"+this._depth[Se.LEFT]+\"/\"+this._depth[Se.RIGHT]),e.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&e.print(\" inResult\")},e.prototype.setMinEdgeRing=function(t){this._minEdgeRing=t},e.prototype.isLineEdge=function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,w.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,w.EXTERIOR);return t&&e&&n},e.prototype.setEdgeRing=function(t){this._edgeRing=t},e.prototype.getMinEdgeRing=function(){return this._minEdgeRing},e.prototype.getDepthDelta=function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t},e.prototype.setInResult=function(t){this._isInResult=t},e.prototype.getSym=function(){return this._sym},e.prototype.isForward=function(){return this._isForward},e.prototype.getEdge=function(){return this._edge},e.prototype.printEdge=function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)},e.prototype.setSym=function(t){this._sym=t},e.prototype.setVisitedEdge=function(t){this.setVisited(t),this._sym.setVisited(t)},e.prototype.setEdgeDepths=function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===Se.LEFT&&(i=-1);var r=Se.opposite(t),o=e+n*i;this.setDepth(t,e),this.setDepth(r,o)},e.prototype.getEdgeRing=function(){return this._edgeRing},e.prototype.isInResult=function(){return this._isInResult},e.prototype.setNext=function(t){this._next=t},e.prototype.isVisited=function(){return this._isVisited},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.depthFactor=function(t,e){return t===w.EXTERIOR&&e===w.INTERIOR?1:t===w.INTERIOR&&e===w.EXTERIOR?-1:0},e}(Ue),Xe=function(){};Xe.prototype.createNode=function(t){return new Ge(t,null)},Xe.prototype.interfaces_=function(){return[]},Xe.prototype.getClass=function(){return Xe};var Ye=function(){if(this._edges=new Nt,this._nodes=null,this._edgeEndList=new Nt,0===arguments.length)this._nodes=new qe(new Xe);else if(1===arguments.length){var t=arguments[0];this._nodes=new qe(t)}};Ye.prototype.printEdges=function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}},Ye.prototype.find=function(t){return this._nodes.find(t)},Ye.prototype.addNode=function(){if(arguments[0]instanceof Ge){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof C){var e=arguments[0];return this._nodes.addNode(e)}},Ye.prototype.getNodeIterator=function(){return this._nodes.iterator()},Ye.prototype.linkResultDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}},Ye.prototype.debugPrintln=function(t){Y.out.println(t)},Ye.prototype.isBoundaryNode=function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===w.BOUNDARY},Ye.prototype.linkAllDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}},Ye.prototype.matchInSameDirection=function(t,e,n,i){return!!t.equals(n)&&(at.computeOrientation(t,e,i)===at.COLLINEAR&&Be.quadrant(t,e)===Be.quadrant(n,i))},Ye.prototype.getEdgeEnds=function(){return this._edgeEndList},Ye.prototype.debugPrint=function(t){Y.out.print(t)},Ye.prototype.getEdgeIterator=function(){return this._edges.iterator()},Ye.prototype.findEdgeInSameDirection=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null},Ye.prototype.insertEdge=function(t){this._edges.add(t)},Ye.prototype.findEdgeEnd=function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null},Ye.prototype.addEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new ze(n,!0),r=new ze(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}},Ye.prototype.add=function(t){this._nodes.add(t),this._edgeEndList.add(t)},Ye.prototype.getNodes=function(){return this._nodes.values()},Ye.prototype.findEdge=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null},Ye.prototype.interfaces_=function(){return[]},Ye.prototype.getClass=function(){return Ye},Ye.linkResultDirectedEdges=function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}};var ke=function(){this._geometryFactory=null,this._shellList=new Nt;var t=arguments[0];this._geometryFactory=t};ke.prototype.sortShellsAndHoles=function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}},ke.prototype.computePolygons=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e},ke.prototype.placeFreeHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(null===i.getShell()){var r=this.findEdgeRingContaining(i,t);if(null===r)throw new we(\"unable to assign hole to a shell\",i.getCoordinate(0));i.setShell(r)}}},ke.prototype.buildMinimalEdgeRings=function(t,e,n){for(var i=new Nt,r=t.iterator();r.hasNext();){var o=r.next();if(o.getMaxNodeDegree()>2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else i.add(o)}return i},ke.prototype.containsPoint=function(t){for(var e=this._shellList.iterator();e.hasNext();){if(e.next().containsPoint(t))return!0}return!1},ke.prototype.buildMaximalEdgeRings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ae(i,this._geometryFactory);e.add(r),r.setInResult()}}return e},ke.prototype.placePolygonHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}},ke.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},ke.prototype.findEdgeRingContaining=function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),c=l.getEnvelopeInternal();null!==o&&(s=o.getLinearRing().getEnvelopeInternal());var p=!1;c.contains(i)&&at.isPointInRing(r,l.getCoordinates())&&(p=!0),p&&(null===o||s.contains(c))&&(o=u)}return o},ke.prototype.findShell=function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return et.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n},ke.prototype.add=function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Ye.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new Nt,o=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(o,this._shellList,r),this.placeFreeHoles(this._shellList,r)}},ke.prototype.interfaces_=function(){return[]},ke.prototype.getClass=function(){return ke};var je=function(){};je.prototype.getBounds=function(){},je.prototype.interfaces_=function(){return[]},je.prototype.getClass=function(){return je};var He=function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};He.prototype.getItem=function(){return this._item},He.prototype.getBounds=function(){return this._bounds},He.prototype.interfaces_=function(){return[je,e]},He.prototype.getClass=function(){return He};var We=function(){this._size=null,this._items=null,this._size=0,this._items=new Nt,this._items.add(null)};We.prototype.poll=function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t},We.prototype.size=function(){return this._size},We.prototype.reorder=function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)},We.prototype.clear=function(){this._size=0,this._items.clear()},We.prototype.isEmpty=function(){return 0===this._size},We.prototype.add=function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)},We.prototype.interfaces_=function(){return[]},We.prototype.getClass=function(){return We};var Ke=function(){};Ke.prototype.visitItem=function(t){},Ke.prototype.interfaces_=function(){return[]},Ke.prototype.getClass=function(){return Ke};var Je=function(){};Je.prototype.insert=function(t,e){},Je.prototype.remove=function(t,e){},Je.prototype.query=function(){},Je.prototype.interfaces_=function(){return[]},Je.prototype.getClass=function(){return Je};var Qe=function(){if(this._childBoundables=new Nt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}},Ze={serialVersionUID:{configurable:!0}};Qe.prototype.getLevel=function(){return this._level},Qe.prototype.size=function(){return this._childBoundables.size()},Qe.prototype.getChildBoundables=function(){return this._childBoundables},Qe.prototype.addChildBoundable=function(t){et.isTrue(null===this._bounds),this._childBoundables.add(t)},Qe.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},Qe.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},Qe.prototype.interfaces_=function(){return[je,e]},Qe.prototype.getClass=function(){return Qe},Ze.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(Qe,Ze);var $e=function(){};$e.reverseOrder=function(){return{compare:function(t,e){return e.compareTo(t)}}},$e.min=function(t){return $e.sort(t),t.get(0)},$e.sort=function(t,e){var n=t.toArray();e?Gt.sort(n,e):Gt.sort(n);for(var i=t.iterator(),r=0,o=n.length;r<o;r++)i.next(),i.set(n[r])},$e.singletonList=function(t){var e=new Nt;return e.add(t),e};var tn=function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()};tn.prototype.expandToQueue=function(t,e){var n=tn.isComposite(this._boundable1),i=tn.isComposite(this._boundable2);if(n&&i)return tn.area(this._boundable1)>tn.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(i)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new m(\"neither boundable is composite\")},tn.prototype.isLeaves=function(){return!(tn.isComposite(this._boundable1)||tn.isComposite(this._boundable2))},tn.prototype.compareTo=function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0},tn.prototype.expand=function(t,e,n,i){for(var r=t.getChildBoundables().iterator();r.hasNext();){var o=r.next(),s=new tn(o,e,this._itemDistance);s.getDistance()<i&&n.add(s)}},tn.prototype.getBoundable=function(t){return 0===t?this._boundable1:this._boundable2},tn.prototype.getDistance=function(){return this._distance},tn.prototype.distance=function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())},tn.prototype.interfaces_=function(){return[E]},tn.prototype.getClass=function(){return tn},tn.area=function(t){return t.getBounds().getArea()},tn.isComposite=function(t){return t instanceof Qe};var en=function t(){if(this._root=null,this._built=!1,this._itemBoundables=new Nt,this._nodeCapacity=null,0===arguments.length){var e=t.DEFAULT_NODE_CAPACITY;this._nodeCapacity=e}else if(1===arguments.length){var n=arguments[0];et.isTrue(n>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=n}},nn={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};en.prototype.getNodeCapacity=function(){return this._nodeCapacity},en.prototype.lastNode=function(t){return t.get(t.size()-1)},en.prototype.size=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof Qe?t+=this.size(n):n instanceof He&&(t+=1)}return t}},en.prototype.removeItem=function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof He&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)},en.prototype.itemsTree=function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new Nt:t}if(1===arguments.length){for(var e=arguments[0],n=new Nt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof Qe){var o=this.itemsTree(r);null!==o&&n.add(o)}else r instanceof He?n.add(r.getItem()):et.shouldNeverReachHere()}return n.size()<=0?null:n}},en.prototype.insert=function(t,e){et.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new He(t,e))},en.prototype.boundablesAtLevel=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(et.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var o=i.getChildBoundables().iterator();o.hasNext();){var s=o.next();s instanceof Qe?this.boundablesAtLevel(n,s,r):(et.isTrue(s instanceof He),-1===n&&r.add(s))}return null}},en.prototype.query=function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new Nt;return this.isEmpty()?e:(this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.query(t,this._root,e),e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.query(n,this._root,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var r=arguments[0],o=arguments[1],s=arguments[2],a=o.getChildBoundables(),u=0;u<a.size();u++){var l=a.get(u);this.getIntersectsOp().intersects(l.getBounds(),r)&&(l instanceof Qe?this.query(r,l,s):l instanceof He?s.visitItem(l.getItem()):et.shouldNeverReachHere())}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var c=arguments[0],p=arguments[1],h=arguments[2],f=p.getChildBoundables(),g=0;g<f.size();g++){var d=f.get(g);this.getIntersectsOp().intersects(d.getBounds(),c)&&(d instanceof Qe?this.query(c,d,h):d instanceof He?h.add(d.getItem()):et.shouldNeverReachHere())}},en.prototype.build=function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0},en.prototype.getRoot=function(){return this.build(),this._root},en.prototype.remove=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=this.removeItem(i,r);if(o)return!0;for(var s=null,a=i.getChildBoundables().iterator();a.hasNext();){var u=a.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof Qe&&(o=this.remove(n,u,r)))){s=u;break}}return null!==s&&s.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(s),o}},en.prototype.createHigherLevels=function(t,e){et.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)},en.prototype.depth=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();if(n instanceof Qe){var i=this.depth(n);i>t&&(t=i)}}return t+1}},en.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var n=new Nt;n.add(this.createNode(e));var i=new Nt(t);$e.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var o=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(o)}return n},en.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},en.prototype.interfaces_=function(){return[e]},en.prototype.getClass=function(){return en},en.compareDoubles=function(t,e){return t>e?1:t<e?-1:0},nn.IntersectsOp.get=function(){return rn},nn.serialVersionUID.get=function(){return-0x35ef64c82d4c5400},nn.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(en,nn);var rn=function(){},on=function(){};on.prototype.distance=function(t,e){},on.prototype.interfaces_=function(){return[]},on.prototype.getClass=function(){return on};var sn=function(t){function n(e){e=e||n.DEFAULT_NODE_CAPACITY,t.call(this,e)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var i={STRtreeNode:{configurable:!0},serialVersionUID:{configurable:!0},xComparator:{configurable:!0},yComparator:{configurable:!0},intersectsOp:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};return n.prototype.createParentBoundablesFromVerticalSlices=function(t,e){et.isTrue(t.length>0);for(var n=new Nt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n},n.prototype.createNode=function(t){return new an(t)},n.prototype.size=function(){return 0===arguments.length?t.prototype.size.call(this):t.prototype.size.apply(this,arguments)},n.prototype.insert=function(){if(2!==arguments.length)return t.prototype.insert.apply(this,arguments);var e=arguments[0],n=arguments[1];if(e.isNull())return null;t.prototype.insert.call(this,e,n)},n.prototype.getIntersectsOp=function(){return n.intersectsOp},n.prototype.verticalSlices=function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),o=0;o<e;o++){i[o]=new Nt;for(var s=0;r.hasNext()&&s<n;){var a=r.next();i[o].add(a),s++}}return i},n.prototype.query=function(){if(1===arguments.length){var e=arguments[0];return t.prototype.query.call(this,e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];t.prototype.query.call(this,n,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var r=arguments[0],o=arguments[1],s=arguments[2];t.prototype.query.call(this,r,o,s)}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var a=arguments[0],u=arguments[1],l=arguments[2];t.prototype.query.call(this,a,u,l)}},n.prototype.getComparator=function(){return n.yComparator},n.prototype.createParentBoundablesFromVerticalSlice=function(e,n){return t.prototype.createParentBoundables.call(this,e,n)},n.prototype.remove=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return t.prototype.remove.call(this,e,n)}return t.prototype.remove.apply(this,arguments)},n.prototype.depth=function(){return 0===arguments.length?t.prototype.depth.call(this):t.prototype.depth.apply(this,arguments)},n.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var i=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),r=new Nt(t);$e.sort(r,n.xComparator);var o=this.verticalSlices(r,Math.trunc(Math.ceil(Math.sqrt(i))));return this.createParentBoundablesFromVerticalSlices(o,e)},n.prototype.nearestNeighbour=function(){if(1===arguments.length){if(T(arguments[0],on)){var t=arguments[0],e=new tn(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof tn){var i=arguments[0];return this.nearestNeighbour(i,v.POSITIVE_INFINITY)}}else if(2===arguments.length){if(arguments[0]instanceof n&&T(arguments[1],on)){var r=arguments[0],o=arguments[1],s=new tn(this.getRoot(),r.getRoot(),o);return this.nearestNeighbour(s)}if(arguments[0]instanceof tn&&\"number\"==typeof arguments[1]){var a=arguments[0],u=arguments[1],l=null,c=new We;for(c.add(a);!c.isEmpty()&&u>0;){var p=c.poll(),h=p.getDistance();if(h>=u)break;p.isLeaves()?(u=h,l=p):p.expandToQueue(c,u)}return[l.getBoundable(0).getItem(),l.getBoundable(1).getItem()]}}else if(3===arguments.length){var f=arguments[0],g=arguments[1],d=arguments[2],y=new He(f,g),_=new tn(this.getRoot(),y,d);return this.nearestNeighbour(_)[0]}},n.prototype.interfaces_=function(){return[Je,e]},n.prototype.getClass=function(){return n},n.centreX=function(t){return n.avg(t.getMinX(),t.getMaxX())},n.avg=function(t,e){return(t+e)/2},n.centreY=function(t){return n.avg(t.getMinY(),t.getMaxY())},i.STRtreeNode.get=function(){return an},i.serialVersionUID.get=function(){return 0x39920f7d5f261e0},i.xComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreX(e.getBounds()),n.centreX(i.getBounds()))}}},i.yComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreY(e.getBounds()),n.centreY(i.getBounds()))}}},i.intersectsOp.get=function(){return{interfaces_:function(){return[t.IntersectsOp]},intersects:function(t,e){return t.intersects(e)}}},i.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(n,i),n}(en),an=function(t){function e(){var e=arguments[0];t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeBounds=function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new j(n.getBounds()):t.expandToInclude(n.getBounds())}return t},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Qe),un=function(){};un.prototype.interfaces_=function(){return[]},un.prototype.getClass=function(){return un},un.relativeSign=function(t,e){return t<e?-1:t>e?1:0},un.compare=function(t,e,n){if(e.equals2D(n))return 0;var i=un.relativeSign(e.x,n.x),r=un.relativeSign(e.y,n.y);switch(t){case 0:return un.compareValue(i,r);case 1:return un.compareValue(r,i);case 2:return un.compareValue(r,-i);case 3:return un.compareValue(-i,r);case 4:return un.compareValue(-i,-r);case 5:return un.compareValue(-r,-i);case 6:return un.compareValue(-r,i);case 7:return un.compareValue(i,-r)}return et.shouldNeverReachHere(\"invalid octant value\"),0},un.compareValue=function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0};var ln=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new C(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))};ln.prototype.getCoordinate=function(){return this.coord},ln.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)},ln.prototype.compareTo=function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:un.compare(this._segmentOctant,this.coord,e.coord)},ln.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t},ln.prototype.isInterior=function(){return this._isInterior},ln.prototype.interfaces_=function(){return[E]},ln.prototype.getClass=function(){return ln};var cn=function(){this._nodeMap=new p,this._edge=null;var t=arguments[0];this._edge=t};cn.prototype.getSplitCoordinates=function(){var t=new St;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()},cn.prototype.addCollapsedNodes=function(){var t=new Nt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}},cn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},cn.prototype.findCollapsesFromExistingVertices=function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e),i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(new M(e+1))}},cn.prototype.addEdgeCoordinates=function(t,e,n){var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);n.add(new C(t.coord),!1);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)n.add(this._edge.getCoordinate(o));r&&n.add(new C(e.coord))},cn.prototype.iterator=function(){return this._nodeMap.values().iterator()},cn.prototype.addSplitEdges=function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},cn.prototype.findCollapseIndex=function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)},cn.prototype.findCollapsesFromInsertedNodes=function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(new M(e[0])),i=r}},cn.prototype.getEdge=function(){return this._edge},cn.prototype.addEndpoints=function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)},cn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this._edge.getCoordinate(a);return r&&(o[s]=new C(e.coord)),new gn(o,this._edge.getData())},cn.prototype.add=function(t,e){var n=new ln(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(et.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)},cn.prototype.checkSplitEdgesCorrectness=function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new $(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new $(\"bad split edge end point at \"+r)},cn.prototype.interfaces_=function(){return[]},cn.prototype.getClass=function(){return cn};var pn=function(){};pn.prototype.interfaces_=function(){return[]},pn.prototype.getClass=function(){return pn},pn.octant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the octant for point ( \"+t+\", \"+e+\" )\");var n=Math.abs(t),i=Math.abs(e);return t>=0?e>=0?n>=i?0:1:n>=i?7:6:e>=0?n>=i?3:2:n>=i?4:5}if(arguments[0]instanceof C&&arguments[1]instanceof C){var r=arguments[0],o=arguments[1],s=o.x-r.x,a=o.y-r.y;if(0===s&&0===a)throw new m(\"Cannot compute the octant for two identical points \"+r);return pn.octant(s,a)}};var hn=function(){};hn.prototype.getCoordinates=function(){},hn.prototype.size=function(){},hn.prototype.getCoordinate=function(t){},hn.prototype.isClosed=function(){},hn.prototype.setData=function(t){},hn.prototype.getData=function(){},hn.prototype.interfaces_=function(){return[]},hn.prototype.getClass=function(){return hn};var fn=function(){};fn.prototype.addIntersection=function(t,e){},fn.prototype.interfaces_=function(){return[hn]},fn.prototype.getClass=function(){return fn};var gn=function(){this._nodeList=new cn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};gn.prototype.getCoordinates=function(){return this._pts},gn.prototype.size=function(){return this._pts.length},gn.prototype.getCoordinate=function(t){return this._pts[t]},gn.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},gn.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},gn.prototype.setData=function(t){this._data=t},gn.prototype.safeOctant=function(t,e){return t.equals2D(e)?0:pn.octant(t,e)},gn.prototype.getData=function(){return this._data},gn.prototype.addIntersection=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],o=new C(n.getIntersection(r));this.addIntersection(o,i)}},gn.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},gn.prototype.getNodeList=function(){return this._nodeList},gn.prototype.addIntersectionNode=function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)},gn.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},gn.prototype.interfaces_=function(){return[fn]},gn.prototype.getClass=function(){return gn},gn.getNodedSubstrings=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return gn.getNodedSubstrings(t,e),e}if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){r.next().getNodeList().addSplitEdges(i)}};var dn=function(){if(this.p0=null,this.p1=null,0===arguments.length)this.p0=new C,this.p1=new C;else if(1===arguments.length){var t=arguments[0];this.p0=new C(t.p0),this.p1=new C(t.p1)}else if(2===arguments.length)this.p0=arguments[0],this.p1=arguments[1];else if(4===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];this.p0=new C(e,n),this.p1=new C(i,r)}},yn={serialVersionUID:{configurable:!0}};dn.prototype.minX=function(){return Math.min(this.p0.x,this.p1.x)},dn.prototype.orientationIndex=function(){if(arguments[0]instanceof dn){var t=arguments[0],e=at.orientationIndex(this.p0,this.p1,t.p0),n=at.orientationIndex(this.p0,this.p1,t.p1);return e>=0&&n>=0?Math.max(e,n):e<=0&&n<=0?Math.max(e,n):0}if(arguments[0]instanceof C){var i=arguments[0];return at.orientationIndex(this.p0,this.p1,i)}},dn.prototype.toGeometry=function(t){return t.createLineString([this.p0,this.p1])},dn.prototype.isVertical=function(){return this.p0.x===this.p1.x},dn.prototype.equals=function(t){if(!(t instanceof dn))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},dn.prototype.intersection=function(t){var e=new rt;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},dn.prototype.project=function(){if(arguments[0]instanceof C){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new C(t);var e=this.projectionFactor(t),n=new C;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof dn){var i=arguments[0],r=this.projectionFactor(i.p0),o=this.projectionFactor(i.p1);if(r>=1&&o>=1)return null;if(r<=0&&o<=0)return null;var s=this.project(i.p0);r<0&&(s=this.p0),r>1&&(s=this.p1);var a=this.project(i.p1);return o<0&&(a=this.p0),o>1&&(a=this.p1),new dn(s,a)}},dn.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},dn.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},dn.prototype.getCoordinate=function(t){return 0===t?this.p0:this.p1},dn.prototype.distancePerpendicular=function(t){return at.distancePointLinePerpendicular(t,this.p0,this.p1)},dn.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},dn.prototype.midPoint=function(){return dn.midPoint(this.p0,this.p1)},dn.prototype.projectionFactor=function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;if(i<=0)return v.NaN;return((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i},dn.prototype.closestPoints=function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=v.MAX_VALUE,r=null,o=this.closestPoint(t.p0);i=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(r=s.distance(t.p1))<i&&(i=r,n[0]=s,n[1]=t.p1);var a=t.closestPoint(this.p0);(r=a.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=a);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n},dn.prototype.closestPoint=function(t){var e=this.projectionFactor(t);if(e>0&&e<1)return this.project(t);return this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1},dn.prototype.maxX=function(){return Math.max(this.p0.x,this.p1.x)},dn.prototype.getLength=function(){return this.p0.distance(this.p1)},dn.prototype.compareTo=function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)},dn.prototype.reverse=function(){var t=this.p0;this.p0=this.p1,this.p1=t},dn.prototype.equalsTopo=function(t){return this.p0.equals(t.p0)&&(this.p1.equals(t.p1)||this.p0.equals(t.p1))&&this.p1.equals(t.p0)},dn.prototype.lineIntersection=function(t){try{return k.intersection(this.p0,this.p1,t.p0,t.p1)}catch(t){if(!(t instanceof X))throw t}return null},dn.prototype.maxY=function(){return Math.max(this.p0.y,this.p1.y)},dn.prototype.pointAlongOffset=function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,o=this.p1.y-this.p0.y,s=Math.sqrt(r*r+o*o),a=0,u=0;if(0!==e){if(s<=0)throw new Error(\"Cannot compute offset from zero-length line segment\");a=e*r/s,u=e*o/s}return new C(n-u,i+a)},dn.prototype.setCoordinates=function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}},dn.prototype.segmentFraction=function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||v.isNaN(e))&&(e=1),e},dn.prototype.toString=function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"},dn.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},dn.prototype.distance=function(){if(arguments[0]instanceof dn){var t=arguments[0];return at.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof C){var e=arguments[0];return at.distancePointLine(e,this.p0,this.p1)}},dn.prototype.pointAlong=function(t){var e=new C;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},dn.prototype.hashCode=function(){var t=v.doubleToLongBits(this.p0.x);t^=31*v.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=v.doubleToLongBits(this.p1.x);n^=31*v.doubleToLongBits(this.p1.y);return e^(Math.trunc(n)^Math.trunc(n>>32))},dn.prototype.interfaces_=function(){return[E,e]},dn.prototype.getClass=function(){return dn},dn.midPoint=function(t,e){return new C((t.x+e.x)/2,(t.y+e.y)/2)},yn.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(dn,yn);var _n=function(){this.tempEnv1=new j,this.tempEnv2=new j,this._overlapSeg1=new dn,this._overlapSeg2=new dn};_n.prototype.overlap=function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},_n.prototype.interfaces_=function(){return[]},_n.prototype.getClass=function(){return _n};var mn=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i};mn.prototype.getLineSegment=function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]},mn.prototype.computeSelect=function(t,e,n,i){var r=this._pts[e],o=this._pts[n];if(i.tempEnv1.init(r,o),n-e==1)return i.select(this,e),null;if(!t.intersects(i.tempEnv1))return null;var s=Math.trunc((e+n)/2);e<s&&this.computeSelect(t,e,s,i),s<n&&this.computeSelect(t,s,n,i)},mn.prototype.getCoordinates=function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t},mn.prototype.computeOverlaps=function(t,e){this.computeOverlapsInternal(this._start,this._end,t,t._start,t._end,e)},mn.prototype.setId=function(t){this._id=t},mn.prototype.select=function(t,e){this.computeSelect(t,this._start,this._end,e)},mn.prototype.getEnvelope=function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new j(t,e)}return this._env},mn.prototype.getEndIndex=function(){return this._end},mn.prototype.getStartIndex=function(){return this._start},mn.prototype.getContext=function(){return this._context},mn.prototype.getId=function(){return this._id},mn.prototype.computeOverlapsInternal=function(t,e,n,i,r,o){var s=this._pts[t],a=this._pts[e],u=n._pts[i],l=n._pts[r];if(e-t==1&&r-i==1)return o.overlap(this,t,n,i),null;if(o.tempEnv1.init(s,a),o.tempEnv2.init(u,l),!o.tempEnv1.intersects(o.tempEnv2))return null;var c=Math.trunc((t+e)/2),p=Math.trunc((i+r)/2);t<c&&(i<p&&this.computeOverlapsInternal(t,c,n,i,p,o),p<r&&this.computeOverlapsInternal(t,c,n,p,r,o)),c<e&&(i<p&&this.computeOverlapsInternal(c,e,n,i,p,o),p<r&&this.computeOverlapsInternal(c,e,n,p,r,o))},mn.prototype.interfaces_=function(){return[]},mn.prototype.getClass=function(){return mn};var vn=function(){};vn.prototype.interfaces_=function(){return[]},vn.prototype.getClass=function(){return vn},vn.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=vn.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return vn.toIntArray(n)},vn.findChainEnd=function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=Be.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r])){if(Be.quadrant(t[r-1],t[r])!==i)break}r++}return r-1},vn.getChains=function(){if(1===arguments.length){var t=arguments[0];return vn.getChains(t,null)}if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=new Nt,r=vn.getChainStartIndices(e),o=0;o<r.length-1;o++){var s=new mn(e,r[o],r[o+1],n);i.add(s)}return i}},vn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var In=function(){};In.prototype.computeNodes=function(t){},In.prototype.getNodedSubstrings=function(){},In.prototype.interfaces_=function(){return[]},In.prototype.getClass=function(){return In};var En=function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}};En.prototype.setSegmentIntersector=function(t){this._segInt=t},En.prototype.interfaces_=function(){return[In]},En.prototype.getClass=function(){return En};var xn=function(t){function e(e){e?t.call(this,e):t.call(this),this._monoChains=new Nt,this._index=new sn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={SegmentOverlapAction:{configurable:!0}};return e.prototype.getMonotoneChains=function(){return this._monoChains},e.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},e.prototype.getIndex=function(){return this._index},e.prototype.add=function(t){for(var e=vn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}},e.prototype.computeNodes=function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()},e.prototype.intersectChains=function(){for(var t=new Nn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.SegmentOverlapAction.get=function(){return Nn},Object.defineProperties(e,n),e}(En),Nn=function(t){function e(){t.call(this),this._si=null;var e=arguments[0];this._si=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.overlap=function(){if(4!==arguments.length)return t.prototype.overlap.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3],o=e.getContext(),s=i.getContext();this._si.processIntersections(o,n,s,r)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(_n),Cn=function t(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}},Sn={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};Cn.prototype.getEndCapStyle=function(){return this._endCapStyle},Cn.prototype.isSingleSided=function(){return this._isSingleSided},Cn.prototype.setQuadrantSegments=function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=Cn.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=Cn.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==Cn.JOIN_ROUND&&(this._quadrantSegments=Cn.DEFAULT_QUADRANT_SEGMENTS)},Cn.prototype.getJoinStyle=function(){return this._joinStyle},Cn.prototype.setJoinStyle=function(t){this._joinStyle=t},Cn.prototype.setSimplifyFactor=function(t){this._simplifyFactor=t<0?0:t},Cn.prototype.getSimplifyFactor=function(){return this._simplifyFactor},Cn.prototype.getQuadrantSegments=function(){return this._quadrantSegments},Cn.prototype.setEndCapStyle=function(t){this._endCapStyle=t},Cn.prototype.getMitreLimit=function(){return this._mitreLimit},Cn.prototype.setMitreLimit=function(t){this._mitreLimit=t},Cn.prototype.setSingleSided=function(t){this._isSingleSided=t},Cn.prototype.interfaces_=function(){return[]},Cn.prototype.getClass=function(){return Cn},Cn.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Sn.CAP_ROUND.get=function(){return 1},Sn.CAP_FLAT.get=function(){return 2},Sn.CAP_SQUARE.get=function(){return 3},Sn.JOIN_ROUND.get=function(){return 1},Sn.JOIN_MITRE.get=function(){return 2},Sn.JOIN_BEVEL.get=function(){return 3},Sn.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Sn.DEFAULT_MITRE_LIMIT.get=function(){return 5},Sn.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(Cn,Sn);var Ln=function(t){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=at.COUNTERCLOCKWISE,this._inputLine=t||null},bn={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Ln.prototype.isDeletable=function(t,e,n,i){var r=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(r,o,s)&&(!!this.isShallow(r,o,s,i)&&this.isShallowSampled(r,o,t,n,i))},Ln.prototype.deleteShallowConcavities=function(){for(var t=1,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e),i=!1;n<this._inputLine.length;){var r=!1;this.isDeletable(t,e,n,this._distanceTol)&&(this._isDeleted[e]=Ln.DELETE,r=!0,i=!0),t=r?n:e,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e)}return i},Ln.prototype.isShallowConcavity=function(t,e,n,i){if(!(at.computeOrientation(t,e,n)===this._angleOrientation))return!1;return at.distancePointLine(e,t,n)<i},Ln.prototype.isShallowSampled=function(t,e,n,i,r){var o=Math.trunc((i-n)/Ln.NUM_PTS_TO_CHECK);o<=0&&(o=1);for(var s=n;s<i;s+=o)if(!this.isShallow(t,e,this._inputLine[s],r))return!1;return!0},Ln.prototype.isConcave=function(t,e,n){var i=at.computeOrientation(t,e,n)===this._angleOrientation;return i},Ln.prototype.simplify=function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=at.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()},Ln.prototype.findNextNonDeletedIndex=function(t){for(var e=t+1;e<this._inputLine.length&&this._isDeleted[e]===Ln.DELETE;)e++;return e},Ln.prototype.isShallow=function(t,e,n,i){return at.distancePointLine(e,t,n)<i},Ln.prototype.collapseLine=function(){for(var t=new St,e=0;e<this._inputLine.length;e++)this._isDeleted[e]!==Ln.DELETE&&t.add(this._inputLine[e]);return t.toCoordinateArray()},Ln.prototype.interfaces_=function(){return[]},Ln.prototype.getClass=function(){return Ln},Ln.simplify=function(t,e){return new Ln(t).simplify(e)},bn.INIT.get=function(){return 0},bn.DELETE.get=function(){return 1},bn.KEEP.get=function(){return 1},bn.NUM_PTS_TO_CHECK.get=function(){return 10},Object.defineProperties(Ln,bn);var wn=function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new Nt},On={COORDINATE_ARRAY_TYPE:{configurable:!0}};wn.prototype.getCoordinates=function(){return this._ptList.toArray(wn.COORDINATE_ARRAY_TYPE)},wn.prototype.setPrecisionModel=function(t){this._precisionModel=t},wn.prototype.addPt=function(t){var e=new C(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)},wn.prototype.revere=function(){},wn.prototype.addPts=function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])},wn.prototype.isRedundant=function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance},wn.prototype.toString=function(){return(new _e).createLineString(this.getCoordinates()).toString()},wn.prototype.closeRing=function(){if(this._ptList.size()<1)return null;var t=new C(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)},wn.prototype.setMinimumVertexDistance=function(t){this._minimimVertexDistance=t},wn.prototype.interfaces_=function(){return[]},wn.prototype.getClass=function(){return wn},On.COORDINATE_ARRAY_TYPE.get=function(){return new Array(0).fill(null)},Object.defineProperties(wn,On);var Tn=function(){},Rn={PI_TIMES_2:{configurable:!0},PI_OVER_2:{configurable:!0},PI_OVER_4:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},CLOCKWISE:{configurable:!0},NONE:{configurable:!0}};Tn.prototype.interfaces_=function(){return[]},Tn.prototype.getClass=function(){return Tn},Tn.toDegrees=function(t){return 180*t/Math.PI},Tn.normalize=function(t){for(;t>Math.PI;)t-=Tn.PI_TIMES_2;for(;t<=-Math.PI;)t+=Tn.PI_TIMES_2;return t},Tn.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}},Tn.isAcute=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0},Tn.isObtuse=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0},Tn.interiorAngle=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Math.abs(r-i)},Tn.normalizePositive=function(t){if(t<0){for(;t<0;)t+=Tn.PI_TIMES_2;t>=Tn.PI_TIMES_2&&(t=0)}else{for(;t>=Tn.PI_TIMES_2;)t-=Tn.PI_TIMES_2;t<0&&(t=0)}return t},Tn.angleBetween=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Tn.diff(i,r)},Tn.diff=function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n},Tn.toRadians=function(t){return t*Math.PI/180},Tn.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?Tn.COUNTERCLOCKWISE:n<0?Tn.CLOCKWISE:Tn.NONE},Tn.angleBetweenOriented=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n)-i;return r<=-Math.PI?r+Tn.PI_TIMES_2:r>Math.PI?r-Tn.PI_TIMES_2:r},Rn.PI_TIMES_2.get=function(){return 2*Math.PI},Rn.PI_OVER_2.get=function(){return Math.PI/2},Rn.PI_OVER_4.get=function(){return Math.PI/4},Rn.COUNTERCLOCKWISE.get=function(){return at.COUNTERCLOCKWISE},Rn.CLOCKWISE.get=function(){return at.CLOCKWISE},Rn.NONE.get=function(){return at.COLLINEAR},Object.defineProperties(Tn,Rn);var Pn=function t(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new dn,this._seg1=new dn,this._offset0=new dn,this._offset1=new dn,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new rt,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===Cn.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)},Dn={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Pn.prototype.addNextSegment=function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=at.computeOrientation(this._s0,this._s1,this._s2),i=n===at.CLOCKWISE&&this._side===Se.LEFT||n===at.COUNTERCLOCKWISE&&this._side===Se.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},Pn.prototype.addLineEndCap=function(t,e){var n=new dn(t,e),i=new dn;this.computeOffsetSegment(n,Se.LEFT,this._distance,i);var r=new dn;this.computeOffsetSegment(n,Se.RIGHT,this._distance,r);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:this._segList.addPt(i.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,at.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case Cn.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case Cn.CAP_SQUARE:var u=new C;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new C(i.p1.x+u.x,i.p1.y+u.y),c=new C(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(c)}},Pn.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Pn.prototype.addMitreJoin=function(t,e,n,i){var r=!0,o=null;try{o=k.intersection(e.p0,e.p1,n.p0,n.p1);(i<=0?1:o.distance(t)/Math.abs(i))>this._bufParams.getMitreLimit()&&(r=!1)}catch(t){if(!(t instanceof X))throw t;o=new C(0,0),r=!1}r?this._segList.addPt(o):this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())},Pn.prototype.addFilletCorner=function(t,e,n,i,r){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,c=Math.atan2(l,u);i===at.CLOCKWISE?a<=c&&(a+=2*Math.PI):a>=c&&(a-=2*Math.PI),this._segList.addPt(e),this.addFilletArc(t,a,c,i,r),this._segList.addPt(n)},Pn.prototype.addOutsideTurn=function(t,e){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(e&&this._segList.addPt(this._offset0.p1),this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))},Pn.prototype.createSquare=function(t){this._segList.addPt(new C(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new C(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()},Pn.prototype.addSegments=function(t,e){this._segList.addPts(t,e)},Pn.prototype.addFirstSegment=function(){this._segList.addPt(this._offset1.p0)},Pn.prototype.addLastSegment=function(){this._segList.addPt(this._offset1.p1)},Pn.prototype.initSideSegments=function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)},Pn.prototype.addLimitedMitreJoin=function(t,e,n,i){var r=this._seg0.p1,o=Tn.angle(r,this._seg0.p0),s=Tn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,a=Tn.normalize(o+s),u=Tn.normalize(a+Math.PI),l=i*n,c=n-l*Math.abs(Math.sin(s)),p=r.x+l*Math.cos(u),h=r.y+l*Math.sin(u),f=new C(p,h),g=new dn(r,f),d=g.pointAlongOffset(1,c),y=g.pointAlongOffset(1,-c);this._side===Se.LEFT?(this._segList.addPt(d),this._segList.addPt(y)):(this._segList.addPt(y),this._segList.addPt(d))},Pn.prototype.computeOffsetSegment=function(t,e,n,i){var r=e===Se.LEFT?1:-1,o=t.p1.x-t.p0.x,s=t.p1.y-t.p0.y,a=Math.sqrt(o*o+s*s),u=r*n*o/a,l=r*n*s/a;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u},Pn.prototype.addFilletArc=function(t,e,n,i,r){var o=i===at.CLOCKWISE?-1:1,s=Math.abs(e-n),a=Math.trunc(s/this._filletAngleQuantum+.5);if(a<1)return null;for(var u=s/a,l=0,c=new C;l<s;){var p=e+o*l;c.x=t.x+r*Math.cos(p),c.y=t.y+r*Math.sin(p),this._segList.addPt(c),l+=u}},Pn.prototype.addInsideTurn=function(t,e){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var n=new C((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n);var i=new C((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Pn.prototype.createCircle=function(t){var e=new C(t.x+this._distance,t.y);this._segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Pn.prototype.addBevelJoin=function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)},Pn.prototype.init=function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new wn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Pn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Pn.prototype.addCollinear=function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2);this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL||this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,at.CLOCKWISE,this._distance))},Pn.prototype.closeRing=function(){this._segList.closeRing()},Pn.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Pn.prototype.interfaces_=function(){return[]},Pn.prototype.getClass=function(){return Pn},Dn.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},Dn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},Dn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},Dn.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Pn,Dn);var Mn=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};Mn.prototype.getOffsetCurve=function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var o=r.getCoordinates();return n&&Lt.reverse(o),o},Mn.prototype.computeSingleSidedBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{n.addSegments(t,!1);var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()},Mn.prototype.computeRingBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);e===Se.RIGHT&&(i=-i);var r=Ln.simplify(t,i),o=r.length-1;n.initSideSegments(r[o-1],r[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(r[s],a)}n.closeRing()},Mn.prototype.computeLineBufferCurve=function(t,e){var n=this.simplifyTolerance(this._distance),i=Ln.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],Se.LEFT);for(var o=2;o<=r;o++)e.addNextSegment(i[o],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var s=Ln.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],Se.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()},Mn.prototype.computePointCurve=function(t,e){switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:e.createCircle(t);break;case Cn.CAP_SQUARE:e.createSquare(t)}},Mn.prototype.getLineCurve=function(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()},Mn.prototype.getBufferParameters=function(){return this._bufParams},Mn.prototype.simplifyTolerance=function(t){return t*this._bufParams.getSimplifyFactor()},Mn.prototype.getRingCurve=function(t,e,n){if(this._distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Mn.copyCoordinates(t);var i=this.getSegGen(n);return this.computeRingBufferCurve(t,e,i),i.getCoordinates()},Mn.prototype.computeOffsetCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()},Mn.prototype.getSegGen=function(t){return new Pn(this._precisionModel,this._bufParams,t)},Mn.prototype.interfaces_=function(){return[]},Mn.prototype.getClass=function(){return Mn},Mn.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new C(t[n]);return e};var An=function(){this._subgraphs=null,this._seg=new dn,this._cga=new at;var t=arguments[0];this._subgraphs=t},Fn={DepthSegment:{configurable:!0}};An.prototype.findStabbedSegments=function(){if(1===arguments.length){for(var t=arguments[0],e=new Nt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(T(arguments[2],xt)&&arguments[0]instanceof C&&arguments[1]instanceof ze)for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getEdge().getCoordinates(),l=0;l<u.length-1;l++){this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();if(!(Math.max(this._seg.p0.x,this._seg.p1.x)<o.x)&&!(this._seg.isHorizontal()||o.y<this._seg.p0.y||o.y>this._seg.p1.y||at.computeOrientation(this._seg.p0,this._seg.p1,o)===at.RIGHT)){var c=s.getDepth(Se.LEFT);this._seg.p0.equals(u[l])||(c=s.getDepth(Se.RIGHT));var p=new Gn(this._seg,c);a.add(p)}}else if(T(arguments[2],xt)&&arguments[0]instanceof C&&T(arguments[1],xt))for(var h=arguments[0],f=arguments[1],g=arguments[2],d=f.iterator();d.hasNext();){var y=d.next();y.isForward()&&this.findStabbedSegments(h,y,g)}},An.prototype.getDepth=function(t){var e=this.findStabbedSegments(t);if(0===e.size())return 0;return $e.min(e)._leftDepth},An.prototype.interfaces_=function(){return[]},An.prototype.getClass=function(){return An},Fn.DepthSegment.get=function(){return Gn},Object.defineProperties(An,Fn);var Gn=function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new dn(t),this._leftDepth=e};Gn.prototype.compareTo=function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n?n:0!=(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)},Gn.prototype.compareX=function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},Gn.prototype.toString=function(){return this._upwardSeg.toString()},Gn.prototype.interfaces_=function(){return[E]},Gn.prototype.getClass=function(){return Gn};var qn=function(t,e,n){this.p0=t||null,this.p1=e||null,this.p2=n||null};qn.prototype.area=function(){return qn.area(this.p0,this.p1,this.p2)},qn.prototype.signedArea=function(){return qn.signedArea(this.p0,this.p1,this.p2)},qn.prototype.interpolateZ=function(t){if(null===t)throw new m(\"Supplied point is null.\");return qn.interpolateZ(t,this.p0,this.p1,this.p2)},qn.prototype.longestSideLength=function(){return qn.longestSideLength(this.p0,this.p1,this.p2)},qn.prototype.isAcute=function(){return qn.isAcute(this.p0,this.p1,this.p2)},qn.prototype.circumcentre=function(){return qn.circumcentre(this.p0,this.p1,this.p2)},qn.prototype.area3D=function(){return qn.area3D(this.p0,this.p1,this.p2)},qn.prototype.centroid=function(){return qn.centroid(this.p0,this.p1,this.p2)},qn.prototype.inCentre=function(){return qn.inCentre(this.p0,this.p1,this.p2)},qn.prototype.interfaces_=function(){return[]},qn.prototype.getClass=function(){return qn},qn.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},qn.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},qn.det=function(t,e,n,i){return t*i-e*n},qn.interpolateZ=function(t,e,n,i){var r=e.x,o=e.y,s=n.x-r,a=i.x-r,u=n.y-o,l=i.y-o,c=s*l-a*u,p=t.x-r,h=t.y-o,f=(l*p-a*h)/c,g=(-u*p+s*h)/c;return e.z+f*(n.z-e.z)+g*(i.z-e.z)},qn.longestSideLength=function(t,e,n){var i=t.distance(e),r=e.distance(n),o=n.distance(t),s=i;return r>s&&(s=r),o>s&&(s=o),s},qn.isAcute=function(t,e,n){return!!Tn.isAcute(t,e,n)&&(!!Tn.isAcute(e,n,t)&&!!Tn.isAcute(n,t,e))},qn.circumcentre=function(t,e,n){var i=n.x,r=n.y,o=t.x-i,s=t.y-r,a=e.x-i,u=e.y-r,l=2*qn.det(o,s,a,u),c=qn.det(s,o*o+s*s,u,a*a+u*u),p=qn.det(o,o*o+s*s,a,a*a+u*u);return new C(i-c/l,r+p/l)},qn.perpendicularBisector=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new k(t.x+n/2,t.y+i/2,1),o=new k(t.x-i+n/2,t.y+n+i/2,1);return new k(r,o)},qn.angleBisector=function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new C(t.x+r*o,t.y+r*s)},qn.area3D=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=e.z-t.z,s=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=r*u-o*a,c=o*s-i*u,p=i*a-r*s,h=l*l+c*c+p*p,f=Math.sqrt(h)/2;return f},qn.centroid=function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new C(i,r)},qn.inCentre=function(t,e,n){var i=e.distance(n),r=t.distance(n),o=t.distance(e),s=i+r+o,a=(i*t.x+r*e.x+o*n.x)/s,u=(i*t.y+r*e.y+o*n.y)/s;return new C(a,u)};var Bn=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n};Bn.prototype.addPoint=function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addPolygon=function(t){var e=this._distance,n=Se.LEFT;this._distance<0&&(e=-this._distance,n=Se.RIGHT);var i=t.getExteriorRing(),r=Lt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addPolygonRing(r,e,n,w.EXTERIOR,w.INTERIOR);for(var o=0;o<t.getNumInteriorRing();o++){var s=t.getInteriorRingN(o),a=Lt.removeRepeatedPoints(s.getCoordinates());this._distance>0&&this.isErodedCompletely(s,-this._distance)||this.addPolygonRing(a,e,Se.opposite(n),w.INTERIOR,w.EXTERIOR)}},Bn.prototype.isTriangleErodedCompletely=function(t,e){var n=new qn(t[0],t[1],t[2]),i=n.inCentre();return at.distancePointLine(i,n.p0,n.p1)<Math.abs(e)},Bn.prototype.addLineString=function(t){if(this._distance<=0&&!this._curveBuilder.getBufferParameters().isSingleSided())return null;var e=Lt.removeRepeatedPoints(t.getCoordinates()),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addCurve=function(t,e,n){if(null===t||t.length<2)return null;var i=new gn(t,new Pe(0,w.BOUNDARY,e,n));this._curveList.add(i)},Bn.prototype.getCurves=function(){return this.add(this._inputGeom),this._curveList},Bn.prototype.addPolygonRing=function(t,e,n,i,r){if(0===e&&t.length<ee.MINIMUM_VALID_SIZE)return null;var o=i,s=r;t.length>=ee.MINIMUM_VALID_SIZE&&at.isCCW(t)&&(o=r,s=i,n=Se.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)},Bn.prototype.add=function(t){if(t.isEmpty())return null;t instanceof $t?this.addPolygon(t):t instanceof Kt?this.addLineString(t):t instanceof Qt?this.addPoint(t):t instanceof te?this.addCollection(t):t instanceof Xt?this.addCollection(t):t instanceof ne?this.addCollection(t):t instanceof zt&&this.addCollection(t)},Bn.prototype.isErodedCompletely=function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r},Bn.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},Bn.prototype.interfaces_=function(){return[]},Bn.prototype.getClass=function(){return Bn};var Vn=function(){};Vn.prototype.locate=function(t){},Vn.prototype.interfaces_=function(){return[]},Vn.prototype.getClass=function(){return Vn};var Un=function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()};Un.prototype.next=function(){if(this._atStart)return this._atStart=!1,Un.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new i;var t=this._parent.getGeometryN(this._index++);return t instanceof zt?(this._subcollectionIterator=new Un(t),this._subcollectionIterator.next()):t},Un.prototype.remove=function(){throw new Error(this.getClass().getName())},Un.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Un.prototype.interfaces_=function(){return[Et]},Un.prototype.getClass=function(){return Un},Un.isAtomic=function(t){return!(t instanceof zt)};var zn=function(){this._geom=null;var t=arguments[0];this._geom=t};zn.prototype.locate=function(t){return zn.locate(t,this._geom)},zn.prototype.interfaces_=function(){return[Vn]},zn.prototype.getClass=function(){return zn},zn.isPointInRing=function(t,e){return!!e.getEnvelopeInternal().intersects(t)&&at.isPointInRing(t,e.getCoordinates())},zn.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!zn.isPointInRing(t,n))return!1;for(var i=0;i<e.getNumInteriorRing();i++){var r=e.getInteriorRingN(i);if(zn.isPointInRing(t,r))return!1}return!0},zn.containsPoint=function(t,e){if(e instanceof $t)return zn.containsPointInPolygon(t,e);if(e instanceof zt)for(var n=new Un(e);n.hasNext();){var i=n.next();if(i!==e&&zn.containsPoint(t,i))return!0}return!1},zn.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:zn.containsPoint(t,e)?w.INTERIOR:w.EXTERIOR};var Xn=function(){this._edgeMap=new p,this._edgeList=null,this._ptInAreaLocation=[w.NONE,w.NONE]};Xn.prototype.getNextCW=function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)},Xn.prototype.propagateSideLabels=function(t){for(var e=w.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,Se.LEFT)!==w.NONE&&(e=i.getLocation(t,Se.LEFT))}if(e===w.NONE)return null;for(var r=e,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getLabel();if(a.getLocation(t,Se.ON)===w.NONE&&a.setLocation(t,Se.ON,r),a.isArea(t)){var u=a.getLocation(t,Se.LEFT),l=a.getLocation(t,Se.RIGHT);if(l!==w.NONE){if(l!==r)throw new we(\"side location conflict\",s.getCoordinate());u===w.NONE&&et.shouldNeverReachHere(\"found single null side (at \"+s.getCoordinate()+\")\"),r=u}else et.isTrue(a.getLocation(t,Se.LEFT)===w.NONE,\"found single null side\"),a.setLocation(t,Se.RIGHT,r),a.setLocation(t,Se.LEFT,r)}}},Xn.prototype.getCoordinate=function(){var t=this.iterator();if(!t.hasNext())return null;return t.next().getCoordinate()},Xn.prototype.print=function(t){Y.out.println(\"EdgeEndStar:   \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Xn.prototype.isAreaLabelsConsistent=function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)},Xn.prototype.checkAreaLabelsConsistent=function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,Se.LEFT);et.isTrue(i!==w.NONE,\"Found unlabelled area edge\");for(var r=i,o=this.iterator();o.hasNext();){var s=o.next().getLabel();et.isTrue(s.isArea(t),\"Found non-area edge\");var a=s.getLocation(t,Se.LEFT),u=s.getLocation(t,Se.RIGHT);if(a===u)return!1;if(u!==r)return!1;r=a}return!0},Xn.prototype.findIndex=function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1},Xn.prototype.iterator=function(){return this.getEdges().iterator()},Xn.prototype.getEdges=function(){return null===this._edgeList&&(this._edgeList=new Nt(this._edgeMap.values())),this._edgeList},Xn.prototype.getLocation=function(t,e,n){return this._ptInAreaLocation[t]===w.NONE&&(this._ptInAreaLocation[t]=zn.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]},Xn.prototype.toString=function(){var t=new D;t.append(\"EdgeEndStar:   \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()},Xn.prototype.computeEdgeEndLabels=function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}},Xn.prototype.computeLabelling=function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===w.BOUNDARY&&(e[r]=!0);for(var o=this.iterator();o.hasNext();)for(var s=o.next(),a=s.getLabel(),u=0;u<2;u++)if(a.isAnyNull(u)){var l=w.NONE;if(e[u])l=w.EXTERIOR;else{var c=s.getCoordinate();l=this.getLocation(u,c,t)}a.setAllLocationsIfNull(u,l)}},Xn.prototype.getDegree=function(){return this._edgeMap.size()},Xn.prototype.insertEdgeEnd=function(t,e){this._edgeMap.put(t,e),this._edgeList=null},Xn.prototype.interfaces_=function(){return[]},Xn.prototype.getClass=function(){return Xn};var Yn=function(t){function e(){t.call(this),this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.linkResultDirectedEdges=function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),o=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!o.isInResult())continue;e=o,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new we(\"no outgoing dirEdge found\",this.getCoordinate());et.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}},e.prototype.insert=function(t){var e=t;this.insertEdgeEnd(e,e)},e.prototype.getRightmostEdge=function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),o=i.getQuadrant();return Be.isNorthern(r)&&Be.isNorthern(o)?n:Be.isNorthern(r)||Be.isNorthern(o)?0!==n.getDy()?n:0!==i.getDy()?i:(et.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i},e.prototype.print=function(t){Y.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}},e.prototype.getResultAreaEdges=function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new Nt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList},e.prototype.updateLabelling=function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}},e.prototype.linkAllDirectedEdges=function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)},e.prototype.computeDepths=function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth(Se.LEFT),i=t.getDepth(Se.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,r)!==i)throw new we(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[0],s=arguments[1],a=arguments[2],u=o;u<s;u++){var l=this._edgeList.get(u);l.setEdgeDepths(Se.RIGHT,a),a=l.getDepth(Se.LEFT)}return a}},e.prototype.mergeSymLabels=function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}},e.prototype.linkMinimalDirectedEdges=function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var o=this._resultAreaEdgeList.get(r),s=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),i){case this._SCANNING_FOR_INCOMING:if(s.getEdgeRing()!==t)continue;n=s,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;n.setNextMin(o),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(et.isTrue(null!==e,\"found null for first outgoing dirEdge\"),et.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))},e.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){e.next().isInResult()&&t++}return t}if(1===arguments.length){for(var n=arguments[0],i=0,r=this.iterator();r.hasNext();){r.next().getEdgeRing()===n&&i++}return i}},e.prototype.getLabel=function(){return this._label},e.prototype.findCoveredLineEdges=function(){for(var t=w.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=w.INTERIOR;break}if(i.isInResult()){t=w.EXTERIOR;break}}}if(t===w.NONE)return null;for(var r=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(r===w.INTERIOR):(s.isInResult()&&(r=w.EXTERIOR),a.isInResult()&&(r=w.INTERIOR))}},e.prototype.computeLabelling=function(e){t.prototype.computeLabelling.call(this,e),this._label=new Pe(w.NONE);for(var n=this.iterator();n.hasNext();)for(var i=n.next().getEdge().getLabel(),r=0;r<2;r++){var o=i.getLocation(r);o!==w.INTERIOR&&o!==w.BOUNDARY||this._label.setLocation(r,w.INTERIOR)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xn),kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createNode=function(t){return new Ge(t,new Yn)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xe),jn=function t(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)};jn.prototype.compareTo=function(t){var e=t;return jn.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},jn.prototype.interfaces_=function(){return[E]},jn.prototype.getClass=function(){return jn},jn.orientation=function(t){return 1===Lt.increasingDirection(t)},jn.compareOriented=function(t,e,n,i){for(var r=e?1:-1,o=i?1:-1,s=e?t.length:-1,a=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var c=t[u].compareTo(n[l]);if(0!==c)return c;var p=(u+=r)===s,h=(l+=o)===a;if(p&&!h)return-1;if(!p&&h)return 1;if(p&&h)return 0}};var Hn=function(){this._edges=new Nt,this._ocaMap=new p};Hn.prototype.print=function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\")  \")},Hn.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},Hn.prototype.findEdgeIndex=function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1},Hn.prototype.iterator=function(){return this._edges.iterator()},Hn.prototype.getEdges=function(){return this._edges},Hn.prototype.get=function(t){return this._edges.get(t)},Hn.prototype.findEqualEdge=function(t){var e=new jn(t.getCoordinates());return this._ocaMap.get(e)},Hn.prototype.add=function(t){this._edges.add(t);var e=new jn(t.getCoordinates());this._ocaMap.put(e,t)},Hn.prototype.interfaces_=function(){return[]},Hn.prototype.getClass=function(){return Hn};var Wn=function(){};Wn.prototype.processIntersections=function(t,e,n,i){},Wn.prototype.isDone=function(){},Wn.prototype.interfaces_=function(){return[]},Wn.prototype.getClass=function(){return Wn};var Kn=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t};Kn.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(Kn.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.size()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},Kn.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},Kn.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},Kn.prototype.getLineIntersector=function(){return this._li},Kn.prototype.hasProperIntersection=function(){return this._hasProper},Kn.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))},Kn.prototype.hasIntersection=function(){return this._hasIntersection},Kn.prototype.isDone=function(){return!1},Kn.prototype.hasInteriorIntersection=function(){return this._hasInterior},Kn.prototype.interfaces_=function(){return[Wn]},Kn.prototype.getClass=function(){return Kn},Kn.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var Jn=function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new C(t),this.segmentIndex=e,this.dist=n};Jn.prototype.getSegmentIndex=function(){return this.segmentIndex},Jn.prototype.getCoordinate=function(){return this.coord},Jn.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)},Jn.prototype.compareTo=function(t){var e=t;return this.compare(e.segmentIndex,e.dist)},Jn.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t},Jn.prototype.toString=function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist},Jn.prototype.getDistance=function(){return this.dist},Jn.prototype.compare=function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0},Jn.prototype.interfaces_=function(){return[E]},Jn.prototype.getClass=function(){return Jn};var Qn=function(){this._nodeMap=new p,this.edge=null;var t=arguments[0];this.edge=t};Qn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Qn.prototype.iterator=function(){return this._nodeMap.values().iterator()},Qn.prototype.addSplitEdges=function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},Qn.prototype.addEndpoints=function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)},Qn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return r&&(o[s]=e.coord),new ni(o,new Pe(this.edge._label))},Qn.prototype.add=function(t,e,n){var i=new Jn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)},Qn.prototype.isIntersection=function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1},Qn.prototype.interfaces_=function(){return[]},Qn.prototype.getClass=function(){return Qn};var Zn=function(){};Zn.prototype.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=this.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return Zn.toIntArray(n)},Zn.prototype.findChainEnd=function(t,e){for(var n=Be.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(Be.quadrant(t[i-1],t[i])!==n)break;i++}return i-1},Zn.prototype.interfaces_=function(){return[]},Zn.prototype.getClass=function(){return Zn},Zn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var $n=function(){this.e=null,this.pts=null,this.startIndex=null,this.env1=new j,this.env2=new j;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new Zn;this.startIndex=e.getChainStartIndices(this.pts)};$n.prototype.getCoordinates=function(){return this.pts},$n.prototype.getMaxX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n},$n.prototype.getMinX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n},$n.prototype.computeIntersectsForChain=function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=arguments[4],l=arguments[5],c=this.pts[r],p=this.pts[o],h=s.pts[a],f=s.pts[u];if(o-r==1&&u-a==1)return l.addIntersections(this.e,r,s.e,a),null;if(this.env1.init(c,p),this.env2.init(h,f),!this.env1.intersects(this.env2))return null;var g=Math.trunc((r+o)/2),d=Math.trunc((a+u)/2);r<g&&(a<d&&this.computeIntersectsForChain(r,g,s,a,d,l),d<u&&this.computeIntersectsForChain(r,g,s,d,u,l)),g<o&&(a<d&&this.computeIntersectsForChain(g,o,s,a,d,l),d<u&&this.computeIntersectsForChain(g,o,s,d,u,l))}},$n.prototype.getStartIndexes=function(){return this.startIndex},$n.prototype.computeIntersects=function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)},$n.prototype.interfaces_=function(){return[]},$n.prototype.getClass=function(){return $n};var ti=function t(){this._depth=Array(2).fill().map(function(){return Array(3)});for(var e=0;e<2;e++)for(var n=0;n<3;n++)this._depth[e][n]=t.NULL_VALUE},ei={NULL_VALUE:{configurable:!0}};ti.prototype.getDepth=function(t,e){return this._depth[t][e]},ti.prototype.setDepth=function(t,e,n){this._depth[t][e]=n},ti.prototype.isNull=function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var e=0;e<3;e++)if(this._depth[t][e]!==ti.NULL_VALUE)return!1;return!0}if(1===arguments.length){var n=arguments[0];return this._depth[n][1]===ti.NULL_VALUE}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._depth[i][r]===ti.NULL_VALUE}},ti.prototype.normalize=function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}},ti.prototype.getDelta=function(t){return this._depth[t][Se.RIGHT]-this._depth[t][Se.LEFT]},ti.prototype.getLocation=function(t,e){return this._depth[t][e]<=0?w.EXTERIOR:w.INTERIOR},ti.prototype.toString=function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]},ti.prototype.add=function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<2;e++)for(var n=1;n<3;n++){var i=t.getLocation(e,n);i!==w.EXTERIOR&&i!==w.INTERIOR||(this.isNull(e,n)?this._depth[e][n]=ti.depthAtLocation(i):this._depth[e][n]+=ti.depthAtLocation(i))}else if(3===arguments.length){var r=arguments[0],o=arguments[1];arguments[2]===w.INTERIOR&&this._depth[r][o]++}},ti.prototype.interfaces_=function(){return[]},ti.prototype.getClass=function(){return ti},ti.depthAtLocation=function(t){return t===w.EXTERIOR?0:t===w.INTERIOR?1:ti.NULL_VALUE},ei.NULL_VALUE.get=function(){return-1},Object.defineProperties(ti,ei);var ni=function(t){function e(){if(t.call(this),this.pts=null,this._env=null,this.eiList=new Qn(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ti,this._depthDelta=0,1===arguments.length){var n=arguments[0];e.call(this,n,null)}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.pts=i,this._label=r}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDepth=function(){return this._depth},e.prototype.getCollapsedEdge=function(){var t=new Array(2).fill(null);t[0]=this.pts[0],t[1]=this.pts[1];return new e(t,Pe.toLineLabel(this._label))},e.prototype.isIsolated=function(){return this._isIsolated},e.prototype.getCoordinates=function(){return this.pts},e.prototype.setIsolated=function(t){this._isIsolated=t},e.prototype.setName=function(t){this._name=t},e.prototype.equals=function(t){if(!(t instanceof e))return!1;var n=t;if(this.pts.length!==n.pts.length)return!1;for(var i=!0,r=!0,o=this.pts.length,s=0;s<this.pts.length;s++)if(this.pts[s].equals2D(n.pts[s])||(i=!1),this.pts[s].equals2D(n.pts[--o])||(r=!1),!i&&!r)return!1;return!0},e.prototype.getCoordinate=function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},e.prototype.print=function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\")  \"+this._label+\" \"+this._depthDelta)},e.prototype.computeIM=function(t){e.updateIM(this._label,t)},e.prototype.isCollapsed=function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))},e.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},e.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},e.prototype.getDepthDelta=function(){return this._depthDelta},e.prototype.getNumPoints=function(){return this.pts.length},e.prototype.printReverse=function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")},e.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new $n(this)),this._mce},e.prototype.getEnvelope=function(){if(null===this._env){this._env=new j;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env},e.prototype.addIntersection=function(t,e,n,i){var r=new C(t.getIntersection(i)),o=e,s=t.getEdgeDistance(n,i),a=o+1;if(a<this.pts.length){var u=this.pts[a];r.equals2D(u)&&(o=a,s=0)}this.eiList.add(r,o,s)},e.prototype.toString=function(){var t=new D;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\")  \"+this._label+\" \"+this._depthDelta),t.toString()},e.prototype.isPointwiseEqual=function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0},e.prototype.setDepthDelta=function(t){this._depthDelta=t},e.prototype.getEdgeIntersectionList=function(){return this.eiList},e.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.updateIM=function(){if(2!==arguments.length)return t.prototype.updateIM.apply(this,arguments);var e=arguments[0],n=arguments[1];n.setAtLeastIfValid(e.getLocation(0,Se.ON),e.getLocation(1,Se.ON),1),e.isArea()&&(n.setAtLeastIfValid(e.getLocation(0,Se.LEFT),e.getLocation(1,Se.LEFT),2),n.setAtLeastIfValid(e.getLocation(0,Se.RIGHT),e.getLocation(1,Se.RIGHT),2))},e}(Fe),ii=function(t){this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Hn,this._bufParams=t||null};ii.prototype.setWorkingPrecisionModel=function(t){this._workingPrecisionModel=t},ii.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip(),n.merge(i);var r=ii.depthDelta(i),o=e.getDepthDelta()+r;e.setDepthDelta(o)}else this._edgeList.add(t),t.setDepthDelta(ii.depthDelta(t.getLabel()))},ii.prototype.buildSubgraphs=function(t,e){for(var n=new Nt,i=t.iterator();i.hasNext();){var r=i.next(),o=r.getRightmostCoordinate(),s=new An(n).getDepth(o);r.computeDepth(s),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}},ii.prototype.createSubgraphs=function(t){for(var e=new Nt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new Te;r.create(i),e.add(r)}}return $e.sort(e,$e.reverseOrder()),e},ii.prototype.createEmptyResultGeometry=function(){return this._geomFact.createPolygon()},ii.prototype.getNoder=function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new xn,n=new rt;return n.setPrecisionModel(t),e.setSegmentIntersector(new Kn(n)),e},ii.prototype.buffer=function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new Mn(n,this._bufParams),r=new Bn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new Ye(new kn),this._graph.addEdges(this._edgeList.getEdges());var o=this.createSubgraphs(this._graph),s=new ke(this._geomFact);this.buildSubgraphs(o,s);var a=s.getPolygons();if(a.size()<=0)return this.createEmptyResultGeometry();return this._geomFact.buildGeometry(a)},ii.prototype.computeNodedEdges=function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),o=r.getCoordinates();if(2!==o.length||!o[0].equals2D(o[1])){var s=r.getData(),a=new ni(r.getCoordinates(),new Pe(s));this.insertUniqueEdge(a)}}},ii.prototype.setNoder=function(t){this._workingNoder=t},ii.prototype.interfaces_=function(){return[]},ii.prototype.getClass=function(){return ii},ii.depthDelta=function(t){var e=t.getLocation(0,Se.LEFT),n=t.getLocation(0,Se.RIGHT);return e===w.INTERIOR&&n===w.EXTERIOR?1:e===w.EXTERIOR&&n===w.INTERIOR?-1:0},ii.convertSegStrings=function(t){for(var e=new _e,n=new Nt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)};var ri=function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],e=arguments[1];this._noder=t,this._scaleFactor=e,this._offsetX=0,this._offsetY=0,this._isScaled=!this.isIntegerPrecision()}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=arguments[3];this._noder=n,this._scaleFactor=i,this._offsetX=r,this._offsetY=o,this._isScaled=!this.isIntegerPrecision()}};ri.prototype.rescale=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){for(var n=arguments[0],i=0;i<n.length;i++)n[i].x=n[i].x/this._scaleFactor+this._offsetX,n[i].y=n[i].y/this._scaleFactor+this._offsetY;2===n.length&&n[0].equals2D(n[1])&&Y.out.println(n)}},ri.prototype.scale=function(){if(T(arguments[0],It)){for(var t=arguments[0],e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new gn(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],o=new Array(r.length).fill(null),s=0;s<r.length;s++)o[s]=new C(Math.round((r[s].x-this._offsetX)*this._scaleFactor),Math.round((r[s].y-this._offsetY)*this._scaleFactor),r[s].z);return Lt.removeRepeatedPoints(o)}},ri.prototype.isIntegerPrecision=function(){return 1===this._scaleFactor},ri.prototype.getNodedSubstrings=function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t},ri.prototype.computeNodes=function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)},ri.prototype.interfaces_=function(){return[In]},ri.prototype.getClass=function(){return ri};var oi=function(){this._li=new rt,this._segStrings=null;var t=arguments[0];this._segStrings=t},si={fact:{configurable:!0}};oi.prototype.checkEndPtVertexIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next().getCoordinates();this.checkEndPtVertexIntersections(e[0],this._segStrings),this.checkEndPtVertexIntersections(e[e.length-1],this._segStrings)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1].iterator();i.hasNext();)for(var r=i.next().getCoordinates(),o=1;o<r.length-1;o++)if(r[o].equals(n))throw new $(\"found endpt/interior pt intersection at index \"+o+\" :pt \"+n)},oi.prototype.checkInteriorIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],o=arguments[1],s=r.getCoordinates(),a=o.getCoordinates(),u=0;u<s.length-1;u++)for(var l=0;l<a.length-1;l++)this.checkInteriorIntersections(r,u,o,l);else if(4===arguments.length){var c=arguments[0],p=arguments[1],h=arguments[2],f=arguments[3];if(c===h&&p===f)return null;var g=c.getCoordinates()[p],d=c.getCoordinates()[p+1],y=h.getCoordinates()[f],_=h.getCoordinates()[f+1];if(this._li.computeIntersection(g,d,y,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,g,d)||this.hasInteriorIntersection(this._li,y,_)))throw new $(\"found non-noded intersection at \"+g+\"-\"+d+\" and \"+y+\"-\"+_)}},oi.prototype.checkValid=function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()},oi.prototype.checkCollapses=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0].getCoordinates(),i=0;i<n.length-2;i++)this.checkCollapse(n[i],n[i+1],n[i+2])},oi.prototype.hasInteriorIntersection=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1},oi.prototype.checkCollapse=function(t,e,n){if(t.equals(n))throw new $(\"found non-noded collapse at \"+oi.fact.createLineString([t,e,n]))},oi.prototype.interfaces_=function(){return[]},oi.prototype.getClass=function(){return oi},si.fact.get=function(){return new _e},Object.defineProperties(oi,si);var ai=function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new C(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new C,this._p1Scaled=new C),this.initCorners(this._pt)},ui={SAFE_ENV_EXPANSION_FACTOR:{configurable:!0}};ai.prototype.intersectsScaled=function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),o=Math.max(t.y,e.y),s=this._maxx<n||this._minx>i||this._maxy<r||this._miny>o;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return et.isTrue(!(s&&a),\"Found bad envelope test\"),a},ai.prototype.initCorners=function(t){this._minx=t.x-.5,this._maxx=t.x+.5,this._miny=t.y-.5,this._maxy=t.y+.5,this._corner[0]=new C(this._maxx,this._maxy),this._corner[1]=new C(this._minx,this._maxy),this._corner[2]=new C(this._minx,this._miny),this._corner[3]=new C(this._maxx,this._miny)},ai.prototype.intersects=function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},ai.prototype.scale=function(t){return Math.round(t*this._scaleFactor)},ai.prototype.getCoordinate=function(){return this._originalPt},ai.prototype.copyScaled=function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},ai.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var t=ai.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new j(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv},ai.prototype.intersectsPixelClosure=function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))},ai.prototype.intersectsToleranceSquare=function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))},ai.prototype.addSnappedNode=function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)},ai.prototype.interfaces_=function(){return[]},ai.prototype.getClass=function(){return ai},ui.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(ai,ui);var li=function(){this.tempEnv1=new j,this.selectedSegment=new dn};li.prototype.select=function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},li.prototype.interfaces_=function(){return[]},li.prototype.getClass=function(){return li};var ci=function(){this._index=null;var t=arguments[0];this._index=t},pi={HotPixelSnapAction:{configurable:!0}};ci.prototype.snap=function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=e.getSafeEnvelope(),o=new hi(e,n,i);return this._index.query(r,{interfaces_:function(){return[Ke]},visitItem:function(t){t.select(r,o)}}),o.isNodeAdded()}},ci.prototype.interfaces_=function(){return[]},ci.prototype.getClass=function(){return ci},pi.HotPixelSnapAction.get=function(){return hi},Object.defineProperties(ci,pi);var hi=function(t){function e(){t.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._hotPixel=e,this._parentEdge=n,this._hotPixelVertexIndex=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isNodeAdded=function(){return this._isNodeAdded},e.prototype.select=function(){if(2!==arguments.length)return t.prototype.select.apply(this,arguments);var e=arguments[0],n=arguments[1],i=e.getContext();if(null!==this._parentEdge&&i===this._parentEdge&&n===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(i,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(li),fi=function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new Nt};fi.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}},fi.prototype.isDone=function(){return!1},fi.prototype.getInteriorIntersections=function(){return this._interiorIntersections},fi.prototype.interfaces_=function(){return[Wn]},fi.prototype.getClass=function(){return fi};var gi=function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new rt,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()};gi.prototype.checkCorrectness=function(t){var e=gn.getNodedSubstrings(t),n=new oi(e);try{n.checkValid()}catch(t){if(!(t instanceof z))throw t;t.printStackTrace()}},gi.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},gi.prototype.snapRound=function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)},gi.prototype.findInteriorIntersections=function(t,e){var n=new fi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()},gi.prototype.computeVertexSnaps=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.computeVertexSnaps(e)}else if(arguments[0]instanceof gn)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length;r++){var o=new ai(i[r],this._scaleFactor,this._li);this._pointSnapper.snap(o,n,r)&&n.addIntersection(i[r],r)}},gi.prototype.computeNodes=function(t){this._nodedSegStrings=t,this._noder=new xn,this._pointSnapper=new ci(this._noder.getIndex()),this.snapRound(t,this._li)},gi.prototype.computeIntersectionSnaps=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new ai(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}},gi.prototype.interfaces_=function(){return[In]},gi.prototype.getClass=function(){return gi};var di=function(){if(this._argGeom=null,this._distance=null,this._bufParams=new Cn,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}},yi={CAP_ROUND:{configurable:!0},CAP_BUTT:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},MAX_PRECISION_DIGITS:{configurable:!0}};di.prototype.bufferFixedPrecision=function(t){var e=new ri(new gi(new fe(1)),t.getScale()),n=new ii(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)},di.prototype.bufferReducedPrecision=function(){var t=this;if(0===arguments.length){for(var e=di.MAX_PRECISION_DIGITS;e>=0;e--){try{t.bufferReducedPrecision(e)}catch(e){if(!(e instanceof we))throw e;t._saveException=e}if(null!==t._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=di.precisionScaleFactor(this._argGeom,this._distance,n),r=new fe(i);this.bufferFixedPrecision(r)}},di.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===fe.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},di.prototype.setQuadrantSegments=function(t){this._bufParams.setQuadrantSegments(t)},di.prototype.bufferOriginalPrecision=function(){try{var t=new ii(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof $))throw t;this._saveException=t}},di.prototype.getResultGeometry=function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry},di.prototype.setEndCapStyle=function(t){this._bufParams.setEndCapStyle(t)},di.prototype.interfaces_=function(){return[]},di.prototype.getClass=function(){return di},di.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new di(t).getResultGeometry(e)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1],r=arguments[2],o=new di(n);o.setQuadrantSegments(r);return o.getResultGeometry(i)}if(arguments[2]instanceof Cn&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],u=arguments[2];return new di(s,u).getResultGeometry(a)}}else if(4===arguments.length){var l=arguments[0],c=arguments[1],p=arguments[2],h=arguments[3],f=new di(l);f.setQuadrantSegments(p),f.setEndCapStyle(h);return f.getResultGeometry(c)}},di.precisionScaleFactor=function(t,e,n){var i=t.getEnvelopeInternal(),r=R.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,o)},yi.CAP_ROUND.get=function(){return Cn.CAP_ROUND},yi.CAP_BUTT.get=function(){return Cn.CAP_FLAT},yi.CAP_FLAT.get=function(){return Cn.CAP_FLAT},yi.CAP_SQUARE.get=function(){return Cn.CAP_SQUARE},yi.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(di,yi);var _i=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};_i.prototype.getCoordinates=function(){return this._pt},_i.prototype.getCoordinate=function(t){return this._pt[t]},_i.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},_i.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},_i.prototype.getDistance=function(){return this._distance},_i.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},_i.prototype.interfaces_=function(){return[]},_i.prototype.getClass=function(){return _i};var mi=function(){};mi.prototype.interfaces_=function(){return[]},mi.prototype.getClass=function(){return mi},mi.computeDistance=function(){if(arguments[2]instanceof _i&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=t.getCoordinates(),r=new dn,o=0;o<i.length-1;o++){r.setCoordinates(i[o],i[o+1]);var s=r.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof _i&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];mi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)mi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof _i&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)mi.computeDistance(p,h,f);else if(p instanceof $t)mi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);mi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof _i&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var vi=function(t){this._maxPtDist=new _i,this._inputGeom=t||null},Ii={MaxPointDistanceFilter:{configurable:!0},MaxMidpointDistanceFilter:{configurable:!0}};vi.prototype.computeMaxMidpointDistance=function(t){var e=new xi(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.computeMaxVertexDistance=function(t){var e=new Ei(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.findDistance=function(t){return this.computeMaxVertexDistance(t),this.computeMaxMidpointDistance(t),this._maxPtDist.getDistance()},vi.prototype.getDistancePoints=function(){return this._maxPtDist},vi.prototype.interfaces_=function(){return[]},vi.prototype.getClass=function(){return vi},Ii.MaxPointDistanceFilter.get=function(){return Ei},Ii.MaxMidpointDistanceFilter.get=function(){return xi},Object.defineProperties(vi,Ii);var Ei=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};Ei.prototype.filter=function(t){this._minPtDist.initialize(),mi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ei.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ei.prototype.interfaces_=function(){return[ft]},Ei.prototype.getClass=function(){return Ei};var xi=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};xi.prototype.filter=function(t,e){if(0===e)return null;var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=new C((n.x+i.x)/2,(n.y+i.y)/2);this._minPtDist.initialize(),mi.computeDistance(this._geom,r,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},xi.prototype.isDone=function(){return!1},xi.prototype.isGeometryChanged=function(){return!1},xi.prototype.getMaxPointDistance=function(){return this._maxPtDist},xi.prototype.interfaces_=function(){return[Ut]},xi.prototype.getClass=function(){return xi};var Ni=function(t){this._comps=t||null};Ni.prototype.filter=function(t){t instanceof $t&&this._comps.add(t)},Ni.prototype.interfaces_=function(){return[Vt]},Ni.prototype.getClass=function(){return Ni},Ni.getPolygons=function(){if(1===arguments.length){var t=arguments[0];return Ni.getPolygons(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof $t?n.add(e):e instanceof zt&&e.apply(new Ni(n)),n}};var Ci=function(){if(this._lines=null,this._isForcedToLineString=!1,1===arguments.length){var t=arguments[0];this._lines=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._lines=e,this._isForcedToLineString=n}};Ci.prototype.filter=function(t){if(this._isForcedToLineString&&t instanceof ee){var e=t.getFactory().createLineString(t.getCoordinateSequence());return this._lines.add(e),null}t instanceof Kt&&this._lines.add(t)},Ci.prototype.setForceToLineString=function(t){this._isForcedToLineString=t},Ci.prototype.interfaces_=function(){return[lt]},Ci.prototype.getClass=function(){return Ci},Ci.getGeometry=function(){if(1===arguments.length){var t=arguments[0];return t.getFactory().buildGeometry(Ci.getLines(t))}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().buildGeometry(Ci.getLines(e,n))}},Ci.getLines=function(){if(1===arguments.length){var t=arguments[0];return Ci.getLines(t,!1)}if(2===arguments.length){if(T(arguments[0],It)&&T(arguments[1],It)){for(var e=arguments[0],n=arguments[1],i=e.iterator();i.hasNext();){var r=i.next();Ci.getLines(r,n)}return n}if(arguments[0]instanceof ct&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1],a=new Nt;return o.apply(new Ci(a,s)),a}if(arguments[0]instanceof ct&&T(arguments[1],It)){var u=arguments[0],l=arguments[1];return u instanceof Kt?l.add(u):u.apply(new Ci(l)),l}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&T(arguments[0],It)&&T(arguments[1],It)){for(var c=arguments[0],p=arguments[1],h=arguments[2],f=c.iterator();f.hasNext();){var g=f.next();Ci.getLines(g,p,h)}return p}if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof ct&&T(arguments[1],It)){var d=arguments[0],y=arguments[1],_=arguments[2];return d.apply(new Ci(y,_)),y}}};var Si=function(){if(this._boundaryRule=gt.OGC_SFS_BOUNDARY_RULE,this._isIn=null,this._numBoundaries=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];if(null===t)throw new m(\"Rule must be non-null\");this._boundaryRule=t}};Si.prototype.locateInternal=function(){if(arguments[0]instanceof C&&arguments[1]instanceof $t){var t=arguments[0],e=arguments[1];if(e.isEmpty())return w.EXTERIOR;var n=e.getExteriorRing(),i=this.locateInPolygonRing(t,n);if(i===w.EXTERIOR)return w.EXTERIOR;if(i===w.BOUNDARY)return w.BOUNDARY;for(var r=0;r<e.getNumInteriorRing();r++){var o=e.getInteriorRingN(r),s=this.locateInPolygonRing(t,o);if(s===w.INTERIOR)return w.EXTERIOR;if(s===w.BOUNDARY)return w.BOUNDARY}return w.INTERIOR}if(arguments[0]instanceof C&&arguments[1]instanceof Kt){var a=arguments[0],u=arguments[1];if(!u.getEnvelopeInternal().intersects(a))return w.EXTERIOR;var l=u.getCoordinates();return u.isClosed()||!a.equals(l[0])&&!a.equals(l[l.length-1])?at.isOnLine(a,l)?w.INTERIOR:w.EXTERIOR:w.BOUNDARY}if(arguments[0]instanceof C&&arguments[1]instanceof Qt){var c=arguments[0];return arguments[1].getCoordinate().equals2D(c)?w.INTERIOR:w.EXTERIOR}},Si.prototype.locateInPolygonRing=function(t,e){return e.getEnvelopeInternal().intersects(t)?at.locatePointInRing(t,e.getCoordinates()):w.EXTERIOR},Si.prototype.intersects=function(t,e){return this.locate(t,e)!==w.EXTERIOR},Si.prototype.updateLocationInfo=function(t){t===w.INTERIOR&&(this._isIn=!0),t===w.BOUNDARY&&this._numBoundaries++},Si.prototype.computeLocation=function(t,e){if(e instanceof Qt&&this.updateLocationInfo(this.locateInternal(t,e)),e instanceof Kt)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof $t)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof Xt)for(var n=e,i=0;i<n.getNumGeometries();i++){var r=n.getGeometryN(i);this.updateLocationInfo(this.locateInternal(t,r))}else if(e instanceof ne)for(var o=e,s=0;s<o.getNumGeometries();s++){var a=o.getGeometryN(s);this.updateLocationInfo(this.locateInternal(t,a))}else if(e instanceof zt)for(var u=new Un(e);u.hasNext();){var l=u.next();l!==e&&this.computeLocation(t,l)}},Si.prototype.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:e instanceof Kt?this.locateInternal(t,e):e instanceof $t?this.locateInternal(t,e):(this._isIn=!1,this._numBoundaries=0,this.computeLocation(t,e),this._boundaryRule.isInBoundary(this._numBoundaries)?w.BOUNDARY:this._numBoundaries>0||this._isIn?w.INTERIOR:w.EXTERIOR)},Si.prototype.interfaces_=function(){return[]},Si.prototype.getClass=function(){return Si};var Li=function t(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){var e=arguments[0],n=arguments[1];t.call(this,e,t.INSIDE_AREA,n)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._component=i,this._segIndex=r,this._pt=o}},bi={INSIDE_AREA:{configurable:!0}};Li.prototype.isInsideArea=function(){return this._segIndex===Li.INSIDE_AREA},Li.prototype.getCoordinate=function(){return this._pt},Li.prototype.getGeometryComponent=function(){return this._component},Li.prototype.getSegmentIndex=function(){return this._segIndex},Li.prototype.interfaces_=function(){return[]},Li.prototype.getClass=function(){return Li},bi.INSIDE_AREA.get=function(){return-1},Object.defineProperties(Li,bi);var wi=function(t){this._pts=t||null};wi.prototype.filter=function(t){t instanceof Qt&&this._pts.add(t)},wi.prototype.interfaces_=function(){return[Vt]},wi.prototype.getClass=function(){return wi},wi.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Qt?$e.singletonList(t):wi.getPoints(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Qt?n.add(e):e instanceof zt&&e.apply(new wi(n)),n}};var Oi=function(){this._locations=null;var t=arguments[0];this._locations=t};Oi.prototype.filter=function(t){(t instanceof Qt||t instanceof Kt||t instanceof $t)&&this._locations.add(new Li(t,0,t.getCoordinate()))},Oi.prototype.interfaces_=function(){return[Vt]},Oi.prototype.getClass=function(){return Oi},Oi.getLocations=function(t){var e=new Nt;return t.apply(new Oi(e)),e};var Ti=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new Si,this._minDistanceLocation=null,this._minDistance=v.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];this._geom=[t,e],this._terminateDistance=0}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=n,this._geom[1]=i,this._terminateDistance=r}};Ti.prototype.computeContainmentDistance=function(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=1-e,r=Ni.getPolygons(this._geom[e]);if(r.size()>0){var o=Oi.getLocations(this._geom[i]);if(this.computeContainmentDistance(o,r,n),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[i]=n[0],this._minDistanceLocation[e]=n[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&T(arguments[0],xt)&&T(arguments[1],xt)){for(var s=arguments[0],a=arguments[1],u=arguments[2],l=0;l<s.size();l++)for(var c=s.get(l),p=0;p<a.size();p++)if(this.computeContainmentDistance(c,a.get(p),u),this._minDistance<=this._terminateDistance)return null}else if(arguments[2]instanceof Array&&arguments[0]instanceof Li&&arguments[1]instanceof $t){var h=arguments[0],f=arguments[1],g=arguments[2],d=h.getCoordinate();if(w.EXTERIOR!==this._ptLocator.locate(d,f))return this._minDistance=0,g[0]=h,g[1]=new Li(f,d),null}},Ti.prototype.computeMinDistanceLinesPoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.computeFacetDistance=function(){var t=new Array(2).fill(null),e=Ci.getLines(this._geom[0]),n=Ci.getLines(this._geom[1]),i=wi.getPoints(this._geom[0]),r=wi.getPoints(this._geom[1]);return this.computeMinDistanceLines(e,n,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(e,r,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(n,i,t),this.updateMinDistance(t,!0),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistancePoints(i,r,t),void this.updateMinDistance(t,!1))))},Ti.prototype.nearestLocations=function(){return this.computeMinDistance(),this._minDistanceLocation},Ti.prototype.updateMinDistance=function(t,e){if(null===t[0])return null;e?(this._minDistanceLocation[0]=t[1],this._minDistanceLocation[1]=t[0]):(this._minDistanceLocation[0]=t[0],this._minDistanceLocation[1]=t[1])},Ti.prototype.nearestPoints=function(){this.computeMinDistance();return[this._minDistanceLocation[0].getCoordinate(),this._minDistanceLocation[1].getCoordinate()]},Ti.prototype.computeMinDistance=function(){if(0===arguments.length){if(null!==this._minDistanceLocation)return null;if(this._minDistanceLocation=new Array(2).fill(null),this.computeContainmentDistance(),this._minDistance<=this._terminateDistance)return null;this.computeFacetDistance()}else if(3===arguments.length)if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Qt){var t=arguments[0],e=arguments[1],n=arguments[2];if(t.getEnvelopeInternal().distance(e.getEnvelopeInternal())>this._minDistance)return null;for(var i=t.getCoordinates(),r=e.getCoordinate(),o=0;o<i.length-1;o++){var s=at.distancePointLine(r,i[o],i[o+1]);if(s<this._minDistance){this._minDistance=s;var a=new dn(i[o],i[o+1]).closestPoint(r);n[0]=new Li(t,o,a),n[1]=new Li(e,0,r)}if(this._minDistance<=this._terminateDistance)return null}}else if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Kt){var u=arguments[0],l=arguments[1],c=arguments[2];if(u.getEnvelopeInternal().distance(l.getEnvelopeInternal())>this._minDistance)return null;for(var p=u.getCoordinates(),h=l.getCoordinates(),f=0;f<p.length-1;f++)for(var g=0;g<h.length-1;g++){var d=at.distanceLineLine(p[f],p[f+1],h[g],h[g+1]);if(d<this._minDistance){this._minDistance=d;var y=new dn(p[f],p[f+1]),_=new dn(h[g],h[g+1]),m=y.closestPoints(_);c[0]=new Li(u,f,m[0]),c[1]=new Li(l,g,m[1])}if(this._minDistance<=this._terminateDistance)return null}}},Ti.prototype.computeMinDistancePoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o),a=r.getCoordinate().distance(s.getCoordinate());if(a<this._minDistance&&(this._minDistance=a,n[0]=new Li(r,0,r.getCoordinate()),n[1]=new Li(s,0,s.getCoordinate())),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.distance=function(){if(null===this._geom[0]||null===this._geom[1])throw new m(\"null geometries are not supported\");return this._geom[0].isEmpty()||this._geom[1].isEmpty()?0:(this.computeMinDistance(),this._minDistance)},Ti.prototype.computeMinDistanceLines=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.interfaces_=function(){return[]},Ti.prototype.getClass=function(){return Ti},Ti.distance=function(t,e){return new Ti(t,e).distance()},Ti.isWithinDistance=function(t,e,n){return new Ti(t,e,n).distance()<=n},Ti.nearestPoints=function(t,e){return new Ti(t,e).nearestPoints()};var Ri=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};Ri.prototype.getCoordinates=function(){return this._pt},Ri.prototype.getCoordinate=function(t){return this._pt[t]},Ri.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},Ri.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},Ri.prototype.toString=function(){return Z.toLineString(this._pt[0],this._pt[1])},Ri.prototype.getDistance=function(){return this._distance},Ri.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},Ri.prototype.interfaces_=function(){return[]},Ri.prototype.getClass=function(){return Ri};var Pi=function(){};Pi.prototype.interfaces_=function(){return[]},Pi.prototype.getClass=function(){return Pi},Pi.computeDistance=function(){if(arguments[2]instanceof Ri&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=new dn,r=t.getCoordinates(),o=0;o<r.length-1;o++){i.setCoordinates(r[o],r[o+1]);var s=i.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];Pi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)Pi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)Pi.computeDistance(p,h,f);else if(p instanceof $t)Pi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);Pi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var Di=function(){this._g0=null,this._g1=null,this._ptDist=new Ri,this._densifyFrac=0;var t=arguments[0],e=arguments[1];this._g0=t,this._g1=e},Mi={MaxPointDistanceFilter:{configurable:!0},MaxDensifiedByFractionDistanceFilter:{configurable:!0}};Di.prototype.getCoordinates=function(){return this._ptDist.getCoordinates()},Di.prototype.setDensifyFraction=function(t){if(t>1||t<=0)throw new m(\"Fraction is not in range (0.0 - 1.0]\");this._densifyFrac=t},Di.prototype.compute=function(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)},Di.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},Di.prototype.computeOrientedDistance=function(t,e,n){var i=new Ai(e);if(t.apply(i),n.setMaximum(i.getMaxPointDistance()),this._densifyFrac>0){var r=new Fi(e,this._densifyFrac);t.apply(r),n.setMaximum(r.getMaxPointDistance())}},Di.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},Di.prototype.interfaces_=function(){return[]},Di.prototype.getClass=function(){return Di},Di.distance=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new Di(t,e).distance()}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new Di(n,i);return o.setDensifyFraction(r),o.distance()}},Mi.MaxPointDistanceFilter.get=function(){return Ai},Mi.MaxDensifiedByFractionDistanceFilter.get=function(){return Fi},Object.defineProperties(Di,Mi);var Ai=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._euclideanDist=new Pi,this._geom=null;var t=arguments[0];this._geom=t};Ai.prototype.filter=function(t){this._minPtDist.initialize(),Pi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ai.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ai.prototype.interfaces_=function(){return[ft]},Ai.prototype.getClass=function(){return Ai};var Fi=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._geom=null,this._numSubSegs=0;var t=arguments[0],e=arguments[1];this._geom=t,this._numSubSegs=Math.trunc(Math.round(1/e))};Fi.prototype.filter=function(t,e){if(0===e)return null;for(var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=(i.x-n.x)/this._numSubSegs,o=(i.y-n.y)/this._numSubSegs,s=0;s<this._numSubSegs;s++){var a=n.x+s*r,u=n.y+s*o,l=new C(a,u);this._minPtDist.initialize(),Pi.computeDistance(this._geom,l,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)}},Fi.prototype.isDone=function(){return!1},Fi.prototype.isGeometryChanged=function(){return!1},Fi.prototype.getMaxPointDistance=function(){return this._maxPtDist},Fi.prototype.interfaces_=function(){return[Ut]},Fi.prototype.getClass=function(){return Fi};var Gi=function(t,e,n){this._minValidDistance=null,this._maxValidDistance=null,this._minDistanceFound=null,this._maxDistanceFound=null,this._isValid=!0,this._errMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._bufDistance=e||null,this._result=n||null},qi={VERBOSE:{configurable:!0},MAX_DISTANCE_DIFF_FRAC:{configurable:!0}};Gi.prototype.checkMaximumDistance=function(t,e,n){var i=new Di(e,t);if(i.setDensifyFraction(.25),this._maxDistanceFound=i.orientedDistance(),this._maxDistanceFound>n){this._isValid=!1;var r=i.getCoordinates();this._errorLocation=r[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too large (\"+this._maxDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\")\"}},Gi.prototype.isValid=function(){var t=Math.abs(this._bufDistance),e=Gi.MAX_DISTANCE_DIFF_FRAC*t;return this._minValidDistance=t-e,this._maxValidDistance=t+e,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Gi.VERBOSE&&Y.out.println(\"Min Dist= \"+this._minDistanceFound+\"  err= \"+(1-this._minDistanceFound/this._bufDistance)+\"  Max Dist= \"+this._maxDistanceFound+\"  err= \"+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Gi.prototype.checkNegativeValid=function(){if(!(this._input instanceof $t||this._input instanceof ne||this._input instanceof zt))return null;var t=this.getPolygonLines(this._input);if(this.checkMinimumDistance(t,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(t,this._result,this._maxValidDistance)},Gi.prototype.getErrorIndicator=function(){return this._errorIndicator},Gi.prototype.checkMinimumDistance=function(t,e,n){var i=new Ti(t,e,n);if(this._minDistanceFound=i.distance(),this._minDistanceFound<n){this._isValid=!1;var r=i.nearestPoints();this._errorLocation=i.nearestPoints()[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too small (\"+this._minDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\" )\"}},Gi.prototype.checkPositiveValid=function(){var t=this._result.getBoundary();if(this.checkMinimumDistance(this._input,t,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(this._input,t,this._maxValidDistance)},Gi.prototype.getErrorLocation=function(){return this._errorLocation},Gi.prototype.getPolygonLines=function(t){for(var e=new Nt,n=new Ci(e),i=Ni.getPolygons(t).iterator();i.hasNext();){i.next().apply(n)}return t.getFactory().buildGeometry(e)},Gi.prototype.getErrorMessage=function(){return this._errMsg},Gi.prototype.interfaces_=function(){return[]},Gi.prototype.getClass=function(){return Gi},qi.VERBOSE.get=function(){return!1},qi.MAX_DISTANCE_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Gi,qi);var Bi=function(t,e,n){this._isValid=!0,this._errorMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._distance=e||null,this._result=n||null},Vi={VERBOSE:{configurable:!0},MAX_ENV_DIFF_FRAC:{configurable:!0}};Bi.prototype.isValid=function(){return this.checkPolygonal(),this._isValid?(this.checkExpectedEmpty(),this._isValid?(this.checkEnvelope(),this._isValid?(this.checkArea(),this._isValid?(this.checkDistance(),this._isValid):this._isValid):this._isValid):this._isValid):this._isValid},Bi.prototype.checkEnvelope=function(){if(this._distance<0)return null;var t=this._distance*Bi.MAX_ENV_DIFF_FRAC;0===t&&(t=.001);var e=new j(this._input.getEnvelopeInternal());e.expandBy(this._distance);var n=new j(this._result.getEnvelopeInternal());n.expandBy(t),n.contains(e)||(this._isValid=!1,this._errorMsg=\"Buffer envelope is incorrect\",this._errorIndicator=this._input.getFactory().toGeometry(n)),this.report(\"Envelope\")},Bi.prototype.checkDistance=function(){var t=new Gi(this._input,this._distance,this._result);t.isValid()||(this._isValid=!1,this._errorMsg=t.getErrorMessage(),this._errorLocation=t.getErrorLocation(),this._errorIndicator=t.getErrorIndicator()),this.report(\"Distance\")},Bi.prototype.checkArea=function(){var t=this._input.getArea(),e=this._result.getArea();this._distance>0&&t>e&&(this._isValid=!1,this._errorMsg=\"Area of positive buffer is smaller than input\",this._errorIndicator=this._result),this._distance<0&&t<e&&(this._isValid=!1,this._errorMsg=\"Area of negative buffer is larger than input\",this._errorIndicator=this._result),this.report(\"Area\")},Bi.prototype.checkPolygonal=function(){this._result instanceof $t||this._result instanceof ne||(this._isValid=!1),this._errorMsg=\"Result is not polygonal\",this._errorIndicator=this._result,this.report(\"Polygonal\")},Bi.prototype.getErrorIndicator=function(){return this._errorIndicator},Bi.prototype.getErrorLocation=function(){return this._errorLocation},Bi.prototype.checkExpectedEmpty=function(){return this._input.getDimension()>=2?null:this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg=\"Result is non-empty\",this._errorIndicator=this._result),void this.report(\"ExpectedEmpty\"))},Bi.prototype.report=function(t){if(!Bi.VERBOSE)return null;Y.out.println(\"Check \"+t+\": \"+(this._isValid?\"passed\":\"FAILED\"))},Bi.prototype.getErrorMessage=function(){return this._errorMsg},Bi.prototype.interfaces_=function(){return[]},Bi.prototype.getClass=function(){return Bi},Bi.isValidMsg=function(t,e,n){var i=new Bi(t,e,n);return i.isValid()?null:i.getErrorMessage()},Bi.isValid=function(t,e,n){return!!new Bi(t,e,n).isValid()},Vi.VERBOSE.get=function(){return!1},Vi.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Bi,Vi);var Ui=function(){this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};Ui.prototype.getCoordinates=function(){return this._pts},Ui.prototype.size=function(){return this._pts.length},Ui.prototype.getCoordinate=function(t){return this._pts[t]},Ui.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Ui.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:pn.octant(this.getCoordinate(t),this.getCoordinate(t+1))},Ui.prototype.setData=function(t){this._data=t},Ui.prototype.getData=function(){return this._data},Ui.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},Ui.prototype.interfaces_=function(){return[hn]},Ui.prototype.getClass=function(){return Ui};var zi=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new Nt,this._intersectionCount=0,this._keepIntersections=!0;var t=arguments[0];this._li=t,this._interiorIntersection=null};zi.prototype.getInteriorIntersection=function(){return this._interiorIntersection},zi.prototype.setCheckEndSegmentsOnly=function(t){this._isCheckEndSegmentsOnly=t},zi.prototype.getIntersectionSegments=function(){return this._intSegments},zi.prototype.count=function(){return this._intersectionCount},zi.prototype.getIntersections=function(){return this._intersections},zi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},zi.prototype.setKeepIntersections=function(t){this._keepIntersections=t},zi.prototype.processIntersections=function(t,e,n,i){if(!this._findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===i)return null;if(this._isCheckEndSegmentsOnly){if(!(this.isEndSegment(t,e)||this.isEndSegment(n,i)))return null}var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=r,this._intSegments[1]=o,this._intSegments[2]=s,this._intSegments[3]=a,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},zi.prototype.isEndSegment=function(t,e){return 0===e||e>=t.size()-2},zi.prototype.hasIntersection=function(){return null!==this._interiorIntersection},zi.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},zi.prototype.interfaces_=function(){return[Wn]},zi.prototype.getClass=function(){return zi},zi.createAllIntersectionsFinder=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e},zi.createAnyIntersectionFinder=function(t){return new zi(t)},zi.createIntersectionCounter=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e};var Xi=function(){this._li=new rt,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;var t=arguments[0];this._segStrings=t};Xi.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},Xi.prototype.getIntersections=function(){return this._segInt.getIntersections()},Xi.prototype.isValid=function(){return this.execute(),this._isValid},Xi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Xi.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new zi(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new xn;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},Xi.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new we(this.getErrorMessage(),this._segInt.getInteriorIntersection())},Xi.prototype.getErrorMessage=function(){if(this._isValid)return\"no intersections found\";var t=this._segInt.getIntersectionSegments();return\"found non-noded intersection between \"+Z.toLineString(t[0],t[1])+\" and \"+Z.toLineString(t[2],t[3])},Xi.prototype.interfaces_=function(){return[]},Xi.prototype.getClass=function(){return Xi},Xi.computeIntersections=function(t){var e=new Xi(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()};var Yi=function t(){this._nv=null;var e=arguments[0];this._nv=new Xi(t.toSegmentStrings(e))};Yi.prototype.checkValid=function(){this._nv.checkValid()},Yi.prototype.interfaces_=function(){return[]},Yi.prototype.getClass=function(){return Yi},Yi.toSegmentStrings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Ui(i.getCoordinates(),i))}return e},Yi.checkValid=function(t){new Yi(t).checkValid()};var ki=function(t){this._mapOp=t};ki.prototype.map=function(t){for(var e=new Nt,n=0;n<t.getNumGeometries();n++){var i=this._mapOp.map(t.getGeometryN(n));i.isEmpty()||e.add(i)}return t.getFactory().createGeometryCollection(_e.toGeometryArray(e))},ki.prototype.interfaces_=function(){return[]},ki.prototype.getClass=function(){return ki},ki.map=function(t,e){return new ki(e).map(t)};var ji=function(){this._op=null,this._geometryFactory=null,this._ptLocator=null,this._lineEdgesList=new Nt,this._resultLineList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._op=t,this._geometryFactory=e,this._ptLocator=n};ji.prototype.collectLines=function(t){for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next();this.collectLineEdge(n,t,this._lineEdgesList),this.collectBoundaryTouchEdge(n,t,this._lineEdgesList)}},ji.prototype.labelIsolatedLine=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._op.getArgGeometry(e));t.getLabel().setLocation(e,n)},ji.prototype.build=function(t){return this.findCoveredLineEdges(),this.collectLines(t),this.buildLines(t),this._resultLineList},ji.prototype.collectLineEdge=function(t,e,n){var i=t.getLabel(),r=t.getEdge();t.isLineEdge()&&(t.isVisited()||!Lr.isResultOfOp(i,e)||r.isCovered()||(n.add(r),t.setVisitedEdge(!0)))},ji.prototype.findCoveredLineEdges=function(){for(var t=this._op.getGraph().getNodes().iterator();t.hasNext();){t.next().getEdges().findCoveredLineEdges()}for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next(),i=n.getEdge();if(n.isLineEdge()&&!i.isCoveredSet()){var r=this._op.isCoveredByA(n.getCoordinate());i.setCovered(r)}}},ji.prototype.labelIsolatedLines=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getLabel();n.isIsolated()&&(i.isNull(0)?this.labelIsolatedLine(n,0):this.labelIsolatedLine(n,1))}},ji.prototype.buildLines=function(t){for(var e=this._lineEdgesList.iterator();e.hasNext();){var n=e.next(),i=this._geometryFactory.createLineString(n.getCoordinates());this._resultLineList.add(i),n.setInResult(!0)}},ji.prototype.collectBoundaryTouchEdge=function(t,e,n){var i=t.getLabel();return t.isLineEdge()?null:t.isVisited()?null:t.isInteriorAreaEdge()?null:t.getEdge().isInResult()?null:(et.isTrue(!(t.isInResult()||t.getSym().isInResult())||!t.getEdge().isInResult()),void(Lr.isResultOfOp(i,e)&&e===Lr.INTERSECTION&&(n.add(t.getEdge()),t.setVisitedEdge(!0))))},ji.prototype.interfaces_=function(){return[]},ji.prototype.getClass=function(){return ji};var Hi=function(){this._op=null,this._geometryFactory=null,this._resultPointList=new Nt;var t=arguments[0],e=arguments[1];this._op=t,this._geometryFactory=e};Hi.prototype.filterCoveredNodeToPoint=function(t){var e=t.getCoordinate();if(!this._op.isCoveredByLA(e)){var n=this._geometryFactory.createPoint(e);this._resultPointList.add(n)}},Hi.prototype.extractNonCoveredResultNodes=function(t){for(var e=this._op.getGraph().getNodes().iterator();e.hasNext();){var n=e.next();if(!n.isInResult()&&(!n.isIncidentEdgeInResult()&&(0===n.getEdges().getDegree()||t===Lr.INTERSECTION))){var i=n.getLabel();Lr.isResultOfOp(i,t)&&this.filterCoveredNodeToPoint(n)}}},Hi.prototype.build=function(t){return this.extractNonCoveredResultNodes(t),this._resultPointList},Hi.prototype.interfaces_=function(){return[]},Hi.prototype.getClass=function(){return Hi};var Wi=function(){this._inputGeom=null,this._factory=null,this._pruneEmptyGeometry=!0,this._preserveGeometryCollectionType=!0,this._preserveCollections=!1,this._preserveType=!1};Wi.prototype.transformPoint=function(t,e){return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformPolygon=function(t,e){var n=!0,i=this.transformLinearRing(t.getExteriorRing(),t);null!==i&&i instanceof ee&&!i.isEmpty()||(n=!1);for(var r=new Nt,o=0;o<t.getNumInteriorRing();o++){var s=this.transformLinearRing(t.getInteriorRingN(o),t);null===s||s.isEmpty()||(s instanceof ee||(n=!1),r.add(s))}if(n)return this._factory.createPolygon(i,r.toArray([]));var a=new Nt;return null!==i&&a.add(i),a.addAll(r),this._factory.buildGeometry(a)},Wi.prototype.createCoordinateSequence=function(t){return this._factory.getCoordinateSequenceFactory().create(t)},Wi.prototype.getInputGeometry=function(){return this._inputGeom},Wi.prototype.transformMultiLineString=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformLineString(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformCoordinates=function(t,e){return this.copy(t)},Wi.prototype.transformLineString=function(t,e){return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformMultiPoint=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPoint(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformMultiPolygon=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPolygon(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.copy=function(t){return t.copy()},Wi.prototype.transformGeometryCollection=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transform(t.getGeometryN(i));null!==r&&(this._pruneEmptyGeometry&&r.isEmpty()||n.add(r))}return this._preserveGeometryCollectionType?this._factory.createGeometryCollection(_e.toGeometryArray(n)):this._factory.buildGeometry(n)},Wi.prototype.transform=function(t){if(this._inputGeom=t,this._factory=t.getFactory(),t instanceof Qt)return this.transformPoint(t,null);if(t instanceof te)return this.transformMultiPoint(t,null);if(t instanceof ee)return this.transformLinearRing(t,null);if(t instanceof Kt)return this.transformLineString(t,null);if(t instanceof Xt)return this.transformMultiLineString(t,null);if(t instanceof $t)return this.transformPolygon(t,null);if(t instanceof ne)return this.transformMultiPolygon(t,null);if(t instanceof zt)return this.transformGeometryCollection(t,null);throw new m(\"Unknown Geometry subtype: \"+t.getClass().getName())},Wi.prototype.transformLinearRing=function(t,e){var n=this.transformCoordinates(t.getCoordinateSequence(),t);if(null===n)return this._factory.createLinearRing(null);var i=n.size();return i>0&&i<4&&!this._preserveType?this._factory.createLineString(n):this._factory.createLinearRing(n)},Wi.prototype.interfaces_=function(){return[]},Wi.prototype.getClass=function(){return Wi};var Ki=function t(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new dn,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Kt&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];t.call(this,e.getCoordinates(),n)}else if(arguments[0]instanceof Array&&\"number\"==typeof arguments[1]){var i=arguments[0],r=arguments[1];this._srcPts=i,this._isClosed=t.isClosed(i),this._snapTolerance=r}};Ki.prototype.snapVertices=function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),i=0;i<n;i++){var r=t.get(i),o=this.findSnapForVertex(r,e);null!==o&&(t.set(i,new C(o)),0===i&&this._isClosed&&t.set(t.size()-1,new C(o)))}},Ki.prototype.findSnapForVertex=function(t,e){for(var n=0;n<e.length;n++){if(t.equals2D(e[n]))return null;if(t.distance(e[n])<this._snapTolerance)return e[n]}return null},Ki.prototype.snapTo=function(t){var e=new St(this._srcPts);this.snapVertices(e,t),this.snapSegments(e,t);return e.toCoordinateArray()},Ki.prototype.snapSegments=function(t,e){if(0===e.length)return null;var n=e.length;e[0].equals2D(e[e.length-1])&&(n=e.length-1);for(var i=0;i<n;i++){var r=e[i],o=this.findSegmentIndexToSnap(r,t);o>=0&&t.add(o+1,new C(r),!1)}},Ki.prototype.findSegmentIndexToSnap=function(t,e){for(var n=v.MAX_VALUE,i=-1,r=0;r<e.size()-1;r++){if(this._seg.p0=e.get(r),this._seg.p1=e.get(r+1),this._seg.p0.equals2D(t)||this._seg.p1.equals2D(t)){if(this._allowSnappingToSourceVertices)continue;return-1}var o=this._seg.distance(t);o<this._snapTolerance&&o<n&&(n=o,i=r)}return i},Ki.prototype.setAllowSnappingToSourceVertices=function(t){this._allowSnappingToSourceVertices=t},Ki.prototype.interfaces_=function(){return[]},Ki.prototype.getClass=function(){return Ki},Ki.isClosed=function(t){return!(t.length<=1)&&t[0].equals2D(t[t.length-1])};var Ji=function(t){this._srcGeom=t||null},Qi={SNAP_PRECISION_FACTOR:{configurable:!0}};Ji.prototype.snapTo=function(t,e){var n=this.extractTargetCoordinates(t);return new Zi(e,n).transform(this._srcGeom)},Ji.prototype.snapToSelf=function(t,e){var n=this.extractTargetCoordinates(this._srcGeom),i=new Zi(t,n,!0).transform(this._srcGeom),r=i;return e&&T(r,Zt)&&(r=i.buffer(0)),r},Ji.prototype.computeSnapTolerance=function(t){return this.computeMinimumSegmentLength(t)/10},Ji.prototype.extractTargetCoordinates=function(t){for(var e=new f,n=t.getCoordinates(),i=0;i<n.length;i++)e.add(n[i]);return e.toArray(new Array(0).fill(null))},Ji.prototype.computeMinimumSegmentLength=function(t){for(var e=v.MAX_VALUE,n=0;n<t.length-1;n++){var i=t[n].distance(t[n+1]);i<e&&(e=i)}return e},Ji.prototype.interfaces_=function(){return[]},Ji.prototype.getClass=function(){return Ji},Ji.snap=function(t,e,n){var i=new Array(2).fill(null),r=new Ji(t);i[0]=r.snapTo(e,n);var o=new Ji(e);return i[1]=o.snapTo(i[0],n),i},Ji.computeOverlaySnapTolerance=function(){if(1===arguments.length){var t=arguments[0],e=Ji.computeSizeBasedSnapTolerance(t),n=t.getPrecisionModel();if(n.getType()===fe.FIXED){var i=1/n.getScale()*2/1.415;i>e&&(e=i)}return e}if(2===arguments.length){var r=arguments[0],o=arguments[1];return Math.min(Ji.computeOverlaySnapTolerance(r),Ji.computeOverlaySnapTolerance(o))}},Ji.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*Ji.SNAP_PRECISION_FACTOR},Ji.snapToSelf=function(t,e,n){return new Ji(t).snapToSelf(e,n)},Qi.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties(Ji,Qi);var Zi=function(t){function e(e,n,i){t.call(this),this._snapTolerance=e||null,this._snapPts=n||null,this._isSelfSnap=void 0!==i&&i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapLine=function(t,e){var n=new Ki(t,this._snapTolerance);return n.setAllowSnappingToSourceVertices(this._isSelfSnap),n.snapTo(e)},e.prototype.transformCoordinates=function(t,e){var n=t.toCoordinateArray(),i=this.snapLine(n,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Wi),$i=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};$i.prototype.getCommon=function(){return v.longBitsToDouble(this._commonBits)},$i.prototype.add=function(t){var e=v.doubleToLongBits(t);if(this._isFirst)return this._commonBits=e,this._commonSignExp=$i.signExpBits(this._commonBits),this._isFirst=!1,null;if($i.signExpBits(e)!==this._commonSignExp)return this._commonBits=0,null;this._commonMantissaBitsCount=$i.numCommonMostSigMantissaBits(this._commonBits,e),this._commonBits=$i.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))},$i.prototype.toString=function(){if(1===arguments.length){var t=arguments[0],e=v.longBitsToDouble(t),n=\"0000000000000000000000000000000000000000000000000000000000000000\"+v.toBinaryString(t),i=n.substring(n.length-64);return i.substring(0,1)+\"  \"+i.substring(1,12)+\"(exp) \"+i.substring(12)+\" [ \"+e+\" ]\"}},$i.prototype.interfaces_=function(){return[]},$i.prototype.getClass=function(){return $i},$i.getBit=function(t,e){return 0!=(t&1<<e)?1:0},$i.signExpBits=function(t){return t>>52},$i.zeroLowerBits=function(t,e){return t&~((1<<e)-1)},$i.numCommonMostSigMantissaBits=function(t,e){for(var n=0,i=52;i>=0;i--){if($i.getBit(t,i)!==$i.getBit(e,i))return n;n++}return 52};var tr=function(){this._commonCoord=null,this._ccFilter=new nr},er={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};tr.prototype.addCommonBits=function(t){var e=new ir(this._commonCoord);t.apply(e),t.geometryChanged()},tr.prototype.removeCommonBits=function(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new C(this._commonCoord);e.x=-e.x,e.y=-e.y;var n=new ir(e);return t.apply(n),t.geometryChanged(),t},tr.prototype.getCommonCoordinate=function(){return this._commonCoord},tr.prototype.add=function(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},tr.prototype.interfaces_=function(){return[]},tr.prototype.getClass=function(){return tr},er.CommonCoordinateFilter.get=function(){return nr},er.Translater.get=function(){return ir},Object.defineProperties(tr,er);var nr=function(){this._commonBitsX=new $i,this._commonBitsY=new $i};nr.prototype.filter=function(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)},nr.prototype.getCommonCoordinate=function(){return new C(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},nr.prototype.interfaces_=function(){return[ft]},nr.prototype.getClass=function(){return nr};var ir=function(){this.trans=null;var t=arguments[0];this.trans=t};ir.prototype.filter=function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,i=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,i)},ir.prototype.isDone=function(){return!1},ir.prototype.isGeometryChanged=function(){return!0},ir.prototype.interfaces_=function(){return[Ut]},ir.prototype.getClass=function(){return ir};var rr=function(t,e){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};rr.prototype.selfSnap=function(t){return new Ji(t).snapTo(t,this._snapTolerance)},rr.prototype.removeCommonBits=function(t){this._cbr=new tr,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e},rr.prototype.prepareResult=function(t){return this._cbr.addCommonBits(t),t},rr.prototype.getResultGeometry=function(t){var e=this.snap(this._geom),n=Lr.overlayOp(e[0],e[1],t);return this.prepareResult(n)},rr.prototype.checkValid=function(t){t.isValid()||Y.out.println(\"Snapped geometry is invalid\")},rr.prototype.computeSnapTolerance=function(){this._snapTolerance=Ji.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},rr.prototype.snap=function(t){var e=this.removeCommonBits(t);return Ji.snap(e[0],e[1],this._snapTolerance)},rr.prototype.interfaces_=function(){return[]},rr.prototype.getClass=function(){return rr},rr.overlayOp=function(t,e,n){return new rr(t,e).getResultGeometry(n)},rr.union=function(t,e){return rr.overlayOp(t,e,Lr.UNION)},rr.intersection=function(t,e){return rr.overlayOp(t,e,Lr.INTERSECTION)},rr.symDifference=function(t,e){return rr.overlayOp(t,e,Lr.SYMDIFFERENCE)},rr.difference=function(t,e){return rr.overlayOp(t,e,Lr.DIFFERENCE)};var or=function(t,e){this._geom=new Array(2).fill(null),this._geom[0]=t,this._geom[1]=e};or.prototype.getResultGeometry=function(t){var e=null,n=!1,i=null;try{e=Lr.overlayOp(this._geom[0],this._geom[1],t);n=!0}catch(t){if(!(t instanceof $))throw t;i=t}if(!n)try{e=rr.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof $?i:t}return e},or.prototype.interfaces_=function(){return[]},or.prototype.getClass=function(){return or},or.overlayOp=function(t,e,n){return new or(t,e).getResultGeometry(n)},or.union=function(t,e){return or.overlayOp(t,e,Lr.UNION)},or.intersection=function(t,e){return or.overlayOp(t,e,Lr.INTERSECTION)},or.symDifference=function(t,e){return or.overlayOp(t,e,Lr.SYMDIFFERENCE)},or.difference=function(t,e){return or.overlayOp(t,e,Lr.DIFFERENCE)};var sr=function(){this.mce=null,this.chainIndex=null;var t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};sr.prototype.computeIntersections=function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},sr.prototype.interfaces_=function(){return[]},sr.prototype.getClass=function(){return sr};var ar=function t(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var e=arguments[0],n=arguments[1];this._eventType=t.DELETE,this._xValue=e,this._insertEvent=n}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._eventType=t.INSERT,this._label=i,this._xValue=r,this._obj=o}},ur={INSERT:{configurable:!0},DELETE:{configurable:!0}};ar.prototype.isDelete=function(){return this._eventType===ar.DELETE},ar.prototype.setDeleteEventIndex=function(t){this._deleteEventIndex=t},ar.prototype.getObject=function(){return this._obj},ar.prototype.compareTo=function(t){var e=t;return this._xValue<e._xValue?-1:this._xValue>e._xValue?1:this._eventType<e._eventType?-1:this._eventType>e._eventType?1:0},ar.prototype.getInsertEvent=function(){return this._insertEvent},ar.prototype.isInsert=function(){return this._eventType===ar.INSERT},ar.prototype.isSameLabel=function(t){return null!==this._label&&this._label===t._label},ar.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},ar.prototype.interfaces_=function(){return[E]},ar.prototype.getClass=function(){return ar},ur.INSERT.get=function(){return 1},ur.DELETE.get=function(){return 2},Object.defineProperties(ar,ur);var lr=function(){};lr.prototype.interfaces_=function(){return[]},lr.prototype.getClass=function(){return lr};var cr=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=n};cr.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(cr.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.getNumPoints()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},cr.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},cr.prototype.setIsDoneIfProperInt=function(t){this._isDoneWhenProperInt=t},cr.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},cr.prototype.isBoundaryPointInternal=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next().getCoordinate();if(t.isIntersection(i))return!0}return!1},cr.prototype.hasProperIntersection=function(){return this._hasProper},cr.prototype.hasIntersection=function(){return this._hasIntersection},cr.prototype.isDone=function(){return this._isDone},cr.prototype.isBoundaryPoint=function(t,e){return null!==e&&(!!this.isBoundaryPointInternal(t,e[0])||!!this.isBoundaryPointInternal(t,e[1]))},cr.prototype.setBoundaryNodes=function(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e},cr.prototype.addIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},cr.prototype.interfaces_=function(){return[]},cr.prototype.getClass=function(){return cr},cr.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var pr=function(t){function e(){t.call(this),this.events=new Nt,this.nOverlaps=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.prepareEvents=function(){$e.sort(this.events);for(var t=0;t<this.events.size();t++){var e=this.events.get(t);e.isDelete()&&e.getInsertEvent().setDeleteEventIndex(t)}},e.prototype.computeIntersections=function(){if(1===arguments.length){var t=arguments[0];this.nOverlaps=0,this.prepareEvents();for(var e=0;e<this.events.size();e++){var n=this.events.get(e);if(n.isInsert()&&this.processOverlaps(e,n.getDeleteEventIndex(),n,t),t.isDone())break}}else if(3===arguments.length)if(arguments[2]instanceof cr&&T(arguments[0],xt)&&T(arguments[1],xt)){var i=arguments[0],r=arguments[1],o=arguments[2];this.addEdges(i,i),this.addEdges(r,r),this.computeIntersections(o)}else if(\"boolean\"==typeof arguments[2]&&T(arguments[0],xt)&&arguments[1]instanceof cr){var s=arguments[0],a=arguments[1];arguments[2]?this.addEdges(s,null):this.addEdges(s),this.computeIntersections(a)}},e.prototype.addEdge=function(t,e){for(var n=t.getMonotoneChainEdge(),i=n.getStartIndexes(),r=0;r<i.length-1;r++){var o=new sr(n,r),s=new ar(e,n.getMinX(r),o);this.events.add(s),this.events.add(new ar(n.getMaxX(r),s))}},e.prototype.processOverlaps=function(t,e,n,i){for(var r=n.getObject(),o=t;o<e;o++){var s=this.events.get(o);if(s.isInsert()){var a=s.getObject();n.isSameLabel(s)||(r.computeIntersections(a,i),this.nOverlaps++)}}},e.prototype.addEdges=function(){if(1===arguments.length)for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.addEdge(e,e)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){var o=r.next();this.addEdge(o,i)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(lr),hr=function(){this._min=v.POSITIVE_INFINITY,this._max=v.NEGATIVE_INFINITY},fr={NodeComparator:{configurable:!0}};hr.prototype.getMin=function(){return this._min},hr.prototype.intersects=function(t,e){return!(this._min>e||this._max<t)},hr.prototype.getMax=function(){return this._max},hr.prototype.toString=function(){return Z.toLineString(new C(this._min,0),new C(this._max,0))},hr.prototype.interfaces_=function(){return[]},hr.prototype.getClass=function(){return hr},fr.NodeComparator.get=function(){return gr},Object.defineProperties(hr,fr);var gr=function(){};gr.prototype.compare=function(t,e){var n=t,i=e,r=(n._min+n._max)/2,o=(i._min+i._max)/2;return r<o?-1:r>o?1:0},gr.prototype.interfaces_=function(){return[N]},gr.prototype.getClass=function(){return gr};var dr=function(t){function e(){t.call(this),this._item=null;var e=arguments[0],n=arguments[1],i=arguments[2];this._min=e,this._max=n,this._item=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;n.visitItem(this._item)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),yr=function(t){function e(){t.call(this),this._node1=null,this._node2=null;var e=arguments[0],n=arguments[1];this._node1=e,this._node2=n,this.buildExtent(this._node1,this._node2)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildExtent=function(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)},e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,n),null!==this._node2&&this._node2.query(t,e,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),_r=function(){this._leaves=new Nt,this._root=null,this._level=0};_r.prototype.buildTree=function(){$e.sort(this._leaves,new hr.NodeComparator);for(var t=this._leaves,e=null,n=new Nt;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},_r.prototype.insert=function(t,e,n){if(null!==this._root)throw new Error(\"Index cannot be added to once it has been queried\");this._leaves.add(new dr(t,e,n))},_r.prototype.query=function(t,e,n){this.init(),this._root.query(t,e,n)},_r.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},_r.prototype.printNode=function(t){Y.out.println(Z.toLineString(new C(t._min,this._level),new C(t._max,this._level)))},_r.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},_r.prototype.buildLevel=function(t,e){this._level++,e.clear();for(var n=0;n<t.size();n+=2){var i=t.get(n);if(null===(n+1<t.size()?t.get(n):null))e.add(i);else{var r=new yr(t.get(n),t.get(n+1));e.add(r)}}},_r.prototype.interfaces_=function(){return[]},_r.prototype.getClass=function(){return _r};var mr=function(){this._items=new Nt};mr.prototype.visitItem=function(t){this._items.add(t)},mr.prototype.getItems=function(){return this._items},mr.prototype.interfaces_=function(){return[Ke]},mr.prototype.getClass=function(){return mr};var vr=function(){this._index=null;var t=arguments[0];if(!T(t,Zt))throw new m(\"Argument must be Polygonal\");this._index=new xr(t)},Ir={SegmentVisitor:{configurable:!0},IntervalIndexedGeometry:{configurable:!0}};vr.prototype.locate=function(t){var e=new st(t),n=new Er(e);return this._index.query(t.y,t.y,n),e.getLocation()},vr.prototype.interfaces_=function(){return[Vn]},vr.prototype.getClass=function(){return vr},Ir.SegmentVisitor.get=function(){return Er},Ir.IntervalIndexedGeometry.get=function(){return xr},Object.defineProperties(vr,Ir);var Er=function(){this._counter=null;var t=arguments[0];this._counter=t};Er.prototype.visitItem=function(t){var e=t;this._counter.countSegment(e.getCoordinate(0),e.getCoordinate(1))},Er.prototype.interfaces_=function(){return[Ke]},Er.prototype.getClass=function(){return Er};var xr=function(){this._index=new _r;var t=arguments[0];this.init(t)};xr.prototype.init=function(t){for(var e=Ci.getLines(t).iterator();e.hasNext();){var n=e.next().getCoordinates();this.addLine(n)}},xr.prototype.addLine=function(t){for(var e=1;e<t.length;e++){var n=new dn(t[e-1],t[e]),i=Math.min(n.p0.y,n.p1.y),r=Math.max(n.p0.y,n.p1.y);this._index.insert(i,r,n)}},xr.prototype.query=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new mr;return this._index.query(t,e,n),n.getItems()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._index.query(i,r,o)}},xr.prototype.interfaces_=function(){return[]},xr.prototype.getClass=function(){return xr};var Nr=function(t){function e(){if(t.call(this),this._parentGeom=null,this._lineEdgeMap=new he,this._boundaryNodeRule=null,this._useBoundaryDeterminationRule=!0,this._argIndex=null,this._boundaryNodes=null,this._hasTooFewPoints=!1,this._invalidPoint=null,this._areaPtLocator=null,this._ptLocator=new Si,2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;this._argIndex=e,this._parentGeom=n,this._boundaryNodeRule=i,null!==n&&this.add(n)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];this._argIndex=r,this._parentGeom=o,this._boundaryNodeRule=s,null!==o&&this.add(o)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertBoundaryPoint=function(t,n){var i=this._nodes.addNode(n).getLabel(),r=1;w.NONE;i.getLocation(t,Se.ON)===w.BOUNDARY&&r++;var o=e.determineBoundary(this._boundaryNodeRule,r);i.setLocation(t,o)},e.prototype.computeSelfNodes=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.computeSelfNodes(t,e,!1)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new cr(n,!0,!1);o.setIsDoneIfProperInt(r);var s=this.createEdgeSetIntersector(),a=this._parentGeom instanceof ee||this._parentGeom instanceof $t||this._parentGeom instanceof ne,u=i||!a;return s.computeIntersections(this._edges,o,u),this.addSelfIntersectionNodes(this._argIndex),o}},e.prototype.computeSplitEdges=function(t){for(var e=this._edges.iterator();e.hasNext();){e.next().eiList.addSplitEdges(t)}},e.prototype.computeEdgeIntersections=function(t,e,n){var i=new cr(e,n,!0);i.setBoundaryNodes(this.getBoundaryNodes(),t.getBoundaryNodes());return this.createEdgeSetIntersector().computeIntersections(this._edges,t._edges,i),i},e.prototype.getGeometry=function(){return this._parentGeom},e.prototype.getBoundaryNodeRule=function(){return this._boundaryNodeRule},e.prototype.hasTooFewPoints=function(){return this._hasTooFewPoints},e.prototype.addPoint=function(){if(arguments[0]instanceof Qt){var t=arguments[0].getCoordinate();this.insertPoint(this._argIndex,t,w.INTERIOR)}else if(arguments[0]instanceof C){var e=arguments[0];this.insertPoint(this._argIndex,e,w.INTERIOR)}},e.prototype.addPolygon=function(t){this.addPolygonRing(t.getExteriorRing(),w.EXTERIOR,w.INTERIOR);for(var e=0;e<t.getNumInteriorRing();e++){var n=t.getInteriorRingN(e);this.addPolygonRing(n,w.INTERIOR,w.EXTERIOR)}},e.prototype.addEdge=function(t){this.insertEdge(t);var e=t.getCoordinates();this.insertPoint(this._argIndex,e[0],w.BOUNDARY),this.insertPoint(this._argIndex,e[e.length-1],w.BOUNDARY)},e.prototype.addLineString=function(t){var e=Lt.removeRepeatedPoints(t.getCoordinates());if(e.length<2)return this._hasTooFewPoints=!0,this._invalidPoint=e[0],null;var n=new ni(e,new Pe(this._argIndex,w.INTERIOR));this._lineEdgeMap.put(t,n),this.insertEdge(n),et.isTrue(e.length>=2,\"found LineString with single point\"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])},e.prototype.getInvalidPoint=function(){return this._invalidPoint},e.prototype.getBoundaryPoints=function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,i=t.iterator();i.hasNext();){var r=i.next();e[n++]=r.getCoordinate().copy()}return e},e.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},e.prototype.addSelfIntersectionNode=function(t,e,n){if(this.isBoundaryNode(t,e))return null;n===w.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n)},e.prototype.addPolygonRing=function(t,e,n){if(t.isEmpty())return null;var i=Lt.removeRepeatedPoints(t.getCoordinates());if(i.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=i[0],null;var r=e,o=n;at.isCCW(i)&&(r=n,o=e);var s=new ni(i,new Pe(this._argIndex,w.BOUNDARY,r,o));this._lineEdgeMap.put(t,s),this.insertEdge(s),this.insertPoint(this._argIndex,i[0],w.BOUNDARY)},e.prototype.insertPoint=function(t,e,n){var i=this._nodes.addNode(e),r=i.getLabel();null===r?i._label=new Pe(t,n):r.setLocation(t,n)},e.prototype.createEdgeSetIntersector=function(){return new pr},e.prototype.addSelfIntersectionNodes=function(t){for(var e=this._edges.iterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.eiList.iterator();r.hasNext();){var o=r.next();this.addSelfIntersectionNode(t,o.coord,i)}},e.prototype.add=function(){if(1!==arguments.length)return t.prototype.add.apply(this,arguments);var e=arguments[0];if(e.isEmpty())return null;if(e instanceof ne&&(this._useBoundaryDeterminationRule=!1),e instanceof $t)this.addPolygon(e);else if(e instanceof Kt)this.addLineString(e);else if(e instanceof Qt)this.addPoint(e);else if(e instanceof te)this.addCollection(e);else if(e instanceof Xt)this.addCollection(e);else if(e instanceof ne)this.addCollection(e);else{if(!(e instanceof zt))throw new Error(e.getClass().getName());this.addCollection(e)}},e.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},e.prototype.locate=function(t){return T(this._parentGeom,Zt)&&this._parentGeom.getNumGeometries()>50?(null===this._areaPtLocator&&(this._areaPtLocator=new vr(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)},e.prototype.findEdge=function(){if(1===arguments.length){var e=arguments[0];return this._lineEdgeMap.get(e)}return t.prototype.findEdge.apply(this,arguments)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.determineBoundary=function(t,e){return t.isInBoundary(e)?w.BOUNDARY:w.INTERIOR},e}(Ye),Cr=function(){if(this._li=new rt,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Nr(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;e.getPrecisionModel().compareTo(n.getPrecisionModel())>=0?this.setComputationPrecision(e.getPrecisionModel()):this.setComputationPrecision(n.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,e,i),this._arg[1]=new Nr(1,n,i)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];r.getPrecisionModel().compareTo(o.getPrecisionModel())>=0?this.setComputationPrecision(r.getPrecisionModel()):this.setComputationPrecision(o.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,r,s),this._arg[1]=new Nr(1,o,s)}};Cr.prototype.getArgGeometry=function(t){return this._arg[t].getGeometry()},Cr.prototype.setComputationPrecision=function(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)},Cr.prototype.interfaces_=function(){return[]},Cr.prototype.getClass=function(){return Cr};var Sr=function(){};Sr.prototype.interfaces_=function(){return[]},Sr.prototype.getClass=function(){return Sr},Sr.map=function(){if(arguments[0]instanceof ct&&T(arguments[1],Sr.MapOp)){for(var t=arguments[0],e=arguments[1],n=new Nt,i=0;i<t.getNumGeometries();i++){var r=e.map(t.getGeometryN(i));null!==r&&n.add(r)}return t.getFactory().buildGeometry(n)}if(T(arguments[0],It)&&T(arguments[1],Sr.MapOp)){for(var o=arguments[0],s=arguments[1],a=new Nt,u=o.iterator();u.hasNext();){var l=u.next(),c=s.map(l);null!==c&&a.add(c)}return a}},Sr.MapOp=function(){};var Lr=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n),this._ptLocator=new Si,this._geomFact=null,this._resultGeom=null,this._graph=null,this._edgeList=new Hn,this._resultPolyList=new Nt,this._resultLineList=new Nt,this._resultPointList=new Nt,this._graph=new Ye(new kn),this._geomFact=e.getFactory()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip();var r=e.getDepth();r.isNull()&&r.add(n),r.add(i),n.merge(i)}else this._edgeList.add(t)},e.prototype.getGraph=function(){return this._graph},e.prototype.cancelDuplicateResultEdges=function(){for(var t=this._graph.getEdgeEnds().iterator();t.hasNext();){var e=t.next(),n=e.getSym();e.isInResult()&&n.isInResult()&&(e.setInResult(!1),n.setInResult(!1))}},e.prototype.isCoveredByLA=function(t){return!!this.isCovered(t,this._resultLineList)||!!this.isCovered(t,this._resultPolyList)},e.prototype.computeGeometry=function(t,n,i,r){var o=new Nt;return o.addAll(t),o.addAll(n),o.addAll(i),o.isEmpty()?e.createEmptyResult(r,this._arg[0].getGeometry(),this._arg[1].getGeometry(),this._geomFact):this._geomFact.buildGeometry(o)},e.prototype.mergeSymLabels=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().mergeSymLabels()}},e.prototype.isCovered=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(this._ptLocator.locate(t,i)!==w.EXTERIOR)return!0}return!1},e.prototype.replaceCollapsedEdges=function(){for(var t=new Nt,e=this._edgeList.iterator();e.hasNext();){var n=e.next();n.isCollapsed()&&(e.remove(),t.add(n.getCollapsedEdge()))}this._edgeList.addAll(t)},e.prototype.updateNodeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getEdges().getLabel();e.getLabel().merge(n)}},e.prototype.getResultGeometry=function(t){return this.computeOverlay(t),this._resultGeom},e.prototype.insertUniqueEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this.insertUniqueEdge(n)}},e.prototype.computeOverlay=function(t){this.copyPoints(0),this.copyPoints(1),this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1),this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!0);var e=new Nt;this._arg[0].computeSplitEdges(e),this._arg[1].computeSplitEdges(e),this.insertUniqueEdges(e),this.computeLabelsFromDepths(),this.replaceCollapsedEdges(),Yi.checkValid(this._edgeList.getEdges()),this._graph.addEdges(this._edgeList.getEdges()),this.computeLabelling(),this.labelIncompleteNodes(),this.findResultAreaEdges(t),this.cancelDuplicateResultEdges();var n=new ke(this._geomFact);n.add(this._graph),this._resultPolyList=n.getPolygons();var i=new ji(this,this._geomFact,this._ptLocator);this._resultLineList=i.build(t);var r=new Hi(this,this._geomFact,this._ptLocator);this._resultPointList=r.build(t),this._resultGeom=this.computeGeometry(this._resultPointList,this._resultLineList,this._resultPolyList,t)},e.prototype.labelIncompleteNode=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setLocation(e,n)},e.prototype.copyPoints=function(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var n=e.next();this._graph.addNode(n.getCoordinate()).setLabel(t,n.getLabel().getLocation(t))}},e.prototype.findResultAreaEdges=function(t){for(var n=this._graph.getEdgeEnds().iterator();n.hasNext();){var i=n.next(),r=i.getLabel();r.isArea()&&!i.isInteriorAreaEdge()&&e.isResultOfOp(r.getLocation(0,Se.RIGHT),r.getLocation(1,Se.RIGHT),t)&&i.setInResult(!0)}},e.prototype.computeLabelsFromDepths=function(){for(var t=this._edgeList.iterator();t.hasNext();){var e=t.next(),n=e.getLabel(),i=e.getDepth();if(!i.isNull()){i.normalize();for(var r=0;r<2;r++)n.isNull(r)||!n.isArea()||i.isNull(r)||(0===i.getDelta(r)?n.toLine(r):(et.isTrue(!i.isNull(r,Se.LEFT),\"depth of LEFT side has not been initialized\"),n.setLocation(r,Se.LEFT,i.getLocation(r,Se.LEFT)),et.isTrue(!i.isNull(r,Se.RIGHT),\"depth of RIGHT side has not been initialized\"),n.setLocation(r,Se.RIGHT,i.getLocation(r,Se.RIGHT))))}}},e.prototype.computeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().computeLabelling(this._arg)}this.mergeSymLabels(),this.updateNodeLabelling()},e.prototype.labelIncompleteNodes=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getLabel();e.isIsolated()&&(n.isNull(0)?this.labelIncompleteNode(e,0):this.labelIncompleteNode(e,1)),e.getEdges().updateLabelling(n)}},e.prototype.isCoveredByA=function(t){return!!this.isCovered(t,this._resultPolyList)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Cr);Lr.overlayOp=function(t,e,n){return new Lr(t,e).getResultGeometry(n)},Lr.intersection=function(t,e){if(t.isEmpty()||e.isEmpty())return Lr.createEmptyResult(Lr.INTERSECTION,t,e,t.getFactory());if(t.isGeometryCollection()){var n=e;return ki.map(t,{interfaces_:function(){return[Sr.MapOp]},map:function(t){return t.intersection(n)}})}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.INTERSECTION)},Lr.symDifference=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.SYMDIFFERENCE,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.SYMDIFFERENCE)},Lr.resultDimension=function(t,e,n){var i=e.getDimension(),r=n.getDimension(),o=-1;switch(t){case Lr.INTERSECTION:o=Math.min(i,r);break;case Lr.UNION:o=Math.max(i,r);break;case Lr.DIFFERENCE:o=i;break;case Lr.SYMDIFFERENCE:o=Math.max(i,r)}return o},Lr.createEmptyResult=function(t,e,n,i){var r=null;switch(Lr.resultDimension(t,e,n)){case-1:r=i.createGeometryCollection(new Array(0).fill(null));break;case 0:r=i.createPoint();break;case 1:r=i.createLineString();break;case 2:r=i.createPolygon()}return r},Lr.difference=function(t,e){return t.isEmpty()?Lr.createEmptyResult(Lr.DIFFERENCE,t,e,t.getFactory()):e.isEmpty()?t.copy():(t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.DIFFERENCE))},Lr.isResultOfOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=t.getLocation(0),i=t.getLocation(1);return Lr.isResultOfOp(n,i,e)}if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];switch(r===w.BOUNDARY&&(r=w.INTERIOR),o===w.BOUNDARY&&(o=w.INTERIOR),s){case Lr.INTERSECTION:return r===w.INTERIOR&&o===w.INTERIOR;case Lr.UNION:return r===w.INTERIOR||o===w.INTERIOR;case Lr.DIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR;case Lr.SYMDIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR||r!==w.INTERIOR&&o===w.INTERIOR}return!1}},Lr.INTERSECTION=1,Lr.UNION=2,Lr.DIFFERENCE=3,Lr.SYMDIFFERENCE=4;var br=function(){this._g=null,this._boundaryDistanceTolerance=null,this._linework=null,this._ptLocator=new Si,this._seg=new dn;var t=arguments[0],e=arguments[1];this._g=t,this._boundaryDistanceTolerance=e,this._linework=this.extractLinework(t)};br.prototype.isWithinToleranceOfBoundary=function(t){for(var e=0;e<this._linework.getNumGeometries();e++)for(var n=this._linework.getGeometryN(e).getCoordinateSequence(),i=0;i<n.size()-1;i++){n.getCoordinate(i,this._seg.p0),n.getCoordinate(i+1,this._seg.p1);if(this._seg.distance(t)<=this._boundaryDistanceTolerance)return!0}return!1},br.prototype.getLocation=function(t){return this.isWithinToleranceOfBoundary(t)?w.BOUNDARY:this._ptLocator.locate(t,this._g)},br.prototype.extractLinework=function(t){var e=new wr;t.apply(e);var n=e.getLinework(),i=_e.toLineStringArray(n);return t.getFactory().createMultiLineString(i)},br.prototype.interfaces_=function(){return[]},br.prototype.getClass=function(){return br};var wr=function(){this._linework=null,this._linework=new Nt};wr.prototype.getLinework=function(){return this._linework},wr.prototype.filter=function(t){if(t instanceof $t){var e=t;this._linework.add(e.getExteriorRing());for(var n=0;n<e.getNumInteriorRing();n++)this._linework.add(e.getInteriorRingN(n))}},wr.prototype.interfaces_=function(){return[Vt]},wr.prototype.getClass=function(){return wr};var Or=function(){this._g=null,this._doLeft=!0,this._doRight=!0;var t=arguments[0];this._g=t};Or.prototype.extractPoints=function(t,e,n){for(var i=t.getCoordinates(),r=0;r<i.length-1;r++)this.computeOffsetPoints(i[r],i[r+1],e,n)},Or.prototype.setSidesToGenerate=function(t,e){this._doLeft=t,this._doRight=e},Or.prototype.getPoints=function(t){for(var e=new Nt,n=Ci.getLines(this._g).iterator();n.hasNext();){var i=n.next();this.extractPoints(i,t,e)}return e},Or.prototype.computeOffsetPoints=function(t,e,n,i){var r=e.x-t.x,o=e.y-t.y,s=Math.sqrt(r*r+o*o),a=n*r/s,u=n*o/s,l=(e.x+t.x)/2,c=(e.y+t.y)/2;if(this._doLeft){var p=new C(l-u,c+a);i.add(p)}if(this._doRight){var h=new C(l+u,c-a);i.add(h)}},Or.prototype.interfaces_=function(){return[]},Or.prototype.getClass=function(){return Or};var Tr=function t(){this._geom=null,this._locFinder=null,this._location=new Array(3).fill(null),this._invalidLocation=null,this._boundaryDistanceTolerance=t.TOLERANCE,this._testCoords=new Nt;var e=arguments[0],n=arguments[1],i=arguments[2];this._boundaryDistanceTolerance=t.computeBoundaryDistanceTolerance(e,n),this._geom=[e,n,i],this._locFinder=[new br(this._geom[0],this._boundaryDistanceTolerance),new br(this._geom[1],this._boundaryDistanceTolerance),new br(this._geom[2],this._boundaryDistanceTolerance)]},Rr={TOLERANCE:{configurable:!0}};Tr.prototype.reportResult=function(t,e,n){Y.out.println(\"Overlay result invalid - A:\"+w.toLocationSymbol(e[0])+\" B:\"+w.toLocationSymbol(e[1])+\" expected:\"+(n?\"i\":\"e\")+\" actual:\"+w.toLocationSymbol(e[2]))},Tr.prototype.isValid=function(t){this.addTestPts(this._geom[0]),this.addTestPts(this._geom[1]);var e=this.checkValid(t);return e},Tr.prototype.checkValid=function(){if(1===arguments.length){for(var t=arguments[0],e=0;e<this._testCoords.size();e++){var n=this._testCoords.get(e);if(!this.checkValid(t,n))return this._invalidLocation=n,!1}return!0}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._location[0]=this._locFinder[0].getLocation(r),this._location[1]=this._locFinder[1].getLocation(r),this._location[2]=this._locFinder[2].getLocation(r),!!Tr.hasLocation(this._location,w.BOUNDARY)||this.isValidResult(i,this._location)}},Tr.prototype.addTestPts=function(t){var e=new Or(t);this._testCoords.addAll(e.getPoints(5*this._boundaryDistanceTolerance))},Tr.prototype.isValidResult=function(t,e){var n=Lr.isResultOfOp(e[0],e[1],t),i=!(n^e[2]===w.INTERIOR);return i||this.reportResult(t,e,n),i},Tr.prototype.getInvalidLocation=function(){return this._invalidLocation},Tr.prototype.interfaces_=function(){return[]},Tr.prototype.getClass=function(){return Tr},Tr.hasLocation=function(t,e){for(var n=0;n<3;n++)if(t[n]===e)return!0;return!1},Tr.computeBoundaryDistanceTolerance=function(t,e){return Math.min(Ji.computeSizeBasedSnapTolerance(t),Ji.computeSizeBasedSnapTolerance(e))},Tr.isValid=function(t,e,n,i){return new Tr(t,e,i).isValid(n)},Rr.TOLERANCE.get=function(){return 1e-6},Object.defineProperties(Tr,Rr);var Pr=function t(e){this._geomFactory=null,this._skipEmpty=!1,this._inputGeoms=null,this._geomFactory=t.extractFactory(e),this._inputGeoms=e};Pr.prototype.extractElements=function(t,e){if(null===t)return null;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);this._skipEmpty&&i.isEmpty()||e.add(i)}},Pr.prototype.combine=function(){for(var t=new Nt,e=this._inputGeoms.iterator();e.hasNext();){var n=e.next();this.extractElements(n,t)}return 0===t.size()?null!==this._geomFactory?this._geomFactory.createGeometryCollection(null):null:this._geomFactory.buildGeometry(t)},Pr.prototype.interfaces_=function(){return[]},Pr.prototype.getClass=function(){return Pr},Pr.combine=function(){if(1===arguments.length){var t=arguments[0];return new Pr(t).combine()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Pr(Pr.createList(e,n)).combine()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];return new Pr(Pr.createList(i,r,o)).combine()}},Pr.extractFactory=function(t){return t.isEmpty()?null:t.iterator().next().getFactory()},Pr.createList=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new Nt;return n.add(t),n.add(e),n}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=new Nt;return s.add(i),s.add(r),s.add(o),s}};var Dr=function(){this._inputPolys=null,this._geomFactory=null;var t=arguments[0];this._inputPolys=t,null===this._inputPolys&&(this._inputPolys=new Nt)},Mr={STRTREE_NODE_CAPACITY:{configurable:!0}};Dr.prototype.reduceToGeometries=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next(),r=null;T(i,xt)?r=this.unionTree(i):i instanceof ct&&(r=i),e.add(r)}return e},Dr.prototype.extractByEnvelope=function(t,e,n){for(var i=new Nt,r=0;r<e.getNumGeometries();r++){var o=e.getGeometryN(r);o.getEnvelopeInternal().intersects(t)?i.add(o):n.add(o)}return this._geomFactory.buildGeometry(i)},Dr.prototype.unionOptimized=function(t,e){var n=t.getEnvelopeInternal(),i=e.getEnvelopeInternal();if(!n.intersects(i)){return Pr.combine(t,e)}if(t.getNumGeometries()<=1&&e.getNumGeometries()<=1)return this.unionActual(t,e);var r=n.intersection(i);return this.unionUsingEnvelopeIntersection(t,e,r)},Dr.prototype.union=function(){if(null===this._inputPolys)throw new Error(\"union() method cannot be called twice\");if(this._inputPolys.isEmpty())return null;this._geomFactory=this._inputPolys.iterator().next().getFactory();for(var t=new sn(Dr.STRTREE_NODE_CAPACITY),e=this._inputPolys.iterator();e.hasNext();){var n=e.next();t.insert(n.getEnvelopeInternal(),n)}this._inputPolys=null;var i=t.itemsTree();return this.unionTree(i)},Dr.prototype.binaryUnion=function(){if(1===arguments.length){var t=arguments[0];return this.binaryUnion(t,0,t.size())}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];if(i-n<=1){var r=Dr.getGeometry(e,n);return this.unionSafe(r,null)}if(i-n==2)return this.unionSafe(Dr.getGeometry(e,n),Dr.getGeometry(e,n+1));var o=Math.trunc((i+n)/2),s=this.binaryUnion(e,n,o),a=this.binaryUnion(e,o,i);return this.unionSafe(s,a)}},Dr.prototype.repeatedUnion=function(t){for(var e=null,n=t.iterator();n.hasNext();){var i=n.next();e=null===e?i.copy():e.union(i)}return e},Dr.prototype.unionSafe=function(t,e){return null===t&&null===e?null:null===t?e.copy():null===e?t.copy():this.unionOptimized(t,e)},Dr.prototype.unionActual=function(t,e){return Dr.restrictToPolygons(t.union(e))},Dr.prototype.unionTree=function(t){var e=this.reduceToGeometries(t);return this.binaryUnion(e)},Dr.prototype.unionUsingEnvelopeIntersection=function(t,e,n){var i=new Nt,r=this.extractByEnvelope(n,t,i),o=this.extractByEnvelope(n,e,i),s=this.unionActual(r,o);i.add(s);return Pr.combine(i)},Dr.prototype.bufferUnion=function(){if(1===arguments.length){var t=arguments[0];return t.get(0).getFactory().buildGeometry(t).buffer(0)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().createGeometryCollection([e,n]).buffer(0)}},Dr.prototype.interfaces_=function(){return[]},Dr.prototype.getClass=function(){return Dr},Dr.restrictToPolygons=function(t){if(T(t,Zt))return t;var e=Ni.getPolygons(t);return 1===e.size()?e.get(0):t.getFactory().createMultiPolygon(_e.toPolygonArray(e))},Dr.getGeometry=function(t,e){return e>=t.size()?null:t.get(e)},Dr.union=function(t){return new Dr(t).union()},Mr.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Dr,Mr);var Ar=function(){};Ar.prototype.interfaces_=function(){return[]},Ar.prototype.getClass=function(){return Ar},Ar.union=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.UNION)},t.GeoJSONReader=Ne,t.GeoJSONWriter=Ce,t.OverlayOp=Lr,t.UnionOp=Ar,t.BufferOp=di,Object.defineProperty(t,\"__esModule\",{value:!0})});\n","'use strict';\n/**\n * The {@link DocumentVisibilityMonitor} monitors the visibility state of the DOM\n * and executes the attached listeners in phase order when the DOM is visible.\n */\nvar DocumentVisibilityMonitor = /** @class */ (function () {\n    /**\n     * Constructor.\n     * @param {number} [nPhases=1] - the number of phases\n     */\n    function DocumentVisibilityMonitor(nPhases) {\n        var _this = this;\n        if (nPhases === void 0) { nPhases = 1; }\n        Object.defineProperties(this, {\n            _listeners: {\n                value: []\n            },\n            _onVisibilityChange: {\n                value: function () {\n                    _this._emitVisible(document.visibilityState === 'visible');\n                }\n            }\n        });\n        for (var i = 0; i < nPhases; i++) {\n            this._listeners.push([]);\n        }\n    }\n    /**\n     * clears the state.\n     */\n    DocumentVisibilityMonitor.prototype.clear = function () {\n        var nPhases = this._listeners.length;\n        for (var i = 0; i < nPhases; i++) {\n            this._listeners[i] = [];\n        }\n    };\n    DocumentVisibilityMonitor.prototype._listenerCount = function () {\n        return this._listeners.reduce(function (count, phaseListeners) { return count + phaseListeners.length; }, 0);\n    };\n    /**\n     * Call all the listeners. Makes sure that all listeners for a given phase\n     * are executed before calling the listeners of the next phase.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._emitVisible = function (isVisible) {\n        var _this = this;\n        var promise = Promise.resolve();\n        var _loop_1 = function (phase) {\n            promise = promise.then(function () { return _this._emitVisiblePhase(phase, isVisible); });\n        };\n        for (var phase = 1; phase <= this._listeners.length; phase++) {\n            _loop_1(phase);\n        }\n        return promise;\n    };\n    /**\n     * Call all the listeners for a given phase.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._emitVisiblePhase = function (phase, isVisible) {\n        var phaseListeners = this._listeners[phase - 1];\n        return Promise.all(phaseListeners.map(function (listener) {\n            var ret = listener(isVisible);\n            return ret instanceof Promise ? ret : Promise.resolve(ret);\n        }));\n    };\n    /**\n     * Start listening to the DOM visibility state change.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._start = function () {\n        document.addEventListener('visibilitychange', this._onVisibilityChange);\n    };\n    /**\n     * Stop listening to the DOM visibility state change.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._stop = function () {\n        document.removeEventListener('visibilitychange', this._onVisibilityChange);\n    };\n    /**\n     * Listen for the DOM visibility changes at the given phase.\n     * @param {number} phase\n     * @param {function} listener\n     * @returns {this}\n     */\n    DocumentVisibilityMonitor.prototype.onVisibilityChange = function (phase, listener) {\n        if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n            throw new Error('invalid phase: ', phase);\n        }\n        var phaseListeners = this._listeners[phase - 1];\n        phaseListeners.push(listener);\n        if (this._listenerCount() === 1) {\n            this._start();\n        }\n        return this;\n    };\n    /**\n     * Stop listening for the DOM visibility change at the given phase.\n     * @param {number} phase\n     * @param {function} listener\n     * @returns {this}\n     */\n    DocumentVisibilityMonitor.prototype.offVisibilityChange = function (phase, listener) {\n        if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n            throw new Error('invalid phase: ', phase);\n        }\n        var phaseListeners = this._listeners[phase - 1];\n        var index = phaseListeners.indexOf(listener);\n        if (index !== -1) {\n            phaseListeners.splice(index, 1);\n            if (this._listenerCount() === 0) {\n                this._stop();\n            }\n        }\n        return this;\n    };\n    return DocumentVisibilityMonitor;\n}());\nmodule.exports = new DocumentVisibilityMonitor(2);\n//# sourceMappingURL=documentvisibilitymonitor.js.map","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var n,l,u,i,t,r,o,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,r,o,f={};for(o in u)\"key\"==o?t=u[o]:\"ref\"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return p(l,f,t,r,null)}function p(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function d(){return{current:null}}function _(n){return n.children}function k(n,l,u,i,t){var r;for(r in u)\"children\"===r||\"key\"===r||r in l||g(n,r,null,u[r],i);for(r in l)t&&\"function\"!=typeof l[r]||\"children\"===r||\"key\"===r||\"value\"===r||\"checked\"===r||u[r]===l[r]||g(n,r,l[r],u[r],i)}function b(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function g(n,l,u,i,t){var r;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||b(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||b(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])r=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?w:m,r):n.removeEventListener(l,r?w:m,r);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&-1==l.indexOf(\"-\")?n.removeAttribute(l):n.setAttribute(l,u))}}function m(n){t=!0;try{return this.l[n.type+!1](l.event?l.event(n):n)}finally{t=!1}}function w(n){t=!0;try{return this.l[n.type+!0](l.event?l.event(n):n)}finally{t=!1}}function x(n,l){this.props=n,this.context=l}function A(n,l){if(null==l)return n.__?A(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?A(n):null}function P(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return P(n)}}function C(n){t?setTimeout(n):f(n)}function T(n){(!n.__d&&(n.__d=!0)&&r.push(n)&&!$.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||C)($)}function $(){var n,l,u,i,t,o,f,e;for(r.sort(function(n,l){return n.__v.__b-l.__v.__b});n=r.shift();)n.__d&&(l=r.length,i=void 0,t=void 0,f=(o=(u=n).__v).__e,(e=u.__P)&&(i=[],(t=h({},o)).__v=o.__v+1,M(e,o,t,u.__n,void 0!==e.ownerSVGElement,null!=o.__h?[f]:null,i,null==f?A(o):f,o.__h),N(i,o),o.__e!=f&&P(o)),r.length>l&&r.sort(function(n,l){return n.__v.__b-l.__v.__b}));$.__r=0}function H(n,l,u,i,t,r,o,f,e,a){var h,v,y,d,k,b,g,m=i&&i.__k||s,w=m.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(d=u.__k[h]=null==(d=l[h])||\"boolean\"==typeof d?null:\"string\"==typeof d||\"number\"==typeof d||\"bigint\"==typeof d?p(null,d,null,null,d):Array.isArray(d)?p(_,{children:d},null,null,null):d.__b>0?p(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)){if(d.__=u,d.__b=u.__b+1,null===(y=m[h])||y&&d.key==y.key&&d.type===y.type)m[h]=void 0;else for(v=0;v<w;v++){if((y=m[v])&&d.key==y.key&&d.type===y.type){m[v]=void 0;break}y=null}M(n,d,y=y||c,t,r,o,f,e,a),k=d.__e,(v=d.ref)&&y.ref!=v&&(g||(g=[]),y.ref&&g.push(y.ref,null,d),g.push(v,d.__c||k,d)),null!=k?(null==b&&(b=k),\"function\"==typeof d.type&&d.__k===y.__k?d.__d=e=I(d,e,n):e=z(n,d,y,m,k,e),\"function\"==typeof u.type&&(u.__d=e)):e&&y.__e==e&&e.parentNode!=n&&(e=A(y))}for(u.__e=b,h=w;h--;)null!=m[h]&&(\"function\"==typeof u.type&&null!=m[h].__e&&m[h].__e==u.__d&&(u.__d=L(i).nextSibling),q(m[h],m[h]));if(g)for(h=0;h<g.length;h++)S(g[h],g[++h],g[++h])}function I(n,l,u){for(var i,t=n.__k,r=0;t&&r<t.length;r++)(i=t[r])&&(i.__=n,l=\"function\"==typeof i.type?I(i,l,u):z(u,i,i,t,i.__e,l));return l}function j(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some(function(n){j(n,l)}):l.push(n)),l}function z(n,l,u,i,t,r){var o,f,e;if(void 0!==l.__d)o=l.__d,l.__d=void 0;else if(null==u||t!=r||null==t.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(t),o=null;else{for(f=r,e=0;(f=f.nextSibling)&&e<i.length;e+=1)if(f==t)break n;n.insertBefore(t,r),o=r}return void 0!==o?o:t.nextSibling}function L(n){var l,u,i;if(null==n.type||\"string\"==typeof n.type)return n.__e;if(n.__k)for(l=n.__k.length-1;l>=0;l--)if((u=n.__k[l])&&(i=L(u)))return i;return null}function M(n,u,i,t,r,o,f,e,c){var s,a,v,y,p,d,k,b,g,m,w,A,P,C,T,$=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof $){if(b=u.props,g=(s=$.contextType)&&t[s.__c],m=s?g?g.props.value:s.__:t,i.__c?k=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in $&&$.prototype.render?u.__c=a=new $(b,m):(u.__c=a=new x(b,m),a.constructor=$,a.render=B),g&&g.sub(a),a.props=b,a.state||(a.state={}),a.context=m,a.__n=t,v=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=$.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,$.getDerivedStateFromProps(b,a.__s))),y=a.props,p=a.state,a.__v=u,v)null==$.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==$.getDerivedStateFromProps&&b!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(b,m),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(b,a.__s,m)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=b,a.state=a.__s,a.__d=!1),u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),w=0;w<a._sb.length;w++)a.__h.push(a._sb[w]);a._sb=[],a.__h.length&&f.push(a);break n}null!=a.componentWillUpdate&&a.componentWillUpdate(b,a.__s,m),null!=a.componentDidUpdate&&a.__h.push(function(){a.componentDidUpdate(y,p,d)})}if(a.context=m,a.props=b,a.__P=n,A=l.__r,P=0,\"prototype\"in $&&$.prototype.render){for(a.state=a.__s,a.__d=!1,A&&A(u),s=a.render(a.props,a.state,a.context),C=0;C<a._sb.length;C++)a.__h.push(a._sb[C]);a._sb=[]}else do{a.__d=!1,A&&A(u),s=a.render(a.props,a.state,a.context),a.state=a.__s}while(a.__d&&++P<25);a.state=a.__s,null!=a.getChildContext&&(t=h(h({},t),a.getChildContext())),v||null==a.getSnapshotBeforeUpdate||(d=a.getSnapshotBeforeUpdate(y,p)),T=null!=s&&s.type===_&&null==s.key?s.props.children:s,H(n,Array.isArray(T)?T:[T],u,i,t,r,o,f,e,c),a.base=u.__e,u.__h=null,a.__h.length&&f.push(a),k&&(a.__E=a.__=null),a.__e=!1}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=O(i.__e,u,i,t,r,o,f,c);(s=l.diffed)&&s(u)}catch(n){u.__v=null,(c||null!=o)&&(u.__e=e,u.__h=!!c,o[o.indexOf(e)]=null),l.__e(n,u,i)}}function N(n,u){l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function O(l,u,i,t,r,o,f,e){var s,a,h,y=i.props,p=u.props,d=u.type,_=0;if(\"svg\"===d&&(r=!0),null!=o)for(;_<o.length;_++)if((s=o[_])&&\"setAttribute\"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,o[_]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=r?document.createElementNS(\"http://www.w3.org/2000/svg\",d):document.createElement(d,p.is&&p),o=null,e=!1}if(null===d)y===p||e&&l.data===p||(l.data=p);else{if(o=o&&n.call(l.childNodes),a=(y=i.props||c).dangerouslySetInnerHTML,h=p.dangerouslySetInnerHTML,!e){if(null!=o)for(y={},_=0;_<l.attributes.length;_++)y[l.attributes[_].name]=l.attributes[_].value;(h||a)&&(h&&(a&&h.__html==a.__html||h.__html===l.innerHTML)||(l.innerHTML=h&&h.__html||\"\"))}if(k(l,p,y,r,e),h)u.__k=[];else if(_=u.props.children,H(l,Array.isArray(_)?_:[_],u,i,t,r&&\"foreignObject\"!==d,o,f,o?o[0]:i.__k&&A(i,0),e),null!=o)for(_=o.length;_--;)null!=o[_]&&v(o[_]);e||(\"value\"in p&&void 0!==(_=p.value)&&(_!==l.value||\"progress\"===d&&!_||\"option\"===d&&_!==y.value)&&g(l,\"value\",_,y.value,!1),\"checked\"in p&&void 0!==(_=p.checked)&&_!==l.checked&&g(l,\"checked\",_,y.checked,!1))}return l}function S(n,u,i){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,i)}}function q(n,u,i){var t,r;if(l.unmount&&l.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||S(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(n){l.__e(n,u)}t.base=t.__P=null,n.__c=void 0}if(t=n.__k)for(r=0;r<t.length;r++)t[r]&&q(t[r],u,i||\"function\"!=typeof n.type);i||null==n.__e||v(n.__e),n.__=n.__e=n.__d=void 0}function B(n,l,u){return this.constructor(n,u)}function D(u,i,t){var r,o,f;l.__&&l.__(u,i),o=(r=\"function\"==typeof t)?null:t&&t.__k||i.__k,f=[],M(i,u=(!r&&t||i).__k=y(_,null,[u]),o||c,c,void 0!==i.ownerSVGElement,!r&&t?[t]:o?null:i.firstChild?n.call(i.childNodes):null,f,!r&&t?t:o?o.__e:i.firstChild,r),N(f,u)}function E(n,l){D(n,l,E)}function F(l,u,i){var t,r,o,f=h({},l.props);for(o in u)\"key\"==o?t=u[o]:\"ref\"==o?r=u[o]:f[o]=u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),p(l.type,f,t||l.key,r||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,T(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,r,o;l=l.__;)if((t=l.__c)&&!t.__)try{if((r=t.constructor)&&null!=r.getDerivedStateFromError&&(t.setState(r.getDerivedStateFromError(n)),o=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),o=t.__d),o)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},t=!1,x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),T(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),T(this))},x.prototype.render=_,r=[],f=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,$.__r=0,e=0;export{x as Component,_ as Fragment,F as cloneElement,G as createContext,y as createElement,d as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,j as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar globalIsFinite = globalThis.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing\nvar FORCED = !''.substr || 'ab'.substr(-1) !== 'b';\n\n// `String.prototype.substr` method\n// https://tc39.es/ecma262/#sec-string.prototype.substr\n$({ target: 'String', proto: true, forced: FORCED }, {\n  substr: function substr(start, length) {\n    var that = toString(requireObjectCoercible(this));\n    var size = that.length;\n    var intStart = toIntegerOrInfinity(start);\n    var intLength, intEnd;\n    if (intStart === Infinity) intStart = 0;\n    if (intStart < 0) intStart = max(size + intStart, 0);\n    intLength = length === undefined ? size : toIntegerOrInfinity(length);\n    if (intLength <= 0 || intLength === Infinity) return '';\n    intEnd = min(intStart + intLength, size);\n    return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);\n  }\n});\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _react=_interopRequireDefault(require(\"react\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var _default=_react[\"default\"].createContext({});exports[\"default\"]=_default;\n//# sourceMappingURL=ReactTrackingContext.js.map","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n  link: function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar EventEmitter = require('events').EventEmitter;\nvar hidePrivateAndCertainPublicPropertiesInClass = require('./util').hidePrivateAndCertainPublicPropertiesInClass;\nmodule.exports = hidePrivateAndCertainPublicPropertiesInClass(EventEmitter, ['domain']);\n//# sourceMappingURL=eventemitter.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable react/no-multi-comp */\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  active: false,\n  disabled: false,\n  activeLabel: '(current)'\n};\nvar PageItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      style = _ref.style,\n      activeLabel = _ref.activeLabel,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"disabled\", \"className\", \"style\", \"activeLabel\", \"children\"]);\n\n  var Component = active || disabled ? 'span' : SafeAnchor;\n  return /*#__PURE__*/React.createElement(\"li\", {\n    ref: ref,\n    style: style,\n    className: classNames(className, 'page-item', {\n      active: active,\n      disabled: disabled\n    })\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    className: \"page-link\",\n    disabled: disabled\n  }, props), children, active && activeLabel && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, activeLabel)));\n});\nPageItem.defaultProps = defaultProps;\nPageItem.displayName = 'PageItem';\nexport default PageItem;\n\nfunction createButton(name, defaultValue, label) {\n  if (label === void 0) {\n    label = name;\n  }\n\n  function Button(_ref2) {\n    var children = _ref2.children,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n    return /*#__PURE__*/React.createElement(PageItem, props, /*#__PURE__*/React.createElement(\"span\", {\n      \"aria-hidden\": \"true\"\n    }, children || defaultValue), /*#__PURE__*/React.createElement(\"span\", {\n      className: \"sr-only\"\n    }, label));\n  }\n\n  Button.displayName = name;\n  return Button;\n}\n\nexport var First = createButton('First', '«');\nexport var Prev = createButton('Prev', '‹', 'Previous');\nexport var Ellipsis = createButton('Ellipsis', '…', 'More');\nexport var Next = createButton('Next', '›');\nexport var Last = createButton('Last', '»');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport PageItem, { Ellipsis, First, Last, Next, Prev } from './PageItem';\n\n/**\n * @property {PageItem} Item\n * @property {PageItem} First\n * @property {PageItem} Prev\n * @property {PageItem} Ellipsis\n * @property {PageItem} Next\n * @property {PageItem} Last\n */\nvar Pagination = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      size = _ref.size,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"size\"]);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'pagination');\n  return /*#__PURE__*/React.createElement(\"ul\", _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, decoratedBsPrefix, size && decoratedBsPrefix + \"-\" + size)\n  }), children);\n});\nPagination.First = First;\nPagination.Prev = Prev;\nPagination.Ellipsis = Ellipsis;\nPagination.Item = PageItem;\nPagination.Next = Next;\nPagination.Last = Last;\nexport default Pagination;","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxProperties' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxProperties') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' properties\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module hooks */ /** */\nvar transition_1 = require(\"../transition/transition\");\nvar router_1 = require(\"../router\");\nvar resolve_1 = require(\"../resolve\");\nvar common_1 = require(\"../common\");\nfunction addCoreResolvables(trans) {\n    trans.addResolvable(resolve_1.Resolvable.fromData(router_1.UIRouter, trans.router), '');\n    trans.addResolvable(resolve_1.Resolvable.fromData(transition_1.Transition, trans), '');\n    trans.addResolvable(resolve_1.Resolvable.fromData('$transition$', trans), '');\n    trans.addResolvable(resolve_1.Resolvable.fromData('$stateParams', trans.params()), '');\n    trans.entering().forEach(function (state) {\n        trans.addResolvable(resolve_1.Resolvable.fromData('$state$', state), state);\n    });\n}\nexports.registerAddCoreResolvables = function (transitionService) {\n    return transitionService.onCreate({}, addCoreResolvables);\n};\nvar TRANSITION_TOKENS = ['$transition$', transition_1.Transition];\nvar isTransition = common_1.inArray(TRANSITION_TOKENS);\n// References to Transition in the treeChanges pathnodes makes all\n// previous Transitions reachable in memory, causing a memory leak\n// This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n// Do not use this on current transitions, only on old ones.\nexports.treeChangesCleanup = function (trans) {\n    var nodes = common_1.values(trans.treeChanges()).reduce(common_1.unnestR, []).reduce(common_1.uniqR, []);\n    // If the resolvable is a Transition, return a new resolvable with null data\n    var replaceTransitionWithNull = function (r) {\n        return isTransition(r.token) ? resolve_1.Resolvable.fromData(r.token, null) : r;\n    };\n    nodes.forEach(function (node) {\n        node.resolvables = node.resolvables.map(replaceTransitionWithNull);\n    });\n};\n//# sourceMappingURL=coreResolvables.js.map","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var pointInPolygonFlat = require('./flat.js')\nvar pointInPolygonNested = require('./nested.js')\n\nmodule.exports = function pointInPolygon (point, vs, start, end) {\n    if (vs.length > 0 && Array.isArray(vs[0])) {\n        return pointInPolygonNested(point, vs, start, end);\n    } else {\n        return pointInPolygonFlat(point, vs, start, end);\n    }\n}\nmodule.exports.nested = pointInPolygonNested\nmodule.exports.flat = pointInPolygonFlat\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    var capabilityReject = capability.reject;\n    capabilityReject(r);\n    return capability.promise;\n  }\n});\n","function E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n  forEach: forEach\n});\n","/**\n * @license AngularJS v1.8.3\n * (c) 2010-2020 Google LLC. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\nvar $resourceMinErr = angular.$$minErr('$resource');\n\n// Helper functions and regex to lookup a dotted path on an object\n// stopping at undefined/null.  The path must be composed of ASCII\n// identifiers (just like $parse)\nvar MEMBER_NAME_REGEX = /^(\\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;\n\nfunction isValidDottedPath(path) {\n  return (path != null && path !== '' && path !== 'hasOwnProperty' &&\n      MEMBER_NAME_REGEX.test('.' + path));\n}\n\nfunction lookupDottedPath(obj, path) {\n  if (!isValidDottedPath(path)) {\n    throw $resourceMinErr('badmember', 'Dotted member path \"@{0}\" is invalid.', path);\n  }\n  var keys = path.split('.');\n  for (var i = 0, ii = keys.length; i < ii && angular.isDefined(obj); i++) {\n    var key = keys[i];\n    obj = (obj !== null) ? obj[key] : undefined;\n  }\n  return obj;\n}\n\n/**\n * Create a shallow copy of an object and clear other fields from the destination\n */\nfunction shallowClearAndCopy(src, dst) {\n  dst = dst || {};\n\n  angular.forEach(dst, function(value, key) {\n    delete dst[key];\n  });\n\n  for (var key in src) {\n    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n      dst[key] = src[key];\n    }\n  }\n\n  return dst;\n}\n\n/**\n * @ngdoc module\n * @name ngResource\n * @description\n *\n * The `ngResource` module provides interaction support with RESTful services\n * via the $resource service.\n *\n * See {@link ngResource.$resourceProvider} and {@link ngResource.$resource} for usage.\n */\n\n/**\n * @ngdoc provider\n * @name $resourceProvider\n *\n * @description\n *\n * Use `$resourceProvider` to change the default behavior of the {@link ngResource.$resource}\n * service.\n *\n * ## Dependencies\n * Requires the {@link ngResource } module to be installed.\n *\n */\n\n/**\n * @ngdoc service\n * @name $resource\n * @requires $http\n * @requires ng.$log\n * @requires $q\n * @requires ng.$timeout\n *\n * @description\n * A factory which creates a resource object that lets you interact with\n * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.\n *\n * The returned resource object has action methods which provide high-level behaviors without\n * the need to interact with the low level {@link ng.$http $http} service.\n *\n * Requires the {@link ngResource `ngResource`} module to be installed.\n *\n * By default, trailing slashes will be stripped from the calculated URLs,\n * which can pose problems with server backends that do not expect that\n * behavior.  This can be disabled by configuring the `$resourceProvider` like\n * this:\n *\n * ```js\n     app.config(['$resourceProvider', function($resourceProvider) {\n       // Don't strip trailing slashes from calculated URLs\n       $resourceProvider.defaults.stripTrailingSlashes = false;\n     }]);\n * ```\n *\n * @param {string} url A parameterized URL template with parameters prefixed by `:` as in\n *   `/user/:username`. If you are using a URL with a port number (e.g.\n *   `http://example.com:8080/api`), it will be respected.\n *\n *   If you are using a url with a suffix, just add the suffix, like this:\n *   `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`\n *   or even `$resource('http://example.com/resource/:resource_id.:format')`\n *   If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be\n *   collapsed down to a single `.`.  If you need this sequence to appear and not collapse then you\n *   can escape it with `/\\.`.\n *\n * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in\n *   `actions` methods. If a parameter value is a function, it will be called every time\n *   a param value needs to be obtained for a request (unless the param was overridden). The\n *   function will be passed the current data value as an argument.\n *\n *   Each key value in the parameter object is first bound to url template if present and then any\n *   excess keys are appended to the url search query after the `?`.\n *\n *   Given a template `/path/:verb` and parameter `{verb: 'greet', salutation: 'Hello'}` results in\n *   URL `/path/greet?salutation=Hello`.\n *\n *   If the parameter value is prefixed with `@`, then the value for that parameter will be\n *   extracted from the corresponding property on the `data` object (provided when calling actions\n *   with a request body).\n *   For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of\n *   `someParam` will be `data.someProp`.\n *   Note that the parameter will be ignored, when calling a \"GET\" action method (i.e. an action\n *   method that does not accept a request body).\n *\n * @param {Object.<Object>=} actions Hash with declaration of custom actions that will be available\n *   in addition to the default set of resource actions (see below). If a custom action has the same\n *   key as a default action (e.g. `save`), then the default action will be *overwritten*, and not\n *   extended.\n *\n *   The declaration should be created in the format of {@link ng.$http#usage $http.config}:\n *\n *       {\n *         action1: {method:?, params:?, isArray:?, headers:?, ...},\n *         action2: {method:?, params:?, isArray:?, headers:?, ...},\n *         ...\n *       }\n *\n *   Where:\n *\n *   - **`action`** – {string} – The name of action. This name becomes the name of the method on\n *     your resource object.\n *   - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,\n *     `DELETE`, `JSONP`, etc).\n *   - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of\n *     the parameter value is a function, it will be called every time when a param value needs to\n *     be obtained for a request (unless the param was overridden). The function will be passed the\n *     current data value as an argument.\n *   - **`url`** – {string} – Action specific `url` override. The url templating is supported just\n *     like for the resource-level urls.\n *   - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,\n *     see `returns` section.\n *   - **`transformRequest`** –\n *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –\n *     Transform function or an array of such functions. The transform function takes the http\n *     request body and headers and returns its transformed (typically serialized) version.\n *     By default, transformRequest will contain one function that checks if the request data is\n *     an object and serializes it using `angular.toJson`. To prevent this behavior, set\n *     `transformRequest` to an empty array: `transformRequest: []`\n *   - **`transformResponse`** –\n *     `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –\n *     Transform function or an array of such functions. The transform function takes the HTTP\n *     response body, headers and status and returns its transformed (typically deserialized)\n *     version.\n *     By default, transformResponse will contain one function that checks if the response looks\n *     like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior,\n *     set `transformResponse` to an empty array: `transformResponse: []`\n *   - **`cache`** – `{boolean|Cache}` – A boolean value or object created with\n *     {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of the HTTP response.\n *     See {@link $http#caching $http Caching} for more information.\n *   - **`timeout`** – `{number}` – Timeout in milliseconds.<br />\n *     **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are\n *     **not** supported in `$resource`, because the same value would be used for multiple requests.\n *     If you are looking for a way to cancel requests, you should use the `cancellable` option.\n *   - **`cancellable`** – `{boolean}` – If true, the request made by a \"non-instance\" call will be\n *     cancelled (if not already completed) by calling `$cancelRequest()` on the call's return\n *     value. Calling `$cancelRequest()` for a non-cancellable or an already completed/cancelled\n *     request will have no effect.\n *   - **`withCredentials`** – `{boolean}` – Whether to set the `withCredentials` flag on the\n *     XHR object. See\n *     [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)\n *     for more information.\n *   - **`responseType`** – `{string}` – See\n *     [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType).\n *   - **`interceptor`** – `{Object=}` – The interceptor object has four optional methods -\n *     `request`, `requestError`, `response`, and `responseError`. See\n *     {@link ng.$http#interceptors $http interceptors} for details. Note that\n *     `request`/`requestError` interceptors are applied before calling `$http`, thus before any\n *     global `$http` interceptors. Also, rejecting or throwing an error inside the `request`\n *     interceptor will result in calling the `responseError` interceptor.\n *     The resource instance or collection is available on the `resource` property of the\n *     `http response` object passed to `response`/`responseError` interceptors.\n *     Keep in mind that the associated promise will be resolved with the value returned by the\n *     response interceptors. Make sure you return an appropriate value and not the `response`\n *     object passed as input. For reference, the default `response` interceptor (which gets applied\n *     if you don't specify a custom one) returns `response.resource`.<br />\n *     See {@link ngResource.$resource#using-interceptors below} for an example of using\n *     interceptors in `$resource`.\n *   - **`hasBody`** – `{boolean}` – If true, then the request will have a body.\n *     If not specified, then only POST, PUT and PATCH requests will have a body. *\n * @param {Object} options Hash with custom settings that should extend the\n *   default `$resourceProvider` behavior.  The supported options are:\n *\n *   - **`stripTrailingSlashes`** – {boolean} – If true then the trailing\n *   slashes from any calculated URL will be stripped. (Defaults to true.)\n *   - **`cancellable`** – {boolean} – If true, the request made by a \"non-instance\" call will be\n *   cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value.\n *   This can be overwritten per action. (Defaults to false.)\n *\n * @returns {Object} A resource \"class\" object with methods for the default set of resource actions\n *   optionally extended with custom `actions`. The default set contains these actions:\n *   ```js\n *   {\n *     'get':    {method: 'GET'},\n *     'save':   {method: 'POST'},\n *     'query':  {method: 'GET', isArray: true},\n *     'remove': {method: 'DELETE'},\n *     'delete': {method: 'DELETE'}\n *   }\n *   ```\n *\n *   Calling these methods invoke {@link ng.$http} with the specified http method, destination and\n *   parameters. When the data is returned from the server then the object is an instance of the\n *   resource class. The actions `save`, `remove` and `delete` are available on it as methods with\n *   the `$` prefix. This allows you to easily perform CRUD operations (create, read, update,\n *   delete) on server-side data like this:\n *   ```js\n *   var User = $resource('/user/:userId', {userId: '@id'});\n *   User.get({userId: 123}).$promise.then(function(user) {\n *     user.abc = true;\n *     user.$save();\n *   });\n *   ```\n *\n *   It is important to realize that invoking a `$resource` object method immediately returns an\n *   empty reference (object or array depending on `isArray`). Once the data is returned from the\n *   server the existing reference is populated with the actual data. This is a useful trick since\n *   usually the resource is assigned to a model which is then rendered by the view. Having an empty\n *   object results in no rendering, once the data arrives from the server then the object is\n *   populated with the data and the view automatically re-renders itself showing the new data. This\n *   means that in most cases one never has to write a callback function for the action methods.\n *\n *   The action methods on the class object or instance object can be invoked with the following\n *   parameters:\n *\n *   - \"class\" actions without a body: `Resource.action([parameters], [success], [error])`\n *   - \"class\" actions with a body: `Resource.action([parameters], postData, [success], [error])`\n *   - instance actions: `instance.$action([parameters], [success], [error])`\n *\n *\n *   When calling instance methods, the instance itself is used as the request body (if the action\n *   should have a body). By default, only actions using `POST`, `PUT` or `PATCH` have request\n *   bodies, but you can use the `hasBody` configuration option to specify whether an action\n *   should have a body or not (regardless of its HTTP method).\n *\n *\n *   Success callback is called with (value (Object|Array), responseHeaders (Function),\n *   status (number), statusText (string)) arguments, where `value` is the populated resource\n *   instance or collection object. The error callback is called with (httpResponse) argument.\n *\n *   Class actions return an empty instance (with the additional properties listed below).\n *   Instance actions return a promise for the operation.\n *\n *   The Resource instances and collections have these additional properties:\n *\n *   - `$promise`: The {@link ng.$q promise} of the original server interaction that created this\n *     instance or collection.\n *\n *     On success, the promise is resolved with the same resource instance or collection object,\n *     updated with data from server. This makes it easy to use in the\n *     {@link ngRoute.$routeProvider `resolve` section of `$routeProvider.when()`} to defer view\n *     rendering until the resource(s) are loaded.\n *\n *     On failure, the promise is rejected with the {@link ng.$http http response} object.\n *\n *     If an interceptor object was provided, the promise will instead be resolved with the value\n *     returned by the response interceptor (on success) or responceError interceptor (on failure).\n *\n *   - `$resolved`: `true` after first server interaction is completed (either with success or\n *      rejection), `false` before that. Knowing if the Resource has been resolved is useful in\n *      data-binding. If there is a response/responseError interceptor and it returns a promise,\n *      `$resolved` will wait for that too.\n *\n *   The Resource instances and collections have these additional methods:\n *\n *   - `$cancelRequest`: If there is a cancellable, pending request related to the instance or\n *      collection, calling this method will abort the request.\n *\n *   The Resource instances have these additional methods:\n *\n *   - `toJSON`: It returns a simple object without any of the extra properties added as part of\n *     the Resource API. This object can be serialized through {@link angular.toJson} safely\n *     without attaching AngularJS-specific fields. Notice that `JSON.stringify` (and\n *     `angular.toJson`) automatically use this method when serializing a Resource instance\n *     (see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON%28%29_behavior)).\n *\n * @example\n *\n * ### Basic usage\n *\n   ```js\n     // Define a CreditCard class\n     var CreditCard = $resource('/users/:userId/cards/:cardId',\n       {userId: 123, cardId: '@id'}, {\n         charge: {method: 'POST', params: {charge: true}}\n       });\n\n     // We can retrieve a collection from the server\n     var cards = CreditCard.query();\n         // GET: /users/123/cards\n         // server returns: [{id: 456, number: '1234', name: 'Smith'}]\n\n     // Wait for the request to complete\n     cards.$promise.then(function() {\n       var card = cards[0];\n\n       // Each item is an instance of CreditCard\n       expect(card instanceof CreditCard).toEqual(true);\n\n       // Non-GET methods are mapped onto the instances\n       card.name = 'J. Smith';\n       card.$save();\n           // POST: /users/123/cards/456 {id: 456, number: '1234', name: 'J. Smith'}\n           // server returns: {id: 456, number: '1234', name: 'J. Smith'}\n\n       // Our custom method is mapped as well (since it uses POST)\n       card.$charge({amount: 9.99});\n           // POST: /users/123/cards/456?amount=9.99&charge=true {id: 456, number: '1234', name: 'J. Smith'}\n     });\n\n     // We can create an instance as well\n     var newCard = new CreditCard({number: '0123'});\n     newCard.name = 'Mike Smith';\n\n     var savePromise = newCard.$save();\n         // POST: /users/123/cards {number: '0123', name: 'Mike Smith'}\n         // server returns: {id: 789, number: '0123', name: 'Mike Smith'}\n\n     savePromise.then(function() {\n       // Once the promise is resolved, the created instance\n       // is populated with the data returned by the server\n       expect(newCard.id).toEqual(789);\n     });\n   ```\n *\n * The object returned from a call to `$resource` is a resource \"class\" which has one \"static\"\n * method for each action in the definition.\n *\n * Calling these methods invokes `$http` on the `url` template with the given HTTP `method`,\n * `params` and `headers`.\n *\n * @example\n *\n * ### Accessing the response\n *\n * When the data is returned from the server then the object is an instance of the resource type and\n * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD\n * operations (create, read, update, delete) on server-side data.\n *\n   ```js\n     var User = $resource('/users/:userId', {userId: '@id'});\n     User.get({userId: 123}).$promise.then(function(user) {\n       user.abc = true;\n       user.$save();\n     });\n   ```\n *\n * It's worth noting that the success callback for `get`, `query` and other methods gets called with\n * the resource instance (populated with the data that came from the server) as well as an `$http`\n * header getter function, the HTTP status code and the response status text. So one could rewrite\n * the above example and get access to HTTP headers as follows:\n *\n   ```js\n     var User = $resource('/users/:userId', {userId: '@id'});\n     User.get({userId: 123}, function(user, getResponseHeaders) {\n       user.abc = true;\n       user.$save(function(user, putResponseHeaders) {\n         // `user` => saved `User` object\n         // `putResponseHeaders` => `$http` header getter\n       });\n     });\n   ```\n *\n * @example\n *\n * ### Creating custom actions\n *\n * In this example we create a custom method on our resource to make a PUT request:\n *\n   ```js\n      var app = angular.module('app', ['ngResource']);\n\n      // Some APIs expect a PUT request in the format URL/object/ID\n      // Here we are creating an 'update' method\n      app.factory('Notes', ['$resource', function($resource) {\n        return $resource('/notes/:id', {id: '@id'}, {\n          update: {method: 'PUT'}\n        });\n      }]);\n\n      // In our controller we get the ID from the URL using `$location`\n      app.controller('NotesCtrl', ['$location', 'Notes', function($location, Notes) {\n        // First, retrieve the corresponding `Note` object from the server\n        // (Assuming a URL of the form `.../notes?id=XYZ`)\n        var noteId = $location.search().id;\n        var note = Notes.get({id: noteId});\n\n        note.$promise.then(function() {\n          note.content = 'Hello, world!';\n\n          // Now call `update` to save the changes on the server\n          Notes.update(note);\n              // This will PUT /notes/ID with the note object as the request payload\n\n          // Since `update` is a non-GET method, it will also be available on the instance\n          // (prefixed with `$`), so we could replace the `Note.update()` call with:\n          //note.$update();\n        });\n      }]);\n   ```\n *\n * @example\n *\n * ### Cancelling requests\n *\n * If an action's configuration specifies that it is cancellable, you can cancel the request related\n * to an instance or collection (as long as it is a result of a \"non-instance\" call):\n *\n   ```js\n     // ...defining the `Hotel` resource...\n     var Hotel = $resource('/api/hotels/:id', {id: '@id'}, {\n       // Let's make the `query()` method cancellable\n       query: {method: 'get', isArray: true, cancellable: true}\n     });\n\n     // ...somewhere in the PlanVacationController...\n     ...\n     this.onDestinationChanged = function onDestinationChanged(destination) {\n       // We don't care about any pending request for hotels\n       // in a different destination any more\n       if (this.availableHotels) {\n         this.availableHotels.$cancelRequest();\n       }\n\n       // Let's query for hotels in `destination`\n       // (calls: /api/hotels?location=<destination>)\n       this.availableHotels = Hotel.query({location: destination});\n     };\n   ```\n *\n * @example\n *\n * ### Using interceptors\n *\n * You can use interceptors to transform the request or response, perform additional operations, and\n * modify the returned instance/collection. The following example, uses `request` and `response`\n * interceptors to augment the returned instance with additional info:\n *\n   ```js\n     var Thing = $resource('/api/things/:id', {id: '@id'}, {\n       save: {\n         method: 'POST',\n         interceptor: {\n           request: function(config) {\n             // Before the request is sent out, store a timestamp on the request config\n             config.requestTimestamp = Date.now();\n             return config;\n           },\n           response: function(response) {\n             // Get the instance from the response object\n             var instance = response.resource;\n\n             // Augment the instance with a custom `saveLatency` property, computed as the time\n             // between sending the request and receiving the response.\n             instance.saveLatency = Date.now() - response.config.requestTimestamp;\n\n             // Return the instance\n             return instance;\n           }\n         }\n       }\n     });\n\n     Thing.save({foo: 'bar'}).$promise.then(function(thing) {\n       console.log('That thing was saved in ' + thing.saveLatency + 'ms.');\n     });\n   ```\n *\n */\nangular.module('ngResource', ['ng']).\n  info({ angularVersion: '1.8.3' }).\n  provider('$resource', function ResourceProvider() {\n    var PROTOCOL_AND_IPV6_REGEX = /^https?:\\/\\/\\[[^\\]]*][^/]*/;\n\n    var provider = this;\n\n    /**\n     * @ngdoc property\n     * @name $resourceProvider#defaults\n     * @description\n     * Object containing default options used when creating `$resource` instances.\n     *\n     * The default values satisfy a wide range of usecases, but you may choose to overwrite any of\n     * them to further customize your instances. The available properties are:\n     *\n     * - **stripTrailingSlashes** – `{boolean}` – If true, then the trailing slashes from any\n     *   calculated URL will be stripped.<br />\n     *   (Defaults to true.)\n     * - **cancellable** – `{boolean}` – If true, the request made by a \"non-instance\" call will be\n     *   cancelled (if not already completed) by calling `$cancelRequest()` on the call's return\n     *   value. For more details, see {@link ngResource.$resource}. This can be overwritten per\n     *   resource class or action.<br />\n     *   (Defaults to false.)\n     * - **actions** - `{Object.<Object>}` - A hash with default actions declarations. Actions are\n     *   high-level methods corresponding to RESTful actions/methods on resources. An action may\n     *   specify what HTTP method to use, what URL to hit, if the return value will be a single\n     *   object or a collection (array) of objects etc. For more details, see\n     *   {@link ngResource.$resource}. The actions can also be enhanced or overwritten per resource\n     *   class.<br />\n     *   The default actions are:\n     *   ```js\n     *   {\n     *     get: {method: 'GET'},\n     *     save: {method: 'POST'},\n     *     query: {method: 'GET', isArray: true},\n     *     remove: {method: 'DELETE'},\n     *     delete: {method: 'DELETE'}\n     *   }\n     *   ```\n     *\n     * #### Example\n     *\n     * For example, you can specify a new `update` action that uses the `PUT` HTTP verb:\n     *\n     * ```js\n     *   angular.\n     *     module('myApp').\n     *     config(['$resourceProvider', function ($resourceProvider) {\n     *       $resourceProvider.defaults.actions.update = {\n     *         method: 'PUT'\n     *       };\n     *     }]);\n     * ```\n     *\n     * Or you can even overwrite the whole `actions` list and specify your own:\n     *\n     * ```js\n     *   angular.\n     *     module('myApp').\n     *     config(['$resourceProvider', function ($resourceProvider) {\n     *       $resourceProvider.defaults.actions = {\n     *         create: {method: 'POST'},\n     *         get:    {method: 'GET'},\n     *         getAll: {method: 'GET', isArray:true},\n     *         update: {method: 'PUT'},\n     *         delete: {method: 'DELETE'}\n     *       };\n     *     });\n     * ```\n     *\n     */\n    this.defaults = {\n      // Strip slashes by default\n      stripTrailingSlashes: true,\n\n      // Make non-instance requests cancellable (via `$cancelRequest()`)\n      cancellable: false,\n\n      // Default actions configuration\n      actions: {\n        'get': {method: 'GET'},\n        'save': {method: 'POST'},\n        'query': {method: 'GET', isArray: true},\n        'remove': {method: 'DELETE'},\n        'delete': {method: 'DELETE'}\n      }\n    };\n\n    this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) {\n\n      var noop = angular.noop,\n          forEach = angular.forEach,\n          extend = angular.extend,\n          copy = angular.copy,\n          isArray = angular.isArray,\n          isDefined = angular.isDefined,\n          isFunction = angular.isFunction,\n          isNumber = angular.isNumber,\n          encodeUriQuery = angular.$$encodeUriQuery,\n          encodeUriSegment = angular.$$encodeUriSegment;\n\n      function Route(template, defaults) {\n        this.template = template;\n        this.defaults = extend({}, provider.defaults, defaults);\n        this.urlParams = {};\n      }\n\n      Route.prototype = {\n        setUrlParams: function(config, params, actionUrl) {\n          var self = this,\n            url = actionUrl || self.template,\n            val,\n            encodedVal,\n            protocolAndIpv6 = '';\n\n          var urlParams = self.urlParams = Object.create(null);\n          forEach(url.split(/\\W/), function(param) {\n            if (param === 'hasOwnProperty') {\n              throw $resourceMinErr('badname', 'hasOwnProperty is not a valid parameter name.');\n            }\n            if (!(new RegExp('^\\\\d+$').test(param)) && param &&\n              (new RegExp('(^|[^\\\\\\\\]):' + param + '(\\\\W|$)').test(url))) {\n              urlParams[param] = {\n                isQueryParamValue: (new RegExp('\\\\?.*=:' + param + '(?:\\\\W|$)')).test(url)\n              };\n            }\n          });\n          url = url.replace(/\\\\:/g, ':');\n          url = url.replace(PROTOCOL_AND_IPV6_REGEX, function(match) {\n            protocolAndIpv6 = match;\n            return '';\n          });\n\n          params = params || {};\n          forEach(self.urlParams, function(paramInfo, urlParam) {\n            val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];\n            if (isDefined(val) && val !== null) {\n              if (paramInfo.isQueryParamValue) {\n                encodedVal = encodeUriQuery(val, true);\n              } else {\n                encodedVal = encodeUriSegment(val);\n              }\n              url = url.replace(new RegExp(':' + urlParam + '(\\\\W|$)', 'g'), function(match, p1) {\n                return encodedVal + p1;\n              });\n            } else {\n              url = url.replace(new RegExp('(/?):' + urlParam + '(\\\\W|$)', 'g'), function(match,\n                  leadingSlashes, tail) {\n                if (tail.charAt(0) === '/') {\n                  return tail;\n                } else {\n                  return leadingSlashes + tail;\n                }\n              });\n            }\n          });\n\n          // strip trailing slashes and set the url (unless this behavior is specifically disabled)\n          if (self.defaults.stripTrailingSlashes) {\n            url = url.replace(/\\/+$/, '') || '/';\n          }\n\n          // Collapse `/.` if found in the last URL path segment before the query.\n          // E.g. `http://url.com/id/.format?q=x` becomes `http://url.com/id.format?q=x`.\n          url = url.replace(/\\/\\.(?=\\w+($|\\?))/, '.');\n          // Replace escaped `/\\.` with `/.`.\n          // (If `\\.` comes from a param value, it will be encoded as `%5C.`.)\n          config.url = protocolAndIpv6 + url.replace(/\\/(\\\\|%5C)\\./, '/.');\n\n\n          // set params - delegate param encoding to $http\n          forEach(params, function(value, key) {\n            if (!self.urlParams[key]) {\n              config.params = config.params || {};\n              config.params[key] = value;\n            }\n          });\n        }\n      };\n\n\n      function resourceFactory(url, paramDefaults, actions, options) {\n        var route = new Route(url, options);\n\n        actions = extend({}, provider.defaults.actions, actions);\n\n        function extractParams(data, actionParams) {\n          var ids = {};\n          actionParams = extend({}, paramDefaults, actionParams);\n          forEach(actionParams, function(value, key) {\n            if (isFunction(value)) { value = value(data); }\n            ids[key] = value && value.charAt && value.charAt(0) === '@' ?\n              lookupDottedPath(data, value.substr(1)) : value;\n          });\n          return ids;\n        }\n\n        function defaultResponseInterceptor(response) {\n          return response.resource;\n        }\n\n        function Resource(value) {\n          shallowClearAndCopy(value || {}, this);\n        }\n\n        Resource.prototype.toJSON = function() {\n          var data = extend({}, this);\n          delete data.$promise;\n          delete data.$resolved;\n          delete data.$cancelRequest;\n          return data;\n        };\n\n        forEach(actions, function(action, name) {\n          var hasBody = action.hasBody === true || (action.hasBody !== false && /^(POST|PUT|PATCH)$/i.test(action.method));\n          var numericTimeout = action.timeout;\n          var cancellable = isDefined(action.cancellable) ?\n              action.cancellable : route.defaults.cancellable;\n\n          if (numericTimeout && !isNumber(numericTimeout)) {\n            $log.debug('ngResource:\\n' +\n                       '  Only numeric values are allowed as `timeout`.\\n' +\n                       '  Promises are not supported in $resource, because the same value would ' +\n                       'be used for multiple requests. If you are looking for a way to cancel ' +\n                       'requests, you should use the `cancellable` option.');\n            delete action.timeout;\n            numericTimeout = null;\n          }\n\n          Resource[name] = function(a1, a2, a3, a4) {\n            var params = {}, data, onSuccess, onError;\n\n            switch (arguments.length) {\n              case 4:\n                onError = a4;\n                onSuccess = a3;\n                // falls through\n              case 3:\n              case 2:\n                if (isFunction(a2)) {\n                  if (isFunction(a1)) {\n                    onSuccess = a1;\n                    onError = a2;\n                    break;\n                  }\n\n                  onSuccess = a2;\n                  onError = a3;\n                  // falls through\n                } else {\n                  params = a1;\n                  data = a2;\n                  onSuccess = a3;\n                  break;\n                }\n                // falls through\n              case 1:\n                if (isFunction(a1)) onSuccess = a1;\n                else if (hasBody) data = a1;\n                else params = a1;\n                break;\n              case 0: break;\n              default:\n                throw $resourceMinErr('badargs',\n                  'Expected up to 4 arguments [params, data, success, error], got {0} arguments',\n                  arguments.length);\n            }\n\n            var isInstanceCall = this instanceof Resource;\n            var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));\n            var httpConfig = {};\n            var requestInterceptor = action.interceptor && action.interceptor.request || undefined;\n            var requestErrorInterceptor = action.interceptor && action.interceptor.requestError ||\n              undefined;\n            var responseInterceptor = action.interceptor && action.interceptor.response ||\n              defaultResponseInterceptor;\n            var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||\n              $q.reject;\n            var successCallback = onSuccess ? function(val) {\n              onSuccess(val, response.headers, response.status, response.statusText);\n            } : undefined;\n            var errorCallback = onError || undefined;\n            var timeoutDeferred;\n            var numericTimeoutPromise;\n            var response;\n\n            forEach(action, function(value, key) {\n              switch (key) {\n                default:\n                  httpConfig[key] = copy(value);\n                  break;\n                case 'params':\n                case 'isArray':\n                case 'interceptor':\n                case 'cancellable':\n                  break;\n              }\n            });\n\n            if (!isInstanceCall && cancellable) {\n              timeoutDeferred = $q.defer();\n              httpConfig.timeout = timeoutDeferred.promise;\n\n              if (numericTimeout) {\n                numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout);\n              }\n            }\n\n            if (hasBody) httpConfig.data = data;\n            route.setUrlParams(httpConfig,\n              extend({}, extractParams(data, action.params || {}), params),\n              action.url);\n\n            // Start the promise chain\n            var promise = $q.\n              resolve(httpConfig).\n              then(requestInterceptor).\n              catch(requestErrorInterceptor).\n              then($http);\n\n            promise = promise.then(function(resp) {\n              var data = resp.data;\n\n              if (data) {\n                // Need to convert action.isArray to boolean in case it is undefined\n                if (isArray(data) !== (!!action.isArray)) {\n                  throw $resourceMinErr('badcfg',\n                      'Error in resource configuration for action `{0}`. Expected response to ' +\n                      'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object',\n                    isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url);\n                }\n                if (action.isArray) {\n                  value.length = 0;\n                  forEach(data, function(item) {\n                    if (typeof item === 'object') {\n                      value.push(new Resource(item));\n                    } else {\n                      // Valid JSON values may be string literals, and these should not be converted\n                      // into objects. These items will not have access to the Resource prototype\n                      // methods, but unfortunately there\n                      value.push(item);\n                    }\n                  });\n                } else {\n                  var promise = value.$promise;     // Save the promise\n                  shallowClearAndCopy(data, value);\n                  value.$promise = promise;         // Restore the promise\n                }\n              }\n\n              resp.resource = value;\n              response = resp;\n              return responseInterceptor(resp);\n            }, function(rejectionOrResponse) {\n              rejectionOrResponse.resource = value;\n              response = rejectionOrResponse;\n              return responseErrorInterceptor(rejectionOrResponse);\n            });\n\n            promise = promise['finally'](function() {\n              value.$resolved = true;\n              if (!isInstanceCall && cancellable) {\n                value.$cancelRequest = noop;\n                $timeout.cancel(numericTimeoutPromise);\n                timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null;\n              }\n            });\n\n            // Run the `success`/`error` callbacks, but do not let them affect the returned promise.\n            promise.then(successCallback, errorCallback);\n\n            if (!isInstanceCall) {\n              // we are creating instance / collection\n              // - set the initial promise\n              // - return the instance / collection\n              value.$promise = promise;\n              value.$resolved = false;\n              if (cancellable) value.$cancelRequest = cancelRequest;\n\n              return value;\n            }\n\n            // instance call\n            return promise;\n\n            function cancelRequest(value) {\n              promise.catch(noop);\n              if (timeoutDeferred !== null) {\n                timeoutDeferred.resolve(value);\n              }\n            }\n          };\n\n\n          Resource.prototype['$' + name] = function(params, success, error) {\n            if (isFunction(params)) {\n              error = success; success = params; params = {};\n            }\n            var result = Resource[name].call(this, params, this, success, error);\n            return result.$promise || result;\n          };\n        });\n\n        return Resource;\n      }\n\n      return resourceFactory;\n    }];\n  });\n\n\n})(window, window.angular);\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.to-well-formed');\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n  var out = '';\n  var $async = it.schema.$async === true,\n    $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n    $id = it.self._getId(it.schema);\n  if (it.isTop) {\n    out += ' var validate = ';\n    if ($async) {\n      it.async = true;\n      out += 'async ';\n    }\n    out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n    if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n      out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n    }\n  }\n  if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n    var $keyword = 'false schema';\n    var $lvl = it.level;\n    var $dataLvl = it.dataLevel;\n    var $schema = it.schema[$keyword];\n    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n    var $breakOnError = !it.opts.allErrors;\n    var $errorKeyword;\n    var $data = 'data' + ($dataLvl || '');\n    var $valid = 'valid' + $lvl;\n    if (it.schema === false) {\n      if (it.isTop) {\n        $breakOnError = true;\n      } else {\n        out += ' var ' + ($valid) + ' = false; ';\n      }\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'boolean schema is false\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n    } else {\n      if (it.isTop) {\n        if ($async) {\n          out += ' return data; ';\n        } else {\n          out += ' validate.errors = null; return true; ';\n        }\n      } else {\n        out += ' var ' + ($valid) + ' = true; ';\n      }\n    }\n    if (it.isTop) {\n      out += ' }; return validate; ';\n    }\n    return out;\n  }\n  if (it.isTop) {\n    var $top = it.isTop,\n      $lvl = it.level = 0,\n      $dataLvl = it.dataLevel = 0,\n      $data = 'data';\n    it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n    it.baseId = it.baseId || it.rootId;\n    delete it.isTop;\n    it.dataPathArr = [undefined];\n    out += ' var vErrors = null; ';\n    out += ' var errors = 0;     ';\n    out += ' if (rootData === undefined) rootData = data; ';\n  } else {\n    var $lvl = it.level,\n      $dataLvl = it.dataLevel,\n      $data = 'data' + ($dataLvl || '');\n    if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n    if ($async && !it.async) throw new Error('async schema in sync schema');\n    out += ' var errs_' + ($lvl) + ' = errors;';\n  }\n  var $valid = 'valid' + $lvl,\n    $breakOnError = !it.opts.allErrors,\n    $closingBraces1 = '',\n    $closingBraces2 = '';\n  var $errorKeyword;\n  var $typeSchema = it.schema.type,\n    $typeIsArray = Array.isArray($typeSchema);\n  if ($typeIsArray && $typeSchema.length == 1) {\n    $typeSchema = $typeSchema[0];\n    $typeIsArray = false;\n  }\n  if (it.schema.$ref && $refKeywords) {\n    if (it.opts.extendRefs == 'fail') {\n      throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n    } else if (it.opts.extendRefs !== true) {\n      $refKeywords = false;\n      it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n    }\n  }\n  if (it.schema.$comment && it.opts.$comment) {\n    out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n  }\n  if ($typeSchema) {\n    if (it.opts.coerceTypes) {\n      var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n    }\n    var $rulesGroup = it.RULES.types[$typeSchema];\n    if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type';\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type',\n        $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n      out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';\n      if ($coerceToTypes) {\n        var $dataType = 'dataType' + $lvl,\n          $coerced = 'coerced' + $lvl;\n        out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';\n        if (it.opts.coerceTypes == 'array') {\n          out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \\'array\\'; ';\n        }\n        out += ' var ' + ($coerced) + ' = undefined; ';\n        var $bracesCoercion = '';\n        var arr1 = $coerceToTypes;\n        if (arr1) {\n          var $type, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $type = arr1[$i += 1];\n            if ($i) {\n              out += ' if (' + ($coerced) + ' === undefined) { ';\n              $bracesCoercion += '}';\n            }\n            if (it.opts.coerceTypes == 'array' && $type != 'array') {\n              out += ' if (' + ($dataType) + ' == \\'array\\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + ';  } ';\n            }\n            if ($type == 'string') {\n              out += ' if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n            } else if ($type == 'number' || $type == 'integer') {\n              out += ' if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n              if ($type == 'integer') {\n                out += ' && !(' + ($data) + ' % 1)';\n              }\n              out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n            } else if ($type == 'boolean') {\n              out += ' if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n            } else if ($type == 'null') {\n              out += ' if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n            } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n              out += ' if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n            }\n          }\n        }\n        out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else {  ';\n        var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n          $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n        out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n        if (!$dataLvl) {\n          out += 'if (' + ($parentData) + ' !== undefined)';\n        }\n        out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n      } else {\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      }\n      out += ' } ';\n    }\n  }\n  if (it.schema.$ref && !$refKeywords) {\n    out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n    if ($breakOnError) {\n      out += ' } if (errors === ';\n      if ($top) {\n        out += '0';\n      } else {\n        out += 'errs_' + ($lvl);\n      }\n      out += ') { ';\n      $closingBraces2 += '}';\n    }\n  } else {\n    var arr2 = it.RULES;\n    if (arr2) {\n      var $rulesGroup, i2 = -1,\n        l2 = arr2.length - 1;\n      while (i2 < l2) {\n        $rulesGroup = arr2[i2 += 1];\n        if ($shouldUseGroup($rulesGroup)) {\n          if ($rulesGroup.type) {\n            out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';\n          }\n          if (it.opts.useDefaults && !it.compositeRule) {\n            if ($rulesGroup.type == 'object' && it.schema.properties) {\n              var $schema = it.schema.properties,\n                $schemaKeys = Object.keys($schema);\n              var arr3 = $schemaKeys;\n              if (arr3) {\n                var $propertyKey, i3 = -1,\n                  l3 = arr3.length - 1;\n                while (i3 < l3) {\n                  $propertyKey = arr3[i3 += 1];\n                  var $sch = $schema[$propertyKey];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + it.util.getProperty($propertyKey);\n                    out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';\n                    if (it.opts.useDefaults == 'shared') {\n                      out += ' ' + (it.useDefault($sch.default)) + ' ';\n                    } else {\n                      out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                    }\n                    out += '; ';\n                  }\n                }\n              }\n            } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n              var arr4 = it.schema.items;\n              if (arr4) {\n                var $sch, $i = -1,\n                  l4 = arr4.length - 1;\n                while ($i < l4) {\n                  $sch = arr4[$i += 1];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + '[' + $i + ']';\n                    out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';\n                    if (it.opts.useDefaults == 'shared') {\n                      out += ' ' + (it.useDefault($sch.default)) + ' ';\n                    } else {\n                      out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                    }\n                    out += '; ';\n                  }\n                }\n              }\n            }\n          }\n          var arr5 = $rulesGroup.rules;\n          if (arr5) {\n            var $rule, i5 = -1,\n              l5 = arr5.length - 1;\n            while (i5 < l5) {\n              $rule = arr5[i5 += 1];\n              if ($shouldUseRule($rule)) {\n                var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n                if ($code) {\n                  out += ' ' + ($code) + ' ';\n                  if ($breakOnError) {\n                    $closingBraces1 += '}';\n                  }\n                }\n              }\n            }\n          }\n          if ($breakOnError) {\n            out += ' ' + ($closingBraces1) + ' ';\n            $closingBraces1 = '';\n          }\n          if ($rulesGroup.type) {\n            out += ' } ';\n            if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n              out += ' else { ';\n              var $schemaPath = it.schemaPath + '.type',\n                $errSchemaPath = it.errSchemaPath + '/type';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n                if ($typeIsArray) {\n                  out += '' + ($typeSchema.join(\",\"));\n                } else {\n                  out += '' + ($typeSchema);\n                }\n                out += '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'should be ';\n                  if ($typeIsArray) {\n                    out += '' + ($typeSchema.join(\",\"));\n                  } else {\n                    out += '' + ($typeSchema);\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              out += ' } ';\n            }\n          }\n          if ($breakOnError) {\n            out += ' if (errors === ';\n            if ($top) {\n              out += '0';\n            } else {\n              out += 'errs_' + ($lvl);\n            }\n            out += ') { ';\n            $closingBraces2 += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces2) + ' ';\n  }\n  if ($top) {\n    if ($async) {\n      out += ' if (errors === 0) return data;           ';\n      out += ' else throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; ';\n      out += ' return errors === 0;       ';\n    }\n    out += ' }; return validate;';\n  } else {\n    out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n  }\n  out = it.util.cleanUpCode(out);\n  if ($top) {\n    out = it.util.finalCleanUpCode(out, $async);\n  }\n\n  function $shouldUseGroup($rulesGroup) {\n    var rules = $rulesGroup.rules;\n    for (var i = 0; i < rules.length; i++)\n      if ($shouldUseRule(rules[i])) return true;\n  }\n\n  function $shouldUseRule($rule) {\n    return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n  }\n\n  function $ruleImplementsSomeKeyword($rule) {\n    var impl = $rule.implements;\n    for (var i = 0; i < impl.length; i++)\n      if (it.schema[impl[i]] !== undefined) return true;\n  }\n  return out;\n}\n","/* eslint-disable camelcase */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar EventEmitter = require('events').EventEmitter;\nvar getUserAgent = require('..').getUserAgent;\nvar MAX_RECONNECT_ATTEMPTS = 5;\nvar RECONNECT_INTERVAL_MS = 50;\nvar WS_CLOSE_NORMAL = 1000;\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar _a = require('../constants'), hardwareDevicePublisheriPad = _a.hardwareDevicePublisheriPad, hardwareDevicePublisheriPhone = _a.hardwareDevicePublisheriPhone;\nvar util = require('../../util');\nvar browserdetection = require('../browserdetection');\n/**\n * Publish events to the Insights gateway.\n * @extends EventEmitter\n * @emits InsightsPublisher#connected\n * @emits InsightsPublisher#disconnected\n * @emits InsightsPublisher#reconnecting\n */\nvar InsightsPublisher = /** @class */ (function (_super) {\n    __extends(InsightsPublisher, _super);\n    /**\n     * @param {string} token - Insights gateway token\n     * @param {string} sdkName - Name of the SDK using the {@link InsightsPublisher}\n     * @param {string} sdkVersion - Version of the SDK using the {@link InsightsPublisher}\n     * @param {string} environment - One of 'dev', 'stage' or 'prod'\n     * @param {string} realm - Region identifier\n     * @param {InsightsPublisherOptions} options - Override default behavior\n     */\n    function InsightsPublisher(token, sdkName, sdkVersion, environment, realm, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            gateway: createGateway(environment, realm) + \"/v1/VideoEvents\",\n            maxReconnectAttempts: MAX_RECONNECT_ATTEMPTS,\n            reconnectIntervalMs: RECONNECT_INTERVAL_MS,\n            userAgent: getUserAgent(),\n            WebSocket: WebSocket,\n        }, options);\n        Object.defineProperties(_this, {\n            _connectTimestamp: {\n                value: 0,\n                writable: true\n            },\n            _eventQueue: {\n                value: []\n            },\n            _readyToConnect: {\n                value: util.defer()\n            },\n            _reconnectAttemptsLeft: {\n                value: options.maxReconnectAttempts,\n                writable: true\n            },\n            _ws: {\n                value: null,\n                writable: true\n            },\n            _WebSocket: {\n                value: options.WebSocket\n            }\n        });\n        _this._readyToConnect.promise.then(function (_a) {\n            var roomSid = _a.roomSid, participantSid = _a.participantSid;\n            var self = _this;\n            _this.on('disconnected', function maybeReconnect(error) {\n                self._session = null;\n                if (error && self._reconnectAttemptsLeft > 0) {\n                    self.emit('reconnecting');\n                    reconnect(self, token, sdkName, sdkVersion, roomSid, participantSid, options);\n                    return;\n                }\n                self.removeListener('disconnected', maybeReconnect);\n            });\n            connect(_this, token, sdkName, sdkVersion, roomSid, participantSid, options);\n        }).catch(function () {\n            // ignore failures to connect\n        });\n        return _this;\n    }\n    /**\n     * Start connecting to the Insights gateway.\n     * @param {string} roomSid\n     * @param {string} participantSid\n     * @returns {void}\n     */\n    InsightsPublisher.prototype.connect = function (roomSid, participantSid) {\n        this._readyToConnect.resolve({ roomSid: roomSid, participantSid: participantSid });\n    };\n    /**\n     * Publish an event to the Insights gateway.\n     * @private\n     * @param {*} event\n     */\n    InsightsPublisher.prototype._publish = function (event) {\n        event.session = this._session;\n        this._ws.send(JSON.stringify(event));\n    };\n    /**\n     * Disconnect from the Insights gateway.\n     * @returns {boolean} true if called when connecting/open, false if not\n     */\n    InsightsPublisher.prototype.disconnect = function () {\n        if (this._ws === null\n            || this._ws.readyState === this._WebSocket.CLOSING\n            || this._ws.readyState === this._WebSocket.CLOSED) {\n            return false;\n        }\n        try {\n            this._ws.close();\n        }\n        catch (error) {\n            // Do nothing.\n        }\n        this.emit('disconnected');\n        return true;\n    };\n    /**\n     * Publish (or queue, if not connected) an event to the Insights gateway.\n     * @param {string} groupName - Event group name\n     * @param {string} eventName - Event name\n     * @param {object} payload - Event payload\n     * @returns {boolean} true if queued or published, false if disconnect() called\n     */\n    InsightsPublisher.prototype.publish = function (groupName, eventName, payload) {\n        if (this._ws !== null\n            && (this._ws.readyState === this._WebSocket.CLOSING\n                || this._ws.readyState === this._WebSocket.CLOSED)) {\n            return false;\n        }\n        var publishOrEnqueue = typeof this._session === 'string'\n            ? this._publish.bind(this)\n            : this._eventQueue.push.bind(this._eventQueue);\n        publishOrEnqueue({\n            group: groupName,\n            name: eventName,\n            payload: payload,\n            timestamp: Date.now(),\n            type: 'event',\n            version: 1\n        });\n        return true;\n    };\n    return InsightsPublisher;\n}(EventEmitter));\n/**\n * Start connecting to the Insights gateway.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} name\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n    publisher._connectTimestamp = Date.now();\n    publisher._reconnectAttemptsLeft--;\n    publisher._ws = new options.WebSocket(options.gateway);\n    var ws = publisher._ws;\n    ws.addEventListener('close', function (event) {\n        if (event.code === WS_CLOSE_NORMAL) {\n            publisher.emit('disconnected');\n            return;\n        }\n        publisher.emit('disconnected', new Error(\"WebSocket Error \" + event.code + \": \" + event.reason));\n    });\n    ws.addEventListener('message', function (message) {\n        handleConnectResponse(publisher, JSON.parse(message.data), options);\n    });\n    ws.addEventListener('open', function () {\n        var connectRequest = {\n            type: 'connect',\n            token: token,\n            version: 1\n        };\n        connectRequest.publisher = {\n            name: sdkName,\n            sdkVersion: sdkVersion,\n            userAgent: options.userAgent,\n            participantSid: participantSid,\n            roomSid: roomSid,\n        };\n        if (browserdetection.isIpad()) {\n            connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPad);\n        }\n        else if (browserdetection.isIphone()) {\n            connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPhone);\n        }\n        ws.send(JSON.stringify(connectRequest));\n    });\n}\n/**\n * Create the Insights Websocket gateway URL.\n * @param {string} environment\n * @param {string} realm\n * @returns {string}\n */\nfunction createGateway(environment, realm) {\n    return environment === 'prod' ? \"wss://sdkgw.\" + realm + \".twilio.com\"\n        : \"wss://sdkgw.\" + environment + \"-\" + realm + \".twilio.com\";\n}\n/**\n * Handle connect response from the Insights gateway.\n * @param {InsightsPublisher} publisher\n * @param {*} response\n * @param {InsightsPublisherOptions} options\n */\nfunction handleConnectResponse(publisher, response, options) {\n    switch (response.type) {\n        case 'connected':\n            publisher._session = response.session;\n            publisher._reconnectAttemptsLeft = options.maxReconnectAttempts;\n            publisher._eventQueue.splice(0).forEach(publisher._publish, publisher);\n            publisher.emit('connected');\n            break;\n        case 'error':\n            publisher._ws.close();\n            publisher.emit('disconnected', new Error(response.message));\n            break;\n    }\n}\n/**\n * Start re-connecting to the Insights gateway with an appropriate delay based\n * on InsightsPublisherOptions#reconnectIntervalMs.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction reconnect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n    var connectInterval = Date.now() - publisher._connectTimestamp;\n    var timeToWait = options.reconnectIntervalMs - connectInterval;\n    if (timeToWait > 0) {\n        setTimeout(function () {\n            connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n        }, timeToWait);\n        return;\n    }\n    connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n}\n/**\n * The {@link InsightsPublisher} is connected to the gateway.\n * @event InsightsPublisher#connected\n */\n/**\n * The {@link InsightsPublisher} is disconnected from the gateway.\n * @event InsightsPublisher#disconnected\n * @param {Error} [error] - Optional error if disconnected unintentionally\n */\n/**\n * The {@link InsightsPublisher} is re-connecting to the gateway.\n * @event InsightsPublisher#reconnecting\n */\n/**\n * {@link InsightsPublisher} options.\n * @typedef {object} InsightsPublisherOptions\n * @property {string} [gateway=sdkgw.{environment}-{realm}.twilio.com] - Insights WebSocket gateway url\n * @property {number} [maxReconnectAttempts=5] - Max re-connect attempts\n * @property {number} [reconnectIntervalMs=50] - Re-connect interval in ms\n */\nmodule.exports = InsightsPublisher;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxItems' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxItems') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' items\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport AbstractNavItem from './AbstractNavItem';\nimport { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  variant: undefined,\n  active: false,\n  disabled: false\n};\nvar ListGroupItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      variant = _ref.variant,\n      action = _ref.action,\n      as = _ref.as,\n      eventKey = _ref.eventKey,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"eventKey\", \"onClick\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'list-group-item');\n  var handleClick = useCallback(function (event) {\n    if (disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) onClick(event);\n  }, [disabled, onClick]);\n\n  if (disabled && props.tabIndex === undefined) {\n    props.tabIndex = -1;\n    props['aria-disabled'] = true;\n  }\n\n  return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({\n    ref: ref\n  }, props, {\n    // TODO: Restrict eventKey to string in v5?\n    eventKey: makeEventKey(eventKey, props.href) // eslint-disable-next-line no-nested-ternary\n    ,\n    as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n    onClick: handleClick,\n    className: classNames(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\")\n  }));\n});\nListGroupItem.defaultProps = defaultProps;\nListGroupItem.displayName = 'ListGroupItem';\nexport default ListGroupItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport warning from 'warning';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractNav from './AbstractNav';\nimport ListGroupItem from './ListGroupItem';\nvar defaultProps = {\n  variant: undefined,\n  horizontal: undefined\n};\nvar ListGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _useUncontrolled = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  }),\n      className = _useUncontrolled.className,\n      initialBsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      horizontal = _useUncontrolled.horizontal,\n      _useUncontrolled$as = _useUncontrolled.as,\n      as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"className\", \"bsPrefix\", \"variant\", \"horizontal\", \"as\"]);\n\n  var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'list-group');\n  var horizontalVariant;\n\n  if (horizontal) {\n    horizontalVariant = horizontal === true ? 'horizontal' : \"horizontal-\" + horizontal;\n  } else {\n    horizontalVariant = null;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(!(horizontal && variant === 'flush'), '`variant=\"flush\"` and `horizontal` should not be used together.') : void 0;\n  return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n    ref: ref\n  }, controlledProps, {\n    as: as,\n    className: classNames(className, bsPrefix, variant && bsPrefix + \"-\" + variant, horizontalVariant && bsPrefix + \"-\" + horizontalVariant)\n  }));\n});\nListGroup.defaultProps = defaultProps;\nListGroup.displayName = 'ListGroup';\nListGroup.Item = ListGroupItem;\nexport default ListGroup;","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar AsyncVar = require('../../util/asyncvar');\nvar Timeout = require('../../util/timeout');\nvar NETWORK_QUALITY_RESPONSE_TIME_MS = 5000;\n/**\n * @interface MediaSignalingTransport\n * @property {function(object): boolean} send\n * @emits MediaSignalingTransport#message\n */\n/**\n * The {@link MediaSignalingTransport} received a message.\n * @event MediaSignalingTransport#message\n * @param {object} message\n */\n/**\n * @interface LatencyStats\n * @property {number} jitter\n * @property {number} rtt\n * @property {number} level\n */\n/**\n * @interface FractionLostStats\n * @property {number} fractionLost\n * @property {number} level\n */\n/**\n * @interface BandwidthStats\n * @property {number} actual\n * @property {number} available\n * @property {number} level\n */\n/**\n * @interface SendOrRecvStats\n * @property {BandwidthStats} bandwidth\n * @property {FractionLostStats} fractionLost\n * @property {LatencyStats} latency\n */\n/**\n * @interface MediaLevels\n * @property {number} send\n * @property {SendOrRecvStats} sendStats\n * @property {number} recv\n * @property {SendOrRecvStats} recvStats\n */\n/**\n * @interface NetworkQualityLevels\n * @property {number} level\n * @property {MediaLevels} audio\n * @property {MediaLevels} video\n */\n/**\n * @typedef {PeerConnectionSummary} NetworkQualityInputs\n */\n/**\n * @classdesc The {@link NetworkQualitySignaling} class allows submitting\n *   {@link NetworkQualityInputs} for computing {@link NetworkQualityLevel}. It\n *   does so by sending and receiving messages over a\n *   {@link MediaSignalingTransport}. The exact transport used depends on the\n *   topology of the {@link Room} that {@link NetworkQualitySignaling} is being\n *   used within: for P2P Rooms, we re-use the {@link TransportV2}; and for\n *   Group Rooms, we use a {@link DataTransport}.\n * @emits NetworkQualitySignaling#updated\n */\nvar NetworkQualitySignaling = /** @class */ (function (_super) {\n    __extends(NetworkQualitySignaling, _super);\n    /**\n     * Construct a {@link NetworkQualitySignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n     */\n    function NetworkQualitySignaling(getReceiver, networkQualityConfiguration, options) {\n        var _this = _super.call(this, getReceiver, 'network_quality', options) || this;\n        Object.defineProperties(_this, {\n            _level: {\n                value: null,\n                writable: true\n            },\n            _levels: {\n                value: null,\n                writable: true\n            },\n            _remoteLevels: {\n                value: new Map(),\n                writable: true\n            },\n            _networkQualityInputs: {\n                value: new AsyncVar()\n            },\n            _resendTimer: {\n                value: new Timeout(function () {\n                    // and schedule next timer at x1.5 the delay..\n                    _this._resendTimer.setDelay(_this._resendTimer.delay * 1.5);\n                    _this._sendNetworkQualityInputs();\n                }, NETWORK_QUALITY_RESPONSE_TIME_MS, false),\n            },\n            _networkQualityReportLevels: {\n                get: function () {\n                    return {\n                        reportLevel: networkQualityConfiguration.local,\n                        remoteReportLevel: networkQualityConfiguration.remote\n                    };\n                }\n            }\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'network_quality':\n                        _this._handleNetworkQualityMessage(message);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        _this._sendNetworkQualityInputs();\n        return _this;\n    }\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"level\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} level - initially null\n         */\n        get: function () {\n            return this._level;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"levels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels}, if any.\n         * @returns {?NetworkQualityLevels} levels - initially null\n         */\n        get: function () {\n            return this._levels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"remoteLevels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n         * @returns {Map<String, NetworkQualityLevels>} remoteLevels\n         */\n        get: function () {\n            return this._remoteLevels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Check to see if the {@link NetworkQualityLevel} is new, and raise an\n     * event if necessary.\n     * @private\n     * @param {object} message\n     * @returns {void}\n     */\n    NetworkQualitySignaling.prototype._handleNetworkQualityMessage = function (message) {\n        var _this = this;\n        var updated = false;\n        var level = null;\n        var local = message ? message.local : null;\n        if (typeof local === 'number') {\n            // NOTE(mroberts): In prod, we plan to only send the level.\n            level = local;\n            this._levels = null;\n        }\n        else if (typeof local === 'object' && local) {\n            // NOTE(mroberts): In dev, we plan to send the decomposed levels. An early\n            // VMS version does not compute `level` for us, so we fallback to taking\n            // the minimum ourselves.\n            this._levels = local;\n            level = typeof local.level === 'number'\n                ? local.level\n                : Math.min(local.audio.send, local.audio.recv, local.video.send, local.video.recv);\n        }\n        if (level !== null && this.level !== level) {\n            this._level = level;\n            updated = true;\n        }\n        this._remoteLevels = message && message.remotes\n            ? message.remotes.reduce(function (levels, obj) {\n                var oldObj = _this._remoteLevels.get(obj.sid) || {};\n                if (oldObj.level !== obj.level) {\n                    updated = true;\n                }\n                return levels.set(obj.sid, obj);\n            }, new Map())\n            : this._remoteLevels;\n        if (updated) {\n            this.emit('updated');\n        }\n        // score is received. so reset the timer to default timeout.\n        this._resendTimer.setDelay(NETWORK_QUALITY_RESPONSE_TIME_MS);\n        // timer is cleared only while we are sending inputs.\n        // if we are already sending inputs do not send them again.\n        if (this._resendTimer.isSet) {\n            setTimeout(function () { return _this._sendNetworkQualityInputs(); }, 1000);\n        }\n    };\n    /**\n     * Start sending {@link NetworkQualityInputs}.\n     * @private\n     * @returns {Promise<void>}\n     */\n    NetworkQualitySignaling.prototype._sendNetworkQualityInputs = function () {\n        var _this = this;\n        this._resendTimer.clear();\n        return this._networkQualityInputs.take().then(function (networkQualityInputs) {\n            if (_this._transport) {\n                _this._transport.publish(createNetworkQualityInputsMessage(networkQualityInputs, _this._networkQualityReportLevels));\n            }\n        }).finally(function () {\n            _this._resendTimer.start();\n        });\n    };\n    /**\n     * Put {@link NetworkQualityInputs} to be used for computing\n     * {@link NetworkQualityLevel}.\n     * @param {NetworkQualityInputs} networkQualityInputs\n     * @returns {void}\n     */\n    NetworkQualitySignaling.prototype.put = function (networkQualityInputs) {\n        this._networkQualityInputs.put(networkQualityInputs);\n    };\n    return NetworkQualitySignaling;\n}(MediaSignaling));\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualitySignaling#updated\n */\n/**\n * @typedef {object} NetworkQualityReportLevels\n * @param {number} reportLevel\n * @param {number} remoteReportLevel\n */\n/**\n * @param {NetworkQualityInputs} networkQualityInputs\n * @param {NetworkQualityReportLevels} networkQualityReportLevels\n * @returns {object} message\n */\nfunction createNetworkQualityInputsMessage(networkQualityInputs, networkQualityReportLevels) {\n    return Object.assign({ type: 'network_quality' }, networkQualityInputs, networkQualityReportLevels);\n}\nmodule.exports = NetworkQualitySignaling;\n//# sourceMappingURL=networkqualitysignaling.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _pointGeometry = require('@mapbox/point-geometry');\n\nvar _pointGeometry2 = _interopRequireDefault(_pointGeometry);\n\nvar _lat_lng = require('./lib_geo/lat_lng');\n\nvar _lat_lng2 = _interopRequireDefault(_lat_lng);\n\nvar _transform = require('./lib_geo/transform');\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Geo = function () {\n  function Geo(tileSize) {\n    _classCallCheck(this, Geo);\n\n    // left_top view пользует гугл\n    // super();\n    this.hasSize_ = false;\n    this.hasView_ = false;\n    this.transform_ = new _transform2.default(tileSize || 512);\n  }\n\n  Geo.prototype.setView = function setView(center, zoom, bearing) {\n    this.transform_.center = _lat_lng2.default.convert(center);\n    this.transform_.zoom = +zoom;\n    this.transform_.bearing = +bearing;\n    this.hasView_ = true;\n  };\n\n  Geo.prototype.setViewSize = function setViewSize(width, height) {\n    this.transform_.width = width;\n    this.transform_.height = height;\n    this.hasSize_ = true;\n  };\n\n  Geo.prototype.setMapCanvasProjection = function setMapCanvasProjection(maps, mapCanvasProjection) {\n    this.maps_ = maps;\n    this.mapCanvasProjection_ = mapCanvasProjection;\n  };\n\n  Geo.prototype.canProject = function canProject() {\n    return this.hasSize_ && this.hasView_;\n  };\n\n  Geo.prototype.hasSize = function hasSize() {\n    return this.hasSize_;\n  };\n\n  /** Returns the pixel position relative to the map center. */\n\n\n  Geo.prototype.fromLatLngToCenterPixel = function fromLatLngToCenterPixel(ptLatLng) {\n    return this.transform_.locationPoint(_lat_lng2.default.convert(ptLatLng));\n  };\n\n  /**\n   * Returns the pixel position relative to the map panes,\n   * or relative to the map center if there are no panes.\n   */\n\n\n  Geo.prototype.fromLatLngToDivPixel = function fromLatLngToDivPixel(ptLatLng) {\n    if (this.mapCanvasProjection_) {\n      var latLng = new this.maps_.LatLng(ptLatLng.lat, ptLatLng.lng);\n      return this.mapCanvasProjection_.fromLatLngToDivPixel(latLng);\n    }\n    return this.fromLatLngToCenterPixel(ptLatLng);\n  };\n\n  /** Returns the pixel position relative to the map top-left. */\n\n\n  Geo.prototype.fromLatLngToContainerPixel = function fromLatLngToContainerPixel(ptLatLng) {\n    if (this.mapCanvasProjection_) {\n      var latLng = new this.maps_.LatLng(ptLatLng.lat, ptLatLng.lng);\n      return this.mapCanvasProjection_.fromLatLngToContainerPixel(latLng);\n    }\n\n    var pt = this.fromLatLngToCenterPixel(ptLatLng);\n    pt.x -= this.transform_.worldSize * Math.round(pt.x / this.transform_.worldSize);\n\n    pt.x += this.transform_.width / 2;\n    pt.y += this.transform_.height / 2;\n\n    return pt;\n  };\n\n  /** Returns the LatLng for the given offset from the map top-left. */\n\n\n  Geo.prototype.fromContainerPixelToLatLng = function fromContainerPixelToLatLng(ptXY) {\n    if (this.mapCanvasProjection_) {\n      var latLng = this.mapCanvasProjection_.fromContainerPixelToLatLng(ptXY);\n      return { lat: latLng.lat(), lng: latLng.lng() };\n    }\n\n    var ptxy = _extends({}, ptXY);\n    ptxy.x -= this.transform_.width / 2;\n    ptxy.y -= this.transform_.height / 2;\n    var ptRes = this.transform_.pointLocation(_pointGeometry2.default.convert(ptxy));\n\n    ptRes.lng -= 360 * Math.round(ptRes.lng / 360); // convert 2 google format\n    return ptRes;\n  };\n\n  Geo.prototype.getWidth = function getWidth() {\n    return this.transform_.width;\n  };\n\n  Geo.prototype.getHeight = function getHeight() {\n    return this.transform_.height;\n  };\n\n  Geo.prototype.getZoom = function getZoom() {\n    return this.transform_.zoom;\n  };\n\n  Geo.prototype.getCenter = function getCenter() {\n    var ptRes = this.transform_.pointLocation({ x: 0, y: 0 });\n\n    return ptRes;\n  };\n\n  Geo.prototype.getBounds = function getBounds(margins, roundFactor) {\n    var bndT = margins && margins[0] || 0;\n    var bndR = margins && margins[1] || 0;\n    var bndB = margins && margins[2] || 0;\n    var bndL = margins && margins[3] || 0;\n\n    if (this.getWidth() - bndR - bndL > 0 && this.getHeight() - bndT - bndB > 0) {\n      var topLeftCorner = this.transform_.pointLocation(_pointGeometry2.default.convert({\n        x: bndL - this.getWidth() / 2,\n        y: bndT - this.getHeight() / 2\n      }));\n      var bottomRightCorner = this.transform_.pointLocation(_pointGeometry2.default.convert({\n        x: this.getWidth() / 2 - bndR,\n        y: this.getHeight() / 2 - bndB\n      }));\n\n      var res = [topLeftCorner.lat, topLeftCorner.lng, // NW\n      bottomRightCorner.lat, bottomRightCorner.lng, // SE\n      bottomRightCorner.lat, topLeftCorner.lng, // SW\n      topLeftCorner.lat, bottomRightCorner.lng];\n\n      if (roundFactor) {\n        res = res.map(function (r) {\n          return Math.round(r * roundFactor) / roundFactor;\n        });\n      }\n      return res;\n    }\n\n    return [0, 0, 0, 0];\n  };\n\n  return Geo;\n}();\n\nexports.default = Geo;","'use strict';\nvar $ = require('../internals/export');\nvar fromAsync = require('../internals/array-from-async');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-array-fromasync -- safe\nvar nativeFromAsync = Array.fromAsync;\n// https://bugs.webkit.org/show_bug.cgi?id=271703\nvar INCORRECT_CONSTRUCTURING = !nativeFromAsync || fails(function () {\n  var counter = 0;\n  nativeFromAsync.call(function () {\n    counter++;\n    return [];\n  }, { length: 0 });\n  return counter !== 1;\n});\n\n// `Array.fromAsync` method\n// https://github.com/tc39/proposal-array-from-async\n$({ target: 'Array', stat: true, forced: INCORRECT_CONSTRUCTURING }, {\n  fromAsync: fromAsync\n});\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","var baseMerge = require('./_baseMerge'),\n    isObject = require('./isObject');\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n  if (isObject(objValue) && isObject(srcValue)) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, objValue);\n    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n    stack['delete'](srcValue);\n  }\n  return objValue;\n}\n\nmodule.exports = customDefaultsMerge;\n","/* globals RTCDataChannel, RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar ChromeRTCSessionDescription = require('../rtcsessiondescription/chrome');\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar MediaStream = require('../mediastream');\nvar RTCRtpSenderShim = require('../rtcrtpsender');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, isIOSChrome = _b.isIOSChrome, legacyPromise = _b.legacyPromise, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\n// NOTE(mroberts): This class wraps Chrome's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Chrome, namely the\n// abilities to\n//\n//   1. Rollback, per the workaround suggested here:\n//      https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n//\n//   2. Listen for track events, per the adapter.js workaround.\n//\n//   3. Set iceTransportPolicy.\n//\nvar ChromeRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(ChromeRTCPeerConnection, _super);\n    function ChromeRTCPeerConnection(configuration, constraints) {\n        if (configuration === void 0) { configuration = {}; }\n        var _this = _super.call(this) || this;\n        var newConfiguration = Object.assign(configuration.iceTransportPolicy\n            ? { iceTransports: configuration.iceTransportPolicy }\n            : {}, configuration);\n        interceptEvent(_this, 'datachannel');\n        interceptEvent(_this, 'signalingstatechange');\n        var sdpFormat = getSdpFormat(newConfiguration.sdpSemantics);\n        var peerConnection = new RTCPeerConnection(newConfiguration, constraints);\n        Object.defineProperties(_this, {\n            _appliedTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _localStream: {\n                value: new MediaStream()\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _pendingLocalOffer: {\n                value: null,\n                writable: true\n            },\n            _pendingRemoteOffer: {\n                value: null,\n                writable: true\n            },\n            _rolledBackTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _sdpFormat: {\n                value: sdpFormat\n            },\n            _senders: {\n                value: new Map()\n            },\n            _signalingStateLatch: {\n                value: new Latch()\n            },\n            _tracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            }\n        });\n        peerConnection.addEventListener('datachannel', function (event) {\n            shimDataChannel(event.channel);\n            _this.dispatchEvent(event);\n        });\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (peerConnection.signalingState === 'stable') {\n                _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n            }\n            if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n                _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n            }\n        });\n        peerConnection.ontrack = function () {\n            // NOTE(mroberts): adapter.js's \"track\" event shim only kicks off if we set\n            // the ontrack property of the RTCPeerConnection.\n        };\n        if (typeof peerConnection.addTrack !== 'function') {\n            peerConnection.addStream(_this._localStream);\n        }\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return this._pendingLocalOffer ? this._pendingLocalOffer : this._peerConnection.localDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"remoteDescription\", {\n        get: function () {\n            return this._pendingRemoteOffer ? this._pendingRemoteOffer : this._peerConnection.remoteDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            if (this._pendingLocalOffer) {\n                return 'have-local-offer';\n            }\n            else if (this._pendingRemoteOffer) {\n                return 'have-remote-offer';\n            }\n            return this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    // NOTE(mmalavalli): This shim supports our limited case of adding\n    // all MediaStreamTracks to one MediaStream. It has been implemented this\n    // keeping in mind that this is to be maintained only until \"addTrack\" is\n    // supported natively in Chrome.\n    ChromeRTCPeerConnection.prototype.addTrack = function (track) {\n        var _a;\n        var rest = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            rest[_i - 1] = arguments[_i];\n        }\n        if (typeof this._peerConnection.addTrack === 'function') {\n            return (_a = this._peerConnection).addTrack.apply(_a, __spreadArray([track], __read(rest)));\n        }\n        if (this._peerConnection.signalingState === 'closed') {\n            throw new Error(\"Cannot add MediaStreamTrack [\" + track.id + \", \\n        \" + track.kind + \"]: RTCPeerConnection is closed\");\n        }\n        var sender = this._senders.get(track);\n        if (sender && sender.track) {\n            throw new Error(\"Cannot add MediaStreamTrack ['\" + track.id + \", \\n        \" + track.kind + \"]: RTCPeerConnection already has it\");\n        }\n        this._peerConnection.removeStream(this._localStream);\n        this._localStream.addTrack(track);\n        this._peerConnection.addStream(this._localStream);\n        sender = new RTCRtpSenderShim(track);\n        this._senders.set(track, sender);\n        return sender;\n    };\n    // NOTE(mmalavalli): This shim supports our limited case of removing\n    // MediaStreamTracks from one MediaStream. It has been implemented this\n    // keeping in mind that this is to be maintained only until \"removeTrack\" is\n    // supported natively in Chrome.\n    ChromeRTCPeerConnection.prototype.removeTrack = function (sender) {\n        if (this._peerConnection.signalingState === 'closed') {\n            throw new Error('Cannot remove MediaStreamTrack: RTCPeerConnection is closed');\n        }\n        if (typeof this._peerConnection.addTrack === 'function') {\n            try {\n                return this._peerConnection.removeTrack(sender);\n            }\n            catch (e) {\n                // NOTE(mhuynh): Do nothing. In Chrome, will throw if a 'sender was not\n                // created by this peer connection'. This behavior does not seem to be\n                // spec compliant, so a temporary shim is introduced. A bug has been filed,\n                // and is tracked here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=860853\n            }\n        }\n        else {\n            var track = sender.track;\n            if (!track) {\n                return;\n            }\n            sender = this._senders.get(track);\n            if (sender && sender.track) {\n                sender.track = null;\n                this._peerConnection.removeStream(this._localStream);\n                this._localStream.removeTrack(track);\n                this._peerConnection.addStream(this._localStream);\n            }\n        }\n    };\n    ChromeRTCPeerConnection.prototype.getSenders = function () {\n        if (typeof this._peerConnection.addTrack === 'function') {\n            return this._peerConnection.getSenders();\n        }\n        return Array.from(this._senders.values());\n    };\n    ChromeRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n        var _this = this;\n        var rest = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            rest[_i - 1] = arguments[_i];\n        }\n        var promise;\n        if (this.signalingState === 'have-remote-offer') {\n            // NOTE(mroberts): Because the ChromeRTCPeerConnection simulates the\n            // \"have-remote-offer\" signalingStates, we only want to invoke the true\n            // addIceCandidates method when the remote description has been applied.\n            promise = this._signalingStateLatch.when('low').then(function () {\n                return _this._peerConnection.addIceCandidate(candidate);\n            });\n        }\n        else {\n            promise = this._peerConnection.addIceCandidate(candidate);\n        }\n        return rest.length > 0\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec does not specify that close should throw an\n    // Error; however, in Chrome it does. We workaround this by checking the\n    // signalingState manually.\n    ChromeRTCPeerConnection.prototype.close = function () {\n        if (this.signalingState !== 'closed') {\n            this._pendingLocalOffer = null;\n            this._pendingRemoteOffer = null;\n            this._peerConnection.close();\n        }\n    };\n    // NOTE(mroberts): Because we workaround Chrome's lack of rollback support by\n    // \"faking\" setRemoteDescription, we cannot create an answer until we actually\n    // apply the remote description. This means, once you call createAnswer, you\n    // can no longer rollback. This is acceptable for our use case because we will\n    // apply the newly-created answer almost immediately; however, this may be\n    // unacceptable for other use cases.\n    ChromeRTCPeerConnection.prototype.createAnswer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var promise;\n        if (this._pendingRemoteOffer) {\n            promise = this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n                // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n                // and the underlying RTCPeerConnection implementation have converged. We\n                // can unblock any pending calls to addIceCandidate now.\n                _this._signalingStateLatch.lower();\n                return _this._peerConnection.createAnswer();\n            }).then(function (answer) {\n                _this._pendingRemoteOffer = null;\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return new ChromeRTCSessionDescription({\n                    type: 'answer',\n                    sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n                });\n            }, function (error) {\n                _this._pendingRemoteOffer = null;\n                throw error;\n            });\n        }\n        else {\n            promise = this._peerConnection.createAnswer().then(function (answer) {\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return new ChromeRTCSessionDescription({\n                    type: 'answer',\n                    sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n                });\n            });\n        }\n        return args.length > 1\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args))) : promise;\n    };\n    ChromeRTCPeerConnection.prototype.createOffer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n        var options = arg3 || arg1 || {};\n        if (isIOSChrome()) {\n            // NOTE (joma): From SafariRTCPeerConnection in order to support iOS Chrome.\n            if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n                delete options.offerToReceiveAudio;\n                try {\n                    this._audioTransceiver = isUnifiedPlan\n                        ? this.addTransceiver('audio', { direction: 'recvonly' })\n                        : this.addTransceiver('audio');\n                }\n                catch (e) {\n                    return Promise.reject(e);\n                }\n            }\n            if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n                delete options.offerToReceiveVideo;\n                try {\n                    this._videoTransceiver = isUnifiedPlan\n                        ? this.addTransceiver('video', { direction: 'recvonly' })\n                        : this.addTransceiver('video');\n                }\n                catch (e) {\n                    return Promise.reject(e);\n                }\n            }\n        }\n        var promise = this._peerConnection.createOffer(options).then(function (offer) {\n            // NOTE(mmalavalli): If createOffer() is called immediately after rolling back, then we no\n            // longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return new ChromeRTCSessionDescription({\n                type: offer.type,\n                sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, offer.sdp)\n            });\n        });\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    ChromeRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n        dataChannelDict = shimDataChannelInit(dataChannelDict);\n        var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n        shimDataChannel(dataChannel);\n        return dataChannel;\n    };\n    ChromeRTCPeerConnection.prototype.setLocalDescription = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n        // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n        // then we need to restore the rolled back tracks to SSRCs Map.\n        if (this._rolledBackTracksToSSRCs.size > 0) {\n            this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n            this._rolledBackTracksToSSRCs.clear();\n        }\n        var promise = setDescription(this, true, description);\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    ChromeRTCPeerConnection.prototype.setRemoteDescription = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n        // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n        // then we no longer need to retain the rolled back tracks to SSRCs Map.\n        this._rolledBackTracksToSSRCs.clear();\n        var promise = setDescription(this, false, description);\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    return ChromeRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, ChromeRTCPeerConnection.prototype, '_peerConnection');\n// NOTE(mroberts): We workaround Chrome's lack of rollback support, per the\n// workaround suggested here: https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n// Namely, we \"fake\" setting the local or remote description and instead buffer\n// it. If we receive or create an answer, then we will actually apply the\n// description. Until we receive or create an answer, we will be able to\n// \"rollback\" by simply discarding the buffer description.\nfunction setDescription(peerConnection, local, description) {\n    function setPendingLocalOffer(offer) {\n        if (local) {\n            peerConnection._pendingLocalOffer = offer;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = offer;\n        }\n    }\n    function clearPendingLocalOffer() {\n        if (local) {\n            peerConnection._pendingLocalOffer = null;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = null;\n        }\n    }\n    var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n    var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n    var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    var promise;\n    if (!local && pendingRemoteOffer && description.type === 'answer') {\n        promise = setRemoteAnswer(peerConnection, description);\n    }\n    else if (description.type === 'offer') {\n        if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n            // NOTE(mroberts): Error message copied from Firefox.\n            return Promise.reject(new Error(\"Cannot set \" + (local ? 'local' : 'remote') + \" offer in state \" + peerConnection.signalingState));\n        }\n        // We need to save this local offer in case of a rollback. We also need to\n        // check to see if the signalingState between the ChromeRTCPeerConnection\n        // and the underlying RTCPeerConnection implementation are about to diverge.\n        // If so, we need to ensure subsequent calls to addIceCandidate will block.\n        if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n            peerConnection._signalingStateLatch.raise();\n        }\n        var previousSignalingState = peerConnection.signalingState;\n        setPendingLocalOffer(unwrap(description));\n        promise = Promise.resolve();\n        // Only dispatch a signalingstatechange event if we transitioned.\n        if (peerConnection.signalingState !== previousSignalingState) {\n            promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n    }\n    else if (description.type === 'rollback') {\n        if (peerConnection.signalingState !== intermediateState) {\n            // NOTE(mroberts): Error message copied from Firefox.\n            promise = Promise.reject(new Error(\"Cannot rollback \" + (local ? 'local' : 'remote') + \" description in \" + peerConnection.signalingState));\n        }\n        else {\n            // Reset the pending offer.\n            clearPendingLocalOffer();\n            // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n            // setLocalDescription() is called immediately after a rollback (without calling\n            // createOffer() or createAnswer()), in which case this roll back is not due to a\n            // glare scenario and this Map should be restored.\n            peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n            peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n            promise = Promise.resolve();\n            promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n    }\n    return promise || peerConnection._peerConnection[setLocalDescription](unwrap(description));\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n    // Apply the pending local offer.\n    var pendingLocalOffer = peerConnection._pendingLocalOffer;\n    return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n        peerConnection._pendingLocalOffer = null;\n        return peerConnection.setRemoteDescription(answer);\n    }).then(function () {\n        // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n        // and the underlying RTCPeerConnection implementation have converged. We\n        // can unblock any pending calls to addIceCandidate now.\n        peerConnection._signalingStateLatch.lower();\n    });\n}\n/**\n * Whether a ChromeRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {ChromeRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n    return !!peerConnection.getTransceivers().find(function (_a) {\n        var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n        var _c = receiver.track, track = _c === void 0 ? {} : _c;\n        return track.kind === kind;\n    });\n}\nfunction unwrap(description) {\n    if (description instanceof ChromeRTCSessionDescription) {\n        if (description._description) {\n            return description._description;\n        }\n    }\n    return new RTCSessionDescription(description);\n}\n/**\n * Check whether or not we need to apply our maxPacketLifeTime shim. We are\n * pretty conservative: we'll only apply it if the legacy maxRetransmitTime\n * property is available _and_ the standard maxPacketLifeTime property is _not_\n * available (the thinking being that Chrome will land the standards-compliant\n * property).\n * @returns {boolean}\n */\nfunction needsMaxPacketLifeTimeShim() {\n    return 'maxRetransmitTime' in RTCDataChannel.prototype\n        && !('maxPacketLifeTime' in RTCDataChannel.prototype);\n}\n/**\n * Shim an RTCDataChannelInit dictionary (if necessary). This function returns\n * a copy of the original RTCDataChannelInit.\n * @param {RTCDataChannelInit} dataChannelDict\n * @returns {RTCDataChannelInit}\n */\nfunction shimDataChannelInit(dataChannelDict) {\n    dataChannelDict = Object.assign({}, dataChannelDict);\n    if (needsMaxPacketLifeTimeShim() && 'maxPacketLifeTime' in dataChannelDict) {\n        dataChannelDict.maxRetransmitTime = dataChannelDict.maxPacketLifeTime;\n    }\n    return dataChannelDict;\n}\n/**\n * Shim an RTCDataChannel (if necessary). This function mutates the\n * RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n    Object.defineProperty(dataChannel, 'maxRetransmits', {\n        value: dataChannel.maxRetransmits === 65535\n            ? null\n            : dataChannel.maxRetransmits\n    });\n    if (needsMaxPacketLifeTimeShim()) {\n        // NOTE(mroberts): We can rename `maxRetransmitTime` to `maxPacketLifeTime`.\n        //\n        //   https://bugs.chromium.org/p/chromium/issues/detail?id=696681\n        //\n        Object.defineProperty(dataChannel, 'maxPacketLifeTime', {\n            value: dataChannel.maxRetransmitTime === 65535\n                ? null\n                : dataChannel.maxRetransmitTime\n        });\n    }\n    return dataChannel;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {'planb'|'unified'} sdpFormat\n * @param {Map<string, Set<string>>} tracksToSSRCs\n * @param {string} sdp - an SDP whose format is determined by `sdpSemantics`\n * @returns {string} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(sdpFormat, tracksToSSRCs, sdp) {\n    return sdpFormat === 'unified'\n        ? updateUnifiedPlanTrackIdsToSSRCs(tracksToSSRCs, sdp)\n        : updatePlanBTrackIdsToSSRCs(tracksToSSRCs, sdp);\n}\nmodule.exports = ChromeRTCPeerConnection;\n//# sourceMappingURL=chrome.js.map","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","module.exports = function deepFreeze (o) {\n  Object.freeze(o);\n\n  Object.getOwnPropertyNames(o).forEach(function (prop) {\n    if (o.hasOwnProperty(prop)\n    && o[prop] !== null\n    && (typeof o[prop] === \"object\" || typeof o[prop] === \"function\")\n    && !Object.isFrozen(o[prop])) {\n      deepFreeze(o[prop]);\n    }\n  });\n  \n  return o;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'ul' : _ref$as,\n      onSelect = _ref.onSelect,\n      activeKey = _ref.activeKey,\n      role = _ref.role,\n      onKeyDown = _ref.onKeyDown,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"]);\n\n  // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n  // and don't want to reset the set in the effect\n  var forceUpdate = useForceUpdate();\n  var needsRefocusRef = useRef(false);\n  var parentOnSelect = useContext(SelectableContext);\n  var tabContext = useContext(TabContext);\n  var getControlledId, getControllerId;\n\n  if (tabContext) {\n    role = role || 'tablist';\n    activeKey = tabContext.activeKey;\n    getControlledId = tabContext.getControlledId;\n    getControllerId = tabContext.getControllerId;\n  }\n\n  var listNode = useRef(null);\n\n  var getNextActiveChild = function getNextActiveChild(offset) {\n    var currentListNode = listNode.current;\n    if (!currentListNode) return null;\n    var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n    var activeChild = currentListNode.querySelector('.active');\n    if (!activeChild) return null;\n    var index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    var nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  var handleSelect = function handleSelect(key, event) {\n    if (key == null) return;\n    if (onSelect) onSelect(key, event);\n    if (parentOnSelect) parentOnSelect(key, event);\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    if (onKeyDown) onKeyDown(event);\n    var nextActiveChild;\n\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowUp':\n        nextActiveChild = getNextActiveChild(-1);\n        break;\n\n      case 'ArrowRight':\n      case 'ArrowDown':\n        nextActiveChild = getNextActiveChild(1);\n        break;\n\n      default:\n        return;\n    }\n\n    if (!nextActiveChild) return;\n    event.preventDefault();\n    handleSelect(nextActiveChild.dataset.rbEventKey, event);\n    needsRefocusRef.current = true;\n    forceUpdate();\n  };\n\n  useEffect(function () {\n    if (listNode.current && needsRefocusRef.current) {\n      var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n      if (activeChild) activeChild.focus();\n    }\n\n    needsRefocusRef.current = false;\n  });\n  var mergedRef = useMergedRefs(ref, listNode);\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleSelect\n  }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n    value: {\n      role: role,\n      // used by NavLink to determine it's role\n      activeKey: makeEventKey(activeKey),\n      getControlledId: getControlledId || noop,\n      getControllerId: getControllerId || noop\n    }\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    onKeyDown: handleKeyDown,\n    ref: mergedRef,\n    role: role\n  }))));\n});\nexport default AbstractNav;","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = globalThis.parseInt;\nvar Symbol = globalThis.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  date.setFullYear(year + 1, 0, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code> is calculated.\n */\nvar NetworkQualityRecvStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityRecvStats, _super);\n    /**\n     * Construct a {@link NetworkQualityRecvStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualityRecvStats(sendOrRecvStats) {\n        return _super.call(this, sendOrRecvStats) || this;\n    }\n    return NetworkQualityRecvStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualityRecvStats;\n//# sourceMappingURL=networkqualityrecvstats.js.map","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\n}\n","'use strict';\nmodule.exports = (function (scope) {\n    var location = scope.location, URL = scope.URL;\n    if ([location, URL].some(function (api) { return !api; })) {\n        return function dynamicImportNotSupported(module) {\n            return Promise.reject(new Error(\"Failed to import: \" + module + \": dynamicImport is not supported\"));\n        };\n    }\n    scope.__twilioVideoImportedModules = {\n    // Imported module map.\n    };\n    return function dynamicImport(module) {\n        if (module in scope.__twilioVideoImportedModules) {\n            return Promise.resolve(scope.__twilioVideoImportedModules[module]);\n        }\n        // NOTE(mmalavalli): Calling import() directly can cause build issues in TypeScript and Webpack\n        // (and probably other frameworks). So, we create a Function that calls import() in its body.\n        // eslint-disable-next-line no-new-func\n        return new Function('scope', \"return import('\" + new URL(module, location) + \"').then(m => scope.__twilioVideoImportedModules['\" + module + \"'] = m);\")(scope);\n    };\n}(globalThis));\n//# sourceMappingURL=dynamicimport.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).predicates={})}(this,function(t){\"use strict\";const e=134217729,n=33306690738754706e-32;function r(t,e,n,r,o){let f,i,u,c,s=e[0],a=r[0],d=0,l=0;a>s==a>-s?(f=s,s=e[++d]):(f=a,a=r[++l]);let p=0;if(d<t&&l<n)for(a>s==a>-s?(u=f-((i=s+f)-s),s=e[++d]):(u=f-((i=a+f)-a),a=r[++l]),f=i,0!==u&&(o[p++]=u);d<t&&l<n;)a>s==a>-s?(u=f-((i=f+s)-(c=i-f))+(s-c),s=e[++d]):(u=f-((i=f+a)-(c=i-f))+(a-c),a=r[++l]),f=i,0!==u&&(o[p++]=u);for(;d<t;)u=f-((i=f+s)-(c=i-f))+(s-c),s=e[++d],f=i,0!==u&&(o[p++]=u);for(;l<n;)u=f-((i=f+a)-(c=i-f))+(a-c),a=r[++l],f=i,0!==u&&(o[p++]=u);return 0===f&&0!==p||(o[p++]=f),p}function o(t){return new Float64Array(t)}const f=33306690738754716e-32,i=22204460492503146e-32,u=11093356479670487e-47,c=o(4),s=o(8),a=o(12),d=o(16),l=o(4);t.orient2d=function(t,o,p,b,y,h){const M=(o-h)*(p-y),x=(t-y)*(b-h),j=M-x;if(0===M||0===x||M>0!=x>0)return j;const m=Math.abs(M+x);return Math.abs(j)>=f*m?j:-function(t,o,f,p,b,y,h){let M,x,j,m,_,v,w,A,F,O,P,g,k,q,z,B,C,D;const E=t-b,G=f-b,H=o-y,I=p-y;_=(z=(A=E-(w=(v=e*E)-(v-E)))*(O=I-(F=(v=e*I)-(v-I)))-((q=E*I)-w*F-A*F-w*O))-(P=z-(C=(A=H-(w=(v=e*H)-(v-H)))*(O=G-(F=(v=e*G)-(v-G)))-((B=H*G)-w*F-A*F-w*O))),c[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),c[1]=k-(P+_)+(_-B),_=(D=g+P)-g,c[2]=g-(D-_)+(P-_),c[3]=D;let J=function(t,e){let n=e[0];for(let r=1;r<t;r++)n+=e[r];return n}(4,c),K=i*h;if(J>=K||-J>=K)return J;if(M=t-(E+(_=t-E))+(_-b),j=f-(G+(_=f-G))+(_-b),x=o-(H+(_=o-H))+(_-y),m=p-(I+(_=p-I))+(_-y),0===M&&0===x&&0===j&&0===m)return J;if(K=u*h+n*Math.abs(J),(J+=E*m+I*M-(H*j+G*x))>=K||-J>=K)return J;_=(z=(A=M-(w=(v=e*M)-(v-M)))*(O=I-(F=(v=e*I)-(v-I)))-((q=M*I)-w*F-A*F-w*O))-(P=z-(C=(A=x-(w=(v=e*x)-(v-x)))*(O=G-(F=(v=e*G)-(v-G)))-((B=x*G)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const L=r(4,c,4,l,s);_=(z=(A=E-(w=(v=e*E)-(v-E)))*(O=m-(F=(v=e*m)-(v-m)))-((q=E*m)-w*F-A*F-w*O))-(P=z-(C=(A=H-(w=(v=e*H)-(v-H)))*(O=j-(F=(v=e*j)-(v-j)))-((B=H*j)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const N=r(L,s,4,l,a);_=(z=(A=M-(w=(v=e*M)-(v-M)))*(O=m-(F=(v=e*m)-(v-m)))-((q=M*m)-w*F-A*F-w*O))-(P=z-(C=(A=x-(w=(v=e*x)-(v-x)))*(O=j-(F=(v=e*j)-(v-j)))-((B=x*j)-w*F-A*F-w*O))),l[0]=z-(P+_)+(_-C),_=(k=q-((g=q+P)-(_=g-q))+(P-_))-(P=k-B),l[1]=k-(P+_)+(_-B),_=(D=g+P)-g,l[2]=g-(D-_)+(P-_),l[3]=D;const Q=r(N,a,4,l,d);return d[Q-1]}(t,o,p,b,y,h,m)},t.orient2dfast=function(t,e,n,r,o,f){return(e-f)*(n-o)-(t-o)*(r-f)},Object.defineProperty(t,\"__esModule\",{value:!0})});\n","/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n  var version = \"1.9.4\";\n\n  /*\r\n   * @namespace Util\r\n   *\r\n   * Various utility functions, used by Leaflet internally.\r\n   */\r\n\r\n  // @function extend(dest: Object, src?: Object): Object\r\n  // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n  function extend(dest) {\r\n  \tvar i, j, len, src;\r\n\r\n  \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n  \t\tsrc = arguments[j];\r\n  \t\tfor (i in src) {\r\n  \t\t\tdest[i] = src[i];\r\n  \t\t}\r\n  \t}\r\n  \treturn dest;\r\n  }\r\n\r\n  // @function create(proto: Object, properties?: Object): Object\r\n  // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n  var create$2 = Object.create || (function () {\r\n  \tfunction F() {}\r\n  \treturn function (proto) {\r\n  \t\tF.prototype = proto;\r\n  \t\treturn new F();\r\n  \t};\r\n  })();\r\n\r\n  // @function bind(fn: Function, …): Function\r\n  // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n  // Has a `L.bind()` shortcut.\r\n  function bind(fn, obj) {\r\n  \tvar slice = Array.prototype.slice;\r\n\r\n  \tif (fn.bind) {\r\n  \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n  \t}\r\n\r\n  \tvar args = slice.call(arguments, 2);\r\n\r\n  \treturn function () {\r\n  \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n  \t};\r\n  }\r\n\r\n  // @property lastId: Number\r\n  // Last unique ID used by [`stamp()`](#util-stamp)\r\n  var lastId = 0;\r\n\r\n  // @function stamp(obj: Object): Number\r\n  // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n  function stamp(obj) {\r\n  \tif (!('_leaflet_id' in obj)) {\r\n  \t\tobj['_leaflet_id'] = ++lastId;\r\n  \t}\r\n  \treturn obj._leaflet_id;\r\n  }\r\n\r\n  // @function throttle(fn: Function, time: Number, context: Object): Function\r\n  // Returns a function which executes function `fn` with the given scope `context`\r\n  // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n  // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n  // received by the bound function will be any arguments passed when binding the\r\n  // function, followed by any arguments passed when invoking the bound function.\r\n  // Has an `L.throttle` shortcut.\r\n  function throttle(fn, time, context) {\r\n  \tvar lock, args, wrapperFn, later;\r\n\r\n  \tlater = function () {\r\n  \t\t// reset lock and call if queued\r\n  \t\tlock = false;\r\n  \t\tif (args) {\r\n  \t\t\twrapperFn.apply(context, args);\r\n  \t\t\targs = false;\r\n  \t\t}\r\n  \t};\r\n\r\n  \twrapperFn = function () {\r\n  \t\tif (lock) {\r\n  \t\t\t// called too soon, queue to call later\r\n  \t\t\targs = arguments;\r\n\r\n  \t\t} else {\r\n  \t\t\t// call and lock until later\r\n  \t\t\tfn.apply(context, arguments);\r\n  \t\t\tsetTimeout(later, time);\r\n  \t\t\tlock = true;\r\n  \t\t}\r\n  \t};\r\n\r\n  \treturn wrapperFn;\r\n  }\r\n\r\n  // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n  // Returns the number `num` modulo `range` in such a way so it lies within\r\n  // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n  // `range[1]` unless `includeMax` is set to `true`.\r\n  function wrapNum(x, range, includeMax) {\r\n  \tvar max = range[1],\r\n  \t    min = range[0],\r\n  \t    d = max - min;\r\n  \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n  }\r\n\r\n  // @function falseFn(): Function\r\n  // Returns a function which always returns `false`.\r\n  function falseFn() { return false; }\r\n\r\n  // @function formatNum(num: Number, precision?: Number|false): Number\r\n  // Returns the number `num` rounded with specified `precision`.\r\n  // The default `precision` value is 6 decimal places.\r\n  // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n  function formatNum(num, precision) {\r\n  \tif (precision === false) { return num; }\r\n  \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n  \treturn Math.round(num * pow) / pow;\r\n  }\r\n\r\n  // @function trim(str: String): String\r\n  // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n  function trim(str) {\r\n  \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n  }\r\n\r\n  // @function splitWords(str: String): String[]\r\n  // Trims and splits the string on whitespace and returns the array of parts.\r\n  function splitWords(str) {\r\n  \treturn trim(str).split(/\\s+/);\r\n  }\r\n\r\n  // @function setOptions(obj: Object, options: Object): Object\r\n  // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n  function setOptions(obj, options) {\r\n  \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n  \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n  \t}\r\n  \tfor (var i in options) {\r\n  \t\tobj.options[i] = options[i];\r\n  \t}\r\n  \treturn obj.options;\r\n  }\r\n\r\n  // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n  // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n  // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n  // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n  // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n  function getParamString(obj, existingUrl, uppercase) {\r\n  \tvar params = [];\r\n  \tfor (var i in obj) {\r\n  \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n  \t}\r\n  \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n  }\r\n\r\n  var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n  // @function template(str: String, data: Object): String\r\n  // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n  // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n  // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n  // data values — they will be evaluated passing `data` as an argument.\r\n  function template(str, data) {\r\n  \treturn str.replace(templateRe, function (str, key) {\r\n  \t\tvar value = data[key];\r\n\r\n  \t\tif (value === undefined) {\r\n  \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n  \t\t} else if (typeof value === 'function') {\r\n  \t\t\tvalue = value(data);\r\n  \t\t}\r\n  \t\treturn value;\r\n  \t});\r\n  }\r\n\r\n  // @function isArray(obj): Boolean\r\n  // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n  var isArray = Array.isArray || function (obj) {\r\n  \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n  };\r\n\r\n  // @function indexOf(array: Array, el: Object): Number\r\n  // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n  function indexOf(array, el) {\r\n  \tfor (var i = 0; i < array.length; i++) {\r\n  \t\tif (array[i] === el) { return i; }\r\n  \t}\r\n  \treturn -1;\r\n  }\r\n\r\n  // @property emptyImageUrl: String\r\n  // Data URI string containing a base64-encoded empty GIF image.\r\n  // Used as a hack to free memory from unused images on WebKit-powered\r\n  // mobile devices (by setting image `src` to this string).\r\n  var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n  // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n  function getPrefixed(name) {\r\n  \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n  }\r\n\r\n  var lastTime = 0;\r\n\r\n  // fallback for IE 7-8\r\n  function timeoutDefer(fn) {\r\n  \tvar time = +new Date(),\r\n  \t    timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n  \tlastTime = time + timeToCall;\r\n  \treturn window.setTimeout(fn, timeToCall);\r\n  }\r\n\r\n  var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n  var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n  \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n  // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n  // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n  // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n  // the browser doesn't have native support for\r\n  // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n  // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n  function requestAnimFrame(fn, context, immediate) {\r\n  \tif (immediate && requestFn === timeoutDefer) {\r\n  \t\tfn.call(context);\r\n  \t} else {\r\n  \t\treturn requestFn.call(window, bind(fn, context));\r\n  \t}\r\n  }\r\n\r\n  // @function cancelAnimFrame(id: Number): undefined\r\n  // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n  function cancelAnimFrame(id) {\r\n  \tif (id) {\r\n  \t\tcancelFn.call(window, id);\r\n  \t}\r\n  }\n\n  var Util = {\n    __proto__: null,\n    extend: extend,\n    create: create$2,\n    bind: bind,\n    get lastId () { return lastId; },\n    stamp: stamp,\n    throttle: throttle,\n    wrapNum: wrapNum,\n    falseFn: falseFn,\n    formatNum: formatNum,\n    trim: trim,\n    splitWords: splitWords,\n    setOptions: setOptions,\n    getParamString: getParamString,\n    template: template,\n    isArray: isArray,\n    indexOf: indexOf,\n    emptyImageUrl: emptyImageUrl,\n    requestFn: requestFn,\n    cancelFn: cancelFn,\n    requestAnimFrame: requestAnimFrame,\n    cancelAnimFrame: cancelAnimFrame\n  };\n\n  // @class Class\r\n  // @aka L.Class\r\n\r\n  // @section\r\n  // @uninheritable\r\n\r\n  // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n  function Class() {}\r\n\r\n  Class.extend = function (props) {\r\n\r\n  \t// @function extend(props: Object): Function\r\n  \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n  \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n  \tvar NewClass = function () {\r\n\r\n  \t\tsetOptions(this);\r\n\r\n  \t\t// call the constructor\r\n  \t\tif (this.initialize) {\r\n  \t\t\tthis.initialize.apply(this, arguments);\r\n  \t\t}\r\n\r\n  \t\t// call all constructor hooks\r\n  \t\tthis.callInitHooks();\r\n  \t};\r\n\r\n  \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n  \tvar proto = create$2(parentProto);\r\n  \tproto.constructor = NewClass;\r\n\r\n  \tNewClass.prototype = proto;\r\n\r\n  \t// inherit parent's statics\r\n  \tfor (var i in this) {\r\n  \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n  \t\t\tNewClass[i] = this[i];\r\n  \t\t}\r\n  \t}\r\n\r\n  \t// mix static properties into the class\r\n  \tif (props.statics) {\r\n  \t\textend(NewClass, props.statics);\r\n  \t}\r\n\r\n  \t// mix includes into the prototype\r\n  \tif (props.includes) {\r\n  \t\tcheckDeprecatedMixinEvents(props.includes);\r\n  \t\textend.apply(null, [proto].concat(props.includes));\r\n  \t}\r\n\r\n  \t// mix given properties into the prototype\r\n  \textend(proto, props);\r\n  \tdelete proto.statics;\r\n  \tdelete proto.includes;\r\n\r\n  \t// merge options\r\n  \tif (proto.options) {\r\n  \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n  \t\textend(proto.options, props.options);\r\n  \t}\r\n\r\n  \tproto._initHooks = [];\r\n\r\n  \t// add method for calling all hooks\r\n  \tproto.callInitHooks = function () {\r\n\r\n  \t\tif (this._initHooksCalled) { return; }\r\n\r\n  \t\tif (parentProto.callInitHooks) {\r\n  \t\t\tparentProto.callInitHooks.call(this);\r\n  \t\t}\r\n\r\n  \t\tthis._initHooksCalled = true;\r\n\r\n  \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n  \t\t\tproto._initHooks[i].call(this);\r\n  \t\t}\r\n  \t};\r\n\r\n  \treturn NewClass;\r\n  };\r\n\r\n\r\n  // @function include(properties: Object): this\r\n  // [Includes a mixin](#class-includes) into the current class.\r\n  Class.include = function (props) {\r\n  \tvar parentOptions = this.prototype.options;\r\n  \textend(this.prototype, props);\r\n  \tif (props.options) {\r\n  \t\tthis.prototype.options = parentOptions;\r\n  \t\tthis.mergeOptions(props.options);\r\n  \t}\r\n  \treturn this;\r\n  };\r\n\r\n  // @function mergeOptions(options: Object): this\r\n  // [Merges `options`](#class-options) into the defaults of the class.\r\n  Class.mergeOptions = function (options) {\r\n  \textend(this.prototype.options, options);\r\n  \treturn this;\r\n  };\r\n\r\n  // @function addInitHook(fn: Function): this\r\n  // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n  Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n  \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n  \tvar init = typeof fn === 'function' ? fn : function () {\r\n  \t\tthis[fn].apply(this, args);\r\n  \t};\r\n\r\n  \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n  \tthis.prototype._initHooks.push(init);\r\n  \treturn this;\r\n  };\r\n\r\n  function checkDeprecatedMixinEvents(includes) {\r\n  \t/* global L: true */\r\n  \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n  \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n  \tfor (var i = 0; i < includes.length; i++) {\r\n  \t\tif (includes[i] === L.Mixin.Events) {\r\n  \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n  \t\t\t\t'this property will be removed in future releases, ' +\r\n  \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n  \t\t}\r\n  \t}\r\n  }\n\n  /*\r\n   * @class Evented\r\n   * @aka L.Evented\r\n   * @inherits Class\r\n   *\r\n   * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * map.on('click', function(e) {\r\n   * \talert(e.latlng);\r\n   * } );\r\n   * ```\r\n   *\r\n   * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n   *\r\n   * ```js\r\n   * function onClick(e) { ... }\r\n   *\r\n   * map.on('click', onClick);\r\n   * map.off('click', onClick);\r\n   * ```\r\n   */\r\n\r\n  var Events = {\r\n  \t/* @method on(type: String, fn: Function, context?: Object): this\r\n  \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n  \t *\r\n  \t * @alternative\r\n  \t * @method on(eventMap: Object): this\r\n  \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n  \t */\r\n  \ton: function (types, fn, context) {\r\n\r\n  \t\t// types can be a map of types/handlers\r\n  \t\tif (typeof types === 'object') {\r\n  \t\t\tfor (var type in types) {\r\n  \t\t\t\t// we don't process space-separated events here for performance;\r\n  \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n  \t\t\t\tthis._on(type, types[type], fn);\r\n  \t\t\t}\r\n\r\n  \t\t} else {\r\n  \t\t\t// types can be a string of space-separated words\r\n  \t\t\ttypes = splitWords(types);\r\n\r\n  \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n  \t\t\t\tthis._on(types[i], fn, context);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n  \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n  \t *\r\n  \t * @alternative\r\n  \t * @method off(eventMap: Object): this\r\n  \t * Removes a set of type/listener pairs.\r\n  \t *\r\n  \t * @alternative\r\n  \t * @method off: this\r\n  \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n  \t */\r\n  \toff: function (types, fn, context) {\r\n\r\n  \t\tif (!arguments.length) {\r\n  \t\t\t// clear all listeners if called without arguments\r\n  \t\t\tdelete this._events;\r\n\r\n  \t\t} else if (typeof types === 'object') {\r\n  \t\t\tfor (var type in types) {\r\n  \t\t\t\tthis._off(type, types[type], fn);\r\n  \t\t\t}\r\n\r\n  \t\t} else {\r\n  \t\t\ttypes = splitWords(types);\r\n\r\n  \t\t\tvar removeAll = arguments.length === 1;\r\n  \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n  \t\t\t\tif (removeAll) {\r\n  \t\t\t\t\tthis._off(types[i]);\r\n  \t\t\t\t} else {\r\n  \t\t\t\t\tthis._off(types[i], fn, context);\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// attach listener (without syntactic sugar now)\r\n  \t_on: function (type, fn, context, _once) {\r\n  \t\tif (typeof fn !== 'function') {\r\n  \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\t// check if fn already there\r\n  \t\tif (this._listens(type, fn, context) !== false) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (context === this) {\r\n  \t\t\t// Less memory footprint.\r\n  \t\t\tcontext = undefined;\r\n  \t\t}\r\n\r\n  \t\tvar newListener = {fn: fn, ctx: context};\r\n  \t\tif (_once) {\r\n  \t\t\tnewListener.once = true;\r\n  \t\t}\r\n\r\n  \t\tthis._events = this._events || {};\r\n  \t\tthis._events[type] = this._events[type] || [];\r\n  \t\tthis._events[type].push(newListener);\r\n  \t},\r\n\r\n  \t_off: function (type, fn, context) {\r\n  \t\tvar listeners,\r\n  \t\t    i,\r\n  \t\t    len;\r\n\r\n  \t\tif (!this._events) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tlisteners = this._events[type];\r\n  \t\tif (!listeners) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (arguments.length === 1) { // remove all\r\n  \t\t\tif (this._firingCount) {\r\n  \t\t\t\t// Set all removed listeners to noop\r\n  \t\t\t\t// so they are not called if remove happens in fire\r\n  \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n  \t\t\t\t\tlisteners[i].fn = falseFn;\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t\t// clear all listeners for a type if function isn't specified\r\n  \t\t\tdelete this._events[type];\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (typeof fn !== 'function') {\r\n  \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\t// find fn and remove it\r\n  \t\tvar index = this._listens(type, fn, context);\r\n  \t\tif (index !== false) {\r\n  \t\t\tvar listener = listeners[index];\r\n  \t\t\tif (this._firingCount) {\r\n  \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n  \t\t\t\tlistener.fn = falseFn;\r\n\r\n  \t\t\t\t/* copy array in case events are being fired */\r\n  \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n  \t\t\t}\r\n  \t\t\tlisteners.splice(index, 1);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n  \t// Fires an event of the specified type. You can optionally provide a data\r\n  \t// object — the first argument of the listener function will contain its\r\n  \t// properties. The event can optionally be propagated to event parents.\r\n  \tfire: function (type, data, propagate) {\r\n  \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n  \t\tvar event = extend({}, data, {\r\n  \t\t\ttype: type,\r\n  \t\t\ttarget: this,\r\n  \t\t\tsourceTarget: data && data.sourceTarget || this\r\n  \t\t});\r\n\r\n  \t\tif (this._events) {\r\n  \t\t\tvar listeners = this._events[type];\r\n  \t\t\tif (listeners) {\r\n  \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n  \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n  \t\t\t\t\tvar l = listeners[i];\r\n  \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n  \t\t\t\t\tvar fn = l.fn;\r\n  \t\t\t\t\tif (l.once) {\r\n  \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n  \t\t\t\t\t}\r\n  \t\t\t\t\tfn.call(l.ctx || this, event);\r\n  \t\t\t\t}\r\n\r\n  \t\t\t\tthis._firingCount--;\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tif (propagate) {\r\n  \t\t\t// propagate the event to parents (set with addEventParent)\r\n  \t\t\tthis._propagateEvent(event);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n  \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n  \t// Returns `true` if a particular event type has any listeners attached to it.\r\n  \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n  \tlistens: function (type, fn, context, propagate) {\r\n  \t\tif (typeof type !== 'string') {\r\n  \t\t\tconsole.warn('\"string\" type argument expected');\r\n  \t\t}\r\n\r\n  \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n  \t\tvar _fn = fn;\r\n  \t\tif (typeof fn !== 'function') {\r\n  \t\t\tpropagate = !!fn;\r\n  \t\t\t_fn = undefined;\r\n  \t\t\tcontext = undefined;\r\n  \t\t}\r\n\r\n  \t\tvar listeners = this._events && this._events[type];\r\n  \t\tif (listeners && listeners.length) {\r\n  \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n  \t\t\t\treturn true;\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tif (propagate) {\r\n  \t\t\t// also check parents for listeners if event propagates\r\n  \t\t\tfor (var id in this._eventParents) {\r\n  \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\treturn false;\r\n  \t},\r\n\r\n  \t// returns the index (number) or false\r\n  \t_listens: function (type, fn, context) {\r\n  \t\tif (!this._events) {\r\n  \t\t\treturn false;\r\n  \t\t}\r\n\r\n  \t\tvar listeners = this._events[type] || [];\r\n  \t\tif (!fn) {\r\n  \t\t\treturn !!listeners.length;\r\n  \t\t}\r\n\r\n  \t\tif (context === this) {\r\n  \t\t\t// Less memory footprint.\r\n  \t\t\tcontext = undefined;\r\n  \t\t}\r\n\r\n  \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n  \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n  \t\t\t\treturn i;\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\treturn false;\r\n\r\n  \t},\r\n\r\n  \t// @method once(…): this\r\n  \t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n  \tonce: function (types, fn, context) {\r\n\r\n  \t\t// types can be a map of types/handlers\r\n  \t\tif (typeof types === 'object') {\r\n  \t\t\tfor (var type in types) {\r\n  \t\t\t\t// we don't process space-separated events here for performance;\r\n  \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n  \t\t\t\tthis._on(type, types[type], fn, true);\r\n  \t\t\t}\r\n\r\n  \t\t} else {\r\n  \t\t\t// types can be a string of space-separated words\r\n  \t\t\ttypes = splitWords(types);\r\n\r\n  \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n  \t\t\t\tthis._on(types[i], fn, context, true);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method addEventParent(obj: Evented): this\r\n  \t// Adds an event parent - an `Evented` that will receive propagated events\r\n  \taddEventParent: function (obj) {\r\n  \t\tthis._eventParents = this._eventParents || {};\r\n  \t\tthis._eventParents[stamp(obj)] = obj;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method removeEventParent(obj: Evented): this\r\n  \t// Removes an event parent, so it will stop receiving propagated events\r\n  \tremoveEventParent: function (obj) {\r\n  \t\tif (this._eventParents) {\r\n  \t\t\tdelete this._eventParents[stamp(obj)];\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_propagateEvent: function (e) {\r\n  \t\tfor (var id in this._eventParents) {\r\n  \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n  \t\t\t\tlayer: e.target,\r\n  \t\t\t\tpropagatedFrom: e.target\r\n  \t\t\t}, e), true);\r\n  \t\t}\r\n  \t}\r\n  };\r\n\r\n  // aliases; we should ditch those eventually\r\n\r\n  // @method addEventListener(…): this\r\n  // Alias to [`on(…)`](#evented-on)\r\n  Events.addEventListener = Events.on;\r\n\r\n  // @method removeEventListener(…): this\r\n  // Alias to [`off(…)`](#evented-off)\r\n\r\n  // @method clearAllEventListeners(…): this\r\n  // Alias to [`off()`](#evented-off)\r\n  Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n  // @method addOneTimeEventListener(…): this\r\n  // Alias to [`once(…)`](#evented-once)\r\n  Events.addOneTimeEventListener = Events.once;\r\n\r\n  // @method fireEvent(…): this\r\n  // Alias to [`fire(…)`](#evented-fire)\r\n  Events.fireEvent = Events.fire;\r\n\r\n  // @method hasEventListeners(…): Boolean\r\n  // Alias to [`listens(…)`](#evented-listens)\r\n  Events.hasEventListeners = Events.listens;\r\n\r\n  var Evented = Class.extend(Events);\n\n  /*\r\n   * @class Point\r\n   * @aka L.Point\r\n   *\r\n   * Represents a point with `x` and `y` coordinates in pixels.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var point = L.point(200, 300);\r\n   * ```\r\n   *\r\n   * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n   *\r\n   * ```js\r\n   * map.panBy([200, 300]);\r\n   * map.panBy(L.point(200, 300));\r\n   * ```\r\n   *\r\n   * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n   * which means new classes can't inherit from it, and new methods\r\n   * can't be added to it with the `include` function.\r\n   */\r\n\r\n  function Point(x, y, round) {\r\n  \t// @property x: Number; The `x` coordinate of the point\r\n  \tthis.x = (round ? Math.round(x) : x);\r\n  \t// @property y: Number; The `y` coordinate of the point\r\n  \tthis.y = (round ? Math.round(y) : y);\r\n  }\r\n\r\n  var trunc = Math.trunc || function (v) {\r\n  \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n  };\r\n\r\n  Point.prototype = {\r\n\r\n  \t// @method clone(): Point\r\n  \t// Returns a copy of the current point.\r\n  \tclone: function () {\r\n  \t\treturn new Point(this.x, this.y);\r\n  \t},\r\n\r\n  \t// @method add(otherPoint: Point): Point\r\n  \t// Returns the result of addition of the current and the given points.\r\n  \tadd: function (point) {\r\n  \t\t// non-destructive, returns a new point\r\n  \t\treturn this.clone()._add(toPoint(point));\r\n  \t},\r\n\r\n  \t_add: function (point) {\r\n  \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n  \t\tthis.x += point.x;\r\n  \t\tthis.y += point.y;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method subtract(otherPoint: Point): Point\r\n  \t// Returns the result of subtraction of the given point from the current.\r\n  \tsubtract: function (point) {\r\n  \t\treturn this.clone()._subtract(toPoint(point));\r\n  \t},\r\n\r\n  \t_subtract: function (point) {\r\n  \t\tthis.x -= point.x;\r\n  \t\tthis.y -= point.y;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method divideBy(num: Number): Point\r\n  \t// Returns the result of division of the current point by the given number.\r\n  \tdivideBy: function (num) {\r\n  \t\treturn this.clone()._divideBy(num);\r\n  \t},\r\n\r\n  \t_divideBy: function (num) {\r\n  \t\tthis.x /= num;\r\n  \t\tthis.y /= num;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method multiplyBy(num: Number): Point\r\n  \t// Returns the result of multiplication of the current point by the given number.\r\n  \tmultiplyBy: function (num) {\r\n  \t\treturn this.clone()._multiplyBy(num);\r\n  \t},\r\n\r\n  \t_multiplyBy: function (num) {\r\n  \t\tthis.x *= num;\r\n  \t\tthis.y *= num;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method scaleBy(scale: Point): Point\r\n  \t// Multiply each coordinate of the current point by each coordinate of\r\n  \t// `scale`. In linear algebra terms, multiply the point by the\r\n  \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n  \t// defined by `scale`.\r\n  \tscaleBy: function (point) {\r\n  \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n  \t},\r\n\r\n  \t// @method unscaleBy(scale: Point): Point\r\n  \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n  \t// each coordinate of `scale`.\r\n  \tunscaleBy: function (point) {\r\n  \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n  \t},\r\n\r\n  \t// @method round(): Point\r\n  \t// Returns a copy of the current point with rounded coordinates.\r\n  \tround: function () {\r\n  \t\treturn this.clone()._round();\r\n  \t},\r\n\r\n  \t_round: function () {\r\n  \t\tthis.x = Math.round(this.x);\r\n  \t\tthis.y = Math.round(this.y);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method floor(): Point\r\n  \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n  \tfloor: function () {\r\n  \t\treturn this.clone()._floor();\r\n  \t},\r\n\r\n  \t_floor: function () {\r\n  \t\tthis.x = Math.floor(this.x);\r\n  \t\tthis.y = Math.floor(this.y);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method ceil(): Point\r\n  \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n  \tceil: function () {\r\n  \t\treturn this.clone()._ceil();\r\n  \t},\r\n\r\n  \t_ceil: function () {\r\n  \t\tthis.x = Math.ceil(this.x);\r\n  \t\tthis.y = Math.ceil(this.y);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method trunc(): Point\r\n  \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n  \ttrunc: function () {\r\n  \t\treturn this.clone()._trunc();\r\n  \t},\r\n\r\n  \t_trunc: function () {\r\n  \t\tthis.x = trunc(this.x);\r\n  \t\tthis.y = trunc(this.y);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method distanceTo(otherPoint: Point): Number\r\n  \t// Returns the cartesian distance between the current and the given points.\r\n  \tdistanceTo: function (point) {\r\n  \t\tpoint = toPoint(point);\r\n\r\n  \t\tvar x = point.x - this.x,\r\n  \t\t    y = point.y - this.y;\r\n\r\n  \t\treturn Math.sqrt(x * x + y * y);\r\n  \t},\r\n\r\n  \t// @method equals(otherPoint: Point): Boolean\r\n  \t// Returns `true` if the given point has the same coordinates.\r\n  \tequals: function (point) {\r\n  \t\tpoint = toPoint(point);\r\n\r\n  \t\treturn point.x === this.x &&\r\n  \t\t       point.y === this.y;\r\n  \t},\r\n\r\n  \t// @method contains(otherPoint: Point): Boolean\r\n  \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n  \tcontains: function (point) {\r\n  \t\tpoint = toPoint(point);\r\n\r\n  \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n  \t\t       Math.abs(point.y) <= Math.abs(this.y);\r\n  \t},\r\n\r\n  \t// @method toString(): String\r\n  \t// Returns a string representation of the point for debugging purposes.\r\n  \ttoString: function () {\r\n  \t\treturn 'Point(' +\r\n  \t\t        formatNum(this.x) + ', ' +\r\n  \t\t        formatNum(this.y) + ')';\r\n  \t}\r\n  };\r\n\r\n  // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n  // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n  // @alternative\r\n  // @factory L.point(coords: Number[])\r\n  // Expects an array of the form `[x, y]` instead.\r\n\r\n  // @alternative\r\n  // @factory L.point(coords: Object)\r\n  // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n  function toPoint(x, y, round) {\r\n  \tif (x instanceof Point) {\r\n  \t\treturn x;\r\n  \t}\r\n  \tif (isArray(x)) {\r\n  \t\treturn new Point(x[0], x[1]);\r\n  \t}\r\n  \tif (x === undefined || x === null) {\r\n  \t\treturn x;\r\n  \t}\r\n  \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n  \t\treturn new Point(x.x, x.y);\r\n  \t}\r\n  \treturn new Point(x, y, round);\r\n  }\n\n  /*\r\n   * @class Bounds\r\n   * @aka L.Bounds\r\n   *\r\n   * Represents a rectangular area in pixel coordinates.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var p1 = L.point(10, 10),\r\n   * p2 = L.point(40, 60),\r\n   * bounds = L.bounds(p1, p2);\r\n   * ```\r\n   *\r\n   * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n   *\r\n   * ```js\r\n   * otherBounds.intersects([[10, 10], [40, 60]]);\r\n   * ```\r\n   *\r\n   * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n   * which means new classes can't inherit from it, and new methods\r\n   * can't be added to it with the `include` function.\r\n   */\r\n\r\n  function Bounds(a, b) {\r\n  \tif (!a) { return; }\r\n\r\n  \tvar points = b ? [a, b] : a;\r\n\r\n  \tfor (var i = 0, len = points.length; i < len; i++) {\r\n  \t\tthis.extend(points[i]);\r\n  \t}\r\n  }\r\n\r\n  Bounds.prototype = {\r\n  \t// @method extend(point: Point): this\r\n  \t// Extends the bounds to contain the given point.\r\n\r\n  \t// @alternative\r\n  \t// @method extend(otherBounds: Bounds): this\r\n  \t// Extend the bounds to contain the given bounds\r\n  \textend: function (obj) {\r\n  \t\tvar min2, max2;\r\n  \t\tif (!obj) { return this; }\r\n\r\n  \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n  \t\t\tmin2 = max2 = toPoint(obj);\r\n  \t\t} else {\r\n  \t\t\tobj = toBounds(obj);\r\n  \t\t\tmin2 = obj.min;\r\n  \t\t\tmax2 = obj.max;\r\n\r\n  \t\t\tif (!min2 || !max2) { return this; }\r\n  \t\t}\r\n\r\n  \t\t// @property min: Point\r\n  \t\t// The top left corner of the rectangle.\r\n  \t\t// @property max: Point\r\n  \t\t// The bottom right corner of the rectangle.\r\n  \t\tif (!this.min && !this.max) {\r\n  \t\t\tthis.min = min2.clone();\r\n  \t\t\tthis.max = max2.clone();\r\n  \t\t} else {\r\n  \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n  \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n  \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n  \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getCenter(round?: Boolean): Point\r\n  \t// Returns the center point of the bounds.\r\n  \tgetCenter: function (round) {\r\n  \t\treturn toPoint(\r\n  \t\t        (this.min.x + this.max.x) / 2,\r\n  \t\t        (this.min.y + this.max.y) / 2, round);\r\n  \t},\r\n\r\n  \t// @method getBottomLeft(): Point\r\n  \t// Returns the bottom-left point of the bounds.\r\n  \tgetBottomLeft: function () {\r\n  \t\treturn toPoint(this.min.x, this.max.y);\r\n  \t},\r\n\r\n  \t// @method getTopRight(): Point\r\n  \t// Returns the top-right point of the bounds.\r\n  \tgetTopRight: function () { // -> Point\r\n  \t\treturn toPoint(this.max.x, this.min.y);\r\n  \t},\r\n\r\n  \t// @method getTopLeft(): Point\r\n  \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n  \tgetTopLeft: function () {\r\n  \t\treturn this.min; // left, top\r\n  \t},\r\n\r\n  \t// @method getBottomRight(): Point\r\n  \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n  \tgetBottomRight: function () {\r\n  \t\treturn this.max; // right, bottom\r\n  \t},\r\n\r\n  \t// @method getSize(): Point\r\n  \t// Returns the size of the given bounds\r\n  \tgetSize: function () {\r\n  \t\treturn this.max.subtract(this.min);\r\n  \t},\r\n\r\n  \t// @method contains(otherBounds: Bounds): Boolean\r\n  \t// Returns `true` if the rectangle contains the given one.\r\n  \t// @alternative\r\n  \t// @method contains(point: Point): Boolean\r\n  \t// Returns `true` if the rectangle contains the given point.\r\n  \tcontains: function (obj) {\r\n  \t\tvar min, max;\r\n\r\n  \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n  \t\t\tobj = toPoint(obj);\r\n  \t\t} else {\r\n  \t\t\tobj = toBounds(obj);\r\n  \t\t}\r\n\r\n  \t\tif (obj instanceof Bounds) {\r\n  \t\t\tmin = obj.min;\r\n  \t\t\tmax = obj.max;\r\n  \t\t} else {\r\n  \t\t\tmin = max = obj;\r\n  \t\t}\r\n\r\n  \t\treturn (min.x >= this.min.x) &&\r\n  \t\t       (max.x <= this.max.x) &&\r\n  \t\t       (min.y >= this.min.y) &&\r\n  \t\t       (max.y <= this.max.y);\r\n  \t},\r\n\r\n  \t// @method intersects(otherBounds: Bounds): Boolean\r\n  \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n  \t// intersect if they have at least one point in common.\r\n  \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n  \t\tbounds = toBounds(bounds);\r\n\r\n  \t\tvar min = this.min,\r\n  \t\t    max = this.max,\r\n  \t\t    min2 = bounds.min,\r\n  \t\t    max2 = bounds.max,\r\n  \t\t    xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n  \t\t    yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n  \t\treturn xIntersects && yIntersects;\r\n  \t},\r\n\r\n  \t// @method overlaps(otherBounds: Bounds): Boolean\r\n  \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n  \t// overlap if their intersection is an area.\r\n  \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n  \t\tbounds = toBounds(bounds);\r\n\r\n  \t\tvar min = this.min,\r\n  \t\t    max = this.max,\r\n  \t\t    min2 = bounds.min,\r\n  \t\t    max2 = bounds.max,\r\n  \t\t    xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n  \t\t    yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n  \t\treturn xOverlaps && yOverlaps;\r\n  \t},\r\n\r\n  \t// @method isValid(): Boolean\r\n  \t// Returns `true` if the bounds are properly initialized.\r\n  \tisValid: function () {\r\n  \t\treturn !!(this.min && this.max);\r\n  \t},\r\n\r\n\r\n  \t// @method pad(bufferRatio: Number): Bounds\r\n  \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n  \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n  \t// Negative values will retract the bounds.\r\n  \tpad: function (bufferRatio) {\r\n  \t\tvar min = this.min,\r\n  \t\tmax = this.max,\r\n  \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n  \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n  \t\treturn toBounds(\r\n  \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n  \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n  \t},\r\n\r\n\r\n  \t// @method equals(otherBounds: Bounds): Boolean\r\n  \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n  \tequals: function (bounds) {\r\n  \t\tif (!bounds) { return false; }\r\n\r\n  \t\tbounds = toBounds(bounds);\r\n\r\n  \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n  \t\t\tthis.max.equals(bounds.getBottomRight());\r\n  \t},\r\n  };\r\n\r\n\r\n  // @factory L.bounds(corner1: Point, corner2: Point)\r\n  // Creates a Bounds object from two corners coordinate pairs.\r\n  // @alternative\r\n  // @factory L.bounds(points: Point[])\r\n  // Creates a Bounds object from the given array of points.\r\n  function toBounds(a, b) {\r\n  \tif (!a || a instanceof Bounds) {\r\n  \t\treturn a;\r\n  \t}\r\n  \treturn new Bounds(a, b);\r\n  }\n\n  /*\r\n   * @class LatLngBounds\r\n   * @aka L.LatLngBounds\r\n   *\r\n   * Represents a rectangular geographical area on a map.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var corner1 = L.latLng(40.712, -74.227),\r\n   * corner2 = L.latLng(40.774, -74.125),\r\n   * bounds = L.latLngBounds(corner1, corner2);\r\n   * ```\r\n   *\r\n   * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n   *\r\n   * ```js\r\n   * map.fitBounds([\r\n   * \t[40.712, -74.227],\r\n   * \t[40.774, -74.125]\r\n   * ]);\r\n   * ```\r\n   *\r\n   * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n   *\r\n   * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n   * which means new classes can't inherit from it, and new methods\r\n   * can't be added to it with the `include` function.\r\n   */\r\n\r\n  function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n  \tif (!corner1) { return; }\r\n\r\n  \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n  \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n  \t\tthis.extend(latlngs[i]);\r\n  \t}\r\n  }\r\n\r\n  LatLngBounds.prototype = {\r\n\r\n  \t// @method extend(latlng: LatLng): this\r\n  \t// Extend the bounds to contain the given point\r\n\r\n  \t// @alternative\r\n  \t// @method extend(otherBounds: LatLngBounds): this\r\n  \t// Extend the bounds to contain the given bounds\r\n  \textend: function (obj) {\r\n  \t\tvar sw = this._southWest,\r\n  \t\t    ne = this._northEast,\r\n  \t\t    sw2, ne2;\r\n\r\n  \t\tif (obj instanceof LatLng) {\r\n  \t\t\tsw2 = obj;\r\n  \t\t\tne2 = obj;\r\n\r\n  \t\t} else if (obj instanceof LatLngBounds) {\r\n  \t\t\tsw2 = obj._southWest;\r\n  \t\t\tne2 = obj._northEast;\r\n\r\n  \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n  \t\t} else {\r\n  \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n  \t\t}\r\n\r\n  \t\tif (!sw && !ne) {\r\n  \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n  \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n  \t\t} else {\r\n  \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n  \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n  \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n  \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method pad(bufferRatio: Number): LatLngBounds\r\n  \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n  \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n  \t// Negative values will retract the bounds.\r\n  \tpad: function (bufferRatio) {\r\n  \t\tvar sw = this._southWest,\r\n  \t\t    ne = this._northEast,\r\n  \t\t    heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n  \t\t    widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n  \t\treturn new LatLngBounds(\r\n  \t\t        new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n  \t\t        new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n  \t},\r\n\r\n  \t// @method getCenter(): LatLng\r\n  \t// Returns the center point of the bounds.\r\n  \tgetCenter: function () {\r\n  \t\treturn new LatLng(\r\n  \t\t        (this._southWest.lat + this._northEast.lat) / 2,\r\n  \t\t        (this._southWest.lng + this._northEast.lng) / 2);\r\n  \t},\r\n\r\n  \t// @method getSouthWest(): LatLng\r\n  \t// Returns the south-west point of the bounds.\r\n  \tgetSouthWest: function () {\r\n  \t\treturn this._southWest;\r\n  \t},\r\n\r\n  \t// @method getNorthEast(): LatLng\r\n  \t// Returns the north-east point of the bounds.\r\n  \tgetNorthEast: function () {\r\n  \t\treturn this._northEast;\r\n  \t},\r\n\r\n  \t// @method getNorthWest(): LatLng\r\n  \t// Returns the north-west point of the bounds.\r\n  \tgetNorthWest: function () {\r\n  \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n  \t},\r\n\r\n  \t// @method getSouthEast(): LatLng\r\n  \t// Returns the south-east point of the bounds.\r\n  \tgetSouthEast: function () {\r\n  \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n  \t},\r\n\r\n  \t// @method getWest(): Number\r\n  \t// Returns the west longitude of the bounds\r\n  \tgetWest: function () {\r\n  \t\treturn this._southWest.lng;\r\n  \t},\r\n\r\n  \t// @method getSouth(): Number\r\n  \t// Returns the south latitude of the bounds\r\n  \tgetSouth: function () {\r\n  \t\treturn this._southWest.lat;\r\n  \t},\r\n\r\n  \t// @method getEast(): Number\r\n  \t// Returns the east longitude of the bounds\r\n  \tgetEast: function () {\r\n  \t\treturn this._northEast.lng;\r\n  \t},\r\n\r\n  \t// @method getNorth(): Number\r\n  \t// Returns the north latitude of the bounds\r\n  \tgetNorth: function () {\r\n  \t\treturn this._northEast.lat;\r\n  \t},\r\n\r\n  \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n  \t// Returns `true` if the rectangle contains the given one.\r\n\r\n  \t// @alternative\r\n  \t// @method contains (latlng: LatLng): Boolean\r\n  \t// Returns `true` if the rectangle contains the given point.\r\n  \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n  \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n  \t\t\tobj = toLatLng(obj);\r\n  \t\t} else {\r\n  \t\t\tobj = toLatLngBounds(obj);\r\n  \t\t}\r\n\r\n  \t\tvar sw = this._southWest,\r\n  \t\t    ne = this._northEast,\r\n  \t\t    sw2, ne2;\r\n\r\n  \t\tif (obj instanceof LatLngBounds) {\r\n  \t\t\tsw2 = obj.getSouthWest();\r\n  \t\t\tne2 = obj.getNorthEast();\r\n  \t\t} else {\r\n  \t\t\tsw2 = ne2 = obj;\r\n  \t\t}\r\n\r\n  \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n  \t\t       (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n  \t},\r\n\r\n  \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n  \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n  \tintersects: function (bounds) {\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n\r\n  \t\tvar sw = this._southWest,\r\n  \t\t    ne = this._northEast,\r\n  \t\t    sw2 = bounds.getSouthWest(),\r\n  \t\t    ne2 = bounds.getNorthEast(),\r\n\r\n  \t\t    latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n  \t\t    lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n  \t\treturn latIntersects && lngIntersects;\r\n  \t},\r\n\r\n  \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n  \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n  \toverlaps: function (bounds) {\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n\r\n  \t\tvar sw = this._southWest,\r\n  \t\t    ne = this._northEast,\r\n  \t\t    sw2 = bounds.getSouthWest(),\r\n  \t\t    ne2 = bounds.getNorthEast(),\r\n\r\n  \t\t    latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n  \t\t    lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n  \t\treturn latOverlaps && lngOverlaps;\r\n  \t},\r\n\r\n  \t// @method toBBoxString(): String\r\n  \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n  \ttoBBoxString: function () {\r\n  \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n  \t},\r\n\r\n  \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n  \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n  \tequals: function (bounds, maxMargin) {\r\n  \t\tif (!bounds) { return false; }\r\n\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n\r\n  \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n  \t\t       this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n  \t},\r\n\r\n  \t// @method isValid(): Boolean\r\n  \t// Returns `true` if the bounds are properly initialized.\r\n  \tisValid: function () {\r\n  \t\treturn !!(this._southWest && this._northEast);\r\n  \t}\r\n  };\r\n\r\n  // TODO International date line?\r\n\r\n  // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n  // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n  // @alternative\r\n  // @factory L.latLngBounds(latlngs: LatLng[])\r\n  // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n  function toLatLngBounds(a, b) {\r\n  \tif (a instanceof LatLngBounds) {\r\n  \t\treturn a;\r\n  \t}\r\n  \treturn new LatLngBounds(a, b);\r\n  }\n\n  /* @class LatLng\r\n   * @aka L.LatLng\r\n   *\r\n   * Represents a geographical point with a certain latitude and longitude.\r\n   *\r\n   * @example\r\n   *\r\n   * ```\r\n   * var latlng = L.latLng(50.5, 30.5);\r\n   * ```\r\n   *\r\n   * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n   *\r\n   * ```\r\n   * map.panTo([50, 30]);\r\n   * map.panTo({lon: 30, lat: 50});\r\n   * map.panTo({lat: 50, lng: 30});\r\n   * map.panTo(L.latLng(50, 30));\r\n   * ```\r\n   *\r\n   * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n   * which means new classes can't inherit from it, and new methods\r\n   * can't be added to it with the `include` function.\r\n   */\r\n\r\n  function LatLng(lat, lng, alt) {\r\n  \tif (isNaN(lat) || isNaN(lng)) {\r\n  \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n  \t}\r\n\r\n  \t// @property lat: Number\r\n  \t// Latitude in degrees\r\n  \tthis.lat = +lat;\r\n\r\n  \t// @property lng: Number\r\n  \t// Longitude in degrees\r\n  \tthis.lng = +lng;\r\n\r\n  \t// @property alt: Number\r\n  \t// Altitude in meters (optional)\r\n  \tif (alt !== undefined) {\r\n  \t\tthis.alt = +alt;\r\n  \t}\r\n  }\r\n\r\n  LatLng.prototype = {\r\n  \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n  \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n  \tequals: function (obj, maxMargin) {\r\n  \t\tif (!obj) { return false; }\r\n\r\n  \t\tobj = toLatLng(obj);\r\n\r\n  \t\tvar margin = Math.max(\r\n  \t\t        Math.abs(this.lat - obj.lat),\r\n  \t\t        Math.abs(this.lng - obj.lng));\r\n\r\n  \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n  \t},\r\n\r\n  \t// @method toString(): String\r\n  \t// Returns a string representation of the point (for debugging purposes).\r\n  \ttoString: function (precision) {\r\n  \t\treturn 'LatLng(' +\r\n  \t\t        formatNum(this.lat, precision) + ', ' +\r\n  \t\t        formatNum(this.lng, precision) + ')';\r\n  \t},\r\n\r\n  \t// @method distanceTo(otherLatLng: LatLng): Number\r\n  \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n  \tdistanceTo: function (other) {\r\n  \t\treturn Earth.distance(this, toLatLng(other));\r\n  \t},\r\n\r\n  \t// @method wrap(): LatLng\r\n  \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n  \twrap: function () {\r\n  \t\treturn Earth.wrapLatLng(this);\r\n  \t},\r\n\r\n  \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n  \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n  \ttoBounds: function (sizeInMeters) {\r\n  \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n  \t\t    lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n  \t\treturn toLatLngBounds(\r\n  \t\t        [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n  \t\t        [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n  \t},\r\n\r\n  \tclone: function () {\r\n  \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n  \t}\r\n  };\r\n\r\n\r\n\r\n  // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n  // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n  // @alternative\r\n  // @factory L.latLng(coords: Array): LatLng\r\n  // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n  // @alternative\r\n  // @factory L.latLng(coords: Object): LatLng\r\n  // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n  function toLatLng(a, b, c) {\r\n  \tif (a instanceof LatLng) {\r\n  \t\treturn a;\r\n  \t}\r\n  \tif (isArray(a) && typeof a[0] !== 'object') {\r\n  \t\tif (a.length === 3) {\r\n  \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n  \t\t}\r\n  \t\tif (a.length === 2) {\r\n  \t\t\treturn new LatLng(a[0], a[1]);\r\n  \t\t}\r\n  \t\treturn null;\r\n  \t}\r\n  \tif (a === undefined || a === null) {\r\n  \t\treturn a;\r\n  \t}\r\n  \tif (typeof a === 'object' && 'lat' in a) {\r\n  \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n  \t}\r\n  \tif (b === undefined) {\r\n  \t\treturn null;\r\n  \t}\r\n  \treturn new LatLng(a, b, c);\r\n  }\n\n  /*\r\n   * @namespace CRS\r\n   * @crs L.CRS.Base\r\n   * Object that defines coordinate reference systems for projecting\r\n   * geographical points into pixel (screen) coordinates and back (and to\r\n   * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n   * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n   *\r\n   * Leaflet defines the most usual CRSs by default. If you want to use a\r\n   * CRS not defined by default, take a look at the\r\n   * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n   *\r\n   * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n   * and can't be instantiated. Also, new classes can't inherit from them,\r\n   * and methods can't be added to them with the `include` function.\r\n   */\r\n\r\n  var CRS = {\r\n  \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n  \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n  \tlatLngToPoint: function (latlng, zoom) {\r\n  \t\tvar projectedPoint = this.projection.project(latlng),\r\n  \t\t    scale = this.scale(zoom);\r\n\r\n  \t\treturn this.transformation._transform(projectedPoint, scale);\r\n  \t},\r\n\r\n  \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n  \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n  \t// zoom into geographical coordinates.\r\n  \tpointToLatLng: function (point, zoom) {\r\n  \t\tvar scale = this.scale(zoom),\r\n  \t\t    untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n  \t\treturn this.projection.unproject(untransformedPoint);\r\n  \t},\r\n\r\n  \t// @method project(latlng: LatLng): Point\r\n  \t// Projects geographical coordinates into coordinates in units accepted for\r\n  \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n  \tproject: function (latlng) {\r\n  \t\treturn this.projection.project(latlng);\r\n  \t},\r\n\r\n  \t// @method unproject(point: Point): LatLng\r\n  \t// Given a projected coordinate returns the corresponding LatLng.\r\n  \t// The inverse of `project`.\r\n  \tunproject: function (point) {\r\n  \t\treturn this.projection.unproject(point);\r\n  \t},\r\n\r\n  \t// @method scale(zoom: Number): Number\r\n  \t// Returns the scale used when transforming projected coordinates into\r\n  \t// pixel coordinates for a particular zoom. For example, it returns\r\n  \t// `256 * 2^zoom` for Mercator-based CRS.\r\n  \tscale: function (zoom) {\r\n  \t\treturn 256 * Math.pow(2, zoom);\r\n  \t},\r\n\r\n  \t// @method zoom(scale: Number): Number\r\n  \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n  \t// factor of `scale`.\r\n  \tzoom: function (scale) {\r\n  \t\treturn Math.log(scale / 256) / Math.LN2;\r\n  \t},\r\n\r\n  \t// @method getProjectedBounds(zoom: Number): Bounds\r\n  \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n  \tgetProjectedBounds: function (zoom) {\r\n  \t\tif (this.infinite) { return null; }\r\n\r\n  \t\tvar b = this.projection.bounds,\r\n  \t\t    s = this.scale(zoom),\r\n  \t\t    min = this.transformation.transform(b.min, s),\r\n  \t\t    max = this.transformation.transform(b.max, s);\r\n\r\n  \t\treturn new Bounds(min, max);\r\n  \t},\r\n\r\n  \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n  \t// Returns the distance between two geographical coordinates.\r\n\r\n  \t// @property code: String\r\n  \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n  \t//\r\n  \t// @property wrapLng: Number[]\r\n  \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n  \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n  \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n  \t//\r\n  \t// @property wrapLat: Number[]\r\n  \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n  \t// wrapLng: [min, max],\r\n  \t// wrapLat: [min, max],\r\n\r\n  \t// @property infinite: Boolean\r\n  \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n  \tinfinite: false,\r\n\r\n  \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n  \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n  \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n  \twrapLatLng: function (latlng) {\r\n  \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n  \t\t    lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n  \t\t    alt = latlng.alt;\r\n\r\n  \t\treturn new LatLng(lat, lng, alt);\r\n  \t},\r\n\r\n  \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n  \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n  \t// that its center is within the CRS's bounds.\r\n  \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n  \twrapLatLngBounds: function (bounds) {\r\n  \t\tvar center = bounds.getCenter(),\r\n  \t\t    newCenter = this.wrapLatLng(center),\r\n  \t\t    latShift = center.lat - newCenter.lat,\r\n  \t\t    lngShift = center.lng - newCenter.lng;\r\n\r\n  \t\tif (latShift === 0 && lngShift === 0) {\r\n  \t\t\treturn bounds;\r\n  \t\t}\r\n\r\n  \t\tvar sw = bounds.getSouthWest(),\r\n  \t\t    ne = bounds.getNorthEast(),\r\n  \t\t    newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n  \t\t    newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n  \t\treturn new LatLngBounds(newSw, newNe);\r\n  \t}\r\n  };\n\n  /*\n   * @namespace CRS\n   * @crs L.CRS.Earth\n   *\n   * Serves as the base for CRS that are global such that they cover the earth.\n   * Can only be used as the base for other CRS and cannot be used directly,\n   * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n   * meters.\n   */\n\n  var Earth = extend({}, CRS, {\n  \twrapLng: [-180, 180],\n\n  \t// Mean Earth Radius, as recommended for use by\n  \t// the International Union of Geodesy and Geophysics,\n  \t// see https://rosettacode.org/wiki/Haversine_formula\n  \tR: 6371000,\n\n  \t// distance between two geographical points using spherical law of cosines approximation\n  \tdistance: function (latlng1, latlng2) {\n  \t\tvar rad = Math.PI / 180,\n  \t\t    lat1 = latlng1.lat * rad,\n  \t\t    lat2 = latlng2.lat * rad,\n  \t\t    sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n  \t\t    sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n  \t\t    a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n  \t\t    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n  \t\treturn this.R * c;\n  \t}\n  });\n\n  /*\r\n   * @namespace Projection\r\n   * @projection L.Projection.SphericalMercator\r\n   *\r\n   * Spherical Mercator projection — the most common projection for online maps,\r\n   * used by almost all free and commercial tile providers. Assumes that Earth is\r\n   * a sphere. Used by the `EPSG:3857` CRS.\r\n   */\r\n\r\n  var earthRadius = 6378137;\r\n\r\n  var SphericalMercator = {\r\n\r\n  \tR: earthRadius,\r\n  \tMAX_LATITUDE: 85.0511287798,\r\n\r\n  \tproject: function (latlng) {\r\n  \t\tvar d = Math.PI / 180,\r\n  \t\t    max = this.MAX_LATITUDE,\r\n  \t\t    lat = Math.max(Math.min(max, latlng.lat), -max),\r\n  \t\t    sin = Math.sin(lat * d);\r\n\r\n  \t\treturn new Point(\r\n  \t\t\tthis.R * latlng.lng * d,\r\n  \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n  \t},\r\n\r\n  \tunproject: function (point) {\r\n  \t\tvar d = 180 / Math.PI;\r\n\r\n  \t\treturn new LatLng(\r\n  \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n  \t\t\tpoint.x * d / this.R);\r\n  \t},\r\n\r\n  \tbounds: (function () {\r\n  \t\tvar d = earthRadius * Math.PI;\r\n  \t\treturn new Bounds([-d, -d], [d, d]);\r\n  \t})()\r\n  };\n\n  /*\r\n   * @class Transformation\r\n   * @aka L.Transformation\r\n   *\r\n   * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n   * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n   * the reverse. Used by Leaflet in its projections code.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var transformation = L.transformation(2, 5, -1, 10),\r\n   * \tp = L.point(1, 2),\r\n   * \tp2 = transformation.transform(p), //  L.point(7, 8)\r\n   * \tp3 = transformation.untransform(p2); //  L.point(1, 2)\r\n   * ```\r\n   */\r\n\r\n\r\n  // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n  // Creates a `Transformation` object with the given coefficients.\r\n  function Transformation(a, b, c, d) {\r\n  \tif (isArray(a)) {\r\n  \t\t// use array properties\r\n  \t\tthis._a = a[0];\r\n  \t\tthis._b = a[1];\r\n  \t\tthis._c = a[2];\r\n  \t\tthis._d = a[3];\r\n  \t\treturn;\r\n  \t}\r\n  \tthis._a = a;\r\n  \tthis._b = b;\r\n  \tthis._c = c;\r\n  \tthis._d = d;\r\n  }\r\n\r\n  Transformation.prototype = {\r\n  \t// @method transform(point: Point, scale?: Number): Point\r\n  \t// Returns a transformed point, optionally multiplied by the given scale.\r\n  \t// Only accepts actual `L.Point` instances, not arrays.\r\n  \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n  \t\treturn this._transform(point.clone(), scale);\r\n  \t},\r\n\r\n  \t// destructive transform (faster)\r\n  \t_transform: function (point, scale) {\r\n  \t\tscale = scale || 1;\r\n  \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n  \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n  \t\treturn point;\r\n  \t},\r\n\r\n  \t// @method untransform(point: Point, scale?: Number): Point\r\n  \t// Returns the reverse transformation of the given point, optionally divided\r\n  \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n  \tuntransform: function (point, scale) {\r\n  \t\tscale = scale || 1;\r\n  \t\treturn new Point(\r\n  \t\t        (point.x / scale - this._b) / this._a,\r\n  \t\t        (point.y / scale - this._d) / this._c);\r\n  \t}\r\n  };\r\n\r\n  // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n  // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n  // Instantiates a Transformation object with the given coefficients.\r\n\r\n  // @alternative\r\n  // @factory L.transformation(coefficients: Array): Transformation\r\n  // Expects an coefficients array of the form\r\n  // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n  function toTransformation(a, b, c, d) {\r\n  \treturn new Transformation(a, b, c, d);\r\n  }\n\n  /*\r\n   * @namespace CRS\r\n   * @crs L.CRS.EPSG3857\r\n   *\r\n   * The most common CRS for online maps, used by almost all free and commercial\r\n   * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n   * Map's `crs` option.\r\n   */\r\n\r\n  var EPSG3857 = extend({}, Earth, {\r\n  \tcode: 'EPSG:3857',\r\n  \tprojection: SphericalMercator,\r\n\r\n  \ttransformation: (function () {\r\n  \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n  \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n  \t}())\r\n  });\r\n\r\n  var EPSG900913 = extend({}, EPSG3857, {\r\n  \tcode: 'EPSG:900913'\r\n  });\n\n  // @namespace SVG; @section\n  // There are several static functions which can be called without instantiating L.SVG:\n\n  // @function create(name: String): SVGElement\n  // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n  // corresponding to the class name passed. For example, using 'line' will return\n  // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n  function svgCreate(name) {\n  \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n  }\n\n  // @function pointsToPath(rings: Point[], closed: Boolean): String\n  // Generates a SVG path string for multiple rings, with each ring turning\n  // into \"M..L..L..\" instructions\n  function pointsToPath(rings, closed) {\n  \tvar str = '',\n  \ti, j, len, len2, points, p;\n\n  \tfor (i = 0, len = rings.length; i < len; i++) {\n  \t\tpoints = rings[i];\n\n  \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n  \t\t\tp = points[j];\n  \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n  \t\t}\n\n  \t\t// closes the ring for polygons; \"x\" is VML syntax\n  \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n  \t}\n\n  \t// SVG complains about empty path strings\n  \treturn str || 'M0 0';\n  }\n\n  /*\r\n   * @namespace Browser\r\n   * @aka L.Browser\r\n   *\r\n   * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * if (L.Browser.ielt9) {\r\n   *   alert('Upgrade your browser, dude!');\r\n   * }\r\n   * ```\r\n   */\r\n\r\n  var style = document.documentElement.style;\r\n\r\n  // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n  var ie = 'ActiveXObject' in window;\r\n\r\n  // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n  var ielt9 = ie && !document.addEventListener;\r\n\r\n  // @property edge: Boolean; `true` for the Edge web browser.\r\n  var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n  // @property webkit: Boolean;\r\n  // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n  var webkit = userAgentContains('webkit');\r\n\r\n  // @property android: Boolean\r\n  // **Deprecated.** `true` for any browser running on an Android platform.\r\n  var android = userAgentContains('android');\r\n\r\n  // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n  var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n  /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n  var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n  // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n  var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n  // @property opera: Boolean; `true` for the Opera browser\r\n  var opera = !!window.opera;\r\n\r\n  // @property chrome: Boolean; `true` for the Chrome browser.\r\n  var chrome = !edge && userAgentContains('chrome');\r\n\r\n  // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n  var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n  // @property safari: Boolean; `true` for the Safari browser.\r\n  var safari = !chrome && userAgentContains('safari');\r\n\r\n  var phantom = userAgentContains('phantom');\r\n\r\n  // @property opera12: Boolean\r\n  // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n  var opera12 = 'OTransition' in style;\r\n\r\n  // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n  var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n  // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n  var ie3d = ie && ('transition' in style);\r\n\r\n  // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n  var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n  // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n  var gecko3d = 'MozPerspective' in style;\r\n\r\n  // @property any3d: Boolean\r\n  // `true` for all browsers supporting CSS transforms.\r\n  var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n  // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n  var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n  // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n  var mobileWebkit = mobile && webkit;\r\n\r\n  // @property mobileWebkit3d: Boolean\r\n  // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n  var mobileWebkit3d = mobile && webkit3d;\r\n\r\n  // @property msPointer: Boolean\r\n  // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n  var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n  // @property pointer: Boolean\r\n  // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n  var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n  // @property touchNative: Boolean\r\n  // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n  // **This does not necessarily mean** that the browser is running in a computer with\r\n  // a touchscreen, it only means that the browser is capable of understanding\r\n  // touch events.\r\n  var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n  // @property touch: Boolean\r\n  // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n  // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n  var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n  // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n  var mobileOpera = mobile && opera;\r\n\r\n  // @property mobileGecko: Boolean\r\n  // `true` for gecko-based browsers running in a mobile device.\r\n  var mobileGecko = mobile && gecko;\r\n\r\n  // @property retina: Boolean\r\n  // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n  var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n  // @property passiveEvents: Boolean\r\n  // `true` for browsers that support passive events.\r\n  var passiveEvents = (function () {\r\n  \tvar supportsPassiveOption = false;\r\n  \ttry {\r\n  \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n  \t\t\tget: function () { // eslint-disable-line getter-return\r\n  \t\t\t\tsupportsPassiveOption = true;\r\n  \t\t\t}\r\n  \t\t});\r\n  \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n  \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n  \t} catch (e) {\r\n  \t\t// Errors can safely be ignored since this is only a browser support test.\r\n  \t}\r\n  \treturn supportsPassiveOption;\r\n  }());\r\n\r\n  // @property canvas: Boolean\r\n  // `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n  var canvas$1 = (function () {\r\n  \treturn !!document.createElement('canvas').getContext;\r\n  }());\r\n\r\n  // @property svg: Boolean\r\n  // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n  var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n  var inlineSvg = !!svg$1 && (function () {\r\n  \tvar div = document.createElement('div');\r\n  \tdiv.innerHTML = '<svg/>';\r\n  \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n  })();\r\n\r\n  // @property vml: Boolean\r\n  // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n  var vml = !svg$1 && (function () {\r\n  \ttry {\r\n  \t\tvar div = document.createElement('div');\r\n  \t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n  \t\tvar shape = div.firstChild;\r\n  \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n  \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n  \t} catch (e) {\r\n  \t\treturn false;\r\n  \t}\r\n  }());\r\n\r\n\r\n  // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n  var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n  // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n  var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n  function userAgentContains(str) {\r\n  \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n  }\r\n\r\n\r\n  var Browser = {\r\n  \tie: ie,\r\n  \tielt9: ielt9,\r\n  \tedge: edge,\r\n  \twebkit: webkit,\r\n  \tandroid: android,\r\n  \tandroid23: android23,\r\n  \tandroidStock: androidStock,\r\n  \topera: opera,\r\n  \tchrome: chrome,\r\n  \tgecko: gecko,\r\n  \tsafari: safari,\r\n  \tphantom: phantom,\r\n  \topera12: opera12,\r\n  \twin: win,\r\n  \tie3d: ie3d,\r\n  \twebkit3d: webkit3d,\r\n  \tgecko3d: gecko3d,\r\n  \tany3d: any3d,\r\n  \tmobile: mobile,\r\n  \tmobileWebkit: mobileWebkit,\r\n  \tmobileWebkit3d: mobileWebkit3d,\r\n  \tmsPointer: msPointer,\r\n  \tpointer: pointer,\r\n  \ttouch: touch,\r\n  \ttouchNative: touchNative,\r\n  \tmobileOpera: mobileOpera,\r\n  \tmobileGecko: mobileGecko,\r\n  \tretina: retina,\r\n  \tpassiveEvents: passiveEvents,\r\n  \tcanvas: canvas$1,\r\n  \tsvg: svg$1,\r\n  \tvml: vml,\r\n  \tinlineSvg: inlineSvg,\r\n  \tmac: mac,\r\n  \tlinux: linux\r\n  };\n\n  /*\n   * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n   */\n\n  var POINTER_DOWN =   Browser.msPointer ? 'MSPointerDown'   : 'pointerdown';\n  var POINTER_MOVE =   Browser.msPointer ? 'MSPointerMove'   : 'pointermove';\n  var POINTER_UP =     Browser.msPointer ? 'MSPointerUp'     : 'pointerup';\n  var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n  var pEvent = {\n  \ttouchstart  : POINTER_DOWN,\n  \ttouchmove   : POINTER_MOVE,\n  \ttouchend    : POINTER_UP,\n  \ttouchcancel : POINTER_CANCEL\n  };\n  var handle = {\n  \ttouchstart  : _onPointerStart,\n  \ttouchmove   : _handlePointer,\n  \ttouchend    : _handlePointer,\n  \ttouchcancel : _handlePointer\n  };\n  var _pointers = {};\n  var _pointerDocListener = false;\n\n  // Provides a touch events wrapper for (ms)pointer events.\n  // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n  function addPointerListener(obj, type, handler) {\n  \tif (type === 'touchstart') {\n  \t\t_addPointerDocListener();\n  \t}\n  \tif (!handle[type]) {\n  \t\tconsole.warn('wrong event specified:', type);\n  \t\treturn falseFn;\n  \t}\n  \thandler = handle[type].bind(this, handler);\n  \tobj.addEventListener(pEvent[type], handler, false);\n  \treturn handler;\n  }\n\n  function removePointerListener(obj, type, handler) {\n  \tif (!pEvent[type]) {\n  \t\tconsole.warn('wrong event specified:', type);\n  \t\treturn;\n  \t}\n  \tobj.removeEventListener(pEvent[type], handler, false);\n  }\n\n  function _globalPointerDown(e) {\n  \t_pointers[e.pointerId] = e;\n  }\n\n  function _globalPointerMove(e) {\n  \tif (_pointers[e.pointerId]) {\n  \t\t_pointers[e.pointerId] = e;\n  \t}\n  }\n\n  function _globalPointerUp(e) {\n  \tdelete _pointers[e.pointerId];\n  }\n\n  function _addPointerDocListener() {\n  \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n  \tif (!_pointerDocListener) {\n  \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n  \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n  \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n  \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n  \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n  \t\t_pointerDocListener = true;\n  \t}\n  }\n\n  function _handlePointer(handler, e) {\n  \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n  \te.touches = [];\n  \tfor (var i in _pointers) {\n  \t\te.touches.push(_pointers[i]);\n  \t}\n  \te.changedTouches = [e];\n\n  \thandler(e);\n  }\n\n  function _onPointerStart(handler, e) {\n  \t// IE10 specific: MsTouch needs preventDefault. See #2000\n  \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n  \t\tpreventDefault(e);\n  \t}\n  \t_handlePointer(handler, e);\n  }\n\n  /*\r\n   * Extends the event handling code with double tap support for mobile browsers.\r\n   *\r\n   * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n   * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n   */\r\n\r\n  function makeDblclick(event) {\r\n  \t// in modern browsers `type` cannot be just overridden:\r\n  \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n  \tvar newEvent = {},\r\n  \t    prop, i;\r\n  \tfor (i in event) {\r\n  \t\tprop = event[i];\r\n  \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n  \t}\r\n  \tevent = newEvent;\r\n  \tnewEvent.type = 'dblclick';\r\n  \tnewEvent.detail = 2;\r\n  \tnewEvent.isTrusted = false;\r\n  \tnewEvent._simulated = true; // for debug purposes\r\n  \treturn newEvent;\r\n  }\r\n\r\n  var delay = 200;\r\n  function addDoubleTapListener(obj, handler) {\r\n  \t// Most browsers handle double tap natively\r\n  \tobj.addEventListener('dblclick', handler);\r\n\r\n  \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n  \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n  \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n  \tvar last = 0,\r\n  \t    detail;\r\n  \tfunction simDblclick(e) {\r\n  \t\tif (e.detail !== 1) {\r\n  \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (e.pointerType === 'mouse' ||\r\n  \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\t// When clicking on an <input>, the browser generates a click on its\r\n  \t\t// <label> (and vice versa) triggering two clicks in quick succession.\r\n  \t\t// This ignores clicks on elements which are a label with a 'for'\r\n  \t\t// attribute (or children of such a label), but not children of\r\n  \t\t// a <input>.\r\n  \t\tvar path = getPropagationPath(e);\r\n  \t\tif (path.some(function (el) {\r\n  \t\t\treturn el instanceof HTMLLabelElement && el.attributes.for;\r\n  \t\t}) &&\r\n  \t\t\t!path.some(function (el) {\r\n  \t\t\t\treturn (\r\n  \t\t\t\t\tel instanceof HTMLInputElement ||\r\n  \t\t\t\t\tel instanceof HTMLSelectElement\r\n  \t\t\t\t);\r\n  \t\t\t})\r\n  \t\t) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tvar now = Date.now();\r\n  \t\tif (now - last <= delay) {\r\n  \t\t\tdetail++;\r\n  \t\t\tif (detail === 2) {\r\n  \t\t\t\thandler(makeDblclick(e));\r\n  \t\t\t}\r\n  \t\t} else {\r\n  \t\t\tdetail = 1;\r\n  \t\t}\r\n  \t\tlast = now;\r\n  \t}\r\n\r\n  \tobj.addEventListener('click', simDblclick);\r\n\r\n  \treturn {\r\n  \t\tdblclick: handler,\r\n  \t\tsimDblclick: simDblclick\r\n  \t};\r\n  }\r\n\r\n  function removeDoubleTapListener(obj, handlers) {\r\n  \tobj.removeEventListener('dblclick', handlers.dblclick);\r\n  \tobj.removeEventListener('click', handlers.simDblclick);\r\n  }\n\n  /*\r\n   * @namespace DomUtil\r\n   *\r\n   * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n   * tree, used by Leaflet internally.\r\n   *\r\n   * Most functions expecting or returning a `HTMLElement` also work for\r\n   * SVG elements. The only difference is that classes refer to CSS classes\r\n   * in HTML and SVG classes in SVG.\r\n   */\r\n\r\n\r\n  // @property TRANSFORM: String\r\n  // Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\n  var TRANSFORM = testProp(\r\n  \t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n  // webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n  // the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n  // @property TRANSITION: String\r\n  // Vendor-prefixed transition style name.\r\n  var TRANSITION = testProp(\r\n  \t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n  // @property TRANSITION_END: String\r\n  // Vendor-prefixed transitionend event name.\r\n  var TRANSITION_END =\r\n  \tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n  // @function get(id: String|HTMLElement): HTMLElement\r\n  // Returns an element given its DOM id, or returns the element itself\r\n  // if it was passed directly.\r\n  function get(id) {\r\n  \treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n  }\r\n\r\n  // @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n  // Returns the value for a certain style attribute on an element,\r\n  // including computed values or values set through CSS.\r\n  function getStyle(el, style) {\r\n  \tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n  \tif ((!value || value === 'auto') && document.defaultView) {\r\n  \t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n  \t\tvalue = css ? css[style] : null;\r\n  \t}\r\n  \treturn value === 'auto' ? null : value;\r\n  }\r\n\r\n  // @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n  // Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\n  function create$1(tagName, className, container) {\r\n  \tvar el = document.createElement(tagName);\r\n  \tel.className = className || '';\r\n\r\n  \tif (container) {\r\n  \t\tcontainer.appendChild(el);\r\n  \t}\r\n  \treturn el;\r\n  }\r\n\r\n  // @function remove(el: HTMLElement)\r\n  // Removes `el` from its parent element\r\n  function remove(el) {\r\n  \tvar parent = el.parentNode;\r\n  \tif (parent) {\r\n  \t\tparent.removeChild(el);\r\n  \t}\r\n  }\r\n\r\n  // @function empty(el: HTMLElement)\r\n  // Removes all of `el`'s children elements from `el`\r\n  function empty(el) {\r\n  \twhile (el.firstChild) {\r\n  \t\tel.removeChild(el.firstChild);\r\n  \t}\r\n  }\r\n\r\n  // @function toFront(el: HTMLElement)\r\n  // Makes `el` the last child of its parent, so it renders in front of the other children.\r\n  function toFront(el) {\r\n  \tvar parent = el.parentNode;\r\n  \tif (parent && parent.lastChild !== el) {\r\n  \t\tparent.appendChild(el);\r\n  \t}\r\n  }\r\n\r\n  // @function toBack(el: HTMLElement)\r\n  // Makes `el` the first child of its parent, so it renders behind the other children.\r\n  function toBack(el) {\r\n  \tvar parent = el.parentNode;\r\n  \tif (parent && parent.firstChild !== el) {\r\n  \t\tparent.insertBefore(el, parent.firstChild);\r\n  \t}\r\n  }\r\n\r\n  // @function hasClass(el: HTMLElement, name: String): Boolean\r\n  // Returns `true` if the element's class attribute contains `name`.\r\n  function hasClass(el, name) {\r\n  \tif (el.classList !== undefined) {\r\n  \t\treturn el.classList.contains(name);\r\n  \t}\r\n  \tvar className = getClass(el);\r\n  \treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n  }\r\n\r\n  // @function addClass(el: HTMLElement, name: String)\r\n  // Adds `name` to the element's class attribute.\r\n  function addClass(el, name) {\r\n  \tif (el.classList !== undefined) {\r\n  \t\tvar classes = splitWords(name);\r\n  \t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n  \t\t\tel.classList.add(classes[i]);\r\n  \t\t}\r\n  \t} else if (!hasClass(el, name)) {\r\n  \t\tvar className = getClass(el);\r\n  \t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n  \t}\r\n  }\r\n\r\n  // @function removeClass(el: HTMLElement, name: String)\r\n  // Removes `name` from the element's class attribute.\r\n  function removeClass(el, name) {\r\n  \tif (el.classList !== undefined) {\r\n  \t\tel.classList.remove(name);\r\n  \t} else {\r\n  \t\tsetClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n  \t}\r\n  }\r\n\r\n  // @function setClass(el: HTMLElement, name: String)\r\n  // Sets the element's class.\r\n  function setClass(el, name) {\r\n  \tif (el.className.baseVal === undefined) {\r\n  \t\tel.className = name;\r\n  \t} else {\r\n  \t\t// in case of SVG element\r\n  \t\tel.className.baseVal = name;\r\n  \t}\r\n  }\r\n\r\n  // @function getClass(el: HTMLElement): String\r\n  // Returns the element's class.\r\n  function getClass(el) {\r\n  \t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n  \t// (Required for linked SVG elements in IE11.)\r\n  \tif (el.correspondingElement) {\r\n  \t\tel = el.correspondingElement;\r\n  \t}\r\n  \treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n  }\r\n\r\n  // @function setOpacity(el: HTMLElement, opacity: Number)\r\n  // Set the opacity of an element (including old IE support).\r\n  // `opacity` must be a number from `0` to `1`.\r\n  function setOpacity(el, value) {\r\n  \tif ('opacity' in el.style) {\r\n  \t\tel.style.opacity = value;\r\n  \t} else if ('filter' in el.style) {\r\n  \t\t_setOpacityIE(el, value);\r\n  \t}\r\n  }\r\n\r\n  function _setOpacityIE(el, value) {\r\n  \tvar filter = false,\r\n  \t    filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n  \t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n  \ttry {\r\n  \t\tfilter = el.filters.item(filterName);\r\n  \t} catch (e) {\r\n  \t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n  \t\t// it isn't needed and breaks transparent pngs.\r\n  \t\tif (value === 1) { return; }\r\n  \t}\r\n\r\n  \tvalue = Math.round(value * 100);\r\n\r\n  \tif (filter) {\r\n  \t\tfilter.Enabled = (value !== 100);\r\n  \t\tfilter.Opacity = value;\r\n  \t} else {\r\n  \t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n  \t}\r\n  }\r\n\r\n  // @function testProp(props: String[]): String|false\r\n  // Goes through the array of style names and returns the first name\r\n  // that is a valid style name for an element. If no such name is found,\r\n  // it returns false. Useful for vendor-prefixed styles like `transform`.\r\n  function testProp(props) {\r\n  \tvar style = document.documentElement.style;\r\n\r\n  \tfor (var i = 0; i < props.length; i++) {\r\n  \t\tif (props[i] in style) {\r\n  \t\t\treturn props[i];\r\n  \t\t}\r\n  \t}\r\n  \treturn false;\r\n  }\r\n\r\n  // @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n  // Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n  // and optionally scaled by `scale`. Does not have an effect if the\r\n  // browser doesn't support 3D CSS transforms.\r\n  function setTransform(el, offset, scale) {\r\n  \tvar pos = offset || new Point(0, 0);\r\n\r\n  \tel.style[TRANSFORM] =\r\n  \t\t(Browser.ie3d ?\r\n  \t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n  \t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n  \t\t(scale ? ' scale(' + scale + ')' : '');\r\n  }\r\n\r\n  // @function setPosition(el: HTMLElement, position: Point)\r\n  // Sets the position of `el` to coordinates specified by `position`,\r\n  // using CSS translate or top/left positioning depending on the browser\r\n  // (used by Leaflet internally to position its layers).\r\n  function setPosition(el, point) {\r\n\r\n  \t/*eslint-disable */\r\n  \tel._leaflet_pos = point;\r\n  \t/* eslint-enable */\r\n\r\n  \tif (Browser.any3d) {\r\n  \t\tsetTransform(el, point);\r\n  \t} else {\r\n  \t\tel.style.left = point.x + 'px';\r\n  \t\tel.style.top = point.y + 'px';\r\n  \t}\r\n  }\r\n\r\n  // @function getPosition(el: HTMLElement): Point\r\n  // Returns the coordinates of an element previously positioned with setPosition.\r\n  function getPosition(el) {\r\n  \t// this method is only used for elements previously positioned using setPosition,\r\n  \t// so it's safe to cache the position for performance\r\n\r\n  \treturn el._leaflet_pos || new Point(0, 0);\r\n  }\r\n\r\n  // @function disableTextSelection()\r\n  // Prevents the user from generating `selectstart` DOM events, usually generated\r\n  // when the user drags the mouse through a page with text. Used internally\r\n  // by Leaflet to override the behaviour of any click-and-drag interaction on\r\n  // the map. Affects drag interactions on the whole document.\r\n\r\n  // @function enableTextSelection()\r\n  // Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\n  var disableTextSelection;\r\n  var enableTextSelection;\r\n  var _userSelect;\r\n  if ('onselectstart' in document) {\r\n  \tdisableTextSelection = function () {\r\n  \t\ton(window, 'selectstart', preventDefault);\r\n  \t};\r\n  \tenableTextSelection = function () {\r\n  \t\toff(window, 'selectstart', preventDefault);\r\n  \t};\r\n  } else {\r\n  \tvar userSelectProperty = testProp(\r\n  \t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n  \tdisableTextSelection = function () {\r\n  \t\tif (userSelectProperty) {\r\n  \t\t\tvar style = document.documentElement.style;\r\n  \t\t\t_userSelect = style[userSelectProperty];\r\n  \t\t\tstyle[userSelectProperty] = 'none';\r\n  \t\t}\r\n  \t};\r\n  \tenableTextSelection = function () {\r\n  \t\tif (userSelectProperty) {\r\n  \t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n  \t\t\t_userSelect = undefined;\r\n  \t\t}\r\n  \t};\r\n  }\r\n\r\n  // @function disableImageDrag()\r\n  // As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n  // for `dragstart` DOM events, usually generated when the user drags an image.\r\n  function disableImageDrag() {\r\n  \ton(window, 'dragstart', preventDefault);\r\n  }\r\n\r\n  // @function enableImageDrag()\r\n  // Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\n  function enableImageDrag() {\r\n  \toff(window, 'dragstart', preventDefault);\r\n  }\r\n\r\n  var _outlineElement, _outlineStyle;\r\n  // @function preventOutline(el: HTMLElement)\r\n  // Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n  // of the element `el` invisible. Used internally by Leaflet to prevent\r\n  // focusable elements from displaying an outline when the user performs a\r\n  // drag interaction on them.\r\n  function preventOutline(element) {\r\n  \twhile (element.tabIndex === -1) {\r\n  \t\telement = element.parentNode;\r\n  \t}\r\n  \tif (!element.style) { return; }\r\n  \trestoreOutline();\r\n  \t_outlineElement = element;\r\n  \t_outlineStyle = element.style.outlineStyle;\r\n  \telement.style.outlineStyle = 'none';\r\n  \ton(window, 'keydown', restoreOutline);\r\n  }\r\n\r\n  // @function restoreOutline()\r\n  // Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\n  function restoreOutline() {\r\n  \tif (!_outlineElement) { return; }\r\n  \t_outlineElement.style.outlineStyle = _outlineStyle;\r\n  \t_outlineElement = undefined;\r\n  \t_outlineStyle = undefined;\r\n  \toff(window, 'keydown', restoreOutline);\r\n  }\r\n\r\n  // @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n  // Finds the closest parent node which size (width and height) is not null.\r\n  function getSizedParentNode(element) {\r\n  \tdo {\r\n  \t\telement = element.parentNode;\r\n  \t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n  \treturn element;\r\n  }\r\n\r\n  // @function getScale(el: HTMLElement): Object\r\n  // Computes the CSS scale currently applied on the element.\r\n  // Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n  // and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\n  function getScale(element) {\r\n  \tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n  \treturn {\r\n  \t\tx: rect.width / element.offsetWidth || 1,\r\n  \t\ty: rect.height / element.offsetHeight || 1,\r\n  \t\tboundingClientRect: rect\r\n  \t};\r\n  }\n\n  var DomUtil = {\n    __proto__: null,\n    TRANSFORM: TRANSFORM,\n    TRANSITION: TRANSITION,\n    TRANSITION_END: TRANSITION_END,\n    get: get,\n    getStyle: getStyle,\n    create: create$1,\n    remove: remove,\n    empty: empty,\n    toFront: toFront,\n    toBack: toBack,\n    hasClass: hasClass,\n    addClass: addClass,\n    removeClass: removeClass,\n    setClass: setClass,\n    getClass: getClass,\n    setOpacity: setOpacity,\n    testProp: testProp,\n    setTransform: setTransform,\n    setPosition: setPosition,\n    getPosition: getPosition,\n    get disableTextSelection () { return disableTextSelection; },\n    get enableTextSelection () { return enableTextSelection; },\n    disableImageDrag: disableImageDrag,\n    enableImageDrag: enableImageDrag,\n    preventOutline: preventOutline,\n    restoreOutline: restoreOutline,\n    getSizedParentNode: getSizedParentNode,\n    getScale: getScale\n  };\n\n  /*\r\n   * @namespace DomEvent\r\n   * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n   */\r\n\r\n  // Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n  // @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n  // Adds a listener function (`fn`) to a particular DOM event type of the\r\n  // element `el`. You can optionally specify the context of the listener\r\n  // (object the `this` keyword will point to). You can also pass several\r\n  // space-separated types (e.g. `'click dblclick'`).\r\n\r\n  // @alternative\r\n  // @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n  // Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n  function on(obj, types, fn, context) {\r\n\r\n  \tif (types && typeof types === 'object') {\r\n  \t\tfor (var type in types) {\r\n  \t\t\taddOne(obj, type, types[type], fn);\r\n  \t\t}\r\n  \t} else {\r\n  \t\ttypes = splitWords(types);\r\n\r\n  \t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n  \t\t\taddOne(obj, types[i], fn, context);\r\n  \t\t}\r\n  \t}\r\n\r\n  \treturn this;\r\n  }\r\n\r\n  var eventsKey = '_leaflet_events';\r\n\r\n  // @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n  // Removes a previously added listener function.\r\n  // Note that if you passed a custom context to on, you must pass the same\r\n  // context to `off` in order to remove the listener.\r\n\r\n  // @alternative\r\n  // @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n  // Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\r\n  // @alternative\r\n  // @function off(el: HTMLElement, types: String): this\r\n  // Removes all previously added listeners of given types.\r\n\r\n  // @alternative\r\n  // @function off(el: HTMLElement): this\r\n  // Removes all previously added listeners from given HTMLElement\r\n  function off(obj, types, fn, context) {\r\n\r\n  \tif (arguments.length === 1) {\r\n  \t\tbatchRemove(obj);\r\n  \t\tdelete obj[eventsKey];\r\n\r\n  \t} else if (types && typeof types === 'object') {\r\n  \t\tfor (var type in types) {\r\n  \t\t\tremoveOne(obj, type, types[type], fn);\r\n  \t\t}\r\n\r\n  \t} else {\r\n  \t\ttypes = splitWords(types);\r\n\r\n  \t\tif (arguments.length === 2) {\r\n  \t\t\tbatchRemove(obj, function (type) {\r\n  \t\t\t\treturn indexOf(types, type) !== -1;\r\n  \t\t\t});\r\n  \t\t} else {\r\n  \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n  \t\t\t\tremoveOne(obj, types[i], fn, context);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t}\r\n\r\n  \treturn this;\r\n  }\r\n\r\n  function batchRemove(obj, filterFn) {\r\n  \tfor (var id in obj[eventsKey]) {\r\n  \t\tvar type = id.split(/\\d/)[0];\r\n  \t\tif (!filterFn || filterFn(type)) {\r\n  \t\t\tremoveOne(obj, type, null, null, id);\r\n  \t\t}\r\n  \t}\r\n  }\r\n\r\n  var mouseSubst = {\r\n  \tmouseenter: 'mouseover',\r\n  \tmouseleave: 'mouseout',\r\n  \twheel: !('onwheel' in window) && 'mousewheel'\r\n  };\r\n\r\n  function addOne(obj, type, fn, context) {\r\n  \tvar id = type + stamp(fn) + (context ? '_' + stamp(context) : '');\r\n\r\n  \tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n  \tvar handler = function (e) {\r\n  \t\treturn fn.call(context || obj, e || window.event);\r\n  \t};\r\n\r\n  \tvar originalHandler = handler;\r\n\r\n  \tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n  \t\t// Needs DomEvent.Pointer.js\r\n  \t\thandler = addPointerListener(obj, type, handler);\r\n\r\n  \t} else if (Browser.touch && (type === 'dblclick')) {\r\n  \t\thandler = addDoubleTapListener(obj, handler);\r\n\r\n  \t} else if ('addEventListener' in obj) {\r\n\r\n  \t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' ||  type === 'mousewheel') {\r\n  \t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n  \t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n  \t\t\thandler = function (e) {\r\n  \t\t\t\te = e || window.event;\r\n  \t\t\t\tif (isExternalTarget(obj, e)) {\r\n  \t\t\t\t\toriginalHandler(e);\r\n  \t\t\t\t}\r\n  \t\t\t};\r\n  \t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n  \t\t} else {\r\n  \t\t\tobj.addEventListener(type, originalHandler, false);\r\n  \t\t}\r\n\r\n  \t} else {\r\n  \t\tobj.attachEvent('on' + type, handler);\r\n  \t}\r\n\r\n  \tobj[eventsKey] = obj[eventsKey] || {};\r\n  \tobj[eventsKey][id] = handler;\r\n  }\r\n\r\n  function removeOne(obj, type, fn, context, id) {\r\n  \tid = id || type + stamp(fn) + (context ? '_' + stamp(context) : '');\r\n  \tvar handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n  \tif (!handler) { return this; }\r\n\r\n  \tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n  \t\tremovePointerListener(obj, type, handler);\r\n\r\n  \t} else if (Browser.touch && (type === 'dblclick')) {\r\n  \t\tremoveDoubleTapListener(obj, handler);\r\n\r\n  \t} else if ('removeEventListener' in obj) {\r\n\r\n  \t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n  \t} else {\r\n  \t\tobj.detachEvent('on' + type, handler);\r\n  \t}\r\n\r\n  \tobj[eventsKey][id] = null;\r\n  }\r\n\r\n  // @function stopPropagation(ev: DOMEvent): this\r\n  // Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n  // ```js\r\n  // L.DomEvent.on(div, 'click', function (ev) {\r\n  // \tL.DomEvent.stopPropagation(ev);\r\n  // });\r\n  // ```\r\n  function stopPropagation(e) {\r\n\r\n  \tif (e.stopPropagation) {\r\n  \t\te.stopPropagation();\r\n  \t} else if (e.originalEvent) {  // In case of Leaflet event.\r\n  \t\te.originalEvent._stopped = true;\r\n  \t} else {\r\n  \t\te.cancelBubble = true;\r\n  \t}\r\n\r\n  \treturn this;\r\n  }\r\n\r\n  // @function disableScrollPropagation(el: HTMLElement): this\r\n  // Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\n  function disableScrollPropagation(el) {\r\n  \taddOne(el, 'wheel', stopPropagation);\r\n  \treturn this;\r\n  }\r\n\r\n  // @function disableClickPropagation(el: HTMLElement): this\r\n  // Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,\r\n  // `'mousedown'` and `'touchstart'` events (plus browser variants).\r\n  function disableClickPropagation(el) {\r\n  \ton(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);\r\n  \tel['_leaflet_disable_click'] = true;\r\n  \treturn this;\r\n  }\r\n\r\n  // @function preventDefault(ev: DOMEvent): this\r\n  // Prevents the default action of the DOM Event `ev` from happening (such as\r\n  // following a link in the href of the a element, or doing a POST request\r\n  // with page reload when a `<form>` is submitted).\r\n  // Use it inside listener functions.\r\n  function preventDefault(e) {\r\n  \tif (e.preventDefault) {\r\n  \t\te.preventDefault();\r\n  \t} else {\r\n  \t\te.returnValue = false;\r\n  \t}\r\n  \treturn this;\r\n  }\r\n\r\n  // @function stop(ev: DOMEvent): this\r\n  // Does `stopPropagation` and `preventDefault` at the same time.\r\n  function stop(e) {\r\n  \tpreventDefault(e);\r\n  \tstopPropagation(e);\r\n  \treturn this;\r\n  }\r\n\r\n  // @function getPropagationPath(ev: DOMEvent): Array\r\n  // Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).\r\n  // Returns an array containing the `HTMLElement`s that the given DOM event\r\n  // should propagate to (if not stopped).\r\n  function getPropagationPath(ev) {\r\n  \tif (ev.composedPath) {\r\n  \t\treturn ev.composedPath();\r\n  \t}\r\n\r\n  \tvar path = [];\r\n  \tvar el = ev.target;\r\n\r\n  \twhile (el) {\r\n  \t\tpath.push(el);\r\n  \t\tel = el.parentNode;\r\n  \t}\r\n  \treturn path;\r\n  }\r\n\r\n\r\n  // @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n  // Gets normalized mouse position from a DOM event relative to the\r\n  // `container` (border excluded) or to the whole page if not specified.\r\n  function getMousePosition(e, container) {\r\n  \tif (!container) {\r\n  \t\treturn new Point(e.clientX, e.clientY);\r\n  \t}\r\n\r\n  \tvar scale = getScale(container),\r\n  \t    offset = scale.boundingClientRect; // left and top  values are in page scale (like the event clientX/Y)\r\n\r\n  \treturn new Point(\r\n  \t\t// offset.left/top values are in page scale (like clientX/Y),\r\n  \t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n  \t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n  \t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n  \t);\r\n  }\r\n\r\n\r\n  //  except , Safari and\r\n  // We need double the scroll pixels (see #7403 and #4538) for all Browsers\r\n  // except OSX (Mac) -> 3x, Chrome running on Linux 1x\r\n\r\n  var wheelPxFactor =\r\n  \t(Browser.linux && Browser.chrome) ? window.devicePixelRatio :\r\n  \tBrowser.mac ? window.devicePixelRatio * 3 :\r\n  \twindow.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;\r\n  // @function getWheelDelta(ev: DOMEvent): Number\r\n  // Gets normalized wheel delta from a wheel DOM event, in vertical\r\n  // pixels scrolled (negative if scrolling down).\r\n  // Events from pointing devices without precise scrolling are mapped to\r\n  // a best guess of 60 pixels.\r\n  function getWheelDelta(e) {\r\n  \treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n  \t       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n  \t       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n  \t       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n  \t       (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n  \t       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n  \t       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n  \t       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n  \t       0;\r\n  }\r\n\r\n  // check if element really left/entered the event target (for mouseenter/mouseleave)\r\n  function isExternalTarget(el, e) {\r\n\r\n  \tvar related = e.relatedTarget;\r\n\r\n  \tif (!related) { return true; }\r\n\r\n  \ttry {\r\n  \t\twhile (related && (related !== el)) {\r\n  \t\t\trelated = related.parentNode;\r\n  \t\t}\r\n  \t} catch (err) {\r\n  \t\treturn false;\r\n  \t}\r\n  \treturn (related !== el);\r\n  }\n\n  var DomEvent = {\n    __proto__: null,\n    on: on,\n    off: off,\n    stopPropagation: stopPropagation,\n    disableScrollPropagation: disableScrollPropagation,\n    disableClickPropagation: disableClickPropagation,\n    preventDefault: preventDefault,\n    stop: stop,\n    getPropagationPath: getPropagationPath,\n    getMousePosition: getMousePosition,\n    getWheelDelta: getWheelDelta,\n    isExternalTarget: isExternalTarget,\n    addListener: on,\n    removeListener: off\n  };\n\n  /*\n   * @class PosAnimation\n   * @aka L.PosAnimation\n   * @inherits Evented\n   * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n   *\n   * @example\n   * ```js\n   * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);\n   *\n   * myPositionMarker.on(\"click\", function() {\n   * \tvar pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());\n   * \tpos.y -= 25;\n   * \tvar fx = new L.PosAnimation();\n   *\n   * \tfx.once('end',function() {\n   * \t\tpos.y += 25;\n   * \t\tfx.run(myPositionMarker._icon, pos, 0.8);\n   * \t});\n   *\n   * \tfx.run(myPositionMarker._icon, pos, 0.3);\n   * });\n   *\n   * ```\n   *\n   * @constructor L.PosAnimation()\n   * Creates a `PosAnimation` object.\n   *\n   */\n\n  var PosAnimation = Evented.extend({\n\n  \t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n  \t// Run an animation of a given element to a new position, optionally setting\n  \t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n  \t// argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),\n  \t// `0.5` by default).\n  \trun: function (el, newPos, duration, easeLinearity) {\n  \t\tthis.stop();\n\n  \t\tthis._el = el;\n  \t\tthis._inProgress = true;\n  \t\tthis._duration = duration || 0.25;\n  \t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n  \t\tthis._startPos = getPosition(el);\n  \t\tthis._offset = newPos.subtract(this._startPos);\n  \t\tthis._startTime = +new Date();\n\n  \t\t// @event start: Event\n  \t\t// Fired when the animation starts\n  \t\tthis.fire('start');\n\n  \t\tthis._animate();\n  \t},\n\n  \t// @method stop()\n  \t// Stops the animation (if currently running).\n  \tstop: function () {\n  \t\tif (!this._inProgress) { return; }\n\n  \t\tthis._step(true);\n  \t\tthis._complete();\n  \t},\n\n  \t_animate: function () {\n  \t\t// animation loop\n  \t\tthis._animId = requestAnimFrame(this._animate, this);\n  \t\tthis._step();\n  \t},\n\n  \t_step: function (round) {\n  \t\tvar elapsed = (+new Date()) - this._startTime,\n  \t\t    duration = this._duration * 1000;\n\n  \t\tif (elapsed < duration) {\n  \t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n  \t\t} else {\n  \t\t\tthis._runFrame(1);\n  \t\t\tthis._complete();\n  \t\t}\n  \t},\n\n  \t_runFrame: function (progress, round) {\n  \t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n  \t\tif (round) {\n  \t\t\tpos._round();\n  \t\t}\n  \t\tsetPosition(this._el, pos);\n\n  \t\t// @event step: Event\n  \t\t// Fired continuously during the animation.\n  \t\tthis.fire('step');\n  \t},\n\n  \t_complete: function () {\n  \t\tcancelAnimFrame(this._animId);\n\n  \t\tthis._inProgress = false;\n  \t\t// @event end: Event\n  \t\t// Fired when the animation ends.\n  \t\tthis.fire('end');\n  \t},\n\n  \t_easeOut: function (t) {\n  \t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n  \t}\n  });\n\n  /*\r\n   * @class Map\r\n   * @aka L.Map\r\n   * @inherits Evented\r\n   *\r\n   * The central class of the API — it is used to create a map on a page and manipulate it.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * // initialize the map on the \"map\" div with a given center and zoom\r\n   * var map = L.map('map', {\r\n   * \tcenter: [51.505, -0.09],\r\n   * \tzoom: 13\r\n   * });\r\n   * ```\r\n   *\r\n   */\r\n\r\n  var Map = Evented.extend({\r\n\r\n  \toptions: {\r\n  \t\t// @section Map State Options\r\n  \t\t// @option crs: CRS = L.CRS.EPSG3857\r\n  \t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n  \t\t// sure what it means.\r\n  \t\tcrs: EPSG3857,\r\n\r\n  \t\t// @option center: LatLng = undefined\r\n  \t\t// Initial geographic center of the map\r\n  \t\tcenter: undefined,\r\n\r\n  \t\t// @option zoom: Number = undefined\r\n  \t\t// Initial map zoom level\r\n  \t\tzoom: undefined,\r\n\r\n  \t\t// @option minZoom: Number = *\r\n  \t\t// Minimum zoom level of the map.\r\n  \t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n  \t\t// the lowest of their `minZoom` options will be used instead.\r\n  \t\tminZoom: undefined,\r\n\r\n  \t\t// @option maxZoom: Number = *\r\n  \t\t// Maximum zoom level of the map.\r\n  \t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n  \t\t// the highest of their `maxZoom` options will be used instead.\r\n  \t\tmaxZoom: undefined,\r\n\r\n  \t\t// @option layers: Layer[] = []\r\n  \t\t// Array of layers that will be added to the map initially\r\n  \t\tlayers: [],\r\n\r\n  \t\t// @option maxBounds: LatLngBounds = null\r\n  \t\t// When this option is set, the map restricts the view to the given\r\n  \t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n  \t\t// outside the view. To set the restriction dynamically, use\r\n  \t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n  \t\tmaxBounds: undefined,\r\n\r\n  \t\t// @option renderer: Renderer = *\r\n  \t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n  \t\t// or `L.Canvas` by default depending on browser support.\r\n  \t\trenderer: undefined,\r\n\r\n\r\n  \t\t// @section Animation Options\r\n  \t\t// @option zoomAnimation: Boolean = true\r\n  \t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n  \t\t// in all browsers that support CSS3 Transitions except Android.\r\n  \t\tzoomAnimation: true,\r\n\r\n  \t\t// @option zoomAnimationThreshold: Number = 4\r\n  \t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n  \t\tzoomAnimationThreshold: 4,\r\n\r\n  \t\t// @option fadeAnimation: Boolean = true\r\n  \t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n  \t\t// in all browsers that support CSS3 Transitions except Android.\r\n  \t\tfadeAnimation: true,\r\n\r\n  \t\t// @option markerZoomAnimation: Boolean = true\r\n  \t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n  \t\t// they will disappear for the length of the animation. By default it's\r\n  \t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n  \t\tmarkerZoomAnimation: true,\r\n\r\n  \t\t// @option transform3DLimit: Number = 2^23\r\n  \t\t// Defines the maximum size of a CSS translation transform. The default\r\n  \t\t// value should not be changed unless a web browser positions layers in\r\n  \t\t// the wrong place after doing a large `panBy`.\r\n  \t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n  \t\t// @section Interaction Options\r\n  \t\t// @option zoomSnap: Number = 1\r\n  \t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n  \t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n  \t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n  \t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n  \t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n  \t\tzoomSnap: 1,\r\n\r\n  \t\t// @option zoomDelta: Number = 1\r\n  \t\t// Controls how much the map's zoom level will change after a\r\n  \t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n  \t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n  \t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n  \t\tzoomDelta: 1,\r\n\r\n  \t\t// @option trackResize: Boolean = true\r\n  \t\t// Whether the map automatically handles browser window resize to update itself.\r\n  \t\ttrackResize: true\r\n  \t},\r\n\r\n  \tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n  \t\toptions = setOptions(this, options);\r\n\r\n  \t\t// Make sure to assign internal flags at the beginning,\r\n  \t\t// to avoid inconsistent state in some edge cases.\r\n  \t\tthis._handlers = [];\r\n  \t\tthis._layers = {};\r\n  \t\tthis._zoomBoundLayers = {};\r\n  \t\tthis._sizeChanged = true;\r\n\r\n  \t\tthis._initContainer(id);\r\n  \t\tthis._initLayout();\r\n\r\n  \t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n  \t\tthis._onResize = bind(this._onResize, this);\r\n\r\n  \t\tthis._initEvents();\r\n\r\n  \t\tif (options.maxBounds) {\r\n  \t\t\tthis.setMaxBounds(options.maxBounds);\r\n  \t\t}\r\n\r\n  \t\tif (options.zoom !== undefined) {\r\n  \t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n  \t\t}\r\n\r\n  \t\tif (options.center && options.zoom !== undefined) {\r\n  \t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n  \t\t}\r\n\r\n  \t\tthis.callInitHooks();\r\n\r\n  \t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n  \t\tthis._zoomAnimated = TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n  \t\t\t\tthis.options.zoomAnimation;\r\n\r\n  \t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n  \t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tthis._createAnimProxy();\r\n  \t\t\ton(this._proxy, TRANSITION_END, this._catchTransitionEnd, this);\r\n  \t\t}\r\n\r\n  \t\tthis._addLayers(this.options.layers);\r\n  \t},\r\n\r\n\r\n  \t// @section Methods for modifying map state\r\n\r\n  \t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n  \t// Sets the view of the map (geographical center and zoom) with the given\r\n  \t// animation options.\r\n  \tsetView: function (center, zoom, options) {\r\n\r\n  \t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n  \t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n  \t\toptions = options || {};\r\n\r\n  \t\tthis._stop();\r\n\r\n  \t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n  \t\t\tif (options.animate !== undefined) {\r\n  \t\t\t\toptions.zoom = extend({animate: options.animate}, options.zoom);\r\n  \t\t\t\toptions.pan = extend({animate: options.animate, duration: options.duration}, options.pan);\r\n  \t\t\t}\r\n\r\n  \t\t\t// try animating pan or zoom\r\n  \t\t\tvar moved = (this._zoom !== zoom) ?\r\n  \t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n  \t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n  \t\t\tif (moved) {\r\n  \t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n  \t\t\t\tclearTimeout(this._sizeTimer);\r\n  \t\t\t\treturn this;\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\t// animation didn't start, just reset the map view\r\n  \t\tthis._resetView(center, zoom, options.pan && options.pan.noMoveStart);\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n  \t// Sets the zoom of the map.\r\n  \tsetZoom: function (zoom, options) {\r\n  \t\tif (!this._loaded) {\r\n  \t\t\tthis._zoom = zoom;\r\n  \t\t\treturn this;\r\n  \t\t}\r\n  \t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n  \t},\r\n\r\n  \t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n  \t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n  \tzoomIn: function (delta, options) {\r\n  \t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n  \t\treturn this.setZoom(this._zoom + delta, options);\r\n  \t},\r\n\r\n  \t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n  \t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n  \tzoomOut: function (delta, options) {\r\n  \t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n  \t\treturn this.setZoom(this._zoom - delta, options);\r\n  \t},\r\n\r\n  \t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n  \t// Zooms the map while keeping a specified geographical point on the map\r\n  \t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n  \t// @alternative\r\n  \t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n  \t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n  \tsetZoomAround: function (latlng, zoom, options) {\r\n  \t\tvar scale = this.getZoomScale(zoom),\r\n  \t\t    viewHalf = this.getSize().divideBy(2),\r\n  \t\t    containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n  \t\t    centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n  \t\t    newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n  \t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n  \t},\r\n\r\n  \t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n  \t\toptions = options || {};\r\n  \t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n  \t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n  \t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n  \t\t    zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n  \t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n  \t\tif (zoom === Infinity) {\r\n  \t\t\treturn {\r\n  \t\t\t\tcenter: bounds.getCenter(),\r\n  \t\t\t\tzoom: zoom\r\n  \t\t\t};\r\n  \t\t}\r\n\r\n  \t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n  \t\t    swPoint = this.project(bounds.getSouthWest(), zoom),\r\n  \t\t    nePoint = this.project(bounds.getNorthEast(), zoom),\r\n  \t\t    center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n  \t\treturn {\r\n  \t\t\tcenter: center,\r\n  \t\t\tzoom: zoom\r\n  \t\t};\r\n  \t},\r\n\r\n  \t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n  \t// Sets a map view that contains the given geographical bounds with the\r\n  \t// maximum zoom level possible.\r\n  \tfitBounds: function (bounds, options) {\r\n\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n\r\n  \t\tif (!bounds.isValid()) {\r\n  \t\t\tthrow new Error('Bounds are not valid.');\r\n  \t\t}\r\n\r\n  \t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n  \t\treturn this.setView(target.center, target.zoom, options);\r\n  \t},\r\n\r\n  \t// @method fitWorld(options?: fitBounds options): this\r\n  \t// Sets a map view that mostly contains the whole world with the maximum\r\n  \t// zoom level possible.\r\n  \tfitWorld: function (options) {\r\n  \t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n  \t},\r\n\r\n  \t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n  \t// Pans the map to a given center.\r\n  \tpanTo: function (center, options) { // (LatLng)\r\n  \t\treturn this.setView(center, this._zoom, {pan: options});\r\n  \t},\r\n\r\n  \t// @method panBy(offset: Point, options?: Pan options): this\r\n  \t// Pans the map by a given number of pixels (animated).\r\n  \tpanBy: function (offset, options) {\r\n  \t\toffset = toPoint(offset).round();\r\n  \t\toptions = options || {};\r\n\r\n  \t\tif (!offset.x && !offset.y) {\r\n  \t\t\treturn this.fire('moveend');\r\n  \t\t}\r\n  \t\t// If we pan too far, Chrome gets issues with tiles\r\n  \t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n  \t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n  \t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tif (!this._panAnim) {\r\n  \t\t\tthis._panAnim = new PosAnimation();\r\n\r\n  \t\t\tthis._panAnim.on({\r\n  \t\t\t\t'step': this._onPanTransitionStep,\r\n  \t\t\t\t'end': this._onPanTransitionEnd\r\n  \t\t\t}, this);\r\n  \t\t}\r\n\r\n  \t\t// don't fire movestart if animating inertia\r\n  \t\tif (!options.noMoveStart) {\r\n  \t\t\tthis.fire('movestart');\r\n  \t\t}\r\n\r\n  \t\t// animate pan unless animate: false specified\r\n  \t\tif (options.animate !== false) {\r\n  \t\t\taddClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n  \t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n  \t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n  \t\t} else {\r\n  \t\t\tthis._rawPanBy(offset);\r\n  \t\t\tthis.fire('move').fire('moveend');\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n  \t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n  \t// pan-zoom animation.\r\n  \tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n  \t\toptions = options || {};\r\n  \t\tif (options.animate === false || !Browser.any3d) {\r\n  \t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n  \t\t}\r\n\r\n  \t\tthis._stop();\r\n\r\n  \t\tvar from = this.project(this.getCenter()),\r\n  \t\t    to = this.project(targetCenter),\r\n  \t\t    size = this.getSize(),\r\n  \t\t    startZoom = this._zoom;\r\n\r\n  \t\ttargetCenter = toLatLng(targetCenter);\r\n  \t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n  \t\tvar w0 = Math.max(size.x, size.y),\r\n  \t\t    w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n  \t\t    u1 = (to.distanceTo(from)) || 1,\r\n  \t\t    rho = 1.42,\r\n  \t\t    rho2 = rho * rho;\r\n\r\n  \t\tfunction r(i) {\r\n  \t\t\tvar s1 = i ? -1 : 1,\r\n  \t\t\t    s2 = i ? w1 : w0,\r\n  \t\t\t    t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n  \t\t\t    b1 = 2 * s2 * rho2 * u1,\r\n  \t\t\t    b = t1 / b1,\r\n  \t\t\t    sq = Math.sqrt(b * b + 1) - b;\r\n\r\n  \t\t\t    // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n  \t\t\t    // thus triggering an infinite loop in flyTo\r\n  \t\t\t    var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n  \t\t\treturn log;\r\n  \t\t}\r\n\r\n  \t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n  \t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n  \t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n  \t\tvar r0 = r(0);\r\n\r\n  \t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n  \t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n  \t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n  \t\tvar start = Date.now(),\r\n  \t\t    S = (r(1) - r0) / rho,\r\n  \t\t    duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n  \t\tfunction frame() {\r\n  \t\t\tvar t = (Date.now() - start) / duration,\r\n  \t\t\t    s = easeOut(t) * S;\r\n\r\n  \t\t\tif (t <= 1) {\r\n  \t\t\t\tthis._flyToFrame = requestAnimFrame(frame, this);\r\n\r\n  \t\t\t\tthis._move(\r\n  \t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n  \t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n  \t\t\t\t\t{flyTo: true});\r\n\r\n  \t\t\t} else {\r\n  \t\t\t\tthis\r\n  \t\t\t\t\t._move(targetCenter, targetZoom)\r\n  \t\t\t\t\t._moveEnd(true);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n  \t\tframe.call(this);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n  \t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n  \t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n  \tflyToBounds: function (bounds, options) {\r\n  \t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n  \t\treturn this.flyTo(target.center, target.zoom, options);\r\n  \t},\r\n\r\n  \t// @method setMaxBounds(bounds: LatLngBounds): this\r\n  \t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n  \tsetMaxBounds: function (bounds) {\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n\r\n  \t\tif (this.listens('moveend', this._panInsideMaxBounds)) {\r\n  \t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n  \t\t}\r\n\r\n  \t\tif (!bounds.isValid()) {\r\n  \t\t\tthis.options.maxBounds = null;\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tthis.options.maxBounds = bounds;\r\n\r\n  \t\tif (this._loaded) {\r\n  \t\t\tthis._panInsideMaxBounds();\r\n  \t\t}\r\n\r\n  \t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n  \t},\r\n\r\n  \t// @method setMinZoom(zoom: Number): this\r\n  \t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n  \tsetMinZoom: function (zoom) {\r\n  \t\tvar oldZoom = this.options.minZoom;\r\n  \t\tthis.options.minZoom = zoom;\r\n\r\n  \t\tif (this._loaded && oldZoom !== zoom) {\r\n  \t\t\tthis.fire('zoomlevelschange');\r\n\r\n  \t\t\tif (this.getZoom() < this.options.minZoom) {\r\n  \t\t\t\treturn this.setZoom(zoom);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method setMaxZoom(zoom: Number): this\r\n  \t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n  \tsetMaxZoom: function (zoom) {\r\n  \t\tvar oldZoom = this.options.maxZoom;\r\n  \t\tthis.options.maxZoom = zoom;\r\n\r\n  \t\tif (this._loaded && oldZoom !== zoom) {\r\n  \t\t\tthis.fire('zoomlevelschange');\r\n\r\n  \t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n  \t\t\t\treturn this.setZoom(zoom);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n  \t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n  \tpanInsideBounds: function (bounds, options) {\r\n  \t\tthis._enforcingBounds = true;\r\n  \t\tvar center = this.getCenter(),\r\n  \t\t    newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n  \t\tif (!center.equals(newCenter)) {\r\n  \t\t\tthis.panTo(newCenter, options);\r\n  \t\t}\r\n\r\n  \t\tthis._enforcingBounds = false;\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method panInside(latlng: LatLng, options?: padding options): this\r\n  \t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n  \t// padding options to fit the display to more restricted bounds.\r\n  \t// If `latlng` is already within the (optionally padded) display bounds,\r\n  \t// the map will not be panned.\r\n  \tpanInside: function (latlng, options) {\r\n  \t\toptions = options || {};\r\n\r\n  \t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n  \t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n  \t\t    pixelCenter = this.project(this.getCenter()),\r\n  \t\t    pixelPoint = this.project(latlng),\r\n  \t\t    pixelBounds = this.getPixelBounds(),\r\n  \t\t    paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\r\n  \t\t    paddedSize = paddedBounds.getSize();\r\n\r\n  \t\tif (!paddedBounds.contains(pixelPoint)) {\r\n  \t\t\tthis._enforcingBounds = true;\r\n  \t\t\tvar centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\r\n  \t\t\tvar offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\r\n  \t\t\tpixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\r\n  \t\t\tpixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\r\n  \t\t\tthis.panTo(this.unproject(pixelCenter), options);\r\n  \t\t\tthis._enforcingBounds = false;\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method invalidateSize(options: Zoom/pan options): this\r\n  \t// Checks if the map container size changed and updates the map if so —\r\n  \t// call it after you've changed the map size dynamically, also animating\r\n  \t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n  \t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n  \t// that it doesn't happen often even if the method is called many\r\n  \t// times in a row.\r\n\r\n  \t// @alternative\r\n  \t// @method invalidateSize(animate: Boolean): this\r\n  \t// Checks if the map container size changed and updates the map if so —\r\n  \t// call it after you've changed the map size dynamically, also animating\r\n  \t// pan by default.\r\n  \tinvalidateSize: function (options) {\r\n  \t\tif (!this._loaded) { return this; }\r\n\r\n  \t\toptions = extend({\r\n  \t\t\tanimate: false,\r\n  \t\t\tpan: true\r\n  \t\t}, options === true ? {animate: true} : options);\r\n\r\n  \t\tvar oldSize = this.getSize();\r\n  \t\tthis._sizeChanged = true;\r\n  \t\tthis._lastCenter = null;\r\n\r\n  \t\tvar newSize = this.getSize(),\r\n  \t\t    oldCenter = oldSize.divideBy(2).round(),\r\n  \t\t    newCenter = newSize.divideBy(2).round(),\r\n  \t\t    offset = oldCenter.subtract(newCenter);\r\n\r\n  \t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n  \t\tif (options.animate && options.pan) {\r\n  \t\t\tthis.panBy(offset);\r\n\r\n  \t\t} else {\r\n  \t\t\tif (options.pan) {\r\n  \t\t\t\tthis._rawPanBy(offset);\r\n  \t\t\t}\r\n\r\n  \t\t\tthis.fire('move');\r\n\r\n  \t\t\tif (options.debounceMoveend) {\r\n  \t\t\t\tclearTimeout(this._sizeTimer);\r\n  \t\t\t\tthis._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200);\r\n  \t\t\t} else {\r\n  \t\t\t\tthis.fire('moveend');\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\t// @section Map state change events\r\n  \t\t// @event resize: ResizeEvent\r\n  \t\t// Fired when the map is resized.\r\n  \t\treturn this.fire('resize', {\r\n  \t\t\toldSize: oldSize,\r\n  \t\t\tnewSize: newSize\r\n  \t\t});\r\n  \t},\r\n\r\n  \t// @section Methods for modifying map state\r\n  \t// @method stop(): this\r\n  \t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n  \tstop: function () {\r\n  \t\tthis.setZoom(this._limitZoom(this._zoom));\r\n  \t\tif (!this.options.zoomSnap) {\r\n  \t\t\tthis.fire('viewreset');\r\n  \t\t}\r\n  \t\treturn this._stop();\r\n  \t},\r\n\r\n  \t// @section Geolocation methods\r\n  \t// @method locate(options?: Locate options): this\r\n  \t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n  \t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n  \t// and optionally sets the map view to the user's location with respect to\r\n  \t// detection accuracy (or to the world view if geolocation failed).\r\n  \t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n  \t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n  \t// See `Locate options` for more details.\r\n  \tlocate: function (options) {\r\n\r\n  \t\toptions = this._locateOptions = extend({\r\n  \t\t\ttimeout: 10000,\r\n  \t\t\twatch: false\r\n  \t\t\t// setView: false\r\n  \t\t\t// maxZoom: <Number>\r\n  \t\t\t// maximumAge: 0\r\n  \t\t\t// enableHighAccuracy: false\r\n  \t\t}, options);\r\n\r\n  \t\tif (!('geolocation' in navigator)) {\r\n  \t\t\tthis._handleGeolocationError({\r\n  \t\t\t\tcode: 0,\r\n  \t\t\t\tmessage: 'Geolocation not supported.'\r\n  \t\t\t});\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tvar onResponse = bind(this._handleGeolocationResponse, this),\r\n  \t\t    onError = bind(this._handleGeolocationError, this);\r\n\r\n  \t\tif (options.watch) {\r\n  \t\t\tthis._locationWatchId =\r\n  \t\t\t        navigator.geolocation.watchPosition(onResponse, onError, options);\r\n  \t\t} else {\r\n  \t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method stopLocate(): this\r\n  \t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n  \t// and aborts resetting the map view if map.locate was called with\r\n  \t// `{setView: true}`.\r\n  \tstopLocate: function () {\r\n  \t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n  \t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n  \t\t}\r\n  \t\tif (this._locateOptions) {\r\n  \t\t\tthis._locateOptions.setView = false;\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_handleGeolocationError: function (error) {\r\n  \t\tif (!this._container._leaflet_id) { return; }\r\n\r\n  \t\tvar c = error.code,\r\n  \t\t    message = error.message ||\r\n  \t\t            (c === 1 ? 'permission denied' :\r\n  \t\t            (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n  \t\tif (this._locateOptions.setView && !this._loaded) {\r\n  \t\t\tthis.fitWorld();\r\n  \t\t}\r\n\r\n  \t\t// @section Location events\r\n  \t\t// @event locationerror: ErrorEvent\r\n  \t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n  \t\tthis.fire('locationerror', {\r\n  \t\t\tcode: c,\r\n  \t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n  \t\t});\r\n  \t},\r\n\r\n  \t_handleGeolocationResponse: function (pos) {\r\n  \t\tif (!this._container._leaflet_id) { return; }\r\n\r\n  \t\tvar lat = pos.coords.latitude,\r\n  \t\t    lng = pos.coords.longitude,\r\n  \t\t    latlng = new LatLng(lat, lng),\r\n  \t\t    bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n  \t\t    options = this._locateOptions;\r\n\r\n  \t\tif (options.setView) {\r\n  \t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n  \t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n  \t\t}\r\n\r\n  \t\tvar data = {\r\n  \t\t\tlatlng: latlng,\r\n  \t\t\tbounds: bounds,\r\n  \t\t\ttimestamp: pos.timestamp\r\n  \t\t};\r\n\r\n  \t\tfor (var i in pos.coords) {\r\n  \t\t\tif (typeof pos.coords[i] === 'number') {\r\n  \t\t\t\tdata[i] = pos.coords[i];\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\t// @event locationfound: LocationEvent\r\n  \t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n  \t\t// went successfully.\r\n  \t\tthis.fire('locationfound', data);\r\n  \t},\r\n\r\n  \t// TODO Appropriate docs section?\r\n  \t// @section Other Methods\r\n  \t// @method addHandler(name: String, HandlerClass: Function): this\r\n  \t// Adds a new `Handler` to the map, given its name and constructor function.\r\n  \taddHandler: function (name, HandlerClass) {\r\n  \t\tif (!HandlerClass) { return this; }\r\n\r\n  \t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n  \t\tthis._handlers.push(handler);\r\n\r\n  \t\tif (this.options[name]) {\r\n  \t\t\thandler.enable();\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method remove(): this\r\n  \t// Destroys the map and clears all related event listeners.\r\n  \tremove: function () {\r\n\r\n  \t\tthis._initEvents(true);\r\n  \t\tif (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); }\r\n\r\n  \t\tif (this._containerId !== this._container._leaflet_id) {\r\n  \t\t\tthrow new Error('Map container is being reused by another instance');\r\n  \t\t}\r\n\r\n  \t\ttry {\r\n  \t\t\t// throws error in IE6-8\r\n  \t\t\tdelete this._container._leaflet_id;\r\n  \t\t\tdelete this._containerId;\r\n  \t\t} catch (e) {\r\n  \t\t\t/*eslint-disable */\r\n  \t\t\tthis._container._leaflet_id = undefined;\r\n  \t\t\t/* eslint-enable */\r\n  \t\t\tthis._containerId = undefined;\r\n  \t\t}\r\n\r\n  \t\tif (this._locationWatchId !== undefined) {\r\n  \t\t\tthis.stopLocate();\r\n  \t\t}\r\n\r\n  \t\tthis._stop();\r\n\r\n  \t\tremove(this._mapPane);\r\n\r\n  \t\tif (this._clearControlPos) {\r\n  \t\t\tthis._clearControlPos();\r\n  \t\t}\r\n  \t\tif (this._resizeRequest) {\r\n  \t\t\tcancelAnimFrame(this._resizeRequest);\r\n  \t\t\tthis._resizeRequest = null;\r\n  \t\t}\r\n\r\n  \t\tthis._clearHandlers();\r\n\r\n  \t\tif (this._loaded) {\r\n  \t\t\t// @section Map state change events\r\n  \t\t\t// @event unload: Event\r\n  \t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n  \t\t\tthis.fire('unload');\r\n  \t\t}\r\n\r\n  \t\tvar i;\r\n  \t\tfor (i in this._layers) {\r\n  \t\t\tthis._layers[i].remove();\r\n  \t\t}\r\n  \t\tfor (i in this._panes) {\r\n  \t\t\tremove(this._panes[i]);\r\n  \t\t}\r\n\r\n  \t\tthis._layers = [];\r\n  \t\tthis._panes = [];\r\n  \t\tdelete this._mapPane;\r\n  \t\tdelete this._renderer;\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @section Other Methods\r\n  \t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n  \t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n  \t// then returns it. The pane is created as a child of `container`, or\r\n  \t// as a child of the main map pane if not set.\r\n  \tcreatePane: function (name, container) {\r\n  \t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n  \t\t    pane = create$1('div', className, container || this._mapPane);\r\n\r\n  \t\tif (name) {\r\n  \t\t\tthis._panes[name] = pane;\r\n  \t\t}\r\n  \t\treturn pane;\r\n  \t},\r\n\r\n  \t// @section Methods for Getting Map State\r\n\r\n  \t// @method getCenter(): LatLng\r\n  \t// Returns the geographical center of the map view\r\n  \tgetCenter: function () {\r\n  \t\tthis._checkIfLoaded();\r\n\r\n  \t\tif (this._lastCenter && !this._moved()) {\r\n  \t\t\treturn this._lastCenter.clone();\r\n  \t\t}\r\n  \t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n  \t},\r\n\r\n  \t// @method getZoom(): Number\r\n  \t// Returns the current zoom level of the map view\r\n  \tgetZoom: function () {\r\n  \t\treturn this._zoom;\r\n  \t},\r\n\r\n  \t// @method getBounds(): LatLngBounds\r\n  \t// Returns the geographical bounds visible in the current map view\r\n  \tgetBounds: function () {\r\n  \t\tvar bounds = this.getPixelBounds(),\r\n  \t\t    sw = this.unproject(bounds.getBottomLeft()),\r\n  \t\t    ne = this.unproject(bounds.getTopRight());\r\n\r\n  \t\treturn new LatLngBounds(sw, ne);\r\n  \t},\r\n\r\n  \t// @method getMinZoom(): Number\r\n  \t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n  \tgetMinZoom: function () {\r\n  \t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n  \t},\r\n\r\n  \t// @method getMaxZoom(): Number\r\n  \t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n  \tgetMaxZoom: function () {\r\n  \t\treturn this.options.maxZoom === undefined ?\r\n  \t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n  \t\t\tthis.options.maxZoom;\r\n  \t},\r\n\r\n  \t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n  \t// Returns the maximum zoom level on which the given bounds fit to the map\r\n  \t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n  \t// instead returns the minimum zoom level on which the map view fits into\r\n  \t// the given bounds in its entirety.\r\n  \tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n  \t\tbounds = toLatLngBounds(bounds);\r\n  \t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n  \t\tvar zoom = this.getZoom() || 0,\r\n  \t\t    min = this.getMinZoom(),\r\n  \t\t    max = this.getMaxZoom(),\r\n  \t\t    nw = bounds.getNorthWest(),\r\n  \t\t    se = bounds.getSouthEast(),\r\n  \t\t    size = this.getSize().subtract(padding),\r\n  \t\t    boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n  \t\t    snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n  \t\t    scalex = size.x / boundsSize.x,\r\n  \t\t    scaley = size.y / boundsSize.y,\r\n  \t\t    scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n  \t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n  \t\tif (snap) {\r\n  \t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n  \t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n  \t\t}\r\n\r\n  \t\treturn Math.max(min, Math.min(max, zoom));\r\n  \t},\r\n\r\n  \t// @method getSize(): Point\r\n  \t// Returns the current size of the map container (in pixels).\r\n  \tgetSize: function () {\r\n  \t\tif (!this._size || this._sizeChanged) {\r\n  \t\t\tthis._size = new Point(\r\n  \t\t\t\tthis._container.clientWidth || 0,\r\n  \t\t\t\tthis._container.clientHeight || 0);\r\n\r\n  \t\t\tthis._sizeChanged = false;\r\n  \t\t}\r\n  \t\treturn this._size.clone();\r\n  \t},\r\n\r\n  \t// @method getPixelBounds(): Bounds\r\n  \t// Returns the bounds of the current map view in projected pixel\r\n  \t// coordinates (sometimes useful in layer and overlay implementations).\r\n  \tgetPixelBounds: function (center, zoom) {\r\n  \t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n  \t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n  \t},\r\n\r\n  \t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n  \t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n  \t// since there can be negative offsets.\r\n  \t// @method getPixelOrigin(): Point\r\n  \t// Returns the projected pixel coordinates of the top left point of\r\n  \t// the map layer (useful in custom layer and overlay implementations).\r\n  \tgetPixelOrigin: function () {\r\n  \t\tthis._checkIfLoaded();\r\n  \t\treturn this._pixelOrigin;\r\n  \t},\r\n\r\n  \t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n  \t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n  \t// If `zoom` is omitted, the map's current zoom level is used.\r\n  \tgetPixelWorldBounds: function (zoom) {\r\n  \t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n  \t},\r\n\r\n  \t// @section Other Methods\r\n\r\n  \t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n  \t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n  \tgetPane: function (pane) {\r\n  \t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n  \t},\r\n\r\n  \t// @method getPanes(): Object\r\n  \t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n  \t// the panes as values.\r\n  \tgetPanes: function () {\r\n  \t\treturn this._panes;\r\n  \t},\r\n\r\n  \t// @method getContainer: HTMLElement\r\n  \t// Returns the HTML element that contains the map.\r\n  \tgetContainer: function () {\r\n  \t\treturn this._container;\r\n  \t},\r\n\r\n\r\n  \t// @section Conversion Methods\r\n\r\n  \t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n  \t// Returns the scale factor to be applied to a map transition from zoom level\r\n  \t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n  \tgetZoomScale: function (toZoom, fromZoom) {\r\n  \t\t// TODO replace with universal implementation after refactoring projections\r\n  \t\tvar crs = this.options.crs;\r\n  \t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n  \t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n  \t},\r\n\r\n  \t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n  \t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n  \t// level and everything is scaled by a factor of `scale`. Inverse of\r\n  \t// [`getZoomScale`](#map-getZoomScale).\r\n  \tgetScaleZoom: function (scale, fromZoom) {\r\n  \t\tvar crs = this.options.crs;\r\n  \t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n  \t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n  \t\treturn isNaN(zoom) ? Infinity : zoom;\r\n  \t},\r\n\r\n  \t// @method project(latlng: LatLng, zoom: Number): Point\r\n  \t// Projects a geographical coordinate `LatLng` according to the projection\r\n  \t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n  \t// `Transformation`. The result is pixel coordinate relative to\r\n  \t// the CRS origin.\r\n  \tproject: function (latlng, zoom) {\r\n  \t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n  \t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n  \t},\r\n\r\n  \t// @method unproject(point: Point, zoom: Number): LatLng\r\n  \t// Inverse of [`project`](#map-project).\r\n  \tunproject: function (point, zoom) {\r\n  \t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n  \t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n  \t},\r\n\r\n  \t// @method layerPointToLatLng(point: Point): LatLng\r\n  \t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n  \t// returns the corresponding geographical coordinate (for the current zoom level).\r\n  \tlayerPointToLatLng: function (point) {\r\n  \t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n  \t\treturn this.unproject(projectedPoint);\r\n  \t},\r\n\r\n  \t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n  \t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n  \t// relative to the [origin pixel](#map-getpixelorigin).\r\n  \tlatLngToLayerPoint: function (latlng) {\r\n  \t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n  \t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n  \t},\r\n\r\n  \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n  \t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n  \t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n  \t// CRS's bounds.\r\n  \t// By default this means longitude is wrapped around the dateline so its\r\n  \t// value is between -180 and +180 degrees.\r\n  \twrapLatLng: function (latlng) {\r\n  \t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n  \t},\r\n\r\n  \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n  \t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n  \t// its center is within the CRS's bounds.\r\n  \t// By default this means the center longitude is wrapped around the dateline so its\r\n  \t// value is between -180 and +180 degrees, and the majority of the bounds\r\n  \t// overlaps the CRS's bounds.\r\n  \twrapLatLngBounds: function (latlng) {\r\n  \t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n  \t},\r\n\r\n  \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n  \t// Returns the distance between two geographical coordinates according to\r\n  \t// the map's CRS. By default this measures distance in meters.\r\n  \tdistance: function (latlng1, latlng2) {\r\n  \t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n  \t},\r\n\r\n  \t// @method containerPointToLayerPoint(point: Point): Point\r\n  \t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n  \t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n  \tcontainerPointToLayerPoint: function (point) { // (Point)\r\n  \t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n  \t},\r\n\r\n  \t// @method layerPointToContainerPoint(point: Point): Point\r\n  \t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n  \t// returns the corresponding pixel coordinate relative to the map container.\r\n  \tlayerPointToContainerPoint: function (point) { // (Point)\r\n  \t\treturn toPoint(point).add(this._getMapPanePos());\r\n  \t},\r\n\r\n  \t// @method containerPointToLatLng(point: Point): LatLng\r\n  \t// Given a pixel coordinate relative to the map container, returns\r\n  \t// the corresponding geographical coordinate (for the current zoom level).\r\n  \tcontainerPointToLatLng: function (point) {\r\n  \t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n  \t\treturn this.layerPointToLatLng(layerPoint);\r\n  \t},\r\n\r\n  \t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n  \t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n  \t// relative to the map container.\r\n  \tlatLngToContainerPoint: function (latlng) {\r\n  \t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n  \t},\r\n\r\n  \t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n  \t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n  \t// map container where the event took place.\r\n  \tmouseEventToContainerPoint: function (e) {\r\n  \t\treturn getMousePosition(e, this._container);\r\n  \t},\r\n\r\n  \t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n  \t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n  \t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n  \tmouseEventToLayerPoint: function (e) {\r\n  \t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n  \t},\r\n\r\n  \t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n  \t// Given a MouseEvent object, returns geographical coordinate where the\r\n  \t// event took place.\r\n  \tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n  \t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n  \t},\r\n\r\n\r\n  \t// map initialization methods\r\n\r\n  \t_initContainer: function (id) {\r\n  \t\tvar container = this._container = get(id);\r\n\r\n  \t\tif (!container) {\r\n  \t\t\tthrow new Error('Map container not found.');\r\n  \t\t} else if (container._leaflet_id) {\r\n  \t\t\tthrow new Error('Map container is already initialized.');\r\n  \t\t}\r\n\r\n  \t\ton(container, 'scroll', this._onScroll, this);\r\n  \t\tthis._containerId = stamp(container);\r\n  \t},\r\n\r\n  \t_initLayout: function () {\r\n  \t\tvar container = this._container;\r\n\r\n  \t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n  \t\taddClass(container, 'leaflet-container' +\r\n  \t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n  \t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n  \t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n  \t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n  \t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n  \t\tvar position = getStyle(container, 'position');\r\n\r\n  \t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed' && position !== 'sticky') {\r\n  \t\t\tcontainer.style.position = 'relative';\r\n  \t\t}\r\n\r\n  \t\tthis._initPanes();\r\n\r\n  \t\tif (this._initControlPos) {\r\n  \t\t\tthis._initControlPos();\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_initPanes: function () {\r\n  \t\tvar panes = this._panes = {};\r\n  \t\tthis._paneRenderers = {};\r\n\r\n  \t\t// @section\r\n  \t\t//\r\n  \t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n  \t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n  \t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n  \t\t// [`map.createPane`](#map-createpane) method.\r\n  \t\t//\r\n  \t\t// Every map has the following default panes that differ only in zIndex.\r\n  \t\t//\r\n  \t\t// @pane mapPane: HTMLElement = 'auto'\r\n  \t\t// Pane that contains all other map panes\r\n\r\n  \t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n  \t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n  \t\t// @pane tilePane: HTMLElement = 200\r\n  \t\t// Pane for `GridLayer`s and `TileLayer`s\r\n  \t\tthis.createPane('tilePane');\r\n  \t\t// @pane overlayPane: HTMLElement = 400\r\n  \t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n  \t\tthis.createPane('overlayPane');\r\n  \t\t// @pane shadowPane: HTMLElement = 500\r\n  \t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n  \t\tthis.createPane('shadowPane');\r\n  \t\t// @pane markerPane: HTMLElement = 600\r\n  \t\t// Pane for `Icon`s of `Marker`s\r\n  \t\tthis.createPane('markerPane');\r\n  \t\t// @pane tooltipPane: HTMLElement = 650\r\n  \t\t// Pane for `Tooltip`s.\r\n  \t\tthis.createPane('tooltipPane');\r\n  \t\t// @pane popupPane: HTMLElement = 700\r\n  \t\t// Pane for `Popup`s.\r\n  \t\tthis.createPane('popupPane');\r\n\r\n  \t\tif (!this.options.markerZoomAnimation) {\r\n  \t\t\taddClass(panes.markerPane, 'leaflet-zoom-hide');\r\n  \t\t\taddClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n  \t\t}\r\n  \t},\r\n\r\n\r\n  \t// private methods that modify map state\r\n\r\n  \t// @section Map state change events\r\n  \t_resetView: function (center, zoom, noMoveStart) {\r\n  \t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n  \t\tvar loading = !this._loaded;\r\n  \t\tthis._loaded = true;\r\n  \t\tzoom = this._limitZoom(zoom);\r\n\r\n  \t\tthis.fire('viewprereset');\r\n\r\n  \t\tvar zoomChanged = this._zoom !== zoom;\r\n  \t\tthis\r\n  \t\t\t._moveStart(zoomChanged, noMoveStart)\r\n  \t\t\t._move(center, zoom)\r\n  \t\t\t._moveEnd(zoomChanged);\r\n\r\n  \t\t// @event viewreset: Event\r\n  \t\t// Fired when the map needs to redraw its content (this usually happens\r\n  \t\t// on map zoom or load). Very useful for creating custom overlays.\r\n  \t\tthis.fire('viewreset');\r\n\r\n  \t\t// @event load: Event\r\n  \t\t// Fired when the map is initialized (when its center and zoom are set\r\n  \t\t// for the first time).\r\n  \t\tif (loading) {\r\n  \t\t\tthis.fire('load');\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_moveStart: function (zoomChanged, noMoveStart) {\r\n  \t\t// @event zoomstart: Event\r\n  \t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n  \t\t// @event movestart: Event\r\n  \t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n  \t\tif (zoomChanged) {\r\n  \t\t\tthis.fire('zoomstart');\r\n  \t\t}\r\n  \t\tif (!noMoveStart) {\r\n  \t\t\tthis.fire('movestart');\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_move: function (center, zoom, data, supressEvent) {\r\n  \t\tif (zoom === undefined) {\r\n  \t\t\tzoom = this._zoom;\r\n  \t\t}\r\n  \t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n  \t\tthis._zoom = zoom;\r\n  \t\tthis._lastCenter = center;\r\n  \t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n  \t\tif (!supressEvent) {\r\n  \t\t\t// @event zoom: Event\r\n  \t\t\t// Fired repeatedly during any change in zoom level,\r\n  \t\t\t// including zoom and fly animations.\r\n  \t\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n  \t\t\t\tthis.fire('zoom', data);\r\n  \t\t\t}\r\n\r\n  \t\t\t// @event move: Event\r\n  \t\t\t// Fired repeatedly during any movement of the map,\r\n  \t\t\t// including pan and fly animations.\r\n  \t\t\tthis.fire('move', data);\r\n  \t\t} else if (data && data.pinch) {\t// Always fire 'zoom' if pinching because #3530\r\n  \t\t\tthis.fire('zoom', data);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_moveEnd: function (zoomChanged) {\r\n  \t\t// @event zoomend: Event\r\n  \t\t// Fired when the map zoom changed, after any animations.\r\n  \t\tif (zoomChanged) {\r\n  \t\t\tthis.fire('zoomend');\r\n  \t\t}\r\n\r\n  \t\t// @event moveend: Event\r\n  \t\t// Fired when the center of the map stops changing\r\n  \t\t// (e.g. user stopped dragging the map or after non-centered zoom).\r\n  \t\treturn this.fire('moveend');\r\n  \t},\r\n\r\n  \t_stop: function () {\r\n  \t\tcancelAnimFrame(this._flyToFrame);\r\n  \t\tif (this._panAnim) {\r\n  \t\t\tthis._panAnim.stop();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_rawPanBy: function (offset) {\r\n  \t\tsetPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n  \t},\r\n\r\n  \t_getZoomSpan: function () {\r\n  \t\treturn this.getMaxZoom() - this.getMinZoom();\r\n  \t},\r\n\r\n  \t_panInsideMaxBounds: function () {\r\n  \t\tif (!this._enforcingBounds) {\r\n  \t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_checkIfLoaded: function () {\r\n  \t\tif (!this._loaded) {\r\n  \t\t\tthrow new Error('Set map center and zoom first.');\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// DOM event handling\r\n\r\n  \t// @section Interaction events\r\n  \t_initEvents: function (remove) {\r\n  \t\tthis._targets = {};\r\n  \t\tthis._targets[stamp(this._container)] = this;\r\n\r\n  \t\tvar onOff = remove ? off : on;\r\n\r\n  \t\t// @event click: MouseEvent\r\n  \t\t// Fired when the user clicks (or taps) the map.\r\n  \t\t// @event dblclick: MouseEvent\r\n  \t\t// Fired when the user double-clicks (or double-taps) the map.\r\n  \t\t// @event mousedown: MouseEvent\r\n  \t\t// Fired when the user pushes the mouse button on the map.\r\n  \t\t// @event mouseup: MouseEvent\r\n  \t\t// Fired when the user releases the mouse button on the map.\r\n  \t\t// @event mouseover: MouseEvent\r\n  \t\t// Fired when the mouse enters the map.\r\n  \t\t// @event mouseout: MouseEvent\r\n  \t\t// Fired when the mouse leaves the map.\r\n  \t\t// @event mousemove: MouseEvent\r\n  \t\t// Fired while the mouse moves over the map.\r\n  \t\t// @event contextmenu: MouseEvent\r\n  \t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n  \t\t// default browser context menu from showing if there are listeners on\r\n  \t\t// this event. Also fired on mobile when the user holds a single touch\r\n  \t\t// for a second (also called long press).\r\n  \t\t// @event keypress: KeyboardEvent\r\n  \t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n  \t\t// @event keydown: KeyboardEvent\r\n  \t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n  \t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n  \t\t// that do not produce a character value.\r\n  \t\t// @event keyup: KeyboardEvent\r\n  \t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n  \t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n  \t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n  \t\tif (this.options.trackResize) {\r\n  \t\t\tonOff(window, 'resize', this._onResize, this);\r\n  \t\t}\r\n\r\n  \t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n  \t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_onResize: function () {\r\n  \t\tcancelAnimFrame(this._resizeRequest);\r\n  \t\tthis._resizeRequest = requestAnimFrame(\r\n  \t\t        function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n  \t},\r\n\r\n  \t_onScroll: function () {\r\n  \t\tthis._container.scrollTop  = 0;\r\n  \t\tthis._container.scrollLeft = 0;\r\n  \t},\r\n\r\n  \t_onMoveEnd: function () {\r\n  \t\tvar pos = this._getMapPanePos();\r\n  \t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n  \t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n  \t\t\t// a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/\r\n  \t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_findEventTargets: function (e, type) {\r\n  \t\tvar targets = [],\r\n  \t\t    target,\r\n  \t\t    isHover = type === 'mouseout' || type === 'mouseover',\r\n  \t\t    src = e.target || e.srcElement,\r\n  \t\t    dragging = false;\r\n\r\n  \t\twhile (src) {\r\n  \t\t\ttarget = this._targets[stamp(src)];\r\n  \t\t\tif (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {\r\n  \t\t\t\t// Prevent firing click after you just dragged an object.\r\n  \t\t\t\tdragging = true;\r\n  \t\t\t\tbreak;\r\n  \t\t\t}\r\n  \t\t\tif (target && target.listens(type, true)) {\r\n  \t\t\t\tif (isHover && !isExternalTarget(src, e)) { break; }\r\n  \t\t\t\ttargets.push(target);\r\n  \t\t\t\tif (isHover) { break; }\r\n  \t\t\t}\r\n  \t\t\tif (src === this._container) { break; }\r\n  \t\t\tsrc = src.parentNode;\r\n  \t\t}\r\n  \t\tif (!targets.length && !dragging && !isHover && this.listens(type, true)) {\r\n  \t\t\ttargets = [this];\r\n  \t\t}\r\n  \t\treturn targets;\r\n  \t},\r\n\r\n  \t_isClickDisabled: function (el) {\r\n  \t\twhile (el && el !== this._container) {\r\n  \t\t\tif (el['_leaflet_disable_click']) { return true; }\r\n  \t\t\tel = el.parentNode;\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_handleDOMEvent: function (e) {\r\n  \t\tvar el = (e.target || e.srcElement);\r\n  \t\tif (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tvar type = e.type;\r\n\r\n  \t\tif (type === 'mousedown') {\r\n  \t\t\t// prevents outline when clicking on keyboard-focusable element\r\n  \t\t\tpreventOutline(el);\r\n  \t\t}\r\n\r\n  \t\tthis._fireDOMEvent(e, type);\r\n  \t},\r\n\r\n  \t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n  \t_fireDOMEvent: function (e, type, canvasTargets) {\r\n\r\n  \t\tif (e.type === 'click') {\r\n  \t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n  \t\t\t// @event preclick: MouseEvent\r\n  \t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n  \t\t\t// want something to happen on click before any existing click\r\n  \t\t\t// handlers start running).\r\n  \t\t\tvar synth = extend({}, e);\r\n  \t\t\tsynth.type = 'preclick';\r\n  \t\t\tthis._fireDOMEvent(synth, synth.type, canvasTargets);\r\n  \t\t}\r\n\r\n  \t\t// Find the layer the event is propagating from and its parents.\r\n  \t\tvar targets = this._findEventTargets(e, type);\r\n\r\n  \t\tif (canvasTargets) {\r\n  \t\t\tvar filtered = []; // pick only targets with listeners\r\n  \t\t\tfor (var i = 0; i < canvasTargets.length; i++) {\r\n  \t\t\t\tif (canvasTargets[i].listens(type, true)) {\r\n  \t\t\t\t\tfiltered.push(canvasTargets[i]);\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t\ttargets = filtered.concat(targets);\r\n  \t\t}\r\n\r\n  \t\tif (!targets.length) { return; }\r\n\r\n  \t\tif (type === 'contextmenu') {\r\n  \t\t\tpreventDefault(e);\r\n  \t\t}\r\n\r\n  \t\tvar target = targets[0];\r\n  \t\tvar data = {\r\n  \t\t\toriginalEvent: e\r\n  \t\t};\r\n\r\n  \t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n  \t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n  \t\t\tdata.containerPoint = isMarker ?\r\n  \t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n  \t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n  \t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n  \t\t}\r\n\r\n  \t\tfor (i = 0; i < targets.length; i++) {\r\n  \t\t\ttargets[i].fire(type, data, true);\r\n  \t\t\tif (data.originalEvent._stopped ||\r\n  \t\t\t\t(targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_draggableMoved: function (obj) {\r\n  \t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n  \t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n  \t},\r\n\r\n  \t_clearHandlers: function () {\r\n  \t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n  \t\t\tthis._handlers[i].disable();\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @section Other Methods\r\n\r\n  \t// @method whenReady(fn: Function, context?: Object): this\r\n  \t// Runs the given function `fn` when the map gets initialized with\r\n  \t// a view (center and zoom) and at least one layer, or immediately\r\n  \t// if it's already initialized, optionally passing a function context.\r\n  \twhenReady: function (callback, context) {\r\n  \t\tif (this._loaded) {\r\n  \t\t\tcallback.call(context || this, {target: this});\r\n  \t\t} else {\r\n  \t\t\tthis.on('load', callback, context);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n\r\n  \t// private methods for getting map state\r\n\r\n  \t_getMapPanePos: function () {\r\n  \t\treturn getPosition(this._mapPane) || new Point(0, 0);\r\n  \t},\r\n\r\n  \t_moved: function () {\r\n  \t\tvar pos = this._getMapPanePos();\r\n  \t\treturn pos && !pos.equals([0, 0]);\r\n  \t},\r\n\r\n  \t_getTopLeftPoint: function (center, zoom) {\r\n  \t\tvar pixelOrigin = center && zoom !== undefined ?\r\n  \t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n  \t\t\tthis.getPixelOrigin();\r\n  \t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n  \t},\r\n\r\n  \t_getNewPixelOrigin: function (center, zoom) {\r\n  \t\tvar viewHalf = this.getSize()._divideBy(2);\r\n  \t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n  \t},\r\n\r\n  \t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n  \t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n  \t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n  \t},\r\n\r\n  \t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n  \t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n  \t\treturn toBounds([\r\n  \t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n  \t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n  \t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n  \t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n  \t\t]);\r\n  \t},\r\n\r\n  \t// layer point of the current center\r\n  \t_getCenterLayerPoint: function () {\r\n  \t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n  \t},\r\n\r\n  \t// offset of the specified place to the current center in pixels\r\n  \t_getCenterOffset: function (latlng) {\r\n  \t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n  \t},\r\n\r\n  \t// adjust center for view to get inside bounds\r\n  \t_limitCenter: function (center, zoom, bounds) {\r\n\r\n  \t\tif (!bounds) { return center; }\r\n\r\n  \t\tvar centerPoint = this.project(center, zoom),\r\n  \t\t    viewHalf = this.getSize().divideBy(2),\r\n  \t\t    viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n  \t\t    offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n  \t\t// If offset is less than a pixel, ignore.\r\n  \t\t// This prevents unstable projections from getting into\r\n  \t\t// an infinite loop of tiny offsets.\r\n  \t\tif (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\r\n  \t\t\treturn center;\r\n  \t\t}\r\n\r\n  \t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n  \t},\r\n\r\n  \t// adjust offset for view to get inside bounds\r\n  \t_limitOffset: function (offset, bounds) {\r\n  \t\tif (!bounds) { return offset; }\r\n\r\n  \t\tvar viewBounds = this.getPixelBounds(),\r\n  \t\t    newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n  \t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n  \t},\r\n\r\n  \t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n  \t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n  \t\tvar projectedMaxBounds = toBounds(\r\n  \t\t        this.project(maxBounds.getNorthEast(), zoom),\r\n  \t\t        this.project(maxBounds.getSouthWest(), zoom)\r\n  \t\t    ),\r\n  \t\t    minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n  \t\t    maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n  \t\t    dx = this._rebound(minOffset.x, -maxOffset.x),\r\n  \t\t    dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n  \t\treturn new Point(dx, dy);\r\n  \t},\r\n\r\n  \t_rebound: function (left, right) {\r\n  \t\treturn left + right > 0 ?\r\n  \t\t\tMath.round(left - right) / 2 :\r\n  \t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n  \t},\r\n\r\n  \t_limitZoom: function (zoom) {\r\n  \t\tvar min = this.getMinZoom(),\r\n  \t\t    max = this.getMaxZoom(),\r\n  \t\t    snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n  \t\tif (snap) {\r\n  \t\t\tzoom = Math.round(zoom / snap) * snap;\r\n  \t\t}\r\n  \t\treturn Math.max(min, Math.min(max, zoom));\r\n  \t},\r\n\r\n  \t_onPanTransitionStep: function () {\r\n  \t\tthis.fire('move');\r\n  \t},\r\n\r\n  \t_onPanTransitionEnd: function () {\r\n  \t\tremoveClass(this._mapPane, 'leaflet-pan-anim');\r\n  \t\tthis.fire('moveend');\r\n  \t},\r\n\r\n  \t_tryAnimatedPan: function (center, options) {\r\n  \t\t// difference between the new and current centers in pixels\r\n  \t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n  \t\t// don't animate too far unless animate: true specified in options\r\n  \t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n  \t\tthis.panBy(offset, options);\r\n\r\n  \t\treturn true;\r\n  \t},\r\n\r\n  \t_createAnimProxy: function () {\r\n\r\n  \t\tvar proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated');\r\n  \t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n  \t\tthis.on('zoomanim', function (e) {\r\n  \t\t\tvar prop = TRANSFORM,\r\n  \t\t\t    transform = this._proxy.style[prop];\r\n\r\n  \t\t\tsetTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n  \t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n  \t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n  \t\t\t\tthis._onZoomTransitionEnd();\r\n  \t\t\t}\r\n  \t\t}, this);\r\n\r\n  \t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n  \t\tthis._on('unload', this._destroyAnimProxy, this);\r\n  \t},\r\n\r\n  \t_destroyAnimProxy: function () {\r\n  \t\tremove(this._proxy);\r\n  \t\tthis.off('load moveend', this._animMoveEnd, this);\r\n  \t\tdelete this._proxy;\r\n  \t},\r\n\r\n  \t_animMoveEnd: function () {\r\n  \t\tvar c = this.getCenter(),\r\n  \t\t    z = this.getZoom();\r\n  \t\tsetTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n  \t},\r\n\r\n  \t_catchTransitionEnd: function (e) {\r\n  \t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n  \t\t\tthis._onZoomTransitionEnd();\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_nothingToAnimate: function () {\r\n  \t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n  \t},\r\n\r\n  \t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n  \t\tif (this._animatingZoom) { return true; }\r\n\r\n  \t\toptions = options || {};\r\n\r\n  \t\t// don't animate if disabled, not supported or zoom difference is too large\r\n  \t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n  \t\t        Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n  \t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n  \t\tvar scale = this.getZoomScale(zoom),\r\n  \t\t    offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n  \t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n  \t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n  \t\trequestAnimFrame(function () {\r\n  \t\t\tthis\r\n  \t\t\t    ._moveStart(true, options.noMoveStart || false)\r\n  \t\t\t    ._animateZoom(center, zoom, true);\r\n  \t\t}, this);\r\n\r\n  \t\treturn true;\r\n  \t},\r\n\r\n  \t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n  \t\tif (!this._mapPane) { return; }\r\n\r\n  \t\tif (startAnim) {\r\n  \t\t\tthis._animatingZoom = true;\r\n\r\n  \t\t\t// remember what center/zoom to set after animation\r\n  \t\t\tthis._animateToCenter = center;\r\n  \t\t\tthis._animateToZoom = zoom;\r\n\r\n  \t\t\taddClass(this._mapPane, 'leaflet-zoom-anim');\r\n  \t\t}\r\n\r\n  \t\t// @section Other Events\r\n  \t\t// @event zoomanim: ZoomAnimEvent\r\n  \t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n  \t\tthis.fire('zoomanim', {\r\n  \t\t\tcenter: center,\r\n  \t\t\tzoom: zoom,\r\n  \t\t\tnoUpdate: noUpdate\r\n  \t\t});\r\n\r\n  \t\tif (!this._tempFireZoomEvent) {\r\n  \t\t\tthis._tempFireZoomEvent = this._zoom !== this._animateToZoom;\r\n  \t\t}\r\n\r\n  \t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n  \t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n  \t\tsetTimeout(bind(this._onZoomTransitionEnd, this), 250);\r\n  \t},\r\n\r\n  \t_onZoomTransitionEnd: function () {\r\n  \t\tif (!this._animatingZoom) { return; }\r\n\r\n  \t\tif (this._mapPane) {\r\n  \t\t\tremoveClass(this._mapPane, 'leaflet-zoom-anim');\r\n  \t\t}\r\n\r\n  \t\tthis._animatingZoom = false;\r\n\r\n  \t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n  \t\tif (this._tempFireZoomEvent) {\r\n  \t\t\tthis.fire('zoom');\r\n  \t\t}\r\n  \t\tdelete this._tempFireZoomEvent;\r\n\r\n  \t\tthis.fire('move');\r\n\r\n  \t\tthis._moveEnd(true);\r\n  \t}\r\n  });\r\n\r\n  // @section\r\n\r\n  // @factory L.map(id: String, options?: Map options)\r\n  // Instantiates a map object given the DOM ID of a `<div>` element\r\n  // and optionally an object literal with `Map options`.\r\n  //\r\n  // @alternative\r\n  // @factory L.map(el: HTMLElement, options?: Map options)\r\n  // Instantiates a map object given an instance of a `<div>` HTML element\r\n  // and optionally an object literal with `Map options`.\r\n  function createMap(id, options) {\r\n  \treturn new Map(id, options);\r\n  }\n\n  /*\r\n   * @class Control\r\n   * @aka L.Control\r\n   * @inherits Class\r\n   *\r\n   * L.Control is a base class for implementing map controls. Handles positioning.\r\n   * All other controls extend from this class.\r\n   */\r\n\r\n  var Control = Class.extend({\r\n  \t// @section\r\n  \t// @aka Control Options\r\n  \toptions: {\r\n  \t\t// @option position: String = 'topright'\r\n  \t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n  \t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n  \t\tposition: 'topright'\r\n  \t},\r\n\r\n  \tinitialize: function (options) {\r\n  \t\tsetOptions(this, options);\r\n  \t},\r\n\r\n  \t/* @section\r\n  \t * Classes extending L.Control will inherit the following methods:\r\n  \t *\r\n  \t * @method getPosition: string\r\n  \t * Returns the position of the control.\r\n  \t */\r\n  \tgetPosition: function () {\r\n  \t\treturn this.options.position;\r\n  \t},\r\n\r\n  \t// @method setPosition(position: string): this\r\n  \t// Sets the position of the control.\r\n  \tsetPosition: function (position) {\r\n  \t\tvar map = this._map;\r\n\r\n  \t\tif (map) {\r\n  \t\t\tmap.removeControl(this);\r\n  \t\t}\r\n\r\n  \t\tthis.options.position = position;\r\n\r\n  \t\tif (map) {\r\n  \t\t\tmap.addControl(this);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getContainer: HTMLElement\r\n  \t// Returns the HTMLElement that contains the control.\r\n  \tgetContainer: function () {\r\n  \t\treturn this._container;\r\n  \t},\r\n\r\n  \t// @method addTo(map: Map): this\r\n  \t// Adds the control to the given map.\r\n  \taddTo: function (map) {\r\n  \t\tthis.remove();\r\n  \t\tthis._map = map;\r\n\r\n  \t\tvar container = this._container = this.onAdd(map),\r\n  \t\t    pos = this.getPosition(),\r\n  \t\t    corner = map._controlCorners[pos];\r\n\r\n  \t\taddClass(container, 'leaflet-control');\r\n\r\n  \t\tif (pos.indexOf('bottom') !== -1) {\r\n  \t\t\tcorner.insertBefore(container, corner.firstChild);\r\n  \t\t} else {\r\n  \t\t\tcorner.appendChild(container);\r\n  \t\t}\r\n\r\n  \t\tthis._map.on('unload', this.remove, this);\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method remove: this\r\n  \t// Removes the control from the map it is currently active on.\r\n  \tremove: function () {\r\n  \t\tif (!this._map) {\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tremove(this._container);\r\n\r\n  \t\tif (this.onRemove) {\r\n  \t\t\tthis.onRemove(this._map);\r\n  \t\t}\r\n\r\n  \t\tthis._map.off('unload', this.remove, this);\r\n  \t\tthis._map = null;\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_refocusOnMap: function (e) {\r\n  \t\t// if map exists and event is not a keyboard event\r\n  \t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n  \t\t\tthis._map.getContainer().focus();\r\n  \t\t}\r\n  \t}\r\n  });\r\n\r\n  var control = function (options) {\r\n  \treturn new Control(options);\r\n  };\r\n\r\n  /* @section Extension methods\r\n   * @uninheritable\r\n   *\r\n   * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n   *\r\n   * @method onAdd(map: Map): HTMLElement\r\n   * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n   *\r\n   * @method onRemove(map: Map)\r\n   * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n   */\r\n\r\n  /* @namespace Map\r\n   * @section Methods for Layers and Controls\r\n   */\r\n  Map.include({\r\n  \t// @method addControl(control: Control): this\r\n  \t// Adds the given control to the map\r\n  \taddControl: function (control) {\r\n  \t\tcontrol.addTo(this);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method removeControl(control: Control): this\r\n  \t// Removes the given control from the map\r\n  \tremoveControl: function (control) {\r\n  \t\tcontrol.remove();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_initControlPos: function () {\r\n  \t\tvar corners = this._controlCorners = {},\r\n  \t\t    l = 'leaflet-',\r\n  \t\t    container = this._controlContainer =\r\n  \t\t            create$1('div', l + 'control-container', this._container);\r\n\r\n  \t\tfunction createCorner(vSide, hSide) {\r\n  \t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n  \t\t\tcorners[vSide + hSide] = create$1('div', className, container);\r\n  \t\t}\r\n\r\n  \t\tcreateCorner('top', 'left');\r\n  \t\tcreateCorner('top', 'right');\r\n  \t\tcreateCorner('bottom', 'left');\r\n  \t\tcreateCorner('bottom', 'right');\r\n  \t},\r\n\r\n  \t_clearControlPos: function () {\r\n  \t\tfor (var i in this._controlCorners) {\r\n  \t\t\tremove(this._controlCorners[i]);\r\n  \t\t}\r\n  \t\tremove(this._controlContainer);\r\n  \t\tdelete this._controlCorners;\r\n  \t\tdelete this._controlContainer;\r\n  \t}\r\n  });\n\n  /*\r\n   * @class Control.Layers\r\n   * @aka L.Control.Layers\r\n   * @inherits Control\r\n   *\r\n   * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var baseLayers = {\r\n   * \t\"Mapbox\": mapbox,\r\n   * \t\"OpenStreetMap\": osm\r\n   * };\r\n   *\r\n   * var overlays = {\r\n   * \t\"Marker\": marker,\r\n   * \t\"Roads\": roadsLayer\r\n   * };\r\n   *\r\n   * L.control.layers(baseLayers, overlays).addTo(map);\r\n   * ```\r\n   *\r\n   * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n   *\r\n   * ```js\r\n   * {\r\n   *     \"<someName1>\": layer1,\r\n   *     \"<someName2>\": layer2\r\n   * }\r\n   * ```\r\n   *\r\n   * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n   *\r\n   * ```js\r\n   * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n   * ```\r\n   */\r\n\r\n  var Layers = Control.extend({\r\n  \t// @section\r\n  \t// @aka Control.Layers options\r\n  \toptions: {\r\n  \t\t// @option collapsed: Boolean = true\r\n  \t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.\r\n  \t\tcollapsed: true,\r\n  \t\tposition: 'topright',\r\n\r\n  \t\t// @option autoZIndex: Boolean = true\r\n  \t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n  \t\tautoZIndex: true,\r\n\r\n  \t\t// @option hideSingleBase: Boolean = false\r\n  \t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n  \t\thideSingleBase: false,\r\n\r\n  \t\t// @option sortLayers: Boolean = false\r\n  \t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n  \t\t// in which they were added to the control.\r\n  \t\tsortLayers: false,\r\n\r\n  \t\t// @option sortFunction: Function = *\r\n  \t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n  \t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n  \t\t// The function receives both the `L.Layer` instances and their names, as in\r\n  \t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n  \t\t// By default, it sorts layers alphabetically by their name.\r\n  \t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n  \t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n  \t\t}\r\n  \t},\r\n\r\n  \tinitialize: function (baseLayers, overlays, options) {\r\n  \t\tsetOptions(this, options);\r\n\r\n  \t\tthis._layerControlInputs = [];\r\n  \t\tthis._layers = [];\r\n  \t\tthis._lastZIndex = 0;\r\n  \t\tthis._handlingClick = false;\r\n  \t\tthis._preventClick = false;\r\n\r\n  \t\tfor (var i in baseLayers) {\r\n  \t\t\tthis._addLayer(baseLayers[i], i);\r\n  \t\t}\r\n\r\n  \t\tfor (i in overlays) {\r\n  \t\t\tthis._addLayer(overlays[i], i, true);\r\n  \t\t}\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tthis._initLayout();\r\n  \t\tthis._update();\r\n\r\n  \t\tthis._map = map;\r\n  \t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n  \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n  \t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n  \t\t}\r\n\r\n  \t\treturn this._container;\r\n  \t},\r\n\r\n  \taddTo: function (map) {\r\n  \t\tControl.prototype.addTo.call(this, map);\r\n  \t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n  \t\treturn this._expandIfNotCollapsed();\r\n  \t},\r\n\r\n  \tonRemove: function () {\r\n  \t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n  \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n  \t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method addBaseLayer(layer: Layer, name: String): this\r\n  \t// Adds a base layer (radio button entry) with the given name to the control.\r\n  \taddBaseLayer: function (layer, name) {\r\n  \t\tthis._addLayer(layer, name);\r\n  \t\treturn (this._map) ? this._update() : this;\r\n  \t},\r\n\r\n  \t// @method addOverlay(layer: Layer, name: String): this\r\n  \t// Adds an overlay (checkbox entry) with the given name to the control.\r\n  \taddOverlay: function (layer, name) {\r\n  \t\tthis._addLayer(layer, name, true);\r\n  \t\treturn (this._map) ? this._update() : this;\r\n  \t},\r\n\r\n  \t// @method removeLayer(layer: Layer): this\r\n  \t// Remove the given layer from the control.\r\n  \tremoveLayer: function (layer) {\r\n  \t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n  \t\tvar obj = this._getLayer(stamp(layer));\r\n  \t\tif (obj) {\r\n  \t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n  \t\t}\r\n  \t\treturn (this._map) ? this._update() : this;\r\n  \t},\r\n\r\n  \t// @method expand(): this\r\n  \t// Expand the control container if collapsed.\r\n  \texpand: function () {\r\n  \t\taddClass(this._container, 'leaflet-control-layers-expanded');\r\n  \t\tthis._section.style.height = null;\r\n  \t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n  \t\tif (acceptableHeight < this._section.clientHeight) {\r\n  \t\t\taddClass(this._section, 'leaflet-control-layers-scrollbar');\r\n  \t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n  \t\t} else {\r\n  \t\t\tremoveClass(this._section, 'leaflet-control-layers-scrollbar');\r\n  \t\t}\r\n  \t\tthis._checkDisabledLayers();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method collapse(): this\r\n  \t// Collapse the control container if expanded.\r\n  \tcollapse: function () {\r\n  \t\tremoveClass(this._container, 'leaflet-control-layers-expanded');\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_initLayout: function () {\r\n  \t\tvar className = 'leaflet-control-layers',\r\n  \t\t    container = this._container = create$1('div', className),\r\n  \t\t    collapsed = this.options.collapsed;\r\n\r\n  \t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n  \t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n  \t\tdisableClickPropagation(container);\r\n  \t\tdisableScrollPropagation(container);\r\n\r\n  \t\tvar section = this._section = create$1('section', className + '-list');\r\n\r\n  \t\tif (collapsed) {\r\n  \t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n  \t\t\ton(container, {\r\n  \t\t\t\tmouseenter: this._expandSafely,\r\n  \t\t\t\tmouseleave: this.collapse\r\n  \t\t\t}, this);\r\n  \t\t}\r\n\r\n  \t\tvar link = this._layersLink = create$1('a', className + '-toggle', container);\r\n  \t\tlink.href = '#';\r\n  \t\tlink.title = 'Layers';\r\n  \t\tlink.setAttribute('role', 'button');\r\n\r\n  \t\ton(link, {\r\n  \t\t\tkeydown: function (e) {\r\n  \t\t\t\tif (e.keyCode === 13) {\r\n  \t\t\t\t\tthis._expandSafely();\r\n  \t\t\t\t}\r\n  \t\t\t},\r\n  \t\t\t// Certain screen readers intercept the key event and instead send a click event\r\n  \t\t\tclick: function (e) {\r\n  \t\t\t\tpreventDefault(e);\r\n  \t\t\t\tthis._expandSafely();\r\n  \t\t\t}\r\n  \t\t}, this);\r\n\r\n  \t\tif (!collapsed) {\r\n  \t\t\tthis.expand();\r\n  \t\t}\r\n\r\n  \t\tthis._baseLayersList = create$1('div', className + '-base', section);\r\n  \t\tthis._separator = create$1('div', className + '-separator', section);\r\n  \t\tthis._overlaysList = create$1('div', className + '-overlays', section);\r\n\r\n  \t\tcontainer.appendChild(section);\r\n  \t},\r\n\r\n  \t_getLayer: function (id) {\r\n  \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n  \t\t\tif (this._layers[i] && stamp(this._layers[i].layer) === id) {\r\n  \t\t\t\treturn this._layers[i];\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_addLayer: function (layer, name, overlay) {\r\n  \t\tif (this._map) {\r\n  \t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n  \t\t}\r\n\r\n  \t\tthis._layers.push({\r\n  \t\t\tlayer: layer,\r\n  \t\t\tname: name,\r\n  \t\t\toverlay: overlay\r\n  \t\t});\r\n\r\n  \t\tif (this.options.sortLayers) {\r\n  \t\t\tthis._layers.sort(bind(function (a, b) {\r\n  \t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n  \t\t\t}, this));\r\n  \t\t}\r\n\r\n  \t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n  \t\t\tthis._lastZIndex++;\r\n  \t\t\tlayer.setZIndex(this._lastZIndex);\r\n  \t\t}\r\n\r\n  \t\tthis._expandIfNotCollapsed();\r\n  \t},\r\n\r\n  \t_update: function () {\r\n  \t\tif (!this._container) { return this; }\r\n\r\n  \t\tempty(this._baseLayersList);\r\n  \t\tempty(this._overlaysList);\r\n\r\n  \t\tthis._layerControlInputs = [];\r\n  \t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n  \t\tfor (i = 0; i < this._layers.length; i++) {\r\n  \t\t\tobj = this._layers[i];\r\n  \t\t\tthis._addItem(obj);\r\n  \t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n  \t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n  \t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n  \t\t}\r\n\r\n  \t\t// Hide base layers section if there's only one layer.\r\n  \t\tif (this.options.hideSingleBase) {\r\n  \t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n  \t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n  \t\t}\r\n\r\n  \t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_onLayerChange: function (e) {\r\n  \t\tif (!this._handlingClick) {\r\n  \t\t\tthis._update();\r\n  \t\t}\r\n\r\n  \t\tvar obj = this._getLayer(stamp(e.target));\r\n\r\n  \t\t// @namespace Map\r\n  \t\t// @section Layer events\r\n  \t\t// @event baselayerchange: LayersControlEvent\r\n  \t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n  \t\t// @event overlayadd: LayersControlEvent\r\n  \t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n  \t\t// @event overlayremove: LayersControlEvent\r\n  \t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n  \t\t// @namespace Control.Layers\r\n  \t\tvar type = obj.overlay ?\r\n  \t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n  \t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n  \t\tif (type) {\r\n  \t\t\tthis._map.fire(type, obj);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)\r\n  \t_createRadioElement: function (name, checked) {\r\n\r\n  \t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n  \t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n  \t\tvar radioFragment = document.createElement('div');\r\n  \t\tradioFragment.innerHTML = radioHtml;\r\n\r\n  \t\treturn radioFragment.firstChild;\r\n  \t},\r\n\r\n  \t_addItem: function (obj) {\r\n  \t\tvar label = document.createElement('label'),\r\n  \t\t    checked = this._map.hasLayer(obj.layer),\r\n  \t\t    input;\r\n\r\n  \t\tif (obj.overlay) {\r\n  \t\t\tinput = document.createElement('input');\r\n  \t\t\tinput.type = 'checkbox';\r\n  \t\t\tinput.className = 'leaflet-control-layers-selector';\r\n  \t\t\tinput.defaultChecked = checked;\r\n  \t\t} else {\r\n  \t\t\tinput = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked);\r\n  \t\t}\r\n\r\n  \t\tthis._layerControlInputs.push(input);\r\n  \t\tinput.layerId = stamp(obj.layer);\r\n\r\n  \t\ton(input, 'click', this._onInputClick, this);\r\n\r\n  \t\tvar name = document.createElement('span');\r\n  \t\tname.innerHTML = ' ' + obj.name;\r\n\r\n  \t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n  \t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n  \t\tvar holder = document.createElement('span');\r\n\r\n  \t\tlabel.appendChild(holder);\r\n  \t\tholder.appendChild(input);\r\n  \t\tholder.appendChild(name);\r\n\r\n  \t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n  \t\tcontainer.appendChild(label);\r\n\r\n  \t\tthis._checkDisabledLayers();\r\n  \t\treturn label;\r\n  \t},\r\n\r\n  \t_onInputClick: function () {\r\n  \t\t// expanding the control on mobile with a click can cause adding a layer - we don't want this\r\n  \t\tif (this._preventClick) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tvar inputs = this._layerControlInputs,\r\n  \t\t    input, layer;\r\n  \t\tvar addedLayers = [],\r\n  \t\t    removedLayers = [];\r\n\r\n  \t\tthis._handlingClick = true;\r\n\r\n  \t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n  \t\t\tinput = inputs[i];\r\n  \t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n  \t\t\tif (input.checked) {\r\n  \t\t\t\taddedLayers.push(layer);\r\n  \t\t\t} else if (!input.checked) {\r\n  \t\t\t\tremovedLayers.push(layer);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n  \t\tfor (i = 0; i < removedLayers.length; i++) {\r\n  \t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n  \t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\tfor (i = 0; i < addedLayers.length; i++) {\r\n  \t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n  \t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tthis._handlingClick = false;\r\n\r\n  \t\tthis._refocusOnMap();\r\n  \t},\r\n\r\n  \t_checkDisabledLayers: function () {\r\n  \t\tvar inputs = this._layerControlInputs,\r\n  \t\t    input,\r\n  \t\t    layer,\r\n  \t\t    zoom = this._map.getZoom();\r\n\r\n  \t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n  \t\t\tinput = inputs[i];\r\n  \t\t\tlayer = this._getLayer(input.layerId).layer;\r\n  \t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n  \t\t\t                 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_expandIfNotCollapsed: function () {\r\n  \t\tif (this._map && !this.options.collapsed) {\r\n  \t\t\tthis.expand();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_expandSafely: function () {\r\n  \t\tvar section = this._section;\r\n  \t\tthis._preventClick = true;\r\n  \t\ton(section, 'click', preventDefault);\r\n  \t\tthis.expand();\r\n  \t\tvar that = this;\r\n  \t\tsetTimeout(function () {\r\n  \t\t\toff(section, 'click', preventDefault);\r\n  \t\t\tthat._preventClick = false;\r\n  \t\t});\r\n  \t}\r\n\r\n  });\r\n\r\n\r\n  // @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n  // Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\n  var layers = function (baseLayers, overlays, options) {\r\n  \treturn new Layers(baseLayers, overlays, options);\r\n  };\n\n  /*\r\n   * @class Control.Zoom\r\n   * @aka L.Control.Zoom\r\n   * @inherits Control\r\n   *\r\n   * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n   */\r\n\r\n  var Zoom = Control.extend({\r\n  \t// @section\r\n  \t// @aka Control.Zoom options\r\n  \toptions: {\r\n  \t\tposition: 'topleft',\r\n\r\n  \t\t// @option zoomInText: String = '<span aria-hidden=\"true\">+</span>'\r\n  \t\t// The text set on the 'zoom in' button.\r\n  \t\tzoomInText: '<span aria-hidden=\"true\">+</span>',\r\n\r\n  \t\t// @option zoomInTitle: String = 'Zoom in'\r\n  \t\t// The title set on the 'zoom in' button.\r\n  \t\tzoomInTitle: 'Zoom in',\r\n\r\n  \t\t// @option zoomOutText: String = '<span aria-hidden=\"true\">&#x2212;</span>'\r\n  \t\t// The text set on the 'zoom out' button.\r\n  \t\tzoomOutText: '<span aria-hidden=\"true\">&#x2212;</span>',\r\n\r\n  \t\t// @option zoomOutTitle: String = 'Zoom out'\r\n  \t\t// The title set on the 'zoom out' button.\r\n  \t\tzoomOutTitle: 'Zoom out'\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tvar zoomName = 'leaflet-control-zoom',\r\n  \t\t    container = create$1('div', zoomName + ' leaflet-bar'),\r\n  \t\t    options = this.options;\r\n\r\n  \t\tthis._zoomInButton  = this._createButton(options.zoomInText, options.zoomInTitle,\r\n  \t\t        zoomName + '-in',  container, this._zoomIn);\r\n  \t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n  \t\t        zoomName + '-out', container, this._zoomOut);\r\n\r\n  \t\tthis._updateDisabled();\r\n  \t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n  \t\treturn container;\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n  \t},\r\n\r\n  \tdisable: function () {\r\n  \t\tthis._disabled = true;\r\n  \t\tthis._updateDisabled();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tenable: function () {\r\n  \t\tthis._disabled = false;\r\n  \t\tthis._updateDisabled();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_zoomIn: function (e) {\r\n  \t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n  \t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_zoomOut: function (e) {\r\n  \t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n  \t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_createButton: function (html, title, className, container, fn) {\r\n  \t\tvar link = create$1('a', className, container);\r\n  \t\tlink.innerHTML = html;\r\n  \t\tlink.href = '#';\r\n  \t\tlink.title = title;\r\n\r\n  \t\t/*\r\n  \t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n  \t\t */\r\n  \t\tlink.setAttribute('role', 'button');\r\n  \t\tlink.setAttribute('aria-label', title);\r\n\r\n  \t\tdisableClickPropagation(link);\r\n  \t\ton(link, 'click', stop);\r\n  \t\ton(link, 'click', fn, this);\r\n  \t\ton(link, 'click', this._refocusOnMap, this);\r\n\r\n  \t\treturn link;\r\n  \t},\r\n\r\n  \t_updateDisabled: function () {\r\n  \t\tvar map = this._map,\r\n  \t\t    className = 'leaflet-disabled';\r\n\r\n  \t\tremoveClass(this._zoomInButton, className);\r\n  \t\tremoveClass(this._zoomOutButton, className);\r\n  \t\tthis._zoomInButton.setAttribute('aria-disabled', 'false');\r\n  \t\tthis._zoomOutButton.setAttribute('aria-disabled', 'false');\r\n\r\n  \t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n  \t\t\taddClass(this._zoomOutButton, className);\r\n  \t\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'true');\r\n  \t\t}\r\n  \t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n  \t\t\taddClass(this._zoomInButton, className);\r\n  \t\t\tthis._zoomInButton.setAttribute('aria-disabled', 'true');\r\n  \t\t}\r\n  \t}\r\n  });\r\n\r\n  // @namespace Map\r\n  // @section Control options\r\n  // @option zoomControl: Boolean = true\r\n  // Whether a [zoom control](#control-zoom) is added to the map by default.\r\n  Map.mergeOptions({\r\n  \tzoomControl: true\r\n  });\r\n\r\n  Map.addInitHook(function () {\r\n  \tif (this.options.zoomControl) {\r\n  \t\t// @section Controls\r\n  \t\t// @property zoomControl: Control.Zoom\r\n  \t\t// The default zoom control (only available if the\r\n  \t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n  \t\tthis.zoomControl = new Zoom();\r\n  \t\tthis.addControl(this.zoomControl);\r\n  \t}\r\n  });\r\n\r\n  // @namespace Control.Zoom\r\n  // @factory L.control.zoom(options: Control.Zoom options)\r\n  // Creates a zoom control\r\n  var zoom = function (options) {\r\n  \treturn new Zoom(options);\r\n  };\n\n  /*\n   * @class Control.Scale\n   * @aka L.Control.Scale\n   * @inherits Control\n   *\n   * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n   *\n   * @example\n   *\n   * ```js\n   * L.control.scale().addTo(map);\n   * ```\n   */\n\n  var Scale = Control.extend({\n  \t// @section\n  \t// @aka Control.Scale options\n  \toptions: {\n  \t\tposition: 'bottomleft',\n\n  \t\t// @option maxWidth: Number = 100\n  \t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n  \t\tmaxWidth: 100,\n\n  \t\t// @option metric: Boolean = True\n  \t\t// Whether to show the metric scale line (m/km).\n  \t\tmetric: true,\n\n  \t\t// @option imperial: Boolean = True\n  \t\t// Whether to show the imperial scale line (mi/ft).\n  \t\timperial: true\n\n  \t\t// @option updateWhenIdle: Boolean = false\n  \t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n  \t},\n\n  \tonAdd: function (map) {\n  \t\tvar className = 'leaflet-control-scale',\n  \t\t    container = create$1('div', className),\n  \t\t    options = this.options;\n\n  \t\tthis._addScales(options, className + '-line', container);\n\n  \t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n  \t\tmap.whenReady(this._update, this);\n\n  \t\treturn container;\n  \t},\n\n  \tonRemove: function (map) {\n  \t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n  \t},\n\n  \t_addScales: function (options, className, container) {\n  \t\tif (options.metric) {\n  \t\t\tthis._mScale = create$1('div', className, container);\n  \t\t}\n  \t\tif (options.imperial) {\n  \t\t\tthis._iScale = create$1('div', className, container);\n  \t\t}\n  \t},\n\n  \t_update: function () {\n  \t\tvar map = this._map,\n  \t\t    y = map.getSize().y / 2;\n\n  \t\tvar maxMeters = map.distance(\n  \t\t\tmap.containerPointToLatLng([0, y]),\n  \t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n  \t\tthis._updateScales(maxMeters);\n  \t},\n\n  \t_updateScales: function (maxMeters) {\n  \t\tif (this.options.metric && maxMeters) {\n  \t\t\tthis._updateMetric(maxMeters);\n  \t\t}\n  \t\tif (this.options.imperial && maxMeters) {\n  \t\t\tthis._updateImperial(maxMeters);\n  \t\t}\n  \t},\n\n  \t_updateMetric: function (maxMeters) {\n  \t\tvar meters = this._getRoundNum(maxMeters),\n  \t\t    label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n  \t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n  \t},\n\n  \t_updateImperial: function (maxMeters) {\n  \t\tvar maxFeet = maxMeters * 3.2808399,\n  \t\t    maxMiles, miles, feet;\n\n  \t\tif (maxFeet > 5280) {\n  \t\t\tmaxMiles = maxFeet / 5280;\n  \t\t\tmiles = this._getRoundNum(maxMiles);\n  \t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n  \t\t} else {\n  \t\t\tfeet = this._getRoundNum(maxFeet);\n  \t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n  \t\t}\n  \t},\n\n  \t_updateScale: function (scale, text, ratio) {\n  \t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n  \t\tscale.innerHTML = text;\n  \t},\n\n  \t_getRoundNum: function (num) {\n  \t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n  \t\t    d = num / pow10;\n\n  \t\td = d >= 10 ? 10 :\n  \t\t    d >= 5 ? 5 :\n  \t\t    d >= 3 ? 3 :\n  \t\t    d >= 2 ? 2 : 1;\n\n  \t\treturn pow10 * d;\n  \t}\n  });\n\n\n  // @factory L.control.scale(options?: Control.Scale options)\n  // Creates an scale control with the given options.\n  var scale = function (options) {\n  \treturn new Scale(options);\n  };\n\n  var ukrainianFlag = '<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" class=\"leaflet-attribution-flag\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg>';\r\n\r\n\r\n  /*\r\n   * @class Control.Attribution\r\n   * @aka L.Control.Attribution\r\n   * @inherits Control\r\n   *\r\n   * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n   */\r\n\r\n  var Attribution = Control.extend({\r\n  \t// @section\r\n  \t// @aka Control.Attribution options\r\n  \toptions: {\r\n  \t\tposition: 'bottomright',\r\n\r\n  \t\t// @option prefix: String|false = 'Leaflet'\r\n  \t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n  \t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'\r\n  \t},\r\n\r\n  \tinitialize: function (options) {\r\n  \t\tsetOptions(this, options);\r\n\r\n  \t\tthis._attributions = {};\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tmap.attributionControl = this;\r\n  \t\tthis._container = create$1('div', 'leaflet-control-attribution');\r\n  \t\tdisableClickPropagation(this._container);\r\n\r\n  \t\t// TODO ugly, refactor\r\n  \t\tfor (var i in map._layers) {\r\n  \t\t\tif (map._layers[i].getAttribution) {\r\n  \t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tthis._update();\r\n\r\n  \t\tmap.on('layeradd', this._addAttribution, this);\r\n\r\n  \t\treturn this._container;\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tmap.off('layeradd', this._addAttribution, this);\r\n  \t},\r\n\r\n  \t_addAttribution: function (ev) {\r\n  \t\tif (ev.layer.getAttribution) {\r\n  \t\t\tthis.addAttribution(ev.layer.getAttribution());\r\n  \t\t\tev.layer.once('remove', function () {\r\n  \t\t\t\tthis.removeAttribution(ev.layer.getAttribution());\r\n  \t\t\t}, this);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method setPrefix(prefix: String|false): this\r\n  \t// The HTML text shown before the attributions. Pass `false` to disable.\r\n  \tsetPrefix: function (prefix) {\r\n  \t\tthis.options.prefix = prefix;\r\n  \t\tthis._update();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method addAttribution(text: String): this\r\n  \t// Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).\r\n  \taddAttribution: function (text) {\r\n  \t\tif (!text) { return this; }\r\n\r\n  \t\tif (!this._attributions[text]) {\r\n  \t\t\tthis._attributions[text] = 0;\r\n  \t\t}\r\n  \t\tthis._attributions[text]++;\r\n\r\n  \t\tthis._update();\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method removeAttribution(text: String): this\r\n  \t// Removes an attribution text.\r\n  \tremoveAttribution: function (text) {\r\n  \t\tif (!text) { return this; }\r\n\r\n  \t\tif (this._attributions[text]) {\r\n  \t\t\tthis._attributions[text]--;\r\n  \t\t\tthis._update();\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_update: function () {\r\n  \t\tif (!this._map) { return; }\r\n\r\n  \t\tvar attribs = [];\r\n\r\n  \t\tfor (var i in this._attributions) {\r\n  \t\t\tif (this._attributions[i]) {\r\n  \t\t\t\tattribs.push(i);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tvar prefixAndAttribs = [];\r\n\r\n  \t\tif (this.options.prefix) {\r\n  \t\t\tprefixAndAttribs.push(this.options.prefix);\r\n  \t\t}\r\n  \t\tif (attribs.length) {\r\n  \t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n  \t\t}\r\n\r\n  \t\tthis._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden=\"true\">|</span> ');\r\n  \t}\r\n  });\r\n\r\n  // @namespace Map\r\n  // @section Control options\r\n  // @option attributionControl: Boolean = true\r\n  // Whether a [attribution control](#control-attribution) is added to the map by default.\r\n  Map.mergeOptions({\r\n  \tattributionControl: true\r\n  });\r\n\r\n  Map.addInitHook(function () {\r\n  \tif (this.options.attributionControl) {\r\n  \t\tnew Attribution().addTo(this);\r\n  \t}\r\n  });\r\n\r\n  // @namespace Control.Attribution\r\n  // @factory L.control.attribution(options: Control.Attribution options)\r\n  // Creates an attribution control.\r\n  var attribution = function (options) {\r\n  \treturn new Attribution(options);\r\n  };\n\n  Control.Layers = Layers;\n  Control.Zoom = Zoom;\n  Control.Scale = Scale;\n  Control.Attribution = Attribution;\n\n  control.layers = layers;\n  control.zoom = zoom;\n  control.scale = scale;\n  control.attribution = attribution;\n\n  /*\n  \tL.Handler is a base class for handler classes that are used internally to inject\n  \tinteraction features like dragging to classes like Map and Marker.\n  */\n\n  // @class Handler\n  // @aka L.Handler\n  // Abstract class for map interaction handlers\n\n  var Handler = Class.extend({\n  \tinitialize: function (map) {\n  \t\tthis._map = map;\n  \t},\n\n  \t// @method enable(): this\n  \t// Enables the handler\n  \tenable: function () {\n  \t\tif (this._enabled) { return this; }\n\n  \t\tthis._enabled = true;\n  \t\tthis.addHooks();\n  \t\treturn this;\n  \t},\n\n  \t// @method disable(): this\n  \t// Disables the handler\n  \tdisable: function () {\n  \t\tif (!this._enabled) { return this; }\n\n  \t\tthis._enabled = false;\n  \t\tthis.removeHooks();\n  \t\treturn this;\n  \t},\n\n  \t// @method enabled(): Boolean\n  \t// Returns `true` if the handler is enabled\n  \tenabled: function () {\n  \t\treturn !!this._enabled;\n  \t}\n\n  \t// @section Extension methods\n  \t// Classes inheriting from `Handler` must implement the two following methods:\n  \t// @method addHooks()\n  \t// Called when the handler is enabled, should add event hooks.\n  \t// @method removeHooks()\n  \t// Called when the handler is disabled, should remove the event hooks added previously.\n  });\n\n  // @section There is static function which can be called without instantiating L.Handler:\n  // @function addTo(map: Map, name: String): this\n  // Adds a new Handler to the given map with the given name.\n  Handler.addTo = function (map, name) {\n  \tmap.addHandler(name, this);\n  \treturn this;\n  };\n\n  var Mixin = {Events: Events};\n\n  /*\r\n   * @class Draggable\r\n   * @aka L.Draggable\r\n   * @inherits Evented\r\n   *\r\n   * A class for making DOM elements draggable (including touch support).\r\n   * Used internally for map and marker dragging. Only works for elements\r\n   * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n   *\r\n   * @example\r\n   * ```js\r\n   * var draggable = new L.Draggable(elementToDrag);\r\n   * draggable.enable();\r\n   * ```\r\n   */\r\n\r\n  var START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\n\r\n  var Draggable = Evented.extend({\r\n\r\n  \toptions: {\r\n  \t\t// @section\r\n  \t\t// @aka Draggable options\r\n  \t\t// @option clickTolerance: Number = 3\r\n  \t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n  \t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n  \t\tclickTolerance: 3\r\n  \t},\r\n\r\n  \t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n  \t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n  \tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n  \t\tsetOptions(this, options);\r\n\r\n  \t\tthis._element = element;\r\n  \t\tthis._dragStartTarget = dragStartTarget || element;\r\n  \t\tthis._preventOutline = preventOutline;\r\n  \t},\r\n\r\n  \t// @method enable()\r\n  \t// Enables the dragging ability\r\n  \tenable: function () {\r\n  \t\tif (this._enabled) { return; }\r\n\r\n  \t\ton(this._dragStartTarget, START, this._onDown, this);\r\n\r\n  \t\tthis._enabled = true;\r\n  \t},\r\n\r\n  \t// @method disable()\r\n  \t// Disables the dragging ability\r\n  \tdisable: function () {\r\n  \t\tif (!this._enabled) { return; }\r\n\r\n  \t\t// If we're currently dragging this draggable,\r\n  \t\t// disabling it counts as first ending the drag.\r\n  \t\tif (Draggable._dragging === this) {\r\n  \t\t\tthis.finishDrag(true);\r\n  \t\t}\r\n\r\n  \t\toff(this._dragStartTarget, START, this._onDown, this);\r\n\r\n  \t\tthis._enabled = false;\r\n  \t\tthis._moved = false;\r\n  \t},\r\n\r\n  \t_onDown: function (e) {\r\n  \t\t// Ignore the event if disabled; this happens in IE11\r\n  \t\t// under some circumstances, see #3666.\r\n  \t\tif (!this._enabled) { return; }\r\n\r\n  \t\tthis._moved = false;\r\n\r\n  \t\tif (hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n  \t\tif (e.touches && e.touches.length !== 1) {\r\n  \t\t\t// Finish dragging to avoid conflict with touchZoom\r\n  \t\t\tif (Draggable._dragging === this) {\r\n  \t\t\t\tthis.finishDrag();\r\n  \t\t\t}\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n  \t\tDraggable._dragging = this;  // Prevent dragging multiple objects at once.\r\n\r\n  \t\tif (this._preventOutline) {\r\n  \t\t\tpreventOutline(this._element);\r\n  \t\t}\r\n\r\n  \t\tdisableImageDrag();\r\n  \t\tdisableTextSelection();\r\n\r\n  \t\tif (this._moving) { return; }\r\n\r\n  \t\t// @event down: Event\r\n  \t\t// Fired when a drag is about to start.\r\n  \t\tthis.fire('down');\r\n\r\n  \t\tvar first = e.touches ? e.touches[0] : e,\r\n  \t\t    sizedParent = getSizedParentNode(this._element);\r\n\r\n  \t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n  \t\tthis._startPos = getPosition(this._element);\r\n\r\n  \t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n  \t\tthis._parentScale = getScale(sizedParent);\r\n\r\n  \t\tvar mouseevent = e.type === 'mousedown';\r\n  \t\ton(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);\r\n  \t\ton(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);\r\n  \t},\r\n\r\n  \t_onMove: function (e) {\r\n  \t\t// Ignore the event if disabled; this happens in IE11\r\n  \t\t// under some circumstances, see #3666.\r\n  \t\tif (!this._enabled) { return; }\r\n\r\n  \t\tif (e.touches && e.touches.length > 1) {\r\n  \t\t\tthis._moved = true;\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n  \t\t    offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n  \t\tif (!offset.x && !offset.y) { return; }\r\n  \t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n  \t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n  \t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n  \t\t// and we can use the cached value for the scale.\r\n  \t\toffset.x /= this._parentScale.x;\r\n  \t\toffset.y /= this._parentScale.y;\r\n\r\n  \t\tpreventDefault(e);\r\n\r\n  \t\tif (!this._moved) {\r\n  \t\t\t// @event dragstart: Event\r\n  \t\t\t// Fired when a drag starts\r\n  \t\t\tthis.fire('dragstart');\r\n\r\n  \t\t\tthis._moved = true;\r\n\r\n  \t\t\taddClass(document.body, 'leaflet-dragging');\r\n\r\n  \t\t\tthis._lastTarget = e.target || e.srcElement;\r\n  \t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n  \t\t\t// if necessary\r\n  \t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n  \t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n  \t\t\t}\r\n  \t\t\taddClass(this._lastTarget, 'leaflet-drag-target');\r\n  \t\t}\r\n\r\n  \t\tthis._newPos = this._startPos.add(offset);\r\n  \t\tthis._moving = true;\r\n\r\n  \t\tthis._lastEvent = e;\r\n  \t\tthis._updatePosition();\r\n  \t},\r\n\r\n  \t_updatePosition: function () {\r\n  \t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n  \t\t// @event predrag: Event\r\n  \t\t// Fired continuously during dragging *before* each corresponding\r\n  \t\t// update of the element's position.\r\n  \t\tthis.fire('predrag', e);\r\n  \t\tsetPosition(this._element, this._newPos);\r\n\r\n  \t\t// @event drag: Event\r\n  \t\t// Fired continuously during dragging.\r\n  \t\tthis.fire('drag', e);\r\n  \t},\r\n\r\n  \t_onUp: function () {\r\n  \t\t// Ignore the event if disabled; this happens in IE11\r\n  \t\t// under some circumstances, see #3666.\r\n  \t\tif (!this._enabled) { return; }\r\n  \t\tthis.finishDrag();\r\n  \t},\r\n\r\n  \tfinishDrag: function (noInertia) {\r\n  \t\tremoveClass(document.body, 'leaflet-dragging');\r\n\r\n  \t\tif (this._lastTarget) {\r\n  \t\t\tremoveClass(this._lastTarget, 'leaflet-drag-target');\r\n  \t\t\tthis._lastTarget = null;\r\n  \t\t}\r\n\r\n  \t\toff(document, 'mousemove touchmove', this._onMove, this);\r\n  \t\toff(document, 'mouseup touchend touchcancel', this._onUp, this);\r\n\r\n  \t\tenableImageDrag();\r\n  \t\tenableTextSelection();\r\n\r\n  \t\tvar fireDragend = this._moved && this._moving;\r\n\r\n  \t\tthis._moving = false;\r\n  \t\tDraggable._dragging = false;\r\n\r\n  \t\tif (fireDragend) {\r\n  \t\t\t// @event dragend: DragEndEvent\r\n  \t\t\t// Fired when the drag ends.\r\n  \t\t\tthis.fire('dragend', {\r\n  \t\t\t\tnoInertia: noInertia,\r\n  \t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n  \t\t\t});\r\n  \t\t}\r\n  \t}\r\n\r\n  });\n\n  /*\r\n   * @namespace PolyUtil\r\n   * Various utility functions for polygon geometries.\r\n   */\r\n\r\n  /* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n   * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n   * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n   * performance. Note that polygon points needs different algorithm for clipping\r\n   * than polyline, so there's a separate method for it.\r\n   */\r\n  function clipPolygon(points, bounds, round) {\r\n  \tvar clippedPoints,\r\n  \t    edges = [1, 4, 2, 8],\r\n  \t    i, j, k,\r\n  \t    a, b,\r\n  \t    len, edge, p;\r\n\r\n  \tfor (i = 0, len = points.length; i < len; i++) {\r\n  \t\tpoints[i]._code = _getBitCode(points[i], bounds);\r\n  \t}\r\n\r\n  \t// for each edge (left, bottom, right, top)\r\n  \tfor (k = 0; k < 4; k++) {\r\n  \t\tedge = edges[k];\r\n  \t\tclippedPoints = [];\r\n\r\n  \t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n  \t\t\ta = points[i];\r\n  \t\t\tb = points[j];\r\n\r\n  \t\t\t// if a is inside the clip window\r\n  \t\t\tif (!(a._code & edge)) {\r\n  \t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n  \t\t\t\tif (b._code & edge) {\r\n  \t\t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n  \t\t\t\t\tp._code = _getBitCode(p, bounds);\r\n  \t\t\t\t\tclippedPoints.push(p);\r\n  \t\t\t\t}\r\n  \t\t\t\tclippedPoints.push(a);\r\n\r\n  \t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n  \t\t\t} else if (!(b._code & edge)) {\r\n  \t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n  \t\t\t\tp._code = _getBitCode(p, bounds);\r\n  \t\t\t\tclippedPoints.push(p);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\tpoints = clippedPoints;\r\n  \t}\r\n\r\n  \treturn points;\r\n  }\r\n\r\n  /* @function polygonCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n   * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.\r\n   */\r\n  function polygonCenter(latlngs, crs) {\r\n  \tvar i, j, p1, p2, f, area, x, y, center;\r\n\r\n  \tif (!latlngs || latlngs.length === 0) {\r\n  \t\tthrow new Error('latlngs not passed');\r\n  \t}\r\n\r\n  \tif (!isFlat(latlngs)) {\r\n  \t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n  \t\tlatlngs = latlngs[0];\r\n  \t}\r\n\r\n  \tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n  \tvar bounds = toLatLngBounds(latlngs);\r\n  \tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n  \t// tests showed that below 1700 rounding errors are happening\r\n  \tif (areaBounds < 1700) {\r\n  \t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n  \t\tcentroidLatLng = centroid(latlngs);\r\n  \t}\r\n\r\n  \tvar len = latlngs.length;\r\n  \tvar points = [];\r\n  \tfor (i = 0; i < len; i++) {\r\n  \t\tvar latlng = toLatLng(latlngs[i]);\r\n  \t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n  \t}\r\n\r\n  \tarea = x = y = 0;\r\n\r\n  \t// polygon centroid algorithm;\r\n  \tfor (i = 0, j = len - 1; i < len; j = i++) {\r\n  \t\tp1 = points[i];\r\n  \t\tp2 = points[j];\r\n\r\n  \t\tf = p1.y * p2.x - p2.y * p1.x;\r\n  \t\tx += (p1.x + p2.x) * f;\r\n  \t\ty += (p1.y + p2.y) * f;\r\n  \t\tarea += f * 3;\r\n  \t}\r\n\r\n  \tif (area === 0) {\r\n  \t\t// Polygon is so small that all points are on same pixel.\r\n  \t\tcenter = points[0];\r\n  \t} else {\r\n  \t\tcenter = [x / area, y / area];\r\n  \t}\r\n\r\n  \tvar latlngCenter = crs.unproject(toPoint(center));\r\n  \treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n  }\r\n\r\n  /* @function centroid(latlngs: LatLng[]): LatLng\r\n   * Returns the 'center of mass' of the passed LatLngs.\r\n   */\r\n  function centroid(coords) {\r\n  \tvar latSum = 0;\r\n  \tvar lngSum = 0;\r\n  \tvar len = 0;\r\n  \tfor (var i = 0; i < coords.length; i++) {\r\n  \t\tvar latlng = toLatLng(coords[i]);\r\n  \t\tlatSum += latlng.lat;\r\n  \t\tlngSum += latlng.lng;\r\n  \t\tlen++;\r\n  \t}\r\n  \treturn toLatLng([latSum / len, lngSum / len]);\r\n  }\n\n  var PolyUtil = {\n    __proto__: null,\n    clipPolygon: clipPolygon,\n    polygonCenter: polygonCenter,\n    centroid: centroid\n  };\n\n  /*\r\n   * @namespace LineUtil\r\n   *\r\n   * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n   */\r\n\r\n  // Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n  // Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n  // @function simplify(points: Point[], tolerance: Number): Point[]\r\n  // Dramatically reduces the number of points in a polyline while retaining\r\n  // its shape and returns a new array of simplified points, using the\r\n  // [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).\r\n  // Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n  // each zoom level and also reducing visual noise. tolerance affects the amount of\r\n  // simplification (lesser value means higher quality but slower and with more points).\r\n  // Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).\r\n  function simplify(points, tolerance) {\r\n  \tif (!tolerance || !points.length) {\r\n  \t\treturn points.slice();\r\n  \t}\r\n\r\n  \tvar sqTolerance = tolerance * tolerance;\r\n\r\n  \t    // stage 1: vertex reduction\r\n  \t    points = _reducePoints(points, sqTolerance);\r\n\r\n  \t    // stage 2: Douglas-Peucker simplification\r\n  \t    points = _simplifyDP(points, sqTolerance);\r\n\r\n  \treturn points;\r\n  }\r\n\r\n  // @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n  // Returns the distance between point `p` and segment `p1` to `p2`.\r\n  function pointToSegmentDistance(p, p1, p2) {\r\n  \treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n  }\r\n\r\n  // @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n  // Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\n  function closestPointOnSegment(p, p1, p2) {\r\n  \treturn _sqClosestPointOnSegment(p, p1, p2);\r\n  }\r\n\r\n  // Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\r\n  function _simplifyDP(points, sqTolerance) {\r\n\r\n  \tvar len = points.length,\r\n  \t    ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n  \t    markers = new ArrayConstructor(len);\r\n\r\n  \t    markers[0] = markers[len - 1] = 1;\r\n\r\n  \t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n  \tvar i,\r\n  \t    newPoints = [];\r\n\r\n  \tfor (i = 0; i < len; i++) {\r\n  \t\tif (markers[i]) {\r\n  \t\t\tnewPoints.push(points[i]);\r\n  \t\t}\r\n  \t}\r\n\r\n  \treturn newPoints;\r\n  }\r\n\r\n  function _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n  \tvar maxSqDist = 0,\r\n  \tindex, i, sqDist;\r\n\r\n  \tfor (i = first + 1; i <= last - 1; i++) {\r\n  \t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n  \t\tif (sqDist > maxSqDist) {\r\n  \t\t\tindex = i;\r\n  \t\t\tmaxSqDist = sqDist;\r\n  \t\t}\r\n  \t}\r\n\r\n  \tif (maxSqDist > sqTolerance) {\r\n  \t\tmarkers[index] = 1;\r\n\r\n  \t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n  \t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n  \t}\r\n  }\r\n\r\n  // reduce points that are too close to each other to a single point\r\n  function _reducePoints(points, sqTolerance) {\r\n  \tvar reducedPoints = [points[0]];\r\n\r\n  \tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n  \t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n  \t\t\treducedPoints.push(points[i]);\r\n  \t\t\tprev = i;\r\n  \t\t}\r\n  \t}\r\n  \tif (prev < len - 1) {\r\n  \t\treducedPoints.push(points[len - 1]);\r\n  \t}\r\n  \treturn reducedPoints;\r\n  }\r\n\r\n  var _lastCode;\r\n\r\n  // @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n  // Clips the segment a to b by rectangular bounds with the\r\n  // [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n  // (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n  // points that are on the screen or near, increasing performance.\r\n  function clipSegment(a, b, bounds, useLastCode, round) {\r\n  \tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n  \t    codeB = _getBitCode(b, bounds),\r\n\r\n  \t    codeOut, p, newCode;\r\n\r\n  \t    // save 2nd code to avoid calculating it on the next segment\r\n  \t    _lastCode = codeB;\r\n\r\n  \twhile (true) {\r\n  \t\t// if a,b is inside the clip window (trivial accept)\r\n  \t\tif (!(codeA | codeB)) {\r\n  \t\t\treturn [a, b];\r\n  \t\t}\r\n\r\n  \t\t// if a,b is outside the clip window (trivial reject)\r\n  \t\tif (codeA & codeB) {\r\n  \t\t\treturn false;\r\n  \t\t}\r\n\r\n  \t\t// other cases\r\n  \t\tcodeOut = codeA || codeB;\r\n  \t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n  \t\tnewCode = _getBitCode(p, bounds);\r\n\r\n  \t\tif (codeOut === codeA) {\r\n  \t\t\ta = p;\r\n  \t\t\tcodeA = newCode;\r\n  \t\t} else {\r\n  \t\t\tb = p;\r\n  \t\t\tcodeB = newCode;\r\n  \t\t}\r\n  \t}\r\n  }\r\n\r\n  function _getEdgeIntersection(a, b, code, bounds, round) {\r\n  \tvar dx = b.x - a.x,\r\n  \t    dy = b.y - a.y,\r\n  \t    min = bounds.min,\r\n  \t    max = bounds.max,\r\n  \t    x, y;\r\n\r\n  \tif (code & 8) { // top\r\n  \t\tx = a.x + dx * (max.y - a.y) / dy;\r\n  \t\ty = max.y;\r\n\r\n  \t} else if (code & 4) { // bottom\r\n  \t\tx = a.x + dx * (min.y - a.y) / dy;\r\n  \t\ty = min.y;\r\n\r\n  \t} else if (code & 2) { // right\r\n  \t\tx = max.x;\r\n  \t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n  \t} else if (code & 1) { // left\r\n  \t\tx = min.x;\r\n  \t\ty = a.y + dy * (min.x - a.x) / dx;\r\n  \t}\r\n\r\n  \treturn new Point(x, y, round);\r\n  }\r\n\r\n  function _getBitCode(p, bounds) {\r\n  \tvar code = 0;\r\n\r\n  \tif (p.x < bounds.min.x) { // left\r\n  \t\tcode |= 1;\r\n  \t} else if (p.x > bounds.max.x) { // right\r\n  \t\tcode |= 2;\r\n  \t}\r\n\r\n  \tif (p.y < bounds.min.y) { // bottom\r\n  \t\tcode |= 4;\r\n  \t} else if (p.y > bounds.max.y) { // top\r\n  \t\tcode |= 8;\r\n  \t}\r\n\r\n  \treturn code;\r\n  }\r\n\r\n  // square distance (to avoid unnecessary Math.sqrt calls)\r\n  function _sqDist(p1, p2) {\r\n  \tvar dx = p2.x - p1.x,\r\n  \t    dy = p2.y - p1.y;\r\n  \treturn dx * dx + dy * dy;\r\n  }\r\n\r\n  // return closest point on segment or distance to that point\r\n  function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n  \tvar x = p1.x,\r\n  \t    y = p1.y,\r\n  \t    dx = p2.x - x,\r\n  \t    dy = p2.y - y,\r\n  \t    dot = dx * dx + dy * dy,\r\n  \t    t;\r\n\r\n  \tif (dot > 0) {\r\n  \t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n  \t\tif (t > 1) {\r\n  \t\t\tx = p2.x;\r\n  \t\t\ty = p2.y;\r\n  \t\t} else if (t > 0) {\r\n  \t\t\tx += dx * t;\r\n  \t\t\ty += dy * t;\r\n  \t\t}\r\n  \t}\r\n\r\n  \tdx = p.x - x;\r\n  \tdy = p.y - y;\r\n\r\n  \treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n  }\r\n\r\n\r\n  // @function isFlat(latlngs: LatLng[]): Boolean\r\n  // Returns true if `latlngs` is a flat array, false is nested.\r\n  function isFlat(latlngs) {\r\n  \treturn !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n  }\r\n\r\n  function _flat(latlngs) {\r\n  \tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n  \treturn isFlat(latlngs);\r\n  }\r\n\r\n  /* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n   * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.\r\n   */\r\n  function polylineCenter(latlngs, crs) {\r\n  \tvar i, halfDist, segDist, dist, p1, p2, ratio, center;\r\n\r\n  \tif (!latlngs || latlngs.length === 0) {\r\n  \t\tthrow new Error('latlngs not passed');\r\n  \t}\r\n\r\n  \tif (!isFlat(latlngs)) {\r\n  \t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n  \t\tlatlngs = latlngs[0];\r\n  \t}\r\n\r\n  \tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n  \tvar bounds = toLatLngBounds(latlngs);\r\n  \tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n  \t// tests showed that below 1700 rounding errors are happening\r\n  \tif (areaBounds < 1700) {\r\n  \t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n  \t\tcentroidLatLng = centroid(latlngs);\r\n  \t}\r\n\r\n  \tvar len = latlngs.length;\r\n  \tvar points = [];\r\n  \tfor (i = 0; i < len; i++) {\r\n  \t\tvar latlng = toLatLng(latlngs[i]);\r\n  \t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n  \t}\r\n\r\n  \tfor (i = 0, halfDist = 0; i < len - 1; i++) {\r\n  \t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\r\n  \t}\r\n\r\n  \t// The line is so small in the current view that all points are on the same pixel.\r\n  \tif (halfDist === 0) {\r\n  \t\tcenter = points[0];\r\n  \t} else {\r\n  \t\tfor (i = 0, dist = 0; i < len - 1; i++) {\r\n  \t\t\tp1 = points[i];\r\n  \t\t\tp2 = points[i + 1];\r\n  \t\t\tsegDist = p1.distanceTo(p2);\r\n  \t\t\tdist += segDist;\r\n\r\n  \t\t\tif (dist > halfDist) {\r\n  \t\t\t\tratio = (dist - halfDist) / segDist;\r\n  \t\t\t\tcenter = [\r\n  \t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\r\n  \t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\r\n  \t\t\t\t];\r\n  \t\t\t\tbreak;\r\n  \t\t\t}\r\n  \t\t}\r\n  \t}\r\n\r\n  \tvar latlngCenter = crs.unproject(toPoint(center));\r\n  \treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n  }\n\n  var LineUtil = {\n    __proto__: null,\n    simplify: simplify,\n    pointToSegmentDistance: pointToSegmentDistance,\n    closestPointOnSegment: closestPointOnSegment,\n    clipSegment: clipSegment,\n    _getEdgeIntersection: _getEdgeIntersection,\n    _getBitCode: _getBitCode,\n    _sqClosestPointOnSegment: _sqClosestPointOnSegment,\n    isFlat: isFlat,\n    _flat: _flat,\n    polylineCenter: polylineCenter\n  };\n\n  /*\r\n   * @namespace Projection\r\n   * @section\r\n   * Leaflet comes with a set of already defined Projections out of the box:\r\n   *\r\n   * @projection L.Projection.LonLat\r\n   *\r\n   * Equirectangular, or Plate Carree projection — the most simple projection,\r\n   * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n   * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n   * `EPSG:4326` and `Simple` CRS.\r\n   */\r\n\r\n  var LonLat = {\r\n  \tproject: function (latlng) {\r\n  \t\treturn new Point(latlng.lng, latlng.lat);\r\n  \t},\r\n\r\n  \tunproject: function (point) {\r\n  \t\treturn new LatLng(point.y, point.x);\r\n  \t},\r\n\r\n  \tbounds: new Bounds([-180, -90], [180, 90])\r\n  };\n\n  /*\r\n   * @namespace Projection\r\n   * @projection L.Projection.Mercator\r\n   *\r\n   * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n   */\r\n\r\n  var Mercator = {\r\n  \tR: 6378137,\r\n  \tR_MINOR: 6356752.314245179,\r\n\r\n  \tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n  \tproject: function (latlng) {\r\n  \t\tvar d = Math.PI / 180,\r\n  \t\t    r = this.R,\r\n  \t\t    y = latlng.lat * d,\r\n  \t\t    tmp = this.R_MINOR / r,\r\n  \t\t    e = Math.sqrt(1 - tmp * tmp),\r\n  \t\t    con = e * Math.sin(y);\r\n\r\n  \t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n  \t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n  \t\treturn new Point(latlng.lng * d * r, y);\r\n  \t},\r\n\r\n  \tunproject: function (point) {\r\n  \t\tvar d = 180 / Math.PI,\r\n  \t\t    r = this.R,\r\n  \t\t    tmp = this.R_MINOR / r,\r\n  \t\t    e = Math.sqrt(1 - tmp * tmp),\r\n  \t\t    ts = Math.exp(-point.y / r),\r\n  \t\t    phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n  \t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n  \t\t\tcon = e * Math.sin(phi);\r\n  \t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n  \t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n  \t\t\tphi += dphi;\r\n  \t\t}\r\n\r\n  \t\treturn new LatLng(phi * d, point.x * d / r);\r\n  \t}\r\n  };\n\n  /*\n   * @class Projection\n\n   * An object with methods for projecting geographical coordinates of the world onto\n   * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection).\n\n   * @property bounds: Bounds\n   * The bounds (specified in CRS units) where the projection is valid\n\n   * @method project(latlng: LatLng): Point\n   * Projects geographical coordinates into a 2D point.\n   * Only accepts actual `L.LatLng` instances, not arrays.\n\n   * @method unproject(point: Point): LatLng\n   * The inverse of `project`. Projects a 2D point into a geographical location.\n   * Only accepts actual `L.Point` instances, not arrays.\n\n   * Note that the projection instances do not inherit from Leaflet's `Class` object,\n   * and can't be instantiated. Also, new classes can't inherit from them,\n   * and methods can't be added to them with the `include` function.\n\n   */\n\n  var index = {\n    __proto__: null,\n    LonLat: LonLat,\n    Mercator: Mercator,\n    SphericalMercator: SphericalMercator\n  };\n\n  /*\r\n   * @namespace CRS\r\n   * @crs L.CRS.EPSG3395\r\n   *\r\n   * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n   */\r\n  var EPSG3395 = extend({}, Earth, {\r\n  \tcode: 'EPSG:3395',\r\n  \tprojection: Mercator,\r\n\r\n  \ttransformation: (function () {\r\n  \t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n  \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n  \t}())\r\n  });\n\n  /*\r\n   * @namespace CRS\r\n   * @crs L.CRS.EPSG4326\r\n   *\r\n   * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n   *\r\n   * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n   * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`\r\n   * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n   * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n   * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n   */\r\n\r\n  var EPSG4326 = extend({}, Earth, {\r\n  \tcode: 'EPSG:4326',\r\n  \tprojection: LonLat,\r\n  \ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n  });\n\n  /*\n   * @namespace CRS\n   * @crs L.CRS.Simple\n   *\n   * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n   * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n   * axis should still be inverted (going from bottom to top). `distance()` returns\n   * simple euclidean distance.\n   */\n\n  var Simple = extend({}, CRS, {\n  \tprojection: LonLat,\n  \ttransformation: toTransformation(1, 0, -1, 0),\n\n  \tscale: function (zoom) {\n  \t\treturn Math.pow(2, zoom);\n  \t},\n\n  \tzoom: function (scale) {\n  \t\treturn Math.log(scale) / Math.LN2;\n  \t},\n\n  \tdistance: function (latlng1, latlng2) {\n  \t\tvar dx = latlng2.lng - latlng1.lng,\n  \t\t    dy = latlng2.lat - latlng1.lat;\n\n  \t\treturn Math.sqrt(dx * dx + dy * dy);\n  \t},\n\n  \tinfinite: true\n  });\n\n  CRS.Earth = Earth;\n  CRS.EPSG3395 = EPSG3395;\n  CRS.EPSG3857 = EPSG3857;\n  CRS.EPSG900913 = EPSG900913;\n  CRS.EPSG4326 = EPSG4326;\n  CRS.Simple = Simple;\n\n  /*\n   * @class Layer\n   * @inherits Evented\n   * @aka L.Layer\n   * @aka ILayer\n   *\n   * A set of methods from the Layer base class that all Leaflet layers use.\n   * Inherits all methods, options and events from `L.Evented`.\n   *\n   * @example\n   *\n   * ```js\n   * var layer = L.marker(latlng).addTo(map);\n   * layer.addTo(map);\n   * layer.remove();\n   * ```\n   *\n   * @event add: Event\n   * Fired after the layer is added to a map\n   *\n   * @event remove: Event\n   * Fired after the layer is removed from a map\n   */\n\n\n  var Layer = Evented.extend({\n\n  \t// Classes extending `L.Layer` will inherit the following options:\n  \toptions: {\n  \t\t// @option pane: String = 'overlayPane'\n  \t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n  \t\tpane: 'overlayPane',\n\n  \t\t// @option attribution: String = null\n  \t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n  \t\tattribution: null,\n\n  \t\tbubblingMouseEvents: true\n  \t},\n\n  \t/* @section\n  \t * Classes extending `L.Layer` will inherit the following methods:\n  \t *\n  \t * @method addTo(map: Map|LayerGroup): this\n  \t * Adds the layer to the given map or layer group.\n  \t */\n  \taddTo: function (map) {\n  \t\tmap.addLayer(this);\n  \t\treturn this;\n  \t},\n\n  \t// @method remove: this\n  \t// Removes the layer from the map it is currently active on.\n  \tremove: function () {\n  \t\treturn this.removeFrom(this._map || this._mapToAdd);\n  \t},\n\n  \t// @method removeFrom(map: Map): this\n  \t// Removes the layer from the given map\n  \t//\n  \t// @alternative\n  \t// @method removeFrom(group: LayerGroup): this\n  \t// Removes the layer from the given `LayerGroup`\n  \tremoveFrom: function (obj) {\n  \t\tif (obj) {\n  \t\t\tobj.removeLayer(this);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method getPane(name? : String): HTMLElement\n  \t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n  \tgetPane: function (name) {\n  \t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n  \t},\n\n  \taddInteractiveTarget: function (targetEl) {\n  \t\tthis._map._targets[stamp(targetEl)] = this;\n  \t\treturn this;\n  \t},\n\n  \tremoveInteractiveTarget: function (targetEl) {\n  \t\tdelete this._map._targets[stamp(targetEl)];\n  \t\treturn this;\n  \t},\n\n  \t// @method getAttribution: String\n  \t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n  \tgetAttribution: function () {\n  \t\treturn this.options.attribution;\n  \t},\n\n  \t_layerAdd: function (e) {\n  \t\tvar map = e.target;\n\n  \t\t// check in case layer gets added and then removed before the map is ready\n  \t\tif (!map.hasLayer(this)) { return; }\n\n  \t\tthis._map = map;\n  \t\tthis._zoomAnimated = map._zoomAnimated;\n\n  \t\tif (this.getEvents) {\n  \t\t\tvar events = this.getEvents();\n  \t\t\tmap.on(events, this);\n  \t\t\tthis.once('remove', function () {\n  \t\t\t\tmap.off(events, this);\n  \t\t\t}, this);\n  \t\t}\n\n  \t\tthis.onAdd(map);\n\n  \t\tthis.fire('add');\n  \t\tmap.fire('layeradd', {layer: this});\n  \t}\n  });\n\n  /* @section Extension methods\n   * @uninheritable\n   *\n   * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n   *\n   * @method onAdd(map: Map): this\n   * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n   *\n   * @method onRemove(map: Map): this\n   * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n   *\n   * @method getEvents(): Object\n   * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n   *\n   * @method getAttribution(): String\n   * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n   *\n   * @method beforeAdd(map: Map): this\n   * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n   */\n\n\n  /* @namespace Map\n   * @section Layer events\n   *\n   * @event layeradd: LayerEvent\n   * Fired when a new layer is added to the map.\n   *\n   * @event layerremove: LayerEvent\n   * Fired when some layer is removed from the map\n   *\n   * @section Methods for Layers and Controls\n   */\n  Map.include({\n  \t// @method addLayer(layer: Layer): this\n  \t// Adds the given layer to the map\n  \taddLayer: function (layer) {\n  \t\tif (!layer._layerAdd) {\n  \t\t\tthrow new Error('The provided object is not a Layer.');\n  \t\t}\n\n  \t\tvar id = stamp(layer);\n  \t\tif (this._layers[id]) { return this; }\n  \t\tthis._layers[id] = layer;\n\n  \t\tlayer._mapToAdd = this;\n\n  \t\tif (layer.beforeAdd) {\n  \t\t\tlayer.beforeAdd(this);\n  \t\t}\n\n  \t\tthis.whenReady(layer._layerAdd, layer);\n\n  \t\treturn this;\n  \t},\n\n  \t// @method removeLayer(layer: Layer): this\n  \t// Removes the given layer from the map.\n  \tremoveLayer: function (layer) {\n  \t\tvar id = stamp(layer);\n\n  \t\tif (!this._layers[id]) { return this; }\n\n  \t\tif (this._loaded) {\n  \t\t\tlayer.onRemove(this);\n  \t\t}\n\n  \t\tdelete this._layers[id];\n\n  \t\tif (this._loaded) {\n  \t\t\tthis.fire('layerremove', {layer: layer});\n  \t\t\tlayer.fire('remove');\n  \t\t}\n\n  \t\tlayer._map = layer._mapToAdd = null;\n\n  \t\treturn this;\n  \t},\n\n  \t// @method hasLayer(layer: Layer): Boolean\n  \t// Returns `true` if the given layer is currently added to the map\n  \thasLayer: function (layer) {\n  \t\treturn stamp(layer) in this._layers;\n  \t},\n\n  \t/* @method eachLayer(fn: Function, context?: Object): this\n  \t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n  \t * ```\n  \t * map.eachLayer(function(layer){\n  \t *     layer.bindPopup('Hello');\n  \t * });\n  \t * ```\n  \t */\n  \teachLayer: function (method, context) {\n  \t\tfor (var i in this._layers) {\n  \t\t\tmethod.call(context, this._layers[i]);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t_addLayers: function (layers) {\n  \t\tlayers = layers ? (isArray(layers) ? layers : [layers]) : [];\n\n  \t\tfor (var i = 0, len = layers.length; i < len; i++) {\n  \t\t\tthis.addLayer(layers[i]);\n  \t\t}\n  \t},\n\n  \t_addZoomLimit: function (layer) {\n  \t\tif (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n  \t\t\tthis._zoomBoundLayers[stamp(layer)] = layer;\n  \t\t\tthis._updateZoomLevels();\n  \t\t}\n  \t},\n\n  \t_removeZoomLimit: function (layer) {\n  \t\tvar id = stamp(layer);\n\n  \t\tif (this._zoomBoundLayers[id]) {\n  \t\t\tdelete this._zoomBoundLayers[id];\n  \t\t\tthis._updateZoomLevels();\n  \t\t}\n  \t},\n\n  \t_updateZoomLevels: function () {\n  \t\tvar minZoom = Infinity,\n  \t\t    maxZoom = -Infinity,\n  \t\t    oldZoomSpan = this._getZoomSpan();\n\n  \t\tfor (var i in this._zoomBoundLayers) {\n  \t\t\tvar options = this._zoomBoundLayers[i].options;\n\n  \t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n  \t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n  \t\t}\n\n  \t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n  \t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n  \t\t// @section Map state change events\n  \t\t// @event zoomlevelschange: Event\n  \t\t// Fired when the number of zoomlevels on the map is changed due\n  \t\t// to adding or removing a layer.\n  \t\tif (oldZoomSpan !== this._getZoomSpan()) {\n  \t\t\tthis.fire('zoomlevelschange');\n  \t\t}\n\n  \t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n  \t\t\tthis.setZoom(this._layersMaxZoom);\n  \t\t}\n  \t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n  \t\t\tthis.setZoom(this._layersMinZoom);\n  \t\t}\n  \t}\n  });\n\n  /*\r\n   * @class LayerGroup\r\n   * @aka L.LayerGroup\r\n   * @inherits Interactive layer\r\n   *\r\n   * Used to group several layers and handle them as one. If you add it to the map,\r\n   * any layers added or removed from the group will be added/removed on the map as\r\n   * well. Extends `Layer`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * L.layerGroup([marker1, marker2])\r\n   * \t.addLayer(polyline)\r\n   * \t.addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var LayerGroup = Layer.extend({\r\n\r\n  \tinitialize: function (layers, options) {\r\n  \t\tsetOptions(this, options);\r\n\r\n  \t\tthis._layers = {};\r\n\r\n  \t\tvar i, len;\r\n\r\n  \t\tif (layers) {\r\n  \t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n  \t\t\t\tthis.addLayer(layers[i]);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method addLayer(layer: Layer): this\r\n  \t// Adds the given layer to the group.\r\n  \taddLayer: function (layer) {\r\n  \t\tvar id = this.getLayerId(layer);\r\n\r\n  \t\tthis._layers[id] = layer;\r\n\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._map.addLayer(layer);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method removeLayer(layer: Layer): this\r\n  \t// Removes the given layer from the group.\r\n  \t// @alternative\r\n  \t// @method removeLayer(id: Number): this\r\n  \t// Removes the layer with the given internal ID from the group.\r\n  \tremoveLayer: function (layer) {\r\n  \t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n  \t\tif (this._map && this._layers[id]) {\r\n  \t\t\tthis._map.removeLayer(this._layers[id]);\r\n  \t\t}\r\n\r\n  \t\tdelete this._layers[id];\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method hasLayer(layer: Layer): Boolean\r\n  \t// Returns `true` if the given layer is currently added to the group.\r\n  \t// @alternative\r\n  \t// @method hasLayer(id: Number): Boolean\r\n  \t// Returns `true` if the given internal ID is currently added to the group.\r\n  \thasLayer: function (layer) {\r\n  \t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n  \t\treturn layerId in this._layers;\r\n  \t},\r\n\r\n  \t// @method clearLayers(): this\r\n  \t// Removes all the layers from the group.\r\n  \tclearLayers: function () {\r\n  \t\treturn this.eachLayer(this.removeLayer, this);\r\n  \t},\r\n\r\n  \t// @method invoke(methodName: String, …): this\r\n  \t// Calls `methodName` on every layer contained in this group, passing any\r\n  \t// additional parameters. Has no effect if the layers contained do not\r\n  \t// implement `methodName`.\r\n  \tinvoke: function (methodName) {\r\n  \t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n  \t\t    i, layer;\r\n\r\n  \t\tfor (i in this._layers) {\r\n  \t\t\tlayer = this._layers[i];\r\n\r\n  \t\t\tif (layer[methodName]) {\r\n  \t\t\t\tlayer[methodName].apply(layer, args);\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tthis.eachLayer(map.addLayer, map);\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tthis.eachLayer(map.removeLayer, map);\r\n  \t},\r\n\r\n  \t// @method eachLayer(fn: Function, context?: Object): this\r\n  \t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n  \t// ```js\r\n  \t// group.eachLayer(function (layer) {\r\n  \t// \tlayer.bindPopup('Hello');\r\n  \t// });\r\n  \t// ```\r\n  \teachLayer: function (method, context) {\r\n  \t\tfor (var i in this._layers) {\r\n  \t\t\tmethod.call(context, this._layers[i]);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getLayer(id: Number): Layer\r\n  \t// Returns the layer with the given internal ID.\r\n  \tgetLayer: function (id) {\r\n  \t\treturn this._layers[id];\r\n  \t},\r\n\r\n  \t// @method getLayers(): Layer[]\r\n  \t// Returns an array of all the layers added to the group.\r\n  \tgetLayers: function () {\r\n  \t\tvar layers = [];\r\n  \t\tthis.eachLayer(layers.push, layers);\r\n  \t\treturn layers;\r\n  \t},\r\n\r\n  \t// @method setZIndex(zIndex: Number): this\r\n  \t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n  \tsetZIndex: function (zIndex) {\r\n  \t\treturn this.invoke('setZIndex', zIndex);\r\n  \t},\r\n\r\n  \t// @method getLayerId(layer: Layer): Number\r\n  \t// Returns the internal ID for a layer\r\n  \tgetLayerId: function (layer) {\r\n  \t\treturn stamp(layer);\r\n  \t}\r\n  });\r\n\r\n\r\n  // @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n  // Create a layer group, optionally given an initial set of layers and an `options` object.\r\n  var layerGroup = function (layers, options) {\r\n  \treturn new LayerGroup(layers, options);\r\n  };\n\n  /*\r\n   * @class FeatureGroup\r\n   * @aka L.FeatureGroup\r\n   * @inherits LayerGroup\r\n   *\r\n   * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n   *  * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n   *  * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n   * handler, it will handle events from any of the layers. This includes mouse events\r\n   * and custom events.\r\n   *  * Has `layeradd` and `layerremove` events\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * L.featureGroup([marker1, marker2, polyline])\r\n   * \t.bindPopup('Hello world!')\r\n   * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n   * \t.addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var FeatureGroup = LayerGroup.extend({\r\n\r\n  \taddLayer: function (layer) {\r\n  \t\tif (this.hasLayer(layer)) {\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tlayer.addEventParent(this);\r\n\r\n  \t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n  \t\t// @event layeradd: LayerEvent\r\n  \t\t// Fired when a layer is added to this `FeatureGroup`\r\n  \t\treturn this.fire('layeradd', {layer: layer});\r\n  \t},\r\n\r\n  \tremoveLayer: function (layer) {\r\n  \t\tif (!this.hasLayer(layer)) {\r\n  \t\t\treturn this;\r\n  \t\t}\r\n  \t\tif (layer in this._layers) {\r\n  \t\t\tlayer = this._layers[layer];\r\n  \t\t}\r\n\r\n  \t\tlayer.removeEventParent(this);\r\n\r\n  \t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n  \t\t// @event layerremove: LayerEvent\r\n  \t\t// Fired when a layer is removed from this `FeatureGroup`\r\n  \t\treturn this.fire('layerremove', {layer: layer});\r\n  \t},\r\n\r\n  \t// @method setStyle(style: Path options): this\r\n  \t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n  \tsetStyle: function (style) {\r\n  \t\treturn this.invoke('setStyle', style);\r\n  \t},\r\n\r\n  \t// @method bringToFront(): this\r\n  \t// Brings the layer group to the top of all other layers\r\n  \tbringToFront: function () {\r\n  \t\treturn this.invoke('bringToFront');\r\n  \t},\r\n\r\n  \t// @method bringToBack(): this\r\n  \t// Brings the layer group to the back of all other layers\r\n  \tbringToBack: function () {\r\n  \t\treturn this.invoke('bringToBack');\r\n  \t},\r\n\r\n  \t// @method getBounds(): LatLngBounds\r\n  \t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n  \tgetBounds: function () {\r\n  \t\tvar bounds = new LatLngBounds();\r\n\r\n  \t\tfor (var id in this._layers) {\r\n  \t\t\tvar layer = this._layers[id];\r\n  \t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n  \t\t}\r\n  \t\treturn bounds;\r\n  \t}\r\n  });\r\n\r\n  // @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n  // Create a feature group, optionally given an initial set of layers and an `options` object.\r\n  var featureGroup = function (layers, options) {\r\n  \treturn new FeatureGroup(layers, options);\r\n  };\n\n  /*\r\n   * @class Icon\r\n   * @aka L.Icon\r\n   *\r\n   * Represents an icon to provide when creating a marker.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var myIcon = L.icon({\r\n   *     iconUrl: 'my-icon.png',\r\n   *     iconRetinaUrl: 'my-icon@2x.png',\r\n   *     iconSize: [38, 95],\r\n   *     iconAnchor: [22, 94],\r\n   *     popupAnchor: [-3, -76],\r\n   *     shadowUrl: 'my-icon-shadow.png',\r\n   *     shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n   *     shadowSize: [68, 95],\r\n   *     shadowAnchor: [22, 94]\r\n   * });\r\n   *\r\n   * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n   * ```\r\n   *\r\n   * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n   *\r\n   */\r\n\r\n  var Icon = Class.extend({\r\n\r\n  \t/* @section\r\n  \t * @aka Icon options\r\n  \t *\r\n  \t * @option iconUrl: String = null\r\n  \t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n  \t *\r\n  \t * @option iconRetinaUrl: String = null\r\n  \t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n  \t * script path). Used for Retina screen devices.\r\n  \t *\r\n  \t * @option iconSize: Point = null\r\n  \t * Size of the icon image in pixels.\r\n  \t *\r\n  \t * @option iconAnchor: Point = null\r\n  \t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n  \t * will be aligned so that this point is at the marker's geographical location. Centered\r\n  \t * by default if size is specified, also can be set in CSS with negative margins.\r\n  \t *\r\n  \t * @option popupAnchor: Point = [0, 0]\r\n  \t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n  \t *\r\n  \t * @option tooltipAnchor: Point = [0, 0]\r\n  \t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n  \t *\r\n  \t * @option shadowUrl: String = null\r\n  \t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n  \t *\r\n  \t * @option shadowRetinaUrl: String = null\r\n  \t *\r\n  \t * @option shadowSize: Point = null\r\n  \t * Size of the shadow image in pixels.\r\n  \t *\r\n  \t * @option shadowAnchor: Point = null\r\n  \t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n  \t * as iconAnchor if not specified).\r\n  \t *\r\n  \t * @option className: String = ''\r\n  \t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n  \t */\r\n\r\n  \toptions: {\r\n  \t\tpopupAnchor: [0, 0],\r\n  \t\ttooltipAnchor: [0, 0],\r\n\r\n  \t\t// @option crossOrigin: Boolean|String = false\r\n  \t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n  \t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n  \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n  \t\tcrossOrigin: false\r\n  \t},\r\n\r\n  \tinitialize: function (options) {\r\n  \t\tsetOptions(this, options);\r\n  \t},\r\n\r\n  \t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n  \t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n  \t// styled according to the options.\r\n  \tcreateIcon: function (oldIcon) {\r\n  \t\treturn this._createIcon('icon', oldIcon);\r\n  \t},\r\n\r\n  \t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n  \t// As `createIcon`, but for the shadow beneath it.\r\n  \tcreateShadow: function (oldIcon) {\r\n  \t\treturn this._createIcon('shadow', oldIcon);\r\n  \t},\r\n\r\n  \t_createIcon: function (name, oldIcon) {\r\n  \t\tvar src = this._getIconUrl(name);\r\n\r\n  \t\tif (!src) {\r\n  \t\t\tif (name === 'icon') {\r\n  \t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n  \t\t\t}\r\n  \t\t\treturn null;\r\n  \t\t}\r\n\r\n  \t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n  \t\tthis._setIconStyles(img, name);\r\n\r\n  \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n  \t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n  \t\t}\r\n\r\n  \t\treturn img;\r\n  \t},\r\n\r\n  \t_setIconStyles: function (img, name) {\r\n  \t\tvar options = this.options;\r\n  \t\tvar sizeOption = options[name + 'Size'];\r\n\r\n  \t\tif (typeof sizeOption === 'number') {\r\n  \t\t\tsizeOption = [sizeOption, sizeOption];\r\n  \t\t}\r\n\r\n  \t\tvar size = toPoint(sizeOption),\r\n  \t\t    anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n  \t\t            size && size.divideBy(2, true));\r\n\r\n  \t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n  \t\tif (anchor) {\r\n  \t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n  \t\t\timg.style.marginTop  = (-anchor.y) + 'px';\r\n  \t\t}\r\n\r\n  \t\tif (size) {\r\n  \t\t\timg.style.width  = size.x + 'px';\r\n  \t\t\timg.style.height = size.y + 'px';\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_createImg: function (src, el) {\r\n  \t\tel = el || document.createElement('img');\r\n  \t\tel.src = src;\r\n  \t\treturn el;\r\n  \t},\r\n\r\n  \t_getIconUrl: function (name) {\r\n  \t\treturn Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n  \t}\r\n  });\r\n\r\n\r\n  // @factory L.icon(options: Icon options)\r\n  // Creates an icon instance with the given options.\r\n  function icon(options) {\r\n  \treturn new Icon(options);\r\n  }\n\n  /*\n   * @miniclass Icon.Default (Icon)\n   * @aka L.Icon.Default\n   * @section\n   *\n   * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n   * no icon is specified. Points to the blue marker image distributed with Leaflet\n   * releases.\n   *\n   * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n   * (which is a set of `Icon options`).\n   *\n   * If you want to _completely_ replace the default icon, override the\n   * `L.Marker.prototype.options.icon` with your own icon instead.\n   */\n\n  var IconDefault = Icon.extend({\n\n  \toptions: {\n  \t\ticonUrl:       'marker-icon.png',\n  \t\ticonRetinaUrl: 'marker-icon-2x.png',\n  \t\tshadowUrl:     'marker-shadow.png',\n  \t\ticonSize:    [25, 41],\n  \t\ticonAnchor:  [12, 41],\n  \t\tpopupAnchor: [1, -34],\n  \t\ttooltipAnchor: [16, -28],\n  \t\tshadowSize:  [41, 41]\n  \t},\n\n  \t_getIconUrl: function (name) {\n  \t\tif (typeof IconDefault.imagePath !== 'string') {\t// Deprecated, backwards-compatibility only\n  \t\t\tIconDefault.imagePath = this._detectIconPath();\n  \t\t}\n\n  \t\t// @option imagePath: String\n  \t\t// `Icon.Default` will try to auto-detect the location of the\n  \t\t// blue icon images. If you are placing these images in a non-standard\n  \t\t// way, set this option to point to the right path.\n  \t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n  \t},\n\n  \t_stripUrl: function (path) {\t// separate function to use in tests\n  \t\tvar strip = function (str, re, idx) {\n  \t\t\tvar match = re.exec(str);\n  \t\t\treturn match && match[idx];\n  \t\t};\n  \t\tpath = strip(path, /^url\\((['\"])?(.+)\\1\\)$/, 2);\n  \t\treturn path && strip(path, /^(.*)marker-icon\\.png$/, 1);\n  \t},\n\n  \t_detectIconPath: function () {\n  \t\tvar el = create$1('div',  'leaflet-default-icon-path', document.body);\n  \t\tvar path = getStyle(el, 'background-image') ||\n  \t\t           getStyle(el, 'backgroundImage');\t// IE8\n\n  \t\tdocument.body.removeChild(el);\n  \t\tpath = this._stripUrl(path);\n  \t\tif (path) { return path; }\n  \t\tvar link = document.querySelector('link[href$=\"leaflet.css\"]');\n  \t\tif (!link) { return ''; }\n  \t\treturn link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);\n  \t}\n  });\n\n  /*\n   * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n   */\n\n\n  /* @namespace Marker\n   * @section Interaction handlers\n   *\n   * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n   *\n   * ```js\n   * marker.dragging.disable();\n   * ```\n   *\n   * @property dragging: Handler\n   * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n   */\n\n  var MarkerDrag = Handler.extend({\n  \tinitialize: function (marker) {\n  \t\tthis._marker = marker;\n  \t},\n\n  \taddHooks: function () {\n  \t\tvar icon = this._marker._icon;\n\n  \t\tif (!this._draggable) {\n  \t\t\tthis._draggable = new Draggable(icon, icon, true);\n  \t\t}\n\n  \t\tthis._draggable.on({\n  \t\t\tdragstart: this._onDragStart,\n  \t\t\tpredrag: this._onPreDrag,\n  \t\t\tdrag: this._onDrag,\n  \t\t\tdragend: this._onDragEnd\n  \t\t}, this).enable();\n\n  \t\taddClass(icon, 'leaflet-marker-draggable');\n  \t},\n\n  \tremoveHooks: function () {\n  \t\tthis._draggable.off({\n  \t\t\tdragstart: this._onDragStart,\n  \t\t\tpredrag: this._onPreDrag,\n  \t\t\tdrag: this._onDrag,\n  \t\t\tdragend: this._onDragEnd\n  \t\t}, this).disable();\n\n  \t\tif (this._marker._icon) {\n  \t\t\tremoveClass(this._marker._icon, 'leaflet-marker-draggable');\n  \t\t}\n  \t},\n\n  \tmoved: function () {\n  \t\treturn this._draggable && this._draggable._moved;\n  \t},\n\n  \t_adjustPan: function (e) {\n  \t\tvar marker = this._marker,\n  \t\t    map = marker._map,\n  \t\t    speed = this._marker.options.autoPanSpeed,\n  \t\t    padding = this._marker.options.autoPanPadding,\n  \t\t    iconPos = getPosition(marker._icon),\n  \t\t    bounds = map.getPixelBounds(),\n  \t\t    origin = map.getPixelOrigin();\n\n  \t\tvar panBounds = toBounds(\n  \t\t\tbounds.min._subtract(origin).add(padding),\n  \t\t\tbounds.max._subtract(origin).subtract(padding)\n  \t\t);\n\n  \t\tif (!panBounds.contains(iconPos)) {\n  \t\t\t// Compute incremental movement\n  \t\t\tvar movement = toPoint(\n  \t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n  \t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n  \t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n  \t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n  \t\t\t).multiplyBy(speed);\n\n  \t\t\tmap.panBy(movement, {animate: false});\n\n  \t\t\tthis._draggable._newPos._add(movement);\n  \t\t\tthis._draggable._startPos._add(movement);\n\n  \t\t\tsetPosition(marker._icon, this._draggable._newPos);\n  \t\t\tthis._onDrag(e);\n\n  \t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n  \t\t}\n  \t},\n\n  \t_onDragStart: function () {\n  \t\t// @section Dragging events\n  \t\t// @event dragstart: Event\n  \t\t// Fired when the user starts dragging the marker.\n\n  \t\t// @event movestart: Event\n  \t\t// Fired when the marker starts moving (because of dragging).\n\n  \t\tthis._oldLatLng = this._marker.getLatLng();\n\n  \t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n  \t\tthis._marker.closePopup && this._marker.closePopup();\n\n  \t\tthis._marker\n  \t\t\t.fire('movestart')\n  \t\t\t.fire('dragstart');\n  \t},\n\n  \t_onPreDrag: function (e) {\n  \t\tif (this._marker.options.autoPan) {\n  \t\t\tcancelAnimFrame(this._panRequest);\n  \t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n  \t\t}\n  \t},\n\n  \t_onDrag: function (e) {\n  \t\tvar marker = this._marker,\n  \t\t    shadow = marker._shadow,\n  \t\t    iconPos = getPosition(marker._icon),\n  \t\t    latlng = marker._map.layerPointToLatLng(iconPos);\n\n  \t\t// update shadow position\n  \t\tif (shadow) {\n  \t\t\tsetPosition(shadow, iconPos);\n  \t\t}\n\n  \t\tmarker._latlng = latlng;\n  \t\te.latlng = latlng;\n  \t\te.oldLatLng = this._oldLatLng;\n\n  \t\t// @event drag: Event\n  \t\t// Fired repeatedly while the user drags the marker.\n  \t\tmarker\n  \t\t    .fire('move', e)\n  \t\t    .fire('drag', e);\n  \t},\n\n  \t_onDragEnd: function (e) {\n  \t\t// @event dragend: DragEndEvent\n  \t\t// Fired when the user stops dragging the marker.\n\n  \t\t cancelAnimFrame(this._panRequest);\n\n  \t\t// @event moveend: Event\n  \t\t// Fired when the marker stops moving (because of dragging).\n  \t\tdelete this._oldLatLng;\n  \t\tthis._marker\n  \t\t    .fire('moveend')\n  \t\t    .fire('dragend', e);\n  \t}\n  });\n\n  /*\r\n   * @class Marker\r\n   * @inherits Interactive layer\r\n   * @aka L.Marker\r\n   * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * L.marker([50.5, 30.5]).addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var Marker = Layer.extend({\r\n\r\n  \t// @section\r\n  \t// @aka Marker options\r\n  \toptions: {\r\n  \t\t// @option icon: Icon = *\r\n  \t\t// Icon instance to use for rendering the marker.\r\n  \t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n  \t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n  \t\ticon: new IconDefault(),\r\n\r\n  \t\t// Option inherited from \"Interactive layer\" abstract class\r\n  \t\tinteractive: true,\r\n\r\n  \t\t// @option keyboard: Boolean = true\r\n  \t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n  \t\tkeyboard: true,\r\n\r\n  \t\t// @option title: String = ''\r\n  \t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n  \t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n  \t\ttitle: '',\r\n\r\n  \t\t// @option alt: String = 'Marker'\r\n  \t\t// Text for the `alt` attribute of the icon image.\r\n  \t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n  \t\talt: 'Marker',\r\n\r\n  \t\t// @option zIndexOffset: Number = 0\r\n  \t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n  \t\tzIndexOffset: 0,\r\n\r\n  \t\t// @option opacity: Number = 1.0\r\n  \t\t// The opacity of the marker.\r\n  \t\topacity: 1,\r\n\r\n  \t\t// @option riseOnHover: Boolean = false\r\n  \t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n  \t\triseOnHover: false,\r\n\r\n  \t\t// @option riseOffset: Number = 250\r\n  \t\t// The z-index offset used for the `riseOnHover` feature.\r\n  \t\triseOffset: 250,\r\n\r\n  \t\t// @option pane: String = 'markerPane'\r\n  \t\t// `Map pane` where the markers icon will be added.\r\n  \t\tpane: 'markerPane',\r\n\r\n  \t\t// @option shadowPane: String = 'shadowPane'\r\n  \t\t// `Map pane` where the markers shadow will be added.\r\n  \t\tshadowPane: 'shadowPane',\r\n\r\n  \t\t// @option bubblingMouseEvents: Boolean = false\r\n  \t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n  \t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n  \t\tbubblingMouseEvents: false,\r\n\r\n  \t\t// @option autoPanOnFocus: Boolean = true\r\n  \t\t// When `true`, the map will pan whenever the marker is focused (via\r\n  \t\t// e.g. pressing `tab` on the keyboard) to ensure the marker is\r\n  \t\t// visible within the map's bounds\r\n  \t\tautoPanOnFocus: true,\r\n\r\n  \t\t// @section Draggable marker options\r\n  \t\t// @option draggable: Boolean = false\r\n  \t\t// Whether the marker is draggable with mouse/touch or not.\r\n  \t\tdraggable: false,\r\n\r\n  \t\t// @option autoPan: Boolean = false\r\n  \t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n  \t\tautoPan: false,\r\n\r\n  \t\t// @option autoPanPadding: Point = Point(50, 50)\r\n  \t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n  \t\t// map edge to start panning the map.\r\n  \t\tautoPanPadding: [50, 50],\r\n\r\n  \t\t// @option autoPanSpeed: Number = 10\r\n  \t\t// Number of pixels the map should pan by.\r\n  \t\tautoPanSpeed: 10\r\n  \t},\r\n\r\n  \t/* @section\r\n  \t *\r\n  \t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n  \t */\r\n\r\n  \tinitialize: function (latlng, options) {\r\n  \t\tsetOptions(this, options);\r\n  \t\tthis._latlng = toLatLng(latlng);\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n  \t\t}\r\n\r\n  \t\tthis._initIcon();\r\n  \t\tthis.update();\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tif (this.dragging && this.dragging.enabled()) {\r\n  \t\t\tthis.options.draggable = true;\r\n  \t\t\tthis.dragging.removeHooks();\r\n  \t\t}\r\n  \t\tdelete this.dragging;\r\n\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n  \t\t}\r\n\r\n  \t\tthis._removeIcon();\r\n  \t\tthis._removeShadow();\r\n  \t},\r\n\r\n  \tgetEvents: function () {\r\n  \t\treturn {\r\n  \t\t\tzoom: this.update,\r\n  \t\t\tviewreset: this.update\r\n  \t\t};\r\n  \t},\r\n\r\n  \t// @method getLatLng: LatLng\r\n  \t// Returns the current geographical position of the marker.\r\n  \tgetLatLng: function () {\r\n  \t\treturn this._latlng;\r\n  \t},\r\n\r\n  \t// @method setLatLng(latlng: LatLng): this\r\n  \t// Changes the marker position to the given point.\r\n  \tsetLatLng: function (latlng) {\r\n  \t\tvar oldLatLng = this._latlng;\r\n  \t\tthis._latlng = toLatLng(latlng);\r\n  \t\tthis.update();\r\n\r\n  \t\t// @event move: Event\r\n  \t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n  \t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n  \t},\r\n\r\n  \t// @method setZIndexOffset(offset: Number): this\r\n  \t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n  \tsetZIndexOffset: function (offset) {\r\n  \t\tthis.options.zIndexOffset = offset;\r\n  \t\treturn this.update();\r\n  \t},\r\n\r\n  \t// @method getIcon: Icon\r\n  \t// Returns the current icon used by the marker\r\n  \tgetIcon: function () {\r\n  \t\treturn this.options.icon;\r\n  \t},\r\n\r\n  \t// @method setIcon(icon: Icon): this\r\n  \t// Changes the marker icon.\r\n  \tsetIcon: function (icon) {\r\n\r\n  \t\tthis.options.icon = icon;\r\n\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._initIcon();\r\n  \t\t\tthis.update();\r\n  \t\t}\r\n\r\n  \t\tif (this._popup) {\r\n  \t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tgetElement: function () {\r\n  \t\treturn this._icon;\r\n  \t},\r\n\r\n  \tupdate: function () {\r\n\r\n  \t\tif (this._icon && this._map) {\r\n  \t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n  \t\t\tthis._setPos(pos);\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_initIcon: function () {\r\n  \t\tvar options = this.options,\r\n  \t\t    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n  \t\tvar icon = options.icon.createIcon(this._icon),\r\n  \t\t    addIcon = false;\r\n\r\n  \t\t// if we're not reusing the icon, remove the old one and init new one\r\n  \t\tif (icon !== this._icon) {\r\n  \t\t\tif (this._icon) {\r\n  \t\t\t\tthis._removeIcon();\r\n  \t\t\t}\r\n  \t\t\taddIcon = true;\r\n\r\n  \t\t\tif (options.title) {\r\n  \t\t\t\ticon.title = options.title;\r\n  \t\t\t}\r\n\r\n  \t\t\tif (icon.tagName === 'IMG') {\r\n  \t\t\t\ticon.alt = options.alt || '';\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\taddClass(icon, classToAdd);\r\n\r\n  \t\tif (options.keyboard) {\r\n  \t\t\ticon.tabIndex = '0';\r\n  \t\t\ticon.setAttribute('role', 'button');\r\n  \t\t}\r\n\r\n  \t\tthis._icon = icon;\r\n\r\n  \t\tif (options.riseOnHover) {\r\n  \t\t\tthis.on({\r\n  \t\t\t\tmouseover: this._bringToFront,\r\n  \t\t\t\tmouseout: this._resetZIndex\r\n  \t\t\t});\r\n  \t\t}\r\n\r\n  \t\tif (this.options.autoPanOnFocus) {\r\n  \t\t\ton(icon, 'focus', this._panOnFocus, this);\r\n  \t\t}\r\n\r\n  \t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n  \t\t    addShadow = false;\r\n\r\n  \t\tif (newShadow !== this._shadow) {\r\n  \t\t\tthis._removeShadow();\r\n  \t\t\taddShadow = true;\r\n  \t\t}\r\n\r\n  \t\tif (newShadow) {\r\n  \t\t\taddClass(newShadow, classToAdd);\r\n  \t\t\tnewShadow.alt = '';\r\n  \t\t}\r\n  \t\tthis._shadow = newShadow;\r\n\r\n\r\n  \t\tif (options.opacity < 1) {\r\n  \t\t\tthis._updateOpacity();\r\n  \t\t}\r\n\r\n\r\n  \t\tif (addIcon) {\r\n  \t\t\tthis.getPane().appendChild(this._icon);\r\n  \t\t}\r\n  \t\tthis._initInteraction();\r\n  \t\tif (newShadow && addShadow) {\r\n  \t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_removeIcon: function () {\r\n  \t\tif (this.options.riseOnHover) {\r\n  \t\t\tthis.off({\r\n  \t\t\t\tmouseover: this._bringToFront,\r\n  \t\t\t\tmouseout: this._resetZIndex\r\n  \t\t\t});\r\n  \t\t}\r\n\r\n  \t\tif (this.options.autoPanOnFocus) {\r\n  \t\t\toff(this._icon, 'focus', this._panOnFocus, this);\r\n  \t\t}\r\n\r\n  \t\tremove(this._icon);\r\n  \t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n  \t\tthis._icon = null;\r\n  \t},\r\n\r\n  \t_removeShadow: function () {\r\n  \t\tif (this._shadow) {\r\n  \t\t\tremove(this._shadow);\r\n  \t\t}\r\n  \t\tthis._shadow = null;\r\n  \t},\r\n\r\n  \t_setPos: function (pos) {\r\n\r\n  \t\tif (this._icon) {\r\n  \t\t\tsetPosition(this._icon, pos);\r\n  \t\t}\r\n\r\n  \t\tif (this._shadow) {\r\n  \t\t\tsetPosition(this._shadow, pos);\r\n  \t\t}\r\n\r\n  \t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n  \t\tthis._resetZIndex();\r\n  \t},\r\n\r\n  \t_updateZIndex: function (offset) {\r\n  \t\tif (this._icon) {\r\n  \t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_animateZoom: function (opt) {\r\n  \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n  \t\tthis._setPos(pos);\r\n  \t},\r\n\r\n  \t_initInteraction: function () {\r\n\r\n  \t\tif (!this.options.interactive) { return; }\r\n\r\n  \t\taddClass(this._icon, 'leaflet-interactive');\r\n\r\n  \t\tthis.addInteractiveTarget(this._icon);\r\n\r\n  \t\tif (MarkerDrag) {\r\n  \t\t\tvar draggable = this.options.draggable;\r\n  \t\t\tif (this.dragging) {\r\n  \t\t\t\tdraggable = this.dragging.enabled();\r\n  \t\t\t\tthis.dragging.disable();\r\n  \t\t\t}\r\n\r\n  \t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n  \t\t\tif (draggable) {\r\n  \t\t\t\tthis.dragging.enable();\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method setOpacity(opacity: Number): this\r\n  \t// Changes the opacity of the marker.\r\n  \tsetOpacity: function (opacity) {\r\n  \t\tthis.options.opacity = opacity;\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._updateOpacity();\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t_updateOpacity: function () {\r\n  \t\tvar opacity = this.options.opacity;\r\n\r\n  \t\tif (this._icon) {\r\n  \t\t\tsetOpacity(this._icon, opacity);\r\n  \t\t}\r\n\r\n  \t\tif (this._shadow) {\r\n  \t\t\tsetOpacity(this._shadow, opacity);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_bringToFront: function () {\r\n  \t\tthis._updateZIndex(this.options.riseOffset);\r\n  \t},\r\n\r\n  \t_resetZIndex: function () {\r\n  \t\tthis._updateZIndex(0);\r\n  \t},\r\n\r\n  \t_panOnFocus: function () {\r\n  \t\tvar map = this._map;\r\n  \t\tif (!map) { return; }\r\n\r\n  \t\tvar iconOpts = this.options.icon.options;\r\n  \t\tvar size = iconOpts.iconSize ? toPoint(iconOpts.iconSize) : toPoint(0, 0);\r\n  \t\tvar anchor = iconOpts.iconAnchor ? toPoint(iconOpts.iconAnchor) : toPoint(0, 0);\r\n\r\n  \t\tmap.panInside(this._latlng, {\r\n  \t\t\tpaddingTopLeft: anchor,\r\n  \t\t\tpaddingBottomRight: size.subtract(anchor)\r\n  \t\t});\r\n  \t},\r\n\r\n  \t_getPopupAnchor: function () {\r\n  \t\treturn this.options.icon.options.popupAnchor;\r\n  \t},\r\n\r\n  \t_getTooltipAnchor: function () {\r\n  \t\treturn this.options.icon.options.tooltipAnchor;\r\n  \t}\r\n  });\r\n\r\n\r\n  // factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n  // @factory L.marker(latlng: LatLng, options? : Marker options)\r\n  // Instantiates a Marker object given a geographical point and optionally an options object.\r\n  function marker(latlng, options) {\r\n  \treturn new Marker(latlng, options);\r\n  }\n\n  /*\n   * @class Path\n   * @aka L.Path\n   * @inherits Interactive layer\n   *\n   * An abstract class that contains options and constants shared between vector\n   * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n   */\n\n  var Path = Layer.extend({\n\n  \t// @section\n  \t// @aka Path options\n  \toptions: {\n  \t\t// @option stroke: Boolean = true\n  \t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n  \t\tstroke: true,\n\n  \t\t// @option color: String = '#3388ff'\n  \t\t// Stroke color\n  \t\tcolor: '#3388ff',\n\n  \t\t// @option weight: Number = 3\n  \t\t// Stroke width in pixels\n  \t\tweight: 3,\n\n  \t\t// @option opacity: Number = 1.0\n  \t\t// Stroke opacity\n  \t\topacity: 1,\n\n  \t\t// @option lineCap: String= 'round'\n  \t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n  \t\tlineCap: 'round',\n\n  \t\t// @option lineJoin: String = 'round'\n  \t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n  \t\tlineJoin: 'round',\n\n  \t\t// @option dashArray: String = null\n  \t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n  \t\tdashArray: null,\n\n  \t\t// @option dashOffset: String = null\n  \t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n  \t\tdashOffset: null,\n\n  \t\t// @option fill: Boolean = depends\n  \t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n  \t\tfill: false,\n\n  \t\t// @option fillColor: String = *\n  \t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n  \t\tfillColor: null,\n\n  \t\t// @option fillOpacity: Number = 0.2\n  \t\t// Fill opacity.\n  \t\tfillOpacity: 0.2,\n\n  \t\t// @option fillRule: String = 'evenodd'\n  \t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n  \t\tfillRule: 'evenodd',\n\n  \t\t// className: '',\n\n  \t\t// Option inherited from \"Interactive layer\" abstract class\n  \t\tinteractive: true,\n\n  \t\t// @option bubblingMouseEvents: Boolean = true\n  \t\t// When `true`, a mouse event on this path will trigger the same event on the map\n  \t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n  \t\tbubblingMouseEvents: true\n  \t},\n\n  \tbeforeAdd: function (map) {\n  \t\t// Renderer is set here because we need to call renderer.getEvents\n  \t\t// before this.getEvents.\n  \t\tthis._renderer = map.getRenderer(this);\n  \t},\n\n  \tonAdd: function () {\n  \t\tthis._renderer._initPath(this);\n  \t\tthis._reset();\n  \t\tthis._renderer._addPath(this);\n  \t},\n\n  \tonRemove: function () {\n  \t\tthis._renderer._removePath(this);\n  \t},\n\n  \t// @method redraw(): this\n  \t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n  \tredraw: function () {\n  \t\tif (this._map) {\n  \t\t\tthis._renderer._updatePath(this);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method setStyle(style: Path options): this\n  \t// Changes the appearance of a Path based on the options in the `Path options` object.\n  \tsetStyle: function (style) {\n  \t\tsetOptions(this, style);\n  \t\tif (this._renderer) {\n  \t\t\tthis._renderer._updateStyle(this);\n  \t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n  \t\t\t\tthis._updateBounds();\n  \t\t\t}\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method bringToFront(): this\n  \t// Brings the layer to the top of all path layers.\n  \tbringToFront: function () {\n  \t\tif (this._renderer) {\n  \t\t\tthis._renderer._bringToFront(this);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method bringToBack(): this\n  \t// Brings the layer to the bottom of all path layers.\n  \tbringToBack: function () {\n  \t\tif (this._renderer) {\n  \t\t\tthis._renderer._bringToBack(this);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \tgetElement: function () {\n  \t\treturn this._path;\n  \t},\n\n  \t_reset: function () {\n  \t\t// defined in child classes\n  \t\tthis._project();\n  \t\tthis._update();\n  \t},\n\n  \t_clickTolerance: function () {\n  \t\t// used when doing hit detection for Canvas layers\n  \t\treturn (this.options.stroke ? this.options.weight / 2 : 0) +\n  \t\t  (this._renderer.options.tolerance || 0);\n  \t}\n  });\n\n  /*\n   * @class CircleMarker\n   * @aka L.CircleMarker\n   * @inherits Path\n   *\n   * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n   */\n\n  var CircleMarker = Path.extend({\n\n  \t// @section\n  \t// @aka CircleMarker options\n  \toptions: {\n  \t\tfill: true,\n\n  \t\t// @option radius: Number = 10\n  \t\t// Radius of the circle marker, in pixels\n  \t\tradius: 10\n  \t},\n\n  \tinitialize: function (latlng, options) {\n  \t\tsetOptions(this, options);\n  \t\tthis._latlng = toLatLng(latlng);\n  \t\tthis._radius = this.options.radius;\n  \t},\n\n  \t// @method setLatLng(latLng: LatLng): this\n  \t// Sets the position of a circle marker to a new location.\n  \tsetLatLng: function (latlng) {\n  \t\tvar oldLatLng = this._latlng;\n  \t\tthis._latlng = toLatLng(latlng);\n  \t\tthis.redraw();\n\n  \t\t// @event move: Event\n  \t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n  \t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n  \t},\n\n  \t// @method getLatLng(): LatLng\n  \t// Returns the current geographical position of the circle marker\n  \tgetLatLng: function () {\n  \t\treturn this._latlng;\n  \t},\n\n  \t// @method setRadius(radius: Number): this\n  \t// Sets the radius of a circle marker. Units are in pixels.\n  \tsetRadius: function (radius) {\n  \t\tthis.options.radius = this._radius = radius;\n  \t\treturn this.redraw();\n  \t},\n\n  \t// @method getRadius(): Number\n  \t// Returns the current radius of the circle\n  \tgetRadius: function () {\n  \t\treturn this._radius;\n  \t},\n\n  \tsetStyle : function (options) {\n  \t\tvar radius = options && options.radius || this._radius;\n  \t\tPath.prototype.setStyle.call(this, options);\n  \t\tthis.setRadius(radius);\n  \t\treturn this;\n  \t},\n\n  \t_project: function () {\n  \t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n  \t\tthis._updateBounds();\n  \t},\n\n  \t_updateBounds: function () {\n  \t\tvar r = this._radius,\n  \t\t    r2 = this._radiusY || r,\n  \t\t    w = this._clickTolerance(),\n  \t\t    p = [r + w, r2 + w];\n  \t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n  \t},\n\n  \t_update: function () {\n  \t\tif (this._map) {\n  \t\t\tthis._updatePath();\n  \t\t}\n  \t},\n\n  \t_updatePath: function () {\n  \t\tthis._renderer._updateCircle(this);\n  \t},\n\n  \t_empty: function () {\n  \t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n  \t},\n\n  \t// Needed by the `Canvas` renderer for interactivity\n  \t_containsPoint: function (p) {\n  \t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n  \t}\n  });\n\n\n  // @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n  // Instantiates a circle marker object given a geographical point, and an optional options object.\n  function circleMarker(latlng, options) {\n  \treturn new CircleMarker(latlng, options);\n  }\n\n  /*\n   * @class Circle\n   * @aka L.Circle\n   * @inherits CircleMarker\n   *\n   * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n   *\n   * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n   *\n   * @example\n   *\n   * ```js\n   * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n   * ```\n   */\n\n  var Circle = CircleMarker.extend({\n\n  \tinitialize: function (latlng, options, legacyOptions) {\n  \t\tif (typeof options === 'number') {\n  \t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n  \t\t\toptions = extend({}, legacyOptions, {radius: options});\n  \t\t}\n  \t\tsetOptions(this, options);\n  \t\tthis._latlng = toLatLng(latlng);\n\n  \t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n  \t\t// @section\n  \t\t// @aka Circle options\n  \t\t// @option radius: Number; Radius of the circle, in meters.\n  \t\tthis._mRadius = this.options.radius;\n  \t},\n\n  \t// @method setRadius(radius: Number): this\n  \t// Sets the radius of a circle. Units are in meters.\n  \tsetRadius: function (radius) {\n  \t\tthis._mRadius = radius;\n  \t\treturn this.redraw();\n  \t},\n\n  \t// @method getRadius(): Number\n  \t// Returns the current radius of a circle. Units are in meters.\n  \tgetRadius: function () {\n  \t\treturn this._mRadius;\n  \t},\n\n  \t// @method getBounds(): LatLngBounds\n  \t// Returns the `LatLngBounds` of the path.\n  \tgetBounds: function () {\n  \t\tvar half = [this._radius, this._radiusY || this._radius];\n\n  \t\treturn new LatLngBounds(\n  \t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n  \t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n  \t},\n\n  \tsetStyle: Path.prototype.setStyle,\n\n  \t_project: function () {\n\n  \t\tvar lng = this._latlng.lng,\n  \t\t    lat = this._latlng.lat,\n  \t\t    map = this._map,\n  \t\t    crs = map.options.crs;\n\n  \t\tif (crs.distance === Earth.distance) {\n  \t\t\tvar d = Math.PI / 180,\n  \t\t\t    latR = (this._mRadius / Earth.R) / d,\n  \t\t\t    top = map.project([lat + latR, lng]),\n  \t\t\t    bottom = map.project([lat - latR, lng]),\n  \t\t\t    p = top.add(bottom).divideBy(2),\n  \t\t\t    lat2 = map.unproject(p).lat,\n  \t\t\t    lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n  \t\t\t            (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n  \t\t\tif (isNaN(lngR) || lngR === 0) {\n  \t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n  \t\t\t}\n\n  \t\t\tthis._point = p.subtract(map.getPixelOrigin());\n  \t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n  \t\t\tthis._radiusY = p.y - top.y;\n\n  \t\t} else {\n  \t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n  \t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n  \t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n  \t\t}\n\n  \t\tthis._updateBounds();\n  \t}\n  });\n\n  // @factory L.circle(latlng: LatLng, options?: Circle options)\n  // Instantiates a circle object given a geographical point, and an options object\n  // which contains the circle radius.\n  // @alternative\n  // @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n  // Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n  // Do not use in new applications or plugins.\n  function circle(latlng, options, legacyOptions) {\n  \treturn new Circle(latlng, options, legacyOptions);\n  }\n\n  /*\n   * @class Polyline\n   * @aka L.Polyline\n   * @inherits Path\n   *\n   * A class for drawing polyline overlays on a map. Extends `Path`.\n   *\n   * @example\n   *\n   * ```js\n   * // create a red polyline from an array of LatLng points\n   * var latlngs = [\n   * \t[45.51, -122.68],\n   * \t[37.77, -122.43],\n   * \t[34.04, -118.2]\n   * ];\n   *\n   * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n   *\n   * // zoom the map to the polyline\n   * map.fitBounds(polyline.getBounds());\n   * ```\n   *\n   * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n   *\n   * ```js\n   * // create a red polyline from an array of arrays of LatLng points\n   * var latlngs = [\n   * \t[[45.51, -122.68],\n   * \t [37.77, -122.43],\n   * \t [34.04, -118.2]],\n   * \t[[40.78, -73.91],\n   * \t [41.83, -87.62],\n   * \t [32.76, -96.72]]\n   * ];\n   * ```\n   */\n\n\n  var Polyline = Path.extend({\n\n  \t// @section\n  \t// @aka Polyline options\n  \toptions: {\n  \t\t// @option smoothFactor: Number = 1.0\n  \t\t// How much to simplify the polyline on each zoom level. More means\n  \t\t// better performance and smoother look, and less means more accurate representation.\n  \t\tsmoothFactor: 1.0,\n\n  \t\t// @option noClip: Boolean = false\n  \t\t// Disable polyline clipping.\n  \t\tnoClip: false\n  \t},\n\n  \tinitialize: function (latlngs, options) {\n  \t\tsetOptions(this, options);\n  \t\tthis._setLatLngs(latlngs);\n  \t},\n\n  \t// @method getLatLngs(): LatLng[]\n  \t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n  \tgetLatLngs: function () {\n  \t\treturn this._latlngs;\n  \t},\n\n  \t// @method setLatLngs(latlngs: LatLng[]): this\n  \t// Replaces all the points in the polyline with the given array of geographical points.\n  \tsetLatLngs: function (latlngs) {\n  \t\tthis._setLatLngs(latlngs);\n  \t\treturn this.redraw();\n  \t},\n\n  \t// @method isEmpty(): Boolean\n  \t// Returns `true` if the Polyline has no LatLngs.\n  \tisEmpty: function () {\n  \t\treturn !this._latlngs.length;\n  \t},\n\n  \t// @method closestLayerPoint(p: Point): Point\n  \t// Returns the point closest to `p` on the Polyline.\n  \tclosestLayerPoint: function (p) {\n  \t\tvar minDistance = Infinity,\n  \t\t    minPoint = null,\n  \t\t    closest = _sqClosestPointOnSegment,\n  \t\t    p1, p2;\n\n  \t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n  \t\t\tvar points = this._parts[j];\n\n  \t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n  \t\t\t\tp1 = points[i - 1];\n  \t\t\t\tp2 = points[i];\n\n  \t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n  \t\t\t\tif (sqDist < minDistance) {\n  \t\t\t\t\tminDistance = sqDist;\n  \t\t\t\t\tminPoint = closest(p, p1, p2);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t\tif (minPoint) {\n  \t\t\tminPoint.distance = Math.sqrt(minDistance);\n  \t\t}\n  \t\treturn minPoint;\n  \t},\n\n  \t// @method getCenter(): LatLng\n  \t// Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.\n  \tgetCenter: function () {\n  \t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n  \t\tif (!this._map) {\n  \t\t\tthrow new Error('Must add layer to map before using getCenter()');\n  \t\t}\n  \t\treturn polylineCenter(this._defaultShape(), this._map.options.crs);\n  \t},\n\n  \t// @method getBounds(): LatLngBounds\n  \t// Returns the `LatLngBounds` of the path.\n  \tgetBounds: function () {\n  \t\treturn this._bounds;\n  \t},\n\n  \t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n  \t// Adds a given point to the polyline. By default, adds to the first ring of\n  \t// the polyline in case of a multi-polyline, but can be overridden by passing\n  \t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n  \taddLatLng: function (latlng, latlngs) {\n  \t\tlatlngs = latlngs || this._defaultShape();\n  \t\tlatlng = toLatLng(latlng);\n  \t\tlatlngs.push(latlng);\n  \t\tthis._bounds.extend(latlng);\n  \t\treturn this.redraw();\n  \t},\n\n  \t_setLatLngs: function (latlngs) {\n  \t\tthis._bounds = new LatLngBounds();\n  \t\tthis._latlngs = this._convertLatLngs(latlngs);\n  \t},\n\n  \t_defaultShape: function () {\n  \t\treturn isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n  \t},\n\n  \t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n  \t_convertLatLngs: function (latlngs) {\n  \t\tvar result = [],\n  \t\t    flat = isFlat(latlngs);\n\n  \t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n  \t\t\tif (flat) {\n  \t\t\t\tresult[i] = toLatLng(latlngs[i]);\n  \t\t\t\tthis._bounds.extend(result[i]);\n  \t\t\t} else {\n  \t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n  \t\t\t}\n  \t\t}\n\n  \t\treturn result;\n  \t},\n\n  \t_project: function () {\n  \t\tvar pxBounds = new Bounds();\n  \t\tthis._rings = [];\n  \t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n  \t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n  \t\t\tthis._rawPxBounds = pxBounds;\n  \t\t\tthis._updateBounds();\n  \t\t}\n  \t},\n\n  \t_updateBounds: function () {\n  \t\tvar w = this._clickTolerance(),\n  \t\t    p = new Point(w, w);\n\n  \t\tif (!this._rawPxBounds) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tthis._pxBounds = new Bounds([\n  \t\t\tthis._rawPxBounds.min.subtract(p),\n  \t\t\tthis._rawPxBounds.max.add(p)\n  \t\t]);\n  \t},\n\n  \t// recursively turns latlngs into a set of rings with projected coordinates\n  \t_projectLatlngs: function (latlngs, result, projectedBounds) {\n  \t\tvar flat = latlngs[0] instanceof LatLng,\n  \t\t    len = latlngs.length,\n  \t\t    i, ring;\n\n  \t\tif (flat) {\n  \t\t\tring = [];\n  \t\t\tfor (i = 0; i < len; i++) {\n  \t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n  \t\t\t\tprojectedBounds.extend(ring[i]);\n  \t\t\t}\n  \t\t\tresult.push(ring);\n  \t\t} else {\n  \t\t\tfor (i = 0; i < len; i++) {\n  \t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t// clip polyline by renderer bounds so that we have less to render for performance\n  \t_clipPoints: function () {\n  \t\tvar bounds = this._renderer._bounds;\n\n  \t\tthis._parts = [];\n  \t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tif (this.options.noClip) {\n  \t\t\tthis._parts = this._rings;\n  \t\t\treturn;\n  \t\t}\n\n  \t\tvar parts = this._parts,\n  \t\t    i, j, k, len, len2, segment, points;\n\n  \t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n  \t\t\tpoints = this._rings[i];\n\n  \t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n  \t\t\t\tsegment = clipSegment(points[j], points[j + 1], bounds, j, true);\n\n  \t\t\t\tif (!segment) { continue; }\n\n  \t\t\t\tparts[k] = parts[k] || [];\n  \t\t\t\tparts[k].push(segment[0]);\n\n  \t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n  \t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n  \t\t\t\t\tparts[k].push(segment[1]);\n  \t\t\t\t\tk++;\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t// simplify each clipped part of the polyline for performance\n  \t_simplifyPoints: function () {\n  \t\tvar parts = this._parts,\n  \t\t    tolerance = this.options.smoothFactor;\n\n  \t\tfor (var i = 0, len = parts.length; i < len; i++) {\n  \t\t\tparts[i] = simplify(parts[i], tolerance);\n  \t\t}\n  \t},\n\n  \t_update: function () {\n  \t\tif (!this._map) { return; }\n\n  \t\tthis._clipPoints();\n  \t\tthis._simplifyPoints();\n  \t\tthis._updatePath();\n  \t},\n\n  \t_updatePath: function () {\n  \t\tthis._renderer._updatePoly(this);\n  \t},\n\n  \t// Needed by the `Canvas` renderer for interactivity\n  \t_containsPoint: function (p, closed) {\n  \t\tvar i, j, k, len, len2, part,\n  \t\t    w = this._clickTolerance();\n\n  \t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n  \t\t// hit detection for polylines\n  \t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n  \t\t\tpart = this._parts[i];\n\n  \t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n  \t\t\t\tif (!closed && (j === 0)) { continue; }\n\n  \t\t\t\tif (pointToSegmentDistance(p, part[k], part[j]) <= w) {\n  \t\t\t\t\treturn true;\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t\treturn false;\n  \t}\n  });\n\n  // @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n  // Instantiates a polyline object given an array of geographical points and\n  // optionally an options object. You can create a `Polyline` object with\n  // multiple separate lines (`MultiPolyline`) by passing an array of arrays\n  // of geographic points.\n  function polyline(latlngs, options) {\n  \treturn new Polyline(latlngs, options);\n  }\n\n  // Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\n  Polyline._flat = _flat;\n\n  /*\n   * @class Polygon\n   * @aka L.Polygon\n   * @inherits Polyline\n   *\n   * A class for drawing polygon overlays on a map. Extends `Polyline`.\n   *\n   * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n   *\n   *\n   * @example\n   *\n   * ```js\n   * // create a red polygon from an array of LatLng points\n   * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n   *\n   * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n   *\n   * // zoom the map to the polygon\n   * map.fitBounds(polygon.getBounds());\n   * ```\n   *\n   * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n   *\n   * ```js\n   * var latlngs = [\n   *   [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n   *   [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n   * ];\n   * ```\n   *\n   * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n   *\n   * ```js\n   * var latlngs = [\n   *   [ // first polygon\n   *     [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n   *     [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n   *   ],\n   *   [ // second polygon\n   *     [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n   *   ]\n   * ];\n   * ```\n   */\n\n  var Polygon = Polyline.extend({\n\n  \toptions: {\n  \t\tfill: true\n  \t},\n\n  \tisEmpty: function () {\n  \t\treturn !this._latlngs.length || !this._latlngs[0].length;\n  \t},\n\n  \t// @method getCenter(): LatLng\n  \t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.\n  \tgetCenter: function () {\n  \t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n  \t\tif (!this._map) {\n  \t\t\tthrow new Error('Must add layer to map before using getCenter()');\n  \t\t}\n  \t\treturn polygonCenter(this._defaultShape(), this._map.options.crs);\n  \t},\n\n  \t_convertLatLngs: function (latlngs) {\n  \t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n  \t\t    len = result.length;\n\n  \t\t// remove last point if it equals first one\n  \t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n  \t\t\tresult.pop();\n  \t\t}\n  \t\treturn result;\n  \t},\n\n  \t_setLatLngs: function (latlngs) {\n  \t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n  \t\tif (isFlat(this._latlngs)) {\n  \t\t\tthis._latlngs = [this._latlngs];\n  \t\t}\n  \t},\n\n  \t_defaultShape: function () {\n  \t\treturn isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n  \t},\n\n  \t_clipPoints: function () {\n  \t\t// polygons need a different clipping algorithm so we redefine that\n\n  \t\tvar bounds = this._renderer._bounds,\n  \t\t    w = this.options.weight,\n  \t\t    p = new Point(w, w);\n\n  \t\t// increase clip padding by stroke width to avoid stroke on clip edges\n  \t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n  \t\tthis._parts = [];\n  \t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tif (this.options.noClip) {\n  \t\t\tthis._parts = this._rings;\n  \t\t\treturn;\n  \t\t}\n\n  \t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n  \t\t\tclipped = clipPolygon(this._rings[i], bounds, true);\n  \t\t\tif (clipped.length) {\n  \t\t\t\tthis._parts.push(clipped);\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t_updatePath: function () {\n  \t\tthis._renderer._updatePoly(this, true);\n  \t},\n\n  \t// Needed by the `Canvas` renderer for interactivity\n  \t_containsPoint: function (p) {\n  \t\tvar inside = false,\n  \t\t    part, p1, p2, i, j, k, len, len2;\n\n  \t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n  \t\t// ray casting algorithm for detecting if point is in polygon\n  \t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n  \t\t\tpart = this._parts[i];\n\n  \t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n  \t\t\t\tp1 = part[j];\n  \t\t\t\tp2 = part[k];\n\n  \t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n  \t\t\t\t\tinside = !inside;\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n\n  \t\t// also check if it's on polygon stroke\n  \t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n  \t}\n\n  });\n\n\n  // @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\n  function polygon(latlngs, options) {\n  \treturn new Polygon(latlngs, options);\n  }\n\n  /*\r\n   * @class GeoJSON\r\n   * @aka L.GeoJSON\r\n   * @inherits FeatureGroup\r\n   *\r\n   * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n   * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * L.geoJSON(data, {\r\n   * \tstyle: function (feature) {\r\n   * \t\treturn {color: feature.properties.color};\r\n   * \t}\r\n   * }).bindPopup(function (layer) {\r\n   * \treturn layer.feature.properties.description;\r\n   * }).addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var GeoJSON = FeatureGroup.extend({\r\n\r\n  \t/* @section\r\n  \t * @aka GeoJSON options\r\n  \t *\r\n  \t * @option pointToLayer: Function = *\r\n  \t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n  \t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n  \t * The default is to spawn a default `Marker`:\r\n  \t * ```js\r\n  \t * function(geoJsonPoint, latlng) {\r\n  \t * \treturn L.marker(latlng);\r\n  \t * }\r\n  \t * ```\r\n  \t *\r\n  \t * @option style: Function = *\r\n  \t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n  \t * called internally when data is added.\r\n  \t * The default value is to not override any defaults:\r\n  \t * ```js\r\n  \t * function (geoJsonFeature) {\r\n  \t * \treturn {}\r\n  \t * }\r\n  \t * ```\r\n  \t *\r\n  \t * @option onEachFeature: Function = *\r\n  \t * A `Function` that will be called once for each created `Feature`, after it has\r\n  \t * been created and styled. Useful for attaching events and popups to features.\r\n  \t * The default is to do nothing with the newly created layers:\r\n  \t * ```js\r\n  \t * function (feature, layer) {}\r\n  \t * ```\r\n  \t *\r\n  \t * @option filter: Function = *\r\n  \t * A `Function` that will be used to decide whether to include a feature or not.\r\n  \t * The default is to include all features:\r\n  \t * ```js\r\n  \t * function (geoJsonFeature) {\r\n  \t * \treturn true;\r\n  \t * }\r\n  \t * ```\r\n  \t * Note: dynamically changing the `filter` option will have effect only on newly\r\n  \t * added data. It will _not_ re-evaluate already included features.\r\n  \t *\r\n  \t * @option coordsToLatLng: Function = *\r\n  \t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n  \t * The default is the `coordsToLatLng` static method.\r\n  \t *\r\n  \t * @option markersInheritOptions: Boolean = false\r\n  \t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n  \t */\r\n\r\n  \tinitialize: function (geojson, options) {\r\n  \t\tsetOptions(this, options);\r\n\r\n  \t\tthis._layers = {};\r\n\r\n  \t\tif (geojson) {\r\n  \t\t\tthis.addData(geojson);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method addData( <GeoJSON> data ): this\r\n  \t// Adds a GeoJSON object to the layer.\r\n  \taddData: function (geojson) {\r\n  \t\tvar features = isArray(geojson) ? geojson : geojson.features,\r\n  \t\t    i, len, feature;\r\n\r\n  \t\tif (features) {\r\n  \t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n  \t\t\t\t// only add this if geometry or geometries are set and not null\r\n  \t\t\t\tfeature = features[i];\r\n  \t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n  \t\t\t\t\tthis.addData(feature);\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t\treturn this;\r\n  \t\t}\r\n\r\n  \t\tvar options = this.options;\r\n\r\n  \t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n  \t\tvar layer = geometryToLayer(geojson, options);\r\n  \t\tif (!layer) {\r\n  \t\t\treturn this;\r\n  \t\t}\r\n  \t\tlayer.feature = asFeature(geojson);\r\n\r\n  \t\tlayer.defaultOptions = layer.options;\r\n  \t\tthis.resetStyle(layer);\r\n\r\n  \t\tif (options.onEachFeature) {\r\n  \t\t\toptions.onEachFeature(geojson, layer);\r\n  \t\t}\r\n\r\n  \t\treturn this.addLayer(layer);\r\n  \t},\r\n\r\n  \t// @method resetStyle( <Path> layer? ): this\r\n  \t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n  \t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n  \tresetStyle: function (layer) {\r\n  \t\tif (layer === undefined) {\r\n  \t\t\treturn this.eachLayer(this.resetStyle, this);\r\n  \t\t}\r\n  \t\t// reset any custom styles\r\n  \t\tlayer.options = extend({}, layer.defaultOptions);\r\n  \t\tthis._setLayerStyle(layer, this.options.style);\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method setStyle( <Function> style ): this\r\n  \t// Changes styles of GeoJSON vector layers with the given style function.\r\n  \tsetStyle: function (style) {\r\n  \t\treturn this.eachLayer(function (layer) {\r\n  \t\t\tthis._setLayerStyle(layer, style);\r\n  \t\t}, this);\r\n  \t},\r\n\r\n  \t_setLayerStyle: function (layer, style) {\r\n  \t\tif (layer.setStyle) {\r\n  \t\t\tif (typeof style === 'function') {\r\n  \t\t\t\tstyle = style(layer.feature);\r\n  \t\t\t}\r\n  \t\t\tlayer.setStyle(style);\r\n  \t\t}\r\n  \t}\r\n  });\r\n\r\n  // @section\r\n  // There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n  // @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n  // Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n  // [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n  // functions if provided as options.\r\n  function geometryToLayer(geojson, options) {\r\n\r\n  \tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n  \t    coords = geometry ? geometry.coordinates : null,\r\n  \t    layers = [],\r\n  \t    pointToLayer = options && options.pointToLayer,\r\n  \t    _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n  \t    latlng, latlngs, i, len;\r\n\r\n  \tif (!coords && !geometry) {\r\n  \t\treturn null;\r\n  \t}\r\n\r\n  \tswitch (geometry.type) {\r\n  \tcase 'Point':\r\n  \t\tlatlng = _coordsToLatLng(coords);\r\n  \t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n  \tcase 'MultiPoint':\r\n  \t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n  \t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n  \t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n  \t\t}\r\n  \t\treturn new FeatureGroup(layers);\r\n\r\n  \tcase 'LineString':\r\n  \tcase 'MultiLineString':\r\n  \t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n  \t\treturn new Polyline(latlngs, options);\r\n\r\n  \tcase 'Polygon':\r\n  \tcase 'MultiPolygon':\r\n  \t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n  \t\treturn new Polygon(latlngs, options);\r\n\r\n  \tcase 'GeometryCollection':\r\n  \t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n  \t\t\tvar geoLayer = geometryToLayer({\r\n  \t\t\t\tgeometry: geometry.geometries[i],\r\n  \t\t\t\ttype: 'Feature',\r\n  \t\t\t\tproperties: geojson.properties\r\n  \t\t\t}, options);\r\n\r\n  \t\t\tif (geoLayer) {\r\n  \t\t\t\tlayers.push(geoLayer);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\treturn new FeatureGroup(layers);\r\n\r\n  \tcase 'FeatureCollection':\r\n  \t\tfor (i = 0, len = geometry.features.length; i < len; i++) {\r\n  \t\t\tvar featureLayer = geometryToLayer(geometry.features[i], options);\r\n\r\n  \t\t\tif (featureLayer) {\r\n  \t\t\t\tlayers.push(featureLayer);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\treturn new FeatureGroup(layers);\r\n\r\n  \tdefault:\r\n  \t\tthrow new Error('Invalid GeoJSON object.');\r\n  \t}\r\n  }\r\n\r\n  function _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n  \treturn pointToLayerFn ?\r\n  \t\tpointToLayerFn(geojson, latlng) :\r\n  \t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n  }\r\n\r\n  // @function coordsToLatLng(coords: Array): LatLng\r\n  // Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n  // or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\n  function coordsToLatLng(coords) {\r\n  \treturn new LatLng(coords[1], coords[0], coords[2]);\r\n  }\r\n\r\n  // @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n  // Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n  // `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n  // Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\n  function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n  \tvar latlngs = [];\r\n\r\n  \tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n  \t\tlatlng = levelsDeep ?\r\n  \t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n  \t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n  \t\tlatlngs.push(latlng);\r\n  \t}\r\n\r\n  \treturn latlngs;\r\n  }\r\n\r\n  // @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array\r\n  // Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\n  function latLngToCoords(latlng, precision) {\r\n  \tlatlng = toLatLng(latlng);\r\n  \treturn latlng.alt !== undefined ?\r\n  \t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] :\r\n  \t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)];\r\n  }\r\n\r\n  // @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array\r\n  // Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n  // `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\n  function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n  \tvar coords = [];\r\n\r\n  \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n  \t\t// Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion\r\n  \t\tcoords.push(levelsDeep ?\r\n  \t\t\tlatLngsToCoords(latlngs[i], isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :\r\n  \t\t\tlatLngToCoords(latlngs[i], precision));\r\n  \t}\r\n\r\n  \tif (!levelsDeep && closed && coords.length > 0) {\r\n  \t\tcoords.push(coords[0].slice());\r\n  \t}\r\n\r\n  \treturn coords;\r\n  }\r\n\r\n  function getFeature(layer, newGeometry) {\r\n  \treturn layer.feature ?\r\n  \t\textend({}, layer.feature, {geometry: newGeometry}) :\r\n  \t\tasFeature(newGeometry);\r\n  }\r\n\r\n  // @function asFeature(geojson: Object): Object\r\n  // Normalize GeoJSON geometries/features into GeoJSON features.\r\n  function asFeature(geojson) {\r\n  \tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n  \t\treturn geojson;\r\n  \t}\r\n\r\n  \treturn {\r\n  \t\ttype: 'Feature',\r\n  \t\tproperties: {},\r\n  \t\tgeometry: geojson\r\n  \t};\r\n  }\r\n\r\n  var PointToGeoJSON = {\r\n  \ttoGeoJSON: function (precision) {\r\n  \t\treturn getFeature(this, {\r\n  \t\t\ttype: 'Point',\r\n  \t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n  \t\t});\r\n  \t}\r\n  };\r\n\r\n  // @namespace Marker\r\n  // @section Other methods\r\n  // @method toGeoJSON(precision?: Number|false): Object\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n  // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\n  Marker.include(PointToGeoJSON);\r\n\r\n  // @namespace CircleMarker\r\n  // @method toGeoJSON(precision?: Number|false): Object\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n  // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\n  Circle.include(PointToGeoJSON);\r\n  CircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n  // @namespace Polyline\r\n  // @method toGeoJSON(precision?: Number|false): Object\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n  // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\n  Polyline.include({\r\n  \ttoGeoJSON: function (precision) {\r\n  \t\tvar multi = !isFlat(this._latlngs);\r\n\r\n  \t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n  \t\treturn getFeature(this, {\r\n  \t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n  \t\t\tcoordinates: coords\r\n  \t\t});\r\n  \t}\r\n  });\r\n\r\n  // @namespace Polygon\r\n  // @method toGeoJSON(precision?: Number|false): Object\r\n  // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n  // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\n  Polygon.include({\r\n  \ttoGeoJSON: function (precision) {\r\n  \t\tvar holes = !isFlat(this._latlngs),\r\n  \t\t    multi = holes && !isFlat(this._latlngs[0]);\r\n\r\n  \t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n  \t\tif (!holes) {\r\n  \t\t\tcoords = [coords];\r\n  \t\t}\r\n\r\n  \t\treturn getFeature(this, {\r\n  \t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n  \t\t\tcoordinates: coords\r\n  \t\t});\r\n  \t}\r\n  });\r\n\r\n\r\n  // @namespace LayerGroup\r\n  LayerGroup.include({\r\n  \ttoMultiPoint: function (precision) {\r\n  \t\tvar coords = [];\r\n\r\n  \t\tthis.eachLayer(function (layer) {\r\n  \t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n  \t\t});\r\n\r\n  \t\treturn getFeature(this, {\r\n  \t\t\ttype: 'MultiPoint',\r\n  \t\t\tcoordinates: coords\r\n  \t\t});\r\n  \t},\r\n\r\n  \t// @method toGeoJSON(precision?: Number|false): Object\r\n  \t// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n  \t// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n  \ttoGeoJSON: function (precision) {\r\n\r\n  \t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n  \t\tif (type === 'MultiPoint') {\r\n  \t\t\treturn this.toMultiPoint(precision);\r\n  \t\t}\r\n\r\n  \t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n  \t\t    jsons = [];\r\n\r\n  \t\tthis.eachLayer(function (layer) {\r\n  \t\t\tif (layer.toGeoJSON) {\r\n  \t\t\t\tvar json = layer.toGeoJSON(precision);\r\n  \t\t\t\tif (isGeometryCollection) {\r\n  \t\t\t\t\tjsons.push(json.geometry);\r\n  \t\t\t\t} else {\r\n  \t\t\t\t\tvar feature = asFeature(json);\r\n  \t\t\t\t\t// Squash nested feature collections\r\n  \t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n  \t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n  \t\t\t\t\t} else {\r\n  \t\t\t\t\t\tjsons.push(feature);\r\n  \t\t\t\t\t}\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t});\r\n\r\n  \t\tif (isGeometryCollection) {\r\n  \t\t\treturn getFeature(this, {\r\n  \t\t\t\tgeometries: jsons,\r\n  \t\t\t\ttype: 'GeometryCollection'\r\n  \t\t\t});\r\n  \t\t}\r\n\r\n  \t\treturn {\r\n  \t\t\ttype: 'FeatureCollection',\r\n  \t\t\tfeatures: jsons\r\n  \t\t};\r\n  \t}\r\n  });\r\n\r\n  // @namespace GeoJSON\r\n  // @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n  // Creates a GeoJSON layer. Optionally accepts an object in\r\n  // [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n  // (you can alternatively add it later with `addData` method) and an `options` object.\r\n  function geoJSON(geojson, options) {\r\n  \treturn new GeoJSON(geojson, options);\r\n  }\r\n\r\n  // Backward compatibility.\r\n  var geoJson = geoJSON;\n\n  /*\r\n   * @class ImageOverlay\r\n   * @aka L.ImageOverlay\r\n   * @inherits Interactive layer\r\n   *\r\n   * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n   * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n   * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var ImageOverlay = Layer.extend({\r\n\r\n  \t// @section\r\n  \t// @aka ImageOverlay options\r\n  \toptions: {\r\n  \t\t// @option opacity: Number = 1.0\r\n  \t\t// The opacity of the image overlay.\r\n  \t\topacity: 1,\r\n\r\n  \t\t// @option alt: String = ''\r\n  \t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n  \t\talt: '',\r\n\r\n  \t\t// @option interactive: Boolean = false\r\n  \t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n  \t\tinteractive: false,\r\n\r\n  \t\t// @option crossOrigin: Boolean|String = false\r\n  \t\t// Whether the crossOrigin attribute will be added to the image.\r\n  \t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n  \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n  \t\tcrossOrigin: false,\r\n\r\n  \t\t// @option errorOverlayUrl: String = ''\r\n  \t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n  \t\terrorOverlayUrl: '',\r\n\r\n  \t\t// @option zIndex: Number = 1\r\n  \t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n  \t\tzIndex: 1,\r\n\r\n  \t\t// @option className: String = ''\r\n  \t\t// A custom class name to assign to the image. Empty by default.\r\n  \t\tclassName: ''\r\n  \t},\r\n\r\n  \tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n  \t\tthis._url = url;\r\n  \t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n  \t\tsetOptions(this, options);\r\n  \t},\r\n\r\n  \tonAdd: function () {\r\n  \t\tif (!this._image) {\r\n  \t\t\tthis._initImage();\r\n\r\n  \t\t\tif (this.options.opacity < 1) {\r\n  \t\t\t\tthis._updateOpacity();\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\tif (this.options.interactive) {\r\n  \t\t\taddClass(this._image, 'leaflet-interactive');\r\n  \t\t\tthis.addInteractiveTarget(this._image);\r\n  \t\t}\r\n\r\n  \t\tthis.getPane().appendChild(this._image);\r\n  \t\tthis._reset();\r\n  \t},\r\n\r\n  \tonRemove: function () {\r\n  \t\tremove(this._image);\r\n  \t\tif (this.options.interactive) {\r\n  \t\t\tthis.removeInteractiveTarget(this._image);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method setOpacity(opacity: Number): this\r\n  \t// Sets the opacity of the overlay.\r\n  \tsetOpacity: function (opacity) {\r\n  \t\tthis.options.opacity = opacity;\r\n\r\n  \t\tif (this._image) {\r\n  \t\t\tthis._updateOpacity();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tsetStyle: function (styleOpts) {\r\n  \t\tif (styleOpts.opacity) {\r\n  \t\t\tthis.setOpacity(styleOpts.opacity);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method bringToFront(): this\r\n  \t// Brings the layer to the top of all overlays.\r\n  \tbringToFront: function () {\r\n  \t\tif (this._map) {\r\n  \t\t\ttoFront(this._image);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method bringToBack(): this\r\n  \t// Brings the layer to the bottom of all overlays.\r\n  \tbringToBack: function () {\r\n  \t\tif (this._map) {\r\n  \t\t\ttoBack(this._image);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method setUrl(url: String): this\r\n  \t// Changes the URL of the image.\r\n  \tsetUrl: function (url) {\r\n  \t\tthis._url = url;\r\n\r\n  \t\tif (this._image) {\r\n  \t\t\tthis._image.src = url;\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method setBounds(bounds: LatLngBounds): this\r\n  \t// Update the bounds that this ImageOverlay covers\r\n  \tsetBounds: function (bounds) {\r\n  \t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._reset();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tgetEvents: function () {\r\n  \t\tvar events = {\r\n  \t\t\tzoom: this._reset,\r\n  \t\t\tviewreset: this._reset\r\n  \t\t};\r\n\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tevents.zoomanim = this._animateZoom;\r\n  \t\t}\r\n\r\n  \t\treturn events;\r\n  \t},\r\n\r\n  \t// @method setZIndex(value: Number): this\r\n  \t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n  \tsetZIndex: function (value) {\r\n  \t\tthis.options.zIndex = value;\r\n  \t\tthis._updateZIndex();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getBounds(): LatLngBounds\r\n  \t// Get the bounds that this ImageOverlay covers\r\n  \tgetBounds: function () {\r\n  \t\treturn this._bounds;\r\n  \t},\r\n\r\n  \t// @method getElement(): HTMLElement\r\n  \t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n  \t// used by this overlay.\r\n  \tgetElement: function () {\r\n  \t\treturn this._image;\r\n  \t},\r\n\r\n  \t_initImage: function () {\r\n  \t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n  \t\tvar img = this._image = wasElementSupplied ? this._url : create$1('img');\r\n\r\n  \t\taddClass(img, 'leaflet-image-layer');\r\n  \t\tif (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); }\r\n  \t\tif (this.options.className) { addClass(img, this.options.className); }\r\n\r\n  \t\timg.onselectstart = falseFn;\r\n  \t\timg.onmousemove = falseFn;\r\n\r\n  \t\t// @event load: Event\r\n  \t\t// Fired when the ImageOverlay layer has loaded its image\r\n  \t\timg.onload = bind(this.fire, this, 'load');\r\n  \t\timg.onerror = bind(this._overlayOnError, this, 'error');\r\n\r\n  \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n  \t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n  \t\t}\r\n\r\n  \t\tif (this.options.zIndex) {\r\n  \t\t\tthis._updateZIndex();\r\n  \t\t}\r\n\r\n  \t\tif (wasElementSupplied) {\r\n  \t\t\tthis._url = img.src;\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\timg.src = this._url;\r\n  \t\timg.alt = this.options.alt;\r\n  \t},\r\n\r\n  \t_animateZoom: function (e) {\r\n  \t\tvar scale = this._map.getZoomScale(e.zoom),\r\n  \t\t    offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n  \t\tsetTransform(this._image, offset, scale);\r\n  \t},\r\n\r\n  \t_reset: function () {\r\n  \t\tvar image = this._image,\r\n  \t\t    bounds = new Bounds(\r\n  \t\t        this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n  \t\t        this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n  \t\t    size = bounds.getSize();\r\n\r\n  \t\tsetPosition(image, bounds.min);\r\n\r\n  \t\timage.style.width  = size.x + 'px';\r\n  \t\timage.style.height = size.y + 'px';\r\n  \t},\r\n\r\n  \t_updateOpacity: function () {\r\n  \t\tsetOpacity(this._image, this.options.opacity);\r\n  \t},\r\n\r\n  \t_updateZIndex: function () {\r\n  \t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n  \t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_overlayOnError: function () {\r\n  \t\t// @event error: Event\r\n  \t\t// Fired when the ImageOverlay layer fails to load its image\r\n  \t\tthis.fire('error');\r\n\r\n  \t\tvar errorUrl = this.options.errorOverlayUrl;\r\n  \t\tif (errorUrl && this._url !== errorUrl) {\r\n  \t\t\tthis._url = errorUrl;\r\n  \t\t\tthis._image.src = errorUrl;\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method getCenter(): LatLng\r\n  \t// Returns the center of the ImageOverlay.\r\n  \tgetCenter: function () {\r\n  \t\treturn this._bounds.getCenter();\r\n  \t}\r\n  });\r\n\r\n  // @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n  // Instantiates an image overlay object given the URL of the image and the\r\n  // geographical bounds it is tied to.\r\n  var imageOverlay = function (url, bounds, options) {\r\n  \treturn new ImageOverlay(url, bounds, options);\r\n  };\n\n  /*\r\n   * @class VideoOverlay\r\n   * @aka L.VideoOverlay\r\n   * @inherits ImageOverlay\r\n   *\r\n   * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n   *\r\n   * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n   * HTML5 element.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n   * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n   * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n   * ```\r\n   */\r\n\r\n  var VideoOverlay = ImageOverlay.extend({\r\n\r\n  \t// @section\r\n  \t// @aka VideoOverlay options\r\n  \toptions: {\r\n  \t\t// @option autoplay: Boolean = true\r\n  \t\t// Whether the video starts playing automatically when loaded.\r\n  \t\t// On some browsers autoplay will only work with `muted: true`\r\n  \t\tautoplay: true,\r\n\r\n  \t\t// @option loop: Boolean = true\r\n  \t\t// Whether the video will loop back to the beginning when played.\r\n  \t\tloop: true,\r\n\r\n  \t\t// @option keepAspectRatio: Boolean = true\r\n  \t\t// Whether the video will save aspect ratio after the projection.\r\n  \t\t// Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)\r\n  \t\tkeepAspectRatio: true,\r\n\r\n  \t\t// @option muted: Boolean = false\r\n  \t\t// Whether the video starts on mute when loaded.\r\n  \t\tmuted: false,\r\n\r\n  \t\t// @option playsInline: Boolean = true\r\n  \t\t// Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.\r\n  \t\tplaysInline: true\r\n  \t},\r\n\r\n  \t_initImage: function () {\r\n  \t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n  \t\tvar vid = this._image = wasElementSupplied ? this._url : create$1('video');\r\n\r\n  \t\taddClass(vid, 'leaflet-image-layer');\r\n  \t\tif (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); }\r\n  \t\tif (this.options.className) { addClass(vid, this.options.className); }\r\n\r\n  \t\tvid.onselectstart = falseFn;\r\n  \t\tvid.onmousemove = falseFn;\r\n\r\n  \t\t// @event load: Event\r\n  \t\t// Fired when the video has finished loading the first frame\r\n  \t\tvid.onloadeddata = bind(this.fire, this, 'load');\r\n\r\n  \t\tif (wasElementSupplied) {\r\n  \t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n  \t\t\tvar sources = [];\r\n  \t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n  \t\t\t\tsources.push(sourceElements[j].src);\r\n  \t\t\t}\r\n\r\n  \t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tif (!isArray(this._url)) { this._url = [this._url]; }\r\n\r\n  \t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n  \t\t\tvid.style['objectFit'] = 'fill';\r\n  \t\t}\r\n  \t\tvid.autoplay = !!this.options.autoplay;\r\n  \t\tvid.loop = !!this.options.loop;\r\n  \t\tvid.muted = !!this.options.muted;\r\n  \t\tvid.playsInline = !!this.options.playsInline;\r\n  \t\tfor (var i = 0; i < this._url.length; i++) {\r\n  \t\t\tvar source = create$1('source');\r\n  \t\t\tsource.src = this._url[i];\r\n  \t\t\tvid.appendChild(source);\r\n  \t\t}\r\n  \t}\r\n\r\n  \t// @method getElement(): HTMLVideoElement\r\n  \t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n  \t// used by this overlay.\r\n  });\r\n\r\n\r\n  // @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n  // Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n  // geographical bounds it is tied to.\r\n\r\n  function videoOverlay(video, bounds, options) {\r\n  \treturn new VideoOverlay(video, bounds, options);\r\n  }\n\n  /*\n   * @class SVGOverlay\n   * @aka L.SVGOverlay\n   * @inherits ImageOverlay\n   *\n   * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n   *\n   * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n   *\n   * @example\n   *\n   * ```js\n   * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n   * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n   * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n   * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n   * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n   * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n   * ```\n   */\n\n  var SVGOverlay = ImageOverlay.extend({\n  \t_initImage: function () {\n  \t\tvar el = this._image = this._url;\n\n  \t\taddClass(el, 'leaflet-image-layer');\n  \t\tif (this._zoomAnimated) { addClass(el, 'leaflet-zoom-animated'); }\n  \t\tif (this.options.className) { addClass(el, this.options.className); }\n\n  \t\tel.onselectstart = falseFn;\n  \t\tel.onmousemove = falseFn;\n  \t}\n\n  \t// @method getElement(): SVGElement\n  \t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n  \t// used by this overlay.\n  });\n\n\n  // @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n  // Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n  // A viewBox attribute is required on the SVG element to zoom in and out properly.\n\n  function svgOverlay(el, bounds, options) {\n  \treturn new SVGOverlay(el, bounds, options);\n  }\n\n  /*\r\n   * @class DivOverlay\r\n   * @inherits Interactive layer\r\n   * @aka L.DivOverlay\r\n   * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.\r\n   */\r\n\r\n  // @namespace DivOverlay\r\n  var DivOverlay = Layer.extend({\r\n\r\n  \t// @section\r\n  \t// @aka DivOverlay options\r\n  \toptions: {\r\n  \t\t// @option interactive: Boolean = false\r\n  \t\t// If true, the popup/tooltip will listen to the mouse events.\r\n  \t\tinteractive: false,\r\n\r\n  \t\t// @option offset: Point = Point(0, 0)\r\n  \t\t// The offset of the overlay position.\r\n  \t\toffset: [0, 0],\r\n\r\n  \t\t// @option className: String = ''\r\n  \t\t// A custom CSS class name to assign to the overlay.\r\n  \t\tclassName: '',\r\n\r\n  \t\t// @option pane: String = undefined\r\n  \t\t// `Map pane` where the overlay will be added.\r\n  \t\tpane: undefined,\r\n\r\n  \t\t// @option content: String|HTMLElement|Function = ''\r\n  \t\t// Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be\r\n  \t\t// passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n  \t\tcontent: ''\r\n  \t},\r\n\r\n  \tinitialize: function (options, source) {\r\n  \t\tif (options && (options instanceof LatLng || isArray(options))) {\r\n  \t\t\tthis._latlng = toLatLng(options);\r\n  \t\t\tsetOptions(this, source);\r\n  \t\t} else {\r\n  \t\t\tsetOptions(this, options);\r\n  \t\t\tthis._source = source;\r\n  \t\t}\r\n  \t\tif (this.options.content) {\r\n  \t\t\tthis._content = this.options.content;\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @method openOn(map: Map): this\r\n  \t// Adds the overlay to the map.\r\n  \t// Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.\r\n  \topenOn: function (map) {\r\n  \t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n  \t\tif (!map.hasLayer(this)) {\r\n  \t\t\tmap.addLayer(this);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method close(): this\r\n  \t// Closes the overlay.\r\n  \t// Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`\r\n  \t// and `layer.closePopup()`/`.closeTooltip()`.\r\n  \tclose: function () {\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._map.removeLayer(this);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method toggle(layer?: Layer): this\r\n  \t// Opens or closes the overlay bound to layer depending on its current state.\r\n  \t// Argument may be omitted only for overlay bound to layer.\r\n  \t// Alternative to `layer.togglePopup()`/`.toggleTooltip()`.\r\n  \ttoggle: function (layer) {\r\n  \t\tif (this._map) {\r\n  \t\t\tthis.close();\r\n  \t\t} else {\r\n  \t\t\tif (arguments.length) {\r\n  \t\t\t\tthis._source = layer;\r\n  \t\t\t} else {\r\n  \t\t\t\tlayer = this._source;\r\n  \t\t\t}\r\n  \t\t\tthis._prepareOpen();\r\n\r\n  \t\t\t// open the overlay on the map\r\n  \t\t\tthis.openOn(layer._map);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n  \t\tif (!this._container) {\r\n  \t\t\tthis._initLayout();\r\n  \t\t}\r\n\r\n  \t\tif (map._fadeAnimated) {\r\n  \t\t\tsetOpacity(this._container, 0);\r\n  \t\t}\r\n\r\n  \t\tclearTimeout(this._removeTimeout);\r\n  \t\tthis.getPane().appendChild(this._container);\r\n  \t\tthis.update();\r\n\r\n  \t\tif (map._fadeAnimated) {\r\n  \t\t\tsetOpacity(this._container, 1);\r\n  \t\t}\r\n\r\n  \t\tthis.bringToFront();\r\n\r\n  \t\tif (this.options.interactive) {\r\n  \t\t\taddClass(this._container, 'leaflet-interactive');\r\n  \t\t\tthis.addInteractiveTarget(this._container);\r\n  \t\t}\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tif (map._fadeAnimated) {\r\n  \t\t\tsetOpacity(this._container, 0);\r\n  \t\t\tthis._removeTimeout = setTimeout(bind(remove, undefined, this._container), 200);\r\n  \t\t} else {\r\n  \t\t\tremove(this._container);\r\n  \t\t}\r\n\r\n  \t\tif (this.options.interactive) {\r\n  \t\t\tremoveClass(this._container, 'leaflet-interactive');\r\n  \t\t\tthis.removeInteractiveTarget(this._container);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t// @namespace DivOverlay\r\n  \t// @method getLatLng: LatLng\r\n  \t// Returns the geographical point of the overlay.\r\n  \tgetLatLng: function () {\r\n  \t\treturn this._latlng;\r\n  \t},\r\n\r\n  \t// @method setLatLng(latlng: LatLng): this\r\n  \t// Sets the geographical point where the overlay will open.\r\n  \tsetLatLng: function (latlng) {\r\n  \t\tthis._latlng = toLatLng(latlng);\r\n  \t\tif (this._map) {\r\n  \t\t\tthis._updatePosition();\r\n  \t\t\tthis._adjustPan();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getContent: String|HTMLElement\r\n  \t// Returns the content of the overlay.\r\n  \tgetContent: function () {\r\n  \t\treturn this._content;\r\n  \t},\r\n\r\n  \t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n  \t// Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.\r\n  \t// The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n  \tsetContent: function (content) {\r\n  \t\tthis._content = content;\r\n  \t\tthis.update();\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getElement: String|HTMLElement\r\n  \t// Returns the HTML container of the overlay.\r\n  \tgetElement: function () {\r\n  \t\treturn this._container;\r\n  \t},\r\n\r\n  \t// @method update: null\r\n  \t// Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.\r\n  \tupdate: function () {\r\n  \t\tif (!this._map) { return; }\r\n\r\n  \t\tthis._container.style.visibility = 'hidden';\r\n\r\n  \t\tthis._updateContent();\r\n  \t\tthis._updateLayout();\r\n  \t\tthis._updatePosition();\r\n\r\n  \t\tthis._container.style.visibility = '';\r\n\r\n  \t\tthis._adjustPan();\r\n  \t},\r\n\r\n  \tgetEvents: function () {\r\n  \t\tvar events = {\r\n  \t\t\tzoom: this._updatePosition,\r\n  \t\t\tviewreset: this._updatePosition\r\n  \t\t};\r\n\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tevents.zoomanim = this._animateZoom;\r\n  \t\t}\r\n  \t\treturn events;\r\n  \t},\r\n\r\n  \t// @method isOpen: Boolean\r\n  \t// Returns `true` when the overlay is visible on the map.\r\n  \tisOpen: function () {\r\n  \t\treturn !!this._map && this._map.hasLayer(this);\r\n  \t},\r\n\r\n  \t// @method bringToFront: this\r\n  \t// Brings this overlay in front of other overlays (in the same map pane).\r\n  \tbringToFront: function () {\r\n  \t\tif (this._map) {\r\n  \t\t\ttoFront(this._container);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method bringToBack: this\r\n  \t// Brings this overlay to the back of other overlays (in the same map pane).\r\n  \tbringToBack: function () {\r\n  \t\tif (this._map) {\r\n  \t\t\ttoBack(this._container);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)\r\n  \t_prepareOpen: function (latlng) {\r\n  \t\tvar source = this._source;\r\n  \t\tif (!source._map) { return false; }\r\n\r\n  \t\tif (source instanceof FeatureGroup) {\r\n  \t\t\tsource = null;\r\n  \t\t\tvar layers = this._source._layers;\r\n  \t\t\tfor (var id in layers) {\r\n  \t\t\t\tif (layers[id]._map) {\r\n  \t\t\t\t\tsource = layers[id];\r\n  \t\t\t\t\tbreak;\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t\tif (!source) { return false; } // Unable to get source layer.\r\n\r\n  \t\t\t// set overlay source to this layer\r\n  \t\t\tthis._source = source;\r\n  \t\t}\r\n\r\n  \t\tif (!latlng) {\r\n  \t\t\tif (source.getCenter) {\r\n  \t\t\t\tlatlng = source.getCenter();\r\n  \t\t\t} else if (source.getLatLng) {\r\n  \t\t\t\tlatlng = source.getLatLng();\r\n  \t\t\t} else if (source.getBounds) {\r\n  \t\t\t\tlatlng = source.getBounds().getCenter();\r\n  \t\t\t} else {\r\n  \t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\tthis.setLatLng(latlng);\r\n\r\n  \t\tif (this._map) {\r\n  \t\t\t// update the overlay (content, layout, etc...)\r\n  \t\t\tthis.update();\r\n  \t\t}\r\n\r\n  \t\treturn true;\r\n  \t},\r\n\r\n  \t_updateContent: function () {\r\n  \t\tif (!this._content) { return; }\r\n\r\n  \t\tvar node = this._contentNode;\r\n  \t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n  \t\tif (typeof content === 'string') {\r\n  \t\t\tnode.innerHTML = content;\r\n  \t\t} else {\r\n  \t\t\twhile (node.hasChildNodes()) {\r\n  \t\t\t\tnode.removeChild(node.firstChild);\r\n  \t\t\t}\r\n  \t\t\tnode.appendChild(content);\r\n  \t\t}\r\n\r\n  \t\t// @namespace DivOverlay\r\n  \t\t// @section DivOverlay events\r\n  \t\t// @event contentupdate: Event\r\n  \t\t// Fired when the content of the overlay is updated\r\n  \t\tthis.fire('contentupdate');\r\n  \t},\r\n\r\n  \t_updatePosition: function () {\r\n  \t\tif (!this._map) { return; }\r\n\r\n  \t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n  \t\t    offset = toPoint(this.options.offset),\r\n  \t\t    anchor = this._getAnchor();\r\n\r\n  \t\tif (this._zoomAnimated) {\r\n  \t\t\tsetPosition(this._container, pos.add(anchor));\r\n  \t\t} else {\r\n  \t\t\toffset = offset.add(pos).add(anchor);\r\n  \t\t}\r\n\r\n  \t\tvar bottom = this._containerBottom = -offset.y,\r\n  \t\t    left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n  \t\t// bottom position the overlay in case the height of the overlay changes (images loading etc)\r\n  \t\tthis._container.style.bottom = bottom + 'px';\r\n  \t\tthis._container.style.left = left + 'px';\r\n  \t},\r\n\r\n  \t_getAnchor: function () {\r\n  \t\treturn [0, 0];\r\n  \t}\r\n\r\n  });\r\n\r\n  Map.include({\r\n  \t_initOverlay: function (OverlayClass, content, latlng, options) {\r\n  \t\tvar overlay = content;\r\n  \t\tif (!(overlay instanceof OverlayClass)) {\r\n  \t\t\toverlay = new OverlayClass(options).setContent(content);\r\n  \t\t}\r\n  \t\tif (latlng) {\r\n  \t\t\toverlay.setLatLng(latlng);\r\n  \t\t}\r\n  \t\treturn overlay;\r\n  \t}\r\n  });\r\n\r\n\r\n  Layer.include({\r\n  \t_initOverlay: function (OverlayClass, old, content, options) {\r\n  \t\tvar overlay = content;\r\n  \t\tif (overlay instanceof OverlayClass) {\r\n  \t\t\tsetOptions(overlay, options);\r\n  \t\t\toverlay._source = this;\r\n  \t\t} else {\r\n  \t\t\toverlay = (old && !options) ? old : new OverlayClass(options, this);\r\n  \t\t\toverlay.setContent(content);\r\n  \t\t}\r\n  \t\treturn overlay;\r\n  \t}\r\n  });\n\n  /*\r\n   * @class Popup\r\n   * @inherits DivOverlay\r\n   * @aka L.Popup\r\n   * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n   * open popups while making sure that only one popup is open at one time\r\n   * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n   *\r\n   * @example\r\n   *\r\n   * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n   *\r\n   * ```js\r\n   * marker.bindPopup(popupContent).openPopup();\r\n   * ```\r\n   * Path overlays like polylines also have a `bindPopup` method.\r\n   *\r\n   * A popup can be also standalone:\r\n   *\r\n   * ```js\r\n   * var popup = L.popup()\r\n   * \t.setLatLng(latlng)\r\n   * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n   * \t.openOn(map);\r\n   * ```\r\n   * or\r\n   * ```js\r\n   * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')\r\n   * \t.openOn(map);\r\n   * ```\r\n   */\r\n\r\n\r\n  // @namespace Popup\r\n  var Popup = DivOverlay.extend({\r\n\r\n  \t// @section\r\n  \t// @aka Popup options\r\n  \toptions: {\r\n  \t\t// @option pane: String = 'popupPane'\r\n  \t\t// `Map pane` where the popup will be added.\r\n  \t\tpane: 'popupPane',\r\n\r\n  \t\t// @option offset: Point = Point(0, 7)\r\n  \t\t// The offset of the popup position.\r\n  \t\toffset: [0, 7],\r\n\r\n  \t\t// @option maxWidth: Number = 300\r\n  \t\t// Max width of the popup, in pixels.\r\n  \t\tmaxWidth: 300,\r\n\r\n  \t\t// @option minWidth: Number = 50\r\n  \t\t// Min width of the popup, in pixels.\r\n  \t\tminWidth: 50,\r\n\r\n  \t\t// @option maxHeight: Number = null\r\n  \t\t// If set, creates a scrollable container of the given height\r\n  \t\t// inside a popup if its content exceeds it.\r\n  \t\t// The scrollable container can be styled using the\r\n  \t\t// `leaflet-popup-scrolled` CSS class selector.\r\n  \t\tmaxHeight: null,\r\n\r\n  \t\t// @option autoPan: Boolean = true\r\n  \t\t// Set it to `false` if you don't want the map to do panning animation\r\n  \t\t// to fit the opened popup.\r\n  \t\tautoPan: true,\r\n\r\n  \t\t// @option autoPanPaddingTopLeft: Point = null\r\n  \t\t// The margin between the popup and the top left corner of the map\r\n  \t\t// view after autopanning was performed.\r\n  \t\tautoPanPaddingTopLeft: null,\r\n\r\n  \t\t// @option autoPanPaddingBottomRight: Point = null\r\n  \t\t// The margin between the popup and the bottom right corner of the map\r\n  \t\t// view after autopanning was performed.\r\n  \t\tautoPanPaddingBottomRight: null,\r\n\r\n  \t\t// @option autoPanPadding: Point = Point(5, 5)\r\n  \t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n  \t\tautoPanPadding: [5, 5],\r\n\r\n  \t\t// @option keepInView: Boolean = false\r\n  \t\t// Set it to `true` if you want to prevent users from panning the popup\r\n  \t\t// off of the screen while it is open.\r\n  \t\tkeepInView: false,\r\n\r\n  \t\t// @option closeButton: Boolean = true\r\n  \t\t// Controls the presence of a close button in the popup.\r\n  \t\tcloseButton: true,\r\n\r\n  \t\t// @option autoClose: Boolean = true\r\n  \t\t// Set it to `false` if you want to override the default behavior of\r\n  \t\t// the popup closing when another popup is opened.\r\n  \t\tautoClose: true,\r\n\r\n  \t\t// @option closeOnEscapeKey: Boolean = true\r\n  \t\t// Set it to `false` if you want to override the default behavior of\r\n  \t\t// the ESC key for closing of the popup.\r\n  \t\tcloseOnEscapeKey: true,\r\n\r\n  \t\t// @option closeOnClick: Boolean = *\r\n  \t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n  \t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n  \t\t// @option className: String = ''\r\n  \t\t// A custom CSS class name to assign to the popup.\r\n  \t\tclassName: ''\r\n  \t},\r\n\r\n  \t// @namespace Popup\r\n  \t// @method openOn(map: Map): this\r\n  \t// Alternative to `map.openPopup(popup)`.\r\n  \t// Adds the popup to the map and closes the previous one.\r\n  \topenOn: function (map) {\r\n  \t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\r\n  \t\tif (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {\r\n  \t\t\tmap.removeLayer(map._popup);\r\n  \t\t}\r\n  \t\tmap._popup = this;\r\n\r\n  \t\treturn DivOverlay.prototype.openOn.call(this, map);\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n  \t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n  \t\t// @namespace Map\r\n  \t\t// @section Popup events\r\n  \t\t// @event popupopen: PopupEvent\r\n  \t\t// Fired when a popup is opened in the map\r\n  \t\tmap.fire('popupopen', {popup: this});\r\n\r\n  \t\tif (this._source) {\r\n  \t\t\t// @namespace Layer\r\n  \t\t\t// @section Popup events\r\n  \t\t\t// @event popupopen: PopupEvent\r\n  \t\t\t// Fired when a popup bound to this layer is opened\r\n  \t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n  \t\t\t// For non-path layers, we toggle the popup when clicking\r\n  \t\t\t// again the layer, so prevent the map to reopen it.\r\n  \t\t\tif (!(this._source instanceof Path)) {\r\n  \t\t\t\tthis._source.on('preclick', stopPropagation);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \tonRemove: function (map) {\r\n  \t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n  \t\t// @namespace Map\r\n  \t\t// @section Popup events\r\n  \t\t// @event popupclose: PopupEvent\r\n  \t\t// Fired when a popup in the map is closed\r\n  \t\tmap.fire('popupclose', {popup: this});\r\n\r\n  \t\tif (this._source) {\r\n  \t\t\t// @namespace Layer\r\n  \t\t\t// @section Popup events\r\n  \t\t\t// @event popupclose: PopupEvent\r\n  \t\t\t// Fired when a popup bound to this layer is closed\r\n  \t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n  \t\t\tif (!(this._source instanceof Path)) {\r\n  \t\t\t\tthis._source.off('preclick', stopPropagation);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \tgetEvents: function () {\r\n  \t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n  \t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n  \t\t\tevents.preclick = this.close;\r\n  \t\t}\r\n\r\n  \t\tif (this.options.keepInView) {\r\n  \t\t\tevents.moveend = this._adjustPan;\r\n  \t\t}\r\n\r\n  \t\treturn events;\r\n  \t},\r\n\r\n  \t_initLayout: function () {\r\n  \t\tvar prefix = 'leaflet-popup',\r\n  \t\t    container = this._container = create$1('div',\r\n  \t\t\tprefix + ' ' + (this.options.className || '') +\r\n  \t\t\t' leaflet-zoom-animated');\r\n\r\n  \t\tvar wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container);\r\n  \t\tthis._contentNode = create$1('div', prefix + '-content', wrapper);\r\n\r\n  \t\tdisableClickPropagation(container);\r\n  \t\tdisableScrollPropagation(this._contentNode);\r\n  \t\ton(container, 'contextmenu', stopPropagation);\r\n\r\n  \t\tthis._tipContainer = create$1('div', prefix + '-tip-container', container);\r\n  \t\tthis._tip = create$1('div', prefix + '-tip', this._tipContainer);\r\n\r\n  \t\tif (this.options.closeButton) {\r\n  \t\t\tvar closeButton = this._closeButton = create$1('a', prefix + '-close-button', container);\r\n  \t\t\tcloseButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399\r\n  \t\t\tcloseButton.setAttribute('aria-label', 'Close popup');\r\n  \t\t\tcloseButton.href = '#close';\r\n  \t\t\tcloseButton.innerHTML = '<span aria-hidden=\"true\">&#215;</span>';\r\n\r\n  \t\t\ton(closeButton, 'click', function (ev) {\r\n  \t\t\t\tpreventDefault(ev);\r\n  \t\t\t\tthis.close();\r\n  \t\t\t}, this);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_updateLayout: function () {\r\n  \t\tvar container = this._contentNode,\r\n  \t\t    style = container.style;\r\n\r\n  \t\tstyle.width = '';\r\n  \t\tstyle.whiteSpace = 'nowrap';\r\n\r\n  \t\tvar width = container.offsetWidth;\r\n  \t\twidth = Math.min(width, this.options.maxWidth);\r\n  \t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n  \t\tstyle.width = (width + 1) + 'px';\r\n  \t\tstyle.whiteSpace = '';\r\n\r\n  \t\tstyle.height = '';\r\n\r\n  \t\tvar height = container.offsetHeight,\r\n  \t\t    maxHeight = this.options.maxHeight,\r\n  \t\t    scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n  \t\tif (maxHeight && height > maxHeight) {\r\n  \t\t\tstyle.height = maxHeight + 'px';\r\n  \t\t\taddClass(container, scrolledClass);\r\n  \t\t} else {\r\n  \t\t\tremoveClass(container, scrolledClass);\r\n  \t\t}\r\n\r\n  \t\tthis._containerWidth = this._container.offsetWidth;\r\n  \t},\r\n\r\n  \t_animateZoom: function (e) {\r\n  \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n  \t\t    anchor = this._getAnchor();\r\n  \t\tsetPosition(this._container, pos.add(anchor));\r\n  \t},\r\n\r\n  \t_adjustPan: function () {\r\n  \t\tif (!this.options.autoPan) { return; }\r\n  \t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n  \t\t// We can endlessly recurse if keepInView is set and the view resets.\r\n  \t\t// Let's guard against that by exiting early if we're responding to our own autopan.\r\n  \t\tif (this._autopanning) {\r\n  \t\t\tthis._autopanning = false;\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\tvar map = this._map,\r\n  \t\t    marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0,\r\n  \t\t    containerHeight = this._container.offsetHeight + marginBottom,\r\n  \t\t    containerWidth = this._containerWidth,\r\n  \t\t    layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n  \t\tlayerPos._add(getPosition(this._container));\r\n\r\n  \t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n  \t\t    padding = toPoint(this.options.autoPanPadding),\r\n  \t\t    paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n  \t\t    paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n  \t\t    size = map.getSize(),\r\n  \t\t    dx = 0,\r\n  \t\t    dy = 0;\r\n\r\n  \t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n  \t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n  \t\t}\r\n  \t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n  \t\t\tdx = containerPos.x - paddingTL.x;\r\n  \t\t}\r\n  \t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n  \t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n  \t\t}\r\n  \t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n  \t\t\tdy = containerPos.y - paddingTL.y;\r\n  \t\t}\r\n\r\n  \t\t// @namespace Map\r\n  \t\t// @section Popup events\r\n  \t\t// @event autopanstart: Event\r\n  \t\t// Fired when the map starts autopanning when opening a popup.\r\n  \t\tif (dx || dy) {\r\n  \t\t\t// Track that we're autopanning, as this function will be re-ran on moveend\r\n  \t\t\tif (this.options.keepInView) {\r\n  \t\t\t\tthis._autopanning = true;\r\n  \t\t\t}\r\n\r\n  \t\t\tmap\r\n  \t\t\t    .fire('autopanstart')\r\n  \t\t\t    .panBy([dx, dy]);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_getAnchor: function () {\r\n  \t\t// Where should we anchor the popup on the source layer?\r\n  \t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n  \t}\r\n\r\n  });\r\n\r\n  // @namespace Popup\r\n  // @factory L.popup(options?: Popup options, source?: Layer)\r\n  // Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\n  // @alternative\r\n  // @factory L.popup(latlng: LatLng, options?: Popup options)\r\n  // Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.\r\n  var popup = function (options, source) {\r\n  \treturn new Popup(options, source);\r\n  };\r\n\r\n\r\n  /* @namespace Map\r\n   * @section Interaction Options\r\n   * @option closePopupOnClick: Boolean = true\r\n   * Set it to `false` if you don't want popups to close when user clicks the map.\r\n   */\r\n  Map.mergeOptions({\r\n  \tclosePopupOnClick: true\r\n  });\r\n\r\n\r\n  // @namespace Map\r\n  // @section Methods for Layers and Controls\r\n  Map.include({\r\n  \t// @method openPopup(popup: Popup): this\r\n  \t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n  \t// @alternative\r\n  \t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n  \t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n  \topenPopup: function (popup, latlng, options) {\r\n  \t\tthis._initOverlay(Popup, popup, latlng, options)\r\n  \t\t  .openOn(this);\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method closePopup(popup?: Popup): this\r\n  \t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n  \tclosePopup: function (popup) {\r\n  \t\tpopup = arguments.length ? popup : this._popup;\r\n  \t\tif (popup) {\r\n  \t\t\tpopup.close();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t}\r\n  });\r\n\r\n  /*\r\n   * @namespace Layer\r\n   * @section Popup methods example\r\n   *\r\n   * All layers share a set of methods convenient for binding popups to it.\r\n   *\r\n   * ```js\r\n   * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n   * layer.openPopup();\r\n   * layer.closePopup();\r\n   * ```\r\n   *\r\n   * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n   */\r\n\r\n  // @section Popup methods\r\n  Layer.include({\r\n\r\n  \t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n  \t// Binds a popup to the layer with the passed `content` and sets up the\r\n  \t// necessary event listeners. If a `Function` is passed it will receive\r\n  \t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n  \tbindPopup: function (content, options) {\r\n  \t\tthis._popup = this._initOverlay(Popup, this._popup, content, options);\r\n  \t\tif (!this._popupHandlersAdded) {\r\n  \t\t\tthis.on({\r\n  \t\t\t\tclick: this._openPopup,\r\n  \t\t\t\tkeypress: this._onKeyPress,\r\n  \t\t\t\tremove: this.closePopup,\r\n  \t\t\t\tmove: this._movePopup\r\n  \t\t\t});\r\n  \t\t\tthis._popupHandlersAdded = true;\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method unbindPopup(): this\r\n  \t// Removes the popup previously bound with `bindPopup`.\r\n  \tunbindPopup: function () {\r\n  \t\tif (this._popup) {\r\n  \t\t\tthis.off({\r\n  \t\t\t\tclick: this._openPopup,\r\n  \t\t\t\tkeypress: this._onKeyPress,\r\n  \t\t\t\tremove: this.closePopup,\r\n  \t\t\t\tmove: this._movePopup\r\n  \t\t\t});\r\n  \t\t\tthis._popupHandlersAdded = false;\r\n  \t\t\tthis._popup = null;\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method openPopup(latlng?: LatLng): this\r\n  \t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n  \topenPopup: function (latlng) {\r\n  \t\tif (this._popup) {\r\n  \t\t\tif (!(this instanceof FeatureGroup)) {\r\n  \t\t\t\tthis._popup._source = this;\r\n  \t\t\t}\r\n  \t\t\tif (this._popup._prepareOpen(latlng || this._latlng)) {\r\n  \t\t\t\t// open the popup on the map\r\n  \t\t\t\tthis._popup.openOn(this._map);\r\n  \t\t\t}\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method closePopup(): this\r\n  \t// Closes the popup bound to this layer if it is open.\r\n  \tclosePopup: function () {\r\n  \t\tif (this._popup) {\r\n  \t\t\tthis._popup.close();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method togglePopup(): this\r\n  \t// Opens or closes the popup bound to this layer depending on its current state.\r\n  \ttogglePopup: function () {\r\n  \t\tif (this._popup) {\r\n  \t\t\tthis._popup.toggle(this);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method isPopupOpen(): boolean\r\n  \t// Returns `true` if the popup bound to this layer is currently open.\r\n  \tisPopupOpen: function () {\r\n  \t\treturn (this._popup ? this._popup.isOpen() : false);\r\n  \t},\r\n\r\n  \t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n  \t// Sets the content of the popup bound to this layer.\r\n  \tsetPopupContent: function (content) {\r\n  \t\tif (this._popup) {\r\n  \t\t\tthis._popup.setContent(content);\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method getPopup(): Popup\r\n  \t// Returns the popup bound to this layer.\r\n  \tgetPopup: function () {\r\n  \t\treturn this._popup;\r\n  \t},\r\n\r\n  \t_openPopup: function (e) {\r\n  \t\tif (!this._popup || !this._map) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n  \t\t// prevent map click\r\n  \t\tstop(e);\r\n\r\n  \t\tvar target = e.layer || e.target;\r\n  \t\tif (this._popup._source === target && !(target instanceof Path)) {\r\n  \t\t\t// treat it like a marker and figure out\r\n  \t\t\t// if we should toggle it open/closed\r\n  \t\t\tif (this._map.hasLayer(this._popup)) {\r\n  \t\t\t\tthis.closePopup();\r\n  \t\t\t} else {\r\n  \t\t\t\tthis.openPopup(e.latlng);\r\n  \t\t\t}\r\n  \t\t\treturn;\r\n  \t\t}\r\n  \t\tthis._popup._source = target;\r\n  \t\tthis.openPopup(e.latlng);\r\n  \t},\r\n\r\n  \t_movePopup: function (e) {\r\n  \t\tthis._popup.setLatLng(e.latlng);\r\n  \t},\r\n\r\n  \t_onKeyPress: function (e) {\r\n  \t\tif (e.originalEvent.keyCode === 13) {\r\n  \t\t\tthis._openPopup(e);\r\n  \t\t}\r\n  \t}\r\n  });\n\n  /*\n   * @class Tooltip\n   * @inherits DivOverlay\n   * @aka L.Tooltip\n   * Used to display small texts on top of map layers.\n   *\n   * @example\n   * If you want to just bind a tooltip to marker:\n   *\n   * ```js\n   * marker.bindTooltip(\"my tooltip text\").openTooltip();\n   * ```\n   * Path overlays like polylines also have a `bindTooltip` method.\n   *\n   * A tooltip can be also standalone:\n   *\n   * ```js\n   * var tooltip = L.tooltip()\n   * \t.setLatLng(latlng)\n   * \t.setContent('Hello world!<br />This is a nice tooltip.')\n   * \t.addTo(map);\n   * ```\n   * or\n   * ```js\n   * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})\n   * \t.addTo(map);\n   * ```\n   *\n   *\n   * Note about tooltip offset. Leaflet takes two options in consideration\n   * for computing tooltip offsetting:\n   * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n   *   Add a positive x offset to move the tooltip to the right, and a positive y offset to\n   *   move it to the bottom. Negatives will move to the left and top.\n   * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n   *   should adapt this value if you use a custom icon.\n   */\n\n\n  // @namespace Tooltip\n  var Tooltip = DivOverlay.extend({\n\n  \t// @section\n  \t// @aka Tooltip options\n  \toptions: {\n  \t\t// @option pane: String = 'tooltipPane'\n  \t\t// `Map pane` where the tooltip will be added.\n  \t\tpane: 'tooltipPane',\n\n  \t\t// @option offset: Point = Point(0, 0)\n  \t\t// Optional offset of the tooltip position.\n  \t\toffset: [0, 0],\n\n  \t\t// @option direction: String = 'auto'\n  \t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n  \t\t// `top`, `bottom`, `center`, `auto`.\n  \t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n  \t\t// position on the map.\n  \t\tdirection: 'auto',\n\n  \t\t// @option permanent: Boolean = false\n  \t\t// Whether to open the tooltip permanently or only on mouseover.\n  \t\tpermanent: false,\n\n  \t\t// @option sticky: Boolean = false\n  \t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n  \t\tsticky: false,\n\n  \t\t// @option opacity: Number = 0.9\n  \t\t// Tooltip container opacity.\n  \t\topacity: 0.9\n  \t},\n\n  \tonAdd: function (map) {\n  \t\tDivOverlay.prototype.onAdd.call(this, map);\n  \t\tthis.setOpacity(this.options.opacity);\n\n  \t\t// @namespace Map\n  \t\t// @section Tooltip events\n  \t\t// @event tooltipopen: TooltipEvent\n  \t\t// Fired when a tooltip is opened in the map.\n  \t\tmap.fire('tooltipopen', {tooltip: this});\n\n  \t\tif (this._source) {\n  \t\t\tthis.addEventParent(this._source);\n\n  \t\t\t// @namespace Layer\n  \t\t\t// @section Tooltip events\n  \t\t\t// @event tooltipopen: TooltipEvent\n  \t\t\t// Fired when a tooltip bound to this layer is opened.\n  \t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n  \t\t}\n  \t},\n\n  \tonRemove: function (map) {\n  \t\tDivOverlay.prototype.onRemove.call(this, map);\n\n  \t\t// @namespace Map\n  \t\t// @section Tooltip events\n  \t\t// @event tooltipclose: TooltipEvent\n  \t\t// Fired when a tooltip in the map is closed.\n  \t\tmap.fire('tooltipclose', {tooltip: this});\n\n  \t\tif (this._source) {\n  \t\t\tthis.removeEventParent(this._source);\n\n  \t\t\t// @namespace Layer\n  \t\t\t// @section Tooltip events\n  \t\t\t// @event tooltipclose: TooltipEvent\n  \t\t\t// Fired when a tooltip bound to this layer is closed.\n  \t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n  \t\t}\n  \t},\n\n  \tgetEvents: function () {\n  \t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n  \t\tif (!this.options.permanent) {\n  \t\t\tevents.preclick = this.close;\n  \t\t}\n\n  \t\treturn events;\n  \t},\n\n  \t_initLayout: function () {\n  \t\tvar prefix = 'leaflet-tooltip',\n  \t\t    className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n  \t\tthis._contentNode = this._container = create$1('div', className);\n\n  \t\tthis._container.setAttribute('role', 'tooltip');\n  \t\tthis._container.setAttribute('id', 'leaflet-tooltip-' + stamp(this));\n  \t},\n\n  \t_updateLayout: function () {},\n\n  \t_adjustPan: function () {},\n\n  \t_setPosition: function (pos) {\n  \t\tvar subX, subY,\n  \t\t    map = this._map,\n  \t\t    container = this._container,\n  \t\t    centerPoint = map.latLngToContainerPoint(map.getCenter()),\n  \t\t    tooltipPoint = map.layerPointToContainerPoint(pos),\n  \t\t    direction = this.options.direction,\n  \t\t    tooltipWidth = container.offsetWidth,\n  \t\t    tooltipHeight = container.offsetHeight,\n  \t\t    offset = toPoint(this.options.offset),\n  \t\t    anchor = this._getAnchor();\n\n  \t\tif (direction === 'top') {\n  \t\t\tsubX = tooltipWidth / 2;\n  \t\t\tsubY = tooltipHeight;\n  \t\t} else if (direction === 'bottom') {\n  \t\t\tsubX = tooltipWidth / 2;\n  \t\t\tsubY = 0;\n  \t\t} else if (direction === 'center') {\n  \t\t\tsubX = tooltipWidth / 2;\n  \t\t\tsubY = tooltipHeight / 2;\n  \t\t} else if (direction === 'right') {\n  \t\t\tsubX = 0;\n  \t\t\tsubY = tooltipHeight / 2;\n  \t\t} else if (direction === 'left') {\n  \t\t\tsubX = tooltipWidth;\n  \t\t\tsubY = tooltipHeight / 2;\n  \t\t} else if (tooltipPoint.x < centerPoint.x) {\n  \t\t\tdirection = 'right';\n  \t\t\tsubX = 0;\n  \t\t\tsubY = tooltipHeight / 2;\n  \t\t} else {\n  \t\t\tdirection = 'left';\n  \t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n  \t\t\tsubY = tooltipHeight / 2;\n  \t\t}\n\n  \t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n  \t\tremoveClass(container, 'leaflet-tooltip-right');\n  \t\tremoveClass(container, 'leaflet-tooltip-left');\n  \t\tremoveClass(container, 'leaflet-tooltip-top');\n  \t\tremoveClass(container, 'leaflet-tooltip-bottom');\n  \t\taddClass(container, 'leaflet-tooltip-' + direction);\n  \t\tsetPosition(container, pos);\n  \t},\n\n  \t_updatePosition: function () {\n  \t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n  \t\tthis._setPosition(pos);\n  \t},\n\n  \tsetOpacity: function (opacity) {\n  \t\tthis.options.opacity = opacity;\n\n  \t\tif (this._container) {\n  \t\t\tsetOpacity(this._container, opacity);\n  \t\t}\n  \t},\n\n  \t_animateZoom: function (e) {\n  \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n  \t\tthis._setPosition(pos);\n  \t},\n\n  \t_getAnchor: function () {\n  \t\t// Where should we anchor the tooltip on the source layer?\n  \t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n  \t}\n\n  });\n\n  // @namespace Tooltip\n  // @factory L.tooltip(options?: Tooltip options, source?: Layer)\n  // Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\n  // @alternative\n  // @factory L.tooltip(latlng: LatLng, options?: Tooltip options)\n  // Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.\n  var tooltip = function (options, source) {\n  \treturn new Tooltip(options, source);\n  };\n\n  // @namespace Map\n  // @section Methods for Layers and Controls\n  Map.include({\n\n  \t// @method openTooltip(tooltip: Tooltip): this\n  \t// Opens the specified tooltip.\n  \t// @alternative\n  \t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n  \t// Creates a tooltip with the specified content and options and open it.\n  \topenTooltip: function (tooltip, latlng, options) {\n  \t\tthis._initOverlay(Tooltip, tooltip, latlng, options)\n  \t\t  .openOn(this);\n\n  \t\treturn this;\n  \t},\n\n  \t// @method closeTooltip(tooltip: Tooltip): this\n  \t// Closes the tooltip given as parameter.\n  \tcloseTooltip: function (tooltip) {\n  \t\ttooltip.close();\n  \t\treturn this;\n  \t}\n\n  });\n\n  /*\n   * @namespace Layer\n   * @section Tooltip methods example\n   *\n   * All layers share a set of methods convenient for binding tooltips to it.\n   *\n   * ```js\n   * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n   * layer.openTooltip();\n   * layer.closeTooltip();\n   * ```\n   */\n\n  // @section Tooltip methods\n  Layer.include({\n\n  \t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n  \t// Binds a tooltip to the layer with the passed `content` and sets up the\n  \t// necessary event listeners. If a `Function` is passed it will receive\n  \t// the layer as the first argument and should return a `String` or `HTMLElement`.\n  \tbindTooltip: function (content, options) {\n\n  \t\tif (this._tooltip && this.isTooltipOpen()) {\n  \t\t\tthis.unbindTooltip();\n  \t\t}\n\n  \t\tthis._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);\n  \t\tthis._initTooltipInteractions();\n\n  \t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n  \t\t\tthis.openTooltip();\n  \t\t}\n\n  \t\treturn this;\n  \t},\n\n  \t// @method unbindTooltip(): this\n  \t// Removes the tooltip previously bound with `bindTooltip`.\n  \tunbindTooltip: function () {\n  \t\tif (this._tooltip) {\n  \t\t\tthis._initTooltipInteractions(true);\n  \t\t\tthis.closeTooltip();\n  \t\t\tthis._tooltip = null;\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t_initTooltipInteractions: function (remove) {\n  \t\tif (!remove && this._tooltipHandlersAdded) { return; }\n  \t\tvar onOff = remove ? 'off' : 'on',\n  \t\t    events = {\n  \t\t\tremove: this.closeTooltip,\n  \t\t\tmove: this._moveTooltip\n  \t\t    };\n  \t\tif (!this._tooltip.options.permanent) {\n  \t\t\tevents.mouseover = this._openTooltip;\n  \t\t\tevents.mouseout = this.closeTooltip;\n  \t\t\tevents.click = this._openTooltip;\n  \t\t\tif (this._map) {\n  \t\t\t\tthis._addFocusListeners();\n  \t\t\t} else {\n  \t\t\t\tevents.add = this._addFocusListeners;\n  \t\t\t}\n  \t\t} else {\n  \t\t\tevents.add = this._openTooltip;\n  \t\t}\n  \t\tif (this._tooltip.options.sticky) {\n  \t\t\tevents.mousemove = this._moveTooltip;\n  \t\t}\n  \t\tthis[onOff](events);\n  \t\tthis._tooltipHandlersAdded = !remove;\n  \t},\n\n  \t// @method openTooltip(latlng?: LatLng): this\n  \t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n  \topenTooltip: function (latlng) {\n  \t\tif (this._tooltip) {\n  \t\t\tif (!(this instanceof FeatureGroup)) {\n  \t\t\t\tthis._tooltip._source = this;\n  \t\t\t}\n  \t\t\tif (this._tooltip._prepareOpen(latlng)) {\n  \t\t\t\t// open the tooltip on the map\n  \t\t\t\tthis._tooltip.openOn(this._map);\n\n  \t\t\t\tif (this.getElement) {\n  \t\t\t\t\tthis._setAriaDescribedByOnLayer(this);\n  \t\t\t\t} else if (this.eachLayer) {\n  \t\t\t\t\tthis.eachLayer(this._setAriaDescribedByOnLayer, this);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method closeTooltip(): this\n  \t// Closes the tooltip bound to this layer if it is open.\n  \tcloseTooltip: function () {\n  \t\tif (this._tooltip) {\n  \t\t\treturn this._tooltip.close();\n  \t\t}\n  \t},\n\n  \t// @method toggleTooltip(): this\n  \t// Opens or closes the tooltip bound to this layer depending on its current state.\n  \ttoggleTooltip: function () {\n  \t\tif (this._tooltip) {\n  \t\t\tthis._tooltip.toggle(this);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method isTooltipOpen(): boolean\n  \t// Returns `true` if the tooltip bound to this layer is currently open.\n  \tisTooltipOpen: function () {\n  \t\treturn this._tooltip.isOpen();\n  \t},\n\n  \t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n  \t// Sets the content of the tooltip bound to this layer.\n  \tsetTooltipContent: function (content) {\n  \t\tif (this._tooltip) {\n  \t\t\tthis._tooltip.setContent(content);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method getTooltip(): Tooltip\n  \t// Returns the tooltip bound to this layer.\n  \tgetTooltip: function () {\n  \t\treturn this._tooltip;\n  \t},\n\n  \t_addFocusListeners: function () {\n  \t\tif (this.getElement) {\n  \t\t\tthis._addFocusListenersOnLayer(this);\n  \t\t} else if (this.eachLayer) {\n  \t\t\tthis.eachLayer(this._addFocusListenersOnLayer, this);\n  \t\t}\n  \t},\n\n  \t_addFocusListenersOnLayer: function (layer) {\n  \t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n  \t\tif (el) {\n  \t\t\ton(el, 'focus', function () {\n  \t\t\t\tthis._tooltip._source = layer;\n  \t\t\t\tthis.openTooltip();\n  \t\t\t}, this);\n  \t\t\ton(el, 'blur', this.closeTooltip, this);\n  \t\t}\n  \t},\n\n  \t_setAriaDescribedByOnLayer: function (layer) {\n  \t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n  \t\tif (el) {\n  \t\t\tel.setAttribute('aria-describedby', this._tooltip._container.id);\n  \t\t}\n  \t},\n\n\n  \t_openTooltip: function (e) {\n  \t\tif (!this._tooltip || !this._map) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\t// If the map is moving, we will show the tooltip after it's done.\n  \t\tif (this._map.dragging && this._map.dragging.moving() && !this._openOnceFlag) {\n  \t\t\tthis._openOnceFlag = true;\n  \t\t\tvar that = this;\n  \t\t\tthis._map.once('moveend', function () {\n  \t\t\t\tthat._openOnceFlag = false;\n  \t\t\t\tthat._openTooltip(e);\n  \t\t\t});\n  \t\t\treturn;\n  \t\t}\n\n  \t\tthis._tooltip._source = e.layer || e.target;\n\n  \t\tthis.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);\n  \t},\n\n  \t_moveTooltip: function (e) {\n  \t\tvar latlng = e.latlng, containerPoint, layerPoint;\n  \t\tif (this._tooltip.options.sticky && e.originalEvent) {\n  \t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n  \t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n  \t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n  \t\t}\n  \t\tthis._tooltip.setLatLng(latlng);\n  \t}\n  });\n\n  /*\n   * @class DivIcon\n   * @aka L.DivIcon\n   * @inherits Icon\n   *\n   * Represents a lightweight icon for markers that uses a simple `<div>`\n   * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n   *\n   * @example\n   * ```js\n   * var myIcon = L.divIcon({className: 'my-div-icon'});\n   * // you can set .my-div-icon styles in CSS\n   *\n   * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n   * ```\n   *\n   * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n   */\n\n  var DivIcon = Icon.extend({\n  \toptions: {\n  \t\t// @section\n  \t\t// @aka DivIcon options\n  \t\ticonSize: [12, 12], // also can be set through CSS\n\n  \t\t// iconAnchor: (Point),\n  \t\t// popupAnchor: (Point),\n\n  \t\t// @option html: String|HTMLElement = ''\n  \t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n  \t\t// an instance of `HTMLElement`.\n  \t\thtml: false,\n\n  \t\t// @option bgPos: Point = [0, 0]\n  \t\t// Optional relative position of the background, in pixels\n  \t\tbgPos: null,\n\n  \t\tclassName: 'leaflet-div-icon'\n  \t},\n\n  \tcreateIcon: function (oldIcon) {\n  \t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n  \t\t    options = this.options;\n\n  \t\tif (options.html instanceof Element) {\n  \t\t\tempty(div);\n  \t\t\tdiv.appendChild(options.html);\n  \t\t} else {\n  \t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n  \t\t}\n\n  \t\tif (options.bgPos) {\n  \t\t\tvar bgPos = toPoint(options.bgPos);\n  \t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n  \t\t}\n  \t\tthis._setIconStyles(div, 'icon');\n\n  \t\treturn div;\n  \t},\n\n  \tcreateShadow: function () {\n  \t\treturn null;\n  \t}\n  });\n\n  // @factory L.divIcon(options: DivIcon options)\n  // Creates a `DivIcon` instance with the given options.\n  function divIcon(options) {\n  \treturn new DivIcon(options);\n  }\n\n  Icon.Default = IconDefault;\n\n  /*\n   * @class GridLayer\n   * @inherits Layer\n   * @aka L.GridLayer\n   *\n   * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n   * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n   *\n   *\n   * @section Synchronous usage\n   * @example\n   *\n   * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n   *\n   * ```js\n   * var CanvasLayer = L.GridLayer.extend({\n   *     createTile: function(coords){\n   *         // create a <canvas> element for drawing\n   *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n   *\n   *         // setup tile width and height according to the options\n   *         var size = this.getTileSize();\n   *         tile.width = size.x;\n   *         tile.height = size.y;\n   *\n   *         // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n   *         var ctx = tile.getContext('2d');\n   *\n   *         // return the tile so it can be rendered on screen\n   *         return tile;\n   *     }\n   * });\n   * ```\n   *\n   * @section Asynchronous usage\n   * @example\n   *\n   * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n   *\n   * ```js\n   * var CanvasLayer = L.GridLayer.extend({\n   *     createTile: function(coords, done){\n   *         var error;\n   *\n   *         // create a <canvas> element for drawing\n   *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n   *\n   *         // setup tile width and height according to the options\n   *         var size = this.getTileSize();\n   *         tile.width = size.x;\n   *         tile.height = size.y;\n   *\n   *         // draw something asynchronously and pass the tile to the done() callback\n   *         setTimeout(function() {\n   *             done(error, tile);\n   *         }, 1000);\n   *\n   *         return tile;\n   *     }\n   * });\n   * ```\n   *\n   * @section\n   */\n\n\n  var GridLayer = Layer.extend({\n\n  \t// @section\n  \t// @aka GridLayer options\n  \toptions: {\n  \t\t// @option tileSize: Number|Point = 256\n  \t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n  \t\ttileSize: 256,\n\n  \t\t// @option opacity: Number = 1.0\n  \t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n  \t\topacity: 1,\n\n  \t\t// @option updateWhenIdle: Boolean = (depends)\n  \t\t// Load new tiles only when panning ends.\n  \t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n  \t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n  \t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n  \t\tupdateWhenIdle: Browser.mobile,\n\n  \t\t// @option updateWhenZooming: Boolean = true\n  \t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n  \t\tupdateWhenZooming: true,\n\n  \t\t// @option updateInterval: Number = 200\n  \t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n  \t\tupdateInterval: 200,\n\n  \t\t// @option zIndex: Number = 1\n  \t\t// The explicit zIndex of the tile layer.\n  \t\tzIndex: 1,\n\n  \t\t// @option bounds: LatLngBounds = undefined\n  \t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n  \t\tbounds: null,\n\n  \t\t// @option minZoom: Number = 0\n  \t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n  \t\tminZoom: 0,\n\n  \t\t// @option maxZoom: Number = undefined\n  \t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n  \t\tmaxZoom: undefined,\n\n  \t\t// @option maxNativeZoom: Number = undefined\n  \t\t// Maximum zoom number the tile source has available. If it is specified,\n  \t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n  \t\t// from `maxNativeZoom` level and auto-scaled.\n  \t\tmaxNativeZoom: undefined,\n\n  \t\t// @option minNativeZoom: Number = undefined\n  \t\t// Minimum zoom number the tile source has available. If it is specified,\n  \t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n  \t\t// from `minNativeZoom` level and auto-scaled.\n  \t\tminNativeZoom: undefined,\n\n  \t\t// @option noWrap: Boolean = false\n  \t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n  \t\t// GridLayer will only be displayed once at low zoom levels. Has no\n  \t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n  \t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n  \t\t// tiles outside the CRS limits.\n  \t\tnoWrap: false,\n\n  \t\t// @option pane: String = 'tilePane'\n  \t\t// `Map pane` where the grid layer will be added.\n  \t\tpane: 'tilePane',\n\n  \t\t// @option className: String = ''\n  \t\t// A custom class name to assign to the tile layer. Empty by default.\n  \t\tclassName: '',\n\n  \t\t// @option keepBuffer: Number = 2\n  \t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n  \t\tkeepBuffer: 2\n  \t},\n\n  \tinitialize: function (options) {\n  \t\tsetOptions(this, options);\n  \t},\n\n  \tonAdd: function () {\n  \t\tthis._initContainer();\n\n  \t\tthis._levels = {};\n  \t\tthis._tiles = {};\n\n  \t\tthis._resetView(); // implicit _update() call\n  \t},\n\n  \tbeforeAdd: function (map) {\n  \t\tmap._addZoomLimit(this);\n  \t},\n\n  \tonRemove: function (map) {\n  \t\tthis._removeAllTiles();\n  \t\tremove(this._container);\n  \t\tmap._removeZoomLimit(this);\n  \t\tthis._container = null;\n  \t\tthis._tileZoom = undefined;\n  \t},\n\n  \t// @method bringToFront: this\n  \t// Brings the tile layer to the top of all tile layers.\n  \tbringToFront: function () {\n  \t\tif (this._map) {\n  \t\t\ttoFront(this._container);\n  \t\t\tthis._setAutoZIndex(Math.max);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method bringToBack: this\n  \t// Brings the tile layer to the bottom of all tile layers.\n  \tbringToBack: function () {\n  \t\tif (this._map) {\n  \t\t\ttoBack(this._container);\n  \t\t\tthis._setAutoZIndex(Math.min);\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \t// @method getContainer: HTMLElement\n  \t// Returns the HTML element that contains the tiles for this layer.\n  \tgetContainer: function () {\n  \t\treturn this._container;\n  \t},\n\n  \t// @method setOpacity(opacity: Number): this\n  \t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n  \tsetOpacity: function (opacity) {\n  \t\tthis.options.opacity = opacity;\n  \t\tthis._updateOpacity();\n  \t\treturn this;\n  \t},\n\n  \t// @method setZIndex(zIndex: Number): this\n  \t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n  \tsetZIndex: function (zIndex) {\n  \t\tthis.options.zIndex = zIndex;\n  \t\tthis._updateZIndex();\n\n  \t\treturn this;\n  \t},\n\n  \t// @method isLoading: Boolean\n  \t// Returns `true` if any tile in the grid layer has not finished loading.\n  \tisLoading: function () {\n  \t\treturn this._loading;\n  \t},\n\n  \t// @method redraw: this\n  \t// Causes the layer to clear all the tiles and request them again.\n  \tredraw: function () {\n  \t\tif (this._map) {\n  \t\t\tthis._removeAllTiles();\n  \t\t\tvar tileZoom = this._clampZoom(this._map.getZoom());\n  \t\t\tif (tileZoom !== this._tileZoom) {\n  \t\t\t\tthis._tileZoom = tileZoom;\n  \t\t\t\tthis._updateLevels();\n  \t\t\t}\n  \t\t\tthis._update();\n  \t\t}\n  \t\treturn this;\n  \t},\n\n  \tgetEvents: function () {\n  \t\tvar events = {\n  \t\t\tviewprereset: this._invalidateAll,\n  \t\t\tviewreset: this._resetView,\n  \t\t\tzoom: this._resetView,\n  \t\t\tmoveend: this._onMoveEnd\n  \t\t};\n\n  \t\tif (!this.options.updateWhenIdle) {\n  \t\t\t// update tiles on move, but not more often than once per given interval\n  \t\t\tif (!this._onMove) {\n  \t\t\t\tthis._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this);\n  \t\t\t}\n\n  \t\t\tevents.move = this._onMove;\n  \t\t}\n\n  \t\tif (this._zoomAnimated) {\n  \t\t\tevents.zoomanim = this._animateZoom;\n  \t\t}\n\n  \t\treturn events;\n  \t},\n\n  \t// @section Extension methods\n  \t// Layers extending `GridLayer` shall reimplement the following method.\n  \t// @method createTile(coords: Object, done?: Function): HTMLElement\n  \t// Called only internally, must be overridden by classes extending `GridLayer`.\n  \t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n  \t// is specified, it must be called when the tile has finished loading and drawing.\n  \tcreateTile: function () {\n  \t\treturn document.createElement('div');\n  \t},\n\n  \t// @section\n  \t// @method getTileSize: Point\n  \t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n  \tgetTileSize: function () {\n  \t\tvar s = this.options.tileSize;\n  \t\treturn s instanceof Point ? s : new Point(s, s);\n  \t},\n\n  \t_updateZIndex: function () {\n  \t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n  \t\t\tthis._container.style.zIndex = this.options.zIndex;\n  \t\t}\n  \t},\n\n  \t_setAutoZIndex: function (compare) {\n  \t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n  \t\tvar layers = this.getPane().children,\n  \t\t    edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n  \t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n  \t\t\tzIndex = layers[i].style.zIndex;\n\n  \t\t\tif (layers[i] !== this._container && zIndex) {\n  \t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n  \t\t\t}\n  \t\t}\n\n  \t\tif (isFinite(edgeZIndex)) {\n  \t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n  \t\t\tthis._updateZIndex();\n  \t\t}\n  \t},\n\n  \t_updateOpacity: function () {\n  \t\tif (!this._map) { return; }\n\n  \t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n  \t\tif (Browser.ielt9) { return; }\n\n  \t\tsetOpacity(this._container, this.options.opacity);\n\n  \t\tvar now = +new Date(),\n  \t\t    nextFrame = false,\n  \t\t    willPrune = false;\n\n  \t\tfor (var key in this._tiles) {\n  \t\t\tvar tile = this._tiles[key];\n  \t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n  \t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n  \t\t\tsetOpacity(tile.el, fade);\n  \t\t\tif (fade < 1) {\n  \t\t\t\tnextFrame = true;\n  \t\t\t} else {\n  \t\t\t\tif (tile.active) {\n  \t\t\t\t\twillPrune = true;\n  \t\t\t\t} else {\n  \t\t\t\t\tthis._onOpaqueTile(tile);\n  \t\t\t\t}\n  \t\t\t\ttile.active = true;\n  \t\t\t}\n  \t\t}\n\n  \t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n  \t\tif (nextFrame) {\n  \t\t\tcancelAnimFrame(this._fadeFrame);\n  \t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n  \t\t}\n  \t},\n\n  \t_onOpaqueTile: falseFn,\n\n  \t_initContainer: function () {\n  \t\tif (this._container) { return; }\n\n  \t\tthis._container = create$1('div', 'leaflet-layer ' + (this.options.className || ''));\n  \t\tthis._updateZIndex();\n\n  \t\tif (this.options.opacity < 1) {\n  \t\t\tthis._updateOpacity();\n  \t\t}\n\n  \t\tthis.getPane().appendChild(this._container);\n  \t},\n\n  \t_updateLevels: function () {\n\n  \t\tvar zoom = this._tileZoom,\n  \t\t    maxZoom = this.options.maxZoom;\n\n  \t\tif (zoom === undefined) { return undefined; }\n\n  \t\tfor (var z in this._levels) {\n  \t\t\tz = Number(z);\n  \t\t\tif (this._levels[z].el.children.length || z === zoom) {\n  \t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n  \t\t\t\tthis._onUpdateLevel(z);\n  \t\t\t} else {\n  \t\t\t\tremove(this._levels[z].el);\n  \t\t\t\tthis._removeTilesAtZoom(z);\n  \t\t\t\tthis._onRemoveLevel(z);\n  \t\t\t\tdelete this._levels[z];\n  \t\t\t}\n  \t\t}\n\n  \t\tvar level = this._levels[zoom],\n  \t\t    map = this._map;\n\n  \t\tif (!level) {\n  \t\t\tlevel = this._levels[zoom] = {};\n\n  \t\t\tlevel.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n  \t\t\tlevel.el.style.zIndex = maxZoom;\n\n  \t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n  \t\t\tlevel.zoom = zoom;\n\n  \t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n  \t\t\t// force the browser to consider the newly added element for transition\n  \t\t\tfalseFn(level.el.offsetWidth);\n\n  \t\t\tthis._onCreateLevel(level);\n  \t\t}\n\n  \t\tthis._level = level;\n\n  \t\treturn level;\n  \t},\n\n  \t_onUpdateLevel: falseFn,\n\n  \t_onRemoveLevel: falseFn,\n\n  \t_onCreateLevel: falseFn,\n\n  \t_pruneTiles: function () {\n  \t\tif (!this._map) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tvar key, tile;\n\n  \t\tvar zoom = this._map.getZoom();\n  \t\tif (zoom > this.options.maxZoom ||\n  \t\t\tzoom < this.options.minZoom) {\n  \t\t\tthis._removeAllTiles();\n  \t\t\treturn;\n  \t\t}\n\n  \t\tfor (key in this._tiles) {\n  \t\t\ttile = this._tiles[key];\n  \t\t\ttile.retain = tile.current;\n  \t\t}\n\n  \t\tfor (key in this._tiles) {\n  \t\t\ttile = this._tiles[key];\n  \t\t\tif (tile.current && !tile.active) {\n  \t\t\t\tvar coords = tile.coords;\n  \t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n  \t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n\n  \t\tfor (key in this._tiles) {\n  \t\t\tif (!this._tiles[key].retain) {\n  \t\t\t\tthis._removeTile(key);\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t_removeTilesAtZoom: function (zoom) {\n  \t\tfor (var key in this._tiles) {\n  \t\t\tif (this._tiles[key].coords.z !== zoom) {\n  \t\t\t\tcontinue;\n  \t\t\t}\n  \t\t\tthis._removeTile(key);\n  \t\t}\n  \t},\n\n  \t_removeAllTiles: function () {\n  \t\tfor (var key in this._tiles) {\n  \t\t\tthis._removeTile(key);\n  \t\t}\n  \t},\n\n  \t_invalidateAll: function () {\n  \t\tfor (var z in this._levels) {\n  \t\t\tremove(this._levels[z].el);\n  \t\t\tthis._onRemoveLevel(Number(z));\n  \t\t\tdelete this._levels[z];\n  \t\t}\n  \t\tthis._removeAllTiles();\n\n  \t\tthis._tileZoom = undefined;\n  \t},\n\n  \t_retainParent: function (x, y, z, minZoom) {\n  \t\tvar x2 = Math.floor(x / 2),\n  \t\t    y2 = Math.floor(y / 2),\n  \t\t    z2 = z - 1,\n  \t\t    coords2 = new Point(+x2, +y2);\n  \t\tcoords2.z = +z2;\n\n  \t\tvar key = this._tileCoordsToKey(coords2),\n  \t\t    tile = this._tiles[key];\n\n  \t\tif (tile && tile.active) {\n  \t\t\ttile.retain = true;\n  \t\t\treturn true;\n\n  \t\t} else if (tile && tile.loaded) {\n  \t\t\ttile.retain = true;\n  \t\t}\n\n  \t\tif (z2 > minZoom) {\n  \t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n  \t\t}\n\n  \t\treturn false;\n  \t},\n\n  \t_retainChildren: function (x, y, z, maxZoom) {\n\n  \t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n  \t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n  \t\t\t\tvar coords = new Point(i, j);\n  \t\t\t\tcoords.z = z + 1;\n\n  \t\t\t\tvar key = this._tileCoordsToKey(coords),\n  \t\t\t\t    tile = this._tiles[key];\n\n  \t\t\t\tif (tile && tile.active) {\n  \t\t\t\t\ttile.retain = true;\n  \t\t\t\t\tcontinue;\n\n  \t\t\t\t} else if (tile && tile.loaded) {\n  \t\t\t\t\ttile.retain = true;\n  \t\t\t\t}\n\n  \t\t\t\tif (z + 1 < maxZoom) {\n  \t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t_resetView: function (e) {\n  \t\tvar animating = e && (e.pinch || e.flyTo);\n  \t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n  \t},\n\n  \t_animateZoom: function (e) {\n  \t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n  \t},\n\n  \t_clampZoom: function (zoom) {\n  \t\tvar options = this.options;\n\n  \t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n  \t\t\treturn options.minNativeZoom;\n  \t\t}\n\n  \t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n  \t\t\treturn options.maxNativeZoom;\n  \t\t}\n\n  \t\treturn zoom;\n  \t},\n\n  \t_setView: function (center, zoom, noPrune, noUpdate) {\n  \t\tvar tileZoom = Math.round(zoom);\n  \t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n  \t\t    (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n  \t\t\ttileZoom = undefined;\n  \t\t} else {\n  \t\t\ttileZoom = this._clampZoom(tileZoom);\n  \t\t}\n\n  \t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n  \t\tif (!noUpdate || tileZoomChanged) {\n\n  \t\t\tthis._tileZoom = tileZoom;\n\n  \t\t\tif (this._abortLoading) {\n  \t\t\t\tthis._abortLoading();\n  \t\t\t}\n\n  \t\t\tthis._updateLevels();\n  \t\t\tthis._resetGrid();\n\n  \t\t\tif (tileZoom !== undefined) {\n  \t\t\t\tthis._update(center);\n  \t\t\t}\n\n  \t\t\tif (!noPrune) {\n  \t\t\t\tthis._pruneTiles();\n  \t\t\t}\n\n  \t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n  \t\t\t// a zoom anim or a pinch gesture\n  \t\t\tthis._noPrune = !!noPrune;\n  \t\t}\n\n  \t\tthis._setZoomTransforms(center, zoom);\n  \t},\n\n  \t_setZoomTransforms: function (center, zoom) {\n  \t\tfor (var i in this._levels) {\n  \t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n  \t\t}\n  \t},\n\n  \t_setZoomTransform: function (level, center, zoom) {\n  \t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n  \t\t    translate = level.origin.multiplyBy(scale)\n  \t\t        .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n  \t\tif (Browser.any3d) {\n  \t\t\tsetTransform(level.el, translate, scale);\n  \t\t} else {\n  \t\t\tsetPosition(level.el, translate);\n  \t\t}\n  \t},\n\n  \t_resetGrid: function () {\n  \t\tvar map = this._map,\n  \t\t    crs = map.options.crs,\n  \t\t    tileSize = this._tileSize = this.getTileSize(),\n  \t\t    tileZoom = this._tileZoom;\n\n  \t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n  \t\tif (bounds) {\n  \t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n  \t\t}\n\n  \t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n  \t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n  \t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n  \t\t];\n  \t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n  \t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n  \t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n  \t\t];\n  \t},\n\n  \t_onMoveEnd: function () {\n  \t\tif (!this._map || this._map._animatingZoom) { return; }\n\n  \t\tthis._update();\n  \t},\n\n  \t_getTiledPixelBounds: function (center) {\n  \t\tvar map = this._map,\n  \t\t    mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n  \t\t    scale = map.getZoomScale(mapZoom, this._tileZoom),\n  \t\t    pixelCenter = map.project(center, this._tileZoom).floor(),\n  \t\t    halfSize = map.getSize().divideBy(scale * 2);\n\n  \t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n  \t},\n\n  \t// Private method to load tiles in the grid's active zoom level according to map bounds\n  \t_update: function (center) {\n  \t\tvar map = this._map;\n  \t\tif (!map) { return; }\n  \t\tvar zoom = this._clampZoom(map.getZoom());\n\n  \t\tif (center === undefined) { center = map.getCenter(); }\n  \t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n  \t\tvar pixelBounds = this._getTiledPixelBounds(center),\n  \t\t    tileRange = this._pxBoundsToTileRange(pixelBounds),\n  \t\t    tileCenter = tileRange.getCenter(),\n  \t\t    queue = [],\n  \t\t    margin = this.options.keepBuffer,\n  \t\t    noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n  \t\t                              tileRange.getTopRight().add([margin, -margin]));\n\n  \t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n  \t\tif (!(isFinite(tileRange.min.x) &&\n  \t\t      isFinite(tileRange.min.y) &&\n  \t\t      isFinite(tileRange.max.x) &&\n  \t\t      isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n  \t\tfor (var key in this._tiles) {\n  \t\t\tvar c = this._tiles[key].coords;\n  \t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n  \t\t\t\tthis._tiles[key].current = false;\n  \t\t\t}\n  \t\t}\n\n  \t\t// _update just loads more tiles. If the tile zoom level differs too much\n  \t\t// from the map's, let _setView reset levels and prune old tiles.\n  \t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n  \t\t// create a queue of coordinates to load tiles from\n  \t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n  \t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n  \t\t\t\tvar coords = new Point(i, j);\n  \t\t\t\tcoords.z = this._tileZoom;\n\n  \t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n  \t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n  \t\t\t\tif (tile) {\n  \t\t\t\t\ttile.current = true;\n  \t\t\t\t} else {\n  \t\t\t\t\tqueue.push(coords);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n\n  \t\t// sort tile queue to load tiles in order of their distance to center\n  \t\tqueue.sort(function (a, b) {\n  \t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n  \t\t});\n\n  \t\tif (queue.length !== 0) {\n  \t\t\t// if it's the first batch of tiles to load\n  \t\t\tif (!this._loading) {\n  \t\t\t\tthis._loading = true;\n  \t\t\t\t// @event loading: Event\n  \t\t\t\t// Fired when the grid layer starts loading tiles.\n  \t\t\t\tthis.fire('loading');\n  \t\t\t}\n\n  \t\t\t// create DOM fragment to append tiles in one batch\n  \t\t\tvar fragment = document.createDocumentFragment();\n\n  \t\t\tfor (i = 0; i < queue.length; i++) {\n  \t\t\t\tthis._addTile(queue[i], fragment);\n  \t\t\t}\n\n  \t\t\tthis._level.el.appendChild(fragment);\n  \t\t}\n  \t},\n\n  \t_isValidTile: function (coords) {\n  \t\tvar crs = this._map.options.crs;\n\n  \t\tif (!crs.infinite) {\n  \t\t\t// don't load tile if it's out of bounds and not wrapped\n  \t\t\tvar bounds = this._globalTileRange;\n  \t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n  \t\t\t    (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n  \t\t}\n\n  \t\tif (!this.options.bounds) { return true; }\n\n  \t\t// don't load tile if it doesn't intersect the bounds in options\n  \t\tvar tileBounds = this._tileCoordsToBounds(coords);\n  \t\treturn toLatLngBounds(this.options.bounds).overlaps(tileBounds);\n  \t},\n\n  \t_keyToBounds: function (key) {\n  \t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n  \t},\n\n  \t_tileCoordsToNwSe: function (coords) {\n  \t\tvar map = this._map,\n  \t\t    tileSize = this.getTileSize(),\n  \t\t    nwPoint = coords.scaleBy(tileSize),\n  \t\t    sePoint = nwPoint.add(tileSize),\n  \t\t    nw = map.unproject(nwPoint, coords.z),\n  \t\t    se = map.unproject(sePoint, coords.z);\n  \t\treturn [nw, se];\n  \t},\n\n  \t// converts tile coordinates to its geographical bounds\n  \t_tileCoordsToBounds: function (coords) {\n  \t\tvar bp = this._tileCoordsToNwSe(coords),\n  \t\t    bounds = new LatLngBounds(bp[0], bp[1]);\n\n  \t\tif (!this.options.noWrap) {\n  \t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n  \t\t}\n  \t\treturn bounds;\n  \t},\n  \t// converts tile coordinates to key for the tile cache\n  \t_tileCoordsToKey: function (coords) {\n  \t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n  \t},\n\n  \t// converts tile cache key to coordinates\n  \t_keyToTileCoords: function (key) {\n  \t\tvar k = key.split(':'),\n  \t\t    coords = new Point(+k[0], +k[1]);\n  \t\tcoords.z = +k[2];\n  \t\treturn coords;\n  \t},\n\n  \t_removeTile: function (key) {\n  \t\tvar tile = this._tiles[key];\n  \t\tif (!tile) { return; }\n\n  \t\tremove(tile.el);\n\n  \t\tdelete this._tiles[key];\n\n  \t\t// @event tileunload: TileEvent\n  \t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n  \t\tthis.fire('tileunload', {\n  \t\t\ttile: tile.el,\n  \t\t\tcoords: this._keyToTileCoords(key)\n  \t\t});\n  \t},\n\n  \t_initTile: function (tile) {\n  \t\taddClass(tile, 'leaflet-tile');\n\n  \t\tvar tileSize = this.getTileSize();\n  \t\ttile.style.width = tileSize.x + 'px';\n  \t\ttile.style.height = tileSize.y + 'px';\n\n  \t\ttile.onselectstart = falseFn;\n  \t\ttile.onmousemove = falseFn;\n\n  \t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n  \t\tif (Browser.ielt9 && this.options.opacity < 1) {\n  \t\t\tsetOpacity(tile, this.options.opacity);\n  \t\t}\n  \t},\n\n  \t_addTile: function (coords, container) {\n  \t\tvar tilePos = this._getTilePos(coords),\n  \t\t    key = this._tileCoordsToKey(coords);\n\n  \t\tvar tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords));\n\n  \t\tthis._initTile(tile);\n\n  \t\t// if createTile is defined with a second argument (\"done\" callback),\n  \t\t// we know that tile is async and will be ready later; otherwise\n  \t\tif (this.createTile.length < 2) {\n  \t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n  \t\t\trequestAnimFrame(bind(this._tileReady, this, coords, null, tile));\n  \t\t}\n\n  \t\tsetPosition(tile, tilePos);\n\n  \t\t// save tile in cache\n  \t\tthis._tiles[key] = {\n  \t\t\tel: tile,\n  \t\t\tcoords: coords,\n  \t\t\tcurrent: true\n  \t\t};\n\n  \t\tcontainer.appendChild(tile);\n  \t\t// @event tileloadstart: TileEvent\n  \t\t// Fired when a tile is requested and starts loading.\n  \t\tthis.fire('tileloadstart', {\n  \t\t\ttile: tile,\n  \t\t\tcoords: coords\n  \t\t});\n  \t},\n\n  \t_tileReady: function (coords, err, tile) {\n  \t\tif (err) {\n  \t\t\t// @event tileerror: TileErrorEvent\n  \t\t\t// Fired when there is an error loading a tile.\n  \t\t\tthis.fire('tileerror', {\n  \t\t\t\terror: err,\n  \t\t\t\ttile: tile,\n  \t\t\t\tcoords: coords\n  \t\t\t});\n  \t\t}\n\n  \t\tvar key = this._tileCoordsToKey(coords);\n\n  \t\ttile = this._tiles[key];\n  \t\tif (!tile) { return; }\n\n  \t\ttile.loaded = +new Date();\n  \t\tif (this._map._fadeAnimated) {\n  \t\t\tsetOpacity(tile.el, 0);\n  \t\t\tcancelAnimFrame(this._fadeFrame);\n  \t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n  \t\t} else {\n  \t\t\ttile.active = true;\n  \t\t\tthis._pruneTiles();\n  \t\t}\n\n  \t\tif (!err) {\n  \t\t\taddClass(tile.el, 'leaflet-tile-loaded');\n\n  \t\t\t// @event tileload: TileEvent\n  \t\t\t// Fired when a tile loads.\n  \t\t\tthis.fire('tileload', {\n  \t\t\t\ttile: tile.el,\n  \t\t\t\tcoords: coords\n  \t\t\t});\n  \t\t}\n\n  \t\tif (this._noTilesToLoad()) {\n  \t\t\tthis._loading = false;\n  \t\t\t// @event load: Event\n  \t\t\t// Fired when the grid layer loaded all visible tiles.\n  \t\t\tthis.fire('load');\n\n  \t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n  \t\t\t\trequestAnimFrame(this._pruneTiles, this);\n  \t\t\t} else {\n  \t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n  \t\t\t\t// to trigger a pruning.\n  \t\t\t\tsetTimeout(bind(this._pruneTiles, this), 250);\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \t_getTilePos: function (coords) {\n  \t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n  \t},\n\n  \t_wrapCoords: function (coords) {\n  \t\tvar newCoords = new Point(\n  \t\t\tthis._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x,\n  \t\t\tthis._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y);\n  \t\tnewCoords.z = coords.z;\n  \t\treturn newCoords;\n  \t},\n\n  \t_pxBoundsToTileRange: function (bounds) {\n  \t\tvar tileSize = this.getTileSize();\n  \t\treturn new Bounds(\n  \t\t\tbounds.min.unscaleBy(tileSize).floor(),\n  \t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n  \t},\n\n  \t_noTilesToLoad: function () {\n  \t\tfor (var key in this._tiles) {\n  \t\t\tif (!this._tiles[key].loaded) { return false; }\n  \t\t}\n  \t\treturn true;\n  \t}\n  });\n\n  // @factory L.gridLayer(options?: GridLayer options)\n  // Creates a new instance of GridLayer with the supplied options.\n  function gridLayer(options) {\n  \treturn new GridLayer(options);\n  }\n\n  /*\r\n   * @class TileLayer\r\n   * @inherits GridLayer\r\n   * @aka L.TileLayer\r\n   * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(map);\n   * ```\r\n   *\r\n   * @section URL template\r\n   * @example\r\n   *\r\n   * A string of the following form:\r\n   *\r\n   * ```\r\n   * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n   * ```\r\n   *\r\n   * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n   *\r\n   * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n   *\r\n   * ```\r\n   * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n   * ```\r\n   */\r\n\r\n\r\n  var TileLayer = GridLayer.extend({\r\n\r\n  \t// @section\r\n  \t// @aka TileLayer options\r\n  \toptions: {\r\n  \t\t// @option minZoom: Number = 0\r\n  \t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n  \t\tminZoom: 0,\r\n\r\n  \t\t// @option maxZoom: Number = 18\r\n  \t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n  \t\tmaxZoom: 18,\r\n\r\n  \t\t// @option subdomains: String|String[] = 'abc'\r\n  \t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n  \t\tsubdomains: 'abc',\r\n\r\n  \t\t// @option errorTileUrl: String = ''\r\n  \t\t// URL to the tile image to show in place of the tile that failed to load.\r\n  \t\terrorTileUrl: '',\r\n\r\n  \t\t// @option zoomOffset: Number = 0\r\n  \t\t// The zoom number used in tile URLs will be offset with this value.\r\n  \t\tzoomOffset: 0,\r\n\r\n  \t\t// @option tms: Boolean = false\r\n  \t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n  \t\ttms: false,\r\n\r\n  \t\t// @option zoomReverse: Boolean = false\r\n  \t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n  \t\tzoomReverse: false,\r\n\r\n  \t\t// @option detectRetina: Boolean = false\r\n  \t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n  \t\tdetectRetina: false,\r\n\r\n  \t\t// @option crossOrigin: Boolean|String = false\r\n  \t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n  \t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n  \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n  \t\tcrossOrigin: false,\r\n\r\n  \t\t// @option referrerPolicy: Boolean|String = false\r\n  \t\t// Whether the referrerPolicy attribute will be added to the tiles.\r\n  \t\t// If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.\r\n  \t\t// This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer\r\n  \t\t// (e.g. to validate an API token).\r\n  \t\t// Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.\r\n  \t\treferrerPolicy: false\r\n  \t},\r\n\r\n  \tinitialize: function (url, options) {\r\n\r\n  \t\tthis._url = url;\r\n\r\n  \t\toptions = setOptions(this, options);\r\n\r\n  \t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n  \t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n  \t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n  \t\t\tif (!options.zoomReverse) {\r\n  \t\t\t\toptions.zoomOffset++;\r\n  \t\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);\r\n  \t\t\t} else {\r\n  \t\t\t\toptions.zoomOffset--;\r\n  \t\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom + 1);\r\n  \t\t\t}\r\n\r\n  \t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n  \t\t} else if (!options.zoomReverse) {\r\n  \t\t\t// make sure maxZoom is gte minZoom\r\n  \t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom);\r\n  \t\t} else {\r\n  \t\t\t// make sure minZoom is lte maxZoom\r\n  \t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom);\r\n  \t\t}\r\n\r\n  \t\tif (typeof options.subdomains === 'string') {\r\n  \t\t\toptions.subdomains = options.subdomains.split('');\r\n  \t\t}\r\n\r\n  \t\tthis.on('tileunload', this._onTileRemove);\r\n  \t},\r\n\r\n  \t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n  \t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n  \t// If the URL does not change, the layer will not be redrawn unless\r\n  \t// the noRedraw parameter is set to false.\r\n  \tsetUrl: function (url, noRedraw) {\r\n  \t\tif (this._url === url && noRedraw === undefined) {\r\n  \t\t\tnoRedraw = true;\r\n  \t\t}\r\n\r\n  \t\tthis._url = url;\r\n\r\n  \t\tif (!noRedraw) {\r\n  \t\t\tthis.redraw();\r\n  \t\t}\r\n  \t\treturn this;\r\n  \t},\r\n\r\n  \t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n  \t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n  \t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n  \t// callback is called when the tile has been loaded.\r\n  \tcreateTile: function (coords, done) {\r\n  \t\tvar tile = document.createElement('img');\r\n\r\n  \t\ton(tile, 'load', bind(this._tileOnLoad, this, done, tile));\r\n  \t\ton(tile, 'error', bind(this._tileOnError, this, done, tile));\r\n\r\n  \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n  \t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n  \t\t}\r\n\r\n  \t\t// for this new option we follow the documented behavior\r\n  \t\t// more closely by only setting the property when string\r\n  \t\tif (typeof this.options.referrerPolicy === 'string') {\r\n  \t\t\ttile.referrerPolicy = this.options.referrerPolicy;\r\n  \t\t}\r\n\r\n  \t\t// The alt attribute is set to the empty string,\r\n  \t\t// allowing screen readers to ignore the decorative image tiles.\r\n  \t\t// https://www.w3.org/WAI/tutorials/images/decorative/\r\n  \t\t// https://www.w3.org/TR/html-aria/#el-img-empty-alt\r\n  \t\ttile.alt = '';\r\n\r\n  \t\ttile.src = this.getTileUrl(coords);\r\n\r\n  \t\treturn tile;\r\n  \t},\r\n\r\n  \t// @section Extension methods\r\n  \t// @uninheritable\r\n  \t// Layers extending `TileLayer` might reimplement the following method.\r\n  \t// @method getTileUrl(coords: Object): String\r\n  \t// Called only internally, returns the URL for a tile given its coordinates.\r\n  \t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n  \tgetTileUrl: function (coords) {\r\n  \t\tvar data = {\r\n  \t\t\tr: Browser.retina ? '@2x' : '',\r\n  \t\t\ts: this._getSubdomain(coords),\r\n  \t\t\tx: coords.x,\r\n  \t\t\ty: coords.y,\r\n  \t\t\tz: this._getZoomForUrl()\r\n  \t\t};\r\n  \t\tif (this._map && !this._map.options.crs.infinite) {\r\n  \t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n  \t\t\tif (this.options.tms) {\r\n  \t\t\t\tdata['y'] = invertedY;\r\n  \t\t\t}\r\n  \t\t\tdata['-y'] = invertedY;\r\n  \t\t}\r\n\r\n  \t\treturn template(this._url, extend(data, this.options));\r\n  \t},\r\n\r\n  \t_tileOnLoad: function (done, tile) {\r\n  \t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n  \t\tif (Browser.ielt9) {\r\n  \t\t\tsetTimeout(bind(done, this, null, tile), 0);\r\n  \t\t} else {\r\n  \t\t\tdone(null, tile);\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_tileOnError: function (done, tile, e) {\r\n  \t\tvar errorUrl = this.options.errorTileUrl;\r\n  \t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n  \t\t\ttile.src = errorUrl;\r\n  \t\t}\r\n  \t\tdone(e, tile);\r\n  \t},\r\n\r\n  \t_onTileRemove: function (e) {\r\n  \t\te.tile.onload = null;\r\n  \t},\r\n\r\n  \t_getZoomForUrl: function () {\r\n  \t\tvar zoom = this._tileZoom,\r\n  \t\tmaxZoom = this.options.maxZoom,\r\n  \t\tzoomReverse = this.options.zoomReverse,\r\n  \t\tzoomOffset = this.options.zoomOffset;\r\n\r\n  \t\tif (zoomReverse) {\r\n  \t\t\tzoom = maxZoom - zoom;\r\n  \t\t}\r\n\r\n  \t\treturn zoom + zoomOffset;\r\n  \t},\r\n\r\n  \t_getSubdomain: function (tilePoint) {\r\n  \t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n  \t\treturn this.options.subdomains[index];\r\n  \t},\r\n\r\n  \t// stops loading all tiles in the background layer\r\n  \t_abortLoading: function () {\r\n  \t\tvar i, tile;\r\n  \t\tfor (i in this._tiles) {\r\n  \t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n  \t\t\t\ttile = this._tiles[i].el;\r\n\r\n  \t\t\t\ttile.onload = falseFn;\r\n  \t\t\t\ttile.onerror = falseFn;\r\n\r\n  \t\t\t\tif (!tile.complete) {\r\n  \t\t\t\t\ttile.src = emptyImageUrl;\r\n  \t\t\t\t\tvar coords = this._tiles[i].coords;\r\n  \t\t\t\t\tremove(tile);\r\n  \t\t\t\t\tdelete this._tiles[i];\r\n  \t\t\t\t\t// @event tileabort: TileEvent\r\n  \t\t\t\t\t// Fired when a tile was loading but is now not wanted.\r\n  \t\t\t\t\tthis.fire('tileabort', {\r\n  \t\t\t\t\t\ttile: tile,\r\n  \t\t\t\t\t\tcoords: coords\r\n  \t\t\t\t\t});\r\n  \t\t\t\t}\r\n  \t\t\t}\r\n  \t\t}\r\n  \t},\r\n\r\n  \t_removeTile: function (key) {\r\n  \t\tvar tile = this._tiles[key];\r\n  \t\tif (!tile) { return; }\r\n\r\n  \t\t// Cancels any pending http requests associated with the tile\r\n  \t\ttile.el.setAttribute('src', emptyImageUrl);\r\n\r\n  \t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n  \t},\r\n\r\n  \t_tileReady: function (coords, err, tile) {\r\n  \t\tif (!this._map || (tile && tile.getAttribute('src') === emptyImageUrl)) {\r\n  \t\t\treturn;\r\n  \t\t}\r\n\r\n  \t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n  \t}\r\n  });\r\n\r\n\r\n  // @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n  // Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\n  function tileLayer(url, options) {\r\n  \treturn new TileLayer(url, options);\r\n  }\n\n  /*\r\n   * @class TileLayer.WMS\r\n   * @inherits TileLayer\r\n   * @aka L.TileLayer.WMS\r\n   * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```js\r\n   * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n   * \tlayers: 'nexrad-n0r-900913',\r\n   * \tformat: 'image/png',\r\n   * \ttransparent: true,\r\n   * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n   * });\r\n   * ```\r\n   */\r\n\r\n  var TileLayerWMS = TileLayer.extend({\r\n\r\n  \t// @section\r\n  \t// @aka TileLayer.WMS options\r\n  \t// If any custom options not documented here are used, they will be sent to the\r\n  \t// WMS server as extra parameters in each request URL. This can be useful for\r\n  \t// [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n  \tdefaultWmsParams: {\r\n  \t\tservice: 'WMS',\r\n  \t\trequest: 'GetMap',\r\n\r\n  \t\t// @option layers: String = ''\r\n  \t\t// **(required)** Comma-separated list of WMS layers to show.\r\n  \t\tlayers: '',\r\n\r\n  \t\t// @option styles: String = ''\r\n  \t\t// Comma-separated list of WMS styles.\r\n  \t\tstyles: '',\r\n\r\n  \t\t// @option format: String = 'image/jpeg'\r\n  \t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n  \t\tformat: 'image/jpeg',\r\n\r\n  \t\t// @option transparent: Boolean = false\r\n  \t\t// If `true`, the WMS service will return images with transparency.\r\n  \t\ttransparent: false,\r\n\r\n  \t\t// @option version: String = '1.1.1'\r\n  \t\t// Version of the WMS service to use\r\n  \t\tversion: '1.1.1'\r\n  \t},\r\n\r\n  \toptions: {\r\n  \t\t// @option crs: CRS = null\r\n  \t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n  \t\t// map CRS. Don't change this if you're not sure what it means.\r\n  \t\tcrs: null,\r\n\r\n  \t\t// @option uppercase: Boolean = false\r\n  \t\t// If `true`, WMS request parameter keys will be uppercase.\r\n  \t\tuppercase: false\r\n  \t},\r\n\r\n  \tinitialize: function (url, options) {\r\n\r\n  \t\tthis._url = url;\r\n\r\n  \t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n  \t\t// all keys that are not TileLayer options go to WMS params\r\n  \t\tfor (var i in options) {\r\n  \t\t\tif (!(i in this.options)) {\r\n  \t\t\t\twmsParams[i] = options[i];\r\n  \t\t\t}\r\n  \t\t}\r\n\r\n  \t\toptions = setOptions(this, options);\r\n\r\n  \t\tvar realRetina = options.detectRetina && Browser.retina ? 2 : 1;\r\n  \t\tvar tileSize = this.getTileSize();\r\n  \t\twmsParams.width = tileSize.x * realRetina;\r\n  \t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n  \t\tthis.wmsParams = wmsParams;\r\n  \t},\r\n\r\n  \tonAdd: function (map) {\r\n\r\n  \t\tthis._crs = this.options.crs || map.options.crs;\r\n  \t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n  \t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n  \t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n  \t\tTileLayer.prototype.onAdd.call(this, map);\r\n  \t},\r\n\r\n  \tgetTileUrl: function (coords) {\r\n\r\n  \t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n  \t\t    crs = this._crs,\r\n  \t\t    bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n  \t\t    min = bounds.min,\r\n  \t\t    max = bounds.max,\r\n  \t\t    bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n  \t\t    [min.y, min.x, max.y, max.x] :\r\n  \t\t    [min.x, min.y, max.x, max.y]).join(','),\r\n  \t\t    url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n  \t\treturn url +\r\n  \t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n  \t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n  \t},\r\n\r\n  \t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n  \t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n  \tsetParams: function (params, noRedraw) {\r\n\r\n  \t\textend(this.wmsParams, params);\r\n\r\n  \t\tif (!noRedraw) {\r\n  \t\t\tthis.redraw();\r\n  \t\t}\r\n\r\n  \t\treturn this;\r\n  \t}\r\n  });\r\n\r\n\r\n  // @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n  // Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\n  function tileLayerWMS(url, options) {\r\n  \treturn new TileLayerWMS(url, options);\r\n  }\n\n  TileLayer.WMS = TileLayerWMS;\n  tileLayer.wms = tileLayerWMS;\n\n  /*\n   * @class Renderer\n   * @inherits Layer\n   * @aka L.Renderer\n   *\n   * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n   * DOM container of the renderer, its bounds, and its zoom animation.\n   *\n   * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n   * itself can be added or removed to the map. All paths use a renderer, which can\n   * be implicit (the map will decide the type of renderer and use it automatically)\n   * or explicit (using the [`renderer`](#path-renderer) option of the path).\n   *\n   * Do not use this class directly, use `SVG` and `Canvas` instead.\n   *\n   * @event update: Event\n   * Fired when the renderer updates its bounds, center and zoom, for example when\n   * its map has moved\n   */\n\n  var Renderer = Layer.extend({\n\n  \t// @section\n  \t// @aka Renderer options\n  \toptions: {\n  \t\t// @option padding: Number = 0.1\n  \t\t// How much to extend the clip area around the map view (relative to its size)\n  \t\t// e.g. 0.1 would be 10% of map view in each direction\n  \t\tpadding: 0.1\n  \t},\n\n  \tinitialize: function (options) {\n  \t\tsetOptions(this, options);\n  \t\tstamp(this);\n  \t\tthis._layers = this._layers || {};\n  \t},\n\n  \tonAdd: function () {\n  \t\tif (!this._container) {\n  \t\t\tthis._initContainer(); // defined by renderer implementations\n\n  \t\t\t// always keep transform-origin as 0 0\n  \t\t\taddClass(this._container, 'leaflet-zoom-animated');\n  \t\t}\n\n  \t\tthis.getPane().appendChild(this._container);\n  \t\tthis._update();\n  \t\tthis.on('update', this._updatePaths, this);\n  \t},\n\n  \tonRemove: function () {\n  \t\tthis.off('update', this._updatePaths, this);\n  \t\tthis._destroyContainer();\n  \t},\n\n  \tgetEvents: function () {\n  \t\tvar events = {\n  \t\t\tviewreset: this._reset,\n  \t\t\tzoom: this._onZoom,\n  \t\t\tmoveend: this._update,\n  \t\t\tzoomend: this._onZoomEnd\n  \t\t};\n  \t\tif (this._zoomAnimated) {\n  \t\t\tevents.zoomanim = this._onAnimZoom;\n  \t\t}\n  \t\treturn events;\n  \t},\n\n  \t_onAnimZoom: function (ev) {\n  \t\tthis._updateTransform(ev.center, ev.zoom);\n  \t},\n\n  \t_onZoom: function () {\n  \t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n  \t},\n\n  \t_updateTransform: function (center, zoom) {\n  \t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n  \t\t    viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n  \t\t    currentCenterPoint = this._map.project(this._center, zoom),\n\n  \t\t    topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint)\n  \t\t\t\t  .subtract(this._map._getNewPixelOrigin(center, zoom));\n\n  \t\tif (Browser.any3d) {\n  \t\t\tsetTransform(this._container, topLeftOffset, scale);\n  \t\t} else {\n  \t\t\tsetPosition(this._container, topLeftOffset);\n  \t\t}\n  \t},\n\n  \t_reset: function () {\n  \t\tthis._update();\n  \t\tthis._updateTransform(this._center, this._zoom);\n\n  \t\tfor (var id in this._layers) {\n  \t\t\tthis._layers[id]._reset();\n  \t\t}\n  \t},\n\n  \t_onZoomEnd: function () {\n  \t\tfor (var id in this._layers) {\n  \t\t\tthis._layers[id]._project();\n  \t\t}\n  \t},\n\n  \t_updatePaths: function () {\n  \t\tfor (var id in this._layers) {\n  \t\t\tthis._layers[id]._update();\n  \t\t}\n  \t},\n\n  \t_update: function () {\n  \t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n  \t\t// Subclasses are responsible of firing the 'update' event.\n  \t\tvar p = this.options.padding,\n  \t\t    size = this._map.getSize(),\n  \t\t    min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n  \t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n  \t\tthis._center = this._map.getCenter();\n  \t\tthis._zoom = this._map.getZoom();\n  \t}\n  });\n\n  /*\n   * @class Canvas\n   * @inherits Renderer\n   * @aka L.Canvas\n   *\n   * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n   * Inherits `Renderer`.\n   *\n   * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not\n   * available in all web browsers, notably IE8, and overlapping geometries might\n   * not display properly in some edge cases.\n   *\n   * @example\n   *\n   * Use Canvas by default for all paths in the map:\n   *\n   * ```js\n   * var map = L.map('map', {\n   * \trenderer: L.canvas()\n   * });\n   * ```\n   *\n   * Use a Canvas renderer with extra padding for specific vector geometries:\n   *\n   * ```js\n   * var map = L.map('map');\n   * var myRenderer = L.canvas({ padding: 0.5 });\n   * var line = L.polyline( coordinates, { renderer: myRenderer } );\n   * var circle = L.circle( center, { renderer: myRenderer } );\n   * ```\n   */\n\n  var Canvas = Renderer.extend({\n\n  \t// @section\n  \t// @aka Canvas options\n  \toptions: {\n  \t\t// @option tolerance: Number = 0\n  \t\t// How much to extend the click tolerance around a path/object on the map.\n  \t\ttolerance: 0\n  \t},\n\n  \tgetEvents: function () {\n  \t\tvar events = Renderer.prototype.getEvents.call(this);\n  \t\tevents.viewprereset = this._onViewPreReset;\n  \t\treturn events;\n  \t},\n\n  \t_onViewPreReset: function () {\n  \t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n  \t\tthis._postponeUpdatePaths = true;\n  \t},\n\n  \tonAdd: function () {\n  \t\tRenderer.prototype.onAdd.call(this);\n\n  \t\t// Redraw vectors since canvas is cleared upon removal,\n  \t\t// in case of removing the renderer itself from the map.\n  \t\tthis._draw();\n  \t},\n\n  \t_initContainer: function () {\n  \t\tvar container = this._container = document.createElement('canvas');\n\n  \t\ton(container, 'mousemove', this._onMouseMove, this);\n  \t\ton(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n  \t\ton(container, 'mouseout', this._handleMouseOut, this);\n  \t\tcontainer['_leaflet_disable_events'] = true;\n\n  \t\tthis._ctx = container.getContext('2d');\n  \t},\n\n  \t_destroyContainer: function () {\n  \t\tcancelAnimFrame(this._redrawRequest);\n  \t\tdelete this._ctx;\n  \t\tremove(this._container);\n  \t\toff(this._container);\n  \t\tdelete this._container;\n  \t},\n\n  \t_updatePaths: function () {\n  \t\tif (this._postponeUpdatePaths) { return; }\n\n  \t\tvar layer;\n  \t\tthis._redrawBounds = null;\n  \t\tfor (var id in this._layers) {\n  \t\t\tlayer = this._layers[id];\n  \t\t\tlayer._update();\n  \t\t}\n  \t\tthis._redraw();\n  \t},\n\n  \t_update: function () {\n  \t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n  \t\tRenderer.prototype._update.call(this);\n\n  \t\tvar b = this._bounds,\n  \t\t    container = this._container,\n  \t\t    size = b.getSize(),\n  \t\t    m = Browser.retina ? 2 : 1;\n\n  \t\tsetPosition(container, b.min);\n\n  \t\t// set canvas size (also clearing it); use double size on retina\n  \t\tcontainer.width = m * size.x;\n  \t\tcontainer.height = m * size.y;\n  \t\tcontainer.style.width = size.x + 'px';\n  \t\tcontainer.style.height = size.y + 'px';\n\n  \t\tif (Browser.retina) {\n  \t\t\tthis._ctx.scale(2, 2);\n  \t\t}\n\n  \t\t// translate so we use the same path coordinates after canvas element moves\n  \t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n  \t\t// Tell paths to redraw themselves\n  \t\tthis.fire('update');\n  \t},\n\n  \t_reset: function () {\n  \t\tRenderer.prototype._reset.call(this);\n\n  \t\tif (this._postponeUpdatePaths) {\n  \t\t\tthis._postponeUpdatePaths = false;\n  \t\t\tthis._updatePaths();\n  \t\t}\n  \t},\n\n  \t_initPath: function (layer) {\n  \t\tthis._updateDashArray(layer);\n  \t\tthis._layers[stamp(layer)] = layer;\n\n  \t\tvar order = layer._order = {\n  \t\t\tlayer: layer,\n  \t\t\tprev: this._drawLast,\n  \t\t\tnext: null\n  \t\t};\n  \t\tif (this._drawLast) { this._drawLast.next = order; }\n  \t\tthis._drawLast = order;\n  \t\tthis._drawFirst = this._drawFirst || this._drawLast;\n  \t},\n\n  \t_addPath: function (layer) {\n  \t\tthis._requestRedraw(layer);\n  \t},\n\n  \t_removePath: function (layer) {\n  \t\tvar order = layer._order;\n  \t\tvar next = order.next;\n  \t\tvar prev = order.prev;\n\n  \t\tif (next) {\n  \t\t\tnext.prev = prev;\n  \t\t} else {\n  \t\t\tthis._drawLast = prev;\n  \t\t}\n  \t\tif (prev) {\n  \t\t\tprev.next = next;\n  \t\t} else {\n  \t\t\tthis._drawFirst = next;\n  \t\t}\n\n  \t\tdelete layer._order;\n\n  \t\tdelete this._layers[stamp(layer)];\n\n  \t\tthis._requestRedraw(layer);\n  \t},\n\n  \t_updatePath: function (layer) {\n  \t\t// Redraw the union of the layer's old pixel\n  \t\t// bounds and the new pixel bounds.\n  \t\tthis._extendRedrawBounds(layer);\n  \t\tlayer._project();\n  \t\tlayer._update();\n  \t\t// The redraw will extend the redraw bounds\n  \t\t// with the new pixel bounds.\n  \t\tthis._requestRedraw(layer);\n  \t},\n\n  \t_updateStyle: function (layer) {\n  \t\tthis._updateDashArray(layer);\n  \t\tthis._requestRedraw(layer);\n  \t},\n\n  \t_updateDashArray: function (layer) {\n  \t\tif (typeof layer.options.dashArray === 'string') {\n  \t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n  \t\t\t    dashArray = [],\n  \t\t\t    dashValue,\n  \t\t\t    i;\n  \t\t\tfor (i = 0; i < parts.length; i++) {\n  \t\t\t\tdashValue = Number(parts[i]);\n  \t\t\t\t// Ignore dash array containing invalid lengths\n  \t\t\t\tif (isNaN(dashValue)) { return; }\n  \t\t\t\tdashArray.push(dashValue);\n  \t\t\t}\n  \t\t\tlayer.options._dashArray = dashArray;\n  \t\t} else {\n  \t\t\tlayer.options._dashArray = layer.options.dashArray;\n  \t\t}\n  \t},\n\n  \t_requestRedraw: function (layer) {\n  \t\tif (!this._map) { return; }\n\n  \t\tthis._extendRedrawBounds(layer);\n  \t\tthis._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this);\n  \t},\n\n  \t_extendRedrawBounds: function (layer) {\n  \t\tif (layer._pxBounds) {\n  \t\t\tvar padding = (layer.options.weight || 0) + 1;\n  \t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n  \t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n  \t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n  \t\t}\n  \t},\n\n  \t_redraw: function () {\n  \t\tthis._redrawRequest = null;\n\n  \t\tif (this._redrawBounds) {\n  \t\t\tthis._redrawBounds.min._floor();\n  \t\t\tthis._redrawBounds.max._ceil();\n  \t\t}\n\n  \t\tthis._clear(); // clear layers in redraw bounds\n  \t\tthis._draw(); // draw layers\n\n  \t\tthis._redrawBounds = null;\n  \t},\n\n  \t_clear: function () {\n  \t\tvar bounds = this._redrawBounds;\n  \t\tif (bounds) {\n  \t\t\tvar size = bounds.getSize();\n  \t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n  \t\t} else {\n  \t\t\tthis._ctx.save();\n  \t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n  \t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n  \t\t\tthis._ctx.restore();\n  \t\t}\n  \t},\n\n  \t_draw: function () {\n  \t\tvar layer, bounds = this._redrawBounds;\n  \t\tthis._ctx.save();\n  \t\tif (bounds) {\n  \t\t\tvar size = bounds.getSize();\n  \t\t\tthis._ctx.beginPath();\n  \t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n  \t\t\tthis._ctx.clip();\n  \t\t}\n\n  \t\tthis._drawing = true;\n\n  \t\tfor (var order = this._drawFirst; order; order = order.next) {\n  \t\t\tlayer = order.layer;\n  \t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n  \t\t\t\tlayer._updatePath();\n  \t\t\t}\n  \t\t}\n\n  \t\tthis._drawing = false;\n\n  \t\tthis._ctx.restore();  // Restore state before clipping.\n  \t},\n\n  \t_updatePoly: function (layer, closed) {\n  \t\tif (!this._drawing) { return; }\n\n  \t\tvar i, j, len2, p,\n  \t\t    parts = layer._parts,\n  \t\t    len = parts.length,\n  \t\t    ctx = this._ctx;\n\n  \t\tif (!len) { return; }\n\n  \t\tctx.beginPath();\n\n  \t\tfor (i = 0; i < len; i++) {\n  \t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n  \t\t\t\tp = parts[i][j];\n  \t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n  \t\t\t}\n  \t\t\tif (closed) {\n  \t\t\t\tctx.closePath();\n  \t\t\t}\n  \t\t}\n\n  \t\tthis._fillStroke(ctx, layer);\n\n  \t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n  \t},\n\n  \t_updateCircle: function (layer) {\n\n  \t\tif (!this._drawing || layer._empty()) { return; }\n\n  \t\tvar p = layer._point,\n  \t\t    ctx = this._ctx,\n  \t\t    r = Math.max(Math.round(layer._radius), 1),\n  \t\t    s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n  \t\tif (s !== 1) {\n  \t\t\tctx.save();\n  \t\t\tctx.scale(1, s);\n  \t\t}\n\n  \t\tctx.beginPath();\n  \t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n  \t\tif (s !== 1) {\n  \t\t\tctx.restore();\n  \t\t}\n\n  \t\tthis._fillStroke(ctx, layer);\n  \t},\n\n  \t_fillStroke: function (ctx, layer) {\n  \t\tvar options = layer.options;\n\n  \t\tif (options.fill) {\n  \t\t\tctx.globalAlpha = options.fillOpacity;\n  \t\t\tctx.fillStyle = options.fillColor || options.color;\n  \t\t\tctx.fill(options.fillRule || 'evenodd');\n  \t\t}\n\n  \t\tif (options.stroke && options.weight !== 0) {\n  \t\t\tif (ctx.setLineDash) {\n  \t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n  \t\t\t}\n  \t\t\tctx.globalAlpha = options.opacity;\n  \t\t\tctx.lineWidth = options.weight;\n  \t\t\tctx.strokeStyle = options.color;\n  \t\t\tctx.lineCap = options.lineCap;\n  \t\t\tctx.lineJoin = options.lineJoin;\n  \t\t\tctx.stroke();\n  \t\t}\n  \t},\n\n  \t// Canvas obviously doesn't have mouse events for individual drawn objects,\n  \t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n  \t_onClick: function (e) {\n  \t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n  \t\tfor (var order = this._drawFirst; order; order = order.next) {\n  \t\t\tlayer = order.layer;\n  \t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n  \t\t\t\tif (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {\n  \t\t\t\t\tclickedLayer = layer;\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t\tthis._fireEvent(clickedLayer ? [clickedLayer] : false, e);\n  \t},\n\n  \t_onMouseMove: function (e) {\n  \t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n  \t\tvar point = this._map.mouseEventToLayerPoint(e);\n  \t\tthis._handleMouseHover(e, point);\n  \t},\n\n\n  \t_handleMouseOut: function (e) {\n  \t\tvar layer = this._hoveredLayer;\n  \t\tif (layer) {\n  \t\t\t// if we're leaving the layer, fire mouseout\n  \t\t\tremoveClass(this._container, 'leaflet-interactive');\n  \t\t\tthis._fireEvent([layer], e, 'mouseout');\n  \t\t\tthis._hoveredLayer = null;\n  \t\t\tthis._mouseHoverThrottled = false;\n  \t\t}\n  \t},\n\n  \t_handleMouseHover: function (e, point) {\n  \t\tif (this._mouseHoverThrottled) {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tvar layer, candidateHoveredLayer;\n\n  \t\tfor (var order = this._drawFirst; order; order = order.next) {\n  \t\t\tlayer = order.layer;\n  \t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n  \t\t\t\tcandidateHoveredLayer = layer;\n  \t\t\t}\n  \t\t}\n\n  \t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n  \t\t\tthis._handleMouseOut(e);\n\n  \t\t\tif (candidateHoveredLayer) {\n  \t\t\t\taddClass(this._container, 'leaflet-interactive'); // change cursor\n  \t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n  \t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n  \t\t\t}\n  \t\t}\n\n  \t\tthis._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);\n\n  \t\tthis._mouseHoverThrottled = true;\n  \t\tsetTimeout(bind(function () {\n  \t\t\tthis._mouseHoverThrottled = false;\n  \t\t}, this), 32);\n  \t},\n\n  \t_fireEvent: function (layers, e, type) {\n  \t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n  \t},\n\n  \t_bringToFront: function (layer) {\n  \t\tvar order = layer._order;\n\n  \t\tif (!order) { return; }\n\n  \t\tvar next = order.next;\n  \t\tvar prev = order.prev;\n\n  \t\tif (next) {\n  \t\t\tnext.prev = prev;\n  \t\t} else {\n  \t\t\t// Already last\n  \t\t\treturn;\n  \t\t}\n  \t\tif (prev) {\n  \t\t\tprev.next = next;\n  \t\t} else if (next) {\n  \t\t\t// Update first entry unless this is the\n  \t\t\t// single entry\n  \t\t\tthis._drawFirst = next;\n  \t\t}\n\n  \t\torder.prev = this._drawLast;\n  \t\tthis._drawLast.next = order;\n\n  \t\torder.next = null;\n  \t\tthis._drawLast = order;\n\n  \t\tthis._requestRedraw(layer);\n  \t},\n\n  \t_bringToBack: function (layer) {\n  \t\tvar order = layer._order;\n\n  \t\tif (!order) { return; }\n\n  \t\tvar next = order.next;\n  \t\tvar prev = order.prev;\n\n  \t\tif (prev) {\n  \t\t\tprev.next = next;\n  \t\t} else {\n  \t\t\t// Already first\n  \t\t\treturn;\n  \t\t}\n  \t\tif (next) {\n  \t\t\tnext.prev = prev;\n  \t\t} else if (prev) {\n  \t\t\t// Update last entry unless this is the\n  \t\t\t// single entry\n  \t\t\tthis._drawLast = prev;\n  \t\t}\n\n  \t\torder.prev = null;\n\n  \t\torder.next = this._drawFirst;\n  \t\tthis._drawFirst.prev = order;\n  \t\tthis._drawFirst = order;\n\n  \t\tthis._requestRedraw(layer);\n  \t}\n  });\n\n  // @factory L.canvas(options?: Renderer options)\n  // Creates a Canvas renderer with the given options.\n  function canvas(options) {\n  \treturn Browser.canvas ? new Canvas(options) : null;\n  }\n\n  /*\n   * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n   */\n\n\n  var vmlCreate = (function () {\n  \ttry {\n  \t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n  \t\treturn function (name) {\n  \t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n  \t\t};\n  \t} catch (e) {\n  \t\t// Do not return fn from catch block so `e` can be garbage collected\n  \t\t// See https://github.com/Leaflet/Leaflet/pull/7279\n  \t}\n  \treturn function (name) {\n  \t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n  \t};\n  })();\n\n\n  /*\n   * @class SVG\n   *\n   *\n   * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n   * with old versions of Internet Explorer.\n   */\n\n  // mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\n  var vmlMixin = {\n\n  \t_initContainer: function () {\n  \t\tthis._container = create$1('div', 'leaflet-vml-container');\n  \t},\n\n  \t_update: function () {\n  \t\tif (this._map._animatingZoom) { return; }\n  \t\tRenderer.prototype._update.call(this);\n  \t\tthis.fire('update');\n  \t},\n\n  \t_initPath: function (layer) {\n  \t\tvar container = layer._container = vmlCreate('shape');\n\n  \t\taddClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n  \t\tcontainer.coordsize = '1 1';\n\n  \t\tlayer._path = vmlCreate('path');\n  \t\tcontainer.appendChild(layer._path);\n\n  \t\tthis._updateStyle(layer);\n  \t\tthis._layers[stamp(layer)] = layer;\n  \t},\n\n  \t_addPath: function (layer) {\n  \t\tvar container = layer._container;\n  \t\tthis._container.appendChild(container);\n\n  \t\tif (layer.options.interactive) {\n  \t\t\tlayer.addInteractiveTarget(container);\n  \t\t}\n  \t},\n\n  \t_removePath: function (layer) {\n  \t\tvar container = layer._container;\n  \t\tremove(container);\n  \t\tlayer.removeInteractiveTarget(container);\n  \t\tdelete this._layers[stamp(layer)];\n  \t},\n\n  \t_updateStyle: function (layer) {\n  \t\tvar stroke = layer._stroke,\n  \t\t    fill = layer._fill,\n  \t\t    options = layer.options,\n  \t\t    container = layer._container;\n\n  \t\tcontainer.stroked = !!options.stroke;\n  \t\tcontainer.filled = !!options.fill;\n\n  \t\tif (options.stroke) {\n  \t\t\tif (!stroke) {\n  \t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n  \t\t\t}\n  \t\t\tcontainer.appendChild(stroke);\n  \t\t\tstroke.weight = options.weight + 'px';\n  \t\t\tstroke.color = options.color;\n  \t\t\tstroke.opacity = options.opacity;\n\n  \t\t\tif (options.dashArray) {\n  \t\t\t\tstroke.dashStyle = isArray(options.dashArray) ?\n  \t\t\t\t    options.dashArray.join(' ') :\n  \t\t\t\t    options.dashArray.replace(/( *, *)/g, ' ');\n  \t\t\t} else {\n  \t\t\t\tstroke.dashStyle = '';\n  \t\t\t}\n  \t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n  \t\t\tstroke.joinstyle = options.lineJoin;\n\n  \t\t} else if (stroke) {\n  \t\t\tcontainer.removeChild(stroke);\n  \t\t\tlayer._stroke = null;\n  \t\t}\n\n  \t\tif (options.fill) {\n  \t\t\tif (!fill) {\n  \t\t\t\tfill = layer._fill = vmlCreate('fill');\n  \t\t\t}\n  \t\t\tcontainer.appendChild(fill);\n  \t\t\tfill.color = options.fillColor || options.color;\n  \t\t\tfill.opacity = options.fillOpacity;\n\n  \t\t} else if (fill) {\n  \t\t\tcontainer.removeChild(fill);\n  \t\t\tlayer._fill = null;\n  \t\t}\n  \t},\n\n  \t_updateCircle: function (layer) {\n  \t\tvar p = layer._point.round(),\n  \t\t    r = Math.round(layer._radius),\n  \t\t    r2 = Math.round(layer._radiusY || r);\n\n  \t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n  \t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n  \t},\n\n  \t_setPath: function (layer, path) {\n  \t\tlayer._path.v = path;\n  \t},\n\n  \t_bringToFront: function (layer) {\n  \t\ttoFront(layer._container);\n  \t},\n\n  \t_bringToBack: function (layer) {\n  \t\ttoBack(layer._container);\n  \t}\n  };\n\n  var create = Browser.vml ? vmlCreate : svgCreate;\n\n  /*\n   * @class SVG\n   * @inherits Renderer\n   * @aka L.SVG\n   *\n   * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n   * Inherits `Renderer`.\n   *\n   * Due to [technical limitations](https://caniuse.com/svg), SVG is not\n   * available in all web browsers, notably Android 2.x and 3.x.\n   *\n   * Although SVG is not available on IE7 and IE8, these browsers support\n   * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n   * (a now deprecated technology), and the SVG renderer will fall back to VML in\n   * this case.\n   *\n   * @example\n   *\n   * Use SVG by default for all paths in the map:\n   *\n   * ```js\n   * var map = L.map('map', {\n   * \trenderer: L.svg()\n   * });\n   * ```\n   *\n   * Use a SVG renderer with extra padding for specific vector geometries:\n   *\n   * ```js\n   * var map = L.map('map');\n   * var myRenderer = L.svg({ padding: 0.5 });\n   * var line = L.polyline( coordinates, { renderer: myRenderer } );\n   * var circle = L.circle( center, { renderer: myRenderer } );\n   * ```\n   */\n\n  var SVG = Renderer.extend({\n\n  \t_initContainer: function () {\n  \t\tthis._container = create('svg');\n\n  \t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n  \t\tthis._container.setAttribute('pointer-events', 'none');\n\n  \t\tthis._rootGroup = create('g');\n  \t\tthis._container.appendChild(this._rootGroup);\n  \t},\n\n  \t_destroyContainer: function () {\n  \t\tremove(this._container);\n  \t\toff(this._container);\n  \t\tdelete this._container;\n  \t\tdelete this._rootGroup;\n  \t\tdelete this._svgSize;\n  \t},\n\n  \t_update: function () {\n  \t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n  \t\tRenderer.prototype._update.call(this);\n\n  \t\tvar b = this._bounds,\n  \t\t    size = b.getSize(),\n  \t\t    container = this._container;\n\n  \t\t// set size of svg-container if changed\n  \t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n  \t\t\tthis._svgSize = size;\n  \t\t\tcontainer.setAttribute('width', size.x);\n  \t\t\tcontainer.setAttribute('height', size.y);\n  \t\t}\n\n  \t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n  \t\tsetPosition(container, b.min);\n  \t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n  \t\tthis.fire('update');\n  \t},\n\n  \t// methods below are called by vector layers implementations\n\n  \t_initPath: function (layer) {\n  \t\tvar path = layer._path = create('path');\n\n  \t\t// @namespace Path\n  \t\t// @option className: String = null\n  \t\t// Custom class name set on an element. Only for SVG renderer.\n  \t\tif (layer.options.className) {\n  \t\t\taddClass(path, layer.options.className);\n  \t\t}\n\n  \t\tif (layer.options.interactive) {\n  \t\t\taddClass(path, 'leaflet-interactive');\n  \t\t}\n\n  \t\tthis._updateStyle(layer);\n  \t\tthis._layers[stamp(layer)] = layer;\n  \t},\n\n  \t_addPath: function (layer) {\n  \t\tif (!this._rootGroup) { this._initContainer(); }\n  \t\tthis._rootGroup.appendChild(layer._path);\n  \t\tlayer.addInteractiveTarget(layer._path);\n  \t},\n\n  \t_removePath: function (layer) {\n  \t\tremove(layer._path);\n  \t\tlayer.removeInteractiveTarget(layer._path);\n  \t\tdelete this._layers[stamp(layer)];\n  \t},\n\n  \t_updatePath: function (layer) {\n  \t\tlayer._project();\n  \t\tlayer._update();\n  \t},\n\n  \t_updateStyle: function (layer) {\n  \t\tvar path = layer._path,\n  \t\t    options = layer.options;\n\n  \t\tif (!path) { return; }\n\n  \t\tif (options.stroke) {\n  \t\t\tpath.setAttribute('stroke', options.color);\n  \t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n  \t\t\tpath.setAttribute('stroke-width', options.weight);\n  \t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n  \t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n  \t\t\tif (options.dashArray) {\n  \t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n  \t\t\t} else {\n  \t\t\t\tpath.removeAttribute('stroke-dasharray');\n  \t\t\t}\n\n  \t\t\tif (options.dashOffset) {\n  \t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n  \t\t\t} else {\n  \t\t\t\tpath.removeAttribute('stroke-dashoffset');\n  \t\t\t}\n  \t\t} else {\n  \t\t\tpath.setAttribute('stroke', 'none');\n  \t\t}\n\n  \t\tif (options.fill) {\n  \t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n  \t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n  \t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n  \t\t} else {\n  \t\t\tpath.setAttribute('fill', 'none');\n  \t\t}\n  \t},\n\n  \t_updatePoly: function (layer, closed) {\n  \t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n  \t},\n\n  \t_updateCircle: function (layer) {\n  \t\tvar p = layer._point,\n  \t\t    r = Math.max(Math.round(layer._radius), 1),\n  \t\t    r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n  \t\t    arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n  \t\t// drawing a circle with two half-arcs\n  \t\tvar d = layer._empty() ? 'M0 0' :\n  \t\t\t'M' + (p.x - r) + ',' + p.y +\n  \t\t\tarc + (r * 2) + ',0 ' +\n  \t\t\tarc + (-r * 2) + ',0 ';\n\n  \t\tthis._setPath(layer, d);\n  \t},\n\n  \t_setPath: function (layer, path) {\n  \t\tlayer._path.setAttribute('d', path);\n  \t},\n\n  \t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n  \t_bringToFront: function (layer) {\n  \t\ttoFront(layer._path);\n  \t},\n\n  \t_bringToBack: function (layer) {\n  \t\ttoBack(layer._path);\n  \t}\n  });\n\n  if (Browser.vml) {\n  \tSVG.include(vmlMixin);\n  }\n\n  // @namespace SVG\n  // @factory L.svg(options?: Renderer options)\n  // Creates a SVG renderer with the given options.\n  function svg(options) {\n  \treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n  }\n\n  Map.include({\n  \t// @namespace Map; @method getRenderer(layer: Path): Renderer\n  \t// Returns the instance of `Renderer` that should be used to render the given\n  \t// `Path`. It will ensure that the `renderer` options of the map and paths\n  \t// are respected, and that the renderers do exist on the map.\n  \tgetRenderer: function (layer) {\n  \t\t// @namespace Path; @option renderer: Renderer\n  \t\t// Use this specific instance of `Renderer` for this path. Takes\n  \t\t// precedence over the map's [default renderer](#map-renderer).\n  \t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n  \t\tif (!renderer) {\n  \t\t\trenderer = this._renderer = this._createRenderer();\n  \t\t}\n\n  \t\tif (!this.hasLayer(renderer)) {\n  \t\t\tthis.addLayer(renderer);\n  \t\t}\n  \t\treturn renderer;\n  \t},\n\n  \t_getPaneRenderer: function (name) {\n  \t\tif (name === 'overlayPane' || name === undefined) {\n  \t\t\treturn false;\n  \t\t}\n\n  \t\tvar renderer = this._paneRenderers[name];\n  \t\tif (renderer === undefined) {\n  \t\t\trenderer = this._createRenderer({pane: name});\n  \t\t\tthis._paneRenderers[name] = renderer;\n  \t\t}\n  \t\treturn renderer;\n  \t},\n\n  \t_createRenderer: function (options) {\n  \t\t// @namespace Map; @option preferCanvas: Boolean = false\n  \t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n  \t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n  \t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n  \t}\n  });\n\n  /*\n   * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n   */\n\n  /*\n   * @class Rectangle\n   * @aka L.Rectangle\n   * @inherits Polygon\n   *\n   * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n   *\n   * @example\n   *\n   * ```js\n   * // define rectangle geographical bounds\n   * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n   *\n   * // create an orange rectangle\n   * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n   *\n   * // zoom the map to the rectangle bounds\n   * map.fitBounds(bounds);\n   * ```\n   *\n   */\n\n\n  var Rectangle = Polygon.extend({\n  \tinitialize: function (latLngBounds, options) {\n  \t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n  \t},\n\n  \t// @method setBounds(latLngBounds: LatLngBounds): this\n  \t// Redraws the rectangle with the passed bounds.\n  \tsetBounds: function (latLngBounds) {\n  \t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n  \t},\n\n  \t_boundsToLatLngs: function (latLngBounds) {\n  \t\tlatLngBounds = toLatLngBounds(latLngBounds);\n  \t\treturn [\n  \t\t\tlatLngBounds.getSouthWest(),\n  \t\t\tlatLngBounds.getNorthWest(),\n  \t\t\tlatLngBounds.getNorthEast(),\n  \t\t\tlatLngBounds.getSouthEast()\n  \t\t];\n  \t}\n  });\n\n\n  // @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\n  function rectangle(latLngBounds, options) {\n  \treturn new Rectangle(latLngBounds, options);\n  }\n\n  SVG.create = create;\n  SVG.pointsToPath = pointsToPath;\n\n  GeoJSON.geometryToLayer = geometryToLayer;\n  GeoJSON.coordsToLatLng = coordsToLatLng;\n  GeoJSON.coordsToLatLngs = coordsToLatLngs;\n  GeoJSON.latLngToCoords = latLngToCoords;\n  GeoJSON.latLngsToCoords = latLngsToCoords;\n  GeoJSON.getFeature = getFeature;\n  GeoJSON.asFeature = asFeature;\n\n  /*\n   * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n   * (zoom to a selected bounding box), enabled by default.\n   */\n\n  // @namespace Map\n  // @section Interaction Options\n  Map.mergeOptions({\n  \t// @option boxZoom: Boolean = true\n  \t// Whether the map can be zoomed to a rectangular area specified by\n  \t// dragging the mouse while pressing the shift key.\n  \tboxZoom: true\n  });\n\n  var BoxZoom = Handler.extend({\n  \tinitialize: function (map) {\n  \t\tthis._map = map;\n  \t\tthis._container = map._container;\n  \t\tthis._pane = map._panes.overlayPane;\n  \t\tthis._resetStateTimeout = 0;\n  \t\tmap.on('unload', this._destroy, this);\n  \t},\n\n  \taddHooks: function () {\n  \t\ton(this._container, 'mousedown', this._onMouseDown, this);\n  \t},\n\n  \tremoveHooks: function () {\n  \t\toff(this._container, 'mousedown', this._onMouseDown, this);\n  \t},\n\n  \tmoved: function () {\n  \t\treturn this._moved;\n  \t},\n\n  \t_destroy: function () {\n  \t\tremove(this._pane);\n  \t\tdelete this._pane;\n  \t},\n\n  \t_resetState: function () {\n  \t\tthis._resetStateTimeout = 0;\n  \t\tthis._moved = false;\n  \t},\n\n  \t_clearDeferredResetState: function () {\n  \t\tif (this._resetStateTimeout !== 0) {\n  \t\t\tclearTimeout(this._resetStateTimeout);\n  \t\t\tthis._resetStateTimeout = 0;\n  \t\t}\n  \t},\n\n  \t_onMouseDown: function (e) {\n  \t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n  \t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n  \t\t// will interrupt the interaction and orphan a box element in the container.\n  \t\tthis._clearDeferredResetState();\n  \t\tthis._resetState();\n\n  \t\tdisableTextSelection();\n  \t\tdisableImageDrag();\n\n  \t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n  \t\ton(document, {\n  \t\t\tcontextmenu: stop,\n  \t\t\tmousemove: this._onMouseMove,\n  \t\t\tmouseup: this._onMouseUp,\n  \t\t\tkeydown: this._onKeyDown\n  \t\t}, this);\n  \t},\n\n  \t_onMouseMove: function (e) {\n  \t\tif (!this._moved) {\n  \t\t\tthis._moved = true;\n\n  \t\t\tthis._box = create$1('div', 'leaflet-zoom-box', this._container);\n  \t\t\taddClass(this._container, 'leaflet-crosshair');\n\n  \t\t\tthis._map.fire('boxzoomstart');\n  \t\t}\n\n  \t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n  \t\tvar bounds = new Bounds(this._point, this._startPoint),\n  \t\t    size = bounds.getSize();\n\n  \t\tsetPosition(this._box, bounds.min);\n\n  \t\tthis._box.style.width  = size.x + 'px';\n  \t\tthis._box.style.height = size.y + 'px';\n  \t},\n\n  \t_finish: function () {\n  \t\tif (this._moved) {\n  \t\t\tremove(this._box);\n  \t\t\tremoveClass(this._container, 'leaflet-crosshair');\n  \t\t}\n\n  \t\tenableTextSelection();\n  \t\tenableImageDrag();\n\n  \t\toff(document, {\n  \t\t\tcontextmenu: stop,\n  \t\t\tmousemove: this._onMouseMove,\n  \t\t\tmouseup: this._onMouseUp,\n  \t\t\tkeydown: this._onKeyDown\n  \t\t}, this);\n  \t},\n\n  \t_onMouseUp: function (e) {\n  \t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n  \t\tthis._finish();\n\n  \t\tif (!this._moved) { return; }\n  \t\t// Postpone to next JS tick so internal click event handling\n  \t\t// still see it as \"moved\".\n  \t\tthis._clearDeferredResetState();\n  \t\tthis._resetStateTimeout = setTimeout(bind(this._resetState, this), 0);\n\n  \t\tvar bounds = new LatLngBounds(\n  \t\t        this._map.containerPointToLatLng(this._startPoint),\n  \t\t        this._map.containerPointToLatLng(this._point));\n\n  \t\tthis._map\n  \t\t\t.fitBounds(bounds)\n  \t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n  \t},\n\n  \t_onKeyDown: function (e) {\n  \t\tif (e.keyCode === 27) {\n  \t\t\tthis._finish();\n  \t\t\tthis._clearDeferredResetState();\n  \t\t\tthis._resetState();\n  \t\t}\n  \t}\n  });\n\n  // @section Handlers\n  // @property boxZoom: Handler\n  // Box (shift-drag with mouse) zoom handler.\n  Map.addInitHook('addHandler', 'boxZoom', BoxZoom);\n\n  /*\n   * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n   */\n\n  // @namespace Map\n  // @section Interaction Options\n\n  Map.mergeOptions({\n  \t// @option doubleClickZoom: Boolean|String = true\n  \t// Whether the map can be zoomed in by double clicking on it and\n  \t// zoomed out by double clicking while holding shift. If passed\n  \t// `'center'`, double-click zoom will zoom to the center of the\n  \t//  view regardless of where the mouse was.\n  \tdoubleClickZoom: true\n  });\n\n  var DoubleClickZoom = Handler.extend({\n  \taddHooks: function () {\n  \t\tthis._map.on('dblclick', this._onDoubleClick, this);\n  \t},\n\n  \tremoveHooks: function () {\n  \t\tthis._map.off('dblclick', this._onDoubleClick, this);\n  \t},\n\n  \t_onDoubleClick: function (e) {\n  \t\tvar map = this._map,\n  \t\t    oldZoom = map.getZoom(),\n  \t\t    delta = map.options.zoomDelta,\n  \t\t    zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n  \t\tif (map.options.doubleClickZoom === 'center') {\n  \t\t\tmap.setZoom(zoom);\n  \t\t} else {\n  \t\t\tmap.setZoomAround(e.containerPoint, zoom);\n  \t\t}\n  \t}\n  });\n\n  // @section Handlers\n  //\n  // Map properties include interaction handlers that allow you to control\n  // interaction behavior in runtime, enabling or disabling certain features such\n  // as dragging or touch zoom (see `Handler` methods). For example:\n  //\n  // ```js\n  // map.doubleClickZoom.disable();\n  // ```\n  //\n  // @property doubleClickZoom: Handler\n  // Double click zoom handler.\n  Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n\n  /*\n   * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n   */\n\n  // @namespace Map\n  // @section Interaction Options\n  Map.mergeOptions({\n  \t// @option dragging: Boolean = true\n  \t// Whether the map is draggable with mouse/touch or not.\n  \tdragging: true,\n\n  \t// @section Panning Inertia Options\n  \t// @option inertia: Boolean = *\n  \t// If enabled, panning of the map will have an inertia effect where\n  \t// the map builds momentum while dragging and continues moving in\n  \t// the same direction for some time. Feels especially nice on touch\n  \t// devices. Enabled by default.\n  \tinertia: true,\n\n  \t// @option inertiaDeceleration: Number = 3000\n  \t// The rate with which the inertial movement slows down, in pixels/second².\n  \tinertiaDeceleration: 3400, // px/s^2\n\n  \t// @option inertiaMaxSpeed: Number = Infinity\n  \t// Max speed of the inertial movement, in pixels/second.\n  \tinertiaMaxSpeed: Infinity, // px/s\n\n  \t// @option easeLinearity: Number = 0.2\n  \teaseLinearity: 0.2,\n\n  \t// TODO refactor, move to CRS\n  \t// @option worldCopyJump: Boolean = false\n  \t// With this option enabled, the map tracks when you pan to another \"copy\"\n  \t// of the world and seamlessly jumps to the original one so that all overlays\n  \t// like markers and vector layers are still visible.\n  \tworldCopyJump: false,\n\n  \t// @option maxBoundsViscosity: Number = 0.0\n  \t// If `maxBounds` is set, this option will control how solid the bounds\n  \t// are when dragging the map around. The default value of `0.0` allows the\n  \t// user to drag outside the bounds at normal speed, higher values will\n  \t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n  \t// solid, preventing the user from dragging outside the bounds.\n  \tmaxBoundsViscosity: 0.0\n  });\n\n  var Drag = Handler.extend({\n  \taddHooks: function () {\n  \t\tif (!this._draggable) {\n  \t\t\tvar map = this._map;\n\n  \t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n  \t\t\tthis._draggable.on({\n  \t\t\t\tdragstart: this._onDragStart,\n  \t\t\t\tdrag: this._onDrag,\n  \t\t\t\tdragend: this._onDragEnd\n  \t\t\t}, this);\n\n  \t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n  \t\t\tif (map.options.worldCopyJump) {\n  \t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n  \t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n  \t\t\t\tmap.whenReady(this._onZoomEnd, this);\n  \t\t\t}\n  \t\t}\n  \t\taddClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n  \t\tthis._draggable.enable();\n  \t\tthis._positions = [];\n  \t\tthis._times = [];\n  \t},\n\n  \tremoveHooks: function () {\n  \t\tremoveClass(this._map._container, 'leaflet-grab');\n  \t\tremoveClass(this._map._container, 'leaflet-touch-drag');\n  \t\tthis._draggable.disable();\n  \t},\n\n  \tmoved: function () {\n  \t\treturn this._draggable && this._draggable._moved;\n  \t},\n\n  \tmoving: function () {\n  \t\treturn this._draggable && this._draggable._moving;\n  \t},\n\n  \t_onDragStart: function () {\n  \t\tvar map = this._map;\n\n  \t\tmap._stop();\n  \t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n  \t\t\tvar bounds = toLatLngBounds(this._map.options.maxBounds);\n\n  \t\t\tthis._offsetLimit = toBounds(\n  \t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n  \t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n  \t\t\t\t\t.add(this._map.getSize()));\n\n  \t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n  \t\t} else {\n  \t\t\tthis._offsetLimit = null;\n  \t\t}\n\n  \t\tmap\n  \t\t    .fire('movestart')\n  \t\t    .fire('dragstart');\n\n  \t\tif (map.options.inertia) {\n  \t\t\tthis._positions = [];\n  \t\t\tthis._times = [];\n  \t\t}\n  \t},\n\n  \t_onDrag: function (e) {\n  \t\tif (this._map.options.inertia) {\n  \t\t\tvar time = this._lastTime = +new Date(),\n  \t\t\t    pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n  \t\t\tthis._positions.push(pos);\n  \t\t\tthis._times.push(time);\n\n  \t\t\tthis._prunePositions(time);\n  \t\t}\n\n  \t\tthis._map\n  \t\t    .fire('move', e)\n  \t\t    .fire('drag', e);\n  \t},\n\n  \t_prunePositions: function (time) {\n  \t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n  \t\t\tthis._positions.shift();\n  \t\t\tthis._times.shift();\n  \t\t}\n  \t},\n\n  \t_onZoomEnd: function () {\n  \t\tvar pxCenter = this._map.getSize().divideBy(2),\n  \t\t    pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n  \t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n  \t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n  \t},\n\n  \t_viscousLimit: function (value, threshold) {\n  \t\treturn value - (value - threshold) * this._viscosity;\n  \t},\n\n  \t_onPreDragLimit: function () {\n  \t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n  \t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n  \t\tvar limit = this._offsetLimit;\n  \t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n  \t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n  \t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n  \t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n  \t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n  \t},\n\n  \t_onPreDragWrap: function () {\n  \t\t// TODO refactor to be able to adjust map pane position after zoom\n  \t\tvar worldWidth = this._worldWidth,\n  \t\t    halfWidth = Math.round(worldWidth / 2),\n  \t\t    dx = this._initialWorldOffset,\n  \t\t    x = this._draggable._newPos.x,\n  \t\t    newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n  \t\t    newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n  \t\t    newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n  \t\tthis._draggable._absPos = this._draggable._newPos.clone();\n  \t\tthis._draggable._newPos.x = newX;\n  \t},\n\n  \t_onDragEnd: function (e) {\n  \t\tvar map = this._map,\n  \t\t    options = map.options,\n\n  \t\t    noInertia = !options.inertia || e.noInertia || this._times.length < 2;\n\n  \t\tmap.fire('dragend', e);\n\n  \t\tif (noInertia) {\n  \t\t\tmap.fire('moveend');\n\n  \t\t} else {\n  \t\t\tthis._prunePositions(+new Date());\n\n  \t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n  \t\t\t    duration = (this._lastTime - this._times[0]) / 1000,\n  \t\t\t    ease = options.easeLinearity,\n\n  \t\t\t    speedVector = direction.multiplyBy(ease / duration),\n  \t\t\t    speed = speedVector.distanceTo([0, 0]),\n\n  \t\t\t    limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n  \t\t\t    limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n  \t\t\t    decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n  \t\t\t    offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n  \t\t\tif (!offset.x && !offset.y) {\n  \t\t\t\tmap.fire('moveend');\n\n  \t\t\t} else {\n  \t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n  \t\t\t\trequestAnimFrame(function () {\n  \t\t\t\t\tmap.panBy(offset, {\n  \t\t\t\t\t\tduration: decelerationDuration,\n  \t\t\t\t\t\teaseLinearity: ease,\n  \t\t\t\t\t\tnoMoveStart: true,\n  \t\t\t\t\t\tanimate: true\n  \t\t\t\t\t});\n  \t\t\t\t});\n  \t\t\t}\n  \t\t}\n  \t}\n  });\n\n  // @section Handlers\n  // @property dragging: Handler\n  // Map dragging handler (by both mouse and touch).\n  Map.addInitHook('addHandler', 'dragging', Drag);\n\n  /*\n   * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n   */\n\n  // @namespace Map\n  // @section Keyboard Navigation Options\n  Map.mergeOptions({\n  \t// @option keyboard: Boolean = true\n  \t// Makes the map focusable and allows users to navigate the map with keyboard\n  \t// arrows and `+`/`-` keys.\n  \tkeyboard: true,\n\n  \t// @option keyboardPanDelta: Number = 80\n  \t// Amount of pixels to pan when pressing an arrow key.\n  \tkeyboardPanDelta: 80\n  });\n\n  var Keyboard = Handler.extend({\n\n  \tkeyCodes: {\n  \t\tleft:    [37],\n  \t\tright:   [39],\n  \t\tdown:    [40],\n  \t\tup:      [38],\n  \t\tzoomIn:  [187, 107, 61, 171],\n  \t\tzoomOut: [189, 109, 54, 173]\n  \t},\n\n  \tinitialize: function (map) {\n  \t\tthis._map = map;\n\n  \t\tthis._setPanDelta(map.options.keyboardPanDelta);\n  \t\tthis._setZoomDelta(map.options.zoomDelta);\n  \t},\n\n  \taddHooks: function () {\n  \t\tvar container = this._map._container;\n\n  \t\t// make the container focusable by tabbing\n  \t\tif (container.tabIndex <= 0) {\n  \t\t\tcontainer.tabIndex = '0';\n  \t\t}\n\n  \t\ton(container, {\n  \t\t\tfocus: this._onFocus,\n  \t\t\tblur: this._onBlur,\n  \t\t\tmousedown: this._onMouseDown\n  \t\t}, this);\n\n  \t\tthis._map.on({\n  \t\t\tfocus: this._addHooks,\n  \t\t\tblur: this._removeHooks\n  \t\t}, this);\n  \t},\n\n  \tremoveHooks: function () {\n  \t\tthis._removeHooks();\n\n  \t\toff(this._map._container, {\n  \t\t\tfocus: this._onFocus,\n  \t\t\tblur: this._onBlur,\n  \t\t\tmousedown: this._onMouseDown\n  \t\t}, this);\n\n  \t\tthis._map.off({\n  \t\t\tfocus: this._addHooks,\n  \t\t\tblur: this._removeHooks\n  \t\t}, this);\n  \t},\n\n  \t_onMouseDown: function () {\n  \t\tif (this._focused) { return; }\n\n  \t\tvar body = document.body,\n  \t\t    docEl = document.documentElement,\n  \t\t    top = body.scrollTop || docEl.scrollTop,\n  \t\t    left = body.scrollLeft || docEl.scrollLeft;\n\n  \t\tthis._map._container.focus();\n\n  \t\twindow.scrollTo(left, top);\n  \t},\n\n  \t_onFocus: function () {\n  \t\tthis._focused = true;\n  \t\tthis._map.fire('focus');\n  \t},\n\n  \t_onBlur: function () {\n  \t\tthis._focused = false;\n  \t\tthis._map.fire('blur');\n  \t},\n\n  \t_setPanDelta: function (panDelta) {\n  \t\tvar keys = this._panKeys = {},\n  \t\t    codes = this.keyCodes,\n  \t\t    i, len;\n\n  \t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n  \t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n  \t\t}\n  \t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n  \t\t\tkeys[codes.right[i]] = [panDelta, 0];\n  \t\t}\n  \t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n  \t\t\tkeys[codes.down[i]] = [0, panDelta];\n  \t\t}\n  \t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n  \t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n  \t\t}\n  \t},\n\n  \t_setZoomDelta: function (zoomDelta) {\n  \t\tvar keys = this._zoomKeys = {},\n  \t\t    codes = this.keyCodes,\n  \t\t    i, len;\n\n  \t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n  \t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n  \t\t}\n  \t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n  \t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n  \t\t}\n  \t},\n\n  \t_addHooks: function () {\n  \t\ton(document, 'keydown', this._onKeyDown, this);\n  \t},\n\n  \t_removeHooks: function () {\n  \t\toff(document, 'keydown', this._onKeyDown, this);\n  \t},\n\n  \t_onKeyDown: function (e) {\n  \t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n  \t\tvar key = e.keyCode,\n  \t\t    map = this._map,\n  \t\t    offset;\n\n  \t\tif (key in this._panKeys) {\n  \t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n  \t\t\t\toffset = this._panKeys[key];\n  \t\t\t\tif (e.shiftKey) {\n  \t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n  \t\t\t\t}\n\n  \t\t\t\tif (map.options.maxBounds) {\n  \t\t\t\t\toffset = map._limitOffset(toPoint(offset), map.options.maxBounds);\n  \t\t\t\t}\n\n  \t\t\t\tif (map.options.worldCopyJump) {\n  \t\t\t\t\tvar newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));\n  \t\t\t\t\tmap.panTo(newLatLng);\n  \t\t\t\t} else {\n  \t\t\t\t\tmap.panBy(offset);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t} else if (key in this._zoomKeys) {\n  \t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n  \t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n  \t\t\tmap.closePopup();\n\n  \t\t} else {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tstop(e);\n  \t}\n  });\n\n  // @section Handlers\n  // @section Handlers\n  // @property keyboard: Handler\n  // Keyboard navigation handler.\n  Map.addInitHook('addHandler', 'keyboard', Keyboard);\n\n  /*\n   * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n   */\n\n  // @namespace Map\n  // @section Interaction Options\n  Map.mergeOptions({\n  \t// @section Mouse wheel options\n  \t// @option scrollWheelZoom: Boolean|String = true\n  \t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n  \t// it will zoom to the center of the view regardless of where the mouse was.\n  \tscrollWheelZoom: true,\n\n  \t// @option wheelDebounceTime: Number = 40\n  \t// Limits the rate at which a wheel can fire (in milliseconds). By default\n  \t// user can't zoom via wheel more often than once per 40 ms.\n  \twheelDebounceTime: 40,\n\n  \t// @option wheelPxPerZoomLevel: Number = 60\n  \t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n  \t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n  \t// faster (and vice versa).\n  \twheelPxPerZoomLevel: 60\n  });\n\n  var ScrollWheelZoom = Handler.extend({\n  \taddHooks: function () {\n  \t\ton(this._map._container, 'wheel', this._onWheelScroll, this);\n\n  \t\tthis._delta = 0;\n  \t},\n\n  \tremoveHooks: function () {\n  \t\toff(this._map._container, 'wheel', this._onWheelScroll, this);\n  \t},\n\n  \t_onWheelScroll: function (e) {\n  \t\tvar delta = getWheelDelta(e);\n\n  \t\tvar debounce = this._map.options.wheelDebounceTime;\n\n  \t\tthis._delta += delta;\n  \t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n  \t\tif (!this._startTime) {\n  \t\t\tthis._startTime = +new Date();\n  \t\t}\n\n  \t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n  \t\tclearTimeout(this._timer);\n  \t\tthis._timer = setTimeout(bind(this._performZoom, this), left);\n\n  \t\tstop(e);\n  \t},\n\n  \t_performZoom: function () {\n  \t\tvar map = this._map,\n  \t\t    zoom = map.getZoom(),\n  \t\t    snap = this._map.options.zoomSnap || 0;\n\n  \t\tmap._stop(); // stop panning and fly animations if any\n\n  \t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n  \t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n  \t\t    d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n  \t\t    d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n  \t\t    delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n  \t\tthis._delta = 0;\n  \t\tthis._startTime = null;\n\n  \t\tif (!delta) { return; }\n\n  \t\tif (map.options.scrollWheelZoom === 'center') {\n  \t\t\tmap.setZoom(zoom + delta);\n  \t\t} else {\n  \t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n  \t\t}\n  \t}\n  });\n\n  // @section Handlers\n  // @property scrollWheelZoom: Handler\n  // Scroll wheel zoom handler.\n  Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n\n  /*\n   * L.Map.TapHold is used to simulate `contextmenu` event on long hold,\n   * which otherwise is not fired by mobile Safari.\n   */\n\n  var tapHoldDelay = 600;\n\n  // @namespace Map\n  // @section Interaction Options\n  Map.mergeOptions({\n  \t// @section Touch interaction options\n  \t// @option tapHold: Boolean\n  \t// Enables simulation of `contextmenu` event, default is `true` for mobile Safari.\n  \ttapHold: Browser.touchNative && Browser.safari && Browser.mobile,\n\n  \t// @option tapTolerance: Number = 15\n  \t// The max number of pixels a user can shift his finger during touch\n  \t// for it to be considered a valid tap.\n  \ttapTolerance: 15\n  });\n\n  var TapHold = Handler.extend({\n  \taddHooks: function () {\n  \t\ton(this._map._container, 'touchstart', this._onDown, this);\n  \t},\n\n  \tremoveHooks: function () {\n  \t\toff(this._map._container, 'touchstart', this._onDown, this);\n  \t},\n\n  \t_onDown: function (e) {\n  \t\tclearTimeout(this._holdTimeout);\n  \t\tif (e.touches.length !== 1) { return; }\n\n  \t\tvar first = e.touches[0];\n  \t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n  \t\tthis._holdTimeout = setTimeout(bind(function () {\n  \t\t\tthis._cancel();\n  \t\t\tif (!this._isTapValid()) { return; }\n\n  \t\t\t// prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events\n  \t\t\ton(document, 'touchend', preventDefault);\n  \t\t\ton(document, 'touchend touchcancel', this._cancelClickPrevent);\n  \t\t\tthis._simulateEvent('contextmenu', first);\n  \t\t}, this), tapHoldDelay);\n\n  \t\ton(document, 'touchend touchcancel contextmenu', this._cancel, this);\n  \t\ton(document, 'touchmove', this._onMove, this);\n  \t},\n\n  \t_cancelClickPrevent: function cancelClickPrevent() {\n  \t\toff(document, 'touchend', preventDefault);\n  \t\toff(document, 'touchend touchcancel', cancelClickPrevent);\n  \t},\n\n  \t_cancel: function () {\n  \t\tclearTimeout(this._holdTimeout);\n  \t\toff(document, 'touchend touchcancel contextmenu', this._cancel, this);\n  \t\toff(document, 'touchmove', this._onMove, this);\n  \t},\n\n  \t_onMove: function (e) {\n  \t\tvar first = e.touches[0];\n  \t\tthis._newPos = new Point(first.clientX, first.clientY);\n  \t},\n\n  \t_isTapValid: function () {\n  \t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n  \t},\n\n  \t_simulateEvent: function (type, e) {\n  \t\tvar simulatedEvent = new MouseEvent(type, {\n  \t\t\tbubbles: true,\n  \t\t\tcancelable: true,\n  \t\t\tview: window,\n  \t\t\t// detail: 1,\n  \t\t\tscreenX: e.screenX,\n  \t\t\tscreenY: e.screenY,\n  \t\t\tclientX: e.clientX,\n  \t\t\tclientY: e.clientY,\n  \t\t\t// button: 2,\n  \t\t\t// buttons: 2\n  \t\t});\n\n  \t\tsimulatedEvent._simulated = true;\n\n  \t\te.target.dispatchEvent(simulatedEvent);\n  \t}\n  });\n\n  // @section Handlers\n  // @property tapHold: Handler\n  // Long tap handler to simulate `contextmenu` event (useful in mobile Safari).\n  Map.addInitHook('addHandler', 'tapHold', TapHold);\n\n  /*\n   * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n   */\n\n  // @namespace Map\n  // @section Interaction Options\n  Map.mergeOptions({\n  \t// @section Touch interaction options\n  \t// @option touchZoom: Boolean|String = *\n  \t// Whether the map can be zoomed by touch-dragging with two fingers. If\n  \t// passed `'center'`, it will zoom to the center of the view regardless of\n  \t// where the touch events (fingers) were. Enabled for touch-capable web\n  \t// browsers.\n  \ttouchZoom: Browser.touch,\n\n  \t// @option bounceAtZoomLimits: Boolean = true\n  \t// Set it to false if you don't want the map to zoom beyond min/max zoom\n  \t// and then bounce back when pinch-zooming.\n  \tbounceAtZoomLimits: true\n  });\n\n  var TouchZoom = Handler.extend({\n  \taddHooks: function () {\n  \t\taddClass(this._map._container, 'leaflet-touch-zoom');\n  \t\ton(this._map._container, 'touchstart', this._onTouchStart, this);\n  \t},\n\n  \tremoveHooks: function () {\n  \t\tremoveClass(this._map._container, 'leaflet-touch-zoom');\n  \t\toff(this._map._container, 'touchstart', this._onTouchStart, this);\n  \t},\n\n  \t_onTouchStart: function (e) {\n  \t\tvar map = this._map;\n  \t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n  \t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n  \t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n  \t\tthis._centerPoint = map.getSize()._divideBy(2);\n  \t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n  \t\tif (map.options.touchZoom !== 'center') {\n  \t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n  \t\t}\n\n  \t\tthis._startDist = p1.distanceTo(p2);\n  \t\tthis._startZoom = map.getZoom();\n\n  \t\tthis._moved = false;\n  \t\tthis._zooming = true;\n\n  \t\tmap._stop();\n\n  \t\ton(document, 'touchmove', this._onTouchMove, this);\n  \t\ton(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n  \t\tpreventDefault(e);\n  \t},\n\n  \t_onTouchMove: function (e) {\n  \t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n  \t\tvar map = this._map,\n  \t\t    p1 = map.mouseEventToContainerPoint(e.touches[0]),\n  \t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]),\n  \t\t    scale = p1.distanceTo(p2) / this._startDist;\n\n  \t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n  \t\tif (!map.options.bounceAtZoomLimits && (\n  \t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n  \t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n  \t\t\tthis._zoom = map._limitZoom(this._zoom);\n  \t\t}\n\n  \t\tif (map.options.touchZoom === 'center') {\n  \t\t\tthis._center = this._startLatLng;\n  \t\t\tif (scale === 1) { return; }\n  \t\t} else {\n  \t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n  \t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n  \t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n  \t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n  \t\t}\n\n  \t\tif (!this._moved) {\n  \t\t\tmap._moveStart(true, false);\n  \t\t\tthis._moved = true;\n  \t\t}\n\n  \t\tcancelAnimFrame(this._animRequest);\n\n  \t\tvar moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);\n  \t\tthis._animRequest = requestAnimFrame(moveFn, this, true);\n\n  \t\tpreventDefault(e);\n  \t},\n\n  \t_onTouchEnd: function () {\n  \t\tif (!this._moved || !this._zooming) {\n  \t\t\tthis._zooming = false;\n  \t\t\treturn;\n  \t\t}\n\n  \t\tthis._zooming = false;\n  \t\tcancelAnimFrame(this._animRequest);\n\n  \t\toff(document, 'touchmove', this._onTouchMove, this);\n  \t\toff(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n  \t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n  \t\tif (this._map.options.zoomAnimation) {\n  \t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n  \t\t} else {\n  \t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n  \t\t}\n  \t}\n  });\n\n  // @section Handlers\n  // @property touchZoom: Handler\n  // Touch zoom handler.\n  Map.addInitHook('addHandler', 'touchZoom', TouchZoom);\n\n  Map.BoxZoom = BoxZoom;\n  Map.DoubleClickZoom = DoubleClickZoom;\n  Map.Drag = Drag;\n  Map.Keyboard = Keyboard;\n  Map.ScrollWheelZoom = ScrollWheelZoom;\n  Map.TapHold = TapHold;\n  Map.TouchZoom = TouchZoom;\n\n  exports.Bounds = Bounds;\n  exports.Browser = Browser;\n  exports.CRS = CRS;\n  exports.Canvas = Canvas;\n  exports.Circle = Circle;\n  exports.CircleMarker = CircleMarker;\n  exports.Class = Class;\n  exports.Control = Control;\n  exports.DivIcon = DivIcon;\n  exports.DivOverlay = DivOverlay;\n  exports.DomEvent = DomEvent;\n  exports.DomUtil = DomUtil;\n  exports.Draggable = Draggable;\n  exports.Evented = Evented;\n  exports.FeatureGroup = FeatureGroup;\n  exports.GeoJSON = GeoJSON;\n  exports.GridLayer = GridLayer;\n  exports.Handler = Handler;\n  exports.Icon = Icon;\n  exports.ImageOverlay = ImageOverlay;\n  exports.LatLng = LatLng;\n  exports.LatLngBounds = LatLngBounds;\n  exports.Layer = Layer;\n  exports.LayerGroup = LayerGroup;\n  exports.LineUtil = LineUtil;\n  exports.Map = Map;\n  exports.Marker = Marker;\n  exports.Mixin = Mixin;\n  exports.Path = Path;\n  exports.Point = Point;\n  exports.PolyUtil = PolyUtil;\n  exports.Polygon = Polygon;\n  exports.Polyline = Polyline;\n  exports.Popup = Popup;\n  exports.PosAnimation = PosAnimation;\n  exports.Projection = index;\n  exports.Rectangle = Rectangle;\n  exports.Renderer = Renderer;\n  exports.SVG = SVG;\n  exports.SVGOverlay = SVGOverlay;\n  exports.TileLayer = TileLayer;\n  exports.Tooltip = Tooltip;\n  exports.Transformation = Transformation;\n  exports.Util = Util;\n  exports.VideoOverlay = VideoOverlay;\n  exports.bind = bind;\n  exports.bounds = toBounds;\n  exports.canvas = canvas;\n  exports.circle = circle;\n  exports.circleMarker = circleMarker;\n  exports.control = control;\n  exports.divIcon = divIcon;\n  exports.extend = extend;\n  exports.featureGroup = featureGroup;\n  exports.geoJSON = geoJSON;\n  exports.geoJson = geoJson;\n  exports.gridLayer = gridLayer;\n  exports.icon = icon;\n  exports.imageOverlay = imageOverlay;\n  exports.latLng = toLatLng;\n  exports.latLngBounds = toLatLngBounds;\n  exports.layerGroup = layerGroup;\n  exports.map = createMap;\n  exports.marker = marker;\n  exports.point = toPoint;\n  exports.polygon = polygon;\n  exports.polyline = polyline;\n  exports.popup = popup;\n  exports.rectangle = rectangle;\n  exports.setOptions = setOptions;\n  exports.stamp = stamp;\n  exports.svg = svg;\n  exports.svgOverlay = svgOverlay;\n  exports.tileLayer = tileLayer;\n  exports.tooltip = tooltip;\n  exports.transformation = toTransformation;\n  exports.version = version;\n  exports.videoOverlay = videoOverlay;\n\n  var oldL = window.L;\n  exports.noConflict = function() {\n  \twindow.L = oldL;\n  \treturn this;\n  }\n  // Always export us to window global (see #2364)\n  window.L = exports;\n\n}));\n//# sourceMappingURL=leaflet-src.js.map\n","'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n","/**\r\n * DBSCAN - Density based clustering\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * DBSCAN class construcotr\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {DBSCAN}\r\n */\r\nfunction DBSCAN(dataset, epsilon, minPts, distanceFunction) {\r\n  /** @type {Array} */\r\n  this.dataset = [];\r\n  /** @type {number} */\r\n  this.epsilon = 1;\r\n  /** @type {number} */\r\n  this.minPts = 2;\r\n  /** @type {function} */\r\n  this.distance = this._euclideanDistance;\r\n  /** @type {Array} */\r\n  this.clusters = [];\r\n  /** @type {Array} */\r\n  this.noise = [];\r\n\r\n  // temporary variables used during computation\r\n\r\n  /** @type {Array} */\r\n  this._visited = [];\r\n  /** @type {Array} */\r\n  this._assigned = [];\r\n  /** @type {number} */\r\n  this._datasetLength = 0;\r\n\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n};\r\n\r\n/******************************************************************************/\r\n// public functions\r\n\r\n/**\r\n * Start clustering\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nDBSCAN.prototype.run = function(dataset, epsilon, minPts, distanceFunction) {\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n\r\n  for (var pointId = 0; pointId < this._datasetLength; pointId++) {\r\n    // if point is not visited, check if it forms a cluster\r\n    if (this._visited[pointId] !== 1) {\r\n      this._visited[pointId] = 1;\r\n\r\n      // if closest neighborhood is too small to form a cluster, mark as noise\r\n      var neighbors = this._regionQuery(pointId);\r\n\r\n      if (neighbors.length < this.minPts) {\r\n        this.noise.push(pointId);\r\n      } else {\r\n        // create new cluster and add point\r\n        var clusterId = this.clusters.length;\r\n        this.clusters.push([]);\r\n        this._addToCluster(pointId, clusterId);\r\n\r\n        this._expandCluster(clusterId, neighbors);\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.clusters;\r\n};\r\n\r\n/******************************************************************************/\r\n// protected functions\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distance\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._init = function(dataset, epsilon, minPts, distance) {\r\n\r\n  if (dataset) {\r\n\r\n    if (!(dataset instanceof Array)) {\r\n      throw Error('Dataset must be of type array, ' +\r\n        typeof dataset + ' given');\r\n    }\r\n\r\n    this.dataset = dataset;\r\n    this.clusters = [];\r\n    this.noise = [];\r\n\r\n    this._datasetLength = dataset.length;\r\n    this._visited = new Array(this._datasetLength);\r\n    this._assigned = new Array(this._datasetLength);\r\n  }\r\n\r\n  if (epsilon) {\r\n    this.epsilon = epsilon;\r\n  }\r\n\r\n  if (minPts) {\r\n    this.minPts = minPts;\r\n  }\r\n\r\n  if (distance) {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * Expand cluster to closest points of given neighborhood\r\n *\r\n * @param {number} clusterId\r\n * @param {Array} neighbors\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._expandCluster = function(clusterId, neighbors) {\r\n\r\n  /**\r\n   * It's very important to calculate length of neighbors array each time,\r\n   * as the number of elements changes over time\r\n   */\r\n  for (var i = 0; i < neighbors.length; i++) {\r\n    var pointId2 = neighbors[i];\r\n\r\n    if (this._visited[pointId2] !== 1) {\r\n      this._visited[pointId2] = 1;\r\n      var neighbors2 = this._regionQuery(pointId2);\r\n\r\n      if (neighbors2.length >= this.minPts) {\r\n        neighbors = this._mergeArrays(neighbors, neighbors2);\r\n      }\r\n    }\r\n\r\n    // add to cluster\r\n    if (this._assigned[pointId2] !== 1) {\r\n      this._addToCluster(pointId2, clusterId);\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Add new point to cluster\r\n *\r\n * @param {number} pointId\r\n * @param {number} clusterId\r\n */\r\nDBSCAN.prototype._addToCluster = function(pointId, clusterId) {\r\n  this.clusters[clusterId].push(pointId);\r\n  this._assigned[pointId] = 1;\r\n};\r\n\r\n/**\r\n * Find all neighbors around given point\r\n *\r\n * @param {number} pointId,\r\n * @param {number} epsilon\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._regionQuery = function(pointId) {\r\n  var neighbors = [];\r\n\r\n  for (var id = 0; id < this._datasetLength; id++) {\r\n    var dist = this.distance(this.dataset[pointId], this.dataset[id]);\r\n    if (dist < this.epsilon) {\r\n      neighbors.push(id);\r\n    }\r\n  }\r\n\r\n  return neighbors;\r\n};\r\n\r\n/******************************************************************************/\r\n// helpers\r\n\r\n/**\r\n * @param {Array} a\r\n * @param {Array} b\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._mergeArrays = function(a, b) {\r\n  var len = b.length;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    var P = b[i];\r\n    if (a.indexOf(P) < 0) {\r\n      a.push(P);\r\n    }\r\n  }\r\n\r\n  return a;\r\n};\r\n\r\n/**\r\n * Calculate euclidean distance in multidimensional space\r\n *\r\n * @param {Array} p\r\n * @param {Array} q\r\n * @returns {number}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._euclideanDistance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    sum += (p[i] - q[i]) * (p[i] - q[i]);\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = DBSCAN;\r\n}\r\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar $TypeError = TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw new $TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n","'use strict';\nvar parent = require('../../stable/function');\nrequire('../../modules/esnext.function.metadata');\n\nmodule.exports = parent;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared-store');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar AsyncIterator = globalThis.AsyncIterator;\nvar PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;\nvar AsyncIteratorPrototype, prototype;\n\nif (PassedAsyncIteratorPrototype) {\n  AsyncIteratorPrototype = PassedAsyncIteratorPrototype;\n} else if (isCallable(AsyncIterator)) {\n  AsyncIteratorPrototype = AsyncIterator.prototype;\n} else if (shared[USE_FUNCTION_CONSTRUCTOR] || globalThis[USE_FUNCTION_CONSTRUCTOR]) {\n  try {\n    // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax\n    prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));\n    if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;\n  } catch (error) { /* empty */ }\n}\n\nif (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};\nelse if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);\n\nif (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {\n  defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = AsyncIteratorPrototype;\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-reversed');\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});Object.defineProperty(exports,\"TrackingPropType\",{enumerable:true,get:function get(){return _TrackingPropType[\"default\"]}});Object.defineProperty(exports,\"deepmerge\",{enumerable:true,get:function get(){return _deepmerge[\"default\"]}});exports[\"default\"]=void 0;Object.defineProperty(exports,\"track\",{enumerable:true,get:function get(){return _trackingHoC[\"default\"]}});Object.defineProperty(exports,\"trackEvent\",{enumerable:true,get:function get(){return _trackEventMethodDecorator[\"default\"]}});Object.defineProperty(exports,\"useTracking\",{enumerable:true,get:function get(){return _useTracking[\"default\"]}});Object.defineProperty(exports,\"withTracking\",{enumerable:true,get:function get(){return _withTrackingComponentDecorator[\"default\"]}});var _trackingHoC=_interopRequireDefault(require(\"./trackingHoC\"));var _deepmerge=_interopRequireDefault(require(\"deepmerge\"));var _withTrackingComponentDecorator=_interopRequireDefault(require(\"./withTrackingComponentDecorator\"));var _trackEventMethodDecorator=_interopRequireDefault(require(\"./trackEventMethodDecorator\"));var _TrackingPropType=_interopRequireDefault(require(\"./TrackingPropType\"));var _useTracking=_interopRequireDefault(require(\"./useTracking\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}var _default=_trackingHoC[\"default\"];exports[\"default\"]=_default;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId;\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if (Array.isArray($schema)) {\n    var $additionalItems = it.schema.additionalItems;\n    if ($additionalItems === false) {\n      out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n      var $currErrSchemaPath = $errSchemaPath;\n      $errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += '  if (!' + ($valid) + ') {   ';\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n      out += ' } ';\n      $errSchemaPath = $currErrSchemaPath;\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n          var $passData = $data + '[' + $i + ']';\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + '[' + $i + ']';\n          $it.errSchemaPath = $errSchemaPath + '/' + $i;\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n          $it.dataPathArr[$dataNxt] = $i;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n    if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {\n      $it.schema = $additionalItems;\n      $it.schemaPath = it.schemaPath + '.additionalItems';\n      $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n      var $passData = $data + '[' + $idx + ']';\n      $it.dataPathArr[$dataNxt] = $idx;\n      var $code = it.validate($it);\n      $it.baseId = $currentBaseId;\n      if (it.util.varOccurences($code, $nextData) < 2) {\n        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n      } else {\n        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n      }\n      if ($breakOnError) {\n        out += ' if (!' + ($nextValid) + ') break; ';\n      }\n      out += ' } }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  } else if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    if ($breakOnError) {\n      out += ' if (!' + ($nextValid) + ') break; ';\n    }\n    out += ' }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","'use strict';\nvar CancelablePromise = require('../../util/cancelablepromise');\nvar DefaultPeerConnectionManager = require('./peerconnectionmanager');\nvar DefaultRoomV2 = require('./room');\nvar DefaultTransport = require('./twilioconnectiontransport');\nvar _a = require('../../util/twilio-video-errors'), SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError, SignalingIncomingMessageInvalidError = _a.SignalingIncomingMessageInvalidError;\nvar _b = require('../../util'), flatMap = _b.flatMap, createRoomConnectEventPayload = _b.createRoomConnectEventPayload;\nfunction createCancelableRoomSignalingPromise(token, wsServer, localParticipant, encodingParameters, preferredCodecs, options) {\n    options = Object.assign({\n        PeerConnectionManager: DefaultPeerConnectionManager,\n        RoomV2: DefaultRoomV2,\n        Transport: DefaultTransport\n    }, options);\n    var adaptiveSimulcast = preferredCodecs.video[0] && preferredCodecs.video[0].adaptiveSimulcast === true;\n    var PeerConnectionManager = options.PeerConnectionManager, RoomV2 = options.RoomV2, Transport = options.Transport, iceServers = options.iceServers, log = options.log;\n    var peerConnectionManager = new PeerConnectionManager(encodingParameters, preferredCodecs, options);\n    var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return [trackV2.trackTransceiver]; });\n    peerConnectionManager.setTrackSenders(trackSenders);\n    var cancellationError = new Error('Canceled');\n    var transport;\n    var cancelablePromise = new CancelablePromise(function (resolve, reject, isCanceled) {\n        var onIced = function (iceServers) {\n            if (isCanceled()) {\n                reject(cancellationError);\n                return Promise.reject(cancellationError);\n            }\n            log.debug('Got ICE servers:', iceServers);\n            options.iceServers = iceServers;\n            peerConnectionManager.setConfiguration(options);\n            return peerConnectionManager.createAndOffer().then(function () {\n                if (isCanceled()) {\n                    reject(cancellationError);\n                    throw cancellationError;\n                }\n                log.debug('createAndOffer() succeeded.');\n                // NOTE(mmalavalli): PeerConnectionManager#createAndOffer() queues the\n                // initial offer in the event queue for the 'description' event. So,\n                // we are dequeueing to prevent the spurious 'update' message sent by\n                // the client after connecting to a room.\n                peerConnectionManager.dequeue('description');\n            }).catch(function (error) {\n                log.error('createAndOffer() failed:', error);\n                reject(error);\n                throw error;\n            });\n        };\n        var automaticSubscription = options.automaticSubscription, bandwidthProfile = options.bandwidthProfile, dominantSpeaker = options.dominantSpeaker, environment = options.environment, eventObserver = options.eventObserver, loggerName = options.loggerName, logLevel = options.logLevel, name = options.name, networkMonitor = options.networkMonitor, networkQuality = options.networkQuality, notifyWarnings = options.notifyWarnings, realm = options.realm, sdpSemantics = options.sdpSemantics;\n        // decide which msp channels to request\n        // dominantSpeaker, networkQuality\n        var trackPriority = !!bandwidthProfile;\n        var trackSwitchOff = !!bandwidthProfile;\n        var renderHints = !!bandwidthProfile &&\n            (options.clientTrackSwitchOffControl !== 'disabled' || options.contentPreferencesMode !== 'disabled');\n        var transportOptions = Object.assign({\n            adaptiveSimulcast: adaptiveSimulcast,\n            automaticSubscription: automaticSubscription,\n            dominantSpeaker: dominantSpeaker,\n            environment: environment,\n            eventObserver: eventObserver,\n            loggerName: loggerName,\n            logLevel: logLevel,\n            networkMonitor: networkMonitor,\n            networkQuality: networkQuality,\n            notifyWarnings: notifyWarnings,\n            iceServers: iceServers,\n            onIced: onIced,\n            realm: realm,\n            renderHints: renderHints,\n            sdpSemantics: sdpSemantics,\n            trackPriority: trackPriority,\n            trackSwitchOff: trackSwitchOff\n        }, bandwidthProfile ? {\n            bandwidthProfile: bandwidthProfile\n        } : {});\n        transport = new Transport(name, token, localParticipant, peerConnectionManager, wsServer, transportOptions);\n        var connectEventPayload = createRoomConnectEventPayload(options);\n        eventObserver.emit('event', connectEventPayload);\n        transport.once('connected', function (initialState) {\n            log.debug('Transport connected:', initialState);\n            if (isCanceled()) {\n                reject(cancellationError);\n                return;\n            }\n            var localParticipantState = initialState.participant;\n            if (!localParticipantState) {\n                reject(new SignalingIncomingMessageInvalidError());\n                return;\n            }\n            resolve(new RoomV2(localParticipant, initialState, transport, peerConnectionManager, options));\n        });\n        transport.once('stateChanged', function (state, error) {\n            if (state === 'disconnected') {\n                transport = null;\n                reject(error || new SignalingConnectionDisconnectedError());\n            }\n            else {\n                log.debug('Transport state changed:', state);\n            }\n        });\n    }, function () {\n        if (transport) {\n            transport.disconnect();\n            transport = null;\n        }\n    });\n    cancelablePromise.catch(function () {\n        if (transport) {\n            transport.disconnect();\n            transport = null;\n        }\n        peerConnectionManager.close();\n    });\n    return cancelablePromise;\n}\nmodule.exports = createCancelableRoomSignalingPromise;\n//# sourceMappingURL=cancelableroomsignalingpromise.js.map","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl:\n            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n                '_'\n            ),\n        monthsGenitiveEl:\n            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n                '_'\n            ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","var mathTrig = require('./math-trig');\nvar text = require('./text');\nvar jStat = require('jstat');\nvar utils = require('./utils/common');\nvar evalExpression = require('./utils/criteria-eval');\nvar error = require('./utils/error');\nvar misc = require('./miscellaneous');\n\nvar SQRT2PI = 2.5066282746310002;\n\nexports.AVEDEV = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  return jStat.sum(jStat(range).subtract(jStat.mean(range)).abs()[0]) / range.length;\n};\n\nexports.AVERAGE = function() {\n  var range = utils.numbers(utils.flatten(arguments));\n  var n = range.length;\n  var sum = 0;\n  var count = 0;\n  var result;\n\n  for (var i = 0; i < n; i++) {\n    sum += range[i];\n    count += 1;\n  }\n  result = sum / count;\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.AVERAGEA = function() {\n  var range = utils.flatten(arguments);\n  var n = range.length;\n  var sum = 0;\n  var count = 0;\n  var result;\n  for (var i = 0; i < n; i++) {\n    var el = range[i];\n    if (typeof el === 'number') {\n      sum += el;\n    }\n    if (el === true) {\n      sum++;\n    }\n    if (el !== null) {\n      count++;\n    }\n  }\n  result = sum / count;\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.AVERAGEIF = function(range, criteria, average_range) {\n  if (arguments.length <= 1) {\n    return error.na;\n  }\n  average_range = average_range || range;\n  range = utils.flatten(range);\n  average_range = utils.parseNumberArray(utils.flatten(average_range));\n\n  if (average_range instanceof Error) {\n    return average_range;\n  }\n  var average_count = 0;\n  var result = 0;\n  var isWildcard = criteria === void 0 || criteria === '*';\n  var tokenizedCriteria = isWildcard ? null : evalExpression.parse(criteria + '');\n\n  for (var i = 0; i < range.length; i++) {\n    var value = range[i];\n\n    if (isWildcard) {\n      result += average_range[i];\n      average_count++;\n    } else {\n      var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n      if (evalExpression.compute(tokens)) {\n        result += average_range[i];\n        average_count++;\n      }\n    }\n  }\n\n  return result / average_count;\n};\n\nexports.AVERAGEIFS = function() {\n  // Does not work with multi dimensional ranges yet!\n  //http://office.microsoft.com/en-001/excel-help/averageifs-function-HA010047493.aspx\n  var args = utils.argsToArray(arguments);\n  var criteriaLength = (args.length - 1) / 2;\n  var range = utils.flatten(args[0]);\n  var count = 0;\n  var result = 0;\n\n  for (var i = 0; i < range.length; i++) {\n    var isMeetCondition = false;\n\n    for (var j = 0; j < criteriaLength; j++) {\n      var value = args[2 * j + 1][i];\n      var criteria = args[2 * j + 2];\n      var isWildcard = criteria === void 0 || criteria === '*';\n      var computedResult = false;\n\n      if (isWildcard) {\n        computedResult = true;\n      } else {\n        var tokenizedCriteria = evalExpression.parse(criteria + '');\n        var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n        computedResult = evalExpression.compute(tokens);\n      }\n\n      // Criterias are calculated as AND so any `false` breakes the loop as unmeet condition\n      if (!computedResult) {\n        isMeetCondition = false;\n        break;\n      }\n\n      isMeetCondition = true;\n    }\n\n    if (isMeetCondition) {\n      result += range[i];\n      count++;\n    }\n  }\n\n  var average = result / count;\n\n  if (isNaN(average)) {\n    return 0;\n  } else {\n    return average;\n  }\n};\n\nexports.BETA = {};\n\nexports.BETA.DIST = function(x, alpha, beta, cumulative, A, B) {\n  if (arguments.length < 4) {\n    return error.value;\n  }\n\n  A = (A === undefined) ? 0 : A;\n  B = (B === undefined) ? 1 : B;\n\n  x = utils.parseNumber(x);\n  alpha = utils.parseNumber(alpha);\n  beta = utils.parseNumber(beta);\n  A = utils.parseNumber(A);\n  B = utils.parseNumber(B);\n  if (utils.anyIsError(x, alpha, beta, A, B)) {\n    return error.value;\n  }\n\n  x = (x - A) / (B - A);\n  return (cumulative) ? jStat.beta.cdf(x, alpha, beta) : jStat.beta.pdf(x, alpha, beta);\n};\n\nexports.BETA.INV = function(probability, alpha, beta, A, B) {\n  A = (A === undefined) ? 0 : A;\n  B = (B === undefined) ? 1 : B;\n\n  probability = utils.parseNumber(probability);\n  alpha = utils.parseNumber(alpha);\n  beta = utils.parseNumber(beta);\n  A = utils.parseNumber(A);\n  B = utils.parseNumber(B);\n  if (utils.anyIsError(probability, alpha, beta, A, B)) {\n    return error.value;\n  }\n\n  return jStat.beta.inv(probability, alpha, beta) * (B - A) + A;\n};\n\nexports.BINOM = {};\n\nexports.BINOM.DIST = function(successes, trials, probability, cumulative) {\n  successes = utils.parseNumber(successes);\n  trials = utils.parseNumber(trials);\n  probability = utils.parseNumber(probability);\n  cumulative = utils.parseNumber(cumulative);\n  if (utils.anyIsError(successes, trials, probability, cumulative)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.binomial.cdf(successes, trials, probability) : jStat.binomial.pdf(successes, trials, probability);\n};\n\nexports.BINOM.DIST.RANGE = function(trials, probability, successes, successes2) {\n  successes2 = (successes2 === undefined) ? successes : successes2;\n\n  trials = utils.parseNumber(trials);\n  probability = utils.parseNumber(probability);\n  successes = utils.parseNumber(successes);\n  successes2 = utils.parseNumber(successes2);\n  if (utils.anyIsError(trials, probability, successes, successes2)) {\n    return error.value;\n  }\n\n  var result = 0;\n  for (var i = successes; i <= successes2; i++) {\n    result += mathTrig.COMBIN(trials, i) * Math.pow(probability, i) * Math.pow(1 - probability, trials - i);\n  }\n  return result;\n};\n\nexports.BINOM.INV = function(trials, probability, alpha) {\n  trials = utils.parseNumber(trials);\n  probability = utils.parseNumber(probability);\n  alpha = utils.parseNumber(alpha);\n  if (utils.anyIsError(trials, probability, alpha)) {\n    return error.value;\n  }\n\n  var x = 0;\n  while (x <= trials) {\n    if (jStat.binomial.cdf(x, trials, probability) >= alpha) {\n      return x;\n    }\n    x++;\n  }\n};\n\nexports.CHISQ = {};\n\nexports.CHISQ.DIST = function(x, k, cumulative) {\n  x = utils.parseNumber(x);\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(x, k)) {\n    return error.value;\n  }\n\n  return (cumulative) ? jStat.chisquare.cdf(x, k) : jStat.chisquare.pdf(x, k);\n};\n\nexports.CHISQ.DIST.RT = function(x, k) {\n  if (!x | !k) {\n    return error.na;\n  }\n\n  if (x < 1 || k > Math.pow(10, 10)) {\n    return error.num;\n  }\n\n  if ((typeof x !== 'number') || (typeof k !== 'number')) {\n    return error.value;\n  }\n\n  return 1 -  jStat.chisquare.cdf(x, k);\n};\n\nexports.CHISQ.INV = function(probability, k) {\n  probability = utils.parseNumber(probability);\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(probability, k)) {\n    return error.value;\n  }\n  return jStat.chisquare.inv(probability, k);\n};\n\nexports.CHISQ.INV.RT = function(p, k) {\n  if (!p | !k) {\n    return error.na;\n  }\n\n  if (p < 0 || p > 1 || k < 1 || k > Math.pow(10, 10)) {\n    return error.num;\n  }\n\n  if ((typeof p !== 'number') || (typeof k !== 'number')) {\n    return error.value;\n  }\n\n  return jStat.chisquare.inv(1.0 - p, k);\n};\n\nexports.CHISQ.TEST = function(observed, expected) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  if ((!(observed instanceof Array)) || (!(expected instanceof Array))) {\n    return error.value;\n  }\n\n  if (observed.length !== expected.length) {\n    return error.value;\n  }\n\n  if (observed[0] && expected[0] &&\n    observed[0].length !== expected[0].length) {\n    return error.value;\n  }\n\n  var row = observed.length;\n  var tmp, i, j;\n\n  // Convert single-dimension array into two-dimension array\n  for (i = 0; i < row; i ++) {\n    if (!(observed[i] instanceof Array)) {\n      tmp = observed[i];\n      observed[i] = [];\n      observed[i].push(tmp);\n    }\n    if (!(expected[i] instanceof Array)) {\n      tmp = expected[i];\n      expected[i] = [];\n      expected[i].push(tmp);\n    }\n  }\n\n  var col = observed[0].length;\n  var dof = (col === 1) ? row-1 : (row-1)*(col-1);\n  var xsqr = 0;\n  var Pi =Math.PI;\n\n  for (i = 0; i < row; i ++) {\n    for (j = 0; j < col; j ++) {\n      xsqr += Math.pow((observed[i][j] - expected[i][j]), 2) / expected[i][j];\n    }\n  }\n\n  // Get independency by X square and its degree of freedom\n  function ChiSq(xsqr, dof) {\n    var p = Math.exp(-0.5 * xsqr);\n    if((dof%2) === 1) {\n      p = p * Math.sqrt(2 * xsqr/Pi);\n    }\n    var k = dof;\n    while(k >= 2) {\n      p = p * xsqr/k;\n      k = k - 2;\n    }\n    var t = p;\n    var a = dof;\n    while (t > 0.0000000001*p) {\n      a = a + 2;\n      t = t * xsqr/a;\n      p = p + t;\n    }\n    return 1-p;\n  }\n\n  return Math.round(ChiSq(xsqr, dof) * 1000000) / 1000000;\n};\n\nexports.COLUMN = function(matrix, index) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  if (index < 0) {\n    return error.num;\n  }\n\n  if (!(matrix instanceof Array) || (typeof index !== 'number')) {\n    return error.value;\n  }\n\n  if (matrix.length === 0) {\n    return undefined;\n  }\n\n  return jStat.col(matrix, index);\n};\n\nexports.COLUMNS = function(matrix) {\n  if (arguments.length !== 1) {\n    return error.na;\n  }\n\n  if (!(matrix instanceof Array)) {\n    return error.value;\n  }\n\n  if (matrix.length === 0) {\n    return 0;\n  }\n\n  return jStat.cols(matrix);\n};\n\nexports.CONFIDENCE = {};\n\nexports.CONFIDENCE.NORM = function(alpha, sd, n) {\n  alpha = utils.parseNumber(alpha);\n  sd = utils.parseNumber(sd);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(alpha, sd, n)) {\n    return error.value;\n  }\n  return jStat.normalci(1, alpha, sd, n)[1] - 1;\n};\n\nexports.CONFIDENCE.T = function(alpha, sd, n) {\n  alpha = utils.parseNumber(alpha);\n  sd = utils.parseNumber(sd);\n  n = utils.parseNumber(n);\n  if (utils.anyIsError(alpha, sd, n)) {\n    return error.value;\n  }\n  return jStat.tci(1, alpha, sd, n)[1] - 1;\n};\n\nexports.CORREL = function(array1, array2) {\n  array1 = utils.parseNumberArray(utils.flatten(array1));\n  array2 = utils.parseNumberArray(utils.flatten(array2));\n  if (utils.anyIsError(array1, array2)) {\n    return error.value;\n  }\n  return jStat.corrcoeff(array1, array2);\n};\n\nexports.COUNT = function() {\n  return utils.numbers(utils.flatten(arguments)).length;\n};\n\nexports.COUNTA = function() {\n  var range = utils.flatten(arguments);\n  return range.length - exports.COUNTBLANK(range);\n};\n\nexports.COUNTIN = function (range, value) {\n  var result = 0;\n\n  range = utils.flatten(range);\n\n  for (var i = 0; i < range.length; i++) {\n    if (range[i] === value) {\n      result++;\n    }\n  }\n  return result;\n};\n\n\nexports.COUNTBLANK = function() {\n  var range = utils.flatten(arguments);\n  var blanks = 0;\n  var element;\n  for (var i = 0; i < range.length; i++) {\n    element = range[i];\n    if (element === null || element === '') {\n      blanks++;\n    }\n  }\n  return blanks;\n};\n\nexports.COUNTIF = function(range, criteria) {\n  range = utils.flatten(range);\n\n  var isWildcard = criteria === void 0 || criteria === '*';\n\n  if (isWildcard) {\n    return range.length;\n  }\n\n  var matches = 0;\n  var tokenizedCriteria = evalExpression.parse(criteria + '');\n\n  for (var i = 0; i < range.length; i++) {\n    var value = range[i];\n    var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n    if (evalExpression.compute(tokens)) {\n      matches++;\n    }\n  }\n\n  return matches;\n};\n\nexports.COUNTIFS = function() {\n  var args = utils.argsToArray(arguments);\n  var results = new Array(utils.flatten(args[0]).length);\n\n  for (var i = 0; i < results.length; i++) {\n    results[i] = true;\n  }\n  for (i = 0; i < args.length; i += 2) {\n    var range = utils.flatten(args[i]);\n    var criteria = args[i + 1];\n    var isWildcard = criteria === void 0 || criteria === '*';\n\n    if (!isWildcard) {\n      var tokenizedCriteria = evalExpression.parse(criteria + '');\n\n      for (var j = 0; j < range.length; j++) {\n        var value = range[j];\n        var tokens = [evalExpression.createToken(value, evalExpression.TOKEN_TYPE_LITERAL)].concat(tokenizedCriteria);\n\n        results[j] = results[j] && evalExpression.compute(tokens);\n      }\n    }\n  }\n  var result = 0;\n  for (i = 0; i < results.length; i++) {\n    if (results[i]) {\n      result++;\n    }\n  }\n\n  return result;\n};\n\nexports.COUNTUNIQUE = function () {\n  return misc.UNIQUE.apply(null, utils.flatten(arguments)).length;\n};\n\nexports.COVARIANCE = {};\n\nexports.COVARIANCE.P = function(array1, array2) {\n  array1 = utils.parseNumberArray(utils.flatten(array1));\n  array2 = utils.parseNumberArray(utils.flatten(array2));\n  if (utils.anyIsError(array1, array2)) {\n    return error.value;\n  }\n  var mean1 = jStat.mean(array1);\n  var mean2 = jStat.mean(array2);\n  var result = 0;\n  var n = array1.length;\n  for (var i = 0; i < n; i++) {\n    result += (array1[i] - mean1) * (array2[i] - mean2);\n  }\n  return result / n;\n};\n\nexports.COVARIANCE.S = function(array1, array2) {\n  array1 = utils.parseNumberArray(utils.flatten(array1));\n  array2 = utils.parseNumberArray(utils.flatten(array2));\n  if (utils.anyIsError(array1, array2)) {\n    return error.value;\n  }\n  return jStat.covariance(array1, array2);\n};\n\nexports.DEVSQ = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var mean = jStat.mean(range);\n  var result = 0;\n  for (var i = 0; i < range.length; i++) {\n    result += Math.pow((range[i] - mean), 2);\n  }\n  return result;\n};\n\nexports.EXPON = {};\n\nexports.EXPON.DIST = function(x, lambda, cumulative) {\n  x = utils.parseNumber(x);\n  lambda = utils.parseNumber(lambda);\n  if (utils.anyIsError(x, lambda)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.exponential.cdf(x, lambda) : jStat.exponential.pdf(x, lambda);\n};\n\nexports.F = {};\n\nexports.F.DIST = function(x, d1, d2, cumulative) {\n  x = utils.parseNumber(x);\n  d1 = utils.parseNumber(d1);\n  d2 = utils.parseNumber(d2);\n  if (utils.anyIsError(x, d1, d2)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.centralF.cdf(x, d1, d2) : jStat.centralF.pdf(x, d1, d2);\n};\n\nexports.F.DIST.RT = function(x, d1, d2) {\n  if (arguments.length !== 3) {\n    return error.na;\n  }\n\n  if (x < 0 || d1 < 1 || d2 < 1) {\n    return error.num;\n  }\n\n  if ((typeof x !== 'number') || (typeof d1 !== 'number') || (typeof d2 !== 'number')) {\n    return error.value;\n  }\n\n  return 1 - jStat.centralF.cdf(x, d1, d2);\n};\n\nexports.F.INV = function(probability, d1, d2) {\n  probability = utils.parseNumber(probability);\n  d1 = utils.parseNumber(d1);\n  d2 = utils.parseNumber(d2);\n  if (utils.anyIsError(probability, d1, d2)) {\n    return error.value;\n  }\n  if (probability <= 0.0 || probability > 1.0) {\n    return error.num;\n  }\n\n  return jStat.centralF.inv(probability, d1, d2);\n};\n\nexports.F.INV.RT = function(p, d1, d2) {\n  if (arguments.length !== 3) {\n    return error.na;\n  }\n\n  if (p < 0 || p > 1 || d1 < 1 || d1 > Math.pow(10, 10) || d2 < 1 || d2 > Math.pow(10, 10)) {\n    return error.num;\n  }\n\n  if ((typeof p !== 'number') || (typeof d1 !== 'number') || (typeof d2 !== 'number')) {\n    return error.value;\n  }\n\n  return jStat.centralF.inv(1.0 - p, d1, d2);\n};\n\nexports.F.TEST = function(array1, array2) {\n  if (!array1 || !array2) {\n    return error.na;\n  }\n\n  if (!(array1 instanceof Array) || !(array2 instanceof Array)) {\n    return error.na;\n  }\n\n  if (array1.length < 2 || array2.length < 2) {\n    return error.div0;\n  }\n\n  var sumOfSquares = function(values, x1) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n      sum +=Math.pow((values[i] - x1), 2);\n    }\n    return sum;\n  };\n\n  var x1 = mathTrig.SUM(array1) / array1.length;\n  var x2 = mathTrig.SUM(array2) / array2.length;\n  var sum1 = sumOfSquares(array1, x1) / (array1.length - 1);\n  var sum2 = sumOfSquares(array2, x2) / (array2.length - 1);\n\n  return sum1 / sum2;\n};\n\nexports.FISHER = function(x) {\n  x = utils.parseNumber(x);\n  if (x instanceof Error) {\n    return x;\n  }\n  return Math.log((1 + x) / (1 - x)) / 2;\n};\n\nexports.FISHERINV = function(y) {\n  y = utils.parseNumber(y);\n  if (y instanceof Error) {\n    return y;\n  }\n  var e2y = Math.exp(2 * y);\n  return (e2y - 1) / (e2y + 1);\n};\n\nexports.FORECAST = function(x, data_y, data_x) {\n  x = utils.parseNumber(x);\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(x, data_y, data_x)) {\n    return error.value;\n  }\n  var xmean = jStat.mean(data_x);\n  var ymean = jStat.mean(data_y);\n  var n = data_x.length;\n  var num = 0;\n  var den = 0;\n  for (var i = 0; i < n; i++) {\n    num += (data_x[i] - xmean) * (data_y[i] - ymean);\n    den += Math.pow(data_x[i] - xmean, 2);\n  }\n  var b = num / den;\n  var a = ymean - b * xmean;\n  return a + b * x;\n};\n\nexports.FREQUENCY = function(data, bins) {\n  data = utils.parseNumberArray(utils.flatten(data));\n  bins = utils.parseNumberArray(utils.flatten(bins));\n  if (utils.anyIsError(data, bins)) {\n    return error.value;\n  }\n  var n = data.length;\n  var b = bins.length;\n  var r = [];\n  for (var i = 0; i <= b; i++) {\n    r[i] = 0;\n    for (var j = 0; j < n; j++) {\n      if (i === 0) {\n        if (data[j] <= bins[0]) {\n          r[0] += 1;\n        }\n      } else if (i < b) {\n        if (data[j] > bins[i - 1] && data[j] <= bins[i]) {\n          r[i] += 1;\n        }\n      } else if (i === b) {\n        if (data[j] > bins[b - 1]) {\n          r[b] += 1;\n        }\n      }\n    }\n  }\n  return r;\n};\n\n\nexports.GAMMA = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n\n  if (number === 0) {\n    return error.num;\n  }\n\n  if (parseInt(number, 10) === number && number < 0) {\n    return error.num;\n  }\n\n  return jStat.gammafn(number);\n};\n\nexports.GAMMA.DIST = function(value, alpha, beta, cumulative) {\n  if (arguments.length !== 4) {\n    return error.na;\n  }\n\n  if (value < 0 || alpha <= 0 || beta <= 0) {\n    return error.value;\n  }\n\n  if ((typeof value !== 'number') || (typeof alpha !== 'number') || (typeof beta !== 'number')) {\n    return error.value;\n  }\n\n  return cumulative ? jStat.gamma.cdf(value, alpha, beta, true) : jStat.gamma.pdf(value, alpha, beta, false);\n};\n\nexports.GAMMA.INV = function(probability, alpha, beta) {\n  if (arguments.length !== 3) {\n    return error.na;\n  }\n\n  if (probability < 0 || probability > 1 || alpha <= 0 || beta <= 0) {\n    return error.num;\n  }\n\n  if ((typeof probability !== 'number') || (typeof alpha !== 'number') || (typeof beta !== 'number')) {\n    return error.value;\n  }\n\n  return jStat.gamma.inv(probability, alpha, beta);\n};\n\nexports.GAMMALN = function(number) {\n  number = utils.parseNumber(number);\n  if (number instanceof Error) {\n    return number;\n  }\n  return jStat.gammaln(number);\n};\n\nexports.GAMMALN.PRECISE = function(x) {\n  if (arguments.length !== 1) {\n    return error.na;\n  }\n\n  if (x <= 0) {\n    return error.num;\n  }\n\n  if (typeof x !== 'number') {\n    return error.value;\n  }\n\n  return jStat.gammaln(x);\n};\n\nexports.GAUSS = function(z) {\n  z = utils.parseNumber(z);\n  if (z instanceof Error) {\n    return z;\n  }\n  return jStat.normal.cdf(z, 0, 1) - 0.5;\n};\n\nexports.GEOMEAN = function() {\n  var args = utils.parseNumberArray(utils.flatten(arguments));\n  if (args instanceof Error) {\n    return args;\n  }\n  return jStat.geomean(args);\n};\n\nexports.GROWTH = function(known_y, known_x, new_x, use_const) {\n  // Credits: Ilmari Karonen (http://stackoverflow.com/questions/14161990/how-to-implement-growth-function-in-javascript)\n\n  known_y = utils.parseNumberArray(known_y);\n  if (known_y instanceof Error) {\n    return known_y;\n  }\n\n  // Default values for optional parameters:\n  var i;\n  if (known_x === undefined) {\n    known_x = [];\n    for (i = 1; i <= known_y.length; i++) {\n      known_x.push(i);\n    }\n  }\n  if (new_x === undefined) {\n    new_x = [];\n    for (i = 1; i <= known_y.length; i++) {\n      new_x.push(i);\n    }\n  }\n\n  known_x = utils.parseNumberArray(known_x);\n  new_x = utils.parseNumberArray(new_x);\n  if (utils.anyIsError(known_x, new_x)) {\n    return error.value;\n  }\n\n\n  if (use_const === undefined) {\n    use_const = true;\n  }\n\n  // Calculate sums over the data:\n  var n = known_y.length;\n  var avg_x = 0;\n  var avg_y = 0;\n  var avg_xy = 0;\n  var avg_xx = 0;\n  for (i = 0; i < n; i++) {\n    var x = known_x[i];\n    var y = Math.log(known_y[i]);\n    avg_x += x;\n    avg_y += y;\n    avg_xy += x * y;\n    avg_xx += x * x;\n  }\n  avg_x /= n;\n  avg_y /= n;\n  avg_xy /= n;\n  avg_xx /= n;\n\n  // Compute linear regression coefficients:\n  var beta;\n  var alpha;\n  if (use_const) {\n    beta = (avg_xy - avg_x * avg_y) / (avg_xx - avg_x * avg_x);\n    alpha = avg_y - beta * avg_x;\n  } else {\n    beta = avg_xy / avg_xx;\n    alpha = 0;\n  }\n\n  // Compute and return result array:\n  var new_y = [];\n  for (i = 0; i < new_x.length; i++) {\n    new_y.push(Math.exp(alpha + beta * new_x[i]));\n  }\n  return new_y;\n};\n\nexports.HARMEAN = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var n = range.length;\n  var den = 0;\n  for (var i = 0; i < n; i++) {\n    den += 1 / range[i];\n  }\n  return n / den;\n};\n\nexports.HYPGEOM = {};\n\nexports.HYPGEOM.DIST = function(x, n, M, N, cumulative) {\n  x = utils.parseNumber(x);\n  n = utils.parseNumber(n);\n  M = utils.parseNumber(M);\n  N = utils.parseNumber(N);\n  if (utils.anyIsError(x, n, M, N)) {\n    return error.value;\n  }\n\n  function pdf(x, n, M, N) {\n    return mathTrig.COMBIN(M, x) * mathTrig.COMBIN(N - M, n - x) / mathTrig.COMBIN(N, n);\n  }\n\n  function cdf(x, n, M, N) {\n    var result = 0;\n    for (var i = 0; i <= x; i++) {\n      result += pdf(i, n, M, N);\n    }\n    return result;\n  }\n\n  return (cumulative) ? cdf(x, n, M, N) : pdf(x, n, M, N);\n};\n\nexports.INTERCEPT = function(known_y, known_x) {\n  known_y = utils.parseNumberArray(known_y);\n  known_x = utils.parseNumberArray(known_x);\n  if (utils.anyIsError(known_y, known_x)) {\n    return error.value;\n  }\n  if (known_y.length !== known_x.length) {\n    return error.na;\n  }\n  return exports.FORECAST(0, known_y, known_x);\n};\n\nexports.KURT = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var mean = jStat.mean(range);\n  var n = range.length;\n  var sigma = 0;\n  for (var i = 0; i < n; i++) {\n    sigma += Math.pow(range[i] - mean, 4);\n  }\n  sigma = sigma / Math.pow(jStat.stdev(range, true), 4);\n  return ((n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3))) * sigma - 3 * (n - 1) * (n - 1) / ((n - 2) * (n - 3));\n};\n\nexports.LARGE = function(range, k) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(range, k)) {\n    return range;\n  }\n  return range.sort(function(a, b) {\n    return b - a;\n  })[k - 1];\n};\n\nexports.LINEST = function(data_y, data_x) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(data_y, data_x)) {\n    return error.value;\n  }\n  var ymean = jStat.mean(data_y);\n  var xmean = jStat.mean(data_x);\n  var n = data_x.length;\n  var num = 0;\n  var den = 0;\n  for (var i = 0; i < n; i++) {\n    num += (data_x[i] - xmean) * (data_y[i] - ymean);\n    den += Math.pow(data_x[i] - xmean, 2);\n  }\n  var m = num / den;\n  var b = ymean - m * xmean;\n  return [m, b];\n};\n\n// According to Microsoft:\n// http://office.microsoft.com/en-us/starter-help/logest-function-HP010342665.aspx\n// LOGEST returns are based on the following linear model:\n// ln y = x1 ln m1 + ... + xn ln mn + ln b\nexports.LOGEST = function(data_y, data_x) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(data_y, data_x)) {\n    return error.value;\n  }\n  for (var i = 0; i < data_y.length; i ++) {\n    data_y[i] = Math.log(data_y[i]);\n  }\n\n  var result = exports.LINEST(data_y, data_x);\n  result[0] = Math.round(Math.exp(result[0])*1000000)/1000000;\n  result[1] = Math.round(Math.exp(result[1])*1000000)/1000000;\n  return result;\n};\n\nexports.LOGNORM = {};\n\nexports.LOGNORM.DIST = function(x, mean, sd, cumulative) {\n  x = utils.parseNumber(x);\n  mean = utils.parseNumber(mean);\n  sd = utils.parseNumber(sd);\n  if (utils.anyIsError(x, mean, sd)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.lognormal.cdf(x, mean, sd) : jStat.lognormal.pdf(x, mean, sd);\n};\n\nexports.LOGNORM.INV = function(probability, mean, sd) {\n  probability = utils.parseNumber(probability);\n  mean = utils.parseNumber(mean);\n  sd = utils.parseNumber(sd);\n  if (utils.anyIsError(probability, mean, sd)) {\n    return error.value;\n  }\n  return jStat.lognormal.inv(probability, mean, sd);\n};\n\nexports.MAX = function() {\n  var range = utils.numbers(utils.flatten(arguments));\n  return (range.length === 0) ? 0 : Math.max.apply(Math, range);\n};\n\nexports.MAXA = function() {\n  var range = utils.arrayValuesToNumbers(utils.flatten(arguments));\n  return (range.length === 0) ? 0 : Math.max.apply(Math, range);\n};\n\nexports.MEDIAN = function() {\n  var range = utils.arrayValuesToNumbers(utils.flatten(arguments));\n  var result = jStat.median(range);\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.MIN = function() {\n  var range = utils.numbers(utils.flatten(arguments));\n  return (range.length === 0) ? 0 : Math.min.apply(Math, range);\n};\n\nexports.MINA = function() {\n  var range = utils.arrayValuesToNumbers(utils.flatten(arguments));\n  return (range.length === 0) ? 0 : Math.min.apply(Math, range);\n};\n\nexports.MODE = {};\n\nexports.MODE.MULT = function() {\n  // Credits: Roönaän\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var n = range.length;\n  var count = {};\n  var maxItems = [];\n  var max = 0;\n  var currentItem;\n\n  for (var i = 0; i < n; i++) {\n    currentItem = range[i];\n    count[currentItem] = count[currentItem] ? count[currentItem] + 1 : 1;\n    if (count[currentItem] > max) {\n      max = count[currentItem];\n      maxItems = [];\n    }\n    if (count[currentItem] === max) {\n      maxItems[maxItems.length] = currentItem;\n    }\n  }\n  return maxItems;\n};\n\nexports.MODE.SNGL = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  return exports.MODE.MULT(range).sort(function(a, b) {\n    return a - b;\n  })[0];\n};\n\nexports.NEGBINOM = {};\n\nexports.NEGBINOM.DIST = function(k, r, p, cumulative) {\n  k = utils.parseNumber(k);\n  r = utils.parseNumber(r);\n  p = utils.parseNumber(p);\n  if (utils.anyIsError(k, r, p)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.negbin.cdf(k, r, p) : jStat.negbin.pdf(k, r, p);\n};\n\nexports.NORM = {};\n\nexports.NORM.DIST = function(x, mean, sd, cumulative) {\n  x = utils.parseNumber(x);\n  mean = utils.parseNumber(mean);\n  sd = utils.parseNumber(sd);\n  if (utils.anyIsError(x, mean, sd)) {\n    return error.value;\n  }\n  if (sd <= 0) {\n    return error.num;\n  }\n\n  // Return normal distribution computed by jStat [http://jstat.org]\n  return (cumulative) ? jStat.normal.cdf(x, mean, sd) : jStat.normal.pdf(x, mean, sd);\n};\n\nexports.NORM.INV = function(probability, mean, sd) {\n  probability = utils.parseNumber(probability);\n  mean = utils.parseNumber(mean);\n  sd = utils.parseNumber(sd);\n  if (utils.anyIsError(probability, mean, sd)) {\n    return error.value;\n  }\n  return jStat.normal.inv(probability, mean, sd);\n};\n\nexports.NORM.S = {};\n\nexports.NORM.S.DIST = function(z, cumulative) {\n  z = utils.parseNumber(z);\n  if (z instanceof Error) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.normal.cdf(z, 0, 1) : jStat.normal.pdf(z, 0, 1);\n};\n\nexports.NORM.S.INV = function(probability) {\n  probability = utils.parseNumber(probability);\n  if (probability instanceof Error) {\n    return error.value;\n  }\n  return jStat.normal.inv(probability, 0, 1);\n};\n\nexports.PEARSON = function(data_x, data_y) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(data_y, data_x)) {\n    return error.value;\n  }\n  var xmean = jStat.mean(data_x);\n  var ymean = jStat.mean(data_y);\n  var n = data_x.length;\n  var num = 0;\n  var den1 = 0;\n  var den2 = 0;\n  for (var i = 0; i < n; i++) {\n    num += (data_x[i] - xmean) * (data_y[i] - ymean);\n    den1 += Math.pow(data_x[i] - xmean, 2);\n    den2 += Math.pow(data_y[i] - ymean, 2);\n  }\n  return num / Math.sqrt(den1 * den2);\n};\n\nexports.PERCENTILE = {};\n\nexports.PERCENTILE.EXC = function(array, k) {\n  array = utils.parseNumberArray(utils.flatten(array));\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(array, k)) {\n    return error.value;\n  }\n  array = array.sort(function(a, b) {\n    {\n      return a - b;\n    }\n  });\n  var n = array.length;\n  if (k < 1 / (n + 1) || k > 1 - 1 / (n + 1)) {\n    return error.num;\n  }\n  var l = k * (n + 1) - 1;\n  var fl = Math.floor(l);\n  return utils.cleanFloat((l === fl) ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]));\n};\n\nexports.PERCENTILE.INC = function(array, k) {\n  array = utils.parseNumberArray(utils.flatten(array));\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(array, k)) {\n    return error.value;\n  }\n  array = array.sort(function(a, b) {\n    return a - b;\n  });\n  var n = array.length;\n  var l = k * (n - 1);\n  var fl = Math.floor(l);\n  return utils.cleanFloat((l === fl) ? array[l] : array[fl] + (l - fl) * (array[fl + 1] - array[fl]));\n};\n\nexports.PERCENTRANK = {};\n\nexports.PERCENTRANK.EXC = function(array, x, significance) {\n  significance = (significance === undefined) ? 3 : significance;\n  array = utils.parseNumberArray(utils.flatten(array));\n  x = utils.parseNumber(x);\n  significance = utils.parseNumber(significance);\n  if (utils.anyIsError(array, x, significance)) {\n    return error.value;\n  }\n  array = array.sort(function(a, b) {\n    return a - b;\n  });\n  var uniques = misc.UNIQUE.apply(null, array);\n  var n = array.length;\n  var m = uniques.length;\n  var power = Math.pow(10, significance);\n  var result = 0;\n  var match = false;\n  var i = 0;\n  while (!match && i < m) {\n    if (x === uniques[i]) {\n      result = (array.indexOf(uniques[i]) + 1) / (n + 1);\n      match = true;\n    } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n      result = (array.indexOf(uniques[i]) + 1 + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n + 1);\n      match = true;\n    }\n    i++;\n  }\n  return Math.floor(result * power) / power;\n};\n\nexports.PERCENTRANK.INC = function(array, x, significance) {\n  significance = (significance === undefined) ? 3 : significance;\n  array = utils.parseNumberArray(utils.flatten(array));\n  x = utils.parseNumber(x);\n  significance = utils.parseNumber(significance);\n  if (utils.anyIsError(array, x, significance)) {\n    return error.value;\n  }\n  array = array.sort(function(a, b) {\n    return a - b;\n  });\n  var uniques = misc.UNIQUE.apply(null, array);\n  var n = array.length;\n  var m = uniques.length;\n  var power = Math.pow(10, significance);\n  var result = 0;\n  var match = false;\n  var i = 0;\n  while (!match && i < m) {\n    if (x === uniques[i]) {\n      result = array.indexOf(uniques[i]) / (n - 1);\n      match = true;\n    } else if (x >= uniques[i] && (x < uniques[i + 1] || i === m - 1)) {\n      result = (array.indexOf(uniques[i]) + (x - uniques[i]) / (uniques[i + 1] - uniques[i])) / (n - 1);\n      match = true;\n    }\n    i++;\n  }\n  return Math.floor(result * power) / power;\n};\n\nexports.PERMUT = function(number, number_chosen) {\n  number = utils.parseNumber(number);\n  number_chosen = utils.parseNumber(number_chosen);\n  if (utils.anyIsError(number, number_chosen)) {\n    return error.value;\n  }\n  return mathTrig.FACT(number) / mathTrig.FACT(number - number_chosen);\n};\n\nexports.PERMUTATIONA = function(number, number_chosen) {\n  number = utils.parseNumber(number);\n  number_chosen = utils.parseNumber(number_chosen);\n  if (utils.anyIsError(number, number_chosen)) {\n    return error.value;\n  }\n  return Math.pow(number, number_chosen);\n};\n\nexports.PHI = function(x) {\n  x = utils.parseNumber(x);\n  if (x instanceof Error) {\n    return error.value;\n  }\n  return Math.exp(-0.5 * x * x) / SQRT2PI;\n};\n\nexports.POISSON = {};\n\nexports.POISSON.DIST = function(x, mean, cumulative) {\n  x = utils.parseNumber(x);\n  mean = utils.parseNumber(mean);\n  if (utils.anyIsError(x, mean)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.poisson.cdf(x, mean) : jStat.poisson.pdf(x, mean);\n};\n\nexports.PROB = function(range, probability, lower, upper) {\n  if (lower === undefined) {\n    return 0;\n  }\n  upper = (upper === undefined) ? lower : upper;\n\n  range = utils.parseNumberArray(utils.flatten(range));\n  probability = utils.parseNumberArray(utils.flatten(probability));\n  lower = utils.parseNumber(lower);\n  upper = utils.parseNumber(upper);\n  if (utils.anyIsError(range, probability, lower, upper)) {\n    return error.value;\n  }\n\n  if (lower === upper) {\n    return (range.indexOf(lower) >= 0) ? probability[range.indexOf(lower)] : 0;\n  }\n\n  var sorted = range.sort(function(a, b) {\n    return a - b;\n  });\n  var n = sorted.length;\n  var result = 0;\n  for (var i = 0; i < n; i++) {\n    if (sorted[i] >= lower && sorted[i] <= upper) {\n      result += probability[range.indexOf(sorted[i])];\n    }\n  }\n  return result;\n};\n\nexports.QUARTILE = {};\n\nexports.QUARTILE.EXC = function(range, quart) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  quart = utils.parseNumber(quart);\n  if (utils.anyIsError(range, quart)) {\n    return error.value;\n  }\n  switch (quart) {\n    case 1:\n      return exports.PERCENTILE.EXC(range, 0.25);\n    case 2:\n      return exports.PERCENTILE.EXC(range, 0.5);\n    case 3:\n      return exports.PERCENTILE.EXC(range, 0.75);\n    default:\n      return error.num;\n  }\n};\n\nexports.QUARTILE.INC = function(range, quart) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  quart = utils.parseNumber(quart);\n  if (utils.anyIsError(range, quart)) {\n    return error.value;\n  }\n  switch (quart) {\n    case 1:\n      return exports.PERCENTILE.INC(range, 0.25);\n    case 2:\n      return exports.PERCENTILE.INC(range, 0.5);\n    case 3:\n      return exports.PERCENTILE.INC(range, 0.75);\n    default:\n      return error.num;\n  }\n};\n\nexports.RANK = {};\n\nexports.RANK.AVG = function(number, range, order) {\n  number = utils.parseNumber(number);\n  range = utils.parseNumberArray(utils.flatten(range));\n  if (utils.anyIsError(number, range)) {\n    return error.value;\n  }\n  range = utils.flatten(range);\n  order = order || false;\n  var sort = (order) ? function(a, b) {\n    return a - b;\n  } : function(a, b) {\n    return b - a;\n  };\n  range = range.sort(sort);\n\n  var length = range.length;\n  var count = 0;\n  for (var i = 0; i < length; i++) {\n    if (range[i] === number) {\n      count++;\n    }\n  }\n\n  return (count > 1) ? (2 * range.indexOf(number) + count + 1) / 2 : range.indexOf(number) + 1;\n};\n\nexports.RANK.EQ = function(number, range, order) {\n  number = utils.parseNumber(number);\n  range = utils.parseNumberArray(utils.flatten(range));\n  if (utils.anyIsError(number, range)) {\n    return error.value;\n  }\n  order = order || false;\n  var sort = (order) ? function(a, b) {\n    return a - b;\n  } : function(a, b) {\n    return b - a;\n  };\n  range = range.sort(sort);\n  return range.indexOf(number) + 1;\n};\n\nexports.ROW = function(matrix, index) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  if (index < 0) {\n    return error.num;\n  }\n\n  if (!(matrix instanceof Array) || (typeof index !== 'number')) {\n    return error.value;\n  }\n\n  if (matrix.length === 0) {\n    return undefined;\n  }\n\n  return jStat.row(matrix, index);\n};\n\nexports.ROWS = function(matrix) {\n  if (arguments.length !== 1) {\n    return error.na;\n  }\n\n  if (!(matrix instanceof Array)) {\n    return error.value;\n  }\n\n  if (matrix.length === 0) {\n    return 0;\n  }\n\n  return jStat.rows(matrix);\n};\n\nexports.RSQ = function(data_x, data_y) { // no need to flatten here, PEARSON will take care of that\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  if (utils.anyIsError(data_x, data_y)) {\n    return error.value;\n  }\n  return Math.pow(exports.PEARSON(data_x, data_y), 2);\n};\n\nexports.SKEW = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var mean = jStat.mean(range);\n  var n = range.length;\n  var sigma = 0;\n  for (var i = 0; i < n; i++) {\n    sigma += Math.pow(range[i] - mean, 3);\n  }\n  return n * sigma / ((n - 1) * (n - 2) * Math.pow(jStat.stdev(range, true), 3));\n};\n\nexports.SKEW.P = function() {\n  var range = utils.parseNumberArray(utils.flatten(arguments));\n  if (range instanceof Error) {\n    return range;\n  }\n  var mean = jStat.mean(range);\n  var n = range.length;\n  var m2 = 0;\n  var m3 = 0;\n  for (var i = 0; i < n; i++) {\n    m3 += Math.pow(range[i] - mean, 3);\n    m2 += Math.pow(range[i] - mean, 2);\n  }\n  m3 = m3 / n;\n  m2 = m2 / n;\n  return m3 / Math.pow(m2, 3 / 2);\n};\n\nexports.SLOPE = function(data_y, data_x) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(data_y, data_x)) {\n    return error.value;\n  }\n  var xmean = jStat.mean(data_x);\n  var ymean = jStat.mean(data_y);\n  var n = data_x.length;\n  var num = 0;\n  var den = 0;\n  for (var i = 0; i < n; i++) {\n    num += (data_x[i] - xmean) * (data_y[i] - ymean);\n    den += Math.pow(data_x[i] - xmean, 2);\n  }\n  return num / den;\n};\n\nexports.SMALL = function(range, k) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  k = utils.parseNumber(k);\n  if (utils.anyIsError(range, k)) {\n    return range;\n  }\n  return range.sort(function(a, b) {\n    return a - b;\n  })[k - 1];\n};\n\nexports.STANDARDIZE = function(x, mean, sd) {\n  x = utils.parseNumber(x);\n  mean = utils.parseNumber(mean);\n  sd = utils.parseNumber(sd);\n  if (utils.anyIsError(x, mean, sd)) {\n    return error.value;\n  }\n  return (x - mean) / sd;\n};\n\nexports.STDEV = {};\n\nexports.STDEV.P = function() {\n  var v = exports.VAR.P.apply(this, arguments);\n  var result = Math.sqrt(v);\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.STDEV.S = function() {\n  var v = exports.VAR.S.apply(this, arguments);\n  var result = Math.sqrt(v);\n\n  return result;\n};\n\nexports.STDEVA = function() {\n  var v = exports.VARA.apply(this, arguments);\n  var result = Math.sqrt(v);\n\n  return result;\n};\n\nexports.STDEVPA = function() {\n  var v = exports.VARPA.apply(this, arguments);\n  var result = Math.sqrt(v);\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\n\nexports.STEYX = function(data_y, data_x) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  if (utils.anyIsError(data_y, data_x)) {\n    return error.value;\n  }\n  var xmean = jStat.mean(data_x);\n  var ymean = jStat.mean(data_y);\n  var n = data_x.length;\n  var lft = 0;\n  var num = 0;\n  var den = 0;\n  for (var i = 0; i < n; i++) {\n    lft += Math.pow(data_y[i] - ymean, 2);\n    num += (data_x[i] - xmean) * (data_y[i] - ymean);\n    den += Math.pow(data_x[i] - xmean, 2);\n  }\n  return Math.sqrt((lft - num * num / den) / (n - 2));\n};\n\nexports.TRANSPOSE = function(matrix) {\n  if (!matrix) {\n    return error.na;\n  }\n  return jStat.transpose(matrix);\n};\n\nexports.T = text.T;\n\nexports.T.DIST = function(x, df, cumulative) {\n  x = utils.parseNumber(x);\n  df = utils.parseNumber(df);\n  if (utils.anyIsError(x, df)) {\n    return error.value;\n  }\n  return (cumulative) ? jStat.studentt.cdf(x, df) : jStat.studentt.pdf(x, df);\n};\n\nexports.T.DIST['2T'] = function(x, df) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  if (x < 0 || df < 1) {\n    return error.num;\n  }\n\n  if ((typeof x !== 'number') || (typeof df !== 'number')) {\n    return error.value;\n  }\n\n  return (1 - jStat.studentt.cdf(x , df)) * 2;\n};\n\nexports.T.DIST.RT = function(x, df) {\n  if (arguments.length !== 2) {\n    return error.na;\n  }\n\n  if (x < 0 || df < 1) {\n    return error.num;\n  }\n\n  if ((typeof x !== 'number') || (typeof df !== 'number')) {\n    return error.value;\n  }\n\n  return 1 - jStat.studentt.cdf(x , df);\n};\n\nexports.T.INV = function(probability, df) {\n  probability = utils.parseNumber(probability);\n  df = utils.parseNumber(df);\n  if (utils.anyIsError(probability, df)) {\n    return error.value;\n  }\n  return jStat.studentt.inv(probability, df);\n};\n\nexports.T.INV['2T'] = function(probability, df) {\n  probability = utils.parseNumber(probability);\n  df = utils.parseNumber(df);\n  if (probability <= 0 || probability > 1 || df < 1) {\n    return error.num;\n  }\n  if (utils.anyIsError(probability, df)) {\n    return error.value;\n  }\n  return Math.abs(jStat.studentt.inv(probability/2, df));\n};\n\n// The algorithm can be found here:\n// http://www.chem.uoa.gr/applets/AppletTtest/Appl_Ttest2.html\nexports.T.TEST = function(data_x, data_y) {\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  if (utils.anyIsError(data_x, data_y)) {\n    return error.value;\n  }\n\n  var mean_x = jStat.mean(data_x);\n  var mean_y = jStat.mean(data_y);\n  var s_x = 0;\n  var s_y = 0;\n  var i;\n\n  for (i = 0; i < data_x.length; i++) {\n    s_x += Math.pow(data_x[i] - mean_x, 2);\n  }\n  for (i = 0; i < data_y.length; i++) {\n    s_y += Math.pow(data_y[i] - mean_y, 2);\n  }\n\n  s_x = s_x / (data_x.length-1);\n  s_y = s_y / (data_y.length-1);\n\n  var t = Math.abs(mean_x - mean_y) / Math.sqrt(s_x/data_x.length + s_y/data_y.length);\n\n  return exports.T.DIST['2T'](t, data_x.length+data_y.length-2);\n};\n\nexports.TREND = function(data_y, data_x, new_data_x) {\n  data_y = utils.parseNumberArray(utils.flatten(data_y));\n  data_x = utils.parseNumberArray(utils.flatten(data_x));\n  new_data_x = utils.parseNumberArray(utils.flatten(new_data_x));\n  if (utils.anyIsError(data_y, data_x, new_data_x)) {\n    return error.value;\n  }\n  var linest = exports.LINEST(data_y, data_x);\n  var m = linest[0];\n  var b = linest[1];\n  var result = [];\n\n  new_data_x.forEach(function(x) {\n    result.push(m * x + b);\n  });\n\n  return result;\n};\n\nexports.TRIMMEAN = function(range, percent) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  percent = utils.parseNumber(percent);\n  if (utils.anyIsError(range, percent)) {\n    return error.value;\n  }\n  var trim = mathTrig.FLOOR(range.length * percent, 2) / 2;\n  return jStat.mean(utils.initial(utils.rest(range.sort(function(a, b) {\n    return a - b;\n  }), trim), trim));\n};\n\nexports.VAR = {};\n\nexports.VAR.P = function() {\n  var range = utils.numbers(utils.flatten(arguments));\n  var n = range.length;\n  var sigma = 0;\n  var mean = exports.AVERAGE(range);\n  var result;\n  for (var i = 0; i < n; i++) {\n    sigma += Math.pow(range[i] - mean, 2);\n  }\n  result = sigma / n;\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.VAR.S = function() {\n  var range = utils.numbers(utils.flatten(arguments));\n  var n = range.length;\n  var sigma = 0;\n  var mean = exports.AVERAGE(range);\n  for (var i = 0; i < n; i++) {\n    sigma += Math.pow(range[i] - mean, 2);\n  }\n  return sigma / (n - 1);\n};\n\nexports.VARA = function() {\n  var range = utils.flatten(arguments);\n  var n = range.length;\n  var sigma = 0;\n  var count = 0;\n  var mean = exports.AVERAGEA(range);\n  for (var i = 0; i < n; i++) {\n    var el = range[i];\n    if (typeof el === 'number') {\n      sigma += Math.pow(el - mean, 2);\n    } else if (el === true) {\n      sigma += Math.pow(1 - mean, 2);\n    } else {\n      sigma += Math.pow(0 - mean, 2);\n    }\n\n    if (el !== null) {\n      count++;\n    }\n  }\n  return sigma / (count - 1);\n};\n\nexports.VARPA = function() {\n  var range = utils.flatten(arguments);\n  var n = range.length;\n  var sigma = 0;\n  var count = 0;\n  var mean = exports.AVERAGEA(range);\n  var result;\n  for (var i = 0; i < n; i++) {\n    var el = range[i];\n    if (typeof el === 'number') {\n      sigma += Math.pow(el - mean, 2);\n    } else if (el === true) {\n      sigma += Math.pow(1 - mean, 2);\n    } else {\n      sigma += Math.pow(0 - mean, 2);\n    }\n\n    if (el !== null) {\n      count++;\n    }\n  }\n  result = sigma / count;\n\n  if (isNaN(result)) {\n    result = error.num;\n  }\n\n  return result;\n};\n\nexports.WEIBULL = {};\n\nexports.WEIBULL.DIST = function(x, alpha, beta, cumulative) {\n  x = utils.parseNumber(x);\n  alpha = utils.parseNumber(alpha);\n  beta = utils.parseNumber(beta);\n  if (utils.anyIsError(x, alpha, beta)) {\n    return error.value;\n  }\n  return (cumulative) ? 1 - Math.exp(-Math.pow(x / beta, alpha)) : Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha / Math.pow(beta, alpha);\n};\n\nexports.Z = {};\n\nexports.Z.TEST = function(range, x, sd) {\n  range = utils.parseNumberArray(utils.flatten(range));\n  x = utils.parseNumber(x);\n  if (utils.anyIsError(range, x)) {\n    return error.value;\n  }\n\n  sd = sd || exports.STDEV.S(range);\n  var n = range.length;\n  return 1 - exports.NORM.S.DIST((exports.AVERAGE(range) - x) / (sd / Math.sqrt(n)), true);\n};\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nexport default omit;\n","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","(function(root, factory) {\r\nif (typeof exports === \"object\") {\r\nmodule.exports = factory(require('angular'));\r\n} else if (typeof define === \"function\" && define.amd) {\r\ndefine(['angular'], factory);\r\n} else{\r\nfactory(root.angular);\r\n}\r\n}(this, function(angular) {\r\n/**\n * AngularJS Google Maps Ver. 1.18.3\n *\n * The MIT License (MIT)\n * \n * Copyright (c) 2014, 2015, 1016 Allen Kim\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nangular.module('ngMap', []);\n\n/**\n * @ngdoc controller\n * @name MapController\n */\n(function() {\n  'use strict';\n  var Attr2MapOptions;\n\n  var __MapController = function(\n      $scope, $element, $attrs, $parse, $interpolate, _Attr2MapOptions_, NgMap, NgMapPool, escapeRegExp\n    ) {\n    Attr2MapOptions = _Attr2MapOptions_;\n    var vm = this;\n    var exprStartSymbol = $interpolate.startSymbol();\n    var exprEndSymbol = $interpolate.endSymbol();\n\n    vm.mapOptions; /** @memberof __MapController */\n    vm.mapEvents;  /** @memberof __MapController */\n    vm.eventListeners;  /** @memberof __MapController */\n\n    /**\n     * Add an object to the collection of group\n     * @memberof __MapController\n     * @function addObject\n     * @param groupName the name of collection that object belongs to\n     * @param obj  an object to add into a collection, i.e. marker, shape\n     */\n    vm.addObject = function(groupName, obj) {\n      if (vm.map) {\n        vm.map[groupName] = vm.map[groupName] || {};\n        var len = Object.keys(vm.map[groupName]).length;\n        vm.map[groupName][obj.id || len] = obj;\n\n        if (vm.map instanceof google.maps.Map) {\n          //infoWindow.setMap works like infoWindow.open\n          if (groupName != \"infoWindows\" && obj.setMap) {\n            obj.setMap && obj.setMap(vm.map);\n          }\n          if (obj.centered && obj.position) {\n            vm.map.setCenter(obj.position);\n          }\n          (groupName == 'markers') && vm.objectChanged('markers');\n          (groupName == 'customMarkers') && vm.objectChanged('customMarkers');\n        }\n      }\n    };\n\n    /**\n     * Delete an object from the collection and remove from map\n     * @memberof __MapController\n     * @function deleteObject\n     * @param {Array} objs the collection of objects. i.e., map.markers\n     * @param {Object} obj the object to be removed. i.e., marker\n     */\n    vm.deleteObject = function(groupName, obj) {\n      /* delete from group */\n      if (obj.map) {\n        var objs = obj.map[groupName];\n        for (var name in objs) {\n          if (objs[name] === obj) {\n            void 0;\n            google.maps.event.clearInstanceListeners(obj);\n            delete objs[name];\n          }\n        }\n\n        /* delete from map */\n        obj.map && obj.setMap && obj.setMap(null);\n\n        (groupName == 'markers') && vm.objectChanged('markers');\n        (groupName == 'customMarkers') && vm.objectChanged('customMarkers');\n      }\n    };\n\n    /**\n     * @memberof __MapController\n     * @function observeAttrSetObj\n     * @param {Hash} orgAttrs attributes before its initialization\n     * @param {Hash} attrs    attributes after its initialization\n     * @param {Object} obj    map object that an action is to be done\n     * @description watch changes of attribute values and\n     * do appropriate action based on attribute name\n     */\n    vm.observeAttrSetObj = function(orgAttrs, attrs, obj) {\n      if (attrs.noWatcher) {\n        return false;\n      }\n      var attrsToObserve = Attr2MapOptions.getAttrsToObserve(orgAttrs);\n      for (var i=0; i<attrsToObserve.length; i++) {\n        var attrName = attrsToObserve[i];\n        attrs.$observe(attrName, NgMap.observeAndSet(attrName, obj));\n      }\n    };\n\n    /**\n     * @memberof __MapController\n     * @function zoomToIncludeMarkers\n     */\n    vm.zoomToIncludeMarkers = function() {\n      // Only fit to bounds if we have any markers\n      // object.keys is supported in all major browsers (IE9+)\n      if ((vm.map.markers != null && Object.keys(vm.map.markers).length > 0) || (vm.map.customMarkers != null && Object.keys(vm.map.customMarkers).length > 0)) {\n        var bounds = new google.maps.LatLngBounds();\n        for (var k1 in vm.map.markers) {\n          bounds.extend(vm.map.markers[k1].getPosition());\n        }\n        for (var k2 in vm.map.customMarkers) {\n          bounds.extend(vm.map.customMarkers[k2].getPosition());\n        }\n    \t  if (vm.mapOptions.maximumZoom) {\n    \t\t  vm.enableMaximumZoomCheck = true; //enable zoom check after resizing for markers\n    \t  }\n        vm.map.fitBounds(bounds);\n      }\n    };\n\n    /**\n     * @memberof __MapController\n     * @function objectChanged\n     * @param {String} group name of group e.g., markers\n     */\n    vm.objectChanged = function(group) {\n      if ( vm.map &&\n        (group == 'markers' || group == 'customMarkers') &&\n        vm.map.zoomToIncludeMarkers == 'auto'\n      ) {\n        vm.zoomToIncludeMarkers();\n      }\n    };\n\n    /**\n     * @memberof __MapController\n     * @function initializeMap\n     * @description\n     *  . initialize Google map on <div> tag\n     *  . set map options, events, and observers\n     *  . reset zoom to include all (custom)markers\n     */\n    vm.initializeMap = function() {\n      var mapOptions = vm.mapOptions,\n          mapEvents = vm.mapEvents;\n\n      var lazyInitMap = vm.map; //prepared for lazy init\n      vm.map = NgMapPool.getMapInstance($element[0]);\n      NgMap.setStyle($element[0]);\n\n      // set objects for lazyInit\n      if (lazyInitMap) {\n\n        /**\n         * rebuild mapOptions for lazyInit\n         * because attributes values might have been changed\n         */\n        var filtered = Attr2MapOptions.filter($attrs);\n        var options = Attr2MapOptions.getOptions(filtered);\n        var controlOptions = Attr2MapOptions.getControlOptions(filtered);\n        mapOptions = angular.extend(options, controlOptions);\n        void 0;\n\n        for (var group in lazyInitMap) {\n          var groupMembers = lazyInitMap[group]; //e.g. markers\n          if (typeof groupMembers == 'object') {\n            for (var id in groupMembers) {\n              vm.addObject(group, groupMembers[id]);\n            }\n          }\n        }\n        vm.map.showInfoWindow = vm.showInfoWindow;\n        vm.map.hideInfoWindow = vm.hideInfoWindow;\n      }\n\n      // set options\n      mapOptions.zoom = mapOptions.zoom || 15;\n      var center = mapOptions.center;\n      var exprRegExp = new RegExp(escapeRegExp(exprStartSymbol) + '.*' + escapeRegExp(exprEndSymbol));\n\n      if (!mapOptions.center ||\n        ((typeof center === 'string') && center.match(exprRegExp))\n      ) {\n        mapOptions.center = new google.maps.LatLng(0, 0);\n      } else if( (typeof center === 'string') && center.match(/^[0-9.-]*,[0-9.-]*$/) ){\n        var lat = parseFloat(center.split(',')[0]);\n        var lng = parseFloat(center.split(',')[1]);\n        mapOptions.center = new google.maps.LatLng(lat, lng);\n      } else if (!(center instanceof google.maps.LatLng)) {\n        var geoCenter = mapOptions.center;\n        delete mapOptions.center;\n        NgMap.getGeoLocation(geoCenter, mapOptions.geoLocationOptions).\n          then(function (latlng) {\n            vm.map.setCenter(latlng);\n            var geoCallback = mapOptions.geoCallback;\n            geoCallback && $parse(geoCallback)($scope);\n          }, function () {\n            if (mapOptions.geoFallbackCenter) {\n              vm.map.setCenter(mapOptions.geoFallbackCenter);\n            }\n          });\n      }\n      vm.map.setOptions(mapOptions);\n\n      // set events\n      for (var eventName in mapEvents) {\n        var event = mapEvents[eventName];\n        var listener = google.maps.event.addListener(vm.map, eventName, event);\n        vm.eventListeners[eventName] = listener;\n      }\n\n      // set observers\n      vm.observeAttrSetObj(orgAttrs, $attrs, vm.map);\n      vm.singleInfoWindow = mapOptions.singleInfoWindow;\n\n      google.maps.event.trigger(vm.map, 'resize');\n\n      google.maps.event.addListenerOnce(vm.map, \"idle\", function () {\n        NgMap.addMap(vm);\n        if (mapOptions.zoomToIncludeMarkers) {\n          vm.zoomToIncludeMarkers();\n        }\n        //TODO: it's for backward compatibiliy. will be removed\n        $scope.map = vm.map;\n        $scope.$emit('mapInitialized', vm.map);\n\n        //callback\n        if ($attrs.mapInitialized) {\n          $parse($attrs.mapInitialized)($scope, {map: vm.map});\n        }\n      });\n\n\t  //add maximum zoom listeners if zoom-to-include-markers and and maximum-zoom are valid attributes\n\t  if (mapOptions.zoomToIncludeMarkers && mapOptions.maximumZoom) {\n\t    google.maps.event.addListener(vm.map, 'zoom_changed', function() {\n          if (vm.enableMaximumZoomCheck == true) {\n\t\t\tvm.enableMaximumZoomCheck = false;\n\t        google.maps.event.addListenerOnce(vm.map, 'bounds_changed', function() {\n\t\t      vm.map.setZoom(Math.min(mapOptions.maximumZoom, vm.map.getZoom()));\n\t\t    });\n\t  \t  }\n\t    });\n\t  }\n    };\n\n    $scope.google = google; //used by $scope.eval to avoid eval()\n\n    /**\n     * get map options and events\n     */\n    var orgAttrs = Attr2MapOptions.orgAttributes($element);\n    var filtered = Attr2MapOptions.filter($attrs);\n    var options = Attr2MapOptions.getOptions(filtered, {scope: $scope});\n    var controlOptions = Attr2MapOptions.getControlOptions(filtered);\n    var mapOptions = angular.extend(options, controlOptions);\n    var mapEvents = Attr2MapOptions.getEvents($scope, filtered);\n    void 0;\n    Object.keys(mapEvents).length && void 0;\n\n    vm.mapOptions = mapOptions;\n    vm.mapEvents = mapEvents;\n    vm.eventListeners = {};\n\n    if (options.lazyInit) { // allows controlled initialization\n      // parse angular expression for dynamic ids\n      if (!!$attrs.id &&\n      \t  // starts with, at position 0\n\t  $attrs.id.indexOf(exprStartSymbol, 0) === 0 &&\n\t  // ends with\n\t  $attrs.id.indexOf(exprEndSymbol, $attrs.id.length - exprEndSymbol.length) !== -1) {\n        var idExpression = $attrs.id.slice(2,-2);\n        var mapId = $parse(idExpression)($scope);\n      } else {\n        var mapId = $attrs.id;\n      }\n      vm.map = {id: mapId}; //set empty, not real, map\n      NgMap.addMap(vm);\n    } else {\n      vm.initializeMap();\n    }\n\n    //Trigger Resize\n    if(options.triggerResize) {\n      google.maps.event.trigger(vm.map, 'resize');\n    }\n\n    $element.bind('$destroy', function() {\n      NgMapPool.returnMapInstance(vm.map);\n      NgMap.deleteMap(vm);\n    });\n  }; // __MapController\n\n  __MapController.$inject = [\n    '$scope', '$element', '$attrs', '$parse', '$interpolate', 'Attr2MapOptions', 'NgMap', 'NgMapPool', 'escapeRegexpFilter'\n  ];\n  angular.module('ngMap').controller('__MapController', __MapController);\n})();\n\n/**\n * @ngdoc directive\n * @name bicycling-layer\n * @param Attr2Options {service}\n *   convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n *\n *   <map zoom=\"13\" center=\"34.04924594193164, -118.24104309082031\">\n *     <bicycling-layer></bicycling-layer>\n *    </map>\n */\n(function() {\n  'use strict';\n  var parser;\n\n  var linkFunc = function(scope, element, attrs, mapController) {\n    mapController = mapController[0]||mapController[1];\n    var orgAttrs = parser.orgAttributes(element);\n    var filtered = parser.filter(attrs);\n    var options = parser.getOptions(filtered, {scope: scope});\n    var events = parser.getEvents(scope, filtered);\n\n    void 0;\n\n    var layer = getLayer(options, events);\n    mapController.addObject('bicyclingLayers', layer);\n    mapController.observeAttrSetObj(orgAttrs, attrs, layer);  //observers\n    element.bind('$destroy', function() {\n      mapController.deleteObject('bicyclingLayers', layer);\n    });\n  };\n\n  var getLayer = function(options, events) {\n    var layer = new google.maps.BicyclingLayer(options);\n    for (var eventName in events) {\n      google.maps.event.addListener(layer, eventName, events[eventName]);\n    }\n    return layer;\n  };\n\n  var bicyclingLayer= function(Attr2MapOptions) {\n    parser = Attr2MapOptions;\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc\n     };\n  };\n  bicyclingLayer.$inject = ['Attr2MapOptions'];\n\n  angular.module('ngMap').directive('bicyclingLayer', bicyclingLayer);\n})();\n\n/**\n * @ngdoc directive\n * @name custom-control\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @param $compile {service} AngularJS $compile service\n * @description\n *   Build custom control and set to the map with position\n *\n *   Requires:  map directive\n *\n *   Restrict To:  Element\n *\n * @attr {String} position position of this control\n *        i.e. TOP_RIGHT\n * @attr {Number} index index of the control\n * @example\n *\n * Example:\n *  <map center=\"41.850033,-87.6500523\" zoom=\"3\">\n *    <custom-control id=\"home\" position=\"TOP_LEFT\" index=\"1\">\n *      <div style=\"background-color: white;\">\n *        <b>Home</b>\n *      </div>\n *    </custom-control>\n *  </map>\n *\n */\n(function() {\n  'use strict';\n  var parser, NgMap;\n\n  var linkFunc = function(scope, element, attrs, mapController, $transclude) {\n    mapController = mapController[0]||mapController[1];\n    var filtered = parser.filter(attrs);\n    var options = parser.getOptions(filtered, {scope: scope});\n    var events = parser.getEvents(scope, filtered);\n\n    /**\n     * build a custom control element\n     */\n    var customControlEl = element[0].parentElement.removeChild(element[0]);\n    var content = $transclude();\n    angular.element(customControlEl).append(content);\n\n    /**\n     * set events\n     */\n    for (var eventName in events) {\n      google.maps.event.addDomListener(customControlEl, eventName, events[eventName]);\n    }\n\n    mapController.addObject('customControls', customControlEl);\n    var position = options.position;\n    mapController.map.controls[google.maps.ControlPosition[position]].push(customControlEl);\n\n    element.bind('$destroy', function() {\n      mapController.deleteObject('customControls', customControlEl);\n    });\n  };\n\n  var customControl =  function(Attr2MapOptions, _NgMap_)  {\n    parser = Attr2MapOptions, NgMap = _NgMap_;\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc,\n      transclude: true\n    }; // return\n  };\n  customControl.$inject = ['Attr2MapOptions', 'NgMap'];\n\n  angular.module('ngMap').directive('customControl', customControl);\n})();\n\n/**\n * @ngdoc directive\n * @memberof ngmap\n * @name custom-marker\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @param $timeout {service} AngularJS $timeout\n * @description\n *   Marker with html\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @attr {String} position required, position on map\n * @attr {Number} z-index optional\n * @attr {Boolean} visible optional\n * @example\n *\n * Example:\n *   <map center=\"41.850033,-87.6500523\" zoom=\"3\">\n *     <custom-marker position=\"41.850033,-87.6500523\">\n *       <div>\n *         <b>Home</b>\n *       </div>\n *     </custom-marker>\n *   </map>\n *\n */\n/* global document */\n(function() {\n  'use strict';\n  var parser, $timeout, $compile, NgMap;\n\n  var CustomMarker = function(options) {\n    options = options || {};\n\n    this.el = document.createElement('div');\n    this.el.style.display = 'inline-block';\n    this.el.style.visibility = \"hidden\";\n    this.visible = true;\n    for (var key in options) { /* jshint ignore:line */\n     this[key] = options[key];\n    }\n  };\n\n  var setCustomMarker = function() {\n\n    CustomMarker.prototype = new google.maps.OverlayView();\n\n    CustomMarker.prototype.setContent = function(html, scope) {\n      this.el.innerHTML = html;\n      this.el.style.position = 'absolute';\n      if (scope) {\n        $compile(angular.element(this.el).contents())(scope);\n      }\n    };\n\n    CustomMarker.prototype.getDraggable = function() {\n      return this.draggable;\n    };\n\n    CustomMarker.prototype.setDraggable = function(draggable) {\n      this.draggable = draggable;\n    };\n\n    CustomMarker.prototype.getPosition = function() {\n      return this.position;\n    };\n\n    CustomMarker.prototype.setPosition = function(position) {\n      position && (this.position = position); /* jshint ignore:line */\n      var _this = this;\n      if (this.getProjection() && typeof this.position.lng == 'function') {\n        void 0;\n        var setPosition = function() {\n          if (!_this.getProjection()) { return; }\n          var posPixel = _this.getProjection().fromLatLngToDivPixel(_this.position);\n          var x = Math.round(posPixel.x - (_this.el.offsetWidth/2));\n          var y = Math.round(posPixel.y - _this.el.offsetHeight - 10); // 10px for anchor\n          _this.el.style.left = x + \"px\";\n          _this.el.style.top = y + \"px\";\n          _this.el.style.visibility = \"visible\";\n        };\n        if (_this.el.offsetWidth && _this.el.offsetHeight) {\n          setPosition();\n        } else {\n          //delayed left/top calculation when width/height are not set instantly\n          $timeout(setPosition, 300);\n        }\n      }\n    };\n\n    CustomMarker.prototype.setZIndex = function(zIndex) {\n      zIndex && (this.zIndex = zIndex); /* jshint ignore:line */\n      this.el.style.zIndex = this.zIndex;\n    };\n\n    CustomMarker.prototype.getVisible = function() {\n      return this.visible;\n    };\n\n    CustomMarker.prototype.setVisible = function(visible) {\n      this.el.style.display = visible ? 'inline-block' : 'none';\n      this.visible = visible;\n    };\n\n    CustomMarker.prototype.addClass = function(className) {\n      var classNames = this.el.className.trim().split(' ');\n      (classNames.indexOf(className) == -1) && classNames.push(className); /* jshint ignore:line */\n      this.el.className = classNames.join(' ');\n    };\n\n    CustomMarker.prototype.removeClass = function(className) {\n      var classNames = this.el.className.split(' ');\n      var index = classNames.indexOf(className);\n      (index > -1) && classNames.splice(index, 1); /* jshint ignore:line */\n      this.el.className = classNames.join(' ');\n    };\n\n    CustomMarker.prototype.onAdd = function() {\n      this.getPanes().overlayMouseTarget.appendChild(this.el);\n    };\n\n    CustomMarker.prototype.draw = function() {\n      this.setPosition();\n      this.setZIndex(this.zIndex);\n      this.setVisible(this.visible);\n    };\n\n    CustomMarker.prototype.onRemove = function() {\n      this.el.parentNode.removeChild(this.el);\n      //this.el = null;\n    };\n  };\n\n  var linkFunc = function(orgHtml, varsToWatch) {\n    //console.log('orgHtml', orgHtml, 'varsToWatch', varsToWatch);\n\n    return function(scope, element, attrs, mapController) {\n      mapController = mapController[0]||mapController[1];\n      var orgAttrs = parser.orgAttributes(element);\n\n      var filtered = parser.filter(attrs);\n      var options = parser.getOptions(filtered, {scope: scope});\n      var events = parser.getEvents(scope, filtered);\n\n      /**\n       * build a custom marker element\n       */\n      element[0].style.display = 'none';\n      void 0;\n      var customMarker = new CustomMarker(options);\n\n      $timeout(function() { //apply contents, class, and location after it is compiled\n\n        scope.$watch('[' + varsToWatch.join(',') + ']', function() {\n          customMarker.setContent(orgHtml, scope);\n        }, true);\n\n        customMarker.setContent(element[0].innerHTML, scope);\n        var classNames = element[0].firstElementChild.className;\n        customMarker.addClass('custom-marker');\n        customMarker.addClass(classNames);\n        void 0;\n\n        if (!(options.position instanceof google.maps.LatLng)) {\n          NgMap.getGeoLocation(options.position).then(\n                function(latlng) {\n                  customMarker.setPosition(latlng);\n                }\n          );\n        }\n\n      });\n\n      void 0;\n      for (var eventName in events) { /* jshint ignore:line */\n        google.maps.event.addDomListener(\n          customMarker.el, eventName, events[eventName]);\n      }\n      mapController.addObject('customMarkers', customMarker);\n\n      //set observers\n      mapController.observeAttrSetObj(orgAttrs, attrs, customMarker);\n\n      element.bind('$destroy', function() {\n        //Is it required to remove event listeners when DOM is removed?\n        mapController.deleteObject('customMarkers', customMarker);\n      });\n\n    }; // linkFunc\n  };\n\n\n  var customMarkerDirective = function(\n      _$timeout_, _$compile_, $interpolate, Attr2MapOptions, _NgMap_, escapeRegExp\n    )  {\n    parser = Attr2MapOptions;\n    $timeout = _$timeout_;\n    $compile = _$compile_;\n    NgMap = _NgMap_;\n\n    var exprStartSymbol = $interpolate.startSymbol();\n    var exprEndSymbol = $interpolate.endSymbol();\n    var exprRegExp = new RegExp(escapeRegExp(exprStartSymbol) + '([^' + exprEndSymbol.substring(0, 1) + ']+)' + escapeRegExp(exprEndSymbol), 'g');\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      compile: function(element) {\n        setCustomMarker();\n        element[0].style.display ='none';\n        var orgHtml = element.html();\n        var matches = orgHtml.match(exprRegExp);\n        var varsToWatch = [];\n        //filter out that contains '::', 'this.'\n        (matches || []).forEach(function(match) {\n          var toWatch = match.replace(exprStartSymbol,'').replace(exprEndSymbol,'');\n          if (match.indexOf('::') == -1 &&\n            match.indexOf('this.') == -1 &&\n            varsToWatch.indexOf(toWatch) == -1) {\n            varsToWatch.push(match.replace(exprStartSymbol,'').replace(exprEndSymbol,''));\n          }\n        });\n\n        return linkFunc(orgHtml, varsToWatch);\n      }\n    }; // return\n  };// function\n  customMarkerDirective.$inject =\n    ['$timeout', '$compile', '$interpolate', 'Attr2MapOptions', 'NgMap', 'escapeRegexpFilter'];\n\n  angular.module('ngMap').directive('customMarker', customMarkerDirective);\n})();\n\n/**\n * @ngdoc directive\n * @name directions\n * @description\n *   Enable directions on map.\n *   e.g., origin, destination, draggable, waypoints, etc\n *\n *   Requires:  map directive\n *\n *   Restrict To:  Element\n *\n * @attr {String} DirectionsRendererOptions\n *   [Any DirectionsRendererOptions](https://developers.google.com/maps/documentation/javascript/reference#DirectionsRendererOptions)\n * @attr {String} DirectionsRequestOptions\n *   [Any DirectionsRequest options](https://developers.google.com/maps/documentation/javascript/reference#DirectionsRequest)\n * @example\n *  <map zoom=\"14\" center=\"37.7699298, -122.4469157\">\n *    <directions\n *      draggable=\"true\"\n *      panel=\"directions-panel\"\n *      travel-mode=\"{{travelMode}}\"\n *      waypoints=\"[{location:'kingston', stopover:true}]\"\n *      origin=\"{{origin}}\"\n *      destination=\"{{destination}}\">\n *    </directions>\n *  </map>\n */\n/* global document */\n(function() {\n  'use strict';\n  var NgMap, $timeout, NavigatorGeolocation;\n\n  var getDirectionsRenderer = function(options, events) {\n    if (options.panel) {\n      options.panel = document.getElementById(options.panel) ||\n        document.querySelector(options.panel);\n    }\n    var renderer = new google.maps.DirectionsRenderer(options);\n    for (var eventName in events) {\n      google.maps.event.addListener(renderer, eventName, events[eventName]);\n    }\n    return renderer;\n  };\n\n  var updateRoute = function(renderer, options) {\n    var directionsService = new google.maps.DirectionsService();\n\n    /* filter out valid keys only for DirectionsRequest object*/\n    var request = options;\n    request.travelMode = request.travelMode || 'DRIVING';\n    var validKeys = [\n      'origin', 'destination', 'travelMode', 'transitOptions', 'unitSystem',\n      'durationInTraffic', 'waypoints', 'optimizeWaypoints', \n      'provideRouteAlternatives', 'avoidHighways', 'avoidTolls', 'region'\n    ];\n    for(var key in request){\n      (validKeys.indexOf(key) === -1) && (delete request[key]);\n    }\n\n    if(request.waypoints) {\n      // Check fo valid values\n      if(request.waypoints == \"[]\" || request.waypoints === \"\") {\n        delete request.waypoints;\n      }\n    }\n\n    var showDirections = function(request) {\n      directionsService.route(request, function(response, status) {\n        if (status == google.maps.DirectionsStatus.OK) {\n          $timeout(function() {\n            renderer.setDirections(response);\n          });\n        }\n      });\n    };\n\n    if (request.origin && request.destination) {\n      if (request.origin == 'current-location') {\n        NavigatorGeolocation.getCurrentPosition().then(function(ll) {\n          request.origin = new google.maps.LatLng(ll.coords.latitude, ll.coords.longitude);\n          showDirections(request);\n        });\n      } else if (request.destination == 'current-location') {\n        NavigatorGeolocation.getCurrentPosition().then(function(ll) {\n          request.destination = new google.maps.LatLng(ll.coords.latitude, ll.coords.longitude);\n          showDirections(request);\n        });\n      } else {\n        showDirections(request);\n      }\n    }\n  };\n\n  var directions = function(\n      Attr2MapOptions, _$timeout_, _NavigatorGeolocation_, _NgMap_) {\n    var parser = Attr2MapOptions;\n    NgMap = _NgMap_;\n    $timeout = _$timeout_;\n    NavigatorGeolocation = _NavigatorGeolocation_;\n\n    var linkFunc = function(scope, element, attrs, mapController) {\n      mapController = mapController[0]||mapController[1];\n\n      var orgAttrs = parser.orgAttributes(element);\n      var filtered = parser.filter(attrs);\n      var options = parser.getOptions(filtered, {scope: scope});\n      var events = parser.getEvents(scope, filtered);\n      var attrsToObserve = parser.getAttrsToObserve(orgAttrs);\n\n      var renderer = getDirectionsRenderer(options, events);\n      mapController.addObject('directionsRenderers', renderer);\n\n      attrsToObserve.forEach(function(attrName) {\n        (function(attrName) {\n          attrs.$observe(attrName, function(val) {\n            if (attrName == 'panel') {\n              $timeout(function(){\n                var panel =\n                  document.getElementById(val) || document.querySelector(val);\n                void 0;\n                panel && renderer.setPanel(panel);\n              });\n            } else if (options[attrName] !== val) { //apply only if changed\n              var optionValue = parser.toOptionValue(val, {key: attrName});\n              void 0;\n              options[attrName] = optionValue;\n              updateRoute(renderer, options);\n            }\n          });\n        })(attrName);\n      });\n\n      NgMap.getMap().then(function() {\n        updateRoute(renderer, options);\n      });\n      element.bind('$destroy', function() {\n        mapController.deleteObject('directionsRenderers', renderer);\n      });\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc\n    };\n  }; // var directions\n  directions.$inject =\n    ['Attr2MapOptions', '$timeout', 'NavigatorGeolocation', 'NgMap'];\n\n  angular.module('ngMap').directive('directions', directions);\n})();\n\n\n/**\n * @ngdoc directive\n * @name drawing-manager\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *\n *  <map zoom=\"13\" center=\"37.774546, -122.433523\" map-type-id=\"SATELLITE\">\n *    <drawing-manager\n *      on-overlaycomplete=\"onMapOverlayCompleted()\"\n *      position=\"ControlPosition.TOP_CENTER\"\n *      drawingModes=\"POLYGON,CIRCLE\"\n *      drawingControl=\"true\"\n *      circleOptions=\"fillColor: '#FFFF00';fillOpacity: 1;strokeWeight: 5;clickable: false;zIndex: 1;editable: true;\" >\n *    </drawing-manager>\n *  </map>\n *\n *  TODO: Add remove button.\n *  currently, for our solution, we have the shapes/markers in our own\n *  controller, and we use some css classes to change the shape button\n *  to a remove button (<div>X</div>) and have the remove operation in our own controller.\n */\n(function() {\n  'use strict';\n  angular.module('ngMap').directive('drawingManager', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var controlOptions = parser.getControlOptions(filtered);\n        var events = parser.getEvents(scope, filtered);\n\n        /**\n         * set options\n         */\n        var drawingManager = new google.maps.drawing.DrawingManager({\n          drawingMode: options.drawingmode,\n          drawingControl: options.drawingcontrol,\n          drawingControlOptions: controlOptions.drawingControlOptions,\n          circleOptions:options.circleoptions,\n          markerOptions:options.markeroptions,\n          polygonOptions:options.polygonoptions,\n          polylineOptions:options.polylineoptions,\n          rectangleOptions:options.rectangleoptions\n        });\n\n        //Observers\n        attrs.$observe('drawingControlOptions', function (newValue) {\n          drawingManager.drawingControlOptions = parser.getControlOptions({drawingControlOptions: newValue}).drawingControlOptions;\n          drawingManager.setDrawingMode(null);\n          drawingManager.setMap(mapController.map);\n        });\n\n\n        /**\n         * set events\n         */\n        for (var eventName in events) {\n          google.maps.event.addListener(drawingManager, eventName, events[eventName]);\n        }\n\n        mapController.addObject('mapDrawingManager', drawingManager);\n\n        element.bind('$destroy', function() {\n          mapController.deleteObject('mapDrawingManager', drawingManager);\n        });\n      }\n    }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name dynamic-maps-engine-layer\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *   <map zoom=\"14\" center=\"[59.322506, 18.010025]\">\n *     <dynamic-maps-engine-layer\n *       layer-id=\"06673056454046135537-08896501997766553811\">\n *     </dynamic-maps-engine-layer>\n *    </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('dynamicMapsEngineLayer', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getDynamicMapsEngineLayer = function(options, events) {\n      var layer = new google.maps.visualization.DynamicMapsEngineLayer(options);\n\n      for (var eventName in events) {\n        google.maps.event.addListener(layer, eventName, events[eventName]);\n      }\n\n      return layer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered, events);\n\n        var layer = getDynamicMapsEngineLayer(options, events);\n        mapController.addObject('mapsEngineLayers', layer);\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name fusion-tables-layer\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *   <map zoom=\"11\" center=\"41.850033, -87.6500523\">\n *     <fusion-tables-layer query=\"{\n *       select: 'Geocodable address',\n *       from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'}\">\n *     </fusion-tables-layer>\n *   </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('fusionTablesLayer', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getLayer = function(options, events) {\n      var layer = new google.maps.FusionTablesLayer(options);\n\n      for (var eventName in events) {\n        google.maps.event.addListener(layer, eventName, events[eventName]);\n      }\n\n      return layer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered, events);\n        void 0;\n\n        var layer = getLayer(options, events);\n        mapController.addObject('fusionTablesLayers', layer);\n        element.bind('$destroy', function() {\n          mapController.deleteObject('fusionTablesLayers', layer);\n        });\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name heatmap-layer\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n *\n * <map zoom=\"11\" center=\"[41.875696,-87.624207]\">\n *   <heatmap-layer data=\"taxiData\"></heatmap-layer>\n * </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('heatmapLayer', [\n    'Attr2MapOptions', '$window', function(Attr2MapOptions, $window) {\n    var parser = Attr2MapOptions;\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var filtered = parser.filter(attrs);\n\n        /**\n         * set options\n         */\n        var options = parser.getOptions(filtered, {scope: scope});\n        options.data = $window[attrs.data] || scope[attrs.data];\n        if (options.data instanceof Array) {\n          options.data = new google.maps.MVCArray(options.data);\n        } else {\n          throw \"invalid heatmap data\";\n        }\n        var layer = new google.maps.visualization.HeatmapLayer(options);\n\n        /**\n         * set events\n         */\n        var events = parser.getEvents(scope, filtered);\n        void 0;\n\n        mapController.addObject('heatmapLayers', layer);\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name info-window\n * @param Attr2MapOptions {service}\n *   convert html attribute to Google map api options\n * @param $compile {service} $compile service\n * @description\n *  Defines infoWindow and provides compile method\n *\n *  Requires:  map directive\n *\n *  Restrict To:  Element\n *\n *  NOTE: this directive should **NOT** be used with `ng-repeat`\n *  because InfoWindow itself is a template, and a template must be\n *  reused by each marker, thus, should not be redefined repeatedly\n *  by `ng-repeat`.\n *\n * @attr {Boolean} visible\n *   Indicates to show it when map is initialized\n * @attr {Boolean} visible-on-marker\n *   Indicates to show it on a marker when map is initialized\n * @attr {Expression} geo-callback\n *   if position is an address, the expression is will be performed\n *   when geo-lookup is successful. e.g., geo-callback=\"showDetail()\"\n * @attr {String} &lt;InfoWindowOption> Any InfoWindow options,\n *   https://developers.google.com/maps/documentation/javascript/reference?csw=1#InfoWindowOptions\n * @attr {String} &lt;InfoWindowEvent> Any InfoWindow events,\n *   https://developers.google.com/maps/documentation/javascript/reference\n * @example\n * Usage:\n *   <map MAP_ATTRIBUTES>\n *    <info-window id=\"foo\" ANY_OPTIONS ANY_EVENTS\"></info-window>\n *   </map>\n *\n * Example:\n *  <map center=\"41.850033,-87.6500523\" zoom=\"3\">\n *    <info-window id=\"1\" position=\"41.850033,-87.6500523\" >\n *      <div ng-non-bindable>\n *        Chicago, IL<br/>\n *        LatLng: {{chicago.lat()}}, {{chicago.lng()}}, <br/>\n *        World Coordinate: {{worldCoordinate.x}}, {{worldCoordinate.y}}, <br/>\n *        Pixel Coordinate: {{pixelCoordinate.x}}, {{pixelCoordinate.y}}, <br/>\n *        Tile Coordinate: {{tileCoordinate.x}}, {{tileCoordinate.y}} at Zoom Level {{map.getZoom()}}\n *      </div>\n *    </info-window>\n *  </map>\n */\n/* global google */\n(function() {\n  'use strict';\n\n  var infoWindow = function(Attr2MapOptions, $compile, $q, $templateRequest, $timeout, $parse, NgMap)  {\n    var parser = Attr2MapOptions;\n\n    var getInfoWindow = function(options, events, element) {\n      var infoWindow;\n\n      /**\n       * set options\n       */\n      if (options.position && !(options.position instanceof google.maps.LatLng)) {\n        delete options.position;\n      }\n      infoWindow = new google.maps.InfoWindow(options);\n\n      /**\n       * set events\n       */\n      for (var eventName in events) {\n        if (eventName) {\n          google.maps.event.addListener(infoWindow, eventName, events[eventName]);\n        }\n      }\n\n      /**\n       * set template and template-related functions\n       * it must have a container element with ng-non-bindable\n       */\n      var templatePromise = $q(function(resolve) {\n        if (angular.isString(element)) {\n          $templateRequest(element).then(function (requestedTemplate) {\n            resolve(angular.element(requestedTemplate).wrap('<div>').parent());\n          }, function(message) {\n            throw \"info-window template request failed: \" + message;\n          });\n        }\n        else {\n          resolve(element);\n        }\n      }).then(function(resolvedTemplate) {\n        var template = resolvedTemplate.html().trim();\n        if (angular.element(template).length != 1) {\n          throw \"info-window working as a template must have a container\";\n        }\n        infoWindow.__template = template.replace(/\\s?ng-non-bindable[='\"]+/,\"\");\n      });\n\n      infoWindow.__open = function(map, scope, anchor) {\n        templatePromise.then(function() {\n          $timeout(function() {\n            anchor && (scope.anchor = anchor);\n            var el = $compile(infoWindow.__template)(scope);\n            infoWindow.setContent(el[0]);\n            scope.$apply();\n            if (anchor && anchor.getPosition) {\n              infoWindow.open(map, anchor);\n            } else if (anchor && anchor instanceof google.maps.LatLng) {\n              infoWindow.open(map);\n              infoWindow.setPosition(anchor);\n            } else {\n              infoWindow.open(map);\n            }\n            var infoWindowContainerEl = infoWindow.content.parentElement.parentElement.parentElement;\n            infoWindowContainerEl.className = \"ng-map-info-window\";\n          });\n        });\n      };\n\n      return infoWindow;\n    };\n\n    var linkFunc = function(scope, element, attrs, mapController) {\n      mapController = mapController[0]||mapController[1];\n\n      element.css('display','none');\n\n      var orgAttrs = parser.orgAttributes(element);\n      var filtered = parser.filter(attrs);\n      var options = parser.getOptions(filtered, {scope: scope});\n      var events = parser.getEvents(scope, filtered);\n\n      var infoWindow = getInfoWindow(options, events, options.template || element);\n      var address;\n      if (options.position && !(options.position instanceof google.maps.LatLng)) {\n        address = options.position;\n      }\n      if (address) {\n        NgMap.getGeoLocation(address).then(function(latlng) {\n          infoWindow.setPosition(latlng);\n          infoWindow.__open(mapController.map, scope, latlng);\n          var geoCallback = attrs.geoCallback;\n          geoCallback && $parse(geoCallback)(scope);\n        });\n      }\n\n      mapController.addObject('infoWindows', infoWindow);\n      mapController.observeAttrSetObj(orgAttrs, attrs, infoWindow);\n\n      mapController.showInfoWindow =\n      mapController.map.showInfoWindow = mapController.showInfoWindow ||\n        function(p1, p2, p3) { //event, id, marker\n          var id = typeof p1 == 'string' ? p1 : p2;\n          var marker = typeof p1 == 'string' ? p2 : p3;\n          if (typeof marker == 'string') {\n            //Check if markers if defined to avoid odd 'undefined' errors\n            if (\n              typeof mapController.map.markers != \"undefined\"\n              && typeof mapController.map.markers[marker] != \"undefined\") {\n                marker = mapController.map.markers[marker];\n            } else if (\n              //additionally check if that marker is a custom marker\n              typeof mapController.map.customMarkers !== \"undefined\"\n              && typeof mapController.map.customMarkers[marker] !== \"undefined\") {\n                marker = mapController.map.customMarkers[marker];\n            } else {\n              //Better error output if marker with that id is not defined\n              throw new Error(\"Cant open info window for id \" + marker + \". Marker or CustomMarker is not defined\")\n            }\n          }\n\n          var infoWindow = mapController.map.infoWindows[id];\n          var anchor = marker ? marker : (this.getPosition ? this : null);\n          infoWindow.__open(mapController.map, scope, anchor);\n          if(mapController.singleInfoWindow) {\n            if(mapController.lastInfoWindow) {\n              scope.hideInfoWindow(mapController.lastInfoWindow);\n            }\n            mapController.lastInfoWindow = id;\n          }\n        };\n\n      mapController.hideInfoWindow =\n      mapController.map.hideInfoWindow = mapController.hideInfoWindow ||\n        function(p1, p2) {\n          var id = typeof p1 == 'string' ? p1 : p2;\n          var infoWindow = mapController.map.infoWindows[id];\n          infoWindow.close();\n        };\n\n      //TODO DEPRECATED\n      scope.showInfoWindow = mapController.map.showInfoWindow;\n      scope.hideInfoWindow = mapController.map.hideInfoWindow;\n\n      var map = infoWindow.mapId ? {id:infoWindow.mapId} : 0;\n      NgMap.getMap(map).then(function(map) {\n        infoWindow.visible && infoWindow.__open(map, scope);\n        if (infoWindow.visibleOnMarker) {\n          var markerId = infoWindow.visibleOnMarker;\n          infoWindow.__open(map, scope, map.markers[markerId]);\n        }\n      });\n\n    }; //link\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc\n    };\n\n  }; // infoWindow\n  infoWindow.$inject =\n    ['Attr2MapOptions', '$compile', '$q', '$templateRequest', '$timeout', '$parse', 'NgMap'];\n\n  angular.module('ngMap').directive('infoWindow', infoWindow);\n})();\n\n/**\n * @ngdoc directive\n * @name kml-layer\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   renders Kml layer on a map\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @attr {Url} url url of the kml layer\n * @attr {KmlLayerOptions} KmlLayerOptions\n *   (https://developers.google.com/maps/documentation/javascript/reference#KmlLayerOptions) \n * @attr {String} &lt;KmlLayerEvent> Any KmlLayer events,\n *   https://developers.google.com/maps/documentation/javascript/reference\n * @example\n * Usage:\n *   <map MAP_ATTRIBUTES>\n *    <kml-layer ANY_KML_LAYER ANY_KML_LAYER_EVENTS\"></kml-layer>\n *   </map>\n *\n * Example:\n *\n * <map zoom=\"11\" center=\"[41.875696,-87.624207]\">\n *   <kml-layer url=\"https://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml\" >\n *   </kml-layer>\n * </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('kmlLayer', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getKmlLayer = function(options, events) {\n      var kmlLayer = new google.maps.KmlLayer(options);\n      for (var eventName in events) {\n        google.maps.event.addListener(kmlLayer, eventName, events[eventName]);\n      }\n      return kmlLayer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var orgAttrs = parser.orgAttributes(element);\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered);\n        void 0;\n\n        var kmlLayer = getKmlLayer(options, events);\n        mapController.addObject('kmlLayers', kmlLayer);\n        mapController.observeAttrSetObj(orgAttrs, attrs, kmlLayer);  //observers\n        element.bind('$destroy', function() {\n          mapController.deleteObject('kmlLayers', kmlLayer);\n        });\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name map-data\n * @param Attr2MapOptions {service}\n *   convert html attribute to Google map api options\n * @description\n *   set map data\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @wn {String} method-name, run map.data[method-name] with attribute value\n * @example\n * Example:\n *\n *  <map zoom=\"11\" center=\"[41.875696,-87.624207]\">\n *    <map-data load-geo-json=\"https://storage.googleapis.com/maps-devrel/google.json\"></map-data>\n *   </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('mapData', [\n    'Attr2MapOptions', 'NgMap', function(Attr2MapOptions, NgMap) {\n    var parser = Attr2MapOptions;\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0] || mapController[1];\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered, events);\n\n        void 0;\n        NgMap.getMap(mapController.map.id).then(function(map) {\n          //options\n          for (var key in options) {\n            var val = options[key];\n            if (typeof scope[val] === \"function\") {\n              map.data[key](scope[val]);\n            } else {\n              map.data[key](val);\n            }\n          }\n\n          //events\n          for (var eventName in events) {\n            map.data.addListener(eventName, events[eventName]);\n          }\n        });\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name map-lazy-load\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @description\n *  Requires: Delay the initialization of map directive\n *    until the map is ready to be rendered\n *  Restrict To: Attribute\n *\n * @attr {String} map-lazy-load\n *    Maps api script source file location.\n *    Example:\n *      'https://maps.google.com/maps/api/js'\n * @attr {String} map-lazy-load-params\n *   Maps api script source file location via angular scope variable.\n *   Also requires the map-lazy-load attribute to be present in the directive.\n *   Example: In your controller, set\n *     $scope.googleMapsURL = 'https://maps.google.com/maps/api/js?v=3.20&client=XXXXXenter-api-key-hereXXXX'\n *\n * @example\n * Example:\n *\n *   <div map-lazy-load=\"http://maps.google.com/maps/api/js\">\n *     <map center=\"Brampton\" zoom=\"10\">\n *       <marker position=\"Brampton\"></marker>\n *     </map>\n *   </div>\n *\n *   <div map-lazy-load=\"http://maps.google.com/maps/api/js\"\n *        map-lazy-load-params=\"{{googleMapsUrl}}\">\n *     <map center=\"Brampton\" zoom=\"10\">\n *       <marker position=\"Brampton\"></marker>\n *     </map>\n *   </div>\n */\n/* global window, document */\n(function() {\n  'use strict';\n  var $timeout, $compile, src, savedHtml = [], elements = [];\n\n  var preLinkFunc = function(scope, element, attrs) {\n    var mapsUrl = attrs.mapLazyLoadParams || attrs.mapLazyLoad;\n\n    if(window.google === undefined || window.google.maps === undefined) {\n      elements.push({\n        scope: scope,\n        element: element,\n        savedHtml: savedHtml[elements.length],\n      });\n\n      window.lazyLoadCallback = function() {\n        void 0;\n        $timeout(function() { /* give some time to load */\n          elements.forEach(function(elm) {\n              elm.element.html(elm.savedHtml);\n              $compile(elm.element.contents())(elm.scope);\n          });\n        }, 100);\n      };\n\n      var scriptEl = document.createElement('script');\n      void 0;\n\n      scriptEl.src = mapsUrl +\n        (mapsUrl.indexOf('?') > -1 ? '&' : '?') +\n        'callback=lazyLoadCallback';\n\n        if (!document.querySelector('script[src=\"' + scriptEl.src + '\"]')) {\n          document.body.appendChild(scriptEl);\n        }\n    } else {\n      element.html(savedHtml);\n      $compile(element.contents())(scope);\n    }\n  };\n\n  var compileFunc = function(tElement, tAttrs) {\n\n    (!tAttrs.mapLazyLoad) && void 0;\n    savedHtml.push(tElement.html());\n    src = tAttrs.mapLazyLoad;\n\n    /**\n     * if already loaded, stop processing it\n     */\n    if(window.google !== undefined && window.google.maps !== undefined) {\n      return false;\n    }\n\n    tElement.html('');  // will compile again after script is loaded\n\n    return {\n      pre: preLinkFunc\n    };\n  };\n\n  var mapLazyLoad = function(_$compile_, _$timeout_) {\n    $compile = _$compile_, $timeout = _$timeout_;\n    return {\n      compile: compileFunc\n    };\n  };\n  mapLazyLoad.$inject = ['$compile','$timeout'];\n\n  angular.module('ngMap').directive('mapLazyLoad', mapLazyLoad);\n})();\n\n/**\n * @ngdoc directive\n * @name map-type\n * @param Attr2MapOptions {service} \n *   convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *\n *   <map zoom=\"13\" center=\"34.04924594193164, -118.24104309082031\">\n *     <map-type name=\"coordinate\" object=\"coordinateMapType\"></map-type>\n *   </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('mapType', ['$parse', 'NgMap',\n    function($parse, NgMap) {\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var mapTypeName = attrs.name, mapTypeObject;\n        if (!mapTypeName) {\n          throw \"invalid map-type name\";\n        }\n        mapTypeObject = $parse(attrs.object)(scope);\n        if (!mapTypeObject) {\n          throw \"invalid map-type object\";\n        }\n\n        NgMap.getMap().then(function(map) {\n          map.mapTypes.set(mapTypeName, mapTypeObject);\n        });\n        mapController.addObject('mapTypes', mapTypeObject);\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @memberof ngMap\n * @name ng-map\n * @param Attr2Options {service}\n *  convert html attribute to Google map api options\n * @description\n * Implementation of {@link __MapController}\n * Initialize a Google map within a `<div>` tag\n *   with given options and register events\n *\n * @attr {Expression} map-initialized\n *   callback function when map is initialized\n *   e.g., map-initialized=\"mycallback(map)\"\n * @attr {Expression} geo-callback if center is an address or current location,\n *   the expression is will be executed when geo-lookup is successful.\n *   e.g., geo-callback=\"showMyStoreInfo()\"\n * @attr {Array} geo-fallback-center\n *   The center of map incase geolocation failed. i.e. [0,0]\n * @attr {Object} geo-location-options\n *  The navigator geolocation options.\n *  e.g., { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }.\n *  If none specified, { timeout: 5000 }.\n *  If timeout not specified, timeout: 5000 added\n * @attr {Boolean} zoom-to-include-markers\n *  When true, map boundary will be changed automatially\n *  to include all markers when initialized\n * @attr {Boolean} default-style\n *  When false, the default styling,\n *  `display:block;height:300px`, will be ignored.\n * @attr {String} &lt;MapOption> Any Google map options,\n *  https://developers.google.com/maps/documentation/javascript/reference?csw=1#MapOptions\n * @attr {String} &lt;MapEvent> Any Google map events,\n *  https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/map_events.html\n * @attr {Boolean} single-info-window\n *  When true the map will only display one info window at the time,\n *  if not set or false,\n *  everytime an info window is open it will be displayed with the othe one.\n * @attr {Boolean} trigger-resize\n *  Default to false.  Set to true to trigger resize of the map.  Needs to be done anytime you resize the map\n * @example\n * Usage:\n *   <map MAP_OPTIONS_OR_MAP_EVENTS ..>\n *     ... Any children directives\n *   </map>\n *\n * Example:\n *   <map center=\"[40.74, -74.18]\" on-click=\"doThat()\">\n *   </map>\n *\n *   <map geo-fallback-center=\"[40.74, -74.18]\" zoom-to-inlude-markers=\"true\">\n *   </map>\n */\n(function () {\n  'use strict';\n\n  var mapDirective = function () {\n    return {\n      restrict: 'AE',\n      controller: '__MapController',\n      controllerAs: 'ngmap'\n    };\n  };\n\n  angular.module('ngMap').directive('map', [mapDirective]);\n  angular.module('ngMap').directive('ngMap', [mapDirective]);\n})();\n\n/**\n * @ngdoc directive\n * @name maps-engine-layer\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *  <map zoom=\"14\" center=\"[59.322506, 18.010025]\">\n *    <maps-engine-layer layer-id=\"06673056454046135537-08896501997766553811\">\n *    </maps-engine-layer>\n *  </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('mapsEngineLayer', ['Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getMapsEngineLayer = function(options, events) {\n      var layer = new google.maps.visualization.MapsEngineLayer(options);\n\n      for (var eventName in events) {\n        google.maps.event.addListener(layer, eventName, events[eventName]);\n      }\n\n      return layer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered, events);\n        void 0;\n\n        var layer = getMapsEngineLayer(options, events);\n        mapController.addObject('mapsEngineLayers', layer);\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name marker\n * @param Attr2Options {service} convert html attribute to Google map api options\n * @param NavigatorGeolocation It is used to find the current location\n * @description\n *  Draw a Google map marker on a map with given options and register events\n *\n *  Requires:  map directive\n *\n *  Restrict To:  Element\n *\n * @attr {String} position address, 'current', or [latitude, longitude]\n *  example:\n *    '1600 Pennsylvania Ave, 20500  Washingtion DC',\n *    'current position',\n *    '[40.74, -74.18]'\n * @attr {Boolean} centered if set, map will be centered with this marker\n * @attr {Expression} geo-callback if position is an address,\n *   the expression is will be performed when geo-lookup is successful.\n *   e.g., geo-callback=\"showStoreInfo()\"\n * @attr {Boolean} no-watcher if true, no attribute observer is added.\n *   Useful for many ng-repeat\n * @attr {String} &lt;MarkerOption>\n *   [Any Marker options](https://developers.google.com/maps/documentation/javascript/reference?csw=1#MarkerOptions)\n * @attr {String} &lt;MapEvent>\n *   [Any Marker events](https://developers.google.com/maps/documentation/javascript/reference)\n * @example\n * Usage:\n *   <map MAP_ATTRIBUTES>\n *    <marker ANY_MARKER_OPTIONS ANY_MARKER_EVENTS\"></MARKER>\n *   </map>\n *\n * Example:\n *   <map center=\"[40.74, -74.18]\">\n *    <marker position=\"[40.74, -74.18]\" on-click=\"myfunc()\"></div>\n *   </map>\n *\n *   <map center=\"the cn tower\">\n *    <marker position=\"the cn tower\" on-click=\"myfunc()\"></div>\n *   </map>\n */\n/* global google */\n(function() {\n  'use strict';\n  var parser, $parse, NgMap;\n\n  var getMarker = function(options, events) {\n    var marker;\n\n    if (NgMap.defaultOptions.marker) {\n      for (var key in NgMap.defaultOptions.marker) {\n        if (typeof options[key] == 'undefined') {\n          void 0;\n          options[key] = NgMap.defaultOptions.marker[key];\n        }\n      }\n    }\n\n    if (!(options.position instanceof google.maps.LatLng)) {\n      options.position = new google.maps.LatLng(0,0);\n    }\n    marker = new google.maps.Marker(options);\n\n    /**\n     * set events\n     */\n    if (Object.keys(events).length > 0) {\n      void 0;\n    }\n    for (var eventName in events) {\n      if (eventName) {\n        google.maps.event.addListener(marker, eventName, events[eventName]);\n      }\n    }\n\n    return marker;\n  };\n\n  var linkFunc = function(scope, element, attrs, mapController) {\n    mapController = mapController[0]||mapController[1];\n\n    var orgAttrs = parser.orgAttributes(element);\n    var filtered = parser.filter(attrs);\n    var markerOptions = parser.getOptions(filtered, scope, {scope: scope});\n    var markerEvents = parser.getEvents(scope, filtered);\n    void 0;\n\n    var address;\n    if (!(markerOptions.position instanceof google.maps.LatLng)) {\n      address = markerOptions.position;\n    }\n    var marker = getMarker(markerOptions, markerEvents);\n    mapController.addObject('markers', marker);\n    if (address) {\n      NgMap.getGeoLocation(address).then(function(latlng) {\n        marker.setPosition(latlng);\n        markerOptions.centered && marker.map.setCenter(latlng);\n        var geoCallback = attrs.geoCallback;\n        geoCallback && $parse(geoCallback)(scope);\n      });\n    }\n\n    //set observers\n    mapController.observeAttrSetObj(orgAttrs, attrs, marker); /* observers */\n\n    element.bind('$destroy', function() {\n      mapController.deleteObject('markers', marker);\n    });\n  };\n\n  var marker = function(Attr2MapOptions, _$parse_, _NgMap_) {\n    parser = Attr2MapOptions;\n    $parse = _$parse_;\n    NgMap = _NgMap_;\n\n    return {\n      restrict: 'E',\n      require: ['^?map','?^ngMap'],\n      link: linkFunc\n    };\n  };\n\n  marker.$inject = ['Attr2MapOptions', '$parse', 'NgMap'];\n  angular.module('ngMap').directive('marker', marker);\n\n})();\n\n/**\n * @ngdoc directive\n * @name overlay-map-type\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @param $window {service}\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *\n * <map zoom=\"13\" center=\"34.04924594193164, -118.24104309082031\">\n *   <overlay-map-type index=\"0\" object=\"coordinateMapType\"></map-type>\n * </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('overlayMapType', [\n    'NgMap', function(NgMap) {\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var initMethod = attrs.initMethod || \"insertAt\";\n        var overlayMapTypeObject = scope[attrs.object];\n\n        NgMap.getMap().then(function(map) {\n          if (initMethod == \"insertAt\") {\n            var index = parseInt(attrs.index, 10);\n            map.overlayMapTypes.insertAt(index, overlayMapTypeObject);\n          } else if (initMethod == \"push\") {\n            map.overlayMapTypes.push(overlayMapTypeObject);\n          }\n        });\n        mapController.addObject('overlayMapTypes', overlayMapTypeObject);\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name places-auto-complete\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   Provides address auto complete feature to an input element\n *   Requires: input tag\n *   Restrict To: Attribute\n *\n * @attr {AutoCompleteOptions}\n *   [Any AutocompleteOptions](https://developers.google.com/maps/documentation/javascript/3.exp/reference#AutocompleteOptions)\n *\n * @example\n * Example:\n *   <script src=\"https://maps.googleapis.com/maps/api/js?libraries=places\"></script>\n *   <input places-auto-complete types=\"['geocode']\" on-place-changed=\"myCallback(place)\" component-restrictions=\"{country:'au'}\"/>\n */\n/* global google */\n(function() {\n  'use strict';\n\n  var placesAutoComplete = function(Attr2MapOptions, $timeout) {\n    var parser = Attr2MapOptions;\n\n    var linkFunc = function(scope, element, attrs, ngModelCtrl) {\n      if (attrs.placesAutoComplete ==='false') {\n        return false;\n      }\n      var filtered = parser.filter(attrs);\n      var options = parser.getOptions(filtered, {scope: scope});\n      var events = parser.getEvents(scope, filtered);\n      var autocomplete = new google.maps.places.Autocomplete(element[0], options);\n      for (var eventName in events) {\n        google.maps.event.addListener(autocomplete, eventName, events[eventName]);\n      }\n\n      var updateModel = function() {\n        $timeout(function(){\n          ngModelCtrl && ngModelCtrl.$setViewValue(element.val());\n        },100);\n      };\n      google.maps.event.addListener(autocomplete, 'place_changed', updateModel);\n      element[0].addEventListener('change', updateModel);\n\n      attrs.$observe('types', function(val) {\n        if (val) {\n          var optionValue = parser.toOptionValue(val, {key: 'types'});\n          autocomplete.setTypes(optionValue);\n        }\n      });\n\t  \n\t  attrs.$observe('componentRestrictions', function (val) {\n\t\t if (val) {\n\t\t   autocomplete.setComponentRestrictions(scope.$eval(val));\n\t\t }\n\t   });\n    };\n\t\n    return {\n      restrict: 'A',\n      require: '?ngModel',\n      link: linkFunc\n    };\n  };\n\n  placesAutoComplete.$inject = ['Attr2MapOptions', '$timeout'];\n  angular.module('ngMap').directive('placesAutoComplete', placesAutoComplete);\n})();\n\n/**\n * @ngdoc directive\n * @name shape\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   Initialize a Google map shape in map with given options and register events\n *   The shapes are:\n *     . circle\n *     . polygon\n *     . polyline\n *     . rectangle\n *     . groundOverlay(or image)\n *\n *   Requires:  map directive\n *\n *   Restrict To:  Element\n *\n * @attr {Boolean} centered if set, map will be centered with this marker\n * @attr {Expression} geo-callback if shape is a circle and the center is\n *   an address, the expression is will be performed when geo-lookup\n *   is successful. e.g., geo-callback=\"showDetail()\"\n * @attr {String} &lt;OPTIONS>\n *   For circle, [any circle options](https://developers.google.com/maps/documentation/javascript/reference#CircleOptions)\n *   For polygon, [any polygon options](https://developers.google.com/maps/documentation/javascript/reference#PolygonOptions)\n *   For polyline, [any polyline options](https://developers.google.com/maps/documentation/javascript/reference#PolylineOptions)\n *   For rectangle, [any rectangle options](https://developers.google.com/maps/documentation/javascript/reference#RectangleOptions)\n *   For image, [any groundOverlay options](https://developers.google.com/maps/documentation/javascript/reference#GroundOverlayOptions)\n * @attr {String} &lt;MapEvent> [Any Shape events](https://developers.google.com/maps/documentation/javascript/reference)\n * @example\n * Usage:\n *   <map MAP_ATTRIBUTES>\n *    <shape name=SHAPE_NAME ANY_SHAPE_OPTIONS ANY_SHAPE_EVENTS\"></MARKER>\n *   </map>\n *\n * Example:\n *\n *   <map zoom=\"11\" center=\"[40.74, -74.18]\">\n *     <shape id=\"polyline\" name=\"polyline\" geodesic=\"true\"\n *       stroke-color=\"#FF0000\" stroke-opacity=\"1.0\" stroke-weight=\"2\"\n *       path=\"[[40.74,-74.18],[40.64,-74.10],[40.54,-74.05],[40.44,-74]]\" >\n *     </shape>\n *   </map>\n *\n *   <map zoom=\"11\" center=\"[40.74, -74.18]\">\n *     <shape id=\"polygon\" name=\"polygon\" stroke-color=\"#FF0000\"\n *       stroke-opacity=\"1.0\" stroke-weight=\"2\"\n *       paths=\"[[40.74,-74.18],[40.64,-74.18],[40.84,-74.08],[40.74,-74.18]]\" >\n *     </shape>\n *   </map>\n *\n *   <map zoom=\"11\" center=\"[40.74, -74.18]\">\n *     <shape id=\"rectangle\" name=\"rectangle\" stroke-color='#FF0000'\n *       stroke-opacity=\"0.8\" stroke-weight=\"2\"\n *       bounds=\"[[40.74,-74.18], [40.78,-74.14]]\" editable=\"true\" >\n *     </shape>\n *   </map>\n *\n *   <map zoom=\"11\" center=\"[40.74, -74.18]\">\n *     <shape id=\"circle\" name=\"circle\" stroke-color='#FF0000'\n *       stroke-opacity=\"0.8\"stroke-weight=\"2\"\n *       center=\"[40.70,-74.14]\" radius=\"4000\" editable=\"true\" >\n *     </shape>\n *   </map>\n *\n *   <map zoom=\"11\" center=\"[40.74, -74.18]\">\n *     <shape id=\"image\" name=\"image\"\n *       url=\"https://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg\"\n *       bounds=\"[[40.71,-74.22],[40.77,-74.12]]\" opacity=\"0.7\"\n *       clickable=\"true\">\n *     </shape>\n *   </map>\n *\n *  For full-working example, please visit\n *    [shape example](https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/shape.html)\n */\n/* global google */\n(function() {\n  'use strict';\n\n  var getShape = function(options, events) {\n    var shape;\n\n    var shapeName = options.name;\n    delete options.name;  //remove name bcoz it's not for options\n    void 0;\n\n    /**\n     * set options\n     */\n    switch(shapeName) {\n      case \"circle\":\n        if (!(options.center instanceof google.maps.LatLng)) {\n          options.center = new google.maps.LatLng(0,0);\n        } \n        shape = new google.maps.Circle(options);\n        break;\n      case \"polygon\":\n        shape = new google.maps.Polygon(options);\n        break;\n      case \"polyline\":\n        shape = new google.maps.Polyline(options);\n        break;\n      case \"rectangle\":\n        shape = new google.maps.Rectangle(options);\n        break;\n      case \"groundOverlay\":\n      case \"image\":\n        var url = options.url;\n        var opts = {opacity: options.opacity, clickable: options.clickable, id:options.id};\n        shape = new google.maps.GroundOverlay(url, options.bounds, opts);\n        break;\n    }\n\n    /**\n     * set events\n     */\n    for (var eventName in events) {\n      if (events[eventName]) {\n        google.maps.event.addListener(shape, eventName, events[eventName]);\n      }\n    }\n    return shape;\n  };\n\n  var shape = function(Attr2MapOptions, $parse, NgMap) {\n    var parser = Attr2MapOptions;\n\n    var linkFunc = function(scope, element, attrs, mapController) {\n      mapController = mapController[0]||mapController[1];\n\n      var orgAttrs = parser.orgAttributes(element);\n      var filtered = parser.filter(attrs);\n      var shapeOptions = parser.getOptions(filtered, {scope: scope});\n      var shapeEvents = parser.getEvents(scope, filtered);\n\n      var address, shapeType;\n      shapeType = shapeOptions.name;\n      if (!(shapeOptions.center instanceof google.maps.LatLng)) {\n        address = shapeOptions.center;\n      }\n      var shape = getShape(shapeOptions, shapeEvents);\n      mapController.addObject('shapes', shape);\n\n      if (address && shapeType == 'circle') {\n        NgMap.getGeoLocation(address).then(function(latlng) {\n          shape.setCenter(latlng);\n          shape.centered && shape.map.setCenter(latlng);\n          var geoCallback = attrs.geoCallback;\n          geoCallback && $parse(geoCallback)(scope);\n        });\n      }\n\n      //set observers\n      mapController.observeAttrSetObj(orgAttrs, attrs, shape);\n      element.bind('$destroy', function() {\n        mapController.deleteObject('shapes', shape);\n      });\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc\n     }; // return\n  };\n  shape.$inject = ['Attr2MapOptions', '$parse', 'NgMap'];\n\n  angular.module('ngMap').directive('shape', shape);\n\n})();\n\n/**\n * @ngdoc directive\n * @name streetview-panorama\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @attr container Optional, id or css selector, if given, streetview will be in the given html element\n * @attr {String} &lt;StreetViewPanoramaOption>\n *   [Any Google StreetViewPanorama options](https://developers.google.com/maps/documentation/javascript/reference?csw=1#StreetViewPanoramaOptions)\n * @attr {String} &lt;StreetViewPanoramaEvent>\n *   [Any Google StreetViewPanorama events](https://developers.google.com/maps/documentation/javascript/reference#StreetViewPanorama)\n *\n * @example\n *   <map zoom=\"11\" center=\"[40.688738,-74.043871]\" >\n *     <street-view-panorama\n *       click-to-go=\"true\"\n *       disable-default-ui=\"true\"\n *       disable-double-click-zoom=\"true\"\n *       enable-close-button=\"true\"\n *       pano=\"my-pano\"\n *       position=\"40.688738,-74.043871\"\n *       pov=\"{heading:0, pitch: 90}\"\n *       scrollwheel=\"false\"\n *       visible=\"true\">\n *     </street-view-panorama>\n *   </map>\n */\n/* global google, document */\n(function() {\n  'use strict';\n\n  var streetViewPanorama = function(Attr2MapOptions, NgMap) {\n    var parser = Attr2MapOptions;\n\n    var getStreetViewPanorama = function(map, options, events) {\n      var svp, container;\n      if (options.container) {\n        container = document.getElementById(options.container);\n        container = container || document.querySelector(options.container);\n      }\n      if (container) {\n        svp = new google.maps.StreetViewPanorama(container, options);\n      } else {\n        svp = map.getStreetView();\n        svp.setOptions(options);\n      }\n\n      for (var eventName in events) {\n        eventName &&\n          google.maps.event.addListener(svp, eventName, events[eventName]);\n      }\n      return svp;\n    };\n\n    var linkFunc = function(scope, element, attrs) {\n      var filtered = parser.filter(attrs);\n      var options = parser.getOptions(filtered, {scope: scope});\n      var controlOptions = parser.getControlOptions(filtered);\n      var svpOptions = angular.extend(options, controlOptions);\n\n      var svpEvents = parser.getEvents(scope, filtered);\n      void 0;\n\n      NgMap.getMap().then(function(map) {\n        var svp = getStreetViewPanorama(map, svpOptions, svpEvents);\n\n        map.setStreetView(svp);\n        (!svp.getPosition()) && svp.setPosition(map.getCenter());\n        google.maps.event.addListener(svp, 'position_changed', function() {\n          if (svp.getPosition() !== map.getCenter()) {\n            map.setCenter(svp.getPosition());\n          }\n        });\n        //needed for geo-callback\n        var listener =\n          google.maps.event.addListener(map, 'center_changed', function() {\n            svp.setPosition(map.getCenter());\n            google.maps.event.removeListener(listener);\n          });\n      });\n\n    }; //link\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n      link: linkFunc\n    };\n\n  };\n  streetViewPanorama.$inject = ['Attr2MapOptions', 'NgMap'];\n\n  angular.module('ngMap').directive('streetViewPanorama', streetViewPanorama);\n})();\n\n/**\n * @ngdoc directive\n * @name traffic-layer\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *\n *   <map zoom=\"13\" center=\"34.04924594193164, -118.24104309082031\">\n *     <traffic-layer></traffic-layer>\n *    </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('trafficLayer', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getLayer = function(options, events) {\n      var layer = new google.maps.TrafficLayer(options);\n      for (var eventName in events) {\n        google.maps.event.addListener(layer, eventName, events[eventName]);\n      }\n      return layer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var orgAttrs = parser.orgAttributes(element);\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered);\n        void 0;\n\n        var layer = getLayer(options, events);\n        mapController.addObject('trafficLayers', layer);\n        mapController.observeAttrSetObj(orgAttrs, attrs, layer);  //observers\n        element.bind('$destroy', function() {\n          mapController.deleteObject('trafficLayers', layer);\n        });\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc directive\n * @name transit-layer\n * @param Attr2MapOptions {service} convert html attribute to Google map api options\n * @description\n *   Requires:  map directive\n *   Restrict To:  Element\n *\n * @example\n * Example:\n *\n *  <map zoom=\"13\" center=\"34.04924594193164, -118.24104309082031\">\n *    <transit-layer></transit-layer>\n *  </map>\n */\n(function() {\n  'use strict';\n\n  angular.module('ngMap').directive('transitLayer', [\n    'Attr2MapOptions', function(Attr2MapOptions) {\n    var parser = Attr2MapOptions;\n\n    var getLayer = function(options, events) {\n      var layer = new google.maps.TransitLayer(options);\n      for (var eventName in events) {\n        google.maps.event.addListener(layer, eventName, events[eventName]);\n      }\n      return layer;\n    };\n\n    return {\n      restrict: 'E',\n      require: ['?^map','?^ngMap'],\n\n      link: function(scope, element, attrs, mapController) {\n        mapController = mapController[0]||mapController[1];\n\n        var orgAttrs = parser.orgAttributes(element);\n        var filtered = parser.filter(attrs);\n        var options = parser.getOptions(filtered, {scope: scope});\n        var events = parser.getEvents(scope, filtered);\n        void 0;\n\n        var layer = getLayer(options, events);\n        mapController.addObject('transitLayers', layer);\n        mapController.observeAttrSetObj(orgAttrs, attrs, layer);  //observers\n        element.bind('$destroy', function() {\n          mapController.deleteObject('transitLayers', layer);\n        });\n      }\n     }; // return\n  }]);\n})();\n\n/**\n * @ngdoc filter\n * @name camel-case\n * @description\n *   Converts string to camel cased\n */\n(function() {\n  'use strict';\n\n  var SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\n  var MOZ_HACK_REGEXP = /^moz([A-Z])/;\n\n  var camelCaseFilter = function() {\n    return function(name) {\n      return name.\n        replace(SPECIAL_CHARS_REGEXP,\n          function(_, separator, letter, offset) {\n            return offset ? letter.toUpperCase() : letter;\n        }).\n        replace(MOZ_HACK_REGEXP, 'Moz$1');\n    };\n  };\n\n  angular.module('ngMap').filter('camelCase', camelCaseFilter);\n})();\n\n/**\n * @ngdoc filter\n * @name escape-regex\n * @description\n *   Escapes all regex special characters in a string\n */\n(function() {\n  'use strict';\n\n\n\n  var escapeRegexpFilter = function() {\n    return function(string) {\n\t\t\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\t\t};\n  };\n\n  angular.module('ngMap').filter('escapeRegexp', escapeRegexpFilter);\n})();\n\n/**\n * @ngdoc filter\n * @name jsonize\n * @description\n *   Converts json-like string to json string\n */\n(function() {\n  'use strict';\n\n  var jsonizeFilter = function() {\n    return function(str) {\n      try {       // if parsable already, return as it is\n        JSON.parse(str);\n        return str;\n      } catch(e) { // if not parsable, change little\n        return str\n          // wrap keys without quote with valid double quote\n          .replace(/([\\$\\w]+)\\s*:/g,\n            function(_, $1) {\n              return '\"'+$1+'\":';\n            }\n          )\n          // replacing single quote wrapped ones to double quote\n          .replace(/'([^']+)'/g,\n            function(_, $1) {\n              return '\"'+$1+'\"';\n            }\n          )\n          .replace(/''/g, '\"\"');\n      }\n    };\n  };\n\n  angular.module('ngMap').filter('jsonize', jsonizeFilter);\n})();\n\n/**\n * @ngdoc service\n * @name Attr2MapOptions\n * @description\n *   Converts tag attributes to options used by google api v3 objects\n */\n/* global google */\n(function() {\n  'use strict';\n\n  //i.e. \"2015-08-12T06:12:40.858Z\"\n  var isoDateRE =\n    /^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*)?)([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/;\n\n  var Attr2MapOptions = function(\n      $parse, $timeout, $log, $interpolate, NavigatorGeolocation, GeoCoder,\n      camelCaseFilter, jsonizeFilter, escapeRegExp\n    ) {\n\n    var exprStartSymbol = $interpolate.startSymbol();\n    var exprEndSymbol = $interpolate.endSymbol();\n\n    /**\n     * Returns the attributes of an element as hash\n     * @memberof Attr2MapOptions\n     * @param {HTMLElement} el html element\n     * @returns {Hash} attributes\n     */\n    var orgAttributes = function(el) {\n      (el.length > 0) && (el = el[0]);\n      var orgAttributes = {};\n      for (var i=0; i<el.attributes.length; i++) {\n        var attr = el.attributes[i];\n        orgAttributes[attr.name] = attr.value;\n      }\n      return orgAttributes;\n    };\n\n    var getJSON = function(input) {\n      var re =/^[\\+\\-]?[0-9\\.]+,[ ]*\\ ?[\\+\\-]?[0-9\\.]+$/; //lat,lng\n      if (input.match(re)) {\n        input = \"[\"+input+\"]\";\n      }\n      return JSON.parse(jsonizeFilter(input));\n    };\n    \n    var getLatLng = function(input) {\n      var output = input;\n      if (input[0].constructor == Array) { \n        if ((input[0][0].constructor == Array && input[0][0].length == 2) || input[0][0].constructor == Object) {\n            var preoutput;\n            var outputArray = [];\n            for (var i = 0; i < input.length; i++) {\n                preoutput = input[i].map(function(el){\n                    return new google.maps.LatLng(el[0], el[1]);\n                });\n                outputArray.push(preoutput);\n            }\n            output = outputArray;\n        } else {\n            output = input.map(function(el) {\n                return new google.maps.LatLng(el[0], el[1]);\n            });\n        }\n      } else if (!isNaN(parseFloat(input[0])) && isFinite(input[0])) {\n        output = new google.maps.LatLng(output[0], output[1]);\n      }\n      return output;\n    };\n\n    var toOptionValue = function(input, options) {\n      var output;\n      try { // 1. Number?\n        output = getNumber(input);\n      } catch(err) {\n        try { // 2. JSON?\n          var output = getJSON(input);\n          if (output instanceof Array) {\n            if (output[0].constructor == Object) {\n              output = output;\n            } else if (output[0] instanceof Array) {\n              if (output[0][0].constructor == Object) {\n                output = output;\n              } else {\n                output = getLatLng(output);\n              }\n            } else {\n                output = getLatLng(output);\n            }\n          }\n          // JSON is an object (not array or null)\n          else if (output === Object(output)) {\n            // check for nested hashes and convert to Google API options\n            var newOptions = options;\n            newOptions.doNotConverStringToNumber = true;\n            output = getOptions(output, newOptions);\n          }\n        } catch(err2) {\n          // 3. Google Map Object function Expression. i.e. LatLng(80,-49)\n          if (input.match(/^[A-Z][a-zA-Z0-9]+\\(.*\\)$/)) {\n            try {\n              var exp = \"new google.maps.\"+input;\n              output = eval(exp); /* jshint ignore:line */\n            } catch(e) {\n              output = input;\n            }\n          // 4. Google Map Object constant Expression. i.e. MayTypeId.HYBRID\n          } else if (input.match(/^([A-Z][a-zA-Z0-9]+)\\.([A-Z]+)$/)) {\n            try {\n              var matches = input.match(/^([A-Z][a-zA-Z0-9]+)\\.([A-Z]+)$/);\n              output = google.maps[matches[1]][matches[2]];\n            } catch(e) {\n              output = input;\n            }\n          // 5. Google Map Object constant Expression. i.e. HYBRID\n          } else if (input.match(/^[A-Z]+$/)) {\n            try {\n              var capitalizedKey = options.key.charAt(0).toUpperCase() +\n                options.key.slice(1);\n              if (options.key.match(/temperatureUnit|windSpeedUnit|labelColor/)) {\n                capitalizedKey = capitalizedKey.replace(/s$/,\"\");\n                output = google.maps.weather[capitalizedKey][input];\n              } else {\n                output = google.maps[capitalizedKey][input];\n              }\n            } catch(e) {\n              output = input;\n            }\n          // 6. Date Object as ISO String\n          } else if (input.match(isoDateRE)) {\n            try {\n              output = new Date(input);\n            } catch(e) {\n              output = input;\n            }\n          // 7. evaluate dynamically bound values\n        } else if (input.match(new RegExp('^' + escapeRegExp(exprStartSymbol))) && options.scope) {\n            try {\n              var expr = input.replace(new RegExp(escapeRegExp(exprStartSymbol)),'').replace(new RegExp(escapeRegExp(exprEndSymbol), 'g'),'');\n              output = options.scope.$eval(expr);\n            } catch (err) {\n              output = input;\n            }\n          } else {\n            output = input;\n          }\n        } // catch(err2)\n      } // catch(err)\n\n      // convert output more for center and position\n      if (\n        (options.key == 'center' || options.key == 'position') &&\n        output instanceof Array\n      ) {\n        output = new google.maps.LatLng(output[0], output[1]);\n      }\n\n      // convert output more for shape bounds\n      if (options.key == 'bounds' && output instanceof Array) {\n        output = new google.maps.LatLngBounds(output[0], output[1]);\n      }\n\n      // convert output more for shape icons\n      if (options.key == 'icons' && output instanceof Array) {\n\n        for (var i=0; i<output.length; i++) {\n          var el = output[i];\n          if (el.icon.path.match(/^[A-Z_]+$/)) {\n            el.icon.path =  google.maps.SymbolPath[el.icon.path];\n          }\n        }\n      }\n\n      // convert output more for marker icon\n      if (options.key == 'icon' && output instanceof Object) {\n        if ((\"\"+output.path).match(/^[A-Z_]+$/)) {\n          output.path = google.maps.SymbolPath[output.path];\n        }\n        for (var key in output) { //jshint ignore:line\n          var arr = output[key];\n          if (key == \"anchor\" || key == \"origin\" || key == \"labelOrigin\") {\n            output[key] = new google.maps.Point(arr[0], arr[1]);\n          } else if (key == \"size\" || key == \"scaledSize\") {\n            output[key] = new google.maps.Size(arr[0], arr[1]);\n          }\n        }\n      }\n\n      return output;\n    };\n\n    var getAttrsToObserve = function(attrs) {\n      var attrsToObserve = [];\n      var exprRegExp = new RegExp(escapeRegExp(exprStartSymbol) + '.*' + escapeRegExp(exprEndSymbol), 'g');\n\n      if (!attrs.noWatcher) {\n        for (var attrName in attrs) { //jshint ignore:line\n          var attrValue = attrs[attrName];\n          if (attrValue && attrValue.match(exprRegExp)) { // if attr value is {{..}}\n            attrsToObserve.push(camelCaseFilter(attrName));\n          }\n        }\n      }\n\n      return attrsToObserve;\n    };\n\n    /**\n     * filters attributes by skipping angularjs methods $.. $$..\n     * @memberof Attr2MapOptions\n     * @param {Hash} attrs tag attributes\n     * @returns {Hash} filterd attributes\n     */\n    var filter = function(attrs) {\n      var options = {};\n      for(var key in attrs) {\n        if (key.match(/^\\$/) || key.match(/^ng[A-Z]/)) {\n          void(0);\n        } else {\n          options[key] = attrs[key];\n        }\n      }\n      return options;\n    };\n\n    /**\n     * converts attributes hash to Google Maps API v3 options\n     * ```\n     *  . converts numbers to number\n     *  . converts class-like string to google maps instance\n     *    i.e. `LatLng(1,1)` to `new google.maps.LatLng(1,1)`\n     *  . converts constant-like string to google maps constant\n     *    i.e. `MapTypeId.HYBRID` to `google.maps.MapTypeId.HYBRID`\n     *    i.e. `HYBRID\"` to `google.maps.MapTypeId.HYBRID`\n     * ```\n     * @memberof Attr2MapOptions\n     * @param {Hash} attrs tag attributes\n     * @param {Hash} options\n     * @returns {Hash} options converted attributess\n     */\n    var getOptions = function(attrs, params) {\n      params = params || {};\n      var options = {};\n      for(var key in attrs) {\n        if (attrs[key] || attrs[key] === 0) {\n          if (key.match(/^on[A-Z]/)) { //skip events, i.e. on-click\n            continue;\n          } else if (key.match(/ControlOptions$/)) { // skip controlOptions\n            continue;\n          } else {\n            // nested conversions need to be typechecked\n            // (non-strings are fully converted)\n            if (typeof attrs[key] !== 'string') {\n              options[key] = attrs[key];\n            } else {\n              if (params.doNotConverStringToNumber &&\n                attrs[key].match(/^[0-9]+$/)\n              ) {\n                options[key] = attrs[key];\n              } else {\n                options[key] = toOptionValue(attrs[key], {key: key, scope: params.scope});\n              }\n            }\n          }\n        } // if (attrs[key])\n      } // for(var key in attrs)\n      return options;\n    };\n\n    /**\n     * converts attributes hash to scope-specific event function\n     * @memberof Attr2MapOptions\n     * @param {scope} scope angularjs scope\n     * @param {Hash} attrs tag attributes\n     * @returns {Hash} events converted events\n     */\n    var getEvents = function(scope, attrs) {\n      var events = {};\n      var toLowercaseFunc = function($1){\n        return \"_\"+$1.toLowerCase();\n      };\n      var EventFunc = function(attrValue) {\n        // funcName(argsStr)\n        var matches = attrValue.match(/([^\\(]+)\\(([^\\)]*)\\)/);\n        var funcName = matches[1];\n        var argsStr = matches[2].replace(/event[ ,]*/,'');  //remove string 'event'\n        var argsExpr = $parse(\"[\"+argsStr+\"]\"); //for perf when triggering event\n        return function(event) {\n          var args = argsExpr(scope); //get args here to pass updated model values\n          function index(obj,i) {return obj[i];}\n          var f = funcName.split('.').reduce(index, scope);\n          f && f.apply(this, [event].concat(args));\n          $timeout( function() {\n            scope.$apply();\n          });\n        };\n      };\n\n      for(var key in attrs) {\n        if (attrs[key]) {\n          if (!key.match(/^on[A-Z]/)) { //skip if not events\n            continue;\n          }\n\n          //get event name as underscored. i.e. zoom_changed\n          var eventName = key.replace(/^on/,'');\n          eventName = eventName.charAt(0).toLowerCase() + eventName.slice(1);\n          eventName = eventName.replace(/([A-Z])/g, toLowercaseFunc);\n\n          var attrValue = attrs[key];\n          events[eventName] = new EventFunc(attrValue);\n        }\n      }\n      return events;\n    };\n\n    /**\n     * control means map controls, i.e streetview, pan, etc, not a general control\n     * @memberof Attr2MapOptions\n     * @param {Hash} filtered filtered tag attributes\n     * @returns {Hash} Google Map options\n     */\n    var getControlOptions = function(filtered) {\n      var controlOptions = {};\n      if (typeof filtered != 'object') {\n        return false;\n      }\n\n      for (var attr in filtered) {\n        if (filtered[attr]) {\n          if (!attr.match(/(.*)ControlOptions$/)) {\n            continue; // if not controlOptions, skip it\n          }\n\n          //change invalid json to valid one, i.e. {foo:1} to {\"foo\": 1}\n          var orgValue = filtered[attr];\n          var newValue = orgValue.replace(/'/g, '\"');\n          newValue = newValue.replace(/([^\"]+)|(\"[^\"]+\")/g, function($0, $1, $2) {\n            if ($1) {\n              return $1.replace(/([a-zA-Z0-9]+?):/g, '\"$1\":');\n            } else {\n              return $2;\n            }\n          });\n          try {\n            var options = JSON.parse(newValue);\n            for (var key in options) { //assign the right values\n              if (options[key]) {\n                var value = options[key];\n                if (typeof value === 'string') {\n                  value = value.toUpperCase();\n                } else if (key === \"mapTypeIds\") {\n                  value = value.map( function(str) {\n                    if (str.match(/^[A-Z]+$/)) { // if constant\n                      return google.maps.MapTypeId[str.toUpperCase()];\n                    } else { // else, custom map-type\n                      return str;\n                    }\n                  });\n                }\n\n                if (key === \"style\") {\n                  var str = attr.charAt(0).toUpperCase() + attr.slice(1);\n                  var objName = str.replace(/Options$/,'')+\"Style\";\n                  options[key] = google.maps[objName][value];\n                } else if (key === \"position\") {\n                  options[key] = google.maps.ControlPosition[value];\n                } else {\n                  options[key] = value;\n                }\n              }\n            }\n            controlOptions[attr] = options;\n          } catch (e) {\n            void 0;\n          }\n        }\n      } // for\n\n      return controlOptions;\n    };\n\n    return {\n      filter: filter,\n      getOptions: getOptions,\n      getEvents: getEvents,\n      getControlOptions: getControlOptions,\n      toOptionValue: toOptionValue,\n      getAttrsToObserve: getAttrsToObserve,\n      orgAttributes: orgAttributes\n    }; // return\n\n  };\n  Attr2MapOptions.$inject= [\n    '$parse', '$timeout', '$log', '$interpolate', 'NavigatorGeolocation', 'GeoCoder',\n    'camelCaseFilter', 'jsonizeFilter', 'escapeRegexpFilter'\n  ];\n\n  angular.module('ngMap').service('Attr2MapOptions', Attr2MapOptions);\n})();\n\n/**\n * @ngdoc service\n * @name GeoCoder\n * @description\n *   Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q)\n *   service for Google Geocoder service\n */\n(function() {\n  'use strict';\n  var $q;\n  /**\n   * @memberof GeoCoder\n   * @param {Hash} options\n   *   https://developers.google.com/maps/documentation/geocoding/#geocoding\n   * @example\n   * ```\n   *   GeoCoder.geocode({address: 'the cn tower'}).then(function(result) {\n   *     //... do something with result\n   *   });\n   * ```\n   * @returns {HttpPromise} Future object\n   */\n  var geocodeFunc = function(options) {\n    var deferred = $q.defer();\n    var geocoder = new google.maps.Geocoder();\n    geocoder.geocode(options, function (results, status) {\n      if (status == google.maps.GeocoderStatus.OK) {\n        deferred.resolve(results);\n      } else {\n        deferred.reject(status);\n      }\n    });\n    return deferred.promise;\n  };\n\n  var GeoCoder = function(_$q_) {\n    $q = _$q_;\n    return {\n      geocode : geocodeFunc\n    };\n  };\n  GeoCoder.$inject = ['$q'];\n\n  angular.module('ngMap').service('GeoCoder', GeoCoder);\n})();\n\n/**\n * @ngdoc service\n * @name GoogleMapsApi\n * @description\n *   Load Google Maps API Service\n */\n(function() {\n  'use strict';\n  var $q;\n  var $timeout;\n\n  var GoogleMapsApi = function(_$q_, _$timeout_) {\n    $q = _$q_;\n    $timeout = _$timeout_;\n\n    return {\n\n      /**\n       * Load google maps into document by creating a script tag\n       * @memberof GoogleMapsApi\n       * @param {string} mapsUrl\n       * @example\n       *   GoogleMapsApi.load(myUrl).then(function() {\n       *     console.log('google map has been loaded')\n       *   });\n       */\n      load: function (mapsUrl) {\n\n        var deferred = $q.defer();\n\n        if (window.google === undefined || window.google.maps === undefined) {\n\n          window.lazyLoadCallback = function() {\n            $timeout(function() { /* give some time to load */\n              deferred.resolve(window.google)\n            }, 100);\n          };\n\n          var scriptEl = document.createElement('script');\n          scriptEl.src = mapsUrl +\n            (mapsUrl.indexOf('?') > -1 ? '&' : '?') +\n            'callback=lazyLoadCallback';\n\n          if (!document.querySelector('script[src=\"' + scriptEl.src + '\"]')) {\n            document.body.appendChild(scriptEl);\n          }\n        } else {\n          deferred.resolve(window.google)\n        }\n\n        return deferred.promise;\n      }\n\n    }\n  }\n  GoogleMapsApi.$inject = ['$q', '$timeout'];\n\n  angular.module('ngMap').service('GoogleMapsApi', GoogleMapsApi);\n})();\n\n\n\n/**\n * @ngdoc service\n * @name NavigatorGeolocation\n * @description\n *  Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q)\n *  service for navigator.geolocation methods\n */\n/* global google */\n(function() {\n  'use strict';\n  var $q;\n\n  /**\n   * @memberof NavigatorGeolocation\n   * @param {Object} geoLocationOptions the navigator geolocations options.\n   *  i.e. { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }.\n   *  If none specified, { timeout: 5000 }. \n   *  If timeout not specified, timeout: 5000 added\n   * @param {function} success success callback function\n   * @param {function} failure failure callback function\n   * @example\n   * ```\n   *  NavigatorGeolocation.getCurrentPosition()\n   *    .then(function(position) {\n   *      var lat = position.coords.latitude, lng = position.coords.longitude;\n   *      .. do something lat and lng\n   *    });\n   * ```\n   * @returns {HttpPromise} Future object\n   */\n  var getCurrentPosition = function(geoLocationOptions) {\n    var deferred = $q.defer();\n    if (navigator.geolocation) {\n\n      if (geoLocationOptions === undefined) {\n        geoLocationOptions = { timeout: 5000 };\n      }\n      else if (geoLocationOptions.timeout === undefined) {\n        geoLocationOptions.timeout = 5000;\n      }\n\n      navigator.geolocation.getCurrentPosition(\n        function(position) {\n          deferred.resolve(position);\n        }, function(evt) {\n          void 0;\n          deferred.reject(evt);\n        },\n        geoLocationOptions\n      );\n    } else {\n      deferred.reject(\"Browser Geolocation service failed.\");\n    }\n    return deferred.promise;\n  };\n\n  var NavigatorGeolocation = function(_$q_) {\n    $q = _$q_;\n    return {\n      getCurrentPosition: getCurrentPosition\n    };\n  };\n  NavigatorGeolocation.$inject = ['$q'];\n\n  angular.module('ngMap').\n    service('NavigatorGeolocation', NavigatorGeolocation);\n})();\n\n/**\n * @ngdoc factory\n * @name NgMapPool\n * @description\n *   Provide map instance to avoid memory leak\n */\n(function() {\n  'use strict';\n  /**\n   * @memberof NgMapPool\n   * @desc map instance pool\n   */\n  var mapInstances = [];\n  var $window, $document, $timeout;\n\n  var add = function(el) {\n    var mapDiv = $document.createElement(\"div\");\n    mapDiv.style.width = \"100%\";\n    mapDiv.style.height = \"100%\";\n    el.appendChild(mapDiv);\n    var map = new $window.google.maps.Map(mapDiv, {});\n    mapInstances.push(map);\n    return map;\n  };\n\n  var findById = function(el, id) {\n    var notInUseMap;\n    for (var i=0; i<mapInstances.length; i++) {\n      var map = mapInstances[i];\n      if (map.id == id && !map.inUse) {\n        var mapDiv = map.getDiv();\n        el.appendChild(mapDiv);\n        notInUseMap = map;\n        break;\n      }\n    }\n    return notInUseMap;\n  };\n\n  var findUnused = function(el) { //jshint ignore:line\n    var notInUseMap;\n    for (var i=0; i<mapInstances.length; i++) {\n      var map = mapInstances[i];\n      if (map.id) {\n        continue;\n      }\n      if (!map.inUse) {\n        var mapDiv = map.getDiv();\n        el.appendChild(mapDiv);\n        notInUseMap = map;\n        break;\n      }\n    }\n    return notInUseMap;\n  };\n\n  /**\n   * @memberof NgMapPool\n   * @function getMapInstance\n   * @param {HtmlElement} el map container element\n   * @return map instance for the given element\n   */\n  var getMapInstance = function(el) {\n    var map = findById(el, el.id) || findUnused(el);\n    if (!map) {\n      map = add(el);\n    } else {\n      /* firing map idle event, which is used by map controller */\n      $timeout(function() {\n        google.maps.event.trigger(map, 'idle');\n      }, 100);\n    }\n    map.inUse = true;\n    return map;\n  };\n\n  /**\n   * @memberof NgMapPool\n   * @function returnMapInstance\n   * @param {Map} an instance of google.maps.Map\n   * @desc sets the flag inUse of the given map instance to false, so that it \n   * can be reused later\n   */\n  var returnMapInstance = function(map) {\n    map.inUse = false;\n  };\n  \n  /**\n   * @memberof NgMapPool\n   * @function resetMapInstances\n   * @desc resets mapInstance array\n   */\n  var resetMapInstances = function() {\n    for(var i = 0;i < mapInstances.length;i++) {\n        mapInstances[i] = null;\n    }\n    mapInstances = [];\n  };\n  \n  /**\n   * @memberof NgMapPool\n   * @function deleteMapInstance\n   * @desc delete a mapInstance\n   */\n  var deleteMapInstance= function(mapId) {\n\t  for( var i=0; i<mapInstances.length; i++ ) {\n\t\t  if( (mapInstances[i] !== null) && (mapInstances[i].id == mapId)) {\n\t\t\t  mapInstances[i]= null;\n\t\t\t  mapInstances.splice( i, 1 );\n\t\t  }\n\t  }\n  };\n\n  var NgMapPool = function(_$document_, _$window_, _$timeout_) {\n    $document = _$document_[0], $window = _$window_, $timeout = _$timeout_;\n\n    return {\n\t  mapInstances: mapInstances,\n      resetMapInstances: resetMapInstances,\n      getMapInstance: getMapInstance,\n      returnMapInstance: returnMapInstance,\n      deleteMapInstance: deleteMapInstance\n    };\n  };\n\n  NgMapPool.$inject = [ '$document', '$window', '$timeout'];\n\n  angular.module('ngMap').factory('NgMapPool', NgMapPool);\n\n})();\n\n/**\n * @ngdoc provider\n * @name NgMap\n * @description\n *  common utility service for ng-map\n */\n(function() {\n  'use strict';\n  var $window, $document, $q;\n  var NavigatorGeolocation, Attr2MapOptions, GeoCoder, camelCaseFilter, NgMapPool;\n\n  var mapControllers = {};\n\n  var getStyle = function(el, styleProp) {\n    var y;\n    if (el.currentStyle) {\n      y = el.currentStyle[styleProp];\n    } else if ($window.getComputedStyle) {\n      y = $document.defaultView.\n        getComputedStyle(el, null).\n        getPropertyValue(styleProp);\n    }\n    return y;\n  };\n\n  /**\n   * @memberof NgMap\n   * @function initMap\n   * @param id optional, id of the map. default 0\n   */\n  var initMap = function(id) {\n    var ctrl = mapControllers[id || 0];\n    if (!(ctrl.map instanceof google.maps.Map)) {\n      ctrl.initializeMap();\n      return ctrl.map;\n    } else {\n      void 0;\n    }\n  };\n\n  /**\n   * @memberof NgMap\n   * @function getMap\n   * @param {String} optional, id e.g., 'foo'\n   * @returns promise\n   */\n  var getMap = function(id, options) {\n    options = options || {};\n    id = typeof id === 'object' ? id.id : id;\n\n    var deferred = $q.defer();\n    var timeout = options.timeout || 10000;\n\n    function waitForMap(timeElapsed){\n      var keys = Object.keys(mapControllers);\n      var theFirstController = mapControllers[keys[0]];\n      if(id && mapControllers[id]){\n        deferred.resolve(mapControllers[id].map);\n      } else if (!id && theFirstController && theFirstController.map) {\n        deferred.resolve(theFirstController.map);\n      } else if (timeElapsed > timeout) {\n        deferred.reject('could not find map');\n      } else {\n        $window.setTimeout( function(){\n          waitForMap(timeElapsed+100);\n        }, 100);\n      }\n    }\n    waitForMap(0);\n\n    return deferred.promise;\n  };\n\n  /**\n   * @memberof NgMap\n   * @function addMap\n   * @param mapController {__MapContoller} a map controller\n   * @returns promise\n   */\n  var addMap = function(mapCtrl) {\n    if (mapCtrl.map) {\n      var len = Object.keys(mapControllers).length;\n      mapControllers[mapCtrl.map.id || len] = mapCtrl;\n    }\n  };\n\n  /**\n   * @memberof NgMap\n   * @function deleteMap\n   * @param mapController {__MapContoller} a map controller\n   */\n  var deleteMap = function(mapCtrl) {\n    var len = Object.keys(mapControllers).length - 1;\n    var mapId = mapCtrl.map.id || len;\n    if (mapCtrl.map) {\n      for (var eventName in mapCtrl.eventListeners) {\n        void 0;\n        var listener = mapCtrl.eventListeners[eventName];\n        google.maps.event.removeListener(listener);\n      }\n      if (mapCtrl.map.controls) {\n        mapCtrl.map.controls.forEach(function(ctrl) {\n          ctrl.clear();\n        });\n      }\n    }\n\n    //Remove Heatmap Layers\n    if (mapCtrl.map.heatmapLayers) {\n      Object.keys(mapCtrl.map.heatmapLayers).forEach(function (layer) {\n        mapCtrl.deleteObject('heatmapLayers', mapCtrl.map.heatmapLayers[layer]);\n      });\n    }\n\n    NgMapPool.deleteMapInstance(mapId);\n\n    delete mapControllers[mapId];\n  };\n\n  /**\n   * @memberof NgMap\n   * @function getGeoLocation\n   * @param {String} address\n   * @param {Hash} options geo options\n   * @returns promise\n   */\n  var getGeoLocation = function(string, options) {\n    var deferred = $q.defer();\n    if (!string || string.match(/^current/i)) { // current location\n      NavigatorGeolocation.getCurrentPosition(options).then(\n        function(position) {\n          var lat = position.coords.latitude;\n          var lng = position.coords.longitude;\n          var latLng = new google.maps.LatLng(lat,lng);\n          deferred.resolve(latLng);\n        },\n        function(error) {\n          deferred.reject(error);\n        }\n      );\n    } else {\n      GeoCoder.geocode({address: string}).then(\n        function(results) {\n          deferred.resolve(results[0].geometry.location);\n        },\n        function(error) {\n          deferred.reject(error);\n        }\n      );\n      // var geocoder = new google.maps.Geocoder();\n      // geocoder.geocode(options, function (results, status) {\n      //   if (status == google.maps.GeocoderStatus.OK) {\n      //     deferred.resolve(results);\n      //   } else {\n      //     deferred.reject(status);\n      //   }\n      // });\n    }\n\n    return deferred.promise;\n  };\n\n  /**\n   * @memberof NgMap\n   * @function observeAndSet\n   * @param {String} attrName attribute name\n   * @param {Object} object A Google maps object to be changed\n   * @returns attribue observe function\n   */\n  var observeAndSet = function(attrName, object) {\n    void 0;\n    return function(val) {\n      if (val) {\n        var setMethod = camelCaseFilter('set-'+attrName);\n        var optionValue = Attr2MapOptions.toOptionValue(val, {key: attrName});\n        if (object[setMethod]) { //if set method does exist\n          void 0;\n          /* if an location is being observed */\n          if (attrName.match(/center|position/) &&\n            typeof optionValue == 'string') {\n            getGeoLocation(optionValue).then(function(latlng) {\n              object[setMethod](latlng);\n            });\n          } else {\n            object[setMethod](optionValue);\n          }\n        }\n      }\n    };\n  };\n\n  /**\n   * @memberof NgMap\n   * @function setStyle\n   * @param {HtmlElement} map contriner element\n   * @desc set display, width, height of map container element\n   */\n  var setStyle = function(el) {\n    //if style is not given to the map element, set display and height\n    var defaultStyle = el.getAttribute('default-style');\n    if (defaultStyle == \"true\") {\n      el.style.display = 'block';\n      el.style.height = '300px';\n    } else {\n      if (getStyle(el, 'display') != \"block\") {\n        el.style.display = 'block';\n      }\n      if (getStyle(el, 'height').match(/^(0|auto)/)) {\n        el.style.height = '300px';\n      }\n    }\n  };\n\n  angular.module('ngMap').provider('NgMap', function() {\n    var defaultOptions = {};\n\n    /**\n     * @memberof NgMap\n     * @function setDefaultOptions\n     * @param {Hash} options\n     * @example\n     *  app.config(function(NgMapProvider) {\n     *    NgMapProvider.setDefaultOptions({\n     *      marker: {\n     *        optimized: false\n     *      }\n     *    });\n     *  });\n     */\n    this.setDefaultOptions = function(options) {\n      defaultOptions = options;\n    };\n\n    var NgMap = function(\n        _$window_, _$document_, _$q_,\n        _NavigatorGeolocation_, _Attr2MapOptions_,\n        _GeoCoder_, _camelCaseFilter_, _NgMapPool_\n      ) {\n      $window = _$window_;\n      $document = _$document_[0];\n      $q = _$q_;\n      NavigatorGeolocation = _NavigatorGeolocation_;\n      Attr2MapOptions = _Attr2MapOptions_;\n      GeoCoder = _GeoCoder_;\n      camelCaseFilter = _camelCaseFilter_;\n      NgMapPool = _NgMapPool_;\n\n      return {\n        defaultOptions: defaultOptions,\n        addMap: addMap,\n        deleteMap: deleteMap,\n        getMap: getMap,\n        initMap: initMap,\n        setStyle: setStyle,\n        getGeoLocation: getGeoLocation,\n        observeAndSet: observeAndSet\n      };\n    };\n    NgMap.$inject = [\n      '$window', '$document', '$q',\n      'NavigatorGeolocation', 'Attr2MapOptions',\n      'GeoCoder', 'camelCaseFilter', 'NgMapPool'\n    ];\n\n    this.$get = NgMap;\n  });\n})();\n\n/**\n * @ngdoc service\n * @name StreetView\n * @description\n *  Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q)\n *  service for [Google StreetViewService]\n *  (https://developers.google.com/maps/documentation/javascript/streetview)\n */\n(function() {\n  'use strict';\n  var $q;\n\n  /**\n   * Retrieves panorama id from the given map (and or position)\n   * @memberof StreetView\n   * @param {map} map Google map instance\n   * @param {LatLng} latlng Google LatLng instance\n   *   default: the center of the map\n   * @example\n   *   StreetView.getPanorama(map).then(function(panoId) {\n   *     $scope.panoId = panoId;\n   *   });\n   * @returns {HttpPromise} Future object\n   */\n  var getPanorama = function(map, latlng) {\n    latlng = latlng || map.getCenter();\n    var deferred = $q.defer();\n    var svs = new google.maps.StreetViewService();\n    svs.getPanoramaByLocation( (latlng||map.getCenter), 100,\n      function (data, status) {\n        // if streetView available\n        if (status === google.maps.StreetViewStatus.OK) {\n          deferred.resolve(data.location.pano);\n        } else {\n          // no street view available in this range, or some error occurred\n          deferred.resolve(false);\n          //deferred.reject('Geocoder failed due to: '+ status);\n        }\n      }\n    );\n    return deferred.promise;\n  };\n\n  /**\n   * Set panorama view on the given map with the panorama id\n   * @memberof StreetView\n   * @param {map} map Google map instance\n   * @param {String} panoId Panorama id fro getPanorama method\n   * @example\n   *   StreetView.setPanorama(map, panoId);\n   */\n  var setPanorama = function(map, panoId) {\n    var svp = new google.maps.StreetViewPanorama(\n      map.getDiv(), {enableCloseButton: true}\n    );\n    svp.setPano(panoId);\n  };\n\n  var StreetView = function(_$q_) {\n    $q = _$q_;\n\n    return {\n      getPanorama: getPanorama,\n      setPanorama: setPanorama\n    };\n  };\n  StreetView.$inject = ['$q'];\n\n  angular.module('ngMap').service('StreetView', StreetView);\n})();\n\r\nreturn 'ngMap';\r\n}));","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.validateNextState = exports.getUnexpectedInvocationParameterMessage = exports.getStateName = undefined;\n\nvar _getStateName2 = require('./getStateName');\n\nvar _getStateName3 = _interopRequireDefault(_getStateName2);\n\nvar _getUnexpectedInvocationParameterMessage2 = require('./getUnexpectedInvocationParameterMessage');\n\nvar _getUnexpectedInvocationParameterMessage3 = _interopRequireDefault(_getUnexpectedInvocationParameterMessage2);\n\nvar _validateNextState2 = require('./validateNextState');\n\nvar _validateNextState3 = _interopRequireDefault(_validateNextState2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.getStateName = _getStateName3.default;\nexports.getUnexpectedInvocationParameterMessage = _getUnexpectedInvocationParameterMessage3.default;\nexports.validateNextState = _validateNextState3.default;\n//# sourceMappingURL=index.js.map","/* globals RTCSessionDescription */\n'use strict';\n// This class wraps Chrome's RTCSessionDescription implementation. It provides\n// one piece of functionality not currently present in Chrome, namely\n//\n//   1. Rollback support\n//      https://bugs.chromium.org/p/webrtc/issues/detail?id=4676\n//\nvar ChromeRTCSessionDescription = /** @class */ (function () {\n    function ChromeRTCSessionDescription(descriptionInitDict) {\n        this.descriptionInitDict = descriptionInitDict;\n        // If this constructor is called with an object with a .type property set to\n        // \"rollback\", we should not call Chrome's RTCSessionDescription constructor,\n        // because this would throw an RTCSdpType error.\n        var description = descriptionInitDict && descriptionInitDict.type === 'rollback'\n            ? null\n            : new RTCSessionDescription(descriptionInitDict);\n        Object.defineProperties(this, {\n            _description: {\n                get: function () {\n                    return description;\n                }\n            }\n        });\n    }\n    Object.defineProperty(ChromeRTCSessionDescription.prototype, \"sdp\", {\n        get: function () {\n            return this._description ? this._description.sdp : this.descriptionInitDict.sdp;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCSessionDescription.prototype, \"type\", {\n        get: function () {\n            return this._description ? this._description.type : this.descriptionInitDict.type;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return ChromeRTCSessionDescription;\n}());\nmodule.exports = ChromeRTCSessionDescription;\n//# sourceMappingURL=chrome.js.map","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort:\n            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays:\n            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n                '_'\n            ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport DropdownToggle from './DropdownToggle';\nimport DropdownMenu, { alignPropType } from './DropdownMenu';\nvar propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: PropTypes.any,\n\n  /** An `href` passed to the Toggle component */\n  href: PropTypes.string,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: PropTypes.func,\n\n  /** The content of the non-toggle Button.  */\n  title: PropTypes.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: PropTypes.bool,\n\n  /**\n   * Aligns the dropdown menu responsively.\n   *\n   * _see [DropdownMenu](#dropdown-menu-props) for more details_\n   *\n   * @type {\"left\"|\"right\"|{ sm: \"left\"|\"right\" }|{ md: \"left\"|\"right\" }|{ lg: \"left\"|\"right\" }|{ xl: \"left\"|\"right\"} }\n   */\n  menuAlign: alignPropType,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: PropTypes.string,\n\n  /** Whether to render the dropdown menu in the DOM before the first time it is shown */\n  renderMenuOnMount: PropTypes.bool,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#dropdown-menu-props) for more details_\n   */\n  rootCloseEvent: PropTypes.string,\n\n  /** @ignore */\n  bsPrefix: PropTypes.string,\n\n  /** @ignore */\n  variant: PropTypes.string,\n\n  /** @ignore */\n  size: PropTypes.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`. This component accepts all of\n * [`Dropdown`'s props](#dropdown-props).\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu-related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      rootCloseEvent = _ref.rootCloseEvent,\n      variant = _ref.variant,\n      size = _ref.size,\n      menuAlign = _ref.menuAlign,\n      menuRole = _ref.menuRole,\n      renderMenuOnMount = _ref.renderMenuOnMount,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      id = _ref.id,\n      props = _objectWithoutPropertiesLoose(_ref, [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuAlign\", \"menuRole\", \"renderMenuOnMount\", \"disabled\", \"href\", \"id\"]);\n\n  return /*#__PURE__*/React.createElement(Dropdown, _extends({\n    ref: ref\n  }, props), /*#__PURE__*/React.createElement(DropdownToggle, {\n    id: id,\n    href: href,\n    size: size,\n    variant: variant,\n    disabled: disabled,\n    childBsPrefix: bsPrefix\n  }, title), /*#__PURE__*/React.createElement(DropdownMenu, {\n    align: menuAlign,\n    role: menuRole,\n    renderOnMount: renderMenuOnMount,\n    rootCloseEvent: rootCloseEvent\n  }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = propTypes;\nexport default DropdownButton;","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = require('../../util/constants').DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS;\n/**\n * VideoProcessorEventObserver listens to {@link VideoProcessor} related events\n * and re-emits them as a generic event with some additional information.\n * @extends EventEmitter\n * @emits VideoProcessorEventObserver#event\n */\nvar VideoProcessorEventObserver = /** @class */ (function (_super) {\n    __extends(VideoProcessorEventObserver, _super);\n    /**\n     * Constructor.\n     * @param {Log} log\n     */\n    function VideoProcessorEventObserver(log) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _lastStatsSaveTime: {\n                value: null,\n                writable: true\n            },\n            _lastStatsPublishTime: {\n                value: null,\n                writable: true\n            },\n            _log: {\n                value: log\n            },\n            _processorInfo: {\n                value: null,\n                writable: true\n            },\n            _stats: {\n                value: null,\n                writable: true\n            }\n        });\n        _this.on('add', function (info) {\n            _this._lastStatsSaveTime = Date.now();\n            _this._lastStatsPublishTime = Date.now();\n            _this._processorInfo = info;\n            _this._stats = [];\n            _this._reemitEvent('add', _this._getEventData());\n        });\n        _this.on('remove', function () {\n            var data = _this._getEventData();\n            _this._lastStatsSaveTime = null;\n            _this._lastStatsPublishTime = null;\n            _this._processorInfo = null;\n            _this._stats = null;\n            _this._reemitEvent('remove', data);\n        });\n        _this.on('start', function () {\n            _this._reemitEvent('start', _this._getEventData());\n        });\n        _this.on('stop', function (message) {\n            _this._reemitEvent('stop', Object.assign({ message: message }, _this._getEventData()));\n        });\n        _this.on('stats', function () { return _this._maybeEmitStats(); });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._getEventData = function () {\n        if (!this._processorInfo) {\n            return {};\n        }\n        var _a = this._processorInfo, processor = _a.processor, captureHeight = _a.captureHeight, captureWidth = _a.captureWidth, inputFrameRate = _a.inputFrameRate, isRemoteVideoTrack = _a.isRemoteVideoTrack, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n        var data = { captureHeight: captureHeight, captureWidth: captureWidth, inputFrameRate: inputFrameRate, isRemoteVideoTrack: isRemoteVideoTrack, inputFrameBufferType: inputFrameBufferType, outputFrameBufferContextType: outputFrameBufferContextType };\n        data.name = processor._name || 'VideoProcessor';\n        ['assetsPath', 'blurFilterRadius', 'debounce', 'fitType', 'isSimdEnabled', 'maskBlurRadius', 'pipeline', 'version'].forEach(function (prop) {\n            var val = processor[\"_\" + prop];\n            if (typeof val !== 'undefined') {\n                data[prop] = val;\n            }\n        });\n        Object.keys(data).forEach(function (prop) {\n            var val = data[prop];\n            if (typeof val === 'boolean') {\n                data[prop] = val ? 'true' : 'false';\n            }\n        });\n        return data;\n    };\n    /**\n     * Save stats every second. If a specific time interval has elapsed,\n     * the stats event will be emitted\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._maybeEmitStats = function () {\n        if (!this._stats || !this._processorInfo) {\n            return;\n        }\n        var benchmark = this._processorInfo.processor._benchmark;\n        if (!benchmark) {\n            return;\n        }\n        var now = Date.now();\n        if (now - this._lastStatsSaveTime < 1000) {\n            return;\n        }\n        var entry = { outputFrameRate: benchmark.getRate('totalProcessingDelay') };\n        ['captureFrameDelay', 'imageCompositionDelay', 'inputImageResizeDelay', 'processFrameDelay', 'segmentationDelay'].forEach(function (name) {\n            entry[name] = benchmark.getAverageDelay(name);\n        });\n        this._lastStatsSaveTime = now;\n        this._stats.push(entry);\n        if (now - this._lastStatsPublishTime < DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS) {\n            return;\n        }\n        this._lastStatsPublishTime = now;\n        var stats = this._stats.splice(0);\n        var averages = stats.reduce(function (averages, current, n) {\n            Object.keys(entry).forEach(function (name) {\n                if (!averages[name]) {\n                    averages[name] = 0;\n                }\n                averages[name] = ((averages[name] * n) + current[name]) / (n + 1);\n            });\n            return averages;\n        }, {});\n        Object.keys(averages).forEach(function (name) {\n            averages[name] = parseFloat(averages[name].toFixed(2));\n        });\n        this._reemitEvent('stats', Object.assign({}, averages, this._getEventData()));\n    };\n    /**\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._reemitEvent = function (name, data) {\n        this._log.debug(\"VideoProcessor:\" + name, data);\n        this.emit('event', { name: name, data: data });\n    };\n    return VideoProcessorEventObserver;\n}(EventEmitter));\nmodule.exports = VideoProcessorEventObserver;\n//# sourceMappingURL=videoprocessoreventobserver.js.map","var hasExcape = /~/\nvar escapeMatcher = /~[01]/g\nfunction escapeReplacer (m) {\n  switch (m) {\n    case '~1': return '/'\n    case '~0': return '~'\n  }\n  throw new Error('Invalid tilde escape: ' + m)\n}\n\nfunction untilde (str) {\n  if (!hasExcape.test(str)) return str\n  return str.replace(escapeMatcher, escapeReplacer)\n}\n\nfunction setter (obj, pointer, value) {\n  var part\n  var hasNextPart\n\n  for (var p = 1, len = pointer.length; p < len;) {\n    if (pointer[p] === 'constructor' || pointer[p] === 'prototype' || pointer[p] === '__proto__') return obj\n\n    part = untilde(pointer[p++])\n    hasNextPart = len > p\n\n    if (typeof obj[part] === 'undefined') {\n      // support setting of /-\n      if (Array.isArray(obj) && part === '-') {\n        part = obj.length\n      }\n\n      // support nested objects/array when setting values\n      if (hasNextPart) {\n        if ((pointer[p] !== '' && pointer[p] < Infinity) || pointer[p] === '-') obj[part] = []\n        else obj[part] = {}\n      }\n    }\n\n    if (!hasNextPart) break\n    obj = obj[part]\n  }\n\n  var oldValue = obj[part]\n  if (value === undefined) delete obj[part]\n  else obj[part] = value\n  return oldValue\n}\n\nfunction compilePointer (pointer) {\n  if (typeof pointer === 'string') {\n    pointer = pointer.split('/')\n    if (pointer[0] === '') return pointer\n    throw new Error('Invalid JSON pointer.')\n  } else if (Array.isArray(pointer)) {\n    for (const part of pointer) {\n      if (typeof part !== 'string' && typeof part !== 'number') {\n        throw new Error('Invalid JSON pointer. Must be of type string or number.')\n      }\n    }\n    return pointer\n  }\n\n  throw new Error('Invalid JSON pointer.')\n}\n\nfunction get (obj, pointer) {\n  if (typeof obj !== 'object') throw new Error('Invalid input object.')\n  pointer = compilePointer(pointer)\n  var len = pointer.length\n  if (len === 1) return obj\n\n  for (var p = 1; p < len;) {\n    obj = obj[untilde(pointer[p++])]\n    if (len === p) return obj\n    if (typeof obj !== 'object' || obj === null) return undefined\n  }\n}\n\nfunction set (obj, pointer, value) {\n  if (typeof obj !== 'object') throw new Error('Invalid input object.')\n  pointer = compilePointer(pointer)\n  if (pointer.length === 0) throw new Error('Invalid JSON pointer for set.')\n  return setter(obj, pointer, value)\n}\n\nfunction compile (pointer) {\n  var compiled = compilePointer(pointer)\n  return {\n    get: function (object) {\n      return get(object, compiled)\n    },\n    set: function (object, value) {\n      return set(object, compiled, value)\n    }\n  }\n}\n\nexports.get = get\nexports.set = set\nexports.compile = compile\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=hoc;var _withTrackingComponentDecorator=_interopRequireDefault(require(\"./withTrackingComponentDecorator\"));var _trackEventMethodDecorator=_interopRequireDefault(require(\"./trackEventMethodDecorator\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}function hoc(trackingInfo,options){return function decorator(){if(arguments.length===1){return(0,_withTrackingComponentDecorator[\"default\"])(trackingInfo,options).apply(void 0,arguments)}return(0,_trackEventMethodDecorator[\"default\"])(trackingInfo).apply(void 0,arguments)}}\n//# sourceMappingURL=trackingHoC.js.map","/*\n Leaflet.draw 1.0.4, a plugin that adds drawing and editing tools to Leaflet powered maps.\n (c) 2012-2017, Jacob Toye, Jon West, Smartrak, Leaflet\n\n https://github.com/Leaflet/Leaflet.draw\n http://leafletjs.com\n */\n!function(t,e,i){function o(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}L.drawVersion=\"1.0.4\",L.Draw={},L.drawLocal={draw:{toolbar:{actions:{title:\"Cancel drawing\",text:\"Cancel\"},finish:{title:\"Finish drawing\",text:\"Finish\"},undo:{title:\"Delete last point drawn\",text:\"Delete last point\"},buttons:{polyline:\"Draw a polyline\",polygon:\"Draw a polygon\",rectangle:\"Draw a rectangle\",circle:\"Draw a circle\",marker:\"Draw a marker\",circlemarker:\"Draw a circlemarker\"}},handlers:{circle:{tooltip:{start:\"Click and drag to draw circle.\"},radius:\"Radius\"},circlemarker:{tooltip:{start:\"Click map to place circle marker.\"}},marker:{tooltip:{start:\"Click map to place marker.\"}},polygon:{tooltip:{start:\"Click to start drawing shape.\",cont:\"Click to continue drawing shape.\",end:\"Click first point to close this shape.\"}},polyline:{error:\"<strong>Error:</strong> shape edges cannot cross!\",tooltip:{start:\"Click to start drawing line.\",cont:\"Click to continue drawing line.\",end:\"Click last point to finish line.\"}},rectangle:{tooltip:{start:\"Click and drag to draw rectangle.\"}},simpleshape:{tooltip:{end:\"Release mouse to finish drawing.\"}}}},edit:{toolbar:{actions:{save:{title:\"Save changes\",text:\"Save\"},cancel:{title:\"Cancel editing, discards all changes\",text:\"Cancel\"},clearAll:{title:\"Clear all layers\",text:\"Clear All\"}},buttons:{edit:\"Edit layers\",editDisabled:\"No layers to edit\",remove:\"Delete layers\",removeDisabled:\"No layers to delete\"}},handlers:{edit:{tooltip:{text:\"Drag handles or markers to edit features.\",subtext:\"Click cancel to undo changes.\"}},remove:{tooltip:{text:\"Click on a feature to remove.\"}}}}},L.Draw.Event={},L.Draw.Event.CREATED=\"draw:created\",L.Draw.Event.EDITED=\"draw:edited\",L.Draw.Event.DELETED=\"draw:deleted\",L.Draw.Event.DRAWSTART=\"draw:drawstart\",L.Draw.Event.DRAWSTOP=\"draw:drawstop\",L.Draw.Event.DRAWVERTEX=\"draw:drawvertex\",L.Draw.Event.EDITSTART=\"draw:editstart\",L.Draw.Event.EDITMOVE=\"draw:editmove\",L.Draw.Event.EDITRESIZE=\"draw:editresize\",L.Draw.Event.EDITVERTEX=\"draw:editvertex\",L.Draw.Event.EDITSTOP=\"draw:editstop\",L.Draw.Event.DELETESTART=\"draw:deletestart\",L.Draw.Event.DELETESTOP=\"draw:deletestop\",L.Draw.Event.TOOLBAROPENED=\"draw:toolbaropened\",L.Draw.Event.TOOLBARCLOSED=\"draw:toolbarclosed\",L.Draw.Event.MARKERCONTEXT=\"draw:markercontext\",L.Draw=L.Draw||{},L.Draw.Feature=L.Handler.extend({initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e);var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.Draw.Feature.include(L.Evented.prototype):L.Draw.Feature.include(L.Mixin.Events)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.DRAWSTART,{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DRAWSTOP,{layerType:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Draw.Tooltip(this._map),L.DomEvent.on(this._container,\"keyup\",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,\"keyup\",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire(L.Draw.Event.CREATED,{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&(this._map.fire(\"draw:canceled\",{layerType:this.type}),this.disable())}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:\"polyline\"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:\"#b00b00\",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon\"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon\"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,feet:!0,nautic:!1,showLength:!0,zIndexOffset:2e3,factor:1,maxPoints:0},initialize:function(t,e){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:\"leaflet-mouse-marker\",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on(\"mouseout\",this._onMouseOut,this).on(\"mousemove\",this._onMouseMove,this).on(\"mousedown\",this._onMouseDown,this).on(\"mouseup\",this._onMouseUp,this).addTo(this._map),this._map.on(\"mouseup\",this._onMouseUp,this).on(\"mousemove\",this._onMouseMove,this).on(\"zoomlevelschange\",this._onZoomEnd,this).on(\"touchstart\",this._onTouch,this).on(\"zoomend\",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off(\"mousedown\",this._onMouseDown,this).off(\"mouseout\",this._onMouseOut,this).off(\"mouseup\",this._onMouseUp,this).off(\"mousemove\",this._onMouseMove,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off(\"mouseup\",this._onMouseUp,this).off(\"mousemove\",this._onMouseMove,this).off(\"zoomlevelschange\",this._onZoomEnd,this).off(\"zoomend\",this._onZoomEnd,this).off(\"touchstart\",this._onTouch,this).off(\"click\",this._onTouch,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=e.getLatLngs(),o=i.splice(-1,1)[0];this._poly.setLatLngs(i),this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(o,!1)}},addVertex:function(t){if(this._markers.length>=2&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t))return void this._showErrorTooltip();this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0)},completeShape:function(){this._markers.length<=1||!this._shapeIsValid()||(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable())},_finishShape:function(){var t=this._poly._defaultShape?this._poly._defaultShape():this._poly.getLatLngs(),e=this._poly.newLatLngIntersects(t[t.length-1]);if(!this.options.allowIntersection&&e||!this._shapeIsValid())return void this._showErrorTooltip();this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_shapeIsValid:function(){return!0},_onZoomEnd:function(){null!==this._markers&&this._updateGuide()},_onMouseMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent),i=this._map.layerPointToLatLng(e);this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._map.fire(L.Draw.Event.DRAWVERTEX,{layers:this._markerGroup}),this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){if(!this._clickHandled&&!this._touchHandled&&!this._disableMarkers){this._onMouseMove(t),this._clickHandled=!0,this._disableNewMarkers();var e=t.originalEvent,i=e.clientX,o=e.clientY;this._startPoint.call(this,i,o)}},_startPoint:function(t,e){this._mouseDownOrigin=L.point(t,e)},_onMouseUp:function(t){var e=t.originalEvent,i=e.clientX,o=e.clientY;this._endPoint.call(this,i,o,t),this._clickHandled=null},_endPoint:function(e,i,o){if(this._mouseDownOrigin){var a=L.point(e,i).distanceTo(this._mouseDownOrigin),n=this._calculateFinishDistance(o.latlng);this.options.maxPoints>1&&this.options.maxPoints==this._markers.length+1?(this.addVertex(o.latlng),this._finishShape()):n<10&&L.Browser.touch?this._finishShape():Math.abs(a)<9*(t.devicePixelRatio||1)&&this.addVertex(o.latlng),this._enableNewMarkers()}this._mouseDownOrigin=null},_onTouch:function(t){var e,i,o=t.originalEvent;!o.touches||!o.touches[0]||this._clickHandled||this._touchHandled||this._disableMarkers||(e=o.touches[0].clientX,i=o.touches[0].clientY,this._disableNewMarkers(),this._touchHandled=!0,this._startPoint.call(this,e,i),this._endPoint.call(this,e,i,t),this._touchHandled=null),this._clickHandled=null},_onMouseOut:function(){this._tooltip&&this._tooltip._onMouseOut.call(this._tooltip)},_calculateFinishDistance:function(t){var e;if(this._markers.length>0){var i;if(this.type===L.Draw.Polyline.TYPE)i=this._markers[this._markers.length-1];else{if(this.type!==L.Draw.Polygon.TYPE)return 1/0;i=this._markers[0]}var o=this._map.latLngToContainerPoint(i.getLatLng()),a=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset}),n=this._map.latLngToContainerPoint(a.getLatLng());e=o.distanceTo(n)}else e=1/0;return e},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on(\"click\",this._finishShape,this),t>2&&this._markers[t-2].off(\"click\",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers?this._markers.length:0;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,a,n=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),s=this.options.guidelineDistance,r=this.options.maxGuideLineLength,l=n>r?n-r:s;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create(\"div\",\"leaflet-draw-guides\",this._overlayPane));l<n;l+=this.options.guidelineDistance)i=l/n,o={x:Math.floor(t.x*(1-i)+i*e.x),y:Math.floor(t.y*(1-i)+i*e.y)},a=L.DomUtil.create(\"div\",\"leaflet-draw-guide-dash\",this._guidesContainer),a.style.backgroundColor=this._errorShown?this.options.drawError.color:this.options.shapeOptions.color,L.DomUtil.setPosition(a,o)},_updateGuideColor:function(t){if(this._guidesContainer)for(var e=0,i=this._guidesContainer.childNodes.length;e<i;e++)this._guidesContainer.childNodes[e].style.backgroundColor=t},_clearGuides:function(){if(this._guidesContainer)for(;this._guidesContainer.firstChild;)this._guidesContainer.removeChild(this._guidesContainer.firstChild)},_getTooltipText:function(){var t,e,i=this.options.showLength;return 0===this._markers.length?t={text:L.drawLocal.draw.handlers.polyline.tooltip.start}:(e=i?this._getMeasurementString():\"\",t=1===this._markers.length?{text:L.drawLocal.draw.handlers.polyline.tooltip.cont,subtext:e}:{text:L.drawLocal.draw.handlers.polyline.tooltip.end,subtext:e}),t},_updateRunningMeasure:function(t,e){var i,o,a=this._markers.length;1===this._markers.length?this._measurementRunningTotal=0:(i=a-(e?2:1),o=L.GeometryUtil.isVersion07x()?t.distanceTo(this._markers[i].getLatLng())*(this.options.factor||1):this._map.distance(t,this._markers[i].getLatLng())*(this.options.factor||1),this._measurementRunningTotal+=o*(e?1:-1))},_getMeasurementString:function(){var t,e=this._currentLatLng,i=this._markers[this._markers.length-1].getLatLng();return t=L.GeometryUtil.isVersion07x()?i&&e&&e.distanceTo?this._measurementRunningTotal+e.distanceTo(i)*(this.options.factor||1):this._measurementRunningTotal||0:i&&e?this._measurementRunningTotal+this._map.distance(e,i)*(this.options.factor||1):this._measurementRunningTotal||0,L.GeometryUtil.readableDistance(t,this.options.metric,this.options.feet,this.options.nautic,this.options.precision)},_showErrorTooltip:function(){this._errorShown=!0,this._tooltip.showAsError().updateContent({text:this.options.drawError.message}),this._updateGuideColor(this.options.drawError.color),this._poly.setStyle({color:this.options.drawError.color}),this._clearHideErrorTimeout(),this._hideErrorTimeout=setTimeout(L.Util.bind(this._hideErrorTooltip,this),this.options.drawError.timeout)},_hideErrorTooltip:function(){this._errorShown=!1,this._clearHideErrorTimeout(),this._tooltip.removeError().updateContent(this._getTooltipText()),this._updateGuideColor(this.options.shapeOptions.color),this._poly.setStyle({color:this.options.shapeOptions.color})},_clearHideErrorTimeout:function(){this._hideErrorTimeout&&(clearTimeout(this._hideErrorTimeout),this._hideErrorTimeout=null)},_disableNewMarkers:function(){this._disableMarkers=!0},_enableNewMarkers:function(){setTimeout(function(){this._disableMarkers=!1}.bind(this),50)},_cleanUpShape:function(){this._markers.length>1&&this._markers[this._markers.length-1].off(\"click\",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:\"polygon\"},Poly:L.Polygon,options:{showArea:!1,showLength:!1,shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},metric:!0,feet:!0,nautic:!1,precision:{}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on(\"click\",this._finishShape,this),t>2&&(this._markers[t-1].on(\"dblclick\",this._finishShape,this),t>3&&this._markers[t-2].off(\"dblclick\",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?(t=L.drawLocal.draw.handlers.polygon.tooltip.cont,e=this._getMeasurementString()):(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area,e=\"\";return t||this.options.showLength?(this.options.showLength&&(e=L.Draw.Polyline.prototype._getMeasurementString.call(this)),t&&(e+=\"<br>\"+L.GeometryUtil.readableArea(t,this.options.metric,this.options.precision)),e):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexChanged:function(t,e){var i;!this.options.allowIntersection&&this.options.showArea&&(i=this._poly.getLatLngs(),this._area=L.GeometryUtil.geodesicArea(i)),L.Draw.Polyline.prototype._vertexChanged.call(this,t,e)},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off(\"click\",this._finishShape,this),t>2&&this._markers[t-1].off(\"dblclick\",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor=\"crosshair\",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on(\"mousedown\",this._onMouseDown,this).on(\"mousemove\",this._onMouseMove,this).on(\"touchstart\",this._onMouseDown,this).on(\"touchmove\",this._onMouseMove,this),e.addEventListener(\"touchstart\",L.DomEvent.preventDefault,{passive:!1}))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor=\"\",this._map.off(\"mousedown\",this._onMouseDown,this).off(\"mousemove\",this._onMouseMove,this).off(\"touchstart\",this._onMouseDown,this).off(\"touchmove\",this._onMouseMove,this),L.DomEvent.off(e,\"mouseup\",this._onMouseUp,this),L.DomEvent.off(e,\"touchend\",this._onMouseUp,this),e.removeEventListener(\"touchstart\",L.DomEvent.preventDefault),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_getTooltipText:function(){return{text:this._endLabelText}},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,\"mouseup\",this._onMouseUp,this).on(e,\"touchend\",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent(this._getTooltipText()),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:\"rectangle\"},options:{shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showArea:!0,metric:!0},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},disable:function(){this._enabled&&(this._isCurrentlyTwoClickDrawing=!1,L.Draw.SimpleShape.prototype.disable.call(this))},_onMouseUp:function(t){if(!this._shape&&!this._isCurrentlyTwoClickDrawing)return void(this._isCurrentlyTwoClickDrawing=!0);this._isCurrentlyTwoClickDrawing&&!o(t.target,\"leaflet-pane\")||L.Draw.SimpleShape.prototype._onMouseUp.call(this)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_getTooltipText:function(){var t,e,i,o=L.Draw.SimpleShape.prototype._getTooltipText.call(this),a=this._shape,n=this.options.showArea;return a&&(t=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),e=L.GeometryUtil.geodesicArea(t),i=n?L.GeometryUtil.readableArea(e,this.options.metric):\"\"),{text:o.text,subtext:i}}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:\"marker\"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.marker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:this._initialLabelText}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:\"leaflet-mouse-marker\",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on(\"click\",this._onClick,this).addTo(this._map),this._map.on(\"mousemove\",this._onMouseMove,this),this._map.on(\"click\",this._onTouch,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._map.off(\"click\",this._onClick,this).off(\"click\",this._onTouch,this),this._marker&&(this._marker.off(\"click\",this._onClick,this),this._map.removeLayer(this._marker),delete this._marker),this._mouseMarker.off(\"click\",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off(\"mousemove\",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=this._createMarker(e),this._marker.on(\"click\",this._onClick,this),this._map.on(\"click\",this._onClick,this).addLayer(this._marker))},_createMarker:function(t){return new L.Marker(t,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset})},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_onTouch:function(t){this._onMouseMove(t),this._onClick()},_fireCreatedEvent:function(){var t=new L.Marker.Touch(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.CircleMarker=L.Draw.Marker.extend({statics:{TYPE:\"circlemarker\"},options:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.CircleMarker.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circlemarker.tooltip.start,L.Draw.Feature.prototype.initialize.call(this,t,e)},_fireCreatedEvent:function(){var t=new L.CircleMarker(this._marker.getLatLng(),this.options);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)},_createMarker:function(t){return new L.CircleMarker(t,this.options)}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:\"circle\"},options:{shapeOptions:{stroke:!0,color:\"#3388ff\",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0,feet:!0,nautic:!1},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){if(L.GeometryUtil.isVersion07x())var e=this._startLatLng.distanceTo(t);else var e=this._map.distance(this._startLatLng,t);this._shape?this._shape.setRadius(e):(this._shape=new L.Circle(this._startLatLng,e,this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,a=this.options.metric;if(this._tooltip.updatePosition(i),this._isDrawing){this._drawShape(i),e=this._shape.getRadius().toFixed(1);var n=\"\";o&&(n=L.drawLocal.draw.handlers.circle.radius+\": \"+L.GeometryUtil.readableDistance(e,a,this.options.feet,this.options.nautic)),this._tooltip.updateContent({text:this._endLabelText,subtext:n})}}}),L.Edit=L.Edit||{},L.Edit.Marker=L.Handler.extend({initialize:function(t,e){this._marker=t,L.setOptions(this,e)},addHooks:function(){var t=this._marker;t.dragging.enable(),t.on(\"dragend\",this._onDragEnd,t),this._toggleMarkerHighlight()},removeHooks:function(){var t=this._marker;t.dragging.disable(),t.off(\"dragend\",this._onDragEnd,t),this._toggleMarkerHighlight()},_onDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_toggleMarkerHighlight:function(){var t=this._marker._icon;t&&(t.style.display=\"none\",L.DomUtil.hasClass(t,\"leaflet-edit-marker-selected\")?(L.DomUtil.removeClass(t,\"leaflet-edit-marker-selected\"),this._offsetMarker(t,-4)):(L.DomUtil.addClass(t,\"leaflet-edit-marker-selected\"),this._offsetMarker(t,4)),t.style.display=\"\")},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+\"px\",t.style.marginLeft=o+\"px\"}}),L.Marker.addInitHook(function(){L.Edit.Marker&&(this.editing=new L.Edit.Marker(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({initialize:function(t){this.latlngs=[t._latlngs],t._holes&&(this.latlngs=this.latlngs.concat(t._holes)),this._poly=t,this._poly.on(\"revert-edited\",this._updateLatLngs,this)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._poly._latlngs)?this._poly._latlngs:this._poly._latlngs[0]:this._poly._latlngs},_eachVertexHandler:function(t){for(var e=0;e<this._verticesHandlers.length;e++)t(this._verticesHandlers[e])},addHooks:function(){this._initHandlers(),this._eachVertexHandler(function(t){t.addHooks()})},removeHooks:function(){this._eachVertexHandler(function(t){t.removeHooks()})},updateMarkers:function(){this._eachVertexHandler(function(t){t.updateMarkers()})},_initHandlers:function(){this._verticesHandlers=[];for(var t=0;t<this.latlngs.length;t++)this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly,this.latlngs[t],this._poly.options.poly))},_updateLatLngs:function(t){this.latlngs=[t.layer._latlngs],t.layer._holes&&(this.latlngs=this.latlngs.concat(t.layer._holes))}}),L.Edit.PolyVerticesEdit=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon\"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon\"}),drawError:{color:\"#b00b00\",timeout:1e3}},initialize:function(t,e,i){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this._poly=t,i&&i.drawError&&(i.drawError=L.Util.extend({},this.options.drawError,i.drawError)),this._latlngs=e,L.setOptions(this,i)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._latlngs)?this._latlngs:this._latlngs[0]:this._latlngs},addHooks:function(){var t=this._poly,e=t._path;t instanceof L.Polygon||(t.options.fill=!1,t.options.editing&&(t.options.editing.fill=!1)),e&&t.options.editing&&t.options.editing.className&&(t.options.original.className&&t.options.original.className.split(\" \").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.editing.className.split(\" \").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.editing),this._poly._map&&(this._map=this._poly._map,this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){var t=this._poly,e=t._path;e&&t.options.editing&&t.options.editing.className&&(t.options.editing.className.split(\" \").forEach(function(t){L.DomUtil.removeClass(e,t)}),t.options.original.className&&t.options.original.className.split(\" \").forEach(function(t){L.DomUtil.addClass(e,t)})),t.setStyle(t.options.original),t._map&&(t._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._markers=[];var t,e,i,o,a=this._defaultShape();for(t=0,i=a.length;t<i;t++)o=this._createMarker(a[t],t),o.on(\"click\",this._onMarkerClick,this),o.on(\"contextmenu\",this._onContextMenu,this),this._markers.push(o);var n,s;for(t=0,e=i-1;t<i;e=t++)(0!==t||L.Polygon&&this._poly instanceof L.Polygon)&&(n=this._markers[e],s=this._markers[t],this._createMiddleMarker(n,s),this._updatePrevNext(n,s))},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on(\"dragstart\",this._onMarkerDragStart,this).on(\"drag\",this._onMarkerDrag,this).on(\"dragend\",this._fireEdit,this).on(\"touchmove\",this._onTouchMove,this).on(\"touchend\",this._fireEdit,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"MSPointerUp\",this._fireEdit,this),this._markerGroup.addLayer(i),i},_onMarkerDragStart:function(){this._poly.fire(\"editstart\")},_spliceLatLngs:function(){var t=this._defaultShape(),e=[].splice.apply(t,arguments);return this._poly._convertLatLngs(t,!0),this._poly.redraw(),e},_removeMarker:function(t){var e=t._index;this._markerGroup.removeLayer(t),this._markers.splice(e,1),this._spliceLatLngs(e,1),this._updateIndexes(e,-1),t.off(\"dragstart\",this._onMarkerDragStart,this).off(\"drag\",this._onMarkerDrag,this).off(\"dragend\",this._fireEdit,this).off(\"touchmove\",this._onMarkerDrag,this).off(\"touchend\",this._fireEdit,this).off(\"click\",this._onMarkerClick,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"MSPointerUp\",this._fireEdit,this)},_fireEdit:function(){this._poly.edited=!0,this._poly.fire(\"edit\"),this._poly._map.fire(L.Draw.Event.EDITVERTEX,{layers:this._markerGroup,poly:this._poly})},_onMarkerDrag:function(t){var e=t.target,i=this._poly,o=L.LatLngUtil.cloneLatLng(e._origLatLng);if(L.extend(e._origLatLng,e._latlng),i.options.poly){var a=i._map._editTooltip;if(!i.options.poly.allowIntersection&&i.intersects()){L.extend(e._origLatLng,o),e.setLatLng(o);var n=i.options.color;i.setStyle({color:this.options.drawError.color}),a&&a.updateContent({text:L.drawLocal.draw.handlers.polyline.error}),setTimeout(function(){i.setStyle({color:n}),a&&a.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext})},1e3)}}e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),this._poly._bounds._southWest=L.latLng(1/0,1/0),this._poly._bounds._northEast=L.latLng(-1/0,-1/0);var s=this._poly.getLatLngs();this._poly._convertLatLngs(s,!0),this._poly.redraw(),this._poly.fire(\"editdrag\")},_onMarkerClick:function(t){var e=L.Polygon&&this._poly instanceof L.Polygon?4:3,i=t.target;this._defaultShape().length<e||(this._removeMarker(i),this._updatePrevNext(i._prev,i._next),i._middleLeft&&this._markerGroup.removeLayer(i._middleLeft),i._middleRight&&this._markerGroup.removeLayer(i._middleRight),i._prev&&i._next?this._createMiddleMarker(i._prev,i._next):i._prev?i._next||(i._prev._middleRight=null):i._next._middleLeft=null,this._fireEdit())},_onContextMenu:function(t){var e=t.target;this._poly;this._poly._map.fire(L.Draw.Event.MARKERCONTEXT,{marker:e,layers:this._markerGroup,poly:this._poly}),L.DomEvent.stopPropagation},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e),o=t.target;L.extend(o._origLatLng,i),o._middleLeft&&o._middleLeft.setLatLng(this._getMiddleLatLng(o._prev,o)),o._middleRight&&o._middleRight.setLatLng(this._getMiddleLatLng(o,o._next)),this._poly.redraw(),this.updateMarkers()},_updateIndexes:function(t,e){this._markerGroup.eachLayer(function(i){i._index>t&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,a,n=this._getMiddleLatLng(t,e),s=this._createMarker(n);s.setOpacity(.6),t._middleRight=e._middleLeft=s,o=function(){s.off(\"touchmove\",o,this);var a=e._index;s._index=a,s.off(\"click\",i,this).on(\"click\",this._onMarkerClick,this),n.lat=s.getLatLng().lat,n.lng=s.getLatLng().lng,this._spliceLatLngs(a,0,n),this._markers.splice(a,0,s),s.setOpacity(1),this._updateIndexes(a,1),e._index++,this._updatePrevNext(t,s),this._updatePrevNext(s,e),this._poly.fire(\"editstart\")},a=function(){s.off(\"dragstart\",o,this),s.off(\"dragend\",a,this),s.off(\"touchmove\",o,this),this._createMiddleMarker(t,s),this._createMiddleMarker(s,e)},i=function(){o.call(this),a.call(this),this._fireEdit()},s.on(\"click\",i,this).on(\"dragstart\",o,this).on(\"dragend\",a,this).on(\"touchmove\",o,this),this._markerGroup.addLayer(s)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),a=i.project(e.getLatLng());return i.unproject(o._add(a)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this),this.options.editable&&this.editing.enable()),this.on(\"add\",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on(\"remove\",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-move\"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),\nclassName:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize\"}),touchMoveIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon\"}),touchResizeIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:\"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon\"})},initialize:function(t,e){L.Browser.touch&&(this.options.moveIcon=this.options.touchMoveIcon,this.options.resizeIcon=this.options.touchResizeIcon),this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;this._shape._map&&(this._map=this._shape._map,t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup)))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._unbindMarker(this._resizeMarkers[e]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on(\"dragstart\",this._onMarkerDragStart,this).on(\"drag\",this._onMarkerDrag,this).on(\"dragend\",this._onMarkerDragEnd,this).on(\"touchstart\",this._onTouchStart,this).on(\"touchmove\",this._onTouchMove,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"touchend\",this._onTouchEnd,this).on(\"MSPointerUp\",this._onTouchEnd,this)},_unbindMarker:function(t){t.off(\"dragstart\",this._onMarkerDragStart,this).off(\"drag\",this._onMarkerDrag,this).off(\"dragend\",this._onMarkerDragEnd,this).off(\"touchstart\",this._onTouchStart,this).off(\"touchmove\",this._onTouchMove,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"touchend\",this._onTouchEnd,this).off(\"MSPointerUp\",this._onTouchEnd,this)},_onMarkerDragStart:function(t){t.target.setOpacity(0),this._shape.fire(\"editstart\")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire(\"edit\")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),this._shape.fire(\"editdrag\")},_onMarkerDragEnd:function(t){t.target.setOpacity(1),this._fireEdit()},_onTouchStart:function(t){if(L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t),\"function\"==typeof this._getCorners){var e=this._getCorners(),i=t.target,o=i._cornerIndex;i.setOpacity(0),this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)}this._shape.fire(\"editstart\")},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e);return t.target===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),!1},_onTouchEnd:function(t){t.target.setOpacity(1),this.updateMarkers(),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;e<i;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),o=this._shape.getBounds(),a=o.getCenter(),n=[],s=0,r=i.length;s<r;s++)e=[i[s].lat-a.lat,i[s].lng-a.lng],n.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(n),this._repositionCornerMarkers(),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter()),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})},_getCorners:function(){var t=this._shape.getBounds();return[t.getNorthWest(),t.getNorthEast(),t.getSouthEast(),t.getSouthWest()]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for(var t=this._getCorners(),e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setLatLng(t[e])}}),L.Rectangle.addInitHook(function(){L.Edit.Rectangle&&(this.editing=new L.Edit.Rectangle(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.CircleMarker=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getLatLng();this._moveMarker=this._createMarker(t,this.options.moveIcon)},_createResizeMarker:function(){this._resizeMarkers=[]},_move:function(t){if(this._resizeMarkers.length){var e=this._getResizeMarkerPoint(t);this._resizeMarkers[0].setLatLng(e)}this._shape.setLatLng(t),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})}}),L.CircleMarker.addInitHook(function(){L.Edit.CircleMarker&&(this.editing=new L.Edit.CircleMarker(this),this.options.editable&&this.editing.enable()),this.on(\"add\",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on(\"remove\",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.Edit=L.Edit||{},L.Edit.Circle=L.Edit.CircleMarker.extend({_createResizeMarker:function(){var t=this._shape.getLatLng(),e=this._getResizeMarkerPoint(t);this._resizeMarkers=[],this._resizeMarkers.push(this._createMarker(e,this.options.resizeIcon))},_getResizeMarkerPoint:function(t){var e=this._shape._radius*Math.cos(Math.PI/4),i=this._map.project(t);return this._map.unproject([i.x+e,i.y-e])},_resize:function(t){var e=this._moveMarker.getLatLng();L.GeometryUtil.isVersion07x()?radius=e.distanceTo(t):radius=this._map.distance(e,t),this._shape.setRadius(radius),this._map.editTooltip&&this._map._editTooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.subtext+\"<br />\"+L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.draw.handlers.circle.radius+\": \"+L.GeometryUtil.readableDistance(radius,!0,this.options.feet,this.options.nautic)}),this._shape.setRadius(radius),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})}}),L.Circle.addInitHook(function(){L.Edit.Circle&&(this.editing=new L.Edit.Circle(this),this.options.editable&&this.editing.enable())}),L.Map.mergeOptions({touchExtend:!0}),L.Map.TouchExtend=L.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane},addHooks:function(){L.DomEvent.on(this._container,\"touchstart\",this._onTouchStart,this),L.DomEvent.on(this._container,\"touchend\",this._onTouchEnd,this),L.DomEvent.on(this._container,\"touchmove\",this._onTouchMove,this),this._detectIE()?(L.DomEvent.on(this._container,\"MSPointerDown\",this._onTouchStart,this),L.DomEvent.on(this._container,\"MSPointerUp\",this._onTouchEnd,this),L.DomEvent.on(this._container,\"MSPointerMove\",this._onTouchMove,this),L.DomEvent.on(this._container,\"MSPointerCancel\",this._onTouchCancel,this)):(L.DomEvent.on(this._container,\"touchcancel\",this._onTouchCancel,this),L.DomEvent.on(this._container,\"touchleave\",this._onTouchLeave,this))},removeHooks:function(){L.DomEvent.off(this._container,\"touchstart\",this._onTouchStart,this),L.DomEvent.off(this._container,\"touchend\",this._onTouchEnd,this),L.DomEvent.off(this._container,\"touchmove\",this._onTouchMove,this),this._detectIE()?(L.DomEvent.off(this._container,\"MSPointerDown\",this._onTouchStart,this),L.DomEvent.off(this._container,\"MSPointerUp\",this._onTouchEnd,this),L.DomEvent.off(this._container,\"MSPointerMove\",this._onTouchMove,this),L.DomEvent.off(this._container,\"MSPointerCancel\",this._onTouchCancel,this)):(L.DomEvent.off(this._container,\"touchcancel\",this._onTouchCancel,this),L.DomEvent.off(this._container,\"touchleave\",this._onTouchLeave,this))},_touchEvent:function(t,e){var i={};if(void 0!==t.touches){if(!t.touches.length)return;i=t.touches[0]}else{if(\"touch\"!==t.pointerType)return;if(i=t,!this._filterClick(t))return}var o=this._map.mouseEventToContainerPoint(i),a=this._map.mouseEventToLayerPoint(i),n=this._map.layerPointToLatLng(a);this._map.fire(e,{latlng:n,layerPoint:a,containerPoint:o,pageX:i.pageX,pageY:i.pageY,originalEvent:t})},_filterClick:function(t){var e=t.timeStamp||t.originalEvent.timeStamp,i=L.DomEvent._lastClick&&e-L.DomEvent._lastClick;return i&&i>100&&i<500||t.target._simulatedClick&&!t._simulated?(L.DomEvent.stop(t),!1):(L.DomEvent._lastClick=e,!0)},_onTouchStart:function(t){if(this._map._loaded){this._touchEvent(t,\"touchstart\")}},_onTouchEnd:function(t){if(this._map._loaded){this._touchEvent(t,\"touchend\")}},_onTouchCancel:function(t){if(this._map._loaded){var e=\"touchcancel\";this._detectIE()&&(e=\"pointercancel\"),this._touchEvent(t,e)}},_onTouchLeave:function(t){if(this._map._loaded){this._touchEvent(t,\"touchleave\")}},_onTouchMove:function(t){if(this._map._loaded){this._touchEvent(t,\"touchmove\")}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf(\"MSIE \");if(i>0)return parseInt(e.substring(i+5,e.indexOf(\".\",i)),10);if(e.indexOf(\"Trident/\")>0){var o=e.indexOf(\"rv:\");return parseInt(e.substring(o+3,e.indexOf(\".\",o)),10)}var a=e.indexOf(\"Edge/\");return a>0&&parseInt(e.substring(a+5,e.indexOf(\".\",a)),10)}}),L.Map.addInitHook(\"addHandler\",\"touchExtend\",L.Map.TouchExtend),L.Marker.Touch=L.Marker.extend({_initInteraction:function(){return this.addInteractiveTarget?L.Marker.prototype._initInteraction.apply(this):this._initInteractionLegacy()},_initInteractionLegacy:function(){if(this.options.clickable){var t=this._icon,e=[\"dblclick\",\"mousedown\",\"mouseover\",\"mouseout\",\"contextmenu\",\"touchstart\",\"touchend\",\"touchmove\"];this._detectIE?e.concat([\"MSPointerDown\",\"MSPointerUp\",\"MSPointerMove\",\"MSPointerCancel\"]):e.concat([\"touchcancel\"]),L.DomUtil.addClass(t,\"leaflet-clickable\"),L.DomEvent.on(t,\"click\",this._onMouseClick,this),L.DomEvent.on(t,\"keypress\",this._onKeyPress,this);for(var i=0;i<e.length;i++)L.DomEvent.on(t,e[i],this._fireMouseEvent,this);L.Handler.MarkerDrag&&(this.dragging=new L.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf(\"MSIE \");if(i>0)return parseInt(e.substring(i+5,e.indexOf(\".\",i)),10);if(e.indexOf(\"Trident/\")>0){var o=e.indexOf(\"rv:\");return parseInt(e.substring(o+3,e.indexOf(\".\",o)),10)}var a=e.indexOf(\"Edge/\");return a>0&&parseInt(e.substring(a+5,e.indexOf(\".\",a)),10)}}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;i<o;i++)Array.isArray(t[i])?e.push(L.LatLngUtil.cloneLatLngs(t[i])):e.push(this.cloneLatLng(t[i]));return e},cloneLatLng:function(t){return L.latLng(t.lat,t.lng)}},function(){var t={km:2,ha:2,m:0,mi:2,ac:2,yd:0,ft:0,nm:2};L.GeometryUtil=L.extend(L.GeometryUtil||{},{geodesicArea:function(t){var e,i,o=t.length,a=0,n=Math.PI/180;if(o>2){for(var s=0;s<o;s++)e=t[s],i=t[(s+1)%o],a+=(i.lng-e.lng)*n*(2+Math.sin(e.lat*n)+Math.sin(i.lat*n));a=6378137*a*6378137/2}return Math.abs(a)},formattedNumber:function(t,e){var i=parseFloat(t).toFixed(e),o=L.drawLocal.format&&L.drawLocal.format.numeric,a=o&&o.delimiters,n=a&&a.thousands,s=a&&a.decimal;if(n||s){var r=i.split(\".\");i=n?r[0].replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+n):r[0],s=s||\".\",r.length>1&&(i=i+s+r[1])}return i},readableArea:function(e,i,o){var a,n,o=L.Util.extend({},t,o);return i?(n=[\"ha\",\"m\"],type=typeof i,\"string\"===type?n=[i]:\"boolean\"!==type&&(n=i),a=e>=1e6&&-1!==n.indexOf(\"km\")?L.GeometryUtil.formattedNumber(1e-6*e,o.km)+\" km²\":e>=1e4&&-1!==n.indexOf(\"ha\")?L.GeometryUtil.formattedNumber(1e-4*e,o.ha)+\" ha\":L.GeometryUtil.formattedNumber(e,o.m)+\" m²\"):(e/=.836127,a=e>=3097600?L.GeometryUtil.formattedNumber(e/3097600,o.mi)+\" mi²\":e>=4840?L.GeometryUtil.formattedNumber(e/4840,o.ac)+\" acres\":L.GeometryUtil.formattedNumber(e,o.yd)+\" yd²\"),a},readableDistance:function(e,i,o,a,n){var s,n=L.Util.extend({},t,n);switch(i?\"string\"==typeof i?i:\"metric\":o?\"feet\":a?\"nauticalMile\":\"yards\"){case\"metric\":s=e>1e3?L.GeometryUtil.formattedNumber(e/1e3,n.km)+\" km\":L.GeometryUtil.formattedNumber(e,n.m)+\" m\";break;case\"feet\":e*=3.28083,s=L.GeometryUtil.formattedNumber(e,n.ft)+\" ft\";break;case\"nauticalMile\":e*=.53996,s=L.GeometryUtil.formattedNumber(e/1e3,n.nm)+\" nm\";break;case\"yards\":default:e*=1.09361,s=e>1760?L.GeometryUtil.formattedNumber(e/1760,n.mi)+\" miles\":L.GeometryUtil.formattedNumber(e,n.yd)+\" yd\"}return s},isVersion07x:function(){var t=L.version.split(\".\");return 0===parseInt(t[0],10)&&7===parseInt(t[1],10)}})}(),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._getProjectedPoints(),a=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=a-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return!!this._map&&this.newPointIntersects(this._map.latLngToLayerPoint(t),e)},newPointIntersects:function(t,e){var i=this._getProjectedPoints(),o=i?i.length:0,a=i?i[o-1]:null,n=o-2;return!this._tooFewPointsForIntersection(1)&&this._lineSegmentsIntersectsRange(a,t,n,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._getProjectedPoints(),i=e?e.length:0;return i+=t||0,!e||i<=3},_lineSegmentsIntersectsRange:function(t,e,i,o){var a,n,s=this._getProjectedPoints();o=o||0;for(var r=i;r>o;r--)if(a=s[r-1],n=s[r],L.LineUtil.segmentsIntersect(t,e,a,n))return!0;return!1},_getProjectedPoints:function(){if(!this._defaultShape)return this._originalPoints;for(var t=[],e=this._defaultShape(),i=0;i<e.length;i++)t.push(this._map.latLngToLayerPoint(e[i]));return t}}),L.Polygon.include({intersects:function(){var t,e,i,o,a=this._getProjectedPoints();return!this._tooFewPointsForIntersection()&&(!!L.Polyline.prototype.intersects.call(this)||(t=a.length,e=a[0],i=a[t-1],o=t-2,this._lineSegmentsIntersectsRange(i,e,o,1)))}}),L.Control.Draw=L.Control.extend({options:{position:\"topleft\",draw:{},edit:!1},initialize:function(t){if(L.version<\"0.7\")throw new Error(\"Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/\");L.Control.prototype.initialize.call(this,t);var e;this._toolbars={},L.DrawToolbar&&this.options.draw&&(e=new L.DrawToolbar(this.options.draw),this._toolbars[L.DrawToolbar.TYPE]=e,this._toolbars[L.DrawToolbar.TYPE].on(\"enable\",this._toolbarEnabled,this)),L.EditToolbar&&this.options.edit&&(e=new L.EditToolbar(this.options.edit),this._toolbars[L.EditToolbar.TYPE]=e,this._toolbars[L.EditToolbar.TYPE].on(\"enable\",this._toolbarEnabled,this)),L.toolbar=this},onAdd:function(t){var e,i=L.DomUtil.create(\"div\",\"leaflet-draw\"),o=!1;for(var a in this._toolbars)this._toolbars.hasOwnProperty(a)&&(e=this._toolbars[a].addToolbar(t))&&(o||(L.DomUtil.hasClass(e,\"leaflet-draw-toolbar-top\")||L.DomUtil.addClass(e.childNodes[0],\"leaflet-draw-toolbar-top\"),o=!0),i.appendChild(e));return i},onRemove:function(){for(var t in this._toolbars)this._toolbars.hasOwnProperty(t)&&this._toolbars[t].removeToolbar()},setDrawingOptions:function(t){for(var e in this._toolbars)this._toolbars[e]instanceof L.DrawToolbar&&this._toolbars[e].setOptions(t)},_toolbarEnabled:function(t){var e=t.target;for(var i in this._toolbars)this._toolbars[i]!==e&&this._toolbars[i].disable()}}),L.Map.mergeOptions({drawControlTooltips:!0,drawControl:!1}),L.Map.addInitHook(function(){this.options.drawControl&&(this.drawControl=new L.Control.Draw,this.addControl(this.drawControl))}),L.Toolbar=L.Class.extend({initialize:function(t){L.setOptions(this,t),this._modes={},this._actionButtons=[],this._activeMode=null;var e=L.version.split(\".\");1===parseInt(e[0],10)&&parseInt(e[1],10)>=2?L.Toolbar.include(L.Evented.prototype):L.Toolbar.include(L.Mixin.Events)},enabled:function(){return null!==this._activeMode},disable:function(){this.enabled()&&this._activeMode.handler.disable()},addToolbar:function(t){var e,i=L.DomUtil.create(\"div\",\"leaflet-draw-section\"),o=0,a=this._toolbarClass||\"\",n=this.getModeHandlers(t);for(this._toolbarContainer=L.DomUtil.create(\"div\",\"leaflet-draw-toolbar leaflet-bar\"),this._map=t,e=0;e<n.length;e++)n[e].enabled&&this._initModeHandler(n[e].handler,this._toolbarContainer,o++,a,n[e].title);if(o)return this._lastButtonIndex=--o,this._actionsContainer=L.DomUtil.create(\"ul\",\"leaflet-draw-actions\"),i.appendChild(this._toolbarContainer),i.appendChild(this._actionsContainer),i},removeToolbar:function(){for(var t in this._modes)this._modes.hasOwnProperty(t)&&(this._disposeButton(this._modes[t].button,this._modes[t].handler.enable,this._modes[t].handler),this._modes[t].handler.disable(),this._modes[t].handler.off(\"enabled\",this._handlerActivated,this).off(\"disabled\",this._handlerDeactivated,this));this._modes={};for(var e=0,i=this._actionButtons.length;e<i;e++)this._disposeButton(this._actionButtons[e].button,this._actionButtons[e].callback,this);this._actionButtons=[],this._actionsContainer=null},_initModeHandler:function(t,e,i,o,a){var n=t.type;this._modes[n]={},this._modes[n].handler=t,this._modes[n].button=this._createButton({type:n,title:a,className:o+\"-\"+n,container:e,callback:this._modes[n].handler.enable,context:this._modes[n].handler}),this._modes[n].buttonIndex=i,this._modes[n].handler.on(\"enabled\",this._handlerActivated,this).on(\"disabled\",this._handlerDeactivated,this)},_detectIOS:function(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!t.MSStream},_createButton:function(t){var e=L.DomUtil.create(\"a\",t.className||\"\",t.container),i=L.DomUtil.create(\"span\",\"sr-only\",t.container);e.href=\"#\",e.appendChild(i),t.title&&(e.title=t.title,i.innerHTML=t.title),t.text&&(e.innerHTML=t.text,i.innerHTML=t.text);var o=this._detectIOS()?\"touchstart\":\"click\";return L.DomEvent.on(e,\"click\",L.DomEvent.stopPropagation).on(e,\"mousedown\",L.DomEvent.stopPropagation).on(e,\"dblclick\",L.DomEvent.stopPropagation).on(e,\"touchstart\",L.DomEvent.stopPropagation).on(e,\"click\",L.DomEvent.preventDefault).on(e,o,t.callback,t.context),e},_disposeButton:function(t,e){var i=this._detectIOS()?\"touchstart\":\"click\";L.DomEvent.off(t,\"click\",L.DomEvent.stopPropagation).off(t,\"mousedown\",L.DomEvent.stopPropagation).off(t,\"dblclick\",L.DomEvent.stopPropagation).off(t,\"touchstart\",L.DomEvent.stopPropagation).off(t,\"click\",L.DomEvent.preventDefault).off(t,i,e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,\"leaflet-draw-toolbar-button-enabled\"),this._showActionsToolbar(),this.fire(\"enable\")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,\"leaflet-draw-toolbar-button-enabled\"),this._activeMode=null,this.fire(\"disable\")},_createActions:function(t){var e,i,o,a,n=this._actionsContainer,s=this.getActions(t),r=s.length;for(i=0,o=this._actionButtons.length;i<o;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];n.firstChild;)n.removeChild(n.firstChild);for(var l=0;l<r;l++)\"enabled\"in s[l]&&!s[l].enabled||(e=L.DomUtil.create(\"li\",\"\",n),a=this._createButton({title:s[l].title,text:s[l].text,container:e,callback:s[l].callback,context:s[l].context}),this._actionButtons.push({button:a,callback:s[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+\"px\",0===t&&(L.DomUtil.addClass(this._toolbarContainer,\"leaflet-draw-toolbar-notop\"),L.DomUtil.addClass(this._actionsContainer,\"leaflet-draw-actions-top\")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,\"leaflet-draw-toolbar-nobottom\"),L.DomUtil.addClass(this._actionsContainer,\"leaflet-draw-actions-bottom\")),this._actionsContainer.style.display=\"block\",this._map.fire(L.Draw.Event.TOOLBAROPENED)},_hideActionsToolbar:function(){this._actionsContainer.style.display=\"none\",L.DomUtil.removeClass(this._toolbarContainer,\"leaflet-draw-toolbar-notop\"),L.DomUtil.removeClass(this._toolbarContainer,\"leaflet-draw-toolbar-nobottom\"),L.DomUtil.removeClass(this._actionsContainer,\"leaflet-draw-actions-top\"),L.DomUtil.removeClass(this._actionsContainer,\"leaflet-draw-actions-bottom\"),this._map.fire(L.Draw.Event.TOOLBARCLOSED)}}),L.Draw=L.Draw||{},L.Draw.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._visible=!1,this._container=t.options.drawControlTooltips?L.DomUtil.create(\"div\",\"leaflet-draw-tooltip\",this._popupPane):null,this._singleLineLabel=!1,this._map.on(\"mouseout\",this._onMouseOut,this)},dispose:function(){this._map.off(\"mouseout\",this._onMouseOut,this),this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||\"\",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,\"leaflet-draw-tooltip-single\"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,\"leaflet-draw-tooltip-single\"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?'<span class=\"leaflet-draw-tooltip-subtext\">'+t.subtext+\"</span><br />\":\"\")+\"<span>\"+t.text+\"</span>\",t.text||t.subtext?(this._visible=!0,this._container.style.visibility=\"inherit\"):(this._visible=!1,this._container.style.visibility=\"hidden\"),this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(this._visible&&(i.style.visibility=\"inherit\"),L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,\"leaflet-error-draw-tooltip\"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,\"leaflet-error-draw-tooltip\"),this},_onMouseOut:function(){this._container&&(this._container.style.visibility=\"hidden\")}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:\"draw\"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{},circlemarker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass=\"leaflet-draw-draw\",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker},{enabled:this.options.circlemarker,handler:new L.Draw.CircleMarker(t,this.options.circlemarker),title:L.drawLocal.draw.toolbar.buttons.circlemarker}]},getActions:function(t){return[{enabled:t.completeShape,title:L.drawLocal.draw.toolbar.finish.title,text:L.drawLocal.draw.toolbar.finish.text,callback:t.completeShape,context:t},{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:\"edit\"},options:{edit:{selectedPathOptions:{dashArray:\"10, 10\",fill:!0,fillColor:\"#fe57a1\",fillOpacity:.1,maintainColor:!1}},remove:{},poly:null,featureGroup:null},initialize:function(t){t.edit&&(void 0===t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),t.poly&&(t.poly=L.extend({},this.options.poly,t.poly)),this._toolbarClass=\"leaflet-draw-edit\",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions,poly:this.options.poly}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(t){var e=[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}];return t.removeAllLayers&&e.push({title:L.drawLocal.edit.toolbar.actions.clearAll.title,text:L.drawLocal.edit.toolbar.actions.clearAll.text,callback:this._clearAllLayers,context:this}),e},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on(\"layeradd layerremove\",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off(\"layeradd layerremove\",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode&&this._activeMode.handler.disable()},_clearAllLayers:function(){this._activeMode.handler.removeAllLayers(),this._activeMode&&this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,\"leaflet-disabled\"):L.DomUtil.addClass(t,\"leaflet-disabled\"),t.setAttribute(\"title\",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,\"leaflet-disabled\"):L.DomUtil.addClass(t,\"leaflet-disabled\"),t.setAttribute(\"title\",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:\"edit\"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error(\"options.featureGroup must be a L.FeatureGroup\");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE;var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Edit.include(L.Evented.prototype):L.EditToolbar.Edit.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.EDITSTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on(\"layeradd\",this._enableLayerEdit,this).on(\"layerremove\",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off(\"layeradd\",this._enableLayerEdit,this).off(\"layerremove\",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.EDITSTOP,{handler:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),t._editTooltip=this._tooltip,this._updateTooltip(),this._map.on(\"mousemove\",this._onMouseMove,this).on(\"touchmove\",this._onMouseMove,this).on(\"MSPointerMove\",this._onMouseMove,this).on(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off(\"mousemove\",this._onMouseMove,this).off(\"touchmove\",this._onMouseMove,this).off(\"MSPointerMove\",this._onMouseMove,this).off(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire(L.Draw.Event.EDITED,{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:(t instanceof L.Marker||t instanceof L.CircleMarker)&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_getTooltipText:function(){return{text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}},_updateTooltip:function(){this._tooltip.updateContent(this._getTooltipText())},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):(t instanceof L.Marker||t instanceof L.CircleMarker)&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire(\"revert-edited\",{layer:t}))},_enableLayerEdit:function(t){var e,i,o=t.layer||t.target||t;this._backupLayer(o),this.options.poly&&(i=L.Util.extend({},this.options.poly),o.options.poly=i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=o.options.color,e.fillColor=o.options.fillColor),o.options.original=L.extend({},o.options),o.options.editing=e),o instanceof L.Marker?(o.editing&&o.editing.enable(),o.dragging.enable(),o.on(\"dragend\",this._onMarkerDragEnd).on(\"touchmove\",this._onTouchMove,this).on(\"MSPointerMove\",this._onTouchMove,this).on(\"touchend\",this._onMarkerDragEnd,this).on(\"MSPointerUp\",this._onMarkerDragEnd,this)):o.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing&&e.editing.disable(),delete e.options.editing,delete e.options.original,\nthis._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off(\"dragend\",this._onMarkerDragEnd,this).off(\"touchmove\",this._onTouchMove,this).off(\"MSPointerMove\",this._onTouchMove,this).off(\"touchend\",this._onMarkerDragEnd,this).off(\"MSPointerUp\",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:\"remove\"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error(\"options.featureGroup must be a L.FeatureGroup\");this.type=L.EditToolbar.Delete.TYPE;var i=L.version.split(\".\");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Delete.include(L.Evented.prototype):L.EditToolbar.Delete.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire(\"enabled\",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on(\"layeradd\",this._enableLayerDelete,this).on(\"layerremove\",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off(\"layeradd\",this._enableLayerDelete,this).off(\"layerremove\",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire(\"disabled\",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on(\"mousemove\",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off(\"mousemove\",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire(\"revert-deleted\",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on(\"click\",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off(\"click\",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire(\"deleted\")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document);","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== \"undefined\" // 'global proper'\n? // eslint-disable-next-line no-undef\nglobalThis : typeof window !== \"undefined\" ? window // Browser\n: typeof global !== \"undefined\" ? global // node.js\n: {};\n\nfunction getUniqueId() {\n  var key = \"__global_unique_id__\";\n  return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n} // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  var Provider = /*#__PURE__*/function (_React$Component) {\n    _inheritsLoose(Provider, _React$Component);\n\n    function Provider() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n      _this.emitter = createEventEmitter(_this.props.value);\n      return _this;\n    }\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === \"function\" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (process.env.NODE_ENV !== \"production\") {\n            process.env.NODE_ENV !== \"production\" ? warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, \"calculateChangedBits: Expected the return value to be a \" + \"31-bit integer. Instead received: \" + changedBits) : void 0;\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    _proto.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(React.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n  var Consumer = /*#__PURE__*/function (_React$Component2) {\n    _inheritsLoose(Consumer, _React$Component2);\n\n    function Consumer() {\n      var _this2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      _this2 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;\n      _this2.observedBits = void 0;\n      _this2.state = {\n        value: _this2.getValue()\n      };\n\n      _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      };\n\n      return _this2;\n    }\n\n    var _proto2 = Consumer.prototype;\n\n    _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    _proto2.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    _proto2.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    _proto2.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    _proto2.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(React.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\n// MIT License\nvar createContext = React.createContext || createReactContext;\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n  var context = createContext();\n  context.displayName = name;\n  return context;\n};\n\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Router, _React$Component);\n\n  Router.computeRootMatch = function computeRootMatch(pathname) {\n    return {\n      path: \"/\",\n      url: \"/\",\n      params: {},\n      isExact: pathname === \"/\"\n    };\n  };\n\n  function Router(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n    _this.state = {\n      location: props.history.location\n    }; // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n\n    _this._isMounted = false;\n    _this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      _this.unlisten = props.history.listen(function (location) {\n        _this._pendingLocation = location;\n      });\n    }\n\n    return _this;\n  }\n\n  var _proto = Router.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(function (location) {\n        if (_this2._isMounted) {\n          _this2.setState({\n            location: location\n          });\n        }\n      });\n    }\n\n    if (this._pendingLocation) {\n      this.setState({\n        location: this._pendingLocation\n      });\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  };\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(context.Provider, {\n      value: {\n        history: this.props.history,\n        location: this.state.location,\n        match: Router.computeRootMatch(this.state.location.pathname),\n        staticContext: this.props.staticContext\n      }\n    }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n      children: this.props.children || null,\n      value: this.props.history\n    }));\n  };\n\n  return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change <Router history>\") : void 0;\n  };\n}\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(MemoryRouter, _React$Component);\n\n  function MemoryRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.history = createMemoryHistory(_this.props);\n    return _this;\n  }\n\n  var _proto = MemoryRouter.prototype;\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(Router, {\n      history: this.history,\n      children: this.props.children\n    });\n  };\n\n  return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<MemoryRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n  };\n}\n\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Lifecycle, _React$Component);\n\n  function Lifecycle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Lifecycle.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n  var message = _ref.message,\n      _ref$when = _ref.when,\n      when = _ref$when === void 0 ? true : _ref$when;\n  return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Prompt> outside a <Router>\") : invariant(false) : void 0;\n    if (!when || context.staticContext) return null;\n    var method = context.history.block;\n    return /*#__PURE__*/React.createElement(Lifecycle, {\n      onMount: function onMount(self) {\n        self.release = method(message);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        if (prevProps.message !== message) {\n          self.release();\n          self.release = method(message);\n        }\n      },\n      onUnmount: function onUnmount(self) {\n        self.release();\n      },\n      message: message\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n  var generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n  if (path === void 0) {\n    path = \"/\";\n  }\n\n  if (params === void 0) {\n    params = {};\n  }\n\n  return path === \"/\" ? path : compilePath(path)(params, {\n    pretty: true\n  });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n  var computedMatch = _ref.computedMatch,\n      to = _ref.to,\n      _ref$push = _ref.push,\n      push = _ref$push === void 0 ? false : _ref$push;\n  return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Redirect> outside a <Router>\") : invariant(false) : void 0;\n    var history = context.history,\n        staticContext = context.staticContext;\n    var method = push ? history.push : history.replace;\n    var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n      pathname: generatePath(to.pathname, computedMatch.params)\n    }) : to); // When rendering in a static context,\n    // set the new location immediately.\n\n    if (staticContext) {\n      method(location);\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(Lifecycle, {\n      onMount: function onMount() {\n        method(location);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        var prevLocation = createLocation(prevProps.to);\n\n        if (!locationsAreEqual(prevLocation, _extends({}, location, {\n          key: prevLocation.key\n        }))) {\n          method(location);\n        }\n      },\n      to: to\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n  var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n  var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n  if (pathCache[path]) return pathCache[path];\n  var keys = [];\n  var regexp = pathToRegexp(path, keys, options);\n  var result = {\n    regexp: regexp,\n    keys: keys\n  };\n\n  if (cacheCount$1 < cacheLimit$1) {\n    pathCache[path] = result;\n    cacheCount$1++;\n  }\n\n  return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = {\n      path: options\n    };\n  }\n\n  var _options = options,\n      path = _options.path,\n      _options$exact = _options.exact,\n      exact = _options$exact === void 0 ? false : _options$exact,\n      _options$strict = _options.strict,\n      strict = _options$strict === void 0 ? false : _options$strict,\n      _options$sensitive = _options.sensitive,\n      sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n  var paths = [].concat(path);\n  return paths.reduce(function (matched, path) {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    var _compilePath = compilePath$1(path, {\n      end: exact,\n      strict: strict,\n      sensitive: sensitive\n    }),\n        regexp = _compilePath.regexp,\n        keys = _compilePath.keys;\n\n    var match = regexp.exec(pathname);\n    if (!match) return null;\n    var url = match[0],\n        values = match.slice(1);\n    var isExact = pathname === url;\n    if (exact && !isExact) return null;\n    return {\n      path: path,\n      // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url,\n      // the matched portion of the URL\n      isExact: isExact,\n      // whether or not we matched exactly\n      params: keys.reduce(function (memo, key, index) {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  var value = children(props);\n  process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\"<Route\" + (path ? \" path=\\\"\" + path + \"\\\"\" : \"\") + \">, but you \") + \"should have returned a React element or `null`\") : void 0;\n  return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Route, _React$Component);\n\n  function Route() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Route.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n      !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Route> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context$1.location;\n      var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us\n      : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n      var props = _extends({}, context$1, {\n        location: location,\n        match: match\n      });\n\n      var _this$props = _this.props,\n          children = _this$props.children,\n          component = _this$props.component,\n          render = _this$props.render; // Preact uses an empty array as children by\n      // default, so use null if that's the case.\n\n      if (Array.isArray(children) && isEmptyChildren(children)) {\n        children = null;\n      }\n\n      return /*#__PURE__*/React.createElement(context.Provider, {\n        value: props\n      }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n    });\n  };\n\n  return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: function component(props, propName) {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\") : void 0;\n  };\n\n  Route.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n  return _extends({}, location, {\n    pathname: addLeadingSlash(basename) + location.pathname\n  });\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n  var base = addLeadingSlash(basename);\n  if (location.pathname.indexOf(base) !== 0) return location;\n  return _extends({}, location, {\n    pathname: location.pathname.substr(base.length)\n  });\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return function () {\n     process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with <StaticRouter>\", methodName) : invariant(false) ;\n  };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(StaticRouter, _React$Component);\n\n  function StaticRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handlePush = function (location) {\n      return _this.navigateTo(location, \"PUSH\");\n    };\n\n    _this.handleReplace = function (location) {\n      return _this.navigateTo(location, \"REPLACE\");\n    };\n\n    _this.handleListen = function () {\n      return noop;\n    };\n\n    _this.handleBlock = function () {\n      return noop;\n    };\n\n    return _this;\n  }\n\n  var _proto = StaticRouter.prototype;\n\n  _proto.navigateTo = function navigateTo(location, action) {\n    var _this$props = this.props,\n        _this$props$basename = _this$props.basename,\n        basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n        _this$props$context = _this$props.context,\n        context = _this$props$context === void 0 ? {} : _this$props$context;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        _this$props2$basename = _this$props2.basename,\n        basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n        _this$props2$context = _this$props2.context,\n        context = _this$props2$context === void 0 ? {} : _this$props2$context,\n        _this$props2$location = _this$props2.location,\n        location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n        rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n    var history = {\n      createHref: function createHref(path) {\n        return addLeadingSlash(basename + createURL(path));\n      },\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n    return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n      history: history,\n      staticContext: context\n    }));\n  };\n\n  return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<StaticRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n  };\n}\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Switch, _React$Component);\n\n  function Switch() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Switch.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Switch> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context.location;\n      var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n      // here because toArray adds keys to all child elements and we do not want\n      // to trigger an unmount/remount for two <Route>s that render the same\n      // component at different URLs.\n\n      React.Children.forEach(_this.props.children, function (child) {\n        if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n          element = child;\n          var path = child.props.path || child.props.from;\n          match = path ? matchPath(location.pathname, _extends({}, child.props, {\n            path: path\n          })) : context.match;\n        }\n      });\n      return match ? /*#__PURE__*/React.cloneElement(element, {\n        location: location,\n        computedMatch: match\n      }) : null;\n    });\n  };\n\n  return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n  var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n  var C = function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a <Router>\") : invariant(false) : void 0;\n      return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n        ref: wrappedComponentRef\n      }));\n    });\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n  }\n\n  return useContext(historyContext);\n}\nfunction useLocation() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n  }\n\n  return useContext(context).location;\n}\nfunction useParams() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n  }\n\n  var match = useContext(context).match;\n  return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n  }\n\n  var location = useLocation();\n  var match = useContext(context).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  if (typeof window !== \"undefined\") {\n    var global$1 = window;\n    var key = \"__react_router_build__\";\n    var buildNames = {\n      cjs: \"CommonJS\",\n      esm: \"ES modules\",\n      umd: \"UMD\"\n    };\n\n    if (global$1[key] && global$1[key] !== \"esm\") {\n      var initialBuildName = buildNames[global$1[key]];\n      var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n      // loading 2 different builds.\n\n      throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n    }\n\n    global$1[key] = \"esm\";\n  }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","/* eslint-disable no-bitwise, no-cond-assign */\n// HTML DOM and SVG DOM may have different support levels,\n// so we need to check on context instead of a document root element.\nexport default function contains(context, node) {\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = {\n            standalone:\n                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n                    '_'\n                ),\n            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n                '_'\n            ),\n            isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n        },\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex =\n            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex:\n            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex:\n            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","'use strict';\nvar parent = require('../../stable/date');\n\nmodule.exports = parent;\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else deletePropertyOrThrow(O, to);\n    to += inc;\n    from += inc;\n  } return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\nvar sort = uncurryThis(getBuiltInPrototypeMethod('Array', 'sort'));\n\n// `Array.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-array.prototype.tosorted\n$({ target: 'Array', proto: true }, {\n  toSorted: function toSorted(compareFn) {\n    if (compareFn !== undefined) aCallable(compareFn);\n    var O = toIndexedObject(this);\n    var A = arrayFromConstructorAndList($Array, O);\n    return sort(A, compareFn);\n  }\n});\n\naddToUnscopables('toSorted');\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link LocalTrackPublication} implementation\n * @extends TrackSignaling\n * @property {Track.ID} id\n */\nvar LocalTrackPublicationSignaling = /** @class */ (function (_super) {\n    __extends(LocalTrackPublicationSignaling, _super);\n    /**\n     * Construct a {@link LocalTrackPublicationSignaling}. {@link TrackSenders}\n     * are always cloned.\n     * @param {DataTrackSender|MediaTrackSender} trackSender - the {@link TrackSender}\n     *   of the {@link LocalTrack} to be published\n     * @param {string} name - the name of the {@link LocalTrack} to be published\n     * @param {Track.Priority} priority - initial {@link Track.Priority}\n     */\n    function LocalTrackPublicationSignaling(trackSender, name, priority) {\n        var _this = this;\n        trackSender = trackSender.clone();\n        var enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;\n        _this = _super.call(this, name, trackSender.kind, enabled, priority) || this;\n        _this.setTrackTransceiver(trackSender);\n        Object.defineProperties(_this, {\n            _updatedPriority: {\n                value: priority,\n                writable: true\n            },\n            id: {\n                enumerable: true,\n                value: trackSender.id\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(LocalTrackPublicationSignaling.prototype, \"updatedPriority\", {\n        /**\n         * The updated {@link Track.Priority} of the {@link LocalTrack}.\n         * @property {Track.priority}\n         */\n        get: function () {\n            return this._updatedPriority;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Enable (or disable) the {@link LocalTrackPublicationSignaling} if it is not\n     * already enabled (or disabled). This also updates the cloned\n     * {@link MediaTrackSender}'s MediaStreamTracks `enabled` state.\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    LocalTrackPublicationSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        this.trackTransceiver.track.enabled = enabled;\n        return _super.prototype.enable.call(this, enabled);\n    };\n    /**\n     * Rejects the SID's deferred promise with the given Error.\n     * @param {Error} error\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.publishFailed = function (error) {\n        if (setError(this, error)) {\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n     * @param {Track.priority} priority\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.setPriority = function (priority) {\n        if (this._updatedPriority !== priority) {\n            this._updatedPriority = priority;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the published {@link LocalTrack}'s {@link Track.SID}.\n     * @param {Track.SID} sid\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.setSid = function (sid) {\n        if (this._error) {\n            return this;\n        }\n        return _super.prototype.setSid.call(this, sid);\n    };\n    /**\n     * Stop the cloned {@link TrackSender}.\n     * @returns {void}\n     */\n    LocalTrackPublicationSignaling.prototype.stop = function () {\n        this.trackTransceiver.stop();\n    };\n    return LocalTrackPublicationSignaling;\n}(TrackSignaling));\n/**\n * @param {LocalTrackPublication} publication\n * @param {Error} error\n * @returns {boolean} updated\n */\nfunction setError(publication, error) {\n    if (publication._sid !== null || publication._error) {\n        return false;\n    }\n    publication._error = error;\n    return true;\n}\nmodule.exports = LocalTrackPublicationSignaling;\n//# sourceMappingURL=localtrackpublication.js.map","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n  defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n    configurable: true,\n    get: function dotAll() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).dotAll;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","/**\n * Copyright (c) 2013 Tim Perry\n * Licensed under the MIT license.\n *\n * Copied from https://github.com/pimterry/loglevel (1.7.0)\n * and modified to remove browser and AMD module support, while keeping CommonJS.\n * It was causing a conflict when this is bundled using CommonJS, and then loaded via RequireJS.\n * The proper way to fix this module is to have a build that outputs CommonJS and AMD separately\n * which needs to be submitted to the original module's repo.\n */\n/* istanbul ignore file */\n/* eslint-disable */\n// Slightly dubious tricks to cut down minimized file size\nvar noop = function () { };\nvar undefinedType = \"undefined\";\nvar isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (/Trident\\/|MSIE /.test(window.navigator.userAgent));\nvar logMethods = [\n    \"trace\",\n    \"debug\",\n    \"info\",\n    \"warn\",\n    \"error\"\n];\n// Cross-browser bind equivalent that works at least back to IE6\nfunction bindMethod(obj, methodName) {\n    var method = obj[methodName];\n    if (typeof method.bind === 'function') {\n        return method.bind(obj);\n    }\n    else {\n        try {\n            return Function.prototype.bind.call(method, obj);\n        }\n        catch (e) {\n            // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n            return function () {\n                return Function.prototype.apply.apply(method, [obj, arguments]);\n            };\n        }\n    }\n}\n// Trace() doesn't print the message in IE, so for that case we need to wrap it\nfunction traceForIE() {\n    if (console.log) {\n        if (console.log.apply) {\n            console.log.apply(console, arguments);\n        }\n        else {\n            // In old IE, native console methods themselves don't have apply().\n            Function.prototype.apply.apply(console.log, [console, arguments]);\n        }\n    }\n    if (console.trace)\n        console.trace();\n}\n// Build the best logging method possible for this env\n// Wherever possible we want to bind, not wrap, to preserve stack traces\nfunction realMethod(methodName) {\n    if (methodName === 'debug') {\n        methodName = 'log';\n    }\n    if (typeof console === undefinedType) {\n        return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n    }\n    else if (methodName === 'trace' && isIE) {\n        return traceForIE;\n    }\n    else if (console[methodName] !== undefined) {\n        return bindMethod(console, methodName);\n    }\n    else if (console.log !== undefined) {\n        return bindMethod(console, 'log');\n    }\n    else {\n        return noop;\n    }\n}\n// These private functions always need `this` to be set properly\nfunction replaceLoggingMethods(level, loggerName) {\n    /*jshint validthis:true */\n    for (var i = 0; i < logMethods.length; i++) {\n        var methodName = logMethods[i];\n        this[methodName] = (i < level) ?\n            noop :\n            this.methodFactory(methodName, level, loggerName);\n    }\n    // Define log.log as an alias for log.debug\n    this.log = this.debug;\n}\n// In old IE versions, the console isn't present until you first open it.\n// We build realMethod() replacements here that regenerate logging methods\nfunction enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n    return function () {\n        if (typeof console !== undefinedType) {\n            replaceLoggingMethods.call(this, level, loggerName);\n            this[methodName].apply(this, arguments);\n        }\n    };\n}\n// By default, we use closely bound real methods wherever possible, and\n// otherwise we wait for a console to appear, and then try again.\nfunction defaultMethodFactory(methodName, level, loggerName) {\n    /*jshint validthis:true */\n    return realMethod(methodName) ||\n        enableLoggingWhenConsoleArrives.apply(this, arguments);\n}\nfunction Logger(name, defaultLevel, factory) {\n    var self = this;\n    var currentLevel;\n    var storageKey = \"loglevel\";\n    if (typeof name === \"string\") {\n        storageKey += \":\" + name;\n    }\n    else if (typeof name === \"symbol\") {\n        storageKey = undefined;\n    }\n    function persistLevelIfPossible(levelNum) {\n        var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n        if (typeof window === undefinedType || !storageKey)\n            return;\n        // Use localStorage if available\n        try {\n            window.localStorage[storageKey] = levelName;\n            return;\n        }\n        catch (ignore) { }\n        // Use session cookie as fallback\n        try {\n            window.document.cookie =\n                encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n        }\n        catch (ignore) { }\n    }\n    function getPersistedLevel() {\n        var storedLevel;\n        if (typeof window === undefinedType || !storageKey)\n            return;\n        try {\n            storedLevel = window.localStorage[storageKey];\n        }\n        catch (ignore) { }\n        // Fallback to cookies if local storage gives us nothing\n        if (typeof storedLevel === undefinedType) {\n            try {\n                var cookie = window.document.cookie;\n                var location = cookie.indexOf(encodeURIComponent(storageKey) + \"=\");\n                if (location !== -1) {\n                    storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n                }\n            }\n            catch (ignore) { }\n        }\n        // If the stored level is not valid, treat it as if nothing was stored.\n        if (self.levels[storedLevel] === undefined) {\n            storedLevel = undefined;\n        }\n        return storedLevel;\n    }\n    /*\n     *\n     * Public logger API - see https://github.com/pimterry/loglevel for details\n     *\n     */\n    self.name = name;\n    self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n        \"ERROR\": 4, \"SILENT\": 5 };\n    self.methodFactory = factory || defaultMethodFactory;\n    self.getLevel = function () {\n        return currentLevel;\n    };\n    self.setLevel = function (level, persist) {\n        if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n            level = self.levels[level.toUpperCase()];\n        }\n        if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n            currentLevel = level;\n            if (persist !== false) { // defaults to true\n                persistLevelIfPossible(level);\n            }\n            replaceLoggingMethods.call(self, level, name);\n            if (typeof console === undefinedType && level < self.levels.SILENT) {\n                return \"No console available for logging\";\n            }\n        }\n        else {\n            throw \"log.setLevel() called with invalid level: \" + level;\n        }\n    };\n    self.setDefaultLevel = function (level) {\n        if (!getPersistedLevel()) {\n            self.setLevel(level, false);\n        }\n    };\n    self.enableAll = function (persist) {\n        self.setLevel(self.levels.TRACE, persist);\n    };\n    self.disableAll = function (persist) {\n        self.setLevel(self.levels.SILENT, persist);\n    };\n    // Initialize with the right level\n    var initialLevel = getPersistedLevel();\n    if (initialLevel == null) {\n        initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n    }\n    self.setLevel(initialLevel, false);\n}\n/*\n *\n * Top-level API\n *\n */\nvar defaultLogger = new Logger();\nvar _loggersByName = {};\ndefaultLogger.getLogger = function getLogger(name) {\n    if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n        throw new TypeError(\"You must supply a name when creating a logger.\");\n    }\n    var logger = _loggersByName[name];\n    if (!logger) {\n        logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n    }\n    return logger;\n};\n// Grab the current global log variable in case of overwrite\nvar _log = (typeof window !== undefinedType) ? window.log : undefined;\ndefaultLogger.noConflict = function () {\n    if (typeof window !== undefinedType &&\n        window.log === defaultLogger) {\n        window.log = _log;\n    }\n    return defaultLogger;\n};\ndefaultLogger.getLoggers = function getLoggers() {\n    return _loggersByName;\n};\n// ES6 default export, for compatibility\ndefaultLogger['default'] = defaultLogger;\nmodule.exports = defaultLogger;\n//# sourceMappingURL=loglevel.js.map","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createlocaltracks_1 = require(\"./createlocaltracks\");\nvar preflighttest_1 = require(\"./preflight/preflighttest\");\nvar internals = {\n    connect: require('./connect'),\n    createLocalAudioTrack: require('./createlocaltrack').audio,\n    createLocalVideoTrack: require('./createlocaltrack').video,\n    isSupported: require('./util/support')(),\n    version: require('../package.json').version,\n    Logger: require('./vendor/loglevel'),\n    LocalAudioTrack: require('./media/track/es5').LocalAudioTrack,\n    LocalDataTrack: require('./media/track/es5').LocalDataTrack,\n    LocalVideoTrack: require('./media/track/es5').LocalVideoTrack\n};\nfunction connect(token, options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.connect(token, internalOptions);\n}\nfunction createLocalAudioTrack(options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.createLocalAudioTrack(internalOptions);\n}\nfunction createLocalVideoTrack(options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.createLocalVideoTrack(internalOptions);\n}\n/**\n * @module twilio-video\n * @property {boolean} isSupported - true if the current browser is officially\n *   supported by twilio-video.js; In this context, \"supported\" means that\n *   twilio-video.js has been extensively tested with this browser; This\n *   <a href=\"https://www.twilio.com/docs/video/javascript#supported-browsers\" target=\"_blank\">table</a>\n *   specifies the list of officially supported browsers.\n *\n * @property {object} Logger - The <a href=\"https://www.npmjs.com/package/loglevel\" target=\"_blank\">loglevel</a>\n *    module used by the SDK. Use this object to access the internal loggers and perform actions as defined by the\n *   <a href=\"https://www.npmjs.com/package/loglevel\" target=\"_blank\">loglevel</a> APIs.\n *   See [connect](#.connect) for examples.\n *\n * @property {string} version - current version of twilio-video.js.\n */\nvar isSupported = internals.isSupported;\nvar version = internals.version;\nvar Logger = internals.Logger;\nvar LocalAudioTrack = internals.LocalAudioTrack;\nvar LocalVideoTrack = internals.LocalVideoTrack;\nvar LocalDataTrack = internals.LocalDataTrack;\nmodule.exports = {\n    connect: connect,\n    createLocalAudioTrack: createLocalAudioTrack,\n    createLocalVideoTrack: createLocalVideoTrack,\n    createLocalTracks: createlocaltracks_1.createLocalTracks,\n    runPreflight: preflighttest_1.runPreflight,\n    isSupported: isSupported,\n    version: version,\n    Logger: Logger,\n    LocalAudioTrack: LocalAudioTrack,\n    LocalVideoTrack: LocalVideoTrack,\n    LocalDataTrack: LocalDataTrack,\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.default = pick;\n// source taken from https://github.com/rackt/redux/blob/master/src/utils/pick.js\n\nfunction pick(obj, fn) {\n  return Object.keys(obj).reduce(function (result, key) {\n    if (fn(obj[key])) {\n      result[key] = obj[key]; // eslint-disable-line\n    }\n    return result;\n  }, {});\n}","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                  ? wordKey[1]\n                  : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteDataTrackPublication} represents a {@link RemoteDataTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"data\"\n * @property {?RemoteDataTrack} track - unless you have subscribed to the\n *   {@link RemoteDataTrack}, this property is null\n * @emits RemoteDataTrackPublication#subscribed\n * @emits RemoteDataTrackPublication#subscriptionFailed\n * @emits RemoteDataTrackPublication#unsubscribed\n */\nvar RemoteDataTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteDataTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteDataTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteDataTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteDataTrackPublication.prototype.toString = function () {\n        return \"[RemoteDataTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return RemoteDataTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was subscribed to\n * @event RemoteDataTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteDataTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteDataTrack} could not be\n *   subscribed to\n * @event RemoteDataTrackPublication#subscriptionFailed\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was unsubscribed from\n * @event RemoteDataTrackPublication#unsubscribed\n */\nmodule.exports = RemoteDataTrackPublication;\n//# sourceMappingURL=remotedatatrackpublication.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nrequire('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar util = require('./util');\n/**\n * {@link StateMachine} represents a state machine. The state machine supports a\n * reentrant locking mechanism to allow asynchronous state transitions to ensure\n * they have not been preempted. Calls to {@link StateMachine#takeLock} are\n * guaranteed to be resolved in FIFO order.\n * @extends EventEmitter\n * @property {boolean} isLocked - whether or not the {@link StateMachine} is\n *   locked performing asynchronous state transition\n * @property {string} state - the current state\n * @emits {@link StateMachine#stateChanged}\n */\nvar StateMachine = /** @class */ (function (_super) {\n    __extends(StateMachine, _super);\n    /**\n     * Construct a {@link StateMachine}.\n     * @param {string} initialState - the intiial state\n     * @param {object} states\n     */\n    function StateMachine(initialState, states) {\n        var _this = _super.call(this) || this;\n        var lock = null;\n        var state = initialState;\n        states = transformStates(states);\n        Object.defineProperties(_this, {\n            _lock: {\n                get: function () {\n                    return lock;\n                },\n                set: function (_lock) {\n                    lock = _lock;\n                }\n            },\n            _reachableStates: {\n                value: reachable(states)\n            },\n            _state: {\n                get: function () {\n                    return state;\n                },\n                set: function (_state) {\n                    state = _state;\n                }\n            },\n            _states: {\n                value: states\n            },\n            _whenDeferreds: {\n                value: new Set()\n            },\n            isLocked: {\n                enumerable: true,\n                get: function () {\n                    return lock !== null;\n                }\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return state;\n                }\n            }\n        });\n        _this.on('stateChanged', function (state) {\n            _this._whenDeferreds.forEach(function (deferred) {\n                deferred.when(state, deferred.resolve, deferred.reject);\n            });\n        });\n        return _this;\n    }\n    /**\n     * Returns a promise whose executor function is called on each state change.\n     * @param {function(state: string, resolve: function, reject: function): void} when\n     * @returns {Promise.<*>}\n     * @private\n     */\n    StateMachine.prototype._whenPromise = function (when) {\n        var _this = this;\n        if (typeof when !== 'function') {\n            return Promise.reject(new Error('when() executor must be a function'));\n        }\n        var deferred = util.defer();\n        deferred.when = when;\n        this._whenDeferreds.add(deferred);\n        return deferred.promise.then(function (payload) {\n            _this._whenDeferreds.delete(deferred);\n            return payload;\n        }, function (error) {\n            _this._whenDeferreds.delete(deferred);\n            throw error;\n        });\n    };\n    /**\n     * This method takes a lock and passes the {@link StateMachine#Key} to your\n     * transition function. You may perform zero or more state transitions in your\n     * transition function, but you should check for preemption in each tick. You\n     * may also reenter the lock. Once the Promise returned by your transition\n     * function resolves or rejects, this method releases the lock it acquired for\n     * you.\n     * @param {string} name - a name for the lock\n     * @param {function(StateMachine#Key): Promise} transitionFunction\n     * @returns {Promise}\n     */\n    // NOTE(mroberts): This method is named after a Haskell function:\n    // https://hackage.haskell.org/package/base-4.8.2.0/docs/Control-Exception.html#v:bracket\n    StateMachine.prototype.bracket = function (name, transitionFunction) {\n        var key;\n        var self = this;\n        function releaseLock(error) {\n            if (self.hasLock(key)) {\n                self.releaseLockCompletely(key);\n            }\n            if (error) {\n                throw error;\n            }\n        }\n        return this.takeLock(name).then(function gotKey(_key) {\n            key = _key;\n            return transitionFunction(key);\n        }).then(function success(result) {\n            releaseLock();\n            return result;\n        }, releaseLock);\n    };\n    /**\n     * Check whether or not a {@link StateMachine#Key} matches the lock.\n     * @param {StateMachine#Key} key\n     * @returns {boolean}\n     */\n    StateMachine.prototype.hasLock = function (key) {\n        return this._lock === key;\n    };\n    /**\n     * Preempt any pending state transitions and immediately transition to the new\n     * state. If a lock name is specified, take the lock and return the\n     * {@link StateMachine#Key}.\n     * @param {string} newState\n     * @param {?string} [name=null] - a name for the lock\n     * @param {Array<*>} [payload=[]]\n     * @returns {?StateMachine#Key}\n     */\n    StateMachine.prototype.preempt = function (newState, name, payload) {\n        // 1. Check that the new state is valid.\n        if (!isValidTransition(this._states, this.state, newState)) {\n            throw new Error(\"Cannot transition from \\\"\" + this.state + \"\\\" to \\\"\" + newState + \"\\\"\");\n        }\n        // 2. Release the old lock, if any.\n        var oldLock;\n        if (this.isLocked) {\n            oldLock = this._lock;\n            this._lock = null;\n        }\n        // 3. Take the lock, if requested.\n        var key = null;\n        if (name) {\n            key = this.takeLockSync(name);\n        }\n        // 4. If a lock wasn't requested, take a \"preemption\" lock in order to\n        // maintain FIFO order of those taking locks.\n        var preemptionKey = key ? null : this.takeLockSync('preemption');\n        // 5. Transition.\n        this.transition(newState, key || preemptionKey, payload);\n        // 6. Preempt anyone blocked on the old lock.\n        if (oldLock) {\n            oldLock.resolve();\n        }\n        // 7. Release the \"preemption\" lock, if we took it.\n        if (preemptionKey) {\n            this.releaseLock(preemptionKey);\n        }\n        return key;\n    };\n    /**\n     * Release a lock. This method succeeds only if the {@link StateMachine} is\n     * still locked and has not been preempted.\n     * @param {StateMachine#Key} key\n     * @throws Error\n     */\n    StateMachine.prototype.releaseLock = function (key) {\n        if (!this.isLocked) {\n            throw new Error(\"Could not release the lock for \" + key.name + \" because the StateMachine is not locked\");\n        }\n        else if (!this.hasLock(key)) {\n            throw new Error(\"Could not release the lock for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n        }\n        if (key.depth === 0) {\n            this._lock = null;\n            key.resolve();\n        }\n        else {\n            key.depth--;\n        }\n    };\n    /**\n     * Release a lock completely, even if it has been reentered. This method\n     * succeeds only if the {@link StateMachine} is still locked and has not been\n     * preempted.\n     * @param {StateMachine#Key} key\n     * @throws Error\n     */\n    StateMachine.prototype.releaseLockCompletely = function (key) {\n        if (!this.isLocked) {\n            throw new Error(\"Could not release the lock for \" + key.name + \" because the StateMachine is not locked\");\n        }\n        else if (!this.hasLock(key)) {\n            throw new Error(\"Could not release the lock for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n        }\n        key.depth = 0;\n        this._lock = null;\n        key.resolve();\n    };\n    /**\n     * Take a lock, returning a Promise for the {@link StateMachine#Key}. You should\n     * take a lock anytime you intend to perform asynchronous transitions. Calls to\n     * this method are guaranteed to be resolved in FIFO order. You may reenter\n     * a lock by passing its {@link StateMachine#Key}.\n     * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n     * existing {@link StateMachine#Key}\n     * @returns {Promise<object>}\n     */\n    StateMachine.prototype.takeLock = function (nameOrKey) {\n        var _this = this;\n        // Reentrant lock\n        if (typeof nameOrKey === 'object') {\n            var key_1 = nameOrKey;\n            return new Promise(function (resolve) {\n                resolve(_this.takeLockSync(key_1));\n            });\n        }\n        // New lock\n        var name = nameOrKey;\n        if (this.isLocked) {\n            var takeLock = this.takeLock.bind(this, name);\n            return this._lock.promise.then(takeLock);\n        }\n        return Promise.resolve(this.takeLockSync(name));\n    };\n    /**\n     * Take a lock, returning the {@Link StateMachine#Key}. This method throws if\n     * the {@link StateMachine} is locked or the wrong {@link StateMachine#Key} is\n     * provided. You may reenter a lock by passing its {@link StateMachine#Key}.\n     * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n     * existing {@link StateMachine#Key}\n     * @returns {object}\n     * @throws Error\n     */\n    StateMachine.prototype.takeLockSync = function (nameOrKey) {\n        var key = typeof nameOrKey === 'string' ? null : nameOrKey;\n        var name = key ? key.name : nameOrKey;\n        if (key && !this.hasLock(key) || !key && this.isLocked) {\n            throw new Error(\"Could not take the lock for \" + name + \" because the lock for \" + this._lock.name + \" was not released\");\n        }\n        // Reentrant lock\n        if (key) {\n            key.depth++;\n            return key;\n        }\n        // New lock\n        var lock = makeLock(name);\n        this._lock = lock;\n        return lock;\n    };\n    /**\n     * Transition to a new state. If the {@link StateMachine} is locked, you must\n     * provide the {@link StateMachine#Key}. An invalid state or the wrong\n     * {@link StateMachine#Key} will throw an error.\n     * @param {string} newState\n     * @param {?StateMachine#Key} [key=null]\n     * @param {Array<*>} [payload=[]]\n     * @throws {Error}\n     */\n    StateMachine.prototype.transition = function (newState, key, payload) {\n        payload = payload || [];\n        // 1. If we're locked, required the key.\n        if (this.isLocked) {\n            if (!key) {\n                throw new Error('You must provide the key in order to ' +\n                    'transition');\n            }\n            else if (!this.hasLock(key)) {\n                throw new Error(\"Could not transition using the key for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n            }\n        }\n        else if (key) {\n            throw new Error(\"Key provided for \" + key.name + \", but the StateMachine was not locked (possibly due to preemption)\");\n        }\n        // 2. Check that the new state is valid.\n        if (!isValidTransition(this._states, this.state, newState)) {\n            throw new Error(\"Cannot transition from \\\"\" + this.state + \"\\\" to \\\"\" + newState + \"\\\"\");\n        }\n        // 3. Update the state and emit an event.\n        this._state = newState;\n        this.emit.apply(this, __spreadArray([], __read(['stateChanged', newState].concat(payload))));\n    };\n    /**\n     * Attempt to transition to a new state. Unlike {@link StateMachine#transition},\n     * this method does not throw.\n     * @param {string} newState\n     * @param {?StateMachine#Key} [key=null]\n     * @param {Array<*>} [payload=[]]\n     * @returns {boolean}\n     */\n    StateMachine.prototype.tryTransition = function (newState, key, payload) {\n        try {\n            this.transition(newState, key, payload);\n        }\n        catch (error) {\n            return false;\n        }\n        return true;\n    };\n    /**\n     * Return a Promise that resolves when the {@link StateMachine} transitions to\n     * the specified state. If the {@link StateMachine} transitions such that the\n     * requested state becomes unreachable, the Promise rejects.\n     * @param {string} state\n     * @returns {Promise<this>}\n     */\n    StateMachine.prototype.when = function (state) {\n        var _this = this;\n        if (this.state === state) {\n            return Promise.resolve(this);\n        }\n        else if (!isValidTransition(this._reachableStates, this.state, state)) {\n            return Promise.reject(createUnreachableError(this.state, state));\n        }\n        return this._whenPromise(function (newState, resolve, reject) {\n            if (newState === state) {\n                resolve(_this);\n            }\n            else if (!isValidTransition(_this._reachableStates, newState, state)) {\n                reject(createUnreachableError(newState, state));\n            }\n        });\n    };\n    return StateMachine;\n}(EventEmitter));\n/**\n * @event StateMachine#stateChanged\n * @param {string} newState\n */\n/**\n * Check if a transition is valid.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {*} to\n * @returns {boolean}\n */\nfunction isValidTransition(graph, from, to) {\n    return graph.get(from).has(to);\n}\n/**\n * @typedef {object} StateMachine#Key\n */\nfunction makeLock(name) {\n    var lock = util.defer();\n    lock.name = name;\n    lock.depth = 0;\n    return lock;\n}\n/**\n * Compute the transitive closure of a graph (i.e. what nodes are reachable from\n * where).\n * @private\n * @param {Map<*, Set<*>>} graph\n * @returns {Map<*, Set<*>>}\n */\nfunction reachable(graph) {\n    return Array.from(graph.keys()).reduce(function (newGraph, from) { return newGraph.set(from, reachableFrom(graph, from)); }, new Map());\n}\n/**\n * Compute the Set of node reachable from a particular node in the graph.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {Set<*>} [to]\n * @returns {Set<*>}\n */\nfunction reachableFrom(graph, from, to) {\n    to = to || new Set();\n    graph.get(from).forEach(function (node) {\n        if (!to.has(node)) {\n            to.add(node);\n            reachableFrom(graph, node, to).forEach(to.add, to);\n        }\n    });\n    return to;\n}\nfunction transformStates(states) {\n    var newStates = new Map();\n    for (var key in states) {\n        newStates.set(key, new Set(states[key]));\n    }\n    return newStates;\n}\n/**\n * Create an \"unreachable state\" Error.\n * @param {string} here\n * @param {string} there\n * @returns {Error}\n */\nfunction createUnreachableError(here, there) {\n    return new Error(\"\\\"\" + there + \"\\\" cannot be reached from \\\"\" + here + \"\\\"\");\n}\nmodule.exports = StateMachine;\n//# sourceMappingURL=statemachine.js.map","/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common/common\");\nvar strings_1 = require(\"../common/strings\");\nvar hof_1 = require(\"../common/hof\");\nvar RejectType;\n(function (RejectType) {\n    RejectType[RejectType[\"SUPERSEDED\"] = 2] = \"SUPERSEDED\";\n    RejectType[RejectType[\"ABORTED\"] = 3] = \"ABORTED\";\n    RejectType[RejectType[\"INVALID\"] = 4] = \"INVALID\";\n    RejectType[RejectType[\"IGNORED\"] = 5] = \"IGNORED\";\n    RejectType[RejectType[\"ERROR\"] = 6] = \"ERROR\";\n})(RejectType = exports.RejectType || (exports.RejectType = {}));\n/** @hidden */\nvar id = 0;\nvar Rejection = /** @class */ (function () {\n    function Rejection(type, message, detail) {\n        this.$id = id++;\n        this.type = type;\n        this.message = message;\n        this.detail = detail;\n    }\n    /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n    Rejection.isRejectionPromise = function (obj) {\n        return obj && (typeof obj.then === 'function') && hof_1.is(Rejection)(obj._transitionRejection);\n    };\n    /** Returns a Rejection due to transition superseded */\n    Rejection.superseded = function (detail, options) {\n        var message = 'The transition has been superseded by a different transition';\n        var rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n        if (options && options.redirected) {\n            rejection.redirected = true;\n        }\n        return rejection;\n    };\n    /** Returns a Rejection due to redirected transition */\n    Rejection.redirected = function (detail) {\n        return Rejection.superseded(detail, { redirected: true });\n    };\n    /** Returns a Rejection due to invalid transition */\n    Rejection.invalid = function (detail) {\n        var message = 'This transition is invalid';\n        return new Rejection(RejectType.INVALID, message, detail);\n    };\n    /** Returns a Rejection due to ignored transition */\n    Rejection.ignored = function (detail) {\n        var message = 'The transition was ignored';\n        return new Rejection(RejectType.IGNORED, message, detail);\n    };\n    /** Returns a Rejection due to aborted transition */\n    Rejection.aborted = function (detail) {\n        var message = 'The transition has been aborted';\n        return new Rejection(RejectType.ABORTED, message, detail);\n    };\n    /** Returns a Rejection due to aborted transition */\n    Rejection.errored = function (detail) {\n        var message = 'The transition errored';\n        return new Rejection(RejectType.ERROR, message, detail);\n    };\n    /**\n     * Returns a Rejection\n     *\n     * Normalizes a value as a Rejection.\n     * If the value is already a Rejection, returns it.\n     * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n     *\n     * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n     */\n    Rejection.normalize = function (detail) {\n        return hof_1.is(Rejection)(detail) ? detail : Rejection.errored(detail);\n    };\n    Rejection.prototype.toString = function () {\n        var detailString = function (d) {\n            return d && d.toString !== Object.prototype.toString ? d.toString() : strings_1.stringify(d);\n        };\n        var detail = detailString(this.detail);\n        var _a = this, $id = _a.$id, type = _a.type, message = _a.message;\n        return \"Transition Rejection($id: \" + $id + \" type: \" + type + \", message: \" + message + \", detail: \" + detail + \")\";\n    };\n    Rejection.prototype.toPromise = function () {\n        return common_1.extend(common_1.silentRejection(this), { _transitionRejection: this });\n    };\n    return Rejection;\n}());\nexports.Rejection = Rejection;\n//# sourceMappingURL=rejectFactory.js.map","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt !== $parseInt }, {\n  parseInt: $parseInt\n});\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildLoadSegmentationStage = void 0;\nvar segmentationHelper_1 = require(\"../helpers/segmentationHelper\");\nvar webglHelper_1 = require(\"../helpers/webglHelper\");\nfunction buildLoadSegmentationStage(gl, vertexShader, positionBuffer, texCoordBuffer, segmentationConfig, outputTexture) {\n    var fragmentShaderSource = (0, webglHelper_1.glsl)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputSegmentation;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    void main() {\\n      float segmentation = texture(u_inputSegmentation, v_texCoord).a;\\n      outColor = vec4(vec3(0.0), segmentation);\\n    }\\n  \"], [\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputSegmentation;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    void main() {\\n      float segmentation = texture(u_inputSegmentation, v_texCoord).a;\\n      outColor = vec4(vec3(0.0), segmentation);\\n    }\\n  \"])));\n    var _a = segmentationHelper_1.inputResolutions[segmentationConfig.inputResolution], segmentationWidth = _a[0], segmentationHeight = _a[1];\n    var fragmentShader = (0, webglHelper_1.compileShader)(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n    var program = (0, webglHelper_1.createPiplelineStageProgram)(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer);\n    var inputLocation = gl.getUniformLocation(program, 'u_inputSegmentation');\n    var inputTexture = (0, webglHelper_1.createTexture)(gl, gl.RGBA8, segmentationWidth, segmentationHeight);\n    var frameBuffer = gl.createFramebuffer();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, outputTexture, 0);\n    gl.useProgram(program);\n    gl.uniform1i(inputLocation, 1);\n    function render(segmentationData) {\n        gl.viewport(0, 0, segmentationWidth, segmentationHeight);\n        gl.useProgram(program);\n        gl.activeTexture(gl.TEXTURE1);\n        gl.bindTexture(gl.TEXTURE_2D, inputTexture);\n        gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, segmentationWidth, segmentationHeight, gl.RGBA, gl.UNSIGNED_BYTE, segmentationData);\n        gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n        gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n    }\n    function cleanUp() {\n        gl.deleteFramebuffer(frameBuffer);\n        gl.deleteTexture(inputTexture);\n        gl.deleteProgram(program);\n        gl.deleteShader(fragmentShader);\n    }\n    return { render: render, cleanUp: cleanUp };\n}\nexports.buildLoadSegmentationStage = buildLoadSegmentationStage;\nvar templateObject_1;\n//# sourceMappingURL=loadSegmentationStage.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object}  options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string}  options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object}  options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var context = useContext(DropdownContext);\n\n  var _useCallbackRef = useCallbackRef(),\n      arrowElement = _useCallbackRef[0],\n      attachArrowRef = _useCallbackRef[1];\n\n  var hasShownRef = useRef(false);\n  var _options = options,\n      flip = _options.flip,\n      offset = _options.offset,\n      rootCloseEvent = _options.rootCloseEvent,\n      _options$popperConfig = _options.popperConfig,\n      popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n      _options$usePopper = _options.usePopper,\n      shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n  var show = (context == null ? void 0 : context.show) == null ? options.show : context.show;\n  var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n  if (show && !hasShownRef.current) {\n    hasShownRef.current = true;\n  }\n\n  var handleClose = function handleClose(e) {\n    context == null ? void 0 : context.toggle(false, e);\n  };\n\n  var _ref = context || {},\n      drop = _ref.drop,\n      setMenu = _ref.setMenu,\n      menuElement = _ref.menuElement,\n      toggleElement = _ref.toggleElement;\n\n  var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n  if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n\n  var _usePopper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n    placement: placement,\n    enabled: !!(shouldUsePopper && show),\n    enableEvents: show,\n    offset: offset,\n    flip: flip,\n    arrowElement: arrowElement,\n    popperConfig: popperConfig\n  })),\n      styles = _usePopper.styles,\n      attributes = _usePopper.attributes,\n      popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n  var menu;\n  var menuProps = {\n    ref: setMenu || noop,\n    'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n  };\n  var childArgs = {\n    show: show,\n    alignEnd: alignEnd,\n    hasShown: hasShownRef.current,\n    close: handleClose\n  };\n\n  if (!shouldUsePopper) {\n    menu = _extends({}, childArgs, {\n      props: menuProps\n    });\n  } else {\n    menu = _extends({}, popper, childArgs, {\n      props: _extends({}, menuProps, attributes.popper, {\n        style: styles.popper\n      }),\n      arrowProps: _extends({\n        ref: attachArrowRef\n      }, attributes.arrow, {\n        style: styles.arrow\n      })\n    });\n  }\n\n  useRootClose(menuElement, handleClose, {\n    clickTrigger: rootCloseEvent,\n    disabled: !(menu && show)\n  });\n  return menu;\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   update: () => void,\n   *   forceUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: PropTypes.bool,\n  usePopper: PropTypes.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: PropTypes.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n  usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n  var children = _ref2.children,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n  var args = useDropdownMenu(options);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, args.hasShown ? children(args) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.polygonClipping = factory());\n})(this, (function () { 'use strict';\n\n    /**\n     * splaytree v3.1.2\n     * Fast Splay tree for Node and browser\n     *\n     * @author Alexander Milevski <info@w8r.name>\n     * @license MIT\n     * @preserve\n     */\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\n\n    function __generator(thisArg, body) {\n      var _ = {\n          label: 0,\n          sent: function () {\n            if (t[0] & 1) throw t[1];\n            return t[1];\n          },\n          trys: [],\n          ops: []\n        },\n        f,\n        y,\n        t,\n        g;\n      return g = {\n        next: verb(0),\n        \"throw\": verb(1),\n        \"return\": verb(2)\n      }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n        return this;\n      }), g;\n      function verb(n) {\n        return function (v) {\n          return step([n, v]);\n        };\n      }\n      function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n            case 0:\n            case 1:\n              t = op;\n              break;\n            case 4:\n              _.label++;\n              return {\n                value: op[1],\n                done: false\n              };\n            case 5:\n              _.label++;\n              y = op[1];\n              op = [0];\n              continue;\n            case 7:\n              op = _.ops.pop();\n              _.trys.pop();\n              continue;\n            default:\n              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n                _ = 0;\n                continue;\n              }\n              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n                _.label = op[1];\n                break;\n              }\n              if (op[0] === 6 && _.label < t[1]) {\n                _.label = t[1];\n                t = op;\n                break;\n              }\n              if (t && _.label < t[2]) {\n                _.label = t[2];\n                _.ops.push(op);\n                break;\n              }\n              if (t[2]) _.ops.pop();\n              _.trys.pop();\n              continue;\n          }\n          op = body.call(thisArg, _);\n        } catch (e) {\n          op = [6, e];\n          y = 0;\n        } finally {\n          f = t = 0;\n        }\n        if (op[0] & 5) throw op[1];\n        return {\n          value: op[0] ? op[1] : void 0,\n          done: true\n        };\n      }\n    }\n    var Node = /** @class */function () {\n      function Node(key, data) {\n        this.next = null;\n        this.key = key;\n        this.data = data;\n        this.left = null;\n        this.right = null;\n      }\n      return Node;\n    }();\n\n    /* follows \"An implementation of top-down splaying\"\r\n     * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n     */\n    function DEFAULT_COMPARE(a, b) {\n      return a > b ? 1 : a < b ? -1 : 0;\n    }\n    /**\r\n     * Simple top down splay, not requiring i to be in the tree t.\r\n     */\n    function splay(i, t, comparator) {\n      var N = new Node(null, null);\n      var l = N;\n      var r = N;\n      while (true) {\n        var cmp = comparator(i, t.key);\n        //if (i < t.key) {\n        if (cmp < 0) {\n          if (t.left === null) break;\n          //if (i < t.left.key) {\n          if (comparator(i, t.left.key) < 0) {\n            var y = t.left; /* rotate right */\n            t.left = y.right;\n            y.right = t;\n            t = y;\n            if (t.left === null) break;\n          }\n          r.left = t; /* link right */\n          r = t;\n          t = t.left;\n          //} else if (i > t.key) {\n        } else if (cmp > 0) {\n          if (t.right === null) break;\n          //if (i > t.right.key) {\n          if (comparator(i, t.right.key) > 0) {\n            var y = t.right; /* rotate left */\n            t.right = y.left;\n            y.left = t;\n            t = y;\n            if (t.right === null) break;\n          }\n          l.right = t; /* link left */\n          l = t;\n          t = t.right;\n        } else break;\n      }\n      /* assemble */\n      l.right = t.left;\n      r.left = t.right;\n      t.left = N.right;\n      t.right = N.left;\n      return t;\n    }\n    function insert(i, data, t, comparator) {\n      var node = new Node(i, data);\n      if (t === null) {\n        node.left = node.right = null;\n        return node;\n      }\n      t = splay(i, t, comparator);\n      var cmp = comparator(i, t.key);\n      if (cmp < 0) {\n        node.left = t.left;\n        node.right = t;\n        t.left = null;\n      } else if (cmp >= 0) {\n        node.right = t.right;\n        node.left = t;\n        t.right = null;\n      }\n      return node;\n    }\n    function split(key, v, comparator) {\n      var left = null;\n      var right = null;\n      if (v) {\n        v = splay(key, v, comparator);\n        var cmp = comparator(v.key, key);\n        if (cmp === 0) {\n          left = v.left;\n          right = v.right;\n        } else if (cmp < 0) {\n          right = v.right;\n          v.right = null;\n          left = v;\n        } else {\n          left = v.left;\n          v.left = null;\n          right = v;\n        }\n      }\n      return {\n        left: left,\n        right: right\n      };\n    }\n    function merge(left, right, comparator) {\n      if (right === null) return left;\n      if (left === null) return right;\n      right = splay(left.key, right, comparator);\n      right.left = left;\n      return right;\n    }\n    /**\r\n     * Prints level of the tree\r\n     */\n    function printRow(root, prefix, isTail, out, printNode) {\n      if (root) {\n        out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\n        var indent = prefix + (isTail ? '    ' : '│   ');\n        if (root.left) printRow(root.left, indent, false, out, printNode);\n        if (root.right) printRow(root.right, indent, true, out, printNode);\n      }\n    }\n    var Tree = /** @class */function () {\n      function Tree(comparator) {\n        if (comparator === void 0) {\n          comparator = DEFAULT_COMPARE;\n        }\n        this._root = null;\n        this._size = 0;\n        this._comparator = comparator;\n      }\n      /**\r\n       * Inserts a key, allows duplicates\r\n       */\n      Tree.prototype.insert = function (key, data) {\n        this._size++;\n        return this._root = insert(key, data, this._root, this._comparator);\n      };\n      /**\r\n       * Adds a key, if it is not present in the tree\r\n       */\n      Tree.prototype.add = function (key, data) {\n        var node = new Node(key, data);\n        if (this._root === null) {\n          node.left = node.right = null;\n          this._size++;\n          this._root = node;\n        }\n        var comparator = this._comparator;\n        var t = splay(key, this._root, comparator);\n        var cmp = comparator(key, t.key);\n        if (cmp === 0) this._root = t;else {\n          if (cmp < 0) {\n            node.left = t.left;\n            node.right = t;\n            t.left = null;\n          } else if (cmp > 0) {\n            node.right = t.right;\n            node.left = t;\n            t.right = null;\n          }\n          this._size++;\n          this._root = node;\n        }\n        return this._root;\n      };\n      /**\r\n       * @param  {Key} key\r\n       * @return {Node|null}\r\n       */\n      Tree.prototype.remove = function (key) {\n        this._root = this._remove(key, this._root, this._comparator);\n      };\n      /**\r\n       * Deletes i from the tree if it's there\r\n       */\n      Tree.prototype._remove = function (i, t, comparator) {\n        var x;\n        if (t === null) return null;\n        t = splay(i, t, comparator);\n        var cmp = comparator(i, t.key);\n        if (cmp === 0) {\n          /* found it */\n          if (t.left === null) {\n            x = t.right;\n          } else {\n            x = splay(i, t.left, comparator);\n            x.right = t.right;\n          }\n          this._size--;\n          return x;\n        }\n        return t; /* It wasn't there */\n      };\n      /**\r\n       * Removes and returns the node with smallest key\r\n       */\n      Tree.prototype.pop = function () {\n        var node = this._root;\n        if (node) {\n          while (node.left) node = node.left;\n          this._root = splay(node.key, this._root, this._comparator);\n          this._root = this._remove(node.key, this._root, this._comparator);\n          return {\n            key: node.key,\n            data: node.data\n          };\n        }\n        return null;\n      };\n      /**\r\n       * Find without splaying\r\n       */\n      Tree.prototype.findStatic = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return current;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return null;\n      };\n      Tree.prototype.find = function (key) {\n        if (this._root) {\n          this._root = splay(key, this._root, this._comparator);\n          if (this._comparator(key, this._root.key) !== 0) return null;\n        }\n        return this._root;\n      };\n      Tree.prototype.contains = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return true;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return false;\n      };\n      Tree.prototype.forEach = function (visitor, ctx) {\n        var current = this._root;\n        var Q = []; /* Initialize stack s */\n        var done = false;\n        while (!done) {\n          if (current !== null) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length !== 0) {\n              current = Q.pop();\n              visitor.call(ctx, current);\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n       */\n      Tree.prototype.range = function (low, high, fn, ctx) {\n        var Q = [];\n        var compare = this._comparator;\n        var node = this._root;\n        var cmp;\n        while (Q.length !== 0 || node) {\n          if (node) {\n            Q.push(node);\n            node = node.left;\n          } else {\n            node = Q.pop();\n            cmp = compare(node.key, high);\n            if (cmp > 0) {\n              break;\n            } else if (compare(node.key, low) >= 0) {\n              if (fn.call(ctx, node)) return this; // stop if smth is returned\n            }\n            node = node.right;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Returns array of keys\r\n       */\n      Tree.prototype.keys = function () {\n        var keys = [];\n        this.forEach(function (_a) {\n          var key = _a.key;\n          return keys.push(key);\n        });\n        return keys;\n      };\n      /**\r\n       * Returns array of all the data in the nodes\r\n       */\n      Tree.prototype.values = function () {\n        var values = [];\n        this.forEach(function (_a) {\n          var data = _a.data;\n          return values.push(data);\n        });\n        return values;\n      };\n      Tree.prototype.min = function () {\n        if (this._root) return this.minNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.max = function () {\n        if (this._root) return this.maxNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.minNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.left) t = t.left;\n        return t;\n      };\n      Tree.prototype.maxNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.right) t = t.right;\n        return t;\n      };\n      /**\r\n       * Returns node at given index\r\n       */\n      Tree.prototype.at = function (index) {\n        var current = this._root;\n        var done = false;\n        var i = 0;\n        var Q = [];\n        while (!done) {\n          if (current) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length > 0) {\n              current = Q.pop();\n              if (i === index) return current;\n              i++;\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return null;\n      };\n      Tree.prototype.next = function (d) {\n        var root = this._root;\n        var successor = null;\n        if (d.right) {\n          successor = d.right;\n          while (successor.left) successor = successor.left;\n          return successor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) {\n            successor = root;\n            root = root.left;\n          } else root = root.right;\n        }\n        return successor;\n      };\n      Tree.prototype.prev = function (d) {\n        var root = this._root;\n        var predecessor = null;\n        if (d.left !== null) {\n          predecessor = d.left;\n          while (predecessor.right) predecessor = predecessor.right;\n          return predecessor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) root = root.left;else {\n            predecessor = root;\n            root = root.right;\n          }\n        }\n        return predecessor;\n      };\n      Tree.prototype.clear = function () {\n        this._root = null;\n        this._size = 0;\n        return this;\n      };\n      Tree.prototype.toList = function () {\n        return toList(this._root);\n      };\n      /**\r\n       * Bulk-load items. Both array have to be same size\r\n       */\n      Tree.prototype.load = function (keys, values, presort) {\n        if (values === void 0) {\n          values = [];\n        }\n        if (presort === void 0) {\n          presort = false;\n        }\n        var size = keys.length;\n        var comparator = this._comparator;\n        // sort if needed\n        if (presort) sort(keys, values, 0, size - 1, comparator);\n        if (this._root === null) {\n          // empty tree\n          this._root = loadRecursive(keys, values, 0, size);\n          this._size = size;\n        } else {\n          // that re-builds the whole tree from two in-order traversals\n          var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\n          size = this._size + size;\n          this._root = sortedListToBST({\n            head: mergedList\n          }, 0, size);\n        }\n        return this;\n      };\n      Tree.prototype.isEmpty = function () {\n        return this._root === null;\n      };\n      Object.defineProperty(Tree.prototype, \"size\", {\n        get: function () {\n          return this._size;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Object.defineProperty(Tree.prototype, \"root\", {\n        get: function () {\n          return this._root;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Tree.prototype.toString = function (printNode) {\n        if (printNode === void 0) {\n          printNode = function (n) {\n            return String(n.key);\n          };\n        }\n        var out = [];\n        printRow(this._root, '', true, function (v) {\n          return out.push(v);\n        }, printNode);\n        return out.join('');\n      };\n      Tree.prototype.update = function (key, newKey, newData) {\n        var comparator = this._comparator;\n        var _a = split(key, this._root, comparator),\n          left = _a.left,\n          right = _a.right;\n        if (comparator(key, newKey) < 0) {\n          right = insert(newKey, newData, right, comparator);\n        } else {\n          left = insert(newKey, newData, left, comparator);\n        }\n        this._root = merge(left, right, comparator);\n      };\n      Tree.prototype.split = function (key) {\n        return split(key, this._root, this._comparator);\n      };\n      Tree.prototype[Symbol.iterator] = function () {\n        var current, Q, done;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              current = this._root;\n              Q = [];\n              done = false;\n              _a.label = 1;\n            case 1:\n              if (!!done) return [3 /*break*/, 6];\n              if (!(current !== null)) return [3 /*break*/, 2];\n              Q.push(current);\n              current = current.left;\n              return [3 /*break*/, 5];\n            case 2:\n              if (!(Q.length !== 0)) return [3 /*break*/, 4];\n              current = Q.pop();\n              return [4 /*yield*/, current];\n            case 3:\n              _a.sent();\n              current = current.right;\n              return [3 /*break*/, 5];\n            case 4:\n              done = true;\n              _a.label = 5;\n            case 5:\n              return [3 /*break*/, 1];\n            case 6:\n              return [2 /*return*/];\n          }\n        });\n      };\n      return Tree;\n    }();\n    function loadRecursive(keys, values, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var key = keys[middle];\n        var data = values[middle];\n        var node = new Node(key, data);\n        node.left = loadRecursive(keys, values, start, middle);\n        node.right = loadRecursive(keys, values, middle + 1, end);\n        return node;\n      }\n      return null;\n    }\n    function createList(keys, values) {\n      var head = new Node(null, null);\n      var p = head;\n      for (var i = 0; i < keys.length; i++) {\n        p = p.next = new Node(keys[i], values[i]);\n      }\n      p.next = null;\n      return head.next;\n    }\n    function toList(root) {\n      var current = root;\n      var Q = [];\n      var done = false;\n      var head = new Node(null, null);\n      var p = head;\n      while (!done) {\n        if (current) {\n          Q.push(current);\n          current = current.left;\n        } else {\n          if (Q.length > 0) {\n            current = p = p.next = Q.pop();\n            current = current.right;\n          } else done = true;\n        }\n      }\n      p.next = null; // that'll work even if the tree was empty\n      return head.next;\n    }\n    function sortedListToBST(list, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var left = sortedListToBST(list, start, middle);\n        var root = list.head;\n        root.left = left;\n        list.head = list.head.next;\n        root.right = sortedListToBST(list, middle + 1, end);\n        return root;\n      }\n      return null;\n    }\n    function mergeLists(l1, l2, compare) {\n      var head = new Node(null, null); // dummy\n      var p = head;\n      var p1 = l1;\n      var p2 = l2;\n      while (p1 !== null && p2 !== null) {\n        if (compare(p1.key, p2.key) < 0) {\n          p.next = p1;\n          p1 = p1.next;\n        } else {\n          p.next = p2;\n          p2 = p2.next;\n        }\n        p = p.next;\n      }\n      if (p1 !== null) {\n        p.next = p1;\n      } else if (p2 !== null) {\n        p.next = p2;\n      }\n      return head.next;\n    }\n    function sort(keys, values, left, right, compare) {\n      if (left >= right) return;\n      var pivot = keys[left + right >> 1];\n      var i = left - 1;\n      var j = right + 1;\n      while (true) {\n        do i++; while (compare(keys[i], pivot) < 0);\n        do j--; while (compare(keys[j], pivot) > 0);\n        if (i >= j) break;\n        var tmp = keys[i];\n        keys[i] = keys[j];\n        keys[j] = tmp;\n        tmp = values[i];\n        values[i] = values[j];\n        values[j] = tmp;\n      }\n      sort(keys, values, left, j, compare);\n      sort(keys, values, j + 1, right, compare);\n    }\n\n    /**\n     * A bounding box has the format:\n     *\n     *  { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n     *\n     */\n\n    const isInBbox = (bbox, point) => {\n      return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n    };\n\n    /* Returns either null, or a bbox (aka an ordered pair of points)\n     * If there is only one point of overlap, a bbox with identical points\n     * will be returned */\n    const getBboxOverlap = (b1, b2) => {\n      // check if the bboxes overlap at all\n      if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n      // find the middle two X values\n      const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n      const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n      // find the middle two Y values\n      const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n      const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n      // put those middle values together to get the overlap\n      return {\n        ll: {\n          x: lowerX,\n          y: lowerY\n        },\n        ur: {\n          x: upperX,\n          y: upperY\n        }\n      };\n    };\n\n    /* Javascript doesn't do integer math. Everything is\n     * floating point with percision Number.EPSILON.\n     *\n     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n     */\n\n    let epsilon$1 = Number.EPSILON;\n\n    // IE Polyfill\n    if (epsilon$1 === undefined) epsilon$1 = Math.pow(2, -52);\n    const EPSILON_SQ = epsilon$1 * epsilon$1;\n\n    /* FLP comparator */\n    const cmp = (a, b) => {\n      // check if they're both 0\n      if (-epsilon$1 < a && a < epsilon$1) {\n        if (-epsilon$1 < b && b < epsilon$1) {\n          return 0;\n        }\n      }\n\n      // check if they're flp equal\n      const ab = a - b;\n      if (ab * ab < EPSILON_SQ * a * b) {\n        return 0;\n      }\n\n      // normal comparison\n      return a < b ? -1 : 1;\n    };\n\n    /**\n     * This class rounds incoming values sufficiently so that\n     * floating points problems are, for the most part, avoided.\n     *\n     * Incoming points are have their x & y values tested against\n     * all previously seen x & y values. If either is 'too close'\n     * to a previously seen value, it's value is 'snapped' to the\n     * previously seen value.\n     *\n     * All points should be rounded by this class before being\n     * stored in any data structures in the rest of this algorithm.\n     */\n\n    class PtRounder {\n      constructor() {\n        this.reset();\n      }\n      reset() {\n        this.xRounder = new CoordRounder();\n        this.yRounder = new CoordRounder();\n      }\n      round(x, y) {\n        return {\n          x: this.xRounder.round(x),\n          y: this.yRounder.round(y)\n        };\n      }\n    }\n    class CoordRounder {\n      constructor() {\n        this.tree = new Tree();\n        // preseed with 0 so we don't end up with values < Number.EPSILON\n        this.round(0);\n      }\n\n      // Note: this can rounds input values backwards or forwards.\n      //       You might ask, why not restrict this to just rounding\n      //       forwards? Wouldn't that allow left endpoints to always\n      //       remain left endpoints during splitting (never change to\n      //       right). No - it wouldn't, because we snap intersections\n      //       to endpoints (to establish independence from the segment\n      //       angle for t-intersections).\n      round(coord) {\n        const node = this.tree.add(coord);\n        const prevNode = this.tree.prev(node);\n        if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n          this.tree.remove(coord);\n          return prevNode.key;\n        }\n        const nextNode = this.tree.next(node);\n        if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n          this.tree.remove(coord);\n          return nextNode.key;\n        }\n        return coord;\n      }\n    }\n\n    // singleton available by import\n    const rounder = new PtRounder();\n\n    const epsilon = 1.1102230246251565e-16;\n    const splitter = 134217729;\n    const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n    // fast_expansion_sum_zeroelim routine from oritinal code\n    function sum(elen, e, flen, f, h) {\n      let Q, Qnew, hh, bvirt;\n      let enow = e[0];\n      let fnow = f[0];\n      let eindex = 0;\n      let findex = 0;\n      if (fnow > enow === fnow > -enow) {\n        Q = enow;\n        enow = e[++eindex];\n      } else {\n        Q = fnow;\n        fnow = f[++findex];\n      }\n      let hindex = 0;\n      if (eindex < elen && findex < flen) {\n        if (fnow > enow === fnow > -enow) {\n          Qnew = enow + Q;\n          hh = Q - (Qnew - enow);\n          enow = e[++eindex];\n        } else {\n          Qnew = fnow + Q;\n          hh = Q - (Qnew - fnow);\n          fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n          if (fnow > enow === fnow > -enow) {\n            Qnew = Q + enow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (enow - bvirt);\n            enow = e[++eindex];\n          } else {\n            Qnew = Q + fnow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n            fnow = f[++findex];\n          }\n          Q = Qnew;\n          if (hh !== 0) {\n            h[hindex++] = hh;\n          }\n        }\n      }\n      while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n      }\n      return hindex;\n    }\n    function estimate(elen, e) {\n      let Q = e[0];\n      for (let i = 1; i < elen; i++) Q += e[i];\n      return Q;\n    }\n    function vec(n) {\n      return new Float64Array(n);\n    }\n\n    const ccwerrboundA = (3 + 16 * epsilon) * epsilon;\n    const ccwerrboundB = (2 + 12 * epsilon) * epsilon;\n    const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n    const B = vec(4);\n    const C1 = vec(8);\n    const C2 = vec(12);\n    const D = vec(16);\n    const u = vec(4);\n    function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n      let acxtail, acytail, bcxtail, bcytail;\n      let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n      const acx = ax - cx;\n      const bcx = bx - cx;\n      const acy = ay - cy;\n      const bcy = by - cy;\n      s1 = acx * bcy;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcx;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      B[3] = u3;\n      let det = estimate(4, B);\n      let errbound = ccwerrboundB * detsum;\n      if (det >= errbound || -det >= errbound) {\n        return det;\n      }\n      bvirt = ax - acx;\n      acxtail = ax - (acx + bvirt) + (bvirt - cx);\n      bvirt = bx - bcx;\n      bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n      bvirt = ay - acy;\n      acytail = ay - (acy + bvirt) + (bvirt - cy);\n      bvirt = by - bcy;\n      bcytail = by - (bcy + bvirt) + (bvirt - cy);\n      if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n      }\n      errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n      det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n      if (det >= errbound || -det >= errbound) return det;\n      s1 = acxtail * bcy;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcx;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C1len = sum(4, B, 4, u, C1);\n      s1 = acx * bcytail;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcxtail;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C2len = sum(C1len, C1, 4, u, C2);\n      s1 = acxtail * bcytail;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcxtail;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const Dlen = sum(C2len, C2, 4, u, D);\n      return D[Dlen - 1];\n    }\n    function orient2d(ax, ay, bx, by, cx, cy) {\n      const detleft = (ay - cy) * (bx - cx);\n      const detright = (ax - cx) * (by - cy);\n      const det = detleft - detright;\n      const detsum = Math.abs(detleft + detright);\n      if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n      return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n    }\n\n    /* Cross Product of two vectors with first point at origin */\n    const crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n    /* Dot Product of two vectors with first point at origin */\n    const dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n    /* Comparator for two vectors with same starting point */\n    const compareVectorAngles = (basePt, endPt1, endPt2) => {\n      const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n      if (res > 0) return -1;\n      if (res < 0) return 1;\n      return 0;\n    };\n    const length = v => Math.sqrt(dotProduct(v, v));\n\n    /* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const sineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const cosineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the x coordinate where the given line (defined by a point and vector)\n     * crosses the horizontal line with the given y coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const horizontalIntersection = (pt, v, y) => {\n      if (v.y === 0) return null;\n      return {\n        x: pt.x + v.x / v.y * (y - pt.y),\n        y: y\n      };\n    };\n\n    /* Get the y coordinate where the given line (defined by a point and vector)\n     * crosses the vertical line with the given x coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const verticalIntersection = (pt, v, x) => {\n      if (v.x === 0) return null;\n      return {\n        x: x,\n        y: pt.y + v.y / v.x * (x - pt.x)\n      };\n    };\n\n    /* Get the intersection of two lines, each defined by a base point and a vector.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const intersection$1 = (pt1, v1, pt2, v2) => {\n      // take some shortcuts for vertical and horizontal lines\n      // this also ensures we don't calculate an intersection and then discover\n      // it's actually outside the bounding box of the line\n      if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n      if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n      if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n      if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n      // General case for non-overlapping segments.\n      // This algorithm is based on Schneider and Eberly.\n      // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n      const kross = crossProduct(v1, v2);\n      if (kross == 0) return null;\n      const ve = {\n        x: pt2.x - pt1.x,\n        y: pt2.y - pt1.y\n      };\n      const d1 = crossProduct(ve, v1) / kross;\n      const d2 = crossProduct(ve, v2) / kross;\n\n      // take the average of the two calculations to minimize rounding error\n      const x1 = pt1.x + d2 * v1.x,\n        x2 = pt2.x + d1 * v2.x;\n      const y1 = pt1.y + d2 * v1.y,\n        y2 = pt2.y + d1 * v2.y;\n      const x = (x1 + x2) / 2;\n      const y = (y1 + y2) / 2;\n      return {\n        x: x,\n        y: y\n      };\n    };\n\n    class SweepEvent {\n      // for ordering sweep events in the sweep event queue\n      static compare(a, b) {\n        // favor event with a point that the sweep line hits first\n        const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n        if (ptCmp !== 0) return ptCmp;\n\n        // the points are the same, so link them if needed\n        if (a.point !== b.point) a.link(b);\n\n        // favor right events over left\n        if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n        // we have two matching left or right endpoints\n        // ordering of this case is the same as for their segments\n        return Segment.compare(a.segment, b.segment);\n      }\n\n      // for ordering points in sweep line order\n      static comparePoints(aPt, bPt) {\n        if (aPt.x < bPt.x) return -1;\n        if (aPt.x > bPt.x) return 1;\n        if (aPt.y < bPt.y) return -1;\n        if (aPt.y > bPt.y) return 1;\n        return 0;\n      }\n\n      // Warning: 'point' input will be modified and re-used (for performance)\n      constructor(point, isLeft) {\n        if (point.events === undefined) point.events = [this];else point.events.push(this);\n        this.point = point;\n        this.isLeft = isLeft;\n        // this.segment, this.otherSE set by factory\n      }\n      link(other) {\n        if (other.point === this.point) {\n          throw new Error(\"Tried to link already linked events\");\n        }\n        const otherEvents = other.point.events;\n        for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n          const evt = otherEvents[i];\n          this.point.events.push(evt);\n          evt.point = this.point;\n        }\n        this.checkForConsuming();\n      }\n\n      /* Do a pass over our linked events and check to see if any pair\n       * of segments match, and should be consumed. */\n      checkForConsuming() {\n        // FIXME: The loops in this method run O(n^2) => no good.\n        //        Maintain little ordered sweep event trees?\n        //        Can we maintaining an ordering that avoids the need\n        //        for the re-sorting with getLeftmostComparator in geom-out?\n\n        // Compare each pair of events to see if other events also match\n        const numEvents = this.point.events.length;\n        for (let i = 0; i < numEvents; i++) {\n          const evt1 = this.point.events[i];\n          if (evt1.segment.consumedBy !== undefined) continue;\n          for (let j = i + 1; j < numEvents; j++) {\n            const evt2 = this.point.events[j];\n            if (evt2.consumedBy !== undefined) continue;\n            if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n            evt1.segment.consume(evt2.segment);\n          }\n        }\n      }\n      getAvailableLinkedEvents() {\n        // point.events is always of length 2 or greater\n        const events = [];\n        for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n          const evt = this.point.events[i];\n          if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n            events.push(evt);\n          }\n        }\n        return events;\n      }\n\n      /**\n       * Returns a comparator function for sorting linked events that will\n       * favor the event that will give us the smallest left-side angle.\n       * All ring construction starts as low as possible heading to the right,\n       * so by always turning left as sharp as possible we'll get polygons\n       * without uncessary loops & holes.\n       *\n       * The comparator function has a compute cache such that it avoids\n       * re-computing already-computed values.\n       */\n      getLeftmostComparator(baseEvent) {\n        const cache = new Map();\n        const fillCache = linkedEvent => {\n          const nextEvent = linkedEvent.otherSE;\n          cache.set(linkedEvent, {\n            sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n            cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n          });\n        };\n        return (a, b) => {\n          if (!cache.has(a)) fillCache(a);\n          if (!cache.has(b)) fillCache(b);\n          const {\n            sine: asine,\n            cosine: acosine\n          } = cache.get(a);\n          const {\n            sine: bsine,\n            cosine: bcosine\n          } = cache.get(b);\n\n          // both on or above x-axis\n          if (asine >= 0 && bsine >= 0) {\n            if (acosine < bcosine) return 1;\n            if (acosine > bcosine) return -1;\n            return 0;\n          }\n\n          // both below x-axis\n          if (asine < 0 && bsine < 0) {\n            if (acosine < bcosine) return -1;\n            if (acosine > bcosine) return 1;\n            return 0;\n          }\n\n          // one above x-axis, one below\n          if (bsine < asine) return -1;\n          if (bsine > asine) return 1;\n          return 0;\n        };\n      }\n    }\n\n    // Give segments unique ID's to get consistent sorting of\n    // segments and sweep events when all else is identical\n    let segmentId = 0;\n    class Segment {\n      /* This compare() function is for ordering segments in the sweep\n       * line tree, and does so according to the following criteria:\n       *\n       * Consider the vertical line that lies an infinestimal step to the\n       * right of the right-more of the two left endpoints of the input\n       * segments. Imagine slowly moving a point up from negative infinity\n       * in the increasing y direction. Which of the two segments will that\n       * point intersect first? That segment comes 'before' the other one.\n       *\n       * If neither segment would be intersected by such a line, (if one\n       * or more of the segments are vertical) then the line to be considered\n       * is directly on the right-more of the two left inputs.\n       */\n      static compare(a, b) {\n        const alx = a.leftSE.point.x;\n        const blx = b.leftSE.point.x;\n        const arx = a.rightSE.point.x;\n        const brx = b.rightSE.point.x;\n\n        // check if they're even in the same vertical plane\n        if (brx < alx) return 1;\n        if (arx < blx) return -1;\n        const aly = a.leftSE.point.y;\n        const bly = b.leftSE.point.y;\n        const ary = a.rightSE.point.y;\n        const bry = b.rightSE.point.y;\n\n        // is left endpoint of segment B the right-more?\n        if (alx < blx) {\n          // are the two segments in the same horizontal plane?\n          if (bly < aly && bly < ary) return 1;\n          if (bly > aly && bly > ary) return -1;\n\n          // is the B left endpoint colinear to segment A?\n          const aCmpBLeft = a.comparePoint(b.leftSE.point);\n          if (aCmpBLeft < 0) return 1;\n          if (aCmpBLeft > 0) return -1;\n\n          // is the A right endpoint colinear to segment B ?\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return -1;\n        }\n\n        // is left endpoint of segment A the right-more?\n        if (alx > blx) {\n          if (aly < bly && aly < bry) return -1;\n          if (aly > bly && aly > bry) return 1;\n\n          // is the A left endpoint colinear to segment B?\n          const bCmpALeft = b.comparePoint(a.leftSE.point);\n          if (bCmpALeft !== 0) return bCmpALeft;\n\n          // is the B right endpoint colinear to segment A?\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return 1;\n        }\n\n        // if we get here, the two left endpoints are in the same\n        // vertical plane, ie alx === blx\n\n        // consider the lower left-endpoint to come first\n        if (aly < bly) return -1;\n        if (aly > bly) return 1;\n\n        // left endpoints are identical\n        // check for colinearity by using the left-more right endpoint\n\n        // is the A right endpoint more left-more?\n        if (arx < brx) {\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n        }\n\n        // is the B right endpoint more left-more?\n        if (arx > brx) {\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n        }\n        if (arx !== brx) {\n          // are these two [almost] vertical segments with opposite orientation?\n          // if so, the one with the lower right endpoint comes first\n          const ay = ary - aly;\n          const ax = arx - alx;\n          const by = bry - bly;\n          const bx = brx - blx;\n          if (ay > ax && by < bx) return 1;\n          if (ay < ax && by > bx) return -1;\n        }\n\n        // we have colinear segments with matching orientation\n        // consider the one with more left-more right endpoint to be first\n        if (arx > brx) return 1;\n        if (arx < brx) return -1;\n\n        // if we get here, two two right endpoints are in the same\n        // vertical plane, ie arx === brx\n\n        // consider the lower right-endpoint to come first\n        if (ary < bry) return -1;\n        if (ary > bry) return 1;\n\n        // right endpoints identical as well, so the segments are idential\n        // fall back on creation order as consistent tie-breaker\n        if (a.id < b.id) return -1;\n        if (a.id > b.id) return 1;\n\n        // identical segment, ie a === b\n        return 0;\n      }\n\n      /* Warning: a reference to ringWindings input will be stored,\n       *  and possibly will be later modified */\n      constructor(leftSE, rightSE, rings, windings) {\n        this.id = ++segmentId;\n        this.leftSE = leftSE;\n        leftSE.segment = this;\n        leftSE.otherSE = rightSE;\n        this.rightSE = rightSE;\n        rightSE.segment = this;\n        rightSE.otherSE = leftSE;\n        this.rings = rings;\n        this.windings = windings;\n        // left unset for performance, set later in algorithm\n        // this.ringOut, this.consumedBy, this.prev\n      }\n      static fromRing(pt1, pt2, ring) {\n        let leftPt, rightPt, winding;\n\n        // ordering the two points according to sweep line ordering\n        const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n        if (cmpPts < 0) {\n          leftPt = pt1;\n          rightPt = pt2;\n          winding = 1;\n        } else if (cmpPts > 0) {\n          leftPt = pt2;\n          rightPt = pt1;\n          winding = -1;\n        } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n        const leftSE = new SweepEvent(leftPt, true);\n        const rightSE = new SweepEvent(rightPt, false);\n        return new Segment(leftSE, rightSE, [ring], [winding]);\n      }\n\n      /* When a segment is split, the rightSE is replaced with a new sweep event */\n      replaceRightSE(newRightSE) {\n        this.rightSE = newRightSE;\n        this.rightSE.segment = this;\n        this.rightSE.otherSE = this.leftSE;\n        this.leftSE.otherSE = this.rightSE;\n      }\n      bbox() {\n        const y1 = this.leftSE.point.y;\n        const y2 = this.rightSE.point.y;\n        return {\n          ll: {\n            x: this.leftSE.point.x,\n            y: y1 < y2 ? y1 : y2\n          },\n          ur: {\n            x: this.rightSE.point.x,\n            y: y1 > y2 ? y1 : y2\n          }\n        };\n      }\n\n      /* A vector from the left point to the right */\n      vector() {\n        return {\n          x: this.rightSE.point.x - this.leftSE.point.x,\n          y: this.rightSE.point.y - this.leftSE.point.y\n        };\n      }\n      isAnEndpoint(pt) {\n        return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n      }\n\n      /* Compare this segment with a point.\n       *\n       * A point P is considered to be colinear to a segment if there\n       * exists a distance D such that if we travel along the segment\n       * from one * endpoint towards the other a distance D, we find\n       * ourselves at point P.\n       *\n       * Return value indicates:\n       *\n       *   1: point lies above the segment (to the left of vertical)\n       *   0: point is colinear to segment\n       *  -1: point lies below the segment (to the right of vertical)\n       */\n      comparePoint(point) {\n        if (this.isAnEndpoint(point)) return 0;\n        const lPt = this.leftSE.point;\n        const rPt = this.rightSE.point;\n        const v = this.vector();\n\n        // Exactly vertical segments.\n        if (lPt.x === rPt.x) {\n          if (point.x === lPt.x) return 0;\n          return point.x < lPt.x ? 1 : -1;\n        }\n\n        // Nearly vertical segments with an intersection.\n        // Check to see where a point on the line with matching Y coordinate is.\n        const yDist = (point.y - lPt.y) / v.y;\n        const xFromYDist = lPt.x + yDist * v.x;\n        if (point.x === xFromYDist) return 0;\n\n        // General case.\n        // Check to see where a point on the line with matching X coordinate is.\n        const xDist = (point.x - lPt.x) / v.x;\n        const yFromXDist = lPt.y + xDist * v.y;\n        if (point.y === yFromXDist) return 0;\n        return point.y < yFromXDist ? -1 : 1;\n      }\n\n      /**\n       * Given another segment, returns the first non-trivial intersection\n       * between the two segments (in terms of sweep line ordering), if it exists.\n       *\n       * A 'non-trivial' intersection is one that will cause one or both of the\n       * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n       *\n       *   * endpoint of segA with endpoint of segB --> trivial\n       *   * endpoint of segA with point along segB --> non-trivial\n       *   * endpoint of segB with point along segA --> non-trivial\n       *   * point along segA with point along segB --> non-trivial\n       *\n       * If no non-trivial intersection exists, return null\n       * Else, return null.\n       */\n      getIntersection(other) {\n        // If bboxes don't overlap, there can't be any intersections\n        const tBbox = this.bbox();\n        const oBbox = other.bbox();\n        const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n        if (bboxOverlap === null) return null;\n\n        // We first check to see if the endpoints can be considered intersections.\n        // This will 'snap' intersections to endpoints if possible, and will\n        // handle cases of colinearity.\n\n        const tlp = this.leftSE.point;\n        const trp = this.rightSE.point;\n        const olp = other.leftSE.point;\n        const orp = other.rightSE.point;\n\n        // does each endpoint touch the other segment?\n        // note that we restrict the 'touching' definition to only allow segments\n        // to touch endpoints that lie forward from where we are in the sweep line pass\n        const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n        const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n        const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n        const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n        // do left endpoints match?\n        if (touchesThisLSE && touchesOtherLSE) {\n          // these two cases are for colinear segments with matching left\n          // endpoints, and one segment being longer than the other\n          if (touchesThisRSE && !touchesOtherRSE) return trp;\n          if (!touchesThisRSE && touchesOtherRSE) return orp;\n          // either the two segments match exactly (two trival intersections)\n          // or just on their left endpoint (one trivial intersection\n          return null;\n        }\n\n        // does this left endpoint matches (other doesn't)\n        if (touchesThisLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesOtherRSE) {\n            if (tlp.x === orp.x && tlp.y === orp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return tlp;\n        }\n\n        // does other left endpoint matches (this doesn't)\n        if (touchesOtherLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesThisRSE) {\n            if (trp.x === olp.x && trp.y === olp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return olp;\n        }\n\n        // trivial intersection on right endpoints\n        if (touchesThisRSE && touchesOtherRSE) return null;\n\n        // t-intersections on just one right endpoint\n        if (touchesThisRSE) return trp;\n        if (touchesOtherRSE) return orp;\n\n        // None of our endpoints intersect. Look for a general intersection between\n        // infinite lines laid over the segments\n        const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n        // are the segments parrallel? Note that if they were colinear with overlap,\n        // they would have an endpoint intersection and that case was already handled above\n        if (pt === null) return null;\n\n        // is the intersection found between the lines not on the segments?\n        if (!isInBbox(bboxOverlap, pt)) return null;\n\n        // round the the computed point if needed\n        return rounder.round(pt.x, pt.y);\n      }\n\n      /**\n       * Split the given segment into multiple segments on the given points.\n       *  * Each existing segment will retain its leftSE and a new rightSE will be\n       *    generated for it.\n       *  * A new segment will be generated which will adopt the original segment's\n       *    rightSE, and a new leftSE will be generated for it.\n       *  * If there are more than two points given to split on, new segments\n       *    in the middle will be generated with new leftSE and rightSE's.\n       *  * An array of the newly generated SweepEvents will be returned.\n       *\n       * Warning: input array of points is modified\n       */\n      split(point) {\n        const newEvents = [];\n        const alreadyLinked = point.events !== undefined;\n        const newLeftSE = new SweepEvent(point, true);\n        const newRightSE = new SweepEvent(point, false);\n        const oldRightSE = this.rightSE;\n        this.replaceRightSE(newRightSE);\n        newEvents.push(newRightSE);\n        newEvents.push(newLeftSE);\n        const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n        // when splitting a nearly vertical downward-facing segment,\n        // sometimes one of the resulting new segments is vertical, in which\n        // case its left and right events may need to be swapped\n        if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n          newSeg.swapEvents();\n        }\n        if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n          this.swapEvents();\n        }\n\n        // in the point we just used to create new sweep events with was already\n        // linked to other events, we need to check if either of the affected\n        // segments should be consumed\n        if (alreadyLinked) {\n          newLeftSE.checkForConsuming();\n          newRightSE.checkForConsuming();\n        }\n        return newEvents;\n      }\n\n      /* Swap which event is left and right */\n      swapEvents() {\n        const tmpEvt = this.rightSE;\n        this.rightSE = this.leftSE;\n        this.leftSE = tmpEvt;\n        this.leftSE.isLeft = true;\n        this.rightSE.isLeft = false;\n        for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n          this.windings[i] *= -1;\n        }\n      }\n\n      /* Consume another segment. We take their rings under our wing\n       * and mark them as consumed. Use for perfectly overlapping segments */\n      consume(other) {\n        let consumer = this;\n        let consumee = other;\n        while (consumer.consumedBy) consumer = consumer.consumedBy;\n        while (consumee.consumedBy) consumee = consumee.consumedBy;\n        const cmp = Segment.compare(consumer, consumee);\n        if (cmp === 0) return; // already consumed\n        // the winner of the consumption is the earlier segment\n        // according to sweep line ordering\n        if (cmp > 0) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n\n        // make sure a segment doesn't consume it's prev\n        if (consumer.prev === consumee) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n        for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n          const ring = consumee.rings[i];\n          const winding = consumee.windings[i];\n          const index = consumer.rings.indexOf(ring);\n          if (index === -1) {\n            consumer.rings.push(ring);\n            consumer.windings.push(winding);\n          } else consumer.windings[index] += winding;\n        }\n        consumee.rings = null;\n        consumee.windings = null;\n        consumee.consumedBy = consumer;\n\n        // mark sweep events consumed as to maintain ordering in sweep event queue\n        consumee.leftSE.consumedBy = consumer.leftSE;\n        consumee.rightSE.consumedBy = consumer.rightSE;\n      }\n\n      /* The first segment previous segment chain that is in the result */\n      prevInResult() {\n        if (this._prevInResult !== undefined) return this._prevInResult;\n        if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n        return this._prevInResult;\n      }\n      beforeState() {\n        if (this._beforeState !== undefined) return this._beforeState;\n        if (!this.prev) this._beforeState = {\n          rings: [],\n          windings: [],\n          multiPolys: []\n        };else {\n          const seg = this.prev.consumedBy || this.prev;\n          this._beforeState = seg.afterState();\n        }\n        return this._beforeState;\n      }\n      afterState() {\n        if (this._afterState !== undefined) return this._afterState;\n        const beforeState = this.beforeState();\n        this._afterState = {\n          rings: beforeState.rings.slice(0),\n          windings: beforeState.windings.slice(0),\n          multiPolys: []\n        };\n        const ringsAfter = this._afterState.rings;\n        const windingsAfter = this._afterState.windings;\n        const mpsAfter = this._afterState.multiPolys;\n\n        // calculate ringsAfter, windingsAfter\n        for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n          const ring = this.rings[i];\n          const winding = this.windings[i];\n          const index = ringsAfter.indexOf(ring);\n          if (index === -1) {\n            ringsAfter.push(ring);\n            windingsAfter.push(winding);\n          } else windingsAfter[index] += winding;\n        }\n\n        // calcualte polysAfter\n        const polysAfter = [];\n        const polysExclude = [];\n        for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n          if (windingsAfter[i] === 0) continue; // non-zero rule\n          const ring = ringsAfter[i];\n          const poly = ring.poly;\n          if (polysExclude.indexOf(poly) !== -1) continue;\n          if (ring.isExterior) polysAfter.push(poly);else {\n            if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n            const index = polysAfter.indexOf(ring.poly);\n            if (index !== -1) polysAfter.splice(index, 1);\n          }\n        }\n\n        // calculate multiPolysAfter\n        for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n          const mp = polysAfter[i].multiPoly;\n          if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n        }\n        return this._afterState;\n      }\n\n      /* Is this segment part of the final result? */\n      isInResult() {\n        // if we've been consumed, we're not in the result\n        if (this.consumedBy) return false;\n        if (this._isInResult !== undefined) return this._isInResult;\n        const mpsBefore = this.beforeState().multiPolys;\n        const mpsAfter = this.afterState().multiPolys;\n        switch (operation.type) {\n          case \"union\":\n            {\n              // UNION - included iff:\n              //  * On one side of us there is 0 poly interiors AND\n              //  * On the other side there is 1 or more.\n              const noBefores = mpsBefore.length === 0;\n              const noAfters = mpsAfter.length === 0;\n              this._isInResult = noBefores !== noAfters;\n              break;\n            }\n          case \"intersection\":\n            {\n              // INTERSECTION - included iff:\n              //  * on one side of us all multipolys are rep. with poly interiors AND\n              //  * on the other side of us, not all multipolys are repsented\n              //    with poly interiors\n              let least;\n              let most;\n              if (mpsBefore.length < mpsAfter.length) {\n                least = mpsBefore.length;\n                most = mpsAfter.length;\n              } else {\n                least = mpsAfter.length;\n                most = mpsBefore.length;\n              }\n              this._isInResult = most === operation.numMultiPolys && least < most;\n              break;\n            }\n          case \"xor\":\n            {\n              // XOR - included iff:\n              //  * the difference between the number of multipolys represented\n              //    with poly interiors on our two sides is an odd number\n              const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n              this._isInResult = diff % 2 === 1;\n              break;\n            }\n          case \"difference\":\n            {\n              // DIFFERENCE included iff:\n              //  * on exactly one side, we have just the subject\n              const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n              this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n              break;\n            }\n          default:\n            throw new Error(`Unrecognized operation type found ${operation.type}`);\n        }\n        return this._isInResult;\n      }\n    }\n\n    class RingIn {\n      constructor(geomRing, poly, isExterior) {\n        if (!Array.isArray(geomRing) || geomRing.length === 0) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.poly = poly;\n        this.isExterior = isExterior;\n        this.segments = [];\n        if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n        this.bbox = {\n          ll: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          },\n          ur: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          }\n        };\n        let prevPoint = firstPoint;\n        for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n          if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n            throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n          }\n          let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n          // skip repeated points\n          if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n          this.segments.push(Segment.fromRing(prevPoint, point, this));\n          if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n          if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n          if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n          if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n          prevPoint = point;\n        }\n        // add segment from last to first if last is not the same as first\n        if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n          this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n        }\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n          const segment = this.segments[i];\n          sweepEvents.push(segment.leftSE);\n          sweepEvents.push(segment.rightSE);\n        }\n        return sweepEvents;\n      }\n    }\n    class PolyIn {\n      constructor(geomPoly, multiPoly) {\n        if (!Array.isArray(geomPoly)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.exteriorRing = new RingIn(geomPoly[0], this, true);\n        // copy by value\n        this.bbox = {\n          ll: {\n            x: this.exteriorRing.bbox.ll.x,\n            y: this.exteriorRing.bbox.ll.y\n          },\n          ur: {\n            x: this.exteriorRing.bbox.ur.x,\n            y: this.exteriorRing.bbox.ur.y\n          }\n        };\n        this.interiorRings = [];\n        for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n          const ring = new RingIn(geomPoly[i], this, false);\n          if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n          if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n          if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n          if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n          this.interiorRings.push(ring);\n        }\n        this.multiPoly = multiPoly;\n      }\n      getSweepEvents() {\n        const sweepEvents = this.exteriorRing.getSweepEvents();\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n          for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(ringSweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n    class MultiPolyIn {\n      constructor(geom, isSubject) {\n        if (!Array.isArray(geom)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        try {\n          // if the input looks like a polygon, convert it to a multipolygon\n          if (typeof geom[0][0][0] === \"number\") geom = [geom];\n        } catch (ex) {\n          // The input is either malformed or has empty arrays.\n          // In either case, it will be handled later on.\n        }\n        this.polys = [];\n        this.bbox = {\n          ll: {\n            x: Number.POSITIVE_INFINITY,\n            y: Number.POSITIVE_INFINITY\n          },\n          ur: {\n            x: Number.NEGATIVE_INFINITY,\n            y: Number.NEGATIVE_INFINITY\n          }\n        };\n        for (let i = 0, iMax = geom.length; i < iMax; i++) {\n          const poly = new PolyIn(geom[i], this);\n          if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n          if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n          if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n          if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n          this.polys.push(poly);\n        }\n        this.isSubject = isSubject;\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polySweepEvents = this.polys[i].getSweepEvents();\n          for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(polySweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n\n    class RingOut {\n      /* Given the segments from the sweep line pass, compute & return a series\n       * of closed rings from all the segments marked to be part of the result */\n      static factory(allSegments) {\n        const ringsOut = [];\n        for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n          const segment = allSegments[i];\n          if (!segment.isInResult() || segment.ringOut) continue;\n          let prevEvent = null;\n          let event = segment.leftSE;\n          let nextEvent = segment.rightSE;\n          const events = [event];\n          const startingPoint = event.point;\n          const intersectionLEs = [];\n\n          /* Walk the chain of linked events to form a closed ring */\n          while (true) {\n            prevEvent = event;\n            event = nextEvent;\n            events.push(event);\n\n            /* Is the ring complete? */\n            if (event.point === startingPoint) break;\n            while (true) {\n              const availableLEs = event.getAvailableLinkedEvents();\n\n              /* Did we hit a dead end? This shouldn't happen.\n               * Indicates some earlier part of the algorithm malfunctioned. */\n              if (availableLEs.length === 0) {\n                const firstPt = events[0].point;\n                const lastPt = events[events.length - 1].point;\n                throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n              }\n\n              /* Only one way to go, so cotinue on the path */\n              if (availableLEs.length === 1) {\n                nextEvent = availableLEs[0].otherSE;\n                break;\n              }\n\n              /* We must have an intersection. Check for a completed loop */\n              let indexLE = null;\n              for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n                if (intersectionLEs[j].point === event.point) {\n                  indexLE = j;\n                  break;\n                }\n              }\n              /* Found a completed loop. Cut that off and make a ring */\n              if (indexLE !== null) {\n                const intersectionLE = intersectionLEs.splice(indexLE)[0];\n                const ringEvents = events.splice(intersectionLE.index);\n                ringEvents.unshift(ringEvents[0].otherSE);\n                ringsOut.push(new RingOut(ringEvents.reverse()));\n                continue;\n              }\n              /* register the intersection */\n              intersectionLEs.push({\n                index: events.length,\n                point: event.point\n              });\n              /* Choose the left-most option to continue the walk */\n              const comparator = event.getLeftmostComparator(prevEvent);\n              nextEvent = availableLEs.sort(comparator)[0].otherSE;\n              break;\n            }\n          }\n          ringsOut.push(new RingOut(events));\n        }\n        return ringsOut;\n      }\n      constructor(events) {\n        this.events = events;\n        for (let i = 0, iMax = events.length; i < iMax; i++) {\n          events[i].segment.ringOut = this;\n        }\n        this.poly = null;\n      }\n      getGeom() {\n        // Remove superfluous points (ie extra points along a straight line),\n        let prevPt = this.events[0].point;\n        const points = [prevPt];\n        for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n          const pt = this.events[i].point;\n          const nextPt = this.events[i + 1].point;\n          if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n          points.push(pt);\n          prevPt = pt;\n        }\n\n        // ring was all (within rounding error of angle calc) colinear points\n        if (points.length === 1) return null;\n\n        // check if the starting point is necessary\n        const pt = points[0];\n        const nextPt = points[1];\n        if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n        points.push(points[0]);\n        const step = this.isExteriorRing() ? 1 : -1;\n        const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n        const iEnd = this.isExteriorRing() ? points.length : -1;\n        const orderedPoints = [];\n        for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n        return orderedPoints;\n      }\n      isExteriorRing() {\n        if (this._isExteriorRing === undefined) {\n          const enclosing = this.enclosingRing();\n          this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n        }\n        return this._isExteriorRing;\n      }\n      enclosingRing() {\n        if (this._enclosingRing === undefined) {\n          this._enclosingRing = this._calcEnclosingRing();\n        }\n        return this._enclosingRing;\n      }\n\n      /* Returns the ring that encloses this one, if any */\n      _calcEnclosingRing() {\n        // start with the ealier sweep line event so that the prevSeg\n        // chain doesn't lead us inside of a loop of ours\n        let leftMostEvt = this.events[0];\n        for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n          const evt = this.events[i];\n          if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n        }\n        let prevSeg = leftMostEvt.segment.prevInResult();\n        let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        while (true) {\n          // no segment found, thus no ring can enclose us\n          if (!prevSeg) return null;\n\n          // no segments below prev segment found, thus the ring of the prev\n          // segment must loop back around and enclose us\n          if (!prevPrevSeg) return prevSeg.ringOut;\n\n          // if the two segments are of different rings, the ring of the prev\n          // segment must either loop around us or the ring of the prev prev\n          // seg, which would make us and the ring of the prev peers\n          if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n            if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n              return prevSeg.ringOut;\n            } else return prevSeg.ringOut.enclosingRing();\n          }\n\n          // two segments are from the same ring, so this was a penisula\n          // of that ring. iterate downward, keep searching\n          prevSeg = prevPrevSeg.prevInResult();\n          prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        }\n      }\n    }\n    class PolyOut {\n      constructor(exteriorRing) {\n        this.exteriorRing = exteriorRing;\n        exteriorRing.poly = this;\n        this.interiorRings = [];\n      }\n      addInterior(ring) {\n        this.interiorRings.push(ring);\n        ring.poly = this;\n      }\n      getGeom() {\n        const geom = [this.exteriorRing.getGeom()];\n        // exterior ring was all (within rounding error of angle calc) colinear points\n        if (geom[0] === null) return null;\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringGeom = this.interiorRings[i].getGeom();\n          // interior ring was all (within rounding error of angle calc) colinear points\n          if (ringGeom === null) continue;\n          geom.push(ringGeom);\n        }\n        return geom;\n      }\n    }\n    class MultiPolyOut {\n      constructor(rings) {\n        this.rings = rings;\n        this.polys = this._composePolys(rings);\n      }\n      getGeom() {\n        const geom = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polyGeom = this.polys[i].getGeom();\n          // exterior ring was all (within rounding error of angle calc) colinear points\n          if (polyGeom === null) continue;\n          geom.push(polyGeom);\n        }\n        return geom;\n      }\n      _composePolys(rings) {\n        const polys = [];\n        for (let i = 0, iMax = rings.length; i < iMax; i++) {\n          const ring = rings[i];\n          if (ring.poly) continue;\n          if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n            const enclosingRing = ring.enclosingRing();\n            if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n            enclosingRing.poly.addInterior(ring);\n          }\n        }\n        return polys;\n      }\n    }\n\n    /**\n     * NOTE:  We must be careful not to change any segments while\n     *        they are in the SplayTree. AFAIK, there's no way to tell\n     *        the tree to rebalance itself - thus before splitting\n     *        a segment that's in the tree, we remove it from the tree,\n     *        do the split, then re-insert it. (Even though splitting a\n     *        segment *shouldn't* change its correct position in the\n     *        sweep line tree, the reality is because of rounding errors,\n     *        it sometimes does.)\n     */\n\n    class SweepLine {\n      constructor(queue) {\n        let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n        this.queue = queue;\n        this.tree = new Tree(comparator);\n        this.segments = [];\n      }\n      process(event) {\n        const segment = event.segment;\n        const newEvents = [];\n\n        // if we've already been consumed by another segment,\n        // clean up our body parts and get out\n        if (event.consumedBy) {\n          if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n          return newEvents;\n        }\n        const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n        if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n        let prevNode = node;\n        let nextNode = node;\n        let prevSeg = undefined;\n        let nextSeg = undefined;\n\n        // skip consumed segments still in tree\n        while (prevSeg === undefined) {\n          prevNode = this.tree.prev(prevNode);\n          if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n        }\n\n        // skip consumed segments still in tree\n        while (nextSeg === undefined) {\n          nextNode = this.tree.next(nextNode);\n          if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n        }\n        if (event.isLeft) {\n          // Check for intersections against the previous segment in the sweep line\n          let prevMySplitter = null;\n          if (prevSeg) {\n            const prevInter = prevSeg.getIntersection(segment);\n            if (prevInter !== null) {\n              if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n              if (!prevSeg.isAnEndpoint(prevInter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // Check for intersections against the next segment in the sweep line\n          let nextMySplitter = null;\n          if (nextSeg) {\n            const nextInter = nextSeg.getIntersection(segment);\n            if (nextInter !== null) {\n              if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n              if (!nextSeg.isAnEndpoint(nextInter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // For simplicity, even if we find more than one intersection we only\n          // spilt on the 'earliest' (sweep-line style) of the intersections.\n          // The other intersection will be handled in a future process().\n          if (prevMySplitter !== null || nextMySplitter !== null) {\n            let mySplitter = null;\n            if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n              const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n              mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n            }\n\n            // Rounding errors can cause changes in ordering,\n            // so remove afected segments and right sweep events before splitting\n            this.queue.remove(segment.rightSE);\n            newEvents.push(segment.rightSE);\n            const newEventsFromSplit = segment.split(mySplitter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n          if (newEvents.length > 0) {\n            // We found some intersections, so re-do the current event to\n            // make sure sweep line ordering is totally consistent for later\n            // use with the segment 'prev' pointers\n            this.tree.remove(segment);\n            newEvents.push(event);\n          } else {\n            // done with left event\n            this.segments.push(segment);\n            segment.prev = prevSeg;\n          }\n        } else {\n          // event.isRight\n\n          // since we're about to be removed from the sweep line, check for\n          // intersections between our previous and next segments\n          if (prevSeg && nextSeg) {\n            const inter = prevSeg.getIntersection(nextSeg);\n            if (inter !== null) {\n              if (!prevSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n              if (!nextSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n          this.tree.remove(segment);\n        }\n        return newEvents;\n      }\n\n      /* Safely split a segment that is currently in the datastructures\n       * IE - a segment other than the one that is currently being processed. */\n      _splitSafely(seg, pt) {\n        // Rounding errors can cause changes in ordering,\n        // so remove afected segments and right sweep events before splitting\n        // removeNode() doesn't work, so have re-find the seg\n        // https://github.com/w8r/splay-tree/pull/5\n        this.tree.remove(seg);\n        const rightSE = seg.rightSE;\n        this.queue.remove(rightSE);\n        const newEvents = seg.split(pt);\n        newEvents.push(rightSE);\n        // splitting can trigger consumption\n        if (seg.consumedBy === undefined) this.tree.add(seg);\n        return newEvents;\n      }\n    }\n\n    // Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\n    const POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\n    const POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\n    class Operation {\n      run(type, geom, moreGeoms) {\n        operation.type = type;\n        rounder.reset();\n\n        /* Convert inputs to MultiPoly objects */\n        const multipolys = [new MultiPolyIn(geom, true)];\n        for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n          multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n        }\n        operation.numMultiPolys = multipolys.length;\n\n        /* BBox optimization for difference operation\n         * If the bbox of a multipolygon that's part of the clipping doesn't\n         * intersect the bbox of the subject at all, we can just drop that\n         * multiploygon. */\n        if (operation.type === \"difference\") {\n          // in place removal\n          const subject = multipolys[0];\n          let i = 1;\n          while (i < multipolys.length) {\n            if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n          }\n        }\n\n        /* BBox optimization for intersection operation\n         * If we can find any pair of multipolygons whose bbox does not overlap,\n         * then the result will be empty. */\n        if (operation.type === \"intersection\") {\n          // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n          //       it could be optimized to O(n * ln(n))\n          for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n            const mpA = multipolys[i];\n            for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n              if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n            }\n          }\n        }\n\n        /* Put segment endpoints in a priority queue */\n        const queue = new Tree(SweepEvent.compare);\n        for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n          const sweepEvents = multipolys[i].getSweepEvents();\n          for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n            queue.insert(sweepEvents[j]);\n            if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n              // prevents an infinite loop, an otherwise common manifestation of bugs\n              throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n            }\n          }\n        }\n\n        /* Pass the sweep line over those endpoints */\n        const sweepLine = new SweepLine(queue);\n        let prevQueueSize = queue.size;\n        let node = queue.pop();\n        while (node) {\n          const evt = node.key;\n          if (queue.size === prevQueueSize) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            const seg = evt.segment;\n            throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n          }\n          if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n          }\n          if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n          }\n          const newEvents = sweepLine.process(evt);\n          for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n            const evt = newEvents[i];\n            if (evt.consumedBy === undefined) queue.insert(evt);\n          }\n          prevQueueSize = queue.size;\n          node = queue.pop();\n        }\n\n        // free some memory we don't need anymore\n        rounder.reset();\n\n        /* Collect and compile segments we're keeping into a multipolygon */\n        const ringsOut = RingOut.factory(sweepLine.segments);\n        const result = new MultiPolyOut(ringsOut);\n        return result.getGeom();\n      }\n    }\n\n    // singleton available by import\n    const operation = new Operation();\n\n    const union = function (geom) {\n      for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        moreGeoms[_key - 1] = arguments[_key];\n      }\n      return operation.run(\"union\", geom, moreGeoms);\n    };\n    const intersection = function (geom) {\n      for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        moreGeoms[_key2 - 1] = arguments[_key2];\n      }\n      return operation.run(\"intersection\", geom, moreGeoms);\n    };\n    const xor = function (geom) {\n      for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        moreGeoms[_key3 - 1] = arguments[_key3];\n      }\n      return operation.run(\"xor\", geom, moreGeoms);\n    };\n    const difference = function (subjectGeom) {\n      for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        clippingGeoms[_key4 - 1] = arguments[_key4];\n      }\n      return operation.run(\"difference\", subjectGeom, clippingGeoms);\n    };\n    var index = {\n      union: union,\n      intersection: intersection,\n      xor: xor,\n      difference: difference\n    };\n\n    return index;\n\n}));\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Date = Date;\nvar thisTimeValue = uncurryThis($Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return thisTimeValue(new $Date());\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n  isSafeInteger: function isSafeInteger(number) {\n    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n  }\n});\n","exports.nil = new Error('#NULL!');\nexports.div0 = new Error('#DIV/0!');\nexports.value = new Error('#VALUE!');\nexports.ref = new Error('#REF!');\nexports.name = new Error('#NAME?');\nexports.num = new Error('#NUM!');\nexports.na = new Error('#N/A');\nexports.error = new Error('#ERROR!');\nexports.data = new Error('#GETTING_DATA');\n","/* globals MediaStream */\n'use strict';\nif (typeof MediaStream === 'function') {\n    module.exports = MediaStream;\n}\nelse {\n    module.exports = function MediaStream() {\n        throw new Error('MediaStream is not supported');\n    };\n}\n//# sourceMappingURL=mediastream.js.map","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE === 1;\n  var IS_FILTER = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  var IS_EVERY = TYPE === 4;\n  var IS_FIND_INDEX = TYPE === 6;\n  var IS_FILTER_REJECT = TYPE === 7;\n  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BackgroundProcessor = void 0;\nvar Processor_1 = require(\"../Processor\");\nvar Benchmark_1 = require(\"../../utils/Benchmark\");\nvar TwilioTFLite_1 = require(\"../../utils/TwilioTFLite\");\nvar support_1 = require(\"../../utils/support\");\nvar types_1 = require(\"../../types\");\nvar webgl2_1 = require(\"../webgl2\");\nvar constants_1 = require(\"../../constants\");\n/**\n * @private\n */\nvar BackgroundProcessor = /** @class */ (function (_super) {\n    __extends(BackgroundProcessor, _super);\n    function BackgroundProcessor(options) {\n        var _this = _super.call(this) || this;\n        _this._backgroundImage = null;\n        _this._outputCanvas = null;\n        _this._outputContext = null;\n        _this._webgl2Pipeline = null;\n        _this._inferenceDimensions = constants_1.WASM_INFERENCE_DIMENSIONS;\n        if (typeof options.assetsPath !== 'string') {\n            throw new Error('assetsPath parameter is missing');\n        }\n        var assetsPath = options.assetsPath;\n        if (assetsPath && assetsPath[assetsPath.length - 1] !== '/') {\n            assetsPath += '/';\n        }\n        _this._assetsPath = assetsPath;\n        _this._debounce = typeof options.debounce === 'boolean' ? options.debounce : true;\n        _this._deferInputResize = typeof options.deferInputResize === 'boolean' ? options.deferInputResize : false;\n        _this._inferenceDimensions = options.inferenceDimensions || _this._inferenceDimensions;\n        _this._inputResizeMode = typeof options.inputResizeMode === 'string'\n            ? options.inputResizeMode\n            : ((0, support_1.isChromiumImageBitmap)() ? 'image-bitmap' : 'canvas');\n        _this._pipeline = options.pipeline || types_1.Pipeline.WebGL2;\n        _this._benchmark = new Benchmark_1.Benchmark();\n        _this._currentMask = null;\n        _this._isSimdEnabled = null;\n        _this._inferenceInputCanvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : document.createElement('canvas');\n        _this._inferenceInputContext = _this._inferenceInputCanvas.getContext('2d', { willReadFrequently: true });\n        _this._inputFrameCanvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : document.createElement('canvas');\n        _this._inputFrameContext = _this._inputFrameCanvas.getContext('2d');\n        _this._maskBlurRadius = typeof options.maskBlurRadius === 'number' ? options.maskBlurRadius : (_this._pipeline === types_1.Pipeline.WebGL2 ? constants_1.MASK_BLUR_RADIUS : (constants_1.MASK_BLUR_RADIUS / 2));\n        _this._maskCanvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : document.createElement('canvas');\n        _this._maskContext = _this._maskCanvas.getContext('2d');\n        return _this;\n    }\n    Object.defineProperty(BackgroundProcessor.prototype, \"maskBlurRadius\", {\n        /**\n         * The current blur radius when smoothing out the edges of the person's mask.\n         */\n        get: function () {\n            return this._maskBlurRadius;\n        },\n        /**\n         * Set a new blur radius to be used when smoothing out the edges of the person's mask.\n         */\n        set: function (radius) {\n            var _a;\n            if (typeof radius !== 'number' || radius < 0) {\n                console.warn(\"Valid mask blur radius not found. Using \".concat(constants_1.MASK_BLUR_RADIUS, \" as default.\"));\n                radius = constants_1.MASK_BLUR_RADIUS;\n            }\n            if (this._maskBlurRadius !== radius) {\n                this._maskBlurRadius = radius;\n                (_a = this._webgl2Pipeline) === null || _a === void 0 ? void 0 : _a.updatePostProcessingConfig({\n                    jointBilateralFilter: {\n                        sigmaSpace: this._maskBlurRadius\n                    }\n                });\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Load the segmentation model.\n     * Call this method before attaching the processor to ensure\n     * video frames are processed correctly.\n     */\n    BackgroundProcessor.prototype.loadModel = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var tflite;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        tflite = BackgroundProcessor._tflite;\n                        if (!!tflite) return [3 /*break*/, 2];\n                        tflite = new TwilioTFLite_1.TwilioTFLite();\n                        return [4 /*yield*/, tflite.initialize(this._assetsPath, constants_1.MODEL_NAME, constants_1.TFLITE_LOADER_NAME, constants_1.TFLITE_SIMD_LOADER_NAME)];\n                    case 1:\n                        _a.sent();\n                        BackgroundProcessor._tflite = tflite;\n                        _a.label = 2;\n                    case 2:\n                        this._isSimdEnabled = tflite.isSimdEnabled;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Apply a transform to the background of an input video frame and leaving\n     * the foreground (person(s)) untouched. Any exception detected will\n     * result in the frame being dropped.\n     * @param inputFrameBuffer - The source of the input frame to process.\n     * <br/>\n     * <br/>\n     * [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas) - Good for canvas-related processing\n     * that can be rendered off screen. Only works when using [[Pipeline.Canvas2D]].\n     * <br/>\n     * <br/>\n     * [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) - This is recommended on browsers\n     * that doesn't support `OffscreenCanvas`, or if you need to render the frame on the screen. Only works when using [[Pipeline.Canvas2D]].\n     * <br/>\n     * <br/>\n     * [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) - Recommended when using [[Pipeline.WebGL2]] but\n     * works for both [[Pipeline.Canvas2D]] and [[Pipeline.WebGL2]].\n     * <br/>\n     * @param outputFrameBuffer - The output frame buffer to use to draw the processed frame.\n     */\n    BackgroundProcessor.prototype.processFrame = function (inputFrameBuffer, outputFrameBuffer) {\n        var _a, _b, _c;\n        return __awaiter(this, void 0, void 0, function () {\n            var _d, inferenceWidth, inferenceHeight, _e, captureWidth, captureHeight, inputFrame, personMask, ctx, _f, outputHeight, outputWidth;\n            return __generator(this, function (_g) {\n                switch (_g.label) {\n                    case 0:\n                        if (!BackgroundProcessor._tflite) {\n                            return [2 /*return*/];\n                        }\n                        if (!inputFrameBuffer || !outputFrameBuffer) {\n                            throw new Error('Missing input or output frame buffer');\n                        }\n                        this._benchmark.end('captureFrameDelay');\n                        this._benchmark.start('processFrameDelay');\n                        _d = this._inferenceDimensions, inferenceWidth = _d.width, inferenceHeight = _d.height;\n                        _e = inputFrameBuffer instanceof HTMLVideoElement\n                            ? { width: inputFrameBuffer.videoWidth, height: inputFrameBuffer.videoHeight }\n                            : inputFrameBuffer, captureWidth = _e.width, captureHeight = _e.height;\n                        if (this._outputCanvas !== outputFrameBuffer) {\n                            this._outputCanvas = outputFrameBuffer;\n                            this._outputContext = this._outputCanvas\n                                .getContext(this._pipeline === types_1.Pipeline.Canvas2D ? '2d' : 'webgl2');\n                            (_a = this._webgl2Pipeline) === null || _a === void 0 ? void 0 : _a.cleanUp();\n                            this._webgl2Pipeline = null;\n                        }\n                        if (this._pipeline === types_1.Pipeline.WebGL2) {\n                            if (!this._webgl2Pipeline) {\n                                this._createWebGL2Pipeline(inputFrameBuffer, captureWidth, captureHeight, inferenceWidth, inferenceHeight);\n                            }\n                            (_b = this._webgl2Pipeline) === null || _b === void 0 ? void 0 : _b.sampleInputFrame();\n                        }\n                        // Only set the canvas' dimensions if they have changed to prevent unnecessary redraw\n                        if (this._inputFrameCanvas.width !== captureWidth) {\n                            this._inputFrameCanvas.width = captureWidth;\n                        }\n                        if (this._inputFrameCanvas.height !== captureHeight) {\n                            this._inputFrameCanvas.height = captureHeight;\n                        }\n                        if (this._inferenceInputCanvas.width !== inferenceWidth) {\n                            this._inferenceInputCanvas.width = inferenceWidth;\n                            this._maskCanvas.width = inferenceWidth;\n                        }\n                        if (this._inferenceInputCanvas.height !== inferenceHeight) {\n                            this._inferenceInputCanvas.height = inferenceHeight;\n                            this._maskCanvas.height = inferenceHeight;\n                        }\n                        if (inputFrameBuffer instanceof HTMLVideoElement) {\n                            this._inputFrameContext.drawImage(inputFrameBuffer, 0, 0);\n                            inputFrame = this._inputFrameCanvas;\n                        }\n                        else {\n                            inputFrame = inputFrameBuffer;\n                        }\n                        return [4 /*yield*/, this._createPersonMask(inputFrame)];\n                    case 1:\n                        personMask = _g.sent();\n                        if (this._debounce) {\n                            this._currentMask = this._currentMask === personMask\n                                ? null\n                                : personMask;\n                        }\n                        if (this._pipeline === types_1.Pipeline.WebGL2) {\n                            (_c = this._webgl2Pipeline) === null || _c === void 0 ? void 0 : _c.render(personMask.data);\n                        }\n                        else {\n                            this._benchmark.start('imageCompositionDelay');\n                            if (!this._debounce || this._currentMask) {\n                                this._maskContext.putImageData(personMask, 0, 0);\n                            }\n                            ctx = this._outputContext;\n                            _f = this._outputCanvas, outputHeight = _f.height, outputWidth = _f.width;\n                            ctx.save();\n                            ctx.filter = \"blur(\".concat(this._maskBlurRadius, \"px)\");\n                            ctx.globalCompositeOperation = 'copy';\n                            ctx.drawImage(this._maskCanvas, 0, 0, outputWidth, outputHeight);\n                            ctx.filter = 'none';\n                            ctx.globalCompositeOperation = 'source-in';\n                            ctx.drawImage(inputFrame, 0, 0, outputWidth, outputHeight);\n                            ctx.globalCompositeOperation = 'destination-over';\n                            this._setBackground(inputFrame);\n                            ctx.restore();\n                            this._benchmark.end('imageCompositionDelay');\n                        }\n                        this._benchmark.end('processFrameDelay');\n                        this._benchmark.end('totalProcessingDelay');\n                        // NOTE (csantos): Start the benchmark from here so we can include the delay from the Video sdk\n                        // for a more accurate fps\n                        this._benchmark.start('totalProcessingDelay');\n                        this._benchmark.start('captureFrameDelay');\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BackgroundProcessor.prototype._createPersonMask = function (inputFrame) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, height, width, stages, shouldDebounce, inferenceStage, resizeStage, resizePromise, personMaskBuffer;\n            var _this = this;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _a = this._inferenceDimensions, height = _a.height, width = _a.width;\n                        stages = {\n                            inference: {\n                                false: function () { return BackgroundProcessor._tflite.runInference(); },\n                                true: function () { return _this._currentMask.data; }\n                            },\n                            resize: {\n                                false: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n                                    return [2 /*return*/, this._resizeInputFrame(inputFrame)];\n                                }); }); },\n                                true: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n                                    return [2 /*return*/];\n                                }); }); }\n                            }\n                        };\n                        shouldDebounce = !!this._currentMask;\n                        inferenceStage = stages.inference[\"\".concat(shouldDebounce)];\n                        resizeStage = stages.resize[\"\".concat(shouldDebounce)];\n                        this._benchmark.start('inputImageResizeDelay');\n                        resizePromise = resizeStage();\n                        if (!!this._deferInputResize) return [3 /*break*/, 2];\n                        return [4 /*yield*/, resizePromise];\n                    case 1:\n                        _b.sent();\n                        _b.label = 2;\n                    case 2:\n                        this._benchmark.end('inputImageResizeDelay');\n                        this._benchmark.start('segmentationDelay');\n                        personMaskBuffer = inferenceStage();\n                        this._benchmark.end('segmentationDelay');\n                        return [2 /*return*/, this._currentMask || new ImageData(personMaskBuffer, width, height)];\n                }\n            });\n        });\n    };\n    BackgroundProcessor.prototype._createWebGL2Pipeline = function (inputFrame, captureWidth, captureHeight, inferenceWidth, inferenceHeight) {\n        this._webgl2Pipeline = (0, webgl2_1.buildWebGL2Pipeline)({\n            htmlElement: inputFrame,\n            width: captureWidth,\n            height: captureHeight,\n        }, this._backgroundImage, {\n            type: this._getWebGL2PipelineType(),\n        }, {\n            inputResolution: \"\".concat(inferenceWidth, \"x\").concat(inferenceHeight),\n        }, this._outputCanvas, this._benchmark, this._debounce);\n        this._webgl2Pipeline.updatePostProcessingConfig({\n            jointBilateralFilter: {\n                sigmaSpace: this._maskBlurRadius,\n                sigmaColor: 0.1\n            },\n            coverage: [\n                0,\n                0.99\n            ],\n            lightWrapping: 0,\n            blendMode: 'screen'\n        });\n    };\n    BackgroundProcessor.prototype._resizeInputFrame = function (inputFrame) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, _b, resizeWidth, resizeHeight, ctx, resizeMode, resizedInputFrameBitmap, imageData;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        _a = this, _b = _a._inferenceInputCanvas, resizeWidth = _b.width, resizeHeight = _b.height, ctx = _a._inferenceInputContext, resizeMode = _a._inputResizeMode;\n                        if (!(resizeMode === 'image-bitmap')) return [3 /*break*/, 2];\n                        return [4 /*yield*/, createImageBitmap(inputFrame, {\n                                resizeWidth: resizeWidth,\n                                resizeHeight: resizeHeight,\n                                resizeQuality: 'pixelated'\n                            })];\n                    case 1:\n                        resizedInputFrameBitmap = _c.sent();\n                        ctx.drawImage(resizedInputFrameBitmap, 0, 0, resizeWidth, resizeHeight);\n                        resizedInputFrameBitmap.close();\n                        return [3 /*break*/, 3];\n                    case 2:\n                        ctx.drawImage(inputFrame, 0, 0, resizeWidth, resizeHeight);\n                        _c.label = 3;\n                    case 3:\n                        imageData = ctx.getImageData(0, 0, resizeWidth, resizeHeight);\n                        BackgroundProcessor._tflite.loadInputBuffer(imageData.data);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BackgroundProcessor._tflite = null;\n    return BackgroundProcessor;\n}(Processor_1.Processor));\nexports.BackgroundProcessor = BackgroundProcessor;\n//# sourceMappingURL=BackgroundProcessor.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\n/**\n * A Promise that can be canceled with {@link CancelablePromise#cancel}.\n * @extends Promise\n*/\nvar CancelablePromise = /** @class */ (function () {\n    /**\n     * Construct a new {@link CancelablePromise}.\n     * @param {CancelablePromise.OnCreate} onCreate\n     * @param {CancelablePromise.OnCancel} onCancel\n    */ /**\n     * A function to be called on {@link CancelablePromise} creation\n     * @typedef {function} CancelablePromise.OnCreate\n     * @param {function(*)} resolve\n     * @param {function(*)} reject\n     * @param {function(): boolean} isCanceled\n    */ /**\n     * A function to be called when {@link CancelablePromise#cancel} is called\n     * @typedef {function} CancelablePromise.OnCancel\n     */\n    function CancelablePromise(onCreate, onCancel) {\n        var _this = this;\n        /* istanbul ignore next */\n        Object.defineProperties(this, {\n            _isCancelable: {\n                writable: true,\n                value: true\n            },\n            _isCanceled: {\n                writable: true,\n                value: false\n            },\n            _onCancel: {\n                value: onCancel\n            }\n        });\n        Object.defineProperty(this, '_promise', {\n            value: new Promise(function (resolve, reject) {\n                onCreate(function (value) {\n                    _this._isCancelable = false;\n                    resolve(value);\n                }, function (reason) {\n                    _this._isCancelable = false;\n                    reject(reason);\n                }, function () { return _this._isCanceled; });\n            })\n        });\n    }\n    /**\n     * Create a synchronously-rejected {@link CancelablePromise}.\n     * @param {*} reason\n     * @returns {Promise<*>}\n     */\n    CancelablePromise.reject = function (reason) {\n        return new CancelablePromise(function rejected(resolve, reject) {\n            reject(reason);\n        }, function onCancel() {\n            // Do nothing.\n        });\n    };\n    /**\n     * Create a synchronously-resolved {@link CancelablePromise}.\n     * @param {*|Promise<*>|Thenable<*>} result\n     * @returns {CancelablePromise<*>}\n     */\n    CancelablePromise.resolve = function (result) {\n        return new CancelablePromise(function resolved(resolve) {\n            resolve(result);\n        }, function onCancel() {\n            // Do nothing.\n        });\n    };\n    /**\n     * Attempt to cancel the {@link CancelablePromise}.\n     * @returns {this}\n     */\n    CancelablePromise.prototype.cancel = function () {\n        if (this._isCancelable) {\n            this._isCanceled = true;\n            this._onCancel();\n        }\n        return this;\n    };\n    /**\n     * @param {function} onRejected\n     * @returns {CancelablePromise}\n     */\n    CancelablePromise.prototype.catch = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.catch.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n        }, this._onCancel);\n    };\n    /**\n     * @param {?function} onResolved\n     * @param {function} [onRejected]\n     * @returns {CancelablePromise}\n     */\n    CancelablePromise.prototype.then = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.then.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n        }, this._onCancel);\n    };\n    /**\n   * @param {?function} onFinally\n   * @returns {CancelablePromise}\n   */\n    CancelablePromise.prototype.finally = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.finally.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n        }, this._onCancel);\n    };\n    return CancelablePromise;\n}());\nmodule.exports = CancelablePromise;\n//# sourceMappingURL=cancelablepromise.js.map","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* eslint-disable class-methods-use-this */\n\n\nvar _pointGeometry = require('@mapbox/point-geometry');\n\nvar _pointGeometry2 = _interopRequireDefault(_pointGeometry);\n\nvar _lat_lng = require('./lat_lng');\n\nvar _lat_lng2 = _interopRequireDefault(_lat_lng);\n\nvar _wrap = require('./wrap');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// A single transform, generally used for a single tile to be scaled, rotated, and zoomed.\nvar Transform = function () {\n  function Transform(tileSize, minZoom, maxZoom) {\n    _classCallCheck(this, Transform);\n\n    this.tileSize = tileSize || 512; // constant\n\n    this._minZoom = minZoom || 0;\n    this._maxZoom = maxZoom || 52;\n\n    this.latRange = [-85.05113, 85.05113];\n\n    this.width = 0;\n    this.height = 0;\n    this.zoom = 0;\n    this.center = new _lat_lng2.default(0, 0);\n    this.angle = 0;\n  }\n\n  Transform.prototype.zoomScale = function zoomScale(zoom) {\n    return Math.pow(2, zoom);\n  };\n\n  Transform.prototype.scaleZoom = function scaleZoom(scale) {\n    return Math.log(scale) / Math.LN2;\n  };\n\n  Transform.prototype.project = function project(latlng, worldSize) {\n    return new _pointGeometry2.default(this.lngX(latlng.lng, worldSize), this.latY(latlng.lat, worldSize));\n  };\n\n  Transform.prototype.unproject = function unproject(point, worldSize) {\n    return new _lat_lng2.default(this.yLat(point.y, worldSize), this.xLng(point.x, worldSize));\n  };\n\n  // lat/lon <-> absolute pixel coords convertion\n  Transform.prototype.lngX = function lngX(lon, worldSize) {\n    return (180 + lon) * (worldSize || this.worldSize) / 360;\n  };\n\n  // latitude to absolute y coord\n\n\n  Transform.prototype.latY = function latY(lat, worldSize) {\n    var y = 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360));\n    return (180 - y) * (worldSize || this.worldSize) / 360;\n  };\n\n  Transform.prototype.xLng = function xLng(x, worldSize) {\n    return x * 360 / (worldSize || this.worldSize) - 180;\n  };\n\n  Transform.prototype.yLat = function yLat(y, worldSize) {\n    var y2 = 180 - y * 360 / (worldSize || this.worldSize);\n    return 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;\n  };\n\n  Transform.prototype.locationPoint = function locationPoint(latlng) {\n    var p = this.project(latlng);\n    return this.centerPoint._sub(this.point._sub(p)._rotate(this.angle));\n  };\n\n  Transform.prototype.pointLocation = function pointLocation(p) {\n    var p2 = this.centerPoint._sub(p)._rotate(-this.angle);\n    return this.unproject(this.point.sub(p2));\n  };\n\n  _createClass(Transform, [{\n    key: 'minZoom',\n    get: function get() {\n      return this._minZoom;\n    },\n    set: function set(zoom) {\n      this._minZoom = zoom;\n      this.zoom = Math.max(this.zoom, zoom);\n    }\n  }, {\n    key: 'maxZoom',\n    get: function get() {\n      return this._maxZoom;\n    },\n    set: function set(zoom) {\n      this._maxZoom = zoom;\n      this.zoom = Math.min(this.zoom, zoom);\n    }\n  }, {\n    key: 'worldSize',\n    get: function get() {\n      return this.tileSize * this.scale;\n    }\n  }, {\n    key: 'centerPoint',\n    get: function get() {\n      return new _pointGeometry2.default(0, 0); // this.size._div(2);\n    }\n  }, {\n    key: 'size',\n    get: function get() {\n      return new _pointGeometry2.default(this.width, this.height);\n    }\n  }, {\n    key: 'bearing',\n    get: function get() {\n      return -this.angle / Math.PI * 180;\n    },\n    set: function set(bearing) {\n      this.angle = -(0, _wrap.wrap)(bearing, -180, 180) * Math.PI / 180;\n    }\n  }, {\n    key: 'zoom',\n    get: function get() {\n      return this._zoom;\n    },\n    set: function set(zoom) {\n      var zoomV = Math.min(Math.max(zoom, this.minZoom), this.maxZoom);\n      this._zoom = zoomV;\n      this.scale = this.zoomScale(zoomV);\n      this.tileZoom = Math.floor(zoomV);\n      this.zoomFraction = zoomV - this.tileZoom;\n    }\n  }, {\n    key: 'x',\n    get: function get() {\n      return this.lngX(this.center.lng);\n    }\n  }, {\n    key: 'y',\n    get: function get() {\n      return this.latY(this.center.lat);\n    }\n  }, {\n    key: 'point',\n    get: function get() {\n      return new _pointGeometry2.default(this.x, this.y);\n    }\n  }]);\n\n  return Transform;\n}();\n\nexports.default = Transform;","/**\n * Copyright (c) 2011-2022 Isaac Z. Schlueter\n * Licensed under the ISC License.\n *\n * Copied from https://github.com/isaacs/inherits (2.0.4)\n*/\nmodule.exports = function inherits(ctor, superCtor) {\n    if (ctor && superCtor) {\n        ctor.super_ = superCtor;\n        if (typeof Object.create === 'function') {\n            // implementation from standard node.js 'util' module\n            ctor.prototype = Object.create(superCtor.prototype, {\n                constructor: {\n                    value: ctor,\n                    enumerable: false,\n                    writable: true,\n                    configurable: true\n                }\n            });\n        }\n        else {\n            // old school shim for old browsers\n            var TempCtor = /** @class */ (function () {\n                function TempCtor() {\n                }\n                return TempCtor;\n            }());\n            TempCtor.prototype = superCtor.prototype;\n            ctor.prototype = new TempCtor();\n            ctor.prototype.constructor = ctor;\n        }\n    }\n};\n//# sourceMappingURL=inherits.js.map","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n  fontcolor: function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  }\n});\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var error = require('./error');\n\nexports.flattenShallow = function(array) {\n  if (!array || !array.reduce) {\n    return array;\n  }\n\n  return array.reduce(function(a, b) {\n    var aIsArray = Array.isArray(a);\n    var bIsArray = Array.isArray(b);\n\n    if (aIsArray && bIsArray ) {\n      return a.concat(b);\n    }\n    if (aIsArray) {\n      a.push(b);\n\n      return a;\n    }\n    if (bIsArray) {\n      return [a].concat(b);\n    }\n\n    return [a, b];\n  });\n};\n\nexports.isFlat = function(array) {\n  if (!array) {\n    return false;\n  }\n\n  for (var i = 0; i < array.length; ++i) {\n    if (Array.isArray(array[i])) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nexports.flatten = function() {\n  var result = exports.argsToArray.apply(null, arguments);\n\n  while (!exports.isFlat(result)) {\n    result = exports.flattenShallow(result);\n  }\n\n  return result;\n};\n\nexports.argsToArray = function(args) {\n  var result = [];\n\n  exports.arrayEach(args, function(value) {\n    result.push(value);\n  });\n\n  return result;\n};\n\nexports.numbers = function() {\n  var possibleNumbers = this.flatten.apply(null, arguments);\n  return possibleNumbers.filter(function(el) {\n    return typeof el === 'number';\n  });\n};\n\nexports.cleanFloat = function(number) {\n  var power = 1e14;\n  return Math.round(number * power) / power;\n};\n\nexports.parseBool = function(bool) {\n  if (typeof bool === 'boolean') {\n    return bool;\n  }\n\n  if (bool instanceof Error) {\n    return bool;\n  }\n\n  if (typeof bool === 'number') {\n    return bool !== 0;\n  }\n\n  if (typeof bool === 'string') {\n    var up = bool.toUpperCase();\n    if (up === 'TRUE') {\n      return true;\n    }\n\n    if (up === 'FALSE') {\n      return false;\n    }\n  }\n\n  if (bool instanceof Date && !isNaN(bool)) {\n    return true;\n  }\n\n  return error.value;\n};\n\nexports.parseNumber = function(string) {\n  if (string === undefined || string === '') {\n    return error.value;\n  }\n  if (!isNaN(string)) {\n    return parseFloat(string);\n  }\n\n  return error.value;\n};\n\nexports.parseNumberArray = function(arr) {\n  var len;\n\n  if (!arr || (len = arr.length) === 0) {\n    return error.value;\n  }\n\n  var parsed;\n\n  while (len--) {\n    parsed = exports.parseNumber(arr[len]);\n    if (parsed === error.value) {\n      return parsed;\n    }\n    arr[len] = parsed;\n  }\n\n  return arr;\n};\n\nexports.parseMatrix = function(matrix) {\n  var n;\n\n  if (!matrix || (n = matrix.length) === 0) {\n    return error.value;\n  }\n  var pnarr;\n\n  for (var i = 0; i < matrix.length; i++) {\n    pnarr = exports.parseNumberArray(matrix[i]);\n    matrix[i] = pnarr;\n\n    if (pnarr instanceof Error) {\n      return pnarr;\n    }\n  }\n\n  return matrix;\n};\n\nvar d1900 = new Date(Date.UTC(1900, 0, 1));\nexports.parseDate = function(date) {\n  if (!isNaN(date)) {\n    if (date instanceof Date) {\n      return new Date(date);\n    }\n    var d = parseInt(date, 10);\n    if (d < 0) {\n      return error.num;\n    }\n    if (d <= 60) {\n      return new Date(d1900.getTime() + (d - 1) * 86400000);\n    }\n    return new Date(d1900.getTime() + (d - 2) * 86400000);\n  }\n  if (typeof date === 'string') {\n    date = new Date(date);\n    if (!isNaN(date)) {\n      return date;\n    }\n  }\n  return error.value;\n};\n\nexports.parseDateArray = function(arr) {\n  var len = arr.length;\n  var parsed;\n  while (len--) {\n    parsed = this.parseDate(arr[len]);\n    if (parsed === error.value) {\n      return parsed;\n    }\n    arr[len] = parsed;\n  }\n  return arr;\n};\n\nexports.anyIsError = function() {\n  var n = arguments.length;\n  while (n--) {\n    if (arguments[n] instanceof Error) {\n      return true;\n    }\n  }\n  return false;\n};\n\nexports.arrayValuesToNumbers = function(arr) {\n  var n = arr.length;\n  var el;\n  while (n--) {\n    el = arr[n];\n    if (typeof el === 'number') {\n      continue;\n    }\n    if (el === true) {\n      arr[n] = 1;\n      continue;\n    }\n    if (el === false) {\n      arr[n] = 0;\n      continue;\n    }\n    if (typeof el === 'string') {\n      var number = this.parseNumber(el);\n      if (number instanceof Error) {\n        arr[n] = 0;\n      } else {\n        arr[n] = number;\n      }\n    }\n  }\n  return arr;\n};\n\nexports.rest = function(array, idx) {\n  idx = idx || 1;\n  if (!array || typeof array.slice !== 'function') {\n    return array;\n  }\n  return array.slice(idx);\n};\n\nexports.initial = function(array, idx) {\n  idx = idx || 1;\n  if (!array || typeof array.slice !== 'function') {\n    return array;\n  }\n  return array.slice(0, array.length - idx);\n};\n\nexports.arrayEach = function(array, iteratee) {\n  var index = -1, length = array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n\n  return array;\n};\n\nexports.transpose = function(matrix) {\n  if(!matrix) {\n    return error.value;\n  }\n\n  return matrix[0].map(function(col, i) {\n    return matrix.map(function(row) {\n      return row[i];\n    });\n  });\n};\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return ([\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]]\n  ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      variant = _ref.variant,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'img' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"variant\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n  }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n  body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      bg = _ref.bg,\n      text = _ref.text,\n      border = _ref.border,\n      body = _ref.body,\n      children = _ref.children,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card');\n  var cardContext = useMemo(function () {\n    return {\n      cardHeaderBsPrefix: prefix + \"-header\"\n    };\n  }, [prefix]);\n  return /*#__PURE__*/React.createElement(CardContext.Provider, {\n    value: cardContext\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n  }), body ?\n  /*#__PURE__*/\n  // @ts-ignore\n  React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr === '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","'use strict';\nvar NetworkQualityBandwidthStats = require('./networkqualitybandwidthstats');\nvar NetworkQualityFractionLostStats = require('./networkqualityfractionloststats');\nvar NetworkQualityLatencyStats = require('./networkqualitylatencystats');\n/**\n * Network quality statistics shared between {@link NetworkQualitySendStats} and\n * {@link NetworkQualityRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code> or\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code> is calculated.\n * @property {?NetworkQualityBandwidthStats} bandwidth - bandwidth statistics\n * @property {?NetworkQualityLatencyStats} latency - latency statistics\n * @property {?NetworkQualityFractionLostStats} fractionLost - fraction lost statistics\n */\nvar NetworkQualitySendOrRecvStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualitySendOrRecvStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualitySendOrRecvStats(_a) {\n        var _b = _a.bandwidth, bandwidth = _b === void 0 ? null : _b, _c = _a.fractionLost, fractionLost = _c === void 0 ? null : _c, _d = _a.latency, latency = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            bandwidth: {\n                value: bandwidth ? new NetworkQualityBandwidthStats(bandwidth) : null,\n                enumerable: true\n            },\n            fractionLost: {\n                value: fractionLost ? new NetworkQualityFractionLostStats(fractionLost) : null,\n                enumerable: true\n            },\n            latency: {\n                value: latency ? new NetworkQualityLatencyStats(latency) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualitySendOrRecvStats;\n}());\nmodule.exports = NetworkQualitySendOrRecvStats;\n//# sourceMappingURL=networkqualitysendorrecvstats.js.map","'use strict';\nvar parent = require('../../es/string');\n\nmodule.exports = parent;\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O, 'number');\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","'use strict';\nvar parent = require('../../es/number');\n\nmodule.exports = parent;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","/* globals chrome, navigator */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Check whether the current browser is an Android device.\n * @returns {boolean}\n */\nfunction isAndroid() {\n    return /Android/.test(navigator.userAgent);\n}\n/**\n * Detects whether or not a device is an Apple touch screen device.\n * @returns {boolean}\n */\nfunction hasTouchScreen() {\n    return !!(navigator && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n}\n/**\n * Detects whether or not a device is an iPad.\n * @returns {boolean}\n */\nfunction isIpad() {\n    return hasTouchScreen() && window.screen.width >= 744 && (/Macintosh/i.test(navigator.userAgent)\n        || /iPad/.test(navigator.userAgent)\n        || /iPad/.test(navigator.platform));\n}\n/**\n * Detects whether or not a device is an iPhone.\n * @returns {boolean}\n */\nfunction isIphone() {\n    return hasTouchScreen() && window.screen.width <= 476 && (/Macintosh/i.test(navigator.userAgent)\n        || /iPhone/.test(navigator.userAgent)\n        || /iPhone/.test(navigator.platform));\n}\n/**\n * Check whether the current device is an iOS device.\n * @returns {boolean}\n */\nfunction isIOS() {\n    return isIpad() || isIphone();\n}\n/**\n * Check whether the current browser is a mobile browser\n * @returns {boolean}\n */\nfunction isMobile() {\n    return /Mobi/.test(navigator.userAgent);\n}\n/**\n * Check whether the current browser is non-Chromium Edge.\n * @param {string} browser\n * @returns {boolean}\n */\nfunction isNonChromiumEdge(browser) {\n    return browser === 'chrome' && /Edge/.test(navigator.userAgent) && (typeof chrome === 'undefined' || typeof chrome.runtime === 'undefined');\n}\n/**\n * Get the name of the rebranded Chromium browser, if any. Re-branded Chrome's user\n * agent has the following format:\n * <source>/<version> (<os>) <engine>/<version> (<engine_name>) Chrome/<version> [Mobile] Safari/<version>\n * @param browser\n * @returns {?string} Name of the rebranded Chrome browser, or null if the browser\n *   is either not Chrome or vanilla Chrome.\n */\nfunction rebrandedChromeBrowser(browser) {\n    // If the browser is not Chrome based, then it is not a rebranded Chrome browser.\n    if (browser !== 'chrome') {\n        return null;\n    }\n    // Latest desktop Brave browser has a \"brave\" property in navigator.\n    if ('brave' in navigator) {\n        return 'brave';\n    }\n    // Remove the \"(.+)\" entries from the user agent thereby retaining only the\n    // <name>[/<version>] entries.\n    var parenthesizedSubstrings = getParenthesizedSubstrings(navigator.userAgent);\n    var nameAndVersions = parenthesizedSubstrings.reduce(function (userAgent, substring) { return userAgent.replace(substring, ''); }, navigator.userAgent);\n    // Extract the potential browser <name>s by ignoring the first two names, which\n    // point to <source> and <engine>.\n    var matches = nameAndVersions.match(/[^\\s]+/g) || [];\n    var _a = __read(matches.map(function (nameAndVersion) {\n        return nameAndVersion.split('/')[0].toLowerCase();\n    })), browserNames = _a.slice(2);\n    // Extract the <name> that is not expected to be present in the vanilla Chrome\n    // browser, which indicates the rebranded name (ex: \"edg[e]\", \"electron\"). If null,\n    // then this is a vanilla Chrome browser.\n    return browserNames.find(function (name) {\n        return !['chrome', 'mobile', 'safari'].includes(name);\n    }) || null;\n}\n/**\n * Get the name of the mobile webkit based browser, if any.\n * @param browser\n * @returns {?string} Name of the mobile webkit based browser, or null if the browser\n *   is either not webkit based or mobile safari.\n */\nfunction mobileWebKitBrowser(browser) {\n    if (browser !== 'safari') {\n        return null;\n    }\n    if ('brave' in navigator) {\n        return 'brave';\n    }\n    return ['edge', 'edg'].find(function (name) {\n        return navigator.userAgent.toLowerCase().includes(name);\n    }) || null;\n}\n/**\n * Get the top level parenthesized substrings within a given string. Unmatched\n * parentheses are ignored.\n * Ex: \"abc) (def) gh(ij) (kl (mn)o) (pqr\" => [\"(def)\", \"(ij)\", \"(kl (mn)o)\"]\n * @param {string} string\n * @returns {string[]}\n */\nfunction getParenthesizedSubstrings(string) {\n    var openParenthesisPositions = [];\n    var substrings = [];\n    for (var i = 0; i < string.length; i++) {\n        if (string[i] === '(') {\n            openParenthesisPositions.push(i);\n        }\n        else if (string[i] === ')' && openParenthesisPositions.length > 0) {\n            var openParenthesisPosition = openParenthesisPositions.pop();\n            if (openParenthesisPositions.length === 0) {\n                substrings.push(string.substring(openParenthesisPosition, i + 1));\n            }\n        }\n    }\n    return substrings;\n}\nmodule.exports = {\n    isAndroid: isAndroid,\n    isIOS: isIOS,\n    isIpad: isIpad,\n    isIphone: isIphone,\n    isMobile: isMobile,\n    isNonChromiumEdge: isNonChromiumEdge,\n    mobileWebKitBrowser: mobileWebKitBrowser,\n    rebrandedChromeBrowser: rebrandedChromeBrowser\n};\n//# sourceMappingURL=browserdetection.js.map","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlagsDetection = require('../internals/regexp-flags-detection');\nvar regExpFlagsGetterImplementation = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = regExpFlagsDetection.correct ? function (it) {\n  return it.flags;\n} : function (it) {\n  return (!regExpFlagsDetection.correct && isPrototypeOf(RegExpPrototype, it) && !hasOwn(it, 'flags'))\n    ? call(regExpFlagsGetterImplementation, it)\n    : it.flags;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span;\n    var offset;\n    var order;\n\n    if (typeof propValue === 'object' && propValue != null) {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames.apply(void 0, [className].concat(spans, classes))\n  }));\n});\nCol.displayName = 'Col';\nexport default Col;","// ray-casting algorithm based on\n// https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n\nmodule.exports = function pointInPolygonNested (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = end - start;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[i+start][0], yi = vs[i+start][1];\n        var xj = vs[j+start][0], yj = vs[j+start][1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GaussianBlurBackgroundProcessor = void 0;\nvar BackgroundProcessor_1 = require(\"./BackgroundProcessor\");\nvar constants_1 = require(\"../../constants\");\nvar types_1 = require(\"../../types\");\n/**\n * The GaussianBlurBackgroundProcessor, when added to a VideoTrack,\n * applies a gaussian blur filter on the background in each video frame\n * and leaves the foreground (person(s)) untouched. Each instance of\n * GaussianBlurBackgroundProcessor should be added to only one VideoTrack\n * at a time to prevent overlapping of image data from multiple VideoTracks.\n *\n * @example\n *\n * ```ts\n * import { createLocalVideoTrack } from 'twilio-video';\n * import { Pipeline, GaussianBlurBackgroundProcessor } from '@twilio/video-processors';\n * import { simd } from 'wasm-feature-detect';\n *\n * let blurBackground: GaussianBlurBackgroundProcessor;\n *\n * (async() => {\n *   const isWasmSimdSupported = await simd();\n *\n *   blurBackground = new GaussianBlurBackgroundProcessor({\n *     assetsPath: 'https://my-server-path/assets',\n *\n *     // Enable debounce only if the browser does not support\n *     // WASM SIMD in order to retain an acceptable frame rate.\n *     debounce: !isWasmSimdSupported,\n *\n *     pipeline: Pipeline.WebGL2,\n *   });\n *   await blurBackground.loadModel();\n *\n *   const track = await createLocalVideoTrack({\n *     // Increasing the capture resolution decreases the output FPS\n *     // especially on browsers that do not support SIMD\n *     // such as desktop Safari and iOS browsers, or on Chrome\n *     // with capture resolutions above 640x480 for webgl2.\n *     width: 640,\n *     height: 480,\n *\n *     // Any frame rate above 24 fps on desktop browsers increase CPU\n *     // usage without noticeable increase in quality.\n *     frameRate: 24\n *   });\n *   track.addProcessor(virtualBackground, {\n *     inputFrameBufferType: 'video',\n *     outputFrameBufferContextType: 'webgl2',\n *   });\n * })();\n * ```\n */\nvar GaussianBlurBackgroundProcessor = /** @class */ (function (_super) {\n    __extends(GaussianBlurBackgroundProcessor, _super);\n    /**\n     * Construct a GaussianBlurBackgroundProcessor. Default values will be used for\n     * any missing properties in [[GaussianBlurBackgroundProcessorOptions]], and\n     * invalid properties will be ignored.\n     */\n    function GaussianBlurBackgroundProcessor(options) {\n        var _this = _super.call(this, options) || this;\n        _this._blurFilterRadius = constants_1.BLUR_FILTER_RADIUS;\n        // tslint:disable-next-line no-unused-variable\n        _this._name = 'GaussianBlurBackgroundProcessor';\n        _this.blurFilterRadius = options.blurFilterRadius;\n        return _this;\n    }\n    Object.defineProperty(GaussianBlurBackgroundProcessor.prototype, \"blurFilterRadius\", {\n        /**\n         * The current background blur filter radius in pixels.\n         */\n        get: function () {\n            return this._blurFilterRadius;\n        },\n        /**\n         * Set a new background blur filter radius in pixels.\n         */\n        set: function (radius) {\n            if (!radius) {\n                console.warn(\"Valid blur filter radius not found. Using \".concat(constants_1.BLUR_FILTER_RADIUS, \" as default.\"));\n                radius = constants_1.BLUR_FILTER_RADIUS;\n            }\n            this._blurFilterRadius = radius;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    GaussianBlurBackgroundProcessor.prototype._getWebGL2PipelineType = function () {\n        return types_1.WebGL2PipelineType.Blur;\n    };\n    GaussianBlurBackgroundProcessor.prototype._setBackground = function (inputFrame) {\n        if (!this._outputContext) {\n            return;\n        }\n        var ctx = this._outputContext;\n        ctx.filter = \"blur(\".concat(this._blurFilterRadius, \"px)\");\n        ctx.drawImage(inputFrame, 0, 0);\n    };\n    return GaussianBlurBackgroundProcessor;\n}(BackgroundProcessor_1.BackgroundProcessor));\nexports.GaussianBlurBackgroundProcessor = GaussianBlurBackgroundProcessor;\n//# sourceMappingURL=GaussianBlurBackgroundProcessor.js.map","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n  return useState(null);\n}","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","'use strict';\nvar LocalAudioTrackStats = require('./localaudiotrackstats');\nvar LocalVideoTrackStats = require('./localvideotrackstats');\nvar RemoteAudioTrackStats = require('./remoteaudiotrackstats');\nvar RemoteVideoTrackStats = require('./remotevideotrackstats');\n/**\n * Statistics report for an RTCPeerConnection.\n * @property {string} peerConnectionId - ID of the RTCPeerConnection\n * @property {Array<LocalAudioTrackStats>} localAudioTrackStats - List of {@link LocalAudioTrackStats}\n * @property {Array<LocalVideoTrackStats>} localVideoTrackStats - List of {@link LocalVideoTrackStats}\n * @property {Array<RemoteAudioTrackStats>} remoteAudioTrackStats - List of {@link RemoteAudioTrackStats}\n * @property {Array<RemoteVideoTrackStats>} remoteVideoTrackStats - List of {@link RemoteVideoTrackStats}\n */\nvar StatsReport = /** @class */ (function () {\n    /**\n     * @param {string} peerConnectionId - RTCPeerConnection ID\n     * @param {StandardizedStatsResponse} statsResponse\n     * @param {boolean} prepareForInsights - if report is being prepared to send to insights.\n     */\n    function StatsReport(peerConnectionId, statsResponse, prepareForInsights) {\n        if (typeof peerConnectionId !== 'string') {\n            throw new Error('RTCPeerConnection id must be a string');\n        }\n        Object.defineProperties(this, {\n            peerConnectionId: {\n                value: peerConnectionId,\n                enumerable: true\n            },\n            localAudioTrackStats: {\n                value: statsResponse.localAudioTrackStats.map(function (report) { return new LocalAudioTrackStats(report.trackId, report, prepareForInsights); }),\n                enumerable: true\n            },\n            localVideoTrackStats: {\n                value: statsResponse.localVideoTrackStats.map(function (report) { return new LocalVideoTrackStats(report.trackId, report, prepareForInsights); }),\n                enumerable: true\n            },\n            remoteAudioTrackStats: {\n                value: statsResponse.remoteAudioTrackStats.map(function (report) { return new RemoteAudioTrackStats(report.trackId, report); }),\n                enumerable: true\n            },\n            remoteVideoTrackStats: {\n                value: statsResponse.remoteVideoTrackStats.map(function (report) { return new RemoteVideoTrackStats(report.trackId, report); }),\n                enumerable: true\n            }\n        });\n    }\n    return StatsReport;\n}());\nmodule.exports = StatsReport;\n//# sourceMappingURL=statsreport.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module core\n */ /** */\nvar stateParams_1 = require(\"./params/stateParams\");\nvar queue_1 = require(\"./common/queue\");\n/**\n * Global router state\n *\n * This is where we hold the global mutable state such as current state, current\n * params, current transition, etc.\n */\nvar UIRouterGlobals = /** @class */ (function () {\n    function UIRouterGlobals() {\n        /**\n         * Current parameter values\n         *\n         * The parameter values from the latest successful transition\n         */\n        this.params = new stateParams_1.StateParams();\n        /** @internalapi */\n        this.lastStartedTransitionId = -1;\n        /** @internalapi */\n        this.transitionHistory = new queue_1.Queue([], 1);\n        /** @internalapi */\n        this.successfulTransitions = new queue_1.Queue([], 1);\n    }\n    UIRouterGlobals.prototype.dispose = function () {\n        this.transitionHistory.clear();\n        this.successfulTransitions.clear();\n        this.transition = null;\n    };\n    return UIRouterGlobals;\n}());\nexports.UIRouterGlobals = UIRouterGlobals;\n//# sourceMappingURL=globals.js.map","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('carousel-caption');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar CarouselItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      children = _ref.children,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"children\", \"className\"]);\n\n  var finalClassName = classNames(className, useBootstrapPrefix(bsPrefix, 'carousel-item'));\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: finalClassName\n  }), children);\n});\nCarouselItem.displayName = 'CarouselItem';\nexport default CarouselItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useUpdateEffect from '@restart/hooks/useUpdateEffect';\nimport useCommittedRef from '@restart/hooks/useCommittedRef';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport classNames from 'classnames';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport Transition from 'react-transition-group/Transition';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport CarouselCaption from './CarouselCaption';\nimport CarouselItem from './CarouselItem';\nimport { map, forEach } from './ElementChildren';\nimport SafeAnchor from './SafeAnchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar SWIPE_THRESHOLD = 40;\nvar propTypes = {\n  /**\n   * @default 'carousel'\n   */\n  bsPrefix: PropTypes.string,\n  as: PropTypes.elementType,\n\n  /**\n   * Enables animation on the Carousel as it transitions between slides.\n   */\n  slide: PropTypes.bool,\n\n  /** Cross fade slides instead of the default slide animation */\n  fade: PropTypes.bool,\n\n  /**\n   * Show the Carousel previous and next arrows for changing the current slide\n   */\n  controls: PropTypes.bool,\n\n  /**\n   * Show a set of slide position indicators\n   */\n  indicators: PropTypes.bool,\n\n  /**\n   * Controls the current visible slide\n   *\n   * @controllable onSelect\n   */\n  activeIndex: PropTypes.number,\n\n  /**\n   * Callback fired when the active item changes.\n   *\n   * ```js\n   * (eventKey: number, event: Object | null) => void\n   * ```\n   *\n   * @controllable activeIndex\n   */\n  onSelect: PropTypes.func,\n\n  /**\n   * Callback fired when a slide transition starts.\n   *\n   * ```js\n   * (eventKey: number, direction: 'left' | 'right') => void\n   */\n  onSlide: PropTypes.func,\n\n  /**\n   * Callback fired when a slide transition ends.\n   *\n   * ```js\n   * (eventKey: number, direction: 'left' | 'right') => void\n   */\n  onSlid: PropTypes.func,\n\n  /**\n   * The amount of time to delay between automatically cycling an item. If `null`, carousel will not automatically cycle.\n   */\n  interval: PropTypes.number,\n\n  /** Whether the carousel should react to keyboard events. */\n  keyboard: PropTypes.bool,\n\n  /**\n   * If set to `\"hover\"`, pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. If set to `false`, hovering over the carousel won't pause it.\n   *\n   * On touch-enabled devices, when set to `\"hover\"`, cycling will pause on `touchend` (once the user finished interacting with the carousel) for two intervals, before automatically resuming. Note that this is in addition to the above mouse behavior.\n   */\n  pause: PropTypes.oneOf(['hover', false]),\n\n  /** Whether the carousel should cycle continuously or have hard stops. */\n  wrap: PropTypes.bool,\n\n  /**\n   * Whether the carousel should support left/right swipe interactions on touchscreen devices.\n   */\n  touch: PropTypes.bool,\n\n  /** Override the default button icon for the \"previous\" control */\n  prevIcon: PropTypes.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the previous element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  prevLabel: PropTypes.string,\n\n  /** Override the default button icon for the \"next\" control */\n  nextIcon: PropTypes.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the next element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  nextLabel: PropTypes.string\n};\nvar defaultProps = {\n  slide: true,\n  fade: false,\n  controls: true,\n  indicators: true,\n  defaultActiveIndex: 0,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  wrap: true,\n  touch: true,\n  prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-prev-icon\"\n  }),\n  prevLabel: 'Previous',\n  nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-next-icon\"\n  }),\n  nextLabel: 'Next'\n};\n\nfunction isVisible(element) {\n  if (!element || !element.style || !element.parentNode || !element.parentNode.style) {\n    return false;\n  }\n\n  var elementStyle = getComputedStyle(element);\n  return elementStyle.display !== 'none' && elementStyle.visibility !== 'hidden' && getComputedStyle(element.parentNode).display !== 'none';\n}\n\nfunction CarouselFunc(uncontrolledProps, ref) {\n  var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n    activeIndex: 'onSelect'\n  }),\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      slide = _useUncontrolled.slide,\n      fade = _useUncontrolled.fade,\n      controls = _useUncontrolled.controls,\n      indicators = _useUncontrolled.indicators,\n      activeIndex = _useUncontrolled.activeIndex,\n      onSelect = _useUncontrolled.onSelect,\n      onSlide = _useUncontrolled.onSlide,\n      onSlid = _useUncontrolled.onSlid,\n      interval = _useUncontrolled.interval,\n      keyboard = _useUncontrolled.keyboard,\n      onKeyDown = _useUncontrolled.onKeyDown,\n      pause = _useUncontrolled.pause,\n      onMouseOver = _useUncontrolled.onMouseOver,\n      onMouseOut = _useUncontrolled.onMouseOut,\n      wrap = _useUncontrolled.wrap,\n      touch = _useUncontrolled.touch,\n      onTouchStart = _useUncontrolled.onTouchStart,\n      onTouchMove = _useUncontrolled.onTouchMove,\n      onTouchEnd = _useUncontrolled.onTouchEnd,\n      prevIcon = _useUncontrolled.prevIcon,\n      prevLabel = _useUncontrolled.prevLabel,\n      nextIcon = _useUncontrolled.nextIcon,\n      nextLabel = _useUncontrolled.nextLabel,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"slide\", \"fade\", \"controls\", \"indicators\", \"activeIndex\", \"onSelect\", \"onSlide\", \"onSlid\", \"interval\", \"keyboard\", \"onKeyDown\", \"pause\", \"onMouseOver\", \"onMouseOut\", \"wrap\", \"touch\", \"onTouchStart\", \"onTouchMove\", \"onTouchEnd\", \"prevIcon\", \"prevLabel\", \"nextIcon\", \"nextLabel\", \"className\", \"children\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'carousel');\n  var nextDirectionRef = useRef(null);\n\n  var _useState = useState('next'),\n      direction = _useState[0],\n      setDirection = _useState[1];\n\n  var _useState2 = useState(false),\n      paused = _useState2[0],\n      setPaused = _useState2[1];\n\n  var _useState3 = useState(false),\n      isSliding = _useState3[0],\n      setIsSliding = _useState3[1];\n\n  var _useState4 = useState(activeIndex || 0),\n      renderedActiveIndex = _useState4[0],\n      setRenderedActiveIndex = _useState4[1];\n\n  if (!isSliding && activeIndex !== renderedActiveIndex) {\n    if (nextDirectionRef.current) {\n      setDirection(nextDirectionRef.current);\n    } else {\n      setDirection((activeIndex || 0) > renderedActiveIndex ? 'next' : 'prev');\n    }\n\n    if (slide) {\n      setIsSliding(true);\n    }\n\n    setRenderedActiveIndex(activeIndex || 0);\n  }\n\n  useEffect(function () {\n    if (nextDirectionRef.current) {\n      nextDirectionRef.current = null;\n    }\n  });\n  var numChildren = 0;\n  var activeChildInterval; // Iterate to grab all of the children's interval values\n  // (and count them, too)\n\n  forEach(children, function (child, index) {\n    ++numChildren;\n\n    if (index === activeIndex) {\n      activeChildInterval = child.props.interval;\n    }\n  });\n  var activeChildIntervalRef = useCommittedRef(activeChildInterval);\n  var prev = useCallback(function (event) {\n    if (isSliding) {\n      return;\n    }\n\n    var nextActiveIndex = renderedActiveIndex - 1;\n\n    if (nextActiveIndex < 0) {\n      if (!wrap) {\n        return;\n      }\n\n      nextActiveIndex = numChildren - 1;\n    }\n\n    nextDirectionRef.current = 'prev';\n\n    if (onSelect) {\n      onSelect(nextActiveIndex, event);\n    }\n  }, [isSliding, renderedActiveIndex, onSelect, wrap, numChildren]); // This is used in the setInterval, so it should not invalidate.\n\n  var next = useEventCallback(function (event) {\n    if (isSliding) {\n      return;\n    }\n\n    var nextActiveIndex = renderedActiveIndex + 1;\n\n    if (nextActiveIndex >= numChildren) {\n      if (!wrap) {\n        return;\n      }\n\n      nextActiveIndex = 0;\n    }\n\n    nextDirectionRef.current = 'next';\n\n    if (onSelect) {\n      onSelect(nextActiveIndex, event);\n    }\n  });\n  var elementRef = useRef();\n  useImperativeHandle(ref, function () {\n    return {\n      element: elementRef.current,\n      prev: prev,\n      next: next\n    };\n  }); // This is used in the setInterval, so it should not invalidate.\n\n  var nextWhenVisible = useEventCallback(function () {\n    if (!document.hidden && isVisible(elementRef.current)) {\n      next();\n    }\n  });\n  var slideDirection = direction === 'next' ? 'left' : 'right';\n  useUpdateEffect(function () {\n    if (slide) {\n      // These callbacks will be handled by the <Transition> callbacks.\n      return;\n    }\n\n    if (onSlide) {\n      onSlide(renderedActiveIndex, slideDirection);\n    }\n\n    if (onSlid) {\n      onSlid(renderedActiveIndex, slideDirection);\n    }\n  }, [renderedActiveIndex]);\n  var orderClassName = prefix + \"-item-\" + direction;\n  var directionalClassName = prefix + \"-item-\" + slideDirection;\n  var handleEnter = useCallback(function (node) {\n    triggerBrowserReflow(node);\n\n    if (onSlide) {\n      onSlide(renderedActiveIndex, slideDirection);\n    }\n  }, [onSlide, renderedActiveIndex, slideDirection]);\n  var handleEntered = useCallback(function () {\n    setIsSliding(false);\n\n    if (onSlid) {\n      onSlid(renderedActiveIndex, slideDirection);\n    }\n  }, [onSlid, renderedActiveIndex, slideDirection]);\n  var handleKeyDown = useCallback(function (event) {\n    if (keyboard && !/input|textarea/i.test(event.target.tagName)) {\n      switch (event.key) {\n        case 'ArrowLeft':\n          event.preventDefault();\n          prev(event);\n          return;\n\n        case 'ArrowRight':\n          event.preventDefault();\n          next(event);\n          return;\n\n        default:\n      }\n    }\n\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  }, [keyboard, onKeyDown, prev, next]);\n  var handleMouseOver = useCallback(function (event) {\n    if (pause === 'hover') {\n      setPaused(true);\n    }\n\n    if (onMouseOver) {\n      onMouseOver(event);\n    }\n  }, [pause, onMouseOver]);\n  var handleMouseOut = useCallback(function (event) {\n    setPaused(false);\n\n    if (onMouseOut) {\n      onMouseOut(event);\n    }\n  }, [onMouseOut]);\n  var touchStartXRef = useRef(0);\n  var touchDeltaXRef = useRef(0);\n  var touchUnpauseTimeout = useTimeout();\n  var handleTouchStart = useCallback(function (event) {\n    touchStartXRef.current = event.touches[0].clientX;\n    touchDeltaXRef.current = 0;\n\n    if (pause === 'hover') {\n      setPaused(true);\n    }\n\n    if (onTouchStart) {\n      onTouchStart(event);\n    }\n  }, [pause, onTouchStart]);\n  var handleTouchMove = useCallback(function (event) {\n    if (event.touches && event.touches.length > 1) {\n      touchDeltaXRef.current = 0;\n    } else {\n      touchDeltaXRef.current = event.touches[0].clientX - touchStartXRef.current;\n    }\n\n    if (onTouchMove) {\n      onTouchMove(event);\n    }\n  }, [onTouchMove]);\n  var handleTouchEnd = useCallback(function (event) {\n    if (touch) {\n      var touchDeltaX = touchDeltaXRef.current;\n\n      if (Math.abs(touchDeltaX) > SWIPE_THRESHOLD) {\n        if (touchDeltaX > 0) {\n          prev(event);\n        } else {\n          next(event);\n        }\n      }\n    }\n\n    if (pause === 'hover') {\n      touchUnpauseTimeout.set(function () {\n        setPaused(false);\n      }, interval || undefined);\n    }\n\n    if (onTouchEnd) {\n      onTouchEnd(event);\n    }\n  }, [touch, pause, prev, next, touchUnpauseTimeout, interval, onTouchEnd]);\n  var shouldPlay = interval != null && !paused && !isSliding;\n  var intervalHandleRef = useRef();\n  useEffect(function () {\n    var _ref, _activeChildIntervalR;\n\n    if (!shouldPlay) {\n      return undefined;\n    }\n\n    intervalHandleRef.current = window.setInterval(document.visibilityState ? nextWhenVisible : next, (_ref = (_activeChildIntervalR = activeChildIntervalRef.current) != null ? _activeChildIntervalR : interval) != null ? _ref : undefined);\n    return function () {\n      if (intervalHandleRef.current !== null) {\n        clearInterval(intervalHandleRef.current);\n      }\n    };\n  }, [shouldPlay, next, activeChildIntervalRef, interval, nextWhenVisible]);\n  var indicatorOnClicks = useMemo(function () {\n    return indicators && Array.from({\n      length: numChildren\n    }, function (_, index) {\n      return function (event) {\n        if (onSelect) {\n          onSelect(index, event);\n        }\n      };\n    });\n  }, [indicators, numChildren, onSelect]);\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: elementRef\n  }, props, {\n    onKeyDown: handleKeyDown,\n    onMouseOver: handleMouseOver,\n    onMouseOut: handleMouseOut,\n    onTouchStart: handleTouchStart,\n    onTouchMove: handleTouchMove,\n    onTouchEnd: handleTouchEnd,\n    className: classNames(className, prefix, slide && 'slide', fade && prefix + \"-fade\")\n  }), indicators && /*#__PURE__*/React.createElement(\"ol\", {\n    className: prefix + \"-indicators\"\n  }, map(children, function (_child, index) {\n    return /*#__PURE__*/React.createElement(\"li\", {\n      key: index,\n      className: index === renderedActiveIndex ? 'active' : undefined,\n      onClick: indicatorOnClicks ? indicatorOnClicks[index] : undefined\n    });\n  })), /*#__PURE__*/React.createElement(\"div\", {\n    className: prefix + \"-inner\"\n  }, map(children, function (child, index) {\n    var isActive = index === renderedActiveIndex;\n    return slide ? /*#__PURE__*/React.createElement(Transition, {\n      in: isActive,\n      onEnter: isActive ? handleEnter : undefined,\n      onEntered: isActive ? handleEntered : undefined,\n      addEndListener: transitionEnd\n    }, function (status) {\n      return /*#__PURE__*/React.cloneElement(child, {\n        className: classNames(child.props.className, isActive && status !== 'entered' && orderClassName, (status === 'entered' || status === 'exiting') && 'active', (status === 'entering' || status === 'exiting') && directionalClassName)\n      });\n    }) : /*#__PURE__*/React.cloneElement(child, {\n      className: classNames(child.props.className, isActive && 'active')\n    });\n  })), controls && /*#__PURE__*/React.createElement(React.Fragment, null, (wrap || activeIndex !== 0) && /*#__PURE__*/React.createElement(SafeAnchor, {\n    className: prefix + \"-control-prev\",\n    onClick: prev\n  }, prevIcon, prevLabel && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, prevLabel)), (wrap || activeIndex !== numChildren - 1) && /*#__PURE__*/React.createElement(SafeAnchor, {\n    className: prefix + \"-control-next\",\n    onClick: next\n  }, nextIcon, nextLabel && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, nextLabel))));\n}\n\nvar Carousel = /*#__PURE__*/React.forwardRef(CarouselFunc);\nCarousel.displayName = 'Carousel';\nCarousel.propTypes = propTypes;\nCarousel.defaultProps = defaultProps;\nCarousel.Caption = CarouselCaption;\nCarousel.Item = CarouselItem;\nexport default Carousel;","import { useEffect, useRef } from 'react';\n/**\n * Runs an effect only when the dependencies have changed, skipping the\n * initial \"on mount\" run. Caution, if the dependency list never changes,\n * the effect is **never run**\n *\n * ```ts\n *  const ref = useRef<HTMLInput>(null);\n *\n *  // focuses an element only if the focus changes, and not on mount\n *  useUpdateEffect(() => {\n *    const element = ref.current?.children[focusedIdx] as HTMLElement\n *\n *    element?.focus()\n *\n *  }, [focusedIndex])\n * ```\n * @param effect An effect to run on mount\n *\n * @category effects\n */\n\nfunction useUpdateEffect(fn, deps) {\n  var isFirst = useRef(true);\n  useEffect(function () {\n    if (isFirst.current) {\n      isFirst.current = false;\n      return;\n    }\n\n    return fn();\n  }, deps);\n}\n\nexport default useUpdateEffect;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\n// IE8- non-standard case\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection\n  return new Date(16e11).getYear() !== 120;\n});\n\nvar getFullYear = uncurryThis(Date.prototype.getFullYear);\n\n// `Date.prototype.getYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.getyear\n$({ target: 'Date', proto: true, forced: FORCED }, {\n  getYear: function getYear() {\n    return getFullYear(this) - 1900;\n  }\n});\n","\"use strict\";\n\n/*jshint esversion: 6 */\n\nvar Distance = require(\"./distance.js\"),\n    ClusterInit = require(\"./kinit.js\"),\n    eudist = Distance.eudist,\n    mandist = Distance.mandist,\n    dist = Distance.dist,\n    kmrand = ClusterInit.kmrand,\n    kmpp = ClusterInit.kmpp;\n\nvar MAX = 10000;\n\n/**\n * Inits an array with values\n */\nfunction init(len, val, v) {\n\tv = v || [];\n\tfor (var i = 0; i < len; i++) {\n\t\tv[i] = val;\n\t}return v;\n}\n\nfunction skmeans(data, k, initial, maxit) {\n\tvar ks = [],\n\t    old = [],\n\t    idxs = [],\n\t    dist = [];\n\tvar conv = false,\n\t    it = maxit || MAX;\n\tvar len = data.length,\n\t    vlen = data[0].length,\n\t    multi = vlen > 0;\n\tvar count = [];\n\n\tif (!initial) {\n\t\tvar _idxs = {};\n\t\twhile (ks.length < k) {\n\t\t\tvar idx = Math.floor(Math.random() * len);\n\t\t\tif (!_idxs[idx]) {\n\t\t\t\t_idxs[idx] = true;\n\t\t\t\tks.push(data[idx]);\n\t\t\t}\n\t\t}\n\t} else if (initial == \"kmrand\") {\n\t\tks = kmrand(data, k);\n\t} else if (initial == \"kmpp\") {\n\t\tks = kmpp(data, k);\n\t} else {\n\t\tks = initial;\n\t}\n\n\tdo {\n\t\t// Reset k count\n\t\tinit(k, 0, count);\n\n\t\t// For each value in data, find the nearest centroid\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar min = Infinity,\n\t\t\t    _idx = 0;\n\t\t\tfor (var j = 0; j < k; j++) {\n\t\t\t\t// Multidimensional or unidimensional\n\t\t\t\tvar dist = multi ? eudist(data[i], ks[j]) : Math.abs(data[i] - ks[j]);\n\t\t\t\tif (dist <= min) {\n\t\t\t\t\tmin = dist;\n\t\t\t\t\t_idx = j;\n\t\t\t\t}\n\t\t\t}\n\t\t\tidxs[i] = _idx; // Index of the selected centroid for that value\n\t\t\tcount[_idx]++; // Number of values for this centroid\n\t\t}\n\n\t\t// Recalculate centroids\n\t\tvar sum = [],\n\t\t    old = [],\n\t\t    dif = 0;\n\t\tfor (var _j = 0; _j < k; _j++) {\n\t\t\t// Multidimensional or unidimensional\n\t\t\tsum[_j] = multi ? init(vlen, 0, sum[_j]) : 0;\n\t\t\told[_j] = ks[_j];\n\t\t}\n\n\t\t// If multidimensional\n\t\tif (multi) {\n\t\t\tfor (var _j2 = 0; _j2 < k; _j2++) {\n\t\t\t\tks[_j2] = [];\n\t\t\t} // Sum values and count for each centroid\n\t\t\tfor (var _i = 0; _i < len; _i++) {\n\t\t\t\tvar _idx2 = idxs[_i],\n\t\t\t\t    // Centroid for that item\n\t\t\t\tvsum = sum[_idx2],\n\t\t\t\t    // Sum values for this centroid\n\t\t\t\tvect = data[_i]; // Current vector\n\n\t\t\t\t// Accumulate value on the centroid for current vector\n\t\t\t\tfor (var h = 0; h < vlen; h++) {\n\t\t\t\t\tvsum[h] += vect[h];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Calculate the average for each centroid\n\t\t\tconv = true;\n\t\t\tfor (var _j3 = 0; _j3 < k; _j3++) {\n\t\t\t\tvar ksj = ks[_j3],\n\t\t\t\t    // Current centroid\n\t\t\t\tsumj = sum[_j3],\n\t\t\t\t    // Accumulated centroid values\n\t\t\t\toldj = old[_j3],\n\t\t\t\t    // Old centroid value\n\t\t\t\tcj = count[_j3]; // Number of elements for this centroid\n\n\t\t\t\t// New average\n\t\t\t\tfor (var _h = 0; _h < vlen; _h++) {\n\t\t\t\t\tksj[_h] = sumj[_h] / cj || 0; // New centroid\n\t\t\t\t}\n\n\t\t\t\t// Find if centroids have moved\n\t\t\t\tif (conv) {\n\t\t\t\t\tfor (var _h2 = 0; _h2 < vlen; _h2++) {\n\t\t\t\t\t\tif (oldj[_h2] != ksj[_h2]) {\n\t\t\t\t\t\t\tconv = false;\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}\n\t\t\t}\n\t\t}\n\t\t// If unidimensional\n\t\telse {\n\t\t\t\t// Sum values and count for each centroid\n\t\t\t\tfor (var _i2 = 0; _i2 < len; _i2++) {\n\t\t\t\t\tvar _idx3 = idxs[_i2];\n\t\t\t\t\tsum[_idx3] += data[_i2];\n\t\t\t\t}\n\t\t\t\t// Calculate the average for each centroid\n\t\t\t\tfor (var _j4 = 0; _j4 < k; _j4++) {\n\t\t\t\t\tks[_j4] = sum[_j4] / count[_j4] || 0; // New centroid\n\t\t\t\t}\n\t\t\t\t// Find if centroids have moved\n\t\t\t\tconv = true;\n\t\t\t\tfor (var _j5 = 0; _j5 < k; _j5++) {\n\t\t\t\t\tif (old[_j5] != ks[_j5]) {\n\t\t\t\t\t\tconv = 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\tconv = conv || --it <= 0;\n\t} while (!conv);\n\n\treturn {\n\t\tit: MAX - it,\n\t\tk: k,\n\t\tidxs: idxs,\n\t\tcentroids: ks\n\t};\n}\n\nmodule.exports = skmeans;\n//# sourceMappingURL=main.js.500bafd7.map\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineBuiltInAccessor(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar glob_1 = require(\"../common/glob\");\nvar predicates_1 = require(\"../common/predicates\");\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nvar StateObject = /** @class */ (function () {\n    /** @deprecated use State.create() */\n    function StateObject(config) {\n        return StateObject.create(config || {});\n    }\n    /**\n     * Create a state object to put the private/internal implementation details onto.\n     * The object's prototype chain looks like:\n     * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n     *\n     * @param stateDecl the user-supplied State Declaration\n     * @returns {StateObject} an internal State object\n     */\n    StateObject.create = function (stateDecl) {\n        stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n        var state = common_1.inherit(common_1.inherit(stateDecl, StateObject.prototype));\n        stateDecl.$$state = function () { return state; };\n        state.self = stateDecl;\n        state.__stateObjectCache = {\n            nameGlob: glob_1.Glob.fromString(state.name),\n        };\n        return state;\n    };\n    /**\n     * Returns true if the provided parameter is the same state.\n     *\n     * Compares the identity of the state against the passed value, which is either an object\n     * reference to the actual `State` instance, the original definition object passed to\n     * `$stateProvider.state()`, or the fully-qualified name.\n     *\n     * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n     *        into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n     * @returns Returns `true` if `ref` matches the current `State` instance.\n     */\n    StateObject.prototype.is = function (ref) {\n        return this === ref || this.self === ref || this.fqn() === ref;\n    };\n    /**\n     * @deprecated this does not properly handle dot notation\n     * @returns Returns a dot-separated name of the state.\n     */\n    StateObject.prototype.fqn = function () {\n        if (!this.parent || !(this.parent instanceof this.constructor))\n            return this.name;\n        var name = this.parent.fqn();\n        return name ? name + '.' + this.name : this.name;\n    };\n    /**\n     * Returns the root node of this state's tree.\n     *\n     * @returns The root of this state's tree.\n     */\n    StateObject.prototype.root = function () {\n        return this.parent && this.parent.root() || this;\n    };\n    /**\n     * Gets the state's `Param` objects\n     *\n     * Gets the list of [[Param]] objects owned by the state.\n     * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n     * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n     *\n     * @param opts options\n     */\n    StateObject.prototype.parameters = function (opts) {\n        opts = common_1.defaults(opts, { inherit: true, matchingKeys: null });\n        var inherited = opts.inherit && this.parent && this.parent.parameters() || [];\n        return inherited.concat(common_1.values(this.params))\n            .filter(function (param) { return !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id); });\n    };\n    /**\n     * Returns a single [[Param]] that is owned by the state\n     *\n     * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n     * @param id the name of the [[Param]] to return\n     * @param opts options\n     */\n    StateObject.prototype.parameter = function (id, opts) {\n        if (opts === void 0) { opts = {}; }\n        return (this.url && this.url.parameter(id, opts) ||\n            common_1.find(common_1.values(this.params), hof_1.propEq('id', id)) ||\n            opts.inherit && this.parent && this.parent.parameter(id));\n    };\n    StateObject.prototype.toString = function () {\n        return this.fqn();\n    };\n    /** Predicate which returns true if the object is an class with @State() decorator */\n    StateObject.isStateClass = function (stateDecl) {\n        return predicates_1.isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n    };\n    /** Predicate which returns true if the object is an internal [[StateObject]] object */\n    StateObject.isState = function (obj) {\n        return predicates_1.isObject(obj['__stateObjectCache']);\n    };\n    return StateObject;\n}());\nexports.StateObject = StateObject;\n//# sourceMappingURL=stateObject.js.map","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalParticipantSignaling = require('../localparticipant');\nvar LocalTrackPublicationV2 = require('./localtrackpublication');\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, isDeepEqual = _a.isDeepEqual;\n/**\n * @extends ParticipantSignaling\n * @property {BandwidthProfileOptions} bandwidthProfile\n * @property {NetworkQualityConfigurationImpl} networkQualityConfiguration\n * @property {number} revision\n * @emits LocalParticipantV2#updated\n */\nvar LocalParticipantV2 = /** @class */ (function (_super) {\n    __extends(LocalParticipantV2, _super);\n    /**\n     * Construct a {@link LocalParticipantV2}.\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n     * @param {object} [options]\n     */\n    function LocalParticipantV2(encodingParameters, networkQualityConfiguration, options) {\n        var _this = this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL,\n            LocalTrackPublicationV2: LocalTrackPublicationV2\n        }, options);\n        _this = _super.call(this) || this;\n        var logLevels = buildLogLevels(options.logLevel);\n        Object.defineProperties(_this, {\n            _bandwidthProfile: {\n                value: null,\n                writable: true\n            },\n            _bandwidthProfileRevision: {\n                value: 0,\n                writable: true\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _removeListeners: {\n                value: new Map()\n            },\n            _LocalTrackPublicationV2: {\n                value: options.LocalTrackPublicationV2\n            },\n            _log: {\n                value: options.log\n                    ? options.log.createLog('default', _this)\n                    : new Log('default', _this, logLevels, options.loggerName)\n            },\n            _publishedRevision: {\n                writable: true,\n                value: 0\n            },\n            _revision: {\n                writable: true,\n                value: 1\n            },\n            _signalingRegion: {\n                value: null,\n                writable: true\n            },\n            audioProcessors: {\n                value: [],\n                writable: true\n            },\n            bandwidthProfile: {\n                enumerable: true,\n                get: function () {\n                    return this._bandwidthProfile;\n                }\n            },\n            bandwidthProfileRevision: {\n                enumerable: true,\n                get: function () {\n                    return this._bandwidthProfileRevision;\n                }\n            },\n            networkQualityConfiguration: {\n                enumerable: true,\n                value: networkQualityConfiguration\n            },\n            revision: {\n                enumerable: true,\n                get: function () {\n                    return this._revision;\n                }\n            },\n            signalingRegion: {\n                enumerable: true,\n                get: function () {\n                    return this._signalingRegion;\n                }\n            }\n        });\n        return _this;\n    }\n    LocalParticipantV2.prototype.toString = function () {\n        return \"[LocalParticipantSignaling: \" + this.sid + \"]\";\n    };\n    /**\n     * Set the signalingRegion.\n     * @param {string} signalingRegion.\n     */\n    LocalParticipantV2.prototype.setSignalingRegion = function (signalingRegion) {\n        if (!this._signalingRegion) {\n            this._signalingRegion = signalingRegion;\n        }\n    };\n    /**\n     * Update the {@link BandwidthProfileOptions}.\n     * @param {BandwidthProfileOptions} bandwidthProfile\n     */\n    LocalParticipantV2.prototype.setBandwidthProfile = function (bandwidthProfile) {\n        if (!isDeepEqual(this._bandwidthProfile, bandwidthProfile)) {\n            // NOTE(mmalavalli): Object.assign() copies the values of only\n            // the top level properties. In order to deep copy the object, we\n            // stringify and parse the object.\n            this._bandwidthProfile = JSON.parse(JSON.stringify(bandwidthProfile));\n            this._bandwidthProfileRevision++;\n            this.didUpdate();\n        }\n    };\n    /**\n     * Sets the AudioProcessors enabled for this room.\n     * @param {string[]} audioProcessors\n     */\n    LocalParticipantV2.prototype.setAudioProcessors = function (audioProcessors) {\n        this.audioProcessors = audioProcessors;\n    };\n    /**\n     * returns current {@link EncodingParametersImpl}.\n     * @returns {EncodingParametersImpl}\n     */\n    LocalParticipantV2.prototype.getParameters = function () {\n        return this._encodingParameters;\n    };\n    /**\n     * Set the {@link EncodingParameters}.\n     * @param {?EncodingParameters} encodingParameters\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.setParameters = function (encodingParameters) {\n        this._encodingParameters.update(encodingParameters);\n        return this;\n    };\n    /**\n     * Update the {@link LocalParticipantV2} with the new state.\n     * @param {Published} published\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.update = function (published) {\n        if (this._publishedRevision >= published.revision) {\n            return this;\n        }\n        this._publishedRevision = published.revision;\n        published.tracks.forEach(function (publicationState) {\n            var localTrackPublicationV2 = this.tracks.get(publicationState.id);\n            if (localTrackPublicationV2) {\n                localTrackPublicationV2.update(publicationState);\n            }\n        }, this);\n        return this;\n    };\n    LocalParticipantV2.prototype.updateMediaStates = function (mediaStates) {\n        if (!mediaStates || !mediaStates.tracks) {\n            return this;\n        }\n        Array.from(this.tracks.values()).forEach(function (publication) {\n            var states = mediaStates.tracks[publication.sid];\n            if (states) {\n                publication.updateMediaStates(states);\n            }\n        });\n        return this;\n    };\n    /**\n     * @protected\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @returns {LocalTrackPublicationV2}\n     */\n    LocalParticipantV2.prototype._createLocalTrackPublicationSignaling = function (trackSender, name, priority, noiseCancellationVendor) {\n        return new this._LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, { log: this._log });\n    };\n    /**\n     * Add a {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n     * or {@link MediaTrackSender} to the {@link LocalParticipantV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n        var _this = this;\n        _super.prototype.addTrack.call(this, trackSender, name, priority, noiseCancellationVendor);\n        var publication = this.getPublication(trackSender);\n        var isEnabled = publication.isEnabled, updatedPriority = publication.updatedPriority;\n        var updated = function () {\n            // NOTE(mmalavalli): The LocalParticipantV2's state is only published if\n            // the \"updated\" event is emitted due to LocalTrackPublicationV2's\n            // .isEnabled or .updatedPriority being changed. We do not publish if it is fired due to the\n            // LocalTrackPublicationV2's .sid being set.\n            if (isEnabled !== publication.isEnabled || updatedPriority !== publication.updatedPriority) {\n                _this.didUpdate();\n                isEnabled = publication.isEnabled;\n                updatedPriority = publication.updatedPriority;\n            }\n        };\n        publication.on('updated', updated);\n        this._removeListener(publication);\n        this._removeListeners.set(publication, function () { return publication.removeListener('updated', updated); });\n        this.didUpdate();\n        return this;\n    };\n    /**\n     * @private\n     * @param {LocalTrackPublicationV2} publication\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype._removeListener = function (publication) {\n        var removeListener = this._removeListeners.get(publication);\n        if (removeListener) {\n            removeListener();\n        }\n    };\n    /**\n     * Get the current state of the {@link LocalParticipantV2}.\n     * @returns {object}\n     */\n    LocalParticipantV2.prototype.getState = function () {\n        return {\n            revision: this.revision,\n            tracks: Array.from(this.tracks.values()).map(function (track) { return track.getState(); })\n        };\n    };\n    /**\n     * Increment the revision for the {@link LocalParticipantV2}.\n     * @private\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype.didUpdate = function () {\n        this._revision++;\n        this.emit('updated');\n    };\n    /**\n     * Remove the {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n     * or {@link MediaTrackSender} from the {@link LocalParticipantV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationV2}\n     */\n    LocalParticipantV2.prototype.removeTrack = function (trackSender) {\n        var publication = _super.prototype.removeTrack.call(this, trackSender);\n        if (publication) {\n            trackSender.removeClone(publication.trackTransceiver);\n            this._removeListener(publication);\n            this.didUpdate();\n        }\n        return publication;\n    };\n    /**\n     * Updates the verbosity of network quality information.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n        this.networkQualityConfiguration.update(networkQualityConfiguration);\n    };\n    /**\n     * updates encodings for simulcast layers.\n     * @param {Track.SID} trackSid\n     * @param {Array<{enabled: boolean, layer_index: number}>} encodings\n     * @returns {Promise<string>} string indicating result of the operation. can be one of\n     *  \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n     */\n    LocalParticipantV2.prototype.setPublisherHint = function (trackSid, encodings) {\n        var trackSignaling = Array.from(this.tracks.values()).find(function (trackPub) { return trackPub.sid === trackSid; });\n        if (!trackSignaling) {\n            this._log.warn(\"track:\" + trackSid + \" not found\");\n            return Promise.resolve('UNKNOWN_TRACK');\n        }\n        return trackSignaling.trackTransceiver.setPublisherHint(encodings);\n    };\n    return LocalParticipantV2;\n}(LocalParticipantSignaling));\n/**\n * @interface Published\n * @property {number} revision\n * @property {Array<PublishedTrack>} tracks\n */\n/**\n * @typedef {CreatedTrack|ReadyTrack|FailedTrack} PublishedTrack\n */\n/**\n * @interface CreatedTrack\n * @property {Track.ID} id\n * @property {string} state - \"created\"\n */\n/**\n * @interface ReadyTrack\n * @property {Track.ID} id\n * @property {Track.SID} sid\n * @property {string} state - \"ready\"\n */\n/**\n * @interface FailedTrack\n * @property {Track.ID} id\n * @property {TrackError} error\n * @property {string} state - \"failed\"\n */\n/**\n * @interface TrackError\n * @property {number} code\n * @property {string} message\n */\n/**\n * @event LocalParticipantV2#updated\n */\nmodule.exports = LocalParticipantV2;\n//# sourceMappingURL=localparticipant.js.map","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar log10 = require('../internals/math-log10');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar round = Math.round;\nvar nativeToExponential = uncurryThis(1.1.toExponential);\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\n\n// Edge 17-\nvar ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'\n  // IE11- && Edge 14-\n  && nativeToExponential(1.255, 2) === '1.25e+0'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(12345, 3) === '1.235e+4'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(25, 0) === '3e+1';\n\n// IE8-\nvar throwsOnInfinityFraction = function () {\n  return fails(function () {\n    nativeToExponential(1, Infinity);\n  }) && fails(function () {\n    nativeToExponential(1, -Infinity);\n  });\n};\n\n// Safari <11 && FF <50\nvar properNonFiniteThisCheck = function () {\n  return !fails(function () {\n    nativeToExponential(Infinity, Infinity);\n    nativeToExponential(NaN, Infinity);\n  });\n};\n\nvar FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();\n\n// `Number.prototype.toExponential` method\n// https://tc39.es/ecma262/#sec-number.prototype.toexponential\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toExponential: function toExponential(fractionDigits) {\n    var x = thisNumberValue(this);\n    if (fractionDigits === undefined) return nativeToExponential(x);\n    var f = toIntegerOrInfinity(fractionDigits);\n    if (!$isFinite(x)) return String(x);\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (f < 0 || f > 20) throw new $RangeError('Incorrect fraction digits');\n    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);\n    var s = '';\n    var m, e, c, d;\n    if (x < 0) {\n      s = '-';\n      x = -x;\n    }\n    if (x === 0) {\n      e = 0;\n      m = repeat('0', f + 1);\n    } else {\n      // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08\n      // TODO: improve accuracy with big fraction digits\n      var l = log10(x);\n      e = floor(l);\n      var w = pow(10, e - f);\n      var n = round(x / w);\n      if (2 * x >= (2 * n + 1) * w) {\n        n += 1;\n      }\n      if (n >= pow(10, f + 1)) {\n        n /= 10;\n        e += 1;\n      }\n      m = $String(n);\n    }\n    if (f !== 0) {\n      m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1);\n    }\n    if (e === 0) {\n      c = '+';\n      d = '0';\n    } else {\n      c = e > 0 ? '+' : '-';\n      d = $String(abs(e));\n    }\n    m += 'e' + c + d;\n    return s + m;\n  }\n});\n","/*!\n  * $script.js JS loader & dependency manager\n  * https://github.com/ded/script.js\n  * (c) Dustin Diaz 2014 | License MIT\n  */\n\n(function (name, definition) {\n  if (typeof module != 'undefined' && module.exports) module.exports = definition()\n  else if (typeof define == 'function' && define.amd) define(definition)\n  else this[name] = definition()\n})('$script', function () {\n  var doc = document\n    , head = doc.getElementsByTagName('head')[0]\n    , s = 'string'\n    , f = false\n    , push = 'push'\n    , readyState = 'readyState'\n    , onreadystatechange = 'onreadystatechange'\n    , list = {}\n    , ids = {}\n    , delay = {}\n    , scripts = {}\n    , scriptpath\n    , urlArgs\n\n  function every(ar, fn) {\n    for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f\n    return 1\n  }\n  function each(ar, fn) {\n    every(ar, function (el) {\n      fn(el)\n      return 1\n    })\n  }\n\n  function $script(paths, idOrDone, optDone) {\n    paths = paths[push] ? paths : [paths]\n    var idOrDoneIsDone = idOrDone && idOrDone.call\n      , done = idOrDoneIsDone ? idOrDone : optDone\n      , id = idOrDoneIsDone ? paths.join('') : idOrDone\n      , queue = paths.length\n    function loopFn(item) {\n      return item.call ? item() : list[item]\n    }\n    function callback() {\n      if (!--queue) {\n        list[id] = 1\n        done && done()\n        for (var dset in delay) {\n          every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = [])\n        }\n      }\n    }\n    setTimeout(function () {\n      each(paths, function loading(path, force) {\n        if (path === null) return callback()\n        \n        if (!force && !/^https?:\\/\\//.test(path) && scriptpath) {\n          path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path;\n        }\n        \n        if (scripts[path]) {\n          if (id) ids[id] = 1\n          return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0)\n        }\n\n        scripts[path] = 1\n        if (id) ids[id] = 1\n        create(path, callback)\n      })\n    }, 0)\n    return $script\n  }\n\n  function create(path, fn) {\n    var el = doc.createElement('script'), loaded\n    el.onload = el.onerror = el[onreadystatechange] = function () {\n      if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return;\n      el.onload = el[onreadystatechange] = null\n      loaded = 1\n      scripts[path] = 2\n      fn()\n    }\n    el.async = 1\n    el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;\n    head.insertBefore(el, head.lastChild)\n  }\n\n  $script.get = create\n\n  $script.order = function (scripts, id, done) {\n    (function callback(s) {\n      s = scripts.shift()\n      !scripts.length ? $script(s, id, done) : $script(s, callback)\n    }())\n  }\n\n  $script.path = function (p) {\n    scriptpath = p\n  }\n  $script.urlArgs = function (str) {\n    urlArgs = str;\n  }\n  $script.ready = function (deps, ready, req) {\n    deps = deps[push] ? deps : [deps]\n    var missing = [];\n    !each(deps, function (dep) {\n      list[dep] || missing[push](dep);\n    }) && every(deps, function (dep) {return list[dep]}) ?\n      ready() : !function (key) {\n      delay[key] = delay[key] || []\n      delay[key][push](ready)\n      req && req(missing)\n    }(deps.join('|'))\n    return $script\n  }\n\n  $script.done = function (idOrDone) {\n    $script([null], idOrDone)\n  }\n\n  return $script\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","import ownerWindow from './ownerWindow';\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.routerActions = exports.goForward = exports.goBack = exports.go = exports.replace = exports.push = exports.CALL_HISTORY_METHOD = exports.onLocationChanged = exports.LOCATION_CHANGE = void 0;\n\n/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nvar LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\nexports.LOCATION_CHANGE = LOCATION_CHANGE;\n\nvar onLocationChanged = function onLocationChanged(location, action) {\n  var isFirstRendering = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return {\n    type: LOCATION_CHANGE,\n    payload: {\n      location: location,\n      action: action,\n      isFirstRendering: isFirstRendering\n    }\n  };\n};\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\n\n\nexports.onLocationChanged = onLocationChanged;\nvar CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\nexports.CALL_HISTORY_METHOD = CALL_HISTORY_METHOD;\n\nvar updateLocation = function updateLocation(method) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return {\n      type: CALL_HISTORY_METHOD,\n      payload: {\n        method: method,\n        args: args\n      }\n    };\n  };\n};\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\n\n\nvar push = updateLocation('push');\nexports.push = push;\nvar replace = updateLocation('replace');\nexports.replace = replace;\nvar go = updateLocation('go');\nexports.go = go;\nvar goBack = updateLocation('goBack');\nexports.goBack = goBack;\nvar goForward = updateLocation('goForward');\nexports.goForward = goForward;\nvar routerActions = {\n  push: push,\n  replace: replace,\n  go: go,\n  goBack: goBack,\n  goForward: goForward\n};\nexports.routerActions = routerActions;","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar MediaStream = require('../../webrtc').MediaStream;\nvar _a = require('../../util'), waitForEvent = _a.waitForEvent, waitForSometime = _a.waitForSometime;\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar Track = require('./');\n/**\n * A {@link MediaTrack} represents audio or video that can be sent to or\n * received from a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - This {@link Track}'s ID\n * @property {boolean} isStarted - Whether or not the {@link MediaTrack} has\n *   started\n * @property {boolean} isEnabled - Whether or not the {@link MediaTrack} is\n *   enabled (i.e., whether it is paused or muted)\n * @property {Track.Kind} kind - The kind of the underlying\n *   MediaStreamTrack, \"audio\" or \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - The underlying\n *   MediaStreamTrack\n * @emits MediaTrack#disabled\n * @emits MediaTrack#enabled\n * @emits MediaTrack#started\n */\nvar MediaTrack = /** @class */ (function (_super) {\n    __extends(MediaTrack, _super);\n    /**\n     * Construct a {@link MediaTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function MediaTrack(mediaTrackTransceiver, options) {\n        var _this = this;\n        options = Object.assign({\n            playPausedElementsIfNotBackgrounded: isIOS()\n                && typeof document === 'object'\n                && typeof document.addEventListener === 'function'\n                && typeof document.visibilityState === 'string'\n        }, options);\n        _this = _super.call(this, mediaTrackTransceiver.id, mediaTrackTransceiver.kind, options) || this;\n        var isStarted = false;\n        options = Object.assign({\n            MediaStream: MediaStream\n        }, options);\n        /* istanbul ignore next */\n        Object.defineProperties(_this, {\n            _attachments: {\n                value: new Set()\n            },\n            _dummyEl: {\n                value: null,\n                writable: true\n            },\n            _elShims: {\n                value: new WeakMap()\n            },\n            _isStarted: {\n                get: function () {\n                    return isStarted;\n                },\n                set: function (_isStarted) {\n                    isStarted = _isStarted;\n                }\n            },\n            _playPausedElementsIfNotBackgrounded: {\n                value: options.playPausedElementsIfNotBackgrounded\n            },\n            _shouldShimAttachedElements: {\n                value: options.workaroundWebKitBug212780\n                    || options.playPausedElementsIfNotBackgrounded\n            },\n            _unprocessedTrack: {\n                value: null,\n                writable: true\n            },\n            _MediaStream: {\n                value: options.MediaStream\n            },\n            isStarted: {\n                enumerable: true,\n                get: function () {\n                    return isStarted;\n                }\n            },\n            mediaStreamTrack: {\n                enumerable: true,\n                get: function () {\n                    return this._unprocessedTrack || mediaTrackTransceiver.track;\n                }\n            },\n            processedTrack: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        _this._initialize();\n        return _this;\n    }\n    /**\n     * @private\n     */\n    MediaTrack.prototype._start = function () {\n        this._log.debug('Started');\n        this._isStarted = true;\n        if (this._dummyEl) {\n            this._dummyEl.oncanplay = null;\n        }\n        // eslint-disable-next-line no-use-before-define\n        this.emit('started', this);\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._initialize = function () {\n        var self = this;\n        this._log.debug('Initializing');\n        this._dummyEl = this._createElement();\n        this.mediaStreamTrack.addEventListener('ended', function onended() {\n            self._end();\n            self.mediaStreamTrack.removeEventListener('ended', onended);\n        });\n        if (this._dummyEl) {\n            this._dummyEl.muted = true;\n            this._dummyEl.oncanplay = this._start.bind(this, this._dummyEl);\n            // NOTE(csantos): We always want to attach the original mediaStreamTrack for dummyEl\n            this._attach(this._dummyEl, this.mediaStreamTrack);\n            this._attachments.delete(this._dummyEl);\n        }\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._end = function () {\n        this._log.debug('Ended');\n        if (this._dummyEl) {\n            this._dummyEl.remove();\n            this._dummyEl.srcObject = null;\n            this._dummyEl.oncanplay = null;\n            this._dummyEl = null;\n        }\n    };\n    MediaTrack.prototype.attach = function (el) {\n        var _this = this;\n        if (typeof el === 'string') {\n            el = this._selectElement(el);\n        }\n        else if (!el) {\n            el = this._createElement();\n        }\n        this._log.debug('Attempting to attach to element:', el);\n        el = this._attach(el);\n        if (this._shouldShimAttachedElements && !this._elShims.has(el)) {\n            var onUnintentionallyPaused = this._playPausedElementsIfNotBackgrounded\n                ? function () { return playIfPausedAndNotBackgrounded(el, _this._log); }\n                : null;\n            this._elShims.set(el, shimMediaElement(el, onUnintentionallyPaused));\n        }\n        return el;\n    };\n    /**\n     * Attach the provided MediaStreamTrack to the media element.\n     * @param el - The media element to attach to\n     * @param mediaStreamTrack - The MediaStreamTrack to attach. If this is\n     * not provided, it uses the processedTrack if it exists\n     * or it defaults to the current mediaStreamTrack\n     * @private\n     */\n    MediaTrack.prototype._attach = function (el, mediaStreamTrack) {\n        if (mediaStreamTrack === void 0) { mediaStreamTrack = this.processedTrack || this.mediaStreamTrack; }\n        var mediaStream = el.srcObject;\n        if (!(mediaStream instanceof this._MediaStream)) {\n            mediaStream = new this._MediaStream();\n        }\n        var getTracks = mediaStreamTrack.kind === 'audio'\n            ? 'getAudioTracks'\n            : 'getVideoTracks';\n        mediaStream[getTracks]().forEach(function (track) {\n            mediaStream.removeTrack(track);\n        });\n        mediaStream.addTrack(mediaStreamTrack);\n        // NOTE(mpatwardhan): resetting `srcObject` here, causes flicker (JSDK-2641), but it lets us\n        // to sidestep the a chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1052353\n        //\n        el.srcObject = mediaStream;\n        el.autoplay = true;\n        el.playsInline = true;\n        if (!this._attachments.has(el)) {\n            this._attachments.add(el);\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._selectElement = function (selector) {\n        var el = document.querySelector(selector);\n        if (!el) {\n            throw new Error(\"Selector matched no element: \" + selector);\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._updateElementsMediaStreamTrack = function () {\n        var _this = this;\n        this._log.debug('Reattaching all elements to update mediaStreamTrack');\n        this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._createElement = function () {\n        return typeof document !== 'undefined'\n            ? document.createElement(this.kind)\n            : null;\n    };\n    MediaTrack.prototype.detach = function (el) {\n        var els;\n        if (typeof el === 'string') {\n            els = [this._selectElement(el)];\n        }\n        else if (!el) {\n            els = this._getAllAttachedElements();\n        }\n        else {\n            els = [el];\n        }\n        this._log.debug('Attempting to detach from elements:', els);\n        this._detachElements(els);\n        return el ? els[0] : els;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._detachElements = function (elements) {\n        return elements.map(this._detachElement.bind(this));\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._detachElement = function (el) {\n        if (!this._attachments.has(el)) {\n            return el;\n        }\n        var mediaStream = el.srcObject;\n        if (mediaStream instanceof this._MediaStream) {\n            mediaStream.removeTrack(this.processedTrack || this.mediaStreamTrack);\n        }\n        this._attachments.delete(el);\n        if (this._shouldShimAttachedElements && this._elShims.has(el)) {\n            var shim = this._elShims.get(el);\n            shim.unShim();\n            this._elShims.delete(el);\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._getAllAttachedElements = function () {\n        var els = [];\n        this._attachments.forEach(function (el) {\n            els.push(el);\n        });\n        return els;\n    };\n    return MediaTrack;\n}(Track));\n/**\n * Play an HTMLMediaElement if it is paused and not backgrounded.\n * @private\n * @param {HTMLMediaElement} el\n * @param {Log} log\n * @returns {void}\n */\nfunction playIfPausedAndNotBackgrounded(el, log) {\n    var tag = el.tagName.toLowerCase();\n    log.warn('Unintentionally paused:', el);\n    // NOTE(mmalavalli): When the element is unintentionally paused, we wait one\n    // second for the \"onvisibilitychange\" event on the HTMLDocument to see if the\n    // app will be backgrounded. If not, then the element can be safely played.\n    Promise.race([\n        waitForEvent(document, 'visibilitychange'),\n        waitForSometime(1000)\n    ]).then(function () {\n        if (document.visibilityState === 'visible') {\n            // NOTE(mmalavalli): We play the inadvertently paused elements only after\n            // the LocalAudioTrack is unmuted to work around WebKit Bug 213853.\n            //\n            // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n            //\n            localMediaRestartDeferreds.whenResolved('audio').then(function () {\n                log.info(\"Playing unintentionally paused <\" + tag + \"> element\");\n                log.debug('Element:', el);\n                return el.play();\n            }).then(function () {\n                log.info(\"Successfully played unintentionally paused <\" + tag + \"> element\");\n                log.debug('Element:', el);\n            }).catch(function (error) {\n                log.warn(\"Error while playing unintentionally paused <\" + tag + \"> element:\", { error: error, el: el });\n            });\n        }\n    });\n}\n/**\n * Shim the pause() and play() methods of the given HTMLMediaElement so that\n * we can detect if it was paused unintentionally.\n * @param {HTMLMediaElement} el\n * @param {?function} [onUnintentionallyPaused=null]\n * @returns {{pausedIntentionally: function, unShim: function}}\n */\nfunction shimMediaElement(el, onUnintentionallyPaused) {\n    if (onUnintentionallyPaused === void 0) { onUnintentionallyPaused = null; }\n    var origPause = el.pause;\n    var origPlay = el.play;\n    var pausedIntentionally = false;\n    el.pause = function () {\n        pausedIntentionally = true;\n        return origPause.call(el);\n    };\n    el.play = function () {\n        pausedIntentionally = false;\n        return origPlay.call(el);\n    };\n    var onPause = onUnintentionallyPaused ? function () {\n        if (!pausedIntentionally) {\n            onUnintentionallyPaused();\n        }\n    } : null;\n    if (onPause) {\n        el.addEventListener('pause', onPause);\n    }\n    return {\n        pausedIntentionally: function () {\n            return pausedIntentionally;\n        },\n        unShim: function () {\n            el.pause = origPause;\n            el.play = origPlay;\n            if (onPause) {\n                el.removeEventListener('pause', onPause);\n            }\n        }\n    };\n}\nmodule.exports = MediaTrack;\n//# sourceMappingURL=mediatrack.js.map","'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {RTCStats} lastStats\n */\nvar SenderOrReceiverReportFactory = /** @class */ (function () {\n    /**\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function SenderOrReceiverReportFactory(id, trackId, initialStats) {\n        Object.defineProperties(this, {\n            id: {\n                enumerable: true,\n                value: id,\n                writable: true\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId,\n                writable: true\n            },\n            lastStats: {\n                enumerable: true,\n                value: initialStats,\n                writable: true\n            }\n        });\n    }\n    return SenderOrReceiverReportFactory;\n}());\nmodule.exports = SenderOrReceiverReportFactory;\n//# sourceMappingURL=senderorreceiverreportfactory.js.map","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * @classdesc A {@link DataTransport} implements {@link MediaSignalingTransport}\n *   in terms of an RTCDataChannel.\n * @extends EventEmitter\n * @implements MediaSignalingTransport\n * @emits DataTransport#message\n */\nvar DataTransport = /** @class */ (function (_super) {\n    __extends(DataTransport, _super);\n    /**\n     * Construct a {@link DataTransport}.\n     * @param {RTCDataChannel} dataChannel\n     */\n    function DataTransport(dataChannel) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _dataChannel: {\n                value: dataChannel\n            },\n            _messageQueue: {\n                value: []\n            }\n        });\n        dataChannel.addEventListener('open', function () {\n            _this._messageQueue.splice(0).forEach(function (message) { return _this._publish(message); });\n        });\n        dataChannel.addEventListener('message', function (_a) {\n            var data = _a.data;\n            try {\n                var message = JSON.parse(data);\n                _this.emit('message', message);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        _this.publish({ type: 'ready' });\n        return _this;\n    }\n    /**\n     * @param message\n     * @private\n     */\n    DataTransport.prototype._publish = function (message) {\n        var data = JSON.stringify(message);\n        try {\n            this._dataChannel.send(data);\n        }\n        catch (error) {\n            // Do nothing.\n        }\n    };\n    /**\n     * Publish a message. Returns true if calling the method resulted in\n     * publishing (or eventually publishing) the update.\n     * @param {object} message\n     * @returns {boolean}\n     */\n    DataTransport.prototype.publish = function (message) {\n        var dataChannel = this._dataChannel;\n        if (dataChannel.readyState === 'closing' || dataChannel.readyState === 'closed') {\n            return false;\n        }\n        if (dataChannel.readyState === 'connecting') {\n            this._messageQueue.push(message);\n            return true;\n        }\n        this._publish(message);\n        return true;\n    };\n    return DataTransport;\n}(EventEmitter));\n/**\n * The {@link DataTransport} received a message.\n * @event DataTransport#message\n * @param {object} message\n */\nmodule.exports = DataTransport;\n//# sourceMappingURL=transport.js.map","require('./angulartics');\r\nmodule.exports = 'angulartics';\r\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'string') return argument;\n  throw new $TypeError('Argument is not a string');\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n  sm: alignDirection\n}), PropTypes.shape({\n  md: alignDirection\n}), PropTypes.shape({\n  lg: alignDirection\n}), PropTypes.shape({\n  xl: alignDirection\n})]);\nvar defaultProps = {\n  align: 'left',\n  alignRight: false,\n  flip: true\n}; // TODO: remove this hack\n\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      align = _ref.align,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      showProps = _ref.show,\n      renderOnMount = _ref.renderOnMount,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      popperConfig = _ref.popperConfig,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"]);\n\n  var isNavbar = useContext(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n  var _usePopperMarginModif = usePopperMarginModifiers(),\n      popperRef = _usePopperMarginModif[0],\n      marginModifiers = _usePopperMarginModif[1];\n\n  var alignClasses = [];\n\n  if (align) {\n    if (typeof align === 'object') {\n      var keys = Object.keys(align);\n      process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n      if (keys.length) {\n        var brkPoint = keys[0];\n        var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n        // left in addition to align left classes.\n        // Reuse alignRight to toggle the class below.\n\n        alignRight = direction === 'left';\n        alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n      }\n    } else if (align === 'right') {\n      alignRight = true;\n    }\n  }\n\n  var _ref2 = useDropdownMenu({\n    flip: flip,\n    rootCloseEvent: rootCloseEvent,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar && alignClasses.length === 0,\n    popperConfig: _extends({}, popperConfig, {\n      modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n    })\n  }),\n      hasShown = _ref2.hasShown,\n      placement = _ref2.placement,\n      show = _ref2.show,\n      alignEnd = _ref2.alignEnd,\n      close = _ref2.close,\n      menuProps = _ref2.props;\n\n  menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n  if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n  if (typeof Component !== 'string') {\n    menuProps.show = show;\n    menuProps.close = close;\n    menuProps.alignRight = alignEnd;\n  }\n\n  var style = props.style;\n\n  if (placement) {\n    // we don't need the default popper style,\n    // menus are display: none when not shown.\n    style = _extends({}, props.style, menuProps.style);\n    props['x-placement'] = placement;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n    style: style,\n    className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n  }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","require('./angular-resource');\nmodule.exports = 'ngResource';\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/*\n * ui-bootstrap4\n * http://morgul.github.io/ui-bootstrap4/\n\n * Version: 3.0.6 - 2018-11-17\n * License: MIT\n */angular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\", \"ui.bootstrap.collapse\",\"ui.bootstrap.tabindex\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.common\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.position\",\"ui.bootstrap.datepickerPopup\",\"ui.bootstrap.debounce\",\"ui.bootstrap.multiMap\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.paging\",\"ui.bootstrap.pager\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.typeahead\"]);\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/carousel/carousel.html\",\"uib/template/carousel/slide.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/datepickerPopup/popup.html\",\"uib/template/modal/window.html\",\"uib/template/pager/pager.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/progressbar/bar.html\",\"uib/template/progressbar/progress.html\",\"uib/template/progressbar/progressbar.html\",\"uib/template/rating/rating.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/timepicker/timepicker.html\",\"uib/template/typeahead/typeahead-match.html\",\"uib/template/typeahead/typeahead-popup.html\"]);\nangular.module('ui.bootstrap.collapse', [])\n\n  .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\n    var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\n    return {\n      link: function(scope, element, attrs) {\n        var expandingExpr = $parse(attrs.expanding),\n          expandedExpr = $parse(attrs.expanded),\n          collapsingExpr = $parse(attrs.collapsing),\n          collapsedExpr = $parse(attrs.collapsed),\n          horizontal = false,\n          css = {},\n          cssTo = {};\n\n        init();\n\n        function init() {\n          horizontal = !!('horizontal' in attrs);\n          if (horizontal) {\n            css = {\n              width: ''\n            };\n            cssTo = {width: '0'};\n          } else {\n            css = {\n              height: ''\n            };\n            cssTo = {height: '0'};\n          }\n          if (!scope.$eval(attrs.uibCollapse)) {\n            element.addClass('show')\n              .addClass('collapse')\n              .attr('aria-expanded', true)\n              .attr('aria-hidden', false)\n              .css(css);\n          }\n        }\n\n        function getScrollFromElement(element) {\n          if (horizontal) {\n            return {width: element.scrollWidth + 'px'};\n          }\n          return {height: element.scrollHeight + 'px'};\n        }\n\n        function expand() {\n          if (element.hasClass('collapse') && element.hasClass('show')) {\n            return;\n          }\n\n          $q.resolve(expandingExpr(scope))\n            .then(function() {\n              element.removeClass('collapse')\n                .addClass('collapsing')\n                .attr('aria-expanded', true)\n                .attr('aria-hidden', false);\n\n              if ($animateCss) {\n                $animateCss(element, {\n                  addClass: 'show',\n                  easing: 'ease',\n                  css: {\n                    overflow: 'hidden'\n                  },\n                  to: getScrollFromElement(element[0])\n                }).start()['finally'](expandDone);\n              } else {\n                $animate.addClass(element, 'show', {\n                  css: {\n                    overflow: 'hidden'\n                  },\n                  to: getScrollFromElement(element[0])\n                }).then(expandDone);\n              }\n            }, angular.noop);\n        }\n\n        function expandDone() {\n          element.removeClass('collapsing')\n            .addClass('collapse')\n            .css(css);\n          expandedExpr(scope);\n        }\n\n        function collapse() {\n          if (!element.hasClass('collapse') && !element.hasClass('show')) {\n            return collapseDone();\n          }\n\n          $q.resolve(collapsingExpr(scope))\n            .then(function() {\n              element\n              // IMPORTANT: The width must be set before adding \"collapsing\" class.\n              // Otherwise, the browser attempts to animate from width 0 (in\n              // collapsing class) to the given width here.\n                .css(getScrollFromElement(element[0]))\n                // initially all card collapse have the collapse class, this removal\n                // prevents the animation from jumping to collapsed state\n                .removeClass('collapse')\n                .addClass('collapsing')\n                .attr('aria-expanded', false)\n                .attr('aria-hidden', true);\n\n              if ($animateCss) {\n                $animateCss(element, {\n                  removeClass: 'show',\n                  to: cssTo\n                }).start()['finally'](collapseDone);\n              } else {\n                $animate.removeClass(element, 'show', {\n                  to: cssTo\n                }).then(collapseDone);\n              }\n            }, angular.noop);\n        }\n\n        function collapseDone() {\n          element.css(cssTo); // Required so that collapse works when animation is disabled\n          element.removeClass('collapsing')\n            .addClass('collapse');\n          collapsedExpr(scope);\n        }\n\n        scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\n          if (shouldCollapse) {\n            collapse();\n          } else {\n            expand();\n          }\n        });\n      }\n    };\n  }]);\n\nangular.module('ui.bootstrap.tabindex', [])\n\n.directive('uibTabindexToggle', function() {\n  return {\n    restrict: 'A',\n    link: function(scope, elem, attrs) {\n      attrs.$observe('disabled', function(disabled) {\n        attrs.$set('tabindex', disabled ? -1 : null);\n      });\n    }\n  };\n});\n\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])\n\n.constant('uibAccordionConfig', {\n  closeOthers: true\n})\n\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\n  // This array keeps track of the accordion groups\n  this.groups = [];\n\n  // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\n  this.closeOthers = function(openGroup) {\n    var closeOthers = angular.isDefined($attrs.closeOthers) ?\n      $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\n    if (closeOthers) {\n      angular.forEach(this.groups, function(group) {\n        if (group !== openGroup) {\n          group.isOpen = false;\n        }\n      });\n    }\n  };\n\n  // This is called from the accordion-group directive to add itself to the accordion\n  this.addGroup = function(groupScope) {\n    var that = this;\n    this.groups.push(groupScope);\n\n    groupScope.$on('$destroy', function(event) {\n      that.removeGroup(groupScope);\n    });\n  };\n\n  // This is called from the accordion-group directive when to remove itself\n  this.removeGroup = function(group) {\n    var index = this.groups.indexOf(group);\n    if (index !== -1) {\n      this.groups.splice(index, 1);\n    }\n  };\n}])\n\n// The accordion directive simply sets up the directive controller\n// and adds an accordion CSS class to itself element.\n.directive('uibAccordion', function() {\n  return {\n    controller: 'UibAccordionController',\n    controllerAs: 'accordion',\n    transclude: true,\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/accordion/accordion.html';\n    }\n  };\n})\n\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\n.directive('uibAccordionGroup', function() {\n  return {\n    require: '^uibAccordion',         // We need this directive to be inside an accordion\n    transclude: true,              // It transcludes the contents of the directive into the template\n    restrict: 'A',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\n    },\n    scope: {\n      heading: '@',               // Interpolate the heading attribute onto this scope\n      cardClass: '@?',           // Ditto with cardClass\n      isOpen: '=?',\n      isDisabled: '=?'\n    },\n    controller: function() {\n      this.setHeading = function(element) {\n        this.heading = element;\n      };\n    },\n    link: function(scope, element, attrs, accordionCtrl) {\n      element.addClass('card');\n      accordionCtrl.addGroup(scope);\n\n      scope.openClass = attrs.openClass || 'card-open';\n      scope.cardClass = attrs.cardClass || 'card-default';\n      scope.$watch('isOpen', function(value) {\n        element.toggleClass(scope.openClass, !!value);\n        if (value) {\n          accordionCtrl.closeOthers(scope);\n        }\n      });\n\n      scope.toggleOpen = function($event) {\n        if (!scope.isDisabled) {\n          if (!$event || $event.which === 32) {\n            scope.isOpen = !scope.isOpen;\n          }\n        }\n      };\n\n      var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\n      scope.headingId = id + '-tab';\n      scope.cardId = id + '-card';\n    }\n  };\n})\n\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\n.directive('uibAccordionHeading', function() {\n  return {\n    transclude: true,   // Grab the contents to be used as the heading\n    template: '',       // In effect remove this element!\n    replace: true,\n    require: '^uibAccordionGroup',\n    link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\n      // Pass the heading to the accordion-group controller\n      // so that it can be transcluded into the right place in the template\n      // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\n      accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\n    }\n  };\n})\n\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\n// You must provide the property on the accordion-group controller that will hold the transcluded element\n.directive('uibAccordionTransclude', function() {\n  return {\n    require: '^uibAccordionGroup',\n    link: function(scope, element, attrs, controller) {\n      scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\n        if (heading) {\n          var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\n          elem.html('');\n          elem.append(heading);\n        }\n      });\n    }\n  };\n\n  function getHeaderSelectors() {\n      return 'uib-accordion-header,' +\n          'data-uib-accordion-header,' +\n          'x-uib-accordion-header,' +\n          'uib\\\\:accordion-header,' +\n          '[uib-accordion-header],' +\n          '[data-uib-accordion-header],' +\n          '[x-uib-accordion-header]';\n  }\n});\n\nangular.module('ui.bootstrap.alert', [])\n\n.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {\n  $scope.closeable = !!$attrs.close;\n  $element.addClass('alert');\n  $attrs.$set('role', 'alert');\n  if ($scope.closeable) {\n    $element.addClass('alert-dismissible');\n  }\n\n  var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\n    $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\n\n  if (dismissOnTimeout) {\n    $timeout(function() {\n      $scope.close();\n    }, parseInt(dismissOnTimeout, 10));\n  }\n}])\n\n.directive('uibAlert', function() {\n  return {\n    controller: 'UibAlertController',\n    controllerAs: 'alert',\n    restrict: 'A',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/alert/alert.html';\n    },\n    transclude: true,\n    scope: {\n      close: '&'\n    }\n  };\n});\n\nangular.module('ui.bootstrap.buttons', [])\n\n.constant('uibButtonConfig', {\n  activeClass: 'active',\n  toggleEvent: 'click'\n})\n\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\n  this.activeClass = buttonConfig.activeClass || 'active';\n  this.toggleEvent = buttonConfig.toggleEvent || 'click';\n}])\n\n.directive('uibBtnRadio', ['$parse', function($parse) {\n  return {\n    require: ['uibBtnRadio', 'ngModel'],\n    controller: 'UibButtonsController',\n    controllerAs: 'buttons',\n    link: function(scope, element, attrs, ctrls) {\n      var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n      var uncheckableExpr = $parse(attrs.uibUncheckable);\n\n      element.find('input').css({display: 'none'});\n\n      //model -> UI\n      ngModelCtrl.$render = function() {\n        element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\n      };\n\n      //ui->model\n      element.on(buttonsCtrl.toggleEvent, function() {\n        if (attrs.disabled) {\n          return;\n        }\n\n        var isActive = element.hasClass(buttonsCtrl.activeClass);\n\n        if (!isActive || angular.isDefined(attrs.uncheckable)) {\n          scope.$apply(function() {\n            ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\n            ngModelCtrl.$render();\n          });\n        }\n      });\n\n      if (attrs.uibUncheckable) {\n        scope.$watch(uncheckableExpr, function(uncheckable) {\n          attrs.$set('uncheckable', uncheckable ? '' : undefined);\n        });\n      }\n    }\n  };\n}])\n\n.directive('uibBtnCheckbox', function() {\n  return {\n    require: ['uibBtnCheckbox', 'ngModel'],\n    controller: 'UibButtonsController',\n    controllerAs: 'button',\n    link: function(scope, element, attrs, ctrls) {\n      var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n      element.find('input').css({display: 'none'});\n\n      function getTrueValue() {\n        return getCheckboxValue(attrs.btnCheckboxTrue, true);\n      }\n\n      function getFalseValue() {\n        return getCheckboxValue(attrs.btnCheckboxFalse, false);\n      }\n\n      function getCheckboxValue(attribute, defaultValue) {\n        return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\n      }\n\n      //model -> UI\n      ngModelCtrl.$render = function() {\n        element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\n      };\n\n      //ui->model\n      element.on(buttonsCtrl.toggleEvent, function() {\n        if (attrs.disabled) {\n          return;\n        }\n\n        scope.$apply(function() {\n          ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\n          ngModelCtrl.$render();\n        });\n      });\n    }\n  };\n});\n\nangular.module('ui.bootstrap.carousel', [])\n\n.controller('UibCarouselController', ['$scope', '$element', '$interval', '$timeout', '$animate', function($scope, $element, $interval, $timeout, $animate) {\n  var self = this,\n    slides = self.slides = $scope.slides = [],\n    SLIDE_DIRECTION = 'uib-slideDirection',\n    currentIndex = $scope.active,\n    currentInterval, isPlaying;\n\n  var destroyed = false;\n  $element.addClass('carousel');\n\n  self.addSlide = function(slide, element) {\n    slides.push({\n      slide: slide,\n      element: element\n    });\n    slides.sort(function(a, b) {\n      return +a.slide.index - +b.slide.index;\n    });\n    //if this is the first slide or the slide is set to active, select it\n    if (slide.index === $scope.active || slides.length === 1 && !angular.isNumber($scope.active)) {\n      if ($scope.$currentTransition) {\n        $scope.$currentTransition = null;\n      }\n\n      currentIndex = slide.index;\n      $scope.active = slide.index;\n      setActive(currentIndex);\n      self.select(slides[findSlideIndex(slide)]);\n      if (slides.length === 1) {\n        $scope.play();\n      }\n    }\n  };\n\n  self.getCurrentIndex = function() {\n    for (var i = 0; i < slides.length; i++) {\n      if (slides[i].slide.index === currentIndex) {\n        return i;\n      }\n    }\n  };\n\n  self.next = $scope.next = function() {\n    var newIndex = (self.getCurrentIndex() + 1) % slides.length;\n\n    if (newIndex === 0 && $scope.noWrap()) {\n      $scope.pause();\n      return;\n    }\n\n    return self.select(slides[newIndex], 'next');\n  };\n\n  self.prev = $scope.prev = function() {\n    var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;\n\n    if ($scope.noWrap() && newIndex === slides.length - 1) {\n      $scope.pause();\n      return;\n    }\n\n    return self.select(slides[newIndex], 'prev');\n  };\n\n  self.removeSlide = function(slide) {\n    var index = findSlideIndex(slide);\n\n    //get the index of the slide inside the carousel\n    slides.splice(index, 1);\n    if (slides.length > 0 && currentIndex === index) {\n      if (index >= slides.length) {\n        currentIndex = slides.length - 1;\n        $scope.active = currentIndex;\n        setActive(currentIndex);\n        self.select(slides[slides.length - 1]);\n      } else {\n        currentIndex = index;\n        $scope.active = currentIndex;\n        setActive(currentIndex);\n        self.select(slides[index]);\n      }\n    } else if (currentIndex > index) {\n      currentIndex--;\n      $scope.active = currentIndex;\n    }\n\n    //clean the active value when no more slide\n    if (slides.length === 0) {\n      currentIndex = null;\n      $scope.active = null;\n    }\n  };\n\n  /* direction: \"prev\" or \"next\" */\n  self.select = $scope.select = function(nextSlide, direction) {\n    var nextIndex = findSlideIndex(nextSlide.slide);\n    //Decide direction if it's not given\n    if (direction === undefined) {\n      direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\n    }\n    //Prevent this user-triggered transition from occurring if there is already one in progress\n    if (nextSlide.slide.index !== currentIndex &&\n      !$scope.$currentTransition) {\n      goNext(nextSlide.slide, nextIndex, direction);\n    }\n  };\n\n  /* Allow outside people to call indexOf on slides array */\n  $scope.indexOfSlide = function(slide) {\n    return +slide.slide.index;\n  };\n\n  $scope.isActive = function(slide) {\n    return $scope.active === slide.slide.index;\n  };\n\n  $scope.isPrevDisabled = function() {\n    return $scope.active === 0 && $scope.noWrap();\n  };\n\n  $scope.isNextDisabled = function() {\n    return $scope.active === slides.length - 1 && $scope.noWrap();\n  };\n\n  $scope.pause = function() {\n    if (!$scope.noPause) {\n      isPlaying = false;\n      resetTimer();\n    }\n  };\n\n  $scope.play = function() {\n    if (!isPlaying) {\n      isPlaying = true;\n      restartTimer();\n    }\n  };\n\n  $element.on('mouseenter', $scope.pause);\n  $element.on('mouseleave', $scope.play);\n\n  $scope.$on('$destroy', function() {\n    destroyed = true;\n    resetTimer();\n  });\n\n  $scope.$watch('noTransition', function(noTransition) {\n    $animate.enabled($element, !noTransition);\n  });\n\n  $scope.$watch('interval', restartTimer);\n\n  $scope.$watchCollection('slides', resetTransition);\n\n  $scope.$watch('active', function(index) {\n    if (angular.isNumber(index) && currentIndex !== index) {\n      for (var i = 0; i < slides.length; i++) {\n        if (slides[i].slide.index === index) {\n          index = i;\n          break;\n        }\n      }\n\n      var slide = slides[index];\n      if (slide) {\n        setActive(index);\n        self.select(slides[index]);\n        currentIndex = index;\n      }\n    }\n  });\n\n  function getSlideByIndex(index) {\n    for (var i = 0, l = slides.length; i < l; ++i) {\n      if (slides[i].index === index) {\n        return slides[i];\n      }\n    }\n  }\n\n  function setActive(index) {\n    for (var i = 0; i < slides.length; i++) {\n      slides[i].slide.active = i === index;\n    }\n  }\n\n  function goNext(slide, index, direction) {\n    if (destroyed) {\n      return;\n    }\n\n    angular.extend(slide, {direction: direction});\n    angular.extend(slides[currentIndex].slide || {}, {direction: direction});\n    if ($animate.enabled($element) && !$scope.$currentTransition &&\n      slides[index].element && self.slides.length > 1) {\n      slides[index].element.data(SLIDE_DIRECTION, slide.direction);\n      var currentIdx = self.getCurrentIndex();\n\n      if (angular.isNumber(currentIdx) && slides[currentIdx].element) {\n        slides[currentIdx].element.data(SLIDE_DIRECTION, slide.direction);\n      }\n\n      $scope.$currentTransition = true;\n      $animate.on('addClass', slides[index].element, function(element, phase) {\n        if (phase === 'close') {\n          $scope.$currentTransition = null;\n          $animate.off('addClass', element);\n        }\n      });\n    }\n\n    $scope.active = slide.index;\n    currentIndex = slide.index;\n    setActive(index);\n\n    //every time you change slides, reset the timer\n    restartTimer();\n  }\n\n  function findSlideIndex(slide) {\n    for (var i = 0; i < slides.length; i++) {\n      if (slides[i].slide === slide) {\n        return i;\n      }\n    }\n  }\n\n  function resetTimer() {\n    if (currentInterval) {\n      $interval.cancel(currentInterval);\n      currentInterval = null;\n    }\n  }\n\n  function resetTransition(slides) {\n    if (!slides.length) {\n      $scope.$currentTransition = null;\n    }\n  }\n\n  function restartTimer() {\n    resetTimer();\n    var interval = +$scope.interval;\n    if (!isNaN(interval) && interval > 0) {\n      currentInterval = $interval(timerFn, interval);\n    }\n  }\n\n  function timerFn() {\n    var interval = +$scope.interval;\n    if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {\n      $scope.next();\n    } else {\n      $scope.pause();\n    }\n  }\n}])\n\n.directive('uibCarousel', function() {\n  return {\n    transclude: true,\n    controller: 'UibCarouselController',\n    controllerAs: 'carousel',\n    restrict: 'A',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/carousel/carousel.html';\n    },\n    scope: {\n      active: '=?',\n      interval: '=',\n      noTransition: '=',\n      noPause: '=',\n      noWrap: '&'\n    }\n  };\n})\n\n.directive('uibSlide', ['$animate', function($animate) {\n  return {\n    require: '^uibCarousel',\n    restrict: 'A',\n    transclude: true,\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/carousel/slide.html';\n    },\n    scope: {\n      actual: '=?',\n      index: '=?'\n    },\n    link: function (scope, element, attrs, carouselCtrl) {\n      element.addClass('carousel-item');\n      carouselCtrl.addSlide(scope, element);\n      //when the scope is destroyed then remove the slide from the current slides array\n      scope.$on('$destroy', function() {\n        carouselCtrl.removeSlide(scope);\n      });\n\n      scope.$watch('active', function(active) {\n        $animate[active ? 'addClass' : 'removeClass'](element, 'active');\n      });\n    }\n  };\n}])\n\n.animation('.carousel-item', ['$animateCss',\nfunction($animateCss) {\n  var SLIDE_DIRECTION = 'uib-slideDirection';\n  var classPrefix = 'carousel-item-';\n\n  function removeClass(element, className, callback) {\n    element.removeClass(className);\n    if (callback) {\n      callback();\n    }\n  }\n\n  return {\n    beforeAddClass: function(element, className, done) {\n      if (className === 'active') {\n        var stopped = false;\n        var direction = element.data(SLIDE_DIRECTION);\n        var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\n        var removeClassFn = removeClass.bind(this, element, [directionClass, classPrefix + direction].join(' '), done);\n        element.addClass(classPrefix + direction);\n\n        $animateCss(element, {addClass: directionClass})\n          .start()\n          .done(removeClassFn);\n\n        return function() {\n          stopped = true;\n        };\n      }\n      done();\n    },\n    beforeRemoveClass: function (element, className, done) {\n      if (className === 'active') {\n        var stopped = false;\n        var direction = element.data(SLIDE_DIRECTION);\n        var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\n        var removeClassFn = removeClass.bind(this, element, directionClass, done);\n\n        $animateCss(element, {addClass: directionClass})\n          .start()\n          .done(removeClassFn);\n\n        return function() {\n          stopped = true;\n        };\n      }\n      done();\n    }\n  };\n}]);\n\nangular.module('ui.bootstrap.common', []);\n\nangular.module('ui.bootstrap.dateparser', [])\n\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {\n  // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\n  var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\n  var localeId;\n  var formatCodeToRegex;\n\n  this.init = function() {\n    localeId = $locale.id;\n\n    this.parsers = {};\n    this.formatters = {};\n\n    formatCodeToRegex = [\n      {\n        key: 'yyyy',\n        regex: '\\\\d{4}',\n        apply: function(value) { this.year = +value; },\n        formatter: function(date) {\n          var _date = new Date();\n          _date.setFullYear(Math.abs(date.getFullYear()));\n          return dateFilter(_date, 'yyyy');\n        }\n      },\n      {\n        key: 'yy',\n        regex: '\\\\d{2}',\n        apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\n        formatter: function(date) {\n          var _date = new Date();\n          _date.setFullYear(Math.abs(date.getFullYear()));\n          return dateFilter(_date, 'yy');\n        }\n      },\n      {\n        key: 'y',\n        regex: '\\\\d{1,4}',\n        apply: function(value) { this.year = +value; },\n        formatter: function(date) {\n          var _date = new Date();\n          _date.setFullYear(Math.abs(date.getFullYear()));\n          return dateFilter(_date, 'y');\n        }\n      },\n      {\n        key: 'M!',\n        regex: '0?[1-9]|1[0-2]',\n        apply: function(value) { this.month = value - 1; },\n        formatter: function(date) {\n          var value = date.getMonth();\n          if (/^[0-9]$/.test(value)) {\n            return dateFilter(date, 'MM');\n          }\n\n          return dateFilter(date, 'M');\n        }\n      },\n      {\n        key: 'MMMM',\n        regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\n        apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\n        formatter: function(date) { return dateFilter(date, 'MMMM'); }\n      },\n      {\n        key: 'MMM',\n        regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\n        apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\n        formatter: function(date) { return dateFilter(date, 'MMM'); }\n      },\n      {\n        key: 'MM',\n        regex: '0[1-9]|1[0-2]',\n        apply: function(value) { this.month = value - 1; },\n        formatter: function(date) { return dateFilter(date, 'MM'); }\n      },\n      {\n        key: 'M',\n        regex: '[1-9]|1[0-2]',\n        apply: function(value) { this.month = value - 1; },\n        formatter: function(date) { return dateFilter(date, 'M'); }\n      },\n      {\n        key: 'd!',\n        regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\n        apply: function(value) { this.date = +value; },\n        formatter: function(date) {\n          var value = date.getDate();\n          if (/^[1-9]$/.test(value)) {\n            return dateFilter(date, 'dd');\n          }\n\n          return dateFilter(date, 'd');\n        }\n      },\n      {\n        key: 'dd',\n        regex: '[0-2][0-9]{1}|3[0-1]{1}',\n        apply: function(value) { this.date = +value; },\n        formatter: function(date) { return dateFilter(date, 'dd'); }\n      },\n      {\n        key: 'd',\n        regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\n        apply: function(value) { this.date = +value; },\n        formatter: function(date) { return dateFilter(date, 'd'); }\n      },\n      {\n        key: 'EEEE',\n        regex: $locale.DATETIME_FORMATS.DAY.join('|'),\n        formatter: function(date) { return dateFilter(date, 'EEEE'); }\n      },\n      {\n        key: 'EEE',\n        regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\n        formatter: function(date) { return dateFilter(date, 'EEE'); }\n      },\n      {\n        key: 'HH',\n        regex: '(?:0|1)[0-9]|2[0-3]',\n        apply: function(value) { this.hours = +value; },\n        formatter: function(date) { return dateFilter(date, 'HH'); }\n      },\n      {\n        key: 'hh',\n        regex: '0[0-9]|1[0-2]',\n        apply: function(value) { this.hours = +value; },\n        formatter: function(date) { return dateFilter(date, 'hh'); }\n      },\n      {\n        key: 'H',\n        regex: '1?[0-9]|2[0-3]',\n        apply: function(value) { this.hours = +value; },\n        formatter: function(date) { return dateFilter(date, 'H'); }\n      },\n      {\n        key: 'h',\n        regex: '[0-9]|1[0-2]',\n        apply: function(value) { this.hours = +value; },\n        formatter: function(date) { return dateFilter(date, 'h'); }\n      },\n      {\n        key: 'mm',\n        regex: '[0-5][0-9]',\n        apply: function(value) { this.minutes = +value; },\n        formatter: function(date) { return dateFilter(date, 'mm'); }\n      },\n      {\n        key: 'm',\n        regex: '[0-9]|[1-5][0-9]',\n        apply: function(value) { this.minutes = +value; },\n        formatter: function(date) { return dateFilter(date, 'm'); }\n      },\n      {\n        key: 'sss',\n        regex: '[0-9][0-9][0-9]',\n        apply: function(value) { this.milliseconds = +value; },\n        formatter: function(date) { return dateFilter(date, 'sss'); }\n      },\n      {\n        key: 'ss',\n        regex: '[0-5][0-9]',\n        apply: function(value) { this.seconds = +value; },\n        formatter: function(date) { return dateFilter(date, 'ss'); }\n      },\n      {\n        key: 's',\n        regex: '[0-9]|[1-5][0-9]',\n        apply: function(value) { this.seconds = +value; },\n        formatter: function(date) { return dateFilter(date, 's'); }\n      },\n      {\n        key: 'a',\n        regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\n        apply: function(value) {\n          if (this.hours === 12) {\n            this.hours = 0;\n          }\n\n          if (value === 'PM') {\n            this.hours += 12;\n          }\n        },\n        formatter: function(date) { return dateFilter(date, 'a'); }\n      },\n      {\n        key: 'Z',\n        regex: '[+-]\\\\d{4}',\n        apply: function(value) {\n          var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\n            sign = matches[1],\n            hours = matches[2],\n            minutes = matches[3];\n          this.hours += toInt(sign + hours);\n          this.minutes += toInt(sign + minutes);\n        },\n        formatter: function(date) {\n          return dateFilter(date, 'Z');\n        }\n      },\n      {\n        key: 'ww',\n        regex: '[0-4][0-9]|5[0-3]',\n        formatter: function(date) { return dateFilter(date, 'ww'); }\n      },\n      {\n        key: 'w',\n        regex: '[0-9]|[1-4][0-9]|5[0-3]',\n        formatter: function(date) { return dateFilter(date, 'w'); }\n      },\n      {\n        key: 'GGGG',\n        regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\n        formatter: function(date) { return dateFilter(date, 'GGGG'); }\n      },\n      {\n        key: 'GGG',\n        regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n        formatter: function(date) { return dateFilter(date, 'GGG'); }\n      },\n      {\n        key: 'GG',\n        regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n        formatter: function(date) { return dateFilter(date, 'GG'); }\n      },\n      {\n        key: 'G',\n        regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n        formatter: function(date) { return dateFilter(date, 'G'); }\n      }\n    ];\n\n    if (angular.version.major >= 1 && angular.version.minor > 4) {\n      formatCodeToRegex.push({\n        key: 'LLLL',\n        regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),\n        apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },\n        formatter: function(date) { return dateFilter(date, 'LLLL'); }\n      });\n    }\n  };\n\n  this.init();\n\n  function getFormatCodeToRegex(key) {\n    return filterFilter(formatCodeToRegex, {key: key}, true)[0];\n  }\n\n  this.getParser = function (key) {\n    var f = getFormatCodeToRegex(key);\n    return f && f.apply || null;\n  };\n\n  this.overrideParser = function (key, parser) {\n    var f = getFormatCodeToRegex(key);\n    if (f && angular.isFunction(parser)) {\n      this.parsers = {};\n      f.apply = parser;\n    }\n  }.bind(this);\n\n  function createParser(format) {\n    var map = [], regex = format.split('');\n\n    // check for literal values\n    var quoteIndex = format.indexOf('\\'');\n    if (quoteIndex > -1) {\n      var inLiteral = false;\n      format = format.split('');\n      for (var i = quoteIndex; i < format.length; i++) {\n        if (inLiteral) {\n          if (format[i] === '\\'') {\n            if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\n              format[i+1] = '$';\n              regex[i+1] = '';\n            } else { // end of literal\n              regex[i] = '';\n              inLiteral = false;\n            }\n          }\n          format[i] = '$';\n        } else {\n          if (format[i] === '\\'') { // start of literal\n            format[i] = '$';\n            regex[i] = '';\n            inLiteral = true;\n          }\n        }\n      }\n\n      format = format.join('');\n    }\n\n    angular.forEach(formatCodeToRegex, function(data) {\n      var index = format.indexOf(data.key);\n\n      if (index > -1) {\n        format = format.split('');\n\n        regex[index] = '(' + data.regex + ')';\n        format[index] = '$'; // Custom symbol to define consumed part of format\n        for (var i = index + 1, n = index + data.key.length; i < n; i++) {\n          regex[i] = '';\n          format[i] = '$';\n        }\n        format = format.join('');\n\n        map.push({\n          index: index,\n          key: data.key,\n          apply: data.apply,\n          matcher: data.regex\n        });\n      }\n    });\n\n    return {\n      regex: new RegExp('^' + regex.join('') + '$'),\n      map: orderByFilter(map, 'index')\n    };\n  }\n\n  function createFormatter(format) {\n    var formatters = [];\n    var i = 0;\n    var formatter, literalIdx;\n    while (i < format.length) {\n      if (angular.isNumber(literalIdx)) {\n        if (format.charAt(i) === '\\'') {\n          if (i + 1 >= format.length || format.charAt(i + 1) !== '\\'') {\n            formatters.push(constructLiteralFormatter(format, literalIdx, i));\n            literalIdx = null;\n          }\n        } else if (i === format.length) {\n          while (literalIdx < format.length) {\n            formatter = constructFormatterFromIdx(format, literalIdx);\n            formatters.push(formatter);\n            literalIdx = formatter.endIdx;\n          }\n        }\n\n        i++;\n        continue;\n      }\n\n      if (format.charAt(i) === '\\'') {\n        literalIdx = i;\n        i++;\n        continue;\n      }\n\n      formatter = constructFormatterFromIdx(format, i);\n\n      formatters.push(formatter.parser);\n      i = formatter.endIdx;\n    }\n\n    return formatters;\n  }\n\n  function constructLiteralFormatter(format, literalIdx, endIdx) {\n    return function() {\n      return format.substr(literalIdx + 1, endIdx - literalIdx - 1);\n    };\n  }\n\n  function constructFormatterFromIdx(format, i) {\n    var currentPosStr = format.substr(i);\n    for (var j = 0; j < formatCodeToRegex.length; j++) {\n      if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {\n        var data = formatCodeToRegex[j];\n        return {\n          endIdx: i + data.key.length,\n          parser: data.formatter\n        };\n      }\n    }\n\n    return {\n      endIdx: i + 1,\n      parser: function() {\n        return currentPosStr.charAt(0);\n      }\n    };\n  }\n\n  this.filter = function(date, format) {\n    if (!angular.isDate(date) || isNaN(date) || !format) {\n      return '';\n    }\n\n    format = $locale.DATETIME_FORMATS[format] || format;\n\n    if ($locale.id !== localeId) {\n      this.init();\n    }\n\n    if (!this.formatters[format]) {\n      this.formatters[format] = createFormatter(format);\n    }\n\n    var formatters = this.formatters[format];\n\n    return formatters.reduce(function(str, formatter) {\n      return str + formatter(date);\n    }, '');\n  };\n\n  this.parse = function(input, format, baseDate) {\n    if (!angular.isString(input) || !format) {\n      return input;\n    }\n\n    format = $locale.DATETIME_FORMATS[format] || format;\n    format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\n\n    if ($locale.id !== localeId) {\n      this.init();\n    }\n\n    if (!this.parsers[format]) {\n      this.parsers[format] = createParser(format, 'apply');\n    }\n\n    var parser = this.parsers[format],\n        regex = parser.regex,\n        map = parser.map,\n        results = input.match(regex),\n        tzOffset = false;\n    if (results && results.length) {\n      var fields, dt;\n      if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\n        fields = {\n          year: baseDate.getFullYear(),\n          month: baseDate.getMonth(),\n          date: baseDate.getDate(),\n          hours: baseDate.getHours(),\n          minutes: baseDate.getMinutes(),\n          seconds: baseDate.getSeconds(),\n          milliseconds: baseDate.getMilliseconds()\n        };\n      } else {\n        if (baseDate) {\n          $log.warn('dateparser:', 'baseDate is not a valid date');\n        }\n        fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\n      }\n\n      for (var i = 1, n = results.length; i < n; i++) {\n        var mapper = map[i - 1];\n        if (mapper.matcher === 'Z') {\n          tzOffset = true;\n        }\n\n        if (mapper.apply) {\n          mapper.apply.call(fields, results[i]);\n        }\n      }\n\n      var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\n        Date.prototype.setFullYear;\n      var timesetter = tzOffset ? Date.prototype.setUTCHours :\n        Date.prototype.setHours;\n\n      if (isValid(fields.year, fields.month, fields.date)) {\n        if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\n          dt = new Date(baseDate);\n          datesetter.call(dt, fields.year, fields.month, fields.date);\n          timesetter.call(dt, fields.hours, fields.minutes,\n            fields.seconds, fields.milliseconds);\n        } else {\n          dt = new Date(0);\n          datesetter.call(dt, fields.year, fields.month, fields.date);\n          timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\n            fields.seconds || 0, fields.milliseconds || 0);\n        }\n      }\n\n      return dt;\n    }\n  };\n\n  // Check if date is valid for specific month (and year for February).\n  // Month: 0 = Jan, 1 = Feb, etc\n  function isValid(year, month, date) {\n    if (date < 1) {\n      return false;\n    }\n\n    if (month === 1 && date > 28) {\n      return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\n    }\n\n    if (month === 3 || month === 5 || month === 8 || month === 10) {\n      return date < 31;\n    }\n\n    return true;\n  }\n\n  function toInt(str) {\n    return parseInt(str, 10);\n  }\n\n  this.toTimezone = toTimezone;\n  this.fromTimezone = fromTimezone;\n  this.timezoneToOffset = timezoneToOffset;\n  this.addDateMinutes = addDateMinutes;\n  this.convertTimezoneToLocal = convertTimezoneToLocal;\n\n  function toTimezone(date, timezone) {\n    return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\n  }\n\n  function fromTimezone(date, timezone) {\n    return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\n  }\n\n  //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\n  function timezoneToOffset(timezone, fallback) {\n    timezone = timezone.replace(/:/g, '');\n    var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n    return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n  }\n\n  function addDateMinutes(date, minutes) {\n    date = new Date(date.getTime());\n    date.setMinutes(date.getMinutes() + minutes);\n    return date;\n  }\n\n  function convertTimezoneToLocal(date, timezone, reverse) {\n    reverse = reverse ? -1 : 1;\n    var dateTimezoneOffset = date.getTimezoneOffset();\n    var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n    return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\n  }\n}]);\n\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\n// at most one element.\nangular.module('ui.bootstrap.isClass', [])\n.directive('uibIsClass', [\n         '$animate',\nfunction ($animate) {\n  //                    11111111          22222222\n  var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\n  //                    11111111           22222222\n  var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\n\n  var dataPerTracked = {};\n\n  return {\n    restrict: 'A',\n    compile: function(tElement, tAttrs) {\n      var linkedScopes = [];\n      var instances = [];\n      var expToData = {};\n      var lastActivated = null;\n      var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\n      var onExp = onExpMatches[2];\n      var expsStr = onExpMatches[1];\n      var exps = expsStr.split(',');\n\n      return linkFn;\n\n      function linkFn(scope, element, attrs) {\n        linkedScopes.push(scope);\n        instances.push({\n          scope: scope,\n          element: element\n        });\n\n        exps.forEach(function(exp, k) {\n          addForExp(exp, scope);\n        });\n\n        scope.$on('$destroy', removeScope);\n      }\n\n      function addForExp(exp, scope) {\n        var matches = exp.match(IS_REGEXP);\n        var clazz = scope.$eval(matches[1]);\n        var compareWithExp = matches[2];\n        var data = expToData[exp];\n        if (!data) {\n          var watchFn = function(compareWithVal) {\n            var newActivated = null;\n            instances.some(function(instance) {\n              var thisVal = instance.scope.$eval(onExp);\n              if (thisVal === compareWithVal) {\n                newActivated = instance;\n                return true;\n              }\n            });\n            if (data.lastActivated !== newActivated) {\n              if (data.lastActivated) {\n                $animate.removeClass(data.lastActivated.element, clazz);\n              }\n              if (newActivated) {\n                $animate.addClass(newActivated.element, clazz);\n              }\n              data.lastActivated = newActivated;\n            }\n          };\n          expToData[exp] = data = {\n            lastActivated: null,\n            scope: scope,\n            watchFn: watchFn,\n            compareWithExp: compareWithExp,\n            watcher: scope.$watch(compareWithExp, watchFn)\n          };\n        }\n        data.watchFn(scope.$eval(compareWithExp));\n      }\n\n      function removeScope(e) {\n        var removedScope = e.targetScope;\n        var index = linkedScopes.indexOf(removedScope);\n        linkedScopes.splice(index, 1);\n        instances.splice(index, 1);\n        if (linkedScopes.length) {\n          var newWatchScope = linkedScopes[0];\n          angular.forEach(expToData, function(data) {\n            if (data.scope === removedScope) {\n              data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\n              data.scope = newWatchScope;\n            }\n          });\n        } else {\n          expToData = {};\n        }\n      }\n    }\n  };\n}]);\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\n\n.value('$datepickerSuppressError', false)\n\n.value('$datepickerLiteralWarning', true)\n\n.constant('uibDatepickerConfig', {\n  datepickerMode: 'day',\n  formatDay: 'dd',\n  formatMonth: 'MMMM',\n  formatYear: 'yyyy',\n  formatDayHeader: 'EEE',\n  formatDayTitle: 'MMMM yyyy',\n  formatMonthTitle: 'yyyy',\n  maxDate: null,\n  maxMode: 'year',\n  minDate: null,\n  minMode: 'day',\n  monthColumns: 3,\n  ngModelOptions: {},\n  shortcutPropagation: false,\n  showWeeks: true,\n  yearColumns: 5,\n  yearRows: 4\n})\n\n.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\n  function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\n  var self = this,\n      ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\n      ngModelOptions = {},\n      watchListeners = [];\n\n  $element.addClass('uib-datepicker');\n  $attrs.$set('role', 'application');\n\n  if (!$scope.datepickerOptions) {\n    $scope.datepickerOptions = {};\n  }\n\n  // Modes chain\n  this.modes = ['day', 'month', 'year'];\n\n  [\n    'customClass',\n    'dateDisabled',\n    'datepickerMode',\n    'formatDay',\n    'formatDayHeader',\n    'formatDayTitle',\n    'formatMonth',\n    'formatMonthTitle',\n    'formatYear',\n    'maxDate',\n    'maxMode',\n    'minDate',\n    'minMode',\n    'monthColumns',\n    'showWeeks',\n    'shortcutPropagation',\n    'startingDay',\n    'yearColumns',\n    'yearRows'\n  ].forEach(function(key) {\n    switch (key) {\n      case 'customClass':\n      case 'dateDisabled':\n        $scope[key] = $scope.datepickerOptions[key] || angular.noop;\n        break;\n      case 'datepickerMode':\n        $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\n          $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\n        break;\n      case 'formatDay':\n      case 'formatDayHeader':\n      case 'formatDayTitle':\n      case 'formatMonth':\n      case 'formatMonthTitle':\n      case 'formatYear':\n        self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\n          $interpolate($scope.datepickerOptions[key])($scope.$parent) :\n          datepickerConfig[key];\n        break;\n      case 'monthColumns':\n      case 'showWeeks':\n      case 'shortcutPropagation':\n      case 'yearColumns':\n      case 'yearRows':\n        self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\n          $scope.datepickerOptions[key] : datepickerConfig[key];\n        break;\n      case 'startingDay':\n        if (angular.isDefined($scope.datepickerOptions.startingDay)) {\n          self.startingDay = $scope.datepickerOptions.startingDay;\n        } else if (angular.isNumber(datepickerConfig.startingDay)) {\n          self.startingDay = datepickerConfig.startingDay;\n        } else {\n          self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\n        }\n\n        break;\n      case 'maxDate':\n      case 'minDate':\n        $scope.$watch('datepickerOptions.' + key, function(value) {\n          if (value) {\n            if (angular.isDate(value)) {\n              self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));\n            } else {\n              if ($datepickerLiteralWarning) {\n                $log.warn('Literal date support has been deprecated, please switch to date object usage');\n              }\n\n              self[key] = new Date(dateFilter(value, 'medium'));\n            }\n          } else {\n            self[key] = datepickerConfig[key] ?\n              dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :\n              null;\n          }\n\n          self.refreshView();\n        });\n\n        break;\n      case 'maxMode':\n      case 'minMode':\n        if ($scope.datepickerOptions[key]) {\n          $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\n            self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];\n            if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\n              key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\n              $scope.datepickerMode = self[key];\n              $scope.datepickerOptions.datepickerMode = self[key];\n            }\n          });\n        } else {\n          self[key] = $scope[key] = datepickerConfig[key] || null;\n        }\n\n        break;\n    }\n  });\n\n  $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\n\n  $scope.disabled = angular.isDefined($attrs.disabled) || false;\n  if (angular.isDefined($attrs.ngDisabled)) {\n    watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\n      $scope.disabled = disabled;\n      self.refreshView();\n    }));\n  }\n\n  $scope.isActive = function(dateObject) {\n    if (self.compare(dateObject.date, self.activeDate) === 0) {\n      $scope.activeDateId = dateObject.uid;\n      return true;\n    }\n    return false;\n  };\n\n  this.init = function(ngModelCtrl_) {\n    ngModelCtrl = ngModelCtrl_;\n    ngModelOptions = extractOptions(ngModelCtrl);\n\n    if ($scope.datepickerOptions.initDate) {\n      self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();\n      $scope.$watch('datepickerOptions.initDate', function(initDate) {\n        if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\n          self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));\n          self.refreshView();\n        }\n      });\n    } else {\n      self.activeDate = new Date();\n    }\n\n    var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\n    this.activeDate = !isNaN(date) ?\n      dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :\n      dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\n\n    ngModelCtrl.$render = function() {\n      self.render();\n    };\n  };\n\n  this.render = function() {\n    if (ngModelCtrl.$viewValue) {\n      var date = new Date(ngModelCtrl.$viewValue),\n          isValid = !isNaN(date);\n\n      if (isValid) {\n        this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\n      } else if (!$datepickerSuppressError) {\n        $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\n      }\n    }\n    this.refreshView();\n  };\n\n  this.refreshView = function() {\n    if (this.element) {\n      $scope.selectedDt = null;\n      this._refreshView();\n      if ($scope.activeDt) {\n        $scope.activeDateId = $scope.activeDt.uid;\n      }\n\n      var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\n      date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\n      ngModelCtrl.$setValidity('dateDisabled', !date ||\n        this.element && !this.isDisabled(date));\n    }\n  };\n\n  this.createDateObject = function(date, format) {\n    var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\n    model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));\n    var today = new Date();\n    today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\n    var time = this.compare(date, today);\n    var dt = {\n      date: date,\n      label: dateParser.filter(date, format),\n      selected: model && this.compare(date, model) === 0,\n      disabled: this.isDisabled(date),\n      past: time < 0,\n      current: time === 0,\n      future: time > 0,\n      customClass: this.customClass(date) || null\n    };\n\n    if (model && this.compare(date, model) === 0) {\n      $scope.selectedDt = dt;\n    }\n\n    if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\n      $scope.activeDt = dt;\n    }\n\n    return dt;\n  };\n\n  this.isDisabled = function(date) {\n    return $scope.disabled ||\n      this.minDate && this.compare(date, this.minDate) < 0 ||\n      this.maxDate && this.compare(date, this.maxDate) > 0 ||\n      $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\n  };\n\n  this.customClass = function(date) {\n    return $scope.customClass({date: date, mode: $scope.datepickerMode});\n  };\n\n  // Split array into smaller arrays\n  this.split = function(arr, size) {\n    var arrays = [];\n    while (arr.length > 0) {\n      arrays.push(arr.splice(0, size));\n    }\n    return arrays;\n  };\n\n  $scope.select = function(date) {\n    if ($scope.datepickerMode === self.minMode) {\n      var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);\n      dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n      dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));\n      ngModelCtrl.$setViewValue(dt);\n      ngModelCtrl.$render();\n    } else {\n      self.activeDate = date;\n      setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\n\n      $scope.$emit('uib:datepicker.mode');\n    }\n\n    $scope.$broadcast('uib:datepicker.focus');\n  };\n\n  $scope.move = function(direction) {\n    var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\n        month = self.activeDate.getMonth() + direction * (self.step.months || 0);\n    self.activeDate.setFullYear(year, month, 1);\n    self.refreshView();\n  };\n\n  $scope.toggleMode = function(direction) {\n    direction = direction || 1;\n\n    if ($scope.datepickerMode === self.maxMode && direction === 1 ||\n      $scope.datepickerMode === self.minMode && direction === -1) {\n      return;\n    }\n\n    setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\n\n    $scope.$emit('uib:datepicker.mode');\n  };\n\n  // Key event mapper\n  $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\n\n  var focusElement = function() {\n    self.element[0].focus();\n  };\n\n  // Listen for focus requests from popup directive\n  $scope.$on('uib:datepicker.focus', focusElement);\n\n  $scope.keydown = function(evt) {\n    var key = $scope.keys[evt.which];\n\n    if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\n      return;\n    }\n\n    evt.preventDefault();\n    if (!self.shortcutPropagation) {\n      evt.stopPropagation();\n    }\n\n    if (key === 'enter' || key === 'space') {\n      if (self.isDisabled(self.activeDate)) {\n        return; // do nothing\n      }\n      $scope.select(self.activeDate);\n    } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\n      $scope.toggleMode(key === 'up' ? 1 : -1);\n    } else {\n      self.handleKeyDown(key, evt);\n      self.refreshView();\n    }\n  };\n\n  $element.on('keydown', function(evt) {\n    $scope.$apply(function() {\n      $scope.keydown(evt);\n    });\n  });\n\n  $scope.$on('$destroy', function() {\n    //Clear all watch listeners on destroy\n    while (watchListeners.length) {\n      watchListeners.shift()();\n    }\n  });\n\n  function setMode(mode) {\n    $scope.datepickerMode = mode;\n    $scope.datepickerOptions.datepickerMode = mode;\n  }\n\n  function extractOptions(ngModelCtrl) {\n    var ngModelOptions;\n\n    if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\n      // guarantee a value\n      ngModelOptions = ngModelCtrl.$options ||\n        $scope.datepickerOptions.ngModelOptions ||\n        datepickerConfig.ngModelOptions ||\n        {};\n\n      // mimic 1.6+ api\n      ngModelOptions.getOption = function (key) {\n        return ngModelOptions[key];\n      };\n    } else { // in angular >=1.6 $options is always present\n      // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value\n      var timezone = ngModelCtrl.$options.getOption('timezone') ||\n        ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||\n        (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);\n\n      // values passed to createChild override existing values\n      ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance\n        .createChild(datepickerConfig.ngModelOptions) // lowest precedence\n        .createChild($scope.datepickerOptions.ngModelOptions)\n        .createChild(ngModelCtrl.$options) // highest precedence\n        .createChild({timezone: timezone}); // to keep from squashing a non-null value\n    }\n\n    return ngModelOptions;\n  }\n}])\n\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n  var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n  this.step = { months: 1 };\n  this.element = $element;\n  function getDaysInMonth(year, month) {\n    return month === 1 && year % 4 === 0 &&\n      (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\n  }\n\n  this.init = function(ctrl) {\n    angular.extend(ctrl, this);\n    scope.showWeeks = ctrl.showWeeks;\n    ctrl.refreshView();\n  };\n\n  this.getDates = function(startDate, n) {\n    var dates = new Array(n), current = new Date(startDate), i = 0, date;\n    while (i < n) {\n      date = new Date(current);\n      dates[i++] = date;\n      current.setDate(current.getDate() + 1);\n    }\n    return dates;\n  };\n\n  this._refreshView = function() {\n    var year = this.activeDate.getFullYear(),\n      month = this.activeDate.getMonth(),\n      firstDayOfMonth = new Date(this.activeDate);\n\n    firstDayOfMonth.setFullYear(year, month, 1);\n\n    var difference = this.startingDay - firstDayOfMonth.getDay(),\n      numDisplayedFromPreviousMonth = difference > 0 ?\n        7 - difference : - difference,\n      firstDate = new Date(firstDayOfMonth);\n\n    if (numDisplayedFromPreviousMonth > 0) {\n      firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n    }\n\n    // 42 is the number of days on a six-week calendar\n    var days = this.getDates(firstDate, 42);\n    for (var i = 0; i < 42; i ++) {\n      days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\n        secondary: days[i].getMonth() !== month,\n        uid: scope.uniqueId + '-' + i\n      });\n    }\n\n    scope.labels = new Array(7);\n    for (var j = 0; j < 7; j++) {\n      scope.labels[j] = {\n        abbr: dateFilter(days[j].date, this.formatDayHeader),\n        full: dateFilter(days[j].date, 'EEEE')\n      };\n    }\n\n    scope.title = dateFilter(this.activeDate, this.formatDayTitle);\n    scope.rows = this.split(days, 7);\n\n    if (scope.showWeeks) {\n      scope.weekNumbers = [];\n      var thursdayIndex = (4 + 7 - this.startingDay) % 7,\n          numWeeks = scope.rows.length;\n      for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\n        scope.weekNumbers.push(\n          getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\n      }\n    }\n  };\n\n  this.compare = function(date1, date2) {\n    var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n    var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n    _date1.setFullYear(date1.getFullYear());\n    _date2.setFullYear(date2.getFullYear());\n    return _date1 - _date2;\n  };\n\n  function getISO8601WeekNumber(date) {\n    var checkDate = new Date(date);\n    checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\n    var time = checkDate.getTime();\n    checkDate.setMonth(0); // Compare with Jan 1\n    checkDate.setDate(1);\n    return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n  }\n\n  this.handleKeyDown = function(key, evt) {\n    var date = this.activeDate.getDate();\n\n    if (key === 'left') {\n      date = date - 1;\n    } else if (key === 'up') {\n      date = date - 7;\n    } else if (key === 'right') {\n      date = date + 1;\n    } else if (key === 'down') {\n      date = date + 7;\n    } else if (key === 'pageup' || key === 'pagedown') {\n      var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\n      this.activeDate.setMonth(month, 1);\n      date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\n    } else if (key === 'home') {\n      date = 1;\n    } else if (key === 'end') {\n      date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\n    }\n    this.activeDate.setDate(date);\n  };\n}])\n\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n  this.step = { years: 1 };\n  this.element = $element;\n\n  this.init = function(ctrl) {\n    angular.extend(ctrl, this);\n    ctrl.refreshView();\n  };\n\n  this._refreshView = function() {\n    var months = new Array(12),\n        year = this.activeDate.getFullYear(),\n        date;\n\n    for (var i = 0; i < 12; i++) {\n      date = new Date(this.activeDate);\n      date.setFullYear(year, i, 1);\n      months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\n        uid: scope.uniqueId + '-' + i\n      });\n    }\n\n    scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\n    scope.rows = this.split(months, this.monthColumns);\n    scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;\n  };\n\n  this.compare = function(date1, date2) {\n    var _date1 = new Date(date1.getFullYear(), date1.getMonth());\n    var _date2 = new Date(date2.getFullYear(), date2.getMonth());\n    _date1.setFullYear(date1.getFullYear());\n    _date2.setFullYear(date2.getFullYear());\n    return _date1 - _date2;\n  };\n\n  this.handleKeyDown = function(key, evt) {\n    var date = this.activeDate.getMonth();\n\n    if (key === 'left') {\n      date = date - 1;\n    } else if (key === 'up') {\n      date = date - this.monthColumns;\n    } else if (key === 'right') {\n      date = date + 1;\n    } else if (key === 'down') {\n      date = date + this.monthColumns;\n    } else if (key === 'pageup' || key === 'pagedown') {\n      var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\n      this.activeDate.setFullYear(year);\n    } else if (key === 'home') {\n      date = 0;\n    } else if (key === 'end') {\n      date = 11;\n    }\n    this.activeDate.setMonth(date);\n  };\n}])\n\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n  var columns, range;\n  this.element = $element;\n\n  function getStartingYear(year) {\n    return parseInt((year - 1) / range, 10) * range + 1;\n  }\n\n  this.yearpickerInit = function() {\n    columns = this.yearColumns;\n    range = this.yearRows * columns;\n    this.step = { years: range };\n  };\n\n  this._refreshView = function() {\n    var years = new Array(range), date;\n\n    for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\n      date = new Date(this.activeDate);\n      date.setFullYear(start + i, 0, 1);\n      years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\n        uid: scope.uniqueId + '-' + i\n      });\n    }\n\n    scope.title = [years[0].label, years[range - 1].label].join(' - ');\n    scope.rows = this.split(years, columns);\n    scope.columns = columns;\n  };\n\n  this.compare = function(date1, date2) {\n    return date1.getFullYear() - date2.getFullYear();\n  };\n\n  this.handleKeyDown = function(key, evt) {\n    var date = this.activeDate.getFullYear();\n\n    if (key === 'left') {\n      date = date - 1;\n    } else if (key === 'up') {\n      date = date - columns;\n    } else if (key === 'right') {\n      date = date + 1;\n    } else if (key === 'down') {\n      date = date + columns;\n    } else if (key === 'pageup' || key === 'pagedown') {\n      date += (key === 'pageup' ? - 1 : 1) * range;\n    } else if (key === 'home') {\n      date = getStartingYear(this.activeDate.getFullYear());\n    } else if (key === 'end') {\n      date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\n    }\n    this.activeDate.setFullYear(date);\n  };\n}])\n\n.directive('uibDatepicker', function() {\n  return {\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\n    },\n    scope: {\n      datepickerOptions: '=?'\n    },\n    require: ['uibDatepicker', '^ngModel'],\n    restrict: 'A',\n    controller: 'UibDatepickerController',\n    controllerAs: 'datepicker',\n    link: function(scope, element, attrs, ctrls) {\n      var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n      datepickerCtrl.init(ngModelCtrl);\n    }\n  };\n})\n\n.directive('uibDaypicker', function() {\n  return {\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/datepicker/day.html';\n    },\n    require: ['^uibDatepicker', 'uibDaypicker'],\n    restrict: 'A',\n    controller: 'UibDaypickerController',\n    link: function(scope, element, attrs, ctrls) {\n      var datepickerCtrl = ctrls[0],\n        daypickerCtrl = ctrls[1];\n\n      daypickerCtrl.init(datepickerCtrl);\n    }\n  };\n})\n\n.directive('uibMonthpicker', function() {\n  return {\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/datepicker/month.html';\n    },\n    require: ['^uibDatepicker', 'uibMonthpicker'],\n    restrict: 'A',\n    controller: 'UibMonthpickerController',\n    link: function(scope, element, attrs, ctrls) {\n      var datepickerCtrl = ctrls[0],\n        monthpickerCtrl = ctrls[1];\n\n      monthpickerCtrl.init(datepickerCtrl);\n    }\n  };\n})\n\n.directive('uibYearpicker', function() {\n  return {\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/datepicker/year.html';\n    },\n    require: ['^uibDatepicker', 'uibYearpicker'],\n    restrict: 'A',\n    controller: 'UibYearpickerController',\n    link: function(scope, element, attrs, ctrls) {\n      var ctrl = ctrls[0];\n      angular.extend(ctrl, ctrls[1]);\n      ctrl.yearpickerInit();\n\n      ctrl.refreshView();\n    }\n  };\n});\n\nangular.module('ui.bootstrap.position', [])\n\n  /**\n   * A set of utility methods for working with the DOM.\n   * It is meant to be used where we need to absolute-position elements in\n   * relation to another element (this is the case for tooltips, popovers,\n   * typeahead suggestions etc.).\n   */\n  .factory('$uibPosition', ['$document', '$window', function($document, $window) {\n    /**\n     * Used by scrollbarWidth() function to cache scrollbar's width.\n     * Do not access this variable directly, use scrollbarWidth() instead.\n     */\n    var SCROLLBAR_WIDTH;\n    /**\n     * scrollbar on body and html element in IE and Edge overlay\n     * content and should be considered 0 width.\n     */\n    var BODY_SCROLLBAR_WIDTH;\n    var OVERFLOW_REGEX = {\n      normal: /(auto|scroll)/,\n      hidden: /(auto|scroll|hidden)/\n    };\n    var PLACEMENT_REGEX = {\n      auto: /\\s?auto?\\s?/i,\n      primary: /^(top|bottom|left|right)$/,\n      secondary: /^(top|bottom|left|right|center)$/,\n      vertical: /^(top|bottom)$/\n    };\n    var BODY_REGEX = /(HTML|BODY)/;\n\n    return {\n\n      /**\n       * Provides a raw DOM element from a jQuery/jQLite element.\n       *\n       * @param {element} elem - The element to convert.\n       *\n       * @returns {element} A HTML element.\n       */\n      getRawNode: function(elem) {\n        return elem.nodeName ? elem : elem[0] || elem;\n      },\n\n      /**\n       * Provides a parsed number for a style property.  Strips\n       * units and casts invalid numbers to 0.\n       *\n       * @param {string} value - The style value to parse.\n       *\n       * @returns {number} A valid number.\n       */\n      parseStyle: function(value) {\n        value = parseFloat(value);\n        return isFinite(value) ? value : 0;\n      },\n\n      /**\n       * Provides the closest positioned ancestor.\n       *\n       * @param {element} element - The element to get the offest parent for.\n       *\n       * @returns {element} The closest positioned ancestor.\n       */\n      offsetParent: function(elem) {\n        elem = this.getRawNode(elem);\n\n        var offsetParent = elem.offsetParent || $document[0].documentElement;\n\n        function isStaticPositioned(el) {\n          return ($window.getComputedStyle(el).position || 'static') === 'static';\n        }\n\n        while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\n          offsetParent = offsetParent.offsetParent;\n        }\n\n        return offsetParent || $document[0].documentElement;\n      },\n\n      /**\n       * Provides the scrollbar width, concept from TWBS measureScrollbar()\n       * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\n       * In IE and Edge, scollbar on body and html element overlay and should\n       * return a width of 0.\n       *\n       * @returns {number} The width of the browser scollbar.\n       */\n      scrollbarWidth: function(isBody) {\n        if (isBody) {\n          if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\n            var bodyElem = $document.find('body');\n            bodyElem.addClass('uib-position-body-scrollbar-measure');\n            BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\n            BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\n            bodyElem.removeClass('uib-position-body-scrollbar-measure');\n          }\n          return BODY_SCROLLBAR_WIDTH;\n        }\n\n        if (angular.isUndefined(SCROLLBAR_WIDTH)) {\n          var scrollElem = angular.element('<div class=\"uib-position-scrollbar-measure\"></div>');\n          $document.find('body').append(scrollElem);\n          SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\n          SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\n          scrollElem.remove();\n        }\n\n        return SCROLLBAR_WIDTH;\n      },\n\n      /**\n       * Provides the padding required on an element to replace the scrollbar.\n       *\n       * @returns {object} An object with the following properties:\n       *   <ul>\n       *     <li>**scrollbarWidth**: the width of the scrollbar</li>\n       *     <li>**widthOverflow**: whether the the width is overflowing</li>\n       *     <li>**right**: the amount of right padding on the element needed to replace the scrollbar</li>\n       *     <li>**rightOriginal**: the amount of right padding currently on the element</li>\n       *     <li>**heightOverflow**: whether the the height is overflowing</li>\n       *     <li>**bottom**: the amount of bottom padding on the element needed to replace the scrollbar</li>\n       *     <li>**bottomOriginal**: the amount of bottom padding currently on the element</li>\n       *   </ul>\n       */\n      scrollbarPadding: function(elem) {\n        elem = this.getRawNode(elem);\n\n        var elemStyle = $window.getComputedStyle(elem);\n        var paddingRight = this.parseStyle(elemStyle.paddingRight);\n        var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\n        var scrollParent = this.scrollParent(elem, false, true);\n        var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\n\n        return {\n          scrollbarWidth: scrollbarWidth,\n          widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\n          right: paddingRight + scrollbarWidth,\n          originalRight: paddingRight,\n          heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\n          bottom: paddingBottom + scrollbarWidth,\n          originalBottom: paddingBottom\n        };\n      },\n\n      /**\n       * Checks to see if the element is scrollable.\n       *\n       * @param {element} elem - The element to check.\n       * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n       *   default is false.\n       *\n       * @returns {boolean} Whether the element is scrollable.\n       */\n      isScrollable: function(elem, includeHidden) {\n        elem = this.getRawNode(elem);\n\n        var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n        var elemStyle = $window.getComputedStyle(elem);\n        return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\n      },\n\n      /**\n       * Provides the closest scrollable ancestor.\n       * A port of the jQuery UI scrollParent method:\n       * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\n       *\n       * @param {element} elem - The element to find the scroll parent of.\n       * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n       *   default is false.\n       * @param {boolean=} [includeSelf=false] - Should the element being passed be\n       * included in the scrollable llokup.\n       *\n       * @returns {element} A HTML element.\n       */\n      scrollParent: function(elem, includeHidden, includeSelf) {\n        elem = this.getRawNode(elem);\n\n        var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n        var documentEl = $document[0].documentElement;\n        var elemStyle = $window.getComputedStyle(elem);\n        if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\n          return elem;\n        }\n        var excludeStatic = elemStyle.position === 'absolute';\n        var scrollParent = elem.parentElement || documentEl;\n\n        if (scrollParent === documentEl || elemStyle.position === 'fixed') {\n          return documentEl;\n        }\n\n        while (scrollParent.parentElement && scrollParent !== documentEl) {\n          var spStyle = $window.getComputedStyle(scrollParent);\n          if (excludeStatic && spStyle.position !== 'static') {\n            excludeStatic = false;\n          }\n\n          if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\n            break;\n          }\n          scrollParent = scrollParent.parentElement;\n        }\n\n        return scrollParent;\n      },\n\n      /**\n       * Provides read-only equivalent of jQuery's position function:\n       * http://api.jquery.com/position/ - distance to closest positioned\n       * ancestor.  Does not account for margins by default like jQuery position.\n       *\n       * @param {element} elem - The element to caclulate the position on.\n       * @param {boolean=} [includeMargins=false] - Should margins be accounted\n       * for, default is false.\n       *\n       * @returns {object} An object with the following properties:\n       *   <ul>\n       *     <li>**width**: the width of the element</li>\n       *     <li>**height**: the height of the element</li>\n       *     <li>**top**: distance to top edge of offset parent</li>\n       *     <li>**left**: distance to left edge of offset parent</li>\n       *   </ul>\n       */\n      position: function(elem, includeMagins) {\n        elem = this.getRawNode(elem);\n\n        var elemOffset = this.offset(elem);\n        if (includeMagins) {\n          var elemStyle = $window.getComputedStyle(elem);\n          elemOffset.top -= this.parseStyle(elemStyle.marginTop);\n          elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\n        }\n        var parent = this.offsetParent(elem);\n        var parentOffset = {top: 0, left: 0};\n\n        if (parent !== $document[0].documentElement) {\n          parentOffset = this.offset(parent);\n          parentOffset.top += parent.clientTop - parent.scrollTop;\n          parentOffset.left += parent.clientLeft - parent.scrollLeft;\n        }\n\n        return {\n          width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\n          height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\n          top: Math.round(elemOffset.top - parentOffset.top),\n          left: Math.round(elemOffset.left - parentOffset.left)\n        };\n      },\n\n      /**\n       * Provides read-only equivalent of jQuery's offset function:\n       * http://api.jquery.com/offset/ - distance to viewport.  Does\n       * not account for borders, margins, or padding on the body\n       * element.\n       *\n       * @param {element} elem - The element to calculate the offset on.\n       *\n       * @returns {object} An object with the following properties:\n       *   <ul>\n       *     <li>**width**: the width of the element</li>\n       *     <li>**height**: the height of the element</li>\n       *     <li>**top**: distance to top edge of viewport</li>\n       *     <li>**right**: distance to bottom edge of viewport</li>\n       *   </ul>\n       */\n      offset: function(elem, includeMargins) {\n        elem = this.getRawNode(elem);\n\n        var elemBCR = elem.getBoundingClientRect();\n        var offset = {\n          width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\n          height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\n          top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\n          left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\n        };\n\n        if (includeMargins) {\n          var styles = window.getComputedStyle(elem);\n          var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\n          var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\n\n          offset.height += verticalMargin;\n          offset.width += horisontalMargin;\n        }\n\n        return offset;\n      },\n\n      /**\n       * Provides offset distance to the closest scrollable ancestor\n       * or viewport.  Accounts for border and scrollbar width.\n       *\n       * Right and bottom dimensions represent the distance to the\n       * respective edge of the viewport element.  If the element\n       * edge extends beyond the viewport, a negative value will be\n       * reported.\n       *\n       * @param {element} elem - The element to get the viewport offset for.\n       * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\n       * of the first scrollable element, default is false.\n       * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\n       * be accounted for, default is true.\n       *\n       * @returns {object} An object with the following properties:\n       *   <ul>\n       *     <li>**top**: distance to the top content edge of viewport element</li>\n       *     <li>**bottom**: distance to the bottom content edge of viewport element</li>\n       *     <li>**left**: distance to the left content edge of viewport element</li>\n       *     <li>**right**: distance to the right content edge of viewport element</li>\n       *   </ul>\n       */\n      viewportOffset: function(elem, useDocument, includePadding) {\n        elem = this.getRawNode(elem);\n        includePadding = includePadding !== false ? true : false;\n\n        var elemBCR = elem.getBoundingClientRect();\n        var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\n\n        var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\n        var offsetParentBCR = offsetParent.getBoundingClientRect();\n\n        offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\n        offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\n        if (offsetParent === $document[0].documentElement) {\n          offsetBCR.top += $window.pageYOffset;\n          offsetBCR.left += $window.pageXOffset;\n        }\n        offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\n        offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\n\n        if (includePadding) {\n          var offsetParentStyle = $window.getComputedStyle(offsetParent);\n          offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\n          offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\n          offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\n          offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\n        }\n\n        return {\n          top: Math.round(elemBCR.top - offsetBCR.top),\n          bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\n          left: Math.round(elemBCR.left - offsetBCR.left),\n          right: Math.round(offsetBCR.right - elemBCR.right)\n        };\n      },\n\n      /**\n       * Provides an array of placement values parsed from a placement string.\n       * Along with the 'auto' indicator, supported placement strings are:\n       *   <ul>\n       *     <li>top: element on top, horizontally centered on host element.</li>\n       *     <li>top-left: element on top, left edge aligned with host element left edge.</li>\n       *     <li>top-right: element on top, lerightft edge aligned with host element right edge.</li>\n       *     <li>bottom: element on bottom, horizontally centered on host element.</li>\n       *     <li>bottom-left: element on bottom, left edge aligned with host element left edge.</li>\n       *     <li>bottom-right: element on bottom, right edge aligned with host element right edge.</li>\n       *     <li>left: element on left, vertically centered on host element.</li>\n       *     <li>left-top: element on left, top edge aligned with host element top edge.</li>\n       *     <li>left-bottom: element on left, bottom edge aligned with host element bottom edge.</li>\n       *     <li>right: element on right, vertically centered on host element.</li>\n       *     <li>right-top: element on right, top edge aligned with host element top edge.</li>\n       *     <li>right-bottom: element on right, bottom edge aligned with host element bottom edge.</li>\n       *   </ul>\n       * A placement string with an 'auto' indicator is expected to be\n       * space separated from the placement, i.e: 'auto bottom-left'  If\n       * the primary and secondary placement values do not match 'top,\n       * bottom, left, right' then 'top' will be the primary placement and\n       * 'center' will be the secondary placement.  If 'auto' is passed, true\n       * will be returned as the 3rd value of the array.\n       *\n       * @param {string} placement - The placement string to parse.\n       *\n       * @returns {array} An array with the following values\n       * <ul>\n       *   <li>**[0]**: The primary placement.</li>\n       *   <li>**[1]**: The secondary placement.</li>\n       *   <li>**[2]**: If auto is passed: true, else undefined.</li>\n       * </ul>\n       */\n      parsePlacement: function(placement) {\n        var autoPlace = PLACEMENT_REGEX.auto.test(placement);\n        if (autoPlace) {\n          placement = placement.replace(PLACEMENT_REGEX.auto, '');\n        }\n\n        placement = placement.split('-');\n\n        placement[0] = placement[0] || 'top';\n        if (!PLACEMENT_REGEX.primary.test(placement[0])) {\n          placement[0] = 'top';\n        }\n\n        placement[1] = placement[1] || 'center';\n        if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\n          placement[1] = 'center';\n        }\n\n        if (autoPlace) {\n          placement[2] = true;\n        } else {\n          placement[2] = false;\n        }\n\n        return placement;\n      },\n\n      /**\n       * Provides coordinates for an element to be positioned relative to\n       * another element.  Passing 'auto' as part of the placement parameter\n       * will enable smart placement - where the element fits. i.e:\n       * 'auto left-top' will check to see if there is enough space to the left\n       * of the hostElem to fit the targetElem, if not place right (same for secondary\n       * top placement).  Available space is calculated using the viewportOffset\n       * function.\n       *\n       * @param {element} hostElem - The element to position against.\n       * @param {element} targetElem - The element to position.\n       * @param {string=} [placement=top] - The placement for the targetElem,\n       *   default is 'top'. 'center' is assumed as secondary placement for\n       *   'top', 'left', 'right', and 'bottom' placements.  Available placements are:\n       *   <ul>\n       *     <li>top</li>\n       *     <li>top-right</li>\n       *     <li>top-left</li>\n       *     <li>bottom</li>\n       *     <li>bottom-left</li>\n       *     <li>bottom-right</li>\n       *     <li>left</li>\n       *     <li>left-top</li>\n       *     <li>left-bottom</li>\n       *     <li>right</li>\n       *     <li>right-top</li>\n       *     <li>right-bottom</li>\n       *   </ul>\n       * @param {boolean=} [appendToBody=false] - Should the top and left values returned\n       *   be calculated from the body element, default is false.\n       * @param {boolean=} [includeMargins=false] - Should margins count into targetElem width\n       *    in position claculation\n       *\n       * @returns {object} An object with the following properties:\n       *   <ul>\n       *     <li>**top**: Value for targetElem top.</li>\n       *     <li>**left**: Value for targetElem left.</li>\n       *     <li>**placement**: The resolved placement.</li>\n       *   </ul>\n       */\n      positionElements: function(hostElem, targetElem, placement, appendToBody, includeMargins) {\n        hostElem = this.getRawNode(hostElem);\n        targetElem = this.getRawNode(targetElem);\n\n        // need to read from prop to support tests.\n        var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\n        var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\n\n        if (includeMargins) {\n          var styles = window.getComputedStyle(targetElem);\n          var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\n          var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\n\n          targetHeight += verticalMargin;\n          targetWidth += horisontalMargin;\n        }\n\n        placement = this.parsePlacement(placement);\n\n        var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\n        var targetElemPos = {top: 0, left: 0, placement: ''};\n\n        if (placement[2]) {\n          var viewportOffset = this.viewportOffset(hostElem, appendToBody);\n\n          var targetElemStyle = $window.getComputedStyle(targetElem);\n          var adjustedSize = {\n            width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\n            height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\n          };\n\n          placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\n            placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\n              placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\n                placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\n                  placement[0];\n\n          placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\n            placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\n              placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\n                placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\n                  placement[1];\n\n          if (placement[1] === 'center') {\n            if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n              var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\n              if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\n                placement[1] = 'left';\n              } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\n                placement[1] = 'right';\n              }\n            } else {\n              var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\n              if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\n                placement[1] = 'top';\n              } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\n                placement[1] = 'bottom';\n              }\n            }\n          }\n        }\n\n        switch (placement[0]) {\n          case 'top':\n            targetElemPos.top = hostElemPos.top - targetHeight;\n            break;\n          case 'bottom':\n            targetElemPos.top = hostElemPos.top + hostElemPos.height;\n            break;\n          case 'left':\n            targetElemPos.left = hostElemPos.left - targetWidth;\n            break;\n          case 'right':\n            targetElemPos.left = hostElemPos.left + hostElemPos.width;\n            break;\n        }\n\n        switch (placement[1]) {\n          case 'top':\n            targetElemPos.top = hostElemPos.top;\n            break;\n          case 'bottom':\n            targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\n            break;\n          case 'left':\n            targetElemPos.left = hostElemPos.left;\n            break;\n          case 'right':\n            targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\n            break;\n          case 'center':\n            if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n              targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\n            } else {\n              targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\n            }\n            break;\n        }\n\n        targetElemPos.top = Math.round(targetElemPos.top);\n        targetElemPos.left = Math.round(targetElemPos.left);\n        targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\n\n        return targetElemPos;\n      },\n\n      /**\n       * Provides a way to adjust the top positioning after first\n       * render to correctly align element to top after content\n       * rendering causes resized element height\n       *\n       * @param {array} placementClasses - The array of strings of classes\n       * element should have.\n       * @param {object} containerPosition - The object with container\n       * position information\n       * @param {number} initialHeight - The initial height for the elem.\n       * @param {number} currentHeight - The current height for the elem.\n       */\n      adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\n        if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\n          return {\n            top: containerPosition.top - currentHeight + 'px'\n          };\n        }\n      },\n\n      /**\n       * Provides a way for positioning tooltip & dropdown\n       * arrows when using placement options beyond the standard\n       * left, right, top, or bottom.\n       *\n       * @param {element} elem - The tooltip/dropdown element.\n       * @param {string} placement - The placement for the elem.\n       */\n      positionArrow: function(elem, placement) {\n        elem = this.getRawNode(elem);\n        var isTooltip = true;\n\n        var innerElem = elem.querySelector('.tooltip-inner');\n        if (!innerElem) {\n          if (angular.element(elem).hasClass('popover')) {\n            isTooltip = false;\n          } else {\n            return;\n          }\n        }\n\n        var arrowElem = elem.querySelector('.arrow');\n        if (!arrowElem) {\n          return;\n        }\n\n        var arrowCss = {\n          top: '',\n          bottom: '',\n          left: '',\n          right: ''\n        };\n\n        placement = this.parsePlacement(placement);\n        if (placement[1] === 'center') {\n          var arrowElemOffset = this.offset(arrowElem, true);\n          if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n            var aHW = arrowElemOffset.width / 2;\n            var eHW = this.offset(elem).width / 2;\n            var left = eHW - aHW;\n            arrowCss.left = '' + left + 'px';\n          } else {\n            var aHH = arrowElemOffset.height / 2;\n            var eHH = this.offset(elem).height / 2;\n            var top = eHH - aHH;\n            arrowCss.top = '' + top + 'px';\n          }\n        }\n\n        var borderProp = 'border-' + placement[0] + '-width';\n        var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\n\n        var borderRadiusProp = 'border-';\n        if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n          borderRadiusProp += placement[0] + '-' + placement[1];\n        } else {\n          borderRadiusProp += placement[1] + '-' + placement[0];\n        }\n        borderRadiusProp += '-radius';\n        var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\n\n        if (isTooltip) {\n          switch (placement[0]) {\n            case 'top':\n              arrowCss.bottom = '0';\n              break;\n            case 'bottom':\n              arrowCss.top = '0';\n              break;\n            case 'left':\n              arrowCss.right = '0';\n              break;\n            case 'right':\n              arrowCss.left = '0';\n              break;\n          }\n        }\n\n        arrowCss[placement[1]] = borderRadius;\n\n        angular.element(arrowElem).css(arrowCss);\n      }\n    };\n  }]);\n\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\n\n.value('$datepickerPopupLiteralWarning', true)\n\n.constant('uibDatepickerPopupConfig', {\n  altInputFormats: [],\n  appendToBody: false,\n  clearText: 'Clear',\n  closeOnDateSelection: true,\n  closeText: 'Done',\n  currentText: 'Today',\n  datepickerPopup: 'yyyy-MM-dd',\n  datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\n  datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\n  html5Types: {\n    date: 'yyyy-MM-dd',\n    'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\n    'month': 'yyyy-MM'\n  },\n  onOpenFocus: true,\n  showButtonBar: true,\n  placement: 'auto bottom-left'\n})\n\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\n  var cache = {},\n    isHtml5DateInput = false;\n  var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\n    datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\n    ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];\n\n  this.init = function(_ngModel_) {\n    ngModel = _ngModel_;\n    ngModelOptions = extractOptions(ngModel);\n    closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\n      $scope.$parent.$eval($attrs.closeOnDateSelection) :\n      datepickerPopupConfig.closeOnDateSelection;\n    appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\n      $scope.$parent.$eval($attrs.datepickerAppendToBody) :\n      datepickerPopupConfig.appendToBody;\n    onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\n      $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\n    datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\n      $attrs.datepickerPopupTemplateUrl :\n      datepickerPopupConfig.datepickerPopupTemplateUrl;\n    datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\n      $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\n    altInputFormats = angular.isDefined($attrs.altInputFormats) ?\n      $scope.$parent.$eval($attrs.altInputFormats) :\n      datepickerPopupConfig.altInputFormats;\n\n    $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\n      $scope.$parent.$eval($attrs.showButtonBar) :\n      datepickerPopupConfig.showButtonBar;\n\n    if (datepickerPopupConfig.html5Types[$attrs.type]) {\n      dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\n      isHtml5DateInput = true;\n    } else {\n      dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\n      $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\n        var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\n        // Invalidate the $modelValue to ensure that formatters re-run\n        // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\n        if (newDateFormat !== dateFormat) {\n          dateFormat = newDateFormat;\n          ngModel.$modelValue = null;\n\n          if (!dateFormat) {\n            throw new Error('uibDatepickerPopup must have a date format specified.');\n          }\n        }\n      });\n    }\n\n    if (!dateFormat) {\n      throw new Error('uibDatepickerPopup must have a date format specified.');\n    }\n\n    if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\n      throw new Error('HTML5 date input types do not support custom formats.');\n    }\n\n    // popup element used to display calendar\n    popupEl = angular.element(\n      \"<div uib-datepicker-popup-wrap data-ng-class=\\\"{'show': isOpen}\\\"><div uib-datepicker></div></div>\"\n    );\n\n    popupEl.attr({\n      'ng-model': 'date',\n      'ng-change': 'dateSelection(date)',\n      'template-url': datepickerPopupTemplateUrl\n    });\n\n    // datepicker element\n    datepickerEl = angular.element(popupEl.children()[0]);\n    datepickerEl.attr('template-url', datepickerTemplateUrl);\n\n    if (!$scope.datepickerOptions) {\n      $scope.datepickerOptions = {};\n    }\n\n    if (isHtml5DateInput) {\n      if ($attrs.type === 'month') {\n        $scope.datepickerOptions.datepickerMode = 'month';\n        $scope.datepickerOptions.minMode = 'month';\n      }\n    }\n\n    datepickerEl.attr('datepicker-options', 'datepickerOptions');\n\n    if (!isHtml5DateInput) {\n      // Internal API to maintain the correct ng-invalid-[key] class\n      ngModel.$$parserName = 'date';\n      ngModel.$validators.date = validator;\n      ngModel.$parsers.unshift(parseDate);\n      ngModel.$formatters.push(function(value) {\n        if (ngModel.$isEmpty(value)) {\n          $scope.date = value;\n          return value;\n        }\n\n        if (angular.isNumber(value)) {\n          value = new Date(value);\n        }\n\n        $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\n\n        return dateParser.filter($scope.date, dateFormat);\n      });\n    } else {\n      ngModel.$formatters.push(function(value) {\n        $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\n        return value;\n      });\n    }\n\n    // Detect changes in the view from the text box\n    ngModel.$viewChangeListeners.push(function() {\n      $scope.date = parseDateString(ngModel.$viewValue);\n    });\n\n    $element.on('keydown', inputKeydownBind);\n\n    $popup = $compile(popupEl)($scope);\n    // Prevent jQuery cache memory leak (template is now redundant after linking)\n    popupEl.remove();\n\n    if (appendToBody) {\n      $document.find('body').append($popup);\n    } else {\n      $element.after($popup);\n    }\n\n    $scope.$on('$destroy', function() {\n      if ($scope.isOpen === true) {\n        if (!$rootScope.$$phase) {\n          $scope.$apply(function() {\n            $scope.isOpen = false;\n          });\n        }\n      }\n\n      $popup.remove();\n      $element.off('keydown', inputKeydownBind);\n      $document.off('click', documentClickBind);\n      if (scrollParentEl) {\n        scrollParentEl.off('scroll', positionPopup);\n      }\n      angular.element($window).off('resize', positionPopup);\n\n      //Clear all watch listeners on destroy\n      while (watchListeners.length) {\n        watchListeners.shift()();\n      }\n    });\n  };\n\n  $scope.getText = function(key) {\n    return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\n  };\n\n  $scope.isDisabled = function(date) {\n    if (date === 'today') {\n      date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\n    }\n\n    var dates = {};\n    angular.forEach(['minDate', 'maxDate'], function(key) {\n      if (!$scope.datepickerOptions[key]) {\n        dates[key] = null;\n      } else if (angular.isDate($scope.datepickerOptions[key])) {\n        dates[key] = new Date($scope.datepickerOptions[key]);\n      } else {\n        if ($datepickerPopupLiteralWarning) {\n          $log.warn('Literal date support has been deprecated, please switch to date object usage');\n        }\n\n        dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\n      }\n    });\n\n    return $scope.datepickerOptions &&\n      dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\n      dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\n  };\n\n  $scope.compare = function(date1, date2) {\n    return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n  };\n\n  // Inner change\n  $scope.dateSelection = function(dt) {\n    $scope.date = dt;\n    var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\n    $element.val(date);\n    ngModel.$setViewValue(date);\n\n    if (closeOnDateSelection) {\n      $scope.isOpen = false;\n      $element[0].focus();\n    }\n  };\n\n  $scope.keydown = function(evt) {\n    if (evt.which === 27) {\n      evt.stopPropagation();\n      $scope.isOpen = false;\n      $element[0].focus();\n    }\n  };\n\n  $scope.select = function(date, evt) {\n    evt.stopPropagation();\n\n    if (date === 'today') {\n      var today = new Date();\n      if (angular.isDate($scope.date)) {\n        date = new Date($scope.date);\n        date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\n      } else {\n        date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\n        date.setHours(0, 0, 0, 0);\n      }\n    }\n    $scope.dateSelection(date);\n  };\n\n  $scope.close = function(evt) {\n    evt.stopPropagation();\n\n    $scope.isOpen = false;\n    $element[0].focus();\n  };\n\n  $scope.disabled = angular.isDefined($attrs.disabled) || false;\n  if ($attrs.ngDisabled) {\n    watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\n      $scope.disabled = disabled;\n    }));\n  }\n\n  $scope.$watch('isOpen', function(value) {\n    if (value) {\n      if (!$scope.disabled) {\n        $timeout(function() {\n          positionPopup();\n\n          if (onOpenFocus) {\n            $scope.$broadcast('uib:datepicker.focus');\n          }\n\n          $document.on('click', documentClickBind);\n\n          var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\n          if (appendToBody || $position.parsePlacement(placement)[2]) {\n            scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\n            if (scrollParentEl) {\n              scrollParentEl.on('scroll', positionPopup);\n            }\n          } else {\n            scrollParentEl = null;\n          }\n\n          angular.element($window).on('resize', positionPopup);\n        }, 0, false);\n      } else {\n        $scope.isOpen = false;\n      }\n    } else {\n      $document.off('click', documentClickBind);\n      if (scrollParentEl) {\n        scrollParentEl.off('scroll', positionPopup);\n      }\n      angular.element($window).off('resize', positionPopup);\n    }\n  });\n\n  function cameltoDash(string) {\n    return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\n  }\n\n  function parseDateString(viewValue) {\n    var date = dateParser.parse(viewValue, dateFormat, $scope.date);\n    if (isNaN(date)) {\n      for (var i = 0; i < altInputFormats.length; i++) {\n        date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\n        if (!isNaN(date)) {\n          return date;\n        }\n      }\n    }\n    return date;\n  }\n\n  function parseDate(viewValue) {\n    if (angular.isNumber(viewValue)) {\n      // presumably timestamp to date object\n      viewValue = new Date(viewValue);\n    }\n\n    if (!viewValue) {\n      return null;\n    }\n\n    if (angular.isDate(viewValue) && !isNaN(viewValue)) {\n      return viewValue;\n    }\n\n    if (angular.isString(viewValue)) {\n      var date = parseDateString(viewValue);\n      if (!isNaN(date)) {\n        return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));\n      }\n    }\n\n    return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;\n  }\n\n  function validator(modelValue, viewValue) {\n    var value = modelValue || viewValue;\n\n    if (!$attrs.ngRequired && !value) {\n      return true;\n    }\n\n    if (angular.isNumber(value)) {\n      value = new Date(value);\n    }\n\n    if (!value) {\n      return true;\n    }\n\n    if (angular.isDate(value) && !isNaN(value)) {\n      return true;\n    }\n\n    if (angular.isString(value)) {\n      return !isNaN(parseDateString(value));\n    }\n\n    return false;\n  }\n\n  function documentClickBind(event) {\n    if (!$scope.isOpen && $scope.disabled) {\n      return;\n    }\n\n    var popup = $popup[0];\n    var dpContainsTarget = $element[0].contains(event.target);\n    // The popup node may not be an element node\n    // In some browsers (IE) only element nodes have the 'contains' function\n    var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\n    if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\n      $scope.$apply(function() {\n        $scope.isOpen = false;\n      });\n    }\n  }\n\n  function inputKeydownBind(evt) {\n    if (evt.which === 27 && $scope.isOpen) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      $scope.$apply(function() {\n        $scope.isOpen = false;\n      });\n      $element[0].focus();\n    } else if (evt.which === 40 && !$scope.isOpen) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      $scope.$apply(function() {\n        $scope.isOpen = true;\n      });\n    }\n  }\n\n  function positionPopup() {\n    if ($scope.isOpen) {\n      var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\n      var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\n      var position = $position.positionElements($element, dpElement, placement, appendToBody);\n      dpElement.css({top: position.top + 'px', left: position.left + 'px'});\n      if (dpElement.hasClass('uib-position-measure')) {\n        dpElement.removeClass('uib-position-measure');\n      }\n    }\n  }\n\n  function extractOptions(ngModelCtrl) {\n    var ngModelOptions;\n\n    if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\n      // guarantee a value\n      ngModelOptions = angular.isObject(ngModelCtrl.$options) ?\n        ngModelCtrl.$options :\n        {\n          timezone: null\n        };\n\n      // mimic 1.6+ api\n      ngModelOptions.getOption = function (key) {\n        return ngModelOptions[key];\n      };\n    } else { // in angular >=1.6 $options is always present\n      ngModelOptions = ngModelCtrl.$options;\n    }\n\n    return ngModelOptions;\n  }\n\n  $scope.$on('uib:datepicker.mode', function() {\n    $timeout(positionPopup, 0, false);\n  });\n}])\n\n.directive('uibDatepickerPopup', function() {\n  return {\n    require: ['ngModel', 'uibDatepickerPopup'],\n    controller: 'UibDatepickerPopupController',\n    scope: {\n      datepickerOptions: '=?',\n      isOpen: '=?',\n      currentText: '@',\n      clearText: '@',\n      closeText: '@'\n    },\n    link: function(scope, element, attrs, ctrls) {\n      var ngModel = ctrls[0],\n        ctrl = ctrls[1];\n\n      ctrl.init(ngModel);\n    }\n  };\n})\n\n.directive('uibDatepickerPopupWrap', function() {\n  return {\n    restrict: 'A',\n    transclude: true,\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\n    }\n  };\n});\n\nangular.module('ui.bootstrap.debounce', [])\n/**\n * A helper, internal service that debounces a function\n */\n  .factory('$$debounce', ['$timeout', function($timeout) {\n    return function(callback, debounceTime) {\n      var timeoutPromise;\n\n      return function() {\n        var self = this;\n        var args = Array.prototype.slice.call(arguments);\n        if (timeoutPromise) {\n          $timeout.cancel(timeoutPromise);\n        }\n\n        timeoutPromise = $timeout(function() {\n          callback.apply(self, args);\n        }, debounceTime);\n      };\n    };\n  }]);\n\nangular.module('ui.bootstrap.multiMap', [])\n/**\n * A helper, internal data structure that stores all references attached to key\n */\n  .factory('$$multiMap', function() {\n    return {\n      createNew: function() {\n        var map = {};\n\n        return {\n          entries: function() {\n            return Object.keys(map).map(function(key) {\n              return {\n                key: key,\n                value: map[key]\n              };\n            });\n          },\n          get: function(key) {\n            return map[key];\n          },\n          hasKey: function(key) {\n            return !!map[key];\n          },\n          keys: function() {\n            return Object.keys(map);\n          },\n          put: function(key, value) {\n            if (!map[key]) {\n              map[key] = [];\n            }\n\n            map[key].push(value);\n          },\n          remove: function(key, value) {\n            var values = map[key];\n\n            if (!values) {\n              return;\n            }\n\n            var idx = values.indexOf(value);\n\n            if (idx !== -1) {\n              values.splice(idx, 1);\n            }\n\n            if (!values.length) {\n              delete map[key];\n            }\n          }\n        };\n      }\n    };\n  });\n\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])\n\n.constant('uibDropdownConfig', {\n  appendToOpenClass: 'uib-dropdown-open',\n  openClass: 'show'\n})\n\n.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {\n  var openScope = null;\n  var openedContainers = $$multiMap.createNew();\n\n  this.isOnlyOpen = function(dropdownScope, appendTo) {\n    var openedDropdowns = openedContainers.get(appendTo);\n    if (openedDropdowns) {\n      var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {\n        if (dropdown.scope === dropdownScope) {\n          return dropdown;\n        }\n\n        return toClose;\n      }, {});\n      if (openDropdown) {\n        return openedDropdowns.length === 1;\n      }\n    }\n\n    return false;\n  };\n\n  this.open = function(dropdownScope, element, appendTo) {\n    if (!openScope) {\n      $document.on('click', closeDropdown);\n    }\n\n    if (openScope && openScope !== dropdownScope) {\n      openScope.isOpen = false;\n    }\n\n    openScope = dropdownScope;\n\n    if (!appendTo) {\n      return;\n    }\n\n    var openedDropdowns = openedContainers.get(appendTo);\n    if (openedDropdowns) {\n      var openedScopes = openedDropdowns.map(function(dropdown) {\n        return dropdown.scope;\n      });\n      if (openedScopes.indexOf(dropdownScope) === -1) {\n        openedContainers.put(appendTo, {\n          scope: dropdownScope\n        });\n      }\n    } else {\n      openedContainers.put(appendTo, {\n        scope: dropdownScope\n      });\n    }\n  };\n\n  this.close = function(dropdownScope, element, appendTo) {\n    if (openScope === dropdownScope) {\n      $document.off('click', closeDropdown);\n      $document.off('keydown', this.keybindFilter);\n      openScope = null;\n    }\n\n    if (!appendTo) {\n      return;\n    }\n\n    var openedDropdowns = openedContainers.get(appendTo);\n    if (openedDropdowns) {\n      var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {\n        if (dropdown.scope === dropdownScope) {\n          return dropdown;\n        }\n\n        return toClose;\n      }, {});\n      if (dropdownToClose) {\n        openedContainers.remove(appendTo, dropdownToClose);\n      }\n    }\n  };\n\n  var closeDropdown = function(evt) {\n    // This method may still be called during the same mouse event that\n    // unbound this event handler. So check openScope before proceeding.\n    if (!openScope || !openScope.isOpen) { return; }\n\n    if (evt && openScope.getAutoClose() === 'disabled') { return; }\n\n    if (evt && evt.which === 3) { return; }\n\n    var toggleElement = openScope.getToggleElement();\n    if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\n      return;\n    }\n\n    var dropdownElement = openScope.getDropdownElement();\n    if (evt && openScope.getAutoClose() === 'outsideClick' &&\n      dropdownElement && dropdownElement[0].contains(evt.target)) {\n      return;\n    }\n\n    openScope.isOpen = false;\n\n    if (!$rootScope.$$phase) {\n      openScope.$apply();\n    }\n  };\n\n  this.keybindFilter = function(evt) {\n    if (!openScope) {\n      // see this.close as ESC could have been pressed which kills the scope so we can not proceed\n      return;\n    }\n\n    var dropdownElement = openScope.getDropdownElement();\n    var toggleElement = openScope.getToggleElement();\n    var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);\n    var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);\n    if (evt.which === 27) {\n      evt.stopPropagation();\n      openScope.focusToggleElement();\n      closeDropdown();\n    } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      openScope.focusDropdownEntry(evt.which);\n    }\n  };\n}])\n\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\n  var self = this,\n    scope = $scope.$new(), // create a child scope so we are not polluting original one\n    templateScope,\n    appendToOpenClass = dropdownConfig.appendToOpenClass,\n    openClass = dropdownConfig.openClass,\n    getIsOpen,\n    setIsOpen = angular.noop,\n    toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\n    keynavEnabled = false,\n    selectedOption = null,\n    body = $document.find('body');\n\n  $element.addClass('dropdown');\n\n  this.init = function() {\n    if ($attrs.isOpen) {\n      getIsOpen = $parse($attrs.isOpen);\n      setIsOpen = getIsOpen.assign;\n\n      $scope.$watch(getIsOpen, function(value) {\n        scope.isOpen = !!value;\n      });\n    }\n\n    keynavEnabled = angular.isDefined($attrs.keyboardNav);\n  };\n\n  this.toggle = function(open) {\n    scope.isOpen = arguments.length ? !!open : !scope.isOpen;\n    if (angular.isFunction(setIsOpen)) {\n      setIsOpen(scope, scope.isOpen);\n    }\n\n    return scope.isOpen;\n  };\n\n  // Allow other directives to watch status\n  this.isOpen = function() {\n    return scope.isOpen;\n  };\n\n  scope.getToggleElement = function() {\n    return self.toggleElement;\n  };\n\n  scope.getAutoClose = function() {\n    return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\n  };\n\n  scope.getElement = function() {\n    return $element;\n  };\n\n  scope.isKeynavEnabled = function() {\n    return keynavEnabled;\n  };\n\n  scope.focusDropdownEntry = function(keyCode) {\n    var elems = self.dropdownMenu ? //If append to body is used.\n      angular.element(self.dropdownMenu).find('.dropdown-item') :\n      $element.find('div').eq(0).find('a.');\n\n    switch (keyCode) {\n      case 40: {\n        if (!angular.isNumber(self.selectedOption)) {\n          self.selectedOption = 0;\n        } else {\n          self.selectedOption = self.selectedOption === elems.length - 1 ?\n            self.selectedOption :\n            self.selectedOption + 1;\n        }\n        break;\n      }\n      case 38: {\n        if (!angular.isNumber(self.selectedOption)) {\n          self.selectedOption = elems.length - 1;\n        } else {\n          self.selectedOption = self.selectedOption === 0 ?\n            0 : self.selectedOption - 1;\n        }\n        break;\n      }\n    }\n\n    elems[self.selectedOption].focus();\n  };\n\n  scope.getDropdownElement = function() {\n    return self.dropdownMenu;\n  };\n\n  scope.focusToggleElement = function() {\n    if (self.toggleElement) {\n      self.toggleElement[0].focus();\n    }\n  };\n\n  function removeDropdownMenu() {\n    $element.append(self.dropdownMenu);\n  }\n\n  scope.$watch('isOpen', function(isOpen, wasOpen) {\n    var appendTo = null,\n      appendToBody = false;\n\n    if (angular.isDefined($attrs.dropdownAppendTo)) {\n      var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\n      if (appendToEl) {\n        appendTo = angular.element(appendToEl);\n      }\n    }\n\n    if (angular.isDefined($attrs.dropdownAppendToBody)) {\n      var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);\n      if (appendToBodyValue !== false) {\n        appendToBody = true;\n      }\n    }\n\n    if (appendToBody && !appendTo) {\n      appendTo = body;\n    }\n\n    if (appendTo && self.dropdownMenu) {\n      if (isOpen) {\n        appendTo.append(self.dropdownMenu);\n        $element.on('$destroy', removeDropdownMenu);\n      } else {\n        $element.off('$destroy', removeDropdownMenu);\n        removeDropdownMenu();\n      }\n    }\n\n    if (appendTo && self.dropdownMenu) {\n      var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\n        css,\n        rightalign,\n        scrollbarPadding,\n        scrollbarWidth = 0;\n\n      css = {\n        top: pos.top + 'px',\n        display: isOpen ? 'block' : 'none'\n      };\n\n      rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\n      if (!rightalign) {\n        css.left = pos.left + 'px';\n        css.right = 'auto';\n      } else {\n        css.left = 'auto';\n        scrollbarPadding = $position.scrollbarPadding(appendTo);\n\n        if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\n          scrollbarWidth = scrollbarPadding.scrollbarWidth;\n        }\n\n        css.right = window.innerWidth - scrollbarWidth -\n          (pos.left + $element.prop('offsetWidth')) + 'px';\n      }\n\n      // Need to adjust our positioning to be relative to the appendTo container\n      // if it's not the body element\n      if (!appendToBody) {\n        var appendOffset = $position.offset(appendTo);\n\n        css.top = pos.top - appendOffset.top + 'px';\n\n        if (!rightalign) {\n          css.left = pos.left - appendOffset.left + 'px';\n        } else {\n          css.right = window.innerWidth -\n            (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\n        }\n      }\n\n      self.dropdownMenu.css(css);\n    }\n\n    // find openContainer by uib-dropdown-menu directive\n    var openContainer = appendTo ? appendTo : angular.element($element[0].querySelector(\"[uib-dropdown-menu]\"));\n    var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;\n    var hasOpenClass = openContainer.hasClass(dropdownOpenClass);\n    var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);\n\n    if (hasOpenClass === !isOpen) {\n      var toggleClass;\n      if (appendTo) {\n        toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';\n      } else {\n        toggleClass = isOpen ? 'addClass' : 'removeClass';\n      }\n\n      // original Bootstrap 4 dropdown sets openClass on both dropdownMenu and element\n      $animate[toggleClass]($element, dropdownOpenClass);\n\n      $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {\n        if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\n          toggleInvoker($scope, { open: !!isOpen });\n        }\n      });\n    }\n\n    if (isOpen) {\n      if (self.dropdownMenuTemplateUrl) {\n        $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\n          templateScope = scope.$new();\n          $compile(tplContent.trim())(templateScope, function(dropdownElement) {\n            var newEl = dropdownElement;\n            self.dropdownMenu.replaceWith(newEl);\n            self.dropdownMenu = newEl;\n            $animate.addClass(self.dropdownMenu, dropdownOpenClass);\n            $document.on('keydown', uibDropdownService.keybindFilter);\n          });\n        });\n      } else {\n        $document.on('keydown', uibDropdownService.keybindFilter);\n      }\n\n      scope.focusToggleElement();\n      uibDropdownService.open(scope, $element, appendTo);\n    } else {\n      uibDropdownService.close(scope, $element, appendTo);\n      if (self.dropdownMenuTemplateUrl) {\n        if (templateScope) {\n          templateScope.$destroy();\n        }\n        var newEl = angular.element('<div class=\"dropdown-menu\"></div>');\n        self.dropdownMenu.replaceWith(newEl);\n        self.dropdownMenu = newEl;\n      }\n\n      self.selectedOption = null;\n    }\n\n    if (angular.isFunction(setIsOpen)) {\n      setIsOpen($scope, isOpen);\n    }\n  });\n}])\n\n.directive('uibDropdown', function() {\n  return {\n    controller: 'UibDropdownController',\n    link: function(scope, element, attrs, dropdownCtrl) {\n      dropdownCtrl.init();\n    }\n  };\n})\n\n.directive('uibDropdownMenu', function() {\n  return {\n    restrict: 'A',\n    require: '?^uibDropdown',\n    link: function(scope, element, attrs, dropdownCtrl) {\n      if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\n        return;\n      }\n\n      element.addClass('dropdown-menu');\n\n      var tplUrl = attrs.templateUrl;\n      if (tplUrl) {\n        dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\n      }\n\n      if (!dropdownCtrl.dropdownMenu) {\n        dropdownCtrl.dropdownMenu = element;\n      }\n    }\n  };\n})\n\n.directive('uibDropdownToggle', function() {\n  return {\n    require: '?^uibDropdown',\n    link: function(scope, element, attrs, dropdownCtrl) {\n      if (!dropdownCtrl) {\n        return;\n      }\n\n      element.addClass('dropdown-toggle');\n\n      dropdownCtrl.toggleElement = element;\n\n      var toggleDropdown = function(event) {\n        event.preventDefault();\n\n        if (!element.hasClass('disabled') && !attrs.disabled) {\n          scope.$apply(function() {\n            dropdownCtrl.toggle();\n          });\n        }\n      };\n\n      element.on('click', toggleDropdown);\n\n      var openDropdown = function(event) {\n        if (event.which === 40 && !dropdownCtrl.isOpen()) {\n          event.preventDefault();\n          event.stopPropagation();\n\n          if (!element.hasClass('disabled') && !attrs.disabled) {\n            scope.$apply(function() {\n              dropdownCtrl.toggle();\n            });\n          }\n        }\n      };\n\n      element.on('keydown', openDropdown);\n\n      // WAI-ARIA\n      element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\n      scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\n        element.attr('aria-expanded', !!isOpen);\n      });\n\n      scope.$on('$destroy', function() {\n        element.off('click', toggleDropdown);\n        element.off('keydown', openDropdown);\n      });\n    }\n  };\n});\n\nangular.module('ui.bootstrap.stackedMap', [])\n/**\n * A helper, internal data structure that acts as a map but also allows getting / removing\n * elements in the LIFO order\n */\n  .factory('$$stackedMap', function() {\n    return {\n      createNew: function() {\n        var stack = [];\n\n        return {\n          add: function(key, value) {\n            stack.push({\n              key: key,\n              value: value\n            });\n          },\n          get: function(key) {\n            for (var i = 0; i < stack.length; i++) {\n              if (key === stack[i].key) {\n                return stack[i];\n              }\n            }\n          },\n          keys: function() {\n            var keys = [];\n            for (var i = 0; i < stack.length; i++) {\n              keys.push(stack[i].key);\n            }\n            return keys;\n          },\n          top: function() {\n            return stack[stack.length - 1];\n          },\n          remove: function(key) {\n            var idx = -1;\n            for (var i = 0; i < stack.length; i++) {\n              if (key === stack[i].key) {\n                idx = i;\n                break;\n              }\n            }\n            return stack.splice(idx, 1)[0];\n          },\n          removeTop: function() {\n            return stack.pop();\n          },\n          length: function() {\n            return stack.length;\n          }\n        };\n      }\n    };\n  });\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\n/**\n * Pluggable resolve mechanism for the modal resolve resolution\n * Supports UI Router's $resolve service\n */\n  .provider('$uibResolve', function() {\n    var resolve = this;\n    this.resolver = null;\n\n    this.setResolver = function(resolver) {\n      this.resolver = resolver;\n    };\n\n    this.$get = ['$injector', '$q', function($injector, $q) {\n      var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\n      return {\n        resolve: function(invocables, locals, parent, self) {\n          if (resolver) {\n            return resolver.resolve(invocables, locals, parent, self);\n          }\n\n          var promises = [];\n\n          angular.forEach(invocables, function(value) {\n            if (angular.isFunction(value) || angular.isArray(value)) {\n              promises.push($q.resolve($injector.invoke(value)));\n            } else if (angular.isString(value)) {\n              promises.push($q.resolve($injector.get(value)));\n            } else {\n              promises.push($q.resolve(value));\n            }\n          });\n\n          return $q.all(promises).then(function(resolves) {\n            var resolveObj = {};\n            var resolveIter = 0;\n            angular.forEach(invocables, function(value, key) {\n              resolveObj[key] = resolves[resolveIter++];\n            });\n\n            return resolveObj;\n          });\n        }\n      };\n    }];\n  })\n\n/**\n * A helper directive for the $modal service. It creates a backdrop element.\n */\n  .directive('uibModalBackdrop', ['$uibModalStack', '$q', '$animate',\n  function($modalStack, $q, $animate) {\n    return {\n      restrict: 'A',\n      compile: function(tElement, tAttrs) {\n        tElement.addClass(tAttrs.backdropClass);\n        return linkFn;\n      }\n    };\n\n    function linkFn(scope, element, attrs) {\n\n      // Deferred object that will be resolved when this modal is rendered.\n      var modalRenderDeferObj = $q.defer();\n      // Resolve render promise post-digest\n      scope.$$postDigest(function() {\n        modalRenderDeferObj.resolve();\n      });\n\n      modalRenderDeferObj.promise.then(function() {\n        if (attrs.modalInClass) {\n          $animate.addClass(element, attrs.modalInClass);\n        }\n      });\n\n      if (attrs.modalInClass) {\n        scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\n          var done = setIsAsync();\n          if (scope.modalOptions.animation) {\n            $animate.removeClass(element, attrs.modalInClass).then(done);\n          } else {\n            done();\n          }\n        });\n      }\n\n\n    }\n  }])\n\n  .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\n  function($modalStack, $q, $animateCss, $document) {\n    return {\n      scope: {\n        index: '@'\n      },\n      restrict: 'A',\n      transclude: true,\n      templateUrl: function(tElement, tAttrs) {\n        return tAttrs.templateUrl || 'uib/template/modal/window.html';\n      },\n      link: function(scope, element, attrs) {\n        element.addClass(attrs.windowTopClass || '');\n        scope.size = attrs.size;\n\n        scope.close = function(evt) {\n          var modal = $modalStack.getTop();\n          if (modal && modal.value.backdrop &&\n            modal.value.backdrop !== 'static' &&\n            evt.target === evt.currentTarget) {\n            evt.preventDefault();\n            evt.stopPropagation();\n            $modalStack.dismiss(modal.key, 'backdrop click');\n          }\n        };\n\n        // moved from template to fix issue #2280\n        element.on('click', scope.close);\n\n        // This property is only added to the scope for the purpose of detecting when this directive is rendered.\n        // We can detect that by using this property in the template associated with this directive and then use\n        // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\n        scope.$isRendered = true;\n\n        // Deferred object that will be resolved when this modal is rendered.\n        var modalRenderDeferObj = $q.defer();\n        // Resolve render promise post-digest\n        scope.$$postDigest(function() {\n          modalRenderDeferObj.resolve();\n        });\n\n        modalRenderDeferObj.promise.then(function() {\n          var animationPromise = null;\n\n          if (attrs.modalInClass) {\n            animationPromise = $animateCss(element, {\n              addClass: attrs.modalInClass\n            }).start();\n\n            scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\n              var done = setIsAsync();\n              $animateCss(element, {\n                removeClass: attrs.modalInClass\n              }).start().then(done);\n            });\n          }\n\n\n          $q.when(animationPromise).then(function() {\n            // Notify {@link $modalStack} that modal is rendered.\n            var modal = $modalStack.getTop();\n            if (modal) {\n              $modalStack.modalRendered(modal.key);\n            }\n\n            /**\n             * If something within the freshly-opened modal already has focus (perhaps via a\n             * directive that causes focus) then there's no need to try to focus anything.\n             */\n            if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\n              var inputWithAutofocus = element[0].querySelector('[autofocus]');\n              /**\n               * Auto-focusing of a freshly-opened modal element causes any child elements\n               * with the autofocus attribute to lose focus. This is an issue on touch\n               * based devices which will show and then hide the onscreen keyboard.\n               * Attempts to refocus the autofocus element via JavaScript will not reopen\n               * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\n               * the modal element if the modal does not contain an autofocus element.\n               */\n              if (inputWithAutofocus) {\n                inputWithAutofocus.focus();\n              } else {\n                element[0].focus();\n              }\n            }\n          });\n        });\n      }\n    };\n  }])\n\n  .directive('uibModalAnimationClass', function() {\n    return {\n      compile: function(tElement, tAttrs) {\n        if (tAttrs.modalAnimation) {\n          tElement.addClass(tAttrs.uibModalAnimationClass);\n        }\n      }\n    };\n  })\n\n  .directive('uibModalTransclude', ['$animate', function($animate) {\n    return {\n      link: function(scope, element, attrs, controller, transclude) {\n        transclude(scope.$parent, function(clone) {\n          element.empty();\n          $animate.enter(clone, element);\n        });\n      }\n    };\n  }])\n\n  .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\n    '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\n    function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\n      var OPENED_MODAL_CLASS = 'modal-open';\n\n      var backdropDomEl, backdropScope;\n      var openedWindows = $$stackedMap.createNew();\n      var openedClasses = $$multiMap.createNew();\n      var $modalStack = {\n        NOW_CLOSING_EVENT: 'modal.stack.now-closing'\n      };\n      var topModalIndex = 0;\n      var previousTopOpenedModal = null;\n      var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';\n\n      //Modal focus behavior\n      var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), ' +\n        'button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), textarea:not([disabled]):not([tabindex=\\'-1\\']), ' +\n        'iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]';\n      var scrollbarPadding;\n      var SNAKE_CASE_REGEXP = /[A-Z]/g;\n\n      // TODO: extract into common dependency with tooltip\n      function snake_case(name) {\n        var separator = '-';\n        return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n          return (pos ? separator : '') + letter.toLowerCase();\n        });\n      }\n\n      function isVisible(element) {\n        return !!(element.offsetWidth ||\n          element.offsetHeight ||\n          element.getClientRects().length);\n      }\n\n      function backdropIndex() {\n        var topBackdropIndex = -1;\n        var opened = openedWindows.keys();\n        for (var i = 0; i < opened.length; i++) {\n          if (openedWindows.get(opened[i]).value.backdrop) {\n            topBackdropIndex = i;\n          }\n        }\n\n        // If any backdrop exist, ensure that it's index is always\n        // right below the top modal\n        if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\n          topBackdropIndex = topModalIndex;\n        }\n        return topBackdropIndex;\n      }\n\n      $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\n        if (backdropScope) {\n          backdropScope.index = newBackdropIndex;\n        }\n      });\n\n      function removeModalWindow(modalInstance, elementToReceiveFocus) {\n        var modalWindow = openedWindows.get(modalInstance).value;\n        var appendToElement = modalWindow.appendTo;\n\n        //clean up the stack\n        openedWindows.remove(modalInstance);\n        previousTopOpenedModal = openedWindows.top();\n        if (previousTopOpenedModal) {\n          topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\n        }\n\n        removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\n          var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\n          openedClasses.remove(modalBodyClass, modalInstance);\n          var areAnyOpen = openedClasses.hasKey(modalBodyClass);\n          appendToElement.toggleClass(modalBodyClass, areAnyOpen);\n          if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\n            if (scrollbarPadding.originalRight) {\n              appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\n            } else {\n              appendToElement.css({paddingRight: ''});\n            }\n            scrollbarPadding = null;\n          }\n          toggleTopWindowClass(true);\n        }, modalWindow.closedDeferred);\n        checkRemoveBackdrop();\n\n        //move focus to specified element if available, or else to body\n        if (elementToReceiveFocus && elementToReceiveFocus.focus) {\n          elementToReceiveFocus.focus();\n        } else if (appendToElement.focus) {\n          appendToElement.focus();\n        }\n      }\n\n      // Add or remove \"windowTopClass\" from the top window in the stack\n      function toggleTopWindowClass(toggleSwitch) {\n        var modalWindow;\n\n        if (openedWindows.length() > 0) {\n          modalWindow = openedWindows.top().value;\n          modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\n        }\n      }\n\n      function checkRemoveBackdrop() {\n        //remove backdrop if no longer needed\n        if (backdropDomEl && backdropIndex() === -1) {\n          var backdropScopeRef = backdropScope;\n          removeAfterAnimate(backdropDomEl, backdropScope, function() {\n            backdropScopeRef = null;\n          });\n          backdropDomEl = undefined;\n          backdropScope = undefined;\n        }\n      }\n\n      function removeAfterAnimate(domEl, scope, done, closedDeferred) {\n        var asyncDeferred;\n        var asyncPromise = null;\n        var setIsAsync = function() {\n          if (!asyncDeferred) {\n            asyncDeferred = $q.defer();\n            asyncPromise = asyncDeferred.promise;\n          }\n\n          return function asyncDone() {\n            asyncDeferred.resolve();\n          };\n        };\n        scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\n\n        // Note that it's intentional that asyncPromise might be null.\n        // That's when setIsAsync has not been called during the\n        // NOW_CLOSING_EVENT broadcast.\n        return $q.when(asyncPromise).then(afterAnimating);\n\n        function afterAnimating() {\n          if (afterAnimating.done) {\n            return;\n          }\n          afterAnimating.done = true;\n\n          $animate.leave(domEl).then(function() {\n            if (done) {\n              done();\n            }\n\n            domEl.remove();\n            if (closedDeferred) {\n              closedDeferred.resolve();\n            }\n          });\n\n          scope.$destroy();\n        }\n      }\n\n      $document.on('keydown', keydownListener);\n\n      $rootScope.$on('$destroy', function() {\n        $document.off('keydown', keydownListener);\n      });\n\n      function keydownListener(evt) {\n        if (evt.isDefaultPrevented()) {\n          return evt;\n        }\n\n        var modal = openedWindows.top();\n        if (modal) {\n          switch (evt.which) {\n            case 27: {\n              if (modal.value.keyboard) {\n                evt.preventDefault();\n                $rootScope.$apply(function() {\n                  $modalStack.dismiss(modal.key, 'escape key press');\n                });\n              }\n              break;\n            }\n            case 9: {\n              var list = $modalStack.loadFocusElementList(modal);\n              var focusChanged = false;\n              if (evt.shiftKey) {\n                if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\n                  focusChanged = $modalStack.focusLastFocusableElement(list);\n                }\n              } else {\n                if ($modalStack.isFocusInLastItem(evt, list)) {\n                  focusChanged = $modalStack.focusFirstFocusableElement(list);\n                }\n              }\n\n              if (focusChanged) {\n                evt.preventDefault();\n                evt.stopPropagation();\n              }\n\n              break;\n            }\n          }\n        }\n      }\n\n      $modalStack.open = function(modalInstance, modal) {\n        var modalOpener = $document[0].activeElement,\n          modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\n\n        toggleTopWindowClass(false);\n\n        // Store the current top first, to determine what index we ought to use\n        // for the current top modal\n        previousTopOpenedModal = openedWindows.top();\n\n        openedWindows.add(modalInstance, {\n          deferred: modal.deferred,\n          renderDeferred: modal.renderDeferred,\n          closedDeferred: modal.closedDeferred,\n          modalScope: modal.scope,\n          backdrop: modal.backdrop,\n          keyboard: modal.keyboard,\n          openedClass: modal.openedClass,\n          windowTopClass: modal.windowTopClass,\n          animation: modal.animation,\n          appendTo: modal.appendTo\n        });\n\n        openedClasses.put(modalBodyClass, modalInstance);\n\n        var appendToElement = modal.appendTo,\n            currBackdropIndex = backdropIndex();\n\n        if (currBackdropIndex >= 0 && !backdropDomEl) {\n          backdropScope = $rootScope.$new(true);\n          backdropScope.modalOptions = modal;\n          backdropScope.index = currBackdropIndex;\n          backdropDomEl = angular.element('<div uib-modal-backdrop=\"modal-backdrop\"></div>');\n          backdropDomEl.attr({\n            'class': 'modal-backdrop',\n            'ng-style': '{\\'z-index\\': 1040 + (index && 1 || 0) + index*10}',\n            'uib-modal-animation-class': 'fade',\n            'modal-in-class': 'show'\n          });\n          if (modal.backdropClass) {\n            backdropDomEl.addClass(modal.backdropClass);\n          }\n\n          if (modal.animation) {\n            backdropDomEl.attr('modal-animation', 'true');\n          }\n\n          $animate.enter($compile(backdropDomEl)(backdropScope), appendToElement);\n          scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\n          if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\n            appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\n          }\n        }\n\n        var content;\n        if (modal.component) {\n          content = document.createElement(snake_case(modal.component.name));\n          content = angular.element(content);\n          content.attr({\n            resolve: '$resolve',\n            'modal-instance': '$uibModalInstance',\n            close: '$close($value)',\n            dismiss: '$dismiss($value)'\n          });\n        } else {\n          content = modal.content;\n        }\n\n        // Set the top modal index based on the index of the previous top modal\n        topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\n        var angularDomEl = angular.element('<div uib-modal-window=\"modal-window\"></div>');\n        angularDomEl.attr({\n          'class': 'modal',\n          'template-url': modal.windowTemplateUrl,\n          'window-top-class': modal.windowTopClass,\n          'role': 'dialog',\n          'aria-labelledby': modal.ariaLabelledBy,\n          'aria-describedby': modal.ariaDescribedBy,\n          'size': modal.size,\n          'index': topModalIndex,\n          'animate': 'animate',\n          'ng-style': '{\\'z-index\\': 1050 + $$topModalIndex*10, display: \\'block\\'}',\n          'tabindex': -1,\n          'uib-modal-animation-class': 'fade',\n          'modal-in-class': 'show'\n        }).append(content);\n        if (modal.windowClass) {\n          angularDomEl.addClass(modal.windowClass);\n        }\n\n        if (modal.animation) {\n          angularDomEl.attr('modal-animation', 'true');\n        }\n\n        appendToElement.addClass(modalBodyClass);\n        if (modal.scope) {\n          // we need to explicitly add the modal index to the modal scope\n          // because it is needed by ngStyle to compute the zIndex property.\n          modal.scope.$$topModalIndex = topModalIndex;\n        }\n        $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\n\n        openedWindows.top().value.modalDomEl = angularDomEl;\n        openedWindows.top().value.modalOpener = modalOpener;\n\n        applyAriaHidden(angularDomEl);\n\n        function applyAriaHidden(el) {\n          if (!el || el[0].tagName === 'BODY') {\n            return;\n          }\n\n          getSiblings(el).forEach(function(sibling) {\n            var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',\n              ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);\n\n            if (!ariaHiddenCount) {\n              ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;\n            }\n\n            sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);\n            sibling.setAttribute('aria-hidden', 'true');\n          });\n\n          return applyAriaHidden(el.parent());\n\n          function getSiblings(el) {\n            var children = el.parent() ? el.parent().children() : [];\n\n            return Array.prototype.filter.call(children, function(child) {\n              return child !== el[0];\n            });\n          }\n        }\n      };\n\n      function broadcastClosing(modalWindow, resultOrReason, closing) {\n        return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\n      }\n\n      function unhideBackgroundElements() {\n        Array.prototype.forEach.call(\n          document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),\n          function(hiddenEl) {\n            var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),\n              newHiddenCount = ariaHiddenCount - 1;\n            hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);\n\n            if (!newHiddenCount) {\n              hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);\n              hiddenEl.removeAttribute('aria-hidden');\n            }\n          }\n        );\n      }\n\n      $modalStack.close = function(modalInstance, result) {\n        var modalWindow = openedWindows.get(modalInstance);\n        unhideBackgroundElements();\n        if (modalWindow && broadcastClosing(modalWindow, result, true)) {\n          modalWindow.value.modalScope.$$uibDestructionScheduled = true;\n          modalWindow.value.deferred.resolve(result);\n          removeModalWindow(modalInstance, modalWindow.value.modalOpener);\n          return true;\n        }\n\n        return !modalWindow;\n      };\n\n      $modalStack.dismiss = function(modalInstance, reason) {\n        var modalWindow = openedWindows.get(modalInstance);\n        unhideBackgroundElements();\n        if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\n          modalWindow.value.modalScope.$$uibDestructionScheduled = true;\n          modalWindow.value.deferred.reject(reason);\n          removeModalWindow(modalInstance, modalWindow.value.modalOpener);\n          return true;\n        }\n        return !modalWindow;\n      };\n\n      $modalStack.dismissAll = function(reason) {\n        var topModal = this.getTop();\n        while (topModal && this.dismiss(topModal.key, reason)) {\n          topModal = this.getTop();\n        }\n      };\n\n      $modalStack.getTop = function() {\n        return openedWindows.top();\n      };\n\n      $modalStack.modalRendered = function(modalInstance) {\n        var modalWindow = openedWindows.get(modalInstance);\n        if (modalWindow) {\n          modalWindow.value.renderDeferred.resolve();\n        }\n      };\n\n      $modalStack.focusFirstFocusableElement = function(list) {\n        if (list.length > 0) {\n          list[0].focus();\n          return true;\n        }\n        return false;\n      };\n\n      $modalStack.focusLastFocusableElement = function(list) {\n        if (list.length > 0) {\n          list[list.length - 1].focus();\n          return true;\n        }\n        return false;\n      };\n\n      $modalStack.isModalFocused = function(evt, modalWindow) {\n        if (evt && modalWindow) {\n          var modalDomEl = modalWindow.value.modalDomEl;\n          if (modalDomEl && modalDomEl.length) {\n            return (evt.target || evt.srcElement) === modalDomEl[0];\n          }\n        }\n        return false;\n      };\n\n      $modalStack.isFocusInFirstItem = function(evt, list) {\n        if (list.length > 0) {\n          return (evt.target || evt.srcElement) === list[0];\n        }\n        return false;\n      };\n\n      $modalStack.isFocusInLastItem = function(evt, list) {\n        if (list.length > 0) {\n          return (evt.target || evt.srcElement) === list[list.length - 1];\n        }\n        return false;\n      };\n\n      $modalStack.loadFocusElementList = function(modalWindow) {\n        if (modalWindow) {\n          var modalDomE1 = modalWindow.value.modalDomEl;\n          if (modalDomE1 && modalDomE1.length) {\n            var elements = modalDomE1[0].querySelectorAll(tabbableSelector);\n            return elements ?\n              Array.prototype.filter.call(elements, function(element) {\n                return isVisible(element);\n              }) : elements;\n          }\n        }\n      };\n\n      return $modalStack;\n    }])\n\n  .provider('$uibModal', function() {\n    var $modalProvider = {\n      options: {\n        animation: true,\n        backdrop: true, //can also be false or 'static'\n        keyboard: true\n      },\n      $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\n        function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\n          var $modal = {};\n\n          function getTemplatePromise(options) {\n            return options.template ? $q.when(options.template) :\n              $templateRequest(angular.isFunction(options.templateUrl) ?\n                options.templateUrl() : options.templateUrl);\n          }\n\n          var promiseChain = null;\n          $modal.getPromiseChain = function() {\n            return promiseChain;\n          };\n\n          $modal.open = function(modalOptions) {\n            var modalResultDeferred = $q.defer();\n            var modalOpenedDeferred = $q.defer();\n            var modalClosedDeferred = $q.defer();\n            var modalRenderDeferred = $q.defer();\n\n            //prepare an instance of a modal to be injected into controllers and returned to a caller\n            var modalInstance = {\n              result: modalResultDeferred.promise,\n              opened: modalOpenedDeferred.promise,\n              closed: modalClosedDeferred.promise,\n              rendered: modalRenderDeferred.promise,\n              close: function (result) {\n                return $modalStack.close(modalInstance, result);\n              },\n              dismiss: function (reason) {\n                return $modalStack.dismiss(modalInstance, reason);\n              }\n            };\n\n            //merge and clean up options\n            modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\n            modalOptions.resolve = modalOptions.resolve || {};\n            modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\n\n            if (!modalOptions.appendTo.length) {\n              throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\n            }\n\n            //verify options\n            if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {\n              throw new Error('One of component or template or templateUrl options is required.');\n            }\n\n            var templateAndResolvePromise;\n            if (modalOptions.component) {\n              templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));\n            } else {\n              templateAndResolvePromise =\n                $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\n            }\n\n            function resolveWithTemplate() {\n              return templateAndResolvePromise;\n            }\n\n            // Wait for the resolution of the existing promise chain.\n            // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\n            // Then add to $modalStack and resolve opened.\n            // Finally clean up the chain variable if no subsequent modal has overwritten it.\n            var samePromise;\n            samePromise = promiseChain = $q.all([promiseChain])\n              .then(resolveWithTemplate, resolveWithTemplate)\n              .then(function resolveSuccess(tplAndVars) {\n                var providedScope = modalOptions.scope || $rootScope;\n\n                var modalScope = providedScope.$new();\n                modalScope.$close = modalInstance.close;\n                modalScope.$dismiss = modalInstance.dismiss;\n\n                modalScope.$on('$destroy', function() {\n                  if (!modalScope.$$uibDestructionScheduled) {\n                    modalScope.$dismiss('$uibUnscheduledDestruction');\n                  }\n                });\n\n                var modal = {\n                  scope: modalScope,\n                  deferred: modalResultDeferred,\n                  renderDeferred: modalRenderDeferred,\n                  closedDeferred: modalClosedDeferred,\n                  animation: modalOptions.animation,\n                  backdrop: modalOptions.backdrop,\n                  keyboard: modalOptions.keyboard,\n                  backdropClass: modalOptions.backdropClass,\n                  windowTopClass: modalOptions.windowTopClass,\n                  windowClass: modalOptions.windowClass,\n                  windowTemplateUrl: modalOptions.windowTemplateUrl,\n                  ariaLabelledBy: modalOptions.ariaLabelledBy,\n                  ariaDescribedBy: modalOptions.ariaDescribedBy,\n                  size: modalOptions.size,\n                  openedClass: modalOptions.openedClass,\n                  appendTo: modalOptions.appendTo\n                };\n\n                var component = {};\n                var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\n\n                if (modalOptions.component) {\n                  constructLocals(component, false, true, false);\n                  component.name = modalOptions.component;\n                  modal.component = component;\n                } else if (modalOptions.controller) {\n                  constructLocals(ctrlLocals, true, false, true);\n\n                  // the third param will make the controller instantiate later,private api\n                  // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\n                  ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\n                  if (modalOptions.controllerAs && modalOptions.bindToController) {\n                    ctrlInstance = ctrlInstantiate.instance;\n                    ctrlInstance.$close = modalScope.$close;\n                    ctrlInstance.$dismiss = modalScope.$dismiss;\n                    angular.extend(ctrlInstance, {\n                      $resolve: ctrlLocals.$scope.$resolve\n                    }, providedScope);\n                  }\n\n                  ctrlInstance = ctrlInstantiate();\n\n                  if (angular.isFunction(ctrlInstance.$onInit)) {\n                    ctrlInstance.$onInit();\n                  }\n                }\n\n                if (!modalOptions.component) {\n                  modal.content = tplAndVars[0];\n                }\n\n                $modalStack.open(modalInstance, modal);\n                modalOpenedDeferred.resolve(true);\n\n                function constructLocals(obj, template, instanceOnScope, injectable) {\n                  obj.$scope = modalScope;\n                  obj.$scope.$resolve = {};\n                  if (instanceOnScope) {\n                    obj.$scope.$uibModalInstance = modalInstance;\n                  } else {\n                    obj.$uibModalInstance = modalInstance;\n                  }\n\n                  var resolves = template ? tplAndVars[1] : tplAndVars;\n                  angular.forEach(resolves, function(value, key) {\n                    if (injectable) {\n                      obj[key] = value;\n                    }\n\n                    obj.$scope.$resolve[key] = value;\n                  });\n                }\n            }, function resolveError(reason) {\n              modalOpenedDeferred.reject(reason);\n              modalResultDeferred.reject(reason);\n            })['finally'](function() {\n              if (promiseChain === samePromise) {\n                promiseChain = null;\n              }\n            });\n\n            return modalInstance;\n          };\n\n          return $modal;\n        }\n      ]\n    };\n\n    return $modalProvider;\n  });\n\nangular.module('ui.bootstrap.paging', [])\n/**\n * Helper internal service for generating common controller code between the\n * pager and pagination components\n */\n.factory('uibPaging', ['$parse', function($parse) {\n  return {\n    create: function(ctrl, $scope, $attrs) {\n      ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\n      ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\n      ctrl._watchers = [];\n\n      ctrl.init = function(ngModelCtrl, config) {\n        ctrl.ngModelCtrl = ngModelCtrl;\n        ctrl.config = config;\n\n        ngModelCtrl.$render = function() {\n          ctrl.render();\n        };\n\n        if ($attrs.itemsPerPage) {\n          ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\n            ctrl.itemsPerPage = parseInt(value, 10);\n            $scope.totalPages = ctrl.calculateTotalPages();\n            ctrl.updatePage();\n          }));\n        } else {\n          ctrl.itemsPerPage = config.itemsPerPage;\n        }\n\n        $scope.$watch('totalItems', function(newTotal, oldTotal) {\n          if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\n            $scope.totalPages = ctrl.calculateTotalPages();\n            ctrl.updatePage();\n          }\n        });\n      };\n\n      ctrl.calculateTotalPages = function() {\n        var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\n        return Math.max(totalPages || 0, 1);\n      };\n\n      ctrl.render = function() {\n        $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\n      };\n\n      $scope.selectPage = function(page, evt) {\n        if (evt) {\n          evt.preventDefault();\n        }\n\n        var clickAllowed = !$scope.ngDisabled || !evt;\n        if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\n          if (evt && evt.target) {\n            evt.target.blur();\n          }\n          ctrl.ngModelCtrl.$setViewValue(page);\n          ctrl.ngModelCtrl.$render();\n        }\n      };\n\n      $scope.getText = function(key) {\n        return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\n      };\n\n      $scope.noPrevious = function() {\n        return $scope.page === 1;\n      };\n\n      $scope.noNext = function() {\n        return $scope.page === $scope.totalPages;\n      };\n\n      ctrl.updatePage = function() {\n        ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\n\n        if ($scope.page > $scope.totalPages) {\n          $scope.selectPage($scope.totalPages);\n        } else {\n          ctrl.ngModelCtrl.$render();\n        }\n      };\n\n      $scope.$on('$destroy', function() {\n        while (ctrl._watchers.length) {\n          ctrl._watchers.shift()();\n        }\n      });\n    }\n  };\n}]);\n\nangular.module('ui.bootstrap.pager', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\n\n.controller('UibPagerController', ['$scope', '$attrs', 'uibPaging', 'uibPagerConfig', function($scope, $attrs, uibPaging, uibPagerConfig) {\n  $scope.align = angular.isDefined($attrs.align) ? $scope.$parent.$eval($attrs.align) : uibPagerConfig.align;\n\n  uibPaging.create(this, $scope, $attrs);\n}])\n\n.constant('uibPagerConfig', {\n  itemsPerPage: 10,\n  previousText: '« Previous',\n  nextText: 'Next »',\n  align: true\n})\n\n.directive('uibPager', ['uibPagerConfig', function(uibPagerConfig) {\n  return {\n    scope: {\n      totalItems: '=',\n      previousText: '@',\n      nextText: '@',\n      ngDisabled: '='\n    },\n    require: ['uibPager', '?ngModel'],\n    restrict: 'A',\n    controller: 'UibPagerController',\n    controllerAs: 'pager',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/pager/pager.html';\n    },\n    link: function(scope, element, attrs, ctrls) {\n      element.addClass('pager');\n      var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n      if (!ngModelCtrl) {\n        return; // do nothing if no ng-model\n      }\n\n      paginationCtrl.init(ngModelCtrl, uibPagerConfig);\n    }\n  };\n}]);\n\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\n  var ctrl = this;\n  // Setup configuration parameters\n  var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\n    rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\n    forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\n    boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\n    pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\n  $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\n  $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\n  $attrs.$set('role', 'menu');\n\n  uibPaging.create(this, $scope, $attrs);\n\n  if ($attrs.maxSize) {\n    ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\n      maxSize = parseInt(value, 10);\n      ctrl.render();\n    }));\n  }\n\n  // Create page object used in template\n  function makePage(number, text, isActive) {\n    return {\n      number: number,\n      text: text,\n      active: isActive\n    };\n  }\n\n  function getPages(currentPage, totalPages) {\n    var pages = [];\n\n    // Default page limits\n    var startPage = 1, endPage = totalPages;\n    var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\n\n    // recompute if maxSize\n    if (isMaxSized) {\n      if (rotate) {\n        // Current page is displayed in the middle of the visible ones\n        startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\n        endPage = startPage + maxSize - 1;\n\n        // Adjust if limit is exceeded\n        if (endPage > totalPages) {\n          endPage = totalPages;\n          startPage = endPage - maxSize + 1;\n        }\n      } else {\n        // Visible pages are paginated with maxSize\n        startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\n\n        // Adjust last page if limit is exceeded\n        endPage = Math.min(startPage + maxSize - 1, totalPages);\n      }\n    }\n\n    // Add page number links\n    for (var number = startPage; number <= endPage; number++) {\n      var page = makePage(number, pageLabel(number), number === currentPage);\n      pages.push(page);\n    }\n\n    // Add links to move between page sets\n    if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\n      if (startPage > 1) {\n        if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\n        var previousPageSet = makePage(startPage - 1, '...', false);\n        pages.unshift(previousPageSet);\n      }\n        if (boundaryLinkNumbers) {\n          if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\n            var secondPageLink = makePage(2, '2', false);\n            pages.unshift(secondPageLink);\n          }\n          //add the first page\n          var firstPageLink = makePage(1, '1', false);\n          pages.unshift(firstPageLink);\n        }\n      }\n\n      if (endPage < totalPages) {\n        if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\n        var nextPageSet = makePage(endPage + 1, '...', false);\n        pages.push(nextPageSet);\n      }\n        if (boundaryLinkNumbers) {\n          if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\n            var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\n            pages.push(secondToLastPageLink);\n          }\n          //add the last page\n          var lastPageLink = makePage(totalPages, totalPages, false);\n          pages.push(lastPageLink);\n        }\n      }\n    }\n    return pages;\n  }\n\n  var originalRender = this.render;\n  this.render = function() {\n    originalRender();\n    if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\n      $scope.pages = getPages($scope.page, $scope.totalPages);\n    }\n  };\n}])\n\n.constant('uibPaginationConfig', {\n  itemsPerPage: 10,\n  boundaryLinks: false,\n  boundaryLinkNumbers: false,\n  directionLinks: true,\n  firstText: 'First',\n  previousText: 'Previous',\n  nextText: 'Next',\n  lastText: 'Last',\n  rotate: true,\n  forceEllipses: false\n})\n\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\n  return {\n    scope: {\n      totalItems: '=',\n      firstText: '@',\n      previousText: '@',\n      nextText: '@',\n      lastText: '@',\n      ngDisabled:'='\n    },\n    require: ['uibPagination', '?ngModel'],\n    restrict: 'A',\n    controller: 'UibPaginationController',\n    controllerAs: 'pagination',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/pagination/pagination.html';\n    },\n    link: function(scope, element, attrs, ctrls) {\n      element.addClass('pagination');\n      var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n      if (!ngModelCtrl) {\n         return; // do nothing if no ng-model\n      }\n\n      paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\n    }\n  };\n}]);\n\n/**\n * The following features are still outstanding: animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, html tooltips, and selector delegation.\n */\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\n\n/**\n * The $tooltip service creates tooltip- and popover-like directives as well as\n * houses global options for them.\n */\n.provider('$uibTooltip', function() {\n  // The default options tooltip and popover.\n  var defaultOptions = {\n    placement: 'top',\n    placementClassPrefix: 'bs-tooltip-',\n    animation: true,\n    popupDelay: 0,\n    popupCloseDelay: 0,\n    useContentExp: false\n  };\n\n  // Default hide triggers for each show trigger\n  var triggerMap = {\n    'mouseenter': 'mouseleave',\n    'click': 'click',\n    'outsideClick': 'outsideClick',\n    'focus': 'blur',\n    'none': ''\n  };\n\n  // The options specified to the provider globally.\n  var globalOptions = {};\n\n  /**\n   * `options({})` allows global configuration of all tooltips in the\n   * application.\n   *\n   *   var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\n   *     // place tooltips left instead of top by default\n   *     $tooltipProvider.options( { placement: 'left' } );\n   *   });\n   */\n\tthis.options = function(value) {\n\t\tangular.extend(globalOptions, value);\n\t};\n\n  /**\n   * This allows you to extend the set of trigger mappings available. E.g.:\n   *\n   *   $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\n   */\n  this.setTriggers = function setTriggers(triggers) {\n    angular.extend(triggerMap, triggers);\n  };\n\n  /**\n   * This is a helper function for translating camel-case to snake_case.\n   */\n  function snake_case(name) {\n    var regexp = /[A-Z]/g;\n    var separator = '-';\n    return name.replace(regexp, function(letter, pos) {\n      return (pos ? separator : '') + letter.toLowerCase();\n    });\n  }\n\n  /**\n   * Returns the actual instance of the $tooltip service.\n   * TODO support multiple triggers\n   */\n  this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\n    var openedTooltips = $$stackedMap.createNew();\n    $document.on('keyup', keypressListener);\n\n    $rootScope.$on('$destroy', function() {\n      $document.off('keyup', keypressListener);\n    });\n\n    function keypressListener(e) {\n      if (e.which === 27) {\n        var last = openedTooltips.top();\n        if (last) {\n          last.value.close();\n          last = null;\n        }\n      }\n    }\n\n    return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\n      options = angular.extend({}, defaultOptions, globalOptions, options);\n\n      /**\n       * Returns an object of show and hide triggers.\n       *\n       * If a trigger is supplied,\n       * it is used to show the tooltip; otherwise, it will use the `trigger`\n       * option passed to the `$tooltipProvider.options` method; else it will\n       * default to the trigger supplied to this directive factory.\n       *\n       * The hide trigger is based on the show trigger. If the `trigger` option\n       * was passed to the `$tooltipProvider.options` method, it will use the\n       * mapped trigger from `triggerMap` or the passed trigger if the map is\n       * undefined; otherwise, it uses the `triggerMap` value of the show\n       * trigger; else it will just use the show trigger.\n       */\n      function getTriggers(trigger) {\n        var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\n        var hide = show.map(function(trigger) {\n          return triggerMap[trigger] || trigger;\n        });\n        return {\n          show: show,\n          hide: hide\n        };\n      }\n\n      var directiveName = snake_case(ttType);\n\n      var startSym = $interpolate.startSymbol();\n      var endSym = $interpolate.endSymbol();\n      var template =\n        '<div '+ directiveName + '-popup ' +\n          'uib-title=\"' + startSym + 'title' + endSym + '\" ' +\n          (options.useContentExp ?\n            'content-exp=\"contentExp()\" ' :\n            'content=\"' + startSym + 'content' + endSym + '\" ') +\n          'origin-scope=\"origScope\" ' +\n          'class=\"uib-position-measure ' + prefix + '\" ' +\n          'tooltip-animation-class=\"fade\"' +\n          'uib-tooltip-classes ' +\n          'ng-class=\"{ show: isOpen }\" ' +\n          '>' +\n        '</div>';\n\n      return {\n        compile: function(tElem, tAttrs) {\n          var tooltipLinker = $compile(template);\n\n          return function link(scope, element, attrs, tooltipCtrl) {\n            var tooltip;\n            var tooltipLinkedScope;\n            var transitionTimeout;\n            var showTimeout;\n            var hideTimeout;\n            var positionTimeout;\n            var adjustmentTimeout;\n            var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\n            var triggers = getTriggers(undefined);\n            var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\n            var ttScope = scope.$new(true);\n            var repositionScheduled = false;\n            var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\n            var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\n            var observers = [];\n            var lastPlacement;\n\n            var positionTooltip = function() {\n              // check if tooltip exists and is not empty\n              if (!tooltip || !tooltip.html()) { return; }\n\n              if (!positionTimeout) {\n                positionTimeout = $timeout(function() {\n                  var placementClasses = $position.parsePlacement(ttScope.placement);\n                  var placement = placementClasses[1] === 'center' ? placementClasses[0] : placementClasses[0] + '-' + placementClasses[1];\n\t\t\t\t  \n                  // need to add classes prior to placement to allow correct tooltip width calculations\n                  if (!tooltip.hasClass(placementClasses[0])) {\n                    tooltip.removeClass(lastPlacement.split('-')[0]);\n                    tooltip.addClass(placementClasses[0]);\n                  }\n\n                  if (!tooltip.hasClass(options.placementClassPrefix + placement)) {\n                    tooltip.removeClass(options.placementClassPrefix + lastPlacement);\n                    tooltip.addClass(options.placementClassPrefix + placement);\n                  }\n                  \n                  // Take into account tooltup margins, since boostrap css draws tooltip arrow inside margins\n                  var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody, true);\n                  var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\n                  var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\n                  tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\n\n                  adjustmentTimeout = $timeout(function() {\n                    var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\n                    var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\n                    if (adjustment) {\n                      tooltip.css(adjustment);\n                    }\n                    adjustmentTimeout = null;\n                  }, 0, false);\n\n                  // first time through tt element will have the\n                  // uib-position-measure class or if the placement\n                  // has changed we need to position the arrow.\n                  if (tooltip.hasClass('uib-position-measure')) {\n                    $position.positionArrow(tooltip, ttPosition.placement);\n                    tooltip.removeClass('uib-position-measure');\n                  } else if (lastPlacement !== ttPosition.placement) {\n                    $position.positionArrow(tooltip, ttPosition.placement);\n                  }\n                  lastPlacement = ttPosition.placement;\n\n                  positionTimeout = null;\n                }, 0, false);\n              }\n            };\n\n            // Set up the correct scope to allow transclusion later\n            ttScope.origScope = scope;\n\n            // By default, the tooltip is not open.\n            // TODO add ability to start tooltip opened\n            ttScope.isOpen = false;\n\n            function toggleTooltipBind() {\n              if (!ttScope.isOpen) {\n                showTooltipBind();\n              } else {\n                hideTooltipBind();\n              }\n            }\n\n            // Show the tooltip with delay if specified, otherwise show it immediately\n            function showTooltipBind() {\n              if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\n                return;\n              }\n\n              cancelHide();\n              prepareTooltip();\n\n              if (ttScope.popupDelay) {\n                // Do nothing if the tooltip was already scheduled to pop-up.\n                // This happens if show is triggered multiple times before any hide is triggered.\n                if (!showTimeout) {\n                  showTimeout = $timeout(show, ttScope.popupDelay, false);\n                }\n              } else {\n                show();\n              }\n            }\n\n            function hideTooltipBind() {\n              cancelShow();\n\n              if (ttScope.popupCloseDelay) {\n                if (!hideTimeout) {\n                  hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\n                }\n              } else {\n                hide();\n              }\n            }\n\n            // Show the tooltip popup element.\n            function show() {\n              cancelShow();\n              cancelHide();\n\n              // Don't show empty tooltips.\n              if (!ttScope.content) {\n                return angular.noop;\n              }\n\n              createTooltip();\n\n              // And show the tooltip.\n              ttScope.$evalAsync(function() {\n                ttScope.isOpen = true;\n                assignIsOpen(true);\n                positionTooltip();\n              });\n            }\n\n            function cancelShow() {\n              if (showTimeout) {\n                $timeout.cancel(showTimeout);\n                showTimeout = null;\n              }\n\n              if (positionTimeout) {\n                $timeout.cancel(positionTimeout);\n                positionTimeout = null;\n              }\n            }\n\n            // Hide the tooltip popup element.\n            function hide() {\n              if (!ttScope) {\n                return;\n              }\n\n              // First things first: we don't show it anymore.\n              ttScope.$evalAsync(function() {\n                if (ttScope) {\n                  ttScope.isOpen = false;\n                  assignIsOpen(false);\n                  // And now we remove it from the DOM. However, if we have animation, we\n                  // need to wait for it to expire beforehand.\n                  // FIXME: this is a placeholder for a port of the transitions library.\n                  // The fade transition in TWBS is 150ms.\n                  if (ttScope.animation) {\n                    if (!transitionTimeout) {\n                      transitionTimeout = $timeout(removeTooltip, 150, false);\n                    }\n                  } else {\n                    removeTooltip();\n                  }\n                }\n              });\n            }\n\n            function cancelHide() {\n              if (hideTimeout) {\n                $timeout.cancel(hideTimeout);\n                hideTimeout = null;\n              }\n\n              if (transitionTimeout) {\n                $timeout.cancel(transitionTimeout);\n                transitionTimeout = null;\n              }\n            }\n\n            function createTooltip() {\n              // There can only be one tooltip element per directive shown at once.\n              if (tooltip) {\n                return;\n              }\n\n              tooltipLinkedScope = ttScope.$new();\n              tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\n                if (appendToBody) {\n                  $document.find('body').append(tooltip);\n                } else {\n                  element.after(tooltip);\n                }\n              });\n\n              openedTooltips.add(ttScope, {\n                close: hide\n              });\n\n              prepObservers();\n            }\n\n            function removeTooltip() {\n              cancelShow();\n              cancelHide();\n              unregisterObservers();\n\n              if (tooltip) {\n                tooltip.remove();\n\n                tooltip = null;\n                if (adjustmentTimeout) {\n                  $timeout.cancel(adjustmentTimeout);\n                }\n              }\n\n              openedTooltips.remove(ttScope);\n\n              if (tooltipLinkedScope) {\n                tooltipLinkedScope.$destroy();\n                tooltipLinkedScope = null;\n              }\n            }\n\n            /**\n             * Set the initial scope values. Once\n             * the tooltip is created, the observers\n             * will be added to keep things in sync.\n             */\n            function prepareTooltip() {\n              ttScope.title = attrs[prefix + 'Title'];\n              if (contentParse) {\n                ttScope.content = contentParse(scope);\n              } else {\n                ttScope.content = attrs[ttType];\n              }\n\n              ttScope.popupClass = attrs[prefix + 'Class'];\n              ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\n              var placement = $position.parsePlacement(ttScope.placement);\n              lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\n\n              var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\n              var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\n              ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\n              ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\n            }\n\n            function assignIsOpen(isOpen) {\n              if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\n                isOpenParse.assign(scope, isOpen);\n              }\n            }\n\n            ttScope.contentExp = function() {\n              return ttScope.content;\n            };\n\n            /**\n             * Observe the relevant attributes.\n             */\n            attrs.$observe('disabled', function(val) {\n              if (val) {\n                cancelShow();\n              }\n\n              if (val && ttScope.isOpen) {\n                hide();\n              }\n            });\n\n            if (isOpenParse) {\n              scope.$watch(isOpenParse, function(val) {\n                if (ttScope && !val === ttScope.isOpen) {\n                  toggleTooltipBind();\n                }\n              });\n            }\n\n            function prepObservers() {\n              observers.length = 0;\n\n              if (contentParse) {\n                observers.push(\n                  scope.$watch(contentParse, function(val) {\n                    ttScope.content = val;\n                    if (!val && ttScope.isOpen) {\n                      hide();\n                    }\n                  })\n                );\n\n                observers.push(\n                  tooltipLinkedScope.$watch(function() {\n                    if (!repositionScheduled) {\n                      repositionScheduled = true;\n                      tooltipLinkedScope.$$postDigest(function() {\n                        repositionScheduled = false;\n                        if (ttScope && ttScope.isOpen) {\n                          positionTooltip();\n                        }\n                      });\n                    }\n                  })\n                );\n              } else {\n                observers.push(\n                  attrs.$observe(ttType, function(val) {\n                    ttScope.content = val;\n                    if (!val && ttScope.isOpen) {\n                      hide();\n                    } else {\n                      positionTooltip();\n                    }\n                  })\n                );\n              }\n\n              observers.push(\n                attrs.$observe(prefix + 'Title', function(val) {\n                  ttScope.title = val;\n                  if (ttScope.isOpen) {\n                    positionTooltip();\n                  }\n                })\n              );\n\n              observers.push(\n                attrs.$observe(prefix + 'Placement', function(val) {\n                  ttScope.placement = val ? val : options.placement;\n                  if (ttScope.isOpen) {\n                    positionTooltip();\n                  }\n                })\n              );\n            }\n\n            function unregisterObservers() {\n              if (observers.length) {\n                angular.forEach(observers, function(observer) {\n                  observer();\n                });\n                observers.length = 0;\n              }\n            }\n\n            // hide tooltips/popovers for outsideClick trigger\n            function bodyHideTooltipBind(e) {\n              if (!ttScope || !ttScope.isOpen || !tooltip) {\n                return;\n              }\n              // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\n              if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\n                hideTooltipBind();\n              }\n            }\n\n            // KeyboardEvent handler to hide the tooltip on Escape key press\n            function hideOnEscapeKey(e) {\n              if (e.which === 27) {\n                hideTooltipBind();\n              }\n            }\n\n            var unregisterTriggers = function() {\n              triggers.show.forEach(function(trigger) {\n                if (trigger === 'outsideClick') {\n                  element.off('click', toggleTooltipBind);\n                } else {\n                  element.off(trigger, showTooltipBind);\n                  element.off(trigger, toggleTooltipBind);\n                }\n                element.off('keypress', hideOnEscapeKey);\n              });\n              triggers.hide.forEach(function(trigger) {\n                if (trigger === 'outsideClick') {\n                  $document.off('click', bodyHideTooltipBind);\n                } else {\n                  element.off(trigger, hideTooltipBind);\n                }\n              });\n            };\n\n            function prepTriggers() {\n              var showTriggers = [], hideTriggers = [];\n              var val = scope.$eval(attrs[prefix + 'Trigger']);\n              unregisterTriggers();\n\n              if (angular.isObject(val)) {\n                Object.keys(val).forEach(function(key) {\n                  showTriggers.push(key);\n                  hideTriggers.push(val[key]);\n                });\n                triggers = {\n                  show: showTriggers,\n                  hide: hideTriggers\n                };\n              } else {\n                triggers = getTriggers(val);\n              }\n\n              if (triggers.show !== 'none') {\n                triggers.show.forEach(function(trigger, idx) {\n                  if (trigger === 'outsideClick') {\n                    element.on('click', toggleTooltipBind);\n                    $document.on('click', bodyHideTooltipBind);\n                  } else if (trigger === triggers.hide[idx]) {\n                    element.on(trigger, toggleTooltipBind);\n                  } else if (trigger) {\n                    element.on(trigger, showTooltipBind);\n                    element.on(triggers.hide[idx], hideTooltipBind);\n                  }\n                  element.on('keypress', hideOnEscapeKey);\n                });\n              }\n            }\n\n            prepTriggers();\n\n            var animation = scope.$eval(attrs[prefix + 'Animation']);\n            ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\n\n            var appendToBodyVal;\n            var appendKey = prefix + 'AppendToBody';\n            if (appendKey in attrs && attrs[appendKey] === undefined) {\n              appendToBodyVal = true;\n            } else {\n              appendToBodyVal = scope.$eval(attrs[appendKey]);\n            }\n\n            appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\n\n            // Make sure tooltip is destroyed and removed.\n            scope.$on('$destroy', function onDestroyTooltip() {\n              unregisterTriggers();\n              removeTooltip();\n              ttScope = null;\n            });\n          };\n        }\n      };\n    };\n  }];\n})\n\n// This is mostly ngInclude code but with a custom scope\n.directive('uibTooltipTemplateTransclude', [\n         '$animate', '$sce', '$compile', '$templateRequest',\nfunction ($animate, $sce, $compile, $templateRequest) {\n  return {\n    link: function(scope, elem, attrs) {\n      var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\n\n      var changeCounter = 0,\n        currentScope,\n        previousElement,\n        currentElement;\n\n      var cleanupLastIncludeContent = function() {\n        if (previousElement) {\n          previousElement.remove();\n          previousElement = null;\n        }\n\n        if (currentScope) {\n          currentScope.$destroy();\n          currentScope = null;\n        }\n\n        if (currentElement) {\n          $animate.leave(currentElement).then(function() {\n            previousElement = null;\n          });\n          previousElement = currentElement;\n          currentElement = null;\n        }\n      };\n\n      scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\n        var thisChangeId = ++changeCounter;\n\n        if (src) {\n          //set the 2nd param to true to ignore the template request error so that the inner\n          //contents and scope can be cleaned up.\n          $templateRequest(src, true).then(function(response) {\n            if (thisChangeId !== changeCounter) { return; }\n            var newScope = origScope.$new();\n            var template = response;\n\n            var clone = $compile(template)(newScope, function(clone) {\n              cleanupLastIncludeContent();\n              $animate.enter(clone, elem);\n            });\n\n            currentScope = newScope;\n            currentElement = clone;\n\n            currentScope.$emit('$includeContentLoaded', src);\n          }, function() {\n            if (thisChangeId === changeCounter) {\n              cleanupLastIncludeContent();\n              scope.$emit('$includeContentError', src);\n            }\n          });\n          scope.$emit('$includeContentRequested', src);\n        } else {\n          cleanupLastIncludeContent();\n        }\n      });\n\n      scope.$on('$destroy', cleanupLastIncludeContent);\n    }\n  };\n}])\n\n/**\n * Note that it's intentional that these classes are *not* applied through $animate.\n * They must not be animated as they're expected to be present on the tooltip on\n * initialization.\n */\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\n  return {\n    restrict: 'A',\n    link: function(scope, element, attrs) {\n      // need to set the primary position so the\n      // arrow has space during position measure.\n      // tooltip.positionTooltip()\n      if (scope.placement) {\n        // // There are no top-left etc... classes\n        // // in TWBS, so we need the primary position.\n        var position = $uibPosition.parsePlacement(scope.placement);\n        element.addClass(position[0]);\n      }\n\n      if (scope.popupClass) {\n        element.addClass(scope.popupClass);\n      }\n\n      if (scope.animation) {\n        element.addClass(attrs.tooltipAnimationClass);\n      }\n    }\n  };\n}])\n\n.directive('uibTooltipPopup', function() {\n  return {\n    restrict: 'A',\n    scope: { content: '@' },\n    templateUrl: 'uib/template/tooltip/tooltip-popup.html'\n  };\n})\n\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\n}])\n\n.directive('uibTooltipTemplatePopup', function() {\n  return {\n    restrict: 'A',\n    scope: { contentExp: '&', originScope: '&' },\n    templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\n  };\n})\n\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\n    useContentExp: true\n  });\n}])\n\n.directive('uibTooltipHtmlPopup', function() {\n  return {\n    restrict: 'A',\n    scope: { contentExp: '&' },\n    templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\n  };\n})\n\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\n    useContentExp: true\n  });\n}]);\n\n/**\n * The following features are still outstanding: popup delay, animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, and selector delegatation.\n */\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\n\n.directive('uibPopoverTemplatePopup', function() {\n  return {\n    restrict: 'A',\n    scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\n    templateUrl: 'uib/template/popover/popover-template.html'\n  };\n})\n\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\n    placementClassPrefix: 'bs-popover-',\n    useContentExp: true\n  });\n}])\n\n.directive('uibPopoverHtmlPopup', function() {\n  return {\n    restrict: 'A',\n    scope: { contentExp: '&', uibTitle: '@' },\n    templateUrl: 'uib/template/popover/popover-html.html'\n  };\n})\n\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\n    placementClassPrefix: 'bs-popover-',\n    useContentExp: true\n  });\n}])\n\n.directive('uibPopoverPopup', function() {\n  return {\n    restrict: 'A',\n    scope: { uibTitle: '@', content: '@' },\n    templateUrl: 'uib/template/popover/popover.html'\n  };\n})\n\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\n  return $uibTooltip('uibPopover', 'popover', 'click', {\n    placementClassPrefix: 'bs-popover-'\n  });\n}]);\n\nangular.module('ui.bootstrap.progressbar', [])\n\n.constant('uibProgressConfig', {\n  animate: true,\n  max: 100\n})\n\n.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) {\n  var self = this,\n      animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;\n\n  this.bars = [];\n  $scope.max = getMaxOrDefault();\n\n  this.addBar = function(bar, element, attrs) {\n    if (!animate) {\n      element.css({'transition': 'none'});\n    }\n\n    this.bars.push(bar);\n\n    bar.max = getMaxOrDefault();\n    bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar';\n\n    bar.$watch('value', function(value) {\n      bar.recalculatePercentage();\n    });\n\n    bar.recalculatePercentage = function() {\n      var totalPercentage = self.bars.reduce(function(total, bar) {\n        bar.percent = +(100 * bar.value / bar.max).toFixed(2);\n        return total + bar.percent;\n      }, 0);\n\n      if (totalPercentage > 100) {\n        bar.percent -= totalPercentage - 100;\n      }\n    };\n\n    bar.$on('$destroy', function() {\n      element = null;\n      self.removeBar(bar);\n    });\n  };\n\n  this.removeBar = function(bar) {\n    this.bars.splice(this.bars.indexOf(bar), 1);\n    this.bars.forEach(function (bar) {\n      bar.recalculatePercentage();\n    });\n  };\n\n  //$attrs.$observe('maxParam', function(maxParam) {\n  $scope.$watch('maxParam', function(maxParam) {\n    self.bars.forEach(function(bar) {\n      bar.max = getMaxOrDefault();\n      bar.recalculatePercentage();\n    });\n  });\n\n  function getMaxOrDefault () {\n    return angular.isDefined($scope.maxParam) ? $scope.maxParam : progressConfig.max;\n  }\n}])\n\n.directive('uibProgress', function() {\n  return {\n    replace: true,\n    transclude: true,\n    controller: 'UibProgressController',\n    require: 'uibProgress',\n    scope: {\n      maxParam: '=?max'\n    },\n    templateUrl: 'uib/template/progressbar/progress.html'\n  };\n})\n\n.directive('uibBar', function() {\n  return {\n    replace: true,\n    transclude: true,\n    require: '^uibProgress',\n    scope: {\n      value: '=',\n      type: '@',\n      striped: '=?'\n    },\n    templateUrl: 'uib/template/progressbar/bar.html',\n    link: function(scope, element, attrs, progressCtrl) {\n      progressCtrl.addBar(scope, element, attrs);\n    }\n  };\n})\n\n.directive('uibProgressbar', function() {\n  return {\n    replace: true,\n    transclude: true,\n    controller: 'UibProgressController',\n    scope: {\n      value: '=',\n      maxParam: '=?max',\n      type: '@',\n      striped: '=?'\n    },\n    templateUrl: 'uib/template/progressbar/progressbar.html',\n    link: function(scope, element, attrs, progressCtrl) {\n      progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title});\n    }\n  };\n});\n\nangular.module('ui.bootstrap.rating', [])\n\n.constant('uibRatingConfig', {\n  max: 5,\n  stateOn: null,\n  stateOff: null,\n  enableReset: true,\n  titles: ['one', 'two', 'three', 'four', 'five']\n})\n\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\n  var ngModelCtrl = { $setViewValue: angular.noop },\n    self = this;\n\n  this.init = function(ngModelCtrl_) {\n    ngModelCtrl = ngModelCtrl_;\n    ngModelCtrl.$render = this.render;\n\n    ngModelCtrl.$formatters.push(function(value) {\n      if (angular.isNumber(value) && value << 0 !== value) {\n        value = Math.round(value);\n      }\n\n      return value;\n    });\n\n    this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\n    this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\n    this.enableReset = angular.isDefined($attrs.enableReset) ?\n      $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\n    var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\n    this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\n      tmpTitles : ratingConfig.titles;\n\n    var ratingStates = angular.isDefined($attrs.ratingStates) ?\n      $scope.$parent.$eval($attrs.ratingStates) :\n      new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\n    $scope.range = this.buildTemplateObjects(ratingStates);\n  };\n\n  this.buildTemplateObjects = function(states) {\n    for (var i = 0, n = states.length; i < n; i++) {\n      states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\n    }\n    return states;\n  };\n\n  this.getTitle = function(index) {\n    if (index >= this.titles.length) {\n      return index + 1;\n    }\n\n    return this.titles[index];\n  };\n\n  $scope.rate = function(value) {\n    if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\n      var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\n      ngModelCtrl.$setViewValue(newViewValue);\n      ngModelCtrl.$render();\n    }\n  };\n\n  $scope.enter = function(value) {\n    if (!$scope.readonly) {\n      $scope.value = value;\n    }\n    $scope.onHover({value: value});\n  };\n\n  $scope.reset = function() {\n    $scope.value = ngModelCtrl.$viewValue;\n    $scope.onLeave();\n  };\n\n  $scope.onKeydown = function(evt) {\n    if (/(37|38|39|40)/.test(evt.which)) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\n    }\n  };\n\n  this.render = function() {\n    $scope.value = ngModelCtrl.$viewValue;\n    $scope.title = self.getTitle($scope.value - 1);\n  };\n}])\n\n.directive('uibRating', function() {\n  return {\n    require: ['uibRating', 'ngModel'],\n    restrict: 'A',\n    scope: {\n      readonly: '=?readOnly',\n      onHover: '&',\n      onLeave: '&'\n    },\n    controller: 'UibRatingController',\n    templateUrl: 'uib/template/rating/rating.html',\n    link: function(scope, element, attrs, ctrls) {\n      var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n      ratingCtrl.init(ngModelCtrl);\n    }\n  };\n});\n\nangular.module('ui.bootstrap.tabs', [])\n\n.controller('UibTabsetController', ['$scope', function ($scope) {\n  var ctrl = this,\n    oldIndex;\n  ctrl.tabs = [];\n\n  ctrl.select = function(index, evt) {\n    if (!destroyed) {\n      var previousIndex = findTabIndex(oldIndex);\n      var previousSelected = ctrl.tabs[previousIndex];\n      if (previousSelected) {\n        previousSelected.tab.onDeselect({\n          $event: evt,\n          $selectedIndex: index\n        });\n        if (evt && evt.isDefaultPrevented()) {\n          return;\n        }\n        previousSelected.tab.active = false;\n      }\n\n      var selected = ctrl.tabs[index];\n      if (selected) {\n        selected.tab.onSelect({\n          $event: evt\n        });\n        selected.tab.active = true;\n        ctrl.active = selected.index;\n        oldIndex = selected.index;\n      } else if (!selected && angular.isDefined(oldIndex)) {\n        ctrl.active = null;\n        oldIndex = null;\n      }\n    }\n  };\n\n  ctrl.addTab = function addTab(tab) {\n    ctrl.tabs.push({\n      tab: tab,\n      index: tab.index\n    });\n    ctrl.tabs.sort(function(t1, t2) {\n      if (t1.index > t2.index) {\n        return 1;\n      }\n\n      if (t1.index < t2.index) {\n        return -1;\n      }\n\n      return 0;\n    });\n\n    if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\n      var newActiveIndex = findTabIndex(tab.index);\n      ctrl.select(newActiveIndex);\n    }\n  };\n\n  ctrl.removeTab = function removeTab(tab) {\n    var index;\n    for (var i = 0; i < ctrl.tabs.length; i++) {\n      if (ctrl.tabs[i].tab === tab) {\n        index = i;\n        break;\n      }\n    }\n\n    if (ctrl.tabs[index].index === ctrl.active) {\n      var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\n        index - 1 : index + 1 % ctrl.tabs.length;\n      ctrl.select(newActiveTabIndex);\n    }\n\n    ctrl.tabs.splice(index, 1);\n  };\n\n  $scope.$watch('tabset.active', function(val) {\n    if (angular.isDefined(val) && val !== oldIndex) {\n      ctrl.select(findTabIndex(val));\n    }\n  });\n\n  var destroyed;\n  $scope.$on('$destroy', function() {\n    destroyed = true;\n  });\n\n  function findTabIndex(index) {\n    for (var i = 0; i < ctrl.tabs.length; i++) {\n      if (ctrl.tabs[i].index === index) {\n        return i;\n      }\n    }\n  }\n}])\n\n.directive('uibTabset', function() {\n  return {\n    transclude: true,\n    replace: true,\n    scope: {},\n    bindToController: {\n      active: '=?',\n      type: '@'\n    },\n    controller: 'UibTabsetController',\n    controllerAs: 'tabset',\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/tabs/tabset.html';\n    },\n    link: function(scope, element, attrs) {\n      scope.vertical = angular.isDefined(attrs.vertical) ?\n        scope.$parent.$eval(attrs.vertical) : false;\n      scope.justified = angular.isDefined(attrs.justified) ?\n        scope.$parent.$eval(attrs.justified) : false;\n    }\n  };\n})\n\n.directive('uibTab', ['$parse', function($parse) {\n  return {\n    require: '^uibTabset',\n    replace: true,\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || 'uib/template/tabs/tab.html';\n    },\n    transclude: true,\n    scope: {\n      heading: '@',\n      index: '=?',\n      classes: '@?',\n      onSelect: '&select', //This callback is called in contentHeadingTransclude\n                          //once it inserts the tab's content into the dom\n      onDeselect: '&deselect'\n    },\n    controller: function() {\n      //Empty controller so other directives can require being 'under' a tab\n    },\n    controllerAs: 'tab',\n    link: function(scope, elm, attrs, tabsetCtrl, transclude) {\n      scope.disabled = false;\n      if (attrs.disable) {\n        scope.$parent.$watch($parse(attrs.disable), function(value) {\n          scope.disabled = !! value;\n        });\n      }\n\n      if (angular.isUndefined(attrs.index)) {\n        if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\n          scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\n        } else {\n          scope.index = 0;\n        }\n      }\n\n      if (angular.isUndefined(attrs.classes)) {\n        scope.classes = '';\n      }\n\n      scope.select = function(evt) {\n        if (!scope.disabled) {\n          var index;\n          for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\n            if (tabsetCtrl.tabs[i].tab === scope) {\n              index = i;\n              break;\n            }\n          }\n\n          tabsetCtrl.select(index, evt);\n        }\n      };\n\n      tabsetCtrl.addTab(scope);\n      scope.$on('$destroy', function() {\n        tabsetCtrl.removeTab(scope);\n      });\n\n      //We need to transclude later, once the content container is ready.\n      //when this link happens, we're inside a tab heading.\n      scope.$transcludeFn = transclude;\n    }\n  };\n}])\n\n.directive('uibTabHeadingTransclude', function() {\n  return {\n    restrict: 'A',\n    require: '^uibTab',\n    link: function(scope, elm) {\n      scope.$watch('headingElement', function updateHeadingElement(heading) {\n        if (heading) {\n          elm.html('');\n          elm.append(heading);\n        }\n      });\n    }\n  };\n})\n\n.directive('uibTabContentTransclude', function() {\n  return {\n    restrict: 'A',\n    require: '^uibTabset',\n    link: function(scope, elm, attrs) {\n      var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\n\n      //Now our tab is ready to be transcluded: both the tab heading area\n      //and the tab content area are loaded.  Transclude 'em both.\n      tab.$transcludeFn(tab.$parent, function(contents) {\n        angular.forEach(contents, function(node) {\n          if (isTabHeading(node)) {\n            //Let tabHeadingTransclude know.\n            tab.headingElement = node;\n          } else {\n            elm.append(node);\n          }\n        });\n      });\n    }\n  };\n\n  function isTabHeading(node) {\n    return node.tagName && (\n      node.hasAttribute('uib-tab-heading') ||\n      node.hasAttribute('data-uib-tab-heading') ||\n      node.hasAttribute('x-uib-tab-heading') ||\n      node.tagName.toLowerCase() === 'uib-tab-heading' ||\n      node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\n      node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\n      node.tagName.toLowerCase() === 'uib:tab-heading'\n    );\n  }\n});\n\nangular.module('ui.bootstrap.timepicker', [])\n\n.constant('uibTimepickerConfig', {\n  hourStep: 1,\n  minuteStep: 1,\n  secondStep: 1,\n  showMeridian: true,\n  showSeconds: false,\n  meridians: null,\n  readonlyInput: false,\n  mousewheel: true,\n  arrowkeys: true,\n  showSpinners: true,\n  templateUrl: 'uib/template/timepicker/timepicker.html'\n})\n\n.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) {\n  var hoursModelCtrl, minutesModelCtrl, secondsModelCtrl;\n  var selected = new Date(),\n    watchers = [],\n    ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\n    meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS,\n    padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;\n\n  $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;\n  $element.removeAttr('tabindex');\n\n  this.init = function(ngModelCtrl_, inputs) {\n    ngModelCtrl = ngModelCtrl_;\n    ngModelCtrl.$render = this.render;\n\n    ngModelCtrl.$formatters.unshift(function(modelValue) {\n      return modelValue ? new Date(modelValue) : null;\n    });\n\n    var hoursInputEl = inputs.eq(0),\n        minutesInputEl = inputs.eq(1),\n        secondsInputEl = inputs.eq(2);\n\n    hoursModelCtrl = hoursInputEl.controller('ngModel');\n    minutesModelCtrl = minutesInputEl.controller('ngModel');\n    secondsModelCtrl = secondsInputEl.controller('ngModel');\n\n    var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;\n\n    if (mousewheel) {\n      this.setupMousewheelEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n    }\n\n    var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;\n    if (arrowkeys) {\n      this.setupArrowkeyEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n    }\n\n    $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;\n    this.setupInputEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n  };\n\n  var hourStep = timepickerConfig.hourStep;\n  if ($attrs.hourStep) {\n    watchers.push($scope.$parent.$watch($parse($attrs.hourStep), function(value) {\n      hourStep = +value;\n    }));\n  }\n\n  var minuteStep = timepickerConfig.minuteStep;\n  if ($attrs.minuteStep) {\n    watchers.push($scope.$parent.$watch($parse($attrs.minuteStep), function(value) {\n      minuteStep = +value;\n    }));\n  }\n\n  var min;\n  watchers.push($scope.$parent.$watch($parse($attrs.min), function(value) {\n    var dt = new Date(value);\n    min = isNaN(dt) ? undefined : dt;\n  }));\n\n  var max;\n  watchers.push($scope.$parent.$watch($parse($attrs.max), function(value) {\n    var dt = new Date(value);\n    max = isNaN(dt) ? undefined : dt;\n  }));\n\n  var disabled = false;\n  if ($attrs.ngDisabled) {\n    watchers.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(value) {\n      disabled = value;\n    }));\n  }\n\n  $scope.noIncrementHours = function() {\n    var incrementedSelected = addMinutes(selected, hourStep * 60);\n    return disabled || incrementedSelected > max ||\n      incrementedSelected < selected && incrementedSelected < min;\n  };\n\n  $scope.noDecrementHours = function() {\n    var decrementedSelected = addMinutes(selected, -hourStep * 60);\n    return disabled || decrementedSelected < min ||\n      decrementedSelected > selected && decrementedSelected > max;\n  };\n\n  $scope.noIncrementMinutes = function() {\n    var incrementedSelected = addMinutes(selected, minuteStep);\n    return disabled || incrementedSelected > max ||\n      incrementedSelected < selected && incrementedSelected < min;\n  };\n\n  $scope.noDecrementMinutes = function() {\n    var decrementedSelected = addMinutes(selected, -minuteStep);\n    return disabled || decrementedSelected < min ||\n      decrementedSelected > selected && decrementedSelected > max;\n  };\n\n  $scope.noIncrementSeconds = function() {\n    var incrementedSelected = addSeconds(selected, secondStep);\n    return disabled || incrementedSelected > max ||\n      incrementedSelected < selected && incrementedSelected < min;\n  };\n\n  $scope.noDecrementSeconds = function() {\n    var decrementedSelected = addSeconds(selected, -secondStep);\n    return disabled || decrementedSelected < min ||\n      decrementedSelected > selected && decrementedSelected > max;\n  };\n\n  $scope.noToggleMeridian = function() {\n    if (selected.getHours() < 12) {\n      return disabled || addMinutes(selected, 12 * 60) > max;\n    }\n\n    return disabled || addMinutes(selected, -12 * 60) < min;\n  };\n\n  var secondStep = timepickerConfig.secondStep;\n  if ($attrs.secondStep) {\n    watchers.push($scope.$parent.$watch($parse($attrs.secondStep), function(value) {\n      secondStep = +value;\n    }));\n  }\n\n  $scope.showSeconds = timepickerConfig.showSeconds;\n  if ($attrs.showSeconds) {\n    watchers.push($scope.$parent.$watch($parse($attrs.showSeconds), function(value) {\n      $scope.showSeconds = !!value;\n    }));\n  }\n\n  // 12H / 24H mode\n  $scope.showMeridian = timepickerConfig.showMeridian;\n  if ($attrs.showMeridian) {\n    watchers.push($scope.$parent.$watch($parse($attrs.showMeridian), function(value) {\n      $scope.showMeridian = !!value;\n\n      if (ngModelCtrl.$error.time) {\n        // Evaluate from template\n        var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();\n        if (angular.isDefined(hours) && angular.isDefined(minutes)) {\n          selected.setHours(hours);\n          refresh();\n        }\n      } else {\n        updateTemplate();\n      }\n    }));\n  }\n\n  // Get $scope.hours in 24H mode if valid\n  function getHoursFromTemplate() {\n    var hours = +$scope.hours;\n    var valid = $scope.showMeridian ? hours > 0 && hours < 13 :\n      hours >= 0 && hours < 24;\n    if (!valid || $scope.hours === '') {\n      return undefined;\n    }\n\n    if ($scope.showMeridian) {\n      if (hours === 12) {\n        hours = 0;\n      }\n      if ($scope.meridian === meridians[1]) {\n        hours = hours + 12;\n      }\n    }\n    return hours;\n  }\n\n  function getMinutesFromTemplate() {\n    var minutes = +$scope.minutes;\n    var valid = minutes >= 0 && minutes < 60;\n    if (!valid || $scope.minutes === '') {\n      return undefined;\n    }\n    return minutes;\n  }\n\n  function getSecondsFromTemplate() {\n    var seconds = +$scope.seconds;\n    return seconds >= 0 && seconds < 60 ? seconds : undefined;\n  }\n\n  function pad(value, noPad) {\n    if (value === null) {\n      return '';\n    }\n\n    return angular.isDefined(value) && value.toString().length < 2 && !noPad ?\n      '0' + value : value.toString();\n  }\n\n  // Respond on mousewheel spin\n  this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n    var isScrollingUp = function(e) {\n      if (e.originalEvent) {\n        e = e.originalEvent;\n      }\n      //pick correct delta variable depending on event\n      var delta = e.wheelDelta ? e.wheelDelta : -e.deltaY;\n      return e.detail || delta > 0;\n    };\n\n    hoursInputEl.on('mousewheel wheel', function(e) {\n      if (!disabled) {\n        $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());\n      }\n      e.preventDefault();\n    });\n\n    minutesInputEl.on('mousewheel wheel', function(e) {\n      if (!disabled) {\n        $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());\n      }\n      e.preventDefault();\n    });\n\n     secondsInputEl.on('mousewheel wheel', function(e) {\n      if (!disabled) {\n        $scope.$apply(isScrollingUp(e) ? $scope.incrementSeconds() : $scope.decrementSeconds());\n      }\n      e.preventDefault();\n    });\n  };\n\n  // Respond on up/down arrowkeys\n  this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n    hoursInputEl.on('keydown', function(e) {\n      if (!disabled) {\n        if (e.which === 38) { // up\n          e.preventDefault();\n          $scope.incrementHours();\n          $scope.$apply();\n        } else if (e.which === 40) { // down\n          e.preventDefault();\n          $scope.decrementHours();\n          $scope.$apply();\n        }\n      }\n    });\n\n    minutesInputEl.on('keydown', function(e) {\n      if (!disabled) {\n        if (e.which === 38) { // up\n          e.preventDefault();\n          $scope.incrementMinutes();\n          $scope.$apply();\n        } else if (e.which === 40) { // down\n          e.preventDefault();\n          $scope.decrementMinutes();\n          $scope.$apply();\n        }\n      }\n    });\n\n    secondsInputEl.on('keydown', function(e) {\n      if (!disabled) {\n        if (e.which === 38) { // up\n          e.preventDefault();\n          $scope.incrementSeconds();\n          $scope.$apply();\n        } else if (e.which === 40) { // down\n          e.preventDefault();\n          $scope.decrementSeconds();\n          $scope.$apply();\n        }\n      }\n    });\n  };\n\n  this.setupInputEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n    if ($scope.readonlyInput) {\n      $scope.updateHours = angular.noop;\n      $scope.updateMinutes = angular.noop;\n      $scope.updateSeconds = angular.noop;\n      return;\n    }\n\n    var invalidate = function(invalidHours, invalidMinutes, invalidSeconds) {\n      ngModelCtrl.$setViewValue(null);\n      ngModelCtrl.$setValidity('time', false);\n      if (angular.isDefined(invalidHours)) {\n        $scope.invalidHours = invalidHours;\n        if (hoursModelCtrl) {\n          hoursModelCtrl.$setValidity('hours', false);\n        }\n      }\n\n      if (angular.isDefined(invalidMinutes)) {\n        $scope.invalidMinutes = invalidMinutes;\n        if (minutesModelCtrl) {\n          minutesModelCtrl.$setValidity('minutes', false);\n        }\n      }\n\n      if (angular.isDefined(invalidSeconds)) {\n        $scope.invalidSeconds = invalidSeconds;\n        if (secondsModelCtrl) {\n          secondsModelCtrl.$setValidity('seconds', false);\n        }\n      }\n    };\n\n    $scope.updateHours = function() {\n      var hours = getHoursFromTemplate(),\n        minutes = getMinutesFromTemplate();\n\n      ngModelCtrl.$setDirty();\n\n      if (angular.isDefined(hours) && angular.isDefined(minutes)) {\n        selected.setHours(hours);\n        selected.setMinutes(minutes);\n        if (selected < min || selected > max) {\n          invalidate(true);\n        } else {\n          refresh('h');\n        }\n      } else {\n        invalidate(true);\n      }\n    };\n\n    hoursInputEl.on('blur', function(e) {\n      ngModelCtrl.$setTouched();\n      if (modelIsEmpty()) {\n        makeValid();\n      } else if ($scope.hours === null || $scope.hours === '') {\n        invalidate(true);\n      } else if (!$scope.invalidHours && $scope.hours < 10) {\n        $scope.$apply(function() {\n          $scope.hours = pad($scope.hours, !padHours);\n        });\n      }\n    });\n\n    $scope.updateMinutes = function() {\n      var minutes = getMinutesFromTemplate(),\n        hours = getHoursFromTemplate();\n\n      ngModelCtrl.$setDirty();\n\n      if (angular.isDefined(minutes) && angular.isDefined(hours)) {\n        selected.setHours(hours);\n        selected.setMinutes(minutes);\n        if (selected < min || selected > max) {\n          invalidate(undefined, true);\n        } else {\n          refresh('m');\n        }\n      } else {\n        invalidate(undefined, true);\n      }\n    };\n\n    minutesInputEl.on('blur', function(e) {\n      ngModelCtrl.$setTouched();\n      if (modelIsEmpty()) {\n        makeValid();\n      } else if ($scope.minutes === null) {\n        invalidate(undefined, true);\n      } else if (!$scope.invalidMinutes && $scope.minutes < 10) {\n        $scope.$apply(function() {\n          $scope.minutes = pad($scope.minutes);\n        });\n      }\n    });\n\n    $scope.updateSeconds = function() {\n      var seconds = getSecondsFromTemplate();\n\n      ngModelCtrl.$setDirty();\n\n      if (angular.isDefined(seconds)) {\n        selected.setSeconds(seconds);\n        refresh('s');\n      } else {\n        invalidate(undefined, undefined, true);\n      }\n    };\n\n    secondsInputEl.on('blur', function(e) {\n      if (modelIsEmpty()) {\n        makeValid();\n      } else if (!$scope.invalidSeconds && $scope.seconds < 10) {\n        $scope.$apply( function() {\n          $scope.seconds = pad($scope.seconds);\n        });\n      }\n    });\n\n  };\n\n  this.render = function() {\n    var date = ngModelCtrl.$viewValue;\n\n    if (isNaN(date)) {\n      ngModelCtrl.$setValidity('time', false);\n      $log.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\n    } else {\n      if (date) {\n        selected = date;\n      }\n\n      if (selected < min || selected > max) {\n        ngModelCtrl.$setValidity('time', false);\n        $scope.invalidHours = true;\n        $scope.invalidMinutes = true;\n      } else {\n        makeValid();\n      }\n      updateTemplate();\n    }\n  };\n\n  // Call internally when we know that model is valid.\n  function refresh(keyboardChange) {\n    makeValid();\n    ngModelCtrl.$setViewValue(new Date(selected));\n    updateTemplate(keyboardChange);\n  }\n\n  function makeValid() {\n    if (hoursModelCtrl) {\n      hoursModelCtrl.$setValidity('hours', true);\n    }\n\n    if (minutesModelCtrl) {\n      minutesModelCtrl.$setValidity('minutes', true);\n    }\n\n    if (secondsModelCtrl) {\n      secondsModelCtrl.$setValidity('seconds', true);\n    }\n\n    ngModelCtrl.$setValidity('time', true);\n    $scope.invalidHours = false;\n    $scope.invalidMinutes = false;\n    $scope.invalidSeconds = false;\n  }\n\n  function updateTemplate(keyboardChange) {\n    if (!ngModelCtrl.$modelValue) {\n      $scope.hours = null;\n      $scope.minutes = null;\n      $scope.seconds = null;\n      $scope.meridian = meridians[0];\n    } else {\n      var hours = selected.getHours(),\n        minutes = selected.getMinutes(),\n        seconds = selected.getSeconds();\n\n      if ($scope.showMeridian) {\n        hours = hours === 0 || hours === 12 ? 12 : hours % 12; // Convert 24 to 12 hour system\n      }\n\n      $scope.hours = keyboardChange === 'h' ? hours : pad(hours, !padHours);\n      if (keyboardChange !== 'm') {\n        $scope.minutes = pad(minutes);\n      }\n      $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\n\n      if (keyboardChange !== 's') {\n        $scope.seconds = pad(seconds);\n      }\n      $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\n    }\n  }\n\n  function addSecondsToSelected(seconds) {\n    selected = addSeconds(selected, seconds);\n    refresh();\n  }\n\n  function addMinutes(selected, minutes) {\n    return addSeconds(selected, minutes*60);\n  }\n\n  function addSeconds(date, seconds) {\n    var dt = new Date(date.getTime() + seconds * 1000);\n    var newDate = new Date(date);\n    newDate.setHours(dt.getHours(), dt.getMinutes(), dt.getSeconds());\n    return newDate;\n  }\n\n  function modelIsEmpty() {\n    return ($scope.hours === null || $scope.hours === '') &&\n      ($scope.minutes === null || $scope.minutes === '') &&\n      (!$scope.showSeconds || $scope.showSeconds && ($scope.seconds === null || $scope.seconds === ''));\n  }\n\n  $scope.showSpinners = angular.isDefined($attrs.showSpinners) ?\n    $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners;\n\n  $scope.incrementHours = function() {\n    if (!$scope.noIncrementHours()) {\n      addSecondsToSelected(hourStep * 60 * 60);\n    }\n  };\n\n  $scope.decrementHours = function() {\n    if (!$scope.noDecrementHours()) {\n      addSecondsToSelected(-hourStep * 60 * 60);\n    }\n  };\n\n  $scope.incrementMinutes = function() {\n    if (!$scope.noIncrementMinutes()) {\n      addSecondsToSelected(minuteStep * 60);\n    }\n  };\n\n  $scope.decrementMinutes = function() {\n    if (!$scope.noDecrementMinutes()) {\n      addSecondsToSelected(-minuteStep * 60);\n    }\n  };\n\n  $scope.incrementSeconds = function() {\n    if (!$scope.noIncrementSeconds()) {\n      addSecondsToSelected(secondStep);\n    }\n  };\n\n  $scope.decrementSeconds = function() {\n    if (!$scope.noDecrementSeconds()) {\n      addSecondsToSelected(-secondStep);\n    }\n  };\n\n  $scope.toggleMeridian = function() {\n    var minutes = getMinutesFromTemplate(),\n        hours = getHoursFromTemplate();\n\n    if (!$scope.noToggleMeridian()) {\n      if (angular.isDefined(minutes) && angular.isDefined(hours)) {\n        addSecondsToSelected(12 * 60 * (selected.getHours() < 12 ? 60 : -60));\n      } else {\n        $scope.meridian = $scope.meridian === meridians[0] ? meridians[1] : meridians[0];\n      }\n    }\n  };\n\n  $scope.blur = function() {\n    ngModelCtrl.$setTouched();\n  };\n\n  $scope.$on('$destroy', function() {\n    while (watchers.length) {\n      watchers.shift()();\n    }\n  });\n}])\n\n.directive('uibTimepicker', ['uibTimepickerConfig', function(uibTimepickerConfig) {\n  return {\n    require: ['uibTimepicker', '?^ngModel'],\n    restrict: 'A',\n    controller: 'UibTimepickerController',\n    controllerAs: 'timepicker',\n    scope: {},\n    templateUrl: function(element, attrs) {\n      return attrs.templateUrl || uibTimepickerConfig.templateUrl;\n    },\n    link: function(scope, element, attrs, ctrls) {\n      var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n      if (ngModelCtrl) {\n        timepickerCtrl.init(ngModelCtrl, element.find('input'));\n      }\n    }\n  };\n}]);\n\nangular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap.position'])\n\n/**\n * A helper service that can parse typeahead's syntax (string provided by users)\n * Extracted to a separate service for ease of unit testing\n */\n  .factory('uibTypeaheadParser', ['$parse', function($parse) {\n    //                      000001111111100000000000002222222200000000000000003333333333333330000000000044444444000\n    var TYPEAHEAD_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;\n    return {\n      parse: function(input) {\n        var match = input.match(TYPEAHEAD_REGEXP);\n        if (!match) {\n          throw new Error(\n            'Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\"' +\n              ' but got \"' + input + '\".');\n        }\n\n        return {\n          itemName: match[3],\n          source: $parse(match[4]),\n          viewMapper: $parse(match[2] || match[1]),\n          modelMapper: $parse(match[1])\n        };\n      }\n    };\n  }])\n\n  .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$$debounce', '$uibPosition', 'uibTypeaheadParser',\n    function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $$debounce, $position, typeaheadParser) {\n    var HOT_KEYS = [9, 13, 27, 38, 40];\n    var eventDebounceTime = 200;\n    var modelCtrl, ngModelOptions;\n    //SUPPORTED ATTRIBUTES (OPTIONS)\n\n    //minimal no of characters that needs to be entered before typeahead kicks-in\n    var minLength = originalScope.$eval(attrs.typeaheadMinLength);\n    if (!minLength && minLength !== 0) {\n      minLength = 1;\n    }\n\n    originalScope.$watch(attrs.typeaheadMinLength, function (newVal) {\n        minLength = !newVal && newVal !== 0 ? 1 : newVal;\n    });\n\n    //minimal wait time after last character typed before typeahead kicks-in\n    var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;\n\n    //should it restrict model values to the ones selected from the popup only?\n    var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;\n    originalScope.$watch(attrs.typeaheadEditable, function (newVal) {\n      isEditable = newVal !== false;\n    });\n\n    //binding to a variable that indicates if matches are being retrieved asynchronously\n    var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;\n\n    //a function to determine if an event should cause selection\n    var isSelectEvent = attrs.typeaheadShouldSelect ? $parse(attrs.typeaheadShouldSelect) : function(scope, vals) {\n      var evt = vals.$event;\n      return evt.which === 13 || evt.which === 9;\n    };\n\n    //a callback executed when a match is selected\n    var onSelectCallback = $parse(attrs.typeaheadOnSelect);\n\n    //should it select highlighted popup value when losing focus?\n    var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false;\n\n    //binding to a variable that indicates if there were no results after the query is completed\n    var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop;\n\n    var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;\n\n    var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;\n\n    var appendTo = attrs.typeaheadAppendTo ?\n      originalScope.$eval(attrs.typeaheadAppendTo) : null;\n\n    var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false;\n\n    //If input matches an item of the list exactly, select it automatically\n    var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false;\n\n    //binding to a variable that indicates if dropdown is open\n    var isOpenSetter = $parse(attrs.typeaheadIsOpen).assign || angular.noop;\n\n    var showHint = originalScope.$eval(attrs.typeaheadShowHint) || false;\n\n    //INTERNAL VARIABLES\n\n    //model setter executed upon match selection\n    var parsedModel = $parse(attrs.ngModel);\n    var invokeModelSetter = $parse(attrs.ngModel + '($$$p)');\n    var $setModelValue = function(scope, newValue) {\n      if (angular.isFunction(parsedModel(originalScope)) &&\n        ngModelOptions.getOption('getterSetter')) {\n        return invokeModelSetter(scope, {$$$p: newValue});\n      }\n\n      return parsedModel.assign(scope, newValue);\n    };\n\n    //expressions used by typeahead\n    var parserResult = typeaheadParser.parse(attrs.uibTypeahead);\n\n    var hasFocus;\n\n    //Used to avoid bug in iOS webview where iOS keyboard does not fire\n    //mousedown & mouseup events\n    //Issue #3699\n    var selected;\n\n    //create a child scope for the typeahead directive so we are not polluting original scope\n    //with typeahead-specific data (matches, query etc.)\n    var scope = originalScope.$new();\n    var offDestroy = originalScope.$on('$destroy', function() {\n      scope.$destroy();\n    });\n    scope.$on('$destroy', offDestroy);\n\n    // WAI-ARIA\n    var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\n    element.attr({\n      'aria-autocomplete': 'list',\n      'aria-expanded': false,\n      'aria-owns': popupId\n    });\n\n    var inputsContainer, hintInputElem;\n    //add read-only input to show hint\n    if (showHint) {\n      inputsContainer = angular.element('<div></div>');\n      inputsContainer.css('position', 'relative');\n      element.after(inputsContainer);\n      hintInputElem = element.clone();\n      hintInputElem.attr('placeholder', '');\n      hintInputElem.attr('tabindex', '-1');\n      hintInputElem.val('');\n      hintInputElem.css({\n        'position': 'absolute',\n        'top': '0px',\n        'left': '0px',\n        'border-color': 'transparent',\n        'box-shadow': 'none',\n        'opacity': 1,\n        'background': 'none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)',\n        'color': '#999'\n      });\n      element.css({\n        'position': 'relative',\n        'vertical-align': 'top',\n        'background-color': 'transparent'\n      });\n\n      if (hintInputElem.attr('id')) {\n        hintInputElem.removeAttr('id'); // remove duplicate id if present.\n      }\n      inputsContainer.append(hintInputElem);\n      hintInputElem.after(element);\n    }\n\n    //pop-up element used to display matches\n    var popUpEl = angular.element('<div uib-typeahead-popup></div>');\n    popUpEl.attr({\n      id: popupId,\n      matches: 'matches',\n      active: 'activeIdx',\n      select: 'select(activeIdx, evt)',\n      'move-in-progress': 'moveInProgress',\n      query: 'query',\n      position: 'position',\n      'assign-is-open': 'assignIsOpen(isOpen)',\n      debounce: 'debounceUpdate'\n    });\n    //custom item template\n    if (angular.isDefined(attrs.typeaheadTemplateUrl)) {\n      popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);\n    }\n\n    if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) {\n      popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl);\n    }\n\n    var resetHint = function() {\n      if (showHint) {\n        hintInputElem.val('');\n      }\n    };\n\n    var resetMatches = function() {\n      scope.matches = [];\n      scope.activeIdx = -1;\n      element.attr('aria-expanded', false);\n      resetHint();\n    };\n\n    var getMatchId = function(index) {\n      return popupId + '-option-' + index;\n    };\n\n    // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.\n    // This attribute is added or removed automatically when the `activeIdx` changes.\n    scope.$watch('activeIdx', function(index) {\n      if (index < 0) {\n        element.removeAttr('aria-activedescendant');\n      } else {\n        element.attr('aria-activedescendant', getMatchId(index));\n      }\n    });\n\n    var inputIsExactMatch = function(inputValue, index) {\n      if (scope.matches.length > index && inputValue) {\n        return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase();\n      }\n\n      return false;\n    };\n\n    var getMatchesAsync = function(inputValue, evt) {\n      var locals = {$viewValue: inputValue};\n      isLoadingSetter(originalScope, true);\n      isNoResultsSetter(originalScope, false);\n      $q.when(parserResult.source(originalScope, locals)).then(function(matches) {\n        //it might happen that several async queries were in progress if a user were typing fast\n        //but we are interested only in responses that correspond to the current view value\n        var onCurrentRequest = inputValue === modelCtrl.$viewValue;\n        if (onCurrentRequest && hasFocus) {\n          if (matches && matches.length > 0) {\n            scope.activeIdx = focusFirst ? 0 : -1;\n            isNoResultsSetter(originalScope, false);\n            scope.matches.length = 0;\n\n            //transform labels\n            for (var i = 0; i < matches.length; i++) {\n              locals[parserResult.itemName] = matches[i];\n              scope.matches.push({\n                id: getMatchId(i),\n                label: parserResult.viewMapper(scope, locals),\n                model: matches[i]\n              });\n            }\n\n            scope.query = inputValue;\n            //position pop-up with matches - we need to re-calculate its position each time we are opening a window\n            //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page\n            //due to other elements being rendered\n            recalculatePosition();\n\n            element.attr('aria-expanded', true);\n\n            //Select the single remaining option if user input matches\n            if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) {\n              if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\n                $$debounce(function() {\n                  scope.select(0, evt);\n                }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\n              } else {\n                scope.select(0, evt);\n              }\n            }\n\n            if (showHint) {\n              var firstLabel = scope.matches[0].label;\n              if (angular.isString(inputValue) &&\n                inputValue.length > 0 &&\n                firstLabel.slice(0, inputValue.length).toUpperCase() === inputValue.toUpperCase()) {\n                hintInputElem.val(inputValue + firstLabel.slice(inputValue.length));\n              } else {\n                hintInputElem.val('');\n              }\n            }\n          } else {\n            resetMatches();\n            isNoResultsSetter(originalScope, true);\n          }\n        }\n        if (onCurrentRequest) {\n          isLoadingSetter(originalScope, false);\n        }\n      }, function() {\n        resetMatches();\n        isLoadingSetter(originalScope, false);\n        isNoResultsSetter(originalScope, true);\n      });\n    };\n\n    // bind events only if appendToBody params exist - performance feature\n    if (appendToBody) {\n      angular.element($window).on('resize', fireRecalculating);\n      $document.find('body').on('scroll', fireRecalculating);\n    }\n\n    // Declare the debounced function outside recalculating for\n    // proper debouncing\n    var debouncedRecalculate = $$debounce(function() {\n      // if popup is visible\n      if (scope.matches.length) {\n        recalculatePosition();\n      }\n\n      scope.moveInProgress = false;\n    }, eventDebounceTime);\n\n    // Default progress type\n    scope.moveInProgress = false;\n\n    function fireRecalculating() {\n      if (!scope.moveInProgress) {\n        scope.moveInProgress = true;\n        scope.$digest();\n      }\n\n      debouncedRecalculate();\n    }\n\n    // recalculate actual position and set new values to scope\n    // after digest loop is popup in right position\n    function recalculatePosition() {\n      scope.position = appendToBody ? $position.offset(element) : $position.position(element);\n      scope.position.top += element.prop('offsetHeight');\n    }\n\n    //we need to propagate user's query so we can higlight matches\n    scope.query = undefined;\n\n    //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\n    var timeoutPromise;\n\n    var scheduleSearchWithTimeout = function(inputValue) {\n      timeoutPromise = $timeout(function() {\n        getMatchesAsync(inputValue);\n      }, waitTime);\n    };\n\n    var cancelPreviousTimeout = function() {\n      if (timeoutPromise) {\n        $timeout.cancel(timeoutPromise);\n      }\n    };\n\n    resetMatches();\n\n    scope.assignIsOpen = function (isOpen) {\n      isOpenSetter(originalScope, isOpen);\n    };\n\n    scope.select = function(activeIdx, evt) {\n      //called from within the $digest() cycle\n      var locals = {};\n      var model, item;\n\n      selected = true;\n      locals[parserResult.itemName] = item = scope.matches[activeIdx].model;\n      model = parserResult.modelMapper(originalScope, locals);\n      $setModelValue(originalScope, model);\n      modelCtrl.$setValidity('editable', true);\n      modelCtrl.$setValidity('parse', true);\n\n      onSelectCallback(originalScope, {\n        $item: item,\n        $model: model,\n        $label: parserResult.viewMapper(originalScope, locals),\n        $event: evt\n      });\n\n      resetMatches();\n\n      //return focus to the input element if a match was selected via a mouse click event\n      // use timeout to avoid $rootScope:inprog error\n      if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) {\n        $timeout(function() { element[0].focus(); }, 0, false);\n      }\n    };\n\n    //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)\n    element.on('keydown', function(evt) {\n      //typeahead is open and an \"interesting\" key was pressed\n      if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {\n        return;\n      }\n\n      var shouldSelect = isSelectEvent(originalScope, {$event: evt});\n\n      /**\n       * if there's nothing selected (i.e. focusFirst) and enter or tab is hit\n       * or\n       * shift + tab is pressed to bring focus to the previous element\n       * then clear the results\n       */\n      if (scope.activeIdx === -1 && shouldSelect || evt.which === 9 && !!evt.shiftKey) {\n        resetMatches();\n        scope.$digest();\n        return;\n      }\n\n      evt.preventDefault();\n      var target;\n      switch (evt.which) {\n        case 27: // escape\n          evt.stopPropagation();\n\n          resetMatches();\n          originalScope.$digest();\n          break;\n        case 38: // up arrow\n          scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1;\n          scope.$digest();\n          target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\n          target.parentNode.scrollTop = target.offsetTop;\n          break;\n        case 40: // down arrow\n          scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;\n          scope.$digest();\n          target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\n          target.parentNode.scrollTop = target.offsetTop;\n          break;\n        default:\n          if (shouldSelect) {\n            scope.$apply(function() {\n              if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\n                $$debounce(function() {\n                  scope.select(scope.activeIdx, evt);\n                }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\n              } else {\n                scope.select(scope.activeIdx, evt);\n              }\n            });\n          }\n      }\n    });\n\n    element.on('focus', function (evt) {\n      hasFocus = true;\n      if (minLength === 0 && !modelCtrl.$viewValue) {\n        $timeout(function() {\n          getMatchesAsync(modelCtrl.$viewValue, evt);\n        }, 0);\n      }\n    });\n\n    element.on('blur', function(evt) {\n      if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) {\n        selected = true;\n        scope.$apply(function() {\n          if (angular.isObject(scope.debounceUpdate) && angular.isNumber(scope.debounceUpdate.blur)) {\n            $$debounce(function() {\n              scope.select(scope.activeIdx, evt);\n            }, scope.debounceUpdate.blur);\n          } else {\n            scope.select(scope.activeIdx, evt);\n          }\n        });\n      }\n      if (!isEditable && modelCtrl.$error.editable) {\n        modelCtrl.$setViewValue();\n        scope.$apply(function() {\n          // Reset validity as we are clearing\n          modelCtrl.$setValidity('editable', true);\n          modelCtrl.$setValidity('parse', true);\n        });\n        element.val('');\n      }\n      hasFocus = false;\n      selected = false;\n    });\n\n    // Keep reference to click handler to unbind it.\n    var dismissClickHandler = function(evt) {\n      // Issue #3973\n      // Firefox treats right click as a click on document\n      if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) {\n        resetMatches();\n        if (!$rootScope.$$phase) {\n          originalScope.$digest();\n        }\n      }\n    };\n\n    $document.on('click', dismissClickHandler);\n\n    originalScope.$on('$destroy', function() {\n      $document.off('click', dismissClickHandler);\n      if (appendToBody || appendTo) {\n        $popup.remove();\n      }\n\n      if (appendToBody) {\n        angular.element($window).off('resize', fireRecalculating);\n        $document.find('body').off('scroll', fireRecalculating);\n      }\n      // Prevent jQuery cache memory leak\n      popUpEl.remove();\n\n      if (showHint) {\n          inputsContainer.remove();\n      }\n    });\n\n    var $popup = $compile(popUpEl)(scope);\n\n    if (appendToBody) {\n      $document.find('body').append($popup);\n    } else if (appendTo) {\n      angular.element(appendTo).eq(0).append($popup);\n    } else {\n      element.after($popup);\n    }\n\n    this.init = function(_modelCtrl) {\n      modelCtrl = _modelCtrl;\n      ngModelOptions = extractOptions(modelCtrl);\n\n      scope.debounceUpdate = $parse(ngModelOptions.getOption('debounce'))(originalScope);\n\n      //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM\n      //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue\n      modelCtrl.$parsers.unshift(function(inputValue) {\n        hasFocus = true;\n\n        if (minLength === 0 || inputValue && inputValue.length >= minLength) {\n          if (waitTime > 0) {\n            cancelPreviousTimeout();\n            scheduleSearchWithTimeout(inputValue);\n          } else {\n            getMatchesAsync(inputValue);\n          }\n        } else {\n          isLoadingSetter(originalScope, false);\n          cancelPreviousTimeout();\n          resetMatches();\n        }\n\n        if (isEditable) {\n          return inputValue;\n        }\n\n        if (!inputValue) {\n          // Reset in case user had typed something previously.\n          modelCtrl.$setValidity('editable', true);\n          return null;\n        }\n\n        modelCtrl.$setValidity('editable', false);\n        return undefined;\n      });\n\n      modelCtrl.$formatters.push(function(modelValue) {\n        var candidateViewValue, emptyViewValue;\n        var locals = {};\n\n        // The validity may be set to false via $parsers (see above) if\n        // the model is restricted to selected values. If the model\n        // is set manually it is considered to be valid.\n        if (!isEditable) {\n          modelCtrl.$setValidity('editable', true);\n        }\n\n        if (inputFormatter) {\n          locals.$model = modelValue;\n          return inputFormatter(originalScope, locals);\n        }\n\n        //it might happen that we don't have enough info to properly render input value\n        //we need to check for this situation and simply return model value if we can't apply custom formatting\n        locals[parserResult.itemName] = modelValue;\n        candidateViewValue = parserResult.viewMapper(originalScope, locals);\n        locals[parserResult.itemName] = undefined;\n        emptyViewValue = parserResult.viewMapper(originalScope, locals);\n\n        return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue;\n      });\n    };\n\n    function extractOptions(ngModelCtrl) {\n      var ngModelOptions;\n\n      if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\n        // guarantee a value\n        ngModelOptions = ngModelCtrl.$options || {};\n\n        // mimic 1.6+ api\n        ngModelOptions.getOption = function (key) {\n          return ngModelOptions[key];\n        };\n      } else { // in angular >=1.6 $options is always present\n        ngModelOptions = ngModelCtrl.$options;\n      }\n\n      return ngModelOptions;\n    }\n  }])\n\n  .directive('uibTypeahead', function() {\n    return {\n      controller: 'UibTypeaheadController',\n      require: ['ngModel', 'uibTypeahead'],\n      link: function(originalScope, element, attrs, ctrls) {\n        ctrls[1].init(ctrls[0]);\n      }\n    };\n  })\n\n  .directive('uibTypeaheadPopup', ['$$debounce', function($$debounce) {\n    return {\n      scope: {\n        matches: '=',\n        query: '=',\n        active: '=',\n        position: '&',\n        moveInProgress: '=',\n        select: '&',\n        assignIsOpen: '&',\n        debounce: '&'\n      },\n      replace: true,\n      templateUrl: function(element, attrs) {\n        return attrs.popupTemplateUrl || 'uib/template/typeahead/typeahead-popup.html';\n      },\n      link: function(scope, element, attrs) {\n        scope.templateUrl = attrs.templateUrl;\n\n        scope.isOpen = function() {\n          var isDropdownOpen = scope.matches.length > 0;\n          scope.assignIsOpen({ isOpen: isDropdownOpen });\n          return isDropdownOpen;\n        };\n\n        scope.isActive = function(matchIdx) {\n          return scope.active === matchIdx;\n        };\n\n        scope.selectActive = function(matchIdx) {\n          scope.active = matchIdx;\n        };\n\n        scope.selectMatch = function(activeIdx, evt) {\n          var debounce = scope.debounce();\n          if (angular.isNumber(debounce) || angular.isObject(debounce)) {\n            $$debounce(function() {\n              scope.select({activeIdx: activeIdx, evt: evt});\n            }, angular.isNumber(debounce) ? debounce : debounce['default']);\n          } else {\n            scope.select({activeIdx: activeIdx, evt: evt});\n          }\n        };\n      }\n    };\n  }])\n\n  .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) {\n    return {\n      scope: {\n        index: '=',\n        match: '=',\n        query: '='\n      },\n      link: function(scope, element, attrs) {\n        var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'uib/template/typeahead/typeahead-match.html';\n        $templateRequest(tplUrl).then(function(tplContent) {\n          var tplEl = angular.element(tplContent.trim());\n          element.replaceWith(tplEl);\n          $compile(tplEl)(scope);\n        });\n      }\n    };\n  }])\n\n  .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) {\n    var isSanitizePresent;\n    isSanitizePresent = $injector.has('$sanitize');\n\n    function escapeRegexp(queryToEscape) {\n      // Regex: capture the whole query string and replace it with the string that will be used to match\n      // the results, for example if the capture is \"a\" the result will be \\a\n      return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n    }\n\n    function containsHtml(matchItem) {\n      return /<.*>/g.test(matchItem);\n    }\n\n    return function(matchItem, query) {\n      if (!isSanitizePresent && containsHtml(matchItem)) {\n        $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger\n      }\n      matchItem = query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '<strong>$&</strong>') : matchItem; // Replaces the capture string with a the same string inside of a \"strong\" tag\n      if (!isSanitizePresent) {\n        matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive\n      }\n      return matchItem;\n    };\n  }]);\n\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/accordion/accordion-group.html\",\n    \"<div role=\\\"tab\\\" id=\\\"{{::headingId}}\\\" aria-selected=\\\"{{isOpen}}\\\" class=\\\"card-header\\\" ng-keypress=\\\"toggleOpen($event)\\\">\\n\" +\n    \"  <h5 class=\\\"mb-0\\\">\\n\" +\n    \"    <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" href aria-expanded=\\\"{{isOpen}}\\\" aria-controls=\\\"{{::cardId}}\\\" tabindex=\\\"0\\\" class=\\\"accordion-toggle\\\"  ng-click=\\\"toggleOpen()\\\" uib-accordion-transclude=\\\"heading\\\" ng-disabled=\\\"isDisabled\\\" uib-tabindex-toggle><span uib-accordion-header ng-class=\\\"{'text-muted': isDisabled}\\\">{{heading}}</span></a>\\n\" +\n    \"  </h5>\\n\" +\n    \"</div>\\n\" +\n    \"<div id=\\\"{{::cardId}}\\\" aria-labelledby=\\\"{{::headingId}}\\\" aria-hidden=\\\"{{!isOpen}}\\\" role=\\\"tabcard\\\" class=\\\"card-collapse collapse\\\" uib-collapse=\\\"!isOpen\\\">\\n\" +\n    \"  <div class=\\\"card-body\\\" ng-transclude></div>\\n\" +\n    \"</div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/accordion/accordion.html\",\n    \"<div role=\\\"tablist\\\" ng-transclude></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/alert/alert.html\",\n    \"<button ng-show=\\\"closeable\\\" type=\\\"button\\\" class=\\\"close\\\" ng-click=\\\"close({$event: $event})\\\">\\n\" +\n    \"  <span aria-hidden=\\\"true\\\">&times;</span>\\n\" +\n    \"  <span class=\\\"sr-only\\\">Close</span>\\n\" +\n    \"</button>\\n\" +\n    \"<div ng-transclude></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/carousel/carousel.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/carousel/carousel.html\",\n    \"<div class=\\\"carousel-inner\\\" ng-transclude></div>\\n\" +\n    \"<a role=\\\"button\\\" href class=\\\"carousel-control-prev\\\" ng-click=\\\"prev()\\\" ng-class=\\\"{ disabled: isPrevDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\n    \"    <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\n    \"    <span class=\\\"sr-only\\\">Previous</span>\\n\" +\n    \"</a>\\n\" +\n    \"<a role=\\\"button\\\" href class=\\\"carousel-control-next\\\" ng-click=\\\"next()\\\" ng-class=\\\"{ disabled: isNextDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\n    \"    <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\n    \"    <span class=\\\"sr-only\\\">Next</span>\\n\" +\n    \"</a>\\n\" +\n    \"<ol class=\\\"carousel-indicators\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\n    \"  <li ng-repeat=\\\"slide in slides | orderBy:indexOfSlide track by $index\\\" ng-class=\\\"{ active: isActive(slide) }\\\" ng-click=\\\"select(slide)\\\">\\n\" +\n    \"    <span class=\\\"sr-only\\\">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if=\\\"isActive(slide)\\\">, currently active</span></span>\\n\" +\n    \"  </li>\\n\" +\n    \"</ol>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/carousel/slide.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/carousel/slide.html\",\n    \"<div class=\\\"text-center\\\" ng-transclude></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/datepicker/datepicker.html\",\n    \"<div ng-switch=\\\"datepickerMode\\\">\\n\" +\n    \"  <div uib-daypicker ng-switch-when=\\\"day\\\" tabindex=\\\"0\\\" class=\\\"uib-daypicker\\\"></div>\\n\" +\n    \"  <div uib-monthpicker ng-switch-when=\\\"month\\\" tabindex=\\\"0\\\" class=\\\"uib-monthpicker\\\"></div>\\n\" +\n    \"  <div uib-yearpicker ng-switch-when=\\\"year\\\" tabindex=\\\"0\\\" class=\\\"uib-yearpicker\\\"></div>\\n\" +\n    \"</div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/datepicker/day.html\",\n    \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\n    \"  <thead>\\n\" +\n    \"    <tr>\\n\" +\n    \"      <th>\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"          </i>\\n\" +\n    \"          <span class=\\\"sr-only\\\">previous</span>\\n\" +\n    \"        </button>\\n\" +\n    \"      </th>\\n\" +\n    \"      <th colspan=\\\"{{::5 + showWeeks}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\n    \"      <th>\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"          </i>\\n\" +\n    \"          <span class=\\\"sr-only\\\">next</span>\\n\" +\n    \"        </button>\\n\" +\n    \"      </th>\\n\" +\n    \"    </tr>\\n\" +\n    \"    <tr>\\n\" +\n    \"      <th ng-if=\\\"showWeeks\\\" class=\\\"text-center\\\"></th>\\n\" +\n    \"      <th ng-repeat=\\\"label in ::labels track by $index\\\" class=\\\"text-center\\\"><small aria-label=\\\"{{::label.full}}\\\">{{::label.abbr}}</small></th>\\n\" +\n    \"    </tr>\\n\" +\n    \"  </thead>\\n\" +\n    \"  <tbody>\\n\" +\n    \"    <tr class=\\\"uib-weeks\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\n    \"      <td ng-if=\\\"showWeeks\\\" class=\\\"text-center h6\\\"><em>{{ weekNumbers[$index] }}</em></td>\\n\" +\n    \"      <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-day text-center\\\" role=\\\"gridcell\\\"\\n\" +\n    \"        id=\\\"{{::dt.uid}}\\\"\\n\" +\n    \"        ng-class=\\\"::dt.customClass\\\">\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm\\\"\\n\" +\n    \"          uib-is-class=\\\"\\n\" +\n    \"            'btn-info' for selectedDt,\\n\" +\n    \"            'active' for activeDt\\n\" +\n    \"            on dt\\\"\\n\" +\n    \"          ng-click=\\\"select(dt.date)\\\"\\n\" +\n    \"          ng-disabled=\\\"::dt.disabled\\\"\\n\" +\n    \"          tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-muted': dt.secondary, 'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\n    \"      </td>\\n\" +\n    \"    </tr>\\n\" +\n    \"  </tbody>\\n\" +\n    \"</table>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/datepicker/month.html\",\n    \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\n    \"  <thead>\\n\" +\n    \"    <tr>\\n\" +\n    \"      <th>\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"          </i>\\n\" +\n    \"          <span class=\\\"sr-only\\\">previous</span>\\n\" +\n    \"        </button>\\n\" +\n    \"      </th>\\n\" +\n    \"      <th colspan=\\\"{{::yearHeaderColspan}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\n    \"      <th>\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"          </i>\\n\" +\n    \"          <span class=\\\"sr-only\\\">next</span>\\n\" +\n    \"        </button>\\n\" +\n    \"      </th>\\n\" +\n    \"    </tr>\\n\" +\n    \"  </thead>\\n\" +\n    \"  <tbody>\\n\" +\n    \"    <tr class=\\\"uib-months\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\n    \"      <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-month text-center\\\" role=\\\"gridcell\\\"\\n\" +\n    \"        id=\\\"{{::dt.uid}}\\\"\\n\" +\n    \"        ng-class=\\\"::dt.customClass\\\">\\n\" +\n    \"        <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\n    \"          uib-is-class=\\\"\\n\" +\n    \"            'btn-info' for selectedDt,\\n\" +\n    \"            'active' for activeDt\\n\" +\n    \"            on dt\\\"\\n\" +\n    \"          ng-click=\\\"select(dt.date)\\\"\\n\" +\n    \"          ng-disabled=\\\"::dt.disabled\\\"\\n\" +\n    \"          tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\n    \"      </td>\\n\" +\n    \"    </tr>\\n\" +\n    \"  </tbody>\\n\" +\n    \"</table>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/datepicker/year.html\",\n    \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\n    \"  <thead>\\n\" +\n    \"  <tr>\\n\" +\n    \"    <th>\\n\" +\n    \"      <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"        <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"          <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"        </i>\\n\" +\n    \"        <span class=\\\"sr-only\\\">previous</span>\\n\" +\n    \"      </button>\\n\" +\n    \"    </th>\\n\" +\n    \"    <th colspan=\\\"{{::columns - 2}}\\\">\\n\" +\n    \"      <button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\"\\n\" +\n    \"              class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\"\\n\" +\n    \"              ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"        <strong>{{title}}</strong>\\n\" +\n    \"      </button>\\n\" +\n    \"    </th>\\n\" +\n    \"    <th>\\n\" +\n    \"      <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"        <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\n    \"          <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\n    \"        </i>\\n\" +\n    \"        <span class=\\\"sr-only\\\">next</span>\\n\" +\n    \"      </button>\\n\" +\n    \"    </th>\\n\" +\n    \"  </tr>\\n\" +\n    \"  </thead>\\n\" +\n    \"  <tbody>\\n\" +\n    \"  <tr class=\\\"uib-years\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\n    \"    <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-year text-center\\\" role=\\\"gridcell\\\"\\n\" +\n    \"        id=\\\"{{::dt.uid}}\\\"\\n\" +\n    \"        ng-class=\\\"::dt.customClass\\\">\\n\" +\n    \"      <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\n    \"              uib-is-class=\\\"\\n\" +\n    \"            'btn-info' for selectedDt,\\n\" +\n    \"            'active' for activeDt\\n\" +\n    \"            on dt\\\"\\n\" +\n    \"              ng-click=\\\"select(dt.date)\\\"\\n\" +\n    \"              ng-disabled=\\\"::dt.disabled\\\"\\n\" +\n    \"              tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\n    \"    </td>\\n\" +\n    \"  </tr>\\n\" +\n    \"  </tbody>\\n\" +\n    \"</table>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\n    \"<ul role=\\\"presentation\\\" class=\\\"uib-datepicker-popup dropdown-menu uib-position-measure\\\" dropdown-nested ng-if=\\\"isOpen\\\" ng-keydown=\\\"keydown($event)\\\" ng-click=\\\"$event.stopPropagation()\\\">\\n\" +\n    \"  <li ng-transclude></li>\\n\" +\n    \"  <li ng-if=\\\"showButtonBar\\\" class=\\\"uib-button-bar\\\">\\n\" +\n    \"    <span class=\\\"btn-group float-left\\\">\\n\" +\n    \"      <button type=\\\"button\\\" class=\\\"btn btn-sm btn-info uib-datepicker-current\\\" ng-click=\\\"select('today', $event)\\\" ng-disabled=\\\"isDisabled('today')\\\">{{ getText('current') }}</button>\\n\" +\n    \"      <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger uib-clear\\\" ng-click=\\\"select(null, $event)\\\">{{ getText('clear') }}</button>\\n\" +\n    \"    </span>\\n\" +\n    \"    <button type=\\\"button\\\" class=\\\"btn btn-sm btn-success float-right uib-close\\\" ng-click=\\\"close($event)\\\">{{ getText('close') }}</button>\\n\" +\n    \"  </li>\\n\" +\n    \"</ul>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/modal/window.html\",\n    \"<div class=\\\"modal-dialog {{size ? 'modal-' + size : ''}}\\\"><div class=\\\"modal-content\\\" uib-modal-transclude></div></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/pager/pager.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/pager/pager.html\",\n    \"<li ng-class=\\\"{disabled: noPrevious()||ngDisabled, previous: align}\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('previous')}}</a></li>\\n\" +\n    \"<li ng-class=\\\"{disabled: noNext()||ngDisabled, next: align}\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('next')}}</a></li>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/pagination/pagination.html\",\n    \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('first')}}</a></li>\\n\" +\n    \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('previous')}}</a></li>\\n\" +\n    \"<li role=\\\"menuitem\\\" ng-repeat=\\\"page in pages track by $index\\\" ng-class=\\\"{active: page.active,disabled: ngDisabled&&!page.active}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page.number, $event)\\\" ng-disabled=\\\"ngDisabled&&!page.active\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{page.text}}</a></li>\\n\" +\n    \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('next')}}</a></li>\\n\" +\n    \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(totalPages, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('last')}}</a></li>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"<div class=\\\"tooltip-inner\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"<div class=\\\"tooltip-inner\\\" ng-bind=\\\"content\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"<div class=\\\"tooltip-inner\\\"\\n\" +\n    \"  uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\n    \"  tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/popover/popover-html.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\n    \"<div class=\\\"popover-body\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/popover/popover-template.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"\\n\" +\n    \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\n    \"<div class=\\\"popover-body\\\"\\n\" +\n    \"  uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\n    \"  tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/popover/popover.html\",\n    \"<div class=\\\"arrow\\\"></div>\\n\" +\n    \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\n    \"<div class=\\\"popover-body\\\" ng-bind=\\\"content\\\"></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/progressbar/bar.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/progressbar/bar.html\",\n    \"<div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/progressbar/progress.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/progressbar/progress.html\",\n    \"<div class=\\\"progress\\\" ng-transclude aria-labelledby=\\\"{{::title}}\\\"></div>\");\n}]);\n\nangular.module(\"uib/template/progressbar/progressbar.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/progressbar/progressbar.html\",\n    \"<div class=\\\"progress\\\">\\n\" +\n    \"  <div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\n    \"</div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/rating/rating.html\",\n    \"<span ng-mouseleave=\\\"reset()\\\" ng-keydown=\\\"onKeydown($event)\\\" tabindex=\\\"0\\\" role=\\\"slider\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{range.length}}\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuetext=\\\"{{title}}\\\">\\n\" +\n    \"    <span ng-repeat-start=\\\"r in range track by $index\\\" class=\\\"sr-only\\\">({{ $index < value ? '*' : ' ' }})</span>\\n\" +\n    \"    <i ng-repeat-end ng-mouseenter=\\\"enter($index + 1)\\\" ng-click=\\\"rate($index + 1)\\\" class=\\\"fa-svg-icon\\\" ng-class=\\\"$index < value && (r.stateOn || 'star') || (r.stateOff || 'star-empty')\\\" ng-attr-title=\\\"{{r.title}}\\\">\\n\" +\n    \"        <svg data-ng-if=\\\"$index < value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1728 647q0 22-26 48l-363 354 86 500q1 7 1 20 0 21-10.5 35.5t-30.5 14.5q-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\n    \"        <svg data-ng-if=\\\"$index >= value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1201 1004l306-297-422-62-189-382-189 382-422 62 306 297-73 421 378-199 377 199zm527-357q0 22-26 48l-363 354 86 500q1 7 1 20 0 50-41 50-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\n    \"    </i>\\n\" +\n    \"</span>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/tabs/tab.html\",\n    \"<li class=\\\"uib-tab nav-item\\\">\\n\" +\n    \"  <a href ng-click=\\\"select($event)\\\" ng-class=\\\"[{active: active, disabled: disabled}, classes]\\\" class=\\\"nav-link\\\" uib-tab-heading-transclude>{{heading}}</a>\\n\" +\n    \"</li>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/tabs/tabset.html\",\n    \"<div>\\n\" +\n    \"  <ul class=\\\"nav nav-{{tabset.type || 'tabs'}}\\\" ng-class=\\\"{'nav-stacked': vertical, 'nav-justified': justified}\\\" ng-transclude></ul>\\n\" +\n    \"  <div class=\\\"tab-content\\\">\\n\" +\n    \"    <div class=\\\"tab-pane\\\"\\n\" +\n    \"         ng-repeat=\\\"tab in tabset.tabs\\\"\\n\" +\n    \"         ng-class=\\\"{active: tabset.active === tab.index}\\\"\\n\" +\n    \"         uib-tab-content-transclude=\\\"tab\\\">\\n\" +\n    \"    </div>\\n\" +\n    \"  </div>\\n\" +\n    \"</div>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/timepicker/timepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/timepicker/timepicker.html\",\n    \"<table class=\\\"uib-timepicker\\\">\\n\" +\n    \"  <tbody>\\n\" +\n    \"    <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\n    \"      <td class=\\\"uib-increment hours\\\">\\n\" +\n    \"        <a ng-click=\\\"incrementHours()\\\" ng-class=\\\"{disabled: noIncrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td>&nbsp;</td>\\n\" +\n    \"      <td class=\\\"uib-increment minutes\\\">\\n\" +\n    \"        <a ng-click=\\\"incrementMinutes()\\\" ng-class=\\\"{disabled: noIncrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showSeconds\\\">&nbsp;</td>\\n\" +\n    \"      <td ng-show=\\\"showSeconds\\\" class=\\\"uib-increment seconds\\\">\\n\" +\n    \"        <a ng-click=\\\"incrementSeconds()\\\" ng-class=\\\"{disabled: noIncrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\n    \"    </tr>\\n\" +\n    \"    <tr>\\n\" +\n    \"      <td class=\\\"form-group uib-time hours\\\" ng-class=\\\"{'has-error': invalidHours}\\\">\\n\" +\n    \"        <input type=\\\"text\\\" placeholder=\\\"HH\\\" ng-model=\\\"hours\\\" ng-change=\\\"updateHours()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementHours()\\\" ng-blur=\\\"blur()\\\">\\n\" +\n    \"      </td>\\n\" +\n    \"      <td class=\\\"uib-separator\\\">:</td>\\n\" +\n    \"      <td class=\\\"form-group uib-time minutes\\\" ng-class=\\\"{'has-error': invalidMinutes}\\\">\\n\" +\n    \"        <input type=\\\"text\\\" placeholder=\\\"MM\\\" ng-model=\\\"minutes\\\" ng-change=\\\"updateMinutes()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementMinutes()\\\" ng-blur=\\\"blur()\\\">\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showSeconds\\\" class=\\\"uib-separator\\\">:</td>\\n\" +\n    \"      <td class=\\\"form-group uib-time seconds\\\" ng-class=\\\"{'has-error': invalidSeconds}\\\" ng-show=\\\"showSeconds\\\">\\n\" +\n    \"        <input type=\\\"text\\\" placeholder=\\\"SS\\\" ng-model=\\\"seconds\\\" ng-change=\\\"updateSeconds()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementSeconds()\\\" ng-blur=\\\"blur()\\\">\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showMeridian\\\" class=\\\"uib-time am-pm\\\"><button type=\\\"button\\\" ng-class=\\\"{disabled: noToggleMeridian()}\\\" class=\\\"btn btn-secondary text-center\\\" ng-click=\\\"toggleMeridian()\\\" ng-disabled=\\\"noToggleMeridian()\\\" tabindex=\\\"{{::tabindex}}\\\">{{meridian}}</button></td>\\n\" +\n    \"    </tr>\\n\" +\n    \"    <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\n    \"      <td class=\\\"uib-decrement hours\\\">\\n\" +\n    \"        <a ng-click=\\\"decrementHours()\\\" ng-class=\\\"{disabled: noDecrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td>&nbsp;</td>\\n\" +\n    \"      <td class=\\\"uib-decrement minutes\\\">\\n\" +\n    \"        <a ng-click=\\\"decrementMinutes()\\\" ng-class=\\\"{disabled: noDecrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showSeconds\\\">&nbsp;</td>\\n\" +\n    \"      <td ng-show=\\\"showSeconds\\\" class=\\\"uib-decrement seconds\\\">\\n\" +\n    \"        <a ng-click=\\\"decrementSeconds()\\\" ng-class=\\\"{disabled: noDecrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\n    \"          <span class=\\\"fa-svg-icon\\\">\\n\" +\n    \"            <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\n    \"          </span>\\n\" +\n    \"        </a>\\n\" +\n    \"      </td>\\n\" +\n    \"      <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\n    \"    </tr>\\n\" +\n    \"  </tbody>\\n\" +\n    \"</table>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/typeahead/typeahead-match.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/typeahead/typeahead-match.html\",\n    \"<a href\\n\" +\n    \"   tabindex=\\\"-1\\\"\\n\" +\n    \"   class=\\\"dropdown-item\\\"\\n\" +\n    \"   ng-bind-html=\\\"match.label | uibTypeaheadHighlight:query\\\"\\n\" +\n    \"   ng-attr-title=\\\"{{match.label}}\\\"></a>\\n\" +\n    \"\");\n}]);\n\nangular.module(\"uib/template/typeahead/typeahead-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n  $templateCache.put(\"uib/template/typeahead/typeahead-popup.html\",\n    \"<ul class=\\\"dropdown-menu\\\" ng-show=\\\"isOpen() && !moveInProgress\\\" ng-style=\\\"{top: position().top+'px', left: position().left+'px'}\\\" role=\\\"listbox\\\" aria-hidden=\\\"{{!isOpen()}}\\\">\\n\" +\n    \"    <li class=\\\"uib-typeahead-match\\\" ng-repeat=\\\"match in matches track by $index\\\" ng-class=\\\"{active: isActive($index) }\\\" ng-mouseenter=\\\"selectActive($index)\\\" ng-click=\\\"selectMatch($index, $event)\\\" role=\\\"option\\\" id=\\\"{{::match.id}}\\\">\\n\" +\n    \"        <div uib-typeahead-match index=\\\"$index\\\" match=\\\"match\\\" query=\\\"query\\\" template-url=\\\"templateUrl\\\"></div>\\n\" +\n    \"    </li>\\n\" +\n    \"</ul>\\n\" +\n    \"\");\n}]);\nangular.module('ui.bootstrap.carousel').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'); angular.$$uibCarouselCss = true; });\nangular.module('ui.bootstrap.common').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCommonCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.fa-svg-icon{display:inline-block;vertical-align:middle;min-width:1em;min-height:1em;height:100%;position:relative;top:-1px;}.fa-svg-icon svg{position:absolute;top:0;left:0;width:100%;height:100%;}.fa-svg-icon svg g,.fa-svg-icon svg path{fill:currentColor;}</style>'); angular.$$uibCommonCss = true; });\nangular.module('ui.bootstrap.datepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'); angular.$$uibDatepickerCss = true; });\nangular.module('ui.bootstrap.position').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'); angular.$$uibPositionCss = true; });\nangular.module('ui.bootstrap.datepickerPopup').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px;}</style>'); angular.$$uibDatepickerpopupCss = true; });\nangular.module('ui.bootstrap.tooltip').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'); angular.$$uibTooltipCss = true; });\nangular.module('ui.bootstrap.timepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-time input{width:50px !important;}</style>'); angular.$$uibTimepickerCss = true; });\nangular.module('ui.bootstrap.typeahead').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'); angular.$$uibTypeaheadCss = true; });","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort:\n            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n                '_'\n            ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","'use strict';\nrequire('../../modules/es.regexp.constructor');\nrequire('../../modules/es.regexp.escape');\nrequire('../../modules/es.regexp.to-string');\nrequire('../../modules/es.regexp.dot-all');\nrequire('../../modules/es.regexp.exec');\nrequire('../../modules/es.regexp.flags');\nrequire('../../modules/es.regexp.sticky');\nrequire('../../modules/es.regexp.test');\nrequire('../../modules/es.string.match');\nrequire('../../modules/es.string.replace');\nrequire('../../modules/es.string.search');\nrequire('../../modules/es.string.split');\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays:\n            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      isStatic = _ref.isStatic,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    type: type,\n    id: id || controlId,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix)\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      _ref$inline = _ref.inline,\n      inline = _ref$inline === void 0 ? false : _ref$inline,\n      _ref$disabled = _ref.disabled,\n      disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      _ref$feedbackTooltip = _ref.feedbackTooltip,\n      feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      _ref$title = _ref.title,\n      title = _ref$title === void 0 ? '' : _ref$title,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n      label = _ref.label,\n      children = _ref.children,\n      propCustom = _ref.custom,\n      _ref$as = _ref.as,\n      as = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"]);\n\n  var custom = type === 'switch' ? true : propCustom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = custom || label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n    type: type === 'switch' ? 'checkbox' : type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    as: as\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n    title: title\n  }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    tooltip: feedbackTooltip\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      lang = _ref.lang,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var type = 'file';\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    type: type,\n    lang: lang,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n  }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix),\n    \"data-browse\": props['data-browse']\n  }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      _ref$disabled = _ref.disabled,\n      disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      _ref$feedbackTooltip = _ref.feedbackTooltip,\n      feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      lang = _ref.lang,\n      dataBrowse = _ref['data-browse'],\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      _ref$inputAs = _ref.inputAs,\n      inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"]);\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var type = 'file';\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    disabled: disabled,\n    as: inputAs,\n    lang: lang\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(Component, {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n    \"data-browse\": dataBrowse\n  }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    tooltip: feedbackTooltip\n  }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'small' : _ref$as,\n      muted = _ref.muted,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix, muted && 'text-muted')\n  }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n    ref: ref,\n    type: \"switch\"\n  }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n  inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'form' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n  }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","\"use strict\";\n/**\n * @coreapi\n * @module common\n */ /** */\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./common/index\"));\n__export(require(\"./params/index\"));\n__export(require(\"./path/index\"));\n__export(require(\"./resolve/index\"));\n__export(require(\"./state/index\"));\n__export(require(\"./transition/index\"));\n__export(require(\"./url/index\"));\n__export(require(\"./view/index\"));\n__export(require(\"./globals\"));\n__export(require(\"./router\"));\n__export(require(\"./vanilla\"));\n__export(require(\"./interface\"));\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar resolve = require('./resolve');\n\nmodule.exports = {\n  Validation: errorSubclass(ValidationError),\n  MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n  this.message = 'validation failed';\n  this.errors = errors;\n  this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n  return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n  this.message = message || MissingRefError.message(baseId, ref);\n  this.missingRef = resolve.url(baseId, ref);\n  this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n  Subclass.prototype = Object.create(Error.prototype);\n  Subclass.prototype.constructor = Subclass;\n  return Subclass;\n}\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCombinedConnectionStats = void 0;\nfunction getStatValues(report, statName, kind, reportTypes) {\n    var results = [];\n    report.forEach(function (stat) {\n        if ((reportTypes.length === 0 || reportTypes.includes(stat.type)) &&\n            (kind.length === 0 || kind.includes(stat.kind)) &&\n            typeof stat[statName] === 'number') {\n            results.push(stat[statName]);\n        }\n    });\n    return results;\n}\nfunction getCombinedConnectionStats(_a) {\n    var publisher = _a.publisher, subscriber = _a.subscriber;\n    return __awaiter(this, void 0, void 0, function () {\n        var _b, publisherStats, subscriberStats, timestamps, timestamp, jitter, packets, packetsLost, trackRoundTripTime, currentRoundTripTime, roundTripTime, bytesSent, bytesReceived, selectedIceCandidatePairStats, iceCandidateStats;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0: return [4 /*yield*/, Promise.all([publisher, subscriber].map(function (pc) { return pc.getStats(); }))];\n                case 1:\n                    _b = __read.apply(void 0, [_c.sent(), 2]), publisherStats = _b[0], subscriberStats = _b[1];\n                    timestamps = getStatValues(subscriberStats, 'timestamp', ['audio'], ['inbound-rtp']);\n                    timestamp = timestamps.length > 0 ? timestamps[0] : 0;\n                    jitter = getStatValues(subscriberStats, 'jitter', ['audio'], ['inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    packets = getStatValues(subscriberStats, 'packetsReceived', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n                    packetsLost = getStatValues(subscriberStats, 'packetsLost', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n                    trackRoundTripTime = getStatValues(publisherStats, 'roundTripTime', ['audio', 'video'], ['remote-inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    currentRoundTripTime = getStatValues(subscriberStats, 'currentRoundTripTime', [], ['candidate-pair']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    roundTripTime = (currentRoundTripTime || trackRoundTripTime) * 1000;\n                    bytesSent = getStatValues(publisherStats, 'bytesSent', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n                    bytesReceived = getStatValues(subscriberStats, 'bytesReceived', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n                    selectedIceCandidatePairStats = extractSelectedActiveCandidatePair(subscriberStats);\n                    iceCandidateStats = [];\n                    subscriberStats.forEach(function (stat) {\n                        if (stat.type === 'local-candidate' || stat.type === 'remote-candidate') {\n                            iceCandidateStats.push(makeStandardCandidateStats(stat));\n                        }\n                    });\n                    return [2 /*return*/, { timestamp: timestamp, jitter: jitter, packets: packets, packetsLost: packetsLost, roundTripTime: roundTripTime, bytesSent: bytesSent, bytesReceived: bytesReceived, selectedIceCandidatePairStats: selectedIceCandidatePairStats, iceCandidateStats: iceCandidateStats }];\n            }\n        });\n    });\n}\nexports.getCombinedConnectionStats = getCombinedConnectionStats;\nfunction makeStandardCandidateStats(input) {\n    var standardizedCandidateStatsKeys = [\n        { key: 'transportId', type: 'string' },\n        { key: 'candidateType', type: 'string' },\n        { key: 'port', altKeys: ['portNumber'], type: 'number' },\n        { key: 'address', altKeys: ['ip', 'ipAddress'], type: 'string' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', altKeys: ['transport'], type: 'string' },\n        { key: 'url', type: 'string' },\n        { key: 'relayProtocol', type: 'string' },\n    ];\n    return standardizedCandidateStatsKeys.reduce(function (report, keyInfo) {\n        var keysToLookFor = [keyInfo.key];\n        if (keyInfo.altKeys) {\n            keysToLookFor = keysToLookFor.concat(keyInfo.altKeys);\n        }\n        var key = keysToLookFor.find(function (key) { return key in input; });\n        if (key && typeof input[key] === keyInfo.type) {\n            report[keyInfo.key] = input[key];\n        }\n        return report;\n    }, {});\n}\nfunction extractSelectedActiveCandidatePair(stats) {\n    var selectedCandidatePairId = null;\n    var candidatePairs = [];\n    stats.forEach(function (stat) {\n        if (stat.type === 'transport' && stat.selectedCandidatePairId) {\n            selectedCandidatePairId = stat.selectedCandidatePairId;\n        }\n        else if (stat.type === 'candidate-pair') {\n            candidatePairs.push(stat);\n        }\n    });\n    var activeCandidatePairStatsFound = candidatePairs.find(function (pair) {\n        // Firefox\n        return pair.selected ||\n            // Spec-compliant way\n            (selectedCandidatePairId && pair.id === selectedCandidatePairId);\n    });\n    if (!activeCandidatePairStatsFound) {\n        return null;\n    }\n    var activeCandidatePairStats = activeCandidatePairStatsFound;\n    var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n    if (!activeLocalCandidateStats || !activeRemoteCandidateStats) {\n        return null;\n    }\n    return {\n        localCandidate: makeStandardCandidateStats(activeLocalCandidateStats),\n        remoteCandidate: makeStandardCandidateStats(activeRemoteCandidateStats)\n    };\n}\n//# sourceMappingURL=getCombinedConnectionStats.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isArraysEqualEps;\nfunction isArraysEqualEps(arrayA, arrayB, eps) {\n  if (arrayA && arrayB) {\n    for (var i = 0; i !== arrayA.length; ++i) {\n      if (Math.abs(arrayA[i] - arrayB[i]) > eps) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return false;\n}","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\n\nvar FLAGS_GETTER_IS_CORRECT = !fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\nmodule.exports = { correct: FLAGS_GETTER_IS_CORRECT };\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildFastBilateralFilterStage = void 0;\nvar segmentationHelper_1 = require(\"../helpers/segmentationHelper\");\nvar webglHelper_1 = require(\"../helpers/webglHelper\");\nfunction buildFastBilateralFilterStage(gl, vertexShader, positionBuffer, texCoordBuffer, inputTexture, segmentationConfig, outputTexture, canvas) {\n    // NOTE(mmalavalli): This is a faster approximation of the joint bilateral filter.\n    // For a given pixel, instead of calculating the space and color weights of all\n    // the pixels within the filter kernel, which would have a complexity of O(r^2),\n    // we calculate the space and color weights of only those pixels which form two\n    // diagonal lines between the two pairs of opposite corners of the filter kernel,\n    // which would have a complexity of O(r). This improves the overall complexity\n    // of this stage from O(w x h x r^2) to O(w x h x r), where:\n    // w => width of the output video frame\n    // h => height of the output video frame\n    // r => radius of the joint bilateral filter kernel\n    var fragmentShaderSource = (0, webglHelper_1.glsl)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_segmentationMask;\\n    uniform vec2 u_texelSize;\\n    uniform float u_step;\\n    uniform float u_radius;\\n    uniform float u_offset;\\n    uniform float u_sigmaTexel;\\n    uniform float u_sigmaColor;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    float gaussian(float x, float sigma) {\\n      return exp(-0.5 * x * x / sigma / sigma);\\n    }\\n\\n    float calculateSpaceWeight(vec2 coord) {\\n      float x = distance(v_texCoord, coord);\\n      float sigma = u_sigmaTexel;\\n      return gaussian(x, sigma);\\n    }\\n\\n    float calculateColorWeight(vec2 coord) {\\n      vec3 centerColor = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 coordColor = texture(u_inputFrame, coord).rgb;\\n      float x = distance(centerColor, coordColor);\\n      float sigma = u_sigmaColor;\\n      return gaussian(x, sigma);\\n    }\\n\\n    void main() {\\n      vec3 centerColor = texture(u_inputFrame, v_texCoord).rgb;\\n      float newVal = 0.0;\\n      float totalWeight = 0.0;\\n\\n      vec2 leftTopCoord = vec2(v_texCoord + vec2(-u_radius, -u_radius) * u_texelSize);\\n      vec2 rightTopCoord = vec2(v_texCoord + vec2(u_radius, -u_radius) * u_texelSize);\\n      vec2 leftBottomCoord = vec2(v_texCoord + vec2(-u_radius, u_radius) * u_texelSize);\\n      vec2 rightBottomCoord = vec2(v_texCoord + vec2(u_radius, u_radius) * u_texelSize);\\n\\n      float leftTopSegAlpha = texture(u_segmentationMask, leftTopCoord).a;\\n      float rightTopSegAlpha = texture(u_segmentationMask, rightTopCoord).a;\\n      float leftBottomSegAlpha = texture(u_segmentationMask, leftBottomCoord).a;\\n      float rightBottomSegAlpha = texture(u_segmentationMask, rightBottomCoord).a;\\n      float totalSegAlpha = leftTopSegAlpha + rightTopSegAlpha + leftBottomSegAlpha + rightBottomSegAlpha;\\n\\n      if (totalSegAlpha <= 0.0) {\\n        newVal = 0.0;\\n      } else if (totalSegAlpha >= 4.0) {\\n        newVal = 1.0;\\n      } else {\\n        for (float i = 0.0; i <= u_radius - u_offset; i += u_step) {\\n          vec2 shift = vec2(i, i) * u_texelSize;\\n          vec2 coord = vec2(v_texCoord + shift);\\n          float spaceWeight = calculateSpaceWeight(coord);\\n          float colorWeight = calculateColorWeight(coord);\\n          float weight = spaceWeight * colorWeight;\\n          float alpha = texture(u_segmentationMask, coord).a;\\n          totalWeight += weight;\\n          newVal += weight * alpha;\\n\\n          if (i != 0.0) {\\n            shift = vec2(i, -i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;\\n            \\n            shift = vec2(-i, i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;\\n            \\n            shift = vec2(-i, -i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;          \\n          }\\n        }\\n        newVal /= totalWeight;\\n      }\\n\\n      outColor = vec4(vec3(0.0), newVal);\\n    }\\n  \"], [\"#version 300 es\\n\\n    precision highp float;\\n\\n    uniform sampler2D u_inputFrame;\\n    uniform sampler2D u_segmentationMask;\\n    uniform vec2 u_texelSize;\\n    uniform float u_step;\\n    uniform float u_radius;\\n    uniform float u_offset;\\n    uniform float u_sigmaTexel;\\n    uniform float u_sigmaColor;\\n\\n    in vec2 v_texCoord;\\n\\n    out vec4 outColor;\\n\\n    float gaussian(float x, float sigma) {\\n      return exp(-0.5 * x * x / sigma / sigma);\\n    }\\n\\n    float calculateSpaceWeight(vec2 coord) {\\n      float x = distance(v_texCoord, coord);\\n      float sigma = u_sigmaTexel;\\n      return gaussian(x, sigma);\\n    }\\n\\n    float calculateColorWeight(vec2 coord) {\\n      vec3 centerColor = texture(u_inputFrame, v_texCoord).rgb;\\n      vec3 coordColor = texture(u_inputFrame, coord).rgb;\\n      float x = distance(centerColor, coordColor);\\n      float sigma = u_sigmaColor;\\n      return gaussian(x, sigma);\\n    }\\n\\n    void main() {\\n      vec3 centerColor = texture(u_inputFrame, v_texCoord).rgb;\\n      float newVal = 0.0;\\n      float totalWeight = 0.0;\\n\\n      vec2 leftTopCoord = vec2(v_texCoord + vec2(-u_radius, -u_radius) * u_texelSize);\\n      vec2 rightTopCoord = vec2(v_texCoord + vec2(u_radius, -u_radius) * u_texelSize);\\n      vec2 leftBottomCoord = vec2(v_texCoord + vec2(-u_radius, u_radius) * u_texelSize);\\n      vec2 rightBottomCoord = vec2(v_texCoord + vec2(u_radius, u_radius) * u_texelSize);\\n\\n      float leftTopSegAlpha = texture(u_segmentationMask, leftTopCoord).a;\\n      float rightTopSegAlpha = texture(u_segmentationMask, rightTopCoord).a;\\n      float leftBottomSegAlpha = texture(u_segmentationMask, leftBottomCoord).a;\\n      float rightBottomSegAlpha = texture(u_segmentationMask, rightBottomCoord).a;\\n      float totalSegAlpha = leftTopSegAlpha + rightTopSegAlpha + leftBottomSegAlpha + rightBottomSegAlpha;\\n\\n      if (totalSegAlpha <= 0.0) {\\n        newVal = 0.0;\\n      } else if (totalSegAlpha >= 4.0) {\\n        newVal = 1.0;\\n      } else {\\n        for (float i = 0.0; i <= u_radius - u_offset; i += u_step) {\\n          vec2 shift = vec2(i, i) * u_texelSize;\\n          vec2 coord = vec2(v_texCoord + shift);\\n          float spaceWeight = calculateSpaceWeight(coord);\\n          float colorWeight = calculateColorWeight(coord);\\n          float weight = spaceWeight * colorWeight;\\n          float alpha = texture(u_segmentationMask, coord).a;\\n          totalWeight += weight;\\n          newVal += weight * alpha;\\n\\n          if (i != 0.0) {\\n            shift = vec2(i, -i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;\\n            \\n            shift = vec2(-i, i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;\\n            \\n            shift = vec2(-i, -i) * u_texelSize;\\n            coord = vec2(v_texCoord + shift);\\n            colorWeight = calculateColorWeight(coord);\\n            weight = spaceWeight * colorWeight;\\n            alpha = texture(u_segmentationMask, coord).a;\\n            totalWeight += weight;\\n            newVal += weight * texture(u_segmentationMask, coord).a;          \\n          }\\n        }\\n        newVal /= totalWeight;\\n      }\\n\\n      outColor = vec4(vec3(0.0), newVal);\\n    }\\n  \"])));\n    var _a = segmentationHelper_1.inputResolutions[segmentationConfig.inputResolution], segmentationWidth = _a[0], segmentationHeight = _a[1];\n    var outputWidth = canvas.width, outputHeight = canvas.height;\n    var texelWidth = 1 / outputWidth;\n    var texelHeight = 1 / outputHeight;\n    var fragmentShader = (0, webglHelper_1.compileShader)(gl, gl.FRAGMENT_SHADER, fragmentShaderSource);\n    var program = (0, webglHelper_1.createPiplelineStageProgram)(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer);\n    var inputFrameLocation = gl.getUniformLocation(program, 'u_inputFrame');\n    var segmentationMaskLocation = gl.getUniformLocation(program, 'u_segmentationMask');\n    var texelSizeLocation = gl.getUniformLocation(program, 'u_texelSize');\n    var stepLocation = gl.getUniformLocation(program, 'u_step');\n    var radiusLocation = gl.getUniformLocation(program, 'u_radius');\n    var offsetLocation = gl.getUniformLocation(program, 'u_offset');\n    var sigmaTexelLocation = gl.getUniformLocation(program, 'u_sigmaTexel');\n    var sigmaColorLocation = gl.getUniformLocation(program, 'u_sigmaColor');\n    var frameBuffer = gl.createFramebuffer();\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, outputTexture, 0);\n    gl.useProgram(program);\n    gl.uniform1i(inputFrameLocation, 0);\n    gl.uniform1i(segmentationMaskLocation, 1);\n    gl.uniform2f(texelSizeLocation, texelWidth, texelHeight);\n    // Ensures default values are configured to prevent infinite\n    // loop in fragment shader\n    updateSigmaSpace(0);\n    updateSigmaColor(0);\n    function render() {\n        gl.viewport(0, 0, outputWidth, outputHeight);\n        gl.useProgram(program);\n        gl.activeTexture(gl.TEXTURE1);\n        gl.bindTexture(gl.TEXTURE_2D, inputTexture);\n        gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n        gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n    }\n    function updateSigmaSpace(sigmaSpace) {\n        sigmaSpace *= Math.max(outputWidth / segmentationWidth, outputHeight / segmentationHeight);\n        var kSparsityFactor = 0.66; // Higher is more sparse.\n        var sparsity = Math.max(1, Math.sqrt(sigmaSpace) * kSparsityFactor);\n        var step = sparsity;\n        var radius = sigmaSpace;\n        var offset = step > 1 ? step * 0.5 : 0;\n        var sigmaTexel = Math.max(texelWidth, texelHeight) * sigmaSpace;\n        gl.useProgram(program);\n        gl.uniform1f(stepLocation, step);\n        gl.uniform1f(radiusLocation, radius);\n        gl.uniform1f(offsetLocation, offset);\n        gl.uniform1f(sigmaTexelLocation, sigmaTexel);\n    }\n    function updateSigmaColor(sigmaColor) {\n        gl.useProgram(program);\n        gl.uniform1f(sigmaColorLocation, sigmaColor);\n    }\n    function cleanUp() {\n        gl.deleteFramebuffer(frameBuffer);\n        gl.deleteProgram(program);\n        gl.deleteShader(fragmentShader);\n    }\n    return { render: render, updateSigmaSpace: updateSigmaSpace, updateSigmaColor: updateSigmaColor, cleanUp: cleanUp };\n}\nexports.buildFastBilateralFilterStage = buildFastBilateralFilterStage;\nvar templateObject_1;\n//# sourceMappingURL=fastBilateralFilterStage.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteAudioTrackPublication} represents a {@link RemoteAudioTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"audio\"\n * @property {?RemoteAudioTrack} track - unless you have subscribed to the\n *   {@link RemoteAudioTrack}, this property is null\n * @emits RemoteAudioTrackPublication#subscribed\n * @emits RemoteAudioTrackPublication#subscriptionFailed\n * @emits RemoteAudioTrackPublication#trackDisabled\n * @emits RemoteAudioTrackPublication#trackEnabled\n * @emits RemoteAudioTrackPublication#unsubscribed\n */\nvar RemoteAudioTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteAudioTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteAudioTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteAudioTrackPublication.prototype.toString = function () {\n        return \"[RemoteAudioTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return RemoteAudioTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was subscribed to\n * @event RemoteAudioTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteAudioTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteAudioTrack} could not be\n *   subscribed to\n * @event RemoteAudioTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteAudioTrack} was disabled.\n * @event RemoteAudioTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled.\n * @event RemoteAudioTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was unsubscribed from\n * @event RemoteAudioTrackPublication#unsubscribed\n */\nmodule.exports = RemoteAudioTrackPublication;\n//# sourceMappingURL=remoteaudiotrackpublication.js.map","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n  if (href === void 0) {\n    href = null;\n  }\n\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\nexport default SelectableContext;","/**************************************************************************\n* AngularJS-nvD3, v1.0.9; MIT\n* http://krispo.github.io/angular-nvd3\n**************************************************************************/\n(function(window){\n\n    'use strict';\n    var nv = window.nv;\n\n    // Node.js or CommonJS\n    if (typeof(exports) !== 'undefined') {\n        /* jshint -W020 */\n        nv = require('nvd3');\n        /* jshint +W020 */\n    }\n\n    angular.module('nvd3', [])\n\n        .directive('nvd3', ['nvd3Utils', function(nvd3Utils){\n            return {\n                restrict: 'AE',\n                scope: {\n                    data: '=',      //chart data, [required]\n                    options: '=',   //chart options, according to nvd3 core api, [required]\n                    api: '=?',      //directive global api, [optional]\n                    events: '=?',   //global events that directive would subscribe to, [optional]\n                    config: '=?',    //global directive configuration, [optional]\n                    onReady: '&?' //callback function that is called with internal scope when directive is created [optional]\n                },\n                link: function(scope, element, attrs){\n                    var defaultConfig = {\n                        extended: false,\n                        visible: true,\n                        disabled: false,\n                        refreshDataOnly: true,\n                        deepWatchOptions: true,\n                        deepWatchData: true,\n                        deepWatchDataDepth: 2, // 0 - by reference (cheap), 1 - by collection item (the middle), 2 - by value (expensive)\n                        debounce: 10, // default 10ms, time silence to prevent refresh while multiple options changes at a time\n                        debounceImmediate: true // immediate flag for debounce function\n                    };\n\n                    //flag indicates if directive and chart is ready\n                    scope.isReady = false;\n\n                    //basic directive configuration\n                    scope._config = angular.extend(defaultConfig, scope.config);\n\n                    //directive global api\n                    scope.api = {\n                        // Fully refresh directive\n                        refresh: function(){\n                            scope.api.updateWithOptions();\n                            scope.isReady = true;\n                        },\n\n                        // Fully refresh directive with specified timeout\n                        refreshWithTimeout: function(t){\n                            setTimeout(function(){\n                                scope.api.refresh();\n                            }, t);\n                        },\n\n                        // Update chart layout (for example if container is resized)\n                        update: function() {\n                            if (scope.chart && scope.svg) {\n                                if (scope.options.chart.type === 'sunburstChart') {\n                                    scope.svg.datum(angular.copy(scope.data)).call(scope.chart);\n                                } else {\n                                    scope.svg.datum(scope.data).call(scope.chart);\n                                }\n                            } else {\n                                scope.api.refresh();\n                            }\n                        },\n\n                        // Update chart layout with specified timeout\n                        updateWithTimeout: function(t){\n                            setTimeout(function(){\n                                scope.api.update();\n                            }, t);\n                        },\n\n                        // Update chart with new options\n                        updateWithOptions: function(options){\n                            // set options\n                            if (!arguments.length) {\n                                options = scope.options;\n                            } else {\n                                scope.options = options;\n\n                                // return if options $watch is enabled\n                                if (scope._config.deepWatchOptions && !scope._config.disabled) return;\n                            }\n\n                            // Clearing\n                            scope.api.clearElement();\n\n                            // Exit if options are not yet bound\n                            if (angular.isDefined(options) === false) return;\n\n                            // Exit if chart is hidden\n                            if (!scope._config.visible) return;\n\n                            // Initialize chart with specific type\n                            scope.chart = nv.models[options.chart.type]();\n\n                            // Generate random chart ID\n                            scope.chart.id = Math.random().toString(36).substr(2, 15);\n\n                            angular.forEach(scope.chart, function(value, key){\n                                if (key[0] === '_');\n                                else if ([\n                                        'clearHighlights',\n                                        'highlightPoint',\n                                        'id',\n                                        'options',\n                                        'resizeHandler',\n                                        'state',\n                                        'open',\n                                        'close',\n                                        'tooltipContent'\n                                    ].indexOf(key) >= 0);\n\n                                else if (key === 'dispatch') {\n                                    if (options.chart[key] === undefined || options.chart[key] === null) {\n                                        if (scope._config.extended) options.chart[key] = {};\n                                    }\n                                    configureEvents(scope.chart[key], options.chart[key]);\n                                }\n\n                                else if ([\n                                        'bars',\n                                        'bars1',\n                                        'bars2',\n                                        'boxplot',\n                                        'bullet',\n                                        'controls',\n                                        'discretebar',\n                                        'distX',\n                                        'distY',\n                                        'focus',\n                                        'interactiveLayer',\n                                        'legend',\n                                        'lines',\n                                        'lines1',\n                                        'lines2',\n                                        'multibar',\n                                        'pie',\n                                        'scatter',\n                                        'scatters1',\n                                        'scatters2',\n                                        'sparkline',\n                                        'stack1',\n                                        'stack2',\n                                        'sunburst',\n                                        'tooltip',\n                                        'x2Axis',\n                                        'xAxis',\n                                        'y1Axis',\n                                        'y2Axis',\n                                        'y3Axis',\n                                        'y4Axis',\n                                        'yAxis',\n                                        'yAxis1',\n                                        'yAxis2'\n                                    ].indexOf(key) >= 0 ||\n                                        // stacked is a component for stackedAreaChart, but a boolean for multiBarChart and multiBarHorizontalChart\n                                    (key === 'stacked' && options.chart.type === 'stackedAreaChart')) {\n                                    if (options.chart[key] === undefined || options.chart[key] === null) {\n                                        if (scope._config.extended) options.chart[key] = {};\n                                    }\n                                    configure(scope.chart[key], options.chart[key], options.chart.type);\n                                }\n\n                                //TODO: need to fix bug in nvd3\n                                else if ((key === 'focusHeight') && options.chart.type === 'lineChart');\n                                else if ((key === 'focusHeight') && options.chart.type === 'lineWithFocusChart');\n                                else if ((key === 'xTickFormat' || key === 'yTickFormat') && options.chart.type === 'lineWithFocusChart');\n                                else if ((key === 'tooltips') && options.chart.type === 'boxPlotChart');\n                                else if ((key === 'tooltipXContent' || key === 'tooltipYContent') && options.chart.type === 'scatterChart');\n                                else if ((key === 'x' || key === 'y') && options.chart.type === 'forceDirectedGraph');\n\n                                else if (options.chart[key] === undefined || options.chart[key] === null){\n                                    if (scope._config.extended) {\n                                        if (key==='barColor')\n                                            options.chart[key] = value()();\n                                        else\n                                            options.chart[key] = value();\n                                    }\n                                }\n\n                                else scope.chart[key](options.chart[key]);\n                            });\n\n                            // Update with data\n                            scope.api.updateWithData();\n\n                            // Configure wrappers\n                            if (options['title'] || scope._config.extended) configureWrapper('title');\n                            if (options['subtitle'] || scope._config.extended) configureWrapper('subtitle');\n                            if (options['caption'] || scope._config.extended) configureWrapper('caption');\n\n\n                            // Configure styles\n                            if (options['styles'] || scope._config.extended) configureStyles();\n\n                            nv.addGraph(function() {\n                                if (!scope.chart) return;\n\n                                // Remove resize handler. Due to async execution should be placed here, not in the clearElement\n                                if (scope.chart.resizeHandler) scope.chart.resizeHandler.clear();\n\n                                // Update the chart when window resizes\n                                scope.chart.resizeHandler = nv.utils.windowResize(function() {\n                                    scope.chart && scope.chart.update && scope.chart.update();\n                                });\n\n                                /// Zoom feature\n                                if (options.chart.zoom !== undefined && [\n                                        'scatterChart',\n                                        'lineChart',\n                                        'candlestickBarChart',\n                                        'cumulativeLineChart',\n                                        'historicalBarChart',\n                                        'ohlcBarChart',\n                                        'stackedAreaChart'\n                                    ].indexOf(options.chart.type) > -1) {\n                                    nvd3Utils.zoom(scope, options);\n                                }\n\n                                return scope.chart;\n                            }, options.chart['callback']);\n                        },\n\n                        // Update chart with new data\n                        updateWithData: function (data){\n                            // set data\n                            if (!arguments.length) {\n                                if (scope.options.chart.type === 'sunburstChart') {\n                                    data = angular.copy(scope.data);\n                                } else {\n                                    data = scope.data;\n                                }\n                            } else {\n                                scope.data = data;\n\n                                // return if data $watch is enabled\n                                if (scope._config.deepWatchData && !scope._config.disabled) return;\n                            }\n\n                            if (data) {\n                                // remove whole svg element with old data\n                                d3.select(element[0]).select('svg').remove();\n\n                                var h, w;\n\n                                // Select the current element to add <svg> element and to render the chart in\n                                scope.svg = d3.select(element[0]).insert('svg', '.caption');\n                                if (h = scope.options.chart.height) {\n                                    if (!isNaN(+h)) h += 'px'; //check if height is number\n                                    scope.svg.attr('height', h).style({height: h});\n                                }\n                                if (w = scope.options.chart.width) {\n                                    if (!isNaN(+w)) w += 'px'; //check if width is number\n                                    scope.svg.attr('width', w).style({width: w});\n                                } else {\n                                    scope.svg.attr('width', '100%').style({width: '100%'});\n                                }\n\n                                scope.svg.datum(data).call(scope.chart);\n\n                                // update zooming if exists\n                                if (scope.chart && scope.chart.zoomRender) scope.chart.zoomRender();\n                            }\n                        },\n\n                        // Fully clear directive element\n                        clearElement: function (){\n                            element.find('.title').remove();\n                            element.find('.subtitle').remove();\n                            element.find('.caption').remove();\n                            element.empty();\n\n                            // remove tooltip if exists\n                            if (scope.chart && scope.chart.tooltip && scope.chart.tooltip.id) {\n                                d3.select('#' + scope.chart.tooltip.id()).remove();\n                            }\n\n                            // To be compatible with old nvd3 (v1.7.1)\n                            if (nv.graphs && scope.chart) {\n                                for (var i = nv.graphs.length - 1; i >= 0; i--) {\n                                    if (nv.graphs[i] && (nv.graphs[i].id === scope.chart.id)) {\n                                        nv.graphs.splice(i, 1);\n                                    }\n                                }\n                            }\n                            if (nv.tooltip && nv.tooltip.cleanup) {\n                                nv.tooltip.cleanup();\n                            }\n                            if (scope.chart && scope.chart.resizeHandler) scope.chart.resizeHandler.clear();\n                            scope.chart = null;\n                        },\n\n                        // Get full directive scope\n                        getScope: function(){ return scope; },\n\n                        // Get directive element\n                        getElement: function(){ return element; }\n                    };\n\n                    // Configure the chart model with the passed options\n                    function configure(chart, options, chartType){\n                        if (chart && options){\n                            angular.forEach(chart, function(value, key){\n                                if (key[0] === '_');\n                                else if (key === 'dispatch') {\n                                    if (options[key] === undefined || options[key] === null) {\n                                        if (scope._config.extended) options[key] = {};\n                                    }\n                                    configureEvents(value, options[key]);\n                                }\n                                else if (key === 'tooltip') {\n                                    if (options[key] === undefined || options[key] === null) {\n                                        if (scope._config.extended) options[key] = {};\n                                    }\n                                    configure(chart[key], options[key], chartType);\n                                }\n                                else if (key === 'contentGenerator') {\n                                    if (options[key]) chart[key](options[key]);\n                                }\n                                else if ([\n                                        'axis',\n                                        'clearHighlights',\n                                        'defined',\n                                        'highlightPoint',\n                                        'nvPointerEventsClass',\n                                        'options',\n                                        'rangeBand',\n                                        'rangeBands',\n                                        'scatter',\n                                        'open',\n                                        'close',\n                                        'node'\n                                    ].indexOf(key) === -1) {\n                                    if (options[key] === undefined || options[key] === null){\n                                        if (scope._config.extended) options[key] = value();\n                                    }\n                                    else chart[key](options[key]);\n                                }\n                            });\n                        }\n                    }\n\n                    // Subscribe to the chart events (contained in 'dispatch')\n                    // and pass eventHandler functions in the 'options' parameter\n                    function configureEvents(dispatch, options){\n                        if (dispatch && options){\n                            angular.forEach(dispatch, function(value, key){\n                                if (options[key] === undefined || options[key] === null){\n                                    if (scope._config.extended) options[key] = value.on;\n                                }\n                                else dispatch.on(key + '._', options[key]);\n                            });\n                        }\n                    }\n\n                    // Configure 'title', 'subtitle', 'caption'.\n                    // nvd3 has no sufficient models for it yet.\n                    function configureWrapper(name){\n                        var _ = nvd3Utils.deepExtend(defaultWrapper(name), scope.options[name] || {});\n\n                        if (scope._config.extended) scope.options[name] = _;\n\n                        var wrapElement = angular.element('<div></div>').html(_['html'] || '')\n                            .addClass(name).addClass(_.className)\n                            .removeAttr('style')\n                            .css(_.css);\n\n                        if (!_['html']) wrapElement.text(_.text);\n\n                        if (_.enable) {\n                            if (name === 'title') element.prepend(wrapElement);\n                            else if (name === 'subtitle') angular.element(element[0].querySelector('.title')).after(wrapElement);\n                            else if (name === 'caption') element.append(wrapElement);\n                        }\n                    }\n\n                    // Add some styles to the whole directive element\n                    function configureStyles(){\n                        var _ = nvd3Utils.deepExtend(defaultStyles(), scope.options['styles'] || {});\n\n                        if (scope._config.extended) scope.options['styles'] = _;\n\n                        angular.forEach(_.classes, function(value, key){\n                            value ? element.addClass(key) : element.removeClass(key);\n                        });\n\n                        element.removeAttr('style').css(_.css);\n                    }\n\n                    // Default values for 'title', 'subtitle', 'caption'\n                    function defaultWrapper(_){\n                        switch (_){\n                            case 'title': return {\n                                enable: false,\n                                text: 'Write Your Title',\n                                className: 'h4',\n                                css: {\n                                    width: scope.options.chart.width + 'px',\n                                    textAlign: 'center'\n                                }\n                            };\n                            case 'subtitle': return {\n                                enable: false,\n                                text: 'Write Your Subtitle',\n                                css: {\n                                    width: scope.options.chart.width + 'px',\n                                    textAlign: 'center'\n                                }\n                            };\n                            case 'caption': return {\n                                enable: false,\n                                text: 'Figure 1. Write Your Caption text.',\n                                css: {\n                                    width: scope.options.chart.width + 'px',\n                                    textAlign: 'center'\n                                }\n                            };\n                        }\n                    }\n\n                    // Default values for styles\n                    function defaultStyles(){\n                        return {\n                            classes: {\n                                'with-3d-shadow': true,\n                                'with-transitions': true,\n                                'gallery': false\n                            },\n                            css: {}\n                        };\n                    }\n\n                    /* Event Handling */\n                    // Watching on options changing\n                    if (scope._config.deepWatchOptions) {\n                        scope.$watch('options', nvd3Utils.debounce(function(newOptions){\n                            if (!scope._config.disabled) scope.api.refresh();\n                        }, scope._config.debounce, scope._config.debounceImmediate), true);\n                    }\n\n                    // Watching on data changing\n                    function dataWatchFn(newData, oldData) {\n                        if (newData !== oldData){\n                            if (!scope._config.disabled) {\n                                scope._config.refreshDataOnly ? scope.api.update() : scope.api.refresh(); // if wanted to refresh data only, use update method, otherwise use full refresh.\n                            }\n                        }\n                    }\n                    if (scope._config.deepWatchData) {\n                        if (scope._config.deepWatchDataDepth === 1) {\n                            scope.$watchCollection('data', dataWatchFn);\n                        } else {\n                            scope.$watch('data', dataWatchFn, scope._config.deepWatchDataDepth === 2);\n                        }\n                    }\n\n                    // Watching on config changing\n                    scope.$watch('config', function(newConfig, oldConfig){\n                        if (newConfig !== oldConfig){\n                            scope._config = angular.extend(defaultConfig, newConfig);\n                            scope.api.refresh();\n                        }\n                    }, true);\n\n                    // Refresh chart first time if deepWatchOptions and deepWatchData are false\n                    if (!scope._config.deepWatchOptions && !scope._config.deepWatchData) {\n                        scope.api.refresh();\n                    }\n\n                    //subscribe on global events\n                    angular.forEach(scope.events, function(eventHandler, event){\n                        scope.$on(event, function(e, args){\n                            return eventHandler(e, scope, args);\n                        });\n                    });\n\n                    // remove completely when directive is destroyed\n                    element.on('$destroy', function () {\n                        scope.api.clearElement();\n                    });\n\n                    // trigger onReady callback if directive is ready\n                    scope.$watch('isReady', function(isReady){\n                        if (isReady) {\n                            if (scope.onReady && typeof scope.onReady() === 'function') scope.onReady()(scope, element);\n                        }\n                    });\n                }\n            };\n        }])\n\n        .factory('nvd3Utils', function(){\n            return {\n                debounce: function(func, wait, immediate) {\n                    var timeout;\n                    return function() {\n                        var context = this, args = arguments;\n                        var later = function() {\n                            timeout = null;\n                            if (!immediate) func.apply(context, args);\n                        };\n                        var callNow = immediate && !timeout;\n                        clearTimeout(timeout);\n                        timeout = setTimeout(later, wait);\n                        if (callNow) func.apply(context, args);\n                    };\n                },\n                deepExtend: function(dst){\n                    var me = this;\n                    angular.forEach(arguments, function(obj) {\n                        if (obj !== dst) {\n                            angular.forEach(obj, function(value, key) {\n                                if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {\n                                    me.deepExtend(dst[key], value);\n                                } else {\n                                    dst[key] = value;\n                                }\n                            });\n                        }\n                    });\n                    return dst;\n                },\n                zoom: function(scope, options) {\n                    var zoom = options.chart.zoom;\n\n                    // check if zoom enabled\n                    var enabled = (typeof zoom.enabled === 'undefined' || zoom.enabled === null) ? true : zoom.enabled;\n                    if (!enabled) return;\n\n                    var xScale = scope.chart.xAxis.scale()\n                        , yScale = scope.chart.yAxis.scale()\n                        , xDomain = scope.chart.xDomain || xScale.domain\n                        , yDomain = scope.chart.yDomain || yScale.domain\n                        , x_boundary = xScale.domain().slice()\n                        , y_boundary = yScale.domain().slice()\n\n                    // initialize zoom options\n                        , scale = zoom.scale || 1\n                        , translate = zoom.translate || [0, 0]\n                        , scaleExtent = zoom.scaleExtent || [1, 10]\n                        , useFixedDomain = zoom.useFixedDomain || false\n                        , useNiceScale = zoom.useNiceScale || false\n                        , horizontalOff = zoom.horizontalOff || false\n                        , verticalOff = zoom.verticalOff || false\n                        , unzoomEventType = zoom.unzoomEventType || 'dblclick.zoom'\n\n                    // auxiliary functions\n                        , fixDomain\n                        , d3zoom\n                        , zoomed\n                        , unzoomed\n                        , zoomend\n                        ;\n\n                    // ensure nice axis\n                    if (useNiceScale) {\n                        xScale.nice();\n                        yScale.nice();\n                    }\n\n                    // fix domain\n                    fixDomain = function (domain, boundary) {\n                        domain[0] = Math.min(Math.max(domain[0], boundary[0]), boundary[1] - boundary[1] / scaleExtent[1]);\n                        domain[1] = Math.max(boundary[0] + boundary[1] / scaleExtent[1], Math.min(domain[1], boundary[1]));\n                        return domain;\n                    };\n\n                    // zoom event handler\n                    zoomed = function () {\n                        if (zoom.zoomed !== undefined) {\n                            var domains = zoom.zoomed(xScale.domain(), yScale.domain());\n                            if (!horizontalOff) xDomain([domains.x1, domains.x2]);\n                            if (!verticalOff) yDomain([domains.y1, domains.y2]);\n                        } else {\n                            if (!horizontalOff) xDomain(useFixedDomain ? fixDomain(xScale.domain(), x_boundary) : xScale.domain());\n                            if (!verticalOff) yDomain(useFixedDomain ? fixDomain(yScale.domain(), y_boundary) : yScale.domain());\n                        }\n                        if (scope.chart) scope.chart.update();\n                    };\n\n                    // unzoomed event handler\n                    unzoomed = function () {\n                        if (zoom.unzoomed !== undefined) {\n                            var domains = zoom.unzoomed(xScale.domain(), yScale.domain());\n                            if (!horizontalOff) xDomain([domains.x1, domains.x2]);\n                            if (!verticalOff) yDomain([domains.y1, domains.y2]);\n                        } else {\n                            if (!horizontalOff) xDomain(x_boundary);\n                            if (!verticalOff) yDomain(y_boundary);\n                        }\n                        d3zoom.scale(scale).translate(translate);\n                        if (scope.chart) scope.chart.update();\n                    };\n\n                    // zoomend event handler\n                    zoomend = function () {\n                        if (zoom.zoomend !== undefined) {\n                            zoom.zoomend();\n                        }\n                    };\n\n                    // create d3 zoom handler\n                    d3zoom = d3.behavior.zoom()\n                        .x(xScale)\n                        .y(yScale)\n                        .scaleExtent(scaleExtent)\n                        .on('zoom', zoomed)\n                        .on('zoomend', zoomend);\n\n                    if (scope.svg) {\n                        scope.svg.call(d3zoom);\n\n                        d3zoom.scale(scale).translate(translate).event(scope.svg);\n\n                        if (unzoomEventType !== 'none') scope.svg.on(unzoomEventType, unzoomed);\n                    }\n\n                    if (scope.chart)\n                        scope.chart.zoomRender = function(){\n                            // reset zoom scale and translate\n                            d3zoom.scale(scale).translate(translate);\n\n                            // update scale\n                            xScale = scope.chart.xAxis.scale();\n                            yScale = scope.chart.yAxis.scale();\n                            xDomain = scope.chart.xDomain || xScale.domain;\n                            yDomain = scope.chart.yDomain || yScale.domain;\n                            x_boundary = xScale.domain().slice();\n                            y_boundary = yScale.domain().slice();\n\n                            // update zoom scale\n                            d3zoom.x(xScale).y(yScale);\n\n                            scope.svg.call(d3zoom);\n\n                            if (unzoomEventType !== 'none') scope.svg.on(unzoomEventType, unzoomed);\n                        };\n                }\n            };\n        });\n})(window);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar assign = require(\"lodash/assign\");\nvar mapValues = require(\"lodash/mapValues\");\nvar some = require(\"lodash/some\");\nvar NgComponent = /** @class */ (function () {\n    function NgComponent() {\n        this.__isFirstRender = true;\n        this.state = {};\n        this.props = {};\n    }\n    /*\n      eg. {\n        as: {currentValue: [1, 2, 3], previousValue: [1, 2]},\n        bs: {currentValue: 42, previousValue: undefined}\n      }\n    */\n    // nb: this method is explicity exposed for unit testing\n    NgComponent.prototype.$onChanges = function (changes) {\n        var oldProps = this.props;\n        // TODO: fix Lodash typings upstream\n        var newProps = mapValues(changes, 'currentValue');\n        // TODO: implement nextState (which also means implement this.setState)\n        var nextProps = assign({}, this.props, newProps);\n        if (this.__isFirstRender) {\n            assign(this, { props: nextProps });\n            this.componentWillMount();\n            this.render();\n            this.__isFirstRender = false;\n        }\n        else {\n            if (!this.didPropsChange(newProps, oldProps))\n                return;\n            this.componentWillReceiveProps(nextProps);\n            var shouldUpdate = this.shouldComponentUpdate(nextProps, this.state);\n            assign(this, { props: nextProps });\n            if (!shouldUpdate)\n                return;\n            this.componentWillUpdate(this.props, this.state);\n            this.render();\n            this.componentDidUpdate(this.props, this.state);\n        }\n    };\n    NgComponent.prototype.$postLink = function () {\n        this.componentDidMount();\n    };\n    NgComponent.prototype.$onDestroy = function () {\n        this.componentWillUnmount();\n    };\n    NgComponent.prototype.didPropsChange = function (newProps, oldProps) {\n        return some(newProps, function (v, k) { return v !== oldProps[k]; });\n    };\n    /*\n      lifecycle hooks\n    */\n    NgComponent.prototype.componentWillMount = function () { };\n    NgComponent.prototype.componentDidMount = function () { };\n    NgComponent.prototype.componentWillReceiveProps = function (_props) { };\n    NgComponent.prototype.shouldComponentUpdate = function (_nextProps, _nextState) { return true; };\n    NgComponent.prototype.componentWillUpdate = function (_props, _state) { };\n    NgComponent.prototype.componentDidUpdate = function (_props, _state) { };\n    NgComponent.prototype.componentWillUnmount = function () { };\n    NgComponent.prototype.render = function () { };\n    return NgComponent;\n}());\nexports.default = NgComponent;\n//# sourceMappingURL=index.js.map","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module hooks */\n/** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar resolveContext_1 = require(\"../resolve/resolveContext\");\nvar hof_1 = require(\"../common/hof\");\nexports.RESOLVE_HOOK_PRIORITY = 1000;\n/**\n * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n *\n * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n *\n * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar eagerResolvePath = function (trans) {\n    return new resolveContext_1.ResolveContext(trans.treeChanges().to)\n        .resolvePath('EAGER', trans)\n        .then(common_1.noop);\n};\nexports.registerEagerResolvePath = function (transitionService) {\n    return transitionService.onStart({}, eagerResolvePath, { priority: exports.RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n *\n * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n *\n * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar lazyResolveState = function (trans, state) {\n    return new resolveContext_1.ResolveContext(trans.treeChanges().to)\n        .subContext(state.$$state())\n        .resolvePath('LAZY', trans)\n        .then(common_1.noop);\n};\nexports.registerLazyResolveState = function (transitionService) {\n    return transitionService.onEnter({ entering: hof_1.val(true) }, lazyResolveState, { priority: exports.RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n *\n * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n *\n * After all entering states have been entered, this hook resolves any remaining Resolvables.\n * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n *\n * See [[StateDeclaration.resolve]]\n */\nvar resolveRemaining = function (trans) {\n    return new resolveContext_1.ResolveContext(trans.treeChanges().to)\n        .resolvePath('LAZY', trans)\n        .then(common_1.noop);\n};\nexports.registerResolveRemaining = function (transitionService) {\n    return transitionService.onFinish({}, resolveRemaining, { priority: exports.RESOLVE_HOOK_PRIORITY });\n};\n//# sourceMappingURL=resolve.js.map","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n","/**\n*\n*\tVALIDATE: number\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a number.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isNumber( value )\n*\tValidates if a value is a number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a number\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() === value.valueOf();\n} // end FUNCTION isNumber()\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ReceiverReport = require('./receiverreport');\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\n/**\n * @extends SenderOrReceiverReportFactory\n * @param {?ReceiverReport} lastReport\n */\nvar ReceiverReportFactory = /** @class */ (function (_super) {\n    __extends(ReceiverReportFactory, _super);\n    /**\n     * Construct a {@link ReceiverReportFactory}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function ReceiverReportFactory(trackId, initialStats) {\n        var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n        Object.defineProperties(_this, {\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link ReceiverReport}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} newerStats\n     * @returns {ReceiverReport}\n     */\n    ReceiverReportFactory.prototype.next = function (trackId, newerStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        this.trackId = trackId;\n        var report = ReceiverReport.of(trackId, olderStats, newerStats);\n        this.lastReport = report;\n        return report;\n    };\n    return ReceiverReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = ReceiverReportFactory;\n//# sourceMappingURL=receiverreportfactory.js.map","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim);\n            triangles.push(ear.i / dim);\n            triangles.push(next.i / dim);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var p = ear.next.next;\n\n    while (p !== ear.prev) {\n        if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // triangle bbox; min & max are calculated like this for speed\n    var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n        minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n        maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n        maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n        maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim);\n            triangles.push(p.i / dim);\n            triangles.push(b.i / dim);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize);\n                earcutLinked(c, triangles, dim, minX, minY, invSize);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        eliminateHole(queue[i], outerNode);\n        outerNode = filterPoints(outerNode, outerNode.next);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    outerNode = findHoleBridge(hole, outerNode);\n    if (outerNode) {\n        var b = splitPolygon(outerNode, hole);\n\n        // filter collinear points around the cuts\n        filterPoints(outerNode, outerNode.next);\n        filterPoints(b, b.next);\n    }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                if (x === hx) {\n                    if (hy === p.y) return p;\n                    if (hy === p.next.y) return p.next;\n                }\n                m = p.x < p.next.x ? p : p.next;\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = 32767 * (x - minX) * invSize;\n    y = 32767 * (y - minY) * invSize;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n           (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n           (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = null;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar common_1 = require(\"../common\");\nvar baseLocationService_1 = require(\"./baseLocationService\");\n/** A `LocationServices` that uses the browser hash \"#\" to get/set the current location */\nvar HashLocationService = /** @class */ (function (_super) {\n    __extends(HashLocationService, _super);\n    function HashLocationService(router) {\n        var _this = _super.call(this, router, false) || this;\n        common_1.root.addEventListener('hashchange', _this._listener, false);\n        return _this;\n    }\n    HashLocationService.prototype._get = function () {\n        return common_1.trimHashVal(this._location.hash);\n    };\n    HashLocationService.prototype._set = function (state, title, url, replace) {\n        this._location.hash = url;\n    };\n    HashLocationService.prototype.dispose = function (router) {\n        _super.prototype.dispose.call(this, router);\n        common_1.root.removeEventListener('hashchange', this._listener);\n    };\n    return HashLocationService;\n}(baseLocationService_1.BaseLocationServices));\nexports.HashLocationService = HashLocationService;\n//# sourceMappingURL=hashLocationService.js.map","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-string-prototype-at -- safe\n  return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n  at: function at(index) {\n    var S = toString(requireObjectCoercible(this));\n    var len = S.length;\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : charAt(S, k);\n  }\n});\n","import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as rangeContainsMarker, H as createEmptyEventStore, I as reduceEventStore, J as rezoneEventStoreDates, K as mergeRawOptions, L as BASE_OPTION_REFINERS, M as CALENDAR_LISTENER_REFINERS, N as CALENDAR_OPTION_REFINERS, O as COMPLEX_OPTION_COMPARATORS, P as VIEW_OPTION_REFINERS, Q as DateEnv, R as DateProfileGenerator, S as createEventUi, U as parseBusinessHours, W as setRef, X as Interaction, Y as getElSeg, Z as elementClosest, _ as EventImpl, $ as listenBySelector, a0 as listenToHoverBySelector, a1 as PureComponent, a2 as buildViewContext, a3 as getUniqueDomId, a4 as parseInteractionSettings, a5 as interactionSettingsStore, a6 as NowTimer, a7 as CalendarImpl, a8 as flushSync, a9 as CalendarRoot, aa as RenderId, ab as ensureElHasStyles, ac as applyStyleProp, ad as sliceEventStore } from './internal-common.js';\nexport { ae as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n    code: 'en',\n    week: {\n        dow: 0,\n        doy: 4, // 4 days need to be within the year to be considered the first week\n    },\n    direction: 'ltr',\n    buttonText: {\n        prev: 'prev',\n        next: 'next',\n        prevYear: 'prev year',\n        nextYear: 'next year',\n        year: 'year',\n        today: 'today',\n        month: 'month',\n        week: 'week',\n        day: 'day',\n        list: 'list',\n    },\n    weekText: 'W',\n    weekTextLong: 'Week',\n    closeHint: 'Close',\n    timeHint: 'Time',\n    eventHint: 'Event',\n    allDayText: 'all-day',\n    moreLinkText: 'more',\n    noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n    // Includes things we don't want other locales to inherit,\n    // things that derive from other translatable strings.\n    buttonHints: {\n        prev: 'Previous $0',\n        next: 'Next $0',\n        today(buttonText, unit) {\n            return (unit === 'day')\n                ? 'Today'\n                : `This ${buttonText}`;\n        },\n    }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n        return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n    } });\nfunction organizeRawLocales(explicitRawLocales) {\n    let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n    let allRawLocales = globalLocales.concat(explicitRawLocales);\n    let rawLocaleMap = {\n        en: RAW_EN_LOCALE,\n    };\n    for (let rawLocale of allRawLocales) {\n        rawLocaleMap[rawLocale.code] = rawLocale;\n    }\n    return {\n        map: rawLocaleMap,\n        defaultCode,\n    };\n}\nfunction buildLocale(inputSingular, available) {\n    if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n        return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n    }\n    return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n    let codes = [].concat(codeArg || []); // will convert to array\n    let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n    return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n    for (let i = 0; i < codes.length; i += 1) {\n        let parts = codes[i].toLocaleLowerCase().split('-');\n        for (let j = parts.length; j > 0; j -= 1) {\n            let simpleId = parts.slice(0, j).join('-');\n            if (available[simpleId]) {\n                return available[simpleId];\n            }\n        }\n    }\n    return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n    let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n    delete merged.code; // don't want this part of the options\n    let { week } = merged;\n    delete merged.week;\n    return {\n        codeArg,\n        codes,\n        week,\n        simpleNumberFormat: new Intl.NumberFormat(codeArg),\n        options: merged,\n    };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n    return {\n        id: guid(),\n        name: input.name,\n        premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n        deps: input.deps || [],\n        reducers: input.reducers || [],\n        isLoadingFuncs: input.isLoadingFuncs || [],\n        contextInit: [].concat(input.contextInit || []),\n        eventRefiners: input.eventRefiners || {},\n        eventDefMemberAdders: input.eventDefMemberAdders || [],\n        eventSourceRefiners: input.eventSourceRefiners || {},\n        isDraggableTransformers: input.isDraggableTransformers || [],\n        eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n        eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n        dateSelectionTransformers: input.dateSelectionTransformers || [],\n        datePointTransforms: input.datePointTransforms || [],\n        dateSpanTransforms: input.dateSpanTransforms || [],\n        views: input.views || {},\n        viewPropsTransformers: input.viewPropsTransformers || [],\n        isPropsValid: input.isPropsValid || null,\n        externalDefTransforms: input.externalDefTransforms || [],\n        viewContainerAppends: input.viewContainerAppends || [],\n        eventDropTransformers: input.eventDropTransformers || [],\n        componentInteractions: input.componentInteractions || [],\n        calendarInteractions: input.calendarInteractions || [],\n        themeClasses: input.themeClasses || {},\n        eventSourceDefs: input.eventSourceDefs || [],\n        cmdFormatter: input.cmdFormatter,\n        recurringTypes: input.recurringTypes || [],\n        namedTimeZonedImpl: input.namedTimeZonedImpl,\n        initialView: input.initialView || '',\n        elementDraggingImpl: input.elementDraggingImpl,\n        optionChangeHandlers: input.optionChangeHandlers || {},\n        scrollGridImpl: input.scrollGridImpl || null,\n        listenerRefiners: input.listenerRefiners || {},\n        optionRefiners: input.optionRefiners || {},\n        propSetHandlers: input.propSetHandlers || {},\n    };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n    let currentPluginIds = {};\n    let hooks = {\n        premiumReleaseDate: undefined,\n        reducers: [],\n        isLoadingFuncs: [],\n        contextInit: [],\n        eventRefiners: {},\n        eventDefMemberAdders: [],\n        eventSourceRefiners: {},\n        isDraggableTransformers: [],\n        eventDragMutationMassagers: [],\n        eventDefMutationAppliers: [],\n        dateSelectionTransformers: [],\n        datePointTransforms: [],\n        dateSpanTransforms: [],\n        views: {},\n        viewPropsTransformers: [],\n        isPropsValid: null,\n        externalDefTransforms: [],\n        viewContainerAppends: [],\n        eventDropTransformers: [],\n        componentInteractions: [],\n        calendarInteractions: [],\n        themeClasses: {},\n        eventSourceDefs: [],\n        cmdFormatter: null,\n        recurringTypes: [],\n        namedTimeZonedImpl: null,\n        initialView: '',\n        elementDraggingImpl: null,\n        optionChangeHandlers: {},\n        scrollGridImpl: null,\n        listenerRefiners: {},\n        optionRefiners: {},\n        propSetHandlers: {},\n    };\n    function addDefs(defs) {\n        for (let def of defs) {\n            const pluginName = def.name;\n            const currentId = currentPluginIds[pluginName];\n            if (currentId === undefined) {\n                currentPluginIds[pluginName] = def.id;\n                addDefs(def.deps);\n                hooks = combineHooks(hooks, def);\n            }\n            else if (currentId !== def.id) {\n                // different ID than the one already added\n                console.warn(`Duplicate plugin '${pluginName}'`);\n            }\n        }\n    }\n    if (pluginDefs) {\n        addDefs(pluginDefs);\n    }\n    addDefs(globalDefs);\n    return hooks;\n}\nfunction buildBuildPluginHooks() {\n    let currentOverrideDefs = [];\n    let currentGlobalDefs = [];\n    let currentHooks;\n    return (overrideDefs, globalDefs) => {\n        if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n            currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n        }\n        currentOverrideDefs = overrideDefs;\n        currentGlobalDefs = globalDefs;\n        return currentHooks;\n    };\n}\nfunction combineHooks(hooks0, hooks1) {\n    return {\n        premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n        reducers: hooks0.reducers.concat(hooks1.reducers),\n        isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n        contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n        eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n        eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n        eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n        isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n        eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n        eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n        dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n        datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n        dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n        views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n        viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n        isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n        externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n        viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n        eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n        calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n        componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n        themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n        eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n        cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n        recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n        namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n        initialView: hooks0.initialView || hooks1.initialView,\n        elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n        optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n        scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n        listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n        optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n        propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n    };\n}\nfunction compareOptionalDates(date0, date1) {\n    if (date0 === undefined) {\n        return date1;\n    }\n    if (date1 === undefined) {\n        return date0;\n    }\n    return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n    root: 'fc-theme-standard',\n    tableCellShaded: 'fc-cell-shaded',\n    buttonGroup: 'fc-button-group',\n    button: 'fc-button fc-button-primary',\n    buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n    close: 'fc-icon-x',\n    prev: 'fc-icon-chevron-left',\n    next: 'fc-icon-chevron-right',\n    prevYear: 'fc-icon-chevrons-left',\n    nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n    prev: 'fc-icon-chevron-right',\n    next: 'fc-icon-chevron-left',\n    prevYear: 'fc-icon-chevrons-right',\n    nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n    let hash = {};\n    let viewType;\n    for (viewType in defaultConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    for (viewType in overrideConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    if (hash[viewType]) {\n        return hash[viewType];\n    }\n    let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    if (viewDef) {\n        hash[viewType] = viewDef;\n    }\n    return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    let defaultConfig = defaultConfigs[viewType];\n    let overrideConfig = overrideConfigs[viewType];\n    let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n        ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n    let theComponent = queryProp('component');\n    let superType = queryProp('superType');\n    let superDef = null;\n    if (superType) {\n        if (superType === viewType) {\n            throw new Error('Can\\'t have a custom view type that references itself');\n        }\n        superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n    }\n    if (!theComponent && superDef) {\n        theComponent = superDef.component;\n    }\n    if (!theComponent) {\n        return null; // don't throw a warning, might be settings for a single-unit view\n    }\n    return {\n        type: viewType,\n        component: theComponent,\n        defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n        overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n    };\n}\n\nfunction parseViewConfigs(inputs) {\n    return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n    let rawOptions = typeof input === 'function' ?\n        { component: input } :\n        input;\n    let { component } = rawOptions;\n    if (rawOptions.content) {\n        // TODO: remove content/classNames/didMount/etc from options?\n        component = createViewHookComponent(rawOptions);\n    }\n    else if (component && !(component.prototype instanceof BaseComponent)) {\n        // WHY?: people were using `component` property for `content`\n        // TODO: converge on one setting name\n        component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n    }\n    return {\n        superType: rawOptions.type,\n        component: component,\n        rawOptions, // includes type and component too :(\n    };\n}\nfunction createViewHookComponent(options) {\n    return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { elTag: \"div\", elClasses: buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let defaultConfigs = parseViewConfigs(defaultInputs);\n    let overrideConfigs = parseViewConfigs(optionOverrides.views);\n    let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n    return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let durationInput = viewDef.overrides.duration ||\n        viewDef.defaults.duration ||\n        dynamicOptionOverrides.duration ||\n        optionOverrides.duration;\n    let duration = null;\n    let durationUnit = '';\n    let singleUnit = '';\n    let singleUnitOverrides = {};\n    if (durationInput) {\n        duration = createDurationCached(durationInput);\n        if (duration) { // valid?\n            let denom = greatestDurationDenominator(duration);\n            durationUnit = denom.unit;\n            if (denom.value === 1) {\n                singleUnit = durationUnit;\n                singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n            }\n        }\n    }\n    let queryButtonText = (optionsSubset) => {\n        let buttonTextMap = optionsSubset.buttonText || {};\n        let buttonTextKey = viewDef.defaults.buttonTextKey;\n        if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n            return buttonTextMap[buttonTextKey];\n        }\n        if (buttonTextMap[viewDef.type] != null) {\n            return buttonTextMap[viewDef.type];\n        }\n        if (buttonTextMap[singleUnit] != null) {\n            return buttonTextMap[singleUnit];\n        }\n        return null;\n    };\n    let queryButtonTitle = (optionsSubset) => {\n        let buttonHints = optionsSubset.buttonHints || {};\n        let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n        if (buttonKey != null && buttonHints[buttonKey] != null) {\n            return buttonHints[buttonKey];\n        }\n        if (buttonHints[viewDef.type] != null) {\n            return buttonHints[viewDef.type];\n        }\n        if (buttonHints[singleUnit] != null) {\n            return buttonHints[singleUnit];\n        }\n        return null;\n    };\n    return {\n        type: viewDef.type,\n        component: viewDef.component,\n        duration,\n        durationUnit,\n        singleUnit,\n        optionDefaults: viewDef.defaults,\n        optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n        buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n            queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n            viewDef.overrides.buttonText,\n        buttonTextDefault: queryButtonText(localeDefaults) ||\n            viewDef.defaults.buttonText ||\n            queryButtonText(BASE_OPTION_DEFAULTS) ||\n            viewDef.type,\n        // not DRY\n        buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n            queryButtonTitle(optionOverrides) ||\n            viewDef.overrides.buttonHint,\n        buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n            viewDef.defaults.buttonHint ||\n            queryButtonTitle(BASE_OPTION_DEFAULTS),\n        // will eventually fall back to buttonText\n    };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n    let json = JSON.stringify(durationInput);\n    let res = durationInputMap[json];\n    if (res === undefined) {\n        res = createDuration(durationInput);\n        durationInputMap[json] = res;\n    }\n    return res;\n}\n\nfunction reduceViewType(viewType, action) {\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            viewType = action.viewType;\n    }\n    return viewType;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n    switch (action.type) {\n        case 'CHANGE_DATE':\n            return action.dateMarker;\n        default:\n            return currentDate;\n    }\n}\n// should be initialized once and stay constant\n// this will change too\nfunction getInitialDate(options, dateEnv, nowManager) {\n    let initialDateInput = options.initialDate;\n    // compute the initial ambig-timezone date\n    if (initialDateInput != null) {\n        return dateEnv.createMarker(initialDateInput);\n    }\n    return nowManager.getDateMarker();\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n    switch (action.type) {\n        case 'SET_OPTION':\n            return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n        default:\n            return dynamicOptionOverrides;\n    }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n    let dp;\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            return dateProfileGenerator.build(action.dateMarker || currentDate);\n        case 'CHANGE_DATE':\n            return dateProfileGenerator.build(action.dateMarker);\n        case 'PREV':\n            dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n        case 'NEXT':\n            dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n    }\n    return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null;\n    return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    switch (action.type) {\n        case 'ADD_EVENT_SOURCES': // already parsed\n            return addSources(eventSources, action.sources, activeRange, context);\n        case 'REMOVE_EVENT_SOURCE':\n            return removeSource(eventSources, action.sourceId);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return fetchDirtySources(eventSources, activeRange, context);\n            }\n            return eventSources;\n        case 'FETCH_EVENT_SOURCES':\n            return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n                arrayToHash(action.sourceIds) :\n                excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n        case 'RECEIVE_EVENTS':\n        case 'RECEIVE_EVENT_ERROR':\n            return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return {};\n        default:\n            return eventSources;\n    }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n    for (let sourceId in eventSources) {\n        if (eventSources[sourceId].isFetching) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n    let hash = {};\n    for (let source of sources) {\n        hash[source.sourceId] = source;\n    }\n    if (fetchRange) {\n        hash = fetchDirtySources(hash, fetchRange, context);\n    }\n    return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n    return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n    return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n    if (!doesSourceNeedRange(eventSource, context)) {\n        return !eventSource.latestFetchId;\n    }\n    return !context.options.lazyFetching ||\n        !eventSource.fetchRange ||\n        eventSource.isFetching || // always cancel outdated in-progress fetches\n        fetchRange.start < eventSource.fetchRange.start ||\n        fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n    let nextSources = {};\n    for (let sourceId in prevSources) {\n        let source = prevSources[sourceId];\n        if (sourceIdHash[sourceId]) {\n            nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n        }\n        else {\n            nextSources[sourceId] = source;\n        }\n    }\n    return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n    let { options, calendarApi } = context;\n    let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n    let fetchId = guid();\n    sourceDef.fetch({\n        eventSource,\n        range: fetchRange,\n        isRefetch,\n        context,\n    }, (res) => {\n        let { rawEvents } = res;\n        if (options.eventSourceSuccess) {\n            rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        if (eventSource.success) {\n            rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENTS',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            rawEvents,\n        });\n    }, (error) => {\n        let errorHandled = false;\n        if (options.eventSourceFailure) {\n            options.eventSourceFailure.call(calendarApi, error);\n            errorHandled = true;\n        }\n        if (eventSource.failure) {\n            eventSource.failure(error);\n            errorHandled = true;\n        }\n        if (!errorHandled) {\n            console.warn(error.message, error);\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENT_ERROR',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            error,\n        });\n    });\n    return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n    let eventSource = sourceHash[sourceId];\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId) {\n        return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n    }\n    return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n    return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n    let refiners = buildEventSourceRefiners(context);\n    let rawSources = [].concat(rawOptions.eventSources || []);\n    let sources = []; // parsed\n    if (rawOptions.initialEvents) {\n        rawSources.unshift(rawOptions.initialEvents);\n    }\n    if (rawOptions.events) {\n        rawSources.unshift(rawOptions.events);\n    }\n    for (let rawSource of rawSources) {\n        let source = parseEventSource(rawSource, context, refiners);\n        if (source) {\n            sources.push(source);\n        }\n    }\n    return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n    switch (action.type) {\n        case 'UNSELECT_DATES':\n            return null;\n        case 'SELECT_DATES':\n            return action.selection;\n        default:\n            return currentSelection;\n    }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n    switch (action.type) {\n        case 'UNSELECT_EVENT':\n            return '';\n        case 'SELECT_EVENT':\n            return action.eventInstanceId;\n        default:\n            return currentInstanceId;\n    }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n    let newDrag;\n    switch (action.type) {\n        case 'UNSET_EVENT_DRAG':\n            return null;\n        case 'SET_EVENT_DRAG':\n            newDrag = action.state;\n            return {\n                affectedEvents: newDrag.affectedEvents,\n                mutatedEvents: newDrag.mutatedEvents,\n                isEvent: newDrag.isEvent,\n            };\n        default:\n            return currentDrag;\n    }\n}\n\nfunction reduceEventResize(currentResize, action) {\n    let newResize;\n    switch (action.type) {\n        case 'UNSET_EVENT_RESIZE':\n            return null;\n        case 'SET_EVENT_RESIZE':\n            newResize = action.state;\n            return {\n                affectedEvents: newResize.affectedEvents,\n                mutatedEvents: newResize.mutatedEvents,\n                isEvent: newResize.isEvent,\n            };\n        default:\n            return currentResize;\n    }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let sectionWidgets = {};\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    for (let sectionName in sectionStrHash) {\n        let sectionStr = sectionStrHash[sectionName];\n        let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n        sectionWidgets[sectionName] = sectionRes.widgets;\n        viewsWithButtons.push(...sectionRes.viewsWithButtons);\n        hasTitle = hasTitle || sectionRes.hasTitle;\n    }\n    return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n    let isRtl = calendarOptions.direction === 'rtl';\n    let calendarCustomButtons = calendarOptions.customButtons || {};\n    let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n    let calendarButtonText = calendarOptions.buttonText || {};\n    let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n    let calendarButtonHints = calendarOptions.buttonHints || {};\n    let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n        if (buttonName === 'title') {\n            hasTitle = true;\n            return { buttonName };\n        }\n        let customButtonProps;\n        let viewSpec;\n        let buttonClick;\n        let buttonIcon; // only one of these will be set\n        let buttonText; // \"\n        let buttonHint;\n        // ^ for the title=\"\" attribute, for accessibility\n        if ((customButtonProps = calendarCustomButtons[buttonName])) {\n            buttonClick = (ev) => {\n                if (customButtonProps.click) {\n                    customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n                }\n            };\n            (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = customButtonProps.text);\n            buttonHint = customButtonProps.hint || customButtonProps.text;\n        }\n        else if ((viewSpec = viewSpecs[buttonName])) {\n            viewsWithButtons.push(buttonName);\n            buttonClick = () => {\n                calendarApi.changeView(buttonName);\n            };\n            (buttonText = viewSpec.buttonTextOverride) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = viewSpec.buttonTextDefault);\n            let textFallback = viewSpec.buttonTextOverride ||\n                viewSpec.buttonTextDefault;\n            buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n                viewSpec.buttonTitleDefault ||\n                calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n            textFallback);\n        }\n        else if (calendarApi[buttonName]) { // a calendarApi method\n            buttonClick = () => {\n                calendarApi[buttonName]();\n            };\n            (buttonText = calendarButtonTextOverrides[buttonName]) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n            if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n                let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n                buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n                    calendarButtonHints[prevOrNext], [\n                    calendarButtonText.year || 'year',\n                    'year',\n                ], calendarButtonText[buttonName]);\n            }\n            else {\n                buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n                    calendarButtonHints[buttonName], [\n                    calendarButtonText[navUnit] || navUnit,\n                    navUnit,\n                ], calendarButtonText[buttonName]);\n            }\n        }\n        return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n    })));\n    return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n    constructor(type, getCurrentData, dateEnv) {\n        this.type = type;\n        this.getCurrentData = getCurrentData;\n        this.dateEnv = dateEnv;\n    }\n    get calendar() {\n        return this.getCurrentData().calendarApi;\n    }\n    get title() {\n        return this.getCurrentData().viewTitle;\n    }\n    get activeStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n    }\n    get activeEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n    }\n    get currentStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n    }\n    get currentEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n    }\n    getOption(name) {\n        return this.getCurrentData().options[name]; // are the view-specific options\n    }\n}\n\nlet eventSourceDef$2 = {\n    ignoreRange: true,\n    parseMeta(refined) {\n        if (Array.isArray(refined.events)) {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback) {\n        successCallback({\n            rawEvents: arg.eventSource.meta,\n        });\n    },\n};\nconst arrayEventSourcePlugin = createPlugin({\n    name: 'array-event-source',\n    eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n    parseMeta(refined) {\n        if (typeof refined.events === 'function') {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { dateEnv } = arg.context;\n        const func = arg.eventSource.meta;\n        unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n    },\n};\nconst funcEventSourcePlugin = createPlugin({\n    name: 'func-event-source',\n    eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n    method: String,\n    extraParams: identity,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n    parseMeta(refined) {\n        if (refined.url && (refined.format === 'json' || !refined.format)) {\n            return {\n                url: refined.url,\n                format: 'json',\n                method: (refined.method || 'GET').toUpperCase(),\n                extraParams: refined.extraParams,\n                startParam: refined.startParam,\n                endParam: refined.endParam,\n                timeZoneParam: refined.timeZoneParam,\n            };\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { meta } = arg.eventSource;\n        const requestParams = buildRequestParams(meta, arg.range, arg.context);\n        requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n            successCallback({ rawEvents, response });\n        }, errorCallback);\n    },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n    name: 'json-event-source',\n    eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n    eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n    let { dateEnv, options } = context;\n    let startParam;\n    let endParam;\n    let timeZoneParam;\n    let customRequestParams;\n    let params = {};\n    startParam = meta.startParam;\n    if (startParam == null) {\n        startParam = options.startParam;\n    }\n    endParam = meta.endParam;\n    if (endParam == null) {\n        endParam = options.endParam;\n    }\n    timeZoneParam = meta.timeZoneParam;\n    if (timeZoneParam == null) {\n        timeZoneParam = options.timeZoneParam;\n    }\n    // retrieve any outbound GET/POST data from the options\n    if (typeof meta.extraParams === 'function') {\n        // supplied as a function that returns a key/value object\n        customRequestParams = meta.extraParams();\n    }\n    else {\n        // probably supplied as a straight key/value object\n        customRequestParams = meta.extraParams || {};\n    }\n    Object.assign(params, customRequestParams);\n    params[startParam] = dateEnv.formatIso(range.start);\n    params[endParam] = dateEnv.formatIso(range.end);\n    if (dateEnv.timeZone !== 'local') {\n        params[timeZoneParam] = dateEnv.timeZone;\n    }\n    return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n    daysOfWeek: identity,\n    startTime: createDuration,\n    endTime: createDuration,\n    duration: createDuration,\n    startRecur: identity,\n    endRecur: identity,\n};\n\nlet recurring = {\n    parse(refined, dateEnv) {\n        if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n            let recurringData = {\n                daysOfWeek: refined.daysOfWeek || null,\n                startTime: refined.startTime || null,\n                endTime: refined.endTime || null,\n                startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n                endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n                dateEnv,\n            };\n            let duration;\n            if (refined.duration) {\n                duration = refined.duration;\n            }\n            if (!duration && refined.startTime && refined.endTime) {\n                duration = subtractDurations(refined.endTime, refined.startTime);\n            }\n            return {\n                allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n                duration,\n                typeData: recurringData, // doesn't need endTime anymore but oh well\n            };\n        }\n        return null;\n    },\n    expand(typeData, framingRange, dateEnv) {\n        let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n        if (clippedFramingRange) {\n            return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);\n        }\n        return [];\n    },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n    name: 'simple-recurring-event',\n    recurringTypes: [recurring],\n    eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {\n    let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n    let dayMarker = startOfDay(framingRange.start);\n    let endMarker = framingRange.end;\n    let instanceStarts = [];\n    // https://github.com/fullcalendar/fullcalendar/issues/7934\n    if (startTime) {\n        if (startTime.milliseconds < 0) {\n            // possible for next-day to have negative business hours that go into current day\n            endMarker = addDays(endMarker, 1);\n        }\n        else if (startTime.milliseconds >= 1000 * 60 * 60 * 24) {\n            // possible for prev-day to have >24hr business hours that go into current day\n            dayMarker = addDays(dayMarker, -1);\n        }\n    }\n    while (dayMarker < endMarker) {\n        let instanceStart;\n        // if everyday, or this particular day-of-week\n        if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n            if (startTime) {\n                instanceStart = calendarDateEnv.add(dayMarker, startTime);\n            }\n            else {\n                instanceStart = dayMarker;\n            }\n            instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));\n        }\n        dayMarker = addDays(dayMarker, 1);\n    }\n    return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n    name: 'change-handler',\n    optionChangeHandlers: {\n        events(events, context) {\n            handleEventSources([events], context);\n        },\n        eventSources: handleEventSources,\n    },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n    let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n    if (unfoundSources.length === 1 &&\n        inputs.length === 1 &&\n        Array.isArray(unfoundSources[0]._raw) &&\n        Array.isArray(inputs[0])) {\n        context.dispatch({\n            type: 'RESET_RAW_EVENTS',\n            sourceId: unfoundSources[0].sourceId,\n            rawEvents: inputs[0],\n        });\n        return;\n    }\n    let newInputs = [];\n    for (let input of inputs) {\n        let inputFound = false;\n        for (let i = 0; i < unfoundSources.length; i += 1) {\n            if (unfoundSources[i]._raw === input) {\n                unfoundSources.splice(i, 1); // delete\n                inputFound = true;\n                break;\n            }\n        }\n        if (!inputFound) {\n            newInputs.push(input);\n        }\n    }\n    for (let unfoundSource of unfoundSources) {\n        context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: unfoundSource.sourceId,\n        });\n    }\n    for (let newInput of newInputs) {\n        context.calendarApi.addEventSource(newInput);\n    }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n    context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n    let { emitter } = context;\n    if (emitter.hasHandlers('eventsSet')) {\n        emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n    }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n    arrayEventSourcePlugin,\n    funcEventSourcePlugin,\n    jsonFeedEventSourcePlugin,\n    simpleRecurringEventsPlugin,\n    changeHandlerPlugin,\n    createPlugin({\n        name: 'misc',\n        isLoadingFuncs: [\n            (state) => computeEventSourcesLoading(state.eventSources),\n        ],\n        propSetHandlers: {\n            dateProfile: handleDateProfile,\n            eventStore: handleEventStore,\n        },\n    }),\n];\n\nclass TaskRunner {\n    constructor(runTaskOption, drainedOption) {\n        this.runTaskOption = runTaskOption;\n        this.drainedOption = drainedOption;\n        this.queue = [];\n        this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n    }\n    request(task, delay) {\n        this.queue.push(task);\n        this.delayedRunner.request(delay);\n    }\n    pause(scope) {\n        this.delayedRunner.pause(scope);\n    }\n    resume(scope, force) {\n        this.delayedRunner.resume(scope, force);\n    }\n    drain() {\n        let { queue } = this;\n        while (queue.length) {\n            let completedTasks = [];\n            let task;\n            while ((task = queue.shift())) {\n                this.runTask(task);\n                completedTasks.push(task);\n            }\n            this.drained(completedTasks);\n        } // keep going, in case new tasks were added in the drained handler\n    }\n    runTask(task) {\n        if (this.runTaskOption) {\n            this.runTaskOption(task);\n        }\n    }\n    drained(completedTasks) {\n        if (this.drainedOption) {\n            this.drainedOption(completedTasks);\n        }\n    }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n    let range;\n    // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n    if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n        range = dateProfile.currentRange;\n    }\n    else { // for day units or smaller, use the actual day range\n        range = dateProfile.activeRange;\n    }\n    return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n        isEndExclusive: dateProfile.isRangeAllDay,\n        defaultSeparator: viewOptions.titleRangeSeparator,\n    });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n    let { currentRangeUnit } = dateProfile;\n    if (currentRangeUnit === 'year') {\n        return { year: 'numeric' };\n    }\n    if (currentRangeUnit === 'month') {\n        return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n    }\n    let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n    if (days !== null && days > 1) {\n        // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n        return { year: 'numeric', month: 'short', day: 'numeric' };\n    }\n    // one day. longer, like \"September 9 2014\"\n    return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n/*\nTODO: test switching timezones when NO timezone plugin\n*/\nclass CalendarNowManager {\n    constructor() {\n        this.resetListeners = new Set();\n    }\n    handleInput(dateEnv, // will change if timezone setup changed\n    nowInput) {\n        const oldDateEnv = this.dateEnv;\n        if (dateEnv !== oldDateEnv) {\n            if (typeof nowInput === 'function') {\n                this.nowFn = nowInput;\n            }\n            else if (!oldDateEnv) { // first time?\n                this.nowAnchorDate = dateEnv.toDate(nowInput\n                    ? dateEnv.createMarker(nowInput)\n                    : dateEnv.createNowMarker());\n                this.nowAnchorQueried = Date.now();\n            }\n            this.dateEnv = dateEnv;\n            // not first time? fire reset handlers\n            if (oldDateEnv) {\n                for (const resetListener of this.resetListeners.values()) {\n                    resetListener();\n                }\n            }\n        }\n    }\n    getDateMarker() {\n        return this.nowAnchorDate\n            ? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +\n                (Date.now() - this.nowAnchorQueried))\n            : this.dateEnv.createMarker(this.nowFn());\n    }\n    addResetListener(handler) {\n        this.resetListeners.add(handler);\n    }\n    removeResetListener(handler) {\n        this.resetListeners.delete(handler);\n    }\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n    constructor(props) {\n        this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n        this.organizeRawLocales = memoize(organizeRawLocales);\n        this.buildLocale = memoize(buildLocale);\n        this.buildPluginHooks = buildBuildPluginHooks();\n        this.buildDateEnv = memoize(buildDateEnv$1);\n        this.buildTheme = memoize(buildTheme);\n        this.parseToolbars = memoize(parseToolbars);\n        this.buildViewSpecs = memoize(buildViewSpecs);\n        this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n        this.buildViewApi = memoize(buildViewApi);\n        this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n        this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n        this.buildEventUiBases = memoize(buildEventUiBases);\n        this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n        this.buildTitle = memoize(buildTitle);\n        this.nowManager = new CalendarNowManager();\n        this.emitter = new Emitter();\n        this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n        this.currentCalendarOptionsInput = {};\n        this.currentCalendarOptionsRefined = {};\n        this.currentViewOptionsInput = {};\n        this.currentViewOptionsRefined = {};\n        this.currentCalendarOptionsRefiners = {};\n        this.optionsForRefining = [];\n        this.optionsForHandling = [];\n        this.getCurrentData = () => this.data;\n        this.dispatch = (action) => {\n            this.actionRunner.request(action); // protects against recursive calls to _handleAction\n        };\n        this.props = props;\n        this.actionRunner.pause();\n        this.nowManager = new CalendarNowManager();\n        let dynamicOptionOverrides = {};\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        this.emitter.setThisContext(props.calendarApi);\n        this.emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter: this.emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);\n        let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        // needs to be after setThisContext\n        for (let callback of optionsData.pluginHooks.contextInit) {\n            callback(calendarContext);\n        }\n        // NOT DRY\n        let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n        let initialState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            eventSources,\n            eventUiBases: {},\n            eventStore: createEmptyEventStore(),\n            renderableEventStore: createEmptyEventStore(),\n            dateSelection: null,\n            eventSelection: '',\n            eventDrag: null,\n            eventResize: null,\n            selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(initialState, reducer(null, null, contextAndState));\n        }\n        if (computeIsLoading(initialState, calendarContext)) {\n            this.emitter.trigger('loading', true); // NOT DRY\n        }\n        this.state = initialState;\n        this.updateData();\n        this.actionRunner.resume();\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        let { props } = this;\n        if (changedOptionNames === undefined) {\n            props.optionOverrides = optionOverrides;\n        }\n        else {\n            props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n            this.optionsForRefining.push(...changedOptionNames);\n        }\n        if (changedOptionNames === undefined || changedOptionNames.length) {\n            this.actionRunner.request({\n                type: 'NOTHING',\n            });\n        }\n    }\n    _handleAction(action) {\n        let { props, state, emitter } = this;\n        let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = reduceViewType(state.currentViewType, action);\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        emitter.setThisContext(props.calendarApi);\n        emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let { currentDate, dateProfile } = state;\n        if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n            dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        }\n        currentDate = reduceCurrentDate(currentDate, action);\n        dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n        if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n            action.type === 'NEXT' || // \"\n            !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n        let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n        let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n        let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n            (state.renderableEventStore || eventStore) : // try from previous state\n            eventStore;\n        let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n        let eventUiBySource = this.buildEventUiBySource(eventSources);\n        let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n        let newState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            eventSources,\n            eventStore,\n            renderableEventStore,\n            selectionConfig,\n            eventUiBases,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            dateSelection: reduceDateSelection(state.dateSelection, action),\n            eventSelection: reduceSelectedEvent(state.eventSelection, action),\n            eventDrag: reduceEventDrag(state.eventDrag, action),\n            eventResize: reduceEventResize(state.eventResize, action),\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n        }\n        let wasLoading = computeIsLoading(state, calendarContext);\n        let isLoading = computeIsLoading(newState, calendarContext);\n        // TODO: use propSetHandlers in plugin system\n        if (!wasLoading && isLoading) {\n            emitter.trigger('loading', true);\n        }\n        else if (wasLoading && !isLoading) {\n            emitter.trigger('loading', false);\n        }\n        this.state = newState;\n        if (props.onAction) {\n            props.onAction(action);\n        }\n    }\n    updateData() {\n        let { props, state } = this;\n        let oldData = this.data;\n        let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n        let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n        let data = this.data = Object.assign(Object.assign(Object.assign({ nowManager: this.nowManager, viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n        let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n        let oldCalendarOptions = oldData && oldData.calendarOptions;\n        let newCalendarOptions = optionsData.calendarOptions;\n        if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n            if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n                // hack\n                state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n                state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n                state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n            }\n            for (let optionName in changeHandlers) {\n                if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n                    oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n                    changeHandlers[optionName](newCalendarOptions[optionName], data);\n                }\n            }\n        }\n        this.optionsForHandling = [];\n        if (props.onData) {\n            props.onData(data);\n        }\n    }\n    computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n        // TODO: blacklist options that are handled by optionChangeHandlers\n        if (!this.optionsForRefining.length &&\n            optionOverrides === this.stableOptionOverrides &&\n            dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n            return this.stableCalendarOptionsData;\n        }\n        let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n        let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n        let theme = this.buildTheme(refinedOptions, pluginHooks);\n        let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n        return this.stableCalendarOptionsData = {\n            calendarOptions: refinedOptions,\n            pluginHooks,\n            dateEnv,\n            viewSpecs,\n            theme,\n            toolbarConfig,\n            localeDefaults,\n            availableRawLocales: availableLocaleData.map,\n        };\n    }\n    // always called from behind a memoizer\n    processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n        let { locales, locale } = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let availableLocaleData = this.organizeRawLocales(locales);\n        let availableRawLocales = availableLocaleData.map;\n        let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n        let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n        let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let extra = {};\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            localeDefaults,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refined = {};\n        let currentRaw = this.currentCalendarOptionsInput;\n        let currentRefined = this.currentCalendarOptionsRefined;\n        let anyChanges = false;\n        for (let optionName in raw) {\n            if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                (optionName in currentRaw) &&\n                COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else if (refiners[optionName]) {\n                refined[optionName] = refiners[optionName](raw[optionName]);\n                anyChanges = true;\n            }\n            else {\n                extra[optionName] = currentRaw[optionName];\n            }\n        }\n        if (anyChanges) {\n            this.currentCalendarOptionsInput = raw;\n            this.currentCalendarOptionsRefined = refined;\n            this.stableOptionOverrides = optionOverrides;\n            this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n        }\n        this.optionsForHandling.push(...this.optionsForRefining);\n        this.optionsForRefining = [];\n        return {\n            rawOptions: this.currentCalendarOptionsInput,\n            refinedOptions: this.currentCalendarOptionsRefined,\n            pluginHooks,\n            availableLocaleData,\n            localeDefaults,\n            extra,\n        };\n    }\n    _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n        let viewSpec = optionsData.viewSpecs[viewType];\n        if (!viewSpec) {\n            throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n        }\n        let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);\n        let dateProfileGenerator = this.buildDateProfileGenerator({\n            dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n            nowManager: this.nowManager,\n            duration: viewSpec.duration,\n            durationUnit: viewSpec.durationUnit,\n            usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n            dateEnv: optionsData.dateEnv,\n            calendarApi: this.props.calendarApi,\n            slotMinTime: refinedOptions.slotMinTime,\n            slotMaxTime: refinedOptions.slotMaxTime,\n            showNonCurrentDates: refinedOptions.showNonCurrentDates,\n            dayCount: refinedOptions.dayCount,\n            dateAlignment: refinedOptions.dateAlignment,\n            dateIncrement: refinedOptions.dateIncrement,\n            hiddenDays: refinedOptions.hiddenDays,\n            weekends: refinedOptions.weekends,\n            validRangeInput: refinedOptions.validRange,\n            visibleRangeInput: refinedOptions.visibleRange,\n            fixedWeekCount: refinedOptions.fixedWeekCount,\n        });\n        let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n        return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n    }\n    processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            viewSpec.optionDefaults,\n            localeDefaults,\n            optionOverrides,\n            viewSpec.optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let refined = {};\n        let currentRaw = this.currentViewOptionsInput;\n        let currentRefined = this.currentViewOptionsRefined;\n        let anyChanges = false;\n        let extra = {};\n        for (let optionName in raw) {\n            if (raw[optionName] === currentRaw[optionName] ||\n                (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                    COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else {\n                if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n                    (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                        COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n                    if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n                        refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n                    }\n                }\n                else if (refiners[optionName]) {\n                    refined[optionName] = refiners[optionName](raw[optionName]);\n                }\n                else {\n                    extra[optionName] = raw[optionName];\n                }\n                anyChanges = true;\n            }\n        }\n        if (anyChanges) {\n            this.currentViewOptionsInput = raw;\n            this.currentViewOptionsRefined = refined;\n        }\n        return {\n            rawOptions: this.currentViewOptionsInput,\n            refinedOptions: this.currentViewOptionsRefined,\n            extra,\n        };\n    }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n    let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n    return new DateEnv({\n        calendarSystem: 'gregory',\n        timeZone,\n        namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n        locale,\n        weekNumberCalculation,\n        firstDay,\n        weekText,\n        cmdFormatter: pluginHooks.cmdFormatter,\n        defaultSeparator,\n    });\n}\nfunction buildTheme(options, pluginHooks) {\n    let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n    return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n    let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n    return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n    return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n    return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n    let eventUiBases = { '': eventUiSingleBase };\n    for (let defId in eventDefs) {\n        let def = eventDefs[defId];\n        if (def.sourceId && eventUiBySource[def.sourceId]) {\n            eventUiBases[defId] = eventUiBySource[def.sourceId];\n        }\n    }\n    return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n    let { options } = calendarContext;\n    return {\n        eventUiSingleBase: createEventUi({\n            display: options.eventDisplay,\n            editable: options.editable,\n            startEditable: options.eventStartEditable,\n            durationEditable: options.eventDurationEditable,\n            constraint: options.eventConstraint,\n            overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n            allow: options.eventAllow,\n            backgroundColor: options.eventBackgroundColor,\n            borderColor: options.eventBorderColor,\n            textColor: options.eventTextColor,\n            color: options.eventColor,\n            // classNames: options.eventClassNames // render hook will handle this\n        }, calendarContext),\n        selectionConfig: createEventUi({\n            constraint: options.selectConstraint,\n            overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n            allow: options.selectAllow,\n        }, calendarContext),\n    };\n}\nfunction computeIsLoading(state, context) {\n    for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n        if (isLoadingFunc(state)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n    return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n    for (let optionName in options) {\n        console.warn(`Unknown option '${optionName}'` +\n            (viewName ? ` for view '${viewName}'` : ''));\n    }\n}\n\nclass ToolbarSection extends BaseComponent {\n    render() {\n        let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n        return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n    }\n    renderWidgetGroup(widgetGroup) {\n        let { props } = this;\n        let { theme } = this.context;\n        let children = [];\n        let isOnlyButtons = true;\n        for (let widget of widgetGroup) {\n            let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n            if (buttonName === 'title') {\n                isOnlyButtons = false;\n                children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n            }\n            else {\n                let isPressed = buttonName === props.activeButton;\n                let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n                    (!props.isPrevEnabled && buttonName === 'prev') ||\n                    (!props.isNextEnabled && buttonName === 'next');\n                let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n                if (isPressed) {\n                    buttonClasses.push(theme.getClass('buttonActive'));\n                }\n                children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon, role: \"img\" }) : '')));\n            }\n        }\n        if (children.length > 1) {\n            let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n            return createElement('div', { className: groupClassName }, ...children);\n        }\n        return children[0];\n    }\n}\n\nclass Toolbar extends BaseComponent {\n    render() {\n        let { model, extraClassName } = this.props;\n        let forceLtr = false;\n        let startContent;\n        let endContent;\n        let sectionWidgets = model.sectionWidgets;\n        let centerContent = sectionWidgets.center;\n        if (sectionWidgets.left) {\n            forceLtr = true;\n            startContent = sectionWidgets.left;\n        }\n        else {\n            startContent = sectionWidgets.start;\n        }\n        if (sectionWidgets.right) {\n            forceLtr = true;\n            endContent = sectionWidgets.right;\n        }\n        else {\n            endContent = sectionWidgets.end;\n        }\n        let classNames = [\n            extraClassName || '',\n            'fc-toolbar',\n            forceLtr ? 'fc-toolbar-ltr' : '',\n        ];\n        return (createElement(\"div\", { className: classNames.join(' ') },\n            this.renderSection('start', startContent || []),\n            this.renderSection('center', centerContent || []),\n            this.renderSection('end', endContent || [])));\n    }\n    renderSection(key, widgetGroups) {\n        let { props } = this;\n        return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n    }\n}\n\nclass ViewHarness extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            availableWidth: null,\n        };\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n            this.updateAvailableWidth();\n        };\n        this.handleResize = () => {\n            this.updateAvailableWidth();\n        };\n    }\n    render() {\n        let { props, state } = this;\n        let { aspectRatio } = props;\n        let classNames = [\n            'fc-view-harness',\n            (aspectRatio || props.liquid || props.height)\n                ? 'fc-view-harness-active' // harness controls the height\n                : 'fc-view-harness-passive', // let the view do the height\n        ];\n        let height = '';\n        let paddingBottom = '';\n        if (aspectRatio) {\n            if (state.availableWidth !== null) {\n                height = state.availableWidth / aspectRatio;\n            }\n            else {\n                // while waiting to know availableWidth, we can't set height to *zero*\n                // because will cause lots of unnecessary scrollbars within scrollgrid.\n                // BETTER: don't start rendering ANYTHING yet until we know container width\n                // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n                paddingBottom = `${(1 / aspectRatio) * 100}%`;\n            }\n        }\n        else {\n            height = props.height || '';\n        }\n        return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n    }\n    componentDidMount() {\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    updateAvailableWidth() {\n        if (this.el && // needed. but why?\n            this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n        ) {\n            this.setState({ availableWidth: this.el.offsetWidth });\n        }\n    }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.handleSegClick = (ev, segEl) => {\n            let { component } = this;\n            let { context } = component;\n            let seg = getElSeg(segEl);\n            if (seg && // might be the <div> surrounding the more link\n                component.isValidSegDownEl(ev.target)) {\n                // our way to simulate a link click for elements that can't be <a> tags\n                // grab before trigger fired in case trigger trashes DOM thru rerendering\n                let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n                let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n                context.emitter.trigger('eventClick', {\n                    el: segEl,\n                    event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n                if (url && !ev.defaultPrevented) {\n                    window.location.href = url;\n                }\n            }\n        };\n        this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n        this.handleSegClick);\n    }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n        this.handleEventElRemove = (el) => {\n            if (el === this.currentSegEl) {\n                this.handleSegLeave(null, this.currentSegEl);\n            }\n        };\n        this.handleSegEnter = (ev, segEl) => {\n            if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n                this.currentSegEl = segEl;\n                this.triggerEvent('eventMouseEnter', ev, segEl);\n            }\n        };\n        this.handleSegLeave = (ev, segEl) => {\n            if (this.currentSegEl) {\n                this.currentSegEl = null;\n                this.triggerEvent('eventMouseLeave', ev, segEl);\n            }\n        };\n        this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n        this.handleSegEnter, this.handleSegLeave);\n    }\n    destroy() {\n        this.removeHoverListeners();\n    }\n    triggerEvent(publicEvName, ev, segEl) {\n        let { component } = this;\n        let { context } = component;\n        let seg = getElSeg(segEl);\n        if (!ev || component.isValidSegDownEl(ev.target)) {\n            context.emitter.trigger(publicEvName, {\n                el: segEl,\n                event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        }\n    }\n}\n\nclass CalendarContent extends PureComponent {\n    constructor() {\n        super(...arguments);\n        this.buildViewContext = memoize(buildViewContext);\n        this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n        this.buildToolbarProps = memoize(buildToolbarProps);\n        this.headerRef = createRef();\n        this.footerRef = createRef();\n        this.interactionsStore = {};\n        // eslint-disable-next-line\n        this.state = {\n            viewLabelId: getUniqueDomId(),\n        };\n        // Component Registration\n        // -----------------------------------------------------------------------------------------------------------------\n        this.registerInteractiveComponent = (component, settingsInput) => {\n            let settings = parseInteractionSettings(component, settingsInput);\n            let DEFAULT_INTERACTIONS = [\n                EventClicking,\n                EventHovering,\n            ];\n            let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n            let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n            this.interactionsStore[component.uid] = interactions;\n            interactionSettingsStore[component.uid] = settings;\n        };\n        this.unregisterInteractiveComponent = (component) => {\n            let listeners = this.interactionsStore[component.uid];\n            if (listeners) {\n                for (let listener of listeners) {\n                    listener.destroy();\n                }\n                delete this.interactionsStore[component.uid];\n            }\n            delete interactionSettingsStore[component.uid];\n        };\n        // Resizing\n        // -----------------------------------------------------------------------------------------------------------------\n        this.resizeRunner = new DelayedRunner(() => {\n            this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n            this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n        });\n        this.handleWindowResize = (ev) => {\n            let { options } = this.props;\n            if (options.handleWindowResize &&\n                ev.target === window // avoid jqui events\n            ) {\n                this.resizeRunner.request(options.windowResizeDelay);\n            }\n        };\n    }\n    /*\n    renders INSIDE of an outer div\n    */\n    render() {\n        let { props } = this;\n        let { toolbarConfig, options } = props;\n        let viewVGrow = false;\n        let viewHeight = '';\n        let viewAspectRatio;\n        if (props.isHeightAuto || props.forPrint) {\n            viewHeight = '';\n        }\n        else if (options.height != null) {\n            viewVGrow = true;\n        }\n        else if (options.contentHeight != null) {\n            viewHeight = options.contentHeight;\n        }\n        else {\n            viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n        }\n        let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.nowManager, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n        let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n            ? this.state.viewLabelId\n            : undefined;\n        return (createElement(ViewContextType.Provider, { value: viewContext },\n            createElement(NowTimer, { unit: \"day\" }, (nowDate) => {\n                let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);\n                return (createElement(Fragment, null,\n                    toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n                    createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n                        this.renderView(props),\n                        this.buildAppendContent()),\n                    toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n            })));\n    }\n    componentDidMount() {\n        let { props } = this;\n        this.calendarInteractions = props.pluginHooks.calendarInteractions\n            .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n        window.addEventListener('resize', this.handleWindowResize);\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            propSetHandlers[propName](props[propName], props);\n        }\n    }\n    componentDidUpdate(prevProps) {\n        let { props } = this;\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            if (props[propName] !== prevProps[propName]) {\n                propSetHandlers[propName](props[propName], props);\n            }\n        }\n    }\n    componentWillUnmount() {\n        window.removeEventListener('resize', this.handleWindowResize);\n        this.resizeRunner.clear();\n        for (let interaction of this.calendarInteractions) {\n            interaction.destroy();\n        }\n        this.props.emitter.trigger('_unmount');\n    }\n    buildAppendContent() {\n        let { props } = this;\n        let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n        return createElement(Fragment, {}, ...children);\n    }\n    renderView(props) {\n        let { pluginHooks } = props;\n        let { viewSpec } = props;\n        let viewProps = {\n            dateProfile: props.dateProfile,\n            businessHours: props.businessHours,\n            eventStore: props.renderableEventStore,\n            eventUiBases: props.eventUiBases,\n            dateSelection: props.dateSelection,\n            eventSelection: props.eventSelection,\n            eventDrag: props.eventDrag,\n            eventResize: props.eventResize,\n            isHeightAuto: props.isHeightAuto,\n            forPrint: props.forPrint,\n        };\n        let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n        for (let transformer of transformers) {\n            Object.assign(viewProps, transformer.transform(viewProps, props));\n        }\n        let ViewComponent = viewSpec.component;\n        return (createElement(ViewComponent, Object.assign({}, viewProps)));\n    }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n    // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n    let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n    let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n    let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n    return {\n        title,\n        activeButton: viewSpec.type,\n        navUnit: viewSpec.singleUnit,\n        isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n        isPrevEnabled: prevInfo.isValid,\n        isNextEnabled: nextInfo.isValid,\n    };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n    return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n    constructor(el, optionOverrides = {}) {\n        super();\n        this.isRendering = false;\n        this.isRendered = false;\n        this.currentClassNames = [];\n        this.customContentRenderId = 0;\n        this.handleAction = (action) => {\n            // actions we know we want to render immediately\n            switch (action.type) {\n                case 'SET_EVENT_DRAG':\n                case 'SET_EVENT_RESIZE':\n                    this.renderRunner.tryDrain();\n            }\n        };\n        this.handleData = (data) => {\n            this.currentData = data;\n            this.renderRunner.request(data.calendarOptions.rerenderDelay);\n        };\n        this.handleRenderRequest = () => {\n            if (this.isRendering) {\n                this.isRendered = true;\n                let { currentData } = this;\n                flushSync(() => {\n                    render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n                        this.setClassNames(classNames);\n                        this.setHeight(height);\n                        return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n                            createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n                    }), this.el);\n                });\n            }\n            else if (this.isRendered) {\n                this.isRendered = false;\n                render(null, this.el);\n                this.setClassNames([]);\n                this.setHeight('');\n            }\n        };\n        ensureElHasStyles(el);\n        this.el = el;\n        this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n        new CalendarDataManager({\n            optionOverrides,\n            calendarApi: this,\n            onAction: this.handleAction,\n            onData: this.handleData,\n        });\n    }\n    render() {\n        let wasRendering = this.isRendering;\n        if (!wasRendering) {\n            this.isRendering = true;\n        }\n        else {\n            this.customContentRenderId += 1;\n        }\n        this.renderRunner.request();\n        if (wasRendering) {\n            this.updateSize();\n        }\n    }\n    destroy() {\n        if (this.isRendering) {\n            this.isRendering = false;\n            this.renderRunner.request();\n        }\n    }\n    updateSize() {\n        flushSync(() => {\n            super.updateSize();\n        });\n    }\n    batchRendering(func) {\n        this.renderRunner.pause('batchRendering');\n        func();\n        this.renderRunner.resume('batchRendering');\n    }\n    pauseRendering() {\n        this.renderRunner.pause('pauseRendering');\n    }\n    resumeRendering() {\n        this.renderRunner.resume('pauseRendering', true);\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n    }\n    setClassNames(classNames) {\n        if (!isArraysEqual(classNames, this.currentClassNames)) {\n            let { classList } = this.el;\n            for (let className of this.currentClassNames) {\n                classList.remove(className);\n            }\n            for (let className of classNames) {\n                classList.add(className);\n            }\n            this.currentClassNames = classNames;\n        }\n    }\n    setHeight(height) {\n        applyStyleProp(this.el, 'height', height);\n    }\n}\n\nfunction formatDate(dateInput, options = {}) {\n    let dateEnv = buildDateEnv(options);\n    let formatter = createFormatter(options);\n    let dateMeta = dateEnv.createMarkerMeta(dateInput);\n    if (!dateMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.format(dateMeta.marker, formatter, {\n        forcedTzo: dateMeta.forcedTzo,\n    });\n}\nfunction formatRange(startInput, endInput, options) {\n    let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n    let formatter = createFormatter(options);\n    let startMeta = dateEnv.createMarkerMeta(startInput);\n    let endMeta = dateEnv.createMarkerMeta(endInput);\n    if (!startMeta || !endMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n        forcedStartTzo: startMeta.forcedTzo,\n        forcedEndTzo: endMeta.forcedTzo,\n        isEndExclusive: options.isEndExclusive,\n        defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n    });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n    let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n    return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n    return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.19';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar $Array = Array;\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\n// eslint-disable-next-line es/no-string-prototype-towellformed -- safe\nvar $toWellFormed = ''.toWellFormed;\nvar REPLACEMENT_CHARACTER = '\\uFFFD';\n\n// Safari bug\nvar TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {\n  return call($toWellFormed, 1) !== '1';\n});\n\n// `String.prototype.toWellFormed` method\n// https://tc39.es/ecma262/#sec-string.prototype.towellformed\n$({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {\n  toWellFormed: function toWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S);\n    var length = S.length;\n    var result = $Array(length);\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) result[i] = charAt(S, i);\n      // unpaired surrogate\n      else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = REPLACEMENT_CHARACTER;\n      // surrogate pair\n      else {\n        result[i] = charAt(S, i);\n        result[++i] = charAt(S, i);\n      }\n    } return join(result, '');\n  }\n});\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module core\n */ /** */\nvar urlMatcherFactory_1 = require(\"./url/urlMatcherFactory\");\nvar urlRouter_1 = require(\"./url/urlRouter\");\nvar transitionService_1 = require(\"./transition/transitionService\");\nvar view_1 = require(\"./view/view\");\nvar stateRegistry_1 = require(\"./state/stateRegistry\");\nvar stateService_1 = require(\"./state/stateService\");\nvar globals_1 = require(\"./globals\");\nvar common_1 = require(\"./common/common\");\nvar predicates_1 = require(\"./common/predicates\");\nvar urlService_1 = require(\"./url/urlService\");\nvar trace_1 = require(\"./common/trace\");\n/** @hidden */\nvar _routerInstance = 0;\n/**\n * The master class used to instantiate an instance of UI-Router.\n *\n * UI-Router (for each specific framework) will create an instance of this class during bootstrap.\n * This class instantiates and wires the UI-Router services together.\n *\n * After a new instance of the UIRouter class is created, it should be configured for your app.\n * For instance, app states should be registered with the [[UIRouter.stateRegistry]].\n *\n * ---\n *\n * Normally the framework code will bootstrap UI-Router.\n * If you are bootstrapping UIRouter manually, tell it to monitor the URL by calling\n * [[UrlService.listen]] then [[UrlService.sync]].\n */\nvar UIRouter = /** @class */ (function () {\n    /**\n     * Creates a new `UIRouter` object\n     *\n     * @param locationService a [[LocationServices]] implementation\n     * @param locationConfig a [[LocationConfig]] implementation\n     * @internalapi\n     */\n    function UIRouter(locationService, locationConfig) {\n        if (locationService === void 0) { locationService = urlService_1.UrlService.locationServiceStub; }\n        if (locationConfig === void 0) { locationConfig = urlService_1.UrlService.locationConfigStub; }\n        this.locationService = locationService;\n        this.locationConfig = locationConfig;\n        /** @hidden */ this.$id = _routerInstance++;\n        /** @hidden */ this._disposed = false;\n        /** @hidden */ this._disposables = [];\n        /** Provides trace information to the console */\n        this.trace = trace_1.trace;\n        /** Provides services related to ui-view synchronization */\n        this.viewService = new view_1.ViewService();\n        /** Global router state */\n        this.globals = new globals_1.UIRouterGlobals();\n        /** Provides services related to Transitions */\n        this.transitionService = new transitionService_1.TransitionService(this);\n        /**\n         * Deprecated for public use. Use [[urlService]] instead.\n         * @deprecated Use [[urlService]] instead\n         */\n        this.urlMatcherFactory = new urlMatcherFactory_1.UrlMatcherFactory();\n        /**\n         * Deprecated for public use. Use [[urlService]] instead.\n         * @deprecated Use [[urlService]] instead\n         */\n        this.urlRouter = new urlRouter_1.UrlRouter(this);\n        /** Provides a registry for states, and related registration services */\n        this.stateRegistry = new stateRegistry_1.StateRegistry(this);\n        /** Provides services related to states */\n        this.stateService = new stateService_1.StateService(this);\n        /** Provides services related to the URL */\n        this.urlService = new urlService_1.UrlService(this);\n        /** @hidden plugin instances are registered here */\n        this._plugins = {};\n        this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n        this.globals.$current = this.stateRegistry.root();\n        this.globals.current = this.globals.$current.self;\n        this.disposable(this.globals);\n        this.disposable(this.stateService);\n        this.disposable(this.stateRegistry);\n        this.disposable(this.transitionService);\n        this.disposable(this.urlRouter);\n        this.disposable(locationService);\n        this.disposable(locationConfig);\n    }\n    /** Registers an object to be notified when the router is disposed */\n    UIRouter.prototype.disposable = function (disposable) {\n        this._disposables.push(disposable);\n    };\n    /**\n     * Disposes this router instance\n     *\n     * When called, clears resources retained by the router by calling `dispose(this)` on all\n     * registered [[disposable]] objects.\n     *\n     * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n     *\n     * @param disposable (optional) the disposable to dispose\n     */\n    UIRouter.prototype.dispose = function (disposable) {\n        var _this = this;\n        if (disposable && predicates_1.isFunction(disposable.dispose)) {\n            disposable.dispose(this);\n            return undefined;\n        }\n        this._disposed = true;\n        this._disposables.slice().forEach(function (d) {\n            try {\n                typeof d.dispose === 'function' && d.dispose(_this);\n                common_1.removeFrom(_this._disposables, d);\n            }\n            catch (ignored) { }\n        });\n    };\n    /**\n     * Adds a plugin to UI-Router\n     *\n     * This method adds a UI-Router Plugin.\n     * A plugin can enhance or change UI-Router behavior using any public API.\n     *\n     * #### Example:\n     * ```js\n     * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n     *\n     * var plugin = router.addPlugin(MyCoolPlugin);\n     * ```\n     *\n     * ### Plugin authoring\n     *\n     * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n     *\n     * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n     * For example, it may configure router options or add a Transition Hook.\n     *\n     * The plugin can then be published as a separate module.\n     *\n     * #### Example:\n     * ```js\n     * export class MyAuthPlugin implements UIRouterPlugin {\n     *   constructor(router: UIRouter, options: any) {\n     *     this.name = \"MyAuthPlugin\";\n     *     let $transitions = router.transitionService;\n     *     let $state = router.stateService;\n     *\n     *     let authCriteria = {\n     *       to: (state) => state.data && state.data.requiresAuth\n     *     };\n     *\n     *     function authHook(transition: Transition) {\n     *       let authService = transition.injector().get('AuthService');\n     *       if (!authService.isAuthenticated()) {\n     *         return $state.target('login');\n     *       }\n     *     }\n     *\n     *     $transitions.onStart(authCriteria, authHook);\n     *   }\n     * }\n     * ```\n     *\n     * @param plugin one of:\n     *        - a plugin class which implements [[UIRouterPlugin]]\n     *        - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n     *        - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n     * @param options options to pass to the plugin class/factory\n     * @returns the registered plugin instance\n     */\n    UIRouter.prototype.plugin = function (plugin, options) {\n        if (options === void 0) { options = {}; }\n        var pluginInstance = new plugin(this, options);\n        if (!pluginInstance.name)\n            throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n        this._disposables.push(pluginInstance);\n        return this._plugins[pluginInstance.name] = pluginInstance;\n    };\n    UIRouter.prototype.getPlugin = function (pluginName) {\n        return pluginName ? this._plugins[pluginName] : common_1.values(this._plugins);\n    };\n    return UIRouter;\n}());\nexports.UIRouter = UIRouter;\n//# sourceMappingURL=router.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\nvar LocalParticipantSignaling = /** @class */ (function (_super) {\n    __extends(LocalParticipantSignaling, _super);\n    function LocalParticipantSignaling() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _publicationsToTrackSenders: {\n                value: new Map()\n            },\n            _trackSendersToPublications: {\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @returns {LocalTrackPublicationSignaling} publication\n     */\n    LocalParticipantSignaling.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n        if (noiseCancellationVendor === void 0) { noiseCancellationVendor = null; }\n        var publication = this._createLocalTrackPublicationSignaling(trackSender, name, priority, noiseCancellationVendor);\n        this._trackSendersToPublications.set(trackSender, publication);\n        this._publicationsToTrackSenders.set(publication, trackSender);\n        _super.prototype.addTrack.call(this, publication);\n        return this;\n    };\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationSignaling}\n     */\n    LocalParticipantSignaling.prototype.getPublication = function (trackSender) {\n        return this._trackSendersToPublications.get(trackSender) || null;\n    };\n    /**\n     * @param {LocalTrackPublicationSignaling} trackPublication\n     * @returns {?DataTrackSender|MediaTrackSender}\n     */\n    LocalParticipantSignaling.prototype.getSender = function (trackPublication) {\n        return this._publicationsToTrackSenders.get(trackPublication) || null;\n    };\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationSignaling}\n     */\n    LocalParticipantSignaling.prototype.removeTrack = function (trackSender) {\n        var publication = this._trackSendersToPublications.get(trackSender);\n        if (!publication) {\n            return null;\n        }\n        this._trackSendersToPublications.delete(trackSender);\n        this._publicationsToTrackSenders.delete(publication);\n        var didDelete = _super.prototype.removeTrack.call(this, publication);\n        if (didDelete) {\n            publication.stop();\n        }\n        return publication;\n    };\n    return LocalParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = LocalParticipantSignaling;\n//# sourceMappingURL=localparticipant.js.map","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @preferred\n * @module common\n */\n/** for typedoc */\nvar predicates_1 = require(\"./predicates\");\nvar hof_1 = require(\"./hof\");\nvar coreservices_1 = require(\"./coreservices\");\nexports.root = (typeof self === 'object' && self.self === self && self) ||\n    (typeof global === 'object' && global.global === global && global) || this;\nvar angular = exports.root.angular || {};\nexports.fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexports.toJson = angular.toJson || JSON.stringify.bind(JSON);\nexports.forEach = angular.forEach || _forEach;\nexports.extend = Object.assign || _extend;\nexports.equals = angular.equals || _equals;\nfunction identity(x) { return x; }\nexports.identity = identity;\nfunction noop() { }\nexports.noop = noop;\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n *   constructor(data) {\n *     // Binds all functions from Foo.prototype to 'this',\n *     // then copies them to 'this'\n *     bindFunctions(Foo.prototype, this, this);\n *     this.data = data;\n *   }\n *\n *   log() {\n *     console.log(this.data);\n *   }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n *   this.data = [3, 4, 5];\n *   this.log = function() {\n *     console.log(this.data);\n *   }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n *   // Binds all functions from SomeService to SomeService,\n *   // then copies them to 'this'\n *   bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nfunction createProxyFunctions(source, target, bind, fnNames, latebind) {\n    if (latebind === void 0) { latebind = false; }\n    var bindFunction = function (fnName) {\n        return source()[fnName].bind(bind());\n    };\n    var makeLateRebindFn = function (fnName) { return function lateRebindFunction() {\n        target[fnName] = bindFunction(fnName);\n        return target[fnName].apply(null, arguments);\n    }; };\n    fnNames = fnNames || Object.keys(source());\n    return fnNames.reduce(function (acc, name) {\n        acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n        return acc;\n    }, target);\n}\nexports.createProxyFunctions = createProxyFunctions;\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexports.inherit = function (parent, extra) {\n    return exports.extend(Object.create(parent), extra);\n};\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexports.inArray = hof_1.curry(_inArray);\nfunction _inArray(array, obj) {\n    return array.indexOf(obj) !== -1;\n}\nexports._inArray = _inArray;\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexports.removeFrom = hof_1.curry(_removeFrom);\nfunction _removeFrom(array, obj) {\n    var idx = array.indexOf(obj);\n    if (idx >= 0)\n        array.splice(idx, 1);\n    return array;\n}\nexports._removeFrom = _removeFrom;\n/** pushes a values to an array and returns the value */\nexports.pushTo = hof_1.curry(_pushTo);\nfunction _pushTo(arr, val) {\n    return (arr.push(val), val);\n}\nexports._pushTo = _pushTo;\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexports.deregAll = function (functions) {\n    return functions.slice().forEach(function (fn) {\n        typeof fn === 'function' && fn();\n        exports.removeFrom(functions, fn);\n    });\n};\n/**\n * Applies a set of defaults to an options object.  The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nfunction defaults(opts) {\n    var defaultsList = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        defaultsList[_i - 1] = arguments[_i];\n    }\n    var _defaultsList = defaultsList.concat({}).reverse();\n    var defaultVals = exports.extend.apply(null, _defaultsList);\n    return exports.extend({}, defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\nexports.defaults = defaults;\n/** Reduce function that merges each element of the list into a single object, using extend */\nexports.mergeR = function (memo, item) { return exports.extend(memo, item); };\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nfunction ancestors(first, second) {\n    var path = [];\n    for (var n in first.path) {\n        if (first.path[n] !== second.path[n])\n            break;\n        path.push(first.path[n]);\n    }\n    return path;\n}\nexports.ancestors = ancestors;\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nfunction pick(obj, propNames) {\n    var objCopy = {};\n    for (var _prop in obj) {\n        if (propNames.indexOf(_prop) !== -1) {\n            objCopy[_prop] = obj[_prop];\n        }\n    }\n    return objCopy;\n}\nexports.pick = pick;\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nfunction omit(obj, propNames) {\n    return Object.keys(obj)\n        .filter(hof_1.not(exports.inArray(propNames)))\n        .reduce(function (acc, key) { return (acc[key] = obj[key], acc); }, {});\n}\nexports.omit = omit;\n/**\n * Maps an array, or object to a property (by name)\n */\nfunction pluck(collection, propName) {\n    return map(collection, hof_1.prop(propName));\n}\nexports.pluck = pluck;\n/** Filters an Array or an Object's properties based on a predicate */\nfunction filter(collection, callback) {\n    var arr = predicates_1.isArray(collection), result = arr ? [] : {};\n    var accept = arr ? function (x) { return result.push(x); } : function (x, key) { return result[key] = x; };\n    exports.forEach(collection, function (item, i) {\n        if (callback(item, i))\n            accept(item, i);\n    });\n    return result;\n}\nexports.filter = filter;\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nfunction find(collection, callback) {\n    var result;\n    exports.forEach(collection, function (item, i) {\n        if (result)\n            return;\n        if (callback(item, i))\n            result = item;\n    });\n    return result;\n}\nexports.find = find;\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexports.mapObj = map;\n/** Maps an array or object properties using a callback function */\nfunction map(collection, callback, target) {\n    target = target || (predicates_1.isArray(collection) ? [] : {});\n    exports.forEach(collection, function (item, i) { return target[i] = callback(item, i); });\n    return target;\n}\nexports.map = map;\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexports.values = function (obj) {\n    return Object.keys(obj).map(function (key) { return obj[key]; });\n};\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexports.allTrueR = function (memo, elem) { return memo && elem; };\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n *  * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexports.anyTrueR = function (memo, elem) { return memo || elem; };\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexports.unnestR = function (memo, elem) { return memo.concat(elem); };\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexports.flattenR = function (memo, elem) {\n    return predicates_1.isArray(elem) ? memo.concat(elem.reduce(exports.flattenR, [])) : pushR(memo, elem);\n};\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nfunction pushR(arr, obj) {\n    arr.push(obj);\n    return arr;\n}\nexports.pushR = pushR;\n/** Reduce function that filters out duplicates */\nexports.uniqR = function (acc, token) {\n    return exports.inArray(acc, token) ? acc : pushR(acc, token);\n};\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexports.unnest = function (arr) { return arr.reduce(exports.unnestR, []); };\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexports.flatten = function (arr) { return arr.reduce(exports.flattenR, []); };\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexports.assertPredicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexports.assertMap = assertFn;\nfunction assertFn(predicateOrMap, errMsg) {\n    if (errMsg === void 0) { errMsg = 'assert failure'; }\n    return function (obj) {\n        var result = predicateOrMap(obj);\n        if (!result) {\n            throw new Error(predicates_1.isFunction(errMsg) ? errMsg(obj) : errMsg);\n        }\n        return result;\n    };\n}\nexports.assertFn = assertFn;\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexports.pairs = function (obj) {\n    return Object.keys(obj).map(function (key) { return [key, obj[key]]; });\n};\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar);       // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz);  // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nfunction arrayTuples() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (args.length === 0)\n        return [];\n    var maxArrayLen = args.reduce(function (min, arr) { return Math.min(arr.length, min); }, 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n    var result = [];\n    var _loop_1 = function (i) {\n        // This is a hot function\n        // Unroll when there are 1-4 arguments\n        switch (args.length) {\n            case 1:\n                result.push([args[0][i]]);\n                break;\n            case 2:\n                result.push([args[0][i], args[1][i]]);\n                break;\n            case 3:\n                result.push([args[0][i], args[1][i], args[2][i]]);\n                break;\n            case 4:\n                result.push([args[0][i], args[1][i], args[2][i], args[3][i]]);\n                break;\n            default:\n                result.push(args.map(function (array) { return array[i]; }));\n                break;\n        }\n    };\n    for (var i = 0; i < maxArrayLen; i++) {\n        _loop_1(i);\n    }\n    return result;\n}\nexports.arrayTuples = arrayTuples;\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nfunction applyPairs(memo, keyValTuple) {\n    var key, value;\n    if (predicates_1.isArray(keyValTuple))\n        key = keyValTuple[0], value = keyValTuple[1];\n    if (!predicates_1.isString(key))\n        throw new Error('invalid parameters to applyPairs');\n    memo[key] = value;\n    return memo;\n}\nexports.applyPairs = applyPairs;\n/** Get the last element of an array */\nfunction tail(arr) {\n    return arr.length && arr[arr.length - 1] || undefined;\n}\nexports.tail = tail;\n/**\n * shallow copy from src to dest\n */\nfunction copy(src, dest) {\n    if (dest)\n        Object.keys(dest).forEach(function (key) { return delete dest[key]; });\n    if (!dest)\n        dest = {};\n    return exports.extend(dest, src);\n}\nexports.copy = copy;\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj, cb, _this) {\n    if (predicates_1.isArray(obj))\n        return obj.forEach(cb, _this);\n    Object.keys(obj).forEach(function (key) { return cb(obj[key], key); });\n}\nfunction _extend(toObj) {\n    for (var i = 1; i < arguments.length; i++) {\n        var obj = arguments[i];\n        if (!obj)\n            continue;\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; j++) {\n            toObj[keys[j]] = obj[keys[j]];\n        }\n    }\n    return toObj;\n}\nexports._extend = _extend;\nfunction _equals(o1, o2) {\n    if (o1 === o2)\n        return true;\n    if (o1 === null || o2 === null)\n        return false;\n    if (o1 !== o1 && o2 !== o2)\n        return true; // NaN === NaN\n    var t1 = typeof o1, t2 = typeof o2;\n    if (t1 !== t2 || t1 !== 'object')\n        return false;\n    var tup = [o1, o2];\n    if (hof_1.all(predicates_1.isArray)(tup))\n        return _arraysEq(o1, o2);\n    if (hof_1.all(predicates_1.isDate)(tup))\n        return o1.getTime() === o2.getTime();\n    if (hof_1.all(predicates_1.isRegExp)(tup))\n        return o1.toString() === o2.toString();\n    if (hof_1.all(predicates_1.isFunction)(tup))\n        return true; // meh\n    var predicates = [predicates_1.isFunction, predicates_1.isArray, predicates_1.isDate, predicates_1.isRegExp];\n    if (predicates.map(hof_1.any).reduce(function (b, fn) { return b || !!fn(tup); }, false))\n        return false;\n    var keys = {};\n    for (var key in o1) {\n        if (!_equals(o1[key], o2[key]))\n            return false;\n        keys[key] = true;\n    }\n    for (var key in o2) {\n        if (!keys[key])\n            return false;\n    }\n    return true;\n}\nfunction _arraysEq(a1, a2) {\n    if (a1.length !== a2.length)\n        return false;\n    return arrayTuples(a1, a2).reduce(function (b, t) { return b && _equals(t[0], t[1]); }, true);\n}\n// issue #2676\nexports.silenceUncaughtInPromise = function (promise) {\n    return promise.catch(function (e) { return 0; }) && promise;\n};\nexports.silentRejection = function (error) {\n    return exports.silenceUncaughtInPromise(coreservices_1.services.$q.reject(error));\n};\n//# sourceMappingURL=common.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar TabContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"as\", \"className\"]);\n\n  var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'tab-content');\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, decoratedBsPrefix)\n  }));\n});\nexport default TabContent;","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar VideoTrack = require('./videotrack');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar NullObserver = require('../../util/nullobserver.js').NullObserver;\nvar Timeout = require('../../util/timeout');\nvar RemoteMediaVideoTrack = mixinRemoteMediaTrack(VideoTrack);\nvar TRACK_TURN_OF_DELAY_MS = 50;\n/**\n * A {@link RemoteVideoTrack} represents a {@link VideoTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends VideoTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteVideoTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteVideoTrack}\n * @emits RemoteVideoTrack#dimensionsChanged\n * @emits RemoteVideoTrack#disabled\n * @emits RemoteVideoTrack#enabled\n * @emits RemoteVideoTrack#started\n * @emits RemoteVideoTrack#switchedOff\n * @emits RemoteVideoTrack#switchedOn\n */\nvar RemoteVideoTrack = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrack, _super);\n    /**\n     * Construct a {@link RemoteVideoTrack}.\n     * @param {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n     * @param {MediaTrackReceiver} mediaTrackReceiver - A video MediaStreamTrack container\n     * @param {boolean} isEnabled - whether the {@link RemoteVideoTrack} is enabled\n     * @param {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n     * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n     *  {@link Track.Priority} of the {@link RemoteVideoTrack}\n     * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n     * @param {{log: Log}} options - The {@link RemoteTrack} options\n     */\n    function RemoteVideoTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n        var _this = this;\n        options = Object.assign({\n            clientTrackSwitchOffControl: 'auto',\n            contentPreferencesMode: 'auto',\n            enableDocumentVisibilityTurnOff: true,\n        }, options);\n        options = Object.assign({\n            IntersectionObserver: typeof IntersectionObserver === 'undefined' || options.clientTrackSwitchOffControl !== 'auto' ? NullObserver : IntersectionObserver,\n            ResizeObserver: typeof ResizeObserver === 'undefined' || options.contentPreferencesMode !== 'auto' ? NullObserver : ResizeObserver,\n        }, options);\n        _this = _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n        Object.defineProperties(_this, {\n            _enableDocumentVisibilityTurnOff: {\n                value: options.enableDocumentVisibilityTurnOff === true && options.clientTrackSwitchOffControl === 'auto',\n            },\n            _documentVisibilityTurnOffCleanup: {\n                value: null,\n                writable: true\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl,\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode,\n            },\n            _invisibleElements: {\n                value: new WeakSet(),\n            },\n            _elToPipCallbacks: {\n                value: new WeakMap(),\n            },\n            _elToPipWindows: {\n                value: new WeakMap(),\n            },\n            _turnOffTimer: {\n                value: new Timeout(function () {\n                    _this._setRenderHint({ enabled: false });\n                }, TRACK_TURN_OF_DELAY_MS, false),\n            },\n            _resizeObserver: {\n                value: new options.ResizeObserver(function (entries) {\n                    // NOTE(mpatwardhan): we ignore elements in _invisibleElements\n                    // to ensure that ResizeObserver does not end-up turning off a track when a fresh Video element is\n                    // attached and IntersectionObserver has not had its callback executed yet.\n                    var visibleElementResized = entries.find(function (entry) { return !_this._invisibleElements.has(entry.target); });\n                    if (visibleElementResized) {\n                        maybeUpdateDimensionHint(_this);\n                    }\n                })\n            },\n            _intersectionObserver: {\n                value: new options.IntersectionObserver(function (entries) {\n                    var shouldSetRenderHint = false;\n                    entries.forEach(function (entry) {\n                        var wasVisible = !_this._invisibleElements.has(entry.target);\n                        if (wasVisible !== entry.isIntersecting) {\n                            if (entry.isIntersecting) {\n                                _this._log.debug('intersectionObserver detected: Off => On');\n                                _this._invisibleElements.delete(entry.target);\n                            }\n                            else {\n                                _this._log.debug('intersectionObserver detected: On => Off');\n                                _this._invisibleElements.add(entry.target);\n                            }\n                            shouldSetRenderHint = true;\n                        }\n                    });\n                    if (shouldSetRenderHint) {\n                        maybeUpdateEnabledHint(_this);\n                        // when visibility of an element changes that may cause the \"biggest\" element to change,\n                        // update dimensions as well. since dimensions are cached and de-duped at signaling layer,\n                        // its okay if they got  resent.\n                        maybeUpdateDimensionHint(_this);\n                    }\n                }, { threshold: 0.25 })\n            },\n        });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    RemoteVideoTrack.prototype._start = function (dummyEl) {\n        var result = _super.prototype._start.call(this, dummyEl);\n        // NOTE(mpatwardhan): after emitting started, update turn off track if not visible.\n        maybeUpdateEnabledHint(this);\n        return result;\n    };\n    /**\n     * Request to switch on a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n     * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.switchOn = function () {\n        if (this._clientTrackSwitchOffControl !== 'manual') {\n            throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n        }\n        this._setRenderHint({ enabled: true });\n        return this;\n    };\n    /**\n     * Request to switch off a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n     * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.switchOff = function () {\n        if (this._clientTrackSwitchOffControl !== 'manual') {\n            throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n        }\n        this._setRenderHint({ enabled: false });\n        return this;\n    };\n    /**\n     * Set the {@link RemoteVideoTrack}'s content preferences. This method is applicable only for the group rooms and only when connected with\n     * videoContentPreferencesMode in video bandwidth profile options set to 'manual'\n     * @param {VideoContentPreferences} contentPreferences - requested preferences.\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.setContentPreferences = function (contentPreferences) {\n        if (this._contentPreferencesMode !== 'manual') {\n            throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to \"manual\"');\n        }\n        if (contentPreferences.renderDimensions) {\n            this._setRenderHint({ renderDimensions: contentPreferences.renderDimensions });\n        }\n        return this;\n    };\n    RemoteVideoTrack.prototype._unObservePip = function (el) {\n        var pipCallbacks = this._elToPipCallbacks.get(el);\n        if (pipCallbacks) {\n            el.removeEventListener('enterpictureinpicture', pipCallbacks.onEnterPip);\n            el.removeEventListener('leavepictureinpicture', pipCallbacks.onLeavePip);\n            this._elToPipCallbacks.delete(el);\n        }\n    };\n    RemoteVideoTrack.prototype._observePip = function (el) {\n        var _this = this;\n        var pipCallbacks = this._elToPipCallbacks.get(el);\n        if (!pipCallbacks) {\n            var onEnterPip = function (event) { return _this._onEnterPip(event, el); };\n            var onLeavePip = function (event) { return _this._onLeavePip(event, el); };\n            var onResizePip = function (event) { return _this._onResizePip(event, el); };\n            el.addEventListener('enterpictureinpicture', onEnterPip);\n            el.addEventListener('leavepictureinpicture', onLeavePip);\n            this._elToPipCallbacks.set(el, { onEnterPip: onEnterPip, onLeavePip: onLeavePip, onResizePip: onResizePip });\n        }\n    };\n    RemoteVideoTrack.prototype._onEnterPip = function (event, videoEl) {\n        this._log.debug('onEnterPip');\n        var pipWindow = event.pictureInPictureWindow;\n        this._elToPipWindows.set(videoEl, pipWindow);\n        var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n        pipWindow.addEventListener('resize', onResizePip);\n        maybeUpdateEnabledHint(this);\n    };\n    RemoteVideoTrack.prototype._onLeavePip = function (event, videoEl) {\n        this._log.debug('onLeavePip');\n        this._elToPipWindows.delete(videoEl);\n        var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n        var pipWindow = event.pictureInPictureWindow;\n        pipWindow.removeEventListener('resize', onResizePip);\n        maybeUpdateEnabledHint(this);\n    };\n    RemoteVideoTrack.prototype._onResizePip = function () {\n        maybeUpdateDimensionHint(this);\n    };\n    RemoteVideoTrack.prototype.attach = function (el) {\n        var result = _super.prototype.attach.call(this, el);\n        if (this._clientTrackSwitchOffControl === 'auto') {\n            // start off the element as invisible. will mark it\n            // visible (and update render hints) once intersection observer calls back.\n            this._invisibleElements.add(result);\n        }\n        this._intersectionObserver.observe(result);\n        this._resizeObserver.observe(result);\n        if (this._enableDocumentVisibilityTurnOff) {\n            this._documentVisibilityTurnOffCleanup = this._documentVisibilityTurnOffCleanup || setupDocumentVisibilityTurnOff(this);\n        }\n        this._observePip(result);\n        return result;\n    };\n    RemoteVideoTrack.prototype.detach = function (el) {\n        var _this = this;\n        var result = _super.prototype.detach.call(this, el);\n        var elements = Array.isArray(result) ? result : [result];\n        elements.forEach(function (element) {\n            _this._intersectionObserver.unobserve(element);\n            _this._resizeObserver.unobserve(element);\n            _this._invisibleElements.delete(element);\n            _this._unObservePip(element);\n        });\n        if (this._attachments.size === 0) {\n            if (this._documentVisibilityTurnOffCleanup) {\n                this._documentVisibilityTurnOffCleanup();\n                this._documentVisibilityTurnOffCleanup = null;\n            }\n        }\n        maybeUpdateEnabledHint(this);\n        maybeUpdateDimensionHint(this);\n        return result;\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * When a Participant un-publishes and re-publishes a VideoTrack, a new RemoteVideoTrack is created and\n     * any VideoProcessors attached to the previous RemoteVideoTrack would have to be re-added again.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const grayscaleProcessor = new GrayScaleProcessor(100);\n     *\n     * Array.from(room.participants.values()).forEach(participant => {\n     *   const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *   remoteVideoTrack.addProcessor(grayscaleProcessor);\n     * });\n     */\n    RemoteVideoTrack.prototype.addProcessor = function () {\n        return _super.prototype.addProcessor.apply(this, arguments);\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const grayscaleProcessor = new GrayScaleProcessor(100);\n     *\n     * Array.from(room.participants.values()).forEach(participant => {\n     *   const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *   remoteVideoTrack.addProcessor(grayscaleProcessor);\n     * });\n     *\n     * document.getElementById('remove-button').onclick = () => {\n     *   Array.from(room.participants.values()).forEach(participant => {\n     *     const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *     remoteVideoTrack.removeProcessor(grayscaleProcessor);\n     *   });\n     * }\n     */\n    RemoteVideoTrack.prototype.removeProcessor = function () {\n        return _super.prototype.removeProcessor.apply(this, arguments);\n    };\n    RemoteVideoTrack.prototype.toString = function () {\n        return \"[RemoteVideoTrack #\" + this._instanceId + \": \" + this.sid + \"]\";\n    };\n    /**\n     * Update the subscribe {@link Track.Priority} of the {@link RemoteVideoTrack}.\n     * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n     *   If <code>null</code>, then the subscribe {@link Track.Priority} is cleared, which\n     *   means the {@link Track.Priority} set by the publisher is now the effective priority.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteVideoTrack.prototype.setPriority = function (priority) {\n        return _super.prototype.setPriority.call(this, priority);\n    };\n    return RemoteVideoTrack;\n}(RemoteMediaVideoTrack));\nfunction setupDocumentVisibilityTurnOff(removeVideoTrack) {\n    function onVisibilityChanged() {\n        maybeUpdateEnabledHint(removeVideoTrack);\n    }\n    documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChanged);\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChanged);\n    };\n}\nfunction maybeUpdateEnabledHint(remoteVideoTrack) {\n    if (remoteVideoTrack._clientTrackSwitchOffControl !== 'auto') {\n        return;\n    }\n    var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n    var pipWindows = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return remoteVideoTrack._elToPipWindows.has(el); });\n    // even when document is invisible we may have track playing in pip window.\n    var enabled = pipWindows.length > 0 || (document.visibilityState === 'visible' && visibleElements.length > 0);\n    if (enabled === true) {\n        remoteVideoTrack._turnOffTimer.clear();\n        remoteVideoTrack._setRenderHint({ enabled: true });\n    }\n    else if (!remoteVideoTrack._turnOffTimer.isSet) {\n        // set the track to be turned off after some delay.\n        remoteVideoTrack._turnOffTimer.start();\n    }\n}\nfunction maybeUpdateDimensionHint(remoteVideoTrack) {\n    if (remoteVideoTrack._contentPreferencesMode !== 'auto') {\n        return;\n    }\n    var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n    var pipElements = remoteVideoTrack._getAllAttachedElements().map(function (el) {\n        var pipWindow = remoteVideoTrack._elToPipWindows.get(el);\n        return pipWindow ? { clientHeight: pipWindow.height, clientWidth: pipWindow.width } : { clientHeight: 0, clientWidth: 0 };\n    });\n    var totalElements = visibleElements.concat(pipElements);\n    if (totalElements.length > 0) {\n        var _a = __read(totalElements.sort(function (el1, el2) {\n            return el2.clientHeight + el2.clientWidth - el1.clientHeight - el1.clientWidth - 1;\n        }), 1), _b = _a[0], clientHeight = _b.clientHeight, clientWidth = _b.clientWidth;\n        var renderDimensions = { height: clientHeight, width: clientWidth };\n        remoteVideoTrack._setRenderHint({ renderDimensions: renderDimensions });\n    }\n}\n/**\n * @typedef {object} VideoContentPreferences\n * @property {VideoTrack.Dimensions} [renderDimensions] - Render Dimensions to request for the {@link RemoteVideoTrack}.\n */\n/**\n * The {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose\n *   dimensions changed\n * @event RemoteVideoTrack#dimensionsChanged\n */\n/**\n * The {@link RemoteVideoTrack} was disabled, i.e. \"paused\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   disabled\n * @event RemoteVideoTrack#disabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled, i.e. \"resumed\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   enabled\n * @event RemoteVideoTrack#enabled\n */\n/**\n * The {@link RemoteVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that started\n * @event RemoteVideoTrack#started\n */\n/**\n * A {@link RemoteVideoTrack} was switched off.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   switched off\n * @event RemoteVideoTrack#switchedOff\n */\n/**\n * A {@link RemoteVideoTrack} was switched on.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   switched on\n * @event RemoteVideoTrack#switchedOn\n */\nmodule.exports = RemoteVideoTrack;\n//# sourceMappingURL=remotevideotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RecordingSignaling = require('../recording');\n/**\n * @extends RecordingSignaling\n */\nvar RecordingV2 = /** @class */ (function (_super) {\n    __extends(RecordingV2, _super);\n    /**\n     * Construct a {@link RecordingV2}.\n     */\n    function RecordingV2() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _revision: {\n                value: 1,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Compare the {@link RecordingV2} to a {@link RecordingV2#Representation}\n     * of itself and perform any updates necessary.\n     * @param {RecordingV2#Representation} recording\n     * @returns {this}\n     * @fires RecordingSignaling#updated\n     */\n    RecordingV2.prototype.update = function (recording) {\n        if (recording.revision < this._revision) {\n            return this;\n        }\n        this._revision = recording.revision;\n        return this.enable(recording.is_recording);\n    };\n    return RecordingV2;\n}(RecordingSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RecordingV2}\n * @typedef {object} RecordingV2#Representation\n * @property {boolean} enabled\n * @property {number} revision\n */\nmodule.exports = RecordingV2;\n//# sourceMappingURL=recording.js.map","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar EventEmitter = require('events');\nvar PeerConnectionReportFactory = require('../../stats/peerconnectionreportfactory');\n/**\n * @emits NetworkQualityMonitor#updated\n */\nvar NetworkQualityMonitor = /** @class */ (function (_super) {\n    __extends(NetworkQualityMonitor, _super);\n    /**\n     * Construct a {@link NetworkQualityMonitor}.\n     * @param {PeerConnectionManager} manager\n     * @param {NetworkQualitySignaling} signaling\n     */\n    function NetworkQualityMonitor(manager, signaling) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _factories: {\n                value: new WeakMap()\n            },\n            _manager: {\n                value: manager\n            },\n            _signaling: {\n                value: signaling\n            }\n        });\n        signaling.on('updated', function () { return _this.emit('updated'); });\n        return _this;\n    }\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"level\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} level - initially null\n         */\n        get: function () {\n            return this._signaling.level;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"levels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels}, if any.\n         * @returns {?NetworkQualityLevels} levels - initially null\n         */\n        get: function () {\n            return this._signaling.levels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"remoteLevels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n         * @returns {Map<String, NetworkQualityLevels>} remoteLevels\n         */\n        get: function () {\n            return this._signaling.remoteLevels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Start monitoring.\n     * @returns {void}\n     */\n    NetworkQualityMonitor.prototype.start = function () {\n        var _this = this;\n        this.stop();\n        var timeout = setTimeout(function () {\n            if (_this._timeout !== timeout) {\n                return;\n            }\n            next(_this).then(function (reports) {\n                if (_this._timeout !== timeout) {\n                    return;\n                }\n                if (reports.length) {\n                    var _a = __read(reports, 1), report = _a[0];\n                    _this._signaling.put(report);\n                }\n                _this.start();\n            });\n        }, 200);\n        this._timeout = timeout;\n    };\n    /**\n     * Stop monitoring.\n     * @returns {void}\n     */\n    NetworkQualityMonitor.prototype.stop = function () {\n        clearTimeout(this._timeout);\n        this._timeout = null;\n    };\n    return NetworkQualityMonitor;\n}(EventEmitter));\n/**\n * @param {NetworkQualityMonitor}\n * @returns {Promise<NetworkQualityInputs>}\n */\nfunction next(monitor) {\n    var pcv2s = monitor._manager._peerConnections\n        ? Array.from(monitor._manager._peerConnections.values())\n        : [];\n    var pcs = pcv2s\n        .map(function (pcv2) { return pcv2._peerConnection; })\n        .filter(function (pc) { return pc.signalingState !== 'closed'; });\n    var factories = pcs.map(function (pc) {\n        if (monitor._factories.has(pc)) {\n            return monitor._factories.get(pc);\n        }\n        var factory = new PeerConnectionReportFactory(pc);\n        monitor._factories.set(pc, factory);\n        return factory;\n    });\n    var reportsOrNullPromises = factories.map(function (factory) { return factory.next().catch(function () { return null; }); });\n    return Promise.all(reportsOrNullPromises).then(function (reportsOrNull) { return reportsOrNull\n        .filter(function (reportOrNull) { return reportOrNull; })\n        .map(function (report) { return report.summarize(); }); });\n}\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualityMonitor#updated\n */\nmodule.exports = NetworkQualityMonitor;\n//# sourceMappingURL=networkqualitymonitor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pipeline = exports.ImageFit = exports.WebGL2PipelineType = void 0;\n/**\n * @private\n */\nvar WebGL2PipelineType;\n(function (WebGL2PipelineType) {\n    WebGL2PipelineType[\"Blur\"] = \"blur\";\n    WebGL2PipelineType[\"Image\"] = \"image\";\n})(WebGL2PipelineType || (exports.WebGL2PipelineType = WebGL2PipelineType = {}));\n/**\n * ImageFit specifies the positioning of an image inside a viewport.\n */\nvar ImageFit;\n(function (ImageFit) {\n    /**\n     * Scale the image up or down to fill the viewport while preserving the aspect ratio.\n     * The image will be fully visible but will add empty space in the viewport if\n     * aspect ratios do not match.\n     */\n    ImageFit[\"Contain\"] = \"Contain\";\n    /**\n     * Scale the image to fill both height and width of the viewport while preserving\n     * the aspect ratio, but will crop the image if aspect ratios do not match.\n     */\n    ImageFit[\"Cover\"] = \"Cover\";\n    /**\n     * Stretches the image to fill the viewport regardless of aspect ratio.\n     */\n    ImageFit[\"Fill\"] = \"Fill\";\n    /**\n     * Ignore height and width and use the original size.\n     */\n    ImageFit[\"None\"] = \"None\";\n})(ImageFit || (exports.ImageFit = ImageFit = {}));\n/**\n * Specifies which pipeline to use when processing video frames.\n */\nvar Pipeline;\n(function (Pipeline) {\n    /**\n     * Use canvas 2d rendering context. Some browsers such as Safari do not\n     * have full support of this feature. Please test your application to make sure it works as intented. See\n     * [browser compatibility page](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#browser_compatibility)\n     * for reference.\n     */\n    Pipeline[\"Canvas2D\"] = \"Canvas2D\";\n    /**\n     * Use canvas webgl2 rendering context. Major browsers have support for this feature. However, this does not work\n     * on some older versions of browsers. Please test your application to make sure it works as intented. See\n     * [browser compatibility page](https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext#browser_compatibility)\n     * for reference.\n     */\n    Pipeline[\"WebGL2\"] = \"WebGL2\";\n})(Pipeline || (exports.Pipeline = Pipeline = {}));\n//# sourceMappingURL=types.js.map","'use strict';\n\nvar _passiveEvents = require('./passiveEvents');\n\nvar _passiveEvents2 = _interopRequireDefault(_passiveEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Reliable `window` and `document` detection\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Check `document` and `window` in case of server-side rendering\n/* eslint-disable */\n/**\n* Detect Element Resize.\n* Forked in order to guard against unsafe 'window' and 'document' references.\n*\n* https://github.com/sdecima/javascript-detect-element-resize\n* Sebastian Decima\n*\n* version: 0.5.3\n**/\n\nvar _window;\nif (canUseDOM) {\n  _window = window;\n} else if (typeof self !== 'undefined') {\n  _window = self;\n} else {\n  _window = undefined;\n}\n\nvar attachEvent = typeof document !== 'undefined' && document.attachEvent;\nvar stylesCreated = false;\n\nif (canUseDOM && !attachEvent) {\n  var requestFrame = function () {\n    var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n      return _window.setTimeout(fn, 20);\n    };\n    return function (fn) {\n      return raf(fn);\n    };\n  }();\n\n  var cancelFrame = function () {\n    var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n    return function (id) {\n      return cancel(id);\n    };\n  }();\n\n  var resetTriggers = function resetTriggers(element) {\n    var triggers = element.__resizeTriggers__,\n        expand = triggers.firstElementChild,\n        contract = triggers.lastElementChild,\n        expandChild = expand.firstElementChild;\n    contract.scrollLeft = contract.scrollWidth;\n    contract.scrollTop = contract.scrollHeight;\n    expandChild.style.width = expand.offsetWidth + 1 + 'px';\n    expandChild.style.height = expand.offsetHeight + 1 + 'px';\n    expand.scrollLeft = expand.scrollWidth;\n    expand.scrollTop = expand.scrollHeight;\n  };\n\n  var checkTriggers = function checkTriggers(element) {\n    return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n  };\n\n  var scrollListener = function scrollListener(e) {\n    var element = this;\n    resetTriggers(this);\n    if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);\n    this.__resizeRAF__ = requestFrame(function () {\n      if (checkTriggers(element)) {\n        element.__resizeLast__.width = element.offsetWidth;\n        element.__resizeLast__.height = element.offsetHeight;\n        element.__resizeListeners__.forEach(function (fn) {\n          fn.call(element, e);\n        });\n      }\n    });\n  };\n\n  /* Detect CSS Animations support to detect element display/re-attach */\n  var animation = false,\n      animationstring = 'animation',\n      keyframeprefix = '',\n      animationstartevent = 'animationstart',\n      domPrefixes = 'Webkit Moz O ms'.split(' '),\n      startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n      pfx = '';\n\n  if (canUseDOM) {\n    var elm = document.createElement('fakeelement');\n    if (elm.style.animationName !== undefined) {\n      animation = true;\n    }\n\n    if (animation === false) {\n      for (var i = 0; i < domPrefixes.length; i++) {\n        if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n          pfx = domPrefixes[i];\n          animationstring = pfx + 'Animation';\n          keyframeprefix = '-' + pfx.toLowerCase() + '-';\n          animationstartevent = startEvents[i];\n          animation = true;\n          break;\n        }\n      }\n    }\n  }\n\n  var animationName = 'resizeanim';\n  var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n  var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n}\n\nvar createStyles = function createStyles() {\n  if (!stylesCreated) {\n    //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n    var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n        head = document.head || document.getElementsByTagName('head')[0],\n        style = document.createElement('style');\n\n    style.type = 'text/css';\n    if (style.styleSheet) {\n      style.styleSheet.cssText = css;\n    } else {\n      style.appendChild(document.createTextNode(css));\n    }\n\n    head.appendChild(style);\n    stylesCreated = true;\n  }\n};\n\nvar addResizeListener = function addResizeListener(element, fn) {\n  if (element.parentNode === undefined) {\n    var tempParentDiv = document.createElement('div');\n    element.parentNode = tempParentDiv;\n  }\n  element = element.parentNode;\n  if (attachEvent) element.attachEvent('onresize', fn);else {\n    if (!element.__resizeTriggers__) {\n      if (getComputedStyle(element).position == 'static') element.style.position = 'relative';\n      createStyles();\n      element.__resizeLast__ = {};\n      element.__resizeListeners__ = [];\n      (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';\n      element.__resizeTriggers__.innerHTML = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n      element.appendChild(element.__resizeTriggers__);\n      resetTriggers(element);\n\n      (0, _passiveEvents2.default)(element, 'scroll', scrollListener, true);\n\n      /* Listen for a css animation to detect element display/re-attach */\n      animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {\n        if (e.animationName == animationName) resetTriggers(element);\n      });\n    }\n    element.__resizeListeners__.push(fn);\n  }\n};\n\nvar removeResizeListener = function removeResizeListener(element, fn) {\n  element = element.parentNode;\n  if (attachEvent) element.detachEvent('onresize', fn);else {\n    element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n    if (!element.__resizeListeners__.length) {\n      element.removeEventListener('scroll', scrollListener);\n      element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n    }\n  }\n};\n\nmodule.exports = {\n  addResizeListener: addResizeListener,\n  removeResizeListener: removeResizeListener\n};","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nexport default basePickBy;\n","'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.notImplemented = function (fnname) { return function () {\n    throw new Error(fnname + \"(): No coreservices implementation for UI-Router is loaded.\");\n}; };\nvar services = {\n    $q: undefined,\n    $injector: undefined,\n};\nexports.services = services;\n//# sourceMappingURL=coreservices.js.map","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone:\n                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                    '_'\n                ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlagsDetection = require('../internals/regexp-flags-detection');\nvar regExpFlagsGetterImplementation = require('../internals/regexp-flags');\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (DESCRIPTORS && !regExpFlagsDetection.correct) {\n  defineBuiltInAccessor(RegExp.prototype, 'flags', {\n    configurable: true,\n    get: regExpFlagsGetterImplementation\n  });\n\n  regExpFlagsDetection.correct = true;\n}\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays:\n            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n  fontsize: function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  }\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      split = _ref.split,\n      className = _ref.className,\n      childBsPrefix = _ref.childBsPrefix,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? Button : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"split\", \"className\", \"childBsPrefix\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n  if (childBsPrefix !== undefined) {\n    props.bsPrefix = childBsPrefix;\n  }\n\n  var _useDropdownToggle = useDropdownToggle(),\n      toggleProps = _useDropdownToggle[0],\n      toggle = _useDropdownToggle[1].toggle;\n\n  toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n  // underlying component, to allow it to render size and style variants.\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    onClick: toggle,\n    className: classNames(className, prefix, split && prefix + \"-split\")\n  }, toggleProps, props));\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WASM_INFERENCE_DIMENSIONS = exports.TFLITE_WORKER_NAME = exports.TFLITE_SIMD_LOADER_NAME = exports.TFLITE_LOADER_NAME = exports.MODEL_NAME = exports.MASK_BLUR_RADIUS = exports.BLUR_FILTER_RADIUS = void 0;\nexports.BLUR_FILTER_RADIUS = 15;\nexports.MASK_BLUR_RADIUS = 8;\nexports.MODEL_NAME = 'selfie_segmentation_landscape.tflite';\nexports.TFLITE_LOADER_NAME = 'tflite-1-0-0.js';\nexports.TFLITE_SIMD_LOADER_NAME = 'tflite-simd-1-0-0.js';\nexports.TFLITE_WORKER_NAME = 'tflite-worker.js';\nexports.WASM_INFERENCE_DIMENSIONS = {\n    width: 256,\n    height: 144,\n};\n//# sourceMappingURL=constants.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n\tvalue: true\n});\n\nvar _configuration = require('./configuration');\n\nexports['default'] = {\n\tget: _configuration.get,\n\tset: _configuration.set,\n\tserialize: _configuration.serialize\n};\nmodule.exports = exports['default'];","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.es/ecma262/#sec-flattenintoarray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        doesNotExceedSafeInteger(targetIndex + 1);\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","/* global RTCIceCandidate */\n'use strict';\nif (typeof RTCIceCandidate === 'function') {\n    module.exports = RTCIceCandidate;\n}\nelse {\n    module.exports = function RTCIceCandidate() {\n        throw new Error('RTCIceCandidate is not supported');\n    };\n}\n//# sourceMappingURL=rtcicecandidate.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar $RangeError = RangeError;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar nativeDateToISOString = DatePrototype.toISOString;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar getUTCDate = uncurryThis(DatePrototype.getUTCDate);\nvar getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);\nvar getUTCHours = uncurryThis(DatePrototype.getUTCHours);\nvar getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);\nvar getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);\nvar getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);\nvar getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n  return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!$isFinite(thisTimeValue(this))) throw new $RangeError('Invalid time value');\n  var date = this;\n  var year = getUTCFullYear(date);\n  var milliseconds = getUTCMilliseconds(date);\n  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n  return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +\n    '-' + padStart(getUTCDate(date), 2, 0) +\n    'T' + padStart(getUTCHours(date), 2, 0) +\n    ':' + padStart(getUTCMinutes(date), 2, 0) +\n    ':' + padStart(getUTCSeconds(date), 2, 0) +\n    '.' + padStart(milliseconds, 3, 0) +\n    'Z';\n} : nativeDateToISOString;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  vertical: false,\n  toggle: false,\n  role: 'group'\n};\nvar ButtonGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      size = _ref.size,\n      toggle = _ref.toggle,\n      vertical = _ref.vertical,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n  var baseClass = prefix;\n  if (vertical) baseClass = prefix + \"-vertical\";\n  return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    className: classNames(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\")\n  }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","(function (root, factory) {\n  'use strict';\n\n  if (typeof define === 'function' && define.amd) {\n    define(['angular'], factory);\n  } else if (root.hasOwnProperty('angular')) {\n    // Browser globals (root is window), we don't register it.\n    factory(root.angular);\n  } else if (typeof exports === 'object') {\n    module.exports = factory(require('angular'));\n  }\n}(this , function (angular) {\n    'use strict';\n\n    // In cases where Angular does not get passed or angular is a truthy value\n    // but misses .module we can fall back to using window.\n    angular = (angular && angular.module ) ? angular : window.angular;\n\n\n    function isStorageSupported($window, storageType) {\n\n      // Some installations of IE, for an unknown reason, throw \"SCRIPT5: Error: Access is denied\"\n      // when accessing window.localStorage. This happens before you try to do anything with it. Catch\n      // that error and allow execution to continue.\n\n      // fix 'SecurityError: DOM Exception 18' exception in Desktop Safari, Mobile Safari\n      // when \"Block cookies\": \"Always block\" is turned on\n      var supported;\n      try {\n        supported = $window[storageType];\n      }\n      catch(err) {\n        supported = false;\n      }\n\n      // When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage and sessionStorage\n      // is available, but trying to call .setItem throws an exception below:\n      // \"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota.\"\n      if(supported) {\n        var key = '__' + Math.round(Math.random() * 1e7);\n        try {\n          $window[storageType].setItem(key, key);\n          $window[storageType].removeItem(key, key);\n        }\n        catch(err) {\n          supported = false;\n        }\n      }\n\n      return supported;\n    }\n\n    /**\n     * @ngdoc overview\n     * @name ngStorage\n     */\n\n    return angular.module('ngStorage', [])\n\n    /**\n     * @ngdoc object\n     * @name ngStorage.$localStorage\n     * @requires $rootScope\n     * @requires $window\n     */\n\n    .provider('$localStorage', _storageProvider('localStorage'))\n\n    /**\n     * @ngdoc object\n     * @name ngStorage.$sessionStorage\n     * @requires $rootScope\n     * @requires $window\n     */\n\n    .provider('$sessionStorage', _storageProvider('sessionStorage'));\n\n    function _storageProvider(storageType) {\n        var providerWebStorage = isStorageSupported(window, storageType);\n\n        return function () {\n          var storageKeyPrefix = 'ngStorage-';\n\n          this.setKeyPrefix = function (prefix) {\n            if (typeof prefix !== 'string') {\n              throw new TypeError('[ngStorage] - ' + storageType + 'Provider.setKeyPrefix() expects a String.');\n            }\n            storageKeyPrefix = prefix;\n          };\n\n          var serializer = angular.toJson;\n          var deserializer = angular.fromJson;\n\n          this.setSerializer = function (s) {\n            if (typeof s !== 'function') {\n              throw new TypeError('[ngStorage] - ' + storageType + 'Provider.setSerializer expects a function.');\n            }\n\n            serializer = s;\n          };\n\n          this.setDeserializer = function (d) {\n            if (typeof d !== 'function') {\n              throw new TypeError('[ngStorage] - ' + storageType + 'Provider.setDeserializer expects a function.');\n            }\n\n            deserializer = d;\n          };\n\n          this.supported = function() {\n            return !!providerWebStorage;\n          };\n\n          // Note: This is not very elegant at all.\n          this.get = function (key) {\n            return providerWebStorage && deserializer(providerWebStorage.getItem(storageKeyPrefix + key));\n          };\n\n          // Note: This is not very elegant at all.\n          this.set = function (key, value) {\n            return providerWebStorage && providerWebStorage.setItem(storageKeyPrefix + key, serializer(value));\n          };\n\n          this.remove = function (key) {\n            providerWebStorage && providerWebStorage.removeItem(storageKeyPrefix + key);\n          }\n\n          this.$get = [\n              '$rootScope',\n              '$window',\n              '$log',\n              '$timeout',\n              '$document',\n\n              function(\n                  $rootScope,\n                  $window,\n                  $log,\n                  $timeout,\n                  $document\n              ){\n\n                // The magic number 10 is used which only works for some keyPrefixes...\n                // See https://github.com/gsklee/ngStorage/issues/137\n                var prefixLength = storageKeyPrefix.length;\n\n                // #9: Assign a placeholder object if Web Storage is unavailable to prevent breaking the entire AngularJS app\n                // Note: recheck mainly for testing (so we can use $window[storageType] rather than window[storageType])\n                var isSupported = isStorageSupported($window, storageType),\n                    webStorage = isSupported || ($log.warn('This browser does not support Web Storage!'), {setItem: angular.noop, getItem: angular.noop, removeItem: angular.noop}),\n                    $storage = {\n                        $default: function(items) {\n                            for (var k in items) {\n                                angular.isDefined($storage[k]) || ($storage[k] = angular.copy(items[k]) );\n                            }\n\n                            $storage.$sync();\n                            return $storage;\n                        },\n                        $reset: function(items) {\n                            for (var k in $storage) {\n                                '$' === k[0] || (delete $storage[k] && webStorage.removeItem(storageKeyPrefix + k));\n                            }\n\n                            return $storage.$default(items);\n                        },\n                        $sync: function () {\n                            for (var i = 0, l = webStorage.length, k; i < l; i++) {\n                                // #8, #10: `webStorage.key(i)` may be an empty string (or throw an exception in IE9 if `webStorage` is empty)\n                                (k = webStorage.key(i)) && storageKeyPrefix === k.slice(0, prefixLength) && ($storage[k.slice(prefixLength)] = deserializer(webStorage.getItem(k)));\n                            }\n                        },\n                        $apply: function() {\n                            var temp$storage;\n\n                            _debounce = null;\n\n                            if (!angular.equals($storage, _last$storage)) {\n                                temp$storage = angular.copy(_last$storage);\n                                angular.forEach($storage, function(v, k) {\n                                    if (angular.isDefined(v) && '$' !== k[0]) {\n                                        webStorage.setItem(storageKeyPrefix + k, serializer(v));\n                                        delete temp$storage[k];\n                                    }\n                                });\n\n                                for (var k in temp$storage) {\n                                    webStorage.removeItem(storageKeyPrefix + k);\n                                }\n\n                                _last$storage = angular.copy($storage);\n                            }\n                        },\n                        $supported: function() {\n                            return !!isSupported;\n                        }\n                    },\n                    _last$storage,\n                    _debounce;\n\n                $storage.$sync();\n\n                _last$storage = angular.copy($storage);\n\n                $rootScope.$watch(function() {\n                    _debounce || (_debounce = $timeout($storage.$apply, 100, false));\n                });\n\n                // #6: Use `$window.addEventListener` instead of `angular.element` to avoid the jQuery-specific `event.originalEvent`\n                $window.addEventListener && $window.addEventListener('storage', function(event) {\n                    if (!event.key) {\n                      return;\n                    }\n\n                    // Reference doc.\n                    var doc = $document[0];\n\n                    if ( (!doc.hasFocus || !doc.hasFocus()) && storageKeyPrefix === event.key.slice(0, prefixLength) ) {\n                        event.newValue ? $storage[event.key.slice(prefixLength)] = deserializer(event.newValue) : delete $storage[event.key.slice(prefixLength)];\n\n                        _last$storage = angular.copy($storage);\n\n                        $rootScope.$apply();\n                    }\n                });\n\n                $window.addEventListener && $window.addEventListener('beforeunload', function() {\n                    $storage.$apply();\n                });\n\n                return $storage;\n              }\n          ];\n      };\n    }\n\n}));\n","!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)(\"object\"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=1)}([function(e,t){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(n=window)}e.exports=n},function(e,t,n){n(2),e.exports=n(6)},function(e,t,n){(function(o,i){var r,a;function s(e){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}!function(o,i){\"object\"==s(t)&&void 0!==e?i():void 0===(a=\"function\"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=a)}(0,(function(){\"use strict\";function e(e){var t=this.constructor;return this.then((function(n){return t.resolve(e()).then((function(){return n}))}),(function(n){return t.resolve(e()).then((function(){return t.reject(n)}))}))}function t(){}function n(e){if(!(this instanceof n))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(e,this)}function r(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n._immediateFn((function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var o;try{o=n(e._value)}catch(e){return void c(t.promise,e)}a(t.promise,o)}else(1===e._state?a:c)(t.promise,e._value)}))):e._deferreds.push(t)}function a(e,t){try{if(t===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(t&&(\"object\"==s(t)||\"function\"==typeof t)){var o=t.then;if(t instanceof n)return e._state=3,e._value=t,void l(e);if(\"function\"==typeof o)return void d(function(e,t){return function(){e.apply(t,arguments)}}(o,t),e)}e._state=1,e._value=t,l(e)}catch(t){c(e,t)}}function c(e,t){e._state=2,e._value=t,l(e)}function l(e){2===e._state&&0===e._deferreds.length&&n._immediateFn((function(){e._handled||n._unhandledRejectionFn(e._value)}));for(var t=0,o=e._deferreds.length;o>t;t++)r(e,e._deferreds[t]);e._deferreds=null}function d(e,t){var n=!1;try{e((function(e){n||(n=!0,a(t,e))}),(function(e){n||(n=!0,c(t,e))}))}catch(e){if(n)return;n=!0,c(t,e)}}var u=setTimeout;n.prototype.catch=function(e){return this.then(null,e)},n.prototype.then=function(e,n){var o=new this.constructor(t);return r(this,new function(e,t,n){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.promise=n}(e,n,o)),o},n.prototype.finally=e,n.all=function(e){return new n((function(t,n){function o(e,a){try{if(a&&(\"object\"==s(a)||\"function\"==typeof a)){var c=a.then;if(\"function\"==typeof c)return void c.call(a,(function(t){o(e,t)}),n)}i[e]=a,0==--r&&t(i)}catch(e){n(e)}}if(!e||void 0===e.length)throw new TypeError(\"Promise.all accepts an array\");var i=Array.prototype.slice.call(e);if(0===i.length)return t([]);for(var r=i.length,a=0;i.length>a;a++)o(a,i[a])}))},n.resolve=function(e){return e&&\"object\"==s(e)&&e.constructor===n?e:new n((function(t){t(e)}))},n.reject=function(e){return new n((function(t,n){n(e)}))},n.race=function(e){return new n((function(t,n){for(var o=0,i=e.length;i>o;o++)e[o].then(t,n)}))},n._immediateFn=\"function\"==typeof o&&function(e){o(e)}||function(e){u(e,0)},n._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var f=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(void 0!==i)return i;throw Error(\"unable to locate global object\")}();\"Promise\"in f?f.Promise.prototype.finally||(f.Promise.prototype.finally=e):f.Promise=n}))}).call(this,n(3).setImmediate,n(0))},function(e,t,n){(function(e){var o=void 0!==e&&e||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function r(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new r(i.call(setTimeout,o,arguments),clearTimeout)},t.setInterval=function(){return new r(i.call(setInterval,o,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(o,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(4),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e,n){\"use strict\";if(!e.setImmediate){var o,i,r,a,s,c=1,l={},d=!1,u=e.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(e);f=f&&f.setTimeout?f:e,\"[object process]\"==={}.toString.call(e.process)?o=function(e){t.nextTick((function(){m(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=n,t}}()?e.MessageChannel?((r=new MessageChannel).port1.onmessage=function(e){m(e.data)},o=function(e){r.port2.postMessage(e)}):u&&\"onreadystatechange\"in u.createElement(\"script\")?(i=u.documentElement,o=function(e){var t=u.createElement(\"script\");t.onreadystatechange=function(){m(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):o=function(e){setTimeout(m,0,e)}:(a=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(a)&&m(+t.data.slice(a.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),o=function(t){e.postMessage(a+t,\"*\")}),f.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return l[c]=i,o(c),c++},f.clearImmediate=p}function p(e){delete l[e]}function m(e){if(d)setTimeout(m,0,e);else{var t=l[e];if(t){d=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{p(e),d=!1}}}}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,n(0),n(5))},function(e,t){var n,o,i=e.exports={};function r(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===r||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:r}catch(e){n=r}try{o=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){o=a}}();var c,l=[],d=!1,u=-1;function f(){d&&c&&(d=!1,c.length?l=c.concat(l):u=-1,l.length&&p())}function p(){if(!d){var e=s(f);d=!0;for(var t=l.length;t;){for(c=l,l=[];++u<t;)c&&c[u].run();u=-1,t=l.length}c=null,d=!1,function(e){if(o===clearTimeout)return clearTimeout(e);if((o===a||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new m(e,t)),1!==l.length||d||s(p)},m.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(e){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},function(e,t,n){\"use strict\";n.r(t),n.d(t,\"getInstance\",(function(){return y}));var o={ASM:\"asm\",WASM:\"ems\",JS_WORKER:\"jsworker\",THREADED_WASM:\"wasm-threads\"};function i(e,t){if(\"string\"!=typeof e||!t)return e;var n=t.substr(0,t.lastIndexOf(\"/\"));return/^(\\/|%2F|[a-z0-9-]+:)/i.test(e)?e:n+\"/\"+e}function r(e){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t,n){return(t=function(e){var t=function(e,t){if(\"object\"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||\"default\");if(\"object\"!==r(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===r(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l={},d=0;\"undefined\"==typeof console&&(window.console={log:function(){},warn:function(){},error:function(){}});var u=function(){for(var e=1;e<arguments.length;e++)for(var t=Object.keys(arguments[e]),n=0;n<t.length;n++)arguments[0][t[n]]=arguments[e][t[n]];return arguments[0]},f=function(e){var t=[];return e.forEach((function(e){t.push(e)})),t},p=function(e,t){var n;try{n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0})}catch(o){(n=document.createEvent(\"Event\")).initEvent(e,!0,!0),n.detail=t}return n};window.PDFNet&&!l.skipPDFNetWebViewerWarning&&console.warn(\"PDFNet.js and WebViewer.js have been included in the same context. See https://www.pdftron.com/kb_same_context for an explanation of why this could be an error in your application.\");var m=new Map,h=new Map;l.WebViewer=function(e,t){var n=this;if(h.get(t))throw new Error(\"Two instances of WebViewer were created on the same HTML element. Please create a new element for each instance of WebViewer\");h.set(t,!0);t.addEventListener(\"ready\",(function e(){m.get(t).instance=n.getCompleteInstance(),t.removeEventListener(\"ready\",e)})),this._validateOptions(e);var o=e.webviewerServerURL||e.pdftronServer;e.fullAPI&&o&&(e.forceClientSideInit||console.warn(\"The fullAPI and webviewerServerURL options have both been set so the forceClientSideInit option is now enabled. This means that WebViewer will switch to client side rendering and processing to allow use of the full API.\"),e.forceClientSideInit=!0),this.options=u({},l.WebViewer.Options,e);var i=this.options.path.length-1;i>0&&\"/\"!==this.options.path[i]&&(this.options.path+=\"/\"),this.options.uiPath=this.options.path+this.options.uiPath,t||console.error(\"ViewerElement is not defined. This may be caused by calling the WebViewer constructor before the DOM is loaded, or an invalid selector. Please see http://r.pdftron.com/guides/quick-start for an example.\"),this.element=t,this.element.style.overflow=\"hidden\";var r=this;this.messageHandler=function(t){if(\"requestl\"===t.data&&t.source&&t.source.postMessage({type:\"responsel\",value:e.l||e.licenseKey},\"*\"),\"requestConfig\"===t.data.type&&t.data.id===r.id&&t.source){var n=e.config?r._correctRelativePath(e.config):\"\";t.source.postMessage({type:\"responseConfig\",value:n},\"*\")}},window.addEventListener(\"message\",this.messageHandler,!1),this.options.autoCreate&&this.create()};var v={licenseKey:void 0,enableAzureWorkaround:!1,isAdminUser:!1,isReadOnly:!1};l.WebViewer.prototype={version:\"8.12.4\",create:function(){if(this.options.initialDoc){var e=this._correctRelativePath(this.options.initialDoc);e=encodeURIComponent(JSON.stringify(e)),this.options.initialDoc=e}this._create()},_create:function(){this.id=++d,void 0===this._trigger&&(this._trigger=function(e,t){var n=p(e,t);this.element.dispatchEvent(n)});var e=this.options.type.replace(\" \",\"\").split(\",\");e.length<1&&(e[0]=\"html5\"),this._createViewer(e)},_validateOptions:function(e){for(var t=Object.keys(e),n=0;n<t.length;n++){var o=t[n];o in u({},v,l.WebViewer.Options)||console.warn(\"\".concat(o,\" is not a valid option name. See http://r.pdftron.com/api/options_anchor for all available options.\"))}var i=e.webviewerServerURL||e.pdftronServer;!e.enableRedaction||e.fullAPI||i||console.warn(\"FullAPI or WebViewer Server is needed to apply redactions\")},_notSupportedMobile:function(){var e=document.createElement(\"div\");e.id=\"webviewer-browser-unsupported\",e.textContent=\"PDF document viewing is not supported by this browser.\",this.element.appendChild(e)},_createViewer:function(e){var t,n=this;if(n.selectedType=null,this.isMobileDevice()){if(this.options.documentType&&\"xod\"!==this.options.documentType&&!this._testWebAssembly())return void this._notSupportedMobile();if(e=Array(\"html5Mobile\"),n.selectedType=\"html5Mobile\",this.options.mobileRedirect)return t=this.options.uiPath+this._getHTML5OptionsURL(),void(window.location=t)}for(var o=!1,i=!1,r=0;r<e.length;r++){if(\"html5mobile\"===e[r].toLowerCase()){if(this.options.documentType&&\"xod\"!==this.options.documentType&&!this._testWebAssembly())continue;if(o=!0,n._testHTML5()){if(this.options.mobileRedirect)return n.selectedType=\"html5Mobile\",t=this.options.uiPath+this._getHTML5OptionsURL(),void(window.location=t);if(this.options.xdomainProxyUrl||n.isSameOrigin(decodeURIComponent(n.options.initialDoc))||n._testCORS()){n.selectedType=\"html5Mobile\";break}i=!0}}if(\"html5\"===e[r].toLowerCase()&&(o=!0,n._testHTML5())){var a=n.isSameOrigin(decodeURIComponent(n.options.initialDoc));if(this.options.xdomainProxyUrl||a||n._testCORS()){n.selectedType=\"html5\";break}i=!0}}if(\"html5\"===n.selectedType)n._createHTML5();else if(\"html5Mobile\"===n.selectedType)n._createHTML5Mobile();else{var s;if(i?s=\"This browser does not support cross origin requests. Please configure xdomain to support CORS.\":o&&(s=\"Please use an HTML5 compatible browser.\"),s){var c=document.createElement(\"div\");c.id=\"webviewer-browser-unsupported\",c.textContent=s,n.element.appendChild(c)}}},_viewerLoaded:function(e){this._trigger(\"ready\");try{var t=e.contentWindow;if(t.postMessage({type:\"viewerLoaded\"},\"*\"),void 0!==this.options.encryption){var n=decodeURIComponent(this.options.initialDoc);this.options.initialDoc&&(n=JSON.parse(n));var o={decrypt:t.Core.Encryption.decrypt,decryptOptions:this.options.encryption,documentId:this.options.documentId,extension:\"xod\"};this.getInstance().loadDocument(n,o)}}catch(e){console.warn(\"Viewer is on a different domain, the promise from WebViewer function is rejected and API functions will not work because of cross domain permissions. See http://r.pdftron.com/kb_cross_origin for more information.\")}},_getHTML5OptionsURL:function(){var e,t,n,o=this.options,i=o.webviewerServerURL||o.pdftronServer,r=\"\";if(o.initialDoc&&(r+=\"#d=\".concat(o.initialDoc)),void 0===o.backendType&&(o.backendType=o.pdfBackend),o.documentType&&\"xod\"===o.documentType&&(e=o.documentType),o.preloadWorker&&\"xod\"===o.preloadWorker&&(e=o.preloadWorker),o.extension&&(e=o.extension),e&&(r+=\"&extension=\".concat(e)),o.documentType&&\"xod\"!==o.documentType&&(t=o.documentType),o.preloadWorker&&\"xod\"!==o.preloadWorker&&(t=o.preloadWorker),t&&(r+=\"&preloadWorker=\".concat(t)),o.backendType&&(r+=\"&pdf=\".concat(o.backendType,\"&office=\").concat(o.backendType,\"&legacyOffice=\").concat(o.backendType)),o.filename&&(r+=\"&filename=\".concat(o.filename)),void 0!==o.streaming&&(r+=\"&streaming=\".concat(o.streaming)),o.externalPath){var a=this._correctRelativePath(o.externalPath);a=encodeURIComponent(a),r+=\"&p=\".concat(a)}if(o.encryption&&(r+=\"&auto_load=false\"),o.enableAnnotations&&(r+=\"&a=1\"),o.disabledElements){var s=encodeURIComponent(o.disabledElements.join(\",\"));r+=\"&disabledElements=\".concat(s)}if(o.serverUrl){var c=this._correctRelativePath(o.serverUrl);c=encodeURIComponent(c),r+=\"&server_url=\".concat(c)}if(o.serverUrlHeaders&&(r+=\"&serverUrlHeaders=\".concat(JSON.stringify(o.serverUrlHeaders))),o.documentId&&(r+=\"&did=\".concat(o.documentId)),o.css){var l=this._correctRelativePath(o.css);l=encodeURIComponent(l),r+=\"&css=\".concat(l)}(o.disableI18n&&(r+=\"&disableI18n=1\"),o.enableOfflineMode&&(r+=\"&offline=1\"),o.startOffline&&(r+=\"&startOffline=1\"),(o.enableReadOnlyMode||o.isReadOnly)&&(r+=\"&readonly=1\"),o.hideAnnotationPanel&&(r+=\"&hideAnnotationPanel=1\"),o.disableToolGroupReordering&&(r+=\"&disableToolGroupReordering=1\"),void 0!==o.annotationUser&&(r+=\"&user=\".concat(o.annotationUser)),void 0===o.annotationAdmin&&void 0===o.isAdminUser||(r+=\"&admin=\".concat(o.annotationAdmin||o.isAdminUser?1:0)),void 0!==o.custom&&(r+=\"&custom=\".concat(encodeURIComponent(o.custom))),void 0===o.showLocalFilePicker&&void 0===o.enableFilePicker||(r+=\"&filepicker=\".concat(o.showLocalFilePicker||o.enableFilePicker?1:0)),void 0!==o.fullAPI&&(r+=\"&pdfnet=\".concat(o.fullAPI?1:0)),void 0!==o.enableRedaction&&(r+=\"&enableRedaction=\".concat(o.enableRedaction?1:0)),void 0!==o.disableVirtualDisplayMode&&(r+=\"&disableVirtualDisplayMode=\".concat(o.disableVirtualDisplayMode?1:0)),void 0!==o.enableMeasurement&&(r+=\"&enableMeasurement=\".concat(o.enableMeasurement?1:0)),void 0!==o.showToolbarControl&&(r+=\"&toolbar=\".concat(o.showToolbarControl?\"true\":\"false\")),void 0!==o.showPageHistoryButtons&&(r+=\"&pageHistory=\".concat(o.showPageHistoryButtons?1:0)),void 0!==o.notesInLeftPanel&&(r+=\"&notesInLeftPanel=\".concat(o.notesInLeftPanel?1:0)),void 0!==o.autoExpandOutlines&&(r+=\"&autoExpandOutlines=\".concat(o.autoExpandOutlines?1:0)),void 0!==o.enableAnnotationNumbering&&(r+=\"&enableAnnotationNumbering=\".concat(o.enableAnnotationNumbering?1:0)),void 0!==o.xdomainProxyUrl)&&(n=\"string\"==typeof o.xdomainProxyUrl?{url:o.xdomainProxyUrl}:o.xdomainProxyUrl,r+=\"&xdomain_urls=\".concat(encodeURIComponent(JSON.stringify(n))));return(o.azureWorkaround||o.enableAzureWorkaround)&&(r+=\"&azureWorkaround=1\"),o.enableOptimizedWorkers||(r+=\"&enableOptimizedWorkers=0\"),o.useDownloader||(r+=\"&useDownloader=0\"),o.disableWebsockets&&(r+=\"&disableWebsockets=1\"),o.disableStreaming&&(r+=\"&disableStreaming=1\"),o.forceClientSideInit&&(r+=\"&forceClientSideInit=1\"),o.loadAsPDF&&(r+=\"&loadAsPDF=1\"),void 0!==o.workerTransportPromise&&(r+=\"&useSharedWorker=\".concat(o.workerTransportPromise?\"true\":\"false\")),void 0!==i&&i&&(r+=\"&webviewerServerURL=\".concat(encodeURIComponent(i))),o.fallbackToClientSide&&(r+=\"&fallbackToClientSide=1\"),void 0!==o.singleServerMode&&(r+=\"&singleServerMode=\".concat(o.singleServerMode?\"true\":\"false\")),void 0!==o.accessibleMode&&(r+=\"&accessibleMode=\".concat(o.accessibleMode?1:0)),o.disableLogs&&(r+=\"&disableLogs=1\"),o.enableViewStateAnnotations&&(r+=\"&enableViewStateAnnotations=1\"),o.disableFlattenedAnnotations&&(r+=\"&disableFlattenedAnnotations=1\"),o.highContrastMode&&(r+=\"&highContrastMode=1\"),void 0!==o.selectAnnotationOnCreation&&(r+=\"&selectAnnotationOnCreation=\".concat(o.selectAnnotationOnCreation?1:0)),void 0!==o.autoFocusNoteOnAnnotationSelection&&(r+=\"&autoFocusNoteOnAnnotationSelection=\".concat(o.autoFocusNoteOnAnnotationSelection?1:0)),o.disableMultiViewerComparison&&(r+=\"&disableMultiViewerComparison=1\"),o.showInvalidBookmarks&&(r+=\"&showInvalidBookmarks=1\"),o.disableObjectURLBlobs&&(r+=\"&disableObjectURLBlobs=\".concat(o.disableObjectURLBlobs)),r+=\"&id=\".concat(this.id),(r+=\"&basePath=\".concat(encodeURIComponent(window.location.pathname))).length>0&&\"&\"===r[0]&&(r=\"#\".concat(r.slice(1))),r+=\"&webViewerJSVersion=\".concat(this.version)},setInstanceData:function(e){m.set(this.element,{iframe:e,l:this.options.l||this.options.licenseKey,workerTransportPromise:this.options.workerTransportPromise})},_createHTML5:function(){var e=this,t=this.options.uiPath+this._getHTML5OptionsURL(),n=document.createElement(\"iframe\");this.setInstanceData(n),n.id=\"webviewer-\".concat(this.id),n.src=t,n.title=\"webviewer\",n.frameBorder=0,n.width=\"100%\",n.height=\"100%\",n.setAttribute(\"allowfullscreen\",!0),n.setAttribute(\"webkitallowfullscreen\",!0),n.setAttribute(\"mozallowfullscreen\",!0),this.iframe=n,this.options.backgroundColor&&n.setAttribute(\"data-bgcolor\",this.options.backgroundColor),this.options.assetPath&&n.setAttribute(\"data-assetpath\",encodeURIComponent(this.options.assetPath)),this.element.appendChild(n);window.addEventListener(\"message\",(function t(n){if(\"viewerLoaded\"===n.data.type&&n.data.id===e.id)try{e.instance=e.iframe.contentWindow.instance}catch(e){}finally{window.removeEventListener(\"message\",t),e._viewerLoaded(e.iframe)}}))},_createHTML5Mobile:function(){var e=this,t=this.options.uiPath+this._getHTML5OptionsURL(),n=document.createElement(\"iframe\");this.setInstanceData(n),n.id=\"webviewer-\".concat(this.id),n.src=t,n.frameborder=0,this.options.assetPath&&n.setAttribute(\"data-assetpath\",encodeURIComponent(this.options.assetPath)),n.style.width=\"100%\",n.style.height=\"100%\",this.iframe=n,this.element.appendChild(n);window.addEventListener(\"message\",(function t(n){if(\"viewerLoaded\"===n.data.type&&n.data.id===e.id)try{e.instance=e.iframe.contentWindow.instance}catch(e){}finally{window.removeEventListener(\"message\",t),e._viewerLoaded(e.iframe)}}))},dispose:function(){m.delete(this.element),h.delete(this.element),this.instance.closeDocument(),window.removeEventListener(\"message\",this.messageHandler),this.iframe.removeEventListener(\"load\",this.loadListener),this.iframe=null,console.clear()},getInstance:function(){return this.instance},setCompleteInstance:function(e){this.completeInstance=e},getCompleteInstance:function(){return this.completeInstance},_correctRelativePath:function(e){var t=window.location.pathname;return Array.isArray(e)?e.map((function(e){return i(e,t)})):i(e,t)},_testHTML5:function(){try{var e=document.createElement(\"canvas\");return e&&e.getContext(\"2d\")}catch(e){return!1}},_testWebAssembly:function(){return!(!window.WebAssembly||!window.WebAssembly.validate)},_testCORS:function(){return\"XMLHttpRequest\"in window&&\"withCredentials\"in new XMLHttpRequest},isIE:function(){var e=navigator.userAgent.toLowerCase(),t=/(msie) ([\\w.]+)/.exec(e)||/(trident)(?:.*? rv:([\\w.]+)|)/.exec(e);return t?parseInt(t[2],10):t},isMobileDevice:function(){return!this.isIE()&&(0===this.scrollbarWidth()&&navigator.userAgent.match(/Edge/i)||navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/webOS/i)||navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/Touch/i)||navigator.userAgent.match(/IEMobile/i)||navigator.userAgent.match(/Silk/i))},scrollbarWidth:function(){var e=document.createElement(\"div\");e.style.cssText=\"width:100px;height:100px;overflow:scroll !important;position:absolute;top:-9999px\",document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t},isSameOrigin:function(e){var t=window.location,n=document.createElement(\"a\");n.href=e,\"\"===n.host&&(n.href=n.href);var o=window.location.port,i=n.port;return\"http:\"===n.protocol?(i=i||\"80\",o=o||\"80\"):\"https:\"===n.protocol&&(i=i||\"443\",o=o||\"443\"),n.hostname===t.hostname&&n.protocol===t.protocol&&i===o}},l.WebViewer.Options={initialDoc:void 0,annotationAdmin:void 0,isAdminUser:void 0,annotationUser:void 0,assetPath:void 0,autoCreate:!0,autoFocusNoteOnAnnotationSelection:!0,azureWorkaround:!1,additionalTranslations:void 0,enableAzureWorkaround:!1,enableOptimizedWorkers:!0,backgroundColor:void 0,backendType:void 0,css:void 0,config:void 0,custom:void 0,documentId:void 0,documentType:void 0,preloadWorker:void 0,extension:void 0,enableAnnotations:!0,filename:void 0,disableI18n:!1,disabledElements:void 0,disableWebsockets:!1,enableOfflineMode:!1,enableReadOnlyMode:!1,isReadOnly:!1,enableRedaction:!1,disableVirtualDisplayMode:!1,enableMeasurement:!1,encryption:void 0,externalPath:void 0,hideAnnotationPanel:!1,disableToolGroupReordering:!1,uiPath:\"./ui/index.html\",l:void 0,licenseKey:void 0,mobileRedirect:!1,path:\"\",pdfBackend:void 0,webviewerServerURL:void 0,fallbackToClientSide:!1,singleServerMode:!1,fullAPI:!1,preloadPDFWorker:!0,serverUrl:void 0,serverUrlHeaders:void 0,showLocalFilePicker:!1,enableFilePicker:!1,showPageHistoryButtons:!0,showToolbarControl:void 0,startOffline:!1,streaming:void 0,type:\"html5\",useDownloader:!0,workerTransportPromise:void 0,xdomainProxyUrl:void 0,ui:void 0,forceClientSideInit:!1,loadAsPDF:!1,accessibleMode:void 0,disableLogs:!1,enableViewStateAnnotations:!1,highContrastMode:!1,selectAnnotationOnCreation:!1,notesInLeftPanel:!1,autoExpandOutlines:!1,enableAnnotationNumbering:!1,documentXFDFRetriever:void 0,disableMultiViewerComparison:void 0,showInvalidBookmarks:!1,disableObjectURLBlobs:!1,disableFlattenedAnnotations:!1,disableStreaming:!1};var b=function(e,t){return new Promise((function(n,o){e.l=e.l||e.licenseKey,e.azureWorkaround=e.azureWorkaround||e.enableAzureWorkaround,e.annotationAdmin=e.annotationAdmin||e.isAdminUser,e.enableReadOnlyMode=e.enableReadOnlyMode||e.isReadOnly,e.showLocalFilePicker=e.showLocalFilePicker||e.enableFilePicker;t.addEventListener(\"ready\",(function r(){t.removeEventListener(\"ready\",r);try{var a=t.querySelector(\"iframe\").contentWindow;if(void 0===a.Tools)throw new Error(\"Viewer isn't instantiated correctly. It could be caused by the 'path' option in the WebViewer constructor not being defined correctly. The 'path' option should be relative to the HTML file you're loading the script on and the lib folder needs to be publicly accessible.\");var l=i.getInstance(),d={iframeWindow:a,dispose:i.dispose.bind(i)},f=u({},l,s(c({},l.UI_NAMESPACE_KEY,s(s({},l[l.UI_NAMESPACE_KEY]),d)),d));i.setCompleteInstance(f);var p=Promise.resolve();if(e.documentXFDFRetriever&&(p=f[l.CORE_NAMESPACE_KEY].documentViewer.setDocumentXFDFRetriever(e.documentXFDFRetriever)),e.additionalTranslations){var m=e.additionalTranslations;f[l.UI_NAMESPACE_KEY].setTranslations(m.language,m.translations)}p.then((function(){n(f)}))}catch(t){if(\"config\"in e&&\"\"!==e.config)return n();o(\"Viewer is on a different domain, the promise from WebViewer function is rejected and API functions will not work because of cross domain permissions. See https://www.pdftron.com/kb_cross_origin for more information.\")}}));var i=new l.WebViewer(e,t)}))},w=function(e){for(var t=f(m),n=0;n<t.length;n++){var o=t[n];if(o.iframe===e)return o}return null};b.l=function(e){var t=w(e);return t&&t.l},b.workerTransportPromise=function(e){var t=w(e);return t&&t.workerTransportPromise},b.WorkerTypes={ALL:\"all\",OFFICE:\"office\",LEGACY_OFFICE:\"legacyOffice\",PDF:\"pdf\",CONTENT_EDIT:\"contentEdit\"},b.BackendTypes=o;var y=function(e){var t=f(m);if(!t.length||!t.filter((function(e){return e.instance})).length)return console.warn(\"WebViewer.getInstance() was called before any instances were available\"),null;if(t.length>1&&!e)throw new Error(\"More than one instance of WebViewer was found, and no element was passed into getInstance(). Please specify which instance you want to get.\");return e?(m.get(e)||{}).instance:(t[0]||{}).instance};b.getInstance=y,window.WebViewer=b;t.default=b}])}));","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./urlMatcher\"));\n__export(require(\"./urlMatcherFactory\"));\n__export(require(\"./urlRouter\"));\n__export(require(\"./urlRule\"));\n__export(require(\"./urlService\"));\n//# sourceMappingURL=index.js.map","!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t(require(\"react\"));else if(\"function\"==typeof define&&define.amd)define([\"React\"],t);else{var r=\"object\"==typeof exports?t(require(\"react\")):t(e.React);for(var n in r)(\"object\"==typeof exports?exports:e)[n]=r[n]}}(this,(e=>(()=>{var t={703:(e,t,r)=>{\"use strict\";var n=r(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var l=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw l.name=\"Invariant Violation\",l}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},639:t=>{\"use strict\";t.exports=e}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var a={};return(()=>{\"use strict\";n.r(a),n.d(a,{default:()=>d});var e=n(639),t=n.n(e),r=n(697),o=n.n(r);const i=function(e){var t=e.name.split(\".\");return t.length>1?t[t.length-1]:\"none\"};function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var s=/^(application|audio|example|image|message|model|multipart|text|video|\\*)\\/[a-z0-9\\.\\+\\*-]+$/,u=/\\.[a-zA-Z0-9]*$/;const f=function(e,t){return!e||e.some((function(e){if(t.type&&e.match(s)){var r=l(t.type.split(\"/\"),2),n=r[0],a=r[1],o=l(e.split(\"/\"),2),i=o[0],c=o[1];if(i&&c){if(\"*\"===i&&\"*\"===c)return!0;if(i===n&&\"*\"===c)return!0;if(i===n&&c===a)return!0}}else if(t.extension&&e.match(u)){var f=e.substr(1);return t.extension.toLowerCase()===f.toLowerCase()}return!1}))};function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},p.apply(this,arguments)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var y=function(r){var n,a,o=r.accepts,l=r.children,c=r.className,s=r.clickable,u=r.dragActiveClassName,y=(r.dragActiveStyle,r.inputProps),d=r.multiple,v=r.maxFiles,g=r.maxFileSize,b=r.minFileSize,h=r.name,O=r.onChange,x=r.onDragEnter,j=r.onDragLeave,S=r.onError,w=r.style,A=(0,e.useRef)(1),T=(0,e.useRef)(),C=(0,e.useRef)(),E=(n=(0,e.useState)(!1),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if(\"string\"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}(n,a)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),P=E[0],k=E[1],D=function(e,t){S(e,t)},N=(0,e.useCallback)((function(e){e.preventDefault(),e.stopPropagation()}),[]),R=function(e){var t=T.current;u&&(t.className=t.className.replace(\" \".concat(u),\"\")),\"function\"==typeof l&&k(!1),j&&j(e)},_=function(e){e.preventDefault(),R(e);var t,r=e.dataTransfer?e.dataTransfer.files:e.target.files;!1===d&&r.length>1&&(r=[r[0]]);for(var n=[],a=0;a<r.length;a+=1){var l=r[a];if(l.id=\"files-\".concat(A.current),A.current+=1,l.extension=i(l),l.sizeReadable=(t=l.size)>=1e9?Math.ceil(t/1e9)+\"GB\":t>=1e6?Math.ceil(t/1e6)+\"MB\":t>=1e3?Math.ceil(t/1e3)+\"KB\":Math.ceil(t)+\"B\",l.type&&\"image\"===l.type.split(\"/\")[0]?l.preview={type:\"image\",url:window.URL.createObjectURL(l)}:l.preview={type:\"file\"},n.length>=v){D({code:4,message:\"maximum file count reached\"},l);break}if(l.size>g){D({code:2,message:\"\".concat(l.name,\" is too large\")},l);break}if(l.size<b){D({code:3,message:\"\".concat(l.name,\" is too small\")},l);break}if(!f(o,l)){D({code:1,message:\"\".concat(l.name,\" is not a valid file type\")},l);break}n.push(l)}O(n)};return t().createElement(t().Fragment,null,t().createElement(\"input\",p({},y,{ref:C,type:\"file\",accept:o?o.join():\"\",multiple:d,name:h,style:{display:\"none\"},onChange:_})),t().createElement(\"div\",{ref:T,className:c,onClick:!0===s?function(){C.current.value=null,C.current.click()}:null,onDrop:_,onDragOver:N,onDragEnter:function(e){var t=T.current;u&&!t.className.includes(u)&&(t.className=\"\".concat(t.className,\" \").concat(u)),\"function\"==typeof l&&k(!0),x&&x(e)},onDragLeave:R,style:w},\"function\"==typeof l?l(P):l))};y.propTypes={accepts:o().array,children:o().oneOfType([o().func,o().arrayOf(o().node),o().node]),className:o().string,clickable:o().bool,dragActiveClassName:o().string,inputProps:o().object,multiple:o().bool,maxFiles:o().number,maxFileSize:o().number,minFileSize:o().number,name:o().string,onChange:o().func,onDragEnter:o().func,onDragLeave:o().func,onError:o().func,style:o().object},y.defaultProps={accepts:null,className:void 0,clickable:!0,dragActiveClassName:void 0,inputProps:{},multiple:!0,maxFiles:1/0,maxFileSize:1/0,minFileSize:0,name:\"file\",onChange:function(e){return console.log(e)},onDragEnter:void 0,onDragLeave:void 0,onError:function(e){return console.log(\"error code \".concat(e.code,\": \").concat(e.message))}};const d=y})(),a})()));","/**\n * Expose `Backoff`.\n */\nvar Backoff = /** @class */ (function () {\n    /**\n     * Construct a {@link Backoff}.\n     * @param {object} options\n     * @property {number} min - Initial timeout in milliseconds [100]\n     * @property {number} max - Max timeout [10000]\n     * @property {boolean} jitter - Apply jitter [0]\n     * @property {number} factor - Multiplication factor for Backoff operation [2]\n     */\n    function Backoff(options) {\n        Object.defineProperties(this, {\n            _min: {\n                value: options.min || 100\n            },\n            _max: {\n                value: options.max || 10000\n            },\n            _jitter: {\n                value: options.jitter > 0 && options.jitter <= 1 ? options.jitter : 0\n            },\n            _factor: {\n                value: options.factor || 2\n            },\n            _attempts: {\n                value: 0,\n                writable: true\n            },\n            _duration: {\n                enumerable: false,\n                get: function () {\n                    var ms = this._min * Math.pow(this._factor, this._attempts);\n                    if (this._jitter) {\n                        var rand = Math.random();\n                        var deviation = Math.floor(rand * this._jitter * ms);\n                        ms = (Math.floor(rand * 10) & 1) === 0 ? ms - deviation : ms + deviation;\n                    }\n                    return Math.min(ms, this._max) | 0;\n                }\n            },\n            _timeoutID: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n    * Start the backoff operation.\n    * @param {function} fn - Function to call\n    * @return {void}\n    * @api public\n    */\n    Backoff.prototype.backoff = function (fn) {\n        var _this = this;\n        var duration = this._duration;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n        this._timeoutID = setTimeout(function () {\n            _this._attempts++;\n            fn();\n        }, duration);\n    };\n    /**\n    * Reset the number of attempts and clear the timer.\n    *\n    * @return {void}\n    * @api public\n    */\n    Backoff.prototype.reset = function () {\n        this._attempts = 0;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n    };\n    return Backoff;\n}());\nmodule.exports = Backoff;\n//# sourceMappingURL=backoff.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      htmlSize = _ref.htmlSize,\n      id = _ref.id,\n      className = _ref.className,\n      _ref$isValid = _ref.isValid,\n      isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n      _ref$isInvalid = _ref.isInvalid,\n      isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      custom = _ref.custom,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else if (type === 'range') {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n  } else if (Component === 'select' && custom) {\n    var _classes4;\n\n    classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n  } else {\n    var _classes5;\n\n    classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    type: type,\n    size: htmlSize,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n  }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n  Feedback: Feedback\n});","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AudioTrack = require('./audiotrack');\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar RemoteMediaAudioTrack = mixinRemoteMediaTrack(AudioTrack);\n/**\n * A {@link RemoteAudioTrack} represents an {@link AudioTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends AudioTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteAudioTrack}\n * @emits RemoteAudioTrack#disabled\n * @emits RemoteAudioTrack#enabled\n * @emits RemoteAudioTrack#started\n * @emits RemoteAudioTrack#switchedOff\n * @emits RemoteAudioTrack#switchedOn\n */\nvar RemoteAudioTrack = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrack, _super);\n    /**\n     * Construct a {@link RemoteAudioTrack}.\n     * @param {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n     * @param {MediaTrackReceiver} mediaTrackReceiver - An audio MediaStreamTrack container\n     * @param {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n     * @param {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n     * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n     *  {@link Track.Priority} of the {@link RemoteAudioTrack}\n     * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n     * @param {{log: Log}} options - The {@link RemoteTrack} options\n     */\n    function RemoteAudioTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n        return _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n    }\n    RemoteAudioTrack.prototype.toString = function () {\n        return \"[RemoteAudioTrack #\" + this._instanceId + \": \" + this.sid + \"]\";\n    };\n    /**\n     * @private\n     */\n    RemoteAudioTrack.prototype._start = function () {\n        _super.prototype._start.call(this);\n        if (this._dummyEl) {\n            // NOTE(mpatwardhan): To fix VIDEO-6336, clear dummy element after the\n            // RemoteAudioTrack has started.\n            this._dummyEl.srcObject = null;\n            this._dummyEl = null;\n        }\n    };\n    /**\n     * Update the subscribe {@link Track.Priority} of the {@link RemoteAudioTrack}.\n     * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n     *   Currently setPriority has no effect on audio tracks.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteAudioTrack.prototype.setPriority = function (priority) {\n        return _super.prototype.setPriority.call(this, priority);\n    };\n    return RemoteAudioTrack;\n}(RemoteMediaAudioTrack));\n/**\n * The {@link RemoteAudioTrack} was disabled, i.e. \"muted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   disabled\n * @event RemoteAudioTrack#disabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled, i.e. \"unmuted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   enabled\n * @event RemoteAudioTrack#enabled\n */\n/**\n * The {@link RemoteAudioTrack} started. This means there is enough audio data\n * to begin playback.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that started\n * @event RemoteAudioTrack#started\n */\n/**\n * A {@link RemoteAudioTrack} was switched off.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   switched off\n * @event RemoteAudioTrack#switchedOff\n */\n/**\n * A {@link RemoteAudioTrack} was switched on.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   switched on\n * @event RemoteAudioTrack#switchedOn\n */\nmodule.exports = RemoteAudioTrack;\n//# sourceMappingURL=remoteaudiotrack.js.map","'use strict';\n\nvar RBush = require('rbush');\nvar Queue = require('tinyqueue');\nvar pointInPolygon = require('point-in-polygon');\nconst orient = require('robust-predicates/umd/orient2d.min.js').orient2d;\n\nmodule.exports = concaveman;\nmodule.exports.default = concaveman;\n\nfunction concaveman(points, concavity, lengthThreshold) {\n    // a relative measure of concavity; higher value means simpler hull\n    concavity = Math.max(0, concavity === undefined ? 2 : concavity);\n\n    // when a segment goes below this length threshold, it won't be drilled down further\n    lengthThreshold = lengthThreshold || 0;\n\n    // start with a convex hull of the points\n    var hull = fastConvexHull(points);\n\n    // index the points with an R-tree\n    var tree = new RBush(16);\n    tree.toBBox = function (a) {\n        return {\n            minX: a[0],\n            minY: a[1],\n            maxX: a[0],\n            maxY: a[1]\n        };\n    };\n    tree.compareMinX = function (a, b) { return a[0] - b[0]; };\n    tree.compareMinY = function (a, b) { return a[1] - b[1]; };\n\n    tree.load(points);\n\n    // turn the convex hull into a linked list and populate the initial edge queue with the nodes\n    var queue = [];\n    for (var i = 0, last; i < hull.length; i++) {\n        var p = hull[i];\n        tree.remove(p);\n        last = insertNode(p, last);\n        queue.push(last);\n    }\n\n    // index the segments with an R-tree (for intersection checks)\n    var segTree = new RBush(16);\n    for (i = 0; i < queue.length; i++) segTree.insert(updateBBox(queue[i]));\n\n    var sqConcavity = concavity * concavity;\n    var sqLenThreshold = lengthThreshold * lengthThreshold;\n\n    // process edges one by one\n    while (queue.length) {\n        var node = queue.shift();\n        var a = node.p;\n        var b = node.next.p;\n\n        // skip the edge if it's already short enough\n        var sqLen = getSqDist(a, b);\n        if (sqLen < sqLenThreshold) continue;\n\n        var maxSqLen = sqLen / sqConcavity;\n\n        // find the best connection point for the current edge to flex inward to\n        p = findCandidate(tree, node.prev.p, a, b, node.next.next.p, maxSqLen, segTree);\n\n        // if we found a connection and it satisfies our concavity measure\n        if (p && Math.min(getSqDist(p, a), getSqDist(p, b)) <= maxSqLen) {\n            // connect the edge endpoints through this point and add 2 new edges to the queue\n            queue.push(node);\n            queue.push(insertNode(p, node));\n\n            // update point and segment indexes\n            tree.remove(p);\n            segTree.remove(node);\n            segTree.insert(updateBBox(node));\n            segTree.insert(updateBBox(node.next));\n        }\n    }\n\n    // convert the resulting hull linked list to an array of points\n    node = last;\n    var concave = [];\n    do {\n        concave.push(node.p);\n        node = node.next;\n    } while (node !== last);\n\n    concave.push(node.p);\n\n    return concave;\n}\n\nfunction findCandidate(tree, a, b, c, d, maxDist, segTree) {\n    var queue = new Queue([], compareDist);\n    var node = tree.data;\n\n    // search through the point R-tree with a depth-first search using a priority queue\n    // in the order of distance to the edge (b, c)\n    while (node) {\n        for (var i = 0; i < node.children.length; i++) {\n            var child = node.children[i];\n\n            var dist = node.leaf ? sqSegDist(child, b, c) : sqSegBoxDist(b, c, child);\n            if (dist > maxDist) continue; // skip the node if it's farther than we ever need\n\n            queue.push({\n                node: child,\n                dist: dist\n            });\n        }\n\n        while (queue.length && !queue.peek().node.children) {\n            var item = queue.pop();\n            var p = item.node;\n\n            // skip all points that are as close to adjacent edges (a,b) and (c,d),\n            // and points that would introduce self-intersections when connected\n            var d0 = sqSegDist(p, a, b);\n            var d1 = sqSegDist(p, c, d);\n            if (item.dist < d0 && item.dist < d1 &&\n                noIntersections(b, p, segTree) &&\n                noIntersections(c, p, segTree)) return p;\n        }\n\n        node = queue.pop();\n        if (node) node = node.node;\n    }\n\n    return null;\n}\n\nfunction compareDist(a, b) {\n    return a.dist - b.dist;\n}\n\n// square distance from a segment bounding box to the given one\nfunction sqSegBoxDist(a, b, bbox) {\n    if (inside(a, bbox) || inside(b, bbox)) return 0;\n    var d1 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.maxX, bbox.minY);\n    if (d1 === 0) return 0;\n    var d2 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.minX, bbox.maxY);\n    if (d2 === 0) return 0;\n    var d3 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY);\n    if (d3 === 0) return 0;\n    var d4 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY);\n    if (d4 === 0) return 0;\n    return Math.min(d1, d2, d3, d4);\n}\n\nfunction inside(a, bbox) {\n    return a[0] >= bbox.minX &&\n           a[0] <= bbox.maxX &&\n           a[1] >= bbox.minY &&\n           a[1] <= bbox.maxY;\n}\n\n// check if the edge (a,b) doesn't intersect any other edges\nfunction noIntersections(a, b, segTree) {\n    var minX = Math.min(a[0], b[0]);\n    var minY = Math.min(a[1], b[1]);\n    var maxX = Math.max(a[0], b[0]);\n    var maxY = Math.max(a[1], b[1]);\n\n    var edges = segTree.search({minX: minX, minY: minY, maxX: maxX, maxY: maxY});\n    for (var i = 0; i < edges.length; i++) {\n        if (intersects(edges[i].p, edges[i].next.p, a, b)) return false;\n    }\n    return true;\n}\n\nfunction cross(p1, p2, p3) {\n    return orient(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\n// check if the edges (p1,q1) and (p2,q2) intersect\nfunction intersects(p1, q1, p2, q2) {\n    return p1 !== q2 && q1 !== p2 &&\n        cross(p1, q1, p2) > 0 !== cross(p1, q1, q2) > 0 &&\n        cross(p2, q2, p1) > 0 !== cross(p2, q2, q1) > 0;\n}\n\n// update the bounding box of a node's edge\nfunction updateBBox(node) {\n    var p1 = node.p;\n    var p2 = node.next.p;\n    node.minX = Math.min(p1[0], p2[0]);\n    node.minY = Math.min(p1[1], p2[1]);\n    node.maxX = Math.max(p1[0], p2[0]);\n    node.maxY = Math.max(p1[1], p2[1]);\n    return node;\n}\n\n// speed up convex hull by filtering out points inside quadrilateral formed by 4 extreme points\nfunction fastConvexHull(points) {\n    var left = points[0];\n    var top = points[0];\n    var right = points[0];\n    var bottom = points[0];\n\n    // find the leftmost, rightmost, topmost and bottommost points\n    for (var i = 0; i < points.length; i++) {\n        var p = points[i];\n        if (p[0] < left[0]) left = p;\n        if (p[0] > right[0]) right = p;\n        if (p[1] < top[1]) top = p;\n        if (p[1] > bottom[1]) bottom = p;\n    }\n\n    // filter out points that are inside the resulting quadrilateral\n    var cull = [left, top, right, bottom];\n    var filtered = cull.slice();\n    for (i = 0; i < points.length; i++) {\n        if (!pointInPolygon(points[i], cull)) filtered.push(points[i]);\n    }\n\n    // get convex hull around the filtered points\n    return convexHull(filtered);\n}\n\n// create a new node in a doubly linked list\nfunction insertNode(p, prev) {\n    var node = {\n        p: p,\n        prev: null,\n        next: null,\n        minX: 0,\n        minY: 0,\n        maxX: 0,\n        maxY: 0\n    };\n\n    if (!prev) {\n        node.prev = node;\n        node.next = node;\n\n    } else {\n        node.next = prev.next;\n        node.prev = prev;\n        prev.next.prev = node;\n        prev.next = node;\n    }\n    return node;\n}\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n\n    var dx = p1[0] - p2[0],\n        dy = p1[1] - p2[1];\n\n    return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction sqSegDist(p, p1, p2) {\n\n    var x = p1[0],\n        y = p1[1],\n        dx = p2[0] - x,\n        dy = p2[1] - y;\n\n    if (dx !== 0 || dy !== 0) {\n\n        var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n        if (t > 1) {\n            x = p2[0];\n            y = p2[1];\n\n        } else if (t > 0) {\n            x += dx * t;\n            y += dy * t;\n        }\n    }\n\n    dx = p[0] - x;\n    dy = p[1] - y;\n\n    return dx * dx + dy * dy;\n}\n\n// segment to segment distance, ported from http://geomalgorithms.com/a07-_distance.html by Dan Sunday\nfunction sqSegSegDist(x0, y0, x1, y1, x2, y2, x3, y3) {\n    var ux = x1 - x0;\n    var uy = y1 - y0;\n    var vx = x3 - x2;\n    var vy = y3 - y2;\n    var wx = x0 - x2;\n    var wy = y0 - y2;\n    var a = ux * ux + uy * uy;\n    var b = ux * vx + uy * vy;\n    var c = vx * vx + vy * vy;\n    var d = ux * wx + uy * wy;\n    var e = vx * wx + vy * wy;\n    var D = a * c - b * b;\n\n    var sc, sN, tc, tN;\n    var sD = D;\n    var tD = D;\n\n    if (D === 0) {\n        sN = 0;\n        sD = 1;\n        tN = e;\n        tD = c;\n    } else {\n        sN = b * e - c * d;\n        tN = a * e - b * d;\n        if (sN < 0) {\n            sN = 0;\n            tN = e;\n            tD = c;\n        } else if (sN > sD) {\n            sN = sD;\n            tN = e + b;\n            tD = c;\n        }\n    }\n\n    if (tN < 0.0) {\n        tN = 0.0;\n        if (-d < 0.0) sN = 0.0;\n        else if (-d > a) sN = sD;\n        else {\n            sN = -d;\n            sD = a;\n        }\n    } else if (tN > tD) {\n        tN = tD;\n        if ((-d + b) < 0.0) sN = 0;\n        else if (-d + b > a) sN = sD;\n        else {\n            sN = -d + b;\n            sD = a;\n        }\n    }\n\n    sc = sN === 0 ? 0 : sN / sD;\n    tc = tN === 0 ? 0 : tN / tD;\n\n    var cx = (1 - sc) * x0 + sc * x1;\n    var cy = (1 - sc) * y0 + sc * y1;\n    var cx2 = (1 - tc) * x2 + tc * x3;\n    var cy2 = (1 - tc) * y2 + tc * y3;\n    var dx = cx2 - cx;\n    var dy = cy2 - cy;\n\n    return dx * dx + dy * dy;\n}\n\nfunction compareByX(a, b) {\n    return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0];\n}\n\nfunction convexHull(points) {\n    points.sort(compareByX);\n\n    var lower = [];\n    for (var i = 0; i < points.length; i++) {\n        while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n            lower.pop();\n        }\n        lower.push(points[i]);\n    }\n\n    var upper = [];\n    for (var ii = points.length - 1; ii >= 0; ii--) {\n        while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[ii]) <= 0) {\n            upper.pop();\n        }\n        upper.push(points[ii]);\n    }\n\n    upper.pop();\n    lower.pop();\n    return lower.concat(upper);\n}\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalVideoTrack}.\n * @extends LocalTrackStats\n * @property {?VideoTrack#Dimensions} captureDimensions - Video capture resolution\n * @property {?VideoTrack#Dimensions} dimensions - Video encoding resolution\n * @property {?number} captureFrameRate - Video capture frame rate\n * @property {?number} frameRate - Video encoding frame rate\n */\nvar LocalVideoTrackStats = /** @class */ (function (_super) {\n    __extends(LocalVideoTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalVideoTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalVideoTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n        var captureDimensions = null;\n        if (typeof statsReport.frameWidthInput === 'number' &&\n            typeof statsReport.frameHeightInput === 'number') {\n            captureDimensions = {};\n            Object.defineProperties(captureDimensions, {\n                width: {\n                    value: statsReport.frameWidthInput,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightInput,\n                    enumerable: true\n                }\n            });\n        }\n        var dimensions = null;\n        if (typeof statsReport.frameWidthSent === 'number' &&\n            typeof statsReport.frameHeightSent === 'number') {\n            dimensions = {};\n            Object.defineProperties(dimensions, {\n                width: {\n                    value: statsReport.frameWidthSent,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightSent,\n                    enumerable: true\n                }\n            });\n        }\n        Object.defineProperties(_this, {\n            captureDimensions: {\n                value: captureDimensions,\n                enumerable: true\n            },\n            dimensions: {\n                value: dimensions,\n                enumerable: true\n            },\n            captureFrameRate: {\n                value: typeof statsReport.frameRateInput === 'number'\n                    ? statsReport.frameRateInput\n                    : null,\n                enumerable: true\n            },\n            frameRate: {\n                value: typeof statsReport.frameRateSent === 'number'\n                    ? statsReport.frameRateSent\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalVideoTrackStats;\n}(LocalTrackStats));\nmodule.exports = LocalVideoTrackStats;\n//# sourceMappingURL=localvideotrackstats.js.map","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $Array = Array;\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.toSpliced` method\n// https://tc39.es/ecma262/#sec-array.prototype.tospliced\n$({ target: 'Array', proto: true }, {\n  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {\n    var O = toIndexedObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var k = 0;\n    var insertCount, actualDeleteCount, newLen, A;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = $Array(newLen);\n\n    for (; k < actualStart; k++) A[k] = O[k];\n    for (; k < actualStart + insertCount; k++) A[k] = arguments[k - actualStart + 2];\n    for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n    return A;\n  }\n});\n\naddToUnscopables('toSpliced');\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = format;\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nfunction toTitleCase(string) {\n  return string.toString().trim().replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n    if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n      return match.toLowerCase();\n    }\n    if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n      return match;\n    }\n    return match.charAt(0).toUpperCase() + match.substr(1);\n  });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n  // There's no point trying to validate rfc822 fully, just look for ...@...\n  return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n  if (mightBeEmail(string)) {\n    console.warn(\"This arg looks like an email address, redacting.\");\n    return redacted;\n  }\n  return string;\n}\nfunction format() {\n  var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n  var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  var _str = s || \"\";\n  if (titleCase) {\n    _str = toTitleCase(s);\n  }\n  if (redactingEmail) {\n    _str = redactEmail(_str);\n  }\n  return _str;\n}","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VirtualBackgroundProcessor = exports.version = exports.isSupported = exports.Pipeline = exports.ImageFit = exports.GaussianBlurBackgroundProcessor = void 0;\nvar GaussianBlurBackgroundProcessor_1 = require(\"./processors/background/GaussianBlurBackgroundProcessor\");\nObject.defineProperty(exports, \"GaussianBlurBackgroundProcessor\", { enumerable: true, get: function () { return GaussianBlurBackgroundProcessor_1.GaussianBlurBackgroundProcessor; } });\nvar VirtualBackgroundProcessor_1 = require(\"./processors/background/VirtualBackgroundProcessor\");\nObject.defineProperty(exports, \"VirtualBackgroundProcessor\", { enumerable: true, get: function () { return VirtualBackgroundProcessor_1.VirtualBackgroundProcessor; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"ImageFit\", { enumerable: true, get: function () { return types_1.ImageFit; } });\nObject.defineProperty(exports, \"Pipeline\", { enumerable: true, get: function () { return types_1.Pipeline; } });\nvar support_1 = require(\"./utils/support\");\nObject.defineProperty(exports, \"isSupported\", { enumerable: true, get: function () { return support_1.isSupported; } });\nvar version_1 = require(\"./utils/version\");\nObject.defineProperty(exports, \"version\", { enumerable: true, get: function () { return version_1.version; } });\nif (typeof window !== 'undefined') {\n    window.Twilio = window.Twilio || {};\n    window.Twilio.VideoProcessors = __assign(__assign({}, window.Twilio.VideoProcessors), { GaussianBlurBackgroundProcessor: GaussianBlurBackgroundProcessor_1.GaussianBlurBackgroundProcessor, ImageFit: types_1.ImageFit, Pipeline: types_1.Pipeline, isSupported: support_1.isSupported, version: version_1.version, VirtualBackgroundProcessor: VirtualBackgroundProcessor_1.VirtualBackgroundProcessor });\n}\n//# sourceMappingURL=index.js.map","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isObject(regexp) ? getMethod(regexp, MATCH) : undefined;\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      var flags = toString(getRegExpFlags(rx));\n\n      if (stringIndexOf(flags, 'g') === -1) return regExpExec(rx, S);\n\n      var fullUnicode = stringIndexOf(flags, 'u') !== -1;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","!function(e,t){if(\"object\"===typeof exports&&\"object\"===typeof module)module.exports=t();else if(\"function\"===typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)(\"object\"===typeof exports?exports:e)[i]=n[i]}}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=1)}([function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,\"e\",function(){return o}),n.d(t,\"a\",function(){return a}),n.d(t,\"f\",function(){return u}),n.d(t,\"c\",function(){return c}),n.d(t,\"b\",function(){return s}),n.d(t,\"d\",function(){return f});var r,o=[\"user\",\"environment\"],a={USER:\"user\",ENVIRONMENT:\"environment\"},u=[\"jpg\",\"png\"],c={PNG:\"png\",JPG:\"jpg\"},s=(r={},i(r,\"jpg\",\"image/jpeg\"),i(r,\"png\",\"image/png\"),r),f={audio:!1,video:!0}},function(e,t,n){e.exports=n(2)},function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0}),n.d(t,\"FACING_MODES\",function(){return s}),n.d(t,\"IMAGE_TYPES\",function(){return f});var r=n(3),o=n(5),a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=r.a.IMAGE_TYPES.PNG,c=function(){function e(t){i(this,e),this.videoElement=t,this.stream=null,this.numberOfMaxResolutionTry=1,this.settings=null,this.windowURL=r.a.getWindowURL(),this.mediaDevices=r.a.getNavigatorMediaDevices()}return a(e,[{key:\"_getStreamDevice\",value:function(e,t){var n=this;return new Promise(function(i,o){var a=r.a.getIdealConstraints(e,t);n.mediaDevices.getUserMedia(a).then(function(e){n._gotStream(e),i(e)}).catch(function(e){o(e)})})}},{key:\"_getStreamDeviceMaxResolution\",value:function(e){var t=this,n=r.a.getMaxResolutionConstraints(e,this.numberOfMaxResolutionTry);if(null==n){var i={};return this._getStreamDevice(e,i)}return new Promise(function(i,r){t.mediaDevices.getUserMedia(n).then(function(e){t._gotStream(e),i(e)}).catch(function(n){setTimeout(function(){t.numberOfMaxResolutionTry+=1,t._getStreamDeviceMaxResolution(e).catch(function(){r(n)})},20)})})}},{key:\"_setVideoSrc\",value:function(e){if(\"srcObject\"in this.videoElement)this.videoElement.srcObject=e;else{var t=this.windowURL.createObjectURL(e);this.videoElement.src=t}}},{key:\"_setSettings\",value:function(e){this.settings=null;var t=e&&e.getTracks?e.getTracks():[];t.length>0&&t[0].getSettings&&(this.settings=t[0].getSettings())}},{key:\"_gotStream\",value:function(e){this.stream=e,this._setSettings(e),this._setVideoSrc(e)}},{key:\"getCameraSettings\",value:function(){return this.settings}},{key:\"startCamera\",value:function(e,t){var n=this;return this.stopCamera().then(function(){}).catch(function(){}).then(function(){return n._getStreamDevice(e,t)})}},{key:\"startCameraMaxResolution\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.stopCamera().then(function(){}).catch(function(){}).then(function(){return e._getStreamDeviceMaxResolution(t)})}},{key:\"getDataUri\",value:function(e){var t={sizeFactor:void 0===e.sizeFactor?o.c:e.sizeFactor,imageType:void 0===e.imageType?u:e.imageType,imageCompression:void 0===e.imageCompression?o.a:e.imageCompression,isImageMirror:void 0===e.isImageMirror?o.b:e.isImageMirror};return r.a.getDataUri(this.videoElement,t)}},{key:\"stopCamera\",value:function(){var e=this;return new Promise(function(t,n){e.stream&&(e.stream.getTracks().forEach(function(e){e.stop()}),e.videoElement.src=\"\",e.stream=null,e._setSettings(null),t()),n(Error(\"no stream to stop!\"))})}}]),e}(),s=r.a.FACING_MODES,f=r.a.IMAGE_TYPES;t.default=c},function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var r=n(4),o=n(0),a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=function(){function e(){i(this,e)}return a(e,null,[{key:\"getDataUri\",value:function(e,t){var n=t.sizeFactor,i=t.imageType,o=t.imageCompression,a=t.isImageMirror,u=e.videoWidth,c=e.videoHeight,s=Object(r.b)(u,c,n),f=s.imageWidth,d=s.imageHeight,l=document.createElement(\"canvas\");l.width=f,l.height=d;var g=l.getContext(\"2d\");return a&&g.setTransform(-1,0,0,1,l.width,0),g.drawImage(e,0,0,f,d),Object(r.a)(l,i,o)}},{key:\"getWindowURL\",value:function(){return window.URL||window.webkitURL||window.mozURL||window.msURL}},{key:\"getNavigatorMediaDevices\",value:function(){var e=null,t=!(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia),n=!(!navigator.mozGetUserMedia&&!navigator.webkitGetUserMedia);if(t)e=navigator.mediaDevices;else if(n){var i=navigator.mozGetUserMedia||navigator.webkitGetUserMedia,r={getUserMedia:function(e){return new Promise(function(t,n){i.call(navigator,e,t,n)})}};e=Object.assign(i,r)}return e}},{key:\"isSupportedFacingMode\",value:function(){return e.getNavigatorMediaDevices().getSupportedConstraints().facingMode}},{key:\"getIdealConstraints\",value:function(e,t){var n={audio:!1,video:{}};if(Object(r.c)(e,t))return o.d;var i=navigator.mediaDevices.getSupportedConstraints();return i.width&&i.height&&i.facingMode?(e&&o.e.includes(e)&&(n.video.facingMode=e),t&&t.width&&(n.video.width=t.width),t&&t.height&&(n.video.height=t.height),n):(console.error(\"Constraint width height or facingMode not supported!\"),o.d)}},{key:\"getMaxResolutionConstraints\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1],i=e.getIdealConstraints(t),r=i.video.facingMode,o=[{width:{min:640},ideal:{facingMode:r}},{width:{min:800},ideal:{facingMode:r}},{width:{min:900},ideal:{facingMode:r}},{width:{min:1024},ideal:{facingMode:r}},{width:{min:1080},ideal:{facingMode:r}},{width:{min:1280},ideal:{facingMode:r}},{width:{min:1920},ideal:{facingMode:r}},{width:{min:2560},ideal:{facingMode:r}},{width:{min:3840},ideal:{facingMode:r}}];if(n>=o.length)return null;var a=o.slice(0,-n);return i.video.advanced=a,i}},{key:\"FACING_MODES\",get:function(){return o.a}},{key:\"IMAGE_TYPES\",get:function(){return o.c}}]),e}();t.a=u},function(e,t,n){\"use strict\";function i(e,t){if(!(t>=0&&t<=1))throw new Error(t+\" is invalid imageCompression, choose between: [0, 1]\");if(!s.f.includes(e))throw new Error(e+\" is invalid imageType, choose between: \"+s.f.join(\", \"));return!0}function r(e,t){var n={};try{i(e,t),n.imageType=e,n.imageCompression=t}catch(e){console.error(e),console.error(\"default value of \"+s.c.PNG+\" is used\"),n.imageType=s.c.PNG,n.imageCompression=null}return n}function o(e,t,n){var i=e*parseFloat(n);return{imageWidth:i,imageHeight:t/(e/i)}}function a(e,t,n){return r(t,n).imageType===s.c.JPG?n?e.toDataURL(s.b[s.c.JPG],n):e.toDataURL(s.b[s.c.JPG]):e.toDataURL(s.b[t])}function u(e){if(\"object\"===(\"undefined\"===typeof e?\"undefined\":f(e)))for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}function c(e,t){return!(e||t&&!u(t))}t.b=o,t.a=a,t.c=c;var s=n(0),f=\"function\"===typeof Symbol&&\"symbol\"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e}},function(e,t,n){\"use strict\";n.d(t,\"c\",function(){return i}),n.d(t,\"a\",function(){return r}),n.d(t,\"b\",function(){return o});var i=1,r=null,o=!1}])});\n//# sourceMappingURL=index.js.map","var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","'use strict';\n/**\n * Return a Promise that resolves after `timeout` milliseconds.\n * @param {?number} [timeout=0]\n * @returns {Promise<void>}\n */\nfunction delay(timeout) {\n    timeout = typeof timeout === 'number' ? timeout : 0;\n    return new Promise(function (resolve) { return setTimeout(resolve, timeout); });\n}\n/**\n * Attempt to detect silence. The Promise returned by this function returns\n * false as soon as audio is detected or true after `timeout` milliseconds.\n * @param {AudioContext} audioContext\n * @param {MediaStream} stream\n * @param {?number} [timeout=250]\n * @returns {Promise<boolean>}\n */\nfunction detectSilence(audioContext, stream, timeout) {\n    timeout = typeof timeout === 'number' ? timeout : 250;\n    var source = audioContext.createMediaStreamSource(stream);\n    var analyser = audioContext.createAnalyser();\n    analyser.fftSize = 2048;\n    source.connect(analyser);\n    var samples = new Uint8Array(analyser.fftSize);\n    var timeoutDidFire = false;\n    setTimeout(function () { timeoutDidFire = true; }, timeout);\n    /**\n     * We can't use async/await yet, so I need to factor this out.\n     * @returns {Promise<boolean>}\n     */\n    function doDetectSilence() {\n        if (timeoutDidFire) {\n            return Promise.resolve(true);\n        }\n        analyser.getByteTimeDomainData(samples);\n        // NOTE(mpatwardhan): An audio MediaStreamTrack can be silent either due to all samples\n        // being equal to 128 or all samples being equal to 0.\n        return samples.some(function (sample) { return sample !== 128 && sample !== 0; })\n            ? Promise.resolve(false)\n            : delay().then(doDetectSilence);\n    }\n    return doDetectSilence().then(function (isSilent) {\n        source.disconnect();\n        return isSilent;\n    }, function (error) {\n        source.disconnect();\n        throw error;\n    });\n}\nmodule.exports = detectSilence;\n//# sourceMappingURL=detectsilence.js.map","'use strict';\n/**\n * RTCRtpSender shim.\n * @param {MediaStreamTrack} track\n * @property {MediaStreamTrack} track\n */\nvar RTCRtpSenderShim = /** @class */ (function () {\n    function RTCRtpSenderShim(track) {\n        Object.defineProperties(this, {\n            track: {\n                enumerable: true,\n                value: track,\n                writable: true\n            }\n        });\n    }\n    return RTCRtpSenderShim;\n}());\n// NOTE(mmalavalli): Because of the way we will be using this shim, there\n// are a couple of use cases that will not be covered:\n//\n// /* Case 1 */\n// const sender = pc.addTrack(track);\n// assert.equal(sender.track, track);\n// pc.removeTrack(sender);\n// assert.equal(sender.track, null); /* Error */\n//\n// /* Case 2 */\n// const sender = pc.addTrack(track);\n// const senders1 = new Set(pc.getSenders());\n// assert(senders1.has(sender));\n// pc.removeTrack(track);\n// const senders2 = new Set(pc.getSenders());\n// assert(senders2.has(sender)); /* Error */\n//\n// For now, since we only use senders for passing them to RTCPeerConnection#removeTrack(),\n// we will omit handling these use cases for now, and revisit them when we start\n// using the RTCRtpSender APIs.\nmodule.exports = RTCRtpSenderShim;\n//# sourceMappingURL=rtcrtpsender.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module params\n */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar predicates_1 = require(\"../common/predicates\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar paramType_1 = require(\"./paramType\");\n/** @hidden */\nvar hasOwn = Object.prototype.hasOwnProperty;\n/** @hidden */\nvar isShorthand = function (cfg) {\n    return ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n};\n/** @internalapi */\nvar DefType;\n(function (DefType) {\n    DefType[DefType[\"PATH\"] = 0] = \"PATH\";\n    DefType[DefType[\"SEARCH\"] = 1] = \"SEARCH\";\n    DefType[DefType[\"CONFIG\"] = 2] = \"CONFIG\";\n})(DefType = exports.DefType || (exports.DefType = {}));\n/** @hidden */\nfunction unwrapShorthand(cfg) {\n    cfg = isShorthand(cfg) && { value: cfg } || cfg;\n    getStaticDefaultValue['__cacheable'] = true;\n    function getStaticDefaultValue() {\n        return cfg.value;\n    }\n    return common_1.extend(cfg, {\n        $$fn: predicates_1.isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue,\n    });\n}\n/** @hidden */\nfunction getType(cfg, urlType, location, id, paramTypes) {\n    if (cfg.type && urlType && urlType.name !== 'string')\n        throw new Error(\"Param '\" + id + \"' has two type configurations.\");\n    if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type))\n        return paramTypes.type(cfg.type);\n    if (urlType)\n        return urlType;\n    if (!cfg.type) {\n        var type = location === DefType.CONFIG ? 'any' :\n            location === DefType.PATH ? 'path' :\n                location === DefType.SEARCH ? 'query' : 'string';\n        return paramTypes.type(type);\n    }\n    return cfg.type instanceof paramType_1.ParamType ? cfg.type : paramTypes.type(cfg.type);\n}\n/**\n * @internalapi\n * returns false, true, or the squash value to indicate the \"default parameter url squash policy\".\n */\nfunction getSquashPolicy(config, isOptional, defaultPolicy) {\n    var squash = config.squash;\n    if (!isOptional || squash === false)\n        return false;\n    if (!predicates_1.isDefined(squash) || squash == null)\n        return defaultPolicy;\n    if (squash === true || predicates_1.isString(squash))\n        return squash;\n    throw new Error(\"Invalid squash policy: '\" + squash + \"'. Valid policies: false, true, or arbitrary string\");\n}\n/** @internalapi */\nfunction getReplace(config, arrayMode, isOptional, squash) {\n    var defaultPolicy = [\n        { from: '', to: (isOptional || arrayMode ? undefined : '') },\n        { from: null, to: (isOptional || arrayMode ? undefined : '') },\n    ];\n    var replace = predicates_1.isArray(config.replace) ? config.replace : [];\n    if (predicates_1.isString(squash))\n        replace.push({ from: squash, to: undefined });\n    var configuredKeys = common_1.map(replace, hof_1.prop('from'));\n    return common_1.filter(defaultPolicy, function (item) { return configuredKeys.indexOf(item.from) === -1; }).concat(replace);\n}\n/** @internalapi */\nvar Param = /** @class */ (function () {\n    function Param(id, type, config, location, urlMatcherFactory) {\n        config = unwrapShorthand(config);\n        type = getType(config, type, location, id, urlMatcherFactory.paramTypes);\n        var arrayMode = getArrayMode();\n        type = arrayMode ? type.$asArray(arrayMode, location === DefType.SEARCH) : type;\n        var isOptional = config.value !== undefined || location === DefType.SEARCH;\n        var dynamic = predicates_1.isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n        var raw = predicates_1.isDefined(config.raw) ? !!config.raw : !!type.raw;\n        var squash = getSquashPolicy(config, isOptional, urlMatcherFactory.defaultSquashPolicy());\n        var replace = getReplace(config, arrayMode, isOptional, squash);\n        var inherit = predicates_1.isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n        // array config: param name (param[]) overrides default settings.  explicit config overrides param name.\n        function getArrayMode() {\n            var arrayDefaults = { array: (location === DefType.SEARCH ? 'auto' : false) };\n            var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n            return common_1.extend(arrayDefaults, arrayParamNomenclature, config).array;\n        }\n        common_1.extend(this, { id: id, type: type, location: location, isOptional: isOptional, dynamic: dynamic, raw: raw, squash: squash, replace: replace, inherit: inherit, array: arrayMode, config: config });\n    }\n    Param.values = function (params, values) {\n        if (values === void 0) { values = {}; }\n        var paramValues = {};\n        for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {\n            var param = params_1[_i];\n            paramValues[param.id] = param.value(values[param.id]);\n        }\n        return paramValues;\n    };\n    /**\n     * Finds [[Param]] objects which have different param values\n     *\n     * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n     *\n     * @param params: The list of Param objects to filter\n     * @param values1: The first set of parameter values\n     * @param values2: the second set of parameter values\n     *\n     * @returns any Param objects whose values were different between values1 and values2\n     */\n    Param.changed = function (params, values1, values2) {\n        if (values1 === void 0) { values1 = {}; }\n        if (values2 === void 0) { values2 = {}; }\n        return params.filter(function (param) { return !param.type.equals(values1[param.id], values2[param.id]); });\n    };\n    /**\n     * Checks if two param value objects are equal (for a set of [[Param]] objects)\n     *\n     * @param params The list of [[Param]] objects to check\n     * @param values1 The first set of param values\n     * @param values2 The second set of param values\n     *\n     * @returns true if the param values in values1 and values2 are equal\n     */\n    Param.equals = function (params, values1, values2) {\n        if (values1 === void 0) { values1 = {}; }\n        if (values2 === void 0) { values2 = {}; }\n        return Param.changed(params, values1, values2).length === 0;\n    };\n    /** Returns true if a the parameter values are valid, according to the Param definitions */\n    Param.validates = function (params, values) {\n        if (values === void 0) { values = {}; }\n        return params.map(function (param) { return param.validates(values[param.id]); }).reduce(common_1.allTrueR, true);\n    };\n    Param.prototype.isDefaultValue = function (value) {\n        return this.isOptional && this.type.equals(this.value(), value);\n    };\n    /**\n     * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n     * default value, which may be the result of an injectable function.\n     */\n    Param.prototype.value = function (value) {\n        var _this = this;\n        /**\n         * [Internal] Get the default value of a parameter, which may be an injectable function.\n         */\n        var getDefaultValue = function () {\n            if (_this._defaultValueCache)\n                return _this._defaultValueCache.defaultValue;\n            if (!coreservices_1.services.$injector)\n                throw new Error('Injectable functions cannot be called at configuration time');\n            var defaultValue = coreservices_1.services.$injector.invoke(_this.config.$$fn);\n            if (defaultValue !== null && defaultValue !== undefined && !_this.type.is(defaultValue))\n                throw new Error(\"Default value (\" + defaultValue + \") for parameter '\" + _this.id + \"' is not an instance of ParamType (\" + _this.type.name + \")\");\n            if (_this.config.$$fn['__cacheable']) {\n                _this._defaultValueCache = { defaultValue: defaultValue };\n            }\n            return defaultValue;\n        };\n        var replaceSpecialValues = function (val) {\n            for (var _i = 0, _a = _this.replace; _i < _a.length; _i++) {\n                var tuple = _a[_i];\n                if (tuple.from === val)\n                    return tuple.to;\n            }\n            return val;\n        };\n        value = replaceSpecialValues(value);\n        return predicates_1.isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n    };\n    Param.prototype.isSearch = function () {\n        return this.location === DefType.SEARCH;\n    };\n    Param.prototype.validates = function (value) {\n        // There was no parameter value, but the param is optional\n        if ((predicates_1.isUndefined(value) || value === null) && this.isOptional)\n            return true;\n        // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n        var normalized = this.type.$normalize(value);\n        if (!this.type.is(normalized))\n            return false;\n        // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n        var encoded = this.type.encode(normalized);\n        return !(predicates_1.isString(encoded) && !this.type.pattern.exec(encoded));\n    };\n    Param.prototype.toString = function () {\n        return \"{Param:\" + this.id + \" \" + this.type + \" squash: '\" + this.squash + \"' optional: \" + this.isOptional + \"}\";\n    };\n    return Param;\n}());\nexports.Param = Param;\n//# sourceMappingURL=param.js.map","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-map -- safe\n  Map: Map,\n  set: uncurryThis(MapPrototype.set),\n  get: uncurryThis(MapPrototype.get),\n  has: uncurryThis(MapPrototype.has),\n  remove: uncurryThis(MapPrototype['delete']),\n  proto: MapPrototype\n};\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar DefaultBackoff = require('../../util/backoff');\nvar _a = require('../../webrtc'), DefaultRTCIceCandidate = _a.RTCIceCandidate, DefaultRTCPeerConnection = _a.RTCPeerConnection, DefaultRTCSessionDescription = _a.RTCSessionDescription, getStatistics = _a.getStats;\nvar util = require('../../webrtc/util');\nvar _b = require('../../util/constants'), DEFAULT_ICE_GATHERING_TIMEOUT_MS = _b.DEFAULT_ICE_GATHERING_TIMEOUT_MS, DEFAULT_LOG_LEVEL = _b.DEFAULT_LOG_LEVEL, DEFAULT_SESSION_TIMEOUT_SEC = _b.DEFAULT_SESSION_TIMEOUT_SEC, iceRestartBackoffConfig = _b.iceRestartBackoffConfig;\nvar _c = require('../../util/sdp'), addOrRewriteNewTrackIds = _c.addOrRewriteNewTrackIds, addOrRewriteTrackIds = _c.addOrRewriteTrackIds, createCodecMapForMediaSection = _c.createCodecMapForMediaSection, disableRtx = _c.disableRtx, enableDtxForOpus = _c.enableDtxForOpus, filterLocalCodecs = _c.filterLocalCodecs, getMediaSections = _c.getMediaSections, removeSSRCAttributes = _c.removeSSRCAttributes, revertSimulcast = _c.revertSimulcast, setCodecPreferences = _c.setCodecPreferences, setSimulcast = _c.setSimulcast;\nvar DefaultTimeout = require('../../util/timeout');\nvar _d = require('../../util/twilio-video-errors'), MediaClientLocalDescFailedError = _d.MediaClientLocalDescFailedError, MediaClientRemoteDescFailedError = _d.MediaClientRemoteDescFailedError;\nvar _e = require('../../util'), buildLogLevels = _e.buildLogLevels, getPlatform = _e.getPlatform, isChromeScreenShareTrack = _e.isChromeScreenShareTrack, oncePerTick = _e.oncePerTick, defer = _e.defer;\nvar IceBox = require('./icebox');\nvar DefaultIceConnectionMonitor = require('./iceconnectionmonitor.js');\nvar DataTrackReceiver = require('../../data/receiver');\nvar MediaTrackReceiver = require('../../media/track/receiver');\nvar StateMachine = require('../../statemachine');\nvar Log = require('../../util/log');\nvar TrackMatcher = require('../../util/sdp/trackmatcher');\nvar workaroundIssue8329 = require('../../util/sdp/issue8329');\nvar guess = util.guessBrowser();\nvar platform = getPlatform();\nvar isAndroid = /android/.test(platform);\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar nInstances = 0;\n/*\nPeerConnectionV2 States\n-----------------------\n\n    +------+    +--------+\n    |      |    |        |\n    | open |--->| closed |\n    |      |    |        |\n    +------+    +--------+\n      |  ^          ^\n      |  |          |\n      |  |          |\n      v  |          |\n  +----------+      |\n  |          |      |\n  | updating |------+\n  |          |\n  +----------+\n\n*/\nvar states = {\n    open: [\n        'closed',\n        'updating'\n    ],\n    updating: [\n        'closed',\n        'open'\n    ],\n    closed: []\n};\n/**\n * @extends StateMachine\n * @property {id}\n * @emits PeerConnectionV2#connectionStateChanged\n * @emits PeerConnectionV2#iceConnectionStateChanged\n * @emits PeerConnectionV2#candidates\n * @emits PeerConnectionV2#description\n */\nvar PeerConnectionV2 = /** @class */ (function (_super) {\n    __extends(PeerConnectionV2, _super);\n    /**\n     * Construct a {@link PeerConnectionV2}.\n     * @param {string} id\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} [options]\n     */\n    function PeerConnectionV2(id, encodingParameters, preferredCodecs, options) {\n        var _this = _super.call(this, 'open', states) || this;\n        options = Object.assign({\n            enableDscp: false,\n            dummyAudioMediaStreamTrack: null,\n            isChromeScreenShareTrack: isChromeScreenShareTrack,\n            iceServers: [],\n            logLevel: DEFAULT_LOG_LEVEL,\n            offerOptions: {},\n            revertSimulcast: revertSimulcast,\n            sessionTimeout: DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n            setCodecPreferences: setCodecPreferences,\n            setSimulcast: setSimulcast,\n            Backoff: DefaultBackoff,\n            IceConnectionMonitor: DefaultIceConnectionMonitor,\n            RTCIceCandidate: DefaultRTCIceCandidate,\n            RTCPeerConnection: DefaultRTCPeerConnection,\n            RTCSessionDescription: DefaultRTCSessionDescription,\n            Timeout: DefaultTimeout\n        }, options);\n        var configuration = getConfiguration(options);\n        var logLevels = buildLogLevels(options.logLevel);\n        var RTCPeerConnection = options.RTCPeerConnection;\n        if (options.enableDscp === true) {\n            options.chromeSpecificConstraints = options.chromeSpecificConstraints || {};\n            options.chromeSpecificConstraints.optional = options.chromeSpecificConstraints.optional || [];\n            options.chromeSpecificConstraints.optional.push({ googDscp: true });\n        }\n        var log = options.log ? options.log.createLog('webrtc', _this) : new Log('webrtc', _this, logLevels, options.loggerName);\n        var peerConnection = new RTCPeerConnection(configuration, options.chromeSpecificConstraints);\n        if (options.dummyAudioMediaStreamTrack) {\n            peerConnection.addTrack(options.dummyAudioMediaStreamTrack);\n        }\n        Object.defineProperties(_this, {\n            _appliedTrackIdsToAttributes: {\n                value: new Map(),\n                writable: true\n            },\n            _dataChannels: {\n                value: new Map()\n            },\n            _dataTrackReceivers: {\n                value: new Set()\n            },\n            _descriptionRevision: {\n                writable: true,\n                value: 0\n            },\n            _didGenerateLocalCandidates: {\n                writable: true,\n                value: false\n            },\n            _enableDscp: {\n                value: options.enableDscp\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _isChromeScreenShareTrack: {\n                value: options.isChromeScreenShareTrack,\n            },\n            _iceGatheringFailed: {\n                value: false,\n                writable: true\n            },\n            _iceGatheringTimeout: {\n                value: new options.Timeout(function () { return _this._handleIceGatheringTimeout(); }, DEFAULT_ICE_GATHERING_TIMEOUT_MS, false)\n            },\n            _iceRestartBackoff: {\n                // eslint-disable-next-line new-cap\n                value: new options.Backoff(iceRestartBackoffConfig)\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _isIceConnectionInactive: {\n                writable: true,\n                value: false\n            },\n            _isIceLite: {\n                writable: true,\n                value: false\n            },\n            _isIceRestartBackoffInProgress: {\n                writable: true,\n                value: false\n            },\n            _isRestartingIce: {\n                writable: true,\n                value: false\n            },\n            _lastIceConnectionState: {\n                writable: true,\n                value: null\n            },\n            _lastStableDescriptionRevision: {\n                writable: true,\n                value: 0\n            },\n            _localCandidates: {\n                writable: true,\n                value: []\n            },\n            _localCodecs: {\n                value: new Set()\n            },\n            _localCandidatesRevision: {\n                writable: true,\n                value: 1\n            },\n            _localDescriptionWithoutSimulcast: {\n                writable: true,\n                value: null\n            },\n            _localDescription: {\n                writable: true,\n                value: null\n            },\n            _localUfrag: {\n                writable: true,\n                value: null\n            },\n            _log: {\n                value: log\n            },\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _remoteCodecMaps: {\n                value: new Map()\n            },\n            _rtpSenders: {\n                value: new Map()\n            },\n            _rtpNewSenders: {\n                value: new Set()\n            },\n            _iceConnectionMonitor: {\n                value: new options.IceConnectionMonitor(peerConnection)\n            },\n            _mediaTrackReceivers: {\n                value: new Set()\n            },\n            _needsAnswer: {\n                writable: true,\n                value: false\n            },\n            _negotiationRole: {\n                writable: true,\n                value: null\n            },\n            _offerOptions: {\n                writable: true,\n                value: options.offerOptions\n            },\n            _onEncodingParametersChanged: {\n                value: oncePerTick(function () {\n                    if (!_this._needsAnswer) {\n                        updateEncodingParameters(_this);\n                    }\n                })\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _preferredAudioCodecs: {\n                value: preferredCodecs.audio\n            },\n            _preferredVideoCodecs: {\n                value: preferredCodecs.video\n            },\n            _shouldApplyDtx: {\n                value: preferredCodecs.audio.every(function (_a) {\n                    var codec = _a.codec;\n                    return codec !== 'opus';\n                })\n                    || preferredCodecs.audio.some(function (_a) {\n                        var codec = _a.codec, dtx = _a.dtx;\n                        return codec === 'opus' && dtx;\n                    })\n            },\n            _queuedDescription: {\n                writable: true,\n                value: null\n            },\n            _iceReconnectTimeout: {\n                value: new options.Timeout(function () {\n                    log.debug('ICE reconnect timed out');\n                    _this.close();\n                }, options.sessionTimeout, false)\n            },\n            _recycledTransceivers: {\n                value: {\n                    audio: [],\n                    video: []\n                }\n            },\n            _replaceTrackPromises: {\n                value: new Map()\n            },\n            _remoteCandidates: {\n                writable: true,\n                value: new IceBox()\n            },\n            _setCodecPreferences: {\n                // NOTE(mmalavalli): Re-ordering payload types in order to make sure a non-H264\n                // preferred codec is selected does not work on Android Firefox due to this behavior:\n                // https://bugzilla.mozilla.org/show_bug.cgi?id=1683258. So, we work around this by\n                // not applying any non-H264 preferred video codec.\n                value: isFirefox && isAndroid && preferredCodecs.video[0] && preferredCodecs.video[0].codec.toLowerCase() !== 'h264'\n                    ? function (sdp) { return sdp; }\n                    : options.setCodecPreferences\n            },\n            _setSimulcast: {\n                value: options.setSimulcast\n            },\n            _revertSimulcast: {\n                value: options.revertSimulcast\n            },\n            _RTCIceCandidate: {\n                value: options.RTCIceCandidate\n            },\n            _RTCPeerConnection: {\n                value: options.RTCPeerConnection\n            },\n            _RTCSessionDescription: {\n                value: options.RTCSessionDescription\n            },\n            _shouldOffer: {\n                writable: true,\n                value: false\n            },\n            _shouldRestartIce: {\n                writable: true,\n                value: false\n            },\n            _trackIdsToAttributes: {\n                value: new Map(),\n                writable: true\n            },\n            _trackMatcher: {\n                writable: true,\n                value: null\n            },\n            _mediaTrackSenderToPublisherHints: {\n                value: new Map()\n            },\n            id: {\n                enumerable: true,\n                value: id\n            }\n        });\n        encodingParameters.on('changed', _this._onEncodingParametersChanged);\n        peerConnection.addEventListener('connectionstatechange', _this._handleConnectionStateChange.bind(_this));\n        peerConnection.addEventListener('datachannel', _this._handleDataChannelEvent.bind(_this));\n        peerConnection.addEventListener('icecandidate', _this._handleIceCandidateEvent.bind(_this));\n        peerConnection.addEventListener('iceconnectionstatechange', _this._handleIceConnectionStateChange.bind(_this));\n        peerConnection.addEventListener('icegatheringstatechange', _this._handleIceGatheringStateChange.bind(_this));\n        peerConnection.addEventListener('signalingstatechange', _this._handleSignalingStateChange.bind(_this));\n        peerConnection.addEventListener('track', _this._handleTrackEvent.bind(_this));\n        var self = _this;\n        _this.on('stateChanged', function stateChanged(state) {\n            if (state !== 'closed') {\n                return;\n            }\n            self.removeListener('stateChanged', stateChanged);\n            self._dataChannels.forEach(function (dataChannel, dataTrackSender) {\n                self.removeDataTrackSender(dataTrackSender);\n            });\n        });\n        return _this;\n    }\n    PeerConnectionV2.prototype.toString = function () {\n        return \"[PeerConnectionV2 #\" + this._instanceId + \": \" + this.id + \"]\";\n    };\n    PeerConnectionV2.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n        this._log.debug('Setting setEffectiveAdaptiveSimulcast: ', effectiveAdaptiveSimulcast);\n        // clear adaptive simulcast from codec preferences if it was set.\n        this._preferredVideoCodecs.forEach(function (cs) {\n            if ('adaptiveSimulcast' in cs) {\n                cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n            }\n        });\n    };\n    Object.defineProperty(PeerConnectionV2.prototype, \"_shouldApplySimulcast\", {\n        get: function () {\n            if (!isChrome && !isSafari) {\n                return false;\n            }\n            // adaptiveSimulcast is set to false after connected message is received if other party does not support it.\n            var simulcast = this._preferredVideoCodecs.some(function (cs) {\n                return cs.codec.toLowerCase() === 'vp8' && cs.simulcast && cs.adaptiveSimulcast !== false;\n            });\n            return simulcast;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"connectionState\", {\n        /**\n         * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's RTCPeerConnectionState\n         * if supported by the browser, its RTCIceConnectionState otherwise.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this.iceConnectionState === 'failed'\n                ? 'failed' : (this._peerConnection.connectionState || this.iceConnectionState);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"iceConnectionState\", {\n        /**\n         * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's\n         * RTCIceConnectionState.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return ((this._isIceConnectionInactive && this._peerConnection.iceConnectionState === 'disconnected') || this._iceGatheringFailed)\n                ? 'failed' : this._peerConnection.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"isApplicationSectionNegotiated\", {\n        /**\n         * Whether the {@link PeerConnectionV2} has negotiated or is in the process\n         * of negotiating the application m= section.\n         * @returns {boolean}\n         */\n        get: function () {\n            if (this._peerConnection.signalingState !== 'closed') {\n                // accessing .localDescription in 'closed' state causes it throw exceptions.\n                return this._peerConnection.localDescription\n                    ? getMediaSections(this._peerConnection.localDescription.sdp, 'application').length > 0\n                    : false;\n            }\n            return true;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"_isAdaptiveSimulcastEnabled\", {\n        /**\n         * Whether adaptive simulcast is enabled.\n         * @returns {boolean}\n         */\n        get: function () {\n            var adaptiveSimulcastEntry = this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n            return adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === true;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @param {MediaStreamTrack} track\n     * @param {Array<RTCRtpEncodingParameters>} encodings\n     * @param {boolean} trackReplaced\n     * @returns {boolean} true if encodings were updated.\n     */\n    PeerConnectionV2.prototype._maybeUpdateEncodings = function (track, encodings, trackReplaced) {\n        if (trackReplaced === void 0) { trackReplaced = false; }\n        if (track.kind !== 'video' || track.readyState === 'ended') {\n            return false;\n        }\n        // NOTE(mmalavalli): There is no guarantee that CanvasCaptureMediaStreamTracks will always have \"width\" and \"height\"\n        // in their settings. So, we don't update the encodings if they are not present.\n        // Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1367082\n        var _a = track.getSettings(), height = _a.height, width = _a.width;\n        if (typeof height !== 'number' || typeof width !== 'number') {\n            return false;\n        }\n        // Note(mpatwardhan): always configure encodings for safari.\n        // for chrome only when adaptive simulcast enabled.\n        var browser = util.guessBrowser();\n        if (browser === 'safari' || (browser === 'chrome' && this._isAdaptiveSimulcastEnabled)) {\n            this._updateEncodings(track, encodings, trackReplaced);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Configures with default encodings depending on track type and resolution.\n     * Default configuration sets some encodings to disabled, and for others set scaleResolutionDownBy\n     * values. When trackReplaced is set to true, it will clear 'active' for any encodings that\n     * needs to be enabled.\n     * @param {MediaStreamTrack} track\n     * @param {Array<RTCRtpEncodingParameters>} encodings\n     * @param {boolean} trackReplaced\n     */\n    PeerConnectionV2.prototype._updateEncodings = function (track, encodings, trackReplaced) {\n        if (this._isChromeScreenShareTrack(track)) {\n            var screenShareActiveLayerConfig_1 = [\n                { scaleResolutionDownBy: 1 },\n                { scaleResolutionDownBy: 1 }\n            ];\n            encodings.forEach(function (encoding, i) {\n                var activeLayerConfig = screenShareActiveLayerConfig_1[i];\n                if (activeLayerConfig) {\n                    encoding.scaleResolutionDownBy = activeLayerConfig.scaleResolutionDownBy;\n                    if (trackReplaced) {\n                        delete encoding.active;\n                    }\n                }\n                else {\n                    encoding.active = false;\n                    delete encoding.scaleResolutionDownBy;\n                }\n            });\n        }\n        else {\n            var _a = track.getSettings(), width = _a.width, height = _a.height;\n            // NOTE(mpatwardhan): for non-screen share tracks\n            // enable layers depending on track resolutions\n            var pixelsToMaxActiveLayers = [\n                { pixels: 960 * 540, maxActiveLayers: 3 },\n                { pixels: 480 * 270, maxActiveLayers: 2 },\n                { pixels: 0, maxActiveLayers: 1 }\n            ];\n            var trackPixels_1 = width * height;\n            var activeLayersInfo = pixelsToMaxActiveLayers.find(function (layer) { return trackPixels_1 >= layer.pixels; });\n            var activeLayers_1 = Math.min(encodings.length, activeLayersInfo.maxActiveLayers);\n            encodings.forEach(function (encoding, i) {\n                var enabled = i < activeLayers_1;\n                if (enabled) {\n                    encoding.scaleResolutionDownBy = 1 << (activeLayers_1 - i - 1);\n                    if (trackReplaced) {\n                        encoding.active = true;\n                    }\n                }\n                else {\n                    encoding.active = false;\n                    delete encoding.scaleResolutionDownBy;\n                }\n            });\n        }\n        this._log.debug('_updateEncodings:', encodings.map(function (_a, i) {\n            var active = _a.active, scaleResolutionDownBy = _a.scaleResolutionDownBy;\n            return \"[\" + i + \": \" + active + \", \" + (scaleResolutionDownBy || 0) + \"]\";\n        }).join(', '));\n    };\n    /**\n     * Add an ICE candidate to the {@link PeerConnectionV2}.\n     * @private\n     * @param {object} candidate\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._addIceCandidate = function (candidate) {\n        var _this = this;\n        return Promise.resolve().then(function () {\n            candidate = new _this._RTCIceCandidate(candidate);\n            return _this._peerConnection.addIceCandidate(candidate);\n        }).catch(function (error) {\n            // NOTE(mmalavalli): Firefox 68+ now generates an RTCIceCandidate with an\n            // empty candidate string to signal end-of-candidates, followed by a null\n            // candidate. As of now, Chrome and Safari reject this RTCIceCandidate. Since\n            // this does not affect the media connection between Firefox 68+ and Chrome/Safari\n            // in Peer-to-Peer Rooms, we suppress the Error and log a warning message.\n            //\n            // Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n            //\n            _this._log.warn(\"Failed to add RTCIceCandidate \" + (candidate ? \"\\\"\" + candidate.candidate + \"\\\"\" : 'null') + \": \"\n                + error.message);\n        });\n    };\n    /**\n     * Add ICE candidates to the {@link PeerConnectionV2}.\n     * @private\n     * @param {Array<object>} candidates\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._addIceCandidates = function (candidates) {\n        return Promise.all(candidates.map(this._addIceCandidate, this)).then(function () { });\n    };\n    /**\n     * Add a new RTCRtpTransceiver or update an existing RTCRtpTransceiver for the\n     * given MediaStreamTrack.\n     * @private\n     * @param {MediaStreamTrack} track\n     * @returns {RTCRtpTransceiver}\n     */\n    PeerConnectionV2.prototype._addOrUpdateTransceiver = function (track) {\n        var _this = this;\n        var transceiver = takeRecycledTransceiver(this, track.kind);\n        if (transceiver && transceiver.sender) {\n            var oldTrackId = transceiver.sender.track ? transceiver.sender.track.id : null;\n            if (oldTrackId) {\n                this._log.warn(\"Reusing transceiver: \" + transceiver.mid + \"] \" + oldTrackId + \" => \" + track.id);\n            }\n            // NOTE(mpatwardhan):remember this transceiver while we replace track.\n            // we recycle transceivers that are not in use after 'negotiationCompleted', but we want to prevent\n            // this one from getting recycled while replaceTrack is pending.\n            this._replaceTrackPromises.set(transceiver, transceiver.sender.replaceTrack(track).then(function () {\n                transceiver.direction = 'sendrecv';\n            }, function () {\n                // Do nothing.\n            }).finally(function () {\n                _this._replaceTrackPromises.delete(transceiver);\n            }));\n            return transceiver;\n        }\n        return this._peerConnection.addTransceiver(track);\n    };\n    /**\n     * Check the {@link IceBox}.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._checkIceBox = function (description) {\n        var ufrag = getUfrag(description);\n        if (!ufrag) {\n            return Promise.resolve();\n        }\n        var candidates = this._remoteCandidates.setUfrag(ufrag);\n        return this._addIceCandidates(candidates);\n    };\n    /**\n     * Create an answer and set it on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<boolean>}\n     */\n    PeerConnectionV2.prototype._answer = function (offer) {\n        var _this = this;\n        return Promise.resolve().then(function () {\n            if (!_this._negotiationRole) {\n                _this._negotiationRole = 'answerer';\n            }\n            return _this._setRemoteDescription(offer);\n        }).catch(function () {\n            throw new MediaClientRemoteDescFailedError();\n        }).then(function () {\n            return _this._peerConnection.createAnswer();\n        }).then(function (answer) {\n            if (isFirefox) {\n                // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n                // RTX in Firefox 79+. For more details about the bug, please go here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n                answer = new _this._RTCSessionDescription({\n                    sdp: disableRtx(answer.sdp),\n                    type: answer.type\n                });\n            }\n            else {\n                answer = workaroundIssue8329(answer);\n            }\n            // NOTE(mpatwardhan): Upcoming chrome versions are going to remove ssrc attributes\n            // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n            // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n            // We are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n            // this also helps reduce bytes on wires\n            var updatedSdp = removeSSRCAttributes(answer.sdp, ['mslabel', 'label']);\n            if (_this._shouldApplySimulcast) {\n                var sdpWithoutSimulcast = updatedSdp;\n                updatedSdp = _this._setSimulcast(sdpWithoutSimulcast, _this._trackIdsToAttributes);\n                // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n                // unset simulcast for sections in local offer where corresponding\n                // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n                updatedSdp = _this._revertSimulcast(updatedSdp, sdpWithoutSimulcast, offer.sdp);\n            }\n            // NOTE(mmalavalli): Work around Chromium bug 1074421.\n            // https://bugs.chromium.org/p/chromium/issues/detail?id=1074421\n            updatedSdp = updatedSdp.replace(/42e015/g, '42e01f');\n            return _this._setLocalDescription({\n                type: answer.type,\n                sdp: updatedSdp\n            });\n        }).then(function () {\n            return _this._checkIceBox(offer);\n        }).then(function () {\n            return _this._queuedDescription\n                && _this._updateDescription(_this._queuedDescription);\n        }).then(function () {\n            _this._queuedDescription = null;\n            return _this._maybeReoffer(_this._peerConnection.localDescription);\n        }).catch(function (error) {\n            var errorToThrow = error instanceof MediaClientRemoteDescFailedError ? error : new MediaClientLocalDescFailedError();\n            _this._publishMediaWarning({\n                message: 'Failed to _answer',\n                code: errorToThrow.code,\n                error: error\n            });\n            throw errorToThrow;\n        });\n    };\n    /**\n     * Close the underlying RTCPeerConnection. Returns false if the\n     * RTCPeerConnection was already closed.\n     * @private\n     * @returns {boolean}\n     */\n    PeerConnectionV2.prototype._close = function () {\n        this._iceConnectionMonitor.stop();\n        if (this._peerConnection.signalingState !== 'closed') {\n            this._peerConnection.close();\n            this.preempt('closed');\n            this._encodingParameters.removeListener('changed', this._onEncodingParametersChanged);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Handle a \"connectionstatechange\" event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleConnectionStateChange = function () {\n        this.emit('connectionStateChanged');\n    };\n    /**\n     * Handle a \"datachannel\" event.\n     * @private\n     * @param {RTCDataChannelEvent} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleDataChannelEvent = function (event) {\n        var _this = this;\n        var dataChannel = event.channel;\n        var dataTrackReceiver = new DataTrackReceiver(dataChannel);\n        this._dataTrackReceivers.add(dataTrackReceiver);\n        dataChannel.addEventListener('close', function () {\n            _this._dataTrackReceivers.delete(dataTrackReceiver);\n        });\n        this.emit('trackAdded', dataTrackReceiver);\n    };\n    /**\n     * Handle a glare scenario on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._handleGlare = function (offer) {\n        var _this = this;\n        this._log.debug('Glare detected; rolling back');\n        if (this._isRestartingIce) {\n            this._log.debug('An ICE restart was in progress; we\\'ll need to restart ICE again after rolling back');\n            this._isRestartingIce = false;\n            this._shouldRestartIce = true;\n        }\n        return Promise.resolve().then(function () {\n            _this._trackIdsToAttributes = new Map(_this._appliedTrackIdsToAttributes);\n            return _this._setLocalDescription({ type: 'rollback' });\n        }).then(function () {\n            _this._needsAnswer = false;\n            return _this._answer(offer);\n        }).then(function (didReoffer) {\n            return didReoffer ? Promise.resolve() : _this._offer();\n        });\n    };\n    PeerConnectionV2.prototype._publishMediaWarning = function (_a) {\n        var message = _a.message, code = _a.code, error = _a.error, sdp = _a.sdp;\n        this._eventObserver.emit('event', { level: 'warning', name: 'error', group: 'media', payload: {\n                message: message,\n                code: code,\n                context: JSON.stringify({ error: error.message, sdp: sdp })\n            } });\n    };\n    /**\n     * Handle an ICE candidate event.\n     * @private\n     * @param {Event} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceCandidateEvent = function (event) {\n        if (event.candidate) {\n            this._log.debug('Clearing ICE gathering timeout');\n            this._didGenerateLocalCandidates = true;\n            this._iceGatheringTimeout.clear();\n            this._localCandidates.push(event.candidate);\n        }\n        var peerConnectionState = {\n            ice: {\n                candidates: this._isIceLite ? [] : this._localCandidates.slice(),\n                ufrag: this._localUfrag\n            },\n            id: this.id\n        };\n        if (!event.candidate) {\n            peerConnectionState.ice.complete = true;\n        }\n        if (!(this._isIceLite && event.candidate)) {\n            peerConnectionState.ice.revision = this._localCandidatesRevision++;\n            this.emit('candidates', peerConnectionState);\n        }\n    };\n    /**\n     * Handle an ICE connection state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceConnectionStateChange = function () {\n        var _this = this;\n        var iceConnectionState = this._peerConnection.iceConnectionState;\n        var isIceConnectedOrComplete = ['connected', 'completed'].includes(iceConnectionState);\n        var log = this._log;\n        log.debug(\"ICE connection state is \\\"\" + iceConnectionState + \"\\\"\");\n        if (isIceConnectedOrComplete) {\n            this._iceReconnectTimeout.clear();\n            this._iceRestartBackoff.reset();\n        }\n        if (this._lastIceConnectionState !== 'failed' && iceConnectionState === 'failed' && !this._shouldRestartIce && !this._isRestartingIce) {\n            // Case 1: Transition to \"failed\".\n            log.warn('ICE failed');\n            this._initiateIceRestartBackoff();\n        }\n        else if (['disconnected', 'failed'].includes(this._lastIceConnectionState) && isIceConnectedOrComplete) {\n            // Case 2: Transition from \"disconnected\" or \"failed\".\n            log.debug('ICE reconnected');\n        }\n        // start monitor media when connected, and continue to monitor while state is complete-disconnected-connected.\n        if (iceConnectionState === 'connected') {\n            this._isIceConnectionInactive = false;\n            this._iceConnectionMonitor.start(function () {\n                // note: iceConnection monitor waits for iceConnectionState=disconnected for\n                // detecting inactivity. Its possible that it may know about disconnected before _handleIceConnectionStateChange\n                _this._iceConnectionMonitor.stop();\n                if (!_this._shouldRestartIce && !_this._isRestartingIce) {\n                    log.warn('ICE Connection Monitor detected inactivity');\n                    _this._isIceConnectionInactive = true;\n                    _this._initiateIceRestartBackoff();\n                    _this.emit('iceConnectionStateChanged');\n                    _this.emit('connectionStateChanged');\n                }\n            });\n        }\n        else if (!['disconnected', 'completed'].includes(iceConnectionState)) { // don't stop monitoring for disconnected or completed.\n            this._iceConnectionMonitor.stop();\n            this._isIceConnectionInactive = false;\n        }\n        this._lastIceConnectionState = iceConnectionState;\n        this.emit('iceConnectionStateChanged');\n    };\n    /**\n     * Handle ICE gathering timeout.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceGatheringTimeout = function () {\n        this._log.warn('ICE failed to gather any local candidates');\n        this._iceGatheringFailed = true;\n        this._initiateIceRestartBackoff();\n        this.emit('iceConnectionStateChanged');\n        this.emit('connectionStateChanged');\n    };\n    /**\n     * Handle an ICE gathering state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceGatheringStateChange = function () {\n        var iceGatheringState = this._peerConnection.iceGatheringState;\n        var log = this._log;\n        log.debug(\"ICE gathering state is \\\"\" + iceGatheringState + \"\\\"\");\n        // NOTE(mmalavalli): Start the ICE gathering timeout only if the RTCPeerConnection\n        // has started gathering candidates for the first time since the initial offer/answer\n        // or an offer/answer with ICE restart.\n        var _a = this._iceGatheringTimeout, delay = _a.delay, isSet = _a.isSet;\n        if (iceGatheringState === 'gathering' && !this._didGenerateLocalCandidates && !isSet) {\n            log.debug(\"Starting ICE gathering timeout: \" + delay);\n            this._iceGatheringFailed = false;\n            this._iceGatheringTimeout.start();\n        }\n    };\n    /**\n     * Handle a signaling state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleSignalingStateChange = function () {\n        if (this._peerConnection.signalingState === 'stable') {\n            this._appliedTrackIdsToAttributes = new Map(this._trackIdsToAttributes);\n        }\n    };\n    /**\n     * Handle a track event.\n     * @private\n     * @param {RTCTrackEvent} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleTrackEvent = function (event) {\n        var _this = this;\n        var sdp = this._peerConnection.remoteDescription\n            ? this._peerConnection.remoteDescription.sdp\n            : null;\n        this._trackMatcher = this._trackMatcher || new TrackMatcher();\n        this._trackMatcher.update(sdp);\n        var mediaStreamTrack = event.track;\n        var signaledTrackId = this._trackMatcher.match(event) || mediaStreamTrack.id;\n        var mediaTrackReceiver = new MediaTrackReceiver(signaledTrackId, mediaStreamTrack);\n        // NOTE(mmalavalli): \"ended\" is not fired on the remote MediaStreamTrack when\n        // the remote peer removes a track. So, when this MediaStreamTrack is re-used\n        // for a different track due to the remote peer calling RTCRtpSender.replaceTrack(),\n        // we delete the previous MediaTrackReceiver that owned this MediaStreamTrack\n        // before adding the new MediaTrackReceiver.\n        this._mediaTrackReceivers.forEach(function (trackReceiver) {\n            if (trackReceiver.track.id === mediaTrackReceiver.track.id) {\n                _this._mediaTrackReceivers.delete(trackReceiver);\n            }\n        });\n        this._mediaTrackReceivers.add(mediaTrackReceiver);\n        mediaStreamTrack.addEventListener('ended', function () { return _this._mediaTrackReceivers.delete(mediaTrackReceiver); });\n        this.emit('trackAdded', mediaTrackReceiver);\n    };\n    /**\n     * Initiate ICE Restart.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._initiateIceRestart = function () {\n        if (this._peerConnection.signalingState === 'closed') {\n            return;\n        }\n        var log = this._log;\n        log.warn('Attempting to restart ICE');\n        this._didGenerateLocalCandidates = false;\n        this._isIceRestartBackoffInProgress = false;\n        this._shouldRestartIce = true;\n        var _a = this._iceReconnectTimeout, delay = _a.delay, isSet = _a.isSet;\n        if (!isSet) {\n            log.debug(\"Starting ICE reconnect timeout: \" + delay);\n            this._iceReconnectTimeout.start();\n        }\n        this.offer().catch(function (ex) {\n            log.error(\"offer failed in _initiateIceRestart with: \" + ex.message);\n        });\n    };\n    /**\n     * Schedule an ICE Restart.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._initiateIceRestartBackoff = function () {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'closed' || this._isIceRestartBackoffInProgress) {\n            return;\n        }\n        this._log.warn('An ICE restart has been scheduled');\n        this._isIceRestartBackoffInProgress = true;\n        this._iceRestartBackoff.backoff(function () { return _this._initiateIceRestart(); });\n    };\n    /**\n     * Conditionally re-offer.\n     * @private\n     * @param {?RTCSessionDescriptionInit} localDescription\n     * @returns {Promise<boolean>}\n     */\n    PeerConnectionV2.prototype._maybeReoffer = function (localDescription) {\n        var shouldReoffer = this._shouldOffer;\n        if (localDescription && localDescription.sdp) {\n            // NOTE(mmalavalli): If the local RTCSessionDescription has fewer audio and/or\n            // video send* m= lines than the corresponding RTCRtpSenders with non-null\n            // MediaStreamTracks, it means that the newly added RTCRtpSenders require\n            // renegotiation.\n            var senders_1 = this._peerConnection.getSenders().filter(function (sender) { return sender.track; });\n            shouldReoffer = ['audio', 'video'].reduce(function (shouldOffer, kind) {\n                var mediaSections = getMediaSections(localDescription.sdp, kind, '(sendrecv|sendonly)');\n                var sendersOfKind = senders_1.filter(isSenderOfKind.bind(null, kind));\n                return shouldOffer || (mediaSections.length < sendersOfKind.length);\n            }, shouldReoffer);\n            // NOTE(mroberts): We also need to re-offer if we have a DataTrack to share\n            // but no m= application section.\n            var hasDataTrack = this._dataChannels.size > 0;\n            var hasApplicationMediaSection = getMediaSections(localDescription.sdp, 'application').length > 0;\n            var needsApplicationMediaSection = hasDataTrack && !hasApplicationMediaSection;\n            shouldReoffer = shouldReoffer || needsApplicationMediaSection;\n        }\n        var promise = shouldReoffer ? this._offer() : Promise.resolve();\n        return promise.then(function () { return shouldReoffer; });\n    };\n    /**\n     * Create an offer and set it on the {@link PeerConnectionV2}.\n     * @private\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._offer = function () {\n        var _this = this;\n        var offerOptions = Object.assign({}, this._offerOptions);\n        this._needsAnswer = true;\n        if (this._shouldRestartIce) {\n            this._shouldRestartIce = false;\n            this._isRestartingIce = true;\n            offerOptions.iceRestart = true;\n        }\n        return Promise.all(this._replaceTrackPromises.values()).then(function () {\n            return _this._peerConnection.createOffer(offerOptions);\n        }).catch(function (error) {\n            var errorToThrow = new MediaClientLocalDescFailedError();\n            _this._publishMediaWarning({\n                message: 'Failed to create offer',\n                code: errorToThrow.code,\n                error: error\n            });\n            throw errorToThrow;\n        }).then(function (offer) {\n            if (isFirefox) {\n                // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n                // RTX in Firefox 79+. For more details about the bug, please go here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n                offer = new _this._RTCSessionDescription({\n                    sdp: disableRtx(offer.sdp),\n                    type: offer.type\n                });\n            }\n            else {\n                offer = workaroundIssue8329(offer);\n            }\n            // NOTE(mpatwardhan): upcoming chrome versions are going to remove ssrc attributes\n            // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n            // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n            // Looks like we are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n            // this also helps reduce bytes on wires\n            var sdp = removeSSRCAttributes(offer.sdp, ['mslabel', 'label']);\n            sdp = _this._peerConnection.remoteDescription\n                ? filterLocalCodecs(sdp, _this._peerConnection.remoteDescription.sdp)\n                : sdp;\n            var updatedSdp = _this._setCodecPreferences(sdp, _this._preferredAudioCodecs, _this._preferredVideoCodecs);\n            _this._shouldOffer = false;\n            if (!_this._negotiationRole) {\n                _this._negotiationRole = 'offerer';\n            }\n            if (_this._shouldApplySimulcast) {\n                _this._localDescriptionWithoutSimulcast = {\n                    type: 'offer',\n                    sdp: updatedSdp\n                };\n                updatedSdp = _this._setSimulcast(updatedSdp, _this._trackIdsToAttributes);\n            }\n            return _this._setLocalDescription({\n                type: 'offer',\n                sdp: updatedSdp\n            });\n        });\n    };\n    /**\n     * Get the MediaTrackSender ID of the given MediaStreamTrack ID.\n     * Since a MediaTrackSender's underlying MediaStreamTrack can be\n     * replaced, the corresponding IDs can mismatch.\n     * @private\n     * @param {Track.ID} id\n     * @returns {Track.ID}\n     */\n    PeerConnectionV2.prototype._getMediaTrackSenderId = function (trackId) {\n        var mediaTrackSender = Array.from(this._rtpSenders.keys()).find(function (_a) {\n            var id = _a.track.id;\n            return id === trackId;\n        });\n        return mediaTrackSender ? mediaTrackSender.id : trackId;\n    };\n    /**\n     * Add or rewrite local MediaStreamTrack IDs in the given RTCSessionDescription.\n     * @private\n     * @param {RTCSessionDescription} description\n     * @return {RTCSessionDescription}\n     */\n    PeerConnectionV2.prototype._addOrRewriteLocalTrackIds = function (description) {\n        var _this = this;\n        var transceivers = this._peerConnection.getTransceivers();\n        var activeTransceivers = transceivers.filter(function (_a) {\n            var sender = _a.sender, stopped = _a.stopped;\n            return !stopped && sender && sender.track;\n        });\n        // NOTE(mmalavalli): There is no guarantee that MediaStreamTrack IDs will be present in\n        // SDPs, and even if they are, there is no guarantee that they will be the same as the\n        // actual MediaStreamTrack IDs. So, we add or re-write the actual MediaStreamTrack IDs\n        // to the assigned m= sections here.\n        var assignedTransceivers = activeTransceivers.filter(function (_a) {\n            var mid = _a.mid;\n            return mid;\n        });\n        var midsToTrackIds = new Map(assignedTransceivers.map(function (_a) {\n            var mid = _a.mid, sender = _a.sender;\n            return [mid, _this._getMediaTrackSenderId(sender.track.id)];\n        }));\n        var sdp1 = addOrRewriteTrackIds(description.sdp, midsToTrackIds);\n        // NOTE(mmalavalli): Chrome and Safari do not apply the offer until they get an answer.\n        // So, we add or re-write the actual MediaStreamTrack IDs to the unassigned m= sections here.\n        var unassignedTransceivers = activeTransceivers.filter(function (_a) {\n            var mid = _a.mid;\n            return !mid;\n        });\n        var newTrackIdsByKind = new Map(['audio', 'video'].map(function (kind) { return [\n            kind,\n            unassignedTransceivers.filter(function (_a) {\n                var sender = _a.sender;\n                return sender.track.kind === kind;\n            }).map(function (_a) {\n                var sender = _a.sender;\n                return _this._getMediaTrackSenderId(sender.track.id);\n            })\n        ]; }));\n        var sdp2 = addOrRewriteNewTrackIds(sdp1, midsToTrackIds, newTrackIdsByKind);\n        return new this._RTCSessionDescription({\n            sdp: sdp2,\n            type: description.type\n        });\n    };\n    /**\n     * Rollback and apply the given offer.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._rollbackAndApplyOffer = function (offer) {\n        var _this = this;\n        return this._setLocalDescription({ type: 'rollback' }).then(function () { return _this._setLocalDescription(offer); });\n    };\n    /**\n     * Set a local description on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescription|RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._setLocalDescription = function (description) {\n        var _this = this;\n        if (description.type !== 'rollback' && this._shouldApplyDtx) {\n            description = new this._RTCSessionDescription({\n                sdp: enableDtxForOpus(description.sdp),\n                type: description.type\n            });\n        }\n        return this._peerConnection.setLocalDescription(description).catch(function (error) {\n            _this._log.warn(\"Calling setLocalDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed with the error \\\"\" + error.message + \"\\\".\", error);\n            var errorToThrow = new MediaClientLocalDescFailedError();\n            var publishWarning = {\n                message: \"Calling setLocalDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed\",\n                code: errorToThrow.code,\n                error: error\n            };\n            if (description.sdp) {\n                _this._log.warn(\"The SDP was \" + description.sdp);\n                publishWarning.sdp = description.sdp;\n            }\n            _this._publishMediaWarning(publishWarning);\n            throw errorToThrow;\n        }).then(function () {\n            if (description.type !== 'rollback') {\n                _this._localDescription = _this._addOrRewriteLocalTrackIds(description);\n                // NOTE(mmalavalli): In order for this feature to be backward compatible with older\n                // SDK versions which to not support opus DTX, we append \"usedtx=1\" to the local SDP\n                // only while applying it. We will not send it over the wire to prevent inadvertent\n                // enabling of opus DTX in older SDKs. Newer SDKs will append \"usedtx=1\" by themselves\n                // if the developer has requested opus DTX to be enabled. (JSDK-3063)\n                if (_this._shouldApplyDtx) {\n                    _this._localDescription = new _this._RTCSessionDescription({\n                        sdp: enableDtxForOpus(_this._localDescription.sdp, []),\n                        type: _this._localDescription.type\n                    });\n                }\n                _this._localCandidates = [];\n                if (description.type === 'offer') {\n                    _this._descriptionRevision++;\n                }\n                else if (description.type === 'answer') {\n                    _this._lastStableDescriptionRevision = _this._descriptionRevision;\n                    negotiationCompleted(_this);\n                }\n                _this._localUfrag = getUfrag(description);\n                _this.emit('description', _this.getState());\n            }\n        });\n    };\n    /**\n     * Set a remote RTCSessionDescription on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._setRemoteDescription = function (description) {\n        var _this = this;\n        if (description.sdp) {\n            description.sdp = this._setCodecPreferences(description.sdp, this._preferredAudioCodecs, this._preferredVideoCodecs);\n            if (this._shouldApplyDtx) {\n                description.sdp = enableDtxForOpus(description.sdp);\n            }\n            else {\n                // NOTE(mmalavalli): Remove \"usedtx=1\" from opus's fmtp line if present\n                // since DTX is disabled.\n                description.sdp = enableDtxForOpus(description.sdp, []);\n            }\n            if (isFirefox) {\n                // NOTE(mroberts): Do this to reduce our MediaStream count in Firefox. By\n                // mapping MediaStream IDs in the SDP to \"-\", we ensure the \"track\" event\n                // doesn't include any new MediaStreams in Firefox. Its `streams` member\n                // will always be the empty Array.\n                description.sdp = filterOutMediaStreamIds(description.sdp);\n            }\n            if (!this._peerConnection.remoteDescription) {\n                this._isIceLite = /a=ice-lite/.test(description.sdp);\n            }\n        }\n        description = new this._RTCSessionDescription(description);\n        // eslint-disable-next-line consistent-return\n        return Promise.resolve().then(function () {\n            // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n            // unset simulcast for sections in local offer where corresponding\n            // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n            if (description.type === 'answer' && _this._localDescriptionWithoutSimulcast) {\n                // NOTE(mpatwardhan):if we were using adaptive simulcast, and if its not supported by server\n                // revert simulcast even for vp8.\n                var adaptiveSimulcastEntry = _this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n                var revertForAll = !!adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === false;\n                var sdpWithoutSimulcastForNonVP8MediaSections = _this._revertSimulcast(_this._localDescription.sdp, _this._localDescriptionWithoutSimulcast.sdp, description.sdp, revertForAll);\n                _this._localDescriptionWithoutSimulcast = null;\n                if (sdpWithoutSimulcastForNonVP8MediaSections !== _this._localDescription.sdp) {\n                    return _this._rollbackAndApplyOffer({\n                        type: _this._localDescription.type,\n                        sdp: sdpWithoutSimulcastForNonVP8MediaSections\n                    });\n                }\n            }\n        }).then(function () { return _this._peerConnection.setRemoteDescription(description); }).then(function () {\n            if (description.type === 'answer') {\n                if (_this._isRestartingIce) {\n                    _this._log.debug('An ICE restart was in-progress and is now completed');\n                    _this._isRestartingIce = false;\n                }\n                negotiationCompleted(_this);\n            }\n        }, function (error) {\n            _this._log.warn(\"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed with the error \\\"\" + error.message + \"\\\".\", error);\n            if (description.sdp) {\n                _this._log.warn(\"The SDP was \" + description.sdp);\n            }\n            throw error;\n        });\n    };\n    /**\n     * Update the {@link PeerConnectionV2}'s description.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._updateDescription = function (description) {\n        var _this = this;\n        switch (description.type) {\n            case 'answer':\n            case 'pranswer':\n                if (description.revision !== this._descriptionRevision\n                    || this._peerConnection.signalingState !== 'have-local-offer') {\n                    return Promise.resolve();\n                }\n                this._descriptionRevision = description.revision;\n                break;\n            case 'close':\n                return this._close();\n            case 'create-offer':\n                if (description.revision <= this._lastStableDescriptionRevision) {\n                    return Promise.resolve();\n                }\n                else if (this._needsAnswer) {\n                    this._queuedDescription = description;\n                    return Promise.resolve();\n                }\n                this._descriptionRevision = description.revision;\n                return this._offer();\n            case 'offer':\n                if (description.revision <= this._lastStableDescriptionRevision\n                    || this._peerConnection.signalingState === 'closed') {\n                    return Promise.resolve();\n                }\n                if (this._peerConnection.signalingState === 'have-local-offer') {\n                    // NOTE(mpatwardhan): For a peer connection\n                    // 1) createOffer always generate SDP with `setup:actpass`\n                    // 2) when remote description is set `setup:active`  - the answer generated selects the dtls role of setup:passive\n                    // 3) when remote description is set `setup:passive` - the answer generated selects the dtls role of setup:active\n                    // 4) when remote description is set `setup:actpass` - the answer generated uses the previously negotiated role (if not negotiated previously setup:active is used)\n                    // This test shows the  behavior: https://github.com/twilio/twilio-webrtc.js/blob/master/test/integration/spec/rtcpeerconnection.js#L936\n                    // with glare handling (if dtls role was not negotiated before ) the generated answer will set setup:active.\n                    // we do not want that. lets wait for \"initial negotiation\" before attempting glare handling.\n                    if (this._needsAnswer && this._lastStableDescriptionRevision === 0) {\n                        this._queuedDescription = description;\n                        return Promise.resolve();\n                    }\n                    this._descriptionRevision = description.revision;\n                    return this._handleGlare(description);\n                }\n                this._descriptionRevision = description.revision;\n                return this._answer(description).then(function () { });\n            default:\n            // Do nothing.\n        }\n        // Handle answer or pranswer.\n        var revision = description.revision;\n        return Promise.resolve().then(function () {\n            return _this._setRemoteDescription(description);\n        }).catch(function (error) {\n            var errorToThrow = new MediaClientRemoteDescFailedError();\n            _this._publishMediaWarning({\n                message: \"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed\",\n                code: errorToThrow.code,\n                error: error,\n                sdp: description.sdp\n            });\n            throw errorToThrow;\n        }).then(function () {\n            _this._lastStableDescriptionRevision = revision;\n            _this._needsAnswer = false;\n            return _this._checkIceBox(description);\n        }).then(function () {\n            return _this._queuedDescription\n                && _this._updateDescription(_this._queuedDescription);\n        }).then(function () {\n            _this._queuedDescription = null;\n            return _this._maybeReoffer(_this._peerConnection.localDescription).then(function () { });\n        });\n    };\n    /**\n     * Update the {@link PeerConnectionV2}'s ICE candidates.\n     * @private\n     * @param {object} iceState\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._updateIce = function (iceState) {\n        var candidates = this._remoteCandidates.update(iceState);\n        return this._addIceCandidates(candidates);\n    };\n    /**\n     * Add a {@link DataTrackSender} to the {@link PeerConnectionV2}.\n     * @param {DataTrackSender} dataTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.addDataTrackSender = function (dataTrackSender) {\n        if (this._dataChannels.has(dataTrackSender)) {\n            return;\n        }\n        try {\n            var dataChannelDict = {\n                ordered: dataTrackSender.ordered\n            };\n            if (dataTrackSender.maxPacketLifeTime !== null) {\n                dataChannelDict.maxPacketLifeTime = dataTrackSender.maxPacketLifeTime;\n            }\n            if (dataTrackSender.maxRetransmits !== null) {\n                dataChannelDict.maxRetransmits = dataTrackSender.maxRetransmits;\n            }\n            var dataChannel = this._peerConnection.createDataChannel(dataTrackSender.id, dataChannelDict);\n            dataTrackSender.addDataChannel(dataChannel);\n            this._dataChannels.set(dataTrackSender, dataChannel);\n        }\n        catch (error) {\n            this._log.warn(\"Error creating an RTCDataChannel for DataTrack \\\"\" + dataTrackSender.id + \"\\\": \" + error.message);\n        }\n    };\n    PeerConnectionV2.prototype._handleQueuedPublisherHints = function () {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'stable') {\n            this._mediaTrackSenderToPublisherHints.forEach(function (_a, mediaTrackSender) {\n                var deferred = _a.deferred, encodings = _a.encodings;\n                _this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n                _this._setPublisherHint(mediaTrackSender, encodings)\n                    .then(function (result) { return deferred.resolve(result); })\n                    .catch(function (error) { return deferred.reject(error); });\n            });\n        }\n    };\n    /**\n     * updates encodings for simulcast layers of given sender.\n     * @param {RTCRtpSender} sender\n     * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n     * @returns {Promise<string>} string indicating result of the operation. can be one of\n     *  \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n     */\n    PeerConnectionV2.prototype._setPublisherHint = function (mediaTrackSender, encodings) {\n        var _this = this;\n        if (isFirefox) {\n            return Promise.resolve('COULD_NOT_APPLY_HINT');\n        }\n        if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n            // skip any stale hint associated with the mediaTrackSender.\n            var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n            queuedHint.deferred.resolve('REQUEST_SKIPPED');\n            this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n        }\n        var sender = this._rtpSenders.get(mediaTrackSender);\n        if (!sender) {\n            this._log.warn('Could not apply publisher hint because RTCRtpSender was not found');\n            return Promise.resolve('UNKNOWN_TRACK');\n        }\n        if (this._peerConnection.signalingState === 'closed') {\n            this._log.warn('Could not apply publisher hint because signalingState was \"closed\"');\n            return Promise.resolve('COULD_NOT_APPLY_HINT');\n        }\n        if (this._peerConnection.signalingState !== 'stable') {\n            // enqueue this hint to be applied when pc becomes stable.\n            this._log.debug('Queuing up publisher hint because signalingState:', this._peerConnection.signalingState);\n            var deferred = defer();\n            this._mediaTrackSenderToPublisherHints.set(mediaTrackSender, { deferred: deferred, encodings: encodings });\n            return deferred.promise;\n        }\n        var parameters = sender.getParameters();\n        if (encodings !== null) {\n            encodings.forEach(function (_a) {\n                var enabled = _a.enabled, layerIndex = _a.layer_index;\n                if (parameters.encodings.length > layerIndex) {\n                    _this._log.debug(\"layer:\" + layerIndex + \", active:\" + parameters.encodings[layerIndex].active + \" => \" + enabled);\n                    parameters.encodings[layerIndex].active = enabled;\n                }\n                else {\n                    _this._log.warn(\"invalid layer:\" + layerIndex + \", active:\" + enabled);\n                }\n            });\n        }\n        // Note(mpatwardhan): after publisher hints are applied, overwrite with default encodings\n        // to disable any encoding that shouldn't have been enabled by publisher_hints.\n        // When encodings===null (that is we are asked to reset encodings for replaceTrack)\n        // along with disabling encodings, clear active flag for encodings that should not be disabled\n        this._maybeUpdateEncodings(sender.track, parameters.encodings, encodings === null /* trackReplaced */);\n        return sender.setParameters(parameters).then(function () { return 'OK'; }).catch(function (error) {\n            _this._log.error('Failed to apply publisher hints:', error);\n            return 'COULD_NOT_APPLY_HINT';\n        });\n    };\n    /**\n     * Add the {@link MediaTrackSender} to the {@link PeerConnectionV2}.\n     * @param {MediaTrackSender} mediaTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.addMediaTrackSender = function (mediaTrackSender) {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'closed' || this._rtpSenders.has(mediaTrackSender)) {\n            return;\n        }\n        var transceiver = this._addOrUpdateTransceiver(mediaTrackSender.track);\n        var sender = transceiver.sender;\n        mediaTrackSender.addSender(sender, function (encodings) { return _this._setPublisherHint(mediaTrackSender, encodings); });\n        this._rtpNewSenders.add(sender);\n        this._rtpSenders.set(mediaTrackSender, sender);\n    };\n    /**\n     * Close the {@link PeerConnectionV2}.\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.close = function () {\n        if (this._close()) {\n            this._descriptionRevision++;\n            this._localDescription = { type: 'close' };\n            this.emit('description', this.getState());\n        }\n    };\n    /**\n     * Get the {@link DataTrackReceiver}s and the {@link MediaTrackReceiver}s on the\n     * {@link PeerConnectionV2}.\n     * @returns {Array<DataTrackReceiver|MediaTrackReceiver>} trackReceivers\n     */\n    PeerConnectionV2.prototype.getTrackReceivers = function () {\n        return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers));\n    };\n    /**\n     * Get the {@link PeerConnectionV2}'s state (specifically, its description).\n     * @returns {?object}\n     */\n    PeerConnectionV2.prototype.getState = function () {\n        if (!this._localDescription) {\n            return null;\n        }\n        // NOTE(mpatwardhan): Return most recent localDescription. If the most recent local description is an\n        // answer, and this method is called for sending a \"sync\" message while the next remote offer is being processed,\n        // we need to send the most recent stable description revision instead of the current description revision,\n        // which is supposed to be for the next local answer.\n        var localDescriptionRevision = this._localDescription.type === 'answer' ? this._lastStableDescriptionRevision : this._descriptionRevision;\n        var localDescription = {\n            type: this._localDescription.type,\n            revision: localDescriptionRevision\n        };\n        if (this._localDescription.sdp) {\n            localDescription.sdp = this._localDescription.sdp;\n        }\n        return {\n            description: localDescription,\n            id: this.id\n        };\n    };\n    /**\n     * Create an offer and set it on the {@link PeerConnectionV2}.\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype.offer = function () {\n        var _this = this;\n        if (this._needsAnswer || this._isRestartingIce) {\n            this._shouldOffer = true;\n            return Promise.resolve();\n        }\n        return this.bracket('offering', function (key) {\n            _this.transition('updating', key);\n            var promise = _this._needsAnswer || _this._isRestartingIce ? Promise.resolve() : _this._offer();\n            return promise.then(function () {\n                _this.tryTransition('open', key);\n            }, function (error) {\n                _this.tryTransition('open', key);\n                throw error;\n            });\n        });\n    };\n    /**\n     * Remove a {@link DataTrackSender} from the {@link PeerConnectionV2}.\n     * @param {DataTrackSender} dataTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.removeDataTrackSender = function (dataTrackSender) {\n        var dataChannel = this._dataChannels.get(dataTrackSender);\n        if (dataChannel) {\n            dataTrackSender.removeDataChannel(dataChannel);\n            this._dataChannels.delete(dataTrackSender);\n            dataChannel.close();\n        }\n    };\n    /**\n     * Remove the {@link MediaTrackSender} from the {@link PeerConnectionV2}.\n     * @param {MediaTrackSender} mediaTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.removeMediaTrackSender = function (mediaTrackSender) {\n        var sender = this._rtpSenders.get(mediaTrackSender);\n        if (!sender) {\n            return;\n        }\n        if (this._peerConnection.signalingState !== 'closed') {\n            this._peerConnection.removeTrack(sender);\n        }\n        mediaTrackSender.removeSender(sender);\n        // clean up any pending publisher hints associated with this mediaTrackSender.\n        if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n            var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n            queuedHint.deferred.resolve('UNKNOWN_TRACK');\n            this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n        }\n        this._rtpNewSenders.delete(sender);\n        this._rtpSenders.delete(mediaTrackSender);\n    };\n    /**\n     * Set the RTCConfiguration on the underlying RTCPeerConnection.\n     * @param {RTCConfiguration} configuration\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.setConfiguration = function (configuration) {\n        if (typeof this._peerConnection.setConfiguration === 'function') {\n            this._peerConnection.setConfiguration(getConfiguration(configuration));\n        }\n    };\n    /**\n     * Set the ICE reconnect timeout period.\n     * @param {number} period - Period in milliseconds.\n     * @returns {this}\n     */\n    PeerConnectionV2.prototype.setIceReconnectTimeout = function (period) {\n        this._iceReconnectTimeout.setDelay(period);\n        this._log.debug('Updated ICE reconnection timeout period:', this._iceReconnectTimeout.delay);\n        return this;\n    };\n    /**\n     * Update the {@link PeerConnectionV2}.\n     * @param {object} peerConnectionState\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype.update = function (peerConnectionState) {\n        var _this = this;\n        return this.bracket('updating', function (key) {\n            if (_this.state === 'closed') {\n                return Promise.resolve();\n            }\n            _this.transition('updating', key);\n            var updates = [];\n            if (peerConnectionState.ice) {\n                updates.push(_this._updateIce(peerConnectionState.ice));\n            }\n            if (peerConnectionState.description) {\n                updates.push(_this._updateDescription(peerConnectionState.description));\n            }\n            return Promise.all(updates).then(function () {\n                _this.tryTransition('open', key);\n            }, function (error) {\n                _this.tryTransition('open', key);\n                throw error;\n            });\n        });\n    };\n    /**\n     * Get the {@link PeerConnectionV2}'s media statistics.\n     * @returns {Promise<StandardizedStatsResponse>}\n     */\n    PeerConnectionV2.prototype.getStats = function () {\n        var _this = this;\n        return getStatistics(this._peerConnection).then(function (response) { return rewriteTrackIds(_this, response); });\n    };\n    return PeerConnectionV2;\n}(StateMachine));\nfunction rewriteLocalTrackId(pcv2, stats) {\n    var trackId = pcv2._getMediaTrackSenderId(stats.trackId);\n    return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackId(pcv2, stats) {\n    var receiver = __spreadArray([], __read(pcv2._mediaTrackReceivers)).find(function (receiver) { return receiver.track.id === stats.trackId; });\n    var trackId = receiver ? receiver.id : null;\n    return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackIds(pcv2, response) {\n    return Object.assign(response, {\n        remoteAudioTrackStats: response.remoteAudioTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n        remoteVideoTrackStats: response.remoteVideoTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n        localAudioTrackStats: response.localAudioTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n        localVideoTrackStats: response.localVideoTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n    });\n}\n/**\n * @event PeerConnectionV2#candidates\n * @param {object} candidates\n */\n/**\n * @event PeerConnectionV2#connectionStateChanged\n */\n/**\n * @event PeerConnectionV2#description\n * @param {object} description\n */\n/**\n * @event PeerConnectionV2#iceConnectionStateChanged\n */\n/**\n * @event PeerConnectionV2#trackAdded\n * @param {DataTrackReceiver|MediaTrackReceiver} trackReceiver\n */\nfunction getUfrag(description) {\n    if (description.sdp) {\n        var match = description.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);\n        if (match) {\n            return match[1];\n        }\n    }\n    return null;\n}\nfunction getConfiguration(configuration) {\n    return Object.assign({\n        bundlePolicy: 'max-bundle',\n        rtcpMuxPolicy: 'require'\n    }, configuration);\n}\n/**\n * Whether the MediaStreamTrack of the given RTCRTPSender is a non-ended\n * MediaStreamTrack of a given kind.\n * @private\n * @param {string} kind\n * @param {RTCRtpSender} sender\n * @return {boolean}\n */\nfunction isSenderOfKind(kind, sender) {\n    var track = sender.track;\n    return track && track.kind === kind && track.readyState !== 'ended';\n}\n/**\n * Preferred codecs.\n * @typedef {object} PreferredCodecs\n * @property {Array<AudioCodec>} audio\n * @property {Array<VideoCodec>} video\n */\nfunction filterOutMediaStreamIds(sdp) {\n    return sdp.replace(/a=msid:[^ ]+ /g, 'a=msid:- ');\n}\n/**\n * Whether an RTCRtpTransceiver can be recycled.\n * @param {RTCRtpTransceiver} transceiver\n * @returns {boolean}\n */\nfunction shouldRecycleTransceiver(transceiver, pcv2) {\n    return !transceiver.stopped\n        && !pcv2._replaceTrackPromises.has(transceiver)\n        && ['inactive', 'recvonly'].includes(transceiver.direction);\n}\n/**\n * Take a recycled RTCRtpTransceiver if available.\n * @param {PeerConnectionV2} pcv2\n * @param {Track.Kind} kind\n * @returns {?RTCRtpTransceiver}\n */\nfunction takeRecycledTransceiver(pcv2, kind) {\n    var preferredCodecs = {\n        audio: pcv2._preferredAudioCodecs.map(function (_a) {\n            var codec = _a.codec;\n            return codec.toLowerCase();\n        }),\n        video: pcv2._preferredVideoCodecs.map(function (_a) {\n            var codec = _a.codec;\n            return codec.toLowerCase();\n        })\n    }[kind];\n    var recycledTransceivers = pcv2._recycledTransceivers[kind];\n    var localCodec = preferredCodecs.find(function (codec) { return pcv2._localCodecs.has(codec); });\n    if (!localCodec) {\n        return recycledTransceivers.shift();\n    }\n    var transceiver = recycledTransceivers.find(function (transceiver) {\n        var remoteCodecMap = pcv2._remoteCodecMaps.get(transceiver.mid);\n        return remoteCodecMap && remoteCodecMap.has(localCodec);\n    });\n    if (transceiver) {\n        recycledTransceivers.splice(recycledTransceivers.indexOf(transceiver), 1);\n    }\n    return transceiver;\n}\n/**\n * Update the set of locally supported {@link Codec}s.\n * @param pcv2\n * @returns {void}\n */\nfunction updateLocalCodecs(pcv2) {\n    var description = pcv2._peerConnection.localDescription;\n    if (!description || !description.sdp) {\n        return;\n    }\n    getMediaSections(description.sdp).forEach(function (section) {\n        var codecMap = createCodecMapForMediaSection(section);\n        codecMap.forEach(function (pts, codec) { return pcv2._localCodecs.add(codec); });\n    });\n}\n/**\n * Update the {@link Codec} maps for all m= sections in the remote {@link RTCSessionDescription}s.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateRemoteCodecMaps(pcv2) {\n    var description = pcv2._peerConnection.remoteDescription;\n    if (!description || !description.sdp) {\n        return;\n    }\n    getMediaSections(description.sdp).forEach(function (section) {\n        var matched = section.match(/^a=mid:(.+)$/m);\n        if (!matched || !matched[1]) {\n            return;\n        }\n        var mid = matched[1];\n        var codecMap = createCodecMapForMediaSection(section);\n        pcv2._remoteCodecMaps.set(mid, codecMap);\n    });\n}\n/**\n * Update the list of recycled RTCRtpTransceivers.\n * @param {PeerConnectionV2} pcv2\n */\nfunction updateRecycledTransceivers(pcv2) {\n    pcv2._recycledTransceivers.audio = [];\n    pcv2._recycledTransceivers.video = [];\n    pcv2._peerConnection.getTransceivers().forEach(function (transceiver) {\n        if (shouldRecycleTransceiver(transceiver, pcv2)) {\n            var track = transceiver.receiver.track;\n            pcv2._recycledTransceivers[track.kind].push(transceiver);\n        }\n    });\n}\n/**\n * Perform certain updates after an SDP negotiation is completed.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction negotiationCompleted(pcv2) {\n    updateRecycledTransceivers(pcv2);\n    updateLocalCodecs(pcv2);\n    updateRemoteCodecMaps(pcv2);\n    updateEncodingParameters(pcv2).then(function () {\n        // if there any any publisher hints queued, apply them now.\n        pcv2._handleQueuedPublisherHints();\n    });\n}\n/**\n * Update the RTCRtpEncodingParameters of all active RTCRtpSenders.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateEncodingParameters(pcv2) {\n    var _a = pcv2._encodingParameters, maxAudioBitrate = _a.maxAudioBitrate, maxVideoBitrate = _a.maxVideoBitrate;\n    var maxBitrates = new Map([\n        ['audio', maxAudioBitrate],\n        ['video', maxVideoBitrate]\n    ]);\n    var promises = [];\n    pcv2._peerConnection.getSenders().filter(function (sender) { return sender.track; }).forEach(function (sender) {\n        var maxBitrate = maxBitrates.get(sender.track.kind);\n        var params = sender.getParameters();\n        if (maxBitrate === null || maxBitrate === 0) {\n            removeMaxBitrate(params);\n        }\n        else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n            // NOTE(mpatwardhan): Sometimes (JSDK-2557) chrome does not send any bytes on screen track if MaxBitRate is set on it via setParameters,\n            // To workaround this issue we will not apply maxBitrate if the track appears to be a screen share track created by chrome\n            pcv2._log.warn(\"Not setting maxBitrate for \" + sender.track.kind + \" Track \" + sender.track.id + \" because it appears to be screen share track: \" + sender.track.label);\n        }\n        else {\n            setMaxBitrate(params, maxBitrate);\n        }\n        if (!isFirefox && params.encodings.length > 0) {\n            if (sender.track.kind === 'audio') {\n                // NOTE(mmalavalli): \"priority\" is a per-sender property and not\n                // a per-encoding-layer property. So, we set the value only on the first\n                // encoding layer. Any attempt to set the value on subsequent encoding\n                // layers (in the case of simulcast) will result in the Promise returned\n                // by RTCRtpSender.setParameters() being rejected. With this, audio encoding\n                // is prioritized the most.\n                params.encodings[0].priority = 'high';\n            }\n            else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n                // NOTE(mmalavalli): Screen share encodings are prioritized more than those\n                // of the camera.\n                params.encodings[0].priority = 'medium';\n            }\n            if (pcv2._enableDscp) {\n                // NOTE(mmalavalli): \"networkPriority\" is a per-sender property and not\n                // a per-encoding-layer property. So, we set the value only on the first\n                // encoding layer. Any attempt to set the value on subsequent encoding\n                // layers (in the case of simulcast) will result in the Promise returned\n                // by RTCRtpSender.setParameters() being rejected.\n                params.encodings[0].networkPriority = 'high';\n            }\n        }\n        // when a sender is reused, delete any active encodings set by server.\n        var trackReplaced = pcv2._rtpNewSenders.has(sender);\n        pcv2._maybeUpdateEncodings(sender.track, params.encodings, trackReplaced);\n        pcv2._rtpNewSenders.delete(sender);\n        var promise = sender.setParameters(params).catch(function (error) {\n            pcv2._log.warn(\"Error while setting encodings parameters for \" + sender.track.kind + \" Track \" + sender.track.id + \": \" + (error.message || error.name));\n        });\n        promises.push(promise);\n    });\n    return Promise.all(promises);\n}\n/**\n * Remove maxBitrate from the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @returns {void}\n */\nfunction removeMaxBitrate(params) {\n    if (Array.isArray(params.encodings)) {\n        params.encodings.forEach(function (encoding) { return delete encoding.maxBitrate; });\n    }\n}\n/**\n * Set the given maxBitrate in the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @param {number} maxBitrate\n * @returns {void}\n */\nfunction setMaxBitrate(params, maxBitrate) {\n    if (isFirefox) {\n        params.encodings = [{ maxBitrate: maxBitrate }];\n    }\n    else {\n        params.encodings.forEach(function (encoding) {\n            encoding.maxBitrate = maxBitrate;\n        });\n    }\n}\nmodule.exports = PeerConnectionV2;\n//# sourceMappingURL=peerconnection.js.map","/* globals RTCPeerConnection */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventTarget = require('../../eventtarget');\nvar FirefoxRTCSessionDescription = require('../rtcsessiondescription/firefox');\nvar updateTracksToSSRCs = require('../util/sdp').updateUnifiedPlanTrackIdsToSSRCs;\nvar _a = require('../util'), delegateMethods = _a.delegateMethods, interceptEvent = _a.interceptEvent, legacyPromise = _a.legacyPromise, proxyProperties = _a.proxyProperties;\n// NOTE(mroberts): This class wraps Firefox's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Firefox, namely the\n// abilities to\n//\n//   1. Call setLocalDescription and setRemoteDescription with new offers in\n//      signalingStates \"have-local-offer\" and \"have-remote-offer\",\n//      respectively.\n//\n//   2. The ability to call createOffer in signalingState \"have-local-offer\".\n//\n// Both of these are implemented using rollbacks to workaround the following\n// bug:\n//\n//   https://bugzilla.mozilla.org/show_bug.cgi?id=1072388\n//\n// We also provide a workaround for a bug where Firefox may change the\n// previously-negotiated DTLS role in an answer, which breaks Chrome:\n//\n//     https://bugzilla.mozilla.org/show_bug.cgi?id=1240897\n//\nvar FirefoxRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(FirefoxRTCPeerConnection, _super);\n    function FirefoxRTCPeerConnection(configuration) {\n        var _this = _super.call(this) || this;\n        interceptEvent(_this, 'signalingstatechange');\n        /* eslint new-cap:0 */\n        var peerConnection = new RTCPeerConnection(configuration);\n        Object.defineProperties(_this, {\n            _initiallyNegotiatedDtlsRole: {\n                value: null,\n                writable: true\n            },\n            _isClosed: {\n                value: false,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _rollingBack: {\n                value: false,\n                writable: true\n            },\n            _tracksToSSRCs: {\n                value: new Map()\n            },\n            // NOTE(mmalavalli): Firefox throws a TypeError when the PeerConnection's\n            // prototype's \"peerIdentity\" property is accessed. In order to overcome\n            // this, we ignore this property while delegating methods.\n            // Reference: https://bugzilla.mozilla.org/show_bug.cgi?id=1363815\n            peerIdentity: {\n                enumerable: true,\n                value: Promise.resolve({\n                    idp: '',\n                    name: ''\n                })\n            }\n        });\n        var previousSignalingState;\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (!_this._rollingBack && _this.signalingState !== previousSignalingState) {\n                previousSignalingState = _this.signalingState;\n                // NOTE(mmalavalli): In Firefox, 'signalingstatechange' event is\n                // triggered synchronously in the same tick after\n                // RTCPeerConnection#close() is called. So we mimic Chrome's behavior\n                // by triggering 'signalingstatechange' on the next tick.\n                if (_this._isClosed) {\n                    setTimeout(function () { return _this.dispatchEvent.apply(_this, __spreadArray([], __read(args))); });\n                }\n                else {\n                    _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n                }\n            }\n        });\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"iceGatheringState\", {\n        get: function () {\n            return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return overwriteWithInitiallyNegotiatedDtlsRole(this._peerConnection.localDescription, this._initiallyNegotiatedDtlsRole);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            return this._isClosed ? 'closed' : this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    FirefoxRTCPeerConnection.prototype.createAnswer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var promise;\n        promise = this._peerConnection.createAnswer().then(function (answer) {\n            saveInitiallyNegotiatedDtlsRole(_this, answer);\n            return overwriteWithInitiallyNegotiatedDtlsRole(answer, _this._initiallyNegotiatedDtlsRole);\n        });\n        return typeof args[0] === 'function'\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args))) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec allows you to call createOffer from any\n    // signalingState other than \"closed\"; however, Firefox has not yet implemented\n    // this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388). We workaround\n    // this by rolling back if we are in state \"have-local-offer\" or\n    // \"have-remote-offer\". This is acceptable for our use case because we will\n    // apply the newly-created offer almost immediately; however, this may be\n    // unacceptable for other use cases.\n    FirefoxRTCPeerConnection.prototype.createOffer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n        var options = arg3 || arg1 || {};\n        var promise;\n        if (this.signalingState === 'have-local-offer' ||\n            this.signalingState === 'have-remote-offer') {\n            var local = this.signalingState === 'have-local-offer';\n            promise = rollback(this, local, function () { return _this.createOffer(options); });\n        }\n        else {\n            promise = this._peerConnection.createOffer(options);\n        }\n        promise = promise.then(function (offer) {\n            return new FirefoxRTCSessionDescription({\n                type: offer.type,\n                sdp: updateTracksToSSRCs(_this._tracksToSSRCs, offer.sdp)\n            });\n        });\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    // NOTE(mroberts): While Firefox will reject the Promise returned by\n    // setLocalDescription when called from signalingState \"have-local-offer\" with\n    // an answer, it still updates the .localDescription property. We workaround\n    // this by explicitly handling this case.\n    FirefoxRTCPeerConnection.prototype.setLocalDescription = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _b = __read(args), description = _b[0], rest = _b.slice(1);\n        var promise;\n        if (description && description.type === 'answer' && this.signalingState === 'have-local-offer') {\n            promise = Promise.reject(new Error('Cannot set local answer in state have-local-offer'));\n        }\n        if (promise) {\n            return args.length > 1\n                ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n        }\n        return (_a = this._peerConnection).setLocalDescription.apply(_a, __spreadArray([], __read(args)));\n    };\n    // NOTE(mroberts): The WebRTC spec allows you to call setRemoteDescription with\n    // an offer multiple times in signalingState \"have-remote-offer\"; however,\n    // Firefox has not yet implemented this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388).\n    // We workaround this by rolling back if we are in state \"have-remote-offer\".\n    // This is acceptable for our use case; however, this may be unacceptable for\n    // other use cases.\n    //\n    // While Firefox will reject the Promise returned by setRemoteDescription when\n    // called from signalingState \"have-remote-offer\" with an answer, it sill\n    // updates the .remoteDescription property. We workaround this by explicitly\n    // handling this case.\n    FirefoxRTCPeerConnection.prototype.setRemoteDescription = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args), description = _a[0], rest = _a.slice(1);\n        var promise;\n        if (description && this.signalingState === 'have-remote-offer') {\n            if (description.type === 'answer') {\n                promise = Promise.reject(new Error('Cannot set remote answer in state have-remote-offer'));\n            }\n            else if (description.type === 'offer') {\n                promise = rollback(this, false, function () { return _this._peerConnection.setRemoteDescription(description); });\n            }\n        }\n        if (!promise) {\n            promise = this._peerConnection.setRemoteDescription(description);\n        }\n        promise = promise.then(function () { return saveInitiallyNegotiatedDtlsRole(_this, description, true); });\n        return args.length > 1\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec specifies that the PeerConnection's internal\n    // isClosed slot should immediately be set to true; however, in Firefox it\n    // occurs in the next tick. We workaround this by tracking isClosed manually.\n    FirefoxRTCPeerConnection.prototype.close = function () {\n        if (this.signalingState !== 'closed') {\n            this._isClosed = true;\n            this._peerConnection.close();\n        }\n    };\n    return FirefoxRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, FirefoxRTCPeerConnection.prototype, '_peerConnection');\nfunction rollback(peerConnection, local, onceRolledBack) {\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    peerConnection._rollingBack = true;\n    return peerConnection._peerConnection[setLocalDescription](new FirefoxRTCSessionDescription({\n        type: 'rollback'\n    })).then(onceRolledBack).then(function (result) {\n        peerConnection._rollingBack = false;\n        return result;\n    }, function (error) {\n        peerConnection._rollingBack = false;\n        throw error;\n    });\n}\n/**\n * Extract the initially negotiated DTLS role out of an RTCSessionDescription's\n * sdp property and save it on the FirefoxRTCPeerConnection if and only if\n *\n *   1. A DTLS role was not already saved on the FirefoxRTCPeerConnection, and\n *   2. The description is an answer.\n *\n * @private\n * @param {FirefoxRTCPeerConnection} peerConnection\n * @param {RTCSessionDescription} description\n * @param {boolean} [remote=false] - if true, save the inverse of the DTLS role,\n *   e.g. \"active\" instead of \"passive\" and vice versa\n * @returns {undefined}\n */\nfunction saveInitiallyNegotiatedDtlsRole(peerConnection, description, remote) {\n    // NOTE(mroberts): JSEP specifies that offers always offer \"actpass\" as the\n    // DTLS role. We need to inspect answers to figure out the negotiated DTLS\n    // role.\n    if (peerConnection._initiallyNegotiatedDtlsRole || description.type === 'offer') {\n        return;\n    }\n    var match = description.sdp.match(/a=setup:([a-z]+)/);\n    if (!match) {\n        return;\n    }\n    var dtlsRole = match[1];\n    peerConnection._initiallyNegotiatedDtlsRole = remote ? {\n        active: 'passive',\n        passive: 'active'\n    }[dtlsRole] : dtlsRole;\n}\n/**\n * Overwrite the DTLS role in the sdp property of an RTCSessionDescription if\n * and only if\n *\n *   1. The description is an answer, and\n *   2. A DTLS role is provided.\n *\n * @private\n * @param {RTCSessionDescription} [description]\n * @param {string} [dtlsRole] - one of \"active\" or \"passive\"\n * @returns {?RTCSessionDescription} description\n */\nfunction overwriteWithInitiallyNegotiatedDtlsRole(description, dtlsRole) {\n    if (description && description.type === 'answer' && dtlsRole) {\n        return new FirefoxRTCSessionDescription({\n            type: description.type,\n            sdp: description.sdp.replace(/a=setup:[a-z]+/g, 'a=setup:' + dtlsRole)\n        });\n    }\n    return description;\n}\nmodule.exports = FirefoxRTCPeerConnection;\n//# sourceMappingURL=firefox.js.map","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-sorted');\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","'use strict';\nvar parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays:\n            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n                '_'\n            ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","'use strict';\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n","'use strict';\n\nmodule.exports = rbush;\nmodule.exports.default = rbush;\n\nvar quickselect = require('quickselect');\n\nfunction rbush(maxEntries, format) {\n    if (!(this instanceof rbush)) return new rbush(maxEntries, format);\n\n    // max entries in a node is 9 by default; min node fill is 40% for best performance\n    this._maxEntries = Math.max(4, maxEntries || 9);\n    this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n\n    if (format) {\n        this._initFormat(format);\n    }\n\n    this.clear();\n}\n\nrbush.prototype = {\n\n    all: function () {\n        return this._all(this.data, []);\n    },\n\n    search: function (bbox) {\n\n        var node = this.data,\n            result = [],\n            toBBox = this.toBBox;\n\n        if (!intersects(bbox, node)) return result;\n\n        var nodesToSearch = [],\n            i, len, child, childBBox;\n\n        while (node) {\n            for (i = 0, len = node.children.length; i < len; i++) {\n\n                child = node.children[i];\n                childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf) result.push(child);\n                    else if (contains(bbox, childBBox)) this._all(child, result);\n                    else nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return result;\n    },\n\n    collides: function (bbox) {\n\n        var node = this.data,\n            toBBox = this.toBBox;\n\n        if (!intersects(bbox, node)) return false;\n\n        var nodesToSearch = [],\n            i, len, child, childBBox;\n\n        while (node) {\n            for (i = 0, len = node.children.length; i < len; i++) {\n\n                child = node.children[i];\n                childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf || contains(bbox, childBBox)) return true;\n                    nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return false;\n    },\n\n    load: function (data) {\n        if (!(data && data.length)) return this;\n\n        if (data.length < this._minEntries) {\n            for (var i = 0, len = data.length; i < len; i++) {\n                this.insert(data[i]);\n            }\n            return this;\n        }\n\n        // recursively build the tree with the given data from scratch using OMT algorithm\n        var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n        if (!this.data.children.length) {\n            // save as is if tree is empty\n            this.data = node;\n\n        } else if (this.data.height === node.height) {\n            // split root if trees have the same height\n            this._splitRoot(this.data, node);\n\n        } else {\n            if (this.data.height < node.height) {\n                // swap trees if inserted one is bigger\n                var tmpNode = this.data;\n                this.data = node;\n                node = tmpNode;\n            }\n\n            // insert the small tree into the large tree at appropriate level\n            this._insert(node, this.data.height - node.height - 1, true);\n        }\n\n        return this;\n    },\n\n    insert: function (item) {\n        if (item) this._insert(item, this.data.height - 1);\n        return this;\n    },\n\n    clear: function () {\n        this.data = createNode([]);\n        return this;\n    },\n\n    remove: function (item, equalsFn) {\n        if (!item) return this;\n\n        var node = this.data,\n            bbox = this.toBBox(item),\n            path = [],\n            indexes = [],\n            i, parent, index, goingUp;\n\n        // depth-first iterative tree traversal\n        while (node || path.length) {\n\n            if (!node) { // go up\n                node = path.pop();\n                parent = path[path.length - 1];\n                i = indexes.pop();\n                goingUp = true;\n            }\n\n            if (node.leaf) { // check current node\n                index = findItem(item, node.children, equalsFn);\n\n                if (index !== -1) {\n                    // item found, remove the item and condense tree upwards\n                    node.children.splice(index, 1);\n                    path.push(node);\n                    this._condense(path);\n                    return this;\n                }\n            }\n\n            if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n                path.push(node);\n                indexes.push(i);\n                i = 0;\n                parent = node;\n                node = node.children[0];\n\n            } else if (parent) { // go right\n                i++;\n                node = parent.children[i];\n                goingUp = false;\n\n            } else node = null; // nothing found\n        }\n\n        return this;\n    },\n\n    toBBox: function (item) { return item; },\n\n    compareMinX: compareNodeMinX,\n    compareMinY: compareNodeMinY,\n\n    toJSON: function () { return this.data; },\n\n    fromJSON: function (data) {\n        this.data = data;\n        return this;\n    },\n\n    _all: function (node, result) {\n        var nodesToSearch = [];\n        while (node) {\n            if (node.leaf) result.push.apply(result, node.children);\n            else nodesToSearch.push.apply(nodesToSearch, node.children);\n\n            node = nodesToSearch.pop();\n        }\n        return result;\n    },\n\n    _build: function (items, left, right, height) {\n\n        var N = right - left + 1,\n            M = this._maxEntries,\n            node;\n\n        if (N <= M) {\n            // reached leaf level; return leaf\n            node = createNode(items.slice(left, right + 1));\n            calcBBox(node, this.toBBox);\n            return node;\n        }\n\n        if (!height) {\n            // target height of the bulk-loaded tree\n            height = Math.ceil(Math.log(N) / Math.log(M));\n\n            // target number of root entries to maximize storage utilization\n            M = Math.ceil(N / Math.pow(M, height - 1));\n        }\n\n        node = createNode([]);\n        node.leaf = false;\n        node.height = height;\n\n        // split the items into M mostly square tiles\n\n        var N2 = Math.ceil(N / M),\n            N1 = N2 * Math.ceil(Math.sqrt(M)),\n            i, j, right2, right3;\n\n        multiSelect(items, left, right, N1, this.compareMinX);\n\n        for (i = left; i <= right; i += N1) {\n\n            right2 = Math.min(i + N1 - 1, right);\n\n            multiSelect(items, i, right2, N2, this.compareMinY);\n\n            for (j = i; j <= right2; j += N2) {\n\n                right3 = Math.min(j + N2 - 1, right2);\n\n                // pack each entry recursively\n                node.children.push(this._build(items, j, right3, height - 1));\n            }\n        }\n\n        calcBBox(node, this.toBBox);\n\n        return node;\n    },\n\n    _chooseSubtree: function (bbox, node, level, path) {\n\n        var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n\n        while (true) {\n            path.push(node);\n\n            if (node.leaf || path.length - 1 === level) break;\n\n            minArea = minEnlargement = Infinity;\n\n            for (i = 0, len = node.children.length; i < len; i++) {\n                child = node.children[i];\n                area = bboxArea(child);\n                enlargement = enlargedArea(bbox, child) - area;\n\n                // choose entry with the least area enlargement\n                if (enlargement < minEnlargement) {\n                    minEnlargement = enlargement;\n                    minArea = area < minArea ? area : minArea;\n                    targetNode = child;\n\n                } else if (enlargement === minEnlargement) {\n                    // otherwise choose one with the smallest area\n                    if (area < minArea) {\n                        minArea = area;\n                        targetNode = child;\n                    }\n                }\n            }\n\n            node = targetNode || node.children[0];\n        }\n\n        return node;\n    },\n\n    _insert: function (item, level, isNode) {\n\n        var toBBox = this.toBBox,\n            bbox = isNode ? item : toBBox(item),\n            insertPath = [];\n\n        // find the best node for accommodating the item, saving all nodes along the path too\n        var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n        // put the item into the node\n        node.children.push(item);\n        extend(node, bbox);\n\n        // split on node overflow; propagate upwards if necessary\n        while (level >= 0) {\n            if (insertPath[level].children.length > this._maxEntries) {\n                this._split(insertPath, level);\n                level--;\n            } else break;\n        }\n\n        // adjust bboxes along the insertion path\n        this._adjustParentBBoxes(bbox, insertPath, level);\n    },\n\n    // split overflowed node into two\n    _split: function (insertPath, level) {\n\n        var node = insertPath[level],\n            M = node.children.length,\n            m = this._minEntries;\n\n        this._chooseSplitAxis(node, m, M);\n\n        var splitIndex = this._chooseSplitIndex(node, m, M);\n\n        var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n        newNode.height = node.height;\n        newNode.leaf = node.leaf;\n\n        calcBBox(node, this.toBBox);\n        calcBBox(newNode, this.toBBox);\n\n        if (level) insertPath[level - 1].children.push(newNode);\n        else this._splitRoot(node, newNode);\n    },\n\n    _splitRoot: function (node, newNode) {\n        // split root node\n        this.data = createNode([node, newNode]);\n        this.data.height = node.height + 1;\n        this.data.leaf = false;\n        calcBBox(this.data, this.toBBox);\n    },\n\n    _chooseSplitIndex: function (node, m, M) {\n\n        var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n\n        minOverlap = minArea = Infinity;\n\n        for (i = m; i <= M - m; i++) {\n            bbox1 = distBBox(node, 0, i, this.toBBox);\n            bbox2 = distBBox(node, i, M, this.toBBox);\n\n            overlap = intersectionArea(bbox1, bbox2);\n            area = bboxArea(bbox1) + bboxArea(bbox2);\n\n            // choose distribution with minimum overlap\n            if (overlap < minOverlap) {\n                minOverlap = overlap;\n                index = i;\n\n                minArea = area < minArea ? area : minArea;\n\n            } else if (overlap === minOverlap) {\n                // otherwise choose distribution with minimum area\n                if (area < minArea) {\n                    minArea = area;\n                    index = i;\n                }\n            }\n        }\n\n        return index;\n    },\n\n    // sorts node children by the best axis for split\n    _chooseSplitAxis: function (node, m, M) {\n\n        var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,\n            compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,\n            xMargin = this._allDistMargin(node, m, M, compareMinX),\n            yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n        // if total distributions margin value is minimal for x, sort by minX,\n        // otherwise it's already sorted by minY\n        if (xMargin < yMargin) node.children.sort(compareMinX);\n    },\n\n    // total margin of all possible split distributions where each node is at least m full\n    _allDistMargin: function (node, m, M, compare) {\n\n        node.children.sort(compare);\n\n        var toBBox = this.toBBox,\n            leftBBox = distBBox(node, 0, m, toBBox),\n            rightBBox = distBBox(node, M - m, M, toBBox),\n            margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),\n            i, child;\n\n        for (i = m; i < M - m; i++) {\n            child = node.children[i];\n            extend(leftBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(leftBBox);\n        }\n\n        for (i = M - m - 1; i >= m; i--) {\n            child = node.children[i];\n            extend(rightBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(rightBBox);\n        }\n\n        return margin;\n    },\n\n    _adjustParentBBoxes: function (bbox, path, level) {\n        // adjust bboxes along the given tree path\n        for (var i = level; i >= 0; i--) {\n            extend(path[i], bbox);\n        }\n    },\n\n    _condense: function (path) {\n        // go through the path, removing empty nodes and updating bboxes\n        for (var i = path.length - 1, siblings; i >= 0; i--) {\n            if (path[i].children.length === 0) {\n                if (i > 0) {\n                    siblings = path[i - 1].children;\n                    siblings.splice(siblings.indexOf(path[i]), 1);\n\n                } else this.clear();\n\n            } else calcBBox(path[i], this.toBBox);\n        }\n    },\n\n    _initFormat: function (format) {\n        // data format (minX, minY, maxX, maxY accessors)\n\n        // uses eval-type function compilation instead of just accepting a toBBox function\n        // because the algorithms are very sensitive to sorting functions performance,\n        // so they should be dead simple and without inner calls\n\n        var compareArr = ['return a', ' - b', ';'];\n\n        this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));\n        this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));\n\n        this.toBBox = new Function('a',\n            'return {minX: a' + format[0] +\n            ', minY: a' + format[1] +\n            ', maxX: a' + format[2] +\n            ', maxY: a' + format[3] + '};');\n    }\n};\n\nfunction findItem(item, items, equalsFn) {\n    if (!equalsFn) return items.indexOf(item);\n\n    for (var i = 0; i < items.length; i++) {\n        if (equalsFn(item, items[i])) return i;\n    }\n    return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n    distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n    if (!destNode) destNode = createNode(null);\n    destNode.minX = Infinity;\n    destNode.minY = Infinity;\n    destNode.maxX = -Infinity;\n    destNode.maxY = -Infinity;\n\n    for (var i = k, child; i < p; i++) {\n        child = node.children[i];\n        extend(destNode, node.leaf ? toBBox(child) : child);\n    }\n\n    return destNode;\n}\n\nfunction extend(a, b) {\n    a.minX = Math.min(a.minX, b.minX);\n    a.minY = Math.min(a.minY, b.minY);\n    a.maxX = Math.max(a.maxX, b.maxX);\n    a.maxY = Math.max(a.maxY, b.maxY);\n    return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a)   { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n    return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n           (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n    var minX = Math.max(a.minX, b.minX),\n        minY = Math.max(a.minY, b.minY),\n        maxX = Math.min(a.maxX, b.maxX),\n        maxY = Math.min(a.maxY, b.maxY);\n\n    return Math.max(0, maxX - minX) *\n           Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n    return a.minX <= b.minX &&\n           a.minY <= b.minY &&\n           b.maxX <= a.maxX &&\n           b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n    return b.minX <= a.maxX &&\n           b.minY <= a.maxY &&\n           b.maxX >= a.minX &&\n           b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n    return {\n        children: children,\n        height: 1,\n        leaf: true,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n    var stack = [left, right],\n        mid;\n\n    while (stack.length) {\n        right = stack.pop();\n        left = stack.pop();\n\n        if (right - left <= n) continue;\n\n        mid = left + Math.ceil((right - left) / n / 2) * n;\n        quickselect(arr, mid, left, right, compare);\n\n        stack.push(left, mid, mid, right);\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSupported = exports.isChromiumImageBitmap = exports.isBrowserSupported = void 0;\n/**\n * @private\n */\nfunction getCanvas() {\n    return typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : document.createElement('canvas');\n}\n/**\n * @private\n */\nfunction isBrowserSupported() {\n    if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n        return !!(getCanvas().getContext('2d') || getCanvas().getContext('webgl2'));\n    }\n    else {\n        return false;\n    }\n}\nexports.isBrowserSupported = isBrowserSupported;\n/**\n * @private\n */\nfunction isChromiumImageBitmap() {\n    return typeof chrome === 'object'\n        && /Chrome/.test(navigator.userAgent)\n        && typeof createImageBitmap === 'function';\n}\nexports.isChromiumImageBitmap = isChromiumImageBitmap;\n/**\n * Check if the current browser is officially supported by twilio-video-procesors.js.\n * This is set to `true` for browsers that supports canvas\n * [2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D) or\n * [webgl2](https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext)\n * rendering context.\n * @example\n * ```ts\n * import { isSupported } from '@twilio/video-processors';\n *\n * if (isSupported) {\n *   // Initialize the background processors\n * }\n * ```\n */\nexports.isSupported = isBrowserSupported();\n//# sourceMappingURL=support.js.map","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar VALID_GROUPS = [\n    'signaling',\n    'room',\n    'media',\n    'quality',\n    'video-processor',\n    'preflight'\n];\nvar VALID_LEVELS = [\n    'debug',\n    'error',\n    'info',\n    'warning'\n];\n/**\n * EventObserver listens to SDK events and re-emits them on the\n * @link EventListener} with some additional information.\n * @extends EventEmitter\n * @emits EventObserver#event\n */\nvar EventObserver = /** @class */ (function (_super) {\n    __extends(EventObserver, _super);\n    /**\n     * Constructor.\n     * @param {InsightsPublisher} publisher\n     * @param {number} connectTimestamp\n     * @param {Log} log\n     * @param {EventListener} [eventListener]\n     */\n    function EventObserver(publisher, connectTimestamp, log, eventListener) {\n        if (eventListener === void 0) { eventListener = null; }\n        var _this = _super.call(this) || this;\n        _this.on('event', function (_a) {\n            var name = _a.name, group = _a.group, level = _a.level, payload = _a.payload;\n            if (typeof name !== 'string') {\n                log.error('Unexpected name: ', name);\n                throw new Error('Unexpected name: ', name);\n            }\n            if (!VALID_GROUPS.includes(group)) {\n                log.error('Unexpected group: ', group);\n                throw new Error('Unexpected group: ', group);\n            }\n            if (!VALID_LEVELS.includes(level)) {\n                log.error('Unexpected level: ', level);\n                throw new Error('Unexpected level: ', level);\n            }\n            var timestamp = Date.now();\n            var elapsedTime = timestamp - connectTimestamp;\n            var publisherPayload = Object.assign({ elapsedTime: elapsedTime, level: level }, payload ? payload : {});\n            publisher.publish(group, name, publisherPayload);\n            var event = Object.assign({\n                elapsedTime: elapsedTime,\n                group: group,\n                level: level,\n                name: name,\n                timestamp: timestamp\n            }, payload ? { payload: payload } : {});\n            var logLevel = {\n                debug: 'debug',\n                error: 'error',\n                info: 'info',\n                warning: 'warn',\n            }[level];\n            log[logLevel]('event', event);\n            if (eventListener && group === 'signaling') {\n                eventListener.emit('event', event);\n            }\n        });\n        return _this;\n    }\n    return EventObserver;\n}(EventEmitter));\n/**\n * An SDK event.\n * @event EventObserver#event\n * @param {{name: string, payload: *}} event\n */\nmodule.exports = EventObserver;\n//# sourceMappingURL=eventobserver.js.map","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal');\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","/* global MediaStreamTrack */\n'use strict';\nif (typeof MediaStreamTrack === 'function') {\n    module.exports = MediaStreamTrack;\n}\nelse {\n    module.exports = function MediaStreamTrack() {\n        throw new Error('MediaStreamTrack is not supported');\n    };\n}\n//# sourceMappingURL=mediastreamtrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackPublication = require('./trackpublication');\n/**\n * A {@link RemoteTrackPublication} represents a {@link RemoteTrack} that has\n * been published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isSubscribed - whether the published {@link RemoteTrack}\n *   is subscribed to\n * @property {boolean} isTrackEnabled - whether the published\n *   {@link RemoteTrack} is enabled\n * @property {Track.Kind} kind - kind of the published {@link RemoteTrack}\n * @property {Track.Priority} publishPriority - the {@link Track.Priority} of the published\n *   {@link RemoteTrack} set by the {@link RemoteParticipant}\n * @property {?RemoteTrack} track - Unless you have subscribed to the\n *   {@link RemoteTrack}, this property is null\n * @emits RemoteTrackPublication#publishPriorityChanged\n * @emits RemoteTrackPublication#subscribed\n * @emits RemoteTrackPublication#subscriptionFailed\n * @emits RemoteTrackPublication#trackDisabled\n * @emits RemoteTrackPublication#trackEnabled\n * @emits RemoteTrackPublication#trackSwitchedOff\n * @emits RemoteTrackPublication#trackSwitchedOn\n * @emits RemoteTrackPublication#unsubscribed\n *\n */\nvar RemoteTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteTrackPublication(signaling, options) {\n        var _this = _super.call(this, signaling.name, signaling.sid, options) || this;\n        Object.defineProperties(_this, {\n            _signaling: {\n                value: signaling\n            },\n            _track: {\n                value: null,\n                writable: true\n            },\n            isSubscribed: {\n                enumerable: true,\n                get: function () {\n                    return !!this._track;\n                }\n            },\n            isTrackEnabled: {\n                enumerable: true,\n                get: function () {\n                    return signaling.isEnabled;\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: signaling.kind\n            },\n            publishPriority: {\n                enumerable: true,\n                get: function () {\n                    return signaling.priority;\n                }\n            },\n            track: {\n                enumerable: true,\n                get: function () {\n                    return this._track;\n                }\n            }\n        });\n        // remember original state, and fire events only on change.\n        var error = signaling.error, isEnabled = signaling.isEnabled, isSwitchedOff = signaling.isSwitchedOff, priority = signaling.priority;\n        signaling.on('updated', function () {\n            if (error !== signaling.error) {\n                error = signaling.error;\n                _this.emit('subscriptionFailed', signaling.error);\n                return;\n            }\n            if (isEnabled !== signaling.isEnabled) {\n                isEnabled = signaling.isEnabled;\n                if (_this.track) {\n                    _this.track._setEnabled(signaling.isEnabled);\n                }\n                _this.emit(signaling.isEnabled ? 'trackEnabled' : 'trackDisabled');\n            }\n            if (isSwitchedOff !== signaling.isSwitchedOff) {\n                _this._log.debug(_this.trackSid + \": \" + (isSwitchedOff ? 'OFF' : 'ON') + \" => \" + (signaling.isSwitchedOff ? 'OFF' : 'ON'));\n                isSwitchedOff = signaling.isSwitchedOff;\n                if (_this.track) {\n                    _this.track._setSwitchedOff(signaling.isSwitchedOff);\n                    _this.emit(isSwitchedOff ? 'trackSwitchedOff' : 'trackSwitchedOn', _this.track);\n                }\n                else if (isSwitchedOff) {\n                    _this._log.warn('Track was not subscribed when switched Off.');\n                }\n            }\n            if (priority !== signaling.priority) {\n                priority = signaling.priority;\n                _this.emit('publishPriorityChanged', priority);\n            }\n        });\n        return _this;\n    }\n    RemoteTrackPublication.prototype.toString = function () {\n        return \"[RemoteTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     */\n    RemoteTrackPublication.prototype._subscribed = function (track) {\n        if (!this._track && track) {\n            this._track = track;\n            this.emit('subscribed', track);\n        }\n    };\n    /**\n     * @private\n     */\n    RemoteTrackPublication.prototype._unsubscribe = function () {\n        if (this._track) {\n            var track = this._track;\n            this._track = null;\n            this.emit('unsubscribed', track);\n        }\n    };\n    return RemoteTrackPublication;\n}(TrackPublication));\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority}; RemoteTrackPublication#publishPriority is also\n *   updated accordingly\n * @event RemoteTrackPublication#publishPriorityChanged\n */\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was subscribed to\n * @event RemoteTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @event RemoteTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteTrack} was disabled.\n * @event RemoteTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteTrack} was enabled.\n * @event RemoteTrackPublication#trackEnabled\n */\n/**\n * The {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched off\n * @event RemoteTrackPublication#trackSwitchedOff\n */\n/**\n * The {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched on\n * @event RemoteTrackPublication#trackSwitchedOn\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteTrackPublication#unsubscribed\n */\n/**\n * {@link RemoteTrackPublication} options\n * @typedef {object} RemoteTrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = RemoteTrackPublication;\n//# sourceMappingURL=remotetrackpublication.js.map","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @emits TrackSwitchOffSignalinging#updated\n */\nvar TrackSwitchOffSignaling = /** @class */ (function (_super) {\n    __extends(TrackSwitchOffSignaling, _super);\n    /**\n     * Construct a {@link TrackSwitchOffSignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     */\n    function TrackSwitchOffSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'track_switch_off', options) || this;\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                switch (message.type) {\n                    case 'track_switch_off':\n                        _this._setTrackSwitchOffUpdates(message.off || [], message.on || []);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    /**\n     * @private\n     * @param {[Track.SID]} tracksSwitchedOff\n     * @param {[Track.SID]} tracksSwitchedOn\n     * @returns {void}\n     */\n    TrackSwitchOffSignaling.prototype._setTrackSwitchOffUpdates = function (tracksSwitchedOff, tracksSwitchedOn) {\n        this.emit('updated', tracksSwitchedOff, tracksSwitchedOn);\n    };\n    return TrackSwitchOffSignaling;\n}(MediaSignaling));\n/**\n * @event TrackSwitchOffSignaling#updated\n */\nmodule.exports = TrackSwitchOffSignaling;\n//# sourceMappingURL=trackswitchoffsignaling.js.map","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n'use strict';\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLocalTracks = void 0;\nvar noisecancellationimpl_1 = require(\"./media/track/noisecancellationimpl\");\nvar buildLogLevels = require('./util').buildLogLevels;\nvar _a = require('./webrtc'), getUserMedia = _a.getUserMedia, MediaStreamTrack = _a.MediaStreamTrack;\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar Log = require('./util/log');\nvar _c = require('./util/constants'), DEFAULT_LOG_LEVEL = _c.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _c.DEFAULT_LOGGER_NAME, INVALID_VALUE = _c.typeErrors.INVALID_VALUE;\nvar workaround180748 = require('./webaudio/workaround180748');\n// This is used to make out which createLocalTracks() call a particular Log\n// statement belongs to. Each call to createLocalTracks() increments this\n// counter.\nvar createLocalTrackCalls = 0;\n/**\n * Request {@link LocalTrack}s. By default, it requests a\n * {@link LocalAudioTrack} and a {@link LocalVideoTrack}.\n * Note that on mobile browsers, the camera can be reserved by only one {@link LocalVideoTrack}\n * at any given time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalTracks\n * @param {CreateLocalTracksOptions} [options]\n * @returns {Promise<Array<LocalTrack>>}\n * @example\n * var Video = require('twilio-video');\n * // Request audio and video tracks\n * Video.createLocalTracks().then(function(localTracks) {\n *   var localMediaContainer = document.getElementById('local-media-container-id');\n *   localTracks.forEach(function(track) {\n *     localMediaContainer.appendChild(track.attach());\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request just the default audio track\n * Video.createLocalTracks({ audio: true }).then(function(localTracks) {\n *   return Video.connect('my-token', {\n *     name: 'my-cool-room',\n *     tracks: localTracks\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request the audio and video tracks with custom names\n * Video.createLocalTracks({\n *   audio: { name: 'microphone' },\n *   video: { name: 'camera' }\n * }).then(function(localTracks) {\n *   localTracks.forEach(function(localTrack) {\n *     console.log(localTrack.name);\n *   });\n * });\n *\n * @example\n * var Video = require('twilio-video');\n * var localTracks;\n *\n * // Pre-acquire tracks to display camera preview.\n * Video.createLocalTracks().then(function(tracks) {\n *  localTracks = tracks;\n *  var localVideoTrack = localTracks.find(track => track.kind === 'video');\n *  divContainer.appendChild(localVideoTrack.attach());\n * })\n *\n * // Later, join the Room with the pre-acquired LocalTracks.\n * Video.connect('token', {\n *   name: 'my-cool-room',\n *   tracks: localTracks\n * });\n *\n */\nfunction createLocalTracks(options) {\n    return __awaiter(this, void 0, void 0, function () {\n        var isAudioVideoAbsent, fullOptions, logComponentName, logLevels, log, localTrackOptions, extraLocalTrackOptions, noiseCancellationOptions, mediaStreamConstraints, workaroundWebKitBug180748, mediaStream, mediaStreamTracks, error_1;\n        var _this = this;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    isAudioVideoAbsent = !(options && ('audio' in options || 'video' in options));\n                    fullOptions = __assign({ audio: isAudioVideoAbsent, getUserMedia: getUserMedia, loggerName: DEFAULT_LOGGER_NAME, logLevel: DEFAULT_LOG_LEVEL, LocalAudioTrack: LocalAudioTrack,\n                        LocalDataTrack: LocalDataTrack,\n                        LocalVideoTrack: LocalVideoTrack,\n                        MediaStreamTrack: MediaStreamTrack,\n                        Log: Log, video: isAudioVideoAbsent }, options);\n                    logComponentName = \"[createLocalTracks #\" + ++createLocalTrackCalls + \"]\";\n                    logLevels = buildLogLevels(fullOptions.logLevel);\n                    log = new fullOptions.Log('default', logComponentName, logLevels, fullOptions.loggerName);\n                    localTrackOptions = Object.assign({ log: log }, fullOptions);\n                    // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n                    // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n                    // \"options\" without the \"name\".\n                    // NOTE(joma): CreateLocalTracksOptions type does not really have a \"name\" property when used publicly by customers.\n                    // But we are passing this property when used internally by other JS files.\n                    // We can update this \"any\" type once those JS files are converted to TS.\n                    delete localTrackOptions.name;\n                    if (fullOptions.audio === false && fullOptions.video === false) {\n                        log.info('Neither audio nor video requested, so returning empty LocalTracks');\n                        return [2 /*return*/, []];\n                    }\n                    if (fullOptions.tracks) {\n                        log.info('Adding user-provided LocalTracks');\n                        log.debug('LocalTracks:', fullOptions.tracks);\n                        return [2 /*return*/, fullOptions.tracks];\n                    }\n                    extraLocalTrackOptions = {\n                        audio: typeof fullOptions.audio === 'object' && fullOptions.audio.name\n                            ? { name: fullOptions.audio.name }\n                            : { defaultDeviceCaptureMode: 'auto' },\n                        video: typeof fullOptions.video === 'object' && fullOptions.video.name\n                            ? { name: fullOptions.video.name }\n                            : {}\n                    };\n                    extraLocalTrackOptions.audio.isCreatedByCreateLocalTracks = true;\n                    extraLocalTrackOptions.video.isCreatedByCreateLocalTracks = true;\n                    if (typeof fullOptions.audio === 'object') {\n                        if (typeof fullOptions.audio.workaroundWebKitBug1208516 === 'boolean') {\n                            extraLocalTrackOptions.audio.workaroundWebKitBug1208516 = fullOptions.audio.workaroundWebKitBug1208516;\n                        }\n                        if ('noiseCancellationOptions' in fullOptions.audio) {\n                            noiseCancellationOptions = fullOptions.audio.noiseCancellationOptions;\n                            delete fullOptions.audio.noiseCancellationOptions;\n                        }\n                        if (!('defaultDeviceCaptureMode' in fullOptions.audio)) {\n                            extraLocalTrackOptions.audio.defaultDeviceCaptureMode = 'auto';\n                        }\n                        else if (['auto', 'manual'].every(function (mode) { return mode !== fullOptions.audio.defaultDeviceCaptureMode; })) {\n                            // eslint-disable-next-line new-cap\n                            throw INVALID_VALUE('CreateLocalAudioTrackOptions.defaultDeviceCaptureMode', ['auto', 'manual']);\n                        }\n                        else {\n                            extraLocalTrackOptions.audio.defaultDeviceCaptureMode = fullOptions.audio.defaultDeviceCaptureMode;\n                        }\n                    }\n                    if (typeof fullOptions.video === 'object' && typeof fullOptions.video.workaroundWebKitBug1208516 === 'boolean') {\n                        extraLocalTrackOptions.video.workaroundWebKitBug1208516 = fullOptions.video.workaroundWebKitBug1208516;\n                    }\n                    if (typeof fullOptions.audio === 'object') {\n                        delete fullOptions.audio.name;\n                    }\n                    if (typeof fullOptions.video === 'object') {\n                        delete fullOptions.video.name;\n                    }\n                    mediaStreamConstraints = {\n                        audio: fullOptions.audio,\n                        video: fullOptions.video\n                    };\n                    workaroundWebKitBug180748 = typeof fullOptions.audio === 'object' && fullOptions.audio.workaroundWebKitBug180748;\n                    _a.label = 1;\n                case 1:\n                    _a.trys.push([1, 4, , 5]);\n                    return [4 /*yield*/, (workaroundWebKitBug180748\n                            ? workaround180748(log, fullOptions.getUserMedia, mediaStreamConstraints)\n                            : fullOptions.getUserMedia(mediaStreamConstraints))];\n                case 2:\n                    mediaStream = _a.sent();\n                    mediaStreamTracks = __spreadArray(__spreadArray([], __read(mediaStream.getAudioTracks())), __read(mediaStream.getVideoTracks()));\n                    log.info('Call to getUserMedia successful; got tracks:', mediaStreamTracks);\n                    return [4 /*yield*/, Promise.all(mediaStreamTracks.map(function (mediaStreamTrack) { return __awaiter(_this, void 0, void 0, function () {\n                            var _a, cleanTrack, noiseCancellation;\n                            return __generator(this, function (_b) {\n                                switch (_b.label) {\n                                    case 0:\n                                        if (!(mediaStreamTrack.kind === 'audio' && noiseCancellationOptions)) return [3 /*break*/, 2];\n                                        return [4 /*yield*/, noisecancellationimpl_1.applyNoiseCancellation(mediaStreamTrack, noiseCancellationOptions, log)];\n                                    case 1:\n                                        _a = _b.sent(), cleanTrack = _a.cleanTrack, noiseCancellation = _a.noiseCancellation;\n                                        return [2 /*return*/, new localTrackOptions.LocalAudioTrack(cleanTrack, __assign(__assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions), { noiseCancellation: noiseCancellation }))];\n                                    case 2:\n                                        if (mediaStreamTrack.kind === 'audio') {\n                                            return [2 /*return*/, new localTrackOptions.LocalAudioTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions))];\n                                        }\n                                        _b.label = 3;\n                                    case 3: return [2 /*return*/, new localTrackOptions.LocalVideoTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.video), localTrackOptions))];\n                                }\n                            });\n                        }); }))];\n                case 3: return [2 /*return*/, _a.sent()];\n                case 4:\n                    error_1 = _a.sent();\n                    log.warn('Call to getUserMedia failed:', error_1);\n                    throw error_1;\n                case 5: return [2 /*return*/];\n            }\n        });\n    });\n}\nexports.createLocalTracks = createLocalTracks;\n//# sourceMappingURL=createlocaltracks.js.map","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","import ownerDocument from './ownerDocument';\n/**\n * Return the actively focused element safely.\n *\n * @param doc the document to checl\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}","import hasClass from './hasClass';\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    ;\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n  if ('window' in node && node.window === node) return node;\n  if (isDocument(node)) return node.defaultView || false;\n  return false;\n}","export default function isDocument(element) {\n  return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n  var win = isWindow(node) || doc.defaultView;\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n  var win = isWindow(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nexport function ariaHidden(hide, node) {\n  if (!node) return;\n\n  if (hide) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\nexport function hideSiblings(container, _ref2) {\n  var dialog = _ref2.dialog,\n      backdrop = _ref2.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\nexport function showSiblings(container, _ref3) {\n  var dialog = _ref3.dialog,\n      backdrop = _ref3.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n\n    return false;\n  });\n  return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = void 0;\n    this.handleContainerOverflow = void 0;\n    this.modals = void 0;\n    this.containers = void 0;\n    this.data = void 0;\n    this.scrollbarSize = void 0;\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = getScrollbarSize();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden'\n    }; // we are only interested in the actual `style` here\n    // because we will override it\n\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n    }\n\n    css(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    Object.assign(container.style, containerState.style);\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      hideSiblings(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      // right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: isOverflowing(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        showSiblings(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      // otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      ariaHidden(false, dialog);\n      ariaHidden(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nexport default ModalManager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n  if (!manager) manager = new ModalManager();\n  return manager;\n}\n\nfunction useModalManager(provided) {\n  var modalManager = provided || getManager();\n  var modal = useRef({\n    dialog: null,\n    backdrop: null\n  });\n  return Object.assign(modal.current, {\n    add: function add(container, className) {\n      return modalManager.add(modal.current, container, className);\n    },\n    remove: function remove() {\n      return modalManager.remove(modal.current);\n    },\n    isTopModal: function isTopModal() {\n      return modalManager.isTopModal(modal.current);\n    },\n    setDialogRef: useCallback(function (ref) {\n      modal.current.dialog = ref;\n    }, []),\n    setBackdropRef: useCallback(function (ref) {\n      modal.current.backdrop = ref;\n    }, [])\n  });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$role = _ref.role,\n      role = _ref$role === void 0 ? 'dialog' : _ref$role,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      _ref$backdrop = _ref.backdrop,\n      backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n      _ref$keyboard = _ref.keyboard,\n      keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n      onBackdropClick = _ref.onBackdropClick,\n      onEscapeKeyDown = _ref.onEscapeKeyDown,\n      transition = _ref.transition,\n      backdropTransition = _ref.backdropTransition,\n      _ref$autoFocus = _ref.autoFocus,\n      autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n      _ref$enforceFocus = _ref.enforceFocus,\n      enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n      _ref$restoreFocus = _ref.restoreFocus,\n      restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n      restoreFocusOptions = _ref.restoreFocusOptions,\n      renderDialog = _ref.renderDialog,\n      _ref$renderBackdrop = _ref.renderBackdrop,\n      renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n    return /*#__PURE__*/React.createElement(\"div\", props);\n  } : _ref$renderBackdrop,\n      providedManager = _ref.manager,\n      containerRef = _ref.container,\n      containerClassName = _ref.containerClassName,\n      onShow = _ref.onShow,\n      _ref$onHide = _ref.onHide,\n      onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n      onExit = _ref.onExit,\n      onExited = _ref.onExited,\n      onExiting = _ref.onExiting,\n      onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onEntered = _ref.onEntered,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n  var container = useWaitForDOMRef(containerRef);\n  var modal = useModalManager(providedManager);\n  var isMounted = useMounted();\n  var prevShow = usePrevious(show);\n\n  var _useState = useState(!show),\n      exited = _useState[0],\n      setExited = _useState[1];\n\n  var lastFocusRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return modal;\n  }, [modal]);\n\n  if (canUseDOM && !prevShow && show) {\n    lastFocusRef.current = activeElement();\n  }\n\n  if (!transition && !show && !exited) {\n    setExited(true);\n  } else if (show && exited) {\n    setExited(false);\n  }\n\n  var handleShow = useEventCallback(function () {\n    modal.add(container, containerClassName);\n    removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n    removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n    // and so steals focus from it\n    function () {\n      return setTimeout(handleEnforceFocus);\n    }, true);\n\n    if (onShow) {\n      onShow();\n    } // autofocus after onShow to not trigger a focus event for previous\n    // modals before this one is shown.\n\n\n    if (autoFocus) {\n      var currentActiveElement = activeElement(document);\n\n      if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n        lastFocusRef.current = currentActiveElement;\n        modal.dialog.focus();\n      }\n    }\n  });\n  var handleHide = useEventCallback(function () {\n    modal.remove();\n    removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n    removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n    if (restoreFocus) {\n      var _lastFocusRef$current;\n\n      // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n      (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n      lastFocusRef.current = null;\n    }\n  }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n  // Show logic when:\n  //  - show is `true` _and_ `container` has resolved\n\n  useEffect(function () {\n    if (!show || !container) return;\n    handleShow();\n  }, [show, container,\n  /* should never change: */\n  handleShow]); // Hide cleanup logic when:\n  //  - `exited` switches to true\n  //  - component unmounts;\n\n  useEffect(function () {\n    if (!exited) return;\n    handleHide();\n  }, [exited, handleHide]);\n  useWillUnmount(function () {\n    handleHide();\n  }); // --------------------------------\n\n  var handleEnforceFocus = useEventCallback(function () {\n    if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n      return;\n    }\n\n    var currentActiveElement = activeElement();\n\n    if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n      modal.dialog.focus();\n    }\n  });\n  var handleBackdropClick = useEventCallback(function (e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n    if (backdrop === true) {\n      onHide();\n    }\n  });\n  var handleDocumentKeyDown = useEventCallback(function (e) {\n    if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n      if (!e.defaultPrevented) {\n        onHide();\n      }\n    }\n  });\n  var removeFocusListenerRef = useRef();\n  var removeKeydownListenerRef = useRef();\n\n  var handleHidden = function handleHidden() {\n    setExited(true);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    onExited == null ? void 0 : onExited.apply(void 0, args);\n  };\n\n  var Transition = transition;\n\n  if (!container || !(show || Transition && !exited)) {\n    return null;\n  }\n\n  var dialogProps = _extends({\n    role: role,\n    ref: modal.setDialogRef,\n    // apparently only works on the dialog role element\n    'aria-modal': role === 'dialog' ? true : undefined\n  }, rest, {\n    style: style,\n    className: className,\n    tabIndex: -1\n  });\n\n  var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n    role: 'document'\n  }));\n\n  if (Transition) {\n    dialog = /*#__PURE__*/React.createElement(Transition, {\n      appear: true,\n      unmountOnExit: true,\n      \"in\": !!show,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered\n    }, dialog);\n  }\n\n  var backdropElement = null;\n\n  if (backdrop) {\n    var BackdropTransition = backdropTransition;\n    backdropElement = renderBackdrop({\n      ref: modal.setBackdropRef,\n      onClick: handleBackdropClick\n    });\n\n    if (BackdropTransition) {\n      backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n        appear: true,\n        \"in\": !!show\n      }, backdropElement);\n    }\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: PropTypes.bool,\n\n  /**\n   * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: PropTypes.any,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: PropTypes.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: PropTypes.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js static\n   * renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: PropTypes.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: PropTypes.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   *\n   * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n   */\n  onEscapeKeyDown: PropTypes.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: PropTypes.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: PropTypes.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: PropTypes.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: PropTypes.elementType,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: PropTypes.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: PropTypes.bool,\n\n  /**\n   * Options passed to focus function when `restoreFocus` is set to `true`\n   *\n   * @link  https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n   */\n  restoreFocusOptions: PropTypes.shape({\n    preventScroll: PropTypes.bool\n  }),\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n  Manager: ModalManager\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    return _ModalManager.apply(this, arguments) || this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {\n    var _css;\n\n    var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n    // @ts-ignore\n\n    element.dataset[prop] = actual;\n    css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n  };\n\n  _proto.restore = function restore(prop, element) {\n    var value = element.dataset[prop];\n\n    if (value !== undefined) {\n      var _css2;\n\n      delete element.dataset[prop];\n      css(element, (_css2 = {}, _css2[prop] = value, _css2));\n    }\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = getScrollbarSize();\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this.adjustAndStore('paddingRight', el, size);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this.adjustAndStore('marginRight', el, -size);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this.adjustAndStore('marginRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.restore('paddingRight', el);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.restore('marginRight', el);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.restore('marginRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = /*#__PURE__*/React.createContext({\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      contentClassName = _ref.contentClassName,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"contentClassName\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(bsPrefix + \"-content\", contentClassName)\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = useContext(ModalContext);\n  var handleClick = useEventCallback(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix)\n  }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n    label: closeLabel,\n    onClick: handleClick\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n  Component: DivStyledAsH4\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport warning from 'warning';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      style = _ref.style,\n      dialogClassName = _ref.dialogClassName,\n      contentClassName = _ref.contentClassName,\n      children = _ref.children,\n      Dialog = _ref.dialogAs,\n      ariaLabelledby = _ref['aria-labelledby'],\n      show = _ref.show,\n      animation = _ref.animation,\n      backdrop = _ref.backdrop,\n      keyboard = _ref.keyboard,\n      onEscapeKeyDown = _ref.onEscapeKeyDown,\n      onShow = _ref.onShow,\n      onHide = _ref.onHide,\n      container = _ref.container,\n      autoFocus = _ref.autoFocus,\n      enforceFocus = _ref.enforceFocus,\n      restoreFocus = _ref.restoreFocus,\n      restoreFocusOptions = _ref.restoreFocusOptions,\n      onEntered = _ref.onEntered,\n      onExit = _ref.onExit,\n      onExiting = _ref.onExiting,\n      onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onExited = _ref.onExited,\n      backdropClassName = _ref.backdropClassName,\n      propsManager = _ref.manager,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"contentClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onExited\", \"backdropClassName\", \"manager\"]);\n\n  var _useState = useState({}),\n      modalStyle = _useState[0],\n      setStyle = _useState[1];\n\n  var _useState2 = useState(false),\n      animateStaticModal = _useState2[0],\n      setAnimateStaticModal = _useState2[1];\n\n  var waitingForMouseUpRef = useRef(false);\n  var ignoreBackdropClickRef = useRef(false);\n  var removeStaticModalAnimationRef = useRef(null); // TODO: what's this type\n\n  var _useCallbackRef = useCallbackRef(),\n      modal = _useCallbackRef[0],\n      setModalRef = _useCallbackRef[1];\n\n  var handleHide = useEventCallback(onHide);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  useImperativeHandle(ref, function () {\n    return {\n      get _modal() {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Accessing `_modal` is not supported and will be removed in a future release') : void 0;\n        return modal;\n      }\n\n    };\n  }, [modal]);\n  var modalContext = useMemo(function () {\n    return {\n      onHide: handleHide\n    };\n  }, [handleHide]);\n\n  function getModalManager() {\n    if (propsManager) return propsManager;\n    if (!manager) manager = new BootstrapModalManager();\n    return manager;\n  }\n\n  function updateDialogStyle(node) {\n    if (!canUseDOM) return;\n    var containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n    setStyle({\n      paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n      paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n    });\n  }\n\n  var handleWindowResize = useEventCallback(function () {\n    if (modal) {\n      updateDialogStyle(modal.dialog);\n    }\n  });\n  useWillUnmount(function () {\n    removeEventListener(window, 'resize', handleWindowResize);\n\n    if (removeStaticModalAnimationRef.current) {\n      removeStaticModalAnimationRef.current();\n    }\n  }); // We prevent the modal from closing during a drag by detecting where the\n  // the click originates from. If it starts in the modal and then ends outside\n  // don't close.\n\n  var handleDialogMouseDown = function handleDialogMouseDown() {\n    waitingForMouseUpRef.current = true;\n  };\n\n  var handleMouseUp = function handleMouseUp(e) {\n    if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n      ignoreBackdropClickRef.current = true;\n    }\n\n    waitingForMouseUpRef.current = false;\n  };\n\n  var handleStaticModalAnimation = function handleStaticModalAnimation() {\n    setAnimateStaticModal(true);\n    removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, function () {\n      setAnimateStaticModal(false);\n    });\n  };\n\n  var handleStaticBackdropClick = function handleStaticBackdropClick(e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    handleStaticModalAnimation();\n  };\n\n  var handleClick = function handleClick(e) {\n    if (backdrop === 'static') {\n      handleStaticBackdropClick(e);\n      return;\n    }\n\n    if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n      ignoreBackdropClickRef.current = false;\n      return;\n    }\n\n    onHide();\n  };\n\n  var handleEscapeKeyDown = function handleEscapeKeyDown(e) {\n    if (!keyboard && backdrop === 'static') {\n      // Call preventDefault to stop modal from closing in react-overlays,\n      // then play our animation.\n      e.preventDefault();\n      handleStaticModalAnimation();\n    } else if (keyboard && onEscapeKeyDown) {\n      onEscapeKeyDown(e);\n    }\n  };\n\n  var handleEnter = function handleEnter(node) {\n    if (node) {\n      node.style.display = 'block';\n      updateDialogStyle(node);\n    }\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (onEnter) onEnter.apply(void 0, [node].concat(args));\n  };\n\n  var handleExit = function handleExit(node) {\n    if (removeStaticModalAnimationRef.current) {\n      removeStaticModalAnimationRef.current();\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    if (onExit) onExit.apply(void 0, [node].concat(args));\n  };\n\n  var handleEntering = function handleEntering(node) {\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n\n    if (onEntering) onEntering.apply(void 0, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n    addEventListener(window, 'resize', handleWindowResize);\n  };\n\n  var handleExited = function handleExited(node) {\n    if (node) node.style.display = ''; // RHL removes it sometimes\n\n    for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n      args[_key4 - 1] = arguments[_key4];\n    }\n\n    if (onExited) onExited.apply(void 0, args); // FIXME: This should work even when animation is disabled.\n\n    removeEventListener(window, 'resize', handleWindowResize);\n  };\n\n  var renderBackdrop = useCallback(function (backdropProps) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, backdropProps, {\n      className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n    }));\n  }, [animation, backdropClassName, bsPrefix]);\n\n  var baseModalStyle = _extends({}, style, modalStyle); // Sets `display` always block when `animation` is false\n\n\n  if (!animation) {\n    baseModalStyle.display = 'block';\n  }\n\n  var renderDialog = function renderDialog(dialogProps) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      role: \"dialog\"\n    }, dialogProps, {\n      style: baseModalStyle,\n      className: classNames(className, bsPrefix, animateStaticModal && bsPrefix + \"-static\"),\n      onClick: backdrop ? handleClick : undefined,\n      onMouseUp: handleMouseUp,\n      \"aria-labelledby\": ariaLabelledby\n    }), /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n      onMouseDown: handleDialogMouseDown,\n      className: dialogClassName,\n      contentClassName: contentClassName\n    }), children));\n  };\n\n  return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n    value: modalContext\n  }, /*#__PURE__*/React.createElement(BaseModal, {\n    show: show,\n    ref: setModalRef,\n    backdrop: backdrop,\n    container: container,\n    keyboard: true // Always set true - see handleEscapeKeyDown\n    ,\n    autoFocus: autoFocus,\n    enforceFocus: enforceFocus,\n    restoreFocus: restoreFocus,\n    restoreFocusOptions: restoreFocusOptions,\n    onEscapeKeyDown: handleEscapeKeyDown,\n    onShow: onShow,\n    onHide: onHide,\n    onEnter: handleEnter,\n    onEntering: handleEntering,\n    onEntered: onEntered,\n    onExit: handleExit,\n    onExiting: onExiting,\n    onExited: handleExited,\n    manager: getModalManager(),\n    containerClassName: bsPrefix + \"-open\",\n    transition: animation ? DialogTransition : undefined,\n    backdropTransition: animation ? BackdropTransition : undefined,\n    renderBackdrop: renderBackdrop,\n    renderDialog: renderDialog\n  }));\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nModal.Body = ModalBody;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Footer = ModalFooter;\nModal.Dialog = ModalDialog;\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default Modal;","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","'use strict';\nvar Filter = require('../../util/filter');\n/**\n * An {@link IceBox} stores trickled ICE candidates. Candidates added to the\n * {@link IceBox} via {@link IceBox#update} are compared against previously\n * trickled candidates and only new candidates will be returned (assuming they\n * match the current ICE username fragment set by {@link IceBox#setUfrag}).\n * @property {?string} ufrag\n */\nvar IceBox = /** @class */ (function () {\n    /**\n     * Construct an {@link IceBox}.\n     */\n    function IceBox() {\n        Object.defineProperties(this, {\n            _filter: {\n                value: new Filter({\n                    getKey: function getKey(iceState) {\n                        return iceState.ufrag;\n                    },\n                    isLessThanOrEqualTo: function isLessThanOrEqualTo(a, b) {\n                        return a.revision <= b.revision;\n                    }\n                })\n            },\n            _ufrag: {\n                writable: true,\n                value: null\n            },\n            ufrag: {\n                enumerable: true,\n                get: function () {\n                    return this._ufrag;\n                }\n            }\n        });\n    }\n    /**\n     * Set the ICE username fragment on the {@link IceBox}. This method returns any\n     * ICE candidates associated with the username fragment.\n     * @param {string} ufrag\n     * @returns {Array<RTCIceCandidateInit>}\n     */\n    IceBox.prototype.setUfrag = function (ufrag) {\n        this._ufrag = ufrag;\n        var ice = this._filter.toMap().get(ufrag);\n        return ice ? ice.candidates : [];\n    };\n    /**\n     * Update the {@link IceBox}. This method returns any new ICE candidates\n     * associated with the current username fragment.\n     * @param {object} iceState\n     * @returns {Array<RTCIceCandidateInit>}\n     */\n    IceBox.prototype.update = function (iceState) {\n        // NOTE(mroberts): The Server sometimes does not set the candidates property.\n        iceState.candidates = iceState.candidates || [];\n        var oldIceState = this._filter.toMap().get(iceState.ufrag);\n        var oldCandidates = oldIceState ? oldIceState.candidates : [];\n        return this._filter.update(iceState) && this._ufrag === iceState.ufrag\n            ? iceState.candidates.slice(oldCandidates.length)\n            : [];\n    };\n    return IceBox;\n}());\nmodule.exports = IceBox;\n//# sourceMappingURL=icebox.js.map","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","/** Determines whether a `thing` is an object for the purposes of RJSF. In this case, `thing` is an object if it has\n * the type `object` but is NOT null, an array or a File.\n *\n * @param thing - The thing to check to see whether it is an object\n * @returns - True if it is a non-null, non-array, non-File object\n */\nexport default function isObject(thing) {\n    if (typeof thing !== 'object' || thing === null) {\n        return false;\n    }\n    // lastModified is guaranteed to be a number on a File instance\n    // as per https://w3c.github.io/FileAPI/#dfn-lastModified\n    if (typeof thing.lastModified === 'number' && typeof File !== 'undefined' && thing instanceof File) {\n        return false;\n    }\n    // getMonth is guaranteed to be a method on a Date instance\n    // as per https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getmonth\n    if (typeof thing.getMonth === 'function' && typeof Date !== 'undefined' && thing instanceof Date) {\n        return false;\n    }\n    return !Array.isArray(thing);\n}\n//# sourceMappingURL=isObject.js.map","import isObject from './isObject.js';\n/** Checks the schema to see if it is allowing additional items, by verifying that `schema.additionalItems` is an\n * object. The user is warned in the console if `schema.additionalItems` has the value `true`.\n *\n * @param schema - The schema object to check\n * @returns - True if additional items is allowed, otherwise false\n */\nexport default function allowAdditionalItems(schema) {\n    if (schema.additionalItems === true) {\n        console.warn('additionalItems=true is currently not supported');\n    }\n    return isObject(schema.additionalItems);\n}\n//# sourceMappingURL=allowAdditionalItems.js.map","/** Attempts to convert the string into a number. If an empty string is provided, then `undefined` is returned. If a\n * `null` is provided, it is returned. If the string ends in a `.` then the string is returned because the user may be\n * in the middle of typing a float number. If a number ends in a pattern like `.0`, `.20`, `.030`, string is returned\n * because the user may be typing number that will end in a non-zero digit. Otherwise, the string is wrapped by\n * `Number()` and if that result is not `NaN`, that number will be returned, otherwise the string `value` will be.\n *\n * @param value - The string or null value to convert to a number\n * @returns - The `value` converted to a number when appropriate, otherwise the `value`\n */\nexport default function asNumber(value) {\n    if (value === '') {\n        return undefined;\n    }\n    if (value === null) {\n        return null;\n    }\n    if (/\\.$/.test(value)) {\n        // '3.' can't really be considered a number even if it parses in js. The\n        // user is most likely entering a float.\n        return value;\n    }\n    if (/\\.0$/.test(value)) {\n        // we need to return this as a string here, to allow for input like 3.07\n        return value;\n    }\n    if (/\\.\\d*0$/.test(value)) {\n        // It's a number, that's cool - but we need it as a string so it doesn't screw\n        // with the user when entering dollar amounts or other values (such as those with\n        // specific precision or number of significant digits)\n        return value;\n    }\n    const n = Number(value);\n    const valid = typeof n === 'number' && !Number.isNaN(n);\n    return valid ? n : value;\n}\n//# sourceMappingURL=asNumber.js.map","/** Below are the list of all the keys into various elements of a RJSFSchema or UiSchema that are used by the various\n * utility functions. In addition to those keys, there are the special `ADDITIONAL_PROPERTY_FLAG` and\n * `RJSF_ADDITIONAL_PROPERTIES_FLAG` flags that is added to a schema under certain conditions by the `retrieveSchema()`\n * utility.\n */\nexport const ADDITIONAL_PROPERTY_FLAG = '__additional_property';\nexport const ADDITIONAL_PROPERTIES_KEY = 'additionalProperties';\nexport const ALL_OF_KEY = 'allOf';\nexport const ANY_OF_KEY = 'anyOf';\nexport const CONST_KEY = 'const';\nexport const DEFAULT_KEY = 'default';\nexport const DEFINITIONS_KEY = 'definitions';\nexport const DEPENDENCIES_KEY = 'dependencies';\nexport const ENUM_KEY = 'enum';\nexport const ERRORS_KEY = '__errors';\nexport const ID_KEY = '$id';\nexport const IF_KEY = 'if';\nexport const ITEMS_KEY = 'items';\nexport const JUNK_OPTION_ID = '_$junk_option_schema_id$_';\nexport const NAME_KEY = '$name';\nexport const ONE_OF_KEY = 'oneOf';\nexport const PROPERTIES_KEY = 'properties';\nexport const REQUIRED_KEY = 'required';\nexport const SUBMIT_BTN_OPTIONS_KEY = 'submitButtonOptions';\nexport const REF_KEY = '$ref';\n/**\n * @deprecated Replace with correctly spelled constant `RJSF_ADDITIONAL_PROPERTIES_FLAG`\n */\nexport const RJSF_ADDITONAL_PROPERTIES_FLAG = '__rjsf_additionalProperties';\nexport const RJSF_ADDITIONAL_PROPERTIES_FLAG = '__rjsf_additionalProperties';\nexport const ROOT_SCHEMA_PREFIX = '__rjsf_rootSchema';\nexport const UI_FIELD_KEY = 'ui:field';\nexport const UI_WIDGET_KEY = 'ui:widget';\nexport const UI_OPTIONS_KEY = 'ui:options';\nexport const UI_GLOBAL_OPTIONS_KEY = 'ui:globalOptions';\n//# sourceMappingURL=constants.js.map","import { UI_OPTIONS_KEY, UI_WIDGET_KEY } from './constants.js';\nimport isObject from './isObject.js';\n/** Get all passed options from ui:options, and ui:<optionName>, returning them in an object with the `ui:`\n * stripped off. Any `globalOptions` will always be returned, unless they are overridden by options in the `uiSchema`.\n *\n * @param [uiSchema={}] - The UI Schema from which to get any `ui:xxx` options\n * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options\n * @returns - An object containing all the `ui:xxx` options with the `ui:` stripped off along with all `globalOptions`\n */\nexport default function getUiOptions(uiSchema = {}, globalOptions = {}) {\n    return Object.keys(uiSchema)\n        .filter((key) => key.indexOf('ui:') === 0)\n        .reduce((options, key) => {\n        const value = uiSchema[key];\n        if (key === UI_WIDGET_KEY && isObject(value)) {\n            console.error('Setting options via ui:widget object is no longer supported, use ui:options instead');\n            return options;\n        }\n        if (key === UI_OPTIONS_KEY && isObject(value)) {\n            return { ...options, ...value };\n        }\n        return { ...options, [key.substring(3)]: value };\n    }, { ...globalOptions });\n}\n//# sourceMappingURL=getUiOptions.js.map","import getUiOptions from './getUiOptions.js';\n/** Checks whether the field described by `schema`, having the `uiSchema` and `formData` supports expanding. The UI for\n * the field can expand if it has additional properties, is not forced as non-expandable by the `uiSchema` and the\n * `formData` object doesn't already have `schema.maxProperties` elements.\n *\n * @param schema - The schema for the field that is being checked\n * @param [uiSchema={}] - The uiSchema for the field\n * @param [formData] - The formData for the field\n * @returns - True if the schema element has additionalProperties, is expandable, and not at the maxProperties limit\n */\nexport default function canExpand(schema, uiSchema = {}, formData) {\n    if (!schema.additionalProperties) {\n        return false;\n    }\n    const { expandable = true } = getUiOptions(uiSchema);\n    if (expandable === false) {\n        return expandable;\n    }\n    // if ui:options.expandable was not explicitly set to false, we can add\n    // another property if we have not exceeded maxProperties yet\n    if (schema.maxProperties !== undefined && formData) {\n        return Object.keys(formData).length < schema.maxProperties;\n    }\n    return true;\n}\n//# sourceMappingURL=canExpand.js.map","import isPlainObject from 'lodash-es/isPlainObject.js';\nimport { ERRORS_KEY } from './constants.js';\n/** Given a `formData` object, recursively creates a `FormValidation` error handling structure around it\n *\n * @param formData - The form data around which the error handler is created\n * @returns - A `FormValidation` object based on the `formData` structure\n */\nexport default function createErrorHandler(formData) {\n    const handler = {\n        // We store the list of errors for this node in a property named __errors\n        // to avoid name collision with a possible sub schema field named\n        // 'errors' (see `utils.toErrorSchema`).\n        [ERRORS_KEY]: [],\n        addError(message) {\n            this[ERRORS_KEY].push(message);\n        },\n    };\n    if (Array.isArray(formData)) {\n        return formData.reduce((acc, value, key) => {\n            return { ...acc, [key]: createErrorHandler(value) };\n        }, handler);\n    }\n    if (isPlainObject(formData)) {\n        const formObject = formData;\n        return Object.keys(formObject).reduce((acc, key) => {\n            return { ...acc, [key]: createErrorHandler(formObject[key]) };\n        }, handler);\n    }\n    return handler;\n}\n//# sourceMappingURL=createErrorHandler.js.map","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n *   return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n *   if (isGreeting(objValue) && isGreeting(othValue)) {\n *     return true;\n *   }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  var result = customizer ? customizer(value, other) : undefined;\n  return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n","import isEqualWith from 'lodash-es/isEqualWith.js';\n/** Implements a deep equals using the `lodash.isEqualWith` function, that provides a customized comparator that\n * assumes all functions are equivalent.\n *\n * @param a - The first element to compare\n * @param b - The second element to compare\n * @returns - True if the `a` and `b` are deeply equal, false otherwise\n */\nexport default function deepEquals(a, b) {\n    return isEqualWith(a, b, (obj, other) => {\n        if (typeof obj === 'function' && typeof other === 'function') {\n            // Assume all functions are equivalent\n            // see https://github.com/rjsf-team/react-jsonschema-form/issues/255\n            return true;\n        }\n        return undefined; // fallback to default isEquals behavior\n    });\n}\n//# sourceMappingURL=deepEquals.js.map","import jsonpointer from 'jsonpointer';\nimport omit from 'lodash-es/omit.js';\nimport { REF_KEY } from './constants.js';\n/** Splits out the value at the `key` in `object` from the `object`, returning an array that contains in the first\n * location, the `object` minus the `key: value` and in the second location the `value`.\n *\n * @param key - The key from the object to extract\n * @param object - The object from which to extract the element\n * @returns - An array with the first value being the object minus the `key` element and the second element being the\n *      value from `object[key]`\n */\nexport function splitKeyElementFromObject(key, object) {\n    const value = object[key];\n    const remaining = omit(object, [key]);\n    return [remaining, value];\n}\n/** Given the name of a `$ref` from within a schema, using the `rootSchema`, recursively look up and return the\n * sub-schema using the path provided by that reference. If `#` is not the first character of the reference, the path\n * does not exist in the schema, or the reference resolves circularly back to itself, then throw an Error.\n * Otherwise return the sub-schema. Also deals with nested `$ref`s in the sub-schema.\n *\n * @param $ref - The ref string for which the schema definition is desired\n * @param [rootSchema={}] - The root schema in which to search for the definition\n * @param recurseList - List of $refs already resolved to prevent recursion\n * @returns - The sub-schema within the `rootSchema` which matches the `$ref` if it exists\n * @throws - Error indicating that no schema for that reference could be resolved\n */\nexport function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = []) {\n    const ref = $ref || '';\n    let decodedRef;\n    if (ref.startsWith('#')) {\n        // Decode URI fragment representation.\n        decodedRef = decodeURIComponent(ref.substring(1));\n    }\n    else {\n        throw new Error(`Could not find a definition for ${$ref}.`);\n    }\n    const current = jsonpointer.get(rootSchema, decodedRef);\n    if (current === undefined) {\n        throw new Error(`Could not find a definition for ${$ref}.`);\n    }\n    const nextRef = current[REF_KEY];\n    if (nextRef) {\n        // Check for circular references.\n        if (recurseList.includes(nextRef)) {\n            if (recurseList.length === 1) {\n                throw new Error(`Definition for ${$ref} is a circular reference`);\n            }\n            const [firstRef, ...restRefs] = recurseList;\n            const circularPath = [...restRefs, ref, firstRef].join(' -> ');\n            throw new Error(`Definition for ${firstRef} contains a circular reference through ${circularPath}`);\n        }\n        const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);\n        const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref]);\n        if (Object.keys(remaining).length > 0) {\n            return { ...remaining, ...subSchema };\n        }\n        return subSchema;\n    }\n    return current;\n}\n/** Given the name of a `$ref` from within a schema, using the `rootSchema`, look up and return the sub-schema using the\n * path provided by that reference. If `#` is not the first character of the reference, the path does not exist in\n * the schema, or the reference resolves circularly back to itself, then throw an Error. Otherwise return the\n * sub-schema. Also deals with nested `$ref`s in the sub-schema.\n *\n * @param $ref - The ref string for which the schema definition is desired\n * @param [rootSchema={}] - The root schema in which to search for the definition\n * @returns - The sub-schema within the `rootSchema` which matches the `$ref` if it exists\n * @throws - Error indicating that no schema for that reference could be resolved\n */\nexport default function findSchemaDefinition($ref, rootSchema = {}) {\n    const recurseList = [];\n    return findSchemaDefinitionRecursive($ref, rootSchema, recurseList);\n}\n//# sourceMappingURL=findSchemaDefinition.js.map","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n *  `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n  eachFunc(collection, function(value, index, collection) {\n    accumulator = initAccum\n      ? (initAccum = false, value)\n      : iteratee(accumulator, value, index, collection);\n  });\n  return accumulator;\n}\n\nexport default baseReduce;\n","import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n *   return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n *   return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseTimes from './_baseTimes.js';\nimport castFunction from './_castFunction.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n *  _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\nfunction times(n, iteratee) {\n  n = toInteger(n);\n  if (n < 1 || n > MAX_SAFE_INTEGER) {\n    return [];\n  }\n  var index = MAX_ARRAY_LENGTH,\n      length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n  iteratee = castFunction(iteratee);\n  n -= MAX_ARRAY_LENGTH;\n\n  var result = baseTimes(length, iteratee);\n  while (++index < n) {\n    iteratee(index);\n  }\n  return result;\n}\n\nexport default times;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import get from 'lodash-es/get.js';\nimport { PROPERTIES_KEY } from './constants.js';\n/** Compares the value of `discriminatorField` within `formData` against the value of `discriminatorField` within schema for each `option`.\n * Returns index of first `option` whose discriminator matches formData. Returns `undefined` if there is no match.\n * This function does not work with discriminators of `\"type\": \"object\"` and `\"type\": \"array\"`\n *\n * @param formData - The current formData, if any, used to figure out a match\n * @param options - The list of options to find a matching options from\n * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n *          determine which option is selected\n * @returns - The index of the matched option or undefined if there is no match\n */\nexport default function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {\n    var _a;\n    if (formData && discriminatorField) {\n        const value = get(formData, discriminatorField);\n        if (value === undefined) {\n            return;\n        }\n        for (let i = 0; i < options.length; i++) {\n            const option = options[i];\n            const discriminator = get(option, [PROPERTIES_KEY, discriminatorField], {});\n            if (discriminator.type === 'object' || discriminator.type === 'array') {\n                continue;\n            }\n            if (discriminator.const === value) {\n                return i;\n            }\n            if ((_a = discriminator.enum) === null || _a === void 0 ? void 0 : _a.includes(value)) {\n                return i;\n            }\n        }\n    }\n    return;\n}\n//# sourceMappingURL=getOptionMatchingSimpleDiscriminator.js.map","import get from 'lodash-es/get.js';\nimport has from 'lodash-es/has.js';\nimport isNumber from 'lodash-es/isNumber.js';\nimport { PROPERTIES_KEY } from '../constants.js';\nimport getOptionMatchingSimpleDiscriminator from '../getOptionMatchingSimpleDiscriminator.js';\n/** Given the `formData` and list of `options`, attempts to find the index of the option that best matches the data.\n * Deprecated, use `getFirstMatchingOption()` instead.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param formData - The current formData, if any, used to figure out a match\n * @param options - The list of options to find a matching options from\n * @param rootSchema - The root schema, used to primarily to look up `$ref`s\n * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n *          determine which option is selected\n * @returns - The index of the matched option or 0 if none is available\n * @deprecated\n */\nexport default function getMatchingOption(validator, formData, options, rootSchema, discriminatorField) {\n    // For performance, skip validating subschemas if formData is undefined. We just\n    // want to get the first option in that case.\n    if (formData === undefined) {\n        return 0;\n    }\n    const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);\n    if (isNumber(simpleDiscriminatorMatch)) {\n        return simpleDiscriminatorMatch;\n    }\n    for (let i = 0; i < options.length; i++) {\n        const option = options[i];\n        // If we have a discriminator field, then we will use this to make the determination\n        if (discriminatorField && has(option, [PROPERTIES_KEY, discriminatorField])) {\n            const value = get(formData, discriminatorField);\n            const discriminator = get(option, [PROPERTIES_KEY, discriminatorField], {});\n            if (validator.isValid(discriminator, value, rootSchema)) {\n                return i;\n            }\n        }\n        else if (option[PROPERTIES_KEY]) {\n            // If the schema describes an object then we need to add slightly more\n            // strict matching to the schema, because unless the schema uses the\n            // \"requires\" keyword, an object will match the schema as long as it\n            // doesn't have matching keys with a conflicting type. To do this we use an\n            // \"anyOf\" with an array of requires. This augmentation expresses that the\n            // schema should match if any of the keys in the schema are present on the\n            // object and pass validation.\n            //\n            // Create an \"anyOf\" schema that requires at least one of the keys in the\n            // \"properties\" object\n            const requiresAnyOf = {\n                anyOf: Object.keys(option[PROPERTIES_KEY]).map((key) => ({\n                    required: [key],\n                })),\n            };\n            let augmentedSchema;\n            // If the \"anyOf\" keyword already exists, wrap the augmentation in an \"allOf\"\n            if (option.anyOf) {\n                // Create a shallow clone of the option\n                const { ...shallowClone } = option;\n                if (!shallowClone.allOf) {\n                    shallowClone.allOf = [];\n                }\n                else {\n                    // If \"allOf\" already exists, shallow clone the array\n                    shallowClone.allOf = shallowClone.allOf.slice();\n                }\n                shallowClone.allOf.push(requiresAnyOf);\n                augmentedSchema = shallowClone;\n            }\n            else {\n                augmentedSchema = Object.assign({}, option, requiresAnyOf);\n            }\n            // Remove the \"required\" field as it's likely that not all fields have\n            // been filled in yet, which will mean that the schema is not valid\n            delete augmentedSchema.required;\n            if (validator.isValid(augmentedSchema, formData, rootSchema)) {\n                return i;\n            }\n        }\n        else if (validator.isValid(option, formData, rootSchema)) {\n            return i;\n        }\n    }\n    return 0;\n}\n//# sourceMappingURL=getMatchingOption.js.map","import getMatchingOption from './getMatchingOption.js';\n/** Given the `formData` and list of `options`, attempts to find the index of the first option that matches the data.\n * Always returns the first option if there is nothing that matches.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param formData - The current formData, if any, used to figure out a match\n * @param options - The list of options to find a matching options from\n * @param rootSchema - The root schema, used to primarily to look up `$ref`s\n * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n *          determine which option is selected\n * @returns - The index of the first matched option or 0 if none is available\n */\nexport default function getFirstMatchingOption(validator, formData, options, rootSchema, discriminatorField) {\n    return getMatchingOption(validator, formData, options, rootSchema, discriminatorField);\n}\n//# sourceMappingURL=getFirstMatchingOption.js.map","import arrayEach from './_arrayEach.js';\nimport baseCreate from './_baseCreate.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\nimport getPrototype from './_getPrototype.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isTypedArray from './isTypedArray.js';\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n *   result.push(n *= n);\n *   return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n *   (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n  var isArr = isArray(object),\n      isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n  iteratee = baseIteratee(iteratee, 4);\n  if (accumulator == null) {\n    var Ctor = object && object.constructor;\n    if (isArrLike) {\n      accumulator = isArr ? new Ctor : [];\n    }\n    else if (isObject(object)) {\n      accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n    }\n    else {\n      accumulator = {};\n    }\n  }\n  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n    return iteratee(accumulator, value, index, object);\n  });\n  return accumulator;\n}\n\nexport default transform;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import get from 'lodash-es/get.js';\nimport isString from 'lodash-es/isString.js';\n/** Returns the `discriminator.propertyName` when defined in the `schema` if it is a string. A warning is generated when\n * it is not a string. Returns `undefined` when a valid discriminator is not present.\n *\n * @param schema - The schema from which the discriminator is potentially obtained\n * @returns - The `discriminator.propertyName` if it exists in the schema, otherwise `undefined`\n */\nexport default function getDiscriminatorFieldFromSchema(schema) {\n    let discriminator;\n    const maybeString = get(schema, 'discriminator.propertyName', undefined);\n    if (isString(maybeString)) {\n        discriminator = maybeString;\n    }\n    else if (maybeString !== undefined) {\n        console.warn(`Expecting discriminator to be a string, got \"${typeof maybeString}\" instead`);\n    }\n    return discriminator;\n}\n//# sourceMappingURL=getDiscriminatorFieldFromSchema.js.map","/** Given a specific `value` attempts to guess the type of a schema element. In the case where we have to implicitly\n *  create a schema, it is useful to know what type to use based on the data we are defining.\n *\n * @param value - The value from which to guess the type\n * @returns - The best guess for the object type\n */\nexport default function guessType(value) {\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    if (typeof value === 'string') {\n        return 'string';\n    }\n    if (value == null) {\n        return 'null';\n    }\n    if (typeof value === 'boolean') {\n        return 'boolean';\n    }\n    if (!isNaN(value)) {\n        return 'number';\n    }\n    if (typeof value === 'object') {\n        return 'object';\n    }\n    // Default to string if we can't figure it out\n    return 'string';\n}\n//# sourceMappingURL=guessType.js.map","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import guessType from './guessType.js';\n/** Gets the type of a given `schema`. If the type is not explicitly defined, then an attempt is made to infer it from\n * other elements of the schema as follows:\n * - schema.const: Returns the `guessType()` of that value\n * - schema.enum: Returns `string`\n * - schema.properties: Returns `object`\n * - schema.additionalProperties: Returns `object`\n * - type is an array with a length of 2 and one type is 'null': Returns the other type\n *\n * @param schema - The schema for which to get the type\n * @returns - The type of the schema\n */\nexport default function getSchemaType(schema) {\n    let { type } = schema;\n    if (!type && schema.const) {\n        return guessType(schema.const);\n    }\n    if (!type && schema.enum) {\n        return 'string';\n    }\n    if (!type && (schema.properties || schema.additionalProperties)) {\n        return 'object';\n    }\n    if (Array.isArray(type)) {\n        if (type.length === 2 && type.includes('null')) {\n            type = type.find((type) => type !== 'null');\n        }\n        else {\n            type = type[0];\n        }\n    }\n    return type;\n}\n//# sourceMappingURL=getSchemaType.js.map","import union from 'lodash-es/union.js';\nimport { REQUIRED_KEY } from './constants.js';\nimport getSchemaType from './getSchemaType.js';\nimport isObject from './isObject.js';\n/** Recursively merge deeply nested schemas. The difference between `mergeSchemas` and `mergeObjects` is that\n * `mergeSchemas` only concats arrays for values under the 'required' keyword, and when it does, it doesn't include\n * duplicate values.\n *\n * @param obj1 - The first schema object to merge\n * @param obj2 - The second schema object to merge\n * @returns - The merged schema object\n */\nexport default function mergeSchemas(obj1, obj2) {\n    const acc = Object.assign({}, obj1); // Prevent mutation of source object.\n    return Object.keys(obj2).reduce((acc, key) => {\n        const left = obj1 ? obj1[key] : {}, right = obj2[key];\n        if (obj1 && key in obj1 && isObject(right)) {\n            acc[key] = mergeSchemas(left, right);\n        }\n        else if (obj1 &&\n            obj2 &&\n            (getSchemaType(obj1) === 'object' || getSchemaType(obj2) === 'object') &&\n            key === REQUIRED_KEY &&\n            Array.isArray(left) &&\n            Array.isArray(right)) {\n            // Don't include duplicate values when merging 'required' fields.\n            acc[key] = union(left, right);\n        }\n        else {\n            acc[key] = right;\n        }\n        return acc;\n    }, acc);\n}\n//# sourceMappingURL=mergeSchemas.js.map","import get from 'lodash-es/get.js';\nimport set from 'lodash-es/set.js';\nimport times from 'lodash-es/times.js';\nimport transform from 'lodash-es/transform.js';\nimport merge from 'lodash-es/merge.js';\nimport flattenDeep from 'lodash-es/flattenDeep.js';\nimport uniq from 'lodash-es/uniq.js';\nimport mergeAllOf from 'json-schema-merge-allof';\nimport { ADDITIONAL_PROPERTIES_KEY, ADDITIONAL_PROPERTY_FLAG, ALL_OF_KEY, ANY_OF_KEY, DEPENDENCIES_KEY, IF_KEY, ITEMS_KEY, ONE_OF_KEY, PROPERTIES_KEY, REF_KEY, } from '../constants.js';\nimport findSchemaDefinition, { splitKeyElementFromObject } from '../findSchemaDefinition.js';\nimport getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';\nimport guessType from '../guessType.js';\nimport isObject from '../isObject.js';\nimport mergeSchemas from '../mergeSchemas.js';\nimport getFirstMatchingOption from './getFirstMatchingOption.js';\nimport deepEquals from '../deepEquals.js';\n/** Retrieves an expanded schema that has had all of its conditions, additional properties, references and dependencies\n * resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData` that is used to do the\n * potentially recursive resolution.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which retrieving a schema is desired\n * @param [rootSchema={}] - The root schema that will be forwarded to all the APIs\n * @param [rawFormData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The schema having its conditions, additional properties, references and dependencies resolved\n */\nexport default function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {\n    return retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, undefined, undefined, experimental_customMergeAllOf)[0];\n}\n/** Resolves a conditional block (if/else/then) by removing the condition and merging the appropriate conditional branch\n * with the rest of the schema. If `expandAllBranches` is true, then the `retrieveSchemaInteral()` results for both\n * conditions will be returned.\n *\n * @param validator - An implementation of the `ValidatorType` interface that is used to detect valid schema conditions\n * @param schema - The schema for which resolving a condition is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and\n *          dependencies as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded\n */\nexport function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;\n    const conditionValue = validator.isValid(expression, formData || {}, rootSchema);\n    let resolvedSchemas = [resolvedSchemaLessConditional];\n    let schemas = [];\n    if (expandAllBranches) {\n        if (then && typeof then !== 'boolean') {\n            schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));\n        }\n        if (otherwise && typeof otherwise !== 'boolean') {\n            schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));\n        }\n    }\n    else {\n        const conditionalSchema = conditionValue ? then : otherwise;\n        if (conditionalSchema && typeof conditionalSchema !== 'boolean') {\n            schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));\n        }\n    }\n    if (schemas.length) {\n        resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));\n    }\n    return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));\n}\n/** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The\n * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.\n * From those lists, build a matrix for each `xxxOf` where there is more than one schema for a row in the list of lists.\n *\n * For example:\n * - If there are three xxxOf rows (A, B, C) and they have been resolved such that there is only one A, two B and three\n *   C schemas then:\n *   - The permutation for the first row is `[[A]]`\n *   - The permutations for the second row are `[[A,B1], [A,B2]]`\n *   - The permutations for the third row are `[[A,B1,C1], [A,B1,C2], [A,B1,C3], [A,B2,C1], [A,B2,C2], [A,B2,C3]]`\n *\n * @param listOfLists - The list of lists of elements that represent the allOf, anyOf or oneOf resolved values in order\n * @returns - The list of all permutations of schemas for a set of `xxxOf`s\n */\nexport function getAllPermutationsOfXxxOf(listOfLists) {\n    const allPermutations = listOfLists.reduce((permutations, list) => {\n        // When there are more than one set of schemas for a row, duplicate the set of permutations and add in the values\n        if (list.length > 1) {\n            return list.flatMap((element) => times(permutations.length, (i) => [...permutations[i]].concat(element)));\n        }\n        // Otherwise just push in the single value into the current set of permutations\n        permutations.forEach((permutation) => permutation.push(list[0]));\n        return permutations;\n    }, [[]] // Start with an empty list\n    );\n    return allPermutations;\n}\n/** Resolves references and dependencies within a schema and its 'allOf' children. Passes the `expandAllBranches` flag\n * down to the `retrieveSchemaInternal()`, `resolveReference()` and `resolveDependencies()` helper calls. If\n * `expandAllBranches` is true, then all possible dependencies and/or allOf branches are returned.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which resolving a schema is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The list of schemas having its references, dependencies and allOf schemas resolved\n */\nexport function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    const updatedSchemas = resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData);\n    if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {\n        // return the updatedSchemas array if it has either multiple schemas within it\n        // OR the first schema is not the same as the original schema\n        return updatedSchemas;\n    }\n    if (DEPENDENCIES_KEY in schema) {\n        const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData);\n        return resolvedSchemas.flatMap((s) => {\n            return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);\n        });\n    }\n    if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {\n        const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf));\n        const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);\n        return allPermutations.map((permutation) => ({\n            ...schema,\n            allOf: permutation,\n        }));\n    }\n    // No $ref or dependencies or allOf attribute was found, returning the original schema.\n    return [schema];\n}\n/** Resolves all references within a schema and then returns the `retrieveSchemaInternal()` if the resolved schema is\n * actually different than the original. Passes the `expandAllBranches` flag down to the `retrieveSchemaInternal()`\n * helper call.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which resolving a reference is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The list schemas retrieved after having all references resolved\n */\nexport function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);\n    if (updatedSchema !== schema) {\n        // Only call this if the schema was actually changed by the `resolveAllReferences()` function\n        return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);\n    }\n    return [schema];\n}\n/** Resolves all references within the schema itself as well as any of its properties and array items.\n *\n * @param schema - The schema for which resolving all references is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param recurseList - List of $refs already resolved to prevent recursion\n * @returns - given schema will all references resolved or the original schema if no internal `$refs` were resolved\n */\nexport function resolveAllReferences(schema, rootSchema, recurseList) {\n    if (!isObject(schema)) {\n        return schema;\n    }\n    let resolvedSchema = schema;\n    // resolve top level ref\n    if (REF_KEY in resolvedSchema) {\n        const { $ref, ...localSchema } = resolvedSchema;\n        // Check for a recursive reference and stop the loop\n        if (recurseList.includes($ref)) {\n            return resolvedSchema;\n        }\n        recurseList.push($ref);\n        // Retrieve the referenced schema definition.\n        const refSchema = findSchemaDefinition($ref, rootSchema);\n        resolvedSchema = { ...refSchema, ...localSchema };\n    }\n    if (PROPERTIES_KEY in resolvedSchema) {\n        const childrenLists = [];\n        const updatedProps = transform(resolvedSchema[PROPERTIES_KEY], (result, value, key) => {\n            const childList = [...recurseList];\n            result[key] = resolveAllReferences(value, rootSchema, childList);\n            childrenLists.push(childList);\n        }, {});\n        merge(recurseList, uniq(flattenDeep(childrenLists)));\n        resolvedSchema = { ...resolvedSchema, [PROPERTIES_KEY]: updatedProps };\n    }\n    if (ITEMS_KEY in resolvedSchema &&\n        !Array.isArray(resolvedSchema.items) &&\n        typeof resolvedSchema.items !== 'boolean') {\n        resolvedSchema = {\n            ...resolvedSchema,\n            items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList),\n        };\n    }\n    return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;\n}\n/** Creates new 'properties' items for each key in the `formData`\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param theSchema - The schema for which the existing additional properties is desired\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s * @param validator\n * @param [aFormData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The updated schema with additional properties stubbed\n */\nexport function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {\n    // Clone the schema so that we don't ruin the consumer's original\n    const schema = {\n        ...theSchema,\n        properties: { ...theSchema.properties },\n    };\n    // make sure formData is an object\n    const formData = aFormData && isObject(aFormData) ? aFormData : {};\n    Object.keys(formData).forEach((key) => {\n        if (key in schema.properties) {\n            // No need to stub, our schema already has the property\n            return;\n        }\n        let additionalProperties = {};\n        if (typeof schema.additionalProperties !== 'boolean') {\n            if (REF_KEY in schema.additionalProperties) {\n                additionalProperties = retrieveSchema(validator, { $ref: get(schema.additionalProperties, [REF_KEY]) }, rootSchema, formData, experimental_customMergeAllOf);\n            }\n            else if ('type' in schema.additionalProperties) {\n                additionalProperties = { ...schema.additionalProperties };\n            }\n            else if (ANY_OF_KEY in schema.additionalProperties || ONE_OF_KEY in schema.additionalProperties) {\n                additionalProperties = {\n                    type: 'object',\n                    ...schema.additionalProperties,\n                };\n            }\n            else {\n                additionalProperties = { type: guessType(get(formData, [key])) };\n            }\n        }\n        else {\n            additionalProperties = { type: guessType(get(formData, [key])) };\n        }\n        // The type of our new key should match the additionalProperties value;\n        schema.properties[key] = additionalProperties;\n        // Set our additional property flag so we know it was dynamically added\n        set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);\n    });\n    return schema;\n}\n/** Internal handler that retrieves an expanded schema that has had all of its conditions, additional properties,\n * references and dependencies resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData`\n * that is used to do the potentially recursive resolution. If `expandAllBranches` is true, then all possible branches\n * of the schema and its references, conditions and dependencies are returned.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which retrieving a schema is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param [rawFormData] - The current formData, if any, to assist retrieving a schema\n * @param [expandAllBranches=false] - Flag, if true, will return all possible branches of conditions, any/oneOf and\n *          dependencies as a list of schemas\n * @param [recurseList=[]] - The optional, list of recursive references already processed\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies\n *          resolved. Multiple schemas may be returned if `expandAllBranches` is true.\n */\nexport function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {\n    if (!isObject(schema)) {\n        return [{}];\n    }\n    const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf);\n    return resolvedSchemas.flatMap((s) => {\n        var _a;\n        let resolvedSchema = s;\n        if (IF_KEY in resolvedSchema) {\n            return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData, experimental_customMergeAllOf);\n        }\n        if (ALL_OF_KEY in resolvedSchema) {\n            // resolve allOf schemas\n            if (expandAllBranches) {\n                const { allOf, ...restOfSchema } = resolvedSchema;\n                return [...allOf, restOfSchema];\n            }\n            try {\n                const withContainsSchemas = [];\n                const withoutContainsSchemas = [];\n                (_a = resolvedSchema.allOf) === null || _a === void 0 ? void 0 : _a.forEach((s) => {\n                    if (typeof s === 'object' && s.contains) {\n                        withContainsSchemas.push(s);\n                    }\n                    else {\n                        withoutContainsSchemas.push(s);\n                    }\n                });\n                if (withContainsSchemas.length) {\n                    resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };\n                }\n                resolvedSchema = experimental_customMergeAllOf\n                    ? experimental_customMergeAllOf(resolvedSchema)\n                    : mergeAllOf(resolvedSchema, {\n                        deep: false,\n                    });\n                if (withContainsSchemas.length) {\n                    resolvedSchema.allOf = withContainsSchemas;\n                }\n            }\n            catch (e) {\n                console.warn('could not merge subschemas in allOf:\\n', e);\n                const { allOf, ...resolvedSchemaWithoutAllOf } = resolvedSchema;\n                return resolvedSchemaWithoutAllOf;\n            }\n        }\n        const hasAdditionalProperties = ADDITIONAL_PROPERTIES_KEY in resolvedSchema && resolvedSchema.additionalProperties !== false;\n        if (hasAdditionalProperties) {\n            return stubExistingAdditionalProperties(validator, resolvedSchema, rootSchema, rawFormData, experimental_customMergeAllOf);\n        }\n        return resolvedSchema;\n    });\n}\n/** Resolves an `anyOf` or `oneOf` within a schema (if present) to the list of schemas returned from\n * `retrieveSchemaInternal()` for the best matching option. If `expandAllBranches` is true, then a list of schemas for ALL\n * options are retrieved and returned.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which retrieving a schema is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param [rawFormData] - The current formData, if any, to assist retrieving a schema, defaults to an empty object\n * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true\n */\nexport function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranches, rawFormData) {\n    let anyOrOneOf;\n    const { oneOf, anyOf, ...remaining } = schema;\n    if (Array.isArray(oneOf)) {\n        anyOrOneOf = oneOf;\n    }\n    else if (Array.isArray(anyOf)) {\n        anyOrOneOf = anyOf;\n    }\n    if (anyOrOneOf) {\n        // Ensure that during expand all branches we pass an object rather than undefined so that all options are interrogated\n        const formData = rawFormData === undefined && expandAllBranches ? {} : rawFormData;\n        const discriminator = getDiscriminatorFieldFromSchema(schema);\n        anyOrOneOf = anyOrOneOf.map((s) => {\n            // Due to anyOf/oneOf possibly using the same $ref we always pass a fresh recurse list array so that each option\n            // can resolve recursive references independently\n            return resolveAllReferences(s, rootSchema, []);\n        });\n        // Call this to trigger the set of isValid() calls that the schema parser will need\n        const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);\n        if (expandAllBranches) {\n            return anyOrOneOf.map((item) => mergeSchemas(remaining, item));\n        }\n        schema = mergeSchemas(remaining, anyOrOneOf[option]);\n    }\n    return [schema];\n}\n/** Resolves dependencies within a schema and its 'anyOf/oneOf' children. Passes the `expandAllBranches` flag down to\n * the `resolveAnyOrOneOfSchema()` and `processDependencies()` helper calls.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which resolving a dependency is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The list of schemas with their dependencies resolved\n */\nexport function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    // Drop the dependencies from the source schema.\n    const { dependencies, ...remainingSchema } = schema;\n    const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, formData);\n    return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));\n}\n/** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the\n * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param dependencies - The set of dependencies that needs to be processed\n * @param resolvedSchema - The schema for which processing dependencies is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The schema with the `dependencies` resolved into it\n */\nexport function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    let schemas = [resolvedSchema];\n    // Process dependencies updating the local schema properties as appropriate.\n    for (const dependencyKey in dependencies) {\n        // Skip this dependency if its trigger property is not present.\n        if (!expandAllBranches && get(formData, [dependencyKey]) === undefined) {\n            continue;\n        }\n        // Skip this dependency if it is not included in the schema (such as when dependencyKey is itself a hidden dependency.)\n        if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {\n            continue;\n        }\n        const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(dependencyKey, dependencies);\n        if (Array.isArray(dependencyValue)) {\n            schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);\n        }\n        else if (isObject(dependencyValue)) {\n            schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData, experimental_customMergeAllOf);\n        }\n        return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));\n    }\n    return schemas;\n}\n/** Updates a schema with additionally required properties added\n *\n * @param schema - The schema for which resolving a dependent properties is desired\n * @param [additionallyRequired] - An optional array of additionally required names\n * @returns - The schema with the additional required values merged in\n */\nexport function withDependentProperties(schema, additionallyRequired) {\n    if (!additionallyRequired) {\n        return schema;\n    }\n    const required = Array.isArray(schema.required)\n        ? Array.from(new Set([...schema.required, ...additionallyRequired]))\n        : additionallyRequired;\n    return { ...schema, required: required };\n}\n/** Merges a dependent schema into the `schema` dealing with oneOfs and references. Passes the `expandAllBranches` flag\n * down to the `retrieveSchemaInternal()`, `resolveReference()` and `withExactlyOneSubschema()` helper calls.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param schema - The schema for which resolving a dependent schema is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param dependencyKey - The key name of the dependency\n * @param dependencyValue - The potentially dependent schema\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData]- The current formData to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The list of schemas with the dependent schema resolved into them\n */\nexport function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);\n    return dependentSchemas.flatMap((dependent) => {\n        const { oneOf, ...dependentSchema } = dependent;\n        schema = mergeSchemas(schema, dependentSchema);\n        // Since it does not contain oneOf, we return the original schema.\n        if (oneOf === undefined) {\n            return schema;\n        }\n        // Resolve $refs inside oneOf.\n        const resolvedOneOfs = oneOf.map((subschema) => {\n            if (typeof subschema === 'boolean' || !(REF_KEY in subschema)) {\n                return [subschema];\n            }\n            return resolveReference(validator, subschema, rootSchema, expandAllBranches, recurseList, formData);\n        });\n        const allPermutations = getAllPermutationsOfXxxOf(resolvedOneOfs);\n        return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf));\n    });\n}\n/** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is\n * true, then a list of schemas for ALL options are retrieved and returned. Passes the `expandAllBranches` flag down to\n * the `retrieveSchemaInternal()` helper call.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used to validate oneOf options\n * @param schema - The schema for which resolving a oneOf subschema is desired\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param dependencyKey - The key name of the oneOf dependency\n * @param oneOf - The list of schemas representing the oneOf options\n * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies\n *          as a list of schemas\n * @param recurseList - The list of recursive references already processed\n * @param [formData] - The current formData to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true\n */\nexport function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {\n    const validSubschemas = oneOf.filter((subschema) => {\n        if (typeof subschema === 'boolean' || !subschema || !subschema.properties) {\n            return false;\n        }\n        const { [dependencyKey]: conditionPropertySchema } = subschema.properties;\n        if (conditionPropertySchema) {\n            const conditionSchema = {\n                type: 'object',\n                properties: {\n                    [dependencyKey]: conditionPropertySchema,\n                },\n            };\n            return validator.isValid(conditionSchema, formData, rootSchema) || expandAllBranches;\n        }\n        return false;\n    });\n    if (!expandAllBranches && validSubschemas.length !== 1) {\n        console.warn(\"ignoring oneOf in dependencies because there isn't exactly one subschema that is valid\");\n        return [schema];\n    }\n    return validSubschemas.flatMap((s) => {\n        const subschema = s;\n        const [dependentSubschema] = splitKeyElementFromObject(dependencyKey, subschema.properties);\n        const dependentSchema = { ...subschema, properties: dependentSubschema };\n        const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList, experimental_customMergeAllOf);\n        return schemas.map((s) => mergeSchemas(schema, s));\n    });\n}\n//# sourceMappingURL=retrieveSchema.js.map","import get from 'lodash-es/get.js';\nimport has from 'lodash-es/has.js';\nimport isNumber from 'lodash-es/isNumber.js';\nimport isObject from 'lodash-es/isObject.js';\nimport isString from 'lodash-es/isString.js';\nimport reduce from 'lodash-es/reduce.js';\nimport times from 'lodash-es/times.js';\nimport getFirstMatchingOption from './getFirstMatchingOption.js';\nimport retrieveSchema, { resolveAllReferences } from './retrieveSchema.js';\nimport { ONE_OF_KEY, REF_KEY, JUNK_OPTION_ID, ANY_OF_KEY } from '../constants.js';\nimport guessType from '../guessType.js';\nimport getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';\nimport getOptionMatchingSimpleDiscriminator from '../getOptionMatchingSimpleDiscriminator.js';\n/** A junk option used to determine when the getFirstMatchingOption call really matches an option rather than returning\n * the first item\n */\nexport const JUNK_OPTION = {\n    type: 'object',\n    $id: JUNK_OPTION_ID,\n    properties: {\n        __not_really_there__: {\n            type: 'number',\n        },\n    },\n};\n/** Recursive function that calculates the score of a `formData` against the given `schema`. The computation is fairly\n * simple. Initially the total score is 0. When `schema.properties` object exists, then all the `key/value` pairs within\n * the object are processed as follows after obtaining the formValue from `formData` using the `key`:\n * - If the `value` contains a `$ref`, `calculateIndexScore()` is called recursively with the formValue and the new\n *   schema that is the result of the ref in the schema being resolved and that sub-schema's resulting score is added to\n *   the total.\n * - If the `value` contains a `oneOf` and there is a formValue, then score based on the index returned from calling\n *   `getClosestMatchingOption()` of that oneOf.\n * - If the type of the `value` is 'object', `calculateIndexScore()` is called recursively with the formValue and the\n *   `value` itself as the sub-schema, and the score is added to the total.\n * - If the type of the `value` matches the guessed-type of the `formValue`, the score is incremented by 1, UNLESS the\n *   value has a `default` or `const`. In those case, if the `default` or `const` and the `formValue` match, the score\n *   is incremented by another 1 otherwise it is decremented by 1.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param rootSchema - The root JSON schema of the entire form\n * @param schema - The schema for which the score is being calculated\n * @param formData - The form data associated with the schema, used to calculate the score\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The score a schema against the formData\n */\nexport function calculateIndexScore(validator, rootSchema, schema, formData, experimental_customMergeAllOf) {\n    let totalScore = 0;\n    if (schema) {\n        if (isObject(schema.properties)) {\n            totalScore += reduce(schema.properties, (score, value, key) => {\n                const formValue = get(formData, key);\n                if (typeof value === 'boolean') {\n                    return score;\n                }\n                if (has(value, REF_KEY)) {\n                    const newSchema = retrieveSchema(validator, value, rootSchema, formValue, experimental_customMergeAllOf);\n                    return (score +\n                        calculateIndexScore(validator, rootSchema, newSchema, formValue || {}, experimental_customMergeAllOf));\n                }\n                if ((has(value, ONE_OF_KEY) || has(value, ANY_OF_KEY)) && formValue) {\n                    const key = has(value, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;\n                    const discriminator = getDiscriminatorFieldFromSchema(value);\n                    return (score +\n                        getClosestMatchingOption(validator, rootSchema, formValue, get(value, key), -1, discriminator, experimental_customMergeAllOf));\n                }\n                if (value.type === 'object') {\n                    if (isObject(formValue)) {\n                        // If the structure is matching then give it a little boost in score\n                        score += 1;\n                    }\n                    return (score +\n                        calculateIndexScore(validator, rootSchema, value, formValue, experimental_customMergeAllOf));\n                }\n                if (value.type === guessType(formValue)) {\n                    // If the types match, then we bump the score by one\n                    let newScore = score + 1;\n                    if (value.default) {\n                        // If the schema contains a readonly default value score the value that matches the default higher and\n                        // any non-matching value lower\n                        newScore += formValue === value.default ? 1 : -1;\n                    }\n                    else if (value.const) {\n                        // If the schema contains a const value score the value that matches the default higher and\n                        // any non-matching value lower\n                        newScore += formValue === value.const ? 1 : -1;\n                    }\n                    // TODO eventually, deal with enums/arrays\n                    return newScore;\n                }\n                return score;\n            }, 0);\n        }\n        else if (isString(schema.type) && schema.type === guessType(formData)) {\n            totalScore += 1;\n        }\n    }\n    return totalScore;\n}\n/** Determines which of the given `options` provided most closely matches the `formData`. Using\n * `getFirstMatchingOption()` to match two schemas that differ only by the readOnly, default or const value of a field\n * based on the `formData` and returns 0 when there is no match. Rather than passing in all the `options` at once to\n * this utility, instead an array of valid option indexes is created by iterating over the list of options, call\n * `getFirstMatchingOptions` with a list of one junk option and one good option, seeing if the good option is considered\n * matched.\n *\n * Once the list of valid indexes is created, if there is only one valid index, just return it. Otherwise, if there are\n * no valid indexes, then fill the valid indexes array with the indexes of all the options. Next, the index of the\n * option with the highest score is determined by iterating over the list of valid options, calling\n * `calculateIndexScore()` on each, comparing it against the current best score, and returning the index of the one that\n * eventually has the best score.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param rootSchema - The root JSON schema of the entire form\n * @param formData - The form data associated with the schema\n * @param options - The list of options that can be selected from\n * @param [selectedOption=-1] - The index of the currently selected option, defaulted to -1 if not specified\n * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n *          determine which option is selected\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The index of the option that is the closest match to the `formData` or the `selectedOption` if no match\n */\nexport default function getClosestMatchingOption(validator, rootSchema, formData, options, selectedOption = -1, discriminatorField, experimental_customMergeAllOf) {\n    // First resolve any refs in the options\n    const resolvedOptions = options.map((option) => {\n        return resolveAllReferences(option, rootSchema, []);\n    });\n    const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);\n    if (isNumber(simpleDiscriminatorMatch)) {\n        return simpleDiscriminatorMatch;\n    }\n    // Reduce the array of options down to a list of the indexes that are considered matching options\n    const allValidIndexes = resolvedOptions.reduce((validList, option, index) => {\n        const testOptions = [JUNK_OPTION, option];\n        const match = getFirstMatchingOption(validator, formData, testOptions, rootSchema, discriminatorField);\n        // The match is the real option, so add its index to list of valid indexes\n        if (match === 1) {\n            validList.push(index);\n        }\n        return validList;\n    }, []);\n    // There is only one valid index, so return it!\n    if (allValidIndexes.length === 1) {\n        return allValidIndexes[0];\n    }\n    if (!allValidIndexes.length) {\n        // No indexes were valid, so we'll score all the options, add all the indexes\n        times(resolvedOptions.length, (i) => allValidIndexes.push(i));\n    }\n    const scoreCount = new Set();\n    // Score all the options in the list of valid indexes and return the index with the best score\n    const { bestIndex } = allValidIndexes.reduce((scoreData, index) => {\n        const { bestScore } = scoreData;\n        const option = resolvedOptions[index];\n        const score = calculateIndexScore(validator, rootSchema, option, formData, experimental_customMergeAllOf);\n        scoreCount.add(score);\n        if (score > bestScore) {\n            return { bestIndex: index, bestScore: score };\n        }\n        return scoreData;\n    }, { bestIndex: selectedOption, bestScore: 0 });\n    // if all scores are the same go with selectedOption\n    if (scoreCount.size === 1 && selectedOption >= 0) {\n        return selectedOption;\n    }\n    return bestIndex;\n}\n//# sourceMappingURL=getClosestMatchingOption.js.map","import isObject from './isObject.js';\n/** Detects whether the given `schema` contains fixed items. This is the case when `schema.items` is a non-empty array\n * that only contains objects.\n *\n * @param schema - The schema in which to check for fixed items\n * @returns - True if there are fixed items in the schema, false otherwise\n */\nexport default function isFixedItems(schema) {\n    return Array.isArray(schema.items) && schema.items.length > 0 && schema.items.every((item) => isObject(item));\n}\n//# sourceMappingURL=isFixedItems.js.map","import get from 'lodash-es/get.js';\nimport isObject from './isObject.js';\nimport isNil from 'lodash-es/isNil.js';\n/** Merges the `defaults` object of type `T` into the `formData` of type `T`\n *\n * When merging defaults and form data, we want to merge in this specific way:\n * - objects are deeply merged\n * - arrays are merged in such a way that:\n *   - when the array is set in form data, only array entries set in form data\n *     are deeply merged; additional entries from the defaults are ignored unless `mergeExtraArrayDefaults` is true, in\n *     which case the extras are appended onto the end of the form data\n *   - when the array is not set in form data, the default is copied over\n * - scalars are overwritten/set by form data unless undefined and there is a default AND `defaultSupercedesUndefined`\n *   is true\n *\n * @param [defaults] - The defaults to merge\n * @param [formData] - The form data into which the defaults will be merged\n * @param [mergeExtraArrayDefaults=false] - If true, any additional default array entries are appended onto the formData\n * @param [defaultSupercedesUndefined=false] - If true, an explicit undefined value will be overwritten by the default value\n * @param [overrideFormDataWithDefaults=false] - If true, the default value will overwrite the form data value. If the value\n *        doesn't exist in the default, we take it from formData and in the case where the value is set to undefined in formData.\n *       This is useful when we have already merged formData with defaults and want to add an additional field from formData\n *       that does not exist in defaults.\n * @returns - The resulting merged form data with defaults\n */\nexport default function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {\n    if (Array.isArray(formData)) {\n        const defaultsArray = Array.isArray(defaults) ? defaults : [];\n        // If overrideFormDataWithDefaults is true, we want to override the formData with the defaults\n        const overrideArray = overrideFormDataWithDefaults ? defaultsArray : formData;\n        const overrideOppositeArray = overrideFormDataWithDefaults ? formData : defaultsArray;\n        const mapped = overrideArray.map((value, idx) => {\n            // We want to explicitly make sure that the value is NOT undefined since null, 0 and empty space are valid values\n            if (overrideOppositeArray[idx] !== undefined) {\n                return mergeDefaultsWithFormData(defaultsArray[idx], formData[idx], mergeExtraArrayDefaults, defaultSupercedesUndefined, overrideFormDataWithDefaults);\n            }\n            return value;\n        });\n        // Merge any extra defaults when mergeExtraArrayDefaults is true\n        // Or when overrideFormDataWithDefaults is true and the default array is shorter than the formData array\n        if ((mergeExtraArrayDefaults || overrideFormDataWithDefaults) && mapped.length < overrideOppositeArray.length) {\n            mapped.push(...overrideOppositeArray.slice(mapped.length));\n        }\n        return mapped;\n    }\n    if (isObject(formData)) {\n        const acc = Object.assign({}, defaults); // Prevent mutation of source object.\n        return Object.keys(formData).reduce((acc, key) => {\n            const keyValue = get(formData, key);\n            const keyExistsInDefaults = isObject(defaults) && key in defaults;\n            const keyExistsInFormData = key in formData;\n            acc[key] = mergeDefaultsWithFormData(defaults ? get(defaults, key) : {}, keyValue, mergeExtraArrayDefaults, defaultSupercedesUndefined, \n            // overrideFormDataWithDefaults can be true only when the key value exists in defaults\n            // Or if the key value doesn't exist in formData\n            overrideFormDataWithDefaults && (keyExistsInDefaults || !keyExistsInFormData));\n            return acc;\n        }, acc);\n    }\n    /**\n     * If the defaultSupercedesUndefined flag is true\n     *    And formData is set to undefined or null and defaults are defined\n     *    Or if formData is a number and is NaN return defaults\n     * Or if overrideFormDataWithDefaults flag is true and formData is set to not undefined/null return defaults\n     */\n    if ((defaultSupercedesUndefined &&\n        ((!isNil(defaults) && isNil(formData)) || (typeof formData === 'number' && isNaN(formData)))) ||\n        (overrideFormDataWithDefaults && !isNil(formData))) {\n        return defaults;\n    }\n    return formData;\n}\n//# sourceMappingURL=mergeDefaultsWithFormData.js.map","import isObject from './isObject.js';\n/** Recursively merge deeply nested objects.\n *\n * @param obj1 - The first object to merge\n * @param obj2 - The second object to merge\n * @param [concatArrays=false] - Optional flag that, when true, will cause arrays to be concatenated. Use\n *          \"preventDuplicates\" to merge arrays in a manner that prevents any duplicate entries from being merged.\n *          NOTE: Uses shallow comparison for the duplicate checking.\n * @returns - A new object that is the merge of the two given objects\n */\nexport default function mergeObjects(obj1, obj2, concatArrays = false) {\n    return Object.keys(obj2).reduce((acc, key) => {\n        const left = obj1 ? obj1[key] : {}, right = obj2[key];\n        if (obj1 && key in obj1 && isObject(right)) {\n            acc[key] = mergeObjects(left, right, concatArrays);\n        }\n        else if (concatArrays && Array.isArray(left) && Array.isArray(right)) {\n            let toMerge = right;\n            if (concatArrays === 'preventDuplicates') {\n                toMerge = right.reduce((result, value) => {\n                    if (!left.includes(value)) {\n                        result.push(value);\n                    }\n                    return result;\n                }, []);\n            }\n            acc[key] = left.concat(toMerge);\n        }\n        else {\n            acc[key] = right;\n        }\n        return acc;\n    }, Object.assign({}, obj1)); // Prevent mutation of source object.\n}\n//# sourceMappingURL=mergeObjects.js.map","import { CONST_KEY } from './constants.js';\n/** This function checks if the given `schema` matches a single constant value. This happens when either the schema has\n * an `enum` array with a single value or there is a `const` defined.\n *\n * @param schema - The schema for a field\n * @returns - True if the `schema` has a single constant value, false otherwise\n */\nexport default function isConstant(schema) {\n    return (Array.isArray(schema.enum) && schema.enum.length === 1) || CONST_KEY in schema;\n}\n//# sourceMappingURL=isConstant.js.map","import isConstant from '../isConstant.js';\nimport retrieveSchema from './retrieveSchema.js';\n/** Checks to see if the `schema` combination represents a select\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param theSchema - The schema for which check for a select flag is desired\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - True if schema contains a select, otherwise false\n */\nexport default function isSelect(validator, theSchema, rootSchema = {}, experimental_customMergeAllOf) {\n    const schema = retrieveSchema(validator, theSchema, rootSchema, undefined, experimental_customMergeAllOf);\n    const altSchemas = schema.oneOf || schema.anyOf;\n    if (Array.isArray(schema.enum)) {\n        return true;\n    }\n    if (Array.isArray(altSchemas)) {\n        return altSchemas.every((altSchemas) => typeof altSchemas !== 'boolean' && isConstant(altSchemas));\n    }\n    return false;\n}\n//# sourceMappingURL=isSelect.js.map","import isSelect from './isSelect.js';\n/** Checks to see if the `schema` combination represents a multi-select\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which check for a multi-select flag is desired\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - True if schema contains a multi-select, otherwise false\n */\nexport default function isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) {\n    if (!schema.uniqueItems || !schema.items || typeof schema.items === 'boolean') {\n        return false;\n    }\n    return isSelect(validator, schema.items, rootSchema, experimental_customMergeAllOf);\n}\n//# sourceMappingURL=isMultiSelect.js.map","import { CONST_KEY, getSchemaType, isObject } from './index.js';\nimport isString from 'lodash-es/isString.js';\n/**\n * Checks if the schema const property value is an AJV $data reference\n * and the current schema is not an object or array\n *\n * @param schema - The schema to check if the const is an AJV $data reference\n * @returns - true if the schema const property value is an AJV $data reference otherwise false.\n */\nexport default function constIsAjvDataReference(schema) {\n    const schemaConst = schema[CONST_KEY];\n    const schemaType = getSchemaType(schema);\n    return isObject(schemaConst) && isString(schemaConst === null || schemaConst === void 0 ? void 0 : schemaConst.$data) && schemaType !== 'object' && schemaType !== 'array';\n}\n//# sourceMappingURL=constIsAjvDataReference.js.map","import toConstant from './toConstant.js';\nimport getUiOptions from './getUiOptions.js';\n/** Gets the list of options from the `schema`. If the schema has an enum list, then those enum values are returned. The\n * labels for the options will be extracted from the non-standard, RJSF-deprecated `enumNames` if it exists, otherwise\n * the label will be the same as the `value`. If the schema has a `oneOf` or `anyOf`, then the value is the list of\n * `const` values from the schema and the label is either the `schema.title` or the value. If a `uiSchema` is provided\n * and it has the `ui:enumNames` matched with `enum` or it has an associated `oneOf` or `anyOf` with a list of objects\n * containing `ui:title` then the UI schema values will replace the values from the schema.\n *\n * @param schema - The schema from which to extract the options list\n * @param [uiSchema] - The optional uiSchema from which to get alternate labels for the options\n * @returns - The list of options from the schema\n */\nexport default function optionsList(schema, uiSchema) {\n    // TODO flip generics to move T first in v6\n    const schemaWithEnumNames = schema;\n    if (schema.enum) {\n        let enumNames;\n        if (uiSchema) {\n            const { enumNames: uiEnumNames } = getUiOptions(uiSchema);\n            enumNames = uiEnumNames;\n        }\n        if (!enumNames && schemaWithEnumNames.enumNames) {\n            // enumNames was deprecated in v5 and is intentionally omitted from the RJSFSchema type.\n            // Cast the type to include enumNames so the feature still works.\n            if (process.env.NODE_ENV !== 'production') {\n                console.warn('The \"enumNames\" property in the schema is deprecated and will be removed in a future major release. Use the \"ui:enumNames\" property in the uiSchema instead.');\n            }\n            enumNames = schemaWithEnumNames.enumNames;\n        }\n        return schema.enum.map((value, i) => {\n            const label = (enumNames === null || enumNames === void 0 ? void 0 : enumNames[i]) || String(value);\n            return { label, value };\n        });\n    }\n    let altSchemas = undefined;\n    let altUiSchemas = undefined;\n    if (schema.anyOf) {\n        altSchemas = schema.anyOf;\n        altUiSchemas = uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema.anyOf;\n    }\n    else if (schema.oneOf) {\n        altSchemas = schema.oneOf;\n        altUiSchemas = uiSchema === null || uiSchema === void 0 ? void 0 : uiSchema.oneOf;\n    }\n    return (altSchemas &&\n        altSchemas.map((aSchemaDef, index) => {\n            const { title } = getUiOptions(altUiSchemas === null || altUiSchemas === void 0 ? void 0 : altUiSchemas[index]);\n            const aSchema = aSchemaDef;\n            const value = toConstant(aSchema);\n            const label = title || aSchema.title || String(value);\n            return {\n                schema: aSchema,\n                label,\n                value,\n            };\n        }));\n}\n//# sourceMappingURL=optionsList.js.map","import { CONST_KEY, ENUM_KEY } from './constants.js';\n/** Returns the constant value from the schema when it is either a single value enum or has a const key. Otherwise\n * throws an error.\n *\n * @param schema - The schema from which to obtain the constant value\n * @returns - The constant value for the schema\n * @throws - Error when the schema does not have a constant value\n */\nexport default function toConstant(schema) {\n    if (ENUM_KEY in schema && Array.isArray(schema.enum) && schema.enum.length === 1) {\n        return schema.enum[0];\n    }\n    if (CONST_KEY in schema) {\n        return schema.const;\n    }\n    throw new Error('schema cannot be inferred as a constant');\n}\n//# sourceMappingURL=toConstant.js.map","import get from 'lodash-es/get.js';\nimport isEmpty from 'lodash-es/isEmpty.js';\nimport { ALL_OF_KEY, ANY_OF_KEY, CONST_KEY, DEFAULT_KEY, DEPENDENCIES_KEY, ONE_OF_KEY, PROPERTIES_KEY, REF_KEY, } from '../constants.js';\nimport findSchemaDefinition from '../findSchemaDefinition.js';\nimport getClosestMatchingOption from './getClosestMatchingOption.js';\nimport getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';\nimport getSchemaType from '../getSchemaType.js';\nimport isObject from '../isObject.js';\nimport isFixedItems from '../isFixedItems.js';\nimport mergeDefaultsWithFormData from '../mergeDefaultsWithFormData.js';\nimport mergeObjects from '../mergeObjects.js';\nimport mergeSchemas from '../mergeSchemas.js';\nimport isMultiSelect from './isMultiSelect.js';\nimport isSelect from './isSelect.js';\nimport retrieveSchema, { resolveDependencies } from './retrieveSchema.js';\nimport isConstant from '../isConstant.js';\nimport constIsAjvDataReference from '../constIsAjvDataReference.js';\nimport optionsList from '../optionsList.js';\nimport deepEquals from '../deepEquals.js';\nconst PRIMITIVE_TYPES = ['string', 'number', 'integer', 'boolean', 'null'];\n/** Enum that indicates how `schema.additionalItems` should be handled by the `getInnerSchemaForArrayItem()` function.\n */\nexport var AdditionalItemsHandling;\n(function (AdditionalItemsHandling) {\n    AdditionalItemsHandling[AdditionalItemsHandling[\"Ignore\"] = 0] = \"Ignore\";\n    AdditionalItemsHandling[AdditionalItemsHandling[\"Invert\"] = 1] = \"Invert\";\n    AdditionalItemsHandling[AdditionalItemsHandling[\"Fallback\"] = 2] = \"Fallback\";\n})(AdditionalItemsHandling || (AdditionalItemsHandling = {}));\n/** Given a `schema` will return an inner schema that for an array item. This is computed differently based on the\n * `additionalItems` enum and the value of `idx`. There are four possible returns:\n * 1. If `idx` is >= 0, then if `schema.items` is an array the `idx`th element of the array is returned if it is a valid\n *    index and not a boolean, otherwise it falls through to 3.\n * 2. If `schema.items` is not an array AND truthy and not a boolean, then `schema.items` is returned since it actually\n *    is a schema, otherwise it falls through to 3.\n * 3. If `additionalItems` is not `AdditionalItemsHandling.Ignore` and `schema.additionalItems` is an object, then\n *    `schema.additionalItems` is returned since it actually is a schema, otherwise it falls through to 4.\n * 4. {} is returned representing an empty schema\n *\n * @param schema - The schema from which to get the particular item\n * @param [additionalItems=AdditionalItemsHandling.Ignore] - How do we want to handle additional items?\n * @param [idx=-1] - Index, if non-negative, will be used to return the idx-th element in a `schema.items` array\n * @returns - The best fit schema object from the `schema` given the `additionalItems` and `idx` modifiers\n */\nexport function getInnerSchemaForArrayItem(schema, additionalItems = AdditionalItemsHandling.Ignore, idx = -1) {\n    if (idx >= 0) {\n        if (Array.isArray(schema.items) && idx < schema.items.length) {\n            const item = schema.items[idx];\n            if (typeof item !== 'boolean') {\n                return item;\n            }\n        }\n    }\n    else if (schema.items && !Array.isArray(schema.items) && typeof schema.items !== 'boolean') {\n        return schema.items;\n    }\n    if (additionalItems !== AdditionalItemsHandling.Ignore && isObject(schema.additionalItems)) {\n        return schema.additionalItems;\n    }\n    return {};\n}\n/** Either add `computedDefault` at `key` into `obj` or not add it based on its value, the value of\n * `includeUndefinedValues`, the value of `emptyObjectFields` and if its parent field is required. Generally undefined\n * `computedDefault` values are added only when `includeUndefinedValues` is either true/\"excludeObjectChildren\". If `\n * includeUndefinedValues` is false and `emptyObjectFields` is not \"skipDefaults\", then non-undefined and non-empty-object\n * values will be added based on certain conditions.\n *\n * @param obj - The object into which the computed default may be added\n * @param key - The key into the object at which the computed default may be added\n * @param computedDefault - The computed default value that maybe should be added to the obj\n * @param includeUndefinedValues - Optional flag, if true, cause undefined values to be added as defaults.\n *          If \"excludeObjectChildren\", cause undefined values for this object and pass `includeUndefinedValues` as\n *          false when computing defaults for any nested object properties. If \"allowEmptyObject\", prevents undefined\n *          values in this object while allow the object itself to be empty and passing `includeUndefinedValues` as\n *          false when computing defaults for any nested object properties.\n * @param isParentRequired - The optional boolean that indicates whether the parent field is required\n * @param requiredFields - The list of fields that are required\n * @param experimental_defaultFormStateBehavior - Optional configuration object, if provided, allows users to override\n *        default form state behavior\n * @param isConst - Optional flag, if true, indicates that the schema has a const property defined, thus we should always return the computedDefault since it's coming from the const.\n */\nfunction maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false) {\n    const { emptyObjectFields = 'populateAllDefaults' } = experimental_defaultFormStateBehavior;\n    if (includeUndefinedValues || isConst) {\n        // If includeUndefinedValues\n        // Or if the schema has a const property defined, then we should always return the computedDefault since it's coming from the const.\n        obj[key] = computedDefault;\n    }\n    else if (emptyObjectFields !== 'skipDefaults') {\n        // If isParentRequired is undefined, then we are at the root level of the schema so defer to the requiredness of\n        // the field key itself in the `requiredField` list\n        const isSelfOrParentRequired = isParentRequired === undefined ? requiredFields.includes(key) : isParentRequired;\n        if (isObject(computedDefault)) {\n            // If emptyObjectFields 'skipEmptyDefaults' store computedDefault if it's a non-empty object(e.g. not {})\n            if (emptyObjectFields === 'skipEmptyDefaults') {\n                if (!isEmpty(computedDefault)) {\n                    obj[key] = computedDefault;\n                }\n            } // Else store computedDefault if it's a non-empty object(e.g. not {}) and satisfies certain conditions\n            // Condition 1: If computedDefault is not empty or if the key is a required field\n            // Condition 2: If the parent object is required or emptyObjectFields is not 'populateRequiredDefaults'\n            else if ((!isEmpty(computedDefault) || requiredFields.includes(key)) &&\n                (isSelfOrParentRequired || emptyObjectFields !== 'populateRequiredDefaults')) {\n                obj[key] = computedDefault;\n            }\n        }\n        else if (\n        // Store computedDefault if it's a defined primitive (e.g., true) and satisfies certain conditions\n        // Condition 1: computedDefault is not undefined\n        // Condition 2: If emptyObjectFields is 'populateAllDefaults' or 'skipEmptyDefaults)\n        // Or if isSelfOrParentRequired is 'true' and the key is a required field\n        computedDefault !== undefined &&\n            (emptyObjectFields === 'populateAllDefaults' ||\n                emptyObjectFields === 'skipEmptyDefaults' ||\n                (isSelfOrParentRequired && requiredFields.includes(key)))) {\n            obj[key] = computedDefault;\n        }\n    }\n}\n/** Computes the defaults for the current `schema` given the `rawFormData` and `parentDefaults` if any. This drills into\n * each level of the schema, recursively, to fill out every level of defaults provided by the schema.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary\n * @param rawSchema - The schema for which the default state is desired\n * @param {ComputeDefaultsProps} computeDefaultsProps - Optional props for this function\n * @returns - The resulting `formData` with all the defaults provided\n */\nexport function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {\n    const { parentDefaults, rawFormData, rootSchema = {}, includeUndefinedValues = false, _recurseList = [], experimental_defaultFormStateBehavior = undefined, experimental_customMergeAllOf = undefined, required, shouldMergeDefaultsIntoFormData = false, } = computeDefaultsProps;\n    let formData = (isObject(rawFormData) ? rawFormData : {});\n    const schema = isObject(rawSchema) ? rawSchema : {};\n    // Compute the defaults recursively: give highest priority to deepest nodes.\n    let defaults = parentDefaults;\n    // If we get a new schema, then we need to recompute defaults again for the new schema found.\n    let schemaToCompute = null;\n    let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;\n    let updatedRecurseList = _recurseList;\n    if (schema[CONST_KEY] !== undefined &&\n        (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) !== 'never' &&\n        !constIsAjvDataReference(schema)) {\n        defaults = schema[CONST_KEY];\n    }\n    else if (isObject(defaults) && isObject(schema.default)) {\n        // For object defaults, only override parent defaults that are defined in\n        // schema.default.\n        defaults = mergeObjects(defaults, schema.default);\n    }\n    else if (DEFAULT_KEY in schema && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY]) {\n        // If the schema has a default value, then we should use it as the default.\n        // And if the schema does not have anyOf or oneOf, this is done because we need to merge the defaults with the formData.\n        defaults = schema.default;\n    }\n    else if (REF_KEY in schema) {\n        const refName = schema[REF_KEY];\n        // Use referenced schema defaults for this node.\n        if (!_recurseList.includes(refName)) {\n            updatedRecurseList = _recurseList.concat(refName);\n            schemaToCompute = findSchemaDefinition(refName, rootSchema);\n        }\n        // If the referenced schema exists and parentDefaults is not set\n        // Then set the defaults from the current schema for the referenced schema\n        if (schemaToCompute && !defaults) {\n            defaults = schema.default;\n        }\n        // If shouldMergeDefaultsIntoFormData is true\n        // And the schemaToCompute is set and the rawFormData is not an object\n        // Then set the formData to the rawFormData\n        if (shouldMergeDefaultsIntoFormData && schemaToCompute && !isObject(rawFormData)) {\n            formData = rawFormData;\n        }\n    }\n    else if (DEPENDENCIES_KEY in schema) {\n        // Get the default if set from properties to ensure the dependencies conditions are resolved based on it\n        const defaultFormData = {\n            ...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults),\n            ...formData,\n        };\n        const resolvedSchema = resolveDependencies(validator, schema, rootSchema, false, [], defaultFormData, experimental_customMergeAllOf);\n        schemaToCompute = resolvedSchema[0]; // pick the first element from resolve dependencies\n    }\n    else if (isFixedItems(schema)) {\n        defaults = schema.items.map((itemSchema, idx) => computeDefaults(validator, itemSchema, {\n            rootSchema,\n            includeUndefinedValues,\n            _recurseList,\n            experimental_defaultFormStateBehavior,\n            experimental_customMergeAllOf,\n            parentDefaults: Array.isArray(parentDefaults) ? parentDefaults[idx] : undefined,\n            rawFormData: formData,\n            required,\n            shouldMergeDefaultsIntoFormData,\n        }));\n    }\n    else if (ONE_OF_KEY in schema) {\n        const { oneOf, ...remaining } = schema;\n        if (oneOf.length === 0) {\n            return undefined;\n        }\n        const discriminator = getDiscriminatorFieldFromSchema(schema);\n        const { type = 'null' } = remaining;\n        if (!Array.isArray(type) &&\n            PRIMITIVE_TYPES.includes(type) &&\n            (experimental_dfsb_to_compute === null || experimental_dfsb_to_compute === void 0 ? void 0 : experimental_dfsb_to_compute.constAsDefaults) === 'skipOneOf') {\n            // If we are in a oneOf of a primitive type, then we want to pass constAsDefaults as 'never' for the recursion\n            experimental_dfsb_to_compute = {\n                ...experimental_dfsb_to_compute,\n                constAsDefaults: 'never',\n            };\n        }\n        schemaToCompute = oneOf[getClosestMatchingOption(validator, rootSchema, rawFormData !== null && rawFormData !== void 0 ? rawFormData : schema.default, oneOf, 0, discriminator, experimental_customMergeAllOf)];\n        schemaToCompute = mergeSchemas(remaining, schemaToCompute);\n    }\n    else if (ANY_OF_KEY in schema) {\n        const { anyOf, ...remaining } = schema;\n        if (anyOf.length === 0) {\n            return undefined;\n        }\n        const discriminator = getDiscriminatorFieldFromSchema(schema);\n        schemaToCompute = anyOf[getClosestMatchingOption(validator, rootSchema, rawFormData !== null && rawFormData !== void 0 ? rawFormData : schema.default, anyOf, 0, discriminator, experimental_customMergeAllOf)];\n        schemaToCompute = mergeSchemas(remaining, schemaToCompute);\n    }\n    if (schemaToCompute) {\n        return computeDefaults(validator, schemaToCompute, {\n            rootSchema,\n            includeUndefinedValues,\n            _recurseList: updatedRecurseList,\n            experimental_defaultFormStateBehavior: experimental_dfsb_to_compute,\n            experimental_customMergeAllOf,\n            parentDefaults: defaults,\n            rawFormData: (rawFormData !== null && rawFormData !== void 0 ? rawFormData : formData),\n            required,\n            shouldMergeDefaultsIntoFormData,\n        });\n    }\n    // No defaults defined for this node, fallback to generic typed ones.\n    if (defaults === undefined) {\n        defaults = schema.default;\n    }\n    const defaultBasedOnSchemaType = getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults);\n    let defaultsWithFormData = defaultBasedOnSchemaType !== null && defaultBasedOnSchemaType !== void 0 ? defaultBasedOnSchemaType : defaults;\n    // if shouldMergeDefaultsIntoFormData is true, then merge the defaults into the formData.\n    if (shouldMergeDefaultsIntoFormData) {\n        const { arrayMinItems = {} } = experimental_defaultFormStateBehavior || {};\n        const { mergeExtraDefaults } = arrayMinItems;\n        const matchingFormData = ensureFormDataMatchingSchema(validator, schema, rootSchema, rawFormData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf);\n        if (!isObject(rawFormData) || ALL_OF_KEY in schema) {\n            // If the formData is not an object which means it's a primitive field, then we need to merge the defaults into the formData.\n            // Or if the schema has allOf, we need to merge the defaults into the formData because we don't compute the defaults for allOf.\n            defaultsWithFormData = mergeDefaultsWithFormData(defaultsWithFormData, matchingFormData, mergeExtraDefaults, true);\n        }\n    }\n    return defaultsWithFormData;\n}\n/**\n * Ensure that the formData matches the given schema. If it's not matching in the case of a selectField, we change it to match the schema.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the formData state is desired\n * @param rootSchema - The root schema, used to primarily to look up `$ref`s\n * @param formData - The current formData\n * @param [experimental_defaultFormStateBehavior] - Optional configuration object, if provided, allows users to override default form state behavior\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - valid formData that matches schema\n */\nexport function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {\n    const isSelectField = !isConstant(schema) && isSelect(validator, schema, rootSchema, experimental_customMergeAllOf);\n    let validFormData = formData;\n    if (isSelectField) {\n        const getOptionsList = optionsList(schema);\n        const isValid = getOptionsList === null || getOptionsList === void 0 ? void 0 : getOptionsList.some((option) => deepEquals(option.value, formData));\n        validFormData = isValid ? formData : undefined;\n    }\n    // Override the formData with the const if the constAsDefaults is set to always\n    const constTakesPrecedence = schema[CONST_KEY] && (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) === 'always';\n    if (constTakesPrecedence) {\n        validFormData = schema.const;\n    }\n    return validFormData;\n}\n/** Computes the default value for objects.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary\n * @param rawSchema - The schema for which the default state is desired\n * @param {ComputeDefaultsProps} computeDefaultsProps - Optional props for this function\n * @param defaults - Optional props for this function\n * @returns - The default value based on the schema type if they are defined for object or array schemas.\n */\nexport function getObjectDefaults(validator, rawSchema, { rawFormData, rootSchema = {}, includeUndefinedValues = false, _recurseList = [], experimental_defaultFormStateBehavior = undefined, experimental_customMergeAllOf = undefined, required, shouldMergeDefaultsIntoFormData, } = {}, defaults) {\n    {\n        const formData = (isObject(rawFormData) ? rawFormData : {});\n        const schema = rawSchema;\n        // This is a custom addition that fixes this issue:\n        // https://github.com/rjsf-team/react-jsonschema-form/issues/3832\n        const retrievedSchema = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.allOf) === 'populateDefaults' && ALL_OF_KEY in schema\n            ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf)\n            : schema;\n        const parentConst = retrievedSchema[CONST_KEY];\n        const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce((acc, key) => {\n            var _a;\n            const propertySchema = get(retrievedSchema, [PROPERTIES_KEY, key]);\n            // Check if the parent schema has a const property defined AND we are supporting const as defaults, then we\n            // should always return the computedDefault since it's coming from the const.\n            const hasParentConst = isObject(parentConst) && parentConst[key] !== undefined;\n            const hasConst = ((isObject(propertySchema) && CONST_KEY in propertySchema) || hasParentConst) &&\n                (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) !== 'never' &&\n                !constIsAjvDataReference(propertySchema);\n            // Compute the defaults for this node, with the parent defaults we might\n            // have from a previous run: defaults[key].\n            const computedDefault = computeDefaults(validator, propertySchema, {\n                rootSchema,\n                _recurseList,\n                experimental_defaultFormStateBehavior,\n                experimental_customMergeAllOf,\n                includeUndefinedValues: includeUndefinedValues === true,\n                parentDefaults: get(defaults, [key]),\n                rawFormData: get(formData, [key]),\n                required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key),\n                shouldMergeDefaultsIntoFormData,\n            });\n            maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required, retrievedSchema.required, experimental_defaultFormStateBehavior, hasConst);\n            return acc;\n        }, {});\n        if (retrievedSchema.additionalProperties) {\n            // as per spec additionalProperties may be either schema or boolean\n            const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties)\n                ? retrievedSchema.additionalProperties\n                : {};\n            const keys = new Set();\n            if (isObject(defaults)) {\n                Object.keys(defaults)\n                    .filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key])\n                    .forEach((key) => keys.add(key));\n            }\n            const formDataRequired = [];\n            Object.keys(formData)\n                .filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key])\n                .forEach((key) => {\n                keys.add(key);\n                formDataRequired.push(key);\n            });\n            keys.forEach((key) => {\n                var _a;\n                const computedDefault = computeDefaults(validator, additionalPropertiesSchema, {\n                    rootSchema,\n                    _recurseList,\n                    experimental_defaultFormStateBehavior,\n                    experimental_customMergeAllOf,\n                    includeUndefinedValues: includeUndefinedValues === true,\n                    parentDefaults: get(defaults, [key]),\n                    rawFormData: get(formData, [key]),\n                    required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key),\n                    shouldMergeDefaultsIntoFormData,\n                });\n                // Since these are additional properties we don't need to add the `experimental_defaultFormStateBehavior` prop\n                maybeAddDefaultToObject(objectDefaults, key, computedDefault, includeUndefinedValues, required, formDataRequired);\n            });\n        }\n        return objectDefaults;\n    }\n}\n/** Computes the default value for arrays.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary\n * @param rawSchema - The schema for which the default state is desired\n * @param {ComputeDefaultsProps} computeDefaultsProps - Optional props for this function\n * @param defaults - Optional props for this function\n * @returns - The default value based on the schema type if they are defined for object or array schemas.\n */\nexport function getArrayDefaults(validator, rawSchema, { rawFormData, rootSchema = {}, _recurseList = [], experimental_defaultFormStateBehavior = undefined, experimental_customMergeAllOf = undefined, required, shouldMergeDefaultsIntoFormData, } = {}, defaults) {\n    var _a, _b;\n    const schema = rawSchema;\n    const arrayMinItemsStateBehavior = (_a = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) !== null && _a !== void 0 ? _a : {};\n    const { populate: arrayMinItemsPopulate, mergeExtraDefaults: arrayMergeExtraDefaults } = arrayMinItemsStateBehavior;\n    const neverPopulate = arrayMinItemsPopulate === 'never';\n    const ignoreMinItemsFlagSet = arrayMinItemsPopulate === 'requiredOnly';\n    const isPopulateAll = arrayMinItemsPopulate === 'all' || (!neverPopulate && !ignoreMinItemsFlagSet);\n    const computeSkipPopulate = (_b = arrayMinItemsStateBehavior === null || arrayMinItemsStateBehavior === void 0 ? void 0 : arrayMinItemsStateBehavior.computeSkipPopulate) !== null && _b !== void 0 ? _b : (() => false);\n    const isSkipEmptyDefaults = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.emptyObjectFields) === 'skipEmptyDefaults';\n    const emptyDefault = isSkipEmptyDefaults ? undefined : [];\n    // Inject defaults into existing array defaults\n    if (Array.isArray(defaults)) {\n        defaults = defaults.map((item, idx) => {\n            const schemaItem = getInnerSchemaForArrayItem(schema, AdditionalItemsHandling.Fallback, idx);\n            return computeDefaults(validator, schemaItem, {\n                rootSchema,\n                _recurseList,\n                experimental_defaultFormStateBehavior,\n                experimental_customMergeAllOf,\n                parentDefaults: item,\n                required,\n                shouldMergeDefaultsIntoFormData,\n            });\n        });\n    }\n    // Deeply inject defaults into already existing form data\n    if (Array.isArray(rawFormData)) {\n        const schemaItem = getInnerSchemaForArrayItem(schema);\n        if (neverPopulate) {\n            defaults = rawFormData;\n        }\n        else {\n            const itemDefaults = rawFormData.map((item, idx) => {\n                return computeDefaults(validator, schemaItem, {\n                    rootSchema,\n                    _recurseList,\n                    experimental_defaultFormStateBehavior,\n                    experimental_customMergeAllOf,\n                    rawFormData: item,\n                    parentDefaults: get(defaults, [idx]),\n                    required,\n                    shouldMergeDefaultsIntoFormData,\n                });\n            });\n            // If the populate 'requiredOnly' flag is set then we only merge and include extra defaults if they are required.\n            // Or if populate 'all' is set we merge and include extra defaults.\n            const mergeExtraDefaults = ((ignoreMinItemsFlagSet && required) || isPopulateAll) && arrayMergeExtraDefaults;\n            defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);\n        }\n    }\n    // Check if the schema has a const property defined AND we are supporting const as defaults, then we should always\n    // return the computedDefault since it's coming from the const.\n    const hasConst = isObject(schema) && CONST_KEY in schema && (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.constAsDefaults) !== 'never';\n    if (hasConst === false) {\n        if (neverPopulate) {\n            return defaults !== null && defaults !== void 0 ? defaults : emptyDefault;\n        }\n        if (ignoreMinItemsFlagSet && !required) {\n            // If no form data exists or defaults are set leave the field empty/non-existent, otherwise\n            // return form data/defaults\n            return defaults ? defaults : undefined;\n        }\n    }\n    const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;\n    if (!schema.minItems ||\n        isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) ||\n        computeSkipPopulate(validator, schema, rootSchema) ||\n        schema.minItems <= defaultsLength) {\n        return defaults ? defaults : emptyDefault;\n    }\n    const defaultEntries = (defaults || []);\n    const fillerSchema = getInnerSchemaForArrayItem(schema, AdditionalItemsHandling.Invert);\n    const fillerDefault = fillerSchema.default;\n    // Calculate filler entries for remaining items (minItems - existing raw data/defaults)\n    const fillerEntries = new Array(schema.minItems - defaultsLength).fill(computeDefaults(validator, fillerSchema, {\n        parentDefaults: fillerDefault,\n        rootSchema,\n        _recurseList,\n        experimental_defaultFormStateBehavior,\n        experimental_customMergeAllOf,\n        required,\n        shouldMergeDefaultsIntoFormData,\n    }));\n    // then fill up the rest with either the item default or empty, up to minItems\n    return defaultEntries.concat(fillerEntries);\n}\n/** Computes the default value based on the schema type.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary\n * @param rawSchema - The schema for which the default state is desired\n * @param {ComputeDefaultsProps} computeDefaultsProps - Optional props for this function\n * @param defaults - Optional props for this function\n * @returns - The default value based on the schema type if they are defined for object or array schemas.\n */\nexport function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {\n    switch (getSchemaType(rawSchema)) {\n        // We need to recurse for object schema inner default values.\n        case 'object': {\n            return getObjectDefaults(validator, rawSchema, computeDefaultsProps, defaults);\n        }\n        case 'array': {\n            return getArrayDefaults(validator, rawSchema, computeDefaultsProps, defaults);\n        }\n    }\n}\n/** Returns the superset of `formData` that includes the given set updated to include any missing fields that have\n * computed to have defaults provided in the `schema`.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param theSchema - The schema for which the default state is desired\n * @param [formData] - The current formData, if any, onto which to provide any missing defaults\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.\n *          If \"excludeObjectChildren\", cause undefined values for this object and pass `includeUndefinedValues` as\n *          false when computing defaults for any nested object properties.\n * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The resulting `formData` with all the defaults provided\n */\nexport default function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {\n    if (!isObject(theSchema)) {\n        throw new Error('Invalid schema: ' + theSchema);\n    }\n    const schema = retrieveSchema(validator, theSchema, rootSchema, formData, experimental_customMergeAllOf);\n    // Get the computed defaults with 'shouldMergeDefaultsIntoFormData' set to true to merge defaults into formData.\n    // This is done when for example the value from formData does not exist in the schema 'enum' property, in such\n    // cases we take the value from the defaults because the value from the formData is not valid.\n    const defaults = computeDefaults(validator, schema, {\n        rootSchema,\n        includeUndefinedValues,\n        experimental_defaultFormStateBehavior,\n        experimental_customMergeAllOf,\n        rawFormData: formData,\n        shouldMergeDefaultsIntoFormData: true,\n    });\n    // If the formData is an object or an array, add additional properties from formData and override formData with\n    // defaults since the defaults are already merged with formData.\n    if (isObject(formData) || Array.isArray(formData)) {\n        const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};\n        const defaultSupercedesUndefined = mergeDefaultsIntoFormData === 'useDefaultIfFormDataUndefined';\n        const result = mergeDefaultsWithFormData(defaults, formData, true, // set to true to add any additional default array entries.\n        defaultSupercedesUndefined, true // set to true to override formData with defaults if they exist.\n        );\n        return result;\n    }\n    return defaults;\n}\n//# sourceMappingURL=getDefaultFormState.js.map","import getUiOptions from './getUiOptions.js';\n/** Checks to see if the `uiSchema` contains the `widget` field and that the widget is not `hidden`\n *\n * @param uiSchema - The UI Schema from which to detect if it is customized\n * @returns - True if the `uiSchema` describes a custom widget, false otherwise\n */\nexport default function isCustomWidget(uiSchema = {}) {\n    return (\n    // TODO: Remove the `&& uiSchema['ui:widget'] !== 'hidden'` once we support hidden widgets for arrays.\n    // https://rjsf-team.github.io/react-jsonschema-form/docs/usage/widgets/#hidden-widgets\n    'widget' in getUiOptions(uiSchema) && getUiOptions(uiSchema)['widget'] !== 'hidden');\n}\n//# sourceMappingURL=isCustomWidget.js.map","import { UI_WIDGET_KEY } from '../constants.js';\nimport retrieveSchema from './retrieveSchema.js';\n/** Checks to see if the `schema` and `uiSchema` combination represents an array of files\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which check for array of files flag is desired\n * @param [uiSchema={}] - The UI schema from which to check the widget\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - True if schema/uiSchema contains an array of files, otherwise false\n */\nexport default function isFilesArray(validator, schema, uiSchema = {}, rootSchema, experimental_customMergeAllOf) {\n    if (uiSchema[UI_WIDGET_KEY] === 'files') {\n        return true;\n    }\n    if (schema.items) {\n        const itemsSchema = retrieveSchema(validator, schema.items, rootSchema, undefined, experimental_customMergeAllOf);\n        return itemsSchema.type === 'string' && itemsSchema.format === 'data-url';\n    }\n    return false;\n}\n//# sourceMappingURL=isFilesArray.js.map","import get from 'lodash-es/get.js';\nimport has from 'lodash-es/has.js';\nimport { PROPERTIES_KEY, REF_KEY } from '../constants.js';\nimport retrieveSchema from './retrieveSchema.js';\nconst NO_VALUE = Symbol('no Value');\n/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the new\n * schema does not contain any properties, then `undefined` is returned to clear all the form data. Due to the nature\n * of schemas, this sanitization happens recursively for nested objects of data. Also, any properties in the old schema\n * that are non-existent in the new schema are set to `undefined`. The data sanitization process has the following flow:\n *\n * - If the new schema is an object that contains a `properties` object then:\n *   - Create a `removeOldSchemaData` object, setting each key in the `oldSchema.properties` having `data` to undefined\n *   - Create an empty `nestedData` object for use in the key filtering below:\n *   - Iterate over each key in the `newSchema.properties` as follows:\n *     - Get the `formValue` of the key from the `data`\n *     - Get the `oldKeySchema` and `newKeyedSchema` for the key, defaulting to `{}` when it doesn't exist\n *     - Retrieve the schema for any refs within each `oldKeySchema` and/or `newKeySchema`\n *     - Get the types of the old and new keyed schemas and if the old doesn't exist or the old & new are the same then:\n *       - If `removeOldSchemaData` has an entry for the key, delete it since the new schema has the same property\n *       - If type of the key in the new schema is `object`:\n *         - Store the value from the recursive `sanitizeDataForNewSchema` call in `nestedData[key]`\n *       - Otherwise, check for default or const values:\n *         - Get the old and new `default` values from the schema and check:\n *           - If the new `default` value does not match the form value:\n *             - If the old `default` value DOES match the form value, then:\n *               - Replace `removeOldSchemaData[key]` with the new `default`\n *               - Otherwise, if the new schema is `readOnly` then replace `removeOldSchemaData[key]` with undefined\n *         - Get the old and new `const` values from the schema and check:\n *           - If the new `const` value does not match the form value:\n *           - If the old `const` value DOES match the form value, then:\n *             - Replace `removeOldSchemaData[key]` with the new `const`\n *             - Otherwise, replace `removeOldSchemaData[key]` with undefined\n *   - Once all keys have been processed, return an object built as follows:\n *     - `{ ...removeOldSchemaData, ...nestedData, ...pick(data, keysToKeep) }`\n * - If the new and old schema types are array and the `data` is an array then:\n *   - If the type of the old and new schema `items` are a non-array objects:\n *     - Retrieve the schema for any refs within each `oldKeySchema.items` and/or `newKeySchema.items`\n *     - If the `type`s of both items are the same (or the old does not have a type):\n *       - If the type is \"object\", then:\n *         - For each element in the `data` recursively sanitize the data, stopping at `maxItems` if specified\n *       - Otherwise, just return the `data` removing any values after `maxItems` if it is set\n *   - If the type of the old and new schema `items` are booleans of the same value, return `data` as is\n * - Otherwise return `undefined`\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param rootSchema - The root JSON schema of the entire form\n * @param [newSchema] - The new schema for which the data is being sanitized\n * @param [oldSchema] - The old schema from which the data originated\n * @param [data={}] - The form data associated with the schema, defaulting to an empty object when undefined\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The new form data, with all the fields uniquely associated with the old schema set\n *      to `undefined`. Will return `undefined` if the new schema is not an object containing properties.\n */\nexport default function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {\n    // By default, we will clear the form data\n    let newFormData;\n    // If the new schema is of type object and that object contains a list of properties\n    if (has(newSchema, PROPERTIES_KEY)) {\n        // Create an object containing root-level keys in the old schema, setting each key to undefined to remove the data\n        const removeOldSchemaData = {};\n        if (has(oldSchema, PROPERTIES_KEY)) {\n            const properties = get(oldSchema, PROPERTIES_KEY, {});\n            Object.keys(properties).forEach((key) => {\n                if (has(data, key)) {\n                    removeOldSchemaData[key] = undefined;\n                }\n            });\n        }\n        const keys = Object.keys(get(newSchema, PROPERTIES_KEY, {}));\n        // Create a place to store nested data that will be a side-effect of the filter\n        const nestedData = {};\n        keys.forEach((key) => {\n            const formValue = get(data, key);\n            let oldKeyedSchema = get(oldSchema, [PROPERTIES_KEY, key], {});\n            let newKeyedSchema = get(newSchema, [PROPERTIES_KEY, key], {});\n            // Resolve the refs if they exist\n            if (has(oldKeyedSchema, REF_KEY)) {\n                oldKeyedSchema = retrieveSchema(validator, oldKeyedSchema, rootSchema, formValue, experimental_customMergeAllOf);\n            }\n            if (has(newKeyedSchema, REF_KEY)) {\n                newKeyedSchema = retrieveSchema(validator, newKeyedSchema, rootSchema, formValue, experimental_customMergeAllOf);\n            }\n            // Now get types and see if they are the same\n            const oldSchemaTypeForKey = get(oldKeyedSchema, 'type');\n            const newSchemaTypeForKey = get(newKeyedSchema, 'type');\n            // Check if the old option has the same key with the same type\n            if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {\n                if (has(removeOldSchemaData, key)) {\n                    // SIDE-EFFECT: remove the undefined value for a key that has the same type between the old and new schemas\n                    delete removeOldSchemaData[key];\n                }\n                // If it is an object, we'll recurse and store the resulting sanitized data for the key\n                if (newSchemaTypeForKey === 'object' || (newSchemaTypeForKey === 'array' && Array.isArray(formValue))) {\n                    // SIDE-EFFECT: process the new schema type of object recursively to save iterations\n                    const itemData = sanitizeDataForNewSchema(validator, rootSchema, newKeyedSchema, oldKeyedSchema, formValue, experimental_customMergeAllOf);\n                    if (itemData !== undefined || newSchemaTypeForKey === 'array') {\n                        // only put undefined values for the array type and not the object type\n                        nestedData[key] = itemData;\n                    }\n                }\n                else {\n                    // Ok, the non-object types match, let's make sure that a default or a const of a different value is replaced\n                    // with the new default or const. This allows the case where two schemas differ that only by the default/const\n                    // value to be properly selected\n                    const newOptionDefault = get(newKeyedSchema, 'default', NO_VALUE);\n                    const oldOptionDefault = get(oldKeyedSchema, 'default', NO_VALUE);\n                    if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {\n                        if (oldOptionDefault === formValue) {\n                            // If the old default matches the formValue, we'll update the new value to match the new default\n                            removeOldSchemaData[key] = newOptionDefault;\n                        }\n                        else if (get(newKeyedSchema, 'readOnly') === true) {\n                            // If the new schema has the default set to read-only, treat it like a const and remove the value\n                            removeOldSchemaData[key] = undefined;\n                        }\n                    }\n                    const newOptionConst = get(newKeyedSchema, 'const', NO_VALUE);\n                    const oldOptionConst = get(oldKeyedSchema, 'const', NO_VALUE);\n                    if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {\n                        // Since this is a const, if the old value matches, replace the value with the new const otherwise clear it\n                        removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : undefined;\n                    }\n                }\n            }\n        });\n        newFormData = {\n            ...(typeof data == 'string' || Array.isArray(data) ? undefined : data),\n            ...removeOldSchemaData,\n            ...nestedData,\n        };\n        // First apply removing the old schema data, then apply the nested data, then apply the old data keys to keep\n    }\n    else if (get(oldSchema, 'type') === 'array' && get(newSchema, 'type') === 'array' && Array.isArray(data)) {\n        let oldSchemaItems = get(oldSchema, 'items');\n        let newSchemaItems = get(newSchema, 'items');\n        // If any of the array types `items` are arrays (remember arrays are objects) then we'll just drop the data\n        // Eventually, we may want to deal with when either of the `items` are arrays since those tuple validations\n        if (typeof oldSchemaItems === 'object' &&\n            typeof newSchemaItems === 'object' &&\n            !Array.isArray(oldSchemaItems) &&\n            !Array.isArray(newSchemaItems)) {\n            if (has(oldSchemaItems, REF_KEY)) {\n                oldSchemaItems = retrieveSchema(validator, oldSchemaItems, rootSchema, data, experimental_customMergeAllOf);\n            }\n            if (has(newSchemaItems, REF_KEY)) {\n                newSchemaItems = retrieveSchema(validator, newSchemaItems, rootSchema, data, experimental_customMergeAllOf);\n            }\n            // Now get types and see if they are the same\n            const oldSchemaType = get(oldSchemaItems, 'type');\n            const newSchemaType = get(newSchemaItems, 'type');\n            // Check if the old option has the same key with the same type\n            if (!oldSchemaType || oldSchemaType === newSchemaType) {\n                const maxItems = get(newSchema, 'maxItems', -1);\n                if (newSchemaType === 'object') {\n                    newFormData = data.reduce((newValue, aValue) => {\n                        const itemValue = sanitizeDataForNewSchema(validator, rootSchema, newSchemaItems, oldSchemaItems, aValue, experimental_customMergeAllOf);\n                        if (itemValue !== undefined && (maxItems < 0 || newValue.length < maxItems)) {\n                            newValue.push(itemValue);\n                        }\n                        return newValue;\n                    }, []);\n                }\n                else {\n                    newFormData = maxItems > 0 && data.length > maxItems ? data.slice(0, maxItems) : data;\n                }\n            }\n        }\n        else if (typeof oldSchemaItems === 'boolean' &&\n            typeof newSchemaItems === 'boolean' &&\n            oldSchemaItems === newSchemaItems) {\n            // If they are both booleans and have the same value just return the data as is otherwise fall-thru to undefined\n            newFormData = data;\n        }\n        // Also probably want to deal with `prefixItems` as tuples with the latest 2020 draft\n    }\n    return newFormData;\n}\n//# sourceMappingURL=sanitizeDataForNewSchema.js.map","import get from 'lodash-es/get.js';\nimport { ALL_OF_KEY, DEPENDENCIES_KEY, ID_KEY, ITEMS_KEY, PROPERTIES_KEY, REF_KEY } from '../constants.js';\nimport isObject from '../isObject.js';\nimport retrieveSchema from './retrieveSchema.js';\nimport getSchemaType from '../getSchemaType.js';\nimport deepEquals from '../deepEquals.js';\n/** An internal helper that generates an `IdSchema` object for the `schema`, recursively with protection against\n * infinite recursion\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the `IdSchema` is desired\n * @param idPrefix - The prefix to use for the id\n * @param idSeparator - The separator to use for the path segments in the id\n * @param [id] - The base id for the schema\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [_recurseList=[]] - The list of retrieved schemas currently being recursed, used to prevent infinite recursion\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The `IdSchema` object for the `schema`\n */\nfunction toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {\n    if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {\n        const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);\n        const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));\n        if (sameSchemaIndex === -1) {\n            return toIdSchemaInternal(validator, _schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList.concat(_schema), experimental_customMergeAllOf);\n        }\n    }\n    if (ITEMS_KEY in schema && !get(schema, [ITEMS_KEY, REF_KEY])) {\n        return toIdSchemaInternal(validator, get(schema, ITEMS_KEY), idPrefix, idSeparator, id, rootSchema, formData, _recurseList, experimental_customMergeAllOf);\n    }\n    const $id = id || idPrefix;\n    const idSchema = { $id };\n    if (getSchemaType(schema) === 'object' && PROPERTIES_KEY in schema) {\n        for (const name in schema.properties) {\n            const field = get(schema, [PROPERTIES_KEY, name]);\n            const fieldId = idSchema[ID_KEY] + idSeparator + name;\n            idSchema[name] = toIdSchemaInternal(validator, isObject(field) ? field : {}, idPrefix, idSeparator, fieldId, rootSchema, \n            // It's possible that formData is not an object -- this can happen if an\n            // array item has just been added, but not populated with data yet\n            get(formData, [name]), _recurseList, experimental_customMergeAllOf);\n        }\n    }\n    return idSchema;\n}\n/** Generates an `IdSchema` object for the `schema`, recursively\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the `IdSchema` is desired\n * @param [id] - The base id for the schema\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [idPrefix='root'] - The prefix to use for the id\n * @param [idSeparator='_'] - The separator to use for the path segments in the id\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The `IdSchema` object for the `schema`\n */\nexport default function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = 'root', idSeparator = '_', experimental_customMergeAllOf) {\n    return toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, undefined, experimental_customMergeAllOf);\n}\n//# sourceMappingURL=toIdSchema.js.map","import get from 'lodash-es/get.js';\nimport set from 'lodash-es/set.js';\nimport { ADDITIONAL_PROPERTIES_KEY, ALL_OF_KEY, ANY_OF_KEY, DEPENDENCIES_KEY, ITEMS_KEY, NAME_KEY, ONE_OF_KEY, PROPERTIES_KEY, REF_KEY, RJSF_ADDITIONAL_PROPERTIES_FLAG, } from '../constants.js';\nimport getDiscriminatorFieldFromSchema from '../getDiscriminatorFieldFromSchema.js';\nimport getClosestMatchingOption from './getClosestMatchingOption.js';\nimport retrieveSchema from './retrieveSchema.js';\nimport deepEquals from '../deepEquals.js';\n/** An internal helper that generates an `PathSchema` object for the `schema`, recursively with protection against\n * infinite recursion\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the `PathSchema` is desired\n * @param [name=''] - The base name for the schema\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [_recurseList=[]] - The list of retrieved schemas currently being recursed, used to prevent infinite recursion\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The `PathSchema` object for the `schema`\n */\nfunction toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {\n    if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {\n        const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);\n        const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));\n        if (sameSchemaIndex === -1) {\n            return toPathSchemaInternal(validator, _schema, name, rootSchema, formData, _recurseList.concat(_schema), experimental_customMergeAllOf);\n        }\n    }\n    let pathSchema = {\n        [NAME_KEY]: name.replace(/^\\./, ''),\n    };\n    if (ONE_OF_KEY in schema || ANY_OF_KEY in schema) {\n        const xxxOf = ONE_OF_KEY in schema ? schema.oneOf : schema.anyOf;\n        const discriminator = getDiscriminatorFieldFromSchema(schema);\n        const index = getClosestMatchingOption(validator, rootSchema, formData, xxxOf, 0, discriminator, experimental_customMergeAllOf);\n        const _schema = xxxOf[index];\n        pathSchema = {\n            ...pathSchema,\n            ...toPathSchemaInternal(validator, _schema, name, rootSchema, formData, _recurseList, experimental_customMergeAllOf),\n        };\n    }\n    if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {\n        set(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);\n    }\n    if (ITEMS_KEY in schema && Array.isArray(formData)) {\n        const { items: schemaItems, additionalItems: schemaAdditionalItems } = schema;\n        if (Array.isArray(schemaItems)) {\n            formData.forEach((element, i) => {\n                if (schemaItems[i]) {\n                    pathSchema[i] = toPathSchemaInternal(validator, schemaItems[i], `${name}.${i}`, rootSchema, element, _recurseList, experimental_customMergeAllOf);\n                }\n                else if (schemaAdditionalItems) {\n                    pathSchema[i] = toPathSchemaInternal(validator, schemaAdditionalItems, `${name}.${i}`, rootSchema, element, _recurseList, experimental_customMergeAllOf);\n                }\n                else {\n                    console.warn(`Unable to generate path schema for \"${name}.${i}\". No schema defined for it`);\n                }\n            });\n        }\n        else {\n            formData.forEach((element, i) => {\n                pathSchema[i] = toPathSchemaInternal(validator, schemaItems, `${name}.${i}`, rootSchema, element, _recurseList, experimental_customMergeAllOf);\n            });\n        }\n    }\n    else if (PROPERTIES_KEY in schema) {\n        for (const property in schema.properties) {\n            const field = get(schema, [PROPERTIES_KEY, property]);\n            pathSchema[property] = toPathSchemaInternal(validator, field, `${name}.${property}`, rootSchema, \n            // It's possible that formData is not an object -- this can happen if an\n            // array item has just been added, but not populated with data yet\n            get(formData, [property]), _recurseList, experimental_customMergeAllOf);\n        }\n    }\n    return pathSchema;\n}\n/** Generates an `PathSchema` object for the `schema`, recursively\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the `PathSchema` is desired\n * @param [name=''] - The base name for the schema\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [formData] - The current formData, if any, to assist retrieving a schema\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - The `PathSchema` object for the `schema`\n */\nexport default function toPathSchema(validator, schema, name = '', rootSchema, formData, experimental_customMergeAllOf) {\n    return toPathSchemaInternal(validator, schema, name, rootSchema, formData, undefined, experimental_customMergeAllOf);\n}\n//# sourceMappingURL=toPathSchema.js.map","import deepEquals from './deepEquals.js';\nimport { getDefaultFormState, getDisplayLabel, getClosestMatchingOption, getFirstMatchingOption, getMatchingOption, isFilesArray, isMultiSelect, isSelect, mergeValidationData, retrieveSchema, sanitizeDataForNewSchema, toIdSchema, toPathSchema, } from './schema/index.js';\n/** The `SchemaUtils` class provides a wrapper around the publicly exported APIs in the `utils/schema` directory such\n * that one does not have to explicitly pass the `validator`, `rootSchema`, `experimental_defaultFormStateBehavior` or\n * `experimental_customMergeAllOf` to each method. Since these generally do not change across a `Form`, this allows for\n * providing a simplified set of APIs to the `@rjsf/core` components and the various themes as well. This class\n * implements the `SchemaUtilsType` interface.\n */\nclass SchemaUtils {\n    /** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables\n     *\n     * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n     * @param rootSchema - The root schema that will be forwarded to all the APIs\n     * @param experimental_defaultFormStateBehavior - Configuration flags to allow users to override default form state behavior\n     * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n     */\n    constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {\n        this.rootSchema = rootSchema;\n        this.validator = validator;\n        this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;\n        this.experimental_customMergeAllOf = experimental_customMergeAllOf;\n    }\n    /** Returns the `ValidatorType` in the `SchemaUtilsType`\n     *\n     * @returns - The `ValidatorType`\n     */\n    getValidator() {\n        return this.validator;\n    }\n    /** Determines whether either the `validator` and `rootSchema` differ from the ones associated with this instance of\n     * the `SchemaUtilsType`. If either `validator` or `rootSchema` are falsy, then return false to prevent the creation\n     * of a new `SchemaUtilsType` with incomplete properties.\n     *\n     * @param validator - An implementation of the `ValidatorType` interface that will be compared against the current one\n     * @param rootSchema - The root schema that will be compared against the current one\n     * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior\n     * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n     * @returns - True if the `SchemaUtilsType` differs from the given `validator` or `rootSchema`\n     */\n    doesSchemaUtilsDiffer(validator, rootSchema, experimental_defaultFormStateBehavior = {}, experimental_customMergeAllOf) {\n        if (!validator || !rootSchema) {\n            return false;\n        }\n        return (this.validator !== validator ||\n            !deepEquals(this.rootSchema, rootSchema) ||\n            !deepEquals(this.experimental_defaultFormStateBehavior, experimental_defaultFormStateBehavior) ||\n            this.experimental_customMergeAllOf !== experimental_customMergeAllOf);\n    }\n    /** Returns the superset of `formData` that includes the given set updated to include any missing fields that have\n     * computed to have defaults provided in the `schema`.\n     *\n     * @param schema - The schema for which the default state is desired\n     * @param [formData] - The current formData, if any, onto which to provide any missing defaults\n     * @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.\n     *          If \"excludeObjectChildren\", pass `includeUndefinedValues` as false when computing defaults for any nested\n     *          object properties.\n     * @returns - The resulting `formData` with all the defaults provided\n     */\n    getDefaultFormState(schema, formData, includeUndefinedValues = false) {\n        return getDefaultFormState(this.validator, schema, formData, this.rootSchema, includeUndefinedValues, this.experimental_defaultFormStateBehavior, this.experimental_customMergeAllOf);\n    }\n    /** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`\n     * should be displayed in a UI.\n     *\n     * @param schema - The schema for which the display label flag is desired\n     * @param [uiSchema] - The UI schema from which to derive potentially displayable information\n     * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options\n     * @returns - True if the label should be displayed or false if it should not\n     */\n    getDisplayLabel(schema, uiSchema, globalOptions) {\n        return getDisplayLabel(this.validator, schema, uiSchema, this.rootSchema, globalOptions, this.experimental_customMergeAllOf);\n    }\n    /** Determines which of the given `options` provided most closely matches the `formData`.\n     * Returns the index of the option that is valid and is the closest match, or 0 if there is no match.\n     *\n     * The closest match is determined using the number of matching properties, and more heavily favors options with\n     * matching readOnly, default, or const values.\n     *\n     * @param formData - The form data associated with the schema\n     * @param options - The list of options that can be selected from\n     * @param [selectedOption] - The index of the currently selected option, defaulted to -1 if not specified\n     * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n     *          determine which option is selected\n     * @returns - The index of the option that is the closest match to the `formData` or the `selectedOption` if no match\n     */\n    getClosestMatchingOption(formData, options, selectedOption, discriminatorField) {\n        return getClosestMatchingOption(this.validator, this.rootSchema, formData, options, selectedOption, discriminatorField, this.experimental_customMergeAllOf);\n    }\n    /** Given the `formData` and list of `options`, attempts to find the index of the first option that matches the data.\n     * Always returns the first option if there is nothing that matches.\n     *\n     * @param formData - The current formData, if any, used to figure out a match\n     * @param options - The list of options to find a matching options from\n     * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n     *          determine which option is selected\n     * @returns - The firstindex of the matched option or 0 if none is available\n     */\n    getFirstMatchingOption(formData, options, discriminatorField) {\n        return getFirstMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);\n    }\n    /** Given the `formData` and list of `options`, attempts to find the index of the option that best matches the data.\n     * Deprecated, use `getFirstMatchingOption()` instead.\n     *\n     * @param formData - The current formData, if any, onto which to provide any missing defaults\n     * @param options - The list of options to find a matching options from\n     * @param [discriminatorField] - The optional name of the field within the options object whose value is used to\n     *          determine which option is selected\n     * @returns - The index of the matched option or 0 if none is available\n     * @deprecated\n     */\n    getMatchingOption(formData, options, discriminatorField) {\n        return getMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);\n    }\n    /** Checks to see if the `schema` and `uiSchema` combination represents an array of files\n     *\n     * @param schema - The schema for which check for array of files flag is desired\n     * @param [uiSchema] - The UI schema from which to check the widget\n     * @returns - True if schema/uiSchema contains an array of files, otherwise false\n     */\n    isFilesArray(schema, uiSchema) {\n        return isFilesArray(this.validator, schema, uiSchema, this.rootSchema, this.experimental_customMergeAllOf);\n    }\n    /** Checks to see if the `schema` combination represents a multi-select\n     *\n     * @param schema - The schema for which check for a multi-select flag is desired\n     * @returns - True if schema contains a multi-select, otherwise false\n     */\n    isMultiSelect(schema) {\n        return isMultiSelect(this.validator, schema, this.rootSchema, this.experimental_customMergeAllOf);\n    }\n    /** Checks to see if the `schema` combination represents a select\n     *\n     * @param schema - The schema for which check for a select flag is desired\n     * @returns - True if schema contains a select, otherwise false\n     */\n    isSelect(schema) {\n        return isSelect(this.validator, schema, this.rootSchema, this.experimental_customMergeAllOf);\n    }\n    /** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in\n     * the two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling\n     * `getValidator().toErrorList()` onto the `errors` in the `validationData`. If no `additionalErrorSchema` is passed,\n     * then `validationData` is returned.\n     *\n     * @param validationData - The current `ValidationData` into which to merge the additional errors\n     * @param [additionalErrorSchema] - The additional set of errors\n     * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.\n     * @deprecated - Use the `validationDataMerge()` function exported from `@rjsf/utils` instead. This function will be\n     *        removed in the next major release.\n     */\n    mergeValidationData(validationData, additionalErrorSchema) {\n        return mergeValidationData(this.validator, validationData, additionalErrorSchema);\n    }\n    /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and\n     * dependencies resolved and merged into the `schema` given a `rawFormData` that is used to do the potentially\n     * recursive resolution.\n     *\n     * @param schema - The schema for which retrieving a schema is desired\n     * @param [rawFormData] - The current formData, if any, to assist retrieving a schema\n     * @returns - The schema having its conditions, additional properties, references and dependencies resolved\n     */\n    retrieveSchema(schema, rawFormData) {\n        return retrieveSchema(this.validator, schema, this.rootSchema, rawFormData, this.experimental_customMergeAllOf);\n    }\n    /** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the\n     * new schema does not contain any properties, then `undefined` is returned to clear all the form data. Due to the\n     * nature of schemas, this sanitization happens recursively for nested objects of data. Also, any properties in the\n     * old schemas that are non-existent in the new schema are set to `undefined`.\n     *\n     * @param [newSchema] - The new schema for which the data is being sanitized\n     * @param [oldSchema] - The old schema from which the data originated\n     * @param [data={}] - The form data associated with the schema, defaulting to an empty object when undefined\n     * @returns - The new form data, with all the fields uniquely associated with the old schema set\n     *      to `undefined`. Will return `undefined` if the new schema is not an object containing properties.\n     */\n    sanitizeDataForNewSchema(newSchema, oldSchema, data) {\n        return sanitizeDataForNewSchema(this.validator, this.rootSchema, newSchema, oldSchema, data, this.experimental_customMergeAllOf);\n    }\n    /** Generates an `IdSchema` object for the `schema`, recursively\n     *\n     * @param schema - The schema for which the display label flag is desired\n     * @param [id] - The base id for the schema\n     * @param [formData] - The current formData, if any, onto which to provide any missing defaults\n     * @param [idPrefix='root'] - The prefix to use for the id\n     * @param [idSeparator='_'] - The separator to use for the path segments in the id\n     * @returns - The `IdSchema` object for the `schema`\n     */\n    toIdSchema(schema, id, formData, idPrefix = 'root', idSeparator = '_') {\n        return toIdSchema(this.validator, schema, id, this.rootSchema, formData, idPrefix, idSeparator, this.experimental_customMergeAllOf);\n    }\n    /** Generates an `PathSchema` object for the `schema`, recursively\n     *\n     * @param schema - The schema for which the display label flag is desired\n     * @param [name] - The base name for the schema\n     * @param [formData] - The current formData, if any, onto which to provide any missing defaults\n     * @returns - The `PathSchema` object for the `schema`\n     */\n    toPathSchema(schema, name, formData) {\n        return toPathSchema(this.validator, schema, name, this.rootSchema, formData, this.experimental_customMergeAllOf);\n    }\n}\n/** Creates a `SchemaUtilsType` interface that is based around the given `validator` and `rootSchema` parameters. The\n * resulting interface implementation will forward the `validator` and `rootSchema` to all the wrapped APIs.\n *\n * @param validator - an implementation of the `ValidatorType` interface that will be forwarded to all the APIs\n * @param rootSchema - The root schema that will be forwarded to all the APIs\n * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - An implementation of a `SchemaUtilsType` interface\n */\nexport default function createSchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior = {}, experimental_customMergeAllOf) {\n    return new SchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf);\n}\n//# sourceMappingURL=createSchemaUtils.js.map","import { UI_FIELD_KEY, UI_WIDGET_KEY } from '../constants.js';\nimport getSchemaType from '../getSchemaType.js';\nimport getUiOptions from '../getUiOptions.js';\nimport isCustomWidget from '../isCustomWidget.js';\nimport isFilesArray from './isFilesArray.js';\nimport isMultiSelect from './isMultiSelect.js';\n/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`\n * should be displayed in a UI.\n *\n * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary\n * @param schema - The schema for which the display label flag is desired\n * @param [uiSchema={}] - The UI schema from which to derive potentially displayable information\n * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s\n * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options\n * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas\n * @returns - True if the label should be displayed or false if it should not\n */\nexport default function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOptions, experimental_customMergeAllOf) {\n    const uiOptions = getUiOptions(uiSchema, globalOptions);\n    const { label = true } = uiOptions;\n    let displayLabel = !!label;\n    const schemaType = getSchemaType(schema);\n    if (schemaType === 'array') {\n        displayLabel =\n            isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) ||\n                isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) ||\n                isCustomWidget(uiSchema);\n    }\n    if (schemaType === 'object') {\n        displayLabel = false;\n    }\n    if (schemaType === 'boolean' && !uiSchema[UI_WIDGET_KEY]) {\n        displayLabel = false;\n    }\n    if (uiSchema[UI_FIELD_KEY]) {\n        displayLabel = false;\n    }\n    return displayLabel;\n}\n//# sourceMappingURL=getDisplayLabel.js.map","import isEmpty from 'lodash-es/isEmpty.js';\nimport mergeObjects from '../mergeObjects.js';\n/** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in the\n * two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling\n * `validator.toErrorList()` onto the `errors` in the `validationData`. If no `additionalErrorSchema` is passed, then\n * `validationData` is returned.\n *\n * @param validator - The validator used to convert an ErrorSchema to a list of errors\n * @param validationData - The current `ValidationData` into which to merge the additional errors\n * @param [additionalErrorSchema] - The additional set of errors in an `ErrorSchema`\n * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.\n * @deprecated - Use the `validationDataMerge()` function exported from `@rjsf/utils` instead. This function will be\n *        removed in the next major release.\n */\nexport default function mergeValidationData(validator, validationData, additionalErrorSchema) {\n    if (!additionalErrorSchema) {\n        return validationData;\n    }\n    const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;\n    let errors = validator.toErrorList(additionalErrorSchema);\n    let errorSchema = additionalErrorSchema;\n    if (!isEmpty(oldErrorSchema)) {\n        errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);\n        errors = [...oldErrors].concat(errors);\n    }\n    return { errorSchema, errors };\n}\n//# sourceMappingURL=mergeValidationData.js.map","/** Given the `FileReader.readAsDataURL()` based `dataURI` extracts that data into an actual Blob along with the name\n * of that Blob if provided in the URL. If no name is provided, then the name falls back to `unknown`.\n *\n * @param dataURI - The `DataUrl` potentially containing name and raw data to be converted to a Blob\n * @returns - an object containing a Blob and its name, extracted from the URI\n */\nexport default function dataURItoBlob(dataURILike) {\n    var _a;\n    // check if is dataURI\n    if (dataURILike.indexOf('data:') === -1) {\n        throw new Error('File is invalid: URI must be a dataURI');\n    }\n    const dataURI = dataURILike.slice(5);\n    // split the dataURI into media and base64, with the base64 signature\n    const splitted = dataURI.split(';base64,');\n    // if the base64 signature is not present, the latter part will become empty\n    if (splitted.length !== 2) {\n        throw new Error('File is invalid: dataURI must be base64');\n    }\n    // extract the mime type, media parameters including the name, and the base64 string\n    const [media, base64] = splitted;\n    const [mime, ...mediaparams] = media.split(';');\n    const type = mime || '';\n    // extract the name from the parameters\n    const name = decodeURI(\n    // parse the parameters into key-value pairs, find a key, and extract a value\n    // if no key is found, then the name is unknown\n    ((_a = mediaparams.map((param) => param.split('=')).find(([key]) => key === 'name')) === null || _a === void 0 ? void 0 : _a[1]) || 'unknown');\n    // Built the Uint8Array Blob parameter from the base64 string.\n    try {\n        const binary = atob(base64);\n        const array = new Array(binary.length);\n        for (let i = 0; i < binary.length; i++) {\n            array[i] = binary.charCodeAt(i);\n        }\n        // Create the blob object\n        const blob = new window.Blob([new Uint8Array(array)], { type });\n        return { blob, name };\n    }\n    catch (error) {\n        throw new Error('File is invalid: ' + error.message);\n    }\n}\n//# sourceMappingURL=dataURItoBlob.js.map","/** Returns a string representation of the `num` that is padded with leading \"0\"s if necessary\n *\n * @param num - The number to pad\n * @param width - The width of the string at which no lead padding is necessary\n * @returns - The number converted to a string with leading zero padding if the number of digits is less than `width`\n */\nexport default function pad(num, width) {\n    let s = String(num);\n    while (s.length < width) {\n        s = '0' + s;\n    }\n    return s;\n}\n//# sourceMappingURL=pad.js.map","import pad from './pad.js';\n/** Returns a list of options for a date range between `start` and `stop`. If the start date is greater than the end\n * date, then the date range is reversed. If `start` and `stop` are negative numbers (or zero), then they will be\n * treated as relative to the current year.\n *\n * @param start - The starting point of the date range\n * @param stop - The ending point of the date range\n * @returns - The list of EnumOptionsType for the date range between `start` and `stop`\n * @throws - Error when `start` and `stop` aren't both <= 0 or > 0\n */\nexport default function dateRangeOptions(start, stop) {\n    if (start <= 0 && stop <= 0) {\n        start = new Date().getFullYear() + start;\n        stop = new Date().getFullYear() + stop;\n    }\n    else if (start < 0 || stop < 0) {\n        throw new Error(`Both start (${start}) and stop (${stop}) must both be <= 0 or > 0, got one of each`);\n    }\n    if (start > stop) {\n        return dateRangeOptions(stop, start).reverse();\n    }\n    const options = [];\n    for (let i = start; i <= stop; i++) {\n        options.push({ value: i, label: pad(i, 2) });\n    }\n    return options;\n}\n//# sourceMappingURL=dateRangeOptions.js.map","import replaceStringParameters from './replaceStringParameters.js';\n/** Translates a `TranslatableString` value `stringToTranslate` into english. When a `params` array is provided, each\n * value in the array is used to replace any of the replaceable parameters in the `stringToTranslate` using the `%1`,\n * `%2`, etc. replacement specifiers.\n *\n * @param stringToTranslate - The `TranslatableString` value to convert to english\n * @param params - The optional list of replaceable parameter values to substitute into the english string\n * @returns - The `stringToTranslate` itself with any replaceable parameter values substituted\n */\nexport default function englishStringTranslator(stringToTranslate, params) {\n    return replaceStringParameters(stringToTranslate, params);\n}\n//# sourceMappingURL=englishStringTranslator.js.map","/** Potentially substitutes all replaceable parameters with the associated value(s) from the `params` if available. When\n * a `params` array is provided, each value in the array is used to replace any of the replaceable parameters in the\n * `inputString` using the `%1`, `%2`, etc. replacement specifiers.\n *\n * @param inputString - The string which will be potentially updated with replacement parameters\n * @param params - The optional list of replaceable parameter values to substitute into the english string\n * @returns - The updated string with any replacement specifiers replaced\n */\nexport default function replaceStringParameters(inputString, params) {\n    let output = inputString;\n    if (Array.isArray(params)) {\n        const parts = output.split(/(%\\d)/);\n        params.forEach((param, index) => {\n            const partIndex = parts.findIndex((part) => part === `%${index + 1}`);\n            if (partIndex >= 0) {\n                parts[partIndex] = param;\n            }\n        });\n        output = parts.join('');\n    }\n    return output;\n}\n//# sourceMappingURL=replaceStringParameters.js.map","/** Returns the value(s) from `allEnumOptions` at the index(es) provided by `valueIndex`. If `valueIndex` is not an\n * array AND the index is not valid for `allEnumOptions`, `emptyValue` is returned. If `valueIndex` is an array, AND it\n * contains an invalid index, the returned array will have the resulting undefined values filtered out, leaving only\n * valid values or in the worst case, an empty array.\n *\n * @param valueIndex - The index(es) of the value(s) that should be returned\n * @param [allEnumOptions=[]] - The list of all the known enumOptions\n * @param [emptyValue] - The value to return when the non-array `valueIndex` does not refer to a real option\n * @returns - The single or list of values specified by the single or list of indexes if they are valid. Otherwise,\n *        `emptyValue` or an empty list.\n */\nexport default function enumOptionsValueForIndex(valueIndex, allEnumOptions = [], emptyValue) {\n    if (Array.isArray(valueIndex)) {\n        return (valueIndex\n            .map((index) => enumOptionsValueForIndex(index, allEnumOptions))\n            // Since the recursive call returns `emptyValue` when we get a bad option, only filter those out\n            .filter((val) => val !== emptyValue));\n    }\n    // So Number(null) and Number('') both return 0, so use emptyValue for those two values\n    const index = valueIndex === '' || valueIndex === null ? -1 : Number(valueIndex);\n    const option = allEnumOptions[index];\n    return option ? option.value : emptyValue;\n}\n//# sourceMappingURL=enumOptionsValueForIndex.js.map","import enumOptionsValueForIndex from './enumOptionsValueForIndex.js';\nimport deepEquals from './deepEquals.js';\n/** Removes the enum option value at the `valueIndex` from the currently `selected` (list of) value(s). If `selected` is\n * a list, then that list is updated to remove the enum option value with the `valueIndex` in `allEnumOptions`. If it is\n * a single value, then if the enum option value with the `valueIndex` in `allEnumOptions` matches `selected`, undefined\n * is returned, otherwise the `selected` value is returned.\n *\n * @param valueIndex - The index of the value to be removed from the selected list or single value\n * @param selected - The current (list of) selected value(s)\n * @param [allEnumOptions=[]] - The list of all the known enumOptions\n * @returns - The updated `selected` with the enum option value at `valueIndex` in `allEnumOptions` removed from it,\n *        unless `selected` is a single value. In that case, if the `valueIndex` value matches `selected`, returns\n *        undefined, otherwise `selected`.\n */\nexport default function enumOptionsDeselectValue(valueIndex, selected, allEnumOptions = []) {\n    const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);\n    if (Array.isArray(selected)) {\n        return selected.filter((v) => !deepEquals(v, value));\n    }\n    return deepEquals(value, selected) ? undefined : selected;\n}\n//# sourceMappingURL=enumOptionsDeselectValue.js.map","import deepEquals from './deepEquals.js';\n/** Determines whether the given `value` is (one of) the `selected` value(s).\n *\n * @param value - The value being checked to see if it is selected\n * @param selected - The current selected value or list of values\n * @returns - true if the `value` is one of the `selected` ones, false otherwise\n */\nexport default function enumOptionsIsSelected(value, selected) {\n    if (Array.isArray(selected)) {\n        return selected.some((sel) => deepEquals(sel, value));\n    }\n    return deepEquals(selected, value);\n}\n//# sourceMappingURL=enumOptionsIsSelected.js.map","import enumOptionsIsSelected from './enumOptionsIsSelected.js';\n/** Returns the index(es) of the options in `allEnumOptions` whose value(s) match the ones in `value`. All the\n * `enumOptions` are filtered based on whether they are a \"selected\" `value` and the index of each selected one is then\n * stored in an array. If `multiple` is true, that array is returned, otherwise the first element in the array is\n * returned.\n *\n * @param value - The single value or list of values for which indexes are desired\n * @param [allEnumOptions=[]] - The list of all the known enumOptions\n * @param [multiple=false] - Optional flag, if true will return a list of index, otherwise a single one\n * @returns - A single string index for the first `value` in `allEnumOptions`, if not `multiple`. Otherwise, the list\n *        of indexes for (each of) the value(s) in `value`.\n */\nexport default function enumOptionsIndexForValue(value, allEnumOptions = [], multiple = false) {\n    const selectedIndexes = allEnumOptions\n        .map((opt, index) => (enumOptionsIsSelected(opt.value, value) ? String(index) : undefined))\n        .filter((opt) => typeof opt !== 'undefined');\n    if (!multiple) {\n        return selectedIndexes[0];\n    }\n    return selectedIndexes;\n}\n//# sourceMappingURL=enumOptionsIndexForValue.js.map","import enumOptionsValueForIndex from './enumOptionsValueForIndex.js';\nimport isNil from 'lodash-es/isNil.js';\n/** Add the enum option value at the `valueIndex` to the list of `selected` values in the proper order as defined by\n * `allEnumOptions`\n *\n * @param valueIndex - The index of the value that should be selected\n * @param selected - The current list of selected values\n * @param [allEnumOptions=[]] - The list of all the known enumOptions\n * @returns - The updated list of selected enum values with enum value at the `valueIndex` added to it\n */\nexport default function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {\n    const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);\n    if (!isNil(value)) {\n        const index = allEnumOptions.findIndex((opt) => value === opt.value);\n        const all = allEnumOptions.map(({ value: val }) => val);\n        const updated = selected.slice(0, index).concat(value, selected.slice(index));\n        // As inserting values at predefined index positions doesn't work with empty\n        // arrays, we need to reorder the updated selection to match the initial order\n        return updated.sort((a, b) => Number(all.indexOf(a) > all.indexOf(b)));\n    }\n    return selected;\n}\n//# sourceMappingURL=enumOptionsSelectValue.js.map","/** Given date & time information with optional yearRange & format, returns props for DateElement\n *\n * @param date - Object containing date with optional time information\n * @param time - Determines whether to include time or not\n * @param [yearRange=[1900, new Date().getFullYear() + 2]] - Controls the list of years to be displayed\n * @param [format='YMD'] - Controls the order in which day, month and year input element will be displayed\n * @returns Array of props for DateElement\n */\nexport default function getDateElementProps(date, time, yearRange = [1900, new Date().getFullYear() + 2], format = 'YMD') {\n    const { day, month, year, hour, minute, second } = date;\n    const dayObj = { type: 'day', range: [1, 31], value: day };\n    const monthObj = { type: 'month', range: [1, 12], value: month };\n    const yearObj = { type: 'year', range: yearRange, value: year };\n    const dateElementProp = [];\n    switch (format) {\n        case 'MDY':\n            dateElementProp.push(monthObj, dayObj, yearObj);\n            break;\n        case 'DMY':\n            dateElementProp.push(dayObj, monthObj, yearObj);\n            break;\n        case 'YMD':\n        default:\n            dateElementProp.push(yearObj, monthObj, dayObj);\n    }\n    if (time) {\n        dateElementProp.push({ type: 'hour', range: [0, 23], value: hour }, { type: 'minute', range: [0, 59], value: minute }, { type: 'second', range: [0, 59], value: second });\n    }\n    return dateElementProp;\n}\n//# sourceMappingURL=getDateElementProps.js.map","/** Extracts the range spec information `{ step?: number, min?: number, max?: number }` that can be spread onto an HTML\n * input from the range analog in the schema `{ multipleOf?: number, minimum?: number, maximum?: number }`.\n *\n * @param schema - The schema from which to extract the range spec\n * @returns - A range specification from the schema\n */\nexport default function rangeSpec(schema) {\n    const spec = {};\n    if (schema.multipleOf) {\n        spec.step = schema.multipleOf;\n    }\n    if (schema.minimum || schema.minimum === 0) {\n        spec.min = schema.minimum;\n    }\n    if (schema.maximum || schema.maximum === 0) {\n        spec.max = schema.maximum;\n    }\n    return spec;\n}\n//# sourceMappingURL=rangeSpec.js.map","import rangeSpec from './rangeSpec.js';\n/** Using the `schema`, `defaultType` and `options`, extract out the props for the <input> element that make sense.\n *\n * @param schema - The schema for the field provided by the widget\n * @param [defaultType] - The default type, if any, for the field provided by the widget\n * @param [options={}] - The UI Options for the field provided by the widget\n * @param [autoDefaultStepAny=true] - Determines whether to auto-default step=any when the type is number and no step\n * @returns - The extracted `InputPropsType` object\n */\nexport default function getInputProps(schema, defaultType, options = {}, autoDefaultStepAny = true) {\n    const inputProps = {\n        type: defaultType || 'text',\n        ...rangeSpec(schema),\n    };\n    // If options.inputType is set use that as the input type\n    if (options.inputType) {\n        inputProps.type = options.inputType;\n    }\n    else if (!defaultType) {\n        // If the schema is of type number or integer, set the input type to number\n        if (schema.type === 'number') {\n            inputProps.type = 'number';\n            // Only add step if one isn't already defined and we are auto-defaulting the \"any\" step\n            if (autoDefaultStepAny && inputProps.step === undefined) {\n                // Setting step to 'any' fixes a bug in Safari where decimals are not\n                // allowed in number inputs\n                inputProps.step = 'any';\n            }\n        }\n        else if (schema.type === 'integer') {\n            inputProps.type = 'number';\n            // Only add step if one isn't already defined\n            if (inputProps.step === undefined) {\n                // Since this is integer, you always want to step up or down in multiples of 1\n                inputProps.step = 1;\n            }\n        }\n    }\n    if (options.autocomplete) {\n        inputProps.autoComplete = options.autocomplete;\n    }\n    if (options.accept) {\n        inputProps.accept = options.accept;\n    }\n    return inputProps;\n}\n//# sourceMappingURL=getInputProps.js.map","import { SUBMIT_BTN_OPTIONS_KEY } from './constants.js';\nimport getUiOptions from './getUiOptions.js';\n/** The default submit button options, exported for testing purposes\n */\nexport const DEFAULT_OPTIONS = {\n    props: {\n        disabled: false,\n    },\n    submitText: 'Submit',\n    norender: false,\n};\n/** Extracts any `ui:submitButtonOptions` from the `uiSchema` and merges them onto the `DEFAULT_OPTIONS`\n *\n * @param [uiSchema={}] - the UI Schema from which to extract submit button props\n * @returns - The merging of the `DEFAULT_OPTIONS` with any custom ones\n */\nexport default function getSubmitButtonOptions(uiSchema = {}) {\n    const uiOptions = getUiOptions(uiSchema);\n    if (uiOptions && uiOptions[SUBMIT_BTN_OPTIONS_KEY]) {\n        const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];\n        return { ...DEFAULT_OPTIONS, ...options };\n    }\n    return DEFAULT_OPTIONS;\n}\n//# sourceMappingURL=getSubmitButtonOptions.js.map","/** Returns the template with the given `name` from either the `uiSchema` if it is defined or from the `registry`\n * otherwise. NOTE, since `ButtonTemplates` are not overridden in `uiSchema` only those in the `registry` are returned.\n *\n * @param name - The name of the template to fetch, restricted to the keys of `TemplatesType`\n * @param registry - The `Registry` from which to read the template\n * @param [uiOptions={}] - The `UIOptionsType` from which to read an alternate template\n * @returns - The template from either the `uiSchema` or `registry` for the `name`\n */\nexport default function getTemplate(name, registry, uiOptions = {}) {\n    const { templates } = registry;\n    if (name === 'ButtonTemplates') {\n        return templates[name];\n    }\n    return (\n    // Evaluating uiOptions[name] results in TS2590: Expression produces a union type that is too complex to represent\n    // To avoid that, we cast uiOptions to `any` before accessing the name field\n    uiOptions[name] || templates[name]);\n}\n//# sourceMappingURL=getTemplate.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement } from 'react';\nimport ReactIs from 'react-is';\nimport get from 'lodash-es/get.js';\nimport set from 'lodash-es/set.js';\nimport getSchemaType from './getSchemaType.js';\n/** The map of schema types to widget type to widget name\n */\nconst widgetMap = {\n    boolean: {\n        checkbox: 'CheckboxWidget',\n        radio: 'RadioWidget',\n        select: 'SelectWidget',\n        hidden: 'HiddenWidget',\n    },\n    string: {\n        text: 'TextWidget',\n        password: 'PasswordWidget',\n        email: 'EmailWidget',\n        hostname: 'TextWidget',\n        ipv4: 'TextWidget',\n        ipv6: 'TextWidget',\n        uri: 'URLWidget',\n        'data-url': 'FileWidget',\n        radio: 'RadioWidget',\n        select: 'SelectWidget',\n        textarea: 'TextareaWidget',\n        hidden: 'HiddenWidget',\n        date: 'DateWidget',\n        datetime: 'DateTimeWidget',\n        'date-time': 'DateTimeWidget',\n        'alt-date': 'AltDateWidget',\n        'alt-datetime': 'AltDateTimeWidget',\n        time: 'TimeWidget',\n        color: 'ColorWidget',\n        file: 'FileWidget',\n    },\n    number: {\n        text: 'TextWidget',\n        select: 'SelectWidget',\n        updown: 'UpDownWidget',\n        range: 'RangeWidget',\n        radio: 'RadioWidget',\n        hidden: 'HiddenWidget',\n    },\n    integer: {\n        text: 'TextWidget',\n        select: 'SelectWidget',\n        updown: 'UpDownWidget',\n        range: 'RangeWidget',\n        radio: 'RadioWidget',\n        hidden: 'HiddenWidget',\n    },\n    array: {\n        select: 'SelectWidget',\n        checkboxes: 'CheckboxesWidget',\n        files: 'FileWidget',\n        hidden: 'HiddenWidget',\n    },\n};\n/** Wraps the given widget with stateless functional component that will merge any `defaultProps.options` with the\n * `options` that are provided in the props. It will add the wrapper component as a `MergedWidget` property onto the\n * `Widget` so that future attempts to wrap `AWidget` will return the already existing wrapper.\n *\n * @param AWidget - A widget that will be wrapped or one that is already wrapped\n * @returns - The wrapper widget\n */\nfunction mergeWidgetOptions(AWidget) {\n    let MergedWidget = get(AWidget, 'MergedWidget');\n    // cache return value as property of widget for proper react reconciliation\n    if (!MergedWidget) {\n        const defaultOptions = (AWidget.defaultProps && AWidget.defaultProps.options) || {};\n        MergedWidget = ({ options, ...props }) => {\n            return _jsx(AWidget, { options: { ...defaultOptions, ...options }, ...props });\n        };\n        set(AWidget, 'MergedWidget', MergedWidget);\n    }\n    return MergedWidget;\n}\n/** Given a schema representing a field to render and either the name or actual `Widget` implementation, returns the\n * React component that is used to render the widget. If the `widget` is already a React component, then it is wrapped\n * with a `MergedWidget`. Otherwise an attempt is made to look up the widget inside of the `registeredWidgets` map based\n * on the schema type and `widget` name. If no widget component can be found an `Error` is thrown.\n *\n * @param schema - The schema for the field\n * @param [widget] - Either the name of the widget OR a `Widget` implementation to use\n * @param [registeredWidgets={}] - A registry of widget name to `Widget` implementation\n * @returns - The `Widget` component to use\n * @throws - An error if there is no `Widget` component that can be returned\n */\nexport default function getWidget(schema, widget, registeredWidgets = {}) {\n    const type = getSchemaType(schema);\n    if (typeof widget === 'function' ||\n        (widget && ReactIs.isForwardRef(createElement(widget))) ||\n        ReactIs.isMemo(widget)) {\n        return mergeWidgetOptions(widget);\n    }\n    if (typeof widget !== 'string') {\n        throw new Error(`Unsupported widget definition: ${typeof widget}`);\n    }\n    if (widget in registeredWidgets) {\n        const registeredWidget = registeredWidgets[widget];\n        return getWidget(schema, registeredWidget, registeredWidgets);\n    }\n    if (typeof type === 'string') {\n        if (!(type in widgetMap)) {\n            throw new Error(`No widget for type '${type}'`);\n        }\n        if (widget in widgetMap[type]) {\n            const registeredWidget = registeredWidgets[widgetMap[type][widget]];\n            return getWidget(schema, registeredWidget, registeredWidgets);\n        }\n    }\n    throw new Error(`No widget '${widget}' for type '${type}'`);\n}\n//# sourceMappingURL=getWidget.js.map","import getWidget from './getWidget.js';\n/** Detects whether the `widget` exists for the `schema` with the associated `registryWidgets` and returns true if it\n * does, or false if it doesn't.\n *\n * @param schema - The schema for the field\n * @param widget - Either the name of the widget OR a `Widget` implementation to use\n * @param [registeredWidgets={}] - A registry of widget name to `Widget` implementation\n * @returns - True if the widget exists, false otherwise\n */\nexport default function hasWidget(schema, widget, registeredWidgets = {}) {\n    try {\n        getWidget(schema, widget, registeredWidgets);\n        return true;\n    }\n    catch (e) {\n        const err = e;\n        if (err.message && (err.message.startsWith('No widget') || err.message.startsWith('Unsupported widget'))) {\n            return false;\n        }\n        throw e;\n    }\n}\n//# sourceMappingURL=hasWidget.js.map","import isString from 'lodash-es/isString.js';\nimport { ID_KEY } from './constants.js';\n/** Generates a consistent `id` pattern for a given `id` and a `suffix`\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @param suffix - The suffix to append to the id\n */\nfunction idGenerator(id, suffix) {\n    const theId = isString(id) ? id : id[ID_KEY];\n    return `${theId}__${suffix}`;\n}\n/** Return a consistent `id` for the field description element\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @returns - The consistent id for the field description element from the given `id`\n */\nexport function descriptionId(id) {\n    return idGenerator(id, 'description');\n}\n/** Return a consistent `id` for the field error element\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @returns - The consistent id for the field error element from the given `id`\n */\nexport function errorId(id) {\n    return idGenerator(id, 'error');\n}\n/** Return a consistent `id` for the field examples element\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @returns - The consistent id for the field examples element from the given `id`\n */\nexport function examplesId(id) {\n    return idGenerator(id, 'examples');\n}\n/** Return a consistent `id` for the field help element\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @returns - The consistent id for the field help element from the given `id`\n */\nexport function helpId(id) {\n    return idGenerator(id, 'help');\n}\n/** Return a consistent `id` for the field title element\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @returns - The consistent id for the field title element from the given `id`\n */\nexport function titleId(id) {\n    return idGenerator(id, 'title');\n}\n/** Return a list of element ids that contain additional information about the field that can be used to as the aria\n * description of the field. This is correctly omitting `titleId` which would be \"labeling\" rather than \"describing\" the\n * element.\n *\n * @param id - Either simple string id or an IdSchema from which to extract it\n * @param [includeExamples=false] - Optional flag, if true, will add the `examplesId` into the list\n * @returns - The string containing the list of ids for use in an `aria-describedBy` attribute\n */\nexport function ariaDescribedByIds(id, includeExamples = false) {\n    const examples = includeExamples ? ` ${examplesId(id)}` : '';\n    return `${errorId(id)} ${descriptionId(id)} ${helpId(id)}${examples}`;\n}\n/** Return a consistent `id` for the `optionIndex`s of a `Radio` or `Checkboxes` widget\n *\n * @param id - The id of the parent component for the option\n * @param optionIndex - The index of the option for which the id is desired\n * @returns - An id for the option index based on the parent `id`\n */\nexport function optionId(id, optionIndex) {\n    return `${id}-${optionIndex}`;\n}\n//# sourceMappingURL=idGenerators.js.map","export default function labelValue(label, hideLabel, fallback) {\n    return hideLabel ? fallback : label;\n}\n//# sourceMappingURL=labelValue.js.map","/** Converts a local Date string into a UTC date string\n *\n * @param dateString - The string representation of a date as accepted by the `Date()` constructor\n * @returns - A UTC date string if `dateString` is truthy, otherwise undefined\n */\nexport default function localToUTC(dateString) {\n    return dateString ? new Date(dateString).toJSON() : undefined;\n}\n//# sourceMappingURL=localToUTC.js.map","/** Given a list of `properties` and an `order` list, returns a list that contains the `properties` ordered correctly.\n * If `order` is not an array, then the untouched `properties` list is returned. Otherwise `properties` is ordered per\n * the `order` list. If `order` contains a '*' then any `properties` that are not mentioned explicity in `order` will be\n * places in the location of the `*`.\n *\n * @param properties - The list of property keys to be ordered\n * @param order - An array of property keys to be ordered first, with an optional '*' property\n * @returns - A list with the `properties` ordered\n * @throws - Error when the properties cannot be ordered correctly\n */\nexport default function orderProperties(properties, order) {\n    if (!Array.isArray(order)) {\n        return properties;\n    }\n    const arrayToHash = (arr) => arr.reduce((prev, curr) => {\n        prev[curr] = true;\n        return prev;\n    }, {});\n    const errorPropList = (arr) => arr.length > 1 ? `properties '${arr.join(\"', '\")}'` : `property '${arr[0]}'`;\n    const propertyHash = arrayToHash(properties);\n    const orderFiltered = order.filter((prop) => prop === '*' || propertyHash[prop]);\n    const orderHash = arrayToHash(orderFiltered);\n    const rest = properties.filter((prop) => !orderHash[prop]);\n    const restIndex = orderFiltered.indexOf('*');\n    if (restIndex === -1) {\n        if (rest.length) {\n            throw new Error(`uiSchema order list does not contain ${errorPropList(rest)}`);\n        }\n        return orderFiltered;\n    }\n    if (restIndex !== orderFiltered.lastIndexOf('*')) {\n        throw new Error('uiSchema order list contains more than one wildcard item');\n    }\n    const complete = [...orderFiltered];\n    complete.splice(restIndex, 1, ...rest);\n    return complete;\n}\n//# sourceMappingURL=orderProperties.js.map","/** Parses the `dateString` into a `DateObject`, including the time information when `includeTime` is true\n *\n * @param dateString - The date string to parse into a DateObject\n * @param [includeTime=true] - Optional flag, if false, will not include the time data into the object\n * @returns - The date string converted to a `DateObject`\n * @throws - Error when the date cannot be parsed from the string\n */\nexport default function parseDateString(dateString, includeTime = true) {\n    if (!dateString) {\n        return {\n            year: -1,\n            month: -1,\n            day: -1,\n            hour: includeTime ? -1 : 0,\n            minute: includeTime ? -1 : 0,\n            second: includeTime ? -1 : 0,\n        };\n    }\n    const date = new Date(dateString);\n    if (Number.isNaN(date.getTime())) {\n        throw new Error('Unable to parse date ' + dateString);\n    }\n    return {\n        year: date.getUTCFullYear(),\n        month: date.getUTCMonth() + 1,\n        day: date.getUTCDate(),\n        hour: includeTime ? date.getUTCHours() : 0,\n        minute: includeTime ? date.getUTCMinutes() : 0,\n        second: includeTime ? date.getUTCSeconds() : 0,\n    };\n}\n//# sourceMappingURL=parseDateString.js.map","/** Check to see if a `schema` specifies that a value must be true. This happens when:\n * - `schema.const` is truthy\n * - `schema.enum` == `[true]`\n * - `schema.anyOf` or `schema.oneOf` has a single value which recursively returns true\n * - `schema.allOf` has at least one value which recursively returns true\n *\n * @param schema - The schema to check\n * @returns - True if the schema specifies a value that must be true, false otherwise\n */\nexport default function schemaRequiresTrueValue(schema) {\n    // Check if const is a truthy value\n    if (schema.const) {\n        return true;\n    }\n    // Check if an enum has a single value of true\n    if (schema.enum && schema.enum.length === 1 && schema.enum[0] === true) {\n        return true;\n    }\n    // If anyOf has a single value, evaluate the subschema\n    if (schema.anyOf && schema.anyOf.length === 1) {\n        return schemaRequiresTrueValue(schema.anyOf[0]);\n    }\n    // If oneOf has a single value, evaluate the subschema\n    if (schema.oneOf && schema.oneOf.length === 1) {\n        return schemaRequiresTrueValue(schema.oneOf[0]);\n    }\n    // Evaluate each subschema in allOf, to see if one of them requires a true value\n    if (schema.allOf) {\n        const schemaSome = (subSchema) => schemaRequiresTrueValue(subSchema);\n        return schema.allOf.some(schemaSome);\n    }\n    return false;\n}\n//# sourceMappingURL=schemaRequiresTrueValue.js.map","import deepEquals from './deepEquals.js';\n/** Determines whether the given `component` should be rerendered by comparing its current set of props and state\n * against the next set. If either of those two sets are not the same, then the component should be rerendered.\n *\n * @param component - A React component being checked\n * @param nextProps - The next set of props against which to check\n * @param nextState - The next set of state against which to check\n * @returns - True if the component should be re-rendered, false otherwise\n */\nexport default function shouldRender(component, nextProps, nextState) {\n    const { props, state } = component;\n    return !deepEquals(props, nextProps) || !deepEquals(state, nextState);\n}\n//# sourceMappingURL=shouldRender.js.map","/** Returns a UTC date string for the given `dateObject`. If `time` is false, then the time portion of the string is\n * removed.\n *\n * @param dateObject - The `DateObject` to convert to a date string\n * @param [time=true] - Optional flag used to remove the time portion of the date string if false\n * @returns - The UTC date string\n */\nexport default function toDateString(dateObject, time = true) {\n    const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;\n    const utcTime = Date.UTC(year, month - 1, day, hour, minute, second);\n    const datetime = new Date(utcTime).toJSON();\n    return time ? datetime : datetime.slice(0, 10);\n}\n//# sourceMappingURL=toDateString.js.map","import isPlainObject from 'lodash-es/isPlainObject.js';\nimport { ERRORS_KEY } from './constants.js';\n/** Converts an `errorSchema` into a list of `RJSFValidationErrors`\n *\n * @param errorSchema - The `ErrorSchema` instance to convert\n * @param [fieldPath=[]] - The current field path, defaults to [] if not specified\n * @returns - The list of `RJSFValidationErrors` extracted from the `errorSchema`\n */\nexport default function toErrorList(errorSchema, fieldPath = []) {\n    if (!errorSchema) {\n        return [];\n    }\n    let errorList = [];\n    if (ERRORS_KEY in errorSchema) {\n        errorList = errorList.concat(errorSchema[ERRORS_KEY].map((message) => {\n            const property = `.${fieldPath.join('.')}`;\n            return {\n                property,\n                message,\n                stack: `${property} ${message}`,\n            };\n        }));\n    }\n    return Object.keys(errorSchema).reduce((acc, key) => {\n        if (key !== ERRORS_KEY) {\n            const childSchema = errorSchema[key];\n            if (isPlainObject(childSchema)) {\n                acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));\n            }\n        }\n        return acc;\n    }, errorList);\n}\n//# sourceMappingURL=toErrorList.js.map","import cloneDeep from 'lodash-es/cloneDeep.js';\nimport get from 'lodash-es/get.js';\nimport set from 'lodash-es/set.js';\nimport setWith from 'lodash-es/setWith.js';\nimport { ERRORS_KEY } from './constants.js';\n/** The `ErrorSchemaBuilder<T>` is used to build an `ErrorSchema<T>` since the definition of the `ErrorSchema` type is\n * designed for reading information rather than writing it. Use this class to add, replace or clear errors in an error\n * schema by using either dotted path or an array of path names. Once you are done building the `ErrorSchema`, you can\n * get the result and/or reset all the errors back to an initial set and start again.\n */\nexport default class ErrorSchemaBuilder {\n    /** Construct an `ErrorSchemaBuilder` with an optional initial set of errors in an `ErrorSchema`.\n     *\n     * @param [initialSchema] - The optional set of initial errors, that will be cloned into the class\n     */\n    constructor(initialSchema) {\n        /** The error schema being built\n         *\n         * @private\n         */\n        this.errorSchema = {};\n        this.resetAllErrors(initialSchema);\n    }\n    /** Returns the `ErrorSchema` that has been updated by the methods of the `ErrorSchemaBuilder`\n     */\n    get ErrorSchema() {\n        return this.errorSchema;\n    }\n    /** Will get an existing `ErrorSchema` at the specified `pathOfError` or create and return one.\n     *\n     * @param [pathOfError] - The optional path into the `ErrorSchema` at which to add the error(s)\n     * @returns - The error block for the given `pathOfError` or the root if not provided\n     * @private\n     */\n    getOrCreateErrorBlock(pathOfError) {\n        const hasPath = (Array.isArray(pathOfError) && pathOfError.length > 0) || typeof pathOfError === 'string';\n        let errorBlock = hasPath ? get(this.errorSchema, pathOfError) : this.errorSchema;\n        if (!errorBlock && pathOfError) {\n            errorBlock = {};\n            setWith(this.errorSchema, pathOfError, errorBlock, Object);\n        }\n        return errorBlock;\n    }\n    /** Resets all errors in the `ErrorSchemaBuilder` back to the `initialSchema` if provided, otherwise an empty set.\n     *\n     * @param [initialSchema] - The optional set of initial errors, that will be cloned into the class\n     * @returns - The `ErrorSchemaBuilder` object for chaining purposes\n     */\n    resetAllErrors(initialSchema) {\n        this.errorSchema = initialSchema ? cloneDeep(initialSchema) : {};\n        return this;\n    }\n    /** Adds the `errorOrList` to the list of errors in the `ErrorSchema` at either the root level or the location within\n     * the schema described by the `pathOfError`. For more information about how to specify the path see the\n     * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).\n     *\n     * @param errorOrList - The error or list of errors to add into the `ErrorSchema`\n     * @param [pathOfError] - The optional path into the `ErrorSchema` at which to add the error(s)\n     * @returns - The `ErrorSchemaBuilder` object for chaining purposes\n     */\n    addErrors(errorOrList, pathOfError) {\n        const errorBlock = this.getOrCreateErrorBlock(pathOfError);\n        let errorsList = get(errorBlock, ERRORS_KEY);\n        if (!Array.isArray(errorsList)) {\n            errorsList = [];\n            errorBlock[ERRORS_KEY] = errorsList;\n        }\n        if (Array.isArray(errorOrList)) {\n            set(errorBlock, ERRORS_KEY, [...new Set([...errorsList, ...errorOrList])]);\n        }\n        else {\n            set(errorBlock, ERRORS_KEY, [...new Set([...errorsList, errorOrList])]);\n        }\n        return this;\n    }\n    /** Sets/replaces the `errorOrList` as the error(s) in the `ErrorSchema` at either the root level or the location\n     * within the schema described by the `pathOfError`. For more information about how to specify the path see the\n     * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).\n     *\n     * @param errorOrList - The error or list of errors to set into the `ErrorSchema`\n     * @param [pathOfError] - The optional path into the `ErrorSchema` at which to set the error(s)\n     * @returns - The `ErrorSchemaBuilder` object for chaining purposes\n     */\n    setErrors(errorOrList, pathOfError) {\n        const errorBlock = this.getOrCreateErrorBlock(pathOfError);\n        // Effectively clone the array being given to prevent accidental outside manipulation of the given list\n        const listToAdd = Array.isArray(errorOrList) ? [...new Set([...errorOrList])] : [errorOrList];\n        set(errorBlock, ERRORS_KEY, listToAdd);\n        return this;\n    }\n    /** Clears the error(s) in the `ErrorSchema` at either the root level or the location within the schema described by\n     * the `pathOfError`. For more information about how to specify the path see the\n     * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).\n     *\n     * @param [pathOfError] - The optional path into the `ErrorSchema` at which to clear the error(s)\n     * @returns - The `ErrorSchemaBuilder` object for chaining purposes\n     */\n    clearErrors(pathOfError) {\n        const errorBlock = this.getOrCreateErrorBlock(pathOfError);\n        set(errorBlock, ERRORS_KEY, []);\n        return this;\n    }\n}\n//# sourceMappingURL=ErrorSchemaBuilder.js.map","import baseSet from './_baseSet.js';\n\n/**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction setWith(object, path, value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return object == null ? object : baseSet(object, path, value, customizer);\n}\n\nexport default setWith;\n","import toPath from 'lodash-es/toPath.js';\nimport ErrorSchemaBuilder from './ErrorSchemaBuilder.js';\n/** Transforms a rjsf validation errors list:\n * [\n *   {property: '.level1.level2[2].level3', message: 'err a'},\n *   {property: '.level1.level2[2].level3', message: 'err b'},\n *   {property: '.level1.level2[4].level3', message: 'err b'},\n * ]\n * Into an error tree:\n * {\n *   level1: {\n *     level2: {\n *       2: {level3: {errors: ['err a', 'err b']}},\n *       4: {level3: {errors: ['err b']}},\n *     }\n *   }\n * };\n *\n * @param errors - The list of RJSFValidationError objects\n * @returns - The `ErrorSchema` built from the list of `RJSFValidationErrors`\n */\nexport default function toErrorSchema(errors) {\n    const builder = new ErrorSchemaBuilder();\n    if (errors.length) {\n        errors.forEach((error) => {\n            const { property, message } = error;\n            // When the property is the root element, just use an empty array for the path\n            const path = property === '.' ? [] : toPath(property);\n            // If the property is at the root (.level1) then toPath creates\n            // an empty array element at the first index. Remove it.\n            if (path.length > 0 && path[0] === '') {\n                path.splice(0, 1);\n            }\n            if (message) {\n                builder.addErrors(message, path);\n            }\n        });\n    }\n    return builder.ErrorSchema;\n}\n//# sourceMappingURL=toErrorSchema.js.map","import isPlainObject from 'lodash-es/isPlainObject.js';\n/** Unwraps the `errorHandler` structure into the associated `ErrorSchema`, stripping the `addError()` functions from it\n *\n * @param errorHandler - The `FormValidation` error handling structure\n * @returns - The `ErrorSchema` resulting from the stripping of the `addError()` function\n */\nexport default function unwrapErrorHandler(errorHandler) {\n    return Object.keys(errorHandler).reduce((acc, key) => {\n        if (key === 'addError') {\n            return acc;\n        }\n        else {\n            const childSchema = errorHandler[key];\n            if (isPlainObject(childSchema)) {\n                return {\n                    ...acc,\n                    [key]: unwrapErrorHandler(childSchema),\n                };\n            }\n            return { ...acc, [key]: childSchema };\n        }\n    }, {});\n}\n//# sourceMappingURL=unwrapErrorHandler.js.map","import pad from './pad.js';\n/** Converts a UTC date string into a local Date format\n *\n * @param jsonDate - A UTC date string\n * @returns - An empty string when `jsonDate` is falsey, otherwise a date string in local format\n */\nexport default function utcToLocal(jsonDate) {\n    if (!jsonDate) {\n        return '';\n    }\n    // required format of `'yyyy-MM-ddThh:mm' followed by optional ':ss' or ':ss.SSS'\n    // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type%3Ddatetime-local)\n    // > should be a _valid local date and time string_ (not GMT)\n    // Note - date constructor passed local ISO-8601 does not correctly\n    // change time to UTC in node pre-8\n    const date = new Date(jsonDate);\n    const yyyy = pad(date.getFullYear(), 4);\n    const MM = pad(date.getMonth() + 1, 2);\n    const dd = pad(date.getDate(), 2);\n    const hh = pad(date.getHours(), 2);\n    const mm = pad(date.getMinutes(), 2);\n    const ss = pad(date.getSeconds(), 2);\n    const SSS = pad(date.getMilliseconds(), 3);\n    return `${yyyy}-${MM}-${dd}T${hh}:${mm}:${ss}.${SSS}`;\n}\n//# sourceMappingURL=utcToLocal.js.map","import isEmpty from 'lodash-es/isEmpty.js';\nimport mergeObjects from './mergeObjects.js';\nimport toErrorList from './toErrorList.js';\n/** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in the\n * two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling\n * `toErrorList()` on the `errors` in the `validationData`. If no `additionalErrorSchema` is passed, then\n * `validationData` is returned.\n *\n * @param validationData - The current `ValidationData` into which to merge the additional errors\n * @param [additionalErrorSchema] - The optional additional set of errors in an `ErrorSchema`\n * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.\n */\nexport default function validationDataMerge(validationData, additionalErrorSchema) {\n    if (!additionalErrorSchema) {\n        return validationData;\n    }\n    const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;\n    let errors = toErrorList(additionalErrorSchema);\n    let errorSchema = additionalErrorSchema;\n    if (!isEmpty(oldErrorSchema)) {\n        errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);\n        errors = [...oldErrors].concat(errors);\n    }\n    return { errorSchema, errors };\n}\n//# sourceMappingURL=validationDataMerge.js.map","import { REF_KEY, ROOT_SCHEMA_PREFIX } from './constants.js';\nimport isObject from 'lodash-es/isObject.js';\n/** Takes a `node` object and transforms any contained `$ref` node variables with a prefix, recursively calling\n * `withIdRefPrefix` for any other elements.\n *\n * @param node - The object node to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it\n */\nfunction withIdRefPrefixObject(node) {\n    for (const key in node) {\n        const realObj = node;\n        const value = realObj[key];\n        if (key === REF_KEY && typeof value === 'string' && value.startsWith('#')) {\n            realObj[key] = ROOT_SCHEMA_PREFIX + value;\n        }\n        else {\n            realObj[key] = withIdRefPrefix(value);\n        }\n    }\n    return node;\n}\n/** Takes a `node` object list and transforms any contained `$ref` node variables with a prefix, recursively calling\n * `withIdRefPrefix` for any other elements.\n *\n * @param node - The list of object nodes to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it\n */\nfunction withIdRefPrefixArray(node) {\n    for (let i = 0; i < node.length; i++) {\n        node[i] = withIdRefPrefix(node[i]);\n    }\n    return node;\n}\n/** Recursively prefixes all `$ref`s in a schema with the value of the `ROOT_SCHEMA_PREFIX` constant.\n * This is used in isValid to make references to the rootSchema\n *\n * @param schemaNode - The object node to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it\n * @returns - A copy of the `schemaNode` with updated `$ref`s\n */\nexport default function withIdRefPrefix(schemaNode) {\n    if (Array.isArray(schemaNode)) {\n        return withIdRefPrefixArray([...schemaNode]);\n    }\n    if (isObject(schemaNode)) {\n        return withIdRefPrefixObject({ ...schemaNode });\n    }\n    return schemaNode;\n}\n//# sourceMappingURL=withIdRefPrefix.js.map","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nexport default pickBy;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseDifference;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nexport default difference;\n","import keys from 'lodash-es/keys.js';\nimport pickBy from 'lodash-es/pickBy.js';\nimport isPlainObject from 'lodash-es/isPlainObject.js';\nimport get from 'lodash-es/get.js';\nimport difference from 'lodash-es/difference.js';\nimport deepEquals from './deepEquals.js';\n/**\n * Compares two objects and returns the names of the fields that have changed.\n * This function iterates over each field of object `a`, using `_.isEqual` to compare the field value\n * with the corresponding field value in object `b`. If the values are different, the field name will\n * be included in the returned array.\n *\n * @param a - The first object, representing the original data to compare.\n * @param b - The second object, representing the updated data to compare.\n * @returns - An array of field names that have changed.\n *\n * @example\n * const a = { name: 'John', age: 30 };\n * const b = { name: 'John', age: 31 };\n * const changedFields = getChangedFields(a, b);\n * console.log(changedFields); // Output: ['age']\n */\nexport default function getChangedFields(a, b) {\n    const aIsPlainObject = isPlainObject(a);\n    const bIsPlainObject = isPlainObject(b);\n    // If strictly equal or neither of them is a plainObject returns an empty array\n    if (a === b || (!aIsPlainObject && !bIsPlainObject)) {\n        return [];\n    }\n    if (aIsPlainObject && !bIsPlainObject) {\n        return keys(a);\n    }\n    else if (!aIsPlainObject && bIsPlainObject) {\n        return keys(b);\n    }\n    else {\n        const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get(b, key))));\n        const diffFields = difference(keys(b), keys(a));\n        return [...unequalFields, ...diffFields];\n    }\n}\n//# sourceMappingURL=getChangedFields.js.map","/** An enumeration of all the translatable strings used by `@rjsf/core` and its themes. The value of each of the\n * enumeration keys is expected to be the actual english string. Some strings contain replaceable parameter values\n * as indicated by `%1`, `%2`, etc. The number after the `%` indicates the order of the parameter. The ordering of\n * parameters is important because some languages may choose to put the second parameter before the first in its\n * translation. Also, some strings are rendered using `markdown-to-jsx` and thus support markdown and inline html.\n */\nexport var TranslatableString;\n(function (TranslatableString) {\n    /** Fallback title of an array item, used by ArrayField */\n    TranslatableString[\"ArrayItemTitle\"] = \"Item\";\n    /** Missing items reason, used by ArrayField */\n    TranslatableString[\"MissingItems\"] = \"Missing items definition\";\n    /** Yes label, used by BooleanField */\n    TranslatableString[\"YesLabel\"] = \"Yes\";\n    /** No label, used by BooleanField */\n    TranslatableString[\"NoLabel\"] = \"No\";\n    /** Close label, used by ErrorList */\n    TranslatableString[\"CloseLabel\"] = \"Close\";\n    /** Errors label, used by ErrorList */\n    TranslatableString[\"ErrorsLabel\"] = \"Errors\";\n    /** New additionalProperties string default value, used by ObjectField */\n    TranslatableString[\"NewStringDefault\"] = \"New Value\";\n    /** Add button title, used by AddButton */\n    TranslatableString[\"AddButton\"] = \"Add\";\n    /** Add button title, used by AddButton */\n    TranslatableString[\"AddItemButton\"] = \"Add Item\";\n    /** Copy button title, used by IconButton */\n    TranslatableString[\"CopyButton\"] = \"Copy\";\n    /** Move down button title, used by IconButton */\n    TranslatableString[\"MoveDownButton\"] = \"Move down\";\n    /** Move up button title, used by IconButton */\n    TranslatableString[\"MoveUpButton\"] = \"Move up\";\n    /** Remove button title, used by IconButton */\n    TranslatableString[\"RemoveButton\"] = \"Remove\";\n    /** Now label, used by AltDateWidget */\n    TranslatableString[\"NowLabel\"] = \"Now\";\n    /** Clear label, used by AltDateWidget */\n    TranslatableString[\"ClearLabel\"] = \"Clear\";\n    /** Aria date label, used by DateWidget */\n    TranslatableString[\"AriaDateLabel\"] = \"Select a date\";\n    /** File preview label, used by FileWidget */\n    TranslatableString[\"PreviewLabel\"] = \"Preview\";\n    /** Decrement button aria label, used by UpDownWidget */\n    TranslatableString[\"DecrementAriaLabel\"] = \"Decrease value by 1\";\n    /** Increment button aria label, used by UpDownWidget */\n    TranslatableString[\"IncrementAriaLabel\"] = \"Increase value by 1\";\n    // Strings with replaceable parameters\n    /** Unknown field type reason, where %1 will be replaced with the type as provided by SchemaField */\n    TranslatableString[\"UnknownFieldType\"] = \"Unknown field type %1\";\n    /** Option prefix, where %1 will be replaced with the option index as provided by MultiSchemaField */\n    TranslatableString[\"OptionPrefix\"] = \"Option %1\";\n    /** Option prefix, where %1 and %2 will be replaced by the schema title and option index, respectively as provided by\n     * MultiSchemaField\n     */\n    TranslatableString[\"TitleOptionPrefix\"] = \"%1 option %2\";\n    /** Key label, where %1 will be replaced by the label as provided by WrapIfAdditionalTemplate */\n    TranslatableString[\"KeyLabel\"] = \"%1 Key\";\n    // Strings with replaceable parameters AND/OR that support markdown and html\n    /** Invalid object field configuration as provided by the ObjectField.\n     * NOTE: Use markdown notation rather than html tags.\n     */\n    TranslatableString[\"InvalidObjectField\"] = \"Invalid \\\"%1\\\" object field configuration: _%2_.\";\n    /** Unsupported field schema, used by UnsupportedField */\n    TranslatableString[\"UnsupportedField\"] = \"Unsupported field schema.\";\n    /** Unsupported field schema, where %1 will be replaced by the idSchema.$id as provided by UnsupportedField.\n     * NOTE: Use markdown notation rather than html tags.\n     */\n    TranslatableString[\"UnsupportedFieldWithId\"] = \"Unsupported field schema for field `%1`.\";\n    /** Unsupported field schema, where %1 will be replaced by the reason string as provided by UnsupportedField.\n     * NOTE: Use markdown notation rather than html tags.\n     */\n    TranslatableString[\"UnsupportedFieldWithReason\"] = \"Unsupported field schema: _%1_.\";\n    /** Unsupported field schema, where %1 and %2 will be replaced by the idSchema.$id and reason strings, respectively,\n     * as provided by UnsupportedField.\n     * NOTE: Use markdown notation rather than html tags.\n     */\n    TranslatableString[\"UnsupportedFieldWithIdAndReason\"] = \"Unsupported field schema for field `%1`: _%2_.\";\n    /** File name, type and size info, where %1, %2 and %3 will be replaced by the file name, file type and file size as\n     * provided by FileWidget\n     */\n    TranslatableString[\"FilesInfo\"] = \"**%1** (%2, %3 bytes)\";\n})(TranslatableString || (TranslatableString = {}));\n//# sourceMappingURL=enums.js.map","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _eventemitter = require('eventemitter3');\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MarkerDispatcher = function (_EventEmitter) {\n  _inherits(MarkerDispatcher, _EventEmitter);\n\n  function MarkerDispatcher(gmapInstance) {\n    _classCallCheck(this, MarkerDispatcher);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    _this.gmapInstance = gmapInstance;\n    return _this;\n  }\n\n  MarkerDispatcher.prototype.getChildren = function getChildren() {\n    return this.gmapInstance.props.children;\n  };\n\n  MarkerDispatcher.prototype.getMousePosition = function getMousePosition() {\n    return this.gmapInstance.mouse_;\n  };\n\n  MarkerDispatcher.prototype.getUpdateCounter = function getUpdateCounter() {\n    return this.gmapInstance.updateCounter_;\n  };\n\n  MarkerDispatcher.prototype.dispose = function dispose() {\n    this.gmapInstance = null;\n    this.removeAllListeners();\n  };\n\n  return MarkerDispatcher;\n}(_eventemitter2.default);\n\nexports.default = MarkerDispatcher;","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackSender} represents one or more local RTCRtpSenders.\n * @extends MediaTrackTransceiver\n * @emits MediaTrackSender#replaced\n */\nvar MediaTrackSender = /** @class */ (function (_super) {\n    __extends(MediaTrackSender, _super);\n    /**\n     * Construct a {@link MediaTrackSender}.\n     * @param {MediaStreamTrack} mediaStreamTrack\n     */\n    function MediaTrackSender(mediaStreamTrack) {\n        var _this = _super.call(this, mediaStreamTrack.id, mediaStreamTrack) || this;\n        Object.defineProperties(_this, {\n            _clones: {\n                value: new Set()\n            },\n            _eventsToReemitters: {\n                value: new Map([\n                    ['mute', function () { return _this.queue('muted'); }],\n                    ['unmute', function () { return _this.queue('unmuted'); }]\n                ])\n            },\n            _senders: {\n                value: new Set()\n            },\n            _senderToPublisherHintCallbacks: {\n                value: new Map()\n            },\n            isPublishing: {\n                enumerable: true,\n                get: function () {\n                    return !!this._clones.size;\n                }\n            },\n            muted: {\n                enumerable: true,\n                get: function () {\n                    return this._track.muted;\n                }\n            }\n        });\n        _this._reemitMediaStreamTrackEvents();\n        return _this;\n    }\n    /**\n     * @private\n     */\n    MediaTrackSender.prototype._reemitMediaStreamTrackEvents = function (mediaStreamTrack) {\n        if (mediaStreamTrack === void 0) { mediaStreamTrack = this._track; }\n        var _a = this, eventsToReemitters = _a._eventsToReemitters, track = _a._track;\n        eventsToReemitters.forEach(function (reemitter, event) { return mediaStreamTrack.addEventListener(event, reemitter); });\n        if (track !== mediaStreamTrack) {\n            eventsToReemitters.forEach(function (reemitter, event) { return track.removeEventListener(event, reemitter); });\n            if (track.muted !== mediaStreamTrack.muted) {\n                var reemitter = eventsToReemitters.get(mediaStreamTrack.muted ? 'mute' : 'unmute');\n                reemitter();\n            }\n        }\n    };\n    /**\n     * Return a new {@link MediaTrackSender} containing a clone of the underlying\n     * MediaStreamTrack. No RTCRtpSenders are copied.\n     * @returns {MediaTrackSender}\n     */\n    MediaTrackSender.prototype.clone = function () {\n        var clone = new MediaTrackSender(this.track.clone());\n        this._clones.add(clone);\n        return clone;\n    };\n    /**\n     * Remove a cloned {@link MediaTrackSender}.\n     * @returns {void}\n     */\n    MediaTrackSender.prototype.removeClone = function (clone) {\n        this._clones.delete(clone);\n    };\n    /**\n     * Set the given MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack\n     * @returns {Promise<void>}\n     */\n    MediaTrackSender.prototype.setMediaStreamTrack = function (mediaStreamTrack) {\n        var _this = this;\n        var clones = Array.from(this._clones);\n        var senders = Array.from(this._senders);\n        return Promise.all(clones.map(function (clone) {\n            return clone.setMediaStreamTrack(mediaStreamTrack.clone());\n        }).concat(senders.map(function (sender) {\n            return _this._replaceTrack(sender, mediaStreamTrack);\n        }))).finally(function () {\n            _this._reemitMediaStreamTrackEvents(mediaStreamTrack);\n            _this._track = mediaStreamTrack;\n        });\n    };\n    /**\n     * Add an RTCRtpSender.\n     * @param {RTCRtpSender} sender\n     * @param {?()=>Promise<string>} publisherHintCallback\n     * @returns {this}\n     */\n    MediaTrackSender.prototype.addSender = function (sender, publisherHintCallback) {\n        this._senders.add(sender);\n        if (publisherHintCallback) {\n            this._senderToPublisherHintCallbacks.set(sender, publisherHintCallback);\n        }\n        return this;\n    };\n    /**\n     * Remove an RTCRtpSender.\n     * @param {RTCRtpSender} sender\n     * @returns {this}\n     */\n    MediaTrackSender.prototype.removeSender = function (sender) {\n        this._senders.delete(sender);\n        this._senderToPublisherHintCallbacks.delete(sender);\n        return this;\n    };\n    /**\n     * Applies given encodings, or resets encodings if none specified.\n     * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n     * @returns {Promise<string>}\n     */\n    MediaTrackSender.prototype.setPublisherHint = function (encodings) {\n        // Note(mpatwardhan): since publisher hint applies only to group rooms we only look at 1st call callback.\n        var _a = __read(Array.from(this._senderToPublisherHintCallbacks.values()), 1), publisherHintCallback = _a[0];\n        return publisherHintCallback ? publisherHintCallback(encodings) : Promise.resolve('COULD_NOT_APPLY_HINT');\n    };\n    MediaTrackSender.prototype._replaceTrack = function (sender, mediaStreamTrack) {\n        var _this = this;\n        return sender.replaceTrack(mediaStreamTrack).then(function (replaceTrackResult) {\n            // clear any publisherHints and apply default encodings.\n            _this.setPublisherHint(null).catch(function () { });\n            _this.emit('replaced');\n            return replaceTrackResult;\n        });\n    };\n    return MediaTrackSender;\n}(MediaTrackTransceiver));\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was muted.\n * @event MediaTrackSender#muted\n */\n/**\n * The {@link MediaTrackSender} replaced the underlying MediaStreamTrack.\n * @event MediaTrackSender#replaced\n */\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was unmuted.\n * @event MediaTrackSender#unmuted\n */\nmodule.exports = MediaTrackSender;\n//# sourceMappingURL=sender.js.map","'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\n\nmodule.exports = {\n  add: addKeyword,\n  get: getKeyword,\n  remove: removeKeyword\n};\n\n/**\n * Define custom keyword\n * @this  Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n  /* jshint validthis: true */\n  /* eslint no-shadow: 0 */\n  var RULES = this.RULES;\n\n  if (RULES.keywords[keyword])\n    throw new Error('Keyword ' + keyword + ' is already defined');\n\n  if (!IDENTIFIER.test(keyword))\n    throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n  if (definition) {\n    if (definition.macro && definition.valid !== undefined)\n      throw new Error('\"valid\" option cannot be used with macro keywords');\n\n    var dataType = definition.type;\n    if (Array.isArray(dataType)) {\n      var i, len = dataType.length;\n      for (i=0; i<len; i++) checkDataType(dataType[i]);\n      for (i=0; i<len; i++) _addRule(keyword, dataType[i], definition);\n    } else {\n      if (dataType) checkDataType(dataType);\n      _addRule(keyword, dataType, definition);\n    }\n\n    var $data = definition.$data === true && this._opts.$data;\n    if ($data && !definition.validate)\n      throw new Error('$data support: \"validate\" function is not defined');\n\n    var metaSchema = definition.metaSchema;\n    if (metaSchema) {\n      if ($data) {\n        metaSchema = {\n          anyOf: [\n            metaSchema,\n            { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n      definition.validateSchema = this.compile(metaSchema, true);\n    }\n  }\n\n  RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n  function _addRule(keyword, dataType, definition) {\n    var ruleGroup;\n    for (var i=0; i<RULES.length; i++) {\n      var rg = RULES[i];\n      if (rg.type == dataType) {\n        ruleGroup = rg;\n        break;\n      }\n    }\n\n    if (!ruleGroup) {\n      ruleGroup = { type: dataType, rules: [] };\n      RULES.push(ruleGroup);\n    }\n\n    var rule = {\n      keyword: keyword,\n      definition: definition,\n      custom: true,\n      code: customRuleCode,\n      implements: definition.implements\n    };\n    ruleGroup.rules.push(rule);\n    RULES.custom[keyword] = rule;\n  }\n\n\n  function checkDataType(dataType) {\n    if (!RULES.types[dataType]) throw new Error('Unknown type ' + dataType);\n  }\n\n  return this;\n}\n\n\n/**\n * Get keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n  /* jshint validthis: true */\n  var rule = this.RULES.custom[keyword];\n  return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n  /* jshint validthis: true */\n  var RULES = this.RULES;\n  delete RULES.keywords[keyword];\n  delete RULES.all[keyword];\n  delete RULES.custom[keyword];\n  for (var i=0; i<RULES.length; i++) {\n    var rules = RULES[i].rules;\n    for (var j=0; j<rules.length; j++) {\n      if (rules[j].keyword == keyword) {\n        rules.splice(j, 1);\n        break;\n      }\n    }\n  }\n  return this;\n}\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-spliced');\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n                '_'\n            ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fromPairs = require(\"lodash.frompairs\");\nvar ngcomponent_1 = require(\"ngcomponent\");\nvar React = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\n/**\n * Wraps a React component in Angular. Returns a new Angular component.\n *\n * Usage:\n *\n *   ```ts\n *   type Props = { foo: number }\n *   class ReactComponent extends React.Component<Props, S> {}\n *   const AngularComponent = react2angular(ReactComponent, ['foo'])\n *   ```\n */\nfunction react2angular(Class, bindingNames, injectNames) {\n    if (bindingNames === void 0) { bindingNames = null; }\n    if (injectNames === void 0) { injectNames = []; }\n    var names = bindingNames\n        || (Class.propTypes && Object.keys(Class.propTypes))\n        || [];\n    return {\n        bindings: fromPairs(names.map(function (_) { return [_, '<']; })),\n        controller: ['$element'].concat(injectNames, [/** @class */ (function (_super) {\n                __extends(class_1, _super);\n                function class_1($element) {\n                    var injectedProps = [];\n                    for (var _i = 1; _i < arguments.length; _i++) {\n                        injectedProps[_i - 1] = arguments[_i];\n                    }\n                    var _this = _super.call(this) || this;\n                    _this.$element = $element;\n                    _this.isDestroyed = false;\n                    _this.injectedProps = {};\n                    injectNames.forEach(function (name, i) {\n                        _this.injectedProps[name] = injectedProps[i];\n                    });\n                    return _this;\n                }\n                Object.defineProperty(class_1, \"$$ngIsClass\", {\n                    get: function () {\n                        return true;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                class_1.prototype.render = function () {\n                    if (!this.isDestroyed) {\n                        react_dom_1.render(React.createElement(Class, __assign({}, this.props, this.injectedProps)), this.$element[0]);\n                    }\n                };\n                class_1.prototype.componentWillUnmount = function () {\n                    this.isDestroyed = true;\n                    react_dom_1.unmountComponentAtNode(this.$element[0]);\n                };\n                return class_1;\n            }(ngcomponent_1.default))])\n    };\n}\nexports.react2angular = react2angular;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * Functions that manipulate strings\n *\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_strings\n */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar predicates_1 = require(\"./predicates\");\nvar rejectFactory_1 = require(\"../transition/rejectFactory\");\nvar common_1 = require(\"./common\");\nvar hof_1 = require(\"./hof\");\nvar transition_1 = require(\"../transition/transition\");\nvar resolvable_1 = require(\"../resolve/resolvable\");\n/**\n * Returns a string shortened to a maximum length\n *\n * If the string is already less than the `max` length, return the string.\n * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n *\n * @param max the maximum length of the string to return\n * @param str the input string\n */\nfunction maxLength(max, str) {\n    if (str.length <= max)\n        return str;\n    return str.substr(0, max - 3) + '...';\n}\nexports.maxLength = maxLength;\n/**\n * Returns a string, with spaces added to the end, up to a desired str length\n *\n * If the string is already longer than the desired length, return the string.\n * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n *\n * @param length the desired length of the string to return\n * @param str the input string\n */\nfunction padString(length, str) {\n    while (str.length < length)\n        str += ' ';\n    return str;\n}\nexports.padString = padString;\nfunction kebobString(camelCase) {\n    return camelCase\n        .replace(/^([A-Z])/, function ($1) { return $1.toLowerCase(); }) // replace first char\n        .replace(/([A-Z])/g, function ($1) { return '-' + $1.toLowerCase(); }); // replace rest\n}\nexports.kebobString = kebobString;\nfunction _toJson(obj) {\n    return JSON.stringify(obj);\n}\nfunction _fromJson(json) {\n    return predicates_1.isString(json) ? JSON.parse(json) : json;\n}\nfunction promiseToString(p) {\n    return \"Promise(\" + JSON.stringify(p) + \")\";\n}\nfunction functionToString(fn) {\n    var fnStr = fnToString(fn);\n    var namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n    var toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n    var fnName = fn['name'] || '';\n    if (fnName && toStr.match(/function \\(/)) {\n        return 'function ' + fnName + toStr.substr(9);\n    }\n    return toStr;\n}\nexports.functionToString = functionToString;\nfunction fnToString(fn) {\n    var _fn = predicates_1.isArray(fn) ? fn.slice(-1)[0] : fn;\n    return _fn && _fn.toString() || 'undefined';\n}\nexports.fnToString = fnToString;\nvar stringifyPatternFn = null;\nvar stringifyPattern = function (value) {\n    var isRejection = rejectFactory_1.Rejection.isRejectionPromise;\n    stringifyPatternFn = stringifyPatternFn || hof_1.pattern([\n        [hof_1.not(predicates_1.isDefined), hof_1.val('undefined')],\n        [predicates_1.isNull, hof_1.val('null')],\n        [predicates_1.isPromise, hof_1.val('[Promise]')],\n        [isRejection, function (x) { return x._transitionRejection.toString(); }],\n        [hof_1.is(rejectFactory_1.Rejection), hof_1.invoke('toString')],\n        [hof_1.is(transition_1.Transition), hof_1.invoke('toString')],\n        [hof_1.is(resolvable_1.Resolvable), hof_1.invoke('toString')],\n        [predicates_1.isInjectable, functionToString],\n        [hof_1.val(true), common_1.identity],\n    ]);\n    return stringifyPatternFn(value);\n};\nfunction stringify(o) {\n    var seen = [];\n    function format(value) {\n        if (predicates_1.isObject(value)) {\n            if (seen.indexOf(value) !== -1)\n                return '[circular ref]';\n            seen.push(value);\n        }\n        return stringifyPattern(value);\n    }\n    return JSON.stringify(o, function (key, value) { return format(value); }).replace(/\\\\\"/g, '\"');\n}\nexports.stringify = stringify;\n/** Returns a function that splits a string on a character or substring */\nexports.beforeAfterSubstr = function (char) { return function (str) {\n    if (!str)\n        return ['', ''];\n    var idx = str.indexOf(char);\n    if (idx === -1)\n        return [str, ''];\n    return [str.substr(0, idx), str.substr(idx + 1)];\n}; };\nexports.hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\nexports.stripLastPathElement = function (str) { return str.replace(/\\/[^/]*$/, ''); };\nexports.splitHash = exports.beforeAfterSubstr('#');\nexports.splitQuery = exports.beforeAfterSubstr('?');\nexports.splitEqual = exports.beforeAfterSubstr('=');\nexports.trimHashVal = function (str) { return str ? str.replace(/^#/, '') : ''; };\n/**\n * Splits on a delimiter, but returns the delimiters in the array\n *\n * #### Example:\n * ```js\n * var splitOnSlashes = splitOnDelim('/');\n * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n * ```\n */\nfunction splitOnDelim(delim) {\n    var re = new RegExp('(' + delim + ')', 'g');\n    return function (str) {\n        return str.split(re).filter(common_1.identity);\n    };\n}\nexports.splitOnDelim = splitOnDelim;\n/**\n * Reduce fn that joins neighboring strings\n *\n * Given an array of strings, returns a new array\n * where all neighboring strings have been joined.\n *\n * #### Example:\n * ```js\n * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n * ```\n */\nfunction joinNeighborsR(acc, x) {\n    if (predicates_1.isString(common_1.tail(acc)) && predicates_1.isString(x))\n        return acc.slice(0, -1).concat(common_1.tail(acc) + x);\n    return common_1.pushR(acc, x);\n}\nexports.joinNeighborsR = joinNeighborsR;\n//# sourceMappingURL=strings.js.map","'use strict';\n\nvar ruleModules = require('../dotjs')\n  , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n  var RULES = [\n    { type: 'number',\n      rules: [ { 'maximum': ['exclusiveMaximum'] },\n               { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n    { type: 'string',\n      rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n    { type: 'array',\n      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n    { type: 'object',\n      rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n               { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n  ];\n\n  var ALL = [ 'type', '$comment' ];\n  var KEYWORDS = [\n    '$schema', '$id', 'id', '$data', 'title',\n    'description', 'default', 'definitions',\n    'examples', 'readOnly', 'writeOnly',\n    'contentMediaType', 'contentEncoding',\n    'additionalItems', 'then', 'else'\n  ];\n  var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n  RULES.all = toHash(ALL);\n  RULES.types = toHash(TYPES);\n\n  RULES.forEach(function (group) {\n    group.rules = group.rules.map(function (keyword) {\n      var implKeywords;\n      if (typeof keyword == 'object') {\n        var key = Object.keys(keyword)[0];\n        implKeywords = keyword[key];\n        keyword = key;\n        implKeywords.forEach(function (k) {\n          ALL.push(k);\n          RULES.all[k] = true;\n        });\n      }\n      ALL.push(keyword);\n      var rule = RULES.all[keyword] = {\n        keyword: keyword,\n        code: ruleModules[keyword],\n        implements: implKeywords\n      };\n      return rule;\n    });\n\n    RULES.all.$comment = {\n      keyword: '$comment',\n      code: ruleModules.$comment\n    };\n\n    if (group.type) RULES.types[group.type] = group;\n  });\n\n  RULES.keywords = toHash(ALL.concat(KEYWORDS));\n  RULES.custom = {};\n\n  return RULES;\n};\n","(function(global) {\r\n  /**\r\n   * Polyfill URLSearchParams\r\n   *\r\n   * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n   */\r\n\r\n  var checkIfIteratorIsSupported = function() {\r\n    try {\r\n      return !!Symbol.iterator;\r\n    } catch (error) {\r\n      return false;\r\n    }\r\n  };\r\n\r\n\r\n  var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n  var createIterator = function(items) {\r\n    var iterator = {\r\n      next: function() {\r\n        var value = items.shift();\r\n        return { done: value === void 0, value: value };\r\n      }\r\n    };\r\n\r\n    if (iteratorSupported) {\r\n      iterator[Symbol.iterator] = function() {\r\n        return iterator;\r\n      };\r\n    }\r\n\r\n    return iterator;\r\n  };\r\n\r\n  /**\r\n   * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n   * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n   */\r\n  var serializeParam = function(value) {\r\n    return encodeURIComponent(value).replace(/%20/g, '+');\r\n  };\r\n\r\n  var deserializeParam = function(value) {\r\n    return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n  };\r\n\r\n  var polyfillURLSearchParams = function() {\r\n\r\n    var URLSearchParams = function(searchString) {\r\n      Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n      var typeofSearchString = typeof searchString;\r\n\r\n      if (typeofSearchString === 'undefined') {\r\n        // do nothing\r\n      } else if (typeofSearchString === 'string') {\r\n        if (searchString !== '') {\r\n          this._fromString(searchString);\r\n        }\r\n      } else if (searchString instanceof URLSearchParams) {\r\n        var _this = this;\r\n        searchString.forEach(function(value, name) {\r\n          _this.append(name, value);\r\n        });\r\n      } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n        if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n          for (var i = 0; i < searchString.length; i++) {\r\n            var entry = searchString[i];\r\n            if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n              this.append(entry[0], entry[1]);\r\n            } else {\r\n              throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n            }\r\n          }\r\n        } else {\r\n          for (var key in searchString) {\r\n            if (searchString.hasOwnProperty(key)) {\r\n              this.append(key, searchString[key]);\r\n            }\r\n          }\r\n        }\r\n      } else {\r\n        throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n      }\r\n    };\r\n\r\n    var proto = URLSearchParams.prototype;\r\n\r\n    proto.append = function(name, value) {\r\n      if (name in this._entries) {\r\n        this._entries[name].push(String(value));\r\n      } else {\r\n        this._entries[name] = [String(value)];\r\n      }\r\n    };\r\n\r\n    proto.delete = function(name) {\r\n      delete this._entries[name];\r\n    };\r\n\r\n    proto.get = function(name) {\r\n      return (name in this._entries) ? this._entries[name][0] : null;\r\n    };\r\n\r\n    proto.getAll = function(name) {\r\n      return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n    };\r\n\r\n    proto.has = function(name) {\r\n      return (name in this._entries);\r\n    };\r\n\r\n    proto.set = function(name, value) {\r\n      this._entries[name] = [String(value)];\r\n    };\r\n\r\n    proto.forEach = function(callback, thisArg) {\r\n      var entries;\r\n      for (var name in this._entries) {\r\n        if (this._entries.hasOwnProperty(name)) {\r\n          entries = this._entries[name];\r\n          for (var i = 0; i < entries.length; i++) {\r\n            callback.call(thisArg, entries[i], name, this);\r\n          }\r\n        }\r\n      }\r\n    };\r\n\r\n    proto.keys = function() {\r\n      var items = [];\r\n      this.forEach(function(value, name) {\r\n        items.push(name);\r\n      });\r\n      return createIterator(items);\r\n    };\r\n\r\n    proto.values = function() {\r\n      var items = [];\r\n      this.forEach(function(value) {\r\n        items.push(value);\r\n      });\r\n      return createIterator(items);\r\n    };\r\n\r\n    proto.entries = function() {\r\n      var items = [];\r\n      this.forEach(function(value, name) {\r\n        items.push([name, value]);\r\n      });\r\n      return createIterator(items);\r\n    };\r\n\r\n    if (iteratorSupported) {\r\n      proto[Symbol.iterator] = proto.entries;\r\n    }\r\n\r\n    proto.toString = function() {\r\n      var searchArray = [];\r\n      this.forEach(function(value, name) {\r\n        searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n      });\r\n      return searchArray.join('&');\r\n    };\r\n\r\n    Object.defineProperty(proto, 'size', {\r\n      get: function () {\r\n        return this._entries ? Object.keys(this._entries).length : 0;\r\n      }\r\n    });\r\n\r\n    global.URLSearchParams = URLSearchParams;\r\n  };\r\n\r\n  var checkIfURLSearchParamsSupported = function() {\r\n    try {\r\n      var URLSearchParams = global.URLSearchParams;\r\n\r\n      return (\r\n        (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n        (typeof URLSearchParams.prototype.set === 'function') &&\r\n        (typeof URLSearchParams.prototype.entries === 'function')\r\n      );\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n  };\r\n\r\n  if (!checkIfURLSearchParamsSupported()) {\r\n    polyfillURLSearchParams();\r\n  }\r\n\r\n  var proto = global.URLSearchParams.prototype;\r\n\r\n  if (typeof proto.sort !== 'function') {\r\n    proto.sort = function() {\r\n      var _this = this;\r\n      var items = [];\r\n      this.forEach(function(value, name) {\r\n        items.push([name, value]);\r\n        if (!_this._entries) {\r\n          _this.delete(name);\r\n        }\r\n      });\r\n      items.sort(function(a, b) {\r\n        if (a[0] < b[0]) {\r\n          return -1;\r\n        } else if (a[0] > b[0]) {\r\n          return +1;\r\n        } else {\r\n          return 0;\r\n        }\r\n      });\r\n      if (_this._entries) { // force reset because IE keeps keys index\r\n        _this._entries = {};\r\n      }\r\n      for (var i = 0; i < items.length; i++) {\r\n        this.append(items[i][0], items[i][1]);\r\n      }\r\n    };\r\n  }\r\n\r\n  if (typeof proto._fromString !== 'function') {\r\n    Object.defineProperty(proto, '_fromString', {\r\n      enumerable: false,\r\n      configurable: false,\r\n      writable: false,\r\n      value: function(searchString) {\r\n        if (this._entries) {\r\n          this._entries = {};\r\n        } else {\r\n          var keys = [];\r\n          this.forEach(function(value, name) {\r\n            keys.push(name);\r\n          });\r\n          for (var i = 0; i < keys.length; i++) {\r\n            this.delete(keys[i]);\r\n          }\r\n        }\r\n\r\n        searchString = searchString.replace(/^\\?/, '');\r\n        var attributes = searchString.split('&');\r\n        var attribute;\r\n        for (var i = 0; i < attributes.length; i++) {\r\n          attribute = attributes[i].split('=');\r\n          this.append(\r\n            deserializeParam(attribute[0]),\r\n            (attribute.length > 1) ? deserializeParam(attribute.slice(1).join('=')) : ''\r\n          );\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  // HTMLAnchorElement\r\n\r\n})(\r\n  (typeof global !== 'undefined') ? global\r\n    : ((typeof window !== 'undefined') ? window\r\n    : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n  /**\r\n   * Polyfill URL\r\n   *\r\n   * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n   */\r\n\r\n  var checkIfURLIsSupported = function() {\r\n    try {\r\n      var u = new global.URL('b', 'http://a');\r\n      u.pathname = 'c d';\r\n      return (u.href === 'http://a/c%20d') && u.searchParams;\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n  };\r\n\r\n\r\n  var polyfillURL = function() {\r\n    var _URL = global.URL;\r\n\r\n    var URL = function(url, base) {\r\n      if (typeof url !== 'string') url = String(url);\r\n      if (base && typeof base !== 'string') base = String(base);\r\n\r\n      // Only create another document if the base is different from current location.\r\n      var doc = document, baseElement;\r\n      if (base && (global.location === void 0 || base !== global.location.href)) {\r\n        var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\r\n        if (isIE11) {\r\n          base = base.toLowerCase();\r\n        }\r\n        doc = document.implementation.createHTMLDocument('');\r\n        baseElement = doc.createElement('base');\r\n        baseElement.href = base;\r\n        doc.head.appendChild(baseElement);\r\n        try {\r\n          if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n        } catch (err) {\r\n          throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n        }\r\n      }\r\n\r\n      var anchorElement = doc.createElement('a');\r\n      anchorElement.href = url;\r\n      if (baseElement) {\r\n        doc.body.appendChild(anchorElement);\r\n        anchorElement.href = anchorElement.href; // force href to refresh\r\n      }\r\n\r\n      var inputElement = doc.createElement('input');\r\n      inputElement.type = 'url';\r\n      inputElement.value = url;\r\n\r\n      if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n        throw new TypeError('Invalid URL');\r\n      }\r\n\r\n      Object.defineProperty(this, '_anchorElement', {\r\n        value: anchorElement\r\n      });\r\n\r\n\r\n      // create a linked searchParams which reflect its changes on URL\r\n      var searchParams = new global.URLSearchParams(this.search);\r\n      var enableSearchUpdate = true;\r\n      var enableSearchParamsUpdate = true;\r\n      var _this = this;\r\n      ['append', 'delete', 'set'].forEach(function(methodName) {\r\n        var method = searchParams[methodName];\r\n        searchParams[methodName] = function() {\r\n          method.apply(searchParams, arguments);\r\n          if (enableSearchUpdate) {\r\n            enableSearchParamsUpdate = false;\r\n            _this.search = searchParams.toString();\r\n            enableSearchParamsUpdate = true;\r\n          }\r\n        };\r\n      });\r\n\r\n      Object.defineProperty(this, 'searchParams', {\r\n        value: searchParams,\r\n        enumerable: true\r\n      });\r\n\r\n      var search = void 0;\r\n      Object.defineProperty(this, '_updateSearchParams', {\r\n        enumerable: false,\r\n        configurable: false,\r\n        writable: false,\r\n        value: function() {\r\n          if (this.search !== search) {\r\n            search = this.search;\r\n            if (enableSearchParamsUpdate) {\r\n              enableSearchUpdate = false;\r\n              this.searchParams._fromString(this.search);\r\n              enableSearchUpdate = true;\r\n            }\r\n          }\r\n        }\r\n      });\r\n    };\r\n\r\n    var proto = URL.prototype;\r\n\r\n    var linkURLWithAnchorAttribute = function(attributeName) {\r\n      Object.defineProperty(proto, attributeName, {\r\n        get: function() {\r\n          return this._anchorElement[attributeName];\r\n        },\r\n        set: function(value) {\r\n          this._anchorElement[attributeName] = value;\r\n        },\r\n        enumerable: true\r\n      });\r\n    };\r\n\r\n    ['hash', 'host', 'hostname', 'port', 'protocol']\r\n      .forEach(function(attributeName) {\r\n        linkURLWithAnchorAttribute(attributeName);\r\n      });\r\n\r\n    Object.defineProperty(proto, 'search', {\r\n      get: function() {\r\n        return this._anchorElement['search'];\r\n      },\r\n      set: function(value) {\r\n        this._anchorElement['search'] = value;\r\n        this._updateSearchParams();\r\n      },\r\n      enumerable: true\r\n    });\r\n\r\n    Object.defineProperties(proto, {\r\n\r\n      'toString': {\r\n        get: function() {\r\n          var _this = this;\r\n          return function() {\r\n            return _this.href;\r\n          };\r\n        }\r\n      },\r\n\r\n      'href': {\r\n        get: function() {\r\n          return this._anchorElement.href.replace(/\\?$/, '');\r\n        },\r\n        set: function(value) {\r\n          this._anchorElement.href = value;\r\n          this._updateSearchParams();\r\n        },\r\n        enumerable: true\r\n      },\r\n\r\n      'pathname': {\r\n        get: function() {\r\n          return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n        },\r\n        set: function(value) {\r\n          this._anchorElement.pathname = value;\r\n        },\r\n        enumerable: true\r\n      },\r\n\r\n      'origin': {\r\n        get: function() {\r\n          // get expected port from protocol\r\n          var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n          // add port to origin if, expected port is different than actual port\r\n          // and it is not empty f.e http://foo:8080\r\n          // 8080 != 80 && 8080 != ''\r\n          var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n            this._anchorElement.port !== '';\r\n\r\n          return this._anchorElement.protocol +\r\n            '//' +\r\n            this._anchorElement.hostname +\r\n            (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n        },\r\n        enumerable: true\r\n      },\r\n\r\n      'password': { // TODO\r\n        get: function() {\r\n          return '';\r\n        },\r\n        set: function(value) {\r\n        },\r\n        enumerable: true\r\n      },\r\n\r\n      'username': { // TODO\r\n        get: function() {\r\n          return '';\r\n        },\r\n        set: function(value) {\r\n        },\r\n        enumerable: true\r\n      },\r\n    });\r\n\r\n    URL.createObjectURL = function(blob) {\r\n      return _URL.createObjectURL.apply(_URL, arguments);\r\n    };\r\n\r\n    URL.revokeObjectURL = function(url) {\r\n      return _URL.revokeObjectURL.apply(_URL, arguments);\r\n    };\r\n\r\n    global.URL = URL;\r\n\r\n  };\r\n\r\n  if (!checkIfURLIsSupported()) {\r\n    polyfillURL();\r\n  }\r\n\r\n  if ((global.location !== void 0) && !('origin' in global.location)) {\r\n    var getOrigin = function() {\r\n      return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n    };\r\n\r\n    try {\r\n      Object.defineProperty(global.location, 'origin', {\r\n        get: getOrigin,\r\n        enumerable: true\r\n      });\r\n    } catch (e) {\r\n      setInterval(function() {\r\n        global.location.origin = getOrigin();\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n})(\r\n  (typeof global !== 'undefined') ? global\r\n    : ((typeof window !== 'undefined') ? window\r\n    : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","var baseAssignValue = require('./_baseAssignValue'),\n    baseForOwn = require('./_baseForOwn'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nmodule.exports = mapValues;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n","require('./dist/ui-bootstrap-tpls');\n\nmodule.exports = 'ui.bootstrap';\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply'),\n    baseRest = require('./_baseRest'),\n    customDefaultsMerge = require('./_customDefaultsMerge'),\n    mergeWith = require('./mergeWith');\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n  args.push(undefined, customDefaultsMerge);\n  return apply(mergeWith, undefined, args);\n});\n\nmodule.exports = defaultsDeep;\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar sort = function (array, comparefn) {\n  var length = array.length;\n\n  if (length < 8) {\n    // insertion sort\n    var i = 1;\n    var element, j;\n\n    while (i < length) {\n      j = i;\n      element = array[i];\n      while (j && comparefn(array[j - 1], element) > 0) {\n        array[j] = array[--j];\n      }\n      if (j !== i++) array[j] = element;\n    }\n  } else {\n    // merge sort\n    var middle = floor(length / 2);\n    var left = sort(arraySlice(array, 0, middle), comparefn);\n    var right = sort(arraySlice(array, middle), comparefn);\n    var llength = left.length;\n    var rlength = right.length;\n    var lindex = 0;\n    var rindex = 0;\n\n    while (lindex < llength || rindex < rlength) {\n      array[lindex + rindex] = (lindex < llength && rindex < rlength)\n        ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n        : lindex < llength ? left[lindex++] : right[rindex++];\n    }\n  }\n\n  return array;\n};\n\nmodule.exports = sort;\n","'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $isMax = $keyword == 'maximum',\n    $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n    $schemaExcl = it.schema[$exclusiveKeyword],\n    $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n    $op = $isMax ? '<' : '>',\n    $notOp = $isMax ? '>' : '<',\n    $errorKeyword = undefined;\n  if ($isDataExcl) {\n    var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n      $exclusive = 'exclusive' + $lvl,\n      $exclType = 'exclType' + $lvl,\n      $exclIsNumber = 'exclIsNumber' + $lvl,\n      $opExpr = 'op' + $lvl,\n      $opStr = '\\' + ' + $opExpr + ' + \\'';\n    out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n    $schemaValueExcl = 'schemaExcl' + $lvl;\n    out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n    var $errorKeyword = $exclusiveKeyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n    }\n    out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n    if ($schema === undefined) {\n      $errorKeyword = $exclusiveKeyword;\n      $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n      $schemaValue = $schemaValueExcl;\n      $isData = $isDataExcl;\n    }\n  } else {\n    var $exclIsNumber = typeof $schemaExcl == 'number',\n      $opStr = $op;\n    if ($exclIsNumber && $isData) {\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n    } else {\n      if ($exclIsNumber && $schema === undefined) {\n        $exclusive = true;\n        $errorKeyword = $exclusiveKeyword;\n        $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n        $schemaValue = $schemaExcl;\n        $notOp += '=';\n      } else {\n        if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n        if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n          $exclusive = true;\n          $errorKeyword = $exclusiveKeyword;\n          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n          $notOp += '=';\n        } else {\n          $exclusive = false;\n          $opStr += '=';\n        }\n      }\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n    }\n  }\n  $errorKeyword = $errorKeyword || $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be ' + ($opStr) + ' ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","/*!\n * jQuery JavaScript Library v3.5.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-04-10T15:07Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a 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// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\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\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\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\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\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\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\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\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\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\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();\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: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, 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\" && !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\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || 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 ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\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\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\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\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\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\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\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\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 length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\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 flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\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\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\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.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\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\tnonnativeSelectorCache = 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// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://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|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\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\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\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 + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\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)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\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 +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\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\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\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\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\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\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\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\tpushNative.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\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 m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\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}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\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\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\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\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\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 element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = 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 = arr.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\ta.sourceIndex - b.sourceIndex;\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 :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\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\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\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, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\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( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.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( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.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 programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\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\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\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\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\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\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 ( typeof context.getElementsByClassName !== \"undefined\" && 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 https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\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// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' 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// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.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 ( !el.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.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\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 ( !el.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 sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\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 = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.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 ( el.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 ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.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( el ) {\n\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( el, \"*\" );\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( el, \"[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 self-exclusive\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\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\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\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( 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\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\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\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\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\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\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\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\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\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\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\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\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.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\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\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\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\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\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\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 ] ||\n\t\t\t\tmatch[ 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\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\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 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\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\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\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() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\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 +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\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\t/* eslint-disable max-len */\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\t/* eslint-enable max-len */\n\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, uniqueCache, outerCache, node, 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\t\t\t\t\t\tdiff = false;\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 ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\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\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\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && 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\tuniqueCache[ 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} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\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\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\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\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\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\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\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\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\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 || 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\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 &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\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 ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\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\t// eslint-disable-next-line no-unused-expressions\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\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 ||\n\t\t\t\t\tattr.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 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\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\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\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\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\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\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\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, 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 combinator 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\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\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\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = 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\treturn false;\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(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\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\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\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\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\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\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\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.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\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\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\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\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\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, 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\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// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\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\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\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(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\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 only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound 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\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.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\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 ) ||\n\t\t\t\t\t\tcontext\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\t!context || rsibling.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( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.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( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.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( el ) {\n\treturn el.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( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\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;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\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\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\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\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : 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// 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\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\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// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\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// Option to run 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\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 ( 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\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\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 || root ).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[ 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 ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\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\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.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; 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\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\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 this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\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 indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\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\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\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 dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn 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 dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = 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\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\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\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], 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\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\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\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\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\tif ( isFunction( arg ) ) {\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 && toType( arg ) !== \"string\" ) {\n\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\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\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\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 ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\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 ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\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\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\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\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\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\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 && 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.progress( newDefer.notify )\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} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\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\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\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 jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\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// 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[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = 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(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\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( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\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// 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// 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\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\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\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\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// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\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} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\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\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tif ( typeof props.top === \"number\" ) {\n\t\t\t\tprops.top += \"px\";\n\t\t\t}\n\t\t\tif ( typeof props.left === \"number\" ) {\n\t\t\t\tprops.left += \"px\";\n\t\t\t}\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t} );\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStat = void 0;\n/**\n * Computes min, max, average for given array.\n * @param {Array<number>} values\n * @returns {{min: number, max: number: average: number}|null}\n */\nfunction makeStat(values) {\n    if (values && values.length) {\n        var min = Math.min.apply(Math, __spreadArray([], __read(values)));\n        var max = Math.max.apply(Math, __spreadArray([], __read(values)));\n        var average = values.reduce(function (total, value) { return total + value; }, 0) / values.length;\n        return { min: min, max: max, average: average };\n    }\n    return null;\n}\nexports.makeStat = makeStat;\n//# sourceMappingURL=makestat.js.map","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n    refs[_key] = arguments[_key];\n  }\n\n  return useMemo(() => node => {\n    refs.forEach(ref => ref(node));\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n  const elementString = Object.prototype.toString.call(element);\n  return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n  elementString === '[object global]';\n}\n\nfunction isNode(node) {\n  return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n  var _target$ownerDocument, _target$ownerDocument2;\n\n  if (!target) {\n    return window;\n  }\n\n  if (isWindow(target)) {\n    return target;\n  }\n\n  if (!isNode(target)) {\n    return window;\n  }\n\n  return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n  const {\n    Document\n  } = getWindow(node);\n  return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n  if (isWindow(node)) {\n    return false;\n  }\n\n  return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n  return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n  if (!target) {\n    return document;\n  }\n\n  if (isWindow(target)) {\n    return target.document;\n  }\n\n  if (!isNode(target)) {\n    return document;\n  }\n\n  if (isDocument(target)) {\n    return target;\n  }\n\n  if (isHTMLElement(target) || isSVGElement(target)) {\n    return target.ownerDocument;\n  }\n\n  return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n  const handlerRef = useRef(handler);\n  useIsomorphicLayoutEffect(() => {\n    handlerRef.current = handler;\n  });\n  return useCallback(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n  }, []);\n}\n\nfunction useInterval() {\n  const intervalRef = useRef(null);\n  const set = useCallback((listener, duration) => {\n    intervalRef.current = setInterval(listener, duration);\n  }, []);\n  const clear = useCallback(() => {\n    if (intervalRef.current !== null) {\n      clearInterval(intervalRef.current);\n      intervalRef.current = null;\n    }\n  }, []);\n  return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n  if (dependencies === void 0) {\n    dependencies = [value];\n  }\n\n  const valueRef = useRef(value);\n  useIsomorphicLayoutEffect(() => {\n    if (valueRef.current !== value) {\n      valueRef.current = value;\n    }\n  }, dependencies);\n  return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n  const valueRef = useRef();\n  return useMemo(() => {\n    const newValue = callback(valueRef.current);\n    valueRef.current = newValue;\n    return newValue;\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n  const onChangeHandler = useEvent(onChange);\n  const node = useRef(null);\n  const setNodeRef = useCallback(element => {\n    if (element !== node.current) {\n      onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n    }\n\n    node.current = element;\n  }, //eslint-disable-next-line\n  []);\n  return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n  return useMemo(() => {\n    if (value) {\n      return value;\n    }\n\n    const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n    ids[prefix] = id;\n    return prefix + \"-\" + id;\n  }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n  return function (object) {\n    for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      adjustments[_key - 1] = arguments[_key];\n    }\n\n    return adjustments.reduce((accumulator, adjustment) => {\n      const entries = Object.entries(adjustment);\n\n      for (const [key, valueAdjustment] of entries) {\n        const value = accumulator[key];\n\n        if (value != null) {\n          accumulator[key] = value + modifier * valueAdjustment;\n        }\n      }\n\n      return accumulator;\n    }, { ...object\n    });\n  };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n  return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n  if (!event) {\n    return false;\n  }\n\n  const {\n    KeyboardEvent\n  } = getWindow(event.target);\n  return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n  if (!event) {\n    return false;\n  }\n\n  const {\n    TouchEvent\n  } = getWindow(event.target);\n  return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n  if (isTouchEvent(event)) {\n    if (event.touches && event.touches.length) {\n      const {\n        clientX: x,\n        clientY: y\n      } = event.touches[0];\n      return {\n        x,\n        y\n      };\n    } else if (event.changedTouches && event.changedTouches.length) {\n      const {\n        clientX: x,\n        clientY: y\n      } = event.changedTouches[0];\n      return {\n        x,\n        y\n      };\n    }\n  }\n\n  if (hasViewportRelativeCoordinates(event)) {\n    return {\n      x: event.clientX,\n      y: event.clientY\n    };\n  }\n\n  return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n  Translate: {\n    toString(transform) {\n      if (!transform) {\n        return;\n      }\n\n      const {\n        x,\n        y\n      } = transform;\n      return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n    }\n\n  },\n  Scale: {\n    toString(transform) {\n      if (!transform) {\n        return;\n      }\n\n      const {\n        scaleX,\n        scaleY\n      } = transform;\n      return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n    }\n\n  },\n  Transform: {\n    toString(transform) {\n      if (!transform) {\n        return;\n      }\n\n      return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n    }\n\n  },\n  Transition: {\n    toString(_ref) {\n      let {\n        property,\n        duration,\n        easing\n      } = _ref;\n      return property + \" \" + duration + \"ms \" + easing;\n    }\n\n  }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n  if (element.matches(SELECTOR)) {\n    return element;\n  }\n\n  return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","'use strict';\nvar CancelablePromise = require('./util/cancelablepromise');\n/**\n * Create a {@link CancelablePromise<Room>}.\n * @param {function(function(Array<LocalTrack>): CancelablePromise<RoomSignaling>):\n *   Promise<function(): CancelablePromise<RoomSignaling>>} getLocalTracks\n * @param {function(Array<LocalTrack>): LocalParticipant} createLocalParticipant\n * @param {function(Array<LocalTrack>): CancelablePromise<RoomSignaling>} createRoomSignaling\n * @param {function(LocalParticipant, RoomSignaling): Room} createRoom\n * @returns CancelablePromise<Room>\n */\nfunction createCancelableRoomPromise(getLocalTracks, createLocalParticipant, createRoomSignaling, createRoom) {\n    var cancelableRoomSignalingPromise;\n    var cancellationError = new Error('Canceled');\n    return new CancelablePromise(function onCreate(resolve, reject, isCanceled) {\n        var localParticipant;\n        getLocalTracks(function getLocalTracksSucceeded(localTracks) {\n            if (isCanceled()) {\n                return CancelablePromise.reject(cancellationError);\n            }\n            localParticipant = createLocalParticipant(localTracks);\n            return createRoomSignaling(localParticipant).then(function createRoomSignalingSucceeded(getCancelableRoomSignalingPromise) {\n                if (isCanceled()) {\n                    throw cancellationError;\n                }\n                cancelableRoomSignalingPromise = getCancelableRoomSignalingPromise();\n                return cancelableRoomSignalingPromise;\n            });\n        }).then(function roomSignalingConnected(roomSignaling) {\n            if (isCanceled()) {\n                roomSignaling.disconnect();\n                throw cancellationError;\n            }\n            resolve(createRoom(localParticipant, roomSignaling));\n        }).catch(function onError(error) {\n            reject(error);\n        });\n    }, function onCancel() {\n        if (cancelableRoomSignalingPromise) {\n            cancelableRoomSignalingPromise.cancel();\n        }\n    });\n}\nmodule.exports = createCancelableRoomPromise;\n//# sourceMappingURL=cancelableroompromise.js.map","\r\n/**\r\n * @requires ./PriorityQueue.js\r\n */\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n      var PriorityQueue = require('./PriorityQueue.js');\r\n}\r\n\r\n/**\r\n * OPTICS - Ordering points to identify the clustering structure\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * OPTICS class constructor\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {OPTICS}\r\n */\r\nfunction OPTICS(dataset, epsilon, minPts, distanceFunction) {\r\n  /** @type {number} */\r\n  this.epsilon = 1;\r\n  /** @type {number} */\r\n  this.minPts = 1;\r\n  /** @type {function} */\r\n  this.distance = this._euclideanDistance;\r\n\r\n  // temporary variables used during computation\r\n\r\n  /** @type {Array} */\r\n  this._reachability = [];\r\n  /** @type {Array} */\r\n  this._processed = [];\r\n  /** @type {number} */\r\n  this._coreDistance = 0;\r\n  /** @type {Array} */\r\n  this._orderedList = [];\r\n\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n}\r\n\r\n/******************************************************************************/\r\n// pulic functions\r\n\r\n/**\r\n * Start clustering\r\n *\r\n * @param {Array} dataset\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nOPTICS.prototype.run = function(dataset, epsilon, minPts, distanceFunction) {\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n\r\n  for (var pointId = 0, l = this.dataset.length; pointId < l; pointId++) {\r\n    if (this._processed[pointId] !== 1) {\r\n      this._processed[pointId] = 1;\r\n      this.clusters.push([pointId]);\r\n      var clusterId = this.clusters.length - 1;\r\n\r\n      this._orderedList.push(pointId);\r\n      var priorityQueue = new PriorityQueue(null, null, 'asc');\r\n      var neighbors = this._regionQuery(pointId);\r\n\r\n      // using priority queue assign elements to new cluster\r\n      if (this._distanceToCore(pointId) !== undefined) {\r\n        this._updateQueue(pointId, neighbors, priorityQueue);\r\n        this._expandCluster(clusterId, priorityQueue);\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.clusters;\r\n};\r\n\r\n/**\r\n * Generate reachability plot for all points\r\n *\r\n * @returns {array}\r\n * @access public\r\n */\r\nOPTICS.prototype.getReachabilityPlot = function() {\r\n  var reachabilityPlot = [];\r\n\r\n  for (var i = 0, l = this._orderedList.length; i < l; i++) {\r\n    var pointId = this._orderedList[i];\r\n    var distance = this._reachability[pointId];\r\n\r\n    reachabilityPlot.push([pointId, distance]);\r\n  }\r\n\r\n  return reachabilityPlot;\r\n};\r\n\r\n/******************************************************************************/\r\n// protected functions\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distance\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._init = function(dataset, epsilon, minPts, distance) {\r\n\r\n  if (dataset) {\r\n\r\n    if (!(dataset instanceof Array)) {\r\n      throw Error('Dataset must be of type array, ' +\r\n        typeof dataset + ' given');\r\n    }\r\n\r\n    this.dataset = dataset;\r\n    this.clusters = [];\r\n    this._reachability = new Array(this.dataset.length);\r\n    this._processed = new Array(this.dataset.length);\r\n    this._coreDistance = 0;\r\n    this._orderedList = [];\r\n  }\r\n\r\n  if (epsilon) {\r\n    this.epsilon = epsilon;\r\n  }\r\n\r\n  if (minPts) {\r\n    this.minPts = minPts;\r\n  }\r\n\r\n  if (distance) {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * Update information in queue\r\n *\r\n * @param {number} pointId\r\n * @param {Array} neighbors\r\n * @param {PriorityQueue} queue\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._updateQueue = function(pointId, neighbors, queue) {\r\n  var self = this;\r\n\r\n  this._coreDistance = this._distanceToCore(pointId);\r\n  neighbors.forEach(function(pointId2) {\r\n    if (self._processed[pointId2] === undefined) {\r\n      var dist = self.distance(self.dataset[pointId], self.dataset[pointId2]);\r\n      var newReachableDistance = Math.max(self._coreDistance, dist);\r\n\r\n      if (self._reachability[pointId2] === undefined) {\r\n        self._reachability[pointId2] = newReachableDistance;\r\n        queue.insert(pointId2, newReachableDistance);\r\n      } else {\r\n        if (newReachableDistance < self._reachability[pointId2]) {\r\n          self._reachability[pointId2] = newReachableDistance;\r\n          queue.remove(pointId2);\r\n          queue.insert(pointId2, newReachableDistance);\r\n        }\r\n      }\r\n    }\r\n  });\r\n};\r\n\r\n/**\r\n * Expand cluster\r\n *\r\n * @param {number} clusterId\r\n * @param {PriorityQueue} queue\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._expandCluster = function(clusterId, queue) {\r\n  var queueElements = queue.getElements();\r\n\r\n  for (var p = 0, l = queueElements.length; p < l; p++) {\r\n    var pointId = queueElements[p];\r\n    if (this._processed[pointId] === undefined) {\r\n      var neighbors = this._regionQuery(pointId);\r\n      this._processed[pointId] = 1;\r\n\r\n      this.clusters[clusterId].push(pointId);\r\n      this._orderedList.push(pointId);\r\n\r\n      if (this._distanceToCore(pointId) !== undefined) {\r\n        this._updateQueue(pointId, neighbors, queue);\r\n        this._expandCluster(clusterId, queue);\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Calculating distance to cluster core\r\n *\r\n * @param {number} pointId\r\n * @returns {number}\r\n * @access protected\r\n */\r\nOPTICS.prototype._distanceToCore = function(pointId) {\r\n  var l = this.epsilon;\r\n  for (var coreDistCand = 0; coreDistCand < l; coreDistCand++) {\r\n    var neighbors = this._regionQuery(pointId, coreDistCand);\r\n    if (neighbors.length >= this.minPts) {\r\n      return coreDistCand;\r\n    }\r\n  }\r\n\r\n  return;\r\n};\r\n\r\n/**\r\n * Find all neighbors around given point\r\n *\r\n * @param {number} pointId\r\n * @param {number} epsilon\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nOPTICS.prototype._regionQuery = function(pointId, epsilon) {\r\n  epsilon = epsilon || this.epsilon;\r\n  var neighbors = [];\r\n\r\n  for (var id = 0, l = this.dataset.length; id < l; id++) {\r\n    if (this.distance(this.dataset[pointId], this.dataset[id]) < epsilon) {\r\n      neighbors.push(id);\r\n    }\r\n  }\r\n\r\n  return neighbors;\r\n};\r\n\r\n/******************************************************************************/\r\n// helpers\r\n\r\n/**\r\n * Calculate euclidean distance in multidimensional space\r\n *\r\n * @param {Array} p\r\n * @param {Array} q\r\n * @returns {number}\r\n * @access protected\r\n */\r\nOPTICS.prototype._euclideanDistance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    sum += (p[i] - q[i]) * (p[i] - q[i]);\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = OPTICS;\r\n}\r\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link QueueingEventEmitter} can queue events until a listener has been\n * added.\n * @extends EventEmitter\n */\nvar QueueingEventEmitter = /** @class */ (function (_super) {\n    __extends(QueueingEventEmitter, _super);\n    /**\n     * Construct a {@link QueueingEventEmitter}\n     */\n    function QueueingEventEmitter() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _queuedEvents: {\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    /**\n     * Emit any queued events.\n     * @returns {boolean} true if every event had listeners, false otherwise\n    */ /**\n     * Emit any queued events matching the event name.\n     * @param {string} event\n     * @returns {boolean} true if every event had listeners, false otherwise\n     */\n    QueueingEventEmitter.prototype.dequeue = function (event) {\n        var _this = this;\n        var result = true;\n        if (!event) {\n            this._queuedEvents.forEach(function (_, queuedEvent) {\n                result = this.dequeue(queuedEvent) && result;\n            }, this);\n            return result;\n        }\n        var queue = this._queuedEvents.get(event) || [];\n        this._queuedEvents.delete(event);\n        return queue.reduce(function (result, args) { return _this.emit.apply(_this, __spreadArray([], __read([event].concat(args)))) && result; }, result);\n    };\n    /**\n     * If the event has listeners, emit the event; otherwise, queue the event.\n     * @param {string} event\n     * @param {...*} args\n     * @returns {boolean} true if the event had listeners, false if the event was queued\n     */\n    QueueingEventEmitter.prototype.queue = function () {\n        var args = [].slice.call(arguments);\n        if (this.emit.apply(this, __spreadArray([], __read(args)))) {\n            return true;\n        }\n        var event = args[0];\n        if (!this._queuedEvents.has(event)) {\n            this._queuedEvents.set(event, []);\n        }\n        this._queuedEvents.get(event).push(args.slice(1));\n        return false;\n    };\n    return QueueingEventEmitter;\n}(EventEmitter));\nmodule.exports = QueueingEventEmitter;\n//# sourceMappingURL=queueingeventemitter.js.map","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalVideoTrackPublication} is a {@link LocalVideoTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"video\"\n * @property {LocalVideoTrack} track - the {@link LocalVideoTrack}\n */\nvar LocalVideoTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalVideoTrackPublication, _super);\n    /**\n     * Construct a {@link LocalVideoTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalVideoTrack} track - the {@link LocalVideoTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalVideoTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalVideoTrackPublication.prototype.toString = function () {\n        return \"[LocalVideoTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return LocalVideoTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalVideoTrackPublication;\n//# sourceMappingURL=localvideotrackpublication.js.map","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar makeUUID = require('../util').makeUUID;\n/**\n * A {@link DataTrackSender} represents a {@link DataTrackTransceiver} over\n * which data can be sent. Internally, it uses a collection of RTCDataChannels\n * to send data.\n * @extends DataTrackTransceiver\n */\nvar DataTrackSender = /** @class */ (function (_super) {\n    __extends(DataTrackSender, _super);\n    /**\n     * Construct a {@link DataTrackSender}.\n     * @param {?number} maxPacketLifeTime\n     * @param {?number} maxRetransmits\n     * @param {boolean} ordered\n     */\n    function DataTrackSender(maxPacketLifeTime, maxRetransmtis, ordered) {\n        var _this = _super.call(this, makeUUID(), maxPacketLifeTime, maxRetransmtis, ordered) || this;\n        Object.defineProperties(_this, {\n            _clones: {\n                value: new Set()\n            },\n            _dataChannels: {\n                value: new Set()\n            }\n        });\n        return _this;\n    }\n    /**\n     * Add a cloned {@link DataTrackSender}.\n     * @private\n     * @returns {void}\n     */\n    DataTrackSender.prototype._addClone = function (clone) {\n        this._clones.add(clone);\n    };\n    /**\n     * Remove a cloned {@link DataTrackSender}.\n     * @returns {void}\n     */\n    DataTrackSender.prototype.removeClone = function (clone) {\n        this._clones.delete(clone);\n    };\n    /**\n     * Add an RTCDataChannel to the {@link DataTrackSender}.\n     * @param {RTCDataChannel} dataChannel\n     * @returns {this}\n     */\n    DataTrackSender.prototype.addDataChannel = function (dataChannel) {\n        this._dataChannels.add(dataChannel);\n        return this;\n    };\n    /**\n     * Return a new {@link DataTrackSender}. Any message sent over this\n     * {@link DataTrackSender} will also be sent over the clone. Whenever this\n     * {@link DataTrackSender} is stopped, so to will the clone.\n     * @returns {DataTrackSender}\n     */\n    DataTrackSender.prototype.clone = function () {\n        var _this = this;\n        var clone = new DataTrackSender(this.maxPacketLifeTime, this.maxRetransmits, this.ordered);\n        this._addClone(clone);\n        clone.once('stopped', function () { return _this.removeClone(clone); });\n        return clone;\n    };\n    /**\n     * Remove an RTCDataChannel from the {@link DataTrackSender}.\n     * @param {RTCDataChannel} dataChannel\n     * @returns {this}\n     */\n    DataTrackSender.prototype.removeDataChannel = function (dataChannel) {\n        this._dataChannels.delete(dataChannel);\n        return this;\n    };\n    /**\n     * Send data over the {@link DataTrackSender}. Internally, this calls\n     * <code>send</code> over each of the underlying RTCDataChannels.\n     * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n     * @returns {this}\n     */\n    DataTrackSender.prototype.send = function (data) {\n        this._dataChannels.forEach(function (dataChannel) {\n            try {\n                dataChannel.send(data);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        this._clones.forEach(function (clone) {\n            try {\n                clone.send(data);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        return this;\n    };\n    DataTrackSender.prototype.stop = function () {\n        this._dataChannels.forEach(function (dataChannel) { return dataChannel.close(); });\n        this._clones.forEach(function (clone) { return clone.stop(); });\n        _super.prototype.stop.call(this);\n    };\n    return DataTrackSender;\n}(DataTrackTransceiver));\nmodule.exports = DataTrackSender;\n//# sourceMappingURL=sender.js.map","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module path */ /** for typedoc */\n__export(require(\"./pathNode\"));\n__export(require(\"./pathUtils\"));\n//# sourceMappingURL=index.js.map","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module url\n */\n/** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar urlMatcher_1 = require(\"./urlMatcher\");\nvar hof_1 = require(\"../common/hof\");\nvar urlRule_1 = require(\"./urlRule\");\nvar targetState_1 = require(\"../state/targetState\");\nvar common_2 = require(\"../common\");\n/** @hidden */\nfunction appendBasePath(url, isHtml5, absolute, baseHref) {\n    if (baseHref === '/')\n        return url;\n    if (isHtml5)\n        return common_2.stripLastPathElement(baseHref) + url;\n    if (absolute)\n        return baseHref.slice(1) + url;\n    return url;\n}\n/** @hidden */\nvar prioritySort = function (a, b) {\n    return (b.priority || 0) - (a.priority || 0);\n};\n/** @hidden */\nvar typeSort = function (a, b) {\n    var weights = { 'STATE': 4, 'URLMATCHER': 4, 'REGEXP': 3, 'RAW': 2, 'OTHER': 1 };\n    return (weights[a.type] || 0) - (weights[b.type] || 0);\n};\n/** @hidden */\nvar urlMatcherSort = function (a, b) {\n    return !a.urlMatcher || !b.urlMatcher ? 0 : urlMatcher_1.UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n};\n/** @hidden */\nvar idSort = function (a, b) {\n    // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n    var useMatchPriority = { STATE: true, URLMATCHER: true };\n    var equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n    return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n};\n/**\n * Default rule priority sorting function.\n *\n * Sorts rules by:\n *\n * - Explicit priority (set rule priority using [[UrlRulesApi.when]])\n * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n * - Rule registration order (for rule types other than STATE and URLMATCHER)\n *   - Equally sorted State and UrlMatcher rules will each match the URL.\n *     Then, the *best* match is chosen based on how many parameter values were matched.\n *\n * @coreapi\n */\nvar defaultRuleSortFn;\ndefaultRuleSortFn = function (a, b) {\n    var cmp = prioritySort(a, b);\n    if (cmp !== 0)\n        return cmp;\n    cmp = typeSort(a, b);\n    if (cmp !== 0)\n        return cmp;\n    cmp = urlMatcherSort(a, b);\n    if (cmp !== 0)\n        return cmp;\n    return idSort(a, b);\n};\n/**\n * Updates URL and responds to URL changes\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class updates the URL when the state changes.\n * It also responds to changes in the URL.\n */\nvar UrlRouter = /** @class */ (function () {\n    /** @hidden */\n    function UrlRouter(router) {\n        /** @hidden */ this._sortFn = defaultRuleSortFn;\n        /** @hidden */ this._rules = [];\n        /** @hidden */ this.interceptDeferred = false;\n        /** @hidden */ this._id = 0;\n        /** @hidden */ this._sorted = false;\n        this._router = router;\n        this.urlRuleFactory = new urlRule_1.UrlRuleFactory(router);\n        common_1.createProxyFunctions(hof_1.val(UrlRouter.prototype), this, hof_1.val(this));\n    }\n    /** @internalapi */\n    UrlRouter.prototype.dispose = function () {\n        this.listen(false);\n        this._rules = [];\n        delete this._otherwiseFn;\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.sort = function (compareFn) {\n        this._rules = this.stableSort(this._rules, this._sortFn = compareFn || this._sortFn);\n        this._sorted = true;\n    };\n    UrlRouter.prototype.ensureSorted = function () {\n        this._sorted || this.sort();\n    };\n    UrlRouter.prototype.stableSort = function (arr, compareFn) {\n        var arrOfWrapper = arr.map(function (elem, idx) { return ({ elem: elem, idx: idx }); });\n        arrOfWrapper.sort(function (wrapperA, wrapperB) {\n            var cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n            return cmpDiff === 0\n                ? wrapperA.idx - wrapperB.idx\n                : cmpDiff;\n        });\n        return arrOfWrapper.map(function (wrapper) { return wrapper.elem; });\n    };\n    /**\n     * Given a URL, check all rules and return the best [[MatchResult]]\n     * @param url\n     * @returns {MatchResult}\n     */\n    UrlRouter.prototype.match = function (url) {\n        var _this = this;\n        this.ensureSorted();\n        url = common_1.extend({ path: '', search: {}, hash: '' }, url);\n        var rules = this.rules();\n        if (this._otherwiseFn)\n            rules.push(this._otherwiseFn);\n        // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n        var checkRule = function (rule) {\n            var match = rule.match(url, _this._router);\n            return match && { match: match, rule: rule, weight: rule.matchPriority(match) };\n        };\n        // The rules are pre-sorted.\n        // - Find the first matching rule.\n        // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n        // - Choose the rule with the highest match weight.\n        var best;\n        for (var i = 0; i < rules.length; i++) {\n            // Stop when there is a 'best' rule and the next rule sorts differently than it.\n            if (best && this._sortFn(rules[i], best.rule) !== 0)\n                break;\n            var current = checkRule(rules[i]);\n            // Pick the best MatchResult\n            best = (!best || current && current.weight > best.weight) ? current : best;\n        }\n        return best;\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.sync = function (evt) {\n        if (evt && evt.defaultPrevented)\n            return;\n        var router = this._router, $url = router.urlService, $state = router.stateService;\n        var url = {\n            path: $url.path(), search: $url.search(), hash: $url.hash(),\n        };\n        var best = this.match(url);\n        var applyResult = hof_1.pattern([\n            [predicates_1.isString, function (newurl) { return $url.url(newurl, true); }],\n            [targetState_1.TargetState.isDef, function (def) { return $state.go(def.state, def.params, def.options); }],\n            [hof_1.is(targetState_1.TargetState), function (target) { return $state.go(target.state(), target.params(), target.options()); }],\n        ]);\n        applyResult(best && best.rule.handler(best.match, url, router));\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.listen = function (enabled) {\n        var _this = this;\n        if (enabled === false) {\n            this._stopFn && this._stopFn();\n            delete this._stopFn;\n        }\n        else {\n            return this._stopFn = this._stopFn || this._router.urlService.onChange(function (evt) { return _this.sync(evt); });\n        }\n    };\n    /**\n     * Internal API.\n     * @internalapi\n     */\n    UrlRouter.prototype.update = function (read) {\n        var $url = this._router.locationService;\n        if (read) {\n            this.location = $url.url();\n            return;\n        }\n        if ($url.url() === this.location)\n            return;\n        $url.url(this.location, true);\n    };\n    /**\n     * Internal API.\n     *\n     * Pushes a new location to the browser history.\n     *\n     * @internalapi\n     * @param urlMatcher\n     * @param params\n     * @param options\n     */\n    UrlRouter.prototype.push = function (urlMatcher, params, options) {\n        var replace = options && !!options.replace;\n        this._router.urlService.url(urlMatcher.format(params || {}), replace);\n    };\n    /**\n     * Builds and returns a URL with interpolated parameters\n     *\n     * #### Example:\n     * ```js\n     * matcher = $umf.compile(\"/about/:person\");\n     * params = { person: \"bob\" };\n     * $bob = $urlRouter.href(matcher, params);\n     * // $bob == \"/about/bob\";\n     * ```\n     *\n     * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n     * @param params An object of parameter values to fill the matcher's required parameters.\n     * @param options Options object. The options are:\n     *\n     * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n     *\n     * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n     */\n    UrlRouter.prototype.href = function (urlMatcher, params, options) {\n        var url = urlMatcher.format(params);\n        if (url == null)\n            return null;\n        options = options || { absolute: false };\n        var cfg = this._router.urlService.config;\n        var isHtml5 = cfg.html5Mode();\n        if (!isHtml5 && url !== null) {\n            url = '#' + cfg.hashPrefix() + url;\n        }\n        url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n        if (!options.absolute || !url) {\n            return url;\n        }\n        var slash = (!isHtml5 && url ? '/' : '');\n        var cfgPort = cfg.port();\n        var port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n        return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n    };\n    /**\n     * Manually adds a URL Rule.\n     *\n     * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n     * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n     * Rules can be created using [[UrlRouter.urlRuleFactory]], or create manually as simple objects.\n     *\n     * A rule should have a `match` function which returns truthy if the rule matched.\n     * It should also have a `handler` function which is invoked if the rule is the best match.\n     *\n     * @return a function that deregisters the rule\n     */\n    UrlRouter.prototype.rule = function (rule) {\n        var _this = this;\n        if (!urlRule_1.UrlRuleFactory.isUrlRule(rule))\n            throw new Error('invalid rule');\n        rule.$id = this._id++;\n        rule.priority = rule.priority || 0;\n        this._rules.push(rule);\n        this._sorted = false;\n        return function () { return _this.removeRule(rule); };\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.removeRule = function (rule) {\n        common_1.removeFrom(this._rules, rule);\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.rules = function () {\n        this.ensureSorted();\n        return this._rules.slice();\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.otherwise = function (handler) {\n        var handlerFn = getHandlerFn(handler);\n        this._otherwiseFn = this.urlRuleFactory.create(hof_1.val(true), handlerFn);\n        this._sorted = false;\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.initial = function (handler) {\n        var handlerFn = getHandlerFn(handler);\n        var matchFn = function (urlParts, router) {\n            return router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n        };\n        this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.when = function (matcher, handler, options) {\n        var rule = this.urlRuleFactory.create(matcher, handler);\n        if (predicates_1.isDefined(options && options.priority))\n            rule.priority = options.priority;\n        this.rule(rule);\n        return rule;\n    };\n    /** @inheritdoc */\n    UrlRouter.prototype.deferIntercept = function (defer) {\n        if (defer === undefined)\n            defer = true;\n        this.interceptDeferred = defer;\n    };\n    return UrlRouter;\n}());\nexports.UrlRouter = UrlRouter;\nfunction getHandlerFn(handler) {\n    if (!predicates_1.isFunction(handler) && !predicates_1.isString(handler) && !hof_1.is(targetState_1.TargetState)(handler) && !targetState_1.TargetState.isDef(handler)) {\n        throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n    }\n    return predicates_1.isFunction(handler) ? handler : hof_1.val(handler);\n}\n//# sourceMappingURL=urlRouter.js.map","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays:\n            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n                '_'\n            ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.41\n   Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n   MIT License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://faisalman.github.io/ua-parser-js\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '1.0.41',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor.e552cf92',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded',\n        UA_MAX_LENGTH = 500;\n\n    var AMAZON  = 'Amazon',\n        APPLE   = 'Apple',\n        ASUS    = 'ASUS',\n        BLACKBERRY = 'BlackBerry',\n        BROWSER = 'Browser',\n        CHROME  = 'Chrome',\n        EDGE    = 'Edge',\n        FIREFOX = 'Firefox',\n        GOOGLE  = 'Google',\n        HONOR   = 'Honor',\n        HUAWEI  = 'Huawei',\n        LENOVO  = 'Lenovo',\n        LG      = 'LG',\n        MICROSOFT = 'Microsoft',\n        MOTOROLA  = 'Motorola',\n        NVIDIA  = 'Nvidia',\n        ONEPLUS = 'OnePlus',\n        OPERA   = 'Opera',\n        OPPO    = 'OPPO',\n        SAMSUNG = 'Samsung',\n        SHARP   = 'Sharp',\n        SONY    = 'Sony',\n        XIAOMI  = 'Xiaomi',\n        ZEBRA   = 'Zebra',\n        FACEBOOK    = 'Facebook',\n        CHROMIUM_OS = 'Chromium OS',\n        MAC_OS  = 'Mac OS',\n        SUFFIX_BROWSER = ' Browser';\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        lowerize = function (str) {\n            return str.toLowerCase();\n        },\n        majorize = function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n        },\n        trim = function (str, len) {\n            if (typeof(str) === STR_TYPE) {\n                str = str.replace(/^\\s\\s*/, EMPTY);\n                return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    // Safari < 3.0\n    var oldSafariMap = {\n            '1.0'   : '/8',\n            '1.2'   : '/1',\n            '1.3'   : '/3',\n            '2.0'   : '/412',\n            '2.0.2' : '/416',\n            '2.0.3' : '/417',\n            '2.0.4' : '/419',\n            '?'     : '/'\n        },\n        windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var regexes = {\n\n        browser : [[\n\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(heytap|ovi|115)browser\\/([\\d\\.]+)/i,                              // HeyTap/Ovi/115\n            /(weibo)__([\\d\\.]+)/i                                               // Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UC'+BROWSER]], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, 'Sogou Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, 'Sogou Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|rekonq)/i,                                              // LieBao Browser/Rekonq\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME], [\n            /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,                                  // Iron\n            /ome\\/([\\w\\.]+).+qihu (360)[es]e/i                                  // 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION], [\n            /(Klarna)\\/([\\w\\.]+)/i,                                             // Klarna Shopping Browser for iOS & Android\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /(daum)apps[\\/ ]([\\w\\.]+)/i,                                        // Daum App\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i                     // Chromium/Instagram/Snapchat\n            ], [NAME, VERSION], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA']], [\n            /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i                        // TikTok\n            ], [VERSION, [NAME, 'TikTok']], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i                      // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n            /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i                // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n            /\\b(links) \\(([\\w\\.]+)/i                                            // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /master.|lts./, \"\"]]\n        ],\n\n        cpu : [[\n\n            /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i                                 // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i,                                                     // IA32 (quicktime)\n            /\\b((i[346]|x)86)(pc)?\\b/i                                          // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i                               // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i                                     // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((ppc|powerpc)(64)?)( mac|;|\\))/i                                  // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            / sun4\\w[;\\)]/i                                                     // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i                          // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n            /honor([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n            /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i                                // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,                  // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,        // Xiaomi Redmi 'numeric' models\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n            / ([\\w ]+) miui\\/v?\\d/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n            /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n            // Vivo\n            /vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+((?!browser|netcast|android tv|watch)\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n            /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n            // Nokia\n            /(nokia) (t[12][01])/i\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n            /nokia[-_ ]?(([-\\w\\. ]*))/i\n            ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n            // Google\n            /(pixel (c|tablet))\\b/i                                             // Google Pixel C/Tablet\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(?:015|06[35]|142p?))/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // Archos\n            /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n            /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n            /archos ([\\w ]+)( b|\\))/i,\n            /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(infinix) (x1101b?)/i                                              // Infinix XPad\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n            /; (hmd|imo) ([\\w ]+?)(?: bui|\\))/i,                                // HMD/IMO\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i,                          // Lenovo\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(nook)[\\w ]+build\\/(\\w+)/i,                                        // Nook\n            /(dell) (strea[kpr\\d ]*[\\dko])/i,                                   // Dell Streak\n            /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,                                  // Le Pan Tablets\n            /(trinity)[- ]*(t\\d{3}) bui/i,                                      // Trinity Tablets\n            /(gigaset)[- ]+(q\\w{1,9}) bui/i,                                    // Gigaset Tablets\n            /(vodafone) ([\\w ]+)(?:\\)| bui)/i                                   // Vodafone\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /(u304aa)/i                                                         // AT&T\n            ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n            /\\bsie-(\\w*)/i                                                      // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n            /\\b(rct\\w+) b/i                                                     // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n            /\\b(venue[\\d ]{2,7}) b/i                                            // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n            /\\b(q(?:mv|ta)\\w+) b/i                                              // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n            /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i                       // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n            /\\b(tm\\d{3}\\w+) b/i\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n            /\\b(k88) b/i                                                        // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n            /\\b(nx\\d{3}j) b/i                                                   // ZTE Nubia\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n            /\\b(gen\\d{3}) b.+49h/i                                              // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n            /\\b(zur\\d{3}) b/i                                                   // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n            /\\b((zeki)?tb.*\\b) b/i                                              // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n            /\\b([yr]\\d{2}) b/i,\n            /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i                                // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n            /\\b(ns-?\\w{0,9}) b/i                                                // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n            /\\b((nxa|next)-?\\w{0,9}) b/i                                        // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n            /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i                  // Voice Xtreme Phones\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n            /\\b(lvtel\\-)?(v1[12]) b/i                                           // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n            /\\b(ph-1) /i                                                        // Essential PH-1\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n            /\\b(v(100md|700na|7011|917g).*\\b) b/i                               // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n            /\\b(trio[-\\w\\. ]+) b/i                                              // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n            /\\btu_(1491) b/i                                                    // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n            /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i              // Nvidia Tablets\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i             // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i        // LG SmartTV\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /(shield \\w+ tv)/i                                                  // Nvidia Shield TV\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                              // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mi(tv|box)-?\\w+) bui/i                                            // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n                                                                                // SmartTV from Unidentified Vendors\n            /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n            ], [MODEL, [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) ([wids3utch]+)/i                                        // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield)( bui|\\))/i                                       // Nvidia Portable\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n            /(playstation \\w+)/i                                                // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i                       // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i,                                                   // Pebble\n            /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i        // Asus ZenWatch / LG Watch / Pixel Watch\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(ow(?:19|20)?we?[1-3]{1,3})/i                                      // Oppo Watch\n            ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /(opwwe\\d{3})/i                                                     // OnePlus Watch\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n            /(moto 360)/i                                                       // Motorola 360\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n            /(smartwatch 3)/i                                                   // Sony SmartWatch\n            ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n            /(g watch r)/i                                                      // LG G Watch R\n            ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n            /(pico) (4|neo3(?: link|pro)?)/i                                    // Pico\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /; (quest( \\d| pro)?)/i                                             // Oculus Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n            /(homepod).+mac os/i                                                // Apple HomePod\n            ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n            /windows iot/i\n            ], [[TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i    // Android Phones from Unidentified Vendors\n            ], [MODEL, [TYPE, MOBILE]], [\n            /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i       // Android Tablets from Unidentified Vendors\n            ], [MODEL, [TYPE, TABLET]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /droid .+?; ([\\w\\. -]+)( bui|\\))/i                                  // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n\n            /\\b(libweb)/i                                                       // LibWeb\n            ], [NAME, VERSION], [\n            /ladybird\\//i\n            ], [[NAME, 'LibWeb']], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i         // Windows Phone\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /windows nt 6\\.2; (arm)/i,                                          // Windows RT\n            /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n            /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n            // iOS/macOS\n            /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,             // iOS\n            /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i                    // Android-x86/HarmonyOS\n            ], [VERSION, NAME], [                                               \n            /(ubuntu) ([\\w\\.]+) like android/i                                  // Ubuntu Touch\n            ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n                                                                                // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n            /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/; ]?([\\d\\.]*)/i\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i       // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n            /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google Chromecast\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast\n            ], [VERSION, [NAME, CHROME+'cast']], [\n            /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                  // Chromium OS\n            ], [[NAME, CHROMIUM_OS], VERSION],[\n\n            // Smart TVs\n            /panasonic;(viera)/i,                                               // Panasonic Viera\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) ([wids345portablevuch]+)/i,                 // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i,                     // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    var UAParser = function (ua, extensions) {\n\n        if (typeof ua === OBJ_TYPE) {\n            extensions = ua;\n            ua = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions).getResult();\n        }\n\n        var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n        var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n        var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n        var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n        var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n        this.getBrowser = function () {\n            var _browser = {};\n            _browser[NAME] = undefined;\n            _browser[VERSION] = undefined;\n            rgxMapper.call(_browser, _ua, _rgxmap.browser);\n            _browser[MAJOR] = majorize(_browser[VERSION]);\n            // Brave-specific detection\n            if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n                _browser[NAME] = 'Brave';\n            }\n            return _browser;\n        };\n        this.getCPU = function () {\n            var _cpu = {};\n            _cpu[ARCHITECTURE] = undefined;\n            rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n            return _cpu;\n        };\n        this.getDevice = function () {\n            var _device = {};\n            _device[VENDOR] = undefined;\n            _device[MODEL] = undefined;\n            _device[TYPE] = undefined;\n            rgxMapper.call(_device, _ua, _rgxmap.device);\n            if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n                _device[TYPE] = MOBILE;\n            }\n            // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n            if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n                _device[MODEL] = 'iPad';\n                _device[TYPE] = TABLET;\n            }\n            return _device;\n        };\n        this.getEngine = function () {\n            var _engine = {};\n            _engine[NAME] = undefined;\n            _engine[VERSION] = undefined;\n            rgxMapper.call(_engine, _ua, _rgxmap.engine);\n            return _engine;\n        };\n        this.getOS = function () {\n            var _os = {};\n            _os[NAME] = undefined;\n            _os[VERSION] = undefined;\n            rgxMapper.call(_os, _ua, _rgxmap.os);\n            if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n                _os[NAME] = _uach.platform  \n                                    .replace(/chrome os/i, CHROMIUM_OS)\n                                    .replace(/macos/i, MAC_OS);           // backward compatibility\n            }\n            return _os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return _ua;\n        };\n        this.setUA = function (ua) {\n            _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n            return this;\n        };\n        this.setUA(_ua);\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    ///////////\n    // Export\n    //////////\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === FUNC_TYPE && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (typeof window !== UNDEF_TYPE) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (ua) {\n            parser.setUA(ua);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort:\n            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/ecma262/#sec-installerrorcause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.45.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.45.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link Track} represents a stream of audio, video, or data.\n * @extends EventEmitter\n * @property {Track.Kind} kind - The {@link Track}'s kind\n * @property {string} name - The {@link Track}'s name\n */\nvar Track = /** @class */ (function (_super) {\n    __extends(Track, _super);\n    /**\n     * Construct a {@link Track}.\n     * @param {Track.ID} id - The {@link Track}'s ID\n     * @param {Track.Kind} kind - The {@link Track}'s kind\n     * @param {{ log: Log, name: ?string }} options\n     */\n    function Track(id, kind, options) {\n        var _this = this;\n        options = Object.assign({\n            name: id,\n            log: null,\n            logLevel: DEFAULT_LOG_LEVEL\n        }, options);\n        _this = _super.call(this) || this;\n        var name = String(options.name);\n        var logLevels = buildLogLevels(options.logLevel);\n        var log = options.log\n            ? options.log.createLog('media', _this)\n            : new Log('media', _this, logLevels, options.loggerName);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: ++nInstances\n            },\n            _log: {\n                value: log\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            },\n            name: {\n                enumerable: true,\n                value: name\n            }\n        });\n        return _this;\n    }\n    Track.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    return Track;\n}(EventEmitter));\n/**\n * The {@link Track} ID is a string identifier for the {@link Track}.\n * @typedef {string} Track.ID\n */\n/**\n * The {@link Track} kind is either \"audio\", \"video\", or \"data\".\n * @typedef {string} Track.Kind\n */\n/**\n * The {@link Track}'s priority can be \"low\", \"standard\", or \"high\".\n * @typedef {string} Track.Priority\n */\n/**\n * The {@link Track} SID is a unique string identifier for the {@link Track}\n * that is published to a {@link Room}.\n * @typedef {string} Track.SID\n */\n/**\n * A {@link DataTrack} is a {@link LocalDataTrack} or {@link RemoteDataTrack}.\n * @typedef {LocalDataTrack|RemoteDataTrack} DataTrack\n */\n/**\n * A {@link LocalTrack} is a {@link LocalAudioTrack}, {@link LocalVideoTrack},\n * or {@link LocalDataTrack}.\n * @typedef {LocalAudioTrack|LocalVideoTrack|LocalDataTrack} LocalTrack\n */\n/**\n * {@link LocalTrack} options\n * @typedef {object} LocalTrackOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n *   it is set to the {@link LocalTrack}'s ID.\n */\n/**\n * A {@link RemoteTrack} is a {@link RemoteAudioTrack},\n * {@link RemoteVideoTrack}, or {@link RemoteDataTrack}.\n * @typedef {RemoteAudioTrack|RemoteVideoTrack|RemoteDataTrack} RemoteTrack\n */\nmodule.exports = Track;\n//# sourceMappingURL=index.js.map","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar objectCreate = require('../internals/object-create');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar $Array = Array;\nvar push = uncurryThis([].push);\n\nmodule.exports = function ($this, callbackfn, that, specificConstructor) {\n  var O = toObject($this);\n  var self = IndexedObject(O);\n  var boundFunction = bind(callbackfn, that);\n  var target = objectCreate(null);\n  var length = lengthOfArrayLike(self);\n  var index = 0;\n  var Constructor, key, value;\n  for (;length > index; index++) {\n    value = self[index];\n    key = toPropertyKey(boundFunction(value, index, O));\n    // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys\n    // but since it's a `null` prototype object, we can safely use `in`\n    if (key in target) push(target[key], value);\n    else target[key] = [value];\n  }\n  // TODO: Remove this block from `core-js@4`\n  if (specificConstructor) {\n    Constructor = specificConstructor(O);\n    if (Constructor !== $Array) {\n      for (key in target) target[key] = arrayFromConstructorAndList(Constructor, target[key]);\n    }\n  } return target;\n};\n","/**\r\n * @license Angulartics\r\n * (c) 2013 Luis Farzati http://angulartics.github.io/\r\n * License: MIT\r\n */\r\n(function(angular, analytics) {\r\n'use strict';\r\n\r\nvar angulartics = window.angulartics || (window.angulartics = {});\r\nangulartics.waitForVendorCount = 0;\r\nangulartics.waitForVendorApi = function (objectName, delay, containsField, registerFn, onTimeout) {\r\n  if (!onTimeout) { angulartics.waitForVendorCount++; }\r\n  if (!registerFn) { registerFn = containsField; containsField = undefined; }\r\n  if (!Object.prototype.hasOwnProperty.call(window, objectName) || (containsField !== undefined && window[objectName][containsField] === undefined)) {\r\n    setTimeout(function () { angulartics.waitForVendorApi(objectName, delay, containsField, registerFn, true); }, delay);\r\n  }\r\n  else {\r\n    angulartics.waitForVendorCount--;\r\n    registerFn(window[objectName]);\r\n  }\r\n};\r\n\r\n/**\r\n * @ngdoc overview\r\n * @name angulartics\r\n */\r\nangular.module('angulartics', [])\r\n.provider('$analytics', $analytics)\r\n.run(['$rootScope', '$window', '$analytics', '$injector', $analyticsRun])\r\n.directive('analyticsOn', ['$analytics', analyticsOn])\r\n.config(['$provide', exceptionTrack]);\r\n\r\nfunction $analytics() {\r\n  var vm = this;\r\n\r\n  var settings = {\r\n    pageTracking: {\r\n      autoTrackFirstPage: true,\r\n      autoTrackVirtualPages: true,\r\n      trackRelativePath: false,\r\n      trackRoutes: true,\r\n      trackStates: true,\r\n      autoBasePath: false,\r\n      basePath: '',\r\n      excludedRoutes: [],\r\n      queryKeysWhitelisted: [],\r\n      queryKeysBlacklisted: []\r\n    },\r\n    eventTracking: {},\r\n    bufferFlushDelay: 1000, // Support only one configuration for buffer flush delay to simplify buffering\r\n    trackExceptions: false,\r\n    optOut: false,\r\n    developerMode: false // Prevent sending data in local/development environment\r\n  };\r\n\r\n  // List of known handlers that plugins can register themselves for\r\n  var knownHandlers = [\r\n    'pageTrack',\r\n    'eventTrack',\r\n    'exceptionTrack',\r\n    'transactionTrack',\r\n    'setAlias',\r\n    'setUsername',\r\n    'setUserProperties',\r\n    'setUserPropertiesOnce',\r\n    'setSuperProperties',\r\n    'setSuperPropertiesOnce',\r\n    'incrementProperty',\r\n    'userTimings',\r\n    'clearCookies'\r\n  ];\r\n  // Cache and handler properties will match values in 'knownHandlers' as the buffering functons are installed.\r\n  var cache = {};\r\n  var handlers = {};\r\n  var handlerOptions = {};\r\n\r\n  // General buffering handler\r\n  function bufferedHandler(handlerName){\r\n    return function(){\r\n      if(angulartics.waitForVendorCount){\r\n        if(!cache[handlerName]){ cache[handlerName] = []; }\r\n        cache[handlerName].push(arguments);\r\n      }\r\n    };\r\n  }\r\n\r\n  // As handlers are installed by plugins, they get pushed into a list and invoked in order.\r\n  function updateHandlers(handlerName, fn, options){\r\n    if(!handlers[handlerName]){\r\n      handlers[handlerName] = [];\r\n    }\r\n    handlers[handlerName].push(fn);\r\n    handlerOptions[fn] = options;\r\n    return function(){\r\n      if(!this.settings.optOut) {\r\n        var handlerArgs = Array.prototype.slice.apply(arguments);\r\n        return this.$inject(['$q', angular.bind(this, function($q) {\r\n          return $q.all(handlers[handlerName].map(function(handlerFn) {\r\n            var options = handlerOptions[handlerFn] || {};\r\n            if (options.async) {\r\n              var deferred = $q.defer();\r\n              var currentArgs = angular.copy(handlerArgs);\r\n              currentArgs.unshift(deferred.resolve);\r\n              handlerFn.apply(this, currentArgs);\r\n              return deferred.promise;\r\n            } else{\r\n              return $q.when(handlerFn.apply(this, handlerArgs));\r\n            }\r\n          }, this));\r\n        })]);\r\n      }\r\n    };\r\n  }\r\n\r\n  // The api (returned by this provider) gets populated with handlers below.\r\n  var api = {\r\n    settings: settings\r\n  };\r\n\r\n  // Opt in and opt out functions\r\n  api.setOptOut = function(optOut) {\r\n    this.settings.optOut = optOut;\r\n    triggerRegister();\r\n  };\r\n\r\n  api.getOptOut = function() {\r\n    return this.settings.optOut;\r\n  };\r\n\r\n\r\n  // Will run setTimeout if delay is > 0\r\n  // Runs immediately if no delay to make sure cache/buffer is flushed before anything else.\r\n  // Plugins should take care to register handlers by order of precedence.\r\n  function onTimeout(fn, delay){\r\n    if(delay){\r\n      setTimeout(fn, delay);\r\n    } else {\r\n      fn();\r\n    }\r\n  }\r\n\r\n  var provider = {\r\n    $get: ['$injector', function($injector) {\r\n      return apiWithInjector($injector);\r\n    }],\r\n    api: api,\r\n    settings: settings,\r\n    virtualPageviews: function (value) { this.settings.pageTracking.autoTrackVirtualPages = value; },\r\n    trackStates: function (value) { this.settings.pageTracking.trackStates = value; },\r\n    trackRoutes: function (value) { this.settings.pageTracking.trackRoutes = value; },\r\n    excludeRoutes: function(routes) { this.settings.pageTracking.excludedRoutes = routes; },\r\n    queryKeysWhitelist: function(keys) { this.settings.pageTracking.queryKeysWhitelisted = keys; },\r\n    queryKeysBlacklist: function(keys) { this.settings.pageTracking.queryKeysBlacklisted = keys; },\r\n    firstPageview: function (value) { this.settings.pageTracking.autoTrackFirstPage = value; },\r\n    withBase: function (value) {\r\n      this.settings.pageTracking.basePath = (value) ? angular.element(document).find('base').attr('href') : '';\r\n    },\r\n    withAutoBase: function (value) { this.settings.pageTracking.autoBasePath = value; },\r\n    trackExceptions: function (value) { this.settings.trackExceptions = value; },\r\n    developerMode: function(value) { this.settings.developerMode = value; }\r\n  };\r\n\r\n  // General function to register plugin handlers. Flushes buffers immediately upon registration according to the specified delay.\r\n  function register(handlerName, fn, options){\r\n    // Do not add a handler if developerMode is true\r\n    if (settings.developerMode) {\r\n        return;\r\n    }\r\n    api[handlerName] = updateHandlers(handlerName, fn, options);\r\n    var handlerSettings = settings[handlerName];\r\n    var handlerDelay = (handlerSettings) ? handlerSettings.bufferFlushDelay : null;\r\n    var delay = (handlerDelay !== null) ? handlerDelay : settings.bufferFlushDelay;\r\n    angular.forEach(cache[handlerName], function (args, index) {\r\n      onTimeout(function () { fn.apply(this, args); }, index * delay);\r\n    });\r\n  }\r\n\r\n  function capitalize(input) {\r\n      return input.replace(/^./, function (match) {\r\n          return match.toUpperCase();\r\n      });\r\n  }\r\n\r\n  //provide a method to inject services into handlers\r\n  var apiWithInjector = function(injector) {\r\n    return angular.extend(api, {\r\n      '$inject': injector.invoke\r\n    });\r\n  };\r\n\r\n  // Adds to the provider a 'register#{handlerName}' function that manages multiple plugins and buffer flushing.\r\n  function installHandlerRegisterFunction(handlerName){\r\n    var registerName = 'register'+capitalize(handlerName);\r\n    provider[registerName] = function(fn, options){\r\n      register(handlerName, fn, options);\r\n    };\r\n    api[handlerName] = updateHandlers(handlerName, bufferedHandler(handlerName));\r\n  }\r\n\r\n  function startRegistering(_provider, _knownHandlers, _installHandlerRegisterFunction) {\r\n    angular.forEach(_knownHandlers, _installHandlerRegisterFunction);\r\n\r\n    for (var key in _provider) {\r\n      vm[key] = _provider[key];\r\n    }\r\n  }\r\n\r\n  // Allow $angulartics to trigger the register to update opt in/out\r\n  var triggerRegister = function() {\r\n    startRegistering(provider, knownHandlers, installHandlerRegisterFunction);\r\n  };\r\n\r\n  // Initial register\r\n  startRegistering(provider, knownHandlers, installHandlerRegisterFunction);\r\n\r\n}\r\n\r\nfunction $analyticsRun($rootScope, $window, $analytics, $injector) {\r\n\r\n  function matchesExcludedRoute(url) {\r\n    for (var i = 0; i < $analytics.settings.pageTracking.excludedRoutes.length; i++) {\r\n      var excludedRoute = $analytics.settings.pageTracking.excludedRoutes[i];\r\n      if ((excludedRoute instanceof RegExp && excludedRoute.test(url)) || url.indexOf(excludedRoute) > -1) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  function arrayDifference(a1, a2) {\r\n    var result = [];\r\n    for (var i = 0; i < a1.length; i++) {\r\n      if (a2.indexOf(a1[i]) === -1) {\r\n        result.push(a1[i]);\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  function filterQueryString(url, keysMatchArr, thisType){\r\n    if (/\\?/.test(url) && keysMatchArr.length > 0) {\r\n      var urlArr = url.split('?');\r\n      var urlBase = urlArr[0];\r\n      var pairs = urlArr[1].split('&');\r\n      var matchedPairs = [];\r\n\r\n      for (var i = 0; i < keysMatchArr.length; i++) {\r\n        var listedKey = keysMatchArr[i];\r\n        for (var j = 0; j < pairs.length; j++) {\r\n          if ((listedKey instanceof RegExp && listedKey.test(pairs[j])) || pairs[j].indexOf(listedKey) > -1) matchedPairs.push(pairs[j]);\r\n        }\r\n      }\r\n\r\n      var matchedPairsArr = (thisType == 'white' ? matchedPairs : arrayDifference(pairs,matchedPairs));\r\n      if(matchedPairsArr.length > 0){\r\n        return urlBase + '?' + matchedPairsArr.join('&');\r\n      }else{\r\n        return urlBase;\r\n      }\r\n    } else {\r\n      return url;\r\n    }\r\n  }\r\n\r\n  function whitelistQueryString(url){\r\n    return filterQueryString(url, $analytics.settings.pageTracking.queryKeysWhitelisted, 'white');\r\n  }\r\n\r\n  function blacklistQueryString(url){\r\n    return filterQueryString(url, $analytics.settings.pageTracking.queryKeysBlacklisted, 'black');\r\n  }\r\n\r\n  function pageTrack(url, $location) {\r\n    if (!matchesExcludedRoute(url)) {\r\n      url = whitelistQueryString(url);\r\n      url = blacklistQueryString(url);\r\n      $analytics.pageTrack(url, $location);\r\n    }\r\n  }\r\n\r\n  if ($analytics.settings.pageTracking.autoTrackFirstPage) {\r\n    $injector.invoke(['$location', function ($location) {\r\n      /* Only track the 'first page' if there are no routes or states on the page */\r\n      var noRoutesOrStates = true;\r\n      if ($injector.has('$route')) {\r\n         var $route = $injector.get('$route');\r\n         if ($route) {\r\n          for (var route in $route.routes) {\r\n            noRoutesOrStates = false;\r\n            break;\r\n          }\r\n         } else if ($route === null){\r\n          noRoutesOrStates = false;\r\n         }\r\n      } else if ($injector.has('$state')) {\r\n        var $state = $injector.get('$state');\r\n        for (var state in $state.get()) {\r\n          noRoutesOrStates = false;\r\n          break;\r\n        }\r\n      }\r\n      if (noRoutesOrStates) {\r\n        if ($analytics.settings.pageTracking.autoBasePath) {\r\n          $analytics.settings.pageTracking.basePath = $window.location.pathname;\r\n        }\r\n        if ($analytics.settings.pageTracking.trackRelativePath) {\r\n          var url = $analytics.settings.pageTracking.basePath + $location.url();\r\n          pageTrack(url, $location);\r\n        } else {\r\n          pageTrack($location.absUrl(), $location);\r\n        }\r\n      }\r\n    }]);\r\n  }\r\n\r\n  if ($analytics.settings.pageTracking.autoTrackVirtualPages) {\r\n    $injector.invoke(['$location', function ($location) {\r\n      if ($analytics.settings.pageTracking.autoBasePath) {\r\n        /* Add the full route to the base. */\r\n        $analytics.settings.pageTracking.basePath = $window.location.pathname + \"#\";\r\n      }\r\n      var noRoutesOrStates = true;\r\n\r\n      if ($analytics.settings.pageTracking.trackRoutes) {\r\n        if ($injector.has('$route')) {\r\n          var $route = $injector.get('$route');\r\n          if ($route) {\r\n            for (var route in $route.routes) {\r\n              noRoutesOrStates = false;\r\n              break;\r\n            }\r\n          } else if ($route === null){\r\n            noRoutesOrStates = false;\r\n          }\r\n          $rootScope.$on('$routeChangeSuccess', function (event, current) {\r\n            if (current && (current.$$route||current).redirectTo) return;\r\n            var url = $analytics.settings.pageTracking.basePath + $location.url();\r\n            pageTrack(url, $location);\r\n          });\r\n        }\r\n      }\r\n\r\n      if ($analytics.settings.pageTracking.trackStates) {\r\n        if ($injector.has('$state') && !$injector.has('$transitions')) {\r\n          noRoutesOrStates = false;\r\n          $rootScope.$on('$stateChangeSuccess', function (event, current) {\r\n            var url = $analytics.settings.pageTracking.basePath + $location.url();\r\n            pageTrack(url, $location);\r\n          });\r\n        }\r\n        if ($injector.has('$state') && $injector.has('$transitions')) {\r\n          noRoutesOrStates = false;\r\n          $injector.invoke(['$transitions', function($transitions) {\r\n            $transitions.onSuccess({}, function($transition$) {\r\n              var transitionOptions = $transition$.options();\r\n\r\n              // only track for transitions that would have triggered $stateChangeSuccess\r\n              if (transitionOptions.notify) {\r\n                var url = $analytics.settings.pageTracking.basePath + $location.url();\r\n                pageTrack(url, $location);\r\n              }\r\n            });\r\n          }]);\r\n        }\r\n      }\r\n\r\n        if (noRoutesOrStates) {\r\n          $rootScope.$on('$locationChangeSuccess', function (event, current) {\r\n            if (current && (current.$$route || current).redirectTo) return;\r\n            if ($analytics.settings.pageTracking.trackRelativePath) {\r\n              var url = $analytics.settings.pageTracking.basePath + $location.url();\r\n              pageTrack(url, $location);\r\n            } else {\r\n              pageTrack($location.absUrl(), $location);\r\n            }\r\n          });\r\n        }\r\n    }]);\r\n  }\r\n  if ($analytics.settings.developerMode) {\r\n    angular.forEach($analytics, function(attr, name) {\r\n      if (typeof attr === 'function') {\r\n        $analytics[name] = function(){};\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nfunction analyticsOn($analytics) {\r\n  return {\r\n    restrict: 'A',\r\n    link: function ($scope, $element, $attrs) {\r\n      var eventType = $attrs.analyticsOn || 'click';\r\n      var trackingData = {};\r\n\r\n      angular.forEach($attrs.$attr, function(attr, name) {\r\n        if (isProperty(name)) {\r\n          trackingData[propertyName(name)] = $attrs[name];\r\n          $attrs.$observe(name, function(value){\r\n            trackingData[propertyName(name)] = value;\r\n          });\r\n        }\r\n      });\r\n\r\n      angular.element($element[0]).bind(eventType, function ($event) {\r\n        var eventName = $attrs.analyticsEvent || inferEventName($element[0]);\r\n        trackingData.eventType = $event.type;\r\n\r\n        if($attrs.analyticsIf){\r\n          if(! $scope.$eval($attrs.analyticsIf)){\r\n            return; // Cancel this event if we don't pass the analytics-if condition\r\n          }\r\n        }\r\n        // Allow components to pass through an expression that gets merged on to the event properties\r\n        // eg. analytics-properites='myComponentScope.someConfigExpression.$analyticsProperties'\r\n        if($attrs.analyticsProperties){\r\n          angular.extend(trackingData, $scope.$eval($attrs.analyticsProperties));\r\n        }\r\n        $analytics.eventTrack(eventName, trackingData);\r\n      });\r\n    }\r\n  };\r\n}\r\n\r\nfunction exceptionTrack($provide) {\r\n  $provide.decorator('$exceptionHandler', ['$delegate', '$injector', function ($delegate, $injector) {\r\n    return function (error, cause) {\r\n      var result = $delegate(error, cause);\r\n      var $analytics = $injector.get('$analytics');\r\n      if ($analytics.settings.trackExceptions) {\r\n        $analytics.exceptionTrack(error, cause);\r\n      }\r\n      return result;\r\n    };\r\n  }]);\r\n}\r\n\r\nfunction isCommand(element) {\r\n  return ['a:','button:','button:button','button:submit','input:button','input:submit'].indexOf(\r\n    element.tagName.toLowerCase()+':'+(element.type||'')) >= 0;\r\n}\r\n\r\nfunction inferEventType(element) {\r\n  if (isCommand(element)) return 'click';\r\n  return 'click';\r\n}\r\n\r\nfunction inferEventName(element) {\r\n  if (isCommand(element)) return element.innerText || element.value;\r\n  return element.id || element.name || element.tagName;\r\n}\r\n\r\nfunction isProperty(name) {\r\n  return name.substr(0, 9) === 'analytics' && ['On', 'Event', 'If', 'Properties', 'EventType'].indexOf(name.substr(9)) === -1;\r\n}\r\n\r\nfunction propertyName(name) {\r\n  var s = name.slice(9); // slice off the 'analytics' prefix\r\n  if (typeof s !== 'undefined' && s!==null && s.length > 0) {\r\n    return s.substring(0, 1).toLowerCase() + s.substring(1);\r\n  }\r\n  else {\r\n    return s;\r\n  }\r\n}\r\n})(angular);\r\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n//      \nvar charCodeOfDot = \".\".charCodeAt(0);\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar rePropName = RegExp( // Match anything that isn't a dot or bracket.\n\"[^.[\\\\]]+\" + \"|\" + // Or match property names within brackets.\n\"\\\\[(?:\" + // Match a non-string expression.\n\"([^\\\"'][^[]*)\" + \"|\" + // Or match strings (supports escaping characters).\n\"([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2\" + \")\\\\]\" + \"|\" + // Or match \"\" as the space between consecutive dots or empty brackets.\n\"(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))\", \"g\");\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = function stringToPath(string) {\n  var result = [];\n\n  if (string.charCodeAt(0) === charCodeOfDot) {\n    result.push(\"\");\n  }\n\n  string.replace(rePropName, function (match, expression, quote, subString) {\n    var key = match;\n\n    if (quote) {\n      key = subString.replace(reEscapeChar, \"$1\");\n    } else if (expression) {\n      key = expression.trim();\n    }\n\n    result.push(key);\n  });\n  return result;\n};\n\nvar keysCache = {};\nvar keysRegex = /[.[\\]]+/;\n\nvar toPath = function toPath(key) {\n  if (key === null || key === undefined || !key.length) {\n    return [];\n  }\n\n  if (typeof key !== \"string\") {\n    throw new Error(\"toPath() expects a string\");\n  }\n\n  if (keysCache[key] == null) {\n    /**\n     * The following patch fixes issue 456, introduced since v4.20.3:\n     *\n     * Before v4.20.3, i.e. in v4.20.2, a `key` like 'choices[]' would map to ['choices']\n     * (e.g. an array of choices used where 'choices[]' is name attribute of an input of type checkbox).\n     *\n     * Since v4.20.3, a `key` like 'choices[]' would map to ['choices', ''] which is wrong and breaks\n     * this kind of inputs e.g. in React.\n     *\n     * v4.20.3 introduced an unwanted breaking change, this patch fixes it, see the issue at the link below.\n     *\n     * @see https://github.com/final-form/final-form/issues/456\n     */\n    if (key.endsWith(\"[]\")) {\n      // v4.20.2 (a `key` like 'choices[]' should map to ['choices'], which is fine).\n      keysCache[key] = key.split(keysRegex).filter(Boolean);\n    } else {\n      // v4.20.3 (a `key` like 'choices[]' maps to ['choices', ''], which breaks applications relying on inputs like `<input type=\"checkbox\" name=\"choices[]\" />`).\n      keysCache[key] = stringToPath(key);\n    }\n  }\n\n  return keysCache[key];\n};\n\n//      \n\nvar getIn = function getIn(state, complexKey) {\n  // Intentionally using iteration rather than recursion\n  var path = toPath(complexKey);\n  var current = state;\n\n  for (var i = 0; i < path.length; i++) {\n    var key = path[i];\n\n    if (current === undefined || current === null || typeof current !== \"object\" || Array.isArray(current) && isNaN(key)) {\n      return undefined;\n    }\n\n    current = current[key];\n  }\n\n  return current;\n};\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nvar setInRecursor = function setInRecursor(current, index, path, value, destroyArrays) {\n  if (index >= path.length) {\n    // end of recursion\n    return value;\n  }\n\n  var key = path[index]; // determine type of key\n\n  if (isNaN(key)) {\n    var _extends2;\n\n    // object set\n    if (current === undefined || current === null) {\n      var _ref;\n\n      // recurse\n      var _result2 = setInRecursor(undefined, index + 1, path, value, destroyArrays); // delete or create an object\n\n\n      return _result2 === undefined ? undefined : (_ref = {}, _ref[key] = _result2, _ref);\n    }\n\n    if (Array.isArray(current)) {\n      throw new Error(\"Cannot set a non-numeric property on an array\");\n    } // current exists, so make a copy of all its values, and add/update the new one\n\n\n    var _result = setInRecursor(current[key], index + 1, path, value, destroyArrays);\n\n    if (_result === undefined) {\n      var numKeys = Object.keys(current).length;\n\n      if (current[key] === undefined && numKeys === 0) {\n        // object was already empty\n        return undefined;\n      }\n\n      if (current[key] !== undefined && numKeys <= 1) {\n        // only key we had was the one we are deleting\n        if (!isNaN(path[index - 1]) && !destroyArrays) {\n          // we are in an array, so return an empty object\n          return {};\n        } else {\n          return undefined;\n        }\n      }\n\n      current[key];\n          var _final = _objectWithoutPropertiesLoose(current, [key].map(_toPropertyKey));\n\n      return _final;\n    } // set result in key\n\n\n    return _extends({}, current, (_extends2 = {}, _extends2[key] = _result, _extends2));\n  } // array set\n\n\n  var numericKey = Number(key);\n\n  if (current === undefined || current === null) {\n    // recurse\n    var _result3 = setInRecursor(undefined, index + 1, path, value, destroyArrays); // if nothing returned, delete it\n\n\n    if (_result3 === undefined) {\n      return undefined;\n    } // create an array\n\n\n    var _array = [];\n    _array[numericKey] = _result3;\n    return _array;\n  }\n\n  if (!Array.isArray(current)) {\n    throw new Error(\"Cannot set a numeric property on an object\");\n  } // recurse\n\n\n  var existingValue = current[numericKey];\n  var result = setInRecursor(existingValue, index + 1, path, value, destroyArrays); // current exists, so make a copy of all its values, and add/update the new one\n\n  var array = [].concat(current);\n\n  if (destroyArrays && result === undefined) {\n    array.splice(numericKey, 1);\n\n    if (array.length === 0) {\n      return undefined;\n    }\n  } else {\n    array[numericKey] = result;\n  }\n\n  return array;\n};\n\nvar setIn = function setIn(state, key, value, destroyArrays) {\n  if (destroyArrays === void 0) {\n    destroyArrays = false;\n  }\n\n  if (state === undefined || state === null) {\n    throw new Error(\"Cannot call setIn() with \" + String(state) + \" state\");\n  }\n\n  if (key === undefined || key === null) {\n    throw new Error(\"Cannot call setIn() with \" + String(key) + \" key\");\n  } // Recursive function needs to accept and return State, but public API should\n  // only deal with Objects\n\n\n  return setInRecursor(state, 0, toPath(key), value, destroyArrays);\n};\n\nvar FORM_ERROR = \"FINAL_FORM/form-error\";\nvar ARRAY_ERROR = \"FINAL_FORM/array-error\";\n\n//      \n/**\n * Converts internal field state to published field state\n */\n\nfunction publishFieldState(formState, field) {\n  var errors = formState.errors,\n      initialValues = formState.initialValues,\n      lastSubmittedValues = formState.lastSubmittedValues,\n      submitErrors = formState.submitErrors,\n      submitFailed = formState.submitFailed,\n      submitSucceeded = formState.submitSucceeded,\n      submitting = formState.submitting,\n      values = formState.values;\n  var active = field.active,\n      blur = field.blur,\n      change = field.change,\n      data = field.data,\n      focus = field.focus,\n      modified = field.modified,\n      modifiedSinceLastSubmit = field.modifiedSinceLastSubmit,\n      name = field.name,\n      touched = field.touched,\n      validating = field.validating,\n      visited = field.visited;\n  var value = getIn(values, name);\n  var error = getIn(errors, name);\n\n  if (error && error[ARRAY_ERROR]) {\n    error = error[ARRAY_ERROR];\n  }\n\n  var submitError = submitErrors && getIn(submitErrors, name);\n  var initial = initialValues && getIn(initialValues, name);\n  var pristine = field.isEqual(initial, value);\n  var dirtySinceLastSubmit = !!(lastSubmittedValues && !field.isEqual(getIn(lastSubmittedValues, name), value));\n  var valid = !error && !submitError;\n  return {\n    active: active,\n    blur: blur,\n    change: change,\n    data: data,\n    dirty: !pristine,\n    dirtySinceLastSubmit: dirtySinceLastSubmit,\n    error: error,\n    focus: focus,\n    initial: initial,\n    invalid: !valid,\n    length: Array.isArray(value) ? value.length : undefined,\n    modified: modified,\n    modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n    name: name,\n    pristine: pristine,\n    submitError: submitError,\n    submitFailed: submitFailed,\n    submitSucceeded: submitSucceeded,\n    submitting: submitting,\n    touched: touched,\n    valid: valid,\n    value: value,\n    visited: visited,\n    validating: validating\n  };\n}\n\n//      \nvar fieldSubscriptionItems = [\"active\", \"data\", \"dirty\", \"dirtySinceLastSubmit\", \"error\", \"initial\", \"invalid\", \"length\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitError\", \"submitFailed\", \"submitSucceeded\", \"submitting\", \"touched\", \"valid\", \"value\", \"visited\", \"validating\"];\n\n//      \nvar shallowEqual = function shallowEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (typeof a !== \"object\" || !a || typeof b !== \"object\" || !b) {\n    return false;\n  }\n\n  var keysA = Object.keys(a);\n  var keysB = Object.keys(b);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key) || a[key] !== b[key]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n//      \nfunction subscriptionFilter (dest, src, previous, subscription, keys, shallowEqualKeys) {\n  var different = false;\n  keys.forEach(function (key) {\n    if (subscription[key]) {\n      dest[key] = src[key];\n\n      if (!previous || (~shallowEqualKeys.indexOf(key) ? !shallowEqual(src[key], previous[key]) : src[key] !== previous[key])) {\n        different = true;\n      }\n    }\n  });\n  return different;\n}\n\n//      \nvar shallowEqualKeys$1 = [\"data\"];\n/**\n * Filters items in a FieldState based on a FieldSubscription\n */\n\nvar filterFieldState = function filterFieldState(state, previousState, subscription, force) {\n  var result = {\n    blur: state.blur,\n    change: state.change,\n    focus: state.focus,\n    name: state.name\n  };\n  var different = subscriptionFilter(result, state, previousState, subscription, fieldSubscriptionItems, shallowEqualKeys$1) || !previousState;\n  return different || force ? result : undefined;\n};\n\n//      \nvar formSubscriptionItems = [\"active\", \"dirty\", \"dirtyFields\", \"dirtyFieldsSinceLastSubmit\", \"dirtySinceLastSubmit\", \"error\", \"errors\", \"hasSubmitErrors\", \"hasValidationErrors\", \"initialValues\", \"invalid\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitting\", \"submitError\", \"submitErrors\", \"submitFailed\", \"submitSucceeded\", \"touched\", \"valid\", \"validating\", \"values\", \"visited\"];\n\n//      \nvar shallowEqualKeys = [\"touched\", \"visited\"];\n/**\n * Filters items in a FormState based on a FormSubscription\n */\n\nfunction filterFormState(state, previousState, subscription, force) {\n  var result = {};\n  var different = subscriptionFilter(result, state, previousState, subscription, formSubscriptionItems, shallowEqualKeys) || !previousState;\n  return different || force ? result : undefined;\n}\n\n//      \n\nvar memoize = function memoize(fn) {\n  var lastArgs;\n  var lastResult;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (!lastArgs || args.length !== lastArgs.length || args.some(function (arg, index) {\n      return !shallowEqual(lastArgs[index], arg);\n    })) {\n      lastArgs = args;\n      lastResult = fn.apply(void 0, args);\n    }\n\n    return lastResult;\n  };\n};\n\nvar isPromise = (function (obj) {\n  return !!obj && (typeof obj === \"object\" || typeof obj === \"function\") && typeof obj.then === \"function\";\n});\n\nvar version = \"4.20.9\";\n\nvar configOptions = [\"debug\", \"initialValues\", \"keepDirtyOnReinitialize\", \"mutators\", \"onSubmit\", \"validate\", \"validateOnBlur\"];\n\nvar tripleEquals = function tripleEquals(a, b) {\n  return a === b;\n};\n\nvar hasAnyError = function hasAnyError(errors) {\n  return Object.keys(errors).some(function (key) {\n    var value = errors[key];\n\n    if (value && typeof value === \"object\" && !(value instanceof Error)) {\n      return hasAnyError(value);\n    }\n\n    return typeof value !== \"undefined\";\n  });\n};\n\nfunction convertToExternalFormState(_ref) {\n  var active = _ref.active,\n      dirtySinceLastSubmit = _ref.dirtySinceLastSubmit,\n      modifiedSinceLastSubmit = _ref.modifiedSinceLastSubmit,\n      error = _ref.error,\n      errors = _ref.errors,\n      initialValues = _ref.initialValues,\n      pristine = _ref.pristine,\n      submitting = _ref.submitting,\n      submitFailed = _ref.submitFailed,\n      submitSucceeded = _ref.submitSucceeded,\n      submitError = _ref.submitError,\n      submitErrors = _ref.submitErrors,\n      valid = _ref.valid,\n      validating = _ref.validating,\n      values = _ref.values;\n  return {\n    active: active,\n    dirty: !pristine,\n    dirtySinceLastSubmit: dirtySinceLastSubmit,\n    modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n    error: error,\n    errors: errors,\n    hasSubmitErrors: !!(submitError || submitErrors && hasAnyError(submitErrors)),\n    hasValidationErrors: !!(error || hasAnyError(errors)),\n    invalid: !valid,\n    initialValues: initialValues,\n    pristine: pristine,\n    submitting: submitting,\n    submitFailed: submitFailed,\n    submitSucceeded: submitSucceeded,\n    submitError: submitError,\n    submitErrors: submitErrors,\n    valid: valid,\n    validating: validating > 0,\n    values: values\n  };\n}\n\nfunction notifySubscriber(subscriber, subscription, state, lastState, filter, force) {\n  var notification = filter(state, lastState, subscription, force);\n\n  if (notification) {\n    subscriber(notification);\n    return true;\n  }\n\n  return false;\n}\n\nfunction notify(_ref2, state, lastState, filter, force) {\n  var entries = _ref2.entries;\n  Object.keys(entries).forEach(function (key) {\n    var entry = entries[Number(key)]; // istanbul ignore next\n\n    if (entry) {\n      var subscription = entry.subscription,\n          subscriber = entry.subscriber,\n          notified = entry.notified;\n\n      if (notifySubscriber(subscriber, subscription, state, lastState, filter, force || !notified)) {\n        entry.notified = true;\n      }\n    }\n  });\n}\n\nfunction createForm(config) {\n  if (!config) {\n    throw new Error(\"No config specified\");\n  }\n\n  var debug = config.debug,\n      destroyOnUnregister = config.destroyOnUnregister,\n      keepDirtyOnReinitialize = config.keepDirtyOnReinitialize,\n      initialValues = config.initialValues,\n      mutators = config.mutators,\n      onSubmit = config.onSubmit,\n      validate = config.validate,\n      validateOnBlur = config.validateOnBlur;\n\n  if (!onSubmit) {\n    throw new Error(\"No onSubmit function specified\");\n  }\n\n  var state = {\n    subscribers: {\n      index: 0,\n      entries: {}\n    },\n    fieldSubscribers: {},\n    fields: {},\n    formState: {\n      asyncErrors: {},\n      dirtySinceLastSubmit: false,\n      modifiedSinceLastSubmit: false,\n      errors: {},\n      initialValues: initialValues && _extends({}, initialValues),\n      invalid: false,\n      pristine: true,\n      submitting: false,\n      submitFailed: false,\n      submitSucceeded: false,\n      resetWhileSubmitting: false,\n      valid: true,\n      validating: 0,\n      values: initialValues ? _extends({}, initialValues) : {}\n    },\n    lastFormState: undefined\n  };\n  var inBatch = 0;\n  var validationPaused = false;\n  var validationBlocked = false;\n  var preventNotificationWhileValidationPaused = false;\n  var nextAsyncValidationKey = 0;\n  var asyncValidationPromises = {};\n\n  var clearAsyncValidationPromise = function clearAsyncValidationPromise(key) {\n    return function (result) {\n      delete asyncValidationPromises[key];\n      return result;\n    };\n  };\n\n  var changeValue = function changeValue(state, name, mutate) {\n    var before = getIn(state.formState.values, name);\n    var after = mutate(before);\n    state.formState.values = setIn(state.formState.values, name, after) || {};\n  };\n\n  var renameField = function renameField(state, from, to) {\n    if (state.fields[from]) {\n      var _extends2, _extends3;\n\n      state.fields = _extends({}, state.fields, (_extends2 = {}, _extends2[to] = _extends({}, state.fields[from], {\n        name: to,\n        // rebind event handlers\n        blur: function blur() {\n          return api.blur(to);\n        },\n        change: function change(value) {\n          return api.change(to, value);\n        },\n        focus: function focus() {\n          return api.focus(to);\n        },\n        lastFieldState: undefined\n      }), _extends2));\n      delete state.fields[from];\n      state.fieldSubscribers = _extends({}, state.fieldSubscribers, (_extends3 = {}, _extends3[to] = state.fieldSubscribers[from], _extends3));\n      delete state.fieldSubscribers[from];\n      var value = getIn(state.formState.values, from);\n      state.formState.values = setIn(state.formState.values, from, undefined) || {};\n      state.formState.values = setIn(state.formState.values, to, value);\n      delete state.lastFormState;\n    }\n  }; // bind state to mutators\n\n\n  var getMutatorApi = function getMutatorApi(key) {\n    return function () {\n      // istanbul ignore next\n      if (mutators) {\n        // ^^ causes branch coverage warning, but needed to appease the Flow gods\n        var mutatableState = {\n          formState: state.formState,\n          fields: state.fields,\n          fieldSubscribers: state.fieldSubscribers,\n          lastFormState: state.lastFormState\n        };\n\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var returnValue = mutators[key](args, mutatableState, {\n          changeValue: changeValue,\n          getIn: getIn,\n          renameField: renameField,\n          resetFieldState: api.resetFieldState,\n          setIn: setIn,\n          shallowEqual: shallowEqual\n        });\n        state.formState = mutatableState.formState;\n        state.fields = mutatableState.fields;\n        state.fieldSubscribers = mutatableState.fieldSubscribers;\n        state.lastFormState = mutatableState.lastFormState;\n        runValidation(undefined, function () {\n          notifyFieldListeners();\n          notifyFormListeners();\n        });\n        return returnValue;\n      }\n    };\n  };\n\n  var mutatorsApi = mutators ? Object.keys(mutators).reduce(function (result, key) {\n    result[key] = getMutatorApi(key);\n    return result;\n  }, {}) : {};\n\n  var runRecordLevelValidation = function runRecordLevelValidation(setErrors) {\n    var promises = [];\n\n    if (validate) {\n      var errorsOrPromise = validate(_extends({}, state.formState.values)); // clone to avoid writing\n\n      if (isPromise(errorsOrPromise)) {\n        promises.push(errorsOrPromise.then(function (errors) {\n          return setErrors(errors, true);\n        }));\n      } else {\n        setErrors(errorsOrPromise, false);\n      }\n    }\n\n    return promises;\n  };\n\n  var getValidators = function getValidators(field) {\n    return Object.keys(field.validators).reduce(function (result, index) {\n      var validator = field.validators[Number(index)]();\n\n      if (validator) {\n        result.push(validator);\n      }\n\n      return result;\n    }, []);\n  };\n\n  var runFieldLevelValidation = function runFieldLevelValidation(field, setError) {\n    var promises = [];\n    var validators = getValidators(field);\n\n    if (validators.length) {\n      var error;\n      validators.forEach(function (validator) {\n        var errorOrPromise = validator(getIn(state.formState.values, field.name), state.formState.values, validator.length === 0 || validator.length === 3 ? publishFieldState(state.formState, state.fields[field.name]) : undefined);\n\n        if (errorOrPromise && isPromise(errorOrPromise)) {\n          field.validating = true;\n          var promise = errorOrPromise.then(function (error) {\n            if (state.fields[field.name]) {\n              state.fields[field.name].validating = false;\n              setError(error);\n            }\n          }); // errors must be resolved, not rejected\n\n          promises.push(promise);\n        } else if (!error) {\n          // first registered validator wins\n          error = errorOrPromise;\n        }\n      });\n      setError(error);\n    }\n\n    return promises;\n  };\n\n  var runValidation = function runValidation(fieldChanged, callback) {\n    if (validationPaused) {\n      validationBlocked = true;\n      callback();\n      return;\n    }\n\n    var fields = state.fields,\n        formState = state.formState;\n\n    var safeFields = _extends({}, fields);\n\n    var fieldKeys = Object.keys(safeFields);\n\n    if (!validate && !fieldKeys.some(function (key) {\n      return getValidators(safeFields[key]).length;\n    })) {\n      callback();\n      return; // no validation rules\n    } // pare down field keys to actually validate\n\n\n    var limitedFieldLevelValidation = false;\n\n    if (fieldChanged) {\n      var changedField = safeFields[fieldChanged];\n\n      if (changedField) {\n        var validateFields = changedField.validateFields;\n\n        if (validateFields) {\n          limitedFieldLevelValidation = true;\n          fieldKeys = validateFields.length ? validateFields.concat(fieldChanged) : [fieldChanged];\n        }\n      }\n    }\n\n    var recordLevelErrors = {};\n    var asyncRecordLevelErrors = {};\n    var fieldLevelErrors = {};\n    var promises = [].concat(runRecordLevelValidation(function (errors, wasAsync) {\n      if (wasAsync) {\n        asyncRecordLevelErrors = errors || {};\n      } else {\n        recordLevelErrors = errors || {};\n      }\n    }), fieldKeys.reduce(function (result, name) {\n      return result.concat(runFieldLevelValidation(fields[name], function (error) {\n        fieldLevelErrors[name] = error;\n      }));\n    }, []));\n    var hasAsyncValidations = promises.length > 0;\n    var asyncValidationPromiseKey = ++nextAsyncValidationKey;\n    var promise = Promise.all(promises).then(clearAsyncValidationPromise(asyncValidationPromiseKey)); // backwards-compat: add promise to submit-blocking promises iff there are any promises to await\n\n    if (hasAsyncValidations) {\n      asyncValidationPromises[asyncValidationPromiseKey] = promise;\n    }\n\n    var processErrors = function processErrors(afterAsync) {\n      var merged = _extends({}, limitedFieldLevelValidation ? formState.errors : {}, recordLevelErrors, afterAsync ? asyncRecordLevelErrors // new async errors\n      : formState.asyncErrors);\n\n      var forEachError = function forEachError(fn) {\n        fieldKeys.forEach(function (name) {\n          if (fields[name]) {\n            // make sure field is still registered\n            // field-level errors take precedent over record-level errors\n            var recordLevelError = getIn(recordLevelErrors, name);\n            var errorFromParent = getIn(merged, name);\n            var hasFieldLevelValidation = getValidators(safeFields[name]).length;\n            var fieldLevelError = fieldLevelErrors[name];\n            fn(name, hasFieldLevelValidation && fieldLevelError || validate && recordLevelError || (!recordLevelError && !limitedFieldLevelValidation ? errorFromParent : undefined));\n          }\n        });\n      };\n\n      forEachError(function (name, error) {\n        merged = setIn(merged, name, error) || {};\n      });\n      forEachError(function (name, error) {\n        if (error && error[ARRAY_ERROR]) {\n          var existing = getIn(merged, name);\n          var copy = [].concat(existing);\n          copy[ARRAY_ERROR] = error[ARRAY_ERROR];\n          merged = setIn(merged, name, copy);\n        }\n      });\n\n      if (!shallowEqual(formState.errors, merged)) {\n        formState.errors = merged;\n      }\n\n      if (afterAsync) {\n        formState.asyncErrors = asyncRecordLevelErrors;\n      }\n\n      formState.error = recordLevelErrors[FORM_ERROR];\n    };\n\n    if (hasAsyncValidations) {\n      // async validations are running, ensure validating is true before notifying\n      state.formState.validating++;\n      callback();\n    } // process sync errors\n\n\n    processErrors(false); // sync errors have been set. notify listeners while we wait for others\n\n    callback();\n\n    if (hasAsyncValidations) {\n      var afterPromise = function afterPromise() {\n        state.formState.validating--;\n        callback();\n      };\n\n      promise.then(function () {\n        if (nextAsyncValidationKey > asyncValidationPromiseKey) {\n          // if this async validator has been superseded by another, ignore its results\n          return;\n        }\n\n        processErrors(true);\n      }).then(afterPromise, afterPromise);\n    }\n  };\n\n  var notifyFieldListeners = function notifyFieldListeners(name) {\n    if (inBatch) {\n      return;\n    }\n\n    var fields = state.fields,\n        fieldSubscribers = state.fieldSubscribers,\n        formState = state.formState;\n\n    var safeFields = _extends({}, fields);\n\n    var notifyField = function notifyField(name) {\n      var field = safeFields[name];\n      var fieldState = publishFieldState(formState, field);\n      var lastFieldState = field.lastFieldState;\n      field.lastFieldState = fieldState;\n      var fieldSubscriber = fieldSubscribers[name];\n\n      if (fieldSubscriber) {\n        notify(fieldSubscriber, fieldState, lastFieldState, filterFieldState, lastFieldState === undefined);\n      }\n    };\n\n    if (name) {\n      notifyField(name);\n    } else {\n      Object.keys(safeFields).forEach(notifyField);\n    }\n  };\n\n  var markAllFieldsTouched = function markAllFieldsTouched() {\n    Object.keys(state.fields).forEach(function (key) {\n      state.fields[key].touched = true;\n    });\n  };\n\n  var hasSyncErrors = function hasSyncErrors() {\n    return !!(state.formState.error || hasAnyError(state.formState.errors));\n  };\n\n  var calculateNextFormState = function calculateNextFormState() {\n    var fields = state.fields,\n        formState = state.formState,\n        lastFormState = state.lastFormState;\n\n    var safeFields = _extends({}, fields);\n\n    var safeFieldKeys = Object.keys(safeFields); // calculate dirty/pristine\n\n    var foundDirty = false;\n    var dirtyFields = safeFieldKeys.reduce(function (result, key) {\n      var dirty = !safeFields[key].isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n\n      if (dirty) {\n        foundDirty = true;\n        result[key] = true;\n      }\n\n      return result;\n    }, {});\n    var dirtyFieldsSinceLastSubmit = safeFieldKeys.reduce(function (result, key) {\n      // istanbul ignore next\n      var nonNullLastSubmittedValues = formState.lastSubmittedValues || {}; // || {} is for flow, but causes branch coverage complaint\n\n      if (!safeFields[key].isEqual(getIn(formState.values, key), getIn(nonNullLastSubmittedValues, key))) {\n        result[key] = true;\n      }\n\n      return result;\n    }, {});\n    formState.pristine = !foundDirty;\n    formState.dirtySinceLastSubmit = !!(formState.lastSubmittedValues && Object.values(dirtyFieldsSinceLastSubmit).some(function (value) {\n      return value;\n    }));\n    formState.modifiedSinceLastSubmit = !!(formState.lastSubmittedValues && // Object.values would treat values as mixed (facebook/flow#2221)\n    Object.keys(safeFields).some(function (value) {\n      return safeFields[value].modifiedSinceLastSubmit;\n    }));\n    formState.valid = !formState.error && !formState.submitError && !hasAnyError(formState.errors) && !(formState.submitErrors && hasAnyError(formState.submitErrors));\n    var nextFormState = convertToExternalFormState(formState);\n\n    var _safeFieldKeys$reduce = safeFieldKeys.reduce(function (result, key) {\n      result.modified[key] = safeFields[key].modified;\n      result.touched[key] = safeFields[key].touched;\n      result.visited[key] = safeFields[key].visited;\n      return result;\n    }, {\n      modified: {},\n      touched: {},\n      visited: {}\n    }),\n        modified = _safeFieldKeys$reduce.modified,\n        touched = _safeFieldKeys$reduce.touched,\n        visited = _safeFieldKeys$reduce.visited;\n\n    nextFormState.dirtyFields = lastFormState && shallowEqual(lastFormState.dirtyFields, dirtyFields) ? lastFormState.dirtyFields : dirtyFields;\n    nextFormState.dirtyFieldsSinceLastSubmit = lastFormState && shallowEqual(lastFormState.dirtyFieldsSinceLastSubmit, dirtyFieldsSinceLastSubmit) ? lastFormState.dirtyFieldsSinceLastSubmit : dirtyFieldsSinceLastSubmit;\n    nextFormState.modified = lastFormState && shallowEqual(lastFormState.modified, modified) ? lastFormState.modified : modified;\n    nextFormState.touched = lastFormState && shallowEqual(lastFormState.touched, touched) ? lastFormState.touched : touched;\n    nextFormState.visited = lastFormState && shallowEqual(lastFormState.visited, visited) ? lastFormState.visited : visited;\n    return lastFormState && shallowEqual(lastFormState, nextFormState) ? lastFormState : nextFormState;\n  };\n\n  var callDebug = function callDebug() {\n    return debug && \"development\" !== \"production\" && debug(calculateNextFormState(), Object.keys(state.fields).reduce(function (result, key) {\n      result[key] = state.fields[key];\n      return result;\n    }, {}));\n  };\n\n  var notifying = false;\n  var scheduleNotification = false;\n\n  var notifyFormListeners = function notifyFormListeners() {\n    if (notifying) {\n      scheduleNotification = true;\n    } else {\n      notifying = true;\n      callDebug();\n\n      if (!inBatch && !(validationPaused && preventNotificationWhileValidationPaused)) {\n        var lastFormState = state.lastFormState;\n        var nextFormState = calculateNextFormState();\n\n        if (nextFormState !== lastFormState) {\n          state.lastFormState = nextFormState;\n          notify(state.subscribers, nextFormState, lastFormState, filterFormState);\n        }\n      }\n\n      notifying = false;\n\n      if (scheduleNotification) {\n        scheduleNotification = false;\n        notifyFormListeners();\n      }\n    }\n  };\n\n  var beforeSubmit = function beforeSubmit() {\n    return Object.keys(state.fields).some(function (name) {\n      return state.fields[name].beforeSubmit && state.fields[name].beforeSubmit() === false;\n    });\n  };\n\n  var afterSubmit = function afterSubmit() {\n    return Object.keys(state.fields).forEach(function (name) {\n      return state.fields[name].afterSubmit && state.fields[name].afterSubmit();\n    });\n  };\n\n  var resetModifiedAfterSubmit = function resetModifiedAfterSubmit() {\n    return Object.keys(state.fields).forEach(function (key) {\n      return state.fields[key].modifiedSinceLastSubmit = false;\n    });\n  }; // generate initial errors\n\n\n  runValidation(undefined, function () {\n    notifyFormListeners();\n  });\n  var api = {\n    batch: function batch(fn) {\n      inBatch++;\n      fn();\n      inBatch--;\n      notifyFieldListeners();\n      notifyFormListeners();\n    },\n    blur: function blur(name) {\n      var fields = state.fields,\n          formState = state.formState;\n      var previous = fields[name];\n\n      if (previous) {\n        // can only blur registered fields\n        delete formState.active;\n        fields[name] = _extends({}, previous, {\n          active: false,\n          touched: true\n        });\n\n        if (validateOnBlur) {\n          runValidation(name, function () {\n            notifyFieldListeners();\n            notifyFormListeners();\n          });\n        } else {\n          notifyFieldListeners();\n          notifyFormListeners();\n        }\n      }\n    },\n    change: function change(name, value) {\n      var fields = state.fields,\n          formState = state.formState;\n\n      if (getIn(formState.values, name) !== value) {\n        changeValue(state, name, function () {\n          return value;\n        });\n        var previous = fields[name];\n\n        if (previous) {\n          // only track modified for registered fields\n          fields[name] = _extends({}, previous, {\n            modified: true,\n            modifiedSinceLastSubmit: !!formState.lastSubmittedValues\n          });\n        }\n\n        if (validateOnBlur) {\n          notifyFieldListeners();\n          notifyFormListeners();\n        } else {\n          runValidation(name, function () {\n            notifyFieldListeners();\n            notifyFormListeners();\n          });\n        }\n      }\n    },\n\n    get destroyOnUnregister() {\n      return !!destroyOnUnregister;\n    },\n\n    set destroyOnUnregister(value) {\n      destroyOnUnregister = value;\n    },\n\n    focus: function focus(name) {\n      var field = state.fields[name];\n\n      if (field && !field.active) {\n        state.formState.active = name;\n        field.active = true;\n        field.visited = true;\n        notifyFieldListeners();\n        notifyFormListeners();\n      }\n    },\n    mutators: mutatorsApi,\n    getFieldState: function getFieldState(name) {\n      var field = state.fields[name];\n      return field && field.lastFieldState;\n    },\n    getRegisteredFields: function getRegisteredFields() {\n      return Object.keys(state.fields);\n    },\n    getState: function getState() {\n      return calculateNextFormState();\n    },\n    initialize: function initialize(data) {\n      var fields = state.fields,\n          formState = state.formState;\n\n      var safeFields = _extends({}, fields);\n\n      var values = typeof data === \"function\" ? data(formState.values) : data;\n\n      if (!keepDirtyOnReinitialize) {\n        formState.values = values;\n      }\n      /**\n       * Hello, inquisitive code reader! Thanks for taking the time to dig in!\n       *\n       * The following code is the way it is to allow for non-registered deep\n       * field values to be set via initialize()\n       */\n      // save dirty values\n\n\n      var savedDirtyValues = keepDirtyOnReinitialize ? Object.keys(safeFields).reduce(function (result, key) {\n        var field = safeFields[key];\n        var pristine = field.isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n\n        if (!pristine) {\n          result[key] = getIn(formState.values, key);\n        }\n\n        return result;\n      }, {}) : {}; // update initalValues and values\n\n      formState.initialValues = values;\n      formState.values = values; // restore the dirty values\n\n      Object.keys(savedDirtyValues).forEach(function (key) {\n        formState.values = setIn(formState.values, key, savedDirtyValues[key]) || {};\n      });\n      runValidation(undefined, function () {\n        notifyFieldListeners();\n        notifyFormListeners();\n      });\n    },\n    isValidationPaused: function isValidationPaused() {\n      return validationPaused;\n    },\n    pauseValidation: function pauseValidation(preventNotification) {\n      if (preventNotification === void 0) {\n        preventNotification = true;\n      }\n\n      validationPaused = true;\n      preventNotificationWhileValidationPaused = preventNotification;\n    },\n    registerField: function registerField(name, subscriber, subscription, fieldConfig) {\n      if (subscription === void 0) {\n        subscription = {};\n      }\n\n      if (!state.fieldSubscribers[name]) {\n        state.fieldSubscribers[name] = {\n          index: 0,\n          entries: {}\n        };\n      }\n\n      var index = state.fieldSubscribers[name].index++; // save field subscriber callback\n\n      state.fieldSubscribers[name].entries[index] = {\n        subscriber: memoize(subscriber),\n        subscription: subscription,\n        notified: false\n      }; // create initial field state if not exists\n\n      var field = state.fields[name] || {\n        active: false,\n        afterSubmit: fieldConfig && fieldConfig.afterSubmit,\n        beforeSubmit: fieldConfig && fieldConfig.beforeSubmit,\n        data: fieldConfig && fieldConfig.data || {},\n        isEqual: fieldConfig && fieldConfig.isEqual || tripleEquals,\n        lastFieldState: undefined,\n        modified: false,\n        modifiedSinceLastSubmit: false,\n        name: name,\n        touched: false,\n        valid: true,\n        validateFields: fieldConfig && fieldConfig.validateFields,\n        validators: {},\n        validating: false,\n        visited: false\n      }; // Mutators can create a field in order to keep the field states\n      // We must update this field when registerField is called afterwards\n\n      field.blur = field.blur || function () {\n        return api.blur(name);\n      };\n\n      field.change = field.change || function (value) {\n        return api.change(name, value);\n      };\n\n      field.focus = field.focus || function () {\n        return api.focus(name);\n      };\n\n      state.fields[name] = field;\n      var haveValidator = false;\n      var silent = fieldConfig && fieldConfig.silent;\n\n      var notify = function notify() {\n        if (silent && state.fields[name]) {\n          notifyFieldListeners(name);\n        } else {\n          notifyFormListeners();\n          notifyFieldListeners();\n        }\n      };\n\n      if (fieldConfig) {\n        haveValidator = !!(fieldConfig.getValidator && fieldConfig.getValidator());\n\n        if (fieldConfig.getValidator) {\n          state.fields[name].validators[index] = fieldConfig.getValidator;\n        }\n\n        var noValueInFormState = getIn(state.formState.values, name) === undefined;\n\n        if (fieldConfig.initialValue !== undefined && (noValueInFormState || getIn(state.formState.values, name) === getIn(state.formState.initialValues, name)) // only initialize if we don't yet have any value for this field\n        ) {\n          state.formState.initialValues = setIn(state.formState.initialValues || {}, name, fieldConfig.initialValue);\n          state.formState.values = setIn(state.formState.values, name, fieldConfig.initialValue);\n          runValidation(undefined, notify);\n        } // only use defaultValue if we don't yet have any value for this field\n\n\n        if (fieldConfig.defaultValue !== undefined && fieldConfig.initialValue === undefined && getIn(state.formState.initialValues, name) === undefined && noValueInFormState) {\n          state.formState.values = setIn(state.formState.values, name, fieldConfig.defaultValue);\n        }\n      }\n\n      if (haveValidator) {\n        runValidation(undefined, notify);\n      } else {\n        notify();\n      }\n\n      return function () {\n        var validatorRemoved = false; // istanbul ignore next\n\n        if (state.fields[name]) {\n          // state.fields[name] may have been removed by a mutator\n          validatorRemoved = !!(state.fields[name].validators[index] && state.fields[name].validators[index]());\n          delete state.fields[name].validators[index];\n        }\n\n        var hasFieldSubscribers = !!state.fieldSubscribers[name];\n\n        if (hasFieldSubscribers) {\n          // state.fieldSubscribers[name] may have been removed by a mutator\n          delete state.fieldSubscribers[name].entries[index];\n        }\n\n        var lastOne = hasFieldSubscribers && !Object.keys(state.fieldSubscribers[name].entries).length;\n\n        if (lastOne) {\n          delete state.fieldSubscribers[name];\n          delete state.fields[name];\n\n          if (validatorRemoved) {\n            state.formState.errors = setIn(state.formState.errors, name, undefined) || {};\n          }\n\n          if (destroyOnUnregister) {\n            state.formState.values = setIn(state.formState.values, name, undefined, true) || {};\n          }\n        }\n\n        if (!silent) {\n          if (validatorRemoved) {\n            runValidation(undefined, function () {\n              notifyFormListeners();\n              notifyFieldListeners();\n            });\n          } else if (lastOne) {\n            // values or errors may have changed\n            notifyFormListeners();\n          }\n        }\n      };\n    },\n    reset: function reset(initialValues) {\n      if (initialValues === void 0) {\n        initialValues = state.formState.initialValues;\n      }\n\n      if (state.formState.submitting) {\n        state.formState.resetWhileSubmitting = true;\n      }\n\n      state.formState.submitFailed = false;\n      state.formState.submitSucceeded = false;\n      delete state.formState.submitError;\n      delete state.formState.submitErrors;\n      delete state.formState.lastSubmittedValues;\n      api.initialize(initialValues || {});\n    },\n\n    /**\n     * Resets all field flags (e.g. touched, visited, etc.) to their initial state\n     */\n    resetFieldState: function resetFieldState(name) {\n      state.fields[name] = _extends({}, state.fields[name], {\n        active: false,\n        lastFieldState: undefined,\n        modified: false,\n        touched: false,\n        valid: true,\n        validating: false,\n        visited: false\n      });\n      runValidation(undefined, function () {\n        notifyFieldListeners();\n        notifyFormListeners();\n      });\n    },\n\n    /**\n     * Returns the form to a clean slate; that is:\n     * - Clear all values\n     * - Resets all fields to their initial state\n     */\n    restart: function restart(initialValues) {\n      if (initialValues === void 0) {\n        initialValues = state.formState.initialValues;\n      }\n\n      api.batch(function () {\n        for (var name in state.fields) {\n          api.resetFieldState(name);\n          state.fields[name] = _extends({}, state.fields[name], {\n            active: false,\n            lastFieldState: undefined,\n            modified: false,\n            modifiedSinceLastSubmit: false,\n            touched: false,\n            valid: true,\n            validating: false,\n            visited: false\n          });\n        }\n\n        api.reset(initialValues);\n      });\n    },\n    resumeValidation: function resumeValidation() {\n      validationPaused = false;\n      preventNotificationWhileValidationPaused = false;\n\n      if (validationBlocked) {\n        // validation was attempted while it was paused, so run it now\n        runValidation(undefined, function () {\n          notifyFieldListeners();\n          notifyFormListeners();\n        });\n      }\n\n      validationBlocked = false;\n    },\n    setConfig: function setConfig(name, value) {\n      switch (name) {\n        case \"debug\":\n          debug = value;\n          break;\n\n        case \"destroyOnUnregister\":\n          destroyOnUnregister = value;\n          break;\n\n        case \"initialValues\":\n          api.initialize(value);\n          break;\n\n        case \"keepDirtyOnReinitialize\":\n          keepDirtyOnReinitialize = value;\n          break;\n\n        case \"mutators\":\n          mutators = value;\n\n          if (value) {\n            Object.keys(mutatorsApi).forEach(function (key) {\n              if (!(key in value)) {\n                delete mutatorsApi[key];\n              }\n            });\n            Object.keys(value).forEach(function (key) {\n              mutatorsApi[key] = getMutatorApi(key);\n            });\n          } else {\n            Object.keys(mutatorsApi).forEach(function (key) {\n              delete mutatorsApi[key];\n            });\n          }\n\n          break;\n\n        case \"onSubmit\":\n          onSubmit = value;\n          break;\n\n        case \"validate\":\n          validate = value;\n          runValidation(undefined, function () {\n            notifyFieldListeners();\n            notifyFormListeners();\n          });\n          break;\n\n        case \"validateOnBlur\":\n          validateOnBlur = value;\n          break;\n\n        default:\n          throw new Error(\"Unrecognised option \" + name);\n      }\n    },\n    submit: function submit() {\n      var formState = state.formState;\n\n      if (formState.submitting) {\n        return;\n      }\n\n      delete formState.submitErrors;\n      delete formState.submitError;\n      formState.lastSubmittedValues = _extends({}, formState.values);\n\n      if (hasSyncErrors()) {\n        markAllFieldsTouched();\n        resetModifiedAfterSubmit();\n        state.formState.submitFailed = true;\n        notifyFormListeners();\n        notifyFieldListeners();\n        return; // no submit for you!!\n      }\n\n      var asyncValidationPromisesKeys = Object.keys(asyncValidationPromises);\n\n      if (asyncValidationPromisesKeys.length) {\n        // still waiting on async validation to complete...\n        Promise.all(asyncValidationPromisesKeys.map(function (key) {\n          return asyncValidationPromises[Number(key)];\n        })).then(api.submit, console.error);\n        return;\n      }\n\n      var submitIsBlocked = beforeSubmit();\n\n      if (submitIsBlocked) {\n        return;\n      }\n\n      var resolvePromise;\n      var completeCalled = false;\n\n      var complete = function complete(errors) {\n        formState.submitting = false;\n        var resetWhileSubmitting = formState.resetWhileSubmitting;\n\n        if (resetWhileSubmitting) {\n          formState.resetWhileSubmitting = false;\n        }\n\n        if (errors && hasAnyError(errors)) {\n          formState.submitFailed = true;\n          formState.submitSucceeded = false;\n          formState.submitErrors = errors;\n          formState.submitError = errors[FORM_ERROR];\n          markAllFieldsTouched();\n        } else {\n          if (!resetWhileSubmitting) {\n            formState.submitFailed = false;\n            formState.submitSucceeded = true;\n          }\n\n          afterSubmit();\n        }\n\n        notifyFormListeners();\n        notifyFieldListeners();\n        completeCalled = true;\n\n        if (resolvePromise) {\n          resolvePromise(errors);\n        }\n\n        return errors;\n      };\n\n      formState.submitting = true;\n      formState.submitFailed = false;\n      formState.submitSucceeded = false;\n      formState.lastSubmittedValues = _extends({}, formState.values);\n      resetModifiedAfterSubmit(); // onSubmit is either sync, callback or async with a Promise\n\n      var result = onSubmit(formState.values, api, complete);\n\n      if (!completeCalled) {\n        if (result && isPromise(result)) {\n          // onSubmit is async with a Promise\n          notifyFormListeners(); // let everyone know we are submitting\n\n          notifyFieldListeners(); // notify fields also\n\n          return result.then(complete, function (error) {\n            complete();\n            throw error;\n          });\n        } else if (onSubmit.length >= 3) {\n          // must be async, so we should return a Promise\n          notifyFormListeners(); // let everyone know we are submitting\n\n          notifyFieldListeners(); // notify fields also\n\n          return new Promise(function (resolve) {\n            resolvePromise = resolve;\n          });\n        } else {\n          // onSubmit is sync\n          complete(result);\n        }\n      }\n    },\n    subscribe: function subscribe(subscriber, subscription) {\n      if (!subscriber) {\n        throw new Error(\"No callback given.\");\n      }\n\n      if (!subscription) {\n        throw new Error(\"No subscription provided. What values do you want to listen to?\");\n      }\n\n      var memoized = memoize(subscriber);\n      var subscribers = state.subscribers;\n      var index = subscribers.index++;\n      subscribers.entries[index] = {\n        subscriber: memoized,\n        subscription: subscription,\n        notified: false\n      };\n      var nextFormState = calculateNextFormState();\n      notifySubscriber(memoized, subscription, nextFormState, nextFormState, filterFormState, true);\n      return function () {\n        delete subscribers.entries[index];\n      };\n    }\n  };\n  return api;\n}\n\nexport { ARRAY_ERROR, FORM_ERROR, configOptions, createForm, fieldSubscriptionItems, formSubscriptionItems, getIn, setIn, version };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport React__default from 'react';\nimport { formSubscriptionItems, createForm, version as version$1, fieldSubscriptionItems } from 'final-form';\n\n// shared logic between components that use either render prop,\n// children render function, or component prop\nfunction renderComponent(props, lazyProps, name) {\n  var render = props.render,\n      children = props.children,\n      component = props.component,\n      rest = _objectWithoutPropertiesLoose(props, [\"render\", \"children\", \"component\"]);\n\n  if (component) {\n    return /*#__PURE__*/React.createElement(component, Object.assign(lazyProps, rest, {\n      children: children,\n      render: render\n    }));\n  }\n\n  if (render) {\n    return render(children === undefined ? Object.assign(lazyProps, rest) : // inject children back in\n    Object.assign(lazyProps, rest, {\n      children: children\n    }));\n  }\n\n  if (typeof children !== 'function') {\n    throw new Error(\"Must specify either a render prop, a render function as children, or a component prop to \" + name);\n  }\n\n  return children(Object.assign(lazyProps, rest));\n}\n\nfunction useWhenValueChanges(value, callback, isEqual) {\n  if (isEqual === void 0) {\n    isEqual = function isEqual(a, b) {\n      return a === b;\n    };\n  }\n\n  var previous = React__default.useRef(value);\n  React__default.useEffect(function () {\n    if (!isEqual(value, previous.current)) {\n      callback();\n      previous.current = value;\n    }\n  });\n}\n\n/**\n * A simple hook to create a constant value that lives for\n * the lifetime of the component.\n *\n * Plagiarized from https://github.com/Andarist/use-constant\n *\n * Do NOT reuse this code unless you know what you're doing.\n * Use Andarist's hook; it's more fault tolerant to things like\n * falsy values.\n *\n * @param {Function} init - A function to generate the value\n */\n\nfunction useConstant(init) {\n  var ref = React__default.useRef();\n\n  if (!ref.current) {\n    ref.current = init();\n  }\n\n  return ref.current;\n}\n\nvar shallowEqual = function shallowEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (typeof a !== 'object' || !a || typeof b !== 'object' || !b) {\n    return false;\n  }\n\n  var keysA = Object.keys(a);\n  var keysB = Object.keys(b);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key) || a[key] !== b[key]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nvar isSyntheticEvent = function isSyntheticEvent(candidate) {\n  return !!(candidate && typeof candidate.stopPropagation === 'function');\n};\n\nvar ReactFinalFormContext = /*#__PURE__*/React.createContext();\n\nfunction useLatest(value) {\n  var ref = React__default.useRef(value);\n  React__default.useEffect(function () {\n    ref.current = value;\n  });\n  return ref;\n}\n\nvar version = \"6.5.3\";\n\nvar addLazyState = function addLazyState(dest, state, keys) {\n  keys.forEach(function (key) {\n    Object.defineProperty(dest, key, {\n      get: function get() {\n        return state[key];\n      },\n      enumerable: true\n    });\n  });\n};\n\nvar addLazyFormState = function addLazyFormState(dest, state) {\n  return addLazyState(dest, state, ['active', 'dirty', 'dirtyFields', 'dirtySinceLastSubmit', 'dirtyFieldsSinceLastSubmit', 'error', 'errors', 'hasSubmitErrors', 'hasValidationErrors', 'initialValues', 'invalid', 'modified', 'modifiedSinceLastSubmit', 'pristine', 'submitError', 'submitErrors', 'submitFailed', 'submitSucceeded', 'submitting', 'touched', 'valid', 'validating', 'values', 'visited']);\n};\nvar addLazyFieldMetaState = function addLazyFieldMetaState(dest, state) {\n  return addLazyState(dest, state, ['active', 'data', 'dirty', 'dirtySinceLastSubmit', 'error', 'initial', 'invalid', 'length', 'modified', 'modifiedSinceLastSubmit', 'pristine', 'submitError', 'submitFailed', 'submitSucceeded', 'submitting', 'touched', 'valid', 'validating', 'visited']);\n};\n\nvar versions = {\n  'final-form': version$1,\n  'react-final-form': version\n};\nvar all$1 = formSubscriptionItems.reduce(function (result, key) {\n  result[key] = true;\n  return result;\n}, {});\n\nfunction ReactFinalForm(_ref) {\n  var debug = _ref.debug,\n      decorators = _ref.decorators,\n      destroyOnUnregister = _ref.destroyOnUnregister,\n      alternateFormApi = _ref.form,\n      initialValues = _ref.initialValues,\n      initialValuesEqual = _ref.initialValuesEqual,\n      keepDirtyOnReinitialize = _ref.keepDirtyOnReinitialize,\n      mutators = _ref.mutators,\n      onSubmit = _ref.onSubmit,\n      _ref$subscription = _ref.subscription,\n      subscription = _ref$subscription === void 0 ? all$1 : _ref$subscription,\n      validate = _ref.validate,\n      validateOnBlur = _ref.validateOnBlur,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"debug\", \"decorators\", \"destroyOnUnregister\", \"form\", \"initialValues\", \"initialValuesEqual\", \"keepDirtyOnReinitialize\", \"mutators\", \"onSubmit\", \"subscription\", \"validate\", \"validateOnBlur\"]);\n\n  var config = {\n    debug: debug,\n    destroyOnUnregister: destroyOnUnregister,\n    initialValues: initialValues,\n    keepDirtyOnReinitialize: keepDirtyOnReinitialize,\n    mutators: mutators,\n    onSubmit: onSubmit,\n    validate: validate,\n    validateOnBlur: validateOnBlur\n  };\n  var form = useConstant(function () {\n    var f = alternateFormApi || createForm(config); // pause validation until children register all fields on first render (unpaused in useEffect() below)\n\n    f.pauseValidation();\n    return f;\n  }); // synchronously register and unregister to query form state for our subscription on first render\n\n  var _React$useState = React.useState(function () {\n    var initialState = {};\n    form.subscribe(function (state) {\n      initialState = state;\n    }, subscription)();\n    return initialState;\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1]; // save a copy of state that can break through the closure\n  // on the shallowEqual() line below.\n\n\n  var stateRef = useLatest(state);\n  React.useEffect(function () {\n    // We have rendered, so all fields are now registered, so we can unpause validation\n    form.isValidationPaused() && form.resumeValidation();\n    var unsubscriptions = [form.subscribe(function (s) {\n      if (!shallowEqual(s, stateRef.current)) {\n        setState(s);\n      }\n    }, subscription)].concat(decorators ? decorators.map(function (decorator) {\n      return (// this noop ternary is to appease the flow gods\n        // istanbul ignore next\n        decorator(form)\n      );\n    }) : []);\n    return function () {\n      form.pauseValidation(); // pause validation so we don't revalidate on every field deregistration\n\n      unsubscriptions.reverse().forEach(function (unsubscribe) {\n        return unsubscribe();\n      }); // don't need to resume validation here; either unmounting, or will re-run this hook with new deps\n    }; // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [decorators]); // warn about decorator changes\n  // istanbul ignore next\n\n  if (process.env.NODE_ENV !== 'production') {\n    // You're never supposed to use hooks inside a conditional, but in this\n    // case we can be certain that you're not going to be changing your\n    // NODE_ENV between renders, so this is safe.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useWhenValueChanges(decorators, function () {\n      console.error('Form decorators should not change from one render to the next as new values will be ignored');\n    }, shallowEqual);\n  } // allow updatable config\n\n\n  useWhenValueChanges(debug, function () {\n    form.setConfig('debug', debug);\n  });\n  useWhenValueChanges(destroyOnUnregister, function () {\n    form.destroyOnUnregister = !!destroyOnUnregister;\n  });\n  useWhenValueChanges(keepDirtyOnReinitialize, function () {\n    form.setConfig('keepDirtyOnReinitialize', keepDirtyOnReinitialize);\n  });\n  useWhenValueChanges(initialValues, function () {\n    form.setConfig('initialValues', initialValues);\n  }, initialValuesEqual || shallowEqual);\n  useWhenValueChanges(mutators, function () {\n    form.setConfig('mutators', mutators);\n  });\n  useWhenValueChanges(onSubmit, function () {\n    form.setConfig('onSubmit', onSubmit);\n  });\n  useWhenValueChanges(validate, function () {\n    form.setConfig('validate', validate);\n  });\n  useWhenValueChanges(validateOnBlur, function () {\n    form.setConfig('validateOnBlur', validateOnBlur);\n  });\n\n  var handleSubmit = function handleSubmit(event) {\n    if (event) {\n      // sometimes not true, e.g. React Native\n      if (typeof event.preventDefault === 'function') {\n        event.preventDefault();\n      }\n\n      if (typeof event.stopPropagation === 'function') {\n        // prevent any outer forms from receiving the event too\n        event.stopPropagation();\n      }\n    }\n\n    return form.submit();\n  };\n\n  var renderProps = {\n    form: _extends({}, form, {\n      reset: function reset(eventOrValues) {\n        if (isSyntheticEvent(eventOrValues)) {\n          // it's a React SyntheticEvent, call reset with no arguments\n          form.reset();\n        } else {\n          form.reset(eventOrValues);\n        }\n      }\n    }),\n    handleSubmit: handleSubmit\n  };\n  addLazyFormState(renderProps, state);\n  return /*#__PURE__*/React.createElement(ReactFinalFormContext.Provider, {\n    value: form\n  }, renderComponent(_extends({}, rest, {\n    __versions: versions\n  }), renderProps, 'ReactFinalForm'));\n}\n\nfunction useForm(componentName) {\n  var form = React.useContext(ReactFinalFormContext);\n\n  if (!form) {\n    throw new Error((componentName || 'useForm') + \" must be used inside of a <Form> component\");\n  }\n\n  return form;\n}\n\nfunction useFormState(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      onChange = _ref.onChange,\n      _ref$subscription = _ref.subscription,\n      subscription = _ref$subscription === void 0 ? all$1 : _ref$subscription;\n\n  var form = useForm('useFormState');\n  var firstRender = React.useRef(true);\n  var onChangeRef = React.useRef(onChange);\n  onChangeRef.current = onChange; // synchronously register and unregister to query field state for our subscription on first render\n\n  var _React$useState = React.useState(function () {\n    var initialState = {};\n    form.subscribe(function (state) {\n      initialState = state;\n    }, subscription)();\n\n    if (onChange) {\n      onChange(initialState);\n    }\n\n    return initialState;\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  React.useEffect(function () {\n    return form.subscribe(function (newState) {\n      if (firstRender.current) {\n        firstRender.current = false;\n      } else {\n        setState(newState);\n\n        if (onChangeRef.current) {\n          onChangeRef.current(newState);\n        }\n      }\n    }, subscription);\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  []);\n  var lazyState = {};\n  addLazyFormState(lazyState, state);\n  return lazyState;\n}\n\nfunction FormSpy(_ref) {\n  var onChange = _ref.onChange,\n      subscription = _ref.subscription,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"onChange\", \"subscription\"]);\n\n  var reactFinalForm = useForm('FormSpy');\n  var state = useFormState({\n    onChange: onChange,\n    subscription: subscription\n  });\n\n  if (onChange) {\n    return null;\n  }\n\n  var renderProps = {\n    form: _extends({}, reactFinalForm, {\n      reset: function reset(eventOrValues) {\n        if (isSyntheticEvent(eventOrValues)) {\n          // it's a React SyntheticEvent, call reset with no arguments\n          reactFinalForm.reset();\n        } else {\n          reactFinalForm.reset(eventOrValues);\n        }\n      }\n    })\n  };\n  return renderComponent(_extends({}, rest, renderProps), state, 'FormSpy');\n}\n\nvar isReactNative = typeof window !== 'undefined' && window.navigator && window.navigator.product && window.navigator.product === 'ReactNative';\n\nvar getSelectedValues = function getSelectedValues(options) {\n  var result = [];\n\n  if (options) {\n    for (var index = 0; index < options.length; index++) {\n      var option = options[index];\n\n      if (option.selected) {\n        result.push(option.value);\n      }\n    }\n  }\n\n  return result;\n};\n\nvar getValue = function getValue(event, currentValue, valueProp, isReactNative) {\n  if (!isReactNative && event.nativeEvent && event.nativeEvent.text !== undefined) {\n    return event.nativeEvent.text;\n  }\n\n  if (isReactNative && event.nativeEvent) {\n    return event.nativeEvent.text;\n  }\n\n  var detypedEvent = event;\n  var _detypedEvent$target = detypedEvent.target,\n      type = _detypedEvent$target.type,\n      value = _detypedEvent$target.value,\n      checked = _detypedEvent$target.checked;\n\n  switch (type) {\n    case 'checkbox':\n      if (valueProp !== undefined) {\n        // we are maintaining an array, not just a boolean\n        if (checked) {\n          // add value to current array value\n          return Array.isArray(currentValue) ? currentValue.concat(valueProp) : [valueProp];\n        } else {\n          // remove value from current array value\n          if (!Array.isArray(currentValue)) {\n            return currentValue;\n          }\n\n          var index = currentValue.indexOf(valueProp);\n\n          if (index < 0) {\n            return currentValue;\n          } else {\n            return currentValue.slice(0, index).concat(currentValue.slice(index + 1));\n          }\n        }\n      } else {\n        // it's just a boolean\n        return !!checked;\n      }\n\n    case 'select-multiple':\n      return getSelectedValues(event.target.options);\n\n    default:\n      return value;\n  }\n};\n\nvar all = fieldSubscriptionItems.reduce(function (result, key) {\n  result[key] = true;\n  return result;\n}, {});\n\nvar defaultFormat = function defaultFormat(value, name) {\n  return value === undefined ? '' : value;\n};\n\nvar defaultParse = function defaultParse(value, name) {\n  return value === '' ? undefined : value;\n};\n\nvar defaultIsEqual = function defaultIsEqual(a, b) {\n  return a === b;\n};\n\nfunction useField(name, config) {\n  if (config === void 0) {\n    config = {};\n  }\n\n  var _config = config,\n      afterSubmit = _config.afterSubmit,\n      allowNull = _config.allowNull,\n      component = _config.component,\n      data = _config.data,\n      defaultValue = _config.defaultValue,\n      _config$format = _config.format,\n      format = _config$format === void 0 ? defaultFormat : _config$format,\n      formatOnBlur = _config.formatOnBlur,\n      initialValue = _config.initialValue,\n      multiple = _config.multiple,\n      _config$parse = _config.parse,\n      parse = _config$parse === void 0 ? defaultParse : _config$parse,\n      _config$subscription = _config.subscription,\n      subscription = _config$subscription === void 0 ? all : _config$subscription,\n      type = _config.type,\n      validateFields = _config.validateFields,\n      _value = _config.value;\n  var form = useForm('useField');\n  var configRef = useLatest(config);\n\n  var register = function register(callback, silent) {\n    return (// avoid using `state` const in any closures created inside `register`\n      // because they would refer `state` from current execution context\n      // whereas actual `state` would defined in the subsequent `useField` hook\n      // execution\n      // (that would be caused by `setState` call performed in `register` callback)\n      form.registerField(name, callback, subscription, {\n        afterSubmit: afterSubmit,\n        beforeSubmit: function beforeSubmit() {\n          var _configRef$current = configRef.current,\n              beforeSubmit = _configRef$current.beforeSubmit,\n              formatOnBlur = _configRef$current.formatOnBlur,\n              _configRef$current$fo = _configRef$current.format,\n              format = _configRef$current$fo === void 0 ? defaultFormat : _configRef$current$fo;\n\n          if (formatOnBlur) {\n            var _ref = form.getFieldState(name),\n                value = _ref.value;\n\n            var formatted = format(value, name);\n\n            if (formatted !== value) {\n              form.change(name, formatted);\n            }\n          }\n\n          return beforeSubmit && beforeSubmit();\n        },\n        data: data,\n        defaultValue: defaultValue,\n        getValidator: function getValidator() {\n          return configRef.current.validate;\n        },\n        initialValue: initialValue,\n        isEqual: function isEqual(a, b) {\n          return (configRef.current.isEqual || defaultIsEqual)(a, b);\n        },\n        silent: silent,\n        validateFields: validateFields\n      })\n    );\n  };\n\n  var firstRender = React.useRef(true); // synchronously register and unregister to query field state for our subscription on first render\n\n  var _React$useState = React.useState(function () {\n    var initialState = {}; // temporarily disable destroyOnUnregister\n\n    var destroyOnUnregister = form.destroyOnUnregister;\n    form.destroyOnUnregister = false;\n    register(function (state) {\n      initialState = state;\n    }, true)(); // return destroyOnUnregister to its original value\n\n    form.destroyOnUnregister = destroyOnUnregister;\n    return initialState;\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  React.useEffect(function () {\n    return register(function (state) {\n      if (firstRender.current) {\n        firstRender.current = false;\n      } else {\n        setState(state);\n      }\n    }, false);\n  }, // eslint-disable-next-line react-hooks/exhaustive-deps\n  [name, data, defaultValue, // If we want to allow inline fat-arrow field-level validation functions, we\n  // cannot reregister field every time validate function !==.\n  // validate,\n  initialValue // The validateFields array is often passed as validateFields={[]}, creating\n  // a !== new array every time. If it needs to be changed, a rerender/reregister\n  // can be forced by changing the key prop\n  // validateFields\n  ]);\n  var handlers = {\n    onBlur: React.useCallback(function (event) {\n      state.blur();\n\n      if (formatOnBlur) {\n        /**\n         * Here we must fetch the value directly from Final Form because we cannot\n         * trust that our `state` closure has the most recent value. This is a problem\n         * if-and-only-if the library consumer has called `onChange()` immediately\n         * before calling `onBlur()`, but before the field has had a chance to receive\n         * the value update from Final Form.\n         */\n        var fieldState = form.getFieldState(state.name);\n        state.change(format(fieldState.value, state.name));\n      }\n    }, // eslint-disable-next-line react-hooks/exhaustive-deps\n    [state.blur, state.name, format, formatOnBlur]),\n    onChange: React.useCallback(function (event) {\n      // istanbul ignore next\n      if (process.env.NODE_ENV !== 'production' && event && event.target) {\n        var targetType = event.target.type;\n        var unknown = ~['checkbox', 'radio', 'select-multiple'].indexOf(targetType) && !type && component !== 'select';\n\n        var _value2 = targetType === 'select-multiple' ? state.value : _value;\n\n        if (unknown) {\n          console.error(\"You must pass `type=\\\"\" + (targetType === 'select-multiple' ? 'select' : targetType) + \"\\\"` prop to your Field(\" + name + \") component.\\n\" + (\"Without it we don't know how to unpack your `value` prop - \" + (Array.isArray(_value2) ? \"[\" + _value2 + \"]\" : \"\\\"\" + _value2 + \"\\\"\") + \".\"));\n        }\n      }\n\n      var value = event && event.target ? getValue(event, state.value, _value, isReactNative) : event;\n      state.change(parse(value, name));\n    }, // eslint-disable-next-line react-hooks/exhaustive-deps\n    [_value, name, parse, state.change, state.value, type]),\n    onFocus: React.useCallback(function (event) {\n      state.focus();\n    }, // eslint-disable-next-line react-hooks/exhaustive-deps\n    [state.focus])\n  };\n  var meta = {};\n  addLazyFieldMetaState(meta, state);\n\n  var input = _extends({\n    name: name,\n\n    get value() {\n      var value = state.value;\n\n      if (formatOnBlur) {\n        if (component === 'input') {\n          value = defaultFormat(value);\n        }\n      } else {\n        value = format(value, name);\n      }\n\n      if (value === null && !allowNull) {\n        value = '';\n      }\n\n      if (type === 'checkbox' || type === 'radio') {\n        return _value;\n      } else if (component === 'select' && multiple) {\n        return value || [];\n      }\n\n      return value;\n    },\n\n    get checked() {\n      var value = state.value;\n\n      if (type === 'checkbox') {\n        value = format(value, name);\n\n        if (_value === undefined) {\n          return !!value;\n        } else {\n          return !!(Array.isArray(value) && ~value.indexOf(_value));\n        }\n      } else if (type === 'radio') {\n        return format(value, name) === _value;\n      }\n\n      return undefined;\n    }\n\n  }, handlers);\n\n  if (multiple) {\n    input.multiple = multiple;\n  }\n\n  if (type !== undefined) {\n    input.type = type;\n  }\n\n  var renderProps = {\n    input: input,\n    meta: meta\n  }; // assign to force Flow check\n\n  return renderProps;\n}\n\nvar Field = /*#__PURE__*/React.forwardRef(function Field(_ref, ref) {\n  var afterSubmit = _ref.afterSubmit,\n      allowNull = _ref.allowNull,\n      beforeSubmit = _ref.beforeSubmit,\n      children = _ref.children,\n      component = _ref.component,\n      data = _ref.data,\n      defaultValue = _ref.defaultValue,\n      format = _ref.format,\n      formatOnBlur = _ref.formatOnBlur,\n      initialValue = _ref.initialValue,\n      isEqual = _ref.isEqual,\n      multiple = _ref.multiple,\n      name = _ref.name,\n      parse = _ref.parse,\n      subscription = _ref.subscription,\n      type = _ref.type,\n      validate = _ref.validate,\n      validateFields = _ref.validateFields,\n      value = _ref.value,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"afterSubmit\", \"allowNull\", \"beforeSubmit\", \"children\", \"component\", \"data\", \"defaultValue\", \"format\", \"formatOnBlur\", \"initialValue\", \"isEqual\", \"multiple\", \"name\", \"parse\", \"subscription\", \"type\", \"validate\", \"validateFields\", \"value\"]);\n\n  var field = useField(name, {\n    afterSubmit: afterSubmit,\n    allowNull: allowNull,\n    beforeSubmit: beforeSubmit,\n    children: children,\n    component: component,\n    data: data,\n    defaultValue: defaultValue,\n    format: format,\n    formatOnBlur: formatOnBlur,\n    initialValue: initialValue,\n    isEqual: isEqual,\n    multiple: multiple,\n    parse: parse,\n    subscription: subscription,\n    type: type,\n    validate: validate,\n    validateFields: validateFields,\n    value: value\n  });\n\n  if (typeof children === 'function') {\n    return children(_extends({}, field, rest));\n  }\n\n  if (typeof component === 'string') {\n    // ignore meta, combine input with any other props\n    return /*#__PURE__*/React.createElement(component, _extends({}, field.input, {\n      children: children,\n      ref: ref\n    }, rest));\n  }\n\n  if (!name) {\n    throw new Error('prop name cannot be undefined in <Field> component');\n  }\n\n  return renderComponent(_extends({\n    children: children,\n    component: component,\n    ref: ref\n  }, rest), field, \"Field(\" + name + \")\");\n});\n\nfunction withTypes() {\n  return {\n    Form: ReactFinalForm,\n    FormSpy: FormSpy\n  };\n}\n\nexport { Field, ReactFinalForm as Form, FormSpy, useField, useForm, useFormState, version, withTypes };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nvar interface_1 = require(\"./interface\");\nvar transition_1 = require(\"./transition\");\nvar hookRegistry_1 = require(\"./hookRegistry\");\nvar coreResolvables_1 = require(\"../hooks/coreResolvables\");\nvar redirectTo_1 = require(\"../hooks/redirectTo\");\nvar onEnterExitRetain_1 = require(\"../hooks/onEnterExitRetain\");\nvar resolve_1 = require(\"../hooks/resolve\");\nvar views_1 = require(\"../hooks/views\");\nvar updateGlobals_1 = require(\"../hooks/updateGlobals\");\nvar url_1 = require(\"../hooks/url\");\nvar lazyLoad_1 = require(\"../hooks/lazyLoad\");\nvar transitionEventType_1 = require(\"./transitionEventType\");\nvar transitionHook_1 = require(\"./transitionHook\");\nvar predicates_1 = require(\"../common/predicates\");\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar ignoredTransition_1 = require(\"../hooks/ignoredTransition\");\nvar invalidTransition_1 = require(\"../hooks/invalidTransition\");\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexports.defaultTransOpts = {\n    location: true,\n    relative: null,\n    inherit: false,\n    notify: true,\n    reload: false,\n    custom: {},\n    current: function () { return null; },\n    source: 'unknown',\n};\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n */\nvar TransitionService = /** @class */ (function () {\n    /** @hidden */\n    function TransitionService(_router) {\n        /** @hidden */\n        this._transitionCount = 0;\n        /** @hidden The transition hook types, such as `onEnter`, `onStart`, etc */\n        this._eventTypes = [];\n        /** @hidden The registered transition hooks */\n        this._registeredHooks = {};\n        /** @hidden The  paths on a criteria object */\n        this._criteriaPaths = {};\n        this._router = _router;\n        this.$view = _router.viewService;\n        this._deregisterHookFns = {};\n        this._pluginapi = common_1.createProxyFunctions(hof_1.val(this), {}, hof_1.val(this), [\n            '_definePathType',\n            '_defineEvent',\n            '_getPathTypes',\n            '_getEvents',\n            'getHooks',\n        ]);\n        this._defineCorePaths();\n        this._defineCoreEvents();\n        this._registerCoreTransitionHooks();\n        _router.globals.successfulTransitions.onEvict(coreResolvables_1.treeChangesCleanup);\n    }\n    /**\n     * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n     *\n     * Registers a transition lifecycle hook, which is invoked during transition construction.\n     *\n     * This low level hook should only be used by plugins.\n     * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n     * The Sticky States plugin uses this hook to modify the treechanges.\n     *\n     * ### Lifecycle\n     *\n     * `onCreate` hooks are invoked *while a transition is being constructed*.\n     *\n     * ### Return value\n     *\n     * The hook's return value is ignored\n     *\n     * @internalapi\n     * @param criteria defines which Transitions the Hook should be invoked for.\n     * @param callback the hook function which will be invoked.\n     * @param options the registration options\n     * @returns a function which deregisters the hook.\n     */\n    TransitionService.prototype.onCreate = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onBefore = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onStart = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onExit = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onRetain = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onEnter = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onFinish = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onSuccess = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    TransitionService.prototype.onError = function (criteria, callback, options) { return; };\n    /**\n     * dispose\n     * @internalapi\n     */\n    TransitionService.prototype.dispose = function (router) {\n        common_1.values(this._registeredHooks).forEach(function (hooksArray) { return hooksArray.forEach(function (hook) {\n            hook._deregistered = true;\n            common_1.removeFrom(hooksArray, hook);\n        }); });\n    };\n    /**\n     * Creates a new [[Transition]] object\n     *\n     * This is a factory function for creating new Transition objects.\n     * It is used internally by the [[StateService]] and should generally not be called by application code.\n     *\n     * @param fromPath the path to the current state (the from state)\n     * @param targetState the target state (destination)\n     * @returns a Transition\n     */\n    TransitionService.prototype.create = function (fromPath, targetState) {\n        return new transition_1.Transition(fromPath, targetState, this._router);\n    };\n    /** @hidden */\n    TransitionService.prototype._defineCoreEvents = function () {\n        var Phase = interface_1.TransitionHookPhase;\n        var TH = transitionHook_1.TransitionHook;\n        var paths = this._criteriaPaths;\n        var NORMAL_SORT = false, REVERSE_SORT = true;\n        var SYNCHRONOUS = true;\n        this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n        this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n        this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n        this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n        this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n        this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n        this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n        this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n        this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n    };\n    /** @hidden */\n    TransitionService.prototype._defineCorePaths = function () {\n        var STATE = interface_1.TransitionHookScope.STATE, TRANSITION = interface_1.TransitionHookScope.TRANSITION;\n        this._definePathType('to', TRANSITION);\n        this._definePathType('from', TRANSITION);\n        this._definePathType('exiting', STATE);\n        this._definePathType('retained', STATE);\n        this._definePathType('entering', STATE);\n    };\n    /** @hidden */\n    TransitionService.prototype._defineEvent = function (name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n        if (reverseSort === void 0) { reverseSort = false; }\n        if (getResultHandler === void 0) { getResultHandler = transitionHook_1.TransitionHook.HANDLE_RESULT; }\n        if (getErrorHandler === void 0) { getErrorHandler = transitionHook_1.TransitionHook.REJECT_ERROR; }\n        if (synchronous === void 0) { synchronous = false; }\n        var eventType = new transitionEventType_1.TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n        this._eventTypes.push(eventType);\n        hookRegistry_1.makeEvent(this, this, eventType);\n    };\n    /** @hidden */ // tslint:disable-next-line\n    TransitionService.prototype._getEvents = function (phase) {\n        var transitionHookTypes = predicates_1.isDefined(phase) ?\n            this._eventTypes.filter(function (type) { return type.hookPhase === phase; }) :\n            this._eventTypes.slice();\n        return transitionHookTypes.sort(function (l, r) {\n            var cmpByPhase = l.hookPhase - r.hookPhase;\n            return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n        });\n    };\n    /**\n     * Adds a Path to be used as a criterion against a TreeChanges path\n     *\n     * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n     * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n     * Each state in the exiting path is checked against the criteria and returned as part of the match.\n     *\n     * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n     * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n     * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n     *\n     * @hidden\n     */\n    TransitionService.prototype._definePathType = function (name, hookScope) {\n        this._criteriaPaths[name] = { name: name, scope: hookScope };\n    };\n    /** * @hidden */ // tslint:disable-next-line\n    TransitionService.prototype._getPathTypes = function () {\n        return this._criteriaPaths;\n    };\n    /** @hidden */\n    TransitionService.prototype.getHooks = function (hookName) {\n        return this._registeredHooks[hookName];\n    };\n    /** @hidden */\n    TransitionService.prototype._registerCoreTransitionHooks = function () {\n        var fns = this._deregisterHookFns;\n        fns.addCoreResolves = coreResolvables_1.registerAddCoreResolvables(this);\n        fns.ignored = ignoredTransition_1.registerIgnoredTransitionHook(this);\n        fns.invalid = invalidTransition_1.registerInvalidTransitionHook(this);\n        // Wire up redirectTo hook\n        fns.redirectTo = redirectTo_1.registerRedirectToHook(this);\n        // Wire up onExit/Retain/Enter state hooks\n        fns.onExit = onEnterExitRetain_1.registerOnExitHook(this);\n        fns.onRetain = onEnterExitRetain_1.registerOnRetainHook(this);\n        fns.onEnter = onEnterExitRetain_1.registerOnEnterHook(this);\n        // Wire up Resolve hooks\n        fns.eagerResolve = resolve_1.registerEagerResolvePath(this);\n        fns.lazyResolve = resolve_1.registerLazyResolveState(this);\n        fns.resolveAll = resolve_1.registerResolveRemaining(this);\n        // Wire up the View management hooks\n        fns.loadViews = views_1.registerLoadEnteringViews(this);\n        fns.activateViews = views_1.registerActivateViews(this);\n        // Updates global state after a transition\n        fns.updateGlobals = updateGlobals_1.registerUpdateGlobalState(this);\n        // After globals.current is updated at priority: 10000\n        fns.updateUrl = url_1.registerUpdateUrl(this);\n        // Lazy load state trees\n        fns.lazyLoad = lazyLoad_1.registerLazyLoadHook(this);\n    };\n    return TransitionService;\n}());\nexports.TransitionService = TransitionService;\n//# sourceMappingURL=transitionService.js.map","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","/* eslint-disable no-prototype-builtins */\nvar g =\n  (typeof globalThis !== 'undefined' && globalThis) ||\n  (typeof self !== 'undefined' && self) ||\n  // eslint-disable-next-line no-undef\n  (typeof global !== 'undefined' && global) ||\n  {}\n\nvar support = {\n  searchParams: 'URLSearchParams' in g,\n  iterable: 'Symbol' in g && 'iterator' in Symbol,\n  blob:\n    'FileReader' in g &&\n    'Blob' in g &&\n    (function() {\n      try {\n        new Blob()\n        return true\n      } catch (e) {\n        return false\n      }\n    })(),\n  formData: 'FormData' in g,\n  arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n  var viewClasses = [\n    '[object Int8Array]',\n    '[object Uint8Array]',\n    '[object Uint8ClampedArray]',\n    '[object Int16Array]',\n    '[object Uint16Array]',\n    '[object Int32Array]',\n    '[object Uint32Array]',\n    '[object Float32Array]',\n    '[object Float64Array]'\n  ]\n\n  var isArrayBufferView =\n    ArrayBuffer.isView ||\n    function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n}\n\nfunction normalizeName(name) {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n    throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n  }\n  return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n  return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n  var iterator = {\n    next: function() {\n      var value = items.shift()\n      return {done: value === undefined, value: value}\n    }\n  }\n\n  if (support.iterable) {\n    iterator[Symbol.iterator] = function() {\n      return iterator\n    }\n  }\n\n  return iterator\n}\n\nexport function Headers(headers) {\n  this.map = {}\n\n  if (headers instanceof Headers) {\n    headers.forEach(function(value, name) {\n      this.append(name, value)\n    }, this)\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      if (header.length != 2) {\n        throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n      }\n      this.append(header[0], header[1])\n    }, this)\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name])\n    }, this)\n  }\n}\n\nHeaders.prototype.append = function(name, value) {\n  name = normalizeName(name)\n  value = normalizeValue(value)\n  var oldValue = this.map[name]\n  this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n  delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n  name = normalizeName(name)\n  return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this)\n    }\n  }\n}\n\nHeaders.prototype.keys = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push(name)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n  var items = []\n  this.forEach(function(value) {\n    items.push(value)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push([name, value])\n  })\n  return iteratorFor(items)\n}\n\nif (support.iterable) {\n  Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n  if (body._noBody) return\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError('Already read'))\n  }\n  body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve, reject) {\n    reader.onload = function() {\n      resolve(reader.result)\n    }\n    reader.onerror = function() {\n      reject(reader.error)\n    }\n  })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsArrayBuffer(blob)\n  return promise\n}\n\nfunction readBlobAsText(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n  var encoding = match ? match[1] : 'utf-8'\n  reader.readAsText(blob, encoding)\n  return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf)\n  var chars = new Array(view.length)\n\n  for (var i = 0; i < view.length; i++) {\n    chars[i] = String.fromCharCode(view[i])\n  }\n  return chars.join('')\n}\n\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0)\n  } else {\n    var view = new Uint8Array(buf.byteLength)\n    view.set(new Uint8Array(buf))\n    return view.buffer\n  }\n}\n\nfunction Body() {\n  this.bodyUsed = false\n\n  this._initBody = function(body) {\n    /*\n      fetch-mock wraps the Response object in an ES6 Proxy to\n      provide useful test harness features such as flush. However, on\n      ES5 browsers without fetch or Proxy support pollyfills must be used;\n      the proxy-pollyfill is unable to proxy an attribute unless it exists\n      on the object before the Proxy is created. This change ensures\n      Response.bodyUsed exists on the instance, while maintaining the\n      semantic of setting Request.bodyUsed in the constructor before\n      _initBody is called.\n    */\n    // eslint-disable-next-line no-self-assign\n    this.bodyUsed = this.bodyUsed\n    this._bodyInit = body\n    if (!body) {\n      this._noBody = true;\n      this._bodyText = ''\n    } else if (typeof body === 'string') {\n      this._bodyText = body\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString()\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer)\n      // IE 10-11 can't handle a DataView body.\n      this._bodyInit = new Blob([this._bodyArrayBuffer])\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body)\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body)\n    }\n\n    if (!this.headers.get('content-type')) {\n      if (typeof body === 'string') {\n        this.headers.set('content-type', 'text/plain;charset=UTF-8')\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set('content-type', this._bodyBlob.type)\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n      }\n    }\n  }\n\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as blob')\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]))\n      }\n    }\n  }\n\n  this.arrayBuffer = function() {\n    if (this._bodyArrayBuffer) {\n      var isConsumed = consumed(this)\n      if (isConsumed) {\n        return isConsumed\n      } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n        return Promise.resolve(\n          this._bodyArrayBuffer.buffer.slice(\n            this._bodyArrayBuffer.byteOffset,\n            this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n          )\n        )\n      } else {\n        return Promise.resolve(this._bodyArrayBuffer)\n      }\n    } else if (support.blob) {\n      return this.blob().then(readBlobAsArrayBuffer)\n    } else {\n      throw new Error('could not read as ArrayBuffer')\n    }\n  }\n\n  this.text = function() {\n    var rejected = consumed(this)\n    if (rejected) {\n      return rejected\n    }\n\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob)\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n    } else if (this._bodyFormData) {\n      throw new Error('could not read FormData body as text')\n    } else {\n      return Promise.resolve(this._bodyText)\n    }\n  }\n\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode)\n    }\n  }\n\n  this.json = function() {\n    return this.text().then(JSON.parse)\n  }\n\n  return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase()\n  return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n  if (!(this instanceof Request)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n\n  options = options || {}\n  var body = options.body\n\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError('Already read')\n    }\n    this.url = input.url\n    this.credentials = input.credentials\n    if (!options.headers) {\n      this.headers = new Headers(input.headers)\n    }\n    this.method = input.method\n    this.mode = input.mode\n    this.signal = input.signal\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit\n      input.bodyUsed = true\n    }\n  } else {\n    this.url = String(input)\n  }\n\n  this.credentials = options.credentials || this.credentials || 'same-origin'\n  if (options.headers || !this.headers) {\n    this.headers = new Headers(options.headers)\n  }\n  this.method = normalizeMethod(options.method || this.method || 'GET')\n  this.mode = options.mode || this.mode || null\n  this.signal = options.signal || this.signal || (function () {\n    if ('AbortController' in g) {\n      var ctrl = new AbortController();\n      return ctrl.signal;\n    }\n  }());\n  this.referrer = null\n\n  if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n    throw new TypeError('Body not allowed for GET or HEAD requests')\n  }\n  this._initBody(body)\n\n  if (this.method === 'GET' || this.method === 'HEAD') {\n    if (options.cache === 'no-store' || options.cache === 'no-cache') {\n      // Search for a '_' parameter in the query string\n      var reParamSearch = /([?&])_=[^&]*/\n      if (reParamSearch.test(this.url)) {\n        // If it already exists then set the value with the current time\n        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n      } else {\n        // Otherwise add a new '_' parameter to the end with the current time\n        var reQueryString = /\\?/\n        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n      }\n    }\n  }\n}\n\nRequest.prototype.clone = function() {\n  return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n  var form = new FormData()\n  body\n    .trim()\n    .split('&')\n    .forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n  return form\n}\n\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers()\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n  // https://github.com/github/fetch/issues/748\n  // https://github.com/zloirock/core-js/issues/751\n  preProcessedHeaders\n    .split('\\r')\n    .map(function(header) {\n      return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n    })\n    .forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        try {\n          headers.append(key, value)\n        } catch (error) {\n          console.warn('Response ' + error.message)\n        }\n      }\n    })\n  return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n  if (!(this instanceof Response)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n  if (!options) {\n    options = {}\n  }\n\n  this.type = 'default'\n  this.status = options.status === undefined ? 200 : options.status\n  if (this.status < 200 || this.status > 599) {\n    throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n  }\n  this.ok = this.status >= 200 && this.status < 300\n  this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n  this.headers = new Headers(options.headers)\n  this.url = options.url || ''\n  this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers(this.headers),\n    url: this.url\n  })\n}\n\nResponse.error = function() {\n  var response = new Response(null, {status: 200, statusText: ''})\n  response.ok = false\n  response.status = 0\n  response.type = 'error'\n  return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError('Invalid status code')\n  }\n\n  return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n  new DOMException()\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message\n    this.name = name\n    var error = Error(message)\n    this.stack = error.stack\n  }\n  DOMException.prototype = Object.create(Error.prototype)\n  DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n  return new Promise(function(resolve, reject) {\n    var request = new Request(input, init)\n\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    var xhr = new XMLHttpRequest()\n\n    function abortXhr() {\n      xhr.abort()\n    }\n\n    xhr.onload = function() {\n      var options = {\n        statusText: xhr.statusText,\n        headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n      }\n      // This check if specifically for when a user fetches a file locally from the file system\n      // Only if the status is out of a normal range\n      if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n        options.status = 200;\n      } else {\n        options.status = xhr.status;\n      }\n      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n      var body = 'response' in xhr ? xhr.response : xhr.responseText\n      setTimeout(function() {\n        resolve(new Response(body, options))\n      }, 0)\n    }\n\n    xhr.onerror = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.ontimeout = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request timed out'))\n      }, 0)\n    }\n\n    xhr.onabort = function() {\n      setTimeout(function() {\n        reject(new DOMException('Aborted', 'AbortError'))\n      }, 0)\n    }\n\n    function fixUrl(url) {\n      try {\n        return url === '' && g.location.href ? g.location.href : url\n      } catch (e) {\n        return url\n      }\n    }\n\n    xhr.open(request.method, fixUrl(request.url), true)\n\n    if (request.credentials === 'include') {\n      xhr.withCredentials = true\n    } else if (request.credentials === 'omit') {\n      xhr.withCredentials = false\n    }\n\n    if ('responseType' in xhr) {\n      if (support.blob) {\n        xhr.responseType = 'blob'\n      } else if (\n        support.arrayBuffer\n      ) {\n        xhr.responseType = 'arraybuffer'\n      }\n    }\n\n    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n      var names = [];\n      Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n        names.push(normalizeName(name))\n        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n      })\n      request.headers.forEach(function(value, name) {\n        if (names.indexOf(name) === -1) {\n          xhr.setRequestHeader(name, value)\n        }\n      })\n    } else {\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n    }\n\n    if (request.signal) {\n      request.signal.addEventListener('abort', abortXhr)\n\n      xhr.onreadystatechange = function() {\n        // DONE (success or failure)\n        if (xhr.readyState === 4) {\n          request.signal.removeEventListener('abort', abortXhr)\n        }\n      }\n    }\n\n    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n  })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n  g.fetch = fetch\n  g.Headers = Headers\n  g.Request = Request\n  g.Response = Response\n}\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar StateMachine = require('../../statemachine');\nvar TwilioConnection = require('../../twilioconnection');\nvar DefaultBackoff = require('../../util/backoff');\nvar reconnectBackoffConfig = require('../../util/constants').reconnectBackoffConfig;\nvar Timeout = require('../../util/timeout');\nvar _a = require('../../util/constants'), SDK_NAME = _a.SDK_NAME, SDK_VERSION = _a.SDK_VERSION, SDP_FORMAT = _a.SDP_FORMAT;\nvar _b = require('../../util'), createBandwidthProfilePayload = _b.createBandwidthProfilePayload, createMediaSignalingPayload = _b.createMediaSignalingPayload, createMediaWarningsPayload = _b.createMediaWarningsPayload, createSubscribePayload = _b.createSubscribePayload, getUserAgent = _b.getUserAgent, isNonArrayObject = _b.isNonArrayObject;\nvar _c = require('../../util/twilio-video-errors'), createTwilioError = _c.createTwilioError, RoomCompletedError = _c.RoomCompletedError, SignalingConnectionError = _c.SignalingConnectionError, SignalingServerBusyError = _c.SignalingServerBusyError;\nvar ICE_VERSION = 1;\nvar RSP_VERSION = 2;\n/*\nTwilioConnectionTransport States\n----------------\n\n                      +-----------+\n                      |           |\n                      |  syncing  |---------+\n                      |           |         |\n                      +-----------+         |\n                         ^     |            |\n                         |     |            |\n                         |     v            v\n    +------------+    +-----------+    +--------------+\n    |            |    |           |    |              |\n    | connecting |--->| connected |--->| disconnected |\n    |            |    |           |    |              |\n    +------------+    +-----------+    +--------------+\n             |                              ^\n             |                              |\n             |                              |\n             +------------------------------+\n\n*/\nvar states = {\n    connecting: [\n        'connected',\n        'disconnected'\n    ],\n    connected: [\n        'disconnected',\n        'syncing'\n    ],\n    syncing: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link TwilioConnectionTransport} supports sending and receiving Room Signaling Protocol\n * (RSP) messages. It also supports RSP requests, such as Sync and Disconnect.\n * @extends StateMachine\n * @emits TwilioConnectionTransport#connected\n * @emits TwilioConnectionTransport#message\n */\nvar TwilioConnectionTransport = /** @class */ (function (_super) {\n    __extends(TwilioConnectionTransport, _super);\n    /**\n     * Construct a {@link TwilioConnectionTransport}.\n     * @param {?string} name\n     * @param {string} accessToken\n     * @param {ParticipantSignaling} localParticipant\n     * @param {PeerConnectionManager} peerConnectionManager\n     * @param {string} wsServer\n     * @param {object} [options]\n     */\n    function TwilioConnectionTransport(name, accessToken, localParticipant, peerConnectionManager, wsServer, options) {\n        var _this = this;\n        options = Object.assign({\n            Backoff: DefaultBackoff,\n            TwilioConnection: TwilioConnection,\n            iceServers: null,\n            trackPriority: true,\n            trackSwitchOff: true,\n            renderHints: true,\n            userAgent: getUserAgent()\n        }, options);\n        _this = _super.call(this, 'connecting', states) || this;\n        Object.defineProperties(_this, {\n            _accessToken: {\n                value: accessToken\n            },\n            _automaticSubscription: {\n                value: options.automaticSubscription\n            },\n            _bandwidthProfile: {\n                value: options.bandwidthProfile\n            },\n            _dominantSpeaker: {\n                value: options.dominantSpeaker\n            },\n            _adaptiveSimulcast: {\n                value: options.adaptiveSimulcast\n            },\n            _eventObserver: {\n                value: options.eventObserver,\n                writable: false\n            },\n            _renderHints: {\n                value: options.renderHints\n            },\n            _iceServersStatus: {\n                value: Array.isArray(options.iceServers)\n                    ? 'overrode'\n                    : 'acquire'\n            },\n            _localParticipant: {\n                value: localParticipant\n            },\n            _name: {\n                value: name,\n            },\n            _networkQuality: {\n                value: isNonArrayObject(options.networkQuality) || options.networkQuality\n            },\n            _notifyWarnings: {\n                value: options.notifyWarnings\n            },\n            _options: {\n                value: options\n            },\n            _peerConnectionManager: {\n                value: peerConnectionManager\n            },\n            _sessionTimer: {\n                value: null,\n                writable: true\n            },\n            _sessionTimeoutMS: {\n                value: 0,\n                writable: true\n            },\n            _reconnectBackoff: {\n                value: new options.Backoff(reconnectBackoffConfig)\n            },\n            _session: {\n                value: null,\n                writable: true\n            },\n            _trackPriority: {\n                value: options.trackPriority\n            },\n            _trackSwitchOff: {\n                value: options.trackSwitchOff\n            },\n            _twilioConnection: {\n                value: null,\n                writable: true\n            },\n            _updatesReceived: {\n                value: []\n            },\n            _updatesToSend: {\n                value: []\n            },\n            _userAgent: {\n                value: options.userAgent\n            },\n            _wsServer: {\n                value: wsServer\n            }\n        });\n        setupTransport(_this);\n        return _this;\n    }\n    /**\n     * Create a Connect, Sync or Disconnect RSP message.\n     * @private\n     * @returns {?object}\n     */\n    TwilioConnectionTransport.prototype._createConnectOrSyncOrDisconnectMessage = function () {\n        if (this.state === 'connected') {\n            return null;\n        }\n        if (this.state === 'disconnected') {\n            return {\n                session: this._session,\n                type: 'disconnect',\n                version: RSP_VERSION\n            };\n        }\n        var type = {\n            connecting: 'connect',\n            syncing: 'sync'\n        }[this.state];\n        var message = {\n            name: this._name,\n            participant: this._localParticipant.getState(),\n            peer_connections: this._peerConnectionManager.getStates(),\n            type: type,\n            version: RSP_VERSION\n        };\n        if (message.type === 'connect') {\n            message.ice_servers = this._iceServersStatus;\n            message.publisher = {\n                name: SDK_NAME,\n                sdk_version: SDK_VERSION,\n                user_agent: this._userAgent\n            };\n            if (this._bandwidthProfile) {\n                message.bandwidth_profile = createBandwidthProfilePayload(this._bandwidthProfile);\n            }\n            if (this._notifyWarnings) {\n                message.participant.media_warnings = createMediaWarningsPayload(this._notifyWarnings);\n            }\n            message.media_signaling = createMediaSignalingPayload(this._dominantSpeaker, this._networkQuality, this._trackPriority, this._trackSwitchOff, this._adaptiveSimulcast, this._renderHints);\n            message.subscribe = createSubscribePayload(this._automaticSubscription);\n            message.format = SDP_FORMAT;\n            message.token = this._accessToken;\n        }\n        else if (message.type === 'sync') {\n            message.session = this._session;\n            message.token = this._accessToken;\n        }\n        else if (message.type === 'update') {\n            message.session = this._session;\n        }\n        return message;\n    };\n    /**\n     * Create an \"ice\" message.\n     * @private\n     */\n    TwilioConnectionTransport.prototype._createIceMessage = function () {\n        return {\n            edge: 'roaming',\n            token: this._accessToken,\n            type: 'ice',\n            version: ICE_VERSION\n        };\n    };\n    /**\n     * Send a Connect, Sync or Disconnect RSP message.\n     * @private\n     */\n    TwilioConnectionTransport.prototype._sendConnectOrSyncOrDisconnectMessage = function () {\n        var message = this._createConnectOrSyncOrDisconnectMessage();\n        if (message) {\n            this._twilioConnection.sendMessage(message);\n        }\n    };\n    /**\n     * Disconnect the {@link TwilioConnectionTransport}. Returns true if calling the method resulted\n     * in disconnection.\n     * @param {TwilioError} [error]\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.disconnect = function (error) {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected', null, [error]);\n            this._sendConnectOrSyncOrDisconnectMessage();\n            this._twilioConnection.close();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Publish an RSP Update. Returns true if calling the method resulted in\n     * publishing (or eventually publishing) the update.\n     * @param {object} update\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.publish = function (update) {\n        switch (this.state) {\n            case 'connected':\n                this._twilioConnection.sendMessage(Object.assign({\n                    session: this._session,\n                    type: 'update',\n                    version: RSP_VERSION\n                }, update));\n                return true;\n            case 'connecting':\n            case 'syncing':\n                this._updatesToSend.push(update);\n                return true;\n            case 'disconnected':\n            default:\n                return false;\n        }\n    };\n    /**\n     * Publish (or queue) an event to the Insights gateway.\n     * @param {string} group - Event group name\n     * @param {string} name - Event name\n     * @param {string} level - Event level\n     * @param {object} payload - Event payload\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype.publishEvent = function (group, name, level, payload) {\n        this._eventObserver.emit('event', { group: group, name: name, level: level, payload: payload });\n    };\n    /**\n     * Sync the {@link TwilioConnectionTransport}. Returns true if calling the method resulted in\n     * syncing.\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.sync = function () {\n        if (this.state === 'connected') {\n            this.preempt('syncing');\n            this._sendConnectOrSyncOrDisconnectMessage();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @private\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype._setSession = function (session, sessionTimeout) {\n        this._session = session;\n        this._sessionTimeoutMS = sessionTimeout * 1000;\n    };\n    /**\n     * Determines if we should attempt reconnect.\n     * returns a Promise to wait on before attempting to\n     * reconnect. returns null if its not okay to reconnect.\n     * @private\n     * @returns {Promise<void>}\n     */\n    TwilioConnectionTransport.prototype._getReconnectTimer = function () {\n        var _this = this;\n        if (this._sessionTimeoutMS === 0) {\n            // this means either we have never connected.\n            // or we timed out while trying to reconnect\n            // In either case we do not want to reconnect.\n            return null;\n        }\n        // start session timer\n        if (!this._sessionTimer) {\n            this._sessionTimer = new Timeout(function () {\n                // ensure that _clearReconnectTimer wasn't\n                // called while we were waiting.\n                if (_this._sessionTimer) {\n                    // do not allow any more reconnect attempts.\n                    _this._sessionTimeoutMS = 0;\n                }\n            }, this._sessionTimeoutMS);\n        }\n        // return promise that waits with exponential backoff.\n        return new Promise(function (resolve) {\n            _this._reconnectBackoff.backoff(resolve);\n        });\n    };\n    /**\n     * clears the session reconnect timer.\n     *\n     * @private\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype._clearReconnectTimer = function () {\n        this._reconnectBackoff.reset();\n        if (this._sessionTimer) {\n            this._sessionTimer.clear();\n            this._sessionTimer = null;\n        }\n    };\n    return TwilioConnectionTransport;\n}(StateMachine));\n/**\n * @event TwilioConnectionTransport#connected\n * @param {object} initialState\n */\n/**\n * @event TwilioConnectionTransport#message\n * @param {object} peerConnections\n */\nfunction reducePeerConnections(peerConnections) {\n    return Array.from(peerConnections.reduce(function (peerConnectionsById, update) {\n        var reduced = peerConnectionsById.get(update.id) || update;\n        // First, reduce the top-level `description` property.\n        if (!reduced.description && update.description) {\n            reduced.description = update.description;\n        }\n        else if (reduced.description && update.description) {\n            if (update.description.revision > reduced.description.revision) {\n                reduced.description = update.description;\n            }\n        }\n        // Then, reduce the top-level `ice` property.\n        if (!reduced.ice && update.ice) {\n            reduced.ice = update.ice;\n        }\n        else if (reduced.ice && update.ice) {\n            if (update.ice.revision > reduced.ice.revision) {\n                reduced.ice = update.ice;\n            }\n        }\n        // Finally, update the map.\n        peerConnectionsById.set(reduced.id, reduced);\n        return peerConnectionsById;\n    }, new Map()).values());\n}\nfunction reduceUpdates(updates) {\n    return updates.reduce(function (reduced, update) {\n        // First, reduce the top-level `participant` property.\n        if (!reduced.participant && update.participant) {\n            reduced.participant = update.participant;\n        }\n        else if (reduced.participant && update.participant) {\n            if (update.participant.revision > reduced.participant.revision) {\n                reduced.participant = update.participant;\n            }\n        }\n        // Then, reduce the top-level `peer_connections` property.\n        /* eslint camelcase:0 */\n        if (!reduced.peer_connections && update.peer_connections) {\n            reduced.peer_connections = reducePeerConnections(update.peer_connections);\n        }\n        else if (reduced.peer_connections && update.peer_connections) {\n            reduced.peer_connections = reducePeerConnections(reduced.peer_connections.concat(update.peer_connections));\n        }\n        return reduced;\n    }, {});\n}\nfunction setupTransport(transport) {\n    function createOrResetTwilioConnection() {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (transport._twilioConnection) {\n            transport._twilioConnection.removeListener('message', handleMessage);\n        }\n        var _iceServersStatus = transport._iceServersStatus, _options = transport._options, _wsServer = transport._wsServer, state = transport.state;\n        var TwilioConnection = _options.TwilioConnection;\n        var twilioConnection = new TwilioConnection(_wsServer, Object.assign({\n            helloBody: state === 'connecting' && _iceServersStatus === 'acquire'\n                ? transport._createIceMessage()\n                : transport._createConnectOrSyncOrDisconnectMessage()\n        }, _options));\n        twilioConnection.once('close', function (reason) {\n            if (reason === TwilioConnection.CloseReason.LOCAL) {\n                disconnect();\n            }\n            else {\n                disconnect(new Error(reason));\n            }\n        });\n        twilioConnection.on('message', handleMessage);\n        transport._twilioConnection = twilioConnection;\n    }\n    function disconnect(error) {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (!error) {\n            transport.disconnect();\n            return;\n        }\n        var reconnectTimer = transport._getReconnectTimer();\n        if (!reconnectTimer) {\n            var twilioError = error.message === TwilioConnection.CloseReason.BUSY\n                ? new SignalingServerBusyError()\n                : new SignalingConnectionError();\n            transport.disconnect(twilioError);\n            return;\n        }\n        if (transport.state === 'connected') {\n            transport.preempt('syncing');\n        }\n        reconnectTimer.then(createOrResetTwilioConnection);\n    }\n    function handleMessage(message) {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (message.type === 'error') {\n            transport.disconnect(createTwilioError(message.code, message.message));\n            return;\n        }\n        switch (transport.state) {\n            case 'connected':\n                switch (message.type) {\n                    case 'connected':\n                    case 'synced':\n                    case 'update':\n                    case 'warning':\n                        transport.emit('message', message);\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            case 'connecting':\n                switch (message.type) {\n                    case 'iced':\n                        transport._options.onIced(message.ice_servers).then(function () {\n                            transport._sendConnectOrSyncOrDisconnectMessage();\n                        });\n                        return;\n                    case 'connected':\n                        transport._setSession(message.session, message.options.session_timeout);\n                        transport.emit('connected', message);\n                        transport.preempt('connected');\n                        return;\n                    case 'synced':\n                    case 'update':\n                        transport._updatesReceived.push(message);\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            case 'syncing':\n                switch (message.type) {\n                    case 'connected':\n                    case 'update':\n                        transport._updatesReceived.push(message);\n                        return;\n                    case 'synced':\n                        transport._clearReconnectTimer();\n                        transport.emit('message', message);\n                        transport.preempt('connected');\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            default:\n                // Impossible\n                return;\n        }\n    }\n    transport.on('stateChanged', function stateChanged(state) {\n        switch (state) {\n            case 'connected': {\n                var updates = transport._updatesToSend.splice(0);\n                if (updates.length) {\n                    transport.publish(reduceUpdates(updates));\n                }\n                transport._updatesReceived.splice(0).forEach(function (update) { return transport.emit('message', update); });\n                return;\n            }\n            case 'disconnected':\n                transport._twilioConnection.removeListener('message', handleMessage);\n                transport.removeListener('stateChanged', stateChanged);\n                return;\n            case 'syncing':\n                // Do nothing.\n                return;\n            default:\n                // Impossible\n                return;\n        }\n    });\n    var _options = transport._options, _iceServersStatus = transport._iceServersStatus;\n    var iceServers = _options.iceServers, onIced = _options.onIced;\n    if (_iceServersStatus === 'overrode') {\n        onIced(iceServers).then(createOrResetTwilioConnection);\n    }\n    else {\n        createOrResetTwilioConnection();\n    }\n}\nmodule.exports = TwilioConnectionTransport;\n//# sourceMappingURL=twilioconnectiontransport.js.map","import { DateComponent, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, createFormatter, BaseComponent, StandardEvent, buildSegTimeText, EventContainer, getSegAnchorAttrs, memoize, MoreLinkContainer, getSegMeta, getUniqueDomId, setRef, DayCellContainer, WeekNumberContainer, buildNavLinkAttrs, hasCustomDayCellContent, addMs, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, formatIsoMonthStr, formatDayString, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nclass TableView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.headerElRef = createRef();\n    }\n    renderSimpleLayout(headerRowContent, bodyContent) {\n        let { props, context } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunk: { content: bodyContent },\n        });\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { props, context } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunks: [{\n                        key: 'main.79caed11',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    }],\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunks: [{\n                    key: 'main.79caed11',\n                    content: bodyContent,\n                }],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [{\n                        key: 'main.79caed11',\n                        content: renderScrollShim,\n                    }],\n            });\n        }\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));\n    }\n}\n\nfunction splitSegsByRow(segs, rowCnt) {\n    let byRow = [];\n    for (let i = 0; i < rowCnt; i += 1) {\n        byRow[i] = [];\n    }\n    for (let seg of segs) {\n        byRow[seg.row].push(seg);\n    }\n    return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n    let byCol = [];\n    for (let i = 0; i < colCnt; i += 1) {\n        byCol[i] = [];\n    }\n    for (let seg of segs) {\n        byCol[seg.firstCol].push(seg);\n    }\n    return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.row].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nconst DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n    let { display } = seg.eventRange.ui;\n    return display === 'list-item' || (display === 'auto' &&\n        !seg.eventRange.def.allDay &&\n        seg.firstCol === seg.lastCol && // can't be multi-day\n        seg.isStart && // \"\n        seg.isEnd // \"\n    );\n}\n\nclass TableBlockEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n    }\n}\n\nclass TableListItemEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n        let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props, { elTag: \"a\", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: getSegAnchorAttrs(props.seg, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));\n    }\n}\nfunction renderInnerContent(renderProps) {\n    return (createElement(Fragment, null,\n        createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: renderProps.borderColor || renderProps.backgroundColor } }),\n        renderProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, renderProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title\" }, renderProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\n\nclass TableCellMoreLink extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.compileSegs = memoize(compileSegs);\n    }\n    render() {\n        let { props } = this;\n        let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements);\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-daygrid-more-link'], dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => {\n                let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n                    (props.eventResize ? props.eventResize.affectedInstances : null) ||\n                    {};\n                return (createElement(Fragment, null, allSegs.map((seg) => {\n                    let instanceId = seg.eventRange.instance.instanceId;\n                    return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n                            visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n                        } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n                })));\n            } }));\n    }\n}\nfunction compileSegs(singlePlacements) {\n    let allSegs = [];\n    let invisibleSegs = [];\n    for (let placement of singlePlacements) {\n        allSegs.push(placement.seg);\n        if (!placement.isVisible) {\n            invisibleSegs.push(placement.seg);\n        }\n    }\n    return { allSegs, invisibleSegs };\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nclass TableCell extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.state = {\n            dayNumberId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            setRef(this.rootElRef, el);\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { context, props, state, rootElRef } = this;\n        let { options, dateEnv } = context;\n        let { date, dateProfile } = props;\n        // TODO: memoize this?\n        const isMonthStart = props.showDayNumber &&\n            shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: this.handleRootEl, elClasses: [\n                'fc-daygrid-day',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (createElement(\"div\", { ref: props.innerElRef, className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", style: { minHeight: props.minHeight } },\n            props.showWeekNumber && (createElement(WeekNumberContainer, { elTag: \"a\", elClasses: ['fc-daygrid-week-number'], elAttrs: buildNavLinkAttrs(context, date, 'week'), date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),\n            !renderProps.isDisabled &&\n                (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? (createElement(\"div\", { className: \"fc-daygrid-day-top\" },\n                createElement(InnerContent, { elTag: \"a\", elClasses: [\n                        'fc-daygrid-day-number',\n                        isMonthStart && 'fc-daygrid-month-start',\n                    ], elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))) : props.showDayNumber ? (\n            // for creating correct amount of space (see issue #7162)\n            createElement(\"div\", { className: \"fc-daygrid-day-top\", style: { visibility: 'hidden' } },\n                createElement(\"a\", { className: \"fc-daygrid-day-number\" }, \"\\u00A0\"))) : undefined,\n            createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n                props.fgContent,\n                createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n                    createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n            createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))));\n    }\n}\nfunction renderTopInner(props) {\n    return props.dayNumberText || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction shouldDisplayMonthStart(date, currentRange, dateEnv) {\n    const { start: currentStart, end: currentEnd } = currentRange;\n    const currentEndIncl = addMs(currentEnd, -1);\n    const currentFirstYear = dateEnv.getYear(currentStart);\n    const currentFirstMonth = dateEnv.getMonth(currentStart);\n    const currentLastYear = dateEnv.getYear(currentEndIncl);\n    const currentLastMonth = dateEnv.getMonth(currentEndIncl);\n    // spans more than one month?\n    return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) &&\n        Boolean(\n        // first date in current view?\n        date.valueOf() === currentStart.valueOf() ||\n            // a month-start that's within the current range?\n            (dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()));\n}\n\nfunction generateSegKey(seg) {\n    return seg.eventRange.instance.instanceId + ':' + seg.firstCol;\n}\nfunction generateSegUid(seg) {\n    return generateSegKey(seg) + ':' + seg.lastCol;\n}\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {\n    let hierarchy = new DayGridSegHierarchy((segEntry) => {\n        // TODO: more DRY with generateSegUid\n        let segUid = segs[segEntry.index].eventRange.instance.instanceId +\n            ':' + segEntry.span.start +\n            ':' + (segEntry.span.end - 1);\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return segHeights[segUid] || 1;\n    });\n    hierarchy.allowReslicing = true;\n    hierarchy.strictOrder = strictOrder;\n    if (dayMaxEvents === true || dayMaxEventRows === true) {\n        hierarchy.maxCoord = maxContentHeight;\n        hierarchy.hiddenConsumes = true;\n    }\n    else if (typeof dayMaxEvents === 'number') {\n        hierarchy.maxStackCnt = dayMaxEvents;\n    }\n    else if (typeof dayMaxEventRows === 'number') {\n        hierarchy.maxStackCnt = dayMaxEventRows;\n        hierarchy.hiddenConsumes = true;\n    }\n    // create segInputs only for segs with known heights\n    let segInputs = [];\n    let unknownHeightSegs = [];\n    for (let i = 0; i < segs.length; i += 1) {\n        let seg = segs[i];\n        let segUid = generateSegUid(seg);\n        let eventHeight = segHeights[segUid];\n        if (eventHeight != null) {\n            segInputs.push({\n                index: i,\n                span: {\n                    start: seg.firstCol,\n                    end: seg.lastCol + 1,\n                },\n            });\n        }\n        else {\n            unknownHeightSegs.push(seg);\n        }\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let segRects = hierarchy.toRects();\n    let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells);\n    let moreCnts = [];\n    let moreMarginTops = [];\n    // add segs with unknown heights\n    for (let seg of unknownHeightSegs) {\n        multiColPlacements[seg.firstCol].push({\n            seg,\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // add the hidden entries\n    for (let col = 0; col < cells.length; col += 1) {\n        moreCnts.push(0);\n    }\n    for (let hiddenEntry of hiddenEntries) {\n        let seg = segs[hiddenEntry.index];\n        let hiddenSpan = hiddenEntry.span;\n        multiColPlacements[hiddenSpan.start].push({\n            seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n            moreCnts[col] += 1;\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // deal with leftover margins\n    for (let col = 0; col < cells.length; col += 1) {\n        moreMarginTops.push(leftoverMargins[col]);\n    }\n    return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n    let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n    let singleColPlacements = [];\n    let multiColPlacements = [];\n    let leftoverMargins = [];\n    for (let col = 0; col < cells.length; col += 1) {\n        let rects = rectsByEachCol[col];\n        // compute all static segs in singlePlacements\n        let singlePlacements = [];\n        let currentHeight = 0;\n        let currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            singlePlacements.push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: true,\n                isAbsolute: false,\n                absoluteTop: rect.levelCoord,\n                marginTop: rect.levelCoord - currentHeight,\n            });\n            currentHeight = rect.levelCoord + rect.thickness;\n        }\n        // compute mixed static/absolute segs in multiPlacements\n        let multiPlacements = [];\n        currentHeight = 0;\n        currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n            let isFirstCol = rect.span.start === col;\n            currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n            currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n            if (isAbsolute) {\n                currentMarginTop += rect.thickness;\n                if (isFirstCol) {\n                    multiPlacements.push({\n                        seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                        isVisible: true,\n                        isAbsolute: true,\n                        absoluteTop: rect.levelCoord,\n                        marginTop: 0,\n                    });\n                }\n            }\n            else if (isFirstCol) {\n                multiPlacements.push({\n                    seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                    isVisible: true,\n                    isAbsolute: false,\n                    absoluteTop: rect.levelCoord,\n                    marginTop: currentMarginTop, // claim the margin\n                });\n                currentMarginTop = 0;\n            }\n        }\n        singleColPlacements.push(singlePlacements);\n        multiColPlacements.push(multiPlacements);\n        leftoverMargins.push(currentMarginTop);\n    }\n    return { singleColPlacements, multiColPlacements, leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n    let rectsByEachCol = [];\n    for (let col = 0; col < colCnt; col += 1) {\n        rectsByEachCol.push([]);\n    }\n    for (let rect of rects) {\n        for (let col = rect.span.start; col < rect.span.end; col += 1) {\n            rectsByEachCol[col].push(rect);\n        }\n    }\n    return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n    if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n        return seg;\n    }\n    let eventRange = seg.eventRange;\n    let origRange = eventRange.range;\n    let slicedRange = intersectRanges(origRange, {\n        start: cells[spanStart].date,\n        end: addDays(cells[spanEnd - 1].date, 1),\n    });\n    return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n            def: eventRange.def,\n            ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }),\n            instance: eventRange.instance,\n            range: slicedRange,\n        }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nclass DayGridSegHierarchy extends SegHierarchy {\n    constructor() {\n        super(...arguments);\n        // config\n        this.hiddenConsumes = false;\n        // allows us to keep hidden entries in the hierarchy so they take up space\n        this.forceHidden = {};\n    }\n    addSegs(segInputs) {\n        const hiddenSegs = super.addSegs(segInputs);\n        const { entriesByLevel } = this;\n        const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)];\n        // remove the forced-hidden segs\n        for (let level = 0; level < entriesByLevel.length; level += 1) {\n            entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n        }\n        return hiddenSegs;\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        const { entriesByLevel, forceHidden } = this;\n        const { touchingEntry, touchingLevel, touchingLateral } = insertion;\n        // the entry that the new insertion is touching must be hidden\n        if (this.hiddenConsumes && touchingEntry) {\n            const touchingEntryId = buildEntryKey(touchingEntry);\n            if (!forceHidden[touchingEntryId]) {\n                if (this.allowReslicing) {\n                    // split up the touchingEntry, reinsert it\n                    const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n                    // reinsert the area that turned into a \"more\" link (so no other entries try to\n                    // occupy the space) but mark it forced-hidden\n                    const hiddenEntryId = buildEntryKey(hiddenEntry);\n                    forceHidden[hiddenEntryId] = true;\n                    entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;\n                    hiddenEntries.push(hiddenEntry);\n                    this.splitEntry(touchingEntry, entry, hiddenEntries);\n                }\n                else {\n                    forceHidden[touchingEntryId] = true;\n                    hiddenEntries.push(touchingEntry);\n                }\n            }\n        }\n        // will try to reslice...\n        super.handleInvalidInsertion(insertion, entry, hiddenEntries);\n    }\n}\n\nclass TableRow extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.cellElRefs = new RefMap(); // the <td>\n        this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n        this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n        this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n        this.rootElRef = createRef();\n        this.state = {\n            framePositions: null,\n            maxContentHeight: null,\n            segHeights: {},\n        };\n        this.handleResize = (isForced) => {\n            if (isForced) {\n                this.updateSizing(true); // isExternal=true\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let colCnt = props.cells.length;\n        let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n        let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n        let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n        let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n        let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells);\n        let isForcedInvisible = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        return (createElement(\"tr\", { ref: this.rootElRef, role: \"row\" },\n            props.renderIntro && props.renderIntro(),\n            props.cells.map((cell, col) => {\n                let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n                let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n                return (createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        createElement(Fragment, null, normalFgNodes),\n                        createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n                        this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n                        this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))), minHeight: props.cellMinHeight }));\n            })));\n    }\n    componentDidMount() {\n        this.updateSizing(true);\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        let currentProps = this.props;\n        this.updateSizing(!isPropsEqual(prevProps, currentProps));\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    getHighlightSegs() {\n        let { props } = this;\n        if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n            return props.eventDrag.segs;\n        }\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return props.dateSelectionSegs;\n    }\n    getMirrorSegs() {\n        let { props } = this;\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return [];\n    }\n    renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n        let { context } = this;\n        let { eventSelection } = this.props;\n        let { framePositions } = this.state;\n        let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let nodes = [];\n        if (framePositions) {\n            for (let placement of segPlacements) {\n                let { seg } = placement;\n                let { instanceId } = seg.eventRange.instance;\n                let isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n                let isAbsolute = placement.isAbsolute;\n                let left = '';\n                let right = '';\n                if (isAbsolute) {\n                    if (context.isRtl) {\n                        right = 0;\n                        left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n                    }\n                    else {\n                        left = 0;\n                        right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n                    }\n                }\n                /*\n                known bug: events that are force to be list-item but span multiple days still take up space in later columns\n                todo: in print view, for multi-day events, don't display title within non-start/end segs\n                */\n                nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: generateSegKey(seg), ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)), style: {\n                        visibility: isVisible ? '' : 'hidden',\n                        marginTop: isAbsolute ? '' : placement.marginTop,\n                        top: isAbsolute ? placement.absoluteTop : '',\n                        left,\n                        right,\n                    } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n            }\n        }\n        return nodes;\n    }\n    renderFillSegs(segs, fillType) {\n        let { isRtl } = this.context;\n        let { todayRange } = this.props;\n        let { framePositions } = this.state;\n        let nodes = [];\n        if (framePositions) {\n            for (let seg of segs) {\n                let leftRightCss = isRtl ? {\n                    right: 0,\n                    left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n                } : {\n                    left: 0,\n                    right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n                };\n                nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n                    createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n                    renderFill(fillType)));\n            }\n        }\n        return createElement(Fragment, {}, ...nodes);\n    }\n    updateSizing(isExternalSizingChange) {\n        let { props, state, frameElRefs } = this;\n        if (!props.forPrint &&\n            props.clientWidth !== null // positioning ready?\n        ) {\n            if (isExternalSizingChange) {\n                let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]);\n                if (frameEls.length) {\n                    let originEl = this.rootElRef.current;\n                    let newPositionCache = new PositionCache(originEl, frameEls, true, // isHorizontal\n                    false);\n                    if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {\n                        this.setState({\n                            framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n                            false),\n                        });\n                    }\n                }\n            }\n            const oldSegHeights = this.state.segHeights;\n            const newSegHeights = this.querySegHeights();\n            const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n            this.safeSetState({\n                // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n                // Essentially, once you compute an element's height, never null-out.\n                // TODO: always display all events, as visibility:hidden?\n                segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),\n                maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n            });\n        }\n    }\n    querySegHeights() {\n        let segElMap = this.segHarnessRefs.currentMap;\n        let segHeights = {};\n        // get the max height amongst instance segs\n        for (let segUid in segElMap) {\n            let height = Math.round(segElMap[segUid].getBoundingClientRect().height);\n            segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);\n        }\n        return segHeights;\n    }\n    computeMaxContentHeight() {\n        let firstKey = this.props.cells[0].key;\n        let cellEl = this.cellElRefs.currentMap[firstKey];\n        let fcContainerEl = this.fgElRefs.currentMap[firstKey];\n        return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n    }\n    getCellEls() {\n        let elMap = this.cellElRefs.currentMap;\n        return this.props.cells.map((cell) => elMap[cell.key]);\n    }\n}\nTableRow.addStateEquality({\n    segHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n    if (!mirrorSegs.length) {\n        return [];\n    }\n    let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n    return mirrorSegs.map((seg) => ({\n        seg,\n        isVisible: true,\n        isAbsolute: true,\n        absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n        marginTop: 0,\n    }));\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n    let topsByInstanceId = {};\n    for (let placements of colPlacements) {\n        for (let placement of placements) {\n            topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n        }\n    }\n    return topsByInstanceId;\n}\n\nclass TableRows extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.splitBusinessHourSegs = memoize(splitSegsByRow);\n        this.splitBgEventSegs = memoize(splitAllDaySegsByRow);\n        this.splitFgEventSegs = memoize(splitSegsByRow);\n        this.splitDateSelectionSegs = memoize(splitSegsByRow);\n        this.splitEventDrag = memoize(splitInteractionByRow);\n        this.splitEventResize = memoize(splitInteractionByRow);\n        this.rowRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let rowCnt = props.cells.length;\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n        // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished\n        // choose 7 because a month view will have max 6 rows\n        let cellMinHeight = (rowCnt >= 7 && props.clientWidth) ?\n            props.clientWidth / context.options.aspectRatio / 6 :\n            null;\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(Fragment, null, props.cells.map((cells, row) => (createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length\n                ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n                : row // in case there are no cells (like when resource view is loading)\n            , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row], fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));\n    }\n    componentDidMount() {\n        this.registerInteractiveComponent();\n    }\n    componentDidUpdate() {\n        // for if started with zero cells\n        this.registerInteractiveComponent();\n    }\n    registerInteractiveComponent() {\n        if (!this.rootEl) {\n            // HACK: need a daygrid wrapper parent to do positioning\n            // NOTE: a daygrid resource view w/o resources can have zero cells\n            const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];\n            const rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;\n            if (rootEl) {\n                this.rootEl = rootEl;\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n        }\n    }\n    componentWillUnmount() {\n        if (this.rootEl) {\n            this.context.unregisterInteractiveComponent(this);\n            this.rootEl = null;\n        }\n    }\n    // Hit System\n    // ----------------------------------------------------------------------------------------------------\n    prepareHits() {\n        this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n        false, true);\n        this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n        true, // horizontal\n        false);\n    }\n    queryHit(positionLeft, positionTop) {\n        let { colPositions, rowPositions } = this;\n        let col = colPositions.leftToIndex(positionLeft);\n        let row = rowPositions.topToIndex(positionTop);\n        if (row != null && col != null) {\n            let cell = this.props.cells[row][col];\n            return {\n                dateProfile: this.props.dateProfile,\n                dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n                dayEl: this.getCellEl(row, col),\n                rect: {\n                    left: colPositions.lefts[col],\n                    right: colPositions.rights[col],\n                    top: rowPositions.tops[row],\n                    bottom: rowPositions.bottoms[row],\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n    getCellEl(row, col) {\n        return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n    }\n    getCellRange(row, col) {\n        let start = this.props.cells[row][col].date;\n        let end = addDays(start, 1);\n        return { start, end };\n    }\n}\nfunction splitAllDaySegsByRow(segs, rowCnt) {\n    return splitSegsByRow(segs.filter(isSegAllDay), rowCnt);\n}\nfunction isSegAllDay(seg) {\n    return seg.eventRange.def.allDay;\n}\n\nclass Table extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.needsScrollReset = false;\n    }\n    render() {\n        let { props } = this;\n        let { dayMaxEventRows, dayMaxEvents, expandRows } = props;\n        let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n        // if rows can't expand to fill fixed height, can't do balanced-height event limit\n        // TODO: best place to normalize these options?\n        if (limitViaBalanced && !expandRows) {\n            limitViaBalanced = false;\n            dayMaxEventRows = null;\n            dayMaxEvents = null;\n        }\n        let classNames = [\n            'fc-daygrid-body',\n            limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n            expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n        ];\n        return (createElement(\"div\", { ref: this.elRef, className: classNames.join(' '), style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(\"table\", { role: \"presentation\", className: \"fc-scrollgrid-sync-table\", style: {\n                    width: props.clientWidth,\n                    minWidth: props.tableMinWidth,\n                    height: expandRows ? props.clientHeight : '',\n                } },\n                props.colGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })))));\n    }\n    componentDidMount() {\n        this.requestScrollReset();\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.dateProfile !== this.props.dateProfile) {\n            this.requestScrollReset();\n        }\n        else {\n            this.flushScrollReset();\n        }\n    }\n    requestScrollReset() {\n        this.needsScrollReset = true;\n        this.flushScrollReset();\n    }\n    flushScrollReset() {\n        if (this.needsScrollReset &&\n            this.props.clientWidth // sizes computed?\n        ) {\n            const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);\n            if (subjectEl) {\n                const originEl = subjectEl.closest('.fc-daygrid-body');\n                const scrollEl = originEl.closest('.fc-scroller');\n                const scrollTop = subjectEl.getBoundingClientRect().top -\n                    originEl.getBoundingClientRect().top;\n                scrollEl.scrollTop = scrollTop ? (scrollTop + 1) : 0; // overcome border\n            }\n            this.needsScrollReset = false;\n        }\n    }\n}\nfunction getScrollSubjectEl(containerEl, dateProfile) {\n    let el;\n    if (dateProfile.currentRangeUnit.match(/year|month/)) {\n        el = containerEl.querySelector(`[data-date=\"${formatIsoMonthStr(dateProfile.currentDate)}-01\"]`);\n        // even if view is month-based, first-of-month might be hidden...\n    }\n    if (!el) {\n        el = containerEl.querySelector(`[data-date=\"${formatDayString(dateProfile.currentDate)}\"]`);\n        // could still be hidden if an interior-view hidden day\n    }\n    return el;\n}\n\nclass DayTableSlicer extends Slicer {\n    constructor() {\n        super(...arguments);\n        this.forceDayIfListItem = true;\n    }\n    sliceRange(dateRange, dayTableModel) {\n        return dayTableModel.sliceRange(dateRange);\n    }\n}\n\nclass DayTable extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.slicer = new DayTableSlicer();\n        this.tableRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n    }\n}\n\nclass DayTableView extends TableView {\n    constructor() {\n        super(...arguments);\n        this.buildDayTableModel = memoize(buildDayTableModel);\n        this.headerRef = createRef();\n        this.tableRef = createRef();\n        // can't override any lifecycle methods from parent\n    }\n    render() {\n        let { options, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n        let bodyContent = (contentArg) => (createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }));\n        return options.dayMinWidth\n            ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n            : this.renderSimpleLayout(headerContent, bodyContent);\n    }\n}\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nclass TableDateProfileGenerator extends DateProfileGenerator {\n    // Computes the date range that will be rendered\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);\n        let { props } = this;\n        return buildDayTableRenderRange({\n            currentRange: renderRange,\n            snapToWeek: /^(year|month)$/.test(currentRangeUnit),\n            fixedWeekCount: props.fixedWeekCount,\n            dateEnv: props.dateEnv,\n        });\n    }\n}\nfunction buildDayTableRenderRange(props) {\n    let { dateEnv, currentRange } = props;\n    let { start, end } = currentRange;\n    let endOfWeek;\n    // year and month views should be aligned with weeks. this is already done for week\n    if (props.snapToWeek) {\n        start = dateEnv.startOfWeek(start);\n        // make end-of-week if not already\n        endOfWeek = dateEnv.startOfWeek(end);\n        if (endOfWeek.valueOf() !== end.valueOf()) {\n            end = addWeeks(endOfWeek, 1);\n        }\n    }\n    // ensure 6 weeks\n    if (props.fixedWeekCount) {\n        // TODO: instead of these date-math gymnastics (for multimonth view),\n        // compute dateprofiles of all months, then use start of first and end of last.\n        let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));\n        let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n        diffWeeks(lastMonthRenderStart, end));\n        end = addWeeks(end, 6 - rowCnt);\n    }\n    return { start, end };\n}\n\nvar css_248z = \":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableView, buildDayTableModel, buildDayTableRenderRange };\n","'use strict';\n\n// MODULES //\n\nvar gcd = require( 'compute-gcd' ),\n\tisArray = require( 'validate.io-array' ),\n\tisIntegerArray = require( 'validate.io-integer-array' ),\n\tisFunction = require( 'validate.io-function' );\n\n\n// LEAST COMMON MULTIPLE //\n\n/**\n* FUNCTION: lcm( arr[, clbk] )\n*\tComputes the least common multiple (lcm).\n*\n* @param {Number[]|Number} arr - input array of integers\n* @param {Function|Number} [accessor] - accessor function for accessing array values\n* @returns {Number|Null} least common multiple or null\n*/\nfunction lcm() {\n\tvar nargs = arguments.length,\n\t\targs,\n\t\tclbk,\n\t\tarr,\n\t\tlen,\n\t\ta, b,\n\t\ti;\n\n\t// Copy the input arguments to an array...\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\t// Have we been provided with integer arguments?\n\tif ( isIntegerArray( args ) ) {\n\t\tif ( nargs === 2 ) {\n\t\t\ta = args[ 0 ];\n\t\t\tb = args[ 1 ];\n\t\t\tif ( a < 0 ) {\n\t\t\t\ta = -a;\n\t\t\t}\n\t\t\tif ( b < 0 ) {\n\t\t\t\tb = -b;\n\t\t\t}\n\t\t\tif ( a === 0 || b === 0 ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn ( a/gcd(a,b) ) * b;\n\t\t}\n\t\tarr = args;\n\t}\n\t// If not integers, ensure that the first argument is an array...\n\telse if ( !isArray( args[ 0 ] ) ) {\n\t\tthrow new TypeError( 'lcm()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );\n\t}\n\t// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...\n\telse if ( nargs > 1 ) {\n\t\tarr = args[ 0 ];\n\t\tclbk = args[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( 'lcm()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );\n\t\t}\n\t}\n\t// We have been provided an array...\n\telse {\n\t\tarr = args[ 0 ];\n\t}\n\tlen = arr.length;\n\n\t// Check if a sufficient number of values have been provided...\n\tif ( len < 2 ) {\n\t\treturn null;\n\t}\n\t// If an accessor is provided, extract the array values...\n\tif ( clbk ) {\n\t\ta = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\ta[ i ] = clbk( arr[ i ], i );\n\t\t}\n\t\tarr = a;\n\t}\n\t// Given an input array, ensure all array values are integers...\n\tif ( nargs < 3 ) {\n\t\tif ( !isIntegerArray( arr ) ) {\n\t\t\tthrow new TypeError( 'lcm()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );\n\t\t}\n\t}\n\t// Convert any negative integers to positive integers...\n\tfor ( i = 0; i < len; i++ ) {\n\t\ta = arr[ i ];\n\t\tif ( a < 0 ) {\n\t\t\tarr[ i ] = -a;\n\t\t}\n\t}\n\t// Exploit the fact that the lcm is an associative function...\n\ta = arr[ 0 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tb = arr[ i ];\n\t\tif ( a === 0 || b === 0 ) {\n\t\t\treturn 0;\n\t\t}\n\t\ta = ( a/gcd(a,b) ) * b;\n\t}\n\treturn a;\n} // end FUNCTION lcm()\n\n\n// EXPORTS //\n\nmodule.exports = lcm;\n","require('./dist/ng-file-upload-all');\nmodule.exports = 'ngFileUpload';","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar TrackPrioritySignaling = /** @class */ (function (_super) {\n    __extends(TrackPrioritySignaling, _super);\n    /**\n     * Construct a {@link TrackPrioritySignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     */\n    function TrackPrioritySignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'track_priority', options) || this;\n        Object.defineProperties(_this, {\n            _enqueuedPriorityUpdates: {\n                value: new Map()\n            },\n        });\n        _this.on('ready', function (transport) {\n            Array.from(_this._enqueuedPriorityUpdates.keys()).forEach(function (trackSid) {\n                transport.publish({\n                    type: 'track_priority',\n                    track: trackSid,\n                    subscribe: _this._enqueuedPriorityUpdates.get(trackSid)\n                });\n                // NOTE(mpatwardhan)- we do not clear _enqueuedPriorityUpdates intentionally,\n                // this cache will is used to re-send the priorities in case of VMS-FailOver.\n            });\n        });\n        return _this;\n    }\n    /**\n     * @param {Track.SID} trackSid\n     * @param {'publish'|'subscribe'} publishOrSubscribe\n     * @param {Track.Priority} priority\n     */\n    TrackPrioritySignaling.prototype.sendTrackPriorityUpdate = function (trackSid, publishOrSubscribe, priority) {\n        if (publishOrSubscribe !== 'subscribe') {\n            throw new Error('only subscribe priorities are supported, found: ' + publishOrSubscribe);\n        }\n        this._enqueuedPriorityUpdates.set(trackSid, priority);\n        if (this._transport) {\n            this._transport.publish({\n                type: 'track_priority',\n                track: trackSid,\n                subscribe: priority\n            });\n        }\n    };\n    return TrackPrioritySignaling;\n}(MediaSignaling));\nmodule.exports = TrackPrioritySignaling;\n//# sourceMappingURL=trackprioritysignaling.js.map","var error = require('./utils/error');\nvar utils = require('./utils/common');\n\nvar d1900 = new Date(Date.UTC(1900, 0, 1));\nvar WEEK_STARTS = [\n  undefined,\n  0,\n  1,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  undefined,\n  1,\n  2,\n  3,\n  4,\n  5,\n  6,\n  0\n];\nvar WEEK_TYPES = [\n  [],\n  [1, 2, 3, 4, 5, 6, 7],\n  [7, 1, 2, 3, 4, 5, 6],\n  [6, 0, 1, 2, 3, 4, 5],\n  [],\n  [],\n  [],\n  [],\n  [],\n  [],\n  [],\n  [7, 1, 2, 3, 4, 5, 6],\n  [6, 7, 1, 2, 3, 4, 5],\n  [5, 6, 7, 1, 2, 3, 4],\n  [4, 5, 6, 7, 1, 2, 3],\n  [3, 4, 5, 6, 7, 1, 2],\n  [2, 3, 4, 5, 6, 7, 1],\n  [1, 2, 3, 4, 5, 6, 7]\n];\nvar WEEKEND_TYPES = [\n  [],\n  [6, 0],\n  [0, 1],\n  [1, 2],\n  [2, 3],\n  [3, 4],\n  [4, 5],\n  [5, 6],\n  undefined,\n  undefined,\n  undefined, [0, 0],\n  [1, 1],\n  [2, 2],\n  [3, 3],\n  [4, 4],\n  [5, 5],\n  [6, 6]\n];\n\nexports.DATE = function(year, month, day) {\n  var result;\n\n  year = utils.parseNumber(year);\n  month = utils.parseNumber(month);\n  day = utils.parseNumber(day);\n\n  if (utils.anyIsError(year, month, day)) {\n    result = error.value;\n\n  } else if (year < 0 || month < 0 || day < 0) {\n    result = error.num;\n\n  } else {\n    result = new Date(year, month - 1, day);\n  }\n\n  return result;\n};\n\nexports.DATEVALUE = function(date_text) {\n  var modifier = 2;\n  var date;\n\n  if (typeof date_text !== 'string') {\n    return error.value;\n  }\n\n  date = Date.parse(date_text);\n\n  if (isNaN(date)) {\n    return error.value;\n  }\n\n  if (date <= -2203891200000) {\n    modifier = 1;\n  }\n\n  return Math.ceil((date - d1900) / 86400000) + modifier;\n};\n\nexports.DAY = function(serial_number) {\n  var date = utils.parseDate(serial_number);\n  if (date instanceof Error) {\n    return date;\n  }\n\n  return date.getDate();\n};\n\nexports.DAYS = function(end_date, start_date) {\n  end_date = utils.parseDate(end_date);\n  start_date = utils.parseDate(start_date);\n\n  if (end_date instanceof Error) {\n    return end_date;\n  }\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n\n  return serial(end_date) - serial(start_date);\n};\n\nexports.DAYS360 = function(start_date, end_date, method) {\n  method = utils.parseBool(method);\n  start_date = utils.parseDate(start_date);\n  end_date = utils.parseDate(end_date);\n\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  if (end_date instanceof Error) {\n    return end_date;\n  }\n  if (method instanceof Error) {\n    return method;\n  }\n  var sm = start_date.getMonth();\n  var em = end_date.getMonth();\n  var sd, ed;\n\n  if (method) {\n    sd = start_date.getDate() === 31 ? 30 : start_date.getDate();\n    ed = end_date.getDate() === 31 ? 30 : end_date.getDate();\n  } else {\n    var smd = new Date(start_date.getFullYear(), sm + 1, 0).getDate();\n    var emd = new Date(end_date.getFullYear(), em + 1, 0).getDate();\n    sd = start_date.getDate() === smd ? 30 : start_date.getDate();\n    if (end_date.getDate() === emd) {\n      if (sd < 30) {\n        em++;\n        ed = 1;\n      } else {\n        ed = 30;\n      }\n    } else {\n      ed = end_date.getDate();\n    }\n  }\n\n  return 360 * (end_date.getFullYear() - start_date.getFullYear()) +\n    30 * (em - sm) + (ed - sd);\n};\n\nexports.EDATE = function(start_date, months) {\n  start_date = utils.parseDate(start_date);\n\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  if (isNaN(months)) {\n    return error.value;\n  }\n  months = parseInt(months, 10);\n  start_date.setMonth(start_date.getMonth() + months);\n\n  return serial(start_date);\n};\n\nexports.EOMONTH = function(start_date, months) {\n  start_date = utils.parseDate(start_date);\n\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  if (isNaN(months)) {\n    return error.value;\n  }\n  months = parseInt(months, 10);\n\n  return serial(new Date(start_date.getFullYear(), start_date.getMonth() + months + 1, 0));\n};\n\nexports.HOUR = function(serial_number) {\n  serial_number = utils.parseDate(serial_number);\n\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n\n  return serial_number.getHours();\n};\n\nexports.INTERVAL = function (second) {\n  if (typeof second !== 'number' && typeof second !== 'string') {\n    return error.value;\n  } else {\n    second = parseInt(second, 10);\n  }\n\n  var year  = Math.floor(second/946080000);\n  second    = second%946080000;\n  var month = Math.floor(second/2592000);\n  second    = second%2592000;\n  var day   = Math.floor(second/86400);\n  second    = second%86400;\n\n  var hour  = Math.floor(second/3600);\n  second    = second%3600;\n  var min   = Math.floor(second/60);\n  second    = second%60;\n  var sec   = second;\n\n  year  = (year  > 0) ? year  + 'Y' : '';\n  month = (month > 0) ? month + 'M' : '';\n  day   = (day   > 0) ? day   + 'D' : '';\n  hour  = (hour  > 0) ? hour  + 'H' : '';\n  min   = (min   > 0) ? min   + 'M' : '';\n  sec   = (sec   > 0) ? sec   + 'S' : '';\n\n  return 'P' + year + month + day + 'T' + hour + min + sec;\n};\n\nexports.ISOWEEKNUM = function(date) {\n  date = utils.parseDate(date);\n\n  if (date instanceof Error) {\n    return date;\n  }\n\n  date.setHours(0, 0, 0);\n  date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n  var yearStart = new Date(date.getFullYear(), 0, 1);\n\n  return Math.ceil((((date - yearStart) / 86400000) + 1) / 7);\n};\n\nexports.MINUTE = function(serial_number) {\n  serial_number = utils.parseDate(serial_number);\n\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n\n  return serial_number.getMinutes();\n};\n\nexports.MONTH = function(serial_number) {\n  serial_number = utils.parseDate(serial_number);\n\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n\n  return serial_number.getMonth() + 1;\n};\n\nexports.NETWORKDAYS = function(start_date, end_date, holidays) {\n  return this.NETWORKDAYS.INTL(start_date, end_date, 1, holidays);\n};\n\nexports.NETWORKDAYS.INTL = function(start_date, end_date, weekend, holidays) {\n  start_date = utils.parseDate(start_date);\n\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  end_date = utils.parseDate(end_date);\n\n  if (end_date instanceof Error) {\n    return end_date;\n  }\n  if (weekend === undefined) {\n    weekend = WEEKEND_TYPES[1];\n  } else {\n    weekend = WEEKEND_TYPES[weekend];\n  }\n  if (!(weekend instanceof Array)) {\n    return error.value;\n  }\n  if (holidays === undefined) {\n    holidays = [];\n  } else if (!(holidays instanceof Array)) {\n    holidays = [holidays];\n  }\n\n  for (var i = 0; i < holidays.length; i++) {\n    var h = utils.parseDate(holidays[i]);\n    if (h instanceof Error) {\n      return h;\n    }\n    holidays[i] = h;\n  }\n  var days = (end_date - start_date) / (1000 * 60 * 60 * 24) + 1;\n  var total = days;\n  var day = start_date;\n  for (i = 0; i < days; i++) {\n    var d = (new Date().getTimezoneOffset() > 0) ? day.getUTCDay() : day.getDay();\n    var dec = false;\n    if (d === weekend[0] || d === weekend[1]) {\n      dec = true;\n    }\n    for (var j = 0; j < holidays.length; j++) {\n      var holiday = holidays[j];\n      if (holiday.getDate() === day.getDate() &&\n        holiday.getMonth() === day.getMonth() &&\n        holiday.getFullYear() === day.getFullYear()) {\n        dec = true;\n        break;\n      }\n    }\n    if (dec) {\n      total--;\n    }\n    day.setDate(day.getDate() + 1);\n  }\n\n  return total;\n};\n\nexports.NOW = function() {\n  return new Date();\n};\n\nexports.SECOND = function(serial_number) {\n  serial_number = utils.parseDate(serial_number);\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n\n  return serial_number.getSeconds();\n};\n\nexports.TIME = function(hour, minute, second) {\n  hour = utils.parseNumber(hour);\n  minute = utils.parseNumber(minute);\n  second = utils.parseNumber(second);\n  if (utils.anyIsError(hour, minute, second)) {\n    return error.value;\n  }\n  if (hour < 0 || minute < 0 || second < 0) {\n    return error.num;\n  }\n\n  return (3600 * hour + 60 * minute + second) / 86400;\n};\n\nexports.TIMEVALUE = function(time_text) {\n  time_text = utils.parseDate(time_text);\n\n  if (time_text instanceof Error) {\n    return time_text;\n  }\n\n  return (3600 * time_text.getHours() + 60 * time_text.getMinutes() + time_text.getSeconds()) / 86400;\n};\n\nexports.TODAY = function() {\n  return new Date();\n};\n\nexports.WEEKDAY = function(serial_number, return_type) {\n  serial_number = utils.parseDate(serial_number);\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n  if (return_type === undefined) {\n    return_type = 1;\n  }\n  var day = serial_number.getDay();\n\n  return WEEK_TYPES[return_type][day];\n};\n\nexports.WEEKNUM = function(serial_number, return_type) {\n  serial_number = utils.parseDate(serial_number);\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n  if (return_type === undefined) {\n    return_type = 1;\n  }\n  if (return_type === 21) {\n    return this.ISOWEEKNUM(serial_number);\n  }\n  var week_start = WEEK_STARTS[return_type];\n  var jan = new Date(serial_number.getFullYear(), 0, 1);\n  var inc = jan.getDay() < week_start ? 1 : 0;\n  jan -= Math.abs(jan.getDay() - week_start) * 24 * 60 * 60 * 1000;\n\n  return Math.floor(((serial_number - jan) / (1000 * 60 * 60 * 24)) / 7 + 1) + inc;\n};\n\nexports.WORKDAY = function(start_date, days, holidays) {\n  return this.WORKDAY.INTL(start_date, days, 1, holidays);\n};\n\nexports.WORKDAY.INTL = function(start_date, days, weekend, holidays) {\n  start_date = utils.parseDate(start_date);\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  days = utils.parseNumber(days);\n  if (days instanceof Error) {\n    return days;\n  }\n  if (days < 0) {\n    return error.num;\n  }\n  if (weekend === undefined) {\n    weekend = WEEKEND_TYPES[1];\n  } else {\n    weekend = WEEKEND_TYPES[weekend];\n  }\n  if (!(weekend instanceof Array)) {\n    return error.value;\n  }\n  if (holidays === undefined) {\n    holidays = [];\n  } else if (!(holidays instanceof Array)) {\n    holidays = [holidays];\n  }\n  for (var i = 0; i < holidays.length; i++) {\n    var h = utils.parseDate(holidays[i]);\n    if (h instanceof Error) {\n      return h;\n    }\n    holidays[i] = h;\n  }\n  var d = 0;\n  while (d < days) {\n    start_date.setDate(start_date.getDate() + 1);\n    var day = start_date.getDay();\n    if (day === weekend[0] || day === weekend[1]) {\n      continue;\n    }\n    for (var j = 0; j < holidays.length; j++) {\n      var holiday = holidays[j];\n      if (holiday.getDate() === start_date.getDate() &&\n        holiday.getMonth() === start_date.getMonth() &&\n        holiday.getFullYear() === start_date.getFullYear()) {\n        d--;\n        break;\n      }\n    }\n    d++;\n  }\n\n  return start_date;\n};\n\nexports.YEAR = function(serial_number) {\n  serial_number = utils.parseDate(serial_number);\n\n  if (serial_number instanceof Error) {\n    return serial_number;\n  }\n\n  return serial_number.getFullYear();\n};\n\nfunction isLeapYear(year) {\n  return new Date(year, 1, 29).getMonth() === 1;\n}\n\n// TODO : Use DAYS ?\nfunction daysBetween(start_date, end_date) {\n  return Math.ceil((end_date - start_date) / 1000 / 60 / 60 / 24);\n}\n\nexports.YEARFRAC = function(start_date, end_date, basis) {\n  start_date = utils.parseDate(start_date);\n  if (start_date instanceof Error) {\n    return start_date;\n  }\n  end_date = utils.parseDate(end_date);\n  if (end_date instanceof Error) {\n    return end_date;\n  }\n\n  basis = basis || 0;\n  var sd = start_date.getDate();\n  var sm = start_date.getMonth() + 1;\n  var sy = start_date.getFullYear();\n  var ed = end_date.getDate();\n  var em = end_date.getMonth() + 1;\n  var ey = end_date.getFullYear();\n\n  switch (basis) {\n    case 0:\n      // US (NASD) 30/360\n      if (sd === 31 && ed === 31) {\n        sd = 30;\n        ed = 30;\n      } else if (sd === 31) {\n        sd = 30;\n      } else if (sd === 30 && ed === 31) {\n        ed = 30;\n      }\n      return ((ed + em * 30 + ey * 360) - (sd + sm * 30 + sy * 360)) / 360;\n    case 1:\n      // Actual/actual\n      var feb29Between = function(date1, date2) {\n        var year1 = date1.getFullYear();\n        var mar1year1 = new Date(year1, 2, 1);\n        if (isLeapYear(year1) && date1 < mar1year1 && date2 >= mar1year1) {\n          return true;\n        }\n        var year2 = date2.getFullYear();\n        var mar1year2 = new Date(year2, 2, 1);\n        return (isLeapYear(year2) && date2 >= mar1year2 && date1 < mar1year2);\n      };\n      var ylength = 365;\n      if (sy === ey || ((sy + 1) === ey) && ((sm > em) || ((sm === em) && (sd >= ed)))) {\n        if ((sy === ey && isLeapYear(sy)) ||\n          feb29Between(start_date, end_date) ||\n          (em === 1 && ed === 29)) {\n          ylength = 366;\n        }\n        return daysBetween(start_date, end_date) / ylength;\n      }\n      var years = (ey - sy) + 1;\n      var days = (new Date(ey + 1, 0, 1) - new Date(sy, 0, 1)) / 1000 / 60 / 60 / 24;\n      var average = days / years;\n      return daysBetween(start_date, end_date) / average;\n    case 2:\n      // Actual/360\n      return daysBetween(start_date, end_date) / 360;\n    case 3:\n      // Actual/365\n      return daysBetween(start_date, end_date) / 365;\n    case 4:\n      // European 30/360\n      return ((ed + em * 30 + ey * 360) - (sd + sm * 30 + sy * 360)) / 360;\n  }\n};\n\nfunction serial(date) {\n  var addOn = (date > -2203891200000) ? 2 : 1;\n\n  return Math.ceil((date - d1900) / 86400000) + addOn;\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","/**\n * State-based routing for AngularJS 1.x\n * This bundle requires the ui-router-core.js bundle from the @uirouter/core package.\n * @version v1.0.15\n * @link https://ui-router.github.io\n * @license MIT License, http://www.opensource.org/licenses/MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('angular'), require('@uirouter/core')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'angular', '@uirouter/core'], factory) :\n\t(factory((global['@uirouter/angularjs'] = {}),global.angular,global['@uirouter/core']));\n}(this, (function (exports,ng_from_import,core) { 'use strict';\n\nvar ng_from_global = angular;\nvar ng = (ng_from_import && ng_from_import.module) ? ng_from_import : ng_from_global;\n\nfunction getNg1ViewConfigFactory() {\n    var templateFactory = null;\n    return function (path, view) {\n        templateFactory = templateFactory || core.services.$injector.get('$templateFactory');\n        return [new Ng1ViewConfig(path, view, templateFactory)];\n    };\n}\nvar hasAnyKey = function (keys, obj) {\n    return keys.reduce(function (acc, key) { return acc || core.isDefined(obj[key]); }, false);\n};\n/**\n * This is a [[StateBuilder.builder]] function for angular1 `views`.\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * handles the `views` property with logic specific to @uirouter/angularjs (ng1).\n *\n * If no `views: {}` property exists on the [[StateDeclaration]], then it creates the `views` object\n * and applies the state-level configuration to a view named `$default`.\n */\nfunction ng1ViewsBuilder(state) {\n    // Do not process root state\n    if (!state.parent)\n        return {};\n    var tplKeys = ['templateProvider', 'templateUrl', 'template', 'notify', 'async'], ctrlKeys = ['controller', 'controllerProvider', 'controllerAs', 'resolveAs'], compKeys = ['component', 'bindings', 'componentProvider'], nonCompKeys = tplKeys.concat(ctrlKeys), allViewKeys = compKeys.concat(nonCompKeys);\n    // Do not allow a state to have both state-level props and also a `views: {}` property.\n    // A state without a `views: {}` property can declare properties for the `$default` view as properties of the state.\n    // However, the `$default` approach should not be mixed with a separate `views: ` block.\n    if (core.isDefined(state.views) && hasAnyKey(allViewKeys, state)) {\n        throw new Error(\"State '\" + state.name + \"' has a 'views' object. \" +\n            \"It cannot also have \\\"view properties\\\" at the state level.  \" +\n            \"Move the following properties into a view (in the 'views' object): \" +\n            (\" \" + allViewKeys.filter(function (key) { return core.isDefined(state[key]); }).join(', ')));\n    }\n    var views = {}, viewsObject = state.views || { '$default': core.pick(state, allViewKeys) };\n    core.forEach(viewsObject, function (config, name) {\n        // Account for views: { \"\": { template... } }\n        name = name || '$default';\n        // Account for views: { header: \"headerComponent\" }\n        if (core.isString(config))\n            config = { component: config };\n        // Make a shallow copy of the config object\n        config = core.extend({}, config);\n        // Do not allow a view to mix props for component-style view with props for template/controller-style view\n        if (hasAnyKey(compKeys, config) && hasAnyKey(nonCompKeys, config)) {\n            throw new Error(\"Cannot combine: \" + compKeys.join('|') + \" with: \" + nonCompKeys.join('|') + \" in stateview: '\" + name + \"@\" + state.name + \"'\");\n        }\n        config.resolveAs = config.resolveAs || '$resolve';\n        config.$type = 'ng1';\n        config.$context = state;\n        config.$name = name;\n        var normalized = core.ViewService.normalizeUIViewTarget(config.$context, config.$name);\n        config.$uiViewName = normalized.uiViewName;\n        config.$uiViewContextAnchor = normalized.uiViewContextAnchor;\n        views[name] = config;\n    });\n    return views;\n}\nvar id = 0;\nvar Ng1ViewConfig = /** @class */ (function () {\n    function Ng1ViewConfig(path, viewDecl, factory) {\n        var _this = this;\n        this.path = path;\n        this.viewDecl = viewDecl;\n        this.factory = factory;\n        this.$id = id++;\n        this.loaded = false;\n        this.getTemplate = function (uiView, context) {\n            return _this.component ? _this.factory.makeComponentTemplate(uiView, context, _this.component, _this.viewDecl.bindings) : _this.template;\n        };\n    }\n    Ng1ViewConfig.prototype.load = function () {\n        var _this = this;\n        var $q = core.services.$q;\n        var context = new core.ResolveContext(this.path);\n        var params = this.path.reduce(function (acc, node) { return core.extend(acc, node.paramValues); }, {});\n        var promises = {\n            template: $q.when(this.factory.fromConfig(this.viewDecl, params, context)),\n            controller: $q.when(this.getController(context)),\n        };\n        return $q.all(promises).then(function (results) {\n            core.trace.traceViewServiceEvent('Loaded', _this);\n            _this.controller = results.controller;\n            core.extend(_this, results.template); // Either { template: \"tpl\" } or { component: \"cmpName\" }\n            return _this;\n        });\n    };\n    /**\n     * Gets the controller for a view configuration.\n     *\n     * @returns {Function|Promise.<Function>} Returns a controller, or a promise that resolves to a controller.\n     */\n    Ng1ViewConfig.prototype.getController = function (context) {\n        var provider = this.viewDecl.controllerProvider;\n        if (!core.isInjectable(provider))\n            return this.viewDecl.controller;\n        var deps = core.services.$injector.annotate(provider);\n        var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n        var resolvable = new core.Resolvable('', providerFn, deps);\n        return resolvable.get(context);\n    };\n    return Ng1ViewConfig;\n}());\n\n/** @module view */\n/** for typedoc */\n/**\n * Service which manages loading of templates from a ViewConfig.\n */\nvar TemplateFactory = /** @class */ (function () {\n    function TemplateFactory() {\n        var _this = this;\n        /** @hidden */ this._useHttp = ng.version.minor < 3;\n        /** @hidden */ this.$get = ['$http', '$templateCache', '$injector', function ($http, $templateCache, $injector) {\n                _this.$templateRequest = $injector.has && $injector.has('$templateRequest') && $injector.get('$templateRequest');\n                _this.$http = $http;\n                _this.$templateCache = $templateCache;\n                return _this;\n            }];\n    }\n    /** @hidden */\n    TemplateFactory.prototype.useHttpService = function (value) {\n        this._useHttp = value;\n    };\n    /**\n     * Creates a template from a configuration object.\n     *\n     * @param config Configuration object for which to load a template.\n     * The following properties are search in the specified order, and the first one\n     * that is defined is used to create the template:\n     *\n     * @param params  Parameters to pass to the template function.\n     * @param context The resolve context associated with the template's view\n     *\n     * @return {string|object}  The template html as a string, or a promise for\n     * that string,or `null` if no template is configured.\n     */\n    TemplateFactory.prototype.fromConfig = function (config, params, context) {\n        var defaultTemplate = '<ui-view></ui-view>';\n        var asTemplate = function (result) { return core.services.$q.when(result).then(function (str) { return ({ template: str }); }); };\n        var asComponent = function (result) { return core.services.$q.when(result).then(function (str) { return ({ component: str }); }); };\n        return (core.isDefined(config.template) ? asTemplate(this.fromString(config.template, params)) :\n            core.isDefined(config.templateUrl) ? asTemplate(this.fromUrl(config.templateUrl, params)) :\n                core.isDefined(config.templateProvider) ? asTemplate(this.fromProvider(config.templateProvider, params, context)) :\n                    core.isDefined(config.component) ? asComponent(config.component) :\n                        core.isDefined(config.componentProvider) ? asComponent(this.fromComponentProvider(config.componentProvider, params, context)) :\n                            asTemplate(defaultTemplate));\n    };\n    /**\n     * Creates a template from a string or a function returning a string.\n     *\n     * @param template html template as a string or function that returns an html template as a string.\n     * @param params Parameters to pass to the template function.\n     *\n     * @return {string|object} The template html as a string, or a promise for that\n     * string.\n     */\n    TemplateFactory.prototype.fromString = function (template, params) {\n        return core.isFunction(template) ? template(params) : template;\n    };\n    /**\n     * Loads a template from the a URL via `$http` and `$templateCache`.\n     *\n     * @param {string|Function} url url of the template to load, or a function\n     * that returns a url.\n     * @param {Object} params Parameters to pass to the url function.\n     * @return {string|Promise.<string>} The template html as a string, or a promise\n     * for that string.\n     */\n    TemplateFactory.prototype.fromUrl = function (url, params) {\n        if (core.isFunction(url))\n            url = url(params);\n        if (url == null)\n            return null;\n        if (this._useHttp) {\n            return this.$http.get(url, { cache: this.$templateCache, headers: { Accept: 'text/html' } })\n                .then(function (response) {\n                return response.data;\n            });\n        }\n        return this.$templateRequest(url);\n    };\n    /**\n     * Creates a template by invoking an injectable provider function.\n     *\n     * @param provider Function to invoke via `locals`\n     * @param {Function} injectFn a function used to invoke the template provider\n     * @return {string|Promise.<string>} The template html as a string, or a promise\n     * for that string.\n     */\n    TemplateFactory.prototype.fromProvider = function (provider, params, context) {\n        var deps = core.services.$injector.annotate(provider);\n        var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n        var resolvable = new core.Resolvable('', providerFn, deps);\n        return resolvable.get(context);\n    };\n    /**\n     * Creates a component's template by invoking an injectable provider function.\n     *\n     * @param provider Function to invoke via `locals`\n     * @param {Function} injectFn a function used to invoke the template provider\n     * @return {string} The template html as a string: \"<component-name input1='::$resolve.foo'></component-name>\".\n     */\n    TemplateFactory.prototype.fromComponentProvider = function (provider, params, context) {\n        var deps = core.services.$injector.annotate(provider);\n        var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n        var resolvable = new core.Resolvable('', providerFn, deps);\n        return resolvable.get(context);\n    };\n    /**\n     * Creates a template from a component's name\n     *\n     * This implements route-to-component.\n     * It works by retrieving the component (directive) metadata from the injector.\n     * It analyses the component's bindings, then constructs a template that instantiates the component.\n     * The template wires input and output bindings to resolves or from the parent component.\n     *\n     * @param uiView {object} The parent ui-view (for binding outputs to callbacks)\n     * @param context The ResolveContext (for binding outputs to callbacks returned from resolves)\n     * @param component {string} Component's name in camel case.\n     * @param bindings An object defining the component's bindings: {foo: '<'}\n     * @return {string} The template as a string: \"<component-name input1='::$resolve.foo'></component-name>\".\n     */\n    TemplateFactory.prototype.makeComponentTemplate = function (uiView, context, component, bindings) {\n        bindings = bindings || {};\n        // Bind once prefix\n        var prefix = ng.version.minor >= 3 ? '::' : '';\n        // Convert to kebob name. Add x- prefix if the string starts with `x-` or `data-`\n        var kebob = function (camelCase) {\n            var kebobed = core.kebobString(camelCase);\n            return /^(x|data)-/.exec(kebobed) ? \"x-\" + kebobed : kebobed;\n        };\n        var attributeTpl = function (input) {\n            var name = input.name, type = input.type;\n            var attrName = kebob(name);\n            // If the ui-view has an attribute which matches a binding on the routed component\n            // then pass that attribute through to the routed component template.\n            // Prefer ui-view wired mappings to resolve data, unless the resolve was explicitly bound using `bindings:`\n            if (uiView.attr(attrName) && !bindings[name])\n                return attrName + \"='\" + uiView.attr(attrName) + \"'\";\n            var resolveName = bindings[name] || name;\n            // Pre-evaluate the expression for \"@\" bindings by enclosing in {{ }}\n            // some-attr=\"{{ ::$resolve.someResolveName }}\"\n            if (type === '@')\n                return attrName + \"='{{\" + prefix + \"$resolve.\" + resolveName + \"}}'\";\n            // Wire \"&\" callbacks to resolves that return a callback function\n            // Get the result of the resolve (should be a function) and annotate it to get its arguments.\n            // some-attr=\"$resolve.someResolveResultName(foo, bar)\"\n            if (type === '&') {\n                var res = context.getResolvable(resolveName);\n                var fn = res && res.data;\n                var args = fn && core.services.$injector.annotate(fn) || [];\n                // account for array style injection, i.e., ['foo', function(foo) {}]\n                var arrayIdxStr = core.isArray(fn) ? \"[\" + (fn.length - 1) + \"]\" : '';\n                return attrName + \"='$resolve.\" + resolveName + arrayIdxStr + \"(\" + args.join(',') + \")'\";\n            }\n            // some-attr=\"::$resolve.someResolveName\"\n            return attrName + \"='\" + prefix + \"$resolve.\" + resolveName + \"'\";\n        };\n        var attrs = getComponentBindings(component).map(attributeTpl).join(' ');\n        var kebobName = kebob(component);\n        return \"<\" + kebobName + \" \" + attrs + \"></\" + kebobName + \">\";\n    };\n    return TemplateFactory;\n}());\n// Gets all the directive(s)' inputs ('@', '=', and '<') and outputs ('&')\nfunction getComponentBindings(name) {\n    var cmpDefs = core.services.$injector.get(name + 'Directive'); // could be multiple\n    if (!cmpDefs || !cmpDefs.length)\n        throw new Error(\"Unable to find component named '\" + name + \"'\");\n    return cmpDefs.map(getBindings).reduce(core.unnestR, []);\n}\n// Given a directive definition, find its object input attributes\n// Use different properties, depending on the type of directive (component, bindToController, normal)\nvar getBindings = function (def) {\n    if (core.isObject(def.bindToController))\n        return scopeBindings(def.bindToController);\n    return scopeBindings(def.scope);\n};\n// for ng 1.2 style, process the scope: { input: \"=foo\" }\n// for ng 1.3 through ng 1.5, process the component's bindToController: { input: \"=foo\" } object\nvar scopeBindings = function (bindingsObj) { return Object.keys(bindingsObj || {})\n    .map(function (key) { return [key, /^([=<@&])[?]?(.*)/.exec(bindingsObj[key])]; })\n    .filter(function (tuple) { return core.isDefined(tuple) && core.isArray(tuple[1]); })\n    .map(function (tuple) { return ({ name: tuple[1][2] || tuple[0], type: tuple[1][1] }); }); };\n\n/** @module ng1 */ /** for typedoc */\n/**\n * The Angular 1 `StateProvider`\n *\n * The `$stateProvider` works similar to Angular's v1 router, but it focuses purely\n * on state.\n *\n * A state corresponds to a \"place\" in the application in terms of the overall UI and\n * navigation. A state describes (via the controller / template / view properties) what\n * the UI looks like and does at that place.\n *\n * States often have things in common, and the primary way of factoring out these\n * commonalities in this model is via the state hierarchy, i.e. parent/child states aka\n * nested states.\n *\n * The `$stateProvider` provides interfaces to declare these states for your app.\n */\nvar StateProvider = /** @class */ (function () {\n    function StateProvider(stateRegistry, stateService) {\n        this.stateRegistry = stateRegistry;\n        this.stateService = stateService;\n        core.createProxyFunctions(core.val(StateProvider.prototype), this, core.val(this));\n    }\n    /**\n     * Decorates states when they are registered\n     *\n     * Allows you to extend (carefully) or override (at your own peril) the\n     * `stateBuilder` object used internally by [[StateRegistry]].\n     * This can be used to add custom functionality to ui-router,\n     * for example inferring templateUrl based on the state name.\n     *\n     * When passing only a name, it returns the current (original or decorated) builder\n     * function that matches `name`.\n     *\n     * The builder functions that can be decorated are listed below. Though not all\n     * necessarily have a good use case for decoration, that is up to you to decide.\n     *\n     * In addition, users can attach custom decorators, which will generate new\n     * properties within the state's internal definition. There is currently no clear\n     * use-case for this beyond accessing internal states (i.e. $state.$current),\n     * however, expect this to become increasingly relevant as we introduce additional\n     * meta-programming features.\n     *\n     * **Warning**: Decorators should not be interdependent because the order of\n     * execution of the builder functions in non-deterministic. Builder functions\n     * should only be dependent on the state definition object and super function.\n     *\n     *\n     * Existing builder functions and current return values:\n     *\n     * - **parent** `{object}` - returns the parent state object.\n     * - **data** `{object}` - returns state data, including any inherited data that is not\n     *   overridden by own values (if any).\n     * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}\n     *   or `null`.\n     * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is\n     *   navigable).\n     * - **params** `{object}` - returns an array of state params that are ensured to\n     *   be a super-set of parent's params.\n     * - **views** `{object}` - returns a views object where each key is an absolute view\n     *   name (i.e. \"viewName@stateName\") and each value is the config object\n     *   (template, controller) for the view. Even when you don't use the views object\n     *   explicitly on a state config, one is still created for you internally.\n     *   So by decorating this builder function you have access to decorating template\n     *   and controller properties.\n     * - **ownParams** `{object}` - returns an array of params that belong to the state,\n     *   not including any params defined by ancestor states.\n     * - **path** `{string}` - returns the full path from the root down to this state.\n     *   Needed for state activation.\n     * - **includes** `{object}` - returns an object that includes every state that\n     *   would pass a `$state.includes()` test.\n     *\n     * #### Example:\n     * Override the internal 'views' builder with a function that takes the state\n     * definition, and a reference to the internal function being overridden:\n     * ```js\n     * $stateProvider.decorator('views', function (state, parent) {\n     *   let result = {},\n     *       views = parent(state);\n     *\n     *   angular.forEach(views, function (config, name) {\n     *     let autoName = (state.name + '.' + name).replace('.', '/');\n     *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';\n     *     result[name] = config;\n     *   });\n     *   return result;\n     * });\n     *\n     * $stateProvider.state('home', {\n     *   views: {\n     *     'contact.list': { controller: 'ListController' },\n     *     'contact.item': { controller: 'ItemController' }\n     *   }\n     * });\n     * ```\n     *\n     *\n     * ```js\n     * // Auto-populates list and item views with /partials/home/contact/list.html,\n     * // and /partials/home/contact/item.html, respectively.\n     * $state.go('home');\n     * ```\n     *\n     * @param {string} name The name of the builder function to decorate.\n     * @param {object} func A function that is responsible for decorating the original\n     * builder function. The function receives two parameters:\n     *\n     *   - `{object}` - state - The state config object.\n     *   - `{object}` - super - The original builder function.\n     *\n     * @return {object} $stateProvider - $stateProvider instance\n     */\n    StateProvider.prototype.decorator = function (name, func) {\n        return this.stateRegistry.decorator(name, func) || this;\n    };\n    StateProvider.prototype.state = function (name, definition) {\n        if (core.isObject(name)) {\n            definition = name;\n        }\n        else {\n            definition.name = name;\n        }\n        this.stateRegistry.register(definition);\n        return this;\n    };\n    /**\n     * Registers an invalid state handler\n     *\n     * This is a passthrough to [[StateService.onInvalid]] for ng1.\n     */\n    StateProvider.prototype.onInvalid = function (callback) {\n        return this.stateService.onInvalid(callback);\n    };\n    return StateProvider;\n}());\n\n/** @module ng1 */ /** */\n/**\n * This is a [[StateBuilder.builder]] function for angular1 `onEnter`, `onExit`,\n * `onRetain` callback hooks on a [[Ng1StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * ensures that those hooks are injectable for @uirouter/angularjs (ng1).\n */\nvar getStateHookBuilder = function (hookName) {\n    return function stateHookBuilder(stateObject, parentFn) {\n        var hook = stateObject[hookName];\n        var pathname = hookName === 'onExit' ? 'from' : 'to';\n        function decoratedNg1Hook(trans, state) {\n            var resolveContext = new core.ResolveContext(trans.treeChanges(pathname));\n            var subContext = resolveContext.subContext(state.$$state());\n            var locals = core.extend(getLocals(subContext), { $state$: state, $transition$: trans });\n            return core.services.$injector.invoke(hook, this, locals);\n        }\n        return hook ? decoratedNg1Hook : undefined;\n    };\n};\n\n/**\n * @internalapi\n * @module ng1\n */ /** */\n/**\n * Implements UI-Router LocationServices and LocationConfig using Angular 1's $location service\n */\nvar Ng1LocationServices = /** @class */ (function () {\n    function Ng1LocationServices($locationProvider) {\n        // .onChange() registry\n        this._urlListeners = [];\n        this.$locationProvider = $locationProvider;\n        var _lp = core.val($locationProvider);\n        core.createProxyFunctions(_lp, this, _lp, ['hashPrefix']);\n    }\n    /**\n     * Applys ng1-specific path parameter encoding\n     *\n     * The Angular 1 `$location` service is a bit weird.\n     * It doesn't allow slashes to be encoded/decoded bi-directionally.\n     *\n     * See the writeup at https://github.com/angular-ui/ui-router/issues/2598\n     *\n     * This code patches the `path` parameter type so it encoded/decodes slashes as ~2F\n     *\n     * @param router\n     */\n    Ng1LocationServices.monkeyPatchPathParameterType = function (router) {\n        var pathType = router.urlMatcherFactory.type('path');\n        pathType.encode = function (x) {\n            return x != null ? x.toString().replace(/(~|\\/)/g, function (m) { return ({ '~': '~~', '/': '~2F' }[m]); }) : x;\n        };\n        pathType.decode = function (x) {\n            return x != null ? x.toString().replace(/(~~|~2F)/g, function (m) { return ({ '~~': '~', '~2F': '/' }[m]); }) : x;\n        };\n    };\n    Ng1LocationServices.prototype.dispose = function () { };\n    Ng1LocationServices.prototype.onChange = function (callback) {\n        var _this = this;\n        this._urlListeners.push(callback);\n        return function () { return core.removeFrom(_this._urlListeners)(callback); };\n    };\n    Ng1LocationServices.prototype.html5Mode = function () {\n        var html5Mode = this.$locationProvider.html5Mode();\n        html5Mode = core.isObject(html5Mode) ? html5Mode.enabled : html5Mode;\n        return html5Mode && this.$sniffer.history;\n    };\n    Ng1LocationServices.prototype.url = function (newUrl, replace, state) {\n        if (replace === void 0) { replace = false; }\n        if (core.isDefined(newUrl))\n            this.$location.url(newUrl);\n        if (replace)\n            this.$location.replace();\n        if (state)\n            this.$location.state(state);\n        return this.$location.url();\n    };\n    Ng1LocationServices.prototype._runtimeServices = function ($rootScope, $location, $sniffer, $browser) {\n        var _this = this;\n        this.$location = $location;\n        this.$sniffer = $sniffer;\n        // Bind $locationChangeSuccess to the listeners registered in LocationService.onChange\n        $rootScope.$on('$locationChangeSuccess', function (evt) { return _this._urlListeners.forEach(function (fn) { return fn(evt); }); });\n        var _loc = core.val($location);\n        var _browser = core.val($browser);\n        // Bind these LocationService functions to $location\n        core.createProxyFunctions(_loc, this, _loc, ['replace', 'path', 'search', 'hash']);\n        // Bind these LocationConfig functions to $location\n        core.createProxyFunctions(_loc, this, _loc, ['port', 'protocol', 'host']);\n        // Bind these LocationConfig functions to $browser\n        core.createProxyFunctions(_browser, this, _browser, ['baseHref']);\n    };\n    return Ng1LocationServices;\n}());\n\n/** @module url */ /** */\n/**\n * Manages rules for client-side URL\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class manages the router rules for what to do when the URL changes.\n *\n * This provider remains for backwards compatibility.\n *\n * @deprecated\n */\nvar UrlRouterProvider = /** @class */ (function () {\n    /** @hidden */\n    function UrlRouterProvider(router) {\n        this._router = router;\n        this._urlRouter = router.urlRouter;\n    }\n    UrlRouterProvider.injectableHandler = function (router, handler) {\n        return function (match) {\n            return core.services.$injector.invoke(handler, null, { $match: match, $stateParams: router.globals.params });\n        };\n    };\n    /** @hidden */\n    UrlRouterProvider.prototype.$get = function () {\n        var urlRouter = this._urlRouter;\n        urlRouter.update(true);\n        if (!urlRouter.interceptDeferred)\n            urlRouter.listen();\n        return urlRouter;\n    };\n    /**\n     * Registers a url handler function.\n     *\n     * Registers a low level url handler (a `rule`).\n     * A rule detects specific URL patterns and returns a redirect, or performs some action.\n     *\n     * If a rule returns a string, the URL is replaced with the string, and all rules are fired again.\n     *\n     * #### Example:\n     * ```js\n     * var app = angular.module('app', ['ui.router.router']);\n     *\n     * app.config(function ($urlRouterProvider) {\n     *   // Here's an example of how you might allow case insensitive urls\n     *   $urlRouterProvider.rule(function ($injector, $location) {\n     *     var path = $location.path(),\n     *         normalized = path.toLowerCase();\n     *\n     *     if (path !== normalized) {\n     *       return normalized;\n     *     }\n     *   });\n     * });\n     * ```\n     *\n     * @param ruleFn\n     * Handler function that takes `$injector` and `$location` services as arguments.\n     * You can use them to detect a url and return a different url as a string.\n     *\n     * @return [[UrlRouterProvider]] (`this`)\n     */\n    UrlRouterProvider.prototype.rule = function (ruleFn) {\n        var _this = this;\n        if (!core.isFunction(ruleFn))\n            throw new Error(\"'rule' must be a function\");\n        var match = function () {\n            return ruleFn(core.services.$injector, _this._router.locationService);\n        };\n        var rule = new core.BaseUrlRule(match, core.identity);\n        this._urlRouter.rule(rule);\n        return this;\n    };\n    /**\n     * Defines the path or behavior to use when no url can be matched.\n     *\n     * #### Example:\n     * ```js\n     * var app = angular.module('app', ['ui.router.router']);\n     *\n     * app.config(function ($urlRouterProvider) {\n     *   // if the path doesn't match any of the urls you configured\n     *   // otherwise will take care of routing the user to the\n     *   // specified url\n     *   $urlRouterProvider.otherwise('/index');\n     *\n     *   // Example of using function rule as param\n     *   $urlRouterProvider.otherwise(function ($injector, $location) {\n     *     return '/a/valid/url';\n     *   });\n     * });\n     * ```\n     *\n     * @param rule\n     * The url path you want to redirect to or a function rule that returns the url path or performs a `$state.go()`.\n     * The function version is passed two params: `$injector` and `$location` services, and should return a url string.\n     *\n     * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n     */\n    UrlRouterProvider.prototype.otherwise = function (rule) {\n        var _this = this;\n        var urlRouter = this._urlRouter;\n        if (core.isString(rule)) {\n            urlRouter.otherwise(rule);\n        }\n        else if (core.isFunction(rule)) {\n            urlRouter.otherwise(function () { return rule(core.services.$injector, _this._router.locationService); });\n        }\n        else {\n            throw new Error(\"'rule' must be a string or function\");\n        }\n        return this;\n    };\n    /**\n     * Registers a handler for a given url matching.\n     *\n     * If the handler is a string, it is\n     * treated as a redirect, and is interpolated according to the syntax of match\n     * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n     *\n     * If the handler is a function, it is injectable.\n     * It gets invoked if `$location` matches.\n     * You have the option of inject the match object as `$match`.\n     *\n     * The handler can return\n     *\n     * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n     *   will continue trying to find another one that matches.\n     * - **string** which is treated as a redirect and passed to `$location.url()`\n     * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n     *\n     * #### Example:\n     * ```js\n     * var app = angular.module('app', ['ui.router.router']);\n     *\n     * app.config(function ($urlRouterProvider) {\n     *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n     *     if ($state.$current.navigable !== state ||\n     *         !equalForKeys($match, $stateParams) {\n     *      $state.transitionTo(state, $match, false);\n     *     }\n     *   });\n     * });\n     * ```\n     *\n     * @param what A pattern string to match, compiled as a [[UrlMatcher]].\n     * @param handler The path (or function that returns a path) that you want to redirect your user to.\n     * @param ruleCallback [optional] A callback that receives the `rule` registered with [[UrlMatcher.rule]]\n     *\n     * Note: the handler may also invoke arbitrary code, such as `$state.go()`\n     */\n    UrlRouterProvider.prototype.when = function (what, handler) {\n        if (core.isArray(handler) || core.isFunction(handler)) {\n            handler = UrlRouterProvider.injectableHandler(this._router, handler);\n        }\n        this._urlRouter.when(what, handler);\n        return this;\n    };\n    /**\n     * Disables monitoring of the URL.\n     *\n     * Call this method before UI-Router has bootstrapped.\n     * It will stop UI-Router from performing the initial url sync.\n     *\n     * This can be useful to perform some asynchronous initialization before the router starts.\n     * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n     *\n     * #### Example:\n     * ```js\n     * var app = angular.module('app', ['ui.router']);\n     *\n     * app.config(function ($urlRouterProvider) {\n     *   // Prevent $urlRouter from automatically intercepting URL changes;\n     *   $urlRouterProvider.deferIntercept();\n     * })\n     *\n     * app.run(function (MyService, $urlRouter, $http) {\n     *   $http.get(\"/stuff\").then(function(resp) {\n     *     MyService.doStuff(resp.data);\n     *     $urlRouter.listen();\n     *     $urlRouter.sync();\n     *   });\n     * });\n     * ```\n     *\n     * @param defer Indicates whether to defer location change interception.\n     *        Passing no parameter is equivalent to `true`.\n     */\n    UrlRouterProvider.prototype.deferIntercept = function (defer) {\n        this._urlRouter.deferIntercept(defer);\n    };\n    return UrlRouterProvider;\n}());\n\n/**\n * # Angular 1 types\n *\n * UI-Router core provides various Typescript types which you can use for code completion and validating parameter values, etc.\n * The customizations to the core types for Angular UI-Router are documented here.\n *\n * The optional [[$resolve]] service is also documented here.\n *\n * @module ng1\n * @preferred\n */\n/** for typedoc */\nng.module('ui.router.angular1', []);\nvar mod_init = ng.module('ui.router.init', []);\nvar mod_util = ng.module('ui.router.util', ['ng', 'ui.router.init']);\nvar mod_rtr = ng.module('ui.router.router', ['ui.router.util']);\nvar mod_state = ng.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);\nvar mod_main = ng.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);\nvar mod_cmpt = ng.module('ui.router.compat', ['ui.router']); // tslint:disable-line\nvar router = null;\n$uiRouterProvider.$inject = ['$locationProvider'];\n/** This angular 1 provider instantiates a Router and exposes its services via the angular injector */\nfunction $uiRouterProvider($locationProvider) {\n    // Create a new instance of the Router when the $uiRouterProvider is initialized\n    router = this.router = new core.UIRouter();\n    router.stateProvider = new StateProvider(router.stateRegistry, router.stateService);\n    // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties\n    router.stateRegistry.decorator('views', ng1ViewsBuilder);\n    router.stateRegistry.decorator('onExit', getStateHookBuilder('onExit'));\n    router.stateRegistry.decorator('onRetain', getStateHookBuilder('onRetain'));\n    router.stateRegistry.decorator('onEnter', getStateHookBuilder('onEnter'));\n    router.viewService._pluginapi._viewConfigFactory('ng1', getNg1ViewConfigFactory());\n    var ng1LocationService = router.locationService = router.locationConfig = new Ng1LocationServices($locationProvider);\n    Ng1LocationServices.monkeyPatchPathParameterType(router);\n    // backwards compat: also expose router instance as $uiRouterProvider.router\n    router['router'] = router;\n    router['$get'] = $get;\n    $get.$inject = ['$location', '$browser', '$sniffer', '$rootScope', '$http', '$templateCache'];\n    function $get($location, $browser, $sniffer, $rootScope, $http, $templateCache) {\n        ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser);\n        delete router['router'];\n        delete router['$get'];\n        return router;\n    }\n    return router;\n}\nvar getProviderFor = function (serviceName) { return ['$uiRouterProvider', function ($urp) {\n        var service = $urp.router[serviceName];\n        service['$get'] = function () { return service; };\n        return service;\n    }]; };\n// This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)\nrunBlock.$inject = ['$injector', '$q', '$uiRouter'];\nfunction runBlock($injector, $q, $uiRouter) {\n    core.services.$injector = $injector;\n    core.services.$q = $q;\n    // The $injector is now available.\n    // Find any resolvables that had dependency annotation deferred\n    $uiRouter.stateRegistry.get()\n        .map(function (x) { return x.$$state().resolvables; })\n        .reduce(core.unnestR, [])\n        .filter(function (x) { return x.deps === 'deferred'; })\n        .forEach(function (resolvable) { return resolvable.deps = $injector.annotate(resolvable.resolveFn, $injector.strictDi); });\n}\n// $urlRouter service and $urlRouterProvider\nvar getUrlRouterProvider = function (uiRouter) {\n    return uiRouter.urlRouterProvider = new UrlRouterProvider(uiRouter);\n};\n// $state service and $stateProvider\n// $urlRouter service and $urlRouterProvider\nvar getStateProvider = function () {\n    return core.extend(router.stateProvider, { $get: function () { return router.stateService; } });\n};\nwatchDigests.$inject = ['$rootScope'];\nfunction watchDigests($rootScope) {\n    $rootScope.$watch(function () { core.trace.approximateDigests++; });\n}\nmod_init.provider('$uiRouter', $uiRouterProvider);\nmod_rtr.provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);\nmod_util.provider('$urlService', getProviderFor('urlService'));\nmod_util.provider('$urlMatcherFactory', ['$uiRouterProvider', function () { return router.urlMatcherFactory; }]);\nmod_util.provider('$templateFactory', function () { return new TemplateFactory(); });\nmod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));\nmod_state.provider('$uiRouterGlobals', getProviderFor('globals'));\nmod_state.provider('$transitions', getProviderFor('transitionService'));\nmod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);\nmod_state.factory('$stateParams', ['$uiRouter', function ($uiRouter) { return $uiRouter.globals.params; }]);\nmod_main.factory('$view', function () { return router.viewService; });\nmod_main.service('$trace', function () { return core.trace; });\nmod_main.run(watchDigests);\nmod_util.run(['$urlMatcherFactory', function ($urlMatcherFactory) { }]);\nmod_state.run(['$state', function ($state) { }]);\nmod_rtr.run(['$urlRouter', function ($urlRouter) { }]);\nmod_init.run(runBlock);\n/** @hidden TODO: find a place to move this */\nvar getLocals = function (ctx) {\n    var tokens = ctx.getTokens().filter(core.isString);\n    var tuples = tokens.map(function (key) {\n        var resolvable = ctx.getResolvable(key);\n        var waitPolicy = ctx.getPolicy(resolvable).async;\n        return [key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data];\n    });\n    return tuples.reduce(core.applyPairs, {});\n};\n\n/**\n * The current (or pending) State Parameters\n *\n * An injectable global **Service Object** which holds the state parameters for the latest **SUCCESSFUL** transition.\n *\n * The values are not updated until *after* a `Transition` successfully completes.\n *\n * **Also:** an injectable **Per-Transition Object** object which holds the pending state parameters for the pending `Transition` currently running.\n *\n * ### Deprecation warning:\n *\n * The value injected for `$stateParams` is different depending on where it is injected.\n *\n * - When injected into an angular service, the object injected is the global **Service Object** with the parameter values for the latest successful `Transition`.\n * - When injected into transition hooks, resolves, or view controllers, the object is the **Per-Transition Object** with the parameter values for the running `Transition`.\n *\n * Because of these confusing details, this service is deprecated.\n *\n * ### Instead of using the global `$stateParams` service object,\n * inject [[$uiRouterGlobals]] and use [[UIRouterGlobals.params]]\n *\n * ```js\n * MyService.$inject = ['$uiRouterGlobals'];\n * function MyService($uiRouterGlobals) {\n *   return {\n *     paramValues: function () {\n *       return $uiRouterGlobals.params;\n *     }\n *   }\n * }\n * ```\n *\n * ### Instead of using the per-transition `$stateParams` object,\n * inject the current `Transition` (as [[$transition$]]) and use [[Transition.params]]\n *\n * ```js\n * MyController.$inject = ['$transition$'];\n * function MyController($transition$) {\n *   var username = $transition$.params().username;\n *   // .. do something with username\n * }\n * ```\n *\n * ---\n *\n * This object can be injected into other services.\n *\n * #### Deprecated Example:\n * ```js\n * SomeService.$inject = ['$http', '$stateParams'];\n * function SomeService($http, $stateParams) {\n *   return {\n *     getUser: function() {\n *       return $http.get('/api/users/' + $stateParams.username);\n *     }\n *   }\n * };\n * angular.service('SomeService', SomeService);\n * ```\n * @deprecated\n */\n\n/**\n * # Angular 1 Directives\n *\n * These are the directives included in UI-Router for Angular 1.\n * These directives are used in templates to create viewports and link/navigate to states.\n *\n * @ng1api\n * @preferred\n * @module directives\n */ /** for typedoc */\n/** @hidden */\nfunction parseStateRef(ref) {\n    var parsed;\n    var paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n    if (paramsOnly)\n        ref = '(' + paramsOnly[1] + ')';\n    parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n    if (!parsed || parsed.length !== 4)\n        throw new Error(\"Invalid state ref '\" + ref + \"'\");\n    return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n}\n/** @hidden */\nfunction stateContext(el) {\n    var $uiView = el.parent().inheritedData('$uiView');\n    var path = core.parse('$cfg.path')($uiView);\n    return path ? core.tail(path).state.name : undefined;\n}\n/** @hidden */\nfunction processedDef($state, $element, def) {\n    var uiState = def.uiState || $state.current.name;\n    var uiStateOpts = core.extend(defaultOpts($element, $state), def.uiStateOpts || {});\n    var href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n    return { uiState: uiState, uiStateParams: def.uiStateParams, uiStateOpts: uiStateOpts, href: href };\n}\n/** @hidden */\nfunction getTypeInfo(el) {\n    // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n    var isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n    var isForm = el[0].nodeName === 'FORM';\n    return {\n        attr: isForm ? 'action' : (isSvg ? 'xlink:href' : 'href'),\n        isAnchor: el.prop('tagName').toUpperCase() === 'A',\n        clickable: !isForm,\n    };\n}\n/** @hidden */\nfunction clickHook(el, $state, $timeout, type, getDef) {\n    return function (e) {\n        var button = e.which || e.button, target = getDef();\n        if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n            // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n            var transition_1 = $timeout(function () {\n                $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n            });\n            e.preventDefault();\n            // if the state has no URL, ignore one preventDefault from the <a> directive.\n            var ignorePreventDefaultCount_1 = type.isAnchor && !target.href ? 1 : 0;\n            e.preventDefault = function () {\n                if (ignorePreventDefaultCount_1-- <= 0)\n                    $timeout.cancel(transition_1);\n            };\n        }\n    };\n}\n/** @hidden */\nfunction defaultOpts(el, $state) {\n    return {\n        relative: stateContext(el) || $state.$current,\n        inherit: true,\n        source: 'sref',\n    };\n}\n/** @hidden */\nfunction bindEvents(element, scope, hookFn, uiStateOpts) {\n    var events;\n    if (uiStateOpts) {\n        events = uiStateOpts.events;\n    }\n    if (!core.isArray(events)) {\n        events = ['click'];\n    }\n    var on = element.on ? 'on' : 'bind';\n    for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n        var event_1 = events_1[_i];\n        element[on](event_1, hookFn);\n    }\n    scope.$on('$destroy', function () {\n        var off = element.off ? 'off' : 'unbind';\n        for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n            var event_2 = events_2[_i];\n            element[off](event_2, hookFn);\n        }\n    });\n}\n/**\n * `ui-sref`: A directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of the `ui-sref` is the name of the state to link to.\n *\n * #### Example:\n * This will activate the `home` state when the link is clicked.\n * ```html\n * <a ui-sref=\"home\">Home</a>\n * ```\n *\n * ### Relative Links\n * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create a relative `ui-sref` which always targets the same destination.\n *\n * #### Example:\n * Both these links are relative to the parent state, even when a child state is currently active.\n * ```html\n * <a ui-sref=\".child1\">child 1 state</a>\n * <a ui-sref=\".child2\">child 2 state</a>\n * ```\n *\n * This link activates the parent state.\n * ```html\n * <a ui-sref=\"^\">Return</a>\n * ```\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]]  method).\n *\n * #### Example:\n * Assuming the `users` state has a url of `/users/`\n * ```html\n * <a ui-sref=\"users\" href=\"/users/\">Users</a>\n * ```\n *\n * ### Parameter Values\n * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n * The content inside the parentheses is an expression, evaluated to the parameter values.\n *\n * #### Example:\n * This example renders a list of links to users.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n * <li ng-repeat=\"user in users\">\n *   <a ui-sref=\"users.detail({ userId: user.id })\">{{ user.displayName }}</a>\n * </li>\n * ```\n *\n * Note:\n * The parameter values expression is `$watch`ed for updates.\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n *\n * #### Example:\n * ```html\n * <a ui-sref=\"home\" ui-sref-opts=\"{ reload: true }\">Home</a>\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-sref-opts` attribute.\n *\n * #### Example:\n * ```html\n * <input type=\"text\" ui-sref=\"contacts\" ui-sref-opts=\"{ events: ['change', 'blur'] }\">\n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Examples\n * If you have the following template:\n *\n * ```html\n * <a ui-sref=\"home\">Home</a>\n * <a ui-sref=\"about\">About</a>\n * <a ui-sref=\"{page: 2}\">Next page</a>\n *\n * <ul>\n *     <li ng-repeat=\"contact in contacts\">\n *         <a ui-sref=\"contacts.detail({ id: contact.id })\">{{ contact.name }}</a>\n *     </li>\n * </ul>\n * ```\n *\n * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n *\n * ```html\n * <a href=\"#/home\" ui-sref=\"home\">Home</a>\n * <a href=\"#/about\" ui-sref=\"about\">About</a>\n * <a href=\"#/contacts?page=2\" ui-sref=\"{page: 2}\">Next page</a>\n *\n * <ul>\n *     <li ng-repeat=\"contact in contacts\">\n *         <a href=\"#/contacts/1\" ui-sref=\"contacts.detail({ id: contact.id })\">Joe</a>\n *     </li>\n *     <li ng-repeat=\"contact in contacts\">\n *         <a href=\"#/contacts/2\" ui-sref=\"contacts.detail({ id: contact.id })\">Alice</a>\n *     </li>\n *     <li ng-repeat=\"contact in contacts\">\n *         <a href=\"#/contacts/3\" ui-sref=\"contacts.detail({ id: contact.id })\">Bob</a>\n *     </li>\n * </ul>\n *\n * <a href=\"#/home\" ui-sref=\"home\" ui-sref-opts=\"{reload: true}\">Home</a>\n * ```\n *\n * ### Notes\n *\n * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * <a ui-sref=\"{ lang: 'en' }\">English</a>\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n *\n * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n */\nvar uiSrefDirective;\nuiSrefDirective = ['$uiRouter', '$timeout',\n    function $StateRefDirective($uiRouter, $timeout) {\n        var $state = $uiRouter.stateService;\n        return {\n            restrict: 'A',\n            require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n            link: function (scope, element, attrs, uiSrefActive) {\n                var type = getTypeInfo(element);\n                var active = uiSrefActive[1] || uiSrefActive[0];\n                var unlinkInfoFn = null;\n                var hookFn;\n                var rawDef = {};\n                var getDef = function () { return processedDef($state, element, rawDef); };\n                var ref = parseStateRef(attrs.uiSref);\n                rawDef.uiState = ref.state;\n                rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n                function update() {\n                    var def = getDef();\n                    if (unlinkInfoFn)\n                        unlinkInfoFn();\n                    if (active)\n                        unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n                    if (def.href != null)\n                        attrs.$set(type.attr, def.href);\n                }\n                if (ref.paramExpr) {\n                    scope.$watch(ref.paramExpr, function (val) {\n                        rawDef.uiStateParams = core.extend({}, val);\n                        update();\n                    }, true);\n                    rawDef.uiStateParams = core.extend({}, scope.$eval(ref.paramExpr));\n                }\n                update();\n                scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n                scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n                if (!type.clickable)\n                    return;\n                hookFn = clickHook(element, $state, $timeout, type, getDef);\n                bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n            },\n        };\n    }];\n/**\n * `ui-state`: A fully dynamic directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n *\n * #### Example:\n * Create a list of links.\n * ```html\n * <li ng-repeat=\"link in navlinks\">\n *   <a ui-state=\"link.state\">{{ link.displayName }}</a>\n * </li>\n * ```\n *\n * ### Relative Links\n * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create relative `ui-state` which always targets the same destination.\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]]  method).\n *\n * ### Parameter Values\n * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n * Param values should be provided using the `ui-state-params` attribute.\n * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * This example renders a list of links with param values.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n * <li ng-repeat=\"link in navlinks\">\n *   <a ui-state=\"link.state\" ui-state-params=\"link.params\">{{ link.displayName }}</a>\n * </li>\n * ```\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * ```html\n * <a ui-state=\"returnto.state\" ui-state-opts=\"{ reload: true }\">Home</a>\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-state-opts` attribute.\n *\n * #### Example:\n * ```html\n * <input type=\"text\" ui-state=\"contacts\" ui-state-opts=\"{ events: ['change', 'blur'] }\">\n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Notes\n *\n * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n *   However, it might be simpler to use [[uiSref]] parameter-only links.\n *\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * <a ui-state=\"\" ui-state-params=\"{ lang: 'en' }\">English</a>\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n * ```\n */\nvar uiStateDirective;\nuiStateDirective = ['$uiRouter', '$timeout',\n    function $StateRefDynamicDirective($uiRouter, $timeout) {\n        var $state = $uiRouter.stateService;\n        return {\n            restrict: 'A',\n            require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n            link: function (scope, element, attrs, uiSrefActive) {\n                var type = getTypeInfo(element);\n                var active = uiSrefActive[1] || uiSrefActive[0];\n                var unlinkInfoFn = null;\n                var hookFn;\n                var rawDef = {};\n                var getDef = function () { return processedDef($state, element, rawDef); };\n                var inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n                var watchDeregFns = inputAttrs.reduce(function (acc, attr) { return (acc[attr] = core.noop, acc); }, {});\n                function update() {\n                    var def = getDef();\n                    if (unlinkInfoFn)\n                        unlinkInfoFn();\n                    if (active)\n                        unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n                    if (def.href != null)\n                        attrs.$set(type.attr, def.href);\n                }\n                inputAttrs.forEach(function (field) {\n                    rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n                    attrs.$observe(field, function (expr) {\n                        watchDeregFns[field]();\n                        watchDeregFns[field] = scope.$watch(expr, function (newval) {\n                            rawDef[field] = newval;\n                            update();\n                        }, true);\n                    });\n                });\n                update();\n                scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n                scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n                if (!type.clickable)\n                    return;\n                hookFn = clickHook(element, $state, $timeout, type, getDef);\n                bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n            },\n        };\n    }];\n/**\n * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n *\n * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n * related directive's state is active (and remove them when it is inactive).\n *\n * The primary use-case is to highlight the active link in navigation menus,\n * distinguishing it from the inactive menu items.\n *\n * ### Linking to a `ui-sref` or `ui-state`\n * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n *\n * ### Matching\n *\n * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n * This is a \"fuzzy match\" which uses [[StateService.includes]].\n *\n * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n * This is an \"exact match\" which uses [[StateService.is]].\n *\n * ### Parameter values\n * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n *\n * #### Example:\n * ```html\n * <li ng-repeat=\"user in users\" ui-sref-active=\"active\">\n *   <a ui-sref=\"user.details({ userId: user.id })\">{{ user.lastName }}</a>\n * </li>\n * ```\n *\n * ### Examples\n *\n * Given the following template:\n * #### Example:\n * ```html\n * <ul>\n *   <li ui-sref-active=\"active\" class=\"item\">\n *     <a href ui-sref=\"app.user({user: 'bilbobaggins'})\">@bilbobaggins</a>\n *   </li>\n * </ul>\n * ```\n *\n * When the app state is `app.user` (or any child state),\n * and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *\n * ```html\n * <ul>\n *   <li ui-sref-active=\"active\" class=\"item active\">\n *     <a ui-sref=\"app.user({user: 'bilbobaggins'})\" href=\"/users/bilbobaggins\">@bilbobaggins</a>\n *   </li>\n * </ul>\n * ```\n *\n * ### Glob mode\n *\n * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n * The objects keys represent active class names and values represent the respective state names/globs.\n * `ui-sref-active` will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * #### Example:\n * Given the following template, with \"admin\" being an abstract state:\n * ```html\n * <div ui-sref-active=\"{'active': 'admin.**'}\">\n *   <a ui-sref-active=\"active\" ui-sref=\"admin.roles\">Roles</a>\n * </div>\n * ```\n *\n * Arrays are also supported as values in the `ngClass`-like interface.\n * This allows multiple states to add `active` class.\n *\n * #### Example:\n * Given the following template, with \"admin.roles\" being the current state, the class will be added too:\n * ```html\n * <div ui-sref-active=\"{'active': ['owner.**', 'admin.**']}\">\n *   <a ui-sref-active=\"active\" ui-sref=\"admin.roles\">Roles</a>\n * </div>\n * ```\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `<div>` and `<a>` elements.\n * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n *\n * ### Notes:\n *\n * - The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n */\nvar uiSrefActiveDirective;\nuiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter',\n    function $StateRefActiveDirective($state, $stateParams, $interpolate, $uiRouter) {\n        return {\n            restrict: 'A',\n            controller: ['$scope', '$element', '$attrs',\n                function ($scope, $element, $attrs) {\n                    var states = [];\n                    var activeEqClass;\n                    var uiSrefActive;\n                    // There probably isn't much point in $observing this\n                    // uiSrefActive and uiSrefActiveEq share the same directive object with some\n                    // slight difference in logic routing\n                    activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n                    try {\n                        uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n                    }\n                    catch (e) {\n                        // Do nothing. uiSrefActive is not a valid expression.\n                        // Fall back to using $interpolate below\n                    }\n                    uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n                    setStatesFromDefinitionObject(uiSrefActive);\n                    // Allow uiSref to communicate with uiSrefActive[Equals]\n                    this.$$addStateInfo = function (newState, newParams) {\n                        // we already got an explicit state provided by ui-sref-active, so we\n                        // shadow the one that comes from ui-sref\n                        if (core.isObject(uiSrefActive) && states.length > 0) {\n                            return;\n                        }\n                        var deregister = addState(newState, newParams, uiSrefActive);\n                        update();\n                        return deregister;\n                    };\n                    function updateAfterTransition(trans) {\n                        trans.promise.then(update, core.noop);\n                    }\n                    $scope.$on('$destroy', setupEventListeners());\n                    if ($uiRouter.globals.transition) {\n                        updateAfterTransition($uiRouter.globals.transition);\n                    }\n                    function setupEventListeners() {\n                        var deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged);\n                        var deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition);\n                        var deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update);\n                        return function cleanUp() {\n                            deregisterStatesChangedListener();\n                            deregisterOnStartListener();\n                            deregisterStateChangeSuccessListener();\n                        };\n                    }\n                    function handleStatesChanged() {\n                        setStatesFromDefinitionObject(uiSrefActive);\n                    }\n                    function setStatesFromDefinitionObject(statesDefinition) {\n                        if (core.isObject(statesDefinition)) {\n                            states = [];\n                            core.forEach(statesDefinition, function (stateOrName, activeClass) {\n                                // Helper function to abstract adding state.\n                                var addStateForClass = function (stateOrName, activeClass) {\n                                    var ref = parseStateRef(stateOrName);\n                                    addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n                                };\n                                if (core.isString(stateOrName)) {\n                                    // If state is string, just add it.\n                                    addStateForClass(stateOrName, activeClass);\n                                }\n                                else if (core.isArray(stateOrName)) {\n                                    // If state is an array, iterate over it and add each array item individually.\n                                    core.forEach(stateOrName, function (stateOrName) {\n                                        addStateForClass(stateOrName, activeClass);\n                                    });\n                                }\n                            });\n                        }\n                    }\n                    function addState(stateName, stateParams, activeClass) {\n                        var state = $state.get(stateName, stateContext($element));\n                        var stateInfo = {\n                            state: state || { name: stateName },\n                            params: stateParams,\n                            activeClass: activeClass,\n                        };\n                        states.push(stateInfo);\n                        return function removeState() {\n                            core.removeFrom(states)(stateInfo);\n                        };\n                    }\n                    // Update route state\n                    function update() {\n                        var splitClasses = function (str) {\n                            return str.split(/\\s/).filter(core.identity);\n                        };\n                        var getClasses = function (stateList) {\n                            return stateList.map(function (x) { return x.activeClass; }).map(splitClasses).reduce(core.unnestR, []);\n                        };\n                        var allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(core.uniqR, []);\n                        var fuzzyClasses = getClasses(states.filter(function (x) { return $state.includes(x.state.name, x.params); }));\n                        var exactlyMatchesAny = !!states.filter(function (x) { return $state.is(x.state.name, x.params); }).length;\n                        var exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n                        var addClasses = fuzzyClasses.concat(exactClasses).reduce(core.uniqR, []);\n                        var removeClasses = allClasses.filter(function (cls) { return !core.inArray(addClasses, cls); });\n                        $scope.$evalAsync(function () {\n                            addClasses.forEach(function (className) { return $element.addClass(className); });\n                            removeClasses.forEach(function (className) { return $element.removeClass(className); });\n                        });\n                    }\n                    update();\n                }],\n        };\n    }];\nng.module('ui.router.state')\n    .directive('uiSref', uiSrefDirective)\n    .directive('uiSrefActive', uiSrefActiveDirective)\n    .directive('uiSrefActiveEq', uiSrefActiveDirective)\n    .directive('uiState', uiStateDirective);\n\n/** @module ng1 */ /** for typedoc */\n/**\n * `isState` Filter: truthy if the current state is the parameter\n *\n * Translates to [[StateService.is]] `$state.is(\"stateName\")`.\n *\n * #### Example:\n * ```html\n * <div ng-if=\"'stateName' | isState\">show if state is 'stateName'</div>\n * ```\n */\n$IsStateFilter.$inject = ['$state'];\nfunction $IsStateFilter($state) {\n    var isFilter = function (state, params, options) {\n        return $state.is(state, params, options);\n    };\n    isFilter.$stateful = true;\n    return isFilter;\n}\n/**\n * `includedByState` Filter: truthy if the current state includes the parameter\n *\n * Translates to [[StateService.includes]]` $state.is(\"fullOrPartialStateName\")`.\n *\n * #### Example:\n * ```html\n * <div ng-if=\"'fullOrPartialStateName' | includedByState\">show if state includes 'fullOrPartialStateName'</div>\n * ```\n */\n$IncludedByStateFilter.$inject = ['$state'];\nfunction $IncludedByStateFilter($state) {\n    var includesFilter = function (state, params, options) {\n        return $state.includes(state, params, options);\n    };\n    includesFilter.$stateful = true;\n    return includesFilter;\n}\nng.module('ui.router.state')\n    .filter('isState', $IsStateFilter)\n    .filter('includedByState', $IncludedByStateFilter);\n\n/**\n * @ng1api\n * @module directives\n */ /** for typedoc */\n/**\n * `ui-view`: A viewport directive which is filled in by a view from the active state.\n *\n * ### Attributes\n *\n * - `name`: (Optional) A view name.\n *   The name should be unique amongst the other views in the same state.\n *   You can have views of the same name that live in different states.\n *   The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).\n *\n * - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.\n *   Uses [[$uiViewScroll]] to do the scrolling.\n *\n * - `onload`: Expression to evaluate whenever the view updates.\n *\n * #### Example:\n * A view can be unnamed or named.\n * ```html\n * <!-- Unnamed -->\n * <div ui-view></div>\n *\n * <!-- Named -->\n * <div ui-view=\"viewName\"></div>\n *\n * <!-- Named (different style) -->\n * <ui-view name=\"viewName\"></ui-view>\n * ```\n *\n * You can only have one unnamed view within any template (or root html). If you are only using a\n * single view and it is unnamed then you can populate it like so:\n *\n * ```html\n * <div ui-view></div>\n * $stateProvider.state(\"home\", {\n *   template: \"<h1>HELLO!</h1>\"\n * })\n * ```\n *\n * The above is a convenient shortcut equivalent to specifying your view explicitly with the\n * [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:\n *\n * ```js\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"<h1>HELLO!</h1>\"\n *     }\n *   }\n * })\n * ```\n *\n * But typically you'll only use the views property if you name your view or have more than one view\n * in the same template. There's not really a compelling reason to name a view if its the only one,\n * but you could if you wanted, like so:\n *\n * ```html\n * <div ui-view=\"main\"></div>\n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"main\": {\n *       template: \"<h1>HELLO!</h1>\"\n *     }\n *   }\n * })\n * ```\n *\n * Really though, you'll use views to set up multiple views:\n *\n * ```html\n * <div ui-view></div>\n * <div ui-view=\"chart\"></div>\n * <div ui-view=\"data\"></div>\n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"<h1>HELLO!</h1>\"\n *     },\n *     \"chart\": {\n *       template: \"<chart_thing/>\"\n *     },\n *     \"data\": {\n *       template: \"<data_thing/>\"\n *     }\n *   }\n * })\n * ```\n *\n * #### Examples for `autoscroll`:\n * ```html\n * <!-- If autoscroll present with no expression,\n *      then scroll ui-view into view -->\n * <ui-view autoscroll/>\n *\n * <!-- If autoscroll present with valid expression,\n *      then scroll ui-view into view if expression evaluates to true -->\n * <ui-view autoscroll='true'/>\n * <ui-view autoscroll='false'/>\n * <ui-view autoscroll='scopeVariable'/>\n * ```\n *\n * Resolve data:\n *\n * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n * can be customized using [[Ng1ViewDeclaration.resolveAs]]).  This can be then accessed from the template.\n *\n * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n * controller is instantiated.  The `$onInit()` hook can be used to perform initialization code which\n * depends on `$resolve` data.\n *\n * #### Example:\n * ```js\n * $stateProvider.state('home', {\n *   template: '<my-component user=\"$resolve.user\"></my-component>',\n *   resolve: {\n *     user: function(UserService) { return UserService.fetchUser(); }\n *   }\n * });\n * ```\n */\nvar uiView;\nuiView = ['$view', '$animate', '$uiViewScroll', '$interpolate', '$q',\n    function $ViewDirective($view, $animate, $uiViewScroll, $interpolate, $q) {\n        function getRenderer(attrs, scope) {\n            return {\n                enter: function (element, target, cb) {\n                    if (ng.version.minor > 2) {\n                        $animate.enter(element, null, target).then(cb);\n                    }\n                    else {\n                        $animate.enter(element, null, target, cb);\n                    }\n                },\n                leave: function (element, cb) {\n                    if (ng.version.minor > 2) {\n                        $animate.leave(element).then(cb);\n                    }\n                    else {\n                        $animate.leave(element, cb);\n                    }\n                },\n            };\n        }\n        function configsEqual(config1, config2) {\n            return config1 === config2;\n        }\n        var rootData = {\n            $cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },\n            $uiView: {},\n        };\n        var directive = {\n            count: 0,\n            restrict: 'ECA',\n            terminal: true,\n            priority: 400,\n            transclude: 'element',\n            compile: function (tElement, tAttrs, $transclude) {\n                return function (scope, $element, attrs) {\n                    var onloadExp = attrs['onload'] || '', autoScrollExp = attrs['autoscroll'], renderer = getRenderer(attrs, scope), inherited = $element.inheritedData('$uiView') || rootData, name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';\n                    var previousEl, currentEl, currentScope, viewConfig, unregister;\n                    var activeUIView = {\n                        $type: 'ng1',\n                        id: directive.count++,\n                        name: name,\n                        fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name,\n                        config: null,\n                        configUpdated: configUpdatedCallback,\n                        get creationContext() {\n                            var fromParentTagConfig = core.parse('$cfg.viewDecl.$context')(inherited);\n                            // Allow <ui-view name=\"foo\"><ui-view name=\"bar\"></ui-view></ui-view>\n                            // See https://github.com/angular-ui/ui-router/issues/3355\n                            var fromParentTag = core.parse('$uiView.creationContext')(inherited);\n                            return fromParentTagConfig || fromParentTag;\n                        },\n                    };\n                    core.trace.traceUIViewEvent('Linking', activeUIView);\n                    function configUpdatedCallback(config) {\n                        if (config && !(config instanceof Ng1ViewConfig))\n                            return;\n                        if (configsEqual(viewConfig, config))\n                            return;\n                        core.trace.traceUIViewConfigUpdated(activeUIView, config && config.viewDecl && config.viewDecl.$context);\n                        viewConfig = config;\n                        updateView(config);\n                    }\n                    $element.data('$uiView', { $uiView: activeUIView });\n                    updateView();\n                    unregister = $view.registerUIView(activeUIView);\n                    scope.$on('$destroy', function () {\n                        core.trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);\n                        unregister();\n                    });\n                    function cleanupLastView() {\n                        if (previousEl) {\n                            core.trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));\n                            previousEl.remove();\n                            previousEl = null;\n                        }\n                        if (currentScope) {\n                            core.trace.traceUIViewEvent('Destroying scope', activeUIView);\n                            currentScope.$destroy();\n                            currentScope = null;\n                        }\n                        if (currentEl) {\n                            var _viewData_1 = currentEl.data('$uiViewAnim');\n                            core.trace.traceUIViewEvent('Animate out', _viewData_1);\n                            renderer.leave(currentEl, function () {\n                                _viewData_1.$$animLeave.resolve();\n                                previousEl = null;\n                            });\n                            previousEl = currentEl;\n                            currentEl = null;\n                        }\n                    }\n                    function updateView(config) {\n                        var newScope = scope.$new();\n                        var animEnter = $q.defer(), animLeave = $q.defer();\n                        var $uiViewData = {\n                            $cfg: config,\n                            $uiView: activeUIView,\n                        };\n                        var $uiViewAnim = {\n                            $animEnter: animEnter.promise,\n                            $animLeave: animLeave.promise,\n                            $$animLeave: animLeave,\n                        };\n                        /**\n                         * @ngdoc event\n                         * @name ui.router.state.directive:ui-view#$viewContentLoading\n                         * @eventOf ui.router.state.directive:ui-view\n                         * @eventType emits on ui-view directive scope\n                         * @description\n                         *\n                         * Fired once the view **begins loading**, *before* the DOM is rendered.\n                         *\n                         * @param {Object} event Event object.\n                         * @param {string} viewName Name of the view.\n                         */\n                        newScope.$emit('$viewContentLoading', name);\n                        var cloned = $transclude(newScope, function (clone) {\n                            clone.data('$uiViewAnim', $uiViewAnim);\n                            clone.data('$uiView', $uiViewData);\n                            renderer.enter(clone, $element, function onUIViewEnter() {\n                                animEnter.resolve();\n                                if (currentScope)\n                                    currentScope.$emit('$viewContentAnimationEnded');\n                                if (core.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n                                    $uiViewScroll(clone);\n                                }\n                            });\n                            cleanupLastView();\n                        });\n                        currentEl = cloned;\n                        currentScope = newScope;\n                        /**\n                         * @ngdoc event\n                         * @name ui.router.state.directive:ui-view#$viewContentLoaded\n                         * @eventOf ui.router.state.directive:ui-view\n                         * @eventType emits on ui-view directive scope\n                         * @description           *\n                         * Fired once the view is **loaded**, *after* the DOM is rendered.\n                         *\n                         * @param {Object} event Event object.\n                         */\n                        currentScope.$emit('$viewContentLoaded', config || viewConfig);\n                        currentScope.$eval(onloadExp);\n                    }\n                };\n            },\n        };\n        return directive;\n    }];\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$transitions', '$view', '$q', '$timeout'];\n/** @hidden */\nfunction $ViewDirectiveFill($compile, $controller, $transitions, $view, $q, $timeout) {\n    var getControllerAs = core.parse('viewDecl.controllerAs');\n    var getResolveAs = core.parse('viewDecl.resolveAs');\n    return {\n        restrict: 'ECA',\n        priority: -400,\n        compile: function (tElement) {\n            var initial = tElement.html();\n            tElement.empty();\n            return function (scope, $element) {\n                var data = $element.data('$uiView');\n                if (!data) {\n                    $element.html(initial);\n                    $compile($element.contents())(scope);\n                    return;\n                }\n                var cfg = data.$cfg || { viewDecl: {}, getTemplate: core.noop };\n                var resolveCtx = cfg.path && new core.ResolveContext(cfg.path);\n                $element.html(cfg.getTemplate($element, resolveCtx) || initial);\n                core.trace.traceUIViewFill(data.$uiView, $element.html());\n                var link = $compile($element.contents());\n                var controller = cfg.controller;\n                var controllerAs = getControllerAs(cfg);\n                var resolveAs = getResolveAs(cfg);\n                var locals = resolveCtx && getLocals(resolveCtx);\n                scope[resolveAs] = locals;\n                if (controller) {\n                    var controllerInstance = $controller(controller, core.extend({}, locals, { $scope: scope, $element: $element }));\n                    if (controllerAs) {\n                        scope[controllerAs] = controllerInstance;\n                        scope[controllerAs][resolveAs] = locals;\n                    }\n                    // TODO: Use $view service as a central point for registering component-level hooks\n                    // Then, when a component is created, tell the $view service, so it can invoke hooks\n                    // $view.componentLoaded(controllerInstance, { $scope: scope, $element: $element });\n                    // scope.$on('$destroy', () => $view.componentUnloaded(controllerInstance, { $scope: scope, $element: $element }));\n                    $element.data('$ngControllerController', controllerInstance);\n                    $element.children().data('$ngControllerController', controllerInstance);\n                    registerControllerCallbacks($q, $transitions, controllerInstance, scope, cfg);\n                }\n                // Wait for the component to appear in the DOM\n                if (core.isString(cfg.viewDecl.component)) {\n                    var cmp_1 = cfg.viewDecl.component;\n                    var kebobName = core.kebobString(cmp_1);\n                    var tagRegexp_1 = new RegExp(\"^(x-|data-)?\" + kebobName + \"$\", 'i');\n                    var getComponentController = function () {\n                        var directiveEl = [].slice.call($element[0].children)\n                            .filter(function (el) { return el && el.tagName && tagRegexp_1.exec(el.tagName); });\n                        return directiveEl && ng.element(directiveEl).data(\"$\" + cmp_1 + \"Controller\");\n                    };\n                    var deregisterWatch_1 = scope.$watch(getComponentController, function (ctrlInstance) {\n                        if (!ctrlInstance)\n                            return;\n                        registerControllerCallbacks($q, $transitions, ctrlInstance, scope, cfg);\n                        deregisterWatch_1();\n                    });\n                }\n                link(scope);\n            };\n        },\n    };\n}\n/** @hidden */\nvar hasComponentImpl = typeof ng.module('ui.router')['component'] === 'function';\n/** @hidden incrementing id */\nvar _uiCanExitId = 0;\n/** @hidden TODO: move these callbacks to $view and/or `/hooks/components.ts` or something */\nfunction registerControllerCallbacks($q, $transitions, controllerInstance, $scope, cfg) {\n    // Call $onInit() ASAP\n    if (core.isFunction(controllerInstance.$onInit) && !(cfg.viewDecl.component && hasComponentImpl)) {\n        controllerInstance.$onInit();\n    }\n    var viewState = core.tail(cfg.path).state.self;\n    var hookOptions = { bind: controllerInstance };\n    // Add component-level hook for onParamsChange\n    if (core.isFunction(controllerInstance.uiOnParamsChanged)) {\n        var resolveContext = new core.ResolveContext(cfg.path);\n        var viewCreationTrans_1 = resolveContext.getResolvable('$transition$').data;\n        // Fire callback on any successful transition\n        var paramsUpdated = function ($transition$) {\n            // Exit early if the $transition$ is the same as the view was created within.\n            // Exit early if the $transition$ will exit the state the view is for.\n            if ($transition$ === viewCreationTrans_1 || $transition$.exiting().indexOf(viewState) !== -1)\n                return;\n            var toParams = $transition$.params('to');\n            var fromParams = $transition$.params('from');\n            var toSchema = $transition$.treeChanges().to.map(function (node) { return node.paramSchema; }).reduce(core.unnestR, []);\n            var fromSchema = $transition$.treeChanges().from.map(function (node) { return node.paramSchema; }).reduce(core.unnestR, []);\n            // Find the to params that have different values than the from params\n            var changedToParams = toSchema.filter(function (param) {\n                var idx = fromSchema.indexOf(param);\n                return idx === -1 || !fromSchema[idx].type.equals(toParams[param.id], fromParams[param.id]);\n            });\n            // Only trigger callback if a to param has changed or is new\n            if (changedToParams.length) {\n                var changedKeys_1 = changedToParams.map(function (x) { return x.id; });\n                // Filter the params to only changed/new to params.  `$transition$.params()` may be used to get all params.\n                var newValues = core.filter(toParams, function (val, key) { return changedKeys_1.indexOf(key) !== -1; });\n                controllerInstance.uiOnParamsChanged(newValues, $transition$);\n            }\n        };\n        $scope.$on('$destroy', $transitions.onSuccess({}, paramsUpdated, hookOptions));\n    }\n    // Add component-level hook for uiCanExit\n    if (core.isFunction(controllerInstance.uiCanExit)) {\n        var id_1 = _uiCanExitId++;\n        var cacheProp_1 = '_uiCanExitIds';\n        // Returns true if a redirect transition already answered truthy\n        var prevTruthyAnswer_1 = function (trans) {\n            return !!trans && (trans[cacheProp_1] && trans[cacheProp_1][id_1] === true || prevTruthyAnswer_1(trans.redirectedFrom()));\n        };\n        // If a user answered yes, but the transition was later redirected, don't also ask for the new redirect transition\n        var wrappedHook = function (trans) {\n            var promise;\n            var ids = trans[cacheProp_1] = trans[cacheProp_1] || {};\n            if (!prevTruthyAnswer_1(trans)) {\n                promise = $q.when(controllerInstance.uiCanExit(trans));\n                promise.then(function (val) { return ids[id_1] = (val !== false); });\n            }\n            return promise;\n        };\n        var criteria = { exiting: viewState.name };\n        $scope.$on('$destroy', $transitions.onBefore(criteria, wrappedHook, hookOptions));\n    }\n}\nng.module('ui.router.state').directive('uiView', uiView);\nng.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n\n/** @module ng1 */ /** */\n/** @hidden */\nfunction $ViewScrollProvider() {\n    var useAnchorScroll = false;\n    this.useAnchorScroll = function () {\n        useAnchorScroll = true;\n    };\n    this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {\n            if (useAnchorScroll) {\n                return $anchorScroll;\n            }\n            return function ($element) {\n                return $timeout(function () {\n                    $element[0].scrollIntoView();\n                }, 0, false);\n            };\n        }];\n}\nng.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n\n/**\n * Main entry point for angular 1.x build\n * @module ng1\n */ /** */\nvar index = 'ui.router';\n\nObject.keys(core).forEach(function (key) { exports[key] = core[key]; });\nexports.core = core;\nexports.default = index;\nexports.watchDigests = watchDigests;\nexports.getLocals = getLocals;\nexports.getNg1ViewConfigFactory = getNg1ViewConfigFactory;\nexports.ng1ViewsBuilder = ng1ViewsBuilder;\nexports.Ng1ViewConfig = Ng1ViewConfig;\nexports.StateProvider = StateProvider;\nexports.UrlRouterProvider = UrlRouterProvider;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=ui-router-angularjs.js.map\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\n/* Code from github.com/erikras/redux-form by Erik Rasmussen */\nvar getIn = function getIn(state, path) {\n  if (!state) {\n    return state;\n  }\n\n  var length = path.length;\n\n  if (!length) {\n    return undefined;\n  }\n\n  var result = state;\n\n  for (var i = 0; i < length && !!result; ++i) {\n    result = result[path[i]];\n  }\n\n  return result;\n};\n\nvar _default = getIn;\nexports[\"default\"] = _default;","'use strict';\n\nexports.__esModule = true;\n\nvar _wrap2 = require('./wrap');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LatLng = function () {\n  function LatLng(lat, lng) {\n    _classCallCheck(this, LatLng);\n\n    if (isNaN(lat) || isNaN(lng)) {\n      throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\n    }\n    this.lat = +lat;\n    this.lng = +lng;\n  }\n\n  LatLng.prototype.wrap = function wrap() {\n    return new LatLng(this.lat, (0, _wrap2.wrap)(this.lng, -180, 180));\n  };\n\n  return LatLng;\n}();\n\nLatLng.convert = function (a) {\n  if (a instanceof LatLng) {\n    return a;\n  }\n\n  if (Array.isArray(a)) {\n    return new LatLng(a[0], a[1]);\n  }\n\n  if ('lng' in a && 'lat' in a) {\n    return new LatLng(a.lat, a.lng);\n  }\n\n  return a;\n};\n\nexports.default = LatLng;","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","try{self[\"workbox:window:7.2.0\"]&&_()}catch(n){}function n(n,t){return new Promise((function(r){var e=new MessageChannel;e.port1.onmessage=function(n){r(n.data)},n.postMessage(t,[e.port2])}))}function t(n){var t=function(n,t){if(\"object\"!=typeof n||!n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var e=r.call(n,t||\"default\");if(\"object\"!=typeof e)return e;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(n)}(n,\"string\");return\"symbol\"==typeof t?t:t+\"\"}function r(n,r){for(var e=0;e<r.length;e++){var i=r[e];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(n,t(i.key),i)}}function e(n,t){return e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,t){return n.__proto__=t,n},e(n,t)}function i(n,t){(null==t||t>n.length)&&(t=n.length);for(var r=0,e=new Array(t);r<t;r++)e[r]=n[r];return e}function o(n,t){var r=\"undefined\"!=typeof Symbol&&n[Symbol.iterator]||n[\"@@iterator\"];if(r)return(r=r.call(n)).next.bind(r);if(Array.isArray(n)||(r=function(n,t){if(n){if(\"string\"==typeof n)return i(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);return\"Object\"===r&&n.constructor&&(r=n.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(n):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(n,t):void 0}}(n))||t&&n&&\"number\"==typeof n.length){r&&(n=r);var e=0;return function(){return e>=n.length?{done:!0}:{done:!1,value:n[e++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}try{self[\"workbox:core:7.2.0\"]&&_()}catch(n){}var u=function(){var n=this;this.promise=new Promise((function(t,r){n.resolve=t,n.reject=r}))};function a(n,t){var r=location.href;return new URL(n,r).href===new URL(t,r).href}var c=function(n,t){this.type=n,Object.assign(this,t)};function f(n,t,r){return r?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function s(){}var v={type:\"SKIP_WAITING\"};function h(n,t){if(!t)return n&&n.then?n.then(s):Promise.resolve()}var l=function(t){function i(n,r){var e,i;return void 0===r&&(r={}),(e=t.call(this)||this).nn={},e.tn=0,e.rn=new u,e.en=new u,e.on=new u,e.un=0,e.an=new Set,e.cn=function(){var n=e.fn,t=n.installing;e.tn>0||!a(t.scriptURL,e.sn.toString())||performance.now()>e.un+6e4?(e.vn=t,n.removeEventListener(\"updatefound\",e.cn)):(e.hn=t,e.an.add(t),e.rn.resolve(t)),++e.tn,t.addEventListener(\"statechange\",e.ln)},e.ln=function(n){var t=e.fn,r=n.target,i=r.state,o=r===e.vn,u={sw:r,isExternal:o,originalEvent:n};!o&&e.mn&&(u.isUpdate=!0),e.dispatchEvent(new c(i,u)),\"installed\"===i?e.wn=self.setTimeout((function(){\"installed\"===i&&t.waiting===r&&e.dispatchEvent(new c(\"waiting\",u))}),200):\"activating\"===i&&(clearTimeout(e.wn),o||e.en.resolve(r))},e.yn=function(n){var t=e.hn,r=t!==navigator.serviceWorker.controller;e.dispatchEvent(new c(\"controlling\",{isExternal:r,originalEvent:n,sw:t,isUpdate:e.mn})),r||e.on.resolve(t)},e.gn=(i=function(n){var t=n.data,r=n.ports,i=n.source;return f(e.getSW(),(function(){e.an.has(i)&&e.dispatchEvent(new c(\"message\",{data:t,originalEvent:n,ports:r,sw:i}))}))},function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];try{return Promise.resolve(i.apply(this,n))}catch(n){return Promise.reject(n)}}),e.sn=n,e.nn=r,navigator.serviceWorker.addEventListener(\"message\",e.gn),e}var o,s;s=t,(o=i).prototype=Object.create(s.prototype),o.prototype.constructor=o,e(o,s);var l,m,w,y=i.prototype;return y.register=function(n){var t=(void 0===n?{}:n).immediate,r=void 0!==t&&t;try{var e=this;return f(function(n,t){var r=n();if(r&&r.then)return r.then(t);return t(r)}((function(){if(!r&&\"complete\"!==document.readyState)return h(new Promise((function(n){return window.addEventListener(\"load\",n)})))}),(function(){return e.mn=Boolean(navigator.serviceWorker.controller),e.dn=e.pn(),f(e.bn(),(function(n){e.fn=n,e.dn&&(e.hn=e.dn,e.en.resolve(e.dn),e.on.resolve(e.dn),e.dn.addEventListener(\"statechange\",e.ln,{once:!0}));var t=e.fn.waiting;return t&&a(t.scriptURL,e.sn.toString())&&(e.hn=t,Promise.resolve().then((function(){e.dispatchEvent(new c(\"waiting\",{sw:t,wasWaitingBeforeRegister:!0}))})).then((function(){}))),e.hn&&(e.rn.resolve(e.hn),e.an.add(e.hn)),e.fn.addEventListener(\"updatefound\",e.cn),navigator.serviceWorker.addEventListener(\"controllerchange\",e.yn),e.fn}))})))}catch(n){return Promise.reject(n)}},y.update=function(){try{return this.fn?f(h(this.fn.update())):f()}catch(n){return Promise.reject(n)}},y.getSW=function(){return void 0!==this.hn?Promise.resolve(this.hn):this.rn.promise},y.messageSW=function(t){try{return f(this.getSW(),(function(r){return n(r,t)}))}catch(n){return Promise.reject(n)}},y.messageSkipWaiting=function(){this.fn&&this.fn.waiting&&n(this.fn.waiting,v)},y.pn=function(){var n=navigator.serviceWorker.controller;return n&&a(n.scriptURL,this.sn.toString())?n:void 0},y.bn=function(){try{var n=this;return f(function(n,t){try{var r=n()}catch(n){return t(n)}if(r&&r.then)return r.then(void 0,t);return r}((function(){return f(navigator.serviceWorker.register(n.sn,n.nn),(function(t){return n.un=performance.now(),t}))}),(function(n){throw n})))}catch(n){return Promise.reject(n)}},l=i,(m=[{key:\"active\",get:function(){return this.en.promise}},{key:\"controlling\",get:function(){return this.on.promise}}])&&r(l.prototype,m),w&&r(l,w),Object.defineProperty(l,\"prototype\",{writable:!1}),l}(function(){function n(){this.Pn=new Map}var t=n.prototype;return t.addEventListener=function(n,t){this.jn(n).add(t)},t.removeEventListener=function(n,t){this.jn(n).delete(t)},t.dispatchEvent=function(n){n.target=this;for(var t,r=o(this.jn(n.type));!(t=r()).done;){(0,t.value)(n)}},t.jn=function(n){return this.Pn.has(n)||this.Pn.set(n,new Set),this.Pn.get(n)},n}());export{l as Workbox,c as WorkboxEvent,n as messageSW};\n//# sourceMappingURL=workbox-window.prod.es5.mjs.map\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./stateBuilder\"));\n__export(require(\"./stateObject\"));\n__export(require(\"./stateMatcher\"));\n__export(require(\"./stateQueueManager\"));\n__export(require(\"./stateRegistry\"));\n__export(require(\"./stateService\"));\n__export(require(\"./targetState\"));\n//# sourceMappingURL=index.js.map","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n              ? format[key][0]\n              : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module resolve */ /** for typedoc */\n__export(require(\"./interface\"));\n__export(require(\"./resolvable\"));\n__export(require(\"./resolveContext\"));\n//# sourceMappingURL=index.js.map","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n  replaceAll: function replaceAll(searchValue, replaceValue) {\n    var O = requireObjectCoercible(this);\n    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, position, replacement;\n    var endOfLastMatch = 0;\n    var result = '';\n    if (isObject(searchValue)) {\n      IS_REG_EXP = isRegExp(searchValue);\n      if (IS_REG_EXP) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n        if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');\n      }\n      replacer = getMethod(searchValue, REPLACE);\n      if (replacer) return call(replacer, searchValue, O, replaceValue);\n      if (IS_PURE && IS_REG_EXP) return replace(toString(O), searchValue, replaceValue);\n    }\n    string = toString(O);\n    searchString = toString(searchValue);\n    functionalReplace = isCallable(replaceValue);\n    if (!functionalReplace) replaceValue = toString(replaceValue);\n    searchLength = searchString.length;\n    advanceBy = max(1, searchLength);\n    position = indexOf(string, searchString);\n    while (position !== -1) {\n      replacement = functionalReplace\n        ? toString(replaceValue(searchString, position, string))\n        : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n      result += stringSlice(string, endOfLastMatch, position) + replacement;\n      endOfLastMatch = position + searchLength;\n      position = position + advanceBy > string.length ? -1 : indexOf(string, searchString, position + advanceBy);\n    }\n    if (endOfLastMatch < string.length) {\n      result += stringSlice(string, endOfLastMatch);\n    }\n    return result;\n  }\n});\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar defaultCreateCancelableRoomSignalingPromise = require('./cancelableroomsignalingpromise');\nvar LocalParticipantV2 = require('./localparticipant');\nvar Signaling = require('../');\n/**\n * {@link SignalingV2} implements version 2 of our signaling protocol.\n * @extends Signaling\n */\nvar SignalingV2 = /** @class */ (function (_super) {\n    __extends(SignalingV2, _super);\n    /**\n     * Construct {@link SignalingV2}.\n     * @param {string} wsServer\n     * @param {?object} [options={}]\n     */\n    function SignalingV2(wsServer, options) {\n        var _this = this;\n        /* eslint new-cap:0 */\n        options = Object.assign({\n            createCancelableRoomSignalingPromise: defaultCreateCancelableRoomSignalingPromise\n        }, options);\n        _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _createCancelableRoomSignalingPromise: {\n                value: options.createCancelableRoomSignalingPromise\n            },\n            _options: {\n                value: options\n            },\n            _wsServer: {\n                value: wsServer\n            }\n        });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    SignalingV2.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        options = Object.assign({}, this._options, options);\n        return this._createCancelableRoomSignalingPromise.bind(null, token, this._wsServer, localParticipant, encodingParameters, preferredCodecs, options);\n    };\n    SignalingV2.prototype.createLocalParticipantSignaling = function (encodingParameters, networkQualityConfiguration) {\n        return new LocalParticipantV2(encodingParameters, networkQualityConfiguration);\n    };\n    return SignalingV2;\n}(Signaling));\nmodule.exports = SignalingV2;\n//# sourceMappingURL=index.js.map","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar $groupToMap = require('../internals/array-group-to-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Array.prototype.groupToMap` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Array', proto: true, forced: IS_PURE }, {\n  groupToMap: $groupToMap\n});\n\naddToUnscopables('groupToMap');\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject'),\n    last = require('./last');\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n  var comparator = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  if (comparator) {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, undefined, comparator)\n    : [];\n});\n\nmodule.exports = intersectionWith;\n","import Ajv from 'ajv';\nimport isObject from 'lodash-es/isObject.js';\nexport const AJV_CONFIG = {\n    errorDataPath: 'property',\n    allErrors: true,\n    multipleOfPrecision: 8,\n    schemaId: 'auto',\n    unknownFormats: 'ignore',\n};\nexport const COLOR_FORMAT_REGEX = /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/;\nexport const DATA_URL_FORMAT_REGEX = /^data:([a-z]+\\/[a-z0-9-+.]+)?;(?:name=(.*);)?base64,(.*)$/;\n/** Creates an Ajv version 6 implementation object with standard support for the 'color` and `data-url` custom formats.\n * If `additionalMetaSchemas` are provided then the Ajv instance is modified to add each of the meta schemas in the\n * list. If `customFormats` are provided then those additional formats are added to the list of supported formats. If\n * `ajvOptionsOverrides` are provided then they are spread on top of the default `AJV_CONFIG` options when constructing\n * the `Ajv` instance.\n *\n * @param [additionalMetaSchemas] - The list of additional meta schemas that the validator can access\n * @param [customFormats] - The set of additional custom formats that the validator will support\n * @param [ajvOptionsOverrides={}] - The set of validator config override options\n * @deprecated in favor of the `@rjsf/validator-ajv8\n */\nexport default function createAjvInstance(additionalMetaSchemas, customFormats, ajvOptionsOverrides = {}) {\n    const ajv = new Ajv({ ...AJV_CONFIG, ...ajvOptionsOverrides });\n    // add custom formats\n    ajv.addFormat('data-url', DATA_URL_FORMAT_REGEX);\n    ajv.addFormat('color', COLOR_FORMAT_REGEX);\n    // add more schemas to validate against\n    if (Array.isArray(additionalMetaSchemas)) {\n        ajv.addMetaSchema(additionalMetaSchemas);\n    }\n    // add more custom formats to validate against\n    if (isObject(customFormats)) {\n        Object.keys(customFormats).forEach((formatName) => {\n            ajv.addFormat(formatName, customFormats[formatName]);\n        });\n    }\n    return ajv;\n}\n//# sourceMappingURL=createAjvInstance.js.map","import { createErrorHandler, deepEquals, getDefaultFormState, ROOT_SCHEMA_PREFIX, toErrorList, toErrorSchema, unwrapErrorHandler, validationDataMerge, withIdRefPrefix, } from '@rjsf/utils';\nimport createAjvInstance from './createAjvInstance.js';\n/** `ValidatorType` implementation that uses the AJV 6 validation mechanism.\n *\n * @deprecated in favor of the `@rjsf/validator-ajv8\n */\nexport default class AJV6Validator {\n    /** Constructs an `AJV6Validator` instance using the `options`\n     *\n     * @param options - The `CustomValidatorOptionsType` options that are used to create the AJV instance\n     */\n    constructor(options) {\n        const { additionalMetaSchemas, customFormats, ajvOptionsOverrides } = options;\n        this.ajv = createAjvInstance(additionalMetaSchemas, customFormats, ajvOptionsOverrides);\n    }\n    /** Converts an `errorSchema` into a list of `RJSFValidationErrors`\n     *\n     * @param errorSchema - The `ErrorSchema` instance to convert\n     * @param [fieldPath=[]] - The current field path, defaults to [] if not specified\n     * @deprecated - Use the `toErrorList()` function provided by `@rjsf/utils` instead. This function will be removed in\n     *        the next major release.\n     */\n    toErrorList(errorSchema, fieldPath = []) {\n        return toErrorList(errorSchema, fieldPath);\n    }\n    /** Transforming the error output from ajv to format used by @rjsf/utils.\n     * At some point, components should be updated to support ajv.\n     *\n     * @param errors - The list of AJV errors to convert to `RJSFValidationErrors`\n     * @private\n     */\n    transformRJSFValidationErrors(errors = []) {\n        return errors.map((e) => {\n            const { dataPath, keyword, message, params, schemaPath } = e;\n            const property = `${dataPath}`;\n            // put data in expected format\n            return {\n                name: keyword,\n                property,\n                message,\n                params,\n                stack: `${property} ${message}`.trim(),\n                schemaPath,\n            };\n        });\n    }\n    /** Runs the pure validation of the `schema` and `formData` without any of the RJSF functionality. Provided for use\n     * by the playground. Returns the `errors` from the validation\n     *\n     * @param schema - The schema against which to validate the form data   * @param schema\n     * @param formData - The form data to validate\n     */\n    rawValidation(schema, formData) {\n        let validationError = undefined;\n        try {\n            this.ajv.validate(schema, formData);\n        }\n        catch (err) {\n            validationError = err;\n        }\n        const errors = this.ajv.errors || undefined;\n        // Clear errors to prevent persistent errors, see #1104\n        this.ajv.errors = null;\n        return { errors: errors, validationError };\n    }\n    /** This function processes the `formData` with an optional user contributed `customValidate` function, which receives\n     * the form data and a `errorHandler` function that will be used to add custom validation errors for each field. Also\n     * supports a `transformErrors` function that will take the raw AJV validation errors, prior to custom validation and\n     * transform them in what ever way it chooses.\n     *\n     * @param formData - The form data to validate\n     * @param schema - The schema against which to validate the form data\n     * @param [customValidate] - An optional function that is used to perform custom validation\n     * @param [transformErrors] - An optional function that is used to transform errors after AJV validation\n     * @param [uiSchema] - An optional uiSchema that is passed to `transformErrors` and `customValidate`\n     */\n    validateFormData(formData, schema, customValidate, transformErrors, uiSchema) {\n        const rootSchema = schema;\n        const rawErrors = this.rawValidation(schema, formData);\n        const { validationError } = rawErrors;\n        let errors = this.transformRJSFValidationErrors(rawErrors.errors);\n        const noProperMetaSchema = validationError && validationError.message && validationError.message.includes('no schema with key or ref ');\n        if (noProperMetaSchema) {\n            errors = [...errors, { stack: validationError.message }];\n        }\n        if (typeof transformErrors === 'function') {\n            errors = transformErrors(errors, uiSchema);\n        }\n        let errorSchema = toErrorSchema(errors);\n        if (noProperMetaSchema) {\n            errorSchema = {\n                ...errorSchema,\n                ...{\n                    $schema: {\n                        __errors: [validationError.message],\n                    },\n                },\n            };\n        }\n        if (typeof customValidate !== 'function') {\n            return { errors, errorSchema };\n        }\n        // Include form data with undefined values, which is required for custom validation.\n        const newFormData = getDefaultFormState(this, schema, formData, rootSchema, true);\n        const errorHandler = customValidate(newFormData, createErrorHandler(newFormData), uiSchema);\n        const userErrorSchema = unwrapErrorHandler(errorHandler);\n        return validationDataMerge({ errors, errorSchema }, userErrorSchema);\n    }\n    /**\n     * This function checks if a schema needs to be added and if the root schemas don't match it removes the old root schema from the ajv instance and adds the new one.\n     * @param rootSchema - The root schema used to provide $ref resolutions\n     */\n    handleSchemaUpdate(rootSchema) {\n        var _a;\n        const rootSchemaId = ROOT_SCHEMA_PREFIX;\n        // add the rootSchema ROOT_SCHEMA_PREFIX as id.\n        // if schema validator instance doesn't exist, add it.\n        // else 'handleRootSchemaChange' should be called if the root schema changes so we don't have to remove and recompile the schema every run.\n        if (this.ajv.getSchema(ROOT_SCHEMA_PREFIX) === undefined) {\n            this.ajv.addSchema(rootSchema, ROOT_SCHEMA_PREFIX);\n        }\n        else if (!deepEquals(rootSchema, (_a = this.ajv.getSchema(ROOT_SCHEMA_PREFIX)) === null || _a === void 0 ? void 0 : _a.schema)) {\n            this.ajv.removeSchema(rootSchemaId);\n            this.ajv.addSchema(rootSchema, rootSchemaId);\n        }\n    }\n    /** Validates data against a schema, returning true if the data is valid, or\n     * false otherwise. If the schema is invalid, then this function will return\n     * false.\n     *\n     * @param schema - The schema against which to validate the form data   * @param schema\n     * @param formData- - The form data to validate\n     * @param rootSchema - The root schema used to provide $ref resolutions\n     */\n    isValid(schema, formData, rootSchema) {\n        try {\n            this.handleSchemaUpdate(rootSchema);\n            // then rewrite the schema ref's to point to the rootSchema\n            // this accounts for the case where schema have references to models\n            // that lives in the rootSchema but not in the schema in question.\n            const result = this.ajv.validate(withIdRefPrefix(schema), formData);\n            return result;\n        }\n        catch (e) {\n            return false;\n        }\n    }\n}\n//# sourceMappingURL=validator.js.map","import customizeValidator from './customizeValidator.js';\nexport { customizeValidator };\nexport * from './types.js';\n/** @deprecated in favor of the `@rjsf/validator-ajv8\n */\nexport default customizeValidator();\n//# sourceMappingURL=index.js.map","import AJV6Validator from './validator.js';\n/** Creates and returns a customized implementation of the `ValidatorType` with the given customization `options` if\n * provided.\n *\n * @param [options={}] - The `CustomValidatorOptionsType` options that are used to create the `ValidatorType` instance\n * @deprecated in favor of the `@rjsf/validator-ajv8\n */\nexport default function customizeValidator(options = {}) {\n    return new AJV6Validator(options);\n}\n//# sourceMappingURL=customizeValidator.js.map","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $allSchemasEmpty = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if (it.util.schemaHasRules($sch, it.RULES.all)) {\n        $allSchemasEmpty = false;\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    if ($allSchemasEmpty) {\n      out += ' if (true) { ';\n    } else {\n      out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n    }\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  if (it.opts.format === false) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n    return out;\n  }\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $unknownFormats = it.opts.unknownFormats,\n    $allowUnknown = Array.isArray($unknownFormats);\n  if ($isData) {\n    var $format = 'format' + $lvl,\n      $isObject = 'isObject' + $lvl,\n      $formatType = 'formatType' + $lvl;\n    out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n    if (it.async) {\n      out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n    }\n    out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' (';\n    if ($unknownFormats != 'ignore') {\n      out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n      if ($allowUnknown) {\n        out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n      }\n      out += ') || ';\n    }\n    out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n    if (it.async) {\n      out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n    } else {\n      out += ' ' + ($format) + '(' + ($data) + ') ';\n    }\n    out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n  } else {\n    var $format = it.formats[$schema];\n    if (!$format) {\n      if ($unknownFormats == 'ignore') {\n        it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else {\n        throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n      }\n    }\n    var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n    var $formatType = $isObject && $format.type || 'string';\n    if ($isObject) {\n      var $async = $format.async === true;\n      $format = $format.validate;\n    }\n    if ($formatType != $ruleType) {\n      if ($breakOnError) {\n        out += ' if (true) { ';\n      }\n      return out;\n    }\n    if ($async) {\n      if (!it.async) throw new Error('async format in sync schema');\n      var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n      out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n    } else {\n      out += ' if (! ';\n      var $formatRef = 'formats' + it.util.getProperty($schema);\n      if ($isObject) $formatRef += '.validate';\n      if (typeof $format == 'function') {\n        out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n      } else {\n        out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n      }\n      out += ') { ';\n    }\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match format \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","require('./dist/angular-nvd3');\nmodule.exports = 'nvd3';","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $i = 'i' + $lvl,\n    $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ';';\n  if ($isData) {\n    out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n  }\n  out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n  if ($isData) {\n    out += '  }  ';\n  }\n  out += ' if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to one of the allowed values\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = uncurryThis(1.1.toPrecision);\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision(thisNumberValue(this))\n      : nativeToPrecision(thisNumberValue(this), precision);\n  }\n});\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\n// eslint-disable-next-line es/no-nonstandard-error-properties -- safe\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n","'use strict';\n\nexports.__esModule = true;\nvar BASE_URL = 'https://maps';\nvar DEFAULT_URL = BASE_URL + '.googleapis.com';\nvar API_PATH = '/maps/api/js?callback=_$_google_map_initialize_$_';\n\nvar getUrl = function getUrl(region) {\n  if (region && region.toLowerCase() === 'cn') {\n    return BASE_URL + '.google.cn';\n  }\n  return DEFAULT_URL;\n};\n\nvar $script_ = null;\n\nvar loadPromise_ = void 0;\n\nvar resolveCustomPromise_ = void 0;\n\nvar _customPromise = new Promise(function (resolve) {\n  resolveCustomPromise_ = resolve;\n});\n\n// TODO add libraries language and other map options\n\nexports.default = function (bootstrapURLKeys, heatmapLibrary) {\n  if (!$script_) {\n    $script_ = require('scriptjs'); // eslint-disable-line\n  }\n\n  // call from outside google-map-react\n  // will be as soon as loadPromise_ resolved\n  if (!bootstrapURLKeys) {\n    return _customPromise;\n  }\n\n  if (loadPromise_) {\n    return loadPromise_;\n  }\n\n  loadPromise_ = new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined') {\n      reject(new Error('google map cannot be loaded outside browser env'));\n      return;\n    }\n\n    if (window.google && window.google.maps) {\n      resolve(window.google.maps);\n      return;\n    }\n\n    if (typeof window._$_google_map_initialize_$_ !== 'undefined') {\n      reject(new Error('google map initialization error'));\n    }\n\n    window._$_google_map_initialize_$_ = function () {\n      delete window._$_google_map_initialize_$_;\n      resolve(window.google.maps);\n    };\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (Object.keys(bootstrapURLKeys).indexOf('callback') > -1) {\n        var message = '\"callback\" key in bootstrapURLKeys is not allowed,\\n                          use onGoogleApiLoaded property instead';\n        // eslint-disable-next-line no-console\n        console.error(message);\n        throw new Error(message);\n      }\n    }\n\n    var params = Object.keys(bootstrapURLKeys).reduce(function (r, key) {\n      return r + '&' + key + '=' + bootstrapURLKeys[key];\n    }, '');\n\n    var baseUrl = getUrl(bootstrapURLKeys.region);\n    var libraries = heatmapLibrary ? '&libraries=visualization' : '';\n\n    $script_('' + baseUrl + API_PATH + params + libraries, function () {\n      return typeof window.google === 'undefined' && reject(new Error('google map initialization error (not loaded)'));\n    });\n  });\n\n  resolveCustomPromise_(loadPromise_);\n\n  return loadPromise_;\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nvar trace_1 = require(\"../common/trace\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar strings_1 = require(\"../common/strings\");\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar hof_1 = require(\"../common/hof\");\nvar interface_1 = require(\"./interface\"); // has or is using\nvar transitionHook_1 = require(\"./transitionHook\");\nvar hookRegistry_1 = require(\"./hookRegistry\");\nvar hookBuilder_1 = require(\"./hookBuilder\");\nvar pathUtils_1 = require(\"../path/pathUtils\");\nvar param_1 = require(\"../params/param\");\nvar resolvable_1 = require(\"../resolve/resolvable\");\nvar resolveContext_1 = require(\"../resolve/resolveContext\");\n/** @hidden */\nvar stateSelf = hof_1.prop('self');\n/**\n * Represents a transition between two states.\n *\n * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n *\n * This object contains all contextual information about the to/from states, parameters, resolves.\n * It has information about all states being entered and exited as a result of the transition.\n */\nvar Transition = /** @class */ (function () {\n    /**\n     * Creates a new Transition object.\n     *\n     * If the target state is not valid, an error is thrown.\n     *\n     * @internalapi\n     *\n     * @param fromPath The path of [[PathNode]]s from which the transition is leaving.  The last node in the `fromPath`\n     *        encapsulates the \"from state\".\n     * @param targetState The target state and parameters being transitioned to (also, the transition options)\n     * @param router The [[UIRouter]] instance\n     */\n    function Transition(fromPath, targetState, router) {\n        var _this = this;\n        /** @hidden */\n        this._deferred = coreservices_1.services.$q.defer();\n        /**\n         * This promise is resolved or rejected based on the outcome of the Transition.\n         *\n         * When the transition is successful, the promise is resolved\n         * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n         */\n        this.promise = this._deferred.promise;\n        /** @hidden Holds the hook registration functions such as those passed to Transition.onStart() */\n        this._registeredHooks = {};\n        /** @hidden */\n        this._hookBuilder = new hookBuilder_1.HookBuilder(this);\n        /** Checks if this transition is currently active/running. */\n        this.isActive = function () {\n            return _this.router.globals.transition === _this;\n        };\n        this.router = router;\n        this._targetState = targetState;\n        if (!targetState.valid()) {\n            throw new Error(targetState.error());\n        }\n        // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n        this._options = common_1.extend({ current: hof_1.val(this) }, targetState.options());\n        this.$id = router.transitionService._transitionCount++;\n        var toPath = pathUtils_1.PathUtils.buildToPath(fromPath, targetState);\n        this._treeChanges = pathUtils_1.PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n        this.createTransitionHookRegFns();\n        var onCreateHooks = this._hookBuilder.buildHooksForPhase(interface_1.TransitionHookPhase.CREATE);\n        transitionHook_1.TransitionHook.invokeHooks(onCreateHooks, function () { return null; });\n        this.applyViewConfigs(router);\n    }\n    /** @hidden */\n    Transition.prototype.onBefore = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onStart = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onExit = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onRetain = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onEnter = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onFinish = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onSuccess = function (criteria, callback, options) { return; };\n    /** @inheritdoc */\n    Transition.prototype.onError = function (criteria, callback, options) { return; };\n    /** @hidden\n     * Creates the transition-level hook registration functions\n     * (which can then be used to register hooks)\n     */\n    Transition.prototype.createTransitionHookRegFns = function () {\n        var _this = this;\n        this.router.transitionService._pluginapi._getEvents()\n            .filter(function (type) { return type.hookPhase !== interface_1.TransitionHookPhase.CREATE; })\n            .forEach(function (type) { return hookRegistry_1.makeEvent(_this, _this.router.transitionService, type); });\n    };\n    /** @internalapi */\n    Transition.prototype.getHooks = function (hookName) {\n        return this._registeredHooks[hookName];\n    };\n    Transition.prototype.applyViewConfigs = function (router) {\n        var enteringStates = this._treeChanges.entering.map(function (node) { return node.state; });\n        pathUtils_1.PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n    };\n    /**\n     * @internalapi\n     *\n     * @returns the internal from [State] object\n     */\n    Transition.prototype.$from = function () {\n        return common_1.tail(this._treeChanges.from).state;\n    };\n    /**\n     * @internalapi\n     *\n     * @returns the internal to [State] object\n     */\n    Transition.prototype.$to = function () {\n        return common_1.tail(this._treeChanges.to).state;\n    };\n    /**\n     * Returns the \"from state\"\n     *\n     * Returns the state that the transition is coming *from*.\n     *\n     * @returns The state declaration object for the Transition's (\"from state\").\n     */\n    Transition.prototype.from = function () {\n        return this.$from().self;\n    };\n    /**\n     * Returns the \"to state\"\n     *\n     * Returns the state that the transition is going *to*.\n     *\n     * @returns The state declaration object for the Transition's target state (\"to state\").\n     */\n    Transition.prototype.to = function () {\n        return this.$to().self;\n    };\n    /**\n     * Gets the Target State\n     *\n     * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n     *\n     * @returns the [[TargetState]] of this Transition\n     */\n    Transition.prototype.targetState = function () {\n        return this._targetState;\n    };\n    /**\n     * Determines whether two transitions are equivalent.\n     * @deprecated\n     */\n    Transition.prototype.is = function (compare) {\n        if (compare instanceof Transition) {\n            // TODO: Also compare parameters\n            return this.is({ to: compare.$to().name, from: compare.$from().name });\n        }\n        return !((compare.to && !hookRegistry_1.matchState(this.$to(), compare.to)) ||\n            (compare.from && !hookRegistry_1.matchState(this.$from(), compare.from)));\n    };\n    Transition.prototype.params = function (pathname) {\n        if (pathname === void 0) { pathname = 'to'; }\n        return Object.freeze(this._treeChanges[pathname].map(hof_1.prop('paramValues')).reduce(common_1.mergeR, {}));\n    };\n    /**\n     * Creates a [[UIInjector]] Dependency Injector\n     *\n     * Returns a Dependency Injector for the Transition's target state (to state).\n     * The injector provides resolve values which the target state has access to.\n     *\n     * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n     *\n     * #### Example:\n     * ```js\n     * .onEnter({ entering: 'myState' }, trans => {\n     *   var myResolveValue = trans.injector().get('myResolve');\n     *   // Inject a global service from the global/native injector (if it exists)\n     *   var MyService = trans.injector().get('MyService');\n     * })\n     * ```\n     *\n     * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n     * You can use [[UIInjector.getAsync]] to get a promise for the data.\n     * #### Example:\n     * ```js\n     * .onBefore({}, trans => {\n     *   return trans.injector().getAsync('myResolve').then(myResolveValue =>\n     *     return myResolveValue !== 'ABORT';\n     *   });\n     * });\n     * ```\n     *\n     * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n     * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n     * #### Example:\n     * ```js\n     * .onEnter({ to: 'foo.bar' }, trans => {\n     *   // returns result of `foo` state's `myResolve` resolve\n     *   // even though `foo.bar` also has a `myResolve` resolve\n     *   var fooData = trans.injector('foo').get('myResolve');\n     * });\n     * ```\n     *\n     * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n     * The resolve data from the `from` path will be returned.\n     * #### Example:\n     * ```js\n     * .onExit({ exiting: 'foo.bar' }, trans => {\n     *   // Gets the resolve value of `myResolve` from the state being exited\n     *   var fooData = trans.injector(null, 'from').get('myResolve');\n     * });\n     * ```\n     *\n     *\n     * @param state Limits the resolves provided to only the resolves the provided state has access to.\n     * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n     *\n     * @returns a [[UIInjector]]\n     */\n    Transition.prototype.injector = function (state, pathName) {\n        if (pathName === void 0) { pathName = 'to'; }\n        var path = this._treeChanges[pathName];\n        if (state)\n            path = pathUtils_1.PathUtils.subPath(path, function (node) { return node.state === state || node.state.name === state; });\n        return new resolveContext_1.ResolveContext(path).injector();\n    };\n    /**\n     * Gets all available resolve tokens (keys)\n     *\n     * This method can be used in conjunction with [[injector]] to inspect the resolve values\n     * available to the Transition.\n     *\n     * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n     * in the Transition's [[TreeChanges.to]] path.\n     *\n     * #### Example:\n     * This example logs all resolve values\n     * ```js\n     * let tokens = trans.getResolveTokens();\n     * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n     * ```\n     *\n     * #### Example:\n     * This example creates promises for each resolve value.\n     * This triggers fetches of resolves (if any have not yet been fetched).\n     * When all promises have all settled, it logs the resolve values.\n     * ```js\n     * let tokens = trans.getResolveTokens();\n     * let promise = tokens.map(token => trans.injector().getAsync(token));\n     * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n     * ```\n     *\n     * Note: Angular 1 users whould use `$q.all()`\n     *\n     * @param pathname resolve context's path name (e.g., `to` or `from`)\n     *\n     * @returns an array of resolve tokens (keys)\n     */\n    Transition.prototype.getResolveTokens = function (pathname) {\n        if (pathname === void 0) { pathname = 'to'; }\n        return new resolveContext_1.ResolveContext(this._treeChanges[pathname]).getTokens();\n    };\n    /**\n     * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n     *\n     * Allows a transition hook to dynamically add a Resolvable to this Transition.\n     *\n     * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n     *\n     * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n     * If no `state` is provided then the root state is used.\n     * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n     * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n     *\n     * The `state` argument also scopes the resolved data.\n     * The resolved data is available from the injector for that `state` and any children states.\n     *\n     * #### Example:\n     * ```js\n     * transitionService.onBefore({}, transition => {\n     *   transition.addResolvable({\n     *     token: 'myResolve',\n     *     deps: ['MyService'],\n     *     resolveFn: myService => myService.getData()\n     *   });\n     * });\n     * ```\n     *\n     * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n     * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n     */\n    Transition.prototype.addResolvable = function (resolvable, state) {\n        if (state === void 0) { state = ''; }\n        resolvable = hof_1.is(resolvable_1.Resolvable)(resolvable) ? resolvable : new resolvable_1.Resolvable(resolvable);\n        var stateName = (typeof state === 'string') ? state : state.name;\n        var topath = this._treeChanges.to;\n        var targetNode = common_1.find(topath, function (node) { return node.state.name === stateName; });\n        var resolveContext = new resolveContext_1.ResolveContext(topath);\n        resolveContext.addResolvables([resolvable], targetNode.state);\n    };\n    /**\n     * Gets the transition from which this transition was redirected.\n     *\n     * If the current transition is a redirect, this method returns the transition that was redirected.\n     *\n     * #### Example:\n     * ```js\n     * let transitionA = $state.go('A').transition\n     * transitionA.onStart({}, () => $state.target('B'));\n     * $transitions.onSuccess({ to: 'B' }, (trans) => {\n     *   trans.to().name === 'B'; // true\n     *   trans.redirectedFrom() === transitionA; // true\n     * });\n     * ```\n     *\n     * @returns The previous Transition, or null if this Transition is not the result of a redirection\n     */\n    Transition.prototype.redirectedFrom = function () {\n        return this._options.redirectedFrom || null;\n    };\n    /**\n     * Gets the original transition in a redirect chain\n     *\n     * A transition might belong to a long chain of multiple redirects.\n     * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n     *\n     * #### Example:\n     * ```js\n     * // states\n     * registry.register({ name: 'A', redirectTo: 'B' });\n     * registry.register({ name: 'B', redirectTo: 'C' });\n     * registry.register({ name: 'C', redirectTo: 'D' });\n     * registry.register({ name: 'D' });\n     *\n     * let transitionA = $state.go('A').transition\n     *\n     * $transitions.onSuccess({ to: 'D' }, (trans) => {\n     *   trans.to().name === 'D'; // true\n     *   trans.redirectedFrom().to().name === 'C'; // true\n     *   trans.originalTransition() === transitionA; // true\n     *   trans.originalTransition().to().name === 'A'; // true\n     * });\n     * ```\n     *\n     * @returns The original Transition that started a redirect chain\n     */\n    Transition.prototype.originalTransition = function () {\n        var rf = this.redirectedFrom();\n        return (rf && rf.originalTransition()) || this;\n    };\n    /**\n     * Get the transition options\n     *\n     * @returns the options for this Transition.\n     */\n    Transition.prototype.options = function () {\n        return this._options;\n    };\n    /**\n     * Gets the states being entered.\n     *\n     * @returns an array of states that will be entered during this transition.\n     */\n    Transition.prototype.entering = function () {\n        return common_1.map(this._treeChanges.entering, hof_1.prop('state')).map(stateSelf);\n    };\n    /**\n     * Gets the states being exited.\n     *\n     * @returns an array of states that will be exited during this transition.\n     */\n    Transition.prototype.exiting = function () {\n        return common_1.map(this._treeChanges.exiting, hof_1.prop('state')).map(stateSelf).reverse();\n    };\n    /**\n     * Gets the states being retained.\n     *\n     * @returns an array of states that are already entered from a previous Transition, that will not be\n     *    exited during this Transition\n     */\n    Transition.prototype.retained = function () {\n        return common_1.map(this._treeChanges.retained, hof_1.prop('state')).map(stateSelf);\n    };\n    /**\n     * Get the [[ViewConfig]]s associated with this Transition\n     *\n     * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n     * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n     *\n     * @param pathname the name of the path to fetch views for:\n     *   (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n     * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n     *\n     * @returns a list of ViewConfig objects for the given path.\n     */\n    Transition.prototype.views = function (pathname, state) {\n        if (pathname === void 0) { pathname = 'entering'; }\n        var path = this._treeChanges[pathname];\n        path = !state ? path : path.filter(hof_1.propEq('state', state));\n        return path.map(hof_1.prop('views')).filter(common_1.identity).reduce(common_1.unnestR, []);\n    };\n    Transition.prototype.treeChanges = function (pathname) {\n        return pathname ? this._treeChanges[pathname] : this._treeChanges;\n    };\n    /**\n     * Creates a new transition that is a redirection of the current one.\n     *\n     * This transition can be returned from a [[TransitionService]] hook to\n     * redirect a transition to a new state and/or set of parameters.\n     *\n     * @internalapi\n     *\n     * @returns Returns a new [[Transition]] instance.\n     */\n    Transition.prototype.redirect = function (targetState) {\n        var redirects = 1, trans = this;\n        // tslint:disable-next-line:no-conditional-assignment\n        while ((trans = trans.redirectedFrom()) != null) {\n            if (++redirects > 20)\n                throw new Error(\"Too many consecutive Transition redirects (20+)\");\n        }\n        var redirectOpts = { redirectedFrom: this, source: 'redirect' };\n        // If the original transition was caused by URL sync, then use { location: 'replace' }\n        // on the new transition (unless the target state explicitly specifies location: false).\n        // This causes the original url to be replaced with the url for the redirect target\n        // so the original url disappears from the browser history.\n        if (this.options().source === 'url' && targetState.options().location !== false) {\n            redirectOpts.location = 'replace';\n        }\n        var newOptions = common_1.extend({}, this.options(), targetState.options(), redirectOpts);\n        targetState = targetState.withOptions(newOptions, true);\n        var newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n        var originalEnteringNodes = this._treeChanges.entering;\n        var redirectEnteringNodes = newTransition._treeChanges.entering;\n        // --- Re-use resolve data from original transition ---\n        // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n        // (because of the redirect), the resolves fetched by the original transition are still valid in the\n        // redirected transition.\n        //\n        // This allows you to define a redirect on a parent state which depends on an async resolve value.\n        // You can wait for the resolve, then redirect to a child state based on the result.\n        // The redirected transition does not have to re-fetch the resolve.\n        // ---------------------------------------------------------\n        var nodeIsReloading = function (reloadState) { return function (node) {\n            return reloadState && node.state.includes[reloadState.name];\n        }; };\n        // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n        var matchingEnteringNodes = pathUtils_1.PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, pathUtils_1.PathUtils.nonDynamicParams)\n            .filter(hof_1.not(nodeIsReloading(targetState.options().reloadState)));\n        // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n        matchingEnteringNodes.forEach(function (node, idx) {\n            node.resolvables = originalEnteringNodes[idx].resolvables;\n        });\n        return newTransition;\n    };\n    /** @hidden If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n    Transition.prototype._changedParams = function () {\n        var tc = this._treeChanges;\n        /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n        // If user explicitly wants a reload\n        if (this._options.reload)\n            return undefined;\n        // If any states are exiting or entering\n        if (tc.exiting.length || tc.entering.length)\n            return undefined;\n        // If to/from path lengths differ\n        if (tc.to.length !== tc.from.length)\n            return undefined;\n        // If the to/from paths are different\n        var pathsDiffer = common_1.arrayTuples(tc.to, tc.from)\n            .map(function (tuple) { return tuple[0].state !== tuple[1].state; })\n            .reduce(common_1.anyTrueR, false);\n        if (pathsDiffer)\n            return undefined;\n        // Find any parameter values that differ\n        var nodeSchemas = tc.to.map(function (node) { return node.paramSchema; });\n        var _a = [tc.to, tc.from].map(function (path) { return path.map(function (x) { return x.paramValues; }); }), toValues = _a[0], fromValues = _a[1];\n        var tuples = common_1.arrayTuples(nodeSchemas, toValues, fromValues);\n        return tuples.map(function (_a) {\n            var schema = _a[0], toVals = _a[1], fromVals = _a[2];\n            return param_1.Param.changed(schema, toVals, fromVals);\n        }).reduce(common_1.unnestR, []);\n    };\n    /**\n     * Returns true if the transition is dynamic.\n     *\n     * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n     *\n     * @returns true if the Transition is dynamic\n     */\n    Transition.prototype.dynamic = function () {\n        var changes = this._changedParams();\n        return !changes ? false : changes.map(function (x) { return x.dynamic; }).reduce(common_1.anyTrueR, false);\n    };\n    /**\n     * Returns true if the transition is ignored.\n     *\n     * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n     *\n     * @returns true if the Transition is ignored.\n     */\n    Transition.prototype.ignored = function () {\n        return !!this._ignoredReason();\n    };\n    /** @hidden */\n    Transition.prototype._ignoredReason = function () {\n        var pending = this.router.globals.transition;\n        var reloadState = this._options.reloadState;\n        var same = function (pathA, pathB) {\n            if (pathA.length !== pathB.length)\n                return false;\n            var matching = pathUtils_1.PathUtils.matching(pathA, pathB);\n            return pathA.length === matching.filter(function (node) { return !reloadState || !node.state.includes[reloadState.name]; }).length;\n        };\n        var newTC = this.treeChanges();\n        var pendTC = pending && pending.treeChanges();\n        if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting))\n            return 'SameAsPending';\n        if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to))\n            return 'SameAsCurrent';\n    };\n    /**\n     * Runs the transition\n     *\n     * This method is generally called from the [[StateService.transitionTo]]\n     *\n     * @internalapi\n     *\n     * @returns a promise for a successful transition.\n     */\n    Transition.prototype.run = function () {\n        var _this = this;\n        var runAllHooks = transitionHook_1.TransitionHook.runAllHooks;\n        // Gets transition hooks array for the given phase\n        var getHooksFor = function (phase) {\n            return _this._hookBuilder.buildHooksForPhase(phase);\n        };\n        // When the chain is complete, then resolve or reject the deferred\n        var transitionSuccess = function () {\n            trace_1.trace.traceSuccess(_this.$to(), _this);\n            _this.success = true;\n            _this._deferred.resolve(_this.to());\n            runAllHooks(getHooksFor(interface_1.TransitionHookPhase.SUCCESS));\n        };\n        var transitionError = function (reason) {\n            trace_1.trace.traceError(reason, _this);\n            _this.success = false;\n            _this._deferred.reject(reason);\n            _this._error = reason;\n            runAllHooks(getHooksFor(interface_1.TransitionHookPhase.ERROR));\n        };\n        var runTransition = function () {\n            // Wait to build the RUN hook chain until the BEFORE hooks are done\n            // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n            var allRunHooks = getHooksFor(interface_1.TransitionHookPhase.RUN);\n            var done = function () { return coreservices_1.services.$q.when(undefined); };\n            return transitionHook_1.TransitionHook.invokeHooks(allRunHooks, done);\n        };\n        var startTransition = function () {\n            var globals = _this.router.globals;\n            globals.lastStartedTransitionId = _this.$id;\n            globals.transition = _this;\n            globals.transitionHistory.enqueue(_this);\n            trace_1.trace.traceTransitionStart(_this);\n            return coreservices_1.services.$q.when(undefined);\n        };\n        var allBeforeHooks = getHooksFor(interface_1.TransitionHookPhase.BEFORE);\n        transitionHook_1.TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n            .then(runTransition)\n            .then(transitionSuccess, transitionError);\n        return this.promise;\n    };\n    /**\n     * Checks if the Transition is valid\n     *\n     * @returns true if the Transition is valid\n     */\n    Transition.prototype.valid = function () {\n        return !this.error() || this.success !== undefined;\n    };\n    /**\n     * Aborts this transition\n     *\n     * Imperative API to abort a Transition.\n     * This only applies to Transitions that are not yet complete.\n     */\n    Transition.prototype.abort = function () {\n        // Do not set flag if the transition is already complete\n        if (predicates_1.isUndefined(this.success)) {\n            this._aborted = true;\n        }\n    };\n    /**\n     * The Transition error reason.\n     *\n     * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n     * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n     *\n     * @returns an error message explaining why the transition is invalid, or the reason the transition failed.\n     */\n    Transition.prototype.error = function () {\n        var state = this.$to();\n        if (state.self.abstract)\n            return \"Cannot transition to abstract state '\" + state.name + \"'\";\n        var paramDefs = state.parameters(), values = this.params();\n        var invalidParams = paramDefs.filter(function (param) { return !param.validates(values[param.id]); });\n        if (invalidParams.length) {\n            return \"Param values not valid for state '\" + state.name + \"'. Invalid params: [ \" + invalidParams.map(function (param) { return param.id; }).join(', ') + \" ]\";\n        }\n        if (this.success === false)\n            return this._error;\n    };\n    /**\n     * A string representation of the Transition\n     *\n     * @returns A string representation of the Transition\n     */\n    Transition.prototype.toString = function () {\n        var fromStateOrName = this.from();\n        var toStateOrName = this.to();\n        var avoidEmptyHash = function (params) {\n            return (params['#'] !== null && params['#'] !== undefined) ? params : common_1.omit(params, ['#']);\n        };\n        // (X) means the to state is invalid.\n        var id = this.$id, from = predicates_1.isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName, fromParams = strings_1.stringify(avoidEmptyHash(this._treeChanges.from.map(hof_1.prop('paramValues')).reduce(common_1.mergeR, {}))), toValid = this.valid() ? '' : '(X) ', to = predicates_1.isObject(toStateOrName) ? toStateOrName.name : toStateOrName, toParams = strings_1.stringify(avoidEmptyHash(this.params()));\n        return \"Transition#\" + id + \"( '\" + from + \"'\" + fromParams + \" -> \" + toValid + \"'\" + to + \"'\" + toParams + \" )\";\n    };\n    /** @hidden */\n    Transition.diToken = Transition;\n    return Transition;\n}());\nexports.Transition = Transition;\n//# sourceMappingURL=transition.js.map","/* eslint consistent-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\nvar RoomSignaling = require('./room');\nvar StateMachine = require('../statemachine');\n/*\nSignaling States\n----------------\n\n              +---------+\n              |         |\n              | opening |\n         +--->|         |\n         |    +---------+\n    +--------+   |   |   +------+\n    |        |<--+   +-->|      |\n    | closed |<----------| open |\n    |        |<--+   +-->|      |\n    +--------+   |   |   +------+\n              +---------+   |\n              |         |<--+\n              | closing |\n              |         |\n              +---------+\n\n*/\nvar states = {\n    closed: [\n        'opening'\n    ],\n    opening: [\n        'closed',\n        'open'\n    ],\n    open: [\n        'closed',\n        'closing'\n    ],\n    closing: [\n        'closed',\n        'open'\n    ]\n};\n/**\n * @extends StateMachine\n * @property {string} state - one of \"closed\", \"opening\", \"open\", or \"closing\"\n */\nvar Signaling = /** @class */ (function (_super) {\n    __extends(Signaling, _super);\n    /**\n     * Construct {@link Signaling}.\n     */\n    function Signaling() {\n        return _super.call(this, 'closed', states) || this;\n    }\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._close = function (key) {\n        this.transition('closing', key);\n        this.transition('closed', key);\n        return Promise.resolve(this);\n    };\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        localParticipant.connect('PA00000000000000000000000000000000', 'test');\n        var sid = 'RM00000000000000000000000000000000';\n        var promise = Promise.resolve(new RoomSignaling(localParticipant, sid, options));\n        promise.cancel = function cancel() { };\n        return promise;\n    };\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._open = function (key) {\n        this.transition('opening', key);\n        this.transition('open', key);\n        return Promise.resolve(this);\n    };\n    /**\n     * Close the {@link Signaling}.\n     * @returns {Promise<this>}\n     */\n    Signaling.prototype.close = function () {\n        var _this = this;\n        return this.bracket('close', function (key) {\n            switch (_this.state) {\n                case 'closed':\n                    return _this;\n                case 'open':\n                    return _this._close(key);\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\" + _this.state + \"\\\"\");\n            }\n        });\n    };\n    /**\n     * Connect to a {@link RoomSignaling}.\n     * @param {ParticipantSignaling} localParticipant\n     * @param {string} token\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} options\n     * @returns {Promise<function(): CancelablePromise<RoomSignaling>>}\n     */\n    Signaling.prototype.connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        var self = this;\n        return this.bracket('connect', function transition(key) {\n            switch (self.state) {\n                case 'closed':\n                    return self._open(key).then(transition.bind(null, key));\n                case 'open':\n                    // NOTE(mroberts): We don't need to hold the lock in _connect. Instead,\n                    // we just need to ensure the Signaling remains open.\n                    self.releaseLockCompletely(key);\n                    return self._connect(localParticipant, token, encodingParameters, preferredCodecs, options);\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\" + self.state + \"\\\"\");\n            }\n        });\n    };\n    /**\n     * Create a local {@link ParticipantSignaling}.\n     * @returns {ParticipantSignaling}\n     */\n    Signaling.prototype.createLocalParticipantSignaling = function () {\n        return new ParticipantSignaling();\n    };\n    /**\n     * Open the {@link Signaling}.\n     * @returns {Promise<this>}\n     */\n    Signaling.prototype.open = function () {\n        var _this = this;\n        return this.bracket('open', function (key) {\n            switch (_this.state) {\n                case 'closed':\n                    return _this._open(key);\n                case 'open':\n                    return _this;\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\" + _this.state + \"\\\"\");\n            }\n        });\n    };\n    return Signaling;\n}(StateMachine));\nmodule.exports = Signaling;\n//# sourceMappingURL=index.js.map","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    aCallable(callbackfn);\n    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError(REDUCE_EMPTY);\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nexport var LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\nexport var onLocationChanged = function onLocationChanged(location, action) {\n  var isFirstRendering = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return {\n    type: LOCATION_CHANGE,\n    payload: {\n      location: location,\n      action: action,\n      isFirstRendering: isFirstRendering\n    }\n  };\n};\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\n\nexport var CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nvar updateLocation = function updateLocation(method) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return {\n      type: CALL_HISTORY_METHOD,\n      payload: {\n        method: method,\n        args: args\n      }\n    };\n  };\n};\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\n\n\nexport var push = updateLocation('push');\nexport var replace = updateLocation('replace');\nexport var go = updateLocation('go');\nexport var goBack = updateLocation('goBack');\nexport var goForward = updateLocation('goForward');\nexport var routerActions = {\n  push: push,\n  replace: replace,\n  go: go,\n  goBack: goBack,\n  goForward: goForward\n};","'use strict';\nvar parent = require('../../stable/object/assign');\n\nmodule.exports = parent;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","/**\n * @license AngularJS v1.6.6\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *     Any commits to this file should be reviewed with security in mind.  *\n *   Changes to this file can potentially create security vulnerabilities. *\n *          An approval from 2 Core members with history of modifying      *\n *                         this file is required.                          *\n *                                                                         *\n *  Does the change somehow allow for arbitrary javascript to be executed? *\n *    Or allows for someone to change the prototype of built-in objects?   *\n *     Or gives undesired access to variables likes document or window?    *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\nvar bind;\nvar extend;\nvar forEach;\nvar isDefined;\nvar lowercase;\nvar noop;\nvar nodeContains;\nvar htmlParser;\nvar htmlSanitizeWriter;\n\n/**\n * @ngdoc module\n * @name ngSanitize\n * @description\n *\n * # ngSanitize\n *\n * The `ngSanitize` module provides functionality to sanitize HTML.\n *\n *\n * <div doc-module-components=\"ngSanitize\"></div>\n *\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\n */\n\n/**\n * @ngdoc service\n * @name $sanitize\n * @kind function\n *\n * @description\n *   Sanitizes an html string by stripping all potentially dangerous tokens.\n *\n *   The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are\n *   then serialized back to properly escaped html string. This means that no unsafe input can make\n *   it into the returned string.\n *\n *   The whitelist for URL sanitization of attribute values is configured using the functions\n *   `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider\n *   `$compileProvider`}.\n *\n *   The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\n *\n * @param {string} html HTML input.\n * @returns {string} Sanitized HTML.\n *\n * @example\n   <example module=\"sanitizeExample\" deps=\"angular-sanitize.js\" name=\"sanitize-service\">\n   <file name=\"index.html\">\n     <script>\n         angular.module('sanitizeExample', ['ngSanitize'])\n           .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {\n             $scope.snippet =\n               '<p style=\"color:blue\">an html\\n' +\n               '<em onmouseover=\"this.textContent=\\'PWN3D!\\'\">click here</em>\\n' +\n               'snippet</p>';\n             $scope.deliberatelyTrustDangerousSnippet = function() {\n               return $sce.trustAsHtml($scope.snippet);\n             };\n           }]);\n     </script>\n     <div ng-controller=\"ExampleController\">\n        Snippet: <textarea ng-model=\"snippet\" cols=\"60\" rows=\"3\"></textarea>\n       <table>\n         <tr>\n           <td>Directive</td>\n           <td>How</td>\n           <td>Source</td>\n           <td>Rendered</td>\n         </tr>\n         <tr id=\"bind-html-with-sanitize\">\n           <td>ng-bind-html</td>\n           <td>Automatically uses $sanitize</td>\n           <td><pre>&lt;div ng-bind-html=\"snippet\"&gt;<br/>&lt;/div&gt;</pre></td>\n           <td><div ng-bind-html=\"snippet\"></div></td>\n         </tr>\n         <tr id=\"bind-html-with-trust\">\n           <td>ng-bind-html</td>\n           <td>Bypass $sanitize by explicitly trusting the dangerous value</td>\n           <td>\n           <pre>&lt;div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\"&gt;\n&lt;/div&gt;</pre>\n           </td>\n           <td><div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\"></div></td>\n         </tr>\n         <tr id=\"bind-default\">\n           <td>ng-bind</td>\n           <td>Automatically escapes</td>\n           <td><pre>&lt;div ng-bind=\"snippet\"&gt;<br/>&lt;/div&gt;</pre></td>\n           <td><div ng-bind=\"snippet\"></div></td>\n         </tr>\n       </table>\n       </div>\n   </file>\n   <file name=\"protractor.js\" type=\"protractor\">\n     it('should sanitize the html snippet by default', function() {\n       expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n         toBe('<p>an html\\n<em>click here</em>\\nsnippet</p>');\n     });\n\n     it('should inline raw snippet if bound to a trusted value', function() {\n       expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\n         toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\n              \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\n              \"snippet</p>\");\n     });\n\n     it('should escape snippet without any filter', function() {\n       expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\n         toBe(\"&lt;p style=\\\"color:blue\\\"&gt;an html\\n\" +\n              \"&lt;em onmouseover=\\\"this.textContent='PWN3D!'\\\"&gt;click here&lt;/em&gt;\\n\" +\n              \"snippet&lt;/p&gt;\");\n     });\n\n     it('should update', function() {\n       element(by.model('snippet')).clear();\n       element(by.model('snippet')).sendKeys('new <b onclick=\"alert(1)\">text</b>');\n       expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n         toBe('new <b>text</b>');\n       expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\n         'new <b onclick=\"alert(1)\">text</b>');\n       expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\n         \"new &lt;b onclick=\\\"alert(1)\\\"&gt;text&lt;/b&gt;\");\n     });\n   </file>\n   </example>\n */\n\n\n/**\n * @ngdoc provider\n * @name $sanitizeProvider\n * @this\n *\n * @description\n * Creates and configures {@link $sanitize} instance.\n */\nfunction $SanitizeProvider() {\n  var svgEnabled = false;\n\n  this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\n    if (svgEnabled) {\n      extend(validElements, svgElements);\n    }\n    return function(html) {\n      var buf = [];\n      htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\n        return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\n      }));\n      return buf.join('');\n    };\n  }];\n\n\n  /**\n   * @ngdoc method\n   * @name $sanitizeProvider#enableSvg\n   * @kind function\n   *\n   * @description\n   * Enables a subset of svg to be supported by the sanitizer.\n   *\n   * <div class=\"alert alert-warning\">\n   *   <p>By enabling this setting without taking other precautions, you might expose your\n   *   application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\n   *   outside of the containing element and be rendered over other elements on the page (e.g. a login\n   *   link). Such behavior can then result in phishing incidents.</p>\n   *\n   *   <p>To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\n   *   tags within the sanitized content:</p>\n   *\n   *   <br>\n   *\n   *   <pre><code>\n   *   .rootOfTheIncludedContent svg {\n   *     overflow: hidden !important;\n   *   }\n   *   </code></pre>\n   * </div>\n   *\n   * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\n   * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called\n   *    without an argument or self for chaining otherwise.\n   */\n  this.enableSvg = function(enableSvg) {\n    if (isDefined(enableSvg)) {\n      svgEnabled = enableSvg;\n      return this;\n    } else {\n      return svgEnabled;\n    }\n  };\n\n  //////////////////////////////////////////////////////////////////////////////////////////////////\n  // Private stuff\n  //////////////////////////////////////////////////////////////////////////////////////////////////\n\n  bind = angular.bind;\n  extend = angular.extend;\n  forEach = angular.forEach;\n  isDefined = angular.isDefined;\n  lowercase = angular.lowercase;\n  noop = angular.noop;\n\n  htmlParser = htmlParserImpl;\n  htmlSanitizeWriter = htmlSanitizeWriterImpl;\n\n  nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\n    // eslint-disable-next-line no-bitwise\n    return !!(this.compareDocumentPosition(arg) & 16);\n  };\n\n  // Regular Expressions for parsing tags and attributes\n  var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\n    // Match everything outside of normal chars and \" (quote character)\n    NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\n\n\n  // Good source of info about elements and attributes\n  // http://dev.w3.org/html5/spec/Overview.html#semantics\n  // http://simon.html5.org/html-elements\n\n  // Safe Void Elements - HTML5\n  // http://dev.w3.org/html5/spec/Overview.html#void-elements\n  var voidElements = toMap('area,br,col,hr,img,wbr');\n\n  // Elements that you can, intentionally, leave open (and which close themselves)\n  // http://dev.w3.org/html5/spec/Overview.html#optional-tags\n  var optionalEndTagBlockElements = toMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\n      optionalEndTagInlineElements = toMap('rp,rt'),\n      optionalEndTagElements = extend({},\n                                              optionalEndTagInlineElements,\n                                              optionalEndTagBlockElements);\n\n  // Safe Block Elements - HTML5\n  var blockElements = extend({}, optionalEndTagBlockElements, toMap('address,article,' +\n          'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n          'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\n\n  // Inline Elements - HTML5\n  var inlineElements = extend({}, optionalEndTagInlineElements, toMap('a,abbr,acronym,b,' +\n          'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\n          'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\n\n  // SVG Elements\n  // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\n  // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\n  // They can potentially allow for arbitrary javascript to be executed. See #11290\n  var svgElements = toMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\n          'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\n          'radialGradient,rect,stop,svg,switch,text,title,tspan');\n\n  // Blocked Elements (will be stripped)\n  var blockedElements = toMap('script,style');\n\n  var validElements = extend({},\n                                     voidElements,\n                                     blockElements,\n                                     inlineElements,\n                                     optionalEndTagElements);\n\n  //Attributes that have href and hence need to be sanitized\n  var uriAttrs = toMap('background,cite,href,longdesc,src,xlink:href');\n\n  var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\n      'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\n      'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\n      'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\n      'valign,value,vspace,width');\n\n  // SVG attributes (without \"id\" and \"name\" attributes)\n  // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\n  var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\n      'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\n      'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\n      'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\n      'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\n      'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\n      'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\n      'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\n      'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\n      'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\n      'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\n      'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\n      'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\n      'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\n      'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\n\n  var validAttrs = extend({},\n                                  uriAttrs,\n                                  svgAttrs,\n                                  htmlAttrs);\n\n  function toMap(str, lowercaseKeys) {\n    var obj = {}, items = str.split(','), i;\n    for (i = 0; i < items.length; i++) {\n      obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\n    }\n    return obj;\n  }\n\n  /**\n   * Create an inert document that contains the dirty HTML that needs sanitizing\n   * Depending upon browser support we use one of three strategies for doing this.\n   * Support: Safari 10.x -> XHR strategy\n   * Support: Firefox -> DomParser strategy\n   */\n  var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\n    var inertDocument;\n    if (document && document.implementation) {\n      inertDocument = document.implementation.createHTMLDocument('inert');\n    } else {\n      throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\n    }\n    var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\n\n    // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element\n    inertBodyElement.innerHTML = '<svg><g onload=\"this.parentNode.remove()\"></g></svg>';\n    if (!inertBodyElement.querySelector('svg')) {\n      return getInertBodyElement_XHR;\n    } else {\n      // Check for the Firefox bug - which prevents the inner img JS from being sanitized\n      inertBodyElement.innerHTML = '<svg><p><style><img src=\"</style><img src=x onerror=alert(1)//\">';\n      if (inertBodyElement.querySelector('svg img')) {\n        return getInertBodyElement_DOMParser;\n      } else {\n        return getInertBodyElement_InertDocument;\n      }\n    }\n\n    function getInertBodyElement_XHR(html) {\n      // We add this dummy element to ensure that the rest of the content is parsed as expected\n      // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.\n      html = '<remove></remove>' + html;\n      try {\n        html = encodeURI(html);\n      } catch (e) {\n        return undefined;\n      }\n      var xhr = new window.XMLHttpRequest();\n      xhr.responseType = 'document';\n      xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n      xhr.send(null);\n      var body = xhr.response.body;\n      body.firstChild.remove();\n      return body;\n    }\n\n    function getInertBodyElement_DOMParser(html) {\n      // We add this dummy element to ensure that the rest of the content is parsed as expected\n      // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.\n      html = '<remove></remove>' + html;\n      try {\n        var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n        body.firstChild.remove();\n        return body;\n      } catch (e) {\n        return undefined;\n      }\n    }\n\n    function getInertBodyElement_InertDocument(html) {\n      inertBodyElement.innerHTML = html;\n\n      // Support: IE 9-11 only\n      // strip custom-namespaced attributes on IE<=11\n      if (document.documentMode) {\n        stripCustomNsAttrs(inertBodyElement);\n      }\n\n      return inertBodyElement;\n    }\n  })(window, window.document);\n\n  /**\n   * @example\n   * htmlParser(htmlString, {\n   *     start: function(tag, attrs) {},\n   *     end: function(tag) {},\n   *     chars: function(text) {},\n   *     comment: function(text) {}\n   * });\n   *\n   * @param {string} html string\n   * @param {object} handler\n   */\n  function htmlParserImpl(html, handler) {\n    if (html === null || html === undefined) {\n      html = '';\n    } else if (typeof html !== 'string') {\n      html = '' + html;\n    }\n\n    var inertBodyElement = getInertBodyElement(html);\n    if (!inertBodyElement) return '';\n\n    //mXSS protection\n    var mXSSAttempts = 5;\n    do {\n      if (mXSSAttempts === 0) {\n        throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n      }\n      mXSSAttempts--;\n\n      // trigger mXSS if it is going to happen by reading and writing the innerHTML\n      html = inertBodyElement.innerHTML;\n      inertBodyElement = getInertBodyElement(html);\n    } while (html !== inertBodyElement.innerHTML);\n\n    var node = inertBodyElement.firstChild;\n    while (node) {\n      switch (node.nodeType) {\n        case 1: // ELEMENT_NODE\n          handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n          break;\n        case 3: // TEXT NODE\n          handler.chars(node.textContent);\n          break;\n      }\n\n      var nextNode;\n      if (!(nextNode = node.firstChild)) {\n        if (node.nodeType === 1) {\n          handler.end(node.nodeName.toLowerCase());\n        }\n        nextNode = getNonDescendant('nextSibling', node);\n        if (!nextNode) {\n          while (nextNode == null) {\n            node = getNonDescendant('parentNode', node);\n            if (node === inertBodyElement) break;\n            nextNode = getNonDescendant('nextSibling', node);\n            if (node.nodeType === 1) {\n              handler.end(node.nodeName.toLowerCase());\n            }\n          }\n        }\n      }\n      node = nextNode;\n    }\n\n    while ((node = inertBodyElement.firstChild)) {\n      inertBodyElement.removeChild(node);\n    }\n  }\n\n  function attrToMap(attrs) {\n    var map = {};\n    for (var i = 0, ii = attrs.length; i < ii; i++) {\n      var attr = attrs[i];\n      map[attr.name] = attr.value;\n    }\n    return map;\n  }\n\n\n  /**\n   * Escapes all potentially dangerous characters, so that the\n   * resulting string can be safely inserted into attribute or\n   * element text.\n   * @param value\n   * @returns {string} escaped text\n   */\n  function encodeEntities(value) {\n    return value.\n      replace(/&/g, '&amp;').\n      replace(SURROGATE_PAIR_REGEXP, function(value) {\n        var hi = value.charCodeAt(0);\n        var low = value.charCodeAt(1);\n        return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n      }).\n      replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n        return '&#' + value.charCodeAt(0) + ';';\n      }).\n      replace(/</g, '&lt;').\n      replace(/>/g, '&gt;');\n  }\n\n  /**\n   * create an HTML/XML writer which writes to buffer\n   * @param {Array} buf use buf.join('') to get out sanitized html string\n   * @returns {object} in the form of {\n   *     start: function(tag, attrs) {},\n   *     end: function(tag) {},\n   *     chars: function(text) {},\n   *     comment: function(text) {}\n   * }\n   */\n  function htmlSanitizeWriterImpl(buf, uriValidator) {\n    var ignoreCurrentElement = false;\n    var out = bind(buf, buf.push);\n    return {\n      start: function(tag, attrs) {\n        tag = lowercase(tag);\n        if (!ignoreCurrentElement && blockedElements[tag]) {\n          ignoreCurrentElement = tag;\n        }\n        if (!ignoreCurrentElement && validElements[tag] === true) {\n          out('<');\n          out(tag);\n          forEach(attrs, function(value, key) {\n            var lkey = lowercase(key);\n            var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n            if (validAttrs[lkey] === true &&\n              (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n              out(' ');\n              out(key);\n              out('=\"');\n              out(encodeEntities(value));\n              out('\"');\n            }\n          });\n          out('>');\n        }\n      },\n      end: function(tag) {\n        tag = lowercase(tag);\n        if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n          out('</');\n          out(tag);\n          out('>');\n        }\n        // eslint-disable-next-line eqeqeq\n        if (tag == ignoreCurrentElement) {\n          ignoreCurrentElement = false;\n        }\n      },\n      chars: function(chars) {\n        if (!ignoreCurrentElement) {\n          out(encodeEntities(chars));\n        }\n      }\n    };\n  }\n\n\n  /**\n   * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n   * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n   * to allow any of these custom attributes. This method strips them all.\n   *\n   * @param node Root element to process\n   */\n  function stripCustomNsAttrs(node) {\n    while (node) {\n      if (node.nodeType === window.Node.ELEMENT_NODE) {\n        var attrs = node.attributes;\n        for (var i = 0, l = attrs.length; i < l; i++) {\n          var attrNode = attrs[i];\n          var attrName = attrNode.name.toLowerCase();\n          if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n            node.removeAttributeNode(attrNode);\n            i--;\n            l--;\n          }\n        }\n      }\n\n      var nextNode = node.firstChild;\n      if (nextNode) {\n        stripCustomNsAttrs(nextNode);\n      }\n\n      node = getNonDescendant('nextSibling', node);\n    }\n  }\n\n  function getNonDescendant(propName, node) {\n    // An element is clobbered if its `propName` property points to one of its descendants\n    var nextNode = node[propName];\n    if (nextNode && nodeContains.call(node, nextNode)) {\n      throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n    }\n    return nextNode;\n  }\n}\n\nfunction sanitizeText(chars) {\n  var buf = [];\n  var writer = htmlSanitizeWriter(buf, noop);\n  writer.chars(chars);\n  return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n  .provider('$sanitize', $SanitizeProvider)\n  .info({ angularVersion: '1.6.6' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n *    Can be one of:\n *\n *    - `object`: A map of attributes\n *    - `function`: Takes the url as a parameter and returns a map of attributes\n *\n *    If the map of attributes contains a value for `target`, it overrides the value of\n *    the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n   <span ng-bind-html=\"linky_expression | linky\"></span>\n *\n * @example\n   <example module=\"linkyExample\" deps=\"angular-sanitize.js\" name=\"linky-filter\">\n     <file name=\"index.html\">\n       <div ng-controller=\"ExampleController\">\n       Snippet: <textarea ng-model=\"snippet\" cols=\"60\" rows=\"3\"></textarea>\n       <table>\n         <tr>\n           <th>Filter</th>\n           <th>Source</th>\n           <th>Rendered</th>\n         </tr>\n         <tr id=\"linky-filter\">\n           <td>linky filter</td>\n           <td>\n             <pre>&lt;div ng-bind-html=\"snippet | linky\"&gt;<br>&lt;/div&gt;</pre>\n           </td>\n           <td>\n             <div ng-bind-html=\"snippet | linky\"></div>\n           </td>\n         </tr>\n         <tr id=\"linky-target\">\n          <td>linky target</td>\n          <td>\n            <pre>&lt;div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\"&gt;<br>&lt;/div&gt;</pre>\n          </td>\n          <td>\n            <div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\"></div>\n          </td>\n         </tr>\n         <tr id=\"linky-custom-attributes\">\n          <td>linky custom attributes</td>\n          <td>\n            <pre>&lt;div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\"&gt;<br>&lt;/div&gt;</pre>\n          </td>\n          <td>\n            <div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\"></div>\n          </td>\n         </tr>\n         <tr id=\"escaped-html\">\n           <td>no filter</td>\n           <td><pre>&lt;div ng-bind=\"snippet\"&gt;<br>&lt;/div&gt;</pre></td>\n           <td><div ng-bind=\"snippet\"></div></td>\n         </tr>\n       </table>\n     </file>\n     <file name=\"script.js\">\n       angular.module('linkyExample', ['ngSanitize'])\n         .controller('ExampleController', ['$scope', function($scope) {\n           $scope.snippet =\n             'Pretty text with some links:\\n' +\n             'http://angularjs.org/,\\n' +\n             'mailto:us@somewhere.org,\\n' +\n             'another@somewhere.org,\\n' +\n             'and one more: ftp://127.0.0.1/.';\n           $scope.snippetWithSingleURL = 'http://angularjs.org/';\n         }]);\n     </file>\n     <file name=\"protractor.js\" type=\"protractor\">\n       it('should linkify the snippet with urls', function() {\n         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n             toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n         expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n       });\n\n       it('should not linkify snippet without the linky filter', function() {\n         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n             toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n         expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n       });\n\n       it('should update', function() {\n         element(by.model('snippet')).clear();\n         element(by.model('snippet')).sendKeys('new http://link.');\n         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n             toBe('new http://link.');\n         expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n             .toBe('new http://link.');\n       });\n\n       it('should work with the target property', function() {\n        expect(element(by.id('linky-target')).\n            element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n            toBe('http://angularjs.org/');\n        expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n       });\n\n       it('should optionally add custom attributes', function() {\n        expect(element(by.id('linky-custom-attributes')).\n            element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n            toBe('http://angularjs.org/');\n        expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n       });\n     </file>\n   </example>\n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n  var LINKY_URL_REGEXP =\n        /((ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n      MAILTO_REGEXP = /^mailto:/i;\n\n  var linkyMinErr = angular.$$minErr('linky');\n  var isDefined = angular.isDefined;\n  var isFunction = angular.isFunction;\n  var isObject = angular.isObject;\n  var isString = angular.isString;\n\n  return function(text, target, attributes) {\n    if (text == null || text === '') return text;\n    if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n    var attributesFn =\n      isFunction(attributes) ? attributes :\n      isObject(attributes) ? function getAttributesObject() {return attributes;} :\n      function getEmptyAttributesObject() {return {};};\n\n    var match;\n    var raw = text;\n    var html = [];\n    var url;\n    var i;\n    while ((match = raw.match(LINKY_URL_REGEXP))) {\n      // We can not end in these as they are sometimes found at the end of the sentence\n      url = match[0];\n      // if we did not match ftp/http/www/mailto then assume mailto\n      if (!match[2] && !match[4]) {\n        url = (match[3] ? 'http://' : 'mailto:') + url;\n      }\n      i = match.index;\n      addText(raw.substr(0, i));\n      addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n      raw = raw.substring(i + match[0].length);\n    }\n    addText(raw);\n    return $sanitize(html.join(''));\n\n    function addText(text) {\n      if (!text) {\n        return;\n      }\n      html.push(sanitizeText(text));\n    }\n\n    function addLink(url, text) {\n      var key, linkAttributes = attributesFn(url);\n      html.push('<a ');\n\n      for (key in linkAttributes) {\n        html.push(key + '=\"' + linkAttributes[key] + '\" ');\n      }\n\n      if (isDefined(target) && !('target' in linkAttributes)) {\n        html.push('target=\"',\n                  target,\n                  '\" ');\n      }\n      html.push('href=\"',\n                url.replace(/\"/g, '&quot;'),\n                '\">');\n      addText(text);\n      html.push('</a>');\n    }\n  };\n}]);\n\n\n})(window, window.angular);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar common_1 = require(\"../common\");\nexports.keyValsToObjectR = function (accum, _a) {\n    var key = _a[0], val = _a[1];\n    if (!accum.hasOwnProperty(key)) {\n        accum[key] = val;\n    }\n    else if (common_1.isArray(accum[key])) {\n        accum[key].push(val);\n    }\n    else {\n        accum[key] = [accum[key], val];\n    }\n    return accum;\n};\nexports.getParams = function (queryString) {\n    return queryString.split('&').filter(common_1.identity).map(common_1.splitEqual).reduce(exports.keyValsToObjectR, {});\n};\nfunction parseUrl(url) {\n    var orEmptyString = function (x) { return x || ''; };\n    var _a = common_1.splitHash(url).map(orEmptyString), beforehash = _a[0], hash = _a[1];\n    var _b = common_1.splitQuery(beforehash).map(orEmptyString), path = _b[0], search = _b[1];\n    return { path: path, search: search, hash: hash, url: url };\n}\nexports.parseUrl = parseUrl;\nexports.buildUrl = function (loc) {\n    var path = loc.path();\n    var searchObject = loc.search();\n    var hash = loc.hash();\n    var search = Object.keys(searchObject).map(function (key) {\n        var param = searchObject[key];\n        var vals = common_1.isArray(param) ? param : [param];\n        return vals.map(function (val) { return key + '=' + val; });\n    }).reduce(common_1.unnestR, []).join('&');\n    return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n};\nfunction locationPluginFactory(name, isHtml5, serviceClass, configurationClass) {\n    return function (uiRouter) {\n        var service = uiRouter.locationService = new serviceClass(uiRouter);\n        var configuration = uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5);\n        function dispose(router) {\n            router.dispose(service);\n            router.dispose(configuration);\n        }\n        return { name: name, service: service, configuration: configuration, dispose: dispose };\n    };\n}\nexports.locationPluginFactory = locationPluginFactory;\n//# sourceMappingURL=utils.js.map","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar DominantSpeakerSignaling = require('./dominantspeakersignaling');\nvar NetworkQualityMonitor = require('./networkqualitymonitor');\nvar NetworkQualitySignaling = require('./networkqualitysignaling');\nvar RecordingV2 = require('./recording');\nvar RoomSignaling = require('../room');\nvar RemoteParticipantV2 = require('./remoteparticipant');\nvar StatsReport = require('../../stats/statsreport');\nvar TrackPrioritySignaling = require('./trackprioritysignaling');\nvar TrackSwitchOffSignaling = require('./trackswitchoffsignaling');\nvar RenderHintsSignaling = require('./renderhintssignaling');\nvar PublisherHintsSignaling = require('./publisherhintsignaling.js');\nvar _a = require('../../util'), DEFAULT_SESSION_TIMEOUT_SEC = _a.constants.DEFAULT_SESSION_TIMEOUT_SEC, createBandwidthProfilePayload = _a.createBandwidthProfilePayload, defer = _a.defer, difference = _a.difference, filterObject = _a.filterObject, flatMap = _a.flatMap, oncePerTick = _a.oncePerTick;\nvar MovingAverageDelta = require('../../util/movingaveragedelta');\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\nvar STATS_PUBLISH_INTERVAL_MS = 10000;\n/**\n * @extends RoomSignaling\n */\nvar RoomV2 = /** @class */ (function (_super) {\n    __extends(RoomV2, _super);\n    function RoomV2(localParticipant, initialState, transport, peerConnectionManager, options) {\n        var _this = this;\n        initialState.options = Object.assign({\n            session_timeout: DEFAULT_SESSION_TIMEOUT_SEC\n        }, initialState.options);\n        options = Object.assign({\n            DominantSpeakerSignaling: DominantSpeakerSignaling,\n            NetworkQualityMonitor: NetworkQualityMonitor,\n            NetworkQualitySignaling: NetworkQualitySignaling,\n            RecordingSignaling: RecordingV2,\n            RemoteParticipantV2: RemoteParticipantV2,\n            TrackPrioritySignaling: TrackPrioritySignaling,\n            TrackSwitchOffSignaling: TrackSwitchOffSignaling,\n            bandwidthProfile: null,\n            sessionTimeout: initialState.options.session_timeout * 1000,\n            statsPublishIntervalMs: STATS_PUBLISH_INTERVAL_MS\n        }, options);\n        localParticipant.setBandwidthProfile(options.bandwidthProfile);\n        var _a = initialState.options, signalingRegion = _a.signaling_region, _b = _a.audio_processors, audioProcessors = _b === void 0 ? [] : _b;\n        localParticipant.setSignalingRegion(signalingRegion);\n        if (audioProcessors.includes('krisp')) {\n            // Note(mpatwardhan): we add rnnoise as allowed_processor to enable testing our pipeline e2e.\n            audioProcessors.push('rnnoise');\n        }\n        localParticipant.setAudioProcessors(audioProcessors);\n        peerConnectionManager.setIceReconnectTimeout(options.sessionTimeout);\n        _this = _super.call(this, localParticipant, initialState.sid, initialState.name, options) || this;\n        var getTrackReceiver = function (id) { return _this._getTrackReceiver(id); };\n        var log = _this._log;\n        Object.defineProperties(_this, {\n            _disconnectedParticipantRevisions: {\n                value: new Map()\n            },\n            _NetworkQualityMonitor: {\n                value: options.NetworkQualityMonitor\n            },\n            _lastBandwidthProfileRevision: {\n                value: localParticipant.bandwidthProfileRevision,\n                writable: true\n            },\n            _mediaStatesWarningsRevision: {\n                value: 0,\n                writable: true\n            },\n            _networkQualityMonitor: {\n                value: null,\n                writable: true\n            },\n            _networkQualityConfiguration: {\n                value: localParticipant.networkQualityConfiguration\n            },\n            _peerConnectionManager: {\n                value: peerConnectionManager\n            },\n            _published: {\n                value: new Map()\n            },\n            _publishedRevision: {\n                value: 0,\n                writable: true\n            },\n            _RemoteParticipantV2: {\n                value: options.RemoteParticipantV2\n            },\n            _subscribed: {\n                value: new Map()\n            },\n            _subscribedRevision: {\n                value: 0,\n                writable: true\n            },\n            _subscriptionFailures: {\n                value: new Map()\n            },\n            _dominantSpeakerSignaling: {\n                value: new options.DominantSpeakerSignaling(getTrackReceiver, { log: log })\n            },\n            _networkQualitySignaling: {\n                value: new options.NetworkQualitySignaling(getTrackReceiver, localParticipant.networkQualityConfiguration, { log: log })\n            },\n            _renderHintsSignaling: {\n                value: new RenderHintsSignaling(getTrackReceiver, { log: log }),\n            },\n            _publisherHintsSignaling: {\n                value: new PublisherHintsSignaling(getTrackReceiver, { log: log }),\n            },\n            _trackPrioritySignaling: {\n                value: new options.TrackPrioritySignaling(getTrackReceiver, { log: log }),\n            },\n            _trackSwitchOffSignaling: {\n                value: new options.TrackSwitchOffSignaling(getTrackReceiver, { log: log }),\n            },\n            _pendingSwitchOffStates: {\n                value: new Map()\n            },\n            _transport: {\n                value: transport\n            },\n            _trackReceiverDeferreds: {\n                value: new Map()\n            },\n            mediaRegion: {\n                enumerable: true,\n                value: initialState.options.media_region || null\n            }\n        });\n        _this._initTrackSwitchOffSignaling();\n        _this._initDominantSpeakerSignaling();\n        _this._initNetworkQualityMonitorSignaling();\n        _this._initPublisherHintSignaling();\n        handleLocalParticipantEvents(_this, localParticipant);\n        handlePeerConnectionEvents(_this, peerConnectionManager);\n        handleTransportEvents(_this, transport);\n        periodicallyPublishStats(_this, transport, options.statsPublishIntervalMs);\n        _this._update(initialState);\n        // NOTE(mpatwardhan) after initial state we know if publisher_hints are enabled or not\n        // if they are not enabled. we need to undo simulcast that was enabled with initial offer.\n        _this._peerConnectionManager.setEffectiveAdaptiveSimulcast(_this._publisherHintsSignaling.isSetup);\n        return _this;\n    }\n    Object.defineProperty(RoomV2.prototype, \"connectionState\", {\n        /**\n         * The PeerConnection state.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this._peerConnectionManager.connectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RoomV2.prototype, \"signalingConnectionState\", {\n        /**\n         * The Signaling Connection State.\n         * @property {string} - \"connected\", \"reconnecting\", \"disconnected\"\n         */\n        get: function () {\n            return this._transport.state === 'syncing'\n                ? 'reconnecting'\n                : this._transport.state;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RoomV2.prototype, \"iceConnectionState\", {\n        /**\n         * The Ice Connection State.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return this._peerConnectionManager.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @private\n     */\n    RoomV2.prototype._deleteTrackReceiverDeferred = function (id) {\n        return this._trackReceiverDeferreds.delete(id);\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getOrCreateTrackReceiverDeferred = function (id) {\n        var deferred = this._trackReceiverDeferreds.get(id) || defer();\n        var trackReceivers = this._peerConnectionManager.getTrackReceivers();\n        // NOTE(mmalavalli): In Firefox, there can be instances where a MediaStreamTrack\n        // for the given Track ID already exists, for example, when a Track is removed\n        // and added back. If that is the case, then we should resolve 'deferred'.\n        var trackReceiver = trackReceivers.find(function (trackReceiver) { return trackReceiver.id === id && trackReceiver.readyState !== 'ended'; });\n        if (trackReceiver) {\n            deferred.resolve(trackReceiver);\n        }\n        else {\n            // NOTE(mmalavalli): Only add the 'deferred' to the map if it's not\n            // resolved. This will prevent old copies of the MediaStreamTrack from\n            // being used when the remote peer removes and re-adds a MediaStreamTrack.\n            this._trackReceiverDeferreds.set(id, deferred);\n        }\n        return deferred;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._addTrackReceiver = function (trackReceiver) {\n        var deferred = this._getOrCreateTrackReceiverDeferred(trackReceiver.id);\n        deferred.resolve(trackReceiver);\n        return this;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._disconnect = function (error) {\n        var didDisconnect = _super.prototype._disconnect.call(this, error);\n        if (didDisconnect) {\n            this._teardownNetworkQualityMonitor();\n            this._transport.disconnect();\n            this._peerConnectionManager.close();\n        }\n        this.localParticipant.tracks.forEach(function (track) {\n            track.publishFailed(error || new Error('LocalParticipant disconnected'));\n        });\n        return didDisconnect;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getTrackReceiver = function (id) {\n        var _this = this;\n        return this._getOrCreateTrackReceiverDeferred(id).promise.then(function (trackReceiver) {\n            _this._deleteTrackReceiverDeferred(id);\n            return trackReceiver;\n        });\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getInitialTrackSwitchOffState = function (trackSid) {\n        var initiallySwitchedOff = this._pendingSwitchOffStates.get(trackSid) || false;\n        this._pendingSwitchOffStates.delete(trackSid);\n        if (initiallySwitchedOff) {\n            this._log.warn(\"[\" + trackSid + \"] was initially switched off! \");\n        }\n        return initiallySwitchedOff;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getTrackSidsToTrackSignalings = function () {\n        var trackSidsToTrackSignalings = flatMap(this.participants, function (participant) { return Array.from(participant.tracks); });\n        return new Map(trackSidsToTrackSignalings);\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getOrCreateRemoteParticipant = function (participantState) {\n        var _this = this;\n        var RemoteParticipantV2 = this._RemoteParticipantV2;\n        var participant = this.participants.get(participantState.sid);\n        var self = this;\n        if (!participant) {\n            participant = new RemoteParticipantV2(participantState, function (trackSid) { return _this._getInitialTrackSwitchOffState(trackSid); }, function (trackSid, priority) { return _this._trackPrioritySignaling.sendTrackPriorityUpdate(trackSid, 'subscribe', priority); }, function (trackSid, hint) { return _this._renderHintsSignaling.setTrackHint(trackSid, hint); }, function (trackSid) { return _this._renderHintsSignaling.clearTrackHint(trackSid); });\n            participant.on('stateChanged', function stateChanged(state) {\n                if (state === 'disconnected') {\n                    participant.removeListener('stateChanged', stateChanged);\n                    self.participants.delete(participant.sid);\n                    self._disconnectedParticipantRevisions.set(participant.sid, participant.revision);\n                }\n            });\n            this.connectParticipant(participant);\n        }\n        return participant;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getState = function () {\n        return {\n            participant: this.localParticipant.getState()\n        };\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._maybeAddBandwidthProfile = function (update) {\n        var _a = this.localParticipant, bandwidthProfile = _a.bandwidthProfile, bandwidthProfileRevision = _a.bandwidthProfileRevision;\n        if (bandwidthProfile && this._lastBandwidthProfileRevision < bandwidthProfileRevision) {\n            this._lastBandwidthProfileRevision = bandwidthProfileRevision;\n            return Object.assign({\n                bandwidth_profile: createBandwidthProfilePayload(bandwidthProfile)\n            }, update);\n        }\n        return update;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._publishNewLocalParticipantState = function () {\n        this._transport.publish(this._maybeAddBandwidthProfile(this._getState()));\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._publishPeerConnectionState = function (peerConnectionState) {\n        /* eslint camelcase:0 */\n        this._transport.publish(Object.assign({\n            peer_connections: [peerConnectionState]\n        }, this._getState()));\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._update = function (roomState) {\n        var _this = this;\n        if (roomState.subscribed && roomState.subscribed.revision > this._subscribedRevision) {\n            this._subscribedRevision = roomState.subscribed.revision;\n            roomState.subscribed.tracks.forEach(function (trackState) {\n                if (trackState.id) {\n                    _this._subscriptionFailures.delete(trackState.sid);\n                    _this._subscribed.set(trackState.sid, trackState.id);\n                }\n                else if (trackState.error && !_this._subscriptionFailures.has(trackState.sid)) {\n                    _this._subscriptionFailures.set(trackState.sid, trackState.error);\n                }\n            });\n            var subscribedTrackSids_1 = new Set(roomState.subscribed.tracks\n                .filter(function (trackState) { return !!trackState.id; })\n                .map(function (trackState) { return trackState.sid; }));\n            this._subscribed.forEach(function (trackId, trackSid) {\n                if (!subscribedTrackSids_1.has(trackSid)) {\n                    _this._subscribed.delete(trackSid);\n                }\n            });\n        }\n        var participantsToKeep = new Set();\n        // eslint-disable-next-line no-warning-comments\n        // TODO(mroberts): Remove me once the Server is fixed.\n        (roomState.participants || []).forEach(function (participantState) {\n            if (participantState.sid === _this.localParticipant.sid) {\n                return;\n            }\n            // NOTE(mmalavalli): If the incoming revision for a disconnected Participant is less than or\n            // equal to the revision when it was disconnected, then the state is old and can be ignored.\n            // Otherwise, the Participant was most likely disconnected in a Large Group Room when it\n            // stopped publishing media, and hence needs to be re-added.\n            var disconnectedParticipantRevision = _this._disconnectedParticipantRevisions.get(participantState.sid);\n            if (disconnectedParticipantRevision && participantState.revision <= disconnectedParticipantRevision) {\n                return;\n            }\n            if (disconnectedParticipantRevision) {\n                _this._disconnectedParticipantRevisions.delete(participantState.sid);\n            }\n            var participant = _this._getOrCreateRemoteParticipant(participantState);\n            participant.update(participantState);\n            participantsToKeep.add(participant);\n        });\n        if (roomState.type === 'synced') {\n            this.participants.forEach(function (participant) {\n                if (!participantsToKeep.has(participant)) {\n                    participant.disconnect();\n                }\n            });\n        }\n        handleSubscriptions(this);\n        // eslint-disable-next-line no-warning-comments\n        // TODO(mroberts): Remove me once the Server is fixed.\n        /* eslint camelcase:0 */\n        if (roomState.peer_connections) {\n            this._peerConnectionManager.update(roomState.peer_connections, roomState.type === 'synced');\n        }\n        if (roomState.recording) {\n            this.recording.update(roomState.recording);\n        }\n        if (roomState.published && roomState.published.revision > this._publishedRevision) {\n            this._publishedRevision = roomState.published.revision;\n            roomState.published.tracks.forEach(function (track) {\n                if (track.sid) {\n                    _this._published.set(track.id, track.sid);\n                }\n            });\n            this.localParticipant.update(roomState.published);\n        }\n        if (roomState.participant) {\n            this.localParticipant.connect(roomState.participant.sid, roomState.participant.identity);\n        }\n        [\n            this._dominantSpeakerSignaling,\n            this._networkQualitySignaling,\n            this._trackPrioritySignaling,\n            this._trackSwitchOffSignaling,\n            this._renderHintsSignaling,\n            this._publisherHintsSignaling\n        ].forEach(function (mediaSignaling) {\n            var channel = mediaSignaling.channel;\n            if (!mediaSignaling.isSetup\n                && roomState.media_signaling\n                && roomState.media_signaling[channel]\n                && roomState.media_signaling[channel].transport\n                && roomState.media_signaling[channel].transport.type === 'data-channel') {\n                mediaSignaling.setup(roomState.media_signaling[channel].transport.label);\n            }\n        });\n        if (roomState.type === 'warning' && roomState.states &&\n            roomState.states.revision > this._mediaStatesWarningsRevision) {\n            this._mediaStatesWarningsRevision = roomState.states.revision;\n            this.localParticipant.updateMediaStates(roomState.states);\n        }\n        return this;\n    };\n    RoomV2.prototype._initPublisherHintSignaling = function () {\n        var _this = this;\n        this._publisherHintsSignaling.on('updated', function (hints, id) {\n            Promise.all(hints.map(function (hint) {\n                return _this.localParticipant.setPublisherHint(hint.track, hint.encodings).then(function (result) {\n                    return { track: hint.track, result: result };\n                });\n            })).then(function (hintResponses) {\n                _this._publisherHintsSignaling.sendHintResponse({ id: id, hints: hintResponses });\n            });\n        });\n        var handleReplaced = function (track) {\n            if (track.kind === 'video') {\n                track.trackTransceiver.on('replaced', function () {\n                    _this._publisherHintsSignaling.sendTrackReplaced({ trackSid: track.sid });\n                });\n            }\n        };\n        // hook up for any existing and new tracks getting replaced.\n        Array.from(this.localParticipant.tracks.values()).forEach(function (track) { return handleReplaced(track); });\n        this.localParticipant.on('trackAdded', function (track) { return handleReplaced(track); });\n    };\n    RoomV2.prototype._initTrackSwitchOffSignaling = function () {\n        var _this = this;\n        this._trackSwitchOffSignaling.on('updated', function (tracksOff, tracksOn) {\n            try {\n                _this._log.debug('received trackSwitch: ', { tracksOn: tracksOn, tracksOff: tracksOff });\n                var trackUpdates_1 = new Map();\n                tracksOn.forEach(function (trackSid) { return trackUpdates_1.set(trackSid, true); });\n                tracksOff.forEach(function (trackSid) {\n                    if (trackUpdates_1.get(trackSid)) {\n                        // NOTE(mpatwardhan): This means that VIDEO-3762 has been reproduced.\n                        _this._log.warn(trackSid + \" is DUPLICATED in both tracksOff and tracksOn list\");\n                    }\n                    trackUpdates_1.set(trackSid, false);\n                });\n                _this.participants.forEach(function (participant) {\n                    participant.tracks.forEach(function (track) {\n                        var isOn = trackUpdates_1.get(track.sid);\n                        if (typeof isOn !== 'undefined') {\n                            track.setSwitchedOff(!isOn);\n                            trackUpdates_1.delete(track.sid);\n                        }\n                    });\n                });\n                // NOTE(mpatwardhan): Cache any notification about the tracks that we do not yet know about.\n                trackUpdates_1.forEach(function (isOn, trackSid) { return _this._pendingSwitchOffStates.set(trackSid, !isOn); });\n            }\n            catch (ex) {\n                _this._log.error('error processing track switch off:', ex);\n            }\n        });\n    };\n    RoomV2.prototype._initDominantSpeakerSignaling = function () {\n        var _this = this;\n        this._dominantSpeakerSignaling.on('updated', function () { return _this.setDominantSpeaker(_this._dominantSpeakerSignaling.loudestParticipantSid); });\n    };\n    RoomV2.prototype._initNetworkQualityMonitorSignaling = function () {\n        var _this = this;\n        this._networkQualitySignaling.on('ready', function () {\n            var networkQualityMonitor = new _this._NetworkQualityMonitor(_this._peerConnectionManager, _this._networkQualitySignaling);\n            _this._networkQualityMonitor = networkQualityMonitor;\n            networkQualityMonitor.on('updated', function () {\n                if (_this.iceConnectionState === 'failed') {\n                    return;\n                }\n                _this.localParticipant.setNetworkQualityLevel(networkQualityMonitor.level, networkQualityMonitor.levels);\n                _this.participants.forEach(function (participant) {\n                    var levels = networkQualityMonitor.remoteLevels.get(participant.sid);\n                    if (levels) {\n                        participant.setNetworkQualityLevel(levels.level, levels);\n                    }\n                });\n            });\n            networkQualityMonitor.start();\n        });\n        this._networkQualitySignaling.on('teardown', function () { return _this._teardownNetworkQualityMonitor(); });\n    };\n    RoomV2.prototype._teardownNetworkQualityMonitor = function () {\n        if (this._networkQualityMonitor) {\n            this._networkQualityMonitor.stop();\n            this._networkQualityMonitor = null;\n        }\n    };\n    /**\n     * Get the {@link RoomV2}'s media statistics.\n     * @returns {Promise.<Map<PeerConnectionV2#id, StandardizedStatsResponse>>}\n     */\n    RoomV2.prototype.getStats = function () {\n        var _this = this;\n        return this._peerConnectionManager.getStats().then(function (responses) {\n            return new Map(Array.from(responses).map(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], response = _b[1];\n                return [id, Object.assign({}, response, {\n                        localAudioTrackStats: filterAndAddLocalTrackSids(_this, response.localAudioTrackStats),\n                        localVideoTrackStats: filterAndAddLocalTrackSids(_this, response.localVideoTrackStats),\n                        remoteAudioTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteAudioTrackStats),\n                        remoteVideoTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteVideoTrackStats)\n                    })];\n            }));\n        });\n    };\n    return RoomV2;\n}(RoomSignaling));\n/**\n * Filter out {@link TrackStats} that aren't in the collection while also\n * stamping their Track SIDs.\n * @param {Map<ID, SID>} idToSid\n * @param {Array<TrackStats>} trackStats\n * @returns {Array<TrackStats>}\n */\nfunction filterAndAddTrackSids(idToSid, trackStats) {\n    return trackStats.reduce(function (trackStats, trackStat) {\n        var trackSid = idToSid.get(trackStat.trackId);\n        return trackSid\n            ? [Object.assign({}, trackStat, { trackSid: trackSid })].concat(trackStats)\n            : trackStats;\n    }, []);\n}\n/**\n * Filter out {@link LocalTrackStats} that aren't currently published while also\n * stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array<LocalTrackStats>} localTrackStats\n * @returns {Array<LocalTrackStats>}\n */\nfunction filterAndAddLocalTrackSids(roomV2, localTrackStats) {\n    return filterAndAddTrackSids(roomV2._published, localTrackStats);\n}\n/**\n * Filter out {@link RemoteTrackStats} that aren't currently subscribed while\n * also stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array<RemoteTrackStats>} remoteTrackStats\n * @returns {Array<RemoteTrackStats>}\n */\nfunction filterAndAddRemoteTrackSids(roomV2, remoteTrackStats) {\n    var idToSid = new Map(Array.from(roomV2._subscribed.entries()).map(function (_a) {\n        var _b = __read(_a, 2), sid = _b[0], id = _b[1];\n        return [id, sid];\n    }));\n    return filterAndAddTrackSids(idToSid, remoteTrackStats);\n}\n/**\n * @typedef {object} RoomV2#Representation\n * @property {string} name\n * @property {LocalParticipantV2#Representation} participant\n * @property {?Array<RemoteParticipantV2#Representation>} participants\n * @property {?Array<PeerConnectionV2#Representation>} peer_connections\n * @property {?RecordingV2#Representation} recording\n * @property {string} sid\n */\nfunction handleLocalParticipantEvents(roomV2, localParticipant) {\n    var localParticipantUpdated = oncePerTick(function () {\n        roomV2._publishNewLocalParticipantState();\n    });\n    var renegotiate = oncePerTick(function () {\n        var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return trackV2.trackTransceiver; });\n        roomV2._peerConnectionManager.setTrackSenders(trackSenders);\n    });\n    localParticipant.on('trackAdded', renegotiate);\n    localParticipant.on('trackRemoved', renegotiate);\n    localParticipant.on('updated', localParticipantUpdated);\n    roomV2.on('stateChanged', function stateChanged(state) {\n        if (state === 'disconnected') {\n            localParticipant.removeListener('trackAdded', renegotiate);\n            localParticipant.removeListener('trackRemoved', renegotiate);\n            localParticipant.removeListener('updated', localParticipantUpdated);\n            roomV2.removeListener('stateChanged', stateChanged);\n            localParticipant.disconnect();\n        }\n    });\n    roomV2.on('signalingConnectionStateChanged', function () {\n        var localParticipant = roomV2.localParticipant, signalingConnectionState = roomV2.signalingConnectionState;\n        var identity = localParticipant.identity, sid = localParticipant.sid;\n        switch (signalingConnectionState) {\n            case 'connected':\n                localParticipant.connect(sid, identity);\n                break;\n            case 'reconnecting':\n                localParticipant.reconnecting();\n                break;\n        }\n    });\n}\nfunction handlePeerConnectionEvents(roomV2, peerConnectionManager) {\n    peerConnectionManager.on('description', function onDescription(description) {\n        roomV2._publishPeerConnectionState(description);\n    });\n    peerConnectionManager.dequeue('description');\n    peerConnectionManager.on('candidates', function onCandidates(candidates) {\n        roomV2._publishPeerConnectionState(candidates);\n    });\n    peerConnectionManager.dequeue('candidates');\n    peerConnectionManager.on('trackAdded', roomV2._addTrackReceiver.bind(roomV2));\n    peerConnectionManager.dequeue('trackAdded');\n    peerConnectionManager.getTrackReceivers().forEach(roomV2._addTrackReceiver, roomV2);\n    peerConnectionManager.on('connectionStateChanged', function () {\n        roomV2.emit('connectionStateChanged');\n    });\n    peerConnectionManager.on('iceConnectionStateChanged', function () {\n        roomV2.emit('iceConnectionStateChanged');\n        if (roomV2.iceConnectionState === 'failed') {\n            if (roomV2.localParticipant.networkQualityLevel !== null) {\n                roomV2.localParticipant.setNetworkQualityLevel(0);\n            }\n            roomV2.participants.forEach(function (participant) {\n                if (participant.networkQualityLevel !== null) {\n                    participant.setNetworkQualityLevel(0);\n                }\n            });\n        }\n    });\n}\nfunction handleTransportEvents(roomV2, transport) {\n    transport.on('message', roomV2._update.bind(roomV2));\n    transport.on('stateChanged', function stateChanged(state, error) {\n        if (state === 'disconnected') {\n            if (roomV2.state !== 'disconnected') {\n                roomV2._disconnect(error);\n            }\n            transport.removeListener('stateChanged', stateChanged);\n        }\n        roomV2.emit('signalingConnectionStateChanged');\n    });\n}\n/**\n * Periodically publish {@link StatsReport}s.\n * @private\n * @param {RoomV2} roomV2\n * @param {Transport} transport\n * @param {Number} intervalMs\n */\nfunction periodicallyPublishStats(roomV2, transport, intervalMs) {\n    var movingAverageDeltas = new Map();\n    var oddPublishCount = false;\n    var interval = setInterval(function () {\n        roomV2.getStats().then(function (stats) {\n            oddPublishCount = !oddPublishCount;\n            stats.forEach(function (response, id) {\n                // NOTE(mmalavalli): A StatsReport is used to publish a \"stats-report\"\n                // event instead of using StandardizedStatsResponse directly because\n                // StatsReport will add zeros to properties that do not exist.\n                var report = new StatsReport(id, response, true /* prepareForInsights */);\n                // NOTE(mmalavalli): Since A/V sync metrics are not part of the StatsReport class,\n                // we add them to the insights payload here.\n                transport.publishEvent('quality', 'stats-report', 'info', {\n                    audioTrackStats: report.remoteAudioTrackStats.map(function (trackStat, i) {\n                        return addAVSyncMetricsToRemoteTrackStats(trackStat, response.remoteAudioTrackStats[i], movingAverageDeltas);\n                    }),\n                    localAudioTrackStats: report.localAudioTrackStats.map(function (trackStat, i) {\n                        return addAVSyncMetricsToLocalTrackStats(trackStat, response.localAudioTrackStats[i], movingAverageDeltas);\n                    }),\n                    localVideoTrackStats: report.localVideoTrackStats.map(function (trackStat, i) {\n                        return addAVSyncMetricsToLocalTrackStats(trackStat, response.localVideoTrackStats[i], movingAverageDeltas);\n                    }),\n                    peerConnectionId: report.peerConnectionId,\n                    videoTrackStats: report.remoteVideoTrackStats.map(function (trackStat, i) {\n                        return addAVSyncMetricsToRemoteTrackStats(trackStat, response.remoteVideoTrackStats[i], movingAverageDeltas);\n                    }),\n                });\n                // NOTE(mmalavalli): Clean up entries for Tracks that are no longer published or subscribed to.\n                var keys = flatMap([\n                    'localAudioTrackStats',\n                    'localVideoTrackStats',\n                    'remoteAudioTrackStats',\n                    'remoteVideoTrackStats'\n                ], function (prop) { return report[prop].map(function (_a) {\n                    var ssrc = _a.ssrc, trackSid = _a.trackSid;\n                    return trackSid + \"+\" + ssrc;\n                }); });\n                var movingAverageDeltaKeysToBeRemoved = difference(Array.from(movingAverageDeltas.keys()), keys);\n                movingAverageDeltaKeysToBeRemoved.forEach(function (key) { return movingAverageDeltas.delete(key); });\n                if (oddPublishCount) {\n                    // NOTE(mmalavalli): null properties of the \"active-ice-candidate-pair\"\n                    // payload are assigned default values until the Insights gateway\n                    // accepts null values.\n                    var activeIceCandidatePair = replaceNullsWithDefaults(response.activeIceCandidatePair, report.peerConnectionId);\n                    transport.publishEvent('quality', 'active-ice-candidate-pair', 'info', activeIceCandidatePair);\n                }\n            });\n        }, function () {\n            // Do nothing.\n        });\n    }, intervalMs);\n    roomV2.on('stateChanged', function onStateChanged(state) {\n        if (state === 'disconnected') {\n            clearInterval(interval);\n            roomV2.removeListener('stateChanged', onStateChanged);\n        }\n    });\n}\nfunction handleSubscriptions(room) {\n    var trackSidsToTrackSignalings = room._getTrackSidsToTrackSignalings();\n    room._subscriptionFailures.forEach(function (error, trackSid) {\n        var trackSignaling = trackSidsToTrackSignalings.get(trackSid);\n        if (trackSignaling) {\n            room._subscriptionFailures.delete(trackSid);\n            trackSignaling.subscribeFailed(createTwilioError(error.code, error.message));\n        }\n    });\n    trackSidsToTrackSignalings.forEach(function (trackSignaling) {\n        var trackId = room._subscribed.get(trackSignaling.sid);\n        if (!trackId || (trackSignaling.isSubscribed && trackSignaling.trackTransceiver.id !== trackId)) {\n            trackSignaling.setTrackTransceiver(null);\n        }\n        if (trackId) {\n            room._getTrackReceiver(trackId).then(function (trackReceiver) { return trackSignaling.setTrackTransceiver(trackReceiver); });\n        }\n    });\n}\n/**\n * NOTE(mmalavalli): Since A/V sync metrics are not part of the public StatsReport class, we add them\n * only for reporting purposes.\n * @private\n */\nfunction addAVSyncMetricsToLocalTrackStats(trackStats, trackResponse, movingAverageDeltas) {\n    var framesEncoded = trackResponse.framesEncoded, packetsSent = trackResponse.packetsSent, totalEncodeTime = trackResponse.totalEncodeTime, totalPacketSendDelay = trackResponse.totalPacketSendDelay;\n    var augmentedTrackStats = Object.assign({}, trackStats);\n    var key = trackStats.trackSid + \"+\" + trackStats.ssrc;\n    var trackMovingAverageDeltas = movingAverageDeltas.get(key) || new Map();\n    if (typeof totalEncodeTime === 'number' && typeof framesEncoded === 'number') {\n        var trackAvgEncodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgEncodeDelay')\n            || new MovingAverageDelta();\n        trackAvgEncodeDelayMovingAverageDelta.putSample(totalEncodeTime * 1000, framesEncoded);\n        augmentedTrackStats.avgEncodeDelay = Math.round(trackAvgEncodeDelayMovingAverageDelta.get());\n        trackMovingAverageDeltas.set('avgEncodeDelay', trackAvgEncodeDelayMovingAverageDelta);\n    }\n    if (typeof totalPacketSendDelay === 'number' && typeof packetsSent === 'number') {\n        var trackAvgPacketSendDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgPacketSendDelay')\n            || new MovingAverageDelta();\n        trackAvgPacketSendDelayMovingAverageDelta.putSample(totalPacketSendDelay * 1000, packetsSent);\n        augmentedTrackStats.avgPacketSendDelay = Math.round(trackAvgPacketSendDelayMovingAverageDelta.get());\n        trackMovingAverageDeltas.set('avgPacketSendDelay', trackAvgPacketSendDelayMovingAverageDelta);\n    }\n    movingAverageDeltas.set(key, trackMovingAverageDeltas);\n    return augmentedTrackStats;\n}\n/**\n * NOTE(mmalavalli): Since A/V sync metrics are not part of the public StatsReport class, we add them\n * only for reporting purposes.\n * @private\n */\nfunction addAVSyncMetricsToRemoteTrackStats(trackStats, trackResponse, movingAverageDeltas) {\n    var estimatedPlayoutTimestamp = trackResponse.estimatedPlayoutTimestamp, framesDecoded = trackResponse.framesDecoded, jitterBufferDelay = trackResponse.jitterBufferDelay, jitterBufferEmittedCount = trackResponse.jitterBufferEmittedCount, totalDecodeTime = trackResponse.totalDecodeTime;\n    var augmentedTrackStats = Object.assign({}, trackStats);\n    var key = trackStats.trackSid + \"+\" + trackStats.ssrc;\n    var trackMovingAverageDeltas = movingAverageDeltas.get(key) || new Map();\n    if (typeof estimatedPlayoutTimestamp === 'number') {\n        augmentedTrackStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n    }\n    if (typeof framesDecoded === 'number' && typeof totalDecodeTime === 'number') {\n        var trackAvgDecodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgDecodeDelay')\n            || new MovingAverageDelta();\n        trackAvgDecodeDelayMovingAverageDelta.putSample(totalDecodeTime * 1000, framesDecoded);\n        augmentedTrackStats.avgDecodeDelay = Math.round(trackAvgDecodeDelayMovingAverageDelta.get());\n        trackMovingAverageDeltas.set('avgDecodeDelay', trackAvgDecodeDelayMovingAverageDelta);\n    }\n    if (typeof jitterBufferDelay === 'number' && typeof jitterBufferEmittedCount === 'number') {\n        var trackAvgJitterBufferDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgJitterBufferDelay')\n            || new MovingAverageDelta();\n        trackAvgJitterBufferDelayMovingAverageDelta.putSample(jitterBufferDelay * 1000, jitterBufferEmittedCount);\n        augmentedTrackStats.avgJitterBufferDelay = Math.round(trackAvgJitterBufferDelayMovingAverageDelta.get());\n        trackMovingAverageDeltas.set('avgJitterBufferDelay', trackAvgJitterBufferDelayMovingAverageDelta);\n    }\n    movingAverageDeltas.set(key, trackMovingAverageDeltas);\n    return augmentedTrackStats;\n}\nfunction replaceNullsWithDefaults(activeIceCandidatePair, peerConnectionId) {\n    activeIceCandidatePair = Object.assign({\n        availableIncomingBitrate: 0,\n        availableOutgoingBitrate: 0,\n        bytesReceived: 0,\n        bytesSent: 0,\n        consentRequestsSent: 0,\n        currentRoundTripTime: 0,\n        lastPacketReceivedTimestamp: 0,\n        lastPacketSentTimestamp: 0,\n        nominated: false,\n        peerConnectionId: peerConnectionId,\n        priority: 0,\n        readable: false,\n        requestsReceived: 0,\n        requestsSent: 0,\n        responsesReceived: 0,\n        responsesSent: 0,\n        retransmissionsReceived: 0,\n        retransmissionsSent: 0,\n        state: 'failed',\n        totalRoundTripTime: 0,\n        transportId: '',\n        writable: false\n    }, filterObject(activeIceCandidatePair || {}, null));\n    activeIceCandidatePair.localCandidate = Object.assign({\n        candidateType: 'host',\n        deleted: false,\n        ip: '',\n        port: 0,\n        priority: 0,\n        protocol: 'udp',\n        url: ''\n    }, filterObject(activeIceCandidatePair.localCandidate || {}, null));\n    activeIceCandidatePair.remoteCandidate = Object.assign({\n        candidateType: 'host',\n        ip: '',\n        port: 0,\n        priority: 0,\n        protocol: 'udp',\n        url: ''\n    }, filterObject(activeIceCandidatePair.remoteCandidate || {}, null));\n    return activeIceCandidatePair;\n}\nmodule.exports = RoomV2;\n//# sourceMappingURL=room.js.map","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n                '_'\n            ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** Predicates\n *\n * These predicates return true/false based on the input.\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_predicates\n */\n/** */\nvar hof_1 = require(\"./hof\");\nvar stateObject_1 = require(\"../state/stateObject\");\nvar toStr = Object.prototype.toString;\nvar tis = function (t) { return function (x) { return typeof (x) === t; }; };\nexports.isUndefined = tis('undefined');\nexports.isDefined = hof_1.not(exports.isUndefined);\nexports.isNull = function (o) { return o === null; };\nexports.isNullOrUndefined = hof_1.or(exports.isNull, exports.isUndefined);\nexports.isFunction = tis('function');\nexports.isNumber = tis('number');\nexports.isString = tis('string');\nexports.isObject = function (x) { return x !== null && typeof x === 'object'; };\nexports.isArray = Array.isArray;\nexports.isDate = (function (x) { return toStr.call(x) === '[object Date]'; });\nexports.isRegExp = (function (x) { return toStr.call(x) === '[object RegExp]'; });\nexports.isState = stateObject_1.StateObject.isState;\n/**\n * Predicate which checks if a value is injectable\n *\n * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n * where all the elements in the array are Strings, except the last one, which is a Function\n */\nfunction isInjectable(val) {\n    if (exports.isArray(val) && val.length) {\n        var head = val.slice(0, -1), tail = val.slice(-1);\n        return !(head.filter(hof_1.not(exports.isString)).length || tail.filter(hof_1.not(exports.isFunction)).length);\n    }\n    return exports.isFunction(val);\n}\nexports.isInjectable = isInjectable;\n/**\n * Predicate which checks if a value looks like a Promise\n *\n * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n */\nexports.isPromise = hof_1.and(exports.isObject, hof_1.pipe(hof_1.prop('then'), exports.isFunction));\n//# sourceMappingURL=predicates.js.map","/*! \n * angular-hotkeys v1.7.0\n * https://chieffancypants.github.io/angular-hotkeys\n * Copyright (c) 2016 Wes Cruver\n * License: MIT\n */\n/*\n * angular-hotkeys\n *\n * Automatic keyboard shortcuts for your angular apps\n *\n * (c) 2016 Wes Cruver\n * License: MIT\n */\n\n(function() {\n\n  'use strict';\n\n  angular.module('cfp.hotkeys', []).provider('hotkeys', ['$injector', function($injector) {\n\n    /**\n     * Configurable setting to disable the cheatsheet entirely\n     * @type {Boolean}\n     */\n    this.includeCheatSheet = true;\n\n    /**\n     * Configurable setting to disable ngRoute hooks\n     * @type {Boolean}\n     */\n    this.useNgRoute = $injector.has('ngViewDirective');\n\n    /**\n     * Configurable setting for the cheat sheet title\n     * @type {String}\n     */\n\n    this.templateTitle = 'Keyboard Shortcuts:';\n\n    /**\n     * Configurable settings for the cheat sheet header and footer.  Both are HTML, and the header\n     * overrides the normal title if specified.\n     * @type {String}\n     */\n    this.templateHeader = null;\n    this.templateFooter = null;\n\n    /**\n     * Cheat sheet template in the event you want to totally customize it.\n     * @type {String}\n     */\n    this.template = '<div class=\"cfp-hotkeys-container fade\" ng-class=\"{in: helpVisible}\" style=\"display: none;\"><div class=\"cfp-hotkeys\">' +\n                      '<h4 class=\"cfp-hotkeys-title\" ng-if=\"!header\">{{ title }}</h4>' +\n                      '<div ng-bind-html=\"header\" ng-if=\"header\"></div>' +\n                      '<table><tbody>' +\n                        '<tr ng-repeat=\"hotkey in hotkeys | filter:{ description: \\'!$$undefined$$\\' }\">' +\n                          '<td class=\"cfp-hotkeys-keys\">' +\n                            '<span ng-repeat=\"key in hotkey.format() track by $index\" class=\"cfp-hotkeys-key\">{{ key }}</span>' +\n                          '</td>' +\n                          '<td class=\"cfp-hotkeys-text\">{{ hotkey.description }}</td>' +\n                        '</tr>' +\n                      '</tbody></table>' +\n                      '<div ng-bind-html=\"footer\" ng-if=\"footer\"></div>' +\n                      '<div class=\"cfp-hotkeys-close\" ng-click=\"toggleCheatSheet()\">&#215;</div>' +\n                    '</div></div>';\n\n    /**\n     * Configurable setting for the cheat sheet hotkey\n     * @type {String}\n     */\n    this.cheatSheetHotkey = '?';\n\n    /**\n     * Configurable setting for the cheat sheet description\n     * @type {String}\n     */\n    this.cheatSheetDescription = 'Show / hide this help menu';\n\n    this.$get = ['$rootElement', '$rootScope', '$compile', '$window', '$document', function ($rootElement, $rootScope, $compile, $window, $document) {\n\n      var mouseTrapEnabled = true;\n\n      function pause() {\n        mouseTrapEnabled = false;\n      }\n\n      function unpause() {\n        mouseTrapEnabled = true;\n      }\n\n      // monkeypatch Mousetrap's stopCallback() function\n      // this version doesn't return true when the element is an INPUT, SELECT, or TEXTAREA\n      // (instead we will perform this check per-key in the _add() method)\n      Mousetrap.prototype.stopCallback = function(event, element) {\n        if (!mouseTrapEnabled) {\n          return true;\n        }\n\n        // if the element has the class \"mousetrap\" then no need to stop\n        if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n          return false;\n        }\n\n        return (element.contentEditable && element.contentEditable == 'true');\n      };\n\n      /**\n       * Convert strings like cmd into symbols like ⌘\n       * @param  {String} combo Key combination, e.g. 'mod+f'\n       * @return {String}       The key combination with symbols\n       */\n      function symbolize (combo) {\n        var map = {\n          command   : '\\u2318',     // ⌘\n          shift     : '\\u21E7',     // ⇧\n          left      : '\\u2190',     // ←\n          right     : '\\u2192',     // →\n          up        : '\\u2191',     // ↑\n          down      : '\\u2193',     // ↓\n          'return'  : '\\u23CE',     // ⏎\n          backspace : '\\u232B'      // ⌫\n        };\n        combo = combo.split('+');\n\n        for (var i = 0; i < combo.length; i++) {\n          // try to resolve command / ctrl based on OS:\n          if (combo[i] === 'mod') {\n            if ($window.navigator && $window.navigator.platform.indexOf('Mac') >=0 ) {\n              combo[i] = 'command';\n            } else {\n              combo[i] = 'ctrl';\n            }\n          }\n\n          combo[i] = map[combo[i]] || combo[i];\n        }\n\n        return combo.join(' + ');\n      }\n\n      /**\n       * Hotkey object used internally for consistency\n       *\n       * @param {array}    combo       The keycombo. it's an array to support multiple combos\n       * @param {String}   description Description for the keycombo\n       * @param {Function} callback    function to execute when keycombo pressed\n       * @param {string}   action      the type of event to listen for (for mousetrap)\n       * @param {array}    allowIn     an array of tag names to allow this combo in ('INPUT', 'SELECT', and/or 'TEXTAREA')\n       * @param {Boolean}  persistent  Whether the hotkey persists navigation events\n       */\n      function Hotkey (combo, description, callback, action, allowIn, persistent) {\n        // TODO: Check that the values are sane because we could\n        // be trying to instantiate a new Hotkey with outside dev's\n        // supplied values\n\n        this.combo = combo instanceof Array ? combo : [combo];\n        this.description = description;\n        this.callback = callback;\n        this.action = action;\n        this.allowIn = allowIn;\n        this.persistent = persistent;\n        this._formated = null;\n      }\n\n      /**\n       * Helper method to format (symbolize) the key combo for display\n       *\n       * @return {[Array]} An array of the key combination sequence\n       *   for example: \"command+g c i\" becomes [\"⌘ + g\", \"c\", \"i\"]\n       *\n       */\n      Hotkey.prototype.format = function() {\n        if (this._formated === null) {\n          // Don't show all the possible key combos, just the first one.  Not sure\n          // of usecase here, so open a ticket if my assumptions are wrong\n          var combo = this.combo[0];\n\n          var sequence = combo.split(/[\\s]/);\n          for (var i = 0; i < sequence.length; i++) {\n            sequence[i] = symbolize(sequence[i]);\n          }\n          this._formated = sequence;\n        }\n\n        return this._formated;\n      };\n\n      /**\n       * A new scope used internally for the cheatsheet\n       * @type {$rootScope.Scope}\n       */\n      var scope = $rootScope.$new();\n\n      /**\n       * Holds an array of Hotkey objects currently bound\n       * @type {Array}\n       */\n      scope.hotkeys = [];\n\n      /**\n       * Contains the state of the help's visibility\n       * @type {Boolean}\n       */\n      scope.helpVisible = false;\n\n      /**\n       * Holds the title string for the help menu\n       * @type {String}\n       */\n      scope.title = this.templateTitle;\n\n      /**\n       * Holds the header HTML for the help menu\n       * @type {String}\n       */\n      scope.header = this.templateHeader;\n\n      /**\n       * Holds the footer HTML for the help menu\n       * @type {String}\n       */\n      scope.footer = this.templateFooter;\n\n      /**\n       * Expose toggleCheatSheet to hotkeys scope so we can call it using\n       * ng-click from the template\n       * @type {function}\n       */\n      scope.toggleCheatSheet = toggleCheatSheet;\n\n\n      /**\n       * Holds references to the different scopes that have bound hotkeys\n       * attached.  This is useful to catch when the scopes are `$destroy`d and\n       * then automatically unbind the hotkey.\n       *\n       * @type {Object}\n       */\n      var boundScopes = {};\n\n      if (this.useNgRoute) {\n        $rootScope.$on('$routeChangeSuccess', function (event, route) {\n          purgeHotkeys();\n\n          if (route && route.hotkeys) {\n            angular.forEach(route.hotkeys, function (hotkey) {\n              // a string was given, which implies this is a function that is to be\n              // $eval()'d within that controller's scope\n              // TODO: hotkey here is super confusing.  sometimes a function (that gets turned into an array), sometimes a string\n              var callback = hotkey[2];\n              if (typeof(callback) === 'string' || callback instanceof String) {\n                hotkey[2] = [callback, route];\n              }\n\n              // todo: perform check to make sure not already defined:\n              // this came from a route, so it's likely not meant to be persistent\n              hotkey[5] = false;\n              _add.apply(this, hotkey);\n            });\n          }\n        });\n      }\n\n\n\n      // Auto-create a help menu:\n      if (this.includeCheatSheet) {\n        var document = $document[0];\n        var element = $rootElement[0];\n        var helpMenu = angular.element(this.template);\n        _add(this.cheatSheetHotkey, this.cheatSheetDescription, toggleCheatSheet);\n\n        // If $rootElement is document or documentElement, then body must be used\n        if (element === document || element === document.documentElement) {\n          element = document.body;\n        }\n\n        angular.element(element).append($compile(helpMenu)(scope));\n      }\n\n\n      /**\n       * Purges all non-persistent hotkeys (such as those defined in routes)\n       *\n       * Without this, the same hotkey would get recreated everytime\n       * the route is accessed.\n       */\n      function purgeHotkeys() {\n        var i = scope.hotkeys.length;\n        while (i--) {\n          var hotkey = scope.hotkeys[i];\n          if (hotkey && !hotkey.persistent) {\n            _del(hotkey);\n          }\n        }\n      }\n\n      /**\n       * Toggles the help menu element's visiblity\n       */\n      var previousEsc = false;\n\n      function toggleCheatSheet() {\n        scope.helpVisible = !scope.helpVisible;\n\n        // Bind to esc to remove the cheat sheet.  Ideally, this would be done\n        // as a directive in the template, but that would create a nasty\n        // circular dependency issue that I don't feel like sorting out.\n        if (scope.helpVisible) {\n          previousEsc = _get('esc');\n          _del('esc');\n\n          // Here's an odd way to do this: we're going to use the original\n          // description of the hotkey on the cheat sheet so that it shows up.\n          // without it, no entry for esc will ever show up (#22)\n          _add('esc', previousEsc.description, toggleCheatSheet, null, ['INPUT', 'SELECT', 'TEXTAREA']);\n        } else {\n          _del('esc');\n\n          // restore the previously bound ESC key\n          if (previousEsc !== false) {\n            _add(previousEsc);\n          }\n        }\n      }\n\n      /**\n       * Creates a new Hotkey and creates the Mousetrap binding\n       *\n       * @param {string}   combo       mousetrap key binding\n       * @param {string}   description description for the help menu\n       * @param {Function} callback    method to call when key is pressed\n       * @param {string}   action      the type of event to listen for (for mousetrap)\n       * @param {array}    allowIn     an array of tag names to allow this combo in ('INPUT', 'SELECT', and/or 'TEXTAREA')\n       * @param {boolean}  persistent  if true, the binding is preserved upon route changes\n       */\n      function _add (combo, description, callback, action, allowIn, persistent) {\n\n        // used to save original callback for \"allowIn\" wrapping:\n        var _callback;\n\n        // these elements are prevented by the default Mousetrap.stopCallback():\n        var preventIn = ['INPUT', 'SELECT', 'TEXTAREA'];\n\n        // Determine if object format was given:\n        var objType = Object.prototype.toString.call(combo);\n\n        if (objType === '[object Object]') {\n          description = combo.description;\n          callback    = combo.callback;\n          action      = combo.action;\n          persistent  = combo.persistent;\n          allowIn     = combo.allowIn;\n          combo       = combo.combo;\n        }\n\n        // no duplicates please\n        _del(combo);\n\n        // description is optional:\n        if (description instanceof Function) {\n          action = callback;\n          callback = description;\n          description = '$$undefined$$';\n        } else if (angular.isUndefined(description)) {\n          description = '$$undefined$$';\n        }\n\n        // any items added through the public API are for controllers\n        // that persist through navigation, and thus undefined should mean\n        // true in this case.\n        if (persistent === undefined) {\n          persistent = true;\n        }\n        // if callback is defined, then wrap it in a function\n        // that checks if the event originated from a form element.\n        // the function blocks the callback from executing unless the element is specified\n        // in allowIn (emulates Mousetrap.stopCallback() on a per-key level)\n        if (typeof callback === 'function') {\n\n          // save the original callback\n          _callback = callback;\n\n          // make sure allowIn is an array\n          if (!(allowIn instanceof Array)) {\n            allowIn = [];\n          }\n\n          // remove anything from preventIn that's present in allowIn\n          var index;\n          for (var i=0; i < allowIn.length; i++) {\n            allowIn[i] = allowIn[i].toUpperCase();\n            index = preventIn.indexOf(allowIn[i]);\n            if (index !== -1) {\n              preventIn.splice(index, 1);\n            }\n          }\n\n          // create the new wrapper callback\n          callback = function(event) {\n            var shouldExecute = true;\n\n            // if the callback is executed directly `hotkey.get('w').callback()`\n            // there will be no event, so just execute the callback.\n            if (event) {\n              var target = event.target || event.srcElement; // srcElement is IE only\n              var nodeName = target.nodeName.toUpperCase();\n\n              // check if the input has a mousetrap class, and skip checking preventIn if so\n              if ((' ' + target.className + ' ').indexOf(' mousetrap ') > -1) {\n                shouldExecute = true;\n              } else {\n                // don't execute callback if the event was fired from inside an element listed in preventIn\n                for (var i=0; i<preventIn.length; i++) {\n                  if (preventIn[i] === nodeName) {\n                    shouldExecute = false;\n                    break;\n                  }\n                }\n              }\n            }\n\n            if (shouldExecute) {\n              wrapApply(_callback.apply(this, arguments));\n            }\n          };\n        }\n\n        if (typeof(action) === 'string') {\n          Mousetrap.bind(combo, wrapApply(callback), action);\n        } else {\n          Mousetrap.bind(combo, wrapApply(callback));\n        }\n\n        var hotkey = new Hotkey(combo, description, callback, action, allowIn, persistent);\n        scope.hotkeys.push(hotkey);\n        return hotkey;\n      }\n\n      /**\n       * delete and unbind a Hotkey\n       *\n       * @param  {mixed} hotkey   Either the bound key or an instance of Hotkey\n       * @return {boolean}        true if successful\n       */\n      function _del (hotkey) {\n        var combo = (hotkey instanceof Hotkey) ? hotkey.combo : hotkey;\n\n        Mousetrap.unbind(combo);\n\n        if (angular.isArray(combo)) {\n          var retStatus = true;\n          var i = combo.length;\n          while (i--) {\n            retStatus = _del(combo[i]) && retStatus;\n          }\n          return retStatus;\n        } else {\n          var index = scope.hotkeys.indexOf(_get(combo));\n\n          if (index > -1) {\n            // if the combo has other combos bound, don't unbind the whole thing, just the one combo:\n            if (scope.hotkeys[index].combo.length > 1) {\n              scope.hotkeys[index].combo.splice(scope.hotkeys[index].combo.indexOf(combo), 1);\n            } else {\n\n              // remove hotkey from bound scopes\n              angular.forEach(boundScopes, function (boundScope) {\n                var scopeIndex = boundScope.indexOf(scope.hotkeys[index]);\n                if (scopeIndex !== -1) {\n                    boundScope.splice(scopeIndex, 1);\n                }\n              });\n\n              scope.hotkeys.splice(index, 1);\n            }\n            return true;\n          }\n        }\n\n        return false;\n\n      }\n\n      /**\n       * Get a Hotkey object by key binding\n       *\n       * @param  {[string]} [combo]  the key the Hotkey is bound to. Returns all key bindings if no key is passed\n       * @return {Hotkey}          The Hotkey object\n       */\n      function _get (combo) {\n\n        if (!combo) {\n          return scope.hotkeys;\n        }\n\n        var hotkey;\n\n        for (var i = 0; i < scope.hotkeys.length; i++) {\n          hotkey = scope.hotkeys[i];\n\n          if (hotkey.combo.indexOf(combo) > -1) {\n            return hotkey;\n          }\n        }\n\n        return false;\n      }\n\n      /**\n       * Binds the hotkey to a particular scope.  Useful if the scope is\n       * destroyed, we can automatically destroy the hotkey binding.\n       *\n       * @param  {Object} scope The scope to bind to\n       */\n      function bindTo (scope) {\n        // Only initialize once to allow multiple calls for same scope.\n        if (!(scope.$id in boundScopes)) {\n\n          // Add the scope to the list of bound scopes\n          boundScopes[scope.$id] = [];\n\n          scope.$on('$destroy', function () {\n            var i = boundScopes[scope.$id].length;\n            while (i--) {\n              _del(boundScopes[scope.$id].pop());\n            }\n          });\n        }\n        // return an object with an add function so we can keep track of the\n        // hotkeys and their scope that we added via this chaining method\n        return {\n          add: function (args) {\n            var hotkey;\n\n            if (arguments.length > 1) {\n              hotkey = _add.apply(this, arguments);\n            } else {\n              hotkey = _add(args);\n            }\n\n            boundScopes[scope.$id].push(hotkey);\n            return this;\n          }\n        };\n      }\n\n      /**\n       * All callbacks sent to Mousetrap are wrapped using this function\n       * so that we can force a $scope.$apply()\n       *\n       * @param  {Function} callback [description]\n       * @return {[type]}            [description]\n       */\n      function wrapApply (callback) {\n        // return mousetrap a function to call\n        return function (event, combo) {\n\n          // if this is an array, it means we provided a route object\n          // because the scope wasn't available yet, so rewrap the callback\n          // now that the scope is available:\n          if (callback instanceof Array) {\n            var funcString = callback[0];\n            var route = callback[1];\n            callback = function (event) {\n              route.scope.$eval(funcString);\n            };\n          }\n\n          // this takes place outside angular, so we'll have to call\n          // $apply() to make sure angular's digest happens\n          $rootScope.$apply(function() {\n            // call the original hotkey callback with the keyboard event\n            callback(event, _get(combo));\n          });\n        };\n      }\n\n      var publicApi = {\n        add                   : _add,\n        del                   : _del,\n        get                   : _get,\n        bindTo                : bindTo,\n        template              : this.template,\n        toggleCheatSheet      : toggleCheatSheet,\n        includeCheatSheet     : this.includeCheatSheet,\n        cheatSheetHotkey      : this.cheatSheetHotkey,\n        cheatSheetDescription : this.cheatSheetDescription,\n        useNgRoute            : this.useNgRoute,\n        purgeHotkeys          : purgeHotkeys,\n        templateTitle         : this.templateTitle,\n        pause                 : pause,\n        unpause               : unpause\n      };\n\n      return publicApi;\n\n    }];\n\n\n  }])\n\n  .directive('hotkey', ['hotkeys', function (hotkeys) {\n    return {\n      restrict: 'A',\n      link: function (scope, el, attrs) {\n        var keys = [],\n            allowIn;\n\n        angular.forEach(scope.$eval(attrs.hotkey), function (func, hotkey) {\n          // split and trim the hotkeys string into array\n          allowIn = typeof attrs.hotkeyAllowIn === \"string\" ? attrs.hotkeyAllowIn.split(/[\\s,]+/) : [];\n\n          keys.push(hotkey);\n\n          hotkeys.add({\n            combo: hotkey,\n            description: attrs.hotkeyDescription,\n            callback: func,\n            action: attrs.hotkeyAction,\n            allowIn: allowIn\n          });\n        });\n\n        // remove the hotkey if the directive is destroyed:\n        el.bind('$destroy', function() {\n          angular.forEach(keys, hotkeys.del);\n        });\n      }\n    };\n  }])\n\n  .run(['hotkeys', function(hotkeys) {\n    // force hotkeys to run by injecting it. Without this, hotkeys only runs\n    // when a controller or something else asks for it via DI.\n  }]);\n\n})();\n\n/*global define:false */\n/**\n * Copyright 2015 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.5.2\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n    /**\n     * mapping of special keycodes to their corresponding keys\n     *\n     * everything in this dictionary cannot use keypress events\n     * so it has to be here to map to the correct keycodes for\n     * keyup/keydown events\n     *\n     * @type {Object}\n     */\n    var _MAP = {\n        8: 'backspace',\n        9: 'tab',\n        13: 'enter',\n        16: 'shift',\n        17: 'ctrl',\n        18: 'alt',\n        20: 'capslock',\n        27: 'esc',\n        32: 'space',\n        33: 'pageup',\n        34: 'pagedown',\n        35: 'end',\n        36: 'home',\n        37: 'left',\n        38: 'up',\n        39: 'right',\n        40: 'down',\n        45: 'ins',\n        46: 'del',\n        91: 'meta',\n        93: 'meta',\n        224: 'meta'\n    };\n\n    /**\n     * mapping for special characters so they can support\n     *\n     * this dictionary is only used incase you want to bind a\n     * keyup or keydown event to one of these keys\n     *\n     * @type {Object}\n     */\n    var _KEYCODE_MAP = {\n        106: '*',\n        107: '+',\n        109: '-',\n        110: '.',\n        111 : '/',\n        186: ';',\n        187: '=',\n        188: ',',\n        189: '-',\n        190: '.',\n        191: '/',\n        192: '`',\n        219: '[',\n        220: '\\\\',\n        221: ']',\n        222: '\\''\n    };\n\n    /**\n     * this is a mapping of keys that require shift on a US keypad\n     * back to the non shift equivelents\n     *\n     * this is so you can use keyup events with these keys\n     *\n     * note that this will only work reliably on US keyboards\n     *\n     * @type {Object}\n     */\n    var _SHIFT_MAP = {\n        '~': '`',\n        '!': '1',\n        '@': '2',\n        '#': '3',\n        '$': '4',\n        '%': '5',\n        '^': '6',\n        '&': '7',\n        '*': '8',\n        '(': '9',\n        ')': '0',\n        '_': '-',\n        '+': '=',\n        ':': ';',\n        '\\\"': '\\'',\n        '<': ',',\n        '>': '.',\n        '?': '/',\n        '|': '\\\\'\n    };\n\n    /**\n     * this is a list of special strings you can use to map\n     * to modifier keys when you specify your keyboard shortcuts\n     *\n     * @type {Object}\n     */\n    var _SPECIAL_ALIASES = {\n        'option': 'alt',\n        'command': 'meta',\n        'return': 'enter',\n        'escape': 'esc',\n        'plus': '+',\n        'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n    };\n\n    /**\n     * variable to store the flipped version of _MAP from above\n     * needed to check if we should use keypress or not when no action\n     * is specified\n     *\n     * @type {Object|undefined}\n     */\n    var _REVERSE_MAP;\n\n    /**\n     * loop through the f keys, f1 to f19 and add them to the map\n     * programatically\n     */\n    for (var i = 1; i < 20; ++i) {\n        _MAP[111 + i] = 'f' + i;\n    }\n\n    /**\n     * loop through to map numbers on the numeric keypad\n     */\n    for (i = 0; i <= 9; ++i) {\n        _MAP[i + 96] = i;\n    }\n\n    /**\n     * cross browser add event method\n     *\n     * @param {Element|HTMLDocument} object\n     * @param {string} type\n     * @param {Function} callback\n     * @returns void\n     */\n    function _addEvent(object, type, callback) {\n        if (object.addEventListener) {\n            object.addEventListener(type, callback, false);\n            return;\n        }\n\n        object.attachEvent('on' + type, callback);\n    }\n\n    /**\n     * takes the event and returns the key character\n     *\n     * @param {Event} e\n     * @return {string}\n     */\n    function _characterFromEvent(e) {\n\n        // for keypress events we should return the character as is\n        if (e.type == 'keypress') {\n            var character = String.fromCharCode(e.which);\n\n            // if the shift key is not pressed then it is safe to assume\n            // that we want the character to be lowercase.  this means if\n            // you accidentally have caps lock on then your key bindings\n            // will continue to work\n            //\n            // the only side effect that might not be desired is if you\n            // bind something like 'A' cause you want to trigger an\n            // event when capital A is pressed caps lock will no longer\n            // trigger the event.  shift+a will though.\n            if (!e.shiftKey) {\n                character = character.toLowerCase();\n            }\n\n            return character;\n        }\n\n        // for non keypress events the special maps are needed\n        if (_MAP[e.which]) {\n            return _MAP[e.which];\n        }\n\n        if (_KEYCODE_MAP[e.which]) {\n            return _KEYCODE_MAP[e.which];\n        }\n\n        // if it is not in the special map\n\n        // with keydown and keyup events the character seems to always\n        // come in as an uppercase character whether you are pressing shift\n        // or not.  we should make sure it is always lowercase for comparisons\n        return String.fromCharCode(e.which).toLowerCase();\n    }\n\n    /**\n     * checks if two arrays are equal\n     *\n     * @param {Array} modifiers1\n     * @param {Array} modifiers2\n     * @returns {boolean}\n     */\n    function _modifiersMatch(modifiers1, modifiers2) {\n        return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n    }\n\n    /**\n     * takes a key event and figures out what the modifiers are\n     *\n     * @param {Event} e\n     * @returns {Array}\n     */\n    function _eventModifiers(e) {\n        var modifiers = [];\n\n        if (e.shiftKey) {\n            modifiers.push('shift');\n        }\n\n        if (e.altKey) {\n            modifiers.push('alt');\n        }\n\n        if (e.ctrlKey) {\n            modifiers.push('ctrl');\n        }\n\n        if (e.metaKey) {\n            modifiers.push('meta');\n        }\n\n        return modifiers;\n    }\n\n    /**\n     * prevents default for this event\n     *\n     * @param {Event} e\n     * @returns void\n     */\n    function _preventDefault(e) {\n        if (e.preventDefault) {\n            e.preventDefault();\n            return;\n        }\n\n        e.returnValue = false;\n    }\n\n    /**\n     * stops propogation for this event\n     *\n     * @param {Event} e\n     * @returns void\n     */\n    function _stopPropagation(e) {\n        if (e.stopPropagation) {\n            e.stopPropagation();\n            return;\n        }\n\n        e.cancelBubble = true;\n    }\n\n    /**\n     * determines if the keycode specified is a modifier key or not\n     *\n     * @param {string} key\n     * @returns {boolean}\n     */\n    function _isModifier(key) {\n        return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n    }\n\n    /**\n     * reverses the map lookup so that we can look for specific keys\n     * to see what can and can't use keypress\n     *\n     * @return {Object}\n     */\n    function _getReverseMap() {\n        if (!_REVERSE_MAP) {\n            _REVERSE_MAP = {};\n            for (var key in _MAP) {\n\n                // pull out the numeric keypad from here cause keypress should\n                // be able to detect the keys from the character\n                if (key > 95 && key < 112) {\n                    continue;\n                }\n\n                if (_MAP.hasOwnProperty(key)) {\n                    _REVERSE_MAP[_MAP[key]] = key;\n                }\n            }\n        }\n        return _REVERSE_MAP;\n    }\n\n    /**\n     * picks the best action based on the key combination\n     *\n     * @param {string} key - character for key\n     * @param {Array} modifiers\n     * @param {string=} action passed in\n     */\n    function _pickBestAction(key, modifiers, action) {\n\n        // if no action was picked in we should try to pick the one\n        // that we think would work best for this key\n        if (!action) {\n            action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n        }\n\n        // modifier keys don't work as expected with keypress,\n        // switch to keydown\n        if (action == 'keypress' && modifiers.length) {\n            action = 'keydown';\n        }\n\n        return action;\n    }\n\n    /**\n     * Converts from a string key combination to an array\n     *\n     * @param  {string} combination like \"command+shift+l\"\n     * @return {Array}\n     */\n    function _keysFromString(combination) {\n        if (combination === '+') {\n            return ['+'];\n        }\n\n        combination = combination.replace(/\\+{2}/g, '+plus');\n        return combination.split('+');\n    }\n\n    /**\n     * Gets info for a specific key combination\n     *\n     * @param  {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n     * @param  {string=} action\n     * @returns {Object}\n     */\n    function _getKeyInfo(combination, action) {\n        var keys;\n        var key;\n        var i;\n        var modifiers = [];\n\n        // take the keys from this pattern and figure out what the actual\n        // pattern is all about\n        keys = _keysFromString(combination);\n\n        for (i = 0; i < keys.length; ++i) {\n            key = keys[i];\n\n            // normalize key names\n            if (_SPECIAL_ALIASES[key]) {\n                key = _SPECIAL_ALIASES[key];\n            }\n\n            // if this is not a keypress event then we should\n            // be smart about using shift keys\n            // this will only work for US keyboards however\n            if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n                key = _SHIFT_MAP[key];\n                modifiers.push('shift');\n            }\n\n            // if this key is a modifier then add it to the list of modifiers\n            if (_isModifier(key)) {\n                modifiers.push(key);\n            }\n        }\n\n        // depending on what the key combination is\n        // we will try to pick the best event for it\n        action = _pickBestAction(key, modifiers, action);\n\n        return {\n            key: key,\n            modifiers: modifiers,\n            action: action\n        };\n    }\n\n    function _belongsTo(element, ancestor) {\n        if (element === document) {\n            return false;\n        }\n\n        if (element === ancestor) {\n            return true;\n        }\n\n        return _belongsTo(element.parentNode, ancestor);\n    }\n\n    function Mousetrap(targetElement) {\n        var self = this;\n\n        targetElement = targetElement || document;\n\n        if (!(self instanceof Mousetrap)) {\n            return new Mousetrap(targetElement);\n        }\n\n        /**\n         * element to attach key events to\n         *\n         * @type {Element}\n         */\n        self.target = targetElement;\n\n        /**\n         * a list of all the callbacks setup via Mousetrap.bind()\n         *\n         * @type {Object}\n         */\n        self._callbacks = {};\n\n        /**\n         * direct map of string combinations to callbacks used for trigger()\n         *\n         * @type {Object}\n         */\n        self._directMap = {};\n\n        /**\n         * keeps track of what level each sequence is at since multiple\n         * sequences can start out with the same sequence\n         *\n         * @type {Object}\n         */\n        var _sequenceLevels = {};\n\n        /**\n         * variable to store the setTimeout call\n         *\n         * @type {null|number}\n         */\n        var _resetTimer;\n\n        /**\n         * temporary state where we will ignore the next keyup\n         *\n         * @type {boolean|string}\n         */\n        var _ignoreNextKeyup = false;\n\n        /**\n         * temporary state where we will ignore the next keypress\n         *\n         * @type {boolean}\n         */\n        var _ignoreNextKeypress = false;\n\n        /**\n         * are we currently inside of a sequence?\n         * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n         *\n         * @type {boolean|string}\n         */\n        var _nextExpectedAction = false;\n\n        /**\n         * resets all sequence counters except for the ones passed in\n         *\n         * @param {Object} doNotReset\n         * @returns void\n         */\n        function _resetSequences(doNotReset) {\n            doNotReset = doNotReset || {};\n\n            var activeSequences = false,\n                key;\n\n            for (key in _sequenceLevels) {\n                if (doNotReset[key]) {\n                    activeSequences = true;\n                    continue;\n                }\n                _sequenceLevels[key] = 0;\n            }\n\n            if (!activeSequences) {\n                _nextExpectedAction = false;\n            }\n        }\n\n        /**\n         * finds all callbacks that match based on the keycode, modifiers,\n         * and action\n         *\n         * @param {string} character\n         * @param {Array} modifiers\n         * @param {Event|Object} e\n         * @param {string=} sequenceName - name of the sequence we are looking for\n         * @param {string=} combination\n         * @param {number=} level\n         * @returns {Array}\n         */\n        function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n            var i;\n            var callback;\n            var matches = [];\n            var action = e.type;\n\n            // if there are no events related to this keycode\n            if (!self._callbacks[character]) {\n                return [];\n            }\n\n            // if a modifier key is coming up on its own we should allow it\n            if (action == 'keyup' && _isModifier(character)) {\n                modifiers = [character];\n            }\n\n            // loop through all callbacks for the key that was pressed\n            // and see if any of them match\n            for (i = 0; i < self._callbacks[character].length; ++i) {\n                callback = self._callbacks[character][i];\n\n                // if a sequence name is not specified, but this is a sequence at\n                // the wrong level then move onto the next match\n                if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n                    continue;\n                }\n\n                // if the action we are looking for doesn't match the action we got\n                // then we should keep going\n                if (action != callback.action) {\n                    continue;\n                }\n\n                // if this is a keypress event and the meta key and control key\n                // are not pressed that means that we need to only look at the\n                // character, otherwise check the modifiers as well\n                //\n                // chrome will not fire a keypress if meta or control is down\n                // safari will fire a keypress if meta or meta+shift is down\n                // firefox will fire a keypress if meta or control is down\n                if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n                    // when you bind a combination or sequence a second time it\n                    // should overwrite the first one.  if a sequenceName or\n                    // combination is specified in this call it does just that\n                    //\n                    // @todo make deleting its own method?\n                    var deleteCombo = !sequenceName && callback.combo == combination;\n                    var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n                    if (deleteCombo || deleteSequence) {\n                        self._callbacks[character].splice(i, 1);\n                    }\n\n                    matches.push(callback);\n                }\n            }\n\n            return matches;\n        }\n\n        /**\n         * actually calls the callback function\n         *\n         * if your callback function returns false this will use the jquery\n         * convention - prevent default and stop propogation on the event\n         *\n         * @param {Function} callback\n         * @param {Event} e\n         * @returns void\n         */\n        function _fireCallback(callback, e, combo, sequence) {\n\n            // if this event should not happen stop here\n            if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n                return;\n            }\n\n            if (callback(e, combo) === false) {\n                _preventDefault(e);\n                _stopPropagation(e);\n            }\n        }\n\n        /**\n         * handles a character key event\n         *\n         * @param {string} character\n         * @param {Array} modifiers\n         * @param {Event} e\n         * @returns void\n         */\n        self._handleKey = function(character, modifiers, e) {\n            var callbacks = _getMatches(character, modifiers, e);\n            var i;\n            var doNotReset = {};\n            var maxLevel = 0;\n            var processedSequenceCallback = false;\n\n            // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n            for (i = 0; i < callbacks.length; ++i) {\n                if (callbacks[i].seq) {\n                    maxLevel = Math.max(maxLevel, callbacks[i].level);\n                }\n            }\n\n            // loop through matching callbacks for this key event\n            for (i = 0; i < callbacks.length; ++i) {\n\n                // fire for all sequence callbacks\n                // this is because if for example you have multiple sequences\n                // bound such as \"g i\" and \"g t\" they both need to fire the\n                // callback for matching g cause otherwise you can only ever\n                // match the first one\n                if (callbacks[i].seq) {\n\n                    // only fire callbacks for the maxLevel to prevent\n                    // subsequences from also firing\n                    //\n                    // for example 'a option b' should not cause 'option b' to fire\n                    // even though 'option b' is part of the other sequence\n                    //\n                    // any sequences that do not match here will be discarded\n                    // below by the _resetSequences call\n                    if (callbacks[i].level != maxLevel) {\n                        continue;\n                    }\n\n                    processedSequenceCallback = true;\n\n                    // keep a list of which sequences were matches for later\n                    doNotReset[callbacks[i].seq] = 1;\n                    _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n                    continue;\n                }\n\n                // if there were no sequence matches but we are still here\n                // that means this is a regular match so we should fire that\n                if (!processedSequenceCallback) {\n                    _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n                }\n            }\n\n            // if the key you pressed matches the type of sequence without\n            // being a modifier (ie \"keyup\" or \"keypress\") then we should\n            // reset all sequences that were not matched by this event\n            //\n            // this is so, for example, if you have the sequence \"h a t\" and you\n            // type \"h e a r t\" it does not match.  in this case the \"e\" will\n            // cause the sequence to reset\n            //\n            // modifier keys are ignored because you can have a sequence\n            // that contains modifiers such as \"enter ctrl+space\" and in most\n            // cases the modifier key will be pressed before the next key\n            //\n            // also if you have a sequence such as \"ctrl+b a\" then pressing the\n            // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n            //\n            // the \"keydown\" is expected when there is a modifier, but the\n            // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n            // after and that causes the sequence to reset\n            //\n            // we ignore keypresses in a sequence that directly follow a keydown\n            // for the same character\n            var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n            if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n                _resetSequences(doNotReset);\n            }\n\n            _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n        };\n\n        /**\n         * handles a keydown event\n         *\n         * @param {Event} e\n         * @returns void\n         */\n        function _handleKeyEvent(e) {\n\n            // normalize e.which for key events\n            // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n            if (typeof e.which !== 'number') {\n                e.which = e.keyCode;\n            }\n\n            var character = _characterFromEvent(e);\n\n            // no character found then stop\n            if (!character) {\n                return;\n            }\n\n            // need to use === for the character check because the character can be 0\n            if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n                _ignoreNextKeyup = false;\n                return;\n            }\n\n            self.handleKey(character, _eventModifiers(e), e);\n        }\n\n        /**\n         * called to set a 1 second timeout on the specified sequence\n         *\n         * this is so after each key press in the sequence you have 1 second\n         * to press the next key before you have to start over\n         *\n         * @returns void\n         */\n        function _resetSequenceTimer() {\n            clearTimeout(_resetTimer);\n            _resetTimer = setTimeout(_resetSequences, 1000);\n        }\n\n        /**\n         * binds a key sequence to an event\n         *\n         * @param {string} combo - combo specified in bind call\n         * @param {Array} keys\n         * @param {Function} callback\n         * @param {string=} action\n         * @returns void\n         */\n        function _bindSequence(combo, keys, callback, action) {\n\n            // start off by adding a sequence level record for this combination\n            // and setting the level to 0\n            _sequenceLevels[combo] = 0;\n\n            /**\n             * callback to increase the sequence level for this sequence and reset\n             * all other sequences that were active\n             *\n             * @param {string} nextAction\n             * @returns {Function}\n             */\n            function _increaseSequence(nextAction) {\n                return function() {\n                    _nextExpectedAction = nextAction;\n                    ++_sequenceLevels[combo];\n                    _resetSequenceTimer();\n                };\n            }\n\n            /**\n             * wraps the specified callback inside of another function in order\n             * to reset all sequence counters as soon as this sequence is done\n             *\n             * @param {Event} e\n             * @returns void\n             */\n            function _callbackAndReset(e) {\n                _fireCallback(callback, e, combo);\n\n                // we should ignore the next key up if the action is key down\n                // or keypress.  this is so if you finish a sequence and\n                // release the key the final key will not trigger a keyup\n                if (action !== 'keyup') {\n                    _ignoreNextKeyup = _characterFromEvent(e);\n                }\n\n                // weird race condition if a sequence ends with the key\n                // another sequence begins with\n                setTimeout(_resetSequences, 10);\n            }\n\n            // loop through keys one at a time and bind the appropriate callback\n            // function.  for any key leading up to the final one it should\n            // increase the sequence. after the final, it should reset all sequences\n            //\n            // if an action is specified in the original bind call then that will\n            // be used throughout.  otherwise we will pass the action that the\n            // next key in the sequence should match.  this allows a sequence\n            // to mix and match keypress and keydown events depending on which\n            // ones are better suited to the key provided\n            for (var i = 0; i < keys.length; ++i) {\n                var isFinal = i + 1 === keys.length;\n                var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n                _bindSingle(keys[i], wrappedCallback, action, combo, i);\n            }\n        }\n\n        /**\n         * binds a single keyboard combination\n         *\n         * @param {string} combination\n         * @param {Function} callback\n         * @param {string=} action\n         * @param {string=} sequenceName - name of sequence if part of sequence\n         * @param {number=} level - what part of the sequence the command is\n         * @returns void\n         */\n        function _bindSingle(combination, callback, action, sequenceName, level) {\n\n            // store a direct mapped reference for use with Mousetrap.trigger\n            self._directMap[combination + ':' + action] = callback;\n\n            // make sure multiple spaces in a row become a single space\n            combination = combination.replace(/\\s+/g, ' ');\n\n            var sequence = combination.split(' ');\n            var info;\n\n            // if this pattern is a sequence of keys then run through this method\n            // to reprocess each pattern one key at a time\n            if (sequence.length > 1) {\n                _bindSequence(combination, sequence, callback, action);\n                return;\n            }\n\n            info = _getKeyInfo(combination, action);\n\n            // make sure to initialize array if this is the first time\n            // a callback is added for this key\n            self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n            // remove an existing match if there is one\n            _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n            // add this call back to the array\n            // if it is a sequence put it at the beginning\n            // if not put it at the end\n            //\n            // this is important because the way these are processed expects\n            // the sequence ones to come first\n            self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n                callback: callback,\n                modifiers: info.modifiers,\n                action: info.action,\n                seq: sequenceName,\n                level: level,\n                combo: combination\n            });\n        }\n\n        /**\n         * binds multiple combinations to the same callback\n         *\n         * @param {Array} combinations\n         * @param {Function} callback\n         * @param {string|undefined} action\n         * @returns void\n         */\n        self._bindMultiple = function(combinations, callback, action) {\n            for (var i = 0; i < combinations.length; ++i) {\n                _bindSingle(combinations[i], callback, action);\n            }\n        };\n\n        // start!\n        _addEvent(targetElement, 'keypress', _handleKeyEvent);\n        _addEvent(targetElement, 'keydown', _handleKeyEvent);\n        _addEvent(targetElement, 'keyup', _handleKeyEvent);\n    }\n\n    /**\n     * binds an event to mousetrap\n     *\n     * can be a single key, a combination of keys separated with +,\n     * an array of keys, or a sequence of keys separated by spaces\n     *\n     * be sure to list the modifier keys first to make sure that the\n     * correct key ends up getting bound (the last key in the pattern)\n     *\n     * @param {string|Array} keys\n     * @param {Function} callback\n     * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n     * @returns void\n     */\n    Mousetrap.prototype.bind = function(keys, callback, action) {\n        var self = this;\n        keys = keys instanceof Array ? keys : [keys];\n        self._bindMultiple.call(self, keys, callback, action);\n        return self;\n    };\n\n    /**\n     * unbinds an event to mousetrap\n     *\n     * the unbinding sets the callback function of the specified key combo\n     * to an empty function and deletes the corresponding key in the\n     * _directMap dict.\n     *\n     * TODO: actually remove this from the _callbacks dictionary instead\n     * of binding an empty function\n     *\n     * the keycombo+action has to be exactly the same as\n     * it was defined in the bind method\n     *\n     * @param {string|Array} keys\n     * @param {string} action\n     * @returns void\n     */\n    Mousetrap.prototype.unbind = function(keys, action) {\n        var self = this;\n        return self.bind.call(self, keys, function() {}, action);\n    };\n\n    /**\n     * triggers an event that has already been bound\n     *\n     * @param {string} keys\n     * @param {string=} action\n     * @returns void\n     */\n    Mousetrap.prototype.trigger = function(keys, action) {\n        var self = this;\n        if (self._directMap[keys + ':' + action]) {\n            self._directMap[keys + ':' + action]({}, keys);\n        }\n        return self;\n    };\n\n    /**\n     * resets the library back to its initial state.  this is useful\n     * if you want to clear out the current keyboard shortcuts and bind\n     * new ones - for example if you switch to another page\n     *\n     * @returns void\n     */\n    Mousetrap.prototype.reset = function() {\n        var self = this;\n        self._callbacks = {};\n        self._directMap = {};\n        return self;\n    };\n\n    /**\n     * should we stop this event before firing off callbacks\n     *\n     * @param {Event} e\n     * @param {Element} element\n     * @return {boolean}\n     */\n    Mousetrap.prototype.stopCallback = function(e, element) {\n        var self = this;\n\n        // if the element has the class \"mousetrap\" then no need to stop\n        if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n            return false;\n        }\n\n        if (_belongsTo(element, self.target)) {\n            return false;\n        }\n\n        // stop for input, select, and textarea\n        return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n    };\n\n    /**\n     * exposes _handleKey publicly so it can be overwritten by extensions\n     */\n    Mousetrap.prototype.handleKey = function() {\n        var self = this;\n        return self._handleKey.apply(self, arguments);\n    };\n\n    /**\n     * Init the global mousetrap functions\n     *\n     * This method is needed to allow the global mousetrap functions to work\n     * now that mousetrap is a constructor function.\n     */\n    Mousetrap.init = function() {\n        var documentMousetrap = Mousetrap(document);\n        for (var method in documentMousetrap) {\n            if (method.charAt(0) !== '_') {\n                Mousetrap[method] = (function(method) {\n                    return function() {\n                        return documentMousetrap[method].apply(documentMousetrap, arguments);\n                    };\n                } (method));\n            }\n        }\n    };\n\n    Mousetrap.init();\n\n    // expose mousetrap to the global object\n    window.Mousetrap = Mousetrap;\n\n    // expose as a common js module\n    if (typeof module !== 'undefined' && module.exports) {\n        module.exports = Mousetrap;\n    }\n\n    // expose mousetrap as an AMD module\n    if (typeof define === 'function' && define.amd) {\n        define(function() {\n            return Mousetrap;\n        });\n    }\n}) (window, document);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTexture = exports.compileShader = exports.createProgram = exports.createPiplelineStageProgram = exports.glsl = void 0;\n/**\n * Use it along with boyswan.glsl-literal VSCode extension\n * to get GLSL syntax highlighting.\n * https://marketplace.visualstudio.com/items?itemName=boyswan.glsl-literal\n *\n * On VSCode OSS, boyswan.glsl-literal requires slevesque.shader extension\n * to be installed as well.\n * https://marketplace.visualstudio.com/items?itemName=slevesque.shader\n */\nexports.glsl = String.raw;\nfunction createPiplelineStageProgram(gl, vertexShader, fragmentShader, positionBuffer, texCoordBuffer) {\n    var program = createProgram(gl, vertexShader, fragmentShader);\n    var positionAttributeLocation = gl.getAttribLocation(program, 'a_position');\n    gl.enableVertexAttribArray(positionAttributeLocation);\n    gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n    gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0);\n    var texCoordAttributeLocation = gl.getAttribLocation(program, 'a_texCoord');\n    gl.enableVertexAttribArray(texCoordAttributeLocation);\n    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n    gl.vertexAttribPointer(texCoordAttributeLocation, 2, gl.FLOAT, false, 0, 0);\n    return program;\n}\nexports.createPiplelineStageProgram = createPiplelineStageProgram;\nfunction createProgram(gl, vertexShader, fragmentShader) {\n    var program = gl.createProgram();\n    gl.attachShader(program, vertexShader);\n    gl.attachShader(program, fragmentShader);\n    gl.linkProgram(program);\n    if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n        throw new Error(\"Could not link WebGL program: \".concat(gl.getProgramInfoLog(program)));\n    }\n    return program;\n}\nexports.createProgram = createProgram;\nfunction compileShader(gl, shaderType, shaderSource) {\n    var shader = gl.createShader(shaderType);\n    gl.shaderSource(shader, shaderSource);\n    gl.compileShader(shader);\n    if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n        throw new Error(\"Could not compile shader: \".concat(gl.getShaderInfoLog(shader)));\n    }\n    return shader;\n}\nexports.compileShader = compileShader;\nfunction createTexture(gl, internalformat, width, height, minFilter, magFilter) {\n    if (minFilter === void 0) { minFilter = gl.NEAREST; }\n    if (magFilter === void 0) { magFilter = gl.NEAREST; }\n    var texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);\n    gl.texStorage2D(gl.TEXTURE_2D, 1, internalformat, width, height);\n    return texture;\n}\nexports.createTexture = createTexture;\n//# sourceMappingURL=webglHelper.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _reactRouter = require(\"react-router\");\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequalwith\"));\n\nvar _actions = require(\"./actions\");\n\nvar _selectors = _interopRequireDefault(require(\"./selectors\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar createConnectedRouter = function createConnectedRouter(structure) {\n  var _createSelectors = (0, _selectors[\"default\"])(structure),\n      getLocation = _createSelectors.getLocation;\n  /*\n   * ConnectedRouter listens to a history object passed from props.\n   * When history is changed, it dispatches action to redux store.\n   * Then, store will pass props to component to render.\n   * This creates uni-directional flow from history->store->router->components.\n   */\n\n\n  var ConnectedRouter = /*#__PURE__*/function (_PureComponent) {\n    _inherits(ConnectedRouter, _PureComponent);\n\n    var _super = _createSuper(ConnectedRouter);\n\n    function ConnectedRouter(props) {\n      var _this;\n\n      _classCallCheck(this, ConnectedRouter);\n\n      _this = _super.call(this, props);\n      var store = props.store,\n          history = props.history,\n          onLocationChanged = props.onLocationChanged,\n          stateCompareFunction = props.stateCompareFunction;\n      _this.inTimeTravelling = false; // Subscribe to store changes to check if we are in time travelling\n\n      _this.unsubscribe = store.subscribe(function () {\n        // Allow time travel debugging compatibility to be turned off\n        // as the detection for this (below) is error prone in apps where the\n        // store may be unmounted, a navigation occurs, and then the store is re-mounted\n        // during the app's lifetime. Detection could be much improved if Redux DevTools\n        // simply set a global variable like `REDUX_DEVTOOLS_IS_TIME_TRAVELLING=true`.\n        var isTimeTravelDebuggingAllowed = !props.noTimeTravelDebugging; // Extract store's location\n\n        var _getLocation = getLocation(store.getState()),\n            pathnameInStore = _getLocation.pathname,\n            searchInStore = _getLocation.search,\n            hashInStore = _getLocation.hash,\n            stateInStore = _getLocation.state; // Extract history's location\n\n\n        var _history$location = history.location,\n            pathnameInHistory = _history$location.pathname,\n            searchInHistory = _history$location.search,\n            hashInHistory = _history$location.hash,\n            stateInHistory = _history$location.state; // If we do time travelling, the location in store is changed but location in history is not changed\n\n        if (isTimeTravelDebuggingAllowed && props.history.action === 'PUSH' && (pathnameInHistory !== pathnameInStore || searchInHistory !== searchInStore || hashInHistory !== hashInStore || !(0, _lodash[\"default\"])(stateInStore, stateInHistory, stateCompareFunction))) {\n          _this.inTimeTravelling = true; // Update history's location to match store's location\n\n          history.push({\n            pathname: pathnameInStore,\n            search: searchInStore,\n            hash: hashInStore,\n            state: stateInStore\n          });\n        }\n      });\n\n      var handleLocationChange = function handleLocationChange(location, action) {\n        var isFirstRendering = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n        // Dispatch onLocationChanged except when we're in time travelling\n        if (!_this.inTimeTravelling) {\n          onLocationChanged(location, action, isFirstRendering);\n        } else {\n          _this.inTimeTravelling = false;\n        }\n      }; // Listen to history changes\n\n\n      _this.unlisten = history.listen(handleLocationChange);\n\n      if (!props.noInitialPop) {\n        // Dispatch a location change action for the initial location.\n        // This makes it backward-compatible with react-router-redux.\n        // But, we add `isFirstRendering` to `true` to prevent double-rendering.\n        handleLocationChange(history.location, history.action, true);\n      }\n\n      return _this;\n    }\n\n    _createClass(ConnectedRouter, [{\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.unlisten();\n        this.unsubscribe();\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this$props = this.props,\n            omitRouter = _this$props.omitRouter,\n            history = _this$props.history,\n            children = _this$props.children; // The `omitRouter` option is available for applications that must\n        // have a Router instance higher in the component tree but still desire\n        // to use connected-react-router for its Redux integration.\n\n        if (omitRouter) {\n          return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, children);\n        }\n\n        return /*#__PURE__*/_react[\"default\"].createElement(_reactRouter.Router, {\n          history: history\n        }, children);\n      }\n    }]);\n\n    return ConnectedRouter;\n  }(_react.PureComponent);\n\n  ConnectedRouter.propTypes = {\n    store: _propTypes[\"default\"].shape({\n      getState: _propTypes[\"default\"].func.isRequired,\n      subscribe: _propTypes[\"default\"].func.isRequired\n    }).isRequired,\n    history: _propTypes[\"default\"].shape({\n      action: _propTypes[\"default\"].string.isRequired,\n      listen: _propTypes[\"default\"].func.isRequired,\n      location: _propTypes[\"default\"].object.isRequired,\n      push: _propTypes[\"default\"].func.isRequired\n    }).isRequired,\n    basename: _propTypes[\"default\"].string,\n    children: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n    onLocationChanged: _propTypes[\"default\"].func.isRequired,\n    noInitialPop: _propTypes[\"default\"].bool,\n    noTimeTravelDebugging: _propTypes[\"default\"].bool,\n    stateCompareFunction: _propTypes[\"default\"].func,\n    omitRouter: _propTypes[\"default\"].bool\n  };\n\n  var mapDispatchToProps = function mapDispatchToProps(dispatch) {\n    return {\n      onLocationChanged: function onLocationChanged(location, action, isFirstRendering) {\n        return dispatch((0, _actions.onLocationChanged)(location, action, isFirstRendering));\n      }\n    };\n  };\n\n  var ConnectedRouterWithContext = function ConnectedRouterWithContext(props) {\n    var Context = props.context || _reactRedux.ReactReduxContext;\n\n    if (Context == null) {\n      throw 'Please upgrade to react-redux v6';\n    }\n\n    return /*#__PURE__*/_react[\"default\"].createElement(Context.Consumer, null, function (_ref) {\n      var store = _ref.store;\n      return /*#__PURE__*/_react[\"default\"].createElement(ConnectedRouter, _extends({\n        store: store\n      }, props));\n    });\n  };\n\n  ConnectedRouterWithContext.propTypes = {\n    context: _propTypes[\"default\"].object\n  };\n  return (0, _reactRedux.connect)(null, mapDispatchToProps)(ConnectedRouterWithContext);\n};\n\nvar _default = createConnectedRouter;\nexports[\"default\"] = _default;","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  disabled: false,\n  as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      href = _ref.href,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n    href: href,\n    ref: ref,\n    eventKey: eventKey,\n    as: as,\n    disabled: disabled,\n    onSelect: onSelect,\n    className: classNames(className, bsPrefix, disabled && 'disabled')\n  }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n  justify: false,\n  fill: false\n};\nvar Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n  var _classNames;\n\n  var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n    activeKey: 'onSelect'\n  }),\n      _useUncontrolled$as = _useUncontrolled.as,\n      as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      initialBsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      fill = _useUncontrolled.fill,\n      justify = _useUncontrolled.justify,\n      navbar = _useUncontrolled.navbar,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      activeKey = _useUncontrolled.activeKey,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n  var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n  var navbarBsPrefix;\n  var cardHeaderBsPrefix;\n  var isNavbar = false;\n  var navbarContext = useContext(NavbarContext);\n  var cardContext = useContext(CardContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    isNavbar = navbar == null ? true : navbar;\n  } else if (cardContext) {\n    cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n  }\n\n  return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + \"-nav\"] = isNavbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n  }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport requiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useUncontrolled } from 'uncontrollable';\nimport Nav from './Nav';\nimport NavLink from './NavLink';\nimport NavItem from './NavItem';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { forEach, map } from './ElementChildren';\nvar defaultProps = {\n  variant: 'tabs',\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  var defaultActiveKey;\n  forEach(children, function (child) {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n  return defaultActiveKey;\n}\n\nfunction renderTab(child) {\n  var _child$props = child.props,\n      title = _child$props.title,\n      eventKey = _child$props.eventKey,\n      disabled = _child$props.disabled,\n      tabClassName = _child$props.tabClassName,\n      id = _child$props.id;\n\n  if (title == null) {\n    return null;\n  }\n\n  return /*#__PURE__*/React.createElement(NavItem, {\n    as: NavLink,\n    eventKey: eventKey,\n    disabled: disabled,\n    id: id,\n    className: tabClassName\n  }, title);\n}\n\nvar Tabs = function Tabs(props) {\n  var _useUncontrolled = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  }),\n      id = _useUncontrolled.id,\n      onSelect = _useUncontrolled.onSelect,\n      transition = _useUncontrolled.transition,\n      mountOnEnter = _useUncontrolled.mountOnEnter,\n      unmountOnExit = _useUncontrolled.unmountOnExit,\n      children = _useUncontrolled.children,\n      _useUncontrolled$acti = _useUncontrolled.activeKey,\n      activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"id\", \"onSelect\", \"transition\", \"mountOnEnter\", \"unmountOnExit\", \"children\", \"activeKey\"]);\n\n  return /*#__PURE__*/React.createElement(TabContainer, {\n    id: id,\n    activeKey: activeKey,\n    onSelect: onSelect,\n    transition: transition,\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: unmountOnExit\n  }, /*#__PURE__*/React.createElement(Nav, _extends({}, controlledProps, {\n    role: \"tablist\",\n    as: \"nav\"\n  }), map(children, renderTab)), /*#__PURE__*/React.createElement(TabContent, null, map(children, function (child) {\n    var childProps = _extends({}, child.props);\n\n    delete childProps.title;\n    delete childProps.disabled;\n    delete childProps.tabClassName;\n    return /*#__PURE__*/React.createElement(TabPane, childProps);\n  })));\n};\n\nTabs.defaultProps = defaultProps;\nTabs.displayName = 'Tabs';\nexport default Tabs;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module resolve */\n/** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar trace_1 = require(\"../common/trace\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar interface_1 = require(\"./interface\");\nvar resolvable_1 = require(\"./resolvable\");\nvar pathUtils_1 = require(\"../path/pathUtils\");\nvar strings_1 = require(\"../common/strings\");\nvar common_2 = require(\"../common\");\nvar whens = interface_1.resolvePolicies.when;\nvar ALL_WHENS = [whens.EAGER, whens.LAZY];\nvar EAGER_WHENS = [whens.EAGER];\n// tslint:disable-next-line:no-inferrable-types\nexports.NATIVE_INJECTOR_TOKEN = 'Native Injector';\n/**\n * Encapsulates Dependency Injection for a path of nodes\n *\n * UI-Router states are organized as a tree.\n * A nested state has a path of ancestors to the root of the tree.\n * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n *\n * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n */\nvar ResolveContext = /** @class */ (function () {\n    function ResolveContext(_path) {\n        this._path = _path;\n    }\n    /** Gets all the tokens found in the resolve context, de-duplicated */\n    ResolveContext.prototype.getTokens = function () {\n        return this._path.reduce(function (acc, node) { return acc.concat(node.resolvables.map(function (r) { return r.token; })); }, []).reduce(common_1.uniqR, []);\n    };\n    /**\n     * Gets the Resolvable that matches the token\n     *\n     * Gets the last Resolvable that matches the token in this context, or undefined.\n     * Throws an error if it doesn't exist in the ResolveContext\n     */\n    ResolveContext.prototype.getResolvable = function (token) {\n        var matching = this._path.map(function (node) { return node.resolvables; })\n            .reduce(common_1.unnestR, [])\n            .filter(function (r) { return r.token === token; });\n        return common_1.tail(matching);\n    };\n    /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n    ResolveContext.prototype.getPolicy = function (resolvable) {\n        var node = this.findNode(resolvable);\n        return resolvable.getPolicy(node.state);\n    };\n    /**\n     * Returns a ResolveContext that includes a portion of this one\n     *\n     * Given a state, this method creates a new ResolveContext from this one.\n     * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n     *\n     * #### Why\n     *\n     * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n     * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n     * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n     * This method is used to create a narrower context when injecting ancestor nodes.\n     *\n     * @example\n     * `let ABCD = new ResolveContext([A, B, C, D]);`\n     *\n     * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n     * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n     * However, `B` should only be able to access resolvables from `A`, `B`.\n     *\n     * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n     * `let AB = ABCD.subcontext(a)`\n     */\n    ResolveContext.prototype.subContext = function (state) {\n        return new ResolveContext(pathUtils_1.PathUtils.subPath(this._path, function (node) { return node.state === state; }));\n    };\n    /**\n     * Adds Resolvables to the node that matches the state\n     *\n     * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n     * The resolvable is added to the node matching the `state` parameter.\n     *\n     * These new resolvables are not automatically fetched.\n     * The calling code should either fetch them, fetch something that depends on them,\n     * or rely on [[resolvePath]] being called when some state is being entered.\n     *\n     * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n     *\n     * @param newResolvables the new Resolvables\n     * @param state Used to find the node to put the resolvable on\n     */\n    ResolveContext.prototype.addResolvables = function (newResolvables, state) {\n        var node = common_1.find(this._path, hof_1.propEq('state', state));\n        var keys = newResolvables.map(function (r) { return r.token; });\n        node.resolvables = node.resolvables.filter(function (r) { return keys.indexOf(r.token) === -1; }).concat(newResolvables);\n    };\n    /**\n     * Returns a promise for an array of resolved path Element promises\n     *\n     * @param when\n     * @param trans\n     * @returns {Promise<any>|any}\n     */\n    ResolveContext.prototype.resolvePath = function (when, trans) {\n        var _this = this;\n        if (when === void 0) { when = 'LAZY'; }\n        // This option determines which 'when' policy Resolvables we are about to fetch.\n        var whenOption = common_1.inArray(ALL_WHENS, when) ? when : 'LAZY';\n        // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n        // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n        var matchedWhens = whenOption === interface_1.resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n        // get the subpath to the state argument, if provided\n        trace_1.trace.traceResolvePath(this._path, when, trans);\n        var matchesPolicy = function (acceptedVals, whenOrAsync) {\n            return function (resolvable) {\n                return common_1.inArray(acceptedVals, _this.getPolicy(resolvable)[whenOrAsync]);\n            };\n        };\n        // Trigger all the (matching) Resolvables in the path\n        // Reduce all the \"WAIT\" Resolvables into an array\n        var promises = this._path.reduce(function (acc, node) {\n            var nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n            var nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n            var wait = nodeResolvables.filter(hof_1.not(matchesPolicy(['NOWAIT'], 'async')));\n            // For the matching Resolvables, start their async fetch process.\n            var subContext = _this.subContext(node.state);\n            var getResult = function (r) { return r.get(subContext, trans)\n                .then(function (value) { return ({ token: r.token, value: value }); }); };\n            nowait.forEach(getResult);\n            return acc.concat(wait.map(getResult));\n        }, []);\n        // Wait for all the \"WAIT\" resolvables\n        return coreservices_1.services.$q.all(promises);\n    };\n    ResolveContext.prototype.injector = function () {\n        return this._injector || (this._injector = new UIInjectorImpl(this));\n    };\n    ResolveContext.prototype.findNode = function (resolvable) {\n        return common_1.find(this._path, function (node) { return common_1.inArray(node.resolvables, resolvable); });\n    };\n    /**\n     * Gets the async dependencies of a Resolvable\n     *\n     * Given a Resolvable, returns its dependencies as a Resolvable[]\n     */\n    ResolveContext.prototype.getDependencies = function (resolvable) {\n        var _this = this;\n        var node = this.findNode(resolvable);\n        // Find which other resolvables are \"visible\" to the `resolvable` argument\n        // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n        var subPath = pathUtils_1.PathUtils.subPath(this._path, function (x) { return x === node; }) || this._path;\n        var availableResolvables = subPath\n            .reduce(function (acc, _node) { return acc.concat(_node.resolvables); }, []) // all of subpath's resolvables\n            .filter(function (res) { return res !== resolvable; }); // filter out the `resolvable` argument\n        var getDependency = function (token) {\n            var matching = availableResolvables.filter(function (r) { return r.token === token; });\n            if (matching.length)\n                return common_1.tail(matching);\n            var fromInjector = _this.injector().getNative(token);\n            if (common_2.isUndefined(fromInjector)) {\n                throw new Error('Could not find Dependency Injection token: ' + strings_1.stringify(token));\n            }\n            return new resolvable_1.Resolvable(token, function () { return fromInjector; }, [], fromInjector);\n        };\n        return resolvable.deps.map(getDependency);\n    };\n    return ResolveContext;\n}());\nexports.ResolveContext = ResolveContext;\nvar UIInjectorImpl = /** @class */ (function () {\n    function UIInjectorImpl(context) {\n        this.context = context;\n        this.native = this.get(exports.NATIVE_INJECTOR_TOKEN) || coreservices_1.services.$injector;\n    }\n    UIInjectorImpl.prototype.get = function (token) {\n        var resolvable = this.context.getResolvable(token);\n        if (resolvable) {\n            if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n                return resolvable.get(this.context);\n            }\n            if (!resolvable.resolved) {\n                throw new Error('Resolvable async .get() not complete:' + strings_1.stringify(resolvable.token));\n            }\n            return resolvable.data;\n        }\n        return this.getNative(token);\n    };\n    UIInjectorImpl.prototype.getAsync = function (token) {\n        var resolvable = this.context.getResolvable(token);\n        if (resolvable)\n            return resolvable.get(this.context);\n        return coreservices_1.services.$q.when(this.native.get(token));\n    };\n    UIInjectorImpl.prototype.getNative = function (token) {\n        return this.native && this.native.get(token);\n    };\n    return UIInjectorImpl;\n}());\n//# sourceMappingURL=resolveContext.js.map","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _getStateName = require('./getStateName');\n\nvar _getStateName2 = _interopRequireDefault(_getStateName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (state, reducers, action) {\n  var reducerNames = Object.keys(reducers);\n\n  if (!reducerNames.length) {\n    return 'Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.';\n  }\n\n  var stateName = (0, _getStateName2.default)(action);\n\n  if (_immutable2.default.isImmutable ? !_immutable2.default.isImmutable(state) : !_immutable2.default.Iterable.isIterable(state)) {\n    return 'The ' + stateName + ' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: \"' + reducerNames.join('\", \"') + '\".';\n  }\n\n  var unexpectedStatePropertyNames = state.toSeq().keySeq().toArray().filter(function (name) {\n    return !reducers.hasOwnProperty(name);\n  });\n\n  if (unexpectedStatePropertyNames.length > 0) {\n    return 'Unexpected ' + (unexpectedStatePropertyNames.length === 1 ? 'property' : 'properties') + ' \"' + unexpectedStatePropertyNames.join('\", \"') + '\" found in ' + stateName + '. Expected to find one of the known reducer property names instead: \"' + reducerNames.join('\", \"') + '\". Unexpected properties will be ignored.';\n  }\n\n  return null;\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=getUnexpectedInvocationParameterMessage.js.map","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone:\n                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                    '_'\n                ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone:\n                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                    '_'\n                ),\n        },\n        weekdays: {\n            standalone:\n                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                    '_'\n                ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex:\n            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex:\n            /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalAudioTrackPublication} is a {@link LocalAudioTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"audio\"\n * @property {LocalAudioTrack} track - the {@link LocalAudioTrack}\n */\nvar LocalAudioTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalAudioTrackPublication, _super);\n    /**\n     * Construct a {@link LocalAudioTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalAudioTrack} track - the {@link LocalAudioTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalAudioTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalAudioTrackPublication.prototype.toString = function () {\n        return \"[LocalAudioTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n    };\n    return LocalAudioTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalAudioTrackPublication;\n//# sourceMappingURL=localaudiotrackpublication.js.map","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n*\n*\tVALIDATE: function\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a function.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isFunction( value )\n*\tValidates if a value is a function.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a function\n*/\nfunction isFunction( value ) {\n\treturn ( typeof value === 'function' );\n} // end FUNCTION isFunction()\n\n\n// EXPORTS //\n\nmodule.exports = isFunction;\n","'use strict';\n// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./util'), asLocalTrack = _a.asLocalTrack, asLocalTrackPublication = _a.asLocalTrackPublication, trackClass = _a.trackClass;\nvar _b = require('./util/constants'), E = _b.typeErrors, trackPriority = _b.trackPriority;\nvar validateLocalTrack = require('./util/validate').validateLocalTrack;\nvar _c = require('./media/track/es5'), LocalAudioTrack = _c.LocalAudioTrack, LocalDataTrack = _c.LocalDataTrack, LocalVideoTrack = _c.LocalVideoTrack;\nvar LocalAudioTrackPublication = require('./media/track/localaudiotrackpublication');\nvar LocalDataTrackPublication = require('./media/track/localdatatrackpublication');\nvar LocalVideoTrackPublication = require('./media/track/localvideotrackpublication');\nvar Participant = require('./participant');\n/**\n * A {@link LocalParticipant} represents the local {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map<Track.SID, LocalAudioTrackPublication>} audioTracks -\n *    The {@link LocalParticipant}'s {@link LocalAudioTrackPublication}s\n * @property {Map<Track.SID, LocalDataTrackPublication>} dataTracks -\n *    The {@link LocalParticipant}'s {@link LocalDataTrackPublication}s\n * @property {Map<Track.SID, LocalTrackPublication>} tracks -\n *    The {@link LocalParticipant}'s {@link LocalTrackPublication}s\n * @property {Map<Track.SID, LocalVideoTrackPublication>} videoTracks -\n *    The {@link LocalParticipant}'s {@link LocalVideoTrackPublication}s\n * @property {string} signalingRegion - The geographical region of the\n *     signaling edge the {@link LocalParticipant} is connected to.\n *\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits LocalParticipant#trackDimensionsChanged\n * @emits LocalParticipant#trackDisabled\n * @emits LocalParticipant#trackEnabled\n * @emits LocalParticipant#trackPublicationFailed\n * @emits LocalParticipant#trackPublished\n * @emits LocalParticipant#trackStarted\n * @emits LocalParticipant#trackStopped\n * @emits LocalParticipant#trackWarning\n * @emits LocalParticipant#trackWarningsCleared\n */\nvar LocalParticipant = /** @class */ (function (_super) {\n    __extends(LocalParticipant, _super);\n    /**\n     * Construct a {@link LocalParticipant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {Array<LocalTrack>} localTracks\n     * @param {Object} options\n     */\n    function LocalParticipant(signaling, localTracks, options) {\n        var _this = this;\n        options = Object.assign({\n            LocalAudioTrack: LocalAudioTrack,\n            LocalVideoTrack: LocalVideoTrack,\n            LocalDataTrack: LocalDataTrack,\n            MediaStreamTrack: MediaStreamTrack,\n            LocalAudioTrackPublication: LocalAudioTrackPublication,\n            LocalVideoTrackPublication: LocalVideoTrackPublication,\n            LocalDataTrackPublication: LocalDataTrackPublication,\n            shouldStopLocalTracks: false,\n            tracks: localTracks\n        }, options);\n        var tracksToStop = options.shouldStopLocalTracks\n            ? new Set(localTracks.filter(function (localTrack) { return localTrack.kind !== 'data'; }))\n            : new Set();\n        _this = _super.call(this, signaling, options) || this;\n        Object.defineProperties(_this, {\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _LocalAudioTrack: {\n                value: options.LocalAudioTrack\n            },\n            _LocalDataTrack: {\n                value: options.LocalDataTrack\n            },\n            _LocalVideoTrack: {\n                value: options.LocalVideoTrack\n            },\n            _MediaStreamTrack: {\n                value: options.MediaStreamTrack\n            },\n            _LocalAudioTrackPublication: {\n                value: options.LocalAudioTrackPublication\n            },\n            _LocalDataTrackPublication: {\n                value: options.LocalDataTrackPublication\n            },\n            _LocalVideoTrackPublication: {\n                value: options.LocalVideoTrackPublication\n            },\n            _tracksToStop: {\n                value: tracksToStop\n            },\n            signalingRegion: {\n                enumerable: true,\n                get: function () {\n                    return signaling.signalingRegion;\n                }\n            }\n        });\n        _this._handleTrackSignalingEvents();\n        return _this;\n    }\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.ID} id\n     * @param {Track.Priority} priority\n     * @returns {?LocalTrack}\n     */\n    LocalParticipant.prototype._addTrack = function (track, id, priority) {\n        var addedTrack = _super.prototype._addTrack.call(this, track, id);\n        if (addedTrack && this.state !== 'disconnected') {\n            this._addLocalTrack(track, priority);\n        }\n        return addedTrack;\n    };\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.Priority} priority\n     * @returns {void}\n     */\n    LocalParticipant.prototype._addLocalTrack = function (track, priority) {\n        var _a;\n        // check if track has noise cancellation enabled.\n        var vendor = (_a = track.noiseCancellation) === null || _a === void 0 ? void 0 : _a.vendor;\n        this._signaling.addTrack(track._trackSender, track.name, priority, vendor);\n        this._log.info(\"Added a new \" + trackClass(track, true) + \":\", track.id);\n        this._log.debug(trackClass(track, true) + \":\", track);\n    };\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.ID} id\n     * @returns {?LocalTrack}\n     */\n    LocalParticipant.prototype._removeTrack = function (track, id) {\n        var removedTrack = _super.prototype._removeTrack.call(this, track, id);\n        if (removedTrack && this.state !== 'disconnected') {\n            this._signaling.removeTrack(track._trackSender);\n            this._log.info(\"Removed a \" + trackClass(track, true) + \":\", track.id);\n            this._log.debug(trackClass(track, true) + \":\", track);\n        }\n        return removedTrack;\n    };\n    /**\n     * Get the {@link LocalTrack} events to re-emit.\n     * @private\n     * @returns {Array<Array<string>>} events\n     */\n    LocalParticipant.prototype._getTrackEvents = function () {\n        return _super.prototype._getTrackEvents.call(this).concat([\n            ['disabled', 'trackDisabled'],\n            ['enabled', 'trackEnabled'],\n            ['stopped', 'trackStopped']\n        ]);\n    };\n    LocalParticipant.prototype.toString = function () {\n        return \"[LocalParticipant #\" + this._instanceId + (this.sid ? \": \" + this.sid : '') + \"]\";\n    };\n    /**\n     * @private\n     */\n    LocalParticipant.prototype._handleTrackSignalingEvents = function () {\n        var _this = this;\n        var log = this._log;\n        if (this.state === 'disconnected') {\n            return;\n        }\n        var localTrackDisabled = function (localTrack) {\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.disable();\n                log.debug(\"Disabled the \" + trackClass(localTrack, true) + \":\", localTrack.id);\n            }\n        };\n        var localTrackEnabled = function (localTrack) {\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.enable();\n                log.debug(\"Enabled the \" + trackClass(localTrack, true) + \":\", localTrack.id);\n            }\n        };\n        var localTrackStopped = function (localTrack) {\n            // NOTE(mroberts): We shouldn't need to check for `stop`, since DataTracks\n            // do not emit \"stopped\".\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.stop();\n            }\n            return trackSignaling;\n        };\n        var stateChanged = function (state) {\n            log.debug('Transitioned to state:', state);\n            if (state === 'disconnected') {\n                log.debug('Removing LocalTrack event listeners');\n                _this._signaling.removeListener('stateChanged', stateChanged);\n                _this.removeListener('trackDisabled', localTrackDisabled);\n                _this.removeListener('trackEnabled', localTrackEnabled);\n                _this.removeListener('trackStopped', localTrackStopped);\n                // NOTE(mmalavalli): Remove the stale MediaTrackSender clones so that we\n                // do not call replaceTrack() on their RTCRtpSenders.\n                _this._tracks.forEach(function (track) {\n                    var trackSignaling = localTrackStopped(track);\n                    if (trackSignaling) {\n                        track._trackSender.removeClone(trackSignaling._trackTransceiver);\n                    }\n                });\n                log.info(\"LocalParticipant disconnected. Stopping \" + _this._tracksToStop.size + \" automatically-acquired LocalTracks\");\n                _this._tracksToStop.forEach(function (track) {\n                    track.stop();\n                });\n            }\n            else if (state === 'connected') {\n                // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n                // successful signaling reconnection, and not a first-time establishment\n                // of the signaling connection.\n                log.info('reconnected');\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return _this.emit('reconnected'); }, 0);\n            }\n        };\n        this.on('trackDisabled', localTrackDisabled);\n        this.on('trackEnabled', localTrackEnabled);\n        this.on('trackStopped', localTrackStopped);\n        this._signaling.on('stateChanged', stateChanged);\n        this._tracks.forEach(function (track) {\n            _this._addLocalTrack(track, trackPriority.PRIORITY_STANDARD);\n            _this._getOrCreateLocalTrackPublication(track).catch(function (error) {\n                // Just log a warning for now.\n                log.warn(\"Failed to get or create LocalTrackPublication for \" + track + \":\", error);\n            });\n        });\n    };\n    /**\n     * @private\n     * @param {LocalTrack} localTrack\n     * @returns {Promise<LocalTrackPublication>}\n     */\n    LocalParticipant.prototype._getOrCreateLocalTrackPublication = function (localTrack) {\n        var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n        if (localTrackPublication) {\n            return Promise.resolve(localTrackPublication);\n        }\n        var log = this._log;\n        var self = this;\n        var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n        if (!trackSignaling) {\n            return Promise.reject(new Error(\"Unexpected error: The \" + localTrack + \" cannot be published\"));\n        }\n        return new Promise(function (resolve, reject) {\n            function updated() {\n                var error = trackSignaling.error;\n                if (error) {\n                    trackSignaling.removeListener('updated', updated);\n                    log.warn(\"Failed to publish the \" + trackClass(localTrack, true) + \": \" + error.message);\n                    self._removeTrack(localTrack, localTrack.id);\n                    setTimeout(function () {\n                        self.emit('trackPublicationFailed', error, localTrack);\n                    });\n                    reject(error);\n                    return;\n                }\n                if (!self._tracks.has(localTrack.id)) {\n                    trackSignaling.removeListener('updated', updated);\n                    reject(new Error(\"The \" + localTrack + \" was unpublished\"));\n                    return;\n                }\n                var sid = trackSignaling.sid;\n                if (!sid) {\n                    return;\n                }\n                trackSignaling.removeListener('updated', updated);\n                var options = {\n                    log: log,\n                    LocalAudioTrackPublication: self._LocalAudioTrackPublication,\n                    LocalDataTrackPublication: self._LocalDataTrackPublication,\n                    LocalVideoTrackPublication: self._LocalVideoTrackPublication\n                };\n                localTrackPublication = getTrackPublication(self.tracks, localTrack);\n                var warningHandler = function (twilioWarningName) {\n                    return self.emit('trackWarning', twilioWarningName, localTrackPublication);\n                };\n                var warningsClearedHandler = function () {\n                    return self.emit('trackWarningsCleared', localTrackPublication);\n                };\n                var unpublish = function (publication) {\n                    localTrackPublication.removeListener('trackWarning', warningHandler);\n                    localTrackPublication.removeListener('trackWarningsCleared', warningsClearedHandler);\n                    self.unpublishTrack(publication.track);\n                };\n                if (!localTrackPublication) {\n                    localTrackPublication = asLocalTrackPublication(localTrack, trackSignaling, unpublish, options);\n                    self._addTrackPublication(localTrackPublication);\n                }\n                localTrackPublication.on('warning', warningHandler);\n                localTrackPublication.on('warningsCleared', warningsClearedHandler);\n                var state = self._signaling.state;\n                if (state === 'connected' || state === 'connecting') {\n                    if (localTrack._processorEventObserver) {\n                        localTrack._processorEventObserver.on('event', function (event) {\n                            self._eventObserver.emit('event', {\n                                name: event.name,\n                                payload: event.data,\n                                group: 'video-processor',\n                                level: 'info'\n                            });\n                        });\n                    }\n                    // NOTE(csantos): For tracks created before joining a room or already joined but about to publish it\n                    if (localTrack.processedTrack) {\n                        localTrack._captureFrames();\n                        localTrack._setSenderMediaStreamTrack(true);\n                    }\n                }\n                if (state === 'connected') {\n                    setTimeout(function () {\n                        self.emit('trackPublished', localTrackPublication);\n                    });\n                }\n                resolve(localTrackPublication);\n            }\n            trackSignaling.on('updated', updated);\n        });\n    };\n    /**\n     * Publishes a {@link LocalTrack} to the {@link Room}.\n     * @param {LocalTrack} localTrack - The {@link LocalTrack} to publish\n     * @param {LocalTrackPublishOptions} [options] - The {@link LocalTrackPublishOptions}\n     *   for publishing the {@link LocalTrack}\n     * @returns {Promise<LocalTrackPublication>} - Resolves with the corresponding\n     *   {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if either the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n     *   is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     * @throws {RangeError}\n     * @example\n     * var Video = require('twilio-video');\n     *\n     * Video.connect(token, {\n     *   name: 'my-cool-room',\n     *   audio: true\n     * }).then(function(room) {\n     *   return Video.createLocalVideoTrack({\n     *     name: 'camera'\n     *   }).then(function(localVideoTrack) {\n     *     return room.localParticipant.publishTrack(localVideoTrack, {\n     *       priority: 'high'\n     *     });\n     *   });\n     * }).then(function(publication) {\n     *   console.log('The LocalTrack \"' + publication.trackName\n     *     + '\" was successfully published with priority \"'\n     *     * publication.priority + '\"');\n     * });\n    */ /**\n     * Publishes a MediaStreamTrack to the {@link Room}.\n     * @param {MediaStreamTrack} mediaStreamTrack - The MediaStreamTrack\n     *   to publish; if a corresponding {@link LocalAudioTrack} or\n     *   {@link LocalVideoTrack} has not yet been published, this method will\n     *   construct one\n     * @param {MediaStreamTrackPublishOptions} [options] - The options for publishing\n     *   the MediaStreamTrack\n     * @returns {Promise<LocalTrackPublication>} - Resolves with the corresponding\n     *   {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n     *   is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     * @throws {RangeError}\n     * @example\n     * var Video = require('twilio-video');\n     *\n     * Video.connect(token, {\n     *   name: 'my-cool-room',\n     *   audio: true\n     * }).then(function(room) {\n     *   return navigator.mediaDevices.getUserMedia({\n     *     video: true\n     *   }).then(function(mediaStream) {\n     *     var mediaStreamTrack = mediaStream.getTracks()[0];\n     *     return room.localParticipant.publishTrack(mediaStreamTrack, {\n     *       name: 'camera',\n     *       priority: 'high'\n     *     });\n     *   });\n     * }).then(function(publication) {\n     *   console.log('The LocalTrack \"' + publication.trackName\n     *     + '\" was successfully published with priority \"'\n     *     * publication.priority + '\"');\n     * });\n     */\n    LocalParticipant.prototype.publishTrack = function (localTrackOrMediaStreamTrack, options) {\n        var trackPublication = getTrackPublication(this.tracks, localTrackOrMediaStreamTrack);\n        if (trackPublication) {\n            return Promise.resolve(trackPublication);\n        }\n        options = Object.assign({\n            log: this._log,\n            priority: trackPriority.PRIORITY_STANDARD,\n            LocalAudioTrack: this._LocalAudioTrack,\n            LocalDataTrack: this._LocalDataTrack,\n            LocalVideoTrack: this._LocalVideoTrack,\n            MediaStreamTrack: this._MediaStreamTrack\n        }, options);\n        var localTrack;\n        try {\n            localTrack = asLocalTrack(localTrackOrMediaStreamTrack, options);\n        }\n        catch (error) {\n            return Promise.reject(error);\n        }\n        var noiseCancellation = localTrack.noiseCancellation;\n        var allowedAudioProcessors = this._signaling.audioProcessors;\n        if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n            this._log.warn(noiseCancellation.vendor + \" is not supported in this room. disabling it permanently\");\n            noiseCancellation.disablePermanently();\n        }\n        var priorityValues = Object.values(trackPriority);\n        if (!priorityValues.includes(options.priority)) {\n            // eslint-disable-next-line new-cap\n            return Promise.reject(E.INVALID_VALUE('LocalTrackPublishOptions.priority', priorityValues));\n        }\n        var addedLocalTrack = this._addTrack(localTrack, localTrack.id, options.priority)\n            || this._tracks.get(localTrack.id);\n        return this._getOrCreateLocalTrackPublication(addedLocalTrack);\n    };\n    /**\n     * Publishes multiple {@link LocalTrack}s to the {@link Room}.\n     * @param {Array<LocalTrack|MediaStreamTrack>} tracks - The {@link LocalTrack}s\n     *   to publish; for any MediaStreamTracks provided, if a corresponding\n     *   {@link LocalAudioTrack} or {@link LocalVideoTrack} has not yet been\n     *   published, this method will construct one\n     * @returns {Promise<Array<LocalTrackPublication>>} - The resulting\n     *   {@link LocalTrackPublication}s if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}s\n     *   along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.publishTracks = function (tracks) {\n        if (!Array.isArray(tracks)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n        }\n        return Promise.all(tracks.map(this.publishTrack, this));\n    };\n    LocalParticipant.prototype.setBandwidthProfile = function () {\n        this._log.warn('setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js');\n    };\n    /**\n     * Sets the {@link NetworkQualityVerbosity} for the {@link LocalParticipant} and\n     * {@link RemoteParticipant}s. It does nothing if Network Quality is not enabled\n     * while calling {@link connect}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new\n     *   {@link NetworkQualityConfiguration}; If either or both of the local and\n     *   remote {@link NetworkQualityVerbosity} values are absent, then the corresponding\n     *   existing values are retained\n     * @returns {this}\n     * @example\n     * // Update verbosity levels for both LocalParticipant and RemoteParticipants\n     * localParticipant.setNetworkQualityConfiguration({\n     *   local: 1,\n     *   remote: 2\n     * });\n     * @example\n     * // Update verbosity level for only the LocalParticipant\n     * localParticipant.setNetworkQualityConfiguration({\n     *   local: 1\n     * });\n     *  @example\n     * // Update verbosity level for only the RemoteParticipants\n     * localParticipant.setNetworkQualityConfiguration({\n     *   remote: 2\n     * });\n     */\n    LocalParticipant.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n        if (typeof networkQualityConfiguration !== 'object'\n            || networkQualityConfiguration === null) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('networkQualityConfiguration', 'NetworkQualityConfiguration');\n        }\n        ['local', 'remote'].forEach(function (prop) {\n            if (prop in networkQualityConfiguration && (typeof networkQualityConfiguration[prop] !== 'number' || isNaN(networkQualityConfiguration[prop]))) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_TYPE(\"networkQualityConfiguration.\" + prop, 'number');\n            }\n        });\n        this._signaling.setNetworkQualityConfiguration(networkQualityConfiguration);\n        return this;\n    };\n    /**\n     * Set the {@link LocalParticipant}'s {@link EncodingParameters}.\n     * @param {?EncodingParameters} [encodingParameters] - The new\n     *   {@link EncodingParameters}; If null, then the bitrate limits are removed;\n     *   If not specified, then the existing bitrate limits are preserved\n     * @returns {this}\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.setParameters = function (encodingParameters) {\n        if (typeof encodingParameters !== 'undefined'\n            && typeof encodingParameters !== 'object') {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('encodingParameters', 'EncodingParameters, null or undefined');\n        }\n        if (encodingParameters) {\n            if (this._signaling.getParameters().adaptiveSimulcast && encodingParameters.maxVideoBitrate) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_TYPE('encodingParameters', 'encodingParameters.maxVideoBitrate is not compatible with \"preferredVideoCodecs=auto\"');\n            }\n            ['maxAudioBitrate', 'maxVideoBitrate'].forEach(function (prop) {\n                if (typeof encodingParameters[prop] !== 'undefined'\n                    && typeof encodingParameters[prop] !== 'number'\n                    && encodingParameters[prop] !== null) {\n                    // eslint-disable-next-line new-cap\n                    throw E.INVALID_TYPE(\"encodingParameters.\" + prop, 'number, null or undefined');\n                }\n            });\n        }\n        else if (encodingParameters === null) {\n            encodingParameters = { maxAudioBitrate: null, maxVideoBitrate: null };\n        }\n        this._signaling.setParameters(encodingParameters);\n        return this;\n    };\n    /**\n     * Stops publishing a {@link LocalTrack} to the {@link Room}.\n     * @param {LocalTrack|MediaStreamTrack} track - The {@link LocalTrack}\n     *   to stop publishing; if a MediaStreamTrack is provided, this method\n     *   looks up the corresponding {@link LocalAudioTrack} or\n     *   {@link LocalVideoTrack} to stop publishing\n     * @returns {?LocalTrackPublication} - The corresponding\n     *   {@link LocalTrackPublication} if the {@link LocalTrack} was previously\n     *   published, null otherwise\n     * @throws {TypeError}\n    */\n    LocalParticipant.prototype.unpublishTrack = function (track) {\n        validateLocalTrack(track, {\n            LocalAudioTrack: this._LocalAudioTrack,\n            LocalDataTrack: this._LocalDataTrack,\n            LocalVideoTrack: this._LocalVideoTrack,\n            MediaStreamTrack: this._MediaStreamTrack\n        });\n        var localTrack = this._tracks.get(track.id);\n        if (!localTrack) {\n            return null;\n        }\n        var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n        trackSignaling.publishFailed(new Error(\"The \" + localTrack + \" was unpublished\"));\n        localTrack = this._removeTrack(localTrack, localTrack.id);\n        if (!localTrack) {\n            return null;\n        }\n        var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n        if (localTrackPublication) {\n            this._removeTrackPublication(localTrackPublication);\n        }\n        return localTrackPublication;\n    };\n    /**\n     * Stops publishing multiple {@link LocalTrack}s to the {@link Room}.\n     * @param {Array<LocalTrack|MediaStreamTrack>} tracks - The {@link LocalTrack}s\n     *   to stop publishing; for any MediaStreamTracks provided, this method looks\n     *   up the corresponding {@link LocalAudioTrack} or {@link LocalVideoTrack} to\n     *   stop publishing\n     * @returns {Array<LocalTrackPublication>} - The corresponding\n     *   {@link LocalTrackPublication}s that were successfully unpublished\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.unpublishTracks = function (tracks) {\n        var _this = this;\n        if (!Array.isArray(tracks)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n        }\n        return tracks.reduce(function (unpublishedTracks, track) {\n            var unpublishedTrack = _this.unpublishTrack(track);\n            return unpublishedTrack ? unpublishedTracks.concat(unpublishedTrack) : unpublishedTracks;\n        }, []);\n    };\n    return LocalParticipant;\n}(Participant));\n/**\n * The {@link LocalParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnected\n */\n/**\n * The {@link LocalParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnecting\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalVideoTrack}'s dimensions changed.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} whose dimensions changed\n * @event LocalParticipant#trackDimensionsChanged\n */\n/**\n * A {@link LocalTrack} was disabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was disabled\n * @event LocalParticipant#trackDisabled\n */\n/**\n * A {@link LocalTrack} was enabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was enabled\n * @event LocalParticipant#trackEnabled\n */\n/**\n * A {@link LocalTrack} failed to publish. Check the error message for more\n * information. In a Large Group Room (Maximum Participants greater than 50),\n * this event is raised with a {@link ParticipantMaxTracksExceededError} either\n * when attempting to publish the {@link LocalTrack} will exceed the Maximum Published\n * Tracks limit of 16, or the {@link LocalTrack} is part of a set of {@link LocalTrack}s\n * which along with the published Tracks exceeds 16.\n * @param {TwilioError} error - A {@link TwilioError} explaining why publication\n *   failed\n * @param {LocalTrack} localTrack - The {@link LocalTrack} that failed to\n *   publish\n * @event LocalParticipant#trackPublicationFailed\n */\n/**\n * A {@link LocalTrack} was successfully published.\n * @param {LocalTrackPublication} publication - The resulting\n *   {@link LocalTrackPublication} for the published {@link LocalTrack}\n * @event LocalParticipant#trackPublished\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s started.\n * @param {LocalTrack} track - The {@link LocalTrack} that started\n * @event LocalParticipant#trackStarted\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s stopped, either\n * because {@link LocalTrack#stop} was called or because the underlying\n * MediaStreamTrack ended).\n * @param {LocalTrack} track - The {@link LocalTrack} that stopped\n * @event LocalParticipant#trackStopped\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @event LocalParticipant#trackWarning\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @event LocalParticipant#trackWarningsCleared\n */\n/**\n * Outgoing media encoding parameters.\n * @typedef {object} EncodingParameters\n * @property {?number} [maxAudioBitrate] - Max outgoing audio bitrate (bps);\n *   If not specified, retains the existing bitrate limit; A <code>null</code> or a\n *   <code>0</code> value removes any previously set bitrate limit; This value is set\n *   as a hint for variable bitrate codecs, but will not take effect for fixed bitrate\n *   codecs; Based on our tests, Chrome, Firefox and Safari support a bitrate range of\n *   12000 bps to 256000 bps for Opus codec; This parameter has no effect on iSAC, PCMU\n *   and PCMA codecs\n * @property {?number} [maxVideoBitrate] - Max outgoing video bitrate (bps);\n *   If not specified, retains the existing bitrate limit; A <code>null</code> or\n *   a <code>0</code> value removes any previously set bitrate limit; This value is\n *   set as a hint for variable bitrate codecs, but will not take effect for fixed\n *   bitrate codecs; Based on our tests, Chrome, Firefox and Safari all seem to support\n *   an average bitrate range of 20000 bps (20 kbps) to 8000000 bps (8 mbps) for a\n *   720p VideoTrack.\n *   Note: this limit is not applied for screen share tracks published on Chrome.\n */\n/**\n * Options for publishing a {@link LocalTrack}.\n * @typedef {object} LocalTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n *   is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n *   allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n *   effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * Options for publishing a {@link MediaStreamTrack}.\n * @typedef {LocalTrackOptions} MediaStreamTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n *   is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n *   allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n *   effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * @private\n * @param {Map<Track.SID, LocalTrackPublication>} trackPublications\n * @param {LocalTrack|MediaStreamTrack} track\n * @returns {?LocalTrackPublication} trackPublication\n */\nfunction getTrackPublication(trackPublications, track) {\n    return Array.from(trackPublications.values()).find(function (trackPublication) { return trackPublication.track === track\n        || trackPublication.track.mediaStreamTrack === track; }) || null;\n}\nmodule.exports = LocalParticipant;\n//# sourceMappingURL=localparticipant.js.map","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","\"use strict\";\n/**\n * # Core classes and interfaces\n *\n * The classes and interfaces that are core to ui-router and do not belong\n * to a more specific subsystem (such as resolve).\n *\n * @coreapi\n * @preferred\n * @module core\n */ /** for typedoc */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @internalapi */\nvar UIRouterPluginBase = /** @class */ (function () {\n    function UIRouterPluginBase() {\n    }\n    UIRouterPluginBase.prototype.dispose = function (router) { };\n    return UIRouterPluginBase;\n}());\nexports.UIRouterPluginBase = UIRouterPluginBase;\n//# sourceMappingURL=interface.js.map","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","/* globals navigator */\n'use strict';\n/**\n * This function is very similar to <code>navigator.mediaDevices.getUserMedia</code>\n * except that if no MediaStreamConstraints are provided, then bot audio and video\n * are requested.\n * @function getUserMedia\n * @param {MediaStreamConstraints} [constraints={audio:true,video:true}] - the\n *   MediaStreamConstraints object specifying what kind of MediaStream to\n *   request from the browser (by default both audio and video)\n * @returns Promise<MediaStream>\n */\nfunction getUserMedia(constraints) {\n    if (constraints === void 0) { constraints = { audio: true, video: true }; }\n    if (typeof navigator === 'object'\n        && typeof navigator.mediaDevices === 'object'\n        && typeof navigator.mediaDevices.getUserMedia === 'function') {\n        return navigator.mediaDevices.getUserMedia(constraints);\n    }\n    return Promise.reject(new Error('getUserMedia is not supported'));\n}\nmodule.exports = getUserMedia;\n//# sourceMappingURL=getusermedia.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module hooks */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar coreservices_1 = require(\"../common/coreservices\");\n/**\n * A [[TransitionHookFn]] which waits for the views to load\n *\n * Registered using `transitionService.onStart({}, loadEnteringViews);`\n *\n * Allows the views to do async work in [[ViewConfig.load]] before the transition continues.\n * In angular 1, this includes loading the templates.\n */\nvar loadEnteringViews = function (transition) {\n    var $q = coreservices_1.services.$q;\n    var enteringViews = transition.views('entering');\n    if (!enteringViews.length)\n        return;\n    return $q.all(enteringViews.map(function (view) { return $q.when(view.load()); })).then(common_1.noop);\n};\nexports.registerLoadEnteringViews = function (transitionService) {\n    return transitionService.onFinish({}, loadEnteringViews);\n};\n/**\n * A [[TransitionHookFn]] which activates the new views when a transition is successful.\n *\n * Registered using `transitionService.onSuccess({}, activateViews);`\n *\n * After a transition is complete, this hook deactivates the old views from the previous state,\n * and activates the new views from the destination state.\n *\n * See [[ViewService]]\n */\nvar activateViews = function (transition) {\n    var enteringViews = transition.views('entering');\n    var exitingViews = transition.views('exiting');\n    if (!enteringViews.length && !exitingViews.length)\n        return;\n    var $view = transition.router.viewService;\n    exitingViews.forEach(function (vc) { return $view.deactivateViewConfig(vc); });\n    enteringViews.forEach(function (vc) { return $view.activateViewConfig(vc); });\n    $view.sync();\n};\nexports.registerActivateViews = function (transitionService) {\n    return transitionService.onSuccess({}, activateViews);\n};\n//# sourceMappingURL=views.js.map","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","/**\n*\n*\tVALIDATE: integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number' );\n\n\n// ISINTEGER //\n\n/**\n* FUNCTION: isInteger( value )\n*\tValidates if a value is an integer.\n*\n* @param {Number} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an integer\n*/\nfunction isInteger( value ) {\n\treturn isNumber( value ) && value%1 === 0;\n} // end FUNCTION isInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isInteger;\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n  var _ref$defaultInputValu = _ref.defaultInputValue,\n    defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n    _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n    defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n    _ref$defaultValue = _ref.defaultValue,\n    defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n    propsInputValue = _ref.inputValue,\n    propsMenuIsOpen = _ref.menuIsOpen,\n    propsOnChange = _ref.onChange,\n    propsOnInputChange = _ref.onInputChange,\n    propsOnMenuClose = _ref.onMenuClose,\n    propsOnMenuOpen = _ref.onMenuOpen,\n    propsValue = _ref.value,\n    restSelectProps = _objectWithoutProperties(_ref, _excluded);\n  var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n    _useState2 = _slicedToArray(_useState, 2),\n    stateInputValue = _useState2[0],\n    setStateInputValue = _useState2[1];\n  var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n    _useState4 = _slicedToArray(_useState3, 2),\n    stateMenuIsOpen = _useState4[0],\n    setStateMenuIsOpen = _useState4[1];\n  var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n    _useState6 = _slicedToArray(_useState5, 2),\n    stateValue = _useState6[0],\n    setStateValue = _useState6[1];\n  var onChange = useCallback(function (value, actionMeta) {\n    if (typeof propsOnChange === 'function') {\n      propsOnChange(value, actionMeta);\n    }\n    setStateValue(value);\n  }, [propsOnChange]);\n  var onInputChange = useCallback(function (value, actionMeta) {\n    var newValue;\n    if (typeof propsOnInputChange === 'function') {\n      newValue = propsOnInputChange(value, actionMeta);\n    }\n    setStateInputValue(newValue !== undefined ? newValue : value);\n  }, [propsOnInputChange]);\n  var onMenuOpen = useCallback(function () {\n    if (typeof propsOnMenuOpen === 'function') {\n      propsOnMenuOpen();\n    }\n    setStateMenuIsOpen(true);\n  }, [propsOnMenuOpen]);\n  var onMenuClose = useCallback(function () {\n    if (typeof propsOnMenuClose === 'function') {\n      propsOnMenuClose();\n    }\n    setStateMenuIsOpen(false);\n  }, [propsOnMenuClose]);\n  var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n  var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n  var value = propsValue !== undefined ? propsValue : stateValue;\n  return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n    inputValue: inputValue,\n    menuIsOpen: menuIsOpen,\n    onChange: onChange,\n    onInputChange: onInputChange,\n    onMenuClose: onMenuClose,\n    onMenuOpen: onMenuOpen,\n    value: value\n  });\n}\n\nexport { useStateManager as u };\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode && tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule' || cache.compat) return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses) {\n      var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n      //\n      // considering this input:\n      // .a {\n      //   .b /* comm */ {}\n      //   color: hotpink;\n      // }\n      // we get output corresponding to this:\n      // .a {\n      //   & {\n      //     /* comm */\n      //     color: hotpink;\n      //   }\n      //   .b {}\n      // }\n\n      var commentContainer = isNested ? children[0].children : // global rule at the root level\n      children;\n\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node = commentContainer[i];\n\n        if (node.line < element.line) {\n          break;\n        } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n        // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n        // this will also match inputs like this:\n        // .a {\n        //   /* comm */\n        //   .b {}\n        // }\n        //\n        // but that is fine\n        //\n        // it would be the easiest to change the placement of the comment to be the first child of the rule:\n        // .a {\n        //   .b { /* comm */ }\n        // }\n        // with such inputs we wouldn't have to search for the comment at all\n        // TODO: consider changing this comment placement in the next major version\n\n\n        if (node.column < element.column) {\n          if (isIgnoringComment(node)) {\n            return;\n          }\n\n          break;\n        }\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if ( key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport default createCache;\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error(noComponentSelectorMessage);\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback =  useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = useContext(ThemeContext);\n    return /*#__PURE__*/createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.6\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.6\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.6\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.6\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      var res = insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","function t(t){return t.split(\"-\")[1]}function e(t){return\"y\"===t?\"height\":\"width\"}function n(t){return t.split(\"-\")[0]}function o(t){return[\"top\",\"bottom\"].includes(n(t))?\"x\":\"y\"}function r(r,i,a){let{reference:l,floating:s}=r;const c=l.x+l.width/2-s.width/2,f=l.y+l.height/2-s.height/2,u=o(i),m=e(u),g=l[m]/2-s[m]/2,d=\"x\"===u;let p;switch(n(i)){case\"top\":p={x:c,y:l.y-s.height};break;case\"bottom\":p={x:c,y:l.y+l.height};break;case\"right\":p={x:l.x+l.width,y:f};break;case\"left\":p={x:l.x-s.width,y:f};break;default:p={x:l.x,y:l.y}}switch(t(i)){case\"start\":p[u]-=g*(a&&d?-1:1);break;case\"end\":p[u]+=g*(a&&d?-1:1)}return p}const i=async(t,e,n)=>{const{placement:o=\"bottom\",strategy:i=\"absolute\",middleware:a=[],platform:l}=n,s=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(e));let f=await l.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:m}=r(f,o,c),g=o,d={},p=0;for(let n=0;n<s.length;n++){const{name:a,fn:h}=s[n],{x:y,y:x,data:w,reset:v}=await h({x:u,y:m,initialPlacement:o,placement:g,strategy:i,middlewareData:d,rects:f,platform:l,elements:{reference:t,floating:e}});u=null!=y?y:u,m=null!=x?x:m,d={...d,[a]:{...d[a],...w}},v&&p<=50&&(p++,\"object\"==typeof v&&(v.placement&&(g=v.placement),v.rects&&(f=!0===v.rects?await l.getElementRects({reference:t,floating:e,strategy:i}):v.rects),({x:u,y:m}=r(f,g,c))),n=-1)}return{x:u,y:m,placement:g,strategy:i,middlewareData:d}};function a(t){return\"number\"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function l(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function s(t,e){var n;void 0===e&&(e={});const{x:o,y:r,platform:i,rects:s,elements:c,strategy:f}=t,{boundary:u=\"clippingAncestors\",rootBoundary:m=\"viewport\",elementContext:g=\"floating\",altBoundary:d=!1,padding:p=0}=e,h=a(p),y=c[d?\"floating\"===g?\"reference\":\"floating\":g],x=l(await i.getClippingRect({element:null==(n=await(null==i.isElement?void 0:i.isElement(y)))||n?y:y.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(c.floating)),boundary:u,rootBoundary:m,strategy:f})),w=\"floating\"===g?{...s.floating,x:o,y:r}:s.reference,v=await(null==i.getOffsetParent?void 0:i.getOffsetParent(c.floating)),b=await(null==i.isElement?void 0:i.isElement(v))&&await(null==i.getScale?void 0:i.getScale(v))||{x:1,y:1},R=l(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:w,offsetParent:v,strategy:f}):w);return{top:(x.top-R.top+h.top)/b.y,bottom:(R.bottom-x.bottom+h.bottom)/b.y,left:(x.left-R.left+h.left)/b.x,right:(R.right-x.right+h.right)/b.x}}const c=Math.min,f=Math.max;function u(t,e,n){return f(t,c(e,n))}const m=n=>({name:\"arrow\",options:n,async fn(r){const{element:i,padding:l=0}=n||{},{x:s,y:c,placement:f,rects:m,platform:g}=r;if(null==i)return{};const d=a(l),p={x:s,y:c},h=o(f),y=e(h),x=await g.getDimensions(i),w=\"y\"===h?\"top\":\"left\",v=\"y\"===h?\"bottom\":\"right\",b=m.reference[y]+m.reference[h]-p[h]-m.floating[y],R=p[h]-m.reference[h],A=await(null==g.getOffsetParent?void 0:g.getOffsetParent(i));let P=A?\"y\"===h?A.clientHeight||0:A.clientWidth||0:0;0===P&&(P=m.floating[y]);const T=b/2-R/2,O=d[w],D=P-x[y]-d[v],E=P/2-x[y]/2+T,L=u(O,E,D),k=null!=t(f)&&E!=L&&m.reference[y]/2-(E<O?d[w]:d[v])-x[y]/2<0;return{[h]:p[h]-(k?E<O?O-E:D-E:0),data:{[h]:L,centerOffset:E-L}}}}),g=[\"top\",\"right\",\"bottom\",\"left\"],d=g.reduce(((t,e)=>t.concat(e,e+\"-start\",e+\"-end\")),[]),p={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function h(t){return t.replace(/left|right|bottom|top/g,(t=>p[t]))}function y(n,r,i){void 0===i&&(i=!1);const a=t(n),l=o(n),s=e(l);let c=\"x\"===l?a===(i?\"end\":\"start\")?\"right\":\"left\":\"start\"===a?\"bottom\":\"top\";return r.reference[s]>r.floating[s]&&(c=h(c)),{main:c,cross:h(c)}}const x={start:\"end\",end:\"start\"};function w(t){return t.replace(/start|end/g,(t=>x[t]))}const v=function(e){return void 0===e&&(e={}),{name:\"autoPlacement\",options:e,async fn(o){var r,i,a;const{rects:l,middlewareData:c,placement:f,platform:u,elements:m}=o,{crossAxis:g=!1,alignment:p,allowedPlacements:h=d,autoAlignment:x=!0,...v}=e,b=void 0!==p||h===d?function(e,o,r){return(e?[...r.filter((n=>t(n)===e)),...r.filter((n=>t(n)!==e))]:r.filter((t=>n(t)===t))).filter((n=>!e||t(n)===e||!!o&&w(n)!==n))}(p||null,x,h):h,R=await s(o,v),A=(null==(r=c.autoPlacement)?void 0:r.index)||0,P=b[A];if(null==P)return{};const{main:T,cross:O}=y(P,l,await(null==u.isRTL?void 0:u.isRTL(m.floating)));if(f!==P)return{reset:{placement:b[0]}};const D=[R[n(P)],R[T],R[O]],E=[...(null==(i=c.autoPlacement)?void 0:i.overflows)||[],{placement:P,overflows:D}],L=b[A+1];if(L)return{data:{index:A+1,overflows:E},reset:{placement:L}};const k=E.map((e=>{const n=t(e.placement);return[e.placement,n&&g?e.overflows.slice(0,2).reduce(((t,e)=>t+e),0):e.overflows[0],e.overflows]})).sort(((t,e)=>t[1]-e[1])),B=(null==(a=k.filter((e=>e[2].slice(0,t(e[0])?2:3).every((t=>t<=0))))[0])?void 0:a[0])||k[0][0];return B!==f?{data:{index:A+1,overflows:E},reset:{placement:B}}:{}}}};const b=function(e){return void 0===e&&(e={}),{name:\"flip\",options:e,async fn(o){var r;const{placement:i,middlewareData:a,rects:l,initialPlacement:c,platform:f,elements:u}=o,{mainAxis:m=!0,crossAxis:g=!0,fallbackPlacements:d,fallbackStrategy:p=\"bestFit\",fallbackAxisSideDirection:x=\"none\",flipAlignment:v=!0,...b}=e,R=n(i),A=n(c)===c,P=await(null==f.isRTL?void 0:f.isRTL(u.floating)),T=d||(A||!v?[h(c)]:function(t){const e=h(t);return[w(t),e,w(e)]}(c));d||\"none\"===x||T.push(...function(e,o,r,i){const a=t(e);let l=function(t,e,n){const o=[\"left\",\"right\"],r=[\"right\",\"left\"],i=[\"top\",\"bottom\"],a=[\"bottom\",\"top\"];switch(t){case\"top\":case\"bottom\":return n?e?r:o:e?o:r;case\"left\":case\"right\":return e?i:a;default:return[]}}(n(e),\"start\"===r,i);return a&&(l=l.map((t=>t+\"-\"+a)),o&&(l=l.concat(l.map(w)))),l}(c,v,x,P));const O=[c,...T],D=await s(o,b),E=[];let L=(null==(r=a.flip)?void 0:r.overflows)||[];if(m&&E.push(D[R]),g){const{main:t,cross:e}=y(i,l,P);E.push(D[t],D[e])}if(L=[...L,{placement:i,overflows:E}],!E.every((t=>t<=0))){var k,B;const t=((null==(k=a.flip)?void 0:k.index)||0)+1,e=O[t];if(e)return{data:{index:t,overflows:L},reset:{placement:e}};let n=null==(B=L.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:B.placement;if(!n)switch(p){case\"bestFit\":{var C;const t=null==(C=L.map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:C[0];t&&(n=t);break}case\"initialPlacement\":n=c}if(i!==n)return{reset:{placement:n}}}return{}}}};function R(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function A(t){return g.some((e=>t[e]>=0))}const P=function(t){return void 0===t&&(t={}),{name:\"hide\",options:t,async fn(e){const{strategy:n=\"referenceHidden\",...o}=t,{rects:r}=e;switch(n){case\"referenceHidden\":{const t=R(await s(e,{...o,elementContext:\"reference\"}),r.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:A(t)}}}case\"escaped\":{const t=R(await s(e,{...o,altBoundary:!0}),r.floating);return{data:{escapedOffsets:t,escaped:A(t)}}}default:return{}}}}},T=function(t){return void 0===t&&(t={}),{name:\"inline\",options:t,async fn(e){const{placement:r,elements:i,rects:s,platform:u,strategy:m}=e,{padding:g=2,x:d,y:p}=t,h=l(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({rect:s.reference,offsetParent:await(null==u.getOffsetParent?void 0:u.getOffsetParent(i.floating)),strategy:m}):s.reference),y=await(null==u.getClientRects?void 0:u.getClientRects(i.reference))||[],x=a(g);const w=await u.getElementRects({reference:{getBoundingClientRect:function(){if(2===y.length&&y[0].left>y[1].right&&null!=d&&null!=p)return y.find((t=>d>t.left-x.left&&d<t.right+x.right&&p>t.top-x.top&&p<t.bottom+x.bottom))||h;if(y.length>=2){if(\"x\"===o(r)){const t=y[0],e=y[y.length-1],o=\"top\"===n(r),i=t.top,a=e.bottom,l=o?t.left:e.left,s=o?t.right:e.right;return{top:i,bottom:a,left:l,right:s,width:s-l,height:a-i,x:l,y:i}}const t=\"left\"===n(r),e=f(...y.map((t=>t.right))),i=c(...y.map((t=>t.left))),a=y.filter((n=>t?n.left===i:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:i,right:e,width:e-i,height:s-l,x:i,y:l}}return h}},floating:i.floating,strategy:m});return s.reference.x!==w.reference.x||s.reference.y!==w.reference.y||s.reference.width!==w.reference.width||s.reference.height!==w.reference.height?{reset:{rects:w}}:{}}}};const O=function(e){return void 0===e&&(e=0),{name:\"offset\",options:e,async fn(r){const{x:i,y:a}=r,l=await async function(e,r){const{placement:i,platform:a,elements:l}=e,s=await(null==a.isRTL?void 0:a.isRTL(l.floating)),c=n(i),f=t(i),u=\"x\"===o(i),m=[\"left\",\"top\"].includes(c)?-1:1,g=s&&u?-1:1,d=\"function\"==typeof r?r(e):r;let{mainAxis:p,crossAxis:h,alignmentAxis:y}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return f&&\"number\"==typeof y&&(h=\"end\"===f?-1*y:y),u?{x:h*g,y:p*m}:{x:p*m,y:h*g}}(r,e);return{x:i+l.x,y:a+l.y,data:l}}}};function D(t){return\"x\"===t?\"y\":\"x\"}const E=function(t){return void 0===t&&(t={}),{name:\"shift\",options:t,async fn(e){const{x:r,y:i,placement:a}=e,{mainAxis:l=!0,crossAxis:c=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...m}=t,g={x:r,y:i},d=await s(e,m),p=o(n(a)),h=D(p);let y=g[p],x=g[h];if(l){const t=\"y\"===p?\"bottom\":\"right\";y=u(y+d[\"y\"===p?\"top\":\"left\"],y,y-d[t])}if(c){const t=\"y\"===h?\"bottom\":\"right\";x=u(x+d[\"y\"===h?\"top\":\"left\"],x,x-d[t])}const w=f.fn({...e,[p]:y,[h]:x});return{...w,data:{x:w.x-r,y:w.y-i}}}}},L=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:r,y:i,placement:a,rects:l,middlewareData:s}=e,{offset:c=0,mainAxis:f=!0,crossAxis:u=!0}=t,m={x:r,y:i},g=o(a),d=D(g);let p=m[g],h=m[d];const y=\"function\"==typeof c?c(e):c,x=\"number\"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const t=\"y\"===g?\"height\":\"width\",e=l.reference[g]-l.floating[t]+x.mainAxis,n=l.reference[g]+l.reference[t]-x.mainAxis;p<e?p=e:p>n&&(p=n)}if(u){var w,v;const t=\"y\"===g?\"width\":\"height\",e=[\"top\",\"left\"].includes(n(a)),o=l.reference[d]-l.floating[t]+(e&&(null==(w=s.offset)?void 0:w[d])||0)+(e?0:x.crossAxis),r=l.reference[d]+l.reference[t]+(e?0:(null==(v=s.offset)?void 0:v[d])||0)-(e?x.crossAxis:0);h<o?h=o:h>r&&(h=r)}return{[g]:p,[d]:h}}}},k=function(e){return void 0===e&&(e={}),{name:\"size\",options:e,async fn(r){const{placement:i,rects:a,platform:l,elements:u}=r,{apply:m=(()=>{}),...g}=e,d=await s(r,g),p=n(i),h=t(i),y=\"x\"===o(i),{width:x,height:w}=a.floating;let v,b;\"top\"===p||\"bottom\"===p?(v=p,b=h===(await(null==l.isRTL?void 0:l.isRTL(u.floating))?\"start\":\"end\")?\"left\":\"right\"):(b=p,v=\"end\"===h?\"top\":\"bottom\");const R=w-d[v],A=x-d[b];let P=R,T=A;if(y?T=c(x-d.right-d.left,A):P=c(w-d.bottom-d.top,R),!r.middlewareData.shift&&!h){const t=f(d.left,0),e=f(d.right,0),n=f(d.top,0),o=f(d.bottom,0);y?T=x-2*(0!==t||0!==e?t+e:f(d.left,d.right)):P=w-2*(0!==n||0!==o?n+o:f(d.top,d.bottom))}await m({...r,availableWidth:T,availableHeight:P});const O=await l.getDimensions(u.floating);return x!==O.width||w!==O.height?{reset:{rects:!0}}:{}}}};export{m as arrow,v as autoPlacement,i as computePosition,s as detectOverflow,b as flip,P as hide,T as inline,L as limitShift,O as offset,l as rectToClientRect,E as shift,k as size};\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}const i=Math.min,r=Math.max,l=Math.round;function c(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,c=t.offsetHeight,s=l(n)!==r||l(i)!==c;return s&&(n=r,i=c),{width:n,height:i,fallback:s}}function s(t){return h(t)?(t.nodeName||\"\").toLowerCase():\"\"}let f;function u(){if(f)return f;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(f=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),f):navigator.userAgent}function a(t){return t instanceof n(t).HTMLElement}function d(t){return t instanceof n(t).Element}function h(t){return t instanceof n(t).Node}function p(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function g(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function m(t){return[\"table\",\"td\",\"th\"].includes(s(t))}function y(t){const e=/firefox/i.test(u()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function x(){return/^((?!chrome|android).)*safari/i.test(u())}function w(t){return[\"html\",\"body\",\"#document\"].includes(s(t))}function v(t){return d(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!a(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=c(e);let s=(r?l(n.width):n.width)/o,f=(r?l(n.height):n.height)/i;return s&&Number.isFinite(s)||(s=1),f&&Number.isFinite(f)||(f=1),{x:s,y:f}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),s=v(t);let f=b;e&&(i?d(i)&&(f=L(i)):f=L(t));const u=s?n(s):window,a=x()&&o;let h=(c.left+(a&&(null==(r=u.visualViewport)?void 0:r.offsetLeft)||0))/f.x,p=(c.top+(a&&(null==(l=u.visualViewport)?void 0:l.offsetTop)||0))/f.y,g=c.width/f.x,m=c.height/f.y;if(s){const t=n(s),e=i&&d(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,p*=t.y,g*=t.x,m*=t.y,h+=e.x,p+=e.y,o=n(o).frameElement}}return{width:g,height:m,top:p,right:h+g,bottom:p+m,left:h,x:h,y:p}}function R(t){return((h(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return d(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t){if(\"html\"===s(t))return t;const e=t.assignedSlot||t.parentNode||p(t)&&t.host||R(t);return p(e)?e.host:e}function W(t){const e=F(t);return w(e)?e.ownerDocument.body:a(e)&&g(e)?e:W(e)}function D(t,e){var o;void 0===e&&(e=[]);const i=W(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],g(i)?i:[]):e.concat(i,D(i))}function S(e,i,l){let c;if(\"viewport\"===i)c=function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=x();(!t||t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,l);else if(\"document\"===i)c=function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,l=r(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),c=r(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+C(t);const f=-n.scrollTop;return\"rtl\"===o(i).direction&&(s+=r(e.clientWidth,i.clientWidth)-l),{width:l,height:c,x:s,y:f}}(R(e));else if(d(i))c=function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=a(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,l);else{const t={...i};if(x()){var s,f;const o=n(e);t.x-=(null==(s=o.visualViewport)?void 0:s.offsetLeft)||0,t.y-=(null==(f=o.visualViewport)?void 0:f.offsetTop)||0}c=t}return t(c)}function A(t,e){return a(t)&&\"fixed\"!==o(t).position?e?e(t):t.offsetParent:null}function H(t,e){const i=n(t);let r=A(t,e);for(;r&&m(r)&&\"static\"===o(r).position;)r=A(r,e);return r&&(\"html\"===s(r)||\"body\"===s(r)&&\"static\"===o(r).position&&!y(r))?i:r||function(t){let e=F(t);for(;a(e)&&!w(e);){if(y(e))return e;e=F(e)}return null}(t)||i}function V(t,e,n){const o=a(e),i=R(e),r=E(t,!0,\"fixed\"===n,e);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==s(e)||g(i))&&(l=T(e)),a(e)){const t=E(e,!0);c.x=t.x+e.clientLeft,c.y=t.y+e.clientTop}else i&&(c.x=C(i));return{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}const O={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:l,strategy:c}=t;const f=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=D(t).filter((t=>d(t)&&\"body\"!==s(t))),r=null;const l=\"fixed\"===o(t).position;let c=l?F(t):t;for(;d(c)&&!w(c);){const t=o(c),e=y(c);\"fixed\"===t.position?r=null:(l?e||r:e||\"static\"!==t.position||!r||![\"absolute\",\"fixed\"].includes(r.position))?r=t:i=i.filter((t=>t!==c)),c=F(c)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...f,l],a=u[0],h=u.reduce(((t,n)=>{const o=S(e,n,c);return t.top=r(o.top,t.top),t.right=i(o.right,t.right),t.bottom=i(o.bottom,t.bottom),t.left=r(o.left,t.left),t}),S(e,a,c));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=a(n),r=R(n);if(n===r)return e;let l={scrollLeft:0,scrollTop:0},c={x:1,y:1};const f={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==s(n)||g(r))&&(l=T(n)),a(n))){const t=E(n);c=L(n),f.x=t.x+n.clientLeft,f.y=t.y+n.clientTop}return{width:e.width*c.x,height:e.height*c.y,x:e.x*c.x-l.scrollLeft*c.x+f.x,y:e.y*c.y-l.scrollTop*c.y+f.y}},isElement:d,getDimensions:function(t){return a(t)?c(t):t.getBoundingClientRect()},getOffsetParent:H,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:V(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function P(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i&&!c,f=s||r?[...d(t)?D(t):t.contextElement?D(t.contextElement):[],...D(e)]:[];f.forEach((t=>{s&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;if(l){let o=!0;a=new ResizeObserver((()=>{o||n(),o=!1})),d(t)&&!c&&a.observe(t),d(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{s&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const z=(t,n,o)=>{const i=new Map,r={platform:O,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{P as autoUpdate,z as computePosition,D as getOverflowAncestors,O as platform};\n","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2 } from '@emotion/react';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { useContext, useRef, useState, useMemo, useCallback, createContext } from 'react';\nimport { createPortal } from 'react-dom';\nimport { autoUpdate } from '@floating-ui/dom';\nimport useLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar _excluded$4 = [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getClassNames\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"];\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = function noop() {};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\nfunction classNames(prefix, state) {\n  for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    classNameList[_key - 2] = arguments[_key];\n  }\n  var arr = [].concat(classNameList);\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n};\n\n// ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n  //className\n  props.className;\n    props.clearValue;\n    props.cx;\n    props.getStyles;\n    props.getClassNames;\n    props.getValue;\n    props.hasValue;\n    props.isMulti;\n    props.isRtl;\n    props.options;\n    props.selectOption;\n    props.selectProps;\n    props.setValue;\n    props.theme;\n    var innerProps = _objectWithoutProperties(props, _excluded$4);\n  return _objectSpread({}, innerProps);\n};\n\n// ==============================\n// Get Style Props\n// ==============================\n\nvar getStyleProps = function getStyleProps(props, name, classNamesState) {\n  var cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    className = props.className;\n  return {\n    css: getStyles(name, props),\n    className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className)\n  };\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var _newValue = onInputChange(inputValue, actionMeta);\n    if (typeof _newValue === 'string') return _newValue;\n  }\n  return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n  if (isDocumentElement(el)) {\n    return window.innerHeight;\n  }\n  return el.clientHeight;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n  el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  if (style.position === 'fixed') return document.documentElement;\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n  return document.documentElement;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n  animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Passive Event Detector\n// ==============================\n\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\nvar passiveOptionAccessed = false;\nvar options = {\n  get passive() {\n    return passiveOptionAccessed = true;\n  }\n};\n// check for SSR\nvar w = typeof window !== 'undefined' ? window : {};\nif (w.addEventListener && w.removeEventListener) {\n  w.addEventListener('p', noop, options);\n  w.removeEventListener('p', noop, false);\n}\nvar supportsPassiveEvents = passiveOptionAccessed;\nfunction notNullish(item) {\n  return item != null;\n}\nfunction isArray(arg) {\n  return Array.isArray(arg);\n}\nfunction valueTernary(isMulti, multiValue, singleValue) {\n  return isMulti ? multiValue : singleValue;\n}\nfunction singleValueAsValue(singleValue) {\n  return singleValue;\n}\nfunction multiValueAsValue(multiValue) {\n  return multiValue;\n}\nvar removeProps = function removeProps(propsObj) {\n  for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    properties[_key2 - 1] = arguments[_key2];\n  }\n  var propsMap = Object.entries(propsObj).filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      key = _ref2[0];\n    return !properties.includes(key);\n  });\n  return propsMap.reduce(function (newProps, _ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      val = _ref4[1];\n    newProps[key] = val;\n    return newProps;\n  }, {});\n};\n\nvar _excluded$3 = [\"children\", \"innerProps\"],\n  _excluded2$1 = [\"children\", \"innerProps\"];\nfunction getMenuPlacement(_ref) {\n  var preferredMaxHeight = _ref.maxHeight,\n    menuEl = _ref.menuEl,\n    minHeight = _ref.minHeight,\n    preferredPlacement = _ref.placement,\n    shouldScroll = _ref.shouldScroll,\n    isFixedPosition = _ref.isFixedPosition,\n    controlHeight = _ref.controlHeight;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: preferredMaxHeight\n  };\n\n  // something went wrong, return default state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n    scrollHeight = _scrollParent$getBoun.height;\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n    menuBottom = _menuEl$getBoundingCl.bottom,\n    menuHeight = _menuEl$getBoundingCl.height,\n    menuTop = _menuEl$getBoundingCl.top;\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n    containerTop = _menuEl$offsetParent$.top;\n  var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n  switch (preferredPlacement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      }\n\n      // 4. Forked beviour when there isn't enough space below\n\n      // AUTO: flip the menu, render above\n      if (preferredPlacement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = preferredMaxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      }\n\n      // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n      if (preferredPlacement === 'bottom') {\n        if (shouldScroll) {\n          scrollTo(scrollParent, scrollDown);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n      break;\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = preferredMaxHeight;\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      }\n\n      // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n      return {\n        placement: 'bottom',\n        maxHeight: preferredMaxHeight\n      };\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(preferredPlacement, \"\\\".\"));\n  }\n  return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\nvar menuCSS = function menuCSS(_ref2, unstyled) {\n  var _objectSpread2;\n  var placement = _ref2.placement,\n    _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    spacing = _ref2$theme.spacing,\n    colors = _ref2$theme.colors;\n  return _objectSpread((_objectSpread2 = {\n    label: 'menu'\n  }, _defineProperty(_objectSpread2, alignToControl(placement), '100%'), _defineProperty(_objectSpread2, \"position\", 'absolute'), _defineProperty(_objectSpread2, \"width\", '100%'), _defineProperty(_objectSpread2, \"zIndex\", 1), _objectSpread2), unstyled ? {} : {\n    backgroundColor: colors.neutral0,\n    borderRadius: borderRadius,\n    boxShadow: '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)',\n    marginBottom: spacing.menuGutter,\n    marginTop: spacing.menuGutter\n  });\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext(null);\n\n// NOTE: internal only\nvar MenuPlacer = function MenuPlacer(props) {\n  var children = props.children,\n    minMenuHeight = props.minMenuHeight,\n    maxMenuHeight = props.maxMenuHeight,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition,\n    menuShouldScrollIntoView = props.menuShouldScrollIntoView,\n    theme = props.theme;\n  var _ref3 = useContext(PortalPlacementContext) || {},\n    setPortalPlacement = _ref3.setPortalPlacement;\n  var ref = useRef(null);\n  var _useState = useState(maxMenuHeight),\n    _useState2 = _slicedToArray(_useState, 2),\n    maxHeight = _useState2[0],\n    setMaxHeight = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    placement = _useState4[0],\n    setPlacement = _useState4[1];\n  var controlHeight = theme.spacing.controlHeight;\n  useLayoutEffect(function () {\n    var menuEl = ref.current;\n    if (!menuEl) return;\n\n    // DO NOT scroll if position is fixed\n    var isFixedPosition = menuPosition === 'fixed';\n    var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n    var state = getMenuPlacement({\n      maxHeight: maxMenuHeight,\n      menuEl: menuEl,\n      minHeight: minMenuHeight,\n      placement: menuPlacement,\n      shouldScroll: shouldScroll,\n      isFixedPosition: isFixedPosition,\n      controlHeight: controlHeight\n    });\n    setMaxHeight(state.maxHeight);\n    setPlacement(state.placement);\n    setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);\n  }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);\n  return children({\n    ref: ref,\n    placerProps: _objectSpread(_objectSpread({}, props), {}, {\n      placement: placement || coercePlacement(menuPlacement),\n      maxHeight: maxHeight\n    })\n  });\n};\nvar Menu = function Menu(props) {\n  var children = props.children,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menu', {\n    menu: true\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\nvar Menu$1 = Menu;\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4, unstyled) {\n  var maxHeight = _ref4.maxHeight,\n    baseUnit = _ref4.theme.spacing.baseUnit;\n  return _objectSpread({\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  }, unstyled ? {} : {\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit\n  });\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    innerRef = props.innerRef,\n    isMulti = props.isMulti;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menuList', {\n    'menu-list': true,\n    'menu-list--is-multi': isMulti\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5, unstyled) {\n  var _ref5$theme = _ref5.theme,\n    baseUnit = _ref5$theme.spacing.baseUnit,\n    colors = _ref5$theme.colors;\n  return _objectSpread({\n    textAlign: 'center'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\")\n  });\n};\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(_ref6) {\n  var _ref6$children = _ref6.children,\n    children = _ref6$children === void 0 ? 'No options' : _ref6$children,\n    innerProps = _ref6.innerProps,\n    restProps = _objectWithoutProperties(_ref6, _excluded$3);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'noOptionsMessage', {\n    'menu-notice': true,\n    'menu-notice--no-options': true\n  }), innerProps), children);\n};\nvar LoadingMessage = function LoadingMessage(_ref7) {\n  var _ref7$children = _ref7.children,\n    children = _ref7$children === void 0 ? 'Loading...' : _ref7$children,\n    innerProps = _ref7.innerProps,\n    restProps = _objectWithoutProperties(_ref7, _excluded2$1);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'loadingMessage', {\n    'menu-notice': true,\n    'menu-notice--loading': true\n  }), innerProps), children);\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref8) {\n  var rect = _ref8.rect,\n    offset = _ref8.offset,\n    position = _ref8.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = function MenuPortal(props) {\n  var appendTo = props.appendTo,\n    children = props.children,\n    controlElement = props.controlElement,\n    innerProps = props.innerProps,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition;\n  var menuPortalRef = useRef(null);\n  var cleanupRef = useRef(null);\n  var _useState5 = useState(coercePlacement(menuPlacement)),\n    _useState6 = _slicedToArray(_useState5, 2),\n    placement = _useState6[0],\n    setPortalPlacement = _useState6[1];\n  var portalPlacementContext = useMemo(function () {\n    return {\n      setPortalPlacement: setPortalPlacement\n    };\n  }, []);\n  var _useState7 = useState(null),\n    _useState8 = _slicedToArray(_useState7, 2),\n    computedPosition = _useState8[0],\n    setComputedPosition = _useState8[1];\n  var updateComputedPosition = useCallback(function () {\n    if (!controlElement) return;\n    var rect = getBoundingClientObj(controlElement);\n    var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;\n    var offset = rect[placement] + scrollDistance;\n    if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {\n      setComputedPosition({\n        offset: offset,\n        rect: rect\n      });\n    }\n  }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);\n  useLayoutEffect(function () {\n    updateComputedPosition();\n  }, [updateComputedPosition]);\n  var runAutoUpdate = useCallback(function () {\n    if (typeof cleanupRef.current === 'function') {\n      cleanupRef.current();\n      cleanupRef.current = null;\n    }\n    if (controlElement && menuPortalRef.current) {\n      cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {\n        elementResize: 'ResizeObserver' in window\n      });\n    }\n  }, [controlElement, updateComputedPosition]);\n  useLayoutEffect(function () {\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n  var setMenuPortalElement = useCallback(function (menuPortalElement) {\n    menuPortalRef.current = menuPortalElement;\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n\n  // bail early if required elements aren't present\n  if (!appendTo && menuPosition !== 'fixed' || !computedPosition) return null;\n\n  // same wrapper element whether fixed or portalled\n  var menuWrapper = jsx(\"div\", _extends({\n    ref: setMenuPortalElement\n  }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, {\n    offset: computedPosition.offset,\n    position: menuPosition,\n    rect: computedPosition.rect\n  }), 'menuPortal', {\n    'menu-portal': true\n  }), innerProps), children);\n  return jsx(PortalPlacementContext.Provider, {\n    value: portalPlacementContext\n  }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n};\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n    isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : undefined,\n    pointerEvents: isDisabled ? 'none' : undefined,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    isRtl = props.isRtl;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'container', {\n    '--is-disabled': isDisabled,\n    '--is-rtl': isRtl\n  }), innerProps), children);\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2, unstyled) {\n  var spacing = _ref2.theme.spacing,\n    isMulti = _ref2.isMulti,\n    hasValue = _ref2.hasValue,\n    controlShouldRenderValue = _ref2.selectProps.controlShouldRenderValue;\n  return _objectSpread({\n    alignItems: 'center',\n    display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',\n    flex: 1,\n    flexWrap: 'wrap',\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  }, unstyled ? {} : {\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\")\n  });\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isMulti = props.isMulti,\n    hasValue = props.hasValue;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'valueContainer', {\n    'value-container': true,\n    'value-container--is-multi': isMulti,\n    'value-container--has-value': hasValue\n  }), innerProps), children);\n};\n\n// ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'indicatorsContainer', {\n    indicators: true\n  }), innerProps), children);\n};\n\nvar _templateObject;\nvar _excluded$2 = [\"size\"],\n  _excluded2 = [\"innerProps\", \"isRtl\", \"size\"];\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"8mmkcg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n  name: \"tj5bde-Svg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n    props = _objectWithoutProperties(_ref, _excluded$2);\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3, unstyled) {\n  var isFocused = _ref3.isFocused,\n    _ref3$theme = _ref3.theme,\n    baseUnit = _ref3$theme.spacing.baseUnit,\n    colors = _ref3$theme.colors;\n  return _objectSpread({\n    label: 'indicatorContainer',\n    display: 'flex',\n    transition: 'color 150ms'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2,\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  });\n};\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'dropdownIndicator', {\n    indicator: true,\n    'dropdown-indicator': true\n  }), innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'clearIndicator', {\n    indicator: true,\n    'clear-indicator': true\n  }), innerProps), children || jsx(CrossIcon, null));\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4, unstyled) {\n  var isDisabled = _ref4.isDisabled,\n    _ref4$theme = _ref4.theme,\n    baseUnit = _ref4$theme.spacing.baseUnit,\n    colors = _ref4$theme.colors;\n  return _objectSpread({\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    width: 1\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2\n  });\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, getStyleProps(props, 'indicatorSeparator', {\n    'indicator-separator': true\n  })));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5, unstyled) {\n  var isFocused = _ref5.isFocused,\n    size = _ref5.size,\n    _ref5$theme = _ref5.theme,\n    colors = _ref5$theme.colors,\n    baseUnit = _ref5$theme.spacing.baseUnit;\n  return _objectSpread({\n    label: 'loadingIndicator',\n    display: 'flex',\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2\n  });\n};\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n    offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/css$2({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : undefined,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\")\n  });\n};\nvar LoadingIndicator = function LoadingIndicator(_ref7) {\n  var innerProps = _ref7.innerProps,\n    isRtl = _ref7.isRtl,\n    _ref7$size = _ref7.size,\n    size = _ref7$size === void 0 ? 4 : _ref7$size,\n    restProps = _objectWithoutProperties(_ref7, _excluded2);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    innerProps: innerProps,\n    isRtl: isRtl,\n    size: size\n  }), 'loadingIndicator', {\n    indicator: true,\n    'loading-indicator': true\n  }), innerProps), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\n\nvar css$1 = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    _ref$theme = _ref.theme,\n    colors = _ref$theme.colors,\n    borderRadius = _ref$theme.borderRadius,\n    spacing = _ref$theme.spacing;\n  return _objectSpread({\n    label: 'control',\n    alignItems: 'center',\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms'\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : undefined,\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  });\n};\nvar Control = function Control(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps,\n    menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef\n  }, getStyleProps(props, 'control', {\n    control: true,\n    'control--is-disabled': isDisabled,\n    'control--is-focused': isFocused,\n    'control--menu-is-open': menuIsOpen\n  }), innerProps, {\n    \"aria-disabled\": isDisabled || undefined\n  }), children);\n};\nvar Control$1 = Control;\n\nvar _excluded$1 = [\"data\"];\nvar groupCSS = function groupCSS(_ref, unstyled) {\n  var spacing = _ref.theme.spacing;\n  return unstyled ? {} : {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\nvar Group = function Group(props) {\n  var children = props.children,\n    cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    Heading = props.Heading,\n    headingProps = props.headingProps,\n    innerProps = props.innerProps,\n    label = props.label,\n    theme = props.theme,\n    selectProps = props.selectProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'group', {\n    group: true\n  }), innerProps), jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    getClassNames: getClassNames,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\nvar groupHeadingCSS = function groupHeadingCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    colors = _ref2$theme.colors,\n    spacing = _ref2$theme.spacing;\n  return _objectSpread({\n    label: 'group',\n    cursor: 'default',\n    display: 'block'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    fontSize: '75%',\n    fontWeight: 500,\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  });\n};\nvar GroupHeading = function GroupHeading(props) {\n  var _cleanCommonProps = cleanCommonProps(props);\n    _cleanCommonProps.data;\n    var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'groupHeading', {\n    'group-heading': true\n  }), innerProps));\n};\nvar Group$1 = Group;\n\nvar _excluded = [\"innerRef\", \"isDisabled\", \"isHidden\", \"inputClassName\"];\nvar inputCSS = function inputCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    value = _ref.value,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread(_objectSpread({\n    visibility: isDisabled ? 'hidden' : 'visible',\n    // force css to recompute when value change due to @emotion bug.\n    // We can remove it whenever the bug is fixed.\n    transform: value ? 'translateZ(0)' : ''\n  }, containerStyle), unstyled ? {} : {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    color: colors.neutral80\n  });\n};\nvar spacingStyle = {\n  gridArea: '1 / 2',\n  font: 'inherit',\n  minWidth: '2px',\n  border: 0,\n  margin: 0,\n  outline: 0,\n  padding: 0\n};\nvar containerStyle = {\n  flex: '1 1 auto',\n  display: 'inline-grid',\n  gridArea: '1 / 1 / 2 / 3',\n  gridTemplateColumns: '0 min-content',\n  '&:after': _objectSpread({\n    content: 'attr(data-value) \" \"',\n    visibility: 'hidden',\n    whiteSpace: 'pre'\n  }, spacingStyle)\n};\nvar inputStyle = function inputStyle(isHidden) {\n  return _objectSpread({\n    label: 'input',\n    color: 'inherit',\n    background: 0,\n    opacity: isHidden ? 0 : 1,\n    width: '100%'\n  }, spacingStyle);\n};\nvar Input = function Input(props) {\n  var cx = props.cx,\n    value = props.value;\n  var _cleanCommonProps = cleanCommonProps(props),\n    innerRef = _cleanCommonProps.innerRef,\n    isDisabled = _cleanCommonProps.isDisabled,\n    isHidden = _cleanCommonProps.isHidden,\n    inputClassName = _cleanCommonProps.inputClassName,\n    innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'input', {\n    'input-container': true\n  }), {\n    \"data-value\": value || ''\n  }), jsx(\"input\", _extends({\n    className: cx({\n      input: true\n    }, inputClassName),\n    ref: innerRef,\n    style: inputStyle(isHidden),\n    disabled: isDisabled\n  }, innerProps)));\n};\nvar Input$1 = Input;\n\nvar multiValueCSS = function multiValueCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    borderRadius = _ref$theme.borderRadius,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'multiValue',\n    display: 'flex',\n    minWidth: 0\n  }, unstyled ? {} : {\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    margin: spacing.baseUnit / 2\n  });\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    colors = _ref2$theme.colors,\n    cropWithEllipsis = _ref2.cropWithEllipsis;\n  return _objectSpread({\n    overflow: 'hidden',\n    textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    padding: 3,\n    paddingLeft: 6\n  });\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3, unstyled) {\n  var _ref3$theme = _ref3.theme,\n    spacing = _ref3$theme.spacing,\n    borderRadius = _ref3$theme.borderRadius,\n    colors = _ref3$theme.colors,\n    isFocused = _ref3.isFocused;\n  return _objectSpread({\n    alignItems: 'center',\n    display: 'flex'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused ? colors.dangerLight : undefined,\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  });\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n    innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n    innerProps = _ref5.innerProps;\n  return jsx(\"div\", _extends({\n    role: \"button\"\n  }, innerProps), children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n    components = props.components,\n    data = props.data,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    removeProps = props.removeProps,\n    selectProps = props.selectProps;\n  var Container = components.Container,\n    Label = components.Label,\n    Remove = components.Remove;\n  return jsx(Container, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValue', {\n      'multi-value': true,\n      'multi-value--is-disabled': isDisabled\n    })), innerProps),\n    selectProps: selectProps\n  }, jsx(Label, {\n    data: data,\n    innerProps: _objectSpread({}, getStyleProps(props, 'multiValueLabel', {\n      'multi-value__label': true\n    })),\n    selectProps: selectProps\n  }, children), jsx(Remove, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValueRemove', {\n      'multi-value__remove': true\n    })), {}, {\n      'aria-label': \"Remove \".concat(children || 'option')\n    }, removeProps),\n    selectProps: selectProps\n  }));\n};\nvar MultiValue$1 = MultiValue;\n\nvar optionCSS = function optionCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    isSelected = _ref.isSelected,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'option',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)'\n  }, unstyled ? {} : {\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined\n    }\n  });\n};\nvar Option = function Option(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    isSelected = props.isSelected,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'option', {\n    option: true,\n    'option--is-disabled': isDisabled,\n    'option--is-focused': isFocused,\n    'option--is-selected': isSelected\n  }), {\n    ref: innerRef,\n    \"aria-disabled\": isDisabled\n  }, innerProps), children);\n};\nvar Option$1 = Option;\n\nvar placeholderCSS = function placeholderCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'placeholder',\n    gridArea: '1 / 1 / 2 / 3'\n  }, unstyled ? {} : {\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'placeholder', {\n    placeholder: true\n  }), innerProps), children);\n};\nvar Placeholder$1 = Placeholder;\n\nvar css = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'singleValue',\n    gridArea: '1 / 1 / 2 / 3',\n    maxWidth: '100%',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'singleValue', {\n    'single-value': true,\n    'single-value--is-disabled': isDisabled\n  }), innerProps), children);\n};\nvar SingleValue$1 = SingleValue;\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control$1,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group$1,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input$1,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu$1,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue$1,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option$1,\n  Placeholder: Placeholder$1,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue$1,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread(_objectSpread({}, components), props.components);\n};\n\nexport { isMobileDevice as A, multiValueAsValue as B, singleValueAsValue as C, valueTernary as D, classNames as E, defaultComponents as F, isDocumentElement as G, cleanValue as H, scrollIntoView as I, noop as J, notNullish as K, handleInputChange as L, MenuPlacer as M, clearIndicatorCSS as a, containerCSS as b, components as c, css$1 as d, dropdownIndicatorCSS as e, groupHeadingCSS as f, groupCSS as g, indicatorSeparatorCSS as h, indicatorsContainerCSS as i, inputCSS as j, loadingMessageCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuListCSS as n, menuPortalCSS as o, multiValueCSS as p, multiValueLabelCSS as q, removeProps as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css as x, valueContainerCSS as y, isTouchCapable as z };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _createSuper from '@babel/runtime/helpers/esm/createSuper';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport * as React from 'react';\nimport { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react';\nimport { r as removeProps, s as supportsPassiveEvents, a as clearIndicatorCSS, b as containerCSS, d as css$1, e as dropdownIndicatorCSS, g as groupCSS, f as groupHeadingCSS, i as indicatorsContainerCSS, h as indicatorSeparatorCSS, j as inputCSS, l as loadingIndicatorCSS, k as loadingMessageCSS, m as menuCSS, n as menuListCSS, o as menuPortalCSS, p as multiValueCSS, q as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, B as multiValueAsValue, C as singleValueAsValue, D as valueTernary, E as classNames, F as defaultComponents, G as isDocumentElement, H as cleanValue, I as scrollIntoView, J as noop, M as MenuPlacer, K as notNullish } from './index-641ee5b8.esm.js';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"7pg0cj-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n  name: \"1f43avz-a11yText-A11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2\n};\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\nvar A11yText$1 = A11yText;\n\nvar defaultAriaLiveMessages = {\n  guidance: function guidance(props) {\n    var isSearchable = props.isSearchable,\n      isMulti = props.isMulti,\n      tabSelectsValue = props.tabSelectsValue,\n      context = props.context,\n      isInitialFocus = props.isInitialFocus;\n    switch (context) {\n      case 'menu':\n        return \"Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu\".concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n      case 'input':\n        return isInitialFocus ? \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '') : '';\n      case 'value':\n        return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n      default:\n        return '';\n    }\n  },\n  onChange: function onChange(props) {\n    var action = props.action,\n      _props$label = props.label,\n      label = _props$label === void 0 ? '' : _props$label,\n      labels = props.labels,\n      isDisabled = props.isDisabled;\n    switch (action) {\n      case 'deselect-option':\n      case 'pop-value':\n      case 'remove-value':\n        return \"option \".concat(label, \", deselected.\");\n      case 'clear':\n        return 'All selected options have been cleared.';\n      case 'initial-input-focus':\n        return \"option\".concat(labels.length > 1 ? 's' : '', \" \").concat(labels.join(','), \", selected.\");\n      case 'select-option':\n        return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n      default:\n        return '';\n    }\n  },\n  onFocus: function onFocus(props) {\n    var context = props.context,\n      focused = props.focused,\n      options = props.options,\n      _props$label2 = props.label,\n      label = _props$label2 === void 0 ? '' : _props$label2,\n      selectValue = props.selectValue,\n      isDisabled = props.isDisabled,\n      isSelected = props.isSelected,\n      isAppleDevice = props.isAppleDevice;\n    var getArrayIndex = function getArrayIndex(arr, item) {\n      return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n    };\n    if (context === 'value' && selectValue) {\n      return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n    }\n    if (context === 'menu' && isAppleDevice) {\n      var disabled = isDisabled ? ' disabled' : '';\n      var status = \"\".concat(isSelected ? ' selected' : '').concat(disabled);\n      return \"\".concat(label).concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n    }\n    return '';\n  },\n  onFilter: function onFilter(props) {\n    var inputValue = props.inputValue,\n      resultsMessage = props.resultsMessage;\n    return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n  }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n  var ariaSelection = props.ariaSelection,\n    focusedOption = props.focusedOption,\n    focusedValue = props.focusedValue,\n    focusableOptions = props.focusableOptions,\n    isFocused = props.isFocused,\n    selectValue = props.selectValue,\n    selectProps = props.selectProps,\n    id = props.id,\n    isAppleDevice = props.isAppleDevice;\n  var ariaLiveMessages = selectProps.ariaLiveMessages,\n    getOptionLabel = selectProps.getOptionLabel,\n    inputValue = selectProps.inputValue,\n    isMulti = selectProps.isMulti,\n    isOptionDisabled = selectProps.isOptionDisabled,\n    isSearchable = selectProps.isSearchable,\n    menuIsOpen = selectProps.menuIsOpen,\n    options = selectProps.options,\n    screenReaderStatus = selectProps.screenReaderStatus,\n    tabSelectsValue = selectProps.tabSelectsValue,\n    isLoading = selectProps.isLoading;\n  var ariaLabel = selectProps['aria-label'];\n  var ariaLive = selectProps['aria-live'];\n\n  // Update aria live message configuration when prop changes\n  var messages = useMemo(function () {\n    return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n  }, [ariaLiveMessages]);\n\n  // Update aria live selected option when prop changes\n  var ariaSelected = useMemo(function () {\n    var message = '';\n    if (ariaSelection && messages.onChange) {\n      var option = ariaSelection.option,\n        selectedOptions = ariaSelection.options,\n        removedValue = ariaSelection.removedValue,\n        removedValues = ariaSelection.removedValues,\n        value = ariaSelection.value;\n      // select-option when !isMulti does not return option so we assume selected option is value\n      var asOption = function asOption(val) {\n        return !Array.isArray(val) ? val : null;\n      };\n\n      // If there is just one item from the action then get its label\n      var selected = removedValue || option || asOption(value);\n      var label = selected ? getOptionLabel(selected) : '';\n\n      // If there are multiple items from the action then return an array of labels\n      var multiSelected = selectedOptions || removedValues || undefined;\n      var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];\n      var onChangeProps = _objectSpread({\n        // multiSelected items are usually items that have already been selected\n        // or set by the user as a default value so we assume they are not disabled\n        isDisabled: selected && isOptionDisabled(selected, selectValue),\n        label: label,\n        labels: labels\n      }, ariaSelection);\n      message = messages.onChange(onChangeProps);\n    }\n    return message;\n  }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);\n  var ariaFocused = useMemo(function () {\n    var focusMsg = '';\n    var focused = focusedOption || focusedValue;\n    var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n    if (focused && messages.onFocus) {\n      var onFocusProps = {\n        focused: focused,\n        label: getOptionLabel(focused),\n        isDisabled: isOptionDisabled(focused, selectValue),\n        isSelected: isSelected,\n        options: focusableOptions,\n        context: focused === focusedOption ? 'menu' : 'value',\n        selectValue: selectValue,\n        isAppleDevice: isAppleDevice\n      };\n      focusMsg = messages.onFocus(onFocusProps);\n    }\n    return focusMsg;\n  }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue, isAppleDevice]);\n  var ariaResults = useMemo(function () {\n    var resultsMsg = '';\n    if (menuIsOpen && options.length && !isLoading && messages.onFilter) {\n      var resultsMessage = screenReaderStatus({\n        count: focusableOptions.length\n      });\n      resultsMsg = messages.onFilter({\n        inputValue: inputValue,\n        resultsMessage: resultsMessage\n      });\n    }\n    return resultsMsg;\n  }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus, isLoading]);\n  var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';\n  var ariaGuidance = useMemo(function () {\n    var guidanceMsg = '';\n    if (messages.guidance) {\n      var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n      guidanceMsg = messages.guidance({\n        'aria-label': ariaLabel,\n        context: context,\n        isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),\n        isMulti: isMulti,\n        isSearchable: isSearchable,\n        tabSelectsValue: tabSelectsValue,\n        isInitialFocus: isInitialFocus\n      });\n    }\n    return guidanceMsg;\n  }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue, isInitialFocus]);\n  var ScreenReaderText = jsx(Fragment, null, jsx(\"span\", {\n    id: \"aria-selection\"\n  }, ariaSelected), jsx(\"span\", {\n    id: \"aria-focused\"\n  }, ariaFocused), jsx(\"span\", {\n    id: \"aria-results\"\n  }, ariaResults), jsx(\"span\", {\n    id: \"aria-guidance\"\n  }, ariaGuidance));\n  return jsx(Fragment, null, jsx(A11yText$1, {\n    id: id\n  }, isInitialFocus && ScreenReaderText), jsx(A11yText$1, {\n    \"aria-live\": ariaLive,\n    \"aria-atomic\": \"false\",\n    \"aria-relevant\": \"additions text\",\n    role: \"log\"\n  }, isFocused && !isInitialFocus && ScreenReaderText));\n};\nvar LiveRegion$1 = LiveRegion;\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    // eslint-disable-next-line no-underscore-dangle\n    if (option.data.__isNew__) return true;\n    var _ignoreCase$ignoreAcc = _objectSpread({\n        ignoreCase: true,\n        ignoreAccents: true,\n        stringify: defaultStringify,\n        trim: true,\n        matchFrom: 'any'\n      }, config),\n      ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n      ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n      stringify = _ignoreCase$ignoreAcc.stringify,\n      trim = _ignoreCase$ignoreAcc.trim,\n      matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = memoizedStripDiacriticsForInput(input);\n      candidate = stripDiacritics(candidate);\n    }\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nvar _excluded = [\"innerRef\"];\nfunction DummyInput(_ref) {\n  var innerRef = _ref.innerRef,\n    props = _objectWithoutProperties(_ref, _excluded);\n  // Remove animation props not meant for HTML elements\n  var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, filteredProps, {\n    css: /*#__PURE__*/css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      // important! this hides the flashing cursor\n      caretColor: 'transparent',\n      fontSize: 'inherit',\n      gridArea: '1 / 1 / 2 / 3',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(.01)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyByZW1vdmVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGlubmVyUmVmLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbnB1dCddICYge1xuICByZWFkb25seSBpbm5lclJlZjogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xufSkge1xuICAvLyBSZW1vdmUgYW5pbWF0aW9uIHByb3BzIG5vdCBtZWFudCBmb3IgSFRNTCBlbGVtZW50c1xuICBjb25zdCBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMoXG4gICAgcHJvcHMsXG4gICAgJ29uRXhpdGVkJyxcbiAgICAnaW4nLFxuICAgICdlbnRlcicsXG4gICAgJ2V4aXQnLFxuICAgICdhcHBlYXInXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8aW5wdXRcbiAgICAgIHJlZj17aW5uZXJSZWZ9XG4gICAgICB7Li4uZmlsdGVyZWRQcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICAgIGNhcmV0Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSguMDEpJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n  }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n  if (event.cancelable) event.preventDefault();\n  event.stopPropagation();\n};\nfunction useScrollCapture(_ref) {\n  var isEnabled = _ref.isEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var isBottom = useRef(false);\n  var isTop = useRef(false);\n  var touchStart = useRef(0);\n  var scrollTarget = useRef(null);\n  var handleEventDelta = useCallback(function (event, delta) {\n    if (scrollTarget.current === null) return;\n    var _scrollTarget$current = scrollTarget.current,\n      scrollTop = _scrollTarget$current.scrollTop,\n      scrollHeight = _scrollTarget$current.scrollHeight,\n      clientHeight = _scrollTarget$current.clientHeight;\n    var target = scrollTarget.current;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = scrollHeight - clientHeight - scrollTop;\n    var shouldCancelScroll = false;\n\n    // reset bottom/top flags\n    if (availableScroll > delta && isBottom.current) {\n      if (onBottomLeave) onBottomLeave(event);\n      isBottom.current = false;\n    }\n    if (isDeltaPositive && isTop.current) {\n      if (onTopLeave) onTopLeave(event);\n      isTop.current = false;\n    }\n\n    // bottom limit\n    if (isDeltaPositive && delta > availableScroll) {\n      if (onBottomArrive && !isBottom.current) {\n        onBottomArrive(event);\n      }\n      target.scrollTop = scrollHeight;\n      shouldCancelScroll = true;\n      isBottom.current = true;\n\n      // top limit\n    } else if (!isDeltaPositive && -delta > scrollTop) {\n      if (onTopArrive && !isTop.current) {\n        onTopArrive(event);\n      }\n      target.scrollTop = 0;\n      shouldCancelScroll = true;\n      isTop.current = true;\n    }\n\n    // cancel scroll\n    if (shouldCancelScroll) {\n      cancelScroll(event);\n    }\n  }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);\n  var onWheel = useCallback(function (event) {\n    handleEventDelta(event, event.deltaY);\n  }, [handleEventDelta]);\n  var onTouchStart = useCallback(function (event) {\n    // set touch start so we can calculate touchmove delta\n    touchStart.current = event.changedTouches[0].clientY;\n  }, []);\n  var onTouchMove = useCallback(function (event) {\n    var deltaY = touchStart.current - event.changedTouches[0].clientY;\n    handleEventDelta(event, deltaY);\n  }, [handleEventDelta]);\n  var startListening = useCallback(function (el) {\n    // bail early if no element is available to attach to\n    if (!el) return;\n    var notPassive = supportsPassiveEvents ? {\n      passive: false\n    } : false;\n    el.addEventListener('wheel', onWheel, notPassive);\n    el.addEventListener('touchstart', onTouchStart, notPassive);\n    el.addEventListener('touchmove', onTouchMove, notPassive);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  var stopListening = useCallback(function (el) {\n    // bail early if no element is available to detach from\n    if (!el) return;\n    el.removeEventListener('wheel', onWheel, false);\n    el.removeEventListener('touchstart', onTouchStart, false);\n    el.removeEventListener('touchmove', onTouchMove, false);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    startListening(element);\n    return function () {\n      stopListening(element);\n    };\n  }, [isEnabled, startListening, stopListening]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\nfunction preventTouchMove(e) {\n  if (e.cancelable) e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n  capture: false,\n  passive: false\n};\nfunction useScrollLock(_ref) {\n  var isEnabled = _ref.isEnabled,\n    _ref$accountForScroll = _ref.accountForScrollbars,\n    accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n  var originalStyles = useRef({});\n  var scrollTarget = useRef(null);\n  var addScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n    if (accountForScrollbars) {\n      // store any styles already applied to the body\n      STYLE_KEYS.forEach(function (key) {\n        var val = targetStyle && targetStyle[key];\n        originalStyles.current[key] = val;\n      });\n    }\n\n    // apply the lock styles and padding if this is the first scroll lock\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n      var clientWidth = document.body ? document.body.clientWidth : 0;\n      var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n      Object.keys(LOCK_STYLES).forEach(function (key) {\n        var val = LOCK_STYLES[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n      if (targetStyle) {\n        targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n      }\n    }\n\n    // account for touch devices\n    if (target && isTouchDevice()) {\n      // Mobile Safari ignores { overflow: hidden } declaration on the body.\n      target.addEventListener('touchmove', preventTouchMove, listenerOptions);\n\n      // Allow scroll on provided target\n      if (touchScrollTarget) {\n        touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n\n    // increment active scroll locks\n    activeScrollLocks += 1;\n  }, [accountForScrollbars]);\n  var removeScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n\n    // safely decrement active scroll locks\n    activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n    // reapply original body styles, if any\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      STYLE_KEYS.forEach(function (key) {\n        var val = originalStyles.current[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n    }\n\n    // remove touch listeners\n    if (target && isTouchDevice()) {\n      target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n      if (touchScrollTarget) {\n        touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n  }, [accountForScrollbars]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    addScrollLock(element);\n    return function () {\n      removeScrollLock(element);\n    };\n  }, [isEnabled, addScrollLock, removeScrollLock]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar blurSelectInput = function blurSelectInput(event) {\n  var element = event.target;\n  return element.ownerDocument.activeElement && element.ownerDocument.activeElement.blur();\n};\nvar _ref2$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1kfdb0e\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n  name: \"bp8cua-ScrollManager\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2ssIE1vdXNlRXZlbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9IChldmVudDogTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcmV0dXJuIChcbiAgICBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuICAgIChlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JvbGxNYW5hZ2VyKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2tFbmFibGVkLFxuICBjYXB0dXJlRW5hYmxlZCA9IHRydWUsXG4gIG9uQm90dG9tQXJyaXZlLFxuICBvbkJvdHRvbUxlYXZlLFxuICBvblRvcEFycml2ZSxcbiAgb25Ub3BMZWF2ZSxcbn06IFByb3BzKSB7XG4gIGNvbnN0IHNldFNjcm9sbENhcHR1cmVUYXJnZXQgPSB1c2VTY3JvbGxDYXB0dXJlKHtcbiAgICBpc0VuYWJsZWQ6IGNhcHR1cmVFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSxcbiAgfSk7XG4gIGNvbnN0IHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHsgaXNFbmFibGVkOiBsb2NrRW5hYmxlZCB9KTtcblxuICBjb25zdCB0YXJnZXRSZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PiA9IChlbGVtZW50KSA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\nfunction ScrollManager(_ref) {\n  var children = _ref.children,\n    lockEnabled = _ref.lockEnabled,\n    _ref$captureEnabled = _ref.captureEnabled,\n    captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var setScrollCaptureTarget = useScrollCapture({\n    isEnabled: captureEnabled,\n    onBottomArrive: onBottomArrive,\n    onBottomLeave: onBottomLeave,\n    onTopArrive: onTopArrive,\n    onTopLeave: onTopLeave\n  });\n  var setScrollLockTarget = useScrollLock({\n    isEnabled: lockEnabled\n  });\n  var targetRef = function targetRef(element) {\n    setScrollCaptureTarget(element);\n    setScrollLockTarget(element);\n  };\n  return jsx(Fragment, null, lockEnabled && jsx(\"div\", {\n    onClick: blurSelectInput,\n    css: _ref2$1\n  }), children(targetRef));\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1a0ro4n-requiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%\"\n} : {\n  name: \"5kkxb2-requiredInput-RequiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar RequiredInput = function RequiredInput(_ref) {\n  var name = _ref.name,\n    onFocus = _ref.onFocus;\n  return jsx(\"input\", {\n    required: true,\n    name: name,\n    tabIndex: -1,\n    \"aria-hidden\": \"true\",\n    onFocus: onFocus,\n    css: _ref2\n    // Prevent `Switching from uncontrolled to controlled` error\n    ,\n    value: \"\",\n    onChange: function onChange() {}\n  });\n};\nvar RequiredInput$1 = RequiredInput;\n\n/// <reference types=\"user-agent-data-types\" />\n\nfunction testPlatform(re) {\n  var _window$navigator$use;\n  return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window$navigator$use = window.navigator['userAgentData']) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.platform) || window.navigator.platform) : false;\n}\nfunction isIPhone() {\n  return testPlatform(/^iPhone/i);\n}\nfunction isMac() {\n  return testPlatform(/^Mac/i);\n}\nfunction isIPad() {\n  return testPlatform(/^iPad/i) ||\n  // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n  isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n  return isIPhone() || isIPad();\n}\nfunction isAppleDevice() {\n  return isMac() || isIOS();\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel$1 = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue$1 = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n};\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // initialize with source styles\n  var styles = _objectSpread({}, source);\n\n  // massage in target styles\n  Object.keys(target).forEach(function (keyAsString) {\n    var key = keyAsString;\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\n// Used to calculate consistent margin/padding on elements\nvar baseUnit = 4;\n// The minimum height of the control\nvar controlHeight = 38;\n// The amount of space between the control and menu */\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  'aria-live': 'polite',\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  classNames: {},\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel$1,\n  getOptionValue: getOptionValue$1,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: 0,\n  tabSelectsValue: true,\n  unstyled: false\n};\nfunction toCategorizedOption(props, option, selectValue, index) {\n  var isDisabled = _isOptionDisabled(props, option, selectValue);\n  var isSelected = _isOptionSelected(props, option, selectValue);\n  var label = getOptionLabel(props, option);\n  var value = getOptionValue(props, option);\n  return {\n    type: 'option',\n    data: option,\n    isDisabled: isDisabled,\n    isSelected: isSelected,\n    label: label,\n    value: value,\n    index: index\n  };\n}\nfunction buildCategorizedOptions(props, selectValue) {\n  return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n    if ('options' in groupOrOption) {\n      var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n        return toCategorizedOption(props, option, selectValue, optionIndex);\n      }).filter(function (categorizedOption) {\n        return isFocusable(props, categorizedOption);\n      });\n      return categorizedOptions.length > 0 ? {\n        type: 'group',\n        data: groupOrOption,\n        options: categorizedOptions,\n        index: groupOrOptionIndex\n      } : undefined;\n    }\n    var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n    return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n  }).filter(notNullish);\n}\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return option.data;\n      })));\n    } else {\n      optionsAccumulator.push(categorizedOption.data);\n    }\n    return optionsAccumulator;\n  }, []);\n}\nfunction buildFocusableOptionsWithIds(categorizedOptions, optionId) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return {\n          data: option.data,\n          id: \"\".concat(optionId, \"-\").concat(categorizedOption.index, \"-\").concat(option.index)\n        };\n      })));\n    } else {\n      optionsAccumulator.push({\n        data: categorizedOption.data,\n        id: \"\".concat(optionId, \"-\").concat(categorizedOption.index)\n      });\n    }\n    return optionsAccumulator;\n  }, []);\n}\nfunction buildFocusableOptions(props, selectValue) {\n  return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\nfunction isFocusable(props, categorizedOption) {\n  var _props$inputValue = props.inputValue,\n    inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n  var data = categorizedOption.data,\n    isSelected = categorizedOption.isSelected,\n    label = categorizedOption.label,\n    value = categorizedOption.value;\n  return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n    label: label,\n    value: value,\n    data: data\n  }, inputValue);\n}\nfunction getNextFocusedValue(state, nextSelectValue) {\n  var focusedValue = state.focusedValue,\n    lastSelectValue = state.selectValue;\n  var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n  if (lastFocusedIndex > -1) {\n    var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n    if (nextFocusedIndex > -1) {\n      // the focused value is still in the selectValue, return it\n      return focusedValue;\n    } else if (lastFocusedIndex < nextSelectValue.length) {\n      // the focusedValue is not present in the next selectValue array by\n      // reference, so return the new value at the same index\n      return nextSelectValue[lastFocusedIndex];\n    }\n  }\n  return null;\n}\nfunction getNextFocusedOption(state, options) {\n  var lastFocusedOption = state.focusedOption;\n  return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\nvar getFocusedOptionId = function getFocusedOptionId(focusableOptionsWithIds, focusedOption) {\n  var _focusableOptionsWith;\n  var focusedOptionId = (_focusableOptionsWith = focusableOptionsWithIds.find(function (option) {\n    return option.data === focusedOption;\n  })) === null || _focusableOptionsWith === void 0 ? void 0 : _focusableOptionsWith.id;\n  return focusedOptionId || null;\n};\nvar getOptionLabel = function getOptionLabel(props, data) {\n  return props.getOptionLabel(data);\n};\nvar getOptionValue = function getOptionValue(props, data) {\n  return props.getOptionValue(data);\n};\nfunction _isOptionDisabled(props, option, selectValue) {\n  return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\nfunction _isOptionSelected(props, option, selectValue) {\n  if (selectValue.indexOf(option) > -1) return true;\n  if (typeof props.isOptionSelected === 'function') {\n    return props.isOptionSelected(option, selectValue);\n  }\n  var candidate = getOptionValue(props, option);\n  return selectValue.some(function (i) {\n    return getOptionValue(props, i) === candidate;\n  });\n}\nfunction _filterOption(props, option, inputValue) {\n  return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n  var hideSelectedOptions = props.hideSelectedOptions,\n    isMulti = props.isMulti;\n  if (hideSelectedOptions === undefined) return isMulti;\n  return hideSelectedOptions;\n};\nvar instanceId = 1;\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n  var _super = _createSuper(Select);\n  // Misc. Instance Properties\n  // ------------------------------\n\n  // TODO\n\n  // Refs\n  // ------------------------------\n\n  // Lifecycle\n  // ------------------------------\n\n  function Select(_props) {\n    var _this;\n    _classCallCheck(this, Select);\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaSelection: null,\n      focusedOption: null,\n      focusedOptionId: null,\n      focusableOptionsWithIds: [],\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      selectValue: [],\n      clearFocusValueOnUpdate: false,\n      prevWasFocused: false,\n      inputIsHiddenAfterUpdate: undefined,\n      prevProps: undefined,\n      instancePrefix: '',\n      isAppleDevice: false\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.commonProps = void 0;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n    _this.focusedOptionRef = null;\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n    _this.menuListRef = null;\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n    _this.inputRef = null;\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n        onChange = _this$props.onChange,\n        name = _this$props.name;\n      actionMeta.name = name;\n      _this.ariaOnChange(newValue, actionMeta);\n      onChange(newValue, actionMeta);\n    };\n    _this.setValue = function (newValue, action, option) {\n      var _this$props2 = _this.props,\n        closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n        isMulti = _this$props2.isMulti,\n        inputValue = _this$props2.inputValue;\n      _this.onInputChange('', {\n        action: 'set-value',\n        prevInputValue: inputValue\n      });\n      if (closeMenuOnSelect) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      }\n      // when the select value should change, we should reset focusedValue\n      _this.setState({\n        clearFocusValueOnUpdate: true\n      });\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n        blurInputOnSelect = _this$props3.blurInputOnSelect,\n        isMulti = _this$props3.isMulti,\n        name = _this$props3.name;\n      var selectValue = _this.state.selectValue;\n      var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n      var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n      if (deselected) {\n        var candidate = _this.getOptionValue(newValue);\n        _this.setValue(multiValueAsValue(selectValue.filter(function (i) {\n          return _this.getOptionValue(i) !== candidate;\n        })), 'deselect-option', newValue);\n      } else if (!isDisabled) {\n        // Select option if option is not disabled\n        if (isMulti) {\n          _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue);\n        } else {\n          _this.setValue(singleValueAsValue(newValue), 'select-option');\n        }\n      } else {\n        _this.ariaOnChange(singleValueAsValue(newValue), {\n          action: 'select-option',\n          option: newValue,\n          name: name\n        });\n        return;\n      }\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n    _this.removeValue = function (removedValue) {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var candidate = _this.getOptionValue(removedValue);\n      var newValueArray = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      _this.onChange(newValue, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n      _this.focusInput();\n    };\n    _this.clearValue = function () {\n      var selectValue = _this.state.selectValue;\n      _this.onChange(valueTernary(_this.props.isMulti, [], null), {\n        action: 'clear',\n        removedValues: selectValue\n      });\n    };\n    _this.popValue = function () {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValueArray = selectValue.slice(0, selectValue.length - 1);\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      if (lastSelectedValue) {\n        _this.onChange(newValue, {\n          action: 'pop-value',\n          removedValue: lastSelectedValue\n        });\n      }\n    };\n    _this.getFocusedOptionId = function (focusedOption) {\n      return getFocusedOptionId(_this.state.focusableOptionsWithIds, focusedOption);\n    };\n    _this.getFocusableOptionsWithIds = function () {\n      return buildFocusableOptionsWithIds(buildCategorizedOptions(_this.props, _this.state.selectValue), _this.getElementId('option'));\n    };\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n    _this.getOptionLabel = function (data) {\n      return getOptionLabel(_this.props, data);\n    };\n    _this.getOptionValue = function (data) {\n      return getOptionValue(_this.props, data);\n    };\n    _this.getStyles = function (key, props) {\n      var unstyled = _this.props.unstyled;\n      var base = defaultStyles[key](props, unstyled);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n    _this.getClassNames = function (key, props) {\n      var _this$props$className, _this$props$className2;\n      return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props);\n    };\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.state.instancePrefix, \"-\").concat(element);\n    };\n    _this.getComponents = function () {\n      return defaultComponents(_this.props);\n    };\n    _this.buildCategorizedOptions = function () {\n      return buildCategorizedOptions(_this.props, _this.state.selectValue);\n    };\n    _this.getCategorizedOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n    };\n    _this.buildFocusableOptions = function () {\n      return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n    };\n    _this.getFocusableOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n    };\n    _this.ariaOnChange = function (value, actionMeta) {\n      _this.setState({\n        ariaSelection: _objectSpread({\n          value: value\n        }, actionMeta)\n      });\n    };\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n      event.stopPropagation();\n      event.preventDefault();\n      _this.focusInput();\n    };\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n    _this.onControlMouseDown = function (event) {\n      // Event captured by dropdown indicator\n      if (event.defaultPrevented) {\n        return;\n      }\n      var openMenuOnClick = _this.props.openMenuOnClick;\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n      if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n        isMulti = _this$props4.isMulti,\n        menuIsOpen = _this$props4.menuIsOpen;\n      _this.focusInput();\n      if (menuIsOpen) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n      event.preventDefault();\n    };\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      _this.clearValue();\n      event.preventDefault();\n      _this.openAfterFocus = false;\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n    _this.onTouchStart = function (_ref2) {\n      var touches = _ref2.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n    _this.onTouchMove = function (_ref3) {\n      var touches = _ref3.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      }\n\n      // reset move vars\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onControlMouseDown(event);\n    };\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onClearIndicatorMouseDown(event);\n    };\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n    _this.handleInputChange = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      var inputValue = event.currentTarget.value;\n      _this.setState({\n        inputIsHiddenAfterUpdate: false\n      });\n      _this.onInputChange(inputValue, {\n        action: 'input-change',\n        prevInputValue: prevInputValue\n      });\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n    _this.onInputFocus = function (event) {\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n      _this.setState({\n        inputIsHiddenAfterUpdate: false,\n        isFocused: true\n      });\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n      _this.openAfterFocus = false;\n    };\n    _this.onInputBlur = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n        return;\n      }\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n      _this.onInputChange('', {\n        action: 'input-blur',\n        prevInputValue: prevInputValue\n      });\n      _this.onMenuClose();\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n      var options = _this.getFocusableOptions();\n      var focusedOptionIndex = options.indexOf(focusedOption);\n      _this.setState({\n        focusedOption: focusedOption,\n        focusedOptionId: focusedOptionIndex > -1 ? _this.getFocusedOptionId(focusedOption) : null\n      });\n    };\n    _this.shouldHideSelectedOptions = function () {\n      return shouldHideSelectedOptions(_this.props);\n    };\n    _this.onValueInputFocus = function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      _this.focus();\n    };\n    _this.onKeyDown = function (event) {\n      var _this$props5 = _this.props,\n        isMulti = _this$props5.isMulti,\n        backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n        escapeClearsValue = _this$props5.escapeClearsValue,\n        inputValue = _this$props5.inputValue,\n        isClearable = _this$props5.isClearable,\n        isDisabled = _this$props5.isDisabled,\n        menuIsOpen = _this$props5.menuIsOpen,\n        onKeyDown = _this$props5.onKeyDown,\n        tabSelectsValue = _this$props5.tabSelectsValue,\n        openMenuOnFocus = _this$props5.openMenuOnFocus;\n      var _this$state = _this.state,\n        focusedOption = _this$state.focusedOption,\n        focusedValue = _this$state.focusedValue,\n        selectValue = _this$state.selectValue;\n      if (isDisabled) return;\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n        if (event.defaultPrevented) {\n          return;\n        }\n      }\n\n      // Block option hover events when the user has just pressed a key\n      _this.blockOptionHover = true;\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('previous');\n          break;\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('next');\n          break;\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n          break;\n        case 'Tab':\n          if (_this.isComposing) return;\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n          // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n          _this.selectOption(focusedOption);\n          break;\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n            _this.selectOption(focusedOption);\n            break;\n          }\n          return;\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.setState({\n              inputIsHiddenAfterUpdate: false\n            });\n            _this.onInputChange('', {\n              action: 'menu-close',\n              prevInputValue: inputValue\n            });\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n          break;\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n            break;\n          }\n          if (!focusedOption) return;\n          _this.selectOption(focusedOption);\n          break;\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n          break;\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n          break;\n        case 'PageUp':\n          if (!menuIsOpen) return;\n          _this.focusOption('pageup');\n          break;\n        case 'PageDown':\n          if (!menuIsOpen) return;\n          _this.focusOption('pagedown');\n          break;\n        case 'Home':\n          if (!menuIsOpen) return;\n          _this.focusOption('first');\n          break;\n        case 'End':\n          if (!menuIsOpen) return;\n          _this.focusOption('last');\n          break;\n        default:\n          return;\n      }\n      event.preventDefault();\n    };\n    _this.state.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n    _this.state.selectValue = cleanValue(_props.value);\n    // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)\n    if (_props.menuIsOpen && _this.state.selectValue.length) {\n      var focusableOptionsWithIds = _this.getFocusableOptionsWithIds();\n      var focusableOptions = _this.buildFocusableOptions();\n      var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]);\n      _this.state.focusableOptionsWithIds = focusableOptionsWithIds;\n      _this.state.focusedOption = focusableOptions[optionIndex];\n      _this.state.focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusableOptions[optionIndex]);\n    }\n    return _this;\n  }\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n\n      // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen)\n      if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      }\n      if (isAppleDevice()) {\n        // eslint-disable-next-line react/no-did-mount-set-state\n        this.setState({\n          isAppleDevice: true\n        });\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props6 = this.props,\n        isDisabled = _this$props6.isDisabled,\n        menuIsOpen = _this$props6.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      if (\n      // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled ||\n      // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programmatically disabled while focused\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) {\n        // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox)\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: true\n        });\n      }\n\n      // scroll the focused option into view if necessary\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n  }, {\n    key: \"onMenuOpen\",\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      this.onInputChange('', {\n        action: 'menu-close',\n        prevInputValue: this.props.inputValue\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    }\n\n    // ==============================\n    // Methods\n    // ==============================\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    }\n\n    // aliased for consumers\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n      var _this$state2 = this.state,\n        selectValue = _this$state2.selectValue,\n        isFocused = _this$state2.isFocused;\n      var focusableOptions = this.buildFocusableOptions();\n      var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n      if (!this.props.isMulti) {\n        var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      }\n\n      // only scroll if the menu isn't already open\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.setState({\n        inputIsHiddenAfterUpdate: false,\n        focusedValue: null,\n        focusedOption: focusableOptions[openAtIndex],\n        focusedOptionId: this.getFocusedOptionId(focusableOptions[openAtIndex])\n      }, function () {\n        return _this2.onMenuOpen();\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$state3 = this.state,\n        selectValue = _this$state3.selectValue,\n        focusedValue = _this$state3.focusedValue;\n\n      // Only multiselects support value focusing\n      if (!this.props.isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n      if (!focusedValue) {\n        focusedIndex = -1;\n      }\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n          break;\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n          break;\n      }\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var focusedOption = this.state.focusedOption;\n      var options = this.getFocusableOptions();\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n      var focusedIndex = options.indexOf(focusedOption);\n      if (!focusedOption) {\n        focusedIndex = -1;\n      }\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null,\n        focusedOptionId: this.getFocusedOptionId(options[nextFocus])\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    value:\n    // ==============================\n    // Getters\n    // ==============================\n\n    function getTheme() {\n      // Use the default theme if there are no customisations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      }\n      // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      }\n      // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n      return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n        cx = this.cx,\n        getStyles = this.getStyles,\n        getClassNames = this.getClassNames,\n        getValue = this.getValue,\n        selectOption = this.selectOption,\n        setValue = this.setValue,\n        props = this.props;\n      var isMulti = props.isMulti,\n        isRtl = props.isRtl,\n        options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        clearValue: clearValue,\n        cx: cx,\n        getStyles: getStyles,\n        getClassNames: getClassNames,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        selectProps: props,\n        setValue: setValue,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.getFocusableOptions().length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props7 = this.props,\n        isClearable = _this$props7.isClearable,\n        isMulti = _this$props7.isMulti;\n\n      // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return _isOptionDisabled(this.props, option, selectValue);\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      return _isOptionSelected(this.props, option, selectValue);\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return _filterOption(this.props, option, inputValue);\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var _inputValue = this.props.inputValue;\n        var _selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: _inputValue,\n          selectValue: _selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    }\n\n    // ==============================\n    // Mouse Handlers\n    // ==============================\n  }, {\n    key: \"startListeningComposition\",\n    value:\n    // ==============================\n    // Composition Handlers\n    // ==============================\n\n    function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    value:\n    // ==============================\n    // Touch Handlers\n    // ==============================\n\n    function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"renderInput\",\n    value:\n    // ==============================\n    // Renderers\n    // ==============================\n    function renderInput() {\n      var _this$props8 = this.props,\n        isDisabled = _this$props8.isDisabled,\n        isSearchable = _this$props8.isSearchable,\n        inputId = _this$props8.inputId,\n        inputValue = _this$props8.inputValue,\n        tabIndex = _this$props8.tabIndex,\n        form = _this$props8.form,\n        menuIsOpen = _this$props8.menuIsOpen,\n        required = _this$props8.required;\n      var _this$getComponents = this.getComponents(),\n        Input = _this$getComponents.Input;\n      var _this$state4 = this.state,\n        inputIsHidden = _this$state4.inputIsHidden,\n        ariaSelection = _this$state4.ariaSelection;\n      var commonProps = this.commonProps;\n      var id = inputId || this.getElementId('input');\n\n      // aria attributes makes the JSX \"noisy\", separated for clarity\n      var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({\n        'aria-autocomplete': 'list',\n        'aria-expanded': menuIsOpen,\n        'aria-haspopup': true,\n        'aria-errormessage': this.props['aria-errormessage'],\n        'aria-invalid': this.props['aria-invalid'],\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby'],\n        'aria-required': required,\n        role: 'combobox',\n        'aria-activedescendant': this.state.isAppleDevice ? undefined : this.state.focusedOptionId || ''\n      }, menuIsOpen && {\n        'aria-controls': this.getElementId('listbox')\n      }), !isSearchable && {\n        'aria-readonly': true\n      }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && {\n        'aria-describedby': this.getElementId('live-region')\n      } : {\n        'aria-describedby': this.getElementId('placeholder')\n      });\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          inputMode: \"none\",\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n      return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this3 = this;\n      var _this$getComponents2 = this.getComponents(),\n        MultiValue = _this$getComponents2.MultiValue,\n        MultiValueContainer = _this$getComponents2.MultiValueContainer,\n        MultiValueLabel = _this$getComponents2.MultiValueLabel,\n        MultiValueRemove = _this$getComponents2.MultiValueRemove,\n        SingleValue = _this$getComponents2.SingleValue,\n        Placeholder = _this$getComponents2.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props9 = this.props,\n        controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n        isDisabled = _this$props9.isDisabled,\n        isMulti = _this$props9.isMulti,\n        inputValue = _this$props9.inputValue,\n        placeholder = _this$props9.placeholder;\n      var _this$state5 = this.state,\n        selectValue = _this$state5.selectValue,\n        focusedValue = _this$state5.focusedValue,\n        isFocused = _this$state5.isFocused;\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused,\n          innerProps: {\n            id: this.getElementId('placeholder')\n          }\n        }), placeholder);\n      }\n      if (isMulti) {\n        return selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          var key = \"\".concat(_this3.getOptionLabel(opt), \"-\").concat(_this3.getOptionValue(opt));\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: key,\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this3.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this3.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n              }\n            },\n            data: opt\n          }), _this3.formatOptionLabel(opt, 'value'));\n        });\n      }\n      if (inputValue) {\n        return null;\n      }\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var _this$getComponents3 = this.getComponents(),\n        ClearIndicator = _this$getComponents3.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props10 = this.props,\n        isDisabled = _this$props10.isDisabled,\n        isLoading = _this$props10.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var _this$getComponents4 = this.getComponents(),\n        LoadingIndicator = _this$getComponents4.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props11 = this.props,\n        isDisabled = _this$props11.isDisabled,\n        isLoading = _this$props11.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$getComponents5 = this.getComponents(),\n        DropdownIndicator = _this$getComponents5.DropdownIndicator,\n        IndicatorSeparator = _this$getComponents5.IndicatorSeparator;\n\n      // separator doesn't make sense without the dropdown indicator\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var _this$getComponents6 = this.getComponents(),\n        DropdownIndicator = _this$getComponents6.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this4 = this;\n      var _this$getComponents7 = this.getComponents(),\n        Group = _this$getComponents7.Group,\n        GroupHeading = _this$getComponents7.GroupHeading,\n        Menu = _this$getComponents7.Menu,\n        MenuList = _this$getComponents7.MenuList,\n        MenuPortal = _this$getComponents7.MenuPortal,\n        LoadingMessage = _this$getComponents7.LoadingMessage,\n        NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n        Option = _this$getComponents7.Option;\n      var commonProps = this.commonProps;\n      var focusedOption = this.state.focusedOption;\n      var _this$props12 = this.props,\n        captureMenuScroll = _this$props12.captureMenuScroll,\n        inputValue = _this$props12.inputValue,\n        isLoading = _this$props12.isLoading,\n        loadingMessage = _this$props12.loadingMessage,\n        minMenuHeight = _this$props12.minMenuHeight,\n        maxMenuHeight = _this$props12.maxMenuHeight,\n        menuIsOpen = _this$props12.menuIsOpen,\n        menuPlacement = _this$props12.menuPlacement,\n        menuPosition = _this$props12.menuPosition,\n        menuPortalTarget = _this$props12.menuPortalTarget,\n        menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n        menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n        noOptionsMessage = _this$props12.noOptionsMessage,\n        onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n        onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n      if (!menuIsOpen) return null;\n\n      // TODO: Internal Option Type here\n      var render = function render(props, id) {\n        var type = props.type,\n          data = props.data,\n          isDisabled = props.isDisabled,\n          isSelected = props.isSelected,\n          label = props.label,\n          value = props.value;\n        var isFocused = focusedOption === data;\n        var onHover = isDisabled ? undefined : function () {\n          return _this4.onOptionHover(data);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this4.selectOption(data);\n        };\n        var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n        var innerProps = {\n          id: optionId,\n          onClick: onSelect,\n          onMouseMove: onHover,\n          onMouseOver: onHover,\n          tabIndex: -1,\n          role: 'option',\n          'aria-selected': _this4.state.isAppleDevice ? undefined : isSelected // is not supported on Apple devices\n        };\n\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n          innerProps: innerProps,\n          data: data,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: type,\n          value: value,\n          isFocused: isFocused,\n          innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n        }), _this4.formatOptionLabel(props.data, 'menu'));\n      };\n      var menuUI;\n      if (this.hasOptions()) {\n        menuUI = this.getCategorizedOptions().map(function (item) {\n          if (item.type === 'group') {\n            var _data = item.data,\n              options = item.options,\n              groupIndex = item.index;\n            var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n            var headingId = \"\".concat(groupId, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n              key: groupId,\n              data: _data,\n              options: options,\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this4.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n            }));\n          } else if (item.type === 'option') {\n            return render(item, \"\".concat(item.index));\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n        var ref = _ref4.ref,\n          _ref4$placerProps = _ref4.placerProps,\n          placement = _ref4$placerProps.placement,\n          maxHeight = _ref4$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this4.onMenuMouseDown,\n            onMouseMove: _this4.onMenuMouseMove\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollManager, {\n          captureEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom,\n          lockEnabled: menuShouldBlockScroll\n        }, function (scrollTargetRef) {\n          return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n            innerRef: function innerRef(instance) {\n              _this4.getMenuListRef(instance);\n              scrollTargetRef(instance);\n            },\n            innerProps: {\n              role: 'listbox',\n              'aria-multiselectable': commonProps.isMulti,\n              id: _this4.getElementId('listbox')\n            },\n            isLoading: isLoading,\n            maxHeight: maxHeight,\n            focusedOption: focusedOption\n          }), menuUI);\n        }));\n      });\n\n      // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this5 = this;\n      var _this$props13 = this.props,\n        delimiter = _this$props13.delimiter,\n        isDisabled = _this$props13.isDisabled,\n        isMulti = _this$props13.isMulti,\n        name = _this$props13.name,\n        required = _this$props13.required;\n      var selectValue = this.state.selectValue;\n      if (required && !this.hasValue() && !isDisabled) {\n        return /*#__PURE__*/React.createElement(RequiredInput$1, {\n          name: name,\n          onFocus: this.onValueInputFocus\n        });\n      }\n      if (!name || isDisabled) return;\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this5.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this5.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: \"\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      var commonProps = this.commonProps;\n      var _this$state6 = this.state,\n        ariaSelection = _this$state6.ariaSelection,\n        focusedOption = _this$state6.focusedOption,\n        focusedValue = _this$state6.focusedValue,\n        isFocused = _this$state6.isFocused,\n        selectValue = _this$state6.selectValue;\n      var focusableOptions = this.getFocusableOptions();\n      return /*#__PURE__*/React.createElement(LiveRegion$1, _extends({}, commonProps, {\n        id: this.getElementId('live-region'),\n        ariaSelection: ariaSelection,\n        focusedOption: focusedOption,\n        focusedValue: focusedValue,\n        isFocused: isFocused,\n        selectValue: selectValue,\n        focusableOptions: focusableOptions,\n        isAppleDevice: this.state.isAppleDevice\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$getComponents8 = this.getComponents(),\n        Control = _this$getComponents8.Control,\n        IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n        SelectContainer = _this$getComponents8.SelectContainer,\n        ValueContainer = _this$getComponents8.ValueContainer;\n      var _this$props14 = this.props,\n        className = _this$props14.className,\n        id = _this$props14.id,\n        isDisabled = _this$props14.isDisabled,\n        menuIsOpen = _this$props14.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, state) {\n      var prevProps = state.prevProps,\n        clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n        inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate,\n        ariaSelection = state.ariaSelection,\n        isFocused = state.isFocused,\n        prevWasFocused = state.prevWasFocused,\n        instancePrefix = state.instancePrefix;\n      var options = props.options,\n        value = props.value,\n        menuIsOpen = props.menuIsOpen,\n        inputValue = props.inputValue,\n        isMulti = props.isMulti;\n      var selectValue = cleanValue(value);\n      var newMenuOptionsState = {};\n      if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n        var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n        var focusableOptionsWithIds = menuIsOpen ? buildFocusableOptionsWithIds(buildCategorizedOptions(props, selectValue), \"\".concat(instancePrefix, \"-option\")) : [];\n        var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n        var focusedOption = getNextFocusedOption(state, focusableOptions);\n        var focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusedOption);\n        newMenuOptionsState = {\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedOptionId: focusedOptionId,\n          focusableOptionsWithIds: focusableOptionsWithIds,\n          focusedValue: focusedValue,\n          clearFocusValueOnUpdate: false\n        };\n      }\n      // some updates should toggle the state of the input visibility\n      var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n        inputIsHidden: inputIsHiddenAfterUpdate,\n        inputIsHiddenAfterUpdate: undefined\n      } : {};\n      var newAriaSelection = ariaSelection;\n      var hasKeptFocus = isFocused && prevWasFocused;\n      if (isFocused && !hasKeptFocus) {\n        // If `value` or `defaultValue` props are not empty then announce them\n        // when the Select is initially focused\n        newAriaSelection = {\n          value: valueTernary(isMulti, selectValue, selectValue[0] || null),\n          options: selectValue,\n          action: 'initial-input-focus'\n        };\n        hasKeptFocus = !prevWasFocused;\n      }\n\n      // If the 'initial-input-focus' action has been set already\n      // then reset the ariaSelection to null\n      if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') {\n        newAriaSelection = null;\n      }\n      return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n        prevProps: props,\n        ariaSelection: newAriaSelection,\n        prevWasFocused: hasKeptFocus\n      });\n    }\n  }]);\n  return Select;\n}(Component);\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultProps as a, getOptionLabel$1 as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m };\n","export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}","import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-ef7c0426.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-ef7c0426.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-641ee5b8.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n  var baseSelectProps = useStateManager(props);\n  return /*#__PURE__*/React.createElement(Select, _extends({\n    ref: ref\n  }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n  var nonce = _ref.nonce,\n    children = _ref.children,\n    cacheKey = _ref.cacheKey;\n  var emotionCache = useMemo(function () {\n    return createCache({\n      key: cacheKey,\n      nonce: nonce\n    });\n  }, [cacheKey, nonce]);\n  return /*#__PURE__*/React.createElement(CacheProvider, {\n    value: emotionCache\n  }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort:\n            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.inputResolutions = void 0;\nexports.inputResolutions = {\n    '640x360': [640, 360],\n    '256x256': [256, 256],\n    '256x144': [256, 144],\n    '160x96': [160, 96],\n};\n//# sourceMappingURL=segmentationHelper.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code> is calculated.\n */\nvar NetworkQualitySendStats = /** @class */ (function (_super) {\n    __extends(NetworkQualitySendStats, _super);\n    /**\n     * Construct a {@link NetworkQualitySendStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualitySendStats(sendOrRecvStats) {\n        return _super.call(this, sendOrRecvStats) || this;\n    }\n    return NetworkQualitySendStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualitySendStats;\n//# sourceMappingURL=networkqualitysendstats.js.map","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var baseRest = require('./_baseRest'),\n    eq = require('./eq'),\n    isIterateeCall = require('./_isIterateeCall'),\n    keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n  object = Object(object);\n\n  var index = -1;\n  var length = sources.length;\n  var guard = length > 2 ? sources[2] : undefined;\n\n  if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n    length = 1;\n  }\n\n  while (++index < length) {\n    var source = sources[index];\n    var props = keysIn(source);\n    var propsIndex = -1;\n    var propsLength = props.length;\n\n    while (++propsIndex < propsLength) {\n      var key = props[propsIndex];\n      var value = object[key];\n\n      if (value === undefined ||\n          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        object[key] = source[key];\n      }\n    }\n  }\n\n  return object;\n});\n\nmodule.exports = defaults;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = globalThis.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = globalThis.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    // eslint-disable-next-line sonarjs/inconsistent-function-call -- required for testing\n    return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = create(null);\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr += charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        result += chr;\n        // ignore non-capturing groups\n        if (stringSlice(string, index + 1, index + 3) === '?:') {\n          continue;\n        }\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module url\n */\n/** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar hof_1 = require(\"../common/hof\");\nvar predicates_1 = require(\"../common/predicates\");\nvar param_1 = require(\"../params/param\");\nvar strings_1 = require(\"../common/strings\");\n/** @hidden */\nfunction quoteRegExp(str, param) {\n    var surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n    if (!param)\n        return result;\n    switch (param.squash) {\n        case false:\n            surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')];\n            break;\n        case true:\n            result = result.replace(/\\/$/, '');\n            surroundPattern = ['(?:\\/(', ')|\\/)?'];\n            break;\n        default:\n            surroundPattern = [\"(\" + param.squash + \"|\", ')?'];\n            break;\n    }\n    return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n}\n/** @hidden */\nvar memoizeTo = function (obj, _prop, fn) {\n    return obj[_prop] = obj[_prop] || fn();\n};\n/** @hidden */\nvar splitOnSlash = strings_1.splitOnDelim('/');\n/**\n * Matches URLs against patterns.\n *\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL.\n *\n * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n * parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by [[UrlMatcher.exec]].\n *\n * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n * or colon placeholders (`/somePath/:param`).\n *\n * - *A parameter RegExp* may be defined for a param after a colon\n * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n * The regexp must match for the url to be matched.\n * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n *\n * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n *   See [[UrlMatcherFactory.type]] for more information.\n *\n * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n *   A catch-all * parameter value will contain the remainder of the URL.\n *\n * ---\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters).\n * A path parameter matches any number of characters other than '/'. For catch-all\n * placeholders the path parameter matches any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n *   trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n *   '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n *   parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n *   path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n *   in the built-in  `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n */\nvar UrlMatcher = /** @class */ (function () {\n    /**\n     * @param pattern The pattern to compile into a matcher.\n     * @param paramTypes The [[ParamTypes]] registry\n     * @param config  A configuration object\n     * - `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.\n     * - `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.\n     */\n    function UrlMatcher(pattern, paramTypes, paramFactory, config) {\n        var _this = this;\n        this.config = config;\n        /** @hidden */\n        this._cache = { path: [this] };\n        /** @hidden */\n        this._children = [];\n        /** @hidden */\n        this._params = [];\n        /** @hidden */\n        this._segments = [];\n        /** @hidden */\n        this._compiled = [];\n        this.pattern = pattern;\n        this.config = common_1.defaults(this.config, {\n            params: {},\n            strict: true,\n            caseInsensitive: false,\n            paramMap: common_1.identity,\n        });\n        // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n        //   '*' name\n        //   ':' name\n        //   '{' name '}'\n        //   '{' name ':' regexp '}'\n        // The regular expression is somewhat complicated due to the need to allow curly braces\n        // inside the regular expression. The placeholder regexp breaks down as follows:\n        //    ([:*])([\\w\\[\\]]+)              - classic placeholder ($1 / $2) (search version has - for snake-case)\n        //    \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\}  - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n        //    (?: ... | ... | ... )+         - the regexp consists of any number of atoms, an atom being either\n        //    [^{}\\\\]+                       - anything other than curly braces or backslash\n        //    \\\\.                            - a backslash escape\n        //    \\{(?:[^{}\\\\]+|\\\\.)*\\}          - a matched set of curly braces containing other atoms\n        var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n        var searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n        var patterns = [];\n        var last = 0, matchArray;\n        var checkParamErrors = function (id) {\n            if (!UrlMatcher.nameValidator.test(id))\n                throw new Error(\"Invalid parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n            if (common_1.find(_this._params, hof_1.propEq('id', id)))\n                throw new Error(\"Duplicate parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n        };\n        // Split into static segments separated by path parameter placeholders.\n        // The number of segments is always 1 more than the number of parameters.\n        var matchDetails = function (m, isSearch) {\n            // IE[78] returns '' for unmatched groups instead of null\n            var id = m[2] || m[3];\n            var regexp = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n            var makeRegexpType = function (str) { return common_1.inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n                pattern: new RegExp(str, _this.config.caseInsensitive ? 'i' : undefined),\n            }); };\n            return {\n                id: id,\n                regexp: regexp,\n                cfg: _this.config.params[id],\n                segment: pattern.substring(last, m.index),\n                type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n            };\n        };\n        var p, segment;\n        // tslint:disable-next-line:no-conditional-assignment\n        while ((matchArray = placeholder.exec(pattern))) {\n            p = matchDetails(matchArray, false);\n            if (p.segment.indexOf('?') >= 0)\n                break; // we're into the search part\n            checkParamErrors(p.id);\n            this._params.push(paramFactory.fromPath(p.id, p.type, this.config.paramMap(p.cfg, false)));\n            this._segments.push(p.segment);\n            patterns.push([p.segment, common_1.tail(this._params)]);\n            last = placeholder.lastIndex;\n        }\n        segment = pattern.substring(last);\n        // Find any search parameter names and remove them from the last segment\n        var i = segment.indexOf('?');\n        if (i >= 0) {\n            var search = segment.substring(i);\n            segment = segment.substring(0, i);\n            if (search.length > 0) {\n                last = 0;\n                // tslint:disable-next-line:no-conditional-assignment\n                while ((matchArray = searchPlaceholder.exec(search))) {\n                    p = matchDetails(matchArray, true);\n                    checkParamErrors(p.id);\n                    this._params.push(paramFactory.fromSearch(p.id, p.type, this.config.paramMap(p.cfg, true)));\n                    last = placeholder.lastIndex;\n                    // check if ?&\n                }\n            }\n        }\n        this._segments.push(segment);\n        this._compiled = patterns.map(function (_pattern) { return quoteRegExp.apply(null, _pattern); }).concat(quoteRegExp(segment));\n    }\n    /** @hidden */\n    UrlMatcher.encodeDashes = function (str) {\n        return encodeURIComponent(str).replace(/-/g, function (c) { return \"%5C%\" + c.charCodeAt(0).toString(16).toUpperCase(); });\n    };\n    /** @hidden Given a matcher, return an array with the matcher's path segments and path params, in order */\n    UrlMatcher.pathSegmentsAndParams = function (matcher) {\n        var staticSegments = matcher._segments;\n        var pathParams = matcher._params.filter(function (p) { return p.location === param_1.DefType.PATH; });\n        return common_1.arrayTuples(staticSegments, pathParams.concat(undefined))\n            .reduce(common_1.unnestR, [])\n            .filter(function (x) { return x !== '' && predicates_1.isDefined(x); });\n    };\n    /** @hidden Given a matcher, return an array with the matcher's query params */\n    UrlMatcher.queryParams = function (matcher) {\n        return matcher._params.filter(function (p) { return p.location === param_1.DefType.SEARCH; });\n    };\n    /**\n     * Compare two UrlMatchers\n     *\n     * This comparison function converts a UrlMatcher into static and dynamic path segments.\n     * Each static path segment is a static string between a path separator (slash character).\n     * Each dynamic segment is a path parameter.\n     *\n     * The comparison function sorts static segments before dynamic ones.\n     */\n    UrlMatcher.compare = function (a, b) {\n        /**\n         * Turn a UrlMatcher and all its parent matchers into an array\n         * of slash literals '/', string literals, and Param objects\n         *\n         * This example matcher matches strings like \"/foo/:param/tail\":\n         * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n         * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n         *\n         * Caches the result as `matcher._cache.segments`\n         */\n        var segments = function (matcher) {\n            return matcher._cache.segments = matcher._cache.segments ||\n                matcher._cache.path.map(UrlMatcher.pathSegmentsAndParams)\n                    .reduce(common_1.unnestR, [])\n                    .reduce(strings_1.joinNeighborsR, [])\n                    .map(function (x) { return predicates_1.isString(x) ? splitOnSlash(x) : x; })\n                    .reduce(common_1.unnestR, []);\n        };\n        /**\n         * Gets the sort weight for each segment of a UrlMatcher\n         *\n         * Caches the result as `matcher._cache.weights`\n         */\n        var weights = function (matcher) {\n            return matcher._cache.weights = matcher._cache.weights ||\n                segments(matcher).map(function (segment) {\n                    // Sort slashes first, then static strings, the Params\n                    if (segment === '/')\n                        return 1;\n                    if (predicates_1.isString(segment))\n                        return 2;\n                    if (segment instanceof param_1.Param)\n                        return 3;\n                });\n        };\n        /**\n         * Pads shorter array in-place (mutates)\n         */\n        var padArrays = function (l, r, padVal) {\n            var len = Math.max(l.length, r.length);\n            while (l.length < len)\n                l.push(padVal);\n            while (r.length < len)\n                r.push(padVal);\n        };\n        var weightsA = weights(a), weightsB = weights(b);\n        padArrays(weightsA, weightsB, 0);\n        var _pairs = common_1.arrayTuples(weightsA, weightsB);\n        var cmp, i;\n        for (i = 0; i < _pairs.length; i++) {\n            cmp = _pairs[i][0] - _pairs[i][1];\n            if (cmp !== 0)\n                return cmp;\n        }\n        return 0;\n    };\n    /**\n     * Creates a new concatenated UrlMatcher\n     *\n     * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n     *\n     * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n     */\n    UrlMatcher.prototype.append = function (url) {\n        this._children.push(url);\n        url._cache = {\n            path: this._cache.path.concat(url),\n            parent: this,\n            pattern: null,\n        };\n        return url;\n    };\n    /** @hidden */\n    UrlMatcher.prototype.isRoot = function () {\n        return this._cache.path[0] === this;\n    };\n    /** Returns the input pattern string */\n    UrlMatcher.prototype.toString = function () {\n        return this.pattern;\n    };\n    /**\n     * Tests the specified url/path against this matcher.\n     *\n     * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n     * parameter values.  Returns null if the path does not match.\n     *\n     * The returned object contains the values\n     * of any search parameters that are mentioned in the pattern, but their value may be null if\n     * they are not present in `search`. This means that search parameters are always treated\n     * as optional.\n     *\n     * #### Example:\n     * ```js\n     * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n     *   x: '1', q: 'hello'\n     * });\n     * // returns { id: 'bob', q: 'hello', r: null }\n     * ```\n     *\n     * @param path    The URL path to match, e.g. `$location.path()`.\n     * @param search  URL search parameters, e.g. `$location.search()`.\n     * @param hash    URL hash e.g. `$location.hash()`.\n     * @param options\n     *\n     * @returns The captured parameter values.\n     */\n    UrlMatcher.prototype.exec = function (path, search, hash, options) {\n        var _this = this;\n        if (search === void 0) { search = {}; }\n        if (options === void 0) { options = {}; }\n        var match = memoizeTo(this._cache, 'pattern', function () {\n            return new RegExp([\n                '^',\n                common_1.unnest(_this._cache.path.map(hof_1.prop('_compiled'))).join(''),\n                _this.config.strict === false ? '\\/?' : '',\n                '$',\n            ].join(''), _this.config.caseInsensitive ? 'i' : undefined);\n        }).exec(path);\n        if (!match)\n            return null;\n        // options = defaults(options, { isolate: false });\n        var allParams = this.parameters(), pathParams = allParams.filter(function (param) { return !param.isSearch(); }), searchParams = allParams.filter(function (param) { return param.isSearch(); }), nPathSegments = this._cache.path.map(function (urlm) { return urlm._segments.length - 1; }).reduce(function (a, x) { return a + x; }), values = {};\n        if (nPathSegments !== match.length - 1)\n            throw new Error(\"Unbalanced capture group in route '\" + this.pattern + \"'\");\n        function decodePathArray(paramVal) {\n            var reverseString = function (str) { return str.split('').reverse().join(''); };\n            var unquoteDashes = function (str) { return str.replace(/\\\\-/g, '-'); };\n            var split = reverseString(paramVal).split(/-(?!\\\\)/);\n            var allReversed = common_1.map(split, reverseString);\n            return common_1.map(allReversed, unquoteDashes).reverse();\n        }\n        for (var i = 0; i < nPathSegments; i++) {\n            var param = pathParams[i];\n            var value = match[i + 1];\n            // if the param value matches a pre-replace pair, replace the value before decoding.\n            for (var j = 0; j < param.replace.length; j++) {\n                if (param.replace[j].from === value)\n                    value = param.replace[j].to;\n            }\n            if (value && param.array === true)\n                value = decodePathArray(value);\n            if (predicates_1.isDefined(value))\n                value = param.type.decode(value);\n            values[param.id] = param.value(value);\n        }\n        searchParams.forEach(function (param) {\n            var value = search[param.id];\n            for (var j = 0; j < param.replace.length; j++) {\n                if (param.replace[j].from === value)\n                    value = param.replace[j].to;\n            }\n            if (predicates_1.isDefined(value))\n                value = param.type.decode(value);\n            values[param.id] = param.value(value);\n        });\n        if (hash)\n            values['#'] = hash;\n        return values;\n    };\n    /**\n     * @hidden\n     * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n     *\n     * @returns {Array.<Param>}  An array of [[Param]] objects. Must be treated as read-only. If the\n     *    pattern has no parameters, an empty array is returned.\n     */\n    UrlMatcher.prototype.parameters = function (opts) {\n        if (opts === void 0) { opts = {}; }\n        if (opts.inherit === false)\n            return this._params;\n        return common_1.unnest(this._cache.path.map(function (matcher) { return matcher._params; }));\n    };\n    /**\n     * @hidden\n     * Returns a single parameter from this UrlMatcher by id\n     *\n     * @param id\n     * @param opts\n     * @returns {T|Param|any|boolean|UrlMatcher|null}\n     */\n    UrlMatcher.prototype.parameter = function (id, opts) {\n        var _this = this;\n        if (opts === void 0) { opts = {}; }\n        var findParam = function () {\n            for (var _i = 0, _a = _this._params; _i < _a.length; _i++) {\n                var param = _a[_i];\n                if (param.id === id)\n                    return param;\n            }\n        };\n        var parent = this._cache.parent;\n        return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n    };\n    /**\n     * Validates the input parameter values against this UrlMatcher\n     *\n     * Checks an object hash of parameters to validate their correctness according to the parameter\n     * types of this `UrlMatcher`.\n     *\n     * @param params The object hash of parameters to validate.\n     * @returns Returns `true` if `params` validates, otherwise `false`.\n     */\n    UrlMatcher.prototype.validates = function (params) {\n        var validParamVal = function (param, val) {\n            return !param || param.validates(val);\n        };\n        params = params || {};\n        // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n        var paramSchema = this.parameters().filter(function (paramDef) { return params.hasOwnProperty(paramDef.id); });\n        return paramSchema.map(function (paramDef) { return validParamVal(paramDef, params[paramDef.id]); }).reduce(common_1.allTrueR, true);\n    };\n    /**\n     * Given a set of parameter values, creates a URL from this UrlMatcher.\n     *\n     * Creates a URL that matches this pattern by substituting the specified values\n     * for the path and search parameters.\n     *\n     * #### Example:\n     * ```js\n     * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n     * // returns '/user/bob?q=yes'\n     * ```\n     *\n     * @param values  the values to substitute for the parameters in this pattern.\n     * @returns the formatted URL (path and optionally search part).\n     */\n    UrlMatcher.prototype.format = function (values) {\n        if (values === void 0) { values = {}; }\n        // Build the full path of UrlMatchers (including all parent UrlMatchers)\n        var urlMatchers = this._cache.path;\n        // Extract all the static segments and Params (processed as ParamDetails)\n        // into an ordered array\n        var pathSegmentsAndParams = urlMatchers.map(UrlMatcher.pathSegmentsAndParams)\n            .reduce(common_1.unnestR, [])\n            .map(function (x) { return predicates_1.isString(x) ? x : getDetails(x); });\n        // Extract the query params into a separate array\n        var queryParams = urlMatchers.map(UrlMatcher.queryParams)\n            .reduce(common_1.unnestR, [])\n            .map(getDetails);\n        var isInvalid = function (param) { return param.isValid === false; };\n        if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n            return null;\n        }\n        /**\n         * Given a Param, applies the parameter value, then returns detailed information about it\n         */\n        function getDetails(param) {\n            // Normalize to typed value\n            var value = param.value(values[param.id]);\n            var isValid = param.validates(value);\n            var isDefaultValue = param.isDefaultValue(value);\n            // Check if we're in squash mode for the parameter\n            var squash = isDefaultValue ? param.squash : false;\n            // Allow the Parameter's Type to encode the value\n            var encoded = param.type.encode(value);\n            return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };\n        }\n        // Build up the path-portion from the list of static segments and parameters\n        var pathString = pathSegmentsAndParams.reduce(function (acc, x) {\n            // The element is a static segment (a raw string); just append it\n            if (predicates_1.isString(x))\n                return acc + x;\n            // Otherwise, it's a ParamDetails.\n            var squash = x.squash, encoded = x.encoded, param = x.param;\n            // If squash is === true, try to remove a slash from the path\n            if (squash === true)\n                return (acc.match(/\\/$/)) ? acc.slice(0, -1) : acc;\n            // If squash is a string, use the string for the param value\n            if (predicates_1.isString(squash))\n                return acc + squash;\n            if (squash !== false)\n                return acc; // ?\n            if (encoded == null)\n                return acc;\n            // If this parameter value is an array, encode the value using encodeDashes\n            if (predicates_1.isArray(encoded))\n                return acc + common_1.map(encoded, UrlMatcher.encodeDashes).join('-');\n            // If the parameter type is \"raw\", then do not encodeURIComponent\n            if (param.raw)\n                return acc + encoded;\n            // Encode the value\n            return acc + encodeURIComponent(encoded);\n        }, '');\n        // Build the query string by applying parameter values (array or regular)\n        // then mapping to key=value, then flattening and joining using \"&\"\n        var queryString = queryParams.map(function (paramDetails) {\n            var param = paramDetails.param, squash = paramDetails.squash, encoded = paramDetails.encoded, isDefaultValue = paramDetails.isDefaultValue;\n            if (encoded == null || (isDefaultValue && squash !== false))\n                return;\n            if (!predicates_1.isArray(encoded))\n                encoded = [encoded];\n            if (encoded.length === 0)\n                return;\n            if (!param.raw)\n                encoded = common_1.map(encoded, encodeURIComponent);\n            return encoded.map(function (val) { return param.id + \"=\" + val; });\n        }).filter(common_1.identity).reduce(common_1.unnestR, []).join('&');\n        // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n        return pathString + (queryString ? \"?\" + queryString : '') + (values['#'] ? '#' + values['#'] : '');\n    };\n    /** @hidden */\n    UrlMatcher.nameValidator = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n    return UrlMatcher;\n}());\nexports.UrlMatcher = UrlMatcher;\n//# sourceMappingURL=urlMatcher.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = require('immutable');\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _utilities = require('./utilities');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (reducers) {\n  var getDefaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _immutable2.default.Map;\n\n  var reducerKeys = Object.keys(reducers);\n\n  // eslint-disable-next-line space-infix-ops\n  return function () {\n    var inputState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getDefaultState();\n    var action = arguments[1];\n\n    // eslint-disable-next-line no-process-env\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = (0, _utilities.getUnexpectedInvocationParameterMessage)(inputState, reducers, action);\n\n      if (warningMessage) {\n        // eslint-disable-next-line no-console\n        console.error(warningMessage);\n      }\n    }\n\n    return inputState.withMutations(function (temporaryState) {\n      reducerKeys.forEach(function (reducerName) {\n        var reducer = reducers[reducerName];\n        var currentDomainState = temporaryState.get(reducerName);\n        var nextDomainState = reducer(currentDomainState, action);\n\n        (0, _utilities.validateNextState)(nextDomainState, reducerName, action);\n\n        temporaryState.set(reducerName, nextDomainState);\n      });\n    });\n  };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=combineReducers.js.map","/* humanize.js - v1.8.2 */\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n/**\n * Copyright 2013-2016 HubSpotDev\n * MIT Licensed\n *\n * @module humanize.js\n */\n\n(function (root, factory) {\n  if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    define([], function () {\n      return root.Humanize = factory();\n    });\n  } else {\n    root.Humanize = factory();\n  }\n})(this, function () {\n  //------------------------------------------------------------------------------\n  // Constants\n  //------------------------------------------------------------------------------\n\n  var TIME_FORMATS = [{\n    name: 'second',\n    value: 1e3\n  }, {\n    name: 'minute',\n    value: 6e4\n  }, {\n    name: 'hour',\n    value: 36e5\n  }, {\n    name: 'day',\n    value: 864e5\n  }, {\n    name: 'week',\n    value: 6048e5\n  }];\n\n  var LABELS_FOR_POWERS_OF_KILO = {\n    P: Math.pow(2, 50),\n    T: Math.pow(2, 40),\n    G: Math.pow(2, 30),\n    M: Math.pow(2, 20)\n  };\n\n  //------------------------------------------------------------------------------\n  // Helpers\n  //------------------------------------------------------------------------------\n\n  var exists = function exists(maybe) {\n    return typeof maybe !== 'undefined' && maybe !== null;\n  };\n\n  var isNaN = function isNaN(value) {\n    return value !== value;\n  }; // eslint-disable-line\n\n  var isFiniteNumber = function isFiniteNumber(value) {\n    return isFinite(value) && !isNaN(parseFloat(value));\n  };\n\n  var isArray = function isArray(value) {\n    var type = Object.prototype.toString.call(value);\n    return type === '[object Array]';\n  };\n\n  //------------------------------------------------------------------------------\n  // Humanize\n  //------------------------------------------------------------------------------\n\n  var Humanize = {\n\n    // Converts a large integer to a friendly text representation.\n\n    intword: function intword(number, charWidth) {\n      var decimals = arguments.length <= 2 || arguments[2] === undefined ? 2 : arguments[2];\n\n      /*\n      * This method is deprecated. Please use compactInteger instead.\n      * intword will be going away in the next major version.\n      */\n      return Humanize.compactInteger(number, decimals);\n    },\n\n\n    // Converts an integer into its most compact representation\n    compactInteger: function compactInteger(input) {\n      var decimals = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n\n      decimals = Math.max(decimals, 0);\n      var number = parseInt(input, 10);\n      var signString = number < 0 ? '-' : '';\n      var unsignedNumber = Math.abs(number);\n      var unsignedNumberString = String(unsignedNumber);\n      var numberLength = unsignedNumberString.length;\n      var numberLengths = [13, 10, 7, 4];\n      var bigNumPrefixes = ['T', 'B', 'M', 'k'];\n\n      // small numbers\n      if (unsignedNumber < 1000) {\n        return '' + signString + unsignedNumberString;\n      }\n\n      // really big numbers\n      if (numberLength > numberLengths[0] + 3) {\n        return number.toExponential(decimals).replace('e+', 'x10^');\n      }\n\n      // 999 < unsignedNumber < 999,999,999,999,999\n      var length = void 0;\n      for (var i = 0; i < numberLengths.length; i++) {\n        var _length = numberLengths[i];\n        if (numberLength >= _length) {\n          length = _length;\n          break;\n        }\n      }\n\n      var decimalIndex = numberLength - length + 1;\n      var unsignedNumberCharacterArray = unsignedNumberString.split('');\n\n      var wholePartArray = unsignedNumberCharacterArray.slice(0, decimalIndex);\n      var decimalPartArray = unsignedNumberCharacterArray.slice(decimalIndex, decimalIndex + decimals + 1);\n\n      var wholePart = wholePartArray.join('');\n\n      // pad decimalPart if necessary\n      var decimalPart = decimalPartArray.join('');\n      if (decimalPart.length < decimals) {\n        decimalPart += '' + Array(decimals - decimalPart.length + 1).join('0');\n      }\n\n      var output = void 0;\n      if (decimals === 0) {\n        output = '' + signString + wholePart + bigNumPrefixes[numberLengths.indexOf(length)];\n      } else {\n        var outputNumber = Number(wholePart + '.' + decimalPart).toFixed(decimals);\n        output = '' + signString + outputNumber + bigNumPrefixes[numberLengths.indexOf(length)];\n      }\n\n      return output;\n    },\n\n\n    // Converts an integer to a string containing commas every three digits.\n    intComma: function intComma(number) {\n      var decimals = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n\n      return Humanize.formatNumber(number, decimals);\n    },\n    intcomma: function intcomma() {\n      return Humanize.intComma.apply(Humanize, arguments);\n    },\n\n\n    // Formats the value like a 'human-readable' file size (i.e. '13 KB', '4.1 MB', '102 bytes', etc).\n    fileSize: function fileSize(filesize) {\n      var precision = arguments.length <= 1 || arguments[1] === undefined ? 2 : arguments[1];\n\n      for (var label in LABELS_FOR_POWERS_OF_KILO) {\n        if (LABELS_FOR_POWERS_OF_KILO.hasOwnProperty(label)) {\n          var minnum = LABELS_FOR_POWERS_OF_KILO[label];\n          if (filesize >= minnum) {\n            return Humanize.formatNumber(filesize / minnum, precision, '') + ' ' + label + 'B';\n          }\n        }\n      }\n      if (filesize >= 1024) {\n        return Humanize.formatNumber(filesize / 1024, 0) + ' KB';\n      }\n\n      return Humanize.formatNumber(filesize, 0) + Humanize.pluralize(filesize, ' byte');\n    },\n    filesize: function filesize() {\n      return Humanize.fileSize.apply(Humanize, arguments);\n    },\n\n\n    // Formats a number to a human-readable string.\n    // Localize by overriding the precision, thousand and decimal arguments.\n    formatNumber: function formatNumber(number) {\n      var precision = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n      var thousand = arguments.length <= 2 || arguments[2] === undefined ? ',' : arguments[2];\n      var decimal = arguments.length <= 3 || arguments[3] === undefined ? '.' : arguments[3];\n\n      // Create some private utility functions to make the computational\n      // code that follows much easier to read.\n      var firstComma = function firstComma(_number, _thousand, _position) {\n        return _position ? _number.substr(0, _position) + _thousand : '';\n      };\n\n      var commas = function commas(_number, _thousand, _position) {\n        return _number.substr(_position).replace(/(\\d{3})(?=\\d)/g, '$1' + _thousand);\n      };\n\n      var decimals = function decimals(_number, _decimal, usePrecision) {\n        return usePrecision ? _decimal + Humanize.toFixed(Math.abs(_number), usePrecision).split('.')[1] : '';\n      };\n\n      var usePrecision = Humanize.normalizePrecision(precision);\n\n      // Do some calc\n      var negative = number < 0 && '-' || '';\n      var base = String(parseInt(Humanize.toFixed(Math.abs(number || 0), usePrecision), 10));\n      var mod = base.length > 3 ? base.length % 3 : 0;\n\n      // Format the number\n      return negative + firstComma(base, thousand, mod) + commas(base, thousand, mod) + decimals(number, decimal, usePrecision);\n    },\n\n\n    // Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61')\n    toFixed: function toFixed(value, precision) {\n      precision = exists(precision) ? precision : Humanize.normalizePrecision(precision, 0);\n      var power = Math.pow(10, precision);\n\n      // Multiply up by precision, round accurately, then divide and use native toFixed()\n      return (Math.round(value * power) / power).toFixed(precision);\n    },\n\n\n    // Ensures precision value is a positive integer\n    normalizePrecision: function normalizePrecision(value, base) {\n      value = Math.round(Math.abs(value));\n      return isNaN(value) ? base : value;\n    },\n\n\n    // Converts an integer to its ordinal as a string.\n    ordinal: function ordinal(value) {\n      var number = parseInt(value, 10);\n\n      if (number === 0) {\n        return value;\n      }\n\n      var specialCase = number % 100;\n      if ([11, 12, 13].indexOf(specialCase) >= 0) {\n        return number + 'th';\n      }\n\n      var leastSignificant = number % 10;\n\n      var end = void 0;\n      switch (leastSignificant) {\n        case 1:\n          end = 'st';\n          break;\n        case 2:\n          end = 'nd';\n          break;\n        case 3:\n          end = 'rd';\n          break;\n        default:\n          end = 'th';\n      }\n\n      return '' + number + end;\n    },\n\n\n    // Interprets numbers as occurences. Also accepts an optional array/map of overrides.\n    times: function times(value) {\n      var overrides = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n      if (isFiniteNumber(value) && value >= 0) {\n        var number = parseFloat(value);\n        var smallTimes = ['never', 'once', 'twice'];\n        if (exists(overrides[number])) {\n          return String(overrides[number]);\n        }\n\n        var numberString = exists(smallTimes[number]) && smallTimes[number].toString();\n        return numberString || number.toString() + ' times';\n      }\n      return null;\n    },\n\n\n    // Returns the plural version of a given word if the value is not 1. The default suffix is 's'.\n    pluralize: function pluralize(number, singular, plural) {\n      if (!(exists(number) && exists(singular))) {\n        return null;\n      }\n\n      plural = exists(plural) ? plural : singular + 's';\n\n      return parseInt(number, 10) === 1 ? singular : plural;\n    },\n\n\n    // Truncates a string if it is longer than the specified number of characters (inclusive).\n    // Truncated strings will end with a translatable ellipsis sequence (\"…\").\n    truncate: function truncate(str) {\n      var length = arguments.length <= 1 || arguments[1] === undefined ? 100 : arguments[1];\n      var ending = arguments.length <= 2 || arguments[2] === undefined ? '...' : arguments[2];\n\n      if (str.length > length) {\n        return str.substring(0, length - ending.length) + ending;\n      }\n      return str;\n    },\n\n\n    // Truncates a string after a certain number of words.\n    truncateWords: function truncateWords(string, length) {\n      var array = string.split(' ');\n      var result = '';\n      var i = 0;\n\n      while (i < length) {\n        if (exists(array[i])) {\n          result += array[i] + ' ';\n        }\n        i++;\n      }\n\n      if (array.length > length) {\n        return result + '...';\n      }\n\n      return null;\n    },\n    truncatewords: function truncatewords() {\n      return Humanize.truncateWords.apply(Humanize, arguments);\n    },\n\n\n    // Truncates a number to an upper bound.\n    boundedNumber: function boundedNumber(num) {\n      var bound = arguments.length <= 1 || arguments[1] === undefined ? 100 : arguments[1];\n      var ending = arguments.length <= 2 || arguments[2] === undefined ? '+' : arguments[2];\n\n      var result = void 0;\n\n      if (isFiniteNumber(num) && isFiniteNumber(bound)) {\n        if (num > bound) {\n          result = bound + ending;\n        }\n      }\n\n      return (result || num).toString();\n    },\n    truncatenumber: function truncatenumber() {\n      return Humanize.boundedNumber.apply(Humanize, arguments);\n    },\n\n\n    // Converts a list of items to a human readable string with an optional limit.\n    oxford: function oxford(items, limit, limitStr) {\n      var numItems = items.length;\n\n      var limitIndex = void 0;\n      if (numItems < 2) {\n        return String(items);\n      } else if (numItems === 2) {\n        return items.join(' and ');\n      } else if (exists(limit) && numItems > limit) {\n        var extra = numItems - limit;\n        limitIndex = limit;\n        limitStr = exists(limitStr) ? limitStr : ', and ' + extra + ' ' + Humanize.pluralize(extra, 'other');\n      } else {\n        limitIndex = -1;\n        limitStr = ', and ' + items[numItems - 1];\n      }\n\n      return items.slice(0, limitIndex).join(', ') + limitStr;\n    },\n\n\n    // Converts an object to a definition-like string\n    dictionary: function dictionary(object) {\n      var joiner = arguments.length <= 1 || arguments[1] === undefined ? ' is ' : arguments[1];\n      var separator = arguments.length <= 2 || arguments[2] === undefined ? ', ' : arguments[2];\n\n      var result = '';\n\n      if (exists(object) && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && !isArray(object)) {\n        var defs = [];\n        for (var key in object) {\n          if (object.hasOwnProperty(key)) {\n            var val = object[key];\n            defs.push('' + key + joiner + val);\n          }\n        }\n\n        return defs.join(separator);\n      }\n\n      return result;\n    },\n\n\n    // Describes how many times an item appears in a list\n    frequency: function frequency(list, verb) {\n      if (!isArray(list)) {\n        return null;\n      }\n\n      var len = list.length;\n      var times = Humanize.times(len);\n\n      if (len === 0) {\n        return times + ' ' + verb;\n      }\n\n      return verb + ' ' + times;\n    },\n    pace: function pace(value, intervalMs) {\n      var unit = arguments.length <= 2 || arguments[2] === undefined ? 'time' : arguments[2];\n\n      if (value === 0 || intervalMs === 0) {\n        // Needs a better string than this...\n        return 'No ' + Humanize.pluralize(0, unit);\n      }\n\n      // Expose these as overridables?\n      var prefix = 'Approximately';\n      var timeUnit = void 0;\n      var relativePace = void 0;\n\n      var rate = value / intervalMs;\n      for (var i = 0; i < TIME_FORMATS.length; ++i) {\n        // assumes sorted list\n        var f = TIME_FORMATS[i];\n        relativePace = rate * f.value;\n        if (relativePace > 1) {\n          timeUnit = f.name;\n          break;\n        }\n      }\n\n      // Use the last time unit if there is nothing smaller\n      if (!timeUnit) {\n        prefix = 'Less than';\n        relativePace = 1;\n        timeUnit = TIME_FORMATS[TIME_FORMATS.length - 1].name;\n      }\n\n      var roundedPace = Math.round(relativePace);\n      unit = Humanize.pluralize(roundedPace, unit);\n\n      return prefix + ' ' + roundedPace + ' ' + unit + ' per ' + timeUnit;\n    },\n\n\n    // Converts newlines to <br/> tags\n    nl2br: function nl2br(string) {\n      var replacement = arguments.length <= 1 || arguments[1] === undefined ? '<br/>' : arguments[1];\n\n      return string.replace(/\\n/g, replacement);\n    },\n\n\n    // Converts <br/> tags to newlines\n    br2nl: function br2nl(string) {\n      var replacement = arguments.length <= 1 || arguments[1] === undefined ? '\\r\\n' : arguments[1];\n\n      return string.replace(/\\<br\\s*\\/?\\>/g, replacement);\n    },\n\n\n    // Capitalizes first letter in a string\n    capitalize: function capitalize(string) {\n      var downCaseTail = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n      return '' + string.charAt(0).toUpperCase() + (downCaseTail ? string.slice(1).toLowerCase() : string.slice(1));\n    },\n\n\n    // Capitalizes the first letter of each word in a string\n    capitalizeAll: function capitalizeAll(string) {\n      return string.replace(/(?:^|\\s)\\S/g, function (a) {\n        return a.toUpperCase();\n      });\n    },\n\n\n    // Titlecase words in a string.\n    titleCase: function titleCase(string) {\n      var smallWords = /\\b(a|an|and|at|but|by|de|en|for|if|in|of|on|or|the|to|via|vs?\\.?)\\b/i;\n      var internalCaps = /\\S+[A-Z]+\\S*/;\n      var splitOnWhiteSpaceRegex = /\\s+/;\n      var splitOnHyphensRegex = /-/;\n\n      var _doTitleCase = void 0;\n      _doTitleCase = function doTitleCase(_string) {\n        var hyphenated = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n        var firstOrLast = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];\n\n        var titleCasedArray = [];\n        var stringArray = _string.split(hyphenated ? splitOnHyphensRegex : splitOnWhiteSpaceRegex);\n\n        for (var index = 0; index < stringArray.length; ++index) {\n          var word = stringArray[index];\n          if (word.indexOf('-') !== -1) {\n            titleCasedArray.push(_doTitleCase(word, true, index === 0 || index === stringArray.length - 1));\n            continue;\n          }\n\n          if (firstOrLast && (index === 0 || index === stringArray.length - 1)) {\n            titleCasedArray.push(internalCaps.test(word) ? word : Humanize.capitalize(word));\n            continue;\n          }\n\n          if (internalCaps.test(word)) {\n            titleCasedArray.push(word);\n          } else if (smallWords.test(word)) {\n            titleCasedArray.push(word.toLowerCase());\n          } else {\n            titleCasedArray.push(Humanize.capitalize(word));\n          }\n        }\n\n        return titleCasedArray.join(hyphenated ? '-' : ' ');\n      };\n\n      return _doTitleCase(string);\n    },\n    titlecase: function titlecase() {\n      return Humanize.titleCase.apply(Humanize, arguments);\n    }\n  };\n\n  return Humanize;\n});","var _errors;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var ERROR = 'ERROR';\nexport var ERROR_DIV_ZERO = 'DIV/0';\nexport var ERROR_NAME = 'NAME';\nexport var ERROR_NOT_AVAILABLE = 'N/A';\nexport var ERROR_NULL = 'NULL';\nexport var ERROR_NUM = 'NUM';\nexport var ERROR_REF = 'REF';\nexport var ERROR_VALUE = 'VALUE';\nvar errors = (_errors = {}, _defineProperty(_errors, ERROR, '#ERROR!'), _defineProperty(_errors, ERROR_DIV_ZERO, '#DIV/0!'), _defineProperty(_errors, ERROR_NAME, '#NAME?'), _defineProperty(_errors, ERROR_NOT_AVAILABLE, '#N/A'), _defineProperty(_errors, ERROR_NULL, '#NULL!'), _defineProperty(_errors, ERROR_NUM, '#NUM!'), _defineProperty(_errors, ERROR_REF, '#REF!'), _defineProperty(_errors, ERROR_VALUE, '#VALUE!'), _errors);\n/**\n * Return error type based on provided error id.\n *\n * @param {String} type Error type.\n * @returns {String|null} Returns error id.\n */\n\nexport default function error(type) {\n  var result;\n  type = (type + '').replace(/#|!|\\?/g, '');\n\n  if (errors[type]) {\n    result = errors[type];\n  }\n\n  return result ? result : null;\n}\n/**\n * Check if error type is strict valid with knows errors.\n *\n * @param {String} Error type.\n * @return {Boolean}\n */\n\nexport function isValidStrict(type) {\n  var valid = false;\n\n  for (var i in errors) {\n    if (Object.prototype.hasOwnProperty.call(errors, i) && errors[i] === type) {\n      valid = true;\n      break;\n    }\n  }\n\n  return valid;\n}","/**\n * Convert value into number.\n *\n * @param {String|Number} number\n * @returns {*}\n */\nexport function toNumber(number) {\n  var result;\n\n  if (typeof number === 'number') {\n    result = number;\n  } else if (typeof number === 'string') {\n    result = number.indexOf('.') > -1 ? parseFloat(number) : parseInt(number, 10);\n  }\n\n  return result;\n}\n/**\n * Invert provided number.\n *\n * @param {Number} number\n * @returns {Number} Returns inverted number.\n */\n\nexport function invertNumber(number) {\n  return -1 * toNumber(number);\n}","import { toNumber } from \"./../../helper/number.mjs\";\nimport { ERROR_VALUE } from \"./../../error.mjs\";\nexport var SYMBOL = '+';\nexport default function func(first) {\n  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  var result = rest.reduce(function (acc, value) {\n    return acc + toNumber(value);\n  }, toNumber(first));\n\n  if (isNaN(result)) {\n    throw Error(ERROR_VALUE);\n  }\n\n  return result;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '&';\nexport default function func() {\n  for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n    params[_key] = arguments[_key];\n  }\n\n  return params.reduce(function (acc, value) {\n    return acc + value.toString();\n  }, '');\n}\nfunc.SYMBOL = SYMBOL;","import { toNumber } from \"./../../helper/number.mjs\";\nimport { ERROR_DIV_ZERO, ERROR_VALUE } from \"./../../error.mjs\";\nexport var SYMBOL = '/';\nexport default function func(first) {\n  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  var result = rest.reduce(function (acc, value) {\n    return acc / toNumber(value);\n  }, toNumber(first));\n\n  if (result === Infinity) {\n    throw Error(ERROR_DIV_ZERO);\n  }\n\n  if (isNaN(result)) {\n    throw Error(ERROR_VALUE);\n  }\n\n  return result;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '=';\nexport default function func(exp1, exp2) {\n  return exp1 === exp2;\n}\nfunc.SYMBOL = SYMBOL;","import formulajs from '@handsontable/formulajs';\nimport SUPPORTED_FORMULAS from \"./../../supported-formulas.mjs\";\nimport { ERROR_NAME } from \"./../../error.mjs\";\nexport var SYMBOL = SUPPORTED_FORMULAS;\nexport default function func(symbol) {\n  return function __formulaFunction() {\n    symbol = symbol.toUpperCase();\n    var symbolParts = symbol.split('.');\n    var foundFormula = false;\n    var result;\n\n    if (symbolParts.length === 1) {\n      if (formulajs[symbolParts[0]]) {\n        foundFormula = true;\n        result = formulajs[symbolParts[0]].apply(formulajs, arguments);\n      }\n    } else {\n      var length = symbolParts.length;\n      var index = 0;\n      var nestedFormula = formulajs;\n\n      while (index < length) {\n        nestedFormula = nestedFormula[symbolParts[index]];\n        index++;\n\n        if (!nestedFormula) {\n          nestedFormula = null;\n          break;\n        }\n      }\n\n      if (nestedFormula) {\n        foundFormula = true;\n        result = nestedFormula.apply(void 0, arguments);\n      }\n    }\n\n    if (!foundFormula) {\n      throw Error(ERROR_NAME);\n    }\n\n    return result;\n  };\n}\nfunc.isFactory = true;\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '>';\nexport default function func(exp1, exp2) {\n  return exp1 > exp2;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '>=';\nexport default function func(exp1, exp2) {\n  return exp1 >= exp2;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '<';\nexport default function func(exp1, exp2) {\n  return exp1 < exp2;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '<=';\nexport default function func(exp1, exp2) {\n  return exp1 <= exp2;\n}\nfunc.SYMBOL = SYMBOL;","import { toNumber } from \"./../../helper/number.mjs\";\nimport { ERROR_VALUE } from \"./../../error.mjs\";\nexport var SYMBOL = '-';\nexport default function func(first) {\n  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  var result = rest.reduce(function (acc, value) {\n    return acc - toNumber(value);\n  }, toNumber(first));\n\n  if (isNaN(result)) {\n    throw Error(ERROR_VALUE);\n  }\n\n  return result;\n}\nfunc.SYMBOL = SYMBOL;","import { toNumber } from \"./../../helper/number.mjs\";\nimport { ERROR_VALUE } from \"./../../error.mjs\";\nexport var SYMBOL = '*';\nexport default function func(first) {\n  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  var result = rest.reduce(function (acc, value) {\n    return acc * toNumber(value);\n  }, toNumber(first));\n\n  if (isNaN(result)) {\n    throw Error(ERROR_VALUE);\n  }\n\n  return result;\n}\nfunc.SYMBOL = SYMBOL;","export var SYMBOL = '<>';\nexport default function func(exp1, exp2) {\n  return exp1 !== exp2;\n}\nfunc.SYMBOL = SYMBOL;","import { toNumber } from \"./../../helper/number.mjs\";\nimport { ERROR_VALUE } from \"./../../error.mjs\";\nexport var SYMBOL = '^';\nexport default function func(exp1, exp2) {\n  var result = Math.pow(toNumber(exp1), toNumber(exp2));\n\n  if (isNaN(result)) {\n    throw Error(ERROR_VALUE);\n  }\n\n  return result;\n}\nfunc.SYMBOL = SYMBOL;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/* eslint-disable import/no-named-as-default-member */\nimport add from \"./operator/add.mjs\";\nimport ampersand from \"./operator/ampersand.mjs\";\nimport divide from \"./operator/divide.mjs\";\nimport equal from \"./operator/equal.mjs\";\nimport formulaFunction from \"./operator/formula-function.mjs\";\nimport greaterThan from \"./operator/greater-than.mjs\";\nimport greaterThanOrEqual from \"./operator/greater-than-or-equal.mjs\";\nimport lessThan from \"./operator/less-than.mjs\";\nimport lessThanOrEqual from \"./operator/less-than-or-equal.mjs\";\nimport minus from \"./operator/minus.mjs\";\nimport multiply from \"./operator/multiply.mjs\";\nimport notEqual from \"./operator/not-equal.mjs\";\nimport power from \"./operator/power.mjs\";\nimport { ERROR_NAME } from \"./../error.mjs\";\nvar availableOperators = Object.create(null);\n/**\n * Evaluate values by operator id.git\n *\n * @param {String} operator Operator id.\n * @param {Array} [params=[]] Arguments to evaluate.\n * @returns {*}\n */\n\nexport default function evaluateByOperator(operator) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  operator = operator.toUpperCase();\n\n  if (!availableOperators[operator]) {\n    throw Error(ERROR_NAME);\n  }\n\n  return availableOperators[operator].apply(availableOperators, _toConsumableArray(params));\n}\n/**\n * Register operator.\n *\n * @param {String|Array} symbol Symbol to register.\n * @param {Function} func Logic to register for this symbol.\n */\n\nexport function registerOperation(symbol, func) {\n  if (!Array.isArray(symbol)) {\n    symbol = [symbol.toUpperCase()];\n  }\n\n  symbol.forEach(function (s) {\n    if (func.isFactory) {\n      availableOperators[s] = func(s);\n    } else {\n      availableOperators[s] = func;\n    }\n  });\n}\nregisterOperation(add.SYMBOL, add);\nregisterOperation(ampersand.SYMBOL, ampersand);\nregisterOperation(divide.SYMBOL, divide);\nregisterOperation(equal.SYMBOL, equal);\nregisterOperation(power.SYMBOL, power);\nregisterOperation(formulaFunction.SYMBOL, formulaFunction);\nregisterOperation(greaterThan.SYMBOL, greaterThan);\nregisterOperation(greaterThanOrEqual.SYMBOL, greaterThanOrEqual);\nregisterOperation(lessThan.SYMBOL, lessThan);\nregisterOperation(lessThanOrEqual.SYMBOL, lessThanOrEqual);\nregisterOperation(multiply.SYMBOL, multiply);\nregisterOperation(notEqual.SYMBOL, notEqual);\nregisterOperation(minus.SYMBOL, minus);","var SUPPORTED_FORMULAS = ['ABS', 'ACCRINT', 'ACOS', 'ACOSH', 'ACOT', 'ACOTH', 'ADD', 'AGGREGATE', 'AND', 'ARABIC', 'ARGS2ARRAY', 'ASIN', 'ASINH', 'ATAN', 'ATAN2', 'ATANH', 'AVEDEV', 'AVERAGE', 'AVERAGEA', 'AVERAGEIF', 'AVERAGEIFS', 'BASE', 'BESSELI', 'BESSELJ', 'BESSELK', 'BESSELY', 'BETA.DIST', 'BETA.INV', 'BETADIST', 'BETAINV', 'BIN2DEC', 'BIN2HEX', 'BIN2OCT', 'BINOM.DIST', 'BINOM.DIST.RANGE', 'BINOM.INV', 'BINOMDIST', 'BITAND', 'BITLSHIFT', 'BITOR', 'BITRSHIFT', 'BITXOR', 'CEILING', 'CEILINGMATH', 'CEILINGPRECISE', 'CHAR', 'CHISQ.DIST', 'CHISQ.DIST.RT', 'CHISQ.INV', 'CHISQ.INV.RT', 'CHOOSE', 'CHOOSE', 'CLEAN', 'CODE', 'COLUMN', 'COLUMNS', 'COMBIN', 'COMBINA', 'COMPLEX', 'CONCATENATE', 'CONFIDENCE', 'CONFIDENCE.NORM', 'CONFIDENCE.T', 'CONVERT', 'CORREL', 'COS', 'COSH', 'COT', 'COTH', 'COUNT', 'COUNTA', 'COUNTBLANK', 'COUNTIF', 'COUNTIFS', 'COUNTIN', 'COUNTUNIQUE', 'COVARIANCE.P', 'COVARIANCE.S', 'CSC', 'CSCH', 'CUMIPMT', 'CUMPRINC', 'DATE', 'DATEVALUE', 'DAY', 'DAYS', 'DAYS360', 'DB', 'DDB', 'DEC2BIN', 'DEC2HEX', 'DEC2OCT', 'DECIMAL', 'DEGREES', 'DELTA', 'DEVSQ', 'DIVIDE', 'DOLLARDE', 'DOLLARFR', 'E', 'EDATE', 'EFFECT', 'EOMONTH', 'EQ', 'ERF', 'ERFC', 'EVEN', 'EXACT', 'EXP', 'EXPON.DIST', 'EXPONDIST', 'F.DIST', 'F.DIST.RT', 'F.INV', 'F.INV.RT', 'FACT', 'FACTDOUBLE', 'FALSE', 'FDIST', 'FDISTRT', 'FIND', 'FINV', 'FINVRT', 'FISHER', 'FISHERINV', 'FLATTEN', 'FLOOR', 'FORECAST', 'FREQUENCY', 'FV', 'FVSCHEDULE', 'GAMMA', 'GAMMA.DIST', 'GAMMA.INV', 'GAMMADIST', 'GAMMAINV', 'GAMMALN', 'GAMMALN.PRECISE', 'GAUSS', 'GCD', 'GEOMEAN', 'GESTEP', 'GROWTH', 'GTE', 'HARMEAN', 'HEX2BIN', 'HEX2DEC', 'HEX2OCT', 'HOUR', 'HTML2TEXT', 'HYPGEOM.DIST', 'HYPGEOMDIST', 'IF', 'IMABS', 'IMAGINARY', 'IMARGUMENT', 'IMCONJUGATE', 'IMCOS', 'IMCOSH', 'IMCOT', 'IMCSC', 'IMCSCH', 'IMDIV', 'IMEXP', 'IMLN', 'IMLOG10', 'IMLOG2', 'IMPOWER', 'IMPRODUCT', 'IMREAL', 'IMSEC', 'IMSECH', 'IMSIN', 'IMSINH', 'IMSQRT', 'IMSUB', 'IMSUM', 'IMTAN', 'INT', 'INTERCEPT', 'INTERVAL', 'IPMT', 'IRR', 'ISBINARY', 'ISBLANK', 'ISEVEN', 'ISLOGICAL', 'ISNONTEXT', 'ISNUMBER', 'ISODD', 'ISODD', 'ISOWEEKNUM', 'ISPMT', 'ISTEXT', 'JOIN', 'KURT', 'LARGE', 'LCM', 'LEFT', 'LEN', 'LINEST', 'LN', 'LOG', 'LOG10', 'LOGEST', 'LOGNORM.DIST', 'LOGNORM.INV', 'LOGNORMDIST', 'LOGNORMINV', 'LOWER', 'LT', 'LTE', 'MATCH', 'MAX', 'MAXA', 'MEDIAN', 'MID', 'MIN', 'MINA', 'MINUS', 'MINUTE', 'MIRR', 'MOD', 'MODE.MULT', 'MODE.SNGL', 'MODEMULT', 'MODESNGL', 'MONTH', 'MROUND', 'MULTINOMIAL', 'MULTIPLY', 'NE', 'NEGBINOM.DIST', 'NEGBINOMDIST', 'NETWORKDAYS', 'NOMINAL', 'NORM.DIST', 'NORM.INV', 'NORM.S.DIST', 'NORM.S.INV', 'NORMDIST', 'NORMINV', 'NORMSDIST', 'NORMSINV', 'NOT', 'NOW', 'NPER', 'NPV', 'NUMBERS', 'OCT2BIN', 'OCT2DEC', 'OCT2HEX', 'ODD', 'OR', 'PDURATION', 'PEARSON', 'PERCENTILEEXC', 'PERCENTILEINC', 'PERCENTRANKEXC', 'PERCENTRANKINC', 'PERMUT', 'PERMUTATIONA', 'PHI', 'PI', 'PMT', 'POISSON.DIST', 'POISSONDIST', 'POW', 'POWER', 'PPMT', 'PROB', 'PRODUCT', 'PROPER', 'PV', 'QUARTILE.EXC', 'QUARTILE.INC', 'QUARTILEEXC', 'QUARTILEINC', 'QUOTIENT', 'RADIANS', 'RAND', 'RANDBETWEEN', 'RANK.AVG', 'RANK.EQ', 'RANKAVG', 'RANKEQ', 'RATE', 'REFERENCE', 'REGEXEXTRACT', 'REGEXMATCH', 'REGEXREPLACE', 'REPLACE', 'REPT', 'RIGHT', 'ROMAN', 'ROUND', 'ROUNDDOWN', 'ROUNDUP', 'ROW', 'ROWS', 'RRI', 'RSQ', 'SEARCH', 'SEC', 'SECH', 'SECOND', 'SERIESSUM', 'SIGN', 'SIN', 'SINH', 'SKEW', 'SKEW.P', 'SKEWP', 'SLN', 'SLOPE', 'SMALL', 'SPLIT', 'SPLIT', 'SQRT', 'SQRTPI', 'STANDARDIZE', 'STDEV.P', 'STDEV.S', 'STDEVA', 'STDEVP', 'STDEVPA', 'STDEVS', 'STEYX', 'SUBSTITUTE', 'SUBTOTAL', 'SUM', 'SUMIF', 'SUMIFS', 'SUMPRODUCT', 'SUMSQ', 'SUMX2MY2', 'SUMX2PY2', 'SUMXMY2', 'SWITCH', 'SYD', 'T', 'T.DIST', 'T.DIST.2T', 'T.DIST.RT', 'T.INV', 'T.INV.2T', 'TAN', 'TANH', 'TBILLEQ', 'TBILLPRICE', 'TBILLYIELD', 'TDIST', 'TDIST2T', 'TDISTRT', 'TIME', 'TIMEVALUE', 'TINV', 'TINV2T', 'TODAY', 'TRANSPOSE', 'TREND', 'TRIM', 'TRIMMEAN', 'TRUE', 'TRUNC', 'UNICHAR', 'UNICODE', 'UNIQUE', 'UPPER', 'VAR.P', 'VAR.S', 'VARA', 'VARP', 'VARPA', 'VARS', 'WEEKDAY', 'WEEKNUM', 'WEIBULL.DIST', 'WEIBULLDIST', 'WORKDAY', 'XIRR', 'XNPV', 'XOR', 'YEAR', 'YEARFRAC'];\nexport default SUPPORTED_FORMULAS;","/* parser generated by jison 0.4.18 */\n\n/*\n  Returns a Parser object of the following structure:\n\n  Parser: {\n    yy: {}\n  }\n\n  Parser.prototype: {\n    yy: {},\n    trace: function(),\n    symbols_: {associative list: name ==> number},\n    terminals_: {associative list: number ==> name},\n    productions_: [...],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n    table: [...],\n    defaultActions: {...},\n    parseError: function(str, hash),\n    parse: function(input),\n\n    lexer: {\n        EOF: 1,\n        parseError: function(str, hash),\n        setInput: function(input),\n        input: function(),\n        unput: function(str),\n        more: function(),\n        less: function(n),\n        pastInput: function(),\n        upcomingInput: function(),\n        showPosition: function(),\n        test_match: function(regex_match_array, rule_index),\n        next: function(),\n        lex: function(),\n        begin: function(condition),\n        popState: function(),\n        _currentRules: function(),\n        topState: function(),\n        pushState: function(condition),\n\n        options: {\n            ranges: boolean           (optional: true ==> token location info will include a .range[] member)\n            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n        },\n\n        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n        rules: [...],\n        conditions: {associative list: name ==> set},\n    }\n  }\n\n\n  token location info (@$, _$, etc.): {\n    first_line: n,\n    last_line: n,\n    first_column: n,\n    last_column: n,\n    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)\n  }\n\n\n  the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n    text:        (matched text)\n    token:       (the produced terminal token, if any)\n    line:        (yylineno)\n  }\n  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n    loc:         (yylloc)\n    expected:    (string describing the set of expected tokens)\n    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n  }\n*/\nvar o = function o(k, v, _o, l) {\n  for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {\n    ;\n  }\n\n  return _o;\n},\n    $V0 = [1, 5],\n    $V1 = [1, 8],\n    $V2 = [1, 6],\n    $V3 = [1, 7],\n    $V4 = [1, 9],\n    $V5 = [1, 14],\n    $V6 = [1, 15],\n    $V7 = [1, 16],\n    $V8 = [1, 12],\n    $V9 = [1, 13],\n    $Va = [1, 17],\n    $Vb = [1, 19],\n    $Vc = [1, 20],\n    $Vd = [1, 21],\n    $Ve = [1, 22],\n    $Vf = [1, 23],\n    $Vg = [1, 24],\n    $Vh = [1, 25],\n    $Vi = [1, 26],\n    $Vj = [1, 27],\n    $Vk = [1, 28],\n    $Vl = [5, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 29, 30],\n    $Vm = [5, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 29, 30, 32],\n    $Vn = [5, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 29, 30, 34],\n    $Vo = [5, 10, 11, 13, 14, 15, 16, 17, 29, 30],\n    $Vp = [5, 10, 13, 14, 15, 16, 29, 30],\n    $Vq = [5, 10, 11, 13, 14, 15, 16, 17, 18, 19, 29, 30],\n    $Vr = [13, 29, 30];\n\nvar parser = {\n  trace: function trace() {},\n  yy: {},\n  symbols_: {\n    \"error\": 2,\n    \"expressions\": 3,\n    \"expression\": 4,\n    \"EOF\": 5,\n    \"variableSequence\": 6,\n    \"number\": 7,\n    \"STRING\": 8,\n    \"&\": 9,\n    \"=\": 10,\n    \"+\": 11,\n    \"(\": 12,\n    \")\": 13,\n    \"<\": 14,\n    \">\": 15,\n    \"NOT\": 16,\n    \"-\": 17,\n    \"*\": 18,\n    \"/\": 19,\n    \"^\": 20,\n    \"FUNCTION\": 21,\n    \"expseq\": 22,\n    \"cell\": 23,\n    \"ABSOLUTE_CELL\": 24,\n    \"RELATIVE_CELL\": 25,\n    \"MIXED_CELL\": 26,\n    \":\": 27,\n    \"ARRAY\": 28,\n    \";\": 29,\n    \",\": 30,\n    \"VARIABLE\": 31,\n    \"DECIMAL\": 32,\n    \"NUMBER\": 33,\n    \"%\": 34,\n    \"ERROR\": 35,\n    \"$accept\": 0,\n    \"$end\": 1\n  },\n  terminals_: {\n    5: \"EOF\",\n    8: \"STRING\",\n    9: \"&\",\n    10: \"=\",\n    11: \"+\",\n    12: \"(\",\n    13: \")\",\n    14: \"<\",\n    15: \">\",\n    16: \"NOT\",\n    17: \"-\",\n    18: \"*\",\n    19: \"/\",\n    20: \"^\",\n    21: \"FUNCTION\",\n    24: \"ABSOLUTE_CELL\",\n    25: \"RELATIVE_CELL\",\n    26: \"MIXED_CELL\",\n    27: \":\",\n    28: \"ARRAY\",\n    29: \";\",\n    30: \",\",\n    31: \"VARIABLE\",\n    32: \"DECIMAL\",\n    33: \"NUMBER\",\n    34: \"%\",\n    35: \"ERROR\"\n  },\n  productions_: [0, [3, 2], [4, 1], [4, 1], [4, 1], [4, 3], [4, 3], [4, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 2], [4, 2], [4, 3], [4, 4], [4, 1], [4, 1], [4, 2], [23, 1], [23, 1], [23, 1], [23, 3], [23, 3], [23, 3], [23, 3], [23, 3], [23, 3], [23, 3], [23, 3], [23, 3], [22, 1], [22, 1], [22, 3], [22, 3], [6, 1], [6, 3], [7, 1], [7, 3], [7, 2], [2, 1]],\n  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate\n  /* action[1] */\n  , $$\n  /* vstack */\n  , _$\n  /* lstack */\n  ) {\n    /* this == yyval */\n    var $0 = $$.length - 1;\n\n    switch (yystate) {\n      case 1:\n        return $$[$0 - 1];\n        break;\n\n      case 2:\n        this.$ = yy.callVariable($$[$0][0]);\n        break;\n\n      case 3:\n        this.$ = yy.toNumber($$[$0]);\n        break;\n\n      case 4:\n        this.$ = yy.trimEdges($$[$0]);\n        break;\n\n      case 5:\n        this.$ = yy.evaluateByOperator('&', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 6:\n        this.$ = yy.evaluateByOperator('=', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 7:\n        this.$ = yy.evaluateByOperator('+', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 8:\n        this.$ = $$[$0 - 1];\n        break;\n\n      case 9:\n        this.$ = yy.evaluateByOperator('<=', [$$[$0 - 3], $$[$0]]);\n        break;\n\n      case 10:\n        this.$ = yy.evaluateByOperator('>=', [$$[$0 - 3], $$[$0]]);\n        break;\n\n      case 11:\n        this.$ = yy.evaluateByOperator('<>', [$$[$0 - 3], $$[$0]]);\n        break;\n\n      case 12:\n        this.$ = yy.evaluateByOperator('NOT', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 13:\n        this.$ = yy.evaluateByOperator('>', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 14:\n        this.$ = yy.evaluateByOperator('<', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 15:\n        this.$ = yy.evaluateByOperator('-', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 16:\n        this.$ = yy.evaluateByOperator('*', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 17:\n        this.$ = yy.evaluateByOperator('/', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 18:\n        this.$ = yy.evaluateByOperator('^', [$$[$0 - 2], $$[$0]]);\n        break;\n\n      case 19:\n        var n1 = yy.invertNumber($$[$0]);\n        this.$ = n1;\n\n        if (isNaN(this.$)) {\n          this.$ = 0;\n        }\n\n        break;\n\n      case 20:\n        var n1 = yy.toNumber($$[$0]);\n        this.$ = n1;\n\n        if (isNaN(this.$)) {\n          this.$ = 0;\n        }\n\n        break;\n\n      case 21:\n        this.$ = yy.callFunction($$[$0 - 2]);\n        break;\n\n      case 22:\n        this.$ = yy.callFunction($$[$0 - 3], $$[$0 - 1]);\n        break;\n\n      case 26:\n      case 27:\n      case 28:\n        this.$ = yy.cellValue($$[$0]);\n        break;\n\n      case 29:\n      case 30:\n      case 31:\n      case 32:\n      case 33:\n      case 34:\n      case 35:\n      case 36:\n      case 37:\n        this.$ = yy.rangeValue($$[$0 - 2], $$[$0]);\n        break;\n\n      case 38:\n      case 42:\n        this.$ = [$$[$0]];\n        break;\n\n      case 39:\n        this.$ = yy.trimEdges(yytext).split(',');\n        break;\n\n      case 40:\n      case 41:\n        $$[$0 - 2].push($$[$0]);\n        this.$ = $$[$0 - 2];\n        break;\n\n      case 43:\n        this.$ = Array.isArray($$[$0 - 2]) ? $$[$0 - 2] : [$$[$0 - 2]];\n        this.$.push($$[$0]);\n        break;\n\n      case 44:\n        this.$ = $$[$0];\n        break;\n\n      case 45:\n        this.$ = ($$[$0 - 2] + '.' + $$[$0]) * 1;\n        break;\n\n      case 46:\n        this.$ = $$[$0 - 1] * 0.01;\n        break;\n\n      case 47:\n        this.$ = yy.throwError($$[$0]);\n        break;\n    }\n  },\n  table: [{\n    2: 11,\n    3: 1,\n    4: 2,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    1: [3]\n  }, {\n    5: [1, 18],\n    9: $Vb,\n    10: $Vc,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }, o($Vl, [2, 2], {\n    32: [1, 29]\n  }), o($Vl, [2, 3], {\n    34: [1, 30]\n  }), o($Vl, [2, 4]), {\n    2: 11,\n    4: 31,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 32,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 33,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    12: [1, 34]\n  }, o($Vl, [2, 23]), o($Vl, [2, 24], {\n    2: 35,\n    35: $Va\n  }), o($Vm, [2, 42]), o($Vn, [2, 44], {\n    32: [1, 36]\n  }), o($Vl, [2, 26], {\n    27: [1, 37]\n  }), o($Vl, [2, 27], {\n    27: [1, 38]\n  }), o($Vl, [2, 28], {\n    27: [1, 39]\n  }), o([5, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 29, 30, 35], [2, 47]), {\n    1: [2, 1]\n  }, {\n    2: 11,\n    4: 40,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 41,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 42,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 45,\n    6: 3,\n    7: 4,\n    8: $V0,\n    10: [1, 43],\n    11: $V1,\n    12: $V2,\n    15: [1, 44],\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 47,\n    6: 3,\n    7: 4,\n    8: $V0,\n    10: [1, 46],\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 48,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 49,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 50,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 51,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 52,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    31: [1, 53]\n  }, o($Vn, [2, 46]), {\n    9: $Vb,\n    10: $Vc,\n    11: $Vd,\n    13: [1, 54],\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }, o($Vo, [2, 19], {\n    9: $Vb,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vo, [2, 20], {\n    9: $Vb,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), {\n    2: 11,\n    4: 57,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    13: [1, 55],\n    17: $V3,\n    21: $V4,\n    22: 56,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    28: [1, 58],\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, o($Vl, [2, 25]), {\n    33: [1, 59]\n  }, {\n    24: [1, 60],\n    25: [1, 61],\n    26: [1, 62]\n  }, {\n    24: [1, 63],\n    25: [1, 64],\n    26: [1, 65]\n  }, {\n    24: [1, 66],\n    25: [1, 67],\n    26: [1, 68]\n  }, o($Vl, [2, 5]), o([5, 10, 13, 29, 30], [2, 6], {\n    9: $Vb,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vo, [2, 7], {\n    9: $Vb,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), {\n    2: 11,\n    4: 69,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 70,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, o($Vp, [2, 14], {\n    9: $Vb,\n    11: $Vd,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), {\n    2: 11,\n    4: 71,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, o($Vp, [2, 13], {\n    9: $Vb,\n    11: $Vd,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o([5, 10, 13, 16, 29, 30], [2, 12], {\n    9: $Vb,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vo, [2, 15], {\n    9: $Vb,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vq, [2, 16], {\n    9: $Vb,\n    20: $Vk\n  }), o($Vq, [2, 17], {\n    9: $Vb,\n    20: $Vk\n  }), o([5, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 29, 30], [2, 18], {\n    9: $Vb\n  }), o($Vm, [2, 43]), o($Vl, [2, 8]), o($Vl, [2, 21]), {\n    13: [1, 72],\n    29: [1, 73],\n    30: [1, 74]\n  }, o($Vr, [2, 38], {\n    9: $Vb,\n    10: $Vc,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vr, [2, 39]), o($Vn, [2, 45]), o($Vl, [2, 29]), o($Vl, [2, 30]), o($Vl, [2, 31]), o($Vl, [2, 32]), o($Vl, [2, 33]), o($Vl, [2, 34]), o($Vl, [2, 35]), o($Vl, [2, 36]), o($Vl, [2, 37]), o($Vp, [2, 9], {\n    9: $Vb,\n    11: $Vd,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vp, [2, 11], {\n    9: $Vb,\n    11: $Vd,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vp, [2, 10], {\n    9: $Vb,\n    11: $Vd,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vl, [2, 22]), {\n    2: 11,\n    4: 75,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, {\n    2: 11,\n    4: 76,\n    6: 3,\n    7: 4,\n    8: $V0,\n    11: $V1,\n    12: $V2,\n    17: $V3,\n    21: $V4,\n    23: 10,\n    24: $V5,\n    25: $V6,\n    26: $V7,\n    31: $V8,\n    33: $V9,\n    35: $Va\n  }, o($Vr, [2, 40], {\n    9: $Vb,\n    10: $Vc,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  }), o($Vr, [2, 41], {\n    9: $Vb,\n    10: $Vc,\n    11: $Vd,\n    14: $Ve,\n    15: $Vf,\n    16: $Vg,\n    17: $Vh,\n    18: $Vi,\n    19: $Vj,\n    20: $Vk\n  })],\n  defaultActions: {\n    18: [2, 1]\n  },\n  parseError: function parseError(str, hash) {\n    if (hash.recoverable) {\n      this.trace(str);\n    } else {\n      var error = new Error(str);\n      error.hash = hash;\n      throw error;\n    }\n  },\n  parse: function parse(input) {\n    var self = this,\n        stack = [0],\n        tstack = [],\n        // token stack\n    vstack = [null],\n        // semantic value stack\n    lstack = [],\n        // location stack\n    table = this.table,\n        yytext = '',\n        yylineno = 0,\n        yyleng = 0,\n        recovering = 0,\n        TERROR = 2,\n        EOF = 1;\n    var args = lstack.slice.call(arguments, 1); //this.reductionCount = this.shiftCount = 0;\n\n    var lexer = Object.create(this.lexer);\n    var sharedState = {\n      yy: {}\n    }; // copy state\n\n    for (var k in this.yy) {\n      if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n        sharedState.yy[k] = this.yy[k];\n      }\n    }\n\n    lexer.setInput(input, sharedState.yy);\n    sharedState.yy.lexer = lexer;\n    sharedState.yy.parser = this;\n\n    if (typeof lexer.yylloc == 'undefined') {\n      lexer.yylloc = {};\n    }\n\n    var yyloc = lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = lexer.options && lexer.options.ranges;\n\n    if (typeof sharedState.yy.parseError === 'function') {\n      this.parseError = sharedState.yy.parseError;\n    } else {\n      this.parseError = Object.getPrototypeOf(this).parseError;\n    }\n\n    function popStack(n) {\n      stack.length = stack.length - 2 * n;\n      vstack.length = vstack.length - n;\n      lstack.length = lstack.length - n;\n    }\n\n    var lex = function lex() {\n      var token;\n      token = lexer.lex() || EOF; // if token isn't its numeric value, convert\n\n      if (typeof token !== 'number') {\n        token = self.symbols_[token] || token;\n      }\n\n      return token;\n    };\n\n    var symbol,\n        preErrorSymbol,\n        state,\n        action,\n        a,\n        r,\n        yyval = {},\n        p,\n        len,\n        newState,\n        expected;\n\n    while (true) {\n      // retreive state number from top of stack\n      state = stack[stack.length - 1]; // use default actions if available\n\n      if (this.defaultActions[state]) {\n        action = this.defaultActions[state];\n      } else {\n        if (symbol === null || typeof symbol == 'undefined') {\n          symbol = lex();\n        } // read action for current state and first input\n\n\n        action = table[state] && table[state][symbol];\n      } // handle parse error\n\n\n      if (typeof action === 'undefined' || !action.length || !action[0]) {\n        // Return the rule stack depth where the nearest error rule can be found.\n        // Return FALSE when no error recovery rule was found.\n        var locateNearestErrorRecoveryRule = function locateNearestErrorRecoveryRule(state) {\n          var stack_probe = stack.length - 1;\n          var depth = 0; // try to recover from error\n\n          for (;;) {\n            // check for error recovery rule in this state\n            if (TERROR.toString() in table[state]) {\n              return depth;\n            }\n\n            if (state === 0 || stack_probe < 2) {\n              return false; // No suitable error recovery rule available.\n            }\n\n            stack_probe -= 2; // popStack(1): [symbol, action]\n\n            state = stack[stack_probe];\n            ++depth;\n          }\n        };\n\n        var error_rule_depth;\n        var errStr = '';\n\n        if (!recovering) {\n          // first see if there's any chance at hitting an error recovery rule:\n          error_rule_depth = locateNearestErrorRecoveryRule(state); // Report error\n\n          expected = [];\n\n          for (p in table[state]) {\n            if (this.terminals_[p] && p > TERROR) {\n              expected.push(\"'\" + this.terminals_[p] + \"'\");\n            }\n          }\n\n          if (lexer.showPosition) {\n            errStr = 'Parse error on line ' + (yylineno + 1) + \":\\n\" + lexer.showPosition() + \"\\nExpecting \" + expected.join(', ') + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n          } else {\n            errStr = 'Parse error on line ' + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n          }\n\n          this.parseError(errStr, {\n            text: lexer.match,\n            token: this.terminals_[symbol] || symbol,\n            line: lexer.yylineno,\n            loc: yyloc,\n            expected: expected,\n            recoverable: error_rule_depth !== false\n          });\n        } else if (preErrorSymbol !== EOF) {\n          error_rule_depth = locateNearestErrorRecoveryRule(state);\n        } // just recovered from another error\n\n\n        if (recovering == 3) {\n          if (symbol === EOF || preErrorSymbol === EOF) {\n            throw new Error(errStr || 'Parsing halted while starting to recover from another error.');\n          } // discard current lookahead and grab another\n\n\n          yyleng = lexer.yyleng;\n          yytext = lexer.yytext;\n          yylineno = lexer.yylineno;\n          yyloc = lexer.yylloc;\n          symbol = lex();\n        } // try to recover from error\n\n\n        if (error_rule_depth === false) {\n          throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');\n        }\n\n        popStack(error_rule_depth);\n        preErrorSymbol = symbol == TERROR ? null : symbol; // save the lookahead token\n\n        symbol = TERROR; // insert generic error symbol as new lookahead\n\n        state = stack[stack.length - 1];\n        action = table[state] && table[state][TERROR];\n        recovering = 3; // allow 3 real symbols to be shifted before reporting a new error\n      } // this shouldn't happen, unless resolve defaults are off\n\n\n      if (action[0] instanceof Array && action.length > 1) {\n        throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n      }\n\n      switch (action[0]) {\n        case 1:\n          // shift\n          //this.shiftCount++;\n          stack.push(symbol);\n          vstack.push(lexer.yytext);\n          lstack.push(lexer.yylloc);\n          stack.push(action[1]); // push state\n\n          symbol = null;\n\n          if (!preErrorSymbol) {\n            // normal execution/no error\n            yyleng = lexer.yyleng;\n            yytext = lexer.yytext;\n            yylineno = lexer.yylineno;\n            yyloc = lexer.yylloc;\n\n            if (recovering > 0) {\n              recovering--;\n            }\n          } else {\n            // error just occurred, resume old lookahead f/ before error\n            symbol = preErrorSymbol;\n            preErrorSymbol = null;\n          }\n\n          break;\n\n        case 2:\n          // reduce\n          //this.reductionCount++;\n          len = this.productions_[action[1]][1]; // perform semantic action\n\n          yyval.$ = vstack[vstack.length - len]; // default to $$ = $1\n          // default location, uses first token for firsts, last for lasts\n\n          yyval._$ = {\n            first_line: lstack[lstack.length - (len || 1)].first_line,\n            last_line: lstack[lstack.length - 1].last_line,\n            first_column: lstack[lstack.length - (len || 1)].first_column,\n            last_column: lstack[lstack.length - 1].last_column\n          };\n\n          if (ranges) {\n            yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n          }\n\n          r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\n          if (typeof r !== 'undefined') {\n            return r;\n          } // pop off stack\n\n\n          if (len) {\n            stack = stack.slice(0, -1 * len * 2);\n            vstack = vstack.slice(0, -1 * len);\n            lstack = lstack.slice(0, -1 * len);\n          }\n\n          stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)\n\n          vstack.push(yyval.$);\n          lstack.push(yyval._$); // goto new state = table[STATE][NONTERMINAL]\n\n          newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n          stack.push(newState);\n          break;\n\n        case 3:\n          // accept\n          return true;\n      }\n    }\n\n    return true;\n  }\n};\n/* generated by jison-lex 0.3.4 */\n\nvar lexer = function () {\n  var lexer = {\n    EOF: 1,\n    parseError: function parseError(str, hash) {\n      if (this.yy.parser) {\n        this.yy.parser.parseError(str, hash);\n      } else {\n        throw new Error(str);\n      }\n    },\n    // resets the lexer, sets new input\n    setInput: function setInput(input, yy) {\n      this.yy = yy || this.yy || {};\n      this._input = input;\n      this._more = this._backtrack = this.done = false;\n      this.yylineno = this.yyleng = 0;\n      this.yytext = this.matched = this.match = '';\n      this.conditionStack = ['INITIAL'];\n      this.yylloc = {\n        first_line: 1,\n        first_column: 0,\n        last_line: 1,\n        last_column: 0\n      };\n\n      if (this.options.ranges) {\n        this.yylloc.range = [0, 0];\n      }\n\n      this.offset = 0;\n      return this;\n    },\n    // consumes and returns one char from the input\n    input: function input() {\n      var ch = this._input[0];\n      this.yytext += ch;\n      this.yyleng++;\n      this.offset++;\n      this.match += ch;\n      this.matched += ch;\n      var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\n      if (lines) {\n        this.yylineno++;\n        this.yylloc.last_line++;\n      } else {\n        this.yylloc.last_column++;\n      }\n\n      if (this.options.ranges) {\n        this.yylloc.range[1]++;\n      }\n\n      this._input = this._input.slice(1);\n      return ch;\n    },\n    // unshifts one char (or a string) into the input\n    unput: function unput(ch) {\n      var len = ch.length;\n      var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n      this._input = ch + this._input;\n      this.yytext = this.yytext.substr(0, this.yytext.length - len); //this.yyleng -= len;\n\n      this.offset -= len;\n      var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n      this.match = this.match.substr(0, this.match.length - 1);\n      this.matched = this.matched.substr(0, this.matched.length - 1);\n\n      if (lines.length - 1) {\n        this.yylineno -= lines.length - 1;\n      }\n\n      var r = this.yylloc.range;\n      this.yylloc = {\n        first_line: this.yylloc.first_line,\n        last_line: this.yylineno + 1,\n        first_column: this.yylloc.first_column,\n        last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n      };\n\n      if (this.options.ranges) {\n        this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n      }\n\n      this.yyleng = this.yytext.length;\n      return this;\n    },\n    // When called from action, caches matched text and appends it on next action\n    more: function more() {\n      this._more = true;\n      return this;\n    },\n    // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n    reject: function reject() {\n      if (this.options.backtrack_lexer) {\n        this._backtrack = true;\n      } else {\n        return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n          text: \"\",\n          token: null,\n          line: this.yylineno\n        });\n      }\n\n      return this;\n    },\n    // retain first n characters of the match\n    less: function less(n) {\n      this.unput(this.match.slice(n));\n    },\n    // displays already matched input, i.e. for error messages\n    pastInput: function pastInput() {\n      var past = this.matched.substr(0, this.matched.length - this.match.length);\n      return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n    },\n    // displays upcoming input, i.e. for error messages\n    upcomingInput: function upcomingInput() {\n      var next = this.match;\n\n      if (next.length < 20) {\n        next += this._input.substr(0, 20 - next.length);\n      }\n\n      return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n    },\n    // displays the character position where the lexing error occurred, i.e. for error messages\n    showPosition: function showPosition() {\n      var pre = this.pastInput();\n      var c = new Array(pre.length + 1).join(\"-\");\n      return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n    },\n    // test the lexed token: return FALSE when not a match, otherwise return token\n    test_match: function test_match(match, indexed_rule) {\n      var token, lines, backup;\n\n      if (this.options.backtrack_lexer) {\n        // save context\n        backup = {\n          yylineno: this.yylineno,\n          yylloc: {\n            first_line: this.yylloc.first_line,\n            last_line: this.last_line,\n            first_column: this.yylloc.first_column,\n            last_column: this.yylloc.last_column\n          },\n          yytext: this.yytext,\n          match: this.match,\n          matches: this.matches,\n          matched: this.matched,\n          yyleng: this.yyleng,\n          offset: this.offset,\n          _more: this._more,\n          _input: this._input,\n          yy: this.yy,\n          conditionStack: this.conditionStack.slice(0),\n          done: this.done\n        };\n\n        if (this.options.ranges) {\n          backup.yylloc.range = this.yylloc.range.slice(0);\n        }\n      }\n\n      lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\n      if (lines) {\n        this.yylineno += lines.length;\n      }\n\n      this.yylloc = {\n        first_line: this.yylloc.last_line,\n        last_line: this.yylineno + 1,\n        first_column: this.yylloc.last_column,\n        last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n      };\n      this.yytext += match[0];\n      this.match += match[0];\n      this.matches = match;\n      this.yyleng = this.yytext.length;\n\n      if (this.options.ranges) {\n        this.yylloc.range = [this.offset, this.offset += this.yyleng];\n      }\n\n      this._more = false;\n      this._backtrack = false;\n      this._input = this._input.slice(match[0].length);\n      this.matched += match[0];\n      token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\n      if (this.done && this._input) {\n        this.done = false;\n      }\n\n      if (token) {\n        return token;\n      } else if (this._backtrack) {\n        // recover context\n        for (var k in backup) {\n          this[k] = backup[k];\n        }\n\n        return false; // rule action called reject() implying the next rule should be tested instead.\n      }\n\n      return false;\n    },\n    // return next match in input\n    next: function next() {\n      if (this.done) {\n        return this.EOF;\n      }\n\n      if (!this._input) {\n        this.done = true;\n      }\n\n      var token, match, tempMatch, index;\n\n      if (!this._more) {\n        this.yytext = '';\n        this.match = '';\n      }\n\n      var rules = this._currentRules();\n\n      for (var i = 0; i < rules.length; i++) {\n        tempMatch = this._input.match(this.rules[rules[i]]);\n\n        if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n          match = tempMatch;\n          index = i;\n\n          if (this.options.backtrack_lexer) {\n            token = this.test_match(tempMatch, rules[i]);\n\n            if (token !== false) {\n              return token;\n            } else if (this._backtrack) {\n              match = false;\n              continue; // rule action called reject() implying a rule MISmatch.\n            } else {\n              // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n              return false;\n            }\n          } else if (!this.options.flex) {\n            break;\n          }\n        }\n      }\n\n      if (match) {\n        token = this.test_match(match, rules[index]);\n\n        if (token !== false) {\n          return token;\n        } // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\n\n        return false;\n      }\n\n      if (this._input === \"\") {\n        return this.EOF;\n      } else {\n        return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n          text: \"\",\n          token: null,\n          line: this.yylineno\n        });\n      }\n    },\n    // return next match that has a token\n    lex: function lex() {\n      var r = this.next();\n\n      if (r) {\n        return r;\n      } else {\n        return this.lex();\n      }\n    },\n    // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n    begin: function begin(condition) {\n      this.conditionStack.push(condition);\n    },\n    // pop the previously active lexer condition state off the condition stack\n    popState: function popState() {\n      var n = this.conditionStack.length - 1;\n\n      if (n > 0) {\n        return this.conditionStack.pop();\n      } else {\n        return this.conditionStack[0];\n      }\n    },\n    // produce the lexer rule set which is active for the currently active lexer condition state\n    _currentRules: function _currentRules() {\n      if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n        return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n      } else {\n        return this.conditions[\"INITIAL\"].rules;\n      }\n    },\n    // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n    topState: function topState(n) {\n      n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n      if (n >= 0) {\n        return this.conditionStack[n];\n      } else {\n        return \"INITIAL\";\n      }\n    },\n    // alias for begin(condition)\n    pushState: function pushState(condition) {\n      this.begin(condition);\n    },\n    // return the number of states currently on the stack\n    stateStackSize: function stateStackSize() {\n      return this.conditionStack.length;\n    },\n    options: {},\n    performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n      var YYSTATE = YY_START;\n\n      switch ($avoiding_name_collisions) {\n        case 0:\n          /* skip whitespace */\n          break;\n\n        case 1:\n          return 8;\n          break;\n\n        case 2:\n          return 8;\n          break;\n\n        case 3:\n          return 21;\n          break;\n\n        case 4:\n          return 35;\n          break;\n\n        case 5:\n          return 24;\n          break;\n\n        case 6:\n          return 26;\n          break;\n\n        case 7:\n          return 26;\n          break;\n\n        case 8:\n          return 25;\n          break;\n\n        case 9:\n          return 21;\n          break;\n\n        case 10:\n          return 31;\n          break;\n\n        case 11:\n          return 31;\n          break;\n\n        case 12:\n          return 33;\n          break;\n\n        case 13:\n          return 28;\n          break;\n\n        case 14:\n          return 9;\n          break;\n\n        case 15:\n          return ' ';\n          break;\n\n        case 16:\n          return 32;\n          break;\n\n        case 17:\n          return 27;\n          break;\n\n        case 18:\n          return 29;\n          break;\n\n        case 19:\n          return 30;\n          break;\n\n        case 20:\n          return 18;\n          break;\n\n        case 21:\n          return 19;\n          break;\n\n        case 22:\n          return 17;\n          break;\n\n        case 23:\n          return 11;\n          break;\n\n        case 24:\n          return 20;\n          break;\n\n        case 25:\n          return 12;\n          break;\n\n        case 26:\n          return 13;\n          break;\n\n        case 27:\n          return 15;\n          break;\n\n        case 28:\n          return 14;\n          break;\n\n        case 29:\n          return 16;\n          break;\n\n        case 30:\n          return '\"';\n          break;\n\n        case 31:\n          return \"'\";\n          break;\n\n        case 32:\n          return \"!\";\n          break;\n\n        case 33:\n          return 10;\n          break;\n\n        case 34:\n          return 34;\n          break;\n\n        case 35:\n          return '#';\n          break;\n\n        case 36:\n          return 5;\n          break;\n      }\n    },\n    rules: [/^(?:\\s+)/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:[A-Za-z]{1,}[A-Za-z_0-9\\.]+(?=[(]))/, /^(?:#[A-Z0-9\\/]+(!|\\?)?)/, /^(?:\\$[A-Za-z]+\\$[0-9]+)/, /^(?:\\$[A-Za-z]+[0-9]+)/, /^(?:[A-Za-z]+\\$[0-9]+)/, /^(?:[A-Za-z]+[0-9]+)/, /^(?:[A-Za-z\\.]+(?=[(]))/, /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+)/, /^(?:[A-Za-z_]+)/, /^(?:[0-9]+)/, /^(?:\\[(.*)?\\])/, /^(?:&)/, /^(?: )/, /^(?:[.])/, /^(?::)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\/)/, /^(?:-)/, /^(?:\\+)/, /^(?:\\^)/, /^(?:\\()/, /^(?:\\))/, /^(?:>)/, /^(?:<)/, /^(?:NOT\\b)/, /^(?:\")/, /^(?:')/, /^(?:!)/, /^(?:=)/, /^(?:%)/, /^(?:[#])/, /^(?:$)/],\n    conditions: {\n      \"INITIAL\": {\n        \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36],\n        \"inclusive\": true\n      }\n    }\n  };\n  return lexer;\n}();\n\nparser.lexer = lexer;\nexport function Parser() {\n  this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;","/* eslint-disable import/prefer-default-export */\n\n/**\n * Trim value by cutting character starting from the beginning and ending at the same time.\n *\n * @param {String} string String to trimming.\n * @param {Number} [margin=1] Number of character to cut.\n * @returns {String}\n */\nexport function trimEdges(string) {\n  var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  string = string.substring(margin, string.length - margin);\n  return string;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * Convert row label to index.\n *\n * @param {String} label Row label (eq. '1', '5')\n * @returns {Number} Returns -1 if label is not recognized otherwise proper row index.\n */\nexport function rowLabelToIndex(label) {\n  var result = parseInt(label, 10);\n\n  if (isNaN(result)) {\n    result = -1;\n  } else {\n    result = Math.max(result - 1, -1);\n  }\n\n  return result;\n}\n/**\n * Convert row index to label.\n *\n * @param {Number} row Row index.\n * @returns {String} Returns row label (eq. '1', '7').\n */\n\nexport function rowIndexToLabel(row) {\n  var result = '';\n\n  if (row >= 0) {\n    result = \"\".concat(row + 1);\n  }\n\n  return result;\n}\nvar COLUMN_LABEL_BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nvar COLUMN_LABEL_BASE_LENGTH = COLUMN_LABEL_BASE.length;\n/**\n * Convert column label to index.\n *\n * @param {String} label Column label (eq. 'ABB', 'CNQ')\n * @returns {Number} Returns -1 if label is not recognized otherwise proper column index.\n */\n\nexport function columnLabelToIndex(label) {\n  var result = 0;\n\n  if (typeof label === 'string') {\n    label = label.toUpperCase();\n\n    for (var i = 0, j = label.length - 1; i < label.length; i += 1, j -= 1) {\n      result += Math.pow(COLUMN_LABEL_BASE_LENGTH, j) * (COLUMN_LABEL_BASE.indexOf(label[i]) + 1);\n    }\n  }\n\n  --result;\n  return result;\n}\n/**\n * Convert column index to label.\n *\n * @param {Number} column Column index.\n * @returns {String} Returns column label (eq. 'ABB', 'CNQ').\n */\n\nexport function columnIndexToLabel(column) {\n  var result = '';\n\n  while (column >= 0) {\n    result = String.fromCharCode(column % COLUMN_LABEL_BASE_LENGTH + 97) + result;\n    column = Math.floor(column / COLUMN_LABEL_BASE_LENGTH) - 1;\n  }\n\n  return result.toUpperCase();\n}\nvar LABEL_EXTRACT_REGEXP = /^([$])?([A-Za-z]+)([$])?([0-9]+)$/;\n/**\n * Extract cell coordinates.\n *\n * @param {String} label Cell coordinates (eq. 'A1', '$B6', '$N$98').\n * @returns {Array} Returns an array of objects.\n */\n\nexport function extractLabel(label) {\n  if (typeof label !== 'string' || !LABEL_EXTRACT_REGEXP.test(label)) {\n    return [];\n  }\n\n  var _label$toUpperCase$ma = label.toUpperCase().match(LABEL_EXTRACT_REGEXP),\n      _label$toUpperCase$ma2 = _slicedToArray(_label$toUpperCase$ma, 5),\n      columnAbs = _label$toUpperCase$ma2[1],\n      column = _label$toUpperCase$ma2[2],\n      rowAbs = _label$toUpperCase$ma2[3],\n      row = _label$toUpperCase$ma2[4];\n\n  return [{\n    index: rowLabelToIndex(row),\n    label: row,\n    isAbsolute: rowAbs === '$'\n  }, {\n    index: columnLabelToIndex(column),\n    label: column,\n    isAbsolute: columnAbs === '$'\n  }];\n}\n/**\n * Convert row and column indexes into cell label.\n *\n * @param {Object} row Object with `index` and `isAbsolute` properties.\n * @param {Object} column Object with `index` and `isAbsolute` properties.\n * @returns {String} Returns cell label.\n */\n\nexport function toLabel(row, column) {\n  var rowLabel = (row.isAbsolute ? '$' : '') + rowIndexToLabel(row.index);\n  var columnLabel = (column.isAbsolute ? '$' : '') + columnIndexToLabel(column.index);\n  return columnLabel + rowLabel;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Emitter from 'tiny-emitter';\nimport evaluateByOperator from \"./evaluate-by-operator/evaluate-by-operator.mjs\";\nimport { Parser as GrammarParser } from \"./grammar-parser/grammar-parser.mjs\";\nimport { trimEdges } from \"./helper/string.mjs\";\nimport { toNumber, invertNumber } from \"./helper/number.mjs\";\nimport errorParser, { isValidStrict as isErrorValid, ERROR, ERROR_NAME } from \"./error.mjs\";\nimport { extractLabel, toLabel } from \"./helper/cell.mjs\";\n/**\n * @class Parser\n */\n\nvar Parser = /*#__PURE__*/function (_Emitter) {\n  _inherits(Parser, _Emitter);\n\n  var _super = _createSuper(Parser);\n\n  function Parser() {\n    var _this;\n\n    _classCallCheck(this, Parser);\n\n    _this = _super.call(this);\n    _this.parser = new GrammarParser();\n    _this.parser.yy = {\n      toNumber: toNumber,\n      trimEdges: trimEdges,\n      invertNumber: invertNumber,\n      throwError: function throwError(errorName) {\n        return _this._throwError(errorName);\n      },\n      callVariable: function callVariable(variable) {\n        return _this._callVariable(variable);\n      },\n      evaluateByOperator: evaluateByOperator,\n      callFunction: function callFunction(name, params) {\n        return _this._callFunction(name, params);\n      },\n      cellValue: function cellValue(value) {\n        return _this._callCellValue(value);\n      },\n      rangeValue: function rangeValue(start, end) {\n        return _this._callRangeValue(start, end);\n      }\n    };\n    _this.variables = Object.create(null);\n    _this.functions = Object.create(null);\n\n    _this.setVariable('TRUE', true).setVariable('FALSE', false).setVariable('NULL', null);\n\n    return _this;\n  }\n  /**\n   * Parse formula expression.\n   *\n   * @param {String} expression to parse.\n   * @return {*} Returns an object with tow properties `error` and `result`.\n   */\n\n\n  _createClass(Parser, [{\n    key: \"parse\",\n    value: function parse(expression) {\n      var result = null;\n      var error = null;\n\n      try {\n        if (expression === '') {\n          result = '';\n        } else {\n          result = this.parser.parse(expression);\n        }\n      } catch (ex) {\n        var message = errorParser(ex.message);\n\n        if (message) {\n          error = message;\n        } else {\n          error = errorParser(ERROR);\n        }\n      }\n\n      if (result instanceof Error) {\n        error = errorParser(result.message) || errorParser(ERROR);\n        result = null;\n      }\n\n      return {\n        error: error,\n        result: result\n      };\n    }\n    /**\n     * Set predefined variable name which can be visible while parsing formula expression.\n     *\n     * @param {String} name Variable name.\n     * @param {*} value Variable value.\n     * @returns {Parser}\n     */\n\n  }, {\n    key: \"setVariable\",\n    value: function setVariable(name, value) {\n      this.variables[name] = value;\n      return this;\n    }\n    /**\n     * Get variable name.\n     *\n     * @param {String} name Variable name.\n     * @returns {*}\n     */\n\n  }, {\n    key: \"getVariable\",\n    value: function getVariable(name) {\n      return this.variables[name];\n    }\n    /**\n     * Retrieve variable value by its name.\n     *\n     * @param name Variable name.\n     * @returns {*}\n     * @private\n     */\n\n  }, {\n    key: \"_callVariable\",\n    value: function _callVariable(name) {\n      var value = this.getVariable(name);\n      this.emit('callVariable', name, function (newValue) {\n        if (newValue !== void 0) {\n          value = newValue;\n        }\n      });\n\n      if (value === void 0) {\n        throw Error(ERROR_NAME);\n      }\n\n      return value;\n    }\n    /**\n     * Set custom function which can be visible while parsing formula expression.\n     *\n     * @param {String} name Custom function name.\n     * @param {Function} fn Custom function.\n     * @returns {Parser}\n     */\n\n  }, {\n    key: \"setFunction\",\n    value: function setFunction(name, fn) {\n      this.functions[name] = fn;\n      return this;\n    }\n    /**\n     * Get custom function.\n     *\n     * @param {String} name Custom function name.\n     * @returns {*}\n     */\n\n  }, {\n    key: \"getFunction\",\n    value: function getFunction(name) {\n      return this.functions[name];\n    }\n    /**\n     * Call function with provided params.\n     *\n     * @param name Function name.\n     * @param params Function params.\n     * @returns {*}\n     * @private\n     */\n\n  }, {\n    key: \"_callFunction\",\n    value: function _callFunction(name) {\n      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var fn = this.getFunction(name);\n      var value;\n\n      if (fn) {\n        value = fn(params);\n      }\n\n      this.emit('callFunction', name, params, function (newValue) {\n        if (newValue !== void 0) {\n          value = newValue;\n        }\n      });\n      return value === void 0 ? evaluateByOperator(name, params) : value;\n    }\n    /**\n     * Retrieve value by its label (`B3`, `B$3`, `B$3`, `$B$3`).\n     *\n     * @param {String} label Coordinates.\n     * @returns {*}\n     * @private\n     */\n\n  }, {\n    key: \"_callCellValue\",\n    value: function _callCellValue(label) {\n      label = label.toUpperCase();\n\n      var _extractLabel = extractLabel(label),\n          _extractLabel2 = _slicedToArray(_extractLabel, 2),\n          row = _extractLabel2[0],\n          column = _extractLabel2[1];\n\n      var value = void 0;\n      this.emit('callCellValue', {\n        label: label,\n        row: row,\n        column: column\n      }, function (_value) {\n        value = _value;\n      });\n      return value;\n    }\n    /**\n     * Retrieve value by its label (`B3:A1`, `B$3:A1`, `B$3:$A1`, `$B$3:A$1`).\n     *\n     * @param {String} startLabel Coordinates of the first cell.\n     * @param {String} endLabel Coordinates of the last cell.\n     * @returns {Array} Returns an array of mixed values.\n     * @private\n     */\n\n  }, {\n    key: \"_callRangeValue\",\n    value: function _callRangeValue(startLabel, endLabel) {\n      startLabel = startLabel.toUpperCase();\n      endLabel = endLabel.toUpperCase();\n\n      var _extractLabel3 = extractLabel(startLabel),\n          _extractLabel4 = _slicedToArray(_extractLabel3, 2),\n          startRow = _extractLabel4[0],\n          startColumn = _extractLabel4[1];\n\n      var _extractLabel5 = extractLabel(endLabel),\n          _extractLabel6 = _slicedToArray(_extractLabel5, 2),\n          endRow = _extractLabel6[0],\n          endColumn = _extractLabel6[1];\n\n      var startCell = {};\n      var endCell = {};\n\n      if (startRow.index <= endRow.index) {\n        startCell.row = startRow;\n        endCell.row = endRow;\n      } else {\n        startCell.row = endRow;\n        endCell.row = startRow;\n      }\n\n      if (startColumn.index <= endColumn.index) {\n        startCell.column = startColumn;\n        endCell.column = endColumn;\n      } else {\n        startCell.column = endColumn;\n        endCell.column = startColumn;\n      }\n\n      startCell.label = toLabel(startCell.row, startCell.column);\n      endCell.label = toLabel(endCell.row, endCell.column);\n      var value = [];\n      this.emit('callRangeValue', startCell, endCell, function () {\n        var _value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n        value = _value;\n      });\n      return value;\n    }\n    /**\n     * Try to throw error by its name.\n     *\n     * @param {String} errorName Error name.\n     * @returns {String}\n     * @private\n     */\n\n  }, {\n    key: \"_throwError\",\n    value: function _throwError(errorName) {\n      if (isErrorValid(errorName)) {\n        throw Error(errorName);\n      }\n\n      throw Error(ERROR);\n    }\n  }]);\n\n  return Parser;\n}(Emitter);\n\nexport default Parser;","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  node.offsetHeight;\n}","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar baseLocationService_1 = require(\"./baseLocationService\");\nvar common_1 = require(\"../common\");\n/**\n * A `LocationServices` that gets/sets the current location using the browser's `location` and `history` apis\n *\n * Uses `history.pushState` and `history.replaceState`\n */\nvar PushStateLocationService = /** @class */ (function (_super) {\n    __extends(PushStateLocationService, _super);\n    function PushStateLocationService(router) {\n        var _this = _super.call(this, router, true) || this;\n        _this._config = router.urlService.config;\n        common_1.root.addEventListener('popstate', _this._listener, false);\n        return _this;\n    }\n    /**\n     * Gets the base prefix without:\n     * - trailing slash\n     * - trailing filename\n     * - protocol and hostname\n     *\n     * If <base href='/base/'>, this returns '/base'.\n     * If <base href='/foo/base/'>, this returns '/foo/base'.\n     * If <base href='/base/index.html'>, this returns '/base'.\n     * If <base href='http://localhost:8080/base/index.html'>, this returns '/base'.\n     * If <base href='/base'>, this returns ''.\n     * If <base href='http://localhost:8080'>, this returns ''.\n     * If <base href='http://localhost:8080/'>, this returns ''.\n     *\n     * See: https://html.spec.whatwg.org/dev/semantics.html#the-base-element\n     */\n    PushStateLocationService.prototype._getBasePrefix = function () {\n        return common_1.stripLastPathElement(this._config.baseHref());\n    };\n    PushStateLocationService.prototype._get = function () {\n        var _a = this._location, pathname = _a.pathname, hash = _a.hash, search = _a.search;\n        search = common_1.splitQuery(search)[1]; // strip ? if found\n        hash = common_1.splitHash(hash)[1]; // strip # if found\n        var basePrefix = this._getBasePrefix();\n        var exactBaseHrefMatch = pathname === this._config.baseHref();\n        var startsWithBase = pathname.substr(0, basePrefix.length) === basePrefix;\n        pathname = exactBaseHrefMatch ? '/' : startsWithBase ? pathname.substring(basePrefix.length) : pathname;\n        return pathname + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n    };\n    PushStateLocationService.prototype._set = function (state, title, url, replace) {\n        var basePrefix = this._getBasePrefix();\n        var slash = url && url[0] !== '/' ? '/' : '';\n        var fullUrl = (url === '' || url === '/') ? this._config.baseHref() : basePrefix + slash + url;\n        if (replace) {\n            this._history.replaceState(state, title, fullUrl);\n        }\n        else {\n            this._history.pushState(state, title, fullUrl);\n        }\n    };\n    PushStateLocationService.prototype.dispose = function (router) {\n        _super.prototype.dispose.call(this, router);\n        common_1.root.removeEventListener('popstate', this._listener);\n    };\n    return PushStateLocationService;\n}(baseLocationService_1.BaseLocationServices));\nexports.PushStateLocationService = PushStateLocationService;\n//# sourceMappingURL=pushStateLocationService.js.map","'use strict';\n\n/**\n* FUNCTION: isArray( value )\n*\tValidates if a value is an array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an array\n*/\nfunction isArray( value ) {\n\treturn Object.prototype.toString.call( value ) === '[object Array]';\n} // end FUNCTION isArray()\n\n// EXPORTS //\n\nmodule.exports = Array.isArray || isArray;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex =\n            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (($schema || $isData) && it.opts.uniqueItems !== false) {\n    if ($isData) {\n      out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n    }\n    out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n    var $itemType = it.schema.items && it.schema.items.type,\n      $typeIsArray = Array.isArray($itemType);\n    if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n      out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n    } else {\n      out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n      var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n      out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; ';\n      if ($typeIsArray) {\n        out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n      }\n      out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n    }\n    out += ' } ';\n    if ($isData) {\n      out += '  }  ';\n    }\n    out += ' if (!' + ($valid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema:  ';\n        if ($isData) {\n          out += 'validate.schema' + ($schemaPath);\n        } else {\n          out += '' + ($schema);\n        }\n        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.with');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toObject = require('../internals/to-object');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar push = uncurryThis([].push);\nvar join = uncurryThis([].join);\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n  raw: function raw(template) {\n    var rawTemplate = toIndexedObject(toObject(template).raw);\n    var literalSegments = lengthOfArrayLike(rawTemplate);\n    if (!literalSegments) return '';\n    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (true) {\n      push(elements, toString(rawTemplate[i++]));\n      if (i === literalSegments) return join(elements, '');\n      if (i < argumentsLength) push(elements, toString(arguments[i]));\n    }\n  }\n});\n","'use strict';\nrequire('../../modules/es.date.get-year');\nrequire('../../modules/es.date.now');\nrequire('../../modules/es.date.set-year');\nrequire('../../modules/es.date.to-gmt-string');\nrequire('../../modules/es.date.to-iso-string');\nrequire('../../modules/es.date.to-json');\nrequire('../../modules/es.date.to-string');\nrequire('../../modules/es.date.to-primitive');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Date;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\nvar setSimulcastInMediaSection = require('./simulcast');\nvar ptToFixedBitrateAudioCodecName = {\n    0: 'PCMU',\n    8: 'PCMA'\n};\n/**\n * A payload type\n * @typedef {number} PT\n */\n/**\n * An {@link AudioCodec} or {@link VideoCodec}\n * @typedef {AudioCodec|VideoCodec} Codec\n */\n/**\n * Create a Codec Map for the given m= section.\n * @param {string} section - The given m= section\n * @returns {Map<Codec, Array<PT>>}\n */\nfunction createCodecMapForMediaSection(section) {\n    return Array.from(createPtToCodecName(section)).reduce(function (codecMap, pair) {\n        var pt = pair[0];\n        var codecName = pair[1];\n        var pts = codecMap.get(codecName) || [];\n        return codecMap.set(codecName, pts.concat(pt));\n    }, new Map());\n}\n/**\n * Create a Map of MIDs to m= sections for the given SDP.\n * @param {string} sdp\n * @returns {Map<string, string>}\n */\nfunction createMidToMediaSectionMap(sdp) {\n    return getMediaSections(sdp).reduce(function (midsToMediaSections, mediaSection) {\n        var mid = getMidForMediaSection(mediaSection);\n        return mid ? midsToMediaSections.set(mid, mediaSection) : midsToMediaSections;\n    }, new Map());\n}\n/**\n * Create a Map from PTs to codec names for the given m= section.\n * @param {string} mediaSection - The given m= section.\n * @returns {Map<PT, Codec>} ptToCodecName\n */\nfunction createPtToCodecName(mediaSection) {\n    return getPayloadTypesInMediaSection(mediaSection).reduce(function (ptToCodecName, pt) {\n        var rtpmapPattern = new RegExp(\"a=rtpmap:\" + pt + \" ([^/]+)\");\n        var matches = mediaSection.match(rtpmapPattern);\n        var codecName = matches\n            ? matches[1].toLowerCase()\n            : ptToFixedBitrateAudioCodecName[pt]\n                ? ptToFixedBitrateAudioCodecName[pt].toLowerCase()\n                : '';\n        return ptToCodecName.set(pt, codecName);\n    }, new Map());\n}\n/**\n * Get the associated fmtp attributes for the given Payload Type in an m= section.\n * @param {PT} pt\n * @param {string} mediaSection\n * @returns {?object}\n */\nfunction getFmtpAttributesForPt(pt, mediaSection) {\n    // In \"a=fmtp:<pt> <name>=<value>[;<name>=<value>]*\", the regex matches the codec\n    // profile parameters expressed as name/value pairs separated by \";\".\n    var fmtpRegex = new RegExp(\"^a=fmtp:\" + pt + \" (.+)$\", 'm');\n    var matches = mediaSection.match(fmtpRegex);\n    return matches && matches[1].split(';').reduce(function (attrs, nvPair) {\n        var _a = __read(nvPair.split('='), 2), name = _a[0], value = _a[1];\n        attrs[name] = isNaN(value) ? value : parseInt(value, 10);\n        return attrs;\n    }, {});\n}\n/**\n * Get the MID for the given m= section.\n * @param {string} mediaSection\n * @return {?string}\n */\nfunction getMidForMediaSection(mediaSection) {\n    // In \"a=mid:<mid>\", the regex matches <mid>.\n    var midMatches = mediaSection.match(/^a=mid:(.+)$/m);\n    return midMatches && midMatches[1];\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - SDP string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n    return sdp.replace(/\\r\\n\\r\\n$/, '\\r\\n').split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\" + mediaSection; }).filter(function (mediaSection) {\n        var kindPattern = new RegExp(\"m=\" + (kind || '.*'), 'gm');\n        var directionPattern = new RegExp(\"a=\" + (direction || '.*'), 'gm');\n        return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n    });\n}\n/**\n * Get the Codec Payload Types present in the first line of the given m= section\n * @param {string} section - The m= section\n * @returns {Array<PT>} Payload Types\n */\nfunction getPayloadTypesInMediaSection(section) {\n    var mLine = section.split('\\r\\n')[0];\n    // In \"m=<kind> <port> <proto> <payload_type_1> <payload_type_2> ... <payload_type_n>\",\n    // the regex matches <port> and the Payload Types.\n    var matches = mLine.match(/([0-9]+)/g);\n    // This should not happen, but in case there are no Payload Types in\n    // the m= line, return an empty array.\n    if (!matches) {\n        return [];\n    }\n    // Since only the Payload Types are needed, we discard the <port>.\n    return matches.slice(1).map(function (match) { return parseInt(match, 10); });\n}\n/**\n * Create the reordered Codec Payload Types based on the preferred Codec Names.\n * @param {Map<Codec, Array<PT>>} codecMap - Codec Map\n * @param {Array<AudioCodecSettings|VideoCodecSettings>} preferredCodecs - Preferred Codecs\n * @returns {Array<PT>} Reordered Payload Types\n */\nfunction getReorderedPayloadTypes(codecMap, preferredCodecs) {\n    preferredCodecs = preferredCodecs.map(function (_a) {\n        var codec = _a.codec;\n        return codec.toLowerCase();\n    });\n    var preferredPayloadTypes = flatMap(preferredCodecs, function (codecName) { return codecMap.get(codecName) || []; });\n    var remainingCodecs = difference(Array.from(codecMap.keys()), preferredCodecs);\n    var remainingPayloadTypes = flatMap(remainingCodecs, function (codecName) { return codecMap.get(codecName); });\n    return preferredPayloadTypes.concat(remainingPayloadTypes);\n}\n/**\n * Set the given Codec Payload Types in the first line of the given m= section.\n * @param {Array<PT>} payloadTypes - Payload Types\n * @param {string} section - Given m= section\n * @returns {string} - Updated m= section\n */\nfunction setPayloadTypesInMediaSection(payloadTypes, section) {\n    var lines = section.split('\\r\\n');\n    var mLine = lines[0];\n    var otherLines = lines.slice(1);\n    mLine = mLine.replace(/([0-9]+\\s?)+$/, payloadTypes.join(' '));\n    return [mLine].concat(otherLines).join('\\r\\n');\n}\n/**\n * Return a new SDP string with the re-ordered codec preferences.\n * @param {string} sdp\n * @param {Array<AudioCodec>} preferredAudioCodecs - If empty, the existing order\n *   of audio codecs is preserved\n * @param {Array<VideoCodecSettings>} preferredVideoCodecs - If empty, the\n *   existing order of video codecs is preserved\n * @returns {string} Updated SDP string\n */\nfunction setCodecPreferences(sdp, preferredAudioCodecs, preferredVideoCodecs) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        // Codec preferences should not be applied to m=application sections.\n        if (!/^m=(audio|video)/.test(section)) {\n            return section;\n        }\n        var kind = section.match(/^m=(audio|video)/)[1];\n        var codecMap = createCodecMapForMediaSection(section);\n        var preferredCodecs = kind === 'audio' ? preferredAudioCodecs : preferredVideoCodecs;\n        var payloadTypes = getReorderedPayloadTypes(codecMap, preferredCodecs);\n        var newSection = setPayloadTypesInMediaSection(payloadTypes, section);\n        var pcmaPayloadTypes = codecMap.get('pcma') || [];\n        var pcmuPayloadTypes = codecMap.get('pcmu') || [];\n        var fixedBitratePayloadTypes = kind === 'audio'\n            ? new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes))\n            : new Set();\n        return fixedBitratePayloadTypes.has(payloadTypes[0])\n            ? newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g, '')\n            : newSection;\n    })).join('\\r\\n');\n}\n/**\n * Return a new SDP string with simulcast settings.\n * @param {string} sdp\n * @param {Map<Track.ID, TrackAttributes>} trackIdsToAttributes\n * @returns {string} Updated SDP string\n */\nfunction setSimulcast(sdp, trackIdsToAttributes) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        section = section.replace(/\\r\\n$/, '');\n        if (!/^m=video/.test(section)) {\n            return section;\n        }\n        var codecMap = createCodecMapForMediaSection(section);\n        var payloadTypes = getPayloadTypesInMediaSection(section);\n        var vp8PayloadTypes = new Set(codecMap.get('vp8') || []);\n        var hasVP8PayloadType = payloadTypes.some(function (payloadType) { return vp8PayloadTypes.has(payloadType); });\n        return hasVP8PayloadType\n            ? setSimulcastInMediaSection(section, trackIdsToAttributes)\n            : section;\n    })).concat('').join('\\r\\n');\n}\n/**\n * Get the matching Payload Types in an m= section for a particular peer codec.\n * @param {Codec} peerCodec\n * @param {PT} peerPt\n * @param {Map<Codec, PT>} codecsToPts\n * @param {string} section\n * @param {string} peerSection\n * @returns {Array<PT>}\n */\nfunction getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection) {\n    // If there is at most one local Payload Type that matches the remote codec, retain it.\n    var matchingPts = codecsToPts.get(peerCodec) || [];\n    if (matchingPts.length <= 1) {\n        return matchingPts;\n    }\n    // If there are no fmtp attributes for the codec in the peer m= section, then we\n    // cannot get a match in the  m= section. In that case, retain all matching Payload\n    // Types.\n    var peerFmtpAttrs = getFmtpAttributesForPt(peerPt, peerSection);\n    if (!peerFmtpAttrs) {\n        return matchingPts;\n    }\n    // Among the matched local Payload Types, find the one that matches the remote\n    // fmtp attributes.\n    var matchingPt = matchingPts.find(function (pt) {\n        var fmtpAttrs = getFmtpAttributesForPt(pt, section);\n        return fmtpAttrs && Object.keys(peerFmtpAttrs).every(function (attr) {\n            return peerFmtpAttrs[attr] === fmtpAttrs[attr];\n        });\n    });\n    // If none of the matched Payload Types also have matching fmtp attributes,\n    // then retain all of them, otherwise retain only the Payload Type that\n    // matches the peer fmtp attributes.\n    return typeof matchingPt === 'number' ? [matchingPt] : matchingPts;\n}\n/**\n * Filter codecs in an m= section based on its peer m= section from the other peer.\n * @param {string} section\n * @param {Map<string, string>} peerMidsToMediaSections\n * @param {Array<string>} codecsToRemove\n * @returns {string}\n */\nfunction filterCodecsInMediaSection(section, peerMidsToMediaSections, codecsToRemove) {\n    // Do nothing if the m= section represents neither audio nor video.\n    if (!/^m=(audio|video)/.test(section)) {\n        return section;\n    }\n    // Do nothing if the m= section does not have an equivalent remote m= section.\n    var mid = getMidForMediaSection(section);\n    var peerSection = mid && peerMidsToMediaSections.get(mid);\n    if (!peerSection) {\n        return section;\n    }\n    // Construct a Map of the peer Payload Types to their codec names.\n    var peerPtToCodecs = createPtToCodecName(peerSection);\n    // Construct a Map of the codec names to their Payload Types.\n    var codecsToPts = createCodecMapForMediaSection(section);\n    // Maintain a list of non-rtx Payload Types to retain.\n    var pts = flatMap(Array.from(peerPtToCodecs), function (_a) {\n        var _b = __read(_a, 2), peerPt = _b[0], peerCodec = _b[1];\n        return peerCodec !== 'rtx' && !codecsToRemove.includes(peerCodec)\n            ? getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection)\n            : [];\n    });\n    // For each Payload Type that will be retained, retain their corresponding rtx\n    // Payload Type if present.\n    var rtxPts = codecsToPts.get('rtx') || [];\n    // In \"a=fmtp:<rtxPt> apt=<apt>\", extract the codec PT <apt> associated with rtxPt.\n    pts = pts.concat(rtxPts.filter(function (rtxPt) {\n        var fmtpAttrs = getFmtpAttributesForPt(rtxPt, section);\n        return fmtpAttrs && pts.includes(fmtpAttrs.apt);\n    }));\n    // Filter out the below mentioned attribute lines in the m= section that do not\n    // belong to one of the Payload Types that are to be retained.\n    // 1. \"a=rtpmap:<pt> <codec>\"\n    // 2. \"a=rtcp-fb:<pt> <attr>[ <attr>]*\"\n    // 3. \"a=fmtp:<pt> <name>=<value>[;<name>=<value>]*\"\n    var lines = section.split('\\r\\n').filter(function (line) {\n        var ptMatches = line.match(/^a=(rtpmap|fmtp|rtcp-fb):(.+) .+$/);\n        var pt = ptMatches && ptMatches[2];\n        return !ptMatches || (pt && pts.includes(parseInt(pt, 10)));\n    });\n    // Filter the list of Payload Types in the first line of the m= section.\n    var orderedPts = getPayloadTypesInMediaSection(section).filter(function (pt) { return pts.includes(pt); });\n    return setPayloadTypesInMediaSection(orderedPts, lines.join('\\r\\n'));\n}\n/**\n * Filter local codecs based on the remote SDP.\n * @param {string} localSdp\n * @param {string} remoteSdp\n * @returns {string} - Updated local SDP\n */\nfunction filterLocalCodecs(localSdp, remoteSdp) {\n    var localMediaSections = getMediaSections(localSdp);\n    var localSession = localSdp.split('\\r\\nm=')[0];\n    var remoteMidsToMediaSections = createMidToMediaSectionMap(remoteSdp);\n    return [localSession].concat(localMediaSections.map(function (localSection) {\n        return filterCodecsInMediaSection(localSection, remoteMidsToMediaSections, []);\n    })).join('\\r\\n');\n}\n/**\n * Return a new SDP string after reverting simulcast for non vp8 sections in remote sdp.\n * @param localSdp - simulcast enabled local sdp\n * @param localSdpWithoutSimulcast - local sdp before simulcast was set\n * @param remoteSdp - remote sdp\n * @param revertForAll - when true simulcast will be reverted for all codecs. when false it will be reverted\n *  only for non-vp8 codecs.\n * @return {string} Updated SDP string\n */\nfunction revertSimulcast(localSdp, localSdpWithoutSimulcast, remoteSdp, revertForAll) {\n    if (revertForAll === void 0) { revertForAll = false; }\n    var remoteMidToMediaSections = createMidToMediaSectionMap(remoteSdp);\n    var localMidToMediaSectionsWithoutSimulcast = createMidToMediaSectionMap(localSdpWithoutSimulcast);\n    var mediaSections = getMediaSections(localSdp);\n    var session = localSdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        section = section.replace(/\\r\\n$/, '');\n        if (!/^m=video/.test(section)) {\n            return section;\n        }\n        var midMatches = section.match(/^a=mid:(.+)$/m);\n        var mid = midMatches && midMatches[1];\n        if (!mid) {\n            return section;\n        }\n        var remoteSection = remoteMidToMediaSections.get(mid);\n        var remotePtToCodecs = createPtToCodecName(remoteSection);\n        var remotePayloadTypes = getPayloadTypesInMediaSection(remoteSection);\n        var isVP8ThePreferredCodec = remotePayloadTypes.length && remotePtToCodecs.get(remotePayloadTypes[0]) === 'vp8';\n        var shouldRevertSimulcast = revertForAll || !isVP8ThePreferredCodec;\n        return shouldRevertSimulcast ? localMidToMediaSectionsWithoutSimulcast.get(mid).replace(/\\r\\n$/, '') : section;\n    })).concat('').join('\\r\\n');\n}\n/**\n * Add or rewrite MSIDs for new m= sections in the given SDP with their corresponding\n * local MediaStreamTrack IDs. These can be different when previously removed MediaStreamTracks\n * are added back (or Track IDs may not be present in the SDPs at all once browsers implement\n * the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map<string, Track.ID>} activeMidsToTrackIds\n * @param {Map<Track.Kind, Array<Track.ID>>} trackIdsByKind\n * @returns {string}\n */\nfunction addOrRewriteNewTrackIds(sdp, activeMidsToTrackIds, trackIdsByKind) {\n    // NOTE(mmalavalli): The m= sections for the new MediaStreamTracks are usually\n    // present after the m= sections for the existing MediaStreamTracks, in order\n    // of addition.\n    var newMidsToTrackIds = Array.from(trackIdsByKind).reduce(function (midsToTrackIds, _a) {\n        var _b = __read(_a, 2), kind = _b[0], trackIds = _b[1];\n        var mediaSections = getMediaSections(sdp, kind, 'send(only|recv)');\n        var newMids = mediaSections.map(getMidForMediaSection).filter(function (mid) { return !activeMidsToTrackIds.has(mid); });\n        newMids.forEach(function (mid, i) { return midsToTrackIds.set(mid, trackIds[i]); });\n        return midsToTrackIds;\n    }, new Map());\n    return addOrRewriteTrackIds(sdp, newMidsToTrackIds);\n}\n/**\n * Add or rewrite MSIDs in the given SDP with their corresponding local MediaStreamTrack IDs.\n * These IDs need not be the same (or Track IDs may not be present in the SDPs at all once\n * browsers implement the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map<string, Track.ID>} midsToTrackIds\n * @returns {string}\n */\nfunction addOrRewriteTrackIds(sdp, midsToTrackIds) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (mediaSection) {\n        // Do nothing if the m= section represents neither audio nor video.\n        if (!/^m=(audio|video)/.test(mediaSection)) {\n            return mediaSection;\n        }\n        // This shouldn't happen, but in case there is no MID for the m= section, do nothing.\n        var mid = getMidForMediaSection(mediaSection);\n        if (!mid) {\n            return mediaSection;\n        }\n        // In case there is no Track ID for the given MID in the map, do nothing.\n        var trackId = midsToTrackIds.get(mid);\n        if (!trackId) {\n            return mediaSection;\n        }\n        // This shouldn't happen, but in case there is no a=msid: line, do nothing.\n        var attributes = (mediaSection.match(/^a=msid:(.+)$/m) || [])[1];\n        if (!attributes) {\n            return mediaSection;\n        }\n        // If the a=msid: line contains the \"appdata\" field, then replace it with the Track ID,\n        // otherwise append the Track ID.\n        var _a = __read(attributes.split(' '), 2), msid = _a[0], trackIdToRewrite = _a[1];\n        var msidRegex = new RegExp(\"msid:\" + msid + (trackIdToRewrite ? \" \" + trackIdToRewrite : '') + \"$\", 'gm');\n        return mediaSection.replace(msidRegex, \"msid:\" + msid + \" \" + trackId);\n    })).join('\\r\\n');\n}\n/**\n * Removes specified ssrc attributes from given sdp.\n * @param {string} sdp\n * @param {Array<string>} ssrcAttributesToRemove\n * @returns {string}\n */\nfunction removeSSRCAttributes(sdp, ssrcAttributesToRemove) {\n    return sdp.split('\\r\\n').filter(function (line) {\n        return !ssrcAttributesToRemove.find(function (srcAttribute) { return new RegExp('a=ssrc:.*' + srcAttribute + ':', 'g').test(line); });\n    }).join('\\r\\n');\n}\n/**\n * Disable RTX in a given sdp.\n * @param {string} sdp\n * @returns {string} sdp without RTX\n */\nfunction disableRtx(sdp) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (mediaSection) {\n        // Do nothing if the m= section does not represent a video track.\n        if (!/^m=video/.test(mediaSection)) {\n            return mediaSection;\n        }\n        // Create a map of codecs to payload types.\n        var codecsToPts = createCodecMapForMediaSection(mediaSection);\n        // Get the RTX payload types.\n        var rtxPts = codecsToPts.get('rtx');\n        // Do nothing if there are no RTX payload types.\n        if (!rtxPts) {\n            return mediaSection;\n        }\n        // Remove the RTX payload types.\n        var pts = new Set(getPayloadTypesInMediaSection(mediaSection));\n        rtxPts.forEach(function (rtxPt) { return pts.delete(rtxPt); });\n        // Get the RTX SSRC.\n        var rtxSSRCMatches = mediaSection.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/);\n        var rtxSSRC = rtxSSRCMatches && rtxSSRCMatches[1];\n        // Remove the following lines associated with the RTX payload types:\n        // 1. \"a=fmtp:<rtxPt> apt=<pt>\"\n        // 2. \"a=rtpmap:<rtxPt> rtx/...\"\n        // 3. \"a=ssrc:<rtxSSRC> cname:...\"\n        // 4. \"a=ssrc-group:FID <SSRC> <rtxSSRC>\"\n        var filterRegexes = [\n            /^a=fmtp:.+ apt=.+$/,\n            /^a=rtpmap:.+ rtx\\/.+$/,\n            /^a=ssrc-group:.+$/\n        ].concat(rtxSSRC\n            ? [new RegExp(\"^a=ssrc:\" + rtxSSRC + \" .+$\")]\n            : []);\n        mediaSection = mediaSection.split('\\r\\n')\n            .filter(function (line) { return filterRegexes.every(function (regex) { return !regex.test(line); }); })\n            .join('\\r\\n');\n        // Reconstruct the m= section without the RTX payload types.\n        return setPayloadTypesInMediaSection(Array.from(pts), mediaSection);\n    })).join('\\r\\n');\n}\n/**\n * Generate an a=fmtp: line from the given payload type and attributes.\n * @param {PT} pt\n * @param {*} fmtpAttrs\n * @returns {string}\n */\nfunction generateFmtpLineFromPtAndAttributes(pt, fmtpAttrs) {\n    var serializedFmtpAttrs = Object.entries(fmtpAttrs).map(function (_a) {\n        var _b = __read(_a, 2), name = _b[0], value = _b[1];\n        return name + \"=\" + value;\n    }).join(';');\n    return \"a=fmtp:\" + pt + \" \" + serializedFmtpAttrs;\n}\n/**\n * Enable DTX for opus in the m= sections for the given MIDs.`\n * @param {string} sdp\n * @param {Array<string>} [mids] - If not specified, enables opus DTX for all\n *   audio m= lines.\n * @returns {string}\n */\nfunction enableDtxForOpus(sdp, mids) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    mids = mids || mediaSections\n        .filter(function (section) { return /^m=audio/.test(section); })\n        .map(getMidForMediaSection);\n    return [session].concat(mediaSections.map(function (section) {\n        // Do nothing if the m= section is not audio.\n        if (!/^m=audio/.test(section)) {\n            return section;\n        }\n        // Build a map codecs to payload types.\n        var codecsToPts = createCodecMapForMediaSection(section);\n        // Do nothing if a payload type for opus does not exist.\n        var opusPt = codecsToPts.get('opus');\n        if (!opusPt) {\n            return section;\n        }\n        // If no fmtp attributes are found for opus, do nothing.\n        var opusFmtpAttrs = getFmtpAttributesForPt(opusPt, section);\n        if (!opusFmtpAttrs) {\n            return section;\n        }\n        // Add usedtx=1 to the a=fmtp: line for opus.\n        var origOpusFmtpLine = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n        var origOpusFmtpRegex = new RegExp(origOpusFmtpLine);\n        // If the m= section's MID is in the list of MIDs, then enable dtx. Otherwise disable it.\n        var mid = getMidForMediaSection(section);\n        if (mids.includes(mid)) {\n            opusFmtpAttrs.usedtx = 1;\n        }\n        else {\n            delete opusFmtpAttrs.usedtx;\n        }\n        var opusFmtpLineWithDtx = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n        return section.replace(origOpusFmtpRegex, opusFmtpLineWithDtx);\n    })).join('\\r\\n');\n}\nexports.addOrRewriteNewTrackIds = addOrRewriteNewTrackIds;\nexports.addOrRewriteTrackIds = addOrRewriteTrackIds;\nexports.createCodecMapForMediaSection = createCodecMapForMediaSection;\nexports.createPtToCodecName = createPtToCodecName;\nexports.disableRtx = disableRtx;\nexports.enableDtxForOpus = enableDtxForOpus;\nexports.filterLocalCodecs = filterLocalCodecs;\nexports.getMediaSections = getMediaSections;\nexports.removeSSRCAttributes = removeSSRCAttributes;\nexports.revertSimulcast = revertSimulcast;\nexports.setCodecPreferences = setCodecPreferences;\nexports.setSimulcast = setSimulcast;\n//# sourceMappingURL=index.js.map","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n      Component = _ref.Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Tag, _extends({\n      ref: ref,\n      className: classNames(className, resolvedPrefix)\n    }, props));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}","var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone:\n                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A [[TransitionHookFn]] which updates the URL after a successful transition\n *\n * Registered using `transitionService.onSuccess({}, updateUrl);`\n */\nvar updateUrl = function (transition) {\n    var options = transition.options();\n    var $state = transition.router.stateService;\n    var $urlRouter = transition.router.urlRouter;\n    // Dont update the url in these situations:\n    // The transition was triggered by a URL sync (options.source === 'url')\n    // The user doesn't want the url to update (options.location === false)\n    // The destination state, and all parents have no navigable url\n    if (options.source !== 'url' && options.location && $state.$current.navigable) {\n        var urlOptions = { replace: options.location === 'replace' };\n        $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions);\n    }\n    $urlRouter.update(true);\n};\nexports.registerUpdateUrl = function (transitionService) {\n    return transitionService.onSuccess({}, updateUrl, { priority: 9999 });\n};\n//# sourceMappingURL=url.js.map","/* globals RTCSessionDescription */\n'use strict';\nmodule.exports = RTCSessionDescription;\n//# sourceMappingURL=firefox.js.map","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n\n  return componentOrElement != null ? componentOrElement : null;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n  // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n  // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n  // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35,\n  // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36,\n  // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n  // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38,\n  // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n  // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n  // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n  // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n  // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n  // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91,\n  // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n  // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189,\n  // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n  // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n  // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n  // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n  // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n  // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n  // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n  // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n  // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n  // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n  // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n    var keyCode = e.keyCode;\n    if (e.altKey && !e.ctrlKey || e.metaKey ||\n    // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  }\n};\nexport default KeyCode;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\n\nfunction noop() {}\n\nfunction preventDefault(e) {\n  e.preventDefault();\n}\n\nvar defaultParser = function defaultParser(input) {\n  return input.replace(/[^\\w.-]+/g, '');\n};\n/**\n * When click and hold on a button - the speed of auto changin the value.\n */\n\n\nvar SPEED = 200;\n/**\n * When click and hold on a button - the delay before auto changin the value.\n */\n\nvar DELAY = 600;\n/**\n * Max Safe Integer -- on IE this is not available, so manually set the number in that case.\n * The reason this is used, instead of Infinity is because numbers above the MSI are unstable\n */\n\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\nvar isValidProps = function isValidProps(value) {\n  return value !== undefined && value !== null;\n};\n\nvar isEqual = function isEqual(oldValue, newValue) {\n  return newValue === oldValue || typeof newValue === 'number' && typeof oldValue === 'number' && isNaN(newValue) && isNaN(oldValue);\n};\n\nvar InputNumber = /*#__PURE__*/function (_React$Component) {\n  _inherits(InputNumber, _React$Component);\n\n  var _super = _createSuper(InputNumber);\n\n  function InputNumber(props) {\n    var _this;\n\n    _classCallCheck(this, InputNumber);\n\n    _this = _super.call(this, props);\n\n    _this.onKeyDown = function (e) {\n      var _this$props = _this.props,\n          onKeyDown = _this$props.onKeyDown,\n          onPressEnter = _this$props.onPressEnter,\n          keyboard = _this$props.keyboard;\n      var supportKeyCodes = [KeyCode.UP, KeyCode.DOWN];\n\n      if (keyboard !== false && supportKeyCodes.includes(e.keyCode)) {\n        // eslint-disable-next-line default-case\n        switch (e.keyCode) {\n          case KeyCode.UP:\n            {\n              var ratio = _this.getRatio(e);\n\n              _this.up(e, ratio, null);\n\n              _this.stop();\n\n              break;\n            }\n\n          case KeyCode.DOWN:\n            {\n              var _ratio = _this.getRatio(e);\n\n              _this.down(e, _ratio, null);\n\n              _this.stop();\n\n              break;\n            }\n        }\n      }\n\n      if (e.keyCode === KeyCode.ENTER) {\n        onPressEnter === null || onPressEnter === void 0 ? void 0 : onPressEnter(e);\n      } // Trigger user key down\n\n\n      _this.recordCursorPosition();\n\n      _this.lastKeyCode = e.keyCode;\n      onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n    };\n\n    _this.onKeyUp = function (e) {\n      var onKeyUp = _this.props.onKeyUp;\n\n      _this.stop();\n\n      _this.recordCursorPosition(); // Trigger user key up\n\n\n      if (onKeyUp) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        onKeyUp.apply(void 0, [e].concat(args));\n      }\n    };\n\n    _this.onChange = function (e) {\n      var onChange = _this.props.onChange;\n\n      if (_this.state.focused) {\n        _this.inputting = true;\n      }\n\n      _this.rawInput = _this.props.parser(_this.getValueFromEvent(e));\n\n      _this.setState({\n        inputValue: _this.rawInput\n      });\n\n      onChange(_this.toNumber(_this.rawInput)); // valid number or invalid string\n    };\n\n    _this.onMouseUp = function () {\n      var onMouseUp = _this.props.onMouseUp;\n\n      _this.recordCursorPosition();\n\n      if (onMouseUp) {\n        onMouseUp.apply(void 0, arguments);\n      }\n    };\n\n    _this.onFocus = function () {\n      var _this$props2;\n\n      _this.setState({\n        focused: true\n      });\n\n      (_this$props2 = _this.props).onFocus.apply(_this$props2, arguments);\n    };\n\n    _this.onBlur = function () {\n      var onBlur = _this.props.onBlur;\n      _this.inputting = false;\n\n      _this.setState({\n        focused: false\n      });\n\n      var value = _this.getCurrentValidValue(_this.state.inputValue);\n\n      var newValue = _this.setValue(value, noop);\n\n      if (onBlur) {\n        var originValue = _this.input.value;\n\n        var displayValue = _this.getInputDisplayValue({\n          focus: false,\n          value: newValue\n        });\n\n        _this.input.value = displayValue;\n        onBlur.apply(void 0, arguments);\n        _this.input.value = originValue;\n      }\n    };\n\n    _this.getRatio = function (e) {\n      var ratio = 1;\n\n      if (e.metaKey || e.ctrlKey) {\n        ratio = 0.1;\n      } else if (e.shiftKey) {\n        ratio = 10;\n      }\n\n      return ratio;\n    };\n\n    _this.getFullNum = function (num) {\n      if (isNaN(num)) {\n        return num;\n      }\n\n      if (!/e/i.test(String(num))) {\n        return num;\n      }\n\n      return Number(num).toFixed(18).replace(/\\.?0+$/, '');\n    };\n\n    _this.getPrecision = function (value) {\n      if (isValidProps(_this.props.precision)) {\n        return _this.props.precision;\n      }\n\n      var valueString = String(value);\n\n      if (valueString.indexOf('e-') >= 0) {\n        return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n      }\n\n      var precision = 0;\n\n      if (valueString.indexOf('.') >= 0) {\n        precision = valueString.length - valueString.indexOf('.') - 1;\n      }\n\n      return precision;\n    };\n\n    _this.getInputDisplayValue = function (state) {\n      var _ref = state || _this.state,\n          focused = _ref.focused,\n          inputValue = _ref.inputValue,\n          value = _ref.value;\n\n      var inputDisplayValue;\n\n      if (focused) {\n        inputDisplayValue = inputValue;\n      } else {\n        inputDisplayValue = _this.toPrecisionAsStep(value);\n      }\n\n      if (inputDisplayValue === undefined || inputDisplayValue === null) {\n        inputDisplayValue = '';\n      }\n\n      var inputDisplayValueFormat = _this.formatWrapper(inputDisplayValue);\n\n      if (isValidProps(_this.props.decimalSeparator)) {\n        inputDisplayValueFormat = inputDisplayValueFormat.toString().replace('.', _this.props.decimalSeparator);\n      }\n\n      return inputDisplayValueFormat;\n    };\n\n    _this.recordCursorPosition = function () {\n      // Record position\n      try {\n        _this.cursorStart = _this.input.selectionStart;\n        _this.cursorEnd = _this.input.selectionEnd;\n        _this.currentValue = _this.input.value;\n        _this.cursorBefore = _this.input.value.substring(0, _this.cursorStart);\n        _this.cursorAfter = _this.input.value.substring(_this.cursorEnd);\n      } catch (e) {// Fix error in Chrome:\n        // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n        // http://stackoverflow.com/q/21177489/3040605\n      }\n    };\n\n    _this.restoreByAfter = function (str) {\n      if (str === undefined) return false;\n      var fullStr = _this.input.value;\n      var index = fullStr.lastIndexOf(str);\n      if (index === -1) return false;\n      var prevCursorPos = _this.cursorBefore.length;\n\n      if (_this.lastKeyCode === KeyCode.DELETE && _this.cursorBefore.charAt(prevCursorPos - 1) === str[0]) {\n        _this.fixCaret(prevCursorPos, prevCursorPos);\n\n        return true;\n      }\n\n      if (index + str.length === fullStr.length) {\n        _this.fixCaret(index, index);\n\n        return true;\n      }\n\n      return false;\n    };\n\n    _this.partRestoreByAfter = function (str) {\n      if (str === undefined) return false; // For loop from full str to the str with last char to map. e.g. 123\n      // -> 123\n      // -> 23\n      // -> 3\n\n      return Array.prototype.some.call(str, function (_, start) {\n        var partStr = str.substring(start);\n        return _this.restoreByAfter(partStr);\n      });\n    }; // '1.' '1x' 'xx' '' => are not complete numbers\n\n\n    _this.isNotCompleteNumber = function (num) {\n      return isNaN(num) || num === '' || num === null || num && num.toString().indexOf('.') === num.toString().length - 1;\n    };\n\n    _this.stop = function () {\n      if (_this.autoStepTimer) {\n        clearTimeout(_this.autoStepTimer);\n      }\n    };\n\n    _this.down = function (e, ratio, recursive) {\n      _this.pressingUpOrDown = true;\n\n      _this.step('down', e, ratio, recursive);\n    };\n\n    _this.up = function (e, ratio, recursive) {\n      _this.pressingUpOrDown = true;\n\n      _this.step('up', e, ratio, recursive);\n    };\n\n    _this.saveInput = function (node) {\n      _this.input = node;\n    };\n\n    var value = props.value;\n\n    if (value === undefined) {\n      value = props.defaultValue;\n    }\n\n    _this.state = {\n      focused: props.autoFocus\n    };\n\n    var validValue = _this.getValidValue(_this.toNumber(value));\n\n    _this.state = _objectSpread(_objectSpread({}, _this.state), {}, {\n      inputValue: _this.toPrecisionAsStep(validValue),\n      value: validValue\n    });\n    return _this;\n  }\n\n  _createClass(InputNumber, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.componentDidUpdate(null);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props3 = this.props,\n          value = _this$props3.value,\n          onChange = _this$props3.onChange,\n          max = _this$props3.max,\n          min = _this$props3.min;\n      var focused = this.state.focused; // Don't trigger in componentDidMount\n\n      if (prevProps) {\n        if (!isEqual(prevProps.value, value) || !isEqual(prevProps.max, max) || !isEqual(prevProps.min, min)) {\n          var validValue = focused ? value : this.getValidValue(value);\n          var nextInputValue;\n\n          if (this.pressingUpOrDown) {\n            nextInputValue = validValue;\n          } else if (this.inputting) {\n            nextInputValue = this.rawInput;\n          } else {\n            nextInputValue = this.toPrecisionAsStep(validValue);\n          }\n\n          this.setState({\n            // eslint-disable-line\n            value: validValue,\n            inputValue: nextInputValue\n          });\n        } // Trigger onChange when max or min change\n        // https://github.com/ant-design/ant-design/issues/11574\n\n\n        var nextValue = 'value' in this.props ? value : this.state.value; // ref: null < 20 === true\n        // https://github.com/ant-design/ant-design/issues/14277\n\n        if ('max' in this.props && prevProps.max !== max && typeof nextValue === 'number' && nextValue > max && onChange) {\n          onChange(max);\n        }\n\n        if ('min' in this.props && prevProps.min !== min && typeof nextValue === 'number' && nextValue < min && onChange) {\n          onChange(min);\n        }\n      } // Restore cursor\n\n\n      try {\n        // Firefox set the input cursor after it get focused.\n        // This caused that if an input didn't init with the selection,\n        // set will cause cursor not correct when first focus.\n        // Safari will focus input if set selection. We need skip this.\n        if (this.cursorStart !== undefined && this.state.focused) {\n          // In most cases, the string after cursor is stable.\n          // We can move the cursor before it\n          if ( // If not match full str, try to match part of str\n          !this.partRestoreByAfter(this.cursorAfter) && this.state.value !== this.props.value) {\n            // If not match any of then, let's just keep the position\n            // TODO: Logic should not reach here, need check if happens\n            var pos = this.getInputDisplayValue(this.state).length; // If not have last string, just position to the end\n\n            if (!this.cursorAfter) {\n              pos = this.input.value.length;\n            } else if (this.lastKeyCode === KeyCode.BACKSPACE) {\n              pos = this.cursorStart - 1;\n            } else if (this.lastKeyCode === KeyCode.DELETE) {\n              pos = this.cursorStart;\n            }\n\n            this.fixCaret(pos, pos);\n          } else if (this.currentValue === this.input.value) {\n            // Handle some special key code\n            switch (this.lastKeyCode) {\n              case KeyCode.BACKSPACE:\n                this.fixCaret(this.cursorStart - 1, this.cursorStart - 1);\n                break;\n\n              case KeyCode.DELETE:\n                this.fixCaret(this.cursorStart + 1, this.cursorStart + 1);\n                break;\n\n              default: // Do nothing\n\n            }\n          }\n        }\n      } catch (e) {// Do nothing\n      } // Reset last key\n\n\n      this.lastKeyCode = null; // pressingUpOrDown is true means that someone just click up or down button\n\n      if (!this.pressingUpOrDown) {\n        return;\n      }\n\n      if (this.props.focusOnUpDown && this.state.focused) {\n        if (document.activeElement !== this.input) {\n          this.focus();\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stop();\n    }\n  }, {\n    key: \"getCurrentValidValue\",\n    value: function getCurrentValidValue(value) {\n      var val = value;\n\n      if (val === '') {\n        val = '';\n      } else if (!this.isNotCompleteNumber(parseFloat(val))) {\n        val = this.getValidValue(val);\n      } else {\n        val = this.state.value;\n      }\n\n      return this.toNumber(val);\n    }\n  }, {\n    key: \"getValueFromEvent\",\n    value: function getValueFromEvent(e) {\n      // optimize for chinese input expierence\n      // https://github.com/ant-design/ant-design/issues/8196\n      var value = e.target.value.trim().replace(/。/g, '.');\n\n      if (isValidProps(this.props.decimalSeparator)) {\n        value = value.replace(this.props.decimalSeparator, '.');\n      }\n\n      return value;\n    }\n  }, {\n    key: \"getValidValue\",\n    value: function getValidValue(value) {\n      var _this$props4 = this.props,\n          min = _this$props4.min,\n          max = _this$props4.max;\n      var val = parseFloat(value); // https://github.com/ant-design/ant-design/issues/7358\n\n      if (isNaN(val)) {\n        return value;\n      }\n\n      if (val < min) {\n        val = min;\n      }\n\n      if (val > max) {\n        val = max;\n      }\n\n      return val;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(v, callback) {\n      // trigger onChange\n      var precision = this.props.precision;\n      var newValue = this.isNotCompleteNumber(parseFloat(v)) ? null : parseFloat(v);\n      var _this$state$value = this.state.value,\n          value = _this$state$value === void 0 ? null : _this$state$value;\n      var _this$state$inputValu = this.state.inputValue,\n          inputValue = _this$state$inputValu === void 0 ? null : _this$state$inputValu; // https://github.com/ant-design/ant-design/issues/7363\n      // https://github.com/ant-design/ant-design/issues/16622\n\n      var newValueInString = typeof newValue === 'number' ? newValue.toFixed(precision) : \"\".concat(newValue);\n      var changed = newValue !== value || newValueInString !== \"\".concat(inputValue);\n\n      if (!('value' in this.props)) {\n        this.setState({\n          value: newValue,\n          inputValue: this.toPrecisionAsStep(v)\n        }, callback);\n      } else {\n        // always set input value same as value\n        inputValue = this.toPrecisionAsStep(this.state.value);\n        this.setState({\n          inputValue: inputValue\n        }, callback);\n      }\n\n      if (changed) {\n        this.props.onChange(newValue);\n      }\n\n      return newValue;\n    } // step={1.0} value={1.51}\n    // press +\n    // then value should be 2.51, rather than 2.5\n    // if this.props.precision is undefined\n    // https://github.com/react-component/input-number/issues/39\n\n  }, {\n    key: \"getMaxPrecision\",\n    value: function getMaxPrecision(currentValue) {\n      var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n      var _this$props5 = this.props,\n          precision = _this$props5.precision,\n          step = _this$props5.step;\n\n      if (isValidProps(precision)) {\n        return precision;\n      }\n\n      var ratioPrecision = this.getPrecision(ratio);\n      var stepPrecision = this.getPrecision(step);\n      var currentValuePrecision = this.getPrecision(currentValue);\n\n      if (!currentValue) {\n        return ratioPrecision + stepPrecision;\n      }\n\n      return Math.max(currentValuePrecision, ratioPrecision + stepPrecision);\n    }\n  }, {\n    key: \"getPrecisionFactor\",\n    value: function getPrecisionFactor(currentValue) {\n      var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n      var precision = this.getMaxPrecision(currentValue, ratio);\n      return Math.pow(10, precision);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.input.focus();\n      this.recordCursorPosition();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.input.blur();\n    }\n  }, {\n    key: \"select\",\n    value: function select() {\n      this.input.select();\n    }\n  }, {\n    key: \"formatWrapper\",\n    value: function formatWrapper(num) {\n      // http://2ality.com/2012/03/signedzero.html\n      // https://github.com/ant-design/ant-design/issues/9439\n      if (this.props.formatter) {\n        return this.props.formatter(num);\n      }\n\n      return num;\n    }\n  }, {\n    key: \"toPrecisionAsStep\",\n    value: function toPrecisionAsStep(num) {\n      if (this.isNotCompleteNumber(num) || num === '') {\n        return num;\n      }\n\n      var precision = Math.abs(this.getMaxPrecision(num));\n\n      if (!isNaN(precision)) {\n        return Number(num).toFixed(precision);\n      }\n\n      return num.toString();\n    }\n  }, {\n    key: \"toNumber\",\n    value: function toNumber(num) {\n      var precision = this.props.precision;\n      var focused = this.state.focused; // num.length > 16 => This is to prevent input of large numbers\n\n      var numberIsTooLarge = num && num.length > 16 && focused;\n\n      if (this.isNotCompleteNumber(num) || numberIsTooLarge) {\n        return num;\n      }\n\n      if (isValidProps(precision)) {\n        return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision);\n      }\n\n      return Number(num);\n    }\n  }, {\n    key: \"upStep\",\n    value: function upStep(val, rat) {\n      var step = this.props.step;\n      var precisionFactor = this.getPrecisionFactor(val, rat);\n      var precision = Math.abs(this.getMaxPrecision(val, rat));\n      var result = ((precisionFactor * val + precisionFactor * Number(step) * rat) / precisionFactor).toFixed(precision);\n      return this.toNumber(result);\n    }\n  }, {\n    key: \"downStep\",\n    value: function downStep(val, rat) {\n      var step = this.props.step;\n      var precisionFactor = this.getPrecisionFactor(val, rat);\n      var precision = Math.abs(this.getMaxPrecision(val, rat));\n      var result = ((precisionFactor * val - precisionFactor * Number(step) * rat) / precisionFactor).toFixed(precision);\n      return this.toNumber(result);\n    }\n  }, {\n    key: \"step\",\n    value: function step(type, e) {\n      var _this2 = this;\n\n      var ratio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n      var recursive = arguments.length > 3 ? arguments[3] : undefined;\n      this.stop();\n      this.recordCursorPosition();\n\n      if (e) {\n        e.persist();\n        e.preventDefault();\n      }\n\n      var props = this.props;\n\n      if (props.disabled) {\n        return;\n      }\n\n      var value = this.getCurrentValidValue(this.state.inputValue) || 0;\n\n      if (this.isNotCompleteNumber(value)) {\n        return;\n      }\n\n      var val = this[\"\".concat(type, \"Step\")](value, ratio);\n      var outOfRange = val > props.max || val < props.min;\n\n      if (val > props.max) {\n        val = props.max;\n      } else if (val < props.min) {\n        val = props.min;\n      }\n\n      this.setValue(val, null);\n      if (props.onStep) props.onStep(val, {\n        offset: ratio,\n        type: type\n      });\n      this.setState({\n        focused: true\n      }, function () {\n        _this2.pressingUpOrDown = false;\n      });\n\n      if (outOfRange) {\n        return;\n      }\n\n      this.autoStepTimer = setTimeout(function () {\n        _this2[type](e, ratio, true);\n      }, recursive ? SPEED : DELAY);\n    }\n  }, {\n    key: \"fixCaret\",\n    value: function fixCaret(start, end) {\n      if (start === undefined || end === undefined || !this.input || !this.input.value) {\n        return;\n      }\n\n      try {\n        var currentStart = this.input.selectionStart;\n        var currentEnd = this.input.selectionEnd;\n\n        if (start !== currentStart || end !== currentEnd) {\n          this.input.setSelectionRange(start, end);\n        }\n      } catch (e) {// Fix error in Chrome:\n        // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n        // http://stackoverflow.com/q/21177489/3040605\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _this$props6 = this.props,\n          prefixCls = _this$props6.prefixCls,\n          disabled = _this$props6.disabled,\n          readOnly = _this$props6.readOnly,\n          useTouch = _this$props6.useTouch,\n          autoComplete = _this$props6.autoComplete,\n          upHandler = _this$props6.upHandler,\n          downHandler = _this$props6.downHandler,\n          className = _this$props6.className,\n          max = _this$props6.max,\n          min = _this$props6.min,\n          style = _this$props6.style,\n          title = _this$props6.title,\n          onMouseEnter = _this$props6.onMouseEnter,\n          onMouseLeave = _this$props6.onMouseLeave,\n          onMouseOver = _this$props6.onMouseOver,\n          onMouseOut = _this$props6.onMouseOut,\n          required = _this$props6.required,\n          onClick = _this$props6.onClick,\n          tabIndex = _this$props6.tabIndex,\n          type = _this$props6.type,\n          placeholder = _this$props6.placeholder,\n          id = _this$props6.id,\n          inputMode = _this$props6.inputMode,\n          pattern = _this$props6.pattern,\n          step = _this$props6.step,\n          maxLength = _this$props6.maxLength,\n          autoFocus = _this$props6.autoFocus,\n          name = _this$props6.name,\n          onPaste = _this$props6.onPaste,\n          onInput = _this$props6.onInput,\n          rest = _objectWithoutProperties(_this$props6, [\"prefixCls\", \"disabled\", \"readOnly\", \"useTouch\", \"autoComplete\", \"upHandler\", \"downHandler\", \"className\", \"max\", \"min\", \"style\", \"title\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseOver\", \"onMouseOut\", \"required\", \"onClick\", \"tabIndex\", \"type\", \"placeholder\", \"id\", \"inputMode\", \"pattern\", \"step\", \"maxLength\", \"autoFocus\", \"name\", \"onPaste\", \"onInput\"]);\n\n      var _this$state = this.state,\n          value = _this$state.value,\n          focused = _this$state.focused;\n      var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, className, !!className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-focused\"), focused), _classNames));\n      var dataOrAriaAttributeProps = {};\n      Object.keys(rest).forEach(function (key) {\n        if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n          dataOrAriaAttributeProps[key] = rest[key];\n        }\n      });\n      var editable = !readOnly && !disabled; // focus state, show input value\n      // unfocus state, show valid value\n\n      var inputDisplayValue = this.getInputDisplayValue(null);\n      var upDisabled = (value || value === 0) && (isNaN(value) || Number(value) >= max);\n      var downDisabled = (value || value === 0) && (isNaN(value) || Number(value) <= min);\n      var isUpDisabled = upDisabled || disabled || readOnly;\n      var isDownDisabled = downDisabled || disabled || readOnly;\n      var upClassName = classNames(\"\".concat(prefixCls, \"-handler\"), \"\".concat(prefixCls, \"-handler-up\"), _defineProperty({}, \"\".concat(prefixCls, \"-handler-up-disabled\"), isUpDisabled));\n      var downClassName = classNames(\"\".concat(prefixCls, \"-handler\"), \"\".concat(prefixCls, \"-handler-down\"), _defineProperty({}, \"\".concat(prefixCls, \"-handler-down-disabled\"), isDownDisabled));\n      var upEvents = useTouch ? {\n        onTouchStart: isUpDisabled ? noop : this.up,\n        onTouchEnd: this.stop\n      } : {\n        onMouseDown: isUpDisabled ? noop : this.up,\n        onMouseUp: this.stop,\n        onMouseLeave: this.stop\n      };\n      var downEvents = useTouch ? {\n        onTouchStart: isDownDisabled ? noop : this.down,\n        onTouchEnd: this.stop\n      } : {\n        onMouseDown: isDownDisabled ? noop : this.down,\n        onMouseUp: this.stop,\n        onMouseLeave: this.stop\n      };\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: classes,\n        style: style,\n        title: title,\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave,\n        onMouseOver: onMouseOver,\n        onMouseOut: onMouseOut,\n        onFocus: function onFocus() {\n          return null;\n        },\n        onBlur: function onBlur() {\n          return null;\n        }\n      }, /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-handler-wrap\")\n      }, /*#__PURE__*/React.createElement(\"span\", _extends({\n        unselectable: \"on\"\n      }, upEvents, {\n        role: \"button\",\n        \"aria-label\": \"Increase Value\",\n        \"aria-disabled\": isUpDisabled,\n        className: upClassName\n      }), upHandler || /*#__PURE__*/React.createElement(\"span\", {\n        unselectable: \"on\",\n        className: \"\".concat(prefixCls, \"-handler-up-inner\"),\n        onClick: preventDefault\n      })), /*#__PURE__*/React.createElement(\"span\", _extends({\n        unselectable: \"on\"\n      }, downEvents, {\n        role: \"button\",\n        \"aria-label\": \"Decrease Value\",\n        \"aria-disabled\": isDownDisabled,\n        className: downClassName\n      }), downHandler || /*#__PURE__*/React.createElement(\"span\", {\n        unselectable: \"on\",\n        className: \"\".concat(prefixCls, \"-handler-down-inner\"),\n        onClick: preventDefault\n      }))), /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-input-wrap\")\n      }, /*#__PURE__*/React.createElement(\"input\", _extends({\n        role: \"spinbutton\",\n        \"aria-valuemin\": min,\n        \"aria-valuemax\": max,\n        \"aria-valuenow\": value,\n        required: required,\n        type: type,\n        placeholder: placeholder,\n        onPaste: onPaste,\n        onClick: onClick,\n        onMouseUp: this.onMouseUp,\n        className: \"\".concat(prefixCls, \"-input\"),\n        tabIndex: tabIndex,\n        autoComplete: autoComplete,\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n        onKeyDown: editable ? this.onKeyDown : noop,\n        onKeyUp: editable ? this.onKeyUp : noop,\n        autoFocus: autoFocus,\n        maxLength: maxLength,\n        readOnly: readOnly,\n        disabled: disabled,\n        max: max,\n        min: min,\n        step: step,\n        name: name,\n        title: title,\n        id: id,\n        onChange: this.onChange,\n        ref: this.saveInput,\n        value: this.getFullNum(inputDisplayValue),\n        pattern: pattern,\n        inputMode: inputMode,\n        onInput: onInput\n      }, dataOrAriaAttributeProps))));\n    }\n  }]);\n\n  return InputNumber;\n}(React.Component);\n\nInputNumber.defaultProps = {\n  focusOnUpDown: true,\n  useTouch: false,\n  prefixCls: 'rc-input-number',\n  max: MAX_SAFE_INTEGER,\n  min: -MAX_SAFE_INTEGER,\n  step: 1,\n  style: {},\n  onChange: noop,\n  onKeyDown: noop,\n  onPressEnter: noop,\n  onFocus: noop,\n  onBlur: noop,\n  parser: defaultParser,\n  required: false,\n  autoComplete: 'off'\n};\nexport default InputNumber;","import InputNumber from './InputNumber';\nexport default InputNumber;","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar EventTarget = /** @class */ (function () {\n    function EventTarget() {\n        Object.defineProperties(this, {\n            _eventEmitter: {\n                value: new EventEmitter()\n            }\n        });\n    }\n    EventTarget.prototype.dispatchEvent = function (event) {\n        return this._eventEmitter.emit(event.type, event);\n    };\n    EventTarget.prototype.addEventListener = function () {\n        var _a;\n        return (_a = this._eventEmitter).addListener.apply(_a, __spreadArray([], __read(arguments)));\n    };\n    EventTarget.prototype.removeEventListener = function () {\n        var _a;\n        return (_a = this._eventEmitter).removeListener.apply(_a, __spreadArray([], __read(arguments)));\n    };\n    return EventTarget;\n}());\nmodule.exports = EventTarget;\n//# sourceMappingURL=eventtarget.js.map","'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n  parseFloat: parseFloat\n});\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","'use strict';\nvar setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n  defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n    configurable: true,\n    get: function sticky() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).sticky;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./q\"));\n__export(require(\"./injector\"));\n__export(require(\"./baseLocationService\"));\n__export(require(\"./hashLocationService\"));\n__export(require(\"./memoryLocationService\"));\n__export(require(\"./pushStateLocationService\"));\n__export(require(\"./memoryLocationConfig\"));\n__export(require(\"./browserLocationConfig\"));\n__export(require(\"./utils\"));\n__export(require(\"./plugins\"));\n//# sourceMappingURL=index.js.map","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint no-undefined:0 */\n'use strict';\n/**\n * @param {Array<number|undefined>} xs\n * @returns {number|undefined}\n */\nfunction average(xs) {\n    xs = xs.filter(function (x) { return typeof x === 'number'; });\n    return xs.length < 1 ? undefined : xs.reduce(function (y, x) { return x + y; }) / xs.length;\n}\nmodule.exports = average;\n//# sourceMappingURL=average.js.map","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar $groupToMap = require('../internals/array-group-to-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Array.prototype.groupByToMap` method\n// https://github.com/tc39/proposal-array-grouping\n// https://bugs.webkit.org/show_bug.cgi?id=236541\n$({ target: 'Array', proto: true, name: 'groupToMap', forced: IS_PURE || !arrayMethodIsStrict('groupByToMap') }, {\n  groupByToMap: $groupToMap\n});\n\naddToUnscopables('groupByToMap');\n","'use strict';\n/**\n * Monitor the network connection status to detect interruptions and handoffs.\n */\nvar NetworkMonitor = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkMonitor}.\n     * @param {function} onNetworkChanged\n     * @param {*} [options]\n     */\n    function NetworkMonitor(onNetworkChanged, options) {\n        var _this = this;\n        options = Object.assign({\n            navigator: navigator,\n            window: window,\n        }, options);\n        var nav = options.navigator;\n        var connection = nav.connection || { type: null };\n        var type = connection.type;\n        var _a = connection.type ? {\n            _events: {\n                value: ['change', 'typechange']\n            },\n            _listener: {\n                value: function () {\n                    var networkChanged = type !== _this.type && _this.isOnline;\n                    type = _this.type;\n                    if (networkChanged) {\n                        onNetworkChanged();\n                    }\n                }\n            },\n            _target: {\n                value: connection\n            }\n        } : {\n            _events: {\n                value: ['online']\n            },\n            _listener: {\n                value: onNetworkChanged\n            },\n            _target: {\n                value: options.window\n            }\n        }, _events = _a._events, _listener = _a._listener, _target = _a._target;\n        Object.defineProperties(this, {\n            isOnline: {\n                enumerable: true,\n                get: function () {\n                    return typeof nav.onLine === 'boolean'\n                        ? nav.onLine\n                        : true;\n                }\n            },\n            type: {\n                enumerable: true,\n                get: function () {\n                    return connection.type || null;\n                }\n            },\n            _listener: _listener,\n            _events: _events,\n            _target: _target\n        });\n    }\n    /**\n     * Start the {@link NetworkMonitor}.\n     */\n    NetworkMonitor.prototype.start = function () {\n        var _this = this;\n        this._events.forEach(function (event) {\n            _this._target.addEventListener(event, _this._listener);\n        });\n    };\n    /**\n     * Stop the {@link NetworkMonitor}.\n     */\n    NetworkMonitor.prototype.stop = function () {\n        var _this = this;\n        this._events.forEach(function (event) {\n            _this._target.removeEventListener(event, _this._listener);\n        });\n    };\n    return NetworkMonitor;\n}());\nmodule.exports = NetworkMonitor;\n//# sourceMappingURL=networkmonitor.js.map","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","'use strict';\nvar parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $thenSch = it.schema['then'],\n    $elseSch = it.schema['else'],\n    $thenPresent = $thenSch !== undefined && it.util.schemaHasRules($thenSch, it.RULES.all),\n    $elsePresent = $elseSch !== undefined && it.util.schemaHasRules($elseSch, it.RULES.all),\n    $currentBaseId = $it.baseId;\n  if ($thenPresent || $elsePresent) {\n    var $ifClause;\n    $it.createErrors = false;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    out += '  ' + (it.validate($it)) + ' ';\n    $it.baseId = $currentBaseId;\n    $it.createErrors = true;\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    if ($thenPresent) {\n      out += ' if (' + ($nextValid) + ') {  ';\n      $it.schema = it.schema['then'];\n      $it.schemaPath = it.schemaPath + '.then';\n      $it.errSchemaPath = it.errSchemaPath + '/then';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n      } else {\n        $ifClause = '\\'then\\'';\n      }\n      out += ' } ';\n      if ($elsePresent) {\n        out += ' else { ';\n      }\n    } else {\n      out += ' if (!' + ($nextValid) + ') { ';\n    }\n    if ($elsePresent) {\n      $it.schema = it.schema['else'];\n      $it.schemaPath = it.schemaPath + '.else';\n      $it.errSchemaPath = it.errSchemaPath + '/else';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n      } else {\n        $ifClause = '\\'else\\'';\n      }\n      out += ' } ';\n    }\n    out += ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' }   ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n    out = it.util.cleanUpCode(out);\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar StateMachine = require('../statemachine');\nvar NetworkQualityStats = require('../stats/networkqualitystats');\n/*\nParticipantSignaling States\n----------------------\n\n    +------------+     +-----------+     +--------------+\n    |            |     |           |     |              |\n    | connecting |---->| connected |---->| disconnected |\n    |            |     |           |     |              |\n    +------------+     +-----------+     +--------------+\n                           | ^                    ^\n                           | |  +--------------+  |\n                           | |--|              |  |\n                           |--->| reconnecting |--|\n                                |              |\n                                +--------------+\n*/\nvar states = {\n    connecting: [\n        'connected'\n    ],\n    connected: [\n        'disconnected',\n        'reconnecting'\n    ],\n    reconnecting: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link Participant} implementation\n * @extends StateMachine\n * @property {?string} identity\n * @property {?Participant.SID} sid\n * @property {string} state - \"connecting\", \"connected\", or \"disconnected\"\n * @property {Map<Track.ID | Track.SID, TrackSignaling>} tracks\n * @emits ParticipantSignaling#networkQualityLevelChanged\n * @emits ParticipantSignaling#trackAdded\n * @emits ParticipantSignaling#trackRemoved\n */\nvar ParticipantSignaling = /** @class */ (function (_super) {\n    __extends(ParticipantSignaling, _super);\n    /**\n     * Construct a {@link ParticipantSignaling}.\n     */\n    function ParticipantSignaling() {\n        var _this = _super.call(this, 'connecting', states) || this;\n        Object.defineProperties(_this, {\n            _identity: {\n                writable: true,\n                value: null\n            },\n            _networkQualityLevel: {\n                value: null,\n                writable: true\n            },\n            _networkQualityStats: {\n                value: null,\n                writable: true\n            },\n            _sid: {\n                writable: true,\n                value: null\n            },\n            identity: {\n                enumerable: true,\n                get: function () {\n                    return this._identity;\n                }\n            },\n            sid: {\n                enumerable: true,\n                get: function () {\n                    return this._sid;\n                }\n            },\n            tracks: {\n                enumerable: true,\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityLevel\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} networkQualityLevel - initially null\n         */\n        get: function () {\n            return this._networkQualityLevel;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityStats\", {\n        /**\n         * Get the current {@link NetworkQualityStats}\n         * @returns {?NetworkQualityStats} networkQualityStats - initially null\n         */\n        get: function () {\n            return this._networkQualityStats;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Add the {@link TrackSignaling}, MediaStreamTrack, or\n     * {@link DataTrackSender} to the {@link ParticipantSignaling}.\n     * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n     * @returns {this}\n     * @fires ParticipantSignaling#trackAdded\n     */\n    ParticipantSignaling.prototype.addTrack = function (track) {\n        this.tracks.set(track.id || track.sid, track);\n        this.emit('trackAdded', track);\n        return this;\n    };\n    /**\n     * Disconnect the {@link ParticipantSignaling}.\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.disconnect = function () {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected');\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Remove the {@link TrackSignaling}, MediaStreamTrack, or\n     * {@link DataTrackSender} from the {@link ParticipantSignaling}.\n     * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n     * @returns {?TrackSignaling}\n     * @fires ParticipantSignaling#trackRemoved\n     */\n    ParticipantSignaling.prototype.removeTrack = function (track) {\n        var signaling = this.tracks.get(track.id || track.sid);\n        this.tracks.delete(track.id || track.sid);\n        if (signaling) {\n            this.emit('trackRemoved', track);\n        }\n        return signaling || null;\n    };\n    /**\n     * @param {NetworkQualityLevel} networkQualityLevel\n     * @param {?NetworkQualityLevels} [networkQualityLevels=null]\n     * @returns {void}\n     */\n    ParticipantSignaling.prototype.setNetworkQualityLevel = function (networkQualityLevel, networkQualityLevels) {\n        if (this._networkQualityLevel !== networkQualityLevel) {\n            this._networkQualityLevel = networkQualityLevel;\n            this._networkQualityStats = networkQualityLevels\n                && (networkQualityLevels.audio || networkQualityLevels.video)\n                ? new NetworkQualityStats(networkQualityLevels)\n                : null;\n            this.emit('networkQualityLevelChanged');\n        }\n    };\n    /**\n     * Connect the {@link ParticipantSignaling}.\n     * @param {Participant.SID} sid\n     * @param {string} identity\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.connect = function (sid, identity) {\n        if (this.state === 'connecting' || this.state === 'reconnecting') {\n            if (!this._sid) {\n                this._sid = sid;\n            }\n            if (!this._identity) {\n                this._identity = identity;\n            }\n            this.preempt('connected');\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Transition to \"reconnecting\" state.\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.reconnecting = function () {\n        if (this.state === 'connecting' || this.state === 'connected') {\n            this.preempt('reconnecting');\n            return true;\n        }\n        return false;\n    };\n    return ParticipantSignaling;\n}(StateMachine));\n/**\n * @event ParticipantSignaling#event:networkQualityLevelChanged\n */\n/**\n * {@link TrackSignaling} was added to the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackAdded\n * @param {TrackSignaling} track\n */\n/**\n * {@link TrackSignaling} was removed from the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackRemoved\n * @param {TrackSignaling} track\n */\nmodule.exports = ParticipantSignaling;\n//# sourceMappingURL=participant.js.map","//index.js\nvar deepEqual = require('deep-equal');\n\nvar Equality = function(opt) {\n  this.precision = opt && opt.precision ? opt.precision : 17;\n  this.direction = opt && opt.direction ? opt.direction : false;\n  this.pseudoNode = opt && opt.pseudoNode ? opt.pseudoNode : false;\n  this.objectComparator = opt && opt.objectComparator ? opt.objectComparator : objectComparator;\n};\n\nEquality.prototype.compare = function(g1,g2) {\n  if (g1.type !== g2.type || !sameLength(g1,g2)) return false;\n\n  switch(g1.type) {\n  case 'Point':\n    return this.compareCoord(g1.coordinates, g2.coordinates);\n    break;\n  case 'LineString':\n    return this.compareLine(g1.coordinates, g2.coordinates,0,false);\n    break;\n  case 'Polygon':\n    return this.comparePolygon(g1,g2);\n    break;\n  case 'Feature':\n    return this.compareFeature(g1, g2);\n  default:\n    if (g1.type.indexOf('Multi') === 0) {\n      var context = this;\n      var g1s = explode(g1);\n      var g2s = explode(g2);\n      return g1s.every(function(g1part) {\n        return this.some(function(g2part) {\n          return context.compare(g1part,g2part);\n        });\n      },g2s);\n    }\n  }\n  return false;\n};\n\nfunction explode(g) {\n  return g.coordinates.map(function(part) {\n    return {\n      type: g.type.replace('Multi', ''),\n      coordinates: part}\n  });\n}\n//compare length of coordinates/array\nfunction sameLength(g1,g2) {\n   return g1.hasOwnProperty('coordinates') ?\n    g1.coordinates.length === g2.coordinates.length\n    : g1.length === g2.length;\n}\n\n// compare the two coordinates [x,y]\nEquality.prototype.compareCoord = function(c1,c2) {\n  if (c1.length !== c2.length) {\n    return false;\n  }\n\n  for (var i=0; i < c1.length; i++) {\n    if (c1[i].toFixed(this.precision) !== c2[i].toFixed(this.precision)) {\n      return false;\n    }\n  }\n  return true;\n};\n\nEquality.prototype.compareLine = function(path1,path2,ind,isPoly) {\n  if (!sameLength(path1,path2)) return false;\n  var p1 = this.pseudoNode ? path1 : this.removePseudo(path1);\n  var p2 = this.pseudoNode ? path2 : this.removePseudo(path2);\n  if (isPoly && !this.compareCoord(p1[0],p2[0])) {\n    // fix start index of both to same point\n    p2 = this.fixStartIndex(p2,p1);\n    if(!p2) return;\n  }\n  // for linestring ind =0 and for polygon ind =1\n  var sameDirection = this.compareCoord(p1[ind],p2[ind]);\n  if (this.direction || sameDirection\n  ) {\n    return this.comparePath(p1, p2);\n  } else {\n    if (this.compareCoord(p1[ind],p2[p2.length - (1+ind)])\n    ) {\n      return this.comparePath(p1.slice().reverse(), p2);\n    }\n    return false;\n  }\n};\nEquality.prototype.fixStartIndex = function(sourcePath,targetPath) {\n  //make sourcePath first point same as of targetPath\n  var correctPath,ind = -1;\n  for (var i=0; i< sourcePath.length; i++) {\n    if(this.compareCoord(sourcePath[i],targetPath[0])) {\n      ind = i;\n      break;\n    }\n  }\n  if (ind >= 0) {\n    correctPath = [].concat(\n      sourcePath.slice(ind,sourcePath.length),\n      sourcePath.slice(1,ind+1));\n  }\n  return correctPath;\n};\nEquality.prototype.comparePath = function (p1,p2) {\n  var cont = this;\n  return p1.every(function(c,i) {\n    return cont.compareCoord(c,this[i]);\n  },p2);\n};\n\nEquality.prototype.comparePolygon = function(g1,g2) {\n  if (this.compareLine(g1.coordinates[0],g2.coordinates[0],1,true)) {\n    var holes1 = g1.coordinates.slice(1,g1.coordinates.length);\n    var holes2 = g2.coordinates.slice(1,g2.coordinates.length);\n    var cont = this;\n    return holes1.every(function(h1) {\n      return this.some(function(h2) {\n        return cont.compareLine(h1,h2,1,true);\n      });\n    },holes2);\n  } else {\n    return false;\n  }\n};\n\nEquality.prototype.compareFeature = function(g1,g2) {\n  if (\n    g1.id !== g2.id ||\n    !this.objectComparator(g1.properties, g2.properties) ||\n    !this.compareBBox(g1,g2)\n  ) {\n    return false;\n  }\n  return this.compare(g1.geometry, g2.geometry);\n};\n\nEquality.prototype.compareBBox = function(g1,g2) {\n  if (\n    (!g1.bbox && !g2.bbox) || \n    (\n      g1.bbox && g2.bbox &&\n      this.compareCoord(g1.bbox, g2.bbox)\n    )\n  )  {\n    return true;\n  }\n  return false;\n};\nEquality.prototype.removePseudo = function(path) {\n  //TODO to be implement\n  return path;\n};\n\nfunction objectComparator(obj1, obj2) {\n  return deepEqual(obj1, obj2, {strict: true});\n}\n\nmodule.exports = Equality;\n","/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar getUserMedia = require('../../webrtc').getUserMedia;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar _a = require('../../util'), capitalize = _a.capitalize, defer = _a.defer, isUserMediaTrack = _a.isUserMediaTrack, waitForSometime = _a.waitForSometime, waitForEvent = _a.waitForEvent;\nvar ILLEGAL_INVOKE = require('../../util/constants').typeErrors.ILLEGAL_INVOKE;\nvar detectSilentAudio = require('../../util/detectsilentaudio');\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar gUMSilentTrackWorkaround = require('../../webaudio/workaround180748');\nvar MediaTrackSender = require('./sender');\nfunction mixinLocalMediaTrack(AudioOrVideoTrack) {\n    /**\n     * A {@link LocalMediaTrack} represents audio or video that your\n     * {@link LocalParticipant} is sending to a {@link Room}. As such, it can be\n     * enabled and disabled with {@link LocalMediaTrack#enable} and\n     * {@link LocalMediaTrack#disable} or stopped completely with\n     * {@link LocalMediaTrack#stop}.\n     * @emits LocalMediaTrack#muted\n     * @emits LocalMediaTrack#stopped\n     * @emits LocalMediaTrack#unmuted\n     */\n    return /** @class */ (function (_super) {\n        __extends(LocalMediaTrack, _super);\n        /**\n         * Construct a {@link LocalMediaTrack} from a MediaStreamTrack.\n         * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n         * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n         */\n        function LocalMediaTrack(mediaStreamTrack, options) {\n            var _this = this;\n            var workaroundWebKitBug1208516 = isIOS()\n                && isUserMediaTrack(mediaStreamTrack)\n                && typeof document === 'object'\n                && typeof document.addEventListener === 'function'\n                && typeof document.visibilityState === 'string';\n            options = Object.assign({\n                getUserMedia: getUserMedia,\n                isCreatedByCreateLocalTracks: false,\n                workaroundWebKitBug1208516: workaroundWebKitBug1208516,\n                gUMSilentTrackWorkaround: gUMSilentTrackWorkaround\n            }, options);\n            var mediaTrackSender = new MediaTrackSender(mediaStreamTrack);\n            var kind = mediaTrackSender.kind;\n            _this = _super.call(this, mediaTrackSender, options) || this;\n            Object.defineProperties(_this, {\n                _constraints: {\n                    value: typeof options[kind] === 'object'\n                        ? options[kind]\n                        : {},\n                    writable: true\n                },\n                _getUserMedia: {\n                    value: options.getUserMedia\n                },\n                _gUMSilentTrackWorkaround: {\n                    value: options.gUMSilentTrackWorkaround\n                },\n                _eventsToReemitters: {\n                    value: new Map([\n                        ['muted', function () { return _this.emit('muted', _this); }],\n                        ['unmuted', function () { return _this.emit('unmuted', _this); }]\n                    ])\n                },\n                _workaroundWebKitBug1208516: {\n                    value: options.workaroundWebKitBug1208516\n                },\n                _workaroundWebKitBug1208516Cleanup: {\n                    value: null,\n                    writable: true\n                },\n                _didCallEnd: {\n                    value: false,\n                    writable: true\n                },\n                _isCreatedByCreateLocalTracks: {\n                    value: options.isCreatedByCreateLocalTracks\n                },\n                _trackSender: {\n                    value: mediaTrackSender\n                },\n                id: {\n                    enumerable: true,\n                    value: mediaTrackSender.id\n                },\n                isEnabled: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.enabled;\n                    }\n                },\n                isMuted: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.muted;\n                    }\n                },\n                isStopped: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.readyState === 'ended';\n                    }\n                }\n            });\n            // NOTE(mpatwardhan): As a workaround for WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=208516,\n            // upon foregrounding, re-acquire new MediaStreamTrack if the existing one is ended or muted.\n            if (_this._workaroundWebKitBug1208516) {\n                _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n            }\n            _this._reemitTrackSenderEvents();\n            return _this;\n        }\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._end = function () {\n            var _this = this;\n            if (this._didCallEnd) {\n                return;\n            }\n            _super.prototype._end.call(this);\n            this._didCallEnd = true;\n            this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.removeListener(event, reemitter); });\n            this.emit('stopped', this);\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._initialize = function () {\n            if (this._didCallEnd) {\n                this._didCallEnd = false;\n            }\n            if (this._eventsToReemitters) {\n                this._reemitTrackSenderEvents();\n            }\n            _super.prototype._initialize.call(this);\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._reacquireTrack = function (constraints) {\n            var _a;\n            var _b = this, getUserMedia = _b._getUserMedia, gUMSilentTrackWorkaround = _b._gUMSilentTrackWorkaround, log = _b._log, kind = _b.mediaStreamTrack.kind;\n            log.info('Re-acquiring the MediaStreamTrack');\n            log.debug('Constraints:', constraints);\n            var gUMConstraints = Object.assign({\n                audio: false,\n                video: false\n            }, (_a = {}, _a[kind] = constraints, _a));\n            var gUMPromise = this._workaroundWebKitBug1208516Cleanup\n                ? gUMSilentTrackWorkaround(log, getUserMedia, gUMConstraints)\n                : getUserMedia(gUMConstraints);\n            return gUMPromise.then(function (mediaStream) {\n                return mediaStream.getTracks()[0];\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._reemitTrackSenderEvents = function () {\n            var _this = this;\n            this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.on(event, reemitter); });\n            this._trackSender.dequeue('muted');\n            this._trackSender.dequeue('unmuted');\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._restart = function (constraints) {\n            var _this = this;\n            var log = this._log;\n            constraints = constraints || this._constraints;\n            // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n            // without stopping it first, then a NotReadableError is raised in case of\n            // video, or the restarted audio will still be silent. Hence, we stop the\n            // MediaStreamTrack here.\n            this._stop();\n            return this._reacquireTrack(constraints).catch(function (error) {\n                log.error('Failed to re-acquire the MediaStreamTrack:', { error: error, constraints: constraints });\n                throw error;\n            }).then(function (newMediaStreamTrack) {\n                log.info('Re-acquired the MediaStreamTrack');\n                log.debug('MediaStreamTrack:', newMediaStreamTrack);\n                _this._constraints = Object.assign({}, constraints);\n                return _this._setMediaStreamTrack(newMediaStreamTrack);\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {\n            var _this = this;\n            // NOTE(mpatwardhan): Preserve the value of the \"enabled\" flag.\n            mediaStreamTrack.enabled = this.mediaStreamTrack.enabled;\n            // NOTE(mmalavalli): Stop the current MediaStreamTrack. If not already\n            // stopped, this should fire a \"stopped\" event.\n            this._stop();\n            // NOTE(csantos): If there's an unprocessedTrack, this means RTCRtpSender has\n            // the processedTrack already set, we don't want to replace that.\n            return (this._unprocessedTrack ? Promise.resolve().then(function () {\n                _this._unprocessedTrack = mediaStreamTrack;\n            }) : this._trackSender.setMediaStreamTrack(mediaStreamTrack).catch(function (error) {\n                _this._log.warn('setMediaStreamTrack failed:', { error: error, mediaStreamTrack: mediaStreamTrack });\n            })).then(function () {\n                _this._initialize();\n                _this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._stop = function () {\n            this.mediaStreamTrack.stop();\n            this._end();\n            return this;\n        };\n        LocalMediaTrack.prototype.enable = function (enabled) {\n            enabled = typeof enabled === 'boolean' ? enabled : true;\n            if (enabled !== this.mediaStreamTrack.enabled) {\n                this._log.info((enabled ? 'En' : 'Dis') + \"abling\");\n                this.mediaStreamTrack.enabled = enabled;\n                this.emit(enabled ? 'enabled' : 'disabled', this);\n            }\n            return this;\n        };\n        LocalMediaTrack.prototype.disable = function () {\n            return this.enable(false);\n        };\n        LocalMediaTrack.prototype.restart = function (constraints) {\n            var _this = this;\n            var kind = this.kind;\n            if (!this._isCreatedByCreateLocalTracks) {\n                return Promise.reject(ILLEGAL_INVOKE('restart', 'can only be called on a'\n                    + (\" Local\" + capitalize(kind) + \"Track that is created using createLocalTracks\")\n                    + (\" or createLocal\" + capitalize(kind) + \"Track.\")));\n            }\n            if (this._workaroundWebKitBug1208516Cleanup) {\n                this._workaroundWebKitBug1208516Cleanup();\n                this._workaroundWebKitBug1208516Cleanup = null;\n            }\n            var promise = this._restart(constraints);\n            if (this._workaroundWebKitBug1208516) {\n                promise = promise.finally(function () {\n                    _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n                });\n            }\n            return promise;\n        };\n        LocalMediaTrack.prototype.stop = function () {\n            this._log.info('Stopping');\n            if (this._workaroundWebKitBug1208516Cleanup) {\n                this._workaroundWebKitBug1208516Cleanup();\n                this._workaroundWebKitBug1208516Cleanup = null;\n            }\n            return this._stop();\n        };\n        return LocalMediaTrack;\n    }(AudioOrVideoTrack));\n}\n/**\n * Restart the given {@link LocalMediaTrack} if it has been inadvertently stopped.\n * @private\n * @param {LocalAudioTrack|LocalVideoTrack} localMediaTrack\n * @returns {function} Clean up listeners attached by the workaround\n */\nfunction restartWhenInadvertentlyStopped(localMediaTrack) {\n    var log = localMediaTrack._log, kind = localMediaTrack.kind;\n    var detectSilence = { audio: detectSilentAudio, video: detectSilentVideo }[kind];\n    var el = localMediaTrack._dummyEl, mediaStreamTrack = localMediaTrack.mediaStreamTrack;\n    var trackChangeInProgress = null;\n    function checkSilence() {\n        // The dummy element is paused, so play it and then detect silence.\n        return el.play().then(function () { return detectSilence(el); }).then(function (isSilent) {\n            if (isSilent) {\n                log.warn('Silence detected');\n            }\n            else {\n                log.info('Non-silence detected');\n            }\n            return isSilent;\n        }).catch(function (error) {\n            log.warn('Failed to detect silence:', error);\n        }).finally(function () {\n            // Pause the dummy element again, if there is no processed track.\n            if (!localMediaTrack.processedTrack) {\n                el.pause();\n            }\n        });\n    }\n    function shouldReacquireTrack() {\n        var _workaroundWebKitBug1208516Cleanup = localMediaTrack._workaroundWebKitBug1208516Cleanup, isStopped = localMediaTrack.isStopped, muted = localMediaTrack.mediaStreamTrack.muted;\n        var isInadvertentlyStopped = isStopped && !!_workaroundWebKitBug1208516Cleanup;\n        // NOTE(mmalavalli): Restart the LocalMediaTrack if:\n        // 1. The app is foregrounded, and\n        // 2. A restart is not already in progress, and\n        // 3. The LocalMediaTrack is either muted, inadvertently stopped or silent\n        return Promise.resolve().then(function () {\n            return document.visibilityState === 'visible'\n                && !trackChangeInProgress\n                && (muted || isInadvertentlyStopped || checkSilence());\n        });\n    }\n    function maybeRestart() {\n        return Promise.race([\n            waitForEvent(mediaStreamTrack, 'unmute'),\n            waitForSometime(50)\n        ]).then(function () { return shouldReacquireTrack(); }).then(function (shouldReacquire) {\n            if (shouldReacquire && !trackChangeInProgress) {\n                trackChangeInProgress = defer();\n                localMediaTrack._restart().finally(function () {\n                    el = localMediaTrack._dummyEl;\n                    removeMediaStreamTrackListeners();\n                    mediaStreamTrack = localMediaTrack.mediaStreamTrack;\n                    addMediaStreamTrackListeners();\n                    trackChangeInProgress.resolve();\n                    trackChangeInProgress = null;\n                }).catch(function (error) {\n                    log.error('failed to restart track: ', error);\n                });\n            }\n            // NOTE(mmalavalli): If the MediaStreamTrack ends before the DOM is visible,\n            // then this makes sure that visibility callback for phase 2 is called only\n            // after the MediaStreamTrack is re-acquired.\n            var promise = (trackChangeInProgress && trackChangeInProgress.promise) || Promise.resolve();\n            return promise.finally(function () { return localMediaRestartDeferreds.resolveDeferred(kind); });\n        }).catch(function (ex) {\n            log.error(\"error in maybeRestart: \" + ex.message);\n        });\n    }\n    function onMute() {\n        var log = localMediaTrack._log, kind = localMediaTrack.kind;\n        log.info('Muted');\n        log.debug('LocalMediaTrack:', localMediaTrack);\n        // NOTE(mmalavalli): When a LocalMediaTrack is muted without the app being\n        // backgrounded, and the inadvertently paused elements are played before it\n        // is restarted, it never gets unmuted due to the WebKit Bug 213853. Hence,\n        // setting this Deferred will make sure that the inadvertently paused elements\n        // are played only after the LocalMediaTrack is unmuted.\n        //\n        // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n        //\n        localMediaRestartDeferreds.startDeferred(kind);\n    }\n    function addMediaStreamTrackListeners() {\n        mediaStreamTrack.addEventListener('ended', maybeRestart);\n        mediaStreamTrack.addEventListener('mute', onMute);\n        mediaStreamTrack.addEventListener('unmute', maybeRestart);\n    }\n    function removeMediaStreamTrackListeners() {\n        mediaStreamTrack.removeEventListener('ended', maybeRestart);\n        mediaStreamTrack.removeEventListener('mute', onMute);\n        mediaStreamTrack.removeEventListener('unmute', maybeRestart);\n    }\n    // NOTE(mpatwardhan): listen for document visibility callback on phase 1.\n    // this ensures that we acquire media tracks before RemoteMediaTrack\n    // tries to `play` them (in phase 2). This order is important because\n    // play can fail on safari if audio is not being captured.\n    var onVisibilityChange = function (isVisible) {\n        return isVisible ? maybeRestart() : false;\n    };\n    documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChange);\n    addMediaStreamTrackListeners();\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChange);\n        removeMediaStreamTrackListeners();\n    };\n}\nmodule.exports = mixinLocalMediaTrack;\n//# sourceMappingURL=localmediatrack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nvar interface_1 = require(\"./interface\");\nvar common_1 = require(\"../common/common\");\nvar strings_1 = require(\"../common/strings\");\nvar predicates_1 = require(\"../common/predicates\");\nvar hof_1 = require(\"../common/hof\");\nvar trace_1 = require(\"../common/trace\");\nvar coreservices_1 = require(\"../common/coreservices\");\nvar rejectFactory_1 = require(\"./rejectFactory\");\nvar targetState_1 = require(\"../state/targetState\");\nvar defaultOptions = {\n    current: common_1.noop,\n    transition: null,\n    traceData: {},\n    bind: null,\n};\n/** @hidden */\nvar TransitionHook = /** @class */ (function () {\n    function TransitionHook(transition, stateContext, registeredHook, options) {\n        var _this = this;\n        this.transition = transition;\n        this.stateContext = stateContext;\n        this.registeredHook = registeredHook;\n        this.options = options;\n        this.isSuperseded = function () {\n            return _this.type.hookPhase === interface_1.TransitionHookPhase.RUN && !_this.options.transition.isActive();\n        };\n        this.options = common_1.defaults(options, defaultOptions);\n        this.type = registeredHook.eventType;\n    }\n    /**\n     * Chains together an array of TransitionHooks.\n     *\n     * Given a list of [[TransitionHook]] objects, chains them together.\n     * Each hook is invoked after the previous one completes.\n     *\n     * #### Example:\n     * ```js\n     * var hooks: TransitionHook[] = getHooks();\n     * let promise: Promise<any> = TransitionHook.chain(hooks);\n     *\n     * promise.then(handleSuccess, handleError);\n     * ```\n     *\n     * @param hooks the list of hooks to chain together\n     * @param waitFor if provided, the chain is `.then()`'ed off this promise\n     * @returns a `Promise` for sequentially invoking the hooks (in order)\n     */\n    TransitionHook.chain = function (hooks, waitFor) {\n        // Chain the next hook off the previous\n        var createHookChainR = function (prev, nextHook) {\n            return prev.then(function () { return nextHook.invokeHook(); });\n        };\n        return hooks.reduce(createHookChainR, waitFor || coreservices_1.services.$q.when());\n    };\n    /**\n     * Invokes all the provided TransitionHooks, in order.\n     * Each hook's return value is checked.\n     * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n     * If no hook returns a promise, then all hooks are processed synchronously.\n     *\n     * @param hooks the list of TransitionHooks to invoke\n     * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n     *\n     * @returns a promise for the async result, or the result of the callback\n     */\n    TransitionHook.invokeHooks = function (hooks, doneCallback) {\n        for (var idx = 0; idx < hooks.length; idx++) {\n            var hookResult = hooks[idx].invokeHook();\n            if (predicates_1.isPromise(hookResult)) {\n                var remainingHooks = hooks.slice(idx + 1);\n                return TransitionHook.chain(remainingHooks, hookResult)\n                    .then(doneCallback);\n            }\n        }\n        return doneCallback();\n    };\n    /**\n     * Run all TransitionHooks, ignoring their return value.\n     */\n    TransitionHook.runAllHooks = function (hooks) {\n        hooks.forEach(function (hook) { return hook.invokeHook(); });\n    };\n    TransitionHook.prototype.logError = function (err) {\n        this.transition.router.stateService.defaultErrorHandler()(err);\n    };\n    TransitionHook.prototype.invokeHook = function () {\n        var _this = this;\n        var hook = this.registeredHook;\n        if (hook._deregistered)\n            return;\n        var notCurrent = this.getNotCurrentRejection();\n        if (notCurrent)\n            return notCurrent;\n        var options = this.options;\n        trace_1.trace.traceHookInvocation(this, this.transition, options);\n        var invokeCallback = function () {\n            return hook.callback.call(options.bind, _this.transition, _this.stateContext);\n        };\n        var normalizeErr = function (err) {\n            return rejectFactory_1.Rejection.normalize(err).toPromise();\n        };\n        var handleError = function (err) {\n            return hook.eventType.getErrorHandler(_this)(err);\n        };\n        var handleResult = function (result) {\n            return hook.eventType.getResultHandler(_this)(result);\n        };\n        try {\n            var result = invokeCallback();\n            if (!this.type.synchronous && predicates_1.isPromise(result)) {\n                return result.catch(normalizeErr)\n                    .then(handleResult, handleError);\n            }\n            else {\n                return handleResult(result);\n            }\n        }\n        catch (err) {\n            // If callback throws (synchronously)\n            return handleError(rejectFactory_1.Rejection.normalize(err));\n        }\n        finally {\n            if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n                hook.deregister();\n            }\n        }\n    };\n    /**\n     * This method handles the return value of a Transition Hook.\n     *\n     * A hook can return false (cancel), a TargetState (redirect),\n     * or a promise (which may later resolve to false or a redirect)\n     *\n     * This also handles \"transition superseded\" -- when a new transition\n     * was started while the hook was still running\n     */\n    TransitionHook.prototype.handleHookResult = function (result) {\n        var _this = this;\n        var notCurrent = this.getNotCurrentRejection();\n        if (notCurrent)\n            return notCurrent;\n        // Hook returned a promise\n        if (predicates_1.isPromise(result)) {\n            // Wait for the promise, then reprocess with the resulting value\n            return result.then(function (val) { return _this.handleHookResult(val); });\n        }\n        trace_1.trace.traceHookResult(result, this.transition, this.options);\n        // Hook returned false\n        if (result === false) {\n            // Abort this Transition\n            return rejectFactory_1.Rejection.aborted('Hook aborted transition').toPromise();\n        }\n        var isTargetState = hof_1.is(targetState_1.TargetState);\n        // hook returned a TargetState\n        if (isTargetState(result)) {\n            // Halt the current Transition and redirect (a new Transition) to the TargetState.\n            return rejectFactory_1.Rejection.redirected(result).toPromise();\n        }\n    };\n    /**\n     * Return a Rejection promise if the transition is no longer current due\n     * to a stopped router (disposed), or a new transition has started and superseded this one.\n     */\n    TransitionHook.prototype.getNotCurrentRejection = function () {\n        var router = this.transition.router;\n        // The router is stopped\n        if (router._disposed) {\n            return rejectFactory_1.Rejection.aborted(\"UIRouter instance #\" + router.$id + \" has been stopped (disposed)\").toPromise();\n        }\n        if (this.transition._aborted) {\n            return rejectFactory_1.Rejection.aborted().toPromise();\n        }\n        // This transition is no longer current.\n        // Another transition started while this hook was still running.\n        if (this.isSuperseded()) {\n            // Abort this transition\n            return rejectFactory_1.Rejection.superseded(this.options.current()).toPromise();\n        }\n    };\n    TransitionHook.prototype.toString = function () {\n        var _a = this, options = _a.options, registeredHook = _a.registeredHook;\n        var event = hof_1.parse('traceData.hookType')(options) || 'internal', context = hof_1.parse('traceData.context.state.name')(options) || hof_1.parse('traceData.context')(options) || 'unknown', name = strings_1.fnToString(registeredHook.callback);\n        return event + \" context: \" + context + \", \" + strings_1.maxLength(200, name);\n    };\n    /**\n     * These GetResultHandler(s) are used by [[invokeHook]] below\n     * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n     */\n    TransitionHook.HANDLE_RESULT = function (hook) { return function (result) {\n        return hook.handleHookResult(result);\n    }; };\n    /**\n     * If the result is a promise rejection, log it.\n     * Otherwise, ignore the result.\n     */\n    TransitionHook.LOG_REJECTED_RESULT = function (hook) { return function (result) {\n        predicates_1.isPromise(result) && result.catch(function (err) {\n            return hook.logError(rejectFactory_1.Rejection.normalize(err));\n        });\n        return undefined;\n    }; };\n    /**\n     * These GetErrorHandler(s) are used by [[invokeHook]] below\n     * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n     */\n    TransitionHook.LOG_ERROR = function (hook) { return function (error) {\n        return hook.logError(error);\n    }; };\n    TransitionHook.REJECT_ERROR = function (hook) { return function (error) {\n        return common_1.silentRejection(error);\n    }; };\n    TransitionHook.THROW_ERROR = function (hook) { return function (error) {\n        throw error;\n    }; };\n    return TransitionHook;\n}());\nexports.TransitionHook = TransitionHook;\n//# sourceMappingURL=transitionHook.js.map","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","\"use strict\";\n/**\n * Higher order functions\n *\n * These utility functions are exported, but are subject to change without notice.\n *\n * @module common_hof\n */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a new function for [Partial Application](https://en.wikipedia.org/wiki/Partial_application) of the original function.\n *\n * Given a function with N parameters, returns a new function that supports partial application.\n * The new function accepts anywhere from 1 to N parameters.  When that function is called with M parameters,\n * where M is less than N, it returns a new function that accepts the remaining parameters.  It continues to\n * accept more parameters until all N parameters have been supplied.\n *\n *\n * This contrived example uses a partially applied function as an predicate, which returns true\n * if an object is found in both arrays.\n * @example\n * ```\n * // returns true if an object is in both of the two arrays\n * function inBoth(array1, array2, object) {\n *   return array1.indexOf(object) !== -1 &&\n *          array2.indexOf(object) !== 1;\n * }\n * let obj1, obj2, obj3, obj4, obj5, obj6, obj7\n * let foos = [obj1, obj3]\n * let bars = [obj3, obj4, obj5]\n *\n * // A curried \"copy\" of inBoth\n * let curriedInBoth = curry(inBoth);\n * // Partially apply both the array1 and array2\n * let inFoosAndBars = curriedInBoth(foos, bars);\n *\n * // Supply the final argument; since all arguments are\n * // supplied, the original inBoth function is then called.\n * let obj1InBoth = inFoosAndBars(obj1); // false\n *\n * // Use the inFoosAndBars as a predicate.\n * // Filter, on each iteration, supplies the final argument\n * let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];\n * let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]\n *\n * ```\n *\n * Stolen from: http://stackoverflow.com/questions/4394747/javascript-curry-function\n *\n * @param fn\n * @returns {*|function(): (*|any)}\n */\nfunction curry(fn) {\n    var initial_args = [].slice.apply(arguments, [1]);\n    var func_args_length = fn.length;\n    function curried(args) {\n        if (args.length >= func_args_length)\n            return fn.apply(null, args);\n        return function () {\n            return curried(args.concat([].slice.apply(arguments)));\n        };\n    }\n    return curried(initial_args);\n}\nexports.curry = curry;\n/**\n * Given a varargs list of functions, returns a function that composes the argument functions, right-to-left\n * given: f(x), g(x), h(x)\n * let composed = compose(f,g,h)\n * then, composed is: f(g(h(x)))\n */\nfunction compose() {\n    var args = arguments;\n    var start = args.length - 1;\n    return function () {\n        var i = start, result = args[start].apply(this, arguments);\n        while (i--)\n            result = args[i].call(this, result);\n        return result;\n    };\n}\nexports.compose = compose;\n/**\n * Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right\n * given: f(x), g(x), h(x)\n * let piped = pipe(f,g,h);\n * then, piped is: h(g(f(x)))\n */\nfunction pipe() {\n    var funcs = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        funcs[_i] = arguments[_i];\n    }\n    return compose.apply(null, [].slice.call(arguments).reverse());\n}\nexports.pipe = pipe;\n/**\n * Given a property name, returns a function that returns that property from an object\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = prop(\"name\");\n * getName(obj) === \"blarg\"\n */\nexports.prop = function (name) {\n    return function (obj) { return obj && obj[name]; };\n};\n/**\n * Given a property name and a value, returns a function that returns a boolean based on whether\n * the passed object has a property that matches the value\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = propEq(\"name\", \"blarg\");\n * getName(obj) === true\n */\nexports.propEq = curry(function (name, _val, obj) { return obj && obj[name] === _val; });\n/**\n * Given a dotted property name, returns a function that returns a nested property from an object, or undefined\n * let obj = { id: 1, nestedObj: { foo: 1, name: \"blarg\" }, };\n * let getName = prop(\"nestedObj.name\");\n * getName(obj) === \"blarg\"\n * let propNotFound = prop(\"this.property.doesnt.exist\");\n * propNotFound(obj) === undefined\n */\nexports.parse = function (name) {\n    return pipe.apply(null, name.split('.').map(exports.prop));\n};\n/**\n * Given a function that returns a truthy or falsey value, returns a\n * function that returns the opposite (falsey or truthy) value given the same inputs\n */\nexports.not = function (fn) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return !fn.apply(null, args);\n    };\n};\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if both functions return truthy for the given arguments\n */\nfunction and(fn1, fn2) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return fn1.apply(null, args) && fn2.apply(null, args);\n    };\n}\nexports.and = and;\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if at least one of the functions returns truthy for the given arguments\n */\nfunction or(fn1, fn2) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return fn1.apply(null, args) || fn2.apply(null, args);\n    };\n}\nexports.or = or;\n/**\n * Check if all the elements of an array match a predicate function\n *\n * @param fn1 a predicate function `fn1`\n * @returns a function which takes an array and returns true if `fn1` is true for all elements of the array\n */\nexports.all = function (fn1) {\n    return function (arr) { return arr.reduce(function (b, x) { return b && !!fn1(x); }, true); };\n};\n// tslint:disable-next-line:variable-name\nexports.any = function (fn1) {\n    return function (arr) { return arr.reduce(function (b, x) { return b || !!fn1(x); }, false); };\n};\n/** Given a class, returns a Predicate function that returns true if the object is of that class */\nexports.is = function (ctor) {\n    return function (obj) {\n        return (obj != null && obj.constructor === ctor || obj instanceof ctor);\n    };\n};\n/** Given a value, returns a Predicate function that returns true if another value is === equal to the original value */\nexports.eq = function (value) { return function (other) {\n    return value === other;\n}; };\n/** Given a value, returns a function which returns the value */\nexports.val = function (v) { return function () { return v; }; };\nfunction invoke(fnName, args) {\n    return function (obj) {\n        return obj[fnName].apply(obj, args);\n    };\n}\nexports.invoke = invoke;\n/**\n * Sorta like Pattern Matching (a functional programming conditional construct)\n *\n * See http://c2.com/cgi/wiki?PatternMatching\n *\n * This is a conditional construct which allows a series of predicates and output functions\n * to be checked and then applied.  Each predicate receives the input.  If the predicate\n * returns truthy, then its matching output function (mapping function) is provided with\n * the input and, then the result is returned.\n *\n * Each combination (2-tuple) of predicate + output function should be placed in an array\n * of size 2: [ predicate, mapFn ]\n *\n * These 2-tuples should be put in an outer array.\n *\n * @example\n * ```\n *\n * // Here's a 2-tuple where the first element is the isString predicate\n * // and the second element is a function that returns a description of the input\n * let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];\n *\n * // Second tuple: predicate \"isNumber\", mapfn returns a description\n * let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];\n *\n * let third = [ (input) => input === null,  (input) => `Oh, null...` ];\n *\n * let fourth = [ (input) => input === undefined,  (input) => `notdefined` ];\n *\n * let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);\n *\n * console.log(descriptionOf(undefined)); // 'notdefined'\n * console.log(descriptionOf(55)); // '(55) That's a number!'\n * console.log(descriptionOf(\"foo\")); // 'Here's your string foo'\n * ```\n *\n * @param struct A 2D array.  Each element of the array should be an array, a 2-tuple,\n * with a Predicate and a mapping/output function\n * @returns {function(any): *}\n */\nfunction pattern(struct) {\n    return function (x) {\n        for (var i = 0; i < struct.length; i++) {\n            if (struct[i][0](x))\n                return struct[i][1](x);\n        }\n    };\n}\nexports.pattern = pattern;\n//# sourceMappingURL=hof.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar DataTransport = require('./transport');\n/**\n * A {@link DataTrackReceiver} represents a {@link DataTrackTransceiver} over\n * which data can be received. Internally, it users a single RTCDataChannel to\n * receive data.\n * @extends DataTrackTransceiver\n * @emits DataTrackReceiver#message\n * @emits DataTrackReceiver#close\n */\nvar DataTrackReceiver = /** @class */ (function (_super) {\n    __extends(DataTrackReceiver, _super);\n    /**\n     * Construct an {@link DataTrackReceiver}.\n     * @param {RTCDataChannel} dataChannel\n     */\n    function DataTrackReceiver(dataChannel) {\n        var _this = _super.call(this, dataChannel.label, dataChannel.maxPacketLifeTime, dataChannel.maxRetransmits, dataChannel.ordered) || this;\n        Object.defineProperties(_this, {\n            _dataChannel: {\n                value: dataChannel\n            }\n        });\n        // NOTE(mmalavalli): In Firefox, the default value for \"binaryType\" is \"blob\".\n        // So, we set it to \"arraybuffer\" to ensure that it is consistent with Chrome\n        // and Safari.\n        dataChannel.binaryType = 'arraybuffer';\n        dataChannel.addEventListener('message', function (event) {\n            _this.emit('message', event.data);\n        });\n        dataChannel.addEventListener('close', function () {\n            _this.emit('close');\n        });\n        return _this;\n    }\n    DataTrackReceiver.prototype.stop = function () {\n        this._dataChannel.close();\n        _super.prototype.stop.call(this);\n    };\n    /**\n     * Create a {@link DataTransport} from the {@link DataTrackReceiver}.\n     * @returns {DataTransport}\n     */\n    DataTrackReceiver.prototype.toDataTransport = function () {\n        return new DataTransport(this._dataChannel);\n    };\n    return DataTrackReceiver;\n}(DataTrackTransceiver));\n/**\n * @event DataTrackReceiver#message\n * @param {string|ArrayBuffer} data\n */\n/**\n * @event DataTrackReceiver#close\n */\nmodule.exports = DataTrackReceiver;\n//# sourceMappingURL=receiver.js.map","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n  small: function small() {\n    return createHTML(this, 'small', '', '');\n  }\n});\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @module state */ /** for typedoc */\nvar common_1 = require(\"../common/common\");\nvar predicates_1 = require(\"../common/predicates\");\nvar stateObject_1 = require(\"./stateObject\");\nvar hof_1 = require(\"../common/hof\");\n/** @internalapi */\nvar StateQueueManager = /** @class */ (function () {\n    function StateQueueManager($registry, $urlRouter, states, builder, listeners) {\n        this.$registry = $registry;\n        this.$urlRouter = $urlRouter;\n        this.states = states;\n        this.builder = builder;\n        this.listeners = listeners;\n        this.queue = [];\n        this.matcher = $registry.matcher;\n    }\n    /** @internalapi */\n    StateQueueManager.prototype.dispose = function () {\n        this.queue = [];\n    };\n    StateQueueManager.prototype.register = function (stateDecl) {\n        var queue = this.queue;\n        var state = stateObject_1.StateObject.create(stateDecl);\n        var name = state.name;\n        if (!predicates_1.isString(name))\n            throw new Error('State must have a valid name');\n        if (this.states.hasOwnProperty(name) || common_1.inArray(queue.map(hof_1.prop('name')), name))\n            throw new Error(\"State '\" + name + \"' is already defined\");\n        queue.push(state);\n        this.flush();\n        return state;\n    };\n    StateQueueManager.prototype.flush = function () {\n        var _this = this;\n        var _a = this, queue = _a.queue, states = _a.states, builder = _a.builder;\n        var registered = [], // states that got registered\n        orphans = [], // states that don't yet have a parent registered\n        previousQueueLength = {}; // keep track of how long the queue when an orphan was first encountered\n        var getState = function (name) {\n            return _this.states.hasOwnProperty(name) && _this.states[name];\n        };\n        while (queue.length > 0) {\n            var state = queue.shift();\n            var name_1 = state.name;\n            var result = builder.build(state);\n            var orphanIdx = orphans.indexOf(state);\n            if (result) {\n                var existingState = getState(name_1);\n                if (existingState && existingState.name === name_1) {\n                    throw new Error(\"State '\" + name_1 + \"' is already defined\");\n                }\n                var existingFutureState = getState(name_1 + '.**');\n                if (existingFutureState) {\n                    // Remove future state of the same name\n                    this.$registry.deregister(existingFutureState);\n                }\n                states[name_1] = state;\n                this.attachRoute(state);\n                if (orphanIdx >= 0)\n                    orphans.splice(orphanIdx, 1);\n                registered.push(state);\n                continue;\n            }\n            var prev = previousQueueLength[name_1];\n            previousQueueLength[name_1] = queue.length;\n            if (orphanIdx >= 0 && prev === queue.length) {\n                // Wait until two consecutive iterations where no additional states were dequeued successfully.\n                // throw new Error(`Cannot register orphaned state '${name}'`);\n                queue.push(state);\n                return states;\n            }\n            else if (orphanIdx < 0) {\n                orphans.push(state);\n            }\n            queue.push(state);\n        }\n        if (registered.length) {\n            this.listeners.forEach(function (listener) { return listener('registered', registered.map(function (s) { return s.self; })); });\n        }\n        return states;\n    };\n    StateQueueManager.prototype.attachRoute = function (state) {\n        if (state.abstract || !state.url)\n            return;\n        this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(state));\n    };\n    return StateQueueManager;\n}());\nexports.StateQueueManager = StateQueueManager;\n//# sourceMappingURL=stateQueueManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * # Transition tracing (debug)\n *\n * Enable transition tracing to print transition information to the console,\n * in order to help debug your application.\n * Tracing logs detailed information about each Transition to your console.\n *\n * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n *\n * ### ES6\n * ```js\n * import {trace} from \"ui-router-ng2\"; // or \"angular-ui-router\"\n * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n * ```\n *\n * ### CJS\n * ```js\n * let trace = require(\"angular-ui-router\").trace; // or \"ui-router-ng2\"\n * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n * ```\n *\n * ### Globals\n * ```js\n * let trace = window[\"angular-ui-router\"].trace; // or \"ui-router-ng2\"\n * trace.enable(); // Trace everything (very verbose)\n * ```\n *\n * ### Angular 1:\n * ```js\n * app.run($trace => $trace.enable());\n * ```\n *\n * @coreapi\n * @module trace\n */\n/* tslint:disable:no-console */\nvar hof_1 = require(\"../common/hof\");\nvar predicates_1 = require(\"../common/predicates\");\nvar strings_1 = require(\"./strings\");\n/** @hidden */\nfunction uiViewString(uiview) {\n    if (!uiview)\n        return 'ui-view (defunct)';\n    var state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n    return \"[ui-view#\" + uiview.id + \" \" + uiview.$type + \":\" + uiview.fqn + \" (\" + uiview.name + \"@\" + state + \")]\";\n}\n/** @hidden */\nvar viewConfigString = function (viewConfig) {\n    var view = viewConfig.viewDecl;\n    var state = view.$context.name || '(root)';\n    return \"[View#\" + viewConfig.$id + \" from '\" + state + \"' state]: target ui-view: '\" + view.$uiViewName + \"@\" + view.$uiViewContextAnchor + \"'\";\n};\n/** @hidden */\nfunction normalizedCat(input) {\n    return predicates_1.isNumber(input) ? Category[input] : Category[Category[input]];\n}\n/** @hidden */\nvar consoleLog = Function.prototype.bind.call(console.log, console);\n/** @hidden */\nvar consoletable = predicates_1.isFunction(console.table) ? console.table.bind(console) : consoleLog.bind(console);\n/**\n * Trace categories Enum\n *\n * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n *\n * `trace.enable(Category.TRANSITION)`\n *\n * These can also be provided using a matching string, or position ordinal\n *\n * `trace.enable(\"TRANSITION\")`\n *\n * `trace.enable(1)`\n */\nvar Category;\n(function (Category) {\n    Category[Category[\"RESOLVE\"] = 0] = \"RESOLVE\";\n    Category[Category[\"TRANSITION\"] = 1] = \"TRANSITION\";\n    Category[Category[\"HOOK\"] = 2] = \"HOOK\";\n    Category[Category[\"UIVIEW\"] = 3] = \"UIVIEW\";\n    Category[Category[\"VIEWCONFIG\"] = 4] = \"VIEWCONFIG\";\n})(Category = exports.Category || (exports.Category = {}));\n/** @hidden */\nvar _tid = hof_1.parse('$id');\n/** @hidden */\nvar _rid = hof_1.parse('router.$id');\n/** @hidden */\nvar transLbl = function (trans) { return \"Transition #\" + _tid(trans) + \"-\" + _rid(trans); };\n/**\n * Prints UI-Router Transition trace information to the console.\n */\nvar Trace = /** @class */ (function () {\n    /** @hidden */\n    function Trace() {\n        /** @hidden */\n        this._enabled = {};\n        this.approximateDigests = 0;\n    }\n    /** @hidden */\n    Trace.prototype._set = function (enabled, categories) {\n        var _this = this;\n        if (!categories.length) {\n            categories = Object.keys(Category)\n                .map(function (k) { return parseInt(k, 10); })\n                .filter(function (k) { return !isNaN(k); })\n                .map(function (key) { return Category[key]; });\n        }\n        categories.map(normalizedCat).forEach(function (category) { return _this._enabled[category] = enabled; });\n    };\n    Trace.prototype.enable = function () {\n        var categories = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            categories[_i] = arguments[_i];\n        }\n        this._set(true, categories);\n    };\n    Trace.prototype.disable = function () {\n        var categories = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            categories[_i] = arguments[_i];\n        }\n        this._set(false, categories);\n    };\n    /**\n     * Retrieves the enabled stateus of a [[Category]]\n     *\n     * ```js\n     * trace.enabled(\"VIEWCONFIG\"); // true or false\n     * ```\n     *\n     * @returns boolean true if the category is enabled\n     */\n    Trace.prototype.enabled = function (category) {\n        return !!this._enabled[normalizedCat(category)];\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceTransitionStart = function (trans) {\n        if (!this.enabled(Category.TRANSITION))\n            return;\n        console.log(transLbl(trans) + \": Started  -> \" + strings_1.stringify(trans));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceTransitionIgnored = function (trans) {\n        if (!this.enabled(Category.TRANSITION))\n            return;\n        console.log(transLbl(trans) + \": Ignored  <> \" + strings_1.stringify(trans));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceHookInvocation = function (step, trans, options) {\n        if (!this.enabled(Category.HOOK))\n            return;\n        var event = hof_1.parse('traceData.hookType')(options) || 'internal', context = hof_1.parse('traceData.context.state.name')(options) || hof_1.parse('traceData.context')(options) || 'unknown', name = strings_1.functionToString(step.registeredHook.callback);\n        console.log(transLbl(trans) + \":   Hook -> \" + event + \" context: \" + context + \", \" + strings_1.maxLength(200, name));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceHookResult = function (hookResult, trans, transitionOptions) {\n        if (!this.enabled(Category.HOOK))\n            return;\n        console.log(transLbl(trans) + \":   <- Hook returned: \" + strings_1.maxLength(200, strings_1.stringify(hookResult)));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceResolvePath = function (path, when, trans) {\n        if (!this.enabled(Category.RESOLVE))\n            return;\n        console.log(transLbl(trans) + \":         Resolving \" + path + \" (\" + when + \")\");\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceResolvableResolved = function (resolvable, trans) {\n        if (!this.enabled(Category.RESOLVE))\n            return;\n        console.log(transLbl(trans) + \":               <- Resolved  \" + resolvable + \" to: \" + strings_1.maxLength(200, strings_1.stringify(resolvable.data)));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceError = function (reason, trans) {\n        if (!this.enabled(Category.TRANSITION))\n            return;\n        console.log(transLbl(trans) + \": <- Rejected \" + strings_1.stringify(trans) + \", reason: \" + reason);\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceSuccess = function (finalState, trans) {\n        if (!this.enabled(Category.TRANSITION))\n            return;\n        console.log(transLbl(trans) + \": <- Success  \" + strings_1.stringify(trans) + \", final state: \" + finalState.name);\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceUIViewEvent = function (event, viewData, extra) {\n        if (extra === void 0) { extra = ''; }\n        if (!this.enabled(Category.UIVIEW))\n            return;\n        console.log(\"ui-view: \" + strings_1.padString(30, event) + \" \" + uiViewString(viewData) + extra);\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceUIViewConfigUpdated = function (viewData, context) {\n        if (!this.enabled(Category.UIVIEW))\n            return;\n        this.traceUIViewEvent('Updating', viewData, \" with ViewConfig from context='\" + context + \"'\");\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceUIViewFill = function (viewData, html) {\n        if (!this.enabled(Category.UIVIEW))\n            return;\n        this.traceUIViewEvent('Fill', viewData, \" with: \" + strings_1.maxLength(200, html));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceViewSync = function (pairs) {\n        if (!this.enabled(Category.VIEWCONFIG))\n            return;\n        var uivheader = 'uiview component fqn';\n        var cfgheader = 'view config state (view name)';\n        var mapping = pairs.map(function (_a) {\n            var uiView = _a.uiView, viewConfig = _a.viewConfig;\n            var uiv = uiView && uiView.fqn;\n            var cfg = viewConfig && viewConfig.viewDecl.$context.name + \": (\" + viewConfig.viewDecl.$name + \")\";\n            return _b = {}, _b[uivheader] = uiv, _b[cfgheader] = cfg, _b;\n            var _b;\n        }).sort(function (a, b) { return (a[uivheader] || '').localeCompare(b[uivheader] || ''); });\n        consoletable(mapping);\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceViewServiceEvent = function (event, viewConfig) {\n        if (!this.enabled(Category.VIEWCONFIG))\n            return;\n        console.log(\"VIEWCONFIG: \" + event + \" \" + viewConfigString(viewConfig));\n    };\n    /** @internalapi called by ui-router code */\n    Trace.prototype.traceViewServiceUIViewEvent = function (event, viewData) {\n        if (!this.enabled(Category.VIEWCONFIG))\n            return;\n        console.log(\"VIEWCONFIG: \" + event + \" \" + uiViewString(viewData));\n    };\n    return Trace;\n}());\nexports.Trace = Trace;\n/**\n * The [[Trace]] singleton\n *\n * #### Example:\n * ```js\n * import {trace} from \"angular-ui-router\";\n * trace.enable(1, 5);\n * ```\n */\nvar trace = new Trace();\nexports.trace = trace;\n//# sourceMappingURL=trace.js.map","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n  var delayMs = timeoutAtMs - Date.now();\n  handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n    return setChainedTimeout(handleRef, fn, timeoutAtMs);\n  }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n *   <div className=\"App\">\n *     {hello ? <h3>Hello</h3> : null}\n *   </div>\n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n  var isMounted = useMounted(); // types are confused between node and web here IDK\n\n  var handleRef = useRef();\n  useWillUnmount(function () {\n    return clearTimeout(handleRef.current);\n  });\n  return useMemo(function () {\n    var clear = function clear() {\n      return clearTimeout(handleRef.current);\n    };\n\n    function set(fn, delayMs) {\n      if (delayMs === void 0) {\n        delayMs = 0;\n      }\n\n      if (!isMounted()) return;\n      clear();\n\n      if (delayMs <= MAX_DELAY_MS) {\n        // For simplicity, if the timeout is short, just set a normal timeout.\n        handleRef.current = setTimeout(fn, delayMs);\n      } else {\n        setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n      }\n    }\n\n    return {\n      set: set,\n      clear: clear\n    };\n  }, []);\n}","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.combineReducers = undefined;\n\nvar _combineReducers2 = require('./combineReducers');\n\nvar _combineReducers3 = _interopRequireDefault(_combineReducers2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.combineReducers = _combineReducers3.default;\n//# sourceMappingURL=index.js.map","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/* globals RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\nvar updateTrackIdsToSSRCs = isUnifiedPlan\n    ? updateUnifiedPlanTrackIdsToSSRCs\n    : updatePlanBTrackIdsToSSRCs;\nvar SafariRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(SafariRTCPeerConnection, _super);\n    function SafariRTCPeerConnection(configuration) {\n        var _this = _super.call(this) || this;\n        interceptEvent(_this, 'datachannel');\n        interceptEvent(_this, 'iceconnectionstatechange');\n        interceptEvent(_this, 'signalingstatechange');\n        interceptEvent(_this, 'track');\n        var peerConnection = new RTCPeerConnection(configuration);\n        Object.defineProperties(_this, {\n            _appliedTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _audioTransceiver: {\n                value: null,\n                writable: true\n            },\n            _isClosed: {\n                value: false,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _pendingLocalOffer: {\n                value: null,\n                writable: true\n            },\n            _pendingRemoteOffer: {\n                value: null,\n                writable: true\n            },\n            _rolledBackTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _signalingStateLatch: {\n                value: new Latch()\n            },\n            _tracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _videoTransceiver: {\n                value: null,\n                writable: true\n            }\n        });\n        peerConnection.addEventListener('datachannel', function (event) {\n            shimDataChannel(event.channel);\n            _this.dispatchEvent(event);\n        });\n        peerConnection.addEventListener('iceconnectionstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (_this._isClosed) {\n                return;\n            }\n            _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n        });\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (_this._isClosed) {\n                return;\n            }\n            if (peerConnection.signalingState === 'stable') {\n                _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n            }\n            if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n                _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n            }\n        });\n        // NOTE(syerrapragada): This ensures that SafariRTCPeerConnection's \"remoteDescription\", when accessed\n        // in an RTCTrackEvent listener, will point to the underlying RTCPeerConnection's\n        // \"remoteDescription\". Before this fix, this was still pointing to \"_pendingRemoteOffer\"\n        // even though a new remote RTCSessionDescription had already been applied.\n        peerConnection.addEventListener('track', function (event) {\n            _this._pendingRemoteOffer = null;\n            _this.dispatchEvent(event);\n        });\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return this._pendingLocalOffer || this._peerConnection.localDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceConnectionState\", {\n        get: function () {\n            return this._isClosed ? 'closed' : this._peerConnection.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceGatheringState\", {\n        get: function () {\n            return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"remoteDescription\", {\n        get: function () {\n            return this._pendingRemoteOffer || this._peerConnection.remoteDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            if (this._isClosed) {\n                return 'closed';\n            }\n            else if (this._pendingLocalOffer) {\n                return 'have-local-offer';\n            }\n            else if (this._pendingRemoteOffer) {\n                return 'have-remote-offer';\n            }\n            return this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    SafariRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n        var _this = this;\n        if (this.signalingState === 'have-remote-offer') {\n            return this._signalingStateLatch.when('low').then(function () { return _this._peerConnection.addIceCandidate(candidate); });\n        }\n        return this._peerConnection.addIceCandidate(candidate);\n    };\n    SafariRTCPeerConnection.prototype.createOffer = function (options) {\n        var _this = this;\n        options = Object.assign({}, options);\n        // NOTE(mroberts): In general, this is not the way to do this; however, it's\n        // good enough for our application.\n        if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n            delete options.offerToReceiveAudio;\n            try {\n                this._audioTransceiver = isUnifiedPlan\n                    ? this.addTransceiver('audio', { direction: 'recvonly' })\n                    : this.addTransceiver('audio');\n            }\n            catch (e) {\n                return Promise.reject(e);\n            }\n        }\n        if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n            delete options.offerToReceiveVideo;\n            try {\n                this._videoTransceiver = isUnifiedPlan\n                    ? this.addTransceiver('video', { direction: 'recvonly' })\n                    : this.addTransceiver('video');\n            }\n            catch (e) {\n                return Promise.reject(e);\n            }\n        }\n        return this._peerConnection.createOffer(options).then(function (offer) {\n            // NOTE(mmalavalli): If createOffer() is called immediately after rolling back,\n            // then we no longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return new RTCSessionDescription({\n                type: offer.type,\n                sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, offer.sdp)\n            });\n        });\n    };\n    SafariRTCPeerConnection.prototype.createAnswer = function (options) {\n        var _this = this;\n        if (this._pendingRemoteOffer) {\n            return this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n                _this._signalingStateLatch.lower();\n                return _this._peerConnection.createAnswer();\n            }).then(function (answer) {\n                _this._pendingRemoteOffer = null;\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return isUnifiedPlan ? new RTCSessionDescription({\n                    type: answer.type,\n                    sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n                }) : answer;\n            }, function (error) {\n                _this._pendingRemoteOffer = null;\n                throw error;\n            });\n        }\n        return this._peerConnection.createAnswer(options).then(function (answer) {\n            // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n            // longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return isUnifiedPlan ? new RTCSessionDescription({\n                type: answer.type,\n                sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n            }) : answer;\n        });\n    };\n    SafariRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n        var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n        shimDataChannel(dataChannel);\n        return dataChannel;\n    };\n    SafariRTCPeerConnection.prototype.removeTrack = function (sender) {\n        sender.replaceTrack(null);\n        this._peerConnection.removeTrack(sender);\n    };\n    SafariRTCPeerConnection.prototype.setLocalDescription = function (description) {\n        // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n        // then we need to restore the rolled back tracks to SSRCs Map.\n        if (this._rolledBackTracksToSSRCs.size > 0) {\n            this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n            this._rolledBackTracksToSSRCs.clear();\n        }\n        return setDescription(this, true, description);\n    };\n    SafariRTCPeerConnection.prototype.setRemoteDescription = function (description) {\n        // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n        // then we no longer need to retain the rolled back tracks to SSRCs Map.\n        this._rolledBackTracksToSSRCs.clear();\n        return setDescription(this, false, description);\n    };\n    SafariRTCPeerConnection.prototype.close = function () {\n        var _this = this;\n        if (this._isClosed) {\n            return;\n        }\n        this._isClosed = true;\n        this._peerConnection.close();\n        setTimeout(function () {\n            _this.dispatchEvent(new Event('iceconnectionstatechange'));\n            _this.dispatchEvent(new Event('signalingstatechange'));\n        });\n    };\n    return SafariRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, SafariRTCPeerConnection.prototype, '_peerConnection');\nfunction setDescription(peerConnection, local, description) {\n    function setPendingLocalOffer(offer) {\n        if (local) {\n            peerConnection._pendingLocalOffer = offer;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = offer;\n        }\n    }\n    function clearPendingLocalOffer() {\n        if (local) {\n            peerConnection._pendingLocalOffer = null;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = null;\n        }\n    }\n    var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n    var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n    var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    if (!local && pendingRemoteOffer && description.type === 'answer') {\n        return setRemoteAnswer(peerConnection, description);\n    }\n    else if (description.type === 'offer') {\n        if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n            return Promise.reject(new Error(\"Cannot set \" + (local ? 'local' : 'remote') + \"\\n        offer in state \" + peerConnection.signalingState));\n        }\n        if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n            peerConnection._signalingStateLatch.raise();\n        }\n        var previousSignalingState = peerConnection.signalingState;\n        setPendingLocalOffer(description);\n        // Only dispatch a signalingstatechange event if we transitioned.\n        if (peerConnection.signalingState !== previousSignalingState) {\n            return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n        return Promise.resolve();\n    }\n    else if (description.type === 'rollback') {\n        if (peerConnection.signalingState !== intermediateState) {\n            return Promise.reject(new Error(\"Cannot rollback \\n        \" + (local ? 'local' : 'remote') + \" description in \" + peerConnection.signalingState));\n        }\n        clearPendingLocalOffer();\n        // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n        // setLocalDescription() is called immediately aftera rollback (without calling\n        // createOffer() or createAnswer()), in which case this roll back is not due to\n        // a glare scenario and this Map should be restored.\n        peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n        peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n        return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n    }\n    return peerConnection._peerConnection[setLocalDescription](description);\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n    var pendingLocalOffer = peerConnection._pendingLocalOffer;\n    return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n        peerConnection._pendingLocalOffer = null;\n        return peerConnection.setRemoteDescription(answer);\n    }).then(function () { return peerConnection._signalingStateLatch.lower(); });\n}\n/**\n * Whether a SafariRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {SafariRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n    return !!peerConnection.getTransceivers().find(function (_a) {\n        var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n        var _c = receiver.track, track = _c === void 0 ? {} : _c;\n        return track.kind === kind;\n    });\n}\n/**\n * Shim an RTCDataChannel. This function mutates the RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n    return Object.defineProperties(dataChannel, {\n        maxPacketLifeTime: {\n            value: dataChannel.maxPacketLifeTime === 65535\n                ? null\n                : dataChannel.maxPacketLifeTime\n        },\n        maxRetransmits: {\n            value: dataChannel.maxRetransmits === 65535\n                ? null\n                : dataChannel.maxRetransmits\n        }\n    });\n}\nmodule.exports = SafariRTCPeerConnection;\n//# sourceMappingURL=safari.js.map","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n  anchor: function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  }\n});\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var isEqual = require('lodash/isEqual')\nvar sortBy = require('lodash/sortBy')\nvar uniq = require('lodash/uniq')\nvar uniqWith = require('lodash/uniqWith')\nvar defaults = require('lodash/defaults')\nvar intersectionWith = require('lodash/intersectionWith')\nvar isPlainObject = require('lodash/isPlainObject')\nvar isBoolean = require('lodash/isBoolean')\n\nvar normalizeArray = val => Array.isArray(val)\n  ? val : [val]\nvar undef = val => val === undefined\nvar keys = obj => isPlainObject(obj) || Array.isArray(obj) ? Object.keys(obj) : []\nvar has = (obj, key) => obj.hasOwnProperty(key)\nvar stringArray = arr => sortBy(uniq(arr))\nvar undefEmpty = val => undef(val) || (Array.isArray(val) && val.length === 0)\nvar keyValEqual = (a, b, key, compare) => b && has(b, key) && a && has(a, key) && compare(a[key], b[key])\nvar undefAndZero = (a, b) => (undef(a) && b === 0) || (undef(b) && a === 0) || isEqual(a, b)\nvar falseUndefined = (a, b) => (undef(a) && b === false) || (undef(b) && a === false) || isEqual(a, b)\nvar emptySchema = schema => undef(schema) || isEqual(schema, {}) || schema === true\nvar emptyObjUndef = schema => undef(schema) || isEqual(schema, {})\nvar isSchema = val => undef(val) || isPlainObject(val) || val === true || val === false\n\nfunction undefArrayEqual(a, b) {\n  if (undefEmpty(a) && undefEmpty(b)) {\n    return true\n  } else {\n    return isEqual(stringArray(a), stringArray(b))\n  }\n}\n\nfunction unsortedNormalizedArray(a, b) {\n  a = normalizeArray(a)\n  b = normalizeArray(b)\n  return isEqual(stringArray(a), stringArray(b))\n}\n\nfunction schemaGroup(a, b, key, compare) {\n  var allProps = uniq(keys(a).concat(keys(b)))\n  if (emptyObjUndef(a) && emptyObjUndef(b)) {\n    return true\n  } else if (emptyObjUndef(a) && keys(b).length) {\n    return false\n  } else if (emptyObjUndef(b) && keys(a).length) {\n    return false\n  }\n\n  return allProps.every(function(key) {\n    var aVal = a[key]\n    var bVal = b[key]\n    if (Array.isArray(aVal) && Array.isArray(bVal)) {\n      return isEqual(stringArray(a), stringArray(b))\n    } else if (Array.isArray(aVal) && !Array.isArray(bVal)) {\n      return false\n    } else if (Array.isArray(bVal) && !Array.isArray(aVal)) {\n      return false\n    }\n    return keyValEqual(a, b, key, compare)\n  })\n}\n\nfunction items(a, b, key, compare) {\n  if (isPlainObject(a) && isPlainObject(b)) {\n    return compare(a, b)\n  } else if (Array.isArray(a) && Array.isArray(b)) {\n    return schemaGroup(a, b, key, compare)\n  } else {\n    return isEqual(a, b)\n  }\n}\n\nfunction unsortedArray(a, b, key, compare) {\n  var uniqueA = uniqWith(a, compare)\n  var uniqueB = uniqWith(b, compare)\n  var inter = intersectionWith(uniqueA, uniqueB, compare)\n  return inter.length === Math.max(uniqueA.length, uniqueB.length)\n}\n\nvar comparers = {\n  title: isEqual,\n  uniqueItems: falseUndefined,\n  minLength: undefAndZero,\n  minItems: undefAndZero,\n  minProperties: undefAndZero,\n  required: undefArrayEqual,\n  enum: undefArrayEqual,\n  type: unsortedNormalizedArray,\n  items: items,\n  anyOf: unsortedArray,\n  allOf: unsortedArray,\n  oneOf: unsortedArray,\n  properties: schemaGroup,\n  patternProperties: schemaGroup,\n  dependencies: schemaGroup\n}\n\nvar acceptsUndefined = [\n  'properties',\n  'patternProperties',\n  'dependencies',\n  'uniqueItems',\n  'minLength',\n  'minItems',\n  'minProperties',\n  'required'\n]\n\nvar schemaProps = ['additionalProperties', 'additionalItems', 'contains', 'propertyNames', 'not']\n\nfunction compare(a, b, options) {\n  options = defaults(options, {\n    ignore: []\n  })\n\n  if (emptySchema(a) && emptySchema(b)) {\n    return true\n  }\n\n  if (!isSchema(a) || !isSchema(b)) {\n    throw new Error('Either of the values are not a JSON schema.')\n  }\n  if (a === b) {\n    return true\n  }\n\n  if (isBoolean(a) && isBoolean(b)) {\n    return a === b\n  }\n\n  if ((a === undefined && b === false) || (b === undefined && a === false)) {\n    return false\n  }\n\n  if ((undef(a) && !undef(b)) || (!undef(a) && undef(b))) {\n    return false\n  }\n\n  var allKeys = uniq(Object.keys(a).concat(Object.keys(b)))\n\n  if (options.ignore.length) {\n    allKeys = allKeys.filter(k => options.ignore.indexOf(k) === -1)\n  }\n\n  if (!allKeys.length) {\n    return true\n  }\n\n  function innerCompare(a, b) {\n    return compare(a, b, options)\n  }\n\n  return allKeys.every(function(key) {\n    var aValue = a[key]\n    var bValue = b[key]\n\n    if (schemaProps.indexOf(key) !== -1) {\n      return compare(aValue, bValue, options)\n    }\n\n    var comparer = comparers[key]\n    if (!comparer) {\n      comparer = isEqual\n    }\n\n    // do simple lodash check first\n    if (isEqual(aValue, bValue)) {\n      return true\n    }\n\n    if (acceptsUndefined.indexOf(key) === -1) {\n      if ((!has(a, key) && has(b, key)) || (has(a, key) && !has(b, key))) {\n        return aValue === bValue\n      }\n    }\n\n    var result = comparer(aValue, bValue, key, innerCompare)\n    if (!isBoolean(result)) {\n      throw new Error('Comparer must return true or false')\n    }\n    return result\n  })\n}\n\nmodule.exports = compare\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _immutable = require(\"immutable\");\n\nvar _getIn = _interopRequireDefault(require(\"./getIn\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar structure = {\n  fromJS: function fromJS(jsValue) {\n    return (0, _immutable.fromJS)(jsValue, function (key, value) {\n      return _immutable.Iterable.isIndexed(value) ? value.toList() : value.toMap();\n    });\n  },\n  getIn: _getIn[\"default\"],\n  merge: function merge(state, payload) {\n    return state.merge(payload);\n  },\n  toJS: function toJS(value) {\n    return _immutable.Iterable.isIterable(value) ? value.toJS() : value;\n  }\n};\nvar _default = structure;\nexports[\"default\"] = _default;","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast =\n            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n                ' '\n            ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort:\n            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n                '_'\n            ),\n        weekdays:\n            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n                '_'\n            ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","'use strict';\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./webrtc/util'), guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion, isCodecSupported = _a.isCodecSupported;\nvar createCancelableRoomPromise = require('./cancelableroompromise');\nvar EncodingParametersImpl = require('./encodingparameters');\nvar LocalParticipant = require('./localparticipant');\nvar InsightsPublisher = require('./util/insightspublisher');\nvar NullInsightsPublisher = require('./util/insightspublisher/null');\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar NetworkQualityConfigurationImpl = require('./networkqualityconfiguration');\nvar Room = require('./room');\nvar SignalingV2 = require('./signaling/v2');\nvar _c = require('./util'), asLocalTrack = _c.asLocalTrack, buildLogLevels = _c.buildLogLevels, filterObject = _c.filterObject, isNonArrayObject = _c.isNonArrayObject;\nvar _d = require('./util/constants'), DEFAULT_ENVIRONMENT = _d.DEFAULT_ENVIRONMENT, DEFAULT_LOG_LEVEL = _d.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _d.DEFAULT_LOGGER_NAME, DEFAULT_REALM = _d.DEFAULT_REALM, DEFAULT_REGION = _d.DEFAULT_REGION, WS_SERVER = _d.WS_SERVER, SDK_NAME = _d.SDK_NAME, SDK_VERSION = _d.SDK_VERSION, E = _d.typeErrors;\nvar CancelablePromise = require('./util/cancelablepromise');\nvar EventObserver = require('./util/eventobserver');\nvar DefaultLog = require('./util/log');\nvar validateBandwidthProfile = require('./util/validate').validateBandwidthProfile;\nvar safariVersion = guessBrowser() === 'safari' && guessBrowserVersion();\n// This is used to make out which connect() call a particular Log statement\n// belongs to. Each call to connect() increments this counter.\nvar connectCalls = 0;\nvar didPrintSafariWarning = false;\nvar isSafariWithoutVP8Support = false;\nif (safariVersion) {\n    var safariMajorVersion = safariVersion.major, safariMinorVersion = safariVersion.minor;\n    isSafariWithoutVP8Support = safariMajorVersion < 12 || (safariMajorVersion === 12 && safariMinorVersion < 1);\n}\nvar deprecatedConnectOptionsProps = new Set([\n    { didWarn: false, shouldDelete: true, name: 'abortOnIceServersTimeout' },\n    { didWarn: false, shouldDelete: true, name: 'dscpTagging', newName: 'enableDscp' },\n    { didWarn: false, shouldDelete: true, name: 'iceServersTimeout' },\n    { didWarn: false, shouldDelete: false, name: 'eventListener', newName: 'Video.Logger' },\n    { didWarn: false, shouldDelete: false, name: 'logLevel', newName: 'Video.Logger' },\n]);\nvar deprecatedBandwidthProfileOptions = new Set([\n    { didWarn: false, shouldDelete: false, name: 'maxTracks', newName: 'bandwidthProfile.video.clientTrackSwitchOffControl' },\n    { didWarn: false, shouldDelete: false, name: 'renderDimensions', newName: 'bandwidthProfile.video.contentPreferencesMode' },\n]);\n/**\n * Connect to a {@link Room}.\n *   <br><br>\n *   By default, this will automatically acquire an array containing a\n *   {@link LocalAudioTrack} and {@link LocalVideoTrack} before connecting to\n *   the {@link Room}. These will be stopped when you disconnect from the\n *   {@link Room}.\n *   <br><br>\n *   You can override the default behavior by specifying\n *   <code>options</code>. For example, rather than acquiring a\n *   {@link LocalAudioTrack} and {@link LocalVideoTrack} automatically, you can\n *   pass your own array which you can stop yourself. See {@link ConnectOptions}\n *   for more information.\n * @alias module:twilio-video.connect\n * @param {string} token - The Access Token string\n * @param {ConnectOptions} [options] - Options to override the default behavior, invalid options are ignored.\n * @returns {CancelablePromise<Room>}\n * @throws {RangeError}\n * @throws {TwilioError}\n * @throws {TypeError}\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n * Video.connect(token, {\n *   name: 'my-cool-room'\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with audio-only\n * Video.connect(token, {\n *   name: 'my-cool-room',\n *   audio: true\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n *\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with media acquired using getUserMedia()\n * navigator.mediaDevices.getUserMedia({\n *   audio: true,\n *   video: true\n * }).then(function(mediaStream) {\n *   return Video.connect(token, {\n *     name: 'my-cool-room',\n *     tracks: mediaStream.getTracks()\n *   });\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n *\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with custom names for LocalAudioTrack and LocalVideoTrack\n * Video.connect(token, {\n *   name: 'my-cool-room'\n *   audio: { name: 'microphone' },\n *   video: { name: 'camera' }\n * }).then(function(room) {\n *   room.localParticipants.trackPublications.forEach(function(publication) {\n *     console.log('The LocalTrack \"' + publication.trackName + '\" was successfully published');\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * // Accessing the SDK logger\n * var { Logger, connect } = require('twilio-video');\n * var token = getAccessToken();\n *\n * var logger = Logger.getLogger('twilio-video');\n *\n * // Listen for logs\n * var originalFactory = logger.methodFactory;\n * logger.methodFactory = function (methodName, logLevel, loggerName) {\n *   var method = originalFactory(methodName, logLevel, loggerName);\n *\n *   return function (datetime, logLevel, component, message, data) {\n *     method(datetime, logLevel, component, message, data);\n *     // Send to your own server\n *     postDataToServer(arguments);\n *   };\n * };\n * logger.setLevel('debug');\n *\n * connect(token, {\n *   name: 'my-cool-room'\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n */\nfunction connect(token, options) {\n    if (typeof options === 'undefined') {\n        options = {};\n    }\n    if (!isNonArrayObject(options)) {\n        return CancelablePromise.reject(E.INVALID_TYPE('options', 'object'));\n    }\n    var Log = options.Log || DefaultLog;\n    var loggerName = options.loggerName || DEFAULT_LOGGER_NAME;\n    var logLevel = options.logLevel || DEFAULT_LOG_LEVEL;\n    var logLevels = buildLogLevels(logLevel);\n    var logComponentName = \"[connect #\" + ++connectCalls + \"]\";\n    var log;\n    try {\n        log = new Log('default', logComponentName, logLevels, loggerName);\n    }\n    catch (error) {\n        return CancelablePromise.reject(error);\n    }\n    // NOTE(csantos): Log a warning for the deprecated ConnectOptions properties.\n    // The warning is displayed only for the first call to connect() per browser session.\n    // Additionally, the options that are no longer needed will be removed.\n    deprecateOptions(options, log, deprecatedConnectOptionsProps);\n    var adaptiveSimulcast = options.preferredVideoCodecs === 'auto';\n    if (adaptiveSimulcast) {\n        // NOTE(mpatwardhan): enable adaptiveSimulcast.\n        options.preferredVideoCodecs = [{ codec: 'VP8', simulcast: true, adaptiveSimulcast: true }];\n    }\n    if (options.maxVideoBitrate && adaptiveSimulcast) {\n        log.error('ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"');\n        return CancelablePromise.reject(E.ILLEGAL_INVOKE('connect', 'ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"'));\n    }\n    options = Object.assign({\n        automaticSubscription: true,\n        dominantSpeaker: false,\n        enableDscp: false,\n        environment: DEFAULT_ENVIRONMENT,\n        eventListener: null,\n        insights: true,\n        LocalAudioTrack: LocalAudioTrack,\n        LocalDataTrack: LocalDataTrack,\n        LocalParticipant: LocalParticipant,\n        LocalVideoTrack: LocalVideoTrack,\n        Log: Log,\n        MediaStreamTrack: MediaStreamTrack,\n        loggerName: loggerName,\n        logLevel: logLevel,\n        maxAudioBitrate: null,\n        maxVideoBitrate: null,\n        name: null,\n        networkMonitor: true,\n        networkQuality: false,\n        preferredAudioCodecs: [],\n        preferredVideoCodecs: [],\n        realm: DEFAULT_REALM,\n        region: DEFAULT_REGION,\n        signaling: SignalingV2\n    }, filterObject(options));\n    /* eslint new-cap:0 */\n    var eventPublisherOptions = {};\n    if (typeof options.wsServerInsights === 'string') {\n        eventPublisherOptions.gateway = options.wsServerInsights;\n    }\n    var EventPublisher = options.insights ? InsightsPublisher : NullInsightsPublisher;\n    var eventPublisher = new EventPublisher(token, SDK_NAME, SDK_VERSION, options.environment, options.realm, eventPublisherOptions);\n    var wsServer = WS_SERVER(options.environment, options.region);\n    var eventObserver = new EventObserver(eventPublisher, Date.now(), log, options.eventListener);\n    options = Object.assign({ eventObserver: eventObserver, wsServer: wsServer }, options);\n    options.log = log;\n    // NOTE(mroberts): Print the Safari warning once if the log-level is at least\n    // \"warn\", i.e. neither \"error\" nor \"off\".\n    // NOTE(mmalavalli): Print the Safari warning only for versions 12.0 and below.\n    if (isSafariWithoutVP8Support\n        && !didPrintSafariWarning\n        && (log.logLevel !== 'error' && log.logLevel !== 'off')) {\n        didPrintSafariWarning = true;\n        log.warn([\n            'Support for Safari 12.0 and below is limited because it does not support VP8.',\n            'This means you may experience codec issues in Group Rooms. You may also',\n            'experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or',\n            'iOS-based Participants who do not support H.264. However, P2P Rooms',\n            'with browser-based Participants should work. For more information, please',\n            'refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11'\n        ].join(' '));\n    }\n    if (typeof token !== 'string') {\n        return CancelablePromise.reject(E.INVALID_TYPE('token', 'string'));\n    }\n    // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n    // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n    // \"options\" without the \"name\".\n    var localTrackOptions = Object.assign({}, options);\n    delete localTrackOptions.name;\n    if ('tracks' in options) {\n        if (!Array.isArray(options.tracks)) {\n            return CancelablePromise.reject(E.INVALID_TYPE('options.tracks', 'Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack'));\n        }\n        try {\n            options.tracks = options.tracks.map(function (track) { return asLocalTrack(track, localTrackOptions); });\n        }\n        catch (error) {\n            return CancelablePromise.reject(error);\n        }\n    }\n    var error = validateBandwidthProfile(options.bandwidthProfile);\n    if (error) {\n        return CancelablePromise.reject(error);\n    }\n    // Note(mpatwardhan): \"clientTrackSwitchOffControl\" allows tracks to be switched off\n    // and \"contentPreferencesMode\" allows track dimensions to be specified dynamically.\n    // The properties can have one of the three values internally:\n    // 1) \"auto\" = sdk will decide and send the hints.\n    // 2) \"manual\" - app can use api to send the hints.\n    // 3) \"disabled\" = do not enable this feature. (this is internal only value)\n    // 'disabled' is needed because clientTrackSwitchOffControl and contentPreferencesMode are incompatible with\n    // deprecated properties maxTracks and renderDimensions respectively. once we make @breaking_version_change\n    // we can remove 'disabled' state along with maxTracks and renderDimensions.\n    options.clientTrackSwitchOffControl = 'disabled'; // should sdk turn off idle tracks automatically?\n    options.contentPreferencesMode = 'disabled'; // should sdk  use video element dimensions for content hints?\n    if (options.bandwidthProfile) {\n        options.clientTrackSwitchOffControl = 'auto';\n        options.contentPreferencesMode = 'auto';\n        if (options.bandwidthProfile.video) {\n            // log any warnings about deprecated bwp options\n            deprecateOptions(options.bandwidthProfile.video, log, deprecatedBandwidthProfileOptions);\n            if ('maxTracks' in options.bandwidthProfile.video) {\n                // when deprecated maxTracks is specified. disable clientTrackSwitchOffControl\n                options.clientTrackSwitchOffControl = 'disabled';\n            }\n            else if (options.bandwidthProfile.video.clientTrackSwitchOffControl === 'manual') {\n                options.clientTrackSwitchOffControl = 'manual';\n            }\n            else {\n                options.clientTrackSwitchOffControl = 'auto';\n            }\n            if ('renderDimensions' in options.bandwidthProfile.video) {\n                options.contentPreferencesMode = 'disabled';\n            }\n            else if (options.bandwidthProfile.video.contentPreferencesMode === 'manual') {\n                options.contentPreferencesMode = 'manual';\n            }\n            else {\n                options.contentPreferencesMode = 'auto';\n            }\n        }\n    }\n    var Signaling = options.signaling;\n    var signaling = new Signaling(options.wsServer, options);\n    log.info('Connecting to a Room');\n    log.debug('Options:', options);\n    var encodingParameters = new EncodingParametersImpl({\n        maxAudioBitrate: options.maxAudioBitrate,\n        maxVideoBitrate: options.maxVideoBitrate\n    }, adaptiveSimulcast);\n    var preferredCodecs = {\n        audio: options.preferredAudioCodecs.map(normalizeCodecSettings),\n        video: options.preferredVideoCodecs.map(normalizeCodecSettings)\n    };\n    var networkQualityConfiguration = new NetworkQualityConfigurationImpl(isNonArrayObject(options.networkQuality) ? options.networkQuality : {});\n    // Log warnings for any unsupported preferred codecs.\n    ['audio', 'video'].forEach(function (kind) { return preferredCodecs[kind].forEach(function (_a) {\n        var codec = _a.codec;\n        return isCodecSupported(codec, kind).then(function (isSupported) { return !isSupported && log.warn(\"The preferred \" + kind + \" codec \\\"\" + codec + \"\\\" will be ignored as it is not supported by the browser.\"); });\n    }); });\n    // Create a CancelableRoomPromise<Room> that resolves after these steps:\n    // 1 - Get the LocalTracks.\n    // 2 - Create the LocalParticipant using options.tracks.\n    // 3 - Connect to rtc-room-service and create the RoomSignaling.\n    // 4 - Create the Room and then resolve the CancelablePromise.\n    var cancelableRoomPromise = createCancelableRoomPromise(getLocalTracks.bind(null, options), createLocalParticipant.bind(null, signaling, log, encodingParameters, networkQualityConfiguration, options), createRoomSignaling.bind(null, token, options, signaling, encodingParameters, preferredCodecs), createRoom.bind(null, options));\n    cancelableRoomPromise.then(function (room) {\n        eventPublisher.connect(room.sid, room.localParticipant.sid);\n        log.info('Connected to Room:', room.toString());\n        log.info('Room name:', room.name);\n        log.debug('Room:', room);\n        room.once('disconnected', function () { return eventPublisher.disconnect(); });\n        return room;\n    }, function (error) {\n        eventPublisher.disconnect();\n        if (cancelableRoomPromise._isCanceled) {\n            log.info('Attempt to connect to a Room was canceled');\n        }\n        else {\n            log.info('Error while connecting to a Room:', error);\n        }\n    });\n    return cancelableRoomPromise;\n}\n/**\n * You may pass these options to {@link connect} in order to override the\n * default behavior.\n * @typedef {object} ConnectOptions\n * @property {boolean|CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [audio=true] - Whether or not to\n *   get local audio with <code>getUserMedia</code> when <code>tracks</code>\n *   are not provided.\n * @property {boolean} [automaticSubscription=true] - By default, you will subscribe\n *   to all RemoteTracks shared by other Participants in a Room. You can now override this\n *   behavior by setting this flag to <code>false</code>. It will make sure that you will\n *   not subscribe to any RemoteTrack in a Group or Small Group Room. Setting it to\n *   <code>true</code>, or not setting it at all preserves the default behavior. This\n *   flag does not have any effect in a Peer-to-Peer Room.\n * @property {BandwidthProfileOptions} [bandwidthProfile] - You can optionally configure\n *   how your available downlink bandwidth is shared among the RemoteTracks you have subscribed\n *   to in a Group Room. By default, bandwidth is shared equally among the RemoteTracks.\n *   This has no effect in Peer-to-Peer Rooms.\n * @property {boolean} [dominantSpeaker=false] - Whether to enable the Dominant\n *   Speaker API or not. This only takes effect in Group Rooms.\n * @property {boolean} [dscpTagging=false] - <code>(deprecated: use \"enableDscp\" instead)</code>\n *   DSCP tagging allows you to request enhanced QoS treatment for RTP media packets from any\n *   firewall that the client may be behind. Setting this option to <code>true</code> will\n *   request DSCP tagging for media packets on supported browsers (only Chrome supports this\n *   as of now). Audio packets will be sent with DSCP header value set to 0xb8 which corresponds\n *   to Expedited Forwarding (EF). Video packets will be sent with DSCP header value set to 0x88\n *   which corresponds to Assured Forwarding (AF41).\n * @property {boolean} [enableDscp=false] - DSCP tagging allows you to request enhanced\n *   QoS treatment for RTP media packets from any firewall that the client may be behind.\n *   Setting this option to <code>true</code> will request DSCP tagging for media packets\n *   on supported browsers (only Chrome supports this as of now). Audio packets will be\n *   sent with DSCP header value set to 0xb8 which corresponds to Expedited Forwarding (EF).\n *   Video packets will be sent with DSCP header value set to 0x88 which corresponds to\n *   Assured Forwarding (AF41).\n * @property {EventListener} [eventListener] - <code>(deprecated: use [Video.Logger](module-twilio-video.html)</code>\n *   you can listen to fine-grained events related to signaling and media that are\n *   not available in the public APIs. These events might be useful for your own reporting\n *   and diagnostics.\n * @property {Array<RTCIceServer>} iceServers - Override the STUN and TURN\n *   servers used when connecting to {@link Room}s\n * @property {RTCIceTransportPolicy} [iceTransportPolicy=\"all\"] - Override the\n *   ICE transport policy to be one of \"relay\" or \"all\"\n * @property {boolean} [insights=true] - Whether publishing events\n *   to the Insights gateway is enabled or not\n * @property {?number} [maxAudioBitrate=null] - Max outgoing audio bitrate (bps);\n *   A <code>null</code> or a <code>0</code> value does not set any bitrate limit;\n *   This value is set as a hint for variable bitrate codecs, but will not take\n *   effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n *   support a bitrate range of 12000 bps to 256000 bps for Opus codec; This parameter\n *   has no effect on iSAC, PCMU and PCMA codecs\n * @property {?number} [maxVideoBitrate=null] - Max outgoing video bitrate (bps);\n *   A <code>null</code> or <code>0</code> value does not set any bitrate limit;\n *   This value is set as a hint for variable bitrate codecs, but will not take\n *   effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n *   all seem to support an average bitrate range of 20000 bps (20 kbps) to\n *   8000000 bps (8 mbps) for a 720p VideoTrack\n *   This parameter must not be set when when preferredVideoCodecs is set to `auto`.\n * @property {?string} [name=null] - Set to connect to a {@link Room} by name\n * @property {boolean|NetworkQualityConfiguration} [networkQuality=false] - Whether to enable the Network\n *   Quality API or not. This only takes effect in Group Rooms. Pass a {@link NetworkQualityConfiguration}\n *   to configure verbosity levels for network quality information for {@link LocalParticipant}\n *   and {@link RemoteParticipant}s. A <code>true</code> value will set the {@link NetworkQualityVerbosity}\n *   for the {@link LocalParticipant} to {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   and the {@link NetworkQualityVerbosity} for {@link RemoteParticipant}s to\n *   {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#none</code>.\n * @property {Array<string>} [notifyWarnings=[]] - The SDK raises warning events when it\n *   detects certain conditions. You can implement callbacks on these events to act on them, or to alert\n *   the user of an issue. Subsequently, \"warningsCleared\" event is raised when conditions have returned\n *   to normal. You can listen to these events by specifying an array of warning. By default,\n *   this array is empty and no warning events will be raised.\n *   Possible values include <code>recording-media-lost</code>, which is raised when the media server\n *   has not detected any media on the published track that is being recorded in the past 30 seconds.\n *   This usually happens when there are network interruptions or when the track has stopped.\n *   This warning is raised by {@link LocalTrackPublication}, {@link LocalParticipant}, and {@link Room} object.\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n *   nearest signaling server determined by latency based routing. Setting a value other\n *   than <code style=\"padding:0 0\">gll</code> bypasses routing and guarantees that signaling traffic will be\n *   terminated in the region that you prefer. Please refer to this <a href=\"https://www.twilio.com/docs/video/ip-address-whitelisting#signaling-communication\" target=\"_blank\">table</a>\n *   for the list of supported signaling regions.\n * @property {Array<AudioCodec|AudioCodecSettings>} [preferredAudioCodecs=[]] - Preferred audio codecs;\n *  An empty array preserves the current audio codec preference order.\n * @property {Array<VideoCodec|VideoCodecSettings>|VideoEncodingMode} [preferredVideoCodecs=[]] -\n *  Preferred video codecs; when set to 'VideoEncodingMode.Auto', SDK manages the video codec,\n *  by preferring VP8 simulcast in group rooms. It also enables adaptive simulcast, which allows SDK\n *  to turn off simulcast layers that are not needed for efficient bandwidth and CPU usage.\n *  An empty array preserves the current video codec.\n *  preference order. If you want to set a preferred video codec on a Group Room,\n *  you will need to create the Room using the REST API and set the\n *  <code>VideoCodecs</code> property.\n *  See <a href=\"https://www.twilio.com/docs/api/video/rooms-resource#create-room\">\n *  here</a> for more information.\n * @property {LogLevel|LogLevels} [logLevel='warn'] - <code>(deprecated: use [Video.Logger](module-twilio-video.html) instead.\n *   See [examples](module-twilio-video.html#.connect) for details)</code>\n *   Set the default log verbosity\n *   of logging. Passing a {@link LogLevel} string will use the same\n *   level for all components. Pass a {@link LogLevels} to set specific log\n *   levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n *   See [examples](module-twilio-video.html#.connect) for details.\n * @property {Array<LocalTrack|MediaStreamTrack>} [tracks] - The\n *   {@link LocalTrack}s or MediaStreamTracks with which to join the\n *   {@link Room}. These tracks can be obtained either by calling\n *   {@link createLocalTracks}, or by constructing them from the MediaStream\n *   obtained by calling <code>getUserMedia()</code>.\n * @property {boolean|CreateLocalTrackOptions} [video=true] - Whether or not to\n *   get local video with <code>getUserMedia</code> when <code>tracks</code>\n *   are not provided.\n */\n/**\n * {@link BandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the RemoteTracks you have subscribed to in a Group Room.\n * @typedef {object} BandwidthProfileOptions\n * @property {VideoBandwidthProfileOptions} [video] - Optional parameter to configure\n *   how your available downlink bandwidth is shared among the {@link RemoteVideoTrack}s you\n *   have subscribed to in a Group Room.\n */\n/**\n * {@link VideoBandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the {@link RemoteVideoTrack}s you have subscribed to in a Group Room.\n * @typedef {object} VideoBandwidthProfileOptions\n * @property {Track.Priority} [dominantSpeakerPriority=\"standard\"] - Optional parameter to\n *   specify the minimum subscribe {@link Track.Priority} of the Dominant Speaker's {@link RemoteVideoTrack}s.\n *   This means that the Dominant Speaker's {@link RemoteVideoTrack}s that are published with\n *   lower {@link Track.Priority} will be subscribed to with the {@link Track.Priority} specified here.\n *   This has no effect on {@link RemoteVideoTrack}s published with higher {@link Track.Priority}, which will\n *   still be subscribed to with with the same {@link Track.Priority}. If not specified, this defaults to \"standard\".\n *   This parameter only applies to a Group Room Participant when {@link ConnectOptions}.dominantSpeaker is set to true.\n * @property {number} [maxSubscriptionBitrate] - Optional parameter to specify the maximum\n *   downlink video bandwidth in bits per second (bps). By default, there are no limits on\n *   the downlink video bandwidth.\n * @property {ClientTrackSwitchOffControl} [clientTrackSwitchOffControl=\"auto\"] - Optional parameter that determines\n *    when to turn the {@link RemoteVideoTrack} on or off. When set to \"auto\", SDK will use the visibility of the\n *    attached elements to determine if the {@link RemoteVideoTrack} should be turned off or on. When the attached video elements become invisible the {@link RemoteVideoTrack} will\n *    be turned off, and when elements become visible they will be turned on. When set to \"manual\" you can turn the {@link RemoteVideoTrack}\n *    on and off using the api {@link RemoteVideoTrack#switchOn} and {@link RemoteVideoTrack#switchOff} respectively.\n * @property {VideoContentPreferencesMode} [contentPreferencesMode=\"auto\"] - This Optional parameter configures\n *    the mode for specifying content preferences for the {@link RemoteVideoTrack}. When set to \"auto\" the\n *    SDK determines the render dimensions by inspecting the attached video elements. {@link RemoteVideoTrack}s rendered in smaller video elements\n *    will receive a lower resolution stream compared to the video rendered in larger video elements. When set to \"manual\" you can set\n *    the dimensions programmatically by calling {@link RemoteVideoTrack#setContentPreferences}.\n * @property {number} [maxTracks] - <code>(deprecated: use \"clientTrackSwitchOffControl\" instead)</code>. Optional\n *   parameter to specify the maximum number of visible {@link RemoteVideoTrack}s, which will be selected based on\n *   {@link Track.Priority} and an N-Loudest policy. By default there are no limits on the number of visible {@link RemoteVideoTrack}s.\n *   0 or a negative value will remove any limit on the maximum number of visible {@link RemoteVideoTrack}s.\n * @property {BandwidthProfileMode} [mode=\"grid\"] - Optional parameter to specify how the {@link RemoteVideoTrack}s'\n *   TrackPriority values are mapped to bandwidth allocation in Group Rooms. This defaults to \"grid\",\n *   which results in equal bandwidth share allocation to all {@link RemoteVideoTrack}s.\n * @property {VideoRenderDimensions} [renderDimensions] - <code>(deprecated: use \"contentPreferencesMode\" instead)</code>. Optional\n * parameter to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * @property {TrackSwitchOffMode} [trackSwitchOffMode=\"predicted\"] - Optional parameter to configure\n *   how {@link RemoteVideoTrack}s are switched off in response to bandwidth pressure. Defaults to \"predicted\".\n */\n/**\n * @deprecated\n * {@link VideoRenderDimensions} allows you to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * You can specify 'auto' for this field - which is also default value -  based on {@link Track.Priority}. The bandwidth allocation algorithm will distribute the available downlink bandwidth\n * proportional to the requested render dimensions. This is just an input for calculating the bandwidth to be allocated\n * and does not affect the actual resolution of the {@link RemoteVideoTrack}s.\n * @typedef {object} VideoRenderDimensions\n * @property {VideoTrack.Dimensions} [high] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"high\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 1280 x 720 (HD).\n * @property {VideoTrack.Dimensions} [low] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"low\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 176 x 144 (QCIF).\n * @property {VideoTrack.Dimensions} [standard] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"standard\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 640 x 480 (VGA).\n */\n/**\n * Configure verbosity levels for network quality information for\n * {@link LocalParticipant} and {@link RemoteParticipant}s.\n * @typedef {object} NetworkQualityConfiguration\n * @property {NetworkQualityVerbosity} [local=1] - Verbosity level for {@link LocalParticipant}\n * @property {NetworkQualityVerbosity} [remote=0] - Verbosity level for {@link RemoteParticipant}s\n */\n/**\n * You may pass these levels to {@link ConnectOptions} to override\n * log levels for individual components.\n * @typedef {object} LogLevels\n * @property {LogLevel} [default='warn'] - Log level for 'default' modules.\n * @property {LogLevel} [media='warn'] - Log level for 'media' modules.\n * @property {LogLevel} [signaling='warn'] - Log level for 'signaling' modules.\n * @property {LogLevel} [webrtc='warn'] - Log level for 'webrtc' modules.\n */\n/**\n * Audio codec settings.\n * @typedef {object} AudioCodecSettings\n * @property {AudioCodec} codec - Audio codec name\n */\n/**\n * Opus codec settings.\n * @typedef {AudioCodecSettings} OpusCodecSettings\n * @property {AudioCodec} name - \"opus\"\n * @property {boolean} [dtx=true] - Enable/disable discontinuous transmission (DTX);\n *   If enabled all published {@link LocalAudioTrack}s will reduce the outgoing bitrate\n *   to near-zero whenever speech is not detected, resulting in bandwidth and CPU savings;\n *   It defaults to true.\n */\n/**\n * Video codec settings.\n * @typedef {object} VideoCodecSettings\n * @property {VideoCodec} codec - Video codec name\n */\n/**\n * VP8 codec settings.\n * @typedef {VideoCodecSettings} VP8CodecSettings\n * @property {VideoCodec} name - \"VP8\"\n * @property {boolean} [simulcast=false] - Enable/disable VP8 simulcast; If\n *   enabled, Twilio's Video SDK will send three video streams of different\n *   qualities\n */\n/**\n * Names of the supported audio codecs.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar AudioCodec = {\n    isac: 'isac',\n    opus: 'opus',\n    PCMA: 'PCMA',\n    PCMU: 'PCMU'\n};\n/**\n * Names of the supported VideoEncodingMode.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoEncodingMode = {\n    Auto: 'auto',\n};\n/**\n * Names of the supported video codecs.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoCodec = {\n    H264: 'H264',\n    VP8: 'VP8'\n};\n// VP9 is supported by most browsers, but backend doesn't at the moment.\n// Hide it from public documentation until then.\nVideoCodec.VP9 = 'VP9';\n/**\n * Levels for logging verbosity.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar LogLevel = {\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n    off: 'off'\n};\n/**\n * The verbosity level of network quality information of a {@link Participant}.\n * @enum {number}\n */\n// eslint-disable-next-line\nvar NetworkQualityVerbosity = {\n    /**\n     * Nothing is reported for the {@link Participant}. This has no effect and\n     * defaults to {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n     * for the {@link LocalParticipant}.\n     */\n    none: 0,\n    /**\n     * Reports {@link NetworkQualityLevel} for the {@link Participant}.\n     */\n    minimal: 1,\n    /**\n     * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n     * {@link NetworkQualityStats} is populated with audio and video {@link NetworkQualityLevel}s\n     * based on which the {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n     */\n    moderate: 2,\n    /**\n     * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n     * {@link NetworkQualityStats} is populated with audio and Video {@link NetworkQualityLevel}s\n     * and their corresponding {@link NetworkQualityMediaStats} based on which the\n     * {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n     */\n    detailed: 3\n};\n/**\n * {@link TrackSwitchOffMode} specifies when {@link RemoteVideoTrack}s' are switched off.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar TrackSwitchOffMode = {\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are switched off only when network congestion\n     * is detected.\n     */\n    detected: 'detected',\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are pro-actively switched off when network\n     * congestion is predicted by the bandwidth estimation mechanism.\n     */\n    predicted: 'predicted',\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are not switched off. Instead in response to network\n     * congestion, tracks will be adjusted to lower quality.\n     */\n    disabled: 'disabled'\n};\n/**\n * {@link BandwidthProfileMode} specifies how {@link RemoteVideoTrack}s' {@link Track.Priority} values\n * are mapped to bandwidth allocation in Group Rooms.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar BandwidthProfileMode = {\n    /**\n     * This mode is for use cases where all the subscribed {@link RemoteVideoTrack}s are\n     * equally important. The bandwidth allocation algorithm will share the available\n     * downlink bandwidth equally among the subscribed {@link RemoteVideoTrack}s, irrespective\n     * of their {@link Track.Priority}. In case of insufficient downlink bandwidth, the lower\n     * priority {@link RemoteVideoTrack}s are switched off.\n     */\n    grid: 'grid',\n    /**\n     * This mode is for use cases where some {@link RemoteVideoTrack}s are prioritized more than\n     * others. However, the lower priority {@link RemoteVideoTrack}s still need to be visible.\n     * The bandwidth allocation algorithm will share the available downlink bandwidth proportional\n     * to the requested {@link VideoRenderDimensions} corresponding to their {@link Track.Priority}.\n     * In case of insufficient downlink bandwidth, the quality of higher priority {@link RemoteVideoTrack}s\n     * may be degraded to avoid switching off lower priority {@link RemoteVideoTrack}s.\n     */\n    collaboration: 'collaboration',\n    /**\n     * This mode is for use cases where some {@link RemoteVideoTrack}s are deemed critical and must\n     * be preserved at any cost over the other {@link RemoteVideoTrack}s. The bandwidth allocation\n     * algorithm will allocate as big a share of the available downlink bandwidth as it possibly\n     * can to the higher priority {@link RemoteVideoTrack}s, and only then consider the lower priority\n     * {@link RemoteVideoTrack}s. In case of insufficient downlink bandwidth, the lower priority\n     * {@link RemoteVideoTrack}s are switched off in order to preserve the quality of the higher\n     * priority {@link RemoteVideoTrack}s.\n     */\n    presentation: 'presentation'\n};\n/**\n * {@link VideoContentPreferencesMode} specifies how {@link RemoteVideoTrack}s' render dimensions are\n * decided by the SDK.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoContentPreferencesMode = {\n    /**\n     * when set to auto, SDK uses the sizes of the video elements attached to the to the  {@link RemoteVideoTrack} dynamically to\n     * decide the render dimensions. {@link RemoteVideoTrack}s rendered in smaller video elements will be given smaller bandwidth allocation\n     * compared to the tracks rendered in large video elements.\n     */\n    auto: 'auto',\n    /**\n     * When set to manual, application can use {@link RemoteVideoTrack#setContentPreference} to set the\n     * desired render dimensions for the {@link RemoteVideoTrack}.\n     */\n    manual: 'manual'\n};\n/**\n * {@link ClientTrackSwitchOffControl} specifies how {@link RemoteVideoTrack}s' turned on and off\n * @enum {string}\n */\n// eslint-disable-next-line\nvar ClientTrackSwitchOffControl = {\n    /**\n     * when set to auto, SDK uses the visibility of the video elements attached to the to the  {@link RemoteVideoTrack} to decide.\n     * on turning tracks on or off. The track that are not attached to any video elements or not visible on the screen will be turned\n     * off automatically.\n     */\n    auto: 'auto',\n    /**\n     * When set to manual, application can use {@link RemoteVideoTrack}s switchOff and switchOn apis to control turn the track on or off.\n     */\n    manual: 'manual'\n};\n/**\n * Names of the supported levels for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerLevel = {\n    debug: 'debug',\n    error: 'error',\n    info: 'info',\n    warning: 'warning'\n};\n/**\n * Names of the supported groups for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerGroup = {\n    /**\n     * Events associated with the connection to Twilio's signaling server\n     */\n    signaling: 'signaling'\n};\n/**\n * An {@link EventListener} allows you to listen to fine-grained {@link EventListenerEvent}s related\n * to signaling and media that are not available in the public APIs, which might be useful for your own\n * reporting and diagnostics.\n * @typedef {EventEmitter} EventListener\n * @example\n * const { EventEmitter } = require('events');\n * const { connect } = require('twilio-video');\n *\n * const eventListener = new EventEmitter();\n * eventListener.on('event', function(event) {\n *   console.log('The SDK raised an event:', event);\n * });\n *\n * connect('token', {\n *   eventListener: eventListener\n * });\n */\n/**\n * The SDK raised an {@link EventListenerEvent}.\n * @event EventListener#event\n * @param {EventListenerEvent} event - Context about the event raised by the SDK.\n * This can be one of the following:\n *  * {@link EventListenerClosedEvent}\n *  * {@link EventListenerConnectingEvent}\n *  * {@link EventListenerEarlyEvent}\n *  * {@link EventListenerOpenEvent}\n *  * {@link EventListenerWaitingEvent}\n */\n/**\n * An {@link EventListenerEvent} provides context about an event raised by the SDK on the\n * {@link EventListener}. Apart from the properties listed here, it may also include some\n * event-specific data within an optional \"payload\" property. The different types of\n * {@link EventListenerEvent}s are listed below:\n *  * {@link EventListenerClosedEvent}\n *  * {@link EventListenerConnectingEvent}\n *  * {@link EventListenerEarlyEvent}\n *  * {@link EventListenerOpenEvent}\n *  * {@link EventListenerWaitingEvent}\n * @typedef {object} EventListenerEvent\n * @property {number} elapsedTime - The time elapsed in milliseconds since connect() was called\n * @property {EventListenerGroup} group - The group under which the event is classified\n * @property {EventListenerLevel} level - The verbosity level of the event, which can be one of \"debug\", \"error\", \"info\", \"warning\"\n * @property {string} name - The name of the event\n * @property {*} [payload] - Optional event-specific data\n * @property {number} timestamp - The time in milliseconds relative to the Unix Epoch when the event was raised\n */\n/**\n * The connection to Twilio's signaling server was closed.\n * @typedef {EventListenerEvent} EventListenerClosedEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level - 'info' if the connection was closed by the client, 'error' otherwise\n * @property {string} name='closed'\n * @property {{reason: string}} payload - Reason for the connection being closed. It can be one of\n *   'busy', 'failed', 'local', 'remote' or 'timeout'\n */\n/**\n * The SDK is connecting to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerConnectingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='connecting'\n */\n/**\n * The SDK is about to connect to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerEarlyEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='early'\n */\n/**\n * The SDK has established a signaling connection to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerOpenEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='open'\n */\n/**\n * The SDK is waiting to retry connecting th Twilio's signaling server. This can\n * happen if the server is busy with too many connection requests.\n * @typedef {EventListenerEvent} EventListenerWaitingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='warning'\n * @property {string} name='waiting'\n */\nfunction deprecateOptions(options, log, deprecationTable) {\n    deprecationTable.forEach(function (prop) {\n        var didWarn = prop.didWarn, name = prop.name, newName = prop.newName, shouldDelete = prop.shouldDelete;\n        if (name in options && typeof options[name] !== 'undefined') {\n            if (newName && shouldDelete) {\n                options[newName] = options[name];\n            }\n            if (shouldDelete) {\n                delete options[name];\n            }\n            if (!didWarn && !['error', 'off'].includes(log.level)) {\n                log.warn(\"The ConnectOptions \\\"\" + name + \"\\\" is \" + (newName\n                    ? \"deprecated and scheduled for removal. Please use \\\"\" + newName + \"\\\" instead.\"\n                    : 'no longer applicable and will be ignored.'));\n                prop.didWarn = true;\n            }\n        }\n    });\n}\nfunction createLocalParticipant(signaling, log, encodingParameters, networkQualityConfiguration, options, localTracks) {\n    var localParticipantSignaling = signaling.createLocalParticipantSignaling(encodingParameters, networkQualityConfiguration);\n    log.debug('Creating a new LocalParticipant:', localParticipantSignaling);\n    return new options.LocalParticipant(localParticipantSignaling, localTracks, options);\n}\nfunction createRoom(options, localParticipant, roomSignaling) {\n    var room = new Room(localParticipant, roomSignaling, options);\n    var log = options.log;\n    log.debug('Creating a new Room:', room);\n    roomSignaling.on('stateChanged', function stateChanged(state) {\n        if (state === 'disconnected') {\n            log.info('Disconnected from Room:', room.toString());\n            roomSignaling.removeListener('stateChanged', stateChanged);\n        }\n    });\n    return room;\n}\nfunction createRoomSignaling(token, options, signaling, encodingParameters, preferredCodecs, localParticipant) {\n    options.log.debug('Creating a new RoomSignaling');\n    return signaling.connect(localParticipant._signaling, token, encodingParameters, preferredCodecs, options);\n}\nfunction getLocalTracks(options, handleLocalTracks) {\n    var log = options.log;\n    options.shouldStopLocalTracks = !options.tracks;\n    if (options.shouldStopLocalTracks) {\n        log.info('LocalTracks were not provided, so they will be acquired '\n            + 'automatically before connecting to the Room. LocalTracks will '\n            + 'be released if connecting to the Room fails or if the Room '\n            + 'is disconnected');\n    }\n    else {\n        log.info('Getting LocalTracks');\n        log.debug('Options:', options);\n    }\n    return options.createLocalTracks(options).then(function getLocalTracksSucceeded(localTracks) {\n        var promise = handleLocalTracks(localTracks);\n        promise.catch(function handleLocalTracksFailed() {\n            if (options.shouldStopLocalTracks) {\n                log.info('The automatically acquired LocalTracks will now be stopped');\n                localTracks.forEach(function (track) {\n                    track.stop();\n                });\n            }\n        });\n        return promise;\n    });\n}\nfunction normalizeCodecSettings(nameOrSettings) {\n    var settings = typeof nameOrSettings === 'string'\n        ? { codec: nameOrSettings }\n        : nameOrSettings;\n    switch (settings.codec.toLowerCase()) {\n        case 'opus': {\n            return Object.assign({ dtx: true }, settings);\n        }\n        case 'vp8': {\n            return Object.assign({ simulcast: false }, settings);\n        }\n        default: {\n            return settings;\n        }\n    }\n}\nmodule.exports = connect;\n//# sourceMappingURL=connect.js.map","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings =\n        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","import { Splitter, hasBgRendering, createFormatter, ViewContextType, ContentContainer, BaseComponent, DateComponent, diffDays, buildNavLinkAttrs, WeekNumberContainer, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, NowTimer, NowIndicatorContainer, renderScrollShim, rangeContainsMarker, startOfDay, asRoughMs, createDuration, RefMap, PositionCache, MoreLinkContainer, SegHierarchy, groupIntersectingEntries, binarySearch, getEntrySpanEnd, buildEntryKey, StandardEvent, memoize, sortEventSegs, DayCellContainer, hasCustomDayCellContent, getSegMeta, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, renderFill, addDurations, multiplyDuration, wholeDivideDurations, Slicer, intersectRanges, formatIsoTimeString, DayHeader, DaySeriesModel, DayTableModel, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef, Fragment } from '@fullcalendar/core/preact.js';\nimport { DayTable } from '@fullcalendar/daygrid/internal.js';\n\nclass AllDaySplitter extends Splitter {\n    getKeyInfo() {\n        return {\n            allDay: {},\n            timed: {},\n        };\n    }\n    getKeysForDateSpan(dateSpan) {\n        if (dateSpan.allDay) {\n            return ['allDay'];\n        }\n        return ['timed'];\n    }\n    getKeysForEventDef(eventDef) {\n        if (!eventDef.allDay) {\n            return ['timed'];\n        }\n        if (hasBgRendering(eventDef)) {\n            return ['timed', 'allDay'];\n        }\n        return ['allDay'];\n    }\n}\n\nconst DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'short',\n});\nfunction TimeColsAxisCell(props) {\n    let classNames = [\n        'fc-timegrid-slot',\n        'fc-timegrid-slot-label',\n        props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',\n    ];\n    return (createElement(ViewContextType.Consumer, null, (context) => {\n        if (!props.isLabeled) {\n            return (createElement(\"td\", { className: classNames.join(' '), \"data-time\": props.isoTimeStr }));\n        }\n        let { dateEnv, options, viewApi } = context;\n        let labelFormat = // TODO: fully pre-parse\n         options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :\n            Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :\n                createFormatter(options.slotLabelFormat);\n        let renderProps = {\n            level: 0,\n            time: props.time,\n            date: dateEnv.toDate(props.date),\n            view: viewApi,\n            text: dateEnv.format(props.date, labelFormat),\n        };\n        return (createElement(ContentContainer, { elTag: \"td\", elClasses: classNames, elAttrs: {\n                'data-time': props.isoTimeStr,\n            }, renderProps: renderProps, generatorName: \"slotLabelContent\", customGenerator: options.slotLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.slotLabelClassNames, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\" },\n            createElement(InnerContent, { elTag: \"div\", elClasses: [\n                    'fc-timegrid-slot-label-cushion',\n                    'fc-scrollgrid-shrink-cushion',\n                ] })))));\n    }));\n}\nfunction renderInnerContent(props) {\n    return props.text;\n}\n\nclass TimeBodyAxis extends BaseComponent {\n    render() {\n        return this.props.slatMetas.map((slatMeta) => (createElement(\"tr\", { key: slatMeta.key },\n            createElement(TimeColsAxisCell, Object.assign({}, slatMeta)))));\n    }\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'short' });\nconst AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;\nclass TimeColsView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.allDaySplitter = new AllDaySplitter(); // for use by subclasses\n        this.headerElRef = createRef();\n        this.rootElRef = createRef();\n        this.scrollerElRef = createRef();\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleScrollTopRequest = (scrollTop) => {\n            let scrollerEl = this.scrollerElRef.current;\n            if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer\n                scrollerEl.scrollTop = scrollTop;\n            }\n        };\n        /* Header Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        this.renderHeadAxis = (rowKey, frameHeight = '') => {\n            let { options } = this.context;\n            let { dateProfile } = this.props;\n            let range = dateProfile.renderRange;\n            let dayCnt = diffDays(range.start, range.end);\n            // only do in day views (to avoid doing in week views that dont need it)\n            let navLinkAttrs = (dayCnt === 1)\n                ? buildNavLinkAttrs(this.context, range.start, 'week')\n                : {};\n            if (options.weekNumbers && rowKey === 'day') {\n                return (createElement(WeekNumberContainer, { elTag: \"th\", elClasses: [\n                        'fc-timegrid-axis',\n                        'fc-scrollgrid-shrink',\n                    ], elAttrs: {\n                        'aria-hidden': true,\n                    }, date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (InnerContent) => (createElement(\"div\", { className: [\n                        'fc-timegrid-axis-frame',\n                        'fc-scrollgrid-shrink-frame',\n                        'fc-timegrid-axis-frame-liquid',\n                    ].join(' '), style: { height: frameHeight } },\n                    createElement(InnerContent, { elTag: \"a\", elClasses: [\n                            'fc-timegrid-axis-cushion',\n                            'fc-scrollgrid-shrink-cushion',\n                            'fc-scrollgrid-sync-inner',\n                        ], elAttrs: navLinkAttrs })))));\n            }\n            return (createElement(\"th\", { \"aria-hidden\": true, className: \"fc-timegrid-axis\" },\n                createElement(\"div\", { className: \"fc-timegrid-axis-frame\", style: { height: frameHeight } })));\n        };\n        /* Table Component Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n        // but DayGrid still needs to have classNames on inner elements in order to measure.\n        this.renderTableRowAxis = (rowHeight) => {\n            let { options, viewApi } = this.context;\n            let renderProps = {\n                text: options.allDayText,\n                view: viewApi,\n            };\n            return (\n            // TODO: make reusable hook. used in list view too\n            createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                    'fc-timegrid-axis',\n                    'fc-scrollgrid-shrink',\n                ], elAttrs: {\n                    'aria-hidden': true,\n                }, renderProps: renderProps, generatorName: \"allDayContent\", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, (InnerContent) => (createElement(\"div\", { className: [\n                    'fc-timegrid-axis-frame',\n                    'fc-scrollgrid-shrink-frame',\n                    rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : '',\n                ].join(' '), style: { height: rowHeight } },\n                createElement(InnerContent, { elTag: \"span\", elClasses: [\n                        'fc-timegrid-axis-cushion',\n                        'fc-scrollgrid-shrink-cushion',\n                        'fc-scrollgrid-sync-inner',\n                    ] })))));\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n        };\n    }\n    // rendering\n    // ----------------------------------------------------------------------------------------------------\n    renderSimpleLayout(headerRowContent, allDayContent, timeContent) {\n        let { context, props } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                chunk: { content: allDayContent },\n            });\n            sections.push({\n                type: 'body',\n                key: 'all-day-divider',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunk: {\n                scrollerElRef: this.scrollerElRef,\n                content: timeContent,\n            },\n        });\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [{ width: 'shrink' }], sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { context, props } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (arg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderHeadAxis('day', arg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    },\n                ],\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (contentArg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderTableRowAxis(contentArg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        content: allDayContent,\n                    },\n                ],\n            });\n            sections.push({\n                key: 'all-day-divider',\n                type: 'body',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        let isNowIndicator = context.options.nowIndicator;\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunks: [\n                {\n                    key: 'axis',\n                    content: (arg) => (\n                    // TODO: make this now-indicator arrow more DRY with TimeColsContent\n                    createElement(\"div\", { className: \"fc-timegrid-axis-chunk\" },\n                        createElement(\"table\", { \"aria-hidden\": true, style: { height: arg.expandRows ? arg.clientHeight : '' } },\n                            arg.tableColGroupNode,\n                            createElement(\"tbody\", null,\n                                createElement(TimeBodyAxis, { slatMetas: slatMetas }))),\n                        createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" },\n                            createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate) => {\n                                let nowIndicatorTop = isNowIndicator &&\n                                    slatCoords &&\n                                    slatCoords.safeComputeTop(nowDate); // might return void\n                                if (typeof nowIndicatorTop === 'number') {\n                                    return (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: nowDate }));\n                                }\n                                return null;\n                            })))),\n                },\n                {\n                    key: 'cols',\n                    scrollerElRef: this.scrollerElRef,\n                    content: timeContent,\n                },\n            ],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                key: 'footer',\n                type: 'footer',\n                isSticky: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        content: renderScrollShim,\n                    },\n                    {\n                        key: 'cols',\n                        content: renderScrollShim,\n                    },\n                ],\n            });\n        }\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n                    { width: 'shrink', cols: [{ width: 'shrink' }] },\n                    { cols: [{ span: colCnt, minWidth: dayMinWidth }] },\n                ], sections: sections })));\n    }\n    /* Dimensions\n    ------------------------------------------------------------------------------------------------------------------*/\n    getAllDayMaxEventProps() {\n        let { dayMaxEvents, dayMaxEventRows } = this.context.options;\n        if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto?\n            dayMaxEvents = undefined;\n            dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure \"auto\" goes to a real number\n        }\n        return { dayMaxEvents, dayMaxEventRows };\n    }\n}\nfunction renderAllDayInner(renderProps) {\n    return renderProps.text;\n}\n\nclass TimeColsSlatsCoords {\n    constructor(positions, dateProfile, slotDuration) {\n        this.positions = positions;\n        this.dateProfile = dateProfile;\n        this.slotDuration = slotDuration;\n    }\n    safeComputeTop(date) {\n        let { dateProfile } = this;\n        if (rangeContainsMarker(dateProfile.currentRange, date)) {\n            let startOfDayDate = startOfDay(date);\n            let timeMs = date.valueOf() - startOfDayDate.valueOf();\n            if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&\n                timeMs < asRoughMs(dateProfile.slotMaxTime)) {\n                return this.computeTimeTop(createDuration(timeMs));\n            }\n        }\n        return null;\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n    // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n    computeDateTop(when, startOfDayDate) {\n        if (!startOfDayDate) {\n            startOfDayDate = startOfDay(when);\n        }\n        return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n    // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n    // Eventually allow computation with arbirary slat dates.\n    computeTimeTop(duration) {\n        let { positions, dateProfile } = this;\n        let len = positions.els.length;\n        // floating-point value of # of slots covered\n        let slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);\n        let slatIndex;\n        let slatRemainder;\n        // compute a floating-point number for how many slats should be progressed through.\n        // from 0 to number of slats (inclusive)\n        // constrained because slotMinTime/slotMaxTime might be customized.\n        slatCoverage = Math.max(0, slatCoverage);\n        slatCoverage = Math.min(len, slatCoverage);\n        // an integer index of the furthest whole slat\n        // from 0 to number slats (*exclusive*, so len-1)\n        slatIndex = Math.floor(slatCoverage);\n        slatIndex = Math.min(slatIndex, len - 1);\n        // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n        // could be 1.0 if slatCoverage is covering *all* the slots\n        slatRemainder = slatCoverage - slatIndex;\n        return positions.tops[slatIndex] +\n            positions.getHeight(slatIndex) * slatRemainder;\n    }\n}\n\nclass TimeColsSlatsBody extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { slatElRefs } = props;\n        return (createElement(\"tbody\", null, props.slatMetas.map((slatMeta, i) => {\n            let renderProps = {\n                time: slatMeta.time,\n                date: context.dateEnv.toDate(slatMeta.date),\n                view: context.viewApi,\n            };\n            return (createElement(\"tr\", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },\n                props.axis && (createElement(TimeColsAxisCell, Object.assign({}, slatMeta))),\n                createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                        'fc-timegrid-slot',\n                        'fc-timegrid-slot-lane',\n                        !slatMeta.isLabeled && 'fc-timegrid-slot-minor',\n                    ], elAttrs: {\n                        'data-time': slatMeta.isoTimeStr,\n                    }, renderProps: renderProps, generatorName: \"slotLaneContent\", customGenerator: options.slotLaneContent, classNameGenerator: options.slotLaneClassNames, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount })));\n        })));\n    }\n}\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\nclass TimeColsSlats extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.slatElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(\"div\", { ref: this.rootElRef, className: \"fc-timegrid-slots\" },\n            createElement(\"table\", { \"aria-hidden\": true, className: context.theme.getClass('table'), style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                    height: props.minHeight,\n                } },\n                props.tableColGroupNode /* relies on there only being a single <col> for the axis */,\n                createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));\n    }\n    componentDidMount() {\n        this.updateSizing();\n    }\n    componentDidUpdate() {\n        this.updateSizing();\n    }\n    componentWillUnmount() {\n        if (this.props.onCoords) {\n            this.props.onCoords(null);\n        }\n    }\n    updateSizing() {\n        let { context, props } = this;\n        if (props.onCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            let rootEl = this.rootElRef.current;\n            if (rootEl.offsetHeight) { // not hidden by css\n                props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));\n            }\n        }\n    }\n}\nfunction collectSlatEls(elMap, slatMetas) {\n    return slatMetas.map((slatMeta) => elMap[slatMeta.key]);\n}\n\nfunction splitSegsByCol(segs, colCnt) {\n    let segsByCol = [];\n    let i;\n    for (i = 0; i < colCnt; i += 1) {\n        segsByCol.push([]);\n    }\n    if (segs) {\n        for (i = 0; i < segs.length; i += 1) {\n            segsByCol[segs[i].col].push(segs[i]);\n        }\n    }\n    return segsByCol;\n}\nfunction splitInteractionByCol(ui, colCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.col].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nclass TimeColMoreLink extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-timegrid-more-link'], elStyle: {\n                top: props.top,\n                bottom: props.bottom,\n            }, allDayDate: null, moreCnt: props.hiddenSegs.length, allSegs: props.hiddenSegs, hiddenSegs: props.hiddenSegs, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, todayRange: props.todayRange, popoverContent: () => renderPlainFgSegs(props.hiddenSegs, props), defaultGenerator: renderMoreLinkInner, forceTimed: true }, (InnerContent) => (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-more-link-inner', 'fc-sticky'] }))));\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.shortText;\n}\n\n// segInputs assumed sorted\nfunction buildPositioning(segInputs, strictOrder, maxStackCnt) {\n    let hierarchy = new SegHierarchy();\n    if (strictOrder != null) {\n        hierarchy.strictOrder = strictOrder;\n    }\n    if (maxStackCnt != null) {\n        hierarchy.maxStackCnt = maxStackCnt;\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let hiddenGroups = groupIntersectingEntries(hiddenEntries);\n    let web = buildWeb(hierarchy);\n    web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0\n    let segRects = webToRects(web);\n    return { segRects, hiddenGroups };\n}\nfunction buildWeb(hierarchy) {\n    const { entriesByLevel } = hierarchy;\n    const buildNode = cacheable((level, lateral) => level + ':' + lateral, (level, lateral) => {\n        let siblingRange = findNextLevelSegs(hierarchy, level, lateral);\n        let nextLevelRes = buildNodes(siblingRange, buildNode);\n        let entry = entriesByLevel[level][lateral];\n        return [\n            Object.assign(Object.assign({}, entry), { nextLevelNodes: nextLevelRes[0] }),\n            entry.thickness + nextLevelRes[1], // the pressure builds\n        ];\n    });\n    return buildNodes(entriesByLevel.length\n        ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length }\n        : null, buildNode)[0];\n}\nfunction buildNodes(siblingRange, buildNode) {\n    if (!siblingRange) {\n        return [[], 0];\n    }\n    let { level, lateralStart, lateralEnd } = siblingRange;\n    let lateral = lateralStart;\n    let pairs = [];\n    while (lateral < lateralEnd) {\n        pairs.push(buildNode(level, lateral));\n        lateral += 1;\n    }\n    pairs.sort(cmpDescPressures);\n    return [\n        pairs.map(extractNode),\n        pairs[0][1], // first item's pressure\n    ];\n}\nfunction cmpDescPressures(a, b) {\n    return b[1] - a[1];\n}\nfunction extractNode(a) {\n    return a[0];\n}\nfunction findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) {\n    let { levelCoords, entriesByLevel } = hierarchy;\n    let subjectEntry = entriesByLevel[subjectLevel][subjectLateral];\n    let afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness;\n    let levelCnt = levelCoords.length;\n    let level = subjectLevel;\n    // skip past levels that are too high up\n    for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1)\n        ; // do nothing\n    for (; level < levelCnt; level += 1) {\n        let entries = entriesByLevel[level];\n        let entry;\n        let searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd);\n        let lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one\n        let lateralEnd = lateralStart;\n        while ( // loop through entries that horizontally intersect\n        (entry = entries[lateralEnd]) && // but not past the whole seg list\n            entry.span.start < subjectEntry.span.end) {\n            lateralEnd += 1;\n        }\n        if (lateralStart < lateralEnd) {\n            return { level, lateralStart, lateralEnd };\n        }\n    }\n    return null;\n}\nfunction stretchWeb(topLevelNodes, totalThickness) {\n    const stretchNode = cacheable((node, startCoord, prevThickness) => buildEntryKey(node), (node, startCoord, prevThickness) => {\n        let { nextLevelNodes, thickness } = node;\n        let allThickness = thickness + prevThickness;\n        let thicknessFraction = thickness / allThickness;\n        let endCoord;\n        let newChildren = [];\n        if (!nextLevelNodes.length) {\n            endCoord = totalThickness;\n        }\n        else {\n            for (let childNode of nextLevelNodes) {\n                if (endCoord === undefined) {\n                    let res = stretchNode(childNode, startCoord, allThickness);\n                    endCoord = res[0];\n                    newChildren.push(res[1]);\n                }\n                else {\n                    let res = stretchNode(childNode, endCoord, 0);\n                    newChildren.push(res[1]);\n                }\n            }\n        }\n        let newThickness = (endCoord - startCoord) * thicknessFraction;\n        return [endCoord - newThickness, Object.assign(Object.assign({}, node), { thickness: newThickness, nextLevelNodes: newChildren })];\n    });\n    return topLevelNodes.map((node) => stretchNode(node, 0, 0)[1]);\n}\n// not sorted in any particular order\nfunction webToRects(topLevelNodes) {\n    let rects = [];\n    const processNode = cacheable((node, levelCoord, stackDepth) => buildEntryKey(node), (node, levelCoord, stackDepth) => {\n        let rect = Object.assign(Object.assign({}, node), { levelCoord,\n            stackDepth, stackForward: 0 });\n        rects.push(rect);\n        return (rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1);\n    });\n    function processNodes(nodes, levelCoord, stackDepth) {\n        let stackForward = 0;\n        for (let node of nodes) {\n            stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward);\n        }\n        return stackForward;\n    }\n    processNodes(topLevelNodes, 0, 0);\n    return rects; // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n// TODO: move to general util\nfunction cacheable(keyFunc, workFunc) {\n    const cache = {};\n    return (...args) => {\n        let key = keyFunc(...args);\n        return (key in cache)\n            ? cache[key]\n            : (cache[key] = workFunc(...args));\n    };\n}\n\nfunction computeSegVCoords(segs, colDate, slatCoords = null, eventMinHeight = 0) {\n    let vcoords = [];\n    if (slatCoords) {\n        for (let i = 0; i < segs.length; i += 1) {\n            let seg = segs[i];\n            let spanStart = slatCoords.computeDateTop(seg.start, colDate);\n            let spanEnd = Math.max(spanStart + (eventMinHeight || 0), // :(\n            slatCoords.computeDateTop(seg.end, colDate));\n            vcoords.push({\n                start: Math.round(spanStart),\n                end: Math.round(spanEnd), //\n            });\n        }\n    }\n    return vcoords;\n}\nfunction computeFgSegPlacements(segs, segVCoords, // might not have for every seg\neventOrderStrict, eventMaxStack) {\n    let segInputs = [];\n    let dumbSegs = []; // segs without coords\n    for (let i = 0; i < segs.length; i += 1) {\n        let vcoords = segVCoords[i];\n        if (vcoords) {\n            segInputs.push({\n                index: i,\n                thickness: 1,\n                span: vcoords,\n            });\n        }\n        else {\n            dumbSegs.push(segs[i]);\n        }\n    }\n    let { segRects, hiddenGroups } = buildPositioning(segInputs, eventOrderStrict, eventMaxStack);\n    let segPlacements = [];\n    for (let segRect of segRects) {\n        segPlacements.push({\n            seg: segs[segRect.index],\n            rect: segRect,\n        });\n    }\n    for (let dumbSeg of dumbSegs) {\n        segPlacements.push({ seg: dumbSeg, rect: null });\n    }\n    return { segPlacements, hiddenGroups };\n}\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    meridiem: false,\n});\nclass TimeColEvent extends BaseComponent {\n    render() {\n        return (createElement(StandardEvent, Object.assign({}, this.props, { elClasses: [\n                'fc-timegrid-event',\n                'fc-v-event',\n                this.props.isShort && 'fc-timegrid-event-short',\n            ], defaultTimeFormat: DEFAULT_TIME_FORMAT })));\n    }\n}\n\nclass TimeCol extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.sortEventSegs = memoize(sortEventSegs);\n    }\n    // TODO: memoize event-placement?\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let isSelectMirror = options.selectMirror;\n        let mirrorSegs = // yuck\n         (props.eventDrag && props.eventDrag.segs) ||\n            (props.eventResize && props.eventResize.segs) ||\n            (isSelectMirror && props.dateSelectionSegs) ||\n            [];\n        let interactionAffectedInstances = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        let sortedFgSegs = this.sortEventSegs(props.fgEventSegs, options.eventOrder);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n                'fc-timegrid-col',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'gridcell' }, props.extraDataAttrs), date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraRenderProps: props.extraRenderProps }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n            createElement(\"div\", { className: \"fc-timegrid-col-bg\" },\n                this.renderFillSegs(props.businessHourSegs, 'non-business'),\n                this.renderFillSegs(props.bgEventSegs, 'bg-event'),\n                this.renderFillSegs(props.dateSelectionSegs, 'highlight')),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror), 'mirror')),\n            createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, this.renderNowIndicator(props.nowIndicatorSegs)),\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-col-misc'] }))))));\n    }\n    renderFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { props } = this;\n        if (props.forPrint) {\n            return renderPlainFgSegs(sortedFgSegs, props);\n        }\n        return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey);\n    }\n    renderPositionedFgSegs(segs, // if not mirror, needs to be sorted\n    segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { eventMaxStack, eventShortHeight, eventOrderStrict, eventMinHeight } = this.context.options;\n        let { date, slatCoords, eventSelection, todayRange, nowDate } = this.props;\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight);\n        let { segPlacements, hiddenGroups } = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack);\n        return (createElement(Fragment, null,\n            this.renderHiddenGroups(hiddenGroups, segs),\n            segPlacements.map((segPlacement) => {\n                let { seg, rect } = segPlacement;\n                let instanceId = seg.eventRange.instance.instanceId;\n                let isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect);\n                let vStyle = computeSegVStyle(rect && rect.span);\n                let hStyle = (!isMirror && rect) ? this.computeSegHStyle(rect) : { left: 0, right: 0 };\n                let isInset = Boolean(rect) && rect.stackForward > 0;\n                let isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight; // look at other places for this problem\n                return (createElement(\"div\", { className: 'fc-timegrid-event-harness' +\n                        (isInset ? ' fc-timegrid-event-harness-inset' : ''), key: forcedKey || instanceId, style: Object.assign(Object.assign({ visibility: isVisible ? '' : 'hidden' }, vStyle), hStyle) },\n                    createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, isShort: isShort }, getSegMeta(seg, todayRange, nowDate)))));\n            })));\n    }\n    // will already have eventMinHeight applied because segInputs already had it\n    renderHiddenGroups(hiddenGroups, segs) {\n        let { extraDateSpan, dateProfile, todayRange, nowDate, eventSelection, eventDrag, eventResize } = this.props;\n        return (createElement(Fragment, null, hiddenGroups.map((hiddenGroup) => {\n            let positionCss = computeSegVStyle(hiddenGroup.span);\n            let hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs);\n            return (createElement(TimeColMoreLink, { key: buildIsoString(computeEarliestSegStart(hiddenSegs)), hiddenSegs: hiddenSegs, top: positionCss.top, bottom: positionCss.bottom, extraDateSpan: extraDateSpan, dateProfile: dateProfile, todayRange: todayRange, nowDate: nowDate, eventSelection: eventSelection, eventDrag: eventDrag, eventResize: eventResize }));\n        })));\n    }\n    renderFillSegs(segs, fillType) {\n        let { props, context } = this;\n        let segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated\n        let children = segVCoords.map((vcoords, i) => {\n            let seg = segs[i];\n            return (createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-timegrid-bg-harness\", style: computeSegVStyle(vcoords) }, fillType === 'bg-event' ?\n                createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :\n                renderFill(fillType)));\n        });\n        return createElement(Fragment, null, children);\n    }\n    renderNowIndicator(segs) {\n        let { slatCoords, date } = this.props;\n        if (!slatCoords) {\n            return null;\n        }\n        return segs.map((seg, i) => (createElement(NowIndicatorContainer\n        // key doesn't matter. will only ever be one\n        , { \n            // key doesn't matter. will only ever be one\n            key: i, elClasses: ['fc-timegrid-now-indicator-line'], elStyle: {\n                top: slatCoords.computeDateTop(seg.start, date),\n            }, isAxis: false, date: date })));\n    }\n    computeSegHStyle(segHCoords) {\n        let { isRtl, options } = this.context;\n        let shouldOverlap = options.slotEventOverlap;\n        let nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point\n        let farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point\n        let left; // amount of space from left edge, a fraction of the total width\n        let right; // amount of space from right edge, a fraction of the total width\n        if (shouldOverlap) {\n            // double the width, but don't go beyond the maximum forward coordinate (1.0)\n            farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2);\n        }\n        if (isRtl) {\n            left = 1 - farCoord;\n            right = nearCoord;\n        }\n        else {\n            left = nearCoord;\n            right = 1 - farCoord;\n        }\n        let props = {\n            zIndex: segHCoords.stackDepth + 1,\n            left: left * 100 + '%',\n            right: right * 100 + '%',\n        };\n        if (shouldOverlap && !segHCoords.stackForward) {\n            // add padding to the edge so that forward stacked events don't cover the resizer's icon\n            props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n        }\n        return props;\n    }\n}\nfunction renderPlainFgSegs(sortedFgSegs, { todayRange, nowDate, eventSelection, eventDrag, eventResize }) {\n    let hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) ||\n        (eventResize ? eventResize.affectedInstances : null) ||\n        {};\n    return (createElement(Fragment, null, sortedFgSegs.map((seg) => {\n        let instanceId = seg.eventRange.instance.instanceId;\n        return (createElement(\"div\", { key: instanceId, style: { visibility: hiddenInstances[instanceId] ? 'hidden' : '' } },\n            createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === eventSelection, isShort: false }, getSegMeta(seg, todayRange, nowDate)))));\n    })));\n}\nfunction computeSegVStyle(segVCoords) {\n    if (!segVCoords) {\n        return { top: '', bottom: '' };\n    }\n    return {\n        top: segVCoords.start,\n        bottom: -segVCoords.end,\n    };\n}\nfunction compileSegsFromEntries(segEntries, allSegs) {\n    return segEntries.map((segEntry) => allSegs[segEntry.index]);\n}\n\nclass TimeColsContent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.splitFgEventSegs = memoize(splitSegsByCol);\n        this.splitBgEventSegs = memoize(splitSegsByCol);\n        this.splitBusinessHourSegs = memoize(splitSegsByCol);\n        this.splitNowIndicatorSegs = memoize(splitSegsByCol);\n        this.splitDateSelectionSegs = memoize(splitSegsByCol);\n        this.splitEventDrag = memoize(splitInteractionByCol);\n        this.splitEventResize = memoize(splitInteractionByCol);\n        this.rootElRef = createRef();\n        this.cellElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let nowIndicatorTop = context.options.nowIndicator &&\n            props.slatCoords &&\n            props.slatCoords.safeComputeTop(props.nowDate); // might return void\n        let colCnt = props.cells.length;\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt);\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt);\n        let nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);\n        return (createElement(\"div\", { className: \"fc-timegrid-cols\", ref: this.rootElRef },\n            createElement(\"table\", { role: \"presentation\", style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                } },\n                props.tableColGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(\"tr\", { role: \"row\" },\n                        props.axis && (createElement(\"td\", { \"aria-hidden\": true, className: \"fc-timegrid-col fc-timegrid-axis\" },\n                            createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n                                createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, typeof nowIndicatorTop === 'number' && (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: props.nowDate })))))),\n                        props.cells.map((cell, i) => (createElement(TimeCol, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint }))))))));\n    }\n    componentDidMount() {\n        this.updateCoords();\n    }\n    componentDidUpdate() {\n        this.updateCoords();\n    }\n    updateCoords() {\n        let { props } = this;\n        if (props.onColCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true, // horizontal\n            false));\n        }\n    }\n}\nfunction collectCellEls(elMap, cells) {\n    return cells.map((cell) => elMap[cell.key]);\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\nclass TimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.processSlotOptions = memoize(processSlotOptions);\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleRootEl = (el) => {\n            if (el) {\n                this.context.registerInteractiveComponent(this, {\n                    el,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n        this.handleScrollRequest = (request) => {\n            let { onScrollTopRequest } = this.props;\n            let { slatCoords } = this.state;\n            if (onScrollTopRequest && slatCoords) {\n                if (request.time) {\n                    let top = slatCoords.computeTimeTop(request.time);\n                    top = Math.ceil(top); // zoom can give weird floating-point values. rather scroll a little bit further\n                    if (top) {\n                        top += 1; // to overcome top border that slots beyond the first have. looks better\n                    }\n                    onScrollTopRequest(top);\n                }\n                return true;\n            }\n            return false;\n        };\n        this.handleColCoords = (colCoords) => {\n            this.colCoords = colCoords;\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n            if (this.props.onSlatCoords) {\n                this.props.onSlatCoords(slatCoords);\n            }\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(\"div\", { className: \"fc-timegrid-body\", ref: this.handleRootEl, style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */, onCoords: this.handleSlatCoords }),\n            createElement(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint })));\n    }\n    componentDidMount() {\n        this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n    }\n    componentDidUpdate(prevProps) {\n        this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n    }\n    componentWillUnmount() {\n        this.scrollResponder.detach();\n    }\n    queryHit(positionLeft, positionTop) {\n        let { dateEnv, options } = this.context;\n        let { colCoords } = this;\n        let { dateProfile } = this.props;\n        let { slatCoords } = this.state;\n        let { snapDuration, snapsPerSlot } = this.processSlotOptions(this.props.slotDuration, options.snapDuration);\n        let colIndex = colCoords.leftToIndex(positionLeft);\n        let slatIndex = slatCoords.positions.topToIndex(positionTop);\n        if (colIndex != null && slatIndex != null) {\n            let cell = this.props.cells[colIndex];\n            let slatTop = slatCoords.positions.tops[slatIndex];\n            let slatHeight = slatCoords.positions.getHeight(slatIndex);\n            let partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n            let localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n            let snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n            let dayDate = this.props.cells[colIndex].date;\n            let time = addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));\n            let start = dateEnv.add(dayDate, time);\n            let end = dateEnv.add(start, snapDuration);\n            return {\n                dateProfile,\n                dateSpan: Object.assign({ range: { start, end }, allDay: false }, cell.extraDateSpan),\n                dayEl: colCoords.els[colIndex],\n                rect: {\n                    left: colCoords.lefts[colIndex],\n                    right: colCoords.rights[colIndex],\n                    top: slatTop,\n                    bottom: slatTop + slatHeight,\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n}\nfunction processSlotOptions(slotDuration, snapDurationOverride) {\n    let snapDuration = snapDurationOverride || slotDuration;\n    let snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n    if (snapsPerSlot === null) {\n        snapDuration = slotDuration;\n        snapsPerSlot = 1;\n        // TODO: say warning?\n    }\n    return { snapDuration, snapsPerSlot };\n}\n\nclass DayTimeColsSlicer extends Slicer {\n    sliceRange(range, dayRanges) {\n        let segs = [];\n        for (let col = 0; col < dayRanges.length; col += 1) {\n            let segRange = intersectRanges(range, dayRanges[col]);\n            if (segRange) {\n                segs.push({\n                    start: segRange.start,\n                    end: segRange.end,\n                    isStart: segRange.start.valueOf() === range.start.valueOf(),\n                    isEnd: segRange.end.valueOf() === range.end.valueOf(),\n                    col,\n                });\n            }\n        }\n        return segs;\n    }\n}\n\nclass DayTimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.buildDayRanges = memoize(buildDayRanges);\n        this.slicer = new DayTimeColsSlicer();\n        this.timeColsRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        let { dateProfile, dayTableModel } = props;\n        let { nowIndicator, nextDayThreshold } = context.options;\n        let dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);\n        // give it the first row of cells\n        // TODO: would move this further down hierarchy, but sliceNowDate needs it\n        return (createElement(NowTimer, { unit: nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: nowIndicator && this.slicer.sliceNowDate(nowDate, dateProfile, nextDayThreshold, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords })))));\n    }\n}\nfunction buildDayRanges(dayTableModel, dateProfile, dateEnv) {\n    let ranges = [];\n    for (let date of dayTableModel.headerDates) {\n        ranges.push({\n            start: dateEnv.add(date, dateProfile.slotMinTime),\n            end: dateEnv.add(date, dateProfile.slotMaxTime),\n        });\n    }\n    return ranges;\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst STOCK_SUB_DURATIONS = [\n    { hours: 1 },\n    { minutes: 30 },\n    { minutes: 15 },\n    { seconds: 30 },\n    { seconds: 15 },\n];\nfunction buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {\n    let dayStart = new Date(0);\n    let slatTime = slotMinTime;\n    let slatIterator = createDuration(0);\n    let labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);\n    let metas = [];\n    while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n        let date = dateEnv.add(dayStart, slatTime);\n        let isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;\n        metas.push({\n            date,\n            time: slatTime,\n            key: date.toISOString(),\n            isoTimeStr: formatIsoTimeString(date),\n            isLabeled,\n        });\n        slatTime = addDurations(slatTime, slotDuration);\n        slatIterator = addDurations(slatIterator, slotDuration);\n    }\n    return metas;\n}\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n    let i;\n    let labelInterval;\n    let slotsPerLabel;\n    // find the smallest stock label interval that results in more than one slots-per-label\n    for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n        labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);\n        slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n        if (slotsPerLabel !== null && slotsPerLabel > 1) {\n            return labelInterval;\n        }\n    }\n    return slotDuration; // fall back\n}\n\nclass DayTimeColsView extends TimeColsView {\n    constructor() {\n        super(...arguments);\n        this.buildTimeColsModel = memoize(buildTimeColsModel);\n        this.buildSlatMetas = memoize(buildSlatMetas);\n    }\n    render() {\n        let { options, dateEnv, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let { dateProfile } = props;\n        let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator);\n        let splitProps = this.allDaySplitter.splitProps(props);\n        let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n        let { dayMinWidth } = options;\n        let hasAttachedAxis = !dayMinWidth;\n        let hasDetachedAxis = dayMinWidth;\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));\n        let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(DayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));\n        let timeGridContent = (contentArg) => (createElement(DayTimeCols, Object.assign({}, splitProps.timed, { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: this.handleScrollTopRequest })));\n        return hasDetachedAxis\n            ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)\n            : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n    }\n}\nfunction buildTimeColsModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, false);\n}\n\nvar css_248z = \".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\\\"\\\\00a0\\\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\\\"\\\\00a0-\\\\00a0\\\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}\";\ninjectStyles(css_248z);\n\nexport { DayTimeCols, DayTimeColsSlicer, DayTimeColsView, TimeCols, TimeColsSlatsCoords, TimeColsView, buildDayRanges, buildSlatMetas, buildTimeColsModel };\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\n\nconst OPTION_REFINERS = {\n    allDaySlot: Boolean,\n};\n\nvar index = createPlugin({\n    name: '@fullcalendar/timegrid',\n    initialView: 'timeGridWeek',\n    optionRefiners: OPTION_REFINERS,\n    views: {\n        timeGrid: {\n            component: DayTimeColsView,\n            usesMinMaxTime: true,\n            allDaySlot: true,\n            slotDuration: '00:30:00',\n            slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n        },\n        timeGridDay: {\n            type: 'timeGrid',\n            duration: { days: 1 },\n        },\n        timeGridWeek: {\n            type: 'timeGrid',\n            duration: { weeks: 1 },\n        },\n    },\n});\n\nexport { index as default };\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  'test'.split(/(?:)/, -1).length !== 4 ||\n  'ab'.split(/(?:ab)*/).length !== 2 ||\n  '.'.split(/(.?)(.?)/).length !== 4 ||\n  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n  '.'.split(/()()/).length > 1 ||\n  ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n  } : nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isObject(separator) ? getMethod(separator, SPLIT) : undefined;\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (!BUGGY) {\n        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n        if (res.done) return res.value;\n      }\n\n      var C = speciesConstructor(rx, RegExp);\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar parent = require('../../stable/promise');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.with-resolvers');\n\nmodule.exports = parent;\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\nvar toString = require('../internals/to-string');\n\nvar DELEGATES_TO_EXEC = function () {\n  var execCalled = false;\n  var re = /[ac]/;\n  re.exec = function () {\n    execCalled = true;\n    return /./.exec.apply(this, arguments);\n  };\n  return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n  test: function (S) {\n    var R = anObject(this);\n    var string = toString(S);\n    var exec = R.exec;\n    if (!isCallable(exec)) return call(nativeTest, R, string);\n    var result = call(exec, R, string);\n    if (result === null) return false;\n    anObject(result);\n    return true;\n  }\n});\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","'use strict';\n\nvar URI = require('uri-js')\n  , equal = require('fast-deep-equal')\n  , util = require('./util')\n  , SchemaObject = require('./schema_obj')\n  , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this   Ajv\n * @param  {Function} compile reference to schema compilation funciton (localCompile)\n * @param  {Object} root object with information about the root schema for the current schema\n * @param  {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n  /* jshint validthis: true */\n  var refVal = this._refs[ref];\n  if (typeof refVal == 'string') {\n    if (this._refs[refVal]) refVal = this._refs[refVal];\n    else return resolve.call(this, compile, root, refVal);\n  }\n\n  refVal = refVal || this._schemas[ref];\n  if (refVal instanceof SchemaObject) {\n    return inlineRef(refVal.schema, this._opts.inlineRefs)\n            ? refVal.schema\n            : refVal.validate || this._compile(refVal);\n  }\n\n  var res = resolveSchema.call(this, root, ref);\n  var schema, v, baseId;\n  if (res) {\n    schema = res.schema;\n    root = res.root;\n    baseId = res.baseId;\n  }\n\n  if (schema instanceof SchemaObject) {\n    v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n  } else if (schema !== undefined) {\n    v = inlineRef(schema, this._opts.inlineRefs)\n        ? schema\n        : compile.call(this, schema, root, undefined, baseId);\n  }\n\n  return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param  {Object} root root object with properties schema, refVal, refs\n * @param  {String} ref  reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n  /* jshint validthis: true */\n  var p = URI.parse(ref)\n    , refPath = _getFullPath(p)\n    , baseId = getFullPath(this._getId(root.schema));\n  if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n    var id = normalizeId(refPath);\n    var refVal = this._refs[id];\n    if (typeof refVal == 'string') {\n      return resolveRecursive.call(this, root, refVal, p);\n    } else if (refVal instanceof SchemaObject) {\n      if (!refVal.validate) this._compile(refVal);\n      root = refVal;\n    } else {\n      refVal = this._schemas[id];\n      if (refVal instanceof SchemaObject) {\n        if (!refVal.validate) this._compile(refVal);\n        if (id == normalizeId(ref))\n          return { schema: refVal, root: root, baseId: baseId };\n        root = refVal;\n      } else {\n        return;\n      }\n    }\n    if (!root.schema) return;\n    baseId = getFullPath(this._getId(root.schema));\n  }\n  return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n  /* jshint validthis: true */\n  var res = resolveSchema.call(this, root, ref);\n  if (res) {\n    var schema = res.schema;\n    var baseId = res.baseId;\n    root = res.root;\n    var id = this._getId(schema);\n    if (id) baseId = resolveUrl(baseId, id);\n    return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n  }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n  /* jshint validthis: true */\n  parsedRef.fragment = parsedRef.fragment || '';\n  if (parsedRef.fragment.slice(0,1) != '/') return;\n  var parts = parsedRef.fragment.split('/');\n\n  for (var i = 1; i < parts.length; i++) {\n    var part = parts[i];\n    if (part) {\n      part = util.unescapeFragment(part);\n      schema = schema[part];\n      if (schema === undefined) break;\n      var id;\n      if (!PREVENT_SCOPE_CHANGE[part]) {\n        id = this._getId(schema);\n        if (id) baseId = resolveUrl(baseId, id);\n        if (schema.$ref) {\n          var $ref = resolveUrl(baseId, schema.$ref);\n          var res = resolveSchema.call(this, root, $ref);\n          if (res) {\n            schema = res.schema;\n            root = res.root;\n            baseId = res.baseId;\n          }\n        }\n      }\n    }\n  }\n  if (schema !== undefined && schema !== root.schema)\n    return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n  'type', 'format', 'pattern',\n  'maxLength', 'minLength',\n  'maxProperties', 'minProperties',\n  'maxItems', 'minItems',\n  'maximum', 'minimum',\n  'uniqueItems', 'multipleOf',\n  'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n  if (limit === false) return false;\n  if (limit === undefined || limit === true) return checkNoRef(schema);\n  else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n  var item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return false;\n      item = schema[key];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  }\n  return true;\n}\n\n\nfunction countKeys(schema) {\n  var count = 0, item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object') count += countKeys(item);\n      if (count == Infinity) return Infinity;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return Infinity;\n      if (SIMPLE_INLINED[key]) {\n        count++;\n      } else {\n        item = schema[key];\n        if (typeof item == 'object') count += countKeys(item) + 1;\n        if (count == Infinity) return Infinity;\n      }\n    }\n  }\n  return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n  if (normalize !== false) id = normalizeId(id);\n  var p = URI.parse(id);\n  return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n  return URI.serialize(p).split('#')[0] + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n  return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n  id = normalizeId(id);\n  return URI.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n  var schemaId = normalizeId(this._getId(schema));\n  var baseIds = {'': schemaId};\n  var fullPaths = {'': getFullPath(schemaId, false)};\n  var localRefs = {};\n  var self = this;\n\n  traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n    if (jsonPtr === '') return;\n    var id = self._getId(sch);\n    var baseId = baseIds[parentJsonPtr];\n    var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n    if (keyIndex !== undefined)\n      fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n    if (typeof id == 'string') {\n      id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n      var refVal = self._refs[id];\n      if (typeof refVal == 'string') refVal = self._refs[refVal];\n      if (refVal && refVal.schema) {\n        if (!equal(sch, refVal.schema))\n          throw new Error('id \"' + id + '\" resolves to more than one schema');\n      } else if (id != normalizeId(fullPath)) {\n        if (id[0] == '#') {\n          if (localRefs[id] && !equal(sch, localRefs[id]))\n            throw new Error('id \"' + id + '\" resolves to more than one schema');\n          localRefs[id] = sch;\n        } else {\n          self._refs[id] = fullPath;\n        }\n      }\n    }\n    baseIds[jsonPtr] = baseId;\n    fullPaths[jsonPtr] = fullPath;\n  });\n\n  return localRefs;\n}\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar DatePrototype = Date.prototype;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar setFullYear = uncurryThis(DatePrototype.setFullYear);\n\n// `Date.prototype.setYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.setyear\n$({ target: 'Date', proto: true }, {\n  setYear: function setYear(year) {\n    // validate\n    thisTimeValue(this);\n    var yi = toIntegerOrInfinity(year);\n    var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;\n    return setFullYear(this, yyyy);\n  }\n});\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n  var onUnmount = useUpdatedRef(fn);\n  useEffect(function () {\n    return function () {\n      return onUnmount.current();\n    };\n  }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n  var valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","var baseDifference = require('./_baseDifference'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, values)\n    : [];\n});\n\nmodule.exports = without;\n","\"use strict\";\n// This file is generated on build. To make changes, see scripts/version.js\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\n/**\n * The current version of the library.\n */\nexports.version = '2.2.0';\n//# sourceMappingURL=version.js.map","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main.79caed11';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t  doc = view.document\n\t\t  // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t  filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t   typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n  module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n  define(\"FileSaver.js\", function() {\n    return saveAs;\n  });\n}\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, globalThis);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackReceiver} represents a remote MediaStreamTrack.\n * @extends MediaTrackTransceiver\n */\nvar MediaTrackReceiver = /** @class */ (function (_super) {\n    __extends(MediaTrackReceiver, _super);\n    /**\n     * Construct a {@link MediaTrackReceiver}.\n     * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n     * @param {MediaStreamTrack} mediaStreamTrack - The remote MediaStreamTrack\n     */\n    function MediaTrackReceiver(id, mediaStreamTrack) {\n        return _super.call(this, id, mediaStreamTrack) || this;\n    }\n    return MediaTrackReceiver;\n}(MediaTrackTransceiver));\nmodule.exports = MediaTrackReceiver;\n//# sourceMappingURL=receiver.js.map","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","/**!\n\n @license\n handlebars v4.7.7\n\nCopyright (C) 2011-2019 by Yehuda Katz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n!function(a,b){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=b():\"function\"==typeof define&&define.amd?define([],b):\"object\"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p=\"\",b(0)}([function(a,b,c){\"use strict\";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i[\"default\"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m[\"default\"],a.Parser=j.parser,a.parse=j.parse,a.parseWithoutProcessing=j.parseWithoutProcessing,a}var e=c(1)[\"default\"];b.__esModule=!0;var f=c(2),g=e(f),h=c(45),i=e(h),j=c(46),k=c(51),l=c(52),m=e(l),n=c(49),o=e(n),p=c(44),q=e(p),r=g[\"default\"].create,s=d();s.create=d,q[\"default\"](s),s.Visitor=o[\"default\"],s[\"default\"]=s,b[\"default\"]=s,a.exports=b[\"default\"]},function(a,b){\"use strict\";b[\"default\"]=function(a){return a&&a.__esModule?a:{\"default\":a}},b.__esModule=!0},function(a,b,c){\"use strict\";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j[\"default\"],a.Exception=l[\"default\"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)[\"default\"],f=c(1)[\"default\"];b.__esModule=!0;var g=c(4),h=e(g),i=c(37),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(38),p=e(o),q=c(44),r=f(q),s=d();s.create=d,r[\"default\"](s),s[\"default\"]=s,b[\"default\"]=s,a.exports=b[\"default\"]},function(a,b){\"use strict\";b[\"default\"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b[\"default\"]=a,b},b.__esModule=!0},function(a,b,c){\"use strict\";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)[\"default\"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(10),j=c(30),k=c(32),l=e(k),m=c(33),n=\"4.7.7\";b.VERSION=n;var o=8;b.COMPILER_REVISION=o;var p=7;b.LAST_COMPATIBLE_COMPILER_REVISION=p;var q={1:\"<= 1.0.rc.2\",2:\"== 1.0.0-rc.3\",3:\"== 1.0.0-rc.4\",4:\"== 1.x.x\",5:\"== 2.0.0-alpha.x\",6:\">= 2.0.0-beta.1\",7:\">= 4.0.0 <4.3.0\",8:\">= 4.3.0\"};b.REVISION_CHANGES=q;var r=\"[object Object]\";d.prototype={constructor:d,logger:l[\"default\"],log:l[\"default\"].log,registerHelper:function(a,b){if(f.toString.call(a)===r){if(b)throw new h[\"default\"](\"Arg not supported with multiple helpers\");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===r)f.extend(this.partials,a);else{if(\"undefined\"==typeof b)throw new h[\"default\"]('Attempting to register a partial called \"'+a+'\" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===r){if(b)throw new h[\"default\"](\"Arg not supported with multiple decorators\");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]},resetLoggedPropertyAccesses:function(){m.resetLoggedProperties()}};var s=l[\"default\"].log;b.log=s,b.createFrame=f.createFrame,b.logger=l[\"default\"]},function(a,b){\"use strict\";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if(\"string\"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return\"\";if(!a)return a+\"\";a=\"\"+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+\".\":\"\")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\",\"=\":\"&#x3D;\"},l=/[&<>\"'`=]/g,m=/[&<>\"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return\"function\"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return\"function\"==typeof a&&\"[object Function]\"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||\"object\"!=typeof a)&&\"[object Array]\"===n.call(a)};b.isArray=p},function(a,b,c){\"use strict\";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0,i=void 0,j=void 0;c&&(g=c.start.line,h=c.end.line,i=c.start.column,j=c.end.column,a+=\" - \"+g+\":\"+i);for(var k=Error.prototype.constructor.call(this,a),l=0;l<f.length;l++)this[f[l]]=k[f[l]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,this.endLineNumber=h,e?(Object.defineProperty(this,\"column\",{value:i,enumerable:!0}),Object.defineProperty(this,\"endColumn\",{value:j,enumerable:!0})):(this.column=i,this.endColumn=j))}catch(m){}}var e=c(7)[\"default\"];b.__esModule=!0;var f=[\"description\",\"fileName\",\"lineNumber\",\"endLineNumber\",\"message\",\"name\",\"number\",\"stack\"];d.prototype=new Error,b[\"default\"]=d,a.exports=b[\"default\"]},function(a,b,c){a.exports={\"default\":c(8),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){\"use strict\";function d(a){h[\"default\"](a),j[\"default\"](a),l[\"default\"](a),n[\"default\"](a),p[\"default\"](a),r[\"default\"](a),t[\"default\"](a)}function e(a,b,c){a.helpers[b]&&(a.hooks[b]=a.helpers[b],c||delete a.helpers[b])}var f=c(1)[\"default\"];b.__esModule=!0,b.registerDefaultHelpers=d,b.moveHelperToHooks=e;var g=c(11),h=f(g),i=c(12),j=f(i),k=c(25),l=f(k),m=c(26),n=f(m),o=c(27),p=f(o),q=c(28),r=f(q),s=c(29),t=f(s)},function(a,b,c){\"use strict\";b.__esModule=!0;var d=c(5);b[\"default\"]=function(a){a.registerHelper(\"blockHelperMissing\",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b[\"default\"]},function(a,b,c){(function(d){\"use strict\";var e=c(13)[\"default\"],f=c(1)[\"default\"];b.__esModule=!0;var g=c(5),h=c(6),i=f(h);b[\"default\"]=function(a){a.registerHelper(\"each\",function(a,b){function c(b,c,d){l&&(l.key=b,l.index=c,l.first=0===c,l.last=!!d,m&&(l.contextPath=m+b)),k+=f(a[b],{data:l,blockParams:g.blockParams([a[b],b],[m+b,null])})}if(!b)throw new i[\"default\"](\"Must pass iterator to #each\");var f=b.fn,h=b.inverse,j=0,k=\"\",l=void 0,m=void 0;if(b.data&&b.ids&&(m=g.appendContextPath(b.data.contextPath,b.ids[0])+\".\"),g.isFunction(a)&&(a=a.call(this)),b.data&&(l=g.createFrame(b.data)),a&&\"object\"==typeof a)if(g.isArray(a))for(var n=a.length;j<n;j++)j in a&&c(j,j,j===a.length-1);else if(d.Symbol&&a[d.Symbol.iterator]){for(var o=[],p=a[d.Symbol.iterator](),q=p.next();!q.done;q=p.next())o.push(q.value);a=o;for(var n=a.length;j<n;j++)c(j,j,j===a.length-1)}else!function(){var b=void 0;e(a).forEach(function(a){void 0!==b&&c(b,j-1),b=a,j++}),void 0!==b&&c(b,j-1,!0)}();return 0===j&&(k=h(this)),k})},a.exports=b[\"default\"]}).call(b,function(){return this}())},function(a,b,c){a.exports={\"default\":c(14),__esModule:!0}},function(a,b,c){c(15),a.exports=c(21).Object.keys},function(a,b,c){var d=c(16);c(18)(\"keys\",function(a){return function(b){return a(d(b))}})},function(a,b,c){var d=c(17);a.exports=function(a){return Object(d(a))}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError(\"Can't call method on  \"+a);return a}},function(a,b,c){var d=c(19),e=c(21),f=c(24);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),\"Object\",g)}},function(a,b,c){var d=c(20),e=c(21),f=c(22),g=\"prototype\",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&\"function\"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&\"function\"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:\"1.2.6\"};\"number\"==typeof __e&&(__e=c)},function(a,b,c){var d=c(23);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if(\"function\"!=typeof a)throw TypeError(a+\" is not a function!\");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,c){\"use strict\";var d=c(1)[\"default\"];b.__esModule=!0;var e=c(6),f=d(e);b[\"default\"]=function(a){a.registerHelper(\"helperMissing\",function(){if(1!==arguments.length)throw new f[\"default\"]('Missing helper: \"'+arguments[arguments.length-1].name+'\"')})},a.exports=b[\"default\"]},function(a,b,c){\"use strict\";var d=c(1)[\"default\"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b[\"default\"]=function(a){a.registerHelper(\"if\",function(a,b){if(2!=arguments.length)throw new g[\"default\"](\"#if requires exactly one argument\");return e.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||e.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper(\"unless\",function(b,c){if(2!=arguments.length)throw new g[\"default\"](\"#unless requires exactly one argument\");return a.helpers[\"if\"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b[\"default\"]},function(a,b){\"use strict\";b.__esModule=!0,b[\"default\"]=function(a){a.registerHelper(\"log\",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b[\"default\"]},function(a,b){\"use strict\";b.__esModule=!0,b[\"default\"]=function(a){a.registerHelper(\"lookup\",function(a,b,c){return a?c.lookupProperty(a,b):a})},a.exports=b[\"default\"]},function(a,b,c){\"use strict\";var d=c(1)[\"default\"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b[\"default\"]=function(a){a.registerHelper(\"with\",function(a,b){if(2!=arguments.length)throw new g[\"default\"](\"#with requires exactly one argument\");e.isFunction(a)&&(a=a.call(this));var c=b.fn;if(e.isEmpty(a))return b.inverse(this);var d=b.data;return b.data&&b.ids&&(d=e.createFrame(b.data),d.contextPath=e.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:d,blockParams:e.blockParams([a],[d&&d.contextPath])})})},a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a){g[\"default\"](a)}var e=c(1)[\"default\"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(31),g=e(f)},function(a,b,c){\"use strict\";b.__esModule=!0;var d=c(5);b[\"default\"]=function(a){a.registerDecorator(\"inline\",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b[\"default\"]},function(a,b,c){\"use strict\";b.__esModule=!0;var d=c(5),e={methodMap:[\"debug\",\"info\",\"warn\",\"error\"],level:\"info\",lookupLevel:function(a){if(\"string\"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),\"undefined\"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b=\"log\");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b[\"default\"]=e,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a){var b=i(null);b.constructor=!1,b.__defineGetter__=!1,b.__defineSetter__=!1,b.__lookupGetter__=!1;var c=i(null);return c.__proto__=!1,{properties:{whitelist:l.createNewLookupObject(c,a.allowedProtoProperties),defaultValue:a.allowProtoPropertiesByDefault},methods:{whitelist:l.createNewLookupObject(b,a.allowedProtoMethods),defaultValue:a.allowProtoMethodsByDefault}}}function e(a,b,c){return\"function\"==typeof a?f(b.methods,c):f(b.properties,c)}function f(a,b){return void 0!==a.whitelist[b]?a.whitelist[b]===!0:void 0!==a.defaultValue?a.defaultValue:(g(b),!1)}function g(a){o[a]!==!0&&(o[a]=!0,n.log(\"error\",'Handlebars: Access has been denied to resolve the property \"'+a+'\" because it is not an \"own property\" of its parent.\\nYou can add a runtime option to disable the check or this warning:\\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}function h(){j(o).forEach(function(a){delete o[a]})}var i=c(34)[\"default\"],j=c(13)[\"default\"],k=c(3)[\"default\"];b.__esModule=!0,b.createProtoAccessControl=d,b.resultIsAllowed=e,b.resetLoggedProperties=h;var l=c(36),m=c(32),n=k(m),o=i(null)},function(a,b,c){a.exports={\"default\":c(35),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b){return d.create(a,b)}},function(a,b,c){\"use strict\";function d(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return f.extend.apply(void 0,[e(null)].concat(b))}var e=c(34)[\"default\"];b.__esModule=!0,b.createNewLookupObject=d;var f=c(5)},function(a,b){\"use strict\";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return\"\"+this.string},b[\"default\"]=c,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a){var b=a&&a[0]||1,c=v.COMPILER_REVISION;if(!(b>=v.LAST_COMPATIBLE_COMPILER_REVISION&&b<=v.COMPILER_REVISION)){if(b<v.LAST_COMPATIBLE_COMPILER_REVISION){var d=v.REVISION_CHANGES[c],e=v.REVISION_CHANGES[b];throw new u[\"default\"](\"Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (\"+d+\") or downgrade your runtime to an older version (\"+e+\").\")}throw new u[\"default\"](\"Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (\"+a[1]+\").\")}}function e(a,b){function c(c,d,e){e.hash&&(d=s.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=s.extend({},e,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),g=b.VM.invokePartial.call(this,c,d,f);if(null==g&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),g=e.partials[e.name](d,f)),null!=g){if(e.indent){for(var h=g.split(\"\\n\"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=e.indent+h[i];g=h.join(\"\\n\")}return g}throw new u[\"default\"](\"The partial \"+e.name+\" could not be compiled when running in runtime-only mode\")}function d(b){function c(b){return\"\"+a.main(g,b,g.helpers,g.partials,f,i,h)}var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],f=e.data;d._setup(e),!e.partial&&a.useData&&(f=j(b,f));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=e.depths?b!=e.depths[0]?[b].concat(e.depths):e.depths:[b]),(c=k(a.main,c,g,e.depths||[],f,i))(b,e)}if(!b)throw new u[\"default\"](\"No environment passed to template\");if(!a||!a.main)throw new u[\"default\"](\"Unknown template object: \"+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e=a.compiler&&7===a.compiler[0],g={strict:function(a,b,c){if(!(a&&b in a))throw new u[\"default\"]('\"'+b+'\" not defined in '+a,{loc:c});return g.lookupProperty(a,b)},lookupProperty:function(a,b){var c=a[b];return null==c?c:Object.prototype.hasOwnProperty.call(a,b)?c:y.resultIsAllowed(c,g.protoAccessControl,b)?c:void 0},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++){var e=a[d]&&g.lookupProperty(a[d],b);if(null!=e)return a[d][b]}},lambda:function(a,b){return\"function\"==typeof a?a.call(b):a},escapeExpression:s.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+\"_d\"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},mergeIfNeeded:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=s.extend({},b,a)),c},nullContext:n({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){if(c.partial)g.protoAccessControl=c.protoAccessControl,g.helpers=c.helpers,g.partials=c.partials,g.decorators=c.decorators,g.hooks=c.hooks;else{var d=s.extend({},b.helpers,c.helpers);l(d,g),g.helpers=d,a.usePartial&&(g.partials=g.mergeIfNeeded(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(g.decorators=s.extend({},b.decorators,c.decorators)),g.hooks={},g.protoAccessControl=y.createProtoAccessControl(c);var f=c.allowCallsToHelperMissing||e;w.moveHelperToHooks(g,\"helperMissing\",f),w.moveHelperToHooks(g,\"blockHelperMissing\",f)}},d._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new u[\"default\"](\"must pass block params\");if(a.useDepths&&!e)throw new u[\"default\"](\"must pass parent depths\");return f(g,b,a[b],c,0,d,e)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a=\"@partial-block\"===c.name?c.data[\"partial-block\"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data[\"partial-block\"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=v.createFrame(c.data);var a=c.fn;e=c.data[\"partial-block\"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=v.createFrame(c.data),c.data[\"partial-block\"]=d,a(b,c)},a.partials&&(c.partials=s.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new u[\"default\"](\"The partial \"+c.name+\" could not be found\");if(a instanceof Function)return a(b,c)}function i(){return\"\"}function j(a,b){return b&&\"root\"in b||(b=b?v.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),s.extend(b,g)}return b}function l(a,b){o(a).forEach(function(c){var d=a[c];a[c]=m(d,b)})}function m(a,b){var c=b.lookupProperty;return x.wrapHelper(a,function(a){return s.extend({lookupProperty:c},a)})}var n=c(39)[\"default\"],o=c(13)[\"default\"],p=c(3)[\"default\"],q=c(1)[\"default\"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var r=c(5),s=p(r),t=c(6),u=q(t),v=c(4),w=c(10),x=c(43),y=c(33)},function(a,b,c){a.exports={\"default\":c(40),__esModule:!0}},function(a,b,c){c(41),a.exports=c(21).Object.seal},function(a,b,c){var d=c(42);c(18)(\"seal\",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return\"object\"==typeof a?null!==a:\"function\"==typeof a}},function(a,b){\"use strict\";function c(a,b){if(\"function\"!=typeof a)return a;var c=function(){var c=arguments[arguments.length-1];return arguments[arguments.length-1]=b(c),a.apply(this,arguments)};return c}b.__esModule=!0,b.wrapHelper=c},function(a,b){(function(c){\"use strict\";b.__esModule=!0,b[\"default\"]=function(a){var b=\"undefined\"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b[\"default\"]}).call(b,function(){return this}())},function(a,b){\"use strict\";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return\"SubExpression\"===a.type||(\"MustacheStatement\"===a.type||\"BlockStatement\"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\\.|this\\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b[\"default\"]=c,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a,b){if(\"Program\"===a.type)return a;i[\"default\"].yy=o,o.locInfo=function(a){return new o.SourceLocation(b&&b.srcName,a)};var c=i[\"default\"].parse(a);return c}function e(a,b){var c=d(a,b),e=new k[\"default\"](b);return e.accept(c)}var f=c(1)[\"default\"],g=c(3)[\"default\"];b.__esModule=!0,b.parseWithoutProcessing=d,b.parse=e;var h=c(47),i=f(h),j=c(48),k=f(j),l=c(50),m=g(l),n=c(5);b.parser=i[\"default\"];var o={};n.extend(o,m)},function(a,b){\"use strict\";b.__esModule=!0;var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:\"CommentStatement\",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:\"ContentStatement\",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:\"PartialStatement\",name:f[h-3],params:f[h-2],hash:f[h-1],indent:\"\",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:\"SubExpression\",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:\"Hash\",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:\"HashPair\",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:\"StringLiteral\",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:\"NumberLiteral\",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:\"BooleanLiteral\",value:\"true\"===f[h],original:\"true\"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:\"UndefinedLiteral\",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:\"NullLiteral\",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{\n33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,\"number\"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h=\"\",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,\"undefined\"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;\"function\"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:(null!==n&&\"undefined\"!=typeof n||(n=b()),q=g[p]&&g[p][n]),\"undefined\"==typeof q||!q.length||!q[0]){var x=\"\";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push(\"'\"+this.terminals_[s]+\"'\");x=this.lexer.showPosition?\"Parse error on line \"+(i+1)+\":\\n\"+this.lexer.showPosition()+\"\\nExpecting \"+v.join(\", \")+\", got '\"+(this.terminals_[n]||n)+\"'\":\"Parse error on line \"+(i+1)+\": Unexpected \"+(1==n?\"end of input\":\"'\"+(this.terminals_[n]||n)+\"'\"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error(\"Parse Error: multiple actions possible at state: \"+p+\", token: \"+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),\"undefined\"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\"\",this.conditionStack=[\"INITIAL\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\\r\\n?|\\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\\r\\n?|\\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\\r\\n?|\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?\"...\":\"\")+a.substr(-20).replace(/\\n/g,\"\")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?\"...\":\"\")).replace(/\\n/g,\"\")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join(\"-\");return a+this.upcomingInput()+\"\\n\"+b+\"^\"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext=\"\",this.match=\"\");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\\r\\n?|\\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\\r?\\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):\"\"===this._input?this.EOF:this.parseError(\"Lexical error on line \"+(this.yylineno+1)+\". Unrecognized text.\\n\"+this.showPosition(),{text:\"\",token:null,line:this.yylineno})},lex:function(){var a=this.next();return\"undefined\"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substring(a,b.yyleng-c+a)}switch(c){case 0:if(\"\\\\\\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin(\"mu\")):\"\\\\\"===b.yytext.slice(-1)?(e(0,1),this.begin(\"emu\")):this.begin(\"mu\"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin(\"raw\"),15;case 4:return this.popState(),\"raw\"===this.conditionStack[this.conditionStack.length-1]?15:(e(5,9),\"END_RAW_BLOCK\");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin(\"raw\"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin(\"com\");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\\\\"/g,'\"'),80;case 32:return b.yytext=e(1,2).replace(/\\\\'/g,\"'\"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\\\([\\\\\\]])/g,\"$1\"),72;case 43:return\"INVALID\";case 44:return 5}},a.rules=[/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^\\/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b[\"default\"]=c,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?\"ContentStatement\"===d.type?(e||!c?/\\r?\\n\\s*?$/:/(^|\\r?\\n)\\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?\"ContentStatement\"===d.type?(e||!c?/^\\s*?\\r?\\n/:/^\\s*?(\\r?\\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&\"ContentStatement\"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\\s+/:/^[ \\t]*\\r?\\n?/,\"\"),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&\"ContentStatement\"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\\s+$/:/[ \\t]+$/,\"\"),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)[\"default\"];b.__esModule=!0;var j=c(49),k=i(j);d.prototype=new k[\"default\"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;i<j;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&\"PartialStatement\"===k.type&&(k.indent=/([ \\t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b[\"default\"]=d,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(){this.parents=[]}function e(a){this.acceptRequired(a,\"path\"),this.acceptArray(a.params),this.acceptKey(a,\"hash\")}function f(a){e.call(this,a),this.acceptKey(a,\"program\"),this.acceptKey(a,\"inverse\")}function g(a){this.acceptRequired(a,\"name\"),this.acceptArray(a.params),this.acceptKey(a,\"hash\")}var h=c(1)[\"default\"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j[\"default\"]('Unexpected node type \"'+c.type+'\" found when accepting '+b+\" on \"+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j[\"default\"](a.type+\" requires \"+b)},acceptArray:function(a){for(var b=0,c=a.length;b<c;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j[\"default\"](\"Unknown type: \"+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,\"program\")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,\"value\")}},b[\"default\"]=d,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q[\"default\"](a.path.original+\" doesn't match \"+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\\[.*\\]$/.test(a)?a.substring(1,a.length-1):a}function g(a,b){return{open:\"~\"===a.charAt(2),close:\"~\"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\\{\\{~?!-?-?/,\"\").replace(/-?-?~?\\}\\}$/,\"\")}function i(a,b,c){c=this.locInfo(c);for(var d=a?\"@\":\"\",e=[],f=0,g=0,h=b.length;g<h;g++){var i=b[g].part,j=b[g].original!==i;if(d+=(b[g].separator||\"\")+i,j||\"..\"!==i&&\".\"!==i&&\"this\"!==i)e.push(i);else{if(e.length>0)throw new q[\"default\"](\"Invalid path: \"+d,{loc:c});\"..\"===i&&f++}}return{type:\"PathExpression\",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h=\"{\"!==g&&\"&\"!==g,i=/\\*/.test(d);return{type:i?\"Decorator\":\"MustacheStatement\",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:\"Program\",body:b,strip:{},loc:e};return{type:\"BlockStatement\",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q[\"default\"](\"Unexpected inverse block on decorator\",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?\"DecoratorBlock\":\"BlockStatement\",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:\"Program\",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:\"PartialBlockStatement\",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)[\"default\"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){\"use strict\";function d(){}function e(a,b,c){if(null==a||\"string\"!=typeof a&&\"Program\"!==a.type)throw new l[\"default\"](\"You must pass a string or Handlebars AST to Handlebars.precompile. You passed \"+a);b=b||{},\"data\"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||\"string\"!=typeof a&&\"Program\"!==a.type)throw new l[\"default\"](\"You must pass a string or Handlebars AST to Handlebars.compile. You passed \"+a);b=m.extend({},b),\"data\"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(m.isArray(a)&&m.isArray(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!g(a[c],b[c]))return!1;return!0}}function h(a){if(!a.path.parts){var b=a.path;a.path={type:\"PathExpression\",data:!1,depth:0,parts:[b.original+\"\"],original:b.original+\"\",loc:b.loc}}}var i=c(34)[\"default\"],j=c(1)[\"default\"];b.__esModule=!0,b.Compiler=d,b.precompile=e,b.compile=f;var k=c(6),l=j(k),m=c(5),n=c(45),o=j(n),p=[].slice;d.prototype={compiler:d,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;c<b;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;c<b;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){return this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[],b.knownHelpers=m.extend(i(null),{helperMissing:!0,blockHelperMissing:!0,each:!0,\"if\":!0,unless:!0,\"with\":!0,log:!0,lookup:!0},b.knownHelpers),this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new l[\"default\"](\"Unknown type: \"+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;d<c;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);\"helper\"===d?this.helperSexpr(a,b,c):\"simple\"===d?(this.simpleSexpr(a),this.opcode(\"pushProgram\",b),this.opcode(\"pushProgram\",c),this.opcode(\"emptyHash\"),this.opcode(\"blockValue\",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode(\"pushProgram\",b),this.opcode(\"pushProgram\",c),this.opcode(\"emptyHash\"),this.opcode(\"ambiguousBlockValue\")),this.opcode(\"append\")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode(\"registerDecorator\",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new l[\"default\"](\"Unsupported number of partial arguments: \"+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode(\"pushLiteral\",\"undefined\"):c.push({type:\"PathExpression\",parts:[],depth:0}));var d=a.name.original,e=\"SubExpression\"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||\"\";this.options.preventIndent&&f&&(this.opcode(\"appendContent\",f),f=\"\"),this.opcode(\"invokePartial\",e,d,f),this.opcode(\"append\")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode(\"appendEscaped\"):this.opcode(\"append\")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode(\"appendContent\",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);\"simple\"===b?this.simpleSexpr(a):\"helper\"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode(\"getContext\",d.depth),this.opcode(\"pushProgram\",b),this.opcode(\"pushProgram\",c),d.strict=!0,this.accept(d),this.opcode(\"invokeAmbiguous\",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode(\"resolvePossibleLambda\")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode(\"invokeKnownHelper\",d.length,f);else{if(this.options.knownHelpersOnly)throw new l[\"default\"](\"You specified knownHelpersOnly, but used the unknown helper \"+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode(\"invokeHelper\",d.length,e.original,o[\"default\"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode(\"getContext\",a.depth);var b=a.parts[0],c=o[\"default\"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode(\"lookupBlockParam\",d,a.parts):b?a.data?(this.options.data=!0,this.opcode(\"lookupData\",a.depth,a.parts,a.strict)):this.opcode(\"lookupOnContext\",a.parts,a.falsy,a.strict,c):this.opcode(\"pushContext\")},StringLiteral:function(a){this.opcode(\"pushString\",a.value)},NumberLiteral:function(a){this.opcode(\"pushLiteral\",a.value)},BooleanLiteral:function(a){this.opcode(\"pushLiteral\",a.value)},UndefinedLiteral:function(){this.opcode(\"pushLiteral\",\"undefined\")},NullLiteral:function(){this.opcode(\"pushLiteral\",\"null\")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode(\"pushHash\");c<d;c++)this.pushParam(b[c].value);for(;c--;)this.opcode(\"assignToHash\",b[c].key);this.opcode(\"popHash\")},opcode:function(a){this.opcodes.push({opcode:a,args:p.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=o[\"default\"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&o[\"default\"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?\"helper\":e?\"ambiguous\":\"simple\"},pushParams:function(a){for(var b=0,c=a.length;b<c;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||\"\";if(this.stringParams)b.replace&&(b=b.replace(/^(\\.?\\.\\/)*/g,\"\").replace(/\\//g,\".\")),a.depth&&this.addDepth(a.depth),this.opcode(\"getContext\",a.depth||0),this.opcode(\"pushStringParam\",b,a.type),\"SubExpression\"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||o[\"default\"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(\".\");this.opcode(\"pushId\",\"BlockParam\",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\\.|$)/,\"\").replace(/^\\.\\//,\"\").replace(/^\\.$/,\"\")),this.opcode(\"pushId\",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode(\"pushProgram\",b),this.opcode(\"pushProgram\",c),a.hash?this.accept(a.hash):this.opcode(\"emptyHash\",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;b<c;b++){var d=this.options.blockParams[b],e=d&&m.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){\"use strict\";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;f<g;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable(\"container.strict\"),\"(\",e,\", \",b.quotedString(c[f]),\", \",JSON.stringify(b.source.currentLocation),\" )\"]:e}var g=c(13)[\"default\"],h=c(1)[\"default\"];b.__esModule=!0;var i=c(4),j=c(6),k=h(j),l=c(5),m=c(53),n=h(m);e.prototype={nameLookup:function(a,b){return this.internalNameLookup(a,b)},depthedLookup:function(a){return[this.aliasable(\"container.lookup\"),\"(depths, \",JSON.stringify(a),\")\"]},compilerInfo:function(){var a=i.COMPILER_REVISION,b=i.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return l.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?[\"return \",a,\";\"]:c?[\"buffer += \",a,\";\"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString(\"\")},internalNameLookup:function(a,b){return this.lookupPropertyFunctionIsUsed=!0,[\"lookupProperty(\",a,\",\",JSON.stringify(b),\")\"]},lookupPropertyFunctionIsUsed:!1,compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;h<i;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(\"\"),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new k[\"default\"](\"Compile completed with content left on stack\");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend([\"var decorators = container.decorators, \",this.lookupPropertyFunctionVarDeclaration(),\";\\n\"]),\nthis.decorators.push(\"return fn;\"),d?this.decorators=Function.apply(this,[\"fn\",\"props\",\"container\",\"depth0\",\"data\",\"blockParams\",\"depths\",this.decorators.merge()]):(this.decorators.prepend(\"function(fn, props, container, depth0, data, blockParams, depths) {\\n\"),this.decorators.push(\"}\\n\"),this.decorators=this.decorators.merge()));var j=this.createFunctionContext(d);if(this.isChild)return j;var l={compiler:this.compilerInfo(),main:j};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;h<i;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+\"_d\"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new n[\"default\"](this.options.srcName),this.decorators=new n[\"default\"](this.options.srcName)},createFunctionContext:function(a){var b=this,c=\"\",d=this.stackVars.concat(this.registers.list);d.length>0&&(c+=\", \"+d.join(\", \"));var e=0;g(this.aliases).forEach(function(a){var d=b.aliases[a];d.children&&d.referenceCount>1&&(c+=\", alias\"+ ++e+\"=\"+a,d.children[0]=\"alias\"+e)}),this.lookupPropertyFunctionIsUsed&&(c+=\", \"+this.lookupPropertyFunctionVarDeclaration());var f=[\"container\",\"depth0\",\"helpers\",\"partials\",\"data\"];(this.useBlockParams||this.useDepths)&&f.push(\"blockParams\"),this.useDepths&&f.push(\"depths\");var h=this.mergeSource(c);return a?(f.push(h),Function.apply(this,f)):this.source.wrap([\"function(\",f.join(\",\"),\") {\\n  \",h,\"}\"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(\"  + \"):f=a,g=a):(f&&(e?f.prepend(\"buffer += \"):d=!0,g.add(\";\"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend(\"return \"),g.add(\";\")):e||this.source.push('return \"\";'):(a+=\", buffer = \"+(d?\"\":this.initializeBuffer()),f?(f.prepend(\"return buffer + \"),g.add(\";\")):this.source.push(\"return buffer;\")),a&&this.source.prepend(\"var \"+a.substring(2)+(d?\"\":\";\\n\")),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return\"\\n      lookupProperty = container.lookupProperty || function(parent, propertyName) {\\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\\n          return parent[propertyName];\\n        }\\n        return undefined\\n    }\\n    \".trim()},blockValue:function(a){var b=this.aliasable(\"container.hooks.blockHelperMissing\"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,\"call\",c))},ambiguousBlockValue:function(){var a=this.aliasable(\"container.hooks.blockHelperMissing\"),b=[this.contextName(0)];this.setupHelperArgs(\"\",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource([\"if (!\",this.lastHelper,\") { \",c,\" = \",this.source.functionCall(a,\"call\",b),\"}\"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[\" != null ? \",a,' : \"\"']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource([\"if (\",a,\" != null) { \",this.appendToBuffer(a,void 0,!0),\" }\"]),this.environment.isSimple&&this.pushSource([\"else { \",this.appendToBuffer(\"''\",void 0,!0),\" }\"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable(\"container.escapeExpression\"),\"(\",this.popStack(),\")\"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath(\"context\",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push([\"blockParams[\",a[0],\"][\",a[1],\"]\"]),this.resolvePath(\"context\",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral(\"container.data(data, \"+a+\")\"):this.pushStackLiteral(\"data\"),this.resolvePath(\"data\",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;c<h;c++)this.replaceStack(function(e){var f=g.nameLookup(e,b[c],a);return d?[\" && \",f]:[\" != null ? \",f,\" : \",e]})},resolvePossibleLambda:function(){this.push([this.aliasable(\"container.lambda\"),\"(\",this.popStack(),\", \",this.contextName(0),\")\"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),\"SubExpression\"!==b&&(\"string\"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push(\"{}\"),this.stringParams&&(this.push(\"{}\"),this.push(\"{}\")),this.pushStackLiteral(a?\"undefined\":\"{}\")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:{},types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup(\"decorators\",b,\"decorator\"),d=this.setupHelperArgs(b,a);this.decorators.push([\"fn = \",this.decorators.functionCall(c,\"\",[\"fn\",\"props\",\"container\",d]),\" || fn;\"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=[];c&&f.push(e.name),f.push(d),this.options.strict||f.push(this.aliasable(\"container.hooks.helperMissing\"));var g=[\"(\",this.itemsSeparatedBy(f,\"||\"),\")\"],h=this.source.functionCall(g,\"call\",e.callParams);this.push(h)},itemsSeparatedBy:function(a,b){var c=[];c.push(a[0]);for(var d=1;d<a.length;d++)c.push(b,a[d]);return c},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,\"call\",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister(\"helper\");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup(\"helpers\",a,\"helper\"),f=[\"(\",\"(helper = \",e,\" || \",c,\")\"];this.options.strict||(f[0]=\"(helper = \",f.push(\" != null ? helper : \",this.aliasable(\"container.hooks.helperMissing\"))),this.push([\"(\",f,d.paramsInit?[\"),(\",d.paramsInit]:[],\"),\",\"(typeof helper === \",this.aliasable('\"function\"'),\" ? \",this.source.functionCall(\"helper\",\"call\",d.callParams),\" : helper))\"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers=\"helpers\",e.partials=\"partials\",e.decorators=\"container.decorators\",a?d.unshift(b):d.unshift(this.nameLookup(\"partials\",b,\"partial\")),this.options.compat&&(e.depths=\"depths\"),e=this.objectLiteral(e),d.push(e),this.push(this.source.functionCall(\"container.invokePartial\",\"\",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){\"BlockParam\"===a?this.pushStackLiteral(\"blockParams[\"+b[0]+\"].path[\"+b[1]+\"]\"+(c?\" + \"+JSON.stringify(\".\"+c):\"\")):\"PathExpression\"===a?this.pushString(b):\"SubExpression\"===a?this.pushStackLiteral(\"true\"):this.pushStackLiteral(\"null\")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;f<g;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);if(null==h){this.context.programs.push(\"\");var i=this.context.programs.length;d.index=i,d.name=\"program\"+i,this.context.programs[i]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[i]=e.decorators,this.context.environments[i]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams,d.useDepths=this.useDepths,d.useBlockParams=this.useBlockParams}else d.index=h.index,d.name=\"program\"+h.index,this.useDepths=this.useDepths||h.useDepths,this.useBlockParams=this.useBlockParams||h.useBlockParams}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;b<c;b++){var d=this.context.environments[b];if(d&&d.equals(a))return d}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,\"data\",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push(\"blockParams\"),this.useDepths&&c.push(\"depths\"),\"container.program(\"+c.join(\", \")+\")\"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=[\"(\"],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new k[\"default\"](\"replaceStack on non-inline\");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=[\"(\",c],f=!0;else{e=!0;var h=this.incrStack();b=[\"((\",this.push(h),\" = \",g,\")\"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,\")\"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push(\"stack\"+this.stackSlot),this.topStackName()},topStackName:function(){return\"stack\"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;b<c;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f,\" = \",e,\";\"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new k[\"default\"](\"Invalid stack pop\");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?\"depths[\"+a+\"]\":\"depth\"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup(\"helpers\",b,\"helper\"),g=this.aliasable(this.contextName(0)+\" != null ? \"+this.contextName(0)+\" : (container.nullContext || {})\");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||\"container.noop\",d.inverse=j||\"container.noop\");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data=\"data\"),this.useBlockParams&&(d.blockParams=\"blockParams\"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e.loc=JSON.stringify(this.source.currentLocation),e=this.objectLiteral(e),d?(this.useRegister(\"options\"),c.push(\"options\"),[\"options=\",e]):c?(c.push(e),\"\"):e}},function(){for(var a=\"break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false\".split(\" \"),b=e.RESERVED_WORDS={},c=0,d=a.length;c<d;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b[\"default\"]=e,a.exports=b[\"default\"]},function(a,b,c){\"use strict\";function d(a,b,c){if(g.isArray(a)){for(var d=[],e=0,f=a.length;e<f;e++)d.push(b.wrap(a[e],c));return d}return\"boolean\"==typeof a||\"number\"==typeof a?a+\"\":a}function e(a){this.srcFile=a,this.source=[]}var f=c(13)[\"default\"];b.__esModule=!0;var g=c(5),h=void 0;try{}catch(i){}h||(h=function(a,b,c,d){this.src=\"\",d&&this.add(d)},h.prototype={add:function(a){g.isArray(a)&&(a=a.join(\"\")),this.src+=a},prepend:function(a){g.isArray(a)&&(a=a.join(\"\")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([\"  \",b,\"\\n\"])}),a},each:function(a){for(var b=0,c=this.source.length;b<c;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new h(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof h?a:(a=d(a,this,b),new h(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?\".\"+b+\"(\":\"(\",c,\")\"])},quotedString:function(a){return'\"'+(a+\"\").replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\")+'\"'},objectLiteral:function(a){var b=this,c=[];f(a).forEach(function(e){var f=d(a[e],b);\"undefined\"!==f&&c.push([b.quotedString(e),\":\",f])});var e=this.generateList(c);return e.prepend(\"{\"),e.add(\"}\"),e},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;c<e;c++)c&&b.add(\",\"),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend(\"[\"),b.add(\"]\"),b}},b[\"default\"]=e,a.exports=b[\"default\"]}])});","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex =\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  date.setDate(date.getDate() + amount);\n  return date;\n}","'use strict';\nvar RTCSessionDescription = require('../../webrtc').RTCSessionDescription;\nvar _a = require('./'), createPtToCodecName = _a.createPtToCodecName, getMediaSections = _a.getMediaSections;\n/**\n * An RTX payload type\n * @typedef {PT} RtxPT\n */\n/**\n * A non-RTX payload type\n * @typedef {PT} NonRtxPT\n */\n/**\n * A Set with at least one element\n * @typedef {Set} NonEmptySet\n */\n/**\n * Apply the workaround for Issue 8329 to an RTCSessionDescriptionInit.\n * @param {RTCSessionDescriptionInit} description\n * @returns {RTCSessionDescription} newDescription\n */\nfunction workaround(description) {\n    var descriptionInit = { type: description.type };\n    if (description.type !== 'rollback') {\n        descriptionInit.sdp = sdpWorkaround(description.sdp);\n    }\n    return new RTCSessionDescription(descriptionInit);\n}\n/**\n * @param {string} sdp\n * @returns {string} newSdp\n */\nfunction sdpWorkaround(sdp) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session]\n        .concat(mediaSections.map(mediaSectionWorkaround))\n        .join('\\r\\n');\n}\n/**\n * @param {string} mediaSection\n * @returns {string} newMediaSection\n */\nfunction mediaSectionWorkaround(mediaSection) {\n    var ptToCodecName = createPtToCodecName(mediaSection);\n    mediaSection = deleteDuplicateRtxPts(mediaSection, ptToCodecName);\n    var codecNameToPts = createCodecNameToPts(ptToCodecName);\n    var rtxPts = codecNameToPts.get('rtx') || new Set();\n    var invalidRtxPts = new Set();\n    var rtxPtToAssociatedPt = createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts);\n    var associatedPtToRtxPt = createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts);\n    var unassociatedRtxPts = Array.from(invalidRtxPts);\n    // NOTE(mroberts): We normalize to lowercase.\n    var knownCodecNames = ['h264', 'vp8', 'vp9'];\n    var unassociatedPts = knownCodecNames.reduce(function (unassociatedPts, codecName) {\n        var pts = codecNameToPts.get(codecName) || new Set();\n        return Array.from(pts).reduce(function (unassociatedPts, pt) { return associatedPtToRtxPt.has(pt)\n            ? unassociatedPts\n            : unassociatedPts.add(pt); }, unassociatedPts);\n    }, new Set());\n    unassociatedPts.forEach(function (pt) {\n        if (unassociatedRtxPts.length) {\n            var rtxPt = unassociatedRtxPts.shift();\n            mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n            mediaSection = addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt);\n        }\n    });\n    unassociatedRtxPts.forEach(function (rtxPt) {\n        mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n        mediaSection = deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt);\n    });\n    return mediaSection;\n}\n/**\n * @param {string} mediaSection\n * @param {Map<PT, Codec>} ptToCodecName\n * @returns {string} newMediaSection\n */\nfunction deleteDuplicateRtxPts(mediaSection, ptToCodecName) {\n    // NOTE(syerrapragada): In some cases Chrome produces an offer/answer\n    // with duplicate \"rtx\" payload mapping in media section. When applied,\n    // Chrome rejects the SDP. We workaround this by deleting duplicate\n    // \"rtx\" mappings found in SDP.\n    return Array.from(ptToCodecName.keys()).reduce(function (section, pt) {\n        var rtpmapRegex = new RegExp(\"^a=rtpmap:\" + pt + \" rtx.+$\", 'gm');\n        return (section.match(rtpmapRegex) || []).slice(ptToCodecName.get(pt) === 'rtx' ? 1 : 0).reduce(function (section, rtpmap) {\n            var rtpmapRegex = new RegExp(\"\\r\\n\" + rtpmap);\n            var fmtpmapRegex = new RegExp(\"\\r\\na=fmtp:\" + pt + \" apt=[0-9]+\");\n            return section.replace(rtpmapRegex, '').replace(fmtpmapRegex, '');\n        }, section);\n    }, mediaSection);\n}\n/**\n * @param {Map<PT, Codec>} ptToCodecName\n * @returns {Map<string, NonEmptySet<PT>>} codecNameToPts\n */\nfunction createCodecNameToPts(ptToCodecName) {\n    var codecNameToPts = new Map();\n    ptToCodecName.forEach(function (codecName, pt) {\n        var pts = codecNameToPts.get(codecName) || new Set();\n        return codecNameToPts.set(codecName, pts.add(pt));\n    });\n    return codecNameToPts;\n}\n/**\n * @param {string} mediaSection\n * @param {Map<PT, Codec>} ptToCodecName\n * @param {Set<RtxPT>} rtxPts\n * @param {Set<RtxPT>} invalidRtxPts\n * @returns {Map<RtxPT, NonRtxPT>} rtxPtToAssociatedPt\n */\nfunction createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts) {\n    return Array.from(rtxPts).reduce(function (rtxPtToAssociatedPt, rtxPt) {\n        var fmtpPattern = new RegExp(\"a=fmtp:\" + rtxPt + \" apt=(\\\\d+)\");\n        var matches = mediaSection.match(fmtpPattern);\n        if (!matches) {\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        var pt = Number.parseInt(matches[1]);\n        if (!ptToCodecName.has(pt)) {\n            // This is Issue 8329.\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        var codecName = ptToCodecName.get(pt);\n        if (codecName === 'rtx') {\n            // Strange\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        return rtxPtToAssociatedPt.set(rtxPt, pt);\n    }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {Map<RtxPT, NonRtxPT>} rtxPtToAssociatedPt\n * @param {Set<RtxPT>} invalidRtxPts\n * @returns {Map<NonRtxPT, RtxPT>} associatedPtToRtxPt\n */\nfunction createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts) {\n    // First, we construct a Map<NonRtxPT, NonEmptySet<RtxPT>>.\n    var associatedPtToRtxPts = Array.from(rtxPtToAssociatedPt).reduce(function (associatedPtToRtxPts, pair) {\n        var rtxPt = pair[0];\n        var pt = pair[1];\n        var rtxPts = associatedPtToRtxPts.get(pt) || new Set();\n        return associatedPtToRtxPts.set(pt, rtxPts.add(rtxPt));\n    }, new Map());\n    // Then, we filter down to a Map<NonRtxPT, RtxPt>. Any RtxPTs that map to the\n    // same NonRtxPT are removed and added to invalidRtxPts.\n    return Array.from(associatedPtToRtxPts).reduce(function (associatedPtToRtxPt, pair) {\n        var pt = pair[0];\n        var rtxPts = Array.from(pair[1]);\n        if (rtxPts.length > 1) {\n            rtxPts.forEach(function (rtxPt) {\n                invalidRtxPts.add(rtxPt);\n            });\n            return associatedPtToRtxPt;\n        }\n        return associatedPtToRtxPt.set(pt, rtxPts[0]);\n    }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteFmtpAttributesForRtxPt(mediaSection, rtxPt) {\n    var pattern = new RegExp(\"a=fmtp:\" + rtxPt + \".*\\r\\n\", 'gm');\n    return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt) {\n    var pattern = new RegExp(\"a=rtpmap:\" + rtxPt + \".*\\r\\n\", 'gm');\n    return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @param {NonRtxPT} pt\n * @returns {string} newMediaSection\n */\nfunction addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt) {\n    return mediaSection.endsWith('\\r\\n')\n        ? mediaSection + \"a=fmtp:\" + rtxPt + \" apt=\" + pt + \"\\r\\n\"\n        : mediaSection + \"\\r\\na=fmtp:\" + rtxPt + \" apt=\" + pt;\n}\nmodule.exports = workaround;\n//# sourceMappingURL=issue8329.js.map","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","'use strict';\n/* eslint-disable camelcase */\nvar packageInfo = require('../../package.json');\nmodule.exports.SDK_NAME = packageInfo.name + \".js\";\nmodule.exports.SDK_VERSION = packageInfo.version;\nmodule.exports.SDP_FORMAT = 'unified';\nmodule.exports.hardwareDevicePublisheriPad = {\n    hwDeviceManufacturer: 'Apple',\n    hwDeviceModel: 'iPad',\n    hwDeviceType: 'tablet',\n    platformName: 'iOS'\n};\nmodule.exports.hardwareDevicePublisheriPhone = {\n    hwDeviceManufacturer: 'Apple',\n    hwDeviceModel: 'iPhone',\n    hwDeviceType: 'mobile',\n    platformName: 'iOS'\n};\nmodule.exports.DEFAULT_ENVIRONMENT = 'prod';\nmodule.exports.DEFAULT_REALM = 'us1';\nmodule.exports.DEFAULT_REGION = 'gll';\nmodule.exports.DEFAULT_LOG_LEVEL = 'warn';\nmodule.exports.DEFAULT_LOGGER_NAME = 'twilio-video';\nmodule.exports.WS_SERVER = function (environment, region) {\n    region = region === 'gll' ? 'global' : encodeURIComponent(region);\n    return environment === 'prod'\n        ? \"wss://\" + region + \".vss.twilio.com/signaling\"\n        : \"wss://\" + region + \".vss.\" + environment + \".twilio.com/signaling\";\n};\nmodule.exports.PUBLISH_MAX_ATTEMPTS = 5;\nmodule.exports.PUBLISH_BACKOFF_JITTER = 10;\nmodule.exports.PUBLISH_BACKOFF_MS = 20;\n/**\n * Returns the appropriate indefinite article (\"a\" | \"an\").\n * @param {string} word - The word which determines whether \"a\" | \"an\" is returned\n * @returns {string} \"a\" if word's first letter is a vowel, \"an\" otherwise\n */\nfunction article(word) {\n    // NOTE(mmalavalli): This will not be accurate for words like \"hour\",\n    // which have consonants as their first character, but are pronounced like\n    // vowels. We can address this issue if the need arises.\n    return ['a', 'e', 'i', 'o', 'u'].includes(word.toLowerCase()[0]) ? 'an' : 'a';\n}\nmodule.exports.typeErrors = {\n    ILLEGAL_INVOKE: function (name, context) {\n        return new TypeError(\"Illegal call to \" + name + \": \" + context);\n    },\n    INVALID_TYPE: function (name, type) {\n        return new TypeError(name + \" must be \" + article(type) + \" \" + type);\n    },\n    INVALID_VALUE: function (name, values) {\n        return new RangeError(name + \" must be one of \" + values.join(', '));\n    },\n    REQUIRED_ARGUMENT: function (name) {\n        return new TypeError(name + \" must be specified\");\n    }\n};\nmodule.exports.DEFAULT_FRAME_RATE = 24;\nmodule.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = 10000;\nmodule.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS = 15000;\nmodule.exports.DEFAULT_SESSION_TIMEOUT_SEC = 30;\nmodule.exports.DEFAULT_NQ_LEVEL_LOCAL = 1;\nmodule.exports.DEFAULT_NQ_LEVEL_REMOTE = 0;\nmodule.exports.MAX_NQ_LEVEL = 3;\nmodule.exports.ICE_ACTIVITY_CHECK_PERIOD_MS = 1000;\nmodule.exports.ICE_INACTIVITY_THRESHOLD_MS = 3000;\nmodule.exports.iceRestartBackoffConfig = {\n    factor: 1.1,\n    min: 1,\n    max: module.exports.DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n    jitter: 1\n};\nmodule.exports.reconnectBackoffConfig = {\n    factor: 1.5,\n    min: 80,\n    jitter: 1\n};\nmodule.exports.subscriptionMode = {\n    MODE_COLLABORATION: 'collaboration',\n    MODE_GRID: 'grid',\n    MODE_PRESENTATION: 'presentation'\n};\nmodule.exports.trackSwitchOffMode = {\n    MODE_DISABLED: 'disabled',\n    MODE_DETECTED: 'detected',\n    MODE_PREDICTED: 'predicted'\n};\nmodule.exports.trackPriority = {\n    PRIORITY_HIGH: 'high',\n    PRIORITY_LOW: 'low',\n    PRIORITY_STANDARD: 'standard'\n};\nmodule.exports.clientTrackSwitchOffControl = {\n    MODE_AUTO: 'auto',\n    MODE_MANUAL: 'manual'\n};\nmodule.exports.videoContentPreferencesMode = {\n    MODE_AUTO: 'auto',\n    MODE_MANUAL: 'manual'\n};\n//# sourceMappingURL=constants.js.map","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone:\n                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                    '_'\n                ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n  if (!DESCRIPTORS) return globalThis[name];\n  var descriptor = getOwnPropertyDescriptor(globalThis, name);\n  return descriptor && descriptor.value;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NullObserver = /** @class */ (function () {\n    function NullObserver(callback) {\n        Object.defineProperties(this, {\n            _callback: {\n                value: callback\n            }\n        });\n    }\n    NullObserver.prototype.observe = function () {\n    };\n    NullObserver.prototype.unobserve = function () {\n    };\n    NullObserver.prototype.makeVisible = function (videoEl) {\n        var visibleEntry = this._makeFakeEntry(videoEl, true);\n        this._callback([visibleEntry]);\n    };\n    NullObserver.prototype.makeInvisible = function (videoEl) {\n        var invisibleEntry = this._makeFakeEntry(videoEl, false);\n        this._callback([invisibleEntry]);\n    };\n    NullObserver.prototype._makeFakeEntry = function (videoElement, isIntersecting) {\n        return { target: videoElement, isIntersecting: isIntersecting };\n    };\n    return NullObserver;\n}());\nvar NullIntersectionObserver = /** @class */ (function (_super) {\n    __extends(NullIntersectionObserver, _super);\n    function NullIntersectionObserver() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return NullIntersectionObserver;\n}(NullObserver));\nvar NullResizeObserver = /** @class */ (function (_super) {\n    __extends(NullResizeObserver, _super);\n    function NullResizeObserver() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NullResizeObserver.prototype.resize = function (videoEl) {\n        var entry = this._makeFakeEntry(videoEl, true);\n        this._callback([entry]);\n    };\n    return NullResizeObserver;\n}(NullObserver));\nmodule.exports = { NullIntersectionObserver: NullIntersectionObserver, NullResizeObserver: NullResizeObserver, NullObserver: NullObserver };\n//# sourceMappingURL=nullobserver.js.map","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Date.prototype.toGMTString` method\n// https://tc39.es/ecma262/#sec-date.prototype.togmtstring\n$({ target: 'Date', proto: true }, {\n  toGMTString: Date.prototype.toUTCString\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar StateMachine = require('./statemachine');\nvar _a = require('./util'), buildLogLevels = _a.buildLogLevels, makeUUID = _a.makeUUID;\nvar Log = require('./util/log');\nvar NetworkMonitor = require('./util/networkmonitor');\nvar Timeout = require('./util/timeout');\nvar nInstances = 0;\n/*\n  TwilioConnection states\n  -----------------------\n\n       ------------------------------------------\n       |                                        |\n       |                                        v\n  +---------+       +--------------+       +----------+\n  |  early  | ----> |  connecting  | ----> |  closed  |\n  +---------+       +--------------+       +----------+\n    ^                     | ^ |                 ^ ^\n    | --------------------- | |                 | |\n    | | --------------------- |                 | |\n    | | | --------------------|------------------ |\n    | v | |                   v                   |\n  +----------+           +--------+               |\n  | waiting  | --------> |  open  | ---------------\n  +----------+           +--------+\n */\nvar states = {\n    closed: [],\n    connecting: ['closed', 'open', 'waiting'],\n    early: ['closed', 'connecting'],\n    open: ['closed'],\n    waiting: ['closed', 'connecting', 'early', 'open']\n};\nvar events = {\n    closed: 'close',\n    open: 'open',\n    waiting: 'waiting'\n};\nvar TCMP_VERSION = 2;\nvar DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS = 3;\nvar DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS = 3;\nvar DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT = 5000;\nvar DEFAULT_OPEN_TIMEOUT = 15000;\nvar DEFAULT_WELCOME_TIMEOUT = 5000;\nvar OUTGOING_HEARTBEAT_OFFSET = 200;\nvar WS_CLOSE_NORMAL = 1000;\nvar WS_CLOSE_WELCOME_TIMEOUT = 3000;\nvar WS_CLOSE_HEARTBEATS_MISSED = 3001;\nvar WS_CLOSE_HELLO_FAILED = 3002;\nvar WS_CLOSE_SEND_FAILED = 3003;\nvar WS_CLOSE_NETWORK_CHANGED = 3004;\nvar WS_CLOSE_BUSY_WAIT = 3005;\nvar WS_CLOSE_SERVER_BUSY = 3006;\nvar WS_CLOSE_OPEN_TIMEOUT = 3007;\n// NOTE(joma): If you want to use close code 3008, please increment\n// the close code in test/integration/spec/docker/reconnection.js\n// line number 492.\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar CloseReason = {\n    BUSY: 'busy',\n    FAILED: 'failed',\n    LOCAL: 'local',\n    REMOTE: 'remote',\n    TIMEOUT: 'timeout'\n};\nvar wsCloseCodesToCloseReasons = new Map([\n    [WS_CLOSE_WELCOME_TIMEOUT, CloseReason.TIMEOUT],\n    [WS_CLOSE_HEARTBEATS_MISSED, CloseReason.TIMEOUT],\n    [WS_CLOSE_HELLO_FAILED, CloseReason.FAILED],\n    [WS_CLOSE_SEND_FAILED, CloseReason.FAILED],\n    [WS_CLOSE_NETWORK_CHANGED, CloseReason.TIMEOUT],\n    [WS_CLOSE_SERVER_BUSY, CloseReason.BUSY],\n    [WS_CLOSE_OPEN_TIMEOUT, CloseReason.TIMEOUT]\n]);\n/**\n * A {@link TwilioConnection} represents a WebSocket connection\n * to a Twilio Connections Messaging Protocol (TCMP) server.\n * @fires TwilioConnection#close\n * @fires TwilioConnection#error\n * @fires TwilioConnection#message\n * @fires TwilioConnection#open\n * @fires TwilioConnection#waiting\n */\nvar TwilioConnection = /** @class */ (function (_super) {\n    __extends(TwilioConnection, _super);\n    /**\n     * Construct a {@link TwilioConnection}.\n     * @param {string} serverUrl - TCMP server url\n     * @param {TwilioConnectionOptions} options - {@link TwilioConnection} options\n     */\n    function TwilioConnection(serverUrl, options) {\n        var _this = _super.call(this, 'early', states) || this;\n        options = Object.assign({\n            helloBody: null,\n            maxConsecutiveFailedHellos: DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS,\n            maxConsecutiveMissedHeartbeats: DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS,\n            requestedHeartbeatTimeout: DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT,\n            openTimeout: DEFAULT_OPEN_TIMEOUT,\n            welcomeTimeout: DEFAULT_WELCOME_TIMEOUT,\n            Log: Log,\n            WebSocket: WebSocket\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        var log = new options.Log('default', _this, logLevels, options.loggerName);\n        var networkMonitor = options.networkMonitor ? new NetworkMonitor(function () {\n            var type = networkMonitor.type;\n            var reason = \"Network changed\" + (type ? \" to \" + type : '');\n            log.debug(reason);\n            _this._close({ code: WS_CLOSE_NETWORK_CHANGED, reason: reason });\n        }) : null;\n        Object.defineProperties(_this, {\n            _busyWaitTimeout: {\n                value: null,\n                writable: true\n            },\n            _consecutiveHeartbeatsMissed: {\n                value: 0,\n                writable: true\n            },\n            _cookie: {\n                value: null,\n                writable: true\n            },\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _heartbeatTimeout: {\n                value: null,\n                writable: true\n            },\n            _hellosLeft: {\n                value: options.maxConsecutiveFailedHellos,\n                writable: true\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _log: {\n                value: log\n            },\n            _messageQueue: {\n                value: []\n            },\n            _networkMonitor: {\n                value: networkMonitor\n            },\n            _options: {\n                value: options\n            },\n            _openTimeout: {\n                value: null,\n                writable: true\n            },\n            _sendHeartbeatTimeout: {\n                value: null,\n                writable: true\n            },\n            _serverUrl: {\n                value: serverUrl\n            },\n            _welcomeTimeout: {\n                value: null,\n                writable: true\n            },\n            _ws: {\n                value: null,\n                writable: true\n            }\n        });\n        var eventsToLevels = {\n            connecting: 'info',\n            early: 'info',\n            open: 'info',\n            waiting: 'warning',\n            closed: 'info'\n        };\n        _this.on('stateChanged', function (state) {\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (state in events) {\n                _this.emit.apply(_this, __spreadArray([events[state]], __read(args)));\n            }\n            var event = { name: state, group: 'signaling', level: eventsToLevels[_this.state] };\n            if (state === 'closed') {\n                var _a = __read(args, 1), reason = _a[0];\n                event.payload = { reason: reason };\n                event.level = reason === CloseReason.LOCAL ? 'info' : 'error';\n            }\n            _this._eventObserver.emit('event', event);\n        });\n        _this._eventObserver.emit('event', { name: _this.state, group: 'signaling', level: eventsToLevels[_this.state] });\n        _this._connect();\n        return _this;\n    }\n    TwilioConnection.prototype.toString = function () {\n        return \"[TwilioConnection #\" + this._instanceId + \": \" + this._ws.url + \"]\";\n    };\n    /**\n     * Close the {@link TwilioConnection}.\n     * @param {{code: number, reason: string}} event\n     * @private\n     */\n    TwilioConnection.prototype._close = function (_a) {\n        var code = _a.code, reason = _a.reason;\n        if (this.state === 'closed') {\n            return;\n        }\n        if (this._openTimeout) {\n            this._openTimeout.clear();\n        }\n        if (this._welcomeTimeout) {\n            this._welcomeTimeout.clear();\n        }\n        if (this._heartbeatTimeout) {\n            this._heartbeatTimeout.clear();\n        }\n        if (this._sendHeartbeatTimeout) {\n            this._sendHeartbeatTimeout.clear();\n        }\n        if (this._networkMonitor) {\n            this._networkMonitor.stop();\n        }\n        if (this._busyWaitTimeout && code !== WS_CLOSE_BUSY_WAIT) {\n            this._busyWaitTimeout.clear();\n        }\n        this._messageQueue.splice(0);\n        var log = this._log;\n        if (code === WS_CLOSE_NORMAL) {\n            log.debug('Closed');\n            this.transition('closed', null, [CloseReason.LOCAL]);\n        }\n        else {\n            log.warn(\"Closed: \" + code + \" - \" + reason);\n            if (code !== WS_CLOSE_BUSY_WAIT) {\n                this.transition('closed', null, [\n                    wsCloseCodesToCloseReasons.get(code) || CloseReason.REMOTE\n                ]);\n            }\n        }\n        var readyState = this._ws.readyState;\n        var WebSocket = this._options.WebSocket;\n        if (readyState !== WebSocket.CLOSING && readyState !== WebSocket.CLOSED) {\n            this._ws.close(code, reason);\n        }\n    };\n    /**\n     * Connect to the TCMP server.\n     * @private\n     */\n    TwilioConnection.prototype._connect = function () {\n        var _this = this;\n        var log = this._log;\n        if (this.state === 'waiting') {\n            this.transition('early');\n        }\n        else if (this.state !== 'early') {\n            log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for connecting to the\"\n                + ' TCMP server.');\n            return;\n        }\n        this._ws = new this._options.WebSocket(this._serverUrl);\n        var ws = this._ws;\n        log.debug('Created a new WebSocket:', ws);\n        ws.addEventListener('close', function (event) { return _this._close(event); });\n        var openTimeout = this._options.openTimeout;\n        // Add a timeout for getting the onopen event on the WebSocket (15 sec). After that, attempt to reconnect only if this is not the first attempt.\n        this._openTimeout = new Timeout(function () {\n            var reason = \"Failed to open in \" + openTimeout + \" ms\";\n            _this._close({ code: WS_CLOSE_OPEN_TIMEOUT, reason: reason });\n        }, openTimeout);\n        ws.addEventListener('open', function () {\n            log.debug('WebSocket opened:', ws);\n            _this._openTimeout.clear();\n            _this._startHandshake();\n            if (_this._networkMonitor) {\n                _this._networkMonitor.start();\n            }\n        });\n        ws.addEventListener('message', function (message) {\n            log.debug(\"Incoming: \" + message.data);\n            try {\n                message = JSON.parse(message.data);\n            }\n            catch (error) {\n                _this.emit('error', error);\n                return;\n            }\n            switch (message.type) {\n                case 'bad':\n                    _this._handleBad(message);\n                    break;\n                case 'busy':\n                    _this._handleBusy(message);\n                    break;\n                case 'bye':\n                    // Do nothing.\n                    break;\n                case 'msg':\n                    _this._handleMessage(message);\n                // NOTE(mpatwardhan): Each incoming message should be treated as an incoming\n                // heartbeat intentionally falling through to 'heartbeat' case.\n                // eslint-disable-next-line no-fallthrough\n                case 'heartbeat':\n                    _this._handleHeartbeat();\n                    break;\n                case 'welcome':\n                    _this._handleWelcome(message);\n                    break;\n                default:\n                    _this._log.debug(\"Unknown message type: \" + message.type);\n                    _this.emit('error', new Error(\"Unknown message type: \" + message.type));\n                    break;\n            }\n        });\n    };\n    /**\n     * Handle an incoming \"bad\" message.\n     * @param {{reason: string}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleBad = function (_a) {\n        var reason = _a.reason;\n        var log = this._log;\n        if (!['connecting', 'open'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"bad\\\" message\"\n                + ' from the TCMP server.');\n            return;\n        }\n        if (this.state === 'connecting') {\n            log.warn(\"Closing: \" + WS_CLOSE_HELLO_FAILED + \" - \" + reason);\n            this._close({ code: WS_CLOSE_HELLO_FAILED, reason: reason });\n            return;\n        }\n        log.debug(\"Error: \" + reason);\n        this.emit('error', new Error(reason));\n    };\n    /**\n     * Handle an incoming \"busy\" message.\n     * @param {{cookie: ?string, keepAlive: boolean, retryAfter: number}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleBusy = function (_a) {\n        var _this = this;\n        var cookie = _a.cookie, keepAlive = _a.keepAlive, retryAfter = _a.retryAfter;\n        var log = this._log;\n        if (!['connecting', 'waiting'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"busy\\\" message\"\n                + ' from the TCMP server.');\n            return;\n        }\n        if (this._busyWaitTimeout) {\n            this._busyWaitTimeout.clear();\n        }\n        if (this._welcomeTimeout) {\n            this._welcomeTimeout.clear();\n        }\n        var reason = retryAfter < 0\n            ? 'Received terminal \"busy\" message'\n            : \"Received \\\"busy\\\" message, retrying after \" + retryAfter + \" ms\";\n        if (retryAfter < 0) {\n            log.warn(\"Closing: \" + WS_CLOSE_SERVER_BUSY + \" - \" + reason);\n            this._close({ code: WS_CLOSE_SERVER_BUSY, reason: reason });\n            return;\n        }\n        var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n        this._hellosLeft = maxConsecutiveFailedHellos;\n        this._cookie = cookie || null;\n        if (keepAlive) {\n            log.warn(reason);\n            this._busyWaitTimeout = new Timeout(function () { return _this._startHandshake(); }, retryAfter);\n        }\n        else {\n            log.warn(\"Closing: \" + WS_CLOSE_BUSY_WAIT + \" - \" + reason);\n            this._close({ code: WS_CLOSE_BUSY_WAIT, reason: reason });\n            this._busyWaitTimeout = new Timeout(function () { return _this._connect(); }, retryAfter);\n        }\n        this.transition('waiting', null, [keepAlive, retryAfter]);\n    };\n    /**\n     * Handle an incoming \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleHeartbeat = function () {\n        if (this.state !== 'open') {\n            this._log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"heartbeat\\\"\"\n                + ' message from the TCMP server.');\n            return;\n        }\n        this._heartbeatTimeout.reset();\n    };\n    /**\n     * Handle a missed \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleHeartbeatTimeout = function () {\n        if (this.state !== 'open') {\n            return;\n        }\n        var log = this._log;\n        var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n        log.debug(\"Consecutive heartbeats missed: \" + maxConsecutiveMissedHeartbeats);\n        var reason = \"Missed \" + maxConsecutiveMissedHeartbeats + \" \\\"heartbeat\\\" messages\";\n        log.warn(\"Closing: \" + WS_CLOSE_HEARTBEATS_MISSED + \" - \" + reason);\n        this._close({ code: WS_CLOSE_HEARTBEATS_MISSED, reason: reason });\n    };\n    /**\n     * Handle an incoming \"msg\" message.\n     * @param {{body: object}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleMessage = function (_a) {\n        var body = _a.body;\n        if (this.state !== 'open') {\n            this._log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"msg\\\" message\"\n                + ' from the TCMP server.');\n            return;\n        }\n        this.emit('message', body);\n    };\n    /**\n     * Handle an incoming \"welcome\" message.\n     * @param {{ negotiatedTimeout: number }} message\n     * @private\n     */\n    TwilioConnection.prototype._handleWelcome = function (_a) {\n        var _this = this;\n        var negotiatedTimeout = _a.negotiatedTimeout;\n        var log = this._log;\n        if (!['connecting', 'waiting'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"welcome\\\"\"\n                + ' message from the TCMP server.');\n            return;\n        }\n        if (this.state === 'waiting') {\n            log.debug('Received \"welcome\" message, no need to retry connection.');\n            this._busyWaitTimeout.clear();\n        }\n        var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n        var heartbeatTimeout = negotiatedTimeout * maxConsecutiveMissedHeartbeats;\n        var outgoingHeartbeatTimeout = negotiatedTimeout - OUTGOING_HEARTBEAT_OFFSET;\n        this._welcomeTimeout.clear();\n        this._heartbeatTimeout = new Timeout(function () { return _this._handleHeartbeatTimeout(); }, heartbeatTimeout);\n        this._messageQueue.splice(0).forEach(function (message) { return _this._send(message); });\n        this._sendHeartbeatTimeout = new Timeout(function () { return _this._sendHeartbeat(); }, outgoingHeartbeatTimeout);\n        this.transition('open');\n    };\n    /**\n     * Handle a missed \"welcome\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleWelcomeTimeout = function () {\n        if (this.state !== 'connecting') {\n            return;\n        }\n        var log = this._log;\n        if (this._hellosLeft <= 0) {\n            var reason = 'All handshake attempts failed';\n            log.warn(\"Closing: \" + WS_CLOSE_WELCOME_TIMEOUT + \" - \" + reason);\n            this._close({ code: WS_CLOSE_WELCOME_TIMEOUT, reason: reason });\n            return;\n        }\n        var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n        log.warn(\"Handshake attempt \" + (maxConsecutiveFailedHellos - this._hellosLeft) + \" failed\");\n        this._startHandshake();\n    };\n    /**\n     * Send a message to the TCMP server.\n     * @param {*} message\n     * @private\n     */\n    TwilioConnection.prototype._send = function (message) {\n        var readyState = this._ws.readyState;\n        var WebSocket = this._options.WebSocket;\n        if (readyState === WebSocket.OPEN) {\n            var data = JSON.stringify(message);\n            this._log.debug(\"Outgoing: \" + data);\n            try {\n                this._ws.send(data);\n                if (this._sendHeartbeatTimeout) {\n                    // Each outgoing message is to be treated as an outgoing heartbeat.\n                    this._sendHeartbeatTimeout.reset();\n                }\n            }\n            catch (error) {\n                var reason = 'Failed to send message';\n                this._log.warn(\"Closing: \" + WS_CLOSE_SEND_FAILED + \" - \" + reason);\n                this._close({ code: WS_CLOSE_SEND_FAILED, reason: reason });\n            }\n        }\n    };\n    /**\n     * Send a \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._sendHeartbeat = function () {\n        if (this.state === 'closed') {\n            return;\n        }\n        this._send({ type: 'heartbeat' });\n    };\n    /**\n     * Send a \"hello\" message.\n     * @private\n     */\n    TwilioConnection.prototype._sendHello = function () {\n        var _a = this._options, helloBody = _a.helloBody, timeout = _a.requestedHeartbeatTimeout;\n        var hello = {\n            id: makeUUID(),\n            timeout: timeout,\n            type: 'hello',\n            version: TCMP_VERSION\n        };\n        if (this._cookie) {\n            hello.cookie = this._cookie;\n        }\n        if (helloBody) {\n            hello.body = helloBody;\n        }\n        this._send(hello);\n    };\n    /**\n     * Send or enqueue a message.\n     * @param {*} message\n     * @private\n     */\n    TwilioConnection.prototype._sendOrEnqueue = function (message) {\n        var _this = this;\n        if (this.state === 'closed') {\n            return;\n        }\n        var sendOrEnqueue = this.state === 'open'\n            ? function (message) { return _this._send(message); }\n            : function (message) { return _this._messageQueue.push(message); };\n        sendOrEnqueue(message);\n    };\n    /**\n     * Start the TCMP handshake.\n     * @private\n     */\n    TwilioConnection.prototype._startHandshake = function () {\n        var _this = this;\n        if (['early', 'waiting'].includes(this.state)) {\n            this.transition('connecting');\n        }\n        if (this.state !== 'connecting') {\n            return;\n        }\n        this._hellosLeft--;\n        this._sendHello();\n        var welcomeTimeout = this._options.welcomeTimeout;\n        this._welcomeTimeout = new Timeout(function () { return _this._handleWelcomeTimeout(); }, welcomeTimeout);\n    };\n    /**\n     * Close the {@link TwilioConnection}.\n     * @returns {void}\n     */\n    TwilioConnection.prototype.close = function () {\n        if (this.state === 'closed') {\n            return;\n        }\n        this._sendOrEnqueue({ type: 'bye' });\n        this._close({ code: WS_CLOSE_NORMAL, reason: 'Normal' });\n    };\n    /**\n     * Send a \"msg\" message.\n     * @param {*} body\n     * @returns {void}\n     */\n    TwilioConnection.prototype.sendMessage = function (body) {\n        this._sendOrEnqueue({ body: body, type: 'msg' });\n    };\n    return TwilioConnection;\n}(StateMachine));\n/**\n * A unique string depicting the reason for the {@link TwilioConnection} being closed.\n * @enum {string}\n */\nTwilioConnection.CloseReason = CloseReason;\n/**\n * A {@link TwilioConnection} was closed.\n * @event TwilioConnection#close\n * @param {CloseReason} reason - The reason for the {@link TwilioConnection} being closed\n */\n/**\n * A {@link TwilioConnection} received an error from the TCMP server.\n * @event TwilioConnection#error\n * @param {Error} error - The TCMP server error\n */\n/**\n * A {@link TwilioConnection} received a message from the TCMP server.\n * @event TwilioConnection#message\n * @param {*} body - Message body\n */\n/**\n * A {@link TwilioConnection} completed a hello/welcome handshake with the TCMP server.\n * @event TwilioConnection#open\n */\n/**\n * A {@link TwilioConnection} received a \"busy\" message from the TCMP server.\n * @event TwilioConnection#waiting\n * @param {boolean} keepAlive - true if the WebSocket connection is retained\n * @param {number} retryAfter - delay in milliseconds after which a retry is attempted\n */\n/**\n * {@link TwilioConnection} options\n * @typedef {object} TwilioConnectionOptions\n * @property {EventObserver} [eventObserver] - Optional event observer\n * @property {*} [helloBody=null] - Optional body for \"hello\" message\n * @property {LogLevel} [logLevel=warn] - Log level of the {@link TwilioConnection}\n * @property {number} [maxConsecutiveFailedHellos=3] - Max. number of consecutive failed \"hello\"s\n * @property {number} [maxConsecutiveMissedHeartbeats=3] - Max. number of (effective) consecutive \"heartbeat\" messages that can be missed\n * @property {number} [requestedHeartbeatTimeout=5000] - \"heartbeat\" timeout (ms) requested by the {@link TwilioConnection}\n * @property {number} [welcomeTimeout=5000] - Time (ms) to wait for the \"welcome\" message after sending the \"hello\" message\n */\nmodule.exports = TwilioConnection;\n//# sourceMappingURL=twilioconnection.js.map","'use strict';\n/**\n * Bandwidth network quality statistics.\n * @property {?number} actual - the actual bandwidth used, in bits per second\n * @property {?number} available - an estimate of available useable bandwidth, in bits per second\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for bandwidth\n */\nvar NetworkQualityBandwidthStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityBandwidthStats}.\n     * @param {BandwidthStats} bandwidthStats\n     */\n    function NetworkQualityBandwidthStats(_a) {\n        var _b = _a.actual, actual = _b === void 0 ? null : _b, _c = _a.available, available = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            actual: {\n                value: actual,\n                enumerable: true\n            },\n            available: {\n                value: available,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityBandwidthStats;\n}());\nmodule.exports = NetworkQualityBandwidthStats;\n//# sourceMappingURL=networkqualitybandwidthstats.js.map","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","'use strict';\n\n\nvar Cache = module.exports = function Cache() {\n  this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n  this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n  return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n  delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n  this._cache = {};\n};\n","\"use strict\";function _typeof(obj){\"@babel/helpers - typeof\";return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&\"function\"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj},_typeof(obj)}Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=withTrackingComponentDecorator;var _react=_interopRequireWildcard(require(\"react\"));var _hoistNonReactStatics=_interopRequireDefault(require(\"hoist-non-react-statics\"));var _propTypes=_interopRequireDefault(require(\"prop-types\"));var _ReactTrackingContext=_interopRequireDefault(require(\"./ReactTrackingContext\"));var _useTrackingImpl=_interopRequireDefault(require(\"./useTrackingImpl\"));var _excluded=[\"forwardRef\"],_excluded2=[\"rtFwdRef\"];function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!==\"function\")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!==\"object\"&&typeof obj!==\"function\"){return{\"default\":obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!==\"default\"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj[\"default\"]=obj;if(cache){cache.set(obj,newObj)}return newObj}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function withTrackingComponentDecorator(){var trackingData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _ref$forwardRef=_ref.forwardRef,forwardRef=_ref$forwardRef===void 0?false:_ref$forwardRef,options=_objectWithoutProperties(_ref,_excluded);return function(DecoratedComponent){var decoratedComponentName=DecoratedComponent.displayName||DecoratedComponent.name||\"Component\";function WithTracking(_ref2){var rtFwdRef=_ref2.rtFwdRef,props=_objectWithoutProperties(_ref2,_excluded2);var latestProps=(0,_react.useRef)(props);(0,_react.useEffect)(function(){latestProps.current=props});var trackingDataFn=(0,_react.useCallback)(function(){return typeof trackingData===\"function\"?trackingData(latestProps.current):trackingData},[]);var contextValue=(0,_useTrackingImpl[\"default\"])(trackingDataFn,options);var trackingProp=(0,_react.useMemo)(function(){return{trackEvent:contextValue.tracking.dispatch,getTrackingData:contextValue.tracking.getTrackingData}},[contextValue]);var propsToBePassed=(0,_react.useMemo)(function(){return forwardRef?_objectSpread(_objectSpread({},props),{},{ref:rtFwdRef}):props},[props,rtFwdRef]);return _react[\"default\"].createElement(_ReactTrackingContext[\"default\"].Provider,{value:contextValue},_react[\"default\"].createElement(DecoratedComponent,_objectSpread(_objectSpread({},propsToBePassed),{},{tracking:trackingProp})))}if(forwardRef){var forwarded=_react[\"default\"].forwardRef(function(props,ref){return _react[\"default\"].createElement(WithTracking,_objectSpread(_objectSpread({},props),{},{rtFwdRef:ref}))});forwarded.displayName=\"WithTracking(\".concat(decoratedComponentName,\")\");(0,_hoistNonReactStatics[\"default\"])(forwarded,DecoratedComponent);return forwarded}WithTracking.displayName=\"WithTracking(\".concat(decoratedComponentName,\")\");WithTracking.propTypes={rtFwdRef:_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func,_propTypes[\"default\"].shape({current:_propTypes[\"default\"].any})])};WithTracking.defaultProps={rtFwdRef:undefined};(0,_hoistNonReactStatics[\"default\"])(WithTracking,DecoratedComponent);return WithTracking}}\n//# sourceMappingURL=withTrackingComponentDecorator.js.map","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nexport default createBaseEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n  fixed: function fixed() {\n    return createHTML(this, 'tt', '', '');\n  }\n});\n","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative =\n            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n                '_'\n            ),\n        monthsSubjective =\n            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n                '_'\n            ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays:\n            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n  // @ts-ignore\n  if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  var warningRef = useCallback(function (refValue) {\n    !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n  }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  return useMergedRefs(warningRef, ref);\n}","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _omit = require('./utils/omit');\n\nvar _omit2 = _interopRequireDefault(_omit);\n\nvar _shallowEqual = require('./utils/shallowEqual');\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// utils\n\n\nvar mainStyle = {\n  width: '100%',\n  height: '100%',\n  left: 0,\n  top: 0,\n  margin: 0,\n  padding: 0,\n  position: 'absolute'\n};\n\nvar style = {\n  width: 0,\n  height: 0,\n  left: 0,\n  top: 0,\n  backgroundColor: 'transparent',\n  position: 'absolute'\n};\n\nvar GoogleMapMarkers = function (_Component) {\n  _inherits(GoogleMapMarkers, _Component);\n\n  /* eslint-disable react/forbid-prop-types */\n  function GoogleMapMarkers(props) {\n    _classCallCheck(this, GoogleMapMarkers);\n\n    var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n    _this._getState = function () {\n      return {\n        children: _this.props.dispatcher.getChildren(),\n        updateCounter: _this.props.dispatcher.getUpdateCounter()\n      };\n    };\n\n    _this._onChangeHandler = function () {\n      if (!_this.dimensionsCache_) {\n        return;\n      }\n\n      var prevChildCount = (_this.state.children || []).length;\n      var state = _this._getState();\n\n      _this.setState(state, function () {\n        return (state.children || []).length !== prevChildCount && _this._onMouseChangeHandler();\n      });\n    };\n\n    _this._onChildClick = function () {\n      if (_this.props.onChildClick) {\n        if (_this.hoverChildProps_) {\n          var hoverKey = _this.hoverKey_;\n          var childProps = _this.hoverChildProps_;\n          // click works only on hovered item\n          _this.props.onChildClick(hoverKey, childProps);\n        }\n      }\n    };\n\n    _this._onChildMouseDown = function () {\n      if (_this.props.onChildMouseDown) {\n        if (_this.hoverChildProps_) {\n          var hoverKey = _this.hoverKey_;\n          var childProps = _this.hoverChildProps_;\n          // works only on hovered item\n          _this.props.onChildMouseDown(hoverKey, childProps);\n        }\n      }\n    };\n\n    _this._onChildMouseEnter = function (hoverKey, childProps) {\n      if (!_this.dimensionsCache_) {\n        return;\n      }\n\n      if (_this.props.onChildMouseEnter) {\n        _this.props.onChildMouseEnter(hoverKey, childProps);\n      }\n\n      _this.hoverChildProps_ = childProps;\n      _this.hoverKey_ = hoverKey;\n      _this.setState({ hoverKey: hoverKey });\n    };\n\n    _this._onChildMouseLeave = function () {\n      if (!_this.dimensionsCache_) {\n        return;\n      }\n\n      var hoverKey = _this.hoverKey_;\n      var childProps = _this.hoverChildProps_;\n\n      if (hoverKey !== undefined && hoverKey !== null) {\n        if (_this.props.onChildMouseLeave) {\n          _this.props.onChildMouseLeave(hoverKey, childProps);\n        }\n\n        _this.hoverKey_ = null;\n        _this.hoverChildProps_ = null;\n        _this.setState({ hoverKey: null });\n      }\n    };\n\n    _this._onMouseAllow = function (value) {\n      if (!value) {\n        _this._onChildMouseLeave();\n      }\n\n      _this.allowMouse_ = value;\n    };\n\n    _this._onMouseChangeHandler = function () {\n      if (_this.allowMouse_) {\n        _this._onMouseChangeHandlerRaf();\n      }\n    };\n\n    _this._onMouseChangeHandlerRaf = function () {\n      if (!_this.dimensionsCache_) {\n        return;\n      }\n\n      var mp = _this.props.dispatcher.getMousePosition();\n\n      if (mp) {\n        var distances = [];\n        var hoverDistance = _this.props.getHoverDistance();\n\n        _react2.default.Children.forEach(_this.state.children, function (child, childIndex) {\n          if (!child) return;\n          // layers\n          if (child.props.latLng === undefined && child.props.lat === undefined && child.props.lng === undefined) {\n            return;\n          }\n\n          var childKey = child.key !== undefined && child.key !== null ? child.key : childIndex;\n          var dist = _this.props.distanceToMouse(_this.dimensionsCache_[childKey], mp, child.props);\n          if (dist < hoverDistance) {\n            distances.push({\n              key: childKey,\n              dist: dist,\n              props: child.props\n            });\n          }\n        });\n\n        if (distances.length) {\n          distances.sort(function (a, b) {\n            return a.dist - b.dist;\n          });\n          var hoverKey = distances[0].key;\n          var childProps = distances[0].props;\n\n          if (_this.hoverKey_ !== hoverKey) {\n            _this._onChildMouseLeave();\n\n            _this._onChildMouseEnter(hoverKey, childProps);\n          }\n        } else {\n          _this._onChildMouseLeave();\n        }\n      } else {\n        _this._onChildMouseLeave();\n      }\n    };\n\n    _this._getDimensions = function (key) {\n      var childKey = key;\n      return _this.dimensionsCache_[childKey];\n    };\n\n    _this.props.dispatcher.on('kON_CHANGE', _this._onChangeHandler);\n    _this.props.dispatcher.on('kON_MOUSE_POSITION_CHANGE', _this._onMouseChangeHandler);\n    _this.props.dispatcher.on('kON_CLICK', _this._onChildClick);\n    _this.props.dispatcher.on('kON_MDOWN', _this._onChildMouseDown);\n\n    _this.dimensionsCache_ = {};\n    _this.hoverKey_ = null;\n    _this.hoverChildProps_ = null;\n    _this.allowMouse_ = true;\n\n    _this.state = _extends({}, _this._getState(), { hoverKey: null });\n    return _this;\n  }\n  /* eslint-enable react/forbid-prop-types */\n\n  GoogleMapMarkers.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n    if (this.props.experimental === true) {\n      return !(0, _shallowEqual2.default)(this.props, nextProps) || !(0, _shallowEqual2.default)((0, _omit2.default)(this.state, ['hoverKey']), (0, _omit2.default)(nextState, ['hoverKey']));\n    }\n\n    return !(0, _shallowEqual2.default)(this.props, nextProps) || !(0, _shallowEqual2.default)(this.state, nextState);\n  };\n\n  GoogleMapMarkers.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.props.dispatcher.removeListener('kON_CHANGE', this._onChangeHandler);\n    this.props.dispatcher.removeListener('kON_MOUSE_POSITION_CHANGE', this._onMouseChangeHandler);\n    this.props.dispatcher.removeListener('kON_CLICK', this._onChildClick);\n    this.props.dispatcher.removeListener('kON_MDOWN', this._onChildMouseDown);\n\n    this.dimensionsCache_ = null;\n  };\n\n  GoogleMapMarkers.prototype.render = function render() {\n    var _this2 = this;\n\n    var mainElementStyle = this.props.style || mainStyle;\n    this.dimensionsCache_ = {};\n\n    var markers = _react2.default.Children.map(this.state.children, function (child, childIndex) {\n      if (!child) return undefined;\n      if (child.props.latLng === undefined && child.props.lat === undefined && child.props.lng === undefined) {\n        return _react2.default.cloneElement(child, {\n          $geoService: _this2.props.geoService,\n          $onMouseAllow: _this2._onMouseAllow,\n          $prerender: _this2.props.prerender\n        });\n      }\n\n      var latLng = child.props.latLng !== undefined ? child.props.latLng : { lat: child.props.lat, lng: child.props.lng };\n\n      var pt = _this2.props.insideMapPanes ? _this2.props.geoService.fromLatLngToDivPixel(latLng) : _this2.props.geoService.fromLatLngToCenterPixel(latLng);\n\n      var stylePtPos = {\n        left: pt.x,\n        top: pt.y\n      };\n\n      // If the component has a southeast corner defined (either as a LatLng, or a separate\n      // lat and lng pair), set the width and height based on the distance between the northwest\n      // and the southeast corner to lock the overlay to the correct geographic bounds.\n      if (child.props.seLatLng !== undefined || child.props.seLat !== undefined && child.props.seLng !== undefined) {\n        var seLatLng = child.props.seLatLng !== undefined ? child.props.seLatLng : { lat: child.props.seLat, lng: child.props.seLng };\n\n        var sePt = _this2.props.insideMapPanes ? _this2.props.geoService.fromLatLngToDivPixel(seLatLng) : _this2.props.geoService.fromLatLngToCenterPixel(seLatLng);\n\n        stylePtPos.width = sePt.x - pt.x;\n        stylePtPos.height = sePt.y - pt.y;\n      }\n\n      var containerPt = _this2.props.geoService.fromLatLngToContainerPixel(latLng);\n\n      // to prevent rerender on child element i need to pass\n      // const params $getDimensions and $dimensionKey instead of dimension object\n      var childKey = child.key !== undefined && child.key !== null ? child.key : childIndex;\n\n      _this2.dimensionsCache_[childKey] = _extends({\n        x: containerPt.x,\n        y: containerPt.y\n      }, latLng);\n\n      return _react2.default.createElement(\n        'div',\n        {\n          key: childKey,\n          style: _extends({}, style, stylePtPos),\n          className: child.props.$markerHolderClassName\n        },\n        _react2.default.cloneElement(child, {\n          $hover: childKey === _this2.state.hoverKey,\n          $getDimensions: _this2._getDimensions,\n          $dimensionKey: childKey,\n          $geoService: _this2.props.geoService,\n          $onMouseAllow: _this2._onMouseAllow,\n          $prerender: _this2.props.prerender\n        })\n      );\n    });\n\n    return _react2.default.createElement(\n      'div',\n      { style: mainElementStyle },\n      markers\n    );\n  };\n\n  return GoogleMapMarkers;\n}(_react.Component);\n\nGoogleMapMarkers.propTypes = {\n  geoService: _propTypes2.default.any,\n  style: _propTypes2.default.any,\n  distanceToMouse: _propTypes2.default.func,\n  dispatcher: _propTypes2.default.any,\n  onChildClick: _propTypes2.default.func,\n  onChildMouseDown: _propTypes2.default.func,\n  onChildMouseLeave: _propTypes2.default.func,\n  onChildMouseEnter: _propTypes2.default.func,\n  getHoverDistance: _propTypes2.default.func,\n  insideMapPanes: _propTypes2.default.bool,\n  prerender: _propTypes2.default.bool\n};\nGoogleMapMarkers.defaultProps = {\n  insideMapPanes: false,\n  prerender: false\n};\nexports.default = GoogleMapMarkers;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","var utils = require('./utils/common');\nvar error = require('./utils/error');\n\nexports.UNIQUE = function () {\n  var result = [];\n  for (var i = 0; i < arguments.length; ++i) {\n    var hasElement = false;\n    var element    = arguments[i];\n\n    // Check if we've already seen this element.\n    for (var j = 0; j < result.length; ++j) {\n      hasElement = result[j] === element;\n      if (hasElement) { break; }\n    }\n\n    // If we did not find it, add it to the result.\n    if (!hasElement) {\n      result.push(element);\n    }\n  }\n  return result;\n};\n\nexports.FLATTEN = utils.flatten;\n\nexports.ARGS2ARRAY = function () {\n  return Array.prototype.slice.call(arguments, 0);\n};\n\nexports.REFERENCE = function (context, reference) {\n  if (!arguments.length) {\n    return error.error;\n  }\n  try {\n    var path = reference.split('.');\n    var result = context;\n    for (var i = 0; i < path.length; ++i) {\n      var step = path[i];\n      if (step[step.length - 1] === ']') {\n        var opening = step.indexOf('[');\n        var index = step.substring(opening + 1, step.length - 1);\n        result = result[step.substring(0, opening)][index];\n      } else {\n        result = result[step];\n      }\n    }\n    return result;\n  } catch (error) {}\n};\n\nexports.JOIN = function (array, separator) {\n  return array.join(separator);\n};\n\nexports.NUMBERS = function () {\n  var possibleNumbers = utils.flatten(arguments);\n  return possibleNumbers.filter(function (el) {\n    return typeof el === 'number';\n  });\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","/**\n * @license AngularJS v1.6.6\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\nvar forEach;\nvar isArray;\nvar isString;\nvar jqLite;\n\n/**\n * @ngdoc module\n * @name ngMessages\n * @description\n *\n * The `ngMessages` module provides enhanced support for displaying messages within templates\n * (typically within forms or when rendering message objects that return key/value data).\n * Instead of relying on JavaScript code and/or complex ng-if statements within your form template to\n * show and hide error messages specific to the state of an input field, the `ngMessages` and\n * `ngMessage` directives are designed to handle the complexity, inheritance and priority\n * sequencing based on the order of how the messages are defined in the template.\n *\n * Currently, the ngMessages module only contains the code for the `ngMessages`, `ngMessagesInclude`\n * `ngMessage` and `ngMessageExp` directives.\n *\n * # Usage\n * The `ngMessages` directive allows keys in a key/value collection to be associated with a child element\n * (or 'message') that will show or hide based on the truthiness of that key's value in the collection. A common use\n * case for `ngMessages` is to display error messages for inputs using the `$error` object exposed by the\n * {@link ngModel ngModel} directive.\n *\n * The child elements of the `ngMessages` directive are matched to the collection keys by a `ngMessage` or\n * `ngMessageExp` directive. The value of these attributes must match a key in the collection that is provided by\n * the `ngMessages` directive.\n *\n * Consider the following example, which illustrates a typical use case of `ngMessages`. Within the form `myForm` we\n * have a text input named `myField` which is bound to the scope variable `field` using the {@link ngModel ngModel}\n * directive.\n *\n * The `myField` field is a required input of type `email` with a maximum length of 15 characters.\n *\n * ```html\n * <form name=\"myForm\">\n *   <label>\n *     Enter text:\n *     <input type=\"email\" ng-model=\"field\" name=\"myField\" required maxlength=\"15\" />\n *   </label>\n *   <div ng-messages=\"myForm.myField.$error\" role=\"alert\">\n *     <div ng-message=\"required\">Please enter a value for this field.</div>\n *     <div ng-message=\"email\">This field must be a valid email address.</div>\n *     <div ng-message=\"maxlength\">This field can be at most 15 characters long.</div>\n *   </div>\n * </form>\n * ```\n *\n * In order to show error messages corresponding to `myField` we first create an element with an `ngMessages` attribute\n * set to the `$error` object owned by the `myField` input in our `myForm` form.\n *\n * Within this element we then create separate elements for each of the possible errors that `myField` could have.\n * The `ngMessage` attribute is used to declare which element(s) will appear for which error - for example,\n * setting `ng-message=\"required\"` specifies that this particular element should be displayed when there\n * is no value present for the required field `myField` (because the key `required` will be `true` in the object\n * `myForm.myField.$error`).\n *\n * ### Message order\n *\n * By default, `ngMessages` will only display one message for a particular key/value collection at any time. If more\n * than one message (or error) key is currently true, then which message is shown is determined by the order of messages\n * in the HTML template code (messages declared first are prioritised). This mechanism means the developer does not have\n * to prioritize messages using custom JavaScript code.\n *\n * Given the following error object for our example (which informs us that the field `myField` currently has both the\n * `required` and `email` errors):\n *\n * ```javascript\n * <!-- keep in mind that ngModel automatically sets these error flags -->\n * myField.$error = { required : true, email: true, maxlength: false };\n * ```\n * The `required` message will be displayed to the user since it appears before the `email` message in the DOM.\n * Once the user types a single character, the `required` message will disappear (since the field now has a value)\n * but the `email` message will be visible because it is still applicable.\n *\n * ### Displaying multiple messages at the same time\n *\n * While `ngMessages` will by default only display one error element at a time, the `ng-messages-multiple` attribute can\n * be applied to the `ngMessages` container element to cause it to display all applicable error messages at once:\n *\n * ```html\n * <!-- attribute-style usage -->\n * <div ng-messages=\"myForm.myField.$error\" ng-messages-multiple>...</div>\n *\n * <!-- element-style usage -->\n * <ng-messages for=\"myForm.myField.$error\" multiple>...</ng-messages>\n * ```\n *\n * ## Reusing and Overriding Messages\n * In addition to prioritization, ngMessages also allows for including messages from a remote or an inline\n * template. This allows for generic collection of messages to be reused across multiple parts of an\n * application.\n *\n * ```html\n * <script type=\"text/ng-template\" id=\"error-messages\">\n *   <div ng-message=\"required\">This field is required</div>\n *   <div ng-message=\"minlength\">This field is too short</div>\n * </script>\n *\n * <div ng-messages=\"myForm.myField.$error\" role=\"alert\">\n *   <div ng-messages-include=\"error-messages\"></div>\n * </div>\n * ```\n *\n * However, including generic messages may not be useful enough to match all input fields, therefore,\n * `ngMessages` provides the ability to override messages defined in the remote template by redefining\n * them within the directive container.\n *\n * ```html\n * <!-- a generic template of error messages known as \"my-custom-messages\" -->\n * <script type=\"text/ng-template\" id=\"my-custom-messages\">\n *   <div ng-message=\"required\">This field is required</div>\n *   <div ng-message=\"minlength\">This field is too short</div>\n * </script>\n *\n * <form name=\"myForm\">\n *   <label>\n *     Email address\n *     <input type=\"email\"\n *            id=\"email\"\n *            name=\"myEmail\"\n *            ng-model=\"email\"\n *            minlength=\"5\"\n *            required />\n *   </label>\n *   <!-- any ng-message elements that appear BEFORE the ng-messages-include will\n *        override the messages present in the ng-messages-include template -->\n *   <div ng-messages=\"myForm.myEmail.$error\" role=\"alert\">\n *     <!-- this required message has overridden the template message -->\n *     <div ng-message=\"required\">You did not enter your email address</div>\n *\n *     <!-- this is a brand new message and will appear last in the prioritization -->\n *     <div ng-message=\"email\">Your email address is invalid</div>\n *\n *     <!-- and here are the generic error messages -->\n *     <div ng-messages-include=\"my-custom-messages\"></div>\n *   </div>\n * </form>\n * ```\n *\n * In the example HTML code above the message that is set on required will override the corresponding\n * required message defined within the remote template. Therefore, with particular input fields (such\n * email addresses, date fields, autocomplete inputs, etc...), specialized error messages can be applied\n * while more generic messages can be used to handle other, more general input errors.\n *\n * ## Dynamic Messaging\n * ngMessages also supports using expressions to dynamically change key values. Using arrays and\n * repeaters to list messages is also supported. This means that the code below will be able to\n * fully adapt itself and display the appropriate message when any of the expression data changes:\n *\n * ```html\n * <form name=\"myForm\">\n *   <label>\n *     Email address\n *     <input type=\"email\"\n *            name=\"myEmail\"\n *            ng-model=\"email\"\n *            minlength=\"5\"\n *            required />\n *   </label>\n *   <div ng-messages=\"myForm.myEmail.$error\" role=\"alert\">\n *     <div ng-message=\"required\">You did not enter your email address</div>\n *     <div ng-repeat=\"errorMessage in errorMessages\">\n *       <!-- use ng-message-exp for a message whose key is given by an expression -->\n *       <div ng-message-exp=\"errorMessage.type\">{{ errorMessage.text }}</div>\n *     </div>\n *   </div>\n * </form>\n * ```\n *\n * The `errorMessage.type` expression can be a string value or it can be an array so\n * that multiple errors can be associated with a single error message:\n *\n * ```html\n *   <label>\n *     Email address\n *     <input type=\"email\"\n *            ng-model=\"data.email\"\n *            name=\"myEmail\"\n *            ng-minlength=\"5\"\n *            ng-maxlength=\"100\"\n *            required />\n *   </label>\n *   <div ng-messages=\"myForm.myEmail.$error\" role=\"alert\">\n *     <div ng-message-exp=\"'required'\">You did not enter your email address</div>\n *     <div ng-message-exp=\"['minlength', 'maxlength']\">\n *       Your email must be between 5 and 100 characters long\n *     </div>\n *   </div>\n * ```\n *\n * Feel free to use other structural directives such as ng-if and ng-switch to further control\n * what messages are active and when. Be careful, if you place ng-message on the same element\n * as these structural directives, Angular may not be able to determine if a message is active\n * or not. Therefore it is best to place the ng-message on a child element of the structural\n * directive.\n *\n * ```html\n * <div ng-messages=\"myForm.myEmail.$error\" role=\"alert\">\n *   <div ng-if=\"showRequiredError\">\n *     <div ng-message=\"required\">Please enter something</div>\n *   </div>\n * </div>\n * ```\n *\n * ## Animations\n * If the `ngAnimate` module is active within the application then the `ngMessages`, `ngMessage` and\n * `ngMessageExp` directives will trigger animations whenever any messages are added and removed from\n * the DOM by the `ngMessages` directive.\n *\n * Whenever the `ngMessages` directive contains one or more visible messages then the `.ng-active` CSS\n * class will be added to the element. The `.ng-inactive` CSS class will be applied when there are no\n * messages present. Therefore, CSS transitions and keyframes as well as JavaScript animations can\n * hook into the animations whenever these classes are added/removed.\n *\n * Let's say that our HTML code for our messages container looks like so:\n *\n * ```html\n * <div ng-messages=\"myMessages\" class=\"my-messages\" role=\"alert\">\n *   <div ng-message=\"alert\" class=\"some-message\">...</div>\n *   <div ng-message=\"fail\" class=\"some-message\">...</div>\n * </div>\n * ```\n *\n * Then the CSS animation code for the message container looks like so:\n *\n * ```css\n * .my-messages {\n *   transition:1s linear all;\n * }\n * .my-messages.ng-active {\n *   // messages are visible\n * }\n * .my-messages.ng-inactive {\n *   // messages are hidden\n * }\n * ```\n *\n * Whenever an inner message is attached (becomes visible) or removed (becomes hidden) then the enter\n * and leave animation is triggered for each particular element bound to the `ngMessage` directive.\n *\n * Therefore, the CSS code for the inner messages looks like so:\n *\n * ```css\n * .some-message {\n *   transition:1s linear all;\n * }\n *\n * .some-message.ng-enter {}\n * .some-message.ng-enter.ng-enter-active {}\n *\n * .some-message.ng-leave {}\n * .some-message.ng-leave.ng-leave-active {}\n * ```\n *\n * {@link ngAnimate Click here} to learn how to use JavaScript animations or to learn more about ngAnimate.\n */\nangular.module('ngMessages', [], function initAngularHelpers() {\n  // Access helpers from angular core.\n  // Do it inside a `config` block to ensure `window.angular` is available.\n  forEach = angular.forEach;\n  isArray = angular.isArray;\n  isString = angular.isString;\n  jqLite = angular.element;\n})\n  .info({ angularVersion: '1.6.6' })\n\n  /**\n   * @ngdoc directive\n   * @module ngMessages\n   * @name ngMessages\n   * @restrict AE\n   *\n   * @description\n   * `ngMessages` is a directive that is designed to show and hide messages based on the state\n   * of a key/value object that it listens on. The directive itself complements error message\n   * reporting with the `ngModel` $error object (which stores a key/value state of validation errors).\n   *\n   * `ngMessages` manages the state of internal messages within its container element. The internal\n   * messages use the `ngMessage` directive and will be inserted/removed from the page depending\n   * on if they're present within the key/value object. By default, only one message will be displayed\n   * at a time and this depends on the prioritization of the messages within the template. (This can\n   * be changed by using the `ng-messages-multiple` or `multiple` attribute on the directive container.)\n   *\n   * A remote template can also be used to promote message reusability and messages can also be\n   * overridden.\n   *\n   * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.\n   *\n   * @usage\n   * ```html\n   * <!-- using attribute directives -->\n   * <ANY ng-messages=\"expression\" role=\"alert\">\n   *   <ANY ng-message=\"stringValue\">...</ANY>\n   *   <ANY ng-message=\"stringValue1, stringValue2, ...\">...</ANY>\n   *   <ANY ng-message-exp=\"expressionValue\">...</ANY>\n   * </ANY>\n   *\n   * <!-- or by using element directives -->\n   * <ng-messages for=\"expression\" role=\"alert\">\n   *   <ng-message when=\"stringValue\">...</ng-message>\n   *   <ng-message when=\"stringValue1, stringValue2, ...\">...</ng-message>\n   *   <ng-message when-exp=\"expressionValue\">...</ng-message>\n   * </ng-messages>\n   * ```\n   *\n   * @param {string} ngMessages an angular expression evaluating to a key/value object\n   *                 (this is typically the $error object on an ngModel instance).\n   * @param {string=} ngMessagesMultiple|multiple when set, all messages will be displayed with true\n   *\n   * @example\n   * <example name=\"ngMessages-directive\" module=\"ngMessagesExample\"\n   *          deps=\"angular-messages.js\"\n   *          animations=\"true\" fixBase=\"true\">\n   *   <file name=\"index.html\">\n   *     <form name=\"myForm\">\n   *       <label>\n   *         Enter your name:\n   *         <input type=\"text\"\n   *                name=\"myName\"\n   *                ng-model=\"name\"\n   *                ng-minlength=\"5\"\n   *                ng-maxlength=\"20\"\n   *                required />\n   *       </label>\n   *       <pre>myForm.myName.$error = {{ myForm.myName.$error | json }}</pre>\n   *\n   *       <div ng-messages=\"myForm.myName.$error\" style=\"color:maroon\" role=\"alert\">\n   *         <div ng-message=\"required\">You did not enter a field</div>\n   *         <div ng-message=\"minlength\">Your field is too short</div>\n   *         <div ng-message=\"maxlength\">Your field is too long</div>\n   *       </div>\n   *     </form>\n   *   </file>\n   *   <file name=\"script.js\">\n   *     angular.module('ngMessagesExample', ['ngMessages']);\n   *   </file>\n   * </example>\n   */\n  .directive('ngMessages', ['$animate', function($animate) {\n    var ACTIVE_CLASS = 'ng-active';\n    var INACTIVE_CLASS = 'ng-inactive';\n\n    return {\n      require: 'ngMessages',\n      restrict: 'AE',\n      controller: ['$element', '$scope', '$attrs', function NgMessagesCtrl($element, $scope, $attrs) {\n        var ctrl = this;\n        var latestKey = 0;\n        var nextAttachId = 0;\n\n        this.getAttachId = function getAttachId() { return nextAttachId++; };\n\n        var messages = this.messages = {};\n        var renderLater, cachedCollection;\n\n        this.render = function(collection) {\n          collection = collection || {};\n\n          renderLater = false;\n          cachedCollection = collection;\n\n          // this is true if the attribute is empty or if the attribute value is truthy\n          var multiple = isAttrTruthy($scope, $attrs.ngMessagesMultiple) ||\n                         isAttrTruthy($scope, $attrs.multiple);\n\n          var unmatchedMessages = [];\n          var matchedKeys = {};\n          var messageItem = ctrl.head;\n          var messageFound = false;\n          var totalMessages = 0;\n\n          // we use != instead of !== to allow for both undefined and null values\n          while (messageItem != null) {\n            totalMessages++;\n            var messageCtrl = messageItem.message;\n\n            var messageUsed = false;\n            if (!messageFound) {\n              forEach(collection, function(value, key) {\n                if (!messageUsed && truthy(value) && messageCtrl.test(key)) {\n                  // this is to prevent the same error name from showing up twice\n                  if (matchedKeys[key]) return;\n                  matchedKeys[key] = true;\n\n                  messageUsed = true;\n                  messageCtrl.attach();\n                }\n              });\n            }\n\n            if (messageUsed) {\n              // unless we want to display multiple messages then we should\n              // set a flag here to avoid displaying the next message in the list\n              messageFound = !multiple;\n            } else {\n              unmatchedMessages.push(messageCtrl);\n            }\n\n            messageItem = messageItem.next;\n          }\n\n          forEach(unmatchedMessages, function(messageCtrl) {\n            messageCtrl.detach();\n          });\n\n          if (unmatchedMessages.length !== totalMessages) {\n            $animate.setClass($element, ACTIVE_CLASS, INACTIVE_CLASS);\n          } else {\n            $animate.setClass($element, INACTIVE_CLASS, ACTIVE_CLASS);\n          }\n        };\n\n        $scope.$watchCollection($attrs.ngMessages || $attrs['for'], ctrl.render);\n\n        // If the element is destroyed, proactively destroy all the currently visible messages\n        $element.on('$destroy', function() {\n          forEach(messages, function(item) {\n            item.message.detach();\n          });\n        });\n\n        this.reRender = function() {\n          if (!renderLater) {\n            renderLater = true;\n            $scope.$evalAsync(function() {\n              if (renderLater && cachedCollection) {\n                ctrl.render(cachedCollection);\n              }\n            });\n          }\n        };\n\n        this.register = function(comment, messageCtrl) {\n          var nextKey = latestKey.toString();\n          messages[nextKey] = {\n            message: messageCtrl\n          };\n          insertMessageNode($element[0], comment, nextKey);\n          comment.$$ngMessageNode = nextKey;\n          latestKey++;\n\n          ctrl.reRender();\n        };\n\n        this.deregister = function(comment) {\n          var key = comment.$$ngMessageNode;\n          delete comment.$$ngMessageNode;\n          removeMessageNode($element[0], comment, key);\n          delete messages[key];\n          ctrl.reRender();\n        };\n\n        function findPreviousMessage(parent, comment) {\n          var prevNode = comment;\n          var parentLookup = [];\n\n          while (prevNode && prevNode !== parent) {\n            var prevKey = prevNode.$$ngMessageNode;\n            if (prevKey && prevKey.length) {\n              return messages[prevKey];\n            }\n\n            // dive deeper into the DOM and examine its children for any ngMessage\n            // comments that may be in an element that appears deeper in the list\n            if (prevNode.childNodes.length && parentLookup.indexOf(prevNode) === -1) {\n              parentLookup.push(prevNode);\n              prevNode = prevNode.childNodes[prevNode.childNodes.length - 1];\n            } else if (prevNode.previousSibling) {\n              prevNode = prevNode.previousSibling;\n            } else {\n              prevNode = prevNode.parentNode;\n              parentLookup.push(prevNode);\n            }\n          }\n        }\n\n        function insertMessageNode(parent, comment, key) {\n          var messageNode = messages[key];\n          if (!ctrl.head) {\n            ctrl.head = messageNode;\n          } else {\n            var match = findPreviousMessage(parent, comment);\n            if (match) {\n              messageNode.next = match.next;\n              match.next = messageNode;\n            } else {\n              messageNode.next = ctrl.head;\n              ctrl.head = messageNode;\n            }\n          }\n        }\n\n        function removeMessageNode(parent, comment, key) {\n          var messageNode = messages[key];\n\n          var match = findPreviousMessage(parent, comment);\n          if (match) {\n            match.next = messageNode.next;\n          } else {\n            ctrl.head = messageNode.next;\n          }\n        }\n      }]\n    };\n\n    function isAttrTruthy(scope, attr) {\n     return (isString(attr) && attr.length === 0) || //empty attribute\n            truthy(scope.$eval(attr));\n    }\n\n    function truthy(val) {\n      return isString(val) ? val.length : !!val;\n    }\n  }])\n\n  /**\n   * @ngdoc directive\n   * @name ngMessagesInclude\n   * @restrict AE\n   * @scope\n   *\n   * @description\n   * `ngMessagesInclude` is a directive with the purpose to import existing ngMessage template\n   * code from a remote template and place the downloaded template code into the exact spot\n   * that the ngMessagesInclude directive is placed within the ngMessages container. This allows\n   * for a series of pre-defined messages to be reused and also allows for the developer to\n   * determine what messages are overridden due to the placement of the ngMessagesInclude directive.\n   *\n   * @usage\n   * ```html\n   * <!-- using attribute directives -->\n   * <ANY ng-messages=\"expression\" role=\"alert\">\n   *   <ANY ng-messages-include=\"remoteTplString\">...</ANY>\n   * </ANY>\n   *\n   * <!-- or by using element directives -->\n   * <ng-messages for=\"expression\" role=\"alert\">\n   *   <ng-messages-include src=\"expressionValue1\">...</ng-messages-include>\n   * </ng-messages>\n   * ```\n   *\n   * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.\n   *\n   * @param {string} ngMessagesInclude|src a string value corresponding to the remote template.\n   */\n  .directive('ngMessagesInclude',\n    ['$templateRequest', '$document', '$compile', function($templateRequest, $document, $compile) {\n\n    return {\n      restrict: 'AE',\n      require: '^^ngMessages', // we only require this for validation sake\n      link: function($scope, element, attrs) {\n        var src = attrs.ngMessagesInclude || attrs.src;\n        $templateRequest(src).then(function(html) {\n          if ($scope.$$destroyed) return;\n\n          if (isString(html) && !html.trim()) {\n            // Empty template - nothing to compile\n            replaceElementWithMarker(element, src);\n          } else {\n            // Non-empty template - compile and link\n            $compile(html)($scope, function(contents) {\n              element.after(contents);\n              replaceElementWithMarker(element, src);\n            });\n          }\n        });\n      }\n    };\n\n    // Helpers\n    function replaceElementWithMarker(element, src) {\n      // A comment marker is placed for debugging purposes\n      var comment = $compile.$$createComment ?\n          $compile.$$createComment('ngMessagesInclude', src) :\n          $document[0].createComment(' ngMessagesInclude: ' + src + ' ');\n      var marker = jqLite(comment);\n      element.after(marker);\n\n      // Don't pollute the DOM anymore by keeping an empty directive element\n      element.remove();\n    }\n  }])\n\n  /**\n   * @ngdoc directive\n   * @name ngMessage\n   * @restrict AE\n   * @scope\n   *\n   * @description\n   * `ngMessage` is a directive with the purpose to show and hide a particular message.\n   * For `ngMessage` to operate, a parent `ngMessages` directive on a parent DOM element\n   * must be situated since it determines which messages are visible based on the state\n   * of the provided key/value map that `ngMessages` listens on.\n   *\n   * More information about using `ngMessage` can be found in the\n   * {@link module:ngMessages `ngMessages` module documentation}.\n   *\n   * @usage\n   * ```html\n   * <!-- using attribute directives -->\n   * <ANY ng-messages=\"expression\" role=\"alert\">\n   *   <ANY ng-message=\"stringValue\">...</ANY>\n   *   <ANY ng-message=\"stringValue1, stringValue2, ...\">...</ANY>\n   * </ANY>\n   *\n   * <!-- or by using element directives -->\n   * <ng-messages for=\"expression\" role=\"alert\">\n   *   <ng-message when=\"stringValue\">...</ng-message>\n   *   <ng-message when=\"stringValue1, stringValue2, ...\">...</ng-message>\n   * </ng-messages>\n   * ```\n   *\n   * @param {expression} ngMessage|when a string value corresponding to the message key.\n   */\n  .directive('ngMessage', ngMessageDirectiveFactory())\n\n\n  /**\n   * @ngdoc directive\n   * @name ngMessageExp\n   * @restrict AE\n   * @priority 1\n   * @scope\n   *\n   * @description\n   * `ngMessageExp` is the same as {@link directive:ngMessage `ngMessage`}, but instead of a static\n   * value, it accepts an expression to be evaluated for the message key.\n   *\n   * @usage\n   * ```html\n   * <!-- using attribute directives -->\n   * <ANY ng-messages=\"expression\">\n   *   <ANY ng-message-exp=\"expressionValue\">...</ANY>\n   * </ANY>\n   *\n   * <!-- or by using element directives -->\n   * <ng-messages for=\"expression\">\n   *   <ng-message when-exp=\"expressionValue\">...</ng-message>\n   * </ng-messages>\n   * ```\n   *\n   * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.\n   *\n   * @param {expression} ngMessageExp|whenExp an expression value corresponding to the message key.\n   */\n  .directive('ngMessageExp', ngMessageDirectiveFactory());\n\nfunction ngMessageDirectiveFactory() {\n  return ['$animate', function($animate) {\n    return {\n      restrict: 'AE',\n      transclude: 'element',\n      priority: 1, // must run before ngBind, otherwise the text is set on the comment\n      terminal: true,\n      require: '^^ngMessages',\n      link: function(scope, element, attrs, ngMessagesCtrl, $transclude) {\n        var commentNode = element[0];\n\n        var records;\n        var staticExp = attrs.ngMessage || attrs.when;\n        var dynamicExp = attrs.ngMessageExp || attrs.whenExp;\n        var assignRecords = function(items) {\n          records = items\n              ? (isArray(items)\n                  ? items\n                  : items.split(/[\\s,]+/))\n              : null;\n          ngMessagesCtrl.reRender();\n        };\n\n        if (dynamicExp) {\n          assignRecords(scope.$eval(dynamicExp));\n          scope.$watchCollection(dynamicExp, assignRecords);\n        } else {\n          assignRecords(staticExp);\n        }\n\n        var currentElement, messageCtrl;\n        ngMessagesCtrl.register(commentNode, messageCtrl = {\n          test: function(name) {\n            return contains(records, name);\n          },\n          attach: function() {\n            if (!currentElement) {\n              $transclude(function(elm, newScope) {\n                $animate.enter(elm, null, element);\n                currentElement = elm;\n\n                // Each time we attach this node to a message we get a new id that we can match\n                // when we are destroying the node later.\n                var $$attachId = currentElement.$$attachId = ngMessagesCtrl.getAttachId();\n\n                // in the event that the element or a parent element is destroyed\n                // by another structural directive then it's time\n                // to deregister the message from the controller\n                currentElement.on('$destroy', function() {\n                  if (currentElement && currentElement.$$attachId === $$attachId) {\n                    ngMessagesCtrl.deregister(commentNode);\n                    messageCtrl.detach();\n                  }\n                  newScope.$destroy();\n                });\n              });\n            }\n          },\n          detach: function() {\n            if (currentElement) {\n              var elm = currentElement;\n              currentElement = null;\n              $animate.leave(elm);\n            }\n          }\n        });\n      }\n    };\n  }];\n\n  function contains(collection, key) {\n    if (collection) {\n      return isArray(collection)\n          ? collection.indexOf(key) >= 0\n          : collection.hasOwnProperty(key);\n    }\n  }\n}\n\n\n})(window, window.angular);\n","function removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort:\n            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","\"use strict\";\n/**\n * @coreapi\n * @module state\n */ /** for typedoc */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar predicates_1 = require(\"../common/predicates\");\nvar strings_1 = require(\"../common/strings\");\nvar common_1 = require(\"../common\");\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nvar TargetState = /** @class */ (function () {\n    /**\n     * The TargetState constructor\n     *\n     * Note: Do not construct a `TargetState` manually.\n     * To create a `TargetState`, use the [[StateService.target]] factory method.\n     *\n     * @param _stateRegistry The StateRegistry to use to look up the _definition\n     * @param _identifier An identifier for a state.\n     *    Either a fully-qualified state name, or the object used to define the state.\n     * @param _params Parameters for the target state\n     * @param _options Transition options.\n     *\n     * @internalapi\n     */\n    function TargetState(_stateRegistry, _identifier, _params, _options) {\n        this._stateRegistry = _stateRegistry;\n        this._identifier = _identifier;\n        this._identifier = _identifier;\n        this._params = common_1.extend({}, _params || {});\n        this._options = common_1.extend({}, _options || {});\n        this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n    }\n    /** The name of the state this object targets */\n    TargetState.prototype.name = function () {\n        return this._definition && this._definition.name || this._identifier;\n    };\n    /** The identifier used when creating this TargetState */\n    TargetState.prototype.identifier = function () {\n        return this._identifier;\n    };\n    /** The target parameter values */\n    TargetState.prototype.params = function () {\n        return this._params;\n    };\n    /** The internal state object (if it was found) */\n    TargetState.prototype.$state = function () {\n        return this._definition;\n    };\n    /** The internal state declaration (if it was found) */\n    TargetState.prototype.state = function () {\n        return this._definition && this._definition.self;\n    };\n    /** The target options */\n    TargetState.prototype.options = function () {\n        return this._options;\n    };\n    /** True if the target state was found */\n    TargetState.prototype.exists = function () {\n        return !!(this._definition && this._definition.self);\n    };\n    /** True if the object is valid */\n    TargetState.prototype.valid = function () {\n        return !this.error();\n    };\n    /** If the object is invalid, returns the reason why */\n    TargetState.prototype.error = function () {\n        var base = this.options().relative;\n        if (!this._definition && !!base) {\n            var stateName = base.name ? base.name : base;\n            return \"Could not resolve '\" + this.name() + \"' from state '\" + stateName + \"'\";\n        }\n        if (!this._definition)\n            return \"No such state '\" + this.name() + \"'\";\n        if (!this._definition.self)\n            return \"State '\" + this.name() + \"' has an invalid definition\";\n    };\n    TargetState.prototype.toString = function () {\n        return \"'\" + this.name() + \"'\" + strings_1.stringify(this.params());\n    };\n    /**\n     * Returns a copy of this TargetState which targets a different state.\n     * The new TargetState has the same parameter values and transition options.\n     *\n     * @param state The new state that should be targeted\n     */\n    TargetState.prototype.withState = function (state) {\n        return new TargetState(this._stateRegistry, state, this._params, this._options);\n    };\n    /**\n     * Returns a copy of this TargetState, using the specified parameter values.\n     *\n     * @param params the new parameter values to use\n     * @param replace When false (default) the new parameter values will be merged with the current values.\n     *                When true the parameter values will be used instead of the current values.\n     */\n    TargetState.prototype.withParams = function (params, replace) {\n        if (replace === void 0) { replace = false; }\n        var newParams = replace ? params : common_1.extend({}, this._params, params);\n        return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n    };\n    /**\n     * Returns a copy of this TargetState, using the specified Transition Options.\n     *\n     * @param options the new options to use\n     * @param replace When false (default) the new options will be merged with the current options.\n     *                When true the options will be used instead of the current options.\n     */\n    TargetState.prototype.withOptions = function (options, replace) {\n        if (replace === void 0) { replace = false; }\n        var newOpts = replace ? options : common_1.extend({}, this._options, options);\n        return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n    };\n    /** Returns true if the object has a state property that might be a state or state name */\n    TargetState.isDef = function (obj) {\n        return obj && obj.state && (predicates_1.isString(obj.state) || predicates_1.isString(obj.state.name));\n    };\n    return TargetState;\n}());\nexports.TargetState = TargetState;\n//# sourceMappingURL=targetState.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar browserLocationConfig_1 = require(\"./browserLocationConfig\");\nvar hashLocationService_1 = require(\"./hashLocationService\");\nvar utils_1 = require(\"./utils\");\nvar pushStateLocationService_1 = require(\"./pushStateLocationService\");\nvar memoryLocationService_1 = require(\"./memoryLocationService\");\nvar memoryLocationConfig_1 = require(\"./memoryLocationConfig\");\nvar injector_1 = require(\"./injector\");\nvar q_1 = require(\"./q\");\nvar coreservices_1 = require(\"../common/coreservices\");\nfunction servicesPlugin(router) {\n    coreservices_1.services.$injector = injector_1.$injector;\n    coreservices_1.services.$q = q_1.$q;\n    return { name: 'vanilla.services', $q: q_1.$q, $injector: injector_1.$injector, dispose: function () { return null; } };\n}\nexports.servicesPlugin = servicesPlugin;\n/** A `UIRouterPlugin` uses the browser hash to get/set the current location */\nexports.hashLocationPlugin = utils_1.locationPluginFactory('vanilla.hashBangLocation', false, hashLocationService_1.HashLocationService, browserLocationConfig_1.BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\nexports.pushStateLocationPlugin = utils_1.locationPluginFactory('vanilla.pushStateLocation', true, pushStateLocationService_1.PushStateLocationService, browserLocationConfig_1.BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\nexports.memoryLocationPlugin = utils_1.locationPluginFactory('vanilla.memoryLocation', false, memoryLocationService_1.MemoryLocationService, memoryLocationConfig_1.MemoryLocationConfig);\n//# sourceMappingURL=plugins.js.map","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","'use strict';\nvar isNonArrayObject = require('./').isNonArrayObject;\nvar _a = require('./constants'), E = _a.typeErrors, clientTrackSwitchOffControl = _a.clientTrackSwitchOffControl, videoContentPreferencesMode = _a.videoContentPreferencesMode, subscriptionMode = _a.subscriptionMode, trackPriority = _a.trackPriority, trackSwitchOffMode = _a.trackSwitchOffMode;\n/**\n * Validate the {@link BandwidthProfileOptions} object.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateBandwidthProfile(bandwidthProfile) {\n    var error = validateObject(bandwidthProfile, 'options.bandwidthProfile');\n    if (!bandwidthProfile || error) {\n        return error;\n    }\n    error = validateObject(bandwidthProfile.video, 'options.bandwidthProfile.video', [\n        { prop: 'contentPreferencesMode', values: Object.values(videoContentPreferencesMode) },\n        { prop: 'dominantSpeakerPriority', values: Object.values(trackPriority) },\n        { prop: 'maxSubscriptionBitrate', type: 'number' },\n        { prop: 'maxTracks', type: 'number' },\n        { prop: 'mode', values: Object.values(subscriptionMode) },\n        { prop: 'clientTrackSwitchOffControl', values: Object.values(clientTrackSwitchOffControl) },\n        { prop: 'trackSwitchOffMode', values: Object.values(trackSwitchOffMode) }\n    ]);\n    if (error) {\n        return error;\n    }\n    if (bandwidthProfile.video) {\n        // maxTracks is replaced by clientTrackSwitchOffControl.\n        // throw an error if both are specified.\n        if ('maxTracks' in bandwidthProfile.video && 'clientTrackSwitchOffControl' in bandwidthProfile.video) {\n            return new TypeError('options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead.');\n        }\n        // renderDimensions is replaced by contentPreferencesMode.\n        // throw an error if both are specified.\n        if ('renderDimensions' in bandwidthProfile.video && 'contentPreferencesMode' in bandwidthProfile.video) {\n            return new TypeError('options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead.');\n        }\n        return validateRenderDimensions(bandwidthProfile.video.renderDimensions);\n    }\n    return null;\n}\n/**\n * Throw if the given track is not a {@link LocalAudioTrack}, a\n * {@link LocalVideoTrack} or a MediaStreamTrack.\n * @param {*} track\n * @param {object} options\n */\nfunction validateLocalTrack(track, options) {\n    if (!(track instanceof options.LocalAudioTrack\n        || track instanceof options.LocalDataTrack\n        || track instanceof options.LocalVideoTrack\n        || track instanceof options.MediaStreamTrack)) {\n        /* eslint new-cap:0 */\n        throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n    }\n}\n/**\n * Validate an object. An object is valid if it is undefined or a non-null, non-array\n * object whose properties satisfy the specified data-type or value-range requirements.\n * @param {object} object - the object to be validated\n * @param {string} name - the object name to be used to build the error message, if invalid\n * @param {Array<object>} [propChecks] - optional data-type or value-range requirements\n *   for the object's properties\n * @returns {?Error} - null if object is valid, Error if not\n */\nfunction validateObject(object, name, propChecks) {\n    if (propChecks === void 0) { propChecks = []; }\n    // NOTE(mmalavalli): We determine that an undefined object is valid because this\n    // means the parent object does not contain this object as a property, which is\n    // a valid scenario.\n    if (typeof object === 'undefined') {\n        return null;\n    }\n    // NOTE(mmalavalli): We determine that if the object is null, or an Array, or\n    // any other non-object type, then it is invalid.\n    if (object === null || !isNonArrayObject(object)) {\n        return E.INVALID_TYPE(name, 'object');\n    }\n    // NOTE(mmalavalli): We determine that the object is invalid if at least one of\n    // its properties does not satisfy its data-type or value-range requirement.\n    return propChecks.reduce(function (error, _a) {\n        var prop = _a.prop, type = _a.type, values = _a.values;\n        if (error || !(prop in object)) {\n            return error;\n        }\n        var value = object[prop];\n        if (type && typeof value !== type) {\n            return E.INVALID_TYPE(name + \".\" + prop, type);\n        }\n        if (type === 'number' && isNaN(value)) {\n            return E.INVALID_TYPE(name + \".\" + prop, type);\n        }\n        if (Array.isArray(values) && !values.includes(value)) {\n            return E.INVALID_VALUE(name + \".\" + prop, values);\n        }\n        return error;\n    }, null);\n}\n/**\n * Validates the renderDimensions field to be \"auto\" or {@link VideoRenderDimensions} object.\n * @param {string|VideoRenderDimensions} renderDimensions\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateRenderDimensions(renderDimensions) {\n    var name = 'options.bandwidthProfile.video.renderDimensions';\n    var error = validateObject(renderDimensions, name);\n    return renderDimensions ? error || Object.values(trackPriority).reduce(function (error, prop) {\n        return error || validateObject(renderDimensions[prop], name + \".\" + prop, [\n            { prop: 'height', type: 'number' },\n            { prop: 'width', type: 'number' }\n        ]);\n    }, null) : error;\n}\nexports.validateBandwidthProfile = validateBandwidthProfile;\nexports.validateLocalTrack = validateLocalTrack;\nexports.validateObject = validateObject;\n//# sourceMappingURL=validate.js.map","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.find-last');\n","\"use strict\";\n/** @module hooks */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar trace_1 = require(\"../common/trace\");\nvar rejectFactory_1 = require(\"../transition/rejectFactory\");\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans) {\n    var ignoredReason = trans._ignoredReason();\n    if (!ignoredReason)\n        return;\n    trace_1.trace.traceTransitionIgnored(trans);\n    var pending = trans.router.globals.transition;\n    // The user clicked a link going back to the *current state* ('A')\n    // However, there is also a pending transition in flight (to 'B')\n    // Abort the transition to 'B' because the user now wants to be back at 'A'.\n    if (ignoredReason === 'SameAsCurrent' && pending) {\n        pending.abort();\n    }\n    return rejectFactory_1.Rejection.ignored().toPromise();\n}\nexports.registerIgnoredTransitionHook = function (transitionService) {\n    return transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n};\n//# sourceMappingURL=ignoredTransition.js.map","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $prevValid = 'prevValid' + $lvl,\n    $passingSchemas = 'passingSchemas' + $lvl;\n  out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n  var $wasComposite = it.compositeRule;\n  it.compositeRule = $it.compositeRule = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if (it.util.schemaHasRules($sch, it.RULES.all)) {\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n      } else {\n        out += ' var ' + ($nextValid) + ' = true; ';\n      }\n      if ($i) {\n        out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n        $closingBraces += '}';\n      }\n      out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n    }\n  }\n  it.compositeRule = $it.compositeRule = $wasComposite;\n  out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; return false; ';\n    }\n  }\n  out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyNoiseCancellation = exports.NoiseCancellationImpl = void 0;\nvar noisecancellationadapter_1 = require(\"../../noisecancellationadapter\");\nvar Log = require('../../util/log');\n/**\n * {@link NoiseCancellation} interface provides methods to control noise cancellation at runtime. This interface is exposed\n * on {@link LocalAudioTrack} property `noiseCancellation`. It is available only when {@link NoiseCancellationOptions} are\n * specified when creating a {@link LocalAudioTrack}, and the plugin is successfully loaded.\n * @alias NoiseCancellation\n * @interface\n *\n * @example\n * const { connect, createLocalAudioTrack } = require('twilio-video');\n *\n * // Create a LocalAudioTrack with Krisp noise cancellation enabled.\n * const localAudioTrack = await createLocalAudioTrack({\n *   noiseCancellationOptions: {\n *     sdkAssetsPath: 'path/to/hosted/twilio/krisp/audio/plugin/1.0.0/dist',\n *     vendor: 'krisp'\n *   }\n * });\n *\n * if (!localAudioTrack.noiseCancellation) {\n *   // If the Krisp audio plugin fails to load, then a warning message will be logged\n *   // in the browser console, and the \"noiseCancellation\" property will be set to null.\n *   // You can still use the LocalAudioTrack to join a Room. However, it will use the\n *   // browser's noise suppression instead of the Krisp noise cancellation. Make sure\n *   // the \"sdkAssetsPath\" provided in \"noiseCancellationOptions\" points to the correct\n *   // hosted path of the plugin assets.\n * } else {\n *   // Join a Room with the LocalAudioTrack.\n *   const room = await connect('token', {\n *     name: 'my-cool-room',\n *     tracks: [localAudioTrack]\n *   });\n *\n *   if (!localAudioTrack.noiseCancellation.isEnabled) {\n *     // Krisp noise cancellation is permanently disabled in Peer-to-Peer and Go Rooms.\n *   }\n * }\n *\n * //\n * // Enable/disable noise cancellation.\n * // @param {boolean} enable - whether noise cancellation should be enabled\n * //\n * function setNoiseCancellation(enable) {\n *   const { noiseCancellation } = localAudioTrack;\n *   if (noiseCancellation) {\n *     if (enable) {\n *       // If enabled, then the LocalAudioTrack will use the Krisp noise\n *       // cancellation instead of the browser's noise suppression.\n *       noiseCancellation.enable();\n *     } else {\n *       // If disabled, then the LocalAudioTrack will use the browser's\n *       // noise suppression instead of the Krisp noise cancellation.\n *       noiseCancellation.disable();\n *     }\n *   }\n * }\n */\nvar NoiseCancellationImpl = /** @class */ (function () {\n    function NoiseCancellationImpl(processor, originalTrack) {\n        this._processor = processor;\n        this._sourceTrack = originalTrack;\n        this._disabledPermanent = false;\n    }\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"vendor\", {\n        /**\n         * Name of the noise cancellation vendor.\n         * @type {NoiseCancellationVendor}\n         */\n        get: function () {\n            return this._processor.vendor;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"sourceTrack\", {\n        /**\n         * The underlying MediaStreamTrack of the {@link LocalAudioTrack}.\n         * @type {MediaStreamTrack}\n         */\n        get: function () {\n            return this._sourceTrack;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"isEnabled\", {\n        /**\n         * Whether noise cancellation is enabled.\n         * @type {boolean}\n         */\n        get: function () {\n            return this._processor.isEnabled();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Enable noise cancellation.\n     * @returns {Promise<void>} Promise that resolves when the operation is complete\n     * @throws {Error} Throws an error if noise cancellation is disabled permanently\n     *   for the {@link LocalAudioTrack}\n     */\n    NoiseCancellationImpl.prototype.enable = function () {\n        if (this._disabledPermanent) {\n            throw new Error(this.vendor + \" noise cancellation is disabled permanently for this track\");\n        }\n        this._processor.enable();\n        return Promise.resolve();\n    };\n    /**\n     * Disable noise cancellation.\n     * @returns {Promise<void>} Promise that resolves when the operation is complete\n     */\n    NoiseCancellationImpl.prototype.disable = function () {\n        this._processor.disable();\n        return Promise.resolve();\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.reacquireTrack = function (reacquire) {\n        return __awaiter(this, void 0, void 0, function () {\n            var processorWasEnabled, track, processedTrack;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        processorWasEnabled = this._processor.isEnabled();\n                        this._processor.disconnect();\n                        return [4 /*yield*/, reacquire()];\n                    case 1:\n                        track = _a.sent();\n                        this._sourceTrack = track;\n                        return [4 /*yield*/, this._processor.connect(track)];\n                    case 2:\n                        processedTrack = _a.sent();\n                        if (processorWasEnabled) {\n                            this._processor.enable();\n                        }\n                        else {\n                            this._processor.disable();\n                        }\n                        return [2 /*return*/, processedTrack];\n                }\n            });\n        });\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.disablePermanently = function () {\n        this._disabledPermanent = true;\n        return this.disable();\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.stop = function () {\n        this._processor.disconnect();\n        this._sourceTrack.stop();\n    };\n    return NoiseCancellationImpl;\n}());\nexports.NoiseCancellationImpl = NoiseCancellationImpl;\nfunction applyNoiseCancellation(mediaStreamTrack, noiseCancellationOptions, log) {\n    return __awaiter(this, void 0, void 0, function () {\n        var processor, cleanTrack, noiseCancellation, ex_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 2, , 3]);\n                    return [4 /*yield*/, noisecancellationadapter_1.createNoiseCancellationAudioProcessor(noiseCancellationOptions, log)];\n                case 1:\n                    processor = _a.sent();\n                    cleanTrack = processor.connect(mediaStreamTrack);\n                    noiseCancellation = new NoiseCancellationImpl(processor, mediaStreamTrack);\n                    return [2 /*return*/, { cleanTrack: cleanTrack, noiseCancellation: noiseCancellation }];\n                case 2:\n                    ex_1 = _a.sent();\n                    // in case of failures to load noise cancellation library just return original media stream.\n                    log.warn(\"Failed to create noise cancellation. Returning normal audio track: \" + ex_1);\n                    return [2 /*return*/, { cleanTrack: mediaStreamTrack }];\n                case 3: return [2 /*return*/];\n            }\n        });\n    });\n}\nexports.applyNoiseCancellation = applyNoiseCancellation;\n//# sourceMappingURL=noisecancellationimpl.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _actions = require(\"./actions\");\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\nvar routerMiddleware = function routerMiddleware(history) {\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        // eslint-disable-line no-unused-vars\n        if (action.type !== _actions.CALL_HISTORY_METHOD) {\n          return next(action);\n        }\n\n        var _action$payload = action.payload,\n            method = _action$payload.method,\n            args = _action$payload.args;\n        history[method].apply(history, _toConsumableArray(args));\n      };\n    };\n  };\n};\n\nvar _default = routerMiddleware;\nexports[\"default\"] = _default;","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays:\n            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n                '_'\n            ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=dispatchTrackingEvent;function dispatchTrackingEvent(data){if(typeof window!==\"undefined\"&&Object.keys(data).length>0){(window.dataLayer=window.dataLayer||[]).push(data)}}\n//# sourceMappingURL=dispatchTrackingEvent.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\n/**\n * A {@link Participant} implementation\n * @extends ParticipantSignaling\n * @property {string} identity\n * @property {Participant.SID} sid\n */\nvar RemoteParticipantSignaling = /** @class */ (function (_super) {\n    __extends(RemoteParticipantSignaling, _super);\n    /**\n     * Construct a {@link RemoteParticipantSignaling}.\n     * @param {Participant.SID} sid\n     * @param {string} identity\n     */\n    function RemoteParticipantSignaling(sid, identity) {\n        var _this = _super.call(this) || this;\n        _this.connect(sid, identity);\n        return _this;\n    }\n    return RemoteParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = RemoteParticipantSignaling;\n//# sourceMappingURL=remoteparticipant.js.map","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays:\n            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n                '_'\n            ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                      ? 'тан'\n                      : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aString = require('../internals/a-string');\nvar hasOwn = require('../internals/has-own-property');\nvar padStart = require('../internals/string-pad').start;\nvar WHITESPACES = require('../internals/whitespaces');\n\nvar $Array = Array;\nvar $escape = RegExp.escape;\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar numberToString = uncurryThis(1.1.toString);\nvar join = uncurryThis([].join);\nvar FIRST_DIGIT_OR_ASCII = /^[0-9a-z]/i;\nvar SYNTAX_SOLIDUS = /^[$()*+./?[\\\\\\]^{|}]/;\nvar OTHER_PUNCTUATORS_AND_WHITESPACES = RegExp('^[!\"#%&\\',\\\\-:;<=>@`~' + WHITESPACES + ']');\nvar exec = uncurryThis(FIRST_DIGIT_OR_ASCII.exec);\n\nvar ControlEscape = {\n  '\\u0009': 't',\n  '\\u000A': 'n',\n  '\\u000B': 'v',\n  '\\u000C': 'f',\n  '\\u000D': 'r'\n};\n\nvar escapeChar = function (chr) {\n  var hex = numberToString(charCodeAt(chr, 0), 16);\n  return hex.length < 3 ? '\\\\x' + padStart(hex, 2, '0') : '\\\\u' + padStart(hex, 4, '0');\n};\n\n// Avoiding the use of polyfills of the previous iteration of this proposal\nvar FORCED = !$escape || $escape('ab') !== '\\\\x61b';\n\n// `RegExp.escape` method\n// https://tc39.es/ecma262/#sec-regexp.escape\n$({ target: 'RegExp', stat: true, forced: FORCED }, {\n  escape: function escape(S) {\n    aString(S);\n    var length = S.length;\n    var result = $Array(length);\n\n    for (var i = 0; i < length; i++) {\n      var chr = charAt(S, i);\n      if (i === 0 && exec(FIRST_DIGIT_OR_ASCII, chr)) {\n        result[i] = escapeChar(chr);\n      } else if (hasOwn(ControlEscape, chr)) {\n        result[i] = '\\\\' + ControlEscape[chr];\n      } else if (exec(SYNTAX_SOLIDUS, chr)) {\n        result[i] = '\\\\' + chr;\n      } else if (exec(OTHER_PUNCTUATORS_AND_WHITESPACES, chr)) {\n        result[i] = escapeChar(chr);\n      } else {\n        var charCode = charCodeAt(chr, 0);\n        // single UTF-16 code unit\n        if ((charCode & 0xF800) !== 0xD800) result[i] = chr;\n        // unpaired surrogate\n        else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = escapeChar(chr);\n        // surrogate pair\n        else {\n          result[i] = chr;\n          result[++i] = charAt(S, i);\n        }\n      }\n    }\n\n    return join(result, '');\n  }\n});\n","//Finance.js\n//For more information, visit http://financejs.org\n//Copyright 2014 - 2015 Essam Al Joubori, MIT license\n\n// Instantiate a Finance class\nvar Finance = function() {};\n\n// Present Value (PV)\nFinance.prototype.PV = function (rate, cf1, numOfPeriod) {\n  numOfPeriod = typeof numOfPeriod !== 'undefined' ? numOfPeriod : 1;\n  var rate = rate/100, pv;\n  pv = cf1 / Math.pow((1 + rate),numOfPeriod);\n  return Math.round(pv * 100) / 100;\n};\n\n// Future Value (FV)\nFinance.prototype.FV = function (rate, cf0, numOfPeriod) {\n  var rate = rate/100, fv;\n  fv = cf0 * Math.pow((1 + rate), numOfPeriod);\n  return Math.round(fv * 100) / 100;\n};\n\n// Net Present Value (NPV)\nFinance.prototype.NPV = function (rate) {\n  var rate = rate/100, npv = arguments[1];\n  for (var i = 2; i < arguments.length; i++) {\n    npv +=(arguments[i] / Math.pow((1 + rate), i - 1));\n  }\n  return Math.round(npv * 100) / 100;\n};\n\n// seekZero seeks the zero point of the function fn(x), accurate to within x \\pm 0.01. fn(x) must be decreasing with x.\nfunction seekZero(fn) {\n  var x = 1;\n  while (fn(x) > 0) {\n    x += 1;\n  }\n  while (fn(x) < 0) {\n    x -= 0.01\n  }\n  return x + 0.01;\n}\n\n// Internal Rate of Return (IRR)\nFinance.prototype.IRR = function(cfs) {\n  var args = arguments;\n  var numberOfTries = 1;\n  // Cash flow values must contain at least one positive value and one negative value\n  var positive, negative;\n  Array.prototype.slice.call(args).forEach(function (value) {\n    if (value > 0) positive = true;\n    if (value < 0) negative = true;\n  })\n  if (!positive || !negative) throw new Error('IRR requires at least one positive value and one negative value');\n  function npv(rate) {\n    numberOfTries++;\n    if (numberOfTries > 1000) {\n      throw new Error('IRR can\\'t find a result');\n    }\n    var rrate = (1 + rate/100);\n    var npv = args[0];\n    for (var i = 1; i < args.length; i++) {\n      npv += (args[i] / Math.pow(rrate, i));\n    }\n    return npv;\n  }\n  return Math.round(seekZero(npv) * 100) / 100;\n};\n\n// Payback Period (PP)\nFinance.prototype.PP = function(numOfPeriods, cfs) {\n  // for even cash flows\n  if (numOfPeriods === 0) {\n    return Math.abs(arguments[1]) / arguments[2];\n  }\n  // for uneven cash flows\n  var cumulativeCashFlow = arguments[1];\n  var yearsCounter = 1;\n  for (i = 2; i < arguments.length; i++) {\n    cumulativeCashFlow += arguments[i];\n    if (cumulativeCashFlow > 0) {\n      yearsCounter += (cumulativeCashFlow - arguments[i]) / arguments[i];\n      return yearsCounter;\n    } else {\n      yearsCounter++;\n    }\n  }\n};\n\n// Return on Investment (ROI)\nFinance.prototype.ROI = function(cf0, earnings) {\n  var roi = (earnings - Math.abs(cf0)) / Math.abs(cf0) * 100;\n  return Math.round(roi * 100) / 100;\n};\n\n// Amortization\nFinance.prototype.AM = function (principal, rate, period, yearOrMonth, payAtBeginning) {\n  var numerator, denominator, am;\n  var ratePerPeriod = rate / 12 / 100;\n\n  // for inputs in years\n  if (!yearOrMonth) {\n    numerator = buildNumerator(period * 12);\n    denominator = Math.pow((1 + ratePerPeriod), period * 12) - 1;\n\n  // for inputs in months\n  } else if (yearOrMonth === 1) {\n    numerator = buildNumerator(period)\n    denominator = Math.pow((1 + ratePerPeriod), period) - 1;\n\n  } else {\n    console.log('not defined');\n  }\n  am = principal * (numerator / denominator);\n  return Math.round(am * 100) / 100;\n\n  function buildNumerator(numInterestAccruals){\n    if( payAtBeginning ){\n      //if payments are made in the beginning of the period, then interest shouldn't be calculated for first period\n      numInterestAccruals -= 1;\n    }\n    return ratePerPeriod * Math.pow((1 + ratePerPeriod), numInterestAccruals);\n  }\n};\n\n// Profitability Index (PI)\nFinance.prototype.PI = function(rate, cfs){\n  var totalOfPVs = 0, PI;\n  for (var i = 2; i < arguments.length; i++) {\n    var discountFactor;\n    // calculate discount factor\n    discountFactor = 1 / Math.pow((1 + rate/100), (i - 1));\n    totalOfPVs += arguments[i] * discountFactor;\n  }\n  PI = totalOfPVs/Math.abs(arguments[1]);\n  return Math.round(PI * 100) / 100;\n};\n\n// Discount Factor (DF)\nFinance.prototype.DF = function(rate, numOfPeriods) {\n  var dfs = [], discountFactor;\n  for (var i = 1; i < numOfPeriods; i++) {\n    discountFactor = 1 / Math.pow((1 + rate/100), (i - 1));\n    roundedDiscountFactor = Math.ceil(discountFactor * 1000)/1000;\n    dfs.push(roundedDiscountFactor);\n  }\n  return dfs;\n};\n\n// Compound Interest (CI)\nFinance.prototype.CI = function(rate, numOfCompoundings, principal, numOfPeriods) {\n  var CI = principal * Math.pow((1 + ((rate/100)/ numOfCompoundings)), numOfCompoundings * numOfPeriods);\n  return Math.round(CI * 100) / 100;\n};\n\n// Compound Annual Growth Rate (CAGR)\nFinance.prototype.CAGR = function(beginningValue, endingValue, numOfPeriods) {\n  var CAGR = Math.pow((endingValue / beginningValue), 1 / numOfPeriods) - 1;\n  return Math.round(CAGR * 10000) / 100;\n};\n\n// Leverage Ratio (LR)\nFinance.prototype.LR = function(totalLiabilities, totalDebts, totalIncome) {\n  return (totalLiabilities  + totalDebts) / totalIncome;\n};\n\n// Rule of 72\nFinance.prototype.R72 = function(rate) {\n  return 72 / rate;\n};\n\n// Weighted Average Cost of Capital (WACC)\nFinance.prototype.WACC = function(marketValueOfEquity, marketValueOfDebt, costOfEquity, costOfDebt, taxRate) {\n  E = marketValueOfEquity;\n  D = marketValueOfDebt;\n  V =  marketValueOfEquity + marketValueOfDebt;\n  Re = costOfEquity;\n  Rd = costOfDebt;\n  T = taxRate;\n\n  var WACC = ((E / V) * Re/100) + (((D / V) * Rd/100) * (1 - T/100));\n  return Math.round(WACC * 1000) / 10;\n};\n\n// PMT calculates the payment for a loan based on constant payments and a constant interest rate\nFinance.prototype.PMT = function(fractionalRate, numOfPayments, principal) {\n  return -principal * fractionalRate/(1-Math.pow(1+fractionalRate,-numOfPayments))\n};\n\n// IAR calculates the Inflation-adjusted return\nFinance.prototype.IAR = function(investmentReturn, inflationRate){\n  return 100 * (((1 + investmentReturn) / (1 + inflationRate)) - 1);\n}\n\n// XIRR - IRR for irregular intervals\nFinance.prototype.XIRR = function(cfs, dts, guess) {\nif (cfs.length != dts.length) throw new Error('Number of cash flows and dates should match');\n\n  var positive, negative;\n  Array.prototype.slice.call(cfs).forEach(function (value) {\n    if (value > 0) positive = true;\n    if (value < 0) negative = true;\n  });\n\n  if (!positive || !negative) throw new Error('XIRR requires at least one positive value and one negative value');\n  \n\n  guess = !!guess ? guess : 0;\n\n  var limit = 100; //loop limit\n  var guess_last;\n  var durs = [];\n\n  durs.push(0);\n\n  //Create Array of durations from First date\n  for(var i = 1; i < dts.length; i++) {\n    durs.push(durYear(dts[0], dts[i]));\n  }\n  \n  do {\n    guess_last = guess;\n    guess = guess_last - sumEq(cfs, durs, guess_last);\n    limit--;\n    \n  }while(guess_last.toFixed(5) != guess.toFixed(5) && limit > 0);\n\n  var xirr = guess_last.toFixed(5) != guess.toFixed(5) ? null : guess*100;\n\n  return Math.round(xirr * 100) / 100;\n};\n\n//Returns Sum of f(x)/f'(x)\nfunction sumEq(cfs, durs, guess) {\n  var sum_fx = 0;\n  var sum_fdx = 0;\n  for (var i = 0; i < cfs.length; i++) {\n    sum_fx = sum_fx + (cfs[i] / Math.pow(1 + guess, durs[i]));\n  }\n  for ( i = 0; i < cfs.length; i++) {\n    sum_fdx = sum_fdx + (-cfs[i] * durs[i] * Math.pow(1 + guess, -1 - durs[i]));\n  }\n  return sum_fx / sum_fdx;\n}\n\n//Returns duration in years between two dates\nfunction durYear(first, last) {\n  return (Math.abs(last.getTime() - first.getTime()) / (1000 * 3600 * 24 * 365));\n}\n\nif (typeof exports !== 'undefined') {\n  if (typeof module !== 'undefined' && module.exports) {\n      module.exports = Finance;\n      module.exports.Finance = Finance;\n  }\n}\n","var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nrequire('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.try');\nrequire('../../modules/es.promise.with-resolvers');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n*\n*\tVALIDATE: integer-array\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer array.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisInteger = require( 'validate.io-integer' );\n\n\n// IS INTEGER ARRAY //\n\n/**\n* FUNCTION: isIntegerArray( value )\n*\tValidates if a value is an integer array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is an integer array\n*/\nfunction isIntegerArray( value ) {\n\tvar len;\n\tif ( !isArray( value ) ) {\n\t\treturn false;\n\t}\n\tlen = value.length;\n\tif ( !len ) {\n\t\treturn false;\n\t}\n\tfor ( var i = 0; i < len; i++ ) {\n\t\tif ( !isInteger( value[i] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n} // end FUNCTION isIntegerArray()\n\n\n// EXPORTS //\n\nmodule.exports = isIntegerArray;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=useTrackingImpl;var _react=require(\"react\");var _deepmerge=_interopRequireDefault(require(\"deepmerge\"));var _ReactTrackingContext=_interopRequireDefault(require(\"./ReactTrackingContext\"));var _dispatchTrackingEvent=_interopRequireDefault(require(\"./dispatchTrackingEvent\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj}}function useTrackingImpl(trackingData,options){var _useContext=(0,_react.useContext)(_ReactTrackingContext[\"default\"]),tracking=_useContext.tracking;var latestData=(0,_react.useRef)(trackingData);var latestOptions=(0,_react.useRef)(options);(0,_react.useEffect)(function(){latestData.current=trackingData;latestOptions.current=options});var _useMemo=(0,_react.useMemo)(function(){return latestOptions.current||{}},[]),_useMemo$dispatch=_useMemo.dispatch,dispatch=_useMemo$dispatch===void 0?_dispatchTrackingEvent[\"default\"]:_useMemo$dispatch,_useMemo$dispatchOnMo=_useMemo.dispatchOnMount,dispatchOnMount=_useMemo$dispatchOnMo===void 0?false:_useMemo$dispatchOnMo,process=_useMemo.process;var getProcessFn=(0,_react.useCallback)(function(){return tracking&&tracking.process},[tracking]);var getOwnTrackingData=(0,_react.useCallback)(function(){var data=latestData.current;var ownTrackingData=typeof data===\"function\"?data():data;return ownTrackingData||{}},[]);var getTrackingDataFn=(0,_react.useCallback)(function(){var contextGetTrackingData=tracking&&tracking.getTrackingData||getOwnTrackingData;return function(){return contextGetTrackingData===getOwnTrackingData?getOwnTrackingData():(0,_deepmerge[\"default\"])(contextGetTrackingData(),getOwnTrackingData(),(latestOptions.current||{}).mergeOptions)}},[getOwnTrackingData,tracking]);var getTrackingDispatcher=(0,_react.useCallback)(function(){var contextDispatch=tracking&&tracking.dispatch||dispatch;return function(data){return contextDispatch((0,_deepmerge[\"default\"])(getOwnTrackingData(),data||{},(latestOptions.current||{}).mergeOptions))}},[getOwnTrackingData,tracking,dispatch]);var trackEvent=(0,_react.useCallback)(function(){var data=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};getTrackingDispatcher()(data)},[getTrackingDispatcher]);(0,_react.useEffect)(function(){var contextProcess=getProcessFn();var getTrackingData=getTrackingDataFn();if(contextProcess&&process){console.error(\"[react-tracking] options.process should be defined once on a top-level component\")}if(typeof contextProcess===\"function\"&&typeof dispatchOnMount===\"function\"){trackEvent((0,_deepmerge[\"default\"])(contextProcess(getOwnTrackingData())||{},dispatchOnMount(getTrackingData())||{},(latestOptions.current||{}).mergeOptions))}else if(typeof contextProcess===\"function\"){var processed=contextProcess(getOwnTrackingData());if(processed||dispatchOnMount===true){trackEvent(processed)}}else if(typeof dispatchOnMount===\"function\"){trackEvent(dispatchOnMount(getTrackingData()))}else if(dispatchOnMount===true){trackEvent()}},[getOwnTrackingData,getProcessFn,getTrackingDataFn,trackEvent,dispatchOnMount,process]);return(0,_react.useMemo)(function(){return{tracking:{dispatch:getTrackingDispatcher(),getTrackingData:getTrackingDataFn(),process:getProcessFn()||process}}},[getTrackingDispatcher,getTrackingDataFn,getProcessFn,process])}\n//# sourceMappingURL=useTrackingImpl.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * Represents recording state\n * @extends EventEmitter\n * @property {?boolean} isEnabled\n */\nvar RecordingSignaling = /** @class */ (function (_super) {\n    __extends(RecordingSignaling, _super);\n    /**\n     * Construct a {@link RecordingSignaling}.\n     */\n    function RecordingSignaling() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _isEnabled: {\n                value: null,\n                writable: true\n            },\n            isEnabled: {\n                enumerable: true,\n                get: function () {\n                    return this._isEnabled;\n                }\n            }\n        });\n        return _this;\n    }\n    /**\n     * Disable the {@link RecordingSignaling} if it is not already disabled.\n     * @return {this}\n     */\n    RecordingSignaling.prototype.disable = function () {\n        return this.enable(false);\n    };\n    /**\n     * Enable (or disable) the {@link RecordingSignaling} if it is not already enabled\n     * (or disabled).\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    RecordingSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        if (this.isEnabled !== enabled) {\n            this._isEnabled = enabled;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return RecordingSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link RecordingSignaling} is updated\n * @event RecordingSignaling#updated\n */\nmodule.exports = RecordingSignaling;\n//# sourceMappingURL=recording.js.map","\"use strict\";\n/**\n * @coreapi\n * @module url\n */ /** */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar coreservices_1 = require(\"../common/coreservices\");\nvar common_1 = require(\"../common/common\");\n/** @hidden */\nvar makeStub = function (keys) {\n    return keys.reduce(function (acc, key) { return (acc[key] = coreservices_1.notImplemented(key), acc); }, { dispose: common_1.noop });\n};\n/* tslint:disable:align */\n/** @hidden */ var locationServicesFns = ['url', 'path', 'search', 'hash', 'onChange'];\n/** @hidden */ var locationConfigFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n/** @hidden */ var umfFns = ['type', 'caseInsensitive', 'strictMode', 'defaultSquashPolicy'];\n/** @hidden */ var rulesFns = ['sort', 'when', 'initial', 'otherwise', 'rules', 'rule', 'removeRule'];\n/** @hidden */ var syncFns = ['deferIntercept', 'listen', 'sync', 'match'];\n/* tslint:enable:align */\n/**\n * API for URL management\n */\nvar UrlService = /** @class */ (function () {\n    /** @hidden */\n    function UrlService(router, lateBind) {\n        if (lateBind === void 0) { lateBind = true; }\n        this.router = router;\n        this.rules = {};\n        this.config = {};\n        // proxy function calls from UrlService to the LocationService/LocationConfig\n        var locationServices = function () { return router.locationService; };\n        common_1.createProxyFunctions(locationServices, this, locationServices, locationServicesFns, lateBind);\n        var locationConfig = function () { return router.locationConfig; };\n        common_1.createProxyFunctions(locationConfig, this.config, locationConfig, locationConfigFns, lateBind);\n        var umf = function () { return router.urlMatcherFactory; };\n        common_1.createProxyFunctions(umf, this.config, umf, umfFns);\n        var urlRouter = function () { return router.urlRouter; };\n        common_1.createProxyFunctions(urlRouter, this.rules, urlRouter, rulesFns);\n        common_1.createProxyFunctions(urlRouter, this, urlRouter, syncFns);\n    }\n    UrlService.prototype.url = function (newurl, replace, state) { return; };\n    /** @inheritdoc */\n    UrlService.prototype.path = function () { return; };\n    /** @inheritdoc */\n    UrlService.prototype.search = function () { return; };\n    /** @inheritdoc */\n    UrlService.prototype.hash = function () { return; };\n    /** @inheritdoc */\n    UrlService.prototype.onChange = function (callback) { return; };\n    /**\n     * Returns the current URL parts\n     *\n     * This method returns the current URL components as a [[UrlParts]] object.\n     *\n     * @returns the current url parts\n     */\n    UrlService.prototype.parts = function () {\n        return { path: this.path(), search: this.search(), hash: this.hash() };\n    };\n    UrlService.prototype.dispose = function () { };\n    /** @inheritdoc */\n    UrlService.prototype.sync = function (evt) { return; };\n    /** @inheritdoc */\n    UrlService.prototype.listen = function (enabled) { return; };\n    /** @inheritdoc */\n    UrlService.prototype.deferIntercept = function (defer) { return; };\n    /** @inheritdoc */\n    UrlService.prototype.match = function (urlParts) { return; };\n    /** @hidden */\n    UrlService.locationServiceStub = makeStub(locationServicesFns);\n    /** @hidden */\n    UrlService.locationConfigStub = makeStub(locationConfigFns);\n    return UrlService;\n}());\nexports.UrlService = UrlService;\n//# sourceMappingURL=urlService.js.map","'use strict';\n\n\nmodule.exports = {\n  copy: copy,\n  checkDataType: checkDataType,\n  checkDataTypes: checkDataTypes,\n  coerceToTypes: coerceToTypes,\n  toHash: toHash,\n  getProperty: getProperty,\n  escapeQuotes: escapeQuotes,\n  equal: require('fast-deep-equal'),\n  ucs2length: require('./ucs2length'),\n  varOccurences: varOccurences,\n  varReplace: varReplace,\n  cleanUpCode: cleanUpCode,\n  finalCleanUpCode: finalCleanUpCode,\n  schemaHasRules: schemaHasRules,\n  schemaHasRulesExcept: schemaHasRulesExcept,\n  toQuotedString: toQuotedString,\n  getPathExpr: getPathExpr,\n  getPath: getPath,\n  getData: getData,\n  unescapeFragment: unescapeFragment,\n  unescapeJsonPointer: unescapeJsonPointer,\n  escapeFragment: escapeFragment,\n  escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n  to = to || {};\n  for (var key in o) to[key] = o[key];\n  return to;\n}\n\n\nfunction checkDataType(dataType, data, negate) {\n  var EQUAL = negate ? ' !== ' : ' === '\n    , AND = negate ? ' || ' : ' && '\n    , OK = negate ? '!' : ''\n    , NOT = negate ? '' : '!';\n  switch (dataType) {\n    case 'null': return data + EQUAL + 'null';\n    case 'array': return OK + 'Array.isArray(' + data + ')';\n    case 'object': return '(' + OK + data + AND +\n                          'typeof ' + data + EQUAL + '\"object\"' + AND +\n                          NOT + 'Array.isArray(' + data + '))';\n    case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n                           NOT + '(' + data + ' % 1)' +\n                           AND + data + EQUAL + data + ')';\n    default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n  }\n}\n\n\nfunction checkDataTypes(dataTypes, data) {\n  switch (dataTypes.length) {\n    case 1: return checkDataType(dataTypes[0], data, true);\n    default:\n      var code = '';\n      var types = toHash(dataTypes);\n      if (types.array && types.object) {\n        code = types.null ? '(': '(!' + data + ' || ';\n        code += 'typeof ' + data + ' !== \"object\")';\n        delete types.null;\n        delete types.array;\n        delete types.object;\n      }\n      if (types.number) delete types.integer;\n      for (var t in types)\n        code += (code ? ' && ' : '' ) + checkDataType(t, data, true);\n\n      return code;\n  }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n  if (Array.isArray(dataTypes)) {\n    var types = [];\n    for (var i=0; i<dataTypes.length; i++) {\n      var t = dataTypes[i];\n      if (COERCE_TO_TYPES[t]) types[types.length] = t;\n      else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n    }\n    if (types.length) return types;\n  } else if (COERCE_TO_TYPES[dataTypes]) {\n    return [dataTypes];\n  } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n    return ['array'];\n  }\n}\n\n\nfunction toHash(arr) {\n  var hash = {};\n  for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n  return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n  return typeof key == 'number'\n          ? '[' + key + ']'\n          : IDENTIFIER.test(key)\n            ? '.' + key\n            : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n  return str.replace(SINGLE_QUOTE, '\\\\$&')\n            .replace(/\\n/g, '\\\\n')\n            .replace(/\\r/g, '\\\\r')\n            .replace(/\\f/g, '\\\\f')\n            .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n  dataVar += '[^0-9]';\n  var matches = str.match(new RegExp(dataVar, 'g'));\n  return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n  dataVar += '([^0-9])';\n  expr = expr.replace(/\\$/g, '$$$$');\n  return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nvar EMPTY_ELSE = /else\\s*{\\s*}/g\n  , EMPTY_IF_NO_ELSE = /if\\s*\\([^)]+\\)\\s*\\{\\s*\\}(?!\\s*else)/g\n  , EMPTY_IF_WITH_ELSE = /if\\s*\\(([^)]+)\\)\\s*\\{\\s*\\}\\s*else(?!\\s*if)/g;\nfunction cleanUpCode(out) {\n  return out.replace(EMPTY_ELSE, '')\n            .replace(EMPTY_IF_NO_ELSE, '')\n            .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');\n}\n\n\nvar ERRORS_REGEXP = /[^v.]errors/g\n  , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g\n  , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g\n  , RETURN_VALID = 'return errors === 0;'\n  , RETURN_TRUE = 'validate.errors = null; return true;'\n  , RETURN_ASYNC = /if \\(errors === 0\\) return data;\\s*else throw new ValidationError\\(vErrors\\);/\n  , RETURN_DATA_ASYNC = 'return data;'\n  , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g\n  , REMOVE_ROOTDATA = /if \\(rootData === undefined\\) rootData = data;/;\n\nfunction finalCleanUpCode(out, async) {\n  var matches = out.match(ERRORS_REGEXP);\n  if (matches && matches.length == 2) {\n    out = async\n          ? out.replace(REMOVE_ERRORS_ASYNC, '')\n               .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)\n          : out.replace(REMOVE_ERRORS, '')\n               .replace(RETURN_VALID, RETURN_TRUE);\n  }\n\n  matches = out.match(ROOTDATA_REGEXP);\n  if (!matches || matches.length !== 3) return out;\n  return out.replace(REMOVE_ROOTDATA, '');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n  if (typeof schema == 'boolean') return !schema;\n  for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n  if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n  for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction toQuotedString(str) {\n  return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n  var path = jsonPointers // false by default\n              ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n              : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n  return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n  var path = jsonPointers // false by default\n              ? toQuotedString('/' + escapeJsonPointer(prop))\n              : toQuotedString(getProperty(prop));\n  return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n  var up, jsonPointer, data, matches;\n  if ($data === '') return 'rootData';\n  if ($data[0] == '/') {\n    if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n    jsonPointer = $data;\n    data = 'rootData';\n  } else {\n    matches = $data.match(RELATIVE_JSON_POINTER);\n    if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n    up = +matches[1];\n    jsonPointer = matches[2];\n    if (jsonPointer == '#') {\n      if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n      return paths[lvl - up];\n    }\n\n    if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n    data = 'data' + ((lvl - up) || '');\n    if (!jsonPointer) return data;\n  }\n\n  var expr = data;\n  var segments = jsonPointer.split('/');\n  for (var i=0; i<segments.length; i++) {\n    var segment = segments[i];\n    if (segment) {\n      data += getProperty(unescapeJsonPointer(segment));\n      expr += ' && ' + data;\n    }\n  }\n  return expr;\n}\n\n\nfunction joinPaths (a, b) {\n  if (a == '\"\"') return b;\n  return (a + ' + ' + b).replace(/' \\+ '/g, '');\n}\n\n\nfunction unescapeFragment(str) {\n  return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n  return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n  return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n","\"use strict\";\n\nmodule.exports = {\n\t/**\n  * Euclidean distance\n  */\n\teudist: function eudist(v1, v2, sqrt) {\n\t\tvar len = v1.length;\n\t\tvar sum = 0;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar d = (v1[i] || 0) - (v2[i] || 0);\n\t\t\tsum += d * d;\n\t\t}\n\t\t// Square root not really needed\n\t\treturn sqrt ? Math.sqrt(sum) : sum;\n\t},\n\tmandist: function mandist(v1, v2, sqrt) {\n\t\tvar len = v1.length;\n\t\tvar sum = 0;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tsum += Math.abs((v1[i] || 0) - (v2[i] || 0));\n\t\t}\n\n\t\t// Square root not really needed\n\t\treturn sqrt ? Math.sqrt(sum) : sum;\n\t},\n\n\n\t/**\n  * Unidimensional distance\n  */\n\tdist: function dist(v1, v2, sqrt) {\n\t\tvar d = Math.abs(v1 - v2);\n\t\treturn sqrt ? d : d * d;\n\t}\n};\n//# sourceMappingURL=distance.js.map\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort:\n            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n                '_'\n            ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getUTCWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, options);\n  return date;\n}","'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {number} bitrate - bps\n */\nvar SenderOrReceiverReport = /** @class */ (function () {\n    /**\n     * Construct a {@link SenderOrReceiverReport}.\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     */\n    function SenderOrReceiverReport(id, trackId, bitrate) {\n        Object.defineProperties(this, {\n            id: {\n                enumerable: true,\n                value: id\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId\n            },\n            bitrate: {\n                enumerable: true,\n                value: bitrate\n            }\n        });\n    }\n    return SenderOrReceiverReport;\n}());\nmodule.exports = SenderOrReceiverReport;\n//# sourceMappingURL=senderorreceiverreport.js.map","/* globals webkitAudioContext, AudioContext */\n'use strict';\nvar NativeAudioContext = typeof AudioContext !== 'undefined'\n    ? AudioContext\n    : typeof webkitAudioContext !== 'undefined'\n        ? webkitAudioContext\n        : null;\n/**\n * @interface AudioContextFactoryOptions\n * @property {AudioContext} [AudioContext] - The AudioContext constructor\n */\n/**\n * {@link AudioContextFactory} ensures we construct at most one AudioContext\n * at a time, and that it is eventually closed when we no longer need it.\n * @property {AudioContextFactory} AudioContextFactory - The\n *   {@link AudioContextFactory} constructor\n */\nvar AudioContextFactory = /** @class */ (function () {\n    /**\n     * @param {AudioContextFactoryOptions} [options]\n     */\n    function AudioContextFactory(options) {\n        options = Object.assign({\n            AudioContext: NativeAudioContext\n        }, options);\n        Object.defineProperties(this, {\n            _AudioContext: {\n                value: options.AudioContext\n            },\n            _audioContext: {\n                value: null,\n                writable: true\n            },\n            _holders: {\n                value: new Set()\n            },\n            AudioContextFactory: {\n                enumerable: true,\n                value: AudioContextFactory\n            }\n        });\n    }\n    /**\n     * Each call to {@link AudioContextFactory#getOrCreate} should be paired with a\n     * call to {@link AudioContextFactory#release}. Calling this increments an\n     * internal reference count.\n     * @param {*} holder - The object to hold a reference to the AudioContext\n     * @returns {?AudioContext}\n     */\n    AudioContextFactory.prototype.getOrCreate = function (holder) {\n        if (!this._holders.has(holder)) {\n            this._holders.add(holder);\n            if (this._AudioContext && !this._audioContext) {\n                try {\n                    this._audioContext = new this._AudioContext();\n                }\n                catch (error) {\n                    // Do nothing;\n                }\n            }\n        }\n        return this._audioContext;\n    };\n    /**\n     * Decrement the internal reference count. If it reaches zero, close and destroy\n     * the AudioContext.\n     * @param {*} holder - The object that held a reference to the AudioContext\n     * @returns {void}\n     */\n    AudioContextFactory.prototype.release = function (holder) {\n        if (this._holders.has(holder)) {\n            this._holders.delete(holder);\n            if (!this._holders.size && this._audioContext) {\n                this._audioContext.close();\n                this._audioContext = null;\n            }\n        }\n    };\n    return AudioContextFactory;\n}());\nmodule.exports = new AudioContextFactory();\n//# sourceMappingURL=audiocontext.js.map","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n  else object[key] = value;\n};\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalAudioTrackClass = require('../localaudiotrack');\nfunction LocalAudioTrack(mediaStreamTrack, options) {\n    var track = new LocalAudioTrackClass(mediaStreamTrack, options);\n    Object.setPrototypeOf(track, LocalAudioTrack.prototype);\n    return track;\n}\ninherits(LocalAudioTrack, LocalAudioTrackClass);\nmodule.exports = LocalAudioTrack;\n//# sourceMappingURL=localaudiotrack.js.map","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex =\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort:\n            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n                '_'\n            ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","'use strict';\n\nexports.__esModule = true;\nexports.default = detectBrowser;\n// http://stackoverflow.com/questions/5899783/detect-safari-chrome-ie-firefox-opera-with-user-agent\nvar detectBrowserResult_ = null;\n\nfunction detectBrowser() {\n  if (detectBrowserResult_) {\n    return detectBrowserResult_;\n  }\n\n  if (typeof navigator !== 'undefined') {\n    var isExplorer = navigator.userAgent.indexOf('MSIE') > -1;\n    var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n    var isOpera = navigator.userAgent.toLowerCase().indexOf('op') > -1;\n\n    var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n    var isSafari = navigator.userAgent.indexOf('Safari') > -1;\n\n    if (isChrome && isSafari) {\n      isSafari = false;\n    }\n\n    if (isChrome && isOpera) {\n      isChrome = false;\n    }\n\n    detectBrowserResult_ = {\n      isExplorer: isExplorer,\n      isFirefox: isFirefox,\n      isOpera: isOpera,\n      isChrome: isChrome,\n      isSafari: isSafari\n    };\n    return detectBrowserResult_;\n  }\n\n  detectBrowserResult_ = {\n    isChrome: true,\n    isExplorer: false,\n    isFirefox: false,\n    isOpera: false,\n    isSafari: false\n  };\n\n  return detectBrowserResult_;\n}","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nexport default isNil;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    result = IS_CONSTRUCTOR ? new this() : [];\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayGridView as DayTableView, TableDateProfileGenerator } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/daygrid',\n    initialView: 'dayGridMonth',\n    views: {\n        dayGrid: {\n            component: DayTableView,\n            dateProfileGeneratorClass: TableDateProfileGenerator,\n        },\n        dayGridDay: {\n            type: 'dayGrid',\n            duration: { days: 1 },\n        },\n        dayGridWeek: {\n            type: 'dayGrid',\n            duration: { weeks: 1 },\n        },\n        dayGridMonth: {\n            type: 'dayGrid',\n            duration: { months: 1 },\n            fixedWeekCount: true,\n        },\n        dayGridYear: {\n            type: 'dayGrid',\n            duration: { years: 1 },\n        },\n    },\n});\n\nexport { index as default };\n","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n  return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref  The element boundary\n * @param {function} onRootClose\n * @param {object=}  options\n * @param {boolean=} options.disabled\n * @param {string=}  options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      disabled = _ref.disabled,\n      _ref$clickTrigger = _ref.clickTrigger,\n      clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n  var preventMouseRootCloseRef = useRef(false);\n  var onClose = onRootClose || noop;\n  var handleMouseCapture = useCallback(function (e) {\n    var currentTarget = getRefTarget(ref);\n    warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n    preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target);\n  }, [ref]);\n  var handleMouse = useEventCallback(function (e) {\n    if (!preventMouseRootCloseRef.current) {\n      onClose(e);\n    }\n  });\n  var handleKeyUp = useEventCallback(function (e) {\n    if (e.keyCode === escapeKeyCode) {\n      onClose(e);\n    }\n  });\n  useEffect(function () {\n    if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n    // https://github.com/facebook/react/issues/20074\n\n    var currentEvent = window.event;\n    var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n    // avoid false positives in the contains() check below if the target DOM\n    // element is removed in the React mouse callback.\n\n    var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n    var removeMouseListener = listen(doc, clickTrigger, function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleMouse(e);\n    });\n    var removeKeyupListener = listen(doc, 'keyup', function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleKeyUp(e);\n    });\n    var mobileSafariHackListeners = [];\n\n    if ('ontouchstart' in doc.documentElement) {\n      mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n        return listen(el, 'mousemove', noop);\n      });\n    }\n\n    return function () {\n      removeMouseCaptureListener();\n      removeMouseListener();\n      removeKeyupListener();\n      mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n  }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n  return ownerDocument(safeFindDOMNode(componentOrElement));\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays:\n            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\nmodule.exports = exports['default'];","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","\"use strict\";\n\nexports.__esModule = true;\nvar log2 = Math.log2 ? Math.log2 : function (x) {\n  return Math.log(x) / Math.LN2;\n};\n\nexports.default = log2;","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort:\n            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nvar Track = require('./');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link RemoteDataTrack} represents data published to a {@link Room} by a\n * {@link RemoteParticipant}.\n * @extends Track\n * @property {boolean} isEnabled - true\n * @property {boolean} isSubscribed - Whether the {@link RemoteDataTrack} is\n *   subscribed to\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteDataTrack} is\n *   switched off\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n *   limit (in milliseconds) during which data will be transmitted or\n *   retransmitted if not acknowledged on the underlying RTCDataChannel.\n * @property {?number} maxRetransmits - If non-null, this represents the number\n *   of times the data will be retransmitted if not successfully received on the\n *   underlying RTCDataChannel.\n * @property {boolean} ordered - true if data on the {@link RemoteDataTrack} can\n *   be received out-of-order.\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteDataTrack}\n * @property {boolean} reliable - This is true if both\n *   <code>maxPacketLifeTime</code> and <code>maxRetransmits</code> are set to\n *   null. In other words, if this is true, there is no bound on packet lifetime\n *   or the number of retransmits that will be attempted, ensuring \"reliable\"\n *   transmission.\n * @property {Track.SID} sid - The SID assigned to the {@link RemoteDataTrack}\n * @emits RemoteDataTrack#message\n * @emits RemoteDataTrack#switchedOff\n * @emits RemoteDataTrack#switchedOn\n */\nvar RemoteDataTrack = /** @class */ (function (_super) {\n    __extends(RemoteDataTrack, _super);\n    /**\n     * Construct a {@link RemoteDataTrack} from a {@link DataTrackReceiver}.\n     * @param {Track.SID} sid\n     * @param {DataTrackReceiver} dataTrackReceiver\n     * @param {{log: Log, name: ?string}} options\n     */\n    function RemoteDataTrack(sid, dataTrackReceiver, options) {\n        var _this = _super.call(this, dataTrackReceiver.id, 'data', options) || this;\n        Object.defineProperties(_this, {\n            _isSwitchedOff: {\n                value: false,\n                writable: true\n            },\n            _priority: {\n                value: null,\n                writable: true\n            },\n            isEnabled: {\n                enumerable: true,\n                value: true\n            },\n            isSwitchedOff: {\n                enumerable: true,\n                get: function () {\n                    return this._isSwitchedOff;\n                }\n            },\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: dataTrackReceiver.maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: dataTrackReceiver.maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: dataTrackReceiver.ordered\n            },\n            priority: {\n                enumerable: true,\n                get: function () {\n                    return this._priority;\n                }\n            },\n            reliable: {\n                enumerable: true,\n                value: dataTrackReceiver.maxPacketLifeTime === null\n                    && dataTrackReceiver.maxRetransmits === null\n            },\n            sid: {\n                enumerable: true,\n                value: sid\n            }\n        });\n        dataTrackReceiver.on('message', function (data) {\n            _this.emit('message', data, _this);\n        });\n        return _this;\n    }\n    /**\n     * Update the subscriber {@link Track.Priority} of the {@link RemoteDataTrack}.\n     * @param {?Track.Priority} priority - the new {@link Track.priority};\n     *   Currently setPriority has no effect on data tracks.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteDataTrack.prototype.setPriority = function (priority) {\n        var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)));\n        if (!priorityValues.includes(priority)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_VALUE('priority', priorityValues);\n        }\n        // Note: priority has no real effect on the data tracks.\n        this._priority = priority;\n        return this;\n    };\n    /**\n     * @private\n     */\n    RemoteDataTrack.prototype._setEnabled = function () {\n        // Do nothing.\n    };\n    /**\n     * @private\n     * @param {boolean} isSwitchedOff\n     */\n    RemoteDataTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n        if (this._isSwitchedOff !== isSwitchedOff) {\n            this._isSwitchedOff = isSwitchedOff;\n            this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n        }\n    };\n    return RemoteDataTrack;\n}(Track));\n/**\n * A message was received over the {@link RemoteDataTrack}.\n * @event RemoteDataTrack#message\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that received\n *   the message\n */\n/**\n * A {@link RemoteDataTrack} was switched off.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n *   switched off\n * @event RemoteDataTrack#switchedOff\n */\n/**\n * A {@link RemoteDataTrack} was switched on.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n *   switched on\n * @event RemoteDataTrack#switchedOn\n */\nmodule.exports = RemoteDataTrack;\n//# sourceMappingURL=remotedatatrack.js.map","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  out += 'var division' + ($lvl) + ';if (';\n  if ($isData) {\n    out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n  }\n  out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n  if (it.opts.multipleOfPrecision) {\n    out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n  } else {\n    out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n  }\n  out += ' ) ';\n  if ($isData) {\n    out += '  )  ';\n  }\n  out += ' ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be multiple of ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internalapi\n * @module vanilla\n */\n/** */\nvar predicates_1 = require(\"../common/predicates\");\n/** A `LocationConfig` that delegates to the browser's `location` object */\nvar BrowserLocationConfig = /** @class */ (function () {\n    function BrowserLocationConfig(router, _isHtml5) {\n        if (_isHtml5 === void 0) { _isHtml5 = false; }\n        this._isHtml5 = _isHtml5;\n        this._baseHref = undefined;\n        this._hashPrefix = '';\n    }\n    BrowserLocationConfig.prototype.port = function () {\n        if (location.port) {\n            return Number(location.port);\n        }\n        return this.protocol() === 'https' ? 443 : 80;\n    };\n    BrowserLocationConfig.prototype.protocol = function () {\n        return location.protocol.replace(/:/g, '');\n    };\n    BrowserLocationConfig.prototype.host = function () {\n        return location.hostname;\n    };\n    BrowserLocationConfig.prototype.html5Mode = function () {\n        return this._isHtml5;\n    };\n    BrowserLocationConfig.prototype.hashPrefix = function (newprefix) {\n        return predicates_1.isDefined(newprefix) ? this._hashPrefix = newprefix : this._hashPrefix;\n    };\n    BrowserLocationConfig.prototype.baseHref = function (href) {\n        return predicates_1.isDefined(href) ? this._baseHref = href :\n            predicates_1.isDefined(this._baseHref) ? this._baseHref : this.applyDocumentBaseHref();\n    };\n    BrowserLocationConfig.prototype.applyDocumentBaseHref = function () {\n        var baseTag = document.getElementsByTagName('base')[0];\n        return this._baseHref = baseTag ? baseTag.href.substr(location.origin.length) : location.pathname || '/';\n    };\n    BrowserLocationConfig.prototype.dispose = function () { };\n    return BrowserLocationConfig;\n}());\nexports.BrowserLocationConfig = BrowserLocationConfig;\n//# sourceMappingURL=browserLocationConfig.js.map","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return slice(that, end - search.length, end) === search;\n  }\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  if (typeof window !== \"undefined\") {\n    var _window;\n    if (typeof window.gtag === \"undefined\") {\n      window.dataLayer = window.dataLayer || [];\n      window.gtag = function gtag() {\n        window.dataLayer.push(arguments);\n      };\n    }\n    (_window = window).gtag.apply(_window, args);\n  }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.12.1\";\n\n\n/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div \" +\n\t\t\t\t\"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI :data 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: http://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: http://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/category/effects-core/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n( function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// Plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// A set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// JQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// Element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// Colors = jQuery.Color.names\n\tcolors,\n\n\t// Local aliases of functions called often\n\teach = jQuery.each;\n\n// Determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// Define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// We add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// For now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// If this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// Exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// If this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// Named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// More than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// If the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// If the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// This is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] &&\n\t\t\t\t\t\t\tjQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// Use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\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\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// If null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// If we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// Catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// Default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// Hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// Makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// Generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// Makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// Alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// Add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" ||\n\t\t\t\t\t\t( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Wrapped to prevent IE from throwing errors on \"invalid\" values like\n\t\t\t\t\t// 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n} )( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.filters && $.expr.filters.animated ) {\n\t$.expr.filters.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.filters.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.12.1\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated psuedo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.addClass( options.className )\n\t\t\t\t.css( {\n\t\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\t\theight: element.innerHeight(),\n\t\t\t\t\twidth: element.innerWidth(),\n\t\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t\t} )\n\t\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\t\ttransfer.remove();\n\t\t\t\t\tif ( $.isFunction( done ) ) {\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: http://api.jqueryui.com/blind-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectBlind = $.effects.define( \"blind\", \"hide\", function( options, done ) {\n\tvar map = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tvertical: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\thorizontal: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"up\",\n\t\tstart = element.cssClip(),\n\t\tanimate = { clip: $.extend( {}, start ) },\n\t\tplaceholder = $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip = start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Bounce 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Bounce Effect\n//>>group: Effects\n//>>description: Bounces an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/bounce-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectBounce = $.effects.define( \"bounce\", function( options, done ) {\n\tvar upAnim, downAnim, refValue,\n\t\telement = $( this ),\n\n\t\t// Defaults:\n\t\tmode = options.mode,\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"up\",\n\t\tdistance = options.distance,\n\t\ttimes = options.times || 5,\n\n\t\t// Number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = options.duration / anims,\n\t\teasing = options.easing,\n\n\t\t// Utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti = 0,\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\trefValue = element.css( ref );\n\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = element[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = refValue;\n\n\t\t// If we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\telement\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// Start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = refValue;\n\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( ; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement\n\t\t\t.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement.animate( upAnim, speed, easing );\n\t}\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Clip 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Clip Effect\n//>>group: Effects\n//>>description: Clips the element on and off like an old TV.\n//>>docs: http://api.jqueryui.com/clip-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectClip = $.effects.define( \"clip\", \"hide\", function( options, done ) {\n\tvar start,\n\t\tanimate = {},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"vertical\",\n\t\tboth = direction === \"both\",\n\t\thorizontal = both || direction === \"horizontal\",\n\t\tvertical = both || direction === \"vertical\";\n\n\tstart = element.cssClip();\n\tanimate.clip = {\n\t\ttop: vertical ? ( start.bottom - start.top ) / 2 : start.top,\n\t\tright: horizontal ? ( start.right - start.left ) / 2 : start.right,\n\t\tbottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,\n\t\tleft: horizontal ? ( start.right - start.left ) / 2 : start.left\n\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tanimate.clip = start;\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Drop 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Drop Effect\n//>>group: Effects\n//>>description: Moves an element in one direction and hides it at the same time.\n//>>docs: http://api.jqueryui.com/drop-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectDrop = $.effects.define( \"drop\", \"hide\", function( options, done ) {\n\n\tvar distance,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"-=\" : \"+=\",\n\t\toppositeMotion = ( motion === \"+=\" ) ? \"-=\" : \"+=\",\n\t\tanimation = {\n\t\t\topacity: 0\n\t\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tdistance = options.distance ||\n\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tanimation[ ref ] = motion + distance;\n\n\tif ( show ) {\n\t\telement.css( animation );\n\n\t\tanimation[ ref ] = oppositeMotion + distance;\n\t\tanimation.opacity = 1;\n\t}\n\n\t// Animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Explode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Explode Effect\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/explode-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectExplode = $.effects.define( \"explode\", \"hide\", function( options, done ) {\n\n\tvar i, j, left, top, mx, my,\n\t\trows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,\n\t\tcells = rows,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\n\t\t// Show and then visibility:hidden the element before calculating offset\n\t\toffset = element.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// Width and height of a piece\n\t\twidth = Math.ceil( element.outerWidth() / cells ),\n\t\theight = Math.ceil( element.outerHeight() / rows ),\n\t\tpieces = [];\n\n\t// Children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// Clone the element for each row and cell.\n\tfor ( i = 0; i < rows; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2;\n\n\t\tfor ( j = 0; j < cells; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\telement\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t} )\n\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t\t} )\n\t\t\t\t\t.animate( {\n\t\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t\t}, options.duration || 500, options.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\telement.css( {\n\t\t\tvisibility: \"visible\"\n\t\t} );\n\t\t$( pieces ).remove();\n\t\tdone();\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects Fade 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: http://api.jqueryui.com/fade-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\n\tvar show = options.mode === \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\", show ? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show ? 1 : 0\n\t\t}, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Fold 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fold Effect\n//>>group: Effects\n//>>description: Folds an element first horizontally and then vertically.\n//>>docs: http://api.jqueryui.com/fold-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectFold = $.effects.define( \"fold\", \"hide\", function( options, done ) {\n\n\t// Create element\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = options.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!options.horizFirst,\n\t\tref = horizFirst ? [ \"right\", \"bottom\" ] : [ \"bottom\", \"right\" ],\n\t\tduration = options.duration / 2,\n\n\t\tplaceholder = $.effects.createPlaceholder( element ),\n\n\t\tstart = element.cssClip(),\n\t\tanimation1 = { clip: $.extend( {}, start ) },\n\t\tanimation2 = { clip: $.extend( {}, start ) },\n\n\t\tdistance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],\n\n\t\tqueuelen = element.queue().length;\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tanimation1.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 1 ] ] = 0;\n\n\tif ( show ) {\n\t\telement.cssClip( animation2.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\n\t\t}\n\n\t\tanimation2.clip = start;\n\t}\n\n\t// Animate\n\telement\n\t\t.queue( function( next ) {\n\t\t\tif ( placeholder ) {\n\t\t\t\tplaceholder\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 ), duration, options.easing )\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 ), duration, options.easing );\n\t\t\t}\n\n\t\t\tnext();\n\t\t} )\n\t\t.animate( animation1, duration, options.easing )\n\t\t.animate( animation2, duration, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, 4 );\n} );\n\n\n/*!\n * jQuery UI Effects Highlight 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: http://api.jqueryui.com/highlight-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectHighlight = $.effects.define( \"highlight\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tanimation = {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode === \"hide\" ) {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: http://api.jqueryui.com/size-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\n\n\t// Create element\n\tvar baseline, factor, temp,\n\t\telement = $( this ),\n\n\t\t// Copy for children\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = options.mode,\n\t\trestore = mode !== \"effect\",\n\t\tscale = options.scale || \"both\",\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\n\t\tposition = element.css( \"position\" ),\n\t\tpos = element.position(),\n\t\toriginal = $.effects.scaledDimensions( element ),\n\t\tfrom = options.from || original,\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode === \"show\" ) {\n\t\ttemp = from;\n\t\tfrom = to;\n\t\tto = temp;\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: from.height / original.height,\n\t\t\tx: from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: to.height / original.height,\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\n\t\t\t\tchildFrom = {\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t},\n\t\t\t\tchildTo = {\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: function() {\n\n\t\t\tvar offset = element.offset();\n\n\t\t\tif ( to.opacity === 0 ) {\n\t\t\t\telement.css( \"opacity\", from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn't restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: http://api.jqueryui.com/scale-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tmode = options.mode,\n\t\tpercent = parseInt( options.percent, 10 ) ||\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\n\n\t\tnewOptions = $.extend( true, {\n\t\t\tfrom: $.effects.scaledDimensions( el ),\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\n\t\t}, options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity = 1;\n\t\tnewOptions.to.opacity = 0;\n\t}\n\n\t$.effects.effect.size.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: http://api.jqueryui.com/puff-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\n\tvar newOptions = $.extend( true, {}, options, {\n\t\tfade: true,\n\t\tpercent: parseInt( options.percent, 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Pulsate 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: http://api.jqueryui.com/pulsate-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectPulsate = $.effects.define( \"pulsate\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = show || hide,\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = options.duration / anims,\n\t\tanimateTo = 0,\n\t\ti = 1,\n\t\tqueuelen = element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }, duration, options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Shake 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Shake Effect\n//>>group: Effects\n//>>description: Shakes an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/shake-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectShake = $.effects.define( \"shake\", function( options, done ) {\n\n\tvar i = 1,\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"left\",\n\t\tdistance = options.distance || 20,\n\t\ttimes = options.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( options.duration / anims ),\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\telement.animate( animation, speed, options.easing );\n\n\t// Shakes\n\tfor ( ; i < times; i++ ) {\n\t\telement\n\t\t\t.animate( animation1, speed, options.easing )\n\t\t\t.animate( animation2, speed, options.easing );\n\t}\n\n\telement\n\t\t.animate( animation1, speed, options.easing )\n\t\t.animate( animation, speed / 2, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Slide 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slide Effect\n//>>group: Effects\n//>>description: Slides an element in and out of the viewport.\n//>>docs: http://api.jqueryui.com/slide-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectSlide = $.effects.define( \"slide\", \"show\", function( options, done ) {\n\tvar startClip, startRef,\n\t\telement = $( this ),\n\t\tmap = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\tmode = options.mode,\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tdistance = options.distance ||\n\t\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ),\n\t\tanimation = {};\n\n\t$.effects.createPlaceholder( element );\n\n\tstartClip = element.cssClip();\n\tstartRef = element.position()[ ref ];\n\n\t// Define hide animation\n\tanimation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;\n\tanimation.clip = element.cssClip();\n\tanimation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];\n\n\t// Reverse the animation if we're showing\n\tif ( mode === \"show\" ) {\n\t\telement.cssClip( animation.clip );\n\t\telement.css( ref, animation[ ref ] );\n\t\tanimation.clip = startClip;\n\t\tanimation[ ref ] = startRef;\n\t}\n\n\t// Actually animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Transfer 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Transfer Effect\n//>>group: Effects\n//>>description: Displays a transfer effect from one element to another.\n//>>docs: http://api.jqueryui.com/transfer-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effect;\nif ( $.uiBackCompat !== false ) {\n\teffect = $.effects.define( \"transfer\", function( options, done ) {\n\t\t$( this ).transfer( options, done );\n\t} );\n}\nvar effectsEffectTransfer = effect;\n\n\n/*!\n * jQuery UI Focusable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: http://api.jqueryui.com/focusable-selector/\n\n\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility !== \"hidden\";\n}\n\n$.extend( $.expr[ \":\" ], {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nvar focusable = $.ui.focusable;\n\n\n\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nvar form = $.fn.form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n\n/*!\n * jQuery UI Form Reset Mixin 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: http://api.jqueryui.com/form-reset-mixin/\n\n\n\nvar formResetMixin = $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element.form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Support for jQuery core 1.7.x 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.7 Support\n//>>group: Core\n//>>description: Support version 1.7.x of jQuery core\n\n\n\n// Support: jQuery 1.7 only\n// Not a great way to check versions, but since we only support 1.7+ and only\n// need to detect <1.8, this is a simple check that should suffice. Checking\n// for \"1.7.\" would be a bit safer, but the version string is 1.7, not 1.7.0\n// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting\n// 1.7 anymore). See #11197 for why we're not using feature detection.\nif ( $.fn.jquery.substring( 0, 3 ) === \"1.7\" ) {\n\n\t// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()\n\t// Unlike jQuery Core 1.8+, these only support numeric values to set the\n\t// dimensions in pixels\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t} );\n\t\t};\n\n\t\t$.fn[ \"outer\" + name ] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\t$( this ).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t} );\n\t\t};\n\t} );\n\n\t$.fn.addBack = 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\n;\n/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n\n\n// Internal use only\nvar escapeSelector = $.ui.escapeSelector = ( function() {\n\tvar selectorEscape = /([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g;\n\treturn function( selector ) {\n\t\treturn selector.replace( selectorEscape, \"\\\\$1\" );\n\t};\n} )();\n\n\n/*!\n * jQuery UI Labels 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: http://api.jqueryui.com/labels/\n\n\n\nvar labels = $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.ui.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Tabbable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: http://api.jqueryui.com/tabbable-selector/\n\n\n\nvar tabbable = $.extend( $.expr[ \":\" ], {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n\n/*!\n * jQuery UI Unique ID 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Accordion 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Accordion\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/accordion/\n//>>demos: http://jqueryui.com/accordion/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/accordion.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tclasses: {\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child, > :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\t// Don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icon, children,\n\t\t\ticons = this.options.icons;\n\n\t\tif ( icons ) {\n\t\t\ticon = $( \"<span>\" );\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\n\t\t\ticon.prependTo( this.headers );\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( children, icons.header )\n\t\t\t\t._addClass( children, null, icons.activeHeader )\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// Clean up main element\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\t// Clean up headers\n\t\tthis.headers\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// Clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// Setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\n\t\t// Support: IE8 Only\n\t\t// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t\tthis._toggleClass( this.headers.add( this.headers.next() ), null, \"ui-state-disabled\",\n\t\t\t!!value );\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.RIGHT:\n\t\tcase keyCode.DOWN:\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.LEFT:\n\t\tcase keyCode.UP:\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.SPACE:\n\t\tcase keyCode.ENTER:\n\t\t\tthis._eventHandler( event );\n\t\t\tbreak;\n\t\tcase keyCode.HOME:\n\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\tbreak;\n\t\tcase keyCode.END:\n\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\t$( toFocus ).trigger( \"focus\" );\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// Was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\n\t\t\t\t!this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\n\t\t// was active, active panel still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.headers = this.element.find( this.options.header );\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\n\t\t\t\"ui-state-default\" );\n\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active );\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\n\t\tthis.active.next().show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each( function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t} )\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\ttabIndex: -1\n\t\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t\t} )\n\t\t\t\t\t.hide();\n\n\t\t// Make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr( {\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t\t} );\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).show();\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).hide();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler( {\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar activeChildren, clickedChildren,\n\t\t\toptions = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// When the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// Switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// Handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr( {\n\t\t\t\"aria-hidden\": \"true\"\n\t\t} );\n\t\ttoHide.prev().attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( {\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter( function() {\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t} );\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\n\t\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel,\n\t\t\tprev = toHide.prev();\n\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n} );\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n\n/*!\n * jQuery UI Menu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Menu\n//>>group: Widgets\n//>>description: Creates nestable menus.\n//>>docs: http://api.jqueryui.com/menu/\n//>>demos: http://jqueryui.com/menu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/menu.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsMenu = $.widget( \"ui.menu\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-caret-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// Callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t} );\n\n\t\tthis._addClass( \"ui-menu\", \"ui-widget ui-widget-content\" );\n\t\tthis._on( {\n\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tvar active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) &&\n\t\t\t\t\t\t\tactive.closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\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\t\"mouseenter .ui-menu-item\": function( event ) {\n\n\t\t\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t\t\t// is over an item in the menu\n\t\t\t\tif ( this.previousFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar actualTarget = $( event.target ).closest( \".ui-menu-item\" ),\n\t\t\t\t\ttarget = $( event.currentTarget );\n\n\t\t\t\t// Ignore bubbled events on parent items, see #11641\n\t\t\t\tif ( actualTarget[ 0 ] !== target[ 0 ] ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\tthis._removeClass( target.siblings().children( \".ui-state-active\" ),\n\t\t\t\t\tnull, \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tvar notContained = !$.contains(\n\t\t\t\t\t\tthis.element[ 0 ],\n\t\t\t\t\t\t$.ui.safeActiveElement( this.document[ 0 ] )\n\t\t\t\t\t);\n\t\t\t\t\tif ( notContained ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t} );\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tvar items = this.element.find( \".ui-menu-item\" )\n\t\t\t\t.removeAttr( \"role aria-disabled\" ),\n\t\t\tsubmenus = items.children( \".ui-menu-item-wrapper\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeAttr( \"tabIndex role aria-haspopup\" );\n\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeAttr( \"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\n\t\t\t\t\t\"tabIndex\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\tsubmenus.children().each( function() {\n\t\t\tvar elem = $( this );\n\t\t\tif ( elem.data( \"ui-menu-submenu-caret\" ) ) {\n\t\t\t\telem.remove();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tskip = false;\n\n\t\t\t// Support number pad values\n\t\t\tcharacter = event.keyCode >= 96 && event.keyCode <= 105 ?\n\t\t\t\t( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay( function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items, newSubmenus, newItems, newWrappers,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis._toggleClass( \"ui-menu-icons\", null, !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tnewSubmenus = submenus.filter( \":not(.ui-menu)\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} )\n\t\t\t.each( function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev(),\n\t\t\t\t\tsubmenuCaret = $( \"<span>\" ).data( \"ui-menu-submenu-caret\", true );\n\n\t\t\t\tthat._addClass( submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon );\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCaret );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t} );\n\n\t\tthis._addClass( newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\" );\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each( function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\tthat._addClass( item, \"ui-menu-divider\", \"ui-widget-content\" );\n\t\t\t}\n\t\t} );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tnewItems = items.not( \".ui-menu-item, .ui-menu-divider\" );\n\t\tnewWrappers = newItems.children()\n\t\t\t.not( \".ui-menu\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.attr( {\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t} );\n\t\tthis._addClass( newItems, \"ui-menu-item\" )\n\t\t\t._addClass( newWrappers, \"ui-menu-item-wrapper\" );\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icons = this.element.find( \".ui-menu-icon\" );\n\t\t\tthis._removeClass( icons, null, this.options.icons.submenu )\n\t\t\t\t._addClass( icons, null, value.submenu );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", String( value ) );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused, activeParent;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\n\t\tfocused = this.active.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( focused, null, \"ui-state-active\" );\n\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tactiveParent = this.active\n\t\t\t.parent()\n\t\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t\t\t.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( activeParent, null, \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay( function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening( nested );\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[ 0 ], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[ 0 ], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._removeClass( this.active.children( \".ui-menu-item-wrapper\" ),\n\t\t\tnull, \"ui-state-active\" );\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t\tthis.active = null;\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the caret icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend( {\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all\n\t\t\t// sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\n\t\t\t// Work around active item staying active after menu is blurred\n\t\t\tthis._removeClass( currentMenu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu.find( \".ui-menu\" )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t\t.find( this.options.items )\n\t\t\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay( function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t} );\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function( character ) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t\t\t.filter( function() {\n\t\t\t\t\t\treturn regex.test(\n\t\t\t\t\t\t\t$.trim( $( this ).children( \".ui-menu-item-wrapper\" ).text() ) );\n\t\t\t\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Autocomplete 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Autocomplete\n//>>group: Widgets\n//>>description: Lists suggested words as the user is typing.\n//>>docs: http://api.jqueryui.com/autocomplete/\n//>>demos: http://jqueryui.com/autocomplete/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/autocomplete.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\t// Textareas are always multi-line\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\tthis.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis._addClass( \"ui-autocomplete-input\" );\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t} );\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu( {\n\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t} )\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._addClass( this.menu.element, \"ui-autocomplete\", \"ui-front\" );\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\n\t\t\t\t\t// Support: IE 8 only\n\t\t\t\t\t// Right clicking a menu item or selecting text from the menu items will\n\t\t\t\t\t// result in focus moving out of the input. However, we've already received\n\t\t\t\t\t// and ignored the blur event because of the cancelBlur flag set above. So\n\t\t\t\t\t// we restore focus to ensure that the menu closes properly based on the user's\n\t\t\t\t\t// next actions.\n\t\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && $.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// Only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t} );\n\n\t\tthis.liveRegion = $( \"<div>\", {\n\t\t\trole: \"status\",\n\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\"aria-relevant\": \"additions\"\n\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isEventTargetInWidget: function( event ) {\n\t\tvar menuElement = this.menu.element[ 0 ];\n\n\t\treturn event.target === this.element[ 0 ] ||\n\t\t\tevent.target === menuElement ||\n\t\t\t$.contains( menuElement, event.target );\n\t},\n\n\t_closeOnClickOutside: function( event ) {\n\t\tif ( !this._isEventTargetInWidget( event ) ) {\n\t\t\tthis.close();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax( {\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay( function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// Always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis._addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy( function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis._removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\n\t\t// Remove the handler that closes the menu on outside clicks\n\t\tthis._off( this.document, \"mousedown\" );\n\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// Size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend( {\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\n\t\t// Listen for interactions outside of the widget (#6642)\n\t\tthis._on( this.document, {\n\t\t\tmousedown: \"_closeOnClickOutside\"\n\t\t} );\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<div>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// Prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t// Support: Chrome <=50\n\t// We should be able to just use this.element.prop( \"isContentEditable\" )\n\t// but hidden elements always report false in Chrome.\n\t// https://code.google.com/p/chromium/issues/detail?id=313082\n\t_isContentEditable: function( element ) {\n\t\tif ( !element.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar editable = element.prop( \"contentEditable\" );\n\n\t\tif ( editable === \"inherit\" ) {\n\t\t  return this._isContentEditable( element.parent() );\n\t\t}\n\n\t\treturn editable === \"true\";\n\t}\n} );\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t} );\n\t}\n} );\n\n// Live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n} );\n\nvar widgetsAutocomplete = $.ui.autocomplete;\n\n\n/*!\n * jQuery UI Controlgroup 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Controlgroup\n//>>group: Widgets\n//>>description: Visually groups form control widgets\n//>>docs: http://api.jqueryui.com/controlgroup/\n//>>demos: http://jqueryui.com/controlgroup/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/controlgroup.css\n//>>css.theme: ../../themes/base/theme.css\n\n\nvar controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\n\nvar widgetsControlgroup = $.widget( \"ui.controlgroup\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdirection: \"horizontal\",\n\t\tdisabled: null,\n\t\tonlyVisible: true,\n\t\titems: {\n\t\t\t\"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\n\t\t\t\"controlgroupLabel\": \".ui-controlgroup-label\",\n\t\t\t\"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\n\t\t\t\"selectmenu\": \"select\",\n\t\t\t\"spinner\": \".ui-spinner-input\"\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._enhance();\n\t},\n\n\t// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\n\t_enhance: function() {\n\t\tthis.element.attr( \"role\", \"toolbar\" );\n\t\tthis.refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis._callChildMethod( \"destroy\" );\n\t\tthis.childWidgets.removeData( \"ui-controlgroup-data\" );\n\t\tthis.element.removeAttr( \"role\" );\n\t\tif ( this.options.items.controlgroupLabel ) {\n\t\t\tthis.element\n\t\t\t\t.find( this.options.items.controlgroupLabel )\n\t\t\t\t.find( \".ui-controlgroup-label-contents\" )\n\t\t\t\t.contents().unwrap();\n\t\t}\n\t},\n\n\t_initWidgets: function() {\n\t\tvar that = this,\n\t\t\tchildWidgets = [];\n\n\t\t// First we iterate over each of the items options\n\t\t$.each( this.options.items, function( widget, selector ) {\n\t\t\tvar labels;\n\t\t\tvar options = {};\n\n\t\t\t// Make sure the widget has a selector set\n\t\t\tif ( !selector ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( widget === \"controlgroupLabel\" ) {\n\t\t\t\tlabels = that.element.find( selector );\n\t\t\t\tlabels.each( function() {\n\t\t\t\t\tvar element = $( this );\n\n\t\t\t\t\tif ( element.children( \".ui-controlgroup-label-contents\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telement.contents()\n\t\t\t\t\t\t.wrapAll( \"<span class='ui-controlgroup-label-contents'></span>\" );\n\t\t\t\t} );\n\t\t\t\tthat._addClass( labels, null, \"ui-widget ui-widget-content ui-state-default\" );\n\t\t\t\tchildWidgets = childWidgets.concat( labels.get() );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure the widget actually exists\n\t\t\tif ( !$.fn[ widget ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We assume everything is in the middle to start because we can't determine\n\t\t\t// first / last elements until all enhancments are done.\n\t\t\tif ( that[ \"_\" + widget + \"Options\" ] ) {\n\t\t\t\toptions = that[ \"_\" + widget + \"Options\" ]( \"middle\" );\n\t\t\t} else {\n\t\t\t\toptions = { classes: {} };\n\t\t\t}\n\n\t\t\t// Find instances of this widget inside controlgroup and init them\n\t\t\tthat.element\n\t\t\t\t.find( selector )\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tvar instance = element[ widget ]( \"instance\" );\n\n\t\t\t\t\t// We need to clone the default options for this type of widget to avoid\n\t\t\t\t\t// polluting the variable options which has a wider scope than a single widget.\n\t\t\t\t\tvar instanceOptions = $.widget.extend( {}, options );\n\n\t\t\t\t\t// If the button is the child of a spinner ignore it\n\t\t\t\t\t// TODO: Find a more generic solution\n\t\t\t\t\tif ( widget === \"button\" && element.parent( \".ui-spinner\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create the widget if it doesn't exist\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\tinstance = element[ widget ]()[ widget ]( \"instance\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstanceOptions.classes =\n\t\t\t\t\t\t\tthat._resolveClassesValues( instanceOptions.classes, instance );\n\t\t\t\t\t}\n\t\t\t\t\telement[ widget ]( instanceOptions );\n\n\t\t\t\t\t// Store an instance of the controlgroup to be able to reference\n\t\t\t\t\t// from the outermost element for changing options and refresh\n\t\t\t\t\tvar widgetElement = element[ widget ]( \"widget\" );\n\t\t\t\t\t$.data( widgetElement[ 0 ], \"ui-controlgroup-data\",\n\t\t\t\t\t\tinstance ? instance : element[ widget ]( \"instance\" ) );\n\n\t\t\t\t\tchildWidgets.push( widgetElement[ 0 ] );\n\t\t\t\t} );\n\t\t} );\n\n\t\tthis.childWidgets = $( $.unique( childWidgets ) );\n\t\tthis._addClass( this.childWidgets, \"ui-controlgroup-item\" );\n\t},\n\n\t_callChildMethod: function( method ) {\n\t\tthis.childWidgets.each( function() {\n\t\t\tvar element = $( this ),\n\t\t\t\tdata = element.data( \"ui-controlgroup-data\" );\n\t\t\tif ( data && data[ method ] ) {\n\t\t\t\tdata[ method ]();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_updateCornerClass: function( element, position ) {\n\t\tvar remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\n\t\tvar add = this._buildSimpleOptions( position, \"label\" ).classes.label;\n\n\t\tthis._removeClass( element, null, remove );\n\t\tthis._addClass( element, null, add );\n\t},\n\n\t_buildSimpleOptions: function( position, key ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\tvar result = {\n\t\t\tclasses: {}\n\t\t};\n\t\tresult.classes[ key ] = {\n\t\t\t\"middle\": \"\",\n\t\t\t\"first\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" ),\n\t\t\t\"last\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" ),\n\t\t\t\"only\": \"ui-corner-all\"\n\t\t}[ position ];\n\n\t\treturn result;\n\t},\n\n\t_spinnerOptions: function( position ) {\n\t\tvar options = this._buildSimpleOptions( position, \"ui-spinner\" );\n\n\t\toptions.classes[ \"ui-spinner-up\" ] = \"\";\n\t\toptions.classes[ \"ui-spinner-down\" ] = \"\";\n\n\t\treturn options;\n\t},\n\n\t_buttonOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-button\" );\n\t},\n\n\t_checkboxradioOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-checkboxradio-label\" );\n\t},\n\n\t_selectmenuOptions: function( position ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\treturn {\n\t\t\twidth: direction ? \"auto\" : false,\n\t\t\tclasses: {\n\t\t\t\tmiddle: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"\"\n\t\t\t\t},\n\t\t\t\tfirst: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-\" + ( direction ? \"top\" : \"tl\" ),\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" )\n\t\t\t\t},\n\t\t\t\tlast: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" )\n\t\t\t\t},\n\t\t\t\tonly: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\n\t\t\t\t}\n\n\t\t\t}[ position ]\n\t\t};\n\t},\n\n\t_resolveClassesValues: function( classes, instance ) {\n\t\tvar result = {};\n\t\t$.each( classes, function( key ) {\n\t\t\tvar current = instance.options.classes[ key ] || \"\";\n\t\t\tcurrent = $.trim( current.replace( controlgroupCornerRegex, \"\" ) );\n\t\t\tresult[ key ] = ( current + \" \" + classes[ key ] ).replace( /\\s+/g, \" \" );\n\t\t} );\n\t\treturn result;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"direction\" ) {\n\t\t\tthis._removeClass( \"ui-controlgroup-\" + this.options.direction );\n\t\t}\n\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._callChildMethod( value ? \"disable\" : \"enable\" );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refresh();\n\t},\n\n\trefresh: function() {\n\t\tvar children,\n\t\t\tthat = this;\n\n\t\tthis._addClass( \"ui-controlgroup ui-controlgroup-\" + this.options.direction );\n\n\t\tif ( this.options.direction === \"horizontal\" ) {\n\t\t\tthis._addClass( null, \"ui-helper-clearfix\" );\n\t\t}\n\t\tthis._initWidgets();\n\n\t\tchildren = this.childWidgets;\n\n\t\t// We filter here because we need to track all childWidgets not just the visible ones\n\t\tif ( this.options.onlyVisible ) {\n\t\t\tchildren = children.filter( \":visible\" );\n\t\t}\n\n\t\tif ( children.length ) {\n\n\t\t\t// We do this last because we need to make sure all enhancment is done\n\t\t\t// before determining first and last\n\t\t\t$.each( [ \"first\", \"last\" ], function( index, value ) {\n\t\t\t\tvar instance = children[ value ]().data( \"ui-controlgroup-data\" );\n\n\t\t\t\tif ( instance && that[ \"_\" + instance.widgetName + \"Options\" ] ) {\n\t\t\t\t\tvar options = that[ \"_\" + instance.widgetName + \"Options\" ](\n\t\t\t\t\t\tchildren.length === 1 ? \"only\" : value\n\t\t\t\t\t);\n\t\t\t\t\toptions.classes = that._resolveClassesValues( options.classes, instance );\n\t\t\t\t\tinstance.element[ instance.widgetName ]( options );\n\t\t\t\t} else {\n\t\t\t\t\tthat._updateCornerClass( children[ value ](), value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Finally call the refresh method on each of the child widgets.\n\t\t\tthis._callChildMethod( \"refresh\" );\n\t\t}\n\t}\n} );\n\n/*!\n * jQuery UI Checkboxradio 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Checkboxradio\n//>>group: Widgets\n//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\n//>>docs: http://api.jqueryui.com/checkboxradio/\n//>>demos: http://jqueryui.com/checkboxradio/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.structure: ../../themes/base/checkboxradio.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.checkboxradio\", [ $.ui.formResetMixin, {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tdisabled: null,\n\t\tlabel: null,\n\t\ticon: true,\n\t\tclasses: {\n\t\t\t\"ui-checkboxradio-label\": \"ui-corner-all\",\n\t\t\t\"ui-checkboxradio-icon\": \"ui-corner-all\"\n\t\t}\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled, labels;\n\t\tvar that = this;\n\t\tvar options = this._super() || {};\n\n\t\t// We read the type here, because it makes more sense to throw a element type error first,\n\t\t// rather then the error for lack of a label. Often if its the wrong type, it\n\t\t// won't have a label (e.g. calling on a div, btn, etc)\n\t\tthis._readType();\n\n\t\tlabels = this.element.labels();\n\n\t\t// If there are multiple labels, use the last one\n\t\tthis.label = $( labels[ labels.length - 1 ] );\n\t\tif ( !this.label.length ) {\n\t\t\t$.error( \"No label found for checkboxradio widget\" );\n\t\t}\n\n\t\tthis.originalLabel = \"\";\n\n\t\t// We need to get the label text but this may also need to make sure it does not contain the\n\t\t// input itself.\n\t\tthis.label.contents().not( this.element[ 0 ] ).each( function() {\n\n\t\t\t// The label contents could be text, html, or a mix. We concat each element to get a\n\t\t\t// string representation of the label, without the input as part of it.\n\t\t\tthat.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;\n\t\t} );\n\n\t\t// Set the label option if we found label text\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\n\t\tthis._bindFormResetHandler();\n\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled;\n\t\t}\n\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._addClass( \"ui-checkboxradio\", \"ui-helper-hidden-accessible\" );\n\t\tthis._addClass( this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\" );\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-radio-label\" );\n\t\t}\n\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tthis._updateLabel();\n\t\t} else if ( this.originalLabel ) {\n\t\t\tthis.options.label = this.originalLabel;\n\t\t}\n\n\t\tthis._enhance();\n\n\t\tif ( checked ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\tif ( this.icon ) {\n\t\t\t\tthis._addClass( this.icon, null, \"ui-state-hover\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._on( {\n\t\t\tchange: \"_toggleClasses\",\n\t\t\tfocus: function() {\n\t\t\t\tthis._addClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis._removeClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_readType: function() {\n\t\tvar nodeName = this.element[ 0 ].nodeName.toLowerCase();\n\t\tthis.type = this.element[ 0 ].type;\n\t\tif ( nodeName !== \"input\" || !/radio|checkbox/.test( this.type ) ) {\n\t\t\t$.error( \"Can't create checkboxradio on element.nodeName=\" + nodeName +\n\t\t\t\t\" and element.type=\" + this.type );\n\t\t}\n\t},\n\n\t// Support jQuery Mobile enhanced option\n\t_enhance: function() {\n\t\tthis._updateIcon( this.element[ 0 ].checked );\n\t},\n\n\twidget: function() {\n\t\treturn this.label;\n\t},\n\n\t_getRadioGroup: function() {\n\t\tvar group;\n\t\tvar name = this.element[ 0 ].name;\n\t\tvar nameSelector = \"input[name='\" + $.ui.escapeSelector( name ) + \"']\";\n\n\t\tif ( !name ) {\n\t\t\treturn $( [] );\n\t\t}\n\n\t\tif ( this.form.length ) {\n\t\t\tgroup = $( this.form[ 0 ].elements ).filter( nameSelector );\n\t\t} else {\n\n\t\t\t// Not inside a form, check all inputs that also are not inside a form\n\t\t\tgroup = $( nameSelector ).filter( function() {\n\t\t\t\treturn $( this ).form().length === 0;\n\t\t\t} );\n\t\t}\n\n\t\treturn group.not( this.element );\n\t},\n\n\t_toggleClasses: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\n\t\tif ( this.options.icon && this.type === \"checkbox\" ) {\n\t\t\tthis._toggleClass( this.icon, null, \"ui-icon-check ui-state-checked\", checked )\n\t\t\t\t._toggleClass( this.icon, null, \"ui-icon-blank\", !checked );\n\t\t}\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._getRadioGroup()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar instance = $( this ).checkboxradio( \"instance\" );\n\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstance._removeClass( instance.label,\n\t\t\t\t\t\t\t\"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis._unbindFormResetHandler();\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\t// We don't allow the value to be set to nothing\n\t\tif ( key === \"label\" && !value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( this.label, null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\n\t\t\t// Don't refresh when setting disabled\n\t\t\treturn;\n\t\t}\n\t\tthis.refresh();\n\t},\n\n\t_updateIcon: function( checked ) {\n\t\tvar toAdd = \"ui-icon ui-icon-background \";\n\n\t\tif ( this.options.icon ) {\n\t\t\tif ( !this.icon ) {\n\t\t\t\tthis.icon = $( \"<span>\" );\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-checkboxradio-icon-space\" );\n\t\t\t}\n\n\t\t\tif ( this.type === \"checkbox\" ) {\n\t\t\t\ttoAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\n\t\t\t\tthis._removeClass( this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\" );\n\t\t\t} else {\n\t\t\t\ttoAdd += \"ui-icon-blank\";\n\t\t\t}\n\t\t\tthis._addClass( this.icon, \"ui-checkboxradio-icon\", toAdd );\n\t\t\tif ( !checked ) {\n\t\t\t\tthis._removeClass( this.icon, null, \"ui-icon-check ui-state-checked\" );\n\t\t\t}\n\t\t\tthis.icon.prependTo( this.label ).after( this.iconSpace );\n\t\t} else if ( this.icon !== undefined ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t\tdelete this.icon;\n\t\t}\n\t},\n\n\t_updateLabel: function() {\n\n\t\t// Remove the contents of the label ( minus the icon, icon space, and input )\n\t\tvar contents = this.label.contents().not( this.element[ 0 ] );\n\t\tif ( this.icon ) {\n\t\t\tcontents = contents.not( this.icon[ 0 ] );\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tcontents = contents.not( this.iconSpace[ 0 ] );\n\t\t}\n\t\tcontents.remove();\n\n\t\tthis.label.append( this.options.label );\n\t},\n\n\trefresh: function() {\n\t\tvar checked = this.element[ 0 ].checked,\n\t\t\tisDisabled = this.element[ 0 ].disabled;\n\n\t\tthis._updateIcon( checked );\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\t\tif ( this.options.label !== null ) {\n\t\t\tthis._updateLabel();\n\t\t}\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { \"disabled\": isDisabled } );\n\t\t}\n\t}\n\n} ] );\n\nvar widgetsCheckboxradio = $.ui.checkboxradio;\n\n\n/*!\n * jQuery UI Button 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Button\n//>>group: Widgets\n//>>description: Enhances a form with themeable buttons.\n//>>docs: http://api.jqueryui.com/button/\n//>>demos: http://jqueryui.com/button/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.button\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-button\": \"ui-corner-all\"\n\t\t},\n\t\tdisabled: null,\n\t\ticon: null,\n\t\ticonPosition: \"beginning\",\n\t\tlabel: null,\n\t\tshowLabel: true\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled,\n\n\t\t\t// This is to support cases like in jQuery Mobile where the base widget does have\n\t\t\t// an implementation of _getCreateOptions\n\t\t\toptions = this._super() || {};\n\n\t\tthis.isInput = this.element.is( \"input\" );\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\n\t\tthis.originalLabel = this.isInput ? this.element.val() : this.element.html();\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tif ( !this.option.showLabel & !this.options.icon ) {\n\t\t\tthis.options.showLabel = true;\n\t\t}\n\n\t\t// We have to check the option again here even though we did in _getCreateOptions,\n\t\t// because null may have been passed on init which would override what was set in\n\t\t// _getCreateOptions\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled || false;\n\t\t}\n\n\t\tthis.hasTitle = !!this.element.attr( \"title\" );\n\n\t\t// Check to see if the label needs to be set or if its already correct\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t} else {\n\t\t\t\tthis.element.html( this.options.label );\n\t\t\t}\n\t\t}\n\t\tthis._addClass( \"ui-button\", \"ui-widget\" );\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._enhance();\n\n\t\tif ( this.element.is( \"a\" ) ) {\n\t\t\tthis._on( {\n\t\t\t\t\"keyup\": function( event ) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: PhantomJS <= 1.9, IE 8 Only\n\t\t\t\t\t\t// If a native click is available use it so we actually cause navigation\n\t\t\t\t\t\t// otherwise just trigger a click event\n\t\t\t\t\t\tif ( this.element[ 0 ].click ) {\n\t\t\t\t\t\t\tthis.element[ 0 ].click();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.element.trigger( \"click\" );\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\t},\n\n\t_enhance: function() {\n\t\tif ( !this.element.is( \"button\" ) ) {\n\t\t\tthis.element.attr( \"role\", \"button\" );\n\t\t}\n\n\t\tif ( this.options.icon ) {\n\t\t\tthis._updateIcon( \"icon\", this.options.icon );\n\t\t\tthis._updateTooltip();\n\t\t}\n\t},\n\n\t_updateTooltip: function() {\n\t\tthis.title = this.element.attr( \"title\" );\n\n\t\tif ( !this.options.showLabel && !this.title ) {\n\t\t\tthis.element.attr( \"title\", this.options.label );\n\t\t}\n\t},\n\n\t_updateIcon: function( option, value ) {\n\t\tvar icon = option !== \"iconPosition\",\n\t\t\tposition = icon ? this.options.iconPosition : value,\n\t\t\tdisplayBlock = position === \"top\" || position === \"bottom\";\n\n\t\t// Create icon\n\t\tif ( !this.icon ) {\n\t\t\tthis.icon = $( \"<span>\" );\n\n\t\t\tthis._addClass( this.icon, \"ui-button-icon\", \"ui-icon\" );\n\n\t\t\tif ( !this.options.showLabel ) {\n\t\t\t\tthis._addClass( \"ui-button-icon-only\" );\n\t\t\t}\n\t\t} else if ( icon ) {\n\n\t\t\t// If we are updating the icon remove the old icon class\n\t\t\tthis._removeClass( this.icon, null, this.options.icon );\n\t\t}\n\n\t\t// If we are updating the icon add the new icon class\n\t\tif ( icon ) {\n\t\t\tthis._addClass( this.icon, null, value );\n\t\t}\n\n\t\tthis._attachIcon( position );\n\n\t\t// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\n\t\t// the iconSpace if there is one.\n\t\tif ( displayBlock ) {\n\t\t\tthis._addClass( this.icon, null, \"ui-widget-icon-block\" );\n\t\t\tif ( this.iconSpace ) {\n\t\t\t\tthis.iconSpace.remove();\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Position is beginning or end so remove the ui-widget-icon-block class and add the\n\t\t\t// space if it does not exist\n\t\t\tif ( !this.iconSpace ) {\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-button-icon-space\" );\n\t\t\t}\n\t\t\tthis._removeClass( this.icon, null, \"ui-wiget-icon-block\" );\n\t\t\tthis._attachIconSpace( position );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.element.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_attachIconSpace: function( iconPosition ) {\n\t\tthis.icon[ /^(?:end|bottom)/.test( iconPosition ) ? \"before\" : \"after\" ]( this.iconSpace );\n\t},\n\n\t_attachIcon: function( iconPosition ) {\n\t\tthis.element[ /^(?:end|bottom)/.test( iconPosition ) ? \"append\" : \"prepend\" ]( this.icon );\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar newShowLabel = options.showLabel === undefined ?\n\t\t\t\tthis.options.showLabel :\n\t\t\t\toptions.showLabel,\n\t\t\tnewIcon = options.icon === undefined ? this.options.icon : options.icon;\n\n\t\tif ( !newShowLabel && !newIcon ) {\n\t\t\toptions.showLabel = true;\n\t\t}\n\t\tthis._super( options );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icon\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis._updateIcon( key, value );\n\t\t\t} else if ( this.icon ) {\n\t\t\t\tthis.icon.remove();\n\t\t\t\tif ( this.iconSpace ) {\n\t\t\t\t\tthis.iconSpace.remove();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"iconPosition\" ) {\n\t\t\tthis._updateIcon( key, value );\n\t\t}\n\n\t\t// Make sure we can't end up with a button that has neither text nor icon\n\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis._toggleClass( \"ui-button-icon-only\", null, !value );\n\t\t\t\tthis._updateTooltip();\n\t\t}\n\n\t\tif ( key === \"label\" ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( value );\n\t\t\t} else {\n\n\t\t\t\t// If there is an icon, append it, else nothing then append the value\n\t\t\t\t// this avoids removal of the icon when setting label text\n\t\t\t\tthis.element.html( value );\n\t\t\t\tif ( this.icon ) {\n\t\t\t\t\tthis._attachIcon( this.options.iconPosition );\n\t\t\t\t\tthis._attachIconSpace( this.options.iconPosition );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.blur();\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\n\t\t// Make sure to only check disabled if its an element that supports this otherwise\n\t\t// check for the disabled class to determine state\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ?\n\t\t\tthis.element[ 0 ].disabled : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { disabled: isDisabled } );\n\t\t}\n\n\t\tthis._updateTooltip();\n\t}\n} );\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// Text and Icons options\n\t$.widget( \"ui.button\", $.ui.button, {\n\t\toptions: {\n\t\t\ttext: true,\n\t\t\ticons: {\n\t\t\t\tprimary: null,\n\t\t\t\tsecondary: null\n\t\t\t}\n\t\t},\n\n\t\t_create: function() {\n\t\t\tif ( this.options.showLabel && !this.options.text ) {\n\t\t\t\tthis.options.showLabel = this.options.text;\n\t\t\t}\n\t\t\tif ( !this.options.showLabel && this.options.text ) {\n\t\t\t\tthis.options.text = this.options.showLabel;\n\t\t\t}\n\t\t\tif ( !this.options.icon && ( this.options.icons.primary ||\n\t\t\t\t\tthis.options.icons.secondary ) ) {\n\t\t\t\tif ( this.options.icons.primary ) {\n\t\t\t\t\tthis.options.icon = this.options.icons.primary;\n\t\t\t\t} else {\n\t\t\t\t\tthis.options.icon = this.options.icons.secondary;\n\t\t\t\t\tthis.options.iconPosition = \"end\";\n\t\t\t\t}\n\t\t\t} else if ( this.options.icon ) {\n\t\t\t\tthis.options.icons.primary = this.options.icon;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"text\" ) {\n\t\t\t\tthis._super( \"showLabel\", value );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis.options.text = value;\n\t\t\t}\n\t\t\tif ( key === \"icon\" ) {\n\t\t\t\tthis.options.icons.primary = value;\n\t\t\t}\n\t\t\tif ( key === \"icons\" ) {\n\t\t\t\tif ( value.primary ) {\n\t\t\t\t\tthis._super( \"icon\", value.primary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"beginning\" );\n\t\t\t\t} else if ( value.secondary ) {\n\t\t\t\t\tthis._super( \"icon\", value.secondary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"end\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n\n\t$.fn.button = ( function( orig ) {\n\t\treturn function() {\n\t\t\tif ( !this.length || ( this.length && this[ 0 ].tagName !== \"INPUT\" ) ||\n\t\t\t\t\t( this.length && this[ 0 ].tagName === \"INPUT\" && (\n\t\t\t\t\t\tthis.attr( \"type\" ) !== \"checkbox\" && this.attr( \"type\" ) !== \"radio\"\n\t\t\t\t\t) ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t}\n\t\t\tif ( !$.ui.checkboxradio ) {\n\t\t\t\t$.error( \"Checkboxradio widget missing\" );\n\t\t\t}\n\t\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.checkboxradio( {\n\t\t\t\t\t\"icon\": false\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this.checkboxradio.apply( this, arguments );\n\t\t};\n\t} )( $.fn.button );\n\n\t$.fn.buttonset = function() {\n\t\tif ( !$.ui.controlgroup ) {\n\t\t\t$.error( \"Controlgroup widget missing\" );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" && arguments[ 2 ] ) {\n\t\t\treturn this.controlgroup.apply( this,\n\t\t\t\t[ arguments[ 0 ], \"items.button\", arguments[ 2 ] ] );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" ) {\n\t\t\treturn this.controlgroup.apply( this, [ arguments[ 0 ], \"items.button\" ] );\n\t\t}\n\t\tif ( typeof arguments[ 0 ] === \"object\" && arguments[ 0 ].items ) {\n\t\t\targuments[ 0 ].items = {\n\t\t\t\tbutton: arguments[ 0 ].items\n\t\t\t};\n\t\t}\n\t\treturn this.controlgroup.apply( this, arguments );\n\t};\n}\n\nvar widgetsButton = $.ui.button;\n\n\n// jscs:disable maximumLineLength\n/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */\n/*!\n * jQuery UI Datepicker 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Datepicker\n//>>group: Widgets\n//>>description: Displays a calendar from an input or inline for selecting dates.\n//>>docs: http://api.jqueryui.com/datepicker/\n//>>demos: http://jqueryui.com/datepicker/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/datepicker.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.extend( $.ui, { datepicker: { version: \"1.12.1\" } } );\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[ \"\" ] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [ \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\" ], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ], // For formatting\n\t\tdayNames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ], // For formatting\n\t\tdayNamesShort: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ], // For formatting\n\t\tdayNamesMin: [ \"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\" ], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend( this._defaults, this.regional[ \"\" ] );\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ] );\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover( $( \"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) );\n}\n\n$.extend( Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param  settings  object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function( settings ) {\n\t\tdatepicker_extendRemove( this._defaults, settings || {} );\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t * @param  settings  object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function( target, settings ) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = ( nodeName === \"div\" || nodeName === \"span\" );\n\t\tif ( !target.id ) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst( $( target ), inline );\n\t\tinst.settings = $.extend( {}, settings || {} );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tthis._connectDatepicker( target, inst );\n\t\t} else if ( inline ) {\n\t\t\tthis._inlineDatepicker( target, inst );\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function( target, inline ) {\n\t\tvar id = target[ 0 ].id.replace( /([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\" ); // escape jQuery meta chars\n\t\treturn { id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: ( !inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover( $( \"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) ) ) };\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function( target, inst ) {\n\t\tvar input = $( target );\n\t\tinst.append = $( [] );\n\t\tinst.trigger = $( [] );\n\t\tif ( input.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments( input, inst );\n\t\tinput.addClass( this.markerClassName ).on( \"keydown\", this._doKeyDown ).\n\t\t\ton( \"keypress\", this._doKeyPress ).on( \"keyup\", this._doKeyUp );\n\t\tthis._autoSize( inst );\n\t\t$.data( target, \"datepicker\", inst );\n\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function( input, inst ) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get( inst, \"appendText\" ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\tif ( inst.append ) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif ( appendText ) {\n\t\t\tinst.append = $( \"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\" );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.append );\n\t\t}\n\n\t\tinput.off( \"focus\", this._showDatepicker );\n\n\t\tif ( inst.trigger ) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get( inst, \"showOn\" );\n\t\tif ( showOn === \"focus\" || showOn === \"both\" ) { // pop-up date picker when in the marked field\n\t\t\tinput.on( \"focus\", this._showDatepicker );\n\t\t}\n\t\tif ( showOn === \"button\" || showOn === \"both\" ) { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get( inst, \"buttonText\" );\n\t\t\tbuttonImage = this._get( inst, \"buttonImage\" );\n\t\t\tinst.trigger = $( this._get( inst, \"buttonImageOnly\" ) ?\n\t\t\t\t$( \"<img/>\" ).addClass( this._triggerClass ).\n\t\t\t\t\tattr( { src: buttonImage, alt: buttonText, title: buttonText } ) :\n\t\t\t\t$( \"<button type='button'></button>\" ).addClass( this._triggerClass ).\n\t\t\t\t\thtml( !buttonImage ? buttonText : $( \"<img/>\" ).attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.trigger );\n\t\t\tinst.trigger.on( \"click\", function() {\n\t\t\t\tif ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function( inst ) {\n\t\tif ( this._get( inst, \"autoSize\" ) && !inst.inline ) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date( 2009, 12 - 1, 20 ), // Ensure double digits\n\t\t\t\tdateFormat = this._get( inst, \"dateFormat\" );\n\n\t\t\tif ( dateFormat.match( /[DM]/ ) ) {\n\t\t\t\tfindMax = function( names ) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor ( i = 0; i < names.length; i++ ) {\n\t\t\t\t\t\tif ( names[ i ].length > max ) {\n\t\t\t\t\t\t\tmax = names[ i ].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\" ) ) ) );\n\t\t\t\tdate.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\" ) ) ) + 20 - date.getDay() );\n\t\t\t}\n\t\t\tinst.input.attr( \"size\", this._formatDate( inst, date ).length );\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function( target, inst ) {\n\t\tvar divSpan = $( target );\n\t\tif ( divSpan.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass( this.markerClassName ).append( inst.dpDiv );\n\t\t$.data( target, \"datepicker\", inst );\n\t\tthis._setDate( inst, this._getDefaultDate( inst ), true );\n\t\tthis._updateDatepicker( inst );\n\t\tthis._updateAlternate( inst );\n\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param  input element - ignored\n\t * @param  date\tstring or Date - the initial date to display\n\t * @param  onSelect  function - the function to call when a date is selected\n\t * @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t * @param  pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function( input, date, onSelect, settings, pos ) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif ( !inst ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $( \"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\" );\n\t\t\tthis._dialogInput.on( \"keydown\", this._doKeyDown );\n\t\t\t$( \"body\" ).append( this._dialogInput );\n\t\t\tinst = this._dialogInst = this._newInst( this._dialogInput, false );\n\t\t\tinst.settings = {};\n\t\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, settings || {} );\n\t\tdate = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );\n\t\tthis._dialogInput.val( date );\n\n\t\tthis._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );\n\t\tif ( !this._pos ) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];\n\t\t}\n\n\t\t// Move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css( \"left\", ( this._pos[ 0 ] + 20 ) + \"px\" ).css( \"top\", this._pos[ 1 ] + \"px\" );\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass( this._dialogClass );\n\t\tthis._showDatepicker( this._dialogInput[ 0 ] );\n\t\tif ( $.blockUI ) {\n\t\t\t$.blockUI( this.dpDiv );\n\t\t}\n\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function( target ) {\n\t\tvar nodeName,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData( target, \"datepicker\" );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass( this.markerClassName ).\n\t\t\t\toff( \"focus\", this._showDatepicker ).\n\t\t\t\toff( \"keydown\", this._doKeyDown ).\n\t\t\t\toff( \"keypress\", this._doKeyPress ).\n\t\t\t\toff( \"keyup\", this._doKeyUp );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\t$target.removeClass( this.markerClassName ).empty();\n\t\t}\n\n\t\tif ( datepicker_instActive === inst ) {\n\t\t\tdatepicker_instActive = null;\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = false; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"1.0\", cursor: \"\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().removeClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", false );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = true; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"0.5\", cursor: \"default\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().addClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", true );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t\tthis._disabledInputs[ this._disabledInputs.length ] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param  target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function( target ) {\n\t\tif ( !target ) {\n\t\t\treturn false;\n\t\t}\n\t\tfor ( var i = 0; i < this._disabledInputs.length; i++ ) {\n\t\t\tif ( this._disabledInputs[ i ] === target ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param  target  element - the target input field or division or span\n\t * @return  object - the associated instance data\n\t * @throws  error if a jQuery problem getting data\n\t */\n\t_getInst: function( target ) {\n\t\ttry {\n\t\t\treturn $.data( target, \"datepicker\" );\n\t\t}\n\t\tcatch ( err ) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t * @param  name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param  value   any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function( target, name, value ) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst( target );\n\n\t\tif ( arguments.length === 2 && typeof name === \"string\" ) {\n\t\t\treturn ( name === \"defaults\" ? $.extend( {}, $.datepicker._defaults ) :\n\t\t\t\t( inst ? ( name === \"all\" ? $.extend( {}, inst.settings ) :\n\t\t\t\tthis._get( inst, name ) ) : null ) );\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif ( typeof name === \"string\" ) {\n\t\t\tsettings = {};\n\t\t\tsettings[ name ] = value;\n\t\t}\n\n\t\tif ( inst ) {\n\t\t\tif ( this._curInst === inst ) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker( target, true );\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" );\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" );\n\t\t\tdatepicker_extendRemove( inst.settings, settings );\n\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {\n\t\t\t\tinst.settings.minDate = this._formatDate( inst, minDate );\n\t\t\t}\n\t\t\tif ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {\n\t\t\t\tinst.settings.maxDate = this._formatDate( inst, maxDate );\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker( target );\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker( target );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments( $( target ), inst );\n\t\t\tthis._autoSize( inst );\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateAlternate( inst );\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t// Change method deprecated\n\t_changeDatepicker: function( target, name, value ) {\n\t\tthis._optionDatepicker( target, name, value );\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function( target ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  date\tDate - the new date\n\t */\n\t_setDateDatepicker: function( target, date ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateDatepicker( inst );\n\t\t\tthis._updateAlternate( inst );\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function( target, noDefault ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst && !inst.inline ) {\n\t\t\tthis._setDateFromField( inst, noDefault );\n\t\t}\n\t\treturn ( inst ? this._getDate( inst ) : null );\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function( event ) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst( event.target ),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is( \".ui-datepicker-rtl\" );\n\n\t\tinst._keyEvent = true;\n\t\tif ( $.datepicker._datepickerShowing ) {\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $( \"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv );\n\t\t\t\t\t\tif ( sel[ 0 ] ) {\n\t\t\t\t\t\t\t$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get( inst, \"onSelect\" );\n\t\t\t\t\t\tif ( onSelect ) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate( inst );\n\n\t\t\t\t\t\t\t// Trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._clearDate( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, -7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, +7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker( this );\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif ( handled ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function( event ) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( $.datepicker._get( inst, \"constrainInput\" ) ) {\n\t\t\tchars = $.datepicker._possibleChars( $.datepicker._get( inst, \"dateFormat\" ) );\n\t\t\tchr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );\n\t\t\treturn event.ctrlKey || event.metaKey || ( chr < \" \" || !chars || chars.indexOf( chr ) > -1 );\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function( event ) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( inst.input.val() !== inst.lastVal ) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t( inst.input ? inst.input.val() : null ),\n\t\t\t\t\t$.datepicker._getFormatConfig( inst ) );\n\n\t\t\t\tif ( date ) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField( inst );\n\t\t\t\t\t$.datepicker._updateAlternate( inst );\n\t\t\t\t\t$.datepicker._updateDatepicker( inst );\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch ( err ) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param  input  element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function( input ) {\n\t\tinput = input.target || input;\n\t\tif ( input.nodeName.toLowerCase() !== \"input\" ) { // find from button/image trigger\n\t\t\tinput = $( \"input\", input.parentNode )[ 0 ];\n\t\t}\n\n\t\tif ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst( input );\n\t\tif ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {\n\t\t\t$.datepicker._curInst.dpDiv.stop( true, true );\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get( inst, \"beforeShow\" );\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};\n\t\tif ( beforeShowSettings === false ) {\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, beforeShowSettings );\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField( inst );\n\n\t\tif ( $.datepicker._inDialog ) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif ( !$.datepicker._pos ) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos( input );\n\t\t\t$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$( input ).parents().each( function() {\n\t\t\tisFixed |= $( this ).css( \"position\" ) === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t} );\n\n\t\toffset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };\n\t\t$.datepicker._pos = null;\n\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css( { position: \"absolute\", display: \"block\", top: \"-1000px\" } );\n\t\t$.datepicker._updateDatepicker( inst );\n\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset( inst, offset, isFixed );\n\t\tinst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : ( isFixed ? \"fixed\" : \"absolute\" ) ), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\" } );\n\n\t\tif ( !inst.inline ) {\n\t\t\tshowAnim = $.datepicker._get( inst, \"showAnim\" );\n\t\t\tduration = $.datepicker._get( inst, \"duration\" );\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ showAnim || \"show\" ]( showAnim ? duration : null );\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function( inst ) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append( this._generateHTML( inst ) );\n\t\tthis._attachHandlers( inst );\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tcols = numMonths[ 1 ],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass( \"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\" ).width( \"\" );\n\t\tif ( cols > 1 ) {\n\t\t\tinst.dpDiv.addClass( \"ui-datepicker-multi-\" + cols ).css( \"width\", ( width * cols ) + \"em\" );\n\t\t}\n\t\tinst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-multi\" );\n\t\tinst.dpDiv[ ( this._get( inst, \"isRTL\" ) ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-rtl\" );\n\n\t\tif ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.trigger( \"focus\" );\n\t\t}\n\n\t\t// Deffered render of the years select (to avoid flashes on Firefox)\n\t\tif ( inst.yearshtml ) {\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout( function() {\n\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif ( origyearshtml === inst.yearshtml && inst.yearshtml ) {\n\t\t\t\t\tinst.dpDiv.find( \"select.ui-datepicker-year:first\" ).replaceWith( inst.yearshtml );\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0 );\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function( inst, offset, isFixed ) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),\n\t\t\tviewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );\n\n\t\toffset.left -= ( this._get( inst, \"isRTL\" ) ? ( dpWidth - inputWidth ) : 0 );\n\t\toffset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;\n\t\toffset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;\n\n\t\t// Now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?\n\t\t\tMath.abs( offset.left + dpWidth - viewWidth ) : 0 );\n\t\toffset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?\n\t\t\tMath.abs( dpHeight + inputHeight ) : 0 );\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function( obj ) {\n\t\tvar position,\n\t\t\tinst = this._getInst( obj ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\twhile ( obj && ( obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {\n\t\t\tobj = obj[ isRTL ? \"previousSibling\" : \"nextSibling\" ];\n\t\t}\n\n\t\tposition = $( obj ).offset();\n\t\treturn [ position.left, position.top ];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param  input  element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function( input ) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif ( !inst || ( input && inst !== $.data( input, \"datepicker\" ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._datepickerShowing ) {\n\t\t\tshowAnim = this._get( inst, \"showAnim\" );\n\t\t\tduration = this._get( inst, \"duration\" );\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog( inst );\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration, postProcess );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ ( showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t( showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\" ) ) ]( ( showAnim ? duration : null ), postProcess );\n\t\t\t}\n\n\t\t\tif ( !showAnim ) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get( inst, \"onClose\" );\n\t\t\tif ( onClose ) {\n\t\t\t\tonClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : \"\" ), inst ] );\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif ( this._inDialog ) {\n\t\t\t\tthis._dialogInput.css( { position: \"absolute\", left: \"0\", top: \"-100px\" } );\n\t\t\t\tif ( $.blockUI ) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$( \"body\" ).append( this.dpDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function( inst ) {\n\t\tinst.dpDiv.removeClass( this._dialogClass ).off( \".ui-datepicker-calendar\" );\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function( event ) {\n\t\tif ( !$.datepicker._curInst ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $( event.target ),\n\t\t\tinst = $.datepicker._getInst( $target[ 0 ] );\n\n\t\tif ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents( \"#\" + $.datepicker._mainDivId ).length === 0 &&\n\t\t\t\t!$target.hasClass( $.datepicker.markerClassName ) &&\n\t\t\t\t!$target.closest( \".\" + $.datepicker._triggerClass ).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||\n\t\t\t( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function( id, offset, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate( inst, offset +\n\t\t\t( period === \"M\" ? this._get( inst, \"showCurrentAtPos\" ) : 0 ), // undo positioning\n\t\t\tperiod );\n\t\tthis._updateDatepicker( inst );\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function( id ) {\n\t\tvar date,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function( id, select, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tinst[ \"selected\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\tinst[ \"draw\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\t\tparseInt( select.options[ select.selectedIndex ].value, 10 );\n\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function( id, month, year, td ) {\n\t\tvar inst,\n\t\t\ttarget = $( id );\n\n\t\tif ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst( target[ 0 ] );\n\t\tinst.selectedDay = inst.currentDay = $( \"a\", td ).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate( id, this._formatDate( inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear ) );\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function( id ) {\n\t\tvar target = $( id );\n\t\tthis._selectDate( target, \"\" );\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function( id, dateStr ) {\n\t\tvar onSelect,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tdateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( dateStr );\n\t\t}\n\t\tthis._updateAlternate( inst );\n\n\t\tonSelect = this._get( inst, \"onSelect\" );\n\t\tif ( onSelect ) {\n\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback\n\t\t} else if ( inst.input ) {\n\t\t\tinst.input.trigger( \"change\" ); // fire the change event\n\t\t}\n\n\t\tif ( inst.inline ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[ 0 ];\n\t\t\tif ( typeof( inst.input[ 0 ] ) !== \"object\" ) {\n\t\t\t\tinst.input.trigger( \"focus\" ); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function( inst ) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get( inst, \"altField\" );\n\n\t\tif ( altField ) { // update alternate field too\n\t\t\taltFormat = this._get( inst, \"altFormat\" ) || this._get( inst, \"dateFormat\" );\n\t\t\tdate = this._getDate( inst );\n\t\t\tdateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );\n\t\t\t$( altField ).val( dateStr );\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param  date  Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function( date ) {\n\t\tvar day = date.getDay();\n\t\treturn [ ( day > 0 && day < 6 ), \"\" ];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param  date  Date - the date to get the week for\n\t * @return  number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function( date ) {\n\t\tvar time,\n\t\t\tcheckDate = new Date( date.getTime() );\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 ); // Compare with Jan 1\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param  format string - the expected format of the date\n\t * @param  value string - the date in the above format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff  number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function( format, value, settings ) {\n\t\tif ( format == null || value == null ) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = ( typeof value === \"object\" ? value.toString() : value + \"\" );\n\t\tif ( value === \"\" ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = ( typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function( match ) {\n\t\t\t\tvar isDoubled = lookAhead( match ),\n\t\t\t\t\tsize = ( match === \"@\" ? 14 : ( match === \"!\" ? 20 :\n\t\t\t\t\t( match === \"y\" && isDoubled ? 4 : ( match === \"o\" ? 3 : 2 ) ) ) ),\n\t\t\t\t\tminSize = ( match === \"y\" ? size : 1 ),\n\t\t\t\t\tdigits = new RegExp( \"^\\\\d{\" + minSize + \",\" + size + \"}\" ),\n\t\t\t\t\tnum = value.substring( iValue ).match( digits );\n\t\t\t\tif ( !num ) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[ 0 ].length;\n\t\t\t\treturn parseInt( num[ 0 ], 10 );\n\t\t\t},\n\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function( match, shortNames, longNames ) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {\n\t\t\t\t\t\treturn [ [ k, v ] ];\n\t\t\t\t\t} ).sort( function( a, b ) {\n\t\t\t\t\t\treturn -( a[ 1 ].length - b[ 1 ].length );\n\t\t\t\t\t} );\n\n\t\t\t\t$.each( names, function( i, pair ) {\n\t\t\t\t\tvar name = pair[ 1 ];\n\t\t\t\t\tif ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\t\tindex = pair[ 0 ];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber( \"d\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName( \"D\", dayNamesShort, dayNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber( \"o\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber( \"m\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName( \"M\", monthNamesShort, monthNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber( \"y\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date( getNumber( \"@\" ) );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date( ( getNumber( \"!\" ) - this._ticksTo1970 ) / 10000 );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( iValue < value.length ) {\n\t\t\textra = value.substr( iValue );\n\t\t\tif ( !/^\\s+/.test( extra ) ) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif ( year === -1 ) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if ( year < 100 ) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t( year <= shortYearCutoff ? 0 : -100 );\n\t\t}\n\n\t\tif ( doy > -1 ) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth( year, month - 1 );\n\t\t\t\tif ( day <= dim ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while ( true );\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust( new Date( year, month - 1, day ) );\n\t\tif ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +\n\t\tMath.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d  - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o  - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D  - day name short\n\t * DD - day name long\n\t * m  - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M  - month name short\n\t * MM - month name long\n\t * y  - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param  format string - the desired format of the date\n\t * @param  date Date - the date value to format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  string - the date in the above format\n\t */\n\tformatDate: function( format, date, settings ) {\n\t\tif ( !date ) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function( match, value, len ) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif ( lookAhead( match ) ) {\n\t\t\t\t\twhile ( num.length < len ) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function( match, value, shortNames, longNames ) {\n\t\t\t\treturn ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif ( date ) {\n\t\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\t\tif ( literal ) {\n\t\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber( \"d\", date.getDate(), 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName( \"D\", date.getDay(), dayNamesShort, dayNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber( \"o\",\n\t\t\t\t\t\t\t\tMath.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber( \"m\", date.getMonth() + 1, 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName( \"M\", date.getMonth(), monthNamesShort, monthNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += ( lookAhead( \"y\" ) ? date.getFullYear() :\n\t\t\t\t\t\t\t\t( date.getFullYear() % 100 < 10 ? \"0\" : \"\" ) + date.getFullYear() % 100 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function( format ) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function( inst, name ) {\n\t\treturn inst.settings[ name ] !== undefined ?\n\t\t\tinst.settings[ name ] : this._defaults[ name ];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function( inst, noDefault ) {\n\t\tif ( inst.input.val() === inst.lastVal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get( inst, \"dateFormat\" ),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate( inst ),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig( inst );\n\n\t\ttry {\n\t\t\tdate = this.parseDate( dateFormat, dates, settings ) || defaultDate;\n\t\t} catch ( event ) {\n\t\t\tdates = ( noDefault ? \"\" : dates );\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = ( dates ? date.getDate() : 0 );\n\t\tinst.currentMonth = ( dates ? date.getMonth() : 0 );\n\t\tinst.currentYear = ( dates ? date.getFullYear() : 0 );\n\t\tthis._adjustInstDate( inst );\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function( inst ) {\n\t\treturn this._restrictMinMax( inst,\n\t\t\tthis._determineDate( inst, this._get( inst, \"defaultDate\" ), new Date() ) );\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function( inst, date, defaultDate ) {\n\t\tvar offsetNumeric = function( offset ) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate( date.getDate() + offset );\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function( offset ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig( inst ) );\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = ( offset.toLowerCase().match( /^c/ ) ?\n\t\t\t\t\t$.datepicker._getDate( inst ) : null ) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec( offset );\n\n\t\t\t\twhile ( matches ) {\n\t\t\t\t\tswitch ( matches[ 2 ] || \"d\" ) {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec( offset );\n\t\t\t\t}\n\t\t\t\treturn new Date( year, month, day );\n\t\t\t},\n\t\t\tnewDate = ( date == null || date === \"\" ? defaultDate : ( typeof date === \"string\" ? offsetString( date ) :\n\t\t\t\t( typeof date === \"number\" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );\n\n\t\tnewDate = ( newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate );\n\t\tif ( newDate ) {\n\t\t\tnewDate.setHours( 0 );\n\t\t\tnewDate.setMinutes( 0 );\n\t\t\tnewDate.setSeconds( 0 );\n\t\t\tnewDate.setMilliseconds( 0 );\n\t\t}\n\t\treturn this._daylightSavingAdjust( newDate );\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param  date  (Date) the date to check\n\t * @return  (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function( date ) {\n\t\tif ( !date ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function( inst, date, noChange ) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t\tthis._adjustInstDate( inst );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( clear ? \"\" : this._formatDate( inst ) );\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function( inst ) {\n\t\tvar startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === \"\" ) ? null :\n\t\t\tthis._daylightSavingAdjust( new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function( inst ) {\n\t\tvar stepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find( \"[data-handler]\" ).map( function() {\n\t\t\tvar handler = {\n\t\t\t\tprev: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, -stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\tnext: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, +stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\thide: function() {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function() {\n\t\t\t\t\t$.datepicker._gotoToday( id );\n\t\t\t\t},\n\t\t\t\tselectDay: function() {\n\t\t\t\t\t$.datepicker._selectDay( id, +this.getAttribute( \"data-month\" ), +this.getAttribute( \"data-year\" ), this );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"M\" );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"Y\" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$( this ).on( this.getAttribute( \"data-event\" ), handler[ this.getAttribute( \"data-handler\" ) ] );\n\t\t} );\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function( inst ) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time\n\t\t\tisRTL = this._get( inst, \"isRTL\" ),\n\t\t\tshowButtonPanel = this._get( inst, \"showButtonPanel\" ),\n\t\t\thideIfNoPrevNext = this._get( inst, \"hideIfNoPrevNext\" ),\n\t\t\tnavigationAsDateFormat = this._get( inst, \"navigationAsDateFormat\" ),\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tshowCurrentAtPos = this._get( inst, \"showCurrentAtPos\" ),\n\t\t\tstepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tisMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),\n\t\t\tcurrentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :\n\t\t\t\tnew Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif ( drawMonth < 0 ) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif ( maxDate ) {\n\t\t\tmaxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );\n\t\t\tmaxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );\n\t\t\twhile ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif ( drawMonth < 0 ) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get( inst, \"prevText\" );\n\t\tprevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tprev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" ) );\n\n\t\tnextText = this._get( inst, \"nextText\" );\n\t\tnextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tnext = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" ) );\n\n\t\tcurrentText = this._get( inst, \"currentText\" );\n\t\tgotoDate = ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ? currentDate : today );\n\t\tcurrentText = ( !navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );\n\n\t\tcontrols = ( !inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get( inst, \"closeText\" ) + \"</button>\" : \"\" );\n\n\t\tbuttonPanel = ( showButtonPanel ) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + ( isRTL ? controls : \"\" ) +\n\t\t\t( this._isInRange( inst, gotoDate ) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\" ) + ( isRTL ? \"\" : controls ) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt( this._get( inst, \"firstDay\" ), 10 );\n\t\tfirstDay = ( isNaN( firstDay ) ? 0 : firstDay );\n\n\t\tshowWeek = this._get( inst, \"showWeek\" );\n\t\tdayNames = this._get( inst, \"dayNames\" );\n\t\tdayNamesMin = this._get( inst, \"dayNamesMin\" );\n\t\tmonthNames = this._get( inst, \"monthNames\" );\n\t\tmonthNamesShort = this._get( inst, \"monthNamesShort\" );\n\t\tbeforeShowDay = this._get( inst, \"beforeShowDay\" );\n\t\tshowOtherMonths = this._get( inst, \"showOtherMonths\" );\n\t\tselectOtherMonths = this._get( inst, \"selectOtherMonths\" );\n\t\tdefaultDate = this._getDefaultDate( inst );\n\t\thtml = \"\";\n\n\t\tfor ( row = 0; row < numMonths[ 0 ]; row++ ) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor ( col = 0; col < numMonths[ 1 ]; col++ ) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif ( isMultiMonth ) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif ( numMonths[ 1 ] > 1 ) {\n\t\t\t\t\t\tswitch ( col ) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"right\" : \"left\" ); break;\n\t\t\t\t\t\t\tcase numMonths[ 1 ] - 1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"left\" : \"right\" ); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : \"\" ) +\n\t\t\t\t\t( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : \"\" ) +\n\t\t\t\t\tthis._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = ( showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get( inst, \"weekHeader\" ) + \"</th>\" : \"\" );\n\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // days of the week\n\t\t\t\t\tday = ( dow + firstDay ) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\" ) + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[ day ] + \"'>\" + dayNamesMin[ day ] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth( drawYear, drawMonth );\n\t\t\t\tif ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {\n\t\t\t\t\tinst.selectedDay = Math.min( inst.selectedDay, daysInMonth );\n\t\t\t\t}\n\t\t\t\tleadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;\n\t\t\t\tcurRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate\n\t\t\t\tnumRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );\n\t\t\t\tfor ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = ( !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get( inst, \"calculateWeek\" )( printDate ) + \"</td>\" );\n\t\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // create date picker days\n\t\t\t\t\t\tdaySettings = ( beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, \"\" ] );\n\t\t\t\t\t\totherMonth = ( printDate.getMonth() !== drawMonth );\n\t\t\t\t\t\tunselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||\n\t\t\t\t\t\t\t( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t( ( dow + firstDay + 6 ) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\" ) + // highlight weekends\n\t\t\t\t\t\t\t( otherMonth ? \" ui-datepicker-other-month\" : \"\" ) + // highlight days from other months\n\t\t\t\t\t\t\t( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key\n\t\t\t\t\t\t\t( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?\n\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\" ) +  // highlight unselectable days\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[ 1 ] + // highlight custom dates\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\" ) ) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? \" title='\" + daySettings[ 2 ].replace( /'/g, \"&#39;\" ) + \"'\" : \"\" ) + // cell title\n\t\t\t\t\t\t\t( unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\" ) + \">\" + // actions\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"&#xa0;\" : // display for other months\n\t\t\t\t\t\t\t( unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\" ) +\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( otherMonth ? \" ui-priority-secondary\" : \"\" ) + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\" ) ) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate( printDate.getDate() + 1 );\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust( printDate );\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif ( drawMonth > 11 ) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + ( isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\" ) : \"\" );\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort ) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get( inst, \"changeMonth\" ),\n\t\t\tchangeYear = this._get( inst, \"changeYear\" ),\n\t\t\tshowMonthAfterYear = this._get( inst, \"showMonthAfterYear\" ),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// Month selection\n\t\tif ( secondary || !changeMonth ) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[ drawMonth ] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = ( minDate && minDate.getFullYear() === drawYear );\n\t\t\tinMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++ ) {\n\t\t\t\tif ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t( month === drawMonth ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + monthNamesShort[ month ] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif ( !showMonthAfterYear ) {\n\t\t\thtml += monthHtml + ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" );\n\t\t}\n\n\t\t// Year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif ( secondary || !changeYear ) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get( inst, \"yearRange\" ).split( \":\" );\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function( value ) {\n\t\t\t\t\tvar year = ( value.match( /c[+\\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :\n\t\t\t\t\t\t( value.match( /[+\\-].*/ ) ? thisYear + parseInt( value, 10 ) :\n\t\t\t\t\t\tparseInt( value, 10 ) ) );\n\t\t\t\t\treturn ( isNaN( year ) ? thisYear : year );\n\t\t\t\t};\n\t\t\t\tyear = determineYear( years[ 0 ] );\n\t\t\t\tendYear = Math.max( year, determineYear( years[ 1 ] || \"\" ) );\n\t\t\t\tyear = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );\n\t\t\t\tendYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor ( ; year <= endYear; year++ ) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t( year === drawYear ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get( inst, \"yearSuffix\" );\n\t\tif ( showMonthAfterYear ) {\n\t\t\thtml += ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" ) + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function( inst, offset, period ) {\n\t\tvar year = inst.selectedYear + ( period === \"Y\" ? offset : 0 ),\n\t\t\tmonth = inst.selectedMonth + ( period === \"M\" ? offset : 0 ),\n\t\t\tday = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === \"D\" ? offset : 0 ),\n\t\t\tdate = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif ( period === \"M\" || period === \"Y\" ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function( inst, date ) {\n\t\tvar minDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tnewDate = ( minDate && date < minDate ? minDate : date );\n\t\treturn ( maxDate && newDate > maxDate ? maxDate : newDate );\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function( inst ) {\n\t\tvar onChange = this._get( inst, \"onChangeMonthYear\" );\n\t\tif ( onChange ) {\n\t\t\tonChange.apply( ( inst.input ? inst.input[ 0 ] : null ),\n\t\t\t\t[ inst.selectedYear, inst.selectedMonth + 1, inst ] );\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function( inst ) {\n\t\tvar numMonths = this._get( inst, \"numberOfMonths\" );\n\t\treturn ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === \"number\" ? [ 1, numMonths ] : numMonths ) );\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function( inst, minMax ) {\n\t\treturn this._determineDate( inst, this._get( inst, minMax + \"Date\" ), null );\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function( year, month ) {\n\t\treturn 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function( year, month ) {\n\t\treturn new Date( year, month, 1 ).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function( inst, offset, curYear, curMonth ) {\n\t\tvar numMonths = this._getNumberOfMonths( inst ),\n\t\t\tdate = this._daylightSavingAdjust( new Date( curYear,\n\t\t\tcurMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );\n\n\t\tif ( offset < 0 ) {\n\t\t\tdate.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );\n\t\t}\n\t\treturn this._isInRange( inst, date );\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function( inst, date ) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get( inst, \"yearRange\" );\n\t\t\tif ( years ) {\n\t\t\t\tyearSplit = years.split( \":\" );\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt( yearSplit[ 0 ], 10 );\n\t\t\t\tmaxYear = parseInt( yearSplit[ 1 ], 10 );\n\t\t\t\tif ( yearSplit[ 0 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[ 1 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ( ( !minDate || date.getTime() >= minDate.getTime() ) &&\n\t\t\t( !maxDate || date.getTime() <= maxDate.getTime() ) &&\n\t\t\t( !minYear || date.getFullYear() >= minYear ) &&\n\t\t\t( !maxYear || date.getFullYear() <= maxYear ) );\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function( inst ) {\n\t\tvar shortYearCutoff = this._get( inst, \"shortYearCutoff\" );\n\t\tshortYearCutoff = ( typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );\n\t\treturn { shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get( inst, \"dayNamesShort\" ), dayNames: this._get( inst, \"dayNames\" ),\n\t\t\tmonthNamesShort: this._get( inst, \"monthNamesShort\" ), monthNames: this._get( inst, \"monthNames\" ) };\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function( inst, day, month, year ) {\n\t\tif ( !day ) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = ( day ? ( typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust( new Date( year, month, day ) ) ) :\n\t\t\tthis._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\treturn this.formatDate( this._get( inst, \"dateFormat\" ), date, this._getFormatConfig( inst ) );\n\t}\n} );\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover( dpDiv ) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.on( \"mouseout\", selector, function() {\n\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-prev-hover\" );\n\t\t\t}\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-next-hover\" );\n\t\t\t}\n\t\t} )\n\t\t.on( \"mouseover\", selector, datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {\n\t\t$( this ).parents( \".ui-datepicker-calendar\" ).find( \"a\" ).removeClass( \"ui-state-hover\" );\n\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-prev-hover\" );\n\t\t}\n\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-next-hover\" );\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove( target, props ) {\n\t$.extend( target, props );\n\tfor ( var name in props ) {\n\t\tif ( props[ name ] == null ) {\n\t\t\ttarget[ name ] = props[ name ];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function( options ) {\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif ( !$.datepicker.initialized ) {\n\t\t$( document ).on( \"mousedown\", $.datepicker._checkExternalClick );\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ( $( \"#\" + $.datepicker._mainDivId ).length === 0 ) {\n\t\t$( \"body\" ).append( $.datepicker.dpDiv );\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call( arguments, 1 );\n\tif ( typeof options === \"string\" && ( options === \"isDisabled\" || options === \"getDate\" || options === \"widget\" ) ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\tif ( options === \"option\" && arguments.length === 2 && typeof arguments[ 1 ] === \"string\" ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\treturn this.each( function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\t\tapply( $.datepicker, [ this ].concat( otherArgs ) ) :\n\t\t\t$.datepicker._attachDatepicker( this, options );\n\t} );\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.12.1\";\n\nvar widgetsDatepicker = $.datepicker;\n\n\n\n\n// This file is deprecated\nvar ie = $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nvar widgetsMouse = $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n\n\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nvar plugin = $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nvar safeBlur = $.ui.safeBlur = function( element ) {\n\n\t// Support: IE9 - 10 only\n\t// If the <body> is blurred, IE will switch windows, see #9420\n\tif ( element && element.nodeName.toLowerCase() !== \"body\" ) {\n\t\t$( element ).trigger( \"blur\" );\n\t}\n};\n\n\n/*!\n * jQuery UI Draggable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Draggable\n//>>group: Interactions\n//>>description: Enables dragging functionality for any element.\n//>>docs: http://api.jqueryui.com/draggable/\n//>>demos: http://jqueryui.com/draggable/\n//>>css.structure: ../../themes/base/draggable.css\n\n\n\n$.widget( \"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// Callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif ( this.options.addClasses ) {\n\t\t\tthis._addClass( \"ui-draggable\" );\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar o = this.options;\n\n\t\t// Among others, prevent a drag on a resizable-handle\n\t\tif ( this.helper || o.disabled ||\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle( event );\n\t\tif ( !this.handle ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blurActiveElement( event );\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\ttarget = $( event.target );\n\n\t\t// Don't blur if the event occurred on an element that is within\n\t\t// the currently focused element\n\t\t// See #10527, #12472\n\t\tif ( target.closest( activeElement ).length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur any element that currently has focus, see #4261\n\t\t$.ui.safeBlur( activeElement );\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t} ).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif ( this._trigger( \"start\", event ) === false ) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event, true );\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart( this, event );\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function( event, noPropagation ) {\n\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif ( !noPropagation ) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif ( this.dropped ) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\n\t\t\t\tthis.options.revert === true || ( $.isFunction( this.options.revert ) &&\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\n\t\t) {\n\t\t\t$( this.helper ).animate(\n\t\t\t\tthis.originalPosition,\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\n\t\t\t\t\t\tthat._clear();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop( this, event );\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\n\t\t\t// focus the element\n\t\t\tthis.element.trigger( \"focus\" );\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function( event ) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\n\t\t\t\tthis.element[ 0 ].parentNode :\n\t\t\t\to.appendTo ) );\n\t\t}\n\n\t\t// Http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\n\t\t\thelper.css( \"position\", \"absolute\" );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() +\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ) {\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n\t\t\t\t// argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\n\t\t\t\t\t\ttop :\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\n\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\n\t\t\t\t\tthis.originalPageX;\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\n\t\t\t\t\t\tleft :\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n} );\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each( function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop( event );\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// Restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"cursor\" ) ) {\n\t\t\to._cursor = t.css( \"cursor\" );\n\t\t}\n\t\tt.css( \"cursor\", o.cursor );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._cursor ) {\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif ( t.css( \"opacity\" ) ) {\n\t\t\to._opacity = t.css( \"opacity\" );\n\t\t}\n\t\tt.css( \"opacity\", o.opacity );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._opacity ) {\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i  ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\n\t\t\t.each( function() {\n\t\t\t\tvar $t = $( this ),\n\t\t\t\t\t$o = $t.offset();\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\n\t\t\t\t\ti.snapElements.push( {\n\t\t\t\t\t\titem: this,\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\n\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[ i ].width;\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[ i ].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\n\t\t\t\t\t( inst.options.snap.release &&\n\t\t\t\t\t\tinst.options.snap.release.call(\n\t\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\n\t\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t\tinst.snapElements[ i ].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( o.snapMode !== \"inner\" ) {\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = ( ts || bs || ls || rs );\n\n\t\t\tif ( o.snapMode !== \"outer\" ) {\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\n\t\t\t\t( inst.options.snap.snap &&\n\t\t\t\t\tinst.options.snap.snap.call(\n\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\n\t\t\t\t\t\t} ) ) );\n\t\t\t}\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\n\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\n\t\t\t} );\n\n\t\tif ( !group.length ) { return; }\n\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\n\t\t$( group ).each( function( i ) {\n\t\t\t$( this ).css( \"zIndex\", min + i );\n\t\t} );\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"zIndex\" ) ) {\n\t\t\to._zIndex = t.css( \"zIndex\" );\n\t\t}\n\t\tt.css( \"zIndex\", o.zIndex );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif ( o._zIndex ) {\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\n\t\t}\n\t}\n} );\n\nvar widgetsDraggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Resizable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Resizable\n//>>group: Interactions\n//>>description: Enables resize functionality for any element.\n//>>docs: http://api.jqueryui.com/resizable/\n//>>demos: http://jqueryui.com/resizable/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/resizable.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tclasses: {\n\t\t\t\"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n\t\t},\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// Callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseFloat( value ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseFloat( value ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar margins,\n\t\t\to = this.options,\n\t\t\tthat = this;\n\t\tthis._addClass( \"ui-resizable\" );\n\n\t\t$.extend( this, {\n\t\t\t_aspectRatio: !!( o.aspectRatio ),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t} );\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$( \"<div class='ui-wrapper' style='overflow: hidden;'></div>\" ).css( {\n\t\t\t\t\tposition: this.element.css( \"position\" ),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css( \"top\" ),\n\t\t\t\t\tleft: this.element.css( \"left\" )\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tmargins = {\n\t\t\t\tmarginTop: this.originalElement.css( \"marginTop\" ),\n\t\t\t\tmarginRight: this.originalElement.css( \"marginRight\" ),\n\t\t\t\tmarginBottom: this.originalElement.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: this.originalElement.css( \"marginLeft\" )\n\t\t\t};\n\n\t\t\tthis.element.css( margins );\n\t\t\tthis.originalElement.css( \"margin\", 0 );\n\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css( \"resize\" );\n\t\t\tthis.originalElement.css( \"resize\", \"none\" );\n\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css( {\n\t\t\t\tposition: \"static\",\n\t\t\t\tzoom: 1,\n\t\t\t\tdisplay: \"block\"\n\t\t\t} ) );\n\n\t\t\t// Support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css( margins );\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis._setupHandles();\n\n\t\tif ( o.autoHide ) {\n\t\t\t$( this.element )\n\t\t\t\t.on( \"mouseenter\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthat._removeClass( \"ui-resizable-autohide\" );\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t} )\n\t\t\t\t.on( \"mouseleave\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( !that.resizing ) {\n\t\t\t\t\t\tthat._addClass( \"ui-resizable-autohide\" );\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\n\t\tthis._mouseInit();\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function( exp ) {\n\t\t\t\t$( exp )\n\t\t\t\t\t.removeData( \"resizable\" )\n\t\t\t\t\t.removeData( \"ui-resizable\" )\n\t\t\t\t\t.off( \".resizable\" )\n\t\t\t\t\t.find( \".ui-resizable-handle\" )\n\t\t\t\t\t\t.remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif ( this.elementIsWrapper ) {\n\t\t\t_destroy( this.element );\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css( {\n\t\t\t\tposition: wrapper.css( \"position\" ),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css( \"top\" ),\n\t\t\t\tleft: wrapper.css( \"left\" )\n\t\t\t} ).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css( \"resize\", this.originalResizeStyle );\n\t\t_destroy( this.originalElement );\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\tcase \"handles\":\n\t\t\tthis._removeHandles();\n\t\t\tthis._setupHandles();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setupHandles: function() {\n\t\tvar o = this.options, handle, i, n, hname, axis, that = this;\n\t\tthis.handles = o.handles ||\n\t\t\t( !$( \".ui-resizable-handle\", this.element ).length ?\n\t\t\t\t\"e,s,se\" : {\n\t\t\t\t\tn: \".ui-resizable-n\",\n\t\t\t\t\te: \".ui-resizable-e\",\n\t\t\t\t\ts: \".ui-resizable-s\",\n\t\t\t\t\tw: \".ui-resizable-w\",\n\t\t\t\t\tse: \".ui-resizable-se\",\n\t\t\t\t\tsw: \".ui-resizable-sw\",\n\t\t\t\t\tne: \".ui-resizable-ne\",\n\t\t\t\t\tnw: \".ui-resizable-nw\"\n\t\t\t\t} );\n\n\t\tthis._handles = $();\n\t\tif ( this.handles.constructor === String ) {\n\n\t\t\tif ( this.handles === \"all\" ) {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split( \",\" );\n\t\t\tthis.handles = {};\n\n\t\t\tfor ( i = 0; i < n.length; i++ ) {\n\n\t\t\t\thandle = $.trim( n[ i ] );\n\t\t\t\thname = \"ui-resizable-\" + handle;\n\t\t\t\taxis = $( \"<div>\" );\n\t\t\t\tthis._addClass( axis, \"ui-resizable-handle \" + hname );\n\n\t\t\t\taxis.css( { zIndex: o.zIndex } );\n\n\t\t\t\tthis.handles[ handle ] = \".ui-resizable-\" + handle;\n\t\t\t\tthis.element.append( axis );\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function( target ) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor ( i in this.handles ) {\n\n\t\t\t\tif ( this.handles[ i ].constructor === String ) {\n\t\t\t\t\tthis.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {\n\t\t\t\t\tthis.handles[ i ] = $( this.handles[ i ] );\n\t\t\t\t\tthis._on( this.handles[ i ], { \"mousedown\": that._mouseDown } );\n\t\t\t\t}\n\n\t\t\t\tif ( this.elementIsWrapper &&\n\t\t\t\t\t\tthis.originalElement[ 0 ]\n\t\t\t\t\t\t\t.nodeName\n\t\t\t\t\t\t\t.match( /^(textarea|input|select|button)$/i ) ) {\n\t\t\t\t\taxis = $( this.handles[ i ], this.element );\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test( i ) ?\n\t\t\t\t\t\taxis.outerHeight() :\n\t\t\t\t\t\taxis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test( i ) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test( i ) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test( i ) ? \"Right\" : \"Left\" ].join( \"\" );\n\n\t\t\t\t\ttarget.css( padPos, padWrapper );\n\n\t\t\t\t\tthis._proportionallyResize();\n\t\t\t\t}\n\n\t\t\t\tthis._handles = this._handles.add( this.handles[ i ] );\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis( this.element );\n\n\t\tthis._handles = this._handles.add( this.element.find( \".ui-resizable-handle\" ) );\n\t\tthis._handles.disableSelection();\n\n\t\tthis._handles.on( \"mouseover\", function() {\n\t\t\tif ( !that.resizing ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\taxis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[ 1 ] ? axis[ 1 ] : \"se\";\n\t\t\t}\n\t\t} );\n\n\t\tif ( o.autoHide ) {\n\t\t\tthis._handles.hide();\n\t\t\tthis._addClass( \"ui-resizable-autohide\" );\n\t\t}\n\t},\n\n\t_removeHandles: function() {\n\t\tthis._handles.remove();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor ( i in this.handles ) {\n\t\t\thandle = $( this.handles[ i ] )[ 0 ];\n\t\t\tif ( handle === event.target || $.contains( handle, event.target ) ) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num( this.helper.css( \"left\" ) );\n\t\tcurtop = this._num( this.helper.css( \"top\" ) );\n\n\t\tif ( o.containment ) {\n\t\t\tcurleft += $( o.containment ).scrollLeft() || 0;\n\t\t\tcurtop += $( o.containment ).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\n\t\tthis.size = this._helper ? {\n\t\t\t\twidth: this.helper.width(),\n\t\t\t\theight: this.helper.height()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.originalSize = this._helper ? {\n\t\t\t\twidth: el.outerWidth(),\n\t\t\t\theight: el.outerHeight()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.sizeDiff = {\n\t\t\twidth: el.outerWidth() - el.width(),\n\t\t\theight: el.outerHeight() - el.height()\n\t\t};\n\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = ( typeof o.aspectRatio === \"number\" ) ?\n\t\t\to.aspectRatio :\n\t\t\t( ( this.originalSize.width / this.originalSize.height ) || 1 );\n\n\t\tcursor = $( \".ui-resizable-\" + this.axis ).css( \"cursor\" );\n\t\t$( \"body\" ).css( \"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor );\n\n\t\tthis._addClass( \"ui-resizable-resizing\" );\n\t\tthis._propagate( \"start\", event );\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\n\t\tvar data, props,\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = ( event.pageX - smp.left ) || 0,\n\t\t\tdy = ( event.pageY - smp.top ) || 0,\n\t\t\ttrigger = this._change[ a ];\n\n\t\tthis._updatePrevProperties();\n\n\t\tif ( !trigger ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply( this, [ event, dx, dy ] );\n\n\t\tthis._updateVirtualBoundaries( event.shiftKey );\n\t\tif ( this._aspectRatio || event.shiftKey ) {\n\t\t\tdata = this._updateRatio( data, event );\n\t\t}\n\n\t\tdata = this._respectSize( data, event );\n\n\t\tthis._updateCache( data );\n\n\t\tthis._propagate( \"resize\", event );\n\n\t\tprops = this._applyChanges();\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._updatePrevProperties();\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t\tthis._applyChanges();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif ( this._helper ) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );\n\t\t\tsoffseth = ista && this._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = {\n\t\t\t\twidth: ( that.helper.width()  - soffsetw ),\n\t\t\t\theight: ( that.helper.height() - soffseth )\n\t\t\t};\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null;\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\t\tif ( !o.animate ) {\n\t\t\t\tthis.element.css( $.extend( s, { top: top, left: left } ) );\n\t\t\t}\n\n\t\t\tthat.helper.height( that.size.height );\n\t\t\tthat.helper.width( that.size.width );\n\n\t\t\tif ( this._helper && !o.animate ) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$( \"body\" ).css( \"cursor\", \"auto\" );\n\n\t\tthis._removeClass( \"ui-resizable-resizing\" );\n\n\t\tthis._propagate( \"stop\", event );\n\n\t\tif ( this._helper ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updatePrevProperties: function() {\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\t},\n\n\t_applyChanges: function() {\n\t\tvar props = {};\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\n\t\tthis.helper.css( props );\n\n\t\treturn props;\n\t},\n\n\t_updateVirtualBoundaries: function( forceAspectRatio ) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif ( this._aspectRatio || forceAspectRatio ) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif ( pMinWidth > b.minWidth ) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif ( pMinHeight > b.minHeight ) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif ( pMaxWidth < b.maxWidth ) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif ( pMaxHeight < b.maxHeight ) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function( data ) {\n\t\tthis.offset = this.helper.offset();\n\t\tif ( this._isNumber( data.left ) ) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif ( this._isNumber( data.top ) ) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif ( this._isNumber( data.width ) ) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tdata.width = ( data.height * this.aspectRatio );\n\t\t} else if ( this._isNumber( data.width ) ) {\n\t\t\tdata.height = ( data.width / this.aspectRatio );\n\t\t}\n\n\t\tif ( a === \"sw\" ) {\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t\tdata.top = null;\n\t\t}\n\t\tif ( a === \"nw\" ) {\n\t\t\tdata.top = cpos.top + ( csize.height - data.height );\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),\n\t\t\tismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),\n\t\t\tisminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),\n\t\t\tisminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.originalPosition.top + this.originalSize.height,\n\t\t\tcw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );\n\t\tif ( isminw ) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif ( isminh ) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif ( ismaxw ) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif ( ismaxh ) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif ( isminw && cw ) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif ( ismaxw && cw ) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif ( isminh && ch ) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif ( ismaxh && ch ) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif ( !data.width && !data.height && !data.left && data.top ) {\n\t\t\tdata.top = null;\n\t\t} else if ( !data.width && !data.height && !data.top && data.left ) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_getPaddingPlusBorderDimensions: function( element ) {\n\t\tvar i = 0,\n\t\t\twidths = [],\n\t\t\tborders = [\n\t\t\t\telement.css( \"borderTopWidth\" ),\n\t\t\t\telement.css( \"borderRightWidth\" ),\n\t\t\t\telement.css( \"borderBottomWidth\" ),\n\t\t\t\telement.css( \"borderLeftWidth\" )\n\t\t\t],\n\t\t\tpaddings = [\n\t\t\t\telement.css( \"paddingTop\" ),\n\t\t\t\telement.css( \"paddingRight\" ),\n\t\t\t\telement.css( \"paddingBottom\" ),\n\t\t\t\telement.css( \"paddingLeft\" )\n\t\t\t];\n\n\t\tfor ( ; i < 4; i++ ) {\n\t\t\twidths[ i ] = ( parseFloat( borders[ i ] ) || 0 );\n\t\t\twidths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );\n\t\t}\n\n\t\treturn {\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\n\t\t};\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif ( !this._proportionallyResizeElements.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar prel,\n\t\t\ti = 0,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++ ) {\n\n\t\t\tprel = this._proportionallyResizeElements[ i ];\n\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\n\t\t\t// considering that we are in a loop.\n\t\t\tif ( !this.outerDimensions ) {\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\n\t\t\t}\n\n\t\t\tprel.css( {\n\t\t\t\theight: ( element.height() - this.outerDimensions.height ) || 0,\n\t\t\t\twidth: ( element.width() - this.outerDimensions.width ) || 0\n\t\t\t} );\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif ( this._helper ) {\n\n\t\t\tthis.helper = this.helper || $( \"<div style='overflow:hidden;'></div>\" );\n\n\t\t\tthis._addClass( this.helper, this._helper );\n\t\t\tthis.helper.css( {\n\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left + \"px\",\n\t\t\t\ttop: this.elementOffset.top + \"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t} );\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function( event, dx ) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function( event, dx ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function( event, dx, dy ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function( event, dx, dy ) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tsw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tne: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tnw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t}\n\t},\n\n\t_propagate: function( n, event ) {\n\t\t$.ui.plugin.call( this, n, [ event, this.ui() ] );\n\t\t( n !== \"resize\" && this._trigger( n, event, this.ui() ) );\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n} );\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add( \"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),\n\t\t\tsoffseth = ista && that._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = {\n\t\t\t\twidth: ( that.size.width - soffsetw ),\n\t\t\t\theight: ( that.size.height - soffseth )\n\t\t\t},\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null,\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend( style, top && left ? { top: top, left: left } : {} ), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseFloat( that.element.css( \"width\" ) ),\n\t\t\t\t\t\theight: parseFloat( that.element.css( \"height\" ) ),\n\t\t\t\t\t\ttop: parseFloat( that.element.css( \"top\" ) ),\n\t\t\t\t\t\tleft: parseFloat( that.element.css( \"left\" ) )\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( pr && pr.length ) {\n\t\t\t\t\t\t$( pr[ 0 ] ).css( { width: data.width, height: data.height } );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache( data );\n\t\t\t\t\tthat._propagate( \"resize\", event );\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ?\n\t\t\t\toc.get( 0 ) :\n\t\t\t\t( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$( [ \"Top\", \"Right\", \"Left\", \"Bottom\" ] ).each( function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t} );\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.left - co.left ) :\n\t\t\t\t\t( that.position.left - cop.left ) );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.top - co.top ) :\n\t\t\t\t\tthat.position.top );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\n\t\t} else {\n\t\t\tthat.offset.left = that.element.offset().left;\n\t\t\tthat.offset.top = that.element.offset().top;\n\t\t}\n\n\t\twoset = Math.abs( that.sizeDiff.width +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.left - cop.left :\n\t\t\t\t( that.offset.left - co.left ) ) );\n\n\t\thoset = Math.abs( that.sizeDiff.height +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.top - cop.top :\n\t\t\t\t( that.offset.top - co.top ) ) );\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ) {\n\t\t\tthat.position.left = that.prevPosition.left;\n\t\t\tthat.position.top = that.prevPosition.top;\n\t\t\tthat.size.width = that.prevSize.width;\n\t\t\tthat.size.height = that.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"alsoResize\", {\n\n\tstart: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options;\n\n\t\t$( o.alsoResize ).each( function() {\n\t\t\tvar el = $( this );\n\t\t\tel.data( \"ui-resizable-alsoresize\", {\n\t\t\t\twidth: parseFloat( el.width() ), height: parseFloat( el.height() ),\n\t\t\t\tleft: parseFloat( el.css( \"left\" ) ), top: parseFloat( el.css( \"top\" ) )\n\t\t\t} );\n\t\t} );\n\t},\n\n\tresize: function( event, ui ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: ( that.size.height - os.height ) || 0,\n\t\t\t\twidth: ( that.size.width - os.width ) || 0,\n\t\t\t\ttop: ( that.position.top - op.top ) || 0,\n\t\t\t\tleft: ( that.position.left - op.left ) || 0\n\t\t\t};\n\n\t\t\t$( o.alsoResize ).each( function() {\n\t\t\t\tvar el = $( this ), start = $( this ).data( \"ui-resizable-alsoresize\" ), style = {},\n\t\t\t\t\tcss = el.parents( ui.originalElement[ 0 ] ).length ?\n\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\n\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\n\n\t\t\t\t$.each( css, function( i, prop ) {\n\t\t\t\t\tvar sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );\n\t\t\t\t\tif ( sum && sum >= 0 ) {\n\t\t\t\t\t\tstyle[ prop ] = sum || null;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tel.css( style );\n\t\t\t} );\n\t},\n\n\tstop: function() {\n\t\t$( this ).removeData( \"ui-resizable-alsoresize\" );\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $( this ).resizable( \"instance\" ), cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost.css( {\n\t\t\topacity: 0.25,\n\t\t\tdisplay: \"block\",\n\t\t\tposition: \"relative\",\n\t\t\theight: cs.height,\n\t\t\twidth: cs.width,\n\t\t\tmargin: 0,\n\t\t\tleft: 0,\n\t\t\ttop: 0\n\t\t} );\n\n\t\tthat._addClass( that.ghost, \"ui-resizable-ghost\" );\n\n\t\t// DEPRECATED\n\t\t// TODO: remove after 1.12\n\t\tif ( $.uiBackCompat !== false && typeof that.options.ghost === \"string\" ) {\n\n\t\t\t// Ghost option\n\t\t\tthat.ghost.addClass( this.options.ghost );\n\t\t}\n\n\t\tthat.ghost.appendTo( that.helper );\n\n\t},\n\n\tresize: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost ) {\n\t\t\tthat.ghost.css( {\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: that.size.height,\n\t\t\t\twidth: that.size.width\n\t\t\t} );\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost && that.helper ) {\n\t\t\tthat.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );\n\t\t}\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar outerDimensions,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\n\t\t\tgridX = ( grid[ 0 ] || 1 ),\n\t\t\tgridY = ( grid[ 1 ] || 1 ),\n\t\t\tox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,\n\t\t\toy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),\n\t\t\tisMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),\n\t\t\tisMinWidth = o.minWidth && ( o.minWidth > newWidth ),\n\t\t\tisMinHeight = o.minHeight && ( o.minHeight > newHeight );\n\n\t\to.grid = grid;\n\n\t\tif ( isMinWidth ) {\n\t\t\tnewWidth += gridX;\n\t\t}\n\t\tif ( isMinHeight ) {\n\t\t\tnewHeight += gridY;\n\t\t}\n\t\tif ( isMaxWidth ) {\n\t\t\tnewWidth -= gridX;\n\t\t}\n\t\tif ( isMaxHeight ) {\n\t\t\tnewHeight -= gridY;\n\t\t}\n\n\t\tif ( /^(se|s|e)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if ( /^(ne)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if ( /^(sw)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\n\t\t\t}\n\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tnewWidth = gridX - outerDimensions.width;\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\n\t\t\t}\n\t\t}\n\t}\n\n} );\n\nvar widgetsResizable = $.ui.resizable;\n\n\n/*!\n * jQuery UI Dialog 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Dialog\n//>>group: Widgets\n//>>description: Displays customizable dialog windows.\n//>>docs: http://api.jqueryui.com/dialog/\n//>>demos: http://jqueryui.com/dialog/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/dialog.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.dialog\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tclasses: {\n\t\t\t\"ui-dialog\": \"ui-corner-all\",\n\t\t\t\"ui-dialog-titlebar\": \"ui-corner-all\"\n\t\t},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// Callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tif ( this.options.title == null && this.originalTitle != null ) {\n\t\t\tthis.options.title = this.originalTitle;\n\t\t}\n\n\t\t// Dialogs can't be disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.options.disabled = false;\n\t\t}\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._addClass( \"ui-dialog-content\", \"ui-widget-content\" );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && ( element.jquery || element.nodeType ) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._untrackInstance();\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.css( this.originalCss )\n\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar that = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).trigger( \"focus\" ).length ) {\n\n\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t} );\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndices = this.uiDialog.siblings( \".ui-front:visible\" ).map( function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t} ).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndices );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\n\t\t// modeless dialogs opened after the modal dialog stack properly.\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\n\t\t}\n\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t} );\n\n\t\t// Track the dialog immediately upon openening in case a focus event\n\t\t// somehow occurs outside of the dialog before an element inside the\n\t\t// dialog is focused (#10152)\n\t\tthis._makeFocusTarget();\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).trigger( \"focus\" );\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\t\tisActive = this.uiDialog[ 0 ] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[ 0 ], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $( \"<div>\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t} )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\" );\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&\n\t\t\t\t\t\t!event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tfirst.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[ 0 ] ||\n\t\t\t\t\t\tevent.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tlast.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr( {\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t} );\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogTitlebar,\n\t\t\t\"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\" );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button( {\n\t\t\t\tlabel: $( \"<a>\" ).text( this.options.closeText ).html(),\n\t\t\t\ticon: \"ui-icon-closethick\",\n\t\t\t\tshowLabel: false\n\t\t\t} )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\n\t\tthis._addClass( this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\" );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t} );\n\n\t\tuiDialogTitle = $( \"<span>\" ).uniqueId().prependTo( this.uiDialogTitlebar );\n\t\tthis._addClass( uiDialogTitle, \"ui-dialog-title\" );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialogTitlebar.prependTo( this.uiDialog );\n\n\t\tthis.uiDialog.attr( {\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t} );\n\t},\n\n\t_title: function( title ) {\n\t\tif ( this.options.title ) {\n\t\t\ttitle.text( this.options.title );\n\t\t} else {\n\t\t\ttitle.html( \"&#160;\" );\n\t\t}\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogButtonPane, \"ui-dialog-buttonpane\",\n\t\t\t\"ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\t\tthis._addClass( this.uiButtonSet, \"ui-dialog-buttonset\" );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// If we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {\n\t\t\tthis._removeClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tbuttonOptions = {\n\t\t\t\ticon: props.icon,\n\t\t\t\ticonPosition: props.iconPosition,\n\t\t\t\tshowLabel: props.showLabel,\n\n\t\t\t\t// Deprecated options\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.text\n\t\t\t};\n\n\t\t\tdelete props.click;\n\t\t\tdelete props.icon;\n\t\t\tdelete props.iconPosition;\n\t\t\tdelete props.showLabel;\n\n\t\t\t// Deprecated options\n\t\t\tdelete props.icons;\n\t\t\tif ( typeof props.text === \"boolean\" ) {\n\t\t\t\tdelete props.text;\n\t\t\t}\n\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet )\n\t\t\t\t.on( \"click\", function() {\n\t\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t\t} );\n\t\t} );\n\t\tthis._addClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable( {\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles :\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable( {\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} )\n\t\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._makeFocusTarget();\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeFocusTarget: function() {\n\t\tthis._untrackInstance();\n\t\tthis._trackingInstances().unshift( this );\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t} );\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button( {\n\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: $( \"<a>\" ).text( \"\" + this.options.closeText ).html()\n\t\t\t} );\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// Currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// Currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css( {\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t} );\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// Reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css( {\n\t\t\theight: \"auto\",\n\t\t\twidth: options.width\n\t\t} )\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css( {\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t} )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay( function() {\n\t\t\tisOpening = false;\n\t\t} );\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.overlay, null, \"ui-widget-overlay ui-front\" );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t} );\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t( this.document.data( \"ui-dialog-overlays\" ) || 0 ) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis._off( this.document, \"focusin\" );\n\t\t\t\tthis.document.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n} );\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for dialogClass option\n\t$.widget( \"ui.dialog\", $.ui.dialog, {\n\t\toptions: {\n\t\t\tdialogClass: \"\"\n\t\t},\n\t\t_createWrapper: function() {\n\t\t\tthis._super();\n\t\t\tthis.uiDialog.addClass( this.options.dialogClass );\n\t\t},\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"dialogClass\" ) {\n\t\t\t\tthis.uiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( value );\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n}\n\nvar widgetsDialog = $.ui.dialog;\n\n\n/*!\n * jQuery UI Droppable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Droppable\n//>>group: Interactions\n//>>description: Enables drop targets for draggable elements.\n//>>docs: http://api.jqueryui.com/droppable/\n//>>demos: http://jqueryui.com/droppable/\n\n\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this._addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._addActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._removeActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._addHoverClass();\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._removeHoverClass();\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element\n\t\t\t.find( \":data(ui-droppable)\" )\n\t\t\t.not( \".ui-draggable-dragging\" )\n\t\t\t.each( function() {\n\t\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\t\tif (\n\t\t\t\t\tinst.options.greedy &&\n\t\t\t\t\t!inst.options.disabled &&\n\t\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\t\tinst.accept.call(\n\t\t\t\t\t\tinst.element[ 0 ], ( draggable.currentItem || draggable.element )\n\t\t\t\t\t) &&\n\t\t\t\t\tintersect(\n\t\t\t\t\t\tdraggable,\n\t\t\t\t\t\t$.extend( inst, { offset: inst.element.offset() } ),\n\t\t\t\t\t\tinst.options.tolerance, event\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tchildrenIntersection = true;\n\t\t\t\t\treturn false; }\n\t\t\t} );\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ],\n\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tthis._removeActiveClass();\n\t\t\tthis._removeHoverClass();\n\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t},\n\n\t// Extension points just to make backcompat sane and avoid duplicating logic\n\t// TODO: Remove in 1.13 along with call to it below\n\t_addHoverClass: function() {\n\t\tthis._addClass( \"ui-droppable-hover\" );\n\t},\n\n\t_removeHoverClass: function() {\n\t\tthis._removeClass( \"ui-droppable-hover\" );\n\t},\n\n\t_addActiveClass: function() {\n\t\tthis._addClass( \"ui-droppable-active\" );\n\t},\n\n\t_removeActiveClass: function() {\n\t\tthis._removeClass( \"ui-droppable-active\" );\n\t}\n} );\n\nvar intersect = $.ui.intersect = ( function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) &&\n\t\t\t\tisOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n} )();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],\n\t\t\t\t\t( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions( {\n\t\t\t\twidth: m[ i ].element[ 0 ].offsetWidth,\n\t\t\t\theight: m[ i ].element[ 0 ].offsetHeight\n\t\t\t} );\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible &&\n\t\t\t\t\tintersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],\n\t\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t} );\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the\n\t\t// droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).on( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions\n\t\t// every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ?\n\t\t\t\t\t\"isout\" :\n\t\t\t\t\t( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter( function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t} );\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[ c === \"isout\" ? \"isover\" : \"isout\" ] = false;\n\t\t\tthis[ c === \"isover\" ? \"_over\" : \"_out\" ].call( this, event );\n\n\t\t\t// We just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t} );\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).off( \"scroll.droppable\" );\n\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when\n\t\t// overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for activeClass and hoverClass options\n\t$.widget( \"ui.droppable\", $.ui.droppable, {\n\t\toptions: {\n\t\t\thoverClass: false,\n\t\t\tactiveClass: false\n\t\t},\n\t\t_addActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_removeActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_addHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t},\n\t\t_removeHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nvar widgetsDroppable = $.ui.droppable;\n\n\n/*!\n * jQuery UI Progressbar 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Progressbar\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/progressbar/\n//>>demos: http://jqueryui.com/progressbar/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/progressbar.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsProgressbar = $.widget( \"ui.progressbar\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-progressbar\": \"ui-corner-all\",\n\t\t\t\"ui-progressbar-value\": \"ui-corner-left\",\n\t\t\t\"ui-progressbar-complete\": \"ui-corner-right\"\n\t\t},\n\t\tmax: 100,\n\t\tvalue: 0,\n\n\t\tchange: null,\n\t\tcomplete: null\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\n\t\t// Constrain initial value\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\n\n\t\tthis.element.attr( {\n\n\t\t\t// Only set static values; aria-valuenow and aria-valuemax are\n\t\t\t// set inside _refreshValue()\n\t\t\trole: \"progressbar\",\n\t\t\t\"aria-valuemin\": this.min\n\t\t} );\n\t\tthis._addClass( \"ui-progressbar\", \"ui-widget ui-widget-content\" );\n\n\t\tthis.valueDiv = $( \"<div>\" ).appendTo( this.element );\n\t\tthis._addClass( this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\" );\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeAttr( \"role aria-valuemin aria-valuemax aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this.options.value;\n\t\t}\n\n\t\tthis.options.value = this._constrainedValue( newValue );\n\t\tthis._refreshValue();\n\t},\n\n\t_constrainedValue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\tnewValue = this.options.value;\n\t\t}\n\n\t\tthis.indeterminate = newValue === false;\n\n\t\t// Sanitize value\n\t\tif ( typeof newValue !== \"number\" ) {\n\t\t\tnewValue = 0;\n\t\t}\n\n\t\treturn this.indeterminate ? false :\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\n\t},\n\n\t_setOptions: function( options ) {\n\n\t\t// Ensure \"value\" option is set after other values (like max)\n\t\tvar value = options.value;\n\t\tdelete options.value;\n\n\t\tthis._super( options );\n\n\t\tthis.options.value = this._constrainedValue( value );\n\t\tthis._refreshValue();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"max\" ) {\n\n\t\t\t// Don't allow a max less than min\n\t\t\tvalue = Math.max( this.min, value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t_percentage: function() {\n\t\treturn this.indeterminate ?\n\t\t\t100 :\n\t\t\t100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.options.value,\n\t\t\tpercentage = this._percentage();\n\n\t\tthis.valueDiv\n\t\t\t.toggle( this.indeterminate || value > this.min )\n\t\t\t.width( percentage.toFixed( 0 ) + \"%\" );\n\n\t\tthis\n\t\t\t._toggleClass( this.valueDiv, \"ui-progressbar-complete\", null,\n\t\t\t\tvalue === this.options.max )\n\t\t\t._toggleClass( \"ui-progressbar-indeterminate\", null, this.indeterminate );\n\n\t\tif ( this.indeterminate ) {\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\n\t\t\tif ( !this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv = $( \"<div>\" ).appendTo( this.valueDiv );\n\t\t\t\tthis._addClass( this.overlayDiv, \"ui-progressbar-overlay\" );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.attr( {\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": value\n\t\t\t} );\n\t\t\tif ( this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv.remove();\n\t\t\t\tthis.overlayDiv = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t\tif ( value === this.options.max ) {\n\t\t\tthis._trigger( \"complete\" );\n\t\t}\n\t}\n} );\n\n\n/*!\n * jQuery UI Selectable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Selectable\n//>>group: Interactions\n//>>description: Allows groups of elements to be selected with the mouse.\n//>>docs: http://api.jqueryui.com/selectable/\n//>>demos: http://jqueryui.com/selectable/\n//>>css.structure: ../../themes/base/selectable.css\n\n\n\nvar widgetsSelectable = $.widget( \"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: \"*\",\n\t\ttolerance: \"touch\",\n\n\t\t// Callbacks\n\t\tselected: null,\n\t\tselecting: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tunselected: null,\n\t\tunselecting: null\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis._addClass( \"ui-selectable\" );\n\n\t\tthis.dragged = false;\n\n\t\t// Cache selectee children based on filter\n\t\tthis.refresh = function() {\n\t\t\tthat.elementPos = $( that.element[ 0 ] ).offset();\n\t\t\tthat.selectees = $( that.options.filter, that.element[ 0 ] );\n\t\t\tthat._addClass( that.selectees, \"ui-selectee\" );\n\t\t\tthat.selectees.each( function() {\n\t\t\t\tvar $this = $( this ),\n\t\t\t\t\tselecteeOffset = $this.offset(),\n\t\t\t\t\tpos = {\n\t\t\t\t\t\tleft: selecteeOffset.left - that.elementPos.left,\n\t\t\t\t\t\ttop: selecteeOffset.top - that.elementPos.top\n\t\t\t\t\t};\n\t\t\t\t$.data( this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass( \"ui-selected\" ),\n\t\t\t\t\tselecting: $this.hasClass( \"ui-selecting\" ),\n\t\t\t\t\tunselecting: $this.hasClass( \"ui-unselecting\" )\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $( \"<div>\" );\n\t\tthis._addClass( this.helper, \"ui-selectable-helper\" );\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees.removeData( \"selectable-item\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function( event ) {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.opos = [ event.pageX, event.pageY ];\n\t\tthis.elementPos = $( this.element[ 0 ] ).offset();\n\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectees = $( options.filter, this.element[ 0 ] );\n\n\t\tthis._trigger( \"start\", event );\n\n\t\t$( options.appendTo ).append( this.helper );\n\n\t\t// position helper (lasso)\n\t\tthis.helper.css( {\n\t\t\t\"left\": event.pageX,\n\t\t\t\"top\": event.pageY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t} );\n\n\t\tif ( options.autoRefresh ) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter( \".ui-selected\" ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tselectee.startselected = true;\n\t\t\tif ( !event.metaKey && !event.ctrlKey ) {\n\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\tselectee.selected = false;\n\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\tselectee.unselecting = true;\n\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t$( event.target ).parents().addBack().each( function() {\n\t\t\tvar doSelect,\n\t\t\t\tselectee = $.data( this, \"selectable-item\" );\n\t\t\tif ( selectee ) {\n\t\t\t\tdoSelect = ( !event.metaKey && !event.ctrlKey ) ||\n\t\t\t\t\t!selectee.$element.hasClass( \"ui-selected\" );\n\t\t\t\tthat._removeClass( selectee.$element, doSelect ? \"ui-unselecting\" : \"ui-selected\" )\n\t\t\t\t\t._addClass( selectee.$element, doSelect ? \"ui-selecting\" : \"ui-unselecting\" );\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif ( doSelect ) {\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_mouseDrag: function( event ) {\n\n\t\tthis.dragged = true;\n\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tmp,\n\t\t\tthat = this,\n\t\t\toptions = this.options,\n\t\t\tx1 = this.opos[ 0 ],\n\t\t\ty1 = this.opos[ 1 ],\n\t\t\tx2 = event.pageX,\n\t\t\ty2 = event.pageY;\n\n\t\tif ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );\n\n\t\tthis.selectees.each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" ),\n\t\t\t\thit = false,\n\t\t\t\toffset = {};\n\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif ( !selectee || selectee.element === that.element[ 0 ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toffset.left   = selectee.left   + that.elementPos.left;\n\t\t\toffset.right  = selectee.right  + that.elementPos.left;\n\t\t\toffset.top    = selectee.top    + that.elementPos.top;\n\t\t\toffset.bottom = selectee.bottom + that.elementPos.top;\n\n\t\t\tif ( options.tolerance === \"touch\" ) {\n\t\t\t\thit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||\n                    offset.bottom < y1 ) );\n\t\t\t} else if ( options.tolerance === \"fit\" ) {\n\t\t\t\thit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&\n                    offset.bottom < y2 );\n\t\t\t}\n\n\t\t\tif ( hit ) {\n\n\t\t\t\t// SELECT\n\t\t\t\tif ( selectee.selected ) {\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif ( selectee.unselecting ) {\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif ( !selectee.selecting ) {\n\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\tselectee.selecting = true;\n\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// UNSELECT\n\t\t\t\tif ( selectee.selecting ) {\n\t\t\t\t\tif ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif ( selectee.startselected ) {\n\t\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( selectee.selected ) {\n\t\t\t\t\tif ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\t\tselectee.unselecting = true;\n\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\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\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\t$( \".ui-unselecting\", this.element[ 0 ] ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger( \"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t} );\n\t\t} );\n\t\t$( \".ui-selecting\", this.element[ 0 ] ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" )\n\t\t\t\t._addClass( selectee.$element, \"ui-selected\" );\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger( \"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t} );\n\t\t} );\n\t\tthis._trigger( \"stop\", event );\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n} );\n\n\n/*!\n * jQuery UI Selectmenu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Selectmenu\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/selectmenu/\n//>>demos: http://jqueryui.com/selectmenu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsSelectmenu = $.widget( \"ui.selectmenu\", [ $.ui.formResetMixin, {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<select>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tclasses: {\n\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\n\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\n\t\t},\n\t\tdisabled: null,\n\t\ticons: {\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\twidth: false,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\n\t\tthis.ids = {\n\t\t\telement: selectmenuId,\n\t\t\tbutton: selectmenuId + \"-button\",\n\t\t\tmenu: selectmenuId + \"-menu\"\n\t\t};\n\n\t\tthis._drawButton();\n\t\tthis._drawMenu();\n\t\tthis._bindFormResetHandler();\n\n\t\tthis._rendered = false;\n\t\tthis.menuItems = $();\n\t},\n\n\t_drawButton: function() {\n\t\tvar icon,\n\t\t\tthat = this,\n\t\t\titem = this._parseOption(\n\t\t\t\tthis.element.find( \"option:selected\" ),\n\t\t\t\tthis.element[ 0 ].selectedIndex\n\t\t\t);\n\n\t\t// Associate existing label with the new button\n\t\tthis.labels = this.element.labels().attr( \"for\", this.ids.button );\n\t\tthis._on( this.labels, {\n\t\t\tclick: function( event ) {\n\t\t\t\tthis.button.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\n\t\t// Hide original select element\n\t\tthis.element.hide();\n\n\t\t// Create button\n\t\tthis.button = $( \"<span>\", {\n\t\t\ttabindex: this.options.disabled ? -1 : 0,\n\t\t\tid: this.ids.button,\n\t\t\trole: \"combobox\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-autocomplete\": \"list\",\n\t\t\t\"aria-owns\": this.ids.menu,\n\t\t\t\"aria-haspopup\": \"true\",\n\t\t\ttitle: this.element.attr( \"title\" )\n\t\t} )\n\t\t\t.insertAfter( this.element );\n\n\t\tthis._addClass( this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\",\n\t\t\t\"ui-button ui-widget\" );\n\n\t\ticon = $( \"<span>\" ).appendTo( this.button );\n\t\tthis._addClass( icon, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button );\n\t\tthis.buttonItem = this._renderButtonItem( item )\n\t\t\t.appendTo( this.button );\n\n\t\tif ( this.options.width !== false ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\n\t\tthis._on( this.button, this._buttonEvents );\n\t\tthis.button.one( \"focusin\", function() {\n\n\t\t\t// Delay rendering the menu items until the button receives focus.\n\t\t\t// The menu may have already been rendered via a programmatic open.\n\t\t\tif ( !that._rendered ) {\n\t\t\t\tthat._refreshMenu();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_drawMenu: function() {\n\t\tvar that = this;\n\n\t\t// Create menu\n\t\tthis.menu = $( \"<ul>\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\"aria-labelledby\": this.ids.button,\n\t\t\tid: this.ids.menu\n\t\t} );\n\n\t\t// Wrap menu\n\t\tthis.menuWrap = $( \"<div>\" ).append( this.menu );\n\t\tthis._addClass( this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\" );\n\t\tthis.menuWrap.appendTo( this._appendTo() );\n\n\t\t// Initialize menu widget\n\t\tthis.menuInstance = this.menu\n\t\t\t.menu( {\n\t\t\t\tclasses: {\n\t\t\t\t\t\"ui-menu\": \"ui-corner-bottom\"\n\t\t\t\t},\n\t\t\t\trole: \"listbox\",\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// Support: IE8\n\t\t\t\t\t// If the item was selected via a click, the text selection\n\t\t\t\t\t// will be destroyed in IE\n\t\t\t\t\tthat._setSelection();\n\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\n\t\t\t\t},\n\t\t\t\tfocus: function( event, ui ) {\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\n\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\n\t\t\t\t\t\tif ( !that.isOpen ) {\n\t\t\t\t\t\t\tthat._select( item, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthat.focusIndex = item.index;\n\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.menu( \"instance\" );\n\n\t\t// Don't close the menu on mouseleave\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\n\n\t\t// Cancel the menu's collapseAll on document click\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\t// Selects often contain empty items, but never contain dividers\n\t\tthis.menuInstance._isDivider = function() {\n\t\t\treturn false;\n\t\t};\n\t},\n\n\trefresh: function() {\n\t\tthis._refreshMenu();\n\t\tthis.buttonItem.replaceWith(\n\t\t\tthis.buttonItem = this._renderButtonItem(\n\n\t\t\t\t// Fall back to an empty object in case there are no options\n\t\t\t\tthis._getSelectedItem().data( \"ui-selectmenu-item\" ) || {}\n\t\t\t)\n\t\t);\n\t\tif ( this.options.width === null ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_refreshMenu: function() {\n\t\tvar item,\n\t\t\toptions = this.element.find( \"option\" );\n\n\t\tthis.menu.empty();\n\n\t\tthis._parseOptions( options );\n\t\tthis._renderMenu( this.menu, this.items );\n\n\t\tthis.menuInstance.refresh();\n\t\tthis.menuItems = this.menu.find( \"li\" )\n\t\t\t.not( \".ui-selectmenu-optgroup\" )\n\t\t\t\t.find( \".ui-menu-item-wrapper\" );\n\n\t\tthis._rendered = true;\n\n\t\tif ( !options.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\titem = this._getSelectedItem();\n\n\t\t// Update the menu to have the correct item focused\n\t\tthis.menuInstance.focus( null, item );\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\n\n\t\t// Set disabled state\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\n\t},\n\n\topen: function( event ) {\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first time the menu is being opened, render the items\n\t\tif ( !this._rendered ) {\n\t\t\tthis._refreshMenu();\n\t\t} else {\n\n\t\t\t// Menu clears focus on close, reset focus to selected item\n\t\t\tthis._removeClass( this.menu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\n\t\t}\n\n\t\t// If there are no options, don't open the menu\n\t\tif ( !this.menuItems.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = true;\n\t\tthis._toggleAttr();\n\t\tthis._resizeMenu();\n\t\tthis._position();\n\n\t\tthis._on( this.document, this._documentClick );\n\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\t_position: function() {\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\n\t},\n\n\tclose: function( event ) {\n\t\tif ( !this.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = false;\n\t\tthis._toggleAttr();\n\n\t\tthis.range = null;\n\t\tthis._off( this.document );\n\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\twidget: function() {\n\t\treturn this.button;\n\t},\n\n\tmenuWidget: function() {\n\t\treturn this.menu;\n\t},\n\n\t_renderButtonItem: function( item ) {\n\t\tvar buttonItem = $( \"<span>\" );\n\n\t\tthis._setText( buttonItem, item.label );\n\t\tthis._addClass( buttonItem, \"ui-selectmenu-text\" );\n\n\t\treturn buttonItem;\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this,\n\t\t\tcurrentOptgroup = \"\";\n\n\t\t$.each( items, function( index, item ) {\n\t\t\tvar li;\n\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\n\t\t\t\tli = $( \"<li>\", {\n\t\t\t\t\ttext: item.optgroup\n\t\t\t\t} );\n\t\t\t\tthat._addClass( li, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" +\n\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\n\t\t\t\t\t\t\" ui-state-disabled\" :\n\t\t\t\t\t\t\"\" ) );\n\n\t\t\t\tli.appendTo( ul );\n\n\t\t\t\tcurrentOptgroup = item.optgroup;\n\t\t\t}\n\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\tvar li = $( \"<li>\" ),\n\t\t\twrapper = $( \"<div>\", {\n\t\t\t\ttitle: item.element.attr( \"title\" )\n\t\t\t} );\n\n\t\tif ( item.disabled ) {\n\t\t\tthis._addClass( li, null, \"ui-state-disabled\" );\n\t\t}\n\t\tthis._setText( wrapper, item.label );\n\n\t\treturn li.append( wrapper ).appendTo( ul );\n\t},\n\n\t_setText: function( element, value ) {\n\t\tif ( value ) {\n\t\t\telement.text( value );\n\t\t} else {\n\t\t\telement.html( \"&#160;\" );\n\t\t}\n\t},\n\n\t_move: function( direction, event ) {\n\t\tvar item, next,\n\t\t\tfilter = \".ui-menu-item\";\n\n\t\tif ( this.isOpen ) {\n\t\t\titem = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\n\t\t} else {\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\n\t\t\tfilter += \":not(.ui-state-disabled)\";\n\t\t}\n\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\n\t\t} else {\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\n\t\t}\n\n\t\tif ( next.length ) {\n\t\t\tthis.menuInstance.focus( event, next );\n\t\t}\n\t},\n\n\t_getSelectedItem: function() {\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\n\t},\n\n\t_toggle: function( event ) {\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\n\t},\n\n\t_setSelection: function() {\n\t\tvar selection;\n\n\t\tif ( !this.range ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( window.getSelection ) {\n\t\t\tselection = window.getSelection();\n\t\t\tselection.removeAllRanges();\n\t\t\tselection.addRange( this.range );\n\n\t\t// Support: IE8\n\t\t} else {\n\t\t\tthis.range.select();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Setting the text selection kills the button focus in IE, but\n\t\t// restoring the focus doesn't kill the selection.\n\t\tthis.button.focus();\n\t},\n\n\t_documentClick: {\n\t\tmousedown: function( event ) {\n\t\t\tif ( !this.isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" +\n\t\t\t\t\t$.ui.escapeSelector( this.ids.button ) ).length ) {\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_buttonEvents: {\n\n\t\t// Prevent text selection from being reset when interacting with the selectmenu (#10144)\n\t\tmousedown: function() {\n\t\t\tvar selection;\n\n\t\t\tif ( window.getSelection ) {\n\t\t\t\tselection = window.getSelection();\n\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\tthis.range = selection.getRangeAt( 0 );\n\t\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t} else {\n\t\t\t\tthis.range = document.selection.createRange();\n\t\t\t}\n\t\t},\n\n\t\tclick: function( event ) {\n\t\t\tthis._setSelection();\n\t\t\tthis._toggle( event );\n\t\t},\n\n\t\tkeydown: function( event ) {\n\t\t\tvar preventDefault = true;\n\t\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.TAB:\n\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\tthis.close( event );\n\t\t\t\tpreventDefault = false;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tthis._move( \"next\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tthis._move( \"first\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tthis._move( \"last\", event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.menu.trigger( event );\n\t\t\t\tpreventDefault = false;\n\t\t\t}\n\n\t\t\tif ( preventDefault ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t},\n\n\t_selectFocusedItem: function( event ) {\n\t\tvar item = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\n\t\t}\n\t},\n\n\t_select: function( item, event ) {\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\n\n\t\t// Change native select element\n\t\tthis.element[ 0 ].selectedIndex = item.index;\n\t\tthis.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );\n\t\tthis._setAria( item );\n\t\tthis._trigger( \"select\", event, { item: item } );\n\n\t\tif ( item.index !== oldIndex ) {\n\t\t\tthis._trigger( \"change\", event, { item: item } );\n\t\t}\n\n\t\tthis.close( event );\n\t},\n\n\t_setAria: function( item ) {\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\n\n\t\tthis.button.attr( {\n\t\t\t\"aria-labelledby\": id,\n\t\t\t\"aria-activedescendant\": id\n\t\t} );\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icon = this.button.find( \"span.ui-icon\" );\n\t\t\tthis._removeClass( icon, null, this.options.icons.button )\n\t\t\t\t._addClass( icon, null, value.button );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"width\" ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.menuInstance.option( \"disabled\", value );\n\t\tthis.button.attr( \"aria-disabled\", value );\n\t\tthis._toggleClass( this.button, null, \"ui-state-disabled\", value );\n\n\t\tthis.element.prop( \"disabled\", value );\n\t\tif ( value ) {\n\t\t\tthis.button.attr( \"tabindex\", -1 );\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.button.attr( \"tabindex\", 0 );\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_toggleAttr: function() {\n\t\tthis.button.attr( \"aria-expanded\", this.isOpen );\n\n\t\t// We can't use two _toggleClass() calls here, because we need to make sure\n\t\t// we always remove classes first and add them second, otherwise if both classes have the\n\t\t// same theme class, it will be removed after we add it.\n\t\tthis._removeClass( this.button, \"ui-selectmenu-button-\" +\n\t\t\t( this.isOpen ? \"closed\" : \"open\" ) )\n\t\t\t._addClass( this.button, \"ui-selectmenu-button-\" +\n\t\t\t\t( this.isOpen ? \"open\" : \"closed\" ) )\n\t\t\t._toggleClass( this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen );\n\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\n\t},\n\n\t_resizeButton: function() {\n\t\tvar width = this.options.width;\n\n\t\t// For `width: false`, just remove inline style and stop\n\t\tif ( width === false ) {\n\t\t\tthis.button.css( \"width\", \"\" );\n\t\t\treturn;\n\t\t}\n\n\t\t// For `width: null`, match the width of the original element\n\t\tif ( width === null ) {\n\t\t\twidth = this.element.show().outerWidth();\n\t\t\tthis.element.hide();\n\t\t}\n\n\t\tthis.button.outerWidth( width );\n\t},\n\n\t_resizeMenu: function() {\n\t\tthis.menu.outerWidth( Math.max(\n\t\t\tthis.button.outerWidth(),\n\n\t\t\t// Support: IE10\n\t\t\t// IE10 wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping\n\t\t\tthis.menu.width( \"\" ).outerWidth() + 1\n\t\t) );\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = this._super();\n\n\t\toptions.disabled = this.element.prop( \"disabled\" );\n\n\t\treturn options;\n\t},\n\n\t_parseOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tdata = [];\n\t\toptions.each( function( index, item ) {\n\t\t\tdata.push( that._parseOption( $( item ), index ) );\n\t\t} );\n\t\tthis.items = data;\n\t},\n\n\t_parseOption: function( option, index ) {\n\t\tvar optgroup = option.parent( \"optgroup\" );\n\n\t\treturn {\n\t\t\telement: option,\n\t\t\tindex: index,\n\t\t\tvalue: option.val(),\n\t\t\tlabel: option.text(),\n\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\n\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\n\t\t};\n\t},\n\n\t_destroy: function() {\n\t\tthis._unbindFormResetHandler();\n\t\tthis.menuWrap.remove();\n\t\tthis.button.remove();\n\t\tthis.element.show();\n\t\tthis.element.removeUniqueId();\n\t\tthis.labels.attr( \"for\", this.ids.element );\n\t}\n} ] );\n\n\n/*!\n * jQuery UI Slider 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slider\n//>>group: Widgets\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n//>>docs: http://api.jqueryui.com/slider/\n//>>demos: http://jqueryui.com/slider/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/slider.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsSlider = $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tclasses: {\n\t\t\t\"ui-slider\": \"ui-corner-all\",\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\n\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\n\t\t\t// element, but worked best visually with a variety of themes\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n\t\t},\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// Number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\n\t\t\t\"ui-widget ui-widget-content\" );\n\n\t\tthis._refresh();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\n\t\t\thandle = \"<span tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each( function( i ) {\n\t\t\t$( this )\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\n\t\t\t\t.attr( \"tabIndex\", 0 );\n\t\t} );\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice( 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\n\t\t\t} else {\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\n\n\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\tthis.range.css( {\n\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each( function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\n\t\t\tif ( ( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t} );\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\n\t\tclosestHandle.trigger( \"focus\" );\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_uiHash: function( index, value, values ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\thandleIndex: index,\n\t\t\tvalue: value !== undefined ? value : this.value()\n\t\t};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\n\t\t\tuiHash.values = values || this.values();\n\t\t}\n\n\t\treturn uiHash;\n\t},\n\n\t_hasMultipleValues: function() {\n\t\treturn this.options.values && this.options.values.length;\n\t},\n\n\t_start: function( event, index ) {\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar allowed, otherVal,\n\t\t\tcurrentValue = this.value(),\n\t\t\tnewValues = this.values();\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\tcurrentValue = this.values( index );\n\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\n\t\t\t\tnewVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\n\t\t\t}\n\n\t\t\tnewValues[ index ] = newVal;\n\t\t}\n\n\t\tif ( newVal === currentValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\n\n\t\t// A slide can be canceled by returning false from the slide callback\n\t\tif ( allowed === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.values( index, newVal );\n\t\t} else {\n\t\t\tthis.value( newVal );\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tif ( this.options.range ) {\n\t\t\t\t\tthis._refreshRange( value );\n\t\t\t\t}\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this._hasMultipleValues() ) {\n\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar max = this.options.max,\n\t\t\tmin = this._valueMin(),\n\t\t\tstep = this.options.step,\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\n\t\tmax = aboveMin + min;\n\t\tif ( max > this.options.max ) {\n\n\t\t\t//If max is not divisible by step, rounding off may increase its value\n\t\t\tmax -= step;\n\t\t}\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshRange: function( orientation ) {\n\t\tif ( orientation === \"vertical\" ) {\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\n\t\t}\n\t\tif ( orientation === \"horizontal\" ) {\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\n\t\t}\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.handles.each( function( i ) {\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\n\t\t\t\t\tthat._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\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\tlastValPercent = valPercent;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n\n/*!\n * jQuery UI Sortable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: http://api.jqueryui.com/sortable/\n//>>demos: http://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n\n\nvar widgetsSortable = $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t// Execute the drag once - this causes the helper not to be visiblebefore getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event );\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tif ( !this.lastPositionAbs ) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( this.options.scroll ) {\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ? \"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" || this._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this._getDragVerticalDirection();\n\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 )\n\t\t\t: ( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ $.isFunction( this.options.items ) ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\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},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ $.isFunction( this.options.items ) ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( item.instance !== this.currentContainer && this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming\n\t\t\t\t\t// from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif ( !p.height() ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \"<td>&#160;</td>\", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ?\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true ) :\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction( o.helper ) ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\t$( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\ta ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n\n/*!\n * jQuery UI Spinner 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Spinner\n//>>group: Widgets\n//>>description: Displays buttons to easily input numbers via the keyboard or mouse.\n//>>docs: http://api.jqueryui.com/spinner/\n//>>demos: http://jqueryui.com/spinner/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/spinner.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nfunction spinnerModifer( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-spinner\": \"ui-corner-all\",\n\t\t\t\"ui-spinner-down\": \"ui-corner-br\",\n\t\t\t\"ui-spinner-up\": \"ui-corner-tr\"\n\t\t},\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// Only format if there is a value, prevents the field from being marked\n\t\t// as invalid in Firefox, see #9573.\n\t\tif ( this.value() !== \"\" ) {\n\n\t\t\t// Format the value, but don't constrain.\n\t\t\tthis._value( this.element.val(), true );\n\t\t}\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = this._super();\n\t\tvar element = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value != null && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t} );\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._stop();\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay( function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// Support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay( function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t} );\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget )\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget )\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t// Support mobile enhanced option and make backcompat more sane\n\t_enhance: function() {\n\t\tthis.uiSpinner = this.element\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( \"<span>\" )\n\t\t\t.parent()\n\n\t\t\t\t// Add buttons\n\t\t\t\t.append(\n\t\t\t\t\t\"<a></a><a></a>\"\n\t\t\t\t);\n\t},\n\n\t_draw: function() {\n\t\tthis._enhance();\n\n\t\tthis._addClass( this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\" );\n\t\tthis._addClass( \"ui-spinner-input\" );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// Button bindings\n\t\tthis.buttons = this.uiSpinner.children( \"a\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.attr( \"aria-hidden\", true )\n\t\t\t.button( {\n\t\t\t\tclasses: {\n\t\t\t\t\t\"ui-button\": \"\"\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// TODO: Right now button does not support classes this is already updated in button PR\n\t\tthis._removeClass( this.buttons, \"ui-corner-all\" );\n\n\t\tthis._addClass( this.buttons.first(), \"ui-spinner-button ui-spinner-up\" );\n\t\tthis._addClass( this.buttons.last(), \"ui-spinner-button ui-spinner-down\" );\n\t\tthis.buttons.first().button( {\n\t\t\t\"icon\": this.options.icons.up,\n\t\t\t\"showLabel\": false\n\t\t} );\n\t\tthis.buttons.last().button( {\n\t\t\t\"icon\": this.options.icons.down,\n\t\t\t\"showLabel\": false\n\t\t} );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&\n\t\t\t\tthis.uiSpinner.height() > 0 ) {\n\t\t\tthis.uiSpinner.height( this.uiSpinner.height() );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false ) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// Make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round( aboveMin / options.step ) * options.step;\n\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// Fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// Clamp the value\n\t\tif ( options.max !== null && value > options.max ) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar prevValue, first, last;\n\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tprevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\t\tif ( key === \"icons\" ) {\n\t\t\tfirst = this.buttons.first().find( \".ui-icon\" );\n\t\t\tthis._removeClass( first, null, this.options.icons.up );\n\t\t\tthis._addClass( first, null, value.up );\n\t\t\tlast = this.buttons.last().find( \".ui-icon\" );\n\t\t\tthis._removeClass( last, null, this.options.icons.down );\n\t\t\tthis._addClass( last, null, value.down );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( this.uiSpinner, null, \"ui-state-disabled\", !!value );\n\t\tthis.element.prop( \"disabled\", !!value );\n\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\n\t},\n\n\t_setOptions: spinnerModifer( function( options ) {\n\t\tthis._super( options );\n\t} ),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr( {\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t} );\n\t},\n\n\tisValid: function() {\n\t\tvar value = this.value();\n\n\t\t// Null is invalid\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If value gets adjusted, it's invalid\n\t\treturn value === this._adjustValue( value );\n\t},\n\n\t// Update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete role aria-valuemin aria-valuemax aria-valuenow\" );\n\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: spinnerModifer( function( steps ) {\n\t\tthis._stepUp( steps );\n\t} ),\n\t_stepUp: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( ( steps || 1 ) * this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tstepDown: spinnerModifer( function( steps ) {\n\t\tthis._stepDown( steps );\n\t} ),\n\t_stepDown: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( ( steps || 1 ) * -this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tpageUp: spinnerModifer( function( pages ) {\n\t\tthis._stepUp( ( pages || 1 ) * this.options.page );\n\t} ),\n\n\tpageDown: spinnerModifer( function( pages ) {\n\t\tthis._stepDown( ( pages || 1 ) * this.options.page );\n\t} ),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tspinnerModifer( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n} );\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for spinner html extension points\n\t$.widget( \"ui.spinner\", $.ui.spinner, {\n\t\t_enhance: function() {\n\t\t\tthis.uiSpinner = this.element\n\t\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t\t.parent()\n\n\t\t\t\t\t// Add buttons\n\t\t\t\t\t.append( this._buttonHtml() );\n\t\t},\n\t\t_uiSpinnerHtml: function() {\n\t\t\treturn \"<span>\";\n\t\t},\n\n\t\t_buttonHtml: function() {\n\t\t\treturn \"<a></a><a></a>\";\n\t\t}\n\t} );\n}\n\nvar widgetsSpinner = $.ui.spinner;\n\n\n/*!\n * jQuery UI Tabs 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tabs\n//>>group: Widgets\n//>>description: Transforms a set of container elements into a tab structure.\n//>>docs: http://api.jqueryui.com/tabs/\n//>>demos: http://jqueryui.com/tabs/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tabs.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.12.1\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tclasses: {\n\t\t\t\"ui-tabs\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-nav\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-panel\": \"ui-corner-bottom\",\n\t\t\t\"ui-tabs-tab\": \"ui-corner-top\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: ( function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// Decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t} )(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis._addClass( \"ui-tabs\", \"ui-widget ui-widget-content\" );\n\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, options.collapsible );\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t} )\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// Check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each( function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// No active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// Handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// Don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.RIGHT:\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tselectedIndex++;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tgoingForward = false;\n\t\t\tselectedIndex--;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tselectedIndex = 0;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.SPACE:\n\n\t\t\t// Activate only, no collapsing\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\t\t\tthis._activate( selectedIndex );\n\t\t\treturn;\n\t\tcase $.ui.keyCode.ENTER:\n\n\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\n\t\t\t// Determine if we should collapse or activate\n\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\treturn;\n\t\tdefault:\n\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control/command key will prevent automatic activation\n\t\tif ( !event.ctrlKey && !event.metaKey ) {\n\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay( function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.trigger( \"focus\" );\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).trigger( \"focus\" );\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, value );\n\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// Get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t} );\n\n\t\tthis._processTabs();\n\n\t\t// Was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\n\t\t// was active, active tab still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setOptionDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t} );\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t} );\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t\t\tthis._addClass( this.active, \"ui-tabs-active\", \"ui-state-active\" );\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this,\n\t\t\tprevTabs = this.tabs,\n\t\t\tprevAnchors = this.anchors,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.tablist = this._getList().attr( \"role\", \"tablist\" );\n\t\tthis._addClass( this.tablist, \"ui-tabs-nav\",\n\t\t\t\"ui-helper-reset ui-helper-clearfix ui-widget-header\" );\n\n\t\t// Prevent users from focusing disabled tabs via click\n\t\tthis.tablist\n\t\t\t.on( \"mousedown\" + this.eventNamespace, \"> li\", function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.on( \"focus\" + this.eventNamespace, \".ui-tabs-anchor\", function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.attr( {\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.tabs, \"ui-tabs-tab\", \"ui-state-default\" );\n\n\t\tthis.anchors = this.tabs.map( function() {\n\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t} )\n\t\t\t.attr( {\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.anchors, \"ui-tabs-anchor\" );\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each( function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// Inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\n\t\t\t// remote tab\n\t\t\t} else {\n\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length ) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr( {\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t} );\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t} );\n\n\t\tthis.panels.attr( \"role\", \"tabpanel\" );\n\t\tthis._addClass( this.panels, \"ui-tabs-panel\", \"ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevTabs ) {\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t// Allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol, ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setOptionDisabled: function( disabled ) {\n\t\tvar currentItem, li, i;\n\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// Disable tabs\n\t\tfor ( i = 0; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tcurrentItem = $( li );\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\tcurrentItem.attr( \"aria-disabled\", \"true\" );\n\t\t\t\tthis._addClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t} else {\n\t\t\t\tcurrentItem.removeAttr( \"aria-disabled\" );\n\t\t\t\tthis._removeClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null,\n\t\t\tdisabled === true );\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.element.children().not( this.panels ).each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.panels.each( function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each( function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t} ).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// Handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\tthat._addClass( eventData.newTab.closest( \"li\" ), \"ui-tabs-active\", \"ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// Start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\tthat._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t} );\n\t\t} else {\n\t\t\tthis._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter( function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr( {\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t} );\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler( {\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" +\n\t\t\t\t$.ui.escapeSelector( index ) + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.tablist\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.off( this.eventNamespace );\n\n\t\tthis.anchors\n\t\t\t.removeAttr( \"role tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each( function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this ).removeAttr( \"role tabIndex \" +\n\t\t\t\t\t\"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.tabs.each( function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t},\n\t\t\tcomplete = function( jqXHR, status ) {\n\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t}\n\n\t\t\t\tthat._removeClass( tab, \"ui-tabs-loading\" );\n\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\tdelete that.xhr;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// Support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\tthis._addClass( tab, \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.done( function( response, status, jqXHR ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} )\n\t\t\t\t.fail( function( jqXHR, status ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\n\t\t\t// Support: IE <11 only\n\t\t\t// Strip any hash that exists to prevent errors with the Ajax request\n\t\t\turl: anchor.attr( \"href\" ).replace( /#.*$/, \"\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for ui-tab class (now ui-tabs-tab)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_processTabs: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis._addClass( this.tabs, \"ui-tab\" );\n\t\t}\n\t} );\n}\n\nvar widgetsTabs = $.ui.tabs;\n\n\n/*!\n * jQuery UI Tooltip 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tooltip\n//>>group: Widgets\n//>>description: Shows additional information for any element on hover or focus.\n//>>docs: http://api.jqueryui.com/tooltip/\n//>>demos: http://jqueryui.com/tooltip/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tooltip.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n\t\t},\n\t\tcontent: function() {\n\n\t\t\t// support: IE<9, Opera in jQuery <1.7\n\t\t\t// .text() can't accept undefined, so coerce to a string\n\t\t\tvar title = $( this ).attr( \"title\" ) || \"\";\n\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"<a>\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttrack: false,\n\n\t\t// Callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = $.trim( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on( {\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t} );\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"<div>\" )\n\t\t\t.attr( {\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t\tthat._updateContent( tooltipData.element );\n\t\t\t} );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\n\t\t\tthat.close( event, true );\n\t\t} );\n\n\t\t// Remove title attributes to prevent native tooltips\n\t\tthis.disabledTitles = this.disabledTitles.add(\n\t\t\tthis.element.find( this.options.items ).addBack()\n\t\t\t\t.filter( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\t\t\treturn element\n\t\t\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t);\n\t},\n\n\t_enable: function() {\n\n\t\t// restore title attributes\n\t\tthis.disabledTitles.each( function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t} );\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// Kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each( function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis._registerCloseHandlers( event, target );\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" || contentOption.nodeType ||\n\t\t\t\tcontentOption.jquery ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[ 0 ], function( response ) {\n\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay( function() {\n\n\t\t\t\t// Ignore async response if tooltip was closed already\n\t\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// JQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t} );\n\t\t} );\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltipData, tooltip, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltipData = this._find( target );\n\t\tif ( tooltipData ) {\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// If we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltipData = this._tooltip( target );\n\t\ttooltip = tooltipData.tooltip;\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\ta11yContent = $( \"<div>\" ).html( tooltip.find( \".ui-tooltip-content\" ).html() );\n\t\ta11yContent.removeAttr( \"name\" ).find( \"[name]\" ).removeAttr( \"name\" );\n\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\ta11yContent.appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t} );\n\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend( {\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\t// Adds the check to add the timers only when both delay and track options are set (#14682)\n\t\tif ( this.options.track && this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval( function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\t},\n\n\t_registerCloseHandlers: function( event, target ) {\n\t\tvar events = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event( event );\n\t\t\t\t\tfakeEvent.currentTarget = target[ 0 ];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tthis._removeTooltip( this._find( target ).tooltip );\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar tooltip,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltipData = this._find( target );\n\n\t\t// The tooltip may already be closed\n\t\tif ( !tooltipData ) {\n\n\t\t\t// We set ui-tooltip-open immediately upon open (in open()), but only set the\n\t\t\t// additional data once there's actually content to show (in _open()). So even if the\n\t\t\t// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\n\t\t\t// the period between open() and _open().\n\t\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip = tooltipData.tooltip;\n\n\t\t// Disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( tooltipData.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// Only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltipData.hiding = true;\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t} );\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t} );\n\t\t}\n\n\t\ttooltipData.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tif ( !tooltipData.hiding ) {\n\t\t\ttooltipData.closing = false;\n\t\t}\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"<div>\" ).attr( \"role\", \"tooltip\" ),\n\t\t\tcontent = $( \"<div>\" ).appendTo( tooltip ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\tthis._addClass( content, \"ui-tooltip-content\" );\n\t\tthis._addClass( tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\" );\n\n\t\ttooltip.appendTo( this._appendTo( element ) );\n\n\t\treturn this.tooltips[ id ] = {\n\t\t\telement: element,\n\t\t\ttooltip: tooltip\n\t\t};\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? this.tooltips[ id ] : null;\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_appendTo: function( target ) {\n\t\tvar element = target.closest( \".ui-front, dialog\" );\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" ),\n\t\t\t\telement = tooltipData.element;\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t} );\n\t\tthis.liveRegion.remove();\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for tooltipClass option\n\t$.widget( \"ui.tooltip\", $.ui.tooltip, {\n\t\toptions: {\n\t\t\ttooltipClass: null\n\t\t},\n\t\t_tooltip: function() {\n\t\t\tvar tooltipData = this._superApply( arguments );\n\t\t\tif ( this.options.tooltipClass ) {\n\t\t\t\ttooltipData.tooltip.addClass( this.options.tooltipClass );\n\t\t\t}\n\t\t\treturn tooltipData;\n\t\t}\n\t} );\n}\n\nvar widgetsTooltip = $.ui.tooltip;\n\n\n\n\n}));","'use strict';\nvar parent = require('../../es/function');\n\nmodule.exports = parent;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n"],"names":["moment","symbolMap","numberMap","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","meridiemParse","isPM","input","test","meridiem","hour","minute","isLower","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","preparse","string","replace","match","postformat","dayOfMonthOrdinalParse","ordinal","week","dow","doy","factory","Symbol","exports","read","buffer","offset","isLE","mLen","nBytes","e","eLen","eMax","eBias","nBits","i","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","getBasePlacement","placement","getLayoutRect","element","x","offsetLeft","offsetTop","width","offsetWidth","height","offsetHeight","getWindow","node","toString","ownerDocument","defaultView","window","isElement","Element","isHTMLElement","HTMLElement","contains","parent","child","rootNode","getRootNode","ShadowRoot","next","isSameNode","parentNode","host","getNodeName","nodeName","toLowerCase","getComputedStyle","isTableElement","indexOf","getDocumentElement","document","documentElement","getParentNode","assignedSlot","getTrueOffsetParent","position","offsetParent","html","getOffsetParent","currentNode","css","transform","perspective","willChange","getContainingBlock","getMainAxisFromPlacement","within","min","max","mergePaddingObject","paddingObject","Object","assign","top","right","bottom","left","expandToHashMap","keys","reduce","hashMap","key","unsetSides","mapToStyles","_ref2","_Object$assign2","popper","popperRect","offsets","gpuAcceleration","adaptive","_ref3","roundOffsets","_ref","dpr","devicePixelRatio","round","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasOwnProperty","hasY","sideX","sideY","win","clientHeight","clientWidth","_Object$assign","commonStyles","passive","hash","getOppositePlacement","matched","start","end","getOppositeVariationPlacement","getBoundingClientRect","rect","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","listScrollParents","list","scrollParent","isBody","target","concat","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","navigator","userAgent","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getVariation","computeOffsets","reference","basePlacement","variation","commonX","commonY","mainAxis","len","detectOverflow","state","options","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","referenceElement","elements","rects","clippingClientRect","mainClippingParents","clippingParents","clipperElement","filter","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperOffsets","strategy","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","forEach","multiply","axis","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","scroll","order","modifiers","map","Map","visited","Set","result","sort","modifier","add","name","requires","requiresIfExists","dep","has","depModifier","get","push","set","DEFAULT_OPTIONS","areValidElements","_len","arguments","length","args","Array","_key","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","fn","pending","orderedModifiers","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","cleanupModifierEffects","scrollParents","merged","acc","phase","orderModifiers","current","existing","data","enabled","_ref3$options","effect","cleanupFn","update","forceUpdate","_state$elements","reset","index","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","popperGenerator","referenceRect","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","_options$scroll","_options$resize","resize","addEventListener","removeEventListener","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","a","b","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","slice","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","querySelector","initialPopperStyles","opacity","pointerEvents","disabledApplyStylesModifier","ariaDescribedByModifier","ids","getAttribute","id","trim","setAttribute","join","removeAttribute","_popper$getAttribute","_state$elements2","role","EMPTY_MODIFIERS","popperElement","_temp","isMounted","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","config","popperInstanceRef","useRef","useCallback","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","useState","useMounted","nextState","popperState","setState","updateModifier","useMemo","useEffect","extendStatics","__extends","this","setPrototypeOf","__proto__","p","prototype","call","TypeError","String","__","constructor","create","__assign","t","n","apply","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","rejected","done","__generator","f","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","defineProperty","runPreflight","PreflightTest","constants_1","timer_1","mos_1","getCombinedConnectionStats_1","getturncredentials_1","makestat_1","syntheticaudio_1","syntheticvideo_1","index_1","WS_SERVER","Log","EventEmitter","MovingAverageDelta","EventObserver","InsightsPublisher","_a","createSID","sessionSID","_b","SignalingConnectionTimeoutError","MediaConnectionError","notEmpty","nInstances","_super","token","_this","_testTiming","Timer","_dtlsTiming","_iceTiming","_peerConnectionTiming","_mediaTiming","_connectTiming","_sentBytesMovingAverage","_packetLossMovingAverage","_progressEvents","_receivedBytesMovingAverage","internalOptions","environment","region","_c","duration","wsServer","_log","DEFAULT_LOG_LEVEL","DEFAULT_LOGGER_NAME","_testDuration","_instanceId","_runPreflightTest","stop","_stopped","_generatePreflightReport","collectedStats","testTiming","getTimeMeasurement","networkTiming","dtls","ice","peerConnection","connect","media","stats","jitter","makeStat","rtt","packetLoss","selectedIceCandidatePairStats","iceCandidateStats","progressEvents","mos","_executePreflightStep","stepName","timeoutError","MAX_STEP_DURATION","stepPromise","timer","timeoutPromise","debug","Error","_resolve","setTimeout","race","clearTimeout","_collectNetworkTimings","pc","dtlsTransport","iceConnectionState","_updateProgress","connectionState","transport","getSenders","sender","_setupInsights","DEFAULT_ENVIRONMENT","realm","DEFAULT_REALM","eventPublisher","SDK_NAME","SDK_VERSION","eventObserver","Date","now","undefinedValue","reportToInsights","report","jitterStats","rttStats","packetLossStats","mosStats","candidateTypeToProtocols","candidateStats","candidateType","protocol","protocols","JSON","stringify","fromEntries","insightsReport","group","level","error","payload","preflightSID","dtlsTiming","iceTiming","peerConnectionTiming","connectTiming","mediaTiming","selectedLocalCandidate","localCandidate","selectedRemoteCandidate","remoteCandidate","emit","disconnect","localTracks","pcs","elements_1","iceServers","senderPC_1","receiverPC_1","remoteTracks_1","collectedStats_1","error_1","preflightReport","syntheticAudio","syntheticVideo","getTurnCredentials","RTCPeerConnection","iceTransportPolicy","bundlePolicy","remoteTracksPromise","offer","updatedOffer","answer","event","candidate","addIceCandidate","track","addTrack","remoteTracks","createOffer","setLocalDescription","setRemoteDescription","createAnswer","warn","kind","createElement","autoplay","playsInline","muted","srcObject","MediaStream","oncanplay","_collectRTCStatsForDuration","outgoingBitrate","incomingBitrate","close","_collectRTCStats","senderPC","receiverPC","combinedStats","timestamp","bytesSent","bytesReceived","packets","packetsLost","roundTripTime","hasLastData","fractionPacketLost","percentPacketsLost","score","getCombinedConnectionStats","publisher","subscriber","putSample","calculateMOS","startTime","STAT_INTERVAL","remainingDuration","waitForSometime","requestAnimFrame","callback","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","noop","uid","isNullOrUndef","isArray","type","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","source","klen","k","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","size","item","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","almostEquals","niceRange","fraction","isNumber","epsilon","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","l","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","hex","h1","h2","eq","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","r","hueValue","calln","hsl2rgb","hue","Z","Y","X","W","V","U","T","S","R","Q","O","N","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","RGB_RE","to","from","modHSL","ratio","tmp","clone","proto","fromObject","functionParse","exec","rgbParse","p1","p2","hwb2rgb","hsv2rgb","hueParse","Color","ret","unpacked","tkeys","j","ok","nk","parseInt","unpack","transparent","nameParse","_rgb","_valid","valid","rgbString","hexString","isShort","alpha","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","root","scope","values","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","context","chart","platform","getDevicePixelRatio","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","enumerable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","numberOrZero","_readValueToProps","props","objProps","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","toFontString","inputs","info","cacheable","createContext","parentContext","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","_arrayUnique","items","_createResolver","scopes","prefixes","rootScopes","getTarget","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","prefix","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","delete","_resolveScriptable","isIndexable","arr","resolver","_resolveArray","_resolveWithContext","allKeys","configurable","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","meta","count","iScale","_parsing","parsed","parse","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","delta","iPixel","vPixel","monotoneCompute","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","suffix","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","touches","offsetX","offsetY","shadowRoot","useOffsetPos","clientX","clientY","getCanvasPosition","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","locale","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","readStyle","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","styleChanged","prevStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","initial","currentStep","_refresh","_update","remaining","running","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cb","cur","_duration","cancel","remove","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_fn","_easing","easing","_start","delay","_target","_prop","_from","_to","_promises","active","elapsed","remain","wait","promises","res","rej","resolved","method","animationOptions","colors","properties","numbers","show","animations","visible","hide","Animations","_chart","_properties","configure","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","all","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","base","object","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","minDefined","maxDefined","getUserBounds","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","disabled","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","updateElement","updateSharedOptions","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","last","grouped","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_index_","grid","_value_","beginAtZero","BubbleController","tooltip","title","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxHeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","aspectRatio","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_datasetIndex","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","formats","amount","unit","diff","startOf","weekday","endOf","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","handler","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestCartesianItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","params","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","fullSize","setBoxDims","placeBoxes","userPadding","placed","stackWeight","autoPadding","layouts","addBox","_layers","z","removeBox","layoutItem","minPadding","availableWidth","availableHeight","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","buildStacks","setLayoutDims","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","createResizeObserver","container","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","isConnected","tooltipPosition","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","newTicks","majorStart","majorEnd","ceil","grace","drawBorder","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","init","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","ticksLimit","maxTicksLimit","_tickSize","maxScale","maxChart","determineMaxTicks","majorIndices","getMajorIndices","numMajorIndices","first","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","unregister","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","angleDelta","o","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","parseBorderRadius$1","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","version","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","lineJoin","drawFullCircleBorders","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","segments","segmentOptions","findStartAndEnd","chartContext","baseStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","doSplitByStyles","splitByStyles","solidSegments","_computeSegments","sub","_boundSegments","_interpolate","_getInterpolationMethod","interpolated","segmentMethod","path","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","outer","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","boundingRects","addRectPath","hasRadius","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","_args","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","WeakMap","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","CategoryScale","_startValue","_valueRange","_addedLabels","added","addedLabels","unshift","addIfString","lastIndexOf","findOrAddLabel","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","maxTicks","stepSize","computeTickLimit","generationOptions","dataRange","precision","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","generateTicks$1","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","measureLabelSize","determineLimits","updateLimits","limits","hLimits","vLimits","getTextAlignForAngle","leftForTextAlign","yForAngle","pathRadiusLine","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","setCenterPoint","extra","outerDistance","pointLabelPosition","buildPointLabelItems","fitWithPointLabels","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","day","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","classof","$String","module","argument","objectProto","nativeObjectToString","symToStringTag","isOwn","tag","unmasked","getOwnPropertySymbols","propertyIsEnumerable","SuppressedError","globalThis","self","__esModule","default","locked","addToLocked","isLocked","lock","unlock","getInstance","throw","return","getItem","localStorage","removeItem","setItem","keySync","getItemSync","clearSync","removeItemSync","setItemSync","u","random","acquiredIatSet","storageHandler","acquireLock","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","iat","timeoutKey","timeAcquired","timeRefreshed","lockCorrector","removeFromWaiting","addToWaiting","notifyWaiters","timeoutInSeconds","error_description","fromPayload","appState","popup","mfa_token","audience","crypto","getRandomValues","Uint8Array","btoa","clientId","URLSearchParams","client_id","decodeURIComponent","atob","charCodeAt","async","fetch","json","auth","fetchUrl","fetchOptions","useFormData","MessageChannel","port1","onmessage","postMessage","port2","AbortController","signal","abort","finally","baseUrl","auth0Client","grant_type","headers","Boolean","toKey","fromKey","fromCacheEntry","enclosedCache","keyManifest","nowProvider","setIdToken","getIdTokenCacheKey","id_token","decodedToken","getIdToken","getCacheKeys","matchExistingCacheKey","expiresAt","refresh_token","wrapCacheEntry","expires_in","cookieDomain","storageKey","daysUntilExpire","encodeURIComponent","expires","setMilliseconds","getMilliseconds","toUTCString","domain","secure","sameSite","cookie","encode","getAll","location","sessionStorage","substring","Blob","URL","createObjectURL","Worker","manifestKey","createManifestKeyFrom","$","memory","localstorage","q","openUrl","onRedirect","ee","te","userCache","authorizationParams","useRefreshTokensFallback","_releaseLockOnPageHide","subtle","cacheLocation","httpTimeoutMs","httpTimeoutInSeconds","cookieStorage","legacySameSiteCookie","orgHintCookieName","isAuthenticatedCookieName","sessionCheckExpiryDays","useCookiesForTransactions","useRefreshTokens","transactionManager","cacheManager","domainUrl","tokenIssuer","issuer","workerUrl","worker","_url","_authorizeUrl","_verifyIdToken","__raw","encoded","header","signature","claims","user","iss","alg","aud","azp","nonce","max_age","auth_time","leeway","setUTCSeconds","nbf","organization","org_id","org_name","_processOrgHint","_prepareAuthorizeUrl","fromCharCode","digest","TextEncoder","response_type","response_mode","redirect_uri","code_challenge","code_challenge_method","code_verifier","url","loginWithPopup","screenX","innerWidth","screenY","innerHeight","open","origin","href","setInterval","closed","clearInterval","response","authorizeTimeoutInSeconds","_requestToken","code","nonceIn","getUser","_getIdTokenFromCache","getIdTokenClaims","loginWithRedirect","fragment","handleRedirectCallback","checkSession","getTokenSilently","cacheMode","_getTokenSilently","detailedResponse","access_token","_getEntryFromCache","_getTokenUsingRefreshToken","_getTokenFromIFrame","oauthTokenScope","getTokenWithPopup","isAuthenticated","_buildLogoutUrl","logoutParams","federated","logout","prompt","crossOriginIsolated","removeChild","appendChild","message","_saveEntryInCache","exchangeToken","subject_token","subject_token_type","oe","_extends","moveFieldState","destKey","oldState","fields","blur","focus","lastFieldState","escapeRegexTokens","insert","changeValue","resetFieldState","copy","backup","pattern","tokens","fieldIndex","incrementedKey","moveFields","matchPrefix","destIndex","restoreFunctions","backupState","returnValue","renameField","decrementedKey","removedIndex","removeBatch","indexes","sortedIndexes","newState","tools","swap","indexA","indexB","bPrefix","tmpPrefix","toStr","isArgs","callee","origKeys","keysShim","originalKeys","shim","keysWorksWithArguments","days","createThunkMiddleware","extraArgument","dispatch","getState","action","thunk","withExtraArgument","PriorityQueue","priorities","sorting","_queue","_priorities","_sorting","ele","priority","indexToInsert","priority2","_insertAt","func","getElements","getElementPriority","getPriorities","getElementsWithPriorities","eventName","utils","statistical","information","evalExpression","ABS","parseNumber","ACOS","acos","ACOSH","ACOT","atan","ACOTH","AGGREGATE","function_num","ref1","ref2","anyIsError","AVERAGE","COUNT","COUNTA","MAX","MIN","PRODUCT","STDEV","SUM","VAR","MEDIAN","MODE","SNGL","LARGE","SMALL","PERCENTILE","INC","QUARTILE","EXC","ARABIC","CM","CD","XC","XL","IX","IV","ASIN","ASINH","ATAN","ATAN2","number_x","number_y","ATANH","BASE","radix","min_length","CEILING","significance","ROUND","MATH","PRECISE","COMBIN","number_chosen","FACT","COMBINA","COS","COSH","COT","COTH","e2","CSC","CSCH","DECIMAL","DEGREES","EVEN","EXP","na","MEMOIZED_FACT","FACTDOUBLE","FLOOR","GCD","parseNumberArray","flatten","r0","ri","INT","ISO","LCM","LN","LN10","LOG10E","LOG2E","LOG","LOG10","MOD","dividend","divisor","div0","modulus","MROUND","multiple","MULTINOMIAL","sum","ODD","temp","POWER","power","QUOTIENT","numerator","denominator","RADIANS","RAND","RANDBETWEEN","ROMAN","digits","roman","ROUNDDOWN","ROUNDUP","SEC","SECH","SERIESSUM","coefficients","SIGN","SIN","SINH","SQRT","SQRTPI","SUBTOTAL","function_code","ADD","num1","num2","MINUS","DIVIDE","MULTIPLY","factor1","factor2","GTE","LTE","EQ","value1","value2","NE","POW","exponent","arrayEach","argsToArray","SUMIF","criteria","isWildcard","tokenizedCriteria","createToken","TOKEN_TYPE_LITERAL","compute","SUMIFS","criterias","n_range_elements","criteriaLength","isMeetCondition","computedResult","SUMPRODUCT","product","_ij","arrays","SUMSQ","ISNUMBER","SUMX2MY2","array_x","array_y","SUMX2PY2","SUMXMY2","TAN","TANH","TRUNC","__read","ar","DEFAULT_NQ_LEVEL_LOCAL","DEFAULT_NQ_LEVEL_REMOTE","MAX_NQ_LEVEL","NetworkQualityConfigurationImpl","networkQualityConfiguration","remote","localOrRemote","arraySpeciesConstructor","originalArray","uncurryThis","ll","lll","llll","meridiemHour","hm","period","toISOString","forced","typedArray","isDeep","byteOffset","baseGetTag","AsyncFromSyncIterator","anObject","getIterator","getIteratorDirect","getMethod","ASYNC_ITERATOR","wellKnownSymbol","it","usingIterator","common_1","predicates_1","urlMatcher_1","param_1","paramTypes_1","UrlMatcherFactory","paramTypes","ParamTypes","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","paramFactory","fromConfig","Param","DefType","CONFIG","fromPath","PATH","fromSearch","SEARCH","_getConfig","extend","strict","caseInsensitive","UrlMatcher","isDefined","strictMode","defaultSquashPolicy","isString","compile","isMatcher","definition","definitionFn","$get","enqueue","_flushTypeQueue","dispose","$filter","arrayMethodHasSpeciesSupport","callbackfn","StateMatcher","_states","isRelative","stateName","stateOrName","matchGlob","isStr","resolvePath","_state","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","isInteger","addMonths","dirtyDate","dirtyAmount","dayOfMonth","getDate","endOfDesiredMonth","getTime","setMonth","getMonth","setFullYear","getFullYear","aConstructor","isNullOrUndefined","SPECIES","defaultConstructor","activeXDocument","definePropertiesModule","enumBugKeys","hiddenKeys","documentCreateElement","sharedKey","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","src","contentWindow","Properties","baseIsEqual","require","_createClass","Constructor","protoProps","staticProps","_classCallCheck","TetherBase","modules","zeroElement","getActualBoundingClientRect","boundingRect","_frameElement","frameElement","frameRect","getScrollParents","parents","nodeType","err","_style","uniqueId","zeroPosCache","removeUtilElements","getBounds","doc","docEl","defer","getOrigin","_scrollBarSize","getScrollBarSize","visibility","widthContained","widthScroll","out","removeClass","classList","cls","regex","className","getClassName","setClassName","addClass","hasClass","SVGAnimatedString","baseVal","updateClasses","deferred","flush","Evented","once","bindings","on","_bindings$event$i","Utils","_slicedToArray","_arr","_n","_d","_e","_s","sliceIterator","_x6","_x7","_x8","_again","Function","desc","_TetherBase$Utils","lastCall","lastDuration","pendingTimeout","transformKey","transforms","tethers","performance","MIRROR_LR","MIRROR_TB","middle","OFFSET_MAP","attachmentToOffset","attachment","addOffset","offsetToPx","parseOffset","_value$split","_value$split2","parseAttachment","TetherClass","_Evented","history","subClass","superClass","_inherits","classes","classPrefix","_this2","targetOffset","targetAttachment","targetModifier","jquery","getClass","addTargetClasses","disable","enable","scrollBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","fitAdj","scrollPercentage","_this3","_this4","_this5","elementAttach","targetAttach","_this6","_addAttachClasses","_this7","flushChanges","relativeToAttachment","autoToFixedAttachment","updateAttachClasses","elementPos","lastSize","_lastSize","targetPos","getTargetBounds","targetSize","manualOffset","manualTargetOffset","scrollbarSize","page","viewport","parentElement","optimizations","moveElement","offsetPosition","offsetParentStyle","offsetParentSize","offsetBorder","_this8","found","transcribe","_same","_pos","gpu","yPos","xPos","matchMedia","moved","bodyElement","offsetParentIsBody","tagName","writeCSS","Tether","BOUNDS_FORMAT","constraints","targetHeight","targetWidth","allClasses","constraint","outOfBoundsClass","pinnedClass","addClasses","tAttachment","eAttachment","pin","changeAttachX","changeAttachY","_attachment$split","_attachment$split2","substr","getBoundingRect","oobClass","pinned","oob","abutted","targetPosSide","shiftTop","shiftLeft","_shift2","ref","bsPrefix","striped","bordered","borderless","variant","decoratedBsPrefix","responsiveClass","toObject","stringSlice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","captures","namedCaptures","replacement","tailPos","symbols","ch","capture","predicate","fromIndex","fromRight","util","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","stateMatcher_1","stateBuilder_1","stateQueueManager_1","hof_1","StateRegistry","_router","states","matcher","builder","StateBuilder","urlMatcherFactory","stateQueue","StateQueueManager","urlRouter","_registerRoot","_root","views","dynamic","abstract","navigable","deregister","onStatesChanged","removeFrom","stateDefinition","_deregisterTree","$$state","getChildren","_children","children","deregistered","$ur","rules","propEq","removeRule","deregisteredStates","decorator","_react2","_google_map_markers2","prerender","_interopRequireDefault","GA4","_gtag","_format","_excluded","_excluded2","_excluded3","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_typeof","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","arr2","_defineProperties","_toPropertyKey","prim","toPrimitive","hint","_toPrimitive","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","GA_MEASUREMENT_ID","gtagUrl","script","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieFlags","userId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","hitCallback","_arrayWithHoles","_x","_r","_iterableToArrayLimit","_nonIterableRest","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","mergedGtagOptions","_toGtagOptions","queues","queue","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","category","fieldObject","_default","IS_PURE","DESCRIPTORS","isForced","hasOwn","inheritIfRequired","isSymbol","fails","thisNumberValue","NUMBER","NativeNumber","PureNumberNamespace","NumberPrototype","FORCED","NumberWrapper","dummy","primValue","third","maxCode","toNumber","toNumeric","global","copyConstructorProperties","IndexedObject","lengthOfArrayLike","MapHelpers","mapGet","mapHas","mapSet","boundFunction","processRelativeTime","withoutSuffix","isFuture","isArrayLikeObject","baseFlatten","translator","words","correctGrammaticalCase","wordKey","word","monthsParseExact","$q","when","promise","chain","tuple","symbolProto","symbolToString","baseToString","randomBytes","UID","bytes","generateUID","PLACE_HOLDER_REGEXP","IS_NATIVE_CODE_REGEXP","IS_PURE_FUNCTION","IS_ARROW_FUNCTION","UNSAFE_CHARS_REGEXP","RESERVED_SYMBOLS","ESCAPED_CHARS","escapeUnsafeChars","unsafeChar","serialize","space","functions","regexps","dates","maps","sets","undefs","infinities","bigInts","urls","ignoreFunction","isJSON","functionKeys","deleteFunctions","BigInt","origValue","unsafe","backSlash","valueIndex","flags","serializedFn","argsStartsAt","def","serializeFunc","is","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_2__","__WEBPACK_EXTERNAL_MODULE_3__","__WEBPACK_EXTERNAL_MODULE_4__","__WEBPACK_EXTERNAL_MODULE_5__","__WEBPACK_EXTERNAL_MODULE_6__","__WEBPACK_EXTERNAL_MODULE_7__","installedModules","moduleId","run","$inject","_angular2","_tether2","_hone2","TourConfig","uiTourService","$rootScope","$injector","checkAndKillToursOnNavigate","isTourWaiting","endAllTours","areNavigationInterceptorsEnabled","$on","onStart","constant","provider","directive","locals","useSourceMap","sourceMap","cssMapping","sourceMapping","unescape","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","memo","stylesInDom","isOldIE","selector","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","domStyle","refs","listToStyles","newStyles","part","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","firstChild","removeStyleElement","createStyleElement","attrs","addAttrs","styleIndex","applyToSingletonTag","revokeObjectURL","link","rel","createLinkElement","updateLink","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","styleSheet","cssText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","__webpack_require__","navigationInterceptorsEnabled","popupDelay","closePopupDelay","appendToBody","popupClass","orphan","backdropZIndex","scrollOffset","scrollIntoView","useUiRouter","useHotkeys","scrollParentId","onEnd","onPause","onResume","onNext","onPrev","onShow","onShown","onHide","onHidden","enableNavigationInterceptors","service","uiTourBackdrop","$document","Hone","$body","preventDefault","hone","createForElement","backdropOptions","preventScrolling","shouldPreventScrolling","off","reposition","status","VISIBLE","TourHelpers","$http","$compile","$location","$timeout","safeApply","$state","helpers","stringToBoolean","$root","$$phase","$apply","attachTourConfigProperties","getAttrName","$set","attachEventHandlers","attrName","$eval","attachInterpolatedValues","$observe","newValue","setRedirect","ctrl","oldHandler","tour","waitFor","go","$controller","tours","getTour","getTourByName","getTourByElement","createDetachedTour","isWaiting","getStatus","Status","WAITING","_registerTour","_unregisterTour","$templateCache","$window","positionMap","createStep","elementId","showStep","fixed","fullScreen","click","$new","tourStep","append","createPopup","positionPopup","scrollTo","scrollX","scrollY","duScrollToElementAnimated","focusPopup","showPopup","hideStep","hidePopup","uiTourController","_events2","TourStepService","hotkeys","_resumeWhenFound","stepList","TourStatus","OFF","ON","PAUSED","tourStatus","getCurrentStep","setCurrentStep","getStepByOffset","getStep","stepOrStepIdOrIndex","stepId","getNextStep","getPrevStep","isNext","isPrev","addStep","removeStep","reorderStep","hasStep","initialized","startAt","combo","description","del","pause","resume","goTo","stepToShow","actionMap","_test","$prev","preEvent","navCheck","$next","waitForStep","resumeWhenFound","_getSteps","_getCurrentStep","_setCurrentStep","_events","_maxListeners","isUndefined","defaultMaxListeners","setMaxListeners","er","newListener","warned","trace","fired","removeAllListeners","listenerCount","evlistener","emitter","uiTourDirective","restrict","uiTour","templateUrl","onReady","tourStepDirective","$sce","uiTourCtrl","orderWatch","enabledWatch","contentWatch","isEnabled","trustedContent","trustAsHtml","nextPath","redirectNext","nextStep","prevPath","redirectPrev","prevStep","ngModule","angular","id1","inj","injector","put","webkit","nativeKeys","overArg","stubFalse","freeExports","freeModule","Buffer","isBuffer","MediaSignaling","Timeout","isDeepEqual","messageId","RenderHintsSignaling","getReceiver","_trackSidsToRenderHints","_responseTimer","_sendAllHints","setDelay","_processHintResults","hints","trackSid","trackState","renderDimensions","isDimensionDirty","isEnabledDirty","_sendHints","hintResults","hintResult","_transport","isSet","mspHint","render_dimensions","payLoad","publish","setTrackHint","renderHint","clearTrackHint","vs","xi","yi","xj","yj","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","reset_cp","char_codes","utf16beread","$cptable","debom","utf16leread","_getchar","_getansi","DENSE","Base64_map","Base64_encode","c3","e1","e3","e4","Base64_decode","has_buf","process","versions","Buffer_from","nbfs","buf","enc","new_raw_buf","alloc","new_unsafe_buf","allocUnsafe","s2a","a2s","ab2a","ArrayBuffer","bconcat","bufs","maxlen","chr0","chr1","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","b2","dout","date1904","setDate","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","epoch","getTimezoneOffset","SSF_strip_decimal","SSF_general_num","toPrecision","toFixed","toExponential","SSF_small_exp","SSF_large_exp","SSF_normalize_exp","SSF_general","SSF_format","SSF_write_date","fmt","ss0","tt","outl","commaify","pct1","write_num_exp","fakee","$$","$2","$3","frac1","dec1","closeparen","phone","hashq","cc","rnd","dec","_frac","write_num_flt","ffmt","write_num","write_num_cm","sfmt","mul","write_num_pct","ff","aval","den","rr","myn","myd","write_num_f1","carry","oa","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","dateNF","in_str","SSF_split_fmt","lat","m1","m2","choose_fmt","flen","dt","lst","hr","ssm","bt","jj","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","make_ssf","SSFImplicit","dateNFregex","CRC32","T0","Int32Array","signed_crc_table","TT","subarray","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","bstr","seed","CFB","fs","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_extra_field","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","mt","get_fs","file","parse_zip","di","mboundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","sl","chkd","buf_chain","seen","addr","__readInt32LE","nodes","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","files","mini","minifat_store","pl","sector","namelen","__utf16le","clsid","ct","read_date","get_sector_list","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","MSSZ","new_buf","cnt","__readUInt32LE","cfb","CLSID","nm","rebuild_cfb","seed_cfb","_file","fullPaths","HEADER_CLSID","namecmp","elt","_write","_opts","fileType","fp","fi","ca","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","compression","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","mlen","len_eb","dst_eb","write_huff_fixed","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","_inflate","usz","woff","OL","max_len_1","max_len_2","bits","dst","inflate","warn_or_throw","wrn","msg","csz","efsz","fcsz","EF","parse_local_file","meth","setHours","setMinutes","setSeconds","parse_dos_date","_csz","_usz","ef","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","ContentTypeMap","ctype","ext","si","fdata","fname","cte","oi","parse_quoted_printable","fpath","cfb_gc","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","writeFile","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","_fs","ks","o2","evert","basedate","datenum","refdate","dnthresh","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","debomit","utf8write","TextDecoder","decode","dup","fuzzynum","wt","lower_months","fuzzydate","getYear","lower","split_regex","safe_split_regex","re","getdatastr","asNodeBuffer","asBinary","getContent","getdatabin","safegetzipfile","zip","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","quot","strip_ns","encodings","rencoding","unescapexml","encregex","coderegex","decregex","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","utf8readb","ww","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vtvregex","vtmregex","parseVector","baseType","WTF","wtregex","writextag","wxt_helper","xlml_normalize","xlmlregex","XMLNS","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","XMLNS_main","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","readUInt32LE","readDoubleLE","__readInt16LE","__readInt32BE","oI","oR","loc","oo","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","bs","av","write_double_le","hexstr","fld","parsenoop","recordhopper","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","_bufs","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","encode_range_xls","encode_row","encode_col","decode_row","rowstr","decode_col","colstr","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","format_cell","BErr","XF","numFmtId","safe_format_cell","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","_origin","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","parse_XLWideString","cchCharacters","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","parse_XLSBShortCell","parse_XLSBCodeName","parse_XLNullableWideString","parse_XLNameWideString","parse_RelID","parse_RkNumber","fX100","fInt","RK","parse_RfX","parse_UncheckedRfX","parse_Xnum","parse_ClipboardFormatOrString","VT_I2","VT_I4","VT_VARIANT","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","CountryEnum","XLSFillPattern","rgbify","XLSIcv","RBErr","ct2type","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","PEOPLE","VBA","get_rels_path","parse_rels","currentFilePath","rels","Type","Target","Id","TargetMode","canonictarget","CT_ODS","CORE_PROPS_REGEX","parse_core_props","load_props_pairs","HP","TOP","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","evert_XLMLDPM","custregex","XLMLDocPropsMap","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","Application","LastPrinted","CreatedDate","ModifiedDate","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","xlml_set_prop","Props","parse_FILETIME","dwLowDateTime","dwHighDateTime","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","parse_dictionary","CodePage","dict","pid","parse_BLOB","Size","parse_ClipboardData","parse_VtUnalignedString","cElements","parse_VtVecHeadingPairValue","parse_VtVecLpwstrValue","parse_VtVecUnalignedLpstrValue","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","rval","FMTID","parsenoop2","parseuint16","parseuint16a","parslurp","parse_ShortXLUnicodeString","cch","encoding","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","cRun","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","parse_HyperlinkString","parse_LongRGBA","parse_LongRGB","parse_XLSCell","ixfe","parse_XTI","parse_RkRec","parse_Ref8U","rwFirst","rwLast","parse_RefU","parse_Ref","parse_FtCmo","ot","parse_FtSkip","FtTab","cf","fSharedNote","parse_BOF","BIFFVer","parse_DefaultRowHeight","miyRw","Unsynced","DyZero","ExAsc","ExDsc","parse_BIFF2Format","parse_Dimensions","parse_BoolErr","parse_Bes","parse_XLHeaderFooter","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","sbcch","udfName","parse_AddinUdf","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","rgcb","parse_Rgce","parse_RgbExtra","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_Array","parse_ArrayParsedFormula","parse_BIFF5OT","cchName","parse_ColInfo","cellStyles","colFirst","colLast","coldx","parse_Blank","parse_Scl","parse_String","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","ft","vfp","l7","nrow","fpos","rlen","current_cp","codepage","field","hend","sheetRows","dbf_to_aoa","wch","_RLEN","to_workbook","to_sheet","from_sheet","ba","aoa","sheet_to_json","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","_f","hb","rout","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","records","rj","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","preamble","RS","rec","wpx","width2px","px2char","rows","px2pt","write_ws_rows_sylk","coord","DIF","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_aoa","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sep","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","datestr","timestr","dateNF_fix","cellText","cellNF","prn_to_sheet","firstbyte","prn_to_aoa_str","prn_to_sheet_str","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","parse_cell","parse_LABEL","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","sheet_to_wk1","write_biff_rec","write_RANGE","max_R","book_to_wk3","wb","wscnt","write_BOF_WK3","parse_rs","tregex","rpregex","parse_r","rpr","pass","shadow","outline","strike","uval","valign","parse_rpr","rregex","rend","rs","rs_to_html","nlregex","r_to_html","terms","intro","outro","parse_rpr2","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceMapEntry","comps","parse_EncryptionHeader","Flags","AlgID","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","KeyData","xml","encryptedHmacKey","encryptedHmacValue","encs","uri","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","XorRor","byte1","byte2","Byte","password","Temp","PasswordLastChar","PadIndex","Password","XorKey","CurrentElement","Char","CreateXorKey_Method1","Index","ObfuscationArray","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","lastIndex","rgb2Hex","rgb_tint","tint","hsl","H6","L2","rgb2HSL","h6","hsl2RGB","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","_MDW","coll","customWidth","PPI","XLMLPatternTypeMap","cellXF_uint","cellXF_bool","parse_sty_xml","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","themes","NumberFmt","formatCode","parse_numFmts","Fonts","bold","italic","condense","vertAlign","scheme","auto","indexed","icv","theme","themeElements","clrScheme","parse_fonts","Fills","patternType","bgColor","fgColor","parse_fills","Borders","diagonalUp","diagonalDown","parse_borders","xf","CellXf","textRotation","indent","wrapText","parse_cellXfs","parse_BrtFill","parse_BrtBorder","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","themeltregex","parse_theme_xml","Themes","themeXLSX","write_theme","parse_themeElements","parse_ExtProp","extType","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_ColorTheme","parse_FullColorExt","parse_XFExtGradient","update_xfext","xfext","xfe","sheet_insert_comments","comments","threaded","people","comment","author","parse_BrtCommentAuthor","CT_VBA","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","tab","parsetab","Cetab","nameindex","rl","parse_RgceLocRel_BIFF2","cl","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitIf","bitGoto","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","sname","formula_quote_sheet_name","stringify_formula","nameidx","last_sp","sp","fflen","lbl","xlfn","externbook","bookidx","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","parse_SharedParsedFormula","parse_Formula","parse_FormulaValue","cbf","parse_XLSCellParsedFormula","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","strs","_ssfopts","default_margins","defs","safe_format","fmtid","fillid","raw_rgb","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml_sheetpr","sheetPr","codeName","CodeName","sviewregex","parse_ws_xml_data","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","sstr","ftag","cells","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","outlineLevel","rslice","cellFormula","___f","_tag","fillId","cm","xlmeta","Cell","parse_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","BrtMarginKeys","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","badchars","wbnsregex","parse_BrtFRTArchID$","ArchID","parse_ws","merges","ai","af","Names","vm","seencol","RR","aii","relId","Rel","rfx","above","Views","RTL","tmpref","parse_ws_bin","data1","data2","mtch","parse_ws_xml_sheetpr2","ridx","parse_ws_xml_dim","svs","zoomScale","zoom","rightToLeft","parse_ws_xml_sheetviews","columns","coli","colm","colM","parse_ws_xml_cols","afilter","parse_ws_xml_autofilter","_merge","hlink","rng","parse_ws_xml_hlinks","parse_ws_xml","XLMLFormatMap","attregexg2","attregex2","xlml_parsexmltag","xlml_parsexmltagobj","xlml_set_custprop","Custprops","oval","process_style_xlml","stag","Interior","Pattern","ID","parse_xlml_data","csty","nf","sid","StyleID","interiors","Parent","UTC","safe_format_xlml","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","Rn","opening","ishtml","_o","html_to_sheet","book_append_sheet","html_to_workbook","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","Workbook","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Hidden","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","Ref","RefersTo","Sheet","AutoFilter","Range","parse_fods","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","SSF","parse_xlml","fix_read_opts","CONTINUE_RT","slurp","RecordType","insitu","nextrt","XLSRecordEnum","safe_format_xf","make_cell","PSCLSID","SI","DSI","UDI","parse_xlscfb","CompObj","WorkbookP","AnsiUserType","AnsiClipboardFormat","parse_ClipboardFormatOrAnsiString","Reserved1","UnicodeClipboardFormat","parse_ClipboardFormatOrUnicodeString","Reserved2","parse_compobj","lastcell","cmnt","rngC","rngR","temp_val","country","Directory","last_formula","sst","cur_sheet","Preamble","last_cell","XFs","palette","get_rgb","addcell","file_depth","xfd","icvFore","icvBack","process_cell_style","afi","rrtabid","lastuser","winlocked","wtf","objects","last_lbl","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","fDialog","fBelow","fRight","ExternCount","Comment","tmpri","biffguess","fakebs8","hs","rknum","rkrec","_fr","_fc","_fe","_arraystart","isst","_j","_ixfe","b4idx","b2idx","cmo","lastobj","TxO","ImData","noteobj","Strings","Encryption","Metadata","Country","parse_workbook","bookVBA","vbaraw","newcfb","newpath","make_vba_xls","DocSummary","Summary","HeadingPairs","TitlesOfParts","parse_xls_props","bookFiles","Ptg","grbit","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","charset","xColorType","nTS","bR","bG","bB","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","filterPrivacy","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","iTabID","strRelID","fAlwaysCalc","iauthor","idObj","stAuthor","parse_NoteSh","Info","Data","EncryptionVersionInfo","EncryptedVerifier","EncryptedVerifierHash","parse_RC4Header","EncryptionHeader","EncryptionVerifier","parse_RC4CryptoHeader","parse_FilePassHeader","XorArrayIndex","XorArray","verificationBytes","verifier","PasswordArray","PasswordDecoded","crypto_CreatePasswordVerifier_Method1","Value","crypto_DecryptData_Method1","parse_XORObfuscation","dyHeight","fl","Pos","Dim","CurTab","FirstTab","Selected","TabRatio","UserName","fts","parse_BIFF5Obj","parse_FtArray","ccv","rw","rkrecs","lastcol","ixfes","fStyle","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","fsxButton","parse_CellStyleXF","cmcs","ucnt","Count","Unique","extsst","dsst","ctab","virtPath","rgst","texts","accel","parse_ControlInfo","cchText","hdr","sVer","displayName","targetFrameName","moniker","oleMoniker","guid","fileTime","Loc","parse_URLMoniker","cAnti","ansiPath","parse_FileMoniker","parse_HyperlinkMoniker","parse_Hyperlink","xnum","cUse","wzTooltip","cxfs","crc","cexts","cchComment","themeXML","parse_frtHeader","env","lcb","mtch2","hd","midx","colspan","rowspan","_t","make_html_row","editable","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","elts","hasAttribute","innerHTML","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","parse_text_p","number_formats_ods","hours","minutes","seconds","era","parse_content_xml","sheetag","rowtag","NFtag","NF","ctag","textp","textpidx","textR","row_ol","number_format_map","mrange","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","parse_ods","FEtag","parse_manifest","u8_to_dataview","DataView","byteLength","u8str","u8","u8concat","u8a","popcnt","parse_varint49","ptr","varint","varint_to_i32","i32","parse_shallow","mappa","parse_snappy_chunk","chunks","parse_cell_storage","rsst","dv","getUint32","data_offset","ieee","getFloat64","parse_old_storage","d128","mantissa","readDecimal128LE","parse_new_storage","parse_TSP_Reference","parse_TST_TableDataList","pb","le","rtp","rtpref","mtype","tswpsa","parse_TST_TableInfoArchive","tableref","store","tile","_tile","_g","_h","_k","_l","_m","used_storage_u8","used_storage","wide_offsets","used_storage_offsets","getUint16","parse_TST_TileRowInfo","nrows","parse_TST_Tile","parse_TST_TableModelArchive","parse_numbers_iwa","indices","decompress_iwa_file","messages","mi","parse_iwa_file","packet","docroot","iwam","root2","parse_TN_SheetArchive","parse_TN_DocumentArchive","safe_parse_sheet","relsPath","sheetRels","stype","parse_cs_bin","parse_cs_xml","parse_cs","dfile","drelsp","parse_drawing","chartp","crelsp","csheet","nc","parse_Cache","parse_chart","parse_ds","tcomments","authors","parse_comments_bin","commentList","authtag","cmnttag","authorId","textMatch","parse_comments_xml","parse_cmnt","tidx","personId","parse_tcmnt_xml","strip_front_slash","_zip","widx","utf8decode","zip_add_file","binname","workbooks","dialogs","macros","threadedcomments","links","coreprops","extprops","custprops","calcchains","vba","drawings","TODO","xmlns","ctext","Extension","ContentType","PartName","calcchain","parse_ct","xlsb","parse_sst_bin","uniqueCount","parse_sst_xml","parse_sst","parse_theme","parse_sty_bin","parse_sty","parse_xlink_bin","parse_xlink","parse_wb_bin","dname","dnstart","localSheetId","parse_wb_xml","parse_wb","propdata","parse_ext_props","toks","parse_cust_props","deps","bookDeps","parse_cc_bin","parse_cc_xml","wbsheets","wbext","wbrelsi","wbrelsfile","wbrels","Types","metatype","parse_xlmeta_bin","lastmeta","parse_xlmeta_xml","parse_xlmeta","displayname","parse_people_xml","safe_parse_wbrels","nmode","wsloop","snjseen","snj","Deps","Styles","bin","parse_xlsxcfb","dsm","parse_DataSpaceMap","seds","parse_DataSpaceDefinition","parse_TransformInfoHeader","ename","cmode","parse_Primary","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","read_plaintext","main.79caed11","read_prn","readSync","Deno","File","Folder","infile","read_binary","bstrify","ab","vu","foo","read_cfb","OLD_WTF","read_wb_ID","read_zip","read_utf16","read_plaintext_raw","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","counter","header_cnt","skipHidden","blankrows","qreg","make_csv_row","txt","forceQuotes","sheet_to_csv","endregex","strip","sheet_add_json","js","skipHeader","ws_get_cell_stub","RC","roll","_good","check_ws_name","cell_set_hyperlink","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_txt","sheet_to_html","make_html_preamble","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_new","book_set_sheet_visibility","sh","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","centimeters","centimetres","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","yards","geom","feat","bbox","geometry","coordinates","coordinates_1","ring","geojson","excludeWrapCoord","stopG","coords","geometryMaybeCollection","isGeometryCollection","wrapShrink","coordIndex","isFeatureCollection","isFeature","features","featureIndex","geometries","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureProperties","featureBBox","featureId","coordinate","polygon","polys","inBBox","insidePoly","inRing","ignoreBoundary","inHole","isInside","coordinates1","coordinates2","dLat","dLon","lat1","lat2","units","Float64Array","Uint32Array","Spline","sharpness","centers","controls","stepLength","dx","dy","dz","cacheSteps","mindist","laststep","vector","speed","t2","bezier","D2R","R2D","Coord","lon","view","antipode","anti_lat","anti_lon","LineString","move_to","Arc","multiline","wkt","wkt_string","collect","GreatCircle","npoints","first_pass","pair","bHasBigDiff","dfMaxSmallDiffLong","dfDateLineOffset","dfLeftBorderX","dfRightBorderX","dfDiffSpace","dfPrevX","dfX","dfDiffLong","poMulti","poNewLS","dfX0","dfX1","dfY1","dfX2","dfY2","tmpX","tmpY","dfRatio","dfY","poNewLS0","j0","isoBandNextXTL","isoBandNextYTL","isoBandNextOTL","isoBandNextXTR","isoBandNextYTR","isoBandNextOTR","isoBandNextXRT","isoBandNextYRT","isoBandNextORT","isoBandNextXRB","isoBandNextYRB","isoBandNextORB","isoBandNextXBL","isoBandNextYBL","isoBandNextOBL","isoBandNextXBR","isoBandNextYBR","isoBandNextOBR","isoBandNextXLT","isoBandNextYLT","isoBandNextOLT","isoBandNextXLB","isoBandNextYLB","isoBandNextOLB","p00","bottomleft","leftbottom","p01","rightbottom","bottomright","p02","topright","righttop","p03","lefttop","topleft","p04","p05","p06","p07","isoBandEdgeRT","isoBandEdgeRB","isoBandEdgeBR","isoBandEdgeBL","isoBandEdgeLB","isoBandEdgeLT","isoBandEdgeTL","isoBandEdgeTR","polygon_table","orientationIndex","dx1","dy1","dx2","envelopeContains","Node","buildId","innerEdges","outerEdges","outerEdgesSorted","removeInnerEdge","removeOuterEdge","addOuterEdge","sortOuterEdges","aNode","bNode","det","getOuterEdges","getOuterEdge","addInnerEdge","Edge","symetric","getSymetric","deleteEdge","isEqual","toLineString","compareTo","EdgeRing","edges","envelope","isValid","isHole","hiIndex","high","iPrev","iNext","disc","toMultiPoint","toPolygon","getEnvelope","west","south","east","north","lowLeft","findEdgeRingContaining","testEdgeRing","shellList","minEnvelope","minShell","testEnvelope","shell","env1","env2","envX1","envY1","envX2","envY2","tryEnvelope","testEdgeRingCoordinates","testPoint","_loop_1","coord1","coord2","testEdgeRingCoordinates_1","pathTo","Graph","fromGeoJson","geoJson","validateGeoJson","graph","feature","initialValue","previousValue","getNode","addEdge","currentCoord","symetricEdge","deleteDangles","_removeIfDangle","outerNodes","removeNode","deleteCutEdges","_computeNextCWEdges","_findLabeledEdgeRings","removeEdge","_computeNextCCWEdges","firstOutDE","prevInDE","de","outDE","inDE","edgeRingStarts","getEdgeRings","_findIntersectionNodes","edgeRingList","_findEdgeRing","startEdge","intersectionNodes","degree","edgeRing","astar","search","cleanDirty","heuristic","heuristics","manhattan","closest","openHeap","BinaryHeap","closestNode","neighbors","il","neighbor","isWall","gScore","getCost","beenVisited","markDirty","rescoreElement","pos0","pos1","diagonal","D2","d1","d2","cleanNode","gridIn","GridNode","scoreFunction","RedBlackTree","RedBlackNode","RedBlackRotateLeft","tree","RedBlackRotateRight","RedBlackFirst","dirtyNodes","rowDebug","graphString","fromNeighbor","sinkDown","bubbleUp","parentN","elemScore","child1Score","child2N","child1N","child1","child2","grandpa","uncle","sibling","red","createEdge","setEdgeEnd","halfedges","createBorderEdge","vertex","clipEdge","x0","y0","ax","ay","t0","t1","connectEdge","fm","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","sites","extent","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","nCells","cover","dc","v00","v01","v11","v10","clipCells","Adder","polygons","triangles","s0","s1","i0","that","i1","_found","vx","vy","valueOf","adder","bv","rotationIdentity","lambda","phi","invert","TransformStream","azimuthalRaw","azimuthalInvert","sc","stream","sphere","lineStart","lineEnd","polygonStart","polygonEnd","cxcy","EXISTS","LocalTrackPublicationSignaling","TwilioWarning","createTwilioError","LocalTrackPublicationV2","trackSender","noiseCancellationVendor","createLog","_mediaStates","recordings","_noiseCancellationVendor","updatedPriority","audio_processor","setSid","publishFailed","updateMediaStates","mediaStates","recordingMediaLost","usePrevious","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","NetworkQualityAudioStats","NetworkQualityVideoStats","audio","video","V8_VERSION","sham","getMapData","VERSION","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","nativeIsArray","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","startIndex","isNull","isBoolean","tagTester","nodelist","Int8Array","hasDataViewBug","isIE11","isDataView","getInt8","isArrayBuffer","isArguments","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","isEmpty","isMatch","_wrapped","toBufferView","bufferSource","toJSON","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","ie11fingerprint","methods","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","pairs","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","identity","optimizeCb","argCount","accumulator","baseIteratee","iteratee","mapObject","results","currentKey","propertyOf","times","accum","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","escape","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","template","settings","oldSettings","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","placeholder","bound","callArgs","depth","output","memoize","hasher","address","throttle","later","leading","_now","trailing","immediate","passed","debounced","wrapper","compose","findKey","createPredicateIndexFinder","sortedIndex","low","createIndexFinder","predicateFind","findLastIndex","findWhere","createReduce","reducer","guard","contextPath","pluck","where","computed","lastComputed","reStrSymbol","toArray","rand","shuffle","sortBy","behavior","partition","keyInObj","pick","compact","otherArrays","difference","uniq","isSorted","intersection","argsLength","unzip","chainResult","mixin","arrayFilter","stubArray","nativeGetSymbols","getSymbols","MissingRefError","compileAsync","schema","loadSchema","loadMetaSchemaOf","schemaObj","_addSchema","validate","_compileAsync","sch","$schema","getSchema","$ref","_compile","missingSchema","missingRef","schemaPromise","_loadingSchemas","removePromise","addSchema","_refs","_schemas","loadMissingSchema","controlId","Point","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","_rotate","rotateAround","_rotateAround","matMult","_matMult","perp","_perp","_round","mag","equals","dist","distSqr","angleTo","angleWith","angleWithSep","convert","isLength","isObjectLike","typedArrayTags","rbush","turfBBox","featureEach","featureCollection","coordEach","geojsonRbush","maxEntries","load","toBBox","collides","fromJSON","generateHeatmap","visualization","HeatmapLayer","lng","_ref2$weight","LatLng","optionsHeatmap","objectKeys","isRegex","isDate","isUndefinedOrNull","deepEqual","actual","expected","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","objEquiv","flattenDeep","isPlainObject","uniqWith","without","isEmptySchema","allUniqueKeys","deleteUndefinedProps","returnObject","getValues","schemas","isSchema","notUndefined","withoutArr","baseEach","isArrayLike","getMediaSections","TrackMatcher","_midsToTrackIds","transceiver","sdp","sections","midsToTrackIds","section","midMatches","trackIdMatches","trackId","arrayMap","baseIntersection","baseRest","castArrayLikeObject","mapped","isIOS","AudioTrack","LocalAudioTrack","mediaStreamTrack","noiseCancellation","defaultDeviceLabel","getSettings","deviceId","defaultDeviceId","groupId","defaultGroupId","_currentDefaultDeviceInfo","_defaultDeviceCaptureMode","_isCreatedByCreateLocalTracks","mediaDevices","enumerateDevices","defaultDeviceCaptureMode","_onDeviceChange","deviceInfos","defaultDeviceInfo","_restartDefaultDevice","catch","_restartOnDefaultDeviceChangeCleanup","_maybeRestartOnDefaultDeviceChange","_end","_constraints","sourceTrack","isNotEqualToCapturedDeviceIdOrEqualToDefault","requestedDeviceId","isCapturingFromDefaultDevice","checkIfCapturingFromDefaultDevice","deviceIdConstraint","ideal","_reacquireTrack","reacquireTrack","restartConstraints","restart","mixinLocalMediaTrack","createHTML","forcedStringHTMLMethod","fixRegExpWellKnownSymbolLogic","requireObjectCoercible","sameValue","regExpExec","nativeSearch","maybeCallNative","regexp","searcher","previousLastIndex","flatMap","guessBrowser","isSdpSemanticsSupported","chromeSdpFormat","getChromeSdpFormat","sdpSemantics","checkIfSdpSemanticsIsSupported","addTransceiver","getChromeDefaultSdpFormat","getMatches","getTrackIds","getPlanBTrackIds","getUnifiedPlanTrackIds","getPlanBSSRCs","mediaSection","kindPattern","directionPattern","getMediaSectionSSRCs","getUnifiedPlanSSRCs","mediaSections","msidAttrRegExp","matchingMediaSections","getTrackIdsToSSRCs","getSSRCs","getPlanBTrackIdsToSSRCs","getUnifiedPlanTrackIdsToSSRCs","updateTrackIdsToSSRCs","trackIdsToSSRCs","newTrackIdsToSSRCs","newSSRCsToOldSSRCs","ssrcs","oldSSRCs","newSSRCs","oldSSRC","newSSRC","clearChromeCachedSdpFormat","getSdpFormat","chrome","firefox","safari","RTCRtpTransceiver","updatePlanBTrackIdsToSSRCs","updateUnifiedPlanTrackIdsToSSRCs","plural","NetworkQualitySendStats","NetworkQualityRecvStats","send","recv","sendStats","recvStats","Distance","eudist","kmrand","multi","kmpp","dists","lk","dsum","prs","_dist","_i2","pr","_i3","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","ezafeNumSuffix","targetState_1","pathNode_1","PathUtils","makeTargetState","tail","TargetState","mergeR","buildPath","targetState","toParams","PathNode","applyRawParams","buildToPath","inherit","inheritParams","applyViewConfigs","$view","inArray","viewDecls","subPath","viewConfigs","createViewConfig","unnestR","toKeys","noInherit","paramSchema","param","toNode","toParamVals","paramValues","incomingParamVals","omit","fromParamVals","ownParamVals","treeChanges","reloadState","retained","exiting","entering","keep","nodesMatch","node1","node2","nonDynamicParams","retainedWithToParams","retainedNode","cloned","matching","pathA","pathB","paramsFn","arrayTuples","nodeA","nodeB","elementIdx","parameters","UNSCOPABLES","ArrayPrototype","marginTop","marginRight","marginBottom","marginLeft","usePopperMarginModifiers","overlayRef","popoverClass","dropdownMenuClass","overlay","_margins$current","_getMargins","isIntegerArray","MAXINT","gcd","bitwise","clbk","nargs","baseMerge","mergeWith","srcIndex","customizer","bitmap","$group","arrayMethodIsStrict","addToUnscopables","groupBy","$keyword","$ruleType","$async","$refCode","$lvl","$dataLvl","dataLevel","$errSchemaPath","errSchemaPath","$breakOnError","allErrors","$data","$valid","isRoot","$refVal","resolveRef","baseId","$message","missingRefs","logger","$$outStack","createErrors","toQuotedString","escapeQuotes","verbose","__err","compositeRule","inline","$it","$nextValid","schemaPath","passContext","errorPath","__callValidate","dataPathArr","NATIVE_SYMBOL","traverse","_traverse","pre","post","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","parentSchema","keyIndex","arrayKeywords","propsKeywords","escapeJsonPtr","keywords","skipKeywords","additionalItems","additionalProperties","propertyNames","not","if","else","allOf","anyOf","$defs","definitions","patternProperties","dependencies","enum","const","required","maximum","minimum","exclusiveMaximum","exclusiveMinimum","multipleOf","maxLength","minLength","maxItems","minItems","uniqueItems","maxProperties","minProperties","__export","_fadeStyles","fadeStyles","Fade","handleEnter","onEnter","addEndListener","innerProps","in","mountOnEnter","unmountOnExit","appear","standalone","isFormat","WebSocket","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","Validation","checkCompiling","compIndex","compiling","_compilations","endCompiling","patternCode","patterns","defaultCode","refValCode","refVal","customRuleCode","vars","statement","localRefs","patternsHash","defaultsHash","customRules","compilation","callValidate","errors","_formats","RULES","localCompile","cv","sourceCode","_schema","isTop","MissingRef","usePattern","useDefault","useCustomRule","processCode","makeValidate","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","replaceLocalRef","removeLocalRef","regexStr","valueStr","rule","validateSchema","errorsText","macro","keyword","bindHtmlCompile","$watch","compileScope","bindHtmlScope","contents","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","exception","handle","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","unstable_now","unstable_forceFrameRate","cancelAnimationFrame","sortIndex","expirationTime","priorityLevel","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","unstable_shouldYield","unstable_wrapCallback","FormLabel","_ref$as","as","Component","column","srOnly","htmlFor","useContext","columnClass","aCallable","newPromiseCapabilityModule","perform","iterate","stat","capability","$promiseResolve","samplesLeft","doCheckSilence","frameDataWithoutAlpha","getImageData","ex","checkSilence","hasPassiveSupport","mergeSchemaGroup","mergeSchemas","compacted","mergers","ignoreAdditionalProperties","subSchema","otherSubSchemas","ownPatterns","allOtherKeys","keysMatchingPattern","pk","ownPatternKeys","allOtherPatterns","$errorKeyword","$schemaValue","$schemaPath","getProperty","$errs","$isData","getData","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$closingBraces","$validateSchema","$ruleErrs","$i","$ruleErr","$asyncKeyword","statements","$wasComposite","$code","$parentData","$parentDataProperty","def_callRuleValidate","modifying","def_customError","isConstructor","getAsyncIterator","getIteratorMethod","getBuiltIn","getBuiltInPrototypeMethod","arrayIterator","arrayIteratorNext","safeArrayIterator","SafeArrayIterator","asyncItems","argumentsLength","mapfn","usingAsyncIterator","usingSyncIterator","copyExifWithoutOrientation","getApp1Segment","FileReader","setUint16","readAsArrayBuffer","UZIP","readUshort","readUint","_readLocal","readUTF8","csize","inflateRaw","deflate","deflateRaw","adler","writeUint","writeUshort","_noNeed","cpr","usize","sizeUTF8","_writeHeader","writeUTF8","readASCII","writeASCII","_goodIndex","_hash","_putsE","_copyExact","lits","strt","_writeBlock","_bestMatch","of0","lhst","df0","dhst","exb","dxb","_howLong","saved","_putsF","getTrees","contSize","fltree","fdtree","ltree","dtree","itree","ihst","makeCodes","revCodes","ordr","_codeTiny","_writeLit","_hufTree","_lenCodes","getSecond","nonZero","lit","setDepth","restrictDepth","_bitsF","_bitsE","_decodeTiny","codes2map","_get17","_check","flmap","fdmap","imap","lmap","dmap","ttree","_copyOut","ldef","ddef","rev15","_get25","pushV","_mergeNamespaces","UPNG","nextZero","readBytes","decodeImage","_getBPP","tabs","tRNS","PLTE","_decompress","interlace","CgBI","_filterZero","_paeth","_IHDR","compress","_copyTile","frames","num_frames","num_plays","blend","toRGBA8","acTL","_bin","addErr","dither","Int16Array","_main","sRGB","pHYs","iCCP","pako","plte","cimg","compressPNG","bpl","img","bpp","_prepareDiff","_updateFrame","quantize","est","rgba","inds","abuf","_filterLine","getKDtree","getNearest","ind","planeDst","bst","tdst","estats","splitPixels","eMq255","eMq","vecDot","multVec","dot","sml","Cov","encodeLL","toArrayBuffer","set16","set32","setUint32","seek","_dly","toBlob","CHROME","FIREFOX","DESKTOP_SAFARI","IE","IOS","ETC","WorkerGlobalScope","cordova","CustomFile","getOriginalSymbol","CustomFileReader","getFilefromDataUrl","lastModified","getDataUrlFromFile","onload","onerror","readAsDataURL","loadImage","Image","getBrowserName","cachedResult","documentMode","approximateBelowMaximumCanvasSizeOfBrowser","getNewCanvasAndCtx","drawImageInCanvas","drawFileInCanvas","$Try_2_Post","$Try_2_Catch","$Try_3_Catch","MOBILE_SAFARI","createImageBitmap","canvasToFile","$If_4","$If_5","convertToBlob","quality","$If_6","cleanupCanvasMemory","isAutoOrientationInBrowser","getExifOrientation","handleMaxWidthOrHeight","maxWidthOrHeight","followExifOrientation","incProgress","aborted","reason","setProgress","maxIteration","maxSizeMB","exifOrientation","$If_2","initialQuality","$Loop_3","alwaysKeepResolution","$Loop_3_exit","compressOnWebWorker","terminate","imageCompressionLibUrl","libURL","imageCompression","useWebWorker","$Try_1_Catch","preserveExif","toIndexedObject","toIntegerOrInfinity","$lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","detectSilentVideo","VideoTrack","isUserMediaTrack","LocalVideoTrack","workaroundSilentLocalVideo","_workaroundSilentLocalVideo","_workaroundSilentLocalVideoCleanup","_checkIfCanCaptureFrames","_trackSender","isPublishing","_setSenderMediaStreamTrack","useProcessed","unprocessedTrack","processedTrack","setMediaStreamTrack","_unprocessedTrack","addProcessor","removeProcessor","_updateElementsMediaStreamTrack","_captureFrames","processor","_restartProcessor","localVideoTrack","_dummyEl","onUnmute","play","isSilent","_restart","paused","MATCH","lookupValue","lookupArray","matchType","VLOOKUP","needle","rangeLookup","HLOOKUP","transposedTable","transpose","baseUniq","comparator","validSymbols","TOKEN_TYPE_OPERATOR","SUPPORTED_TOKENS","expression","literalValue","analyzedTokens","analyzeTokens","expressionLength","cursorIndex","processedValue","processedSymbol","char","tokenizeExpression","operator","freeGlobal","freeSelf","__makeTemplateObject","cooked","buildBackgroundImageStage","templateObject_1","templateObject_2","webglHelper_1","gl","positionBuffer","texCoordBuffer","personMaskTexture","backgroundImage","vertexShaderSource","glsl","fragmentShaderSource","outputWidth","outputHeight","outputRatio","vertexShader","compileShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","program","createPiplelineStageProgram","backgroundScaleLocation","getUniformLocation","backgroundOffsetLocation","inputFrameLocation","personMaskLocation","backgroundLocation","coverageLocation","lightWrappingLocation","blendModeLocation","useProgram","uniform2f","uniform1i","uniform1f","backgroundTexture","updateBackgroundImage","createTexture","RGBA8","naturalWidth","naturalHeight","LINEAR","texSubImage2D","TEXTURE_2D","RGBA","UNSIGNED_BYTE","backgroundWidth","backgroundHeight","activeTexture","TEXTURE1","bindTexture","TEXTURE2","bindFramebuffer","FRAMEBUFFER","drawArrays","TRIANGLE_STRIP","updateCoverage","coverage","updateLightWrapping","lightWrapping","updateBlendMode","blendMode","cleanUp","deleteTexture","deleteProgram","deleteShader","interface_1","matchState","criterion","toMatch","globStrings","glob","Glob","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","_getDefaultMatchCriteria","mapObj","_pluginapi","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","TransitionHookScope","STATE","makeEvent","transitionService","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","registeredHook","NativePromiseConstructor","isCallable","speciesConstructor","promiseResolve","defineBuiltIn","NativePromisePrototype","real","onFinally","implementation","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCDate","setUTCHours","_assertThisInitialized","ReferenceError","innerResult","innerError","arrayToReversed","$Array","toReversed","$repeat","$RangeError","RangeError","repeat","nativeToFixed","divide","dataToString","fractionDigits","fractDigits","useDropdownToggle","_ref$show","_ref$toggle","toggle","setToggle","DropdownToggle","_useDropdownToggle","_useDropdownToggle$","fnToString","Stack","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","keysIn","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","isFlat","isFull","isArr","isFunc","subValue","toDate","argStr","DataTrackTransceiver","maxPacketLifeTime","maxRetransmits","ordered","Track","DefaultDataTrackSender","LocalDataTrack","dataTrackSender","DataTrackSender","reliable","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","IS_NODE","setToStringTag","setSpecies","anInstance","task","microtask","hostReportErrors","Queue","InternalStateModule","PromiseConstructorDetection","PROMISE","FORCED_PROMISE_CONSTRUCTOR","CONSTRUCTOR","NATIVE_PROMISE_REJECTION_EVENT","REJECTION_EVENT","NATIVE_PROMISE_SUBCLASSING","SUBCLASSING","getInternalPromiseState","getterFor","setInternalState","PromiseConstructor","PromisePrototype","newPromiseCapability","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","rejection","onHandleUnhandled","enter","exit","isReject","notified","reactions","onUnhandled","initEvent","facade","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","GetIntrinsic","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","formatISO","_options$format","_options$representati","originalDate","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","separator","ASC","BAHTTEXT","CHAR","CLEAN","CODE","CONCATENATE","trueFound","falseFound","DBCS","DOLLAR","EXACT","text1","text2","FIND","find_text","within_text","FIXED","HTML2TEXT","LEFT","LEN","LOWER","MID","begin","NUMBERVALUE","decimal_separator","group_separator","PRONETIC","REGEXEXTRACT","regular_expression","REGEXMATCH","full","REGEXREPLACE","REPLACE","new_text","REPT","RIGHT","foundAt","SPLIT","SUBSTITUTE","old_text","occurrence","TEXT","TRIM","UNICHAR","UNICODE","UPPER","VALUE","TO_STRING_TAG","TAG","STATIC","USE_SYMBOL_AS_UID","$Object","isStrictComparable","IceReport","availableSend","of","olderStats","newerStats","secondsElapsed","deltaBytesSent","deltaBytesReceived","availableOutgoingBitrate","currentRoundTripTime","$findLast","findLast","subYears","requiredArgs","toInteger","addYears","inspectSource","ENVIRONMENT","PromiseRejectionEvent","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","itemsCompacted","schemasAtLastPos","subSchemas","schemaAtPos","getItemSchemas","mergeItems","minErrConfig","objectMaxDepth","errorHandlingConfig","isValidObjectMaxDepth","maxDepth","minErr","ErrorConstructor","paramPrefix","templateArgs","sliceArgs","toDebugString","REGEX_STRING_REGEXP","VALIDITY_STATE_PROPERTY","lowercase","uppercase","msie","jqLite","jQuery","angularModule","ngMinErr","isWindow","isPrimitive","isBlankObject","forEachSorted","reverseParams","iteratorFn","nextUid","setHashKey","$$hashKey","baseExtend","objs","deep","ii","isRegExp","cloneNode","toInt","isNumberNaN","valueFn","hasCustomToString","isError","isScope","$evalAsync","isPromiseLike","TYPED_ARRAY_REGEXP","escapeForRegexp","attr","nodeName_","arrayRemove","destination","stackSource","stackDest","copyRecurse","copyElement","needsRecurse","copied","copyType","simpleCompare","o1","keySet","createMap","csp","ngCspElement","ngCspAttribute","noUnsafeEval","noInlineStyle","jq","name_","ngAttrPrefixes","array1","array2","curryArgs","toJsonReplacer","toJson","pretty","fromJson","ALL_COLONS","timezoneToOffset","timezone","requestedTimezoneOffset","convertTimezoneToLocal","dateTimezoneOffset","addDateMinutes","startingTag","empty","elemHtml","NODE_TYPE_TEXT","tryDecodeURIComponent","parseKeyValue","keyValue","splitPoint","toKeyValue","arrayValue","encodeUriQuery","encodeUriSegment","pctEncodeSpaces","isAutoBootstrapAllowed","currentScript","HTMLScriptElement","SVGScriptElement","getNamedItem","allowAutoBootstrap","bootstrap","strictDi","doBootstrap","$provide","debugInfoEnabled","$compileProvider","createInjector","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","reload","getTestability","rootElement","SNAKE_CASE_REGEXP","snake_case","letter","bindJQueryFired","assertArg","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","bindFnToScope","lastInstance","getBlockNodes","blockNodes","endNode","shallowCopy","serializeObject","JQLite","expando","jqCache","jqId","DASH_LOWERCASE_REGEXP","MS_HACK_REGEXP","MOUSE_EVENT_MAP","mouseleave","mouseenter","jqLiteMinErr","fnCamelCaseReplace","kebabToCamel","SINGLE_TAG_REGEXP","HTML_REGEXP","TAG_NAME_REGEXP","XHTML_TAG_REGEXP","wrapMap","jqLiteIsTextNode","jqLiteAcceptsData","jqLiteBuildFragment","createDocumentFragment","lastChild","textContent","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","jqLiteContains","compareDocumentPosition","argIsString","jqLiteAddNodes","jqLiteReady","jqLiteClone","jqLiteDealoc","onlyDescendants","cleanData","querySelectorAll","jqLiteOff","unsupported","expandoStore","jqLiteExpandoStore","removeHandler","listenerFns","jqLiteRemoveData","expandoId","ng339","$destroy","createIfNecessary","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","jqLiteRemoveClass","cssClasses","cssClass","jqLiteAddClass","existingClasses","jqLiteController","jqLiteInheritedData","jqLiteEmpty","jqLiteRemove","keepData","readyState","JQLitePrototype","ready","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","ALIASED_ATTR","getBooleanAttrName","booleanAttr","defaultHandlerWrapper","specialMouseHandlerWrapper","related","relatedTarget","$$jqLiteProvider","hashKey","nextUidFn","objType","removeData","hasData","inheritedData","isolateScope","removeAttr","cssKebabToCamel","lowercasedName","isBooleanAttr","getText","$dv","selected","nodeCount","nodeValue","eventHandler","isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","handlerWrapper","specialHandlerWrapper","elem","createEventHandler","types","addHandler","noEventListener","one","onFn","replaceWith","replaceNode","replaceChild","contentDocument","prepend","wrapNode","newElement","toggleClass","condition","classCondition","nextElementSibling","triggerHandler","extraParameters","dummyEvent","eventFnsCopy","handlerArgs","arg3","unbind","nanKey","NgMapShim","_values","_lastKey","_lastIndex","_transformKey","NgMap","$$MapProvider","ARROW_ARG","FN_ARGS","FN_ARG_SPLIT","FN_ARG","STRIP_COMMENTS","$injectorMinErr","stringifyFn","extractArgs","fnText","modulesToLoad","INSTANTIATING","providerSuffix","loadedModules","providerCache","supportObject","instantiate","instanceCache","serviceName","decorFn","origProvider","providerInjector","orig$get","origInstance","instanceInjector","$delegate","createInternalInjector","protoInstanceInjector","runBlocks","loadModules","moduleFn","_runBlocks","runInvokeQueue","_invokeQueue","_configBlocks","invokeArgs","provider_","enforceReturnValue","factoryFn","enforce","getService","injectionArgs","$$annotate","$$ngIsClass","isClass","annotate","$AnchorScrollProvider","autoScrollingEnabled","disableAutoScrolling","getYOffset","elemTop","scrollBy","elm","getElementsByName","newVal","oldVal","anonFn","underscore","$animateMinErr","NG_ANIMATE_CLASSNAME","mergeClasses","prepareAnimateOptions","$$CoreAnimateJsProvider","$$CoreAnimateQueueProvider","postDigestQueue","postDigestElements","$$AnimateRunner","domOperation","classesAdded","updateData","classesRemoved","$$postDigest","handleCSSClassChanges","addRemoveClassesPostDigest","runner","klass","splitClasses","toAdd","toRemove","$AnimateProvider","classNameFilter","customFilter","$$registeredAnimations","filterFn","$$animateQueue","domInsert","afterElement","afterNode","extractElementNode","previousElementSibling","leave","addclass","setClass","tempClasses","$$AnimateAsyncRunFactoryProvider","$$rAF","waitQueue","waitForTick","$$AnimateRunnerFactoryProvider","$sniffer","$$animateAsyncRun","$$isDocumentHidden","AnimateRunner","setHost","rafTick","_doneCallbacks","_tick","timeoutTick","runners","getPromise","resolveHandler","rejectHandler","$CoreAnimateCssProvider","initialOptions","$$prepared","cleanupStyles","Browser","$log","pendingDeferIds","isMock","outstandingRequestCount","outstandingRequestCallbacks","completeOutstandingRequest","$$completeOutstandingRequest","$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","cachedState","lastHistoryState","lastBrowserUrl","baseElement","pendingLocation","getCurrentState","cacheState","sameState","sameBase","stripHash","getHash","urlChangeListeners","urlChangeInit","cacheStateAndFireUrlChange","fireStateOrUrlChange","lastCachedState","prevLastHistoryState","onUrlChange","$$applicationDestroyed","$$checkUrlChange","baseHref","timeoutId","deferId","$BrowserProvider","$CacheFactoryProvider","cacheFactory","cacheId","MAX_VALUE","lruHash","freshEnd","staleEnd","refresh","lruEntry","removeAll","nextEntry","prevEntry","$TemplateCacheProvider","$cacheFactory","$compileMinErr","_UNINITIALIZED_VALUE","$CompileProvider","$$sanitizeUriProvider","hasDirectives","Suffix","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","makeMap","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","bindingCache","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","scopeName","optional","parseDirectiveBindings","bindToController","registerDirective","directiveFactory","assertValidDirectiveName","$exceptionHandler","directives","getDirectiveRequire","getDirectiveRestrict","$$moduleName","registerComponent","makeInjectable","tElement","tAttrs","$element","$attrs","ddo","controllerAs","identifierForController","transclude","aHrefSanitizationWhitelist","imgSrcSanitizationWhitelist","preAssignBindingsEnabled","strictComponentBindingsEnabled","TTL","onChangesTtl","commentDirectivesEnabledConfig","commentDirectivesEnabled","cssClassDirectivesEnabledConfig","cssClassDirectivesEnabled","$interpolate","$templateRequest","$parse","$animate","$$sanitizeUri","onChangesQueue","SIMPLE_ATTR_NAME","specialAttrHolder","flushOnChangesQueue","Attributes","attributesToCopy","$attr","$$element","safeAddClass","$normalize","directiveNormalize","$addClass","classVal","$removeClass","$updateClass","newClasses","oldClasses","tokenDifference","writeAttr","booleanKey","aliasedKey","trimmedSrcset","rawUris","nbrUrisWith2parts","innerIdx","lastTuple","attribute","removeNamedItem","setNamedItem","setSpecialAttr","$$observers","$$inter","startSymbol","endSymbol","denormalizeTemplate","NG_ATTR_BINDING","MULTI_ELEMENT_DIR_RE","$$addBindingInfo","binding","$$addBindingClass","$$addScopeInfo","isolated","noTemplate","dataName","$$addScopeClass","$$createComment","createComment","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","compositeLinkFn","compileNodes","namespace","cloneConnectFn","needsNewScope","$parent","$linkNode","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","wrapTemplate","controllerName","$rootElement","nodeLinkFn","childLinkFn","linkFnFound","nodeLinkFnFound","linkFns","notLiveList","mergeConsecutiveTextNodes","collectDirectives","applyDirectivesToNode","terminal","transcludeOnThisElement","templateOnThisElement","childScope","stableNodeList","nodeListLength","createBoundTranscludeFn","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","containingScope","$$transcluded","boundSlots","$$slots","slotName","attrsMap","addDirective","nName","ngAttrName","isNgAttr","nAttrs","attrStartName","attrEndName","PREFIX_REGEXP","multiElementMatch","directiveIsMultiElement","addAttrInterpolateDirective","animVal","interpolateFn","templateNode","templateNodeParent","hasCompileParent","expressions","addTextInterpolateDirective","collectCommentDirectives","byPriority","groupScan","attrStart","attrEnd","groupElementsLinkFnWrapper","linkFn","compilationGenerator","eager","compiled","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","$template","directiveValue","terminalPriority","newScopeDirective","controllerDirectives","newIsolateScopeDirective","templateDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","hasElementTranscludeDirective","$compileNode","replaceDirective","childTranscludeFn","didScanForMultipleTransclusion","mightHaveMultipleTransclusionError","$$start","$$end","assertNoDuplicate","$$tlb","candidateDirective","scanningIndex","$$parentNode","slots","slotMap","filledSlots","elementSelector","filled","$$isolateScope","$$newScope","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectiveScope","mergeTemplateAttributes","compileTemplateUrl","$$originalDirective","addLinkFns","cloneAndAnnotateFn","linkNode","controllerScope","elementControllers","scopeBindingInfo","cloneAttachFn","scopeToChild","slotTranscludeFn","isSlotFilled","controllerKey","$scope","$transclude","controllerInstance","setupControllers","$$isolateBindings","initializeDirectiveBindings","removeWatches","controllerDirective","$$bindings","bindingInfo","controllerResult","getControllers","$onChanges","initialChanges","$onInit","$doCheck","$onDestroy","invokeLinkFn","$postLink","inheritType","newScope","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","linkQueue","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","tempTemplateAttrs","childBoundTranscludeFn","beforeTemplateLinkNode","linkRootElement","$$destroyed","ignoreChildLinkFn","what","previousDirective","wrapModuleNameIfDefined","moduleName","trustedContext","attrNormalizedName","HTML","RESOURCE_URL","getTrustedContext","mustHaveExpression","allOrNothing","$$scope","oldValue","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","annotation","strictBindingsCheck","removeWatchCollection","recordChanges","triggerOnChangesHook","SimpleChange","lastValue","parentGet","parentSet","removeWatch","literal","parentValueWatch","parentValue","$stateful","$watchCollection","deepWatch","isFirstChange","SPECIAL_CHARS_REGEXP","str1","str2","tokens1","tokens2","jqNodes","$controllerMinErr","CNTRL_REG","ident","$ControllerProvider","globals","allowGlobals","identifier","controllerPrototype","addIdentifier","$DocumentProvider","$$IsDocumentHiddenProvider","changeListener","$ExceptionHandlerProvider","cause","$$ForceReflowProvider","APPLICATION_JSON","CONTENT_TYPE_APPLICATION_JSON","JSON_START","JSON_ENDS","JSON_PROTECTION_PREFIX","$httpMinErr","serializeValue","$HttpParamSerializerProvider","$HttpParamSerializerJQLikeProvider","toSerialize","topLevel","defaultHttpResponseTransform","tempData","contentType","hasJsonContentType","jsonStart","parseHeaders","fillInParsed","headerVal","headerKey","headersGetter","headersObj","transformData","fns","isSuccess","$HttpProvider","transformResponse","transformRequest","isBlob","isFormData","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","jsonpCallbackParam","useApplyAsync","interceptorFactories","interceptors","$browser","$httpBackend","$$cookieReader","defaultCache","reversedInterceptors","requestConfig","defHeaderName","lowercaseDefHeaderName","reqHeaderName","defHeaders","reqHeaders","defaultHeadersIteration","headerContent","processedHeaders","headerFn","executeHeaderFns","mergeHeaders","requestInterceptors","responseInterceptors","request","requestError","responseError","chainInterceptors","reqData","withCredentials","cachedResp","isJsonp","getTrustedResourceUrl","serializedParams","buildUrl","sanitizeJsonpCallbackParam","pendingRequests","removePendingReq","resolvePromiseWithResult","resolvePromise","xsrfValue","urlIsSameOrigin","headersString","statusText","xhrStatus","resolveHttpPromise","$applyAsync","responseType","createApplyHandlers","eventHandlers","uploadEventHandlers","applyHandlers","callEventHandler","sendReq","thenFn","rejectFn","resp","interceptorFactory","createShortMethods","createShortMethodsWithData","$xhrFactoryProvider","XMLHttpRequest","$HttpBackendProvider","$jsonpCallbacks","$xhrFactory","createXhr","$browserDefer","rawDocument","callbackPath","createCallback","jsonpDone","wasCalled","jsonpReq","getResponse","completeRequest","removeCallback","xhr","setRequestHeader","responseText","urlResolve","getAllResponseHeaders","onabort","ontimeout","upload","timeoutRequest","createHttpBackend","$interpolateMinErr","$InterpolateProvider","startSymbolLength","endSymbolLength","escapedStartRegexp","escapedEndRegexp","unescapeText","constantWatchDelegate","objectEquality","constantInterp","unwatch","$$watchDelegate","endIndex","parseFns","textLength","expressionPositions","parseStringifyInterceptor","throwNoconcat","getValue","getTrusted","interr","$watchGroup","oldValues","currValue","$IntervalProvider","$$q","intervals","invokeApply","hasParams","iteration","skipApply","$$intervalId","markQExceptionHandled","$jsonpCallbacksProvider","callbackMap","callbackId","$$counter","called","PATH_MATCH","DEFAULT_PORTS","$locationMinErr","encodePath","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DOUBLE_SLASH_REGEX","parseAppUrl","prefixed","$$path","$$search","$$hash","stripBaseUrl","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","pathUrl","$$compose","$$url","$$absUrl","$$urlUpdatedByLocation","$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutHashUrl","withoutBaseUrl","firstPathSegmentMatch","windowsFilePathExp","removeWindowsDriveName","LocationHashbangInHtml5Url","locationPrototype","$$replace","absUrl","locationGetter","locationGetterSetter","paramValue","preprocess","$LocationProvider","html5Mode","requireBase","rewriteLinks","LocationMode","initialUrl","stripFile","IGNORE_URI_REGEXP","setBrowserUrlWithFallback","oldUrl","ctrlKey","metaKey","shiftKey","which","button","absHref","initializing","$broadcast","afterLocationChange","$digest","currentReplace","urlOrStateChanged","$LogProvider","debugEnabled","flag","formatStackTrace","consoleLog","logFn","sourceURL","formatError","Location","$parseMinErr","objectValueOf","getStringValue","OPERATORS","ESCAPE","Lexer","lex","readString","peek","readNumber","isIdentifierStart","peekMultichar","readIdent","isWhitespace","ch2","ch3","op1","op2","op3","throwError","chars","codePointAt","isValidIdentifierStart","isIdentifierContinue","isValidIdentifierContinue","isExpOperator","colStr","peekCh","quote","rawString","AST","lexer","ifDefined","plusFn","Program","ExpressionStatement","AssignmentExpression","ConditionalExpression","LogicalExpression","BinaryExpression","UnaryExpression","CallExpression","MemberExpression","Literal","ArrayExpression","Property","ObjectExpression","ThisExpression","LocalsExpression","NGValueParameter","ast","expressionStatement","expect","filterChain","assignment","ternary","isAssignable","alternate","consequent","logicalOR","consume","logicalAND","equality","relational","multiplicative","unary","primary","arrayDeclaration","selfReferential","literals","parseArguments","baseExpression","peekToken","peekAhead","findConstantAndWatchExpressions","parentIsPure","allConstants","argsToWatch","isStatelessFilter","astIsPure","isPure","expr","toWatch","filterName","isStateless","getInputs","lastExpression","assignableAST","ASTCompiler","ASTInterpreter","Parser","astCompiler","getValueOf","$ParseProvider","identStart","identContinue","addLiteral","literalName","setIdentifierFns","identifierStart","identifierContinue","$parseOptions","interceptorFn","parsedExpression","oneTime","oneTimeLiteralWatchDelegate","oneTimeWatchDelegate","inputsWatchDelegate","addInterceptor","expressionInputDirtyCheck","oldValueOfValue","compareObjectIdentity","prettyPrintExpression","lastResult","inputExpressions","oldInputValueOf","newInputValue","oldInputValueOfValues","oldInputValues","oneTimeListener","old","isAllDefined","allDefined","watchDelegate","useInputs","$QProvider","errorOnUnhandledRejections","qFactory","$$QProvider","nextTick","exceptionHandler","$qMinErr","queueSize","checkQueue","Deferred","rejectPromise","notifyPromise","processChecks","toCheck","isStateExceptionHandled","markQStateExceptionHandled","errorMessage","scheduleProcessQueue","processScheduled","processQueue","$$reject","$$resolve","doReject","handleCallback","callbackOutput","errback","progressBack","$Q","pur","$$RAFProvider","webkitRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","supported","$RootScopeProvider","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","destroyChildScope","$event","currentScope","cleanUpScope","$$childHead","$$nextSibling","$$prevSibling","$$childTail","$$watchers","Scope","$id","$$listeners","$$listenerCount","$$watchersCount","isolate","$$ChildScope","ChildScope","createChildScopeClass","watchExp","watcher","initWatchVal","$$digestWatchIndex","incrementWatchersCount","watchExpressions","newValues","deregisterFns","changeReactionScheduled","firstRun","shouldCall","watchGroupAction","unwatchFn","$watchCollectionInterceptor","veryOldValue","trackVeryOldValue","changeDetected","changeDetector","internalArray","internalObject","initRun","oldLength","_value","newLength","newItem","oldItem","watch","watchers","dirty","logIdx","asyncTask","ttl","watchLog","beginPhase","flushApplyAsync","asyncQueuePosition","asyncQueue","traverseScopesLoop","clearPhase","postDigestQueuePosition","decrementListenerCount","applyAsyncQueue","namedListeners","indexOfListener","$emit","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","$$SanitizeUriProvider","isImage","normalizedVal","nextId","filters","own","assignable","stage","computing","recurse","return_","generateFunction","fnKey","intoId","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","getHasOwnProperty","nonComputedMember","notNull","member","stringEscapeFn","stringEscapeRegex","rhs","lhs","isLiteral","isConstant","$sceMinErr","SCE_CONTEXTS","CSS","UNDERSCORE_LOWERCASE_REGEXP","snakeToCamel","adjustMatchers","matchers","adjustedMatchers","adjustMatcher","$SceDelegateProvider","resourceUrlWhitelist","resourceUrlBlacklist","htmlSanitizer","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","trustedValueHolderBase","byType","trustAs","maybeTrusted","allowed","isResourceUrlAllowedByPolicy","$SceProvider","$sceDelegate","sce","parseAs","enumValue","lName","$SnifferProvider","eventSupport","hasHistoryPushState","nw","app","pushState","android","boxee","bodyStyle","transitions","hasEvent","divElm","$templateRequestMinErr","$TemplateRequestProvider","httpOptions","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","transformer","$$TestabilityProvider","testability","opt_exactMatch","getElementsByClassName","dataBinding","bindingName","$TimeoutProvider","deferreds","$$timeoutId","urlParsingNode","originUrl","requestUrl","$WindowProvider","$$CookieReader","lastCookies","lastCookieString","safeDecodeURIComponent","cookieArray","currentCookieString","safeGetCookie","$$CookieReaderProvider","$FilterProvider","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","anyPropertyKey","predicateFn","matchAgainstAnyProp","getTypeForFilter","shouldMatchPrimitives","deepCompare","createPredicateFn","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","$locale","NUMBER_FORMATS","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","GROUP_SEP","groupSep","decimalSep","parsedNumber","isInfinity","isZero","numStr","formattedText","numberOfIntegerDigits","zeros","minFrac","fractionLen","roundAt","digit","reduceRight","roundNumber","integerLen","decimals","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","padNumber","negWrap","neg","dateGetter","dateStrGetter","shortForm","standAlone","getFirstThursdayOfYear","dayOfWeekOnFirst","weekGetter","firstThurs","eraGetter","ERAS","DATE_FORMATS","yyyy","MMMM","MMM","HH","sss","EEEE","EEE","AMPMS","zone","GG","GGG","GGGG","ERANAMES","DATE_FORMATS_SPLIT","NUMBER_STRING","R_ISO8601_STR","DATETIME_FORMATS","tzHour","tzMin","dateSetter","setUTCFullYear","timeSetter","ms","jsonStringToDate","sliceFn","sortPredicate","reverseOrder","compareFn","predicates","descending","defaultCompare","compareValues","tieBreaker","predicateValues","objectValue","getPredicateValue","type1","type2","ngDirective","htmlAnchorDirective","xlinkHref","ngAttributeAliasDirectives","defaultLinkFn","ngModel","htmlAttr","ngAttr","ngPattern","nullFormCtrl","$addControl","$$renameControl","control","$name","$removeControl","$setValidity","$setDirty","$setPristine","$setSubmitted","PENDING_CLASS","SUBMITTED_CLASS","FormController","$$controls","$error","$$success","$pending","ngForm","$dirty","$pristine","$invalid","$submitted","$$parentForm","$$animate","setupValidity","$rollbackViewValue","$commitViewValue","newName","oldName","PRISTINE_CLASS","DIRTY_CLASS","$setUntouched","addSetValidityMethod","clazz","unset","formDirectiveFactory","isNgForm","formElement","VALID_CLASS","nameAttr","ctrls","handleFormSubmission","setter","getSetter","formDirective","ngFormDirective","$$classCache","INVALID_CLASS","cachedToggleClass","switchValue","toggleValidationCss","validationErrorKey","combinedState","createAndSet","isObjectEmpty","unsetAndCleanup","ISO_DATE_REGEXP","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","PARTIAL_VALIDATION_TYPES","inputType","baseInputType","stringBasedInputType","createDateInputType","createDateParser","isoWeek","existingDate","milliseconds","addDays","minVal","maxVal","stepVal","badInputChecker","numberFormatterParser","ngMin","$validators","$isEmpty","parseNumberAttrVal","$validate","ngMax","ngStep","modelValue","viewValue","isValidForStep","$$parserName","email","doTrim","ngTrim","ev","checked","$setViewValue","$render","$viewValue","supportsRange","$$hasNativeValidators","validity","hasMinAttr","hasMaxAttr","hasStepAttr","originalRender","setInitialValueAndObserver","htmlAttrName","changeFn","rangeUnderflow","rangeOverflow","$modelValue","elVal","stepMismatch","trueValue","parseConstantExpr","ngTrueValue","falseValue","ngFalseValue","$formatters","$parsers","composing","deferListener","keyCode","origBadInput","badInput","origTypeMismatch","typeMismatch","mapping","iso","previousDate","$options","getOption","isValidDate","parseObservedDateValue","parsedDate","ngModelMinErr","isNumberInteger","countDecimals","numString","decimalSymbolIndex","stepBase","isNonIntegerValue","isNonIntegerStepBase","isNonIntegerStep","valueDecimals","stepBaseDecimals","stepDecimals","decimalCount","multiplier","parseFn","inputDirective","CONSTANT_VALUE_REGEXP","ngValueDirective","updateElementValue","propValue","tplAttr","ngValue","ngBindDirective","templateElement","ngBind","ngBindTemplateDirective","ngBindTemplate","ngBindHtmlDirective","ngBindHtmlGetter","ngBindHtml","ngBindHtmlWatch","getTrustedHtml","ngChangeDirective","$viewChangeListeners","ngChange","classDirective","indexWatchExpression","oldClassString","isOneTime","watchExpression","toFlatValue","toClassString","watchAction","newClassValue","newClassString","ngClassWatchAction","classCounts","oldModulo","digestClassCounts","classArray","classesToUpdate","oldClassArray","newClassArray","toRemoveArray","arrayDifference","toAddArray","toRemoveString","toAddString","$index","newModulo","classString","removeClasses","classValue","flatValue","hasUndefined","ngClassDirective","ngClassOddDirective","ngClassEvenDirective","ngCloakDirective","ngControllerDirective","ngEventDirectives","forceAsyncEvents","ngIfDirective","block","previousElements","ngIf","ngIncludeDirective","$anchorScroll","srcExp","ngInclude","onloadExp","autoScrollExp","autoscroll","previousElement","currentElement","changeCounter","cleanupLastIncludeContent","afterAnimation","thisChangeId","ngIncludeFillContentDirective","ngInitDirective","ngInit","ngListDirective","ngList","trimValues","UNTOUCHED_CLASS","TOUCHED_CLASS","EMPTY_CLASS","NOT_EMPTY_CLASS","NgModelController","$$rawModelValue","$asyncValidators","$untouched","$touched","defaultModelOptions","$$parsedNgModel","$$parsedNgModelAssign","$$ngModelGet","$$ngModelSet","$$pendingDebounce","$$parserValid","$$currentValidationRunId","$$attr","$$timeout","$$exceptionHandler","$$updateEmptyClasses","$$lastCommittedViewValue","$$runValidators","$$initGetterSetters","invokeModelGetter","invokeModelSetter","$$$p","$setTouched","prevValid","prevModelValue","allowInvalid","allValid","$$writeModelToScope","doneCallback","validatorPromises","syncValidatorsValid","errorKey","localValidationRunId","setValidity","validationDone","validator","$$parseAndValidate","writeToModelIfNeeded","$$debounceViewValueCommit","debounceDelay","$overrideModelOptions","createChild","ngModelDirective","modelCtrl","formCtrl","optionsCtrl","setTouched","DEFAULT_REGEXP","ModelOptions","$$options","inheritAll","updateOnDefault","updateOn","getterSetter","ngModelOptionsDirective","NgModelOptionsController","$$attrs","parentOptions","parentCtrl","modelOptionsDefinition","ngModelOptions","ngNonBindableDirective","ngOptionsMinErr","NG_OPTIONS_REGEXP","ngOptionsDirective","optionTemplate","optGroupTemplate","selectElement","registerOption","selectCtrl","ngModelCtrl","hasEmptyOption","emptyOption","providedEmptyOption","ngOptions","optionsExp","valueName","keyName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","Option","selectValue","getOptionValuesKeys","optionValues","optionValuesKeys","itemKey","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","parseOptionsExpression","listFragment","addOptionElement","optionElement","updateOptionElement","getAndUpdateSelectedOption","generateUnknownOptionValue","writeValue","selectedOptions","readValue","selectedValues","selections","selectedOption","selectedIndex","removeUnknownOption","selectUnknownOrEmptyOption","unselectEmptyOption","optionScope","optionEl","needsRerender","$isEmptyOptionSelected","groupElementMap","groupElement","nextValue","ngPluralizeDirective","BRACE","IS_WHEN","lastCount","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","updateElementText","newText","attributeName","tmpMatch","whenKey","countIsNaN","pluralCat","whenExpFn","ngRepeatDirective","NG_REMOVED","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","getBlockStart","getBlockEnd","ngRepeat","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","lastBlockMap","nextNode","collectionLength","trackById","trackByIdFn","collectionKeys","nextBlockOrder","previousNode","nextBlockMap","blockKey","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngShowDirective","ngShow","ngHideDirective","ngHide","ngStyleDirective","ngStyle","oldStyles","ngSwitchDirective","cases","ngSwitchController","watchExpr","ngSwitch","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","selectedTransclude","caseElement","selectedScope","anchor","ngSwitchWhenDirective","ngSwitchWhen","ngSwitchWhenSeparator","whenCase","ngSwitchDefaultDirective","ngTranscludeMinErr","ngTranscludeDirective","fallbackLinkFn","ngTransclude","ngTranscludeSlot","useFallbackContent","notWhitespace","scriptDirective","noopNgModelController","setOptionSelectedStatus","SelectController","optionsMap","unknownOption","renderUnknownOption","unknownVal","updateUnknownOption","selectEmptyOption","realVal","hasOption","currentlySelectedOption","hashedVal","addOption","scheduleRender","removeOption","$hasEmptyOption","$isUnknownOptionSelected","renderScheduled","updateScheduled","scheduleViewValueUpdate","renderAfter","optionAttrs","interpolateValueFn","interpolateTextFn","removal","previouslySelected","removeValue","selectDirective","shouldBeSelected","lastView","lastViewRef","optionDirective","selectCtrlName","requiredDirective","patternDirective","patternExp","maxlengthDirective","maxlength","intVal","minlengthDirective","minlength","originalCleanData","jqName","elems","bindJQuery","ensure","$$minErr","configFn","invokeQueue","configBlocks","invokeLater","moduleInstance","invokeLaterAndSetModuleName","insertMethod","recipeName","factoryFunction","setupModuleLoader","textarea","form","select","ngClass","ngClassEven","ngClassOdd","ngCloak","ngController","ngNonBindable","ngPluralize","ngSwitchDefault","ngRequired","ngMinlength","ngMaxlength","$animateCss","$$animateJs","$$forceReflow","$interval","$httpParamSerializer","$httpParamSerializerJQLike","$$testability","$$jqLite","$$Map","angularVersion","publishExternalAPI","opt_precision","vf","getDecimals","getVF","appElement","getNgAttribute","angularInit","$$csp","Source","RemoteTrackPublicationSignaling","isSwitchedOff","_isSwitchedOff","trackTransceiver","subscribeFailed","_error","setPriority","_priority","setSwitchedOff","updateGlobalState","trans","router","clearCurrentTransition","onSuccess","successfulTransitions","$current","$to","registerUpdateGlobalState","onCreate","getPrototype","funcProto","funcToString","objectCtorString","PublisherHintsSignaling","_processPublisherHints","sendTrackReplaced","sendHintResponse","toLength","notARegExp","correctIsRegExpLogic","CORRECT_IS_REGEXP_LOGIC","searchString","Jumbotron","_classes","fluid","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","arrayWith","AbstractNavItem","eventKey","onSelect","navKey","parentOnSelect","navContext","isActive","contextControllerId","getControllerId","contextControlledId","getControlledId","activeKey","tabIndex","handleOnclick","big","RemoteVideoTrackPublication","signaling","UrlRuleFactory","makeRule","_what","fromUrlMatcher","isState","fromState","fromRegExp","BaseUrlRule","urlMatcher","_handler","details","matchPriority","isOptional","validates","stateService","transitionTo","sticky","isUrlRule","basePullAll","RTCSessionDescription","stopped","captureStream","getTracks","originalStop","bytesToUuid","rnds","isKeyable","__data__","objectToString","TwilioError","TwilioErrorByCode","AccessTokenInvalidError","AccessTokenHeaderInvalidError","AccessTokenIssuerInvalidError","AccessTokenExpiredError","AccessTokenNotYetValidError","AccessTokenGrantsInvalidError","AccessTokenSignatureInvalidError","SignalingConnectionError","SignalingConnectionDisconnectedError","SignalingIncomingMessageInvalidError","SignalingOutgoingMessageInvalidError","SignalingServerBusyError","RoomNameInvalidError","RoomNameTooLongError","RoomNameCharsInvalidError","RoomCreateFailedError","RoomConnectFailedError","RoomMaxParticipantsExceededError","RoomNotFoundError","RoomMaxParticipantsOutOfRangeError","RoomTypeInvalidError","RoomTimeoutOutOfRangeError","RoomStatusCallbackMethodInvalidError","RoomStatusCallbackInvalidError","RoomStatusInvalidError","RoomRoomExistsError","RoomInvalidParametersError","RoomMediaRegionInvalidError","RoomMediaRegionUnavailableError","RoomSubscriptionOperationNotSupportedError","RoomCompletedError","RoomAudioOnlyFlagNotSupportedError","RoomTrackKindNotSupportedError","ParticipantIdentityInvalidError","ParticipantIdentityTooLongError","ParticipantIdentityCharsInvalidError","ParticipantMaxTracksExceededError","ParticipantNotFoundError","ParticipantDuplicateIdentityError","TrackInvalidError","TrackNameInvalidError","TrackNameTooLongError","TrackNameCharsInvalidError","TrackNameIsDuplicatedError","TrackServerTrackCapacityReachedError","MediaClientLocalDescFailedError","MediaServerLocalDescFailedError","MediaClientRemoteDescFailedError","MediaServerRemoteDescFailedError","MediaNoSupportedCodecError","MediaDTLSTransportFailedError","ConfigurationAcquireFailedError","ConfigurationAcquireTurnFailedError","buildWebGL2Pipeline","webgl2Pipeline_1","createSSRC","TrackAttributes","streamId","cName","isSimulcastEnabled","primarySSRCs","rtxPairs","addSimulcastSSRCs","simulcastSSRCs","ssrc","addSSRC","primarySSRC","isSimSSRC","toSdpLines","excludeRtx","rtxPair","simSSRCs","attrLines","rtxPairLines","simGroupLines","trackIdsToAttributes","newTrackIdsToAttributes","getSimulcastSSRCs","getSSRCRtxPairs","ssrcAttrTuples","createSSRCAttributeTuples","trackAttributes","getSSRCAttribute","createTrackIdsToAttributes","newTrackIds","trackIds","trackIdsToAdd","trackIdsToIgnore","relevantTrackIds","relevantTrackAttributes","relevantSdpLines","sectionLines","xGoogleFlagConference","$findLastIndex","utils_1","BaseLocationServices","fireAfterUpdate","_listener","parseUrl","getParams","_location","_history","_set","onChange","deregAll","setArrayLength","deletePropertyOrThrow","doesNotExceedSafeInteger","properErrorOnNonWritableLength","queue_1","coreservices_1","pathUtils_1","transitionService_1","rejectFactory_1","glob_1","resolveContext_1","lazyLoad_1","StateService","invalidCallbacks","_defaultErrorHandler","$error$","Rejection","detail","boundFns","createProxyFunctions","defaultErrorHandler","_handleInvalidTargetState","toState","stateRegistry","latestThing","transitionHistory","peekTail","latest","callbackQueue","ResolveContext","checkForRedirect","superseded","toPromise","invalid","invokeNextCallback","nextCallback","dequeue","services","onInvalid","defautGoOpts","relative","transOpts","defaultTransOpts","getCurrentPath","latestSuccess","currentPath","exists","silentRejection","rejectedTransitionHandler","isLatest","lastStartedTransitionId","RejectType","IGNORED","SUPERSEDED","redirected","redirect","ABORTED","errorHandler","transitionToPromise","silenceUncaughtInPromise","matchingKeys","fromString","include","defaultHrefOpts","lossy","absolute","$inherit","nav","lazyLoad","lazyLoadState","UA","Popover","arrowProps","primaryPlacement","Content","$exec","isRegexMarker","badStringifier","callBound","hasToStringTag","throwRegexMarker","$toString","gOPD","$comment","subMilliseconds","addMilliseconds","decorate","initializer","resolvedValue","decoratedValue","withResolvers","promiseCapability","regexpString","seg","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getEnumerableOwnPropertySymbols","propertyIsOnObject","arrayMerge","sourceIsArray","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","deepmerge_1","_react","_propTypes2","_reactDom2","_google_map_map2","_marker_dispatcher2","_google_map_markers_prerender2","_google_heatmap","_google_map_loader2","_geo2","_raf2","_pick2","_omit2","_log2","_isEmpty2","_isNumber2","_detect2","_shallowEqual2","_isPlainObject2","_isArraysEqualEps2","_detectElementResize2","_passiveEvents2","kEPS","IS_REACT_16","createPortal","unstable_renderSubtreeIntoContainer","latLng2Obj","latLng","_checkMinZoom","minZoom","GoogleMap","_Component","_possibleConstructorReturn","_getMinZoom","geoService_","getWidth","getHeight","tilesPerWidth","tilesPerHeight","maxTilesPerDim","_computeMinZoom","_mapDomResizeCallback","resetSizeOnIdle_","maps_","originalCenter","defaultCenter","currentCenter","map_","getCenter","setCenter","resetBoundsOnResize","_setLayers","layerTypes","layerType","layers_","setMap","_renderPortal","experimental","onChildClick","_onChildClick","onChildMouseDown","_onChildMouseDown","onChildMouseEnter","_onChildMouseEnter","onChildMouseLeave","_onChildMouseLeave","geoService","insideMapPanes","distanceToMouse","getHoverDistance","_getHoverDistance","dispatcher","markersDispatcher_","_initMap","initialized_","propsCenter","setView","defaultZoom","_onBoundsChanged","bootstrapURLKeys","apiKey","googleMapLoader","heatmapLibrary","mounted_","centerLatLng","propsOptions","heatmap","mapPlainObjects","draggableOptions","draggable","minZoom_","preMapOptions","overviewMapControl","streetViewControl","rotateControl","mapTypeControl","featureType","stylers","defaultDraggableOption_","mapOptions","findDOMNode","googleMapDom_","versionMatch","mapsVersion","this_","OverlayView","onAdd","K_MAX_WIDTH","screen","K_MAX_HEIGHT","overlayViewDivStyle","getPanes","overlayMouseTarget","setMapCanvasProjection","getProjection","onRemove","renderedOverlay","unmountComponentAtNode","updateCounter_","googleApiLoadedCalled_","_onGoogleApiLoaded","mouse_","fromContainerPixelToLatLng","_onChildMouseMove","fireMouseEventOnIdle_","overlay_","onTilesLoaded","_onTilesLoaded","getZoom","zoomAnimationInProgress_","_onZoomAnimationStart","zoomControlClickTime_","_setViewSize","currMinZoom","_onZoomAnimationEnd","dragTime_","mouseInMap_","_onDrag","idleListener","_onDragEnd","_onMapTypeIdChange","getMapTypeId","_this$props","onGoogleApiLoaded","hoverDistance","_this$props2","onDrag","_this$props3","onDragEnd","_this$props4","onMapTypeIdChange","_this$props5","onZoomAnimationStart","_this$props6","onZoomAnimationEnd","_this$props7","hoverKey","childProps","childMouseDownArgs_","_onChildMouseUp","_this$props8","onChildMouseUp","childMouseUpTime_","_this$props9","onChildMouseMove","_this$props10","_this$props11","fullscreen","webkitIsFullScreen","mozFullScreen","msFullscreenElement","setViewSize","mapDom","_onWindowResize","_onMapMouseMove","currTime","mouseMoveTime_","boundingRect_","currentTarget","mousePosX","mousePosY","_onClick","_this$props12","_onMapClick","_onMapMouseDownNative","_onMapMouseDown","_onMapMouseDownCapture","isChrome","_onKeyDownCapture","_isCenterDefined","callExtBoundsChange","gmC","onBoundsChange","canProject","prevBounds_","marginBounds","centerIsObject_","se","sw","ne","hasSize","_registerChild","componentDidMount","addResizeListener","UNSAFE_componentWillReceiveProps","nextProps","nextPropsCenter","currCenter","panTo","setZoom","layerKey","setData","shouldComponentUpdate","componentDidUpdate","prevProps","componentWillUnmount","removeResizeListener","shouldUnregisterMapOnUnmount","scrollwheel","clearInstanceListeners","mapMarkerPrerender","onMouseMove","onMouseDownCapture","registerChild","yesIWantToUseGoogleMapApiInternals","mousePos","__spreadArray","BESSEL","_horner","_bessel_iter","f0","f1","tdx","f2","_bessel_wrap","bessel0","bessel1","nonzero","b0_a1a","b0_a2a","b0_a1b","b0_a2b","b1_a1a","b1_a2a","b1_a1b","b1_a2b","b0_a","b0_b","b1_a","b1_b","besselj","a2","xx","jsum","bjp","bj","bjm","tox","bessely","besseli","bip","bi","bim","besselk","DO_NOT_EXPORT_BESSEL","RemoteAudioTrackStats","statsReport","audioLevel","audioOutputLevel","Overlay","outerRef","_props$containerPaddi","_props$popperConfig","popperConfig","Transition","_useCallbackRef","useCallbackRef","attachRef","_useCallbackRef2","attachArrowRef","mergedRef","useMergedRefs","useWaitForDOMRef","_useState","setExited","_usePopper","usePopper","mergeOptionsWithPopperConfig","enableEvents","mountOverlay","useRootClose","rootClose","rootCloseDisabled","clickTrigger","rootCloseEvent","onExit","onExiting","onEntering","onEntered","onExited","_PropTypes$func","_ref$popperConfig","outerProps","popperRef","_usePopperMarginModif","marginModifiers","actualTransition","overlayProps","aRef","__wrapped","safeFindDOMNode","wrapRefs","scheduleUpdate","outOfBoundaries","RefHolder","_React$Component","handleMouseOverOut","relatedNative","nativeEvent","OverlayTrigger","propsShow","_ref$defaultShow","defaultShow","onToggle","propsDelay","_ref$flip","triggerNodeRef","useTimeout","hoverStateRef","_useUncontrolledProp","setShow","normalizeDelay","only","onFocus","onBlur","handleShow","handleHide","handleFocus","handleBlur","handleClick","handleMouseOver","handleMouseOut","triggers","triggerProps","onMouseOver","onMouseOut","cloneElement","$some","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","Text","Radio","Checkbox","Append","Prepend","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isReactComponent","isPureReactComponent","__self","__source","_owner","keyPrefix","aa","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","_ctor","_status","_result","useDebugValue","useImperativeHandle","useLayoutEffect","useReducer","__b","__r","diffed","__c","unmount","__P","__H","__h","__e","__v","__N","__V","__f","__k","__d","__u","__a","__O","revealOrder","getChildContext","containerInfo","cancelBubble","persist","isPropagationStopped","nn","class","tn","vnode","en","baseIndexOf","supportsDescriptors","$TypeError","dotAll","baseMatches","baseMatchesProperty","stateOrNode","resolvables","pDef","applyPairs","paramDef","parameter","LocalDataTrackPublication","unpublish","sup","constants","typeErrors","trackPriority","getUserAgent","delegateMethod","isNonArrayObject","hidePrivateProperties","hideProperty","arrayToJSON","valueToJSON","createBandwidthProfileVideoPayload","bandwidthProfileVideo","createRSPPayload","payloadProp","createRenderDimensionsPayload","createDimensionsPayload","dimensions","PRIORITY_HIGH","PRIORITY_LOW","PRIORITY_STANDARD","propConversions","createBandwidthProfilePayload","bandwidthProfile","createMediaSignalingPayload","dominantSpeaker","networkQuality","trackSwitchOff","adaptiveSimulcast","renderHints","transports","active_speaker","network_quality","render_hints","publisher_hints","track_priority","track_switch_off","createMediaWarningsPayload","notifyWarnings","mediaWarnings","twilioWarningName","createRoomConnectEventPayload","connectOptions","boolToString","audioTracks","tracks","videoTracks","dataTracks","eventProp","videoBPOptions_1","bandwidthProfileOptions","createSubscribePayload","automaticSubscription","revision","asLocalTrack","MediaStreamTrack","INVALID_TYPE","asLocalTrackPublication","LocalTrackPublication","LocalAudioTrackPublication","LocalVideoTrackPublication","capitalize","deprecateEvents","warningsShown","deprecated","list1","list2","filterObject","filterValue","filtered","mapFn","listArray","flattened","getPlatform","hidePrivateAndCertainPublicPropertiesInClass","class_1","hidePublicProperties","val1","val2","val1Keys","val2Keys","makeUUID","oncePerTick","promiseFromEvents","operation","eventEmitter","successEvent","failureEvent","onFailure","getOrNull","delegateMethods","proxyProperties","propertyName","proxyProperty","legacyPromise","buildLogLevels","logLevel","webrtc","trackClass","trackPublicationClass","publication","withJitter","isChromeScreenShareTrack","timeoutMS","waitForEvent","eventTarget","onevent","METADATA","resIndex","alreadyCalled","baseAssignValue","objValue","jStat","calcRdx","retZero","retOne","retIdent","seq","toVector","_random_fn","setRandom","rowa","submat","arange","cola","diag","antidiag","objArr","toAlter","ncol","cumreduce","alter","ones","symmetric","hival","_slice","rcSlice","colSlice","rowSlice","sliceAssign","nl","ml","diagArray","mat","jProto","funcs","passfunc","ascNum","sumsqrd","sumsqerr","mean","sumrow","prod","unique","meansqerr","geomean","logs","meanOfLogs","median","arrlen","cumsum","cumprod","diffs","arrLen","rank","distinctNumbers","numberCounts","sortedDistinctNumbers","numberRanks","currentRank","maxCount","numMaxCount","mode_arr","variance","pooledvariance","samples","deviation","dev","stdev","pooledstdev","meandev","meddev","coeffvar","quartiles","quantiles","quantilesArray","alphap","betap","aleph","gamma","sortedArray","quantileVals","percentile","exclusive","realIndex","frac","percentileOfScore","histogram","binCnt","binWidth","bins","covariance","arr1","arr1Len","sq_dev","corrcoeff","spearmancoeff","stanMoment","mu","sigma","skewSum","skewness","kurtosis","fullbool","tmpthis","callbackFunction","argsToPass","curriedFunction","gammaln","cof","ser","loggam","xp","gl0","gammafn","fact","xden","gammap","lowRegGamma","an","aln","ap","ITMAX","factorialln","factorial","combination","combinationln","permutation","betafn","betaln","betacf","fpmin","qab","qap","qam","gammapinv","pp","lna1","afac","gln","erf","ty","isneg","erfc","erfcinv","ibetainv","lna","lnb","al","b1","ibeta","randn","randg","oalph","betinc","eps","c9","b0","m9","tukeyWprob","xleg","aleg","qsqz","wincr","pr_w","normal","cdf","blb","binc","bub","einsum","cc1","wi","elsum","ac","qexpo","rinsum","newthis","vals","fnfunc","beta","pdf","inv","centralF","df1","df2","binomial","cauchy","chisquare","dof","exponential","rate","invgamma","kumaraswamy","lognormal","noncentralt","ncp","studentt","tol","prob","lastvalue","std","pareto","dof2","weibull","uniform","betacdf","negbin","hypgeom","scaledPDF","samplesDone","scaledCDF","poisson","sumarr","sampleSmall","sampleLarge","slam","loglam","invalpha","vr","us","lam","triangular","arcsine","laplace","tukey","nmeans","df","xlegq","alegq","ulen","f2lf","f21","ff4","ans","otsum","twa1","ps","tukeyQinv","valx0","valx1","isUsable","subtract","nrescols","rescols","norm","nnorm","aug","newarr","gauss_jordan","determinant","submatrix","gauss_elimination","maug","pivot","maxrow","triaUpSolve","matrix_mode","triaLowSolve","lu","cholesky","gauss_jacobi","xv","xk","gauss_seidel","SOR","householder","QR","lstsq","array_mode","Q1","RI","Aj","cAi","Ij","cIi","R_I","Q2","jacobi","maxim","rungekutta","t_j","u_j","k1","k2","k3","romberg","richardson","h_min","simpson","hermite","dF","dl","lagrange","cubic_spline","sq","gauss_quadrature","PCA","temp1","Bt","temp2","Vt","differenceOfProportions","n1","n2","pooled","zscore","ztest","sides","tscore","ttest","anovafscore","expVar","sampMean","sampSampMean","tmpargs","unexpVar","anovaftest","ftest","fscore","anovaftes","qscore","mean1","mean2","sd","qtest","tukeyhsd","means","normalci","tci","significant","pvalue","oneSidedDifferenceOfProportions","twoSidedDifferenceOfProportions","models","ols","endog","exog","nobs","df_model","df_resid","coef","predict","resid","ybar","SSE","SSR","R2","t_test","model","var_count","subModelList","endog_index","exog_index","sigmaHat","seBetaHat","mod","tStatistic","pValue","leftppf","interval95","F_statistic","F_test","adjust_R2","buildxmatrix","matrixRows","builddxmatrix","buildjxmatrix","jMat","buildymatrix","buildjymatrix","matrixmult","regress","jMatX","jMatY","innerinv","xtranspxinv","xtransp","regresst","jMatYBar","yBar","yAverage","anova","residuals","ssr","msr","sse","mse","mst","r2","fratio","rmse","r2adj","sds","ts","covar","xtranspx","matrixsubtract","relativeTimeWithPlural","forms","processHoursFunction","nominative","accusative","genitive","mediaLevels","paths","hasIn","generateRowId","generateKeyedFormData","formData","keyedToPlainFormData","keyedFormData","keyedItem","ArrayField","updatedKeyedFormData","prevState","nextFormData","previousKeyedFormData","previousKeyedFormDatum","itemTitle","translateString","ArrayItemTitle","isItemRequired","itemSchema","canAddItem","formItems","uiSchema","addable","globalUiOptions","_getNewFormDataRow","schemaUtils","getDefaultFormState","_handleAddClick","errorSchema","newErrorSchema","newKeyedFormDataRow","newKeyedFormData","onAddClick","onAddIndexClick","onCopyIndexClick","cloneDeep","onDropIndexClick","onReorderClick","newIndex","_newKeyedFormData","reOrderArray","onChangeForIndex","newFormData","onSelectChange","idSchema","uiOptions","UnsupportedFieldTemplate","MissingItems","isMultiSelect","renderMultiSelect","renderCustomWidget","renderFixedArray","isFilesArray","renderFiles","renderNormalArray","readonly","autofocus","idPrefix","idSeparator","rawErrors","fieldTitle","formContext","_schemaItems","itemsSchema","retrieveSchema","canAdd","arrayProps","itemCast","itemErrorSchema","itemIdPrefix","itemIdSchema","toIdSchema","renderArrayFieldItem","canMoveUp","canMoveDown","itemData","itemUiSchema","totalItems","Template","hideError","widgets","widget","uiTitle","Widget","displayLabel","getDisplayLabel","hideLabel","enumOptions","itemSchemas","additionalSchema","additional","canRemove","ArraySchemaField","SchemaField","ItemSchemaField","orderable","removable","copyable","moveUp","moveDown","toolbar","hasCopy","hasToolbar","hasMoveUp","hasMoveDown","hasRemove","schemaTitle","yes","YesLabel","no","NoLabel","schemaWithEnumNames","enums","enumNames","AnyOfField","retrievedOptions","opt","getMatchingOption","matchingOption","discriminator","getClosestMatchingOption","onOptionChange","intOption","newOption","oldOption","sanitizeDataForNewSchema","getFieldId","_SchemaField","autocomplete","fieldErrorSchema","optionSchema","optionsUiSchema","optionUiSchema","translateEnum","TitleOptionPrefix","OptionPrefix","translateParams","trailingCharMatcherWithPrefix","trailingCharMatcher","setLastValue","StringField","handleChange","processed","amp","apos","gt","lt","nbsp","ae","ie","ue","fe","pe","ye","he","ge","me","ke","xe","ve","qe","$e","prevCapture","simple","ze","be","Se","Ee","Re","Le","inTable","Oe","je","Ie","Me","we","De","Fe","Pe","Ze","Ne","Ge","Ue","Ve","We","Je","namedCodesToUnicode","slugify","sanitizer","enforceAtxHeadings","forceInline","forceBlock","forceWrapper","alert","noInnerParse","lang","footnote","completed","readOnly","inAnchor","inHTML","alt","disableAutoLink","fallbackChildren","disableParsingRawHTML","renderRule","ObjectField","wasPropertyKeyModified","onPropertyChange","addedByAdditionalProperties","onDropPropertyClick","copiedFormData","getAvailableKey","preferredKey","duplicateKeySuffixSeparator","newKey","onKeyChange","newKeys","keyValues","renamedObj","getDefaultValue","NewStringDefault","handleAddClick","constValue","apSchema","rawSchema","schemaProperties","templateTitle","orderedProperties","InvalidObjectField","templateProps","fieldUiSchema","fieldIdSchema","COMPONENT_TYPES","integer","null","SchemaFieldRender","_idSchema","FieldTemplate","DescriptionFieldTemplate","FieldHelpTemplate","FieldErrorTemplate","fieldId","handleFieldComponentChange","FieldComponent","schemaType","schemaId","UnknownFieldType","getFieldComponent","uiSchemaHideError","__errors","richDescription","enableMarkdownInDescription","help","classNames","helpComponent","hasErrors","errorsComponent","isSelect","fieldProps","rawDescription","rawHelp","_AnyOfField","_OneOfField","OneOfField","isReplacingAnyOrOneOf","defaultWidget","ArrayFieldDescriptionTemplate","ArrayFieldItemTemplate","CopyButton","MoveDownButton","MoveUpButton","RemoveButton","templates","ButtonTemplates","btnStyle","flex","fontWeight","justifyContent","ArrayFieldTemplate","ArrayFieldTitleTemplate","AddButton","itemProps","TitleFieldTemplate","BaseInputTemplate","onChangeOverride","inputProps","inputValue","_onChange","emptyValue","_onBlur","_onFocus","autoFocus","examples","example","SubmitButton","submitText","norender","submitButtonProps","IconButton","iconType","icon","otherProps","DescriptionField","ErrorList","ErrorsLabel","Label","WrapIfAdditionalTemplate","ObjectFieldTemplate","TitleField","UnsupportedField","UnsupportedFieldWithId","UnsupportedFieldWithReason","UnsupportedFieldWithIdAndReason","keyLabel","KeyLabel","DateElement","rootId","SelectWidget","stateValue","readyForChange","handleSetNow","handleClear","yearsRange","elemProps","hideNowButton","NowLabel","hideClearButton","ClearLabel","AltDateWidget","enumDisabled","checkboxesValues","itemDisabled","disabledCls","checkbox","ColorWidget","DateWidget","DateTimeWidget","EmailWidget","addNameToDataURL","dataURL","processFile","reader","FileInfoPreview","fileInfo","download","PreviewLabel","FilesInfo","filesInfo","preview","filesInfoEvent","rmFile","accept","filePreview","PasswordWidget","radio","RangeWidget","optEmptyVal","selectedIndexes","showPlaceholderOption","TextareaWidget","TextWidget","TimeWidget","URLWidget","UpDownWidget","getStateFromProps","getSnapshotBeforeUpdate","formDataChangedFields","isSchemaChanged","isFormDataChanged","retrievedSchema","shouldUpdate","snapshot","inputFormData","edit","liveValidate","mustValidate","noValidate","experimental_defaultFormStateBehavior","experimental_customMergeAllOf","doesSchemaUtilsDiffer","_retrievedSchema","updateRetrievedSchema","schemaValidationErrors","schemaValidationErrorSchema","schemaValidation","currentErrors","extraErrors","getPreviousCustomValidateErrors","customValidate","prevFormData","customValidateErrors","altSchemaUtils","transformErrors","resolvedSchema","getValidator","validateFormData","renderErrors","ErrorListTemplate","getUsedFormData","getFieldNames","pathSchema","getAllPaths","_obj","newPaths","formValue","omitExtraData","toPathSchema","fieldNames","filterErrorsBasedOnSchema","schemaErrors","filteredErrors","prevCustomValidateErrors","filterNilOrEmptyErrors","previousCustomValidateErrors","errorAtKey","prevCustomValidateErrorAtKey","prevCustomErrors","filterPreviousCustomErrors","liveOmit","onSubmit","validateFormWithFormData","getRegistry","customTranslateString","MultiSchemaField","BooleanField","NumberField","NullField","AltDateTimeWidget","CheckboxWidget","CheckboxesWidget","FileWidget","HiddenWidget","RadioWidget","submit","submitCustomEvent","CustomEvent","requestSubmit","focusOnError","extraErrorsBlockSubmit","focusOnFirstError","onError","prevErrors","hasError","validateForm","autoComplete","enctype","acceptcharset","acceptCharset","noHtml5Validate","showErrorList","_internalFormWrapper","FormTag","submitOptions","submitUiSchema","encType","TrackSignaling","_isEnabled","_trackTransceiver","_sid","setTrackTransceiver","IceReportFactory","lastReport","lastStats","trackingData","_makeClassMemberDecorator","decoratedFn","trackEvent","tracking","promiseArguments","thisTrackingData","SID_CHARS","createNonEnumerableProperty","createPropertyDescriptor","installErrorCause","installErrorStack","normalizeStringArgument","$Error","$AggregateError","isInstance","AggregateErrorPrototype","errorsArray","AggregateError","baseGet","GoogleMapMap","MemoryLocationConfig","_baseHref","_port","_protocol","_host","_hashPrefix","newval","MAIN_SCRIPT_DOMAIN","BACKUP_SCRIPT_DOMAIN","SESSION_ID","v4","DEFAULT_CONFIG","vaultId","ANALYTICS_EVENTS","ERROR_MESSAGE","getConfig","configSchema","registerScriptLoading","validateConfig","setConfig","tnt","vgsCollectSessionId","VGS_COLLECT_KEEPER","appendElement","appendLink","parseVersionString","scriptURL","loadScript","loadMainCDN","scriptExists","VGSCollect","currentParsed","minimalParsed","isVersionGreater","appendScript","mainCDN","initCollect","loadVGSCollect","_config$vaultId","_config$environment","_config$version","syncRenderingByDefault","FullCalendar","elRef","isUpdating","isUnmounting","customRenderingMap","requestResize","cancelResize","resizeId","doResize","customRenderingNodes","customRendering","CustomRenderingComponent","customRenderingStore","lastRequestTimestamp","handleCustomRendering","flushSync","subscribe","requestTimestamp","isMounting","runNow","resetOptions","updateSize","getApi","act","generatorMeta","renderProps","containerEl","monthsShortDot","invalidDate","EncodingParametersImpl","encodingParameters","maxAudioBitrate","maxVideoBitrate","shouldEmitChanged","maxKindBitrate","TwilioConnection","ICE_VERSION","events_1","twilioConnection","networkMonitor","helloBody","preflight","messageData","ice_servers","useEventCallback","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","aValue","bValue","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","ua","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","stripTrailingSlash","getDOMLocation","historyState","_window$location","hasBasename","stripBasename","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","prevIndex","nextKeys","replaceState","goBack","goForward","unblock","unlisten","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","signedYear","getUTCFullYear","addLeadingZeros","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","getUTCMilliseconds","fractionalSeconds","formatTimezoneShort","dirtyDelimiter","absOffset","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","localize","ordinalNumber","lightFormatters","signedWeekYear","getUTCWeekYear","weekYear","twoDigitYear","isoWeekYear","getUTCISOWeekYear","getUTCWeek","getUTCISOWeek","dayOfYear","setUTCMonth","getUTCDayOfYear","dayOfWeek","localDayOfWeek","weekStartsOn","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","_localize","timezoneOffset","_originalDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale","_options$firstWeekCon","_options$locale2","_options$locale2$opti","_defaultOptions$local","_defaultOptions$local2","_ref5","_ref6","_ref7","_options$weekStartsOn","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","firstWeekContainsDate","formatLong","getTimezoneOffsetInMilliseconds","utcDate","formatterOptions","firstCharacter","longFormatter","longFormatters","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","onClose","ToastHeader","closeLabel","closeButton","CloseButton","Toast","_ref$transition","_ref$animation","_ref$delay","_ref$autohide","autohide","delayRef","onCloseRef","autohideTimeout","autohideToast","autohideFunc","toastContext","hasAnimation","toast","Body","ToastBody","Header","at","relativeIndex","NATIVE_BIND","$RegExp","restrictToWindowEdges","draggingNodeRect","windowRect","restrictToBoundingRect","$reduceRight","CHROME_VERSION","$trimEnd","forcedStringTrimMethod","trimEnd","BootstrapTheme","tableCellShaded","buttonGroup","buttonActive","popover","popoverHeader","popoverContent","baseIconClass","iconClasses","prevYear","nextYear","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","themeClasses","baseSetToString","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","isProperty","propDesc","supportedCodecs","clearCachedSupportedCodecs","guessBrowserVersion","isCodecSupported","codec","codecs","RTCRtpSender","getCapabilities","mimeType","createSupportedCodecsSet","isIOSChrome","interceptEvent","currentListener","support","getUserMedia","SenderOrReceiverReport","SenderReport","bitrate","newerRemoteStats","summarize","reports","audioContextFactory","holder","audioContext","getOrCreate","oscillator","createOscillator","createMediaStreamDestination","getAudioTracks","release","argIndex","framesToPop","dateTime","validDate","ensureDate","ACCRINT","issue","settlement","par","frequency","basis","YEARFRAC","ACCRINTM","AMORDEGRC","AMORLINC","COUPDAYBS","COUPDAYS","COUPDAYSNC","COUPNCD","COUPNUM","COUPPCD","CUMIPMT","periods","payment","PMT","interest","FV","CUMPRINC","principal","DB","cost","salvage","life","ceiling","DDB","DISC","DOLLARDE","dollar","DOLLARFR","DURATION","EFFECT","term","FVSCHEDULE","schedule","INTRATE","IPMT","present","IRR","irrResult","irrResultDeriv","negative","newRate","epsRate","resultValue","resultRate","contLoop","ISPMT","MDURATION","MIRR","finance_rate","reinvest_rate","payments","incomes","NPV","NOMINAL","NPER","ODDFPRICE","ODDFYIELD","ODDLPRICE","ODDLYIELD","PDURATION","PPMT","PRICE","PRICEDISC","PRICEMAT","PV","RATE","epsMax","RECEIVED","RRI","SLN","SYD","TBILLEQ","maturity","discount","DAYS360","TBILLPRICE","TBILLYIELD","price","VDB","XNPV","parseDateArray","DAYS","YIELD","YIELDDISC","YIELDMAT","RemoteVideoTrackStats","frameWidthReceived","frameHeightReceived","frameRate","frameRateReceived","returnMethod","error2","italics","CLONE_DEEP_FLAG","isIterateeCall","assigner","jsx","jsxs","pointOffset","vec2","FocalLengthIn35mmFilm","FocalLength","sensors","CropFactor","VisualizerMath","Group","vec2Position","pointToVec2","none","scaling","daylight","WindowScalerTool","imageZoom","draggingBgImage","_imageScale","_scale","_minSize","_maxSize","_minRangeSize","_maxRangeSize","_annotations","scaleDownAmount","_tool","_tapeTool","TapeMeasurer","_windowTool","WindowOutliner","_daylightTool","DaylightOutliner","_polygonTool","PolygonTool","_allTools","removeOverlay","clearSelection","_currentTool","cleanup","addOverlay","mouseDown","pointToNumArray","getPointerPosition","mouseMove","mouseUp","_updateIntersections","_selected","measureLayer","batchDraw","keyup","visualizer","layer","Layer","gridLayer","drawRuler","imageScale","imagePosition","vec2ToPoint","getImgPosition","gridPosition","measurements","toMeasurement","setTool","calculateInitialScale","calculateZoom","setImageZoom","resized","renderAll","image","moveToBottom","exifData","getAllTags","focalLength","crossOrigin","calculateScale","clearMetadata","checkScale","_originalAnnotations","TextCallout","moveToTop","measurePixelDistance","scaledPlaneDistance","PixelXDimension","_sensorSize","onMeasurementChange","NodeRecord","addShape","createFromMeasurement","repositionGrid","_changeCursorToMove","_changeCursorToDefault","Line","dash","fontFamily","getClientRect","scalePointToImage","scalePointFromImage","scaleAll","repositionMeasurements","repositionAnnotations","imageMoved","_scaledPlaneDistance","onWindowIntersection","checkIntersection","measuredWidth","measuredHeight","lookupSensorSize","PixelYDimension","sensorSize","WindowScaler","et","nt","ut","vt","yt","St","xt","Mt","Pt","Tt","kt","Ct","Kt","At","Dt","Ft","Ot","It","Rt","Lt","zt","Et","Gt","Nt","Ut","jt","Ht","Wt","qt","Xt","Yt","Zt","Jt","Qt","$t","Ke","Ye","rn","sn","un","hn","cn","ln","dn","gn","pn","vn","yn","bn","wn","Sn","xn","Mn","Pn","Tn","kn","Cn","Kn","An","Fn","On","In","Ln","zn","En","Gn","Nn","Un","jn","Hn","Wn","Bn","qn","Vn","Xn","Yn","Zn","Jn","Qn","$n","tr","nr","ir","or","sr","ur","cr","lr","fr","dr","gr","yr","mr","br","wr","Sr","xr","Mr","Pr","Tr","kr","Cr","Kr","Ar","Dr","Fr","Or","Ir","Rr","Lr","zr","Er","Gr","Nr","Ur","jr","Hr","Wr","Br","qr","Vr","Xr","Yr","Zr","Jr","Qr","$r","ti","ei","ni","ui","li","gi","pi","vi","Si","Mi","Pi","Ti","ki","Ki","Di","Fi","Oi","Ii","Ri","Li","zi","Ei","Gi","Ni","Ui","ji","Wi","qi","Vi","Xi","Yi","Zi","Ji","Qi","eo","ro","io","ao","so","uo","ho","co","fo","po","vo","yo","mo","bo","wo","So","xo","Mo","Po","To","ko","Ko","Float32Array","upDegrees","downDegrees","leftDegrees","rightDegrees","Record","NodeList","__iterate","Keyed","Indexed","KEYS","VALUES","ENTRIES","inspect","toSeq","__toString","cacheResult","__iterateUncached","entrySeq","__iterator","__iteratorUncached","toKeyedSeq","fromEntrySeq","toIndexedSeq","toSetSeq","isSeq","_array","_object","_collection","hashCode","imul","uniqueID","_iter","_useKeys","valueSeq","__ownerID","withMutations","asMutable","wasAltered","__ensureOwner","__altered","deleteAll","__hash","setIn","removeIn","deleteIn","updateIn","mergeDeep","mergeDeepWith","mergeIn","mergeDeepIn","asImmutable","ownerID","keyHash","_reverse","__prev","setSize","_tail","_capacity","_level","isList","removeBefore","removeAfter","_map","_list","toMap","isOrderedMap","pushAll","_head","isStack","unshiftAll","fromKeys","keySeq","union","__make","__empty","_step","isIterable","isKeyed","isIndexed","isAssociative","isOrdered","Iterator","toJS","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","findEntry","butLast","countBy","filterNot","findLastEntry","findLastKey","getIn","isSubset","isSuperset","keyOf","lastKeyOf","maxBy","minBy","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeUntil","mapEntries","mapKeys","interpose","interleave","zipAll","zipWith","isOrderedSet","_indices","_name","_defaultValues","isRecord","getDescriptiveName","Collection","Iterable","Seq","OrderedMap","List","OrderedSet","Repeat","fromJS","isImmutable","isCollection","isValueObject","scaler","measureDistance","measureArea","getStage","scaleNodeFromImage","scaleNodeToImage","shapeChanged","BaseTool","centroid","Guid","newGuid","PolygonRecord","ToString","Polygon","_distanceOffset","MeasurementBase","_text","bgPadding","textObj","setAttrs","bgObject","Rect","strokeEnabled","pointer","shadowEnabled","shadowBlur","shadowOpacity","measurer","dragging","_referencedPositions","_refPoints","topMid","rightMid","bottomMid","leftMid","_rightDragHandle","addDragHandles","removeDragHandles","updateEnd","updateStart","distanceOffset","updateUI","_bottomDragHandle","_leftDragHandle","_topDragHandle","savePosition","referencedPointToImage","getAllIntersections","changeCursorToMove","changeCursorToDefault","dragBoundFunc","refP","getAbsolutePosition","updateRight","updateBottom","updateLeft","updateTop","_dragHandles","imageReferencedPoint","SquareMeasurementBase","edgeList","dragHandleList","areaLabels","distanceLabels","setEdges","imageReferencedPosition","measuredArea","scaleArea","UpdateNode","Subtract","closeShape","completePolygon","middleOffset","Shift","updateNode","Centroid","Area","PolygonShape","_down","_up","_currentPolygon","_currentShape","intersects","Finish","AddNode","_measuringWindow","_measuringOutline","_measuringText","_mouseEnter","_mouseLeave","DaylightOutline","_currentDaylight","WindowOutline","_currentOutline","_measuringLine","_startCap","_endCap","measuredLength","_startDragHandle","_endDragHandle","absoluteStart","absoluteEnd","measuredDistance","TapeDistance","_currentTape","EXIFwrapped","EXIF","Tags","TiffTags","GPSTags","IFD1Tags","StringValues","ExposureProgram","MeteringMode","LightSource","Flash","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","Components","exifdata","getUint8","iptcdata","isXmpEnabled","DOMParser","parseFromString","xmpdata","getInt16","getInt32","ExifIFDPointer","GPSInfoIFDPointer","thumbnail","Compression","JpegIFOffset","JpegIFByteCount","PhotometricInterpretation","hasChildNodes","enableXmp","disableXmp","HTMLImageElement","getIptcTag","getAllIptcTags","readFromBinaryFile","nameCallback","updateCallback","annotations","_enabled","getScaledLocation","addAnnotation","scaleX","scaleY","_listenToAnnotation","clearHighlights","setBackground","setText","requestedSize","_fireUpdate","Annotator","SensorType","Diagonal","TimesBigger","TimeBigger","eval","stages","shapes","listenClickTap","inDblClickWindow","isBrowser","enableTrace","traceArrMax","dblClickWindow","dragDistance","angleDeg","showWarnings","Filters","isDragging","DD","isDragReady","_addId","_removeId","_addName","_removeName","_id","getAngle","_detectIE","_parseUA","browser","isIE","mobile","ieMobile","Konva","toCollection","_mapMethod","Transform","getTranslation","skew","getMatrix","setAbsolutePosition","aliceblue","antiquewhite","aquamarine","azure","blanchedalmond","blue","blueviolet","brown","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","pink","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","springgreen","steelblue","teal","thistle","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Util","_isElement","_isFunction","_isObject","_isArray","_isNumber","_isString","isValidSelector","_sign","createCanvasElement","_nodeCanvas","_isInDocument","_simplifyArray","_getImage","putImageData","_getRGBAString","_rgbToHex","_hexToRgb","getRandomColor","getRGB","colorToRGBA","_namedColorToRBA","_hex3ColorToRGBA","_hex6ColorToRGBA","_rgbColorToRGBA","_rgbaColorToRGBA","_clone","haveIntersection","cloneObject","cloneArray","_degToRad","_radToDeg","__super__","addMethods","_getControlPoints","_expandPoints","_removeLastLetter","_inRange","_getProjectionToSegment","_getProjectionToLine","_prepareArrayForTween","_prepareToStringify","visitedByCircularReferenceRemoval","Canvas","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","_canvas","background","getPixelRatio","setPixelRatio","setHeight","SceneCanvas","SceneContext","HitCanvas","HitContext","hitCanvas","traceArr","_enableTrace","fillShape","getFillEnabled","_fill","strokeShape","getStrokeEnabled","_stroke","fillStrokeShape","getTrace","clearTrace","_trace","_applyLineCap","getLineCap","setAttr","_applyOpacity","getAbsoluteOpacity","_applyLineJoin","getLineJoin","createImageData","createLinearGradient","createPattern","createRadialGradient","isPointInPath","mozDash","webkitLineDash","getLineDash","_fillColor","_fillFunc","_fillPattern","getFillPatternX","getFillPatternY","getFillPatternScale","getFillPatternRotation","getFillPatternOffset","getFillPatternImage","getFillPatternRepeat","_fillLinearGradient","getFillLinearGradientStartPoint","getFillLinearGradientEndPoint","getFillLinearGradientColorStops","addColorStop","_fillRadialGradient","getFillRadialGradientStartPoint","getFillRadialGradientEndPoint","getFillRadialGradientStartRadius","getFillRadialGradientEndRadius","getFillRadialGradientColorStops","getFillPriority","_strokeLinearGradient","getStrokeLinearGradientStartPoint","getStrokeLinearGradientEndPoint","getStrokeLinearGradientColorStops","getStrokeScaleEnabled","hasStroke","dashEnabled","dashOffset","getShadowForStrokeEnabled","_strokeFunc","_applyShadow","getShadowRGBA","getShadowBlur","getShadowOffset","getAbsoluteScale","_applyGlobalCompositeOperation","getGlobalCompositeOperation","colorKey","_fillFuncHit","strokeHitEnabled","_strokeFuncHit","Factory","addGetterSetter","addGetter","addSetter","addOverloadedGetterSetter","_setAttr","addComponentsGetterSetter","getAttr","_fireChangeEvent","addDeprecatedGetterSetter","backCompat","afterSetFilter","_filterUpToDate","Validators","RGBComponent","alphaComponent","eventListeners","_isUnderCache","_clearCache","_clearSelfAndDescendantCache","_getCache","skipTransform","relativeTo","getParent","isCache","drawScene","drawHit","scene","hit","_transformedRect","getAbsoluteTransform","_drawCachedSceneCanvas","_getCachedSceneCanvas","_drawCachedHitCanvas","_delegate","_off","fire","findAncestors","_setChildrenIndices","getId","getName","getAncestors","getAttrs","isListening","_isListening","getListening","isVisible","getVisible","shouldDrawHit","getLayer","hitGraphEnabled","setVisible","getZIndex","getAbsoluteZIndex","getDepth","setPosition","setX","setY","getPosition","getX","getY","_clearTransform","_setTransform","getRotation","getScaleX","getScaleY","getOffsetX","getOffsetY","skewX","getSkewX","skewY","getSkewY","_eachAncestorReverse","setRotation","setZIndex","_getAbsoluteOpacity","getOpacity","__originalRemove","_isMatch","findAncestor","hasName","_getStage","_fireAndBubble","_fire","_getAbsoluteTransform","transformsEnabled","getTransform","_getAbsoluteScale","_getTransform","_toKonvaCanvas","toCanvas","toImage","getSize","getType","getDragDistance","setId","setName","addName","removeName","_setComponentAttr","isAncestorOf","_createNode","rotateDeg","setRotationDeg","getRotationDeg","Grayscale","Brighten","brightness","Invert","Blur","blurRadius","Mask","threshold","RGB","HSV","saturation","HSL","luminance","Emboss","embossStrength","embossWhiteLevel","embossDirection","embossBlend","Enhance","enhance","Posterize","levels","Noise","noise","Pixelate","pixelSize","Threshold","Sepia","Solarize","Kaleidoscope","kaleidoscopePower","kaleidoscopeAngle","polarCenterX","polarCenterY","polarRotation","contrast","Container","__init","hasChildren","removeChildren","destroyChildren","_validateAdd","setLayers","_generalFind","findOne","_findByString","_findByFunction","_getNodeById","_getNodesByName","_getDescendants","_applyTransform","_drawChildren","clearHitCache","getClipWidth","getClipHeight","getClipFunc","getClipX","getClipY","getLayers","Shape","hasShadow","_hasShadow","getShadowEnabled","getShadowOpacity","getShadowColor","getShadowOffsetX","getShadowOffsetY","_getShadowRGBA","shadowColor","hasFill","getFill","bufferHitCanvas","_useBufferCanvas","perfectDrawEnabled","getSelfRect","_centroid","shadowOffsetX","shadowOffsetY","sceneFunc","bufferCanvas","hitFunc","drawHitFromCache","dashArray","getDashArray","setDashArray","drawFunc","getDrawFunc","setDrawFunc","drawHitFunc","getDrawHitFunc","setDrawHitFunc","Stage","___init","_buildDOM","_bindContentEvents","_enableNestedTransforms","setContainer","_resizeDOM","getContainer","pointerPos","getIntersection","_setCanvasSize","_mouseover","_setPointerPosition","_mouseout","targetShape","_mousemove","_touchmove","movementX","movementY","_mousedown","_touchstart","clickStartShape","_mouseup","_touchend","clickEndShape","dblTimeout","justDragged","_contextmenu","tapStartShape","_wheel","_getContentPosition","_onContent","BaseLayer","createPNGStream","getHitCanvas","_hitImageData","____init","_getIntersection","antialiased","_getImageData","getClearBeforeDraw","imageData","enableHitGraph","setHitGraphEnabled","disableHitGraph","FastLayer","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animIdCounter","frame","timeDiff","lastTime","addLayer","isRunning","_addAnimation","_removeAnimation","_updateFrameObject","animRunning","_handleAnimation","_runFrames","_animationLoop","batchAnim","onFinish","yoyo","propFunc","_change","prevPos","_time","_position","_startTime","_finish","getTimer","onEnterFrame","Tween","Easings","Linear","tween","_tweenFunc","_addListeners","tweens","_addAttr","onReset","trueEnd","trueStart","onPlay","onReverse","BackEaseIn","BackEaseOut","BackEaseInOut","ElasticEaseIn","ElasticEaseOut","ElasticEaseInOut","BounceEaseOut","BounceEaseIn","BounceEaseInOut","EaseIn","EaseOut","EaseInOut","StrongEaseIn","StrongEaseOut","StrongEaseInOut","_drag","startPointerPos","_setDragPosition","_endDragBefore","dragEndNode","_endDragAfter","startDrag","stopDrag","getDragBoundFunc","_lastPos","setDraggable","_dragChange","_listenDrag","_dragCleanup","_sceneFunc","getCornerRadius","getRadius","setRadius","Ellipse","getRadiusX","getRadiusY","Ring","getInnerRadius","getOuterRadius","setOuterRadius","Wedge","getClockwise","getAngleDeg","setAngleDeg","clockwise","_hitFunc","getImage","getCropWidth","getCropHeight","getCropX","getCropY","fromURL","partialText","fillLinearGradientColorStops","fillRadialGradientColorStops","_setTextData","getTextHeight","getLineHeight","textArr","getAlign","getLetterSpacing","textDecoration","_getContextFont","_getTextSize","getTextWidth","textHeight","getFontSize","getFontStyle","getFontFamily","getFontVariant","_addTextLine","_getTextWidth","getWrap","getEllipsis","getPoints","getTension","getClosed","getBezier","getTensionPoints","_getTensionPoints","_getTensionPointsClosed","Sprite","_updated","frameIndex","_setInterval","getAnimation","getAnimations","frameOffsets","_updateIndex","getFrameRate","getIndex","setIndex","Path","dataArray","parsePathData","getLineLength","getPointOnLine","getPointOnCubicBezier","getPointOnQuadraticBezier","getPointOnEllipticalArc","convertEndpointToCenterParameterization","calcLength","TextPath","dummyCanvas","getKerning","getTextBaseline","glyphInfo","transposeX","transposeY","RegularPolygon","Star","numPoints","getPointerDirection","getPointerWidth","getPointerHeight","Tag","pointerDirection","Arrow","pointerLength","pointerWidth","pointerAtBeginning","Transformer","_createElements","_handleMouseMove","_handleMouseUp","attachTo","setNode","_node","_resetTransformCache","_transforming","_getNodeRect","__getNodeRect","_createBack","_createAnchor","_handleMouseDown","listening","rotateEnabled","rotateAnchorOffset","movingResizer","keepRatio","rotationSnaps","_fitNodeInto","_removeEvents","getBoundBoxFunc","_settings","enabledAnchors","resizeEnabled","getAnchorSize","getAnchorStroke","getAnchorStrokeWidth","getAnchorFill","borderEnabled","getBorderStroke","getBorderStrokeWidth","getBorderDash","isTransforming","stopTransform","lineEnabled","rotateHandlerOffset","enabledHandlers","setupCanvas","originalSize","baseLayer","bgImg","tool","setup","toolMouseDown","toolMouseUp","toolMouseMove","Visualizer","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","RemoteTrackStats","packetsReceived","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","defaultKey","useUncontrolledProp","wasPropRef","isProp","wasProp","useUncontrolled","fieldName","_extends2","propsValue","handlerName","stringIndexOf","isNew","detectSilence","retry","AudioContextFactory","doWorkaround","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","equalArrays","mapToArray","setToArray","symbolValueOf","equalFunc","isPartial","baseIndexOfWith","baseUnary","LARGE_ARRAY_SIZE","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","createCacheKeyComparator","getEntries","cacheIndex","createLruCache","memoized","matchingEntry","createSelectorCreator","memoizeOptionsFromArgs","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dependencyTypes","getDependencies","memoizedResultFunc","recomputations","resetRecomputations","createSelector","Latch","initialState","whenDeferreds","_whenDeferreds","raise","createUnreachableStateError","TrackPublication","trackName","logLevels","loggerName","da","ea","ia","ja","la","ma","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","wa","xa","ya","za","stateNode","Ea","Fa","Ga","Ia","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","Wa","Xa","Sa","Ra","setAttributeNS","Ya","Za","$a","bb","db","eb","gb","ib","jb","lb","mb","nb","qb","_debugOwner","_debugSource","fileName","lineNumber","rb","sb","xb","_valueTracker","setValue","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Nb","Ob","Pb","Qb","namespaceURI","MSApp","execUnsafeLocalFunction","Rb","Sb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","bc","effectTag","ec","memoizedState","dehydrated","fc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPersistent","mc","srcElement","correspondingUseElement","oc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","blockedOn","Lc","pointerId","Mc","Nc","Pc","hydrate","Qc","Rc","Sc","Uc","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","ed","fd","gd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","kd","ld","md","nd","menuitem","embed","keygen","wbr","od","pd","qd","rd","ud","vd","wd","xd","HTMLIFrameElement","yd","contentEditable","zd","Ad","Bd","Cd","Dd","Ed","Fd","Gd","__html","Hd","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Zd","$d","Interface","eventPool","destructor","getPooled","eventPhase","bubbles","timeStamp","isTrusted","beforeInput","compositionEnd","compositionStart","compositionUpdate","altKey","tel","detachEvent","attachEvent","_isInputEventSupported","Alt","Control","Meta","getModifierState","pageX","pageY","buttons","fromElement","toElement","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","mouseEnter","mouseLeave","pointerEnter","pointerLeave","bf","gf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","charCode","pf","Esc","Spacebar","Up","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","sf","dataTransfer","tf","targetTouches","changedTouches","uf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","rg","sg","observedBits","responders","tg","ug","updateQueue","baseQueue","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","componentWillReceiveProps","Ng","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","ih","responder","jh","kh","mh","nh","oh","ph","qh","rh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","UNSAFE_componentWillUpdate","componentWillUpdate","pendingContext","retryTime","unstable_avoidThisFallback","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","wasMultiple","onclick","createElementNS","WeakSet","__reactInternalSnapshotBeforeUpdate","_reactRootContainer","componentDidCatch","aj","componentStack","Rj","cj","dj","ej","fj","gj","hj","ij","kj","lj","mj","nj","oj","pj","qj","sj","tj","uj","vj","wj","timeoutMs","zj","lastExpiredTime","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","activeElementDetached","focusedElem","selectionRange","Tj","createRange","setStart","removeAllRanges","addRange","setEnd","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","kk","jk","Lj","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","unstable_batchedUpdates","unstable_createPortal","guessVersion","isFirefox","isSafari","chromeMajorVersion","standardizeChromeOrSafariActiveIceCandidatePairStats","activeCandidatePairStats","nominated","activeLocalCandidateStats","localCandidateId","activeRemoteCandidateStats","remoteCandidateId","standardizedCandidateStatsKeys","standardizedLocalCandidateStatsKeys","standatdizedLocalCandidateStatsReport","standardizedRemoteCandidateStatsReport","fixup","standardizeFirefoxActiveIceCandidatePairStats","ffKeys","candidateTypes","peerreflexive","relayed","serverreflexive","localStatKey","remoteStatKey","getSendersOrReceivers","chromeOrSafariGetTrackStats","getStats","standardizeChromeLegacyStats","simulateExceptionWhileStandardizingStats","inbound","outbound","remoteInbound","remoteOutbound","localMedia","isRemote","remoteSource","standardizedStats","statSources","getStatValue","sourceFound","statSource","codecName","frameWidth","frameWidthSent","frameWidthInput","frameHeight","frameHeightSent","frameHeightInput","framesPerSecond","packetsSent","audioInputLevel","totalPacketSendDalay","totalPacketSendDelay","totalEncodeTime","framesEncoded","estimatedPlayoutTimestamp","totalDecodeTime","framesDecoded","jitterBufferDelay","jitterBufferEmittedCount","standardizeChromeOrSafariStats","ssrcReport","frameRateInput","frameRateSent","standardizeFirefoxStats","remoteId","localAudioTracks","localVideoTracks","remoteAudioTracks","remoteVideoTracks","statsResponse","activeIceCandidatePair","localAudioTrackStats","localVideoTrackStats","remoteAudioTrackStats","remoteVideoTrackStats","trackStatsPromises","statsArrayName","testForChrome","testForFirefox","firefoxGetTrackStats","testForSafari","getTrackStats","trackStatsArray","trackStats","getActiveIceCandidatePairStats","activeIceCandidatePairStatsReport","_getStats","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","initialStatus","appearStatus","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","TransitionGroupContext","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","validators","_createChainableTypeChecker2","schemaHasRules","$key","$idx","$invalidName","$nextData","$dataProperties","$ownProperties","ownProperties","$currentBaseId","$passData","varOccurences","varReplace","cleanUpCode","METHOD_NAME","Wrapper","NewTarget","NewTargetPrototype","DatePrototype","INVALID_DATE","TO_STRING","nativeDateToString","thisTimeValue","StateParams","newParams","parentParams","inherited","inheritList","checkCorrectnessOfIteration","nv","dom","d3","oThis","aArgs","fToBind","fNOP","fBound","endTime","totalTime","render_start","renderLoop","render_end","addGraph","fastdom","mutate","measure","interactiveGuideline","showGuideLine","svgContainer","isMSIE","selection","selectAll","mouseHandler","subtractMargin","mouseOutAnyReason","ownerSVGElement","nvPointerEventsClass","elementMouseout","renderGuideLine","pointXValue","rangeBands","elementIndex","bisect","rangeBand","elementMousemove","elementDblclick","elementClick","elementMouseDown","elementMouseUp","guideLine","NaNtoZero","hideDelay","interactiveBisect","searchVal","xAccessor","_xAccessor","bisector","nearestValueIndex","yDistMax","indexToHighlight","gravity","snapDistance","lastPosition","headerEnabled","valueFormatter","headerFormatter","keyFormatter","contentGenerator","classed","trowEnter","series","highlight","opacityScale","outerHTML","client","nvtooltip","dataSeriesExists","newContent","gravityOffset","calcGravityOffset","interrupt","old_translate","new_translate","translateInterpolator","interpolateString","is_hidden","styleTween","optionsFunc","chartContainer","fixedTop","windowSize","compatMode","windowResize","getColor","color_scale","category20","customTheme","dictionary","getKey","defaultColors","defIndex","pjax","calcApproxTextWidth","svgTextElem","watchTransition","renderWatch","renderStack","__rendered","renderEnd","deepExtend","srcObj","_setState","_getState","calcTicksX","numValues","stream_len","calcTicksY","initOption","_calls","_overrides","calls","inheritOptionsD3","d3_source","oplist","_d3options","rebind","arrayUnique","svg","symbolTypes","functor","inheritOptions","_inherited","d3ops","initSVG","sanitizeHeight","sanitizeWidth","noData","noDataText","wrapTicks","tspan","getComputedTextLength","arrayEquals","pointIsInArc","ptData","d3Arc","r1","theta1","theta2","tickFormatMaxMin","scale0","axisLabelText","showMaxMin","rotateLabels","rotateYLabel","staggerLabels","isOrdinal","axisLabelDistance","orient","tickFormat","xLabelMargin","axisMaxMin","axisLabel","maxTextWidth","xTicks","rotateLabelsRule","maxMinRange","boxPlot","xDomain","xRange","yDomain","yRange","xScale0","yScale0","getQ1","getQ2","getQ3","Q3","getWl","whisker_low","getWh","whisker_high","getOlItems","outliers","getOlValue","getOlLabel","getOlColor","maxBoxWidth","yData","q1","q3","wl","olItems","boxplots","boxEnter","box_width","box_left","box_right","endpoint","elementMouseover","q2","itemColor","outlierValue","outlierLabel","outlierColor","boxPlotChart","boxplot","xAxis","yAxis","showXAxis","showYAxis","rightAlignYAxis","gEnter","defsEnter","datum","tickSize","tooltipContent","bullet","ranges","markers","markerLines","measures","rangeLabels","markerLabels","markerLineLabels","measureLabels","forceX","defaultRangeLabels","legacyRangeClassNames","sortLabels","lz","iA","iB","rangez","markerz","markerLinez","measurez","rangeLabelz","markerLabelz","markerLineLabelz","measureLabelz","__chart__","rangeClassNames","xp1","h3","markerData","marker","markerLinesData","bulletChart","subtitle","bulletWrap","tickEnter","tickUpdate","candlestickBar","getOpen","getClose","getHigh","getLow","forceY","padData","interactive","barWidth","wrapEnter","chartClick","tickGroups","highlightPoint","isHoverOver","cumulativeLineChart","interactiveLayer","showLegend","showControls","useInteractiveGuideline","rescaleY","defaultState","noErrorCheck","updateState","currentYDomain","stateSetter","stateGetter","indexDrag","drag","updateZero","stateChange","indexifyYGetter","tempDisabled","indexify","getCurrentYDomain","interactivePointerEvents","controlsData","rightAlign","linesWrap","seriesIndex","avgLineData","avgLines","getAvgLineY","yVal","indexLine","oldDuration","_ticks","mouse","singlePoint","pointXLocation","allData","yValue","xValue","seriesDomains","useVoronoi","discreteBar","showValues","valueFormat","rectClass","seriesData","barsEnter","elementDblClick","discreteBarChart","discretebar","wrapLabels","distribution","naxis","distWrap","brush","brushExtent","syncBrushing","pointActive","contentWrap","onBrush","brushBG","brushBGenter","gBrush","shouldDispatch","leftWidth","rightWidth","xTickFormat","yTickFormat","forceDirectedGraph","linkStrength","friction","linkDist","charge","nodeExtras","linkExtras","nodeFieldSet","force","linkDistance","py","nodeColor","furiousLegend","maxKeyLength","radioButtonMode","expanded","setTextColor","disengaged","setBGColor","seriesShape","seriesEnter","versPadding","seriesText","legendMouseover","legendMouseout","legendClick","userDisabled","engaged","legendDblclick","seriesWidths","legendText","nodeTextLength","trimmedKey","seriesPerRow","legendWidth","columnWidths","xPositions","curX","xpos","ypos","newxpos","maxwidth","historicalBar","historicalBarChart","bar_model","transitionDuration","tooltipHide","ohlcBarChart","ohlcBar","candlestickBarChart","enableDoubleClick","setBGOpacity","scatter","isArea","pointSize","pointDomain","scatterWrap","areaPaths","linePaths","lineChart","legendPosition","focusEnable","focusEnter","updateXAxis","updateYAxis","disableTooltip","currentValues","pointYValue","x2Axis","y2Axis","focusHeight","focusShowAxisX","focusShowAxisY","focusMargin","lineWithFocusChart","linePlusBarChart","y4","lines2","bars2","y1Axis","y3Axis","y4Axis","margin2","legendLeftAxisHint","legendRightAxisHint","switchYAxisOrder","allDisabled","availableHeight1","availableHeight2","dataBars","dataLines","series1","series2","contextEnter","legendXPosition","originalKey","bars2Wrap","lines2Wrap","dataLine","focusBarsWrap","focusLinesWrap","barsOpacity","linesOpacity","y1Opacity","y2Opacity","getLinesAxis","getBarsAxis","multiBar","stackOffset","hideable","barColor","groupSpacing","last_datalength","nonStackableCount","nonStackable","nonStackableSeries","posBase","negBase","exitTransition","darker","barSelection","multiBarChart","multibar","controlLabels","reduceXTicks","controlWidth","getTranslate","totalInBetweenTicks","multiBarHorizontal","getYerr","yErr","valuePadding","xerr","yerr","multiBarHorizontalChart","controlsPosition","multiChart","yDomain1","yDomain2","yScale1","yScale2","lines1","scatters1","scatters2","bars1","stack1","stackedArea","stack2","yAxis1","yAxis2","dataLines1","dataLines2","dataScatters1","dataScatters2","dataBars1","dataBars2","dataStack1","dataStack2","color_array","lines1Wrap","scatters1Wrap","bars1Wrap","stack1Wrap","scatters2Wrap","stack2Wrap","extraValue1BarStacked","aVal","extraValue2BarStacked","mouseover_line","yaxis","mouseover_scatter","mouseover_stack","mouseover_bar","serieIndex","parallelCoordinates","foreground","undefinedValuesLabel","dimensionData","enabledDimensions","dimensionNames","displayBrush","axisWithUndefinedValues","lineTension","newData","dataValues","currentPosition","rangePoints","oldDomainMaxValue","displayMissingValuesline","currentTicks","onlyUndefinedValues","hasOnlyNaN","hasNaN","brushstart","brushend","missingValuesline","missingValueslineText","axisDrag","__origin__","dimensionPosition","dimensionsOrder","lineData","dimensionsEnter","restoreBrush","actives","extents","formerActive","newscale","brushDomain","updateTicks","hasActiveBrush","brushEnd","tickValues","activeChanged","dimensionFormats","parallelCoordinatesChart","nanValue","originalPosition","dim","pie","showLabels","labelsOutside","labelType","labelThreshold","hideOverlapLabels","donut","growOnHover","titleOffset","labelSunbeamLayout","padAngle","donutRatio","arcsRadius","arcsOver","arcsRadiusOuter","arcsRadiusInner","g_pie","arcOver","slices","pieLabels","_current","attrTween","labelsArc","rotateAngle","labelLocationHash","createHashKey","getSlicePercentage","getBBox","pieLabelsOutside","donutLabelsOutside","labelFormat","pieChart","showTooltipPercent","pieWrap","sankey","nodeWidth","nodePadding","sinksRight","iterations","sourceLinks","targetLinks","nextNodes","kx","remainingNodes","moveSinksRight","computeNodeBreadths","ky","nodesByBreadth","nest","sortKeys","ascending","resolveCollisions","computeLinkDepths","relaxRightToLeft","relaxLeftToRight","weightedSource","sy","breadth","weightedTarget","ascendingDepth","computeNodeDepths","curvature","interpolateNumber","ascendingSourceDepth","ascendingTargetDepth","relayout","sankeyChart","linkTitle","nodeFillColor","nodeStrokeColor","nodeTitle","showError","testData","isDataValid","dataAvailable","nodeStyle","fillColor","z0","xDom","yDom","width0","height0","timeoutID","pointBorderColor","getShape","forceSize","notActive","padDataOuter","clipVoronoi","showVoronoi","clipRadius","sizeDomain","sizeRange","interactiveUpdateDelay","needsUpdate","_sizeRange_def","delCache","getDiffs","getCache","logScale","scaleDiff","sizeDiff","domainDiff","updateInteractiveLayer","vertices","groupIndex","pX","pY","pointArray","voronoi","pointPaths","vPointPaths","mouseEventCallback","mDispatch","relativePos","titles","pointScale","pointRange","forcePoint","pointShape","scatterChart","distX","distY","showDistX","showDistY","regWrap","regLine","intercept","slope","sparkline","showMinMaxPoints","showCurrentPoint","yValues","maxPoint","minPoint","currentPoint","sparklinePlus","showLastValue","alignValue","rightAlignValue","sparklineWrap","updateValueLine","hoverValue","hoverEnter","closestIndex","getClosestIndex","dataRaw","aseries","dataFiltered","zeroArea","areaMouseover","areaMouseout","areaClick","d3_stackedOffset_stackPercent","stackData","stackedAreaChart","showTotalInTooltip","totalLabel","controlOptions","oldYTickFormat","oldValueFormatter","percentFormatter","xAxisHeight","legendTop","stack_percent","requiredTop","stackedWrap","currentFormat","valueSum","allNullValues","atleastOnePoint","tooltipValue","stackedY0","stackedY","stackedAreaWithFocusChart","sunburst","groupColorByParent","prevPositions","rotationToAvoidUpsideDown","computeCenterAngle","computeNodePercentage","labelThresholdMatched","arcTweenZoom","arcTweenUpdate","ipo","dx0","dy0","zoomClick","centerAngle","pP","updatePrevPosition","storeRetrievePrevPositions","cG","sunburstChart","buildBackgroundBlurStage","templateObject_3","blurPass","texelWidth","texelHeight","texelSizeLocation","texture1","NEAREST","texture2","frameBuffer1","createFramebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","frameBuffer2","deleteFramebuffer","buildBlurPass","blendPass","blurredInputFrame","buildBlendPass","Iterators","defineIterator","createIterResultObject","ARRAY_ITERATOR","getInternalState","iterated","Arguments","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","codeAt","defineBuiltIns","iteratorClose","AsyncIteratorPrototype","ASYNC_FROM_SYNC_ITERATOR","asyncFromSyncIteratorContinuation","syncIterator","closeOnRejection","iteratorRecord","$return","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","d3_arraySlice","d3_array","d3_document","d3_documentElement","d3_window","d3_element_prototype","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","d3_ascending","d3_number","d3_numeric","d3_bisector","quantile","d3_bisect","d3_transposeLength","bisectLeft","bisectRight","permute","permutes","matrix","d3_class","d3_Map","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","d3_vendorPrefixes","prefixName","d3_range_integerScale","sortValues","rollup","mapType","valuesByKey","sortKey","keyMap","d3_noop","d3_dispatch","d3_dispatch_event","listenerByName","d3_eventPreventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","thiz","argumentz","e0","requote","d3_requote_re","d3_subclass","d3_selection","d3_selectionPrototype","d3_select","d3_selectAll","d3_selectMatches","d3_selectMatcher","Sizzle","matchesSelector","d3_selection_selector","d3_selection_selectorAll","subgroup","subnode","subgroups","d3_nsXhtml","d3_nsPrefix","xhtml","xlink","d3_selection_attr","ns","qualify","removeAttributeNS","d3_collapse","d3_selection_classedRe","d3_selection_classes","d3_selection_classed","d3_selection_classedName","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","d3_selectionRemove","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","getAttributeNS","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","d3_selection_on","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","upgroup","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","suppressClick","d3_mousePoint","d3_mouse_bug44083","createSVGPoint","ctm","getScreenCTM","matrixTransform","inverse","d3_behavior_dragTouchId","touch","mousedown","dragstart","subject","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","position1","position0","dragRestore","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","d3_asin","d3_cosh","d3_haversin","interpolateZoom","ux0","uy0","w0","ux1","uy1","coshr0","d3_sinh","translate0","center0","mousewheelTimer","touchtime","scaleExtent","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","translateTo","zoomTo","rescale","zoomstarted","zoomed","zoomended","location0","d3_selection_interrupt","locations0","distance0","zoomName","targets","relocate","started","ended","l0","distance1","scale1","d3_behavior_zoomDelta","view1","d3_transitionInheritId","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","brighter","hcl","d3_hclPrototype","d3_hcl_lab","d3_lab_K","lab","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","d3_xhr","respond","d3_xhrHasResponse","XDomainRequest","onreadystatechange","onprogress","overrideMimeType","beforesend","d3_xhr_fixCallback","dsv","reFormat","delimiterCode","typedResponse","formatRow","formatValue","parseRows","eol","EOL","EOF","formatRows","fieldSet","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","d3_formatPrefixes","d3_locale_numberFormat","locale_decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","specifier","d3_format_re","zfill","comma","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","formatPrefix","d3_time","d3_date","d3_date_utc","d3_time_prototype","setDay","setUTCDay","setUTCMilliseconds","setUTCMinutes","d3_time_interval","d0","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","locale_date","locale_time","locale_periods","locale_days","locale_shortDays","shortDays","locale_months","locale_shortMonths","shortMonths","d3_time_format","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","d3_time_parsers","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_formatPad","sundayOfYear","mondayOfYear","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","years","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","zs","zm","numberFormat","timeFormat","d3_locale_enUS","d3_adder","geo","d3_adderSum","d3_adderTemp","d3_geo_streamGeometry","d3_geo_streamGeometryType","d3_geo_streamObjectType","Feature","FeatureCollection","Sphere","MultiPoint","d3_geo_streamLine","MultiLineString","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","nextPoint","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ringPoint","ringStart","ringEnd","linePoint","inflection","antimeridian","compareRanges","withinRange","best","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","cz","d3_geo_compose","d3_true","d3_geo_clipPolygon","clipStartInside","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","isSubject","d3_geo_clip","pointVisible","clipLine","clipStart","rotatedClipStart","pointRing","meridian","parallel","meridianNormal","polarAngle","winding","point0","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","d3_geo_clipBufferListener","ringListener","clean","ringSegments","d3_geo_clipSegmentLength1","rejoin","d3_geo_clipAntimeridian","d3_geo_clipAntimeridianIntersect","d3_geom_clipLine","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","listener_","bufferListener","insidePolygon","corner","comparePoints","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","forward","clipExtent","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","cosMinDistance","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","resampleLineTo","dy2","d3_geo_transform","d3_geo_projection","projectRotate","projectResample","preclip","postclip","clipAngle","projection","d3_geo_rotation","d3_geo_projectionRadians","smallRadius","notHemisphere","point2","point1","d3_geo_circleInterpolate","two","n2n2","n1n2","n1xn2","uu","polar","d3_geo_clipCircle","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_target","projectStream","contextStream","cacheStream","projectionMutator","equirectangular","graticule","X1","X0","Y1","Y0","DX","DY","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","sinc","cosc","d3_geo_azimuthalEqualArea","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","d3_geo_mercator","d3_geo_conicEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","d3_geom_hullOrder","stereographic","transverseMercator","flippedPoints","upper","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x21","x43","y21","y43","d3_geom_polygonClosed","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","d3_geom_voronoiCreateBeach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","d3_geom_voronoiCell","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","d3_geom_voronoiConnectEdge","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","d3_geom_voronoiVertexOrder","d3_geom_voronoiClipEdges","iHalfEdge","halfEdges","nHalfEdges","prepare","d3_geom_voronoiCloseCells","diagram","d3_geom_voronoiClipExtent","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","sx","d3_interpolateRgb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","xm","ym","below","visit","closestPoint","minDistance2","distance2","d3_geom_quadtreeFind","interpolateRgb","interpolateObject","d3_interpolateArray","interpolateArray","d3_ease_default","d3_ease","poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","back","bounce","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_cubicInOut","t3","d3_interpolateRound","d3_transform","d3_transformNormalize","kz","d3_transformDot","ease","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","consolidate","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTransform","d3_interpolateTranslate","d3_interpolateRotate","d3_interpolateSkew","d3_interpolateScale","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","aNodes","d3_layout_bundleAncestors","bNodes","sharedNode","d3_layout_bundleLeastCommonAncestor","d3_layout_forceDragstart","d3_layout_forceDragend","d3_layout_forceMouseover","d3_layout_forceMouseout","d3_layout_forceAccumulate","charges","pointCharge","interpolateTransform","bundle","chord","chords","sortGroups","sortSubgroups","sortChords","groupSums","subgroupIndex","subindex","resort","distances","strengths","d3_layout_forceLinkDistance","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","repulse","dw","dragmove","chargeDistance","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","childs","revalue","d3_layout_pieSortByValue","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","orders","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","valuer","ranger","binner","thresholds","pack","separation","nodeSize","root0","root1","wrapTree","firstWalk","secondWalk","sizeNode","tx","siblings","d3_layout_treeShift","vip","vop","vom","sip","sop","sim","som","apportion","cluster","d3_layout_clusterX","d3_layout_clusterY","treemap","stickies","squarify","worst","stickify","padConstant","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linear","rangeRound","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatSignificant","d3_scale_linearFormatPrecision","d3_scale_log","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeRoundPoints","outerPadding","rangeRoundBands","category10","d3_category10","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","d3_zero","d3_svg_arcInnerRadius","d3_svg_arcOuterRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","circleSegment","d3_svg_arcSweep","h0","rc1","rc0","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","cx0","cx1","d3_svg_line","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","curve","p3","projection_","d3_svg_diagonalRadialProjection","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","d3_selection_interruptNS","activeId","d3_transitionPrototype","d3_transition_tween","d3_transition_text","cancelId","subnodes","nameNS","attrNull","attrNullNS","styleNull","inheritId","id0","tickFormat_","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickArguments_","tickTransform","tickExit","tickSpacing","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSubdivide","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","event_","resizing","resizingX","resizingY","brushmove","ey","move1","extent1","extent0","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skipped","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","selectNode","createContextualFragment","responseXML","objA","objB","keysA","keysB","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","long","medium","short","formatRelativeLocale","yesterday","today","tomorrow","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","valueCallback","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_baseDate","dirtyNumber","rem100","abbreviated","wide","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","KEYWORDS","metaSchema","keywordsJsonPointers","RemoteParticipant","StatsReport","Room","localParticipant","room","recording","participants","_clientTrackSwitchOffControl","clientTrackSwitchOffControl","_contentPreferencesMode","contentPreferencesMode","_participants","_signaling","dominantSpeakerSid","isRecording","mediaRegion","handleLocalParticipantEvents","connectParticipant","stateChanged","participant","_unsubscribeTracks","handleSignalingEvents","allowedAudioProcessors","audioProcessors","vendor.e552cf92","disablePermanently","verifyNoiseCancellation","responses","rewriteLocalTrackIds","refreshInactiveMedia","localTrackPublications","localMediaTracks","remoteMediaTracks","mediaTracks","unmuteEvent","Event","isMuted","pauseEvent","attachments","_attachments","elShims","_elShims","pausedIntentionally","localParticipantSignaling","trackStat","getSender","participantSignaling","eventOrPair","participantEvent","reemit","assocIndexOf","ARGUMENT_NAMES","ensureExist","assertPredicate","isInjectable","fnStr","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","focusIf","focusDelay","$indexOf","nativeIndexOf","reIsUint","advanceStringIndex","getSubstitution","getRegExpFlags","maybeToString","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","nativeReplace","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","fullUnicode","accumulatedResult","nextSourcePosition","replacerArgs","Button","__values","PeerConnectionReport","ReceiverReportFactory","SenderReportFactory","PeerConnectionReportFactory","senders","receivers","getTransceivers","currentDirection","getSenderOrReceiverReports","senderReports","receiverReports","pcReport","senderReportFactoriesByMediaType","getSenderReportFactoriesByMediaType","senderReportFactoryIdsToDeleteByMediaType","getSenderReportFactoryIdsByMediaType","updateSenderReports","deleteSenderOrReceiverReportFactories","receiverReportFactoriesByMediaType","getReceiverReportFactoriesByMediaType","receiverReportFactoryIdsToDeleteByMediaType","getReceiverReportFactoryIdsByMediaType","updateReceiverReports","updateIceReport","updateChrome","audioSenderReportFactories","videoSenderReportFactories","audioReceiverReportFactories","videoReceiverReportFactories","sendersOrReceivers","senderOrReceiver","e_1","e_1_1","getOrCreateSenderOrReceiverReportFactory","SenderOrReceiverReportFactory","sendersOrReceiversByMediaType","mediaType","trackIdentifier","senderOrReceiverFactory","getOrCreateSenderReportFactory","getOrCreateReceiverReportFactory","e_2","senderReportFactoryIdsToDelete","senderReportFactory","remoteInboundStats","e_2_1","e_3","receiverReportFactoryIdsToDelete","receiverReportFactory","e_3_1","senderOrReceiverReportFactoriesByMediaType","senderOrReceiverReportFactoryIdsByMediaType","senderOrReceiverReportFactories","senderOrReceiverReportFactoryId","e_4","e_5","selectedCandidatePair","selectedCandidatePairId","e_4_1","e_5_1","msCrypto","rnds8","trace_1","strings_1","predicates_2","defaultResolvePolicy","Resolvable","resolveFn","policy","getPolicy","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","maybeWaitForRx","observable$","resolvable","resolvedDeps","traceResolvableResolved","fromData","SetCache","arraySome","cacheHas","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","TO_STRING_TAG_SUPPORT","_handleTrackSignalingEvents","_addTrack","remoteTrack","_subscribed","_addTrackPublication","addedPublication","_getTrackPublicationEvents","isSubscribed","_unsubscribe","_removeTrack","unsubscribedTrack","_tracks","_removeTrackPublication","removedPublication","lazyLoadHook","originalTransition","$url","urlService","sync","lazyLoadFn","registerLazyLoadHook","onBefore","fractionLost","ReceiverReport","initialStats","copyWithin","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","comparefn","itemsLength","getSortCompare","matchesImpl","drop","focusFirstItemOnShow","itemSelector","alignEnd","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","useForceUpdate","toggleElement","menuRef","menuElement","setMenu","lastShow","lastSourceEvent","focusInDropdown","focusToggle","maybeFocusFirst","focusType","nativeMatch","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getNextFocusedChild","DropdownContext","onKeyDown","_next","DropdownMenu","Toggle","DropdownItem","propActive","onSelectCtx","SelectableContext","NavContext","DropdownHeader","createWithBsPrefix","DropdownDivider","DropdownItemText","pProps","_useUncontrolled","alignRight","_useUncontrolled$as","navbar","handleToggle","nextShow","handleSelect","dropdownProps","Divider","Item","ItemText","LocalMediaRestartDeferreds","_audio","_video","resolveDeferred","startDeferred","whenResolved","suffixes","arrayIncludes","arrayIncludesWith","nativeMin","Feedback","_ref$type","_ref$tooltip","$fromCodePoint","fromCodePoint","reducerName","classofRaw","createNoiseCancellationAudioProcessor","dynamicImport","PLUGIN_CONFIG","krisp","supportedVersion","pluginFile","rnnoise","noiseCancellationOptions","audioProcessor","pluginConfig","rootDir","sdkFilePath","dynamicModule","plugin_1","er_1","sdkAssetsPath","getVersion","isSupported","pluginVersion","supportedVersions","pluginVersions","tempContext","AudioContext","ensureVersionSupported","setLogging","mediaStream","cleanTrack","compileSchema","Cache","SchemaObject","$dataMetaSchema","Ajv","schemaKeyRef","_meta","_skipValidation","_getId","checkUnique","normalizeId","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","currentUriFormat","_schemaUriFormatFunc","_schemaUriFormat","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","addFormat","dataVar","dataPath","shouldAddSchema","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","setLogger","schemaUriFormat","_get$IdOrId","_get$Id","chooseGetId","loopRequired","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","addInitialFormats","$dataSchema","addDraft6MetaSchema","optsSchemas","addInitialSchemas","newConfiguration","configuration","validOptions","persistentOptions","_objectAssign2","_deepFreeze2","sayWarning","fallbackValue","_x2","_x3","fetchFromObject","_serializeJavascript2","duScroll","cancelAnimation","requestAnimation","duScrollEasing","duScrollDuration","duScrollOffset","duScrollCancelOnEvents","scrollAnimation","isDocument","HTMLDocument","DOCUMENT_NODE","ELEMENT_NODE","duScrollTo","aliasFn","duScrollToElement","duScrollToAnimated","startLeft","duScrollLeft","startTop","duScrollTop","deltaLeft","deltaTop","cancelScrollAnimation","animationStep","duScrollTopAnimated","duScrollLeftAnimated","unprefixed","vendors","fnName","polyfill","timeToCall","scrollContainerAPI","duScrollGreedy","duScrollSpyWait","duScrollSpyRefreshInterval","duScrollBottomSpy","duScrollActiveClass","contexts","spies","queued","bottomReached","containerOffset","documentScrollHeight","currentlyActive","toBeActive","spy","compareProperty","getTargetPosition","getTargetElement","createScrollHandler","destroyContext","intervalPromise","defaultContextId","getContextForScope","getContextForSpy","contextId","addSpy","isElementInDocument","removeSpy","containers","getContainerId","removeContainer","duSmoothScroll","spyAPI","iElement","iAttrs","Spy","targetElementOrId","targetId","flushTargetCache","ngHref","duScrollspy","deregisterOnStateChange","DefaultRecordingSignaling","StateMachine","DefaultTimeout","connected","reconnecting","disconnected","RoomSignaling","RecordingSignaling","sessionTimeout","_disconnect","_reconnectingError","_mediaConnectionIsReconnecting","_sessionTimeout","maybeUpdateState","preempt","setDominantSpeaker","roomSignaling","signalingConnectionState","getNative","mediaTrackTransceiver","accordionOnClick","contextEventKey","AccordionContext","useAccordionToggle","_collapseStyles","MARGINS","getDefaultDimensionValue","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","createChainedFunction","handleEntering","handleEntered","handleExit","triggerBrowserReflow","handleExiting","transitionEnd","AccordionCollapse","Accordion","controlledProps","finalClassName","touchHandled","mouseProto","_mouseInit","_mouseDestroy","_touchStart","_mouseCapture","originalEvent","_touchMoved","simulateMouseEvent","_touchMove","_touchEnd","simulatedType","simulatedEvent","initMouseEvent","createIteratorConstructor","MATCH_ALL","REGEXP_STRING","REGEXP_STRING_ITERATOR","RegExpPrototype","nativeMatchAll","matchAll","WORKS_WITH_NON_GLOBAL_REGEX","$RegExpStringIterator","$global","unicode","$matchAll","maskSrcKey","reIsHostCtor","reIsNative","reIsDeepProp","reIsPlainProp","PeerConnectionV2","MediaTrackSender","QueueingEventEmitter","PeerConnectionManager","preferredCodecs","offerOptions","offerToReceiveVideo","offerToReceiveAudio","_audioContextFactory","_closedPeerConnectionIds","_configuration","_configurationDeferred","_connectionState","_dummyAudioTrackSender","createDummyAudioMediaStreamTrack","_encodingParameters","_iceConnectionState","_dataTrackSenders","_lastConnectionState","_lastIceConnectionState","_mediaTrackSenders","_offerOptions","_peerConnections","_preferredCodecs","_PeerConnectionV2","setEffectiveAdaptiveSimulcast","effectiveAdaptiveSimulcast","_closeAbsentPeerConnections","peerConnectionStates","peerConnectionIds","peerConnectionState","_close","_getConfiguration","_getOrCreate","PeerConnectionV2_1","dummyAudioMediaStreamTrack","removeDataTrackSender","removeMediaTrackSender","updateConnectionState","updateIceConnectionState","addDataTrackSender","addMediaTrackSender","createAndOffer","getTrackReceivers","getStates","setConfiguration","setIceReconnectTimeout","setTrackSenders","trackSenders","dataTrackSenders","mediaTrackSenders","peerConnectionManager","getDataTrackSenderChanges","getMediaTrackSenderChanges","getTrackSenderChanges","isApplicationSectionNegotiated","applyTrackSenderChanges","synced","peerConnections","fromRank","toRank","new","checking","connecting","failed","summarizeIceOrPeerConnectionStates","state1","state2","pcm","pcv2","createProperty","arraySpeciesCreate","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","transitionHook_1","HookBuilder","buildHooksForPhase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","TransitionHook","reverseSort","depthDelta","isCreate","hookPhase","TransitionHookPhase","CREATE","$transitions","getHooks","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","MemoryLocationService","styleTexts","styleEls","injectStyles","styleText","styleEl","appendStylesTo","ensureElHasStyles","registerStylesRoot","queriedNonceValue","metaWithNonce","elWithNonce","queryNonceValue","parentEl","hydrateStylesRoot","ruleCnt","cssRules","styleStr","insertRule","DelayedRunner","drainedOption","isDirty","pauseDepths","isPaused","tryDrain","drained","removeElement","elementClosest","elementMatches","PIXEL_PROP_RE","applyStyle","applyStyleProp","getEventTargetViaRoot","composedPath","guid$1","getUniqueDomId","listenBySelector","attachedHandler","matchedChild","buildDelegationHandler","listenToHoverBySelector","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","realOnMouseLeave","mouseLeaveEv","transitionEventNames","whenTransitionDone","realCallback","createAriaClickAttrs","createAriaKeyboardAttrs","guidNumber","disableCursor","enableCursor","preventSelection","userSelect","webkitUserSelect","allowSelection","preventContextMenu","allowContextMenu","compareByFieldSpec","obj0","obj1","fieldSpec","localeCompare","padStart","formatWithOrdinals","fallbackText","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","INTERNAL_UNITS","PARSE_RE","createDuration","parseString","parseObject","specifiedWeeks","addDurations","subtractDurations","multiplyDuration","asRoughDays","dur","asRoughMs","wholeDivideDurations","localRes","greatestDurationDenominator","isArraysEqual","equalityFunc","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addMs","diffWeeks","m0","diffDays","diffWholeDays","timeAsMs","startOfDay","weekOfGivenYear","firstWeekStart","firstWeekOffset","dayStart","fwd","dateToLocalArray","arrayToLocalDate","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoMonthStr","formatIsoTimeString","doIso","mins","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","isPropsEqual","EXTENDED_SETTINGS_AND_SEVERITIES","omitZeroMinute","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","smallestUnitNum","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","calendarSystem","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","found0","before0","after0","found1","before1","after1","findCommonInsertion","defaultSeparator","getSmallestUnit","standardDatePropCnt","weekText","weekTextLong","simpleNumberFormat","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","defaultAllDayEventDuration","defaultTimedEventDuration","nextDayThreshold","scrollTime","scrollTimeReset","slotMinTime","slotMaxTime","dayPopoverFormat","slotDuration","snapDuration","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorSnap","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","specs","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","defaultAllDay","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","rerenderDelay","moreLinkText","moreLinkHint","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","fixedWeekCount","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","monthStartFormat","customRenderingMetaMap","customRenderingReplaces","BASE_OPTION_DEFAULTS","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","eventClick","eventMouseEnter","eventMouseLeave","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","initialEvents","eventSources","COMPLEX_OPTION_COMPARATORS","isMaybeObjectsEqual","isMaybeArraysEqual","VIEW_OPTION_REFINERS","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","didMount","willUnmount","mergeRawOptions","optionSets","mergeProps","refineProps","refiners","refined","propObjs","complexPropsMap","dest","complexObjs","filterHash","mapHash","newHash","arrayToHash","hashValuesToArray","HANDLER_RE","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","calendarSystemClassMap","theClass","arrayToMarker","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","createCalendarSystem","weekDow","weekDoy","weekNumberFunc","createMarker","createMarkerMeta","createNowMarker","timestampToMarker","isTimeUnspecified","forcedTzo","diffWholeYears","diffWholeMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","nextW","dateOptions","offsetForMarker","isEndExclusive","forcedStartTzo","forcedEndTzo","formatIso","extraOptions","omitTimeZoneOffset","omitTime","timestampToArray","offsetForArray","Theme","calendarOptions","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","applyIconOverridePrefix","getIconClass","isRtl","getCustomButtonIconClass","customButtonProps","runBeforeFlush","oldDebounceRendering","debounceRendering","callbackQ","FakeComponent","ContextType","subs","ScrollResponder","execFunc","handleScrollRequest","queuedRequest","drain","fireInitialScroll","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewApi","viewOptions","dateProfileGenerator","dateEnv","nowManager","pluginHooks","getCurrentData","calendarApi","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","propEquality","stateEquality","addPropsEquality","addStateEquality","BaseComponent","setRef","ContentInjector","queuedDomNodes","currentDomNodes","handleEl","generatorName","hasCustomRenderingHandler","updateElRef","customGenerator","defaultGenerator","buildElAttrs","innerContent","currentGeneratorMeta","customGeneratorRes","domNodes","elTag","applyQueueudDomNodes","triggerCustomRendering","reportNewContainerEl","elClasses","isTruthy","extraClassNames","elAttrs","elStyle","getUnequalProps","RenderId","ContentContainer","InnerContent","InnerContentInjector","didMountMisfire","generatedClassNames","classNameGenerator","generateClassNames","renderId","containerComponent","parentProps","ViewContainer","buildViewClassNames","invertRanges","constraintRange","dateRange","invertedRanges","range0","range1","intersectRanges","newRange","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","diffDates","date0","date1","largeUnit","m0day","m1day","diffDayAndTime","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","currentDate","forceToValid","prevDate","currentRangeUnit","build","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","activeRange","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","currentRange","buildDateIncrement","validRangeInput","simpleInput","getDateMarker","refineRange","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","customAlignment","rangeInput","parseRange","isHiddenDayHash","inc","isExclusive","createEventInstance","defId","instanceId","expandRecurring","eventStore","framingRange","recurringDef","allDay","starts","expandRecurringRanges","recurringTypes","eventDef","typeId","typeData","EVENT_NON_DATE_REFINERS","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","parseEvent","eventSource","allowOpenRange","buildEventRefiners","defIdMap","instanceIdMap","refineEventDef","computeIsDefaultAllDay","recurringRes","allDayGuess","parseRecurring","parseEventDef","sourceId","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","startInput","parseSingle","publicId","EVENT_UI_REFINERS","eventRefiners","createEventUi","memberAdder","eventDefMemberAdders","parseEvents","rawEvents","rawEvent","eventTupleToStore","getRelevantEvents","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","createEmptyEventStore","mergeEventStores","store0","store1","filterFunc","parseClassNames","startEditable","durationEditable","overlap","allow","EMPTY_EVENT_UI","allows","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_SOURCE_REFINERS","success","failure","parseEventSource","buildEventSourceRefiners","rawObj","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","reduceEventStore","dateProfile","fetchId","subset","transformRawEvents","excludeEventsBySourceId","receiveRawEvents","existingEventStore","buildPublicIdMaps","resetRawEvents","expandRange","addEvent","master","filteredDefs","filteredInstances","excludeSubEventStore","calEachTransform","sourceEachTransform","transformEachRawEvent","refinedEvents","refinedEvent","rezoneEventStoreDates","oldDateEnv","newDateEnv","Emitter","handlers","thisContext","setThisContext","addToHash","removeFromHash","attachedHandlers","optionHandler","hasHandlers","DEF_DEFAULTS","daysOfWeek","parseBusinessHours","rawDefs","rawDef","refineInputs","triggerDateSelect","pev","buildDateSpanApiWithContext","jsEvent","origEvent","dateSpan","dateSpanTransforms","buildRangeApi","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","compileEventUis","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","applier","eventDefMutationAppliers","eventInstance","forceAllDay","clearEnd","datesDelta","EventSourceImpl","internalEventSource","refetch","sourceIds","isRefetch","EventImpl","_def","_instance","setProp","setExtendedProp","granularity","maintainDuration","endInput","setDates","instanceRange","moveStart","deltaInput","moveEnd","moveDates","setAllDay","formatInput","relevantEvents","oldEvent","relatedEvents","buildEventApis","revert","asStore","eventApiToStore","startStr","endStr","toPlainObject","collapseColor","collapseExtendedProps","eventApi","excludeInstance","eventApis","excludeInstanceId","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRange","hasBgRendering","setElSeg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","buildSegCompareObj","fieldSpecs","compareByFieldSpecs","_seg","eventRange","computeSegDraggable","transformers","isDraggableTransformers","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","nowDate","segRange","isPast","isToday","getEventClassNames","isMirror","isDraggable","isStartResizable","isEndResizable","isResizing","isSelected","buildEventRangeKey","getSegAnchorAttrs","STANDARD_PROPS","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildRangeApiWithTimeZone","unpromisify","normalizedSuccessCallback","normalizedFailureCallback","isResolved","wrappedSuccess","wrappedFailure","JsonRequestError","requestJson","fetchRes","parsedResponse","canVGrowWithinCell","getCanVGrowWithinCell","possible","computeCanVGrowWithinCell","CalendarRoot","forPrint","handleBeforePrint","handleAfterPrint","isHeightAuto","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsToStore","interactionSettingsStore","NowTimer","handleRefresh","timing","computeTiming","waitMs","handleVisibilityChange","addResetListener","removeResetListener","unroundedNow","unitValue","buildDayRange","CalendarImpl","currentDataManager","batchRendering","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","currentCalendarOptionsRefiners","changeView","viewType","dateOrRange","dateMarker","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","viewsWithButtons","singleUnit","gotoDate","zonedDateInput","incrementDate","formatDate","dateOrObj","endDate","selectionInput","defaultDuration","parseOpenDateSpan","parseDateSpan","dateSelection","triggerDateUnselect","eventInput","sourceInput","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","getEventById","getEvents","currentData","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","removeAllEventSources","refetchEvents","scrollToTime","timeInput","pointInsideRect","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","splitStates","affectedStores","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isOther","getDayClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","computeScrollbarWidthsForEl","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","computedStyle","borderLeft","borderRight","borderRightWidth","borderTop","borderBottom","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","outerEl","computeIsRtlScrollbarOnLeft","computeEdges","PositionCache","originEl","els","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","leftToIndex","leftPosition","topToIndex","topPosition","leftIndex","topIndex","similarTo","otherCache","similarNumArrays","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","setScrollTop","setScrollLeft","WindowScrollController","DateComponent","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","SegHierarchy","getEntryThickness","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","stackCnt","touchingEntry","hiddenEntry","intersectSpans","splitEntry","barrier","entrySpan","barrierSpan","lateral","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntry","trackingEntries","searchRes","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","groupIntersectingEntries","filteredMerges","hungryMerge","joinSpans","getItemVal","middleIndex","middleVal","ElementDragging","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","publicDate","extraRenderProps","colSpan","extraDataAttrs","InnerContainer","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","DayHeader","createDayHeaderFormatter","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","dayIndex","sliceRange","firstIndex","getDateDayIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","buildCells","headerDates","buildHeaderDates","buildCell","seriesSeg","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","activeDateSpanRange","fabricateEventRange","eventRanges","sliceEventRange","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","calendarState","isPropsValid","dateSpanMeta","filterConfig","currentState","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","selectionConfig","otherEventStore","removals","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","isDateSelectionPropsValid","businessHoursUnexpanded","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","VISIBLE_HIDDEN_RE","Scroller","liquid","liquidIsAbsolute","overcomeLeft","overcomeRight","overcomeBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","handleValue","refCallback","collectFromHash","getSectionHasLiquidHeight","sectionConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","shrinkWidth","colNodes","colProps","sanitizeShrinkWidth","minWidth","getSectionClassNames","wholeTableVGrow","renderScrollShim","tableMinWidth","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeShrinkWidth","computeScrollerDims","sectionConfigs","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","renderSection","isBuggy","roleAttrs","isHeader","outerContent","renderChunkTd","chunkConfig","getAllowYScrolling","isLiquid","sectionKey","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","getSectionByKey","scrollerElRef","hasShrinkWidth","chunkEls","shrinkCells","allMatches","findElements","largestWidth","shrinkCell","scrollbarWidth","computeScrollbarWidths","scroller","harnessEl","EventContainer","buildPublicEvent","timeText","disableDragging","disableResizing","isDateSelecting","StandardEvent","defaultTimeFormat","renderInnerContent$1","eventContentArg","NowIndicatorContainer","isAxis","DAY_NUM_FORMAT","DayCellContainer","refineRenderProps","isMonthStart","showDayNumber","hasCustomDayCellContent","dayNumberText","BgEvent","renderInnerContent","renderFill","fillType","WeekNumberContainer","defaultFormat","renderInner","titleId","handleRootEl","rootEl","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","extraAttrs","alignmentEl","alignGridTop","alignmentRect","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","MorePopover","startDate","forceTimed","extraDateSpan","dayEl","MoreLinkContainer","isPopoverOpen","popoverId","handleLinkEl","linkEl","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","updateParentEl","computeEarliestSegStart","pickLatestEnd","pickEarliestStart","seg0","seg1","Store","CustomRenderingStore","Processor","parseExtension","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","dataAsUrl","isDataUrl","canvasToBlob","resolveUrl","createHTMLDocument","getAndEncode","impl","urlCache","cacheBust","httpTimeout","onloadend","useCredentials","imagePlaceholder","asArray","escapeXhtml","makeImage","inlineAll","shouldProcess","readUrls","resolveAll","readAll","styleSheets","CSSRule","FONT_FACE_RULE","parentStyleSheet","newImage","toSvg","toPng","raster","toJpeg","toPixelData","fontFaces","images","inliner","HTMLCanvasElement","html2canvas","fontFeatureSettings","fontKerning","fontStretch","fontStyle","fontVariant","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariationSettings","HTMLTextAreaElement","HTMLInputElement","SVGElement","SVGRectElement","bgcolor","onclone","XMLSerializer","serializeToString","mozImageSmoothingEnabled","msImageSmoothingEnabled","imageSmoothingEnabled","MouseEvent","saveAs","HTMLAnchorElement","webkitURL","msSaveOrOpenBlob","autoBom","innerText","cropImageByInnerWH","domtoimageOptions","screenName","iconUrl","hideElementsWithSelectors","onCropBorderSize","captionFontSize","captionFont","captionColor","captionBgColor","captionOffset","debugMode","preventDownload","onPixelDataFail","_container","DomUtil","_link","_screenState","_addScreenBtn","_onUserStartInteractWithMap","_onUserEndInteractWithMap","takeScreen","_setElementsVisible","_waitEndOfInteractions","_getPixelData","_toCanvas","_canvasToImage","_canvasToBlob","screenHeight","screenWidth","_getMinAndMaxOnValuesBreak","_getPixelDataOfNormalMap","_getPixelDataOfBigMap","getPane","mapPane","_addCss","DomEvent","_onScreenBtn","disableClickPropagation","_interaction","SimpleMapScreenshoter","simpleMapScreenshoter","MediaTrackTransceiver","_track","$noEmptySchema","$sch","_google_map2","resolveContainerRef","onResolved","earlyRef","nextRef","_ga","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","DominantSpeakerSignaling","_loudestParticipantSid","_setLoudestParticipantSid","loudestParticipantSid","Filter","isLessThanOrEqualTo","_getKey","_getValue","_isLessThanOrEqualTo","updateAndFilter","EE","_eventsCount","clearEvent","eventNames","a3","a4","a5","lastDigit","last2Digits","mathTrig","engineering","BETADIST","BETA","DIST","BETAINV","INV","BINOMDIST","BINOM","ISOCEILING","CEILINGMATH","CEILINGPRECISE","CHIDIST","CHISQ","CHIDISTRT","CHIINV","CHIINVRT","CHITEST","TEST","CONFIDENCE","NORM","COVAR","COVARIANCE","COVARIANCEP","COVARIANCES","CRITBINOM","EXPONDIST","EXPON","ERFCPRECISE","ERFC","ERFPRECISE","ERF","FDIST","FDISTRT","FINVRT","FINV","FLOORMATH","FLOORPRECISE","FTEST","GAMMADIST","GAMMA","GAMMAINV","GAMMALNPRECISE","GAMMALN","HYPGEOMDIST","HYPGEOM","LOGINV","LOGNORM","LOGNORMINV","LOGNORMDIST","MODEMULT","MULT","MODESNGL","NEGBINOMDIST","NEGBINOM","NETWORKDAYSINTL","NETWORKDAYS","INTL","NORMDIST","NORMINV","NORMSDIST","NORMSINV","PERCENTILEEXC","PERCENTILEINC","PERCENTRANK","PERCENTRANKEXC","PERCENTRANKINC","POISSON","POISSONDIST","QUARTILEEXC","QUARTILEINC","RANK","RANKAVG","AVG","RANKEQ","SKEWP","SKEW","STDEVP","STDEVS","TDIST","TDISTRT","TINV","TTEST","VARP","VARS","WEIBULL","WEIBULLDIST","WORKDAYINTL","WORKDAY","ZTEST","arraySlice","$Function","factories","Prototype","partArgs","construct","baseFor","_propTypes","getTrackingData","documentVisibilityMonitor","AudioOrVideoTrack","RemoteMediaTrack","mediaTrackReceiver","setRenderHint","workaroundWebKitBug212780","visibilityState","_setPriority","_setRenderHint","_workaroundWebKitBug212780","_workaroundWebKitBug212780Cleanup","priorityValues","INVALID_VALUE","_setEnabled","_setSwitchedOff","remoteMediaTrack","onVisibilityChanged","onVisibilityChange","offVisibilityChange","playIfPausedWhileInBackground","Tab","Pane","makeDefaultType","paramType_1","typeQueue","defaultTypes","ParamType","valToString","defaultTypeBase","query","int","numbersNouns","numberNoun","hundred","ten","numberAsNoun","MILLISECONDS_IN_WEEK","fourthOfJanuary","startOfUTCISOWeekYear","ACCEPT_ARGUMENTS","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","_call","wake","timerFlush","sleep","nap","poke","isKey","stringToPath","KMEANS","assignments","centroids","randomCentroid","centroidId","maxDim","getClusters","maxId","closestCentroid","argmin","clusters","pointId","argType","$default","redirectToHook","redirectTo","handleResult","registerRedirectToHook","setToString","shortOut","TwilioTFLite","loadedScripts","_inputBuffer","_isSimdEnabled","_tflite","assetsPath","modelName","moduleLoaderName","moduleSimdLoaderName","modelResponse","tflite","modelBufferOffset","_loadWasmModule","arrayBuffer","_getModelBufferMemoryOffset","HEAPU8","_loadModel","loadInputBuffer","inputBuffer","_getInputHeight","_getInputWidth","tfliteInputMemoryOffset","_getInputMemoryOffset","curTFLiteOffset","curImageBufferOffset","HEAPF32","runInference","tfliteOutputMemoryOffset","_getOutputMemoryOffset","_runInference","Uint8ClampedArray","_loadScript","createTwilioTFLiteSIMDModule","createTwilioTFLiteModule","baseOrderBy","iteratees","invalidTransitionHook","registerInvalidTransitionHook","trimRight","channel","_getReceiver","_receiverPromise","_teardown","receiverPromise","toDataTransport","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","HANDLE_RESULT","REJECT_ERROR","postfix","autoStart","_delay","_timeout","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","_immutable","_getIn","functionToString","symbolsFunc","react","af_NA","af_ZA","agq","agq_CM","ak_GH","am_ET","ar_001","ar_AE","ar_BH","ar_DJ","ar_DZ","ar_EG","ar_EH","ar_ER","ar_IL","ar_IQ","ar_JO","ar_KM","ar_KW","ar_LB","ar_LY","ar_MA","ar_MR","ar_OM","ar_PS","ar_QA","ar_SA","ar_SD","ar_SO","ar_SS","ar_SY","ar_TD","ar_TN","ar_YE","as_IN","asa","asa_TZ","ast_ES","az","az_Cyrl","az_Cyrl_AZ","az_Latn","az_Latn_AZ","bas","bas_CM","be_BY","bem","bem_ZM","bez","bez_TZ","bg_BG","bm_ML","bn_BD","bn_IN","bo_CN","bo_IN","br_FR","brx","brx_IN","bs_Cyrl","bs_Cyrl_BA","bs_Latn","bs_Latn_BA","ca_AD","ca_ES","ca_ES_VALENCIA","ca_FR","ca_IT","ce_RU","cgg","cgg_UG","chr_US","ckb","ckb_IQ","ckb_IR","cs_CZ","cu","cu_RU","cy_GB","da_DK","da_GL","dav","dav_KE","de_AT","de_BE","de_CH","de_DE","de_LI","de_LU","dje","dje_NE","dsb","dsb_DE","dua","dua_CM","dyo","dyo_SN","dz_BT","ebu","ebu_KE","ee_GH","ee_TG","el_CY","el_GR","en_001","en_150","en_AG","en_AI","en_AS","en_AT","en_AU","en_BB","en_BE","en_BI","en_BM","en_BS","en_BW","en_BZ","en_CA","en_CC","en_CH","en_CK","en_CM","en_CX","en_CY","en_DE","en_DG","en_DK","en_DM","en_ER","en_FI","en_FJ","en_FK","en_FM","en_GB","en_GD","en_GG","en_GH","en_GI","en_GM","en_GU","en_GY","en_HK","en_IE","en_IL","en_IM","en_IN","en_IO","en_JE","en_JM","en_KE","en_KI","en_KN","en_KY","en_LC","en_LR","en_LS","en_MG","en_MH","en_MO","en_MP","en_MS","en_MT","en_MU","en_MW","en_MY","en_NA","en_NF","en_NG","en_NL","en_NR","en_NU","en_NZ","en_PG","en_PH","en_PK","en_PN","en_PR","en_PW","en_RW","en_SB","en_SC","en_SD","en_SE","en_SG","en_SH","en_SI","en_SL","en_SS","en_SX","en_SZ","en_TC","en_TK","en_TO","en_TT","en_TV","en_TZ","en_UG","en_UM","en_US","en_US_POSIX","en_VC","en_VG","en_VI","en_VU","en_WS","en_ZA","en_ZM","en_ZW","eo_001","es","es_419","es_AR","es_BO","es_BR","es_CL","es_CO","es_CR","es_CU","es_DO","es_EA","es_EC","es_ES","es_GQ","es_GT","es_HN","es_IC","es_MX","es_NI","es_PA","es_PE","es_PH","es_PR","es_PY","es_SV","es_US","es_UY","es_VE","et_EE","eu","eu_ES","ewo","ewo_CM","fa_AF","fa_IR","ff_CM","ff_GN","ff_MR","ff_SN","fi_FI","fil","fil_PH","fo_DK","fo_FO","fr_BE","fr_BF","fr_BI","fr_BJ","fr_BL","fr_CA","fr_CD","fr_CF","fr_CG","fr_CH","fr_CI","fr_CM","fr_DJ","fr_DZ","fr_FR","fr_GA","fr_GF","fr_GN","fr_GP","fr_GQ","fr_HT","fr_KM","fr_LU","fr_MA","fr_MC","fr_MF","fr_MG","fr_ML","fr_MQ","fr_MR","fr_MU","fr_NC","fr_NE","fr_PF","fr_PM","fr_RE","fr_RW","fr_SC","fr_SN","fr_SY","fr_TD","fr_TG","fr_TN","fr_VU","fr_WF","fr_YT","fur","fur_IT","fy_NL","ga_IE","gd_GB","gl_ES","gsw","gsw_CH","gsw_FR","gsw_LI","gu","gu_IN","guz","guz_KE","gv","gv_IM","ha_GH","ha_NE","ha_NG","haw","haw_US","he_IL","hi_IN","hr_BA","hr_HR","hsb","hsb_DE","hu","hu_HU","hy","hy_AM","id_ID","ig_NG","ii_CN","is_IS","it_CH","it_IT","it_SM","ja_JP","jgo","jgo_CM","jmc","jmc_TZ","ka_GE","kab","kab_DZ","kam","kam_KE","kde","kde_TZ","kea","kea_CV","khq","khq_ML","ki_KE","kk_KZ","kkj","kkj_CM","kl","kl_GL","kln","kln_KE","km","km_KH","kn_IN","ko_KP","ko_KR","kok","kok_IN","ks_IN","ksb","ksb_TZ","ksf","ksf_CM","ksh","ksh_DE","kw","kw_GB","ky_KG","lag","lag_TZ","lb_LU","lg_UG","lkt","lkt_US","ln_AO","ln_CD","ln_CF","ln_CG","lo_LA","lrc","lrc_IQ","lrc_IR","lt_LT","lu_CD","luo","luo_KE","luy","luy_KE","lv","lv_LV","mas","mas_KE","mas_TZ","mer","mer_KE","mfe","mfe_MU","mg_MG","mgh","mgh_MZ","mgo","mgo_CM","mk","mk_MK","ml_IN","mn_MN","mr_IN","ms_BN","ms_MY","ms_SG","mt_MT","mua","mua_CM","my","my_MM","mzn","mzn_IR","naq","naq_NA","nb_NO","nb_SJ","nd_ZW","ne_IN","ne_NP","nl_AW","nl_BE","nl_BQ","nl_CW","nl_NL","nl_SR","nl_SX","nmg","nmg_CM","nn_NO","nnh","nnh_CM","nus","nus_SS","nyn","nyn_UG","om","om_ET","om_KE","or_IN","os","os_GE","os_RU","pa_Arab","pa_Arab_PK","pa_Guru","pa_Guru_IN","pl_PL","prg","prg_001","ps_AF","pt_AO","pt_BR","pt_CH","pt_CV","pt_GQ","pt_GW","pt_LU","pt_MO","pt_MZ","pt_PT","pt_ST","pt_TL","qu","qu_BO","qu_EC","qu_PE","rm","rm_CH","rn_BI","ro_MD","ro_RO","rof","rof_TZ","ru","ru_BY","ru_KG","ru_KZ","ru_MD","ru_RU","ru_UA","rw_RW","rwk","rwk_TZ","sah","sah_RU","saq","saq_KE","sbp","sbp_TZ","se_FI","se_NO","se_SE","seh","seh_MZ","ses","ses_ML","sg_CF","shi","shi_Latn","shi_Latn_MA","shi_Tfng","shi_Tfng_MA","si_LK","sk","sk_SK","sl_SI","smn","smn_FI","sn_ZW","so_DJ","so_ET","so_KE","so_SO","sq_AL","sq_MK","sq_XK","sr_Cyrl","sr_Cyrl_BA","sr_Cyrl_ME","sr_Cyrl_RS","sr_Cyrl_XK","sr_Latn","sr_Latn_BA","sr_Latn_ME","sr_Latn_RS","sr_Latn_XK","sv","sv_AX","sv_FI","sv_SE","sw_CD","sw_KE","sw_TZ","sw_UG","ta_IN","ta_LK","ta_MY","ta_SG","te_IN","teo","teo_KE","teo_UG","th_TH","ti_ER","ti_ET","tk","tk_TM","to_TO","tr_CY","tr_TR","twq","twq_NE","tzm","tzm_MA","ug_CN","uk","uk_UA","ur_IN","ur_PK","uz","uz_Arab","uz_Arab_AF","uz_Cyrl","uz_Cyrl_UZ","uz_Latn","uz_Latn_UZ","vai","vai_Latn","vai_Latn_LR","vai_Vaii","vai_Vaii_LR","vi_VN","vo_001","vun","vun_TZ","wae","wae_CH","xog","xog_UG","yav","yav_CM","yi_001","yo_BJ","yo_NG","yue","yue_HK","zgh","zgh_MA","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","zu","zu_ZA","defaultLocales","AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYR","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRO","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","SYP","SZL","THB","TJS","TMT","TND","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VEF","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW","ZWL","ReactCurrencyFormatter","getFormatter","encodePattern","frontPadding","backPadding","groupLengths","patternStarted","decimalsStarted","patternEnded","currentGroupLength","zeroLength","splitNumber","patternArray","positiveFormat","negativeFormat","quantity","formatterFunction","whitespaces","$parseFloat","ITERATOR","trimmedString","computeLcm","defaultsDeep","intersectionWith","pullAll","propertiesResolver","itemsResolver","isFalse","isTrue","schemaResolver","stringArray","maximumValue","minimumValue","getAllOf","getAnyOfCombinations","arrOfArrays","combinations","throwIncompatible","asJSON","callGroupResolver","complexKeywords","resolverName","resolverConfig","complexResolvers","extractedKeywordsOnly","extraKey","createRequiredMetaArray","schemaGroupProps","schemaArrays","schemaProps","defaultResolvers","childKey","childSchemas","innerCompacted","innerArrays","innerSchemas","arrayMetaScheams","schemaGroups","tryMergeSchemaGroups","integers","defaultComplexResolvers","totalSchemas","resolvers","complexKeysArr","mainKeyWord","resolverConf","compareProp","defaultResolver","resolverKeyword","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","TrackTransceiver","contextValue","_useTrackingImpl","_ReactTrackingContext","resolvable_1","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","paramMap","paramConfig","isSearch","reloadOnSearch","getNavigableBuilder","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","resolvePolicies","getToken","provide","literal2Resolvable","useFactory","useClass","useValue","useExisting","tuple2Resolvable","pipe","item2Resolvable","decl","builders","parentName","urlParams","nonUrlParams","parentFn","SILENT_ON_NON_WRITABLE_LENGTH_SET","inherits","LocalVideoTrackClass","nativeSlice","HAS_SPECIES_SUPPORT","fin","RemoteParticipantSignaling","RemoteTrackPublicationV2","RemoteParticipantV2","participantState","getInitialTrackSwitchOffState","_revision","_RemoteTrackPublicationV2","_getInitialTrackSwitchOffState","updateSubscriberTrackPriority","updateTrackRenderHint","_getOrCreateTrack","tracksToKeep","removeTrack","deprecationWarningsByComponentConstructor","defaultGetLogger","getLogger","REQUIRED_ARGUMENT","validateLogLevels","_component","_logLevels","_warnings","_loggerName","_logLevelsEqual","_logger","setDefaultLevel","getLevelByName","validateLogLevel","setLevels","_levels","LOG_LEVEL_VALUES","deprecationWarning","deprecationWarnings","componentConstructor","getDeprecationWarnings","INFO","WARN","warnOnce","warning","ERROR","customMessage","LOG_LEVELS_SET","LOG_LEVEL_NAMES","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","LAZY","EAGER","WAIT","NOWAIT","RXWAIT","fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror","moz","requestFullscreenFunction","onfullscreenchange","onfullscreenerror","isarray","pathToRegexp","asterisk","attachKeys","regexpToRegexp","arrayToRegexp","tokensToRegExp","stringToRegexp","tokensToFunction","PATH_REGEXP","defaultDelimiter","escaped","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encodeAsterisk","sensitive","endsWithDelimiter","$length","checkType","componentNameSafe","propFullNameSafe","chainedCheckType","blink","isPrototype","tryToString","mosToScore","effectiveLatency","rFactor","mosValue","_createForOfIteratorHelper","allowArrayLike","unsupportedIterableToArray","normalCompletion","didErr","_e2","Setter","_utcDate","ValueSetter","_Setter","validateValue","subPriority","DateToSystemTimezoneSetter","_Setter2","_super2","timestampIsSet","convertedDate","dateString","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","startOfUTCWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","dirtyDay","_options$locale$optio","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","subFnOptions","setters","usedTokens","_iterator","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","dateWithMonths","dateWithDays","msToAdd","defaultFormContext","rootPath","updateFormReducer","validationSubscriptions","addValidate","removeValidate","FormContext","useValidate","Select","formControlProps","formGroupProps","formLabelProps","feedbackProps","useDispatch","useSelector","Form","isInvalid","Check","formCheckProps","FormControl","numberInputProps","handleInput","inputMode","ReactSelectRecord","ReactSelect","isMulti","onInputChange","isLoading","closeMenuOnSelect","selectProps","reactSelectOptions","iRecords","iRecord","getOptionLabel","getOptionValue","RsfForm$1","formProps","errorsRef","validateArgs","setValidateArgs","mount","setMount","setForceUpdate","runValidation","isSubmitting","newErrors","FormControlDate","formattedDate","toLocaleDateString","selectedDate","FormControlTime","timeOptions","timeStops","getTimeOptions","newDate","$dataNxt","$nonEmptySchema","getPathExpr","jsonPointers","DivStyledAsH4","AlertHeading","AlertLink","Alert","uncontrolledProps","dismissible","handleClose","Link","Heading","$padEnd","padEnd","PromiseCapability","Badge","pill","DBSCAN","OPTICS","CELL","TYPE","error_val","nil","ISBLANK","ISBINARY","ISERR","ISERROR","ISEVEN","ISFORMULA","ISLOGICAL","ISNA","ISNONTEXT","ISODD","ISREF","ISTEXT","NA","SHEETS","ThemeContext","useBootstrapPrefix","defaultPrefix","getPolyfill","closeAsyncIteration","IS_TO_ARRAY","IS_FOR_EACH","IS_EVERY","IS_SOME","MAPPING","ifAbruptCloseAsyncIterator","error5","$result","error4","error3","isIndex","definePropertyModule","makeBuiltIn","defineGlobalProperty","nonConfigurable","nonWritable","CORRECT_ARGUMENTS","tryGet","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","checkListener","_getMaxListeners","_addListener","onceWrapper","wrapFn","_onceWrap","wrapped","unwrapListeners","arrayClone","wrapListener","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","rawListeners","monthsShortWithDots","monthsShortWithoutDots","patchXHR","newFn","redefineProp","FileAPI","shouldLoad","FormData","forceLoad","initializeUploadListener","__listeners","origAddEventListener","__url","__origError","__fileApiXHR","getResponseHeader","__requestHeaders","__isFileAPIShim","jsonp","fileApiXHR","__completed","loaded","__loaded","__total","lengthComputable","loadend","noContentTimeout","hasFlash","__isFileAPIBlobShim","mimeTypes","getOffset","html5","jsUrl","basePath","allScripts","jsPath","staticPath","ngfFixIE","fileElem","fileApiChangeFn","isInputTypeFile","getFiles","__files_","disableFileInput","loadStarted","onloadstart","constructEvent","readAsText","ngFileUpload","promisesCount","isResumeSupported","resumeSupported","sendHttp","_deferred","notifyProgress","progressFunc","getNotifyEvent","uploadWithAngular","_chunkSize","_finished","fileSize","disableProgress","__setXHR_","__XHR","xhrFn","resumeSizeUrl","resumeSizeResponseReader","resumeSize","origXhrFn","isUploadInProgress","rename","ngfName","jsonBlob","_ngfBlob","isFile","flashId","internal","addFieldToFormData","toResumeFile","_fileKey","$$ngfCircularDetection","objectKey","arrayKey","_isDigested","translateScalars","resumeChunkSize","formDataAppender","http","urlToBlob","arrayBufferView","setDefaults","UploadExif","resizeWithParams","emptyPromise","handleFile","validatePattern","resizeIf","attrGetter","$width","$height","$file","resizedFile","$errorMessages","$errorParam","$ngfValidations","applyModelValidation","getAttrWithDefaults","attrVal","shouldUpdateOn","modelOptions","happyPromise","updateModel","fileChange","noDelay","invalidFiles","newFiles","dupFiles","isSingleModel","$$ngfPrevValidFiles","$$ngfPrevInvalidFiles","invalidFile","$files","$newFiles","$duplicateFiles","$invalidFiles","$invalidFile","invalidModel","allNewFiles","prevValidFiles","prevInvalidFiles","invalids","valids","resizeAndUpdate","resizingFiles","validateAfterResize","resizeVal","isResizeSupported","resizeFile","validationResult","validsFiles","invalidsFiles","$ngfOrigSize","isInPrevFiles","removeDuplicates","validFiles","isExifSupported","applyExifRotation","fixedFile","applyExifRotations","Upload","generatedElems","fileChangeAttr","fileList","registerModelChangeValidator","unwatches","initialTouchStartY","initialTouchStartX","resetModel","updateId","bindAttrToFileInput","createFileInput","currentX","currentY","detectSwipe","androidFixMinorVersion","isDelayedClickSupported","appVersion","ie10SameFileSelectFix","linkFileSelect","linkFileDirective","resizeParams","isBackground","constructDataUrl","disallowObjectUrl","dataUrl","$ngfDataUrl","$ngfBlobUrl","UploadBase","base64DataUrl","$$ngfDataUrlPromise","$$ngfBlobUrlPromise","blobUrls","blobUrlsTotalSize","maxMemory","blobUrlsMaxMemory","blobUrlsMaxQueueSize","fileReader","UploadDataUrl","trustedUrl","trustAsResourceUrl","$ngfDataUrlFilterInProgress","globStringToRegex","excludes","exclude","ratioToFloat","xIndex","filesArray","markModelAsDirty","validation","getValidationAttr","validationName","dName","prevLength","ignoredErrors","runAllValidation","validateSync","totalSize","validateAsync","asyncFn","resolveResult","resolveInternal","imageDimensions","mediaDuration","$duration","deffer","$ngfWidth","$ngfHeight","$ngfDimensionPromise","secondsCounter","checkLoadErrorInCaseOfNoCallback","$ngfDuration","$ngfDurationPromise","checkLoadError","UploadValidate","dataUrltoBlob","dataurl","origSize","mime","u8arr","$ngfName","imagen","centerCrop","canvasElement","imageElement","imgWidth","imgHeight","ratioFloat","srcWidth","srcHeight","marginX","marginY","calculateAspectRatioFit","restoreExif","dropAvailable","available","actualDragOverClass","leaveTimeout","dragOverDelay","effectAllowed","dropEffect","dClass","calculateDragOverClass","$isDragging","$class","extractFilesAndUpdateModel","updateOnType","allowDir","maxFiles","maxTotalSize","includeDir","traverseFileTree","isDirectory","dirReader","createReader","readEntries","webkitGetAsEntry","getAsFile","extractFiles","extractFilesFromHtml","linkDrop","UploadResize","readOrientation","slicedFile","orientation","little","tags","fixedArrayBuffer","applyTransform","binary","arrayBufferToBase64","ExifRestorer","chr2","enc1","enc2","enc3","chr3","enc4","KEY_STR","origFileBase64","resizedFileBase64","rawImage","decode64","slice2Segments","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","separatePoint","mae","ato","rawImageArray","endPoint","baseIsTypedArray","nodeUtil","nodeIsTypedArray","isTypedArray","rePropName","reEscapeChar","subString","ListCache","stackClear","stackDelete","stackGet","stackHas","stackSet","arrayLikeKeys","baseKeysIn","nested","removeEmulate","triggerTransitionEnd","emulateTransitionEnd","callBind","CancelError","isCanceled","PCancelable","userFn","arguments_","onCancel","_cancelHandlers","_isPending","_isCanceled","_rejectOnCancel","_promise","_reject","shouldReject","NEWER","OLDER","LRUMap","oldest","newest","_keymap","Entry","EntryIterator","oldestEntry","KeyIterator","ValueIterator","_markEntryAsUsed","itv","fun","thisObj","ent","GridLayer","GoogleMutant","maxZoom","maxNativeZoom","_tileCallbacks","_lru","_imagesPerTile","_boundOnMutatedImage","_onMutatedImage","checkCounter","intervalId","this$1","_initMutantContainer","_logoContainer","_controlCorners","_attributionContainer","_initMutant","google","addListenerOnce","_mutant","_checkZoomLevels","_mutantIsReady","_observer","_mutantContainer","clearListeners","addGoogleLayer","googleLayerName","_subLayers","whenReady","googleLayer","removeGoogleLayer","stamp","setOpacity","zoomSnap","_attachObserver","tilt","mapTypeId","disableDefaultUI","keyboardShortcuts","disableDoubleClickZoom","_waitControls","_setupAttribution","_onMutations","layoutManager","__gm","ControlPosition","ctr","BOTTOM_RIGHT","BOTTOM_LEFT","mutations","_roadRegexp","_satRegexp","imgNode","sublayer","tileKey","_tileCoordsToKey","createTile","tileContainer","key2","clonedImgNode","zoomLevel","gMapZoomLevel","_setMaxNativeZoom","_resetView","_center","mutantZoom","googleMutant","allowMissing","intrinsic","eachFunc","baseIsSet","nodeIsSet","hasSymbols","origDefineProperty","arePropertyDescriptorsSupported","internalObjectKeys","THROTTLE_MILLISECONDS","infiniteScroll","infiniteScrollContainer","infiniteScrollDistance","infiniteScrollDisabled","infiniteScrollUseDocumentBottom","infiniteScrollListenForEvent","changeContainer","checkInterval","checkWhenEnabled","handleInfiniteScrollContainer","handleInfiniteScrollDisabled","handleInfiniteScrollDistance","handleInfiniteScrollUseDocumentBottom","immediateCheck","scrollDistance","scrollEnabled","unregisterEventListener","useDocumentBottom","windowElement","containerBottom","containerTopOffset","elementBottom","newContainer","infiniteScrollParent","infiniteScrollImmediateCheck","HASH_UNDEFINED","arrayTag","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","arrayBufferTag","freeProcess","isHostObject","arrayProto","coreJsData","MapCache","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objLength","skipCtor","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","baseIsNative","baseTimes","skipIndexes","baseKeys","tester","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","handleScroll","prevScrollX","prevPageX","prevScrollY","prevPageY","isTouch","origPageX","origPageY","onWindowTouchMove","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","ElementMirror","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","needsRevertAnimation","doRevertAnimation","finalSourceElRect","getMirrorEl","ScrollGeomCache","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","clientRect","computeClientRect","getEventTarget","ElementScrollGeomCache","WindowScrollGeomCache","AutoScroller","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","computeBestEdge","handleSide","msSinceRequest","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","velocity","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","FeaturefulElementDragging","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","tryStopDrag","handleDelayEnd","tryStartDrag","setIgnoreMove","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","HitDragging","droppableStore","useSubjectCenter","requireInitial","disablePointCheck","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","isHitsEqual","offsetTrackers","interactionSettings","bestHit","offsetTracker","originLeft","originTop","elementFromPoint","componentId","hit0","hit1","buildDatePointApiWithContext","datePointTransforms","DateClicking","hitDragging","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","handleHitUpdate","isFinal","dateSelectionTransformers","dateSpan0","dateSpan1","joinHitsIntoSelection","EventDragging","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","eventInstanceId","getComponentTouchDelay","fixedMirrorParent","receivingOptions","eventInstanceStart","massagers","massager","computeEventMutation","eventDragMutationMassagers","displayDrag","clearDrag","updatedEventApi","eventChangeArg","transformed","eventDropTransformers","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","nextContext","prevContext","initialCalendar","EventResizing","draggingSegEl","draggingSeg","segEl","querySegEl","isFromStart","computeMutation","OPTION_REFINERS","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","eventReceive","eventLeave","dataAttrPrefix","componentInteractions","calendarInteractions","isRecentPointerDateSelect","matchesCancel","matchesEvent","selectInfo","onDocumentPointerDown","onDocumentPointerUp","documentPointer","elementDraggingImpl","optionRefiners","listenerRefiners","PROPER_FUNCTION_NAME","nativeToString","NOT_GENERIC","INCORRECT_NAME","closure","globalSelf","phxWindow","CHANNEL_STATES","CHANNEL_EVENTS","TRANSPORTS","AUTH_TOKEN_PREFIX","Push","receivedResp","timeoutTimer","recHooks","resend","hasReceived","startTimeout","socket","join_ref","joinRef","receive","cancelRefEvent","refEvent","matchReceive","cancelTimeout","makeRef","replyEventName","timerCalc","tries","scheduleTimeout","Channel","bindingRef","joinedOnce","joinPush","pushBuffer","stateChangeRefs","rejoinTimer","rejoinAfterMs","onOpen","isErrored","pushEvent","hasLogger","isJoining","canPush","isJoined","leavePush","onMessage","_event","isMember","isLeaving","leaveOpenTopic","handledPayload","eventBindings","isClosed","Ajax","req","xdomainRequest","xhrRequest","fetchRequest","parseJSON","parentKey","queryStr","paramKey","paramVal","appendParams","LongPoll","authToken","skipHeartbeat","reqs","awaitingBatchAck","currentBatch","currentBatchTimer","batchBuffer","onopen","onclose","pollEndpoint","normalizeEndpoint","poll","endpointURL","closeAndRetry","wasClean","ajax","batchSend","CloseEvent","onCallerTimeout","serializer_default","HEADER_LENGTH","META_LENGTH","KINDS","reply","broadcast","binaryEncode","rawPayload","binaryDecode","metaLength","setUint8","combined","decoder","decodePush","decodeReply","decodeBroadcast","joinRefSize","topicSize","eventSize","refSize","Socket","stateChangeCallbacks","channels","sendBuffer","fallbackRef","primaryPassedHealthCheck","longPollFallbackMs","fallbackTimer","sessionStore","establishedConnections","defaultEncoder","defaultDecoder","closeWasClean","disconnecting","binaryType","connectClock","pageHidden","awaitingConnectionOnPageShow","conn","teardown","heartbeatIntervalMs","reconnectAfterMs","longpollerTimeout","vsn","heartbeatTimeoutTimer","heartbeatTimer","pendingHeartbeatRef","reconnectTimer","getLongPollTransport","replaceTransport","newTransport","endPointURL","connectWithFallback","transportConnect","ping","onMsgRef","onConnOpen","onConnError","onConnMessage","onConnClose","getSession","storeSession","fallbackTransport","fallbackThreshold","errorRef","established","primaryTransport","openRef","clearHeartbeats","flushSendBuffer","resetHeartbeat","heartbeatTimeout","triggerChanError","sendHeartbeat","waitForBufferDone","waitForSocketClosed","bufferedAmount","closeCode","transportBefore","establishedBefore","chanParams","chan","newRef","rawMessage","dupChannel","setCacheAdd","setCacheHas","FontAwesome","cssModule","fixedWidth","pulse","spin","_props$tag","ariaLabel","ariaProps","LocalDataTrackClass","objectCreate","v8","uiSortableConfig","uiSortable","savedNodes","combineCallbacks","secondIsFunc","getSortableWidgetInstance","widgetFullName","patchSortableOption","afterStop","wrappers","patchUISortableOptions","sortableWidgetInstance","optsDiff","directiveOpts","sortable","getSortingHelper","helperOption","isCustomHelperUsed","hasSortingHelper","getItemIndex","helper","initIfEnabled","sourceList","sourceModel","_isCustomHelperUsed","_connectedSortables","_getElementContext","elementScopes","getElementContext","activate","isSourceContext","savedNodesOrigin","getPlaceholderElement","notCssSelector","getPlaceholderExcludesludes","received","dropindex","droptarget","droptargetList","droptargetContext","droptargetModel","sortingHelper","appendTo","wasMoved","oldItemSortable","_restore","cancelWatcher","isTrivialHref","SafeAnchor","castFunction","categories","actualIndex","nativeRaf","WebRTC","RTCIceCandidate","LocalTrackStats","prepareForInsights","PromiseConstructorWrapper","CHECK_WRAPPER","maths","findResultIndex","database","maxCriteriaLength","currentCriteriaResult","hasMatchingCriteria","criteriaField","FINDFIELD","DAVERAGE","resultIndexes","targetFields","DCOUNT","targetValues","DCOUNTA","DGET","DMAX","maxValue","DMIN","minValue","DPRODUCT","DSTDEV","DSTDEVP","DSUM","DVAR","DVARP","FormGroup","ViewService","_uiViews","_viewConfigs","_viewConfigFactories","_rootViewContext","_viewConfigFactory","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","uiViewName","uiViewContextAnchor","relativeViewNameSugar","anchorState","_rootContext","cfgFactory","$type","cfgs","deactivateViewConfig","viewConfig","traceViewServiceEvent","activateViewConfig","uiViewsByFqn","uiv","fqn","viewConfigDepth","viewDecl","depthCompare","curry","depthFn","posNeg","uiViewTuples","uiView","stateDepth","creationContext","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","configUpdated","allTuples","traceViewSync","registerUIView","traceViewServiceUIViewEvent","uiViews","vcSegments","$uiViewName","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","$uiViewContextAnchor","checkDCE","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tmh","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","symObj","syms","$schemaKeys","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","toHash","$propertyKey","$pProperty","$currentErrorPath","$additionalProperty","$currErrSchemaPath","$useDefaults","useDefaults","arr3","i3","l3","$prop","$hasDefault","escapeFragment","getPath","$useData","$missingProperty","arr4","i4","l4","error1","pluralForm","plurals","pluralize","_actions","injectQuery","searchQuery","currentQuery","_currentQuery$split2","structure","initialRouterState","LOCATION_CHANGE","isFirstRendering","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","areInputsEqual","newInputs","lastInputs","resultFn","lastThis","lastArgs","calledOnce","$schemaDeps","$propertyDeps","$property","$deps","$propertyPath","i2","TabPane","_useTabContext","shouldTransition","useTabContext","_useTabContext$as","pane","isWellFormed","Request","sendBeacon","_asNative","_blob","oMatchesSelector","_reemitSignalingEvent","_reemitTrackEvent","isTrackEnabled","_unpublish","baseSome","$trim","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","createLocalTrack","createOptions","createLocalTracks","assignMergeValue","cloneTypedArray","safeGet","mergeFunc","isCommon","isBuff","isTyped","$subPattern","$asArray","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","paramTypeFn","wrapperFn","$arrayMode","isWebRTCSupported","isAndroid","isMobile","isNonChromiumEdge","rebrandedChromeBrowser","mobileWebKitBrowser","SUPPORTED_CHROME_BASED_BROWSERS","SUPPORTED_ANDROID_BROWSERS","SUPPORTED_IOS_BROWSERS","SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS","rebrandedChrome","mobileWebKit","supportedMobileBrowsers","VirtualBackgroundProcessor","BackgroundProcessor_1","types_1","fitType","_backgroundImage","_webgl2Pipeline","_fitType","ImageFit","Fill","_getWebGL2PipelineType","WebGL2PipelineType","_setBackground","_outputContext","_outputCanvas","imageWidth","imageHeight","canvasWidth","canvasHeight","None","Contain","_getFitPosition","Cover","contentWidth","viewportWidth","viewportHeight","newContentWidth","newContentHeight","BackgroundProcessor","bessel","isValidBinaryNumber","BESSELI","BESSELJ","BESSELK","BESSELY","BIN2DEC","stringified","BIN2HEX","places","BIN2OCT","BITAND","number1","number2","BITLSHIFT","BITOR","BITRSHIFT","BITXOR","COMPLEX","imaginary","CONVERT","from_unit","to_unit","binary_prefixes","unit_prefixes","base_from_unit","base_to_unit","from_multiplier","to_multiplier","from_binary_prefix","from_unit_prefix","to_binary_prefix","to_unit_prefix","DEC2BIN","DEC2HEX","DEC2OCT","DELTA","lower_bound","upper_bound","GESTEP","HEX2BIN","HEX2DEC","HEX2OCT","IMABS","inumber","IMREAL","IMAGINARY","minus","IMARGUMENT","IMCONJUGATE","IMCOS","IMCOSH","IMCOT","IMDIV","IMSIN","inumber1","inumber2","unit1","unit2","IMEXP","IMLN","IMLOG10","IMLOG2","IMPOWER","IMPRODUCT","IMSEC","IMSECH","IMSINH","IMSQRT","IMCSC","IMCSCH","IMSUB","IMSUM","IMTAN","OCT2BIN","OCT2DEC","OCT2HEX","trimStart","hiddenStyles","HiddenText","LiveRegion","announcement","ariaLiveType","clipPath","whiteSpace","DndMonitorContext","defaultScreenReaderInstructions","defaultAnnouncements","onDragStart","onDragOver","over","onDragCancel","Accessibility","announcements","hiddenTextDescribedById","screenReaderInstructions","announce","setAnnouncement","useAnnouncement","liveRegionId","mounted","setMounted","registerListener","useDndMonitor","onDragMove","markup","Action","useSensor","sensor","useSensors","defaultCoordinates","distanceBetween","getRelativeTransformOrigin","eventCoordinates","sortCollisionsAsc","sortCollisionsDesc","cornersOfRectangle","getFirstCollision","collisions","firstCollision","centerOfRectangle","closestCenter","collisionRect","droppableRects","droppableContainers","centerRect","droppableContainer","distBetween","closestCorners","corners","rectCorners","effectiveDistance","getIntersectionRatio","targetArea","entryArea","intersectionArea","rectIntersection","intersectionRatio","getRectDelta","createRectAdjustmentFn","adjustments","adjustment","getAdjustedRect","parseTransform","transformArray","ignoreTransform","transformOrigin","parsedTransform","translateX","translateY","inverseTransform","getTransformAgnosticClientRect","getScrollableAncestors","findScrollableAncestors","scrollingElement","overflowRegex","isScrollable","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","maxScroll","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","Backward","Forward","getScrollElementRect","getScrollOffsets","scrollableAncestors","scrollIntoViewIfNeeded","scrollOffsets","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","_this$target2","hasExceededDistance","measurement","EventName","KeyboardCode","defaultKeyboardCodes","Space","Enter","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","handleCancel","handleStart","Resize","VisibilityChange","Keydown","activeNode","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","onMove","isDistanceConstraint","isDelayConstraint","activators","onActivation","activator","activatorNode","AbstractPointerSensor","listenerTarget","_getEventCoordinates","EventTarget","getEventListenerTarget","initialCoordinates","documentListeners","handleKeydown","removeTextSelection","activationConstraint","bypassActivationConstraint","DragStart","ContextMenu","handlePending","onPending","Click","SelectionChange","_getEventCoordinates2","tolerance","onAbort","_this$document$getSel","PointerSensor","events$1","MouseButton","RightClick","events$2","AutoScrollActivator","TraversalOrder","defaultScrollIntent","MeasuringStrategy","MeasuringFrequency","useInitialValue","computeFn","useResizeObserver","handleResize","resizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","currentRect","newRect","mutationObserver","handleMutations","useMutationObserver","defaultValue$1","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useWindowRect","getWindowClientRect","defaultValue$2","getMeasurableNode","defaultSensors","defaultData","defaultMeasuringConfiguration","WhileDragging","Optimized","dragOverlay","DroppableContainersMap","_super$get","getEnabled","getNodeFor","_this$get$node$curren","_this$get","defaultPublicContext","activatorEvent","activeNodeRect","containerNodeRect","draggableNodes","scrollableAncestorRects","measuringConfiguration","measureDroppableContainers","measuringScheduled","defaultInternalContext","ariaDescribedById","InternalContext","PublicContext","getInitialState","DragMove","DragEnd","DragCancel","RegisterDroppable","SetDroppableDisabled","UnregisterDroppable","RestoreFocus","previousActivatorEvent","previousActiveId","draggableNode","focusableNode","applyModifiers","ActiveDraggableContext","DndContext","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","autoScroll","collisionDetection","measuring","dispatchMonitorEvent","registerMonitorListener","_listener$type","useDndMonitorProvider","setStatus","Uninitialized","Initialized","activeRects","translated","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","setQueue","containersRef","Always","BeforeDragging","disabledRef","useDroppableMeasuring","cachedNode","useCachedNode","activationCoordinates","autoScrollOptions","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","getAutoScrollerOptions","initialActiveNodeRect","useInitialRect","initialRect","rectDelta","useLayoutShiftScrollCompensation","layoutShiftCompensation","sensorContext","draggingNode","scrollAdjustedTranslate","overNode","handleNodeChange","useDragOverlayMeasuring","usesDragOverlay","nodeRectDelta","useScrollableAncestors","firstElement","setRects","measureRects","useRects","modifiedTranslate","overlayNodeRect","pointerCoordinates","scrollCoordinates","setScrollCoordinates","prevElements","scrollableElement","useScrollOffsets","scrollAdjustment","activeNodeScrollDelta","overId","setOver","adjustScale","activeSensorRef","instantiateSensor","Sensor","sensorInstance","onDragAbort","onDragPending","Initializing","createHandler","cancelDrop","bindActivatorToSensorInstantiator","activeDraggableNode","dndKit","activationContext","capturedBy","getSyntheticHandler","useCombineActivators","teardownFns","useSensorSetup","overContainer","Pointer","canScroll","draggingRect","TreeOrder","scrollIntent","previousDelta","previousIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","scrollDirection","DraggableRect","scrollContainerRef","sortedScrollableAncestors","useAutoScroller","publicContext","internalContext","restoreFocus","NullContext","defaultRole","ID_PREFIX","useDraggable","roleDescription","setNodeRef","setActivatorNodeRef","useSyntheticListeners","dataRef","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","useDroppable","resizeObserverConfig","resizeObserverConnected","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","unobserve","isOver","AnimationManager","clonedChildren","setClonedChildren","setElement","previousChildren","defaultTransform","NullifiedContextProvider","baseStyles","touchAction","defaultTransition","PositionedOverlay","scaleAdjustedTransform","defaultDropAnimationSideEffects","originalStyles","defaultDropAnimationConfiguration","keyframes","sideEffects","useKey","DragOverlay","dropAnimation","dropAnimationConfig","wrapperElement","modifiedTransform","activeDraggable","measurableNode","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","onfinish","createDefaultDropAnimation","useDropAnimation","AsyncVar","_deferreds","_hasValue","dateWithoutDays","subDays","subMonths","mstoSub","arrayMove","newArray","getSortedRects","isValidIndex","rectSortingStrategy","activeIndex","overIndex","newRects","oldRect","containerId","disableTransforms","useDragOverlay","sortedRects","SortableContext","userDefinedItems","disabledProp","previousItemsRef","itemsHaveChanged","itemsEqual","normalizeDisabled","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","previousItems","previousContainerId","transitionProperty","disabledTransition","defaultAttributes","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","globalDisabled","globalStrategy","_localDisabled$dragga","_localDisabled$droppa","normalizeLocalDisabled","itemsAfterCurrentSortable","setDroppableNodeRef","setDraggableNodeRef","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","shouldAnimateLayoutChanges","derivedTransform","setDerivedtransform","previousIndex","useDerivedTransform","hasSortableData","directions","sortableKeyboardCoordinates","filteredContainers","closestId","activeDroppable","newDroppable","hasDifferentScrollAncestors","hasSameContainer","isSameContainer","isAfterActive","rectCoordinates","compareAscending","objCriteria","othCriteria","ordersLength","useMemoOne","getResult","committed","getRect","expandBy","shrink","shrinkBy","noSpacing","createBox","_ref2$margin","_ref2$border","_ref2$padding","marginBox","paddingBox","contentBox","shiftBy","shifted","withScroll","calculateBox","getBox","frameId","unbindings","fromBinding","isProduction$1","RbdInvariant","invariant","ErrorBoundary","onWindowError","getCallbacks","tryAbort","setCallbacks","withLocation","isInHomeList","droppableId","startPosition","endPosition","withCombine","combine","draggableId","returnedToStart","preset","dragHandleUsageInstructions","onDragUpdate","offsetByPosition","getCorners","shouldClipSubject","executeClip","pageMarginBox","getSubject","withPlaceholder","scrolled","displacement","increased","increasedBy","increase","scrollDroppable","newScroll","scrollable","scrollDiff","scrollDisplacement","toDroppableMap","droppables","toDraggableMap","draggables","toDroppableList","toDraggableList","getDraggablesInsideDroppable","tryGetDestination","impact","tryGetCombine","removeDraggableFromList","isHomeOf","noDisplacedBy","emptyGroups","invisible","noImpact","displaced","displacedBy","isWithin","isPartiallyVisibleThroughFrame","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","isTotallyVisibleThroughFrame","crossAxisLine","crossAxisStart","crossAxisEnd","crossAxisSize","toBeDisplaced","withDroppableDisplacement","isVisibleThroughFrameFn","displacedTarget","getDroppableDisplaced","isVisibleInDroppable","isVisibleInViewport","isTotallyVisible","getDisplacementGroups","afterDragging","forceShouldAnimate","shouldAnimate","getShouldAnimate","goAtEnd","insideDestination","inHomeList","indexOfLastItem","getIndexOfLastItem","calculateReorderImpact","withoutDragging","sliceFrom","didStartAfterCritical","afterCritical","effected","distanceFromStartToBorderBoxCenter","getCrossAxisBorderBoxCenter","isMoving","goAfter","moveRelativeTo","goBefore","distanceFromEndToBorderBoxCenter","getPageBorderBoxCenterFromImpact","withoutDisplacement","draggablePage","moveInto","goIntoStart","closestAfter","withDisplacement","whenReordering","combineWith","displaceBy","isDisplaced","getCombinedItemDisplacement","whenCombining","getResultWithoutDroppableDisplacement","scrollViewport","getDraggables","getClientFromPageBorderBoxCenter","pageBorderBoxCenter","withoutPageScrollChange","isTotallyVisibleInNewLocation","newPageBorderBoxCenter","_ref$onlyOnMainAxis","onlyOnMainAxis","changeNeeded","isTotallyVisibleOnAxis","moveToNextPlace","isMovingForward","previousImpact","previousPageBorderBoxCenter","previousClientSelection","isCombineEnabled","getImpact","withoutDraggable","indexOfClosest","proposedIndex","moveToNextCombine","wasAt","_newIndex","currentIndex","fromReorder","combineId","combineWithIndex","fromCombine","moveToNextIndex","clientSelection","scrollJumpRequest","cautious","maxScrollChange","scrolledViewport","scrolledDroppable","withViewportScroll","withDroppableScroll","tryGetVisible","speculativelyIncrease","getKnownActive","getCurrentPageBorderBoxCenter","getCurrentPageBorderBox","getDisplacedBy","withMaxScroll","addPlaceholder","placeholderSize","requiredGrowth","availableSpace","needsToGrowBy","getRequiredGrowthForPlaceholder","oldFrameMaxScroll","_subject","newFrame","whatIsDraggedOver","moveInDirection","isActuallyOver","getDroppableOver","isMainAxisMovementAllowed","home","critical","isMovingOnMainAxis","borderBoxCenter","_state$dimensions","isBetweenSourceClipped","activeOfTarget","isBetweenDestinationClipped","isWithinDroppable","getBestCrossAxisDroppable","distanceToA","distanceToB","getClosestDraggable","proposed","proposedPageBorderBoxCenter","isGoingBeforeTarget","moveToNewDroppable","moveCrossAxis","isMovementAllowed","isPositionInFrame","offsetRectByPosition","getIsDisplaced","getDragImpact","pageOffset","pageBorderBox","destinationId","childCenter","isContained","isStartContained","isEndContained","startCenter","getFurthestAway","getDroppableOver$1","pageBorderBoxWithDroppableScroll","targetRect","targetStart","targetEnd","childRect","didStartAfterCritical$1","getCombineImpact","atIndex","getReorderImpact","patchDroppableMap","forcedClientSelection","forcedDimensions","forcedViewport","forcedImpact","newImpact","withUpdatedPlaceholders","cleaned","lastDroppable","_subject2","oldMaxScroll","removePlaceholder","clearUnusedPlaceholder","patched","recomputePlaceholders","recompute","getDraggables$1","getClientBorderBoxCenter","refreshSnap","movementMode","needsVisibilityCheck","getLiftEffect","insideHome","rawIndex","inVirtualList","isSnapping","postDroppableChange","isEnabledChanging","patchDimensionMap","removeScrollJumpRequest","idle","shouldFlush","_action$payload","isWindowScrollAllowed","isFixedOnPage","_getLiftEffect","onLiftImpact","published","withScrollChange","modified","updatedAdditions","additions","updatedDroppables","windowScrollChange","getFrame","droppableScrollChange","offset$1","initialWindowScroll","offsetDraggable","adjustAdditionsForScrollChanges","wasOverId","wasOver","draggingState","publishWhileDraggingInVirtual","_clientSelection","_action$payload2","_action$payload3","_action$payload4","_id2","_target2","_newScroll","_viewport","_result2","_action$payload5","dropDuration","newHomeClientOffset","lift","publishWhileDragging","collectionStarting","updateDroppableScroll","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","moveRight","moveLeft","completeDrop","curves","outOfTheWayTiming","timings","snap","outOfTheWay","minDropTime","dropTimeRange","drop$1","_getDropImpact","lastImpact","didDropInsideDroppable","getDropImpact","newClientCenter","getNewHomeClientOffset","distance$1","getDropDuration","dropPending","scrollListener","onWindowScroll","scheduled","getWindowScrollBinding","getScrollListener","shouldEnd","withTimings","getDragStart","execute","getDefaultMessage","willExpire","isExpired","getExpiringAnnounce","getResponders","asyncMarshal","timerId","shallow","beforeCapture","onBeforeCapture","beforeStart","onBeforeDragStart","lastCritical","lastLocation","lastCombine","hasCriticalChanged","isDraggableEqual","isDroppableEqual","isCriticalEqual","hasLocationChanged","hasGroupingChanged","isCombineEqual","getPublisher","dropAnimationFinish","dropAnimationFlushOnScroll","pendingDrop","postActionState","composeEnhancers","createStore","marshal","dimensionMarshal","focusMarshal","styleMarshal","dropping","resting","stopPublishing","dimensionMarshalStopper","scrollOptions","shouldPublishImmediately","_marshal$startPublish","startPublishing","lift$1","isWatching","tryRecordFocus","tryRestoreFocusRecorded","tryShiftRecord","getMaxScroll","getMaxWindowScroll","shouldPublishUpdate","getById","getRemainder","createDimensionMarshal","staging","_staging","getDimension","getScrollWhileDragging","createPublisher","unsubscribe","windowScroll","getAllByType","getDimensionAndWatchScroll","getInitialPublish","dragStopped","canStartDrag","scrollWindow","getScrollableDroppables","percentage","getPercentage","startOfRange","endOfRange","accelerateAt","stopAt","distanceToEdge","dragStartTime","shouldUseTimeDampening","startScrollingFrom","maxScrollValueAt","percentageFromMaxScrollValueAt","getValueFromDistance","proposedScroll","runTime","betweenAccelerateAtAndStopAtPercentage","dampenValueByTime","getScrollOnAxis","distanceToEdges","getDistanceThresholds","clean$2","getScroll","limited","isTooBigVertically","isTooBigHorizontally","adjustForSizeLimits","smallestSigned","getOverlap","targetScroll","canPartiallyScroll","rawMax","smallestChange","canScrollWindow","canScrollDroppable","scroll$1","getWindowScrollChange","_dimension","maybe","getScrollableDroppableOver","getBestScrollableDroppable","getDroppableScrollChange","createJumpScroller","droppableRemainder","getDroppableOverlap","whatTheDroppableCanScroll","scrollDroppableAsMuchAsItCan","windowRemainder","getWindowOverlap","whatTheWindowCanScroll","scrollWindowAsMuchAsItCan","moveByOffset","createAutoScroller","fluidScroller","scheduleWindowScroll","scheduleDroppableScroll","tryScroll","_dragging","wasScrollNeeded","fakeScrollCallback","createFluidScroller","jumpScroll","prefix$1","dragHandle","getStyles","getStyles$1","grabCursor","getSelector","dragHandle$1","always","dropAnimating","userCancel","useIsomorphicLayoutEffect","getHead","createStyleEl","getWindowFromEl","isHtmlElement","createRegistry","subscribers","findDraggableById","findDroppableById","findById","StoreContext","getBodyElement","visuallyHidden","useUniqueId","AppContext","_preventedKeys","_scrollJumpKeys","preventedKeys","preventStandardKeyEvents","supportedEventName","idle$1","noop$1","scrollJumpKeys","idle$2","interactiveTagNames","isAnInteractiveElement","isEventInInteractiveElement","getBorderBoxCenterPosition","supportedMatchesName","closestPonyfill","closest$1","_isActive","isLockActive","shouldWarn","canStart","lockAPI","isClaimed","api","phaseRef","unbindEventsRef","startCaptureBinding","findClosestDraggableId","actions","tryGetLock","startPendingDrag","preventForcePressBinding","findOptionsForDraggable","shouldRespectForcePress","canGetLock","listenForCapture","shouldBlockNextClick","bindCapturingEvents","getPhase","setPhase","fluidLift","getCaptureBindings","preDrag","isCapturing","snapLift","getDraggingBindings","longPressTimerId","unbindTarget","hasMoved","_event$touches$","shouldRespect","getHandleBindings","unbindWindow","getWindowBindings","startDragging","useSensorMarshal","customSensors","enableDefaultSensors","claim","abandon","newLock","tryAbandon","tryAbandonLock","forceStop","forceSensorStop","draggable$1","findDraggable","canDragInteractiveElements","getShouldRespectForcePress","tryDispatchWhenDragging","getAction","liftActionArgs","move$1","findClosestDragHandleFromEvent","tryGetClosestDraggableIdFromEvent","tryReleaseLock","isLockClaimed","createResponders","getStore","lazyRef","App","lazyStoreRef","lastPropsRef","useAnnouncer","dragHandleUsageInstructionsId","useHiddenTextElement","alwaysRef","dynamicRef","setDynamicStyle","setAlwaysStyle","useStyleMarshal","lazyDispatch","marshalCallbacks","useRegistry","entriesRef","recordRef","restoreFocusFrameRef","isMountedRef","tryGiveFocus","tryGiveFocusTo","findDragHandle","focused","useFocusMarshal","tryResetStore","getCanLift","getIsMovementAllowed","appContext","canLift","count$1","DragDropContext","isEqual$1","isScroll","isAuto","isEither","getClosestScrollable","isElementScrollable","getScroll$1","getIsFixed","delayed","getListenerOptions","useRequiredContext","getClosestScrollableFromDrag","closestScrollable","noop$2","Placeholder$1","animateOpenTimerRef","tryClearAnimateOpenTimer","isAnimatingOpenOnMount","setIsAnimatingOpenOnMount","onSizeChangeEnd","innerRef","DroppableContext","AnimateInOut","_React$PureComponent","provided","getDraggingTransition","shouldAnimateDragMovement","getDraggingOpacity","isCombining","isDropAnimating","getStyle$1","getShouldDraggingAnimate","getDraggingStyle","secondary","shouldAnimateDisplacement","preventHtml5Dnd","isStrictEqual","whatIsDraggedOverFromResult","getSecondarySnapshot","combineTargetFor","isClone","draggingOver","atRest","mapDispatchToProps","dropAnimationFinished","ConnectedDraggable","memoizedOffset","getMemoizedSnapshot","getMemoizedProps","draggingSelector","ownProps","_draggingOver","_combineWith","getCombineWithFromResult","secondarySelector","getFallback","ownId","draggingId","visualDisplacement","isAfterCriticalInVirtualList","getSecondarySelector","pure","areStatePropsEqual","getRef","_useRequiredContext","_useRequiredContext2","dropAnimationFinishedAction","getDraggableRef","computedStyles","getDimension$1","publishedRef","isFirstPublishRef","useDraggablePublisher","dragHandleProps","onMoveEnd","draggableProps","rubric","PrivateDraggable","isUsingCloneFor","PublicDraggable","isDragDisabled","disableInteractiveElementBlocking","isMatchingType","getDraggable","isDropDisabled","ignoreContainerClipping","renderClone","getContainerForClone","ConnectedDroppable","idleWithAnimation","shouldAnimatePlaceholder","isDraggingOver","draggingOverWith","draggingFromThisWith","isUsingPlaceholder","useClone","idleWithoutAnimation","getDraggableRubric","getMapProps","isDraggingOverForConsumer","isDraggingOverForImpact","_snapshot","_completed","wasCombining","isHome","updateViewportMaxScroll","droppableRef","placeholderRef","getDroppableRef","setDroppableRef","setPlaceholderRef","onPlaceholderTransitionEnd","whileDraggingRef","previousRef","publishedDescriptorRef","memoizedUpdateScroll","getClosestScroll","updateScroll","scheduleScrollUpdate","onClosestScroll","getEnv","targetRef","getClient","frameClient","scrollSize","getDroppableDimension","useDroppablePublisher","droppableProps","droppableContext","draggableProvided","draggableSnapshot","getClone","ltrim","rtrim","toFnRef","refA","refB","mergeRefs","copyObject","IS_FIND_LAST_INDEX","parseStyle","viewportOffset","parsePadding","removeEventListeners","addEventListeners","TOP_LEFT","TOP_RIGHT","BOTTOM","DESTROYED","eventListener","HIDDEN","createComponents","components","parsedPadding","lastOffset","videoHeight","TypeErr","deltaPacketsLost","deltaPacketsReceived","phonyFractionLost","summaries","summary","METHOD","propertyIsEnumerableModule","$assign","alphabet","_reactRouter","getRouter","getLocation","getSearch","createMatchSelector","lastPathname","lastMatch","matchPath","isExact","TinyQueue","halfLength","Pebble","roundedCircle","meta_1","segmentationHelper_1","backgroundBlurStage_1","backgroundImageStage_1","fastBilateralFilterStage_1","loadSegmentationStage_1","sourcePlayback","backgroundConfig","segmentationConfig","benchmark","shouldUpscaleCurrentMask","inputResolutions","inputResolution","segmentationWidth","segmentationHeight","vertexArray","createVertexArray","bindVertexArray","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","inputFrameTexture","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","segmentationTexture","loadSegmentationStage","buildLoadSegmentationStage","fastBilateralFilterStage","buildFastBilateralFilterStage","backgroundStage","segmentationData","sampleInputFrame","clearColor","COLOR_BUFFER_BIT","TEXTURE0","texImage2D","htmlElement","updatePostProcessingConfig","postProcessingConfig","jointBilateralFilter","sigmaColor","sigmaSpace","updateSigmaColor","updateSigmaSpace","backgroundImageStage","deleteBuffer","deleteVertexArray","RemoteAudioTrack","RemoteAudioTrackPublication","RemoteDataTrack","RemoteDataTrackPublication","RemoteVideoTrack","Participant","indexedTracks","indexedAudioTracks","indexedVideoTracks","indexTracksById","_RemoteAudioTrack","_RemoteAudioTrackPublication","_RemoteDataTrack","_RemoteDataTrackPublication","_RemoteVideoTrack","_RemoteVideoTrackPublication","_audioTracks","_dataTracks","_trackEventReemitters","_trackPublicationEventReemitters","_trackSignalingUpdatedEventCallbacks","_videoTracks","networkQualityLevel","networkQualityStats","reemitTrackEvents","reemitters","reemitter","trackSignaling","reemitSignalingStateChangedEvents","_getTrackEvents","publicationEventReemitters","publicationEvent","reemitTrackPublicationEvents","trackSignalingAdded","trackSignalingRemoved","RemoteTrackPublication","trackSignalingSubscribed","trackSignalingUnsubscribed","RemoteTrack","newPriority","trackEventReemitters","eventPair","DEVICE_SIZES","Row","noGutters","sizePrefix","brkPoint","infix","createSet","attemptsLeft","propIsEnumerable","test1","test2","test3","shouldUseNative","LocalAudioTrackStats","MODULE_NAME","OPTIONS","alipay","alipayReusable","allowRememberMe","billingAddress","bitcoin","panelLabel","shippingAddress","zipCode","StripeCheckoutDirective","StripeCheckout","stripeCheckout","StripeCheckoutService","providerDefaults","StripeHandlerWrapper","loadLibrary","openOptions","translateSingular","special","spreadableSymbol","DATE","TIME","HOSTNAME","URI","URITEMPLATE","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","fast","ipv4","ipv6","uuid","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","Z_ANCHOR","baseMap","baseSortBy","compareMultiple","AND","CHOOSE","FALSE","IF","then_value","otherwise_value","IFERROR","valueIfError","IFNA","value_if_na","NOT","logical","OR","TRUE","XOR","SWITCH","targetValue","switchCount","switchSatisfied","hasDefaultClause","defaultClause","flattenIntoArray","flat","depthArg","sourceLen","makeEnterExitRetainHook","hookName","hookFn","onExitHook","registerOnExitHook","onRetainHook","registerOnRetainHook","onRetain","onEnterHook","registerOnEnterHook","targetProperty","sourceProperty","TARGET","GLOBAL","dontCallGetSet","xl","subexp","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","error$1","mapDomain","ucs2decode","basicToDigit","codePoint","digitToBasic","adapt","firstTime","baseMinusTMin","inputLength","bias","basic","oldi","baseMinusT","_iteratorNormalCompletion","_didIteratorError","_iteratorError","basicLength","handledCPCount","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","qMinusT","punycode","SCHEMES","pctEncChar","pctDecChars","newStr","_normalizeComponentEncoding","decodeUnreserved","decStr","userinfo","_stripLeadingZeros","_normalizeIPv4","_normalizeIPv6","_matches2","_address$toLowerCase$","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","longestZeroFields","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","iri","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","uriTokens","authority","_recomposeAuthority","absolutePath","resolveComponents","tolerant","unescapeComponent","handler$1","isSecure","wsComponents","handler$2","resourceName","_wsComponents$resourc","_wsComponents$resourc2","handler$3","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_xl","_xl2","toAddr","atIdx","localPart","URN_PARSE","handler$5","urnComponents","nid","nss","urnScheme","uriComponents","handler$6","uuidComponents","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","_connected","defaultDatasetIdKey","reforwardRef","setLabels","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","fallbackContent","updateMode","canvasRef","chartRef","renderChart","destroyChart","nextOptions","createTypedChart","registerables","Doughnut","nativeNow","lastCalled","isStandardArguments","isLegacyArguments","supportsStandardArguments","castPath","IdxStatus","AuthenticatorKey","IdxFeature","isAuthenticator","getConsole","nativeConsole","groupEnd","removeNils","newobj","searchParams","getLink","linkName","altName","_links","CustomError","WWWAuthError","UNKNOWN_ERROR","errorCode","errorDescription","errorSummary","parseHeader","firstSpace","getWWWAuthenticateHeader","genRandomString","randomCharset","split2","delim","isAbsoluteUrl","toQueryString","removeTrailingSlash","trimmed","AuthSdkError","errorLink","errorId","errorCauses","generateState","getIssuer","sdk","getOAuthBaseUrl","getOAuthUrls","authorizeUrl","userinfoUrl","tokenUrl","logoutUrl","revokeUrl","createOAuthMeta","tokenParams","oauthMeta","redirectUri","responseMode","ignoreSignature","acrValues","extraParams","pkce","codeVerifier","codeChallengeMethod","codeChallenge","STATE_TOKEN_KEY_NAME","DEFAULT_POLLING_DELAY","IOS_MAX_RETRY_COUNT","DEFAULT_MAX_CLOCK_SKEW","DEFAULT_CACHE_DURATION","TOKEN_STORAGE_NAME","CACHE_STORAGE_NAME","PKCE_STORAGE_NAME","TRANSACTION_STORAGE_NAME","SHARED_TRANSACTION_STORAGE_NAME","ORIGINAL_URI_STORAGE_NAME","IDX_RESPONSE_STORAGE_NAME","ACCESS_TOKEN_STORAGE_KEY","ID_TOKEN_STORAGE_KEY","REFRESH_TOKEN_STORAGE_KEY","REFERRER_PATH_STORAGE_KEY","MIN_VERIFIER_LENGTH","MAX_VERIFIER_LENGTH","DEFAULT_CODE_CHALLENGE_METHOD","IDX_API_VERSION","AuthApiError","OAuthError","isWindowsPhone","isIE11OrLess","isFingerprintSupported","agent","isPopupPostMessageSupported","isIE8or9","isWebCryptoSubtleSupported","isTokenVerifySupported","hasTextEncoder","isPKCESupported","isHTTPS","isLocalhost","isDPoPSupported","indexedDB","MSStream","trackDateDocumentBecameVisible","dateDocumentBecameVisible","httpRequest","httpRequestInterceptors","saveAuthnState","accessToken","storageUtil","httpCache","storageManager","getHttpCache","cookies","pollingIntent","pollDelay","cacheResponse","cachedResponse","getStorage","oktaUserAgentHeader","_oktaUserAgent","getHttpHeader","ajaxOptions","waitForVisibleAndAwakenDocument","waitForAwakenDocument","recursiveFetch","retryCount","timeSinceDocumentIsVisible","pageVisibilityHandler","retryableFetch","httpRequestClient","stateToken","updateStorage","serverErr","transformErrorXHR","wwwAuthHeader","wwwAuthErr","acr_values","getIssuerOrigin","postOptions","TokenKind","converter","stringifiedAttributes","jar","withAttributes","withConverter","isAccessToken","isIDToken","idToken","isRefreshToken","refreshToken","__rest","authClient","prepareTokenParams","pkceMeta","flow","activationToken","recoveryToken","maxAge","hasSavedInteractionHandle","savedMeta","interactionHandle","muteWarning","isTransactionMetaValidForOptions","isTransactionMetaValidForFlow","interact","clientSecret","activation_token","recovery_token","client_secret","interaction_handle","newMeta","isFieldMutable","mutable","divideSingleActionParamsByMutability","defaultParamsForAction","neededParamsForAction","immutableParamsForAction","generateDirectFetch","actionDefinition","toPersist","accepts","makeIdxResponse","responseJSON","idxResponse","stepUp","generateIdxAction","defaultParams","neededParams","immutableParams","actionList","divideActionParamsByMutability","jsonpathRegex","SKIP_FIELDS","expandRelatesTo","lastStep","jsonpath","innerValue","parseIdxResponse","remediationData","remediation","relatesTo","authenticatorChallenge","remediations","remediationActions","remediationValue","generateRemediationFunctions","actionFn","convertRemediationAction","fieldValue","subField","parseNonRemediations","makeIdxState","requestDidSucceed","rawIdxResponse","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","neededToProceed","rawIdxState","interactionCode","successWithInteractionCode","parsersForVersion","validateVersionConfig","isRawIdxResponse","isOAuthError","introspect","savedIdxResponse","loadIdxResponse","getOAuthDomain","stateHandle","Accept","titleCase","getAuthenticatorFromRemediation","formatAuthenticator","incoming","authenticator","compareAuthenticators","auth1","auth2","Remediator","formatAuthenticators","authenticators","authenticatorsData","canRemediate","idxRemediation","_authClient","getAuthenticator","inputFromRemediation","alias","aliases","getMessages","getValuesAfterProceed","authenticatorFromRemediation","enrollmentId","unwrapFormValue","formKeys","unwrappedForm","GenericRemediator","produces","remediators","getFlowSpecification","_oktaAuth","_flow","isTerminalResponse","getMessagesFromIdxRemediationValue","messagesFromForm","messagesFromOptions","getMessagesFromResponse","globalMessages","useGenericRemediator","fieldMessages","i18n","getRemediatorClass","getRemediator","idxRemediations","remediator","remediatorCandidates","canSkip","canSkipFn","canResend","actionName","canResendFn","handleFailedResponse","removeActionFromValues","removeActionFromOptions","remediate","actionFromValues","getActionFromValues","valuesWithoutExecutedAction","optionsWithoutExecutedAction","canceled","remediationAction","remediationName","filterValuesForRemediation","initializeValues","PENDING","getFlow","setFlow","flowSpec","oktaAuth","initializeData","interactResponse","getDataFromIntrospect","autoRemediate","idxResponseFromRemediation","getDataFromRemediate","exchangeCodeForTokens","enabledFeatures","availableSteps","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getEnabledFeatures","remediatorMap","remediatorClass","stepObj","part1","part2","actionObj","getAvailableSteps","TERMINAL","hasActions","CANCELED","SUCCESS","getTokens","finalizeData","saveIdxResponse","authenticate","OKTA_PASSWORD","Authenticator","VerificationCodeAuthenticator","canVerify","credentials","verificationCode","otp","mapCredentials","passcode","idxRemediationValue","OktaVerifyTotp","totp","OktaPassword","revokeSessions","SecurityQuestionEnrollment","questionKey","question","SecurityQuestionVerification","contextualData","enrolledQuestion","WebauthnEnrollment","clientData","attestation","WebauthnVerification","authenticatorData","signatureData","VerifyAuthenticator","SECURITY_QUESTION","OKTA_VERIFY","WEBAUTHN","challengeData","authenticatorEnrollments","getInputCredentials","valueKey","EnrollAuthenticator","EnrollPoll","startPolling","currentAuthenticator","SelectEnrollmentChannel","filterKey","EnrollmentChannelData","getInputEmail","getInputPhoneNumber","phoneNumber","ChallengeAuthenticator","ChallengePoll","ResetAuthenticator","EnrollProfile","getCredentialsFromRemediation","userProfileFromValues","userProfile","mapUserProfile","profileAttributes","attributeValues","getInputUserProfile","getErrorMessages","errorRemediation","Identify","ReEnrollAuthenticator","newPassword","ReEnrollAuthenticatorWarning","RedirectIdp","idp","SelectAuthenticator","findMatchedOption","matchedOption","isCurrentAuthenticator","isCurrentAuthenticatorEnrollment","currentAuthenticatorEnrollment","mapAuthenticator","selectedAuthenticator","getInputAuthenticator","SelectAuthenticatorAuthenticate","isRecoveryFlow","SelectAuthenticatorEnroll","SelectAuthenticatorUnlockAccount","authenticatorMap","methodTypeOption","methodTypeValue","methodType","getInputUsername","SelectEnrollProfile","AuthenticatorData","formatAuthenticatorData","getAuthenticatorData","mapAuthenticatorDataFromValues","AuthenticatorVerificationData","AuthenticatorEnrollmentData","Skip","AuthenticationFlow","PasswordRecoveryFlow","RegistrationFlow","AccountUnlockFlow","urlParamsToObject","hashOrSearch","plus2space","paramSplit","EmailVerifyCallbackError","isEmailVerifyCallbackError","isEmailVerifyCallback","urlPath","parseEmailVerifyCallback","handleEmailVerifyCallback","canProceed","transaction","availablePollingRemeditaions","recoverPassword","handleInteractionCodeRedirect","savedState","tokenManager","setTokens","unlockAccount","isInteractionRequiredError","isCodeFlow","getHashOrSearch","authParams","isRedirectUri","codeFlow","hasErrorInUrl","hasCode","hasAuthorizationCode","hasInteractionCode","isInteractionRequired","OktaUserAgent","environments","maybeAddNodeEnvironment","addEnvironment","headerName","headerValue","stringToBase64Url","base64ToBase64Url","b64","base64UrlToBase64","b64u","base64UrlToString","utf8","stringToBuffer","base64UrlDecode","base64UrlToBuffer","bufferToBase64Url","byte","getOidcHash","firstHalf","verifyToken","algo","use","importKey","cryptoKey","jwt","verify","PromiseQueue","quiet","thisObject","queueItem","dec2hex","PKCE","generateVerifier","getRandomString","computeChallenge","getDefaultTokenParams","dpop","defaultRedirectUri","DB_KEY","isDPoPNonceError","isWWWAuthError","cryptoRandomValue","byteLen","invokeStoreMethod","onupgradeneeded","createObjectStore","onsuccess","objectStore","oncomplete","findKeyPair","pairId","clearDPoPKeyPair","clearDPoPKeyPairAfterRevoke","revokedToken","shouldClear","tokenType","dpopPairId","generateDPoPProof","keyPair","kty","crv","exportKey","publicKey","typ","jwk","htm","htu","jti","ath","hashAccessToken","signingKey","algorithm","createJwt","privateKey","makeTokenRequest","dpopKeyPair","proof","generateDPoPForTokenRequest","DPoP","dpopNonce","getWellKnown","validationParams","configuredIssuer","validationOptions","acr","ignoreLifetime","maxClockSkew","validateClaims","kid","wellKnown","jwksUri","cachedKey","clearStorage","at_hash","handleOAuthResponse","interaction_code","authorizationCode","oauthParams","validateResponse","allowBearerTokens","dpopOptions","token_type","tokenDict","expiresIn","accessJwt","idJwt","idTokenObj","getTokenOptions","handleResponseOptions","keyPairId","modulusLength","publicExponent","generateKey","generateKeyPair","storeKeyPair","createDPoPKeyPair","oauthResponse","validateOptions","getPostData","postToTokenEndpoint","tokenResponse","DEFAULT_TIMEOUT","loadPopup","popupTitle","addPostMessageListener","responseHandler","assertPKCESupport","validateCodeChallengeMethod","preparePKCE","buildAuthorizeParams","oauthQueryParams","idpScope","loginHint","sessionToken","enrollAmrValues","mayBeArray","convertTokenParamsToOAuthParams","popupWindow","idpPopup","iframePromise","iframeEl","oauthPromise","closePoller","idpPromise","addIDPPopupLisenter","getWithoutPrompt","getWithPopup","initialPath","getWithIDPPopup","BroadcastChannel","cancelPromise","getWithRedirect","setLocation","getResponseMode","defaultResponseMode","parseOAuthResponseFromUrl","paramStr","nativeLoc","parseFromUrl","_getLocation","nativeHistory","_getHistory","nativeDoc","_getDocument","removeSearch","removeHash","cleanOAuthResponseFromUrl","renewTokensWithRefresh","refreshTokenObject","renewTokenParams","endpointParams","postRefreshToken","isSameRefreshToken","updateRefreshToken","removeRefreshToken","throwInvalidTokenError","getSingleToken","originalToken","renewToken","getTokensSync","renewTokens","revokeToken","token_type_hint","hintMap","oidcIntrospect","ACCESS","introspection_endpoint","introspectUrl","authHeader","enrollAuthenticator","prepareParams","getDefaultEnrollAuthenticatorParams","prepareEnrollAuthenticatorParams","createEnrollAuthenticatorMeta","createTokenAPI","useQueue","getWithRedirectFn","parseFromUrlFn","parseFromUrlApi","revoke","renew","getUserInfo","accessTokenObject","idTokenObject","getDPoPAuthorizationHeaders","userInfo","isLoginRedirect","validateToken","SdkClock","localOffset","EVENT_EXPIRED","EVENT_RENEWED","EVENT_ADDED","EVENT_REMOVED","EVENT_SET_STORAGE","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","expireEarlySeconds","TokenManager","storageOptions","storageProvider","storageType","getTokenStorage","useSeparateCookies","expireTimeouts","renewPromise","setExpireEventTimeoutAll","clearExpireEventTimeoutAll","isStarted","getExpireTime","hasExpired","emitExpired","emitRenewed","freshToken","oldToken","emitAdded","emitRemoved","emitError","clearExpireEventTimeout","setExpireEventTimeout","expireTime","expireEventWait","expireEventTimeout","tokenStorage","resetExpireEventTimeoutAll","setStorage","emitSetStorageEvent","getSync","getStorageKeyByType","getTokenType","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","existingTokens","newToken","existingToken","removedToken","shouldRenew","refreshKey","tokenKey","removedTokens","pendingRemove","addPendingRemoveFlags","browserHasLocalStorage","getLocalStorage","testStorage","browserHasSessionStorage","getSessionStorage","testStorageType","getStorageByType","getCookieStorage","getInMemoryStorage","findStorageType","curType","nextType","onstorage","sessionCookie","existingValues","valueToStore","inMemoryStore","cookieOptions","DEFAULT_PENDING","updateAuthStatePromise","canceledTimes","EVENT_AUTH_STATE_CHANGE","AuthStateManager","_sdk","_pending","_authState","_logOptions","_prevAuthState","_transformQueue","_setLogOptions","updateAuthState","getAuthState","getPreviousAuthState","transformAuthState","devMode","emitAuthStateChange","authState","finalPromise","origPromise","curPromise","cancelablePromise","emitAndResolve","AutoRenewService","renewTimeQueue","onTokenExpiredHandler","shouldThrottleRenew","requiresLeadership","processExpiredTokens","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","resolveWith","randomToken","lastMs","microSeconds","NativeMethod","channelName","messagesCallback","subFns","channelState","messageJson","canBeUsed","_pubkey","averageResponseTime","ObliviousSet","obliviousSet","olderThen","removeTooOldValues","originalOptions","webWorkerSupport","idb","fallbackInterval","removeTimeout","maxParallelWrites","useFastPath","OBJECT_STORE_ID","TRANSACTION_SETTINGS","durability","getIdb","mozIndexedDB","webkitIndexedDB","msIndexedDB","commitIndexedDBTransaction","commit","_readLoop","readNewMessages","lastCursorId","keyRangeValue","IDBKeyRange","getAllRequest","openCursorRequest","openCursor","getMessagesHigherThan","newerMessages","useMessages","msgObj","eMIs","messagesCallbackTime","_filterMessage","msgObjA","msgObjB","IndexedDBMethod","dbName","openRequest","keyPath","autoIncrement","createDatabase","writeBlockPromise","readQueuePromises","readerUuid","writeObject","writeMessage","msgObk","tooOld","deleteRequest","removeMessagesById","cleanOldMessages","ls","LocalstorageMethod","addStorageEventListener","writeObj","defaultTime","SIMULATE_CHANNELS","SimulateMethod","METHODS","OPEN_BROADCAST_CHANNELS","lastId","maybePromise","chooseMethods","useMethod","_iL","_onML","_addEL","_uMP","_befC","_prepP","_post","broadcastChannel","sendPromise","_hasMessageListeners","_addListenerObject","listenerFn","listenerObject","minMessageTime","_startListening","_removeListenerObject","_stopListening","postInternal","listenObj","awaitPrepare","USE_METHOD","oldClose","LISTENERS","startedListening","runAll","sendLeaderMessage","leaderElector","msgJson","beLeader","isLeader","_hasLeader","unloadFn","die","_unl","isLeaderListener","_dpLC","_dpL","_lstns","LeaderElectionWebLock","isDead","_wKMC","lN","hasLeader","locks","relevantLocks","held","awaitLeadership","_wLMP","returnPromise","onduplicate","uFn","LeaderElection","_aplQ","_aplQC","hasLeaderListener","applyOnce","isFromFallbackInterval","stopCriteriaPromiseResolve","stopCriteria","stopCriteriaPromise","handleMessage","waitForAnswerTime","responseTime","applyRun","_aLP","whenDeathListener","tryOnFallBack","SyncStorageService","enablePostMessage","onTokenAddedHandler","onTokenRemovedHandler","onTokenRenewedHandler","onSetStorageHandler","onSyncMessageHandler","syncChannelName","LeaderElectionService","onLeaderDuplicate","onLeader","elector","electionChannelName","_leaderElector","createLeaderElection","getNow","RenewOnTabActivationService","lastHidden","onPageVisbilityChange","_onPageVisbilityChange","tabInactivityDuration","renewOnTabActivation","AUTO_RENEW","SYNC_STORAGE","LEADER_ELECTION","RENEW_ON_TAB_ACTIVATION","ServiceManager","broadcastChannelName","knownServices","svc","createService","startServices","isLeaderRequired","srv","stopServices","canStartService","sessionExists","session","closeSession","refreshSession","setCookieAndRedirect","redirectUrl","checkAccountSetupComplete","StorageManagerConstructor","OptionsConstructor","TransactionManagerConstructor","OktaAuthBase","WithStorage","StorageManager","WithHttp","setHeaders","webfinger","Core","authStateManager","serviceManager","handleRedirect","originalUri","handleLoginRedirect","getOriginalUri","storeTokensFromRedirect","removeOriginalUri","restoreOriginalUri","handleIDPPopupRedirect","mixinCore","WithOriginalUri","BaseClass","setOriginalUri","getOriginalUriStorage","sharedStorage","handleLogin","_tokenQueue","endpoints","authorize","onExpiredToken","shouldRemove","signInWithRedirect","additionalParams","getAccessToken","getRefreshToken","getOrRenewAccessToken","isPKCE","hasResponseType","isAuthorizationCodeFlow","invokeApiMethod","revokeAccessToken","accessTokenKey","revokeRefreshToken","refreshTokenKey","getSignOutRedirectUrl","postLogoutRedirectUri","idTokenHint","logoutUri","signOut","defaultUri","currentUri","clearTokensBeforeRedirect","sessionClosed","Authorization","Dpop","clearDPoPStorage","clearAll","clearAllDPoPKeyPairs","parseUseDPoPNonceError","wwwAuth","isMessageFromCorrectSource","fingerprint","getEnrolledCredentials","enrollement","credentialId","buildCredentialCreationOptions","activationData","challenge","pubKeyCredParams","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","userVerification","allowCredentials","rpId","getAttestation","credential","clientDataJSON","attestationObject","getAssertion","STORAGE_MANAGER_OPTIONS","storageTypes","appJsonContentTypeRegex","fetchPromise","readData","formatResult","createOAuthOptionsConstructor","HttpOptionsConstructor","StorageOptionsConstructor","BaseOptionsConstructor","cookieSettings","getCookieSettings","createStorageOptionsConstructor","createHttpOptionsConstructor","assertValidConfig","toAbsoluteUrl","enableSharedStorage","SavedObject","storageName","storageString","logServerSideMemoryStorageWarning","BaseStorageManager","storageManagerOptions","getOptionsForSection","sectionName","overrideOptions","isObjectWithProperties","isTransactionMeta","isOAuthTransactionMeta","isCustomAuthTransactionMeta","BaseTransaction","sendRequest","TransactionClass","accessTokenObj","atToken","generateRequestFnFromLinks","ProfileTransaction","createdAt","modifiedAt","profile","ProfileSchemaTransaction","EmailRole","PasswordStatus","getProfile","updateProfile","getProfileSchema","EmailStatusTransaction","EmailChallengeTransaction","EmailTransaction","roles","getEmails","getEmail","addEmail","deleteEmail","sendEmailChallenge","getEmailChallenge","emailId","challengeId","verifyEmailChallenge","PhoneTransaction","getPhones","getPhone","addPhone","deletePhone","sendPhoneChallenge","verifyPhoneChallenge","PasswordTransaction","created","lastUpdated","NOT_ENROLLED","enroll","getPassword","enrollPassword","updatePassword","deletePassword","addStateToken","builtArgs","transactionStatus","transactionExists","getSavedStateToken","postToTransaction","createTransaction","link2fn","isPolling","factorType","autoPush","rememberDevice","updatePhone","AuthPollStopError","getPollFn","delay$1","transactionCallBack","pollLink","recursivePoll","getStateToken","pollFn","pollRes","factorResult","delayLength","flattenEmbedded","ol","embedded","_embedded","links2fns","AuthnTransactionImpl","createAuthnTransactionAPI","resumeTransaction","transactionStep","introspectAuthn","CoreOptionsConstructor","OAuthOptionsConstructor","createCoreOptionsConstructor","createIdxOptionsConstructor","CoreStorageManager","getTransactionStorage","getSharedTansactionStorage","getIdxResponseStorage","transactionStorage","createIdxStorageManager","WithIdx","newCtx","boundStartTransaction","startTransaction","getSavedTransactionMeta","createTransactionMeta","getTransactionMeta","saveTransactionMeta","clearTransactionMeta","isTransactionMetaValid","createIdxAPI","webauthn","createOktaAuthIdx","TransactionManager","saveLastResponse","clearTransactionFromSharedStorage","dateCreated","saveTransactionToSharedStorage","pruneSharedStorage","loadTransactionFromSharedStorage","clearIdxResponse","storedValue","createIdxTransactionManager","WithAuthn","authn","signIn","_postToTransaction","sendFingerprint","signInWithCredentials","forgotPassword","verifyRecoveryToken","multiOptionalFactorEnroll","mixinAuthn","myaccount","OktaAuth","STRING_ITERATOR","$vSchema","$propertySch","$loopRequired","$op","nmd","imports","acres","hectares","sqfeet","sqmeters","sqmiles","polyline","toGeoJSON","lastCoord","dms","activeColor","completedColor","getSymbol","measureDrag","clickable","measureBoundary","measureVertex","measureVertexActive","resultArea","resultLine","resultPoint","Measure","_className","primaryLengthUnit","primaryAreaUnit","captureZIndex","popupOptions","autoPanPadding","_symbols","_import_data","_initLayout","_collapse","_layer","layerGroup","addTo","_resultsModel","_latlngs","_objProperties","_handleMeasureDoubleClick","closePopup","removeLayer","disableScrollPropagation","$toggle","$interaction","$startPrompt","$measuringPrompt","$startHelp","$results","$measureTasks","_updateMeasureNotStarted","_labelType","_expand","_startMeasure","_clearMeasure","_toggleLabelType","cancelMeasure","startMeasure","finishMeasure","changeLabelType","_handleLabelType","_locked","_updateMeasureStartedNoPoints","_updateMeasureStartedWithPoints","_measureVertexes","featureGroup","_captureMarker","zIndexOffset","autoPanOnFocus","_setCaptureMarkerIcon","_handleMapMouseOut","_handleMeasureClick","_handleMeasureMove","_centerCaptureMarker","_finishMeasure","clearLayers","_measureDrag","_measureArea","_measureBoundary","setLatLng","setIcon","divIcon","iconSize","multiplyBy","_getMeasurementDisplayStrings","lengthDisplay","secondaryLengthUnit","decPoint","thousandsSep","areaDisplay","secondaryAreaUnit","_updateResults","latlng","circleMarker","bringToFront","fitBounds","getLatLng","bindPopup","bindTooltip","permanent","openPopup","_popup","_content","namedItem","getTooltip","setTooltipContent","unbindTooltip","mouseEventToLatLng","_addMeasureArea","_addMeasureBoundary","eachLayer","_addNewVertex","_handleLeafletLatLngs","setLatLngs","mergeOptions","measureControl","addInitHook","_samples","denominatorDelta","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","encodingOrOffset","fromArrayLike","fromArrayBuffer","isEncoding","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","INSPECT_MAX_BYTES","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","_ConnectedRouter","_reducer","_selectors","ConnectedRouter","connectRouter","_createSelectors","nativeJoin","$propertyIsEnumerable","NASHORN_BUG","$allErrorsOption","getSymbolsIn","HAS_INSTANCE","$findIndex","FIND_INDEX","SKIPS_HOLES","MediaTrack","VideoProcessorEventObserver","DEFAULT_FRAME_RATE","_captureTimeoutId","_isCapturing","_inputFrame","_outputFrame","_processorEventObserver","_processorOptions","_unmuteHandler","canCaptureFrames","processFramePeriodMs","captureFrame","checkResult","inputFrameBufferType","processFrame","requestFrame","onloadedmetadata","dimensionsChanged","videoWidth","onresize","DIMENSIONS_CHANGED","processorOptions","dummyEl","outputFrameBufferContextType","targetFps","CanvasCaptureMediaStreamTrack","captureHeight","captureWidth","inputFrameRate","isRemoteVideoTrack","hasFunc","Benchmark","_timingCache","_timings","_save","getAverageDelay","timingCache","getNames","getRate","totalDelay","cacheSize","quickselectStep","generateCustomChildId","generateChildId","tabContext","ICE_ACTIVITY_CHECK_PERIOD_MS","ICE_INACTIVITY_THRESHOLD_MS","IceConnectionMonitor","activityCheckPeriodMs","inactivityThresholdMs","_activityCheckPeriodMs","_inactivityThresholdMs","_lastActivity","_peerConnection","_timer","_onIceConnectionStateChanged","_getActivePairStat","_getIceConnectionStats","_scheduleInactivityCallback","onIceConnectionInactive","iceStats","DELETE","SIZE","MASK","NOT_SET","SetRef","OwnerID","ensureSize","returnTrue","wrapIndex","uint32Index","wholeSlice","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","IS_COLLECTION_SYMBOL","maybeCollection","IS_KEYED_SYMBOL","maybeKeyed","IS_INDEXED_SYMBOL","maybeIndexed","maybeAssociative","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","IS_SEQ_SYMBOL","maybeSeq","IS_RECORD_SYMBOL","maybeRecord","maybeImmutable","IS_ORDERED_SYMBOL","maybeOrdered","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","iteratorValue","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","emptySequence","maybeIndexedSeqFromValue","isKeysIterable","ObjectSeq","seqFromValue","keyedSeqFromValue","indexedSeqFromValue","ArraySeq","notSetValue","EMPTY_SEQ","CollectionSeq","IS_MAP_SYMBOL","maybeMap","maybeOrderedMap","maybeValue","valueA","valueB","smi","defaultValueOf","hashNullish","hashed","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","getIENodeHash","nextHash","hashJSObj","hashSymbol","nullish","_objHashUID","ToKeyedSequence","useKeys","this$1$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","cacheResultThrough","filterFactory","filterSequence","sliceFactory","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","flatSequence","flatDeep","currentDepth","sortFactory","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipSequence","sizes","iterators","isDone","reify","collectionClass","arrCopy","newArr","assertNotInfinite","coerceKeyPath","parentProto","nextProto","isDataStructure","quoteString","_ignoreError","collectionCopy","updateIn$1","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","nextExisting","nextUpdated","emptyMap","setIn$1","update$1","merge$1","mergeIntoKeyedWith","mergeWith$1","collections","collection$1","mergeIntoCollection","mergeWithSources","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMerger","newDataStructure","oldSeq","newSeq","deepMergerWith","mergeItem","hasVal","nextVal","updateMap","MapIterator","MapPrototype","ArrayMapNode","didChangeSize","didAlter","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bit","popCount","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","spliceOut","spliceIn","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","mapIteratorFrame","mapIteratorValue","subNode","newRoot","idx1","idx2","IS_LIST_SYMBOL","maybeList","emptyList","makeList","VNode","listNodeFor","setListBounds","newTail","getTailOffset","updateVNode","updateList","oldSize","arguments$1","seqs","iterateList","DONE","ListPrototype","originIndex","newChild","removingFirst","oldChild","editableVNode","sizeIndex","EMPTY_LIST","iterateNodeOrLeaf","iterateLeaf","iterateNode","nodeHas","lowerNode","newLowerNode","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","emptyOrderedMap","updateOrderedMap","newMap","makeOrderedMap","omap","IS_STACK_SYMBOL","maybeStack","emptyStack","makeStack","EMPTY_STACK","StackPrototype","IS_SET_SYMBOL","maybeSet","maybeOrderedSet","notAssociative","flipped","allEqual","bSize","keyCopier","result$1","emptySet","SetPrototype","updateSet","didChanges","EMPTY_SET","EMPTY_RANGE","possibleIndex","offsetValue","getIn$1","searchKeyPath","hasIn$1","useTuples","concatSeq","concatFactory","isKeyedIter","coerce","partitionFactory","sideEffect","joined","initialReduction","grouper","countByFactory","entriesSequence","entryMapper","flatMapFactory","searchKey","groupByFactory","keyMapper","defaultNegComparator","takeSequence","iterating","takeWhileFactory","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","KeyedCollectionPrototype","removeNum","numArgs","spliced","interposedSequence","interposeFactory","zipped","interleaved","defaultZipper","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","PairSorting","LeftThenRight","RightThenLeft","defaultValues","hasInitialized","throwOnInvalidDefaultValues","RecordTypePrototype","recordName","RecordPrototype","recordSeq","makeRecord","likeRecord","EMPTY_REPEAT","fromJSWith","defaultConverter","converted","_items","_limit","_evictListeners","onEvict","pushTo","evict","peekHead","baseGetAllKeys","root_","size_","array_","addAll","trunc","interfaces_","equalsWithTolerance","doubleToLongBits","longBitsToDouble","isInfinite","NULL_ORDINATE","DimensionalComparator","serialVersionUID","setOrdinate","equals2D","getOrdinate","equals3D","equalInZ","distance3D","setCoordinate","_dimensionsToTest","INTERIOR","BOUNDARY","EXTERIOR","NONE","toLocationSymbol","LOG_10","setCharAt","intValue","_hi","_lo","TWO_PI","PI_2","EPS","MAX_PRINT_DIGITS","TEN","ONE","SCI_NOT_EXPONENT_CHAR","SCI_NOT_ZERO","extractSignificantDigits","magnitude","selfAdd","sqr","doubleValue","selfSubtract","getSpecialNumberString","selfDivide","dump","createNaN","selfMultiply","reciprocal","rint","isNegative","selfSqr","toStandardNotation","toSciNotation","stringOfChar","isPositive","signum","isDigit","DP_SAFE_EPSILON","orientationIndexFilter","signOfDet2x2","getCoordinate","getCoordinateCopy","expandEnvelope","toCoordinateArray","arraycopy","_minx","_maxx","_miny","_maxy","getArea","getMaxX","getMaxY","getMinX","getMinY","covers","expandToInclude","minExtent","setToNull","maxExtent","centre","typeStr","emptyTypeStr","spaces","parenComma","doubleParenComma","trimParens","geometryFactory","extractGeometry","getGeometryType","_coordinates","multipoint","_geometries","linestring","linearring","multilinestring","_shell","_holes","multipolygon","geometrycollection","createPoint","createMultiPoint","createLineString","createLinearRing","createMultiLineString","createPolygon","createMultiPolygon","createGeometryCollection","shouldNeverReachHere","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","_precisionModel","DONT_INTERSECT","DO_INTERSECT","COLLINEAR","NO_INTERSECTION","POINT_INTERSECTION","COLLINEAR_INTERSECTION","getIndexAlongSegment","computeIntLineIndex","getTopologySummary","isEndPoint","isCollinear","computeIntersection","computeIntersect","getIntersectionNum","getEdgeDistance","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","computeEdgeDistance","getEndpoint","isIntersection","getIntersectionAlongSegment","nonRobustComputeEdgeDistance","isInSegmentEnvelopes","normalizeToMinimum","smallestInAbsValue","safeHCoordinateIntersection","nearestEndpoint","intersectionWithNormalization","makePrecise","checkDD","println","normalizeToEnvCentre","computeCollinearIntersection","distancePointLine","_p","_crossingCount","_isPointOnSegment","countSegment","isPointInPolygon","isOnSegment","locatePointInRing","CLOCKWISE","COUNTERCLOCKWISE","STRAIGHT","signedArea","distanceLineLine","isPointInRing","computeLength","isCCW","computeOrientation","distancePointLinePerpendicular","isOnLine","_envelope","_factory","_SRID","_userData","getSRID","SORTINDEX_POINT","SORTINDEX_MULTIPOINT","SORTINDEX_LINESTRING","SORTINDEX_LINEARRING","SORTINDEX_MULTILINESTRING","SORTINDEX_POLYGON","SORTINDEX_MULTIPOLYGON","SORTINDEX_GEOMETRYCOLLECTION","geometryChangedFilter","getSortIndex","getFactory","getGeometryN","isRectangle","equalsTopo","equalsExact","geometryChanged","geometryChangedAction","equalsNorm","getLength","getNumGeometries","compareToSameClass","getUserData","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","getPrecisionModel","computeEnvelopeInternal","setSRID","setUserData","hasNext","isGeometryCollectionOrDerived","hasNonEmptyElements","hasNullElements","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","isInBoundary","ensureCapacity","arrayList_","position_","coordArrayType","closeRing","ForwardComparator","BidirectionalComparator","isRing","ptNotInList","hasRepeatedPoints","removeRepeatedPoints","removeNull","copyDeep","isEqualReversed","atLeastNCoordinatesOrNothing","increasingDirection","minCoordinate","extract","OLDcompare","entrySet","hashSet_","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","treeSet_","asList","DONTCARE","SYM_FALSE","SYM_TRUE","SYM_DONTCARE","SYM_P","SYM_L","SYM_A","toDimensionSymbol","toDimensionValue","isGeometryChanged","getCoordinates","getNumPoints","isEquivalentClass","getBoundaryDimension","getBoundary","_geom","_geomFact","_bnRule","_endpointMap","boundaryMultiLineString","getEmptyMultiPoint","computeBoundaryCoordinates","createMultiPointFromCoords","boundaryLineString","getStartPoint","getEndPoint","addEndpoint","getCoordinateN","NEWLINE","SIMPLE_ORDINATE_FORMAT","getStackTrace","printStackTrace","readLine","copyCoord","ensureValidRing","createClosedRing","isSimple","getPointN","getCoordinateSequence","getCoordinateSequenceFactory","isCoordinate","getNumInteriorRing","convexHull","getExteriorRing","getInteriorRingN","validateConstruction","MINIMUM_VALID_SIZE","_isUserDataCopied","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","setCopyUserData","editInternal","editGeometryCollection","editPolygon","GeometryEditorOperation","editCoordinates","instanceObject","readResolve","_modelType","FLOATING","setScale","maximumPreciseValue","getMaximumSignificantDigits","isFloating","FLOATING_SINGLE","mostPrecise","nameToTypeMap","_coordinateSequenceFactory","getDefaultCoordinateSequenceFactory","buildGeometry","toGeometryArray","toPolygonArray","toLineStringArray","toPointArray","createGeometry","toMultiPolygonArray","toMultiLineStringArray","toMultiPointArray","toLinearRingArray","createPointFromInternalCoord","precisionModel","reducePrecision","opposite","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","getEdge","findRightmostEdgeAtNode","getEdges","getRightmostEdge","isForward","getSym","findEdge","msgWithCoord","addLast","removeFirst","_finder","_dirEdgeList","_nodes","_rightMostCoord","_env","clearVisitedEdges","setVisited","getRightmostCoordinate","computeNodeDepth","isVisited","computeDepths","copySymDepths","computeDepth","setEdgeDepths","addReachable","findResultEdges","isInteriorAreaEdge","setInResult","getNodes","getDirectedEdges","setAllLocations","setAllLocationsIfNull","isLine","getLocations","setLocations","isAnyNull","isEqualOnSide","allPositionsEqual","getGeometryCount","toLine","toLineLabel","_startDe","_maxNodeDegree","_edges","_pts","_label","_ring","_isHole","_geometryFactory","computePoints","computeRing","isIsolated","getEdgeRing","getLabel","mergeLabel","addPoints","setEdgeRing","getNext","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","containsPoint","addHole","isShell","getMaxNodeDegree","getShell","setShell","setMinEdgeRing","getNextMin","buildMinimalRings","getMinEdgeRing","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","_isInResult","_isCovered","_isCoveredSet","_isVisited","isCovered","isCoveredSet","setLabel","setCovered","updateIM","computeIM","isInResult","_coord","isIncidentEdgeInResult","print","computeMergedLocation","setLabelBoundary","nodeMap","nodeFact","addNode","createNode","getBoundaryNodes","NW","SW","SE","isNorthern","isOpposite","commonHalfPlane","isInHalfPlane","quadrant","_edge","_p0","_p1","_dx","_dy","_quadrant","compareDirection","getDy","getDirectedCoordinate","getDx","getQuadrant","computeLabel","_isForward","_sym","_nextMin","_edgeRing","_minEdgeRing","_depth","computeDirectedLabel","setNextMin","getDepthDelta","isLineEdge","printEdge","printReverse","setSym","setVisitedEdge","setNext","depthFactor","_edgeEndList","printEdges","eiList","getNodeIterator","linkResultDirectedEdges","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","insertEdge","findEdgeEnd","addEdges","_shellList","sortShellsAndHoles","computePolygons","placeFreeHoles","buildMinimalEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","getPolygons","_bounds","_item","reorder","visitItem","_childBoundables","getLevel","getChildBoundables","addChildBoundable","computeBounds","singletonList","_boundable1","_boundable2","_distance","_itemDistance","expandToQueue","isComposite","isLeaves","getDistance","getBoundable","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","IntersectsOp","getNodeCapacity","lastNode","itemsTree","boundablesAtLevel","getIntersectsOp","createHigherLevels","getRoot","createParentBoundables","getComparator","compareDoubles","STRtreeNode","xComparator","yComparator","intersectsOp","createParentBoundablesFromVerticalSlices","createParentBoundablesFromVerticalSlice","verticalSlices","nearestNeighbour","centreX","avg","centreY","relativeSign","compareValue","_segString","segmentIndex","_segmentOctant","_isInterior","isInterior","_nodeMap","getSplitCoordinates","addEndpoints","addEdgeCoordinates","addCollapsedNodes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","addSplitEdges","createSplitEdge","findCollapseIndex","getSegmentOctant","checkSplitEdgesCorrectness","octant","addIntersection","_nodeList","safeOctant","addIntersectionNode","getNodeList","addIntersections","getNodedSubstrings","projectionFactor","distancePerpendicular","midPoint","closestPoints","lineIntersection","pointAlongOffset","setCoordinates","segmentFraction","pointAlong","tempEnv1","tempEnv2","_overlapSeg1","_overlapSeg2","getLineSegment","computeSelect","computeOverlaps","computeOverlapsInternal","getEndIndex","getStartIndex","getChainStartIndices","findChainEnd","toIntArray","getChains","computeNodes","_segInt","setSegmentIntersector","_monoChains","_index","_idCounter","_nodedSegStrings","_nOverlaps","SegmentOverlapAction","getMonotoneChains","intersectChains","_si","processIntersections","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","setQuadrantSegments","setEndCapStyle","setJoinStyle","setMitreLimit","CAP_FLAT","CAP_SQUARE","JOIN_MITRE","JOIN_BEVEL","getEndCapStyle","isSingleSided","getJoinStyle","setSimplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","bufferDistanceError","_distanceTol","_isDeleted","_angleOrientation","_inputLine","INIT","KEEP","NUM_PTS_TO_CHECK","isDeletable","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","findNextNonDeletedIndex","isShallowConcavity","simplify","collapseLine","_ptList","_minimimVertexDistance","COORDINATE_ARRAY_TYPE","addPt","isRedundant","revere","addPts","setMinimumVertexDistance","PI_TIMES_2","PI_OVER_2","PI_OVER_4","isAcute","isObtuse","interiorAngle","normalizePositive","angleBetween","getTurn","angleBetweenOriented","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_li","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","MAX_CLOSING_SEG_LEN_FACTOR","OFFSET_SEGMENT_SEPARATION_FACTOR","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","addNextSegment","computeOffsetSegment","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","addFilletArc","addMitreJoin","addLimitedMitreJoin","addFilletCorner","addBevelJoin","createSquare","addSegments","addFirstSegment","addLastSegment","initSideSegments","createCircle","hasNarrowConcaveAngle","getOffsetCurve","getSegGen","computePointCurve","computeOffsetCurve","computeSingleSidedBufferCurve","simplifyTolerance","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","getBufferParameters","getRingCurve","copyCoordinates","_subgraphs","_cga","DepthSegment","findStabbedSegments","_leftDepth","_upwardSeg","compareX","interpolateZ","longestSideLength","circumcentre","area3D","inCentre","perpendicularBisector","angleBisector","_inputGeom","_curveBuilder","_curveList","addPoint","addCurve","addPolygon","isErodedCompletely","addPolygonRing","isTriangleErodedCompletely","addLineString","getCurves","addCollection","locate","_parent","_atStart","_max","_subcollectionIterator","isAtomic","containsPointInPolygon","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","propagateSideLabels","isAreaLabelsConsistent","computeEdgeEndLabels","getBoundaryNodeRule","checkAreaLabelsConsistent","getGeometry","computeLabelling","getDegree","insertEdgeEnd","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","updateLabelling","mergeSymLabels","findCoveredLineEdges","_orientation","compareOriented","_ocaMap","findEdgeIndex","findEqualEdge","_hasIntersection","_hasProper","_hasProperInterior","_hasInterior","_properIntersectionPoint","_isSelfIntersection","numIntersections","numInteriorIntersections","numProperIntersections","numTests","isTrivialIntersection","isAdjacentSegments","getProperIntersectionPoint","hasProperInteriorIntersection","getLineIntersector","hasProperIntersection","hasInteriorIntersection","getSegmentIndex","pts","computeIntersectsForChain","getStartIndexes","computeIntersects","NULL_VALUE","getDelta","depthAtLocation","_mce","_isIsolated","_depthDelta","getCollapsedEdge","setIsolated","isCollapsed","getMaximumSegmentIndex","getMonotoneChainEdge","isPointwiseEqual","setDepthDelta","getEdgeIntersectionList","setAtLeastIfValid","_workingPrecisionModel","_workingNoder","_graph","setWorkingPrecisionModel","insertUniqueEdge","buildSubgraphs","createSubgraphs","createEmptyResultGeometry","getNoder","computeNodedEdges","setNoder","convertSegStrings","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","isIntegerPrecision","_segStrings","checkEndPtVertexIntersections","checkInteriorIntersections","checkValid","checkCollapses","checkCollapse","_pt","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","SAFE_ENV_EXPANSION_FACTOR","intersectsScaled","intersectsToleranceSquare","copyScaled","getSafeEnvelope","intersectsPixelClosure","addSnappedNode","selectedSegment","HotPixelSnapAction","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","_interiorIntersections","getInteriorIntersections","_pm","_pointSnapper","checkCorrectness","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","_argGeom","_resultGeometry","_saveException","CAP_BUTT","MAX_PRECISION_DIGITS","bufferFixedPrecision","bufferReducedPrecision","precisionScaleFactor","computeGeometry","bufferOriginalPrecision","getResultGeometry","bufferOp","_isNull","setMinimum","setMaximum","computeDistance","_maxPtDist","MaxPointDistanceFilter","MaxMidpointDistanceFilter","computeMaxMidpointDistance","getMaxPointDistance","computeMaxVertexDistance","findDistance","getDistancePoints","_minPtDist","_comps","_lines","_isForcedToLineString","setForceToLineString","getLines","_boundaryRule","_isIn","_numBoundaries","locateInternal","locateInPolygonRing","updateLocationInfo","computeLocation","_segIndex","INSIDE_AREA","isInsideArea","getGeometryComponent","_locations","_terminateDistance","_ptLocator","_minDistanceLocation","_minDistance","computeContainmentDistance","computeMinDistanceLinesPoints","computeMinDistance","computeFacetDistance","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPoints","isWithinDistance","_g0","_g1","_ptDist","_densifyFrac","MaxDensifiedByFractionDistanceFilter","setDensifyFraction","computeOrientedDistance","orientedDistance","_euclideanDist","_numSubSegs","_minValidDistance","_maxValidDistance","_minDistanceFound","_maxDistanceFound","_isValid","_errMsg","_errorLocation","_errorIndicator","_input","_bufDistance","VERBOSE","MAX_DISTANCE_DIFF_FRAC","checkMaximumDistance","checkPositiveValid","checkNegativeValid","getPolygonLines","checkMinimumDistance","getErrorIndicator","getErrorLocation","getErrorMessage","_errorMsg","MAX_ENV_DIFF_FRAC","checkPolygonal","checkExpectedEmpty","checkEnvelope","checkArea","checkDistance","isValidMsg","_findAllIntersections","_isCheckEndSegmentsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","_keepIntersections","getInteriorIntersection","setCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","setFindAllIntersections","setKeepIntersections","isEndSegment","createAllIntersectionsFinder","createAnyIntersectionFinder","createIntersectionCounter","computeIntersections","_nv","toSegmentStrings","_mapOp","_op","_lineEdgesList","_resultLineList","collectLines","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","getArgGeometry","buildLines","isResultOfOp","isCoveredByA","labelIsolatedLines","INTERSECTION","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","transformCoordinates","transformPolygon","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","snapVertices","findSnapForVertex","snapTo","snapSegments","findSegmentIndexToSnap","setAllowSnappingToSourceVertices","_srcGeom","SNAP_PRECISION_FACTOR","extractTargetCoordinates","snapToSelf","computeSnapTolerance","computeMinimumSegmentLength","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","_snapPts","_isSelfSnap","snapLine","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","signExpBits","numCommonMostSigMantissaBits","zeroLowerBits","toBinaryString","getBit","_commonCoord","_ccFilter","CommonCoordinateFilter","Translater","addCommonBits","removeCommonBits","getCommonCoordinate","_commonBitsX","_commonBitsY","_cbr","selfSnap","prepareResult","overlayOp","UNION","symDifference","SYMDIFFERENCE","DIFFERENCE","mce","chainIndex","_xValue","_eventType","_insertEvent","_deleteEventIndex","INSERT","isDelete","setDeleteEventIndex","getObject","getInsertEvent","isInsert","isSameLabel","getDeleteEventIndex","_includeProper","_recordIsolated","_numIntersections","_bdyNodes","_isDone","_isDoneWhenProperInt","setIsDoneIfProperInt","isBoundaryPointInternal","isBoundaryPoint","setBoundaryNodes","nOverlaps","prepareEvents","processOverlaps","_min","NodeComparator","getMin","getMax","_node1","_node2","buildExtent","_leaves","buildTree","buildLevel","buildRoot","printNode","getItems","SegmentVisitor","IntervalIndexedGeometry","_counter","addLine","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","insertBoundaryPoint","determineBoundary","computeSelfNodes","createEdgeSetIntersector","addSelfIntersectionNodes","computeSplitEdges","computeEdgeIntersections","hasTooFewPoints","insertPoint","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","_resultPrecisionModel","_arg","setComputationPrecision","MapOp","_resultGeom","_resultPolyList","cancelDuplicateResultEdges","createEmptyResult","replaceCollapsedEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","labelIncompleteNode","resultDimension","_boundaryDistanceTolerance","_linework","extractLinework","isWithinToleranceOfBoundary","getLinework","_doLeft","_doRight","extractPoints","computeOffsetPoints","setSidesToGenerate","_locFinder","_invalidLocation","TOLERANCE","_testCoords","computeBoundaryDistanceTolerance","reportResult","addTestPts","hasLocation","isValidResult","getInvalidLocation","_geomFactory","_skipEmpty","_inputGeoms","extractFactory","extractElements","createList","_inputPolys","STRTREE_NODE_CAPACITY","reduceToGeometries","unionTree","extractByEnvelope","unionOptimized","unionActual","unionUsingEnvelopeIntersection","binaryUnion","unionSafe","repeatedUnion","restrictToPolygons","bufferUnion","GeoJSONReader","GeoJSONWriter","OverlayOp","UnionOp","BufferOp","DocumentVisibilityMonitor","nPhases","_onVisibilityChange","_emitVisible","_listenerCount","phaseListeners","_emitVisiblePhase","$find","__n","__E","_sb","__s","localName","CONFIGURABLE_FUNCTION_NAME","enforceInternalState","CONFIGURABLE_LENGTH","TEMPLATE","globalIsFinite","intLength","intEnd","intStart","isArg","isType","firstWeekOfNextYear","firstWeekOfThisYear","baseProperty","basePropertyDeep","objStacked","PageItem","activeLabel","createButton","First","Prev","Ellipsis","Next","Last","Pagination","FunctionName","IteratorsCore","BUGGY_SAFARI_ITERATORS","DEFAULT","IS_SET","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","transition_1","router_1","resolve_1","addCoreResolvables","addResolvable","UIRouter","registerAddCoreResolvables","TRANSITION_TOKENS","isTransition","treeChangesCleanup","uniqR","replaceTransitionWithNull","pointInPolygonFlat","pointInPolygonNested","capabilityReject","evtArr","evts","liveEvents","$resourceMinErr","MEMBER_NAME_REGEX","shallowClearAndCopy","PROTOCOL_AND_IPV6_REGEX","stripTrailingSlashes","cancellable","$$encodeUriQuery","$$encodeUriSegment","Route","setUrlParams","actionUrl","encodedVal","protocolAndIpv6","isQueryParamValue","paramInfo","urlParam","leadingSlashes","paramDefaults","defaultResponseInterceptor","resource","Resource","$promise","$resolved","$cancelRequest","hasBody","numericTimeout","timeoutDeferred","numericTimeoutPromise","isInstanceCall","httpConfig","requestInterceptor","requestErrorInterceptor","responseInterceptor","responseErrorInterceptor","successCallback","errorCallback","actionParams","isValidDottedPath","lookupDottedPath","extractParams","rejectionOrResponse","$refKeywords","schemaHasRulesExcept","$top","fullPath","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","extendRefs","coerceTypes","$coerceToTypes","coerceToTypes","$rulesGroup","$shouldUseGroup","$method","$dataType","$coerced","$bracesCoercion","checkDataType","arr5","i5","l5","$shouldUseRule","implements","$ruleImplementsSomeKeyword","finalCleanUpCode","toplevel","hardwareDevicePublisheriPad","hardwareDevicePublisheriPhone","browserdetection","sdkName","sdkVersion","gateway","createGateway","maxReconnectAttempts","reconnectIntervalMs","_connectTimestamp","_eventQueue","_readyToConnect","_reconnectAttemptsLeft","_WebSocket","roomSid","participantSid","maybeReconnect","_session","connectInterval","timeToWait","reconnect","_publish","CLOSING","CLOSED","groupName","handleConnectResponse","connectRequest","isIpad","isIphone","ListGroupItem","ListGroup","horizontalVariant","initialBsPrefix","AbstractNav","NetworkQualitySignaling","_remoteLevels","_networkQualityInputs","_resendTimer","_sendNetworkQualityInputs","_networkQualityReportLevels","reportLevel","remoteReportLevel","_handleNetworkQualityMessage","remotes","networkQualityInputs","networkQualityReportLevels","createNetworkQualityInputsMessage","_pointGeometry2","_lat_lng2","_transform2","Geo","tileSize","hasSize_","hasView_","transform_","bearing","mapCanvasProjection","mapCanvasProjection_","fromLatLngToCenterPixel","ptLatLng","locationPoint","fromLatLngToDivPixel","fromLatLngToContainerPixel","worldSize","ptXY","ptxy","ptRes","pointLocation","roundFactor","bndT","bndR","bndB","bndL","topLeftCorner","bottomRightCorner","fromAsync","nativeFromAsync","customDefaultsMerge","ChromeRTCSessionDescription","RTCRtpSenderShim","isUnifiedPlan","ChromeRTCPeerConnection","iceTransports","sdpFormat","_appliedTracksToSSRCs","_localStream","_pendingLocalOffer","_pendingRemoteOffer","_rolledBackTracksToSSRCs","_sdpFormat","_senders","_signalingStateLatch","_tracksToSSRCs","shimDataChannel","signalingState","ontrack","addStream","localDescription","remoteDescription","removeStream","_audioTransceiver","hasReceiversForTracksOfKind","_videoTransceiver","createDataChannel","dataChannelDict","needsMaxPacketLifeTimeShim","maxRetransmitTime","shimDataChannelInit","dataChannel","setDescription","pendingLocalOffer","pendingRemoteOffer","intermediateState","setRemoteAnswer","previousSignalingState","_description","RTCDataChannel","tracksToSSRCs","deepFreeze","isFrozen","needsRefocusRef","listNode","getNextActiveChild","currentListNode","activeChild","nextActiveChild","rbEventKey","$parseInt","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Super","assertThisInitialized","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","endOfYear","sendOrRecvStats","MAX_BYTES","generated","__twilioVideoImportedModules","orient2d","orient2dfast","create$2","_leaflet_id","wrapNum","includeMax","falseFn","formatNum","splitWords","getParamString","existingUrl","templateRe","emptyImageUrl","getPrefixed","timeoutDefer","requestFn","cancelFn","cancelAnimFrame","Class","NewClass","callInitHooks","statics","Mixin","checkDeprecatedMixinEvents","_initHooks","_initHooksCalled","_on","_once","_listens","_firingCount","propagate","listens","sourceTarget","_propagateEvent","_eventParents","addEventParent","removeEventParent","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","toPoint","Bounds","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","toLatLng","_subtract","divideBy","_divideBy","_multiplyBy","scaleBy","unscaleBy","_floor","_ceil","_trunc","distanceTo","min2","max2","getBottomLeft","getTopRight","getTopLeft","getBottomRight","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","bufferRatio","heightBuffer","widthBuffer","sw2","ne2","_southWest","_northEast","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","Earth","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","CRS","latLngToPoint","projectedPoint","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","getProjectedBounds","infinite","wrapLng","wrapLat","wrapLatLngBounds","newCenter","latShift","lngShift","latlng1","latlng2","sinDLat","sinDLon","earthRadius","SphericalMercator","MAX_LATITUDE","Transformation","toTransformation","EPSG3857","EPSG900913","svgCreate","pointsToPath","rings","len2","ielt9","userAgentContains","android23","webkitVer","androidStock","opera","gecko","phantom","opera12","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","touchNative","TouchEvent","L_NO_TOUCH","mobileOpera","mobileGecko","retina","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","canvas$1","svg$1","createSVGRect","inlineSvg","vml","adj","mac","linux","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","pEvent","touchcancel","MSPOINTER_TYPE_TOUCH","_handlePointer","_pointers","_pointerDocListener","addPointerListener","_globalPointerDown","_globalPointerMove","_globalPointerUp","MSPOINTER_TYPE_MOUSE","disableTextSelection","enableTextSelection","_userSelect","_outlineElement","_outlineStyle","TRANSFORM","testProp","TRANSITION","TRANSITION_END","currentStyle","create$1","toFront","toBack","Enabled","Opacity","_setOpacityIE","_leaflet_pos","userSelectProperty","disableImageDrag","enableImageDrag","preventOutline","restoreOutline","outlineStyle","getSizedParentNode","boundingClientRect","addOne","eventsKey","batchRemove","removeOne","mouseSubst","wheel","originalHandler","simDblclick","sourceCapabilities","firesTouchEvents","getPropagationPath","HTMLLabelElement","HTMLSelectElement","newEvent","_simulated","makeDblclick","dblclick","addDoubleTapListener","isExternalTarget","removePointerListener","removeDoubleTapListener","getMousePosition","wheelPxFactor","getWheelDelta","PosAnimation","newPos","easeLinearity","_el","_inProgress","_easeOutPower","_startPos","_animate","_complete","_animId","_runFrame","_easeOut","crs","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomDelta","trackResize","_handlers","_zoomBoundLayers","_sizeChanged","_initContainer","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","_zoomAnimated","_createAnimProxy","_catchTransitionEnd","_addLayers","_limitCenter","_loaded","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","noMoveStart","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","paddingTL","paddingTopLeft","paddingBR","paddingBottomRight","getBoundsZoom","paddingOffset","swPoint","nePoint","fitWorld","panBy","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","startZoom","u1","rho","rho2","sinh","cosh","_moveStart","easeOut","_flyToFrame","_move","getScaleZoom","_moveEnd","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","paddedBounds","paddedSize","invalidateSize","_lastCenter","oldCenter","debounceMoveend","_locateOptions","_handleGeolocationError","onResponse","_handleGeolocationResponse","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","latitude","longitude","accuracy","HandlerClass","_containerId","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","boundsSize","scalex","scaley","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","_onScroll","_fadeAnimated","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","zoomChanged","supressEvent","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","onOff","_handleDOMEvent","_onMoveEnd","_findEventTargets","isHover","_draggableMoved","_isClickDisabled","_fireDOMEvent","_mouseEvents","canvasTargets","synth","isMarker","_radius","containerPoint","bubblingMouseEvents","boxZoom","_latLngToNewLayerPoint","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","_rebound","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","_nothingToAnimate","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","_tempFireZoomEvent","removeControl","addControl","_refocusOnMap","_controlContainer","createCorner","vSide","hSide","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_preventClick","_addLayer","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","_getLayer","_section","acceptableHeight","collapse","_expandSafely","_layersLink","keydown","_baseLayersList","_separator","_overlaysList","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","_createRadioElement","radioHtml","radioFragment","hasLayer","layerId","_onInputClick","addedLayers","removedLayers","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","zoomControl","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateMetric","_updateImperial","_getRoundNum","_updateScale","maxMiles","maxFeet","pow10","Attribution","ukrainianFlag","_attributions","attributionControl","getAttribution","addAttribution","_addAttribution","removeAttribution","setPrefix","attribs","prefixAndAttribs","attribution","Handler","addHooks","removeHooks","START","Draggable","clickTolerance","dragStartTarget","_dragStartTarget","_preventOutline","_onDown","finishDrag","_moving","sizedParent","_startPoint","_parentScale","mouseevent","_onMove","_onUp","_lastTarget","SVGElementInstance","_newPos","_updatePosition","noInertia","fireDragend","clipPolygon","clippedPoints","_code","_getBitCode","_getEdgeIntersection","polygonCenter","centroidLatLng","latlngCenter","latSum","lngSum","_lastCode","PolyUtil","sqTolerance","_simplifyDPStep","newPoints","_simplifyDP","reducedPoints","_sqDist","_reducePoints","pointToSegmentDistance","_sqClosestPointOnSegment","sqDist","maxSqDist","clipSegment","useLastCode","codeOut","newCode","codeA","codeB","_flat","polylineCenter","halfDist","segDist","LineUtil","closestPointOnSegment","LonLat","Mercator","R_MINOR","con","dphi","EPSG3395","EPSG4326","Simple","_mapToAdd","addInteractiveTarget","removeInteractiveTarget","_layerAdd","beforeAdd","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","FeatureGroup","bringToBack","Icon","popupAnchor","tooltipAnchor","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","_createImg","_setIconStyles","sizeOption","shadowAnchor","iconAnchor","IconDefault","iconRetinaUrl","shadowUrl","shadowSize","imagePath","_detectIconPath","_stripUrl","MarkerDrag","_marker","_icon","_draggable","_onDragStart","predrag","_onPreDrag","dragend","_adjustPan","autoPanSpeed","iconPos","panBounds","movement","_panRequest","_oldLatLng","autoPan","_shadow","_latlng","oldLatLng","Marker","keyboard","riseOnHover","riseOffset","_initIcon","_removeIcon","_removeShadow","viewreset","setZIndexOffset","getIcon","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","_panOnFocus","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","iconOpts","_getPopupAnchor","_getTooltipAnchor","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","_updatePath","_updateStyle","_updateBounds","_bringToBack","_project","_clickTolerance","CircleMarker","_point","_radiusY","_pxBounds","_updateCircle","_empty","_containsPoint","legacyOptions","_mRadius","latR","lngR","Polyline","smoothFactor","noClip","_setLatLngs","getLatLngs","closestLayerPoint","jLen","_parts","_defaultShape","addLatLng","_convertLatLngs","_rings","_projectLatlngs","_rawPxBounds","projectedBounds","_clipPoints","_simplifyPoints","_updatePoly","clipped","GeoJSON","addData","geometryToLayer","asFeature","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","geoLayer","featureLayer","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","geoJSON","holes","jsons","ImageOverlay","errorOverlayUrl","_image","_initImage","styleOpts","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","_overlayOnError","errorUrl","VideoOverlay","keepAspectRatio","onloadeddata","sourceElements","SVGOverlay","DivOverlay","_source","openOn","_prepareOpen","_removeTimeout","setContent","_updateContent","isOpen","_contentNode","_getAnchor","_containerBottom","_containerLeft","_containerWidth","_initOverlay","OverlayClass","Popup","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","autoClose","closeOnEscapeKey","closeOnClick","closePopupOnClick","preclick","moveend","_wrapper","_tipContainer","_tip","_closeButton","scrolledClass","_autopanning","containerHeight","containerWidth","layerPos","containerPos","_popupHandlersAdded","_openPopup","keypress","_onKeyPress","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","_setPosition","subX","subY","tooltipWidth","tooltipHeight","openTooltip","closeTooltip","_tooltip","isTooltipOpen","_initTooltipInteractions","_tooltipHandlersAdded","_moveTooltip","_openTooltip","_addFocusListeners","_setAriaDescribedByOnLayer","toggleTooltip","_addFocusListenersOnLayer","moving","_openOnceFlag","DivIcon","bgPos","backgroundPosition","Default","updateWhenZooming","updateInterval","minNativeZoom","noWrap","keepBuffer","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","_loading","tileZoom","_clampZoom","_updateLevels","viewprereset","_invalidateAll","getTileSize","edgeZIndex","nextFrame","willPrune","fade","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","_setZoomTransform","_onCreateLevel","retain","_retainParent","_retainChildren","_removeTile","z2","coords2","animating","_setView","noPrune","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","noPruneRange","_isValidTile","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","referrerPolicy","_onTileRemove","noRedraw","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","tilePoint","tileLayer","TileLayerWMS","defaultWmsParams","wmsParams","realRetina","_crs","_wmsVersion","projectionKey","setParams","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","currentCenterPoint","topLeftOffset","_onViewPreReset","_postponeUpdatePaths","_onMouseMove","_handleMouseOut","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","_order","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_clear","_drawing","_fillStroke","clickedLayer","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","stroked","dashStyle","endcap","joinstyle","_setPath","SVG","_rootGroup","_svgSize","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","BoxZoom","_pane","overlayPane","_resetStateTimeout","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","_onMouseUp","_onKeyDown","_box","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_absPos","_prunePositions","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","worldWidth","newX1","newX2","newX","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","_setPanDelta","_setZoomDelta","_addHooks","_removeHooks","_focused","panDelta","_panKeys","_zoomKeys","newLatLng","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","_lastMousePos","_performZoom","d4","tapHold","tapTolerance","TapHold","_holdTimeout","_cancel","_isTapValid","_cancelClickPrevent","_simulateEvent","cancelClickPrevent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","_animRequest","moveFn","Projection","imageOverlay","rectangle","svgOverlay","videoOverlay","oldL","noConflict","$trimStart","minPts","distanceFunction","_euclideanDistance","_visited","_assigned","_datasetLength","_regionQuery","clusterId","_addToCluster","_expandCluster","pointId2","neighbors2","_mergeArrays","ordinaryToPrimitive","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","USE_FUNCTION_CONSTRUCTOR","PassedAsyncIteratorPrototype","_useTracking","_trackingHoC","$additionalItems","CancelablePromise","DefaultPeerConnectionManager","DefaultRoomV2","DefaultTransport","RoomV2","Transport","trackV2","cancellationError","transportOptions","onIced","connectEventPayload","deleteCount","insertCount","actualDeleteCount","actualStart","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","misc","AVEDEV","AVERAGEA","AVERAGEIF","average_range","average_count","AVERAGEIFS","cumulative","probability","successes","trials","RANGE","successes2","observed","xsqr","ChiSq","COLUMN","COLUMNS","CORREL","COUNTBLANK","COUNTIN","blanks","COUNTIF","COUNTIFS","COUNTUNIQUE","UNIQUE","DEVSQ","sumOfSquares","FISHER","FISHERINV","e2y","FORECAST","data_y","data_x","xmean","ymean","FREQUENCY","GAUSS","GEOMEAN","GROWTH","known_y","known_x","new_x","use_const","avg_x","avg_y","avg_xy","avg_xx","new_y","HARMEAN","INTERCEPT","KURT","LINEST","LOGEST","MAXA","arrayValuesToNumbers","MINA","currentItem","PEARSON","den1","den2","cleanFloat","uniques","PERMUT","PERMUTATIONA","PHI","PROB","quart","ROW","ROWS","RSQ","m3","SLOPE","STANDARDIZE","STDEVA","VARA","STDEVPA","VARPA","STEYX","lft","TRANSPOSE","mean_x","mean_y","s_x","s_y","TREND","new_data_x","linest","TRIMMEAN","qsa","Attr2MapOptions","__MapController","_Attr2MapOptions_","NgMapPool","exprStartSymbol","exprEndSymbol","mapEvents","addObject","centered","objectChanged","deleteObject","observeAttrSetObj","orgAttrs","noWatcher","attrsToObserve","getAttrsToObserve","observeAndSet","zoomToIncludeMarkers","customMarkers","maximumZoom","enableMaximumZoomCheck","initializeMap","lazyInitMap","getMapInstance","getControlOptions","groupMembers","showInfoWindow","hideInfoWindow","exprRegExp","geoCenter","getGeoLocation","geoLocationOptions","geoCallback","geoFallbackCenter","singleInfoWindow","addMap","mapInitialized","orgAttributes","lazyInit","idExpression","mapId","triggerResize","returnMapInstance","deleteMap","linkFunc","mapController","BicyclingLayer","bicyclingLayer","customControlEl","addDomListener","customControl","_NgMap_","CustomMarker","customMarkerDirective","_$timeout_","_$compile_","posPixel","orgHtml","varsToWatch","customMarker","firstElementChild","NavigatorGeolocation","updateRoute","directionsService","DirectionsService","travelMode","validKeys","waypoints","showDirections","DirectionsStatus","OK","setDirections","_NavigatorGeolocation_","panel","DirectionsRenderer","getDirectionsRenderer","setPanel","optionValue","toOptionValue","getMap","drawingManager","drawing","DrawingManager","drawingMode","drawingmode","drawingControl","drawingcontrol","drawingControlOptions","circleOptions","circleoptions","markerOptions","markeroptions","polygonOptions","polygonoptions","polylineOptions","polylineoptions","rectangleOptions","rectangleoptions","setDrawingMode","DynamicMapsEngineLayer","getDynamicMapsEngineLayer","FusionTablesLayer","MVCArray","infoWindow","InfoWindow","templatePromise","requestedTemplate","resolvedTemplate","__template","__open","getInfoWindow","infoWindows","lastInfoWindow","visibleOnMarker","markerId","kmlLayer","KmlLayer","getKmlLayer","savedHtml","preLinkFunc","mapsUrl","mapLazyLoadParams","mapLazyLoad","lazyLoadCallback","scriptEl","compileFunc","mapTypeObject","mapTypeName","mapTypes","mapDirective","MapsEngineLayer","getMapsEngineLayer","markerEvents","getMarker","_$parse_","initMethod","overlayMapTypeObject","overlayMapTypes","placesAutoComplete","Autocomplete","setTypes","setComponentRestrictions","shapeType","shapeOptions","shapeEvents","shapeName","GroundOverlay","streetViewPanorama","svpOptions","svpEvents","svp","StreetViewPanorama","getStreetView","getStreetViewPanorama","setStreetView","TrafficLayer","TransitLayer","MOZ_HACK_REGEXP","isoDateRE","GeoCoder","camelCaseFilter","jsonizeFilter","getJSON","preoutput","outputArray","getNumber","doNotConverStringToNumber","err2","capitalizedKey","weather","SymbolPath","attrValue","toLowercaseFunc","EventFunc","funcName","argsStr","argsExpr","MapTypeId","objName","geocodeFunc","Geocoder","geocode","GeocoderStatus","_$q_","GoogleMapsApi","mapInstances","notInUseMap","inUse","mapDiv","getDiv","findUnused","resetMapInstances","deleteMapInstance","_$document_","_$window_","mapControllers","styleProp","initMap","waitForMap","timeElapsed","theFirstController","mapCtrl","heatmapLayers","setMethod","setDefaultOptions","_GeoCoder_","_camelCaseFilter_","_NgMapPool_","getPanorama","StreetViewService","getPanoramaByLocation","StreetViewStatus","pano","setPanorama","panoId","enableCloseButton","setPano","StreetView","validateNextState","getUnexpectedInvocationParameterMessage","getStateName","_getStateName3","_getUnexpectedInvocationParameterMessage3","_validateNextState3","descriptionInitDict","seenIndex","menuAlign","menuRole","renderMenuOnMount","DropdownButton","childBsPrefix","renderOnMount","DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS","_lastStatsSaveTime","_lastStatsPublishTime","_processorInfo","_stats","_reemitEvent","_getEventData","_maybeEmitStats","_benchmark","outputFrameRate","averages","hasExcape","escapeMatcher","escapeReplacer","untilde","compilePointer","hasNextPart","trackingInfo","_withTrackingComponentDecorator","_trackEventMethodDecorator","drawVersion","Draw","drawLocal","undo","circlemarker","cont","simpleshape","editDisabled","removeDisabled","subtext","CREATED","EDITED","DELETED","DRAWSTART","DRAWSTOP","DRAWVERTEX","EDITSTART","EDITMOVE","EDITRESIZE","EDITVERTEX","EDITSTOP","DELETESTART","DELETESTOP","TOOLBAROPENED","TOOLBARCLOSED","MARKERCONTEXT","_overlayPane","_popupPane","popupPane","_cancelDrawing","_fireCreatedEvent","Poly","allowIntersection","repeatMode","drawError","touchIcon","guidelineDistance","maxGuideLineLength","nautic","showLength","maxPoints","_markers","_markerGroup","_poly","updateContent","_getTooltipText","_mouseMarker","_onMouseOut","_onTouch","_clearHideErrorTimeout","_cleanUpShape","_clearGuides","deleteLastVertex","_vertexChanged","addVertex","newLatLngIntersects","_showErrorTooltip","_errorShown","_hideErrorTooltip","_createMarker","completeShape","_shapeIsValid","_finishShape","_updateGuide","_currentLatLng","_updateTooltip","_updateFinishHandler","_updateRunningMeasure","_clickHandled","_touchHandled","_disableMarkers","_disableNewMarkers","_mouseDownOrigin","_endPoint","_calculateFinishDistance","_enableNewMarkers","_drawGuide","updatePosition","_guidesContainer","_updateGuideColor","_getMeasurementString","_measurementRunningTotal","GeometryUtil","isVersion07x","readableDistance","showAsError","_hideErrorTimeout","removeError","showArea","_area","readableArea","geodesicArea","SimpleShape","_endLabelText","_mapDraggable","_initialLabelText","_shape","_isDrawing","_drawShape","_isCurrentlyTwoClickDrawing","Touch","showRadius","Edit","_toggleMarkerHighlight","edited","_offsetMarker","editing","_updateLatLngs","_eachVertexHandler","_verticesHandlers","_initHandlers","updateMarkers","PolyVerticesEdit","_initMarkers","_onMarkerClick","_onContextMenu","_createMiddleMarker","_updatePrevNext","_origLatLng","_onMarkerDragStart","_onMarkerDrag","_fireEdit","_spliceLatLngs","_removeMarker","_updateIndexes","LatLngUtil","cloneLatLng","_editTooltip","_middleLeft","_getMiddleLatLng","_prev","_middleRight","moveIcon","resizeIcon","touchMoveIcon","touchResizeIcon","_unbindMarker","_moveMarker","_resizeMarkers","_createMoveMarker","_createResizeMarker","_bindMarker","_onMarkerDragEnd","_getCorners","_cornerIndex","_oppositeCorner","_toggleCornerMarkers","_repositionCornerMarkers","_getResizeMarkerPoint","editTooltip","touchExtend","TouchExtend","_onTouchCancel","_onTouchLeave","_touchEvent","_filterClick","_lastClick","_simulatedClick","_initInteractionLegacy","_onMouseClick","_fireMouseEvent","cloneLatLngs","formattedNumber","delimiters","segmentsIntersect","_checkCounterclockwise","_getProjectedPoints","_tooFewPointsForIntersection","_lineSegmentsIntersectsRange","newPointIntersects","_originalPoints","_toolbars","DrawToolbar","_toolbarEnabled","EditToolbar","addToolbar","removeToolbar","setDrawingOptions","drawControlTooltips","drawControl","Toolbar","_modes","_actionButtons","_activeMode","_toolbarClass","getModeHandlers","_toolbarContainer","_initModeHandler","_lastButtonIndex","_actionsContainer","_disposeButton","_handlerActivated","_handlerDeactivated","buttonIndex","_detectIOS","_showActionsToolbar","_hideActionsToolbar","_createActions","getActions","_visible","_singleLineLabel","selectedPathOptions","maintainColor","_selectedFeatureCount","Delete","removeAllLayers","_clearAllLayers","_checkDisabled","revertLayers","_featureGroup","_uneditedLayerProps","_hasAvailableLayers","_enableLayerEdit","_disableLayerEdit","_revertLayer","_backupLayer","_selectedPathOptions","previousOptions","_deletableLayers","_enableLayerDelete","_disableLayerDelete","_deletedLayers","_removeLayer","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","changedBits","_React$Component2","onUpdate","_proto2","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","MemoryRouter","Lifecycle","onMount","onUnmount","Prompt","_ref$when","cacheLimit","cacheCount","generatePath","compilePath","Redirect","computedMatch","_ref$push","prevLocation","cache$1","cacheLimit$1","cacheCount$1","_options$exact","_options$strict","_options$sensitive","_compilePath","pathCache","compilePath$1","context$1","isEmptyChildren","addLeadingSlash","createURL","staticHandler","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","_this$props$basename","_this$props$context","addBasename","_this$props2$basename","_this$props2$context","_this$props2$location","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","useHistory","useLocation","useParams","useRouteMatch","regexpExec","nativeMax","otherArgs","arrayFromConstructorAndList","toSorted","_updatedPriority","setError","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","charsAdded","strCopy","defineBuiltInAccessor","undefinedType","logMethods","bindMethod","traceForIE","replaceLoggingMethods","methodFactory","enableLoggingWhenConsoleArrives","defaultMethodFactory","realMethod","Logger","defaultLevel","currentLevel","getPersistedLevel","storedLevel","ignore","setLevel","SILENT","levelNum","levelName","persistLevelIfPossible","enableAll","TRACE","disableAll","initialLevel","defaultLogger","_loggersByName","getLoggers","PrototypeOfArrayIteratorPrototype","createlocaltracks_1","preflighttest_1","internals","createLocalAudioTrack","createLocalVideoTrack","propEach","geomEach","flattenEach","segmentEach","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","featureIndexCoord","multiPartIndexCoord","currentSegment","lineString","lineEach","coordAll","coordReduce","featureReduce","currentFeature","findPoint","findSegment","flattenReduce","geomReduce","currentGeometry","lineReduce","currentLine","propReduce","currentProperties","segmentReduce","MISSED_STICKY","newStates","transformStates","_lock","_reachableStates","newGraph","reachableFrom","_whenPromise","bracket","transitionFunction","hasLock","releaseLockCompletely","takeLock","isValidTransition","oldLock","takeLockSync","preemptionKey","nameOrKey","key_1","makeLock","tryTransition","createUnreachableError","here","there","isRejectionPromise","_transitionRejection","INVALID","ignored","errored","trimLeft","outputTexture","inputLocation","inputTexture","frameBuffer","useDropdownMenu","hasShownRef","_options$popperConfig","_options$usePopper","shouldUsePopper","menu","menuProps","childArgs","hasShown","DEFAULT_COMPARE","splay","printRow","isTail","Tree","_comparator","findStatic","visitor","minNode","maxNode","predecessor","presort","loadRecursive","mergedList","mergeLists","sortedListToBST","isInBbox","getBboxOverlap","lowerX","upperX","epsilon$1","EPSILON_SQ","CoordRounder","prevNode","rounder","xRounder","yRounder","splitter","resulterrbound","elen","Qnew","bvirt","enow","fnow","eindex","findex","hindex","vec","C1","C2","detleft","detright","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_0","u3","acx","bcx","acy","bcy","estimate","errbound","C1len","C2len","Dlen","orient2dadapt","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","verticalIntersection","SweepEvent","ptCmp","Segment","aPt","bPt","otherEvents","iMax","checkForConsuming","numEvents","evt1","consumedBy","evt2","otherSE","getAvailableLinkedEvents","ringOut","getLeftmostComparator","baseEvent","fillCache","linkedEvent","nextEvent","sine","cosine","asine","acosine","bsine","bcosine","segmentId","alx","leftSE","blx","arx","rightSE","aly","bly","ary","bry","aCmpBLeft","comparePoint","bCmpARight","bCmpALeft","aCmpBRight","windings","fromRing","leftPt","rightPt","cmpPts","replaceRightSE","newRightSE","isAnEndpoint","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","kross","intersection$1","alreadyLinked","newLeftSE","oldRightSE","newSeg","swapEvents","tmpEvt","consumer","consumee","prevInResult","_prevInResult","beforeState","_beforeState","afterState","multiPolys","_afterState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","isExterior","mp","multiPoly","mpsBefore","noBefores","noAfters","least","most","numMultiPolys","isJustSubject","mps","RingIn","geomRing","prevPoint","getSweepEvents","sweepEvents","PolyIn","geomPoly","exteriorRing","interiorRings","ringSweepEvents","jMax","MultiPolyIn","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","getGeom","prevPt","nextPt","isExteriorRing","iStart","iEnd","orderedPoints","_isExteriorRing","enclosing","enclosingRing","_enclosingRing","_calcEnclosingRing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","addInterior","ringGeom","MultiPolyOut","_composePolys","polyGeom","SweepLine","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","_splitSafely","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","moreGeoms","multipolys","mpA","sweepLine","prevQueueSize","xor","subjectGeom","clippingGeoms","$Date","isIntegralNumber","isSafeInteger","IS_MAP","IS_FILTER","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","filterReject","validateArgumentsLength","IS_IOS","setImmediate","clearImmediate","Dispatch","ONREADYSTATECHANGE","globalPostMessageDefer","importScripts","Processor_1","Benchmark_1","TwilioTFLite_1","support_1","webgl2_1","_inferenceDimensions","WASM_INFERENCE_DIMENSIONS","_assetsPath","_debounce","_deferInputResize","deferInputResize","inferenceDimensions","_inputResizeMode","inputResizeMode","isChromiumImageBitmap","_pipeline","pipeline","Pipeline","WebGL2","_currentMask","_inferenceInputCanvas","_inferenceInputContext","willReadFrequently","_inputFrameCanvas","_inputFrameContext","_maskBlurRadius","maskBlurRadius","MASK_BLUR_RADIUS","_maskCanvas","_maskContext","loadModel","MODEL_NAME","TFLITE_LOADER_NAME","TFLITE_SIMD_LOADER_NAME","isSimdEnabled","inputFrameBuffer","outputFrameBuffer","inferenceWidth","inferenceHeight","inputFrame","personMask","HTMLVideoElement","Canvas2D","_createWebGL2Pipeline","_createPersonMask","globalCompositeOperation","shouldDebounce","inferenceStage","resizeStage","resizePromise","personMaskBuffer","inference","false","true","_resizeInputFrame","ImageData","resizeWidth","resizeHeight","resizedInputFrameBitmap","resizeQuality","_isCancelable","_onCancel","_wrap","_minZoom","_maxZoom","latRange","scaleZoom","lngX","latY","yLat","xLng","zoomV","zoomFraction","superCtor","super_","TempCtor","fontcolor","flattenShallow","aIsArray","bIsArray","parseBool","parseMatrix","pnarr","d1900","byteToHex","bth","CardImg","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","Card","cardContext","cardHeaderBsPrefix","CardContext","Img","Subtitle","Footer","ImgOverlay","IS_END","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","NetworkQualityBandwidthStats","NetworkQualityFractionLostStats","NetworkQualityLatencyStats","bandwidth","latency","pv","hasTouchScreen","maxTouchPoints","openParenthesisPositions","substrings","openParenthesisPosition","getParenthesizedSubstrings","nameAndVersion","regExpFlagsDetection","regExpFlagsGetterImplementation","correct","Col","spans","_propValue$span","GaussianBlurBackgroundProcessor","_blurFilterRadius","BLUR_FILTER_RADIUS","blurFilterRadius","ReactReduxContext","batch","getBatch","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","previousState","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","wrappedComponentName","selectorFactoryOptions","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","shallowEqual","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","actionCreators","boundActionCreators","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","hasRunAtLeastOnce","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","handleSubsequentCalls","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","createStoreHook","useReduxContext","createDispatchHook","useStore","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","LocalVideoTrackStats","peerConnectionId","stateParams_1","UIRouterGlobals","CarouselItem","slide","indicators","onSlide","onSlid","prevIcon","prevLabel","nextIcon","nextLabel","defaultActiveIndex","CarouselFunc","onTouchStart","onTouchMove","onTouchEnd","nextDirectionRef","setDirection","_useState2","setPaused","_useState3","isSliding","setIsSliding","_useState4","renderedActiveIndex","setRenderedActiveIndex","activeChildInterval","numChildren","activeChildIntervalRef","useCommittedRef","nextActiveIndex","elementRef","nextWhenVisible","elementStyle","slideDirection","orderClassName","directionalClassName","touchStartXRef","touchDeltaXRef","touchUnpauseTimeout","touchDeltaX","shouldPlay","intervalHandleRef","_activeChildIntervalR","indicatorOnClicks","_child","Carousel","Caption","CarouselCaption","ClusterInit","mandist","maxit","idxs","conv","vlen","_idxs","_j2","vsum","vect","_j3","ksj","sumj","oldj","_h2","_j4","_j5","memoizeCapped","FUNCTION_NAME_EXISTS","nameRE","$map","tryDateObject","StateObject","stateDecl","isStateClass","LocalParticipantSignaling","LocalParticipantV2","_bandwidthProfile","_bandwidthProfileRevision","_removeListeners","_LocalTrackPublicationV2","_publishedRevision","_signalingRegion","bandwidthProfileRevision","signalingRegion","setSignalingRegion","setBandwidthProfile","didUpdate","setAudioProcessors","getParameters","setParameters","publicationState","localTrackPublicationV2","_createLocalTrackPublicationSignaling","getPublication","_removeListener","removeClone","setNetworkQualityConfiguration","setPublisherHint","trackPub","$isFinite","nativeToExponential","ROUNDS_PROPERLY","scriptpath","urlArgs","scripts","$script","idOrDone","optDone","idOrDoneIsDone","loopFn","dset","missing","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","psuedoElement","ownerWindow","isTransform","routerActions","CALL_HISTORY_METHOD","onLocationChanged","updateLocation","DOMIterables","DOMTokenListPrototype","ArrayIteratorMethods","ArrayValues","handlePrototype","COLLECTION_NAME","isUpper","localMediaRestartDeferreds","playPausedElementsIfNotBackgrounded","_isStarted","_playPausedElementsIfNotBackgrounded","_shouldShimAttachedElements","_MediaStream","_createElement","onended","_attach","_selectElement","onUnintentionallyPaused","playIfPausedAndNotBackgrounded","origPause","origPlay","unShim","shimMediaElement","_getAllAttachedElements","_detachElements","_detachElement","DataTransport","_dataChannel","_messageQueue","alignDirection","alignPropType","sm","showProps","isNavbar","alignClasses","_setPrototypeOf","expandingExpr","expanding","expandedExpr","collapsingExpr","collapsing","collapsedExpr","cssTo","getScrollFromElement","expandDone","collapseDone","uibCollapse","shouldCollapse","closeOthers","accordionConfig","openGroup","addGroup","groupScope","removeGroup","heading","cardClass","setHeading","accordionCtrl","openClass","toggleOpen","headingId","cardId","accordionGroupCtrl","uibAccordionTransclude","closeable","dismissOnTimeout","activeClass","toggleEvent","buttonConfig","buttonsCtrl","uncheckableExpr","uibUncheckable","uibBtnRadio","uncheckable","getTrueValue","getCheckboxValue","btnCheckboxTrue","btnCheckboxFalse","currentInterval","isPlaying","slides","SLIDE_DIRECTION","destroyed","setActive","findSlideIndex","resetTimer","restartTimer","timerFn","addSlide","$currentTransition","getCurrentIndex","removeSlide","nextSlide","currentIdx","goNext","indexOfSlide","isPrevDisabled","isNextDisabled","noPause","noTransition","carouselCtrl","beforeAddClass","directionClass","removeClassFn","beforeRemoveClass","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","constructLiteralFormatter","literalIdx","endIdx","constructFormatterFromIdx","currentPosStr","MONTH","SHORTMONTH","DAY","SHORTDAY","STANDALONEMONTH","getParser","overrideParser","baseDate","quoteIndex","inLiteral","createParser","datesetter","timesetter","toTimezone","fromTimezone","ON_REGEXP","IS_REGEXP","linkedScopes","expToData","onExpMatches","uibIsClass","onExp","exps","compareWithExp","watchFn","compareWithVal","newActivated","lastActivated","addForExp","removeScope","removedScope","newWatchScope","datepickerMode","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","maxDate","maxMode","minDate","minMode","monthColumns","shortcutPropagation","showWeeks","yearColumns","yearRows","datepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","dateParser","watchListeners","setMode","datepickerOptions","startingDay","FIRSTDAYOFWEEK","refreshView","ngDisabled","dateObject","activeDate","activeDateId","ngModelCtrl_","extractOptions","initDate","selectedDt","_refreshView","activeDt","createDateObject","customClass","dateDisabled","toggleMode","getDaysInMonth","getISO8601WeekNumber","checkDate","getDates","firstDayOfMonth","numDisplayedFromPreviousMonth","firstDate","thursdayIndex","numWeeks","curWeek","date2","_date1","_date2","yearHeaderColspan","getStartingYear","yearpickerInit","datepickerCtrl","SCROLLBAR_WIDTH","BODY_SCROLLBAR_WIDTH","OVERFLOW_REGEX","PLACEMENT_REGEX","BODY_REGEX","getRawNode","isStaticPositioned","bodyElem","scrollElem","scrollbarPadding","elemStyle","widthOverflow","originalRight","heightOverflow","originalBottom","includeHidden","includeSelf","documentEl","excludeStatic","spStyle","includeMagins","elemOffset","parentOffset","includeMargins","elemBCR","verticalMargin","horisontalMargin","useDocument","includePadding","offsetBCR","offsetParentBCR","parsePlacement","autoPlace","positionElements","hostElem","targetElem","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","positionArrow","isTooltip","innerElem","arrowElem","arrowCss","arrowElemOffset","aHW","aHH","borderProp","borderRadiusProp","altInputFormats","clearText","closeOnDateSelection","closeText","currentText","datepickerPopup","datepickerPopupTemplateUrl","datepickerTemplateUrl","html5Types","onOpenFocus","showButtonBar","$position","datepickerPopupConfig","$datepickerPopupLiteralWarning","dateFormat","popupEl","datepickerEl","scrollParentEl","$popup","isHtml5DateInput","parseDateString","documentClickBind","dpContainsTarget","popupContainsTarget","inputKeydownBind","dpElement","popupPlacement","_ngModel_","datepickerAppendToBody","uibDatepickerPopup","newDateFormat","debounceTime","createNew","hasKey","appendToOpenClass","$$multiMap","openScope","openedContainers","isOnlyOpen","dropdownScope","openedDropdowns","toClose","dropdown","closeDropdown","keybindFilter","dropdownToClose","getAutoClose","getToggleElement","dropdownElement","getDropdownElement","dropdownElementTargeted","toggleElementTargeted","focusToggleElement","isKeynavEnabled","focusDropdownEntry","dropdownConfig","uibDropdownService","templateScope","getIsOpen","setIsOpen","toggleInvoker","keynavEnabled","removeDropdownMenu","dropdownMenu","keyboardNav","wasOpen","dropdownAppendTo","appendToEl","dropdownAppendToBody","rightalign","appendOffset","openContainer","dropdownOpenClass","hasOpenClass","dropdownMenuTemplateUrl","tplContent","newEl","dropdownCtrl","dropdownNested","tplUrl","toggleDropdown","openDropdown","removeTop","setResolver","invocables","resolves","resolveIter","$modalStack","backdropClass","modalRenderDeferObj","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","modal","getTop","dismiss","$isRendered","animationPromise","modalRendered","inputWithAutofocus","modalAnimation","uibModalAnimationClass","$$stackedMap","$uibPosition","backdropDomEl","backdropScope","OPENED_MODAL_CLASS","openedWindows","openedClasses","topModalIndex","previousTopOpenedModal","ARIA_HIDDEN_ATTRIBUTE_NAME","backdropIndex","topBackdropIndex","opened","removeModalWindow","modalInstance","elementToReceiveFocus","modalWindow","appendToElement","modalDomEl","removeAfterAnimate","modalScope","modalBodyClass","openedClass","areAnyOpen","toggleTopWindowClass","closedDeferred","toggleSwitch","domEl","asyncDeferred","asyncPromise","afterAnimating","keydownListener","loadFocusElementList","focusChanged","isFocusInFirstItem","isModalFocused","focusLastFocusableElement","isFocusInLastItem","focusFirstFocusableElement","broadcastClosing","resultOrReason","closing","unhideBackgroundElements","hiddenEl","newHiddenCount","newBackdropIndex","modalOpener","renderDeferred","currBackdropIndex","angularDomEl","windowTemplateUrl","ariaLabelledBy","ariaDescribedBy","windowClass","$$topModalIndex","applyAriaHidden","getSiblings","elemIsAlreadyHidden","ariaHiddenCount","$$uibDestructionScheduled","dismissAll","topModal","modalDomE1","getClientRects","$modalProvider","$uibResolve","$modal","promiseChain","getPromiseChain","templateAndResolvePromise","samePromise","modalResultDeferred","modalOpenedDeferred","modalClosedDeferred","modalRenderDeferred","rendered","resolveWithTemplate","tplAndVars","providedScope","$close","$dismiss","ctrlInstance","ctrlInstantiate","ctrlLocals","constructLocals","instanceOnScope","injectable","$resolve","$uibModalInstance","setNumPages","numPages","_watchers","itemsPerPage","totalPages","calculateTotalPages","updatePage","newTotal","oldTotal","selectPage","noPrevious","noNext","uibPaging","uibPagerConfig","previousText","nextText","paginationCtrl","uibPaginationConfig","forceEllipses","boundaryLinkNumbers","pageLabel","$page","makePage","boundaryLinks","directionLinks","pages","currentPage","startPage","endPage","isMaxSized","previousPageSet","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","lastText","placementClassPrefix","popupCloseDelay","useContentExp","triggerMap","globalOptions","setTriggers","openedTooltips","keypressListener","ttType","defaultTriggerShow","getTriggers","startSym","endSym","tElem","tooltipLinker","tooltipCtrl","tooltipLinkedScope","transitionTimeout","showTimeout","hideTimeout","positionTimeout","adjustmentTimeout","lastPlacement","hasEnableExp","ttScope","repositionScheduled","isOpenParse","contentParse","observers","positionTooltip","ttPosition","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","closeDelay","prepareTooltip","cancelShow","assignIsOpen","removeTooltip","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","tooltipTemplateTranscludeScope","parseAsResourceUrl","uibTooltipTemplateTransclude","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","progressConfig","getMaxOrDefault","maxParam","addBar","recalculatePercentage","totalPercentage","removeBar","progressCtrl","stateOn","stateOff","enableReset","ratingConfig","tmpTitles","ratingStates","buildTemplateObjects","newViewValue","onKeydown","ratingCtrl","oldIndex","findTabIndex","previousSelected","onDeselect","$selectedIndex","addTab","newActiveIndex","removeTab","newActiveTabIndex","justified","tabsetCtrl","$transcludeFn","uibTabContentTransclude","isTabHeading","headingElement","hourStep","minuteStep","secondStep","showMeridian","showSeconds","meridians","readonlyInput","mousewheel","arrowkeys","showSpinners","timepickerConfig","hoursModelCtrl","minutesModelCtrl","secondsModelCtrl","padHours","tabindex","hoursInputEl","minutesInputEl","secondsInputEl","setupMousewheelEvents","setupArrowkeyEvents","setupInputEvents","noIncrementHours","incrementedSelected","addMinutes","noDecrementHours","decrementedSelected","noIncrementMinutes","noDecrementMinutes","noIncrementSeconds","addSeconds","noDecrementSeconds","noToggleMeridian","getHoursFromTemplate","getMinutesFromTemplate","noPad","keyboardChange","makeValid","updateTemplate","invalidHours","invalidMinutes","invalidSeconds","addSecondsToSelected","modelIsEmpty","isScrollingUp","incrementHours","decrementHours","incrementMinutes","decrementMinutes","incrementSeconds","decrementSeconds","updateHours","updateMinutes","updateSeconds","getSecondsFromTemplate","toggleMeridian","uibTimepickerConfig","timepickerCtrl","TYPEAHEAD_REGEXP","itemName","viewMapper","modelMapper","originalScope","$$debounce","typeaheadParser","HOT_KEYS","typeaheadMinLength","waitTime","typeaheadWaitMs","typeaheadEditable","hasFocus","isLoadingSetter","typeaheadLoading","isSelectEvent","typeaheadShouldSelect","onSelectCallback","typeaheadOnSelect","isSelectOnBlur","typeaheadSelectOnBlur","isNoResultsSetter","typeaheadNoResults","inputFormatter","typeaheadInputFormatter","typeaheadAppendToBody","typeaheadAppendTo","focusFirst","typeaheadFocusFirst","selectOnExact","typeaheadSelectOnExact","isOpenSetter","typeaheadIsOpen","showHint","typeaheadShowHint","parsedModel","parserResult","uibTypeahead","offDestroy","inputsContainer","hintInputElem","popupId","popUpEl","typeaheadTemplateUrl","typeaheadPopupTemplateUrl","resetMatches","activeIdx","getMatchId","getMatchesAsync","onCurrentRequest","recalculatePosition","inputIsExactMatch","debounceUpdate","firstLabel","fireRecalculating","debouncedRecalculate","moveInProgress","cancelPreviousTimeout","$setModelValue","$item","$model","$label","typeaheadFocusOnSelect","shouldSelect","dismissClickHandler","_modelCtrl","scheduleSearchWithTimeout","candidateViewValue","popupTemplateUrl","isDropdownOpen","matchIdx","selectActive","selectMatch","tplEl","isSanitizePresent","matchItem","containsHtml","$$uibCarouselCss","$$uibCommonCss","$$uibDatepickerCss","$$uibPositionCss","$$uibDatepickerpopupCss","$$uibTooltipCss","$$uibTimepickerCss","$$uibTypeaheadCss","origSymbol","hasSymbolSham","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isStatic","_useContext","FormCheckLabel","FormCheck","_ref$inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","propCustom","innerFormContext","hasLabel","Input","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormText","FormRow","FormImpl","validated","errorSubclass","Subclass","ajv","getStatValues","statName","reportTypes","makeStandardCandidateStats","altKeys","keysToLookFor","publisherStats","subscriberStats","trackRoundTripTime","candidatePairs","activeCandidatePairStatsFound","extractSelectedActiveCandidatePair","arrayA","arrayB","FLAGS_GETTER_IS_CORRECT","INDICES_SUPPORT","ignoreCase","hasIndices","segmentationMaskLocation","stepLocation","radiusLocation","offsetLocation","sigmaTexelLocation","sigmaColorLocation","sigmaTexel","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","argv","cwd","chdir","umask","makeEventKey","nvd3Utils","defaultConfig","extended","refreshDataOnly","deepWatchOptions","deepWatchData","deepWatchDataDepth","debounceImmediate","chartType","configureEvents","configureWrapper","defaultWrapper","wrapElement","dataWatchFn","oldData","isReady","updateWithOptions","refreshWithTimeout","updateWithTimeout","clearElement","updateWithData","resizeHandler","zoomRender","graphs","newConfig","oldConfig","callNow","fixDomain","d3zoom","unzoomed","x_boundary","y_boundary","useFixedDomain","useNiceScale","horizontalOff","verticalOff","unzoomEventType","domains","mapValues","NgComponent","__isFirstRender","didPropsChange","_nextProps","_nextState","RESOLVE_HOOK_PRIORITY","eagerResolvePath","registerEagerResolvePath","lazyResolveState","subContext","registerLazyResolveState","resolveRemaining","registerResolveRemaining","endOfDay","earcut","holeIndices","invSize","hasHoles","outerLen","outerNode","linkedList","steiner","getLeftmost","eliminateHole","filterPoints","eliminateHoles","earcutLinked","insertNode","again","ear","zOrder","prevZ","nextZ","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","maxZ","locallyInside","isValidDiagonal","splitPolygon","hole","hx","qx","mx","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","middleInside","o3","o4","onSegment","polygonArea","trianglesArea","holeIndex","targetLength","HashLocationService","trimHashVal","globalLocales","MINIMAL_RAW_EN_LOCALE","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","allRawLocales","rawLocaleMap","rawLocale","buildLocale","inputSingular","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","createPlugin","premiumReleaseDate","reducers","isLoadingFuncs","contextInit","viewPropsTransformers","externalDefTransforms","viewContainerAppends","namedTimeZonedImpl","optionChangeHandlers","scrollGridImpl","propSetHandlers","combineHooks","hooks0","hooks1","StandardTheme","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","overrideConfig","queryProp","theComponent","superType","superDef","rawOptions","buildViewDef","parseViewConfigs","parseViewConfig","createViewHookComponent","viewProps","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","durationInput","singleUnitOverrides","durationInputMap","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","computeEventSourcesLoading","addSources","eventSourceHash","fetchDirtySources","fetchSourcesByIds","doesSourceNeedRange","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","errorHandled","excludeStaticSources","ignoreRange","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionRes","parseSection","sectionStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","textFallback","prevOrNext","navUnit","ViewImpl","viewTitle","activeStart","activeEnd","currentStart","currentEnd","arrayEventSourcePlugin","funcEventSourcePlugin","jsonFeedEventSourcePlugin","requestParams","customRequestParams","buildRequestParams","SIMPLE_RECURRING_REFINERS","startRecur","endRecur","handleEventSources","unfoundSources","inputFound","unfoundSource","newInput","globalPlugins","recurringData","clippedFramingRange","eventDateEnv","calendarDateEnv","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","TaskRunner","runTaskOption","delayedRunner","completedTasks","runTask","buildTitle","buildTitleFormat","CalendarNowManager","resetListeners","nowInput","nowFn","nowAnchorDate","nowAnchorQueried","resetListener","CalendarDataManager","computeCurrentViewData","_computeCurrentViewData","buildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","pluginDefs","currentPluginIds","addDefs","pluginName","currentId","buildBuildPluginHooks","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsForRefining","optionsForHandling","optionsData","computeOptionsData","currentViewType","currentViewData","calendarContext","initialDateInput","getInitialDate","rawSources","rawSource","parseInitialSources","initEventSources","renderableEventStore","contextAndState","computeIsLoading","changedOptionNames","reduceDynamicOptionOverrides","reduceViewType","reduceCurrentDate","dp","reduceDateProfile","receiveResponse","reduceEventSources","eventUiSingleBase","eventUiBySource","wasLoading","onAction","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","onData","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","processRawCalendarOptions","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","isLoadingFunc","viewName","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","groupClassName","startContent","endContent","extraClassName","forceLtr","centerContent","ViewHarness","updateAvailableWidth","labeledById","EventClicking","handleSegClick","hasUrlContainer","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","interactions","TheInteractionClass","resizeRunner","viewAspectRatio","viewVGrow","viewContext","toolbarProps","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","Calendar","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","handleData","handleRenderRequest","setClassNames","wasRendering","pauseRendering","resumeRendering","CSSRuleList","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","$toWellFormed","toWellFormed","TO_STRING_CONVERSION_BUG","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","encodeChunk","lookup","tripletToBase64","urlMatcherFactory_1","urlRouter_1","view_1","stateRegistry_1","stateService_1","globals_1","urlService_1","_routerInstance","locationService","locationConfig","UrlService","locationServiceStub","locationConfigStub","_disposed","_disposables","viewService","TransitionService","UrlRouter","disposable","pluginInstance","_publicationsToTrackSenders","_trackSendersToPublications","trackPublication","_inArray","_removeFrom","_pushTo","propNames","objCopy","pushR","assertFn","predicateOrMap","errMsg","maxArrayLen","_extend","toObj","_equals","tup","fnNames","latebind","bindFunction","defaultsList","_defaultsList","defaultVals","allTrueR","anyTrueR","flattenR","unnest","assertMap","keyValTuple","mixinRemoteMediaTrack","NullObserver","enableDocumentVisibilityTurnOff","IntersectionObserver","_enableDocumentVisibilityTurnOff","_documentVisibilityTurnOffCleanup","_invisibleElements","_elToPipCallbacks","_elToPipWindows","_turnOffTimer","_resizeObserver","maybeUpdateDimensionHint","_intersectionObserver","shouldSetRenderHint","isIntersecting","maybeUpdateEnabledHint","switchOn","switchOff","setContentPreferences","contentPreferences","_unObservePip","pipCallbacks","onEnterPip","onLeavePip","_observePip","_onEnterPip","_onLeavePip","onResizePip","_onResizePip","videoEl","pipWindow","pictureInPictureWindow","removeVideoTrack","setupDocumentVisibilityTurnOff","remoteVideoTrack","visibleElements","pipElements","totalElements","el1","el2","RecordingV2","is_recording","unicodeSets","$padStart","CONVERT_TO_STRING","NetworkQualityMonitor","manager","_factories","_manager","remoteLevels","monitor","reportsOrNullPromises","reportsOrNull","reportOrNull","_window","stylesCreated","cancelFrame","mozCancelAnimationFrame","resetTriggers","__resizeTriggers__","contract","lastElementChild","expandChild","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","animationStyle","tempParentDiv","createStyles","notImplemented","fnname","overRest","relativeTimeWithSingular","fontsize","toggleProps","TFLITE_WORKER_NAME","elementLen","targetIndex","sourceIndex","nativeDateToISOString","$SyntaxError","SyntaxError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasProto","needsEval","TypedArray","INTRINSICS","Atomics","BigInt64Array","BigUint64Array","EvalError","FinalizationRegistry","SharedArrayBuffer","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","ButtonGroup","baseClass","isStorageSupported","_storageProvider","providerWebStorage","storageKeyPrefix","setKeyPrefix","serializer","deserializer","setSerializer","setDeserializer","_last$storage","prefixLength","webStorage","$storage","$sync","$reset","temp$storage","$supported","_handled","_immediateFn","_unhandledRejectionFn","_clearFn","unref","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","PDFNet","skipPDFNetWebViewerWarning","WebViewer","getCompleteInstance","_validateOptions","webviewerServerURL","pdftronServer","fullAPI","forceClientSideInit","Options","uiPath","messageHandler","licenseKey","_correctRelativePath","autoCreate","enableAzureWorkaround","isAdminUser","isReadOnly","initialDoc","_create","_trigger","_createViewer","enableRedaction","_notSupportedMobile","selectedType","isMobileDevice","documentType","_testWebAssembly","mobileRedirect","_getHTML5OptionsURL","_testHTML5","xdomainProxyUrl","isSameOrigin","_testCORS","_createHTML5","_createHTML5Mobile","_viewerLoaded","encryption","decrypt","decryptOptions","documentId","extension","loadDocument","backendType","pdfBackend","preloadWorker","streaming","externalPath","enableAnnotations","disabledElements","serverUrl","serverUrlHeaders","disableI18n","enableOfflineMode","startOffline","enableReadOnlyMode","hideAnnotationPanel","disableToolGroupReordering","annotationUser","annotationAdmin","showLocalFilePicker","enableFilePicker","disableVirtualDisplayMode","enableMeasurement","showToolbarControl","showPageHistoryButtons","notesInLeftPanel","autoExpandOutlines","enableAnnotationNumbering","azureWorkaround","enableOptimizedWorkers","useDownloader","disableWebsockets","disableStreaming","loadAsPDF","workerTransportPromise","fallbackToClientSide","singleServerMode","accessibleMode","disableLogs","enableViewStateAnnotations","disableFlattenedAnnotations","highContrastMode","selectAnnotationOnCreation","autoFocusNoteOnAnnotationSelection","disableMultiViewerComparison","showInvalidBookmarks","disableObjectURLBlobs","setInstanceData","frameBorder","assetPath","frameborder","closeDocument","loadListener","setCompleteInstance","completeInstance","WebAssembly","additionalTranslations","preloadPDFWorker","documentXFDFRetriever","Tools","iframeWindow","UI_NAMESPACE_KEY","CORE_NAMESPACE_KEY","documentViewer","setDocumentXFDFRetriever","setTranslations","language","translations","WorkerTypes","OFFICE","LEGACY_OFFICE","PDF","CONTENT_EDIT","BackendTypes","ASM","WASM","JS_WORKER","THREADED_WASM","dragActiveClassName","dragActiveStyle","maxFileSize","minFileSize","onDragEnter","onDragLeave","sizeReadable","onDrop","Backoff","_jitter","_factor","_attempts","_timeoutID","backoff","htmlSize","plaintext","_classes2","_classes3","_classes4","_classes5","RBush","pointInPolygon","concaveman","concavity","lengthThreshold","cull","compareByX","fastConvexHull","compareMinX","compareMinY","segTree","updateBBox","sqConcavity","sqLenThreshold","sqLen","getSqDist","maxSqLen","findCandidate","concave","maxDist","compareDist","sqSegDist","sqSegBoxDist","noIntersections","sqSegSegDist","sN","tN","ux","uy","wx","wy","sD","tD","captureDimensions","captureFrameRate","flagsBound","toSpliced","redactingEmail","_str","smallWords","mightBeEmail","redacted","GaussianBlurBackgroundProcessor_1","VirtualBackgroundProcessor_1","version_1","Twilio","VideoProcessors","matchStr","USER","PNG","JPG","IMAGE_TYPES","videoElement","numberOfMaxResolutionTry","windowURL","getWindowURL","getNavigatorMediaDevices","getIdealConstraints","_gotStream","getMaxResolutionConstraints","_getStreamDevice","_getStreamDeviceMaxResolution","_setSettings","_setVideoSrc","stopCamera","sizeFactor","imageType","isImageMirror","getDataUri","FACING_MODES","mozURL","msURL","mozGetUserMedia","webkitGetUserMedia","getSupportedConstraints","facingMode","advanced","getDefaultOptions","cloneArrayBuffer","createMediaStreamSource","analyser","createAnalyser","fftSize","timeoutDidFire","doDetectSilence","getByteTimeDomainData","urlType","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","arrayDefaults","arrayParamNomenclature","arrayMode","squash","defaultPolicy","getSquashPolicy","configuredKeys","getReplace","params_1","values1","values2","isDefaultValue","replaceSpecialValues","_defaultValueCache","DefaultBackoff","DefaultRTCIceCandidate","DefaultRTCPeerConnection","DefaultRTCSessionDescription","getStatistics","DEFAULT_ICE_GATHERING_TIMEOUT_MS","DEFAULT_SESSION_TIMEOUT_SEC","iceRestartBackoffConfig","addOrRewriteNewTrackIds","addOrRewriteTrackIds","createCodecMapForMediaSection","disableRtx","enableDtxForOpus","filterLocalCodecs","removeSSRCAttributes","revertSimulcast","setCodecPreferences","setSimulcast","IceBox","DefaultIceConnectionMonitor","DataTrackReceiver","MediaTrackReceiver","workaroundIssue8329","updating","getConfiguration","enableDscp","chromeSpecificConstraints","googDscp","_appliedTrackIdsToAttributes","_dataChannels","_dataTrackReceivers","_descriptionRevision","_didGenerateLocalCandidates","_enableDscp","_isChromeScreenShareTrack","_iceGatheringFailed","_iceGatheringTimeout","_handleIceGatheringTimeout","_iceRestartBackoff","_isIceConnectionInactive","_isIceLite","_isIceRestartBackoffInProgress","_isRestartingIce","_lastStableDescriptionRevision","_localCandidates","_localCodecs","_localCandidatesRevision","_localDescriptionWithoutSimulcast","_localDescription","_localUfrag","_eventObserver","_remoteCodecMaps","_rtpSenders","_rtpNewSenders","_iceConnectionMonitor","_mediaTrackReceivers","_needsAnswer","_negotiationRole","_onEncodingParametersChanged","updateEncodingParameters","_preferredAudioCodecs","_preferredVideoCodecs","_shouldApplyDtx","dtx","_queuedDescription","_iceReconnectTimeout","_recycledTransceivers","_replaceTrackPromises","_remoteCandidates","_setCodecPreferences","_setSimulcast","_revertSimulcast","_RTCIceCandidate","_RTCPeerConnection","_RTCSessionDescription","_shouldOffer","_shouldRestartIce","_trackIdsToAttributes","_trackMatcher","_mediaTrackSenderToPublisherHints","_handleConnectionStateChange","_handleDataChannelEvent","_handleIceCandidateEvent","_handleIceConnectionStateChange","_handleIceGatheringStateChange","_handleSignalingStateChange","_handleTrackEvent","simulcast","adaptiveSimulcastEntry","_maybeUpdateEncodings","trackReplaced","_isAdaptiveSimulcastEnabled","_updateEncodings","screenShareActiveLayerConfig_1","scaleResolutionDownBy","activeLayerConfig","trackPixels_1","activeLayersInfo","maxActiveLayers","activeLayers_1","_addIceCandidate","_addIceCandidates","_addOrUpdateTransceiver","recycledTransceivers","localCodec","remoteCodecMap","takeRecycledTransceiver","oldTrackId","replaceTrack","_checkIceBox","ufrag","getUfrag","setUfrag","_answer","_setRemoteDescription","updatedSdp","_shouldApplySimulcast","sdpWithoutSimulcast","_setLocalDescription","_updateDescription","_maybeReoffer","errorToThrow","_publishMediaWarning","dataTrackReceiver","_handleGlare","didReoffer","_offer","isIceConnectedOrComplete","_initiateIceRestartBackoff","iceGatheringState","signaledTrackId","trackReceiver","_initiateIceRestart","shouldReoffer","senders_1","shouldOffer","sendersOfKind","isSenderOfKind","hasDataTrack","hasApplicationMediaSection","iceRestart","_getMediaTrackSenderId","mediaTrackSender","_addOrRewriteLocalTrackIds","activeTransceivers","assignedTransceivers","sdp1","unassignedTransceivers","newTrackIdsByKind","sdp2","_rollbackAndApplyOffer","publishWarning","negotiationCompleted","revertForAll","sdpWithoutSimulcastForNonVP8MediaSections","_updateIce","iceState","addDataChannel","_handleQueuedPublisherHints","_setPublisherHint","layerIndex","layer_index","addSender","localDescriptionRevision","removeDataChannel","removeSender","updates","rewriteTrackId","rewriteLocalTrackId","rewriteTrackIds","rtcpMuxPolicy","shouldRecycleTransceiver","updateRecycledTransceivers","updateLocalCodecs","codecMap","updateRemoteCodecMaps","maxBitrates","maxBitrate","removeMaxBitrate","setMaxBitrate","networkPriority","FirefoxRTCSessionDescription","updateTracksToSSRCs","FirefoxRTCPeerConnection","_initiallyNegotiatedDtlsRole","_rollingBack","peerIdentity","overwriteWithInitiallyNegotiatedDtlsRole","saveInitiallyNegotiatedDtlsRole","rollback","onceRolledBack","dtlsRole","baseIsArguments","cycles","aobj","bobj","quickselect","_maxEntries","_minEntries","_initFormat","findItem","equalsFn","calcBBox","distBBox","destNode","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","enlargedArea","multiSelect","_all","childBBox","nodesToSearch","_build","_splitRoot","tmpNode","_insert","goingUp","_condense","right2","right3","N2","N1","_chooseSubtree","targetNode","enlargement","minArea","minEnlargement","isNode","insertPath","_split","_adjustParentBBoxes","_chooseSplitAxis","splitIndex","_chooseSplitIndex","bbox1","bbox2","minOverlap","_allDistMargin","leftBBox","rightBBox","compareArr","isBrowserSupported","getRawTag","VALID_GROUPS","VALID_LEVELS","connectTimestamp","publisherPayload","isArrayIteratorMethod","Result","ResultPrototype","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","callFn","publishPriority","$reduce","TrackSwitchOffSignaling","_setTrackSwitchOffUpdates","tracksSwitchedOff","tracksSwitchedOn","TO_PRIMITIVE","pref","exoticToPrim","noisecancellationimpl_1","workaround180748","createLocalTrackCalls","isAudioVideoAbsent","fullOptions","logComponentName","localTrackOptions","extraLocalTrackOptions","mediaStreamConstraints","workaroundWebKitBug180748","mediaStreamTracks","isCreatedByCreateLocalTracks","workaroundWebKitBug1208516","getVideoTracks","applyNoiseCancellation","nativeKeysIn","isProto","recalc","scrollDiv","replaceClassName","origClass","classToRemove","isOverflowing","bodyIsOverflowing","BLACKLIST","ariaHidden","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","isContainerOverflowing","containerIndexFromModal","overflowing","setContainerStyle","containerState","removeContainerStyle","modalIdx","containerIdx","dialog","hideSiblings","showSiblings","_data$modals","isTopModal","Modal","_ref$role","_ref$backdrop","_ref$keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerRef","containerClassName","_ref$onHide","modalManager","setDialogRef","setBackdropRef","useModalManager","prevShow","lastFocusRef","removeKeydownListenerRef","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","_lastFocusRef$current","useWillUnmount","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","preventScroll","Selector","BootstrapModalManager","_ModalManager","adjustAndStore","adjust","_css","_css2","ModalDialog","contentClassName","dialogClass","ModalHeader","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","backdropClassName","propsManager","modalStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","_modal","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","handleDialogMouseDown","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","onMouseUp","onMouseDown","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","reFlags","_filter","_ufrag","oldIceState","oldCandidates","allowAdditionalItems","asNumber","ADDITIONAL_PROPERTY_FLAG","ADDITIONAL_PROPERTIES_KEY","ALL_OF_KEY","ANY_OF_KEY","CONST_KEY","DEFAULT_KEY","DEPENDENCIES_KEY","ENUM_KEY","ERRORS_KEY","ID_KEY","IF_KEY","NAME_KEY","ONE_OF_KEY","REQUIRED_KEY","SUBMIT_BTN_OPTIONS_KEY","REF_KEY","RJSF_ADDITIONAL_PROPERTIES_FLAG","ROOT_SCHEMA_PREFIX","UI_WIDGET_KEY","UI_OPTIONS_KEY","UI_GLOBAL_OPTIONS_KEY","getUiOptions","canExpand","expandable","createErrorHandler","addError","formObject","splitKeyElementFromObject","findSchemaDefinitionRecursive","recurseList","decodedRef","jsonpointer","firstRef","restRefs","circularPath","theRef","findSchemaDefinition","initAccum","reWhitespace","reTrimStart","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","MAX_ARRAY_LENGTH","remainder","getOptionMatchingSimpleDiscriminator","discriminatorField","simpleDiscriminatorMatch","requiresAnyOf","augmentedSchema","shallowClone","getFirstMatchingOption","isArrLike","getDiscriminatorFieldFromSchema","maybeString","guessType","getSchemaType","obj2","rawFormData","getAllPermutationsOfXxxOf","listOfLists","permutations","resolveReference","expandAllBranches","updatedSchema","resolveAllReferences","childrenLists","updatedProps","resolvedSchemas","updatedSchemas","resolveDependencies","allOfSubschema","resolveSchema","otherwise","resolvedSchemaLessConditional","conditionValue","conditionalSchema","resolveCondition","restOfSchema","withContainsSchemas","withoutContainsSchemas","resolvedSchemaWithoutAllOf","theSchema","aFormData","stubExistingAdditionalProperties","remainingSchema","anyOrOneOf","processDependencies","dependencyKey","remainingDependencies","dependencyValue","withDependentProperties","withDependentSchema","additionallyRequired","dependent","dependentSchema","subschema","resolvedOneOf","validSubschemas","conditionPropertySchema","conditionSchema","dependentSubschema","withExactlyOneSubschema","JUNK_OPTION","__not_really_there__","calculateIndexScore","totalScore","newSchema","newScore","resolvedOptions","allValidIndexes","validList","scoreCount","bestIndex","scoreData","bestScore","isFixedItems","mergeDefaultsWithFormData","mergeExtraArrayDefaults","defaultSupercedesUndefined","overrideFormDataWithDefaults","defaultsArray","overrideOppositeArray","keyExistsInDefaults","keyExistsInFormData","isNil","mergeObjects","concatArrays","toMerge","altSchemas","constIsAjvDataReference","schemaConst","optionsList","uiEnumNames","altUiSchemas","aSchemaDef","aSchema","toConstant","PRIMITIVE_TYPES","AdditionalItemsHandling","getInnerSchemaForArrayItem","Ignore","maybeAddDefaultToObject","computedDefault","includeUndefinedValues","isParentRequired","requiredFields","isConst","emptyObjectFields","isSelfOrParentRequired","computeDefaults","computeDefaultsProps","parentDefaults","_recurseList","shouldMergeDefaultsIntoFormData","schemaToCompute","experimental_dfsb_to_compute","updatedRecurseList","constAsDefaults","refName","defaultFormData","getDefaultBasedOnSchemaType","defaultBasedOnSchemaType","defaultsWithFormData","arrayMinItems","mergeExtraDefaults","matchingFormData","isSelectField","validFormData","getOptionsList","ensureFormDataMatchingSchema","parentConst","objectDefaults","propertySchema","hasParentConst","hasConst","additionalPropertiesSchema","formDataRequired","getObjectDefaults","arrayMinItemsStateBehavior","arrayMinItemsPopulate","arrayMergeExtraDefaults","neverPopulate","ignoreMinItemsFlagSet","isPopulateAll","computeSkipPopulate","emptyDefault","schemaItem","Fallback","defaultsLength","defaultEntries","fillerSchema","fillerDefault","fillerEntries","getArrayDefaults","mergeDefaultsIntoFormData","isCustomWidget","NO_VALUE","oldSchema","removeOldSchemaData","nestedData","oldKeyedSchema","newKeyedSchema","oldSchemaTypeForKey","newSchemaTypeForKey","newOptionDefault","oldOptionDefault","newOptionConst","oldOptionConst","oldSchemaItems","newSchemaItems","oldSchemaType","newSchemaType","itemValue","toIdSchemaInternal","toPathSchemaInternal","xxxOf","schemaItems","schemaAdditionalItems","SchemaUtils","mergeValidationData","validationData","additionalErrorSchema","oldErrors","oldErrorSchema","toErrorList","createSchemaUtils","dataURItoBlob","dataURILike","splitted","mediaparams","dateRangeOptions","englishStringTranslator","stringToTranslate","inputString","partIndex","replaceStringParameters","enumOptionsValueForIndex","allEnumOptions","enumOptionsDeselectValue","enumOptionsIsSelected","sel","enumOptionsIndexForValue","enumOptionsSelectValue","getDateElementProps","yearRange","dayObj","monthObj","yearObj","dateElementProp","rangeSpec","getInputProps","defaultType","autoDefaultStepAny","getSubmitButtonOptions","getTemplate","widgetMap","updown","checkboxes","getWidget","registeredWidgets","AWidget","MergedWidget","mergeWidgetOptions","hasWidget","idGenerator","descriptionId","examplesId","helpId","ariaDescribedByIds","includeExamples","optionId","optionIndex","labelValue","localToUTC","orderProperties","propertyHash","orderFiltered","orderHash","restIndex","includeTime","schemaRequiresTrueValue","schemaSome","shouldRender","toDateString","utcTime","fieldPath","errorList","childSchema","ErrorSchemaBuilder","initialSchema","resetAllErrors","ErrorSchema","getOrCreateErrorBlock","pathOfError","errorBlock","addErrors","errorOrList","errorsList","setErrors","listToAdd","clearErrors","toErrorSchema","unwrapErrorHandler","utcToLocal","jsonDate","validationDataMerge","withIdRefPrefix","schemaNode","withIdRefPrefixArray","realObj","withIdRefPrefixObject","valuesLength","valuesIndex","getChangedFields","aIsPlainObject","bIsPlainObject","TranslatableString","isPossiblePrototype","MarkerDispatcher","_EventEmitter","gmapInstance","getUpdateCounter","_clones","_eventsToReemitters","_senderToPublisherHintCallbacks","_reemitMediaStreamTrackEvents","eventsToReemitters","clones","_replaceTrack","publisherHintCallback","replaceTrackResult","IDENTIFIER","dataType","_addRule","ruleGroup","fromPairs","ngcomponent_1","React","react_dom_1","react2angular","bindingNames","injectNames","injectedProps","namedFunctionMatch","padString","kebobString","camelCase","stringifyPatternFn","isRejection","isPromise","stringifyPattern","beforeAfterSubstr","hostRegex","stripLastPathElement","splitHash","splitQuery","splitEqual","splitOnDelim","joinNeighborsR","ruleModules","implKeywords","iteratorSupported","checkIfIteratorIsSupported","createIterator","serializeParam","deserializeParam","checkIfURLSearchParamsSupported","typeofSearchString","_fromString","_entries","searchArray","polyfillURLSearchParams","checkIfURLIsSupported","_URL","MSInputMethodContext","anchorElement","inputElement","checkValidity","enableSearchUpdate","enableSearchParamsUpdate","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","expectedPort","addPortToOrigin","polyfillURL","baseForOwn","comparer","$includes","llength","rlength","lindex","rindex","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$notOp","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","noGlobal","class2type","ObjectFunctionString","preservedScriptAttributes","noModule","DOMEval","toType","pushStack","prevObject","even","grep","_elem","odd","copyIsArray","isEmptyObject","globalEval","makeArray","callbackExpect","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","newSelector","newContext","testContext","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","matchIndexes","hasCompare","subWindow","attrId","getAttributeNode","disconnectedMatch","adown","bup","sortDetached","aup","specified","uniqueSort","duplicates","detectDuplicates","sortStable","selectors","createPseudo","preFilter","excess","unquoted","nodeNameSelector","_argument","ofType","uniqueCache","outerCache","nodeIndex","useCache","pseudo","setFilters","unmatched","elemLang","_matchIndexes","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","newUnmatched","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","isXMLDoc","escapeSelector","truncate","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","firing","firingIndex","stopOnFalse","fireWith","tuples","newDefer","returned","mightThrow","notifyWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","readyException","readyList","readyWait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","acceptData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_removeData","startLength","_queueHooks","clearQueue","pnum","rcssNum","cssExpand","composed","isHiddenWithinTree","adjustCSS","valueParts","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","setGlobalEval","refElements","buildFragment","htmlPrefilter","rkeyEvent","rmouseEvent","rtypenamespace","returnFalse","expectSync","safeActiveElement","origFn","leverageNative","notAsync","isTrigger","delegateType","handleObjIn","eventHandle","handleObj","origType","elemData","triggered","bindType","delegateCount","mappedTypes","origCount","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","noBubble","beforeunload","isSimulated","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prependTo","insertAfter","replaceAll","rnumnonpx","opener","rboxStyle","curCSS","pixelBoxStyles","addGetHookIf","conditionFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","setPositiveNumber","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","offsetProp","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","propHooks","eased","swing","fxNow","inProgress","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","tweeners","prefilters","currentTime","specialEasing","originalProperties","gotoEnd","propFilter","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","classesToArray","removeProp","propFix","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","attaches","rquery","parseXML","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","etag","isLocal","processData","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","responseHeaders","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","finalText","crossDomain","hasContent","ifModified","beforeSend","nativeStatusText","finalDataType","firstDataType","ajaxHandleResponses","conv2","dataFilter","throws","ajaxConvert","getScript","wrapAll","wrapInner","htmlIsFunction","xhrSuccessStatus","xhrSupported","cors","username","xhrFields","scriptAttrs","scriptCharset","oldCallbacks","rjsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","defaultExtra","undelegate","fnOver","fnOut","holdReady","hold","isNumeric","_jQuery","_$","__self__","DOMException","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","Headers","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","bufferClone","_initBody","_bodyInit","_bodyText","_bodyBlob","_bodyFormData","_bodyArrayBuffer","readArrayBufferAsText","upcased","referrer","Response","bodyInit","redirectStatuses","abortXhr","rawHeaders","responseURL","ponyfill","useCombinedRefs","elementString","_target$ownerDocument","_target$ownerDocument2","Document","isSVGElement","getOwnerDocument","useEvent","handlerRef","useInterval","intervalRef","useLatestValue","valueRef","useLazyMemo","useNodeRef","onChangeHandler","createAdjustmentFn","valueAdjustment","isKeyboardEvent","KeyboardEvent","getEventCoordinates","isTouchEvent","hasViewportRelativeCoordinates","Translate","findFirstFocusableNode","getLocalTracks","createLocalParticipant","createRoomSignaling","createRoom","cancelableRoomSignalingPromise","getCancelableRoomSignalingPromise","_reachability","_processed","_coreDistance","_orderedList","priorityQueue","_distanceToCore","_updateQueue","getReachabilityPlot","reachabilityPlot","newReachableDistance","queueElements","coreDistCand","_queuedEvents","queuedEvent","dataView","maxRetransmtis","_addClone","defaultRuleSortFn","urlRule_1","common_2","prioritySort","weights","typeSort","urlMatcherSort","useMatchPriority","URLMATCHER","idSort","_sortFn","_rules","interceptDeferred","urlRuleFactory","_otherwiseFn","stableSort","ensureSorted","arrOfWrapper","wrapperA","wrapperB","cmpDiff","checkRule","newurl","isDef","applyResult","_stopFn","isHtml5","appendBasePath","slash","cfgPort","handlerFn","getHandlerFn","urlParts","deferIntercept","cloneDataView","cloneRegExp","cloneSymbol","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","GOOGLE","HONOR","HUAWEI","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPERA","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","enumerize","lowerize","rgxMapper","strMapper","windowsVersionMap","regexes","cpu","device","engine","EDGE","UAParser","extensions","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","getBrowser","_browser","brave","isBrave","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","Zepto","_inheritsLoose","SHARED","copyright","license","getOwnPropertyDescriptorModule","exceptions","specificConstructor","angulartics","waitForVendorCount","waitForVendorApi","objectName","containsField","registerFn","onTimeout","pageTracking","autoTrackFirstPage","autoTrackVirtualPages","trackRelativePath","trackRoutes","trackStates","autoBasePath","excludedRoutes","queryKeysWhitelisted","queryKeysBlacklisted","eventTracking","bufferFlushDelay","trackExceptions","optOut","developerMode","knownHandlers","handlerOptions","updateHandlers","triggerRegister","apiWithInjector","virtualPageviews","excludeRoutes","queryKeysWhitelist","queryKeysBlacklist","firstPageview","withBase","withAutoBase","installHandlerRegisterFunction","registerName","handlerSettings","handlerDelay","bufferedHandler","startRegistering","_provider","_knownHandlers","_installHandlerRegisterFunction","$analytics","filterQueryString","keysMatchArr","thisType","urlArr","urlBase","matchedPairs","listedKey","matchedPairsArr","pageTrack","excludedRoute","matchesExcludedRoute","blacklistQueryString","whitelistQueryString","noRoutesOrStates","$route","$$route","$transition$","analyticsOn","analyticsEvent","isCommand","analyticsIf","analyticsProperties","eventTrack","exceptionTrack","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","charCodeOfDot","keysCache","keysRegex","complexKey","setInRecursor","destroyArrays","numKeys","numericKey","_result3","FORM_ERROR","ARRAY_ERROR","publishFieldState","formState","initialValues","lastSubmittedValues","submitErrors","submitFailed","submitSucceeded","submitting","modifiedSinceLastSubmit","touched","validating","submitError","pristine","dirtySinceLastSubmit","fieldSubscriptionItems","bHasOwnProperty","subscriptionFilter","shallowEqualKeys","different","shallowEqualKeys$1","filterFieldState","formSubscriptionItems","filterFormState","tripleEquals","hasAnyError","notifySubscriber","lastState","notification","renderComponent","lazyProps","useWhenValueChanges","isSyntheticEvent","ReactFinalFormContext","useLatest","addLazyState","addLazyFormState","all$1","ReactFinalForm","decorators","destroyOnUnregister","alternateFormApi","initialValuesEqual","keepDirtyOnReinitialize","mutators","_ref$subscription","validateOnBlur","fieldSubscribers","asyncErrors","resetWhileSubmitting","lastFormState","inBatch","validationPaused","validationBlocked","preventNotificationWhileValidationPaused","nextAsyncValidationKey","asyncValidationPromises","_extends3","getMutatorApi","mutatableState","notifyFieldListeners","notifyFormListeners","mutatorsApi","getValidators","fieldChanged","safeFields","fieldKeys","limitedFieldLevelValidation","changedField","validateFields","recordLevelErrors","asyncRecordLevelErrors","fieldLevelErrors","errorsOrPromise","runRecordLevelValidation","wasAsync","errorOrPromise","runFieldLevelValidation","hasAsyncValidations","asyncValidationPromiseKey","processErrors","afterAsync","forEachError","recordLevelError","errorFromParent","hasFieldLevelValidation","fieldLevelError","afterPromise","notifyField","fieldState","fieldSubscriber","markAllFieldsTouched","calculateNextFormState","safeFieldKeys","foundDirty","dirtyFields","dirtyFieldsSinceLastSubmit","nonNullLastSubmittedValues","nextFormState","hasSubmitErrors","hasValidationErrors","convertToExternalFormState","_safeFieldKeys$reduce","notifying","scheduleNotification","resetModifiedAfterSubmit","getFieldState","getRegisteredFields","savedDirtyValues","isValidationPaused","pauseValidation","preventNotification","registerField","fieldConfig","afterSubmit","beforeSubmit","haveValidator","silent","noValueInFormState","validatorRemoved","hasFieldSubscribers","lastOne","resumeValidation","asyncValidationPromisesKeys","completeCalled","createForm","_React$useState","stateRef","unsubscriptions","eventOrValues","handleSubmit","__versions","useForm","FormSpy","reactFinalForm","firstRender","onChangeRef","lazyState","useFormState","isReactNative","defaultParse","defaultIsEqual","Field","allowNull","formatOnBlur","_config$format","_config$parse","_config$subscription","configRef","_configRef$current","_configRef$current$fo","formatted","valueProp","_detypedEvent$target","getSelectedValues","addLazyFieldMetaState","useField","hookRegistry_1","coreResolvables_1","redirectTo_1","onEnterExitRetain_1","views_1","updateGlobals_1","url_1","transitionEventType_1","ignoredTransition_1","invalidTransition_1","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","hooksArray","Phase","TH","NORMAL_SORT","SYNCHRONOUS","_defineEvent","LOG_REJECTED_RESULT","THROW_ERROR","BEFORE","RUN","LOG_ERROR","_definePathType","cmpByPhase","hookScope","addCoreResolves","registerIgnoredTransitionHook","eagerResolve","lazyResolve","loadViews","registerLoadEnteringViews","activateViews","registerActivateViews","updateGlobals","updateUrl","registerUpdateUrl","_noBody","reParamSearch","fixUrl","reconnectBackoffConfig","SDP_FORMAT","syncing","TwilioConnectionTransport","_accessToken","_automaticSubscription","_dominantSpeaker","_adaptiveSimulcast","_renderHints","_iceServersStatus","_localParticipant","_networkQuality","_notifyWarnings","_peerConnectionManager","_sessionTimer","_sessionTimeoutMS","_reconnectBackoff","_trackPriority","_trackSwitchOff","_twilioConnection","_updatesReceived","_updatesToSend","_userAgent","_wsServer","createOrResetTwilioConnection","_createIceMessage","_createConnectOrSyncOrDisconnectMessage","CloseReason","LOCAL","_getReconnectTimer","twilioError","BUSY","_sendConnectOrSyncOrDisconnectMessage","_setSession","session_timeout","_clearReconnectTimer","reduced","peer_connections","reducePeerConnections","reduceUpdates","setupTransport","sdk_version","user_agent","bandwidth_profile","media_warnings","media_signaling","sendMessage","publishEvent","peerConnectionsById","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","invisibleSegs","singlePlacements","isForcedInvisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","rootElRef","dayNumberId","currentEndIncl","currentFirstYear","currentFirstMonth","currentLastYear","currentLastMonth","shouldDisplayMonthStart","renderTopInner","innerElRef","minHeight","showWeekNumber","forceDayTop","fgContentElRef","fgContent","moreMarginTop","bgContent","generateSegKey","generateSegUid","resliceSeg","spanStart","spanEnd","DayGridSegHierarchy","hiddenConsumes","forceHidden","segInputs","excludeHidden","touchingEntryId","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","maxContentHeight","segHeights","updateSizing","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","singleColPlacements","multiColPlacements","moreCnts","moreMarginTops","segEntry","segUid","unknownHeightSegs","segRects","leftoverMargins","allRects","rectsByEachCol","groupRectsByEachCol","currentMarginTop","absoluteTop","multiPlacements","isFirstCol","placeRects","hiddenSpan","computeFgSegPlacement","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","cellMinHeight","currentProps","segPlacements","leftRightCss","isExternalSizingChange","frameEls","newPositionCache","oldSegHeights","newSegHeights","querySegHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","TableRows","splitBusinessHourSegs","splitBgEventSegs","splitAllDaySegsByRow","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","renderRowIntro","firstCellEl","rowPositions","rowObj","colPositions","getCellRange","getCellEl","isSegAllDay","Table","needsScrollReset","limitViaBalanced","colGroupNode","requestScrollReset","flushScrollReset","getScrollSubjectEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","DayTableView","buildDayTableModel","contentArg","TableDateProfileGenerator","endOfWeek","snapToWeek","lastMonthRenderStart","buildDayTableRenderRange","TrackPrioritySignaling","_enqueuedPriorityUpdates","sendTrackPriorityUpdate","publishOrSubscribe","WEEK_STARTS","WEEK_TYPES","WEEKEND_TYPES","daysBetween","start_date","end_date","serial","addOn","DATEVALUE","date_text","serial_number","em","smd","emd","EDATE","EOMONTH","HOUR","INTERVAL","ISOWEEKNUM","yearStart","MINUTE","holidays","weekend","holiday","NOW","SECOND","TIMEVALUE","time_text","TODAY","WEEKDAY","return_type","WEEKNUM","week_start","jan","YEAR","ylength","year1","mar1year1","year2","mar1year2","feb29Between","ng_from_import","core","ng_from_global","getNg1ViewConfigFactory","templateFactory","Ng1ViewConfig","hasAnyKey","ng1ViewsBuilder","compKeys","nonCompKeys","allViewKeys","viewsObject","resolveAs","makeComponentTemplate","controllerProvider","providerFn","TemplateFactory","_useHttp","useHttpService","asTemplate","asComponent","fromUrl","templateProvider","fromProvider","componentProvider","fromComponentProvider","kebob","kebobed","cmpDefs","getBindings","getComponentBindings","resolveName","getResolvable","kebobName","scopeBindings","bindingsObj","StateProvider","getStateHookBuilder","stateObject","$state$","Ng1LocationServices","$locationProvider","_urlListeners","_lp","monkeyPatchPathParameterType","pathType","_runtimeServices","_loc","UrlRouterProvider","_urlRouter","injectableHandler","$match","$stateParams","ruleFn","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","stateProvider","ng1LocationService","getProviderFor","$urp","runBlock","$uiRouter","watchDigests","approximateDigests","uiRouter","urlRouterProvider","$urlMatcherFactory","$urlRouter","uiSrefDirective","uiStateDirective","uiSrefActiveDirective","parseStateRef","paramsOnly","paramExpr","stateContext","$uiView","processedDef","uiState","uiStateOpts","defaultOpts","uiStateParams","getTypeInfo","isSvg","isForm","isAnchor","clickHook","getDef","ignorePreventDefaultCount_1","event_1","events_2","event_2","$IsStateFilter","isFilter","$IncludedByStateFilter","includesFilter","$ViewDirectiveFill","getControllerAs","getResolveAs","$cfg","resolveCtx","traceUIViewFill","registerControllerCallbacks","cmp_1","tagRegexp_1","deregisterWatch_1","directiveEl","uiSrefActive","unlinkInfoFn","uiSref","$$addStateInfo","uiSrefOpts","inputAttrs","watchDeregFns","activeEqClass","deregisterStatesChangedListener","deregisterOnStartListener","deregisterStateChangeSuccessListener","uiSrefActiveEq","updateAfterTransition","handleStatesChanged","setStatesFromDefinitionObject","statesDefinition","addStateForClass","addState","stateParams","stateInfo","getClasses","stateList","fuzzyClasses","exactClasses","$uiViewScroll","rootData","previousEl","currentEl","activeUIView","config1","config2","traceUIViewConfigUpdated","updateView","fromParentTagConfig","fromParentTag","animEnter","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","traceUIViewEvent","_viewData_1","cleanupLastView","hasComponentImpl","_uiCanExitId","viewState","hookOptions","uiOnParamsChanged","viewCreationTrans_1","fromParams","toSchema","fromSchema","changedToParams","changedKeys_1","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","redirectedFrom","useAnchorScroll","uncurryThisWithBind","_wrap2","eifelerRegelAppliesToNumber","installing","isExternal","isUpdate","waiting","serviceWorker","ports","getSW","wasWaitingBeforeRegister","messageSW","messageSkipWaiting","IS_REG_EXP","searchLength","advanceBy","endOfLastMatch","defaultCreateCancelableRoomSignalingPromise","SignalingV2","createCancelableRoomSignalingPromise","_createCancelableRoomSignalingPromise","_connect","createLocalParticipantSignaling","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","$groupToMap","groupToMap","AJV_CONFIG","multipleOfPrecision","unknownFormats","COLOR_FORMAT_REGEX","DATA_URL_FORMAT_REGEX","AJV6Validator","additionalMetaSchemas","customFormats","ajvOptionsOverrides","formatName","createAjvInstance","transformRJSFValidationErrors","rawValidation","validationError","noProperMetaSchema","userErrorSchema","handleSchemaUpdate","rootSchemaId","$allSchemasEmpty","$unknownFormats","$allowUnknown","$format","$isObject","$formatType","$formatRef","nativeToPrecision","baseHasIn","hasPath","clearErrorStack","ERROR_STACK_INSTALLABLE","captureStackTrace","BASE_URL","DEFAULT_URL","$script_","loadPromise_","resolveCustomPromise_","_customPromise","_$_google_map_initialize_$_","hookBuilder_1","stateSelf","_hookBuilder","_targetState","_treeChanges","createTransitionHookRegFns","onCreateHooks","invokeHooks","enteringStates","$from","pathName","getResolveTokens","topath","addResolvables","redirects","redirectOpts","withOptions","newTransition","originalEnteringNodes","redirectEnteringNodes","_changedParams","nodeSchemas","toValues","fromValues","toVals","fromVals","_ignoredReason","newTC","pendTC","runAllHooks","getHooksFor","allBeforeHooks","traceTransitionStart","allRunHooks","traceSuccess","traceError","_aborted","paramDefs","invalidParams","fromStateOrName","toStateOrName","avoidEmptyHash","diToken","ParticipantSignaling","Signaling","_open","createBaseEach","REDUCE_EMPTY","IS_RIGHT","nodeContains","htmlParser","htmlSanitizeWriter","$sanitizeMinErr","svgEnabled","validElements","svgElements","enableSvg","inertBodyElement","getInertBodyElement","mXSSAttempts","attrToMap","getNonDescendant","uriValidator","ignoreCurrentElement","blockedElements","lkey","validAttrs","uriAttrs","encodeEntities","voidElements","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","blockElements","inlineElements","htmlAttrs","svgAttrs","lowercaseKeys","inertDocument","stripCustomNsAttrs","attrNode","removeAttributeNode","outerText","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","attributesFn","addText","addLink","linkAttributes","keyValsToObjectR","queryString","orEmptyString","beforehash","searchObject","locationPluginFactory","serviceClass","configurationClass","statsPublishIntervalMs","signaling_region","audio_processors","getTrackReceiver","_getTrackReceiver","_disconnectedParticipantRevisions","_NetworkQualityMonitor","_lastBandwidthProfileRevision","_mediaStatesWarningsRevision","_networkQualityMonitor","_networkQualityConfiguration","_published","_RemoteParticipantV2","_subscribedRevision","_subscriptionFailures","_dominantSpeakerSignaling","_networkQualitySignaling","_renderHintsSignaling","_publisherHintsSignaling","_trackPrioritySignaling","_trackSwitchOffSignaling","_pendingSwitchOffStates","_trackReceiverDeferreds","media_region","_initTrackSwitchOffSignaling","_initDominantSpeakerSignaling","_initNetworkQualityMonitorSignaling","_initPublisherHintSignaling","roomV2","localParticipantUpdated","_publishNewLocalParticipantState","renegotiate","_publishPeerConnectionState","_addTrackReceiver","setNetworkQualityLevel","handlePeerConnectionEvents","handleTransportEvents","intervalMs","movingAverageDeltas","oddPublishCount","audioTrackStats","addAVSyncMetricsToRemoteTrackStats","addAVSyncMetricsToLocalTrackStats","videoTrackStats","availableIncomingBitrate","consentRequestsSent","lastPacketReceivedTimestamp","lastPacketSentTimestamp","readable","requestsReceived","requestsSent","responsesReceived","responsesSent","retransmissionsReceived","retransmissionsSent","totalRoundTripTime","transportId","deleted","ip","replaceNullsWithDefaults","onStateChanged","periodicallyPublishStats","isSetup","_deleteTrackReceiverDeferred","_getOrCreateTrackReceiverDeferred","didDisconnect","_teardownNetworkQualityMonitor","initiallySwitchedOff","_getTrackSidsToTrackSignalings","trackSidsToTrackSignalings","_getOrCreateRemoteParticipant","_maybeAddBandwidthProfile","roomState","subscribed","subscribedTrackSids_1","participantsToKeep","disconnectedParticipantRevision","mediaSignaling","hintResponses","handleReplaced","tracksOff","tracksOn","trackUpdates_1","isOn","networkQualityMonitor","filterAndAddLocalTrackSids","filterAndAddRemoteTrackSids","filterAndAddTrackSids","idToSid","localTrackStats","remoteTrackStats","trackResponse","augmentedTrackStats","trackMovingAverageDeltas","trackAvgEncodeDelayMovingAverageDelta","avgEncodeDelay","trackAvgPacketSendDelayMovingAverageDelta","avgPacketSendDelay","trackAvgDecodeDelayMovingAverageDelta","avgDecodeDelay","trackAvgJitterBufferDelayMovingAverageDelta","avgJitterBufferDelay","stateObject_1","tis","and","includeCheatSheet","useNgRoute","templateHeader","templateFooter","cheatSheetHotkey","cheatSheetDescription","mouseTrapEnabled","symbolize","backspace","Hotkey","allowIn","persistent","_formated","Mousetrap","stopCallback","sequence","helpVisible","toggleCheatSheet","boundScopes","purgeHotkeys","hotkey","helpMenu","_del","previousEsc","_callback","preventIn","shouldExecute","wrapApply","retStatus","boundScope","scopeIndex","funcString","publicApi","bindTo","unpause","hotkeyAllowIn","hotkeyDescription","hotkeyAction","_REVERSE_MAP","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","_addEvent","_characterFromEvent","character","_modifiersMatch","modifiers1","modifiers2","_isModifier","_pickBestAction","_getReverseMap","_getKeyInfo","_keysFromString","_belongsTo","targetElement","_callbacks","_directMap","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","deleteCombo","deleteSequence","_fireCallback","_preventDefault","_stopPropagation","_handleKeyEvent","handleKey","_eventModifiers","_bindSingle","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSequence","_handleKey","maxLevel","processedSequenceCallback","ignoreThisKeypress","_bindMultiple","isContentEditable","documentMousetrap","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","positionAttributeLocation","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texCoordAttributeLocation","shaderType","shaderSource","shader","createShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","internalformat","minFilter","magFilter","texture","texStorage2D","_reactRedux","_lodash","_PureComponent","_isNativeReflectConstruct","stateCompareFunction","inTimeTravelling","isTimeTravelDebuggingAllowed","noTimeTravelDebugging","pathnameInStore","searchInStore","hashInStore","stateInStore","_history$location","pathnameInHistory","searchInHistory","hashInHistory","stateInHistory","handleLocationChange","noInitialPop","omitRouter","ConnectedRouterWithContext","NavItem","NavLink","Nav","_classNames","navbarBsPrefix","justify","navbarContext","NavbarContext","renderTab","_child$props","tabClassName","Tabs","_useUncontrolled$acti","defaultActiveKey","getDefaultActiveKey","TabContainer","TabContent","ALL_WHENS","EAGER_WHENS","NATIVE_INJECTOR_TOKEN","newResolvables","matchedWhens","traceResolvePath","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","_injector","UIInjectorImpl","availableResolvables","fromInjector","getAsync","arrayPush","_immutable2","_getStateName2","reducerNames","unexpectedStatePropertyNames","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","PROBE_UNKNOWN_ACTION","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","bindActionCreator","applyMiddleware","middlewares","_dispatch","middlewareAPI","middleware","isFlattenable","isStrict","validateLocalTrack","LocalParticipant","tracksToStop","shouldStopLocalTracks","localTrack","_LocalAudioTrack","_LocalDataTrack","_LocalVideoTrack","_MediaStreamTrack","_LocalAudioTrackPublication","_LocalDataTrackPublication","_LocalVideoTrackPublication","_tracksToStop","addedTrack","_addLocalTrack","removedTrack","localTrackDisabled","localTrackEnabled","localTrackStopped","_getOrCreateLocalTrackPublication","localTrackPublication","getTrackPublication","warningHandler","warningsClearedHandler","unpublishTrack","publishTrack","localTrackOrMediaStreamTrack","addedLocalTrack","publishTracks","unpublishTracks","unpublishedTracks","unpublishedTrack","trackPublications","UIRouterPluginBase","loadEnteringViews","enteringViews","exitingViews","userAgentStartsWith","Bun","endPos","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","arrayLikeToArray","StyleSheet","_insertTag","insertionPoint","isSpeedy","speedy","ownerNode","sheetForTag","indexof","characters","dealloc","delimit","escaping","commenter","COMMENT","rulesets","declarations","atrule","scanning","ampersand","declaration","ruleset","identifierWithPointTracking","fixedElements","isImplicitRule","toRules","getRules","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","stylisPlugins","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serialized","shouldCache","registered","isStringTag","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","handleInterpolation","interpolation","__emotion_styles","createStringFromObject","previousCursor","labelPattern","stringMode","strings","identifierName","EmotionCacheContext","typePropName","Insertion","Emotion","cssProp","registeredStyles","rawClassName","createElementArgArray","createEmotionProps","brands","brand","_excluded$4","applyPrefixToName","classNameList","cleanValue","cleanCommonProps","clearValue","getClassNames","selectOption","getStyleProps","classNamesState","isDocumentElement","animatedScrollTo","animateScroll","menuEl","focusedEl","menuRect","focusedRect","overScroll","isTouchCapable","passiveOptionAccessed","supportsPassiveEvents","notNullish","valueTernary","multiValue","_excluded$3","_excluded2$1","_templateObject","coercePlacement","PortalPlacementContext","MenuPlacer","minMenuHeight","maxMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","setPortalPlacement","setMaxHeight","setPlacement","controlHeight","isFixedPosition","preferredMaxHeight","shouldScroll","excludeStaticParent","overflowRx","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","_constrainedHeight2","getMenuPlacement","placerProps","noticeCSS","unstyled","_ref5$theme","baseUnit","neutral40","noOptionsMessageCSS","loadingMessageCSS","_excluded$2","Svg","viewBox","focusable","CrossIcon","DownChevron","baseCSS","isFocused","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","LoadingDot","verticalAlign","_excluded$1","spacingStyle","gridTemplateColumns","inputStyle","isHidden","MultiValueGeneric","ClearIndicator","indicator","menuIsOpen","DropdownIndicator","headingProps","GroupHeading","_cleanCommonProps","IndicatorsContainer","IndicatorSeparator","inputClassName","LoadingIndicator","_ref7$size","restProps","MenuList","MenuPortal","controlElement","menuPortalRef","cleanupRef","_useState6","portalPlacementContext","_useState8","computedPosition","setComputedPosition","updateComputedPosition","getBoundingClientObj","runAutoUpdate","ancestorScroll","ancestorResize","elementResize","animationFrame","setMenuPortalElement","menuPortalElement","menuWrapper","LoadingMessage","_ref7$children","NoOptionsMessage","_ref6$children","MultiValue","removeProps","Remove","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","A11yText$1","defaultAriaLiveMessages","guidance","isSearchable","tabSelectsValue","isInitialFocus","_props$label","_props$label2","isAppleDevice","getArrayIndex","onFilter","resultsMessage","LiveRegion$1","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","isOptionDisabled","screenReaderStatus","ariaLive","ariaSelected","removedValue","removedValues","multiSelected","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ScreenReaderText","diacritics","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","trimString","defaultStringify","DummyInput","filteredProps","propsObj","propsMap","caretColor","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","activeScrollLocks","listenerOptions","blurSelectInput","_ref2$1","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","touchStart","scrollTarget","handleEventDelta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","onWheel","startListening","notPassive","stopListening","useScrollCapture","setScrollLockTarget","_ref$accountForScroll","accountForScrollbars","addScrollLock","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","removeScrollLock","useScrollLock","RequiredInput$1","testPlatform","_window$navigator$use","isMac","defaultStyles","clearIndicator","_ref$theme","alignItems","flexWrap","neutral5","neutral0","neutral10","borderStyle","boxShadow","neutral30","dropdownIndicator","groupHeading","_ref2$theme","textTransform","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","loadingIndicator","loadingMessage","_objectSpread2","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","_ref8","multiValueLabel","cropWithEllipsis","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","WebkitTapHighlightColor","primary25","primary50","neutral50","valueContainer","controlShouldRenderValue","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnScroll","escapeClearsValue","filterOption","rawInput","__isNew__","_ignoreCase$ignoreAcc","ignoreAccents","matchFrom","createFilter","formatGroupLabel","menuShouldBlockScroll","openMenuOnFocus","openMenuOnClick","pageSize","toCategorizedOption","_isOptionDisabled","_isOptionSelected","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","categorizedOption","isFocusable","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","buildFocusableOptionsWithIds","_props$inputValue","shouldHideSelectedOptions","_filterOption","getFocusedOptionId","focusableOptionsWithIds","_focusableOptionsWith","isOptionSelected","hideSelectedOptions","focusedOptionId","inputIsHidden","clearFocusValueOnUpdate","prevWasFocused","inputIsHiddenAfterUpdate","instancePrefix","blockOptionHover","isComposing","commonProps","initialTouchX","initialTouchY","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","inputRef","getInputRef","focusInput","blurInput","actionMeta","ariaOnChange","prevInputValue","onMenuClose","deselected","newValueArray","popValue","lastSelectedValue","getFocusableOptionsWithIds","getElementId","classNamePrefix","_this$props$className","_this$props$className2","getComponents","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","onClearIndicatorMouseDown","onScroll","onCompositionStart","onCompositionEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","focusedOptionIndex","onValueInputFocus","isClearable","_this$state","focusValue","focusOption","startListeningComposition","startListeningToTouch","stopListeningComposition","stopListeningToTouch","_this$state2","openAtIndex","_this$state3","focusedIndex","nextFocus","getTheme","formatOptionLabel","_inputValue","_selectValue","inputId","_this$state4","ariaAttributes","autoCapitalize","autoCorrect","spellCheck","_this$getComponents2","_this$state5","isOptionFocused","_this$getComponents5","_this$getComponents7","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","hasOptions","_message","menuPlacementProps","_ref4$placerProps","scrollTargetRef","_this$props13","_this$state6","_this$getComponents8","_this$props14","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","newMenuOptionsState","nextSelectValue","lastFocusedIndex","getNextFocusedValue","lastFocusedOption","getNextFocusedOption","newInputIsHiddenState","newAriaSelection","hasKeptFocus","StateManagedSelect","baseSelectProps","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","propsMenuIsOpen","propsOnChange","propsOnInputChange","propsOnMenuClose","propsOnMenuOpen","restSelectProps","stateInputValue","setStateInputValue","stateMenuIsOpen","setStateMenuIsOpen","setStateValue","useStateManager","StateManagedSelect$1","propsIndex","propsLength","proxyAccessor","NativeRegExp","IS_NCG","CORRECT_NEW","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","quoteRegExp","surroundPattern","splitOnSlash","_params","_compiled","matchArray","searchPlaceholder","checkParamErrors","nameValidator","matchDetails","_pattern","encodeDashes","pathSegmentsAndParams","staticSegments","pathParams","queryParams","weightsA","weightsB","padArrays","_pairs","allParams","nPathSegments","urlm","decodePathArray","reverseString","allReversed","findParam","urlMatchers","getDetails","pathString","paramDetails","_utilities","getDefaultState","reducerKeys","inputState","temporaryState","nextDomainState","TIME_FORMATS","LABELS_FOR_POWERS_OF_KILO","isFiniteNumber","Humanize","intword","charWidth","compactInteger","signString","unsignedNumber","unsignedNumberString","numberLength","numberLengths","bigNumPrefixes","decimalIndex","unsignedNumberCharacterArray","wholePartArray","decimalPartArray","wholePart","decimalPart","intComma","intcomma","filesize","minnum","_thousand","thousand","usePrecision","normalizePrecision","_number","commas","_decimal","smallTimes","singular","ending","truncateWords","truncatewords","boundedNumber","truncatenumber","oxford","limitStr","limitIndex","joiner","pace","timeUnit","relativePace","roundedPace","nl2br","br2nl","downCaseTail","capitalizeAll","internalCaps","splitOnWhiteSpaceRegex","splitOnHyphensRegex","_doTitleCase","_string","hyphenated","firstOrLast","titleCasedArray","titlecase","_errors","invertNumber","ERROR_DIV_ZERO","ERROR_NAME","ERROR_VALUE","exp1","exp2","SYMBOL","symbolParts","foundFormula","formulajs","nestedFormula","isFactory","availableOperators","evaluateByOperator","registerOperation","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","callVariable","trimEdges","callFunction","cellValue","rangeValue","defaultActions","parseError","recoverable","vstack","lstack","recovering","sharedState","setInput","yylloc","yyloc","popStack","preErrorSymbol","yyval","error_rule_depth","locateNearestErrorRecoveryRule","stack_probe","errStr","showPosition","first_line","last_line","first_column","last_column","_more","_backtrack","conditionStack","unput","oldLines","more","backtrack_lexer","less","pastInput","upcomingInput","test_match","indexed_rule","tempMatch","_currentRules","popState","conditions","topState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","rowLabelToIndex","columnLabelToIndex","COLUMN_LABEL_BASE","LABEL_EXTRACT_REGEXP","extractLabel","_label$toUpperCase$ma2","columnAbs","rowAbs","toLabel","rowLabel","rowIndexToLabel","columnLabel","columnIndexToLabel","_Emitter","errorName","_throwError","_callVariable","_callFunction","_callCellValue","_callRangeValue","variables","setVariable","getVariable","getFunction","_extractLabel2","startLabel","endLabel","_extractLabel4","startRow","startColumn","_extractLabel6","endRow","endColumn","startCell","endCell","baseMergeDeep","baseLocationService_1","PushStateLocationService","_getBasePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","$itemType","rawTemplate","literalSegments","setSimulcastInMediaSection","ptToFixedBitrateAudioCodecName","createPtToCodecName","createMidToMediaSectionMap","midsToMediaSections","getMidForMediaSection","getPayloadTypesInMediaSection","ptToCodecName","rtpmapPattern","getFmtpAttributesForPt","fmtpRegex","nvPair","setPayloadTypesInMediaSection","payloadTypes","mLine","otherLines","msid","trackIdToRewrite","msidRegex","generateFmtpLineFromPtAndAttributes","fmtpAttrs","serializedFmtpAttrs","activeMidsToTrackIds","trackIdsByKind","newMidsToTrackIds","rtxPts","rtxPt","rtxSSRCMatches","rtxSSRC","filterRegexes","mids","opusPt","opusFmtpAttrs","origOpusFmtpLine","origOpusFmtpRegex","usedtx","opusFmtpLineWithDtx","localSdp","remoteSdp","localMediaSections","localSession","remoteMidsToMediaSections","localSection","peerMidsToMediaSections","codecsToRemove","peerSection","peerPtToCodecs","codecsToPts","peerPt","peerCodec","matchingPts","peerFmtpAttrs","matchingPt","getMatchingPayloadTypes","apt","ptMatches","filterCodecsInMediaSection","ssrcAttributesToRemove","srcAttribute","localSdpWithoutSimulcast","remoteMidToMediaSections","localMidToMediaSectionsWithoutSimulcast","remoteSection","remotePtToCodecs","remotePayloadTypes","isVP8ThePreferredCodec","preferredAudioCodecs","preferredVideoCodecs","preferredPayloadTypes","remainingCodecs","remainingPayloadTypes","getReorderedPayloadTypes","newSection","pcmaPayloadTypes","pcmuPayloadTypes","vp8PayloadTypes","payloadType","relativeTimeMr","rHyphen","pascalCase","_ref$displayName","BsComponent","_ref2$as","resolvedPrefix","createBaseFor","urlOptions","componentOrElement","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","UP","DOWN","PRINT_SCREEN","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","isCharacterKey","isValidProps","InputNumber","onPressEnter","supportKeyCodes","getRatio","_ratio","recordCursorPosition","lastKeyCode","onKeyUp","inputting","getValueFromEvent","getCurrentValidValue","originValue","displayValue","getInputDisplayValue","getFullNum","getPrecision","valueString","inputDisplayValue","toPrecisionAsStep","inputDisplayValueFormat","formatWrapper","decimalSeparator","cursorStart","cursorEnd","cursorBefore","cursorAfter","restoreByAfter","fullStr","prevCursorPos","fixCaret","partRestoreByAfter","partStr","isNotCompleteNumber","autoStepTimer","recursive","pressingUpOrDown","saveInput","validValue","getValidValue","nextInputValue","focusOnUpDown","_this$state$value","_this$state$inputValu","newValueInString","ratioPrecision","stepPrecision","currentValuePrecision","getMaxPrecision","numberIsTooLarge","rat","precisionFactor","getPrecisionFactor","outOfRange","onStep","setSelectionRange","prefixCls","useTouch","upHandler","downHandler","onPaste","onInput","dataOrAriaAttributeProps","isUpDisabled","isDownDisabled","upClassName","downClassName","upEvents","downEvents","unselectable","_eventEmitter","CONSTRUCTOR_NAME","baseIsMap","nodeIsMap","matchesStrictComparable","groupByToMap","NetworkMonitor","onNetworkChanged","connection","networkChanged","isOnline","onLine","optionsSupported","onceSupported","wrappedHandler","__once","onceHandler","$every","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","NetworkQualityStats","_identity","_networkQualityLevel","_networkQualityStats","networkQualityLevels","Equality","pseudoNode","objectComparator","explode","sameLength","g1","g2","compareCoord","compareLine","comparePolygon","compareFeature","g1s","g2s","g1part","g2part","path1","path2","isPoly","removePseudo","fixStartIndex","sameDirection","comparePath","sourcePath","targetPath","correctPath","holes1","holes2","compareBBox","ILLEGAL_INVOKE","detectSilentAudio","gUMSilentTrackWorkaround","restartWhenInadvertentlyStopped","localMediaTrack","trackChangeInProgress","maybeRestart","_workaroundWebKitBug1208516Cleanup","isStopped","isInadvertentlyStopped","shouldReacquire","removeMediaStreamTrackListeners","addMediaStreamTrackListeners","onMute","LocalMediaTrack","_getUserMedia","_gUMSilentTrackWorkaround","_workaroundWebKitBug1208516","_didCallEnd","_reemitTrackSenderEvents","gUMConstraints","newMediaStreamTrack","_setMediaStreamTrack","isSuperseded","nextHook","invokeHook","hookResult","remainingHooks","logError","notCurrent","getNotCurrentRejection","traceHookInvocation","handleError","handleHookResult","traceHookResult","isTargetState","multiLineString","multiPoint","multiPolygon","radiansToLength","lengthToRadians","radiansToDegrees","unitsFactors","areaFactors","lineStrings","geometryCollection","lengthToDegrees","bearingToAzimuth","degreesToRadians","convertLength","originalUnit","finalUnit","convertArea","startFactor","finalFactor","validateBBox","validateId","initial_args","func_args_length","curried","_val","fn1","fn2","struct","small","numberIsNaN","SHAM","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","forceStringMethod","boundLength","Empty","$registry","previousQueueLength","name_1","orphanIdx","existingState","existingFutureState","attachRoute","uiViewString","uiview","normalizedCat","consoletable","_tid","_rid","transLbl","Trace","traceTransitionIgnored","HOOK","transitionOptions","RESOLVE","finalState","viewData","UIVIEW","VIEWCONFIG","uivheader","viewConfigString","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","dateToPrimitive","_combineReducers3","SafariRTCPeerConnection","$forEach","normalizeArray","undef","undefEmpty","undefAndZero","emptySchema","emptyObjUndef","undefArrayEqual","schemaGroup","allProps","bVal","keyValEqual","unsortedArray","uniqueA","uniqueB","comparers","acceptsUndefined","innerCompare","jsValue","numbersPast","numbersFuture","verbalNumber","createCancelableRoomPromise","NullInsightsPublisher","DEFAULT_REGION","DefaultLog","validateBandwidthProfile","safariVersion","connectCalls","didPrintSafariWarning","isSafariWithoutVP8Support","safariMajorVersion","safariMinorVersion","deprecatedConnectOptionsProps","didWarn","shouldDelete","deprecatedBandwidthProfileOptions","deprecateOptions","deprecationTable","handleLocalTracks","normalizeCodecSettings","nameOrSettings","eventPublisherOptions","insights","wsServerInsights","cancelableRoomPromise","weekEndings","AllDaySplitter","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","TimeBodyAxis","slatMetas","slatMeta","TimeColsView","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","renderTableRowAxis","rowHeight","renderAllDayInner","handleSlatCoords","timeContent","isNowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","TimeColsSlatsCoords","startOfDayDate","timeMs","computeTimeTop","computeDateTop","slatIndex","slatRemainder","slatCoverage","TimeColsSlatsBody","slatElRefs","TimeColsSlats","onCoords","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderPlainFgSegs","buildNodes","siblingRange","buildNode","lateralStart","lateralEnd","cmpDescPressures","extractNode","keyFunc","workFunc","computeSegVCoords","colDate","vcoords","DEFAULT_TIME_FORMAT","TimeColEvent","TimeCol","isSelectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","forcedKey","renderPositionedFgSegs","segVCoords","hiddenGroups","dumbSegs","web","subjectLevel","subjectLateral","subjectEntry","afterSubject","findNextLevelSegs","nextLevelRes","nextLevelNodes","buildWeb","topLevelNodes","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","childNode","newThickness","stretchWeb","processNode","stackDepth","stackForward","processNodes","webToRects","buildPositioning","segRect","dumbSeg","computeFgSegPlacements","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","segEntries","bu","segHCoords","shouldOverlap","nearCoord","farCoord","hiddenInstances","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","TimeCols","processSlotOptions","onScrollTopRequest","handleColCoords","colCoords","onSlatCoords","scrollResponder","snapsPerSlot","colIndex","slatTop","slatHeight","snapIndex","dayDate","snapDurationOverride","DayTimeColsSlicer","dayRanges","DayTimeCols","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","slatTime","slatIterator","labelInterval","slotsPerLabel","computeLabelInterval","buildTimeColsModel","allDaySlot","timeGrid","hasAttachedAxis","hasDetachedAxis","timeGridContent","timeGridDay","timeGridWeek","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","BUGGY","nativeSplit","internalSplit","unicodeMatching","nativeTest","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","baseIds","PREVENT_SCOPE_CHANGE","unescapeFragment","SIMPLE_INLINED","checkNoRef","countKeys","TRAILING_SLASH_HASH","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","setYear","baseDifference","dateLongFormatter","timeLongFormatter","dateTimeFormat","datePattern","timePattern","basePlacements","variationPlacements","modifierPhases","get_URL","save_link","can_use_save_link","is_safari","is_chrome_ios","throw_outside","auto_bom","FileSaver","no_auto_bom","object_url","filesaver","dispatch_all","event_types","fs_error","FS_proto","WRITING","onwritestart","onwrite","onwriteend","safeGetBuiltIn","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","characterData","precompile","Compiler","JavaScriptCompiler","parseWithoutProcessing","Visitor","HandlebarsEnvironment","SafeString","Exception","escapeExpression","VM","partials","registerDefaultHelpers","registerDefaultDecorators","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","registerHelper","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","createFrame","toHTML","blockParams","appendContextPath","endLineNumber","setDesc","isEnum","getDesc","setDescs","moveHelperToHooks","__g","includeZero","lookupProperty","methodMap","lookupLevel","createProtoAccessControl","__defineGetter__","__defineSetter__","__lookupGetter__","whitelist","createNewLookupObject","allowedProtoProperties","allowProtoPropertiesByDefault","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","nullContext","checkRevision","_setup","useData","useBlockParams","useDepths","main_d","compiler","protoAccessControl","invokePartial","resolvePartial","compilerOptions","programs","mergeIfNeeded","compilerInfo","wrapHelper","usePartial","useDecorators","allowCallsToHelperMissing","wrapProgram","seal","Handlebars","helperExpression","scopedId","locInfo","SourceLocation","srcName","program_repetition0","mustache","rawBlock","partialBlock","CONTENT","openRawBlock","rawBlock_repetition0","END_RAW_BLOCK","OPEN_RAW_BLOCK","helperName","openRawBlock_repetition0","openRawBlock_option0","CLOSE_RAW_BLOCK","openBlock","block_option0","closeBlock","openInverse","block_option1","OPEN_BLOCK","openBlock_repetition0","openBlock_option0","openBlock_option1","CLOSE","OPEN_INVERSE","openInverse_repetition0","openInverse_option0","openInverse_option1","openInverseChain","OPEN_INVERSE_CHAIN","openInverseChain_repetition0","openInverseChain_option0","openInverseChain_option1","inverseAndProgram","INVERSE","inverseChain","inverseChain_option0","OPEN_ENDBLOCK","OPEN","mustache_repetition0","mustache_option0","OPEN_UNESCAPED","mustache_repetition1","mustache_option1","CLOSE_UNESCAPED","OPEN_PARTIAL","partialName","partial_repetition0","partial_option0","openPartialBlock","OPEN_PARTIAL_BLOCK","openPartialBlock_repetition0","openPartialBlock_option0","sexpr","OPEN_SEXPR","sexpr_repetition0","sexpr_option0","CLOSE_SEXPR","hash_repetition_plus0","hashSegment","OPEN_BLOCK_PARAMS","blockParams_repetition_plus0","CLOSE_BLOCK_PARAMS","STRING","BOOLEAN","UNDEFINED","NULL","DATA","pathSegments","SEP","$accept","$end","prepareProgram","stripComment","stripFlags","prepareRawBlock","prepareBlock","chained","prepareMustache","preparePartialBlock","preparePath","_less","inclusive","emu","com","INITIAL","rightStripped","leftStripped","ignoreStandalone","isRootSeen","openStandalone","closeStandalone","inlineStandalone","BlockStatement","DecoratorBlock","PartialBlockStatement","openStrip","closeStrip","inverseStrip","Decorator","MustacheStatement","PartialStatement","CommentStatement","acceptRequired","acceptArray","acceptKey","mutating","ContentStatement","SubExpression","PathExpression","StringLiteral","NumberLiteral","BooleanLiteral","UndefinedLiteral","NullLiteral","HashPair","opcodes","opcode","sourceNode","stringParams","knownHelpers","helperMissing","blockHelperMissing","unless","compileProgram","classifySexpr","helperSexpr","simpleSexpr","ambiguousSexpr","setupFullMustacheParams","explicitPartialContext","preventIndent","noEscape","knownHelpersOnly","falsy","addDepth","blockParamIndex","pushParam","pushParams","nameLookup","internalNameLookup","depthedLookup","aliasable","appendToBuffer","initializeBuffer","quotedString","lookupPropertyFunctionIsUsed","isChild","stackSlot","stackVars","registers","hashes","compileStack","inlineStack","compileChildren","pushSource","lookupPropertyFunctionVarDeclaration","createFunctionContext","objectLiteral","toStringWithSourceMap","destName","lastContext","referenceCount","mergeSource","forceBuffer","blockValue","contextName","setupHelperArgs","functionCall","ambiguousBlockValue","flushInline","topStack","lastHelper","appendContent","pendingContent","isInline","replaceStack","appendEscaped","pushContext","pushStackLiteral","lookupOnContext","lookupBlockParam","lookupData","assumeObjects","resolvePossibleLambda","pushStringParam","pushString","emptyHash","pushHash","popHash","pushLiteral","pushProgram","programExpression","invokeHelper","setupHelper","itemsSeparatedBy","callParams","invokeKnownHelper","invokeAmbiguous","useRegister","paramsInit","setupParams","assignToHash","pushId","matchExistingProgram","incrStack","topStackName","hashIds","hashTypes","hashContexts","generateArray","RESERVED_WORDS","isValidJavaScriptVariableName","srcFile","generateList","detection","POLYFILL","NATIVE","copyProps","SafeBuffer","mediaSectionWorkaround","rtpmapRegex","rtpmap","fmtpmapRegex","deleteDuplicateRtxPts","codecNameToPts","createCodecNameToPts","invalidRtxPts","rtxPtToAssociatedPt","fmtpPattern","createRtxPtToAssociatedPt","associatedPtToRtxPt","associatedPtToRtxPts","createAssociatedPtToRtxPt","unassociatedRtxPts","unassociatedPts","addFmtpAttributeForRtxPt","deleteFmtpAttributesForRtxPt","deleteRtpmapAttributesForRtxPt","descriptionInit","packageInfo","hwDeviceManufacturer","hwDeviceModel","hwDeviceType","platformName","PUBLISH_MAX_ATTEMPTS","PUBLISH_BACKOFF_JITTER","PUBLISH_BACKOFF_MS","subscriptionMode","MODE_COLLABORATION","MODE_GRID","MODE_PRESENTATION","trackSwitchOffMode","MODE_DISABLED","MODE_DETECTED","MODE_PREDICTED","MODE_AUTO","MODE_MANUAL","videoContentPreferencesMode","makeVisible","visibleEntry","_makeFakeEntry","makeInvisible","invisibleEntry","NullIntersectionObserver","NullResizeObserver","toGMTString","PROMISE_STATICS_INCORRECT_ITERATION","PROMISE_ANY_ERROR","alreadyResolved","alreadyRejected","baseIsMatch","getMatchData","early","WS_CLOSE_BUSY_WAIT","FAILED","REMOTE","TIMEOUT","wsCloseCodesToCloseReasons","maxConsecutiveFailedHellos","maxConsecutiveMissedHeartbeats","requestedHeartbeatTimeout","openTimeout","welcomeTimeout","_busyWaitTimeout","_consecutiveHeartbeatsMissed","_cookie","_heartbeatTimeout","_hellosLeft","_networkMonitor","_openTimeout","_sendHeartbeatTimeout","_serverUrl","_welcomeTimeout","eventsToLevels","_startHandshake","_handleBad","_handleBusy","_handleMessage","_handleHeartbeat","_handleWelcome","keepAlive","retryAfter","_handleHeartbeatTimeout","negotiatedTimeout","outgoingHeartbeatTimeout","_send","_sendHeartbeat","_handleWelcomeTimeout","_sendHello","hello","_sendOrEnqueue","sendOrEnqueue","_ref$forwardRef","DecoratedComponent","decoratedComponentName","WithTracking","rtFwdRef","trackingDataFn","trackingProp","propsToBePassed","_hoistNonReactStatics","monthsNominative","monthsSubjective","useWrappedRefWithWarning","nativeReverse","mainStyle","GoogleMapMarkers","updateCounter","_onChangeHandler","dimensionsCache_","prevChildCount","_onMouseChangeHandler","hoverChildProps_","hoverKey_","_onMouseAllow","allowMouse_","_onMouseChangeHandlerRaf","childIndex","_getDimensions","mainElementStyle","$geoService","$onMouseAllow","$prerender","stylePtPos","seLatLng","seLat","seLng","sePt","containerPt","$markerHolderClassName","$hover","$getDimensions","$dimensionKey","hasElement","FLATTEN","ARGS2ARRAY","REFERENCE","JOIN","NUMBERS","documentAll","ngMessageDirectiveFactory","ngMessagesCtrl","messageCtrl","commentNode","staticExp","ngMessage","dynamicExp","ngMessageExp","assignRecords","reRender","$$attachId","getAttachId","ACTIVE_CLASS","INACTIVE_CLASS","latestKey","nextAttachId","renderLater","cachedCollection","findPreviousMessage","parentLookup","prevKey","$$ngMessageNode","isAttrTruthy","ngMessagesMultiple","unmatchedMessages","matchedKeys","messageItem","messageFound","totalMessages","messageUsed","truthy","ngMessages","nextKey","messageNode","insertMessageNode","removeMessageNode","ngMessagesInclude","replaceElementWithMarker","_stateRegistry","_identifier","_definition","withState","withParams","newOpts","browserLocationConfig_1","hashLocationService_1","pushStateLocationService_1","memoryLocationService_1","memoryLocationConfig_1","injector_1","q_1","servicesPlugin","hashLocationPlugin","BrowserLocationConfig","pushStateLocationPlugin","memoryLocationPlugin","hookCallback","hasOwnProp","createUTC","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","parsedDateParts","rfc2822","weekdayMismatch","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","quarters","weekyears","weekyear","isoweekyears","isoweekyear","isoweeks","isoweek","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","absFloor","argumentForCoercion","coercedNumber","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","MILLISECOND","WEEK","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","isUTC","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","dayOfYearFromWeeks","resYear","resDayOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","matchMeridiem","_meridiemParse","kInput","_isPm","_meridiem","pos2","getSetHour","globalLocale","baseConfig","localeFamilies","commonPrefix","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","getSetGlobalLocale","getLocale","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","configFromArray","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekdayOverflow","createLocal","_week","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","totalParsedInputLength","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","configFromObject","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","newLocaleData","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","isCalendarSpec","sod","calendarFormat","asFloat","zoneDelta","startOfDate","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","keepOffset","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","dontConvert","lengthDiff","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","_eras","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","validateObject","propChecks","validateRenderDimensions","ignoredHook","ignoredReason","$prevValid","$passingSchemas","NoiseCancellationImpl","noisecancellationadapter_1","originalTrack","_processor","_sourceTrack","_disabledPermanent","reacquire","processorWasEnabled","ex_1","aString","WHITESPACES","$escape","numberToString","FIRST_DIGIT_OR_ASCII","SYNTAX_SOLIDUS","OTHER_PUNCTUATORS_AND_WHITESPACES","ControlEscape","Finance","sumEq","cfs","durs","sum_fx","sum_fdx","durYear","cf1","numOfPeriod","cf0","fv","npv","numberOfTries","seekZero","rrate","PP","numOfPeriods","cumulativeCashFlow","yearsCounter","ROI","earnings","roi","AM","yearOrMonth","payAtBeginning","ratePerPeriod","buildNumerator","numInterestAccruals","totalOfPVs","discountFactor","DF","dfs","roundedDiscountFactor","numOfCompoundings","CAGR","beginningValue","endingValue","LR","totalLiabilities","totalDebts","totalIncome","R72","WACC","marketValueOfEquity","marketValueOfDebt","costOfEquity","costOfDebt","taxRate","fractionalRate","numOfPayments","IAR","investmentReturn","inflationRate","XIRR","dts","guess_last","xirr","baseFindIndex","baseIsNaN","strictIndexOf","allSettled","latestData","latestOptions","_useMemo$dispatch","_dispatchTrackingEvent","_useMemo$dispatchOnMo","dispatchOnMount","getProcessFn","getOwnTrackingData","getTrackingDataFn","contextGetTrackingData","_deepmerge","getTrackingDispatcher","contextDispatch","contextProcess","makeStub","locationServicesFns","locationConfigFns","umfFns","rulesFns","syncFns","lateBind","locationServices","umf","EQUAL","checkDataTypes","optionCoerceTypes","COERCE_TO_TYPES","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","exceptKeyword","joinPaths","escapeJsonPointer","lvl","jsonPointer","unescapeJsonPointer","firstWeek","startOfUTCWeekYear","NativeAudioContext","webkitAudioContext","_AudioContext","_audioContext","_holders","LocalAudioTrackClass","detectBrowserResult_","isExplorer","isOpera","callWithSafeIterationClosing","arrayLike","IS_CONSTRUCTOR","dayGrid","dayGridDay","dayGridWeek","dayGridMonth","dayGridYear","getRefTarget","onRootClose","_ref$clickTrigger","preventMouseRootCloseRef","handleMouseCapture","isLeftClickEvent","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","_isHtml5","newprefix","applyDocumentBaseHref","baseTag","widgetUuid","widgetSlice","existingConstructor","basePrototype","proxiedPrototype","fullName","_createWidget","_childConstructors","_superApply","__super","__superApply","widgetEventPrefix","widgetName","childPrototype","bridge","inputIndex","isMethodCall","methodValue","defaultElement","eventNamespace","hoverable","classesElementLookup","_getCreateOptions","_setOptionDisabled","_getCreateEventData","_removeClass","curOption","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_toggleClass","processClassString","checkOption","_untrackClassesElement","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","_hoverable","_focusable","focusout","defaultEffect","effectName","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","getOffsets","parseCss","innerDiv","getScrollInfo","hasOverflowX","getWithinInfo","withinElement","atOffset","basePosition","scrollInfo","collision","getDimensions","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","collisionWidth","collisionHeight","myOffset","important","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","newOverLeft","newOverTop","flipfit","disableSelection","enableSelection","baseEasings","selectorEscape","dataSpace","dataSpaceStyle","dataSpaceAnimated","rplusequals","stringParsers","execResult","hsla","lightness","supportElem","allowEmpty","stringParse","inst","_rgba","spaceName","hue2rgb","localCache","_space","used","startColor","opaque","toRgbaString","toHslaString","toHexString","includeAlpha","vtype","_hsla","colorInit","classAnimationActions","shorthandStyles","getElementStyles","animateClass","applyClassChange","allAnimations","oldStyle","newStyle","styleDifference","styleInfo","dfd","switchClass","_normalizeArguments","standardAnimationOption","parseClip","uiBackCompat","createWrapper","removeWrapper","scaledDimensions","clipToBox","queueLength","saveStyle","restoreStyle","getBaseline","createPlaceholder","cssPosition","dataKey","setTransition","cssUnit","effectMethod","defaultMode","queueName","normalizedMode","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","clipInit","Sine","Circ","Elastic","Back","Bounce","pow2","easeIn","upAnim","downAnim","refValue","motion","queuelen","both","oppositeMotion","pieces","childComplete","horizFirst","animation1","animation2","baseline","cProps","vProps","hProps","childOriginal","childFrom","childTo","showhide","animateTo","positiveMotion","startClip","startRef","hasTabindex","mapName","focusableIfVisible","fieldset","formResetMixin","_formResetHandler","_bindFormResetHandler","_unbindFormResetHandler","tabbable","removeUniqueId","collapsible","heightStyle","icons","activeHeader","beforeActivate","hideProps","prevHide","_processPanels","_createIcons","_destroyIcons","_setupEvents","_activate","_keydown","toFocus","_panelKeyDown","prevHeaders","prevPanels","panels","_findActive","headerId","panelId","activeChildren","clickedChildren","clicked","clickedIsActive","toShow","toHide","eventData","oldHeader","oldPanel","newHeader","newPanel","_toggle","_toggleComplete","submenu","menus","activeMenu","mouseHandled","previousFilter","actualTarget","keepActiveItem","collapseAll","_closeOnDocumentClick","submenus","previousPage","nextPage","filterTimer","_filterMenuItems","newSubmenus","newItems","newWrappers","submenuCaret","_isDivider","_itemRole","listbox","activeParent","_scrollIntoView","_startOpening","elementHeight","_hasScroll","fromFocus","currentMenu","startMenu","isFirstItem","isLastItem","escapedCharacter","requestIndex","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","_keyEvent","_searchTimeout","selectedItem","cancelBlur","searching","_initSource","_appendTo","menufocus","liveRegion","menuselect","_isEventTargetInWidget","_closeOnClickOutside","equalValues","menuVisible","modifierKey","_search","cancelSearch","_response","__response","_normalize","_suggest","ul","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","escapeRegex","noResults","datepicker_instActive","controlgroupCornerRegex","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","prevText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","isRTL","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","beforeShowDay","beforeShow","onChangeMonthYear","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker","_isDisabledDatepicker","datepicker_extendRemove","onlyVisible","_enhance","_callChildMethod","childWidgets","controlgroupLabel","_initWidgets","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","_readType","originalLabel","_updateLabel","_updateIcon","_getRadioGroup","nameSelector","_toggleClasses","checkboxradio","iconSpace","iconPosition","showLabel","displayBlock","_attachIcon","_attachIconSpace","newShowLabel","newIcon","buttonset","controlgroup","markerClassName","maxRows","_widgetDatepicker","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_showDatepicker","_lastInput","_hideDatepicker","findMax","maxI","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","_dialogInst","_dialogInput","blockUI","_destroyDatepicker","$target","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","_selectDay","_adjustDate","_clearDate","_gotoToday","_possibleChars","lastVal","_getFormatConfig","beforeShowSettings","_findPos","_checkOffset","datepicker_getZindex","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","currentMonth","_notifyChange","_selectMonthYear","_selectDate","noWeekends","iFormat","iValue","shortYearCutoffTemp","lookAhead","isDoubled","shortNames","longNames","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","RFC_822","RFC_850","RFC_1036","RFC_1123","RSS","TICKS","TIMESTAMP","W3C","_restrictMinMax","_determineDate","offsetString","offsetNumeric","noChange","origMonth","origYear","selectDay","selectMonth","selectYear","maxDraw","buttonPanel","cornerClass","calender","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","tempDate","isMultiMonth","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","minMax","curYear","curMonth","yearSplit","minYear","maxYear","_mouseDown","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","ignoreMissingWhich","_mouseDrag","_mouseStop","allowDisconnected","safeBlur","connectToSortable","containment","cursorAt","iframeFix","refreshPositions","scrollSensitivity","snapMode","snapTolerance","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","hasFixedAncestor","positionAbs","_refreshOffsets","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","dropBehaviour","prepareOffsets","dragStart","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","scrollIsRootNode","isUserScrollable","relativeContainer","constrainPosition","cancelHelperRemoval","sortables","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","snapElements","$o","snapping","snapItem","alsoResize","animateDuration","animateEasing","autoHide","ghost","handles","_num","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","_removeHandles","hname","_renderAxis","padPos","padWrapper","curleft","curtop","_renderProxy","originalMousePosition","_propagate","smp","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","ismaxw","ismaxh","isminw","isminh","_getPaddingPlusBorderDimensions","prel","outerDimensions","elementOffset","containerElement","parentData","woset","hoset","isParent","isOffsetRelative","pRatio","cop","continueResize","gridX","gridY","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","closeOnEscape","topOffset","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","_hide","_moveToTop","zIndices","zIndexMax","_focusTabbable","_createOverlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","checkFocus","tabbables","uiDialogTitle","uiDialogTitlebar","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","resizeHandles","_minHeight","_trackingInstances","resizableOptions","isResizable","nonContentHeight","minContentHeight","_allowInteraction","isOpening","greedy","deactivate","proportions","isover","isout","_addToManager","_splice","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","childrenIntersection","isOverAxis","toleranceMode","spinnerModifer","droppablesLoop","greedyChild","parentInstance","hoverClass","_constrainedValue","valueDiv","_refreshValue","indeterminate","_percentage","overlayDiv","autoRefresh","selecting","unselected","unselecting","selectees","selecteeOffset","startselected","opos","selectee","doSelect","selectmenuId","_drawButton","_drawMenu","_rendered","menuItems","_parseOption","buttonItem","_renderButtonItem","_resizeButton","_buttonEvents","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","_setText","currentOptgroup","getRangeAt","_selectFocusedItem","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_clickOffset","_slide","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","otherVal","valsLength","_refreshRange","valModStep","_precision","_precisionOf","lastValPercent","valPercent","valueMin","valueMax","oRange","curVal","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","itemElement","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","verticalDirection","horizontalDirection","_getDragVerticalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","queries","addItems","targetData","_queries","queriesLength","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","itemWithLeastDistance","posProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","delayedTriggers","delayEvent","_inst","culture","incremental","spinning","_spin","_repeat","uiSpinner","_adjustValue","_increment","aboveMin","_parse","Globalize","allowAny","_stepUp","stepDown","_stepDown","pageUp","pageDown","spinner","_uiSpinnerHtml","_buttonHtml","beforeLoad","_isLocal","anchorUrl","locationUrl","_processTabs","_initialActive","anchors","locationHash","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","constrain","_setupHeightStyle","_sanitizeSelector","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","oldTab","newTab","_getIndex","_ajaxSettings","_addDescribedBy","describedby","_removeDescribedBy","tooltips","disabledTitles","tooltipData","_disable","_enable","blurEvent","_registerCloseHandlers","contentOption","delayedShow","a11yContent","positionOption","_find","fakeEvent","_removeTooltip","hiding","tooltipClass"],"sourceRoot":""}